From 62e3a414ad7a20d09fd4ea6709ae4ca5d1335a4f Mon Sep 17 00:00:00 2001 From: Andrew Kozlik Date: Mon, 29 Apr 2024 18:45:17 +0200 Subject: [PATCH 001/626] chore(core): Disable wait_random() for prodtest and VCP. [no changelog] --- core/embed/trezorhal/stm32f4/random_delays.c | 2 ++ core/embed/trezorhal/stm32f4/usb.c | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/random_delays.c b/core/embed/trezorhal/stm32f4/random_delays.c index a2f11bd313..7a27cc4eb0 100644 --- a/core/embed/trezorhal/stm32f4/random_delays.c +++ b/core/embed/trezorhal/stm32f4/random_delays.c @@ -193,6 +193,7 @@ void rdi_handler(uint32_t uw_tick) { * against fault injection. */ void wait_random(void) { +#ifndef TREZOR_PRODTEST int wait = drbg_random8(); volatile int i = 0; volatile int j = wait; @@ -207,4 +208,5 @@ void wait_random(void) { if (i != wait || j != 0) { shutdown_privileged(); } +#endif } diff --git a/core/embed/trezorhal/stm32f4/usb.c b/core/embed/trezorhal/stm32f4/usb.c index 7a6ab42c96..8efc0f5fef 100644 --- a/core/embed/trezorhal/stm32f4/usb.c +++ b/core/embed/trezorhal/stm32f4/usb.c @@ -490,7 +490,6 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, wait_random(); return usb_hid_class_setup(dev, &usb_ifaces[req->wIndex].hid, req); case USB_IFACE_TYPE_VCP: - wait_random(); return usb_vcp_class_setup(dev, &usb_ifaces[req->wIndex].vcp, req); case USB_IFACE_TYPE_WEBUSB: wait_random(); @@ -516,7 +515,6 @@ static uint8_t usb_class_data_in(USBD_HandleTypeDef *dev, uint8_t ep_num) { usb_hid_class_data_in(dev, &usb_ifaces[i].hid, ep_num); break; case USB_IFACE_TYPE_VCP: - wait_random(); usb_vcp_class_data_in(dev, &usb_ifaces[i].vcp, ep_num); break; case USB_IFACE_TYPE_WEBUSB: @@ -541,7 +539,6 @@ static uint8_t usb_class_data_out(USBD_HandleTypeDef *dev, uint8_t ep_num) { usb_hid_class_data_out(dev, &usb_ifaces[i].hid, ep_num); break; case USB_IFACE_TYPE_VCP: - wait_random(); usb_vcp_class_data_out(dev, &usb_ifaces[i].vcp, ep_num); break; case USB_IFACE_TYPE_WEBUSB: @@ -559,7 +556,6 @@ static uint8_t usb_class_sof(USBD_HandleTypeDef *dev) { for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { switch (usb_ifaces[i].type) { case USB_IFACE_TYPE_VCP: - wait_random(); usb_vcp_class_sof(dev, &usb_ifaces[i].vcp); break; default: From 594d7425cd9a6e5a37643685d80c3bda61fa2c02 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik Date: Tue, 30 Apr 2024 10:35:27 +0200 Subject: [PATCH 002/626] feat(core): Retry getting Optiga response even when it doesn't seem to have one. [no changelog] --- core/embed/trezorhal/optiga/optiga_transport.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/core/embed/trezorhal/optiga/optiga_transport.c b/core/embed/trezorhal/optiga/optiga_transport.c index 16f0ca0177..6617d6f69f 100644 --- a/core/embed/trezorhal/optiga/optiga_transport.c +++ b/core/embed/trezorhal/optiga/optiga_transport.c @@ -68,6 +68,10 @@ static const int I2C_MAX_RETRY_COUNT = 10; // Maximum number of times to retry reading Optiga's response to a command. static const int MAX_RETRY_READ = 10000; +// Maximum number of times to retry reading Optiga's response to a command when +// it claims it's not busy executing a command. +static const int MAX_RETRY_READ_NOT_BUSY = 10; + // Maximum number of packets per response. Used for flushing old reponses. static const int MAX_RESPONSE_PACKET_COUNT = 15; @@ -371,6 +375,10 @@ optiga_result optiga_set_data_reg_len(size_t size) { } static optiga_result optiga_read(void) { + // The number of times we tried reading Optiga's response to a command while + // it claimed it's not busy executing a command. + int not_busy_count = 0; + for (int i = 0; i < MAX_RETRY_READ; ++i) { optiga_result ret = optiga_i2c_write(®_I2C_STATE, 1); if (OPTIGA_SUCCESS != ret) { @@ -410,9 +418,12 @@ static optiga_result optiga_read(void) { if ((frame_buffer[0] & I2C_STATE_BYTE1_BUSY) == 0) { // Optiga has no response ready and is not busy. This shouldn't happen if - // we are expecting to read a response, but Optiga occasionally fails to - // give any response to a command. - return OPTIGA_ERR_UNEXPECTED; + // we are expecting to read a response. However, we have observed that if + // we retry reading, then Optiga may return a response. + if (not_busy_count >= MAX_RETRY_READ_NOT_BUSY) { + return OPTIGA_ERR_UNEXPECTED; + } + not_busy_count += 1; } } From d453dac45c8f414ac391bfb66510ebbdf3b75fc5 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik Date: Tue, 30 Apr 2024 11:08:23 +0200 Subject: [PATCH 003/626] feat(core): Measure Optiga response timeout in ms not number of attempts. [no changelog] --- core/embed/trezorhal/optiga/optiga_transport.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/core/embed/trezorhal/optiga/optiga_transport.c b/core/embed/trezorhal/optiga/optiga_transport.c index 6617d6f69f..f812cbf46f 100644 --- a/core/embed/trezorhal/optiga/optiga_transport.c +++ b/core/embed/trezorhal/optiga/optiga_transport.c @@ -65,8 +65,8 @@ static const uint16_t OPTIGA_ADDRESS = (BASE_ADDR << 1); static const uint32_t I2C_TIMEOUT = 15; static const int I2C_MAX_RETRY_COUNT = 10; -// Maximum number of times to retry reading Optiga's response to a command. -static const int MAX_RETRY_READ = 10000; +// Maximum time in millisecods to retry reading Optiga's response to a command. +static const int MAX_RETRY_READ_MS = 300; // Maximum number of times to retry reading Optiga's response to a command when // it claims it's not busy executing a command. @@ -274,7 +274,8 @@ static optiga_result optiga_check_ack(void) { static optiga_result optiga_ensure_ready(void) { optiga_result ret = OPTIGA_SUCCESS; for (int i = 0; i < MAX_RESPONSE_PACKET_COUNT; ++i) { - for (int j = 0; j < MAX_RETRY_READ; ++j) { + uint32_t deadline = hal_ticks_ms() + MAX_RETRY_READ_MS; + do { ret = optiga_i2c_write(®_I2C_STATE, 1); if (OPTIGA_SUCCESS != ret) { return ret; @@ -295,7 +296,7 @@ static optiga_result optiga_ensure_ready(void) { return OPTIGA_SUCCESS; } ret = OPTIGA_ERR_BUSY; - } + } while (hal_ticks_ms() < deadline); if (ret != OPTIGA_SUCCESS) { // Optiga is busy even after maximum retries at reading the I2C state. @@ -379,7 +380,8 @@ static optiga_result optiga_read(void) { // it claimed it's not busy executing a command. int not_busy_count = 0; - for (int i = 0; i < MAX_RETRY_READ; ++i) { + uint32_t deadline = hal_ticks_ms() + MAX_RETRY_READ_MS; + do { optiga_result ret = optiga_i2c_write(®_I2C_STATE, 1); if (OPTIGA_SUCCESS != ret) { return ret; @@ -425,7 +427,7 @@ static optiga_result optiga_read(void) { } not_busy_count += 1; } - } + } while (hal_ticks_ms() < deadline); return OPTIGA_ERR_TIMEOUT; } From f8be07b73251d6c1ac78bdb109c75dd88774b9a6 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik Date: Tue, 30 Apr 2024 11:13:14 +0200 Subject: [PATCH 004/626] feat(core): Increase Optiga I2C timeout. [no changelog] --- core/embed/trezorhal/optiga/optiga_transport.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/embed/trezorhal/optiga/optiga_transport.c b/core/embed/trezorhal/optiga/optiga_transport.c index f812cbf46f..eafd430b70 100644 --- a/core/embed/trezorhal/optiga/optiga_transport.c +++ b/core/embed/trezorhal/optiga/optiga_transport.c @@ -62,7 +62,7 @@ static const uint8_t BASE_ADDR = 0x30; static const uint16_t OPTIGA_ADDRESS = (BASE_ADDR << 1); // Constants for our I2C HAL. -static const uint32_t I2C_TIMEOUT = 15; +static const uint32_t I2C_TIMEOUT_MS = 25; static const int I2C_MAX_RETRY_COUNT = 10; // Maximum time in millisecods to retry reading Optiga's response to a command. @@ -195,7 +195,7 @@ static optiga_result optiga_i2c_write(const uint8_t *data, uint16_t data_size) { hal_delay(1); } if (HAL_OK == i2c_transmit(OPTIGA_I2C_INSTANCE, OPTIGA_ADDRESS, - (uint8_t *)data, data_size, I2C_TIMEOUT)) { + (uint8_t *)data, data_size, I2C_TIMEOUT_MS)) { hal_delay_us(1000); return OPTIGA_SUCCESS; } @@ -208,7 +208,7 @@ static optiga_result optiga_i2c_read(uint8_t *buffer, uint16_t buffer_size) { for (int try_count = 0; try_count <= I2C_MAX_RETRY_COUNT; ++try_count) { HAL_Delay(1); if (HAL_OK == i2c_receive(OPTIGA_I2C_INSTANCE, OPTIGA_ADDRESS, buffer, - buffer_size, I2C_TIMEOUT)) { + buffer_size, I2C_TIMEOUT_MS)) { OPTIGA_LOG("<<<", buffer, buffer_size) return OPTIGA_SUCCESS; } From 8ebb8c2128eb6b2fcb4d7228b7100f842f43e940 Mon Sep 17 00:00:00 2001 From: tychovrahe Date: Fri, 3 May 2024 13:49:48 +0200 Subject: [PATCH 005/626] fix(core): fix prodtest WIPE on STM32U5 [no changelog] --- core/embed/prodtest/main.c | 9 +-------- core/embed/trezorhal/common.h | 4 ++++ core/embed/trezorhal/stm32f4/common.c | 11 +++++++++++ core/embed/trezorhal/stm32u5/common.c | 15 +++++++++++++++ core/embed/trezorhal/stm32u5/mpu.c | 2 +- 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 986e7c850f..3495432bb4 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -459,14 +459,7 @@ static void test_firmware_version(void) { } static void test_wipe(void) { - // erase start of the firmware (metadata) -> invalidate FW - ensure(flash_unlock_write(), NULL); - for (int i = 0; i < (1024 / FLASH_BLOCK_SIZE); i += FLASH_BLOCK_SIZE) { - flash_block_t data = {0}; - ensure(flash_area_write_block(&FIRMWARE_AREA, i * FLASH_BLOCK_SIZE, data), - NULL); - } - ensure(flash_lock_write(), NULL); + invalidate_firmware(); display_clear(); display_text_center(DISPLAY_RESX / 2, DISPLAY_RESY / 2 + 10, "WIPED", -1, FONT_BOLD, COLOR_WHITE, COLOR_BLACK); diff --git a/core/embed/trezorhal/common.h b/core/embed/trezorhal/common.h index cb871b8d1b..28464b0270 100644 --- a/core/embed/trezorhal/common.h +++ b/core/embed/trezorhal/common.h @@ -75,4 +75,8 @@ void collect_hw_entropy(void); #define HW_ENTROPY_LEN (12 + 32) extern uint8_t HW_ENTROPY_DATA[HW_ENTROPY_LEN]; +// Invalidates firmware on the device +// Note: only works when write access to firmware area is enabled by MPU +void invalidate_firmware(void); + #endif diff --git a/core/embed/trezorhal/stm32f4/common.c b/core/embed/trezorhal/stm32f4/common.c index 1c6d48f76f..4539211af2 100644 --- a/core/embed/trezorhal/stm32f4/common.c +++ b/core/embed/trezorhal/stm32f4/common.c @@ -234,3 +234,14 @@ void show_pin_too_many_screen(void) { error_uni("TOO MANY PIN ATTEMPTS", "All data has been erased from the device", "PLEASE RECONNECT\nTHE DEVICE"); } + +void invalidate_firmware(void) { + // erase start of the firmware (metadata) -> invalidate FW + ensure(flash_unlock_write(), NULL); + for (int i = 0; i < (1024 / FLASH_BLOCK_SIZE); i += FLASH_BLOCK_SIZE) { + flash_block_t data = {0}; + ensure(flash_area_write_block(&FIRMWARE_AREA, i * FLASH_BLOCK_SIZE, data), + NULL); + } + ensure(flash_lock_write(), NULL); +} diff --git a/core/embed/trezorhal/stm32u5/common.c b/core/embed/trezorhal/stm32u5/common.c index 6470005096..e7406df22e 100644 --- a/core/embed/trezorhal/stm32u5/common.c +++ b/core/embed/trezorhal/stm32u5/common.c @@ -210,3 +210,18 @@ void show_pin_too_many_screen(void) { error_uni("TOO MANY PIN ATTEMPTS", "All data has been erased from the device", "PLEASE RECONNECT\nTHE DEVICE"); } + +void invalidate_firmware(void) { + // on stm32u5, we need to disable the instruction cache before erasing the + // firmware - otherwise, the write check will fail + ICACHE->CR &= ~ICACHE_CR_EN; + + // erase start of the firmware (metadata) -> invalidate FW + ensure(flash_unlock_write(), NULL); + for (int i = 0; i < (1024 / FLASH_BLOCK_SIZE); i += FLASH_BLOCK_SIZE) { + flash_block_t data = {0}; + ensure(flash_area_write_block(&FIRMWARE_AREA, i * FLASH_BLOCK_SIZE, data), + NULL); + } + ensure(flash_lock_write(), NULL); +} diff --git a/core/embed/trezorhal/stm32u5/mpu.c b/core/embed/trezorhal/stm32u5/mpu.c index 733634777e..25c04d5e13 100644 --- a/core/embed/trezorhal/stm32u5/mpu.c +++ b/core/embed/trezorhal/stm32u5/mpu.c @@ -243,7 +243,7 @@ void mpu_config_prodtest(void) { // clang-format off // REGION ADDRESS SIZE TYPE WRITE UNPRIV SET_REGION( 0, STORAGE_START, STORAGE_SIZE, FLASH_DATA, YES, YES ); // Storage - SET_REGION( 1, FIRMWARE_START, FIRMWARE_SIZE, FLASH_CODE, NO, YES ); // Firmware + SET_REGION( 1, FIRMWARE_START, FIRMWARE_SIZE, FLASH_CODE, YES, YES ); // Firmware SET_REGION( 2, ASSETS_START, ASSETS_SIZE, FLASH_DATA, YES, YES ); // Assets SET_REGION( 3, SRAM1_BASE, SRAM_SIZE, SRAM, YES, YES ); // SRAM1/2/3/5 SET_REGION( 4, GRAPHICS_START, GRAPHICS_SIZE, SRAM, YES, YES ); // Frame buffer or display interface From 6b31b8eec3e3f69a6ce5db8f6068523809bcfd2f Mon Sep 17 00:00:00 2001 From: tychovrahe Date: Fri, 3 May 2024 14:57:55 +0200 Subject: [PATCH 006/626] chore(core): change USB manufacturer and product strings for new models [no changelog] --- .../bootloader/.changelog.d/3770.changed | 1 + core/embed/bootloader/main.c | 4 ++-- core/embed/bootloader_ci/main.c | 4 ++-- .../extmod/modtrezorutils/modtrezorutils.c | 20 +++++++++++++++++++ core/embed/models/model_D001.h | 2 ++ core/embed/models/model_D002.h | 2 ++ core/embed/models/model_T1B1.h | 2 ++ core/embed/models/model_T2B1.h | 2 ++ core/embed/models/model_T2T1.h | 2 ++ core/embed/models/model_T3T1.h | 2 ++ core/embed/prodtest/.changelog.d/3770.changed | 1 + core/embed/prodtest/main.c | 4 ++-- core/mocks/generated/trezorutils.pyi | 4 ++++ core/src/trezor/utils.py | 2 ++ core/src/usb.py | 4 ++-- 15 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 core/embed/bootloader/.changelog.d/3770.changed create mode 100644 core/embed/prodtest/.changelog.d/3770.changed diff --git a/core/embed/bootloader/.changelog.d/3770.changed b/core/embed/bootloader/.changelog.d/3770.changed new file mode 100644 index 0000000000..27ea35b84c --- /dev/null +++ b/core/embed/bootloader/.changelog.d/3770.changed @@ -0,0 +1 @@ +[T3T1] Changed USB manufacturer string to "Trezor Company" and product string to "Trezor Safe 5" in the USB descriptor strings. diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 180bef9433..999edaca9a 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -98,8 +98,8 @@ static void usb_init_all(secbool usb21_landing) { .vendor_id = 0x1209, .product_id = 0x53C0, .release_num = 0x0200, - .manufacturer = "SatoshiLabs", - .product = "TREZOR", + .manufacturer = MODEL_USB_MANUFACTURER, + .product = MODEL_USB_PRODUCT, .serial_number = "000000000000000000000000", .interface = "TREZOR Interface", .usb21_enabled = sectrue, diff --git a/core/embed/bootloader_ci/main.c b/core/embed/bootloader_ci/main.c index 40c56d58a9..7ae4071043 100644 --- a/core/embed/bootloader_ci/main.c +++ b/core/embed/bootloader_ci/main.c @@ -56,8 +56,8 @@ static void usb_init_all(secbool usb21_landing) { .vendor_id = 0x1209, .product_id = 0x53C0, .release_num = 0x0200, - .manufacturer = "SatoshiLabs", - .product = "TREZOR", + .manufacturer = MODEL_USB_MANUFACTURER, + .product = MODEL_USB_PRODUCT, .serial_number = "000000000000000000000000", .interface = "TREZOR Interface", .usb21_enabled = sectrue, diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index 004f6941af..bff4e7532f 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -390,6 +390,18 @@ STATIC mp_obj_str_t mod_trezorutils_full_name_obj = { sizeof(MODEL_FULL_NAME) - 1, (const byte *)MODEL_FULL_NAME}; +STATIC mp_obj_str_t mod_trezorutils_model_usb_manufacturer_obj = { + {&mp_type_str}, + 0, + sizeof(MODEL_USB_MANUFACTURER) - 1, + (const byte *)MODEL_USB_MANUFACTURER}; + +STATIC mp_obj_str_t mod_trezorutils_model_usb_product_obj = { + {&mp_type_str}, + 0, + sizeof(MODEL_USB_PRODUCT) - 1, + (const byte *)MODEL_USB_PRODUCT}; + STATIC mp_obj_tuple_t mod_trezorutils_version_obj = { {&mp_type_tuple}, 4, @@ -410,6 +422,10 @@ STATIC mp_obj_tuple_t mod_trezorutils_version_obj = { /// """Model name.""" /// MODEL_FULL_NAME: str /// """Full name including Trezor prefix.""" +/// MODEL_USB_MANUFACTURER: str +/// """USB Manufacturer name.""" +/// MODEL_USB_PRODUCT: str +/// """USB Product name.""" /// INTERNAL_MODEL: str /// """Internal model code.""" /// EMULATOR: bool @@ -464,6 +480,10 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_MODEL), MP_ROM_PTR(&mod_trezorutils_model_name_obj)}, {MP_ROM_QSTR(MP_QSTR_MODEL_FULL_NAME), MP_ROM_PTR(&mod_trezorutils_full_name_obj)}, + {MP_ROM_QSTR(MP_QSTR_MODEL_USB_MANUFACTURER), + MP_ROM_PTR(&mod_trezorutils_model_usb_manufacturer_obj)}, + {MP_ROM_QSTR(MP_QSTR_MODEL_USB_PRODUCT), + MP_ROM_PTR(&mod_trezorutils_model_usb_product_obj)}, {MP_ROM_QSTR(MP_QSTR_INTERNAL_MODEL), MP_ROM_QSTR(MODEL_INTERNAL_NAME_QSTR)}, #ifdef TREZOR_EMULATOR diff --git a/core/embed/models/model_D001.h b/core/embed/models/model_D001.h index 9f54bad1a7..5871173426 100644 --- a/core/embed/models/model_D001.h +++ b/core/embed/models/model_D001.h @@ -6,6 +6,8 @@ #define MODEL_INTERNAL_NAME "D001" #define MODEL_INTERNAL_NAME_TOKEN T #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_D001 +#define MODEL_USB_MANUFACTURER "Trezor DIY" +#define MODEL_USB_PRODUCT MODEL_FULL_NAME /*** Discovery uses DEV keys in any build variant ***/ #define MODEL_BOARDLOADER_KEYS \ diff --git a/core/embed/models/model_D002.h b/core/embed/models/model_D002.h index 3c6d8d6a85..fbbde2c9af 100644 --- a/core/embed/models/model_D002.h +++ b/core/embed/models/model_D002.h @@ -9,6 +9,8 @@ #define MODEL_INTERNAL_NAME_TOKEN D002 #define MODEL_NAME_QSTR MP_QSTR_T #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_D001 +#define MODEL_USB_MANUFACTURER "Trezor DIY" +#define MODEL_USB_PRODUCT MODEL_FULL_NAME /*** Discovery uses DEV keys in any build variant ***/ #define MODEL_BOARDLOADER_KEYS \ diff --git a/core/embed/models/model_T1B1.h b/core/embed/models/model_T1B1.h index c29414ea68..e54613a03e 100644 --- a/core/embed/models/model_T1B1.h +++ b/core/embed/models/model_T1B1.h @@ -6,6 +6,8 @@ #define MODEL_INTERNAL_NAME "T1B1" #define MODEL_INTERNAL_NAME_TOKEN T1B1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T1B1 +#define MODEL_USB_MANUFACTURER "SatoshiLabs" +#define MODEL_USB_PRODUCT "TREZOR" #define IMAGE_CHUNK_SIZE (64 * 1024) #define IMAGE_HASH_SHA256 diff --git a/core/embed/models/model_T2B1.h b/core/embed/models/model_T2B1.h index 12774b757b..a0bd57dc95 100644 --- a/core/embed/models/model_T2B1.h +++ b/core/embed/models/model_T2B1.h @@ -6,6 +6,8 @@ #define MODEL_INTERNAL_NAME "T2B1" #define MODEL_INTERNAL_NAME_TOKEN T2B1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T2B1 +#define MODEL_USB_MANUFACTURER "SatoshiLabs" +#define MODEL_USB_PRODUCT "TREZOR" /*** PRODUCTION KEYS ***/ #define MODEL_BOARDLOADER_KEYS \ diff --git a/core/embed/models/model_T2T1.h b/core/embed/models/model_T2T1.h index 1af939a55b..f814644650 100644 --- a/core/embed/models/model_T2T1.h +++ b/core/embed/models/model_T2T1.h @@ -6,6 +6,8 @@ #define MODEL_INTERNAL_NAME "T2T1" #define MODEL_INTERNAL_NAME_TOKEN T2T1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T2T1 +#define MODEL_USB_MANUFACTURER "SatoshiLabs" +#define MODEL_USB_PRODUCT "TREZOR" /*** PRODUCTION KEYS ***/ #define MODEL_BOARDLOADER_KEYS \ diff --git a/core/embed/models/model_T3T1.h b/core/embed/models/model_T3T1.h index 85717f7f22..e876159dc6 100644 --- a/core/embed/models/model_T3T1.h +++ b/core/embed/models/model_T3T1.h @@ -8,6 +8,8 @@ #define MODEL_INTERNAL_NAME "T3T1" #define MODEL_INTERNAL_NAME_TOKEN T3T1 #define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T3T1 +#define MODEL_USB_MANUFACTURER "Trezor Company" +#define MODEL_USB_PRODUCT MODEL_FULL_NAME #define MODEL_BOARDLOADER_KEYS \ (const uint8_t *)"\x76\xaf\x42\x6e\x61\x40\x6b\xad\x7c\x07\x7b\x40\x9c\x66\xfd\xe3\x9f\xb8\x17\x91\x93\x13\xae\x1e\x4c\x02\x53\x5c\x80\xbe\xed\x96", \ diff --git a/core/embed/prodtest/.changelog.d/3770.changed b/core/embed/prodtest/.changelog.d/3770.changed new file mode 100644 index 0000000000..27ea35b84c --- /dev/null +++ b/core/embed/prodtest/.changelog.d/3770.changed @@ -0,0 +1 @@ +[T3T1] Changed USB manufacturer string to "Trezor Company" and product string to "Trezor Safe 5" in the USB descriptor strings. diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 3495432bb4..e18a40c784 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -123,8 +123,8 @@ static void usb_init_all(void) { .vendor_id = 0x1209, .product_id = 0x53C1, .release_num = 0x0400, - .manufacturer = "SatoshiLabs", - .product = "TREZOR", + .manufacturer = MODEL_USB_MANUFACTURER, + .product = MODEL_USB_PRODUCT, .serial_number = "000000000000", .interface = "TREZOR Interface", .usb21_enabled = secfalse, diff --git a/core/mocks/generated/trezorutils.pyi b/core/mocks/generated/trezorutils.pyi index faabdad69a..088da5cd27 100644 --- a/core/mocks/generated/trezorutils.pyi +++ b/core/mocks/generated/trezorutils.pyi @@ -132,6 +132,10 @@ MODEL: str """Model name.""" MODEL_FULL_NAME: str """Full name including Trezor prefix.""" +MODEL_USB_MANUFACTURER: str +"""USB Manufacturer name.""" +MODEL_USB_PRODUCT: str +"""USB Product name.""" INTERNAL_MODEL: str """Internal model code.""" EMULATOR: bool diff --git a/core/src/trezor/utils.py b/core/src/trezor/utils.py index 0768d845c7..2ee5b05f96 100644 --- a/core/src/trezor/utils.py +++ b/core/src/trezor/utils.py @@ -6,6 +6,8 @@ INTERNAL_MODEL, MODEL, MODEL_FULL_NAME, + MODEL_USB_MANUFACTURER, + MODEL_USB_PRODUCT, SCM_REVISION, UI_LAYOUT, USE_BACKLIGHT, diff --git a/core/src/usb.py b/core/src/usb.py index fef89f3d78..5dde66a1e2 100644 --- a/core/src/usb.py +++ b/core/src/usb.py @@ -6,8 +6,8 @@ vendor_id=0x1209, product_id=0x53C1, release_num=0x0200, - manufacturer="SatoshiLabs", - product="TREZOR", + manufacturer=utils.MODEL_USB_MANUFACTURER, + product=utils.MODEL_USB_PRODUCT, interface="TREZOR Interface", usb21_landing=False, ) From e8c65b9f2435c5b46b4e209e4db412dee57df613 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 6 May 2024 13:20:39 +0200 Subject: [PATCH 007/626] chore(core): changelog for bootloader and prodtest --- core/embed/bootloader/.changelog.d/3770.changed | 1 - core/embed/bootloader/CHANGELOG.md | 7 +++++++ core/embed/prodtest/.changelog.d/+version.added | 1 - core/embed/prodtest/.changelog.d/3770.changed | 1 - core/embed/prodtest/CHANGELOG.md | 15 ++++++++++++++- 5 files changed, 21 insertions(+), 4 deletions(-) delete mode 100644 core/embed/bootloader/.changelog.d/3770.changed delete mode 100644 core/embed/prodtest/.changelog.d/+version.added delete mode 100644 core/embed/prodtest/.changelog.d/3770.changed diff --git a/core/embed/bootloader/.changelog.d/3770.changed b/core/embed/bootloader/.changelog.d/3770.changed deleted file mode 100644 index 27ea35b84c..0000000000 --- a/core/embed/bootloader/.changelog.d/3770.changed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Changed USB manufacturer string to "Trezor Company" and product string to "Trezor Safe 5" in the USB descriptor strings. diff --git a/core/embed/bootloader/CHANGELOG.md b/core/embed/bootloader/CHANGELOG.md index 0e156e9156..3520043b96 100644 --- a/core/embed/bootloader/CHANGELOG.md +++ b/core/embed/bootloader/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## 2.1.6 [May 2024] + +### Changed +- [T3T1] Changed USB manufacturer string to "Trezor Company" and product string to "Trezor Safe 5" in the USB descriptor strings. [#3770] + + ## 2.1.5 [April 2024] ### Added @@ -129,3 +135,4 @@ Internal only release for Model R prototypes. [#3303]: https://github.com/trezor/trezor-firmware/pull/3303 [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3429]: https://github.com/trezor/trezor-firmware/pull/3429 +[#3770]: https://github.com/trezor/trezor-firmware/pull/3770 diff --git a/core/embed/prodtest/.changelog.d/+version.added b/core/embed/prodtest/.changelog.d/+version.added deleted file mode 100644 index f3d8542769..0000000000 --- a/core/embed/prodtest/.changelog.d/+version.added +++ /dev/null @@ -1 +0,0 @@ -Added FIRMWARE VERSION command. diff --git a/core/embed/prodtest/.changelog.d/3770.changed b/core/embed/prodtest/.changelog.d/3770.changed deleted file mode 100644 index 27ea35b84c..0000000000 --- a/core/embed/prodtest/.changelog.d/3770.changed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Changed USB manufacturer string to "Trezor Company" and product string to "Trezor Safe 5" in the USB descriptor strings. diff --git a/core/embed/prodtest/CHANGELOG.md b/core/embed/prodtest/CHANGELOG.md index 1582b496ad..bfa135d457 100644 --- a/core/embed/prodtest/CHANGELOG.md +++ b/core/embed/prodtest/CHANGELOG.md @@ -1,4 +1,16 @@ +## 0.2.6 [6th May 2024] + +### Added +- Added FIRMWARE VERSION command. + +### Changed +- [T3T1] Changed USB manufacturer string to "Trezor Company" and product string to "Trezor Safe 5" in the USB descriptor strings. [#3770] + +### Fixed +- [T3T1] Fixed `WIPE` command on STM32U5. [#3769] + + ## 0.2.5 [16th April 2024] ### Added @@ -29,6 +41,7 @@ ### Changed - [T2B1] Start with all-white screen instead of border. [#3325] - [#3325]: https://github.com/trezor/trezor-firmware/pull/3325 [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 +[#3769]: https://github.com/trezor/trezor-firmware/pull/3769 +[#3770]: https://github.com/trezor/trezor-firmware/pull/3770 From 12725d98358f6fcb31a04b9a2b1b443e7f359a09 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 6 May 2024 13:21:14 +0200 Subject: [PATCH 008/626] chore(core): bump bootloader / prodtest versions after release --- core/embed/bootloader/version.h | 2 +- core/embed/prodtest/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/embed/bootloader/version.h b/core/embed/bootloader/version.h index bc84518ec8..b449164912 100644 --- a/core/embed/bootloader/version.h +++ b/core/embed/bootloader/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 1 -#define VERSION_PATCH 6 +#define VERSION_PATCH 7 #define VERSION_BUILD 0 #define VERSION_UINT32 \ (VERSION_MAJOR | (VERSION_MINOR << 8) | (VERSION_PATCH << 16) | \ diff --git a/core/embed/prodtest/version.h b/core/embed/prodtest/version.h index 15d2074830..d09aee967a 100644 --- a/core/embed/prodtest/version.h +++ b/core/embed/prodtest/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 -#define VERSION_PATCH 6 +#define VERSION_PATCH 7 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 0 From 1ce694b7fc8329180fd72128503270d285f7458f Mon Sep 17 00:00:00 2001 From: tychovrahe Date: Wed, 1 May 2024 13:42:33 +0200 Subject: [PATCH 009/626] fix(core): fix usb configuration for FS peripheral (use 6 endpoints) [no changelog] --- core/embed/trezorhal/stm32f4/usbd_conf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/usbd_conf.c b/core/embed/trezorhal/stm32f4/usbd_conf.c index 7fe3bf902c..2a0f220a20 100644 --- a/core/embed/trezorhal/stm32f4/usbd_conf.c +++ b/core/embed/trezorhal/stm32f4/usbd_conf.c @@ -488,7 +488,7 @@ USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev) if (pdev->id == USB_PHY_FS_ID) { /*Set LL Driver parameters */ pcd_fs_handle.Instance = USB_OTG_FS; - pcd_fs_handle.Init.dev_endpoints = 4; + pcd_fs_handle.Init.dev_endpoints = 6; pcd_fs_handle.Init.use_dedicated_ep1 = 0; pcd_fs_handle.Init.ep0_mps = 0x40; pcd_fs_handle.Init.dma_enable = 0; @@ -508,10 +508,10 @@ USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev) // in this dedicated 1.25KiB data RAM to use. see section 6.3.8 in UM1021 and 29.13 in RM0033. // USB packets that we deal with are 64 bytes in size which equates to 16 32-bit words. // we size the transmit FIFO's equally and give the rest of the space to the receive FIFO. - const uint16_t transmit_fifo_size = 48; // 48 = 16 * 3 meaning that we give 3 packets of space for each transmit fifo - const uint16_t receive_fifo_zie = 128; // 128 = 320 - 4 * 48 + const uint16_t transmit_fifo_size = 32; // 32 = 16 * 2 meaning that we give 2 packets of space for each transmit fifo + const uint16_t receive_fifo_zie = 128; // 128 = 320 - 6 * 32 HAL_PCDEx_SetRxFiFo(&pcd_fs_handle, receive_fifo_zie); - for (uint16_t i = 0; i < 4; i++) { + for (uint16_t i = 0; i < 6; i++) { HAL_PCDEx_SetTxFiFo(&pcd_fs_handle, i, transmit_fifo_size); } } From 6fe476a828c5e382fdd4f119e0181460a5b93d4c Mon Sep 17 00:00:00 2001 From: tychovrahe Date: Wed, 1 May 2024 13:44:42 +0200 Subject: [PATCH 010/626] chore(core): fix typos in usb implementation [no changelog] --- core/embed/trezorhal/stm32f4/usb_vcp-impl.h | 4 ++-- core/embed/trezorhal/stm32f4/usbd_conf.c | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/usb_vcp-impl.h b/core/embed/trezorhal/stm32f4/usb_vcp-impl.h index b2c11eefcc..5652eb7175 100644 --- a/core/embed/trezorhal/stm32f4/usb_vcp-impl.h +++ b/core/embed/trezorhal/stm32f4/usb_vcp-impl.h @@ -263,7 +263,7 @@ int usb_vcp_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { return -1; // Invalid interface number } if (iface->type != USB_IFACE_TYPE_VCP) { - return -2; // Interface interface type + return -2; // Invalid interface type } usb_vcp_state_t *state = &iface->vcp; @@ -284,7 +284,7 @@ int usb_vcp_write(uint8_t iface_num, const uint8_t *buf, uint32_t len) { return -1; // Invalid interface number } if (iface->type != USB_IFACE_TYPE_VCP) { - return -2; // Interface interface type + return -2; // Invalid interface type } usb_vcp_state_t *state = &iface->vcp; diff --git a/core/embed/trezorhal/stm32f4/usbd_conf.c b/core/embed/trezorhal/stm32f4/usbd_conf.c index 2a0f220a20..0434962d3a 100644 --- a/core/embed/trezorhal/stm32f4/usbd_conf.c +++ b/core/embed/trezorhal/stm32f4/usbd_conf.c @@ -509,8 +509,8 @@ USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev) // USB packets that we deal with are 64 bytes in size which equates to 16 32-bit words. // we size the transmit FIFO's equally and give the rest of the space to the receive FIFO. const uint16_t transmit_fifo_size = 32; // 32 = 16 * 2 meaning that we give 2 packets of space for each transmit fifo - const uint16_t receive_fifo_zie = 128; // 128 = 320 - 6 * 32 - HAL_PCDEx_SetRxFiFo(&pcd_fs_handle, receive_fifo_zie); + const uint16_t receive_fifo_size = 128; // 128 = 320 - 6 * 32 + HAL_PCDEx_SetRxFiFo(&pcd_fs_handle, receive_fifo_size); for (uint16_t i = 0; i < 6; i++) { HAL_PCDEx_SetTxFiFo(&pcd_fs_handle, i, transmit_fifo_size); } @@ -547,8 +547,8 @@ USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev) // USB packets that we deal with are 64 bytes in size which equates to 16 32-bit words. // we size the transmit FIFO's equally and give the rest of the space to the receive FIFO. const uint16_t transmit_fifo_size = 144; // 144 = 16 * 9 meaning that we give 9 packets of space for each transmit fifo - const uint16_t receive_fifo_zie = 160; // 160 = 1024 - 6 * 144 section 35.10.1 details what some of this is used for besides storing packets - HAL_PCDEx_SetRxFiFo(&pcd_hs_handle, receive_fifo_zie); + const uint16_t receive_fifo_size = 160; // 160 = 1024 - 6 * 144 section 35.10.1 details what some of this is used for besides storing packets + HAL_PCDEx_SetRxFiFo(&pcd_hs_handle, receive_fifo_size); for (uint16_t i = 0; i < 6; i++) { HAL_PCDEx_SetTxFiFo(&pcd_hs_handle, i, transmit_fifo_size); } @@ -585,8 +585,8 @@ USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev) // USB packets that we deal with are 64 bytes in size which equates to 16 32-bit words. // we size the transmit FIFO's equally and give the rest of the space to the receive FIFO. const uint16_t transmit_fifo_size = 144; // 144 = 16 * 9 meaning that we give 9 packets of space for each transmit fifo - const uint16_t receive_fifo_zie = 160; // 160 = 1024 - 6 * 144 section 35.10.1 details what some of this is used for besides storing packets - HAL_PCDEx_SetRxFiFo(&pcd_hs_handle, receive_fifo_zie); + const uint16_t receive_fifo_size = 160; // 160 = 1024 - 6 * 144 section 35.10.1 details what some of this is used for besides storing packets + HAL_PCDEx_SetRxFiFo(&pcd_hs_handle, receive_fifo_size); for (uint16_t i = 0; i < 6; i++) { HAL_PCDEx_SetTxFiFo(&pcd_hs_handle, i, transmit_fifo_size); } From ec8da46fe5cc732cccd9eeac7d2c38f66a88a474 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 2 May 2024 12:56:33 +0200 Subject: [PATCH 011/626] build: upgrade pyright to 1.1.361 --- ci/pyright/node-composition.nix | 6 +- ci/pyright/node-env.nix | 218 ++++-- ci/pyright/node-packages.nix | 1164 +++++++++++++++++-------------- ci/pyright/package.json | 2 +- 4 files changed, 823 insertions(+), 567 deletions(-) diff --git a/ci/pyright/node-composition.nix b/ci/pyright/node-composition.nix index f929727d59..b795f708f1 100644 --- a/ci/pyright/node-composition.nix +++ b/ci/pyright/node-composition.nix @@ -1,12 +1,12 @@ -# This file has been generated by node2nix 1.9.0. Do not edit! +# This file has been generated by node2nix 1.11.1. Do not edit! {pkgs ? import { inherit system; - }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-14_x"}: + }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs_14"}: let nodeEnv = import ./node-env.nix { - inherit (pkgs) stdenv lib python2 runCommand writeTextFile; + inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript; inherit pkgs nodejs; libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null; }; diff --git a/ci/pyright/node-env.nix b/ci/pyright/node-env.nix index 21089c4d54..bc1e36628a 100644 --- a/ci/pyright/node-env.nix +++ b/ci/pyright/node-env.nix @@ -1,6 +1,6 @@ # This file originates from node2nix -{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile}: +{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript}: let # Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master @@ -40,36 +40,22 @@ let ''; }; - includeDependencies = {dependencies}: - lib.optionalString (dependencies != []) - (lib.concatMapStrings (dependency: - '' - # Bundle the dependencies of the package - mkdir -p node_modules - cd node_modules - - # Only include dependencies if they don't exist. They may also be bundled in the package. - if [ ! -e "${dependency.name}" ] - then - ${composePackage dependency} - fi + # Common shell logic + installPackage = writeShellScript "install-package" '' + installPackage() { + local packageName=$1 src=$2 - cd .. - '' - ) dependencies); + local strippedName - # Recursively composes the dependencies of a package - composePackage = { name, packageName, src, dependencies ? [], ... }@args: - builtins.addErrorContext "while evaluating node package '${packageName}'" '' - DIR=$(pwd) + local DIR=$PWD cd $TMPDIR - unpackFile ${src} + unpackFile $src # Make the base dir in which the target dependency resides first - mkdir -p "$(dirname "$DIR/${packageName}")" + mkdir -p "$(dirname "$DIR/$packageName")" - if [ -f "${src}" ] + if [ -f "$src" ] then # Figure out what directory has been unpacked packageDir="$(find . -maxdepth 1 -type d | tail -1)" @@ -79,28 +65,53 @@ let chmod -R u+w "$packageDir" # Move the extracted tarball into the output folder - mv "$packageDir" "$DIR/${packageName}" - elif [ -d "${src}" ] + mv "$packageDir" "$DIR/$packageName" + elif [ -d "$src" ] then # Get a stripped name (without hash) of the source directory. # On old nixpkgs it's already set internally. if [ -z "$strippedName" ] then - strippedName="$(stripHash ${src})" + strippedName="$(stripHash $src)" fi # Restore write permissions to make building work chmod -R u+w "$strippedName" # Move the extracted directory into the output folder - mv "$strippedName" "$DIR/${packageName}" + mv "$strippedName" "$DIR/$packageName" fi - # Unset the stripped name to not confuse the next unpack step - unset strippedName + # Change to the package directory to install dependencies + cd "$DIR/$packageName" + } + ''; + + # Bundle the dependencies of the package + # + # Only include dependencies if they don't exist. They may also be bundled in the package. + includeDependencies = {dependencies}: + lib.optionalString (dependencies != []) ( + '' + mkdir -p node_modules + cd node_modules + '' + + (lib.concatMapStrings (dependency: + '' + if [ ! -e "${dependency.packageName}" ]; then + ${composePackage dependency} + fi + '' + ) dependencies) + + '' + cd .. + '' + ); - # Include the dependencies of the package - cd "$DIR/${packageName}" + # Recursively composes the dependencies of a package + composePackage = { name, packageName, src, dependencies ? [], ... }@args: + builtins.addErrorContext "while evaluating node package '${packageName}'" '' + installPackage "${packageName}" "${src}" ${includeDependencies { inherit dependencies; }} cd .. ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} @@ -154,7 +165,11 @@ let if(process.argv[2] == "development") { replaceDependencies(packageObj.devDependencies); } + else { + packageObj.devDependencies = {}; + } replaceDependencies(packageObj.optionalDependencies); + replaceDependencies(packageObj.peerDependencies); /* Write the fixed package.json file */ fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2)); @@ -246,8 +261,8 @@ let var packageLock = JSON.parse(fs.readFileSync("./package-lock.json")); if(![1, 2].includes(packageLock.lockfileVersion)) { - process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n"); - process.exit(1); + process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n"); + process.exit(1); } if(packageLock.dependencies !== undefined) { @@ -259,7 +274,7 @@ let # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes reconstructPackageLock = writeTextFile { - name = "addintegrityfields.js"; + name = "reconstructpackagelock.js"; text = '' var fs = require('fs'); var path = require('path'); @@ -269,25 +284,43 @@ let var lockObj = { name: packageObj.name, version: packageObj.version, - lockfileVersion: 1, + lockfileVersion: 2, requires: true, + packages: { + "": { + name: packageObj.name, + version: packageObj.version, + license: packageObj.license, + bin: packageObj.bin, + dependencies: packageObj.dependencies, + engines: packageObj.engines, + optionalDependencies: packageObj.optionalDependencies + } + }, dependencies: {} }; - function augmentPackageJSON(filePath, dependencies) { + function augmentPackageJSON(filePath, packages, dependencies) { var packageJSON = path.join(filePath, "package.json"); if(fs.existsSync(packageJSON)) { var packageObj = JSON.parse(fs.readFileSync(packageJSON)); + packages[filePath] = { + version: packageObj.version, + integrity: "sha1-000000000000000000000000000=", + dependencies: packageObj.dependencies, + engines: packageObj.engines, + optionalDependencies: packageObj.optionalDependencies + }; dependencies[packageObj.name] = { version: packageObj.version, integrity: "sha1-000000000000000000000000000=", dependencies: {} }; - processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies); + processDependencies(path.join(filePath, "node_modules"), packages, dependencies[packageObj.name].dependencies); } } - function processDependencies(dir, dependencies) { + function processDependencies(dir, packages, dependencies) { if(fs.existsSync(dir)) { var files = fs.readdirSync(dir); @@ -303,23 +336,84 @@ let pkgFiles.forEach(function(entry) { if(stats.isDirectory()) { var pkgFilePath = path.join(filePath, entry); - augmentPackageJSON(pkgFilePath, dependencies); + augmentPackageJSON(pkgFilePath, packages, dependencies); } }); } else { - augmentPackageJSON(filePath, dependencies); + augmentPackageJSON(filePath, packages, dependencies); } } }); } } - processDependencies("node_modules", lockObj.dependencies); + processDependencies("node_modules", lockObj.packages, lockObj.dependencies); fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2)); ''; }; + # Script that links bins defined in package.json to the node_modules bin directory + # NPM does not do this for top-level packages itself anymore as of v7 + linkBinsScript = writeTextFile { + name = "linkbins.js"; + text = '' + var fs = require('fs'); + var path = require('path'); + + var packageObj = JSON.parse(fs.readFileSync("package.json")); + + var nodeModules = Array(packageObj.name.split("/").length).fill("..").join(path.sep); + + if(packageObj.bin !== undefined) { + fs.mkdirSync(path.join(nodeModules, ".bin")) + + if(typeof packageObj.bin == "object") { + Object.keys(packageObj.bin).forEach(function(exe) { + if(fs.existsSync(packageObj.bin[exe])) { + console.log("linking bin '" + exe + "'"); + fs.symlinkSync( + path.join("..", packageObj.name, packageObj.bin[exe]), + path.join(nodeModules, ".bin", exe) + ); + } + else { + console.log("skipping non-existent bin '" + exe + "'"); + } + }) + } + else { + if(fs.existsSync(packageObj.bin)) { + console.log("linking bin '" + packageObj.bin + "'"); + fs.symlinkSync( + path.join("..", packageObj.name, packageObj.bin), + path.join(nodeModules, ".bin", packageObj.name.split("/").pop()) + ); + } + else { + console.log("skipping non-existent bin '" + packageObj.bin + "'"); + } + } + } + else if(packageObj.directories !== undefined && packageObj.directories.bin !== undefined) { + fs.mkdirSync(path.join(nodeModules, ".bin")) + + fs.readdirSync(packageObj.directories.bin).forEach(function(exe) { + if(fs.existsSync(path.join(packageObj.directories.bin, exe))) { + console.log("linking bin '" + exe + "'"); + fs.symlinkSync( + path.join("..", packageObj.name, packageObj.directories.bin, exe), + path.join(nodeModules, ".bin", exe) + ); + } + else { + console.log("skipping non-existent bin '" + exe + "'"); + } + }) + } + ''; + }; + prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}: let forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com"; @@ -366,20 +460,25 @@ let npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild + runHook postRebuild + if [ "''${dontNpmInstall-}" != "1" ] then # NPM tries to download packages even when they already exist if npm-shrinkwrap is used. rm -f npm-shrinkwrap.json - npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install + npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install fi + + # Link executables defined in package.json + node ${linkBinsScript} ''; # Builds and composes an NPM package including all its dependencies buildNodePackage = { name , packageName - , version + , version ? null , dependencies ? [] , buildInputs ? [] , production ? true @@ -398,7 +497,7 @@ let extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ]; in stdenv.mkDerivation ({ - name = "${name}-${version}"; + name = "${name}${if version == null then "" else "-${version}"}"; buildInputs = [ tarWrapper python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ lib.optional (stdenv.isDarwin) libtool @@ -415,6 +514,8 @@ let passAsFile = [ "compositionScript" "pinpointDependenciesScript" ]; installPhase = '' + source ${installPackage} + # Create and enter a root node_modules/ folder mkdir -p $out/lib/node_modules cd $out/lib/node_modules @@ -428,6 +529,17 @@ let if [ -d "$out/lib/node_modules/.bin" ] then ln -s $out/lib/node_modules/.bin $out/bin + + # Fixup all executables + ls $out/bin/* | while read i + do + file="$(readlink -f "$i")" + chmod u+rwx "$file" + if isScript "$file" + then + sed -i 's/\r$//' "$file" # convert crlf to lf + fi + done fi # Create symlinks to the deployed manual page folders, if applicable @@ -458,7 +570,7 @@ let buildNodeDependencies = { name , packageName - , version + , version ? null , src , dependencies ? [] , buildInputs ? [] @@ -476,7 +588,7 @@ let extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ]; in stdenv.mkDerivation ({ - name = "node-dependencies-${name}-${version}"; + name = "node-dependencies-${name}${if version == null then "" else "-${version}"}"; buildInputs = [ tarWrapper python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux @@ -492,6 +604,8 @@ let passAsFile = [ "includeScript" "pinpointDependenciesScript" ]; installPhase = '' + source ${installPackage} + mkdir -p $out/${packageName} cd $out/${packageName} @@ -504,6 +618,7 @@ let if [ -f ${src}/package-lock.json ] then cp ${src}/package-lock.json . + chmod 644 package-lock.json fi ''} @@ -526,7 +641,7 @@ let buildNodeShell = { name , packageName - , version + , version ? null , src , dependencies ? [] , buildInputs ? [] @@ -542,9 +657,10 @@ let let nodeDependencies = buildNodeDependencies args; + extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "unpackPhase" "buildPhase" ]; in - stdenv.mkDerivation { - name = "node-shell-${name}-${version}"; + stdenv.mkDerivation ({ + name = "node-shell-${name}${if version == null then "" else "-${version}"}"; buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs; buildCommand = '' @@ -563,7 +679,7 @@ let export NODE_PATH=${nodeDependencies}/lib/node_modules export PATH="${nodeDependencies}/bin:$PATH" ''; - }; + } // extraArgs); in { buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist; diff --git a/ci/pyright/node-packages.nix b/ci/pyright/node-packages.nix index 64c739c8f2..62202884d9 100644 --- a/ci/pyright/node-packages.nix +++ b/ci/pyright/node-packages.nix @@ -1,16 +1,70 @@ -# This file has been generated by node2nix 1.9.0. Do not edit! +# This file has been generated by node2nix 1.11.1. Do not edit! {nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}: let sources = { - "@discoveryjs/json-ext-0.5.6" = { + "@discoveryjs/json-ext-0.5.7" = { name = "_at_discoveryjs_slash_json-ext"; packageName = "@discoveryjs/json-ext"; - version = "0.5.6"; + version = "0.5.7"; src = fetchurl { - url = "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz"; - sha512 = "ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA=="; + url = "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz"; + sha512 = "dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="; + }; + }; + "@jridgewell/gen-mapping-0.3.5" = { + name = "_at_jridgewell_slash_gen-mapping"; + packageName = "@jridgewell/gen-mapping"; + version = "0.3.5"; + src = fetchurl { + url = "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"; + sha512 = "IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg=="; + }; + }; + "@jridgewell/resolve-uri-3.1.2" = { + name = "_at_jridgewell_slash_resolve-uri"; + packageName = "@jridgewell/resolve-uri"; + version = "3.1.2"; + src = fetchurl { + url = "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"; + sha512 = "bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="; + }; + }; + "@jridgewell/set-array-1.2.1" = { + name = "_at_jridgewell_slash_set-array"; + packageName = "@jridgewell/set-array"; + version = "1.2.1"; + src = fetchurl { + url = "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz"; + sha512 = "R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="; + }; + }; + "@jridgewell/source-map-0.3.6" = { + name = "_at_jridgewell_slash_source-map"; + packageName = "@jridgewell/source-map"; + version = "0.3.6"; + src = fetchurl { + url = "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz"; + sha512 = "1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ=="; + }; + }; + "@jridgewell/sourcemap-codec-1.4.15" = { + name = "_at_jridgewell_slash_sourcemap-codec"; + packageName = "@jridgewell/sourcemap-codec"; + version = "1.4.15"; + src = fetchurl { + url = "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"; + sha512 = "eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="; + }; + }; + "@jridgewell/trace-mapping-0.3.25" = { + name = "_at_jridgewell_slash_trace-mapping"; + packageName = "@jridgewell/trace-mapping"; + version = "0.3.25"; + src = fetchurl { + url = "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"; + sha512 = "vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="; }; }; "@nodelib/fs.scandir-2.1.5" = { @@ -40,220 +94,211 @@ let sha512 = "oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="; }; }; - "@types/copy-webpack-plugin-8.0.1" = { - name = "_at_types_slash_copy-webpack-plugin"; - packageName = "@types/copy-webpack-plugin"; - version = "8.0.1"; - src = fetchurl { - url = "https://registry.npmjs.org/@types/copy-webpack-plugin/-/copy-webpack-plugin-8.0.1.tgz"; - sha512 = "TwEeGse0/wq+t3SFW0DEwroMS/cDkwVZT+vj7tMAYTp7llt/yz6NuW2n04X2M5P/kSfBQOORhrHAN2mqZdmybg=="; - }; - }; - "@types/eslint-8.2.1" = { + "@types/eslint-8.56.10" = { name = "_at_types_slash_eslint"; packageName = "@types/eslint"; - version = "8.2.1"; + version = "8.56.10"; src = fetchurl { - url = "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.1.tgz"; - sha512 = "UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ=="; + url = "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz"; + sha512 = "Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ=="; }; }; - "@types/eslint-scope-3.7.2" = { + "@types/eslint-scope-3.7.7" = { name = "_at_types_slash_eslint-scope"; packageName = "@types/eslint-scope"; - version = "3.7.2"; + version = "3.7.7"; src = fetchurl { - url = "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.2.tgz"; - sha512 = "TzgYCWoPiTeRg6RQYgtuW7iODtVoKu3RVL72k3WohqhjfaOLK5Mg2T4Tg1o2bSfu0vPkoI48wdQFv5b/Xe04wQ=="; + url = "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz"; + sha512 = "MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg=="; }; }; - "@types/estree-0.0.50" = { + "@types/estree-1.0.5" = { name = "_at_types_slash_estree"; packageName = "@types/estree"; - version = "0.0.50"; + version = "1.0.5"; src = fetchurl { - url = "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz"; - sha512 = "C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw=="; + url = "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz"; + sha512 = "/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="; }; }; - "@types/json-schema-7.0.9" = { + "@types/json-schema-7.0.15" = { name = "_at_types_slash_json-schema"; packageName = "@types/json-schema"; - version = "7.0.9"; + version = "7.0.15"; src = fetchurl { - url = "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz"; - sha512 = "qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ=="; + url = "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"; + sha512 = "5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="; }; }; - "@types/node-12.20.41" = { + "@types/node-17.0.45" = { name = "_at_types_slash_node"; packageName = "@types/node"; - version = "12.20.41"; + version = "17.0.45"; src = fetchurl { - url = "https://registry.npmjs.org/@types/node/-/node-12.20.41.tgz"; - sha512 = "f6xOqucbDirG7LOzedpvzjP3UTmHttRou3Mosx3vL9wr9AIQGhcPgVnqa8ihpZYnxyM1rxeNCvTyukPKZtq10Q=="; + url = "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz"; + sha512 = "w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="; }; }; - "@webassemblyjs/ast-1.11.1" = { + "@webassemblyjs/ast-1.12.1" = { name = "_at_webassemblyjs_slash_ast"; packageName = "@webassemblyjs/ast"; - version = "1.11.1"; + version = "1.12.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz"; - sha512 = "ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw=="; + url = "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz"; + sha512 = "EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg=="; }; }; - "@webassemblyjs/floating-point-hex-parser-1.11.1" = { + "@webassemblyjs/floating-point-hex-parser-1.11.6" = { name = "_at_webassemblyjs_slash_floating-point-hex-parser"; packageName = "@webassemblyjs/floating-point-hex-parser"; - version = "1.11.1"; + version = "1.11.6"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz"; - sha512 = "iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ=="; + url = "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz"; + sha512 = "ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw=="; }; }; - "@webassemblyjs/helper-api-error-1.11.1" = { + "@webassemblyjs/helper-api-error-1.11.6" = { name = "_at_webassemblyjs_slash_helper-api-error"; packageName = "@webassemblyjs/helper-api-error"; - version = "1.11.1"; + version = "1.11.6"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz"; - sha512 = "RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg=="; + url = "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz"; + sha512 = "o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q=="; }; }; - "@webassemblyjs/helper-buffer-1.11.1" = { + "@webassemblyjs/helper-buffer-1.12.1" = { name = "_at_webassemblyjs_slash_helper-buffer"; packageName = "@webassemblyjs/helper-buffer"; - version = "1.11.1"; + version = "1.12.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz"; - sha512 = "gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA=="; + url = "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz"; + sha512 = "nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw=="; }; }; - "@webassemblyjs/helper-numbers-1.11.1" = { + "@webassemblyjs/helper-numbers-1.11.6" = { name = "_at_webassemblyjs_slash_helper-numbers"; packageName = "@webassemblyjs/helper-numbers"; - version = "1.11.1"; + version = "1.11.6"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz"; - sha512 = "vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ=="; + url = "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz"; + sha512 = "vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g=="; }; }; - "@webassemblyjs/helper-wasm-bytecode-1.11.1" = { + "@webassemblyjs/helper-wasm-bytecode-1.11.6" = { name = "_at_webassemblyjs_slash_helper-wasm-bytecode"; packageName = "@webassemblyjs/helper-wasm-bytecode"; - version = "1.11.1"; + version = "1.11.6"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz"; - sha512 = "PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q=="; + url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz"; + sha512 = "sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA=="; }; }; - "@webassemblyjs/helper-wasm-section-1.11.1" = { + "@webassemblyjs/helper-wasm-section-1.12.1" = { name = "_at_webassemblyjs_slash_helper-wasm-section"; packageName = "@webassemblyjs/helper-wasm-section"; - version = "1.11.1"; + version = "1.12.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz"; - sha512 = "10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg=="; + url = "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz"; + sha512 = "Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g=="; }; }; - "@webassemblyjs/ieee754-1.11.1" = { + "@webassemblyjs/ieee754-1.11.6" = { name = "_at_webassemblyjs_slash_ieee754"; packageName = "@webassemblyjs/ieee754"; - version = "1.11.1"; + version = "1.11.6"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz"; - sha512 = "hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ=="; + url = "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz"; + sha512 = "LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg=="; }; }; - "@webassemblyjs/leb128-1.11.1" = { + "@webassemblyjs/leb128-1.11.6" = { name = "_at_webassemblyjs_slash_leb128"; packageName = "@webassemblyjs/leb128"; - version = "1.11.1"; + version = "1.11.6"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz"; - sha512 = "BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw=="; + url = "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz"; + sha512 = "m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ=="; }; }; - "@webassemblyjs/utf8-1.11.1" = { + "@webassemblyjs/utf8-1.11.6" = { name = "_at_webassemblyjs_slash_utf8"; packageName = "@webassemblyjs/utf8"; - version = "1.11.1"; + version = "1.11.6"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz"; - sha512 = "9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ=="; + url = "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz"; + sha512 = "vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA=="; }; }; - "@webassemblyjs/wasm-edit-1.11.1" = { + "@webassemblyjs/wasm-edit-1.12.1" = { name = "_at_webassemblyjs_slash_wasm-edit"; packageName = "@webassemblyjs/wasm-edit"; - version = "1.11.1"; + version = "1.12.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz"; - sha512 = "g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA=="; + url = "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz"; + sha512 = "1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g=="; }; }; - "@webassemblyjs/wasm-gen-1.11.1" = { + "@webassemblyjs/wasm-gen-1.12.1" = { name = "_at_webassemblyjs_slash_wasm-gen"; packageName = "@webassemblyjs/wasm-gen"; - version = "1.11.1"; + version = "1.12.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz"; - sha512 = "F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA=="; + url = "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz"; + sha512 = "TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w=="; }; }; - "@webassemblyjs/wasm-opt-1.11.1" = { + "@webassemblyjs/wasm-opt-1.12.1" = { name = "_at_webassemblyjs_slash_wasm-opt"; packageName = "@webassemblyjs/wasm-opt"; - version = "1.11.1"; + version = "1.12.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz"; - sha512 = "VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw=="; + url = "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz"; + sha512 = "Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg=="; }; }; - "@webassemblyjs/wasm-parser-1.11.1" = { + "@webassemblyjs/wasm-parser-1.12.1" = { name = "_at_webassemblyjs_slash_wasm-parser"; packageName = "@webassemblyjs/wasm-parser"; - version = "1.11.1"; + version = "1.12.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz"; - sha512 = "rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA=="; + url = "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz"; + sha512 = "xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ=="; }; }; - "@webassemblyjs/wast-printer-1.11.1" = { + "@webassemblyjs/wast-printer-1.12.1" = { name = "_at_webassemblyjs_slash_wast-printer"; packageName = "@webassemblyjs/wast-printer"; - version = "1.11.1"; + version = "1.12.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz"; - sha512 = "IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg=="; + url = "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz"; + sha512 = "+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA=="; }; }; - "@webpack-cli/configtest-1.1.0" = { + "@webpack-cli/configtest-2.1.1" = { name = "_at_webpack-cli_slash_configtest"; packageName = "@webpack-cli/configtest"; - version = "1.1.0"; + version = "2.1.1"; src = fetchurl { - url = "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz"; - sha512 = "ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg=="; + url = "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz"; + sha512 = "wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw=="; }; }; - "@webpack-cli/info-1.4.0" = { + "@webpack-cli/info-2.0.2" = { name = "_at_webpack-cli_slash_info"; packageName = "@webpack-cli/info"; - version = "1.4.0"; + version = "2.0.2"; src = fetchurl { - url = "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz"; - sha512 = "F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw=="; + url = "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz"; + sha512 = "zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A=="; }; }; - "@webpack-cli/serve-1.6.0" = { + "@webpack-cli/serve-2.0.5" = { name = "_at_webpack-cli_slash_serve"; packageName = "@webpack-cli/serve"; - version = "1.6.0"; + version = "2.0.5"; src = fetchurl { - url = "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz"; - sha512 = "ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA=="; + url = "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz"; + sha512 = "lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ=="; }; }; "@xtuc/ieee754-1.2.0" = { @@ -274,22 +319,22 @@ let sha512 = "NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="; }; }; - "acorn-8.7.0" = { + "acorn-8.11.3" = { name = "acorn"; packageName = "acorn"; - version = "8.7.0"; + version = "8.11.3"; src = fetchurl { - url = "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz"; - sha512 = "V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ=="; + url = "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz"; + sha512 = "Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg=="; }; }; - "acorn-import-assertions-1.8.0" = { + "acorn-import-assertions-1.9.0" = { name = "acorn-import-assertions"; packageName = "acorn-import-assertions"; - version = "1.8.0"; + version = "1.9.0"; src = fetchurl { - url = "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz"; - sha512 = "m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw=="; + url = "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz"; + sha512 = "cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA=="; }; }; "ajv-6.12.6" = { @@ -301,6 +346,24 @@ let sha512 = "j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="; }; }; + "ajv-8.13.0" = { + name = "ajv"; + packageName = "ajv"; + version = "8.13.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz"; + sha512 = "PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA=="; + }; + }; + "ajv-formats-2.1.1" = { + name = "ajv-formats"; + packageName = "ajv-formats"; + version = "2.1.1"; + src = fetchurl { + url = "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz"; + sha512 = "Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="; + }; + }; "ajv-keywords-3.5.2" = { name = "ajv-keywords"; packageName = "ajv-keywords"; @@ -310,6 +373,15 @@ let sha512 = "5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="; }; }; + "ajv-keywords-5.1.0" = { + name = "ajv-keywords"; + packageName = "ajv-keywords"; + version = "5.1.0"; + src = fetchurl { + url = "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz"; + sha512 = "YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="; + }; + }; "ansi-styles-4.3.0" = { name = "ansi-styles"; packageName = "ansi-styles"; @@ -319,15 +391,6 @@ let sha512 = "zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="; }; }; - "array-union-2.1.0" = { - name = "array-union"; - packageName = "array-union"; - version = "2.1.0"; - src = fetchurl { - url = "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"; - sha512 = "HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="; - }; - }; "balanced-match-1.0.2" = { name = "balanced-match"; packageName = "balanced-match"; @@ -337,6 +400,15 @@ let sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="; }; }; + "big.js-5.2.2" = { + name = "big.js"; + packageName = "big.js"; + version = "5.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz"; + sha512 = "vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="; + }; + }; "brace-expansion-1.1.11" = { name = "brace-expansion"; packageName = "brace-expansion"; @@ -355,13 +427,13 @@ let sha512 = "b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="; }; }; - "browserslist-4.19.1" = { + "browserslist-4.23.0" = { name = "browserslist"; packageName = "browserslist"; - version = "4.19.1"; + version = "4.23.0"; src = fetchurl { - url = "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz"; - sha512 = "u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A=="; + url = "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz"; + sha512 = "QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ=="; }; }; "buffer-from-1.1.2" = { @@ -373,13 +445,13 @@ let sha512 = "E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="; }; }; - "caniuse-lite-1.0.30001296" = { + "caniuse-lite-1.0.30001615" = { name = "caniuse-lite"; packageName = "caniuse-lite"; - version = "1.0.30001296"; + version = "1.0.30001615"; src = fetchurl { - url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz"; - sha512 = "WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q=="; + url = "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001615.tgz"; + sha512 = "1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ=="; }; }; "chalk-4.1.2" = { @@ -427,31 +499,31 @@ let sha512 = "dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="; }; }; - "colorette-2.0.16" = { + "colorette-2.0.20" = { name = "colorette"; packageName = "colorette"; - version = "2.0.16"; + version = "2.0.20"; src = fetchurl { - url = "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz"; - sha512 = "hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g=="; + url = "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz"; + sha512 = "IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="; }; }; - "commander-2.20.3" = { + "commander-10.0.1" = { name = "commander"; packageName = "commander"; - version = "2.20.3"; + version = "10.0.1"; src = fetchurl { - url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"; - sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="; + url = "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz"; + sha512 = "y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="; }; }; - "commander-7.2.0" = { + "commander-2.20.3" = { name = "commander"; packageName = "commander"; - version = "7.2.0"; + version = "2.20.3"; src = fetchurl { - url = "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"; - sha512 = "QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="; + url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"; + sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="; }; }; "concat-map-0.0.1" = { @@ -460,16 +532,16 @@ let version = "0.0.1"; src = fetchurl { url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"; - sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b"; + sha512 = "/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="; }; }; - "copy-webpack-plugin-9.1.0" = { + "copy-webpack-plugin-11.0.0" = { name = "copy-webpack-plugin"; packageName = "copy-webpack-plugin"; - version = "9.1.0"; + version = "11.0.0"; src = fetchurl { - url = "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz"; - sha512 = "rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA=="; + url = "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz"; + sha512 = "fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ=="; }; }; "cross-spawn-7.0.3" = { @@ -490,49 +562,76 @@ let sha512 = "WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="; }; }; - "electron-to-chromium-1.4.36" = { + "electron-to-chromium-1.4.754" = { name = "electron-to-chromium"; packageName = "electron-to-chromium"; - version = "1.4.36"; + version = "1.4.754"; + src = fetchurl { + url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.754.tgz"; + sha512 = "7Kr5jUdns5rL/M9wFFmMZAgFDuL2YOnanFH4OI4iFzUqyh3XOL7nAGbSlSMZdzKMIyyTpNSbqZsWG9odwLeKvA=="; + }; + }; + "emojis-list-3.0.0" = { + name = "emojis-list"; + packageName = "emojis-list"; + version = "3.0.0"; src = fetchurl { - url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.36.tgz"; - sha512 = "MbLlbF39vKrXWlFEFpCgDHwdlz4O3LmHM5W4tiLRHjSmEUXjJjz8sZkMgWgvYxlZw3N1iDTmCEtOkkESb5TMCg=="; + url = "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz"; + sha512 = "/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="; }; }; - "enhanced-resolve-5.8.3" = { + "enhanced-resolve-5.16.0" = { name = "enhanced-resolve"; packageName = "enhanced-resolve"; - version = "5.8.3"; + version = "5.16.0"; src = fetchurl { - url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz"; - sha512 = "EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA=="; + url = "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz"; + sha512 = "O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA=="; }; }; - "envinfo-7.8.1" = { + "envinfo-7.13.0" = { name = "envinfo"; packageName = "envinfo"; - version = "7.8.1"; + version = "7.13.0"; src = fetchurl { - url = "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz"; - sha512 = "/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw=="; + url = "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz"; + sha512 = "cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q=="; }; }; - "es-module-lexer-0.9.3" = { + "es-module-lexer-1.5.2" = { name = "es-module-lexer"; packageName = "es-module-lexer"; - version = "0.9.3"; + version = "1.5.2"; + src = fetchurl { + url = "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz"; + sha512 = "l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA=="; + }; + }; + "esbuild-0.19.12" = { + name = "esbuild"; + packageName = "esbuild"; + version = "0.19.12"; + src = fetchurl { + url = "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz"; + sha512 = "aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg=="; + }; + }; + "esbuild-loader-3.2.0" = { + name = "esbuild-loader"; + packageName = "esbuild-loader"; + version = "3.2.0"; src = fetchurl { - url = "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz"; - sha512 = "1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ=="; + url = "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-3.2.0.tgz"; + sha512 = "lnIdRMQpk50alCa0QoW0ozc0D3rjJXl02mtMsk9INIcW25RPZhDja332bu85ixwVNbhQ7VfBRcQyZ/qza8mWiA=="; }; }; - "escalade-3.1.1" = { + "escalade-3.1.2" = { name = "escalade"; packageName = "escalade"; - version = "3.1.1"; + version = "3.1.2"; src = fetchurl { - url = "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"; - sha512 = "k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="; + url = "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz"; + sha512 = "ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA=="; }; }; "eslint-scope-5.1.1" = { @@ -580,15 +679,6 @@ let sha512 = "mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="; }; }; - "execa-5.1.1" = { - name = "execa"; - packageName = "execa"; - version = "5.1.1"; - src = fetchurl { - url = "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz"; - sha512 = "8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="; - }; - }; "fast-deep-equal-3.1.3" = { name = "fast-deep-equal"; packageName = "fast-deep-equal"; @@ -598,13 +688,13 @@ let sha512 = "f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="; }; }; - "fast-glob-3.2.7" = { + "fast-glob-3.3.2" = { name = "fast-glob"; packageName = "fast-glob"; - version = "3.2.7"; + version = "3.3.2"; src = fetchurl { - url = "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz"; - sha512 = "rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q=="; + url = "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"; + sha512 = "oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow=="; }; }; "fast-json-stable-stringify-2.1.0" = { @@ -616,22 +706,22 @@ let sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="; }; }; - "fastest-levenshtein-1.0.12" = { + "fastest-levenshtein-1.0.16" = { name = "fastest-levenshtein"; packageName = "fastest-levenshtein"; - version = "1.0.12"; + version = "1.0.16"; src = fetchurl { - url = "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz"; - sha512 = "On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="; + url = "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz"; + sha512 = "eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg=="; }; }; - "fastq-1.13.0" = { + "fastq-1.17.1" = { name = "fastq"; packageName = "fastq"; - version = "1.13.0"; + version = "1.17.1"; src = fetchurl { - url = "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz"; - sha512 = "YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw=="; + url = "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz"; + sha512 = "sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w=="; }; }; "fill-range-7.0.1" = { @@ -652,40 +742,49 @@ let sha512 = "PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="; }; }; + "flat-5.0.2" = { + name = "flat"; + packageName = "flat"; + version = "5.0.2"; + src = fetchurl { + url = "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz"; + sha512 = "b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="; + }; + }; "fs.realpath-1.0.0" = { name = "fs.realpath"; packageName = "fs.realpath"; version = "1.0.0"; src = fetchurl { url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"; - sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f"; + sha512 = "OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="; }; }; - "function-bind-1.1.1" = { + "function-bind-1.1.2" = { name = "function-bind"; packageName = "function-bind"; - version = "1.1.1"; + version = "1.1.2"; src = fetchurl { - url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"; - sha512 = "yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="; + url = "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"; + sha512 = "7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="; }; }; - "get-stream-6.0.1" = { - name = "get-stream"; - packageName = "get-stream"; - version = "6.0.1"; + "get-tsconfig-4.7.3" = { + name = "get-tsconfig"; + packageName = "get-tsconfig"; + version = "4.7.3"; src = fetchurl { - url = "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz"; - sha512 = "ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="; + url = "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz"; + sha512 = "ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg=="; }; }; - "glob-7.2.0" = { + "glob-7.2.3" = { name = "glob"; packageName = "glob"; - version = "7.2.0"; + version = "7.2.3"; src = fetchurl { - url = "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz"; - sha512 = "lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q=="; + url = "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"; + sha512 = "nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="; }; }; "glob-parent-5.1.2" = { @@ -715,31 +814,22 @@ let sha512 = "lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="; }; }; - "globby-11.0.4" = { + "globby-13.2.2" = { name = "globby"; packageName = "globby"; - version = "11.0.4"; + version = "13.2.2"; src = fetchurl { - url = "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz"; - sha512 = "9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg=="; + url = "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz"; + sha512 = "Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w=="; }; }; - "graceful-fs-4.2.9" = { + "graceful-fs-4.2.11" = { name = "graceful-fs"; packageName = "graceful-fs"; - version = "4.2.9"; + version = "4.2.11"; src = fetchurl { - url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz"; - sha512 = "NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ=="; - }; - }; - "has-1.0.3" = { - name = "has"; - packageName = "has"; - version = "1.0.3"; - src = fetchurl { - url = "https://registry.npmjs.org/has/-/has-1.0.3.tgz"; - sha512 = "f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="; + url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"; + sha512 = "RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="; }; }; "has-flag-4.0.0" = { @@ -751,22 +841,22 @@ let sha512 = "EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="; }; }; - "human-signals-2.1.0" = { - name = "human-signals"; - packageName = "human-signals"; - version = "2.1.0"; + "hasown-2.0.2" = { + name = "hasown"; + packageName = "hasown"; + version = "2.0.2"; src = fetchurl { - url = "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz"; - sha512 = "B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="; + url = "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz"; + sha512 = "0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="; }; }; - "ignore-5.2.0" = { + "ignore-5.3.1" = { name = "ignore"; packageName = "ignore"; - version = "5.2.0"; + version = "5.3.1"; src = fetchurl { - url = "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz"; - sha512 = "CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ=="; + url = "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz"; + sha512 = "5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw=="; }; }; "import-local-3.1.0" = { @@ -784,7 +874,7 @@ let version = "1.0.6"; src = fetchurl { url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"; - sha1 = "49bd6331d7d02d0c09bc910a1075ba8165b56df9"; + sha512 = "k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="; }; }; "inherits-2.0.4" = { @@ -805,22 +895,22 @@ let sha512 = "agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="; }; }; - "interpret-2.2.0" = { + "interpret-3.1.1" = { name = "interpret"; packageName = "interpret"; - version = "2.2.0"; + version = "3.1.1"; src = fetchurl { - url = "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz"; - sha512 = "Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="; + url = "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz"; + sha512 = "6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ=="; }; }; - "is-core-module-2.8.1" = { + "is-core-module-2.13.1" = { name = "is-core-module"; packageName = "is-core-module"; - version = "2.8.1"; + version = "2.13.1"; src = fetchurl { - url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz"; - sha512 = "SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA=="; + url = "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz"; + sha512 = "hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw=="; }; }; "is-extglob-2.1.1" = { @@ -829,7 +919,7 @@ let version = "2.1.1"; src = fetchurl { url = "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"; - sha1 = "a88c02535791f02ed37c76a1b9ea9773c833f8c2"; + sha512 = "SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="; }; }; "is-glob-4.0.3" = { @@ -859,22 +949,13 @@ let sha512 = "h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="; }; }; - "is-stream-2.0.1" = { - name = "is-stream"; - packageName = "is-stream"; - version = "2.0.1"; - src = fetchurl { - url = "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz"; - sha512 = "hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="; - }; - }; "isexe-2.0.0" = { name = "isexe"; packageName = "isexe"; version = "2.0.0"; src = fetchurl { url = "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"; - sha1 = "e8fbf374dc556ff8947a10dcb0572d633f2cfa10"; + sha512 = "RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="; }; }; "isobject-3.0.1" = { @@ -883,25 +964,25 @@ let version = "3.0.1"; src = fetchurl { url = "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz"; - sha1 = "4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"; + sha512 = "WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="; }; }; - "jest-worker-27.4.6" = { + "jest-worker-27.5.1" = { name = "jest-worker"; packageName = "jest-worker"; - version = "27.4.6"; + version = "27.5.1"; src = fetchurl { - url = "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz"; - sha512 = "gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw=="; + url = "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz"; + sha512 = "7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="; }; }; - "json-parse-better-errors-1.0.2" = { - name = "json-parse-better-errors"; - packageName = "json-parse-better-errors"; - version = "1.0.2"; + "json-parse-even-better-errors-2.3.1" = { + name = "json-parse-even-better-errors"; + packageName = "json-parse-even-better-errors"; + version = "2.3.1"; src = fetchurl { - url = "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"; - sha512 = "mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="; + url = "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"; + sha512 = "xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="; }; }; "json-schema-traverse-0.4.1" = { @@ -913,6 +994,24 @@ let sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="; }; }; + "json-schema-traverse-1.0.0" = { + name = "json-schema-traverse"; + packageName = "json-schema-traverse"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"; + sha512 = "NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="; + }; + }; + "json5-2.2.3" = { + name = "json5"; + packageName = "json5"; + version = "2.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"; + sha512 = "XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="; + }; + }; "kind-of-6.0.3" = { name = "kind-of"; packageName = "kind-of"; @@ -922,13 +1021,22 @@ let sha512 = "dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="; }; }; - "loader-runner-4.2.0" = { + "loader-runner-4.3.0" = { name = "loader-runner"; packageName = "loader-runner"; - version = "4.2.0"; + version = "4.3.0"; + src = fetchurl { + url = "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz"; + sha512 = "3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="; + }; + }; + "loader-utils-2.0.4" = { + name = "loader-utils"; + packageName = "loader-utils"; + version = "2.0.4"; src = fetchurl { - url = "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz"; - sha512 = "92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw=="; + url = "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz"; + sha512 = "xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="; }; }; "locate-path-5.0.0" = { @@ -967,58 +1075,49 @@ let sha512 = "8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="; }; }; - "micromatch-4.0.4" = { + "micromatch-4.0.5" = { name = "micromatch"; packageName = "micromatch"; - version = "4.0.4"; + version = "4.0.5"; src = fetchurl { - url = "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz"; - sha512 = "pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg=="; + url = "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"; + sha512 = "DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA=="; }; }; - "mime-db-1.51.0" = { + "mime-db-1.52.0" = { name = "mime-db"; packageName = "mime-db"; - version = "1.51.0"; + version = "1.52.0"; src = fetchurl { - url = "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz"; - sha512 = "5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="; + url = "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"; + sha512 = "sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="; }; }; - "mime-types-2.1.34" = { + "mime-types-2.1.35" = { name = "mime-types"; packageName = "mime-types"; - version = "2.1.34"; - src = fetchurl { - url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz"; - sha512 = "6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A=="; - }; - }; - "mimic-fn-2.1.0" = { - name = "mimic-fn"; - packageName = "mimic-fn"; - version = "2.1.0"; + version = "2.1.35"; src = fetchurl { - url = "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"; - sha512 = "OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="; + url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"; + sha512 = "ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="; }; }; - "minimatch-3.0.4" = { + "minimatch-3.1.2" = { name = "minimatch"; packageName = "minimatch"; - version = "3.0.4"; + version = "3.1.2"; src = fetchurl { - url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"; - sha512 = "yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="; + url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"; + sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="; }; }; - "minimist-1.2.5" = { + "minimist-1.2.8" = { name = "minimist"; packageName = "minimist"; - version = "1.2.5"; + version = "1.2.8"; src = fetchurl { - url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"; - sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="; + url = "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"; + sha512 = "2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="; }; }; "neo-async-2.6.2" = { @@ -1030,13 +1129,13 @@ let sha512 = "Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="; }; }; - "node-releases-2.0.1" = { + "node-releases-2.0.14" = { name = "node-releases"; packageName = "node-releases"; - version = "2.0.1"; + version = "2.0.14"; src = fetchurl { - url = "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz"; - sha512 = "CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA=="; + url = "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz"; + sha512 = "y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="; }; }; "normalize-path-3.0.0" = { @@ -1048,31 +1147,13 @@ let sha512 = "6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="; }; }; - "npm-run-path-4.0.1" = { - name = "npm-run-path"; - packageName = "npm-run-path"; - version = "4.0.1"; - src = fetchurl { - url = "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz"; - sha512 = "S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="; - }; - }; "once-1.4.0" = { name = "once"; packageName = "once"; version = "1.4.0"; src = fetchurl { url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz"; - sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1"; - }; - }; - "onetime-5.1.2" = { - name = "onetime"; - packageName = "onetime"; - version = "5.1.2"; - src = fetchurl { - url = "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz"; - sha512 = "kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="; + sha512 = "lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="; }; }; "p-limit-2.3.0" = { @@ -1117,7 +1198,7 @@ let version = "1.0.1"; src = fetchurl { url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"; - sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"; + sha512 = "AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="; }; }; "path-key-3.1.1" = { @@ -1174,13 +1255,13 @@ let sha512 = "HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ=="; }; }; - "punycode-2.1.1" = { + "punycode-2.3.1" = { name = "punycode"; packageName = "punycode"; - version = "2.1.1"; + version = "2.3.1"; src = fetchurl { - url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"; - sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="; + url = "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"; + sha512 = "vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="; }; }; "queue-microtask-1.2.3" = { @@ -1207,25 +1288,34 @@ let version = "0.6.2"; src = fetchurl { url = "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz"; - sha1 = "85204b54dba82d5742e28c96756ef43af50e3384"; + sha512 = "HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw=="; }; }; - "rechoir-0.7.1" = { + "rechoir-0.8.0" = { name = "rechoir"; packageName = "rechoir"; - version = "0.7.1"; + version = "0.8.0"; + src = fetchurl { + url = "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz"; + sha512 = "/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ=="; + }; + }; + "require-from-string-2.0.2" = { + name = "require-from-string"; + packageName = "require-from-string"; + version = "2.0.2"; src = fetchurl { - url = "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz"; - sha512 = "/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg=="; + url = "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz"; + sha512 = "Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="; }; }; - "resolve-1.21.0" = { + "resolve-1.22.8" = { name = "resolve"; packageName = "resolve"; - version = "1.21.0"; + version = "1.22.8"; src = fetchurl { - url = "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz"; - sha512 = "3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA=="; + url = "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz"; + sha512 = "oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw=="; }; }; "resolve-cwd-3.0.0" = { @@ -1246,6 +1336,15 @@ let sha512 = "qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="; }; }; + "resolve-pkg-maps-1.0.0" = { + name = "resolve-pkg-maps"; + packageName = "resolve-pkg-maps"; + version = "1.0.0"; + src = fetchurl { + url = "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz"; + sha512 = "seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="; + }; + }; "reusify-1.0.4" = { name = "reusify"; packageName = "reusify"; @@ -1273,31 +1372,40 @@ let sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="; }; }; - "schema-utils-3.1.1" = { + "schema-utils-3.3.0" = { name = "schema-utils"; packageName = "schema-utils"; - version = "3.1.1"; + version = "3.3.0"; src = fetchurl { - url = "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz"; - sha512 = "Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw=="; + url = "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"; + sha512 = "pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg=="; }; }; - "semver-7.3.5" = { + "schema-utils-4.2.0" = { + name = "schema-utils"; + packageName = "schema-utils"; + version = "4.2.0"; + src = fetchurl { + url = "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz"; + sha512 = "L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw=="; + }; + }; + "semver-7.6.0" = { name = "semver"; packageName = "semver"; - version = "7.3.5"; + version = "7.6.0"; src = fetchurl { - url = "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz"; - sha512 = "PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ=="; + url = "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz"; + sha512 = "EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg=="; }; }; - "serialize-javascript-6.0.0" = { + "serialize-javascript-6.0.2" = { name = "serialize-javascript"; packageName = "serialize-javascript"; - version = "6.0.0"; + version = "6.0.2"; src = fetchurl { - url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz"; - sha512 = "Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag=="; + url = "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz"; + sha512 = "Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="; }; }; "shallow-clone-3.0.1" = { @@ -1327,40 +1435,40 @@ let sha512 = "7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="; }; }; - "shelljs-0.8.4" = { + "shelljs-0.8.5" = { name = "shelljs"; packageName = "shelljs"; - version = "0.8.4"; + version = "0.8.5"; src = fetchurl { - url = "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz"; - sha512 = "7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ=="; + url = "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz"; + sha512 = "TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow=="; }; }; - "shx-0.3.3" = { + "shx-0.3.4" = { name = "shx"; packageName = "shx"; - version = "0.3.3"; + version = "0.3.4"; src = fetchurl { - url = "https://registry.npmjs.org/shx/-/shx-0.3.3.tgz"; - sha512 = "nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA=="; + url = "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz"; + sha512 = "N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g=="; }; }; - "signal-exit-3.0.6" = { - name = "signal-exit"; - packageName = "signal-exit"; - version = "3.0.6"; + "slash-4.0.0" = { + name = "slash"; + packageName = "slash"; + version = "4.0.0"; src = fetchurl { - url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz"; - sha512 = "sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ=="; + url = "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz"; + sha512 = "3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew=="; }; }; - "slash-3.0.0" = { - name = "slash"; - packageName = "slash"; - version = "3.0.0"; + "source-list-map-2.0.1" = { + name = "source-list-map"; + packageName = "source-list-map"; + version = "2.0.1"; src = fetchurl { - url = "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"; - sha512 = "g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="; + url = "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz"; + sha512 = "qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="; }; }; "source-map-0.6.1" = { @@ -1372,13 +1480,13 @@ let sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="; }; }; - "source-map-0.7.3" = { + "source-map-0.7.4" = { name = "source-map"; packageName = "source-map"; - version = "0.7.3"; + version = "0.7.4"; src = fetchurl { - url = "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz"; - sha512 = "CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="; + url = "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"; + sha512 = "l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="; }; }; "source-map-support-0.5.21" = { @@ -1390,15 +1498,6 @@ let sha512 = "uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="; }; }; - "strip-final-newline-2.0.0" = { - name = "strip-final-newline"; - packageName = "strip-final-newline"; - version = "2.0.0"; - src = fetchurl { - url = "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz"; - sha512 = "BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="; - }; - }; "supports-color-7.2.0" = { name = "supports-color"; packageName = "supports-color"; @@ -1435,22 +1534,22 @@ let sha512 = "GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="; }; }; - "terser-5.10.0" = { + "terser-5.31.0" = { name = "terser"; packageName = "terser"; - version = "5.10.0"; + version = "5.31.0"; src = fetchurl { - url = "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz"; - sha512 = "AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA=="; + url = "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz"; + sha512 = "Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg=="; }; }; - "terser-webpack-plugin-5.3.0" = { + "terser-webpack-plugin-5.3.10" = { name = "terser-webpack-plugin"; packageName = "terser-webpack-plugin"; - version = "5.3.0"; + version = "5.3.10"; src = fetchurl { - url = "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz"; - sha512 = "LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ=="; + url = "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz"; + sha512 = "BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w=="; }; }; "to-regex-range-5.0.1" = { @@ -1462,22 +1561,31 @@ let sha512 = "65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="; }; }; - "ts-loader-9.2.6" = { + "ts-loader-9.5.1" = { name = "ts-loader"; packageName = "ts-loader"; - version = "9.2.6"; + version = "9.5.1"; src = fetchurl { - url = "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz"; - sha512 = "QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw=="; + url = "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz"; + sha512 = "rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg=="; }; }; - "typescript-4.4.4" = { + "typescript-5.2.2" = { name = "typescript"; packageName = "typescript"; - version = "4.4.4"; + version = "5.2.2"; + src = fetchurl { + url = "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz"; + sha512 = "mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w=="; + }; + }; + "update-browserslist-db-1.0.14" = { + name = "update-browserslist-db"; + packageName = "update-browserslist-db"; + version = "1.0.14"; src = fetchurl { - url = "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz"; - sha512 = "DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA=="; + url = "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.14.tgz"; + sha512 = "JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw=="; }; }; "uri-js-4.4.1" = { @@ -1489,49 +1597,58 @@ let sha512 = "7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="; }; }; - "watchpack-2.3.1" = { + "watchpack-2.4.1" = { name = "watchpack"; packageName = "watchpack"; - version = "2.3.1"; + version = "2.4.1"; src = fetchurl { - url = "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz"; - sha512 = "x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA=="; + url = "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz"; + sha512 = "8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg=="; }; }; - "webpack-5.65.0" = { + "webpack-5.91.0" = { name = "webpack"; packageName = "webpack"; - version = "5.65.0"; + version = "5.91.0"; src = fetchurl { - url = "https://registry.npmjs.org/webpack/-/webpack-5.65.0.tgz"; - sha512 = "Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw=="; + url = "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz"; + sha512 = "rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw=="; }; }; - "webpack-cli-4.9.1" = { + "webpack-cli-5.1.4" = { name = "webpack-cli"; packageName = "webpack-cli"; - version = "4.9.1"; + version = "5.1.4"; src = fetchurl { - url = "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz"; - sha512 = "JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ=="; + url = "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz"; + sha512 = "pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg=="; }; }; - "webpack-merge-5.8.0" = { + "webpack-merge-5.10.0" = { name = "webpack-merge"; packageName = "webpack-merge"; - version = "5.8.0"; + version = "5.10.0"; src = fetchurl { - url = "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz"; - sha512 = "/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q=="; + url = "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz"; + sha512 = "+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA=="; }; }; - "webpack-sources-3.2.2" = { + "webpack-sources-1.4.3" = { name = "webpack-sources"; packageName = "webpack-sources"; - version = "3.2.2"; + version = "1.4.3"; src = fetchurl { - url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz"; - sha512 = "cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw=="; + url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz"; + sha512 = "lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ=="; + }; + }; + "webpack-sources-3.2.3" = { + name = "webpack-sources"; + packageName = "webpack-sources"; + version = "3.2.3"; + src = fetchurl { + url = "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"; + sha512 = "/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="; }; }; "which-2.0.2" = { @@ -1543,13 +1660,13 @@ let sha512 = "BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="; }; }; - "wildcard-2.0.0" = { + "wildcard-2.0.1" = { name = "wildcard"; packageName = "wildcard"; - version = "2.0.0"; + version = "2.0.1"; src = fetchurl { - url = "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz"; - sha512 = "JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw=="; + url = "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz"; + sha512 = "CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="; }; }; "wrappy-1.0.2" = { @@ -1558,7 +1675,7 @@ let version = "1.0.2"; src = fetchurl { url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"; - sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"; + sha512 = "l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="; }; }; "yallist-4.0.0" = { @@ -1573,73 +1690,82 @@ let }; in { - "pyright-1.1.204" = nodeEnv.buildNodePackage { + "pyright-1.1.361" = nodeEnv.buildNodePackage { name = "pyright"; packageName = "pyright"; - version = "1.1.204"; + version = "1.1.361"; src = fetchurl { - url = "https://registry.npmjs.org/pyright/-/pyright-1.1.204.tgz"; - sha512 = "vzk+w1Awf0RMd4f5EUjeR/18F9TJFokatg6n/NNYkBdgVnFHWOxyqWMrsWyrbkpBRV6/TKZ3W1h79oAvwsYydQ=="; + url = "https://registry.npmjs.org/pyright/-/pyright-1.1.361.tgz"; + sha512 = "cu4VrXoA7zYg2TdFgh/IkQhD+Jc3GaEK5P/Vatptd7h40hC6S/fZZya8eZMnLZ0n09PBks8VM9IVRK4+X5zG3w=="; }; dependencies = [ - sources."@discoveryjs/json-ext-0.5.6" + sources."@discoveryjs/json-ext-0.5.7" + sources."@jridgewell/gen-mapping-0.3.5" + sources."@jridgewell/resolve-uri-3.1.2" + sources."@jridgewell/set-array-1.2.1" + sources."@jridgewell/source-map-0.3.6" + sources."@jridgewell/sourcemap-codec-1.4.15" + sources."@jridgewell/trace-mapping-0.3.25" sources."@nodelib/fs.scandir-2.1.5" sources."@nodelib/fs.stat-2.0.5" sources."@nodelib/fs.walk-1.2.8" - sources."@types/copy-webpack-plugin-8.0.1" - sources."@types/eslint-8.2.1" - sources."@types/eslint-scope-3.7.2" - sources."@types/estree-0.0.50" - sources."@types/json-schema-7.0.9" - sources."@types/node-12.20.41" - sources."@webassemblyjs/ast-1.11.1" - sources."@webassemblyjs/floating-point-hex-parser-1.11.1" - sources."@webassemblyjs/helper-api-error-1.11.1" - sources."@webassemblyjs/helper-buffer-1.11.1" - sources."@webassemblyjs/helper-numbers-1.11.1" - sources."@webassemblyjs/helper-wasm-bytecode-1.11.1" - sources."@webassemblyjs/helper-wasm-section-1.11.1" - sources."@webassemblyjs/ieee754-1.11.1" - sources."@webassemblyjs/leb128-1.11.1" - sources."@webassemblyjs/utf8-1.11.1" - sources."@webassemblyjs/wasm-edit-1.11.1" - sources."@webassemblyjs/wasm-gen-1.11.1" - sources."@webassemblyjs/wasm-opt-1.11.1" - sources."@webassemblyjs/wasm-parser-1.11.1" - sources."@webassemblyjs/wast-printer-1.11.1" - sources."@webpack-cli/configtest-1.1.0" - sources."@webpack-cli/info-1.4.0" - sources."@webpack-cli/serve-1.6.0" + sources."@types/eslint-8.56.10" + sources."@types/eslint-scope-3.7.7" + sources."@types/estree-1.0.5" + sources."@types/json-schema-7.0.15" + sources."@types/node-17.0.45" + sources."@webassemblyjs/ast-1.12.1" + sources."@webassemblyjs/floating-point-hex-parser-1.11.6" + sources."@webassemblyjs/helper-api-error-1.11.6" + sources."@webassemblyjs/helper-buffer-1.12.1" + sources."@webassemblyjs/helper-numbers-1.11.6" + sources."@webassemblyjs/helper-wasm-bytecode-1.11.6" + sources."@webassemblyjs/helper-wasm-section-1.12.1" + sources."@webassemblyjs/ieee754-1.11.6" + sources."@webassemblyjs/leb128-1.11.6" + sources."@webassemblyjs/utf8-1.11.6" + sources."@webassemblyjs/wasm-edit-1.12.1" + sources."@webassemblyjs/wasm-gen-1.12.1" + sources."@webassemblyjs/wasm-opt-1.12.1" + sources."@webassemblyjs/wasm-parser-1.12.1" + sources."@webassemblyjs/wast-printer-1.12.1" + sources."@webpack-cli/configtest-2.1.1" + sources."@webpack-cli/info-2.0.2" + sources."@webpack-cli/serve-2.0.5" sources."@xtuc/ieee754-1.2.0" sources."@xtuc/long-4.2.2" - sources."acorn-8.7.0" - sources."acorn-import-assertions-1.8.0" - sources."ajv-6.12.6" - sources."ajv-keywords-3.5.2" + sources."acorn-8.11.3" + sources."acorn-import-assertions-1.9.0" + sources."ajv-8.13.0" + sources."ajv-formats-2.1.1" + sources."ajv-keywords-5.1.0" sources."ansi-styles-4.3.0" - sources."array-union-2.1.0" sources."balanced-match-1.0.2" + sources."big.js-5.2.2" sources."brace-expansion-1.1.11" sources."braces-3.0.2" - sources."browserslist-4.19.1" + sources."browserslist-4.23.0" sources."buffer-from-1.1.2" - sources."caniuse-lite-1.0.30001296" + sources."caniuse-lite-1.0.30001615" sources."chalk-4.1.2" sources."chrome-trace-event-1.0.3" sources."clone-deep-4.0.1" sources."color-convert-2.0.1" sources."color-name-1.1.4" - sources."colorette-2.0.16" + sources."colorette-2.0.20" sources."commander-2.20.3" sources."concat-map-0.0.1" - sources."copy-webpack-plugin-9.1.0" + sources."copy-webpack-plugin-11.0.0" sources."cross-spawn-7.0.3" sources."dir-glob-3.0.1" - sources."electron-to-chromium-1.4.36" - sources."enhanced-resolve-5.8.3" - sources."envinfo-7.8.1" - sources."es-module-lexer-0.9.3" - sources."escalade-3.1.1" + sources."electron-to-chromium-1.4.754" + sources."emojis-list-3.0.0" + sources."enhanced-resolve-5.16.0" + sources."envinfo-7.13.0" + sources."es-module-lexer-1.5.2" + sources."esbuild-0.19.12" + sources."esbuild-loader-3.2.0" + sources."escalade-3.1.2" sources."eslint-scope-5.1.1" (sources."esrecurse-4.3.0" // { dependencies = [ @@ -1648,67 +1774,64 @@ in }) sources."estraverse-4.3.0" sources."events-3.3.0" - sources."execa-5.1.1" sources."fast-deep-equal-3.1.3" - (sources."fast-glob-3.2.7" // { + (sources."fast-glob-3.3.2" // { dependencies = [ sources."glob-parent-5.1.2" ]; }) sources."fast-json-stable-stringify-2.1.0" - sources."fastest-levenshtein-1.0.12" - sources."fastq-1.13.0" + sources."fastest-levenshtein-1.0.16" + sources."fastq-1.17.1" sources."fill-range-7.0.1" sources."find-up-4.1.0" + sources."flat-5.0.2" sources."fs.realpath-1.0.0" - sources."function-bind-1.1.1" - sources."get-stream-6.0.1" - sources."glob-7.2.0" + sources."function-bind-1.1.2" + sources."get-tsconfig-4.7.3" + sources."glob-7.2.3" sources."glob-parent-6.0.2" sources."glob-to-regexp-0.4.1" - sources."globby-11.0.4" - sources."graceful-fs-4.2.9" - sources."has-1.0.3" + sources."globby-13.2.2" + sources."graceful-fs-4.2.11" sources."has-flag-4.0.0" - sources."human-signals-2.1.0" - sources."ignore-5.2.0" + sources."hasown-2.0.2" + sources."ignore-5.3.1" sources."import-local-3.1.0" sources."inflight-1.0.6" sources."inherits-2.0.4" sources."interpret-1.4.0" - sources."is-core-module-2.8.1" + sources."is-core-module-2.13.1" sources."is-extglob-2.1.1" sources."is-glob-4.0.3" sources."is-number-7.0.0" sources."is-plain-object-2.0.4" - sources."is-stream-2.0.1" sources."isexe-2.0.0" sources."isobject-3.0.1" - (sources."jest-worker-27.4.6" // { + (sources."jest-worker-27.5.1" // { dependencies = [ sources."supports-color-8.1.1" ]; }) - sources."json-parse-better-errors-1.0.2" - sources."json-schema-traverse-0.4.1" + sources."json-parse-even-better-errors-2.3.1" + sources."json-schema-traverse-1.0.0" + sources."json5-2.2.3" sources."kind-of-6.0.3" - sources."loader-runner-4.2.0" + sources."loader-runner-4.3.0" + sources."loader-utils-2.0.4" sources."locate-path-5.0.0" sources."lru-cache-6.0.0" sources."merge-stream-2.0.0" sources."merge2-1.4.1" - sources."micromatch-4.0.4" - sources."mime-db-1.51.0" - sources."mime-types-2.1.34" - sources."mimic-fn-2.1.0" - sources."minimatch-3.0.4" - sources."minimist-1.2.5" + sources."micromatch-4.0.5" + sources."mime-db-1.52.0" + sources."mime-types-2.1.35" + sources."minimatch-3.1.2" + sources."minimist-1.2.8" sources."neo-async-2.6.2" - sources."node-releases-2.0.1" + sources."node-releases-2.0.14" sources."normalize-path-3.0.0" - sources."npm-run-path-4.0.1" sources."once-1.4.0" - sources."onetime-5.1.2" sources."p-limit-2.3.0" sources."p-locate-4.1.0" sources."p-try-2.2.0" @@ -1720,55 +1843,72 @@ in sources."picocolors-1.0.0" sources."picomatch-2.3.1" sources."pkg-dir-4.2.0" - sources."punycode-2.1.1" + sources."punycode-2.3.1" sources."queue-microtask-1.2.3" sources."randombytes-2.1.0" sources."rechoir-0.6.2" - sources."resolve-1.21.0" + sources."require-from-string-2.0.2" + sources."resolve-1.22.8" sources."resolve-cwd-3.0.0" sources."resolve-from-5.0.0" + sources."resolve-pkg-maps-1.0.0" sources."reusify-1.0.4" sources."run-parallel-1.2.0" sources."safe-buffer-5.2.1" - sources."schema-utils-3.1.1" - sources."semver-7.3.5" - sources."serialize-javascript-6.0.0" + sources."schema-utils-4.2.0" + sources."semver-7.6.0" + sources."serialize-javascript-6.0.2" sources."shallow-clone-3.0.1" sources."shebang-command-2.0.0" sources."shebang-regex-3.0.0" - sources."shelljs-0.8.4" - sources."shx-0.3.3" - sources."signal-exit-3.0.6" - sources."slash-3.0.0" + sources."shelljs-0.8.5" + sources."shx-0.3.4" + sources."slash-4.0.0" + sources."source-list-map-2.0.1" sources."source-map-0.6.1" sources."source-map-support-0.5.21" - sources."strip-final-newline-2.0.0" sources."supports-color-7.2.0" sources."supports-preserve-symlinks-flag-1.0.0" sources."tapable-2.2.1" - (sources."terser-5.10.0" // { + sources."terser-5.31.0" + (sources."terser-webpack-plugin-5.3.10" // { dependencies = [ - sources."source-map-0.7.3" + sources."ajv-6.12.6" + sources."ajv-keywords-3.5.2" + sources."json-schema-traverse-0.4.1" + sources."schema-utils-3.3.0" ]; }) - sources."terser-webpack-plugin-5.3.0" sources."to-regex-range-5.0.1" - sources."ts-loader-9.2.6" - sources."typescript-4.4.4" + (sources."ts-loader-9.5.1" // { + dependencies = [ + sources."source-map-0.7.4" + ]; + }) + sources."typescript-5.2.2" + sources."update-browserslist-db-1.0.14" sources."uri-js-4.4.1" - sources."watchpack-2.3.1" - sources."webpack-5.65.0" - (sources."webpack-cli-4.9.1" // { + sources."watchpack-2.4.1" + (sources."webpack-5.91.0" // { + dependencies = [ + sources."ajv-6.12.6" + sources."ajv-keywords-3.5.2" + sources."json-schema-traverse-0.4.1" + sources."schema-utils-3.3.0" + sources."webpack-sources-3.2.3" + ]; + }) + (sources."webpack-cli-5.1.4" // { dependencies = [ - sources."commander-7.2.0" - sources."interpret-2.2.0" - sources."rechoir-0.7.1" + sources."commander-10.0.1" + sources."interpret-3.1.1" + sources."rechoir-0.8.0" ]; }) - sources."webpack-merge-5.8.0" - sources."webpack-sources-3.2.2" + sources."webpack-merge-5.10.0" + sources."webpack-sources-1.4.3" sources."which-2.0.2" - sources."wildcard-2.0.0" + sources."wildcard-2.0.1" sources."wrappy-1.0.2" sources."yallist-4.0.0" ]; diff --git a/ci/pyright/package.json b/ci/pyright/package.json index 2e148b9c55..dea304b2b6 100644 --- a/ci/pyright/package.json +++ b/ci/pyright/package.json @@ -1,3 +1,3 @@ [ - { "pyright": "1.1.204" } + { "pyright": "1.1.361" } ] From 8640b50d81bc348bf8141b95ba24f969c2e324bb Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 29 Apr 2024 13:02:40 +0200 Subject: [PATCH 012/626] style(core): upgrade pyright to 1.1.361 [no changelog] --- core/embed/rust/src/ui/model_tr/layout.rs | 4 +- core/embed/rust/src/ui/model_tt/layout.rs | 4 +- core/mocks/generated/trezorui2.pyi | 8 +- core/src/apps/base.py | 8 +- core/src/apps/bitcoin/common.py | 3 +- core/src/apps/bitcoin/keychain.py | 2 +- core/src/apps/bitcoin/sign_tx/helpers.py | 88 +++++++++---------- core/src/apps/cardano/addresses.py | 2 +- core/src/apps/cardano/certificates.py | 2 +- .../helpers/hash_builder_collection.py | 2 +- core/src/apps/cardano/native_script.py | 2 +- core/src/apps/common/paths.py | 4 +- core/src/apps/common/request_pin.py | 2 +- core/src/apps/debug/__init__.py | 2 +- core/src/apps/solana/transaction/__init__.py | 2 +- core/src/storage/device.py | 4 +- core/src/trezor/log.py | 4 +- core/src/trezor/loop.py | 14 +-- core/src/trezor/sdcard.py | 6 +- core/src/trezor/ui/__init__.py | 6 +- core/src/trezor/ui/layouts/common.py | 4 +- core/src/trezor/ui/layouts/tr/__init__.py | 17 ++-- core/src/trezor/ui/layouts/tt/__init__.py | 8 +- core/src/trezor/utils.py | 8 +- tools/pyright_tool.py | 4 +- 25 files changed, 106 insertions(+), 104 deletions(-) diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 5753e44e6c..e76cf25d25 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -1877,7 +1877,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// button: str, /// info_button: str, # unused on TR - /// items: Iterable[Tuple[int, str]], + /// items: Iterable[Tuple[int, str | bytes]], /// verb_cancel: str | None = None, /// ) -> LayoutObj[UiResult]: /// """Confirm given items but with third button. Always single page @@ -1888,7 +1888,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// title: str, /// button: str, - /// items: Iterable[tuple[int, str]], + /// items: Iterable[tuple[int, str | bytes]], /// ) -> object: /// """Confirm long content with the possibility to go back from any page. /// Meant to be used with confirm_with_info.""" diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 2bcb177289..f874973ebc 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1947,7 +1947,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// button: str, /// info_button: str, - /// items: Iterable[tuple[int, str]], + /// items: Iterable[tuple[int, str | bytes]], /// ) -> LayoutObj[UiResult]: /// """Confirm given items but with third button. Always single page /// without scrolling.""" @@ -1957,7 +1957,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// title: str, /// button: str, - /// items: Iterable[tuple[int, str]], + /// items: Iterable[tuple[int, str | bytes]], /// ) -> LayoutObj[UiResult]: /// """Confirm long content with the possibility to go back from any page. /// Meant to be used with confirm_with_info.""" diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 00e6279a94..a7b1afc352 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -257,7 +257,7 @@ def confirm_with_info( title: str, button: str, info_button: str, # unused on TR - items: Iterable[Tuple[int, str]], + items: Iterable[Tuple[int, str | bytes]], verb_cancel: str | None = None, ) -> LayoutObj[UiResult]: """Confirm given items but with third button. Always single page @@ -269,7 +269,7 @@ def confirm_more( *, title: str, button: str, - items: Iterable[tuple[int, str]], + items: Iterable[tuple[int, str | bytes]], ) -> object: """Confirm long content with the possibility to go back from any page. Meant to be used with confirm_with_info.""" @@ -768,7 +768,7 @@ def confirm_with_info( title: str, button: str, info_button: str, - items: Iterable[tuple[int, str]], + items: Iterable[tuple[int, str | bytes]], ) -> LayoutObj[UiResult]: """Confirm given items but with third button. Always single page without scrolling.""" @@ -779,7 +779,7 @@ def confirm_more( *, title: str, button: str, - items: Iterable[tuple[int, str]], + items: Iterable[tuple[int, str | bytes]], ) -> LayoutObj[UiResult]: """Confirm long content with the possibility to go back from any page. Meant to be used with confirm_with_info.""" diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 057ffa8dc5..428d186b3c 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -418,7 +418,7 @@ def get_pinlocked_handler( if msg_type in workflow.ALLOW_WHILE_LOCKED: return orig_handler - async def wrapper(msg: wire.Msg) -> protobuf.MessageType: + async def wrapper(msg: protobuf.MessageType) -> protobuf.MessageType: await unlock_device() return await orig_handler(msg) @@ -442,7 +442,7 @@ def boot() -> None: MT = MessageType # local_cache_global # Register workflow handlers - for msg_type, handler in ( + for msg_type, handler in [ (MT.Initialize, handle_Initialize), (MT.GetFeatures, handle_GetFeatures), (MT.Cancel, handle_Cancel), @@ -453,8 +453,8 @@ def boot() -> None: (MT.UnlockPath, handle_UnlockPath), (MT.CancelAuthorization, handle_CancelAuthorization), (MT.SetBusy, handle_SetBusy), - ): - workflow_handlers.register(msg_type, handler) # type: ignore [cannot be assigned to type] + ]: + workflow_handlers.register(msg_type, handler) reload_settings_from_storage() if config.is_unlocked(): diff --git a/core/src/apps/bitcoin/common.py b/core/src/apps/bitcoin/common.py index d1d011db38..aa8d560597 100644 --- a/core/src/apps/bitcoin/common.py +++ b/core/src/apps/bitcoin/common.py @@ -46,7 +46,8 @@ class SigHashType(IntEnum): @classmethod def from_int(cls, sighash_type: int) -> "SigHashType": - for val in cls.__dict__.values(): # type: SigHashType + val: SigHashType + for val in cls.__dict__.values(): if val == sighash_type: return val raise ValueError("Unsupported sighash type.") diff --git a/core/src/apps/bitcoin/keychain.py b/core/src/apps/bitcoin/keychain.py index 136fb9b017..13c81d22d2 100644 --- a/core/src/apps/bitcoin/keychain.py +++ b/core/src/apps/bitcoin/keychain.py @@ -316,7 +316,7 @@ def _get_unlock_schemas( def with_keychain(func: HandlerWithCoinInfo[MsgOut]) -> Handler[MsgIn, MsgOut]: async def wrapper( - msg: MsgIn, + msg: BitcoinMessage, auth_msg: MessageType | None = None, ) -> MsgOut: coin = _get_coin_by_name(msg.coin_name) diff --git a/core/src/apps/bitcoin/sign_tx/helpers.py b/core/src/apps/bitcoin/sign_tx/helpers.py index 853be70176..a27ef12387 100644 --- a/core/src/apps/bitcoin/sign_tx/helpers.py +++ b/core/src/apps/bitcoin/sign_tx/helpers.py @@ -241,80 +241,80 @@ def confirm_dialog(self) -> Awaitable[Any]: return layout.confirm_multiple_accounts() -def confirm_output(output: TxOutput, coin: CoinInfo, amount_unit: AmountUnit, output_index: int, chunkify: bool) -> Awaitable[None]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmOutput(output, coin, amount_unit, output_index, chunkify)) +def confirm_output(output: TxOutput, coin: CoinInfo, amount_unit: AmountUnit, output_index: int, chunkify: bool) -> Awaitable[None]: # type: ignore [awaitable-return-type] + return (yield UiConfirmOutput(output, coin, amount_unit, output_index, chunkify)) # type: ignore [awaitable-return-type] -def confirm_decred_sstx_submission(output: TxOutput, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[None]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmDecredSSTXSubmission(output, coin, amount_unit)) +def confirm_decred_sstx_submission(output: TxOutput, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[None]: # type: ignore [awaitable-return-type] + return (yield UiConfirmDecredSSTXSubmission(output, coin, amount_unit)) # type: ignore [awaitable-return-type] -def should_show_payment_request_details(payment_req: TxAckPaymentRequest, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[bool]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmPaymentRequest(payment_req, coin, amount_unit)) +def should_show_payment_request_details(payment_req: TxAckPaymentRequest, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[bool]: # type: ignore [awaitable-return-type] + return (yield UiConfirmPaymentRequest(payment_req, coin, amount_unit)) # type: ignore [awaitable-return-type] -def confirm_replacement(description: str, txid: bytes) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmReplacement(description, txid)) +def confirm_replacement(description: str, txid: bytes) -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmReplacement(description, txid)) # type: ignore [awaitable-return-type] -def confirm_modify_output(txo: TxOutput, orig_txo: TxOutput, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmModifyOutput(txo, orig_txo, coin, amount_unit)) +def confirm_modify_output(txo: TxOutput, orig_txo: TxOutput, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmModifyOutput(txo, orig_txo, coin, amount_unit)) # type: ignore [awaitable-return-type] -def confirm_modify_fee(title: str, user_fee_change: int, total_fee_new: int, fee_rate: float, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] +def confirm_modify_fee(title: str, user_fee_change: int, total_fee_new: int, fee_rate: float, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[Any]: # type: ignore [awaitable-return-type] return ( - yield UiConfirmModifyFee( + yield UiConfirmModifyFee( # type: ignore [awaitable-return-type] title, user_fee_change, total_fee_new, fee_rate, coin, amount_unit ) ) -def confirm_total(spending: int, fee: int, fee_rate: float, coin: CoinInfo, amount_unit: AmountUnit, address_n: Bip32Path | None) -> Awaitable[None]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmTotal(spending, fee, fee_rate, coin, amount_unit, address_n)) +def confirm_total(spending: int, fee: int, fee_rate: float, coin: CoinInfo, amount_unit: AmountUnit, address_n: Bip32Path | None) -> Awaitable[None]: # type: ignore [awaitable-return-type] + return (yield UiConfirmTotal(spending, fee, fee_rate, coin, amount_unit, address_n)) # type: ignore [awaitable-return-type] -def confirm_joint_total(spending: int, total: int, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmJointTotal(spending, total, coin, amount_unit)) +def confirm_joint_total(spending: int, total: int, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmJointTotal(spending, total, coin, amount_unit)) # type: ignore [awaitable-return-type] -def confirm_feeoverthreshold(fee: int, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmFeeOverThreshold(fee, coin, amount_unit)) +def confirm_feeoverthreshold(fee: int, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmFeeOverThreshold(fee, coin, amount_unit)) # type: ignore [awaitable-return-type] -def confirm_change_count_over_threshold(change_count: int) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmChangeCountOverThreshold(change_count)) +def confirm_change_count_over_threshold(change_count: int) -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmChangeCountOverThreshold(change_count)) # type: ignore [awaitable-return-type] -def confirm_unverified_external_input() -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmUnverifiedExternalInput()) +def confirm_unverified_external_input() -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmUnverifiedExternalInput()) # type: ignore [awaitable-return-type] -def confirm_foreign_address(address_n: list) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmForeignAddress(address_n)) +def confirm_foreign_address(address_n: list) -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmForeignAddress(address_n)) # type: ignore [awaitable-return-type] -def confirm_nondefault_locktime(lock_time: int, lock_time_disabled: bool) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmNonDefaultLocktime(lock_time, lock_time_disabled)) +def confirm_nondefault_locktime(lock_time: int, lock_time_disabled: bool) -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmNonDefaultLocktime(lock_time, lock_time_disabled)) # type: ignore [awaitable-return-type] -def confirm_multiple_accounts() -> Awaitable[Any]: # type: ignore [awaitable-is-generator] - return (yield UiConfirmMultipleAccounts()) +def confirm_multiple_accounts() -> Awaitable[Any]: # type: ignore [awaitable-return-type] + return (yield UiConfirmMultipleAccounts()) # type: ignore [awaitable-return-type] -def request_tx_meta(tx_req: TxRequest, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[PrevTx]: # type: ignore [awaitable-is-generator] +def request_tx_meta(tx_req: TxRequest, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[PrevTx]: # type: ignore [awaitable-return-type] from trezor.messages import TxAckPrevMeta assert tx_req.details is not None tx_req.request_type = RequestType.TXMETA tx_req.details.tx_hash = tx_hash - ack = yield TxAckPrevMeta, tx_req + ack = yield TxAckPrevMeta, tx_req # type: ignore [awaitable-return-type] _clear_tx_request(tx_req) return _sanitize_tx_meta(ack.tx, coin) def request_tx_extra_data( tx_req: TxRequest, offset: int, size: int, tx_hash: bytes | None = None -) -> Awaitable[bytearray]: # type: ignore [awaitable-is-generator] +) -> Awaitable[bytearray]: # type: ignore [awaitable-return-type] from trezor.messages import TxAckPrevExtraData details = tx_req.details # local_cache_attribute @@ -324,12 +324,12 @@ def request_tx_extra_data( details.extra_data_offset = offset details.extra_data_len = size details.tx_hash = tx_hash - ack = yield TxAckPrevExtraData, tx_req + ack = yield TxAckPrevExtraData, tx_req # type: ignore [awaitable-return-type] _clear_tx_request(tx_req) return ack.tx.extra_data_chunk -def request_tx_input(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[TxInput]: # type: ignore [awaitable-is-generator] +def request_tx_input(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[TxInput]: # type: ignore [awaitable-return-type] from trezor.messages import TxAckInput assert tx_req.details is not None @@ -339,24 +339,24 @@ def request_tx_input(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | else: tx_req.request_type = RequestType.TXINPUT tx_req.details.request_index = i - ack = yield TxAckInput, tx_req + ack = yield TxAckInput, tx_req # type: ignore [awaitable-return-type] _clear_tx_request(tx_req) return _sanitize_tx_input(ack.tx.input, coin) -def request_tx_prev_input(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[PrevInput]: # type: ignore [awaitable-is-generator] +def request_tx_prev_input(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[PrevInput]: # type: ignore [awaitable-return-type] from trezor.messages import TxAckPrevInput assert tx_req.details is not None tx_req.request_type = RequestType.TXINPUT tx_req.details.request_index = i tx_req.details.tx_hash = tx_hash - ack = yield TxAckPrevInput, tx_req + ack = yield TxAckPrevInput, tx_req # type: ignore [awaitable-return-type] _clear_tx_request(tx_req) return _sanitize_tx_prev_input(ack.tx.input, coin) -def request_tx_output(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[TxOutput]: # type: ignore [awaitable-is-generator] +def request_tx_output(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[TxOutput]: # type: ignore [awaitable-return-type] from trezor.messages import TxAckOutput assert tx_req.details is not None @@ -366,38 +366,38 @@ def request_tx_output(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes else: tx_req.request_type = RequestType.TXOUTPUT tx_req.details.request_index = i - ack = yield TxAckOutput, tx_req + ack = yield TxAckOutput, tx_req # type: ignore [awaitable-return-type] _clear_tx_request(tx_req) return _sanitize_tx_output(ack.tx.output, coin) -def request_tx_prev_output(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[PrevOutput]: # type: ignore [awaitable-is-generator] +def request_tx_prev_output(tx_req: TxRequest, i: int, coin: CoinInfo, tx_hash: bytes | None = None) -> Awaitable[PrevOutput]: # type: ignore [awaitable-return-type] from trezor.messages import TxAckPrevOutput assert tx_req.details is not None tx_req.request_type = RequestType.TXOUTPUT tx_req.details.request_index = i tx_req.details.tx_hash = tx_hash - ack = yield TxAckPrevOutput, tx_req + ack = yield TxAckPrevOutput, tx_req # type: ignore [awaitable-return-type] _clear_tx_request(tx_req) # return sanitize_tx_prev_output(ack.tx, coin) # no sanitize is required return ack.tx.output -def request_payment_req(tx_req: TxRequest, i: int) -> Awaitable[TxAckPaymentRequest]: # type: ignore [awaitable-is-generator] +def request_payment_req(tx_req: TxRequest, i: int) -> Awaitable[TxAckPaymentRequest]: # type: ignore [awaitable-return-type] from trezor.messages import TxAckPaymentRequest assert tx_req.details is not None tx_req.request_type = RequestType.TXPAYMENTREQ tx_req.details.request_index = i - ack = yield TxAckPaymentRequest, tx_req + ack = yield TxAckPaymentRequest, tx_req # type: ignore [awaitable-return-type] _clear_tx_request(tx_req) return _sanitize_payment_req(ack) -def request_tx_finish(tx_req: TxRequest) -> Awaitable[None]: # type: ignore [awaitable-is-generator] +def request_tx_finish(tx_req: TxRequest) -> Awaitable[None]: # type: ignore [awaitable-return-type] tx_req.request_type = RequestType.TXFINISHED - yield None, tx_req + yield None, tx_req # type: ignore [awaitable-return-type] _clear_tx_request(tx_req) diff --git a/core/src/apps/cardano/addresses.py b/core/src/apps/cardano/addresses.py index 2bab218340..917172c4ea 100644 --- a/core/src/apps/cardano/addresses.py +++ b/core/src/apps/cardano/addresses.py @@ -129,7 +129,7 @@ def _validate_address_parameters_structure( script_staking_hash = parameters.script_staking_hash # local_cache_attribute CAT = CardanoAddressType # local_cache_global - fields_to_be_empty: dict[CAT, tuple[Any, ...]] = { + fields_to_be_empty: dict[CardanoAddressType, tuple[Any, ...]] = { CAT.BASE: ( certificate_pointer, script_payment_hash, diff --git a/core/src/apps/cardano/certificates.py b/core/src/apps/cardano/certificates.py index 2c116860c0..bd3a354310 100644 --- a/core/src/apps/cardano/certificates.py +++ b/core/src/apps/cardano/certificates.py @@ -70,7 +70,7 @@ def _validate_structure(certificate: messages.CardanoTxCertificate) -> None: pool_parameters = certificate.pool_parameters # local_cache_attribute CCT = CardanoCertificateType # local_cache_global - fields_to_be_empty: dict[CCT, tuple[Any, ...]] = { + fields_to_be_empty: dict[CardanoCertificateType, tuple[Any, ...]] = { CCT.STAKE_REGISTRATION: (pool, pool_parameters), CCT.STAKE_DELEGATION: (pool_parameters,), CCT.STAKE_DEREGISTRATION: (pool, pool_parameters), diff --git a/core/src/apps/cardano/helpers/hash_builder_collection.py b/core/src/apps/cardano/helpers/hash_builder_collection.py index b9344c1d59..430a7426bc 100644 --- a/core/src/apps/cardano/helpers/hash_builder_collection.py +++ b/core/src/apps/cardano/helpers/hash_builder_collection.py @@ -23,7 +23,7 @@ def __init__(self, size: int) -> None: self.size = size self.remaining = size self.hash_fn: HashContext | None = None - self.parent: "HashBuilderCollection" | None = None + self.parent: "HashBuilderCollection | None" = None self.has_unfinished_child = False def start(self, hash_fn: HashContext) -> "HashBuilderCollection": diff --git a/core/src/apps/cardano/native_script.py b/core/src/apps/cardano/native_script.py index c8e12df7f2..c17baeaefe 100644 --- a/core/src/apps/cardano/native_script.py +++ b/core/src/apps/cardano/native_script.py @@ -73,7 +73,7 @@ def _validate_native_script_structure(script: messages.CardanoNativeScript) -> N invalid_hereafter = script.invalid_hereafter # local_cache_attribute CNST = CardanoNativeScriptType # local_cache_global - fields_to_be_empty: dict[CNST, tuple[Any, ...]] = { + fields_to_be_empty: dict[CardanoNativeScriptType, tuple[Any, ...]] = { CNST.PUB_KEY: ( scripts, required_signatures_count, diff --git a/core/src/apps/common/paths.py b/core/src/apps/common/paths.py index 4fc9712263..fb3a32825b 100644 --- a/core/src/apps/common/paths.py +++ b/core/src/apps/common/paths.py @@ -9,7 +9,7 @@ from typing_extensions import Protocol - Bip32Path = Sequence[int] + Bip32Path = list[int] Slip21Path = Sequence[bytes] PathType = TypeVar("PathType", Bip32Path, Slip21Path, contravariant=True) @@ -290,7 +290,7 @@ def __repr__(self) -> str: # Which in practice it is, the only non-Collection is Interval. # But we're not going to introduce an additional type requirement # for the sake of __repr__ that doesn't exist in production anyway - collection: Collection[int] = component # type: ignore [Expression of type "Container[int]" cannot be assigned to declared type "Collection[int]"] + collection: Collection[int] = component # type: ignore [Expression of type "Container[int]" is incompatible with declared type "Collection[int]"] component_str = ",".join(str(unharden(i)) for i in collection) if len(collection) > 1: component_str = "[" + component_str + "]" diff --git a/core/src/apps/common/request_pin.py b/core/src/apps/common/request_pin.py index fd5ad0d0ab..95afa1b8fb 100644 --- a/core/src/apps/common/request_pin.py +++ b/core/src/apps/common/request_pin.py @@ -118,7 +118,7 @@ async def verify_user_pin( raise RuntimeError while retry: - pin = await request_pin_on_device( # type: ignore ["request_pin_on_device" is possibly unbound] + pin = await request_pin_on_device( TR.pin__enter, config.get_pin_rem(), allow_cancel, wrong_pin=True ) if config.unlock(pin, salt): diff --git a/core/src/apps/debug/__init__.py b/core/src/apps/debug/__init__.py index 1e2917183a..8b2f18774c 100644 --- a/core/src/apps/debug/__init__.py +++ b/core/src/apps/debug/__init__.py @@ -129,7 +129,7 @@ async def get_layout_change_content() -> list[str]: async def return_layout_change() -> None: content_tokens = await get_layout_change_content() - assert DEBUG_CONTEXT is not None + assert isinstance(DEBUG_CONTEXT, context.Context) if storage.layout_watcher is LAYOUT_WATCHER_LAYOUT: await DEBUG_CONTEXT.write(DebugLinkLayout(tokens=content_tokens)) else: diff --git a/core/src/apps/solana/transaction/__init__.py b/core/src/apps/solana/transaction/__init__.py index d09b9c72be..21e2a1cde1 100644 --- a/core/src/apps/solana/transaction/__init__.py +++ b/core/src/apps/solana/transaction/__init__.py @@ -169,7 +169,7 @@ def _get_combined_accounts(self) -> list[Account]: def _create_instructions(self) -> None: # Instructions reference accounts by index in this combined list. combined_accounts = ( - self.addresses # type: ignore [Operator "+" not supported for types "list[Address]" and "list[AddressReference]"] + self.addresses + self.address_lookup_tables_rw_addresses + self.address_lookup_tables_ro_addresses ) diff --git a/core/src/storage/device.py b/core/src/storage/device.py index cf6ba0e929..215acc39c8 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -132,7 +132,7 @@ def get_backup_type() -> BackupType: ): # Invalid backup type raise RuntimeError - return backup_type # type: ignore [int-into-enum] + return backup_type def is_passphrase_enabled() -> bool: @@ -304,7 +304,7 @@ def safety_check_level() -> StorageSafetyCheckLevel: if level not in (SAFETY_CHECK_LEVEL_STRICT, SAFETY_CHECK_LEVEL_PROMPT): return _DEFAULT_SAFETY_CHECK_LEVEL else: - return level # type: ignore [int-into-enum] + return level # do not use this function directly, see apps.common.safety_checks instead diff --git a/core/src/trezor/log.py b/core/src/trezor/log.py index 4f666e30ff..4c3aa65d05 100644 --- a/core/src/trezor/log.py +++ b/core/src/trezor/log.py @@ -60,11 +60,11 @@ def exception(name: str, exc: BaseException) -> None: name, _DEBUG, "ui.Result: %s", - exc.value, # type: ignore[Cannot access member "value" for type "BaseException"] + exc.value, # type: ignore[Cannot access attribute "value" for class "BaseException"] ) elif exc.__class__.__name__ == "Cancelled": _log(name, _DEBUG, "ui.Cancelled") else: _log(name, _ERROR, "exception:") # since mypy 0.770 we cannot override sys, so print_exception is unknown - sys.print_exception(exc) # type: ignore ["print_exception" is not a known member of module] + sys.print_exception(exc) # type: ignore ["print_exception" is not a known attribute of module] diff --git a/core/src/trezor/loop.py b/core/src/trezor/loop.py index d631e54ae6..54f85eddeb 100644 --- a/core/src/trezor/loop.py +++ b/core/src/trezor/loop.py @@ -295,7 +295,7 @@ def handle(self, task: Task) -> None: # child is a layout -- type-wise, it is an Awaitable, but # implementation-wise it is an Iterable and we know that its __iter__ # will return a Generator. - child_task = child.__iter__() # type: ignore [Cannot access member "__iter__" for type "Awaitable[Unknown]";;Cannot access member "__iter__" for type "Coroutine[Unknown, Unknown, Unknown]"] + child_task = child.__iter__() # type: ignore [Cannot access attribute "__iter__" for class "Awaitable[Unknown]";;Cannot access attribute "__iter__" for class "Coroutine[Unknown, Unknown, Unknown]"] schedule(child_task, None, None, finalizer) scheduled.append(child_task) @@ -319,7 +319,7 @@ def _finish(self, task: Task, result: Any) -> None: self.exit(task) schedule(self.callback, result) - def __iter__(self) -> Task: # type: ignore [awaitable-is-generator] + def __iter__(self) -> Task: try: return (yield self) except: # noqa: E722 @@ -383,20 +383,20 @@ def __init__(self) -> None: self.putters: list[tuple[Task | None, Any]] = [] self.takers: list[Task] = [] - def put(self, value: Any) -> Awaitable[None]: # type: ignore [awaitable-is-generator] + def put(self, value: Any) -> Awaitable[None]: # type: ignore [awaitable-return-type] put = chan.Put(self, value) try: - return (yield put) + return (yield put) # type: ignore [awaitable-return-type] except: # noqa: E722 entry = (put.task, value) if entry in self.putters: self.putters.remove(entry) raise - def take(self) -> Awaitable[Any]: # type: ignore [awaitable-is-generator] + def take(self) -> Awaitable[Any]: # type: ignore [awaitable-return-type] take = chan.Take(self) try: - return (yield take) + return (yield take) # type: ignore [awaitable-return-type] except: # noqa: E722 if take.task in self.takers: self.takers.remove(take.task) @@ -493,7 +493,7 @@ def _finalize(self, task: Task, value: Any) -> None: if self.finalizer_callback is not None: self.finalizer_callback(self) - def __iter__(self) -> Task: # type: ignore [awaitable-is-generator] + def __iter__(self) -> Task: if self.finished: # exit immediately if we already have a return value if isinstance(self.return_value, BaseException): diff --git a/core/src/trezor/sdcard.py b/core/src/trezor/sdcard.py index 3a72402330..39ba567b71 100644 --- a/core/src/trezor/sdcard.py +++ b/core/src/trezor/sdcard.py @@ -2,8 +2,8 @@ from trezorio import fatfs, sdcard HAVE_SDCARD = True - is_present = sdcard.is_present # type: ignore [obscured-by-same-name] - capacity = sdcard.capacity # type: ignore [obscured-by-same-name] + is_present = sdcard.is_present + capacity = sdcard.capacity except Exception: HAVE_SDCARD = False @@ -27,7 +27,7 @@ def capacity() -> int: class FilesystemWrapper: - _INSTANCE: "FilesystemWrapper" | None = None + _INSTANCE: "FilesystemWrapper | None" = None def __init__(self, mounted: bool) -> None: if not HAVE_SDCARD: diff --git a/core/src/trezor/ui/__init__.py b/core/src/trezor/ui/__init__.py index 109ed105b2..a8580a96cb 100644 --- a/core/src/trezor/ui/__init__.py +++ b/core/src/trezor/ui/__init__.py @@ -45,7 +45,7 @@ def refresh() -> None: display.refresh() else: - refresh = display.refresh # type: ignore [obscured-by-same-name] + refresh = display.refresh # in both debug and production, emulator needs to draw the screen explicitly @@ -188,6 +188,6 @@ def read_content_into(self, content_store: list[str]) -> None: content_store.append(self.__class__.__name__) -def wait_until_layout_is_running() -> Awaitable[None]: # type: ignore [awaitable-is-generator] +def wait_until_layout_is_running() -> Awaitable[None]: # type: ignore [awaitable-return-type] while not layout_chan.takers: - yield + yield # type: ignore [awaitable-return-type] diff --git a/core/src/trezor/ui/layouts/common.py b/core/src/trezor/ui/layouts/common.py index 73a200cea3..f16dcc16e8 100644 --- a/core/src/trezor/ui/layouts/common.py +++ b/core/src/trezor/ui/layouts/common.py @@ -35,8 +35,8 @@ async def interact( br_code: ButtonRequestType = ButtonRequestType.Other, ) -> T: pages = None - if hasattr(layout, "page_count") and layout.page_count() > 1: # type: ignore [Cannot access member "page_count" for type "LayoutType"] + if hasattr(layout, "page_count") and layout.page_count() > 1: # type: ignore [Cannot access attribute "page_count" for class "LayoutType"] # We know for certain how many pages the layout will have - pages = layout.page_count() # type: ignore [Cannot access member "page_count" for type "LayoutType"] + pages = layout.page_count() # type: ignore [Cannot access attribute "page_count" for class "LayoutType"] await button_request(br_type, br_code, pages) return await context.wait(layout) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index f99cc9487c..844f6a2860 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -221,7 +221,7 @@ def _first_paint(self) -> None: notify_layout_change(self, event_id) - def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is-generator] + def handle_input_and_rendering(self) -> loop.Task: from trezor import workflow button = loop.wait(io.BUTTON) @@ -237,7 +237,7 @@ def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is raise ui.Result(msg) self._paint() - def handle_timers(self) -> loop.Task: # type: ignore [awaitable-is-generator] + def handle_timers(self) -> loop.Task: while True: # Using `yield` instead of `await` to avoid allocations. token = yield self.timer @@ -849,7 +849,7 @@ async def _confirm_ask_pagination( ) -> None: paginated: RustLayout[trezorui2.UiResult] | None = None # TODO: make should_show_more/confirm_more accept bytes directly - if isinstance(data, bytes): + if isinstance(data, (bytes, bytearray, memoryview)): from ubinascii import hexlify data = hexlify(data).decode() @@ -939,13 +939,14 @@ def confirm_properties( from ubinascii import hexlify def handle_bytes(prop: PropertyType): - if isinstance(prop[1], bytes): - return (prop[0], hexlify(prop[1]).decode(), True) + key, value = prop + if isinstance(value, (bytes, bytearray, memoryview)): + return (key, hexlify(value).decode(), True) else: # When there is not space in the text, taking it as data # to not include hyphens - is_data = prop[1] and " " not in prop[1] - return (prop[0], prop[1], is_data) + is_data = value and " " not in value + return (key, value, is_data) return raise_if_not_confirmed( interact( @@ -1407,7 +1408,7 @@ def show_error_popup( time_ms=timeout_ms, ) ) - return layout # type: ignore [Expression of type "RustLayout[UiResult]" cannot be assigned to return type "Awaitable[None]"] + return layout # type: ignore [Expression of type "RustLayout[UiResult]" is incompatible with return type "Awaitable[None]"] def request_passphrase_on_host() -> None: diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 919f9a9625..34b4e603ba 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -193,7 +193,7 @@ def _first_paint(self) -> None: # Turn the brightness on again. ui.backlight_fade(self.BACKLIGHT_LEVEL) - def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is-generator] + def handle_input_and_rendering(self) -> loop.Task: from trezor import workflow touch = loop.wait(io.TOUCH) @@ -209,7 +209,7 @@ def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is raise ui.Result(msg) self._paint() - def handle_timers(self) -> loop.Task: # type: ignore [awaitable-is-generator] + def handle_timers(self) -> loop.Task: while True: # Using `yield` instead of `await` to avoid allocations. token = yield self.timer @@ -691,7 +691,7 @@ async def should_show_payment_request_details( async def should_show_more( title: str, - para: Iterable[tuple[int, str]], + para: Iterable[tuple[int, str | bytes]], button_text: str | None = None, br_type: str = "should_show_more", br_code: ButtonRequestType = BR_TYPE_OTHER, @@ -1397,7 +1397,7 @@ def show_error_popup( allow_cancel=False, ) ) - return layout # type: ignore [Expression of type "RustLayout[UiResult]" cannot be assigned to return type "Awaitable[None]"] + return layout # type: ignore [Expression of type "RustLayout[UiResult]" is incompatible with return type "Awaitable[None]"] def request_passphrase_on_host() -> None: diff --git a/core/src/trezor/utils.py b/core/src/trezor/utils.py index 2ee5b05f96..e3ca5be872 100644 --- a/core/src/trezor/utils.py +++ b/core/src/trezor/utils.py @@ -302,14 +302,14 @@ def get(self) -> int: return byte -def obj_eq(self: Any, __o: Any) -> bool: +def obj_eq(__self: Any, __o: Any) -> bool: """ Compares object contents. """ - if self.__class__ is not __o.__class__: + if __self.__class__ is not __o.__class__: return False - assert not hasattr(self, "__slots__") - return self.__dict__ == __o.__dict__ + assert not hasattr(__self, "__slots__") + return __self.__dict__ == __o.__dict__ def obj_repr(self: Any) -> str: diff --git a/tools/pyright_tool.py b/tools/pyright_tool.py index 8af0beac0a..535fecb248 100755 --- a/tools/pyright_tool.py +++ b/tools/pyright_tool.py @@ -141,9 +141,9 @@ class PyrightOffIgnore: # Allowing for more readable ignore of common problems, with an easy-to-understand alias ALIASES: dict[str, str] = { - "awaitable-is-generator": 'Return type of generator function must be "Generator" or "Iterable"', + "awaitable-return-type": 'Return type of generator function must be compatible with "Generator', "obscured-by-same-name": "is obscured by a declaration of the same name", - "int-into-enum": 'Expression of type "int.*" cannot be assigned to return type ".*"', + "int-into-enum": 'Expression of type "int.*" is incompatible with return type ".*"', } From a5aa51563151cf2b4644c68a68f06a60b8e329e6 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 2 May 2024 14:49:49 +0200 Subject: [PATCH 013/626] style(python): upgrade to pyright 1.1.361 had to add a typestub for PIL due to https://github.com/microsoft/pyright/issues/7832 We should remove it if that is either fixed or, if I fail to convince Eric, after the relevant type information is added to Pillow [no changelog] --- python/pyrightconfig.json | 5 +- python/src/trezorlib/cli/__init__.py | 2 +- python/src/trezorlib/cli/ethereum.py | 2 +- python/src/trezorlib/cli/trezorctl.py | 4 +- python/src/trezorlib/client.py | 2 +- python/src/trezorlib/definitions.py | 2 +- python/src/trezorlib/mapping.py | 6 +- python/src/trezorlib/protobuf.py | 5 +- python/src/trezorlib/qt/pinmatrix.py | 2 +- python/src/trezorlib/tools.py | 6 +- python/src/trezorlib/transport/webusb.py | 2 +- python/stubs/PIL/Image.pyi | 1455 ++++++++++++++++++++++ python/tools/pybridge.py | 2 +- python/tools/trezorctl_script_client.py | 14 +- 14 files changed, 1488 insertions(+), 21 deletions(-) create mode 100644 python/stubs/PIL/Image.pyi diff --git a/python/pyrightconfig.json b/python/pyrightconfig.json index a6257e044d..397dc629e3 100644 --- a/python/pyrightconfig.json +++ b/python/pyrightconfig.json @@ -4,10 +4,13 @@ "tools", "helper-scripts" ], + "stubPath": "./stubs", "pythonVersion": "3.8", "typeCheckingMode": "basic", "reportMissingImports": false, "reportUntypedFunctionDecorator": true, "reportUntypedClassDecorator": true, - "reportMissingParameterType": true + "reportMissingParameterType": true, + "useLibraryCodeForTypes": false, + "reportMissingModuleSource": false } diff --git a/python/src/trezorlib/cli/__init__.py b/python/src/trezorlib/cli/__init__.py index 91cd0ce1e3..050e3788f7 100644 --- a/python/src/trezorlib/cli/__init__.py +++ b/python/src/trezorlib/cli/__init__.py @@ -158,7 +158,7 @@ def trezorctl_command_with_client( # the return type of @click.pass_obj is improperly specified and pyright doesn't # understand that it converts f(obj, *args, **kwargs) to f(*args, **kwargs) - return trezorctl_command_with_client # type: ignore [cannot be assigned to return type] + return trezorctl_command_with_client # type: ignore [is incompatible with return type] class AliasedGroup(click.Group): diff --git a/python/src/trezorlib/cli/ethereum.py b/python/src/trezorlib/cli/ethereum.py index 38b536bceb..e5aac60720 100644 --- a/python/src/trezorlib/cli/ethereum.py +++ b/python/src/trezorlib/cli/ethereum.py @@ -94,7 +94,7 @@ def _amount_to_int( if value.isdigit(): return int(value) try: - number, unit = re.match(r"^(\d+(?:.\d+)?)([a-z]+)", value).groups() # type: ignore ["groups" is not a known member of "None"] + number, unit = re.match(r"^(\d+(?:.\d+)?)([a-z]+)", value).groups() # type: ignore ["groups" is not a known attribute of "None"] scale = ETHER_UNITS[unit] decoded_number = Decimal(number) return int(decoded_number * scale) diff --git a/python/src/trezorlib/cli/trezorctl.py b/python/src/trezorlib/cli/trezorctl.py index 611cbf1a74..2e030ed931 100755 --- a/python/src/trezorlib/cli/trezorctl.py +++ b/python/src/trezorlib/cli/trezorctl.py @@ -119,7 +119,7 @@ def get_command(self, ctx: click.Context, cmd_name: str) -> Optional[click.Comma command, subcommand = cmd_name.split("-", maxsplit=1) # get_command can return None and the following line will fail. # We don't care, we ignore the exception anyway. - return super().get_command(ctx, command).get_command(ctx, subcommand) # type: ignore ["get_command" is not a known member of "None";;Cannot access member "get_command" for type "Command"] + return super().get_command(ctx, command).get_command(ctx, subcommand) # type: ignore [get_command] except Exception: pass @@ -143,7 +143,7 @@ def set_result_callback(self) -> Callable[[F], F]: from click import __version__ as click_version if click_version.startswith("7."): - return super().resultcallback() # type: ignore [Cannot access member] + return super().resultcallback() # type: ignore [Cannot access attribute] else: return super().result_callback() diff --git a/python/src/trezorlib/client.py b/python/src/trezorlib/client.py index 8a7870486d..7fd6dae32b 100644 --- a/python/src/trezorlib/client.py +++ b/python/src/trezorlib/client.py @@ -123,7 +123,7 @@ def __init__( LOG.info(f"creating client instance for device: {transport.get_path()}") # Here, self.model could be set to None. Unless _init_device is False, it will # get correctly reconfigured as part of the init_device flow. - self.model = model # type: ignore [Type "None" cannot be assigned] + self.model = model # type: ignore ["None" is incompatible with "TrezorModel"] if self.model: self.mapping = self.model.default_mapping else: diff --git a/python/src/trezorlib/definitions.py b/python/src/trezorlib/definitions.py index 2960678c3f..94672e38e3 100644 --- a/python/src/trezorlib/definitions.py +++ b/python/src/trezorlib/definitions.py @@ -139,7 +139,7 @@ def fetch_path(self, *components: str) -> t.Optional[bytes]: inner_name = "/".join(components) LOG.info("Extracting definition from %s:%s", self.archive.name, inner_name) try: - return self.archive.extractfile(inner_name).read() # type: ignore [not a known member] + return self.archive.extractfile(inner_name).read() # type: ignore [not a known attribute] except Exception: LOG.info("Requested definition at %s was not found", inner_name) return None diff --git a/python/src/trezorlib/mapping.py b/python/src/trezorlib/mapping.py index e8fb60edb5..d50324d586 100644 --- a/python/src/trezorlib/mapping.py +++ b/python/src/trezorlib/mapping.py @@ -14,10 +14,14 @@ # You should have received a copy of the License along with this library. # If not, see . +from __future__ import annotations + import io from types import ModuleType from typing import Dict, Optional, Tuple, Type, TypeVar +from typing_extensions import Self + from . import messages, protobuf T = TypeVar("T") @@ -71,7 +75,7 @@ def decode(self, msg_wire_type: int, msg_bytes: bytes) -> protobuf.MessageType: return protobuf.load_message(buf, cls) @classmethod - def from_module(cls: Type[T], module: ModuleType) -> T: + def from_module(cls, module: ModuleType) -> Self: """Generate a mapping from a module. The module must have a `MessageType` enum that specifies individual wire types. diff --git a/python/src/trezorlib/protobuf.py b/python/src/trezorlib/protobuf.py index e6fdcdbf0e..f0d407191a 100644 --- a/python/src/trezorlib/protobuf.py +++ b/python/src/trezorlib/protobuf.py @@ -183,9 +183,9 @@ def value_fits(self, value: int) -> bool: class _MessageTypeMeta(type): def __init__(cls, name: str, bases: tuple, d: dict) -> None: - super().__init__(name, bases, d) # type: ignore [Expected 1 positional argument] + super().__init__(name, bases, d) if name != "MessageType": - cls.__init__ = MessageType.__init__ # type: ignore ["__init__" is obscured by a declaration of the same name;;Cannot assign member "__init__" for type "_MessageTypeMeta"] + cls.__init__ = MessageType.__init__ # type: ignore [Parameter] class MessageType(metaclass=_MessageTypeMeta): @@ -209,6 +209,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: for field, val in zip_longest(self.FIELDS.values(), args, fillvalue=MISSING): if field is MISSING: raise TypeError("too many positional arguments") + assert isinstance(field, Field) if field.name in kwargs and val is not MISSING: # both *args and **kwargs specify the same thing raise TypeError(f"got multiple values for argument '{field.name}'") diff --git a/python/src/trezorlib/qt/pinmatrix.py b/python/src/trezorlib/qt/pinmatrix.py index 09c757e2dd..06b6b650e8 100644 --- a/python/src/trezorlib/qt/pinmatrix.py +++ b/python/src/trezorlib/qt/pinmatrix.py @@ -158,7 +158,7 @@ def clicked() -> None: if QT_VERSION_STR >= "5": ok.clicked.connect(clicked) elif QT_VERSION_STR >= "4": - QObject.connect(ok, SIGNAL("clicked()"), clicked) # type: ignore ["QObject" is possibly unbound;;"SIGNAL" is possibly unbound] + QObject.connect(ok, SIGNAL("clicked()"), clicked) else: raise RuntimeError("Unsupported Qt version") diff --git a/python/src/trezorlib/tools.py b/python/src/trezorlib/tools.py index 259a99a948..4fd1558ec2 100644 --- a/python/src/trezorlib/tools.py +++ b/python/src/trezorlib/tools.py @@ -42,13 +42,15 @@ from typing_extensions import Concatenate, ParamSpec - from .client import TrezorClient + from . import client from .protobuf import MessageType MT = TypeVar("MT", bound=MessageType) P = ParamSpec("P") R = TypeVar("R") + TrezorClient = TypeVar("TrezorClient", bound=client.TrezorClient) + HARDENED_FLAG = 1 << 31 Address = NewType("Address", List[int]) @@ -154,7 +156,7 @@ def b58decode_int(v: str) -> int: for char in v: decimal = decimal * __b58base + __b58chars.index(char) except KeyError: - raise ValueError(f"Invalid character {char!r}") from None # type: ignore [possibly unbound] + raise ValueError(f"Invalid character {char!r}") from None return decimal diff --git a/python/src/trezorlib/transport/webusb.py b/python/src/trezorlib/transport/webusb.py index d733ce6669..1b60df61bd 100644 --- a/python/src/trezorlib/transport/webusb.py +++ b/python/src/trezorlib/transport/webusb.py @@ -124,7 +124,7 @@ def enumerate( if cls.context is None: cls.context = usb1.USBContext() cls.context.open() - atexit.register(cls.context.close) # type: ignore [Param spec "_P@register" has no bound value] + atexit.register(cls.context.close) if models is None: models = TREZORS diff --git a/python/stubs/PIL/Image.pyi b/python/stubs/PIL/Image.pyi new file mode 100644 index 0000000000..3426ce1b9f --- /dev/null +++ b/python/stubs/PIL/Image.pyi @@ -0,0 +1,1455 @@ +""" +This type stub file was generated by pyright. +""" + +import abc +from collections.abc import Callable, MutableMapping +from enum import IntEnum +from typing import Any, IO, TYPE_CHECKING + +from PIL import ImageFile + +class Transpose(IntEnum): + FLIP_LEFT_RIGHT = ... + FLIP_TOP_BOTTOM = ... + ROTATE_90 = ... + ROTATE_180 = ... + ROTATE_270 = ... + TRANSPOSE = ... + TRANSVERSE = ... + +class Transform(IntEnum): + AFFINE = ... + EXTENT = ... + PERSPECTIVE = ... + QUAD = ... + MESH = ... + +class Resampling(IntEnum): + NEAREST = ... + BOX = ... + BILINEAR = ... + HAMMING = ... + BICUBIC = ... + LANCZOS = ... + +_filters_support = ... + +class Dither(IntEnum): + NONE = ... + ORDERED = ... + RASTERIZE = ... + FLOYDSTEINBERG = ... + +class Palette(IntEnum): + WEB = ... + ADAPTIVE = ... + +class Quantize(IntEnum): + MEDIANCUT = ... + MAXCOVERAGE = ... + FASTOCTREE = ... + LIBIMAGEQUANT = ... + +class Image: + """ + This class represents an image object. To create + :py:class:`~PIL.Image.Image` objects, use the appropriate factory + functions. There's hardly ever any reason to call the Image constructor + directly. + + * :py:func:`~PIL.Image.open` + * :py:func:`~PIL.Image.new` + * :py:func:`~PIL.Image.frombytes` + """ + + format: str | None = ... + format_description: str | None = ... + _close_exclusive_fp_after_loading = ... + def __init__(self) -> None: ... + @property + def width(self) -> int: ... + @property + def height(self) -> int: ... + @property + def size(self) -> tuple[int, int]: ... + @property + def mode(self): # -> str | Any: + ... + + def __enter__(self): # -> Self: + ... + + def __exit__(self, *args): # -> None: + ... + + def close(self) -> None: + """ + Closes the file pointer, if possible. + + This operation will destroy the image core and release its memory. + The image data will be unusable afterward. + + This function is required to close images that have multiple frames or + have not had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See :ref:`file-handling` for + more information. + """ + ... + + def __eq__(self, other) -> bool: ... + def __repr__(self) -> str: ... + @property + def __array_interface__(self): # -> dict[str, int]: + ... + + def __getstate__(self): # -> list[Any]: + ... + + def __setstate__(self, state) -> None: ... + def tobytes(self, encoder_name: str = ..., *args) -> bytes: + """ + Return image as a bytes object. + + .. warning:: + + This method returns the raw image data from the internal + storage. For compressed image data (e.g. PNG, JPEG) use + :meth:`~.save`, with a BytesIO parameter for in-memory + data. + + :param encoder_name: What encoder to use. The default is to + use the standard "raw" encoder. + + A list of C encoders can be seen under + codecs section of the function array in + :file:`_imaging.c`. Python encoders are + registered within the relevant plugins. + :param args: Extra arguments to the encoder. + :returns: A :py:class:`bytes` object. + """ + ... + + def tobitmap(self, name: str = ...) -> bytes: + """ + Returns the image converted to an X11 bitmap. + + .. note:: This method only works for mode "1" images. + + :param name: The name prefix to use for the bitmap variables. + :returns: A string containing an X11 bitmap. + :raises ValueError: If the mode is not "1" + """ + ... + + def frombytes(self, data: bytes, decoder_name: str = ..., *args) -> None: + """ + Loads this image with pixel data from a bytes object. + + This method is similar to the :py:func:`~PIL.Image.frombytes` function, + but loads data into this image instead of creating a new image object. + """ + ... + + def load(self): # -> Any | None: + """ + Allocates storage for the image and loads the pixel data. In + normal cases, you don't need to call this method, since the + Image class automatically loads an opened image when it is + accessed for the first time. + + If the file associated with the image was opened by Pillow, then this + method will close it. The exception to this is if the image has + multiple frames, in which case the file will be left open for seek + operations. See :ref:`file-handling` for more information. + + :returns: An image access object. + :rtype: :ref:`PixelAccess` or :py:class:`PIL.PyAccess` + """ + ... + + def verify(self): # -> None: + """ + Verifies the contents of a file. For data read from a file, this + method attempts to determine if the file is broken, without + actually decoding the image data. If this method finds any + problems, it raises suitable exceptions. If you need to load + the image after using this method, you must reopen the image + file. + """ + ... + + def convert( + self, + mode: str | None = ..., + matrix: tuple[float, ...] | None = ..., + dither: Dither | None = ..., + palette: Palette = ..., + colors: int = ..., + ) -> Image: + """ + Returns a converted copy of this image. For the "P" mode, this + method translates pixels through the palette. If mode is + omitted, a mode is chosen so that all information in the image + and the palette can be represented without a palette. + + This supports all possible conversions between "L", "RGB" and "CMYK". The + ``matrix`` argument only supports "L" and "RGB". + + When translating a color image to grayscale (mode "L"), + the library uses the ITU-R 601-2 luma transform:: + + L = R * 299/1000 + G * 587/1000 + B * 114/1000 + + The default method of converting a grayscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is ``None``, all values larger than 127 are set to 255 (white), + all other values to 0 (black). To use other thresholds, use the + :py:meth:`~PIL.Image.Image.point` method. + + When converting from "RGBA" to "P" without a ``matrix`` argument, + this passes the operation to :py:meth:`~PIL.Image.Image.quantize`, + and ``dither`` and ``palette`` are ignored. + + When converting from "PA", if an "RGBA" palette is present, the alpha + channel from the image will be used instead of the values from the palette. + + :param mode: The requested mode. See: :ref:`concept-modes`. + :param matrix: An optional conversion matrix. If given, this + should be 4- or 12-tuple containing floating point values. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). Note that this is not used when ``matrix`` is supplied. + :param palette: Palette to use when converting from mode "RGB" + to "P". Available palettes are :data:`Palette.WEB` or + :data:`Palette.ADAPTIVE`. + :param colors: Number of colors to use for the :data:`Palette.ADAPTIVE` + palette. Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + + def quantize( + self, + colors: int = ..., + method: Quantize | None = ..., + kmeans: int = ..., + palette=..., + dither: Dither = ..., + ) -> Image: + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: :data:`Quantize.MEDIANCUT` (median cut), + :data:`Quantize.MAXCOVERAGE` (maximum coverage), + :data:`Quantize.FASTOCTREE` (fast octree), + :data:`Quantize.LIBIMAGEQUANT` (libimagequant; check support + using :py:func:`PIL.features.check_feature` with + ``feature="libimagequant"``). + + By default, :data:`Quantize.MEDIANCUT` will be used. + + The exception to this is RGBA images. :data:`Quantize.MEDIANCUT` + and :data:`Quantize.MAXCOVERAGE` do not support RGBA images, so + :data:`Quantize.FASTOCTREE` is used by default instead. + :param kmeans: Integer greater than or equal to zero. + :param palette: Quantize to the palette of given + :py:class:`PIL.Image.Image`. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). + :returns: A new image + """ + ... + + def copy(self) -> Image: + """ + Copies this image. Use this method if you wish to paste things + into an image, but still retain the original. + + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + __copy__ = ... + def crop(self, box: tuple[int, int, int, int] | None = ...) -> Image: + """ + Returns a rectangular region from this image. The box is a + 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. + + Note: Prior to Pillow 3.4.0, this was a lazy operation. + + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + + def draft(self, mode, size): # -> None: + """ + Configures the image file loader so it returns a version of the + image that as closely as possible matches the given mode and + size. For example, you can use this method to convert a color + JPEG to grayscale while loading it. + + If any changes are made, returns a tuple with the chosen ``mode`` and + ``box`` with coordinates of the original image within the altered one. + + Note that this method modifies the :py:class:`~PIL.Image.Image` object + in place. If the image has already been loaded, this method has no + effect. + + Note: This method is not implemented for most images. It is + currently implemented only for JPEG and MPO images. + + :param mode: The requested mode. + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + """ + ... + + def filter(self, filter): # -> Image: + """ + Filters this image using the given filter. For a list of + available filters, see the :py:mod:`~PIL.ImageFilter` module. + + :param filter: Filter kernel. + :returns: An :py:class:`~PIL.Image.Image` object.""" + ... + + def getbands(self) -> tuple[str, ...]: + """ + Returns a tuple containing the name of each band in this image. + For example, ``getbands`` on an RGB image returns ("R", "G", "B"). + + :returns: A tuple containing band names. + :rtype: tuple + """ + ... + + def getbbox(self, *, alpha_only: bool = ...) -> tuple[int, int, int, int]: + """ + Calculates the bounding box of the non-zero regions in the + image. + + :param alpha_only: Optional flag, defaulting to ``True``. + If ``True`` and the image has an alpha channel, trim transparent pixels. + Otherwise, trim pixels when all channels are zero. + Keyword-only argument. + :returns: The bounding box is returned as a 4-tuple defining the + left, upper, right, and lower pixel coordinate. See + :ref:`coordinate-system`. If the image is completely empty, this + method returns None. + + """ + ... + + def getcolors(self, maxcolors: int = ...): # -> list[tuple[Any, int]] | Any | None: + """ + Returns a list of colors used in this image. + + The colors will be in the image's mode. For example, an RGB image will + return a tuple of (red, green, blue) color values, and a P image will + return the index of the color in the palette. + + :param maxcolors: Maximum number of colors. If this number is + exceeded, this method returns None. The default limit is + 256 colors. + :returns: An unsorted list of (count, pixel) values. + """ + ... + + def getdata(self, band: int | None = ...): # -> Any | DeferredError | None: + """ + Returns the contents of this image as a sequence object + containing pixel values. The sequence object is flattened, so + that values for line one follow directly after the values of + line zero, and so on. + + Note that the sequence object returned by this method is an + internal PIL data type, which only supports certain sequence + operations. To convert it to an ordinary sequence (e.g. for + printing), use ``list(im.getdata())``. + + :param band: What band to return. The default is to return + all bands. To return a single band, pass in the index + value (e.g. 0 to get the "R" band from an "RGB" image). + :returns: A sequence-like object. + """ + ... + + def getextrema(self) -> tuple[float, float] | tuple[tuple[int, int], ...]: + """ + Gets the minimum and maximum pixel values for each band in + the image. + + :returns: For a single-band image, a 2-tuple containing the + minimum and maximum pixel value. For a multi-band image, + a tuple containing one 2-tuple for each band. + """ + ... + + def getexif(self) -> Exif: + """ + Gets EXIF data from the image. + + :returns: an :py:class:`~PIL.Image.Exif` object. + """ + ... + + def get_child_images(self): # -> list[Any]: + ... + + def getim(self): # -> Any: + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + ... + + def getpalette(self, rawmode: str | None = ...) -> list[int] | None: + """ + Returns the image palette as a list. + + :param rawmode: The mode in which to return the palette. ``None`` will + return the palette in its current mode. + + .. versionadded:: 9.1.0 + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + ... + + @property + def has_transparency_data(self) -> bool: + """ + Determine if an image has transparency data, whether in the form of an + alpha channel, a palette with an alpha channel, or a "transparency" key + in the info dictionary. + + Note the image might still appear solid, if all of the values shown + within are opaque. + + :returns: A boolean. + """ + ... + + def apply_transparency(self): # -> None: + """ + If a P mode image has a "transparency" key in the info dictionary, + remove the key and instead apply the transparency to the palette. + Otherwise, the image is unchanged. + """ + ... + + def getpixel(self, xy): # -> Any: + """ + Returns the pixel value at a given position. + + :param xy: The coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: The pixel value. If the image is a multi-layer image, + this method returns a tuple. + """ + ... + + def getprojection(self) -> tuple[list[int], list[int]]: + """ + Get projection to x and y axes + + :returns: Two sequences, indicating where there are non-zero + pixels along the X-axis and the Y-axis, respectively. + """ + ... + + def histogram(self, mask: Image | None = ..., extrema=...) -> list[int]: + """ + Returns a histogram for the image. The histogram is returned as a + list of pixel counts, one for each pixel value in the source + image. Counts are grouped into 256 bins for each band, even if + the image has more than 8 bits per band. If the image has more + than one band, the histograms for all bands are concatenated (for + example, the histogram for an "RGB" image contains 768 values). + + A bilevel image (mode "1") is treated as a grayscale ("L") image + by this method. + + If a mask is provided, the method returns a histogram for those + parts of the image where the mask image is non-zero. The mask + image must have the same size as the image, and be either a + bi-level image (mode "1") or a grayscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A list containing pixel counts. + """ + ... + + def entropy(self, mask=..., extrema=...): # -> Any: + """ + Calculates and returns the entropy for the image. + + A bilevel image (mode "1") is treated as a grayscale ("L") + image by this method. + + If a mask is provided, the method employs the histogram for + those parts of the image where the mask image is non-zero. + The mask image must have the same size as the image, and be + either a bi-level image (mode "1") or a grayscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A float value representing the image entropy + """ + ... + + def paste(self, im, box=..., mask=...) -> None: + """ + Pastes another image into this image. The box argument is either + a 2-tuple giving the upper left corner, a 4-tuple defining the + left, upper, right, and lower pixel coordinate, or None (same as + (0, 0)). See :ref:`coordinate-system`. If a 4-tuple is given, the size + of the pasted image must match the size of the region. + + If the modes don't match, the pasted image is converted to the mode of + this image (see the :py:meth:`~PIL.Image.Image.convert` method for + details). + + Instead of an image, the source can be a integer or tuple + containing pixel values. The method then fills the region + with the given color. When creating RGB images, you can + also use color strings as supported by the ImageColor module. + + If a mask is given, this method updates only the regions + indicated by the mask. You can use either "1", "L", "LA", "RGBA" + or "RGBa" images (if present, the alpha band is used as mask). + Where the mask is 255, the given image is copied as is. Where + the mask is 0, the current value is preserved. Intermediate + values will mix the two images together, including their alpha + channels if they have them. + + See :py:meth:`~PIL.Image.Image.alpha_composite` if you want to + combine images with respect to their alpha channels. + + :param im: Source image or pixel value (integer or tuple). + :param box: An optional 4-tuple giving the region to paste into. + If a 2-tuple is used instead, it's treated as the upper left + corner. If omitted or None, the source is pasted into the + upper left corner. + + If an image is given as the second argument and there is no + third, the box defaults to (0, 0), and the second argument + is interpreted as a mask image. + :param mask: An optional mask image. + """ + ... + + def alpha_composite(self, im, dest=..., source=...): # -> None: + """'In-place' analog of Image.alpha_composite. Composites an image + onto this image. + + :param im: image to composite over this one + :param dest: Optional 2 tuple (left, top) specifying the upper + left corner in this (destination) image. + :param source: Optional 2 (left, top) tuple for the upper left + corner in the overlay source image, or 4 tuple (left, top, right, + bottom) for the bounds of the source rectangle + + Performance Note: Not currently implemented in-place in the core layer. + """ + ... + + def point(self, lut, mode: str | None = ...) -> Image: + """ + Maps this image through a lookup table or function. + + :param lut: A lookup table, containing 256 (or 65536 if + self.mode=="I" and mode == "L") values per band in the + image. A function can be used instead, it should take a + single argument. The function is called once for each + possible pixel value, and the resulting table is applied to + all bands of the image. + + It may also be an :py:class:`~PIL.Image.ImagePointHandler` + object:: + + class Example(Image.ImagePointHandler): + def point(self, data): + # Return result + :param mode: Output mode (default is same as input). This can only be used if + the source image has mode "L" or "P", and the output has mode "1" or the + source image mode is "I" and the output mode is "L". + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + + def putalpha(self, alpha): # -> None: + """ + Adds or replaces the alpha layer in this image. If the image + does not have an alpha layer, it's converted to "LA" or "RGBA". + The new layer must be either "L" or "1". + + :param alpha: The new alpha layer. This can either be an "L" or "1" + image having the same size as this image, or an integer or + other color value. + """ + ... + + def putdata(self, data, scale=..., offset=...): # -> None: + """ + Copies pixel data from a flattened sequence object into the image. The + values should start at the upper left corner (0, 0), continue to the + end of the line, followed directly by the first value of the second + line, and so on. Data will be read until either the image or the + sequence ends. The scale and offset values are used to adjust the + sequence values: **pixel = value*scale + offset**. + + :param data: A flattened sequence object. + :param scale: An optional scale value. The default is 1.0. + :param offset: An optional offset value. The default is 0.0. + """ + ... + + def putpalette(self, data, rawmode=...) -> None: + """ + Attaches a palette to this image. The image must be a "P", "PA", "L" + or "LA" image. + + The palette sequence must contain at most 256 colors, made up of one + integer value for each channel in the raw mode. + For example, if the raw mode is "RGB", then it can contain at most 768 + values, made up of red, green and blue values for the corresponding pixel + index in the 256 colors. + If the raw mode is "RGBA", then it can contain at most 1024 values, + containing red, green, blue and alpha values. + + Alternatively, an 8-bit string may be used instead of an integer sequence. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. Either "RGB", "RGBA", or a mode + that can be transformed to "RGB" or "RGBA" (e.g. "R", "BGR;15", "RGBA;L"). + """ + ... + + def putpixel(self, xy, value): # -> Any: + """ + Modifies the pixel at the given position. The color is given as + a single numerical value for single-band images, and a tuple for + multi-band images. In addition to this, RGB and RGBA tuples are + accepted for P and PA images. + + Note that this method is relatively slow. For more extensive changes, + use :py:meth:`~PIL.Image.Image.paste` or the :py:mod:`~PIL.ImageDraw` + module instead. + + See: + + * :py:meth:`~PIL.Image.Image.paste` + * :py:meth:`~PIL.Image.Image.putdata` + * :py:mod:`~PIL.ImageDraw` + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param value: The pixel value. + """ + ... + + def remap_palette(self, dest_map, source_palette=...): # -> Image: + """ + Rewrites the image to reorder the palette. + + :param dest_map: A list of indexes into the original palette. + e.g. ``[1,0]`` would swap a two item palette, and ``list(range(256))`` + is the identity transform. + :param source_palette: Bytes or None. + :returns: An :py:class:`~PIL.Image.Image` object. + + """ + ... + + def resize(self, size, resample=..., box=..., reducing_gap=...) -> Image: + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If the image has mode "1" or "P", it is always set to + :py:data:`Resampling.NEAREST`. If the image mode specifies a number + of bits, such as "I;16", then the default filter is + :py:data:`Resampling.NEAREST`. Otherwise, the default filter is + :py:data:`Resampling.BICUBIC`. See: :ref:`concept-filters`. + :param box: An optional 4-tuple of floats providing + the source image region to be scaled. + The values must be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce`. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is None (no optimization). + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + + def reduce(self, factor, box=...): # -> Image: + """ + Returns a copy of the image reduced ``factor`` times. + If the size of the image is not dividable by ``factor``, + the resulting size will be rounded up. + + :param factor: A greater than 0 integer or tuple of two integers + for width and height separately. + :param box: An optional 4-tuple of ints providing + the source image region to be reduced. + The values must be within ``(0, 0, width, height)`` rectangle. + If omitted or ``None``, the entire source is used. + """ + ... + + def rotate( + self, angle, resample=..., expand=..., center=..., translate=..., fillcolor=... + ): # -> Image: + """ + Returns a rotated copy of this image. This method returns a + copy of this image, rotated the given number of degrees counter + clockwise around its centre. + + :param angle: In degrees counter clockwise. + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image has + mode "1" or "P", it is set to :py:data:`Resampling.NEAREST`. + See :ref:`concept-filters`. + :param expand: Optional expansion flag. If true, expands the output + image to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the + input image. Note that the expand flag assumes rotation around + the center and no translation. + :param center: Optional center of rotation (a 2-tuple). Origin is + the upper left corner. Default is the center of the image. + :param translate: An optional post-rotate translation (a 2-tuple). + :param fillcolor: An optional color for area outside the rotated image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + + def save(self, fp, format=..., **params) -> None: + """ + Saves this image under the given filename. If no format is + specified, the format to use is determined from the filename + extension, if possible. + + Keyword options can be used to provide additional instructions + to the writer. If a writer doesn't recognise an option, it is + silently ignored. The available options are described in the + :doc:`image format documentation + <../handbook/image-file-formats>` for each writer. + + You can use a file object instead of a filename. In this case, + you must always specify the format. The file object must + implement the ``seek``, ``tell``, and ``write`` + methods, and be opened in binary mode. + + :param fp: A filename (string), os.PathLike object or file object. + :param format: Optional format override. If omitted, the + format to use is determined from the filename extension. + If a file object was used instead of a filename, this + parameter should always be used. + :param params: Extra parameters to the image writer. + :returns: None + :exception ValueError: If the output format could not be determined + from the file name. Use the format option to solve this. + :exception OSError: If the file could not be written. The file + may have been created, and may contain partial data. + """ + ... + + def seek(self, frame: int) -> None: + """ + Seeks to the given frame in this sequence file. If you seek + beyond the end of the sequence, the method raises an + ``EOFError`` exception. When a sequence file is opened, the + library automatically seeks to frame 0. + + See :py:meth:`~PIL.Image.Image.tell`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :param frame: Frame number, starting at 0. + :exception EOFError: If the call attempts to seek beyond the end + of the sequence. + """ + ... + + def show(self, title: str | None = ...) -> None: + """ + Displays this image. This method is mainly intended for debugging purposes. + + This method calls :py:func:`PIL.ImageShow.show` internally. You can use + :py:func:`PIL.ImageShow.register` to override its default behaviour. + + The image is first saved to a temporary file. By default, it will be in + PNG format. + + On Unix, the image is then opened using the **xdg-open**, **display**, + **gm**, **eog** or **xv** utility, depending on which one can be found. + + On macOS, the image is opened with the native Preview application. + + On Windows, the image is opened with the standard PNG display utility. + + :param title: Optional title to use for the image window, where possible. + """ + ... + + def split(self) -> tuple[Image, ...]: + """ + Split this image into individual bands. This method returns a + tuple of individual image bands from an image. For example, + splitting an "RGB" image creates three new images each + containing a copy of one of the original bands (red, green, + blue). + + If you need only one band, :py:meth:`~PIL.Image.Image.getchannel` + method can be more convenient and faster. + + :returns: A tuple containing bands. + """ + ... + + def getchannel(self, channel: int | str) -> Image: + """ + Returns an image containing a single channel of the source image. + + :param channel: What channel to return. Could be index + (0 for "R" channel of "RGB") or channel name + ("A" for alpha channel of "RGBA"). + :returns: An image in "L" mode. + + .. versionadded:: 4.3.0 + """ + ... + + def tell(self) -> int: + """ + Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :returns: Frame number, starting with 0. + """ + ... + + def thumbnail(self, size, resample=..., reducing_gap=...): # -> None: + """ + Make this image into a thumbnail. This method modifies the + image to contain a thumbnail version of itself, no larger than + the given size. This method calculates an appropriate thumbnail + size to preserve the aspect of the image, calls the + :py:meth:`~PIL.Image.Image.draft` method to configure the file reader + (where applicable), and finally resizes the image. + + Note that this function modifies the :py:class:`~PIL.Image.Image` + object in place. If you need to use the full resolution image as well, + apply this method to a :py:meth:`~PIL.Image.Image.copy` of the original + image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: Optional resampling filter. This can be one + of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If omitted, it defaults to :py:data:`Resampling.BICUBIC`. + (was :py:data:`Resampling.NEAREST` prior to version 2.5.0). + See: :ref:`concept-filters`. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce` or + :py:meth:`~PIL.Image.Image.draft` for JPEG images. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is 2.0 (very close to fair resampling + while still being faster in many cases). + :returns: None + """ + ... + + def transform( + self, size, method, data=..., resample=..., fill=..., fillcolor=... + ) -> Image: + """ + Transforms this image. This method creates a new image with the + given size, and the same mode as the original, and copies data + to the new image using the given transform. + + :param size: The output size in pixels, as a 2-tuple: + (width, height). + :param method: The transformation method. This is one of + :py:data:`Transform.EXTENT` (cut out a rectangular subregion), + :py:data:`Transform.AFFINE` (affine transform), + :py:data:`Transform.PERSPECTIVE` (perspective transform), + :py:data:`Transform.QUAD` (map a quadrilateral to a rectangle), or + :py:data:`Transform.MESH` (map a number of source quadrilaterals + in one operation). + + It may also be an :py:class:`~PIL.Image.ImageTransformHandler` + object:: + + class Example(Image.ImageTransformHandler): + def transform(self, size, data, resample, fill=1): + # Return result + + Implementations of :py:class:`~PIL.Image.ImageTransformHandler` + for some of the :py:class:`Transform` methods are provided + in :py:mod:`~PIL.ImageTransform`. + + It may also be an object with a ``method.getdata`` method + that returns a tuple supplying new ``method`` and ``data`` values:: + + class Example: + def getdata(self): + method = Image.Transform.EXTENT + data = (0, 0, 100, 100) + return method, data + :param data: Extra data to the transformation method. + :param resample: Optional resampling filter. It can be one of + :py:data:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image + has mode "1" or "P", it is set to :py:data:`Resampling.NEAREST`. + See: :ref:`concept-filters`. + :param fill: If ``method`` is an + :py:class:`~PIL.Image.ImageTransformHandler` object, this is one of + the arguments passed to it. Otherwise, it is unused. + :param fillcolor: Optional fill color for the area outside the + transform in the output image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + + def transpose(self, method: Transpose) -> Image: + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:data:`Transpose.FLIP_LEFT_RIGHT`, + :py:data:`Transpose.FLIP_TOP_BOTTOM`, :py:data:`Transpose.ROTATE_90`, + :py:data:`Transpose.ROTATE_180`, :py:data:`Transpose.ROTATE_270`, + :py:data:`Transpose.TRANSPOSE` or :py:data:`Transpose.TRANSVERSE`. + :returns: Returns a flipped or rotated copy of this image. + """ + ... + + def effect_spread(self, distance): # -> Image: + """ + Randomly spread pixels in an image. + + :param distance: Distance to spread pixels. + """ + ... + + def toqimage(self): # -> ImageQt: + """Returns a QImage copy of this image""" + ... + + def toqpixmap(self): + """Returns a QPixmap copy of this image""" + ... + +class ImagePointHandler: + """ + Used as a mixin by point transforms + (for use with :py:meth:`~PIL.Image.Image.point`) + """ + + @abc.abstractmethod + def point(self, im: Image) -> Image: ... + +class ImageTransformHandler: + """ + Used as a mixin by geometry transforms + (for use with :py:meth:`~PIL.Image.Image.transform`) + """ + + @abc.abstractmethod + def transform( + self, + size: tuple[int, int], + image: Image, + **options: dict[str, str | int | tuple[int, ...] | list[int]] + ) -> Image: ... + +def new( + mode: str, + size: tuple[int, int], + color: float | tuple[float, ...] | str | None = ..., +) -> Image: + """ + Creates a new image with the given mode and size. + + :param mode: The mode to use for the new image. See: + :ref:`concept-modes`. + :param size: A 2-tuple, containing (width, height) in pixels. + :param color: What color to use for the image. Default is black. + If given, this should be a single integer or floating point value + for single-band modes, and a tuple for multi-band modes (one value + per band). When creating RGB or HSV images, you can also use color + strings as supported by the ImageColor module. If the color is + None, the image is not initialised. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + +def frombytes(mode, size, data, decoder_name=..., *args) -> Image: + """ + Creates a copy of an image memory from pixel data in a buffer. + + In its simplest form, this function takes three arguments + (mode, size, and unpacked pixel data). + + You can also use any pixel decoder supported by PIL. For more + information on available decoders, see the section + :ref:`Writing Your Own File Codec `. + + Note that this function decodes pixel data only, not entire images. + If you have an entire image in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load + it. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A byte buffer containing raw data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + +def frombuffer(mode, size, data, decoder_name=..., *args): # -> Image: + """ + Creates an image memory referencing pixel data in a byte buffer. + + This function is similar to :py:func:`~PIL.Image.frombytes`, but uses data + in the byte buffer, where possible. This means that changes to the + original buffer object are reflected in this image). Not all modes can + share memory; supported modes include "L", "RGBX", "RGBA", and "CMYK". + + Note that this function decodes pixel data only, not entire images. + If you have an entire image file in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load it. + + The default parameters used for the "raw" decoder differs from that used for + :py:func:`~PIL.Image.frombytes`. This is a bug, and will probably be fixed in a + future release. The current release issues a warning if you do this; to disable + the warning, you should provide the full set of parameters. See below for details. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A bytes or other buffer object containing raw + data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. For the + default encoder ("raw"), it's recommended that you provide the + full set of parameters:: + + frombuffer(mode, size, data, "raw", mode, 0, 1) + + :returns: An :py:class:`~PIL.Image.Image` object. + + .. versionadded:: 1.1.4 + """ + ... + +def fromarray(obj, mode=...): # -> Image: + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol):: + + from PIL import Image + import numpy as np + a = np.zeros((5, 5)) + im = Image.fromarray(a) + + If ``obj`` is not contiguous, then the ``tobytes`` method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + In the case of NumPy, be aware that Pillow modes do not always correspond + to NumPy dtypes. Pillow modes only offer 1-bit pixels, 8-bit pixels, + 32-bit signed integer pixels, and 32-bit floating point pixels. + + Pillow images can also be converted to arrays:: + + from PIL import Image + import numpy as np + im = Image.open("hopper.jpg") + a = np.asarray(im) + + When converting Pillow images to arrays however, only pixel values are + transferred. This means that P and PA mode images will lose their palette. + + :param obj: Object with array interface + :param mode: Optional mode to use when reading ``obj``. Will be determined from + type if ``None``. + + This will not be used to convert the data after reading, but will be used to + change how the data is read:: + + from PIL import Image + import numpy as np + a = np.full((1, 1), 300) + im = Image.fromarray(a, mode="L") + im.getpixel((0, 0)) # 44 + im = Image.fromarray(a, mode="RGB") + im.getpixel((0, 0)) # (44, 1, 0) + + See: :ref:`concept-modes` for general information about modes. + :returns: An image object. + + .. versionadded:: 1.1.6 + """ + ... + +def fromqimage(im): # -> Image: + """Creates an image instance from a QImage image""" + ... + +def fromqpixmap(im): # -> Image: + """Creates an image instance from a QPixmap image""" + ... + +_fromarray_typemap = ... + +def open(fp, mode=..., formats=...) -> Image: + """ + Opens and identifies the given image file. + + This is a lazy operation; this function identifies the file, but + the file remains open and the actual image data is not read from + the file until you try to process the data (or call the + :py:meth:`~PIL.Image.Image.load` method). See + :py:func:`~PIL.Image.new`. See :ref:`file-handling`. + + :param fp: A filename (string), os.PathLike object or a file object. + The file object must implement ``file.read``, + ``file.seek``, and ``file.tell`` methods, + and be opened in binary mode. The file object will also seek to zero + before reading. + :param mode: The mode. If given, this argument must be "r". + :param formats: A list or tuple of formats to attempt to load the file in. + This can be used to restrict the set of formats checked. + Pass ``None`` to try all supported formats. You can print the set of + available formats by running ``python3 -m PIL`` or using + the :py:func:`PIL.features.pilinfo` function. + :returns: An :py:class:`~PIL.Image.Image` object. + :exception FileNotFoundError: If the file cannot be found. + :exception PIL.UnidentifiedImageError: If the image cannot be opened and + identified. + :exception ValueError: If the ``mode`` is not "r", or if a ``StringIO`` + instance is used for ``fp``. + :exception TypeError: If ``formats`` is not ``None``, a list or a tuple. + """ + ... + +def alpha_composite(im1: Image, im2: Image) -> Image: + """ + Alpha composite im2 over im1. + + :param im1: The first image. Must have mode RGBA. + :param im2: The second image. Must have mode RGBA, and the same size as + the first image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + +def blend(im1: Image, im2: Image, alpha: float) -> Image: + """ + Creates a new image by interpolating between two input images, using + a constant alpha:: + + out = image1 * (1.0 - alpha) + image2 * alpha + + :param im1: The first image. + :param im2: The second image. Must have the same mode and size as + the first image. + :param alpha: The interpolation alpha factor. If alpha is 0.0, a + copy of the first image is returned. If alpha is 1.0, a copy of + the second image is returned. There are no restrictions on the + alpha value. If necessary, the result is clipped to fit into + the allowed output range. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + +def composite(image1: Image, image2: Image, mask: Image) -> Image: + """ + Create composite image by blending images using a transparency mask. + + :param image1: The first image. + :param image2: The second image. Must have the same mode and + size as the first image. + :param mask: A mask image. This image can have mode + "1", "L", or "RGBA", and must have the same size as the + other two images. + """ + ... + +def eval(image, *args): + """ + Applies the function (which should take one argument) to each pixel + in the given image. If the image has more than one band, the same + function is applied to each band. Note that the function is + evaluated once for each possible pixel value, so you cannot use + random components or other generators. + + :param image: The input image. + :param function: A function object, taking one integer argument. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + +def merge(mode, bands): + """ + Merge a set of single band images into a new multiband image. + + :param mode: The mode to use for the output image. See: + :ref:`concept-modes`. + :param bands: A sequence containing one single-band image for + each band in the output image. All bands must have the + same size. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + ... + +def register_open( + id, + factory: Callable[[IO[bytes], str | bytes], ImageFile.ImageFile], + accept: Callable[[bytes], bool] | None = ..., +) -> None: + """ + Register an image file plugin. This function should not be used + in application code. + + :param id: An image format identifier. + :param factory: An image file factory method. + :param accept: An optional function that can be used to quickly + reject images having another format. + """ + ... + +def register_mime(id: str, mimetype: str) -> None: + """ + Registers an image MIME type by populating ``Image.MIME``. This function + should not be used in application code. + + ``Image.MIME`` provides a mapping from image format identifiers to mime + formats, but :py:meth:`~PIL.ImageFile.ImageFile.get_format_mimetype` can + provide a different result for specific images. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + ... + +def register_save(id: str, driver) -> None: + """ + Registers an image save function. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + ... + +def register_save_all(id, driver) -> None: + """ + Registers an image function to save all the frames + of a multiframe format. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + ... + +def register_extension(id, extension) -> None: + """ + Registers an image extension. This function should not be + used in application code. + + :param id: An image format identifier. + :param extension: An extension used for this format. + """ + ... + +def register_extensions(id, extensions) -> None: + """ + Registers image extensions. This function should not be + used in application code. + + :param id: An image format identifier. + :param extensions: A list of extensions used for this format. + """ + ... + +def registered_extensions(): # -> dict[str, str]: + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + ... + +def register_decoder(name: str, decoder: type[ImageFile.PyDecoder]) -> None: + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: An ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + ... + +def register_encoder(name: str, encoder: type[ImageFile.PyEncoder]) -> None: + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: An ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ... + +def effect_mandelbrot(size, extent, quality): # -> Image: + """ + Generate a Mandelbrot set covering the given extent. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param extent: The extent to cover, as a 4-tuple: + (x0, y0, x1, y1). + :param quality: Quality. + """ + ... + +def effect_noise(size, sigma): # -> Image: + """ + Generate Gaussian noise centered around 128. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param sigma: Standard deviation of noise. + """ + ... + +def linear_gradient(mode): # -> Image: + """ + Generate 256x256 linear gradient from black to white, top to bottom. + + :param mode: Input mode. + """ + ... + +def radial_gradient(mode): # -> Image: + """ + Generate 256x256 radial gradient from black to white, centre to edge. + + :param mode: Input mode. + """ + ... + +if TYPE_CHECKING: + _ExifBase = MutableMapping[int, Any] +else: + ... + +class Exif(_ExifBase): + """ + This class provides read and write access to EXIF image data:: + + from PIL import Image + im = Image.open("exif.png") + exif = im.getexif() # Returns an instance of this class + + Information can be read and written, iterated over or deleted:: + + print(exif[274]) # 1 + exif[274] = 2 + for k, v in exif.items(): + print("Tag", k, "Value", v) # Tag 274 Value 2 + del exif[274] + + To access information beyond IFD0, :py:meth:`~PIL.Image.Exif.get_ifd` + returns a dictionary:: + + from PIL import ExifTags + im = Image.open("exif_gps.jpg") + exif = im.getexif() + gps_ifd = exif.get_ifd(ExifTags.IFD.GPSInfo) + print(gps_ifd) + + Other IFDs include ``ExifTags.IFD.Exif``, ``ExifTags.IFD.Makernote``, + ``ExifTags.IFD.Interop`` and ``ExifTags.IFD.IFD1``. + + :py:mod:`~PIL.ExifTags` also has enum classes to provide names for data:: + + print(exif[ExifTags.Base.Software]) # PIL + print(gps_ifd[ExifTags.GPS.GPSDateStamp]) # 1999:99:99 99:99:99 + """ + + endian = ... + bigtiff = ... + _loaded = ... + def __init__(self) -> None: ... + def load(self, data): # -> None: + ... + + def load_from_fp(self, fp, offset=...): # -> None: + ... + + def tobytes(self, offset: int = ...) -> bytes: ... + def get_ifd(self, tag): # -> dict[Any, Any]: + ... + + def hide_offsets(self) -> None: ... + def __str__(self) -> str: ... + def __len__(self) -> int: ... + def __getitem__(self, tag): ... + def __contains__(self, tag) -> bool: ... + def __setitem__(self, tag, value) -> None: ... + def __delitem__(self, tag: int) -> None: ... + def __iter__(self): # -> Iterator[Any]: + ... diff --git a/python/tools/pybridge.py b/python/tools/pybridge.py index 225fc6c15c..30d69bbc9b 100644 --- a/python/tools/pybridge.py +++ b/python/tools/pybridge.py @@ -213,7 +213,7 @@ def do_enumerate(): def do_acquire(path: str, sid: str): check_origin() if sid == "null": - sid = None # type: ignore [cannot be assigned to declared type] + sid = None # type: ignore [is incompatible with declared type] trezor = Transport.find(path) if trezor is None: response.status = 404 diff --git a/python/tools/trezorctl_script_client.py b/python/tools/trezorctl_script_client.py index c77d703be3..311434bd74 100644 --- a/python/tools/trezorctl_script_client.py +++ b/python/tools/trezorctl_script_client.py @@ -6,18 +6,20 @@ on a specific example """ +from __future__ import annotations + import os import subprocess -from typing import Dict, List, Optional, Tuple, Union +import typing as t import click -def parse_args_from_line(line: str) -> Tuple[str, Dict[str, Union[str, bool]]]: +def parse_args_from_line(line: str) -> tuple[str, dict[str, t.Any]]: # ?PIN code=123 # ?PASSPHRASE available_on_device command, *args = line.split(" ") - result: Dict[str, Union[str, bool]] = {} + result = {} for arg in args: if "=" in arg: key, value = arg.split("=") @@ -27,7 +29,7 @@ def parse_args_from_line(line: str) -> Tuple[str, Dict[str, Union[str, bool]]]: return command, result -def get_pin_from_user(code: Optional[str] = None) -> str: +def get_pin_from_user(code: str | None = None) -> str: # ?PIN # ?PIN code=Current while True: @@ -47,7 +49,7 @@ def get_pin_from_user(code: Optional[str] = None) -> str: def show_button_request( - code: Optional[str] = None, pages: Optional[str] = None, name: Optional[str] = None + code: str | None = None, pages: str | None = None, name: str | None = None ) -> None: # ?BUTTON code=Other # ?BUTTON code=SignTx pages=2 @@ -98,7 +100,7 @@ def get_address() -> str: assert p.stdout is not None assert p.stdin is not None - text_result: List[str] = [] + text_result = [] while True: line = p.stdout.readline().strip() if not line: From 86e543c8d392a42d45f6bb75c174b7e9cf900480 Mon Sep 17 00:00:00 2001 From: obrusvit Date: Tue, 7 May 2024 11:43:56 +0200 Subject: [PATCH 014/626] fix(tests): regenerate fixtures.json Using ./tests/update_fixtures.py Current order on main branch is this: T1B1, T3T1, T2B1, T2T1 instead of what the script generates: T1B1, T2B1, T2T1, T3T1 [no changelog] --- tests/ui_tests/fixtures.json | 14682 ++++++++++++++++----------------- 1 file changed, 7341 insertions(+), 7341 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 981b37cb14..2c57088bca 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -735,7338 +735,7 @@ "T1B1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } }, -"T3T1": { -"click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "62e0431a324677ee6a1adf679136ceee96dff070068492171a02bb159bce5c87", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "dfd1bfddfa90e9a21586494bf9fa6de2b886addfb79e86918941800d9cd7da5f", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "37ee6e2b07c872f2a9c33c280b7be91bdfc223c8eee34aa8f7085837f150ca9d", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "8823902cedaa78bfba7a93b6d543ba9b71588ee86dda83b1d041b8fa7d8c3a65", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "ddf0c3b091eef587adb8786f498e855516dd572314ba588e91649595af7a358a", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "2925456668663dcf63cf030eabf5b0a55e7395a70b22b1e85b00a08bba141a89", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "b027097462daa6727c40806967fcb284ec32fb729cca8666bcef48ff75dc98ad", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "12d6d6165656188cff9e9c267b4b2fef40bd437237d42dd793de31c36ea1a5f5", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ea086361587f00c6abaf84faee202b8c3805af154f3d8271c89078c64196539e", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "91491c045eb816ccf8189640574132a91f310958ac01d58394f63b32efb9fba5", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3e9896ab2816ef2ed8c7253b6563b7e74bf217e75f1fe2a5ae81b5522682b2c0", -"T3T1_cs_test_lock.py::test_hold_to_lock": "0e8cf06515f909a1ee67d1f749ced1f9933674e33aee225e62390c2a1e3d901a", -"T3T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_delete": "c1f8c0a733563756481ed0aaf15d833cfd266b69fab7daa7eeca6deff738c404", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_delete_all": "3fbeae85ba122e42f2732504c6030490f4bfa128a11aed685fb6cb74c03ac8f6", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "d76be1659ab6e14c56e81e649abbf38b2be27ca38d1c068e80e9ba60e8ee30a5", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "c972f7e990f993aaf55eb647db471635d52964cb122800c4bf006f4f5a1b519d", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "857c8c548418716cd548e4651161c16095931e3ac73cb7731b4e1421193c556d", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ba3bf7716db5e8fd2ae16cf60123926fdb20bc92ea0640ca78b5e283f1230761", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "c85fa947a20bc4b59fe852b490d1469887684170677a21c2adfe475c1e8a286e", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "ff4e8fc26b39fb4e50f542bc3f9e12e526e0e73f00a6f1b99d354e4166a09de3", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "c85fa947a20bc4b59fe852b490d1469887684170677a21c2adfe475c1e8a286e", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "8a66f279dd55fb7867b0cd3b87a961589e3ec45d6e08320488fe2ba4bb834ddb", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c60b0b0d19fe093de73e8b3ef3a7e65f6ea01ecc736ad6ed45fd44148d050716", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_prompt_disappears": "5fd1a1add04b6a38619bb1788676676aa68d900055597ea1cc2118d441bab710", -"T3T1_cs_test_pin.py::test_pin_cancel": "0c36a5443bb67f543bc3905fae9e27b9b25f2ddc0ea9f8a1c9b06a95c4bb2a40", -"T3T1_cs_test_pin.py::test_pin_change": "b34da66139dd8f93ff67a8cbf03332dc63895ec325578c6123d90615b5a5711f", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "c2a1eb2d6d45c1a773f6cab6191149d48d1a64e999274c8189c791941d217397", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "06431a63c954ed1c7c219b0550988d086eb16b4dfb7def93d4917e74e72e3169", -"T3T1_cs_test_pin.py::test_pin_incorrect": "904fc973bad7a9677ddb5e35b652d21439c934e727cb00a6655e0fba165d7b2b", -"T3T1_cs_test_pin.py::test_pin_long": "5daa3f20464421c5b1c2eb7e718e26c6fad3966191c3f4138677703c2d42b8ba", -"T3T1_cs_test_pin.py::test_pin_long_delete": "4fe18b7d4917143f49e065e3f3eb0b78dc01e491c46bda48b4f5edd7b8e7d759", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "26fbf0858a21eb115a2a50beb6921f490d7af5bfd7d11ab98adff09867dd1abb", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "7c7c28f6d0af928a6abb77ccd628705872738ab949aa676e2464b0a954b39dc1", -"T3T1_cs_test_pin.py::test_pin_setup": "f58e6b57a7fc9760d9322e149503950d8dce13d88c6318864a88c4759d447d60", -"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "c14b4c71c2da514c485926d583e71985a6ee11e8abd2734c562852b85f69977e", -"T3T1_cs_test_pin.py::test_pin_short": "06431a63c954ed1c7c219b0550988d086eb16b4dfb7def93d4917e74e72e3169", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "3f05de3699884ace43fd768eb6d9f4fad61ba02010ce0a7782a9a0b38ed47a5f", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "b7c02b179855cee5e53a5e0e6ed436ff918bebb924b2bdabb0cacdd4b6278431", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "7f8ef2ab3a7c4bf28463e4dc11891cc2d099f207cd9ef99a68df52b6f49be162", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8766eab82a293be974c517d14c569429187f081d56df48359ab3088fd6f25be6", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "20fa687cca06770b862cf90db02429d24fea3469d2b9a931b828093555307d5d", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e653fdcab4edec38ccf0634288e7d618bc8dd73eb2f22529cf9827898f56da17", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "fb09f7bf90ffb9696ce41be6e452abd4b21879174290e4a7c6da5e3e4fbd947d", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "10301ac15cc7e4f05f686e5597fd3ec2dec039bc013c294b5f84a687c2f336a4", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e637cc9f17eb47b549bd69a1897b5a386c62890910212be79f32c820a75b11e7", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1702c0f4ae9bd9bf44fa494881facebd9736d1a1fae2b564017f21f999e21739", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e69f1d962aa09b907c6ef4886604321584507031ca81194ae31ee359d3b18311", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "9381f2b219e98242debb0a6372e44653d412ba57b40ff245517c731d03e01d66", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a0aea17ae65b3e5769509207b64d2b13622fd9b6b05df8d4fa99fd7f6cceedbe", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "24a0f61e295bb8cb614d29ae256bc070878d39dff40151d244ebec9dc399841a", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "55d42b477af4c98e2abdfe66d506437a4f3e45d7008dcc59ad3cdd80cd02665e", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ae09966cbfee6e5e1a55231aa5386e0c9235c411aa1560d30adb674078188590", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "fa40cfa1d84b174d4c191ba9e93e489cbf4398232f6f4a08b7591520336d5ec8", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "c8c5159b86ab463d1ace5ce25744b83dae647e1ef730dd27a1db0a74a6186ab5", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a0feb69ed402fa2d9a9418c52e7a757b7551173d2a6c37373c039c7d029b0e4d", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "bbed2b91ccead31c0e4633302c753f41e67bd73383acd5ec77b751ff901ee8bc", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "a3a3b403919c23545576e4000eb182ea13f2c15da902f67431cc92bfad9ffcf7", -"T3T1_de_test_lock.py::test_hold_to_lock": "116a1bcf9e0d900a21815703564e58c8dfde980ce502d4fa57cd28b4ff68e7d4", -"T3T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", -"T3T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", -"T3T1_de_test_passphrase_tt.py::test_passphrase_delete": "5c12acac84008979af157f7153f10b30fa22b504499195318536506e6396ed83", -"T3T1_de_test_passphrase_tt.py::test_passphrase_delete_all": "4eced5507492c874a56c7808db03565e1d5ab44e07d493b15eb094b40d9f38f0", -"T3T1_de_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "03825b8f1a01bff5a0a1cb1567453b7958b642b0fd82c40de9ba14901bc340dd", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "0864ede4392d50141acd356a864d34e8c6d952ba300b8900d0999ef8033f0e2f", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "61e4870333d8e63b6dc548ea5cfce800f34f660019dcf4f0728ce207a119a819", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "4aa46cb7c98e511ca9a5c0957807832d8f34f6126ff16060f8546ca9db0c4db1", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "6d41457547ed56a8ab8e572d3a42e47c489e4758323e89d8f9f053d05e139a26", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "0e30b28337b7ff810da1914ed364bae45f7f8780be13adb3993a0c4dc5c5da6e", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "6d41457547ed56a8ab8e572d3a42e47c489e4758323e89d8f9f053d05e139a26", -"T3T1_de_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "d261e3ebb629e5625261940bcda9e88db8a1d975b0543336382e654ac9416b49", -"T3T1_de_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c71a9a7718e3aa21db3c10f2f4d9dd0d6e9402f734ba990636c80af40bbe4a19", -"T3T1_de_test_passphrase_tt.py::test_passphrase_prompt_disappears": "1f935cdebf4b5978bd6d92becc760237357b78cc6c98001cf9df274a3b4578a0", -"T3T1_de_test_pin.py::test_pin_cancel": "ea81ade44cee7af4c9c544d511974e7a63ef0fa24705ab4dc11b4d9603c1a9bc", -"T3T1_de_test_pin.py::test_pin_change": "12a3b7eafad9cc8eef31f31a8bd0b062de1d7d34d55ecff382a7edf0c50ab207", -"T3T1_de_test_pin.py::test_pin_delete_hold": "5ec3f011eba01effc07cf383ad79cf9d3050d3a93fa77c5ff4096a32a857d09b", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "a2d6af10b742074e6526780616b0dcbda4323b3c01189b9e908bf0c5e5137e30", -"T3T1_de_test_pin.py::test_pin_incorrect": "a8daecd8dc1c40e4a52bf633d93f42d34f2834d313e1037d41404f8771fec72e", -"T3T1_de_test_pin.py::test_pin_long": "627c9cd893370e5dcce02279115f69b8d2d1d1582cede8b6dc4f252db530c83e", -"T3T1_de_test_pin.py::test_pin_long_delete": "f38933dcb0830a5529019b5736437082c1813443aacb1d33f4b987455fe14484", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "aed24e9a3abc237929856e5ffb8a492af371b671dc78d84291936c452551d9fb", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "2872a6dda4fa33bb2df75ba7ae33b30441fb5c38678ff7a46d1938da500e1624", -"T3T1_de_test_pin.py::test_pin_setup": "7f38490d956165130f8d75b4c6adcb1108a8f4b030373016acb99b29ab57e160", -"T3T1_de_test_pin.py::test_pin_setup_mismatch": "a5b9edf91fbaaa6e3c0589e49ea0e67861bed8022ffb4bc6f837cbf6d1440c11", -"T3T1_de_test_pin.py::test_pin_short": "a2d6af10b742074e6526780616b0dcbda4323b3c01189b9e908bf0c5e5137e30", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "423fcfb3849c9302812634e14e9bb9f8f1aafd44dba3da903b0c82073cb4273e", -"T3T1_de_test_pin.py::test_wipe_code_setup": "0669142996e087ddc546b710f9f5260d32b314c2cb2180b552e14b02528da94a", -"T3T1_de_test_recovery.py::test_recovery_bip39": "2311f002225c7db659abc065f01d1bffb8b871fb183b605cd1c0224337b44a66", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "393af9be535289774f4c7f69a31127c89497ae6b0a9c251dc5b97c847aa11b7d", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "37a9d5d636a53d6a7876f12b0bfdeb8861e23fb81559d65309bb005a755bb0ae", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "f9db3934ee7fe0b69525bbc642e2af061aa0010b937518940cce94f182f5db15", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b42503eeb1f68aea805cf1c9ba8be41c97f4541659bc4b2f4987e09b0f585368", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4d57c6c41757aa0f919dd6523b621427311754bdbd6a41890ef9ebf6c79d05b8", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ff8d022996af07db45e528e21d7285565974a9916529bb450dbda22445372b90", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d83cdbad67584de1b447f611014616bfb87936f8889949890bfc621e33379734", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "86415194d0a822709e64ad765a93c64967ace2adf61b4e7c4f3353e4486a4fbf", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a2e5ede5cca634d93f3a4a5bb4a8323b0ae5576652c4183233bba42152480c64", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "d7b8c8cb51eee2f131a74577e8beeb8209c93d4bcf12a52fcba461d8c37270b3", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "029a396c23594971c92d282526b736165a72bc5fc7d644c8c1217cf8bbdee485", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d882b3fb28ca8eef1a3b36440bc2e4e8cf73d3febdc53fd1f65f6b7befce144c", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "be557c3e4e0492d0b884d4ed549d3ae18e6175b74b5945e7ab6f2f96aab58748", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "700aa42142055535b4123d84f6d307a0589b43600c2dec525312d06c2af9aa18", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "736652b5298a7a4ee2e51282323d1150c9844b6f7b738f421ac4ad3a83d0788d", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b13e22bddd80296bb0d08dff4bc94dad287c40247045eb779b88ba5c53050507", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ebab6dc1bbf5648693ff34ffece0b67d829d44ac03a751c72dcf623b2cd2c8ba", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "aadf5b948d034af305b275fd0d837619b8f133039b4ed431fa31fd65cc2e143e", -"T3T1_en_test_lock.py::test_hold_to_lock": "9d60d7aa2fbe6a0de14379e02ea825fbf9e21471596498f7be686f2538391f1d", -"T3T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", -"T3T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", -"T3T1_en_test_passphrase_tt.py::test_passphrase_delete": "6f9fd790c360ea8caa60a183f39d6515ce66493786f71611988f20b6fc5af86d", -"T3T1_en_test_passphrase_tt.py::test_passphrase_delete_all": "386969917a7112629f7a9e3a96f703953d8673a0c9bf5428b7612811566c29e7", -"T3T1_en_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "9ec26b92ff4ab6add7216f99329a9b34b59c69dba9ab916a4e9516f0d833b466", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "294e640dd8be88a92546107038ff6190e792896ae754d2d3c73e8d8c6bdac8be", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "bd916caf1254ee0fc93febad5f03c603592b4adfbc76c3cfe747ffe54ab6ae54", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "afa0d2c6bdfa50a22983ecbda113074703d21a008dbdd45e11e3d27a3fb704d8", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "c1a1cf0707dec05b41f36aba36d579ec3c93d5c404c565388bfea1787d094e67", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", -"T3T1_en_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "dbf02c793dbb0c7e68e6fcfe1b7baeae0abd048c49dfbaf0994146ce46dcdbae", -"T3T1_en_test_passphrase_tt.py::test_passphrase_loop_all_characters": "82ff267d6ec0d48d8a1e25d1e77e598f563449dbff75fca7f2820dc1409fa453", -"T3T1_en_test_passphrase_tt.py::test_passphrase_prompt_disappears": "12a0d2dfe50c122326bd7ab6af7dd32008943091757ef6f5e9122dd721414987", -"T3T1_en_test_pin.py::test_pin_cancel": "05f5f819be61fec8c7c4341fd23c1bccf78cff93f05d573dd4f528bb0f1edbf5", -"T3T1_en_test_pin.py::test_pin_change": "b5e034705dc4490c0b77ddd73b05b091a00a07ff8f796329f4daca5f3b2692e2", -"T3T1_en_test_pin.py::test_pin_delete_hold": "6af2b57682fef94129a6e8b527b02a44dff2e996ff9695a729d339b1715f79e8", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "c0a1204dbf6300041da7ef5b1785417ff162ef8572eb4f6cca8cf4caae88d00e", -"T3T1_en_test_pin.py::test_pin_incorrect": "a8b0d396ad5e5732586e337f16db7f25ca9bf8837c7a3ad889049db6c60b0e1f", -"T3T1_en_test_pin.py::test_pin_long": "8bbeb3622777a8ade656e1d7babfc5bc5f0e2d65cfc71e44f6547ab690d807da", -"T3T1_en_test_pin.py::test_pin_long_delete": "4183ef3dc3ea6c8b469f53c81f373ea86696bc60791bc58e2268f223b01b5ba7", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "83ab91fdb4264beaa06e3aa241ae894548d73c647cb807c31ca456d4c809d5cc", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "a96907da6f88fb0271d98e7f6630a3282a8439d2eb847811186b46fbf8135419", -"T3T1_en_test_pin.py::test_pin_setup": "61975663353d6a02c0024c7d52d481b096f4ed57ab7a5a043367d49d586fbf38", -"T3T1_en_test_pin.py::test_pin_setup_mismatch": "2ccaaf68e752185f567a710b9a1c24b7e0157314c7e9b8583658b320c8e6cc79", -"T3T1_en_test_pin.py::test_pin_short": "c0a1204dbf6300041da7ef5b1785417ff162ef8572eb4f6cca8cf4caae88d00e", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "cac6df29cd37208e4154615852ad8d28642bc9cd1ba88f5a0dbf3169eaa04dc4", -"T3T1_en_test_pin.py::test_wipe_code_setup": "cfd7100fb36a1fc10b613fa400c22e2f06b7c50718080a3a632c3181faeaf557", -"T3T1_en_test_recovery.py::test_recovery_bip39": "62947c5512e7ba33f77af5d67d2063918dcccea5d5530db89f04bffa0c309ae6", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "35c67f93da34ba0f3c72a09076391bbc1ef24661d7ff8102f0394ee50250b29b", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "a9f1ab4971b614ec67fdaa9602f72ba5eebe54204b3735f8aa2b91ddeee41a19", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "beab50474b19fedaf4487c64071529e4217288942e4695ed795632559835b20b", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ef7f63ddb82bcd7ca92d739865cf466741b531b86946b1524b8440382823a56a", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5ac9a51693538d546a37d7c6c8c3be260849bdccd84d4f92a2c48ac036914100", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "08a2e9747cf0cc71d6fff582b7972e5c6b5a63bb667c6a63b2110aa7dc675b84", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5b61a5331e62c21419c8ffdd4ba8ff41b1ef18f9dcb575b3ad4aa5359062d5c1", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f5dd586173207ad0c2ca10288d9b0459bcd9c47b322a762bf69a48152a8d6884", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "31873e72e779156bc1ef9045b2ac30ba25568692032850f71d1a16dae9e93a7f", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "a2da4e7cd30e51e3a8587286660adfce5d6ca3dd0528a6c75c3f1c321ea6586c", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "c8ac6b447810ca25784351e810a18eb2979dfe15e2f83bb24e170e3149f7f29e", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "499e0b8904c178f2b88eee73fc90591033c7573f2f7ba246247bf1a5506b0060", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "43e9a64487eb5dd479c81e9f2fec09d9688832c5fffb1ab2acdd158a28572b9a", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "210a7bae28c84565bf5fc748583449bc71b5de5f3ae4b64bf8923cdb35b35ea6", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "40e03c97e2ef2887fcb8431d6e18eea96e4e50f75cb5936d1873248b96648bc2", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f552bd22ac89b24cbfe12f6f7e25e4b2b3bf127c1907720a19821f71f21bb1a1", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "60dc6da85afa676f6db815b1cace3d37497547315b218c6a996d316efec229e3", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "748b5c6d33fb03477260ff3552684e8c09b99d8a19e9fadd639e904fcd2158ee", -"T3T1_es_test_lock.py::test_hold_to_lock": "8692abc2f68ad3577824088bbb1898cbe7574f3730083224601d9fd6ca847252", -"T3T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", -"T3T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", -"T3T1_es_test_passphrase_tt.py::test_passphrase_delete": "f7049961cde87ed77ed2536e73faae8e77b8d30d9d75dce9465bd2c2bc5ae809", -"T3T1_es_test_passphrase_tt.py::test_passphrase_delete_all": "bf89b2bcf5d644eb10f6988743f2dbd3b9f8fa3cf2ee5a8dd56077311cf6868a", -"T3T1_es_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "287eb89fe15b58be4f6ab9ac6338ed9cd8fc5463c15eed663ff6be7b185bf377", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "8d3a77d9b996aa27071b00d5227fbb1c67f9d93d3789a3612974511fc00f15e6", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "79fffc686f8e154e4fe2380f37f5fad1a6853f83720326b9339084e0c715d737", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "3d28976a89877c4763d5ae55bf29d0ab4ef1d17c37535e7c485d931593b5fda6", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "de23481b08acd3ae320e55b30dcb33ffc62c011a4fb4f2bb619728a8e7b2878d", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "4e5206468e6ab2729471bfeff0bf1f897007c4435476618474c35729c2f5f5f4", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "de23481b08acd3ae320e55b30dcb33ffc62c011a4fb4f2bb619728a8e7b2878d", -"T3T1_es_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "978f69c3e8a9286d26fecfd92dcb8aefab18d703efb7f09040156c0bfe13c3fc", -"T3T1_es_test_passphrase_tt.py::test_passphrase_loop_all_characters": "974cb2879ac66ee32b9342242fa12c8cd8f72102fbf6323e47245738742fdb01", -"T3T1_es_test_passphrase_tt.py::test_passphrase_prompt_disappears": "874ccf635951029c0322e6d8b69ec3b9ef59a18cbd6d39baf9589fbd8612331b", -"T3T1_es_test_pin.py::test_pin_cancel": "a2e3180edead65ae2d612dafa42867a2f510d3a2409fc235101be47d1f197fb1", -"T3T1_es_test_pin.py::test_pin_change": "c48fb329766d35d1333271167f16b49c9b0fbeb3ecce8e9b62d25bfeacc76ac0", -"T3T1_es_test_pin.py::test_pin_delete_hold": "077302727057bd5b39ecdb8185e7ec4e0b4fb8b46c39f0cd781a962483e0ddc6", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "b0ccec10f6c83939c9d125c3bf3fa002a2e938da3500140137811a63febb7441", -"T3T1_es_test_pin.py::test_pin_incorrect": "f7d3eb4d7f477f78f1e25974efd1d0ce9387372861f902fecf4268a510d43b3e", -"T3T1_es_test_pin.py::test_pin_long": "5f727e79382488097f3b0cf2c6036f30646044f21ea322224575dfb585158db5", -"T3T1_es_test_pin.py::test_pin_long_delete": "cb1a81389b4f8c6de6b7fe459b94544e37184d195450ac597294a63bd48e41f3", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "3ff64da9880bd41b3f54aa910892d1a173cf73052577c1c44b369ccf799b85d7", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "aacc6d2959fcd8ba2117d6e9d2fa2bece29acff55ee5e62244eda72a9181ed2d", -"T3T1_es_test_pin.py::test_pin_setup": "42d4ec32a135fa091f60081e41515bed8c992dee7e5aa51fd285f5a83e14bb97", -"T3T1_es_test_pin.py::test_pin_setup_mismatch": "d5404828241cfc928c698a6f7ff07a6c48905990c2479ddc54c40cb4eee5a898", -"T3T1_es_test_pin.py::test_pin_short": "b0ccec10f6c83939c9d125c3bf3fa002a2e938da3500140137811a63febb7441", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "81abef93d84e258a2a4a4235a20a3c2a251820c8a24fe920ba04c965c16e8a6f", -"T3T1_es_test_pin.py::test_wipe_code_setup": "a6b3beefb6b1455bd2908cfe2b58dab7274aca7c98176ad88c5a945cac743325", -"T3T1_es_test_recovery.py::test_recovery_bip39": "edff80f9c3c7a59f46347412bf55365be54720d35543f862cf3a27209195dc16", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "1b15cdc0e1d8b2087d71a43ed131b9c21efd339a7ffb71f1c7330c180bd3275d", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "796fa6b469663f333d82bb296dc286d0c36be1cea4bcf5b7efd4371871d782aa", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "c1387c1c2fb4286512d93824a12f953f16b51295cc8d558cae6fd1e310eaa090", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0fb4c39f0a264948f1b2fe4d826227f7dea4f6e786aafbdf061dcb1ebf27309d", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "075062ab783981ebc2e39789bd560c129e28b85332f1c02242fa62345a09cf23", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "75b49a3864081aed3f971566aa7c8b571342ee93f78c3d4cc1f1aeee968e813a", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "89722867b8a3bd50019824f9152bcb152a77f108d1ca91cf4dbd7a02e565df6d", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2cfdef780039ba2a24fd93545148696f6f8b5f7ee3049c3e005be03020655bc5", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "57aa1b6bcd629465c3f0716d0be70861c124264d601cbefdeda7c3a8498afab0", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "1f7c2890d794cd107243e4d7892a9beb209d98437ff7ff67eb3a4a85bdbce4fe", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "231d960801a67f9264d975e0fdecc865cdcca0d3dfccae71b8c6906ff1e7d1cd", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "88ec818a2193993a5cd23f9708e8d343c1f9eca505759f4a178131b56c0f4e95", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "6e5ffef280c38a6271cba4221ab7e686c6918e20faf1db24e1ae06736ecf8bda", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "70c84970b185ed2864c3f90eb98a3db5baf1872911dd87021e41531e93553d3d", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "6d4aa4011816184fe5dd277e931d370d666e0da7f332b74d21c4906a9fdd2bed", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9d13b27a5e2c3b59f9a9074d7b0f6a88c3c879ac899565a668f2dcd45e2970ed", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4a97049098f4a972435269350f85aa4ce0efc9b48a34bb3521e2f16ae7f20f87", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2942aab24575e2ea01e97fb7519726a37218511c3d815f47cac096bc29af7ea5", -"T3T1_fr_test_lock.py::test_hold_to_lock": "1b0ac32693b45bd3f93826006a3a33efb2619b7d9698ca35be742c59f6f1411d", -"T3T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_delete": "4b0c7f08f8e573a8df489f1c342bc52637fb0e5a306a42471a82668c443fea62", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_delete_all": "be782f4684be677f69bdc9ad264858fd1cd21e8184c3c76700633ecddf0ec094", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "0d5481161bc8239c790f07f67249e8198bfcb930edc85237ce41f2540e822eed", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "ba7d6b4f413bf860a4bfa01504f4e063b6d8bf9712277c7cde5f74515f3c1612", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "382103eb3d416d90ad1dc82c0b0de8c4d0cb22bd8caa3f29c06add807c81df6f", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d2a8394f5b38d9cdc5001aee90878216cfea406cf4de00491d2bfa18b4522f51", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "ca04bf1dfbb0e84966c2b3a77efb7862a113f7a1df126dc8a07d8161b6f37747", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "4d00ca50bc9e09f2903b799e59883c25c12ef1a9bd0e39916dff3985f4571b54", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "ca04bf1dfbb0e84966c2b3a77efb7862a113f7a1df126dc8a07d8161b6f37747", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "23fcaa8ba5d295c6cad8e66622514dc1d382dcceb2485046158852a2af508753", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_loop_all_characters": "138f00a9fd5d8d49fea2062b74d3518ab6ea0c0442453743897ca9f4e4001610", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "2338104c8aad606e9ccfa0774ebe33a688c5b9237289e8d08de16fc6d6c19426", -"T3T1_fr_test_pin.py::test_pin_cancel": "d042a69c511b077e6feb819da7234dcde385179870b46f968221be395a3cf16c", -"T3T1_fr_test_pin.py::test_pin_change": "843045a97835da52bb54fa427d2b4747a405c3ae8f8f016231f0e811da676d42", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "991d6377d39c485bb96b4d4a4bd0e1d4a36fc3e1d85adbdabb936db769f06f7d", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "b1da4ebb9e347f2759870b511cdbca6b6b41e2e9af62b424ed2c18e908dd229a", -"T3T1_fr_test_pin.py::test_pin_incorrect": "3f74004795c0ca97cf92f828fed5d055a1190c6ff80dc9bb918cc1c2adf590ae", -"T3T1_fr_test_pin.py::test_pin_long": "2fb022e6e95dbd6069a7a4c5f84af65601b5f67bbb119d3d6872b7032d14fb06", -"T3T1_fr_test_pin.py::test_pin_long_delete": "ea6e4b13819e1e3905eb141456a603d99e85480fcf4909c5c87745c4a82c8819", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "e705c1b9dd2e5c93e68d22d6b2e9c1c3f468ac1e921a610ea9ca83d90c31642c", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "476ca666c08fd17d786e50ade620ff5d83dc1b1b9f12838550c91b428e3f8ca5", -"T3T1_fr_test_pin.py::test_pin_setup": "c89bab92f2c6312bcb90765b70bba4acea65a5404a9448d1a48acc65e7305c87", -"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "68b8d7176492ade4cee98bdb8a8b30cfe2870b2a9c7a69edd8209690399e21cf", -"T3T1_fr_test_pin.py::test_pin_short": "b1da4ebb9e347f2759870b511cdbca6b6b41e2e9af62b424ed2c18e908dd229a", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "2e1624de4edb6f24cb6915a68aa0c3a1ed96ed12b001874574b7833a920a57a9", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "574aa40b533b644bd133d48d61258c220a3370bd5573c769e4f17ea87c9b55d2", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "68e149f8af48153e48c5c7c4d0b81d499ba619806306a17ed9a42427dbf27261", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "7259f03479342329ad3e17880bbc6fd198eee09d0884df8c97d225747fbf8841", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "a5169417e155f73ecb329c2573e79e37f30eac2f1f4ba7d4a7dc60f0131ad1a5", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "95957ef5e91b9e091145be5b2ae87d6708a4cd273ff44cc726a16d153beb04dd", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4d7829e03cd18f428d3a2813df1fc07940da58449b0c5357cd56814efbec90e6", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e227438b61cd2950c9c49d91f4888ed665e644251cf3696dfd7368849a35f40d", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1be05a4f0517b1fa2501880db571221a91754400b6e30134714e9161c2f7d4e1", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "cd2e48cd72798e720689d05be404ae40ea96e22e6e5da298df3bf404d30d256e" -}, -"device_tests": { -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "fb9519eacd90972796571a24485f1830049e1e610b53fcdb65ea8b1099c8cb0d", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "aaf8e9fd3056e69ff7ac84ad051f9511e9a5076b6a34ee05c696ea3e3f90c508", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7caa0f9ec73082f01f8426c29e4085dddc29e3f75694e343e3ab60848a8436c2", -"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "78cf99ca978c3283895efa62b9b00259590b3798f61daf9878c10a00e2be8324", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "cb11fa560314c9b0aa64881eac07a62b7d4c7dff12c36515aec42dad99114cd1", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "40d07ccf03bfc3f91c8f748a871a037599e61360fc67c2ee8408004765f7dd56", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "d4346c5871b0541ed955062495922ce127c58f59400896ee1c9bf8a46865be62", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "cb11fa560314c9b0aa64881eac07a62b7d4c7dff12c36515aec42dad99114cd1", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "40d07ccf03bfc3f91c8f748a871a037599e61360fc67c2ee8408004765f7dd56", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "d4346c5871b0541ed955062495922ce127c58f59400896ee1c9bf8a46865be62", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "c9108adac3ce23380002a5019496c0224d7f24a05d12ed881cf8a444dd98d558", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b3cbfe5991c49b088827c9bb5d22e7b8267f85cc3ada3e0594b62845f2df75a9", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "509afffd6ed07242d5e2c5c1fe216e9a277f42d5f9d459084db3573f59bdc5c0", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "9b5d0dabf97a59321f37f5fe358d80762748326369de128e51c5f0c444c7e9f0", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "830c7d899e8685abcfa7720a736fec27bef71286633a9e2732fa28edc63b6d7a", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "830c7d899e8685abcfa7720a736fec27bef71286633a9e2732fa28edc63b6d7a", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1239ab191a3617f42b7158c9b00dd1aaa91d62b895fd0a32dbbc3e99a7326892", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "c15a5e98c6abc7a19c7e39cbdd5371ffcf6dd7836a325d6da4a1cf5fd580b634", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7c420658ee3d6c5b4d3d761af26de66cc0bcf7c471499deb274d964dcaab950c", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", -"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "b2632cca34ef5bfa4ec82d9f42e6c7f02ab2877641946dc15e00545d35c7be1d", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "b2632cca34ef5bfa4ec82d9f42e6c7f02ab2877641946dc15e00545d35c7be1d", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "75815dd5a677052badff2c883a54ff5f2f1dd1eb85c566d5f8e164961fdb5db6", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "18e5ffcf03fc8e9cc3e9bdbe5912158b07aa54c56d68ec02e4c23accbb78388d", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "95744de25688a176e8852483d73154c3bbeebd1825442d37c2b20deebe0d523e", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "42d19a59b4f8b00d946e968b89d68e3cc10bbe8d017402e3e82a0c067d384b27", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "c0dfed142ca786e2407183617f0331a3071b263c411002c31eefd5776d493d0c", -"T3T1_cs_bitcoin-test_bgold.py::test_attack_change_input": "2db6ff20be95f12dbf430f3849d033dfb4c651fdfd5bc4f0b1b281558cdd44fe", -"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "2db6ff20be95f12dbf430f3849d033dfb4c651fdfd5bc4f0b1b281558cdd44fe", -"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "60a727c216773ad0add34655974faf217b94204641ade4181fec649b4decaf58", -"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "02cb85eed7420b609d8d36c586deefbbe32c4fc4cc92540e8e51e352e6ca6a71", -"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "7e56e2050861561adf09b67ad6b734787990dca2f306e741e27b457dd6fa95c9", -"T3T1_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "0c76719e80a7cea40a7b83db7c3e18063a79823f37df08e0a87e69b07301eac6", -"T3T1_cs_bitcoin-test_bgold.py::test_send_multisig_1": "0060690dcf1c1858ee49296bd38a3685271e646e2249811870d337aada8f8210", -"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh": "6dd5abc24b4cf936cc130b8effbeb929bffd2d76c044e48ab95cb56638ef50f6", -"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "d0c618339414593608cafc0d6c8a8493ad979591a86fa8f269fe1cf810d56ec9", -"T3T1_cs_bitcoin-test_dash.py::test_send_dash": "e43260fcb945fb101fa0bc56fd1881c1667b846a30cf7c7d2ddece24860d90ca", -"T3T1_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "2df942c286c677dea35be23e5dd34c0bc61667c4883444f50a13cf9067abb002", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "1f408f02b929a73e1a20d1cfa15ad840d81ce9e428f9d4ddec92b26b9f2b5600", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "dd31d727d7051c41678d43131aa672021c7ede173a1bc8be6d76a2ba4c8d12b7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "11eba9a721c903ffca01f3e5d2baebc923a44f1b302319350b72313c7864f213", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "036cd6b5d18f1f6b305dac3a1b47f34b3f42b7d2ab1b515362429ba66ed3a49d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "1c0f9973ee845302f60bec85a8d53075e9fc600d6246c88b74e055b200c9ef8a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "40ac879588fec4d9103c19fa4dfd982c23ce71e8c35f618be107ab071a971747", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "33f0f6605f81f8469e4f5f4d18364b10c5cc83e4407ad5880e0e2a02d2b9b624", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "2a54327763f4f4f5f273c81f812ef3834fe600e00310c3589569c2186cda9a9a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "a79193e1249d98e901c41f03d6e2c739c8fd94a8ccb1ba712db6692159ad3f51", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "2478ba995eab253054d9726be995db148cf1706b148d852ae5b1f5c6f3faea00", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "e73182844076116213091879fccd868b316c6c2790b951afda04cfa1fc615840", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "59f62ab5b50dc69af561f304de7ee7bb9435a7aa207ca190608006d3cd93de9d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "bee3fef9235e53253a6092d9c36e33c100be86c9433add12eb8255c3da51aa82", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "68df3189d87a42611c09da1d94eec556048f48644e1fc3700bbc22632462c61e", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "1f408f02b929a73e1a20d1cfa15ad840d81ce9e428f9d4ddec92b26b9f2b5600", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "dd31d727d7051c41678d43131aa672021c7ede173a1bc8be6d76a2ba4c8d12b7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "11eba9a721c903ffca01f3e5d2baebc923a44f1b302319350b72313c7864f213", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "036cd6b5d18f1f6b305dac3a1b47f34b3f42b7d2ab1b515362429ba66ed3a49d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "1c0f9973ee845302f60bec85a8d53075e9fc600d6246c88b74e055b200c9ef8a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "40ac879588fec4d9103c19fa4dfd982c23ce71e8c35f618be107ab071a971747", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "33f0f6605f81f8469e4f5f4d18364b10c5cc83e4407ad5880e0e2a02d2b9b624", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "2a54327763f4f4f5f273c81f812ef3834fe600e00310c3589569c2186cda9a9a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "a79193e1249d98e901c41f03d6e2c739c8fd94a8ccb1ba712db6692159ad3f51", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "2478ba995eab253054d9726be995db148cf1706b148d852ae5b1f5c6f3faea00", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "e73182844076116213091879fccd868b316c6c2790b951afda04cfa1fc615840", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "59f62ab5b50dc69af561f304de7ee7bb9435a7aa207ca190608006d3cd93de9d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "bee3fef9235e53253a6092d9c36e33c100be86c9433add12eb8255c3da51aa82", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "68df3189d87a42611c09da1d94eec556048f48644e1fc3700bbc22632462c61e", -"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "a7ab74400ec07e427aca117eb62c68c2af9ea1abb02ea8663faed6d9ec7cae4f", -"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "2bf3ac343b69d6cd6c02ba35ab565169cb897cabd742737368100a3139fc7cfa", -"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "c8f5b1d1d75e90613f9df773a7cdb08ec359db65426c6c6b59beb2c22086a4e8", -"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "3617b41bbb3c4a20f4918b2ecc9662ea76668fc60d3a4d28b8116fdb3a0184e4", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9fe895f0de1ae852fab160b0c2b966ecb9d72b251888efb6ef06e6fae3497735", -"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "216ee04bad948da8b3ef9c197913fcf0b4c6a05fe67922b423c4dc83960ca545", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f02bdd793bc9d1a3386b929b640c7cd234e12e31c217b3584408ae9f66ff65f9", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "cf34ba62cf6cc12f3fdf0401d78e9bd9f5c6506994be56d5f23a4147715a5ccd", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "93128d5824b378dbee0fc1c621d5b9809f9b8456b168d5051619c47d4966f849", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "58dcf7d0ff3fecec43dd926251e8d9f3d09238014072e6cf99f02df0dc471888", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "1ab953aa571c10d2356bbb62924e8d5183b501196a771f8439046e9834d0812e", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "0666bc103033ebf271567348fe9e18d058f8ff95f23f99aa85af0bfcdf27fe23", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a95b49220b9fdfabfdc8789cd25006f0beda025b408b9790aa3fa55a54c2b322", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "aefaa5ba8503d44099b030ed86d19cd42eb5e0efe2689b15a96dc5af652c19c5", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "92684fd176d6db00836bb8a8ef663d573aa1d2e3b3be9f19cad49203187d9c0b", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "9d266f727c227bd6aae9751317cbfc91416733abc6722c30e0a7724dd971ce34", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "e7d01f753a4d139af1b4deee996a04407e8c08a7c515a2425d5d7486496c4217", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "1674739b317a34350c0a74508cfa16b072e0763d3b340fdc9a54f54c555aac54", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "0907a688615c7a77268f77e96d94242e2c955663d34436a66e2a5aad3ea452fe", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "93b4b0ed08b14aa81d9e6ba888d9b61211ade7c85bc2f6709ac26851e0a42b72", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e92df58bc58bf0674788c498232addeccec4a1950177663d3c82cf3106dd9db8", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "ad0982dd43210aa399d9826bfe947d0301f1d1242c979700ac6c38e332f16e31", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "8e81d22e2c8213201c7c3c04bdee4d4cd50e5f19a8bfb3075bad0dba914f5d4a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ee52ce9ff7c0d6819402f5908ac2c6cc9fb1fecf092db2686a1f0270d4b1c0f3", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e9fed2efe072ceda24d95d68dd2b46af214bfe4dad8828ad8f6e7eb5539a9500", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "c31c057f1233bea662fe707936d5f805ff5569859872d1a16f7cb6b7069838db", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "4900ab403a334e04f9ce1fe6f5dcc7c667614f0d43c7ab9bcfd82572afee8d27", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "40057d5b33b209d877a13d750443d634fdba1dc4f1ef056c96afa4d0022cb58a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6d2023d109da7529361d15475efada889d4952eb8ef9cec905b980b7aaadca2b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "4411fd4d491ef84960b7ad763435b98a41597a40ffaa41bdf3b9681dc6277c5e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "4411fd4d491ef84960b7ad763435b98a41597a40ffaa41bdf3b9681dc6277c5e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "d48fbbfe1e657726b848678e62ee58c7140a918968e6d08ac3c8b87ac9738fa7", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "5a8fb423797ecd5dfa4dee111ee06d169f5b6b10f8ee7d1d4db514d68f640d09", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e3ff04198dfa626240667f4fa6bb608e55a2a715d319542d95e8c516d4a11ad0", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "870b1e8465c6855d9f24480942619b1829f375de868434f99eab25ec02abca7e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c59c3f921b8e92b9d92cb18319a712a985e106c79e486ff213706dd7b528db0e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "2a164dd3d1ac42fe25dff6989cabb4c2d4fcc3c7c78c17d676978bdabfcbe1de", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "94ac255607483da9000c2aed6cbeda88049e9a69c28f7a7b8b417834a29f15b0", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ffe1cb6b6e026077d701af33dd45b5681c0917b0379629ded4e06358339b9689", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "961b117c6ff544dc319d48fba9c0179c44f6fc0a1967bdb31b22728973780cd8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "2b03ce917aac4213ee0b5dca9f86ab5c4184172ae801550022eab43a0331ed09", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "c16723026e90abf940df848ac3289e2f9066b42220e365d0f20185a86dfb6eb3", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "873bd4842c7738836d4218ad7ce22d765fb7e3f53b461b6522e1e709a4c744d8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "1b933308fa3406cb326dd1e5204c3a913bb4fa8fa287519be5cdababe6323219", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8d9ba100ea5d88c12fe2ef196ffaeb21f16fdfd382a9b40d86786823841b6039", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8acbda5f001069325fc362310214176e6b266ec178adde8f3353ccbed223f1c8", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "0446cd78f7bc36ee042e21de615f0c9672b3e108ace106acc314f12deff744f1", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "e9cafedcefe117df36dd95349064044c681bce8363450826718699df65e47a88", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "d47f29d3516f86b127c86d08b5ed45d0c3fa65dfb106b55e29aedb514359fdfb", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3087aa0c1d1dce2c3b5b201569b0f953a99283dcdab72db89ad5050a871cafc7", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "0e32a10f9503a2395e780e159b5033145fb4f3edb672be479bb2d768cb1b4b59", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ca298179e446e5d110eb2213d8286053a8d3d41cf7005b8a867dcfc72fa4b3fc", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7962036a573b82c9511ab127e842ff5bc53c6008d4a3590df764d12f87a4a82f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "81c0a07de0b578d04ca64ef743eb2d26a93098069eca00dfbc8bac7167b10d8a", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_grs.py::test_legacy": "e9f2e4627c9c65a27d6c7b0124aac0145bc9a76131cd1d3e19f8986497afa13b", -"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "df8d5f03ebc0af691a2ef4188777c081254a3b33c5bc8473eb0118ab90119d1b", -"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "b22f38734c3c6fb1840a16a368153cdb6ef2265dd3cd7edf5a2e304f80c5a515", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "4589151c506e97bf7fb2f45fcfa11ea950e151c802aaaabd67b2f9592dc1aed4", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "a80bb00f4bd2ddca14f6fe828836a1cd32066a696ef259412d7ba87db38d507f", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "4a14d439a87863f36801ace1521479814096b417c9355646d17a54d48d9fe255", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "777b0f97d01eda4116838a817491e2abebbb2f47f7ddcb61337d45fd5e016c74", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "be10e09800f8b5309d50942275d7122040faccd71eb0622acbf4efefe2b39254", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "6b021b1bbffa29c5ead1845d26be6548271bb4ad9db4b1f63266f1fdce47080d", -"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "4a6bee4fe45f28f75bea099aefc41a471bc4e61fa5ff013d37b31b79a9242a44", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d2e069af15313c44ef9307f6b1aa28b4b11e6f5062122a924c92eeecce4eace5", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e13a77a4da94e0ec63285a6ea1894bc43bc3575666e97fc4fcb50fea434f81c8", -"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "a3bad4796a417941f035464615782fb96d6037e3b491b6cd0d9738ca47f6ca31", -"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "409c6641d96339ab9f5d459ea7f5b59a578f5ab9e667703e3d16dd606ffe90af", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "69ed585ebcf3caff0388a386904fd1f6e0c782648a557bc152b1235b9a4b7b9c", -"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "f2002c78ce94a861a17d9ebd7b34a47b846ef41352583f76b265c8b659effce3", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "c590209a8aab02820aa5e2841f698a7f22475bc0f08bcce02f2db9b21a2abe1b", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2c7cda253567c83dab72d9ccaf724dafc40d52e244b4aa25f1dce0c1d6e43b10", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "f252ce8846050e4bb8352037ef8c3d65f24fb463a6b9efafce1684d075227138", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "58c1f15b65f9c825a845434a9c0263ae12051275fee79c7631a0fb24ed6a836c", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "40fc42ff7d5b8ff4751f84cef6dbd6158d7b744e20199e1a8e4703d03b7b8e42", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "32842acef03e92bb8e9588c4f62c720c090b76cfa05b1b501139ecb80f440924", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "2cd39bc9256d0fe145193e4e303dbac4513831025b5a84c95a776c299e223cb6", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "aba263e4db929b988210854950b66b22b9d94b1aeb125252a2d4167627f71298", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "3d1b4f61755f248637adbc11249ee95ddb529bffee2314af5977a9c5ec838c22", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "cf749423a179a3fface38e56cd42cebe31f2383b67ae4fa5ea1d43b0997807d2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "1296d9e5cf29df1113900ce8156ef5904f7879899047b081d7947952bc90f8ad", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "581f6cab15d6d1ae5c0c2c84923c238a141d4c6f96dd4e888fabc3949bd66da7", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "c549fbeb529328b37525a91d79ffba1890d98e211784c7af8af6fd9e6ab222ab", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "cb888fa01f769e7746871425c246a60a0104854cd79f20f4daf14f48d3a00bcb", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f7bebea8c494ad7b2134a17a0ca471b60df5b91f998a502ab9a4dbfe9cf0f549", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "3ee537d523909e27c9e484ea0f15a9047ccb108b959234c3c8c70471900bb370", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "927922e4e228f2c62624a65f632dae5cebaf739ef68fb8a981fdfebab0f5210f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "a8a372ace59c3da2c02d659b1ff51c99eb41c3718847aa655cd7408ca5429434", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "f579e485c876376a9b5d6f4cac99aa9756cf63f7239a8007d11199de2bc75c70", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "c1fa315d6e00f3a86597a062b345485c9368c491b60939e829ad4143089c7460", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f0843249ba63e22f181ed36d0e97d1230f9f15e5e1c1b945098252929d79b09f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "9d496f2c5eda2c5661ac7187dfe1f73525c649f69f304efe3dcf485e88628094", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "48e26580a0c643a7996cd88f59483274462d5de0a256ca478ddf7c3d8272af36", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "ed5c10e6b0aa6e58eec85bd80ace832fa7d155e15f92f2e4531c8aab7ecae036", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "c71748d934bc17040bf0d3928b3c4baacbbca8021aedc43d9bf82af8d50da779", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ad77552ed741f9d93cf818597151f44f204e31754f33914018ce8985344e22b0", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "98271cba7e1e73598e3fcec535a6c026614de476235d35573382170b661d5316", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "600866c5ddf653eec4fe3a52c1f3b84f901e327ee950c1337e9dfe9f9721a36c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "678ea311c23190635adb775d22ceef04fa26338e74e6e2acbea4ead3785fe1e7", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c91fd16ad1b1c287e19604c0545a29d5c15b81c7a740f0bafbd1cac1b2c6d561", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "8537548d96aaf358a46a49fe2e6d80e18f63ccd768915a0918e61ebae58ec5d8", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "5ea91418c282033734ff510340e6cbfe23e92d9622fc6366a9ed0f3d0d250614", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "f9ffaf8c9c6705765e7a53754707bdcf963f83a250551355142da20428c8c242", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "00c9fac9e9f6833dbb386d7df1c254a5f71c0134f6ccef09c307134de110db74", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "ce0a7178100f946c14cbfc2cc9245794f8b2471b4a2bd80d631633e3c91f6a0c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d6621625501f5be1b437d5b9b3ef79d4dcfb3a8962e894b010060dbb938468ef", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "cb8271287f888db3ecc441523efcad5cf8e50a855efdd775a9ef1d917567819b", -"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "f1a5eb1cd1ba8bf574e2bab8959e8e660e132e190a852e4993b05b0a330d83c2", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "67de74bc7692e72551145ea28517806a2f9ff570865050b6a2eeee34375606a0", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "facc4656751c47122746af3fae3d2933088abf5db95f2fa436168c7e93790771", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dba56c6086b06373ae3b2a73ff3cda693f982ad74ff54cb80a652e2d2096b2e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "41f5daa53c7b5ced79b626022b50ac050e0ebcf2f32d8a243a7fe1364ae030bc", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[decred]": "51e38efe9dc235c6685da45b3a4b71edcb58dc7564627f1b80bdd6b5fcb6c7ee", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "a58d3d6778193f6fcfad0ded221b771e12ebb1718b2b3e4bf8e7f4d214c17e35", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "7edbcf556534ebf6ae26350bb4a427067c35a3debeb039a2fbd225c00b39f889", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "94cc6185107ccfc1f42e0e7e987cad2ee734030531076d232ed0ea006abfce61", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "f243659557a45e5a3afd923a54b0da12286aa389e54819d273a5f6a96d790f22", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "60e89bc2dc0725dd089296f4762f6762026eb1ebd9b94deb8403e2163b1bc47b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "60e89bc2dc0725dd089296f4762f6762026eb1ebd9b94deb8403e2163b1bc47b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "0e778ac544937d4edbc363d30a0361b7bda31685dd1c06ed5b204677da1003fe", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "c55dda4165bd7af19e32f9c7a32e11fba2882931cb0bf341218d614cb7ce1041", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "d9a9667d41fffbbfdc03e3d4f0542076b84a64c38c0054485f779582cec79415", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "d9a9667d41fffbbfdc03e3d4f0542076b84a64c38c0054485f779582cec79415", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "14086cec773f27ae43eec0edee03c51c0200835482cfc27158cdb08bdcb0e068", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "2b6db5db755dc9a81256a02683a9fa4dee4ed4e709233411ee38528a2c7c69b7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "6c60a24da7619243ad89273097ed4aafb20c244d34b6de0c48dfc70c84f619c7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "6c60a24da7619243ad89273097ed4aafb20c244d34b6de0c48dfc70c84f619c7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "1dbd2a518301759a49d0c4ccf2e45154fe6c13a8f46958d97c74f8696f66509b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "fd87597ba8e7b196d3a5e6c19da6f07964b38832592291fad47fd94af02cf8f2", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "8dcaf9b2f38e4d419090d4b067c4962b0e6a7af5b2a5e33b164c95e97fb537ff", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "c7c3b4178d5f0dc62094b35aa6f2339a7a6017442f122dd5a5509f50319925e0", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "63268e589d336c72a83b33986fcf295a6cbde09857bc09172f276b259f327d4d", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1e6a092053fba32fe77283283bdb62424ecbc6239184a22926e841a7d9a2cfd0", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "1a50cbf61828158fb092d31dc65ca3643604f935c5937ce8ea68e5437281eb26", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "ff85589955299d71075223bd8bce9756a798b1722946d02137434d11a872eae7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "c38b5dca5341a18a3097dd5fd2ccb56fe07197cb6d3b43745d91a6c2ffb3546d", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "f2a845be528d2014eead8693bbc03da54a5b22b2bc40a2bc1b36c39ef7551b16", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "f2a845be528d2014eead8693bbc03da54a5b22b2bc40a2bc1b36c39ef7551b16", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "f3cb657459d0b4a4ed2c3bbf5a561222f09680aaa1b906193ecd10678483fcea", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "aae7bcc78d776474c2c94421390ecf532bb6c7da4f00d2f139c89269924affca", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "5196080a6cc53dfea35c5675a5283fe0188a89a2a5c43f4f93a666d660a85033", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "5196080a6cc53dfea35c5675a5283fe0188a89a2a5c43f4f93a666d660a85033", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "cbb342898ef09102f37be1e185aeba59fc1afa97f6a4ca86cc121b90d42fb1fa", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "378db82979a693769ace37f1cbe32b6c9829b7b8a6f1a719bde7b8c0f03800db", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "359e33c4116f38502f7790a7309b7e5907afe41d721dad02f710170a73415b9e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "359e33c4116f38502f7790a7309b7e5907afe41d721dad02f710170a73415b9e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "821d22644eac013e893d051ce49d5ea3fc0b8309dfabce1183de1241a9b22f00", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "37bdf83a27c24c5d310b09805459072b0f7bf4ccd990afbfb07c8194d8c667cb", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "2cfece1833f775d3420ab219e509e3555635f2d9e478c1037d99c74a92b5a444", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "2987348abb17aec23e535de31cdf8ae8c3193302c83d664986a206f4588586f2", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "0e7068e4bf29ef0b7d8d69d0e72583c20c3dd69566385e5c7a6c5f73c2be8c29", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "fdd5eabcf6137327c387c8a3e96cf83f0653c336ff244ed727cfa083eb619b45", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "8e353ede64f590129987076e180badb95f1c7a8f6ae76c3351d96278f4d06a06", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d3d6b2a424da15e8d10741728d8545714102065bc7994b8bc4336e3d3d875b1c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "0d85c285504c18080ce0c04a7e81ceff0695cde20ff264222a0692efc07dc4d3", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "160724035b4cf0c6b11047265b5d7fc538adbac62c3d7353718915dba51bf6bf", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "4ced42503d09292c0985186444200e6f9ecff95925b93c2a455eb8a55db18056", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "aaa405e55ed5ac4d63302ec5995a3df8d3282a3d37a1a8f262c8b2e6b251ed5a", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "48b3ed5f69b9046839133aa6e287f1242a9e192c33404add578ab6055502dc64", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "4f48ec019c1d590a90d17ba3ae95dfcaf47a6cb5dcdae01a597e270cd2f575f6", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "9517e7a6abc3883cb7f6758a232000e494dda42131352e8f095ebd355cad12d7", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "e4983b9ff84ec65b0ef21eda2723cff184fd9875ab6a2446f245209550b9008e", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "30e2ccdc179f67772318bc95bb0670a01762c67114ccd4f78fa8975dfffa1211", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "ec1061dcbbc0140884f4e42faf3507933c2456f67003647095640f7615576a3e", -"T3T1_cs_bitcoin-test_signtx.py::test_information_replacement": "220262309578a995591ceee444378920823ed4e563b46330d246f66837b39d89", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0c07bfc6fa29584ce1dfb6515b00da4870ee71c0ddaf2d063d88db4208bf57bb", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6947654cfdba912e3d805feb52059740de133c7e7baefe80cbab0915da676fe7", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "faa2db37151bab191aa5d8b27e8850410c07d40a2423097ea9388f181b66311e", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "6947654cfdba912e3d805feb52059740de133c7e7baefe80cbab0915da676fe7", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "faa2db37151bab191aa5d8b27e8850410c07d40a2423097ea9388f181b66311e", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bbcd6fcd974499de2f167ca68a1d101f0f752c9e5d292c3895c76bc27f0315a2", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "7056d9fc4f52093ec579e9155f582d3eee2a4a8532e3fc4a48d28d06b2d2810f", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "3e24ca4fffc88521996d559b11ad5205029c81cc24fbf7403582e7ec8b1f515c", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "b992b2a8072df6147c85a9abf5dec4d86c7c2c9ea9933fb6b9428ac0de6c661f", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "348fe671b84dac3a0c15cec510e36ac110978cf04d3fa3c5a6edc50560562582", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "784e565a085a15f4715fce96e6cd73607d070f1356b4c64ee7d727ecc23d27a0", -"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "ac90bd47df61b14b56f7fdc958f5f879a08d93afee93befe9c68e6291636fe3d", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "6b47aa5f1a8e59418bfb99ff5499a7aef887b7a50996ec5214ca8eba470afca1", -"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "7a9370fb7106255f4b6bbdfbcb728cafac4b33561f8e28288a55336806904f43", -"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "4709f478dcc3844434aae13ad94b7fc171e9c54a301c83da735cb27eefcfcc1c", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "15ab6ade7aaa5e59bbfc4b7b80903db1bba47b8e9f9da828b1f8fb91b7bd02f5", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "195c8f8db23364f8cc919cce1526a5c609da19f136440b595b23dedf98c93f1f", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "63b878d3335c31c48c4465ba8ee7deea649ff6521603249b5ae9bc7d1a5a2645", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "c4ec99155b09db15c81cee7a70f10821698e87e5d5b580973d96ad4362ee2378", -"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "fb3dcb2539f4b7cd29c619117c6c3287d8c1bfbbd88f7485813d632c37b47efe", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a794535c8851a673d008324fe7d00f87054861de7f5e5ef9af3719ca88337ac2", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9b3ffabcd01d218e6601c802e0f7a952bb9fc2c88c10d315e3a1dbe0d5a9da6e", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "d27bc343b644081ab4df811b5c991109164d7826651c53e6f67eaa3ae0e3d581", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "5ddaad6b563bb384ea3ca37dd04bd440dbf360006fb900a271a23472f4012c95", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "bc93411098685c62cd74ffa15a6462d03faed2582fc9c8eec868e45928b6344c", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "435330cab18bcc4c9a90b0e78cf5c1f41e37763bcb98cdc79ecbc6b8cfbb65cb", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "b24df2c210c99e604bb05e56de2641d5e0d62fdb00b2d06a22c9ec6bec6c1193", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "5aa315d3e42bbcdcb4156fa0de2aec6dcd8a2b1d436a5be5f3e38fdf5abb720e", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "ef1d126f03bb1326ae2079fa9ea17b87eb4fb3f4ee75560d4a79c04a9fe579cb", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "4ef65bff4f16be5b8ac6ef3b782f1b2588d2633a39a61fd2813e064812423695", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "d1ce5191bc297f1bc5584ebbf2b5ca7546617132c3e0a4eefd1dadccb4e8324c", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c0e0e9222488565f241b095cc03d6b02fcc05789386da437e5167f3e0019e313", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "3e62a97456389a751964e05552b621d4d95827ade9114772ba990927f8d8d4dd", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c3bc569989e0c3d656cd1ee4570a1235527e9f1993af0e3917971392b46efa45", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e2b3aad7f6b4f397051906db3fd489486d608b2d0a5aad21166a3c49d6bac583", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "3380baeb84390ef2aaaf7938f6a80219f96ebd0b2fe08c17a423bdb4a220f0ce", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bb18d15e898c990e5da5bd17b07679413394a8f198ff74b241854477513aac89", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "1dec0b819a3c7daed521529e0b14541d227d0a0788da09adf4f0e4b550440433", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "97f30b0ebfa6a32446d4b848e6cd13fee84793cf11ccf8a33cf3b1643fe1e5c5", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "5d486977acc9a222587bcb19cb98405435cfe4ed890964029d264758740e1838", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "97f30b0ebfa6a32446d4b848e6cd13fee84793cf11ccf8a33cf3b1643fe1e5c5", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "5d486977acc9a222587bcb19cb98405435cfe4ed890964029d264758740e1838", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a4aa1dae137b8877a1fa8911ca785fafac5ae9ba4c95c6ae9f33bd5c82f92741", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "b9f0d5744f87930ae15f9c02ba074945ddb2274346bdab6a62c9f9499b2dc72e", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "25ad42d8fa38902212e7cf26607a7bae29691c7695151cc20899e8c5d1d4a253", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d7d20560e015abae17fb6b16e5a14c08986811d3e66007e839192bf6c15e692d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "82fe91b00c8e0ade7f7a98ae30a21de18821f3ee1a44c147f6447b22728c5653", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "d54db070251b720ebd4b05e978fc9f721f37d96d3784411b72e66eca384d448b", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ff9a0dbbf9b1a38908a40fd5ee17173247214aef4ece9230b8cf8164df331d6c", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "613988ffe71102daee01364f5d9856bdc51b14aff5a852b59cca70ee7b3ab287", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a7c961d409d8c8d3de8a88f658bde08001adca691ab85fd09581baf37aecdd09", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6697adf95f477764ef1cd3c2e89f0a559f2d92eeda0f60222aad3d244a336fde", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "b6a4e304e7181a23f66192d186994deb2e5bd772d8086e47d16ae95e8f5c82b8", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6ad580f8a2087761241e5c2f3e3f9c959fd650319e0231538ff019bd35e58360", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "2e5ac929590b432292fa922e6651f809fc755076e6462b707c4bfc1717e4f65b", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "2e5ac929590b432292fa922e6651f809fc755076e6462b707c4bfc1717e4f65b", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "f3f08bb7157e8564d7118494b80e1a5b8c0fe6fd5a42518dbe69dfc0d7d717fa", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "d1f93a9be5e67994212c865227c7bd4dd97a15f683d43f879dc7c605ac6993a7", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "35f4fd127ddea03750100137e42e82e40e3b8a79f513c9efac675bd994ecbd91", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "f3f08bb7157e8564d7118494b80e1a5b8c0fe6fd5a42518dbe69dfc0d7d717fa", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "ebd61c48595b246d5dd902c7a2f9cf98e307b71a8e618fa4c827622789411bd7", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "65da5b443d7db1e47068fafb01bac0454331667cd11b6f749c908bdcc15021d6", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "44be147162a32edcb63ba11872208c4521b9db54ecbab79ff9a9a4daeed6c8be", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "01eef5024f2bf1e582640b51c2cb28a51b8d5cb912b5f7983f23a2dcfb46da9d", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "cf919d4381fae0b8e7214799687b0fe9466098a4d3f5f59b70c3eb2e69303cc9", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "96e62554f2dd7a4250c6e517039303817d9622ef42ebd892209b29f041730d60", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "8cbb19a0fbc286fe7af28b4fe99d2efeec1c63ea7735364a38a8989f9cea35fc", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "71dd5cf9d7ff23b573258046229905cc6eab91d040180b68fa31f3637049709d", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "1ffa53d2aafcdb73ba0d4c84524de1e2845a9fd48b78fc9c78e6f79d0904aa0d", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ed1e3d350632ce0ae6b35ab598dbabef9b30270ff3ecc5616bcb90564f92bf6d", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0ee04f420450e7ddbd20175d8f718f87f567d6171662ac7e8ae56c9179360474", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "9b46964e38efa379ff291bc66bab2c38967e548a460bdbc91e1fd537a80e5769", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "03d7c3d76fc9a5aa44605eef6bb970efcca467a126ef7d8bd987a4010de220eb", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "f838279241edf380bc7ca4107a4734b8b2caeef1be79a86a4079e2344ffe49ea", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a60f7192af2b22254cb09947e53d7ed25c02c97e9e0f2d35c4aaadcdbe22a8ae", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d14d3ac3c78e28b978947c09b17cedaedaceb3cd3dad2fa248c6a91548f57828", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d93c9c3b0cb687f75a17edaeca5ad1f2fda4bb7ec7e90d792772d9b3c845b086", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "99676918532997e6a27eab67b529aee3e805136c7242e77785625343fb34fb72", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a34f69a442c15a7ecf36a1f92395fa3360a9b7443f1c1905a40fde7307219db9", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "4d6255cf55e195bd8df6d6af2d8eb7df7fa77681daab7defd7a6a665c6368ef6", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "fe832936c31f69c4ec9bbe92314b9f31c2471b493a29e50d186a6d24439311d8", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "a146a0521c0186e8c31006653b48dca3e7924d3ea61b68f2605ae733fb9476ea", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a30a199d1ae68b3c94f04fbdef54929a637aadbe75cc9bc494c51ef5add56e19", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "74d502fa2730deae4c5f7e83c9c193022e97d99f1b5e0b166bdd7e6a9b7e418b", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "5c8b72fa8c5bf8e6b53e3a92f8b83c11884911ccba17fa9ec6d93e3ca8b777fd", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "042727e532bf1cf74550268fc5feaf5fa0a29f18b7bb9e1b26bbfdf6b11a1bc0", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "7a43153a3fca6c4f95145874456179f7f3ad34efcf7a5553b423c80d4d9fa296", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "48a9b2a3576e562ef74b281a5f6746b8c4a58700d58731e9abbace0f75922680", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "ec98056f5336471f726d89cc87de86398284db7c9f2144d45ad5cbe064704ccf", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "56e77d616504dd6e745b3defbb3347b03186254eecb96876bfc7b21aa334ec7a", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "daf14360982d28b35dee0d9662b8bfa076083b70f456fe83048f37e911c298e4", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "dade356f4413dfbb3892e6c788fdb4036daf294a48450b0716cfd21bda1c3d11", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "44fa7b5c93aa2dfe5abfda8f3c3a03ab6469714c49fd35f1ff9f29576a843cb0", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "f46657c3b65f74673d7f514e5bcbe19c82544745c79d1df3d728732956a8bb3d", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "56061c2eab2faa982ecc4b3fd5a41d1ca423aaeae6775ac1216c006496f36f21", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "3a3a539434a81447725602409782e27542165f082d5a115f3ed34a15bd9270b7", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "4439032b310dc32473d09db5bccb8cd5d0bd23f5bbfa6d096ddf185c4944a240", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "216fa732b14c21f774c6b7a02fc17770baa306d4dfeb54c9c77a85b0a619136a", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "7dc7613482d4e8c986377a85ca8fa6191426147bf767c448010208d955363a14", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "4c01473d34cb3fdbd0fd18c886a58229a1ce6362a6efcdf749dd1d6fa9eafb1f", -"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "dd75ce54d46dc216e7c0fa9306e1cf535689c590f058a5446648033b809b4e94", -"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d9c7687522d079023684b80e5821773ecb8748e16d0bffd7c44bfc553e08ee42", -"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "9a7bcff67bf1912f92474dedc94f3985d4e84be3d944285ebacc95dd6e144942", -"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "fe2a7751d96de0731c7b526cf514624ce01725e976cbe29c2d53e5ba43d2e024", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "e2503e29407ef25ebd83aa8b55ee720dfbef0a1aee0d74993c62d8bf4310e72b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "06e457d707de5058f0ace55c360a5c9c2ac6ac395ad4d9c40a0bd42ce5bd6eba", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "27e5475624b875a6a0cfa349b8fbd274bc81f9f5770e659046379f9ab3bdabc8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "ae638f29f9a7f1b7ee814dca5ea7aca94fb0cde6cd45a3a154614e036cebbe12", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "a297c002d533830bef599c02fa6e6b4e054597da986726ab23d98b0b25611d99", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4dced33bf016d2ffff4f4ee7f57a124773f2c45a2e5e6fb9b27c75cee8caedb3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da3d2954cf9a9593e3c0823447d68517ab7b87c3b999ee38ca384e64130f234f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "10ebc3ee52cd5d07f62a783f15d83e5e97189a612b7758779ac4b447501e2a38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "713e5572002c019749588ba89dd29e6fc49fcee04eb3e9a268a4f3c691dcacaf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "da5303e90f225f5786e405424369e3879f8a248ef6e83b6e6960408f706bc18b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "1225219585bad0bca1d05b329ab492c9ae151953d11ec709de4e53d5f687c8c8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b26c6755f8ec60f98f80013594558c00215e32a48e9214b4df0c024fa53b6f57", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "e39351ae973898c26b54848659cee91ea3d676c69df4b3c773e4d99553482bdc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "5879fcddc63c531df48fabfcc2de60318173ffcdd0a1901d3df01391245b0a54", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "c0deb646f7b576bd51190995ed33c7d51a0e01403e9604e2f34b55f51886380a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "c1ed6ffd94e0365da389597d93c5d407e70de1f4c945892db082b50ed4a08fad", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "b376f7247444665e43edb9fc4750b3110d1701a04ca8de52c474eb751e127802", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f784e906672e51a655ddb0fc1d77919d94b8ea2071e4a2827d99a72c3222afea", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "528fbe5b008204b88c08355815cc846781c5320d9c91b473cc30a4f91039f755", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7e6bb2a7318eeaa59f91af5043d1aa3104f789ba19fcad8916af268b4af59afa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "2d1d5f1c8a4d38391a0ddfe0d9bad60afdcd3afab0c063a54b02d262a65e61b7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "27c4480f454851cc3107bdf0790d43f702e215ea15c021d099947591d01edab4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "77eddda9ff146a73f3338eb52653ce0fd1f36b96cf370e64bab3994dd67c7e48", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "3333d5ae0e5db1bf89fa3fc13ebdde49d6dc6af197f0bdc9b07bc04c0eb552f7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8dfe95715e368b515988e1b7c3bd8097efeed5d3c1275fff07f34814843b6773", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a594861d42778723fb3ded922934af2ba49a07d832c5a09deddffee71c8eaf95", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "445c2bd60b5a052da63dad87ea70c29e0ed86f4d481d920f1dfde54d6816267d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a347b1dbab6408f25d2b63ac9a98301b828e2c20bd6b414217c2a68e87219624", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "bbb0c548cdc37fe5d48dcca601f8741bc6841699f63d2ed339816df9ea507baf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "58e3581c2ab38ac257225428bb691b753e6d859609c6849d1f847d77a06b0b76", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "bab89219682125df5a48c377ba46502b04a8ee6be24362a803acd6c91785e228", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "1c28e2e1234149bf87def3d3717c912ab08cf581412c241018fe034239054c5a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "27023c94f0fbbddcb143812eddd2f24266d44295167616932e387b3b9ab74d40", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "07251fb2bdd389377bed64b5950db0fa0ce65da99875d2340d4b3b283e57ca87", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "4e8072bfa4f1341a05b75d5bbd39116b3dfca716ffbdd8c9bb203d967c9fd85f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88b4ef87509bec1ba8b7e2285aaf22b63d4ad5b28e2d6d635f11475ed6e20ef5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e66cb8b4ba987ad5e7bb438630744731f11c93524544440d3cdea5bd0647e3a1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a0bd69054584503331fc491042f0b56e1fcaff691eaabb9fb7efebe4058fbbee", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bacd06dc8ae51b9841816da77fe59fbe7c1a801e54a829eb227bf54c6189dd38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "092f623707aafdd179c61e92fec27ec58b7548179f5047ecda9377a6660f614d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "f0201138c861d18b7141e6d67edd3a4b335625cbd53665cd6d2e1ac5132b81c5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "26d53add8371bf36fa0d1978f8b2e0e40365a88b8397950b3f40e60be135288b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "495837c4c660ab983c3454996766c61c01f98ec8381d69bf82b1c8baf58d09ea", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "25141226cdfa962869fa32c3a5d5b5f3bb4d6c1c3821e368ccac782377c0f875", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "30ff20cbdb009ceaf2dab0dd22c97cff13de6746e30d8b0a251b502dbac1d44e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1957d99baaa7b4df9b5391e7379ee5b1ef2bffa850c569484cbb6fbe86994faf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "8a0000bac3d9bf5b41b4eac9b9f3ba4b4555dbbf9a04de0c7d680bf406a59ad2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "a4ee98095613c42aad79adc78b8d4617fa0c181af97fb8ed26ceae43dc3d9ad1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "d15e7a6d269828c6194738186b1ae2df91d6f5eb27cb51bc3dba0168055aa767", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "c3c8817945f2a37f63fa92f035d348dee83736bbed61d30ab1647a73f7497632", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "12764e2f35b2b97dab990ac88537be93134631caed69977ebcf33462ae23446b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c1d160203e6cdbf2715809142301fb48e5c6f7a5bf0d3ac83bbd071441af8cb0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "cf47e1409d9e84262d37299ccda7c46f6bd9771c492cff212fcf7c9809fcaceb", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "f753f4b7836c5ddc23a4707dde3250fb59e404386447e8e256e9e3a1960bf5dd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ca17a7988a774d82daa513bcc74e4151a974b6dc7ddd81d3fb673b7c4015aef3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "06836af0fafde28ee68addbe62871e7d989487de2d73ad9fe8cbd62ad179b2ce", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "ebc751c8826184832c9ade7932d0946e51b302c0ada91634fb94b5251510a08a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "f90c46529559857ed18ba9ebac071e2a30f906316d3f77bb16c77a32b108a670", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "af16cbb55609f67477f711af46e3aae8c7a88e2542fbf1d1a5e729d910252ed3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "75b771fd9f00e743a22c970c076521cb09a6e58340fedfdf49366bdc5b65b4a7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "d48ff71a16e5b63c7da8094b98a5dee174feeafb06f9cc2a97c69c31bc22bb5d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "d05c3a906efb548f06e676b5202dabdde06992db96537a2d4ba13083959f19e9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "025374ed572e2854f38ca26abe65544d458e8f2a7003104827d862d1ba42f377", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "075d13a0b2d03e7115a2fd938822c55c8065c57e7688fb2d4c6b41015656a7fa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "7c48bbb9cd9131a0b93cad58e1f8b903c4cbdd7837fb83725fb8a78771572119", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "525c2effc307f98df5f7e09308122f93a804a1865f170913e8205e82d43448f5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c46d999c0466c88e0fd84be2b65135ee6a20fcf1c4c8c6fe0542fe4062d0cefc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ff448e383fb14aec0098092b17701d67bb8a3b4ac9ee743e167997e21a5fc0b0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a0d59b3d961690ffd41751afd28a94ee6366402a93a277a4f2c32d7ccb679506", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "48aaf2d49cee8617e53ce6db0c427e641dce7cdb8b3277088832d6d9619c76b2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "63e77cc2be608542a1f6c46d47890c369dae728b3ce73b930ecd4074a2e7d18a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "e56cc63b826e6c27390ace3173dced9bba37f513dd1b86ced965e3206da2a3d3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "8bdc07efa2bbd8912aec9eb41fb0703344cd16dc6b8bcad0cc0b8d436577835a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f58071562b859823dfa1538a3b081d3807fe23dd8e83c55781a9ab1c336089d1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3f0de896c6ff2946afe6c08c77cd82a3c167df1acd925edbb262bd5844fb2db8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e4c569417b8d52d20fb3d8da0f5a0bf5c4c189c924c97b35a4c1384015a2cedf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6f0654b16de894b1787ae81358caeba1c869bb0985ac9f5af4f16f86d709ee38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "57917aa2f29f1bd48985d313a0ee8d6567ed5942d936f37ee5d84ffe881bc5ca", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "d79d63261c239b44ae2c06b1556300785effabd9d587ddb1de6c691867577926", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "8a8349b86afbff0f66d0a0cb5a0c4b43f9d1f396c344daa32a170988f7163174", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "4d91489cccc1163689933079d0dace4ed073982742a4b05a065ace8d7a737ae3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "cbb195f3150b0c0db4661c5c7a4482436bbfc4b31dfe9b99f4d2d8188a3ee390", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "eb7e280c9d9c54e197e1f6b2fb41f93999e4d50f51fb15045a8ebb5fa4d8bc06", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "95e204fa43e86ec07559679fdc23ddd6f57c0e866435d1e3ddd186ecbacdc2f8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ed8a6991e4c72c62d07e2a80b99f3839b4616ec32e0eae4515819a0bea7db7c3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "bfcc3ce1f083b1d724688930076dd85008ef7e16620c03e25e3b4dfdba7a2db7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1ac35f94c99a195a2c90b11368bbd594bf94e672c54d3fe046d94dc2a6b1584c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "483ec6b1b7b89bf10c108c915ef2d09969bab5e6bc9dbdf123fdb5578d335da6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8c2fa55bd3ce4267e256cffd717b8dbc4d7ec2e48e8f6b656609ccee2d0fe890", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c8e06dd686f63412df2e08b3bf184ab9fba8a6ff482e76e127464d4aa0724b58", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e84bb01ab8469511a23bbf6ee1c43bcaace54d176409968e59675d331194084f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "62b712561b2a6820229d9c6124cb121249490fa1bf919c1a4c304438b94d64a3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9b67006969b8aeae36bd814c2e50611ae7376628a09da6fb6035d96b6ed10c2e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5bab043e66d25ff7a4a260496c0b19f7d9a78e7a9f90ef297f89f2ac1aaa329a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "55769832dda769f3e5ee86e7e45271400cc198f3abbf18f3f4d54918b24271f0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b4614508a92984e537976b66677402cdbb8f3ef66f1c20a1ee656ace964d105c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fc39b214e22446ff3658db155ed6997811dd7c06731e6f4fcdeb47913caab4a0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "6dcc8b1648dffe52af7f04817401efd814f466d62a4e4b988abd130754a92170", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "60dace26d6f6dbbee0716174142670943908ac819ec5b1b31cc1fa5ed76017cf", -"T3T1_cs_cardano-test_derivations.py::test_bad_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "205c2363f08942fe227b76d1d8f267fcab0c19fa55bcb59e582f135298b281c7", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "41757a529e9d3861d1b1b1b11302686979904e1ab92f676f38eeac5bfff6ea4f", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "3d9da2d36711495c6f45afe63e37bf88536dcf03142074d2ec786bbba89e13cb", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "3c2af1a1e5f0e4cae316b49c3ab8ca39f528e8150afa35a12f7cb7a6db43d2de", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "95b07a93e37b647592b6cd0d292b84f64e2f46785e0e31a39d805796e5e08779", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "c457d8a79a114cf8aa3ddbea19eb933fcaaafbc2a6465e926e5a156ad951085a", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "59cf0c189cafa6c5cefb95f22876145e3318269f2eab3bcc43073172aad60620", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "6713a9640c6ebececbf2554d445a3da6dc71fa1bb47a64618183eb7173d83c76", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "057690f59dc16e209103db5340fd9620226b6efeea941457a27a553ca2207087", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "bf60a00c4465fc322476868852c3b07878a2e906d3f95c0905abc78d89146c78", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "92715dfafcfe4067ad54ea9e271c2f4e1e2b5780994c588bee8bc2c1206bfa30", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "5f92a92ced7359fb22f15b8ed9ef9ab64ff39a567db0f579193cc8cb22612090", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "eb11532062ab02abab18f61b1cd08797d04f67aecb5648a4d6c5897ee69466db", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "15d48130af0d6ce87ec4b58b2f1ff1d8151771adbde8399f94f227b115a3e169", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "93fe08c9513186dbda8d73ec534654d42394996b0d99234ac3ea5826c0b5be02", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "600e5fdf90361680b0165e17749236f481429addecf700bc5eb3187bd15d4881", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cc8e5ba04e915396f6e8544b0425757431e3fdc5ba24b8d80e4fe0471ce56ff6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "4af4c9b00191aa2045cffe531395e98741d92234389d377770b9c32c9dbffbe4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "f49015a1ed733782a6dc7068f42c00730d2d3247e09df124fed8ecd8efea4899", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "3b0d966cd0b7de3c1a67e8fab25325b9a1f0be41202697aefe229c2a95f3126b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "b660ae76575bfce08cb9742ef1aca2a829f034b27d1fa55b5bd7400442006324", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "3ac54e0606001cb94da6a7342d7cb1ff6be93b87603dbe2f7a13bddca9cc82fb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "479dcb4eff6032005bab35d85eca1358ca39343d13d750eb14b9e92622674097", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "feca058db0765a0e8c7d045a4878f278a92d40c60add5c409a339fb13b8bd4c3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "524ce7fef74bd5368b052432983e655ac2f87ff9eb12fe622a62f1e5d3984689", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "524ce7fef74bd5368b052432983e655ac2f87ff9eb12fe622a62f1e5d3984689", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "70582f944d06e4288ee9f061e7b5ab2fb8950c82bdd30db50f8f0b543798cb98", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "5e9ee0c1c696efc846f1a088999312e5fecbb70e5e4fdef85e238898c5b00ded", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a0044873f36d7001a67ed6199d8487dead31ae396c723565ca9df3ddbbfcd8d8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "20acb7183f1b9450a26afd41606b395153b57dec602219ef763904dae4b17b99", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "74dfbcfb1ac0492b04675d3951652bd777a2b3fb475e92588f35fa99eb4f7026", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "abbf65911333c1fc812d4b4adbe8121a7e5a5df79e9ff3b00808eca965c74633", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "875565741525f7b482154f1049064cf12d37998b24789bcbf9b46e6249efa2ff", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "7199640aa463aa243e98cfa20eb3d4204ee46a8f97354d684c2c6d738a6c0870", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "8090a6b148b16e957cd572d7b007afaef79a693ce204eac097902e21b85fa05f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "74dfbcfb1ac0492b04675d3951652bd777a2b3fb475e92588f35fa99eb4f7026", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "abbf65911333c1fc812d4b4adbe8121a7e5a5df79e9ff3b00808eca965c74633", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "b024d3faeaa2e91480dd3fb0eef1d676e88753f22019d17e75aa9ddd8fff4b42", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "91dded5c04d5d9479c118e936fbdbca7bd8991ab7c61c915d9772279e6a7b9b9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "c724c7f6fb49ed728d2f84d6aac4d4c9153fee165dca33170e4f81244485a9eb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "caad567f35cb99226dceeb966cc0bd2ddc8cf0d78b5ca45c0487dcf8b3c99027", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "8f3b233d798358efeb8e59d78aeebbb08977e012b6ad4172bd4bf6765f6d490d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "27812dd7b22e03e16de63050067ec27fb75c8be85116ee140cce18d631ee6b6a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7fc7d36cef779d079b1bf7a9ef1165a7b849d970f8881e0e939661ac7b667714", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "20910fc3219f49917010626e3acfb09b82d65ba9dd7cc17d27921b809e954b49", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "84d25fdd0312705e1d5f4e9494c0582e70af61ab30b3028fbb191fd52d8645cb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "bb00f35383a23e4ed31444126f7a37e469a4214ea964144189d2ef89e8df3a8d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e83ea6d7f67c7a10fe435ffbbb31a28b3b29f8a259ca8d81eb4db31ab6eee2fb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "d4e006f2dce33247fc8d783669eb10265a935b761697d411f2f1fa9dd09f8610", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "be796471213d42df2f79f8c807bd1dd6aa600874612e7cf90cbcfc78cf1d3c9a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "153c1347fc83cfe772f3fb7e26904b403ce3610a35947642ecf972751c307318", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2d787ce2c7db6d88cc0c2b4a2bcf927d0f6fb2e0b93c8dbb66ca0d6c56613697", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "90741e2df6449e169f48d62e4d655948f80be00cbf83060b2a14f0326b0781ac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "329b378577c651d9cde227e32409ec20af9977793793d72c7c75987d78220dca", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "f6a7765a1d2c4c235842c1df8eb588cbd163e3907c89dd2f4aa857bf3bd188dc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "0eac8fe426a1201b4f1f5a0b485e9bad7461f0297362b860b0daa026888cb637", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "63c45d380fa7103da3aefaacfad395ed699884dff519bb90ad9467bcaebcd0e0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "34fed959797ede3e71d75d2f3dc163bae7f2766f5150eef356dec3c81d8a57e2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a6174dcb2a8f6209a60b609f2fc7efcc7eeaf18ff22d76453fac40cbd949c48f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "e2a67d8cb2d8708c05ffa6acace6eb2ef80f591120298b0825c5f2b024c24c4d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b66640b4305103968e23d7a19f2ad1615821495b17835f9304990508eefb01fc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7cf345752ad81b4ca0102fe5e9d130844a4279c8126ac79c7b346f0973bdfa1d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "cfd9a3851bb4fd24e7bbf608b1c4d73c6ac1d04be250f93984a7739e04e1dc4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "59dde3afdb5abfdb91a941daa1700c33e70d0a3ffa9496631b3f547ae3bef538", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "86391feda734eedc54099cf808d4764b70ce5b97905f2347a8f408ee685e26b6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "1aebbfb1f711046b0aa8e8b3df150053af18166ee43e0bac2e35271c701aeccb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "e3303c1601d7aab31a5293080189d4d4bccffd40618a0ea4459ff9909f49c6aa", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "65d111f11975e43b15e97ddaf31f400af437ceeda7c82eaa989baf39521544d2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b1ce145b0714a69d923861e0991def8a0292dd791e5e0d1ab802abea671e2c14", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "126340ba640059bb667eff14d905c94574df9dd2364b275eebdffb5a70f38065", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "25f767ed759ef71d11258ad97438fab6b380a32b5cc246548d20f8f1a281b8f3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7427323021f757e18578a088ea64fd4d515d5df8cf856ed24f5a1c5056193e47", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "bf59059087c19f352eb7444d8d2dc96226d81719b8ccf5be7680e969de4f716c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5463d34e3fb3035d47598ce5f099bfad33bf7c6d27a0c8a51219136f02b9a8b2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "8e6ff82e72411e9e23baadb5158e527a0f7cde4d430b9154bf976d249ea3a095", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "83252ee4f6b2f44c970a1db58dafee0d02b61b6b7e7d2381bdc8b3da77cc8b2f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d21225898ff795191661b533fcec9765468f19011fed12b4b7857331a9552fc2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "acadf7a505aecba3e4013799b938bc17455d283300175eaefbd0f381afb6b940", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "2e4d153f75b84a41f430886d22c4b0a235f5c249ce60379be6fabc4d08c58b1a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "611b1465e82c05e2b3a53c6145aef97b8ce151cdbf06d45ba36b8c6a8daf6d08", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "faaa5fad3fda0eb61f35d69f4f945d8cbc52c16042d6f67f34c24ff79ed1b592", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d751164abc5b9589d6364a34cb942072308a5caf1d8cc75f605fef9d31660d21", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "edbaaa701a170030f61aa28bc35a3b246e0ece38a72c77df050cf62941bdf830", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6a0254d4d4e20d9e6ba465a20dd79a183019bbdbcd01d13a64ac365aa45b4d17", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6a0254d4d4e20d9e6ba465a20dd79a183019bbdbcd01d13a64ac365aa45b4d17", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f48a4f2023517b9cd108a859bfae840455c6a1b6ebe7bf3859bba60413b52346", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "4f481d69ed4494a63d5fb9be025a0051238bb94be566847c6495d962b8f337ce", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "cfa4aa08d8e3fc22641a935b24695909a538da3a140b132e0200c6f3f4671e65", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "33b9c7b5f690fe6e2baa3e580bcda2a26b1254446bbf85f6ea301726cbfd2c02", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "5db6e8b70ebdfeacaff7f110cd0773b9238f49116bdf7c7307489e310b56ab01", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "484eec6e80aded346a2ce3fb3ddcedf1e58ff504bf22385f99c490e02fa7ffb2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "af4bb451969b231a9408e5de487d3e625ae82c607eb1f525255923344488d45c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6f19f8b00ecb4d95b192434c581abbdb3451d6901dfdef094a8b72eea84d1ecf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "dd8a83abb6eb2c460c92fc074e62ae784b2dbdc9f298292ac4c2810bf2c18a25", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "15d48130af0d6ce87ec4b58b2f1ff1d8151771adbde8399f94f227b115a3e169", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "3b0d966cd0b7de3c1a67e8fab25325b9a1f0be41202697aefe229c2a95f3126b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "cd1e4b5868fa91909fe34135fb834288e9896a0a0ac793fea260cff1d01b8bf3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "1f03dd2bde1991bb1c00a8302ca9f07e117c4a3a7ca0559e569ded8a847b7e70", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "bc6b74deaa6ee797c38f0ed28e0cbb207468a1fbcc14537add4e2ce9d18a5ff6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8dccc371e1bcc7456402a02e2ced0d7b9317682d80c68cf448ca76756739c6a6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "2157366209b2a66cbb337e386353a4842af529fc5fe5dd8f2da5a131bc713be0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b7e05510acf44d94cbf762daeae228a68a0e4022ab3de2e4d9a7eccbe41d7bad", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "d2f936bf44dfdbac2830ed90bf0b10647660f1df461bac46d7e239a617995956", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "2157366209b2a66cbb337e386353a4842af529fc5fe5dd8f2da5a131bc713be0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "5c4f06a892025a45fd0ce5169e22f1cb59cf5040c14601360432405189163854", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "109f5d6139b8eb490c8eec82fb7c51f6ab59e18d2936ffacd2dde61eb7121f4a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "102ab484bcc9e9ddaa282490acde7251c3f50f7624546af088567a5fab35e446", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "514501b5e1f3c82e64eef126ddb17fad6fafc41f173d0a346d4ba4a5434e7d52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "30cb47e9617f569c6a49834dc71ca599ced8910163e6675aa584a8754dc1d758", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "e7658fbd2e631d31eddfa2e98782583a15b55d00461437e1858538d3d3dd7a64", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "47cb0b5e569a7fccc03242a0baed5339fe01f2aae5529ce74c9aa8798ac1f0cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "efa68b377331877e69df61d59613742f3373e729eca435bdd96e3970b7353da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "346c9cb0a6dfe9358d2340d1952e109d2e12e157e689b823fea1b6c0036b0aed", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "d971bdf7a9ffbe2a40abecf4d63beaf2e9900d46b9174214c0f27563e43b275f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "90690a36511472d80836247218971e666ec9e16282fe5d399c4b22d5fec6d50c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "aa5dc2faecb0c869f74d86b78326b037ee7308a2fb31c2f7901ac5af7e05093f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "111b1eccec2a416502b02fd47897f83a898f32f3cf01d2e8898bc2f74300c44e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "cf5ec2b5deb33ae73bce9721b55071b26c35ffc3a05f06c35599b4e6823c970a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "23f98dd62750b0a2f9eb19dc54414ed476d4c6b43a4e60d7cee8bab8f74ae0e7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "add7c0153e9615bb2e401137a6cdba989cf9919c276ffce79af94581e750ffb6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "3555b623fd19149a6578a5e5fa26665a93e992748f0820e9928493725a5dca94", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "80436fe490c098c3adf6f47fcf068b93f0d3034a806b8a73978f0f31503497ea", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "863ff980c5dfda039948138465cb6931ac353265a87ab79f000cca9a4724c5f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "3b9570d340a81abd9f6c1506ec50c5bb1d8cff4df9a4058edb9e38d106e7db46", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "10ae3933807ac853af3b462a73b55f0a4b625da96045401d9897be55b72340e4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "c50869028b8cbc599c3be947bb62ab1588fcb1fe5f381a8e1bebe4e11cb5b72c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "bd39f569e0a21325e916c5675f2d19c940099ff5c7adbb8121a1593fdf9ca5fc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1338ce706b4d3c42304287b5da9d8bd5cc5c41d951a77444de580a8c5b216703", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "037d33fbeb14ce12d1b7e246de595521edc511801d37c60c519c0d35bd2f6d66", -"T3T1_cs_ethereum-test_definitions.py::test_builtin": "9afd8705125c4bd38c0aa90de24bf4e818b700d02e1bda2d20ed6070e2d01274", -"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "85d11960a0bc042e1a0df40d13b59b4037d9caf6771ddb266af3cf34675ae175", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "8f9400e6c9b1d02bbc4a3bf879cd96a383bcd930bd24751bca58f181945b9874", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "48982064ec440a5a9a779e5582bbcb9df076a2d18047a9a17a9675facb224ae2", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "ea148d00cb96609a936f25b9541d240160d4efe0aa93f6e40b61431699f68b3e", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "0e43a66135868743df9cdabec6caf925b75c704b6ab5d09fb21cc9f062fe232f", -"T3T1_cs_ethereum-test_definitions.py::test_external_token": "0d39f4194196b71694958df582b6a85825240e0b3958f50a4704409c3d23f237", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "d572102c2bdcb117d7a5e8627c853ea1ebfba804782407f436731235b538f841", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a2de39e033e27c29a6146a19888f6a5052e9c41bb064f06070438b0f13a2b7aa", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3e8b682d7c6cdd18122a92a7a0257e022af33a508a65c3cb797850b2debc966e", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "fd09a0dc102e6896b2635e7b75609ea2da38ed328bebec256e408e3f2ead7503", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "f56de516175621207bd9f7d2045fed18382663797c533a9191bf891209a57331", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "0ba4c4f3f0b91821b712f0af61f89ad2689de9b9cc3e1154a6b8bdf35a524bb8", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "9a397d5cb3f6ede4561c16a3e84fa36c9c89bb8b5a32352fb53c4ace2c1058b8", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "ce51de131fa79899adf5ecd9d53e496e34f39fcbe4a7a9edfa9b33733c162d0e", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "9bc06db308e7f84fd3e4569e1a4eb4e8f9c42467adcd35ac21c67b7bf047a8eb", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "9d2f785d44be082cccfbce63f1b89f696cadbd07d373282457f7add401ea50d5", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e1e64cf00041e035f40c4d72184d403d87c2d0d83cbddfc6d4358ebc154d08d2", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "00cbc6279a025902941204f089869544dba10167e6f18e75e6481b8c99757489", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f641d35cba095653dfc46ecb25091248ffe690ee422a047f13f505a52e2e4533", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "ddb9c8bc6f2adfaf4ceafe38b10dee7749c12d521be0447318fd34a1baf097ba", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "081298cb7c70f35b4de72a18e68db15f072c013cb35cc468c129e87d064b1915", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "fbc2f1387fc06816cb5bc01147f1fb1e13e039e056271fdca3132ea5e4e5e4ec", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "648f14a77176e8c9ec98e5017fe3280e2be746e1e50ee53633ca7a3fcd41bf9f", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "cb13b38c67612733160ec05d11582b0f4d752565e0cf765389a22bf444b683f0", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "52ebc63690cf439b924249757eae62088ce60f5cafc4eb7b0c0b0cf2858bd18c", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "70e04eefa918066303796fd97fc411f257bd83ea27b7c033de081ba7602c1e9a", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "2bbc38bdf104be213856bfe6e1ff184769b357e818359a76d8d30cf0468f3117", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "8f989b56f02c5c9da399dc877a163115b0ee73e488107194e2ffa714cca29260", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "cfa226e69ddd8183ae415eca37f900a1e7b9263d6d72d7e2f215d7efaaf03ce9", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "ce1f4967c15bc2888a36c8823e245fc4d237de2bd342c09e5e3abd157a7b09d6", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "ff22f4bee5aab1875cf7ee5a8c3bbfa1d5ffe70564d9feca9bb39bf4a6f5e202", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b9e0da1af2d0f6559f4c53b4545224c7d087dfe50916946e994d0d95095ef995", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "fda7dd15172ac39b27a1bf729e253fa4414f1416ac0a17af6fd332c944b9b7c8", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "9579c396131cadfdb2d2659b292fd88ff395ea0633f2026e6d8ee4f1aff93065", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "e26979055a4317f2e00248b8abac0e96b54c0d74cc00f95a80e6ee6d30fce40b", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "634962311b928a1cefad4cea07eff126a19b3b197a89c15fc5013cda52782ff9", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "413e20449fc0e8ad5694e1dae50241ee96471c85f844bc62ca16ee7143f3d100", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "6a91059e3d94f90ce4ea86dceb2c31c7e365bfa67f7d55c590b96ba543f6ec30", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "17e581d3a6c30309e38b7d17ef79d2c000f1a7a0bc71dc7decac9cbe799fa048", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "440fdfc1adcec245b4cb274eb5d577c61591509bf7ba3ab866432185b0a4d818", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "36a2589a1f24b520ef55ea6effa0feaca6c4da9438d68fdc1600f235618908c3", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "3c2c2ce21f5eece369682f2edcbbb24485b52a7980223a87f28af7620acfddc1", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2e6b558932df11f63ebd56d2624e01857d4154428cac1329e5cf64bfb0f4f697", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "06a3aa7abacca86a068f331c255bbb7980ed55ea1940a598c94a3aa33f1896e1", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "298e3515219679a745e95d034cacb0ffb9296050c59fff2128559f7b66c709ed", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "5079cc771502a74b64df3ab84326aa68dce71be8d4371dd911ab680d18f29672", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "badb1055045be086afc7bdb9d0865de935e10b2d822d9cf4c6f6f2fa287e4a89", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "440fdfc1adcec245b4cb274eb5d577c61591509bf7ba3ab866432185b0a4d818", -"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "4f5d39c67c7ddf3804367ffe4779f9e516bf80606d83ce07af740de4bcf59945", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "8ca8c80d46824a534cbd62df127cf4ba8c197a8e2aa9d51a9af5471ef71341c4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "4fe5071c6bf79414213eb238d081712a1b0f52f4a8098ef8fbfec9e79615de42", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "e3f1986cfb86ce41ba68118cb50ec5f06dfb054a0232c7fc1f18954e0a2b1ba3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "4fe5071c6bf79414213eb238d081712a1b0f52f4a8098ef8fbfec9e79615de42", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f1f6e6c11b920bf407eab9fa0fa864dbc9e0a130ec2c9056fb91fa054441006e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f1f6e6c11b920bf407eab9fa0fa864dbc9e0a130ec2c9056fb91fa054441006e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "22f54111c23b147f6e7d4eebe4eb362039994b0f5aa67bdf87a1dd02ef3cb47e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "7416d23e513984c63ce60ab18d6634606a2b4518770bd22f31f81b052f140826", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4353575316ae02d31400f1e7320f191f572de40cfb259834e6dfa2009e462d9f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "7dc3cb0121c8c8a0a8510b1307b7fc603d94e9293fb8476bf6545d85630ccee5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "18e4b5e7a9e23c9af3d61aeaa749793efa74ae0c6003820ee7db036aa530a259", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "d5559729fe4a54a4cf1a8e894d2a2f58f316e247a374e41810c0eeec0ba7f408", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "8904e1e3ef34a88da935d2db1fba0f5ccbcb2219b613c835bf6fee59d9113595", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "773070557c2ff0936d0954c07ec3b8e4f9e1fe2824abbcbd80d3097ea418f10c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "febe59780b274b429be4dea92f4bfae259754663cd27bf58b55a687eb1ff20e0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "773070557c2ff0936d0954c07ec3b8e4f9e1fe2824abbcbd80d3097ea418f10c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "dd7bf0b59aa934cc8910d89b4bd1e0cd359a681ca3fcd41105687e8baede4434", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "dd7bf0b59aa934cc8910d89b4bd1e0cd359a681ca3fcd41105687e8baede4434", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "736edcb709e250256008b391efafa1ea8f432cef4c9f9849ea3eca6d2b22151e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "39cdd18a9156ec8021ef50bd7b8a62a59d5eecb0b33e8946143a7e1766370560", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "258839bdfedb656eb8e922e1ad27b2a8492b0a06254e7435dccdb18cb615f14b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "7dc3cb0121c8c8a0a8510b1307b7fc603d94e9293fb8476bf6545d85630ccee5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0f5b5cb59da2c2c422104deb088ff728878d807de511665c4724bfb9044e91af", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "19ffad22e90cad3b9c588250a9b1a5f27efa91e2127e53b5ee8c61fcae400d61", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8507e4b9198efe39652785a5e54e480f94a25b8294f9ca9a8fe785ec3a2d4a01", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "712a5685cf10486e36d7f6b8a60fd213c0061f1f6c1793b52b654c5655ad1952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "a7f515174b971d418a39c54c2719a2d11fba9ef86fee1ed76a6ec137c049d8ba", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "22f54111c23b147f6e7d4eebe4eb362039994b0f5aa67bdf87a1dd02ef3cb47e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "c9f77a3372ab8ec312beac5a6db800783d193294d85e418b8fd1b7adb38db730", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4353575316ae02d31400f1e7320f191f572de40cfb259834e6dfa2009e462d9f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "eb58c7887cdb2b03db77c4b4a52da147085ffbe4553ebf67486b26f4efe14e9a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "158afea5c17a5176233000f2148e64c08ed5ec2237abde033498556bc7603672", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "736edcb709e250256008b391efafa1ea8f432cef4c9f9849ea3eca6d2b22151e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "667c3a86a36ee3a8a6aba189a97c0df59721bb999e4922f215d74ce175375399", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "258839bdfedb656eb8e922e1ad27b2a8492b0a06254e7435dccdb18cb615f14b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c827abdcc825f9c5dd17687e0f9141e24b5cabd8881c4dc4413479c7a69b7886", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f1a7187ccf3fa796169fa859267c93e87d3ec794ce1e11a218ce487b82fb570d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "ba825d65a19482d295e43d2f7989a0bfa2a386290fe46a58ddc6935f2ddaef6c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ba825d65a19482d295e43d2f7989a0bfa2a386290fe46a58ddc6935f2ddaef6c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "ab73c0b49eec518041a1f1cfa9f622f0dc50129b3db6d86fe9045b3d8f3b9f25", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8c6065616fe0c67e4821bf6003252c7427843160b26b6e5ad0924759eb69be74", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "897fdc8cc7c6358a0dcb4f566f3fa88c6e005dee6d372027bdd3ec2979df9a18", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "13c3d46eb48b6e9e989cb9a241987a3a1ca0189236596d2a3ef9e12502874011", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "40a49084a89c0fbf02ed380d5baf4b1c5a29b4c675a273a77c2c29a341368fe8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3b6b4d2d2f21f8e693aa7178077a4640d875d22ad45f51683d446fcf73dea687", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "4f8de78abec5b7086a9212fd457b216c5e9856dc4514f0d0ea171e55243f5079", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "c1ed0ba1042541c4358e0f9666a6ed5c566ad1f48985d9e8692bca01dd021721", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "db0b2e6663426e80eddaf22562a13a4fb6101e89472ed573b411ee489d99cd92", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "554bf5d9771ba37bb944f1b98b246163f2cd7f05a562bd59a7897e85fd1bc222", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "658a56d1280968e368d8f3729269d671cc15ea34d3141d421a1efb6f46d80b7b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e565b67dea91dde4fe0efc4c903888fd90c107e24d55d9814a8cee76d38664bc", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "f8db9c6f24dfbc61acd1bf055429331bcc0fdb16d23cc0f68c7403198fd52766", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "0eecf6e83e3d9f5bbb98902511f87dfb309fc6ed3509400a5c74ef592c15fb49", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "1b8010dcc57554993512e0c9cff0ec47d2478094446a0b609388b81a54eb37ca", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "1b8010dcc57554993512e0c9cff0ec47d2478094446a0b609388b81a54eb37ca", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "1c4d2386a5322d5e0fc5e690d8fe9e3f629536c9405521485420f6dc2ed9de8e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "1c4d2386a5322d5e0fc5e690d8fe9e3f629536c9405521485420f6dc2ed9de8e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", -"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", -"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "cd738c0f1477e72f40995a686927413ded747e08275694b149167de93b3b769e", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "74fb1d8000a1565e80d35d3c3f79161e8b3f586ab8dcfdc7eee2a020b499c078", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "fcef99ead33b058212580316b41570bf7c8fadf64b566c71b4d70b6b7d1c8e3b", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a02157c1d1909c456b33907814c417ceb9d16c7f9de10d56cbe12d09971b2560", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "bc34dfb1e19b4c655cf44908f3ce05b21ba0e9cb8b4e97bdee35b8291aa0a232", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b2666be6c016c3d58009873812225387b9f2154c7d498c620bd7a5742058d654", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "28a9508cf78d77055a4bb528da662ae0634cbfe5638f92e331b7dc6b2d91792d", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "e7a2d703602998ee5a39fb7fcff9ed804ad0e8a94bc5d4f7205bc51526ac93a4", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "9a2abcc7ec0a58d74521b06665dc3ae88b9a62042288369390d26b6763d827b9", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3cc98b88a21d501a4c63a2b0ad19ec5f3d40222ffd1facc0feb970542581c4cd", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "f5beba2c29dea248bcc23dbd4a0bf3829a5d3560baf838e2eb5f69fbb4261768", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "df81c39e6fd20ca56aafd9e6c4175472190cb74a7b2551e196b3e6e1daee77ca", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d025205f6855b9cd70dd9dc31ab924d009e799e05c5b94135fc14dc01f76853a", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "380ac240bd5640370348cd3f11961fc8b33d432d6734663aa113fcefc4ce9eff", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a1a003de7e1cbaea5a8c3cf15584af1ad5a7216df42c6e34c6cf6cbb12315b2d", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a9428e7e4a1aa0f9ed52b5941f79a0759f4b423bcea5898c5f1d16c123a46542", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "212c91ae3491cd920d1a7b86d47243812ca5456239406782388afea2b556331d", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "4323af53246ae0f3f4d3fe83b64612bd3139447c67ce4afb7e21ba48dc704fae", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "8fffc8567425254a0b4dfade039542bf67325931291631cc2530f30e080fad8f", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "0ef066ede0af3680c66ec9ba1ffdd9ecf0e3109dc87aa4e9878713d5487e385a", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e604add36266544fcc5e958217f9cf4ce4c3c1e05423ddc7e5d00bde2a24cff2", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "e00562b27b9f0738242a8978cd22a2fa864d600c802a48a493377eddb7c9f24a", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "721f62dc55c4b4110403d0a68244f858be5f6d16cf433f7bbc384ef213ce3f5a", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "2a489ec807d73df46989296c5bc1a11e19a770c5e4b300180c6f59f7c675fdad", -"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "536fb01c22c7be1bc634b717159db1df0dd91eeb45462aa01cda130d79aaed32", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8406023bdef43e5c3e6a2a424bd00c86c117986ff659d1056784714ed8a660a6", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "9584a97daf3d31018406865e37b8f1aa0e71bbf3a95c8616a3b4226d9b7af028", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "26f76bcad169eebcc044ba8413ebe40ccaf51224417b463e86b61a7af8539abc", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "8f6906da90d9f21e276c3aba2c4a4195a2775d186e163e79509248265c752ae4", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "3c6ac4165c200aff2e4100493b1f61f07666bee1980296efc4dff745dee45075", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1e590c419465f8e57df6e0f9e85bda9d71751da84497a68958c046dcc6270ab1", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "eb334c59e145d62a9f68d251d0b8ab52dbda32d3768bf4fe79f0e73fd5e21abe", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "15bd361e29b05f96f88dec6f987d38c798cb6093536fa0018553b4e65915c72b", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "537c0de7f1b15b90c20daac7eb952ac75c25eda0522d1e084a27207bc9b51cfe", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7b8ae474e0b552e733aaf7212fff42ab04f1a40a90bd4a24d2e6ec0339c95781", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "da2e9ef780a1838e3c4605c4928ae780eadc6a3d712be1fed620eda22349aa5a", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "62090cd2fbb8fa4439cf115749a6093849ce984bda63a8fc4cfa6523ff90cd11", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f6f2893420b12f51159c6343d2e12aa561eb07cdd2af554e4e6b2a72253abc19", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "f5fb5aff5228b341ca81dbfccc94de2a7d14d686c5f7217bff61c765efa6e5ec", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "74d935361de0de8506746db9759f944815bec0fa5613a85eedf422b4cca5d3b0", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "27ed8668c1c6692d0ed4cc7a40f47f74cbe7294fcc1c7fe9fd7e850716fbbbed", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3c2bcdaf8606bac2d56748fd6944ac4cdc38542fa8c1c84268910ff09b24a26e", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1e590c419465f8e57df6e0f9e85bda9d71751da84497a68958c046dcc6270ab1", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0af7a7a73de53629bf1ed8ed77f34a1c0010a15310c8a3081ee89fb6d6c2c4a0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a8e6d613fb0085004901775bb95071b472b719f1669e69341c1f4dca7c49631c", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d3687f2ad206424a8824c026cc23b8c2efcc207cf5666a83b10b447828aa0f32", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "666a315e37b89fd2d614e579b9dbae14e32c39359ab1790450345f0d32c89f8d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "14b116ab0973cee00da7f207cd041cab67012d2fa902ae457d44737976a6fc10", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "20bd63e82f4a56754df3ee96dc5571a81295f41ab067b35be9a965baf9594e3e", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9f116fe69f56453062534cde498c32debfab02d82ff685cf497777aeb536d747", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3d31b330afcec7290165371e4946b5cd239eb36674927535f065d724eaf4bcdb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "236a020544ecd081cb8854d5e02ffb74b0961bb33f13c8eeab0b1fb323b7c0bb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0b587dfaedf22a648a277a6a4569a0aea575c2f81b92dc5d1c636c8e112d3ca2", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e30344a76f7988bc928b86abafdb032b78a48607ef16cffc66d58473a7c8a13", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1e7110cdc5c51a73279fccfff529d9c905203299f9de5d834aba262e5f0194a5", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e782b0df3e3bce0388b176e3efaba56232722a5621df46e7f692ef02ad41ab7b", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "751e4c5979d949fb79d52675da99d6af4b91660e5609701c6a273e29c903238f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "bb2ce895c4d92ea6fd70b1ee0ab597bed7dc4fc04cd729d1533367dc1ea86cc0", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "78672ba722e1cb276ff48a2bea40a9026e9e2582ac1cb5db849fba1a360047e4", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "d2a3d07f99e1961af97d783fa0244d7a100c0c1a3b1ca342c8f608e0e7f377ed", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f6edaa76fcc54315ecb19068c58c6acf4c2c2b88e78d803b37480fb3a04af79e", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f4807908daebd239b4f5606c91f06be35c93e9bb7071e92f1c2459edb548a6e6", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "321b05495d37f1f95a09fc450601ee2e3f370aa4af9a7543e63be13e97c33995", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "51a774f73b82b55e0bf1e5286013d47f36287f2e6e99cd509bf1d0ef42b67ded", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75659956ae467175de9c7a8bb61d9d7321efc91f8f87816a17f18463cf6cff41", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1f02eb23ba80694ef0fbbe4f19614f84ff52c9342a0be48f90a6f02efa816dce", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a400a0b33482bdfd4470e82c96dab21f08652d6436c8273d820eca0c369e39d7", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2b879adfabbbe637d5e50a433f8a911a57467edbbd59af61037081426b778780", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7fd44837eacd3082a7e8dfa11af04c4e6952c705d354bfff9f0f72560efe89f1", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "79305a7cb1571730b927d6b5b4549bf8c79508711f8b1a2990f598c0de9a65d5", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "442d3ce8be485fc31667026dab018d2c7521067b83198f7b8e5779df2bb32904", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f2048e8199f966374921e88f9a80c30090627e5fe867ae8cbac8dc34c9318ce0", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "01083e3267270bb237c4f778f4b021702eaf153d0b541d1e575b37751dec2445", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "577b928bb0420dae9e00299ab858d1f59e4c1b4e3476d3fefc4f266a4cf28a50", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "23e90bde0e5eae1b7df9b3ae3e9d84f1bbba8af351f15c4031291d6f6059e5b8", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a34846f672266c68a8ce747a2e1c37c661437833548488e10c2064360e8bf363", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "9b3a4d1b5add7f308101796ff0c7fd8ce76e1b3acf54990a270a1c2228c732b7", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "75fa897dfcb35653ce38f1a9cc36d44450a0c5f97864d0096198fd8a5ed66e8d", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c877dca4555a977d881c38e3e4348c93c9ba30c654fc63d5d3db1a1269a77bac", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "cec4f416b087df067b99e4d8355da04b1a694ab51bc693d1b28be44046d76d85", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "3a315b32fe6af185fc51b247dbd36194ba1005d91168cd9163d32ac412fa49fd", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "feb44a6596acf57afed9d20517e383435febb6e476a5c0b90c9231188e1e68cb", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "98b97bf14d9677b1751677e3813facb7cbc050445844adb55609958d0d89f2c8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "fd2e44bdea6384ab4b94b5e0557c08e7ad3e7e69fc1e0bdd4e067731ad0e07bf", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "32dff1643694e5a1fe8b29f4aadd9149f4104a59e358f5842a82616179c45962", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "bea4ebfde9aa1878a47013eeb914cbc9b13ec03e569ddca5dbff4eadb8d958f9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "72c32c85a8db6e00abd4e647048782669390136fb49e4df889ce98372f31e2dd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "5e650a58311d032de9aa4b883f4cf62619e6c8662b3f6d053fb88319ebef4377", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "e564d7d57b0606385445ee97a53832c5a77de54719cd1ae157753f26dfdbbf33", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "dba3467455573011a0261da2656447a47e6b7e6ae5ffec5be2f13c48fc5d350f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0fe3792a4c30cb81b842f891a0815b636760b28bff3634c3df7d0145391a5c36", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "53ed953d030a21ea1cb0c6e79d137cc24281b4d612ad6b7364023496029addcc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d50c6389acc148cd7c39b4b8a66a52612296272fe12bbdd7a6c6c9ac1834032d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d9fc6300c20150946051d38cf2266c9206738aff9c55878b38bb1ce8f926c496", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "ec7de41627f7ad667d72ca818f2d6834e7368e088d8c1ae50120fbb8e8cfb2dd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "518e2e69c1ab095a7a2915dfa484a048e17e715f167ffa1a1e01a56932ad1ba4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "477e435a95a07d539ddb25440c07fdafa3d2ade23a3b74196489ae92df64b2ac", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "f9c7214383ffbf56e2bf889e6116dec10ca25ea1e82fdeb8533220333518f5a4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "36a999e0a9298e7738cc425e67698b5b362b7b8cf3af5a7063ad3092cf081dc7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b7d0cd3934588201cb5b9531d27df8407e6e3fbe30fcce6f697ee5b9f7e068a2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2606d159dc70ddd12787bec91b10238d77f36a8acd139aa2d3acd42c1e483843", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "65ef6ff4a7218d5c0b95075636ccb2a535734a764a574f59dbdbb63a45167655", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09d1dfaf38d500cef7b298ab61ad2d128c530bcc6fe75f405821d0a2d45130aa", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "9b2dd7c06acec4d060adc07206acdb8ae616926b91d6b3b4393e5429c8ce763e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "692d5fc2ecbe326d6b229f77c7d449cba76ac77eb80e9df3ed85f9c4326d48b6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "53f820251de3f990f8419a8c6900776e6b02300dab1fe6cfc2fc2a80c6598ff7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "a6c3d5e716e078bfed3e904483118d13b821ef76eacda49627cd1f7244980a1d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e10339532cb4a6ada3dc0eff756467aaa4787ac44daba1f5019ac3b7ffa25d36", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "851946d246793d72923aa3522cfe4a0c455d6c3ecd77aed38ec6c2fbf42ce29c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "29d3ff94b84243ca133b3b6e07bdb8f05e1ed4e25b149a05b3a50b1e72676b6d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "38b2c7d5937b5f98444080d1d40cb6ad4b984d3d8cb6f8e8c6b5f69d1977d9af", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4f39cded0fbe41c00fb4b6d45057f6c988bfd07d76abc83fb2fe5af399d7272c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "0d2cd29a60c45333e4440d859e4e47e32310851f86833e36e5034149bf2cc846", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "e0ea707742a02e41a5ddfc83aa66b23880b2acc59e05fc469b8f6fc683be6cad", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5d4e33d185e8a4bba81c9e60fb270a326aa476ab780c0e866579e2b7c602e6c0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "06f773b9429029725aa6f62b826e063d6bf24bc4dda5fa2ff0f8e25fcfe51b30", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "40515ea662cb38454da94fd60fcdea8d9df2470c0b0eb8e4d1789b168191e61f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "acd5a8b109b63e54e620dcd0b7f3b54bc29a3d3c170ab7ddb89e79d1737ddba0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "17e8ff760ef20eb12abd6ac6517b0f799c1d27033a399514d42762c76cf49f7d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7e5840ad56a4962e05301215c6223a4609d5391b0622c6ee5c5a77884234488a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "f2035aa248ae4cf683240c128dffc0eaf5ef59178946ad640082c23388767103", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "a48558dd5d47efe2c3aa828ca735972b7316063b76f7eb2505cbfbfcc45f3068", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4acee103a26ce9d1af3f1924f6c57029bdd99c3a322d629c77ce1dd7fd54b51a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "97b4f0b3cc4795d4239cbf6686f598edb92e9cdb6583c339e722d090a5008083", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e58b849808153b44bebe111b96c8c419dc4608a24e2845f84242561b0dcb9d47", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "139ac1bc4afe643028de15d71087930f363c3850c74595a33f10cb97c7711b4e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a00b0d68da071ba15f97708ae732f35fe40dc0f5c55671fe2047f95d163788b9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "452a1f5e361808295075750a71ef49105715227600fab3f5443b5aa0ff70d467", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cc814a3e4e8c00e23eec8f073dbd865771ef83b490ee4596b280178fe23a2aaa", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "8f48ce150a385a0787642ccad4553bccbad05b107f9b01f8cd85f101e0952742", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "78a62bd5c0343c49e2b8e90e4051e1076732350b5dcf6113c6edf53bb0fe3062", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "67339c72ebb598461b9ac367a6ce8d678ac05bf22f74bedc2444b024a831272a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "5a5651311f9a8286dfa459a29587c28ade2b0af44d091cd593ef3d2eec2ed3a9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "516f0704d1a53e9d7281007a34d02051de91fd89b35d2863c004b9ad25b5cdfb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3b39c85e1748cf129ae9f4e4184c265b235e5b3cb28dfdb8567fd6abcf64756d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ecf696fab4faea408264bb98ec33fdad726906212b5743bbc42b3330edfda63e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "647c04b5fa500a7ef372cfedbd5185dc477da59ea734af5afdc45fffbd0addb2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3c268891e70eeb3e3e3ebda79479bd53c985715ed803f5cf02b9f1224e2b943c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "204a09cee74f0a2f3f6405bc2a5c6228b443459ad3cc866c5c53344a6349c6c2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "787ac7fa8becb6081dc08258482988059e3f6c24aa248460c730c8df2c1c4f1c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "9dcdce348c63abf4dde7e69747d84986fa596069b19575167394fbd8de2346cf", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "5288a10bbd550f0bb9c49baeaefe51ac2e9028849a899eb64a56aff1a3b178b0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "e10339532cb4a6ada3dc0eff756467aaa4787ac44daba1f5019ac3b7ffa25d36", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4428033963b71ab3377d7748cf48f08019c93f6261e38665b837c75ac0f11e23", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "8bb5017226b903d8befabdfc0664dc104c01524c971527ad8f456e74d2c04520", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a0a71a445bbcfe996753ec382a204621c154594347e6fd382c55db4f0e706bd3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d7fc5c5683d33b267227addeeae0efbe749bf52099a028399f9a75fe888e3d9d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "36b472a776e2e3851eba8e63cf48baa213417eefaf01200d7e7a882a3957590f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "2baadc38d6b200b8eaaf3083bca22e7c887d62dbc09ef897849727298fd112e2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "2045dc0e56bd0b81f0fdaa7dd1121211d17ee763833c9251f5aecc4719127779", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "ba83a7059000599aabbd37bb32378f6219d2cff830d2aedafbf482d26be23a80", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "31fc222dd6132547805ad3016a4ac6ea2d3e145801420f05a3c04faf121a609e", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "3f89ae620fa621c748a7d20ad30e36ae0747b0f13b754fe33a471f164528c8d4", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "2f83720222e4d29f95c57b35f501b9aae5ca8e868e995fd5b1e902c569bf36dc", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "065827e1f8348e61aef56194c203a57534d5234ee8272d611b7fa6797c4c3f90", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "497c313c4bc344972c9e1dc227643449a6df8c0058f6241c3eaceda2fde93743", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9463e7b88644adc19d54256cccb0e211236474c944ec2ca4dea3cc30fe166a42", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "11ffa2077e9cc815beee4b110aa91ecd947e9b44cdcdad699cf7f1d35ca3d5ef", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "54750bd1f69be04eef09af3d24815732e620b129a64ecca2c910316c962ae65e", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3f20cddfb5d66990a439564c4ac399b9b19078c6d18d09b353ce335b10b8edeb", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "85fb6e772f66be1ea6a0dfedbd9f0bbc19bb8923b9f63a6bd44137326d94506d", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "2aed5aec20006dc78c18e2e4a1e995778a12c979434e6f24065ae62def7ff877", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "97d5fa83703255b24090db354853c606a612e357ebca517c8de6a4103844d643", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "d7f50998b59772a37b48714343265bdc64be86d92daab6819bdc00a5be7abd5e", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "29ec4cf651781e1a10af7d11bb0945dd17d3b5078ac49d9568cdad723cdf7a79", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "9806d8ed952d4ab36ec984bbb4b3a44c25511bea243230f03a2376e567f9c6d9", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "5b66c280fc1a6549e5ed65d72100fce7f278097ff05d908d918a6bdec5ccbbd8", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5b244f5767bab5ad9c7f0e6d7bb553a53c9f717026afffd75af35672fc3cf789", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "d3741e1d8dc3c25f091ba398cf40bf28f37890031e462436276fe4bc2680c35d", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "9d111c231773407fa452c116b38698c2c9bf7945e117df2fc7f88f8f85ead953", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3187917eb6f8a463b4bbf3d6bcf52d9db341c334c1bb7d2c00e9d28efa325cef", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "5b2432d9a05314fd0223b1f0661684407192bd07e3c1fbca7c54e1570f52fc2f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "88090b08e0a2426c37382f558e80eaaf7fecdf8360bab8968e1be7303e69bb67", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6a8516a39f2b9cd78c1fc7acab872a947d032b006c8ee32164c1124103ca01f4", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "f772066ae9058b0f2801fec75fa066b7e62e053dbb40fa7cf373f1b557c14249", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "45f9e46452adcbb56d32b942653451a230501c5d8dc9fb47eb74ef508c97bf7f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "83482bbc22e8c52d142411bd5bc5a26a027cb14fe72e3c57ef5b363820a4658a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4d562db11a15824da8cf29ecef1bdbfebfbda119bf4c37bee34593074180ba98", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "1bc7d30b44dd7b5f1d81c4c28fc3ae58105d666bc01979a3fdf5037d41211b52", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0f66a672c50bca056d1a1830a84e0e33b51d056ac5eb608ea34010a7a1e08504", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "bd1374ee1d136081e7d432e99159ab537f53e6e97e3feaee2d283914a672a835", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1bb26b7be21e0e0dd733bc7b2a7301ff8cd8e842d97a03bbf9b153d796da03d0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "1de9f079fd8a1cc28816c45abb73d69121f932cddf1b468042297216bf56d136", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "24b176aabadfe6842fd83a631ba1bbd0c676d29109a51072c83211f0881c4e6a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "3055c8e6011cd64e29755f5b2b18d0250fa5f14e1ff263ae12e6e830794bf430", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "eafd704c44bad034143e6d7c6123420f435c09ac332c35a36c49485190c148e4", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "9e48eb0e188ba2de44d637039f68a446dc5b730dbf7b63251dded42fc98f566b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "2682c5c66c0097b330f9f14a818dd7810eb9b3728f8b06f0beaf60d82adaa51f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "eefeee9a792a4d78f14b5a64540a68fb3f68bfa4bf9c85a8d38c500af92a94b0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "97e219fb0f5417afeedc744caa5a30dabd5a7825a9e545ceff1c9d165c28699c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ef9cfd6850b4ebc2c1164175e1aaacc22bf32b4728d6de3d4a948239a398f636", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "54d1e895690f3139f5068cb8e5912eb47063be9f7b69c17bce39bec9bf451458", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d9f8b88587d1d0726568e860b6d52cb21e3def56b990a5413980c50b1ab5d6c1", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "9476c42bfe58b016ee703964165f0b05c5d58c52ec9f48cf1b9a5ed731e9adc1", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "3124987aa4012a14daf7f33e809daa34311e3b0e5b795d4d174a308a077b7d64", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "b3cd453f7fe6d01ffe55b383a08a80f53729da601318287cf3e903bc799666ce", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "e0ef545906f8f8bf48ddf8d6d6fa068490e52a638051ef1e59fae786bb8de80f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ee5cff27aba12583b6da615813bfb3323baffc0daa3fc3c6c0bfb86fea15f412", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "287ba699bf5a26e989915c5c02668aba28a43dd9bf7a4faddbd89407b24c30ab", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "2dca165c324ba6890a980b7448fd814aa8bc1a491a739943f6c11e0237be0952", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9a828a7c8a7cff8b523cdb0ee8e7683196fce85d29ecbba79790e7ea281af87b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "eefeee9a792a4d78f14b5a64540a68fb3f68bfa4bf9c85a8d38c500af92a94b0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "fb4eca10eef0888387dd42d4804dff9db31eddc06dabf1df2a68bc22068efbbe", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "c4b7487ac2f28fbdb9adaa09905fb63cc48985f63d30edf9a70167e7059abb1f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c4453bc1870c3785cbf7407bf2b7e04bf53e65c3b3b92363117bcdfab401f880", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "75dae5bb67fe717e5a86ce42ee2911e7edf04ceb43d1cae260f0c5eb9511dc2a", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "87c46626e50ca8da23c90d252d3d39da0b31233176df2436641e966b419b096b", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a5db3c8701e5f885be62591b5f20f47a8c9f7eb814e3538d860f740dd983ddea", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "fdc22050f01915f083251f92481e45b74276f714faf0501053abfdc75a5a4d7f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "aa7b9bc156dac87014da130693dc0ba4cb80d70c3c92fe4875927f87a2e515c8", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "6d990980f062eaec5609dc3120e3e18de535aaa9d60827ec241911f3e8e678bd", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "7df543360bc3bf7b3741774e79ea75c729c1082e4c2af542c71cf33ab58dbd58", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "7af0a4862074274197ea6f070dfe9812d4ae4cf6ba09156e0846c1ee1b2b5592", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "7af0a4862074274197ea6f070dfe9812d4ae4cf6ba09156e0846c1ee1b2b5592", -"T3T1_cs_test_basic.py::test_capabilities": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_basic.py::test_device_id_different": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", -"T3T1_cs_test_basic.py::test_device_id_same": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_basic.py::test_features": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_basic.py::test_ping": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_busy_state.py::test_busy_expiry": "5807370e36255f64722c9b70002daad3b718387eaa41102561ec6a0dcbeed20a", -"T3T1_cs_test_busy_state.py::test_busy_state": "fde1b3b0b48c5788cf506cc541096167e2b94699a5059281a9848a92e6435311", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "59a00b375bf2e60cc0e624626aaf4b651cc24200be29e41e912fbc9358f7168e", -"T3T1_cs_test_debuglink.py::test_softlock_instability": "c6d1589a2a6f53a752806e4aa4e2b03f68685ca7213c5dd4af5c82eafa6d014a", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "bf3b0b0bfc905aa8b9cb991baffb7c523f4f185f0a6531081c2e09fee5964108", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_language.py::test_error_invalid_data_hash": "a115b6f40562970530bd4fdeabab584b19bd08001a7d5c22f2627ad39d1c6ff3", -"T3T1_cs_test_language.py::test_error_invalid_data_length": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_error_invalid_header_magic": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_error_invalid_signature": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_error_too_long": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_error_version_mismatch": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_full_language_change[cs]": "9d3a56d7637e585431673f57662f51b0b5bd134d68ceed34ba2807175f9734a7", -"T3T1_cs_test_language.py::test_full_language_change[de]": "6d72b391d3e2ffefded5765bf580720b2ff6a178d4a26bfb1dca361680c84f22", -"T3T1_cs_test_language.py::test_full_language_change[en]": "f9cc189cb54aa4c338d45c46ef8bc115b873f9aae88f0a3265e09da556f95fef", -"T3T1_cs_test_language.py::test_full_language_change[es]": "643ecd8f4a8d0bf4aa797836c18f9df8b8606c17ddca595d140120e3019c2cb0", -"T3T1_cs_test_language.py::test_full_language_change[fr]": "f4b8b9660987d6dda059db920188291ce597b35954594988a44236377a9e5363", -"T3T1_cs_test_language.py::test_header_trailing_data": "b85421372491bb30c424ea034135083b7342efd0e977e4816e69443a005a7bd9", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "1216097a924958c54e389006ed8ae9025854fad69ef33421a494b48e52e593f7", -"T3T1_cs_test_language.py::test_reject_update": "f5f0f60c0eee142ca023fd2960bdd410e355833f69f61f44203bc20cb13922e4", -"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "e993ac49426d3a1d1126a5d4825fac1ec13ba41b31fe4a3570b7be3bd84a2625", -"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "e993ac49426d3a1d1126a5d4825fac1ec13ba41b31fe4a3570b7be3bd84a2625", -"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "aba658ad4e110f027ac423472eb7cab19103b73099def7f5eb1e1e82a98b1a41", -"T3T1_cs_test_language.py::test_switch_from_english[None]": "e5c90dd87e1a12c90399f728e6a039a35a393f0aef75bda77f777173cb22aa52", -"T3T1_cs_test_language.py::test_switch_from_english[True]": "e5c90dd87e1a12c90399f728e6a039a35a393f0aef75bda77f777173cb22aa52", -"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "a1e756fe6046d140a72d986708b472708ba7a0bc40ed94d7909231b434e1f2f2", -"T3T1_cs_test_language.py::test_switch_language": "2f92dcdc93302e3dabc2791bd62cbd161a90d5674d41aab1b4525161b076735a", -"T3T1_cs_test_language.py::test_translations_renders_on_screen": "45d3d73278de297d33a0be7e579bce5c7d1a5df32e8ed079518435be16b63585", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "e7c5ef8ca271696bd49916a8a1cacb56bded4eb603a32c1870e1b36844855567", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "99bf4be975da77baaa57cd4f8ee238b035b47fcfaefe7908b61dc0c847d0119e", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "361cd8061b73405ec6ccbdf220acc85d80a35097d32d60e167e84135cd7b3207", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "06b22572a797de355eb21edb05c582369e0f480e69450a3d7ce7c338fb07ac5f", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "16e8ed54462dcba9cf54a38efd80b9bb041359b1f129b3fd3e4961e1a267f67d", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "2896aef3f7eb018b61a10012f91c28ddc528d18125976ccac9d047157a0f4424", -"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "21c0b1b9aceda19eadf19480d896b9b60faf971da63d147c28a0fd58fb6ee114", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a0121bfb19291068d4b0095651f20e3ddb3b23322694e01fcc641438022201e2", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "cbef8287a241e4a730ea7d2907d3a08a1b91e39dee8852ec95745b018211cfe9", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4fae4bc57a53b57aa1c6628b625cec1d41adb07c0504a82f2afbc2f5d9d11384", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6e80595458ffb3c1a41ab5e2a2dc2f7c243708645b040b4759ff5e9569dbdbce", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c1f9b6f548a0c68f2f9c8be67b74811807bcca0ffe8f96ce35213d9ed57609db", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7671b4ce0a9f4fb5e30fa5d684dce5ac14aad3e532da71fbf260c2e7efb0662d", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b17826fcd4f1e4a0ced8345e1c8dd31804b3d949ffcbe53fec73b61a29710187", -"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "f80a7223bea74080baf1a1dcbd4ff56c52011048ea5478b721cc20214b42f77d", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9b5381b0ec144a10735c93fd8502301723c7725808ba667a22741b97da08d6ad", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c1febab3a5f19fb7f5d52a7f8aa0b61ec00bcbbd21e8fd4df641ef7f7e737826", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "3a6904b9e4799ed58d09dcd5763a18131daa3e309b9bb0cdb4eff8e928299597", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "7214bb36b746b698633588b026359254e26dba4a65eb40f212191794caddaa66", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "b4504fc19a4b071acd92e20883a4d604d175e607d504db1ea8bcab664d688f60", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "c670c492f6c89135ef05a59b7a9f3f944529c1f30590d3878b0f5cb5effb457d", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "f2491d60cf5a47e28070cdcf4f9d4426f30fe13a22ba741d509c9701476afc54", -"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "3ca71417890e4f6c8cc37459c270f3403fcd1b3d6e48bab2503b7add0f385a05", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "6592bbfc05e4b22b06ed861c1b0a1a866c5e88585f54d9c1c58ee050f5e23b17", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "4fc61f31c31870650cdc2b98770973915f4725afbb12b0dac65deec83dcd87c2", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "3ffde45b78d8e28e5795303c5db6799b2f872a06a97e4e996948a3838e189628", -"T3T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "fe9aedd5ced93330e544bd1c9c6cc6fcc7bcbf93e518e3240e4ef4f0cb21a085", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "dbd5f08579c8a9900a2a5b8c2d944866b027c34bcd3f9991087e85c816822b18", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "673f0cbd7ac66238b4e1f4c88f75f3ccf2b59309745695fc10472be4a1ae1442", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "ee8ae9f84e81803bc72bdfe5455a06d53972e668002fcf31ba4e9683f0847fb1", -"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T3T1_cs_test_pin.py::test_correct_pin": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "a9ea4a6fb6f3b561c58e0e542f0db269c39d5aa5328b54dc1bf73df49dfd754b", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "8c6139b2ff22b9633c8b4bdaef696b20a278f0427ae5348d00e61578f014ff15", -"T3T1_cs_test_pin.py::test_no_protection": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "2c60d8858c5f8121174a91e9d1bf5e447a320e3641c67ad0756f7fc1e469f6a2", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "a68ce4679c1d56b2bd808793a05b6db87bcb5096de197f500c945ac17f6d8f49", -"T3T1_cs_test_protection_levels.py::test_get_address": "575f69e9babb2c56746448efb8892df80709a726a87d299ad81a579cda310294", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "500e723393cd596bbe6031fbc132567b14c1e14524a3972bfbe2ea875700f3ec", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "575f69e9babb2c56746448efb8892df80709a726a87d299ad81a579cda310294", -"T3T1_cs_test_protection_levels.py::test_initialize": "9dddba33194632c207ebbfa38ccb8ca2e781319f1d32a8ce317852ad6e45be31", -"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "25181df730f8d8c53ede87629fdb46e6dc335ea926c27171ce123ce7623d9607", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "011971910b847471958acc3f29029e65b66b3f03608a9f9fef3b22b2641c7076", -"T3T1_cs_test_protection_levels.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T3T1_cs_test_protection_levels.py::test_sign_message": "c1c2fa31b3ca952aa13a7a90d27696e5bf8454e1f23bc2e3759db4b3892b876b", -"T3T1_cs_test_protection_levels.py::test_signtx": "4da8a6b06006f2455d0a15ef12d4f8f6e638922103bf7655a3677d5fc1667d1e", -"T3T1_cs_test_protection_levels.py::test_unlocked": "220677caa2b1e7749d2315a739bf35a0a3008a9a10bad6d94affbf08997fbe65", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "ad6d84129560c60b8d51acff8fdb121ef7c068129b51e4a6fcb46321dc4b2c93", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "f31631ecf44dc23450c87efde2a9ea96689c97dc7a176cacdfc8d2c9449f14d8", -"T3T1_cs_test_sdcard.py::test_sd_format": "7bacaee5de088a97de251e63242a12d976ac69dc3324d4651cf335ee6b9ffc39", -"T3T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "7c7d4078687e1a1db79fe179094b8e538e8b1d741f0425113875fd34314d4f81", -"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_clear_session": "701c7c2dcdd6b7f0591590a6504a6562579b4bddfb0c734b1b5ceb3083289002", -"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_derive_cardano_running_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_end_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_end_session_only_current": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_session_recycling": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "099800e8e1478d2a71f6daa0bd9a59904ed69610b4f99af4f82bc7735f863e40", -"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e3626c8545ffdf8d8060858fbe64f275e13b87a0a82bdcba53e1cd54574bddf7", -"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "cf2453bd1a01b8ff3747432bcc5eb9f348bbdf393cf6eeba8256839a6a88829a", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "a400d365c69461b637388c8e52d7b30e51688edb21430031fa51baffc7e1d43b", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "975aecca0a94fdd095b08a511d10e55a8db86bbe6a8a5af71bc5b8d8911764d5", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "444e03b100a04ce91433bd96e98c7cb54a1ca1486bb4705de0ee1bfe8947ca1c", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "53c872020e3845b5633f20c9fc246481f79f5a3249dc2c1c6a364d1c6995a5b0", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5552b3772db403c98a447e043761c2bcae066da0946f9db07a8dc817b36c635c", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "f6cd4f80455f5d7bfbcd7fe4cdc6ee9b413a5fb4f5308837f729755e71e04e80", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "f1fa8a3cf65da15b19d2fcd14a94f93c814232adb4cbfff07b83a519cc379f16", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9eb892d697c7f19124fa84be8a994d88cda8037e9fceb5662ef3b54371b4e375", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "82f1653e3bdab8487e4e24b034036a3fca7fe83a6181803039608003191566b6", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "1d2a971b075b5474dacbb08ee9d379e94fbeee5ae7d9a46d988de83d3fd9eb1e", -"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "85f31cdab9b7ac4bd63540d5428a43010c7c9f6284df6aa4ddab1a9ba7b506e5", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aab7139148c4db5da785c7bba462b99c1c62b39af841d0986f8fb839979d6212", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "6ccd4b32d1c29573faabe091b1de6a6743932f3aaa76af64df0c6b99b544106e", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "520b14f8797bf273d7dbf7918e62673d66c6477188f773c326b907ee2e015d3f", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "96835c93f021819733b1c5f18e8877014624492fe63fd1683dd0de827e4cc86c", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "4330f18abba49d143547e9b91b252b48eebdb08abfc1c48a39e5b9cba9ba1efc", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a55dd5a911ad37437e76ca92fbafbc14b6e7e75b5571cf225749ec8921f8576b", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fb7108722b7465127626fa8c2bdcedfbad3df8468a9e74d9d948f57d1b93981b", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "856857bf7d2c9aa47acf01c7497170ae1e223a4e1954c39acb5496f25aab4aec", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "8cb2c23c8f6d01584b367eea36665f76d141f9c5b5a1ec632fe1ef64c20fd16b", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "b0b2f8e0969dbe9710cbf3be0a018686d6e47ca1bd0d660805f9aa612504b884", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "75ccbfbb0637c430b1b5b34b6ab60cac8ee526936e2eb3c9d39a8de9f16f1ad7", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "038079b7a9e3b2d865d24596293730a87b2270053b0aec05d7344f6767a03030", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "83aa15b49f8db110b6e45b78fc0f8afc1026bce81dd9388c10748cd2b57034b3", -"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "49265b0b9bc77fddefbcb374cd836ab6dcbe779b3a0eacb8c3431e60e707f853", -"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "5523f9e16493f0218cfde853817263db17680e391fe872ea7e3b5ed0fa5fa2d5", -"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "dd75ce54d46dc216e7c0fa9306e1cf535689c590f058a5446648033b809b4e94", -"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "1cd9cb6ffec689578227d3cfc12e681c108a1fc3051a0417657d3f4a6dcef362", -"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "f706e70d9d73bf5ef052a1eb67f2ab830fe880c434b1a1edc6a5e213a06707b0", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "e6b2c6f2f2514659e6be7e2bc0abede895a25f3df76c58f99b26ec93a4dd5d55", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "35b01b8cccea5a0075979cde904151d42d5b6fac865e23a8e61c85939ad08b09", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "93df395998e0cbfd3be941810fc13104b394dbd49c347fd1eaeea0289798b8fb", -"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "3cdd2085f60e8cf3e00d52cfd4481458c4103e83c69937303e46a92ececa8b8d", -"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8b04b754bc8523673322215b6a00ca82070c1cb507f18b941439ddc1a71330b3", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "34c96a3ffabc72c04e7de5c3c41a5220fdcc260e8e428e402700d873fa5ff0d8", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "52be789ecba93fac2f8d9b0f348921b44fbfaf90055de4cd5f317e8b73e07952", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9961a32676e652987196a9dae48864274cc3de8c317291349de3417bbd4375ca", -"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "d06829f14d4ca09da6fe6bc84916eb48febb57841739c059fe02004e940b8bcc", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2038ca134d0d1d3a4862c98d20e831a3d21490e4aa23b57ab638d432d1e0a1a9", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "6cbadf110e0814e44715bc9f5eb976cd2607e429258ac46ab85daf3e740acc21", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "e54e9005fecc33eb40ea50874faab70ed5d02f302cab3f823aa7ecc9dafb7208", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2038ca134d0d1d3a4862c98d20e831a3d21490e4aa23b57ab638d432d1e0a1a9", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "6cbadf110e0814e44715bc9f5eb976cd2607e429258ac46ab85daf3e740acc21", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "e54e9005fecc33eb40ea50874faab70ed5d02f302cab3f823aa7ecc9dafb7208", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "af662f3ef98d9bfc8f1e03a6b4cef12f8c955cc16059c826808c71f8b1987389", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "2e37ed22095d7a073dbef900c55566874abb4c3509e2de6bebe06920fbe71b1c", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f9e30feb5237edd872806bc548d62acc529305893f5fb3407cb8605ffbfa1bb1", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "888478add81f5c2c760cfa0ac7f372c77e0c49195d2661d9baa1430c8a71e5d5", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4a69bdbb87c28dcc053eae2aaf0c315f5c0d72fa956f80d7d8453786355ecdea", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4a69bdbb87c28dcc053eae2aaf0c315f5c0d72fa956f80d7d8453786355ecdea", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "d35204d220e204e9da5aea5bf0462b4650422d777dedb55101b0b0ea49af27b9", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5c113bc9d874bc63e8c205dac3369b836d79ce197109c848534c0d22d0e54fd0", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "eaea5e14a629dc3221c85ed34d663c344b6663081cade07693e5e4cf159bdf44", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", -"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "0cb9a8eb21cba13ccd4bb9ac6e79c5286877f4596340de92cd92b9c65a7fab7a", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "0cb9a8eb21cba13ccd4bb9ac6e79c5286877f4596340de92cd92b9c65a7fab7a", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "736c8777a8d7a2f734a418989841f8cc1d1152ba8a7a917dc24072e039e9cdf8", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "f62a6c153d26b4c92b9f7ba658e3b2054e64da3c7f0181ef3bb3d7e82dd9807c", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "e7fc90a98f175f4f11be0b3f5342df6afba1957b9630417ed6b11c8359372406", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "3395f0a673070c452fa05f218851120dce9f34c3f51281caa41e79c3dcd612a9", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6188b171e6e1c48b2f5026bc5a54ad4116f4084a1302e6d152e15da3248dd183", -"T3T1_de_bitcoin-test_bgold.py::test_attack_change_input": "c64a42e1d6e1e85e4aba3b0775694c1c413d7c3dafd79c87652df7f15fbf135b", -"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "c64a42e1d6e1e85e4aba3b0775694c1c413d7c3dafd79c87652df7f15fbf135b", -"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "ffcb5b2907bea0b532e9d5815f7c8c360643234ee480582c2a3592c443865771", -"T3T1_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "af67e3d34b208f1d10f071ebe0217e49e1181d7f53b6131afee88dcdc20ecd97", -"T3T1_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "3132c940da577e769f25605ba2ccbc13b6d8e630a6a9c74e81974bd45c61866f", -"T3T1_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "0f7847013b17bba1c3134b835e3d3ad16135661e6cde237e86d4122f04be3046", -"T3T1_de_bitcoin-test_bgold.py::test_send_multisig_1": "92426e0a6d6201bb143f508cce8e2c0e749842cfeb331f21f69efe44cc3568b3", -"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh": "70790e7bf49fd2e083b6a4faf7f43a44b79328a737e0868a3b072e0595b74992", -"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "652785c3c553a649d731eb7c3ac4a522016077965fbeaa3b6874e11744af2903", -"T3T1_de_bitcoin-test_dash.py::test_send_dash": "acd622ec1ecef460f90c20f2277d257a8c1fef9a2acb1f953cc92ce4861bb994", -"T3T1_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "68267fe587b9a936675ed4e1f8782d21eb469f8af3fddf712b830a85f467374b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "7366009d85f5ecfd28c61df159c22245f64754dc11da6537a1192e6ceb25f904", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ddfacbd211322ae5d5dccacc9904f171f868288bd320867d981544593a3521d4", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "008fabe25fc5254f2d7aaade169d9f994da7e0e47a0159b1d444b2aea33d8706", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "68605cd1afedf8b069b17729804c35353e4be394f4816e2d1884ee8202da11f0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "51fbc1d6d7bc69fccf240f07167831af5c8bc6818b253b468be65023e97703c8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "07d989b8a4ba0af18f49b57364053174371b94a47503b8be0ddbef797f073ec0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "562a13f0da715c2b671054b19b1b4c1886dcd8cdf3c05a893c3e5067615a9c2b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "b8d1f67ffa8727d12975d8906bcbacba67f5b1201ea9e7afd2abf901901a4571", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b0d8ea3c785e4741968b7843dc84ba632474c8c0b8d72a10d319e336904266cf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "62ff4cbf784c6a6c6f494f8e8d0e19e2a2bfb5a2842852fc92c7f8381d1eb99f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9fa071adfcaae9d1e436e3c18b9fcd1d4b9363089938bc0bc68a57f2cafb47f0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "abf4b0d84db1323786f4e7c703140336ded8a409905d8fb1275ebd3f385f86fe", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "04b61e0fa43ee0a9b4e7a6c845d096c0f1df1dca6c78b6b97a262c7d7a710ad1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "72a6eab0613382aacc331682d365480f6f5b54ad8db1152b862e1785141287cb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "7366009d85f5ecfd28c61df159c22245f64754dc11da6537a1192e6ceb25f904", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ddfacbd211322ae5d5dccacc9904f171f868288bd320867d981544593a3521d4", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "008fabe25fc5254f2d7aaade169d9f994da7e0e47a0159b1d444b2aea33d8706", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "68605cd1afedf8b069b17729804c35353e4be394f4816e2d1884ee8202da11f0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "51fbc1d6d7bc69fccf240f07167831af5c8bc6818b253b468be65023e97703c8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "07d989b8a4ba0af18f49b57364053174371b94a47503b8be0ddbef797f073ec0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "562a13f0da715c2b671054b19b1b4c1886dcd8cdf3c05a893c3e5067615a9c2b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "b8d1f67ffa8727d12975d8906bcbacba67f5b1201ea9e7afd2abf901901a4571", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b0d8ea3c785e4741968b7843dc84ba632474c8c0b8d72a10d319e336904266cf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "62ff4cbf784c6a6c6f494f8e8d0e19e2a2bfb5a2842852fc92c7f8381d1eb99f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9fa071adfcaae9d1e436e3c18b9fcd1d4b9363089938bc0bc68a57f2cafb47f0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "abf4b0d84db1323786f4e7c703140336ded8a409905d8fb1275ebd3f385f86fe", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "04b61e0fa43ee0a9b4e7a6c845d096c0f1df1dca6c78b6b97a262c7d7a710ad1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "72a6eab0613382aacc331682d365480f6f5b54ad8db1152b862e1785141287cb", -"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "4e9a98c440691d61bb58c74fd82ead2b5ff242ec1e5cdbf0ac19888bcc598db7", -"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "d4c9d7293bd0260f7b07a538ba1c8821ea11a3e60eaf93a68ae0b8cc00482c54", -"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_bch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "e0593e7a1ea8a0d686885ba322be2c098b17c39e9424aa063fbd8c08e8056071", -"T3T1_de_bitcoin-test_getaddress.py::test_btc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_crw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_elements": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_grs": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "aac935534336deec7ddab39b51b136d801b9b77fde4f619a2012c1a4e324af0a", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "c2b5fec8e2c1e711bce197d59f4058981705fbd1e8913e48a7d855bb8c539e31", -"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "14091ff90896bd8483238cb6f6e1d3aa6a1f015b8888381a2657e27f4e7049ac", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "c84fda80791746224b6cbecd63cd18eba5480750610175f9a9597f1f830e5540", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "8b8b9e3fed883120a8b686679d9b5402a7459404191d7c95f3a69e7e35cde2fb", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "8abd89496db5fae59e133817ea0d488862dab3fea9ba453d7ebb07cc9864dc66", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a0e4f24027f7e1d15d679d5d05f81ee1568cf524676edb47a3419b9adaf840ee", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "e5e81767de7effc008ba7d74f788326ad494a6cd1072c9c23788baa8361b5f73", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "340bc2192e4aae8a476fd760127ce8d5c80973dc19cf8262c0d4c0e597beb81b", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "f695f9fade73878ea864183677b6341942fadff990b38b3e1217cf7a55b46384", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "472ef18cf27f30a51010c87e199ce965abf0542a423f98dcf976948e9b7c81e5", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "ec039075feaa61d2b0293fec85126cac4126aadcb3b828283ea17762155274d3", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "f44b84e6c8292bd5152f4dd1114234e7f36085c773b2fcf684f13473194c473d", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "ee925023c7a95c436d1b38cf63724118e11fad07db9173ef46da81aa03b86f20", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "2caf35460f69405fae2fe6d2a3327d9ba54ff2004b4cd5ca17f0682703bc243a", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "c524a4d61c056626d605535fd013aa087164c726d48abe4c31837865c61a42d6", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "2da6f568cd034e06928f489a7ffb0cab82065778f7f198277e89269a2bac0a05", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "13b846506001ef73ed73c326ca203139d295ec184df32b8b184f4fd4ed657c3b", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "02ee14750dd5a5a5c6ab3e13a638425714f4756d7daf4a7ef048e3da25d18226", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "987b7008a0c4b8ed372860d97620bbdb9635d80ef450e502bbc9c6048dd065bd", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b84360fe850d19d2b60c19c100881084bc84ebef0673c38125f181e12408afa9", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "ec3ee01ca3724842ca2ff8e399da5a8b44cf68aaf7b36539c9e69bcbed939e3e", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "633f1a60133746da1cba24b27b18b450e540a5b0f3b2da7a95b381b44ef3b24e", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8bdbd981511237692aa00c2162220112793c502fb238b08daac254a53fdba012", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "763d31318699a630329640bfac7df8e4603623a6407457fc1048a68352216f2f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "af0b52a7889eef10f27ccb3408d6e27cc205aeff9c62161de3e3a8405bf5bd9f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d4cb7495518b944ffee63a6187c24cbfd672c7776ee4eccdb59581f1de07f3b3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d4cb7495518b944ffee63a6187c24cbfd672c7776ee4eccdb59581f1de07f3b3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "9636753c059452757b05f250d035077eece61f76b795d0a10569825ea4cad3e3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "6d5df034a76818b15d5f0b435d0a0bd5c86d20cd34810e74c3ccea1ee6644960", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "965a86ce1743ddc0f8c658a6c2858533a0201cd139dfc0c8418f43f2ee53fabd", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "bb6bf9a5cdd3920e729969922215932d1a3f51dc1cf0d17bc316521dec29644c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "2ce0d28e7dc583a79167c58c11263fffabccceb142746b5d668fbf6a09978593", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "fca0b612ecb830b6ef4695fe622fa179e1c462a10d6bada5bab7fb418fb6bb2c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "589dfae06091b0abd9c87f5b847410bdc7e6b90e90567a5b4672ad1d4a6c46e6", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "f3b00148333ef8b73b6e5d56cb282d97f55fdf57a30031b13d3ce6f5351b19b2", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "59e25634186b037b10f20ecbb8b7b4bf9c9bc869b6366638461d3fe68f4f8869", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "b0f2ec78155905e236dcdca83474a4928b9ea824038935493be961824474aa8d", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9a0fe11056917abd28282728fb62f540c32034e0153e438e1a193c1046c7ffed", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "c4e3d31df48e2eaed9e25312ba67a46a51ff29ee01c70a126f54701db20ffb28", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "1dd8ea02615423031f594b8222c817fff4f17f1ec3ca5424d06bee3393c8d583", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "0f849bdcf48d54b08085e26252374741ee3cb858f8dfcf5f668f8fdc392a85e3", -"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "1abff7365d35469656ee0119fe4f04a5fa4464212956b1a761b38125f62df274", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "df4d41c5fcc423e5cd7b8408dd8c3d7d9d2a24b3686e95395ef99cb1448590f8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "4708784b8c2eefb0fb71c9658e42d1fb02b27cc3f7b9fb7c4887b3073ab34420", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "d235e7dc92b77ef78e4c9a7d5d535d21b5078b5652aa2aa9eeee750077e6b53e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "af8f2a77392a53b15c97239971a917c6c91ada113e1504c3b281176768cea163", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "627ad6098c7207d2bb4cf56c0ece4dff023ac33982731c025d50e80356aa7531", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "9d8d763a945296be27375f9401de9488e093133e38f056dd52e7df597edd1560", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "87cdb129b1a9338342233d9f8c84e44b45b5c40bebcad2b008b561aa77fe1c14", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "27c172aec816ef8b1df13a11fd7aae2a1fa4b322f42b1f2bb7f812c2f371919c", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_grs.py::test_legacy": "187bd7334b86373d973fe9e0d31b9de0070029e9372305794e056b5d2bc5a6b5", -"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "916f924a69f53952af0fb7a60f168a4317e9870236b1a26ff8e1536ada375cb1", -"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "56758dd1af6261ba87abe90b284d63b4391c64a5a3922b8a932e1c09153b1971", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "ae403b23b1b5fdef19f62f1a804b5d357aab803850f4202a760785d9bd8177ae", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "9b73e9ca561f05dde8306e1b01691fcf5a13cead5207e63f3e2d8c4dece2caca", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "69521f5c988c1abe037570c29bcb023be96c2031374a2e122a0a540b72b79381", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "dfbb37289d40db5f250f4635b1dfd0f3f628653e0ddf1921c759a3b72f20d82a", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c7cd1275972d0f6173b4f427e18e5610711bfa3e48b50e31bd72c40de45a5423", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "9e8f6c0f9c89cb4f109d4d3793510f9d22ad751bf386ddf358835f0c654847c9", -"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "4a147bd2da7e362aae0d75792090c53dbac97a27164ed09b452983b9c10dea7b", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "037fd02ea2b816d865cdd75d539c653db32a3d83f2803f6d923f1e77ca561567", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "62490b47d5283109ef480fc7d4487dc81b9556184437307f80b041c1bad4c4fe", -"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "b48c191999eff33118610114cecb9cbdc25bb5ea9e91ada1918091bdabd3afe2", -"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "4c3e91f77f296002ca3628dd682807abb999dc7d5663aa38c2ee3d7412780055", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "cf2d2842907cc129c88868199132c21709a48a6e1d0a50da832f5ff86f13d7c6", -"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "1403bf66b99263c8652e644a0512f40bef7650f4c55a65569c35a033109fee06", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f8c458d7fd86758f76584182ee53487df0406c9ca14079bcd410031a5e0fd3bf", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7befa9d38a136cfb3b785168c2fdd44d33e16784209c2cd4559aed71b0e3f819", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "945171f958a106db3ac9b03ad615bc472b958ed92daef854bd9dabeafbfc0915", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8b46919107f053cc17a7c2f5423fcb6b2f27c05bc78a1fdb21d82d08dfc25a96", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "32388ee283f47424a229be105e1487ca896eaa18a4898c3527e826787d1ec505", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "23dcbc93a12e77192533492fde55fa10b363f4e5dc73c864b0b8c88631f4a83e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "63a169ca1c10921fb343921d0dc1202978d5c3967ef9906f5fa401bca55aec3f", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ae6db1972c9b584dc8c3c26850f56734ac8ae5caf174cad72fb045ba203c81ca", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "068a2f380dd5eb7f32afcbe81f02a53985892ddc836da955a6de924be40174cc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e947c1625e12ea096f9ea12d16f78e3e76570a36f82b146b0cd25bb3569dbd8d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "328942b6556625ebca4c34a332a2db99f8b30963e97f7024b76cd8f1b6f58763", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "4df502ce4fba039c4658eec3426117a3ed2546e31aaaaf8a7f264e550f056c88", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "36564935b613578102f44a48d19266c0963a83c8065ac0d34a4a82eee0286425", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "7e09a8e2d6e7bcc8d3b7644b6fb61a5b65dc8927b4b676653371f2caf38124cd", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "4dbc62104c35296dcca12ef3f982d691562218ca3509e566ebb6467817559544", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "26f3c3c2d393c526db4cbe08860ed13e5784d36f544a6dfa3fccd9bc7d0052fd", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "d5a0d63eb9d1798d999041ad0ee093ef5e93cda171c78f748970ef4f055ed9b2", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "bd994a9f6d0cf34a2e846b589003d89dd261612b302e4316cd19bdbf1ad17af9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e681f042accf474268f0fe105fc36048fb823c75e493c3a317689c9132a88de6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "0dd8fc39efc277949322af8af3324c83f83e5bfc6b839dad8f05ad436655c903", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "1251ada2d7eb93a74d291f5c5d498f85c09430dc62bdbb3436ee5c54bc195e34", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "9d44ec256b5b03894c81b9e90ffbedc61ec1453494b9c52e8ee81a81c2540c22", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "c3babc6f855bc513d2520e11af0226351b08def8f0202fc8408db5174930a3c4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "a33724c84249482b03f7cab0f058cef340bb2d63d75339480541ffea4e75a018", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "3ccee86364a2c2357da0c65221a2b6efec0b1fb49e6600c481822ced1806f5e0", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "5ab91825c7b3aaf488a9707bf0f5b616a54332cd9b2aecad4e2f9e89df765c74", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b830da59e059112fd60b0eab834153ce81410a0be5e234d45c84b03814bb3151", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "45abccd33a0bb02216458f21d7a03500ed6db0b80dfd45610c4ab91c102bed4d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a0abf6ae6c7c863b32908097b64314afff6fdd3863017597ad542ffdd15b93a4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9ba6628c8fcb8cb4aa663db515c1cfeed0d2ffba45b027e5546aa98c1c600dbc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "53aab978ab389d46c2e1a0a252d5962cfa74fb8c0661bc4435456602a80b2141", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "ac2a35429116829bc9b64d36e2b9a118a0c4583130c6a8da5d7c5abb2e8e9589", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "340b3ad14cb53e23d93fc00d32e56baaced8572d0f5ee2d2f1c0fc30609cb97d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "2f085f081d58d0776824481d221c5204090a60526f7b7c8c2c7304f6d7336510", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f1cff0b889af8871a1b578e0f1a58d5a2aba4205e03fa6f22168de7661a09842", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "853b983ec8bc1cd2f1fc21375a3b70ef6dc214877a665f9b1c017f88e099df74", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "33b1c6f8246f3a2d755015e950e3e3923a8d7565e100713b45d5f2db401d78bc", -"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "bbcdedba7de9698e5f39ce27eefbe2f04573415d4c83c6c11869866b679a83ad", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "cb14903c47f019cb4226a57a54460830afbd9539402a25e07764d52bfe95248e", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "bbbf53b27b55c2e3621226c754a26e0b6d26e28ad4dee522e5bdf00124c86708", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "208dd4db2f811fcc7bf39284784e6635fd06373281cbb38a02ef5d0e4372b0d9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "22124d4223cc9b020a8b7416b113935a459af564e90fd540fe42bf29118e70c2", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[decred]": "8952995825f122f9d1245d2b82359a809181c8fbb4626de9fe9f54a0d6a095d1", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "0f6be42afd5263571cac87e9c4f0153a7a2d3331a419e148ec0b142ddcffd468", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "f1706849538ac0b3d530c637a0f375ac8e911151410d1c5fc660cf9e6c970334", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "17a2cbc0d38e313552d9d29da3898f64a3f7402415e0e57fa317949499ca8348", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "6dd8584d79193e50f749b8c85632f41543dba1b8b8220f401ddbf85b6c7f375f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "bf36c579a611bea1e545565889a6da75c3cc71315c7def62c5dae383b5101a20", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "bf36c579a611bea1e545565889a6da75c3cc71315c7def62c5dae383b5101a20", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d7a82569510301102d8d3fbd1fe1c817a7ec12f43c4d3257378099947fd52c5d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "270d9d3829ddd08cf8e6b9f953caa78f77846153b4c418b15f546ad19ed67799", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "fcddcabc913a285c4d63645ab960ca057b8a391dd18591b72f28f7209eaf4999", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "fcddcabc913a285c4d63645ab960ca057b8a391dd18591b72f28f7209eaf4999", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "2cbbc22d789a4b9134dcbf9ff3f47edfb64d532902364ad125690f747c9b8080", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "e8dc9dab3ce353e51ea052652de68d484bea7bc0daad251c9a4aa578310c8cf8", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "a03cae7357e1b0a0d39033da41e19cece337a363850bddde8fcd331328743b8d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a03cae7357e1b0a0d39033da41e19cece337a363850bddde8fcd331328743b8d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "181f3023985a725708ed0fe6628ce8ccd60bebcc9d029271cc70fe1057ab6125", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "2253b641037aa13c9f147d47ca7f4c245766034b7998947195071e159f775341", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "1f1e553cfae6c8c4aa1d991ec5e6aa72c2ec526b50d8672cec106861d4944067", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "aad36aa5771b97315adc9fd78ea87e0217b7b390747cf72918ef07d20b3fe14f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "cbfa937d264107c606088d07d9384d0f91a76628b66d8beb617d1859de19ad8a", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "13ed7efd7f1dee255bb3f3162eaa0f1145623783797d4fe67dbbc63185f6e86f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "4f6008a3c77222f52a9ea5a32e6c21c349921e7d69ccdea30df7f2d58841e8a7", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "55756d77cf568f1ac44ad0d9cdd164eb942d66971aec9190b8f274bca1bbdab5", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "e0638a1a32c21bd1872668efcde02ed80dba7b59d2001735a9618728c7a6c200", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "d50ac988d12d9cb0f79257e82edcd24aff0576cc8dbc8477984474e06c38d1f3", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "d50ac988d12d9cb0f79257e82edcd24aff0576cc8dbc8477984474e06c38d1f3", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "fd47bd412c506e43a2cf98cd8fb1cad11fc7d1b63a60c5efffc743ed27cf08b9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "dce797e96ed1ea0f651f844f3eb24d6400081803b181dd33c054008ce4818124", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8a56d13a5b212d143e1b3cf63d31e65c037928fb0ab9108d78eb8cb2d77b7c1f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8a56d13a5b212d143e1b3cf63d31e65c037928fb0ab9108d78eb8cb2d77b7c1f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "4d9cbef0ee856f69ac7e2e5e7e1c25f3654c5543e7d5fe0333f9ee3bd52fe306", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6ebec834552a33c1a2297758c8b7bdd379b60a31efd04ac292ae7bf0b20f5ba6", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "0823269ea769a47c07767c9d031d5e870e5424008b172d776e41a1e2ccd30f7b", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "0823269ea769a47c07767c9d031d5e870e5424008b172d776e41a1e2ccd30f7b", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "53b4cb592c1c86668f285717aadb43f863c4a52dd7789cad626ef09cb7fbd83c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "f0307018a24f41c08ae3e64a7b2f2602f3d0f5d05331addd64e7dcd4e770a073", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "d142609c3463d4dcfd2c7ffafea119c516c38062ebc699e9417b3b1a7cef1ee1", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "e1fa915e9fb1234d69ac60dc4aefc416994d28976fb1d02b09b0106c33a29e95", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "078faa7dde06aa37536ce19baf278d1582f9450c3b03f2d5ea9710d8cfabf5f0", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "41bee50e29c207d9cca04d48740d0a1117c1499e9bc3b4fac9926595f54cba92", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ec6a7f0b0cff32156f9d16cc8f879d92b5632a86c979f5d3c85e516d6b685b1f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "8f6e51370111bdfa1915088400f900030e0349427c0a5cef0f530d1b5c9fe23c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ac28bd7184f7a2fe5a87afcae4aac70273ade8be077069c40c79521110848bab", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "ace4e89ae1c8d469bd284d0844c0f413753535190f059289fa5d502d8bcbb397", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "2564a17d6948a8d654af5f88b0eb626c84b240d612d91ecea3d819b5712c32e9", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "c9db0e68ac78feaa55594ef18374beadf7c906ee9c01152ebabb6d65f8906be8", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "2db20091875cd7019669d7085c30a94fb8604524222790109657a9400530e01c", -"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "fa4d96feca2a2e1767b0cb7032dc63afd16c6af257e8c094c8a204450e4de6be", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "a30a89598202fd3c38e3f80046d627976c50d92b51ee1922825d9bf20e301927", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx.py::test_information": "02fb59b788b4f0d10f3a59e28e04ee60a3627608b52621ffe3b1e6b8c22fef3a", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "e68c38bb87495ea419e510876a78e374d4097f8e8739df2350acb7d4d4bfdab7", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "70ae35c7daa3a3700a3d82504b335af40f6e9885a7f8fa0b41afb7556012e07e", -"T3T1_de_bitcoin-test_signtx.py::test_information_replacement": "1f86e0267e7a6a0b89cf3de3c4736315849f111d8a789dc9f5041861ff3c2d11", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "8f8f1bfa9f931f54c63f024c2c1e27955ebc298a6a27ff16c11bc8503cfd185e", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "da5ebe4d58ffbe3551ef822f4f76446e9ee64f0b315ae20b3c6266d5232ccddc", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "1cfd8a7d30fc68e006af5516123228739e8fb89628bb55e62a160551819ff9e8", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "da5ebe4d58ffbe3551ef822f4f76446e9ee64f0b315ae20b3c6266d5232ccddc", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "1cfd8a7d30fc68e006af5516123228739e8fb89628bb55e62a160551819ff9e8", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5dbc15008641b71a624828adf0adda352b91c82cc7900b2d6c5cc65446843b79", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "09354c507051ba6d4914cba6c207658a5ce059028434ca99fc32a3f45b8a47e8", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "d91a933880fba80c47a1312b8316eda7964313cecc32f4e0b5e8823f00f661df", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "720cd7592c9cf30d8248e01f42039d718a812b6404fd92f97d17f312e6e9e955", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "94dcd49b4703d8dbdbcb460dbd599a4a058952ea228746b75ffadb7c579a4fb7", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "17e60684cd5bd0ff681363a2a042254a19077e9108af6f71766ac721b6ce6c35", -"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "0d5bb1503e5b6eb112295531a529266af5114b56cfe005a6b1a495b24ebf8f40", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "c1f335a1ac1b7c430a75d6e9e42235bd8a32d164db483df03a4700cb5648d180", -"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "964c1f8cdebe3312a6439d381eac2abe15187b31e6e19458d367550abb84f5a7", -"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "a248d971eef2b5b71f215c3471feab815acfa1cb8e758dd93a1db8a75948835f", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "687402dcc2c1419c98832355f99534a2a5e2b2e09a55106416c44a9c79cb4fb4", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "ec54abe8318e7e428245d1cb13d25a3650ff980c5ce889cd89f3778a4e998537", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "045306d4977b0abf6bdba0ab49a4cb1e2f68ec2cfd49f14174d060b4e49087b9", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "2b48938f8632092cc010be0d16120e1d960f177bb91904c8bafb72d4c50dba0f", -"T3T1_de_bitcoin-test_signtx.py::test_two_two": "8d0ee4d8fd9a4bc8ef4a3df82e55a7d8e7a66cd21b8be5992ab782273e9ceca0", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "90c89493efcd2a8475ba9bbebaa20e1b9a264f327551a364886181dd68b73a94", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "7c09f6ff42ca91b0ac86966286ac1994db2728789b105c0da68f852635175316", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "3d6efad9d5b0ab0149fb36347eef9a07e318bc4bcee52d8a3d34df2f697442fa", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a328fefef92993769684daad941ac56ce429dc81e27e1245026e1e356bad1a55", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "96cbc5f4dce03bc4920a3c5e87b39fe4b6b5e2f801980fbf9d090a97b6b5fe1b", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5c4cb0545101aaa654345fe0ac3199b13c00196727090a579c794ee9f97056c1", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d3d03455835e32609989606d975ad3b0e3c81fa1fd650c89617409c225efb048", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0d0412eb55a955fd79e70371b7186557299f6e423f2376e9ff183a2b67652137", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1d7d27629d2fa30de94406cb8e559721fbf4772c554bfba14e16c18699de15d6", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "6e735feb08a2376bfb317a05c94634929bc96cae94beff6714a084171185fa67", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0ed7a91f8babd223331db3df89797aa2288b0f0c893d562744cd8d3708dad3bd", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b09276c2b27f43268c07a4d16b8c0385d87fdd6675430994f93f4ca317454891", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "0c749f1be0f0ce51997fc63c888abeb636d6d56f2245fb9d92fe9a22c7825f57", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "06981d77f508d156ca6c2595e13bce12429187b9111cdd12a69a9f37c68c7a01", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "aa0cb6c7f95d4c6266ba32b988af040f0ce3c29e7bf5a0a3ef4a8eca1e5c4498", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "5091de55d717306fa73100a7908b2b4442039fc8ac7fb16722def353e207cbff", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7e6a798324c8019019fde5f9ff8fd27a080c88b868e63b5cfed7b2b310d292f9", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "67ad861481273be81ca47a7fdadb7e4d1cbbf493689595df335492896dc0d3d5", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "1c4aeea9bf65e7aa89698c76883d20ad9ce435f8c7fc2d68b0a174d36333d719", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "a74fa38811067363c564d93f21b4f163d034ffd7eb44b759a96e4451cc122da5", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "1c4aeea9bf65e7aa89698c76883d20ad9ce435f8c7fc2d68b0a174d36333d719", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "a74fa38811067363c564d93f21b4f163d034ffd7eb44b759a96e4451cc122da5", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "d7751d51d6e465d2da904e6f78435a1522f4b9f9f921d810263de6ee61c02f81", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "7f626cc02c2d38fd6ea8e0d0aa69531d4984de9e64e6ee483bdbf14c385107b0", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "248b589932345b1ee5d9cefb04d22fa861527c33dc2da62af425c196648875fa", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c28daa5bdad2d32bcdcd6869a13f39e16d982adc62c83bda47a524cfddb5739f", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "b4e965dcd8c04fe585458d15482dc9496077325127ccb1e97d83fea54729af29", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "f50fa3c406db98243fcee047eb20ace974646b07b3963e9c800d9577f485a3a4", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "7937baea70c65efd9415c0c4dabc6a26c0d9b4ae005528f471f71c905f36faf0", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "647b18880af45c4f928db7b5264428bc42d913af403092ecf5833cf18ac6277c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "0a8ff30c8868b304b43d90a880ce2736686db45cee73f9b36b4e86b3fb2c45bd", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8de40c79c6ffd1781eda446f4cdc9caaca36d7dc3c020e647bd6f5cec1cbfe73", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "22311090d34bae5e0680a4ae04fde15e6873e20d40079139aef91e697a2340b9", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "fc069bf99b14db6bcc82b164577290ee1306d10b7cd317d625cf9aa2fc056e51", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "4a9b651e4f0c57d76997bfd3f1ee18b3566761e1eafd7a06865738545dfbae3e", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "4a9b651e4f0c57d76997bfd3f1ee18b3566761e1eafd7a06865738545dfbae3e", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a699526b33cda0098a0466d594a35bd52d9bc81899857ac6783d979341cbdeb5", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "067ad9bdf5b0f33792df22166b5ead0f1864cef44158f8e6da3f7627ef9145d5", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "9420a4d36d46f161a2c19310f44c76dbfe52271f27075f4f296ee7bc0bb4ea27", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a699526b33cda0098a0466d594a35bd52d9bc81899857ac6783d979341cbdeb5", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "b42047e39a2614209c61b2de549f691fca3382cc198a80448bfcd22c8b70f783", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "f9ee8c7e6e7d33133c817a30778ccea62d666a55a0d6aa0dbf98ca9bc5e8a1b9", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "f4ddea4a4ef75780afb1a98c6b5f226fce6155b9d1c58da1d7cb002a921d0339", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7044dddea721445ecf665b07f0231962a66500edfd81b9bfbe118c89dd91144d", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e2afd3c79e690905b3123425308fe66355cfc52f73d7785089796e4335509f66", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "af67422f3c12ad9b4634bda3653a76df6779e8d62147a73d278d561359ecb6cd", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "9b401c59fde93d5d1355566cc952a4644f6e44e1cb2abc90a759d9a739042c44", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f89a2e03000625bba736dbbc9f9fbf0de9c20af5cff1402f542d970264ed9ecb", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e0b624b2f579d2471813f3c8ed90939f2e998b7ea47c88fb625693b7b738d2a5", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d8c176e4795e77106c9fc1c61a65513accdf4f6457db254b228352f9db8e0fc5", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "2b221a469051f15a73716d1ced545e38b32b28145a2e132ddd6111d202258b2d", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "eebb11be899c8b1323e438e9694c8b14d1a7ca4b99ce0646f0e5742dd2e48c6e", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0cff975c185bdf9a046465bb46dab8b7522793d5148414c1cb3e2f55daec9b33", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0baab56d6323521dfbab947e207d36bfc8e2f70b90d12e5f4315ecc326ebd29a", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "3663ff8cf8840be02418246fb3ac0d18744c7efdff87ac6cf0c158405dc7fea7", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "70081ab169d6774e771fd08675240d50402de8a5bcc1fab034b85cf00b746e9d", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "579110b91367cfbb883dfdbde327f3530b93542ad4d254101d536881a35d368c", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "71514b8c7b4623419a396826214badb01a1f228aafabe869deb647b2fe0d7fd2", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "137fa4b0e0ca281bd55c3312889a61a96cf99d81702c32c67dd32dcdb3e7cb5c", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1f251f18e6e200d9b2968a12ba23a50cac93f3b453d19bde2dc00d8cee9e8fbe", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "47afe6774c095d566f11c35881d33fcd624e37a2eff260a3a11945f39b1ffcce", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "bce2774a94da770f4dcf00c9ab43d0769cddddd62fdd2f4abe9cd1fad5a90864", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "006b9dee52aacf96373f71569d6b69a8971d8496bb8462cf61c338ef4ce6a05c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "6830091ad24777a2d6c31cb31bab17edad2927896a3ef18971d5d0f053933ef9", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "814c78e82321f6c911f3334aaae6e071c551dfa1e287377f55fd5fad8d9fc33e", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "794e2a8aee88ec640dc423ed1b7cf1b18041152a22271c59763a46aa16ee3220", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "da7dc947d07c9bcf8201efb4dec7930b747ff6ce93031e4bdc348f8eb8200f59", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "284c3aacbe52c95befc6064748c9bcbd731a1e59e478afd33504ed4f322dc691", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "553f9c06e41e4223ad2e90c8690823aaf779f78d1dab8d975c032db80672a9fc", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "4a2d30ae9562855dc69cbde2dba4935416bf135bbe4eb62e0a0fc407132ef4a9", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "365bfe0cf8afc3b4085ea9c5438b7bd204f1b7af501dfd6d2b16b5c520ebf8d9", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "40eb8c66e1b71287d9e76a74a030e8345f2ba4dc13351a60382e99c7a8434c90", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "de91f4b6f27e1486859a179290a57b7687a67f99aebaf1ed22aeac96e4c4fb52", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "c57ea82f27ae92dc8dc51281759b8ddb9ecebead39f1b6293201c680c5fd147d", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "7793afafca42a92e6bcb5f17b77bb19a85a77810b86b31bd3f3bb41e57b10d41", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "616ec38b47aa3b8b454636466238b3b33dae977208cae9db7b6ac1479eb0cff1", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f886d55843c45fd5773e050b1f2234438f780db396c9e8259b4291b66b019a5a", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d4e2bacfda8855d67aa7334bbe59d7ba5174731bb765397f8eb01b4189208e6d", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "1e3597dbd248adfbbec4cba3ad1abf05953e175b254e555b8695ccd48dffab8f", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d819b0af50daef38f14f8a60f762340b5f06befe6835d652fe7241ac0a44fee0", -"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "47d5ec5a4cf12907681a5146b1390c88ec41c6f37eaa76fc663018ee5357df66", -"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c6924460d75b6146354d13bf69a6f7513b85b36e6317d94aab2d38a4225f2ac5", -"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "3206716a48a02a13132918c3fb229b8aa856b0eeb8e8cea2ffc91bca2b100321", -"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "f74f552c0d8dc532164d53e5f46b9bf433dc20295b01e0e51dfeef0c4b64e4bf", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "27c82480a7e7433ab0c62a5bf389d9f1ddd2fc6732eac4023bdb70eac1aaa149", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "487b92075c46706e819c43099a71cfbab5fc5ceb2396d9dad66f52ad3daaa3b7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "04f740825de357a4f97050ab9ef44c81229dd6c1fb027d7fdb67e306dd7e1db3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3212ff4b5c3de59947b15385bc032d6c1a1e1bb9cc8bb6117e996eed6cead3db", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c9f62229355bf94cb3999f4fa4342fa4b678fe43e997bcc09fd948e356ad0bba", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5664471b029573c7fd130c240322e56975f2905623cd113e36f8292847d6ad44", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2aa3cbe25f1aa4076deb4f07483cb1f85e67222e5002592e4b21f40155ede0e3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "724c1badf06df05a8451194b4d7978048601061bf2bf831962e533e3dce77699", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "43a2897a5b1a31ff920860a17ddba6ddfd6f7d23f3462473f791287808e0baac", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "3c4e179edb066fb98f63d19508c08dd06ab945919a8a910afb0f89cdbe8bd71d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c6258d72aa0be675c10184fd639cc21bae8dcff75c402e62743fc8c69e676e6f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "74fde7dc8850138490b53887bbde7736d59ba373d379f32378f16c0d7c9e4bff", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "05417961b37fca7dbc5b005c1334190ef8472fe813cddb13eeee9512fedb9b42", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "1c6ef270195f30290c838eb2ae3423228afd4e73311179f00a16c14438753fa7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "dd571315f677c8b11b7e51cdb78f6e1e995060b7ec429eb062fa8e021bd84219", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fe006686506105b822f5545568aaf409c4d40bad5f51e6f447dc972d1742e48b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3c96d6f404ad665ee92d36a05c85081e41fe3f9020e025af53ad87c2436c1a2e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "5f98538cc7b5775df09ea9ac6f97c691b018ced70e61288f9500661bba9a3b85", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "58c4023260bca9013376d384c378ace37237bc254cdadb37138f9fcb4047b757", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f301227ef60f2df533256165b86bf7dfea5ba1cb14fcdaa4ebe29b11dc8828d1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b41a0545320c256805c920fb28e65f2de98c839553c5c29bc4089a6c71dafdb6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c55eb0c21f8756570deae1f8e35b6cc8ea70de3cdd526c2bb4d98daa514cc2d9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "5f663bc8066b2eaf3cd3a29384527c4dc758b5e5ecda341bf3201917a7e67d9a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "23f6b2c4ef37d9d6f94a3a99ba16f94db5e6c8b2cee29fee8887b48df10c7212", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "db68525ba8c28af57e0ef7523c81ddf2f4816272eb3ffeae4ad86aee16d691cd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "5fa7843c0b87fbd87cac4543977aae1093b7af34b3dd86d41ab939ffb48465dd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "aeae05324bd7838673f5a8ffe93fbc2e4e251d6798ffad6c7ae88138d262a817", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "f3097adc1b1db4e70bbdd5e428a64a2f7b993d6ad037c638a7221d54d0f654f3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "9c5f825b6d6024172b4b6fa6b15653ad25aa6088c5fda4d1ceebf3d69c348324", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "c12b781bb1d6f5681edb054bbb182d30212dac5ca5d567c8abf657550768d6e1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "e2c363508f1f3b6fd8176f6ab9ff1fc23b82add0e8f78e859f3773e7b95ebf86", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "7de4740c2a4a1ead791f93848d009bb026592e312a6fedb730a4398ca08042e1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "638b5d1194d5779494fbd0adea4775a5efe154cd07af45968f33b32529e8713e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "f7b3d9b779e64c6f921027a1c7d7f42eadf7d533df635bca90469c3d615ee2aa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b47d5af9cb177b3818d39cedb86ec1081619cbba4913c98d2bbca525a57919a6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0ec25476e2524f7968431db3c2a41bfc6517bf91bca206504c7f89537accb11d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "6b2a370483373c63357e9d822e9d5ac5f38401d787c9ee65235a6beae0f77336", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "2d9b2630b05918d1e29495a428458bdffe3ab7372ca6d19d54afe38f5af8761e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "1acd718dafa13fd9b63af33902f608f6d8775486398c11010c1cc39964374d2e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "16e650c8afd0a2cd8c585ea0cb9f71507644afe9482eb0a2824620d7b2f1a16c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "9c76944b275d91575c97c0af81b58a29b3446d6dee09edc262e87328ce444455", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "ec12bdbd3c65166d9f8b3a139bcef8bcaff2317f5aae6f60bc978e21d6d2676a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "6e89eb8779b125ab44b5f778e0d9f245dd19015a920a77e000a578ebda852074", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "100b5460b84a7be4424dbe5cb074129e415859c9b6a70258d5b22aa6033a009e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "615d27dbc3323a703c529e7f9c957a1b0c3fe3993e247ea4329871c272dd70ae", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "3048cef3f366259a3025a694947ebe3ba6819d5f4273f537e74a9e1a00e19f18", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "a900dbbd746931beb5f41df22bff8fa8954cde47deae10f612e33e488f81809a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "81f47b743e13122d6affa5903c2d42b849aa4942ebe1e380d1c961a1adc60d57", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5b53286ebfcc985c0cfb1faa81f31939b3df97ab66bd4b9a4a09f18c365102cd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "a028f97bcfdaa7c76fb969deed1951a91d38a982897a68c8f4db144eb8b8fd1c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b0a8662d0f15c153831da93e687093cf5f8977d64df2d9acdf8770068acd605b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "3f2b6decf108ed09809da8486e234c47db70bf900612e33f672a1061672175d7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5e27ab4c27fe5efa16f12287e04af4b0850caf51c8ac1583ddd2fef714be8f80", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "447e585b393711ab2e3a485826d8f34babb6c3ac6acd6a7ee1bae25e0957a827", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "77ff04b54d2c9df6eb20f4f66c6c3f72fe88b302775f8b1c3bf880605cb76394", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "7fd38e8a4e0753f6c4dcc57ebb92e51c50694cb8d0997643d86e745bcd59e912", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "ca9f248086b7c711f6f857b68ec6a692a9301573b49bcfad15cfac2067db3c8f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "f623ff9e814a06bd7cc9ffbff74c2743a493e8303736ba9d764d0311deb6ea81", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "e4fe24cf79dd73268af4df316c3e49b5b83d09a5e19505808d5ebaff16611773", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "6033e4e4bc6291a0b80a8c9ecbd1cb5ac9fecd0c13f4b445d20f249a59b5de7e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "5461d04bf279216333e8869429024e2b34400ad6da34fcb6591b42ff0c2b6e07", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e32a671a692e698072c42ad1c224f0e1bfa83cefc327316047dc77176f9e89de", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "5539b857c1cf4ed54f644130a67bc48aa971eecea60a252bb7386df773c46dd6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "0ade015e5d3959c167886f85b80c5c118524d420bb0ac5dff73f4a79d713b2bb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "80816d6bc49abe49c04bc0ede8ca0adb9b3313cebb0c4315604378b9ca369ba5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e588e8bc58b21d5375b861dfe9aa980fbdf6f2642ea349596671527648508447", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "23d032d31e722df61c2ea382d9ff51a43eb10760ae70b8ab75fa617d4fba7e81", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "75f685f4ef68817c26eca2ed050aff254277a14aaf16b8628c5f1f31bfa41191", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "97ad8816b20e0d11a71060de9cd55c29737631482bd7d52272d9dfbad69a5385", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "8c76eed83bef7842d7166259bd7e14a59d76b35f4d74c7c02803ec1b79ceabde", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "8564973a00336e2680a7999f5731985a8c541f1a15ea4d06deeb1e5c79314c1d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "3872bf212c53e7920e7d3cdf2b52ec4f1fca63005cb9ea8521c05c96684b7667", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0e9e23123b5cf3da226c70869d06ae2e081af1655800e4b423aa66dac2837e87", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4a95b5f13ab86c5292184f37512abd6231a88823abe44163a8a4817dfc96aa1b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "aa1ebe4b7f28d7c72f8247f653deff58c38c0ad6d82294c0848f2d808223ddf7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "0ff3704151ad2f734371d82093a516f1d01fbc63750f63af3cacfb93202facb4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "0a51776d0f6f72a54ff35dc5a06ea249c2c207df913ad922f5542926e1590368", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "10545518098df14c3ed09f3cc44a09f2e793432a7ba4e0814b30abcad809a1c6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "45c2c0901f6a8645b182185eac93f6eaebce9c40ba99fc34d2cf168d902f5338", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "6f4318ac34e51118ecbbbe2c9e8fdb0ce4864e547e32feabd6461e7c0b5e42a0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "b088eed244c3e4a3112402680d32ac52b72456cc77bfbac8510fe1832b8ecb7b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "ef09060f7dcd95fd1a8d268c48155a596947020f74f0d398b177a5f669876864", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ca310e5ed416d556c7ac42af9e69a0b39de8f1e5b96e38d859690e046930d6fa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "4c1d8b980ea19d06b006eed397cfb28c2ddb3c802c06d943179e0daba546fca6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "af104df0a13a886ff7665cc42c4eae6e788bc5682ab94bcccf82c56f1ccdef38", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "084f2d19be0a6d9f0ef2ebe359f4de3dd7a36c7a4018253176c3a2d15e3033f9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "dccd30be0d9abacf69c4db8a285342d1447cc8cc2598cd745fcbb892e72f1fd7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "5cf569b291f623edf30040bc2c5ab16d23231069361295259c69c46bf652d5c8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a9ec7e7e22b29bdbc924169151f7490dc4ea55b216c2ead4051b4d84774af028", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "256b09f809f386ebda952d069ceb9c420a62cb1f0ce259312c89f3587dda0f0a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "fe2574bcb7c966743a11869924300b11619ab86bb6f44a9863ebd271262dcc3f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "0cd0e45d236f72f86b1927578f6f821f572e7a85509d609e8383e0aa56dc5797", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5e74e22000b7f6705c527d11c453ce8a3e5a71f4c0a1112b0c2bc26bc90c9f8f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "3657ea96e038bd4e8e4ddb1970a41315e1f22287f8e07de826218eb9b9bb11cc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "f93fe86cb9b6df7cd0ab30ca57a3ad908b009b538839586367a6c7f45151e550", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b992b4c70bf033fc7899d04bd73e9a30fea18248b51330187d66d6add3120280", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "54012817e9642406eb5b27f851c457ede3290f84002c13443872a62bd96efbe9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "5aa167837a3a6cdf73a123acc4f01fa0a147af2e5fde52fab8d8fd7bde0b99cb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f1af6844bda52a375be1387e20ffda71f1bb48844ce8791bc536a9dd32da9900", -"T3T1_de_cardano-test_derivations.py::test_bad_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1849554e681ea50a97e8ea463ff459def883b382f76c45e178da2b26dd6d1a5e", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "40a2f8e791be6655cf1a654467030eebb716b8440d073db0bfa7d19d99e8826c", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "6dc263dfc3a62e3cddbed96e9146fd58abc18501976fb5ea08c14922f404bc9c", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "f8c24423f947c9af81a3c38f8701180238a5a32207a5859618e15419c65b612f", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7d944e2825542711414715d3e1b33fadf46bd854543655f93da221df2c79ed49", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "47ef83deab5c88855ba8924361adcd8e520b2ea0f0c0d2232db24f55503c2755", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "aac2403703abf0b76bfe300f7a226c1c47228c8d1e3213d67ccb0e4635d88d76", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8455ff435536e90208da53afd1450dedd7e569de78271afd21fe7b49f6112820", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "0e6f7d35676bd9156ce4aebe80d9675b012613e9b5dac639ae100e84bfdb7078", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "088e48706b5dded9258b41ed05da4820ac87740de734b57dd698b975d577bcf2", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "73f3e0ce053a75d8e3b908660ba999d411f56ffe391eadbd3d623d47aca54bb0", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cc6ce7065cc13995795876e91dee61100a3d95ad58832762064b659fe75753ce", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "43620c115f5f889f96729b6c6eb4d2016519a8cabc7dcbac48ccde3a60275949", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "041a0a33d745ebd99add8caedd083fe0c53a65f72b6a47e1b77c29ab5b369179", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "e591d65e40c5db772aa4cb7db38f42e5a1386e40a09cc46d0c440761e485314e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "ed37950b5655ff097c5b806df3f95eb8fc2e629db2c37674eeaa755299016b16", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "48a6777d19cf8aa67261ae8d8466ca2bd76e762ae5ba547bdb21ea4a162bc7f6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "7c2873d41e445af9541cc647a6f7c1d8e27e2cc411dfa9e73ddbc429ed7397a3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "cd4df7664a391837ad62fd05f06651e5449dfbc44fbacb7b1a849b7747a1c7ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "efd955926946fa1b108c59bb6d11edb37b39b5ab32008def77d49a46a557f1df", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "0542a4339623b0fdeddc1d431fc28a1d1d23fd4e2e809d6ef800fbe79eb076c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "0a4edc6de7e4b637f094befd9261e62635b6747dbff220888c7b679b965f0b3e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "4474505f79c927bc5f349974b5af5e1355117a1935f510ae0b8024cb944c5ad7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "2d154d0776929b3b2a77cc3a78b2904fa88dfdc1ed06403007c6ccd1a0b4d585", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "ba664e94da52701f75f81227594235380818e9dff0323a16e61ad0c652c44694", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "ba664e94da52701f75f81227594235380818e9dff0323a16e61ad0c652c44694", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "8d15866cb1fdeeb3cbee24ccda8c95b0aea6625268c6ec8ea0a294f814777e5c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "3cf1508f4f4dc4e517e69c0af17541d27e8ada6a9faefa7841efd6611f369ccf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "64d71cf5fb65f1289e31c1c5b1dfa77e25cc7cdeeb7e1e3738d44b58ac9e7397", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "2891867f653b18ba138c12d33593d8de560f81fa8caf78a60095c1d006e13468", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "d1e7ad3f7ea15159ff3833aa9b621be9e9ef390d341c53ec7d2f039e4a915100", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "89a83288b2a442d4f3dab84082621332e95634df17c26f18c7936db35384a543", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "ee984a626687a4d8921f072efd336ac5941850d2c8a790c1dabd9c8f612d3bd4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1451071846089ae64f2714aa7014e29e54acdbb31e80b1a15a4b53c768dbe055", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "0631ac1d882eebd9baff9d37921329c6c03e72ef355f3657f9cc9a7f4068e152", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "d1e7ad3f7ea15159ff3833aa9b621be9e9ef390d341c53ec7d2f039e4a915100", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "89a83288b2a442d4f3dab84082621332e95634df17c26f18c7936db35384a543", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "17525b20f12f8555e86e4afc2c86cb5ffe253bf83b2d4c91a543603c96af1bf2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "5c8745ae115f6a747c96acdf8a2d8a77489182f9c16c83175b9d0936bdc8c81d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "3fa912f848b794901d3cb3e205171aebf7ff1484cd190492720443219386d5a5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "1b1bb66f4375e146ebf01d66f30e76a9937dc9b6f5d97ea7582f6085e70bdbf1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "ef2d0148f5c09e351346967ce75d6242b0be27810b70ea20d48c164d3e047570", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "877b79fecf3772dcde31da1dcabcced62a2ed7f7b7d21eb3c42afec35c3f9e63", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "2019f098c70a9f68dd4be9f301fb732697b1b94eb45d1c51845e547e5caf303c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "6977afea08e22cf7b91420cce13b4e3c4198c4bd2acad02e0df0094cd4c6751f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "390f44730733db573dac809dd273b9ec562a6f1a863aa09703a9d640476adb65", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d68cab03d2003c4b6fb4ac3f3dc67bca20df41195274e5d9f12571cdedd384ce", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "55779fc60c0b4d693342e73b26ebed0e1123f08ccece770cf09076025c3a428b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2a1a05c5fc75a7ff9bd7685ac42a591d8084430ba5d343a03f1be160c73219a2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "730e79dc433f0cd043722e63b77af24dc98a0a59dfcabad85996ae57dad7c694", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "347fc5a9d8ebd1da61f3e62f6a5cf0121cc0a1a7e4db1032390eab8ac2313dd2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4f8d4c3102e3383bfaf783265a14f8011af22f935fecfe2c9f1f4b63af2a143e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "532bf546961e44439ff9ff22f64c232ee641f98756b827775e7eb3dca1295ba3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "005fbde396ae1cea7983b9dc3c5aefae04e453865ef68184cf0d8266c0a2ada6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4bae0b0afe7e44c7711dc77add1595e3f4b5fd255edfb1f4c9a50e2586c4f8db", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "5cbe34032d26d60847956cf0eb7510b238344b90b56fa95c64e5e983d7f2f70e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "29ba78298def845d834c050971d7473771d9970bf36501c53c9fe6d9e9ed7bf5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "7a5a7d7a5ee295237fa523d49c4cbcc5a6382c239a8bcce0e71758bd23ab453d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "c73e1c5bfd948b75c6a86fc3c1b1a148637619dc73fd45877294cdad05ad5319", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "19e110ca23ffc4116bcffa90f6e3163493be3bab3080c792163f7b6249549b43", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "65b75e7134fe05e5f5830043c822a432af105386e6c185b4b37fbbc489d3f029", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "d184fdc47a5994c893ad7c592926eb447863d710c3ab450dbe7da64c1e16ddac", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "e5db2e0addf81a8c4ddc14930a2c467b47d0943f2d9561556d569a49246525d1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "83cd404c2435bebc7588327bd86ea18820d95b54b69e251e431aeed234db278f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "f2acf2b2c5557f1fad5b120abe3166d5c3753f171d86df3ee75664410f1bf82d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "d7495f06dbaa2daf966e56f815ee65b9afb11f090a94cd544f9db4c781206779", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "2008aa2a191c63acdfcafb3a525cfe99dde79e004240a45b09973e42d6f33ea7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "072317f2154787426e373e48c40170bffc7da2c1c36ce1cf4a13e6c7be020cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "7a97b9e9827d300096b94fdb27eab1637845018a351778d8bbd42c102e011d1c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "22d4e313cf4a86e484f06da48a669263f1a2f10c40b8e22587e3d914c37dfde7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "002dcb75ed6699b92d288341a72100586bbaf69a319ee8bd86fe1821a29e4426", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b4a2fbe66d1c5e7d92e313f32e5b1e94c3ac94dc7d65fdd2b3a02b3b3acf7738", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "e9a66d138213991d2d34828c9522f24be77ad90f09785dff5f42a653653ee218", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7b89264a1b042362f86474ab096073bfad5a07f069feb98ec72bb26efc8a2f4d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f8941a26a327c991752de2238e4c103a21b755f617337fbe8b11ddc334677832", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e53e0afa61c8446aaded58917bc6e64786c36aaeb9573dfab3793aeb15cad133", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "11dc1f631bc2e8f6fa5a112d7716b18639d362e0e682a7829536c483772b7827", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d67a308fb7fb1d971745d04ee590f8ac21d2c4bc7c78443bf4d80123f6906ce8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "21d776810e67512d955c35febb0ccea8fc6bc9fdf3f7746e10f7289cbd44f54e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "69fccf7e116a0fa25a53a84ff5b531db27a8286d5840b4d0d25e8797496bfc9a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "b03c9305755ac0525b54ded4afdd477f2566db72a46105888ebe1e35ae2cf921", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e5f2056bbc971f34f00faf8df216ddeea2f5832e6f9093e1cf631fead397ad6e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "d04b543a48aff742ed8d2c3fb540ffc83d9d9eb3447fa2ca63fe0b0780ec90cf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2983e4c991ef11252f2d19fe56a8453e2900976a1395b27620c7ceb892649161", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2983e4c991ef11252f2d19fe56a8453e2900976a1395b27620c7ceb892649161", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "3beddcd3405a4f62a38a99d6aaccef7c59835297d1978d504d524b58c3928539", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "136db55fbe219bc9ceed471c46fc1ee62b745d8d4276feda5859a8060bdae922", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "948080e08f0b74aa0dcc6098cab5b58562a4cce7baef7806f52bdb890d25d0a5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "3efdf0c95f9b8159c342092da6f99e235aaadc94fa98afc52a1fce1af9bb34b3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ca6af6800ad9ad1d1c94fd98f0d7ef10af8485c3aa4b7794f6e18b2cd291121a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "78a36ef078a263aa9e99961b4352120d2c14342da9d466b9f7b36babf4fc97a6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "d61fc7e221496c19b6c342dd9176ff15814eac42ceebac0446b2e5db8bafc737", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "2ac918e3f91a292ca1b6daa9b8288553d26f7294f4eb98967c16c414b6665412", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "3d06387484b8a6d48d49845e5c7e747cdb305fb137ef6acf22142b55b64fc674", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "041a0a33d745ebd99add8caedd083fe0c53a65f72b6a47e1b77c29ab5b369179", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "efd955926946fa1b108c59bb6d11edb37b39b5ab32008def77d49a46a557f1df", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f8454c1cbdc953c4da33d6ee9dbcae806fce307d0ead5d970518d735ef17b66a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "160f80ed1992a95ff3041fa5634f67842fc91d827bc50f565c19f679eaeca79c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "a078f52a8df5f3c6f3d0445115cf69ee3c838a12c09e679473be591e6caa6c29", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "445ec696bf998b24298985f0d06ea2d6c898fcf9ebbeee8ee40757b387bac845", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "57fed81c395ba294b9faddc82beda4899f2e7c730ca63a08bba3a82aae4f0a04", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "9144a3cb537340b6605f8ff73e9acade4d4ce3514b2d907829cb865424901b4b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "f78b8e0172d7c28d1b275130f2b04f313a508e142678ed830847fcd12446f307", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "57fed81c395ba294b9faddc82beda4899f2e7c730ca63a08bba3a82aae4f0a04", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "6c3c1ccdb4d79e461a366994d6b36d0bf9199e72e8799adc61eaf9e2c2c02d4b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "e9a76ad0db7de94e6b9e5409f766d1aa66d602fc3016938e1ca2618bc19056b0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "d756feffe41d65fc1cee51a23b51307ce8d6a779c464768d68a7bcff90be19ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "8f3e817596b82a52d52fd631e0e8448aa7d4506bf1a4825e499611c99a653b08", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "2f23b4346328a408d6be3d57b513830658659cab5c51a02e67d2079de7e754ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b063a8610392b38587e09f5340fc41d34d576c88224c02fbb9e98367b5c0145a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e68172881697136c505b7ed1a1693b2754e9e20443b230a88cb7596d1631ab56", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "630ff9863be4de9c028a1dc692b4111a4e2858859d9453c16dc9d23198a329f9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "bcc69655c82268c54cf654c461810e7e636358d60d4cf43b77698620930481ac", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "462f1752be04edec00c5318135d07b857c1c6173cd77067742075e806353825a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "5cd2a62303f8801e7ce7ae587d2bc262e30124b3588cd1a17c12fbfc5079892d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "b4522913d68352271d4e3a773532bda74423fc03916bc8ce04d59677a4c8e8f9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "08ec5e552b2ec78e6730e3f547cd08d4dcbb995381ec5ffdc990577e11653fba", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1772e5f040f00c94f9f2573a1f05b460d4af45e143277a064af8a2481f775894", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "38fa3ea83e611e4cac24d118fe4f6406630ee5c33dd373f807f583a635bc377a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "7b697fce266eb0026514de535c69175067d9ae3df71f00a0bee148a33ef2cbb7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "4659ddcdf32a47ae6638d0afdd926311595ad6a1d31d67c9260e0eb9188e5211", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "853ca8b8828eebe06456b90daee8077a6fa998f705f51b474d06c97020fdf01a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "4c594d4d30f4ea47410fa0fa883d1e6b7ed29b18f5be9b5cb2f5dcb411923d2e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "5ddcd7c2927a57283b1f04c462c588d58bfe8d55dad611be0dfd756a37085cd3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "e3d4fe19e3339a7c0d67fcf8ab3fa5803a8bd24e7ed68832d0bee0e027632924", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "a885585d69b1b84151bb0fa3bad99efadfadd6268cd45bf2f1829bb4edc667d6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6d190a7d38313b79166a7be339700a8a0ab1639655e76a2ddb59d268bafcdbbc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "16b6bb58a991faa0dad73e944fd99eeb213f67df7bc5a22a91d9654aa808c693", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d8f70d5fc664dd8e456d33a956513a3a24605846ee449d91d70d73dab5659b89", -"T3T1_de_ethereum-test_definitions.py::test_builtin": "f374acafb8a41f528745fd7be7e78a4a239b5a73cae246d0531f39a501556d02", -"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "5667f7e39290d3cc2051bd5fca59c03d46f3160c216dce359dd13752be336e9e", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "e863f3dbb7d1f1dd0b7e2a60d8aa4122a5bce3b8820f614862ee634b6e0dbb07", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0fa29d58d9f7ec7646bbb6391fdf4df3bec7f8ac3d913c459bae7d1038727741", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "4730e056e64b2f31625073ba4a0d9fac628991eb8010bc7f8d2e86d536624bb4", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "605fe69ec2546a7a3086bc9281d91ef1460088c5436a1dfc1073345ce3d8b77a", -"T3T1_de_ethereum-test_definitions.py::test_external_token": "6f65cf10515e6f9c4cbdadf55e3322a05052ab5dfd5aba2c5e0f7c9f8a3562ee", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "22ffbc18cd0d9dbe960a51fbb816b316214ba2eebc777552601246e99410b296", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "e2fbe9d289f282bbfb9064e16a74d24a066ece5d2b38f59c29cd69a9d2753537", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "270b3b6c3bc270e58a991d36c4941fabd39a2257327028ce15c1f57eb3625a35", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "2a2b1ff95d45dfbb397d11797ebf8dcf3bb764301364def080486d89aec9af91", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "62b223ef96892c704c9da60cd1cceb285f05295ce50fb158a6840838a5975746", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "b6ee5d558f1985c669757defc2a42d94585b5428e77c8c0cfbfb85355a89dbd9", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "967c39a299add66f04156b8bba22fca4d72a16f26f5d011e6a45f1465b021749", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1d289c36afd90ae1a854e50e23ef453acbcf4a97936438c1d40133924c5c5c68", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5f9489c333c93d13bd9a4662f6a4f7809b1e8609c36ea0c1382243a8a49b75ee", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "eea9529c37fc7e2b9abd05808db327c80cd9e862e6ebdf106d6ed332580af548", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "7150d5c9ca6e31dde5a4d819d64b829df7653a3c1e0ac3851161f96a5cd99133", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "a1d585458df468b121170e032b17b788c1868bb4bc109377f774d334cad0b11d", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f12e347692938ba3fc502f60ef8a005b7cd38268c65882bf31e19aab85a3e4c5", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6c8430783a80a23fba98f612c4fd56da48317429852ce9023e638c9ba95f8cce", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a19d857924a8eb721abd82840f602cd413e5418b738af8fe666b06deae33b0ad", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0b13821bad8ecb5943c1d908a213ef7c9d0dca6c0a09218e5da198fb2e3216f7", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "c3f7c7eac6fbf0585c141cc078e52e86053e330e77b9492387a6e4b8c27ee607", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "f1fb9a57c70dcad8c473c0a4eb7c26fa5d15d02232d61772c1091550207767fa", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "4641cad50324e384bf386e49781a8f8f5ae83c3a33a4277f3aa8301a59951c4a", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "47e1618eae153f4c579f2dd95183c093f13e75de0a05c171f80a46a7883bb94c", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "a9ff8e72bd15bced865eeddb7273dddeb3a06a0da3ac4d76083bc60e2a92e6de", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e2c79b3e635d91c55674f6436e9fcfe5200bc3a98178cfc712208921b8a4b6e3", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "a6a9ae58b7befff05954cf9f6bcd8545725a24e0cf9553bd7160eed32e596145", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "c9c6ea2fb86dc4c7fb9af760b7cd383d957cc796a293429c3c0ac9c22aa3be7b", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "940043bb4c047ee9dbae0203b97e670719cc6f7c41ddefb7f91e2112a2dff714", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3d5ef1a8b7ae90baf455a8f2b9e270d7a17a4bc83748dd1e9bdbbbde550ef5b7", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "51e34fcac949691457f7dd4683148ad659a9aa139284608566662106ec2f48dc", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "a614d177aa349bf12c556c9f67f898e1559a324fc219032665ce9d48f78ab51c", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "aaa4f7466ff4e738621f293b374ab7577c4e986391c2c4ee4a58591fff79f467", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "207f82b3c82767e281ccf2fac960117c966aeb2f8b43abe8bba40fc14ae035e4", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "69aa9de902d1dbac6633569a5d89172dba23251f8b293c851b08f72221fa01aa", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "947d98a775facea7c8e517b4815c452dae26ce4bd198492748df9deaf719ee94", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ea0900bcaec77f18592430866c61aa6647fef3c159e67ae11e04072efbd620b4", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "aa023fd6e81e15eff67f6e41961e1244be7883e6e01ee5bc6a56559fbc55c036", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "3332573034ba67a63fc862b05ee40a02f369a1ff86546c0e024dbc1571bea289", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "da6606aec5de5f40430f63c15ff51aa904edb61e17573f06a255ec714416167d", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2d489b177921b24667447777fb301f329c74776afd00ab46c7e3decbec17696f", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "d5df47caf165ff4f0a38fe98294939f304e6a44bbd981b29e4e568f492dd37aa", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "6284796d7299e6c7af012fb2cd81593b5649387e806a8026d52e94a17532fe31", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "22940fe01d52e95906f57298f36d8486fbb6bd9f9306db58051492654c135433", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "88e32223ecf12b1822bd0dc76c0d137eee41ccc9a095b1020e4f684ed81eabda", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "aa023fd6e81e15eff67f6e41961e1244be7883e6e01ee5bc6a56559fbc55c036", -"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "ec2cb7af1be0d5964c3b7f0b4fc2de52a125bd628f46d473b978b32afa823d97", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "624b6b046d9439cbdf0ad645bee350b67548d7d75c9c151034b06196b6ed9119", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "6ae340267193af2eaed11b544099f9de20a15eea07a79a142caa0c0b47509a42", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "51975dd30803ef2f4de938ddd26776a1eb27a984063bcabb8bd71b07584cd760", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "6ae340267193af2eaed11b544099f9de20a15eea07a79a142caa0c0b47509a42", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f6c65dd99732bc7912cd851920c818d841f10d886837b89404f23f9ae83d9605", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f6c65dd99732bc7912cd851920c818d841f10d886837b89404f23f9ae83d9605", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d45a56217ccfe6ac931698ad68a8534faea557e1d47c3700e27f1e59dde4ac53", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4d6a9c1d25c957712cf5433e5dc4862cc01e826be4eafabdafa2a687f2a3919f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3f6fea2e0b70545fca3d4828305c86b0f2079c8a1cd2e3288b79e955c2f2bbf7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "89874d121ef66cd0b751712a5c2e029cd25533e4a3f0b2dc553da52f36c2655e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e8640622a54881f2d297a46bd489cc11566ec920f7fc06ed83491b2d98e092e3", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "999bdb2b1a2488c46f1ab4436c3548f2e224ac7f0b34977b85ca750aa5c27b44", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "312f12d5cdf6d9744ab4a706c5a51c1f04b740239cf4f6437faa3d22823fe20c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9b9091d25c58b712155c7a23aac093fcfab6c0f938f8e2890965faf7a85e07a9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7a552c27d1c988550bdb521c35e57076d5add9bb0086bdd0f2314fa8473dd0c0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9b9091d25c58b712155c7a23aac093fcfab6c0f938f8e2890965faf7a85e07a9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "d23870c2909ffad7c7d59468780bac3b1ba6bd3df946a44b0371638793a26daf", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "d23870c2909ffad7c7d59468780bac3b1ba6bd3df946a44b0371638793a26daf", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "18de2948ee4b999250ab45d7cea552495b7a535076ac821ce07a188e51e819e8", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "29a02f935018938df1f6316311e02802f58a723a2e7f1a4066aaf2716c914b51", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "feb676830f8b7cea8141a43366d209cfcc1891be07d466ec5f8de8af048a2824", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "89874d121ef66cd0b751712a5c2e029cd25533e4a3f0b2dc553da52f36c2655e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6e02ccbb8dc1183240efcae9990ce396c136722bf1488822152b2a9070753ace", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "349c744d42742380339d638b9ef7b20e9ea762b493c59f39159e71d33cf6fcb0", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "ab474bb787fd54d83ca068976c13011e8b1be2a17995b782471db2a32e56a287", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "2effbff7403ee4cdc0c8f199b49ebab92f6b84903a3e7dd0a611528bf2fad995", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "d3baa3345ea13d8961bab395996fb94dadeee85de3693a41b9b1ceeff44073d1", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d45a56217ccfe6ac931698ad68a8534faea557e1d47c3700e27f1e59dde4ac53", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "cde59ea7f5f34ed6207355f313988c1dec8ae060de050c6a89606b7845bc8810", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3f6fea2e0b70545fca3d4828305c86b0f2079c8a1cd2e3288b79e955c2f2bbf7", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "6b58eeadc416d0aedf48da5a51f6a149f01df33471ff8e5c690cd3c0fe4880f8", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "1e4972a02b0450024cc2306f393fc6940673088a4903f6300025460006da5d9d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "18de2948ee4b999250ab45d7cea552495b7a535076ac821ce07a188e51e819e8", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "04b5bf9a8bacc901417e88a0d438938218cc9925bb95a573a9766acaf2015208", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "feb676830f8b7cea8141a43366d209cfcc1891be07d466ec5f8de8af048a2824", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "962e01eeed35b1ab00ad8a8b32ad2005f5353a77f2f29b45d0a2a0ac27a87aff", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "34e2796d80356525a60f8830bc677ac7b79ff57372d6b20945a7b118e189729c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "1294c9e6487c849d0520ec876226f2d91034c8fbfea04b4fa1d4d1662b756f6d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "1294c9e6487c849d0520ec876226f2d91034c8fbfea04b4fa1d4d1662b756f6d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "a6196664de6687a639589630e868377bfc7b53dd76b0897799b67e272fe9f91e", -"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "c306905f34e62c5640b6834ebf9bf95aba69a7f024f9f8aa3bfd84678798aa63", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ebdef978bdcfff5d1bc3965685880252963bcb63cfbe73a29031768a5e16ef7a", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "3bdd24bd65fc730ce5c5b4de5a05be1772660efe20fafce9942a1cc274613e42", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "e35a186db3ff8927e5bf4d24501d8914f9aca42ed6c9ec642af0cda35a2fa4f9", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "520860a5f34d61b7c9cb87d487c2ad22c9a1c84061fbf91e985bd22d97012fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "746ed0005eeb0ee10119070b533985a8a04e19ee47bf751bd13559f1d3a31217", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "9bbbe37d5257dac6bc1d77324aa4d3d37b65145a1904f277cdb2b413cbf07312", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "b08f8d54c69cdc8331b388b9fc0c472abc0549677eb2aa759024a52ec65a6215", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "0708bb186bdf615ac926fbbf0813ed24847633030dcadd62eb50fd05fec630c6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c39b67e56cd303ec9ada26cbd83300213374a4bdb0442bbc31627d2f60f25827", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "c7d2514e52a2c335be1ecf58c8f711afeaeb993b1776260487c66f9650c07e7c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "c7811acc5c4bf5ad594016370c7b1c5b1d66088ec78b0a6ac3fd22054ad23918", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "15915c4c794a6e5140483b8c68bbd8f36f3adff1305ad2786f6db5dbcd6be7f8", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "03933d5a6b93f81edf360b521901268fb173267e1daa125afb9737cef64ee3cf", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "03933d5a6b93f81edf360b521901268fb173267e1daa125afb9737cef64ee3cf", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "44e752f9ed9f60ae9f0ca13e405e39bb455b43efc24be042ccd1a5a165af0c60", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "44e752f9ed9f60ae9f0ca13e405e39bb455b43efc24be042ccd1a5a165af0c60", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", -"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", -"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "55aa2834b43cc6188c7e1200baf9bd30cd0c6ed28c8395708da810feef86a35e", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "59947cced1a42e3b009bc8275c777aa2e831b853b2a213386b0f6a95f47a80e4", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "430b1a67ef6afd7d5e70cf65b61f16d30b0848aede534f942a874050aafff4b5", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "f6218139d2bc6d16addb206ae28916d4c6b64a1ab0c500a28d18244904fede95", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d73d8efc8f293e97a0983c01a8db287f36348ba6cadd87e9b30153368c25f770", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "bc34420d2a360999c0bfa6b924c62e9c992d1c5f00f27c2d4720b30a80d7c668", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "22c4d2aaff98aa2fe3f7a69e154cce3a98e18340dab90de66d2d1fa8b7bc2c37", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8eee264d700aad7dc05381ab2373d852e7db9f68486076baa45a5ca53112ddb4", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "6717ffff08c91aa4a0efe516ae6f2536653777cee132b5eb5fa68a12b66dcc8c", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "ac39d1ea3f808eb1b2c48cea535846275525cf05017583c780edd48fd9ba0472", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "a81bf07732741a59e4b6d815c7f803cc9944ec9f5c307e473780aaa5b8e0fee9", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3238efe69c8ad351b921a769b5f5daf91b252f89c9d7c08e1cc7075ae7a67806", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "f028a400dad0eb049c42de8c5e7ba57bddd6881bb61c2c20594a54aed14ee849", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "c82e4e18f402534f17a7bc7949a432f3394ff9d4156c12b77d55c6d9bd9db744", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "4f5a1b12f03b91fbd7dad2234c0b97063025c6874d09abbf05525d39719ab9d4", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "48c2ebedd4ffab514df0e00929879bf0803b220ecb0f32363289c860395e540b", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "d65949821bde4259451e86184e45a3a18453dbbf63487a825a7f686e05f67a19", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_signidentity.py::test_sign": "6e0323deeca36857dd5d839a385bfe1c8ad6dedb1139d2e953e7fe930909190d", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "eb94231415992491b232e07a2bb487a93f501f488decd0558fb2efdaa0dc1dbe", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "f1c827791632bf4e7c139887969a61168d68c46d760f4dbdff0b48c81d267832", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "5ec4c6487dc54c9b1dd5705941ba34814e43b034222cb55d790c8784adc2026b", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "5040445e0576597b7761850eec9da94f896ab9f71e2a1e3dc0f5485084708088", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "20c578e45dd3088e91cb1ed3af434a41fec92fb3259904d1d2997cec92c14fcf", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "97af2df0fadc828f537830ac0ca4954545937a820a53c5640eb3c19e41a6bfcf", -"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "11bdfd310e9dbc8fb9ff251456c05863e6edf92e34b6174b0e53129fd4f34820", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a24c64bd3ca16b0a6072d04b2aef409e88865ff48a4ac7162a1c9d861a619f6c", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4202616abd929c3e8711d77bc24f3645d59339d9c07c1b220a47fcc162f47274", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "7c62dc1921462de657478d6233802d150671c9ac9a71e9e435b1b2ec875a69ba", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "53b99d8b629d19f737d5ad6ce7835911f8d565258980d6cbb6b769a5604366de", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bedfc358a7a465f6eb9bc6366623b85eeeec83ccda92af2495041b25d4b78115", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "696ace0f4b428b30472057e2ad641519a3750781777f4820c970fe502cd9f77d", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7f4161c22319a1a29f96da0f44e4e4686fbecab5c905894ddd940fd4874a0ce1", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e218f9ce906f50e3addbc8bdb01bfbbefdb42b0e023c57031a2b5902d8b5fb61", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "91f03f4ec9c34a0278ca8aade6287a10ca8460ef9c41240d89ef39b5fad29b17", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4befb3acfff8dca6c4a95de63a7ddab93065de9c4823ba1ff640aa8799088431", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f9f199713e65ddd3c0de87c38c6200feeb437bb621e7b9cd2dffb426fe08a919", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8ad558621d0da6618b8fef7b84622fbe5002d9ac293592eb4274d65f12a40828", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f689f408d545a39929e410a9a80c2fefaed8d3016b4981ba6b11e512b4e1b52d", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "237873af1bfb142865d15cb27af32a89615e9a0751702f391adc359fe8937c13", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "aba78af2a5019aa286af4dc68acd2249dfdc23a98d0fc150a8abe1562afa0ab4", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "b386aed1de97fd3af4101e030b6d821caa6d2ca82d585461e526ec6635d8e865", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2a2785d202cf020f0aa5e62840146377d16ebe336811cd2f7b0af64456536b2e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "696ace0f4b428b30472057e2ad641519a3750781777f4820c970fe502cd9f77d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "97d02aaf682c6c7de7032b4636dfe88b3811be15e19b00c282ad0e795b996afb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "84adc6852f32637d784d3b6659a5478bfcaf46c384128f478b0b67d02a94fc23", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7dca8aee178b0f410cf37e9fa09ffeeb93b01ffc238d286d564cbc98c9a2517e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "11a3ac4ed9f8b9ecf389f673e0007dec579099b5b1a297dedbc0c9a5bd766fca", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "009e13b39f0b8a858b3ee9f597d626b7e5773713a7431d5c97a6d525ca6744c5", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "d86ed6bc3c866c8259173961ef12a981138d865de4ce9b9ac70854b158ba9981", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9482b15d527ee4c850c3edc14eadf42284e5db401f3ee42855624383761c425e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e1fbbf789f5daca5f4bf5f8c44c25b32cfa324c40e19746177808f075279bd61", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ed90c16baf66e6665f1dda17265c72c3cbdd772bb7571bfc90a60a578a8d85f4", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3b565b07969ae6804beb55ad8179b2d84b99831a82ffd238b0be53b40615c25e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8f11d9988ab51214ab59e3ecdea10bf810259b69f3e5c6774d6af3a8266af3e8", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7edd741620c6d5c96e7229e11d215ff1114630b64b814c022467c6c0a72fe740", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "adda197012484eeba7d8a6379ced43ecbae120f985f2d4f347b4ad4afb05d6ef", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "28d4733dbe9d87fd557437119f9cd4bd6ddf965e745cfc0437bf635f2580adb2", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5135fbb586c3585c6c34e4ca69cdf702a664aa37842177fb2a4c740c76a36e37", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "334168e5731e1d7ba6986e4cad01f9548c50e305f74871939638dd5188c2cdb3", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ff8a81d691fa353ef89718f7448ab057938defcfe736c88613e3a4cc1283d75e", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "3212acdc11fce42e414c23742163be1637b7f0a016d6d58922a439f0e512c03f", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e3eb4429c50959404a72ffc87db52b944c0b95f0784ae2fa5ebbb155a636752a", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9594468af5fc3b3345774bd205361a51b7647452b5f2bf68e40250518aa0121a", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "603b1c9634e721d7d5da1e9a59078900ebac9d4ba7fb7d10be836fb563a50368", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "191f367d9f35a8cdb4c8ca69de36049eb5e989f3258f42c94f2525e7445eeb66", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fc441a7efedfb9dee0afddd6b5df987b69208ca4f8543313694a095d0a193685", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "388a92c622ea26c7f5af76b9cab819040b3f5c3032f3abfa8b452341bb6caaad", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "576346cdbd53a12123ea2b7b98ca666696584cf56df996668ff6a013f894ed05", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1b2267ca6d30b4b633cd3b883e1522e5d47563366e5b46a1c75a35e874694883", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0401e19b8db97cf29e2bcaf5dea90c124aa4cded5a61c1a19b5a664bae8e0d02", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ca418d8d95e99c53451c3c86ca4cc054aad718b951dfd526a367799376c8f584", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ad8d43b91d2323d5bbd12a40fffbdc7e4d83519cff6fd86cea4682e05b0ff4a7", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "d9956b7cdda88272008fb94fb2a1fcb564e8537fc592dc50420aeb02be0c6ee6", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "494c5e33e0826d6d4eaa306cf7b409d0c20dc90f8b22a3a2ae6715fb18581c8b", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "5a5d89e5341710b0826c836413d6ae5f4f2ad18df5d962729072c8e919f22cd3", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "18fabad57c607ff2e1b94a680cd352cc4fe59c941824ff22438aaaa7c55a34a8", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "6d3c37f6b61be79f3b0c79102d6279439e773455366fb8f864f019712c500928", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bc97c35720be8a5daf9295b2034c3419e3cb23025f1e48024c10d46ac51a4752", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "ab011871ee4d822035f6a06c5119f570b77183967c14651dc957ded18b777af4", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "88635c3e8548603f28d7435ecd97126cd1cb590b6075d5473de435babc68de88", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "ed9c37e3aa33dd17923abfeaa8c4047fabd05af7f0e241e2450f0fb52fc32d20", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "e5daa34b6757c1debfd93826e49fdd44a9686e87e00a854f2380773a17fbb8b9", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "7a0fed37d0681bd4e29a96fbed9b3f803cfff246c45131a1b822f394046c8f62", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "21ecdab097e423bf572740e1d936a91add7421e5e665977a9f955338cb3fce30", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "584681459fb290e5efb740b4e51b256c31ec25e90e07ddfa7f259b415d7e8eda", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e3164dfa8681017f2e8bc7a189db4ed737a7229c3219d7c34726615fc82419fd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "df6be7ba24364397973345c98859d19317a81defb0d0296c4b18072944d72ece", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "62801ea5bd2b156ee2525bc98e2344a370e0b61d12ac9e09d0441ae9ae003d8c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "7fe07aa8313454d059498efd93bd5a5abf61cc773dd123ae1f9b5f18c3401633", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d3b411ef7812bdc772c52c9deec850d45d9661f8a2dd183a7f1ee529e24b9bb6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "f1c4b0c88df5e17c1681d68d32af42553ca135804efc9efa767c3bab26f306e0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a396b0cb88e242855ae92ed8e51858d9a1ac81e3ee6149398e8567bb86274e4e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "954411380c7609a91e0662d31ff9669754da6ffef839746d640a6a0dc6341942", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ff28c7fb0a48b13ff4a05b654d4db04d151aecedcccfb9cb832e1a26ad84f99e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e61735df0804a4ff0ec36ed55512966d299e76360a38ce6c85ac7db9ac9c4ad0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "36bc286316bc3ce0da2a032c61a7490ab25ac890fe4a72fbef46bd68e700ba73", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f422f7b653c558e1f0c29d28544af6580cbfa5b781c9fbff664f8cb3c2bf3450", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "21d37ca780902294c482d59b9bfe25bc61360f510c64a44d0580345f7f014619", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6792a50d11c19b47ce4bc41a0bf4ed04f1675dc0a628fe0e0096922e93ecf935", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "6bca6cd502f26827bb64346a1e3808ee154b2fac921c763f51fc0e06d85ecf14", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "8ecaa5444d8c85e7e819be08db2d460a4068f4ac996b3e70cd20e592043e4a3a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "960d881144aaf6e006f0a49cbbea5c71c701bb8d06b6f025fad8f9faa2715505", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "21591f532d5cf2609aca3d2fa53b86f04ea55758df68d9663c5e8f2d048f5f82", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "281bf1e082e7148dafc07425aec95a991f51e896ae5a1286d38e8e1ec0c51401", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "444f10176539fe1667b69ef2203eaf55ea373dc05cd0a2cc5a5476bfa7aa0a41", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d732a6bccf02c5e3f141346f8024eeff0087ecafaa9edfc86f060518cfdbafa5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "491f7675532d5f62b3009932e42c0b131ade34d475829e573700b394fa0286da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "65aa0fdd293ae3d4afe1558547c267472935537bad9ad1d0187f27bf04bf9191", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "3c546daefdf521ea98e4209482074f895eb66288b11bc4bd5fcf0fccca43b712", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "fc59b10e924d732485693dfd56b59ef2a78fd13ae202a42f75c70b47f50cfb74", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a0573a04f96dee00633d189d2a18cfef8caf06719f231311d59f6a90e1d84172", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "0330ee7b73eab93fa705184ba7a9ce65514556222ff65c3d40c3d698282cb232", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5afbe96c3d008be0d14152e86d9fd382a1f809c14961e4e4850f938a19bfeffd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "28be11d4366258c2e7196c2cf9502d40d457fd478a7252374c9df24f03e67ff2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "48920f5c770e0f502c472f666e52b930c5b332aafbda26875801ecc56d1b303d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "7acf010948324f7da7b4156756127291eb242b3a977289add2700329f898ca1e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "944ba76db424e4a303b41043f14e26ec3a408f46384dd226a9aeb29d3648c09c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8512dbcdad6c4099972de87a9703b887a8e0a1d699d11f5147db0ac4c8f94f2e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "eb1f70f22b5998b39f545b4b224c44eb49f9646e4e5f95d04acfa88bfb120dcb", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "afe6e08e32a2ca8278303997857a2df7c4264962d073bd91140d529e7a632313", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "024458a69a5336caec334e27d9b54fade2cec32c85f6d9ecdf13e0a02cf8a907", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "c4d9397ee331d8b08eff1f16fb99eb3e1c135bd1f57c21a3e8e8d6191664bc3f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4770eb66d8b107f5addb81e3d2305d0e64179762035a64d88d23970ca3bc5037", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "cd4c24d302d9d0f903ae1672040d3bbe5848fb19cf2f1223bf81bfbf694430ae", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "76e8eac1fc01053b2af9a03cbf9991e3622ec92808a71fdc9a5697bbc03d08da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "c18f700d5708d740c6a34b0936370853fd004832ae6a1bc1752ca8467e7242ab", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a181116fc0c2666dcea495441f57d2b33401b66d103dd24825e98a5388ec3b24", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "45ebf3563965765e816bf483f0953ad8547a8e99db18e68dcf0435c96a28daea", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "a06bd0ee40f357e30047b50dd6c33c293eba8dd07186f3881b822d4ff5585ba6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0dfd8da84154473b35bfac62e63adcb83b7116e1fca41e187b8939d3fec8527e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "a665822ff73ba71d31ef3bf1e32494b26db02ae154ba597c1e412303ead76509", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8fd78d3b89a509874f5219d7410a226b40591bcf17ed67434687a73831280d2c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "33d41e851354b319b35d85c73107a688506ef197a4b706a22b0d8976cb1f0055", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "dbfb1226258a4e7b6859fb73d4134a90fc67f083bd6e91abb017e09751d2463e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "e43e3a43150f24e863952c3c7c3781f16c75da73fe704621e76fdc48f3e50382", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ee2c3831c345d4cadc3bf32bdbe3b16abaa59d373b5a21642f9996f07bdbba67", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6b3639c16f597c7569772a4d9080ab024937e543a7c9298dcd50d167df7bc228", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "2040467f9271bc18bb97a4715e9a72ea7c4f17409dd5be58a7bd3dffc284782a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "c4c5ebad9ced7475634606416f8558b9da22daa88cc59b2c8e215c41125194d8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dde60e30fe682e4adef7071e2d313035e6e40180518cc586a828f73f2dfa5634", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "4066aa8ef7d1192607436e32f533724fa4ff90c108ebaef08381f107c05de5f9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9beebc4e60313ca9012ff07e53ec2aa7c4d5335270a8f5bb6b5117406930ac8b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "65aa0fdd293ae3d4afe1558547c267472935537bad9ad1d0187f27bf04bf9191", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b570e793166997dc38a2ffbe08f684c48aeb7a6261443480a4dc7005f90b10d1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a2a4535b13b943705020e78099c4e6d529bc76115a626f9f76d4a0c33c6726ff", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "19762b6ed5f35f0b6a42425acca636569683b37795c1ac3f69ae702369b96e49", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2f50b01c59e9892d641d0e5f1b7665a135dc1f08772c2bf1ef168dc4820bba61", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "5088890fddf0b1c769dd8862baef59184c9d4cf54b03eeebeadbf6fedaaa0e8c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "83de207f8666c1c6fb984e8f0a91ece8498c00b64b59efdc44b456fb7e617f44", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "859c68d089ee79a6c76838f1cc25044abfd5278f5f6c3a5dbcb92cb492218089", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "001e4e267293ab5ddf879070c8fbde357ec2b758bec8da8e4cdcb10c7b9f07f5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "1723fcf642d9aeb794bf14236f11e551f2c6115ff8a70036b74817faf4e19b28", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "40abafdcc4cdb13b4f7e03b438a89260e72eb6a3f560be8429d85879bacc227d", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c11c968ed86a7e005f237f2a30526005acf6979e31e7b71d9578ba83f7050df1", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "d653f52451e1113499bb846dcd7ea650b45a1ef11b3d367ac2e8496ed6258ca7", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "d72984b34953b1a88bf3a48f89ff489724c06a934c1722a1e25ffc193c5a6761", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "21faf6ce6a15ed0154e6f19340362e1ded56d1e95f51c9313ba295cc79ee36ed", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "17cf6da293efcae2da07a36af7d6313d3765cc9bb03201df24b2bc2f6ff8989f", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "c63eba9b0f924b01acd907b7fb46bc617934b48b9118b3778bdfdb1304e4f9fb", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "b068a9fdc0d679cdcbb22ee75971c35bfd8d18ec5ebcb3ae1eb5b4bfc09c79bf", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "3e50084353b087881202e0e64f12d3ecef494ae846cb8696f3219c0827ab0f2a", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4ea48e8205c5bb81f79673672cc6fcb78bd5c5cdd3f38d87506e94647c916356", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a6032ab83e7149f2d03bcb4eb60bdcba198205cec27d82b1395cff2ec8749dc2", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "6e393e404644aa2378052a2bf9f6f10d5516627c1d087f89bd1156dc5a30dddd", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "fba977323f8e4428c9b5e235713300d0ac9ab7a6eccd9a0a54272ee5be2d95be", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f231105bf005662e05f7297a0f7fbb94e2bae7bca331b09c510ff7c358bdaf6d", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "b7842379845f290945b51dfaa687e08966757a47fff7877eb80272302460f57d", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "91593bfa3a8454ab3d272837acf35801ae539b6bf7e5ad6a9ce6900859c51a24", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "eecd87a3ba8d3c1dbb5420888f43d3f474f7b48eb572cd17d0d2ac35eb2f066b", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "71973a384a5179558bdfac990ed4cb6f3eec0b8bef210170c6089e20c02cb9b3", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6259fb2bc6de42591eee7d99972ba2e5e433aa5953300f489c22dcb5c506c721", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "656ebcb02da9ad3fc496cdc71c6341fd9365a1ff5f7716c01b950d23409c18c8", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "476a5103dec47d1cd92b07ad258f34228fbd4064cfcfe2f402b89ff9d1f1dc45", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "0d6fe654d7577986d47d8e1b57c3929766b9bb00909984071a9620d06b6f908e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6f8fc9a6f0aa979041fe2363e017838b7cfc52c1c845970edf862ab294171c8d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "fbd5eb92d8dd3bb5cbc58bd288c3f2eeba3d229840d88745e43d3fae1c6c555e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "01022a54c91d445d662640d286fe6a5ce76e3d076f6b78e01e2dcb1dfac25c46", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b444be6c4c7211067fb59c4612cb51e9b5e7c23f18fd5691afefe821fea43268", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b74744e766cdd32e409c0b190dde953a9c4a645c94b3e3d61f2c71ee8ad53bb4", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "b2fa6934bb9ccc54888c001abe940f4859ad6038a30cd4562b07281d33c62f24", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d93f5f414eb72c2afd940663d34aa94bf36637f8f959a9d4746d65c28bcf27db", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "4dac58e94608d59ea1f16bb534a78bb25a6c23dbb92daf1927ce22a12187a892", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "3cb0dd5aae387bb78b6857f8d42eb425cc53481924d64262d5d7efbdeacc0fba", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "edbd6a5dd48e94dc2af123662a879b2928f0cf54bb37e7bc87bf09dc8f5e8e96", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f0801006efc36180623cfacc1ca27be53e600bc4ca4018610722a2315b144c42", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "1f80f9d1c64afba405d8af3d67ad0fa7fbbe466a7cad14dfe33eefc29ac56228", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "543ba326bf07677a84e05f7f3277c3f605eea7410e6b18c8560fa3b211ff985b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d264c190ce017356a04fe1ad9c3c80ac86bbb5a20a71defd7f251492590e7617", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "62a29c715c550d8d650c5d2ef89f0c298d8f229f21891daa609665f80690164a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "2f29b86143c11e2bcbfdb98efd76a16a3b5fb75ba08e720ed4c578f0d5ac5e5b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "687159b9c1b3f063ef0b098fd976d3d265e951dc3c02514c707f821a27c7dfce", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "bfd5aab0e63e9fe5654f3d7908ba163e80366a88cb9984c52eb901e2b13cba08", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "2a26460ad58aede5a4b2bf8ef9dbfa07c9e85735b2a6d0da716c7ad9841b4787", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "3927770d06832f91cf0e51ec7b59eba939ddfc6ee4a265fe03e4f2ff5d5d2503", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "dc2b836a5f06184494867d792aac6dcefccd7207394b7ad9def421e3ee1e4e6b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "b3e87b5b5e4d0a8572b0a6b77f6ccd916ba03665c1304128ec2fb03be1abfcaf", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4de2eb2c8266dff4dfadb06ad2934cbc5612a243324a60c249ef727cf0b938ab", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "37193478dc53884057cca22805a6cae606cdda13142a15dcf50f59214171d26d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "b06eaac7369935dbc16272456e89d332fefdd9f35845538323915719fc3a2d1e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "56d716ecbf5e78b1b95818432d1669fd5334ec81b78094024a6592d278a4adfa", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "6eef0d1e2bbbb12716fa6f6863e2edaf3954540e24bc9dd8ed149645630349d1", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "62a29c715c550d8d650c5d2ef89f0c298d8f229f21891daa609665f80690164a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8bd4bcc4febf5ecaa85d63f04b70cf96f569a957254892e3cd95e6b12aeca2b8", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e7cc38e109bd253741fe8ee3d20891b7c3e36c7e780c8bebec031fd318a6a9f1", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "df1d1da2c6878fba46552d963b071b2f3e69163cec3f82c8cf026946a7aca6b8", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "cc7a9a761e1e2d205f161bb550885d98799e9828d88bf29a6ffc3f7bd408bd9f", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "064688c2e25124e04b4006051a1b83ef2c08c6fac7b82e29b5c1a8ae34ee5eaa", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ab8a8fcacaefdf4e9d63eadc5612f654e86e103f1140847399fa6c80e96ee755", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7ff80d5aefc20f6a074ca038aab71cda35a5874f207123e00797d5bf9d2c8b73", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0cb51fcc2bef661bf1f0c2bd1a9ed38dfe4b01e4a818b14cd31fa071fe92815f", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "2e0f39a2f503eeaa3c622d61e1d73d3af1fbfc6875556230bb8503cb61618508", -"T3T1_de_test_autolock.py::test_autolock_default_value": "1716293c0e4aabecc4602a4a8cc6635dc9914ff28d54136030e696331daaf926", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "56159c15b85346032c52e94e939bd8ad47566f3ea4cbccb55dd6e95ba0d86e2b", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "56159c15b85346032c52e94e939bd8ad47566f3ea4cbccb55dd6e95ba0d86e2b", -"T3T1_de_test_basic.py::test_capabilities": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_basic.py::test_device_id_different": "f4ae036fdaa2a2a208543340c19c1a18b7c134256140e93ab4655e11f2438191", -"T3T1_de_test_basic.py::test_device_id_same": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_basic.py::test_features": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_basic.py::test_ping": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_busy_state.py::test_busy_expiry": "d00c19e4be337da53afb665aa2c38784a51a91989ba65bb77aaadc8605994395", -"T3T1_de_test_busy_state.py::test_busy_state": "f305a101d05f33d6f0fa3d4e002fcc37a569bb3e89690dc74ad058899085aedf", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T3T1_de_test_cancel.py::test_cancel_on_paginated": "1aaaa6973bbea8cdf9378cd8b9abe61c3339039b5f5481735e0c5c4f3fa92e91", -"T3T1_de_test_debuglink.py::test_softlock_instability": "f533b6840f7f5b94c5baf11d12ae6b2e04a68efb292a67f8a7307f23366758d6", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "5f74c8e2421c3e3af6f8c3fed431fe795b8a8db7b83a95a5d48ef779df916363", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_language.py::test_error_invalid_data_hash": "e04e7f635d4867c08710860857bd99a1b50690bca0a62eb60a253b1fbf805b2f", -"T3T1_de_test_language.py::test_error_invalid_data_length": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_error_invalid_header_magic": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_error_invalid_signature": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_error_too_long": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_error_version_mismatch": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_full_language_change[cs]": "e80f73eaf6f294b9a1c148cb23ad1a398051e36a26d66f8809774f0bb0a7ab45", -"T3T1_de_test_language.py::test_full_language_change[de]": "4601ed00f895ff75ff63dfdd96ca40f976c72cefc8090f6cb26feb68a87eb7a6", -"T3T1_de_test_language.py::test_full_language_change[en]": "1b4ab2771906bc023fe197967faab90a0502011d5a2de1158d12f19bbfe06866", -"T3T1_de_test_language.py::test_full_language_change[es]": "e8296a4d49fa05c32560d65582a505d68563f4e30725411d6b4da4c6a0ec9107", -"T3T1_de_test_language.py::test_full_language_change[fr]": "ecc398791047c183da85c433512afb0b8ccc84011f595d17ba93054483fc1785", -"T3T1_de_test_language.py::test_header_trailing_data": "335aa3055c6b2ac93faea9d0b04c69d9e64dde3b1140d336fa0b017c7587dcd7", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "6ea67a16636b85a897aae3692836332dd42f2f99729ee45a797f0cc501cfd1d8", -"T3T1_de_test_language.py::test_reject_update": "f0d458afc7a5163b57d18ed237e8e8b86472f550eca018e0cf653ed58b5d434d", -"T3T1_de_test_language.py::test_silent_first_install[False-False]": "8017703f780ff228eefcbe4b33b4c69b4ddd1c3cb620a94721c21d78f24eccf4", -"T3T1_de_test_language.py::test_silent_first_install[None-False]": "8017703f780ff228eefcbe4b33b4c69b4ddd1c3cb620a94721c21d78f24eccf4", -"T3T1_de_test_language.py::test_silent_first_install[True-True]": "620c9abea014f60f7dd8bca66f2badc8ee57e6f2154058cc81894a1b8679eaee", -"T3T1_de_test_language.py::test_switch_from_english[None]": "e52cf2029134bd82212443fd562170b371bc742197fb73a15d6e717cf95bd6a7", -"T3T1_de_test_language.py::test_switch_from_english[True]": "e52cf2029134bd82212443fd562170b371bc742197fb73a15d6e717cf95bd6a7", -"T3T1_de_test_language.py::test_switch_from_english_not_silent": "f5b4ffffdfede0554f79c02af5ea2091cb6d5275cf3554c118703cd14e844bed", -"T3T1_de_test_language.py::test_switch_language": "cdba76ec5e11898052afde505ec1d89eeb6491f3eea9a5c78d9dd0470e5edcb0", -"T3T1_de_test_language.py::test_translations_renders_on_screen": "01845138103ae1b0490d59edc22167cc784f9222939cf4960a1b60724e5cd094", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9edeb66428984c049d7d8a805868a1b50ee622a272b37fb8212afe76b550bf84", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "6c6740d59a80bc459ef190febc595e00e71e22c8f0294c719f41bce64d8e0d3c", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "b74def8bbec0adba48bec48b2711ae903b9b61e3a659a42428a99119a291cf24", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d69b76c940c1e351e02862df5c94c6d8fe9d1a332944c1537c9e433f2cbea291", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "6ea6e28bc8e9751a6522680e7f830c78a4b137483b25080a8561f83e5d94e13f", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "d4482f938fd2e8ea581013990a65efd712249898d7cc20f7027d763b10b03026", -"T3T1_de_test_msg_applysettings.py::test_label_too_long": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_msg_applysettings.py::test_safety_checks": "0105dacdfd0f8e69fca82643c84a9891b3953046571f041ce2b7e8596824aefc", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "3804c8b2026a4da82b371af1ecb95a5a5319d11720ae6eda3b6a3b2509b35038", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0b6c9cbcab39c3c0e6cce64faef9244ed79d461fe0959cae6968b285811b4a02", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4effabb12bee9ea00fa3bf80ef2a126ecdf1d1e480b8338368bcb3125397d02e", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "77ac0b61fb4140409c32c2e9435c5545b93635ce65c24f7dd1c4d8aada93493b", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f137fac2ee4b198d19b732efb96c657513a74f051f02b642e8b83826972a05bf", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "38b5afe1623634c7dd7771b81c4b799877d434679345df720e8945902ad433e1", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "be93b4ebaaebb51f2994454c4871aaeb86fac7746d95ea303715991b6f507398", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "43c90a69945802352fccd4949de7a6f076bac2e57dc39206666057494e8ceea5", -"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", -"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", -"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "fbf0611bafe2c6f5d320c554f55dc2011816c72b6d8c2d3a44cbd6fd9b99f814", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "f21c1007eaea59c50a6cb7c63c6f4b4db6c6f211b78b4c5bda8f336ba1bcfb67", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a10ab0a73f43177fe38832332963d3966f52f0e42059df190aa6ca8e6453faff", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e64a6ddd81183c32612970a8f9526e013a7d53136cf61732714991bda7be054a", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "6bd169a4c415d9cc065dff40e3177e90a10a74e7dbc4e7d72a600aad736708c2", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "1ade4c776ac6f77b5226d92249521185465184f6329825353e34b03ecdf178a4", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "2639b62eb8538e260aef167bad24e84209958952517d093f2e3d5e602e166d46", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "9e389b85510bdfce0b71dc8c0beda8ead9107360b430d241de1b76835d147618", -"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "2b638756fc24b817adc4ce951cafed946c6fd0e1ef253498c01980b83cdf0b08", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "94cbd14fe2ba2a054d6f7c846c1393b0d4c8b668cbfe9cbe8605a83e1a0d3929", -"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "984282dc5b6d3577eceaee9620c7c7525986ae9595371fba8649742caf8be2cf", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "0f323936e4accb75334b6ad75aff54822246d1e6628749d132eecd9dd0051058", -"T3T1_de_test_msg_ping.py::test_ping": "06b0b04c345ac39dbc1c07e3aab30d378443248e27761469e2d4c28d0fa359d9", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "649b4376aa411f30acfbbac55cb503ae1307210eae26f21ac495bd7f33b10871", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "390ae32984df693f17a085c6aa8c458f45b67bcf5e8c5da3b78a6aaf32055f33", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "bf6e5a14b6c266354b13b235c8bc3433d3246e280e3e8c760e3ffbde66e514ca", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "d5c0032077d912600c768f1cada3240ae0c7bee91788b6579512851c4ecb1bd7", -"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "f4ae036fdaa2a2a208543340c19c1a18b7c134256140e93ab4655e11f2438191", -"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", -"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T3T1_de_test_pin.py::test_correct_pin": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "6ae775c1cf895593e2c411896b43d1e810d13abb185ad44e2493599d516fe9b0", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "76def187ce4e340ba31b51d1dd2bae99ae79ec2fd2e195964cf7e6515a4aeaa3", -"T3T1_de_test_pin.py::test_no_protection": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_protection_levels.py::test_apply_settings": "c7672bc06971145b555c8b3b8e5a1010a8d889c1b51b7f61e7c469f796dfc932", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "b59dca532744e9184651a196211b61993e0c9b186456e25a867a3c4f28d3db9c", -"T3T1_de_test_protection_levels.py::test_get_address": "60f96da78c183ba6dc33998156d6779077c0cca4b251cc8982a8b0588ba2f18a", -"T3T1_de_test_protection_levels.py::test_get_entropy": "f2898517f7b02804ca787fd7e9caa74e84f04960b9c4da1b2fcdf80083cd6687", -"T3T1_de_test_protection_levels.py::test_get_public_key": "60f96da78c183ba6dc33998156d6779077c0cca4b251cc8982a8b0588ba2f18a", -"T3T1_de_test_protection_levels.py::test_initialize": "e9c5826f6944c1e8d58262dd4d7b1810319627c69f44218ce804092a0c90e5b3", -"T3T1_de_test_protection_levels.py::test_passphrase_cached": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "90525514655e73caabcb61438091108691e1a65c3b6e78e1b214f5592abb9cb5", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f92a4424d068900e925e4e3303bea28b18b5f8046a1656c7b121bb42bafc546d", -"T3T1_de_test_protection_levels.py::test_ping": "06b0b04c345ac39dbc1c07e3aab30d378443248e27761469e2d4c28d0fa359d9", -"T3T1_de_test_protection_levels.py::test_sign_message": "1e20eb16978bdc9f7aee7d8d3870690c612c91059a896090f110500f984b57db", -"T3T1_de_test_protection_levels.py::test_signtx": "afede10067fb7275da7dc6d705a7ef3a2a958cb865befbf93da8224f5d8e39cd", -"T3T1_de_test_protection_levels.py::test_unlocked": "a2c5dee044f0b259c610d37f053c50174ea0bfd233600f3a161ff98c32565906", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "f0e578ec05a877ee73468b41775377f1577d94dbdbd7167e0a04a54454d1a420", -"T3T1_de_test_protection_levels.py::test_wipe_device": "1e945b7d7af2a531bb58f5b611755170666d912cd4396a9fe4c5ecbb7f206d9c", -"T3T1_de_test_sdcard.py::test_sd_format": "e18c01ca89407d5a8561770d95514c72b7286fd674f36045c64064fa05e05f03", -"T3T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "b078d6e965fed9b6ee89ad09aac302af1237d5bc130f109fdc73538042ff5750", -"T3T1_de_test_session.py::test_cannot_resume_ended_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_clear_session": "7f4f05e668a545d9276aa2f9b8e7e28f029a46396061acbee297b359a6a2a278", -"T3T1_de_test_session.py::test_derive_cardano_empty_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_derive_cardano_running_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_end_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_end_session_only_current": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_session_recycling": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "ea7c6c9417da7523bf8367b0ed5ed69df287a72a1deca438b3fdf501676fd2e1", -"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "453f5464c067a5359dc9605153809169dc41e034409f521a454f236bcfc04b27", -"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "652c86a57e3e794d2aebb9d8b12d3fa0c7f287153762790d8651c45f25b703f3", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "0cbdb61ec21cb9f0e0dbe72f749f54928c5d33da6274e4f304e0ace98deabedc", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "553a136f7c406de3d480b6347a07d911da869bfb96bd18fd823c13aed9e01915", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "476ac7c4eb853323d756c8bf7342fad58c2578f09aa3f6e022325373379de5e6", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "ed267e6348a6ee9aa56d7b69ee1f55ef6f8b8e7967b74b00e463f4732f4cb37d", -"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "cae331025c27a68575106bfa979f2b82e77acc6a3f6c2cb5eb476b07788f75d2", -"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "5465d7164e3a19b9acea5b1d584e8d94fe40d7db49dce538bb8138934c622bc5", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fed445b9e14a2252e5bc79eb81997a75558d9f427bf10420a034bd2a5408200c", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "96dc64c94b73f0a69f7def6bf619b268d9c52f3021da90cb1ea01be5bb4d773d", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "c0a024f0c1539d54e70eb3ffc069bb807938a0d0d67afc3c8b0831d90ef9e25e", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b2d433b6f27546cf0d3654c966da05570630743edd059edd33590bcf74a3df4b", -"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3ed29e74cb3e06c85b1278559435a44865bf0f5c68e1dfe3b294648b7d861905", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "147692961a945a4e028dbaa9721bb492cec200c0a45bf52c69f47efad5ac046d", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "2b11fdce6c468c2d6b627f687955c210a31ed21668e2e25bf293dffac1e73e6e", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "344fdd1dc16feb0a2b60b161b73feba91ff1755dd4096998f1bb1bc4302c1cb7", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "05121d236900445631cad6610f24d11c5cb5bdacc218d14db2ce67dd45688043", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "47cf430ee3d5470aa9e7b4d04a0c79b58a8356e662689f427e704e0542ce7797", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "85ba098241fae0873463933c7b324109811504c266ddc78c97a9cf03a70e680e", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "682e748161c1f841828abc35b4a25f78e635725281e2ed87c192ddf352503714", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e6cdfe33b545ee13919507b6297716777030a3aabf1e34f68850c7a59683e301", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "de08bc5b4df8cbdd291817e2be75d26d5ce4e6d85f498eea048b3d8ccc192f4f", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "4e2d9fe07bc28da86d221d2c8560071a1387c1375fa354db1dd771bdd2a5e3b0", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "405d84e34ef67b0762ddb1795c6f1b2eed8919bd95b57cbb3b3079b1c3486b03", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "69320ea4e2c3bd6d6ee2959a97ccde01a0f20b2972a6b4ced0a70855d5769c0e", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "a01963042fbab67cb7bf0d0a4683d0cd7a5b6f0b1a8a31ccad316e128af2718c", -"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "6f364f906fd898692efd14e9ebb840cb6748b8127bb47d46c5bfcacd4ca62059", -"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "d68cbf3ccd599858c4541264ef3eed3cbed19fa5dea43605b235054dcf28ecf1", -"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "47d5ec5a4cf12907681a5146b1390c88ec41c6f37eaa76fc663018ee5357df66", -"T3T1_de_zcash-test_sign_tx.py::test_one_two": "8858897ed00ecc96cc9faca290a9e4c63d6a6055627f689a9fb10aa19569f91e", -"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "23e004c951f6bd8768f56abfcaff501c36fcb496549b7856cabe9e28a0246d68", -"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "59d1dd264d3484228ca1a0b6d60de89348d18c880bdea41c3d6c4c0fe3bb3f8d", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "30a94463a5e29b80e5b14c63732e5aed747b3c0e293b26792872d86a0909efcb", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "1add1350d61025419342badf48ebd3bb195f6cafbb468cf73903096fbe02dd4e", -"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "193538e211cdc2ee22ed4321d01a2007d22fe8c79e6cfeb92779aa330bf227cc", -"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "fa3d667e1439c9c2a475fff22d94e330c14697ff8dda4bcdded775492cb40a90", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "ceac9a64c9aff8a4226e40f068ce412556eb582d909a9f8d401e83ca10433d77", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "9836e9ae0814d1d42cf3957fc6ac6b17dc2503e5c0bb3a27fd1209ebf57c03d1", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7c2943551ba1616bf057ecdeced1f603a90d60768dbd072573a60dbfdf4933b9", -"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "3d0517133c0cef58b6d8627527f3960f10706094d0d7113bc622453dd5cc9d8c", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1779de46a1d6549caf369e488c4045f92484327696e212ff679d6ae8b51a01b2", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "f4de0499dac628067619c6081d4ebdba0ad196af7bf9662c5387386eba9e9729", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "38a7eac0cf0be45770fb28da9c2f74bac6404e85f2a3801acdd4b0107d99f2ff", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "d39b3290ddfecd5a3ceaf249543eaccb2b71c21eb2dbeabef94fe866ad7ce6a8", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "3bd08b0f7ef6352c5a22bba299d4d65ba6725962426abf6bef48203ab91b9c6b", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "3bd08b0f7ef6352c5a22bba299d4d65ba6725962426abf6bef48203ab91b9c6b", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "312fca890a6e93da6c3705e3b3c97ba38dd336374634dbed9134362420273380", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a0757616e39b5883ccfba01af3b386d1fc2d4a00517b2c3d79519ce0f60bc5cd", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "b8ca0b72adfb0cfa1ff653c83a0995517b71f8bfc217753e16aab49dd82a3a65", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", -"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "0ebad19508c4746198a6728449e4ac0d1cfdf169db907e4ff1acf1ef7f37a400", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "4e9225e760a416bdef0b2eb1ac07489a7fc216b6a682f4edfd0a99dc7a0364c3", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3350934f73adc12375536ecc125f42631d0f17f37d5a72c3a6a1a062e9e9e565", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1b7584ac7451c9449962322655770d6d46eb8bd073e13b3aa605b4da5bae2327", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c7102bac98a0a09a46bbbeac4c980b4219bb63ac8ad6b1d80797bf9cd991cfd", -"T3T1_en_bitcoin-test_bgold.py::test_attack_change_input": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", -"T3T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", -"T3T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "8cbb24c33d0801c03ae2b009cca0b6ade37c5ff437eaa64d8ba640a3da8a3002", -"T3T1_en_bitcoin-test_bgold.py::test_send_btg_external_presigned": "22a3e3baf7afcecc5b457ec9f9063e4d729879f79151bc43e1f0738595207b35", -"T3T1_en_bitcoin-test_bgold.py::test_send_btg_multisig_change": "f3e442202d95479ca14b053ab801b8002f752be016aba1a6057201d74503b9a3", -"T3T1_en_bitcoin-test_bgold.py::test_send_mixed_inputs": "8e93f1dc099203ca34177de6bf7370faa7e846ecedc630b8a16194fe7819d4c8", -"T3T1_en_bitcoin-test_bgold.py::test_send_multisig_1": "8066b6a823c1d5e646934754e74ac85652285ad9fdb23a74bd34c9597f6e5618", -"T3T1_en_bitcoin-test_bgold.py::test_send_p2sh": "f4b11a171cf48210e50e7e45acf9020a92cec3ac854921de0c133f60e3d0a5a0", -"T3T1_en_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9360c9e41a40282f5ecf6d2ee91fad8e2c10ee3be6634a7eead946eed23f94c7", -"T3T1_en_bitcoin-test_dash.py::test_send_dash": "557a45f80747ccb6622001a7540273589a9cfcbbea18ba4a23fb92e94346ccf3", -"T3T1_en_bitcoin-test_dash.py::test_send_dash_dip2_input": "a0b3ed97530eb7d1a0af8fb7069deeaf73bc5624dee58be0c1ddddbac85e04d8", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "3ca9f504529fc7a320e464819c6a793c8fc156165a80db17ed8ef8c593bcc802", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "e3e3495038e8016ef1afcf70effe3f957ae23b95a515c3aa6f3736fb35c9a10b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "732b01cc2254e25d6d4576af99332e7c9f4ba42f031fcf13588a4a0209e51adf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "56a011908b178d0deeb00b7596a93ac003892e0adbd24958e875cc9d70340d95", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "bf917bfb75a6e263410d4401774974598cbb3fbcfd04da54942d8d5f640bc32c", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "3ca9f504529fc7a320e464819c6a793c8fc156165a80db17ed8ef8c593bcc802", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "e3e3495038e8016ef1afcf70effe3f957ae23b95a515c3aa6f3736fb35c9a10b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "732b01cc2254e25d6d4576af99332e7c9f4ba42f031fcf13588a4a0209e51adf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "56a011908b178d0deeb00b7596a93ac003892e0adbd24958e875cc9d70340d95", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "bf917bfb75a6e263410d4401774974598cbb3fbcfd04da54942d8d5f640bc32c", -"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "213ced04e2b337576abe1861c11ef69352eb5542f2bef720e50d54cea031f9db", -"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "6104cd021625791fc9141ca802c3c18fb50815459acae06b2eeb05da432352f7", -"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_bch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "ef8a33a6700d369cbb842ef4bc0a853c10a06ddcff7abde6a1d84e7d55a0361f", -"T3T1_en_bitcoin-test_getaddress.py::test_btc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_crw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_elements": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_grs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "f2ba49011a093ad530f0f3c3f60e1386add863c76ff5e3587ac90262a9f4676f", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "0fe493c41775e7992c88e1bace001577f6d8737500005399cfd73522c7459b0d", -"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "1dae1e1f3127cb2112f58e75e5b6eab871da0abadcac14235b3dadbfe0d1da81", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "cbf5dd38da807d68f93cd9e276f8f0b7a92826e3e3bdc40bdbb30f4a63bcd4fd", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "a704cd1bed4d13c243f86af77390bf15d8287ab33ad0457eca6697ce68f5121e", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "40f2d6e630bc753de21cf7739dc290dcf809337d5e692378699c98572474afba", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "9cf15bac5348807d5c50a8c622e92df0dbb630ba9db0b8423cd7225d2f4b620c", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "64d62a9f4b02896b84d56c3453877f439fc56594b2832d14031d45732817f7ab", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "077a15a5492dea40d65896e4a1d1a17a175e4d85d41c66f44293872594663ff5", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "d5e4cbb3c97f8d8312002a2dd7ed070a1c293dfca4ac195854fb296c1c1112fe", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "277f41432b63286e5b3898080a5245b4c57045b51dde6be49467a1863207448a", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "466e961281fc0e074f0edd4c6d7c04af6032d92aeb33511a8a39af20fdd18541", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "d4a50e221264e268a437ff4b6e5477de74729b1171cb7f1854bece821a46c62c", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "f5420ee7d27a19162d284b685a34fdc3ac296fdcfcd9855d7c9c00476611893a", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "af0a9051d5b974cda12d13f1175f6a870de418708c3aa05266ae2f516ef0fea6", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "30f3f630eb68aeb9c9c8d67811e5101ca3e301cc8ce0ff7069b3e687532fca8b", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ace7260e65a375a577b0cf58c7c19e73c861a5e705336d772e4d8328796b46ec", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "a74c4afb2a87e09dd2562bc7650caeaf059552db544872b7704af9e51f26103d", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "6eb641ea4acd345143540a9985e16cf8569e957f830ac4ada79a949629aaf310", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f9c524eae89e19091508c9fc40e18a2c2f167a15f28bfd59ff4aad7bd80fa016", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "e9e1685bed4796972fdf044a84d24c95981bea00df672614cad8c2ab1b2c8e74", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "3a15c7626541011177bc88967c72c278fc229ad8ac131cf606c8dc1f48b5df2c", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "cbbf158f803cec0218cef4482be16b1fbce5a33c27d22089bd562cb8991f697f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "0478aa33fb21365c1d114cad7bfb3c0270b20ffc3573d1eb70821101004e30dc", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "af9af600df851cfbd070139fdd4db6588e6ce4a116b45ca19a0068ce9d678f51", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "94d22e1a493fa8f3c3e15a65333ef0691fcab1594ee0e767773a3a90db6814b6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "96ea93c13ca429954e84685b85df2eafa7e9f25afbc8ca77a88eb909bd3f7c8d", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a93a88119c9ee255e09a87ff1e9c078a61e1e7ec61a26a4ecbccf294a70269cf", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "46b56e80439b320688feac9bd0ceb440ff83cf5d1da51a6425aeb97aaf097393", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "17a274a917e5ff853a429561ef4dbceb12c41520c18714f3c3f037d008e5527e", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "2640940dac7119c208074f263482b66323ee2ab0769c2cda32b75e91bfe9f2a3", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "cbe6b393e10f5e4fc0b780255b19d46f53cf60706a2f2361a658a82b0b659825", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ba1c1f8dab1121f7fdba73f9a481145ff65e383763a24a1e66d25b2b4681c58f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "62c493f4310b90d0082281c38acc314cfd059bbbbfe18a150a5d7236cf9e56f1", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "8ccb2c2222cbc695f5d49543e637f03eb69d60ea654636e0e8b97a0c04a21e52", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "cd5a286c516dd0bd7eb107081356863504947e9498a9d6b490760265c055c870", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a5f25a795619e2adcc3bedc07c6b12dfa605a9369705a013f276428a5a4f78d0", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "508a69027cc9b71d218f65a015d963f13fffe4bc9ad435f8fb12894ee3ae298e", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5f4e0c17cb3258af3901c7508968af36632f3e9826f6f63068b8521a4fbb36c2", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "9a31966c5665d23cb1ec01529d09cc3034116a28330a52608d9c12a96bdabe90", -"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "76dff54ff9086f92cd401fc9f7fdc7bb784e6c097d2d7afc0c423c8589488a70", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "bae7f0b63e3fee8ece96e59e5fe45fb50b9110e6af0cb431bc42a3f965ff3752", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "9b215d4fccdecb67001721ff27073e2cf7f57674713b086163a400315a0a3715", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7e60836a928c98fe074421708bd25561ef46d644f4cdd6867b9bc5d79c020f3a", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "ba55e3d330f207e211264d150ab42394ca033cf8505e1e02f5243c3d4cae3ca2", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f2c6c4c91fe5fb8309cb980779a6f7254124c296bd232ec33bfc35d448df2789", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "27a5b6815c3b8d444c4fd323a69782f40759e99f582c8f0131835d00fa251eea", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "77c39f9196a1ad8cd7972169854f7cb5f15d93d96c3eb43645c980d3dcd0e771", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "28df2e38996c9cdbf83b98a886c5fa3fb7a685d9e269d55b07035115ff8cd903", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_grs.py::test_legacy": "a806ef300fa0e8ff74828a364b2fee979a4c616b3b21111b150cd4dc92770674", -"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "39af05ab65895d138ed4a080393f3de3c15072980637d72a58c0659fb4b31032", -"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "8d7cbc9e1e1c2c7e06561563b5ad775bf281eb516c50b61e9fe44293694110be", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "fe926c9eea3e2184a8d54beee1b148faa2c778aa418e26e29089dd4284f87e87", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "d8ef8d8a6b9c94c3b25a45015a996a7ba31687024e68f91609ff0cd587b0ff1b", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "c52b96573ff1d0f1a49369298a69c1828e96149f91ff406cdcb43e61245f4449", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f60bafecfdc71ade91c375e95d0789878f7dc72e29319e257525719e55299cfc", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "7656cdff1d59f868ac6918f84908be975adc26d2a98ee9c9706d845dc8a2ef84", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "c2fd77b0242d173cd9b95e75c3ca94de10d8d8d2908420241bca24acaba5a010", -"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "d5938400d691e30dc969e06c21939cafe10dc82bb529f8c11019a2af738aac29", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "99c3eb14a9297b4d9caf1142f562bdab6d68a779ea4a17a1349d0ac40314bcbe", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "6b7c2edc4fb52dfd5d132286dd8f9b3ca84136a522c653116be6f194646bbede", -"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "0f230d5c6845daf73081e406e4dd5a0252ffb97a65c6196d3c856ece18372b85", -"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "c4d64521e603d5b9e3f86881f464be11334877e16923cc7868b4584996144de9", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "0470c5fa7c26b622c9407e4f957658baa0b8e462aa255b30514495ac4e4a29a6", -"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "34916d218a88982a0e031d3da676ba794357a43c13448cdf6ee064669fdfc9da", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "4f4a1630b3435b1755d1d724012be607006fe2c7f04e2a5edfe0fa4aa846165c", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "44d8941b9161ad7f12cb2e8f231509faf2e65dda2fba38504acb39b96311935b", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "fec43fa5690a40668ed2bba6d713cfec07ebc8c38bc686f82d9954f7e417c8d3", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "fccfaa06091bd0f574e4c78d6b6f89ab1842a33cc873ed60cf484bf33db3b451", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f3202ea515b4c5935c8ac5eb377cdc68106fe5f05968b99234954ad4aec25e6f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "31755b656cad58d7d32dcebbf939797e416b37156a07e887b55c83f815e8968c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "70933a9dad255906242bebbeaa13246fe08feee20f6a4a2149541a967a0ff550", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "686e0a918898f62a77ae2fcc2ca3b9438b441416169d327a3518c5e917036fcd", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "aab1f46581f519c7d3d81aeab5d6ed8e35a8d492e95dddc918ca0431b6e8fd54", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "0d2fd0b06a57c3c275bdef3eb31327935fd4990443e40f40ab5684dbda4a768f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "92d41acbaa6d69fa4512de55c3004b77701d699bdde982861740a25fe785d910", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ec02c7840205c63d6bfb9a7a5ddd103c45009ee61c6ee0cfccaf343e920227c1", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d212479a0542d5f2fcad9876987db10f6e1c52b9ee13411b72fa8062ea5f73c6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "f3f8cf5e56808b1ab3697a84911976d49d37fbe0c6652dc20c2ab11ef4177b61", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "af8a4f016ec79439685f33edeb4ec8e228bd72ff6eed4c07d7885eb44fdeab09", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1f12bb3af8bcf6a6b9afafbdf6ceba9674c0d2ef159fd75be949a60748316caa", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0c47cd2c13f94d818545f493b5c85788024a0667ea8682add50e474347df3d48", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "5b5e013a4b98ba8ec3dd2b44c9653c2eaaa7b5b1a949f9058d3f8da6500b16fe", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "90c5c863c822b85e807f1f971c707bef2c32afeb763d6898f0c9b9c33f26b5ab", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "8b4e69d84b57dc00839900e7cae25b1b9f4baee8cf2649833e467145b254ecc1", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ff12de01723a4a3cf4bb8c011bd81d45b9f43254ec7cb0ea43556975f5fd1fb7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "4c53a681a7e094c59a52c8bd2536aae2fc192a3ca93546ce348b601383447135", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "112c66c98a7c85210d619c610e0943fc83677878116565b2e2a875f130f09e0b", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "c8dcc2856fc3e7a31e8033caa42a134de2aa05d3144a8eceb0edd3af041f03d9", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f68f1130cf830aa8e6632901d834e23693ec5ed111619c83eae12ef72f2a3609", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ac684c8ef0dd6f8456ccd70c955290720abe863fecb994a50c6f548111178f06", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "2f95be5d0472b94ffe051d5753b9ca68f95b245633d8f76289f2768470f47319", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "73857c4de7ca4572bc7f9f428eb23be495569d938fabd35baf4e5bd04dcc31e3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0ffdf6683c3dace1725827bee5e0da3c489276bcc0f3cff411a4a848bb7a2ec8", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c608ac3b16eb3b1a9e294a809b692c5633ba2c83681bf55c85b4c137bbde5810", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "fa9fb399b0fd4f08e344e7581419e1b56d34995650a818f4e637afe8e3f9b3e8", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7d925ab9aec530d3c863f97174a5c837e32f6044c023f1365cbae7bc75cfb7c9", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "56108f83b7413d2a4b22048caccecf55911c13b5f1d946c40b97ee60c8bbc429", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "0fa3a45f6b8d31955b0e9aaa68d79f5948a7597901cfed56aec1a35ce57aed3b", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "83a6b8ff9609f07a0e10d5c46357a0c3647fac6671eace084f0568f84ff6d5d7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "dabd2e4161c862f8b45e5793523c0496a765b247e64f23e202fd2432a1a0e94d", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b62ab2c91fa20d09ea8e79a18904f3ae4465665b4643a1490cf6c0112876d2b7", -"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "b4f764f46970686537dedf7acc634675ce8a92e98fe99d2b19d766c546726069", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "638313d3b73353020ea06a2c34c4b14ae87e864d7c027a882d6a55330030c6c0", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "f524a9f7ee2fa91105477e0d673e3e5c5e1c1a13222d20d46ae2e375f9921c3d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3c538fad2bd6a1fd6eb3c088d9571142e194e25c53b7f19abff1ef7e03040bb3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "bec877a114f2b28638caf4993e6ac8f83a19ec523b09a210dc0b817b1acf1a26", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[decred]": "f5d7fddf8c0dfc802b58e565e826cde2d9dcf035c5d07539d16dc01e2c9732c6", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d9e1788e58374fdd27b7fbfc014b8dee59948938dcfed47169a5b2acbe380e02", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "55f230ea818b01962d5f545f49e893776fa5d6c6b2bb95c78dec22b7e040b4ee", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "103ebfb2f9506a61f3ee1f25de8345048318af26666c0cfd98b25898efe6125d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "7fff8e2f1f1471c82d2029ce0fd26dba010fa29eb074025f14ecf154348b6442", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "f38bed10be867b76b284c718033e7d6de592925bb0211e04afcd31247c334f3d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "e500416265ceda3522cfcc85e5640197e53d5eb2679bd1cf3708f62ef4af1abc", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "30e5354089ce5519ed95646fffc9f3468587482a19b81163b719d253421e3645", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "20d6ed18dd6584879fae23768026fc50d70874a5a68c595251a256d320334e56", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "cb14f397c92ea679413d31b088e6ac149f3ac2406f28d5c07ac939531e1c3f7f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "0c706c1b116ead8623b6b667e57bed1bd2a43abd4b4eed510d025085a66a3e4c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "933d9466accabf431929e82499f29c29b37eb39b0cccd1b6a4a9b022ed6328ba", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "3961de777b7578dfd5e500285177284462b03c260f2a46f5827bbad906880b5a", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "2b83146021fc6d4e870ecba9b79eeff057e51f1b92e8f6119afef4c7f1a090b4", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "863ed334a92063c27233556e2ebe71c658d99d4a454ea2a7328d97200b4b65af", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b25d95a6546962059efc4b3f7749546a1b938c6084bd52a2a62322cfb4e522cf", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "382511a667f1cb2695c1fd140c3e1960f64d034c2cf94f39c017627bfc2d12ff", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "85a84af1b63221a1d0aa66e59a6323e67fcc25bc0f9599eeb4848f602720c3cb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "10a6cdf39c7d1c4f90cb7b741429c13cab6cb6fd0ec082a82f22220bab185756", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "ba43a9c316206f12559022c1a6170842b5abc1e4b9b31c41cd183ef71670f785", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "ec4a77e34885849a9302779fc47e260c4d943a2ed4f8e6f962769a538261ebd3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6fa6739fafc24cde1d9c820bb5dc6abd94a11283fbf40b5967a29c34bb60149e", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "d9d3cd25802f3d429d665f1c987d4f895bdd03ab86f13820282b4667991b9285", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "236dba354336b318a77a8de3ef74abf6fc703b6e044630884b581d72ea6d0963", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "1333ffd148cb092b927ee65ab020151a0da3ee7cb4e8166f097b1bbb2e7bea4c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "590a9899c3a3ed23041ed483df877c61e73a4040849c28d9a3dd29db76a1f162", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8738ce1102d51b8ba5ee0323b89804d1706473051fa0cc2c9c34c62d8c1cc2ac", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c69fa09b4dab1bafbbe38237d72d5ebc8449c9e188e6d4880136338c31a1431f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6ef0e5fe5f520320520fc33df8d91d2fcad0f8863c48d71aa9428ba482156cfe", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d7944e2882a1c71850f6bc087479976e7be548f01c4d7907776fd98b6707a0fd", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "01658c7ef419d543d2117053de5ab97e6886c8957a3623be5a52c5b1d66d8829", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "0da2f2b6bd625bc5c8f9982ebd83f604748059a77bc1a49e857a07fd24968a0f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "705b683563a06d8eaad242a794e5c8683d41d560a9642761d183e79d85510bd7", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "406e9f0bf3be42d1f41176b0d1f97b7286e834e1d15b5397904f981cea9fc5e0", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "24ac4be4d6bcb7cdfd372bb3441f10563e13fd684ed3fdcc79c0c8e97830326b", -"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "eb0077831dee4dcb6d6395d01ebf1a4eb78e05f6864cc3247e5c05b936656053", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "ad4a82fa012b89ce6a027b88b3170504f5372b93da947517078edbc647b56bad", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx.py::test_information": "44e044c3f8b299aeed155f0aec66f60510aa7dcd3986d340c76ef128de6a428a", -"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "d242ec98f96d0db41ebcd7a44ce31bac38637ebd1103727445a068118c51956b", -"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "c76e1d787c589090bd950101fda86f62dff83e70d4f879ea1fb0519158c1e95a", -"T3T1_en_bitcoin-test_signtx.py::test_information_replacement": "ffce40135620e220930713ec3ec9554e6ae801aea34235ed0ff89dbb805c891c", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "924ed54c06fd791910d8a43e0b7c6f39852b3406167045211dca4e495dc69b05", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "2dcdbdf6c4c2770d05b751e1ca1f1e33646c3f83227e298778ce5bc1fb919bd7", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "e66b43aa7930e28285bcaa14d8ce3a1787a67648c17e55115722a2f90d375af8", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "4210ca2bfc63d054923e03cd9e12a643e0f18a37df2045749911037e262fedf3", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "4a3b8660ac30c4c91f5dbc9b58d02bc8d60a160ae255bafd3f56e4c697afa183", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "6b48450b917351d6f25753b29b9df6663c1e6dcdf6a795aae5986992f002b30a", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "e198a73b60c1938810862a5e479806ac4d768f42c76e410e842cd89b66e63093", -"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "033c92c6af972e9e31cee0daf55e76f82015b960459b91cab58535b27711909d", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "3516df019ae876386583e8176957310b57a2a37af3b7eed728fe4c7708c69e2c", -"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "51d00c0953cfac7ff286cb5117e56dae83e9ade576e77f3be8671ba7d9f8321a", -"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "6b705686dc78bf72f8e9ae125b0bb775f814c2f517052cffd2cd3badc9d0dc3f", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "05d642a9018b50279e386b000ca5591732677370d5fdf1685469ae2406b3bd4b", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "85fe2a297d335bfba11b3e9e01a2ec2c9a30730ea06b967983ed4f4502323698", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "2007e7cbdb14fe7db3c745a20157103855ec65cb932ac3f0c613de26e3f7dd4b", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "a5b47af1fb057b9384194dbf35c9f8de47c793eb26511028b405be06f09aebae", -"T3T1_en_bitcoin-test_signtx.py::test_two_two": "bd1e6e9b2f4704e1baf777a41e6f1e576be4cdeafd718e454cad973de1f0a9c8", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "73c15b8ad493c3d7b1d9885fb1dc5a56c68bb6a3d4ec9a3792c03be26795c182", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c74d09789466f3e48fa92ed5bda1e1dbcf7d9afc9d16df6061fa82395c8e89a5", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "f09a0f6c8c10df04da3ceb63bb4d054fbba4fc6275ee92a376b53d133ca648e8", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6ac68aeb33f8e70ed439b3be24f1bc29beeace17a0a5bf2fa1ca89852d1576e7", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d975014bdaf34bbb6e48553bed41c3544529e907a02cebce1dd730f1ba38fa3d", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "cb88988daa8afa19885d5eb9f051a1420a3a667b429417e1d0d0a6db6b5684ee", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "5faa3de360408600bb51e48b59c9be7910340c2697af97ec7b97d64613024d2c", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "8a025c4a07a30fd24274bb200091cb847810b07db961c8f73e4f5ea79da9cc9d", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "7c861af51673abc3516f25cf2f494951cfb26422886b5359b6c0123ba83b4e4a", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bc76b3b033eab274e39d8f56846d4eb1a6a3cbc97b2bb4218af62840a0d294f9", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "e630e07f6ca5724a6aa53b31b7b17ffe347d637be3f54f3a51e05bab8cffef6e", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "651b9abda274123014f55118ddfcbf0fb08ff52377c0079e5a4cf6b7c13d5225", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "191c9bff9eecd6ebeeba1d3e1b1701d9a6750f1bc9770f0a886936e19f6a689e", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "b0b065fea6ca2acea50cd30b4637a4776688448ff0d86411dc6957de652162b8", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5386d21e156629cf7df3cdfd98074357d93e025b113f74e89f271f4f847298cb", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "950ba42994f18ee1b96786c8d49e33449b674ffff4715319889c9fb5f34a234f", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "4c3cfdccd4f2dacb291d0b3c6d87baa7cdc8f9afe4cc605d9091f9ded9ef00b0", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "b3f3c1221160e0d9bac89bd44fe10cb587735585628ef6c652213ccf2d92d60f", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3278de4acec9009035c80f1a9cc4dad11570582fa2eaab30aa7c034d4f8d4371", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9b9fb6db5b35261355f3e335057b7086dae18adb09d94c446294004bc4016876", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "da892ff4e7de75f6b3c1fde48c915b4cfd9da2c3f0052552ce0b873c85a539e7", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "768b6294843581c691d590202a8ef11c0040fff3189a9b0cde91b1a49d6df87e", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "23e3f995af215af80d9dcdb00189a0545a77a40bfe55e195566ccfe41f78d2e1", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "da48ca03cffd80b81d5d17cc8f967af2ea82784357ea894f20bf49d559916feb", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "21aac16e5415731c271adb2e145ec9cf6313bb1205612b74f885a839fdb26c74", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "de1b8868c3ef6abd31805540f4bb73b3693bc2ded0acea39ee2e9aa44c131a82", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "66e15e830579ed547e8c28908fcdbcb2483658fbb22ae138764a594c82f60053", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "fb9f7cd2571c2c72c56968c57fd0ec16b83d3ab9f0f5be9548d055f37e3f2bb0", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "1b0378c2a799b0b890f1bc8652035d7284126009223f976e5623fdd0a8fb006b", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "4d157fa6e9c1da33a59735186b756adb7e02189efc642b7732b373b2c7e0bc64", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bfb6c422e7a8aa05e5e71501ba640b4f6008684816efd86337b46afe6f75057c", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "557523aee043cdfaebe92f63dfbf89d0c7d4e65ad583471c18b91e66a067377f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "9362fd8a2a4db51618a4be853623a75e73541aef5d329b2f34729831a3c13bd1", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "685ae658aa7b6d7d0e450798dfa88212241f89dce943e2dc7733e9ba0f32578a", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "a50dbcdcf5dd7f0b4db8534d67f3fa4c079f37087ab71bc9541a652514acd35f", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "6ab1dc24fa8dbc1c88a9937882069b33f0d5f0766e99faa7c3cd83709839a98b", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "9023903d91c453cfa696777db99334016385832fa47af3756a1aed58d097ae77", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "f170d79bdc23af7161682637840abd2d271cb73dfcae575f0fc8704904fcf604", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "602ae135d5f67b9821d28c3dee2e55c0b30cb6cdbcc9fd7970d8e02f06cd6b7f", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "9aefcc92153b1053449dccdf9ef3abfe1c9cf82b777f22340b434ecccb564695", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c4d99122211e001a4dc6c421147dd9673f3400af44b26900e4ce1ed49ebefb54", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "27aaadf7e3dcb1077651274046e4a4e53bcb708e3a140af0c3c4f92006d4ba98", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "1bca15e6a93a162199bdf9155e12a23c34fb7611d395ee1093735332b3741a5e", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "72b94474858fd569d20de2a3324f5d7b04dacad3829c4a4499e7c26bfeab49a5", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "11d1bfd3051ea6389577abd22bb5700eda61da7749af3a3732df17f24b3027dc", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "2b4f72fd6274d1b3d51b7e4de1801b4a1cc55ce7e2b7bef9be152347a1e39ee1", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b62b6fde11bd95904270d2be7127728beaf9813cfb3ec94a1e128fbd19540a16", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "ed223eb647b50559e2bb0fdf1a2027d735f9db79683dbc53df567996a0d8b180", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "16d836480b99974630adf2a6afeca600cd9dec2343b686a20e3c2b5d854ad8b1", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2f6a9c1392ba334cfc9987f68687d32c12558d08985e52ad71d0424014238c06", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5647cf2836afd54d618f9da5820ef73071247fea8e50c87b5c2c91c733902321", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "d5fc037cf71574e69859ba782ec1a03279acd26eaac25b934a4d913230931de8", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "06ea8319a958a624a9febc0d79de37e3034753924b2ee015f2cf0ec3995cb669", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "1c2e5c70e7a94d1009315e2dcd147612d848e320ccfa2eeb747becb4af796c47", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6abb97c5b7d3488b7d30018bf970507ada2f597b6b9b62ee0d9beb5d422e254c", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "2d6f85827d80251c7759b5ab75ca65640d415d40877ea5d64a677190b8715f69", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "fb46ca21976ae67dfbe73f5057ff0304bda4f4000c341fcc8bf856d23c2d177f", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "0117f15331639fd915916dc9fc33df1e5fb6ff419d7835c4fbfa63f0f448d5c6", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "fe2bb23c5a4f45d8abfaa91872c6a5615f03e6352d8700ca8b9c9cb4825b47ec", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "888422306be9265dbff77da9f74faef242c77304f3dc29b874a7e382497f7799", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "0482e74cc56113072a40fe0fc9c77266f824e5bbd40f5e0456ea2e8c05045c89", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "cf22932a05a0db1f4113bfa793d507009d90a48a8deda2b057b35a8bab2e56c3", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "3e2a3c1a7b7be9a3cce9cf94d10361bc12bef0c63b1ff8e9d08202d8e876dceb", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "ae1867d920f8e18e277e03794d0566bcf1255f55ecbd8ef02bd7cbf8f14e1239", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "6960accf077f4a754bd318b210a10b7d00a5f9406bddca832ba9e2c91f98e7ab", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "b1f9f1864b9f327518c1ba3a1770072bea7d40c5bde442202206e2fce52171e2", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "e600dd4ab19d4c55169cfbe73998fd3294a1fab45a1323289478b6a17b7f152c", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ad1e3b8a0d1738020f002bb24824b529fa8ccdcf52cfcea354fbfc9c88b9961f", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f37fb86060db61d5d356d0cb2d4e2ea5e39172b6f314a63fc3d4f530f5c99beb", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "93bf717a8b4d4371af323d07f0f4538539a5199f8c811d402445a4f08789abef", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ead03a1ab9def68c0c41471fc02f346d6dee943c9479bfe24d88a22e897bee63", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "0a7562efc888c57ced1fbcdbea8255bf604ef167098969b313e9a5531203670a", -"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", -"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5b0b0f76aa1fb8eace9848f3dc9fe6e3e4730a85de184192fec9dce364bbec36", -"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "921df31d90290b36c1c650451c4979a85637bbe3e2e918d09d826e63db9eb597", -"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a793235b055146b364dab3842f1364f1d73a0622fbb6f2688463b1eeb46155c7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "b7325f5034455301c16ed0ee5799bbc26669eff127139198c4199bb94968a385", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "28383f6ff4094be8d3ce786556bd40fc97c3ad0b4c5879328824084ab4317b86", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8deed6efec61f0237dcc1e5048492e01d55c7bd833f2c70e4e8fed46e836ad61", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8ed36af60e84e1e43cf6d4e5c3fd3fff0125005ecb86f4a78e240f7837e777ea", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "92b06620086f0cb3b61937db9c942d5eee357efa3fbbd2f86781732f2f692f89", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e02e6bcb1f9f6ea287ea5282600f622d52522aa463b48cdbb4ca107201e33d2d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "115d5b4e020583299b990d80068cf91c7cb3a66a9911d75ea1b6edff41e18a46", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5eebe2c33a6cd56cd926da5a8b525d862997df17846ac49ff137947a5034ef83", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f7d576e9ee746008a36d2a19ec7832cb2d107193e77303e5865ad4e811ee52ef", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "23670f641c3901310bfb3624875ed6188b04376169062062ad580108e4d85052", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5c193e247cda7df8cf60fc1b9a132bbe4f75145023aea5c48fa0318b84f3f5c6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b3f09e86d3eae98f8aa2800a78171e19a3edd0f49aeca1dfdc9aa6a5e08fdf5d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "5e926670cd17c32366a14ce859c41a8d7b803991b7680ea2ce2f2aa480a17821", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a51ca1c7df82ca4094847a4d1ce3a7fb675bd52e105e07d2f494631d5c6ca11c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "530b5b42f2d947a67c7439b9af31393ab42e70b73ce7334dd35b0d4f7fc6680c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "90dc52fee3fda8a08ca0b5ec6927c56bfaec144474df3c3184acf9f327d4aea7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "894a23c78b4f72dd299f07e7fbb21d1fa3669ac5921acc2267eb6f40c8321b96", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "86a2724d90a4b32bda758216b1fb9b1b609df37d32031af08e91bfb3be40d61d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8ad632a79decdd304a270a9d0275ab43433afc24f08415c0e2c6570230af2a88", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f68ecca4dc2ed146c83220e67db6bdf2d684c54c73a243da05fdd1efedcafedb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b841eff7ee1d641a7796cf1e99dd260f0c176343ef0bd8c7bf697769430e0d51", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "6176161d5744d832e208199e964b6452bc37d782654ba55d361ffeb4f0fb2dbe", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "edb0279a09e1c36eda30a3d48f0de6f547bc6213fa588fded78c03c7b1cb5630", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "432be76a7cedfbd3ac00de037cc9074332105770318c7b399749c7551b0b24ea", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "5438e6f171f6a376e8832f50fdddb5b9f584e55018b85fcee8dea962b152ca1e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "79c1a4892f1f5c60274e3622a58b0479a678c3104d3677d4251c56056629db12", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "911f9906068aba634eaed98136bb4e98c4a7b1bf3aa4fe1390a872f1547edbb8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "e429457e523144e8ea90645bf6dec8ee105e02d18eee3c4ba414c311e1ea9c5b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "42dfa0cac9ac525a24d7a1770f66d1790352b1900d614a50faa24fc7a07d9f9a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "92a896d7018181dadd4c49d4d01639d8fb454403066afff75355d59888c07b02", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "aa7b2e537a9c7b9510f8298543161407ef4596088fc9c67c57f9a014b97c000a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "4ea97f8df29eb686bd4a2ac101aa6ccdf4f124ab1e2dc8b913b36e56a7950d43", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a3259e596d5f8c4ca8e9ba4de2f14fe30d269a4c3d011778b84f73ae4a4c80f0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7fabc235b262cbb2fa45e42aeb900bbc1cdd8a684d2ad5e08b51fdb147657990", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "c40565fd4fdcf558c29c67b25e2aaf88e1e41c3d35735c344ee09ec672cc1266", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0053e85ac2f8d5659d098f1d878fa7e37d712c79d3bed8a596bb639fdfc720e3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "37afe319cc51bfd117eb04d350e1d2a174030d0f21723eef23ccec7eeb887bfe", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5a9e1aedd3047e3f741f88549fb2497e2e9216ee326553efd146ae078449a5bd", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4b9aa38bea642c08c31c946baf12ce209b5106a5d8894939def0d899c580a4af", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "5dd80af476ecb417881167555c48b0e267d575ce29f952dba73158861de802b6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3acdf363fd73843b24bcc482bbffafc0f38eee9a29e1b46a2d101e19851b77bb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fe53efd4fb003b92c0ec7c73e4f5bdb4e37cda1b42bd86c319328d127e4074ed", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "e8f224fe8adedfeba19c84716af802720cb4df5bb2e346f58b7e9daaefc1a129", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "dca5729b439904a756b21e18660a933446881f9d4fa47b2b579717b9d6a72e52", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "9bcff6602d53b7ab987fa11da5e47a6dd4c1ce458af332acf93e8699709cd3fd", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "151fb9e8eb4eb78c1433de17883440f658661137667733b78ce46027e29f856a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b75c9f7cd0741200af7dadb268f07cf29bb80d1b6b3ee5d7b640c31b5544f41d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d0aa6f83db15be9e81e663daed4ab2d08c7c4f50fe3947a95607ace47e33dfdf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "0f2826893d63d9044ccade5681fc1c1e1bb132fa18df0536be1809333bdd5eef", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d42e55cc3b2d396128b774a28fdc7e02a9f38497e5df33ba8bc544752e331766", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f538030a0b25cb9b2a555f52d1e63fd66dedfce7eb0544838270f1afe3feb8f5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "96c6fa4c4dc664ef49a515f2ad2a01639a20d25d28a7d93bea76e1974e171d15", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "1b48eab06b558cd524f5741db98497d0eb9843f3d216f24e73c904b6ccbfc0e0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cd625eb49e2df164c9118ac74c8de1926c722b72c6139e3c5984f5ccceafcc55", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "321abb9c816c43d6ec44ad22188bb835505c706df4f9f37ea131e82dbe83451c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1e53c7f2c73c425437435cfc4b02b4240fb1e230a221ecfec39ab09d8f4161c2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "2849e68d49e69c8244813885f59021cb993c2f2f29110d3f2e129f4610827ae0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "44acac35409ee4a055229367bfc80d745e4847fdb631edf7621d47d7fde7d34d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "462b2be9aa31806ba6e30ec00b8542ab263b518c9871aeae10506b6b07a96b98", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "45137352430b89fee0dc777574b3c3c12b807979a00f277bb2e21bff2ad1c8bb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c8a2b7c44515e1faaa8269ac4c60f1f6c3d22827b924fbd564fba3c8b63b0db8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "487484df2758c739067062dc2b9e3080a5e04f8aa5c68ae9277060dccd1eec36", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "7937e85284cd08917b7db06c4feea5da46f923907a6240a86362031547841b43", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "faee9b0ccb1ee2b76b8fad5e4da9d6d3d8a6476128a0df91d0d47f5dcef89320", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "0644211c8a04a5ef6bea4867fa7f4d008786bcadbd4a22a2a32a8203ded4053c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e03d2e13242ccb5964145a256cff5f0d8ecb902ac8f040b6d5dae575be18d262", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "691b3ccd065e0ed3fb665ddb6e1a6cffe67d7fe74c859f677819efd8030fea60", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "dff434abdc2e025c5de3a4bdd0a8614f58c27d3778e6062e951244c9d4c5f2d0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "97e8a0674c484269b3755a87380859a3d0cebefb95c4678be5acd7e4b6373795", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0d572466e8578b2bd6152e3b20ce33aa9ba69abd7da0e1ccb522108484ca53e4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "361e677305d13f75bf0a71155f8f384cc7a85a53d27d92b662671354deba1756", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "a954b7609d2c5a898ad54f1a15c2d7f190d4e2fb5eb828a1d7a2ac107b87f10d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "abd332668db3bf105d3a8e55fa1ccf90b4f1acb62e5d1c2860f7ee2599b80534", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2994c65408ded3a3a389cb1d3fb7fffd72f6e24aab6b26f6eba08315c09e9444", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "288e4e13bb3a3a7948e925dcbad8c61cc7245c52409818bd2178b49f0c230c23", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "614cc13a64f35ac3247b83440cdea22a18257afef165fc54d41917500cdd409f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "1c4bf364e403371d1b4570a6d7a2b8f9ac231851cbf67f56f64fe350e0edadd1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a9958771b2394aa3d6488f5d28d0516fb2632997be4ef3cfe272d8468b475e70", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8281c20dcf6ccadd0e0a0db53adb4641706dbcb48bf685762173f5645abfa39b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5dafbc14364b371d938a5dbf2dd1696958dd68fd2f10702dd512f5bd7df02602", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a882c9e5ffbaca9ec0e7f0fcc275270268fa9ef3c9ed135e543ce39af912cbe5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "d3c1b530540a57f50020e62cd9acfe8c2d64d8c1ecad74226e9419876ae73f16", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "262022e068ac3dcbba07b3451e9b670187bce739b85cd87835b18c544ab66b10", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dd731124e63c9856d1b3ca05f5b11d922b33bd82db7535f7fa8b135213f648cb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "969a01934c3f20e57c1ef3bcccf14499c15621489b67f8e9831dd7365ae3c130", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1b397226957de70e91fe48344b86beed80d3c21fc5bd2b6c2b38c1ec6d6a35f3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "99898cc1734fd63bf4d7906f30087e77138857371109b4c58fcb0aa8d312476f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "bd9d8a62ed8e4bb8dfe479f6c14d026b41a8b5f8d9a65c21784306dc208f4cdf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93a3099eba0179a1ac48e751a7140dedf77cfc572fcc90e8fa6c9f110ceb2b8c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "027943246f0638357411b1195bd35a2f0d9a976449a7efd3d8dbf26b8205410e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6173e8a3a2165a0f54bc124bc505a7ce9aeefecb07cb0803fa22c7d9e2487d0a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "dde7f3743ec2e9bd7d441b2f6970ccda38c47242fd64440126ded6f61825f756", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "eab03e524c6cfe6f04d0dcf1a7010faef85d62720f9d8722e6e137e7f05abc33", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9859e1419d1a4aa46be81171ec835e137184d834d5f57ef37e918061b485ca8e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e48073cb63f1bcac2d7e5f8dcf59e3dc65edce7205eb0f410f70133d28779130", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0942bab8dc494e8527d4ddfb9411e43c43d5960feb16018cb45c5ee2c6f57770", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "eb01dea0983af584be8ebedacc140c9e5d295204c7f43f604122abae3ffe8f82", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "4ec3428cbcc79e37db158ec1769f751044b5d3936bd057215c2076ddc2487e21", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5598cb3d539a85ee72edbfb70583b43b236e4638662de28bfb642bdd93a6fe59", -"T3T1_en_cardano-test_derivations.py::test_bad_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "bd5251d6b4525252b16983691a028174d6c083b2c062bb076d6e2f242e470812", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "211a2ca1fc8feadf49d0212d66c4017a12f6860e479cc9da494d3a2db9ee4a40", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4e93343b9e86999504bb3b8e423c5620eb53c86a9fc82f47af142e18d70a457e", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "a175d8c11f1e81eeafe332387e79b3f4bb056e4b1243daa734ea2e9a484a449e", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "aa80e685410e23559d8273af3e08e53c499326759206e52fa45556b02f4abeaa", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e754f01cc31ef7efb83621473556fc0a2d81743594ef62cdfadb2e8233c12ca7", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "3c6c11eeddec4f0438c5180ce4cdcbf69ef1cf04470e5f0dd38a53e17fd68203", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "81005c114bdbe998054d6e94b60bad71d98e7d38715f07a38fb64ce0719bd9b7", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "d4cb9b8254b7f5d42b6440d6c1d8c7ab4802850c0e3d906b4489302da43e9981", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "714fa46f0617fc163cb8b7fd2f947f3db9e2e7f43202e77a39eaf612eb3b057d", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "48a066f73096f96a685337d3942ada9493abe686f5bf70a2a224a999ba5dab3c", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c3af0c697cfff8e404e6671e5f77f3b556386fbacd25eab158d866c21c6148f6", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9343101c53fe8b7360ecd5a102b3e507aabf29f37eeb253df3c88f6deecacb7b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b67edca40129904893563b0c85d2c86398a078cb740a3ca6e23d6489afc1813", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3e13929eb81c8077e946779e4ab3b1d3b5a461bf5a4cf3a886d6ac0a1d5297d4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cfc2ff70d16e4b00becc081367494ef3ea66f2702b318752077ea1002e6aa972", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b37e039e74b17959b0d2f13d60bac840956b655b93d8395b9dceba54b4e0e504", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7572d0edd262f438a53b71eb79f311c0219cc472613492fbc72797d879f5c1be", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d9c57a802003857f97ffb5eae4a42f93d745c6d574dcad17ef5408bde9d54b36", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "960cfc6d88ed3325ec564aa9365fb20f489ad0da15acfa2d9567860e798acbbc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0d1f0bcc4aa3fb97b6b2cf9748a0129fc2e45c234243da40b5fc19c34f093ea0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "31541c99c75d9ba3cc057dac8649890544313ee4dfa8040187238ca3383dfd62", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2395691691124886700515d814ac9839732a849cf5d96b8db9acb196c5289d6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "f73a3e9d253d92d0be75e8d9670f57cb6306abb2b89d5cdf043adb7e1b4889f2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "b930f013a193eca96f7692223256eb858c060e6b15029df322c7d8d9b6c02422", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "fa3cb8592caa01cd3f4121dd8a1870f0fbfb2280ef5bd30224bbcff6e98473cf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "9269b9465b1581f0629cd8b317ccf57b69b9607a926f01d982d6f6947f59fa90", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a6ef1c68694d404faae26fd10c501debf48d56df64449ebbcb4dd43a5826a210", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "3c045328c328729ae658fe885d9aa49bf39af763febeb0e7826e8cd18cb4b5e0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "585cd801813486920555fdad9184439b3b9802f8eac82f7d95354f6a34fd6969", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "48436be0688c36b7a7b372339eed6eedd367b42b2429c2410d7dd85b28072323", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "5a20fc3692a0f398948ac869026d8ae313577495ad804ab3bd09638e0b5974b8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "a4ec018180fb251666cca02e2525d98e97fc510313e2aa44baa13fdf373f33bb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "97c3bdfe30e901bd5b4938e4dc19ebfb788ef2b4166fd77aab99d1af1e6d102f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6497a875d1d188bcbf0293e303c9cea13d26f88b12cd1422239b99aa0f2ed3ed", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "31ab7ddf5da2bdd7da4f20c39ae566f0fffd3e84cfa7dbdbe7ae2916482809fc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a1389ced8400ae5464f921d39bd388ee855de605343c71235097dd0731820db7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "8c7a81bc9e9e95cd987b6e61036c95f64818b7c1f77c684aabf78297ca2a5ee0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2c4a8063b68f4d1c6b1b39f16cb39c9adc7f0b2176d39ed4e56c12b7129c21eb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "5c53c3396091ddf0f8a716f471e6c2740c1385a0a04085163299c1ceeeb89092", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a4114ed4ac01babea79a34adfbcc0a74b85f4b713af6ee8cff6cc8397c57e59e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "b69e40793e7ee2df7db1cede931da022fcf9aac5dc71774732c542745ed86450", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38bc1a59a58e5d66e4fcfd0ec815765445ece013a158997778042417dcf236e7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "94178bb10492c182aa49e0f3c9defa06da9a4a9029bfc500438d2505a2ff29d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "3dcc07313a80489e31e0615944cc196d0fcc8970578476b562b91c367e282b09", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "7f0b5327a83fa2f80c83beb131182000c2d20bbc18a563ea2e2bb4783f583119", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "6ec6c8869de3eb9cd36e821a4b8509331ac4b4f49263b2cb5d99730682ed713e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "f79ab687372b56b3a554af84ae69fdd56c4835cbdba79793b80e54a16de27798", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "b588d1972aba821545fcf4b60c308fe945fa907f087e2db280433b0419156b22", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "231ea4e3ead93f6785985688a996772e6d9d73e008b16ad08aa2e077ef59af52", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "b775180796400c7e96abc5c8d07a937adc0b1506e21154fa8a6d2a1288df30e2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "742d2ec5dd248038f744bc22a63246b06e810e88490d162dc8afb2c3a17a518b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "27eb9884ece8027dc01e64b3367c5ae79021ff0b05277d772869ea1607a7f111", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "10f5a3304c468fe5eca232d508e427023d9276ff5f8576c1c5df5e263599bd20", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "f722a2a9d9a92911063f262e8122896ef129b15b6e3e7bfbd7d1773eaeaf5890", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1df3cf734d6342f74cde5b48d78e3a260be7dafd895c57cdf88154c9b6899d33", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "eb632b495afa606d4eb03d0cd449859a659c5d40ad8f6ada7b33fd59ef163708", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "399d21207fd15392b2b1fb698eb1ca23330e14cc400910e8169780dbcec22b67", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fdc2b395cbaf01587842304f4554246eb8cf6f39cb3960d34c8aec9a382f5328", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d7ff337c6fd0c7cba6f1d9f66fed32eba55bd4416178b14ba14de11352b9e3e7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "b182539ac4d8a70556e2eb004723bc07d8ed218e7239a6e45f482e65b8b8a426", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "8d45248ed4f81d0e42054e39041a1fcc00863a006144147c9b0d9842476ce7c3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0f0095ba797fc8998b0d45ae32d88feecdbef4b99041e9f68ec85c0a172fdaf9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "0dc14651ad672280f3dcacb5a406444e5e1c706568fd390a54fd81f25e081197", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f5d2d5e4b29e094268b485cfc59d6faecbf09b72bc2252e14325d7e4a53beda6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "08872494c7b3422048efd15aa0fb136fbc9742a3229b5d129a023add1bc0751c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8433673d18ec3f32bdafa4df6e8936a03831354ee91b597cbabf0cecbb7eab91", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "abb29879f4bfc730eb3c1273082f5b9abe106f9eae3b3d3e363a0061410a24cb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "d6b60d525662db4f50820dd2aadbf1751d74640262ea5d36c59f7a291b64ec14", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "da0e65e13123933d146e70d198b5514b6222ac170939d4fbbbba84a06f5256b5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "64e61dae2757cf9f237493e454ae527c77a0a108a1fe9d92cdcc561367a7be06", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "db6f5d282c4eefb95b236cd1a08cb59c94167d9604337982ea5a97a306b9502a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8595d86f024902af417cf61d79752361f991e83dcaa06653ccc3e3a5bfe1b03e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "83f4c429914599c039dc8cc49ec9810670868a585fc968de9dfb1efb5c5927cf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "04ae909cb1220b008e46f25b0f3131dd27ee97defab647744f412ac6e1c4d3c4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "1fddb61e3c3a7fc0bd764b534a9d836a1d71256ba213138ca7e71f59f59e2519", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "210426af15bf66882c21b523bea7522d93f06f0a67bdd9ed59067edaa1aa07a5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "11b2bd7e0bff71be8c9c271770b59cd6b8c02d0b0500b58ebd8e61ca44768491", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "66c962ebc60a9d2bfb0a20defbcac98c2ebbb181628105fb89661578ac6479a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "086ceaf6c97354ed2de94ffeedce7a51c86dac8b6351228f692d6c59368ab0d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "96581a719cc8a8ec7d1299fc48138ace97f740645973ba08294439a354858f73", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a8dc52d68ddc7b418dd86cbaddbea42a45bf722e25fe477e24660123af8eef94", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "759fe8fda91115b4f75f56e4f95cc52f58ce099de2ba466874e23a6c35ff3c6a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "945ab62e3008545dbb6d6ea38595fc693844001d093c78dd969a7b5e1b67f1f3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c93d56711bea6a2317d8e14d4f93a9b0941593c87225bda96b8524488ce4b6bb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1e62b11c3eb59c4af8e7c66e6481a956b186a32e1ea6f20ab679f5abbae98684", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "dec3fdd0efb3f3e163134a1043b5357fe686ebb9013ba4b9c14be1dd9164d434", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "57812101e7daec78830827aafba09a9b7a6f6180cdfbc63448e46254ba896c2f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "da2d8ed785581989ef058ad4b6f0e71d299e4cb5937a163c04625d3aca8fdcb8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "a0725ff6de673047101040698cd855af16c8a8fa68f9a67c50dd23452d89f48a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "70df086d9d557fc7ad5fcf230e0232524a9c1c32c33d483722f2b1c7b1ced25f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "468690086dda091c024e7bac1c6bad638b4dc9c7c90aa2e89bcc3d1910167b1c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "be409a32f2a558fae9dae332264053166f0d3916ebfdbaecf80cc820c90a6a0c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ad549b55dc4a084a1804eef07da55838b1ea51b37651d4a14c36dac63f7b81ad", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "c129b2eaf86090db7b9f69f4f7cbe5e2894879bdd476f97ecccfb4cbdcbb1174", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "333453ec30e9813548597d8d7e72a1b9ba8dc05e621ab45d06bf49f7ab344688", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "89f2f6e3d5d80799bfedf16eb153f67fd74530434e6b8d1ad2b243b030d1c274", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "d0b79fbb34282a310d7de6c4547e8ea1f7f7d81b594c2d3e594ca763f758914d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "d644bd53a4c9e966414463acb86d64b10cd2e18d472c8ac1bbc397c49a32ed1e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b23d100a356038d67e4daf39f1e01207d66103a6329c9f659db91d4002937f8b", -"T3T1_en_ethereum-test_definitions.py::test_builtin": "c0da4f04e898db54461b5e8a5f29fc16b91f2c5f620d1dee2e19611a4400cd0f", -"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "94ecde61300f6f5257ebdcb3b62cc7f901c32108497878c1e9ef9104506a5f62", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "6370b3457fba40de0120fbb1bfc6554ff76e6f50f86a8e91f45d96ea4209c5ed", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aa3663738e87a951416eb07a96373cdab9e1dc78b4a81d38c90cce4a2c47e27e", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "af0d29cc411fe6a4f8b9840250c2435f85b29962e2a8929ce18fcba36674fc4e", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "8340e2f269d4a0a96c7bb0d9b25aff90241e24db218633d8711223b738ab130d", -"T3T1_en_ethereum-test_definitions.py::test_external_token": "179f43de25b6a293ff255b4f9e1d09d78df1a928319d9b5789931b7bb7371a61", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "c610a15399d8ec4d448a5a8904347e598ba7184585af296d4d0c3b6ec5df8993", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "cfd045d3ffa9ea1d1622ff50c546cda1f7678e25540c02b23ac3dae4d1a0dbc3", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "99b134db1b9f23de02f2f9f98dbaefe5d1b29e8f3b145c6544946c91a896e488", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "433d26ebebf355ffc86eac6d8146447790b1f4d8bd34121b3a631a8dbc30e74b", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "1be87dc3c1f639d9e0507bcd3836f2d8e36ceafb0500fc0c78e74b70541c82e7", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "dae2d0e17fc633e281c0cdf96663346e2fdc148899cfdc34ebe8143383864d19", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d5963af13b1a053428be488a3475b3e5b25634292f27fbe1e81263cf9edbae79", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "8b6d747f11a1bd32b00a92385bed4d638718e733e80ee9f145b0a9fb0d214589", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3aa63c89a2693aa70258f3a46d9aad78d5926a8af63d6aebbc37a2644cbd80ef", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2a03d5555eebb9b3cc7e78e0bf79d5c8b3ff991c1afb5db5078fb8f2ec486fd4", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cc46d5ffd339b76744cc822e950b4f9252b993316f36fa04a6fd371424c8dff4", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2737bbf908acddc26c12e3e32e2d25ba2f8af28020cefadc0dea035491cfbfb8", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6356dd6ec5475397ac62d4345195d3b9f91e0cdbcace6c9fd2067a1ef31fb44c", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "49746bdc089d8ffa036cdd209a0d99f6fe669d2397ce5a88bf30cbadfb0b5174", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2e8db4c9cc0879db9a4339556c88118009b919bb5923f93c891f65870974fb17", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "5259d154279b4007f26e44e931550d2e1750bc09be98478d845da9cd30dcd03e", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0d38df9e7553ab93ea60c080b5ab8a42b3809c637a4257d13db300805553bbe8", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "45e584bbcda03cf905239b8bd506a7b63dc17ed5340d803df17e02c3c08a3e07", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6baded0bdaed70ba48740db902cd7088fcd1aad9f00164209642450fbe92d80e", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "5e2dff98f868b98280d8605517c0543a6f43848dd681b525ed26f5da99d6cd89", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "175e5fc9017dd2c89ef55bca62773d2deef95dab93578aa061711001b7764f8d", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "ab9687262a7d3c1e621bbd7b5b2d1b486fbd566fc6c5974210800aa0a3a7ba8d", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5bd656e64cb5013210c2bc189599fe1ed14110deac23043c38c736b98f137e63", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "5541c1bc7cdec395137a32a8c8a894f4c56eb55595179fc334c4a78ef178263b", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "80c45e65c861c1668f272398c4a790cc9dd0613aace21bfe554c9a685e2eae8f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "c6f492dc624460c76c78d367d8ee22e1f24f6627db61eb8dfafdc2c90e5477ce", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "dba56b7e5def913c477a5a4cd56976f17316a53856a1c4e6a5981d8d7972464b", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "3e4a965130a869c772ce2334b2fd1a789efc382dee4527f7eb4244af39de1a72", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "b55f2aa360c610e470b1af6becff9a69e49d56476b51dcc61de43cf4a24f599f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6c710f6210556bf2ded8a6027776280ec23b8724eebd99cb4332552d260a4c59", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "2d8d1acf5e6a4010cdb9feb342e10f627fd64586e49ad8ea57d422a3fc148ce3", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5db2cdd9461ef667c339619a42fce89a7e46c7ae576d83712efebbae8cd4ed09", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "985b867aeda08c981c8c610e94f454c8529fc4d14c9cb01881499784c5a4b6c1", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "1b201dbdd316979addaf42877f194481d2cc969e2620268e717c441a31c112e0", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "f612aed993f77906c8990d645a9bd4abfb30d57989121ba2e10cfd157a811983", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "5c9607cef8d99d24c5a3b1554369a15391bc58ca90a815cb37689c8f05f48dc6", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "46148fc0e4ddad92ddf4986b72f557c4316ff6a5d386b12a284a90d0bee46820", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "b7e5ac80950f2afcd1db8dca4d37236ab434e810c4e5b4b69f97bb073f14d505", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c175ff9348c8bfbdffed2809f7b8f158ed1e7896abc19b6191245ceca01d594f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "69f815f79ed5dfd60f009bbe3024d7e910fe37ee32377c955ee29b569fd4f58d", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", -"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9a89cb6f1a61c69a35a7c5f53239d5ffce3ff7bc07a2a08f67266ebd753de3f7", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "70f61cbd4bbed46fadcdb3405b47ea23129026bfd99eb209ed8c5c2c3a03dc12", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "88fa5319d82eda664c0e33f665aef10d782d6df42cff31bda8e170239013170a", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "fa47e3639c860f5865382e2b4ba55d833989b6a0f41ed81fa1066a57105f8c59", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "2f22d59bffb56e1cf2ba2353a6cd6c96cf5d04c95eec1b7d25bf223077008772", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3ad938f73145a9eae5303218fe98f832e98e4d94e525d6f3bfdbdcb698549657", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "0ef31079e8df1fa01e872a2fac2daa28b1df648bad515a69d9c6014951119308", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1399e2245a8348e03f95dd1a439df497c13a74fbb7e60b31b909c243c1bdbb4e", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f9cf7d0ac69d056e77d5b8eea556d25357b8bbf18576fbe537cf7c480031e217", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2cc8a86f5940e557e838c23f85c899fa5e21663ffb9ab2e5420a30c75b850b84", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "76b402adf767f9f34bc237dc37ccfdc48ca1c22fffb117ae8732636965a68d4e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "238aceb5cbd565e67696c8f6d73dc4573a3bee178ab66b208d85c32cf45957d6", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3d6987d4440d51bb4805d8a08e6cde9f6854f90d2b064553d42c1cbaa420a53f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0310349fb18c476ec82e058667d8e6bf69adc14696a3755d878e7bae3bf108fb", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "97fac4b6db7a446f53c3f1fa27ba925c1651a8831e76db7d220efbf414482139", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "997848a3ecc4f0c5ed8004867a8d5deae48e832c12d4e90bc192f28394a704fb", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e85604e8d3d7b102215e6a18d828235df540d9c32df78e1b89b988d6dd7f62e0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "7838bcd3a0bbeeb327aa639e93ad0a938ecd3db27ae3086b5b8d7d1a2cf6970e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "2bd40660815fee49cfb00de9b8e64040cca5b61398b9c38a136225ac50e6830c", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8fcc1f1275aa8e99062026b960451521aa894aa3c78b7d04bef368b73085e69e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "714e4c5f6e6b45fa3e78f74c7ee5e3332f39686f8b708a4f56232105bde0c3e4", -"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8bc38a773c40a70c1eb9b91a5d02ce0a61591ce9e42bd0073bc1395f560f2490", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4b89fe403777b910e365031ff4da4ddf844d8d9385ee6d562d8582e7ef270b8d", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "a82c3762d114bf542e9753faf7c54027cfb02c0fddfb7ba914eedac69366fbfb", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "afb28033e3093ee6d38266defb14bfe1ae36b727869b631e0b055694ab9097d7", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c4ef05473b0b238e68385cda289a26b8ecf8c86db213cc6b346a225a0f323332", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "de100f2d3c8cc88672a09795ea9324368bf2c6e5e6b5b76ee04f2b3e69a80444", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "0c819d43c537b170b91edd29dc1ec88b78577131c6c4a84d14de7cdc42c3042f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "207fb30e30123a92291f95b3769a217e05110ddf9f8c3446970459f2fe50b44a", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "405d4ac4856c34af5606e49a742235062b1550b4fcaec4fc4ac3ac4bbe998256", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c133a3b7addfda617ccd9401ae28a12b1681e9ce47c28ddee8ae78a3ebccbd6d", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e924f9c247e732fa9b727d71b844bdd734be9afcb4a26ebb74a4450153229f95", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "fac986a6b54fd0ed850fd3810df55de3dc411ebfa9520b8e51ec255bffaf0467", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "106a4cf1f71595f65c4ed2f12b4f868ba0c5f8b6dce75805489be8e6df3f39cf", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "63a2b20a46d7eb9dbe188f45286f0e19b696b4fa072743156a1f70b8c33d5dad", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "63a2b20a46d7eb9dbe188f45286f0e19b696b4fa072743156a1f70b8c33d5dad", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "f24ba4c504e12ec403aa99f19f9d9c78cc513edb2b7671063033902d089d894c", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "f24ba4c504e12ec403aa99f19f9d9c78cc513edb2b7671063033902d089d894c", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", -"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "b3086dafdda715fea319d90ee3ccab84a1728678dfa67febce1f7cc943d9e585", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "6ea5987edda7c73d7aac080833b8574626f016233c38d068185e8cbcba46cc11", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "25929f2293cfef2d7fdd8859bb16d0311c5532e02cc0624a893c50be3e16182c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "098c3992a0cc170e8041c0b0708a658f2d438da6dd829f38c8082d75a8d43154", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "e6366ba60e181360741bd85df2fa8fca85f4dad889d510a5e3365abe63f4d6a2", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a78b216be479757c536da26edab8960226c6b1434012d51927b5ea461a952de8", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e91bc6a2639778d60a1201e93fcb488714b7d38f037be31f0a41838165019a48", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "35ff50fcb49fc802e20fd0a44a161afe0a8b2b2f2781b409a4460632e884a83a", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "106c1900eb2e896139b514d9d0d3b4434858c6752c0b8eaca38cf7aadfbe508f", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a2c7a9f111cf2a8fd72d06c5fcc738fab679545c891db34043eeb22d1311ac62", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0a745253b75f0ededdec44be05e3940166128226e96ee49183fb6c97a3fccf70", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2cbaa2088776f1c7c735aa1ef767d33f8ad8ebdb592b6d9814dd1bbabd6da9b5", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "58a16c31957f7d540da34a30f54631e607eca1af6efb27a0b3877e49f77a9d56", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "7cee26436a0025a56eb1f67e432e4e707857714c1bbf5f61df60cc20f54c84ab", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b34ae9ac7b3ea7467afe774bf615ca1e1eab26c64fe5d25178071bf15e8d6518", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "648e45403ce412314e9d91625ace8ffdee52ff37ac99b13f4e86d018a024515d", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1c723bac9117d59b814785b772a9e34ca9cea4af02a8e7e9969a8ab6c07d6faa", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_signidentity.py::test_sign": "641820cdb6496ddcbe402cba9b3d24bee009ed212c6c1f54a87ba158b6b05049", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "f04af61059a8edc28122ad708eaa23a5f27441a63a87041da5bde604f3c585c4", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "097567f203b5c8090204f894017ba1676ff3d42c42b79915960d3de701422fec", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d081197da687ed543a4c0bd5ecc65d720253fcc15d2975c26b251bd14ab647de", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "0ac1a47b3ad0595e46a8aedae71446d39f1bcfa703cbe4d1681da7ea8c332a31", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "09f056cf1613388427d5f742910d8127acd7fdfc55d44e0ab8138e7a45852784", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "37e8936c92b8af777c1c6276a2c4cf2c556f6babf9ccc6ed03be990d065f64b8", -"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "132fcbf2f28d368ed826f8ea2bd096572fc9807c6cc9be8f6ada25847b0a0adb", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "81058e35c06ce19b4e398af7ae6ec27c4123c295b5ef030d00ff96ab8999d1e2", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5444fb8a8ab2092036224dd5bdaed2272d9673ae9da485ce7b3e3abbefb9e23c", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "a1d7f9b4248b4bc32ba4b76149862a46c3259579ddb9386da0ac1d451c666722", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1cc45f55b9a213d0aa67110c27852c403bcd6206e319e0f4b0bf341ec9f14127", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "6a57b810b4be43a92d396dfc3d605c211b6f1aa6787dc46d1187ab9ea1733798", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4e265c664333863752796376367463d27e0bd27cec4b769c10d008f043f4952d", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "42eb8eedc199d864ea39e8dbd22ef1e9e2160e6a82967e73860210bedc7365b8", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "629658dc4feb14309037583c186a7e3bb97b3c39adb33cd66a731c85be6ea913", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "cb0a3043c74558979bf602a5b2333af7e87aadb789e78ad7fcd85e2ea2f90ea9", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb62f4781906e3c9cb856c19203018554af912ca5fb75192d6d2551a6385246c", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "0807d127aaa86576c6bf3bd1de2b81931ee6e266e99f04b7c628752c69df7c72", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b6ae624dacb8f665e4f03484486dc6b79fc8f5257ae49e91e62b656575486066", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4e24347e5228591d498da9357d57d5a01b5445d0943c21c8512505b5652406db", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6fccf382712dad39b25341c8fd4efd343993909083d2887451fd8d6b2e5e8c40", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "179d45493e23ccaa7e0d0b11ad5e5c9eb7a20a9005306a80c3406e68316f61f9", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "097fd465bd713db8fa7f52ee2f59f55dc15218cdd7a2aebf3f0c8d27388ea8ff", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "19838c4a131f4d62c7dd2443562f2b8f29f94f74253b2e4edeb96ef2e5d6501d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4e265c664333863752796376367463d27e0bd27cec4b769c10d008f043f4952d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3b546816ab0eabecfa5362ce145c0d98348dfc524a70005f38ea0fb586d7e008", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "b49ed8c62af3d83fb3826f84bdfda00621b9030856b385951cc5238c59d9a7d0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0aee3f3ac01e30b4a56e2053d8e2a6f434bd672c6a07f4434c57826e55e9d555", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1d2a0ec3ca058c2c52f9b093b42976ba377bb634fb3483766003ad561f34c89c", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "e31d8c1996f0bc22f64c6b45f79ce6c653fad3e28f210d7dff118adde1e28d6b", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "1d93919e23c2053dafe725495349ef934afd54cae89555614c7d3d169edac8d6", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "13d1bf36c203d6d3652becdc4b4f27207ed910db99f29c0b0ad3aac8c9d3aeee", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "84bdd5b06a8fc3c78e903ec82c343e08edd98f40a03a4869f64d9200fb09a754", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ff31c7b4cd97cc574c390bb58145a82fc08644731298653726dbe323bc991b68", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "963f0067311df44ec9e62f3c859469783bf2f4d7710b4c653fa9edf19d75d8a7", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28398ee2bfc0e8774613a51155d78039657531b4a34209c457bf364c11e7a13d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7a2afcb4d00fab2004cdec95f2bc3d6c5a37c2f2e9b1749982b1571b265b51a2", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "64626ac12c65af4f17b3654ea2cb3fd487ccf62855792c5a7cf43709996024b7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "04ca60ba989435647e3dc7aedfc9471e858ec767028c35dbfc8cdf99b8b2b507", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "ef43bf6d25f93115145ef0688dc4fd31870499a4bcc52a050c516228e2e9d641", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6c0f3ab10c3a403526b39326834ba7059d7053eb22cd9403a0cc760e2b62c0e5", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "a91f60fd8b0b1f06cf83d2de541502dc7dcdb9debfa684de6d5d76270435e2d7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "e68140d2edc1227e6f7591bd0f89615cb8e68880e74948c42461860f170e9d64", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "87bcddf21ffbf1a850b9c4480329498c4148fc7457144959214e037e6b137f87", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2164a72e04396209768bfcb81d77e842863f801600db3a6cceebada0c9834d24", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c605309a6c6161e1fffd10c2a61f6fee862f08eda5a6276dcae2ae4b7a0e812e", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d7596291af2da445c465c00e4810302b8b7ab67743efed9d69d790947f894a85", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "18b4e40f7e3581e3cdbc959f2a9f666064b435a3af8da5ef30d40634ecb169eb", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f6f62e8228d3fbae8b64bce061dd77e49fa6c5c40e0b499bdcc01eb2a9603a59", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "198b0c574bfa13aa6b16807c7cea469144bedc941f806b893ee98c924a0efff8", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "031c302ae2f839862b4fb6ae65da7ac3a6ee84fd3fbf90707d09f907914e0488", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "c51f8b6743401a55153b76374d4a038a7f7ec89df5a9618e90130dd3d84e44cb", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f09745b93295d89d0f1660b1cb88cb2cc1c7fa9542954c898b8696f36ab4af75", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6de4e189036e5f94e0aeed958f9a3d64796b2cfd1d4f318ab7440a33119af4b4", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5eb57d3f6b2ecee825566767d7216480b425ce5eefc691e2f4c510fc1db68b83", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "7523f86df84554313e5139bafbed7155f1259ec4e201b4c6072d614f08d430f5", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "58242541bf8486a102aa87376f2d9a8f2fee74c6956631501155aa5a92ef742f", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "bc15baef3f52f919dba24b46d828b63eb5ad15dcb0660468e9e17088e1523df4", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "c2bccb5164d6fb0a88a20b0df3b9daabce638b269d805aea3bf9afd9e38e6373", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "951f076e5f1eb13f2b5465ba5b9e0561db980f4df59d83e0d817f7134f43f87d", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b1ece4eef5d822ac13244f34850444f72c372ba6839b73b8a782fe181342c396", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "fd184770f3a77113c4185a56811707b67fc90eb684b4ac20e93c4ddfdff2f04a", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8a8f3d3a22c24a4146e2f88b366fff3f64bc94b270eda1a022cfb816b56c1d41", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "9445c0da3a53d11b071908ce1522a65e947205a869c3527409b7833560dc2e8c", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "763ac28b88d516e205373a6eeaa64eea8327d193e86d1f66714e46e6d57bd0de", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "452b30bfdbaca370d1523334d4a4c5c335137d61aa0f88a5b241540ed3b9560b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4ed857971174696bcdbf8bb96abcc9a79ba207d4b802bb1596523bdefaac0be4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "3306ad130ea0a0725b5ff31b36846154574ba2c63f91805239ce3bc92eac22c9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "bfc9c34d8aff615ec61e887cbb38967c55c33d69e8f75b7d3ac538f40dfd5a58", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8aab2a2a197ef41a044fecbdd3b2b59fc5717ae346cb6d1ea982d874451104e3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "cf87b719150963090eb2d00403d9df11684cd2d37890351ada5f4f13c8c8ac6c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "80376b50c2980f34c096c9e03cf774a1155bfa64e0a2a9bf950dc7fd88c8c4bc", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "42650574a87a950d75bec25e30f3ea84dedddfccb28c1ec189970c221c0df817", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "ad6338170c71c67cd1b6b43289798e90af93274c5be6c7297f26b30b6ccc54e2", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "2e91a8bb465c735156b069d16de97d814ee8a2c7bbfe90f7283f07049c59ef46", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "24e8d545bf0c83798e57aa0e5ffbfc8faaafb5067ca7e9cd8f1070da41316a9e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e6a710a2aacc8e586e939b3bf8856280e2579ed59fc9ef6c6cd18b17e8306b9d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ab367ea9347daf8e57bf5e9fe8bae9c360c3980ac31eb15a20de53c12ebdd126", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "57caae64b1524fa6e87b258cbe1f2371c3189937f35b4f32529aaf99a1f3f55e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "d9aa2de3287e753b04517c7663d2af2ecca82bf93f4eb45bbf951775692810b1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b2564771f11210fa9e8b8e112aa4404f9e14dbcef8b49a14316f5c5452bdd045", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5b9831bf338022786607e403ac32d12cad57733716f7cee93f37ed3ebf37afc5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9887d87d8684b2c9028ce379d9d402420cc1911a633d4f485941a3de6a07c621", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "44dff629846f52d0fb0c44c98d3d82a6bd3eb71985373d79da07c4fe25711d88", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ec99e2693d5d84bd3b9770b7e62c611c83d14f85ecaa5fec369f2dbc4ffc3a22", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "524a9d4ab0406cce8c7c8165c8eef706656bd44de6f5bf29124db6a98b33c612", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8664c38ef71ce627dd11efb64b0df244ef9da0932f806bbfd284ad7687e8a72c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4897dc73849f7e7787de0a5f2dce4973bff127c173a09cd054bdbf68c3f02ece", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "bbee0856297cb8abe986c1832e4020c02c3f172463e369b577f2c662e72974f8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "0ba810277887b2c7b1821c8eef4f483c143bb1448ef71a34d0474c6a0afedc7d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "09b60fa7a047497229eee817684881c85d3360e710b1b917d0d288ae12aa3459", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "5ea99d554e0b5805ab583635badeb1bd5db23df5e5faa38678a48a53acc3c52c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "738869b0bcf44b9d4d72211293097e1235bde971dcb6b1bed4f4cfeddb4a4fa3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a6329ab4dc42acb9f7e440ecef446c9992d8c588862e469ac38a5f59a2c65884", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "43abb883196a14a72a008419ea0f921fb6a914dd8cc87e77d43dc00f38ef9540", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "53c69f1b612db74ebefa551cb50ca59a301b84a255e1bf79044726fce3b9c695", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "c8b3d2dc9b42c0a95507484a48872bcd31b22bdf078389fc4cbf2e3ce57cf630", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e17ddfe3512edde12103cb8029ec242bed40103b0f26fbf961061a6300f82bde", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "1e983da3fbe7ce90163312f6b6459d3043b47ea32153c09c03a450bc38178d8d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8f9e8f10c47b171bb2fe0be9e8eb8e3fd231d45a18e4bc5a4a876cb5fb03793c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "9654e3167bbda9ff44365f90ee9d42583b473240dce27fa3dfa2976ca4fff8a1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "3b2f7c6d34b8c18317319e5b8844515f0e1e2c9ed46f0cfb8985760aa1a59de8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "357dd981b6b9cb4bde23e9991bd430ffd63cfe31749d97751f2c3f0575ecb5f1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "316d6fee2b77f92814bde333aa85523c7e8049669d7b224ce4788459317d1604", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "16a725ffa812eb64ca6c5ef5e31ae64538cfaa20112d3edf4fca1fb02fa2655a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "7557b1cd54311020fd967143f69e259c5a915eb3f6b30f8e463132da90a46315", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ae11b158580d5bf7b16569923dce63380c9a5f32d073b29d2e9c3ae348a55ff8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "658d6a4cbf09f305c1e8830b8464cda8d3f72896b5796522571cdc6a34c1b818", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "32e6d73d963f7d9012d7ecbeea33d4ecd80c2e2d1947b2cdcd1524cf20212cc7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "93eeb08b19927ef368fb7002eba179b6eacdf816e620866ad00128c60b79f722", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "b50b4bef5695edbae422ffd96c4d544857440424b243a5362cd2d26226d86fb5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "23ccb66429760c0202215169cb41f57423de56470c6e8aba0fb6290d57df064a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "a4d68a3c67736d80a439a78713c27872768a26498b750daf18dd5cb805d436a3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "7fbdef930fd714d565b61f001e51a4b29920515df4f0f7d5ae97f09629ef37ae", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c283ff73e852ce8aaad4fa2c48057c0cca222e38defb889d5ac20bd277c5c97f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "78612d37f00927d13df75bc1379c8ec6fa59593fe5d3e40c6883574280a3577a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7b92d4ca4f4605b86633af82882c40a6b4177103e804db954f9bfdda454817ab", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d33b778dd6396f6289fb074b06431f798133b9ae18dc220a9e6fec39b34a62b0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "30623db2e35594cac28e6897af7caace59f840daae9572e5a671abf4089f4d13", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "201ad0c9e6b74461b2be186583832afe60624a34a811499666792d2e712fb9b8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "de0e2936a3a093259b0ff5b6a4bdf3879cc6d1434df00116b2460b26e012563e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "0b2d55ccbcfd78972e080b6a72d16ed000207c796ac7d81e8f2dc7ce6f5a7048", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6545aafb0f5ec3f7703a5006995b4aa1dd7f70f54113ff871f19da13baaaa1c1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "3faa43bbc5f22d550fa523e34c7bd239f9448a9bc3ea2cbbb9516794dc2973cf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "ef12c38cc08c2a0cceffc79ca75263cbecabcc500f11ac373ee3e58f18549f78", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "52010e3d3e71af3494ebdd43f1f69e11bee65d0e209f75c95690a40da3f81fd1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "84bac830801fb596c563d2704247bebd92e777ae5008a2f34fe89a38114bc1a1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f4e95cb91b71f9bbc64749ec062d944fabf4e59d44753b7c4f71755f5e37cf88", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "b610b5c902ee60ad14c76f81bcb9144ac20806b63856054e9efd4ef36c5755fd", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "255fb82c371edfa0c8a0b93751f9994784913afa12d6cc85b99a26eaab12874b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7a42704bc017c3128894f0016c5ab110edecc243ddebfc8beb0f48ff3befdd0a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "da57711b9f55bf97f7bee8f734a8fdd5e02563046fa911e40014b0f42456450a", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "18272296d219ce2f54f30820936a29d698bd7a26890336c9a326c30007a43e3f", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a9b53f23f657a00cc215987ee1289c6a86225602012ed33fe12ecb7421a960cf", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "214f0ab5a2c67891e91e89ef71668fa89c0b58dd367cc5fc076ac9e1810ac344", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a2ab7d0bdac04efcab422955495d6e4f542e5c0d7770d712bf11b41e75ecb1b7", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1621736102d9ef3197b8593978875905b3978dd355937657e33af5c1054b02ac", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "9fa8e800aa31d45e37da86169d03a19dd0ef6954473a7f4ebb3d3d339d4bbc4b", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a8357c843abe1124dacde751c70313f57ae0b46e6dd2dbf91c5f3027484822a5", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "da742ffb1db1bb3430f6ea64f9d50813d41b15762969ffa4172d48ed62f0aa29", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "e16b547bc1bcb9e11c8785fdc98514a54d53c2b2226e0778cd4b59146ba6ecb8", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4d4a0d45419529aaeadf4cf7ee391f26d15acf586b7f11212ff1a7a0b09c389b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "34490052e6eee68a9e9c732686461a4fe7f956691feae677f31df6d9054be475", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "353c7dfdeef8d68454e8b9026212b52fb761864b4c5ddefa17ea973cd0e73e7a", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a23d222bbd77d3b199bf73f6c60f5bfae48a45a913b62579e6934df142ff5a4e", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "3c3146d203c179bacb4d389330a6b29077359e53e6ae72f443e5efef3d841cc5", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "f3bada923b206539ad960d369d3a28fdd0500d106ea079714f41add5be37543b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "9d53cf2c0aa7cd569e613edb9cc710a366e7f152264cf24042009cfa65f83452", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "06c44f296124b25d22690d9a8dc5f8ac7421db139dfce0dd2e2f87762e65198b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2ae8078b3f39e1f930a1a7c0750d863a8ae9edfad2bdf32b57d63b729fb7fb1c", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "be46f409ac67fbc359df19ad6d188ab31062f7d89b94011e1788fd4d5893640b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a7172a64a86555942540d9eef80042a3051d4c58e1f8cf7a39e9c99987830e27", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "84e2e99c4c0dbba1f2e44a2f833742dc37f88013972c8ffd0d02673660eb694f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a3de7fcd5cad8c5e4b4316fedde7dc7862eb89ca2f2a8d1a9ba8fb50a068342c", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d75e62e491d87be5d1317e51241431bc71b5a24da21eeb31dbf5a10e929290dc", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "846e5b0c1e740f230b8670be9fdf93de80918e2c1afc43ed99d15af1d959edde", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "380dd41734316482b1c4d2e33777fe42f02829cf637c550fbcc699cc4f7bcbaf", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3d0f941c6ca7df69d6204063f171b1aedeea36e8c9c4d3c81fbd9eca75b248c0", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e7ae941c1a5fb1a10a2e25686771d0ebc5864211966eb7741c88c7bcdb3ea6ca", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "993afda5f990300f12d8f2f318b51a3f7374f7abdbe983326e39c66f0bce0568", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "61242eeca3cd77d51fc2d9012d86e57dde6e722aa4a2df4e818f3ed679aeb430", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "d1746738380b806d193be170c8f476e21448dfa227a91f8547d05e43cda2fe5f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6bddffc62fca2af49b98cefe7ed5aea24541bc41d0f3c242f7fb7dbd96f190f7", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "dc5de8b32a6c86fd034b46daaac0fc3ed1b813e0cefde376de0977d1ec1ece44", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "66ca24e60f8c0b6589b8af806b68308972e56087c1517289cd1c85406ad1aa4f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "adc5c6dda829f19ad14a79547779472d5dd72c9706853aa665e8de7361433183", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7bae062ee776b91f0e61d3b8a743a7800deb265bee722500e79ceba459729b3", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d24cdb336b45aa5a6dc51ea70414b38ed157ec007d1c3840dede56af9ef1d13e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "4995cef741327264327241df0ae283074abdd4477d63028be16f2d216aaa8f7f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "3383ea7a0661c2e227bcdd714e8c4b8599a70ef0677991f0d111a14eca410906", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "fdc7d3703010dc7a5a267a3264b7604580926844aa3a3ba8b093a23e2ba7b50e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "b0c90ca5c5bfce6c79f10c64966d0e2287ab6e70f70ed0dd32dd7c76173baf0e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "12205c75d5a6066fbaf7b89d545583d69062d7169706dd2e6c9aaae6a4b71918", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "989d9d0713f644338e5696be59848b67119851fd64e44d290a43c8cecd554a58", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "31deca2fef5dc1d898a3f6d95c2f715f0c85d8be48a2405d596fa0b955597359", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "cdbd1117fded4dc3efef76f723f5ca646461b86a89f741011a25a794cd016b29", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "641f0ec39c752109a6e287478d529b1e5d3d98cb4eb6b23320a8ba7d97baffba", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "808e6873ffc198a8271244e51538a91f4a737e716bccd441e84775589ad75138", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "ee0c8989f31e75c36a4a74f3715d5bf341366cdbd6b750da99ec1f91d7b90db4", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06aef40642884843baabe7e7d6b69bcd772d6f1e16f231d2c6244b6a727bd08c", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "2a23c234c26217026172b4c55c0a32d33e8b3002c4c618cbc4f6f80f28ad0501", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "039b45fb265d4c7515160a8c54b38ac0526c349fb4f4855a607c656b91b30189", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "313a241f2f94cc60afa2f8d1afda7a6badd91b437f7acfedec1dc1e406187c90", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "dafff07651565cd5e9228d0fababa296fef90f9523985b123dc2839c2120328e", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "9e963071645850e247825f828ef64031b80b1f11edf54c9290f96c909f4de606", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "d8a1776116a79dde0519140150a176d6858828645259420c4f481c485dae208b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "831f8ad892a7a9283d8c6317d3ddaa7e3373f500144a88e18dca31fe69c7569f", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "9de19207e95dc1ac1a4b6bb4268143fca1d832fa89d9bf01a8264043517d8bbf", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "90f36d6374ab9689f2177b4a3add9f5605bd5572493e731119a61281678abebe", -"T3T1_en_test_autolock.py::test_autolock_default_value": "636069ad7e5a8d2e696502408fb494920648308b32ce9da154ac4f4470ea4a9c", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "88d6b6e2701a5dcea58ff8c267b6c0c8210dfde802d75ca4e252fbc899be53f7", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "88d6b6e2701a5dcea58ff8c267b6c0c8210dfde802d75ca4e252fbc899be53f7", -"T3T1_en_test_basic.py::test_capabilities": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_basic.py::test_device_id_different": "033ebf59123903b6fbb34d44fbb74c8873e83605e7b6f5e8b50078ee6589e268", -"T3T1_en_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_basic.py::test_features": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_busy_state.py::test_busy_expiry": "6509e7c943f2d09e3a5a7c69faee74c75b321ed1614d881d1ebdb57693c7f69a", -"T3T1_en_test_busy_state.py::test_busy_state": "738e905dfe55634972474416817c53f0a22a9ebec487d9046be867ab3f2576dd", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T3T1_en_test_cancel.py::test_cancel_on_paginated": "498ffee2ea02e2783466cbb993f0cd83eedd3b67afde37b5d1f713fc996c1455", -"T3T1_en_test_debuglink.py::test_softlock_instability": "3609018ae27ce0ab9eb091384029089ad01bb097d80d9afceb7341548b935ecb", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "2a63f0bd10ba99e223f571482d4af635653bb8a3bddc1d8400777ee5519bc605", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_language.py::test_error_invalid_data_hash": "aaf31bdc64a531bc9084a003b2ad78a9fb91ba9b138090b1e2daf78ca4c106f9", -"T3T1_en_test_language.py::test_error_invalid_data_length": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_error_invalid_header_magic": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_error_invalid_signature": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_error_too_long": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_error_version_mismatch": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_full_language_change[cs]": "050f3711f004da563ee47c55d12a50c07337768a63b27fff9f832d61bf4fbd19", -"T3T1_en_test_language.py::test_full_language_change[de]": "637494aacf526b8c6465a5c48a35eee4fa71d90d9f90d7c675c555bc5df75442", -"T3T1_en_test_language.py::test_full_language_change[en]": "5f6cec419aad5e5658f6fda45c2cd40fa4581823e7f9f0c4199970cd179bfd4e", -"T3T1_en_test_language.py::test_full_language_change[es]": "6c3c6983dedaf60e8818c0acdff7f1ba83ff9106333d834b8bed02d910bf5b1f", -"T3T1_en_test_language.py::test_full_language_change[fr]": "7e1f16d84163fa6b8a8acce859f5c5e97ded578c28f75629e4f9bd587cd051a8", -"T3T1_en_test_language.py::test_header_trailing_data": "476b737d8c779501707449858b7dd2c342f151c99a9a9114a7f30392716b190d", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "9858fc6e1eb3aaa9f26d839c17203e831ef57fd5845df92e346130ae1e7b87d5", -"T3T1_en_test_language.py::test_reject_update": "78b8f16e00c5d653a7d5c0929d21ae8ae1c76798fe28f0eb6edee8e2ee8b0202", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "af743f998d2bad1fd08ea45277ca281ba97a4f344a7d4f8295e1a3ad7590b268", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "af743f998d2bad1fd08ea45277ca281ba97a4f344a7d4f8295e1a3ad7590b268", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "8316441c80b5e3971cc007056a847874829c38a19c486bf7f8e4487260e1c920", -"T3T1_en_test_language.py::test_switch_from_english[None]": "51c78815350308c7687c9b7540d507abf50c7392db7ead05d26446c71612c96c", -"T3T1_en_test_language.py::test_switch_from_english[True]": "51c78815350308c7687c9b7540d507abf50c7392db7ead05d26446c71612c96c", -"T3T1_en_test_language.py::test_switch_from_english_not_silent": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_language.py::test_switch_language": "7ac1b4e96f1e7f0726a953df93a1c8e436de37148bef4bf8a226d3d8d67484ef", -"T3T1_en_test_language.py::test_translations_renders_on_screen": "fccced5225b6ed868670a35d60a637da5284607e7065232286e50d91b22012c0", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "8ac0c969e6d8a79257a41d4651dcf62f936e2120547cb97c6ebdb8d3e57c0cfd", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "da4d930d3ce1790722c946a0a266c48c37a552275a98c8db18e3b7df81230a24", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "537cc0ac2cba1292e97e7973079ef8202e2441809036b03d368caad769204661", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a1f6dc01500cc25bb7ad302da3e5b6040567d9245486e2ab983bc7b03a511603", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "3e9e307a8d14c10e682873e7988fdde21bc7456d47a8a0ce61907b12cd23bfa1", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "e774f4de022f48caacc2445b1994ac19dce7a6155b4224ae7eb727ffc8975ca9", -"T3T1_en_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_msg_applysettings.py::test_safety_checks": "b129e0ba2e3c7ac836b3bb4b0bc8ded1c922eba054b42b434d10499fc780ea2b", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "429a141f97ad5a7b857985fcba60a7ac35e09e6ea54013203d80cb63deef8638", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "75f8fb63ed22a2e9983a9d60488d6cb87bde792ed7b00b67f1754ef5bfa8910a", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "31f143785472dad5adc46df21cf80ae3210c30c22fc719d9f56446d1915a36e8", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "63db4c01cc1abddf73ece3c61d9d0de6bfd6499559e01bc58c2981f416a922f8", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f1cab327533697803793725144e42200106e05f1d81b75ff0a8eb55453a37dfa", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8e6156bc4caf5f75de7c164844de9405e6c08bb74352dc6976a8d93dbc994e53", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b0c0eccecc9e7a84ce9af7fca76d6edce2b1fd0ea48b41354cd0a2f31b8ff604", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "61014a41b3c84831b6c82d0d3f8527452fed48f52cde4737b66f62a72bac3d5e", -"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", -"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", -"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c89489b44e487f6be6757c7dff2118bf4769454cce1ab3b03e0c12a68651d432", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9c861a52adb748eb9ced78260726583889dabf286377b030031471b18c4fade9", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "6e974727f6611b6d20f08fb0e3394b9457545bfef0d9c60c86655003a3fde410", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ac44babb407ef9d30cc1301b9a1a7c02c92e3ff2f555f4b21909814636cfe1f7", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "5fc1a4fa6b5074dfdf76cb081c35555fd432c62237fc77179ba49595779406d2", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "7d4521ca4be8f334a262f3bfe4b3d2eb38ba13f55a4adf75c1d6a97c04fc0090", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "cfe12091650149ae4310c39903c67725e9983c50ae33727add8cf5476c4ad266", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "2ec521e63d280bd2a551b3cd01c01d58ac79cd59d14c1c6bd7a04c3040ac715c", -"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "bd112f5b80f4a57013ed24cd2edc191e76648508ed70d2ff84602ac02f11b730", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "a8ae3193f87cb964296b4b9a3ec029533a547eb343bf3f9dadf462b3078d58c0", -"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "5f9a8c7d060a41c7dac34a48fc90433cb4f3980cee896dbef2c197e1489382c7", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "c383c6aa9458bd87a1012e6880d171e7360a2dc0a5f0259a8655b17949345608", -"T3T1_en_test_msg_ping.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "a0ae9e29d00a0481c7a72130e0fc90181c2f7c00cb4dcac3bc6f2419504e62cf", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "efab70c899991735fff30328f7be12dd1ba12720665c461826fe7fadf4251106", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "9ccb1c3dda5c30a54e5bba83b2e935df8fb901e756496b930b7fd66edc8a0ced", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "488a68d166dbcafcfdd0bb481901002e6de994d1b990a543ee7c309436c7805e", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "033ebf59123903b6fbb34d44fbb74c8873e83605e7b6f5e8b50078ee6589e268", -"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", -"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T3T1_en_test_pin.py::test_correct_pin": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "de409b3dff3aef0ec32a2d45ec6cf5c33d23b3c7ec8a8130f99f5f47197c6998", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "afe6d894276043f93bbc2c3f44ae31036963d2fe597d5f93cc0ca8ea54fd67a9", -"T3T1_en_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_protection_levels.py::test_apply_settings": "f73dfa0b964e817e75eb1aefe4c0eda83365cc0fa7cdaf79c89659677c13a490", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "628f59eba987445b4d6a90bb2401ca0b099454199793da3743b0e8eadae4dc65", -"T3T1_en_test_protection_levels.py::test_get_address": "5e03fffedab4035e2fa1a270d9212672fafb282c19ffb783c734e32d4f33cf3e", -"T3T1_en_test_protection_levels.py::test_get_entropy": "295a8a97bc590301de424a39ec768c5b73da92b23dab04f5df6a0de5da8b8fc9", -"T3T1_en_test_protection_levels.py::test_get_public_key": "5e03fffedab4035e2fa1a270d9212672fafb282c19ffb783c734e32d4f33cf3e", -"T3T1_en_test_protection_levels.py::test_initialize": "00b62142b8f9a2b0dbbcc5a6a987ff0b1569c4841eca45499857dc264b875841", -"T3T1_en_test_protection_levels.py::test_passphrase_cached": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "ea68873cced831c9babca7ad78a93d0fc0603ed77f4427c673336f267dc8a83a", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "232f83ebc546ec9f606a01be78864c14913c8dcdb0bfcdd01d4d0f6dcfc3224a", -"T3T1_en_test_protection_levels.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_protection_levels.py::test_sign_message": "29b2ef280a8573f6cb6c1249acf13006228faf1d7968da8fee999f84df540845", -"T3T1_en_test_protection_levels.py::test_signtx": "e36db8f49378262cc3befe4295f6155b6c56b1f21395249ddfcff9a41cb15be0", -"T3T1_en_test_protection_levels.py::test_unlocked": "835c5327c35866df9acdf1433e75775eb652956b34ab6123595a06764389f61e", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "456368c2e05ef1a743baa467897ddcad4af06b9cc863b809740d145a66dd88cd", -"T3T1_en_test_protection_levels.py::test_wipe_device": "79922a132a2567d0a1b9b296b95fe7d1756e8af75681d9a0386fd104c0addf8c", -"T3T1_en_test_sdcard.py::test_sd_format": "eb00c8c6d53fb2cbb1020f053219babe32ef3accb8ccefa8dbe315c03fb19149", -"T3T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "097106b59798ff84733f7c6c4855cd52fbc3c0923e91aa84c0f81ac3ebc651b2", -"T3T1_en_test_session.py::test_cannot_resume_ended_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_clear_session": "28127dd802f15874ad7cfb67027b732ea378a9e03852b89861579650b125edb7", -"T3T1_en_test_session.py::test_derive_cardano_empty_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_derive_cardano_running_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_end_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_end_session_only_current": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_session_recycling": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "f39549678b9631de2991711e728ff7a703ab80be965d794b40c69c0010ede943", -"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74ca896a0493ee40b4e3a709f4cf1ad1d5e80dcccf7229de09fe1a3e40fdc615", -"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f7e9a2550ae7c57cefb0e2a13c62a1ead48fcbd86328d372ec7b54b26d51101a", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "f6d22736654a397b99e7ed4700b88235953bf7b11a293b0fa975f8225dfbb07d", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "671a366a006193926c0af0d7a84f0feba09a220bca32fbc609b17ac431f6f79a", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "c4c9e8c395f99b21e7de2216154a18af726beca5b82a09e689b35d02b6d14eb8", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b95cba09bd47cb9ac2df7272a1ae1e7a6d3ff3b345ad40ac3d139d99637c1ed8", -"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5de5cbe74fe51d694ff926523f318ea3ad93f98bc5bbb13519e76c2f2c5cea43", -"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b2d4b75a4c96cc3ab52056d4b4bc83a38d948bb35aaf422829b05c43ac0cf14", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "e956201e6a960c53fee449e29be2a3094d10bfd7ea3956b0c356aebc90891f60", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b8006f9f20dbe6b437522702ea1068b15b3320909f8d6d86eed47c700b4d9bed", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "f911f2fcc0813237d78c7c59a4237058aec8f8066116703ed4402b70ae802569", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f686330e653bbe1d12bd05b896a9f6fd60b10f9ec1bb2e56cfd8de5e9b7f2941", -"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "842b1dba8dedf7ee6a2c6ce15305dda05b249d7a1cd4ad2854a4a2dead2657d4", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "2c89c52a396e7aa8aee9b5216307b8aa89fd613d2734cbcad6200f95a614b418", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c755c8ab6ac30e0e6b5e74b820ab2fe8dc2651da9f28d82206c50a1b12002d57", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dab7d08e722611f6df10c65cf899eb5fd2d7c581b9782b20f915061bf3621a59", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "9e50c84010c632d4f77cf6986589d02b20612e0750330d7698747648186ee2f1", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "c96aa7c1a89ea02258c3de675fce069ca711a373e0da6f4243df2bfad4dc99fa", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "872dec677716e31c8a273cbc2fb0b378721f62c8520cc3e58c66424230c6f113", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "a8584c502480d28e3cc5ff93f62f46430bd78103b4d2530130e1b84e8912a6d7", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "37e2bb21c01ac37d2766602293139c1068fb2fa1529e47447b19800e707e1fd2", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "9d4e51b1baf7958ccbce3fd950f56d39b235da4d1428889fa0bdbb9300b781ec", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "dfebebe52bd943dbb719062355b7ac38729cc95339a49b795a34fa900419c4ee", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "f51e94cc8df4063ceab5fe431c9a53544533d809a6cf43e5beb4b5c2471d44aa", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "3e23b6eb2ee4d4ae726eee3105dcf06d2914f6dfced39231496ea4c181ecd7ee", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "011aaa0232bfe00f8df11afc2de1c00d01323624e9f4483895965d125e23d971", -"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "7a5407948b99a424d913a27023920eb5deb2b06cba1b78271c8ff6c69b56b85b", -"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "87f09bc2e7d3160ea1ffa7f340ed8513ec64b8bbb64e884e82f80fbb07899e1e", -"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", -"T3T1_en_zcash-test_sign_tx.py::test_one_two": "761e56a0674e522af18cdcfc9cdbd398a7f82f9454eb8bebaf076155336f28f7", -"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "d408c807422deac11166c3b232208951b4751fc34b3c85a71d2794a42efe0e5d", -"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "05e12d33ff11d7d149711105573b25378e819f89bdaf5571d502c77cf50951a5", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "f780cbed9d8d015ba1872dc35db94fb5b311b179f5a2a4dff057529aaea7b0c3", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "ba41b7d7c77c4ef9ce5b8e50d749241d0633ccdc22aad8d9491d74a01930add8", -"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "895eca0e5eca607eaf3733956c57daf7e9fd579ccd87b187b12938b76aaa4f20", -"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "1b0591593b6195d17465786839ebba30cd59240d6b682306e81dd41085d89425", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "952c904eb590eb76d91f0cf89919faa364c28fea5a9bc72fd589fc359db008cb", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "738eeb4b4090d06eaabdd10ef6b1a0371b9524f6d1055b3c32ffcfa57f26984a", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e6c4e554b2285f7f753b16cc04eb8a1c70baaa76d2b301c7e104ed6b45d9bb78", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "66018aecb48939c12eba4691b10fc2b32afb309a018c3af154a1ed032bd788ff", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "18cf16ebf22cbdf4a77fb83c12e43613cfd9cfb302c5c09e66e1ebd05f475b56", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "18cf16ebf22cbdf4a77fb83c12e43613cfd9cfb302c5c09e66e1ebd05f475b56", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ef4f759f62a09e822c01cefef03947f8369383260243e0f00de2c3ba4915dc13", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "20a8c35d06f9d5050ad9644b6921e73186abed298da83ef145d2c2af5b8fc671", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1c9dd8de0ea726a346ce6480bec2414b29acd6779125d929fa83d84ce9ed3e74", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "399bfd4e6de87e62ebdc60087587f8c27e2befa2b8e6bd9c719c3c100c568057", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "04c01bbda28762974b064751748d37cc03a9f526e99180a8821420d8bca14a12", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "04c01bbda28762974b064751748d37cc03a9f526e99180a8821420d8bca14a12", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "cd27505e5b5c047732ddef06cb93ac052449b79e9babfe4fee6589a453d6fb0a", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "9d60806fc7e7179071eb959f5cbe67d97f11153cbce97864e0615254a163d537", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0b3d3893f01bf57bbd644b19bb2072f8c435931d8cb2a38a97ac2659844efd3c", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0e89f958dba7a48f1c417b808f71b08d84885c5d184274c3866b7ead5bf09f3b", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "0e89f958dba7a48f1c417b808f71b08d84885c5d184274c3866b7ead5bf09f3b", -"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "fd274cc3aa4dc71c6880f7ebb93577e9043446eb736fcb3abef55f09e6b90fbc", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "fd274cc3aa4dc71c6880f7ebb93577e9043446eb736fcb3abef55f09e6b90fbc", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "eb248113228fd3b7a0ff69c4a409ed3e21636e5a59a96cd573b99f79367d41e7", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e6504738da471c13b2b48885e4f7a8a4b5443980b5d887ee96392423b1a9aa18", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "076054bed839f3babd158fbe2e31b3450440b384404826f4acdfa47d27ad97cc", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "760956919718a2db556a03fa4f56d319652f97b4ea2ae120e7f2f8e50dc0e4e1", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "22977c30f679b8e4e32d6df32d7ad03b1ea88f89507831f29db3d0dae36ec00b", -"T3T1_es_bitcoin-test_bgold.py::test_attack_change_input": "8b01437a2c0f48439411680165ad9e17d0192e82fa7e8bd661c93b25c399cda6", -"T3T1_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "8b01437a2c0f48439411680165ad9e17d0192e82fa7e8bd661c93b25c399cda6", -"T3T1_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "e278d0bdbb636e1ac4c0104e22406bac34bb306a55a4632a6d8ac85a7fd065e4", -"T3T1_es_bitcoin-test_bgold.py::test_send_btg_external_presigned": "76bd5e516b65847c293d393ee7c2cb041c1c6130e509df3050c9466dad72fa23", -"T3T1_es_bitcoin-test_bgold.py::test_send_btg_multisig_change": "d5bb12a0c3ee8c066ac2b536c2a53c04d08f28876c2b520c5e4b96a0618d33dd", -"T3T1_es_bitcoin-test_bgold.py::test_send_mixed_inputs": "ffc78dd3979a5880647e4c8f2579915dab175cc4e8f6da0befa960b16cb30020", -"T3T1_es_bitcoin-test_bgold.py::test_send_multisig_1": "ea427fc37728bb7451c1a8b73f7b6300ceb5ec33b6fd5917630a4871bd75661c", -"T3T1_es_bitcoin-test_bgold.py::test_send_p2sh": "774d689147130c4653a7bddfb4cffd35c4188d432fa755241cfa61c50ce194f2", -"T3T1_es_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "5dc24209a2e87b65a38cd18fa0f01685aded24e04be57c0e0355284f5609f5a5", -"T3T1_es_bitcoin-test_dash.py::test_send_dash": "ed3fcc4d9598ec2042ff11a68e6dc90e310c31b74c5e33c221b7e0122f6b85d8", -"T3T1_es_bitcoin-test_dash.py::test_send_dash_dip2_input": "a40dc3ba3c50655eb4e732e065a17a143e2f36549588f9a4acd96de4cadeab07", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "faf69144e29bfec469439bc4012b692183d152bc6b9fc22a7a2dece1716e98e7", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "22ec43384d3d6c49cbccbdd5345bea96abb96fafa2850539a80686ff8c1fc483", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6ddc1073c68608c4d7d51343a2246c0be6590235dfbcd2cdcc2151941193bac5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d72cbab5c93572e17aa9b183ec7b04de6725a8ab69cdb570d873fd46d84acf1e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "85096079c05717cee1c339126547fe5ce40f1dc6c7ddaa796546e0615e559424", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "f54770cf021d90afd81bb6e487f580a69c535ae7c955ce438ac4882464023838", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "6155fc444c1d45ac5cebdf03ea177b5886d3e014b28601e943afb6668ac4155b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "28d63390e293289c062cbaa9066245a091dc902a5dde9b76c20c8767ed16b27b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "71231246c65e9474db0e377fb02e876a0c75c081f7424a156531e234d36b48a8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1ac80b10559da7fb3b3198b6cc485a87cff3020c786df18e8e537252d0e392fc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "1479ff7d5906151fe09df89f9c3c62dc3806a1c7ab8c0b6063bbe6404469f79f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "f8913e114975e207939fbebe9a7b99518d9d3e6bcacf7f7300bc0fdb31396473", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9b15b67c20e7c833d30a8e4e6b1429b88e034dbaf2a4ac9ef5dc0d971253db19", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "9f3b33abd5f0baf16686cb7cf5d25f0cf9425e9e763c46a1f78562ed4ac5827b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e5b34f3fcc94cedf8f92f68e75b945bcbab55eea0582daeacd52dd693ffb3fc6", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "faf69144e29bfec469439bc4012b692183d152bc6b9fc22a7a2dece1716e98e7", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "22ec43384d3d6c49cbccbdd5345bea96abb96fafa2850539a80686ff8c1fc483", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "6ddc1073c68608c4d7d51343a2246c0be6590235dfbcd2cdcc2151941193bac5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d72cbab5c93572e17aa9b183ec7b04de6725a8ab69cdb570d873fd46d84acf1e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "85096079c05717cee1c339126547fe5ce40f1dc6c7ddaa796546e0615e559424", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "f54770cf021d90afd81bb6e487f580a69c535ae7c955ce438ac4882464023838", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "6155fc444c1d45ac5cebdf03ea177b5886d3e014b28601e943afb6668ac4155b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "28d63390e293289c062cbaa9066245a091dc902a5dde9b76c20c8767ed16b27b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "71231246c65e9474db0e377fb02e876a0c75c081f7424a156531e234d36b48a8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1ac80b10559da7fb3b3198b6cc485a87cff3020c786df18e8e537252d0e392fc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "1479ff7d5906151fe09df89f9c3c62dc3806a1c7ab8c0b6063bbe6404469f79f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "f8913e114975e207939fbebe9a7b99518d9d3e6bcacf7f7300bc0fdb31396473", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "9b15b67c20e7c833d30a8e4e6b1429b88e034dbaf2a4ac9ef5dc0d971253db19", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "9f3b33abd5f0baf16686cb7cf5d25f0cf9425e9e763c46a1f78562ed4ac5827b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "e5b34f3fcc94cedf8f92f68e75b945bcbab55eea0582daeacd52dd693ffb3fc6", -"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "b98d8923c124769303c839d5df22e72ce5d12d48d727577c1a4ac1015283bc6e", -"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "9c547b6cce67090f083c0369a5697985687d806d48d6dab5596090b04ec62877", -"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_bch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "4d2708eed07839ef53eaa4bda8c4ba91c0fc9dc9f85ce15539b4b4b2af544186", -"T3T1_es_bitcoin-test_getaddress.py::test_btc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_crw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_elements": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_grs": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "f98660b23bcbfa1930516f5da50cc49dba989fc28d7be83097760af7a7b2acea", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "c358127625489f8b1c6d39ff971d12be671d669df653d3408cd91a0ed2343505", -"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "2cca5c65926406343121dcfe5d49755d2e64485f455f4fddf7efa87362f39685", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f8b19b6479e93d50acc83a808665401638a42605596522b6afdb17a1db55225e", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "f7378216552281c524f94b23136b4ee1f8477516279e70e6a3dd16f1471983c4", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "5728d67b6bfcaa219a386e7d8ac7e8cd061f0384c7da40f06bf9a0e334408067", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "95e6cfaa833ce25a340b5df15fc78a71ec733eda6d323db7d4c3eecf48a1f4b2", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "1f239c5d5a54abef6ecfa7fad157dd474a9b2ab51f24dc7792430030e23edc8d", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "3a4c53b24ec7865de481d01afd0b8cc0ea8ce979749133f9365a89886e9a1670", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "13c0002413c4075215ba2f8a82d6f993d530bc30bb5b9e18983739177537712d", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "1928424e55cd30b0d6655d0e90db4fd9a1d0025ba26037dc9ef7ad6e56ddf2e7", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b2541f544e663888b6bea74a070d2a588c27e5d7a56ddd894ee45f5d137593a8", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "87d07eabb24737777b134aec64f987f2ab8321d52da48dc9d8ee36823e1ff4fb", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "6bbff7a5961a1bc96390f387c2e3ccf0e976270cb5e768413f98830752b77b8c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "601f131488af44267ea0af723895b5f35ffc56b78448df261ef39f8a26c45ef6", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "4b1b67068a16dd9d5b15f5f367203a5fa53b45170ad49dbe12ce9a86c236a925", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bea35820f6bcee0245fe5cb065070d3c068183a41c9e60e156db0f196a9f517c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e85351a921905bfa505d9e511ac746bd12ad0a48a69360bb026ce1e2d74d8784", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "29539910e5bea380991ae0fd089b6275576eb76108957a80b678c1eff0d7128c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "d63bb8c1f17429211120fe78b685843e2ed46533b212eca1f386f7de2323b9a5", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "fe74c707227811444ff53a75101701fbde4ff580a45684906df401c8fa374262", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a8c594da386f9a55e6e59cb6930a21f92c4525286c47348f0a00f08563035e89", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "f5e799c41a690ed963d8a75efb3cae6693dda8e933968777949567cd38eb9b11", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "13c1e6cb076df4b4af8773379854b251fb7b1cb9683780f336e348abf983e553", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "5a71898c513e9edf18711b601b49f8c18b7dad2a965bb55707e8d8763dcc0112", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "373df1ca3bf96f8fd6c4b6c35a48766857121defa5657e9ea6caa7fe9cd55c53", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1e573d152e8f090c28d7ec9464a12ff7a2e36a3c75e2db916f1c8c3dce8aa193", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1e573d152e8f090c28d7ec9464a12ff7a2e36a3c75e2db916f1c8c3dce8aa193", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "12e6fd9fb8d26ce9e0f3111556dc27e377b27974b8cf58a333c8d894a9a00883", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "0c1695f66906d5bd9bfb76671b5e8163a9e00ead6a698187cad1814844ae5de5", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "10b4ded8360da83f5245187c371aab2b977759570f0bd9a5eaf7a9675451e9e6", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "698f77756bed9a1b4ab7d549daf3397a16179bc63a4b192c89a92c0861021705", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "25f8748f0c6ce6d97ac6d042c2ea636e05ecc23d2358673c309945b8ed1ecf44", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "399c65e1d1d64494999bd00986a9ce233b4cf075a431acaaf9c911b7e9172e31", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "784fc6d8601ebc2b1411564a31abd8d04d40fb71d8ea6cde0f97d960963eee4f", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "15077e08c1ed8ad35e8658e214d90d0d066a010cb4aa87636b69d8acec35e217", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "fef188362447afe35f7f1256a5f84b5c38028b13d5c9c714da1245a4f96c1de5", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "eb822072fddb56566a7e9362426a0b09be5f8707eda20a646d124a247aaf7447", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9f7172887c87955056667f70fb6528e9b027b65772eea361453e8e11e99fd625", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "19968bd79ab15df993aa14e4e2a43a5d4d0a74ecdf6b4e1cfd4da3cace738bdd", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "2fb7c0b1eb770759b3fa5aa1ee2eca486a8c8d36c7a42e4307850ea203cbc52b", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3a2f01810428e9cb3d86cfdad8d3183a2936384371081130b1c35b6160c27ec9", -"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e5446238572852881a68efd4c1819b32a6b26a7c90e2b0944b71233c7c00029b", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "57d7983f5a0133b2bc108e9902460bd19d5eea7c68e4052d25efb6379994f497", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "7c4adc7a9b7f0a19c8652575274b8481ade7bb2836319c8035c3758748887472", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "001aafce1f19ada366ada1c0712ce6e45077661ed56b6f3e54e4eb7196d57e14", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "05d511e3d4e4b86ffd1568f99646d37aa5af3ee04631751b75472a23e02aa1b3", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "5a6a2aa0f9dac37a4214a23fc4a4221f9aef18ebc64daa4e9adfb0ef533e335f", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "650b5e896da8f21961aa30dd52338fec419fa0d1b905255c9428aa9da0d81b99", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "4c12d5f5a324314d26b7305510917808e86fea2245aa2f1a32ff1daf72ae81bb", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "98c9310893e05fb29420fd73c3a039b021063b70661b722056aad6ef578295c1", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_grs.py::test_legacy": "4563409f6d0d4c1e10bba0bf8c92ed213963d6486e1a8d9d7b43965618d52ade", -"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "4953de970296f942ce8f8082003591226ed3f2d1f5ad047182a7a403ae3b8fb2", -"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "d34d2bd8bdd202e8be70320a7b138a73d890241584f7173b0d9b14b27d3701f2", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "d3b17e7d2083a1ed5b82f8c3bb7f98d8c51b75dd11c871750abcd6fe46a8ccee", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "75f74225be48987ec9cac86a5dd4b99b83fa3df4b51f306480229fd4355f1eb4", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "d286b03d4f4d540ad118099a594a401dd38c525bb4c94e3d6725ed1ad6aa9a4a", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "ee4ff59745b2f23c7e5e6098efd991b764464b0828bd7b6b682464b654429023", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "97d94e951bf2d322970257a1ec13a1195d16246a1006a5fc1d71fd1f1e8c7067", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "d60a912534d81ca7860e3c0c8e8c05aba7e384d543548135e4d3327767c4f803", -"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "db332b048e4b7c0e88ffcb2acaf5723fad1d76ed80bc7ebc40af8f8395d86c2e", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "2c0eaf0dc735ac4d81f8b12ff65efd1c48e0e8c069eb0cfcd653753ccbc54f5a", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "fb9b34983d22f7967d297bd40fc8ad2f97c82706263e0e48e6d738243917c793", -"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "b64d8168b70f1901cb23c91bb78a1d0ab55d6e47cad7809c9959365c31d58a46", -"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "3f594071da8b1b7732e43b0e8d6c9531ffc522b8fa32ddab13959c3c1e87d0fa", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "f5dcf96677fe31f1abd94ea4ac0bff07bec53a448bfc857be0378df3caad2e3b", -"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "fcd0d1b6b0c0a3516c809f077f591f0b02ee508296cec3003db03a1596f54b1d", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f3144b61310c997cbf6a72e238562c85fe3475ed66b5b4833f4318fd33b76cc4", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7b22064884ba66c14a1d12cdf683f10ed9e4d95ff42a522da291d505bf2ad48d", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "a5bda3b733a5cd52a2564199d6b7f9f7c0e1320a0aa58e788dc880a86f1574b6", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "4606121c0f61cfaa2bc4490e1d298a892c284ce5dbbb330f3a588218416b3519", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "587fce37de02ab2ef39cb479e71d07e6ebe022fee1709291a832c4d1383f78e6", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8653ff07e2ef0eb13c4a8e052443cc54e6ad4e69930da75ebc7dc85f0062f3da", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "a1fce37c92875beed8be1a4bca3008f7f853787f5e913138f7b7ffadbc08d38a", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "5f142def723b8b96bbfcf06647b468c55724cac8c5bd8a01e876cc4cc7d94496", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "923a30ea02347943a0cebd024fbff4a46d6a42bb2dba359e2c3eeb04c045399f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "c8a7168134c9b069a4ff5c898eba4ef73b9ab5af15c299d429080877fcea9603", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "5f2deafa7d47b2ed264db3242236e7df0e6d3b90d5e477bda608a259570aed86", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "84c3f2d6b4d2ff2fe121e9f5d38cd71339019026598a30ed3b3175eb9e923698", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "0cca8a1fdc10d5841efa18d41c0086ce5817b7979ac4b51d50f53c44d632ec28", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d3e44ef37a9e9e384f1cdf679c3f3d8e801ff21a5110d6ac3f27b34d8326b9af", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "9984930ff382445ff66801ed6486054ccb91e0805fb4174e10a8e77d9af421b3", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "b15061258b75e3a019a010941f8ad0290e2138d74095822eed9e0164753bff26", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f5e4e9c6940a8b4a85d615122456015a323255333a49a520b1f8b9f3aa64c46b", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "342d16193e2cb4b527dbc6432f4c3c3252918392b27b0c7ffd73ed02d88e9d62", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "6acd58042eefe870d4ebd4c3b4fb2b54fe522036fdfd79a9ef6059ba64a64641", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "efa71d4c702aa291ee169cc2e3671d571475c3078b5936335f26b43c45e06920", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "d715aa7ba429d9950e3cb72583fb665926d13bc96efedb1edaa7ec5757031efc", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "6b2ac7ae1f736519ac86d11083b67f822f0007f564d88345af45bdf64fbb5905", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "d6b4f6efd2b1d19f5c70f598ae1326d7b8782a82d020c38c3a0cc1ae57f29981", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "65969cf5e8ffeb3937099629e3c6c22c196ea535eb0302715861c8837303398f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "ddfcc44e768be54fb420abf79dc1f0b7fbc2758297c1f6415e7bdd85954e8617", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "135b8e262bbd45d04e708cb8f990c2cf79a81ed0b11a9a0877085548822cf4d0", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "ecefefa52dc2fc9d37dce0d7d26599ebdeb278e6fe5c44546ca7b388f2f74f21", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "1aef67f0e54a459ddfc0b7ca60ee1a197398674d433f514a5ac013375c3f0742", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "d52a97b9fa1c017dd1a74555e31c2334c6d95e46927ab35ccd1f8b19cf507e8f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "dcbf05599c5b3257aee0e223ab7733234a97c2c44d87e67d03578c15201e6f4f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "97bcd70a5b8d0331189085d5ca78550bcd0d3f9723cf4046609388af5f1c6547", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "fdd3f5445b60ae8f9ce1e29ce6d0109ffd0bd3489fb43960729afe6f27a49515", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a26bb90fa974393ae81c35bc57a88ae3305acd2b80b48c5e007f0777efb61007", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "744d7848d12b904a346e59d20da31a48c18d290bda4cb8343b186c801c982786", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "797858fda88096c0858171699756017bb16f8712ddc06678678da3d20a046ca8", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "bbb0e86f899dadb033338abe3644bcc5f96505947f21a33e437b70ac0edb8651", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "4b0d7ed03156721d5eb4e6c0c9b1c3d644649cac967db21e563ade292bdc25ab", -"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "f65e165065966cce6fc0703435c399c16bac1bafaa8de9d64f382e6c538c5b92", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "9b8b7dfa66f9940a2428a9c8752722bb92260edff7fa5dbdea774236a601ef9f", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c72c5a5cc233fb8f0542f54145ee82edf05f2216835635269a3b634d58a1842d", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "0f4cf24d270f7ca35f92532b581e16e78a98cb23afcb334a3fd64ab8308ee93a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "7d62569e13f7fde475f9dcf4e972966d302def211afc34fa4395e9aa519f9723", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[decred]": "0333348f49379671a6746124d8b41b91b7f451da99f4373cfe61edd1fa8ca5fd", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "fdc905fc6d6bb771080835bc4eb949a9d05f270f195e65ea3569ce6ae8f8c74a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5931b76ca29d80fc6bd9d562ef8d0cedc346f57215d823f6a70aaacb9619761e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d3d696582c0163c7108cd38d3fc73796b77e7f383715cf3c5e3a848a75deaac2", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "4de0d0fa9d0bf1e0c65c80cd07957cbdbe1b82f13eb61542e0b9b23cdd1a5197", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "8977d30499462e908f52426be2aeee8fdc30ef1080858b146cfbca6c6af2b2ad", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "8977d30499462e908f52426be2aeee8fdc30ef1080858b146cfbca6c6af2b2ad", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "9d9c6cce8e6efbbb3fe609c07bce07232b802e385727802a48750a1530d99732", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "41f6a27a4bbe55a47922d96a218bbc79d35596e49cc67e7a445345069c8e4911", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "4ddf614aeb7c535c4f8bc8ab29fda9949daebb867424ac54e486f06678d8437e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "4ddf614aeb7c535c4f8bc8ab29fda9949daebb867424ac54e486f06678d8437e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "b650a0a4bcd877354874c6bf9ffe2528d5963db885a103468f94dd03003d7e83", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "0813b563dff00bbc877c506c138d8072ed1f7cbc68c10eb6e6485f58e94d87c8", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "25ae7065b2da7c486be38ab6965acc3fa5c6c10291be00a5bd6b9a2010dac1b0", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "25ae7065b2da7c486be38ab6965acc3fa5c6c10291be00a5bd6b9a2010dac1b0", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "d0838cf2093799d86c3dff084ac958976787d99980e152bffe2c92764bff9cc8", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "44ee8a217ae5098018a5d66afb8a208e0a8d5ef86e69ca9c9767fc6f2e87b536", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "74636f72ed305683e9c3526942871a24e5946a85360c552421db5f103d67c75a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "c7fc248d0d7780d68d3ba254e4afbbc4d40feeba3d3c5d26c189d75b97e264b3", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "cb08dddacd3cfe048c82d80adfe68fa7ce97afe03c9f171985416b99dc8b8195", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1d19df4518b618aee1f104f47ae851dacbf5d91f833fd1cb89e33e38d9aa8b06", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b8dfa8d662bffb376830bd476e57e3f7a3e39a2f7bdad18156f45100651ea522", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "f0a6c76719fd40d063398e19674f7f5da9a178ba5e218fb681a84ed0d431d329", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "d10866e71d5002f690d20eccf61434bc32f979c1d89b941115afb30d893d0832", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "dcc1a216feabf89ecdb3aec9ccbb0e51ddb412ad64a63bbf3bfc1ba349e0fb3a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "dcc1a216feabf89ecdb3aec9ccbb0e51ddb412ad64a63bbf3bfc1ba349e0fb3a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "0c844233cbb185b2b4646ea652537a4a893f96d1ffa87a82f65dca7b406810c9", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "68e1630c59d2bc503fd3b51d9b92f013290329cf4b25bdae4bfcd655434a28e0", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "15013c52e15ff3db19901882e533009b253c1e03c75013c97ebfdc60b096c501", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "15013c52e15ff3db19901882e533009b253c1e03c75013c97ebfdc60b096c501", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "2d317d802c61333816ac25c320903dec52ae70c8c5954c83682ae55e6a88af03", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "5436d7ad9c560fb82533094485caf44c26072b9e463ba47bc4cb16a7fcae6a59", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "2a553065591e07fc61796c4c30fe00843efe9c4a048d809a2aedd43aa0d7a1b4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "2a553065591e07fc61796c4c30fe00843efe9c4a048d809a2aedd43aa0d7a1b4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "7ae250ae4a531a0189b21da6e999d175b1c67f1633d05064bb52930f36864124", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "86e41ed2199d1709f675b8b81fee7b693b7e5bf7a053c6b3a31db8d354bbfab4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "58e071eea8b578747b7da9e904ffbedfe223cd006153693c31456a9c086123de", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8cea5bc5398d2431bb26217b4e65385f4fb4cc55e4b2cf4598ee09331308790e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "d693c7f98b721f7fb02c24d037c5c46f9500493f19a293a9d4f284e6be58fea2", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "24901d79b4f02752579d83c4c2cf9fa1c490f1ee1820dba123d48b6168d4bcb1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6073715e14efb84ff2cb02fb5686b8856e9c4bb3a51cca2371538e2e7339582b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "728ee9210bf924bd331756522d27469cb45967f0d8a5a7b4db0a9251afef4ff1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "278d33da6d0e48dac1400e5a5f7b68889118e2ec41e7385fccf879e4521a9973", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "21aa1260f87d7e417d8765ac007f308db57b158c8d095c3573b88f306483acf5", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "09484bed6e3a9b4501f4ccf7b20f88b52e89f384e717d5a74e2554994c27f718", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "35a91a0eadc5c76cbb3853beb408235f4af5881b7621981dab00b34ea88e38de", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "99732c70b8525371a226aabed800faffe578fb57edd42565cfccbb6ea5dc538a", -"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", -"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "26e86646c019fae74d83cd232fcad54b6d328bc7fd203c25473fe09cf1106081", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "9dbaf87d255c2180b0857e6af02b8d8294a3c6f7493db9800c06d952f83a842d", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx.py::test_information": "30197b89e17f6fa38685e2fdd19781a2b9c37c47d02356e50c41423804e132ce", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "092c1d46c801cda93658dfc8d7063a6c9cb93b95c7b1b7ed8fe63293ad3d4b4f", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "e5f850f5d4dee4f887bb9860679eff5bbd9d5b594977a7a1592ba86a77ea6be5", -"T3T1_es_bitcoin-test_signtx.py::test_information_replacement": "a4a25f0b8c073cb3a03a71731dda087e015b4160e7f3866ce6e1a271a00dbb08", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "9c51658a803a2de18476f46961093d22723a77a42a534c2d5a07e82b933f3ca5", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7ae93e603c7376f1cc904b85362c89417c7761d3ddf3df46388500db0d6994d4", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "0832f29b1f4f6dae9c014a10571fa7df21cc938b0cc42f47e406844e5207f2fc", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7ae93e603c7376f1cc904b85362c89417c7761d3ddf3df46388500db0d6994d4", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "0832f29b1f4f6dae9c014a10571fa7df21cc938b0cc42f47e406844e5207f2fc", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "363be180286c8f11f48807d56a72f36282dc8e4462e1d74b79e6f321407788cd", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "bc2bb62c013772a6f4d64f90eae82b554694286305a5a41b5b9a2f0e07487e4a", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "28a869812fb864094b361d9db78d24a871775c35d104c0e05b3f4bea78a262c6", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "dfd486cb6c0ae7457d3ea9e90a8330ffcab03b5d749d6e41fedf6447ea900c50", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "f440ff1d30aa4c53da3b5f401f1cbe429d2c294a5030d8f092e550ec43c19b8f", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "14fb84e71ae9f553d5bb08d0dda1294ee4fe9cf2fafb534e89f0c8577715de83", -"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "98ad9853dbd8294b85c4e9bb3c0104572d9a2645e920a8dd509ffab9ac26f5ad", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "516d8486215ae0c5745f6e16a7909ba08e0029c6a0d094d697922cc083efafab", -"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "1a57bbbbc21ad10327fccfda5a0f030cdd11b13ae0e90b866eb477578408c546", -"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "e1f9bd7b63d466d30fb6c902a09503c126d73ad7babe0104d9eeb9c9bbf0d81d", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "42ac0322596cf78f9deb168375d9de0174202bfe5cce6c69803236d19872b25f", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "b5a81e44f3953a72ca21b10771979407c673514df07a5d1bea37261c92e8668d", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "a7c4eb8dd29a735914ac9ff677fd140615eb57370c69f755c7df95467dc69547", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", -"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "6673021b142d18ff60c83c522a2e9070a6654f573ff6d7e73dfef7635263e366", -"T3T1_es_bitcoin-test_signtx.py::test_two_two": "8cec7d917caf4a260d46d663551b5c05d5b171244530f75b525b3358cfaf1d8b", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "86b50505aa32091a23d1f77c6c2ef9657e95e492d807b0c1b45d0696ee9ebc43", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "d49fcec7ef02d154e1754f54d9a1e57cb7b91e4a095f0619f48acff7eb6c1eb0", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1c9cf9d8d6b16e7c2983652d6ad6e71de8c4d55d7e64895db7095ab348ae7762", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "430872bfb3d5ce69b91251952032f3327226f74e8728066cda39b73d0f9f82bd", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "28a305b707f75b299b75359590a1b8cee5d60b5b94fd7b28305bf184f96c2253", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "ced69375f7e12beaef0663e73a05db59cd2a5831e7b6be59635e21a917c8359a", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "e4f73e3554305c41623063216269116971033f7282fc89b99eddd6b75e40032e", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "7b9c0ae82396bf0accabd5cddd6f981f5464a7149a3d9f1051dd0a4f09bb7965", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f4ef5f8af31e8be4212e8ec4e15879027276dc8acda9fbf1fc41e0254b9c87a3", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "1b976ee2d29f392248aab13088da972cd43d293bb9a8f868716434740387e6a4", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "eabb65200ad815690f43dc68522e4b91b7ec87e826394cd8abf93009d925d2cb", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "500946dfb6fba3dc574102ee87dd6dc9dee383feb3624c769bc555690f077d27", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "b8c2c08c044b1c91096012ccfacd5c50a1064a27ddc332c1bdee3ee68c3b157b", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "8a63254f364b044b53c51ae12098a8badc360d4b7b09b74f0c8b9f0fa0ad873b", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "d3785631e139db7f3c00d78e78b7bdae1d8b3f79d07e50077068b94127b3f314", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "42a00fa98c290f5e68e7c202834e16676f5b3a691638f4177fb0736468650b36", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "04b0636ca6f256fe9e79393e187a22edc0127bdb8c57f23dcbba6d17a3f5bb11", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "e8cc05b3e23c1be2d54b3657f48b834f3390ce0425d3bf80ef7ccf9dfefe3acd", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "532ddfa2a37b83af770deb0f376bd86a9dc6f2304781dff220208ebc3e5735b0", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9f4fb4ca24e451a38196b521b89ea034fad9c8065c40b762f40eec287f947af1", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "532ddfa2a37b83af770deb0f376bd86a9dc6f2304781dff220208ebc3e5735b0", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "9f4fb4ca24e451a38196b521b89ea034fad9c8065c40b762f40eec287f947af1", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "9e748b0ba4eeadfad730263b30515ae61708e21e920724e91ff3305ab37f3b14", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "d7a5283fb30d76c4e19cc9aebd8a386a89bd540cdcbefe1e8342bb5ceda64143", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3792fc93cba778f943cc912d21bc38cf57811cbb4c9e24dba30e34f7f6f4bae5", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "45e143a0db817ad229123ddab3cb63d53f25650ed45a430552573d02fec12a57", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a238c7077b7ac501b8fcae467010ab55dfaac2a2bd2f6a3c9dbea4dd71bf771b", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "06c7c1104cc6a641c62a7dc29ec587fe346a7718514ae51b5acd89c169e4d092", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "eab039db5f270e1dcde3c6ecb3810d6f20d79bb819e510ba24a5492326e60659", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "309e036bab23c44a687b36b274e08515de4a8b4dd160b23a51b58de06e58845f", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1060c9b344a4292fd30185cf067114f73331d4846905bafa5b16ef8246aa3e9a", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "2bcabd059f2058c42fcb7d175bc334067b9b498e1473e2a27c97a39f0b20f436", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "97301f6d23217b870c1a44697d8c138d864bb4b859ac6c399e0d650bdb413b7d", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "1f5569a3ac994d60a708da889a66df002f6a9caa3e7a6e238fbb974e81047251", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "ecfefcf6523ce2117f27c589b65042ad839d629dc29ddef5ff55da09e2f4736a", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "ecfefcf6523ce2117f27c589b65042ad839d629dc29ddef5ff55da09e2f4736a", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "73c08938bf36badc082530311ad5bebc63965a32be2e9164804697d37631c88e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "04c0397dd5f41d05ceba647aeb7268b392925186168c7c8355921e4058cad5be", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "42053e440d835abac19c1339f250d8785f909b29686fde1df40fccc33381add5", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "73c08938bf36badc082530311ad5bebc63965a32be2e9164804697d37631c88e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6189ebc0354d81f120f544d558ec776ac5e780b2ccc3bf698c1c777e6481fb66", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "c0ee0400211bfaef86e69bc78f0636ae80774831bf7db1f3840a55e21e91953c", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "70b936e5bbb0ceb5adc9f34f8d9d35358c0c175349b145b40cb2d18abe6bb1b4", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "883a23ac99b1c93f8c906fc2d10d082733d17962517cb63157149942dc9b6d8d", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "a46044305c385a0b3ebe483b4133f9660475f3d3f3f0a815a3c7c7e6a7c577ed", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "db23d373f28e1bb9db7d37f74ed64d3acfe472bc8b484e7988091035bc187bbd", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1b61852baf6ae54f773e04881dde9068c66b446a13153cb407a1359969c4105f", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "6b21c1698b9d8a6f8ab1b986ccddeba856657cf915179398f3b8bb09f8aee95b", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2715a046eb49c5b2996470eef20942fc40fa4828d634b59b191564f1e05d029b", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "0f9caa46db414d83fcee593193ba69887004e1a441fdb10409aa04eadf69000b", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0aa263bc6bb6682087890460cb9f3fb5943aeb6cf3d15bab4bd100519d4cd12e", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "b0d4cc3573cf6613338c5da49f838edc888705215c666794ce7f0f27ce823a24", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0b50a9e211759e63539001e61cc82b6e823a9b2352a1934ae9c08c99d7bfaf4d", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "506f219a8c061164fa6beae5c13e2cb8ad7190e09723fa35d169c137b3b421ff", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f7678e8dd632fb5b24d4b5e9f62aac33073c7e7cde81d6f81e9e012c818abc59", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "3afcf24fd12cf5907e0367ba18e126e76733170ad2d40f77a5b55b31cc8cc645", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d4e2bc16ef50696c3612c92e167c2135f31b93bfc088638e520ffcffeb244faf", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "dff8d654cf7f60c978580a268e9725005bda890c125ce519c9d6078985bc5056", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "27d9ee431c91ef3c4a8501d707e7d38cf6337e367203a6517541dc47b744e683", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "3ca0ff607b0362a9e6cdff0b7bbf740c19cf9d1b853a04cb89f9737b43a40e98", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "9d482381700347a42c708b40d550a196b7b823d4a69f00e1f7a7a38d6858574b", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "9f7232f62371a7b84c72ae844e318460f814df4fedb0cfe6c9eb5dd9a6c30653", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "8759061f0a9f59f474a2a81727baaccb74e26aea07911a6da0d97a81ae12aeb4", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0340e423600e12a749dd13170c0d28addcbd98e29318bae252d281c24d543bec", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "0b6b0bf59ab14a8815f637fc4ef9875f1c2a9e3a04fb171ee7e32b85cd6449f9", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "9445f39505e1cee57bbce9029d08bc2cf00f8a27be7b569a7da4a2e1114bfa41", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "e6f998a112ac52bedb39b76ea3396eb18ebdd00b877538bf2841327c7f2f7533", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "95f5e020f24fbecc53bec2b08683e2bfdee333ff11eef0ed6226e8e17514c715", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "64076abc2ca6f3eb8b69cc40eeaa698bf121b6a57563bec6370f12aa073ffe9c", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "2214aa5a1d86a54318af3230f40660034c3ac5fd039d85086114f37b345a8ada", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "d51c87068e4a905d7e992181d37927623ab0ef0790e7550c2f5804fa08479c27", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "dd71c7c0ca953a94cf6f810b0d830119f35cc2254be8bcade21d36d5dbf5e5a9", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "caf7673581567bc11443c01738547a5d13c45ecaf9127c25f2c248091d3b30e6", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "36f0bf9341de9903cfa82c661ecb95ac45d8ac3b834dd24ae49f04bfbe6823bd", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "d4336ef395214c987eb548c343372bc0456017783f0884dcf2412e01f78cd9bc", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ea95c8b2a5963ab91880d44afeca08444f7d6a9c951d86a693fe1dbb45c750c6", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "8147da273c2980c2eb9f208064706e64e530b14dab15da8c3fedfce7a8d4f165", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "3949c7020a6e4c5f2e55f7caab314d0bf67ea08c2c3582ec66c7dfb1ecfccbfa", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "22e4fe01d48c8e7d006318b4b2c53bb9f8baba458b35406aa6155236b431f727", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "97dbed4999e9530fadb61d2893502a7c94fee8f548347755d374c311c60a2dba", -"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "9d0d1c4842438f4d4d8375dcf53a3bdd8579823fb76be72e9e5880d2e0a460f9", -"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "655ee1de24f10d07e90f8993493e60988a98507ba7b0bc0bf757326cd37ee57f", -"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "1f2caf7a70b670ea5b0cab7f211c8f8f4062af4e7ea81ee8ee7409741c283209", -"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "c8de522280fb812ae9804e89e33ea37cb6e531cf3fe835750133d91c4c9b6973", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "59e355900ad9c7559da5db8bc94a197e8fdb6d4aa0d8ebe8f8daa84cad62cc4f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "dcfb6a54ff7fd8ef200b8137cc97b145e785f41ff409a4026c023361d2d2bd0a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "e4bb449d64ca4d6c92f253dee3bd99870ff65248cb086f59c172b41595fe7551", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "5d70b466935822b6c6c5e6a1f7eb750a3a425379e7c3dbb56ab5cdfec79fc98f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "eb2502b81e490c00ab1a8603ef676ea9b4b88b51f5a505118d6233c1b2511fa2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "6e5f80f927932d01089d61dc814db00ed586b64ef1ed69fb511092c24c5ea5ee", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2c19fe123edca761389c3a3e07abd28fc5e50d1fdfd5742a2be939b133f18899", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "98c6beb11751523ad48e591e39d3f4f68e0f46496c16ee7ac0163c26e0b9debb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6838552f5f44c17b5acd20d76cb1e07a1183fae55b2607bfe6a64481ae7530a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "5e9ea30b38f1bdd2ae8fb0ea50cc674c45a9b0bc4ad1aca4b8b0728bbe44a59c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "b8aba1b6c801622c0c585a1901ae6d952d36e1e0e0c5f02a810df292cfc58107", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e913f0b008dc147878adcc367777fdd0da19c0fb8522b3c884d61a6460feb9e5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "26743d9e18e367bb395fd49b86d14f3d44bac67ab25b71ec994b9b3ed19d516c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c95c8c9d5cda1e8aaf46a1bd6ebaf169d5579501badf7bf8ac0755d181bda3cb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "5ecd3a04da63ed92ed0742b527237d48bb248fb1b5de33293e081cf89765a539", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2dd3a356085b2134a4ca49e9687a4e90b1fd7f305e368e83c2de45e7f1491e9e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "58bf0e6cf1e0c8b60a3a0929b24154b244f8282e28d44439526728098bb1a4db", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "b0775b9d1a6f70a9691193a1efade8613d39468649746cf54d7ee8b607f27033", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "92647b515782cc70c5a92f3d2fb661316532f76dc1334e7e27308ba1b21d2616", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "59359bd5a1cd6603b8c4f319075a0065bf1b244c6696f8ed8da3b9540a217764", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "6e05225b87f28e8822a659df7afcc1bbc37e137e1731ac675d8ad36d1341f531", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1e237e0f9c4603f803ad94a37e3a55e1b897006e4cfc13689a538f9d18cbf23e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "7f49fe8da6eb6adbc9dc67d1f623e2deec13320e962d65f026c523dff005cef2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "2f4ba1c73aa550f6a63f59343d0e098d41d78496ca5f6961ca4cec4e8d191bff", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "77ed540903041db930c4b2fd08f234d4bc5d18d76b1a5aa3b085dedec02f3fcb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "f11368ffeadf92aee246346bff21ea574c540783d89bbdb415e58f15abc22fd8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "63075c7f0e8de1b9aa777586edf886d2fc2562a12802d36ff07667f98197a67a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ef7133ad48a3067c3bc80b257ac4ea77cb04d0775f91984b04f137255e7e3041", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "ddd12e413bd42d65975df9f01e34c3caed1af68ca0e7f835f322f6f9dd156687", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "0ac075a80b53a004103eec7327b2b6371239c1970442a74b05735e42779add72", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a41b1a015983635fe4bfef040aec5c7208d6a1b5230d29b0799bec99c4f795b5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0d1b76c23e117e8843601cc3018737fe549ae26fb674007b334af3e6d7087396", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e1e82251a53579070702580ff1103087708167a09dfb770d23fa3229ce88416c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ba46ad5a447dca20038cb30e8dcd1d188b44f4df9e0b15297962cb96cec64cf0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "51cccda41dd222cff0590d4173023768919769f2687897482b06b69879306edb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "f0d94aae61a5080908a482ed570c148835aaa4ce0c5deb93bf1a8017955c553c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "400ab7595f38ea923f2f8ef4d5494d3d487e1dbdd4a5a6378ea1a232a4666aa3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b7664b3fa36c9c4e128a95363a1be75f8f881b688fa951222eb9062948b66352", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "ce681b43f8708d7946843f0161f582e04669a51744215cee76e8a2c1323a2fc6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2c0a5bb5561226396e358a30191f9e10c8d54522fada452529a37f1e87e1bba2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "cedd58e10f7821a44ab7713ff3de22e65aa02c7bb6a0e65bb9e29b2b025f3d4a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "9b57bf9a10ba33ff9d87a806cb231c7328580b4919afe92dc78bba2a25c290a8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "673bae2adef7afb59f8dab2a41507833b746253dc808752db4cdbc5bcb381909", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ca4dde19d88b69842e31fde653834c75c76ea552c420c3892cc2efb25c0ccfb3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "834f8f094b9abfecb12e01be8345fe9920d12b86e3e89315dc0df77b308bc4f3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "bd85ad18729cda62f40a3c1deded531e1e682b776c0939a46fc1350505abcb63", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "5d80a50c6816dc2817ebe06035d4b7ebe32be3df5386ba4df75612bb6e0ae9ea", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "206400bbe9eb93d133150578c34af06a2dfe3033ac6a31ff79d3d3fe61e559a5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "c1beae7f6aa8c49b33bcc5746b78649ba00417eeeb10adaf9b1b563e7643f662", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "86b212e5a23eebc1e6ffee453846b48efe6bc3908412391c4cbb86a832715e92", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9a13fbcff4b064db4029e54dfe57a5ae2d780531b39386fdaa6adcbb79977c0f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "0cedb89ecbf5799cfadb5defc240e24b46466c515f5ed332ef635dab0c5b98b9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "22c9e84925d8a2ff4ba5c78c7dc1b27ae63da7edfa296f17cf22a8cbe17cd959", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "6dedfdef0ba78fefa60f36521d46b148d4f63f9d40ee16f90f932fe9f1f8c98e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "8a48abc516f077355e02f74f2b097904dae3ea54e0cd02972b2d9ac313104b65", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1ab44b41f6db3d1272d8fcba2cf36fcdb010b29219dbbfb573ad7537902a0076", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "96e02d2f0163ea89c5a8b446418c976b91bd501a024b934b9e2944f6b13e17d0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "b4fda702853b8391144c9db029353febdf269663beeb009e9bef66df43341a0e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "da7d5776d92deb6881d7fdcf27ba7d58c8d8ed8f1ea3a579e7190c897ba90cc5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "1e454dd92a893e6bf66d93c7f3d0f98f7d321412f76bc9e33ffdb992d639e453", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "4d72554d61d3367dd68b747ac2ab8109d5be09111f85de6f5220353e189138b1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "2c716e9db9910bfa03e523ccc4d35a70b66cabcb26a72749f76aad238d57f2ae", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "0ee6815696edd9cb2410c873ab5b2c55215020276b72e5194c0f1f0db3990f0a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "17c74cbd92b5ea7f3df2aca4189950f30e8bf3c03b8729fa574ad162320303ec", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f3615d79c50ed53f53bf1f3f9968c1024fdf76996928618f19b93380b2bb81b8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "d8ea0a1f7d3a5076fc69ca102d09d730cc67544319e4958bd57e4d50d0d94b3a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9b93b40489b017a95344e4acf43dc42fcc80cbd24e90c81b7d9df5aa88654098", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "f483395d2112d62aab4293431e817d879c7ad921f985cd75a153f7cb604f309d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "08d666804e473513cb3bfbb172fff71a314bf0aff73398646c31ae88810cd2b8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0bb314dd2992e22aea5f12c721bd3a099e32c2d062fd34da60b09e585e9a58f1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2c46ce0fa3def68ce05441e582b2b1dfaf31e0c2826353068210205791665a15", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "885a71c5b1a4201b3711b65759e7bec192dde334efc215a6e62f2963f891ea34", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0ff028a42c0d3de13b76d12e93dad860963f036c410f23cab098b6dfa40204c3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4fcf207e8bd4721493347e8991cfbc4a8557ef603941c76defec0dbf276a6a0a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5228918b8eec488834d692ffb6b856b11c9fb390dd03cbc7669c60af7ace1516", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "17d6bc09f4895320e8bf67097dc4fa8954191c6ac76908689d47ad21098e6261", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "3cbcd35d46df53249a96e397ed7cdbee67810bf33c98d13bf76f484bf2f59012", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c3550908023a0a4987006a293f94f397b5c0daec44032d02b71636595ca799e5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a78d017a315f664a451974c021db8b9c9f0457e1eb698e869acad0e2162d1095", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "50a794787896e853d1fff378c9fbacf7fb7bf7dafdb870f6d0c9ef21e32d29a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c52659fbfd47f85e54cce3d840f8ee104fc422d64cc9cb0dda5b5b02aec35254", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "f967af983e643d1b72f1c0abccf1e4d22cc0c37de57de1d1df75ea2fdf576f5c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "f357b97785bfc7326016af10abd72ab01c6aa5b1047e5a17c0907a08b32ea33d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "8de6531c14ac558fa5537641aa724c3223900052c587ff8d6e477f41c4c22840", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ad2e5454bc7ed062c184d24e60ed2647e4cab25a00e83592d95f82387aebfc9d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "564b65adc2a7b998c44f555edb691a170a427f3f12fa6b0e0e79ec8287459c68", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1305f49b6bf46be3a07db53a703093ab2e0ea9b1e849b5d794e067b5313d4195", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "0b3e4549082c357edbdbfbd8b997c2eaffc37f0b1d062aa58d6e90e15b6c3a5c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "27fea4f04ad5ab9330648742999bc9e967d5417ef8789a519cafc36d914db433", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "381a0c1089163c59f7352e237718048809d125fce59ccf8679d1f36becda4264", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e38e955d39c3ae50a185ba701e53ccdf38011a163f3ba9327ae9a21d3748fcd7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "a2c25722cfd9e5013a3a2bcf9c5a2667826c61ee46a5bc63158baa7be6ff7a05", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "049114001855edc019de23e2943aeb3da119b57cec3ac0f26ddeb25fce147794", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "96903906ac51848ea2b4e0af016af4117a746a4a4d16da32a223a5fbe9fe1208", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7b6e23e8f6b61c473a302325958e049812adc27f3603c6ecd4d5c34464fe251d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c0ed4ef7f244154ff866cf852d92579d680575771870d0f51fe9895c1e67a966", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c346bd1a848334ba44592ebba9726518542b4b67ca40ab11a41da4aaa18c4dd2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "219886527bf17d25ee7a39a6280def8affcb6a455d6a5c9099db2b760a213752", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "ba4b4f431b00723aa78f4c6e322863d95f63064be86c4f4556092e165ce18dee", -"T3T1_es_cardano-test_derivations.py::test_bad_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "06287e5bf23b4db3bb9250f74d09c4f7e11b9f7d378f0eb456011f0c7d8d8be1", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0ea2f502ad8e13e1151882e14215489406db4e13c1da52675f334366e5b2cfbd", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a207fb306e49af6a5bf1350a23d82f759a2344b0f1b444daab11452a7a14140f", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "276c66f889a1896bc1becb93ef19a06e504694fb8ed963c2dfb68c94a30337f4", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "6c79474f064ef22108b833ca04ea3aaa75decc6a148ac562640f1013b2626560", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "eb30959102f948ab62733f5706c5f5af1afb8008371668c6068db3417396b6a5", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "bee25ee8344afe2fb1b60f8562465b22a66a540df3a2fb4eb950b734f75601e9", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8d78ebca578b143c8a3f3705c50924c5cf3959ec868a9ee851965462891f0c84", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "626a2ae22d2d4b9db84953fc7a7f9ec727b332667d2c2ea94b5b42cf0297e1bf", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "d5b4d6dc057d23a7c0700a8227774ed254472a65bd357d1cc39754770ff0f5d0", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "808976bdaf1baee3458322f98b86f0ae76971deb1264a3460bc7dcb009236629", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "8c9721daf468eb1ba416fc7074f73c5742182a58a01b174f8f79b51190ae4f88", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "d89c872bf1afc6275a1ea61229e01d8ce455478858296cb64eae09570a68f62b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "413a15dd6ccc51bf64d52e6f5c14ea54ecd41c34f75b7e2cf46fa4b64943f46f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "76e2a8c9b109a0e6a75cabafd8561931e80b34ca005645526fe6a5e30e96d424", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d2a31aeb78e1d6f7c90f3ecc46525c4469f41d32debe11ca5d3de83427c4436e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "1f31cea9daf3c13c20a19ce64dab137dddceeda44accef64ae40a0c26fbe9950", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ac3dc1c281a528b34c4442705756b1d5c6294846066e7d38f9cf747585166a20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "b138448ee9868c22fc49c4ea75d43a7cdd422012653fb8449248a3529b813747", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "11cf13356688eacf116774e6124cd6d440200819ad8f73e7d5e7c8a0438dbe6e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "fe5d038278db48719f32c0923d624dc9f2a02b5241d93277c2db6dccf14b3f52", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "c25aee154ebac790f3bfd6b65d23222856ed9301ae509fe7b3781efee2b7bdc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1682920d2ea63979f4268a07601fa701fb6e6bfb08df43bface3a884531273ab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b30ad035fd7ea1c11ed5c180a7a0245135c39c400883fea16164235757778739", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "886671945d5e537bb5ac2c6d10d8f568dee6a6f1d9344e3c33ce0dee1355272f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "886671945d5e537bb5ac2c6d10d8f568dee6a6f1d9344e3c33ce0dee1355272f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "873ba30c68a474048898c971ed0d16a3e25a7535808b524bfa3bf388d5467c72", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "35feff5ab44abb461b175273a0d513eeec546193b9fc3cb42cc2163c2e01faeb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "5d79187f2c8d7db652a032266b4f1657860574d30d7a3a88f82d707a164c49d8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f4fe09033079df3ec676c15f94693837088bc3e390a1089cc1e3e76743f04452", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "74128098f18a51044896b693a469c7e096fe6be9fbca6a6b620b726f08819a83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e4defa8aceec7633cb3f7c0f4108205837721a60c71c52e34a08f094cdabb4f3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "4ee35f06f68aedd9eb0956485f7f8752e57dfac97ffa1b6248e20e453fac32c0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "400b9e4198eb55c1606811388389b5439855b789279544a1598144b8e983daee", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "b8df920b5dfb4704da887aadab1f8946cefa63cf87b6a932ff32535493bd30bd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "74128098f18a51044896b693a469c7e096fe6be9fbca6a6b620b726f08819a83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e4defa8aceec7633cb3f7c0f4108205837721a60c71c52e34a08f094cdabb4f3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3cc877ee329430c5687fdc35cf12183197694a4edb2f6059f594ad9e471e556d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "fe597eaddd1750f9e06fd577e121f6e511c331e54c2b181197374d1b8a3f74e1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8b9dee7d2b7147ca25f0fbb0f7b8e7c9d186412d6724e77e8af166bd2719786f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b5c4f6cd9a16dbfed95c586c44b9d331246b62190070da4aef5fe888fc442ac7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1c70e231c145248d96e8d1eff9296028c77e68d5bd117cbca9edcc6a2a408fbe", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "f2309a7c04c00d6d1d9ce407ec9d9339baf136aa0753a35fbdd91e8c16cc124d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "0af23656acd628445d6f292caedb3809edbf7f3e46fb40244a5c60ad473ba2bc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "34fe7657076c4b09211dfa0450fef8e72b504b506f56ce1a27a489de7b591d5f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "451d172e41113241d0a537c97a5510d00bc7a4bee260dacd3e16b51fa567f6c2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a197d7acb899d7b16c2de9fb1e514787ce52405e12c4c0766f7d94ac06ac6873", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "9c36995a872e8092819750c6187f2bd4445e5394b0c0eee5eeb28b515daf833d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "79a26aa0ebaeb305db93709bb2ee51a330c1a5cae73d01e86cbd1e0a4a534c22", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3efaf7550f90a730606cf3d1f636d8601ec1c27e16f6c8af17e6e8f13cc4115f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "de5a01bc9b7c5d62fa770ca40dfeb0d4ecbe624dc3e56fd796bf2490638d1818", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "33b013f9566017a3933880981b101a290619ae04b3eadcbacc8326dff75b7052", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "bfca897c27e658c7dee8ce58e6bd6439c601d1dd4061a6e159a193951b45ea48", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "8a67cc26d96aad44a4cfc9c5d655fc37587b007428a384fa9ab53a7092e7ff3a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a2713df177621e5ca0b0ecd1201b30916d827eb71da477820daee526dfedbfb3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "cbb004247bb1d690be89f4136ec0188d62dcbd875827be0c1405454512305652", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "103ee6a5112c7d7dc118e566f640eb05517f32d23b031112943f22800481064f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "b94f77edcb77569967e025ba36920ea00c6a4f5e2f3be68fd7289154a926c58f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "168d2cf6efca9c6bf3732148e227352265b3f09a01ab23c142effbbbe0cc6d94", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "50b5a6bcdd8f4c54e02a4977d6aebfcd9773f2bad3a96ce829a4e7e86f52d0f8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "95907f22bafae7d433cb1b07b255a274d0fefacd0cfc51379cb3856d52b4bfb5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "529ca9c2069e5515b1d843401765aea21be1c33efb08f1a7e361196035981ec3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6c23144a9fcf6dd93f7d839947e20fd10da134608abba0f75f559562075b3de1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f6fd673ef118cc6d1fbee90f3a8df7ccab136a3b556715fb5f2dfb687b60e858", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0a06941a050de72c81c43378df674128f47946cd3268234171588b4bfcd28f87", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "6b9bed854907cfc4bc33b15ead0ddbb9f9e6ae4d1e3c3a61808c148db22a1736", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "33dfdb642b3d032a21c517e988f86cb9d01b389fc7600f60830a774d87856a3e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "c043308eb75974d5e71e9726e35876cf8182014dbc9715b64c52464798763039", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "7e274b7c38dcd8022744e9207d93817671b67e47f15b679e410bc6b2cc1b5dce", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "e7d5514e79b46fbc21ed0eaf44d082158dd1f504c142cd4e94b9b78adc4ec940", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ee25e2182310d50b9de7d0a94b9ab257c67b884f586a56bc38eb7c151ab22845", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a2ecf4c49e435dbab49078dbfadc4445ee81baea0ef2ae0271aaf101e7115ac4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2fbfac7b62d2923c91a0b09bede5ea61d7ec7edb0cdeeb918406c30fd7c2955a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b266066bba29d1bb1a7ee75a95487807bfbe9a7ea2768c85ed434b4e0194091e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "4277097921a767e6afbb601df0dfa530de08490c0fb4c0fcf3c053d16c70b642", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7861daeeadec05120df682370ef0f88c077397f6ff7233582801d0ae3178ad12", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "fc2093b241a8fb682b348dc2d39b68dceeedac2d180757cb05f3712acf299c4b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d630261db05b7b6e89480850b871df94cf4ec1cdde988a6be922e14ea318c616", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "9e67a4d26ff7f8ea2b01942bcff8e4903091900121ac33e9a2acefb7fdaa8ef8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "680740b1e6184dd124a43f95e15952e20296eb3f2bb249c5625b80209bcce8ca", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "3dcaff1436e1619b7e1e6ab190763a703aac410f179acb64a9aeb76706ec73a5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0e6241b915a02f46f56c8198520dd04a722f0fae39131efd829d1be4a6800e66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0ff831d87737a6ddf83ed585401cb56198d803f2351b7363a0eebeafe522c28e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "d8406bbe3201d344b8b2cc67acf2c5c1a60e3eb44302d1e1b524f238d323c747", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "d8406bbe3201d344b8b2cc67acf2c5c1a60e3eb44302d1e1b524f238d323c747", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "578ac82a08ab44641acbf042caa21d6180b3c769da6d6ddac773a5009f019d45", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d7034b0a356a709790afe298d8cf084a8ad74646e744b05b12c4e3eda400b224", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1cfe630720e91392e370646a44d4aee30a95a0438d5dd9777af55e94171cd34d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "40e47914b10a593f4381f30eec61f3ed8bcbfb2706e594ad87c5ca38da8b0e0f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "0221cd9be44dd05ef635d7a9743d74c42884a11563ae9b192b0f979b13fccdb5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d444a9880b1fb832cd346f2211c47fb14e3a627135eb7940881bf4485257ed64", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "54bf05051f0563e1d449848504c86e9920a5d94ab4c11c9ec4e7cf6b60a01a76", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "50f5f4a06c1efd19639fd28fe34c5dc1248aa4b06c1c7a610d8cb7bdc48c9a2b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "9d48a1f061271f4cb76affcaa5df3c22f03fa572de6d45509b7bf3a950265d46", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "413a15dd6ccc51bf64d52e6f5c14ea54ecd41c34f75b7e2cf46fa4b64943f46f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "11cf13356688eacf116774e6124cd6d440200819ad8f73e7d5e7c8a0438dbe6e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8be7fa5e6412f9f6a4b37071bec8f8ec2664a5885bbb0a02fc6d681701294375", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "d9c7ddf090b150bf4be2bedafd19862811affa5f64d03b11b590a1de94b97521", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2caa2bb57953d0bcc4f2c81a0351371870cd76e3478ff9c23ebc6b8fa24cbbf2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "86fc4166e1d1ead23175c8e48eee70a60f4acc5cc8142c4a82e200db381fdf10", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "e6cec0c99bcb6d6e8afb9d4ff101327a43793de4c75a2be5fed828b428867cb7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b03dccf2e7e4a4fbb6636d84054ea7dbfa065cbce7f007af7b29828100a0ccc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bb0c17d8ba65bc5c5aeb1fde66daf27c0aaa4de71a594c6dce9b4bdb8af0bb24", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "e6cec0c99bcb6d6e8afb9d4ff101327a43793de4c75a2be5fed828b428867cb7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "af26d3b94859b635f8cb0674dc6ec78e46bf71ca160dc993af635eff37cdf7d2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f291c4ab7847dcebed6784b1bae5f1f733b39cd59a95c750102879f8035c1af2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7f5a1595832c6fe51ef3454e6e339d2b6f3c17274835e608c467a079a213ca6e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "e47b3550509185bef278cd6d5fd2c845373aa9d359cd02a2b0cdff2912e9fc13", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "1fc92af924f90ffb6788260a33f8ba72fe72a67299f0d2eef4d5d4fd3b61975f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "f07ef728bfe79580e10765936cb36801e6d59cf7f132868128db1ecd15aadd27", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "adb35f7d3feb3c733e0fa6aaa5e370a5be94901a9701d3c604578b6db8239d4d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "b392fa8b5367a1f8985788b31f9029444f89c5eb86fc80e307db860e17f3714f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "5819779ad5a4764008315051e83d82993cd5b7635641c07762bc25e51e64169e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "338fce8e723fd02a785254529eaa473e25a7d8a5a45b67b187cc5aefae253880", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8fb9bba3d9da20292503a3569283311069c2cb2202c2d75147bbb6fac41c875e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8f64a0af5e2cbdb036e8676f553e0545712c476969e033fd9f71562a33d0826b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "86b962f18aa2004fa4646bab6cfc1d73bf9296b9b5b631011552ae1ca2b0b92e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "e54d33a721d91b988172241964bf5f375c962ab08aaa715bdf0698a91b2a2bcc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "1ee773be4ca2daf87b4d5e73a0eb635f8caae46b87c6590786014b865c396b01", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "7503814638fbfa46b5319ad16919c20dfcb5c43bbd952d04b454cc85b5d57993", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "16542e6a15d116be56701b2d8522dbdeb4c5c2842543bb60d8523f2861396437", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "890777630f0c3e1fd94b72544ae0142d602901280a9edd8177c7b4e405ee186e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "792a12d143e21f2fd0f451deb47f5e5a833571856212a9b92c5ac19b76bdaf57", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "1c1ff1cc5b07f1ffaf3ae4355aed275ff9d7552cf9ba07056754bdcafb59e693", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "9ab51cff19da594a241d1a573c0adfbfeca46b9c95dca2d3897c7c867bebb5b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "f16b309a619b8ff5dae472a336205c7f521e90c0b454a99e22615e800604106b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "5d9fef79456277084b74cd7a54e47c2d1c9badbcc0ac9eb000993e577ce61565", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "0905c2509bc0a6400f3941c3b1e0ad9c650e44b3a02cce33f0e1c64a845f82f2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b771a63fbca09a916b08df43bb6a7f1d11d20ccfaadaf06b6da0a198176fd641", -"T3T1_es_ethereum-test_definitions.py::test_builtin": "8494194585f6a378c4b3bcb6d652cb29cfa2088f85304ebcf6a59f96d026233e", -"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "9ca2bd2200794364216aaa7ba8aed576ac3da70aec6df9e5aaec7de33c84f21c", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "9da6cbd032ce540e1175b4eda8c27c7d2be035e9b380bc2a7e4ec21b3f26104a", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0327f815182e96131b19d356cf6430f67f44799dc51683b64abeeb9447bbd3d7", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "fea814cd414d494caa31423c7483f5835d0d6221c64625dd14e8ea7c0758ebf7", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "aa922731c7ad1d859ffd3b1d5ed67db28b19438d888e89e47aa1761a389a0270", -"T3T1_es_ethereum-test_definitions.py::test_external_token": "166b2d3b08cf0022bbac240455779407fdaf38693ecc3d1120fe861e7d963ae4", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "73d01b57f23083ff4d0b884875548f61f872c7545d64e32660ae8477ecd6e4f5", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "b20ea2487eab2bcf5add3879e59ee7d4f3db02b5bad294271dd97ed227997799", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "43c5cb05ef9b35a9f3127b7f298c85f24788a2a4222e148b922a417976f3bc6d", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b629d39991904949fa301089dd05750315971a9cf6ea13ffc4d168b582d9b02b", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "3de4f0cfddb49981cc7cc4db0367a2dafa34d9d40578ded53c3d0b3b7ec45e94", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "3a32c1933475baf1aedc8cf761b81d39abb4dd432fd5e4d6c0f617b7565fdd08", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d462801c953c60f3740b6358e2d421f0d54cacbd38fb39879c2437f0325892d4", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "43ff2e7fbafb035c4de588eb4834ce00c0413b67a445fbe8c77a678e5bb8cb18", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "25540baee0fcf4b5c841f6293249a741458c55ea2fcc2195d24426c69e2697f8", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3d10e3130ebfbe698db617a8e183a9467187f16e4c53b58656cc2840fb60cce2", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "0c3c0a1b58f7d8259ce08ceb74432fd6530f3c861b4fd04968b40101c42c399a", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "15c72309205e57232c7fbf188ac7b059f8d01c1751b84a88cb5d9ce3067376eb", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "9f530378f8a6b7ccde806d05c1b6a68af2327c16b091558f50f009ba2ce9bb79", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "dd7cb8e9a0b1996af6ba5053bcdf1a88fedc9c383214be08f5b634029bac5e21", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f335d9288490a9995012a7e3a1d52d0c30a5f82f16fb426e3f1bf16070799e9e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a3eb448ca1bb17164b2be5188adb31c3b83483848ae7d3f869069b1223614c84", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0a27eaf4b1882cff1fe7780838935aade486c248760ab5337a87e6646d383472", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "da4c5a4c5c4a757064bf85cbc5fd66deadda37ea7ac6e9703febe1f608a77d58", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "1e22a4528175bc819142da6dbe0f042298216f5c0b30957baeab08f5b0a9ad60", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "1d84243249250309f49efa36323f4a8edd9e2fd8e330f69b39c1d2bdeb511d8d", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "d7921ad2fe58ef7dc7b57d3480ca5185e6897e66c1fc195baa2d78f241f70fa3", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "6189b4c756ad88376995ada3b2b9460ec73f219ed5edadc0e644b083af7d21c2", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "4e0e5455e1f44c3faa6a764650f52775bbbd7585bce03b19483db1a49cf54f39", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "16afcabf60b43f89370e95a22716ea5f714c62ea5bba55700f20121f8d809079", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "03b26ec321a6535f321a990dd61c9e11393df55bc79d4545d0ff1b63dd00a83e", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "7526aad501a42f0b773914c74c2adefc5f8d2c57fbd066635bd5d811cfb33ffc", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d2b8e16cc82fc6deeb1e385d9982bf68626b6b54523236d7c1b26737067a3085", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "0b141bbdcc5dde0e0303b825633acbde389fa77b7d13bdfb15a37391450853d5", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ed34c69ced565535a4ae4cf0015257c54fe04e4f1bd1339b5947dec767dd77ed", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "2858b5b854fd99c9a5f58848f8a53d09e86db0b466585b180e16f00fdfb83ab8", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "b1c5e60a139c7b39ee9ac0cc502f9398701d3c1cfee9e0a8c7bd5e2f4beb6a85", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "7d4a1faacabfa092c0bc0bdf7baf315cfb0aa215e4c2a5646be357b774109ad7", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e688111bc782b98a09bd3fe76a2733e03a9fe4d996b5679ce2c0e748fa27cbbc", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "b5df947d8a39bd74e4c3929b04270806b3eb75d43387bf9f8c8bb17da6f2e559", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "ef93904730fec36cfe2e73f9b4529ea29e878e942ce456099261f9077d5ed9a9", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "7bef96e59a5769e0e02df0294d6f38374343506f0a22d004d0738067c0feb37f", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "09656c29ae2b1344d47b0f03506e6060326ffcccef111f93a393afe813a251ee", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "73541cec96526454a0de91c3b38f647419c2fc955738564e82948482ffcedc27", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "06f5f2ad7fee4e8e057894edeb059c2a14fe94ec21d673e0faab60cd285f47c3", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c6f1dab7138884305a77e8603f8635b1c07abcb3edc3e9fa28681c1b2b6c9aec", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "1ce8d124e33be9b5b1e3b70b82fc2c47061eaed54c393f7aa3cc43aed8850596", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "b5df947d8a39bd74e4c3929b04270806b3eb75d43387bf9f8c8bb17da6f2e559", -"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "74a34f5493c74506fe85dd322dc0ac9b2e4f453ccb1b094d8228c6614aeba63e", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "e578cbea03adc831d6540de0b23e907ade1d3149f82f7e79bd7d0984a5f95dfb", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "83b62cdf961627ef8d389ae253d44aac5fbc748715fd11b659ae43712ceeb0ad", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "82908be612e0714ef6ef3c04e8d7af79c0bb0f9018af4e2995529e2839526b82", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "83b62cdf961627ef8d389ae253d44aac5fbc748715fd11b659ae43712ceeb0ad", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "73f33065179da23455b439a090619c7f482a6d87c8fe5ca6b735c82c5cf326c3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "73f33065179da23455b439a090619c7f482a6d87c8fe5ca6b735c82c5cf326c3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "0d16f2e4c29244d2805ae4d00bdfada039d5f339424b891ad36c6ed4ce271081", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a94138c4430b5fe43133d9a356bfd78a08f2c2900bdde5d4adbef8333cc5f829", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a08bb6015062b32d34d81e3eb20d44d5cc171c51ca2a662ed8d7610c8a320079", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f985a30d30781e92b0459a7182e98e61c602ef7d50545d08ac672dfa4f068d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "cdea1e34924a2e5e8a5fc3c8bca96767a4d13d8b9cad862e56b1dc3cc85b23a3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3f76d5ae089dc0ef0b47aa9b2770d6132d5b9b9b79d88528cd169a982df69c72", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "ecf0a105713fd3fe6cd812914053c23463409c1a227d27cfc3fd592c24b7b71a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "7c6b28f9f3c2efd5102742e97ae9a1839eed329cfd0d8ad68bd02b8cc443e503", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "36b42105618922c82cdc187e05881e27e2aaaaabf8f9303c0a4664133fa307c3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "7c6b28f9f3c2efd5102742e97ae9a1839eed329cfd0d8ad68bd02b8cc443e503", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "2b281ec5b27b9f818be53a0772d39d252ab9b60099cbba9a513bb5ac4b871910", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2b281ec5b27b9f818be53a0772d39d252ab9b60099cbba9a513bb5ac4b871910", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "6c69663945f7704b67ce6b660fbcc32d11063d67d8b9efb2e71822b58813fe6d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "974e1a44731943f490b67ded7a03a130a6a5938e49f764e5f5284b09d2bdc198", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "42f2135e5439b8be224fd88e6883e713e68de20b4c3a2732dd1dd5e7f42f71ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f985a30d30781e92b0459a7182e98e61c602ef7d50545d08ac672dfa4f068d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c30f65aea0a7d05752cf7aef041d9ae7bac9c1ecb34048426a00dc92f4c6bd23", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "a7dbb48365f4fb1ffd9a6a479314bfec1cbeeb106ca48d94ba3652574799f124", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "375715f27ee605c397fda02aa88db000174d170907b8affff8dabfdc04637297", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1c9913d13f8d854aa5af513c765bc7d198b1855496f97da2bc719420374f4bb6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "f79d2e6a2bbb42e5f3b965cb19d7a71d66ee1ed0b664c854b0d654b90671a819", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0d16f2e4c29244d2805ae4d00bdfada039d5f339424b891ad36c6ed4ce271081", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "e29c99f8aff260575f1a36d6ac11a90dc5bd6eec25b225ecea71162a38c95983", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a08bb6015062b32d34d81e3eb20d44d5cc171c51ca2a662ed8d7610c8a320079", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e8eeae49ee50deb49a2569fe420cf8cb9e9ed5afcbf205e635d5e8427cba3d6d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "2f834bf985e7d80e975cef6ab01ff2d6846111424a2d24e0ff2de2b1a2796a50", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6c69663945f7704b67ce6b660fbcc32d11063d67d8b9efb2e71822b58813fe6d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "15d5fb1db791c1dd83138ee682489322c91f87944ec211b0760ffa7fcf38f32b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "42f2135e5439b8be224fd88e6883e713e68de20b4c3a2732dd1dd5e7f42f71ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a73ea17030e0b40e7311d7de241512be66dd4699883f810c635fce3d6c2f52a5", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "12c754752020bdc8c80cb19f9120d20dfd6720ee44d9b5171d487463e3086f71", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", -"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "e9e534e578a7cf5f37a7fa93dabae02ef45c1f8c8ad2a4e506b6b799cf37b6fd", -"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "fb31df4d4d8a94f5a471c266ee597ca97352884a4fd97cd0c7aae2c0acfe9548", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "69a128679278135fb401f0e69269805e575522897d6394886b826108343c8f69", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "b5b6d01616abbff6e2ab0d9c48103db2ae52d28126dd049cfe716176ddfea976", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "806fb40fb2f5fbe2308be07a7c05eb62de5ff81615b7aa18595948178741e7b6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "5448607fc6b5d9ae3b9ace69bae587b8bd4a13c168cd9b6c67402aa1eca8146c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "7917fe4eee0777f97fb22dd957d576b7db0241dc055d38ee351f6f42e387a90a", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "b3099041f1d5a099a9352489c9b50bb196f3206700c0ad83be0e4a660912a53e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "80a689147dbb47fa712c5753ab0706fab7616aea1bd28a8a200b6a74a64fff91", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "795febb368b491e969183c346044e7d9b9c74e06beb5eaba16014c35b0ac8062", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "a3d0520a75ccaa935644e92834bedcf5a94429923a10589df4f46829aa858225", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4ba9a687a114a68b647b9626a94c411855c7a32f5f588bb6381f7ccb83e42d0e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "0b6aa1c12cf6916403b873f0ca4a4f1f9284a0c5259373e3ce06129bb24c2ddd", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "4c6e6f8e9ec5f8d07c2f7922787652f22eade639901819df4a8d04aa21899160", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "b5573ef044c7b23c6c00bd4c1549fdba9d3eb13200c9bb8cf6f7154061d823e6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "b5573ef044c7b23c6c00bd4c1549fdba9d3eb13200c9bb8cf6f7154061d823e6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "55b5dfbdc27d592fd9a7e62ec04a3a3b5fb2a42d1017d3409956c6221948333d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "55b5dfbdc27d592fd9a7e62ec04a3a3b5fb2a42d1017d3409956c6221948333d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", -"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", -"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "9ac712c7e37de56dbb07eec92e31f2f811e030cf51e166960f24339495e2ea6d", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "c58af1a8a5d4012d92a37cb4dc79362750a96f9af2aa2814d74d7519760255b6", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "e2323464410f4cbceb0e6cc46a609e57f33720a88f43f7d13db44a42a15cdc9e", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "81e22d1c7fb26dadcd166f53971a0b7aa88f3d51cd3a83069649163cd304fbd1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a9cbdc03cd44eb0be944a43f4db00e3cabc975398f5575e567783ba219113572", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "0692cfbc3e0e617b6c8e2f0a3062784a5b985c4ec920d068ba5fd1cf3fe421da", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "858010ba830c766e742fe514220e95cdf5d79b69f78519b7fd8df31612b98a4c", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3db35028673ebf7b7153e268d8ab6883657e1aafa126ec42959ca79eda8a2eab", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "c5c8924c33a7fc7a94d929e79edffe68f76ababa2949191d3536149039d8c987", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "2d23ee746632dd0e48199394c243d2e1de8a29ff079f9b03cc22457176bbb42d", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "27a49ffcc4e2cc1b7a378ef13093ddc3641da9162e5a5227c393958b8e808ae4", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "293ac03ed0c5788ece97234d07a243849f6779095fd6d6b48bfcd68e49d1c2f1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "fd04b065eb272e74efb3015e4efaa98d707060cb596a9a7592ce2e85818d07f4", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "67bb7bf9827a3c3e402a8d5ad9cf4408652462e294867e00b1eeacbdea8cc7c3", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "5e60bcb1d58cd1c67104cde3baa542d1ae90bd29edaf5a084ee4a79f0c64f6ed", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "093f2d9fb3497e9929debe893c3062cc518cac516306653b06978eb8c1a88768", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "ac532094285713c41f423ee5367c495812c43d40237cfadf8327fd3d8152c30d", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_signidentity.py::test_sign": "0b1cfc79a5b5b976919b306c6220339b232f66b1f93ee06c80028aaffcd499ea", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "28cdfa4ef0f09a683e0119a0ba1867332c5ca18535d73ef58acad0262dfc35ad", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "d8bd632d3bcedfb98d6da05d1e24b0f405d002cf4aa993e882edeacbe646d425", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "b5b58cbf597a51908bc846667e69fed75a462f2ddb9089be1d19d6a3ade43477", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "7003f4f14de998c6e0e773c0c74b605496397a47d6b5896bffaa6d6b1b5308e4", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "77ff93d1042b63b30eb98678c55e530fb7c9fe9918eec35882b8699efb0ed0c8", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "c5769aadf4edd4b1d3a644c4aa60e07db6baf279dc38b4ddad443b9a44d53dc1", -"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "37399dc8cfdf98f187007e8f64fc7612c2c7dbc5ac74c1201cacdd4615236638", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "461c082bc6246c20551898fec61a9e7f9bef4505d50cdcd675a3b6d260d9e6ed", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e19fe95de47e40f7f2a61ceb9c002430cd55a2bf0b5b373ebdddcdd72323bbea", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "307286e98a473540abc7cd8e2030a90e36d3d4600ec34ba212c81255247a5628", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "29777d5107ea49b4e04e8730f178ae876b5de5e2b4c1181fcf83714330b3b78d", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f63d0dd2f531b73b30882b719af8f1ab7a73a2cd1cc4e2d266a7b7c44835582b", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0b5ee74ba3c3fb18fff92165224915df64758dcba5328c34ec45dfe83a17b2bf", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "09ebd80dcc9d7a83ae61aba89cd6d765a49d695354eaa8de10176bb38c25e8ea", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "44ba7cbdbb2d00f1669f37391f06c6257d72ce3c5a609ecfab561f177fe617a9", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a5487ceec2a9ce0b770043324dcffa1e3939bed1f170582a81fd4f782341d85b", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4552050122b494d538e57bc62640480169ac23eb5bd51f9c536ede3208105f6e", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9cfd571774ffe61fa707d42d29b419992ff2c1a531b5cc8b217055c9bd1c9e24", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c9261f4860afebaa6db020c511407422d11ed08af50082c5a3fd9cb53d610734", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "479c5e6b88126d8fb9238f93132688d8e8433b1c2bc6e46e79554cd4bcf3f58a", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "ad6854beecbe25090c965ea4b3ce56c576613dbb2536f10e560e33bbbea370d3", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "54e17668f5c66cc9aaeb374a1faeb1ac3f349011270a29c8246c98c3cf484854", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "60dbf5c8aea5c35a7a0777718beb38b0f8e56663c51c2e5530ff928e17e22cea", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2d341da46fa9a3400aecefe493183c4666f292503c1c06944f6cdad4bdb5018f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0b5ee74ba3c3fb18fff92165224915df64758dcba5328c34ec45dfe83a17b2bf", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "959e031abbfabd4ae6a0eb293da80b761568564d8dbb4dd2d765d03fe56c0967", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "551d3f62b3f454aa22b96e6fc0067a1c4d9dd1e8f773214d7f7452afa385620f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3a67bc3443050f96d0c4c8a75fd530a56e10ac3475b2e0091edbf23206902e63", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0f1c26001259b5ad5c7d76c829f98840ef44ffe2983d5421e921b4cfbd262984", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "882411d64d76e6278a6d2fff2d7aacad8cef900fc262bdf08377072a653106f2", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "3b3aa844adabee59c61bfe02dd1da657d6158f6b72fe67453acf8078ed047af6", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "12dc603108d008cfa24a397f94f0843fd749b47cc0eaa3efeb3e70a9cdcefbfc", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "985ac0579e31affe6132031a379da9f04c1800e955fffd568c5d95e9205eecff", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c186283f2b9fd19bda632ade2c582b069b45612a074b0299a35e112e996f988a", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "089c3f2a77b2ccc054a7dd6b1ba6bb75a172a78c720c8909c9ab78652b310063", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7aa840499711432e69917f40c1d0681b5c2a0510098a5b155f110cb1608f4c41", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8ee942007e5ef72baab7fb67a4eaade25e48da2aa92ebfeda28fda4177572467", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5657e597cae4958fc657bd768d179af28f3469600be95af950697f06ab83c7d", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "6f0f0a6bb0c1a5fabcfe52b2585d8f98e315b92e0d4555e403d6a99bb102ae52", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "923e5cc4751b495767af1cf61b2bd67c6a2f99af5b87e504bf5f3fe5f30a934a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "613c89d30a66f5b3974ca7287577724c1ca62d7fd7f3f32b2ed3dc2fa0ac9793", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "20cfcabeb734ad17ea1dcb205bd8cc7604c00b220a3fae743d19ed0d0ca30399", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "982d5b3920ccaf05fc27f10dc3483c227b25d5c9f7b0d6e2c051bdfa8a769a5d", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66f0483d3a21a3ca9c76b5bc8cd15ca8591b03470d4fefb85e385c2abfaee53a", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dd8d37b2e9072f6a94985ed1fc055f82c41f0387e30aa9e515e7a3ea17ff0172", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "7bf8afc91858365fd751c24e2fb59dfd6dffead64e832c0d6879ef2c1a1bfae0", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "352a542ff97ef2c58424990a1ce65e6218d714255f0c4c66b2e71d126c347494", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e642ce06e0dfc36df4cdb5123f3f57c279ffea64b99dc542dd33b32760ed831", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "edab79cd58b78252329e58f2e9121d76d75fdb1f2ed7f28f026d11e98155ee55", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "90afdba84d21e6d31a834fe56b16d864ee93f84790d61d4d96758fe566212d1a", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "61b4ec9a26ba8314dd023eb1fe9b04b30335f751cb3ca6367138411eda9bd9e6", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9456e28a0f41172a78da9092ac55ee9af329762a970e43af9221416f7bd620d8", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "725ba3feef51baa9f554d8dbcd15584f4c2db8bdd3e13fa1c7151b647cadd636", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "421d62018855db2e08657696bed81e9205a0de23c118c19022812e031b6858c4", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "6e6f294944dd0b70e9ecf9188bf87177358989e62c2783cbda3fe6f7d2980c82", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "0990749ce1603746943f436410f2941fe4801b1abb64666be8ea219fe919f4ca", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "8d5e70d1bfc4a865adb6af4349ac42835ffc1fd3a5e0865c8bb6f9c11207431e", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "824c2c1a893c61a99ac72d42a8ca7ef7948552a58f7ee957a71d75e89afc28d1", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b309d97f8b2f802449e1e899a409b9a3175b21706f3a52e948390c37f9bc1942", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8193620e8ac2d55157d048e9f83578e223d33b272b3e96d6fa91c4355de61ab3", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5839ae74faebac1d76ba2ab2dc116f72dee4cff97b93ee69d46f82568b1aa1ee", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4b66df8902d34a1dc5e30848900e24f938ca7852aef959ca5e9577c81a1c315d", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "96f5ce353e31e08e8d4e4d23143166105376e0f8f80a7775633ccb716f356622", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "4041515218f06e94524bb6c2c069a513ada843470b98b4fdc18996a812e746a7", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "2e520043a1083093c1549c056116c1ab720b9717743e159b858727a284aa554d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "1c053f6aa323a7f253065e34b69a5a89d7587b2a8c0a5de8da6a684b396e6041", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e2acea7abf37d39e4a7ff0cb1a3d926df4cc34f8dd8282e9f8b9d1b2f57bf83b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "18afccd4e2092bab13a65aee64b159a221885e11f6bb7c18e8861a8bc860cfa1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "3a6781abfde7c205a939944de3728ca999305751530963e44fc3f0121b02bf94", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "b7610a8c02b0c01c86f810a969bf9bcf1dff434c0d2f172aed6e0fbd07867869", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "64b8fa951e4ee50be46204605bd00a78f2f8044e120d3ad6fb9aaf33a53b86d9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "f649b403956c04484457b033a57b73adf02dfbfe3b8078357fc7b886449be31b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "02df88c5e0e86c47e269404d3a6da0592b280a5c4d101c1e25deac00cc24b1c1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "59319746b2e943d76931b8a5c5dbd66e54e26b1f09cb8dc5d9cb3df4ab90c04b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f19aa4497a7018893859dd150555d31770685aeb43c71efabcbf1cd4a679a50f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "c70d33306b9339bd56043e90a477bce9f994c84c44efcd90b15d2ae60268b641", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "39494cb85421cd40666fdad39809f8412103561f29e14da1a89f520873b61a57", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "0ff101e8a3aaa4bc1a1739078724989bdfc6cd79b6ff55ad78e693a7e6e6747c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "a736faf2b593fd1edc606ff43127cadf525ad972e7e76eb4a342b8f51c5815aa", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6102ec2958fd13070ff41cb540f6a9721b3e744321b2bb1d3e7d53e52a2b54ff", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "008c866474044627a97362c78efd49ade7abaf4ae32535ab59e9ae098c1cab01", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "9018604a4d5e370b7d5b0d6e431e0930ca8c3fd11cb903ad42d001a5360136c0", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "ced6185aeaccf21c0c1d2b4453eef7740cc401068f9d2f02f1dbec5b2a0dda88", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "92898fcbd7c234c468a18bf0535016127a11375b65c5c4a7bde47c9b535f027e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f5d24499f35006dbf636aeee97f5d5fca8e518e4f097d25e4c92b7565b37e223", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "1644ebc2c4f8f425465c87a31aa7bb93036d9c6f8431f8552606461d1c87b4ea", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3fb6e36a14a965a22268381b8aca16f2b1c9100536fa1fd26e2c14d254071dbe", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "c12520413c3239f1e2ef78d1ae1fa097149591b86c859cdde4e7051541ac0051", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9f86f40d5e846f14098140e1140ecaea9286ae1792bd21229b0a076cd4c9cafb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "244b937958ab4aef07aade8a2c3d75f0ce7aef95c57b766ae301c8d4d82a3f8b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8180416688e6dcae9688f04d4c18dfcdfdb1207aa04a0bc59dd6836ba19b6055", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7f79cb79322432ade5948e86a73c372891d4f38756f4e5b510843173384ddb91", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "0c64e69e33ddb40ea35f4fe6275ae18c495775f37d03ee1cb6cb3d7e526a80eb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c1903a4c772372343b4976dbe9b7e6777ce0b09001b8ddf6964341036ec5dfb2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "2419c6ebd15271534422be2bf43bd98f8979b68a2346ec2ecffc08dc06567e32", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "95e6e7ca8e791b5f2b9a1af0c0cf7dd2826aa7dff8b0df86cde4290ac466c774", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "308ed7cbfd1483bbad8b8f4b2ae76220a85237babb76ce5d68bdcf8ca156ad13", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "f807a41c4689d50b95d2b5f9c2934392acf225bf047012b3026695821cb5d64d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "7868742b0daf4afc457fceb03cdcf8c2db5a36e0f4f46578e2da6f0dce9f9cd1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "09827fd3b4adc6b61ec8477c8d9b499b38840637cee174a9eb987943ac9d1015", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "c3e111939807a75a6395ea82ceb18185bba8c497388302a3e531d4f8597dbce9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "13aba000ca9f6197063a2fb247ec83a2ad98c1f7f65c5264b501def570175b2b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "10e9159672c9ad670a033f8d98917b74fdfc66113a6b58236bfdfba3a9df1681", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "1bdef1c296af49aac736a657ff0828ac88882333fdb18777723754d1a48bf8d3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "a243c6ce6e9f884a5627b2b40033d5b44d8e6963c7b8cf2a817521598b2b1936", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "4f1214b6f77ee639c830f3df22c7d6e5682e111f5d39fe0618e923b9cd7df289", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "3c9a517bb6183cf85929b6cfc52322f49fee92d9958bab2c706e675263cef095", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "31be122f3dcd2c761fb2381062fa6b122d8c1ec527688772f7eed1deb8e57a14", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a1a845dd9fb9d1e1e588ac9c50a947a7f27eac9030d562cf7043953f7ab53b0f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "36f432d109431c7bcff0548d5c3c04b118cee90fd8049e977252a827f6a02157", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "4666691a219e6d1b7112494b841bba70acf58c0bc5e9c6d6e3abeaa7e40ae902", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "ab0703c8db286277873edcd6350b0ce3365460cf897e07b3548d2ed32506eb7f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "344979774b4d19777f64bf4a57116af5d3f2180b3751d251fd160b665ce2b6df", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "fce7c4365b09c14e982763fa408b60066ec82cf806088309335aaab4942aa423", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "637fa17b08e64445db7f9370d2335a62d7cfa1d528a7dba8dfa1ef1c7c13d57f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "3288a48967eae9742f673cd6c75f388bad789b959f3cc37edfb1be69b45433e9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "911112f2593444ae1a38bd2c576937bccda8829b7a39a20750a9d723a3ec3364", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "6125934cca06744012961d3fba45171cee9c76eac60e263a77c5f6f5411e5c47", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "a00e68bd000dced7941481113287af58c07ea8facc9b8a4a650d11e6a6472822", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c1a8b7e9e5aa45369313d2ee56b3beb59e58a99ef46856b3fdc30a6d35d29200", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "72efb6c21c1f3b17843c914931a46d609b35d7928ded7a324e5d6c5ea67c43ad", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "28ac29abd598ef153c64428653b9ff7252336bb4f55df458612be10a70381a1d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "17f54ccae09b3f7ffda8bc5341de154d8326c83065620cc9e2586da2451de7a4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9c4fce94adf5bb063d88243bcc52aaa90562ea42d01c818df3fdc8c9f9654c23", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "244b937958ab4aef07aade8a2c3d75f0ce7aef95c57b766ae301c8d4d82a3f8b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "dbc69e12535f81fd753269c23d54ab21c1b416b7d9979fd051050fc9d690db5f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "40ff28d04a17d65c6f762732d501a844a9b2eeea91b6033bf37b9552438e6cd8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "66406059bc6f863a02b9f9be09cbbd38201685eb5630fe2ea1d5ac33d5b2ad69", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "df5f6aa0700f27b48f91322d3ae0477a63a0439bf0f96975661e5345b70bc6e3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "002710a209a2d8d0396c6467f52bf18acc232b9c7c16562a692747412a0dc1c9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "30f5d9287bb8223b316818d16a59c7b281cf03fdbcbb6136ef354a95c4f89b78", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "eac4b674933ba1cee7845622a55860e1c880229edc4bc36f8108cab75ea763bb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "34438040af9debe5b90ea63808a80f9ea8ff9158e4adf357d425126091a5c3ae", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "44b1f0c96bb1eb0667605ca08f5fa203a3a915ae2196a17f3f4b94748ff37fe8", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f18098294a74d265bef3177ada55e65462b7d97ab96ce359848d4ea675fdba76", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "290e77fd771d2a156249fb7f310cc51f5af2668a9e06d677877fadf99cb0bcab", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "3ca15a6cb8954fc65a42ab6cbfe44aab3200d462fb6c4a12060961878a06121a", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "350600024a2dbecd1e91dd18eb010eedfb7afc8eecdef19613b05010ab42539e", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "f5c0ade0d1d7f62793f7b342078db16bfbdab9dfd09c29677a06fb79c6eb9eaa", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8622a7e5550b0f1dd72bea90e9562dded579b415c5a936e0c7225c3bfad7bf5d", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "260e5af675320b8129326cd4455dc262326e9f5f9a8748cb75067e5fb337fe56", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "94ea79784eec4a9332f8d58f5a863018af79c7bc8422417c0739368af11672f6", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "4ca9659b5b1e2e52375281bd1b215d95fe6b5367eb373b205836d24be3a80309", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "8755603ba764a8c45c201a7d0f2f0dacfc5a32d26d8913533d907022185c192e", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "fccb778f08df707fe3b91b033e43299c60b3a69ec3b2c1fb319c5db8d148caee", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "c013b8c6d5e58d10594cacfd4061807bbab90a34511e3922060d57c6a2e23f55", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5d367b266ff12ce9f804ebe481e504b1a8d2379db9d4f1e0769da5f84dca61c2", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "120d89ad421a262518b79e533c106b211a61d5422d2b80fa93b08bce0f4a3f80", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "40f984810d5707f7c5ce8d39c22be2959e9f6c115b5566ce2c0da4d9eb491268", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "88ebb181169ffa9f5fa882c24ac17c6b060cfd7ab4d95b8f016e86071a0c8836", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "07e1b6861046fa20c80930685f5be2924b11eea094649b2e7d19dad0920a1962", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "04060da27823499f148b47d0a4430611706b74a52ffd05da9ac637d77d2cc895", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "fcd24a2bf50f0079ed28ebd4e1881af7f8d6ce3bd7c0e872c4e9721790805ecd", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "4714c07652593658706e7565eefa1d22cc80346b1a78a609029b17aca0c03611", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "e1a275949682d6ce0b2ef1b3a737753861dc7a8d64be676db3483300a7071f6f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "40193e00a6dcc4c2c23e900cb56768a69055911e5dea157c88ffd284b5a8521f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e7424a358469d42432327de13a97f5c114c6b3ca49270d013dabbfcfe845a5a5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "04f216aa3eb515e4b32584264b471e2ce236a34d19ee08da489056304445c2ba", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "ef10f18b4d9aafa055c4a01cc0992595fa45f67581a10c7126990d7f4b3e9ad1", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b3d031427029f6ca65e97e19cd6e8302169516fa64041572fce85a862412ca30", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "2ade27fa7d4c00048700657b3ac611a3a02764a89cfb6f7ed22e82ede96b3719", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "f7730564c3c099a41f6a0859006e84dcdaa15a635dabc5469e5e6a1ca88b7172", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "febece91aefc93a8fbc1c0a50b4330e24508ed9c89a522512ce9dd3bac62cb54", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "52ab917de3de4e7f1a714bede85f98eb0aed1f74dd4fd2d8a53825c29c82aeed", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "cd232b4b9f25c2ae581bfd8ec9cadd98f7cc0a6d6518401f2eace6140ffb175d", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "bb645a9b35fd4e61313e86e8cb39e947b08a31de888f0139e7e007f9e58a2a10", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "da2e7fb4356ea2bf10daead4fbd2a6379563db14db7315f46ac7f868cc95dbe6", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "988ce8bf3de4b06ce7c52bfc8a22927c466b8734fb0724dd9279d6056032d843", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "a43c92299f99bc6e324792e9dd5ccda34d2adc8fb8e7eeb066457809f0b257bd", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "8373067217cd5268ef88f4851d5c94354dab27499b3a55e5c290c1084ab7850a", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "ab72112521b7870c8083d64403f9819647ec74865210283c2061853e24b56f08", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7c7e0c9ff137483275d46602cb09f49fe921174dc7471483a4954c9646b4cd44", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0f12806d102cf868c3b73ccc1e15bf817789413da51d6e15f1fc9004ba5e1bb9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "6567ca10b953485c27db3b013a9a16180dd8d3fc1050f88c718223995f94283c", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8f58708abd7c2abb6bac0f6233547e39ffa835c6d0985aa010dc126b90b46251", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "de1821ab4a72ff67c3f4f19cb9c8e2b56e05c80680735d0339782c8be1771c61", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "7aa7edfa224e4a35985a780c40f2c2b820c6b6a59da0d21490ea3efc0dffe70f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "70dcdc49b7296999b55c0ffae6898e5758634bcc4175db294357a564759ae504", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "2d2f8692dbe71ce565dd78849dc888cbb94eb2e4cc63471de0b50930eddf134a", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f3d01f3d94588d4f0b7be2cac2adef0e163c7fbcc1227771722b160b5197be12", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "9699503349c6012c0754b6d6761c58aa85ee253d7c75e37774f97be4ba4ac140", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8775fb7c37a2948937d1fb992199b1c9d602aaec65fa7db31b6133b8b5757955", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "a5d3be33997d684697091a2dfff21ca9c4eb05999b7b1042a65534600e6590fc", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "ab72112521b7870c8083d64403f9819647ec74865210283c2061853e24b56f08", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "cf1f6e8a230ff0c44b7350a387451e3793daae19ba2b862c77ef83c3d48f6200", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "cf5d7ad864c98003714bf35f3de31259fa84906b034868e2e08b4a1963ecec6c", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b65af6d76f80fbb23e21bb6f23fbf03ec83364ae6cf94898d2ab217f9190e90d", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "cbb5e020dbc5d2b1f9081e86d04d055b523eb0237ecd653a8be0530939ff2e38", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "7009af68aadedb76de4c60f385ac2e0604d43efeb936cd29444eb8a480e4cac3", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "094830cc0caf1f77e1526ac2ad5a6792b4f2315ccdecc2b33f8c5f5ad4867ca0", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ae38fed0764af911875c674a66a14f0b6650bf3368102da2a6b1dc5a5ad400da", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "618bdc08c72cb24b7816fac7a7b4906bd67d1ebc5da82b8ecbdf00e297c9967f", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "b8496ddaf77c1d446218102e4322c450105996daccc134f669b0ec60d234040e", -"T3T1_es_test_autolock.py::test_autolock_default_value": "3c5c05e4378beb2b1d2a0bc34be7bc2861c8b58ace7d64c7b981dfb30fd50172", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "eda151a4b51adc8a2cbc58cecce29b862a8c7fae430ca33176bab859872df8b2", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "eda151a4b51adc8a2cbc58cecce29b862a8c7fae430ca33176bab859872df8b2", -"T3T1_es_test_basic.py::test_capabilities": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_basic.py::test_device_id_different": "66c1837c51814d93d1bae35d7ccf70eefc047f004d8908499d24e1da94e53ecf", -"T3T1_es_test_basic.py::test_device_id_same": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_basic.py::test_features": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_basic.py::test_ping": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_busy_state.py::test_busy_expiry": "da280d408675fbdbaddefe467ce32f0fbd64726f8935dc5d49b9d2fe969f7585", -"T3T1_es_test_busy_state.py::test_busy_state": "cba9b124a66e083ae97eb0588259aaa7567a8fd03303d42645d9f51ce4a6a2d0", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T3T1_es_test_cancel.py::test_cancel_on_paginated": "e7867645a35ee40b80f8a3eeaa122571367a3d3a1f850f89f5f7b14ce28522d7", -"T3T1_es_test_debuglink.py::test_softlock_instability": "feba60e1880714c37e5d961dbdd5f5aeaf7b283d946be44d8309daad7fee1c98", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "6f9a2eb356b7054881d6b60116f6f54e4884835b3b3881c151ba6ab5f32f8560", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_language.py::test_error_invalid_data_hash": "e2247117ecc9e7b6beace557014e50fe320236f31ee1849ee1183f5c0e24042f", -"T3T1_es_test_language.py::test_error_invalid_data_length": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_error_invalid_header_magic": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_error_invalid_signature": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_error_too_long": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_error_version_mismatch": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_full_language_change[cs]": "b4fac0eb57f5f82f94c405a0330d461a5c796fb30036572729764e1960e0b86e", -"T3T1_es_test_language.py::test_full_language_change[de]": "e798172fac192ebca9f768086bc6f0674903fe4cae4ac7bad41c5893e6543125", -"T3T1_es_test_language.py::test_full_language_change[en]": "cb67a2e2dfe9144a9c9099501951fca5cf7df2d034556b6a99598311da342e5e", -"T3T1_es_test_language.py::test_full_language_change[es]": "376683a130d6ac67a2c79b8ff3d43249fd60c3927322bcb7280a070a3aaf4cff", -"T3T1_es_test_language.py::test_full_language_change[fr]": "b6ac036a7eddacbdb0066ce4589324242935f01c9af9523df89b32d3bb34af28", -"T3T1_es_test_language.py::test_header_trailing_data": "a8f1cd89bfdc467c55dc2c98ae9d976f94070753d73985818039e1ccbbe4eca5", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "2edc50a8f1f84785262b6993e663bafefe4c94c74758fc1883e0c81d8a31b82d", -"T3T1_es_test_language.py::test_reject_update": "af4fcd9735b37dce8a96d113629cb38e9f977dca094517de8140f3195f899f27", -"T3T1_es_test_language.py::test_silent_first_install[False-False]": "b9593b319d4fcc9aa74c3066ea8a330ff9cbddb6fec9231248bd3a9b6771c3d6", -"T3T1_es_test_language.py::test_silent_first_install[None-False]": "b9593b319d4fcc9aa74c3066ea8a330ff9cbddb6fec9231248bd3a9b6771c3d6", -"T3T1_es_test_language.py::test_silent_first_install[True-True]": "f24b09dbfb547c2d672b185de63b10e4c0cbd625c91649deb3c51d1cf838d236", -"T3T1_es_test_language.py::test_switch_from_english[None]": "08dcee097442f4bf73560ff86180332af4104d81e165c0428b44ec2319143386", -"T3T1_es_test_language.py::test_switch_from_english[True]": "08dcee097442f4bf73560ff86180332af4104d81e165c0428b44ec2319143386", -"T3T1_es_test_language.py::test_switch_from_english_not_silent": "e9783608cc1ace676e131ac0060a18d4926cd83ed7547cd52610bbc252f38f9b", -"T3T1_es_test_language.py::test_switch_language": "1689270753f434ba1480e00f4a7052fe84e39125f87ced404ea3229fbb156f5a", -"T3T1_es_test_language.py::test_translations_renders_on_screen": "fe82ef54f571300f8bb31f525dd97a6625f39f3c1ac117360753beb29d610132", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9cdf29017398bd44851b0d2b98dc1e721572eafe724fdfd9278ba50a27d6589c", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "7fcc2e5bf7efbdd1ca6cfc4d9bb4fa8ec3a65839b793f06c321991ceab806e29", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "cf5665ce7be41a28061647f55888a757550de03ab7bc1161da560c5c8aacb1c5", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "82add8bbbe096a95cdc31709555073feda73af3335ff4b7295370f5116bc99f5", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "808621ee8606b2940bc2de9350534f65ad079d68314085017556a5b4f9271e48", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "269671a98e634286dc482e0d455e33a952aed5b2e480354b0f8044aaafbd1fec", -"T3T1_es_test_msg_applysettings.py::test_label_too_long": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_msg_applysettings.py::test_safety_checks": "74b8d81ff4612e2a0c2faea87ece873b1ffcabe7a908a0f8896b76b075b56917", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "04b3ec63607e88360d839f8d9a72a483dfcac380dee854ad28af9e058d9e5e92", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1c2b031f987f6da61770e5f1ace16901a0b571ad4448d905d887549c1a4db9e8", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b2ae1874093b1ff319eff75bfbde15eb1e5687af0a7e79f2b506a632def0f77f", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "5f8abaf15f29392607d25f65d45b9f6cfc57b0a8db6aac6d7e22c414b84b0b22", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2068d1da24f27d6c519c6fd018ec99ab499656a53ee09fa293f60a4afc09528a", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "65a2130e4039bd172f7d97ac85ec2724ee51df97cb54c9eaca89c65b4e95545e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "98999a9ec999aa2a29069d233a3cd043d3d9735c071477f0b14d42555117196d", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "8d9a45d619991e6ff0fa9d1fce021afba180aa4799c4b83373678269f497e6f3", -"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", -"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", -"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0b93588639729d595365e9f08e6b8fe3e0006b45277931a50af79d11f25ecb9a", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c122f12ce28406bc09fba1e25368fe9e204a52d77d94843a885d9f2b4a97811e", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "9367f80f31160a72981279b6642f552419bc78e5bcbfaf0cd84b4c3d2cd1fdc8", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "73b403297a2160cc9a477626cf4170f4a8879ee35a8bfd4f5cb14037a6ee7ea9", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "101d4a36a62dd78ae91293d802bc0ad405d65e52f50792452968fc6d7fd2039a", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "65051eba72b59178e2235b6fa874fcfbeb880e74e69898cd6e33a05de7ff99d4", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "026a511c9a7eb63f41c16c69c628a07cc46040bf62fd34de5b1973b75e459e9c", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "e8e63e04a31f8717f2969428315c072e4881dc7faa8870966926a2c6c07c15f4", -"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "1da77be1a6e89083f539701e46aa2d11c26b8d5571565cd3f848f5ef424865a7", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "c68b301950a34a3fcc8f1fbaa73828b5de58a70a9badbd1738d8e6083637cee4", -"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "2a5c917de03ae51cf139d3c82d3c58955e3ddb9e3aa394cee27422f0a54c05d1", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "b7e34f419b1734e91a8b632a61d6e9a71281a4fd1f4028ae16f67a9240132ccd", -"T3T1_es_test_msg_ping.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "108afdbc04d811b6f6ee12227785ed51e817c5b6cb49a480d941bb70200b54d6", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "aaef7d8707efa4b5ad629916f1830ef65b5479b23a344603f8d5f14282ff2cc9", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "876a606f52720d2dbf32bd68ddabe11f34ab2e8ed7d29e5515fc58f80792ed76", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "714155d406a8d19abf82eada80c7b0f86ad96d31244ee1270a015e0710216ad9", -"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "66c1837c51814d93d1bae35d7ccf70eefc047f004d8908499d24e1da94e53ecf", -"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", -"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T3T1_es_test_pin.py::test_correct_pin": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "1fbaaad95161ff4da9e2ae7ae37e667870a2b4564828418962d524391f0d7956", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "0b7e28c51c526fcf8faea694ee0149457cdc9ad66ff3ee2983a3663af502a6a3", -"T3T1_es_test_pin.py::test_no_protection": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_protection_levels.py::test_apply_settings": "5f9c4bb58eefbed5acc59f4a85458a2572ea023a6de948d32c88d574c6d53ab5", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "a2e2590f6fae46c336b2f463ea48aabde1348f8f1d4630779d3cc9b50439b355", -"T3T1_es_test_protection_levels.py::test_get_address": "9cc79cf8650a318b43444a136235ddcdd432d8edcda4485532d0cd05196ba07f", -"T3T1_es_test_protection_levels.py::test_get_entropy": "e6fa10492a4b48cd06475be5dbed80e207e51c594265698da6fcbdcb5bf64ce8", -"T3T1_es_test_protection_levels.py::test_get_public_key": "9cc79cf8650a318b43444a136235ddcdd432d8edcda4485532d0cd05196ba07f", -"T3T1_es_test_protection_levels.py::test_initialize": "3301e669f223b8655abc70adc8ef7da57873f02ca54a4b7e473626fecb9f9b4b", -"T3T1_es_test_protection_levels.py::test_passphrase_cached": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "70d4881f9ca8b6b71be4d2bf0672509fc448a66dc72e35e673b5629b57e7f511", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "cdeb89d2802a7fe659a78c749afed9ac2904372d7e71ea2b61b994557443b67f", -"T3T1_es_test_protection_levels.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", -"T3T1_es_test_protection_levels.py::test_sign_message": "aaa7c9cee8695dc818d84eac3567288a0ea4aa66fc0e83c6270f2a69bc2cdf43", -"T3T1_es_test_protection_levels.py::test_signtx": "2a7bfd737150b2c82a4cb7a95551c7a6c5ab5bc2ebf62a6d4877b5f242fb5f25", -"T3T1_es_test_protection_levels.py::test_unlocked": "a18022b87683f056b9b7f0491f68edb9c4ae920f52a3c892c6337588fa4cba89", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "2a1d23b1f8cc7402cddaec723c9bee1428d59dbda0a8bea672c7d314959c8f10", -"T3T1_es_test_protection_levels.py::test_wipe_device": "9d9fc01b1d9324989e5acf71e938a2f22dc2470b65922d76fb0e9fd8f55cfec9", -"T3T1_es_test_sdcard.py::test_sd_format": "a95a337a1098c2f6483fbeefb953f7277189d03b38f792ff8cea7cee47549cda", -"T3T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "7fc9da34627b3ec0400e6fd83c9c156374963c991c4b787527e4692daee6b177", -"T3T1_es_test_session.py::test_cannot_resume_ended_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_clear_session": "d107e5b8924f295b0db54e6af6368c81822705508c0983fa14567757df1f0bc6", -"T3T1_es_test_session.py::test_derive_cardano_empty_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_derive_cardano_running_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_end_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_end_session_only_current": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_session_recycling": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "c1b4f8209829a6da7445b6167738988883a0bc694075490e75783ceecf537ff2", -"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "ce77813e7227ff5af41faf8f6150af2b87d0d0ae7509e6447f826ac3caf36cba", -"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5198c4b55df400132abc4eaf03daf53c552a93e7b13ca7baa2eba39c7065cc82", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "cbb2afccd5ef1938d1d86aba062807c58a365b3708f93d85c8b6fdbd3ab99fc4", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fbada0e47e70d3178eb9fa71402e9dee562f3e2a98df254e7a7d5a04c02b7791", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "5b8894a84f8134993d8d770260b53a189cbe09208e9b9994341add078e6766a5", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "cc47f9742cfe8349db52a3917fa21befbc390abd0e0bf3484974d09c6cbfda8e", -"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "72c76052749ecfbc285d6b0a36f309b40e4c869c168118cbacbb7aa9fd17cc09", -"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "90973652670a2e6fb41b34f4c48f3c9abba80d3e6f41691f78659bcb91b8a5ef", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2e7b27ed5d4bd60abd63d89a9b202feded6732b47388c95c59d711bb2a7d35b8", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "fce669ad118178bf67066aeef778e16028e63dadce84337d81232abd241e56a8", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "55ac235b00f0084ad9975ed77ed430f7bec60ce9bd44be26edbe040c63d13dbf", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "7633a085ff69e32fbd6fe949f1d277826ef7894a8e7d26081f320ad97c153e13", -"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ea1194f7be788d0fc8fa69410dd59ae838fce2d34de4cbe414852a403e2a135e", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "76c4436562e82ec6268d0cebb0d5b09d819b90f47cb2bb87459f6aea0c600c7a", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "69f5728b5b51fdb335af47c634f5b373fe4197a5d6b991fcba2ede286479039b", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4bac64dc2362b1c2cd359d513e3528fd104c6c3426327e011af7f1de5947b641", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "2ea80448ee8e142036620cc6c75b2e9723fbfd6576f00c74f8570afdb114b721", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ebd8ddd04365f7adc5c44c1bd71d63b9b8525a6c067b42c60e780f87e9151807", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "98af1b069d8d2ec445e299026372d52efef2d421c83ba227751b7c379aeed62d", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "de2b7c37261754096e95d7e04641b1752f6b6e20f28caa865837e1ec95fd9f62", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e5f39fb25c07f25efda59a6d2f5e98f5fdbdb290f43fd7f7dee9aad750fc1ec5", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "1dbb85770758f22114c5a284a39003ab0b08f97422e397257297687058a80e99", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "02efd68c800748415e2916b23f2294a0db68d7dfe85c2310abf0968f38ea294e", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "8ecce5a25a8b7f20ed87aaa9cd95ee9f3468c4d52f1f464fe5b5fe65602f9911", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8e5604ed25002ef32b1008ced0613b09f4288bdd694be5ff39c4e5388642a834", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ad73951025fa7db7c193ed33d02d7706ddd6851d57a70ced5206a8352fceb822", -"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "c5368093c0ee1ca1da67bc534c236a3d7edb3ab87da9ce0eb8e1e7a9ec109402", -"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "f44cf2879b0a2d56b1ffbda98036e5c137249084a4a5c08bf63ad0b73f331718", -"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "9d0d1c4842438f4d4d8375dcf53a3bdd8579823fb76be72e9e5880d2e0a460f9", -"T3T1_es_zcash-test_sign_tx.py::test_one_two": "8bb09f62f4ae5b5432e7b5377f3f5cec3312de5f0a70d75d74393887e35e0e83", -"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "c1af7d238fec54f5832b9e36a4e5d4baeb86dd765ab6d824d828f1db18a170bd", -"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "061f1075cd3a1eafafdc28305444e94b929a2ec6c49843370a9e598e86075c27", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "7e7b0c25a61ed2868d8d22680a2f81dbff3355c27b0189c47b28026447e55b2d", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "e34c97507448b0fbebdaed6a95d761853e2ee138dbdbf253b2a35cc97702bd81", -"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "2ac6182461f382b799b2e2539b942b08cb48a957c5995558a12b97dd5b12ecdd", -"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "afa20db351f0564115c2711f555b3279688b0a9ce177581601be8d39e5a138f5", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "7ea45cf6a3adaea6ddcce2e109852af1c914fe90daa4338f981b0195d5c28926", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "d2a2787fdc79ce54707d28c267cf536b0568bce05586a6c049bd9a3ddba9f426", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "f13618ac157b732c7883e0427d58a2098b744646c65e2ab5f7f47927889e33aa", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "99996db48c0083cdc205c6542a48f9e80228238842e7572a00b7b58bc500a688", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "f590fb3f4b8a69a3e0feaf58f65a67aa7a4ada8d89184a549434c5a1ec17b332", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "f590fb3f4b8a69a3e0feaf58f65a67aa7a4ada8d89184a549434c5a1ec17b332", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "218c7eef4442e4105565659d8600f60e9f5aec10b67e53f8f5881d2c79c32480", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "e4b10c08b0d94eab8a1aed7a5877331948e0645884946c34a2bdbde039ba066e", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7790c2972c163135877452cb26534364b3dd2c2e9ea74855d7f8e301f63f1c70", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "4a993586370ed4fc771bb737949c7899f430aa6b75c328170ecd071a12b884e8", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "46b15a11d901838656416c3f12a1bb8741c2369c99b2790263903c2b31082bd6", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "46b15a11d901838656416c3f12a1bb8741c2369c99b2790263903c2b31082bd6", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0347e469421f0b70cfc1be9cbe8e55a998a38e4d28b68239abd7b83f8d52b651", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f272c80e61c11bebe60568af893f97535c4a46ab493ce09a1bc2175c10caf581", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "5ba7e8f071d8d398e6a0b15e72328d9670eef64c08f597c91490a049cf882365", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "d7dbaec3a8f9c39c58d030ab1783ad5e8ca9715d759836b06c5e42dd777ceb30", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "d7dbaec3a8f9c39c58d030ab1783ad5e8ca9715d759836b06c5e42dd777ceb30", -"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "0f633e530a38c2447fde5689453c22b5788472aaea0a6f639b94c2485b78c7bd", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "0f633e530a38c2447fde5689453c22b5788472aaea0a6f639b94c2485b78c7bd", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "e6b1a576b38f77555eb91722594e76db74304ca38a128cfb0c49dd7165f853b2", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c3a20512cdb3bd961894a99f2394a7a6dd7b2edab1fd71472e5fda846169a510", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "dd2221808f1902b45b724ffe21ffb0142d71bff83d691f924334b43fedec8341", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "6c94e1fc6a28506199c4ae9c939a900310706f8c28ed70e094b55952b1f0b8b6", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c84232179cdb951ff8a03e92b172e11ea624f7d19c90f9f46ae0da274310ec5", -"T3T1_fr_bitcoin-test_bgold.py::test_attack_change_input": "66ef2ca61c8c8a74420e711a9aebd287dc1ab3382dab28279e398cec92691290", -"T3T1_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "66ef2ca61c8c8a74420e711a9aebd287dc1ab3382dab28279e398cec92691290", -"T3T1_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "f3cdd5bc58a64d16043a952a1f5d73ecf4631d40ec9c6241311d396f0d86e96a", -"T3T1_fr_bitcoin-test_bgold.py::test_send_btg_external_presigned": "922922a85e0a62e902e5384269c42665e1965338c58e201bd1d4859a57e8561a", -"T3T1_fr_bitcoin-test_bgold.py::test_send_btg_multisig_change": "caec88ade3b6a4b9cea523674c975b006428566e04da154514108bb467a9a3c1", -"T3T1_fr_bitcoin-test_bgold.py::test_send_mixed_inputs": "1a90274f3b3512d2b7586dbb33fc8d6f507a5acb2bda504c345b239f4af4f811", -"T3T1_fr_bitcoin-test_bgold.py::test_send_multisig_1": "7865240bfbbdea7a6776d10b23ca5ba413264b67b752df1e16b7d9ca83e2d0f3", -"T3T1_fr_bitcoin-test_bgold.py::test_send_p2sh": "a76d1bf35f9d7a14a84285a49c033e70a2461d53648b85cd543bb0db22a4454d", -"T3T1_fr_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "be144179df24ade3ee49bf03f8e1a0763146cc7ffa40844a03842cfc6eead134", -"T3T1_fr_bitcoin-test_dash.py::test_send_dash": "356d06db25278b9221a08e1a413a599ddb63d8cf0da84b9aef77f3354c8c0094", -"T3T1_fr_bitcoin-test_dash.py::test_send_dash_dip2_input": "e3e432acaba01dd2873c0ec5164f717bc75bc64177f6629d64ba3123d164147d", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "fffd40e65d50d0e2b0a7fc9adca24ce57f761fe1dd770613b3781508b5efb5c1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "140368bad3e036123a498e7b466ed1242de98d81bd7159c4bd74d9944c8762eb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "35e1b88eaef93704bb82a6d359b1c81c5b98e40d486df8bc46e356b0d39478ce", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "80a7c80a5926efed3743c127ffc4fcf253e59ecf6b4044669556363432497dae", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "141c46991c0335ad159a74eb74a3956a2d2f3947522e5e5b5cb546f0f35a5054", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "184a6cd40c4ac5ff417ebb34610443256fb051d57d73883d7e178bf3854bf32b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "843c1d085bf10c22f520ffe8369ab414546126bd3f261dd74d5c428c48b14270", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "9c2df27e2e8745878a646db092830b6b9fe49e9677dfa6ca23c68d755a10ca6a", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "2f54ee240111cb157b7458435b77b606543f6e721b8812201635c4e64d3ba9f4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "0c7f141b4bf165400827dfd23e54a43796db0926d100ada7925e7e4d9e5f59a9", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "89c2ba8ac72d4cd6a750e695fa2756c2d970f9c38d5551f2a3007b5ae290b771", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "434617ff6d294ffd3117d3105fb2d17e7804466dc95204c44b10979fbaa05821", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "2dc71d6f2c275b5dc086b9c535a845174d54674f5902ed300cdf48f582a1a42f", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "38a1c0d9bf202d2520cd693bdade96531e34781ac0a563bcf218186fd64cbd29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a116ceae9cae9005e127664330bba72ee396cdf5274da76344e2e30414733712", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e1252423ecf047d708c39329f22f46dc1c28b6a392329b2e367f06a00f5ca537", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "fffd40e65d50d0e2b0a7fc9adca24ce57f761fe1dd770613b3781508b5efb5c1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "140368bad3e036123a498e7b466ed1242de98d81bd7159c4bd74d9944c8762eb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "35e1b88eaef93704bb82a6d359b1c81c5b98e40d486df8bc46e356b0d39478ce", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "80a7c80a5926efed3743c127ffc4fcf253e59ecf6b4044669556363432497dae", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "141c46991c0335ad159a74eb74a3956a2d2f3947522e5e5b5cb546f0f35a5054", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "184a6cd40c4ac5ff417ebb34610443256fb051d57d73883d7e178bf3854bf32b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "843c1d085bf10c22f520ffe8369ab414546126bd3f261dd74d5c428c48b14270", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "9c2df27e2e8745878a646db092830b6b9fe49e9677dfa6ca23c68d755a10ca6a", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "2f54ee240111cb157b7458435b77b606543f6e721b8812201635c4e64d3ba9f4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "0c7f141b4bf165400827dfd23e54a43796db0926d100ada7925e7e4d9e5f59a9", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "89c2ba8ac72d4cd6a750e695fa2756c2d970f9c38d5551f2a3007b5ae290b771", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "434617ff6d294ffd3117d3105fb2d17e7804466dc95204c44b10979fbaa05821", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "2dc71d6f2c275b5dc086b9c535a845174d54674f5902ed300cdf48f582a1a42f", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "38a1c0d9bf202d2520cd693bdade96531e34781ac0a563bcf218186fd64cbd29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a116ceae9cae9005e127664330bba72ee396cdf5274da76344e2e30414733712", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "e1252423ecf047d708c39329f22f46dc1c28b6a392329b2e367f06a00f5ca537", -"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "2bb10461c18f3651a3558ef318a410b54903bf064cd8af130e0f6bdc3baf18fa", -"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "f2c1a442c4198640d4389a54c10bd16a972227f262c23b8e48376da6423c503d", -"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "79671f57f7b674dddb7bd066db9573543505b4055f317abab3823b0c1915b4c7", -"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "b071a5dcfedb4ef3c03b92aa0818ee06b87b399d7e8033f6607db335d9ff8cce", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "af6ed36cdbcf9d886b2ef31509cfb98b5ed5d155c33f8c8d0e5bee2bbf85b40a", -"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "bd854738d58ad313354c77f6421ab59e0171f3dd5c44f2781f1a429310f7e691", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "71831de0bb86025a17ae34bec570e454d49c37b0e4e1d623a2bb8a5a31770485", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1b1de8725ea34401635dfe632f54380354e493b9d2038fb83547951c6ce0c030", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "06c9ae88bf872289fd2260ac2e11b639ff38430910e4aefe9ba0486472ee1a62", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a44090bc6ec6b1aaa9d3f28ec61f12fa698f59c5b569dd9511f6f809a0ba8333", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "32d941af3ceb6d9f6c646d3083d429bd1f0bdedc51ad8179089d32a55fd316d2", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "503c7055fe475d4ac27567abed181c1be490aac2db161346eb9882dc6499c6fc", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "8c4c9ee3f82c49bf074645a87dc48010d95bd6c150bb6047ff74295620ee9dd4", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "948558c0bf8773d3de58577ceb5dc3884407d3881d037d2fb04ec90f4591eba2", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "6ce1a46858f8f25893455e5903141b98c44a933a37efccfd36a4e73d10852651", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "342b4ecfae0e3bc937be54ea89b85026dd055fbed341362c5fb74ae312ae0fb4", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "da820f12624b29fbc44c888aec1dedae3a9ac58076dfb492b7addc64af79314c", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "874c44abf0b3f54e4c6bc5cdb9ed08c86022a51fe2f7fb2d688af0af96baf55a", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a4fd74c59e74e312bf95c8e66bbff7dd8ffd00dc546c44a17b4bb77e067f9e2e", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "edad99ca6f1cff8ff5032507849ec35a2598b3bedc1d599535189e7f4bc08593", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "be922b6c5344e9e2fcca44a0ac8c01a8f38c41270a37fff0992ad417c37f2a50", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a2c485e323ad01ba7e9986bc46967a60a9ee39acc764dd7c37258d54769d6b36", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "453814a0def895aa34b46665250f6990d5155164ab69d347a205683efafab445", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "cb2293c7bfc753db3fccb490fe70f86a753384a459bbf0a2b3eb2ee0566854e8", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a271833f901a8facb4c84f1eda1e5d0d532ab1f887c9264c32a3ad94374ccab4", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "be5705ac7186168b188f49982a9ec928d6b40d500c2acb3d5261094aec8ba5d0", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "6a1de4601d04a547b22b8016ae2dd2a51cfcd6bae9bb338ee9ccb9ee6db0f9fd", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "d19f9eec4a8f733fb6a6904c25043687e68e91c8033c396a56eec2fd4ee1f24b", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "d7c64b6ed909a7592e6c546fa2be5f6cf5ca01b0353281370d8e1265f2e77c71", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "36d3b6b2194321df017f3fd5313b342800f30a64996c0a5dcc0597afa6795a18", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "36d3b6b2194321df017f3fd5313b342800f30a64996c0a5dcc0597afa6795a18", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "501684c2d785cc02fbb299c8ff057c0724c31c512e3a06e093c96d59bfa78d2d", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "87e2d0f29a48ea055b9f6f8a06a9e4b72a5e93958b27f6b4ba751eb415a90d3e", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "a5d85e064f53444c0d3ed7c68d6b017b7aa15b3792bd9d1631fde4572cd7278a", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "a5d0c63808c51908b1c778b9b9c299d3f17ef5538f11592c01bc28e1fde53e17", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "00d1f0232901bc1eebbab2f5402cba8a7dc85d2d35e7a0d9d1c810c639cf2dfb", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "4328539a45067896340be36a04a023813e6004e47a2ea4021a5fae297d3ae1ce", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "2f8fa318389afc9018dbcf4c2d9d3a57598c5abcaf1bba7b1e6287b2beb060fd", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "6a976ad640a2361854c1260dd1569f20ee3ebd548fac9c28d333b39c93f42502", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d75059a4c266ae2e94e4f127fb8f14e5dc97bbe627761e6adfdda8909b0ebac9", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "ee0d5ab23382e13ee3b3100bd55ff219bd0d10345f5b9d3ff8a0cda1ec8d42a6", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "32d82d44efe31451a19bea60f5c1fe906a3e319f889c70b616bf7a81b847ec18", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "116929ddafd89e53c60fc81b51325c3bbde59978e9c8e8fd35856dd389453b5b", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "f71eab6e5e2d9f359ee444138557533c0ed33229fbf25fbf0325cce4e4b6f314", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "05f1c7bd8f4b1b3050631540d8b6f3df40097e91e5c4ca7c70cbfdeebc1e2d79", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "dd35fb51181f8a431da8a16277b0fa3dd1ce97d19db499cb5572f0666f6d1265", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "d48dc65162716136e9f8e18586131dcde8e0c841e046d95106b2e4a3f8e2636a", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "95d449f6afc64225c126cc7c0999244e4bb0d9d6116f988fabe361d587027fee", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "53de3ee46d4fec973da7959577b6b2131fb50fd65fb00ece121b19bc652f3f13", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "2dda211909b3319f176ccfdde706505723de4c42cf1198f60de5ec948bb0e115", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "3305f84aa220136aa6255d158d59cbc09a24e5202d5ee13fa24edfbf70d6dac2", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "38af197291e26875ffc27002c33fe849db11971b9f713d17eb582cf5f9a2d585", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "df6a1f813cd9b97762ea414c69d1c56b1113dc72505eaf3481cb3f6e81289986", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2456cce5635e1ef4d799ec7f53ec9433fbd9e5f4bdd070649fbd6b52a81d9049", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_grs.py::test_legacy": "9e6c3b5c9a8d06ee697d8245f165bdd1afaedd1a2d1e4bd3a04c507e409bb392", -"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "e2950c89beaa95c476d723f908a1eed34387e73fa02637065b3c5be444090c4e", -"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "545775fcd6149a76c0c87e3c72d2ffee1e9222532443a6a217a1abd331bb9aaa", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "650c3f01dc51d02a6ac8b12596a7618986fa96f54e89c82761b38b213ee9aeb9", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "02ba4283ce884d1dde2afc5975cf0a785afdc5c9b847b69cefa510cb167ab24e", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "cee745cc47de4c104b19837ef38058a8c25afc4202bc264a57bd707128ee27f8", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "7ff082da13862c7ddec6c2a308a0be1fa2f52b5da096e0a9a3727523e75e714d", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "e7db8138737ba15205b3ca664bbe3828dfdf3d7e710192ec02f015bbd2fb129c", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "83b4a61cc53e24744e4c6d8194d705226c23705d73a44aa49940ee82505899e6", -"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "e62839d037f7c1dcc2171528ae4c8fee2bd3facdfb1609e57383d99255ca1560", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "37a0ea5da43a153d86caf82ec7436c261ae8ca7f89ef84f5806c59476286560f", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "cb977e0112bfc4adf4640187ef27bc37a0b1ecfcbfbccd99a4db0681958943a0", -"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "4b11f35a941104698832ed9f6364b5d0d43ff7c5f897756a64ea36c1477ceadb", -"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "e94993d4b850c2ffdea77bd35bac4ac85521d9831e409316b61a37e60a5d5107", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "2f8e40b4cc95998168ae512930c400698dd095e83ffe7b9fa96e7e91f92432da", -"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "85d03db58643121cd1c195a0f03e4125402864c22b23bf0b9810ec8b0a9d8912", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "6e468e0e34a75a1ef660d4a509fde0949f9c2cc1cc967dca513a50bf843d8b5a", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "789b6f415cc3af8a8834bd10c000bebf1744fb189119355e982f137750d0dbe5", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "6b915fea41f1f3ee65eca0471eba25c5c9446fb655310cf873ef25d98b40a1cf", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "6b0746a717c8f170c1fbdc44ad686daede697e418ac23f1cc615ed4b24a3a536", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "044d28e3d24bc87fdd9beb3fceb069ea30347b8482813b1f59d7a340c236b709", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "188dc34b495ec4890ba2886fffdf97a4634b5944ff355169d76f12f131bba8af", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "f81751ecc5e45bb34af4028a3748b710b30e8cc23784b086d065433f88a3ce36", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "d8f8d583e4bd879f2359815576ac4cf45ca2ab47ae9b2dc4506f4c32a519f8f4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "d33b6d5740069d0316b73cd2d0e9ae412d65131a5997bd2cca9fa698d3b54165", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fce93158fed1259c65c617eb4f78514c687fff54662f2bf15ef12dbe112b3c60", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "f22ec9455c59a57ccac7fd45f4f5f508d97f32de0eb470eb004eb9a9814d2d39", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "b42cefd5e18f6377629617ddd7b6c79d9854c682b80d53a8f1e8212945f17636", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "820c675b6590c792b12847d4b44417ed29c8668707a9766e4bb1d5e4175c88ba", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "09445fdc2bdc47840432fac77c980359f8f4f6a65ca52a94a566c74c411c1696", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "a0535af66e01e6b591c06f322030e7c2d8e85c52afba5e4facc99de18e727f4a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "29a074a9240578d504172424e7901b18f1f38897be75420b77cf42e060075837", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "a7948b594726557f0f07920fdf38badd2881129a8087b2f73664e76c8ae8a3e4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "54b873d54abed4932dd0142678f1cbf854f1c659f9740a75885466da1cf2ef07", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "04715cdadf1a6c51dbdf1e75426c6133d4e42f370d2a37dc8ce0af03b62aa872", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "813e93c0fc84d102947e10192fb4b6c0d3672d1f9b1ace9912003374277bca23", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "4e530a3cdc32deb73b2ec8ca086dfd9f11e3e4b6907eb67846568cb3f45a6fed", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "6e7ee1edfd77b5529726499c3703a1868ec66ff41994ede1010347f519d92cbc", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "1fe4f1d6c2eef9686854ead3384c404e7686408da95db777bbad2d78c1f2fba5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "95666dcc5c35f2e7d2430eceabf7037406648242274bb94f4730eb4bdfe7b794", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "6a9c1f9a750a817b0831df4b25699087ed25f4019b4fcae58e9af71d805a3540", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "d3ce3decbaf9250008f2ffb5227b58f4c156dd9113e7d8cde9b87333a13655ff", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b0b9426239f59edbd7822dae8fd6432d4184e238c58167fd5bf85f0168ad7889", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "a408209f65b42c02076f338705ccfd5492d140538effb2c8b4d055a9c1d996c9", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6206bb5facee3371f97c3212a18685af6814fd51a5ca90b0615e6889ec696877", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "2db40ee27e1c876f8132438ac068832ffb42c450e2653000f829ca9bd630075f", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a835cd86e37b62ca65becbc2acab0e80b268afc8bd09d89eb7871906f24c4de7", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "332822323fb51b443b554d4177713f642a4419c834fb75a8e2318725f2e6b101", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "11e63c78222b9ef7abd150c68b355e80b3d6acfdb296eb2db975d632a1826f6a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "42f5e3be3f91ffba1e4e508407f44cf8f64f3aa0c1bc673798d4288108118480", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "3c2989f673f736cb3cdd235f469b72bb25544f262084b79cc2bccffb067d29e0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "854c1cbb48ba91b507183923f0e5e606364e22c9c25c3d80334d6cf465d5870b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ff6e76457bf04cb630c9a5639fddb056093928c1e3cd646cd078634a44c3d9e8", -"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "3c4d0e8e85004003f262e4854363578ec08d4e412315841029cb27523f304d67", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "64e26e2f0b0bde23b9ffeb661859c12f948a66733f3ac26530bdb9291f85c2c6", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "8496830951905a377f5b3d1ff12ed378045f1bae464296732a460465edc19b85", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "2d88ec77eae7b5c70461779f63a7e2158e1ecfa70d90e993976c68127c860626", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "ca47f1e152ea9aff2238782fa963249307f184dce3c62a908bb2f81e5b3fcb66", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[decred]": "0adcb2ce7ef3b40f59eef4710b3ec02be14c28b1d3b53bb8918dcaa4d6474f2c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "9c3fa3efbf2e18aea8a5bd46988faba64bdb3a029d3285d07ebfbfd6f5cf3476", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "c49fa73d7893ed6d5cf3f292f227ebe53b74d96747c85ecc50992d8f5f23268c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6d3f14cd30ba8bc15a35e70c5a354b763c8f0240f09e2e0cc949fe29a814e6ba", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "b5031e4df40ce1f1228c53f4c60f3a020d1e7876489776d21467873a6f51cab0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "7172a4dc5c9ec928ee650d24da15f9fb516bd5d7a1e9869e54f94b9f8473e170", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "7172a4dc5c9ec928ee650d24da15f9fb516bd5d7a1e9869e54f94b9f8473e170", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "1302ee4345a4937c40c654a7387f75667173c86fcdfd86fb4f783ca0a7531a11", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "a0a1d86365d2987b4201b4aa0e09e4af9f3d01d4296ff2991a1fc8d0f66a9ea2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "56143746256565cea445b6348f22c6da7039498ea72b8df7994d30780ed52894", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "56143746256565cea445b6348f22c6da7039498ea72b8df7994d30780ed52894", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "174df157c1b394824ee9b90eea099b0ce072ffcb883a0d5cc2d942e51198b9a9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "7874abb0a08e82bae7f6e8f2dcd231f78841cd7ae4a28169771fed83fc82fb8c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "ef3a8f624f1ce3d22d6a3932f4a42fcfea7b8f8222bd636ce546618fe5832e6d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "ef3a8f624f1ce3d22d6a3932f4a42fcfea7b8f8222bd636ce546618fe5832e6d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "27711b0b1c556b8ecbeec4d19f6620d6ade469112cc1fe7b043a332c1d693408", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "65d908a935485a8a8452ff8e386e6aeb4cfd07607142de82208b0eacf2c4cb92", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "3dc9a0cba65c6e5f8e6aef9134cc84f1deb6f6ef1cf153be3036549fe200258f", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "328eb62c44d57907c787b4eda347a0dfaefffdf0ab79154fd52ea617fa69e11b", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "8666a062ebcf221897981aa0cbea2d55e4cf12c3564e8d3c36f619e48aa88875", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "8718ea206a27babb2a716640e274aa53ff5f4beae2fce1ecbfbd8311752073d0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "f4299a9a91b7f346e2096811576f01ad576e67cf6e8c6b72884cedb709aaaa77", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "6b8613dd47a39b04617d7f3dc0de01aaca2473da798523438ceeb00b16f044e6", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "615c994d9ba84374a024ad8170052ad2f02c30dc2571a0c23ff491d62b4f6455", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "8624b2d04111c9638e2403686fcd8460d3d34f231bb56f9d9a8cf4b56c6eecb9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "8624b2d04111c9638e2403686fcd8460d3d34f231bb56f9d9a8cf4b56c6eecb9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "7b7f3805b70bfb2df3ec30cc2277cee9bbee46389f793e2fe304cf5de05d1ed1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "8602fe06f4d3f3528c02b1e860bae97f6b0a999f3a47a2a68cdb9de4d27b4476", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8054b2a842c267a458d93b5058f8863cf9396821bc08561f8864e04406d14a53", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8054b2a842c267a458d93b5058f8863cf9396821bc08561f8864e04406d14a53", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "fe0f37552c870a110f3bd5be06df2c8f7e382eed49267917608b76fb8b96f70b", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6b9911b920068ef48e5bbe01ffb9e9c70d31c6f18ccf080fa53711c7ab9b095e", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "563203094963521f24c9138967dda33a91e482682045e214daeb95b3649717bb", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "563203094963521f24c9138967dda33a91e482682045e214daeb95b3649717bb", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "43620a9a8346be51a471c6c2e115e1490c3eec9bdd93c7e791aa8b7dec169d7c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "a4e6f13f1ad1068cd3574dcb42b64a9c708d7cbc5af0f5727f9f8c597f8f9cb1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "152d965f90a5d168571fb59677b23ef30e27a1e52b28456ceef7fe3123369412", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b8566137418c9c7949764b45c0d9d56fdb8dfa3f2cf8949b12048e3e0b8e0929", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "160f47e387c35123320bafc14eb51f166a386d958741346d18278fad0da1ab0d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "dc0515cfdfd75237e5641ddb02b543e19130bcd576ce58bb5f64c70984a3dabd", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "01dd41131f86d5f78621d70a4ef7d99305a942f02085096e380632b93742f0f8", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "fe514c63f5bbbd26ab904a3585d13b304b912bd8bb5cdfee16ab4b671a66faec", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "366f3c3959a0117078d785f473d4856d3d0573b1201d6cabd5febfde7343d91b", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "8e7c20df88fd7e89704dd165dfccbb00b63ac46308af7e7702555ba8003dc192", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "08a9254a789c72fd974dcaf6ce71012668068ff3bf8db7c17c01338a6b397d76", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "0db51cb3e0b78a496a384ca61f104f61aa2e4e2c0a2150228d6d50b302930935", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "6909ec8af35cab15a6738b95cb1a47b7d837db8b6299138a3dbe8f1d93563b1a", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", -"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "ea33df0867ea634f2b7493d115fadbe4481fcdaaf180a9bba61e8b3103b99612", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "9198c00570ef770eea17c21580fd1dbf0a0bd0c615050c5f65bc530206d61268", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx.py::test_information": "a5ecce0cfb297c43cc9ed9719f23bc3fb86f456d6278c174942d6e7cfe4bb131", -"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "52e35c5560499ebd9887bba669aa94e1044cfa6bb2ca9f76080978244ed5ed85", -"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "f1a9d844fcebc53d9575a188de11cdd0a0272d60df444b93e61e1a9af4cdbc7b", -"T3T1_fr_bitcoin-test_signtx.py::test_information_replacement": "5421cafaec22f48c174adf515d4f3fd6313083c5e37fc5ee4340e4d7fd6c7df0", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "5ffdb018caafe83a635838f60c6d952c232571d79a0bba33d81dde4107676f2b", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "4448f7b5d822cfa20f260d25f5a12f5dd2ff22a81dbb1b4335ffa02b0ce4b769", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "167b1a487de997e6a7b3d32a37d269d1de07ad356d18f3035b1c5e3f4369f3c2", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "4448f7b5d822cfa20f260d25f5a12f5dd2ff22a81dbb1b4335ffa02b0ce4b769", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "167b1a487de997e6a7b3d32a37d269d1de07ad356d18f3035b1c5e3f4369f3c2", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "adcc55555af2575c1da2186236ecc30c7daf1b5bd963ad12ab646b87bd1e4075", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "a0a749bdd6a81c56ca22d214a44885c190d1026b29b939dbb9092679e81b218f", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "c788ddecc1654773c92ff3796bfcd2b83d24c5ed8a79345dfecfae0d6e885151", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "b3b8b2c2e4f69a636dc2cb8b02430636dd99860a73b7e9cc6e12a87006c51df4", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "5d3c34abb80a97ae653303b503a9c6e3e81cdc095f92d62b2763a8ae96f516fe", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "85015dbecc29268c1f4cdcae87d0a241c6ec630081772148c92a4598aaba8d80", -"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "df2060e6b07fc8d3977e82834b2b15fb6a7b0cf633de39e2b44239d64b15b965", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "c9daf87d2c7d5c6041ac7b1783de999d858b497b92a179c2a4ea036c563de546", -"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "01588d4d80ce5684031a3559ef67e90e91eb69e038d30ecaab6b0c65d9240818", -"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "ef083934e4f2be2da5640c8ffa5b30ccf54d152324812bc5a37368baabd50600", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "ea63ec00952f6c15856379c84bb42dd7390e4a521d77b30e4aa4c9ba5349d348", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "00be1ad597abff132dda63849091d0f73f5b935f5d8a1df749b37a936862e3b3", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "0973414c83e5eb9f216ca2c7769600520b3e4f7102a126db5fea5da86aac7549", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", -"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "60e86d19887c9b78a54ea9b42b46b77eaf2a78ba4d77dc94b6a390cca0b0b231", -"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "335aa6309a3f62279222e8a57e924c1f40a3d71022f167e4130252e4badeb112", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "78a959dfaa10193a830344f22567f152811ccb4c7b675a617fd9e42eff77cf8c", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "6871dd691938e04708ec237aea40b8ea311dabcf9b311ed81d7a66db3bfc8272", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "454d87b024070deb806674c2b0b5980b662d1ded48ee0f15a5f55315c773136f", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "1920980c44087a42afe3a5952f4cd58b712f7ab3f04e630a4ef24184d1cd0f11", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d853cf38d525e744affe105beadb64773e896da4baa78d4c4845f6aa1165b6df", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "365bd7357ca6cdd0f7db04c5ef27c3c61d87f24a91483d0b3131874fa88dc20a", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "a74a715a5fbc3388d2f2f9598c62ba9b902154da589e14bb092c96e01f1f1bb5", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "9ae40dafa5318e14bec7ae0659478fbe47be374de579becf263c8f67de3eba7a", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "a6733f5e82c2a66a3030411f0cfb0e2be84b093d0fc57f289fdc12132c02e6b5", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "6ebb5029af2d3cd887e219da3c9f365e0cd35051cbf882312a3de4f2fc57e2ee", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "e57c783019086d92b2c848c163f7d0c32926a606312b828d5cbe51a8fbb2e447", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "72d8df6f0eb0ccf744a5045145269fdc4cd2eb1b5af4a19eab970eb95676f14a", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "18a118daf8aa6d99a9b8ce7df99367a20029e29a9e0acf3f9069d3e76eaf5266", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "706cf41002e74ff8833123761d6f963c781890bc9f4e9c92705be114c8a16aad", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "67f2e609fa778e908559df1bf45a1bc41e4ba01e86c5b1f005724cef31f2cd0e", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ad3d77620079738586bbf875463a44f675d31f757b43c8da129f54d6cc826201", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bda1e732e40461615ce3aeed46c62243464b0ca520994600be9492d02b23f139", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "6881c0dad0838a3905ed49fb96f13b6a9cb2cc39265e9572b17ce3e2ae2a7f86", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "aa3b0c52904df02464f9fb84464615c9d35358a2346ac559b9880d283c175f7c", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "32fbb5c64e81b24b52f670bd09e606387ba1aad8ded56434f03e51232c68517d", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "aa3b0c52904df02464f9fb84464615c9d35358a2346ac559b9880d283c175f7c", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "32fbb5c64e81b24b52f670bd09e606387ba1aad8ded56434f03e51232c68517d", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "589e68ec22c683a51099fc3c3253927ab2775492edfd3d23f829fdd4fb8a7931", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "5b7b68478a9f04493f74fd489ab61e17940563b1782f1dcb5212f4fa98774500", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5604efb8e7b5ad8957ef5e8cd29888ac8d708dea2555779efe5006bf194491f6", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4438d00be13195b83dccfc6acec4203dedea6b470434f084e38f6a447203f13e", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "3c6c0c9dfa1a8a3cd37ebf3a91f1dac88574e742fcadc333e657a4872f726e2a", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "9456ff82d2e3559cb3e66d0c34e04f9e44a7d5cace587addb698586ff9bdc8e3", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "4c1c07c7d569f9ab198a119d3d7750a086ce495114bab94d05a4cc585dc96612", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "3a6160bb576e590b3f290b0dc1da58c98f40e1e50204a86a0bab7777ceb051eb", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a76f6d07808ab5f7c7839c2f838578ffbaa5966c483b371871cb2a4b3bd4f10f", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "24763707be8b2c53bbe42307ea51dd51914c58cd4cd3e2b145dbc89e36560f15", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "7853b210144cc30a42e7a55b80b9ae295abe3a14cf08c91e1b29146c1c4c97a8", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "7212a5a1deacb678c2dc4d636d5131f466f0cd75516dab5eda83209fdc379dca", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "7a3ab9768a6598fe3c8d9001f08133047050fc3494dd449ace04065807040799", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "7a3ab9768a6598fe3c8d9001f08133047050fc3494dd449ace04065807040799", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a8cab9f8ca0568b71137ac2df1b1e013929cc26847cb085e53eb2f567ca4dc5f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "1a9bb012020435f9153984a97be5a5c05ea054c78fe86a82e8195ec95572e19d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "2f1e10cbc440a2944a2c469d961db38c6f90d34a9c96e65016ee81a4da70e76d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a8cab9f8ca0568b71137ac2df1b1e013929cc26847cb085e53eb2f567ca4dc5f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "df66e7e5d6c23b1303a2bca9ed58eab8e8a512ed10cfa0b2d4ee060b5bd115ab", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8847b4b8b2b2ea8907a43ac44ec23cba61964948a08f2104fe2080be59a34d8c", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "d16e72e67b67416335d918cffee28d99c0dfac99a89d1b39be8a7a49ff27fd9b", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "135eba1eeb3afe4e40233463e5f98dc51b30c1fec461f6098ec43edf63a2c32a", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e3762c0587f457a98f15222759a44328492c21b33be95e67b8c81608cb6d03e4", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "65478bbd16c797fa041f3ddd5e35558f9054917cb377764503b2db9cde20b7a3", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "86b324032ec84c98e0a5b3084b5d634940bfe967bcf7e057ba627999b8ca1b79", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "69af1007195feb85f94ea26596f4e4eec7f23a9e64fe090b9013d26e7334e74c", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "93586463d4680951e768e89cb5b69e94918407529a7089420b7b502c5b69f494", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b2edacb4c2f6b7e162b64760dd78e94f41d932560a949782224c95044287706e", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ab5218724d340e1a575e3f3fee9112aff5140106e6320805dbdef4509e6e4246", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "6ab891ecaded69d1bb324ccc379a0e53a4ef262ed2071e61777cefc067037e0a", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "274ef6a6f34efce374b6d7fbe51b6302a0130e11734f37bcb7bcde0fb59eadbc", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "88b91134511065f5fa3a0b0673fdc264623ede0d712c0fce97938ec7820bb28f", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a34c49ea173220639850578fa022c4d8593d9c6c19e00f59159989a750e1362f", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "42138ef10818908fffe2700c36ad21f216fd734e2abded9599d1f76d77e963f2", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "90ec51e8ca8e6ec4ed00e7da67e6c29b0eb4e8549cb4c92b5d1138285f8c87df", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "8b593c51e2a0c4b36912ebc8c2e25b386af8474e3e221191c9da766a7638a27b", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "1bff34d3fb17f0a5460c62bd0afccfc88cb29bbb722a85349c84f988082886cb", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "ca4892cb9ed10ae3a2f4d4054c41bb972e2cdbcccb7a9125ecc93844e04d5be4", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "07ed4cb30af857f432fbfb834e50422931527f0b5eebcbde88e422621ec9420b", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "75da6f9b4fc583c9ce86b2bb68eb7a31a0f84a79df1bd448a10608a1c25d4b51", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "63a17cb8a15f223cad72ca4ecb8511041249758acf137b0b38acfe272c5ae057", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "e7dabade93e1e445c35f32502badf7639228cf02a93d66afcbabc9122884471a", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "f48a02ea5242940ab446f54e952a77957b2d385eaffa947e173aaadd50e2763e", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "5d0b7174ffb7392417bcdb178d102efa5d1cdae89001152f4581d7bc165c6ba4", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "6c2ace47b5d0845ed33dae6572967df4dcd21cb8692958a8e7c1b2302a759aa0", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "0818ffde29c6334c13620d86779d88bba8bb683dd014e900f7090ead63bf9d0b", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "c4f0edd4ee30d5192930248f6ca2fa57e5528a0f41356d66821f53030cdc4029", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "c55eb4ec67cc883949cb412b244a6c12e1c1cf212685823e082bbe896e36f2df", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "bf1ca724e0348e2faf1f17408633e4c09d93524d1d6b839b2db8292efcb2b26b", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "d692a9a63386d976b29786c10e32cc8382763e5da126d32e03efbeea383b74f4", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "fcc3ce39b21329c8287813d9669d9887527919cb63809ae28b74a51b68752319", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "26fa371eb6024c5d2b33621f1837cf18389e00a9fe6df7b82ee0eebc20c9df78", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "f52cbd36acf02d3f1fda19eb2c7daf92c5dc3c81fa347accd7944b2c5f747600", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "437e0a374a0b7d6e979e0e2997a06e852b40b2be9ddc987477154b2659014cfc", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "545c8ea8336c01d7e5911514f45314fa18341e83d8c354196551ada30dd1c59e", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "2f6b64c878e5b8eaf2a3f190aa8b7e37383535b2be7be5777555db46d9e18803", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "e6fc121d6dea54c1281fa23f033b7fea7ef17d05bbf2cfa1ff653ab672a547df", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "7d02a7ca4c93a39e2e99a5a7f6f3c36d69780959162a7f0552c042e759b4c36c", -"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "3a1dca74cdc3aa1c44b44fb6f498b60d7290bc7a11b074bcc8177ed5b4c32fbf", -"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "6ed87bdd15f815e1593bd96b1fbc9bcd1e7e7b57811fb6f0b5508c585fb5f572", -"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "c2d7c1dd0a1e7eed339ea8ba595e574dd502b9a8b3a55f42d93b6be800c6415b", -"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "be1f8431bdcfb130bc36f0d96e8820844930ead9a8b10d08a19f35febe0f1841", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "2fbf4050312d6e0234fb2dc503325d029f6324ca935c04f91199d58e8526d901", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0a67d101b35dbdaaebb5f344a61801545445396c2d7270a9adb3132d0f58ac3d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5a89c7e7bbc72bb983afc2c2af60d95921ddf2708616d2d5c342b25a3a314e6a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4f594bf9acd05f585a15ac45d7a5d260129d4eafa00743d26b24f5772a918869", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c6cfb9566605b5788ab3db84b0bb37bd658636d095cf5298f898e143f42b2878", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "bbd44c98827134ffaa8ce0514067df0b42ac97c6c0520d207c90c8a5e6f91d52", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "86e8b7419f6d6c21a27c253eb0b35c0d9436a289c25e8eeffca9214d43c8e82f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "cee382f33dfe57030dfc80193a7bb0ac01a2fb021b9abb42526229f2bdad11a5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6bf47689dc005ff8b2c8d41dd84c58c39ff0b298e2e2f1ef985e54bf75e8ed1d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "10671e157d62c6c195969c242f06e524fa8427d2d90d5038359e55bf1b88fc6c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "76dd000330cbee73713cb9273cbd6ebc1d7e293c012e106fef5941c5a15ea119", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "dcc080104fa7a8519c0cec341b1fdae9fe8c322366ea2311b557fe015fcd766e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2b5dd5a91d7d60efc1b04b4b607098af660ee042e99516a41c4d9c66edb1354d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c913ab54d210b23a816ad3d89dd22f7eccd8c294c5d88f95957c771dc8e4e9af", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "531f0a0e04043edcc15d8cf3e6e4e17b7e7c82197f1e7f3d6f6045ea24d0be34", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "763805cda3de593a5b31b276549da05a55f9bba121b83cada0dd553529c18702", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "9ddc8226582d403fee1239522bde5ee3c96e2d3c5a620da1bfa71269d14f926e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f0f450733e6fd96eb40499cbcc20257bf56e1382d6913b79ad17db36fe6fd49d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9e263b2d857453f17d476808a8579dae51f68d64aa9230c872e288cc62af882d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "988c20bb213cf340638804ba48a5a17ed98687861511b40e3dd70333f6c978af", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "298932e576019cf7a5a34e36aeec8b71e63b53f08ac7537d8d47e19ea4530fc8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "5debe5091dfb8eac8a7b804230882a277ad0094226605b9220f7d90cc75e792f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "50243116605a43eec2aa04118cb0f07fa4ec9fb6a3e13fdb958a562caab1ea4c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "547accd3f64847d54850b4c5e6ccd8ad20caa83f1b930218d04fad84b4169b33", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8ced38434c0cc508c108255adc2c315d474308a950cf9229ca2f864d1722a097", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "4556673ecb06a17f355c2db0cbdb1974499361b6a23b6535d1a5329c17395d4d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8d857c8a665933ce77c183fbda26f4284b900b947201dfe6d2817052ff903978", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "db702e6217832d72ba26b502e5e77fca0a8595d16000ac51f890c7484f04bb08", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "dfc6d464383b4e5c3c89d597298b510df711303b428c6256dbb63e37fc9d67bd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "889b45dcf699cdc86d949b52f708c9060bd9508b5cebbf1e407013d69b14cb63", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "680ff2f99b22cb524f7f6971717527a3df7277d74523892848024636de05bf8e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ef6ba3ae48ce97e86d94fb7b690f9cf29f6c6e3f5813eb3725c06d8601febe2f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "14b8de9507ea58dfee2ca20e82917242863f3c4cb0522311e64ae70f178eef93", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "85a2020a385dd9e4a884f1b3cf97c1aec50773add42833b886ed71a6d75db6fd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cf3be7e08377134c4118bfe9147a6783fa365288d711a8bbf80eea017ebe1f07", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "8cc8d612a45d879eb1a6df2cc2d34dc805a1dfaddfb6e72e8c700a6c84ecc5c8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "1051b54c6a30b210435f16bd1579f3d14b160c34d2092b0904992b9e7ea2e643", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4d53cb5d850937ff0ae36e06009195fe100aec3cb45f7d64d3952d6c97680894", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "79b0d6eeeceb4857b0ef35eaf954e634f1e23cef5c564ec0c6e4daf47269c689", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a2557fb826e3bd3568bf3918363865b368b2f0ada5032de9574a1957c6a26b81", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "65b1a1518e976ac9fdda81403d8ce9b60a208b0648cb248202a36034a9bc5258", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fb2d9ec0389f9fc2d5fe8a0481e76b4a123c4cac1b46e872ac8441e689eabb71", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fc046d0cb15f58374373c56c6b9add1175ef1bebe48ded0714d70f29fdb5e96b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "00d1ece5abbd4adaeee7283b457659eabb6cf1c12557bdae4fa8b0aad0717476", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "db3323394e27a0143e723323ff175d887c934e8db94a2547758e0f06e656302d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "beec67963707bd043d8ee5fc4d331b9778823c63942cbee205f0190ca12806e4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "29c7a13359a599d2948e10968e1cbf20dc442aa188913a90bb84a83b6e7bd633", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "4e9de82c3c7beee2a39cb7bf711c5abf24a5e43f3ac5b08cff41df3ad3820d9d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cdce5e977765d9c237c171e49a73b16b09be0750672de56cb2c1a1719890a333", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "0d52e044f80c726a05a98830ef5a06f0e293070afc0b0fb29ab94cea38ad04ba", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "bd3db103d0f649ad7b53367387c853ce8e85424ee9b126db154ee1672e36c7b5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "7cd6075e4612ca32e3645fbf27da8c178f4ec3810f881878d255be71f0830d81", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "01c3a73b12e8908319e86af5b8907b284842e51f4745c4813d576e540df56dba", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "c1ed1ee6da6349e77fdd344b17382e9a55ea9a8d8f27c19e46889e12e4e4f053", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "7fc7ef94f3290be392340ea5a716f7dfdd132b02c088da07614bd4c7dd588115", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "8fb03f6cfa870606a7027567009759f5e37a67632dcb9bdd57b29c63ceb75745", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5dd66ab27b8e7d57c44265f357729ccb70f39672ce1cdc3b14e96b3ca803132b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "80153577ec69793e7f49d5a15faba9c6653e5fa8d4829690692971344e2eb928", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "66b0d1596afadb6b40f840aa37f50be72de21d44771232d261f8a6ff1f65f1b2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "8871464f0ca0ebc584334d092c84f9db468d961bd6721c2db3ce53fbccc7562a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c2971f5d651d7b3b72b8efdca9cd4d37e61ee851d2ce3631500dbeb4b4a2fc72", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "29c331c51bf4b252f21f35fe783c1a67b2bba39aa969623746e6b398e5eceaab", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "4edae7815977ca41dd52174175beccd49e766d93126ede3bdae95d49eddd5354", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "ea0266655b843e8fb803a4fbcbea0f4e43d602a69474ab224954b5d9288cd359", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "c9d0db43897795ba26dfb19040fe586c5a21d9f500929830908214788da80685", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "016b59126db93aa67e0b5d1de9612dfb6a139270b81341afc1e5e6b1c98a741c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "89e6074f93a6b6d0b8ad8a333ce8642585ecd60ae63707e1a18da7d71482506a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "206fde383d014964bab15b71d559236af7e3e13387a342f80b2ffb4ebc10bc8b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f41b07bee021566060477286e97e352a41a15e52cd4b1656a283bc59f4e49069", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "efa76a14a6ecd3f43b04ddbd890e07ef8b57739e5f5d2df722de64be893ae5c0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "98ab69bafd0acd5c6ffb4d6db536910b103c07a653c667e10cadea8e05cddabb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4ac3e8b9901e162a7194e19bc26cea2ba93642956251fe5496ad172f89052714", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "bf07c7b8d404fc098b2ee78882cf99a24343dde471900ff4485a7b3921e88921", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "befd923116fd7afc9b8600b525123c06283e8b6ba749a1e07592b5aae20316c0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3b8e31ef6838f5b86b07a1c8b1f7bc75454e1859cd02d4d07428209c56a637eb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "818a863229f6c33ec4000244b602ae61687c7228ad3e2b6d837a8937ab1c098e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "fa1733e6fc0aadb19dff97a974b92c16ed3282a54945614c35b1f4318a8f07ee", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "76081aebdfd610137fedfc4c789fe5f7dc250c7fa9fdc01ccfee1b31efb83a55", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1d6c3464884bbe0aba0ff1488e191734e29fc1fd8fff67b6654b307f58d9ade1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "16f239d80106dc141d87f61f6a5776a8132b69bc359a66e50bc7a8ae22449b97", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0a3b0e9311f95dd28b59dce4696652ac52cb03caab472b2ef9a2b8b5e20d9bff", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a20fa054526a73917a2e5f905f21b7ac657c7e3f884af8e9da37b4542f70d2c3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "b5349e05e62855f42312ace98c7dd7f30afb8978288added258c9a7d38408398", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e0a73612a6f2f8f08dcc216b752c8c95b38a8c086a1a68c8cd101f1c61f7d464", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "7644134264cf3aeb43a5d8e1c6debd8d04d8427a5dd5bfae9eb7a3599d58f3a3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "888e3e36ce4f9b1f65b534ecda435ca9bb7ca7c545f8ef22e97f35bbe91a2ee1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "7ec0d5e6dcd1abdbbced04d05878b05430a4dad45fd6677a668ad98dd0a92d7c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "dd5d43e4bd9bb7d2c49bbbc9d687396336b941aa7d2a204c6f35643712cbe367", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4fd94fb9e0699af7c4e0261e8883631c00e0889a06ad5edccae6140295c7c093", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "41918c6b71a4fe2e1006d43c572b59acffd2af256a4a9e33637de3ebbf45a92b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c6016a24ea6eef360871e3487a139ef0f686d5e1129d847560e2bb5f48a1bf0b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "acca25b0c591f1e32d73dd059928e45475c8eeb9aec6fe5a51106ba7c9367cbd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "3268018697905bb38999c4e2ab5413b2d2104556b927f88a73375965d5cb813e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "cafecad60c10138e59c170b259d20d5288777a4a8f4ab207abce94639fe1b246", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "15b4876c1f87c0c965d18fce18615956cedbc4de8becbced645b75fefdb93579", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "cbe1b06a81e8b177b447584bd283a55762894551fed404dce92caeb10cacf85d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "116e7cb742136f6a8fbd61ebe49aca6e82377ce0ed8efff6d8732298ef2aedb9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a471e6b254825792cbfb99b67026d156495aad79fdf3a83d9a587c296ce310a6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "7f7bb2f3d192a4d7773a2c006513c1b6769485c3355cd1492a83286331c613a0", -"T3T1_fr_cardano-test_derivations.py::test_bad_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "d231578d760d0aa5d2f72e5e4e37b696cf925c8845db43fec1477887051e4706", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "2bb54df80480a997945db38057e409aedc8802666f10c096310cb88b9de9a03f", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "08525833be2bd7429713afb3d7d2f560169ccf44f8eb1dceb52b28be9835af1e", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "38daa8934b013a04363083f4038987eadcfa8ac4c3b478bddb3f4b5e41b07834", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "e833b259b5cb9b958522a21c1d56722eb8277a6aaa09ae12e22fc25b6f29f1fb", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "6c139eebcd2e125a80af0c2cb40b06b2fcd60b505ecb6997fbfb5ebaeb8dbe18", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "f02035c5fc40bde88f56ba3b8dd22b00f024c2c576aa1838fb02c1d9119d5ccd", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "1a4542cf900c0270378970618487e992441959357699ce44d29818dbcd2b7f38", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "1aa16a31180e8cfc3b2020a9276c76a578caa3f248800db08b21db3ddc8e9b4f", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "01748c73845a779f1dad873d4aed970187f52d1ae9cdef3d4ea773253f05642b", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "0c98509d9b1c825c67871b1c8a30954870da30e775e1169ec0a9ae0b366a0e7d", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "fc0d361796a868078712d23b22c034d22ea3dca028803f6706ea25bd5db6ab74", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ac4c2bdf01d0566cd89a8374fb10ba2f0acb5e552e923ac755e0c348e9335adf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a70f36ba6d7379273b9651315e9f24ea61cdc97a259366f8dc48dafda7471b12", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9cef6662f7bc04ba3f2c69e3035167e2b1ded82ee726d07e8f6e6616160f8c13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4e466020159326fabd4dddd4659e6c6f593f315ec28ca2ee40b6b06e3a46e957", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9b6a3ae8a310c2c9961f69bbef0463f16335350724a62f05899b99a4f9f63550", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ea8961c7c4310e9013b0175413956ba55a39aed8a5185387be2469e376329237", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "e026d6ad82eb8ad8f6a2ab24f15791debb090bfb2858e8de893c25a975e246b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "48dab10f44952cd3a073736f1845228b8f10e81ecfc355903f5f0f3cd5f53738", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1746d74b9ab1b78b97f6d62c7d451bb23fe7d4e5da4989fe10af17e32594a628", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "ee8a10a85b9191b3fab92b35836014905c77bfcfe6b62b3f6d5b88ca412982b5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "f23f4ac805a43aa030c7713703c37829e8fd0d7df11367e507be432de4209a0b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "f23f4ac805a43aa030c7713703c37829e8fd0d7df11367e507be432de4209a0b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "acc4d19b113a60d034f20001c01296ad69a95c0d539364bcb9cf850d9b863215", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "177fcdbaf4cd7e8c86a8ab068e42f2206266d43a88257f2274985f9666004fd2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "702b0b13147a51a9b65f053bdcd0a19060953bd303744928f83a765733374fe0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "50440bda16597de73a48885bced55a8592187242b7e497a2fbe2bab099ce74c0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "35c515110ebd619d6da512f5c5f12c021b57ce6bc39a23d93f3062b6ea629830", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e581386f4fd2fe1ffa9cb711367f5ac9c593ebc81df18c7d6dbe630a83d556a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "af97517dbeb960826f23973ac07d3ca0924fddd84b0739d79feaffde4afbe4fd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "f197d149d6094c80238168f98e6f47386cd1e64bb8d8630c3dad946f69323b7b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "99627beca831c391830e4b7dd2608a95031fea0f7c729da6249543c6e939798d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "35c515110ebd619d6da512f5c5f12c021b57ce6bc39a23d93f3062b6ea629830", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e581386f4fd2fe1ffa9cb711367f5ac9c593ebc81df18c7d6dbe630a83d556a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "c63b04878011a796379b57069b6dc730f6f5a5549423dcb940d350a92b20ba68", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "82b2f44b805b9447de5e50e1b0b7e9f88f38d35455b0f4e2f6f561affe8ad26f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8a33e36ade7b04caa5a6713ff3f8225e129accaeda5758c5b1292c28107e7512", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "0d5b5f93a80e24f6430785405834a61f74283d58a0821fbb937460e76b7f8bcb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "63b750f43ef04a720bc38a6d1f1aee9f8d14065c466cfede4c1a43c1c2fc2eca", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "da1d7917c4858ec56fa981810b1adf0879c42ad4d1cd44d01a79b94cc13e2e81", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "e34cee2a7d43fa8af764f936015bcc51be10ee4c6a195f83ebf24de518a1fb5b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "dc3db98b3b72f6505ae4cf0778bd6feb8d3f22e21c5838ef03ef0f9f1ff8fc15", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a7a6a539ac1a60d5d76464eb9dc814b5d4b97d7f3210fa550fb850ae7e7dcff5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "095d29bff240700a7e6e26bb8bac4d168a7106af1b0f0d6b01ab981bd4365980", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "94c82af1cf2a0d1a964ab07ef5103e2e43e961495d302479cac15d98a89e7ba8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bfe7a99ed9fad6a84be970a9329c02ad021e0438206fa0f5bbb9b349996e7a19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9e737a9e4063f5c28462df1843d2cefc7194e8ed81a5d6400e9d90792e2cff3c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "626b1964bd7dbdde2c4f73cb597462340909de35d1abe538aaf4f7140345da0c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "60f0a8a40460d7ee7520db5bdb2acad35dafcb1c71065c3c7a9b6d13b0f37c8f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "d980782e888835ebfe6d8ee2703c56a2086180231e88fc14bc575c3c2c85ced0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "681fad7d2255d0cc2e9c3d697ed821c54b02e36593973bbef1eba64bf42b6fc3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "f9edb93a838701beb69797160ae7fade0c29af00f67fd21bf5a36a8eb28cb550", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "2022a49ed937a461900ec26e70ae64312706122f02687c2775ad2cf5eb9b1764", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "b9569a3257eadedf3db7b81b24e0860c3a4c34fdd0d5901225a1a7dd8b4f7876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "dab359e893de6b7faba1173d107500cce4936db3b9ea43a1bfda55722cf4de0c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f181d7aa4bf9add2a94483a7e01ae36fc1e0118d92959c16bc02bcffe08d6679", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "13b2ddbf89dc48b1c512a5aea8ef38b1086d1921e65f78a968f9afa76468a278", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "60f917479627b5c918c8b8dc90d949c474732cada39025d15655a656bab69e18", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7a4b0368b646e185bd3750c5b73974062b7fc4ba30e6613180041d20e27065b2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "72f1b4c1861758f8b93e6b33c27c8fdd362e0196413902232f33143fb6ae2f9b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "2c047c596fe3205e00a5131efcb14bc1c6d5ee3d5b1b7af0d7f2744135d29e8a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "c80fb43b5ecadc6ad7885823ef19c985f1ca1f122a5e266455dab0f235217d6d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a8cdd59ddabc38921c5c887cb895ed3ebcd397c1002a5751e4c7074d1d821acf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "3cddfc22620071b742545259ab5bb2347f42902b4c0f6187fccf0f540304842e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "e605a5c7e45ff3ec0631d8ad8dac42b06d45e30cfc790d51611f7bb3cf2f1987", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "33a163e69082f7e06eee34a7614fd4218c76fedccc7b45d4719bf009695ebf6b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "86cac8d5a932a7de4846f4c854a7b6ac39f1a16b27307f8fca366b357fa0bbbb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11ef6fc1e148b4777e04173fda74991e7f623e9c4e0c4a5d7dcd4d9bf2af7e2e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5af39a12e659a47428f0062fb7c1bf6957758cb6550168ff443a1314e6d7e94a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "16816d58ee16f04c41d0258d94cb123f17f1265a8568c515347ee8cad01b008d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3fc03fc2ad2644160f1a0d714bcebcd391050b6839057a6e6601cec64b22fe4d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "b314a79d3fe667cfb6c80da2d0c72f747b3f4935a9890c7001d0811ef96a69cb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d67317da8d8529f32f492c15a36a6f56ae3f224de46d957cfffb686cfd3843bb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "dedd91139f4c90adcbb218c9cbc469a0c3a58b2d1d1a20c149d470d9572f9914", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "3b25f3a58e621fff908387ac16386cb852e14971cda033da7b65c101a0ab0325", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c14cf088eccbabcaa50cf49ba0653bafbf1e01228bf87883b573ae72df926fb9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "1cd713a6d13b23082879460a1f2cb3bebf69068b6148053f866992d26137f915", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "26a79bef69fba4050f437b78f3f586521620c494e6d7e566a8ba0cb3ff4b05fb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "4f72ef72daa39078796fd614b9f324c2ac0bbbb580f4471dd7a1e74014afd990", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "22c92060e1e820f8af43cfc0cf291a6ad3b66ba21e38ba78f511539cff654eb7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "473527527631e4475012bbd9d38dacdd29cb136e2edb49f003a0425b3badfdec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "dc38b3b1ad5a022ef507e4905d9a564570a01269b50cbff83f60711a5d4862af", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "fc1d104e6f6ec3c1d5237320af98d9ab9b0c26b0c47edc90e0638d651e1322d6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "c460142eb3d8d11039288d79558106302080279b884c4abc62d3870b66a3f066", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8c4d588b53ee2ad7e2b36ab863e66cabccdbcc00f870720e3519ef0bc06f6ad4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "7747250abe9ddfb5b6a87f7623d43a3f7eef812db84c30ec4b24a7345e187eec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "de558be66c24700568d8dc1dc45da7a16c7a4c482a8e72b01e63c804d0312105", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "373caa779a13684520cbcdfb61121601ee20bc95b37b05aee01a22e713c8f566", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "6ef2526d894e42c667a2131d2e830f015e85512f2650f4565887079b82c650cd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "13b0fb87f6404e183ea39b66a0e563ebe7f4d2558bf17e4786e3c69527030aad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "90366ce48be5b25c062bf2f3b430595a7a2aab91ac4585a7a2778c961f8c9306", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "58b610bc59b9ce5595e4927cdf4b5df0909e5c4453b74d76ecd06ad0705bfe0f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "13b0fb87f6404e183ea39b66a0e563ebe7f4d2558bf17e4786e3c69527030aad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e4ea39db7328fbc93df15eedaed2293b97de1fa2a5ac64ae50507e782b4e6111", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "ff7189ca07894c8b84bfc0e7812d3781966187a73157ccb1189d528cc3860fcd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "2d83b4acddc2b9cf70d08d621e1c72e379d2d2645af2c141f63734e270c758fb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "5dcad2b0eef37a0f0d683bfadba3eb5403c237dc51921057c111d18d1d9aec5f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "b542569660edb395546fc61648d2f32d2520844a6380a22becc7d3360b400df8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "d43c1afd82cbf6c92385e8e6673934c84f9885d7356219c2255c0cfaabf2262b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0183ca922bf62560277843b920c327969d8e393e763df9cc74a2d17b4fd53eaa", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "b2b0cf697704b62c68415fe6071b7de10e85c2c200b341a090a33e16201d1c49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "43c45df1fad0b15023bde95f80c8e6ca6e05fbddda6fd0f35640d3b70ed3b5c2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "3a702d11fab07ddc81428ff1a74c71651ee41b4a76e9ade31ad6e69a9871e72c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "a05384a92babe798259e9b182c0186889c1011f652ded30ebef23a5dc85a0732", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "0503ac55724ab278fba4ec727f29ca134a2aaaf9c375d19ff9c453ce7635b795", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "04afb1bbc82e5ae8d3459153c12a4eb8bf39f7cfc212e0368cb7ccba7bd6579c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "b03a86171408433a481778f38f98bda01edbb8ad955f5bb139b0acd1f78c92ef", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c8a834e12c2ac6a3a2e9b4753d142d79427747791d652ede4a96b40c6c32e827", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "ab4f4f4db76a175c51c08a1e2352a5f15b875f962860779a9c8aa13ebd80df1a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "aa3073e7484582dd43701e9a255dc4e96cdaa6a2aa945076ecf99c6ef668e1e5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "62c3e4d5121122a16e4dabd1ab08b94f768e6480719ff95414ddd9a0438ffb53", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "6a9880290cb4a9cc76d5aab3aa497213d44deea3a1bc5d6bf055afe002107169", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "04fdecf805f6fc9402018bed2a8051d209196c9b2c04d1a78e9eeb445b9c7c88", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "9218d443fece701f738ff9ef966a6a5526a2e8203151e23f8dcd4f7c9f214225", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "66832214e5deba2e9fab96c80b3069695968b0a772aa2b16eefd8077e67759ee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "544b9874c11f01f879e1742d9ea7ba81f4d2867fac9250f6a73edd30b06470f0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "265bf5540235b94968295e0e3c03600eac05c4c24ba264f8ef3bca137e81a56f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d7daa5e86a102c7c2c014cc041360ae867345b4df09ca7c3b79d051d5b7bcdcc", -"T3T1_fr_ethereum-test_definitions.py::test_builtin": "1c98ed8141eda4ba6a5c7d2e1ddc0fadfd150254375d162785e57bccdceed17a", -"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "090b2890cca08fc368e3f7e7ae97ba4c599fdd59761d007ba9f93b07db19fe6d", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "78d21e2665b7d3df8a784437279ccd505d52d1c3b13447e5f454cda0fba10759", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "5a19c2c3f96af75950f14bfbd97432f04c7e213e14088874b90a8c9fd5f140d7", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "1cbc76602510f2c32c55ecfc5efe9b9048244f0cf2eb9c71e49b745001e0689c", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "30b48c90b23e603d4efddfe3722c1329d3f92c5d59f648d225b882099beaf712", -"T3T1_fr_ethereum-test_definitions.py::test_external_token": "7ab7d59356c2a2cbe646a815ea958a4457a272cb361ae91be6abd82189aa2059", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "602fb8ee875e3bd792e821d1b0f3196c93f4be9e3feec03b044a86d8911f9b6c", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "3ede7171d0348e4fc94746de7569d554225f637c2368b538e295f15f87e21b11", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "000cf76995c7e2e9580c92ce2bd8baeda4973a61261cbe5564097674e40d94f3", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "53b7ff296077b2ad738889d6071b8b4f3d7bd5c910c146b84312129a003158f1", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "d44c6b2e62b6e036c5fa743a664b79d97e71612892e3291807bb8c61510cb475", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "3ac43093a0553eb09dac7a231e6af7b3bb899b44afd776fa6bcebdabc20cc8ec", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d489a535bbbbd7be586020e58d14799ea1263e8dba6769cab223d0659995d39b", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "5649ce9fd2515a000be9aebfcb0da2a13f76f6fef06a07d419afddca76d130e7", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "dcaebd38ea28f5fc70193dcc7d97ff3c494a366b84fec06616df6d2b9942e437", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "70416eb4e5bced989db4982ae3be94ea88aa6cbcc252f8ddb5a862a722f69a39", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "97021d42069ae178acc69a2e6a2ad3df76c5d2174b5d86794c9bd19210ced67f", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "0b5c59c76aac2e5991509f687f0a163ac966ce27d9be3f59e0427ee976234f32", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "64e6f70c3d6e15f231f99b22767d57e822ac6b05f22b777f2ccba3a0c3b6cb95", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "637129145f37ed44276f945e0f0b5cdaeb883260de79318b26179fdcd7dc60e2", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e7a5f9f4ea01f162953a54b974116484667ee71f91424b0c0e2c126299aec0bb", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "ab30489b5705e0b19a23f3eed7a12e709a9f2d5896d81ac118125c4fcff4a6bd", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8fa4f8dad9c2b42e83a21c5d7a0911943c6341b5d2404fe00d7046a95458aa22", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e096794bfd3500d928eca4f18d1770b094d602279cd1c1e0a4466a1f59c7d642", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6177e126a729ab3ba81d565fa382a62f759f761524d271198b47ed46b022914c", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "832c953fce9df18a8ed60b1375eaf0682f5fdbcaf46c0903cb0253e58e5b5bbc", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "36ea68426e5aa77cc32f4ff77b45a9c105c353fab08f8a0162e324f2e53a1172", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "7f4bc9304f1a23e2d0a941777ebd47491aae1a7d449ac86c607453414e41df59", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "ec97c79dc2b8f2d6a558201b8542ad757454f0a0f7c4a2d8a78d5713eafbacf6", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "fdb69f64055c31217cc083e54ef103725b097371c81508a774a0414520b741b3", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "25b35c5ae72807dcbdad24b13e59f8ef5c848834ab1eaa4eee47a3516d851f7f", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "28fff7f0bdd2772e45e64540efe47642f2040214d99c710213aa71f86d75331e", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "538dd68f150e80065f047aeac803a9b31ebde85693670c683391c1658d1c5215", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "ab766f41be0dc27efe65f51137d0ddd99f91b3e1728fb0450c2c7d098fe07dd4", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "da79a45ce0297efe71bf6a829ff68ab62ca64b820ed8db968bc2a6c22e36254b", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "1b2caadfc7c47469f54f8bbc00ab86d0f5efd0148de8339e670ffbfba800275d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "a32dd6578eb3256137d7d79bb377fa447c97851ee654652ebd01eb10779327d4", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "74d03409ea2e3329ee0dffe5e2ad0116f8e0280f79ff80fe42250657d8533bff", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "25191cfb8f16deef4a5a4d1001ac97f497f7789c4a7ecf648a7f615c0b7d045d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "6a3233fa6fd98f14759574176b508419990e67102dbf711cb093b983d80eb217", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "516f2707a5ae873c1aea6f476fd8aec192eb10beb2fee9f3c5fb7a5070d7a185", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "243d908e45f9d73d34cd6286813e4409ddde695f72b681aafaac5ba24d75e27e", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "97e87ad19314542bf26c8e1c5cd861be34f5804cf35c9cda4d2ab52bd3a9489c", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "b7fb38bf37ca5a5ebeb5ad1d21c6957a81bb58a16585a6def1d6f5c93b8da1f6", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "31bd0a0c5e670c66426095dfb9c581193ccf86b3694e371dfd9a869589f18611", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "b33f775b59faf0415c059612d83b2c4afd30b91a5bd125822fc79f5dbf61d42c", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "636e3fa1b4bce69bba5d9ce334acf4e499b0402dacaa430f8706325c531bc17d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "6a3233fa6fd98f14759574176b508419990e67102dbf711cb093b983d80eb217", -"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "39c644065c23ab2d40f5a219cdde89e80cef55da23211600aea975663e64c9ef", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "a70cf0bca25efecb826b9db460b63d728c6c4d7862d819c2f5fa8123417faa83", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0fa5200a85bc302d0c1ee645d7663d837ae373de1adf2bbb278d91c90f4c44e6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b392e66422c2a22c71f29d652d750d8b18c5f35ece5a362e733bf030db1f9ba9", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0fa5200a85bc302d0c1ee645d7663d837ae373de1adf2bbb278d91c90f4c44e6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "089efd046a3a539cfdc3b0373a2c6a93bd5faa5553584edf488b13d0bf93bf8e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "089efd046a3a539cfdc3b0373a2c6a93bd5faa5553584edf488b13d0bf93bf8e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "e0d1ffe749984181ed939c749f4b2c6b8fe35e745a479e50a0365af364343a0e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "e7068d20456be0ecc58577dc033010da57779a9d6d12cb906dc5b60d5513c469", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a2cb91087b6969b5ae344d00acd65aea40044e22551866a5df56f9de99c7bf07", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f55479bf285eb75e3d5f227eafe2f85642c1533afce8aaf2d24e6e7e59b3a7b0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e18c43496ee653734fcaf7de599f7b185effbfb4138bf0efbb5c323aab1d9a9c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b35066c915e731c414e80634ea8ec3fa51f0e84e0d907c02a4e765a1948651c6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "b13e260ea043fc69a0d9c3e7a00b9bc69784523255d730f2af8a5ce1ef6fb5b1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "39019472c630f90f8b6c2f6a9b4f82b61412e9fe2965f13c391706a855a5b172", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "3b30f7fc13137daf71b64e2dc7c09c6294af909372fb443491354b0766371edb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "39019472c630f90f8b6c2f6a9b4f82b61412e9fe2965f13c391706a855a5b172", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "326503f9c4681f24d9b12671dbb849b223aa3d6f2a667566b5ddcf3a3f6f7d22", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "326503f9c4681f24d9b12671dbb849b223aa3d6f2a667566b5ddcf3a3f6f7d22", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "6f7d27138a69da79c5a6b2371cbc6fd55ec4844a5ca55fd48de10b7670406215", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "67ee956c2e4d271eb4ddeb5e60f97226c9ab6e1bb305681bc8db81d5cee295af", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "622ad0639de17f384d91fbe6b7af462352ee73f9e1e8f6b62827626fd9496fac", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f55479bf285eb75e3d5f227eafe2f85642c1533afce8aaf2d24e6e7e59b3a7b0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "915bfa57183bffe468402ae5c6f9eab59012a417298e143dc43138efd4a020a4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "2344627e39f46b4cb62af84523b7a69c762171ad6bd20e3c0252e4b25338e94f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "173831538109a7fdd2b7f64e00736dd8ced301b66897e2060c9925430d4cd0bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "30a069438e974826e0255f3a74c3075e8d9d8e3514787421391b965b01516c4f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "48523c8f340829fc40105884871399b1679468f2e2f557ed9f856087702e1049", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "e0d1ffe749984181ed939c749f4b2c6b8fe35e745a479e50a0365af364343a0e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "da886e6c81a15788fccdbf0c19f02415456b2c80345bea15fea0b7aa9bb0aa8f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a2cb91087b6969b5ae344d00acd65aea40044e22551866a5df56f9de99c7bf07", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "7edc40f50cdf2a6a154ae58d8699628f4de817ef5f3e07831f6f52bc76aff75c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e364f5bcaec8f89a6a44d6d02137a317ac022dca4de04f326f03536506fa880e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6f7d27138a69da79c5a6b2371cbc6fd55ec4844a5ca55fd48de10b7670406215", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "c10bbea32b9c5e9fd420b759fffdcd34dabd4896f5e06bb632122008beeb2ee0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "622ad0639de17f384d91fbe6b7af462352ee73f9e1e8f6b62827626fd9496fac", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1e8787c9eda2feb94c3b4e807d84567195f82173b90653adf3ca1b585ca2f41e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "02e0e2e5cd83aae57e38e9240571332fbe393cbdb98bde4645f500532332d6bd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "e29654de22055ebbc1df87d28f388bb459a3b9621f04dba7dcd2cb3f87fde182", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "5329cb28e68167d514f3faddbccab0f961f6df1153471aac73214584d877f593", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "d53cca112b73ce71f80f06018e751071ff92c4ed945a92697ab6a9564cc32954", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "95612c88e0ce51851f0c15b816fcda0e7e8709e71cd371910676057fc14f7bd4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "fb1769a865faceab1475f056d619fa87056fcd1d925a2043b453e6536f5c90f4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "0338fffe20d3cc5f0d3eb7884532da9e6fc2ed423ca782500cffb2c14b5cd3ac", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "c724ab72cce704aa68e1f72301cc8d06d266b58a60f94aa73388d1dacf1d7155", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "bf54e749c9a5f27de4e0cc86f00974e9a34c5dcc3f4ac6b72df8dabc17034808", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6220039b13cbb33129b35333ad88c10cceaa59d1fc0f2d9fdab5275926d0e25f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "4481dde1ec203066ec833dd80b59ff4bc62bd9b999a9b7c1285944a27ebce447", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "99907338c7818035cc59543bb3fbaee66c7a6733c01b1086ebdab95410858db0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fe4e99ea77c60c90c163f3e4b5eab6fb06829ff8e9a50a2c55c7d408d2d4fdde", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8080143e0900fa3c98f7feb88d10dc5ad3e9a9b89f1513301564bc06574c460c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "af3c4058948220f5b8df1b06c0a6c2d560193315e050b2d4ed00c4ffc9cfeb19", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "0a33486a04d1100d485ce5c32d0de1e7b91d103c1f20e3f40609d6e2d87bbbfc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "0a33486a04d1100d485ce5c32d0de1e7b91d103c1f20e3f40609d6e2d87bbbfc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", -"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", -"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "af2b25f8baabf60958feece7fe4b9fe9fcdae783605ed6871204a2134ef5602d", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "e404aa56bec9db40ae4294f2406627b1ebadab606ebd27be2aee127a966b1a5f", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "0584acca025a9ae0f32889fbbf7b4a2edb5544848e515b86b921044a5b37aa2c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "8c70c852de2623374b4fda1e3b07d75db47fbf21c371bbdb0a3d971056b24838", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "7ce5843a41a23a1784826562eb7ab185b9ddf5bf7dbfcec518bf5136097c22b3", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "9d990d6295db1d93aaf311cb06e4954cbec0f1c42b830099513cf8926673a8d1", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e25d319f5771103597fd73f71590303ae4e538822a970e6d649c8749f234b9a0", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "d1ea3a074576fb1b1e93f10e758859c3f91de0b830251e8e47bcfdbe35e637f6", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "cd37a982a7ba142f8380eeb8773fb6e28a22b8264c55e2bf3810e8fd8458307c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "d3b2636d945aa6b4bf7b03a8faa0412753b244e5c8309acc24a3064222c193a7", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "052ff6f160215c66b05686e39bacc0f932d68f560e0abb8f37a49a6710a4d870", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "376e4ed50e9585dc31d297f1d7578b662682bf95e07ad2750865856137411318", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "7bf2cab0d6d11d37cb7d723530bdf1a6fdf9627c6f03ddb3372b6429d3ccc90c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "80ce58572ed6e634c4b46b1e335b96def1c83ba4d63d18f22b86040a4689a648", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "86334968f5836700bf3e9ad194713938d0637585fea366211c3635027701fa3e", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "62953fca62df18b03f69e3644b65ff9675169c680c83e42a0a0aa33dbd365eb2", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1f94d9a621b404def62ed8f26ab27b00b41c64d8aa006c3011c2a624b73734b2", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "9cba2cc87e68b60178c3d7b823abfc689c56ab142b8351ab7200d6422caed6fe", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "44d7d7c1df2e1c0c79e5eeb3957f7c52097dd6a276cc7e456e1a6f0afeb0384f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "6c7b98408f2d7e62e10a01f382effa2618366492b272432dfca39ab797d5865f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f93a11da3f42d5b2a55bc9a9def07caf7239a0881b5079d0d0100888d8ad8285", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "2f1765c1ce2d8cb88c34c646a4490ec036159c5fae2a1a6a2f21970f1b79648d", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "c97d348feed1feddb7bf74d478ac717c9ffcc374b500526e5dc74c3c528dabe0", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "43e1be5b0b661e2c0428d752c7fc9360a07ee97ffb19512b5b152fddfea63d7b", -"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "545a8a545298d937ef7475ed16668a2ed0f6462fc65b79c752fce29193da744c", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "85c8c6ac21b2462a2dd0c2746d7c47f2734cede8f7c4023fd3295052db26d149", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5ceb252c7fc0ba64f433c9f49ea4e0dc643e662ecd8f0816f54c2bf0f99cb9fb", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "88df89dfc769ebb4960b71410abd0549bc61664ffae13403edc31ea76fba252c", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "538e2aa576dd56ef5054d1a3bff66d0c176c4f3cf80d7ff76b0412411a8b307b", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "b2f1b602b48bf3bcbbb12369a66ee0e0879d7a26c399c542671e9b8871f3032c", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "85feeb0f3d4cf30430c35fd38ddfc77cfe5a14193f324ee834dc6fd1dcdee0ad", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e44d77327cec2941c462cbad4db480757a6aa4b0a6f4e19f7a53ab119b172be7", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "6960c07e518d614f09549d6ea79aab05fab24f09159bcf61f664c9fbcae33265", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ffbb0fc217ea369ddf8f48e7996acb244723b3d90f1a236995991126e9e4e248", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "80ed26de1c7113c0d6d924fc364169a297404ce533c8a182f42d711b06a5b1ae", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "615a79f6753c275585c170398c6bb00c534d593c5aed5d7b1b27b15490c82ac0", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "eb16a5b7da1ed8b24be1db79231008fa3d4b64d308b30854fe64cb6a28102b97", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "164a4c03716896d3db6700cf919dcde4c715ee761070e0e2cfb014f7fd516864", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "18a432bb8dedd7614429de5e29b299e6bbbdbd6f04e03d07e005c536609c54eb", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d926be457d2fa97d55e977650b7faadcba87382ee365c1420ffbf4f77af1d102", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "61ab5d3375210cfe4c1a451e39bf197325d443f5bcb613e251454b3afa12a713", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8497cb8859b51d23da7237480044c6e9c7b60e87a3cb3428d57d529733767ae4", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "85feeb0f3d4cf30430c35fd38ddfc77cfe5a14193f324ee834dc6fd1dcdee0ad", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9f4fcd77dad26b98f5d7b0c3e29e960f8a3daaf3fb05471c5d5178547a55f3f3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6ab08347663a1513cf81c006d7711cc3ef25a4b8b444adb2cd1566f5c0779f33", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "434257550a35df97886608c509a1f932fa53eb6afc33df03ce4c0bd7a2c29387", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "60330f58f8bea3ec4a300574b7e3ef4989d18af978c23f846765824f649caf26", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0a6cbd84a805de18273596f5daeed2e3b207f65841a679570ac99f497786b8a0", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "efc2f67b938680b0be58849b77752ca483893e7c42d099d7d547813dd33220ed", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "2aa810576ef39cb32ff6837c29b8335e84eff606055bda54c98a6303abd5f86e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c1695da4dd9d771c78b41f264ea13604a951c177b293e69282ddd12ee7277031", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8c0c32f4052d35675d16e68bc2482b3f7466928cbdf22557e6adfe68fad47f5b", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3dd8afa6b064886ca518a853d2896c42a13b8f3dcb1888772cccd6eeeef45402", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "69855dee7d227ed8014c64961595f76f395e1d2ff1e7eaefea672ccc448415d4", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "02b3a838e4b2a18991816b36778684755999f546fcce32646d8b78d0a8cbf36c", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7ac21681f55e71eb1c04394f3250b4ff4b392abd8c94bb851341436eaafc4bc3", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "30698c92d78a07985318832f35c3789db957f4237d36379d82b27df5f8e44cbb", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "185377255694af531d265b095e1ee2d336d1790e1e3ef51699a01271a4da5e8f", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "95d98a880b628b9a72426bf6f751b23221f5bbf2b639f6211eaa84d61f7519bf", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ffad80271ee919895e3f97777843b1dc0414bf9540ed338466bc387ab9852a70", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "8ddaea9e0e10f616b9ed724a45bb048400b9a7a1988db4f404197eb449824b74", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "88771b035ed19bb793166d10c67c0cc99f17d022a26014e210a3c9be87c6a3c7", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a91e3be0a097d23c99a7d6fac54dc358d18830862a21b87f2d3dad3f3c4adfd6", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "980aa5da55f80c11aed85e8be031519ca998f27992301304bd0febbe8aebcb2e", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7424163883d2144864cfd39b1baea93a9b922f6bb0b712754ae0bb4be4b9865", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "068fe486ce73c3fe25a8af66e6c553ade886df17073731dbd49ff36bca8b9653", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "53a695b0e9aca1e1629a0a39a1eb97e3b95363766c65315085e5642d2ab3e70e", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9e4937899cab29dcb91861bf397a2b360bd9a42f470f7803d92d9d79048fddf7", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f4d87fe7e3b0d78c2dfbfd7cbcc1215faa605e18e778ce1272608a96662880c8", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "005e36ce0c38568197cefb568655a8ab68051c2286bbd169f84ea603afef497d", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d41ecd2f29dffbc0cd7c260582d8dc13f0059bdad1528de9636ddc38585f7b8c", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a84c74fd20499031d38b828e529b74f197b2f160dbc656f9ae5a0bfc49fff4d8", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "7f2be53582a29df18d65d9a5b551cf5591366359abbfcdda86d10d81679cb353", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1f44d37d519d39ac692b8e2f678b92e4624b614497c664ca112c4ff6c507ef41", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "2e010acf10de81bdf1e9aff772cf673ccacf7082176b4156152bc5d01c20c11b", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "753c2a41b13d38d597631cecf9376bd008241665a7b853ad55e7d0390dcfe73f", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5dcd01bbcc42f7161cd625bb97b4b0dc9db5e6863ab657e5ffa02bacc399e2af", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57707bd70f9857cf6fd877f09c52f1d03f4ad7c53603a5ba9c123b06111169a4", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "df6c69516d249c1dd27fd1e727add632650d53fab4dad32d85ace90de580f713", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "2bc092db84bc28730656f2d8777c70b001401d41909871f4f5d1ae601374855d", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "93718e58f1df533df97750b2422ba5a61a1e99879b5d14da7a79f8717a1e59f7", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f0b5fba3719c8d5eb1fa6d0bfa37f379f6ca07280e79a381d5db5985a9417f86", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3dff1deb8d554d358259d336a5d526bb20a53e3b410c423f45256cae70a54fab", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "7191c7992186d6a93847d0ed8bda75837a54e97d3eda019398310129ea62d700", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4f38d92c20ff9a9fb1807c4b810e9c3a3c7c5a72afdd9b702a3ceb5dfab1fa20", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "087743a723d1996dd9b956992c1d2866a08ae6e55a09ce1303b9b9ea52ce3ead", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "35aff87f653a4fe5a092f65dda99491f7955acfb9037f1903f53f8a995650d1a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "aa7b55a3724d8452a0d4981d009f3695a2bdd696486ff5e79ddabc4b015fe5f9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "59e2582744d827158897dee8c9219ba1c5b466bd989b7424793911836650e62c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "ca9e5b854f63887e1cc7ed6b27f6fa00d3bdbb093a13709bda721e8f710064a2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "3fb507003e07b4a11a368c974784f86df08ebff7db72382ad3a2bf1446efdde2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "25bfc7cfecf345337d7d87df2eeb81fa8c7c54270b63acb2e4bc95d703b8040f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "c93554b9395679220ae538ed7ab29984039c874abc9e4c1035b798a878a2b49d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "676826757e2ca077ef98601eb6913f04fa6c1b73ede8758261e2802a0098598c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "cb015ae60521d53849d59717decea90823e1052372b025003d4a9cbeac857758", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "6d62c23536906f75bc79344faa67198ccd6985af026eb08f8091c64fb0032a01", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "3590bff9556b3e367e74f8e968aa35092e90d972020d2b193066162de5a557bd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "17d6c8c950c604570ed49034e4899bab39514f668ec3f01f6e333e01b0b5f54c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "4318ea8928c3f13336c3d6601d948c1b50b56b0b2bb2eef89b416cdf5b7480aa", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "8bf7d8365a7bb8f1818eb0afbd875062ccbb1a0824f0ad45ed142dac59098d36", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "6c2c9cdfebf8f9cc99f45b2ec1694cd6ee88dc7b338908829c8b744641fcaf6d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6eaa544e989dc5a129aed99b5122c3c661585ba4be7b361091ec8579df2b3fb9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "d49089aa955bc5f6e4d10d7c718142a17a53d5786391df40e5339108cf86e2ef", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "623aef861082858d8a50d600653f953a7d9f79c9b04f0d0f9a138919ca035f00", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a87858740c0998683dd682768d48c56e882453a84ab43d0a0998dad51398d76e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "7dbcfd81427e9980b0119fe6da91c097b291b299d046f460e382b7c88b67285f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9655ce8971f6ba0c70647bb7f1284f674a7d24d2b61430f9e1c6601ee8725d27", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "191e7f77e472c65c0538a01e7afbc812d23d9b00458f9ba736b7a6d2ef77e59e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "51077cc98cf2f3cf5114478c71539382587a822cb553955b47fb3161be57a4ed", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b1c48b36a67ce5253c9ce29f7b092d444875b85f94e3860dce8da5739242044b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "e80cbd82c6b46986aa44c11407c6dad74949a03fbbda6c6c899d2c330be2bcb7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "77d1bd0f95e48f7d422ed55bf03ddad01df33d5bd2273ca473f0ae89b24276eb", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5a97a62627099e31a120223bc4a8f50af37fb5e039f163c6fb5c2da2729495f2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "86a9e4029659c9b0f4eb760e325afb98e9a666a04571dca4eacd2c8abedb9f52", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "8439cf3471539b6a9bcb2d9d24474336c563d3328239bb5d305a7190cf67f708", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "97c9032ef739c6d56b25a976d14e463cc41e24719e9f4085e39358a88635b74d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "91e8ffa8aa8712c7883ebb91bfe1be016e66a49317622ce6ac829389d662a994", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "ae13768231cabf2f9586928e1b5bd3821b320a9c828a6e84ee03f98d9c41d866", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "1c3225d36d6adb969c9e5af61e0bd5d391ea051869776bf64d50765d00c86bb4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7550427efe7379f8b274cdc7afba33df7f5c548b0a35ee7222896c88e10e146c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "8f26f217340bab0520394623dc13c8990689b2ca812388ec19fa9b338354b200", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8241638682ad4a17314d168d83afc3e7af89c757e3af7be274e1c8f589f0c292", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3b7b26afd1b8034de3fe4ed1ffb62b4e6aea039a5fdf483fe50adaa78f872037", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "49986a549f5820cb113f72ec477b637384ad03d9acc532e32cedeacccd448936", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "7746d81a0f343e5587ffcb22f765ec159375e09a67f828e56dfa5f452e86e6f8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "d7e6409d775cb4775ce8ced40db6cb5f8febd8c48e52bafee106ca725ae50cf0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a8b4f2c4fce38597c4fe7e06f0f891ba3ad851e7eb7b992f7a60cbef0722921e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "a25f3ed58687e3418b6776f3038f177713d0f436e077276254d89fae87588053", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "78204a526611baf2c8567377dcf32a4152b3366e87f76c129ef66ecf7343dbd6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "a022435c7dcdea2856ec658984e838eade0551d46d7ad4fdcacbc0d96182d806", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "74ffbbaf6eb7b29d993729daf151f19acae7470b565d3f8771cf68103607ca01", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "3e7e5a2851e0594e23ecfd64765f661e3784dae51d5aa35b0e14881d0c54b9fb", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c7f2f7543dac14dd40599b78962a05faee38c69fe34397c54923587878b543a4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "68127d9c43082227546aa06ba8831b7966e5fb71af33fc7862ca717b39d244aa", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "47ea2148bb7b91f946a2bd62485c11c00f92f4b1f9645e216904a2b8d07123b8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "67aafd5b33e3794a21b647a1ebc99b3992d6583748edb8e337967b6a754f848f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "e1392f2d85a38adfead15b96b241f8bf60432e4e48880ebc3f30ebfdbe022543", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c1aeb6975b1c4328f9251809ea7c952eb4774ec82a8a1341e2af00e342aaea55", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "08541f24217355bb1523b89855d5caa1f7bc9f954af944ac5656623fd7ab8a75", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "9c0726217e7c19f89cce779ad0588e50b1a00f0586af8f06af776aa624a2291d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "00acb42b136afb849d178b3ae81857a9df8907d4732b17990dee95df77c7889f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "1cfa3d5728aecd3840aecf28ee3779a9c281a0963d7b7492c3bc86abac8ff0de", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "191e7f77e472c65c0538a01e7afbc812d23d9b00458f9ba736b7a6d2ef77e59e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "2b19d72c4030143888a6e51f6b3bd4c8d0925d477ad46809a7c9ea3aafba1691", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "e71ae565799562cfd8ca9defa6a768b9e01a19759c281d5f538af432f2023272", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "211cd2a57f71d225782079349d586461779a25964e4009101f9de93a571cd3c2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bf22a999e3eff1ffbcd590052c3add861ec80af9fed08bcec03e438afd5a54d1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "8e8f976782fd958fb89f33bce4ef8e6c8d60e5fc11d0b8c4cec7623bdb9cc8a5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "370d94fb9e1044ddbaad9aa1af1f94285a41ddaec32250fbf7f46b829e9954da", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "e4fbd32f36dd002f11aeef0755278fc311faec24949e1b61955dfbce44049b8f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "e7a55b7125218b40076e7b1dde2819823d90e43455bb9056756b5c0b9c8f9231", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "2433b86715cd143351391fc4cd818d23409f93a9119442ed632faaf7c2a55620", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "b180fb1252ac7b86e0d2de9b2360748c28f02e3117780de31ef71b4e826ff9b1", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c071e9f2672d36dc06b6a45f6da68e5918d3f7a509843c930ea4ac45860e8a0b", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "61efc02007dfb2110e7a9d3d3692aded24a4c269b3b6ac0384002bd148782cfd", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "425479b00424c0fa72a7de1624c93cb1dfa2d5c33a5dc77626437c946cc5f227", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "197469ea1447deea6326338f4329a956a226143a2e99a45d4414a51196176bbf", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "1372ac4e83decd7c7e1428cc8aecf739174f6075d6dd1aab407a6a928244276e", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "93ad18735bc23c42cf2544279ffc4a4d610cef0b760573c9945d2a832a8afe02", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0381cd50b46c7665a38523d386e956627abc1d5070b99cf007ff7d96b19c5924", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "be4507f99c832130ab941d8ec2d717d145da1179a49ab51fba66b86e9753db4d", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "29238dfacae6db130f1f9d06b97a2036b6b34e4ab143c5f0bc1c353bdc21942d", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a21af397662093b8eaa123f154d80e5391419d0f16ae9b4abb608f2df983c07b", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "4d94538ed6efa6e3aada0e8ae062f46ada1f98f61548485480ce2ccb4bff3e88", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "6e1362f71d54a07b41891ce8d429250fd19cda086d6a502f5838bedd96ed6487", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "143939caea633aab9b8d104e09131724fde68636686d1fb91dec7cb30bb4c2df", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "cebb3819f62a47ee4c85e05bfde807363638ad9c933bcf06d16a957180c7bd81", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "341be5e6fb1f5abe6e664e0dafba135b0afa82d082d1028e32c6789f8a55c202", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "2f98d1272e909ad9680e9274db0e8873e15d85453c39c54d10b8bd357d3aa17b", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f0411294cf4c3e6bee948ad02dc90d31e3ab951ef7b23f730aaf7ffcb32f1903", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "79f8dfd580c4da34ce6926584aabac662524af25bfbfb42a5f818ed4a4f28369", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "54218f8a08bc74ce8d685b97e61d532c5e0152cebad50d609503dec982306460", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "a543705507b0722a90857a7d4f97eefe12847585ecd4c8a0097446b7215624b1", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "73c4e80e523a894f7fdf3d3e0e436944a3263aea521485c3be3a6f50b14f50dc", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6cef49e313d1e8d5dddb97782c99843325b220924733d6e6579849745bb87e08", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "93d52748f67d06d868220abf1713a32a93ae4d69c8718ea147e92092451526e0", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d8a060e83200742797fe5f4920a04bfa21736ec9c88d25b7f3003930bf4ea389", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "9da453f325619a30c446567cf6746098e72579d3f2f89855a8c36c93078be092", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "6425a393e8f34f793525fe90d57eb241d976d013ebccd476ae905ddb98e4d5a3", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "4cf177cab420e81ed90e8f287101d23fd48aef864078e443bb196ff14e01749d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "4ac84cdd7bc0a346c88eb2b0ba4736f7f9a48e276eb2a43d7f2a7ebf029f581d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e204f9b2a895ccce6fe9bddaeb6dc50f33d279c788d70c6f48ccfe13845e7588", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6f16921870b7bc30170f108e75c0733dde4d0bba11dd8748367df8ca971b1892", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "731c761fff2c409dca1ecd97ceece602f3e928bbc9daee52644ca4b1bdef48d7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "092457da3e41853489c8cb23257a424cbbce5d90dadfdd540b32fecb61025195", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "7a7a93c5f3cc727564fc128b904cd7ef3040eb7e7efeff3a92513781e46a8a5e", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7d1bc4aeb3640431a9099c9251e4a4be0ce7b99b3dcfd15313782afdae1e424", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "ebafef6e1aff45f7bf284cc046b3f30456ca8ba0b81256362d45ef1b1d4b1a29", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "3bdb18df20c374ed938d9b83f5b293984feec50568bbb444ccc15570d75cab47", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "fecf1e973644cbe8452aeabeb1f16ed003d1c45036b1afd87d07001bcfa7a433", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ae76e8e276c92de843c379bd61f50197ca2ab5f1ef09a98521dae0dd79386733", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d79ac2daee6a3e15ec391413cbaeb7e221c685fd7fc4f2d20e550778d33b084f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4167920fd548fac5ae5b13f7903681d838bcc798e377d362fe991e545451381f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "3828ccd3ea0bbeae735a2ae0ced9f4bd59aa67f699a59923114e1e6a15e3173a", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "c41ce3ffe8be3d27f4f75a8878527f7fdb5bff8a86aa5428926f816a31f0bf2f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "c62803145a607c580875a767f32c7ba21adf5320c41ec77fab3a3740309163e7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a194b270b5c59e5d1c2f8afc860ec34d2233413f9028f97fe45294b1b9676a9b", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "7755621ef5c84a8081f6b92e92f16c9bfc64cc9c65eb30af02f11ced40ab75ee", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "9f166638c3b736615b7c2e760ad7526cee9ad07822bc4b5937c34292ac4655c7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "62ff783eebc5b5110a53424b8060b351b2c222cf9f8607967a25a47e2e487caf", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0eafa8f484e6288865612b1d348e52da4926aea1c32164c8a1b2dc9b6fc72e30", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3bdb18df20c374ed938d9b83f5b293984feec50568bbb444ccc15570d75cab47", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "309f9fb4af9d4ccb9f3a7ae2c157ca3a6ea981587cc5f07f81e3cece731615dd", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "4a945f3abfc1d67a3691d82f21bef4364b7b1b99a58826608e138b3c809a2b0f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "59692f9d8d68eb9996fc233cd4a02fe69e517866e072ee13f9fa2934927e6e4e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "7fa10a589798c45a8ef6fa587ef024c551cd3bce3e7343ee6e0cc4977182e14f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "19537b30b939c7f90a4ed4491f60cd194b746b951f47b77a475b5611e449ab2a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "88fb2a78366ef5e9db13c3a4a4d42ee7193a745db3edcdc6c177c6ec34362b06", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7f03058c16865a19c1ddec6b1df68c63a58e44d32294ec5326bb32fed99837f0", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "bc15eb77c0b9a3d96e618c2d7fc76532719190cc50b2f2d6fb7a0ac05095e451", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "5863611cf3515b66808b88391f4899a990b710f330218cc386996565585c75bb", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "44094e1dbe78c1aecb6a05fce386f92bb067b5c02d03102293361a28eea46e09", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "807bb5292a18eb533e0e48e6f129b9b6bb176878e393ba7a9b4aa0859a7ec1e1", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "807bb5292a18eb533e0e48e6f129b9b6bb176878e393ba7a9b4aa0859a7ec1e1", -"T3T1_fr_test_basic.py::test_capabilities": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_basic.py::test_device_id_different": "ab4acdd890a084e6041b9c385d4b4f4c331f29eec77bbcb69b4e99b3f8d554c8", -"T3T1_fr_test_basic.py::test_device_id_same": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_basic.py::test_features": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_basic.py::test_ping": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_busy_state.py::test_busy_expiry": "0b142663642a8981e8fb85cf0eda771d72c9d2206cd224d170b588f32da4d8cd", -"T3T1_fr_test_busy_state.py::test_busy_state": "251609abd57665b7882e24583141737c9b6c1ca43ff75ab8bec2181e4fa3f044", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "3547888bf963a9e458d362f218df5770e81b53ad850c462f98c00ea772ab42dd", -"T3T1_fr_test_debuglink.py::test_softlock_instability": "11479b768ca4b58acf621101c18d681126bbf66581184489922df2eea1357ba5", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "a1d024203379022355feb1ecbe72d16ded27a7060cba89469b82d14e84d8eabc", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_language.py::test_error_invalid_data_hash": "3136454bc9903887c47ad11d488b52186f1be09cf3e174241d2147176ae460dd", -"T3T1_fr_test_language.py::test_error_invalid_data_length": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_error_invalid_header_magic": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_error_invalid_signature": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_error_too_long": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_error_version_mismatch": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_full_language_change[cs]": "b17431a711f150c6f9aa32f2f3759435bcda4bfa3f29081df07b837abb5cc741", -"T3T1_fr_test_language.py::test_full_language_change[de]": "6608898fde56463747ad89c4e9671db3b0d4bac7cd8572d84351091967c5e081", -"T3T1_fr_test_language.py::test_full_language_change[en]": "69396b93a7625119c7d975958f76bad9fc3c7205886399dd140e9b349a772a70", -"T3T1_fr_test_language.py::test_full_language_change[es]": "106369f4edd63c8d8f944dd2db6efd2db564eecd3fe5d32d498e84335e52f831", -"T3T1_fr_test_language.py::test_full_language_change[fr]": "f412523214b630e19025608a766a49f4ab164e665807b4352ce181d6e1187aa4", -"T3T1_fr_test_language.py::test_header_trailing_data": "ad7fd20e20cbd6166e8bf2402d1619dc2694d067d5dd7ec51b4489f57c1ed125", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "d62937e9570d0a989face054bb9ea2148bac54230d3b08246ad5f56efda3acd7", -"T3T1_fr_test_language.py::test_reject_update": "320fbdd3d6be3e1b16f9a4852e9f27f344ad61056e35467628e48ae960581e98", -"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "1bd30ae477edf769f359f3c4f814701ce06163b331893a44ecf987768ac2ad09", -"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "1bd30ae477edf769f359f3c4f814701ce06163b331893a44ecf987768ac2ad09", -"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "837c1340985e79eabb6f0ed36ee2bd270bcfd1e65e9f16cf5abf6bddb0c4f26d", -"T3T1_fr_test_language.py::test_switch_from_english[None]": "8719550d6e6adc7569222937af5385b22a186d881fe52239f7501fa588d85fed", -"T3T1_fr_test_language.py::test_switch_from_english[True]": "8719550d6e6adc7569222937af5385b22a186d881fe52239f7501fa588d85fed", -"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "cb2b9211a28e57a3264d054fcf54fecc80a44ba40fe48dead24e24be14e8d0fc", -"T3T1_fr_test_language.py::test_switch_language": "13a94ffefa6c7ec7fe9c011ee0c697ef50bb4a7a816d4fd6a40d8331d5054d64", -"T3T1_fr_test_language.py::test_translations_renders_on_screen": "74d05ce87dfc17f6bd5b8991ef7a29495b23b6e59e087dd4430caefe1eb28041", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "142719ce2b8655e9ca9e4de88f7cf79e5528f6c59aa731b0a014d6d9f955f036", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "de263cf9f734b098bd85593cc2b68feeaa99e58e2314408c4bac09be435aba77", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "529b16a80c3be9cf26a45189c999e4563cc9a6974af8f70145586e8ea6803069", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00988807c1ab4c5f52d67d732c5082757aca490e3ac31104a571e7654dbd9085", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "974423ceef14cf1a10346d3bb6e1fcdc16530b6691c5d908f530cce47dc6f612", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "b5881eb8c2d3a41e14ed0ca4941b2b0700df73f4a108d1cada639c600b014b0f", -"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "11728ebd055b8dd997f30c806950104e149df07c5a3dad5b29b22c91ccba7e7c", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "81b1fb6210e5b0692f1b5f2a624f09c29af93cd522e98858f9827b6c896484af", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "5f2e6366257d4e0b4a150162964b1506ae07b544da8dd77a4a4ef86f9442a2e1", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "95b8d3c0672ad842812365f4477246a3588fd935426acbcee7feddfa3f71ff14", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "56eb47e37a4555014ddd5ca539e65c6e37a4564e88b492fea593586afeec468f", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9bc50a221db3ec1744c903f21db4a14f5afe9b27d8ff87243d99e1cfa28f94a2", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "662b8a9bb4946936be88d5c776ad67e9dc1b3d845bca120eebe40ed45e0109b1", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1e44c44917a8ef414f1d3de27a899618551ed761bbdb290984bff4ae2299f8f7", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ccb7696f1052b83dc194a2694ef2b5046df215de3a5b40bdfba510b0bfbd6ac3", -"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1d4378a636628308f0dcfa13f003c83ffa93672f3383f19a85a41bbc1832f0b2", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "143d20c7d11e9b3246e30c2d75de7c22e658ecbd4bfb7781a6fc98c3fe2b4e1d", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "67d680e6ae25fd4e1d2107aea8e7e8a48ec2d25c435ce4edb8eaa2fb4150498a", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "9d6002b5b1f5547d0be0e83651385d800f1b27d276c1838a846002198c974798", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "2f36b9bc6a3103f84647c887086ccf78b468950df0709e38b3f32955756b1549", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "a7a672e01a6b436411df8bd10ced9fc6d93912ce5e7e67d290a5508f6aeb5f04", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "db874cb9046bc9e902fe76b69d74ab3711d7b36ca83f8b077d45f11149d8ec0a", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "d2e0316c1ce92ccec54631e6385c89e2d60e9e65cc1c4913e5809b3de0c1536b", -"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "3ae62610411e44eca0576920b6d043a5231b285e7f34db697b3b685cd68a3616", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "8be2ee6e83965b14f12cc625d1ed8d3ae8705a2f9717dd548fc168e2eb1e098b", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "a0dc6ffdafbdcbb85fe2e09ceb16fc58c2c83313373d7c0c60d05f1e1e5aa222", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "429b85f2924d25626145986d5e35351946f1a56ccff42f83f57fe602019d8066", -"T3T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "48e8eb0818213f65cb3fc527344ba04001943a15435d09278b188aa462d483f2", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "0d4277842c3f8195d3ec748ea82586da5bcd2a61eedea8d8c3d36aef14aafff8", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "31e2ee65e6825a461042d6feb0c64a0759054d5a56ca8d24d9d80b6423db2f38", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "18e1834e08ebb4bfe885f54b36edb9acff434e3d1682ef9b8303b21ae2ab8105", -"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "ab4acdd890a084e6041b9c385d4b4f4c331f29eec77bbcb69b4e99b3f8d554c8", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "8c171ce75274153912dea13ba981e01b8a284337dcf57b45ee31bd584ea1734a", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "8c171ce75274153912dea13ba981e01b8a284337dcf57b45ee31bd584ea1734a", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", -"T3T1_fr_test_pin.py::test_correct_pin": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "821d7af227908754deb0588c3b7a5185d5de0a39e4031e47ac1166fe30be6655", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "3b0bce557549e02d0c06a271481e4359b9e9cd1f6e59aeb76bface584e21e1f3", -"T3T1_fr_test_pin.py::test_no_protection": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "3cf18204ad7cc750b17486540976f6697b92e63d503d2a054166848b7366899d", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "2161cc050d4e30e23ed47e23da90d79b031751a48d9d8f840c8f8cf0a8323b5b", -"T3T1_fr_test_protection_levels.py::test_get_address": "0a18ab2c40a4a618876e25d77c1b3cbae11f5f4657639d8800828f2cf5ee3fdc", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "6b1318228de5b2a11c5f26162c80db3dd25895de91249a93542478ad7931e62e", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "0a18ab2c40a4a618876e25d77c1b3cbae11f5f4657639d8800828f2cf5ee3fdc", -"T3T1_fr_test_protection_levels.py::test_initialize": "de4af0cfe52d5407840239b18d7630db00a571668d3edcd80fea8907d97ec892", -"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "cad2ea4e4b890e2794befccb8caedd353c8bdae427309d128ad67e0ac4a42de3", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "3798102d9e7ef1318928178548fe2213283977ad9215b705c969fcf0de38c2a3", -"T3T1_fr_test_protection_levels.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", -"T3T1_fr_test_protection_levels.py::test_sign_message": "50a8e5ca56b3faa30f88afb36d67d2489306cbc0646f1db6fd86150ce8dfeae3", -"T3T1_fr_test_protection_levels.py::test_signtx": "aea73884d8f8d0e2c4f8168f8839317ae7f6604625743dbd8695f8796da119f2", -"T3T1_fr_test_protection_levels.py::test_unlocked": "1ea176720ffee45d6b866702e770bf03be499721e1ed627e7cd162f314ab1dfc", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "0b123040d9591820e1bb2d26f670f7ea864c0d9aabd564402c479ebd02872f9b", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "7e7ce3bade869d4061a08bc735f55c1db46dd2e4b802740577c3ad57c3a9aa58", -"T3T1_fr_test_sdcard.py::test_sd_format": "31e261a1dca1105543b767c42420569c3048eb0ff0bdf35f8de5a936beed8159", -"T3T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4a36d239bfb8b16ebb527a77dace158d2929a6b5a75b588a9dbafcd1f81738c5", -"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_clear_session": "0ab6fece5d339499391d08c907067ec668211417c874d3a7dfaf10b93c4fabac", -"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_session_recycling": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "90b30e647d6cdc148221ce080f7f925e53756015de9084e254bc816740649388", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "1b99f1ac93c58b1204fb0be7c05c78ef0edee97591ae003dcf0bbcc7271ccc39", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "bd7fc5d8d4c1145f53f30de022aae78e5b8c9da26e2c8028dc24c7a63a0e4125", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "032a42e40594526040a1fbdd16f85cca634a4788fce876bb9c5d210fdcf14f96", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "3b287aa610be74787c226147a9d0f90b3dfa845888c4544dba4a2cc21ae9b8bb", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "be591b806eb0394b145578e6adeed0c16698f89e47c880495616095e0bbe39f5", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "dd6881bd84dc3123aefc7101004028ed19c887450b4f7dc9ac34be26d9bc7477", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8db9a2054d1880b21094c1130d66606c88558e57d0187b315000a9df5c9974e2", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "b08648e55c692a88d7b254e5a2e47cf3d7193c5e078d86b7c5e1c342c2a7cd3b", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c4585c060afed6a846facf4909e7705d64f93673f5711a4e62fcbbc1020be275", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b80498105334cc6c0c17dbbaef4d2f012004f4df8ff461d94a992fef1ae567b4", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "781da6f1be1715db1139b5859a65bf608fd4c3cb1eea1f8df563fd42237f5b8a", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "ec6e80f9bb9bb9f17b3e166b51f744d6cfe83397f007d8b6d2084e9004d52bcd", -"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "1da1e2156d2f115a068bef65e5052472767c5291e547af1e951be95ce1f20fcb", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aa8f4c5126cf852694f81e5768fde2024c96aba72c491e07be8336d2e4ccc300", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "506792c673183891922f45245cc59a8e888d10ce41ad4c43a046d6ffd7989b31", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "fd43d8ac72dfca2d30e5e4801e245890ff905fda5390ec22f35dc1a8f78f92df", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "3929a75f20d7cd33aaa6f3d6b9cabf1f801b0fac78f23892e43e0da93e359bcd", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "303cf7db5fff2a6753a0495d8cf6608c86cc52346969233a96fdcad29912bd18", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "b18fb5dc21d741f5dd59676fe650d138a0772e94c73ebd508eaa58a17ae030fa", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "bb905fffdf928c05948413f0990e10f5255c17fa56812c3bfbbdb77ec43749bc", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5fc6054169122b15bd55c88909cfc4bebc12e5e1262db1047c60dd3aad323f51", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "71e98e2b347c735ab4090569029887bf7979cec3efd6c91c2b0c84835d07c19b", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e6916524e799f6ef629a1d1fa6c0380b83d1f782e10c60e411594a7589a4abbd", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "10f5c22194ebabd987217ef45a9ed36b9c28528d5401667390b144e66543276c", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "9c292f8742a362bb2c0be0e76331ee372d1b96a663b4ef20f2fdeecefc3b6feb", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b6ee69f00fb63b280633844569b11ec623a18d715a76ffb45550932f9e085b50", -"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "6013c9907b5a4628d333c89c440bb6598bf7bc1085062b18fefe1079469206ec", -"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "87435614ee9edb5fba90567bf43d033f2cd7146da6c747e1f316419264005679", -"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "3a1dca74cdc3aa1c44b44fb6f498b60d7290bc7a11b074bcc8177ed5b4c32fbf", -"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "632982338f0542460c700e6710c42254cc5e098471e6c25f8061bdafe22d1eac", -"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "45e33313131233d5274c6b19d3eeb8432e0bab94bca801d5aa57b876f19c255b", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "deee5c12961a421d5334266617dd517f045dec0d2f76bdf51b6c0a594348bd85", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "b778429d3e6e732969589aba64524b38f95d8f44a3de665442860d9e2ad31047", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "465bc58ced3603bbbda63153438a924e752ae79303beeecfaced89aeffa2d147", -"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "a35c54fcef2686b3846c4d56d082091fc3c172d88853e2307bc473f37ea67a33", -"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94" -}, -"persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "5da2d368154467c1b68fd0d676f84da3377083d7cf2bd0871f96a9f163b220ef", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "62ad9d823cfdff7774521587a6daf70c872876e1b75df6236323abc07135cba9", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "b9949cb03a12d8ddc61410b43d170f658af614667b67cda246459bb655527356", -"T3T1_en_test_shamir_persistence.py::test_abort": "acdbb336fcf6e6b4a7046bf66fdb278f97d0bdd42dbbaa0b558dc223446b7f50", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "6eae781b70a129d9c9cbba1a14878dc5bfdec4da1c779d2730b371fc9643c235", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "e749da9bbbcb8a0019edbf7aa425b1f3b4f11146d7a42853114a03bdfed51cdb", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "87303b91615d1a1e38ca1a898ab561da8acfd779b6c533923efaabdd6e7c976d", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "5894305ee4b8a293f2b6fd507b8035dbd5d273185c170b4bb0154f0e41c47614" -} -}, -"T2B1": { +"T2B1": { "click_tests": { "T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f1187009ad9b010c8c57570a113b5950b7f6821468057ba8b5ca92508007544d", "T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "5d5665c29585526e07491b3c66ce0dd5ebcf0b2c15da3577e183e04df3a00e09", @@ -19664,8 +12333,8 @@ "T2T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4f13e0550f8e06481fd4f59d722d3893ea904f85fb20ec8018344347492aff1c", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b432bf3671b15fdcfb92113fcef0e95671c3d7beaae70b25a87d090d30f9a079", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "4a6f3fdd5d7ae36e6b5ad84faa5385565fd13f4ce3f7d915fa16c2184f99ebbd", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "53788010ec0f9c81ea07828ae32425c3d38a1d35789aa91d3163e117fa2cbe99", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e17b49d05f231444684b0ebad638456b4b6d7b0ae195180778c3f687b7d0ca7d", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "53788010ec0f9c81ea07828ae32425c3d38a1d35789aa91d3163e117fa2cbe99", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ebc007c9801856ad27dd6332b7dc5413189191268e10fcf5604203b75d8c52ed", "T2T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", "T2T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", @@ -22700,14 +15369,7345 @@ "T2T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94" }, "persistence_tests": { -"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "c9a7a982a9e58cf03d5f15cc4647b1d62e21c5035fc0d8a4e5521053a38c791b", -"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "627968384535fa1d8f62f145966c1e7f1151b234c10686ed59f6a84c9e8b1db0", -"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "40f0f8531b056495156f1cc7f7d8e77232ab2d9507b40abf2f15018b2ff9bfb7", -"T2T1_en_test_shamir_persistence.py::test_abort": "69197749bc5d91c3721e145696420129630bec36f7f27c6f7f789eb3ef173b2b", -"T2T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "3059811fea05eaaebf5f7ef6475b6bda9a166b3d519cb803e6172992a14fa7d8", -"T2T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "219b0822432c9dbc51a6106b901b950aa97c6ac0b7dde8de4b8e951d891c2148", -"T2T1_en_test_shamir_persistence.py::test_recovery_single_reset": "dcee1170a05d710d297f835b6bc15085b33113bc11e04397254f2e7ae5e284f1", -"T2T1_en_test_wipe_code.py::test_wipe_code_activate_core": "1817eaf41ab1299d8c8deb39c0c7d1d4eb3ea74cc599fc5b6f40494f74c567fc" +"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "c9a7a982a9e58cf03d5f15cc4647b1d62e21c5035fc0d8a4e5521053a38c791b", +"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "627968384535fa1d8f62f145966c1e7f1151b234c10686ed59f6a84c9e8b1db0", +"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "40f0f8531b056495156f1cc7f7d8e77232ab2d9507b40abf2f15018b2ff9bfb7", +"T2T1_en_test_shamir_persistence.py::test_abort": "69197749bc5d91c3721e145696420129630bec36f7f27c6f7f789eb3ef173b2b", +"T2T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "3059811fea05eaaebf5f7ef6475b6bda9a166b3d519cb803e6172992a14fa7d8", +"T2T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "219b0822432c9dbc51a6106b901b950aa97c6ac0b7dde8de4b8e951d891c2148", +"T2T1_en_test_shamir_persistence.py::test_recovery_single_reset": "dcee1170a05d710d297f835b6bc15085b33113bc11e04397254f2e7ae5e284f1", +"T2T1_en_test_wipe_code.py::test_wipe_code_activate_core": "1817eaf41ab1299d8c8deb39c0c7d1d4eb3ea74cc599fc5b6f40494f74c567fc" +} +}, +"T3T1": { +"click_tests": { +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "62e0431a324677ee6a1adf679136ceee96dff070068492171a02bb159bce5c87", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "dfd1bfddfa90e9a21586494bf9fa6de2b886addfb79e86918941800d9cd7da5f", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "37ee6e2b07c872f2a9c33c280b7be91bdfc223c8eee34aa8f7085837f150ca9d", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "8823902cedaa78bfba7a93b6d543ba9b71588ee86dda83b1d041b8fa7d8c3a65", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "ddf0c3b091eef587adb8786f498e855516dd572314ba588e91649595af7a358a", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "2925456668663dcf63cf030eabf5b0a55e7395a70b22b1e85b00a08bba141a89", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "b027097462daa6727c40806967fcb284ec32fb729cca8666bcef48ff75dc98ad", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "12d6d6165656188cff9e9c267b4b2fef40bd437237d42dd793de31c36ea1a5f5", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ea086361587f00c6abaf84faee202b8c3805af154f3d8271c89078c64196539e", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "91491c045eb816ccf8189640574132a91f310958ac01d58394f63b32efb9fba5", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3e9896ab2816ef2ed8c7253b6563b7e74bf217e75f1fe2a5ae81b5522682b2c0", +"T3T1_cs_test_lock.py::test_hold_to_lock": "0e8cf06515f909a1ee67d1f749ced1f9933674e33aee225e62390c2a1e3d901a", +"T3T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_delete": "c1f8c0a733563756481ed0aaf15d833cfd266b69fab7daa7eeca6deff738c404", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_delete_all": "3fbeae85ba122e42f2732504c6030490f4bfa128a11aed685fb6cb74c03ac8f6", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "d76be1659ab6e14c56e81e649abbf38b2be27ca38d1c068e80e9ba60e8ee30a5", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "c972f7e990f993aaf55eb647db471635d52964cb122800c4bf006f4f5a1b519d", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "857c8c548418716cd548e4651161c16095931e3ac73cb7731b4e1421193c556d", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ba3bf7716db5e8fd2ae16cf60123926fdb20bc92ea0640ca78b5e283f1230761", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "c85fa947a20bc4b59fe852b490d1469887684170677a21c2adfe475c1e8a286e", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "ff4e8fc26b39fb4e50f542bc3f9e12e526e0e73f00a6f1b99d354e4166a09de3", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "c85fa947a20bc4b59fe852b490d1469887684170677a21c2adfe475c1e8a286e", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "8a66f279dd55fb7867b0cd3b87a961589e3ec45d6e08320488fe2ba4bb834ddb", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c60b0b0d19fe093de73e8b3ef3a7e65f6ea01ecc736ad6ed45fd44148d050716", +"T3T1_cs_test_passphrase_tt.py::test_passphrase_prompt_disappears": "5fd1a1add04b6a38619bb1788676676aa68d900055597ea1cc2118d441bab710", +"T3T1_cs_test_pin.py::test_pin_cancel": "0c36a5443bb67f543bc3905fae9e27b9b25f2ddc0ea9f8a1c9b06a95c4bb2a40", +"T3T1_cs_test_pin.py::test_pin_change": "b34da66139dd8f93ff67a8cbf03332dc63895ec325578c6123d90615b5a5711f", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "c2a1eb2d6d45c1a773f6cab6191149d48d1a64e999274c8189c791941d217397", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "06431a63c954ed1c7c219b0550988d086eb16b4dfb7def93d4917e74e72e3169", +"T3T1_cs_test_pin.py::test_pin_incorrect": "904fc973bad7a9677ddb5e35b652d21439c934e727cb00a6655e0fba165d7b2b", +"T3T1_cs_test_pin.py::test_pin_long": "5daa3f20464421c5b1c2eb7e718e26c6fad3966191c3f4138677703c2d42b8ba", +"T3T1_cs_test_pin.py::test_pin_long_delete": "4fe18b7d4917143f49e065e3f3eb0b78dc01e491c46bda48b4f5edd7b8e7d759", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "26fbf0858a21eb115a2a50beb6921f490d7af5bfd7d11ab98adff09867dd1abb", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "7c7c28f6d0af928a6abb77ccd628705872738ab949aa676e2464b0a954b39dc1", +"T3T1_cs_test_pin.py::test_pin_setup": "f58e6b57a7fc9760d9322e149503950d8dce13d88c6318864a88c4759d447d60", +"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "c14b4c71c2da514c485926d583e71985a6ee11e8abd2734c562852b85f69977e", +"T3T1_cs_test_pin.py::test_pin_short": "06431a63c954ed1c7c219b0550988d086eb16b4dfb7def93d4917e74e72e3169", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "3f05de3699884ace43fd768eb6d9f4fad61ba02010ce0a7782a9a0b38ed47a5f", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "b7c02b179855cee5e53a5e0e6ed436ff918bebb924b2bdabb0cacdd4b6278431", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "7f8ef2ab3a7c4bf28463e4dc11891cc2d099f207cd9ef99a68df52b6f49be162", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8766eab82a293be974c517d14c569429187f081d56df48359ab3088fd6f25be6", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "20fa687cca06770b862cf90db02429d24fea3469d2b9a931b828093555307d5d", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e653fdcab4edec38ccf0634288e7d618bc8dd73eb2f22529cf9827898f56da17", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "fb09f7bf90ffb9696ce41be6e452abd4b21879174290e4a7c6da5e3e4fbd947d", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "10301ac15cc7e4f05f686e5597fd3ec2dec039bc013c294b5f84a687c2f336a4", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e637cc9f17eb47b549bd69a1897b5a386c62890910212be79f32c820a75b11e7", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1702c0f4ae9bd9bf44fa494881facebd9736d1a1fae2b564017f21f999e21739", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e69f1d962aa09b907c6ef4886604321584507031ca81194ae31ee359d3b18311", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "9381f2b219e98242debb0a6372e44653d412ba57b40ff245517c731d03e01d66", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a0aea17ae65b3e5769509207b64d2b13622fd9b6b05df8d4fa99fd7f6cceedbe", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "24a0f61e295bb8cb614d29ae256bc070878d39dff40151d244ebec9dc399841a", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "55d42b477af4c98e2abdfe66d506437a4f3e45d7008dcc59ad3cdd80cd02665e", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ae09966cbfee6e5e1a55231aa5386e0c9235c411aa1560d30adb674078188590", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "fa40cfa1d84b174d4c191ba9e93e489cbf4398232f6f4a08b7591520336d5ec8", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "c8c5159b86ab463d1ace5ce25744b83dae647e1ef730dd27a1db0a74a6186ab5", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a0feb69ed402fa2d9a9418c52e7a757b7551173d2a6c37373c039c7d029b0e4d", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "bbed2b91ccead31c0e4633302c753f41e67bd73383acd5ec77b751ff901ee8bc", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "a3a3b403919c23545576e4000eb182ea13f2c15da902f67431cc92bfad9ffcf7", +"T3T1_de_test_lock.py::test_hold_to_lock": "116a1bcf9e0d900a21815703564e58c8dfde980ce502d4fa57cd28b4ff68e7d4", +"T3T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", +"T3T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", +"T3T1_de_test_passphrase_tt.py::test_passphrase_delete": "5c12acac84008979af157f7153f10b30fa22b504499195318536506e6396ed83", +"T3T1_de_test_passphrase_tt.py::test_passphrase_delete_all": "4eced5507492c874a56c7808db03565e1d5ab44e07d493b15eb094b40d9f38f0", +"T3T1_de_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "03825b8f1a01bff5a0a1cb1567453b7958b642b0fd82c40de9ba14901bc340dd", +"T3T1_de_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "0864ede4392d50141acd356a864d34e8c6d952ba300b8900d0999ef8033f0e2f", +"T3T1_de_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "61e4870333d8e63b6dc548ea5cfce800f34f660019dcf4f0728ce207a119a819", +"T3T1_de_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "4aa46cb7c98e511ca9a5c0957807832d8f34f6126ff16060f8546ca9db0c4db1", +"T3T1_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "6d41457547ed56a8ab8e572d3a42e47c489e4758323e89d8f9f053d05e139a26", +"T3T1_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "0e30b28337b7ff810da1914ed364bae45f7f8780be13adb3993a0c4dc5c5da6e", +"T3T1_de_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "6d41457547ed56a8ab8e572d3a42e47c489e4758323e89d8f9f053d05e139a26", +"T3T1_de_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "d261e3ebb629e5625261940bcda9e88db8a1d975b0543336382e654ac9416b49", +"T3T1_de_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c71a9a7718e3aa21db3c10f2f4d9dd0d6e9402f734ba990636c80af40bbe4a19", +"T3T1_de_test_passphrase_tt.py::test_passphrase_prompt_disappears": "1f935cdebf4b5978bd6d92becc760237357b78cc6c98001cf9df274a3b4578a0", +"T3T1_de_test_pin.py::test_pin_cancel": "ea81ade44cee7af4c9c544d511974e7a63ef0fa24705ab4dc11b4d9603c1a9bc", +"T3T1_de_test_pin.py::test_pin_change": "12a3b7eafad9cc8eef31f31a8bd0b062de1d7d34d55ecff382a7edf0c50ab207", +"T3T1_de_test_pin.py::test_pin_delete_hold": "5ec3f011eba01effc07cf383ad79cf9d3050d3a93fa77c5ff4096a32a857d09b", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "a2d6af10b742074e6526780616b0dcbda4323b3c01189b9e908bf0c5e5137e30", +"T3T1_de_test_pin.py::test_pin_incorrect": "a8daecd8dc1c40e4a52bf633d93f42d34f2834d313e1037d41404f8771fec72e", +"T3T1_de_test_pin.py::test_pin_long": "627c9cd893370e5dcce02279115f69b8d2d1d1582cede8b6dc4f252db530c83e", +"T3T1_de_test_pin.py::test_pin_long_delete": "f38933dcb0830a5529019b5736437082c1813443aacb1d33f4b987455fe14484", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "aed24e9a3abc237929856e5ffb8a492af371b671dc78d84291936c452551d9fb", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "2872a6dda4fa33bb2df75ba7ae33b30441fb5c38678ff7a46d1938da500e1624", +"T3T1_de_test_pin.py::test_pin_setup": "7f38490d956165130f8d75b4c6adcb1108a8f4b030373016acb99b29ab57e160", +"T3T1_de_test_pin.py::test_pin_setup_mismatch": "a5b9edf91fbaaa6e3c0589e49ea0e67861bed8022ffb4bc6f837cbf6d1440c11", +"T3T1_de_test_pin.py::test_pin_short": "a2d6af10b742074e6526780616b0dcbda4323b3c01189b9e908bf0c5e5137e30", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "423fcfb3849c9302812634e14e9bb9f8f1aafd44dba3da903b0c82073cb4273e", +"T3T1_de_test_pin.py::test_wipe_code_setup": "0669142996e087ddc546b710f9f5260d32b314c2cb2180b552e14b02528da94a", +"T3T1_de_test_recovery.py::test_recovery_bip39": "2311f002225c7db659abc065f01d1bffb8b871fb183b605cd1c0224337b44a66", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "393af9be535289774f4c7f69a31127c89497ae6b0a9c251dc5b97c847aa11b7d", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "37a9d5d636a53d6a7876f12b0bfdeb8861e23fb81559d65309bb005a755bb0ae", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "f9db3934ee7fe0b69525bbc642e2af061aa0010b937518940cce94f182f5db15", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b42503eeb1f68aea805cf1c9ba8be41c97f4541659bc4b2f4987e09b0f585368", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4d57c6c41757aa0f919dd6523b621427311754bdbd6a41890ef9ebf6c79d05b8", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ff8d022996af07db45e528e21d7285565974a9916529bb450dbda22445372b90", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d83cdbad67584de1b447f611014616bfb87936f8889949890bfc621e33379734", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "86415194d0a822709e64ad765a93c64967ace2adf61b4e7c4f3353e4486a4fbf", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a2e5ede5cca634d93f3a4a5bb4a8323b0ae5576652c4183233bba42152480c64", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "d7b8c8cb51eee2f131a74577e8beeb8209c93d4bcf12a52fcba461d8c37270b3", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "029a396c23594971c92d282526b736165a72bc5fc7d644c8c1217cf8bbdee485", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d882b3fb28ca8eef1a3b36440bc2e4e8cf73d3febdc53fd1f65f6b7befce144c", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "be557c3e4e0492d0b884d4ed549d3ae18e6175b74b5945e7ab6f2f96aab58748", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "700aa42142055535b4123d84f6d307a0589b43600c2dec525312d06c2af9aa18", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "736652b5298a7a4ee2e51282323d1150c9844b6f7b738f421ac4ad3a83d0788d", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b13e22bddd80296bb0d08dff4bc94dad287c40247045eb779b88ba5c53050507", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ebab6dc1bbf5648693ff34ffece0b67d829d44ac03a751c72dcf623b2cd2c8ba", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "aadf5b948d034af305b275fd0d837619b8f133039b4ed431fa31fd65cc2e143e", +"T3T1_en_test_lock.py::test_hold_to_lock": "9d60d7aa2fbe6a0de14379e02ea825fbf9e21471596498f7be686f2538391f1d", +"T3T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", +"T3T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", +"T3T1_en_test_passphrase_tt.py::test_passphrase_delete": "6f9fd790c360ea8caa60a183f39d6515ce66493786f71611988f20b6fc5af86d", +"T3T1_en_test_passphrase_tt.py::test_passphrase_delete_all": "386969917a7112629f7a9e3a96f703953d8673a0c9bf5428b7612811566c29e7", +"T3T1_en_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "9ec26b92ff4ab6add7216f99329a9b34b59c69dba9ab916a4e9516f0d833b466", +"T3T1_en_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "294e640dd8be88a92546107038ff6190e792896ae754d2d3c73e8d8c6bdac8be", +"T3T1_en_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "bd916caf1254ee0fc93febad5f03c603592b4adfbc76c3cfe747ffe54ab6ae54", +"T3T1_en_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "afa0d2c6bdfa50a22983ecbda113074703d21a008dbdd45e11e3d27a3fb704d8", +"T3T1_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", +"T3T1_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "c1a1cf0707dec05b41f36aba36d579ec3c93d5c404c565388bfea1787d094e67", +"T3T1_en_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", +"T3T1_en_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "dbf02c793dbb0c7e68e6fcfe1b7baeae0abd048c49dfbaf0994146ce46dcdbae", +"T3T1_en_test_passphrase_tt.py::test_passphrase_loop_all_characters": "82ff267d6ec0d48d8a1e25d1e77e598f563449dbff75fca7f2820dc1409fa453", +"T3T1_en_test_passphrase_tt.py::test_passphrase_prompt_disappears": "12a0d2dfe50c122326bd7ab6af7dd32008943091757ef6f5e9122dd721414987", +"T3T1_en_test_pin.py::test_pin_cancel": "05f5f819be61fec8c7c4341fd23c1bccf78cff93f05d573dd4f528bb0f1edbf5", +"T3T1_en_test_pin.py::test_pin_change": "b5e034705dc4490c0b77ddd73b05b091a00a07ff8f796329f4daca5f3b2692e2", +"T3T1_en_test_pin.py::test_pin_delete_hold": "6af2b57682fef94129a6e8b527b02a44dff2e996ff9695a729d339b1715f79e8", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "c0a1204dbf6300041da7ef5b1785417ff162ef8572eb4f6cca8cf4caae88d00e", +"T3T1_en_test_pin.py::test_pin_incorrect": "a8b0d396ad5e5732586e337f16db7f25ca9bf8837c7a3ad889049db6c60b0e1f", +"T3T1_en_test_pin.py::test_pin_long": "8bbeb3622777a8ade656e1d7babfc5bc5f0e2d65cfc71e44f6547ab690d807da", +"T3T1_en_test_pin.py::test_pin_long_delete": "4183ef3dc3ea6c8b469f53c81f373ea86696bc60791bc58e2268f223b01b5ba7", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "83ab91fdb4264beaa06e3aa241ae894548d73c647cb807c31ca456d4c809d5cc", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "a96907da6f88fb0271d98e7f6630a3282a8439d2eb847811186b46fbf8135419", +"T3T1_en_test_pin.py::test_pin_setup": "61975663353d6a02c0024c7d52d481b096f4ed57ab7a5a043367d49d586fbf38", +"T3T1_en_test_pin.py::test_pin_setup_mismatch": "2ccaaf68e752185f567a710b9a1c24b7e0157314c7e9b8583658b320c8e6cc79", +"T3T1_en_test_pin.py::test_pin_short": "c0a1204dbf6300041da7ef5b1785417ff162ef8572eb4f6cca8cf4caae88d00e", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "cac6df29cd37208e4154615852ad8d28642bc9cd1ba88f5a0dbf3169eaa04dc4", +"T3T1_en_test_pin.py::test_wipe_code_setup": "cfd7100fb36a1fc10b613fa400c22e2f06b7c50718080a3a632c3181faeaf557", +"T3T1_en_test_recovery.py::test_recovery_bip39": "62947c5512e7ba33f77af5d67d2063918dcccea5d5530db89f04bffa0c309ae6", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "35c67f93da34ba0f3c72a09076391bbc1ef24661d7ff8102f0394ee50250b29b", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "a9f1ab4971b614ec67fdaa9602f72ba5eebe54204b3735f8aa2b91ddeee41a19", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "beab50474b19fedaf4487c64071529e4217288942e4695ed795632559835b20b", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ef7f63ddb82bcd7ca92d739865cf466741b531b86946b1524b8440382823a56a", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5ac9a51693538d546a37d7c6c8c3be260849bdccd84d4f92a2c48ac036914100", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "08a2e9747cf0cc71d6fff582b7972e5c6b5a63bb667c6a63b2110aa7dc675b84", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5b61a5331e62c21419c8ffdd4ba8ff41b1ef18f9dcb575b3ad4aa5359062d5c1", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f5dd586173207ad0c2ca10288d9b0459bcd9c47b322a762bf69a48152a8d6884", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "31873e72e779156bc1ef9045b2ac30ba25568692032850f71d1a16dae9e93a7f", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "a2da4e7cd30e51e3a8587286660adfce5d6ca3dd0528a6c75c3f1c321ea6586c", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "c8ac6b447810ca25784351e810a18eb2979dfe15e2f83bb24e170e3149f7f29e", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "499e0b8904c178f2b88eee73fc90591033c7573f2f7ba246247bf1a5506b0060", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "43e9a64487eb5dd479c81e9f2fec09d9688832c5fffb1ab2acdd158a28572b9a", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "210a7bae28c84565bf5fc748583449bc71b5de5f3ae4b64bf8923cdb35b35ea6", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "40e03c97e2ef2887fcb8431d6e18eea96e4e50f75cb5936d1873248b96648bc2", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f552bd22ac89b24cbfe12f6f7e25e4b2b3bf127c1907720a19821f71f21bb1a1", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "60dc6da85afa676f6db815b1cace3d37497547315b218c6a996d316efec229e3", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "748b5c6d33fb03477260ff3552684e8c09b99d8a19e9fadd639e904fcd2158ee", +"T3T1_es_test_lock.py::test_hold_to_lock": "8692abc2f68ad3577824088bbb1898cbe7574f3730083224601d9fd6ca847252", +"T3T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", +"T3T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", +"T3T1_es_test_passphrase_tt.py::test_passphrase_delete": "f7049961cde87ed77ed2536e73faae8e77b8d30d9d75dce9465bd2c2bc5ae809", +"T3T1_es_test_passphrase_tt.py::test_passphrase_delete_all": "bf89b2bcf5d644eb10f6988743f2dbd3b9f8fa3cf2ee5a8dd56077311cf6868a", +"T3T1_es_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "287eb89fe15b58be4f6ab9ac6338ed9cd8fc5463c15eed663ff6be7b185bf377", +"T3T1_es_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "8d3a77d9b996aa27071b00d5227fbb1c67f9d93d3789a3612974511fc00f15e6", +"T3T1_es_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "79fffc686f8e154e4fe2380f37f5fad1a6853f83720326b9339084e0c715d737", +"T3T1_es_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "3d28976a89877c4763d5ae55bf29d0ab4ef1d17c37535e7c485d931593b5fda6", +"T3T1_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "de23481b08acd3ae320e55b30dcb33ffc62c011a4fb4f2bb619728a8e7b2878d", +"T3T1_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "4e5206468e6ab2729471bfeff0bf1f897007c4435476618474c35729c2f5f5f4", +"T3T1_es_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "de23481b08acd3ae320e55b30dcb33ffc62c011a4fb4f2bb619728a8e7b2878d", +"T3T1_es_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "978f69c3e8a9286d26fecfd92dcb8aefab18d703efb7f09040156c0bfe13c3fc", +"T3T1_es_test_passphrase_tt.py::test_passphrase_loop_all_characters": "974cb2879ac66ee32b9342242fa12c8cd8f72102fbf6323e47245738742fdb01", +"T3T1_es_test_passphrase_tt.py::test_passphrase_prompt_disappears": "874ccf635951029c0322e6d8b69ec3b9ef59a18cbd6d39baf9589fbd8612331b", +"T3T1_es_test_pin.py::test_pin_cancel": "a2e3180edead65ae2d612dafa42867a2f510d3a2409fc235101be47d1f197fb1", +"T3T1_es_test_pin.py::test_pin_change": "c48fb329766d35d1333271167f16b49c9b0fbeb3ecce8e9b62d25bfeacc76ac0", +"T3T1_es_test_pin.py::test_pin_delete_hold": "077302727057bd5b39ecdb8185e7ec4e0b4fb8b46c39f0cd781a962483e0ddc6", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "b0ccec10f6c83939c9d125c3bf3fa002a2e938da3500140137811a63febb7441", +"T3T1_es_test_pin.py::test_pin_incorrect": "f7d3eb4d7f477f78f1e25974efd1d0ce9387372861f902fecf4268a510d43b3e", +"T3T1_es_test_pin.py::test_pin_long": "5f727e79382488097f3b0cf2c6036f30646044f21ea322224575dfb585158db5", +"T3T1_es_test_pin.py::test_pin_long_delete": "cb1a81389b4f8c6de6b7fe459b94544e37184d195450ac597294a63bd48e41f3", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "3ff64da9880bd41b3f54aa910892d1a173cf73052577c1c44b369ccf799b85d7", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "aacc6d2959fcd8ba2117d6e9d2fa2bece29acff55ee5e62244eda72a9181ed2d", +"T3T1_es_test_pin.py::test_pin_setup": "42d4ec32a135fa091f60081e41515bed8c992dee7e5aa51fd285f5a83e14bb97", +"T3T1_es_test_pin.py::test_pin_setup_mismatch": "d5404828241cfc928c698a6f7ff07a6c48905990c2479ddc54c40cb4eee5a898", +"T3T1_es_test_pin.py::test_pin_short": "b0ccec10f6c83939c9d125c3bf3fa002a2e938da3500140137811a63febb7441", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "81abef93d84e258a2a4a4235a20a3c2a251820c8a24fe920ba04c965c16e8a6f", +"T3T1_es_test_pin.py::test_wipe_code_setup": "a6b3beefb6b1455bd2908cfe2b58dab7274aca7c98176ad88c5a945cac743325", +"T3T1_es_test_recovery.py::test_recovery_bip39": "edff80f9c3c7a59f46347412bf55365be54720d35543f862cf3a27209195dc16", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "1b15cdc0e1d8b2087d71a43ed131b9c21efd339a7ffb71f1c7330c180bd3275d", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "796fa6b469663f333d82bb296dc286d0c36be1cea4bcf5b7efd4371871d782aa", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "c1387c1c2fb4286512d93824a12f953f16b51295cc8d558cae6fd1e310eaa090", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0fb4c39f0a264948f1b2fe4d826227f7dea4f6e786aafbdf061dcb1ebf27309d", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "075062ab783981ebc2e39789bd560c129e28b85332f1c02242fa62345a09cf23", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "75b49a3864081aed3f971566aa7c8b571342ee93f78c3d4cc1f1aeee968e813a", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "89722867b8a3bd50019824f9152bcb152a77f108d1ca91cf4dbd7a02e565df6d", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2cfdef780039ba2a24fd93545148696f6f8b5f7ee3049c3e005be03020655bc5", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "57aa1b6bcd629465c3f0716d0be70861c124264d601cbefdeda7c3a8498afab0", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "1f7c2890d794cd107243e4d7892a9beb209d98437ff7ff67eb3a4a85bdbce4fe", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "231d960801a67f9264d975e0fdecc865cdcca0d3dfccae71b8c6906ff1e7d1cd", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "88ec818a2193993a5cd23f9708e8d343c1f9eca505759f4a178131b56c0f4e95", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "6e5ffef280c38a6271cba4221ab7e686c6918e20faf1db24e1ae06736ecf8bda", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "70c84970b185ed2864c3f90eb98a3db5baf1872911dd87021e41531e93553d3d", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "6d4aa4011816184fe5dd277e931d370d666e0da7f332b74d21c4906a9fdd2bed", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9d13b27a5e2c3b59f9a9074d7b0f6a88c3c879ac899565a668f2dcd45e2970ed", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4a97049098f4a972435269350f85aa4ce0efc9b48a34bb3521e2f16ae7f20f87", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2942aab24575e2ea01e97fb7519726a37218511c3d815f47cac096bc29af7ea5", +"T3T1_fr_test_lock.py::test_hold_to_lock": "1b0ac32693b45bd3f93826006a3a33efb2619b7d9698ca35be742c59f6f1411d", +"T3T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_delete": "4b0c7f08f8e573a8df489f1c342bc52637fb0e5a306a42471a82668c443fea62", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_delete_all": "be782f4684be677f69bdc9ad264858fd1cd21e8184c3c76700633ecddf0ec094", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "0d5481161bc8239c790f07f67249e8198bfcb930edc85237ce41f2540e822eed", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "ba7d6b4f413bf860a4bfa01504f4e063b6d8bf9712277c7cde5f74515f3c1612", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "382103eb3d416d90ad1dc82c0b0de8c4d0cb22bd8caa3f29c06add807c81df6f", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d2a8394f5b38d9cdc5001aee90878216cfea406cf4de00491d2bfa18b4522f51", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "ca04bf1dfbb0e84966c2b3a77efb7862a113f7a1df126dc8a07d8161b6f37747", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "4d00ca50bc9e09f2903b799e59883c25c12ef1a9bd0e39916dff3985f4571b54", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "ca04bf1dfbb0e84966c2b3a77efb7862a113f7a1df126dc8a07d8161b6f37747", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "23fcaa8ba5d295c6cad8e66622514dc1d382dcceb2485046158852a2af508753", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_loop_all_characters": "138f00a9fd5d8d49fea2062b74d3518ab6ea0c0442453743897ca9f4e4001610", +"T3T1_fr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "2338104c8aad606e9ccfa0774ebe33a688c5b9237289e8d08de16fc6d6c19426", +"T3T1_fr_test_pin.py::test_pin_cancel": "d042a69c511b077e6feb819da7234dcde385179870b46f968221be395a3cf16c", +"T3T1_fr_test_pin.py::test_pin_change": "843045a97835da52bb54fa427d2b4747a405c3ae8f8f016231f0e811da676d42", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "991d6377d39c485bb96b4d4a4bd0e1d4a36fc3e1d85adbdabb936db769f06f7d", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "b1da4ebb9e347f2759870b511cdbca6b6b41e2e9af62b424ed2c18e908dd229a", +"T3T1_fr_test_pin.py::test_pin_incorrect": "3f74004795c0ca97cf92f828fed5d055a1190c6ff80dc9bb918cc1c2adf590ae", +"T3T1_fr_test_pin.py::test_pin_long": "2fb022e6e95dbd6069a7a4c5f84af65601b5f67bbb119d3d6872b7032d14fb06", +"T3T1_fr_test_pin.py::test_pin_long_delete": "ea6e4b13819e1e3905eb141456a603d99e85480fcf4909c5c87745c4a82c8819", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "e705c1b9dd2e5c93e68d22d6b2e9c1c3f468ac1e921a610ea9ca83d90c31642c", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "476ca666c08fd17d786e50ade620ff5d83dc1b1b9f12838550c91b428e3f8ca5", +"T3T1_fr_test_pin.py::test_pin_setup": "c89bab92f2c6312bcb90765b70bba4acea65a5404a9448d1a48acc65e7305c87", +"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "68b8d7176492ade4cee98bdb8a8b30cfe2870b2a9c7a69edd8209690399e21cf", +"T3T1_fr_test_pin.py::test_pin_short": "b1da4ebb9e347f2759870b511cdbca6b6b41e2e9af62b424ed2c18e908dd229a", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "2e1624de4edb6f24cb6915a68aa0c3a1ed96ed12b001874574b7833a920a57a9", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "574aa40b533b644bd133d48d61258c220a3370bd5573c769e4f17ea87c9b55d2", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "68e149f8af48153e48c5c7c4d0b81d499ba619806306a17ed9a42427dbf27261", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "7259f03479342329ad3e17880bbc6fd198eee09d0884df8c97d225747fbf8841", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "a5169417e155f73ecb329c2573e79e37f30eac2f1f4ba7d4a7dc60f0131ad1a5", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "95957ef5e91b9e091145be5b2ae87d6708a4cd273ff44cc726a16d153beb04dd", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4d7829e03cd18f428d3a2813df1fc07940da58449b0c5357cd56814efbec90e6", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e227438b61cd2950c9c49d91f4888ed665e644251cf3696dfd7368849a35f40d", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1be05a4f0517b1fa2501880db571221a91754400b6e30134714e9161c2f7d4e1", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "cd2e48cd72798e720689d05be404ae40ea96e22e6e5da298df3bf404d30d256e" +}, +"device_tests": { +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "fb9519eacd90972796571a24485f1830049e1e610b53fcdb65ea8b1099c8cb0d", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "aaf8e9fd3056e69ff7ac84ad051f9511e9a5076b6a34ee05c696ea3e3f90c508", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7caa0f9ec73082f01f8426c29e4085dddc29e3f75694e343e3ab60848a8436c2", +"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "78cf99ca978c3283895efa62b9b00259590b3798f61daf9878c10a00e2be8324", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "cb11fa560314c9b0aa64881eac07a62b7d4c7dff12c36515aec42dad99114cd1", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "40d07ccf03bfc3f91c8f748a871a037599e61360fc67c2ee8408004765f7dd56", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "d4346c5871b0541ed955062495922ce127c58f59400896ee1c9bf8a46865be62", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "cb11fa560314c9b0aa64881eac07a62b7d4c7dff12c36515aec42dad99114cd1", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "40d07ccf03bfc3f91c8f748a871a037599e61360fc67c2ee8408004765f7dd56", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "d4346c5871b0541ed955062495922ce127c58f59400896ee1c9bf8a46865be62", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "c9108adac3ce23380002a5019496c0224d7f24a05d12ed881cf8a444dd98d558", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b3cbfe5991c49b088827c9bb5d22e7b8267f85cc3ada3e0594b62845f2df75a9", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "509afffd6ed07242d5e2c5c1fe216e9a277f42d5f9d459084db3573f59bdc5c0", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "9b5d0dabf97a59321f37f5fe358d80762748326369de128e51c5f0c444c7e9f0", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "830c7d899e8685abcfa7720a736fec27bef71286633a9e2732fa28edc63b6d7a", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "830c7d899e8685abcfa7720a736fec27bef71286633a9e2732fa28edc63b6d7a", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1239ab191a3617f42b7158c9b00dd1aaa91d62b895fd0a32dbbc3e99a7326892", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "c15a5e98c6abc7a19c7e39cbdd5371ffcf6dd7836a325d6da4a1cf5fd580b634", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7c420658ee3d6c5b4d3d761af26de66cc0bcf7c471499deb274d964dcaab950c", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", +"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "b2632cca34ef5bfa4ec82d9f42e6c7f02ab2877641946dc15e00545d35c7be1d", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "b2632cca34ef5bfa4ec82d9f42e6c7f02ab2877641946dc15e00545d35c7be1d", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "75815dd5a677052badff2c883a54ff5f2f1dd1eb85c566d5f8e164961fdb5db6", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "18e5ffcf03fc8e9cc3e9bdbe5912158b07aa54c56d68ec02e4c23accbb78388d", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "95744de25688a176e8852483d73154c3bbeebd1825442d37c2b20deebe0d523e", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "42d19a59b4f8b00d946e968b89d68e3cc10bbe8d017402e3e82a0c067d384b27", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "c0dfed142ca786e2407183617f0331a3071b263c411002c31eefd5776d493d0c", +"T3T1_cs_bitcoin-test_bgold.py::test_attack_change_input": "2db6ff20be95f12dbf430f3849d033dfb4c651fdfd5bc4f0b1b281558cdd44fe", +"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "2db6ff20be95f12dbf430f3849d033dfb4c651fdfd5bc4f0b1b281558cdd44fe", +"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "60a727c216773ad0add34655974faf217b94204641ade4181fec649b4decaf58", +"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "02cb85eed7420b609d8d36c586deefbbe32c4fc4cc92540e8e51e352e6ca6a71", +"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "7e56e2050861561adf09b67ad6b734787990dca2f306e741e27b457dd6fa95c9", +"T3T1_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "0c76719e80a7cea40a7b83db7c3e18063a79823f37df08e0a87e69b07301eac6", +"T3T1_cs_bitcoin-test_bgold.py::test_send_multisig_1": "0060690dcf1c1858ee49296bd38a3685271e646e2249811870d337aada8f8210", +"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh": "6dd5abc24b4cf936cc130b8effbeb929bffd2d76c044e48ab95cb56638ef50f6", +"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "d0c618339414593608cafc0d6c8a8493ad979591a86fa8f269fe1cf810d56ec9", +"T3T1_cs_bitcoin-test_dash.py::test_send_dash": "e43260fcb945fb101fa0bc56fd1881c1667b846a30cf7c7d2ddece24860d90ca", +"T3T1_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "2df942c286c677dea35be23e5dd34c0bc61667c4883444f50a13cf9067abb002", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "1f408f02b929a73e1a20d1cfa15ad840d81ce9e428f9d4ddec92b26b9f2b5600", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "dd31d727d7051c41678d43131aa672021c7ede173a1bc8be6d76a2ba4c8d12b7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "11eba9a721c903ffca01f3e5d2baebc923a44f1b302319350b72313c7864f213", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "036cd6b5d18f1f6b305dac3a1b47f34b3f42b7d2ab1b515362429ba66ed3a49d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "1c0f9973ee845302f60bec85a8d53075e9fc600d6246c88b74e055b200c9ef8a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "40ac879588fec4d9103c19fa4dfd982c23ce71e8c35f618be107ab071a971747", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "33f0f6605f81f8469e4f5f4d18364b10c5cc83e4407ad5880e0e2a02d2b9b624", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "2a54327763f4f4f5f273c81f812ef3834fe600e00310c3589569c2186cda9a9a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "a79193e1249d98e901c41f03d6e2c739c8fd94a8ccb1ba712db6692159ad3f51", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "2478ba995eab253054d9726be995db148cf1706b148d852ae5b1f5c6f3faea00", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "e73182844076116213091879fccd868b316c6c2790b951afda04cfa1fc615840", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "59f62ab5b50dc69af561f304de7ee7bb9435a7aa207ca190608006d3cd93de9d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "bee3fef9235e53253a6092d9c36e33c100be86c9433add12eb8255c3da51aa82", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "68df3189d87a42611c09da1d94eec556048f48644e1fc3700bbc22632462c61e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "1f408f02b929a73e1a20d1cfa15ad840d81ce9e428f9d4ddec92b26b9f2b5600", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "dd31d727d7051c41678d43131aa672021c7ede173a1bc8be6d76a2ba4c8d12b7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "11eba9a721c903ffca01f3e5d2baebc923a44f1b302319350b72313c7864f213", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "036cd6b5d18f1f6b305dac3a1b47f34b3f42b7d2ab1b515362429ba66ed3a49d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "1c0f9973ee845302f60bec85a8d53075e9fc600d6246c88b74e055b200c9ef8a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "40ac879588fec4d9103c19fa4dfd982c23ce71e8c35f618be107ab071a971747", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "33f0f6605f81f8469e4f5f4d18364b10c5cc83e4407ad5880e0e2a02d2b9b624", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "2a54327763f4f4f5f273c81f812ef3834fe600e00310c3589569c2186cda9a9a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "a79193e1249d98e901c41f03d6e2c739c8fd94a8ccb1ba712db6692159ad3f51", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "2478ba995eab253054d9726be995db148cf1706b148d852ae5b1f5c6f3faea00", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "e73182844076116213091879fccd868b316c6c2790b951afda04cfa1fc615840", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "59f62ab5b50dc69af561f304de7ee7bb9435a7aa207ca190608006d3cd93de9d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "bee3fef9235e53253a6092d9c36e33c100be86c9433add12eb8255c3da51aa82", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "68df3189d87a42611c09da1d94eec556048f48644e1fc3700bbc22632462c61e", +"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "a7ab74400ec07e427aca117eb62c68c2af9ea1abb02ea8663faed6d9ec7cae4f", +"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "2bf3ac343b69d6cd6c02ba35ab565169cb897cabd742737368100a3139fc7cfa", +"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "c8f5b1d1d75e90613f9df773a7cdb08ec359db65426c6c6b59beb2c22086a4e8", +"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "3617b41bbb3c4a20f4918b2ecc9662ea76668fc60d3a4d28b8116fdb3a0184e4", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9fe895f0de1ae852fab160b0c2b966ecb9d72b251888efb6ef06e6fae3497735", +"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "216ee04bad948da8b3ef9c197913fcf0b4c6a05fe67922b423c4dc83960ca545", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f02bdd793bc9d1a3386b929b640c7cd234e12e31c217b3584408ae9f66ff65f9", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "cf34ba62cf6cc12f3fdf0401d78e9bd9f5c6506994be56d5f23a4147715a5ccd", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "93128d5824b378dbee0fc1c621d5b9809f9b8456b168d5051619c47d4966f849", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "58dcf7d0ff3fecec43dd926251e8d9f3d09238014072e6cf99f02df0dc471888", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "1ab953aa571c10d2356bbb62924e8d5183b501196a771f8439046e9834d0812e", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "0666bc103033ebf271567348fe9e18d058f8ff95f23f99aa85af0bfcdf27fe23", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a95b49220b9fdfabfdc8789cd25006f0beda025b408b9790aa3fa55a54c2b322", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "aefaa5ba8503d44099b030ed86d19cd42eb5e0efe2689b15a96dc5af652c19c5", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "92684fd176d6db00836bb8a8ef663d573aa1d2e3b3be9f19cad49203187d9c0b", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "9d266f727c227bd6aae9751317cbfc91416733abc6722c30e0a7724dd971ce34", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "e7d01f753a4d139af1b4deee996a04407e8c08a7c515a2425d5d7486496c4217", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "1674739b317a34350c0a74508cfa16b072e0763d3b340fdc9a54f54c555aac54", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "0907a688615c7a77268f77e96d94242e2c955663d34436a66e2a5aad3ea452fe", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "93b4b0ed08b14aa81d9e6ba888d9b61211ade7c85bc2f6709ac26851e0a42b72", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e92df58bc58bf0674788c498232addeccec4a1950177663d3c82cf3106dd9db8", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "ad0982dd43210aa399d9826bfe947d0301f1d1242c979700ac6c38e332f16e31", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "8e81d22e2c8213201c7c3c04bdee4d4cd50e5f19a8bfb3075bad0dba914f5d4a", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ee52ce9ff7c0d6819402f5908ac2c6cc9fb1fecf092db2686a1f0270d4b1c0f3", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e9fed2efe072ceda24d95d68dd2b46af214bfe4dad8828ad8f6e7eb5539a9500", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "c31c057f1233bea662fe707936d5f805ff5569859872d1a16f7cb6b7069838db", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "4900ab403a334e04f9ce1fe6f5dcc7c667614f0d43c7ab9bcfd82572afee8d27", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "40057d5b33b209d877a13d750443d634fdba1dc4f1ef056c96afa4d0022cb58a", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6d2023d109da7529361d15475efada889d4952eb8ef9cec905b980b7aaadca2b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "4411fd4d491ef84960b7ad763435b98a41597a40ffaa41bdf3b9681dc6277c5e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "4411fd4d491ef84960b7ad763435b98a41597a40ffaa41bdf3b9681dc6277c5e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "d48fbbfe1e657726b848678e62ee58c7140a918968e6d08ac3c8b87ac9738fa7", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "5a8fb423797ecd5dfa4dee111ee06d169f5b6b10f8ee7d1d4db514d68f640d09", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e3ff04198dfa626240667f4fa6bb608e55a2a715d319542d95e8c516d4a11ad0", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "870b1e8465c6855d9f24480942619b1829f375de868434f99eab25ec02abca7e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c59c3f921b8e92b9d92cb18319a712a985e106c79e486ff213706dd7b528db0e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "2a164dd3d1ac42fe25dff6989cabb4c2d4fcc3c7c78c17d676978bdabfcbe1de", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "94ac255607483da9000c2aed6cbeda88049e9a69c28f7a7b8b417834a29f15b0", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ffe1cb6b6e026077d701af33dd45b5681c0917b0379629ded4e06358339b9689", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "961b117c6ff544dc319d48fba9c0179c44f6fc0a1967bdb31b22728973780cd8", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "2b03ce917aac4213ee0b5dca9f86ab5c4184172ae801550022eab43a0331ed09", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "c16723026e90abf940df848ac3289e2f9066b42220e365d0f20185a86dfb6eb3", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "873bd4842c7738836d4218ad7ce22d765fb7e3f53b461b6522e1e709a4c744d8", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "1b933308fa3406cb326dd1e5204c3a913bb4fa8fa287519be5cdababe6323219", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8d9ba100ea5d88c12fe2ef196ffaeb21f16fdfd382a9b40d86786823841b6039", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8acbda5f001069325fc362310214176e6b266ec178adde8f3353ccbed223f1c8", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "0446cd78f7bc36ee042e21de615f0c9672b3e108ace106acc314f12deff744f1", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "e9cafedcefe117df36dd95349064044c681bce8363450826718699df65e47a88", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "d47f29d3516f86b127c86d08b5ed45d0c3fa65dfb106b55e29aedb514359fdfb", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3087aa0c1d1dce2c3b5b201569b0f953a99283dcdab72db89ad5050a871cafc7", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "0e32a10f9503a2395e780e159b5033145fb4f3edb672be479bb2d768cb1b4b59", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ca298179e446e5d110eb2213d8286053a8d3d41cf7005b8a867dcfc72fa4b3fc", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7962036a573b82c9511ab127e842ff5bc53c6008d4a3590df764d12f87a4a82f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "81c0a07de0b578d04ca64ef743eb2d26a93098069eca00dfbc8bac7167b10d8a", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_grs.py::test_legacy": "e9f2e4627c9c65a27d6c7b0124aac0145bc9a76131cd1d3e19f8986497afa13b", +"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "df8d5f03ebc0af691a2ef4188777c081254a3b33c5bc8473eb0118ab90119d1b", +"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "b22f38734c3c6fb1840a16a368153cdb6ef2265dd3cd7edf5a2e304f80c5a515", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "4589151c506e97bf7fb2f45fcfa11ea950e151c802aaaabd67b2f9592dc1aed4", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "a80bb00f4bd2ddca14f6fe828836a1cd32066a696ef259412d7ba87db38d507f", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "4a14d439a87863f36801ace1521479814096b417c9355646d17a54d48d9fe255", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "777b0f97d01eda4116838a817491e2abebbb2f47f7ddcb61337d45fd5e016c74", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "be10e09800f8b5309d50942275d7122040faccd71eb0622acbf4efefe2b39254", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "6b021b1bbffa29c5ead1845d26be6548271bb4ad9db4b1f63266f1fdce47080d", +"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "4a6bee4fe45f28f75bea099aefc41a471bc4e61fa5ff013d37b31b79a9242a44", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d2e069af15313c44ef9307f6b1aa28b4b11e6f5062122a924c92eeecce4eace5", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e13a77a4da94e0ec63285a6ea1894bc43bc3575666e97fc4fcb50fea434f81c8", +"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "a3bad4796a417941f035464615782fb96d6037e3b491b6cd0d9738ca47f6ca31", +"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "409c6641d96339ab9f5d459ea7f5b59a578f5ab9e667703e3d16dd606ffe90af", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "69ed585ebcf3caff0388a386904fd1f6e0c782648a557bc152b1235b9a4b7b9c", +"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "f2002c78ce94a861a17d9ebd7b34a47b846ef41352583f76b265c8b659effce3", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "c590209a8aab02820aa5e2841f698a7f22475bc0f08bcce02f2db9b21a2abe1b", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2c7cda253567c83dab72d9ccaf724dafc40d52e244b4aa25f1dce0c1d6e43b10", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "f252ce8846050e4bb8352037ef8c3d65f24fb463a6b9efafce1684d075227138", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "58c1f15b65f9c825a845434a9c0263ae12051275fee79c7631a0fb24ed6a836c", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "40fc42ff7d5b8ff4751f84cef6dbd6158d7b744e20199e1a8e4703d03b7b8e42", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "32842acef03e92bb8e9588c4f62c720c090b76cfa05b1b501139ecb80f440924", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "2cd39bc9256d0fe145193e4e303dbac4513831025b5a84c95a776c299e223cb6", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "aba263e4db929b988210854950b66b22b9d94b1aeb125252a2d4167627f71298", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "3d1b4f61755f248637adbc11249ee95ddb529bffee2314af5977a9c5ec838c22", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "cf749423a179a3fface38e56cd42cebe31f2383b67ae4fa5ea1d43b0997807d2", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "1296d9e5cf29df1113900ce8156ef5904f7879899047b081d7947952bc90f8ad", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "581f6cab15d6d1ae5c0c2c84923c238a141d4c6f96dd4e888fabc3949bd66da7", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "c549fbeb529328b37525a91d79ffba1890d98e211784c7af8af6fd9e6ab222ab", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "cb888fa01f769e7746871425c246a60a0104854cd79f20f4daf14f48d3a00bcb", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f7bebea8c494ad7b2134a17a0ca471b60df5b91f998a502ab9a4dbfe9cf0f549", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "3ee537d523909e27c9e484ea0f15a9047ccb108b959234c3c8c70471900bb370", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "927922e4e228f2c62624a65f632dae5cebaf739ef68fb8a981fdfebab0f5210f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "a8a372ace59c3da2c02d659b1ff51c99eb41c3718847aa655cd7408ca5429434", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "f579e485c876376a9b5d6f4cac99aa9756cf63f7239a8007d11199de2bc75c70", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "c1fa315d6e00f3a86597a062b345485c9368c491b60939e829ad4143089c7460", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f0843249ba63e22f181ed36d0e97d1230f9f15e5e1c1b945098252929d79b09f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "9d496f2c5eda2c5661ac7187dfe1f73525c649f69f304efe3dcf485e88628094", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "48e26580a0c643a7996cd88f59483274462d5de0a256ca478ddf7c3d8272af36", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "ed5c10e6b0aa6e58eec85bd80ace832fa7d155e15f92f2e4531c8aab7ecae036", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "c71748d934bc17040bf0d3928b3c4baacbbca8021aedc43d9bf82af8d50da779", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ad77552ed741f9d93cf818597151f44f204e31754f33914018ce8985344e22b0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "98271cba7e1e73598e3fcec535a6c026614de476235d35573382170b661d5316", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "600866c5ddf653eec4fe3a52c1f3b84f901e327ee950c1337e9dfe9f9721a36c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "678ea311c23190635adb775d22ceef04fa26338e74e6e2acbea4ead3785fe1e7", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c91fd16ad1b1c287e19604c0545a29d5c15b81c7a740f0bafbd1cac1b2c6d561", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "8537548d96aaf358a46a49fe2e6d80e18f63ccd768915a0918e61ebae58ec5d8", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "5ea91418c282033734ff510340e6cbfe23e92d9622fc6366a9ed0f3d0d250614", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "f9ffaf8c9c6705765e7a53754707bdcf963f83a250551355142da20428c8c242", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "00c9fac9e9f6833dbb386d7df1c254a5f71c0134f6ccef09c307134de110db74", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "ce0a7178100f946c14cbfc2cc9245794f8b2471b4a2bd80d631633e3c91f6a0c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d6621625501f5be1b437d5b9b3ef79d4dcfb3a8962e894b010060dbb938468ef", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "cb8271287f888db3ecc441523efcad5cf8e50a855efdd775a9ef1d917567819b", +"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "f1a5eb1cd1ba8bf574e2bab8959e8e660e132e190a852e4993b05b0a330d83c2", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "67de74bc7692e72551145ea28517806a2f9ff570865050b6a2eeee34375606a0", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "facc4656751c47122746af3fae3d2933088abf5db95f2fa436168c7e93790771", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dba56c6086b06373ae3b2a73ff3cda693f982ad74ff54cb80a652e2d2096b2e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "41f5daa53c7b5ced79b626022b50ac050e0ebcf2f32d8a243a7fe1364ae030bc", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[decred]": "51e38efe9dc235c6685da45b3a4b71edcb58dc7564627f1b80bdd6b5fcb6c7ee", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "a58d3d6778193f6fcfad0ded221b771e12ebb1718b2b3e4bf8e7f4d214c17e35", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "7edbcf556534ebf6ae26350bb4a427067c35a3debeb039a2fbd225c00b39f889", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "94cc6185107ccfc1f42e0e7e987cad2ee734030531076d232ed0ea006abfce61", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "f243659557a45e5a3afd923a54b0da12286aa389e54819d273a5f6a96d790f22", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "60e89bc2dc0725dd089296f4762f6762026eb1ebd9b94deb8403e2163b1bc47b", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "60e89bc2dc0725dd089296f4762f6762026eb1ebd9b94deb8403e2163b1bc47b", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "0e778ac544937d4edbc363d30a0361b7bda31685dd1c06ed5b204677da1003fe", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "c55dda4165bd7af19e32f9c7a32e11fba2882931cb0bf341218d614cb7ce1041", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "d9a9667d41fffbbfdc03e3d4f0542076b84a64c38c0054485f779582cec79415", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "d9a9667d41fffbbfdc03e3d4f0542076b84a64c38c0054485f779582cec79415", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "14086cec773f27ae43eec0edee03c51c0200835482cfc27158cdb08bdcb0e068", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "2b6db5db755dc9a81256a02683a9fa4dee4ed4e709233411ee38528a2c7c69b7", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "6c60a24da7619243ad89273097ed4aafb20c244d34b6de0c48dfc70c84f619c7", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "6c60a24da7619243ad89273097ed4aafb20c244d34b6de0c48dfc70c84f619c7", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "1dbd2a518301759a49d0c4ccf2e45154fe6c13a8f46958d97c74f8696f66509b", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "fd87597ba8e7b196d3a5e6c19da6f07964b38832592291fad47fd94af02cf8f2", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "8dcaf9b2f38e4d419090d4b067c4962b0e6a7af5b2a5e33b164c95e97fb537ff", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "c7c3b4178d5f0dc62094b35aa6f2339a7a6017442f122dd5a5509f50319925e0", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "63268e589d336c72a83b33986fcf295a6cbde09857bc09172f276b259f327d4d", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1e6a092053fba32fe77283283bdb62424ecbc6239184a22926e841a7d9a2cfd0", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "1a50cbf61828158fb092d31dc65ca3643604f935c5937ce8ea68e5437281eb26", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "ff85589955299d71075223bd8bce9756a798b1722946d02137434d11a872eae7", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "c38b5dca5341a18a3097dd5fd2ccb56fe07197cb6d3b43745d91a6c2ffb3546d", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "f2a845be528d2014eead8693bbc03da54a5b22b2bc40a2bc1b36c39ef7551b16", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "f2a845be528d2014eead8693bbc03da54a5b22b2bc40a2bc1b36c39ef7551b16", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "f3cb657459d0b4a4ed2c3bbf5a561222f09680aaa1b906193ecd10678483fcea", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "aae7bcc78d776474c2c94421390ecf532bb6c7da4f00d2f139c89269924affca", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "5196080a6cc53dfea35c5675a5283fe0188a89a2a5c43f4f93a666d660a85033", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "5196080a6cc53dfea35c5675a5283fe0188a89a2a5c43f4f93a666d660a85033", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "cbb342898ef09102f37be1e185aeba59fc1afa97f6a4ca86cc121b90d42fb1fa", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "378db82979a693769ace37f1cbe32b6c9829b7b8a6f1a719bde7b8c0f03800db", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "359e33c4116f38502f7790a7309b7e5907afe41d721dad02f710170a73415b9e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "359e33c4116f38502f7790a7309b7e5907afe41d721dad02f710170a73415b9e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "821d22644eac013e893d051ce49d5ea3fc0b8309dfabce1183de1241a9b22f00", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "37bdf83a27c24c5d310b09805459072b0f7bf4ccd990afbfb07c8194d8c667cb", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "2cfece1833f775d3420ab219e509e3555635f2d9e478c1037d99c74a92b5a444", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "2987348abb17aec23e535de31cdf8ae8c3193302c83d664986a206f4588586f2", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "0e7068e4bf29ef0b7d8d69d0e72583c20c3dd69566385e5c7a6c5f73c2be8c29", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "fdd5eabcf6137327c387c8a3e96cf83f0653c336ff244ed727cfa083eb619b45", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "8e353ede64f590129987076e180badb95f1c7a8f6ae76c3351d96278f4d06a06", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d3d6b2a424da15e8d10741728d8545714102065bc7994b8bc4336e3d3d875b1c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "0d85c285504c18080ce0c04a7e81ceff0695cde20ff264222a0692efc07dc4d3", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "160724035b4cf0c6b11047265b5d7fc538adbac62c3d7353718915dba51bf6bf", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "4ced42503d09292c0985186444200e6f9ecff95925b93c2a455eb8a55db18056", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "aaa405e55ed5ac4d63302ec5995a3df8d3282a3d37a1a8f262c8b2e6b251ed5a", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "48b3ed5f69b9046839133aa6e287f1242a9e192c33404add578ab6055502dc64", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", +"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "4f48ec019c1d590a90d17ba3ae95dfcaf47a6cb5dcdae01a597e270cd2f575f6", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "9517e7a6abc3883cb7f6758a232000e494dda42131352e8f095ebd355cad12d7", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "e4983b9ff84ec65b0ef21eda2723cff184fd9875ab6a2446f245209550b9008e", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "30e2ccdc179f67772318bc95bb0670a01762c67114ccd4f78fa8975dfffa1211", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "ec1061dcbbc0140884f4e42faf3507933c2456f67003647095640f7615576a3e", +"T3T1_cs_bitcoin-test_signtx.py::test_information_replacement": "220262309578a995591ceee444378920823ed4e563b46330d246f66837b39d89", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0c07bfc6fa29584ce1dfb6515b00da4870ee71c0ddaf2d063d88db4208bf57bb", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6947654cfdba912e3d805feb52059740de133c7e7baefe80cbab0915da676fe7", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "faa2db37151bab191aa5d8b27e8850410c07d40a2423097ea9388f181b66311e", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "6947654cfdba912e3d805feb52059740de133c7e7baefe80cbab0915da676fe7", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "faa2db37151bab191aa5d8b27e8850410c07d40a2423097ea9388f181b66311e", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bbcd6fcd974499de2f167ca68a1d101f0f752c9e5d292c3895c76bc27f0315a2", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "7056d9fc4f52093ec579e9155f582d3eee2a4a8532e3fc4a48d28d06b2d2810f", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "3e24ca4fffc88521996d559b11ad5205029c81cc24fbf7403582e7ec8b1f515c", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "b992b2a8072df6147c85a9abf5dec4d86c7c2c9ea9933fb6b9428ac0de6c661f", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "348fe671b84dac3a0c15cec510e36ac110978cf04d3fa3c5a6edc50560562582", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "784e565a085a15f4715fce96e6cd73607d070f1356b4c64ee7d727ecc23d27a0", +"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "ac90bd47df61b14b56f7fdc958f5f879a08d93afee93befe9c68e6291636fe3d", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "6b47aa5f1a8e59418bfb99ff5499a7aef887b7a50996ec5214ca8eba470afca1", +"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "7a9370fb7106255f4b6bbdfbcb728cafac4b33561f8e28288a55336806904f43", +"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "4709f478dcc3844434aae13ad94b7fc171e9c54a301c83da735cb27eefcfcc1c", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "15ab6ade7aaa5e59bbfc4b7b80903db1bba47b8e9f9da828b1f8fb91b7bd02f5", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "195c8f8db23364f8cc919cce1526a5c609da19f136440b595b23dedf98c93f1f", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "63b878d3335c31c48c4465ba8ee7deea649ff6521603249b5ae9bc7d1a5a2645", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", +"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "c4ec99155b09db15c81cee7a70f10821698e87e5d5b580973d96ad4362ee2378", +"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "fb3dcb2539f4b7cd29c619117c6c3287d8c1bfbbd88f7485813d632c37b47efe", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a794535c8851a673d008324fe7d00f87054861de7f5e5ef9af3719ca88337ac2", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9b3ffabcd01d218e6601c802e0f7a952bb9fc2c88c10d315e3a1dbe0d5a9da6e", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "d27bc343b644081ab4df811b5c991109164d7826651c53e6f67eaa3ae0e3d581", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "5ddaad6b563bb384ea3ca37dd04bd440dbf360006fb900a271a23472f4012c95", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "bc93411098685c62cd74ffa15a6462d03faed2582fc9c8eec868e45928b6344c", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "435330cab18bcc4c9a90b0e78cf5c1f41e37763bcb98cdc79ecbc6b8cfbb65cb", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "b24df2c210c99e604bb05e56de2641d5e0d62fdb00b2d06a22c9ec6bec6c1193", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "5aa315d3e42bbcdcb4156fa0de2aec6dcd8a2b1d436a5be5f3e38fdf5abb720e", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "ef1d126f03bb1326ae2079fa9ea17b87eb4fb3f4ee75560d4a79c04a9fe579cb", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "4ef65bff4f16be5b8ac6ef3b782f1b2588d2633a39a61fd2813e064812423695", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "d1ce5191bc297f1bc5584ebbf2b5ca7546617132c3e0a4eefd1dadccb4e8324c", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c0e0e9222488565f241b095cc03d6b02fcc05789386da437e5167f3e0019e313", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "3e62a97456389a751964e05552b621d4d95827ade9114772ba990927f8d8d4dd", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c3bc569989e0c3d656cd1ee4570a1235527e9f1993af0e3917971392b46efa45", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e2b3aad7f6b4f397051906db3fd489486d608b2d0a5aad21166a3c49d6bac583", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "3380baeb84390ef2aaaf7938f6a80219f96ebd0b2fe08c17a423bdb4a220f0ce", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bb18d15e898c990e5da5bd17b07679413394a8f198ff74b241854477513aac89", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "1dec0b819a3c7daed521529e0b14541d227d0a0788da09adf4f0e4b550440433", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "97f30b0ebfa6a32446d4b848e6cd13fee84793cf11ccf8a33cf3b1643fe1e5c5", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "5d486977acc9a222587bcb19cb98405435cfe4ed890964029d264758740e1838", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "97f30b0ebfa6a32446d4b848e6cd13fee84793cf11ccf8a33cf3b1643fe1e5c5", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "5d486977acc9a222587bcb19cb98405435cfe4ed890964029d264758740e1838", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a4aa1dae137b8877a1fa8911ca785fafac5ae9ba4c95c6ae9f33bd5c82f92741", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "b9f0d5744f87930ae15f9c02ba074945ddb2274346bdab6a62c9f9499b2dc72e", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "25ad42d8fa38902212e7cf26607a7bae29691c7695151cc20899e8c5d1d4a253", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d7d20560e015abae17fb6b16e5a14c08986811d3e66007e839192bf6c15e692d", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "82fe91b00c8e0ade7f7a98ae30a21de18821f3ee1a44c147f6447b22728c5653", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "d54db070251b720ebd4b05e978fc9f721f37d96d3784411b72e66eca384d448b", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ff9a0dbbf9b1a38908a40fd5ee17173247214aef4ece9230b8cf8164df331d6c", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "613988ffe71102daee01364f5d9856bdc51b14aff5a852b59cca70ee7b3ab287", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a7c961d409d8c8d3de8a88f658bde08001adca691ab85fd09581baf37aecdd09", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6697adf95f477764ef1cd3c2e89f0a559f2d92eeda0f60222aad3d244a336fde", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "b6a4e304e7181a23f66192d186994deb2e5bd772d8086e47d16ae95e8f5c82b8", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6ad580f8a2087761241e5c2f3e3f9c959fd650319e0231538ff019bd35e58360", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "2e5ac929590b432292fa922e6651f809fc755076e6462b707c4bfc1717e4f65b", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "2e5ac929590b432292fa922e6651f809fc755076e6462b707c4bfc1717e4f65b", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "f3f08bb7157e8564d7118494b80e1a5b8c0fe6fd5a42518dbe69dfc0d7d717fa", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "d1f93a9be5e67994212c865227c7bd4dd97a15f683d43f879dc7c605ac6993a7", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "35f4fd127ddea03750100137e42e82e40e3b8a79f513c9efac675bd994ecbd91", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "f3f08bb7157e8564d7118494b80e1a5b8c0fe6fd5a42518dbe69dfc0d7d717fa", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "ebd61c48595b246d5dd902c7a2f9cf98e307b71a8e618fa4c827622789411bd7", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "65da5b443d7db1e47068fafb01bac0454331667cd11b6f749c908bdcc15021d6", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "44be147162a32edcb63ba11872208c4521b9db54ecbab79ff9a9a4daeed6c8be", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "01eef5024f2bf1e582640b51c2cb28a51b8d5cb912b5f7983f23a2dcfb46da9d", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "cf919d4381fae0b8e7214799687b0fe9466098a4d3f5f59b70c3eb2e69303cc9", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "96e62554f2dd7a4250c6e517039303817d9622ef42ebd892209b29f041730d60", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "8cbb19a0fbc286fe7af28b4fe99d2efeec1c63ea7735364a38a8989f9cea35fc", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "71dd5cf9d7ff23b573258046229905cc6eab91d040180b68fa31f3637049709d", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "1ffa53d2aafcdb73ba0d4c84524de1e2845a9fd48b78fc9c78e6f79d0904aa0d", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ed1e3d350632ce0ae6b35ab598dbabef9b30270ff3ecc5616bcb90564f92bf6d", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0ee04f420450e7ddbd20175d8f718f87f567d6171662ac7e8ae56c9179360474", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "9b46964e38efa379ff291bc66bab2c38967e548a460bdbc91e1fd537a80e5769", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "03d7c3d76fc9a5aa44605eef6bb970efcca467a126ef7d8bd987a4010de220eb", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "f838279241edf380bc7ca4107a4734b8b2caeef1be79a86a4079e2344ffe49ea", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a60f7192af2b22254cb09947e53d7ed25c02c97e9e0f2d35c4aaadcdbe22a8ae", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d14d3ac3c78e28b978947c09b17cedaedaceb3cd3dad2fa248c6a91548f57828", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d93c9c3b0cb687f75a17edaeca5ad1f2fda4bb7ec7e90d792772d9b3c845b086", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "99676918532997e6a27eab67b529aee3e805136c7242e77785625343fb34fb72", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a34f69a442c15a7ecf36a1f92395fa3360a9b7443f1c1905a40fde7307219db9", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "4d6255cf55e195bd8df6d6af2d8eb7df7fa77681daab7defd7a6a665c6368ef6", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "fe832936c31f69c4ec9bbe92314b9f31c2471b493a29e50d186a6d24439311d8", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "a146a0521c0186e8c31006653b48dca3e7924d3ea61b68f2605ae733fb9476ea", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a30a199d1ae68b3c94f04fbdef54929a637aadbe75cc9bc494c51ef5add56e19", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "74d502fa2730deae4c5f7e83c9c193022e97d99f1b5e0b166bdd7e6a9b7e418b", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "5c8b72fa8c5bf8e6b53e3a92f8b83c11884911ccba17fa9ec6d93e3ca8b777fd", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "042727e532bf1cf74550268fc5feaf5fa0a29f18b7bb9e1b26bbfdf6b11a1bc0", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "7a43153a3fca6c4f95145874456179f7f3ad34efcf7a5553b423c80d4d9fa296", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "48a9b2a3576e562ef74b281a5f6746b8c4a58700d58731e9abbace0f75922680", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "ec98056f5336471f726d89cc87de86398284db7c9f2144d45ad5cbe064704ccf", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "56e77d616504dd6e745b3defbb3347b03186254eecb96876bfc7b21aa334ec7a", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "daf14360982d28b35dee0d9662b8bfa076083b70f456fe83048f37e911c298e4", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "dade356f4413dfbb3892e6c788fdb4036daf294a48450b0716cfd21bda1c3d11", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "44fa7b5c93aa2dfe5abfda8f3c3a03ab6469714c49fd35f1ff9f29576a843cb0", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "f46657c3b65f74673d7f514e5bcbe19c82544745c79d1df3d728732956a8bb3d", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "56061c2eab2faa982ecc4b3fd5a41d1ca423aaeae6775ac1216c006496f36f21", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "3a3a539434a81447725602409782e27542165f082d5a115f3ed34a15bd9270b7", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "4439032b310dc32473d09db5bccb8cd5d0bd23f5bbfa6d096ddf185c4944a240", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "216fa732b14c21f774c6b7a02fc17770baa306d4dfeb54c9c77a85b0a619136a", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "7dc7613482d4e8c986377a85ca8fa6191426147bf767c448010208d955363a14", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "4c01473d34cb3fdbd0fd18c886a58229a1ce6362a6efcdf749dd1d6fa9eafb1f", +"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "dd75ce54d46dc216e7c0fa9306e1cf535689c590f058a5446648033b809b4e94", +"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d9c7687522d079023684b80e5821773ecb8748e16d0bffd7c44bfc553e08ee42", +"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "9a7bcff67bf1912f92474dedc94f3985d4e84be3d944285ebacc95dd6e144942", +"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "fe2a7751d96de0731c7b526cf514624ce01725e976cbe29c2d53e5ba43d2e024", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "e2503e29407ef25ebd83aa8b55ee720dfbef0a1aee0d74993c62d8bf4310e72b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "06e457d707de5058f0ace55c360a5c9c2ac6ac395ad4d9c40a0bd42ce5bd6eba", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "27e5475624b875a6a0cfa349b8fbd274bc81f9f5770e659046379f9ab3bdabc8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "ae638f29f9a7f1b7ee814dca5ea7aca94fb0cde6cd45a3a154614e036cebbe12", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "a297c002d533830bef599c02fa6e6b4e054597da986726ab23d98b0b25611d99", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4dced33bf016d2ffff4f4ee7f57a124773f2c45a2e5e6fb9b27c75cee8caedb3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da3d2954cf9a9593e3c0823447d68517ab7b87c3b999ee38ca384e64130f234f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "10ebc3ee52cd5d07f62a783f15d83e5e97189a612b7758779ac4b447501e2a38", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "713e5572002c019749588ba89dd29e6fc49fcee04eb3e9a268a4f3c691dcacaf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "da5303e90f225f5786e405424369e3879f8a248ef6e83b6e6960408f706bc18b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "1225219585bad0bca1d05b329ab492c9ae151953d11ec709de4e53d5f687c8c8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b26c6755f8ec60f98f80013594558c00215e32a48e9214b4df0c024fa53b6f57", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "e39351ae973898c26b54848659cee91ea3d676c69df4b3c773e4d99553482bdc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "5879fcddc63c531df48fabfcc2de60318173ffcdd0a1901d3df01391245b0a54", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "c0deb646f7b576bd51190995ed33c7d51a0e01403e9604e2f34b55f51886380a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "c1ed6ffd94e0365da389597d93c5d407e70de1f4c945892db082b50ed4a08fad", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "b376f7247444665e43edb9fc4750b3110d1701a04ca8de52c474eb751e127802", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f784e906672e51a655ddb0fc1d77919d94b8ea2071e4a2827d99a72c3222afea", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "528fbe5b008204b88c08355815cc846781c5320d9c91b473cc30a4f91039f755", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7e6bb2a7318eeaa59f91af5043d1aa3104f789ba19fcad8916af268b4af59afa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "2d1d5f1c8a4d38391a0ddfe0d9bad60afdcd3afab0c063a54b02d262a65e61b7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "27c4480f454851cc3107bdf0790d43f702e215ea15c021d099947591d01edab4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "77eddda9ff146a73f3338eb52653ce0fd1f36b96cf370e64bab3994dd67c7e48", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "3333d5ae0e5db1bf89fa3fc13ebdde49d6dc6af197f0bdc9b07bc04c0eb552f7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8dfe95715e368b515988e1b7c3bd8097efeed5d3c1275fff07f34814843b6773", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a594861d42778723fb3ded922934af2ba49a07d832c5a09deddffee71c8eaf95", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "445c2bd60b5a052da63dad87ea70c29e0ed86f4d481d920f1dfde54d6816267d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a347b1dbab6408f25d2b63ac9a98301b828e2c20bd6b414217c2a68e87219624", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "bbb0c548cdc37fe5d48dcca601f8741bc6841699f63d2ed339816df9ea507baf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "58e3581c2ab38ac257225428bb691b753e6d859609c6849d1f847d77a06b0b76", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "bab89219682125df5a48c377ba46502b04a8ee6be24362a803acd6c91785e228", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "1c28e2e1234149bf87def3d3717c912ab08cf581412c241018fe034239054c5a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "27023c94f0fbbddcb143812eddd2f24266d44295167616932e387b3b9ab74d40", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "07251fb2bdd389377bed64b5950db0fa0ce65da99875d2340d4b3b283e57ca87", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "4e8072bfa4f1341a05b75d5bbd39116b3dfca716ffbdd8c9bb203d967c9fd85f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88b4ef87509bec1ba8b7e2285aaf22b63d4ad5b28e2d6d635f11475ed6e20ef5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e66cb8b4ba987ad5e7bb438630744731f11c93524544440d3cdea5bd0647e3a1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a0bd69054584503331fc491042f0b56e1fcaff691eaabb9fb7efebe4058fbbee", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bacd06dc8ae51b9841816da77fe59fbe7c1a801e54a829eb227bf54c6189dd38", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "092f623707aafdd179c61e92fec27ec58b7548179f5047ecda9377a6660f614d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "f0201138c861d18b7141e6d67edd3a4b335625cbd53665cd6d2e1ac5132b81c5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "26d53add8371bf36fa0d1978f8b2e0e40365a88b8397950b3f40e60be135288b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "495837c4c660ab983c3454996766c61c01f98ec8381d69bf82b1c8baf58d09ea", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "25141226cdfa962869fa32c3a5d5b5f3bb4d6c1c3821e368ccac782377c0f875", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "30ff20cbdb009ceaf2dab0dd22c97cff13de6746e30d8b0a251b502dbac1d44e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1957d99baaa7b4df9b5391e7379ee5b1ef2bffa850c569484cbb6fbe86994faf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "8a0000bac3d9bf5b41b4eac9b9f3ba4b4555dbbf9a04de0c7d680bf406a59ad2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "a4ee98095613c42aad79adc78b8d4617fa0c181af97fb8ed26ceae43dc3d9ad1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "d15e7a6d269828c6194738186b1ae2df91d6f5eb27cb51bc3dba0168055aa767", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "c3c8817945f2a37f63fa92f035d348dee83736bbed61d30ab1647a73f7497632", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "12764e2f35b2b97dab990ac88537be93134631caed69977ebcf33462ae23446b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c1d160203e6cdbf2715809142301fb48e5c6f7a5bf0d3ac83bbd071441af8cb0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "cf47e1409d9e84262d37299ccda7c46f6bd9771c492cff212fcf7c9809fcaceb", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "f753f4b7836c5ddc23a4707dde3250fb59e404386447e8e256e9e3a1960bf5dd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ca17a7988a774d82daa513bcc74e4151a974b6dc7ddd81d3fb673b7c4015aef3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "06836af0fafde28ee68addbe62871e7d989487de2d73ad9fe8cbd62ad179b2ce", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "ebc751c8826184832c9ade7932d0946e51b302c0ada91634fb94b5251510a08a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "f90c46529559857ed18ba9ebac071e2a30f906316d3f77bb16c77a32b108a670", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "af16cbb55609f67477f711af46e3aae8c7a88e2542fbf1d1a5e729d910252ed3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "75b771fd9f00e743a22c970c076521cb09a6e58340fedfdf49366bdc5b65b4a7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "d48ff71a16e5b63c7da8094b98a5dee174feeafb06f9cc2a97c69c31bc22bb5d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "d05c3a906efb548f06e676b5202dabdde06992db96537a2d4ba13083959f19e9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "025374ed572e2854f38ca26abe65544d458e8f2a7003104827d862d1ba42f377", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "075d13a0b2d03e7115a2fd938822c55c8065c57e7688fb2d4c6b41015656a7fa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "7c48bbb9cd9131a0b93cad58e1f8b903c4cbdd7837fb83725fb8a78771572119", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "525c2effc307f98df5f7e09308122f93a804a1865f170913e8205e82d43448f5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c46d999c0466c88e0fd84be2b65135ee6a20fcf1c4c8c6fe0542fe4062d0cefc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ff448e383fb14aec0098092b17701d67bb8a3b4ac9ee743e167997e21a5fc0b0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a0d59b3d961690ffd41751afd28a94ee6366402a93a277a4f2c32d7ccb679506", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "48aaf2d49cee8617e53ce6db0c427e641dce7cdb8b3277088832d6d9619c76b2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "63e77cc2be608542a1f6c46d47890c369dae728b3ce73b930ecd4074a2e7d18a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "e56cc63b826e6c27390ace3173dced9bba37f513dd1b86ced965e3206da2a3d3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "8bdc07efa2bbd8912aec9eb41fb0703344cd16dc6b8bcad0cc0b8d436577835a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f58071562b859823dfa1538a3b081d3807fe23dd8e83c55781a9ab1c336089d1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3f0de896c6ff2946afe6c08c77cd82a3c167df1acd925edbb262bd5844fb2db8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e4c569417b8d52d20fb3d8da0f5a0bf5c4c189c924c97b35a4c1384015a2cedf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6f0654b16de894b1787ae81358caeba1c869bb0985ac9f5af4f16f86d709ee38", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "57917aa2f29f1bd48985d313a0ee8d6567ed5942d936f37ee5d84ffe881bc5ca", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "d79d63261c239b44ae2c06b1556300785effabd9d587ddb1de6c691867577926", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "8a8349b86afbff0f66d0a0cb5a0c4b43f9d1f396c344daa32a170988f7163174", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "4d91489cccc1163689933079d0dace4ed073982742a4b05a065ace8d7a737ae3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "cbb195f3150b0c0db4661c5c7a4482436bbfc4b31dfe9b99f4d2d8188a3ee390", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "eb7e280c9d9c54e197e1f6b2fb41f93999e4d50f51fb15045a8ebb5fa4d8bc06", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "95e204fa43e86ec07559679fdc23ddd6f57c0e866435d1e3ddd186ecbacdc2f8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ed8a6991e4c72c62d07e2a80b99f3839b4616ec32e0eae4515819a0bea7db7c3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "bfcc3ce1f083b1d724688930076dd85008ef7e16620c03e25e3b4dfdba7a2db7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1ac35f94c99a195a2c90b11368bbd594bf94e672c54d3fe046d94dc2a6b1584c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "483ec6b1b7b89bf10c108c915ef2d09969bab5e6bc9dbdf123fdb5578d335da6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8c2fa55bd3ce4267e256cffd717b8dbc4d7ec2e48e8f6b656609ccee2d0fe890", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c8e06dd686f63412df2e08b3bf184ab9fba8a6ff482e76e127464d4aa0724b58", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e84bb01ab8469511a23bbf6ee1c43bcaace54d176409968e59675d331194084f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "62b712561b2a6820229d9c6124cb121249490fa1bf919c1a4c304438b94d64a3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9b67006969b8aeae36bd814c2e50611ae7376628a09da6fb6035d96b6ed10c2e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5bab043e66d25ff7a4a260496c0b19f7d9a78e7a9f90ef297f89f2ac1aaa329a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "55769832dda769f3e5ee86e7e45271400cc198f3abbf18f3f4d54918b24271f0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b4614508a92984e537976b66677402cdbb8f3ef66f1c20a1ee656ace964d105c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fc39b214e22446ff3658db155ed6997811dd7c06731e6f4fcdeb47913caab4a0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "6dcc8b1648dffe52af7f04817401efd814f466d62a4e4b988abd130754a92170", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "60dace26d6f6dbbee0716174142670943908ac819ec5b1b31cc1fa5ed76017cf", +"T3T1_cs_cardano-test_derivations.py::test_bad_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "205c2363f08942fe227b76d1d8f267fcab0c19fa55bcb59e582f135298b281c7", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "41757a529e9d3861d1b1b1b11302686979904e1ab92f676f38eeac5bfff6ea4f", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "3d9da2d36711495c6f45afe63e37bf88536dcf03142074d2ec786bbba89e13cb", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "3c2af1a1e5f0e4cae316b49c3ab8ca39f528e8150afa35a12f7cb7a6db43d2de", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "95b07a93e37b647592b6cd0d292b84f64e2f46785e0e31a39d805796e5e08779", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "c457d8a79a114cf8aa3ddbea19eb933fcaaafbc2a6465e926e5a156ad951085a", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "59cf0c189cafa6c5cefb95f22876145e3318269f2eab3bcc43073172aad60620", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "6713a9640c6ebececbf2554d445a3da6dc71fa1bb47a64618183eb7173d83c76", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "057690f59dc16e209103db5340fd9620226b6efeea941457a27a553ca2207087", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "bf60a00c4465fc322476868852c3b07878a2e906d3f95c0905abc78d89146c78", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "92715dfafcfe4067ad54ea9e271c2f4e1e2b5780994c588bee8bc2c1206bfa30", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "5f92a92ced7359fb22f15b8ed9ef9ab64ff39a567db0f579193cc8cb22612090", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "eb11532062ab02abab18f61b1cd08797d04f67aecb5648a4d6c5897ee69466db", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "15d48130af0d6ce87ec4b58b2f1ff1d8151771adbde8399f94f227b115a3e169", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "93fe08c9513186dbda8d73ec534654d42394996b0d99234ac3ea5826c0b5be02", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "600e5fdf90361680b0165e17749236f481429addecf700bc5eb3187bd15d4881", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cc8e5ba04e915396f6e8544b0425757431e3fdc5ba24b8d80e4fe0471ce56ff6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "4af4c9b00191aa2045cffe531395e98741d92234389d377770b9c32c9dbffbe4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "f49015a1ed733782a6dc7068f42c00730d2d3247e09df124fed8ecd8efea4899", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "3b0d966cd0b7de3c1a67e8fab25325b9a1f0be41202697aefe229c2a95f3126b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "b660ae76575bfce08cb9742ef1aca2a829f034b27d1fa55b5bd7400442006324", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "3ac54e0606001cb94da6a7342d7cb1ff6be93b87603dbe2f7a13bddca9cc82fb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "479dcb4eff6032005bab35d85eca1358ca39343d13d750eb14b9e92622674097", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "feca058db0765a0e8c7d045a4878f278a92d40c60add5c409a339fb13b8bd4c3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "524ce7fef74bd5368b052432983e655ac2f87ff9eb12fe622a62f1e5d3984689", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "524ce7fef74bd5368b052432983e655ac2f87ff9eb12fe622a62f1e5d3984689", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "70582f944d06e4288ee9f061e7b5ab2fb8950c82bdd30db50f8f0b543798cb98", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "5e9ee0c1c696efc846f1a088999312e5fecbb70e5e4fdef85e238898c5b00ded", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a0044873f36d7001a67ed6199d8487dead31ae396c723565ca9df3ddbbfcd8d8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "20acb7183f1b9450a26afd41606b395153b57dec602219ef763904dae4b17b99", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "74dfbcfb1ac0492b04675d3951652bd777a2b3fb475e92588f35fa99eb4f7026", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "abbf65911333c1fc812d4b4adbe8121a7e5a5df79e9ff3b00808eca965c74633", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "875565741525f7b482154f1049064cf12d37998b24789bcbf9b46e6249efa2ff", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "7199640aa463aa243e98cfa20eb3d4204ee46a8f97354d684c2c6d738a6c0870", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "8090a6b148b16e957cd572d7b007afaef79a693ce204eac097902e21b85fa05f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "74dfbcfb1ac0492b04675d3951652bd777a2b3fb475e92588f35fa99eb4f7026", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "abbf65911333c1fc812d4b4adbe8121a7e5a5df79e9ff3b00808eca965c74633", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "b024d3faeaa2e91480dd3fb0eef1d676e88753f22019d17e75aa9ddd8fff4b42", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "91dded5c04d5d9479c118e936fbdbca7bd8991ab7c61c915d9772279e6a7b9b9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "c724c7f6fb49ed728d2f84d6aac4d4c9153fee165dca33170e4f81244485a9eb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "caad567f35cb99226dceeb966cc0bd2ddc8cf0d78b5ca45c0487dcf8b3c99027", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "8f3b233d798358efeb8e59d78aeebbb08977e012b6ad4172bd4bf6765f6d490d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "27812dd7b22e03e16de63050067ec27fb75c8be85116ee140cce18d631ee6b6a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7fc7d36cef779d079b1bf7a9ef1165a7b849d970f8881e0e939661ac7b667714", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "20910fc3219f49917010626e3acfb09b82d65ba9dd7cc17d27921b809e954b49", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "84d25fdd0312705e1d5f4e9494c0582e70af61ab30b3028fbb191fd52d8645cb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "bb00f35383a23e4ed31444126f7a37e469a4214ea964144189d2ef89e8df3a8d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e83ea6d7f67c7a10fe435ffbbb31a28b3b29f8a259ca8d81eb4db31ab6eee2fb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "d4e006f2dce33247fc8d783669eb10265a935b761697d411f2f1fa9dd09f8610", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "be796471213d42df2f79f8c807bd1dd6aa600874612e7cf90cbcfc78cf1d3c9a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "153c1347fc83cfe772f3fb7e26904b403ce3610a35947642ecf972751c307318", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2d787ce2c7db6d88cc0c2b4a2bcf927d0f6fb2e0b93c8dbb66ca0d6c56613697", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "90741e2df6449e169f48d62e4d655948f80be00cbf83060b2a14f0326b0781ac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "329b378577c651d9cde227e32409ec20af9977793793d72c7c75987d78220dca", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "f6a7765a1d2c4c235842c1df8eb588cbd163e3907c89dd2f4aa857bf3bd188dc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "0eac8fe426a1201b4f1f5a0b485e9bad7461f0297362b860b0daa026888cb637", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "63c45d380fa7103da3aefaacfad395ed699884dff519bb90ad9467bcaebcd0e0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "34fed959797ede3e71d75d2f3dc163bae7f2766f5150eef356dec3c81d8a57e2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a6174dcb2a8f6209a60b609f2fc7efcc7eeaf18ff22d76453fac40cbd949c48f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "e2a67d8cb2d8708c05ffa6acace6eb2ef80f591120298b0825c5f2b024c24c4d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b66640b4305103968e23d7a19f2ad1615821495b17835f9304990508eefb01fc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7cf345752ad81b4ca0102fe5e9d130844a4279c8126ac79c7b346f0973bdfa1d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "cfd9a3851bb4fd24e7bbf608b1c4d73c6ac1d04be250f93984a7739e04e1dc4c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "59dde3afdb5abfdb91a941daa1700c33e70d0a3ffa9496631b3f547ae3bef538", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "86391feda734eedc54099cf808d4764b70ce5b97905f2347a8f408ee685e26b6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "1aebbfb1f711046b0aa8e8b3df150053af18166ee43e0bac2e35271c701aeccb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "e3303c1601d7aab31a5293080189d4d4bccffd40618a0ea4459ff9909f49c6aa", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "65d111f11975e43b15e97ddaf31f400af437ceeda7c82eaa989baf39521544d2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b1ce145b0714a69d923861e0991def8a0292dd791e5e0d1ab802abea671e2c14", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "126340ba640059bb667eff14d905c94574df9dd2364b275eebdffb5a70f38065", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "25f767ed759ef71d11258ad97438fab6b380a32b5cc246548d20f8f1a281b8f3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7427323021f757e18578a088ea64fd4d515d5df8cf856ed24f5a1c5056193e47", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "bf59059087c19f352eb7444d8d2dc96226d81719b8ccf5be7680e969de4f716c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5463d34e3fb3035d47598ce5f099bfad33bf7c6d27a0c8a51219136f02b9a8b2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "8e6ff82e72411e9e23baadb5158e527a0f7cde4d430b9154bf976d249ea3a095", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "83252ee4f6b2f44c970a1db58dafee0d02b61b6b7e7d2381bdc8b3da77cc8b2f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d21225898ff795191661b533fcec9765468f19011fed12b4b7857331a9552fc2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "acadf7a505aecba3e4013799b938bc17455d283300175eaefbd0f381afb6b940", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "2e4d153f75b84a41f430886d22c4b0a235f5c249ce60379be6fabc4d08c58b1a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "611b1465e82c05e2b3a53c6145aef97b8ce151cdbf06d45ba36b8c6a8daf6d08", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "faaa5fad3fda0eb61f35d69f4f945d8cbc52c16042d6f67f34c24ff79ed1b592", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d751164abc5b9589d6364a34cb942072308a5caf1d8cc75f605fef9d31660d21", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "edbaaa701a170030f61aa28bc35a3b246e0ece38a72c77df050cf62941bdf830", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6a0254d4d4e20d9e6ba465a20dd79a183019bbdbcd01d13a64ac365aa45b4d17", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6a0254d4d4e20d9e6ba465a20dd79a183019bbdbcd01d13a64ac365aa45b4d17", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f48a4f2023517b9cd108a859bfae840455c6a1b6ebe7bf3859bba60413b52346", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "4f481d69ed4494a63d5fb9be025a0051238bb94be566847c6495d962b8f337ce", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "cfa4aa08d8e3fc22641a935b24695909a538da3a140b132e0200c6f3f4671e65", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "33b9c7b5f690fe6e2baa3e580bcda2a26b1254446bbf85f6ea301726cbfd2c02", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "5db6e8b70ebdfeacaff7f110cd0773b9238f49116bdf7c7307489e310b56ab01", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "484eec6e80aded346a2ce3fb3ddcedf1e58ff504bf22385f99c490e02fa7ffb2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "af4bb451969b231a9408e5de487d3e625ae82c607eb1f525255923344488d45c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6f19f8b00ecb4d95b192434c581abbdb3451d6901dfdef094a8b72eea84d1ecf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "dd8a83abb6eb2c460c92fc074e62ae784b2dbdc9f298292ac4c2810bf2c18a25", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "15d48130af0d6ce87ec4b58b2f1ff1d8151771adbde8399f94f227b115a3e169", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "3b0d966cd0b7de3c1a67e8fab25325b9a1f0be41202697aefe229c2a95f3126b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "cd1e4b5868fa91909fe34135fb834288e9896a0a0ac793fea260cff1d01b8bf3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "1f03dd2bde1991bb1c00a8302ca9f07e117c4a3a7ca0559e569ded8a847b7e70", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "bc6b74deaa6ee797c38f0ed28e0cbb207468a1fbcc14537add4e2ce9d18a5ff6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8dccc371e1bcc7456402a02e2ced0d7b9317682d80c68cf448ca76756739c6a6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "2157366209b2a66cbb337e386353a4842af529fc5fe5dd8f2da5a131bc713be0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b7e05510acf44d94cbf762daeae228a68a0e4022ab3de2e4d9a7eccbe41d7bad", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "d2f936bf44dfdbac2830ed90bf0b10647660f1df461bac46d7e239a617995956", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "2157366209b2a66cbb337e386353a4842af529fc5fe5dd8f2da5a131bc713be0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "5c4f06a892025a45fd0ce5169e22f1cb59cf5040c14601360432405189163854", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "109f5d6139b8eb490c8eec82fb7c51f6ab59e18d2936ffacd2dde61eb7121f4a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "102ab484bcc9e9ddaa282490acde7251c3f50f7624546af088567a5fab35e446", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "514501b5e1f3c82e64eef126ddb17fad6fafc41f173d0a346d4ba4a5434e7d52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "30cb47e9617f569c6a49834dc71ca599ced8910163e6675aa584a8754dc1d758", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "e7658fbd2e631d31eddfa2e98782583a15b55d00461437e1858538d3d3dd7a64", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "47cb0b5e569a7fccc03242a0baed5339fe01f2aae5529ce74c9aa8798ac1f0cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "efa68b377331877e69df61d59613742f3373e729eca435bdd96e3970b7353da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "346c9cb0a6dfe9358d2340d1952e109d2e12e157e689b823fea1b6c0036b0aed", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "d971bdf7a9ffbe2a40abecf4d63beaf2e9900d46b9174214c0f27563e43b275f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "90690a36511472d80836247218971e666ec9e16282fe5d399c4b22d5fec6d50c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "aa5dc2faecb0c869f74d86b78326b037ee7308a2fb31c2f7901ac5af7e05093f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "111b1eccec2a416502b02fd47897f83a898f32f3cf01d2e8898bc2f74300c44e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "cf5ec2b5deb33ae73bce9721b55071b26c35ffc3a05f06c35599b4e6823c970a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "23f98dd62750b0a2f9eb19dc54414ed476d4c6b43a4e60d7cee8bab8f74ae0e7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "add7c0153e9615bb2e401137a6cdba989cf9919c276ffce79af94581e750ffb6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "3555b623fd19149a6578a5e5fa26665a93e992748f0820e9928493725a5dca94", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "80436fe490c098c3adf6f47fcf068b93f0d3034a806b8a73978f0f31503497ea", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "863ff980c5dfda039948138465cb6931ac353265a87ab79f000cca9a4724c5f1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "3b9570d340a81abd9f6c1506ec50c5bb1d8cff4df9a4058edb9e38d106e7db46", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "10ae3933807ac853af3b462a73b55f0a4b625da96045401d9897be55b72340e4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "c50869028b8cbc599c3be947bb62ab1588fcb1fe5f381a8e1bebe4e11cb5b72c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "bd39f569e0a21325e916c5675f2d19c940099ff5c7adbb8121a1593fdf9ca5fc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1338ce706b4d3c42304287b5da9d8bd5cc5c41d951a77444de580a8c5b216703", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "037d33fbeb14ce12d1b7e246de595521edc511801d37c60c519c0d35bd2f6d66", +"T3T1_cs_ethereum-test_definitions.py::test_builtin": "9afd8705125c4bd38c0aa90de24bf4e818b700d02e1bda2d20ed6070e2d01274", +"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "85d11960a0bc042e1a0df40d13b59b4037d9caf6771ddb266af3cf34675ae175", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "8f9400e6c9b1d02bbc4a3bf879cd96a383bcd930bd24751bca58f181945b9874", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "48982064ec440a5a9a779e5582bbcb9df076a2d18047a9a17a9675facb224ae2", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "ea148d00cb96609a936f25b9541d240160d4efe0aa93f6e40b61431699f68b3e", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "0e43a66135868743df9cdabec6caf925b75c704b6ab5d09fb21cc9f062fe232f", +"T3T1_cs_ethereum-test_definitions.py::test_external_token": "0d39f4194196b71694958df582b6a85825240e0b3958f50a4704409c3d23f237", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "d572102c2bdcb117d7a5e8627c853ea1ebfba804782407f436731235b538f841", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a2de39e033e27c29a6146a19888f6a5052e9c41bb064f06070438b0f13a2b7aa", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3e8b682d7c6cdd18122a92a7a0257e022af33a508a65c3cb797850b2debc966e", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "fd09a0dc102e6896b2635e7b75609ea2da38ed328bebec256e408e3f2ead7503", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "f56de516175621207bd9f7d2045fed18382663797c533a9191bf891209a57331", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "0ba4c4f3f0b91821b712f0af61f89ad2689de9b9cc3e1154a6b8bdf35a524bb8", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "9a397d5cb3f6ede4561c16a3e84fa36c9c89bb8b5a32352fb53c4ace2c1058b8", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "ce51de131fa79899adf5ecd9d53e496e34f39fcbe4a7a9edfa9b33733c162d0e", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "9bc06db308e7f84fd3e4569e1a4eb4e8f9c42467adcd35ac21c67b7bf047a8eb", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "9d2f785d44be082cccfbce63f1b89f696cadbd07d373282457f7add401ea50d5", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e1e64cf00041e035f40c4d72184d403d87c2d0d83cbddfc6d4358ebc154d08d2", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "00cbc6279a025902941204f089869544dba10167e6f18e75e6481b8c99757489", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f641d35cba095653dfc46ecb25091248ffe690ee422a047f13f505a52e2e4533", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "ddb9c8bc6f2adfaf4ceafe38b10dee7749c12d521be0447318fd34a1baf097ba", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "081298cb7c70f35b4de72a18e68db15f072c013cb35cc468c129e87d064b1915", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "fbc2f1387fc06816cb5bc01147f1fb1e13e039e056271fdca3132ea5e4e5e4ec", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "648f14a77176e8c9ec98e5017fe3280e2be746e1e50ee53633ca7a3fcd41bf9f", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "cb13b38c67612733160ec05d11582b0f4d752565e0cf765389a22bf444b683f0", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "52ebc63690cf439b924249757eae62088ce60f5cafc4eb7b0c0b0cf2858bd18c", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "70e04eefa918066303796fd97fc411f257bd83ea27b7c033de081ba7602c1e9a", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "2bbc38bdf104be213856bfe6e1ff184769b357e818359a76d8d30cf0468f3117", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "8f989b56f02c5c9da399dc877a163115b0ee73e488107194e2ffa714cca29260", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "cfa226e69ddd8183ae415eca37f900a1e7b9263d6d72d7e2f215d7efaaf03ce9", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "ce1f4967c15bc2888a36c8823e245fc4d237de2bd342c09e5e3abd157a7b09d6", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "ff22f4bee5aab1875cf7ee5a8c3bbfa1d5ffe70564d9feca9bb39bf4a6f5e202", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b9e0da1af2d0f6559f4c53b4545224c7d087dfe50916946e994d0d95095ef995", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "fda7dd15172ac39b27a1bf729e253fa4414f1416ac0a17af6fd332c944b9b7c8", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "9579c396131cadfdb2d2659b292fd88ff395ea0633f2026e6d8ee4f1aff93065", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "e26979055a4317f2e00248b8abac0e96b54c0d74cc00f95a80e6ee6d30fce40b", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "634962311b928a1cefad4cea07eff126a19b3b197a89c15fc5013cda52782ff9", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "413e20449fc0e8ad5694e1dae50241ee96471c85f844bc62ca16ee7143f3d100", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "6a91059e3d94f90ce4ea86dceb2c31c7e365bfa67f7d55c590b96ba543f6ec30", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "17e581d3a6c30309e38b7d17ef79d2c000f1a7a0bc71dc7decac9cbe799fa048", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "440fdfc1adcec245b4cb274eb5d577c61591509bf7ba3ab866432185b0a4d818", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "36a2589a1f24b520ef55ea6effa0feaca6c4da9438d68fdc1600f235618908c3", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "3c2c2ce21f5eece369682f2edcbbb24485b52a7980223a87f28af7620acfddc1", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2e6b558932df11f63ebd56d2624e01857d4154428cac1329e5cf64bfb0f4f697", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "06a3aa7abacca86a068f331c255bbb7980ed55ea1940a598c94a3aa33f1896e1", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "298e3515219679a745e95d034cacb0ffb9296050c59fff2128559f7b66c709ed", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "5079cc771502a74b64df3ab84326aa68dce71be8d4371dd911ab680d18f29672", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "badb1055045be086afc7bdb9d0865de935e10b2d822d9cf4c6f6f2fa287e4a89", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "440fdfc1adcec245b4cb274eb5d577c61591509bf7ba3ab866432185b0a4d818", +"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "4f5d39c67c7ddf3804367ffe4779f9e516bf80606d83ce07af740de4bcf59945", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "8ca8c80d46824a534cbd62df127cf4ba8c197a8e2aa9d51a9af5471ef71341c4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "4fe5071c6bf79414213eb238d081712a1b0f52f4a8098ef8fbfec9e79615de42", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "e3f1986cfb86ce41ba68118cb50ec5f06dfb054a0232c7fc1f18954e0a2b1ba3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "4fe5071c6bf79414213eb238d081712a1b0f52f4a8098ef8fbfec9e79615de42", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f1f6e6c11b920bf407eab9fa0fa864dbc9e0a130ec2c9056fb91fa054441006e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f1f6e6c11b920bf407eab9fa0fa864dbc9e0a130ec2c9056fb91fa054441006e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "22f54111c23b147f6e7d4eebe4eb362039994b0f5aa67bdf87a1dd02ef3cb47e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "7416d23e513984c63ce60ab18d6634606a2b4518770bd22f31f81b052f140826", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4353575316ae02d31400f1e7320f191f572de40cfb259834e6dfa2009e462d9f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "7dc3cb0121c8c8a0a8510b1307b7fc603d94e9293fb8476bf6545d85630ccee5", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "18e4b5e7a9e23c9af3d61aeaa749793efa74ae0c6003820ee7db036aa530a259", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "d5559729fe4a54a4cf1a8e894d2a2f58f316e247a374e41810c0eeec0ba7f408", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "8904e1e3ef34a88da935d2db1fba0f5ccbcb2219b613c835bf6fee59d9113595", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "773070557c2ff0936d0954c07ec3b8e4f9e1fe2824abbcbd80d3097ea418f10c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "febe59780b274b429be4dea92f4bfae259754663cd27bf58b55a687eb1ff20e0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "773070557c2ff0936d0954c07ec3b8e4f9e1fe2824abbcbd80d3097ea418f10c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "dd7bf0b59aa934cc8910d89b4bd1e0cd359a681ca3fcd41105687e8baede4434", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "dd7bf0b59aa934cc8910d89b4bd1e0cd359a681ca3fcd41105687e8baede4434", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "736edcb709e250256008b391efafa1ea8f432cef4c9f9849ea3eca6d2b22151e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "39cdd18a9156ec8021ef50bd7b8a62a59d5eecb0b33e8946143a7e1766370560", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "258839bdfedb656eb8e922e1ad27b2a8492b0a06254e7435dccdb18cb615f14b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "7dc3cb0121c8c8a0a8510b1307b7fc603d94e9293fb8476bf6545d85630ccee5", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0f5b5cb59da2c2c422104deb088ff728878d807de511665c4724bfb9044e91af", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "19ffad22e90cad3b9c588250a9b1a5f27efa91e2127e53b5ee8c61fcae400d61", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8507e4b9198efe39652785a5e54e480f94a25b8294f9ca9a8fe785ec3a2d4a01", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "712a5685cf10486e36d7f6b8a60fd213c0061f1f6c1793b52b654c5655ad1952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "a7f515174b971d418a39c54c2719a2d11fba9ef86fee1ed76a6ec137c049d8ba", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "22f54111c23b147f6e7d4eebe4eb362039994b0f5aa67bdf87a1dd02ef3cb47e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "c9f77a3372ab8ec312beac5a6db800783d193294d85e418b8fd1b7adb38db730", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4353575316ae02d31400f1e7320f191f572de40cfb259834e6dfa2009e462d9f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "eb58c7887cdb2b03db77c4b4a52da147085ffbe4553ebf67486b26f4efe14e9a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "158afea5c17a5176233000f2148e64c08ed5ec2237abde033498556bc7603672", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "736edcb709e250256008b391efafa1ea8f432cef4c9f9849ea3eca6d2b22151e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "667c3a86a36ee3a8a6aba189a97c0df59721bb999e4922f215d74ce175375399", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "258839bdfedb656eb8e922e1ad27b2a8492b0a06254e7435dccdb18cb615f14b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c827abdcc825f9c5dd17687e0f9141e24b5cabd8881c4dc4413479c7a69b7886", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f1a7187ccf3fa796169fa859267c93e87d3ec794ce1e11a218ce487b82fb570d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "ba825d65a19482d295e43d2f7989a0bfa2a386290fe46a58ddc6935f2ddaef6c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ba825d65a19482d295e43d2f7989a0bfa2a386290fe46a58ddc6935f2ddaef6c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "ab73c0b49eec518041a1f1cfa9f622f0dc50129b3db6d86fe9045b3d8f3b9f25", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8c6065616fe0c67e4821bf6003252c7427843160b26b6e5ad0924759eb69be74", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "897fdc8cc7c6358a0dcb4f566f3fa88c6e005dee6d372027bdd3ec2979df9a18", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "13c3d46eb48b6e9e989cb9a241987a3a1ca0189236596d2a3ef9e12502874011", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "40a49084a89c0fbf02ed380d5baf4b1c5a29b4c675a273a77c2c29a341368fe8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3b6b4d2d2f21f8e693aa7178077a4640d875d22ad45f51683d446fcf73dea687", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "4f8de78abec5b7086a9212fd457b216c5e9856dc4514f0d0ea171e55243f5079", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "c1ed0ba1042541c4358e0f9666a6ed5c566ad1f48985d9e8692bca01dd021721", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "db0b2e6663426e80eddaf22562a13a4fb6101e89472ed573b411ee489d99cd92", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "554bf5d9771ba37bb944f1b98b246163f2cd7f05a562bd59a7897e85fd1bc222", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "658a56d1280968e368d8f3729269d671cc15ea34d3141d421a1efb6f46d80b7b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e565b67dea91dde4fe0efc4c903888fd90c107e24d55d9814a8cee76d38664bc", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "f8db9c6f24dfbc61acd1bf055429331bcc0fdb16d23cc0f68c7403198fd52766", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "0eecf6e83e3d9f5bbb98902511f87dfb309fc6ed3509400a5c74ef592c15fb49", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "1b8010dcc57554993512e0c9cff0ec47d2478094446a0b609388b81a54eb37ca", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "1b8010dcc57554993512e0c9cff0ec47d2478094446a0b609388b81a54eb37ca", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "1c4d2386a5322d5e0fc5e690d8fe9e3f629536c9405521485420f6dc2ed9de8e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "1c4d2386a5322d5e0fc5e690d8fe9e3f629536c9405521485420f6dc2ed9de8e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", +"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", +"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "cd738c0f1477e72f40995a686927413ded747e08275694b149167de93b3b769e", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "74fb1d8000a1565e80d35d3c3f79161e8b3f586ab8dcfdc7eee2a020b499c078", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "fcef99ead33b058212580316b41570bf7c8fadf64b566c71b4d70b6b7d1c8e3b", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a02157c1d1909c456b33907814c417ceb9d16c7f9de10d56cbe12d09971b2560", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "bc34dfb1e19b4c655cf44908f3ce05b21ba0e9cb8b4e97bdee35b8291aa0a232", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b2666be6c016c3d58009873812225387b9f2154c7d498c620bd7a5742058d654", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "28a9508cf78d77055a4bb528da662ae0634cbfe5638f92e331b7dc6b2d91792d", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "e7a2d703602998ee5a39fb7fcff9ed804ad0e8a94bc5d4f7205bc51526ac93a4", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "9a2abcc7ec0a58d74521b06665dc3ae88b9a62042288369390d26b6763d827b9", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3cc98b88a21d501a4c63a2b0ad19ec5f3d40222ffd1facc0feb970542581c4cd", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "f5beba2c29dea248bcc23dbd4a0bf3829a5d3560baf838e2eb5f69fbb4261768", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "df81c39e6fd20ca56aafd9e6c4175472190cb74a7b2551e196b3e6e1daee77ca", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d025205f6855b9cd70dd9dc31ab924d009e799e05c5b94135fc14dc01f76853a", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "380ac240bd5640370348cd3f11961fc8b33d432d6734663aa113fcefc4ce9eff", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a1a003de7e1cbaea5a8c3cf15584af1ad5a7216df42c6e34c6cf6cbb12315b2d", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a9428e7e4a1aa0f9ed52b5941f79a0759f4b423bcea5898c5f1d16c123a46542", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "212c91ae3491cd920d1a7b86d47243812ca5456239406782388afea2b556331d", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "4323af53246ae0f3f4d3fe83b64612bd3139447c67ce4afb7e21ba48dc704fae", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "8fffc8567425254a0b4dfade039542bf67325931291631cc2530f30e080fad8f", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "0ef066ede0af3680c66ec9ba1ffdd9ecf0e3109dc87aa4e9878713d5487e385a", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e604add36266544fcc5e958217f9cf4ce4c3c1e05423ddc7e5d00bde2a24cff2", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "e00562b27b9f0738242a8978cd22a2fa864d600c802a48a493377eddb7c9f24a", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "721f62dc55c4b4110403d0a68244f858be5f6d16cf433f7bbc384ef213ce3f5a", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "2a489ec807d73df46989296c5bc1a11e19a770c5e4b300180c6f59f7c675fdad", +"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "536fb01c22c7be1bc634b717159db1df0dd91eeb45462aa01cda130d79aaed32", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8406023bdef43e5c3e6a2a424bd00c86c117986ff659d1056784714ed8a660a6", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "9584a97daf3d31018406865e37b8f1aa0e71bbf3a95c8616a3b4226d9b7af028", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "26f76bcad169eebcc044ba8413ebe40ccaf51224417b463e86b61a7af8539abc", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "8f6906da90d9f21e276c3aba2c4a4195a2775d186e163e79509248265c752ae4", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "3c6ac4165c200aff2e4100493b1f61f07666bee1980296efc4dff745dee45075", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1e590c419465f8e57df6e0f9e85bda9d71751da84497a68958c046dcc6270ab1", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "eb334c59e145d62a9f68d251d0b8ab52dbda32d3768bf4fe79f0e73fd5e21abe", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "15bd361e29b05f96f88dec6f987d38c798cb6093536fa0018553b4e65915c72b", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "537c0de7f1b15b90c20daac7eb952ac75c25eda0522d1e084a27207bc9b51cfe", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7b8ae474e0b552e733aaf7212fff42ab04f1a40a90bd4a24d2e6ec0339c95781", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "da2e9ef780a1838e3c4605c4928ae780eadc6a3d712be1fed620eda22349aa5a", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "62090cd2fbb8fa4439cf115749a6093849ce984bda63a8fc4cfa6523ff90cd11", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f6f2893420b12f51159c6343d2e12aa561eb07cdd2af554e4e6b2a72253abc19", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "f5fb5aff5228b341ca81dbfccc94de2a7d14d686c5f7217bff61c765efa6e5ec", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "74d935361de0de8506746db9759f944815bec0fa5613a85eedf422b4cca5d3b0", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "27ed8668c1c6692d0ed4cc7a40f47f74cbe7294fcc1c7fe9fd7e850716fbbbed", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3c2bcdaf8606bac2d56748fd6944ac4cdc38542fa8c1c84268910ff09b24a26e", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1e590c419465f8e57df6e0f9e85bda9d71751da84497a68958c046dcc6270ab1", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0af7a7a73de53629bf1ed8ed77f34a1c0010a15310c8a3081ee89fb6d6c2c4a0", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a8e6d613fb0085004901775bb95071b472b719f1669e69341c1f4dca7c49631c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d3687f2ad206424a8824c026cc23b8c2efcc207cf5666a83b10b447828aa0f32", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "666a315e37b89fd2d614e579b9dbae14e32c39359ab1790450345f0d32c89f8d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "14b116ab0973cee00da7f207cd041cab67012d2fa902ae457d44737976a6fc10", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "20bd63e82f4a56754df3ee96dc5571a81295f41ab067b35be9a965baf9594e3e", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9f116fe69f56453062534cde498c32debfab02d82ff685cf497777aeb536d747", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3d31b330afcec7290165371e4946b5cd239eb36674927535f065d724eaf4bcdb", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "236a020544ecd081cb8854d5e02ffb74b0961bb33f13c8eeab0b1fb323b7c0bb", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0b587dfaedf22a648a277a6a4569a0aea575c2f81b92dc5d1c636c8e112d3ca2", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e30344a76f7988bc928b86abafdb032b78a48607ef16cffc66d58473a7c8a13", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1e7110cdc5c51a73279fccfff529d9c905203299f9de5d834aba262e5f0194a5", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e782b0df3e3bce0388b176e3efaba56232722a5621df46e7f692ef02ad41ab7b", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "751e4c5979d949fb79d52675da99d6af4b91660e5609701c6a273e29c903238f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "bb2ce895c4d92ea6fd70b1ee0ab597bed7dc4fc04cd729d1533367dc1ea86cc0", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "78672ba722e1cb276ff48a2bea40a9026e9e2582ac1cb5db849fba1a360047e4", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "d2a3d07f99e1961af97d783fa0244d7a100c0c1a3b1ca342c8f608e0e7f377ed", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f6edaa76fcc54315ecb19068c58c6acf4c2c2b88e78d803b37480fb3a04af79e", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f4807908daebd239b4f5606c91f06be35c93e9bb7071e92f1c2459edb548a6e6", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "321b05495d37f1f95a09fc450601ee2e3f370aa4af9a7543e63be13e97c33995", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "51a774f73b82b55e0bf1e5286013d47f36287f2e6e99cd509bf1d0ef42b67ded", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75659956ae467175de9c7a8bb61d9d7321efc91f8f87816a17f18463cf6cff41", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1f02eb23ba80694ef0fbbe4f19614f84ff52c9342a0be48f90a6f02efa816dce", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a400a0b33482bdfd4470e82c96dab21f08652d6436c8273d820eca0c369e39d7", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2b879adfabbbe637d5e50a433f8a911a57467edbbd59af61037081426b778780", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7fd44837eacd3082a7e8dfa11af04c4e6952c705d354bfff9f0f72560efe89f1", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "79305a7cb1571730b927d6b5b4549bf8c79508711f8b1a2990f598c0de9a65d5", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "442d3ce8be485fc31667026dab018d2c7521067b83198f7b8e5779df2bb32904", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f2048e8199f966374921e88f9a80c30090627e5fe867ae8cbac8dc34c9318ce0", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "01083e3267270bb237c4f778f4b021702eaf153d0b541d1e575b37751dec2445", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "577b928bb0420dae9e00299ab858d1f59e4c1b4e3476d3fefc4f266a4cf28a50", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "23e90bde0e5eae1b7df9b3ae3e9d84f1bbba8af351f15c4031291d6f6059e5b8", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a34846f672266c68a8ce747a2e1c37c661437833548488e10c2064360e8bf363", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "9b3a4d1b5add7f308101796ff0c7fd8ce76e1b3acf54990a270a1c2228c732b7", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "75fa897dfcb35653ce38f1a9cc36d44450a0c5f97864d0096198fd8a5ed66e8d", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c877dca4555a977d881c38e3e4348c93c9ba30c654fc63d5d3db1a1269a77bac", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "cec4f416b087df067b99e4d8355da04b1a694ab51bc693d1b28be44046d76d85", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "3a315b32fe6af185fc51b247dbd36194ba1005d91168cd9163d32ac412fa49fd", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "feb44a6596acf57afed9d20517e383435febb6e476a5c0b90c9231188e1e68cb", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "98b97bf14d9677b1751677e3813facb7cbc050445844adb55609958d0d89f2c8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "fd2e44bdea6384ab4b94b5e0557c08e7ad3e7e69fc1e0bdd4e067731ad0e07bf", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "32dff1643694e5a1fe8b29f4aadd9149f4104a59e358f5842a82616179c45962", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "bea4ebfde9aa1878a47013eeb914cbc9b13ec03e569ddca5dbff4eadb8d958f9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "72c32c85a8db6e00abd4e647048782669390136fb49e4df889ce98372f31e2dd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "5e650a58311d032de9aa4b883f4cf62619e6c8662b3f6d053fb88319ebef4377", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "e564d7d57b0606385445ee97a53832c5a77de54719cd1ae157753f26dfdbbf33", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "dba3467455573011a0261da2656447a47e6b7e6ae5ffec5be2f13c48fc5d350f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0fe3792a4c30cb81b842f891a0815b636760b28bff3634c3df7d0145391a5c36", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "53ed953d030a21ea1cb0c6e79d137cc24281b4d612ad6b7364023496029addcc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d50c6389acc148cd7c39b4b8a66a52612296272fe12bbdd7a6c6c9ac1834032d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d9fc6300c20150946051d38cf2266c9206738aff9c55878b38bb1ce8f926c496", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "ec7de41627f7ad667d72ca818f2d6834e7368e088d8c1ae50120fbb8e8cfb2dd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "518e2e69c1ab095a7a2915dfa484a048e17e715f167ffa1a1e01a56932ad1ba4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "477e435a95a07d539ddb25440c07fdafa3d2ade23a3b74196489ae92df64b2ac", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "f9c7214383ffbf56e2bf889e6116dec10ca25ea1e82fdeb8533220333518f5a4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "36a999e0a9298e7738cc425e67698b5b362b7b8cf3af5a7063ad3092cf081dc7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b7d0cd3934588201cb5b9531d27df8407e6e3fbe30fcce6f697ee5b9f7e068a2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2606d159dc70ddd12787bec91b10238d77f36a8acd139aa2d3acd42c1e483843", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "65ef6ff4a7218d5c0b95075636ccb2a535734a764a574f59dbdbb63a45167655", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09d1dfaf38d500cef7b298ab61ad2d128c530bcc6fe75f405821d0a2d45130aa", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "9b2dd7c06acec4d060adc07206acdb8ae616926b91d6b3b4393e5429c8ce763e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "692d5fc2ecbe326d6b229f77c7d449cba76ac77eb80e9df3ed85f9c4326d48b6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "53f820251de3f990f8419a8c6900776e6b02300dab1fe6cfc2fc2a80c6598ff7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "a6c3d5e716e078bfed3e904483118d13b821ef76eacda49627cd1f7244980a1d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e10339532cb4a6ada3dc0eff756467aaa4787ac44daba1f5019ac3b7ffa25d36", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "851946d246793d72923aa3522cfe4a0c455d6c3ecd77aed38ec6c2fbf42ce29c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "29d3ff94b84243ca133b3b6e07bdb8f05e1ed4e25b149a05b3a50b1e72676b6d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "38b2c7d5937b5f98444080d1d40cb6ad4b984d3d8cb6f8e8c6b5f69d1977d9af", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4f39cded0fbe41c00fb4b6d45057f6c988bfd07d76abc83fb2fe5af399d7272c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "0d2cd29a60c45333e4440d859e4e47e32310851f86833e36e5034149bf2cc846", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "e0ea707742a02e41a5ddfc83aa66b23880b2acc59e05fc469b8f6fc683be6cad", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5d4e33d185e8a4bba81c9e60fb270a326aa476ab780c0e866579e2b7c602e6c0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "06f773b9429029725aa6f62b826e063d6bf24bc4dda5fa2ff0f8e25fcfe51b30", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "40515ea662cb38454da94fd60fcdea8d9df2470c0b0eb8e4d1789b168191e61f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "acd5a8b109b63e54e620dcd0b7f3b54bc29a3d3c170ab7ddb89e79d1737ddba0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "17e8ff760ef20eb12abd6ac6517b0f799c1d27033a399514d42762c76cf49f7d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7e5840ad56a4962e05301215c6223a4609d5391b0622c6ee5c5a77884234488a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "f2035aa248ae4cf683240c128dffc0eaf5ef59178946ad640082c23388767103", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "a48558dd5d47efe2c3aa828ca735972b7316063b76f7eb2505cbfbfcc45f3068", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4acee103a26ce9d1af3f1924f6c57029bdd99c3a322d629c77ce1dd7fd54b51a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "97b4f0b3cc4795d4239cbf6686f598edb92e9cdb6583c339e722d090a5008083", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e58b849808153b44bebe111b96c8c419dc4608a24e2845f84242561b0dcb9d47", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "139ac1bc4afe643028de15d71087930f363c3850c74595a33f10cb97c7711b4e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a00b0d68da071ba15f97708ae732f35fe40dc0f5c55671fe2047f95d163788b9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "452a1f5e361808295075750a71ef49105715227600fab3f5443b5aa0ff70d467", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cc814a3e4e8c00e23eec8f073dbd865771ef83b490ee4596b280178fe23a2aaa", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "8f48ce150a385a0787642ccad4553bccbad05b107f9b01f8cd85f101e0952742", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "78a62bd5c0343c49e2b8e90e4051e1076732350b5dcf6113c6edf53bb0fe3062", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "67339c72ebb598461b9ac367a6ce8d678ac05bf22f74bedc2444b024a831272a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "5a5651311f9a8286dfa459a29587c28ade2b0af44d091cd593ef3d2eec2ed3a9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "516f0704d1a53e9d7281007a34d02051de91fd89b35d2863c004b9ad25b5cdfb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3b39c85e1748cf129ae9f4e4184c265b235e5b3cb28dfdb8567fd6abcf64756d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ecf696fab4faea408264bb98ec33fdad726906212b5743bbc42b3330edfda63e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "647c04b5fa500a7ef372cfedbd5185dc477da59ea734af5afdc45fffbd0addb2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3c268891e70eeb3e3e3ebda79479bd53c985715ed803f5cf02b9f1224e2b943c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "204a09cee74f0a2f3f6405bc2a5c6228b443459ad3cc866c5c53344a6349c6c2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "787ac7fa8becb6081dc08258482988059e3f6c24aa248460c730c8df2c1c4f1c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "9dcdce348c63abf4dde7e69747d84986fa596069b19575167394fbd8de2346cf", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "5288a10bbd550f0bb9c49baeaefe51ac2e9028849a899eb64a56aff1a3b178b0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "e10339532cb4a6ada3dc0eff756467aaa4787ac44daba1f5019ac3b7ffa25d36", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4428033963b71ab3377d7748cf48f08019c93f6261e38665b837c75ac0f11e23", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "8bb5017226b903d8befabdfc0664dc104c01524c971527ad8f456e74d2c04520", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a0a71a445bbcfe996753ec382a204621c154594347e6fd382c55db4f0e706bd3", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d7fc5c5683d33b267227addeeae0efbe749bf52099a028399f9a75fe888e3d9d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "36b472a776e2e3851eba8e63cf48baa213417eefaf01200d7e7a882a3957590f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "2baadc38d6b200b8eaaf3083bca22e7c887d62dbc09ef897849727298fd112e2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "2045dc0e56bd0b81f0fdaa7dd1121211d17ee763833c9251f5aecc4719127779", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "ba83a7059000599aabbd37bb32378f6219d2cff830d2aedafbf482d26be23a80", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "31fc222dd6132547805ad3016a4ac6ea2d3e145801420f05a3c04faf121a609e", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "3f89ae620fa621c748a7d20ad30e36ae0747b0f13b754fe33a471f164528c8d4", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "2f83720222e4d29f95c57b35f501b9aae5ca8e868e995fd5b1e902c569bf36dc", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "065827e1f8348e61aef56194c203a57534d5234ee8272d611b7fa6797c4c3f90", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "497c313c4bc344972c9e1dc227643449a6df8c0058f6241c3eaceda2fde93743", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9463e7b88644adc19d54256cccb0e211236474c944ec2ca4dea3cc30fe166a42", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "11ffa2077e9cc815beee4b110aa91ecd947e9b44cdcdad699cf7f1d35ca3d5ef", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "54750bd1f69be04eef09af3d24815732e620b129a64ecca2c910316c962ae65e", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3f20cddfb5d66990a439564c4ac399b9b19078c6d18d09b353ce335b10b8edeb", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "85fb6e772f66be1ea6a0dfedbd9f0bbc19bb8923b9f63a6bd44137326d94506d", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "2aed5aec20006dc78c18e2e4a1e995778a12c979434e6f24065ae62def7ff877", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "97d5fa83703255b24090db354853c606a612e357ebca517c8de6a4103844d643", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "d7f50998b59772a37b48714343265bdc64be86d92daab6819bdc00a5be7abd5e", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "29ec4cf651781e1a10af7d11bb0945dd17d3b5078ac49d9568cdad723cdf7a79", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "9806d8ed952d4ab36ec984bbb4b3a44c25511bea243230f03a2376e567f9c6d9", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "5b66c280fc1a6549e5ed65d72100fce7f278097ff05d908d918a6bdec5ccbbd8", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5b244f5767bab5ad9c7f0e6d7bb553a53c9f717026afffd75af35672fc3cf789", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "d3741e1d8dc3c25f091ba398cf40bf28f37890031e462436276fe4bc2680c35d", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "9d111c231773407fa452c116b38698c2c9bf7945e117df2fc7f88f8f85ead953", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3187917eb6f8a463b4bbf3d6bcf52d9db341c334c1bb7d2c00e9d28efa325cef", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "5b2432d9a05314fd0223b1f0661684407192bd07e3c1fbca7c54e1570f52fc2f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "88090b08e0a2426c37382f558e80eaaf7fecdf8360bab8968e1be7303e69bb67", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6a8516a39f2b9cd78c1fc7acab872a947d032b006c8ee32164c1124103ca01f4", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "f772066ae9058b0f2801fec75fa066b7e62e053dbb40fa7cf373f1b557c14249", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "45f9e46452adcbb56d32b942653451a230501c5d8dc9fb47eb74ef508c97bf7f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "83482bbc22e8c52d142411bd5bc5a26a027cb14fe72e3c57ef5b363820a4658a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4d562db11a15824da8cf29ecef1bdbfebfbda119bf4c37bee34593074180ba98", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "1bc7d30b44dd7b5f1d81c4c28fc3ae58105d666bc01979a3fdf5037d41211b52", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0f66a672c50bca056d1a1830a84e0e33b51d056ac5eb608ea34010a7a1e08504", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "bd1374ee1d136081e7d432e99159ab537f53e6e97e3feaee2d283914a672a835", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1bb26b7be21e0e0dd733bc7b2a7301ff8cd8e842d97a03bbf9b153d796da03d0", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "1de9f079fd8a1cc28816c45abb73d69121f932cddf1b468042297216bf56d136", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "24b176aabadfe6842fd83a631ba1bbd0c676d29109a51072c83211f0881c4e6a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "3055c8e6011cd64e29755f5b2b18d0250fa5f14e1ff263ae12e6e830794bf430", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "eafd704c44bad034143e6d7c6123420f435c09ac332c35a36c49485190c148e4", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "9e48eb0e188ba2de44d637039f68a446dc5b730dbf7b63251dded42fc98f566b", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "2682c5c66c0097b330f9f14a818dd7810eb9b3728f8b06f0beaf60d82adaa51f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "eefeee9a792a4d78f14b5a64540a68fb3f68bfa4bf9c85a8d38c500af92a94b0", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "97e219fb0f5417afeedc744caa5a30dabd5a7825a9e545ceff1c9d165c28699c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ef9cfd6850b4ebc2c1164175e1aaacc22bf32b4728d6de3d4a948239a398f636", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "54d1e895690f3139f5068cb8e5912eb47063be9f7b69c17bce39bec9bf451458", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d9f8b88587d1d0726568e860b6d52cb21e3def56b990a5413980c50b1ab5d6c1", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "9476c42bfe58b016ee703964165f0b05c5d58c52ec9f48cf1b9a5ed731e9adc1", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "3124987aa4012a14daf7f33e809daa34311e3b0e5b795d4d174a308a077b7d64", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "b3cd453f7fe6d01ffe55b383a08a80f53729da601318287cf3e903bc799666ce", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "e0ef545906f8f8bf48ddf8d6d6fa068490e52a638051ef1e59fae786bb8de80f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ee5cff27aba12583b6da615813bfb3323baffc0daa3fc3c6c0bfb86fea15f412", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "287ba699bf5a26e989915c5c02668aba28a43dd9bf7a4faddbd89407b24c30ab", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "2dca165c324ba6890a980b7448fd814aa8bc1a491a739943f6c11e0237be0952", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9a828a7c8a7cff8b523cdb0ee8e7683196fce85d29ecbba79790e7ea281af87b", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "eefeee9a792a4d78f14b5a64540a68fb3f68bfa4bf9c85a8d38c500af92a94b0", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "fb4eca10eef0888387dd42d4804dff9db31eddc06dabf1df2a68bc22068efbbe", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "c4b7487ac2f28fbdb9adaa09905fb63cc48985f63d30edf9a70167e7059abb1f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c4453bc1870c3785cbf7407bf2b7e04bf53e65c3b3b92363117bcdfab401f880", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "75dae5bb67fe717e5a86ce42ee2911e7edf04ceb43d1cae260f0c5eb9511dc2a", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "87c46626e50ca8da23c90d252d3d39da0b31233176df2436641e966b419b096b", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a5db3c8701e5f885be62591b5f20f47a8c9f7eb814e3538d860f740dd983ddea", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "fdc22050f01915f083251f92481e45b74276f714faf0501053abfdc75a5a4d7f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "aa7b9bc156dac87014da130693dc0ba4cb80d70c3c92fe4875927f87a2e515c8", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "6d990980f062eaec5609dc3120e3e18de535aaa9d60827ec241911f3e8e678bd", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "7df543360bc3bf7b3741774e79ea75c729c1082e4c2af542c71cf33ab58dbd58", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "7af0a4862074274197ea6f070dfe9812d4ae4cf6ba09156e0846c1ee1b2b5592", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "7af0a4862074274197ea6f070dfe9812d4ae4cf6ba09156e0846c1ee1b2b5592", +"T3T1_cs_test_basic.py::test_capabilities": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_basic.py::test_device_id_different": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", +"T3T1_cs_test_basic.py::test_device_id_same": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_basic.py::test_features": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_basic.py::test_ping": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_busy_state.py::test_busy_expiry": "5807370e36255f64722c9b70002daad3b718387eaa41102561ec6a0dcbeed20a", +"T3T1_cs_test_busy_state.py::test_busy_state": "fde1b3b0b48c5788cf506cc541096167e2b94699a5059281a9848a92e6435311", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", +"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "59a00b375bf2e60cc0e624626aaf4b651cc24200be29e41e912fbc9358f7168e", +"T3T1_cs_test_debuglink.py::test_softlock_instability": "c6d1589a2a6f53a752806e4aa4e2b03f68685ca7213c5dd4af5c82eafa6d014a", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "bf3b0b0bfc905aa8b9cb991baffb7c523f4f185f0a6531081c2e09fee5964108", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_language.py::test_error_invalid_data_hash": "a115b6f40562970530bd4fdeabab584b19bd08001a7d5c22f2627ad39d1c6ff3", +"T3T1_cs_test_language.py::test_error_invalid_data_length": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", +"T3T1_cs_test_language.py::test_error_invalid_header_magic": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", +"T3T1_cs_test_language.py::test_error_invalid_signature": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", +"T3T1_cs_test_language.py::test_error_too_long": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", +"T3T1_cs_test_language.py::test_error_version_mismatch": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", +"T3T1_cs_test_language.py::test_full_language_change[cs]": "9d3a56d7637e585431673f57662f51b0b5bd134d68ceed34ba2807175f9734a7", +"T3T1_cs_test_language.py::test_full_language_change[de]": "6d72b391d3e2ffefded5765bf580720b2ff6a178d4a26bfb1dca361680c84f22", +"T3T1_cs_test_language.py::test_full_language_change[en]": "f9cc189cb54aa4c338d45c46ef8bc115b873f9aae88f0a3265e09da556f95fef", +"T3T1_cs_test_language.py::test_full_language_change[es]": "643ecd8f4a8d0bf4aa797836c18f9df8b8606c17ddca595d140120e3019c2cb0", +"T3T1_cs_test_language.py::test_full_language_change[fr]": "f4b8b9660987d6dda059db920188291ce597b35954594988a44236377a9e5363", +"T3T1_cs_test_language.py::test_header_trailing_data": "b85421372491bb30c424ea034135083b7342efd0e977e4816e69443a005a7bd9", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "1216097a924958c54e389006ed8ae9025854fad69ef33421a494b48e52e593f7", +"T3T1_cs_test_language.py::test_reject_update": "f5f0f60c0eee142ca023fd2960bdd410e355833f69f61f44203bc20cb13922e4", +"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "e993ac49426d3a1d1126a5d4825fac1ec13ba41b31fe4a3570b7be3bd84a2625", +"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "e993ac49426d3a1d1126a5d4825fac1ec13ba41b31fe4a3570b7be3bd84a2625", +"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "aba658ad4e110f027ac423472eb7cab19103b73099def7f5eb1e1e82a98b1a41", +"T3T1_cs_test_language.py::test_switch_from_english[None]": "e5c90dd87e1a12c90399f728e6a039a35a393f0aef75bda77f777173cb22aa52", +"T3T1_cs_test_language.py::test_switch_from_english[True]": "e5c90dd87e1a12c90399f728e6a039a35a393f0aef75bda77f777173cb22aa52", +"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "a1e756fe6046d140a72d986708b472708ba7a0bc40ed94d7909231b434e1f2f2", +"T3T1_cs_test_language.py::test_switch_language": "2f92dcdc93302e3dabc2791bd62cbd161a90d5674d41aab1b4525161b076735a", +"T3T1_cs_test_language.py::test_translations_renders_on_screen": "45d3d73278de297d33a0be7e579bce5c7d1a5df32e8ed079518435be16b63585", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "e7c5ef8ca271696bd49916a8a1cacb56bded4eb603a32c1870e1b36844855567", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "99bf4be975da77baaa57cd4f8ee238b035b47fcfaefe7908b61dc0c847d0119e", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "361cd8061b73405ec6ccbdf220acc85d80a35097d32d60e167e84135cd7b3207", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "06b22572a797de355eb21edb05c582369e0f480e69450a3d7ce7c338fb07ac5f", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "16e8ed54462dcba9cf54a38efd80b9bb041359b1f129b3fd3e4961e1a267f67d", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "2896aef3f7eb018b61a10012f91c28ddc528d18125976ccac9d047157a0f4424", +"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "21c0b1b9aceda19eadf19480d896b9b60faf971da63d147c28a0fd58fb6ee114", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a0121bfb19291068d4b0095651f20e3ddb3b23322694e01fcc641438022201e2", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "cbef8287a241e4a730ea7d2907d3a08a1b91e39dee8852ec95745b018211cfe9", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4fae4bc57a53b57aa1c6628b625cec1d41adb07c0504a82f2afbc2f5d9d11384", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6e80595458ffb3c1a41ab5e2a2dc2f7c243708645b040b4759ff5e9569dbdbce", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c1f9b6f548a0c68f2f9c8be67b74811807bcca0ffe8f96ce35213d9ed57609db", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7671b4ce0a9f4fb5e30fa5d684dce5ac14aad3e532da71fbf260c2e7efb0662d", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b17826fcd4f1e4a0ced8345e1c8dd31804b3d949ffcbe53fec73b61a29710187", +"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "f80a7223bea74080baf1a1dcbd4ff56c52011048ea5478b721cc20214b42f77d", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9b5381b0ec144a10735c93fd8502301723c7725808ba667a22741b97da08d6ad", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c1febab3a5f19fb7f5d52a7f8aa0b61ec00bcbbd21e8fd4df641ef7f7e737826", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "3a6904b9e4799ed58d09dcd5763a18131daa3e309b9bb0cdb4eff8e928299597", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "7214bb36b746b698633588b026359254e26dba4a65eb40f212191794caddaa66", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "b4504fc19a4b071acd92e20883a4d604d175e607d504db1ea8bcab664d688f60", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "c670c492f6c89135ef05a59b7a9f3f944529c1f30590d3878b0f5cb5effb457d", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "f2491d60cf5a47e28070cdcf4f9d4426f30fe13a22ba741d509c9701476afc54", +"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "3ca71417890e4f6c8cc37459c270f3403fcd1b3d6e48bab2503b7add0f385a05", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "6592bbfc05e4b22b06ed861c1b0a1a866c5e88585f54d9c1c58ee050f5e23b17", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "4fc61f31c31870650cdc2b98770973915f4725afbb12b0dac65deec83dcd87c2", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "3ffde45b78d8e28e5795303c5db6799b2f872a06a97e4e996948a3838e189628", +"T3T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "fe9aedd5ced93330e544bd1c9c6cc6fcc7bcbf93e518e3240e4ef4f0cb21a085", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "dbd5f08579c8a9900a2a5b8c2d944866b027c34bcd3f9991087e85c816822b18", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "673f0cbd7ac66238b4e1f4c88f75f3ccf2b59309745695fc10472be4a1ae1442", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "ee8ae9f84e81803bc72bdfe5455a06d53972e668002fcf31ba4e9683f0847fb1", +"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", +"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", +"T3T1_cs_test_pin.py::test_correct_pin": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "a9ea4a6fb6f3b561c58e0e542f0db269c39d5aa5328b54dc1bf73df49dfd754b", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "8c6139b2ff22b9633c8b4bdaef696b20a278f0427ae5348d00e61578f014ff15", +"T3T1_cs_test_pin.py::test_no_protection": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "2c60d8858c5f8121174a91e9d1bf5e447a320e3641c67ad0756f7fc1e469f6a2", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "a68ce4679c1d56b2bd808793a05b6db87bcb5096de197f500c945ac17f6d8f49", +"T3T1_cs_test_protection_levels.py::test_get_address": "575f69e9babb2c56746448efb8892df80709a726a87d299ad81a579cda310294", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "500e723393cd596bbe6031fbc132567b14c1e14524a3972bfbe2ea875700f3ec", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "575f69e9babb2c56746448efb8892df80709a726a87d299ad81a579cda310294", +"T3T1_cs_test_protection_levels.py::test_initialize": "9dddba33194632c207ebbfa38ccb8ca2e781319f1d32a8ce317852ad6e45be31", +"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "25181df730f8d8c53ede87629fdb46e6dc335ea926c27171ce123ce7623d9607", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "011971910b847471958acc3f29029e65b66b3f03608a9f9fef3b22b2641c7076", +"T3T1_cs_test_protection_levels.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", +"T3T1_cs_test_protection_levels.py::test_sign_message": "c1c2fa31b3ca952aa13a7a90d27696e5bf8454e1f23bc2e3759db4b3892b876b", +"T3T1_cs_test_protection_levels.py::test_signtx": "4da8a6b06006f2455d0a15ef12d4f8f6e638922103bf7655a3677d5fc1667d1e", +"T3T1_cs_test_protection_levels.py::test_unlocked": "220677caa2b1e7749d2315a739bf35a0a3008a9a10bad6d94affbf08997fbe65", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "ad6d84129560c60b8d51acff8fdb121ef7c068129b51e4a6fcb46321dc4b2c93", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "f31631ecf44dc23450c87efde2a9ea96689c97dc7a176cacdfc8d2c9449f14d8", +"T3T1_cs_test_sdcard.py::test_sd_format": "7bacaee5de088a97de251e63242a12d976ac69dc3324d4651cf335ee6b9ffc39", +"T3T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "7c7d4078687e1a1db79fe179094b8e538e8b1d741f0425113875fd34314d4f81", +"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_session.py::test_clear_session": "701c7c2dcdd6b7f0591590a6504a6562579b4bddfb0c734b1b5ceb3083289002", +"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_session.py::test_derive_cardano_running_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_session.py::test_end_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_session.py::test_end_session_only_current": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_session.py::test_session_recycling": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", +"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "099800e8e1478d2a71f6daa0bd9a59904ed69610b4f99af4f82bc7735f863e40", +"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e3626c8545ffdf8d8060858fbe64f275e13b87a0a82bdcba53e1cd54574bddf7", +"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "cf2453bd1a01b8ff3747432bcc5eb9f348bbdf393cf6eeba8256839a6a88829a", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "a400d365c69461b637388c8e52d7b30e51688edb21430031fa51baffc7e1d43b", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "975aecca0a94fdd095b08a511d10e55a8db86bbe6a8a5af71bc5b8d8911764d5", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "444e03b100a04ce91433bd96e98c7cb54a1ca1486bb4705de0ee1bfe8947ca1c", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "53c872020e3845b5633f20c9fc246481f79f5a3249dc2c1c6a364d1c6995a5b0", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5552b3772db403c98a447e043761c2bcae066da0946f9db07a8dc817b36c635c", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "f6cd4f80455f5d7bfbcd7fe4cdc6ee9b413a5fb4f5308837f729755e71e04e80", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "f1fa8a3cf65da15b19d2fcd14a94f93c814232adb4cbfff07b83a519cc379f16", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9eb892d697c7f19124fa84be8a994d88cda8037e9fceb5662ef3b54371b4e375", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "82f1653e3bdab8487e4e24b034036a3fca7fe83a6181803039608003191566b6", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "1d2a971b075b5474dacbb08ee9d379e94fbeee5ae7d9a46d988de83d3fd9eb1e", +"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "85f31cdab9b7ac4bd63540d5428a43010c7c9f6284df6aa4ddab1a9ba7b506e5", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aab7139148c4db5da785c7bba462b99c1c62b39af841d0986f8fb839979d6212", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "6ccd4b32d1c29573faabe091b1de6a6743932f3aaa76af64df0c6b99b544106e", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "520b14f8797bf273d7dbf7918e62673d66c6477188f773c326b907ee2e015d3f", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "96835c93f021819733b1c5f18e8877014624492fe63fd1683dd0de827e4cc86c", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "4330f18abba49d143547e9b91b252b48eebdb08abfc1c48a39e5b9cba9ba1efc", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a55dd5a911ad37437e76ca92fbafbc14b6e7e75b5571cf225749ec8921f8576b", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fb7108722b7465127626fa8c2bdcedfbad3df8468a9e74d9d948f57d1b93981b", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "856857bf7d2c9aa47acf01c7497170ae1e223a4e1954c39acb5496f25aab4aec", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "8cb2c23c8f6d01584b367eea36665f76d141f9c5b5a1ec632fe1ef64c20fd16b", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "b0b2f8e0969dbe9710cbf3be0a018686d6e47ca1bd0d660805f9aa612504b884", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "75ccbfbb0637c430b1b5b34b6ab60cac8ee526936e2eb3c9d39a8de9f16f1ad7", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "038079b7a9e3b2d865d24596293730a87b2270053b0aec05d7344f6767a03030", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "83aa15b49f8db110b6e45b78fc0f8afc1026bce81dd9388c10748cd2b57034b3", +"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "49265b0b9bc77fddefbcb374cd836ab6dcbe779b3a0eacb8c3431e60e707f853", +"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "5523f9e16493f0218cfde853817263db17680e391fe872ea7e3b5ed0fa5fa2d5", +"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "dd75ce54d46dc216e7c0fa9306e1cf535689c590f058a5446648033b809b4e94", +"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "1cd9cb6ffec689578227d3cfc12e681c108a1fc3051a0417657d3f4a6dcef362", +"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", +"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "f706e70d9d73bf5ef052a1eb67f2ab830fe880c434b1a1edc6a5e213a06707b0", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "e6b2c6f2f2514659e6be7e2bc0abede895a25f3df76c58f99b26ec93a4dd5d55", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "35b01b8cccea5a0075979cde904151d42d5b6fac865e23a8e61c85939ad08b09", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "93df395998e0cbfd3be941810fc13104b394dbd49c347fd1eaeea0289798b8fb", +"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "3cdd2085f60e8cf3e00d52cfd4481458c4103e83c69937303e46a92ececa8b8d", +"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8b04b754bc8523673322215b6a00ca82070c1cb507f18b941439ddc1a71330b3", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "34c96a3ffabc72c04e7de5c3c41a5220fdcc260e8e428e402700d873fa5ff0d8", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "52be789ecba93fac2f8d9b0f348921b44fbfaf90055de4cd5f317e8b73e07952", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9961a32676e652987196a9dae48864274cc3de8c317291349de3417bbd4375ca", +"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "d06829f14d4ca09da6fe6bc84916eb48febb57841739c059fe02004e940b8bcc", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2038ca134d0d1d3a4862c98d20e831a3d21490e4aa23b57ab638d432d1e0a1a9", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "6cbadf110e0814e44715bc9f5eb976cd2607e429258ac46ab85daf3e740acc21", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "e54e9005fecc33eb40ea50874faab70ed5d02f302cab3f823aa7ecc9dafb7208", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2038ca134d0d1d3a4862c98d20e831a3d21490e4aa23b57ab638d432d1e0a1a9", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "6cbadf110e0814e44715bc9f5eb976cd2607e429258ac46ab85daf3e740acc21", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "e54e9005fecc33eb40ea50874faab70ed5d02f302cab3f823aa7ecc9dafb7208", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "af662f3ef98d9bfc8f1e03a6b4cef12f8c955cc16059c826808c71f8b1987389", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "2e37ed22095d7a073dbef900c55566874abb4c3509e2de6bebe06920fbe71b1c", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f9e30feb5237edd872806bc548d62acc529305893f5fb3407cb8605ffbfa1bb1", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "888478add81f5c2c760cfa0ac7f372c77e0c49195d2661d9baa1430c8a71e5d5", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4a69bdbb87c28dcc053eae2aaf0c315f5c0d72fa956f80d7d8453786355ecdea", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4a69bdbb87c28dcc053eae2aaf0c315f5c0d72fa956f80d7d8453786355ecdea", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "d35204d220e204e9da5aea5bf0462b4650422d777dedb55101b0b0ea49af27b9", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5c113bc9d874bc63e8c205dac3369b836d79ce197109c848534c0d22d0e54fd0", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "eaea5e14a629dc3221c85ed34d663c344b6663081cade07693e5e4cf159bdf44", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", +"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "0cb9a8eb21cba13ccd4bb9ac6e79c5286877f4596340de92cd92b9c65a7fab7a", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "0cb9a8eb21cba13ccd4bb9ac6e79c5286877f4596340de92cd92b9c65a7fab7a", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "736c8777a8d7a2f734a418989841f8cc1d1152ba8a7a917dc24072e039e9cdf8", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "f62a6c153d26b4c92b9f7ba658e3b2054e64da3c7f0181ef3bb3d7e82dd9807c", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "e7fc90a98f175f4f11be0b3f5342df6afba1957b9630417ed6b11c8359372406", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "3395f0a673070c452fa05f218851120dce9f34c3f51281caa41e79c3dcd612a9", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6188b171e6e1c48b2f5026bc5a54ad4116f4084a1302e6d152e15da3248dd183", +"T3T1_de_bitcoin-test_bgold.py::test_attack_change_input": "c64a42e1d6e1e85e4aba3b0775694c1c413d7c3dafd79c87652df7f15fbf135b", +"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "c64a42e1d6e1e85e4aba3b0775694c1c413d7c3dafd79c87652df7f15fbf135b", +"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "ffcb5b2907bea0b532e9d5815f7c8c360643234ee480582c2a3592c443865771", +"T3T1_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "af67e3d34b208f1d10f071ebe0217e49e1181d7f53b6131afee88dcdc20ecd97", +"T3T1_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "3132c940da577e769f25605ba2ccbc13b6d8e630a6a9c74e81974bd45c61866f", +"T3T1_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "0f7847013b17bba1c3134b835e3d3ad16135661e6cde237e86d4122f04be3046", +"T3T1_de_bitcoin-test_bgold.py::test_send_multisig_1": "92426e0a6d6201bb143f508cce8e2c0e749842cfeb331f21f69efe44cc3568b3", +"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh": "70790e7bf49fd2e083b6a4faf7f43a44b79328a737e0868a3b072e0595b74992", +"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "652785c3c553a649d731eb7c3ac4a522016077965fbeaa3b6874e11744af2903", +"T3T1_de_bitcoin-test_dash.py::test_send_dash": "acd622ec1ecef460f90c20f2277d257a8c1fef9a2acb1f953cc92ce4861bb994", +"T3T1_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "68267fe587b9a936675ed4e1f8782d21eb469f8af3fddf712b830a85f467374b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "7366009d85f5ecfd28c61df159c22245f64754dc11da6537a1192e6ceb25f904", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ddfacbd211322ae5d5dccacc9904f171f868288bd320867d981544593a3521d4", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "008fabe25fc5254f2d7aaade169d9f994da7e0e47a0159b1d444b2aea33d8706", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "68605cd1afedf8b069b17729804c35353e4be394f4816e2d1884ee8202da11f0", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "51fbc1d6d7bc69fccf240f07167831af5c8bc6818b253b468be65023e97703c8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "07d989b8a4ba0af18f49b57364053174371b94a47503b8be0ddbef797f073ec0", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "562a13f0da715c2b671054b19b1b4c1886dcd8cdf3c05a893c3e5067615a9c2b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "b8d1f67ffa8727d12975d8906bcbacba67f5b1201ea9e7afd2abf901901a4571", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b0d8ea3c785e4741968b7843dc84ba632474c8c0b8d72a10d319e336904266cf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "62ff4cbf784c6a6c6f494f8e8d0e19e2a2bfb5a2842852fc92c7f8381d1eb99f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9fa071adfcaae9d1e436e3c18b9fcd1d4b9363089938bc0bc68a57f2cafb47f0", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "abf4b0d84db1323786f4e7c703140336ded8a409905d8fb1275ebd3f385f86fe", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "04b61e0fa43ee0a9b4e7a6c845d096c0f1df1dca6c78b6b97a262c7d7a710ad1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "72a6eab0613382aacc331682d365480f6f5b54ad8db1152b862e1785141287cb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "7366009d85f5ecfd28c61df159c22245f64754dc11da6537a1192e6ceb25f904", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ddfacbd211322ae5d5dccacc9904f171f868288bd320867d981544593a3521d4", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "008fabe25fc5254f2d7aaade169d9f994da7e0e47a0159b1d444b2aea33d8706", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "68605cd1afedf8b069b17729804c35353e4be394f4816e2d1884ee8202da11f0", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "51fbc1d6d7bc69fccf240f07167831af5c8bc6818b253b468be65023e97703c8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "07d989b8a4ba0af18f49b57364053174371b94a47503b8be0ddbef797f073ec0", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "562a13f0da715c2b671054b19b1b4c1886dcd8cdf3c05a893c3e5067615a9c2b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "b8d1f67ffa8727d12975d8906bcbacba67f5b1201ea9e7afd2abf901901a4571", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b0d8ea3c785e4741968b7843dc84ba632474c8c0b8d72a10d319e336904266cf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "62ff4cbf784c6a6c6f494f8e8d0e19e2a2bfb5a2842852fc92c7f8381d1eb99f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9fa071adfcaae9d1e436e3c18b9fcd1d4b9363089938bc0bc68a57f2cafb47f0", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "abf4b0d84db1323786f4e7c703140336ded8a409905d8fb1275ebd3f385f86fe", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "04b61e0fa43ee0a9b4e7a6c845d096c0f1df1dca6c78b6b97a262c7d7a710ad1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "72a6eab0613382aacc331682d365480f6f5b54ad8db1152b862e1785141287cb", +"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "4e9a98c440691d61bb58c74fd82ead2b5ff242ec1e5cdbf0ac19888bcc598db7", +"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "d4c9d7293bd0260f7b07a538ba1c8821ea11a3e60eaf93a68ae0b8cc00482c54", +"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_bch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "e0593e7a1ea8a0d686885ba322be2c098b17c39e9424aa063fbd8c08e8056071", +"T3T1_de_bitcoin-test_getaddress.py::test_btc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_crw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_elements": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_grs": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "aac935534336deec7ddab39b51b136d801b9b77fde4f619a2012c1a4e324af0a", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "c2b5fec8e2c1e711bce197d59f4058981705fbd1e8913e48a7d855bb8c539e31", +"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "14091ff90896bd8483238cb6f6e1d3aa6a1f015b8888381a2657e27f4e7049ac", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "c84fda80791746224b6cbecd63cd18eba5480750610175f9a9597f1f830e5540", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "8b8b9e3fed883120a8b686679d9b5402a7459404191d7c95f3a69e7e35cde2fb", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "8abd89496db5fae59e133817ea0d488862dab3fea9ba453d7ebb07cc9864dc66", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a0e4f24027f7e1d15d679d5d05f81ee1568cf524676edb47a3419b9adaf840ee", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "e5e81767de7effc008ba7d74f788326ad494a6cd1072c9c23788baa8361b5f73", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "340bc2192e4aae8a476fd760127ce8d5c80973dc19cf8262c0d4c0e597beb81b", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "f695f9fade73878ea864183677b6341942fadff990b38b3e1217cf7a55b46384", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "472ef18cf27f30a51010c87e199ce965abf0542a423f98dcf976948e9b7c81e5", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "ec039075feaa61d2b0293fec85126cac4126aadcb3b828283ea17762155274d3", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "f44b84e6c8292bd5152f4dd1114234e7f36085c773b2fcf684f13473194c473d", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "ee925023c7a95c436d1b38cf63724118e11fad07db9173ef46da81aa03b86f20", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "2caf35460f69405fae2fe6d2a3327d9ba54ff2004b4cd5ca17f0682703bc243a", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "c524a4d61c056626d605535fd013aa087164c726d48abe4c31837865c61a42d6", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "2da6f568cd034e06928f489a7ffb0cab82065778f7f198277e89269a2bac0a05", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "13b846506001ef73ed73c326ca203139d295ec184df32b8b184f4fd4ed657c3b", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "02ee14750dd5a5a5c6ab3e13a638425714f4756d7daf4a7ef048e3da25d18226", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "987b7008a0c4b8ed372860d97620bbdb9635d80ef450e502bbc9c6048dd065bd", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b84360fe850d19d2b60c19c100881084bc84ebef0673c38125f181e12408afa9", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "ec3ee01ca3724842ca2ff8e399da5a8b44cf68aaf7b36539c9e69bcbed939e3e", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "633f1a60133746da1cba24b27b18b450e540a5b0f3b2da7a95b381b44ef3b24e", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8bdbd981511237692aa00c2162220112793c502fb238b08daac254a53fdba012", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "763d31318699a630329640bfac7df8e4603623a6407457fc1048a68352216f2f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "af0b52a7889eef10f27ccb3408d6e27cc205aeff9c62161de3e3a8405bf5bd9f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d4cb7495518b944ffee63a6187c24cbfd672c7776ee4eccdb59581f1de07f3b3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d4cb7495518b944ffee63a6187c24cbfd672c7776ee4eccdb59581f1de07f3b3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "9636753c059452757b05f250d035077eece61f76b795d0a10569825ea4cad3e3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "6d5df034a76818b15d5f0b435d0a0bd5c86d20cd34810e74c3ccea1ee6644960", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "965a86ce1743ddc0f8c658a6c2858533a0201cd139dfc0c8418f43f2ee53fabd", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "bb6bf9a5cdd3920e729969922215932d1a3f51dc1cf0d17bc316521dec29644c", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "2ce0d28e7dc583a79167c58c11263fffabccceb142746b5d668fbf6a09978593", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "fca0b612ecb830b6ef4695fe622fa179e1c462a10d6bada5bab7fb418fb6bb2c", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "589dfae06091b0abd9c87f5b847410bdc7e6b90e90567a5b4672ad1d4a6c46e6", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "f3b00148333ef8b73b6e5d56cb282d97f55fdf57a30031b13d3ce6f5351b19b2", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "59e25634186b037b10f20ecbb8b7b4bf9c9bc869b6366638461d3fe68f4f8869", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "b0f2ec78155905e236dcdca83474a4928b9ea824038935493be961824474aa8d", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9a0fe11056917abd28282728fb62f540c32034e0153e438e1a193c1046c7ffed", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "c4e3d31df48e2eaed9e25312ba67a46a51ff29ee01c70a126f54701db20ffb28", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "1dd8ea02615423031f594b8222c817fff4f17f1ec3ca5424d06bee3393c8d583", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "0f849bdcf48d54b08085e26252374741ee3cb858f8dfcf5f668f8fdc392a85e3", +"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "1abff7365d35469656ee0119fe4f04a5fa4464212956b1a761b38125f62df274", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "df4d41c5fcc423e5cd7b8408dd8c3d7d9d2a24b3686e95395ef99cb1448590f8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "4708784b8c2eefb0fb71c9658e42d1fb02b27cc3f7b9fb7c4887b3073ab34420", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "d235e7dc92b77ef78e4c9a7d5d535d21b5078b5652aa2aa9eeee750077e6b53e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "af8f2a77392a53b15c97239971a917c6c91ada113e1504c3b281176768cea163", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "627ad6098c7207d2bb4cf56c0ece4dff023ac33982731c025d50e80356aa7531", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "9d8d763a945296be27375f9401de9488e093133e38f056dd52e7df597edd1560", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "87cdb129b1a9338342233d9f8c84e44b45b5c40bebcad2b008b561aa77fe1c14", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "27c172aec816ef8b1df13a11fd7aae2a1fa4b322f42b1f2bb7f812c2f371919c", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_grs.py::test_legacy": "187bd7334b86373d973fe9e0d31b9de0070029e9372305794e056b5d2bc5a6b5", +"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "916f924a69f53952af0fb7a60f168a4317e9870236b1a26ff8e1536ada375cb1", +"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "56758dd1af6261ba87abe90b284d63b4391c64a5a3922b8a932e1c09153b1971", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "ae403b23b1b5fdef19f62f1a804b5d357aab803850f4202a760785d9bd8177ae", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "9b73e9ca561f05dde8306e1b01691fcf5a13cead5207e63f3e2d8c4dece2caca", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "69521f5c988c1abe037570c29bcb023be96c2031374a2e122a0a540b72b79381", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "dfbb37289d40db5f250f4635b1dfd0f3f628653e0ddf1921c759a3b72f20d82a", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c7cd1275972d0f6173b4f427e18e5610711bfa3e48b50e31bd72c40de45a5423", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "9e8f6c0f9c89cb4f109d4d3793510f9d22ad751bf386ddf358835f0c654847c9", +"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "4a147bd2da7e362aae0d75792090c53dbac97a27164ed09b452983b9c10dea7b", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "037fd02ea2b816d865cdd75d539c653db32a3d83f2803f6d923f1e77ca561567", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "62490b47d5283109ef480fc7d4487dc81b9556184437307f80b041c1bad4c4fe", +"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "b48c191999eff33118610114cecb9cbdc25bb5ea9e91ada1918091bdabd3afe2", +"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "4c3e91f77f296002ca3628dd682807abb999dc7d5663aa38c2ee3d7412780055", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "cf2d2842907cc129c88868199132c21709a48a6e1d0a50da832f5ff86f13d7c6", +"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "1403bf66b99263c8652e644a0512f40bef7650f4c55a65569c35a033109fee06", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f8c458d7fd86758f76584182ee53487df0406c9ca14079bcd410031a5e0fd3bf", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7befa9d38a136cfb3b785168c2fdd44d33e16784209c2cd4559aed71b0e3f819", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "945171f958a106db3ac9b03ad615bc472b958ed92daef854bd9dabeafbfc0915", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8b46919107f053cc17a7c2f5423fcb6b2f27c05bc78a1fdb21d82d08dfc25a96", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "32388ee283f47424a229be105e1487ca896eaa18a4898c3527e826787d1ec505", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "23dcbc93a12e77192533492fde55fa10b363f4e5dc73c864b0b8c88631f4a83e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "63a169ca1c10921fb343921d0dc1202978d5c3967ef9906f5fa401bca55aec3f", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ae6db1972c9b584dc8c3c26850f56734ac8ae5caf174cad72fb045ba203c81ca", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "068a2f380dd5eb7f32afcbe81f02a53985892ddc836da955a6de924be40174cc", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e947c1625e12ea096f9ea12d16f78e3e76570a36f82b146b0cd25bb3569dbd8d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "328942b6556625ebca4c34a332a2db99f8b30963e97f7024b76cd8f1b6f58763", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "4df502ce4fba039c4658eec3426117a3ed2546e31aaaaf8a7f264e550f056c88", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "36564935b613578102f44a48d19266c0963a83c8065ac0d34a4a82eee0286425", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "7e09a8e2d6e7bcc8d3b7644b6fb61a5b65dc8927b4b676653371f2caf38124cd", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "4dbc62104c35296dcca12ef3f982d691562218ca3509e566ebb6467817559544", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "26f3c3c2d393c526db4cbe08860ed13e5784d36f544a6dfa3fccd9bc7d0052fd", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "d5a0d63eb9d1798d999041ad0ee093ef5e93cda171c78f748970ef4f055ed9b2", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "bd994a9f6d0cf34a2e846b589003d89dd261612b302e4316cd19bdbf1ad17af9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e681f042accf474268f0fe105fc36048fb823c75e493c3a317689c9132a88de6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "0dd8fc39efc277949322af8af3324c83f83e5bfc6b839dad8f05ad436655c903", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "1251ada2d7eb93a74d291f5c5d498f85c09430dc62bdbb3436ee5c54bc195e34", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "9d44ec256b5b03894c81b9e90ffbedc61ec1453494b9c52e8ee81a81c2540c22", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "c3babc6f855bc513d2520e11af0226351b08def8f0202fc8408db5174930a3c4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "a33724c84249482b03f7cab0f058cef340bb2d63d75339480541ffea4e75a018", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "3ccee86364a2c2357da0c65221a2b6efec0b1fb49e6600c481822ced1806f5e0", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "5ab91825c7b3aaf488a9707bf0f5b616a54332cd9b2aecad4e2f9e89df765c74", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b830da59e059112fd60b0eab834153ce81410a0be5e234d45c84b03814bb3151", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "45abccd33a0bb02216458f21d7a03500ed6db0b80dfd45610c4ab91c102bed4d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a0abf6ae6c7c863b32908097b64314afff6fdd3863017597ad542ffdd15b93a4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9ba6628c8fcb8cb4aa663db515c1cfeed0d2ffba45b027e5546aa98c1c600dbc", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "53aab978ab389d46c2e1a0a252d5962cfa74fb8c0661bc4435456602a80b2141", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "ac2a35429116829bc9b64d36e2b9a118a0c4583130c6a8da5d7c5abb2e8e9589", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "340b3ad14cb53e23d93fc00d32e56baaced8572d0f5ee2d2f1c0fc30609cb97d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "2f085f081d58d0776824481d221c5204090a60526f7b7c8c2c7304f6d7336510", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f1cff0b889af8871a1b578e0f1a58d5a2aba4205e03fa6f22168de7661a09842", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "853b983ec8bc1cd2f1fc21375a3b70ef6dc214877a665f9b1c017f88e099df74", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "33b1c6f8246f3a2d755015e950e3e3923a8d7565e100713b45d5f2db401d78bc", +"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "bbcdedba7de9698e5f39ce27eefbe2f04573415d4c83c6c11869866b679a83ad", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "cb14903c47f019cb4226a57a54460830afbd9539402a25e07764d52bfe95248e", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "bbbf53b27b55c2e3621226c754a26e0b6d26e28ad4dee522e5bdf00124c86708", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "208dd4db2f811fcc7bf39284784e6635fd06373281cbb38a02ef5d0e4372b0d9", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "22124d4223cc9b020a8b7416b113935a459af564e90fd540fe42bf29118e70c2", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[decred]": "8952995825f122f9d1245d2b82359a809181c8fbb4626de9fe9f54a0d6a095d1", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "0f6be42afd5263571cac87e9c4f0153a7a2d3331a419e148ec0b142ddcffd468", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "f1706849538ac0b3d530c637a0f375ac8e911151410d1c5fc660cf9e6c970334", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "17a2cbc0d38e313552d9d29da3898f64a3f7402415e0e57fa317949499ca8348", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "6dd8584d79193e50f749b8c85632f41543dba1b8b8220f401ddbf85b6c7f375f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "bf36c579a611bea1e545565889a6da75c3cc71315c7def62c5dae383b5101a20", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "bf36c579a611bea1e545565889a6da75c3cc71315c7def62c5dae383b5101a20", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d7a82569510301102d8d3fbd1fe1c817a7ec12f43c4d3257378099947fd52c5d", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "270d9d3829ddd08cf8e6b9f953caa78f77846153b4c418b15f546ad19ed67799", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "fcddcabc913a285c4d63645ab960ca057b8a391dd18591b72f28f7209eaf4999", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "fcddcabc913a285c4d63645ab960ca057b8a391dd18591b72f28f7209eaf4999", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "2cbbc22d789a4b9134dcbf9ff3f47edfb64d532902364ad125690f747c9b8080", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "e8dc9dab3ce353e51ea052652de68d484bea7bc0daad251c9a4aa578310c8cf8", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "a03cae7357e1b0a0d39033da41e19cece337a363850bddde8fcd331328743b8d", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a03cae7357e1b0a0d39033da41e19cece337a363850bddde8fcd331328743b8d", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "181f3023985a725708ed0fe6628ce8ccd60bebcc9d029271cc70fe1057ab6125", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "2253b641037aa13c9f147d47ca7f4c245766034b7998947195071e159f775341", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "1f1e553cfae6c8c4aa1d991ec5e6aa72c2ec526b50d8672cec106861d4944067", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "aad36aa5771b97315adc9fd78ea87e0217b7b390747cf72918ef07d20b3fe14f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "cbfa937d264107c606088d07d9384d0f91a76628b66d8beb617d1859de19ad8a", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "13ed7efd7f1dee255bb3f3162eaa0f1145623783797d4fe67dbbc63185f6e86f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "4f6008a3c77222f52a9ea5a32e6c21c349921e7d69ccdea30df7f2d58841e8a7", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "55756d77cf568f1ac44ad0d9cdd164eb942d66971aec9190b8f274bca1bbdab5", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "e0638a1a32c21bd1872668efcde02ed80dba7b59d2001735a9618728c7a6c200", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "d50ac988d12d9cb0f79257e82edcd24aff0576cc8dbc8477984474e06c38d1f3", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "d50ac988d12d9cb0f79257e82edcd24aff0576cc8dbc8477984474e06c38d1f3", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "fd47bd412c506e43a2cf98cd8fb1cad11fc7d1b63a60c5efffc743ed27cf08b9", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "dce797e96ed1ea0f651f844f3eb24d6400081803b181dd33c054008ce4818124", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8a56d13a5b212d143e1b3cf63d31e65c037928fb0ab9108d78eb8cb2d77b7c1f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8a56d13a5b212d143e1b3cf63d31e65c037928fb0ab9108d78eb8cb2d77b7c1f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "4d9cbef0ee856f69ac7e2e5e7e1c25f3654c5543e7d5fe0333f9ee3bd52fe306", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6ebec834552a33c1a2297758c8b7bdd379b60a31efd04ac292ae7bf0b20f5ba6", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "0823269ea769a47c07767c9d031d5e870e5424008b172d776e41a1e2ccd30f7b", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "0823269ea769a47c07767c9d031d5e870e5424008b172d776e41a1e2ccd30f7b", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "53b4cb592c1c86668f285717aadb43f863c4a52dd7789cad626ef09cb7fbd83c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "f0307018a24f41c08ae3e64a7b2f2602f3d0f5d05331addd64e7dcd4e770a073", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "d142609c3463d4dcfd2c7ffafea119c516c38062ebc699e9417b3b1a7cef1ee1", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "e1fa915e9fb1234d69ac60dc4aefc416994d28976fb1d02b09b0106c33a29e95", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "078faa7dde06aa37536ce19baf278d1582f9450c3b03f2d5ea9710d8cfabf5f0", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "41bee50e29c207d9cca04d48740d0a1117c1499e9bc3b4fac9926595f54cba92", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ec6a7f0b0cff32156f9d16cc8f879d92b5632a86c979f5d3c85e516d6b685b1f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "8f6e51370111bdfa1915088400f900030e0349427c0a5cef0f530d1b5c9fe23c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ac28bd7184f7a2fe5a87afcae4aac70273ade8be077069c40c79521110848bab", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "ace4e89ae1c8d469bd284d0844c0f413753535190f059289fa5d502d8bcbb397", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "2564a17d6948a8d654af5f88b0eb626c84b240d612d91ecea3d819b5712c32e9", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "c9db0e68ac78feaa55594ef18374beadf7c906ee9c01152ebabb6d65f8906be8", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "2db20091875cd7019669d7085c30a94fb8604524222790109657a9400530e01c", +"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", +"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "fa4d96feca2a2e1767b0cb7032dc63afd16c6af257e8c094c8a204450e4de6be", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "a30a89598202fd3c38e3f80046d627976c50d92b51ee1922825d9bf20e301927", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx.py::test_information": "02fb59b788b4f0d10f3a59e28e04ee60a3627608b52621ffe3b1e6b8c22fef3a", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "e68c38bb87495ea419e510876a78e374d4097f8e8739df2350acb7d4d4bfdab7", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "70ae35c7daa3a3700a3d82504b335af40f6e9885a7f8fa0b41afb7556012e07e", +"T3T1_de_bitcoin-test_signtx.py::test_information_replacement": "1f86e0267e7a6a0b89cf3de3c4736315849f111d8a789dc9f5041861ff3c2d11", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "8f8f1bfa9f931f54c63f024c2c1e27955ebc298a6a27ff16c11bc8503cfd185e", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "da5ebe4d58ffbe3551ef822f4f76446e9ee64f0b315ae20b3c6266d5232ccddc", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "1cfd8a7d30fc68e006af5516123228739e8fb89628bb55e62a160551819ff9e8", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "da5ebe4d58ffbe3551ef822f4f76446e9ee64f0b315ae20b3c6266d5232ccddc", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "1cfd8a7d30fc68e006af5516123228739e8fb89628bb55e62a160551819ff9e8", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5dbc15008641b71a624828adf0adda352b91c82cc7900b2d6c5cc65446843b79", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "09354c507051ba6d4914cba6c207658a5ce059028434ca99fc32a3f45b8a47e8", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "d91a933880fba80c47a1312b8316eda7964313cecc32f4e0b5e8823f00f661df", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "720cd7592c9cf30d8248e01f42039d718a812b6404fd92f97d17f312e6e9e955", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "94dcd49b4703d8dbdbcb460dbd599a4a058952ea228746b75ffadb7c579a4fb7", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "17e60684cd5bd0ff681363a2a042254a19077e9108af6f71766ac721b6ce6c35", +"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "0d5bb1503e5b6eb112295531a529266af5114b56cfe005a6b1a495b24ebf8f40", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "c1f335a1ac1b7c430a75d6e9e42235bd8a32d164db483df03a4700cb5648d180", +"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "964c1f8cdebe3312a6439d381eac2abe15187b31e6e19458d367550abb84f5a7", +"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "a248d971eef2b5b71f215c3471feab815acfa1cb8e758dd93a1db8a75948835f", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "687402dcc2c1419c98832355f99534a2a5e2b2e09a55106416c44a9c79cb4fb4", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "ec54abe8318e7e428245d1cb13d25a3650ff980c5ce889cd89f3778a4e998537", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "045306d4977b0abf6bdba0ab49a4cb1e2f68ec2cfd49f14174d060b4e49087b9", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", +"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "2b48938f8632092cc010be0d16120e1d960f177bb91904c8bafb72d4c50dba0f", +"T3T1_de_bitcoin-test_signtx.py::test_two_two": "8d0ee4d8fd9a4bc8ef4a3df82e55a7d8e7a66cd21b8be5992ab782273e9ceca0", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "90c89493efcd2a8475ba9bbebaa20e1b9a264f327551a364886181dd68b73a94", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "7c09f6ff42ca91b0ac86966286ac1994db2728789b105c0da68f852635175316", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "3d6efad9d5b0ab0149fb36347eef9a07e318bc4bcee52d8a3d34df2f697442fa", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a328fefef92993769684daad941ac56ce429dc81e27e1245026e1e356bad1a55", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "96cbc5f4dce03bc4920a3c5e87b39fe4b6b5e2f801980fbf9d090a97b6b5fe1b", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5c4cb0545101aaa654345fe0ac3199b13c00196727090a579c794ee9f97056c1", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d3d03455835e32609989606d975ad3b0e3c81fa1fd650c89617409c225efb048", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0d0412eb55a955fd79e70371b7186557299f6e423f2376e9ff183a2b67652137", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1d7d27629d2fa30de94406cb8e559721fbf4772c554bfba14e16c18699de15d6", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "6e735feb08a2376bfb317a05c94634929bc96cae94beff6714a084171185fa67", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0ed7a91f8babd223331db3df89797aa2288b0f0c893d562744cd8d3708dad3bd", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b09276c2b27f43268c07a4d16b8c0385d87fdd6675430994f93f4ca317454891", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "0c749f1be0f0ce51997fc63c888abeb636d6d56f2245fb9d92fe9a22c7825f57", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "06981d77f508d156ca6c2595e13bce12429187b9111cdd12a69a9f37c68c7a01", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "aa0cb6c7f95d4c6266ba32b988af040f0ce3c29e7bf5a0a3ef4a8eca1e5c4498", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "5091de55d717306fa73100a7908b2b4442039fc8ac7fb16722def353e207cbff", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7e6a798324c8019019fde5f9ff8fd27a080c88b868e63b5cfed7b2b310d292f9", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "67ad861481273be81ca47a7fdadb7e4d1cbbf493689595df335492896dc0d3d5", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "1c4aeea9bf65e7aa89698c76883d20ad9ce435f8c7fc2d68b0a174d36333d719", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "a74fa38811067363c564d93f21b4f163d034ffd7eb44b759a96e4451cc122da5", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "1c4aeea9bf65e7aa89698c76883d20ad9ce435f8c7fc2d68b0a174d36333d719", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "a74fa38811067363c564d93f21b4f163d034ffd7eb44b759a96e4451cc122da5", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "d7751d51d6e465d2da904e6f78435a1522f4b9f9f921d810263de6ee61c02f81", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "7f626cc02c2d38fd6ea8e0d0aa69531d4984de9e64e6ee483bdbf14c385107b0", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "248b589932345b1ee5d9cefb04d22fa861527c33dc2da62af425c196648875fa", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c28daa5bdad2d32bcdcd6869a13f39e16d982adc62c83bda47a524cfddb5739f", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "b4e965dcd8c04fe585458d15482dc9496077325127ccb1e97d83fea54729af29", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "f50fa3c406db98243fcee047eb20ace974646b07b3963e9c800d9577f485a3a4", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "7937baea70c65efd9415c0c4dabc6a26c0d9b4ae005528f471f71c905f36faf0", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "647b18880af45c4f928db7b5264428bc42d913af403092ecf5833cf18ac6277c", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "0a8ff30c8868b304b43d90a880ce2736686db45cee73f9b36b4e86b3fb2c45bd", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8de40c79c6ffd1781eda446f4cdc9caaca36d7dc3c020e647bd6f5cec1cbfe73", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "22311090d34bae5e0680a4ae04fde15e6873e20d40079139aef91e697a2340b9", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "fc069bf99b14db6bcc82b164577290ee1306d10b7cd317d625cf9aa2fc056e51", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "4a9b651e4f0c57d76997bfd3f1ee18b3566761e1eafd7a06865738545dfbae3e", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "4a9b651e4f0c57d76997bfd3f1ee18b3566761e1eafd7a06865738545dfbae3e", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a699526b33cda0098a0466d594a35bd52d9bc81899857ac6783d979341cbdeb5", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "067ad9bdf5b0f33792df22166b5ead0f1864cef44158f8e6da3f7627ef9145d5", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "9420a4d36d46f161a2c19310f44c76dbfe52271f27075f4f296ee7bc0bb4ea27", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a699526b33cda0098a0466d594a35bd52d9bc81899857ac6783d979341cbdeb5", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "b42047e39a2614209c61b2de549f691fca3382cc198a80448bfcd22c8b70f783", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "f9ee8c7e6e7d33133c817a30778ccea62d666a55a0d6aa0dbf98ca9bc5e8a1b9", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "f4ddea4a4ef75780afb1a98c6b5f226fce6155b9d1c58da1d7cb002a921d0339", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7044dddea721445ecf665b07f0231962a66500edfd81b9bfbe118c89dd91144d", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e2afd3c79e690905b3123425308fe66355cfc52f73d7785089796e4335509f66", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "af67422f3c12ad9b4634bda3653a76df6779e8d62147a73d278d561359ecb6cd", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "9b401c59fde93d5d1355566cc952a4644f6e44e1cb2abc90a759d9a739042c44", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f89a2e03000625bba736dbbc9f9fbf0de9c20af5cff1402f542d970264ed9ecb", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e0b624b2f579d2471813f3c8ed90939f2e998b7ea47c88fb625693b7b738d2a5", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d8c176e4795e77106c9fc1c61a65513accdf4f6457db254b228352f9db8e0fc5", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "2b221a469051f15a73716d1ced545e38b32b28145a2e132ddd6111d202258b2d", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "eebb11be899c8b1323e438e9694c8b14d1a7ca4b99ce0646f0e5742dd2e48c6e", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0cff975c185bdf9a046465bb46dab8b7522793d5148414c1cb3e2f55daec9b33", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0baab56d6323521dfbab947e207d36bfc8e2f70b90d12e5f4315ecc326ebd29a", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "3663ff8cf8840be02418246fb3ac0d18744c7efdff87ac6cf0c158405dc7fea7", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "70081ab169d6774e771fd08675240d50402de8a5bcc1fab034b85cf00b746e9d", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "579110b91367cfbb883dfdbde327f3530b93542ad4d254101d536881a35d368c", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "71514b8c7b4623419a396826214badb01a1f228aafabe869deb647b2fe0d7fd2", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "137fa4b0e0ca281bd55c3312889a61a96cf99d81702c32c67dd32dcdb3e7cb5c", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1f251f18e6e200d9b2968a12ba23a50cac93f3b453d19bde2dc00d8cee9e8fbe", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "47afe6774c095d566f11c35881d33fcd624e37a2eff260a3a11945f39b1ffcce", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "bce2774a94da770f4dcf00c9ab43d0769cddddd62fdd2f4abe9cd1fad5a90864", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "006b9dee52aacf96373f71569d6b69a8971d8496bb8462cf61c338ef4ce6a05c", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "6830091ad24777a2d6c31cb31bab17edad2927896a3ef18971d5d0f053933ef9", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "814c78e82321f6c911f3334aaae6e071c551dfa1e287377f55fd5fad8d9fc33e", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "794e2a8aee88ec640dc423ed1b7cf1b18041152a22271c59763a46aa16ee3220", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "da7dc947d07c9bcf8201efb4dec7930b747ff6ce93031e4bdc348f8eb8200f59", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "284c3aacbe52c95befc6064748c9bcbd731a1e59e478afd33504ed4f322dc691", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "553f9c06e41e4223ad2e90c8690823aaf779f78d1dab8d975c032db80672a9fc", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "4a2d30ae9562855dc69cbde2dba4935416bf135bbe4eb62e0a0fc407132ef4a9", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "365bfe0cf8afc3b4085ea9c5438b7bd204f1b7af501dfd6d2b16b5c520ebf8d9", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "40eb8c66e1b71287d9e76a74a030e8345f2ba4dc13351a60382e99c7a8434c90", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "de91f4b6f27e1486859a179290a57b7687a67f99aebaf1ed22aeac96e4c4fb52", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "c57ea82f27ae92dc8dc51281759b8ddb9ecebead39f1b6293201c680c5fd147d", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "7793afafca42a92e6bcb5f17b77bb19a85a77810b86b31bd3f3bb41e57b10d41", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "616ec38b47aa3b8b454636466238b3b33dae977208cae9db7b6ac1479eb0cff1", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f886d55843c45fd5773e050b1f2234438f780db396c9e8259b4291b66b019a5a", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d4e2bacfda8855d67aa7334bbe59d7ba5174731bb765397f8eb01b4189208e6d", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "1e3597dbd248adfbbec4cba3ad1abf05953e175b254e555b8695ccd48dffab8f", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d819b0af50daef38f14f8a60f762340b5f06befe6835d652fe7241ac0a44fee0", +"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "47d5ec5a4cf12907681a5146b1390c88ec41c6f37eaa76fc663018ee5357df66", +"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c6924460d75b6146354d13bf69a6f7513b85b36e6317d94aab2d38a4225f2ac5", +"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "3206716a48a02a13132918c3fb229b8aa856b0eeb8e8cea2ffc91bca2b100321", +"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "f74f552c0d8dc532164d53e5f46b9bf433dc20295b01e0e51dfeef0c4b64e4bf", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "27c82480a7e7433ab0c62a5bf389d9f1ddd2fc6732eac4023bdb70eac1aaa149", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "487b92075c46706e819c43099a71cfbab5fc5ceb2396d9dad66f52ad3daaa3b7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "04f740825de357a4f97050ab9ef44c81229dd6c1fb027d7fdb67e306dd7e1db3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3212ff4b5c3de59947b15385bc032d6c1a1e1bb9cc8bb6117e996eed6cead3db", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c9f62229355bf94cb3999f4fa4342fa4b678fe43e997bcc09fd948e356ad0bba", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5664471b029573c7fd130c240322e56975f2905623cd113e36f8292847d6ad44", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2aa3cbe25f1aa4076deb4f07483cb1f85e67222e5002592e4b21f40155ede0e3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "724c1badf06df05a8451194b4d7978048601061bf2bf831962e533e3dce77699", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "43a2897a5b1a31ff920860a17ddba6ddfd6f7d23f3462473f791287808e0baac", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "3c4e179edb066fb98f63d19508c08dd06ab945919a8a910afb0f89cdbe8bd71d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c6258d72aa0be675c10184fd639cc21bae8dcff75c402e62743fc8c69e676e6f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "74fde7dc8850138490b53887bbde7736d59ba373d379f32378f16c0d7c9e4bff", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "05417961b37fca7dbc5b005c1334190ef8472fe813cddb13eeee9512fedb9b42", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "1c6ef270195f30290c838eb2ae3423228afd4e73311179f00a16c14438753fa7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "dd571315f677c8b11b7e51cdb78f6e1e995060b7ec429eb062fa8e021bd84219", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fe006686506105b822f5545568aaf409c4d40bad5f51e6f447dc972d1742e48b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3c96d6f404ad665ee92d36a05c85081e41fe3f9020e025af53ad87c2436c1a2e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "5f98538cc7b5775df09ea9ac6f97c691b018ced70e61288f9500661bba9a3b85", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "58c4023260bca9013376d384c378ace37237bc254cdadb37138f9fcb4047b757", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f301227ef60f2df533256165b86bf7dfea5ba1cb14fcdaa4ebe29b11dc8828d1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b41a0545320c256805c920fb28e65f2de98c839553c5c29bc4089a6c71dafdb6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c55eb0c21f8756570deae1f8e35b6cc8ea70de3cdd526c2bb4d98daa514cc2d9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "5f663bc8066b2eaf3cd3a29384527c4dc758b5e5ecda341bf3201917a7e67d9a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "23f6b2c4ef37d9d6f94a3a99ba16f94db5e6c8b2cee29fee8887b48df10c7212", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "db68525ba8c28af57e0ef7523c81ddf2f4816272eb3ffeae4ad86aee16d691cd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "5fa7843c0b87fbd87cac4543977aae1093b7af34b3dd86d41ab939ffb48465dd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "aeae05324bd7838673f5a8ffe93fbc2e4e251d6798ffad6c7ae88138d262a817", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "f3097adc1b1db4e70bbdd5e428a64a2f7b993d6ad037c638a7221d54d0f654f3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "9c5f825b6d6024172b4b6fa6b15653ad25aa6088c5fda4d1ceebf3d69c348324", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "c12b781bb1d6f5681edb054bbb182d30212dac5ca5d567c8abf657550768d6e1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "e2c363508f1f3b6fd8176f6ab9ff1fc23b82add0e8f78e859f3773e7b95ebf86", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "7de4740c2a4a1ead791f93848d009bb026592e312a6fedb730a4398ca08042e1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "638b5d1194d5779494fbd0adea4775a5efe154cd07af45968f33b32529e8713e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "f7b3d9b779e64c6f921027a1c7d7f42eadf7d533df635bca90469c3d615ee2aa", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b47d5af9cb177b3818d39cedb86ec1081619cbba4913c98d2bbca525a57919a6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0ec25476e2524f7968431db3c2a41bfc6517bf91bca206504c7f89537accb11d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "6b2a370483373c63357e9d822e9d5ac5f38401d787c9ee65235a6beae0f77336", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "2d9b2630b05918d1e29495a428458bdffe3ab7372ca6d19d54afe38f5af8761e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "1acd718dafa13fd9b63af33902f608f6d8775486398c11010c1cc39964374d2e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "16e650c8afd0a2cd8c585ea0cb9f71507644afe9482eb0a2824620d7b2f1a16c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "9c76944b275d91575c97c0af81b58a29b3446d6dee09edc262e87328ce444455", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "ec12bdbd3c65166d9f8b3a139bcef8bcaff2317f5aae6f60bc978e21d6d2676a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "6e89eb8779b125ab44b5f778e0d9f245dd19015a920a77e000a578ebda852074", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "100b5460b84a7be4424dbe5cb074129e415859c9b6a70258d5b22aa6033a009e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "615d27dbc3323a703c529e7f9c957a1b0c3fe3993e247ea4329871c272dd70ae", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "3048cef3f366259a3025a694947ebe3ba6819d5f4273f537e74a9e1a00e19f18", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "a900dbbd746931beb5f41df22bff8fa8954cde47deae10f612e33e488f81809a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "81f47b743e13122d6affa5903c2d42b849aa4942ebe1e380d1c961a1adc60d57", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5b53286ebfcc985c0cfb1faa81f31939b3df97ab66bd4b9a4a09f18c365102cd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "a028f97bcfdaa7c76fb969deed1951a91d38a982897a68c8f4db144eb8b8fd1c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b0a8662d0f15c153831da93e687093cf5f8977d64df2d9acdf8770068acd605b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "3f2b6decf108ed09809da8486e234c47db70bf900612e33f672a1061672175d7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5e27ab4c27fe5efa16f12287e04af4b0850caf51c8ac1583ddd2fef714be8f80", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "447e585b393711ab2e3a485826d8f34babb6c3ac6acd6a7ee1bae25e0957a827", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "77ff04b54d2c9df6eb20f4f66c6c3f72fe88b302775f8b1c3bf880605cb76394", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "7fd38e8a4e0753f6c4dcc57ebb92e51c50694cb8d0997643d86e745bcd59e912", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "ca9f248086b7c711f6f857b68ec6a692a9301573b49bcfad15cfac2067db3c8f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "f623ff9e814a06bd7cc9ffbff74c2743a493e8303736ba9d764d0311deb6ea81", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "e4fe24cf79dd73268af4df316c3e49b5b83d09a5e19505808d5ebaff16611773", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "6033e4e4bc6291a0b80a8c9ecbd1cb5ac9fecd0c13f4b445d20f249a59b5de7e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "5461d04bf279216333e8869429024e2b34400ad6da34fcb6591b42ff0c2b6e07", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e32a671a692e698072c42ad1c224f0e1bfa83cefc327316047dc77176f9e89de", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "5539b857c1cf4ed54f644130a67bc48aa971eecea60a252bb7386df773c46dd6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "0ade015e5d3959c167886f85b80c5c118524d420bb0ac5dff73f4a79d713b2bb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "80816d6bc49abe49c04bc0ede8ca0adb9b3313cebb0c4315604378b9ca369ba5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e588e8bc58b21d5375b861dfe9aa980fbdf6f2642ea349596671527648508447", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "23d032d31e722df61c2ea382d9ff51a43eb10760ae70b8ab75fa617d4fba7e81", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "75f685f4ef68817c26eca2ed050aff254277a14aaf16b8628c5f1f31bfa41191", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "97ad8816b20e0d11a71060de9cd55c29737631482bd7d52272d9dfbad69a5385", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "8c76eed83bef7842d7166259bd7e14a59d76b35f4d74c7c02803ec1b79ceabde", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "8564973a00336e2680a7999f5731985a8c541f1a15ea4d06deeb1e5c79314c1d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "3872bf212c53e7920e7d3cdf2b52ec4f1fca63005cb9ea8521c05c96684b7667", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0e9e23123b5cf3da226c70869d06ae2e081af1655800e4b423aa66dac2837e87", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4a95b5f13ab86c5292184f37512abd6231a88823abe44163a8a4817dfc96aa1b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "aa1ebe4b7f28d7c72f8247f653deff58c38c0ad6d82294c0848f2d808223ddf7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "0ff3704151ad2f734371d82093a516f1d01fbc63750f63af3cacfb93202facb4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "0a51776d0f6f72a54ff35dc5a06ea249c2c207df913ad922f5542926e1590368", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "10545518098df14c3ed09f3cc44a09f2e793432a7ba4e0814b30abcad809a1c6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "45c2c0901f6a8645b182185eac93f6eaebce9c40ba99fc34d2cf168d902f5338", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "6f4318ac34e51118ecbbbe2c9e8fdb0ce4864e547e32feabd6461e7c0b5e42a0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "b088eed244c3e4a3112402680d32ac52b72456cc77bfbac8510fe1832b8ecb7b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "ef09060f7dcd95fd1a8d268c48155a596947020f74f0d398b177a5f669876864", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ca310e5ed416d556c7ac42af9e69a0b39de8f1e5b96e38d859690e046930d6fa", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "4c1d8b980ea19d06b006eed397cfb28c2ddb3c802c06d943179e0daba546fca6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "af104df0a13a886ff7665cc42c4eae6e788bc5682ab94bcccf82c56f1ccdef38", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "084f2d19be0a6d9f0ef2ebe359f4de3dd7a36c7a4018253176c3a2d15e3033f9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "dccd30be0d9abacf69c4db8a285342d1447cc8cc2598cd745fcbb892e72f1fd7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "5cf569b291f623edf30040bc2c5ab16d23231069361295259c69c46bf652d5c8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a9ec7e7e22b29bdbc924169151f7490dc4ea55b216c2ead4051b4d84774af028", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "256b09f809f386ebda952d069ceb9c420a62cb1f0ce259312c89f3587dda0f0a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "fe2574bcb7c966743a11869924300b11619ab86bb6f44a9863ebd271262dcc3f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "0cd0e45d236f72f86b1927578f6f821f572e7a85509d609e8383e0aa56dc5797", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5e74e22000b7f6705c527d11c453ce8a3e5a71f4c0a1112b0c2bc26bc90c9f8f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "3657ea96e038bd4e8e4ddb1970a41315e1f22287f8e07de826218eb9b9bb11cc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "f93fe86cb9b6df7cd0ab30ca57a3ad908b009b538839586367a6c7f45151e550", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b992b4c70bf033fc7899d04bd73e9a30fea18248b51330187d66d6add3120280", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "54012817e9642406eb5b27f851c457ede3290f84002c13443872a62bd96efbe9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "5aa167837a3a6cdf73a123acc4f01fa0a147af2e5fde52fab8d8fd7bde0b99cb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f1af6844bda52a375be1387e20ffda71f1bb48844ce8791bc536a9dd32da9900", +"T3T1_de_cardano-test_derivations.py::test_bad_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1849554e681ea50a97e8ea463ff459def883b382f76c45e178da2b26dd6d1a5e", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "40a2f8e791be6655cf1a654467030eebb716b8440d073db0bfa7d19d99e8826c", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "6dc263dfc3a62e3cddbed96e9146fd58abc18501976fb5ea08c14922f404bc9c", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "f8c24423f947c9af81a3c38f8701180238a5a32207a5859618e15419c65b612f", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7d944e2825542711414715d3e1b33fadf46bd854543655f93da221df2c79ed49", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "47ef83deab5c88855ba8924361adcd8e520b2ea0f0c0d2232db24f55503c2755", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "aac2403703abf0b76bfe300f7a226c1c47228c8d1e3213d67ccb0e4635d88d76", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8455ff435536e90208da53afd1450dedd7e569de78271afd21fe7b49f6112820", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "0e6f7d35676bd9156ce4aebe80d9675b012613e9b5dac639ae100e84bfdb7078", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "088e48706b5dded9258b41ed05da4820ac87740de734b57dd698b975d577bcf2", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "73f3e0ce053a75d8e3b908660ba999d411f56ffe391eadbd3d623d47aca54bb0", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cc6ce7065cc13995795876e91dee61100a3d95ad58832762064b659fe75753ce", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "43620c115f5f889f96729b6c6eb4d2016519a8cabc7dcbac48ccde3a60275949", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "041a0a33d745ebd99add8caedd083fe0c53a65f72b6a47e1b77c29ab5b369179", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "e591d65e40c5db772aa4cb7db38f42e5a1386e40a09cc46d0c440761e485314e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "ed37950b5655ff097c5b806df3f95eb8fc2e629db2c37674eeaa755299016b16", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "48a6777d19cf8aa67261ae8d8466ca2bd76e762ae5ba547bdb21ea4a162bc7f6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "7c2873d41e445af9541cc647a6f7c1d8e27e2cc411dfa9e73ddbc429ed7397a3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "cd4df7664a391837ad62fd05f06651e5449dfbc44fbacb7b1a849b7747a1c7ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "efd955926946fa1b108c59bb6d11edb37b39b5ab32008def77d49a46a557f1df", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "0542a4339623b0fdeddc1d431fc28a1d1d23fd4e2e809d6ef800fbe79eb076c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "0a4edc6de7e4b637f094befd9261e62635b6747dbff220888c7b679b965f0b3e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "4474505f79c927bc5f349974b5af5e1355117a1935f510ae0b8024cb944c5ad7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "2d154d0776929b3b2a77cc3a78b2904fa88dfdc1ed06403007c6ccd1a0b4d585", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "ba664e94da52701f75f81227594235380818e9dff0323a16e61ad0c652c44694", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "ba664e94da52701f75f81227594235380818e9dff0323a16e61ad0c652c44694", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "8d15866cb1fdeeb3cbee24ccda8c95b0aea6625268c6ec8ea0a294f814777e5c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "3cf1508f4f4dc4e517e69c0af17541d27e8ada6a9faefa7841efd6611f369ccf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "64d71cf5fb65f1289e31c1c5b1dfa77e25cc7cdeeb7e1e3738d44b58ac9e7397", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "2891867f653b18ba138c12d33593d8de560f81fa8caf78a60095c1d006e13468", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "d1e7ad3f7ea15159ff3833aa9b621be9e9ef390d341c53ec7d2f039e4a915100", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "89a83288b2a442d4f3dab84082621332e95634df17c26f18c7936db35384a543", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "ee984a626687a4d8921f072efd336ac5941850d2c8a790c1dabd9c8f612d3bd4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1451071846089ae64f2714aa7014e29e54acdbb31e80b1a15a4b53c768dbe055", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "0631ac1d882eebd9baff9d37921329c6c03e72ef355f3657f9cc9a7f4068e152", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "d1e7ad3f7ea15159ff3833aa9b621be9e9ef390d341c53ec7d2f039e4a915100", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "89a83288b2a442d4f3dab84082621332e95634df17c26f18c7936db35384a543", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "17525b20f12f8555e86e4afc2c86cb5ffe253bf83b2d4c91a543603c96af1bf2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "5c8745ae115f6a747c96acdf8a2d8a77489182f9c16c83175b9d0936bdc8c81d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "3fa912f848b794901d3cb3e205171aebf7ff1484cd190492720443219386d5a5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "1b1bb66f4375e146ebf01d66f30e76a9937dc9b6f5d97ea7582f6085e70bdbf1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "ef2d0148f5c09e351346967ce75d6242b0be27810b70ea20d48c164d3e047570", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "877b79fecf3772dcde31da1dcabcced62a2ed7f7b7d21eb3c42afec35c3f9e63", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "2019f098c70a9f68dd4be9f301fb732697b1b94eb45d1c51845e547e5caf303c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "6977afea08e22cf7b91420cce13b4e3c4198c4bd2acad02e0df0094cd4c6751f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "390f44730733db573dac809dd273b9ec562a6f1a863aa09703a9d640476adb65", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d68cab03d2003c4b6fb4ac3f3dc67bca20df41195274e5d9f12571cdedd384ce", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "55779fc60c0b4d693342e73b26ebed0e1123f08ccece770cf09076025c3a428b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2a1a05c5fc75a7ff9bd7685ac42a591d8084430ba5d343a03f1be160c73219a2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "730e79dc433f0cd043722e63b77af24dc98a0a59dfcabad85996ae57dad7c694", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "347fc5a9d8ebd1da61f3e62f6a5cf0121cc0a1a7e4db1032390eab8ac2313dd2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4f8d4c3102e3383bfaf783265a14f8011af22f935fecfe2c9f1f4b63af2a143e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "532bf546961e44439ff9ff22f64c232ee641f98756b827775e7eb3dca1295ba3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "005fbde396ae1cea7983b9dc3c5aefae04e453865ef68184cf0d8266c0a2ada6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4bae0b0afe7e44c7711dc77add1595e3f4b5fd255edfb1f4c9a50e2586c4f8db", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "5cbe34032d26d60847956cf0eb7510b238344b90b56fa95c64e5e983d7f2f70e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "29ba78298def845d834c050971d7473771d9970bf36501c53c9fe6d9e9ed7bf5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "7a5a7d7a5ee295237fa523d49c4cbcc5a6382c239a8bcce0e71758bd23ab453d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "c73e1c5bfd948b75c6a86fc3c1b1a148637619dc73fd45877294cdad05ad5319", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "19e110ca23ffc4116bcffa90f6e3163493be3bab3080c792163f7b6249549b43", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "65b75e7134fe05e5f5830043c822a432af105386e6c185b4b37fbbc489d3f029", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "d184fdc47a5994c893ad7c592926eb447863d710c3ab450dbe7da64c1e16ddac", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "e5db2e0addf81a8c4ddc14930a2c467b47d0943f2d9561556d569a49246525d1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "83cd404c2435bebc7588327bd86ea18820d95b54b69e251e431aeed234db278f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "f2acf2b2c5557f1fad5b120abe3166d5c3753f171d86df3ee75664410f1bf82d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "d7495f06dbaa2daf966e56f815ee65b9afb11f090a94cd544f9db4c781206779", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "2008aa2a191c63acdfcafb3a525cfe99dde79e004240a45b09973e42d6f33ea7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "072317f2154787426e373e48c40170bffc7da2c1c36ce1cf4a13e6c7be020cfb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "7a97b9e9827d300096b94fdb27eab1637845018a351778d8bbd42c102e011d1c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "22d4e313cf4a86e484f06da48a669263f1a2f10c40b8e22587e3d914c37dfde7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "002dcb75ed6699b92d288341a72100586bbaf69a319ee8bd86fe1821a29e4426", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b4a2fbe66d1c5e7d92e313f32e5b1e94c3ac94dc7d65fdd2b3a02b3b3acf7738", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "e9a66d138213991d2d34828c9522f24be77ad90f09785dff5f42a653653ee218", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7b89264a1b042362f86474ab096073bfad5a07f069feb98ec72bb26efc8a2f4d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f8941a26a327c991752de2238e4c103a21b755f617337fbe8b11ddc334677832", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e53e0afa61c8446aaded58917bc6e64786c36aaeb9573dfab3793aeb15cad133", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "11dc1f631bc2e8f6fa5a112d7716b18639d362e0e682a7829536c483772b7827", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d67a308fb7fb1d971745d04ee590f8ac21d2c4bc7c78443bf4d80123f6906ce8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "21d776810e67512d955c35febb0ccea8fc6bc9fdf3f7746e10f7289cbd44f54e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "69fccf7e116a0fa25a53a84ff5b531db27a8286d5840b4d0d25e8797496bfc9a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "b03c9305755ac0525b54ded4afdd477f2566db72a46105888ebe1e35ae2cf921", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e5f2056bbc971f34f00faf8df216ddeea2f5832e6f9093e1cf631fead397ad6e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "d04b543a48aff742ed8d2c3fb540ffc83d9d9eb3447fa2ca63fe0b0780ec90cf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2983e4c991ef11252f2d19fe56a8453e2900976a1395b27620c7ceb892649161", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2983e4c991ef11252f2d19fe56a8453e2900976a1395b27620c7ceb892649161", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "3beddcd3405a4f62a38a99d6aaccef7c59835297d1978d504d524b58c3928539", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "136db55fbe219bc9ceed471c46fc1ee62b745d8d4276feda5859a8060bdae922", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "948080e08f0b74aa0dcc6098cab5b58562a4cce7baef7806f52bdb890d25d0a5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "3efdf0c95f9b8159c342092da6f99e235aaadc94fa98afc52a1fce1af9bb34b3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ca6af6800ad9ad1d1c94fd98f0d7ef10af8485c3aa4b7794f6e18b2cd291121a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "78a36ef078a263aa9e99961b4352120d2c14342da9d466b9f7b36babf4fc97a6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "d61fc7e221496c19b6c342dd9176ff15814eac42ceebac0446b2e5db8bafc737", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "2ac918e3f91a292ca1b6daa9b8288553d26f7294f4eb98967c16c414b6665412", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "3d06387484b8a6d48d49845e5c7e747cdb305fb137ef6acf22142b55b64fc674", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "041a0a33d745ebd99add8caedd083fe0c53a65f72b6a47e1b77c29ab5b369179", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "efd955926946fa1b108c59bb6d11edb37b39b5ab32008def77d49a46a557f1df", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f8454c1cbdc953c4da33d6ee9dbcae806fce307d0ead5d970518d735ef17b66a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "160f80ed1992a95ff3041fa5634f67842fc91d827bc50f565c19f679eaeca79c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "a078f52a8df5f3c6f3d0445115cf69ee3c838a12c09e679473be591e6caa6c29", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "445ec696bf998b24298985f0d06ea2d6c898fcf9ebbeee8ee40757b387bac845", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "57fed81c395ba294b9faddc82beda4899f2e7c730ca63a08bba3a82aae4f0a04", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "9144a3cb537340b6605f8ff73e9acade4d4ce3514b2d907829cb865424901b4b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "f78b8e0172d7c28d1b275130f2b04f313a508e142678ed830847fcd12446f307", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "57fed81c395ba294b9faddc82beda4899f2e7c730ca63a08bba3a82aae4f0a04", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "6c3c1ccdb4d79e461a366994d6b36d0bf9199e72e8799adc61eaf9e2c2c02d4b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "e9a76ad0db7de94e6b9e5409f766d1aa66d602fc3016938e1ca2618bc19056b0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "d756feffe41d65fc1cee51a23b51307ce8d6a779c464768d68a7bcff90be19ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "8f3e817596b82a52d52fd631e0e8448aa7d4506bf1a4825e499611c99a653b08", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "2f23b4346328a408d6be3d57b513830658659cab5c51a02e67d2079de7e754ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b063a8610392b38587e09f5340fc41d34d576c88224c02fbb9e98367b5c0145a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e68172881697136c505b7ed1a1693b2754e9e20443b230a88cb7596d1631ab56", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "630ff9863be4de9c028a1dc692b4111a4e2858859d9453c16dc9d23198a329f9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "bcc69655c82268c54cf654c461810e7e636358d60d4cf43b77698620930481ac", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "462f1752be04edec00c5318135d07b857c1c6173cd77067742075e806353825a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "5cd2a62303f8801e7ce7ae587d2bc262e30124b3588cd1a17c12fbfc5079892d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "b4522913d68352271d4e3a773532bda74423fc03916bc8ce04d59677a4c8e8f9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "08ec5e552b2ec78e6730e3f547cd08d4dcbb995381ec5ffdc990577e11653fba", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1772e5f040f00c94f9f2573a1f05b460d4af45e143277a064af8a2481f775894", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "38fa3ea83e611e4cac24d118fe4f6406630ee5c33dd373f807f583a635bc377a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "7b697fce266eb0026514de535c69175067d9ae3df71f00a0bee148a33ef2cbb7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "4659ddcdf32a47ae6638d0afdd926311595ad6a1d31d67c9260e0eb9188e5211", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "853ca8b8828eebe06456b90daee8077a6fa998f705f51b474d06c97020fdf01a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "4c594d4d30f4ea47410fa0fa883d1e6b7ed29b18f5be9b5cb2f5dcb411923d2e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "5ddcd7c2927a57283b1f04c462c588d58bfe8d55dad611be0dfd756a37085cd3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "e3d4fe19e3339a7c0d67fcf8ab3fa5803a8bd24e7ed68832d0bee0e027632924", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "a885585d69b1b84151bb0fa3bad99efadfadd6268cd45bf2f1829bb4edc667d6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6d190a7d38313b79166a7be339700a8a0ab1639655e76a2ddb59d268bafcdbbc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "16b6bb58a991faa0dad73e944fd99eeb213f67df7bc5a22a91d9654aa808c693", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d8f70d5fc664dd8e456d33a956513a3a24605846ee449d91d70d73dab5659b89", +"T3T1_de_ethereum-test_definitions.py::test_builtin": "f374acafb8a41f528745fd7be7e78a4a239b5a73cae246d0531f39a501556d02", +"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "5667f7e39290d3cc2051bd5fca59c03d46f3160c216dce359dd13752be336e9e", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "e863f3dbb7d1f1dd0b7e2a60d8aa4122a5bce3b8820f614862ee634b6e0dbb07", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0fa29d58d9f7ec7646bbb6391fdf4df3bec7f8ac3d913c459bae7d1038727741", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "4730e056e64b2f31625073ba4a0d9fac628991eb8010bc7f8d2e86d536624bb4", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "605fe69ec2546a7a3086bc9281d91ef1460088c5436a1dfc1073345ce3d8b77a", +"T3T1_de_ethereum-test_definitions.py::test_external_token": "6f65cf10515e6f9c4cbdadf55e3322a05052ab5dfd5aba2c5e0f7c9f8a3562ee", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "22ffbc18cd0d9dbe960a51fbb816b316214ba2eebc777552601246e99410b296", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "e2fbe9d289f282bbfb9064e16a74d24a066ece5d2b38f59c29cd69a9d2753537", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "270b3b6c3bc270e58a991d36c4941fabd39a2257327028ce15c1f57eb3625a35", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "2a2b1ff95d45dfbb397d11797ebf8dcf3bb764301364def080486d89aec9af91", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "62b223ef96892c704c9da60cd1cceb285f05295ce50fb158a6840838a5975746", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "b6ee5d558f1985c669757defc2a42d94585b5428e77c8c0cfbfb85355a89dbd9", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "967c39a299add66f04156b8bba22fca4d72a16f26f5d011e6a45f1465b021749", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1d289c36afd90ae1a854e50e23ef453acbcf4a97936438c1d40133924c5c5c68", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5f9489c333c93d13bd9a4662f6a4f7809b1e8609c36ea0c1382243a8a49b75ee", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "eea9529c37fc7e2b9abd05808db327c80cd9e862e6ebdf106d6ed332580af548", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "7150d5c9ca6e31dde5a4d819d64b829df7653a3c1e0ac3851161f96a5cd99133", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "a1d585458df468b121170e032b17b788c1868bb4bc109377f774d334cad0b11d", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f12e347692938ba3fc502f60ef8a005b7cd38268c65882bf31e19aab85a3e4c5", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6c8430783a80a23fba98f612c4fd56da48317429852ce9023e638c9ba95f8cce", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a19d857924a8eb721abd82840f602cd413e5418b738af8fe666b06deae33b0ad", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0b13821bad8ecb5943c1d908a213ef7c9d0dca6c0a09218e5da198fb2e3216f7", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "c3f7c7eac6fbf0585c141cc078e52e86053e330e77b9492387a6e4b8c27ee607", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "f1fb9a57c70dcad8c473c0a4eb7c26fa5d15d02232d61772c1091550207767fa", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "4641cad50324e384bf386e49781a8f8f5ae83c3a33a4277f3aa8301a59951c4a", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "47e1618eae153f4c579f2dd95183c093f13e75de0a05c171f80a46a7883bb94c", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "a9ff8e72bd15bced865eeddb7273dddeb3a06a0da3ac4d76083bc60e2a92e6de", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e2c79b3e635d91c55674f6436e9fcfe5200bc3a98178cfc712208921b8a4b6e3", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "a6a9ae58b7befff05954cf9f6bcd8545725a24e0cf9553bd7160eed32e596145", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "c9c6ea2fb86dc4c7fb9af760b7cd383d957cc796a293429c3c0ac9c22aa3be7b", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "940043bb4c047ee9dbae0203b97e670719cc6f7c41ddefb7f91e2112a2dff714", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3d5ef1a8b7ae90baf455a8f2b9e270d7a17a4bc83748dd1e9bdbbbde550ef5b7", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "51e34fcac949691457f7dd4683148ad659a9aa139284608566662106ec2f48dc", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "a614d177aa349bf12c556c9f67f898e1559a324fc219032665ce9d48f78ab51c", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "aaa4f7466ff4e738621f293b374ab7577c4e986391c2c4ee4a58591fff79f467", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "207f82b3c82767e281ccf2fac960117c966aeb2f8b43abe8bba40fc14ae035e4", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "69aa9de902d1dbac6633569a5d89172dba23251f8b293c851b08f72221fa01aa", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "947d98a775facea7c8e517b4815c452dae26ce4bd198492748df9deaf719ee94", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ea0900bcaec77f18592430866c61aa6647fef3c159e67ae11e04072efbd620b4", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "aa023fd6e81e15eff67f6e41961e1244be7883e6e01ee5bc6a56559fbc55c036", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "3332573034ba67a63fc862b05ee40a02f369a1ff86546c0e024dbc1571bea289", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "da6606aec5de5f40430f63c15ff51aa904edb61e17573f06a255ec714416167d", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2d489b177921b24667447777fb301f329c74776afd00ab46c7e3decbec17696f", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "d5df47caf165ff4f0a38fe98294939f304e6a44bbd981b29e4e568f492dd37aa", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "6284796d7299e6c7af012fb2cd81593b5649387e806a8026d52e94a17532fe31", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "22940fe01d52e95906f57298f36d8486fbb6bd9f9306db58051492654c135433", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "88e32223ecf12b1822bd0dc76c0d137eee41ccc9a095b1020e4f684ed81eabda", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "aa023fd6e81e15eff67f6e41961e1244be7883e6e01ee5bc6a56559fbc55c036", +"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "ec2cb7af1be0d5964c3b7f0b4fc2de52a125bd628f46d473b978b32afa823d97", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "624b6b046d9439cbdf0ad645bee350b67548d7d75c9c151034b06196b6ed9119", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "6ae340267193af2eaed11b544099f9de20a15eea07a79a142caa0c0b47509a42", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "51975dd30803ef2f4de938ddd26776a1eb27a984063bcabb8bd71b07584cd760", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "6ae340267193af2eaed11b544099f9de20a15eea07a79a142caa0c0b47509a42", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f6c65dd99732bc7912cd851920c818d841f10d886837b89404f23f9ae83d9605", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f6c65dd99732bc7912cd851920c818d841f10d886837b89404f23f9ae83d9605", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d45a56217ccfe6ac931698ad68a8534faea557e1d47c3700e27f1e59dde4ac53", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4d6a9c1d25c957712cf5433e5dc4862cc01e826be4eafabdafa2a687f2a3919f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3f6fea2e0b70545fca3d4828305c86b0f2079c8a1cd2e3288b79e955c2f2bbf7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "89874d121ef66cd0b751712a5c2e029cd25533e4a3f0b2dc553da52f36c2655e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e8640622a54881f2d297a46bd489cc11566ec920f7fc06ed83491b2d98e092e3", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "999bdb2b1a2488c46f1ab4436c3548f2e224ac7f0b34977b85ca750aa5c27b44", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "312f12d5cdf6d9744ab4a706c5a51c1f04b740239cf4f6437faa3d22823fe20c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9b9091d25c58b712155c7a23aac093fcfab6c0f938f8e2890965faf7a85e07a9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7a552c27d1c988550bdb521c35e57076d5add9bb0086bdd0f2314fa8473dd0c0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9b9091d25c58b712155c7a23aac093fcfab6c0f938f8e2890965faf7a85e07a9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "d23870c2909ffad7c7d59468780bac3b1ba6bd3df946a44b0371638793a26daf", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "d23870c2909ffad7c7d59468780bac3b1ba6bd3df946a44b0371638793a26daf", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "18de2948ee4b999250ab45d7cea552495b7a535076ac821ce07a188e51e819e8", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "29a02f935018938df1f6316311e02802f58a723a2e7f1a4066aaf2716c914b51", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "feb676830f8b7cea8141a43366d209cfcc1891be07d466ec5f8de8af048a2824", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "89874d121ef66cd0b751712a5c2e029cd25533e4a3f0b2dc553da52f36c2655e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6e02ccbb8dc1183240efcae9990ce396c136722bf1488822152b2a9070753ace", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "349c744d42742380339d638b9ef7b20e9ea762b493c59f39159e71d33cf6fcb0", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "ab474bb787fd54d83ca068976c13011e8b1be2a17995b782471db2a32e56a287", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "2effbff7403ee4cdc0c8f199b49ebab92f6b84903a3e7dd0a611528bf2fad995", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "d3baa3345ea13d8961bab395996fb94dadeee85de3693a41b9b1ceeff44073d1", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d45a56217ccfe6ac931698ad68a8534faea557e1d47c3700e27f1e59dde4ac53", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "cde59ea7f5f34ed6207355f313988c1dec8ae060de050c6a89606b7845bc8810", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3f6fea2e0b70545fca3d4828305c86b0f2079c8a1cd2e3288b79e955c2f2bbf7", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "6b58eeadc416d0aedf48da5a51f6a149f01df33471ff8e5c690cd3c0fe4880f8", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "1e4972a02b0450024cc2306f393fc6940673088a4903f6300025460006da5d9d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "18de2948ee4b999250ab45d7cea552495b7a535076ac821ce07a188e51e819e8", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "04b5bf9a8bacc901417e88a0d438938218cc9925bb95a573a9766acaf2015208", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "feb676830f8b7cea8141a43366d209cfcc1891be07d466ec5f8de8af048a2824", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "962e01eeed35b1ab00ad8a8b32ad2005f5353a77f2f29b45d0a2a0ac27a87aff", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "34e2796d80356525a60f8830bc677ac7b79ff57372d6b20945a7b118e189729c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "1294c9e6487c849d0520ec876226f2d91034c8fbfea04b4fa1d4d1662b756f6d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "1294c9e6487c849d0520ec876226f2d91034c8fbfea04b4fa1d4d1662b756f6d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "a6196664de6687a639589630e868377bfc7b53dd76b0897799b67e272fe9f91e", +"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "c306905f34e62c5640b6834ebf9bf95aba69a7f024f9f8aa3bfd84678798aa63", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ebdef978bdcfff5d1bc3965685880252963bcb63cfbe73a29031768a5e16ef7a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "3bdd24bd65fc730ce5c5b4de5a05be1772660efe20fafce9942a1cc274613e42", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "e35a186db3ff8927e5bf4d24501d8914f9aca42ed6c9ec642af0cda35a2fa4f9", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "520860a5f34d61b7c9cb87d487c2ad22c9a1c84061fbf91e985bd22d97012fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "746ed0005eeb0ee10119070b533985a8a04e19ee47bf751bd13559f1d3a31217", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "9bbbe37d5257dac6bc1d77324aa4d3d37b65145a1904f277cdb2b413cbf07312", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "b08f8d54c69cdc8331b388b9fc0c472abc0549677eb2aa759024a52ec65a6215", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "0708bb186bdf615ac926fbbf0813ed24847633030dcadd62eb50fd05fec630c6", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c39b67e56cd303ec9ada26cbd83300213374a4bdb0442bbc31627d2f60f25827", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "c7d2514e52a2c335be1ecf58c8f711afeaeb993b1776260487c66f9650c07e7c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "c7811acc5c4bf5ad594016370c7b1c5b1d66088ec78b0a6ac3fd22054ad23918", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "15915c4c794a6e5140483b8c68bbd8f36f3adff1305ad2786f6db5dbcd6be7f8", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "03933d5a6b93f81edf360b521901268fb173267e1daa125afb9737cef64ee3cf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "03933d5a6b93f81edf360b521901268fb173267e1daa125afb9737cef64ee3cf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "44e752f9ed9f60ae9f0ca13e405e39bb455b43efc24be042ccd1a5a165af0c60", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "44e752f9ed9f60ae9f0ca13e405e39bb455b43efc24be042ccd1a5a165af0c60", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", +"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", +"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", +"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "55aa2834b43cc6188c7e1200baf9bd30cd0c6ed28c8395708da810feef86a35e", +"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "59947cced1a42e3b009bc8275c777aa2e831b853b2a213386b0f6a95f47a80e4", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "430b1a67ef6afd7d5e70cf65b61f16d30b0848aede534f942a874050aafff4b5", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "f6218139d2bc6d16addb206ae28916d4c6b64a1ab0c500a28d18244904fede95", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d73d8efc8f293e97a0983c01a8db287f36348ba6cadd87e9b30153368c25f770", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "bc34420d2a360999c0bfa6b924c62e9c992d1c5f00f27c2d4720b30a80d7c668", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "22c4d2aaff98aa2fe3f7a69e154cce3a98e18340dab90de66d2d1fa8b7bc2c37", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8eee264d700aad7dc05381ab2373d852e7db9f68486076baa45a5ca53112ddb4", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "6717ffff08c91aa4a0efe516ae6f2536653777cee132b5eb5fa68a12b66dcc8c", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "ac39d1ea3f808eb1b2c48cea535846275525cf05017583c780edd48fd9ba0472", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "a81bf07732741a59e4b6d815c7f803cc9944ec9f5c307e473780aaa5b8e0fee9", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3238efe69c8ad351b921a769b5f5daf91b252f89c9d7c08e1cc7075ae7a67806", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "f028a400dad0eb049c42de8c5e7ba57bddd6881bb61c2c20594a54aed14ee849", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "c82e4e18f402534f17a7bc7949a432f3394ff9d4156c12b77d55c6d9bd9db744", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "4f5a1b12f03b91fbd7dad2234c0b97063025c6874d09abbf05525d39719ab9d4", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "48c2ebedd4ffab514df0e00929879bf0803b220ecb0f32363289c860395e540b", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "d65949821bde4259451e86184e45a3a18453dbbf63487a825a7f686e05f67a19", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T3T1_de_misc-test_msg_signidentity.py::test_sign": "6e0323deeca36857dd5d839a385bfe1c8ad6dedb1139d2e953e7fe930909190d", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "eb94231415992491b232e07a2bb487a93f501f488decd0558fb2efdaa0dc1dbe", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "f1c827791632bf4e7c139887969a61168d68c46d760f4dbdff0b48c81d267832", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "5ec4c6487dc54c9b1dd5705941ba34814e43b034222cb55d790c8784adc2026b", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "5040445e0576597b7761850eec9da94f896ab9f71e2a1e3dc0f5485084708088", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "20c578e45dd3088e91cb1ed3af434a41fec92fb3259904d1d2997cec92c14fcf", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "97af2df0fadc828f537830ac0ca4954545937a820a53c5640eb3c19e41a6bfcf", +"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "11bdfd310e9dbc8fb9ff251456c05863e6edf92e34b6174b0e53129fd4f34820", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a24c64bd3ca16b0a6072d04b2aef409e88865ff48a4ac7162a1c9d861a619f6c", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4202616abd929c3e8711d77bc24f3645d59339d9c07c1b220a47fcc162f47274", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "7c62dc1921462de657478d6233802d150671c9ac9a71e9e435b1b2ec875a69ba", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "53b99d8b629d19f737d5ad6ce7835911f8d565258980d6cbb6b769a5604366de", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bedfc358a7a465f6eb9bc6366623b85eeeec83ccda92af2495041b25d4b78115", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "696ace0f4b428b30472057e2ad641519a3750781777f4820c970fe502cd9f77d", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7f4161c22319a1a29f96da0f44e4e4686fbecab5c905894ddd940fd4874a0ce1", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e218f9ce906f50e3addbc8bdb01bfbbefdb42b0e023c57031a2b5902d8b5fb61", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "91f03f4ec9c34a0278ca8aade6287a10ca8460ef9c41240d89ef39b5fad29b17", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4befb3acfff8dca6c4a95de63a7ddab93065de9c4823ba1ff640aa8799088431", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f9f199713e65ddd3c0de87c38c6200feeb437bb621e7b9cd2dffb426fe08a919", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8ad558621d0da6618b8fef7b84622fbe5002d9ac293592eb4274d65f12a40828", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f689f408d545a39929e410a9a80c2fefaed8d3016b4981ba6b11e512b4e1b52d", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "237873af1bfb142865d15cb27af32a89615e9a0751702f391adc359fe8937c13", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "aba78af2a5019aa286af4dc68acd2249dfdc23a98d0fc150a8abe1562afa0ab4", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "b386aed1de97fd3af4101e030b6d821caa6d2ca82d585461e526ec6635d8e865", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2a2785d202cf020f0aa5e62840146377d16ebe336811cd2f7b0af64456536b2e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "696ace0f4b428b30472057e2ad641519a3750781777f4820c970fe502cd9f77d", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "97d02aaf682c6c7de7032b4636dfe88b3811be15e19b00c282ad0e795b996afb", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "84adc6852f32637d784d3b6659a5478bfcaf46c384128f478b0b67d02a94fc23", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7dca8aee178b0f410cf37e9fa09ffeeb93b01ffc238d286d564cbc98c9a2517e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "11a3ac4ed9f8b9ecf389f673e0007dec579099b5b1a297dedbc0c9a5bd766fca", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "009e13b39f0b8a858b3ee9f597d626b7e5773713a7431d5c97a6d525ca6744c5", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "d86ed6bc3c866c8259173961ef12a981138d865de4ce9b9ac70854b158ba9981", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9482b15d527ee4c850c3edc14eadf42284e5db401f3ee42855624383761c425e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e1fbbf789f5daca5f4bf5f8c44c25b32cfa324c40e19746177808f075279bd61", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ed90c16baf66e6665f1dda17265c72c3cbdd772bb7571bfc90a60a578a8d85f4", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3b565b07969ae6804beb55ad8179b2d84b99831a82ffd238b0be53b40615c25e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8f11d9988ab51214ab59e3ecdea10bf810259b69f3e5c6774d6af3a8266af3e8", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7edd741620c6d5c96e7229e11d215ff1114630b64b814c022467c6c0a72fe740", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "adda197012484eeba7d8a6379ced43ecbae120f985f2d4f347b4ad4afb05d6ef", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "28d4733dbe9d87fd557437119f9cd4bd6ddf965e745cfc0437bf635f2580adb2", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5135fbb586c3585c6c34e4ca69cdf702a664aa37842177fb2a4c740c76a36e37", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "334168e5731e1d7ba6986e4cad01f9548c50e305f74871939638dd5188c2cdb3", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ff8a81d691fa353ef89718f7448ab057938defcfe736c88613e3a4cc1283d75e", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "3212acdc11fce42e414c23742163be1637b7f0a016d6d58922a439f0e512c03f", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e3eb4429c50959404a72ffc87db52b944c0b95f0784ae2fa5ebbb155a636752a", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9594468af5fc3b3345774bd205361a51b7647452b5f2bf68e40250518aa0121a", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "603b1c9634e721d7d5da1e9a59078900ebac9d4ba7fb7d10be836fb563a50368", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "191f367d9f35a8cdb4c8ca69de36049eb5e989f3258f42c94f2525e7445eeb66", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fc441a7efedfb9dee0afddd6b5df987b69208ca4f8543313694a095d0a193685", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "388a92c622ea26c7f5af76b9cab819040b3f5c3032f3abfa8b452341bb6caaad", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "576346cdbd53a12123ea2b7b98ca666696584cf56df996668ff6a013f894ed05", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1b2267ca6d30b4b633cd3b883e1522e5d47563366e5b46a1c75a35e874694883", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0401e19b8db97cf29e2bcaf5dea90c124aa4cded5a61c1a19b5a664bae8e0d02", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ca418d8d95e99c53451c3c86ca4cc054aad718b951dfd526a367799376c8f584", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ad8d43b91d2323d5bbd12a40fffbdc7e4d83519cff6fd86cea4682e05b0ff4a7", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "d9956b7cdda88272008fb94fb2a1fcb564e8537fc592dc50420aeb02be0c6ee6", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "494c5e33e0826d6d4eaa306cf7b409d0c20dc90f8b22a3a2ae6715fb18581c8b", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "5a5d89e5341710b0826c836413d6ae5f4f2ad18df5d962729072c8e919f22cd3", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "18fabad57c607ff2e1b94a680cd352cc4fe59c941824ff22438aaaa7c55a34a8", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "6d3c37f6b61be79f3b0c79102d6279439e773455366fb8f864f019712c500928", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bc97c35720be8a5daf9295b2034c3419e3cb23025f1e48024c10d46ac51a4752", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "ab011871ee4d822035f6a06c5119f570b77183967c14651dc957ded18b777af4", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "88635c3e8548603f28d7435ecd97126cd1cb590b6075d5473de435babc68de88", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "ed9c37e3aa33dd17923abfeaa8c4047fabd05af7f0e241e2450f0fb52fc32d20", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "e5daa34b6757c1debfd93826e49fdd44a9686e87e00a854f2380773a17fbb8b9", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "7a0fed37d0681bd4e29a96fbed9b3f803cfff246c45131a1b822f394046c8f62", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "21ecdab097e423bf572740e1d936a91add7421e5e665977a9f955338cb3fce30", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "584681459fb290e5efb740b4e51b256c31ec25e90e07ddfa7f259b415d7e8eda", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e3164dfa8681017f2e8bc7a189db4ed737a7229c3219d7c34726615fc82419fd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "df6be7ba24364397973345c98859d19317a81defb0d0296c4b18072944d72ece", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "62801ea5bd2b156ee2525bc98e2344a370e0b61d12ac9e09d0441ae9ae003d8c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "7fe07aa8313454d059498efd93bd5a5abf61cc773dd123ae1f9b5f18c3401633", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d3b411ef7812bdc772c52c9deec850d45d9661f8a2dd183a7f1ee529e24b9bb6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "f1c4b0c88df5e17c1681d68d32af42553ca135804efc9efa767c3bab26f306e0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a396b0cb88e242855ae92ed8e51858d9a1ac81e3ee6149398e8567bb86274e4e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "954411380c7609a91e0662d31ff9669754da6ffef839746d640a6a0dc6341942", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ff28c7fb0a48b13ff4a05b654d4db04d151aecedcccfb9cb832e1a26ad84f99e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e61735df0804a4ff0ec36ed55512966d299e76360a38ce6c85ac7db9ac9c4ad0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "36bc286316bc3ce0da2a032c61a7490ab25ac890fe4a72fbef46bd68e700ba73", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f422f7b653c558e1f0c29d28544af6580cbfa5b781c9fbff664f8cb3c2bf3450", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "21d37ca780902294c482d59b9bfe25bc61360f510c64a44d0580345f7f014619", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6792a50d11c19b47ce4bc41a0bf4ed04f1675dc0a628fe0e0096922e93ecf935", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "6bca6cd502f26827bb64346a1e3808ee154b2fac921c763f51fc0e06d85ecf14", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "8ecaa5444d8c85e7e819be08db2d460a4068f4ac996b3e70cd20e592043e4a3a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "960d881144aaf6e006f0a49cbbea5c71c701bb8d06b6f025fad8f9faa2715505", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "21591f532d5cf2609aca3d2fa53b86f04ea55758df68d9663c5e8f2d048f5f82", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "281bf1e082e7148dafc07425aec95a991f51e896ae5a1286d38e8e1ec0c51401", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "444f10176539fe1667b69ef2203eaf55ea373dc05cd0a2cc5a5476bfa7aa0a41", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d732a6bccf02c5e3f141346f8024eeff0087ecafaa9edfc86f060518cfdbafa5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "491f7675532d5f62b3009932e42c0b131ade34d475829e573700b394fa0286da", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "65aa0fdd293ae3d4afe1558547c267472935537bad9ad1d0187f27bf04bf9191", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "3c546daefdf521ea98e4209482074f895eb66288b11bc4bd5fcf0fccca43b712", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "fc59b10e924d732485693dfd56b59ef2a78fd13ae202a42f75c70b47f50cfb74", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a0573a04f96dee00633d189d2a18cfef8caf06719f231311d59f6a90e1d84172", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "0330ee7b73eab93fa705184ba7a9ce65514556222ff65c3d40c3d698282cb232", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5afbe96c3d008be0d14152e86d9fd382a1f809c14961e4e4850f938a19bfeffd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "28be11d4366258c2e7196c2cf9502d40d457fd478a7252374c9df24f03e67ff2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "48920f5c770e0f502c472f666e52b930c5b332aafbda26875801ecc56d1b303d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "7acf010948324f7da7b4156756127291eb242b3a977289add2700329f898ca1e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "944ba76db424e4a303b41043f14e26ec3a408f46384dd226a9aeb29d3648c09c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8512dbcdad6c4099972de87a9703b887a8e0a1d699d11f5147db0ac4c8f94f2e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "eb1f70f22b5998b39f545b4b224c44eb49f9646e4e5f95d04acfa88bfb120dcb", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "afe6e08e32a2ca8278303997857a2df7c4264962d073bd91140d529e7a632313", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "024458a69a5336caec334e27d9b54fade2cec32c85f6d9ecdf13e0a02cf8a907", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "c4d9397ee331d8b08eff1f16fb99eb3e1c135bd1f57c21a3e8e8d6191664bc3f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4770eb66d8b107f5addb81e3d2305d0e64179762035a64d88d23970ca3bc5037", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "cd4c24d302d9d0f903ae1672040d3bbe5848fb19cf2f1223bf81bfbf694430ae", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "76e8eac1fc01053b2af9a03cbf9991e3622ec92808a71fdc9a5697bbc03d08da", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "c18f700d5708d740c6a34b0936370853fd004832ae6a1bc1752ca8467e7242ab", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a181116fc0c2666dcea495441f57d2b33401b66d103dd24825e98a5388ec3b24", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "45ebf3563965765e816bf483f0953ad8547a8e99db18e68dcf0435c96a28daea", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "a06bd0ee40f357e30047b50dd6c33c293eba8dd07186f3881b822d4ff5585ba6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0dfd8da84154473b35bfac62e63adcb83b7116e1fca41e187b8939d3fec8527e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "a665822ff73ba71d31ef3bf1e32494b26db02ae154ba597c1e412303ead76509", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8fd78d3b89a509874f5219d7410a226b40591bcf17ed67434687a73831280d2c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "33d41e851354b319b35d85c73107a688506ef197a4b706a22b0d8976cb1f0055", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "dbfb1226258a4e7b6859fb73d4134a90fc67f083bd6e91abb017e09751d2463e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "e43e3a43150f24e863952c3c7c3781f16c75da73fe704621e76fdc48f3e50382", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ee2c3831c345d4cadc3bf32bdbe3b16abaa59d373b5a21642f9996f07bdbba67", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6b3639c16f597c7569772a4d9080ab024937e543a7c9298dcd50d167df7bc228", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "2040467f9271bc18bb97a4715e9a72ea7c4f17409dd5be58a7bd3dffc284782a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "c4c5ebad9ced7475634606416f8558b9da22daa88cc59b2c8e215c41125194d8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dde60e30fe682e4adef7071e2d313035e6e40180518cc586a828f73f2dfa5634", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "4066aa8ef7d1192607436e32f533724fa4ff90c108ebaef08381f107c05de5f9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9beebc4e60313ca9012ff07e53ec2aa7c4d5335270a8f5bb6b5117406930ac8b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "65aa0fdd293ae3d4afe1558547c267472935537bad9ad1d0187f27bf04bf9191", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b570e793166997dc38a2ffbe08f684c48aeb7a6261443480a4dc7005f90b10d1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a2a4535b13b943705020e78099c4e6d529bc76115a626f9f76d4a0c33c6726ff", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "19762b6ed5f35f0b6a42425acca636569683b37795c1ac3f69ae702369b96e49", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2f50b01c59e9892d641d0e5f1b7665a135dc1f08772c2bf1ef168dc4820bba61", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "5088890fddf0b1c769dd8862baef59184c9d4cf54b03eeebeadbf6fedaaa0e8c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "83de207f8666c1c6fb984e8f0a91ece8498c00b64b59efdc44b456fb7e617f44", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "859c68d089ee79a6c76838f1cc25044abfd5278f5f6c3a5dbcb92cb492218089", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "001e4e267293ab5ddf879070c8fbde357ec2b758bec8da8e4cdcb10c7b9f07f5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "1723fcf642d9aeb794bf14236f11e551f2c6115ff8a70036b74817faf4e19b28", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "40abafdcc4cdb13b4f7e03b438a89260e72eb6a3f560be8429d85879bacc227d", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c11c968ed86a7e005f237f2a30526005acf6979e31e7b71d9578ba83f7050df1", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "d653f52451e1113499bb846dcd7ea650b45a1ef11b3d367ac2e8496ed6258ca7", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "d72984b34953b1a88bf3a48f89ff489724c06a934c1722a1e25ffc193c5a6761", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "21faf6ce6a15ed0154e6f19340362e1ded56d1e95f51c9313ba295cc79ee36ed", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "17cf6da293efcae2da07a36af7d6313d3765cc9bb03201df24b2bc2f6ff8989f", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "c63eba9b0f924b01acd907b7fb46bc617934b48b9118b3778bdfdb1304e4f9fb", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "b068a9fdc0d679cdcbb22ee75971c35bfd8d18ec5ebcb3ae1eb5b4bfc09c79bf", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "3e50084353b087881202e0e64f12d3ecef494ae846cb8696f3219c0827ab0f2a", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4ea48e8205c5bb81f79673672cc6fcb78bd5c5cdd3f38d87506e94647c916356", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a6032ab83e7149f2d03bcb4eb60bdcba198205cec27d82b1395cff2ec8749dc2", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "6e393e404644aa2378052a2bf9f6f10d5516627c1d087f89bd1156dc5a30dddd", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "fba977323f8e4428c9b5e235713300d0ac9ab7a6eccd9a0a54272ee5be2d95be", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f231105bf005662e05f7297a0f7fbb94e2bae7bca331b09c510ff7c358bdaf6d", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "b7842379845f290945b51dfaa687e08966757a47fff7877eb80272302460f57d", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "91593bfa3a8454ab3d272837acf35801ae539b6bf7e5ad6a9ce6900859c51a24", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "eecd87a3ba8d3c1dbb5420888f43d3f474f7b48eb572cd17d0d2ac35eb2f066b", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "71973a384a5179558bdfac990ed4cb6f3eec0b8bef210170c6089e20c02cb9b3", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6259fb2bc6de42591eee7d99972ba2e5e433aa5953300f489c22dcb5c506c721", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "656ebcb02da9ad3fc496cdc71c6341fd9365a1ff5f7716c01b950d23409c18c8", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "476a5103dec47d1cd92b07ad258f34228fbd4064cfcfe2f402b89ff9d1f1dc45", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "0d6fe654d7577986d47d8e1b57c3929766b9bb00909984071a9620d06b6f908e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6f8fc9a6f0aa979041fe2363e017838b7cfc52c1c845970edf862ab294171c8d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "fbd5eb92d8dd3bb5cbc58bd288c3f2eeba3d229840d88745e43d3fae1c6c555e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "01022a54c91d445d662640d286fe6a5ce76e3d076f6b78e01e2dcb1dfac25c46", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b444be6c4c7211067fb59c4612cb51e9b5e7c23f18fd5691afefe821fea43268", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b74744e766cdd32e409c0b190dde953a9c4a645c94b3e3d61f2c71ee8ad53bb4", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "b2fa6934bb9ccc54888c001abe940f4859ad6038a30cd4562b07281d33c62f24", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d93f5f414eb72c2afd940663d34aa94bf36637f8f959a9d4746d65c28bcf27db", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "4dac58e94608d59ea1f16bb534a78bb25a6c23dbb92daf1927ce22a12187a892", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "3cb0dd5aae387bb78b6857f8d42eb425cc53481924d64262d5d7efbdeacc0fba", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "edbd6a5dd48e94dc2af123662a879b2928f0cf54bb37e7bc87bf09dc8f5e8e96", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f0801006efc36180623cfacc1ca27be53e600bc4ca4018610722a2315b144c42", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "1f80f9d1c64afba405d8af3d67ad0fa7fbbe466a7cad14dfe33eefc29ac56228", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "543ba326bf07677a84e05f7f3277c3f605eea7410e6b18c8560fa3b211ff985b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d264c190ce017356a04fe1ad9c3c80ac86bbb5a20a71defd7f251492590e7617", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "62a29c715c550d8d650c5d2ef89f0c298d8f229f21891daa609665f80690164a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "2f29b86143c11e2bcbfdb98efd76a16a3b5fb75ba08e720ed4c578f0d5ac5e5b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "687159b9c1b3f063ef0b098fd976d3d265e951dc3c02514c707f821a27c7dfce", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "bfd5aab0e63e9fe5654f3d7908ba163e80366a88cb9984c52eb901e2b13cba08", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "2a26460ad58aede5a4b2bf8ef9dbfa07c9e85735b2a6d0da716c7ad9841b4787", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "3927770d06832f91cf0e51ec7b59eba939ddfc6ee4a265fe03e4f2ff5d5d2503", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "dc2b836a5f06184494867d792aac6dcefccd7207394b7ad9def421e3ee1e4e6b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "b3e87b5b5e4d0a8572b0a6b77f6ccd916ba03665c1304128ec2fb03be1abfcaf", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4de2eb2c8266dff4dfadb06ad2934cbc5612a243324a60c249ef727cf0b938ab", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "37193478dc53884057cca22805a6cae606cdda13142a15dcf50f59214171d26d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "b06eaac7369935dbc16272456e89d332fefdd9f35845538323915719fc3a2d1e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "56d716ecbf5e78b1b95818432d1669fd5334ec81b78094024a6592d278a4adfa", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "6eef0d1e2bbbb12716fa6f6863e2edaf3954540e24bc9dd8ed149645630349d1", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "62a29c715c550d8d650c5d2ef89f0c298d8f229f21891daa609665f80690164a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8bd4bcc4febf5ecaa85d63f04b70cf96f569a957254892e3cd95e6b12aeca2b8", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e7cc38e109bd253741fe8ee3d20891b7c3e36c7e780c8bebec031fd318a6a9f1", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "df1d1da2c6878fba46552d963b071b2f3e69163cec3f82c8cf026946a7aca6b8", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "cc7a9a761e1e2d205f161bb550885d98799e9828d88bf29a6ffc3f7bd408bd9f", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "064688c2e25124e04b4006051a1b83ef2c08c6fac7b82e29b5c1a8ae34ee5eaa", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ab8a8fcacaefdf4e9d63eadc5612f654e86e103f1140847399fa6c80e96ee755", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7ff80d5aefc20f6a074ca038aab71cda35a5874f207123e00797d5bf9d2c8b73", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0cb51fcc2bef661bf1f0c2bd1a9ed38dfe4b01e4a818b14cd31fa071fe92815f", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "2e0f39a2f503eeaa3c622d61e1d73d3af1fbfc6875556230bb8503cb61618508", +"T3T1_de_test_autolock.py::test_autolock_default_value": "1716293c0e4aabecc4602a4a8cc6635dc9914ff28d54136030e696331daaf926", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "56159c15b85346032c52e94e939bd8ad47566f3ea4cbccb55dd6e95ba0d86e2b", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "56159c15b85346032c52e94e939bd8ad47566f3ea4cbccb55dd6e95ba0d86e2b", +"T3T1_de_test_basic.py::test_capabilities": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_basic.py::test_device_id_different": "f4ae036fdaa2a2a208543340c19c1a18b7c134256140e93ab4655e11f2438191", +"T3T1_de_test_basic.py::test_device_id_same": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_basic.py::test_features": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_basic.py::test_ping": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_busy_state.py::test_busy_expiry": "d00c19e4be337da53afb665aa2c38784a51a91989ba65bb77aaadc8605994395", +"T3T1_de_test_busy_state.py::test_busy_state": "f305a101d05f33d6f0fa3d4e002fcc37a569bb3e89690dc74ad058899085aedf", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", +"T3T1_de_test_cancel.py::test_cancel_on_paginated": "1aaaa6973bbea8cdf9378cd8b9abe61c3339039b5f5481735e0c5c4f3fa92e91", +"T3T1_de_test_debuglink.py::test_softlock_instability": "f533b6840f7f5b94c5baf11d12ae6b2e04a68efb292a67f8a7307f23366758d6", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "5f74c8e2421c3e3af6f8c3fed431fe795b8a8db7b83a95a5d48ef779df916363", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_language.py::test_error_invalid_data_hash": "e04e7f635d4867c08710860857bd99a1b50690bca0a62eb60a253b1fbf805b2f", +"T3T1_de_test_language.py::test_error_invalid_data_length": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", +"T3T1_de_test_language.py::test_error_invalid_header_magic": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", +"T3T1_de_test_language.py::test_error_invalid_signature": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", +"T3T1_de_test_language.py::test_error_too_long": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", +"T3T1_de_test_language.py::test_error_version_mismatch": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", +"T3T1_de_test_language.py::test_full_language_change[cs]": "e80f73eaf6f294b9a1c148cb23ad1a398051e36a26d66f8809774f0bb0a7ab45", +"T3T1_de_test_language.py::test_full_language_change[de]": "4601ed00f895ff75ff63dfdd96ca40f976c72cefc8090f6cb26feb68a87eb7a6", +"T3T1_de_test_language.py::test_full_language_change[en]": "1b4ab2771906bc023fe197967faab90a0502011d5a2de1158d12f19bbfe06866", +"T3T1_de_test_language.py::test_full_language_change[es]": "e8296a4d49fa05c32560d65582a505d68563f4e30725411d6b4da4c6a0ec9107", +"T3T1_de_test_language.py::test_full_language_change[fr]": "ecc398791047c183da85c433512afb0b8ccc84011f595d17ba93054483fc1785", +"T3T1_de_test_language.py::test_header_trailing_data": "335aa3055c6b2ac93faea9d0b04c69d9e64dde3b1140d336fa0b017c7587dcd7", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "6ea67a16636b85a897aae3692836332dd42f2f99729ee45a797f0cc501cfd1d8", +"T3T1_de_test_language.py::test_reject_update": "f0d458afc7a5163b57d18ed237e8e8b86472f550eca018e0cf653ed58b5d434d", +"T3T1_de_test_language.py::test_silent_first_install[False-False]": "8017703f780ff228eefcbe4b33b4c69b4ddd1c3cb620a94721c21d78f24eccf4", +"T3T1_de_test_language.py::test_silent_first_install[None-False]": "8017703f780ff228eefcbe4b33b4c69b4ddd1c3cb620a94721c21d78f24eccf4", +"T3T1_de_test_language.py::test_silent_first_install[True-True]": "620c9abea014f60f7dd8bca66f2badc8ee57e6f2154058cc81894a1b8679eaee", +"T3T1_de_test_language.py::test_switch_from_english[None]": "e52cf2029134bd82212443fd562170b371bc742197fb73a15d6e717cf95bd6a7", +"T3T1_de_test_language.py::test_switch_from_english[True]": "e52cf2029134bd82212443fd562170b371bc742197fb73a15d6e717cf95bd6a7", +"T3T1_de_test_language.py::test_switch_from_english_not_silent": "f5b4ffffdfede0554f79c02af5ea2091cb6d5275cf3554c118703cd14e844bed", +"T3T1_de_test_language.py::test_switch_language": "cdba76ec5e11898052afde505ec1d89eeb6491f3eea9a5c78d9dd0470e5edcb0", +"T3T1_de_test_language.py::test_translations_renders_on_screen": "01845138103ae1b0490d59edc22167cc784f9222939cf4960a1b60724e5cd094", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9edeb66428984c049d7d8a805868a1b50ee622a272b37fb8212afe76b550bf84", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "6c6740d59a80bc459ef190febc595e00e71e22c8f0294c719f41bce64d8e0d3c", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "b74def8bbec0adba48bec48b2711ae903b9b61e3a659a42428a99119a291cf24", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d69b76c940c1e351e02862df5c94c6d8fe9d1a332944c1537c9e433f2cbea291", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "6ea6e28bc8e9751a6522680e7f830c78a4b137483b25080a8561f83e5d94e13f", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "d4482f938fd2e8ea581013990a65efd712249898d7cc20f7027d763b10b03026", +"T3T1_de_test_msg_applysettings.py::test_label_too_long": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_msg_applysettings.py::test_safety_checks": "0105dacdfd0f8e69fca82643c84a9891b3953046571f041ce2b7e8596824aefc", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "3804c8b2026a4da82b371af1ecb95a5a5319d11720ae6eda3b6a3b2509b35038", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0b6c9cbcab39c3c0e6cce64faef9244ed79d461fe0959cae6968b285811b4a02", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4effabb12bee9ea00fa3bf80ef2a126ecdf1d1e480b8338368bcb3125397d02e", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "77ac0b61fb4140409c32c2e9435c5545b93635ce65c24f7dd1c4d8aada93493b", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f137fac2ee4b198d19b732efb96c657513a74f051f02b642e8b83826972a05bf", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "38b5afe1623634c7dd7771b81c4b799877d434679345df720e8945902ad433e1", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "be93b4ebaaebb51f2994454c4871aaeb86fac7746d95ea303715991b6f507398", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "43c90a69945802352fccd4949de7a6f076bac2e57dc39206666057494e8ceea5", +"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", +"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", +"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "fbf0611bafe2c6f5d320c554f55dc2011816c72b6d8c2d3a44cbd6fd9b99f814", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "f21c1007eaea59c50a6cb7c63c6f4b4db6c6f211b78b4c5bda8f336ba1bcfb67", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a10ab0a73f43177fe38832332963d3966f52f0e42059df190aa6ca8e6453faff", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e64a6ddd81183c32612970a8f9526e013a7d53136cf61732714991bda7be054a", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "6bd169a4c415d9cc065dff40e3177e90a10a74e7dbc4e7d72a600aad736708c2", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "1ade4c776ac6f77b5226d92249521185465184f6329825353e34b03ecdf178a4", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "2639b62eb8538e260aef167bad24e84209958952517d093f2e3d5e602e166d46", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "9e389b85510bdfce0b71dc8c0beda8ead9107360b430d241de1b76835d147618", +"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "2b638756fc24b817adc4ce951cafed946c6fd0e1ef253498c01980b83cdf0b08", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "94cbd14fe2ba2a054d6f7c846c1393b0d4c8b668cbfe9cbe8605a83e1a0d3929", +"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "984282dc5b6d3577eceaee9620c7c7525986ae9595371fba8649742caf8be2cf", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "0f323936e4accb75334b6ad75aff54822246d1e6628749d132eecd9dd0051058", +"T3T1_de_test_msg_ping.py::test_ping": "06b0b04c345ac39dbc1c07e3aab30d378443248e27761469e2d4c28d0fa359d9", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "649b4376aa411f30acfbbac55cb503ae1307210eae26f21ac495bd7f33b10871", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "390ae32984df693f17a085c6aa8c458f45b67bcf5e8c5da3b78a6aaf32055f33", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "bf6e5a14b6c266354b13b235c8bc3433d3246e280e3e8c760e3ffbde66e514ca", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "d5c0032077d912600c768f1cada3240ae0c7bee91788b6579512851c4ecb1bd7", +"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "f4ae036fdaa2a2a208543340c19c1a18b7c134256140e93ab4655e11f2438191", +"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", +"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", +"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", +"T3T1_de_test_pin.py::test_correct_pin": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "6ae775c1cf895593e2c411896b43d1e810d13abb185ad44e2493599d516fe9b0", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "76def187ce4e340ba31b51d1dd2bae99ae79ec2fd2e195964cf7e6515a4aeaa3", +"T3T1_de_test_pin.py::test_no_protection": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_protection_levels.py::test_apply_settings": "c7672bc06971145b555c8b3b8e5a1010a8d889c1b51b7f61e7c469f796dfc932", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "b59dca532744e9184651a196211b61993e0c9b186456e25a867a3c4f28d3db9c", +"T3T1_de_test_protection_levels.py::test_get_address": "60f96da78c183ba6dc33998156d6779077c0cca4b251cc8982a8b0588ba2f18a", +"T3T1_de_test_protection_levels.py::test_get_entropy": "f2898517f7b02804ca787fd7e9caa74e84f04960b9c4da1b2fcdf80083cd6687", +"T3T1_de_test_protection_levels.py::test_get_public_key": "60f96da78c183ba6dc33998156d6779077c0cca4b251cc8982a8b0588ba2f18a", +"T3T1_de_test_protection_levels.py::test_initialize": "e9c5826f6944c1e8d58262dd4d7b1810319627c69f44218ce804092a0c90e5b3", +"T3T1_de_test_protection_levels.py::test_passphrase_cached": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "90525514655e73caabcb61438091108691e1a65c3b6e78e1b214f5592abb9cb5", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f92a4424d068900e925e4e3303bea28b18b5f8046a1656c7b121bb42bafc546d", +"T3T1_de_test_protection_levels.py::test_ping": "06b0b04c345ac39dbc1c07e3aab30d378443248e27761469e2d4c28d0fa359d9", +"T3T1_de_test_protection_levels.py::test_sign_message": "1e20eb16978bdc9f7aee7d8d3870690c612c91059a896090f110500f984b57db", +"T3T1_de_test_protection_levels.py::test_signtx": "afede10067fb7275da7dc6d705a7ef3a2a958cb865befbf93da8224f5d8e39cd", +"T3T1_de_test_protection_levels.py::test_unlocked": "a2c5dee044f0b259c610d37f053c50174ea0bfd233600f3a161ff98c32565906", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "f0e578ec05a877ee73468b41775377f1577d94dbdbd7167e0a04a54454d1a420", +"T3T1_de_test_protection_levels.py::test_wipe_device": "1e945b7d7af2a531bb58f5b611755170666d912cd4396a9fe4c5ecbb7f206d9c", +"T3T1_de_test_sdcard.py::test_sd_format": "e18c01ca89407d5a8561770d95514c72b7286fd674f36045c64064fa05e05f03", +"T3T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "b078d6e965fed9b6ee89ad09aac302af1237d5bc130f109fdc73538042ff5750", +"T3T1_de_test_session.py::test_cannot_resume_ended_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_session.py::test_clear_session": "7f4f05e668a545d9276aa2f9b8e7e28f029a46396061acbee297b359a6a2a278", +"T3T1_de_test_session.py::test_derive_cardano_empty_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_session.py::test_derive_cardano_running_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_session.py::test_end_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_session.py::test_end_session_only_current": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_session.py::test_session_recycling": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", +"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "ea7c6c9417da7523bf8367b0ed5ed69df287a72a1deca438b3fdf501676fd2e1", +"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "453f5464c067a5359dc9605153809169dc41e034409f521a454f236bcfc04b27", +"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "652c86a57e3e794d2aebb9d8b12d3fa0c7f287153762790d8651c45f25b703f3", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "0cbdb61ec21cb9f0e0dbe72f749f54928c5d33da6274e4f304e0ace98deabedc", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "553a136f7c406de3d480b6347a07d911da869bfb96bd18fd823c13aed9e01915", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "476ac7c4eb853323d756c8bf7342fad58c2578f09aa3f6e022325373379de5e6", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "ed267e6348a6ee9aa56d7b69ee1f55ef6f8b8e7967b74b00e463f4732f4cb37d", +"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "cae331025c27a68575106bfa979f2b82e77acc6a3f6c2cb5eb476b07788f75d2", +"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "5465d7164e3a19b9acea5b1d584e8d94fe40d7db49dce538bb8138934c622bc5", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fed445b9e14a2252e5bc79eb81997a75558d9f427bf10420a034bd2a5408200c", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "96dc64c94b73f0a69f7def6bf619b268d9c52f3021da90cb1ea01be5bb4d773d", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "c0a024f0c1539d54e70eb3ffc069bb807938a0d0d67afc3c8b0831d90ef9e25e", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b2d433b6f27546cf0d3654c966da05570630743edd059edd33590bcf74a3df4b", +"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3ed29e74cb3e06c85b1278559435a44865bf0f5c68e1dfe3b294648b7d861905", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "147692961a945a4e028dbaa9721bb492cec200c0a45bf52c69f47efad5ac046d", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "2b11fdce6c468c2d6b627f687955c210a31ed21668e2e25bf293dffac1e73e6e", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "344fdd1dc16feb0a2b60b161b73feba91ff1755dd4096998f1bb1bc4302c1cb7", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "05121d236900445631cad6610f24d11c5cb5bdacc218d14db2ce67dd45688043", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "47cf430ee3d5470aa9e7b4d04a0c79b58a8356e662689f427e704e0542ce7797", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "85ba098241fae0873463933c7b324109811504c266ddc78c97a9cf03a70e680e", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "682e748161c1f841828abc35b4a25f78e635725281e2ed87c192ddf352503714", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e6cdfe33b545ee13919507b6297716777030a3aabf1e34f68850c7a59683e301", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "de08bc5b4df8cbdd291817e2be75d26d5ce4e6d85f498eea048b3d8ccc192f4f", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "4e2d9fe07bc28da86d221d2c8560071a1387c1375fa354db1dd771bdd2a5e3b0", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "405d84e34ef67b0762ddb1795c6f1b2eed8919bd95b57cbb3b3079b1c3486b03", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "69320ea4e2c3bd6d6ee2959a97ccde01a0f20b2972a6b4ced0a70855d5769c0e", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "a01963042fbab67cb7bf0d0a4683d0cd7a5b6f0b1a8a31ccad316e128af2718c", +"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "6f364f906fd898692efd14e9ebb840cb6748b8127bb47d46c5bfcacd4ca62059", +"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "d68cbf3ccd599858c4541264ef3eed3cbed19fa5dea43605b235054dcf28ecf1", +"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "47d5ec5a4cf12907681a5146b1390c88ec41c6f37eaa76fc663018ee5357df66", +"T3T1_de_zcash-test_sign_tx.py::test_one_two": "8858897ed00ecc96cc9faca290a9e4c63d6a6055627f689a9fb10aa19569f91e", +"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", +"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "23e004c951f6bd8768f56abfcaff501c36fcb496549b7856cabe9e28a0246d68", +"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "59d1dd264d3484228ca1a0b6d60de89348d18c880bdea41c3d6c4c0fe3bb3f8d", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "30a94463a5e29b80e5b14c63732e5aed747b3c0e293b26792872d86a0909efcb", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "1add1350d61025419342badf48ebd3bb195f6cafbb468cf73903096fbe02dd4e", +"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "193538e211cdc2ee22ed4321d01a2007d22fe8c79e6cfeb92779aa330bf227cc", +"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "fa3d667e1439c9c2a475fff22d94e330c14697ff8dda4bcdded775492cb40a90", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "ceac9a64c9aff8a4226e40f068ce412556eb582d909a9f8d401e83ca10433d77", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "9836e9ae0814d1d42cf3957fc6ac6b17dc2503e5c0bb3a27fd1209ebf57c03d1", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7c2943551ba1616bf057ecdeced1f603a90d60768dbd072573a60dbfdf4933b9", +"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "3d0517133c0cef58b6d8627527f3960f10706094d0d7113bc622453dd5cc9d8c", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1779de46a1d6549caf369e488c4045f92484327696e212ff679d6ae8b51a01b2", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "f4de0499dac628067619c6081d4ebdba0ad196af7bf9662c5387386eba9e9729", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "38a7eac0cf0be45770fb28da9c2f74bac6404e85f2a3801acdd4b0107d99f2ff", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "d39b3290ddfecd5a3ceaf249543eaccb2b71c21eb2dbeabef94fe866ad7ce6a8", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "3bd08b0f7ef6352c5a22bba299d4d65ba6725962426abf6bef48203ab91b9c6b", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "3bd08b0f7ef6352c5a22bba299d4d65ba6725962426abf6bef48203ab91b9c6b", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "312fca890a6e93da6c3705e3b3c97ba38dd336374634dbed9134362420273380", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a0757616e39b5883ccfba01af3b386d1fc2d4a00517b2c3d79519ce0f60bc5cd", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "b8ca0b72adfb0cfa1ff653c83a0995517b71f8bfc217753e16aab49dd82a3a65", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", +"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "0ebad19508c4746198a6728449e4ac0d1cfdf169db907e4ff1acf1ef7f37a400", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "4e9225e760a416bdef0b2eb1ac07489a7fc216b6a682f4edfd0a99dc7a0364c3", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3350934f73adc12375536ecc125f42631d0f17f37d5a72c3a6a1a062e9e9e565", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1b7584ac7451c9449962322655770d6d46eb8bd073e13b3aa605b4da5bae2327", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c7102bac98a0a09a46bbbeac4c980b4219bb63ac8ad6b1d80797bf9cd991cfd", +"T3T1_en_bitcoin-test_bgold.py::test_attack_change_input": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", +"T3T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", +"T3T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "8cbb24c33d0801c03ae2b009cca0b6ade37c5ff437eaa64d8ba640a3da8a3002", +"T3T1_en_bitcoin-test_bgold.py::test_send_btg_external_presigned": "22a3e3baf7afcecc5b457ec9f9063e4d729879f79151bc43e1f0738595207b35", +"T3T1_en_bitcoin-test_bgold.py::test_send_btg_multisig_change": "f3e442202d95479ca14b053ab801b8002f752be016aba1a6057201d74503b9a3", +"T3T1_en_bitcoin-test_bgold.py::test_send_mixed_inputs": "8e93f1dc099203ca34177de6bf7370faa7e846ecedc630b8a16194fe7819d4c8", +"T3T1_en_bitcoin-test_bgold.py::test_send_multisig_1": "8066b6a823c1d5e646934754e74ac85652285ad9fdb23a74bd34c9597f6e5618", +"T3T1_en_bitcoin-test_bgold.py::test_send_p2sh": "f4b11a171cf48210e50e7e45acf9020a92cec3ac854921de0c133f60e3d0a5a0", +"T3T1_en_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9360c9e41a40282f5ecf6d2ee91fad8e2c10ee3be6634a7eead946eed23f94c7", +"T3T1_en_bitcoin-test_dash.py::test_send_dash": "557a45f80747ccb6622001a7540273589a9cfcbbea18ba4a23fb92e94346ccf3", +"T3T1_en_bitcoin-test_dash.py::test_send_dash_dip2_input": "a0b3ed97530eb7d1a0af8fb7069deeaf73bc5624dee58be0c1ddddbac85e04d8", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "3ca9f504529fc7a320e464819c6a793c8fc156165a80db17ed8ef8c593bcc802", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "e3e3495038e8016ef1afcf70effe3f957ae23b95a515c3aa6f3736fb35c9a10b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "732b01cc2254e25d6d4576af99332e7c9f4ba42f031fcf13588a4a0209e51adf", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "56a011908b178d0deeb00b7596a93ac003892e0adbd24958e875cc9d70340d95", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "bf917bfb75a6e263410d4401774974598cbb3fbcfd04da54942d8d5f640bc32c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "3ca9f504529fc7a320e464819c6a793c8fc156165a80db17ed8ef8c593bcc802", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "e3e3495038e8016ef1afcf70effe3f957ae23b95a515c3aa6f3736fb35c9a10b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "732b01cc2254e25d6d4576af99332e7c9f4ba42f031fcf13588a4a0209e51adf", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "56a011908b178d0deeb00b7596a93ac003892e0adbd24958e875cc9d70340d95", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "bf917bfb75a6e263410d4401774974598cbb3fbcfd04da54942d8d5f640bc32c", +"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "213ced04e2b337576abe1861c11ef69352eb5542f2bef720e50d54cea031f9db", +"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "6104cd021625791fc9141ca802c3c18fb50815459acae06b2eeb05da432352f7", +"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_bch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "ef8a33a6700d369cbb842ef4bc0a853c10a06ddcff7abde6a1d84e7d55a0361f", +"T3T1_en_bitcoin-test_getaddress.py::test_btc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_crw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_elements": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_grs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "f2ba49011a093ad530f0f3c3f60e1386add863c76ff5e3587ac90262a9f4676f", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "0fe493c41775e7992c88e1bace001577f6d8737500005399cfd73522c7459b0d", +"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "1dae1e1f3127cb2112f58e75e5b6eab871da0abadcac14235b3dadbfe0d1da81", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "cbf5dd38da807d68f93cd9e276f8f0b7a92826e3e3bdc40bdbb30f4a63bcd4fd", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "a704cd1bed4d13c243f86af77390bf15d8287ab33ad0457eca6697ce68f5121e", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "40f2d6e630bc753de21cf7739dc290dcf809337d5e692378699c98572474afba", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "9cf15bac5348807d5c50a8c622e92df0dbb630ba9db0b8423cd7225d2f4b620c", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "64d62a9f4b02896b84d56c3453877f439fc56594b2832d14031d45732817f7ab", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "077a15a5492dea40d65896e4a1d1a17a175e4d85d41c66f44293872594663ff5", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "d5e4cbb3c97f8d8312002a2dd7ed070a1c293dfca4ac195854fb296c1c1112fe", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "277f41432b63286e5b3898080a5245b4c57045b51dde6be49467a1863207448a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "466e961281fc0e074f0edd4c6d7c04af6032d92aeb33511a8a39af20fdd18541", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "d4a50e221264e268a437ff4b6e5477de74729b1171cb7f1854bece821a46c62c", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "f5420ee7d27a19162d284b685a34fdc3ac296fdcfcd9855d7c9c00476611893a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "af0a9051d5b974cda12d13f1175f6a870de418708c3aa05266ae2f516ef0fea6", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "30f3f630eb68aeb9c9c8d67811e5101ca3e301cc8ce0ff7069b3e687532fca8b", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ace7260e65a375a577b0cf58c7c19e73c861a5e705336d772e4d8328796b46ec", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "a74c4afb2a87e09dd2562bc7650caeaf059552db544872b7704af9e51f26103d", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "6eb641ea4acd345143540a9985e16cf8569e957f830ac4ada79a949629aaf310", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f9c524eae89e19091508c9fc40e18a2c2f167a15f28bfd59ff4aad7bd80fa016", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "e9e1685bed4796972fdf044a84d24c95981bea00df672614cad8c2ab1b2c8e74", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "3a15c7626541011177bc88967c72c278fc229ad8ac131cf606c8dc1f48b5df2c", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "cbbf158f803cec0218cef4482be16b1fbce5a33c27d22089bd562cb8991f697f", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "0478aa33fb21365c1d114cad7bfb3c0270b20ffc3573d1eb70821101004e30dc", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "af9af600df851cfbd070139fdd4db6588e6ce4a116b45ca19a0068ce9d678f51", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "94d22e1a493fa8f3c3e15a65333ef0691fcab1594ee0e767773a3a90db6814b6", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "96ea93c13ca429954e84685b85df2eafa7e9f25afbc8ca77a88eb909bd3f7c8d", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a93a88119c9ee255e09a87ff1e9c078a61e1e7ec61a26a4ecbccf294a70269cf", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "46b56e80439b320688feac9bd0ceb440ff83cf5d1da51a6425aeb97aaf097393", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "17a274a917e5ff853a429561ef4dbceb12c41520c18714f3c3f037d008e5527e", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "2640940dac7119c208074f263482b66323ee2ab0769c2cda32b75e91bfe9f2a3", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "cbe6b393e10f5e4fc0b780255b19d46f53cf60706a2f2361a658a82b0b659825", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ba1c1f8dab1121f7fdba73f9a481145ff65e383763a24a1e66d25b2b4681c58f", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "62c493f4310b90d0082281c38acc314cfd059bbbbfe18a150a5d7236cf9e56f1", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "8ccb2c2222cbc695f5d49543e637f03eb69d60ea654636e0e8b97a0c04a21e52", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "cd5a286c516dd0bd7eb107081356863504947e9498a9d6b490760265c055c870", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a5f25a795619e2adcc3bedc07c6b12dfa605a9369705a013f276428a5a4f78d0", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "508a69027cc9b71d218f65a015d963f13fffe4bc9ad435f8fb12894ee3ae298e", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5f4e0c17cb3258af3901c7508968af36632f3e9826f6f63068b8521a4fbb36c2", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "9a31966c5665d23cb1ec01529d09cc3034116a28330a52608d9c12a96bdabe90", +"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "76dff54ff9086f92cd401fc9f7fdc7bb784e6c097d2d7afc0c423c8589488a70", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "bae7f0b63e3fee8ece96e59e5fe45fb50b9110e6af0cb431bc42a3f965ff3752", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "9b215d4fccdecb67001721ff27073e2cf7f57674713b086163a400315a0a3715", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7e60836a928c98fe074421708bd25561ef46d644f4cdd6867b9bc5d79c020f3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "ba55e3d330f207e211264d150ab42394ca033cf8505e1e02f5243c3d4cae3ca2", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f2c6c4c91fe5fb8309cb980779a6f7254124c296bd232ec33bfc35d448df2789", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "27a5b6815c3b8d444c4fd323a69782f40759e99f582c8f0131835d00fa251eea", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "77c39f9196a1ad8cd7972169854f7cb5f15d93d96c3eb43645c980d3dcd0e771", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "28df2e38996c9cdbf83b98a886c5fa3fb7a685d9e269d55b07035115ff8cd903", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_grs.py::test_legacy": "a806ef300fa0e8ff74828a364b2fee979a4c616b3b21111b150cd4dc92770674", +"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "39af05ab65895d138ed4a080393f3de3c15072980637d72a58c0659fb4b31032", +"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "8d7cbc9e1e1c2c7e06561563b5ad775bf281eb516c50b61e9fe44293694110be", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "fe926c9eea3e2184a8d54beee1b148faa2c778aa418e26e29089dd4284f87e87", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "d8ef8d8a6b9c94c3b25a45015a996a7ba31687024e68f91609ff0cd587b0ff1b", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "c52b96573ff1d0f1a49369298a69c1828e96149f91ff406cdcb43e61245f4449", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f60bafecfdc71ade91c375e95d0789878f7dc72e29319e257525719e55299cfc", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "7656cdff1d59f868ac6918f84908be975adc26d2a98ee9c9706d845dc8a2ef84", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "c2fd77b0242d173cd9b95e75c3ca94de10d8d8d2908420241bca24acaba5a010", +"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "d5938400d691e30dc969e06c21939cafe10dc82bb529f8c11019a2af738aac29", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "99c3eb14a9297b4d9caf1142f562bdab6d68a779ea4a17a1349d0ac40314bcbe", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "6b7c2edc4fb52dfd5d132286dd8f9b3ca84136a522c653116be6f194646bbede", +"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "0f230d5c6845daf73081e406e4dd5a0252ffb97a65c6196d3c856ece18372b85", +"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "c4d64521e603d5b9e3f86881f464be11334877e16923cc7868b4584996144de9", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "0470c5fa7c26b622c9407e4f957658baa0b8e462aa255b30514495ac4e4a29a6", +"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "34916d218a88982a0e031d3da676ba794357a43c13448cdf6ee064669fdfc9da", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "4f4a1630b3435b1755d1d724012be607006fe2c7f04e2a5edfe0fa4aa846165c", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "44d8941b9161ad7f12cb2e8f231509faf2e65dda2fba38504acb39b96311935b", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "fec43fa5690a40668ed2bba6d713cfec07ebc8c38bc686f82d9954f7e417c8d3", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "fccfaa06091bd0f574e4c78d6b6f89ab1842a33cc873ed60cf484bf33db3b451", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f3202ea515b4c5935c8ac5eb377cdc68106fe5f05968b99234954ad4aec25e6f", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "31755b656cad58d7d32dcebbf939797e416b37156a07e887b55c83f815e8968c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "70933a9dad255906242bebbeaa13246fe08feee20f6a4a2149541a967a0ff550", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "686e0a918898f62a77ae2fcc2ca3b9438b441416169d327a3518c5e917036fcd", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "aab1f46581f519c7d3d81aeab5d6ed8e35a8d492e95dddc918ca0431b6e8fd54", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "0d2fd0b06a57c3c275bdef3eb31327935fd4990443e40f40ab5684dbda4a768f", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "92d41acbaa6d69fa4512de55c3004b77701d699bdde982861740a25fe785d910", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ec02c7840205c63d6bfb9a7a5ddd103c45009ee61c6ee0cfccaf343e920227c1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d212479a0542d5f2fcad9876987db10f6e1c52b9ee13411b72fa8062ea5f73c6", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "f3f8cf5e56808b1ab3697a84911976d49d37fbe0c6652dc20c2ab11ef4177b61", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "af8a4f016ec79439685f33edeb4ec8e228bd72ff6eed4c07d7885eb44fdeab09", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1f12bb3af8bcf6a6b9afafbdf6ceba9674c0d2ef159fd75be949a60748316caa", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0c47cd2c13f94d818545f493b5c85788024a0667ea8682add50e474347df3d48", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "5b5e013a4b98ba8ec3dd2b44c9653c2eaaa7b5b1a949f9058d3f8da6500b16fe", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "90c5c863c822b85e807f1f971c707bef2c32afeb763d6898f0c9b9c33f26b5ab", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "8b4e69d84b57dc00839900e7cae25b1b9f4baee8cf2649833e467145b254ecc1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ff12de01723a4a3cf4bb8c011bd81d45b9f43254ec7cb0ea43556975f5fd1fb7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "4c53a681a7e094c59a52c8bd2536aae2fc192a3ca93546ce348b601383447135", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "112c66c98a7c85210d619c610e0943fc83677878116565b2e2a875f130f09e0b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "c8dcc2856fc3e7a31e8033caa42a134de2aa05d3144a8eceb0edd3af041f03d9", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f68f1130cf830aa8e6632901d834e23693ec5ed111619c83eae12ef72f2a3609", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ac684c8ef0dd6f8456ccd70c955290720abe863fecb994a50c6f548111178f06", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "2f95be5d0472b94ffe051d5753b9ca68f95b245633d8f76289f2768470f47319", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "73857c4de7ca4572bc7f9f428eb23be495569d938fabd35baf4e5bd04dcc31e3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0ffdf6683c3dace1725827bee5e0da3c489276bcc0f3cff411a4a848bb7a2ec8", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c608ac3b16eb3b1a9e294a809b692c5633ba2c83681bf55c85b4c137bbde5810", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "fa9fb399b0fd4f08e344e7581419e1b56d34995650a818f4e637afe8e3f9b3e8", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7d925ab9aec530d3c863f97174a5c837e32f6044c023f1365cbae7bc75cfb7c9", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "56108f83b7413d2a4b22048caccecf55911c13b5f1d946c40b97ee60c8bbc429", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "0fa3a45f6b8d31955b0e9aaa68d79f5948a7597901cfed56aec1a35ce57aed3b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "83a6b8ff9609f07a0e10d5c46357a0c3647fac6671eace084f0568f84ff6d5d7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "dabd2e4161c862f8b45e5793523c0496a765b247e64f23e202fd2432a1a0e94d", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b62ab2c91fa20d09ea8e79a18904f3ae4465665b4643a1490cf6c0112876d2b7", +"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "b4f764f46970686537dedf7acc634675ce8a92e98fe99d2b19d766c546726069", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "638313d3b73353020ea06a2c34c4b14ae87e864d7c027a882d6a55330030c6c0", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "f524a9f7ee2fa91105477e0d673e3e5c5e1c1a13222d20d46ae2e375f9921c3d", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3c538fad2bd6a1fd6eb3c088d9571142e194e25c53b7f19abff1ef7e03040bb3", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "bec877a114f2b28638caf4993e6ac8f83a19ec523b09a210dc0b817b1acf1a26", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[decred]": "f5d7fddf8c0dfc802b58e565e826cde2d9dcf035c5d07539d16dc01e2c9732c6", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d9e1788e58374fdd27b7fbfc014b8dee59948938dcfed47169a5b2acbe380e02", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "55f230ea818b01962d5f545f49e893776fa5d6c6b2bb95c78dec22b7e040b4ee", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "103ebfb2f9506a61f3ee1f25de8345048318af26666c0cfd98b25898efe6125d", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "7fff8e2f1f1471c82d2029ce0fd26dba010fa29eb074025f14ecf154348b6442", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "f38bed10be867b76b284c718033e7d6de592925bb0211e04afcd31247c334f3d", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "e500416265ceda3522cfcc85e5640197e53d5eb2679bd1cf3708f62ef4af1abc", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "30e5354089ce5519ed95646fffc9f3468587482a19b81163b719d253421e3645", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "20d6ed18dd6584879fae23768026fc50d70874a5a68c595251a256d320334e56", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "cb14f397c92ea679413d31b088e6ac149f3ac2406f28d5c07ac939531e1c3f7f", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "0c706c1b116ead8623b6b667e57bed1bd2a43abd4b4eed510d025085a66a3e4c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "933d9466accabf431929e82499f29c29b37eb39b0cccd1b6a4a9b022ed6328ba", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "3961de777b7578dfd5e500285177284462b03c260f2a46f5827bbad906880b5a", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "2b83146021fc6d4e870ecba9b79eeff057e51f1b92e8f6119afef4c7f1a090b4", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "863ed334a92063c27233556e2ebe71c658d99d4a454ea2a7328d97200b4b65af", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b25d95a6546962059efc4b3f7749546a1b938c6084bd52a2a62322cfb4e522cf", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "382511a667f1cb2695c1fd140c3e1960f64d034c2cf94f39c017627bfc2d12ff", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "85a84af1b63221a1d0aa66e59a6323e67fcc25bc0f9599eeb4848f602720c3cb", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "10a6cdf39c7d1c4f90cb7b741429c13cab6cb6fd0ec082a82f22220bab185756", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "ba43a9c316206f12559022c1a6170842b5abc1e4b9b31c41cd183ef71670f785", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "ec4a77e34885849a9302779fc47e260c4d943a2ed4f8e6f962769a538261ebd3", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6fa6739fafc24cde1d9c820bb5dc6abd94a11283fbf40b5967a29c34bb60149e", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "d9d3cd25802f3d429d665f1c987d4f895bdd03ab86f13820282b4667991b9285", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "236dba354336b318a77a8de3ef74abf6fc703b6e044630884b581d72ea6d0963", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "1333ffd148cb092b927ee65ab020151a0da3ee7cb4e8166f097b1bbb2e7bea4c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "590a9899c3a3ed23041ed483df877c61e73a4040849c28d9a3dd29db76a1f162", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8738ce1102d51b8ba5ee0323b89804d1706473051fa0cc2c9c34c62d8c1cc2ac", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c69fa09b4dab1bafbbe38237d72d5ebc8449c9e188e6d4880136338c31a1431f", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6ef0e5fe5f520320520fc33df8d91d2fcad0f8863c48d71aa9428ba482156cfe", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d7944e2882a1c71850f6bc087479976e7be548f01c4d7907776fd98b6707a0fd", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "01658c7ef419d543d2117053de5ab97e6886c8957a3623be5a52c5b1d66d8829", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "0da2f2b6bd625bc5c8f9982ebd83f604748059a77bc1a49e857a07fd24968a0f", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "705b683563a06d8eaad242a794e5c8683d41d560a9642761d183e79d85510bd7", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "406e9f0bf3be42d1f41176b0d1f97b7286e834e1d15b5397904f981cea9fc5e0", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "24ac4be4d6bcb7cdfd372bb3441f10563e13fd684ed3fdcc79c0c8e97830326b", +"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", +"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "eb0077831dee4dcb6d6395d01ebf1a4eb78e05f6864cc3247e5c05b936656053", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "ad4a82fa012b89ce6a027b88b3170504f5372b93da947517078edbc647b56bad", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx.py::test_information": "44e044c3f8b299aeed155f0aec66f60510aa7dcd3986d340c76ef128de6a428a", +"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "d242ec98f96d0db41ebcd7a44ce31bac38637ebd1103727445a068118c51956b", +"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "c76e1d787c589090bd950101fda86f62dff83e70d4f879ea1fb0519158c1e95a", +"T3T1_en_bitcoin-test_signtx.py::test_information_replacement": "ffce40135620e220930713ec3ec9554e6ae801aea34235ed0ff89dbb805c891c", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "924ed54c06fd791910d8a43e0b7c6f39852b3406167045211dca4e495dc69b05", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "2dcdbdf6c4c2770d05b751e1ca1f1e33646c3f83227e298778ce5bc1fb919bd7", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "e66b43aa7930e28285bcaa14d8ce3a1787a67648c17e55115722a2f90d375af8", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "4210ca2bfc63d054923e03cd9e12a643e0f18a37df2045749911037e262fedf3", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "4a3b8660ac30c4c91f5dbc9b58d02bc8d60a160ae255bafd3f56e4c697afa183", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "6b48450b917351d6f25753b29b9df6663c1e6dcdf6a795aae5986992f002b30a", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "e198a73b60c1938810862a5e479806ac4d768f42c76e410e842cd89b66e63093", +"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "033c92c6af972e9e31cee0daf55e76f82015b960459b91cab58535b27711909d", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "3516df019ae876386583e8176957310b57a2a37af3b7eed728fe4c7708c69e2c", +"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "51d00c0953cfac7ff286cb5117e56dae83e9ade576e77f3be8671ba7d9f8321a", +"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "6b705686dc78bf72f8e9ae125b0bb775f814c2f517052cffd2cd3badc9d0dc3f", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "05d642a9018b50279e386b000ca5591732677370d5fdf1685469ae2406b3bd4b", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "85fe2a297d335bfba11b3e9e01a2ec2c9a30730ea06b967983ed4f4502323698", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "2007e7cbdb14fe7db3c745a20157103855ec65cb932ac3f0c613de26e3f7dd4b", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", +"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "a5b47af1fb057b9384194dbf35c9f8de47c793eb26511028b405be06f09aebae", +"T3T1_en_bitcoin-test_signtx.py::test_two_two": "bd1e6e9b2f4704e1baf777a41e6f1e576be4cdeafd718e454cad973de1f0a9c8", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "73c15b8ad493c3d7b1d9885fb1dc5a56c68bb6a3d4ec9a3792c03be26795c182", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c74d09789466f3e48fa92ed5bda1e1dbcf7d9afc9d16df6061fa82395c8e89a5", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "f09a0f6c8c10df04da3ceb63bb4d054fbba4fc6275ee92a376b53d133ca648e8", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6ac68aeb33f8e70ed439b3be24f1bc29beeace17a0a5bf2fa1ca89852d1576e7", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d975014bdaf34bbb6e48553bed41c3544529e907a02cebce1dd730f1ba38fa3d", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "cb88988daa8afa19885d5eb9f051a1420a3a667b429417e1d0d0a6db6b5684ee", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "5faa3de360408600bb51e48b59c9be7910340c2697af97ec7b97d64613024d2c", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "8a025c4a07a30fd24274bb200091cb847810b07db961c8f73e4f5ea79da9cc9d", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "7c861af51673abc3516f25cf2f494951cfb26422886b5359b6c0123ba83b4e4a", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bc76b3b033eab274e39d8f56846d4eb1a6a3cbc97b2bb4218af62840a0d294f9", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "e630e07f6ca5724a6aa53b31b7b17ffe347d637be3f54f3a51e05bab8cffef6e", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "651b9abda274123014f55118ddfcbf0fb08ff52377c0079e5a4cf6b7c13d5225", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "191c9bff9eecd6ebeeba1d3e1b1701d9a6750f1bc9770f0a886936e19f6a689e", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "b0b065fea6ca2acea50cd30b4637a4776688448ff0d86411dc6957de652162b8", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5386d21e156629cf7df3cdfd98074357d93e025b113f74e89f271f4f847298cb", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "950ba42994f18ee1b96786c8d49e33449b674ffff4715319889c9fb5f34a234f", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "4c3cfdccd4f2dacb291d0b3c6d87baa7cdc8f9afe4cc605d9091f9ded9ef00b0", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "b3f3c1221160e0d9bac89bd44fe10cb587735585628ef6c652213ccf2d92d60f", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3278de4acec9009035c80f1a9cc4dad11570582fa2eaab30aa7c034d4f8d4371", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9b9fb6db5b35261355f3e335057b7086dae18adb09d94c446294004bc4016876", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "da892ff4e7de75f6b3c1fde48c915b4cfd9da2c3f0052552ce0b873c85a539e7", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "768b6294843581c691d590202a8ef11c0040fff3189a9b0cde91b1a49d6df87e", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "23e3f995af215af80d9dcdb00189a0545a77a40bfe55e195566ccfe41f78d2e1", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "da48ca03cffd80b81d5d17cc8f967af2ea82784357ea894f20bf49d559916feb", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "21aac16e5415731c271adb2e145ec9cf6313bb1205612b74f885a839fdb26c74", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "de1b8868c3ef6abd31805540f4bb73b3693bc2ded0acea39ee2e9aa44c131a82", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "66e15e830579ed547e8c28908fcdbcb2483658fbb22ae138764a594c82f60053", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "fb9f7cd2571c2c72c56968c57fd0ec16b83d3ab9f0f5be9548d055f37e3f2bb0", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "1b0378c2a799b0b890f1bc8652035d7284126009223f976e5623fdd0a8fb006b", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "4d157fa6e9c1da33a59735186b756adb7e02189efc642b7732b373b2c7e0bc64", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bfb6c422e7a8aa05e5e71501ba640b4f6008684816efd86337b46afe6f75057c", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "557523aee043cdfaebe92f63dfbf89d0c7d4e65ad583471c18b91e66a067377f", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "9362fd8a2a4db51618a4be853623a75e73541aef5d329b2f34729831a3c13bd1", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "685ae658aa7b6d7d0e450798dfa88212241f89dce943e2dc7733e9ba0f32578a", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "a50dbcdcf5dd7f0b4db8534d67f3fa4c079f37087ab71bc9541a652514acd35f", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "6ab1dc24fa8dbc1c88a9937882069b33f0d5f0766e99faa7c3cd83709839a98b", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "9023903d91c453cfa696777db99334016385832fa47af3756a1aed58d097ae77", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "f170d79bdc23af7161682637840abd2d271cb73dfcae575f0fc8704904fcf604", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "602ae135d5f67b9821d28c3dee2e55c0b30cb6cdbcc9fd7970d8e02f06cd6b7f", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "9aefcc92153b1053449dccdf9ef3abfe1c9cf82b777f22340b434ecccb564695", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c4d99122211e001a4dc6c421147dd9673f3400af44b26900e4ce1ed49ebefb54", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "27aaadf7e3dcb1077651274046e4a4e53bcb708e3a140af0c3c4f92006d4ba98", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "1bca15e6a93a162199bdf9155e12a23c34fb7611d395ee1093735332b3741a5e", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "72b94474858fd569d20de2a3324f5d7b04dacad3829c4a4499e7c26bfeab49a5", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "11d1bfd3051ea6389577abd22bb5700eda61da7749af3a3732df17f24b3027dc", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "2b4f72fd6274d1b3d51b7e4de1801b4a1cc55ce7e2b7bef9be152347a1e39ee1", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b62b6fde11bd95904270d2be7127728beaf9813cfb3ec94a1e128fbd19540a16", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "ed223eb647b50559e2bb0fdf1a2027d735f9db79683dbc53df567996a0d8b180", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "16d836480b99974630adf2a6afeca600cd9dec2343b686a20e3c2b5d854ad8b1", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2f6a9c1392ba334cfc9987f68687d32c12558d08985e52ad71d0424014238c06", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5647cf2836afd54d618f9da5820ef73071247fea8e50c87b5c2c91c733902321", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "d5fc037cf71574e69859ba782ec1a03279acd26eaac25b934a4d913230931de8", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "06ea8319a958a624a9febc0d79de37e3034753924b2ee015f2cf0ec3995cb669", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "1c2e5c70e7a94d1009315e2dcd147612d848e320ccfa2eeb747becb4af796c47", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6abb97c5b7d3488b7d30018bf970507ada2f597b6b9b62ee0d9beb5d422e254c", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "2d6f85827d80251c7759b5ab75ca65640d415d40877ea5d64a677190b8715f69", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "fb46ca21976ae67dfbe73f5057ff0304bda4f4000c341fcc8bf856d23c2d177f", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "0117f15331639fd915916dc9fc33df1e5fb6ff419d7835c4fbfa63f0f448d5c6", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "fe2bb23c5a4f45d8abfaa91872c6a5615f03e6352d8700ca8b9c9cb4825b47ec", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "888422306be9265dbff77da9f74faef242c77304f3dc29b874a7e382497f7799", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "0482e74cc56113072a40fe0fc9c77266f824e5bbd40f5e0456ea2e8c05045c89", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "cf22932a05a0db1f4113bfa793d507009d90a48a8deda2b057b35a8bab2e56c3", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "3e2a3c1a7b7be9a3cce9cf94d10361bc12bef0c63b1ff8e9d08202d8e876dceb", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "ae1867d920f8e18e277e03794d0566bcf1255f55ecbd8ef02bd7cbf8f14e1239", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "6960accf077f4a754bd318b210a10b7d00a5f9406bddca832ba9e2c91f98e7ab", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "b1f9f1864b9f327518c1ba3a1770072bea7d40c5bde442202206e2fce52171e2", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "e600dd4ab19d4c55169cfbe73998fd3294a1fab45a1323289478b6a17b7f152c", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ad1e3b8a0d1738020f002bb24824b529fa8ccdcf52cfcea354fbfc9c88b9961f", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f37fb86060db61d5d356d0cb2d4e2ea5e39172b6f314a63fc3d4f530f5c99beb", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "93bf717a8b4d4371af323d07f0f4538539a5199f8c811d402445a4f08789abef", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ead03a1ab9def68c0c41471fc02f346d6dee943c9479bfe24d88a22e897bee63", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "0a7562efc888c57ced1fbcdbea8255bf604ef167098969b313e9a5531203670a", +"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", +"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5b0b0f76aa1fb8eace9848f3dc9fe6e3e4730a85de184192fec9dce364bbec36", +"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "921df31d90290b36c1c650451c4979a85637bbe3e2e918d09d826e63db9eb597", +"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a793235b055146b364dab3842f1364f1d73a0622fbb6f2688463b1eeb46155c7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "b7325f5034455301c16ed0ee5799bbc26669eff127139198c4199bb94968a385", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "28383f6ff4094be8d3ce786556bd40fc97c3ad0b4c5879328824084ab4317b86", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8deed6efec61f0237dcc1e5048492e01d55c7bd833f2c70e4e8fed46e836ad61", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8ed36af60e84e1e43cf6d4e5c3fd3fff0125005ecb86f4a78e240f7837e777ea", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "92b06620086f0cb3b61937db9c942d5eee357efa3fbbd2f86781732f2f692f89", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e02e6bcb1f9f6ea287ea5282600f622d52522aa463b48cdbb4ca107201e33d2d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "115d5b4e020583299b990d80068cf91c7cb3a66a9911d75ea1b6edff41e18a46", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5eebe2c33a6cd56cd926da5a8b525d862997df17846ac49ff137947a5034ef83", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f7d576e9ee746008a36d2a19ec7832cb2d107193e77303e5865ad4e811ee52ef", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "23670f641c3901310bfb3624875ed6188b04376169062062ad580108e4d85052", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5c193e247cda7df8cf60fc1b9a132bbe4f75145023aea5c48fa0318b84f3f5c6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b3f09e86d3eae98f8aa2800a78171e19a3edd0f49aeca1dfdc9aa6a5e08fdf5d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "5e926670cd17c32366a14ce859c41a8d7b803991b7680ea2ce2f2aa480a17821", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a51ca1c7df82ca4094847a4d1ce3a7fb675bd52e105e07d2f494631d5c6ca11c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "530b5b42f2d947a67c7439b9af31393ab42e70b73ce7334dd35b0d4f7fc6680c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "90dc52fee3fda8a08ca0b5ec6927c56bfaec144474df3c3184acf9f327d4aea7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "894a23c78b4f72dd299f07e7fbb21d1fa3669ac5921acc2267eb6f40c8321b96", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "86a2724d90a4b32bda758216b1fb9b1b609df37d32031af08e91bfb3be40d61d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8ad632a79decdd304a270a9d0275ab43433afc24f08415c0e2c6570230af2a88", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f68ecca4dc2ed146c83220e67db6bdf2d684c54c73a243da05fdd1efedcafedb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b841eff7ee1d641a7796cf1e99dd260f0c176343ef0bd8c7bf697769430e0d51", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "6176161d5744d832e208199e964b6452bc37d782654ba55d361ffeb4f0fb2dbe", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "edb0279a09e1c36eda30a3d48f0de6f547bc6213fa588fded78c03c7b1cb5630", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "432be76a7cedfbd3ac00de037cc9074332105770318c7b399749c7551b0b24ea", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "5438e6f171f6a376e8832f50fdddb5b9f584e55018b85fcee8dea962b152ca1e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "79c1a4892f1f5c60274e3622a58b0479a678c3104d3677d4251c56056629db12", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "911f9906068aba634eaed98136bb4e98c4a7b1bf3aa4fe1390a872f1547edbb8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "e429457e523144e8ea90645bf6dec8ee105e02d18eee3c4ba414c311e1ea9c5b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "42dfa0cac9ac525a24d7a1770f66d1790352b1900d614a50faa24fc7a07d9f9a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "92a896d7018181dadd4c49d4d01639d8fb454403066afff75355d59888c07b02", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "aa7b2e537a9c7b9510f8298543161407ef4596088fc9c67c57f9a014b97c000a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "4ea97f8df29eb686bd4a2ac101aa6ccdf4f124ab1e2dc8b913b36e56a7950d43", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a3259e596d5f8c4ca8e9ba4de2f14fe30d269a4c3d011778b84f73ae4a4c80f0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7fabc235b262cbb2fa45e42aeb900bbc1cdd8a684d2ad5e08b51fdb147657990", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "c40565fd4fdcf558c29c67b25e2aaf88e1e41c3d35735c344ee09ec672cc1266", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0053e85ac2f8d5659d098f1d878fa7e37d712c79d3bed8a596bb639fdfc720e3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "37afe319cc51bfd117eb04d350e1d2a174030d0f21723eef23ccec7eeb887bfe", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5a9e1aedd3047e3f741f88549fb2497e2e9216ee326553efd146ae078449a5bd", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4b9aa38bea642c08c31c946baf12ce209b5106a5d8894939def0d899c580a4af", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "5dd80af476ecb417881167555c48b0e267d575ce29f952dba73158861de802b6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3acdf363fd73843b24bcc482bbffafc0f38eee9a29e1b46a2d101e19851b77bb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fe53efd4fb003b92c0ec7c73e4f5bdb4e37cda1b42bd86c319328d127e4074ed", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "e8f224fe8adedfeba19c84716af802720cb4df5bb2e346f58b7e9daaefc1a129", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "dca5729b439904a756b21e18660a933446881f9d4fa47b2b579717b9d6a72e52", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "9bcff6602d53b7ab987fa11da5e47a6dd4c1ce458af332acf93e8699709cd3fd", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "151fb9e8eb4eb78c1433de17883440f658661137667733b78ce46027e29f856a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b75c9f7cd0741200af7dadb268f07cf29bb80d1b6b3ee5d7b640c31b5544f41d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d0aa6f83db15be9e81e663daed4ab2d08c7c4f50fe3947a95607ace47e33dfdf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "0f2826893d63d9044ccade5681fc1c1e1bb132fa18df0536be1809333bdd5eef", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d42e55cc3b2d396128b774a28fdc7e02a9f38497e5df33ba8bc544752e331766", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f538030a0b25cb9b2a555f52d1e63fd66dedfce7eb0544838270f1afe3feb8f5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "96c6fa4c4dc664ef49a515f2ad2a01639a20d25d28a7d93bea76e1974e171d15", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "1b48eab06b558cd524f5741db98497d0eb9843f3d216f24e73c904b6ccbfc0e0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cd625eb49e2df164c9118ac74c8de1926c722b72c6139e3c5984f5ccceafcc55", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "321abb9c816c43d6ec44ad22188bb835505c706df4f9f37ea131e82dbe83451c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1e53c7f2c73c425437435cfc4b02b4240fb1e230a221ecfec39ab09d8f4161c2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "2849e68d49e69c8244813885f59021cb993c2f2f29110d3f2e129f4610827ae0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "44acac35409ee4a055229367bfc80d745e4847fdb631edf7621d47d7fde7d34d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "462b2be9aa31806ba6e30ec00b8542ab263b518c9871aeae10506b6b07a96b98", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "45137352430b89fee0dc777574b3c3c12b807979a00f277bb2e21bff2ad1c8bb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c8a2b7c44515e1faaa8269ac4c60f1f6c3d22827b924fbd564fba3c8b63b0db8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "487484df2758c739067062dc2b9e3080a5e04f8aa5c68ae9277060dccd1eec36", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "7937e85284cd08917b7db06c4feea5da46f923907a6240a86362031547841b43", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "faee9b0ccb1ee2b76b8fad5e4da9d6d3d8a6476128a0df91d0d47f5dcef89320", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "0644211c8a04a5ef6bea4867fa7f4d008786bcadbd4a22a2a32a8203ded4053c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e03d2e13242ccb5964145a256cff5f0d8ecb902ac8f040b6d5dae575be18d262", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "691b3ccd065e0ed3fb665ddb6e1a6cffe67d7fe74c859f677819efd8030fea60", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "dff434abdc2e025c5de3a4bdd0a8614f58c27d3778e6062e951244c9d4c5f2d0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "97e8a0674c484269b3755a87380859a3d0cebefb95c4678be5acd7e4b6373795", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0d572466e8578b2bd6152e3b20ce33aa9ba69abd7da0e1ccb522108484ca53e4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "361e677305d13f75bf0a71155f8f384cc7a85a53d27d92b662671354deba1756", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "a954b7609d2c5a898ad54f1a15c2d7f190d4e2fb5eb828a1d7a2ac107b87f10d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "abd332668db3bf105d3a8e55fa1ccf90b4f1acb62e5d1c2860f7ee2599b80534", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2994c65408ded3a3a389cb1d3fb7fffd72f6e24aab6b26f6eba08315c09e9444", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "288e4e13bb3a3a7948e925dcbad8c61cc7245c52409818bd2178b49f0c230c23", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "614cc13a64f35ac3247b83440cdea22a18257afef165fc54d41917500cdd409f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "1c4bf364e403371d1b4570a6d7a2b8f9ac231851cbf67f56f64fe350e0edadd1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a9958771b2394aa3d6488f5d28d0516fb2632997be4ef3cfe272d8468b475e70", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8281c20dcf6ccadd0e0a0db53adb4641706dbcb48bf685762173f5645abfa39b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5dafbc14364b371d938a5dbf2dd1696958dd68fd2f10702dd512f5bd7df02602", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a882c9e5ffbaca9ec0e7f0fcc275270268fa9ef3c9ed135e543ce39af912cbe5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "d3c1b530540a57f50020e62cd9acfe8c2d64d8c1ecad74226e9419876ae73f16", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "262022e068ac3dcbba07b3451e9b670187bce739b85cd87835b18c544ab66b10", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dd731124e63c9856d1b3ca05f5b11d922b33bd82db7535f7fa8b135213f648cb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "969a01934c3f20e57c1ef3bcccf14499c15621489b67f8e9831dd7365ae3c130", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1b397226957de70e91fe48344b86beed80d3c21fc5bd2b6c2b38c1ec6d6a35f3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "99898cc1734fd63bf4d7906f30087e77138857371109b4c58fcb0aa8d312476f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "bd9d8a62ed8e4bb8dfe479f6c14d026b41a8b5f8d9a65c21784306dc208f4cdf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93a3099eba0179a1ac48e751a7140dedf77cfc572fcc90e8fa6c9f110ceb2b8c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "027943246f0638357411b1195bd35a2f0d9a976449a7efd3d8dbf26b8205410e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6173e8a3a2165a0f54bc124bc505a7ce9aeefecb07cb0803fa22c7d9e2487d0a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "dde7f3743ec2e9bd7d441b2f6970ccda38c47242fd64440126ded6f61825f756", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "eab03e524c6cfe6f04d0dcf1a7010faef85d62720f9d8722e6e137e7f05abc33", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9859e1419d1a4aa46be81171ec835e137184d834d5f57ef37e918061b485ca8e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e48073cb63f1bcac2d7e5f8dcf59e3dc65edce7205eb0f410f70133d28779130", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0942bab8dc494e8527d4ddfb9411e43c43d5960feb16018cb45c5ee2c6f57770", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "eb01dea0983af584be8ebedacc140c9e5d295204c7f43f604122abae3ffe8f82", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "4ec3428cbcc79e37db158ec1769f751044b5d3936bd057215c2076ddc2487e21", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5598cb3d539a85ee72edbfb70583b43b236e4638662de28bfb642bdd93a6fe59", +"T3T1_en_cardano-test_derivations.py::test_bad_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "bd5251d6b4525252b16983691a028174d6c083b2c062bb076d6e2f242e470812", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "211a2ca1fc8feadf49d0212d66c4017a12f6860e479cc9da494d3a2db9ee4a40", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4e93343b9e86999504bb3b8e423c5620eb53c86a9fc82f47af142e18d70a457e", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "a175d8c11f1e81eeafe332387e79b3f4bb056e4b1243daa734ea2e9a484a449e", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "aa80e685410e23559d8273af3e08e53c499326759206e52fa45556b02f4abeaa", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e754f01cc31ef7efb83621473556fc0a2d81743594ef62cdfadb2e8233c12ca7", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "3c6c11eeddec4f0438c5180ce4cdcbf69ef1cf04470e5f0dd38a53e17fd68203", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "81005c114bdbe998054d6e94b60bad71d98e7d38715f07a38fb64ce0719bd9b7", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "d4cb9b8254b7f5d42b6440d6c1d8c7ab4802850c0e3d906b4489302da43e9981", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "714fa46f0617fc163cb8b7fd2f947f3db9e2e7f43202e77a39eaf612eb3b057d", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "48a066f73096f96a685337d3942ada9493abe686f5bf70a2a224a999ba5dab3c", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c3af0c697cfff8e404e6671e5f77f3b556386fbacd25eab158d866c21c6148f6", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9343101c53fe8b7360ecd5a102b3e507aabf29f37eeb253df3c88f6deecacb7b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b67edca40129904893563b0c85d2c86398a078cb740a3ca6e23d6489afc1813", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3e13929eb81c8077e946779e4ab3b1d3b5a461bf5a4cf3a886d6ac0a1d5297d4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cfc2ff70d16e4b00becc081367494ef3ea66f2702b318752077ea1002e6aa972", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b37e039e74b17959b0d2f13d60bac840956b655b93d8395b9dceba54b4e0e504", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7572d0edd262f438a53b71eb79f311c0219cc472613492fbc72797d879f5c1be", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d9c57a802003857f97ffb5eae4a42f93d745c6d574dcad17ef5408bde9d54b36", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "960cfc6d88ed3325ec564aa9365fb20f489ad0da15acfa2d9567860e798acbbc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0d1f0bcc4aa3fb97b6b2cf9748a0129fc2e45c234243da40b5fc19c34f093ea0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "31541c99c75d9ba3cc057dac8649890544313ee4dfa8040187238ca3383dfd62", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2395691691124886700515d814ac9839732a849cf5d96b8db9acb196c5289d6e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "f73a3e9d253d92d0be75e8d9670f57cb6306abb2b89d5cdf043adb7e1b4889f2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "b930f013a193eca96f7692223256eb858c060e6b15029df322c7d8d9b6c02422", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "fa3cb8592caa01cd3f4121dd8a1870f0fbfb2280ef5bd30224bbcff6e98473cf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "9269b9465b1581f0629cd8b317ccf57b69b9607a926f01d982d6f6947f59fa90", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a6ef1c68694d404faae26fd10c501debf48d56df64449ebbcb4dd43a5826a210", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "3c045328c328729ae658fe885d9aa49bf39af763febeb0e7826e8cd18cb4b5e0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "585cd801813486920555fdad9184439b3b9802f8eac82f7d95354f6a34fd6969", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "48436be0688c36b7a7b372339eed6eedd367b42b2429c2410d7dd85b28072323", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "5a20fc3692a0f398948ac869026d8ae313577495ad804ab3bd09638e0b5974b8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "a4ec018180fb251666cca02e2525d98e97fc510313e2aa44baa13fdf373f33bb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "97c3bdfe30e901bd5b4938e4dc19ebfb788ef2b4166fd77aab99d1af1e6d102f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6497a875d1d188bcbf0293e303c9cea13d26f88b12cd1422239b99aa0f2ed3ed", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "31ab7ddf5da2bdd7da4f20c39ae566f0fffd3e84cfa7dbdbe7ae2916482809fc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a1389ced8400ae5464f921d39bd388ee855de605343c71235097dd0731820db7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "8c7a81bc9e9e95cd987b6e61036c95f64818b7c1f77c684aabf78297ca2a5ee0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2c4a8063b68f4d1c6b1b39f16cb39c9adc7f0b2176d39ed4e56c12b7129c21eb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "5c53c3396091ddf0f8a716f471e6c2740c1385a0a04085163299c1ceeeb89092", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a4114ed4ac01babea79a34adfbcc0a74b85f4b713af6ee8cff6cc8397c57e59e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "b69e40793e7ee2df7db1cede931da022fcf9aac5dc71774732c542745ed86450", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38bc1a59a58e5d66e4fcfd0ec815765445ece013a158997778042417dcf236e7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "94178bb10492c182aa49e0f3c9defa06da9a4a9029bfc500438d2505a2ff29d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "3dcc07313a80489e31e0615944cc196d0fcc8970578476b562b91c367e282b09", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "7f0b5327a83fa2f80c83beb131182000c2d20bbc18a563ea2e2bb4783f583119", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "6ec6c8869de3eb9cd36e821a4b8509331ac4b4f49263b2cb5d99730682ed713e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "f79ab687372b56b3a554af84ae69fdd56c4835cbdba79793b80e54a16de27798", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "b588d1972aba821545fcf4b60c308fe945fa907f087e2db280433b0419156b22", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "231ea4e3ead93f6785985688a996772e6d9d73e008b16ad08aa2e077ef59af52", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "b775180796400c7e96abc5c8d07a937adc0b1506e21154fa8a6d2a1288df30e2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "742d2ec5dd248038f744bc22a63246b06e810e88490d162dc8afb2c3a17a518b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "27eb9884ece8027dc01e64b3367c5ae79021ff0b05277d772869ea1607a7f111", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "10f5a3304c468fe5eca232d508e427023d9276ff5f8576c1c5df5e263599bd20", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "f722a2a9d9a92911063f262e8122896ef129b15b6e3e7bfbd7d1773eaeaf5890", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1df3cf734d6342f74cde5b48d78e3a260be7dafd895c57cdf88154c9b6899d33", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "eb632b495afa606d4eb03d0cd449859a659c5d40ad8f6ada7b33fd59ef163708", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "399d21207fd15392b2b1fb698eb1ca23330e14cc400910e8169780dbcec22b67", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fdc2b395cbaf01587842304f4554246eb8cf6f39cb3960d34c8aec9a382f5328", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d7ff337c6fd0c7cba6f1d9f66fed32eba55bd4416178b14ba14de11352b9e3e7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "b182539ac4d8a70556e2eb004723bc07d8ed218e7239a6e45f482e65b8b8a426", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "8d45248ed4f81d0e42054e39041a1fcc00863a006144147c9b0d9842476ce7c3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0f0095ba797fc8998b0d45ae32d88feecdbef4b99041e9f68ec85c0a172fdaf9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "0dc14651ad672280f3dcacb5a406444e5e1c706568fd390a54fd81f25e081197", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f5d2d5e4b29e094268b485cfc59d6faecbf09b72bc2252e14325d7e4a53beda6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "08872494c7b3422048efd15aa0fb136fbc9742a3229b5d129a023add1bc0751c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8433673d18ec3f32bdafa4df6e8936a03831354ee91b597cbabf0cecbb7eab91", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "abb29879f4bfc730eb3c1273082f5b9abe106f9eae3b3d3e363a0061410a24cb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "d6b60d525662db4f50820dd2aadbf1751d74640262ea5d36c59f7a291b64ec14", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "da0e65e13123933d146e70d198b5514b6222ac170939d4fbbbba84a06f5256b5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "64e61dae2757cf9f237493e454ae527c77a0a108a1fe9d92cdcc561367a7be06", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "db6f5d282c4eefb95b236cd1a08cb59c94167d9604337982ea5a97a306b9502a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8595d86f024902af417cf61d79752361f991e83dcaa06653ccc3e3a5bfe1b03e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "83f4c429914599c039dc8cc49ec9810670868a585fc968de9dfb1efb5c5927cf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "04ae909cb1220b008e46f25b0f3131dd27ee97defab647744f412ac6e1c4d3c4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "1fddb61e3c3a7fc0bd764b534a9d836a1d71256ba213138ca7e71f59f59e2519", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "210426af15bf66882c21b523bea7522d93f06f0a67bdd9ed59067edaa1aa07a5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "11b2bd7e0bff71be8c9c271770b59cd6b8c02d0b0500b58ebd8e61ca44768491", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "66c962ebc60a9d2bfb0a20defbcac98c2ebbb181628105fb89661578ac6479a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "086ceaf6c97354ed2de94ffeedce7a51c86dac8b6351228f692d6c59368ab0d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "96581a719cc8a8ec7d1299fc48138ace97f740645973ba08294439a354858f73", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a8dc52d68ddc7b418dd86cbaddbea42a45bf722e25fe477e24660123af8eef94", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "759fe8fda91115b4f75f56e4f95cc52f58ce099de2ba466874e23a6c35ff3c6a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "945ab62e3008545dbb6d6ea38595fc693844001d093c78dd969a7b5e1b67f1f3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c93d56711bea6a2317d8e14d4f93a9b0941593c87225bda96b8524488ce4b6bb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1e62b11c3eb59c4af8e7c66e6481a956b186a32e1ea6f20ab679f5abbae98684", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "dec3fdd0efb3f3e163134a1043b5357fe686ebb9013ba4b9c14be1dd9164d434", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "57812101e7daec78830827aafba09a9b7a6f6180cdfbc63448e46254ba896c2f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "da2d8ed785581989ef058ad4b6f0e71d299e4cb5937a163c04625d3aca8fdcb8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "a0725ff6de673047101040698cd855af16c8a8fa68f9a67c50dd23452d89f48a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "70df086d9d557fc7ad5fcf230e0232524a9c1c32c33d483722f2b1c7b1ced25f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "468690086dda091c024e7bac1c6bad638b4dc9c7c90aa2e89bcc3d1910167b1c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "be409a32f2a558fae9dae332264053166f0d3916ebfdbaecf80cc820c90a6a0c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ad549b55dc4a084a1804eef07da55838b1ea51b37651d4a14c36dac63f7b81ad", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "c129b2eaf86090db7b9f69f4f7cbe5e2894879bdd476f97ecccfb4cbdcbb1174", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "333453ec30e9813548597d8d7e72a1b9ba8dc05e621ab45d06bf49f7ab344688", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "89f2f6e3d5d80799bfedf16eb153f67fd74530434e6b8d1ad2b243b030d1c274", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "d0b79fbb34282a310d7de6c4547e8ea1f7f7d81b594c2d3e594ca763f758914d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "d644bd53a4c9e966414463acb86d64b10cd2e18d472c8ac1bbc397c49a32ed1e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b23d100a356038d67e4daf39f1e01207d66103a6329c9f659db91d4002937f8b", +"T3T1_en_ethereum-test_definitions.py::test_builtin": "c0da4f04e898db54461b5e8a5f29fc16b91f2c5f620d1dee2e19611a4400cd0f", +"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "94ecde61300f6f5257ebdcb3b62cc7f901c32108497878c1e9ef9104506a5f62", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "6370b3457fba40de0120fbb1bfc6554ff76e6f50f86a8e91f45d96ea4209c5ed", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aa3663738e87a951416eb07a96373cdab9e1dc78b4a81d38c90cce4a2c47e27e", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "af0d29cc411fe6a4f8b9840250c2435f85b29962e2a8929ce18fcba36674fc4e", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "8340e2f269d4a0a96c7bb0d9b25aff90241e24db218633d8711223b738ab130d", +"T3T1_en_ethereum-test_definitions.py::test_external_token": "179f43de25b6a293ff255b4f9e1d09d78df1a928319d9b5789931b7bb7371a61", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "c610a15399d8ec4d448a5a8904347e598ba7184585af296d4d0c3b6ec5df8993", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "cfd045d3ffa9ea1d1622ff50c546cda1f7678e25540c02b23ac3dae4d1a0dbc3", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "99b134db1b9f23de02f2f9f98dbaefe5d1b29e8f3b145c6544946c91a896e488", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "433d26ebebf355ffc86eac6d8146447790b1f4d8bd34121b3a631a8dbc30e74b", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "1be87dc3c1f639d9e0507bcd3836f2d8e36ceafb0500fc0c78e74b70541c82e7", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "dae2d0e17fc633e281c0cdf96663346e2fdc148899cfdc34ebe8143383864d19", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d5963af13b1a053428be488a3475b3e5b25634292f27fbe1e81263cf9edbae79", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "8b6d747f11a1bd32b00a92385bed4d638718e733e80ee9f145b0a9fb0d214589", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3aa63c89a2693aa70258f3a46d9aad78d5926a8af63d6aebbc37a2644cbd80ef", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2a03d5555eebb9b3cc7e78e0bf79d5c8b3ff991c1afb5db5078fb8f2ec486fd4", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cc46d5ffd339b76744cc822e950b4f9252b993316f36fa04a6fd371424c8dff4", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2737bbf908acddc26c12e3e32e2d25ba2f8af28020cefadc0dea035491cfbfb8", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6356dd6ec5475397ac62d4345195d3b9f91e0cdbcace6c9fd2067a1ef31fb44c", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "49746bdc089d8ffa036cdd209a0d99f6fe669d2397ce5a88bf30cbadfb0b5174", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2e8db4c9cc0879db9a4339556c88118009b919bb5923f93c891f65870974fb17", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "5259d154279b4007f26e44e931550d2e1750bc09be98478d845da9cd30dcd03e", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0d38df9e7553ab93ea60c080b5ab8a42b3809c637a4257d13db300805553bbe8", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "45e584bbcda03cf905239b8bd506a7b63dc17ed5340d803df17e02c3c08a3e07", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6baded0bdaed70ba48740db902cd7088fcd1aad9f00164209642450fbe92d80e", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "5e2dff98f868b98280d8605517c0543a6f43848dd681b525ed26f5da99d6cd89", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "175e5fc9017dd2c89ef55bca62773d2deef95dab93578aa061711001b7764f8d", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "ab9687262a7d3c1e621bbd7b5b2d1b486fbd566fc6c5974210800aa0a3a7ba8d", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5bd656e64cb5013210c2bc189599fe1ed14110deac23043c38c736b98f137e63", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "5541c1bc7cdec395137a32a8c8a894f4c56eb55595179fc334c4a78ef178263b", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "80c45e65c861c1668f272398c4a790cc9dd0613aace21bfe554c9a685e2eae8f", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "c6f492dc624460c76c78d367d8ee22e1f24f6627db61eb8dfafdc2c90e5477ce", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "dba56b7e5def913c477a5a4cd56976f17316a53856a1c4e6a5981d8d7972464b", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "3e4a965130a869c772ce2334b2fd1a789efc382dee4527f7eb4244af39de1a72", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "b55f2aa360c610e470b1af6becff9a69e49d56476b51dcc61de43cf4a24f599f", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6c710f6210556bf2ded8a6027776280ec23b8724eebd99cb4332552d260a4c59", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "2d8d1acf5e6a4010cdb9feb342e10f627fd64586e49ad8ea57d422a3fc148ce3", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5db2cdd9461ef667c339619a42fce89a7e46c7ae576d83712efebbae8cd4ed09", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "985b867aeda08c981c8c610e94f454c8529fc4d14c9cb01881499784c5a4b6c1", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "1b201dbdd316979addaf42877f194481d2cc969e2620268e717c441a31c112e0", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "f612aed993f77906c8990d645a9bd4abfb30d57989121ba2e10cfd157a811983", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "5c9607cef8d99d24c5a3b1554369a15391bc58ca90a815cb37689c8f05f48dc6", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "46148fc0e4ddad92ddf4986b72f557c4316ff6a5d386b12a284a90d0bee46820", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "b7e5ac80950f2afcd1db8dca4d37236ab434e810c4e5b4b69f97bb073f14d505", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c175ff9348c8bfbdffed2809f7b8f158ed1e7896abc19b6191245ceca01d594f", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "69f815f79ed5dfd60f009bbe3024d7e910fe37ee32377c955ee29b569fd4f58d", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", +"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9a89cb6f1a61c69a35a7c5f53239d5ffce3ff7bc07a2a08f67266ebd753de3f7", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "70f61cbd4bbed46fadcdb3405b47ea23129026bfd99eb209ed8c5c2c3a03dc12", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "88fa5319d82eda664c0e33f665aef10d782d6df42cff31bda8e170239013170a", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "fa47e3639c860f5865382e2b4ba55d833989b6a0f41ed81fa1066a57105f8c59", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "2f22d59bffb56e1cf2ba2353a6cd6c96cf5d04c95eec1b7d25bf223077008772", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3ad938f73145a9eae5303218fe98f832e98e4d94e525d6f3bfdbdcb698549657", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "0ef31079e8df1fa01e872a2fac2daa28b1df648bad515a69d9c6014951119308", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1399e2245a8348e03f95dd1a439df497c13a74fbb7e60b31b909c243c1bdbb4e", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f9cf7d0ac69d056e77d5b8eea556d25357b8bbf18576fbe537cf7c480031e217", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2cc8a86f5940e557e838c23f85c899fa5e21663ffb9ab2e5420a30c75b850b84", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "76b402adf767f9f34bc237dc37ccfdc48ca1c22fffb117ae8732636965a68d4e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "238aceb5cbd565e67696c8f6d73dc4573a3bee178ab66b208d85c32cf45957d6", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3d6987d4440d51bb4805d8a08e6cde9f6854f90d2b064553d42c1cbaa420a53f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0310349fb18c476ec82e058667d8e6bf69adc14696a3755d878e7bae3bf108fb", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "97fac4b6db7a446f53c3f1fa27ba925c1651a8831e76db7d220efbf414482139", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "997848a3ecc4f0c5ed8004867a8d5deae48e832c12d4e90bc192f28394a704fb", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e85604e8d3d7b102215e6a18d828235df540d9c32df78e1b89b988d6dd7f62e0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "7838bcd3a0bbeeb327aa639e93ad0a938ecd3db27ae3086b5b8d7d1a2cf6970e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "2bd40660815fee49cfb00de9b8e64040cca5b61398b9c38a136225ac50e6830c", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8fcc1f1275aa8e99062026b960451521aa894aa3c78b7d04bef368b73085e69e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "714e4c5f6e6b45fa3e78f74c7ee5e3332f39686f8b708a4f56232105bde0c3e4", +"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8bc38a773c40a70c1eb9b91a5d02ce0a61591ce9e42bd0073bc1395f560f2490", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4b89fe403777b910e365031ff4da4ddf844d8d9385ee6d562d8582e7ef270b8d", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "a82c3762d114bf542e9753faf7c54027cfb02c0fddfb7ba914eedac69366fbfb", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "afb28033e3093ee6d38266defb14bfe1ae36b727869b631e0b055694ab9097d7", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c4ef05473b0b238e68385cda289a26b8ecf8c86db213cc6b346a225a0f323332", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "de100f2d3c8cc88672a09795ea9324368bf2c6e5e6b5b76ee04f2b3e69a80444", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "0c819d43c537b170b91edd29dc1ec88b78577131c6c4a84d14de7cdc42c3042f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "207fb30e30123a92291f95b3769a217e05110ddf9f8c3446970459f2fe50b44a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "405d4ac4856c34af5606e49a742235062b1550b4fcaec4fc4ac3ac4bbe998256", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c133a3b7addfda617ccd9401ae28a12b1681e9ce47c28ddee8ae78a3ebccbd6d", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e924f9c247e732fa9b727d71b844bdd734be9afcb4a26ebb74a4450153229f95", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "fac986a6b54fd0ed850fd3810df55de3dc411ebfa9520b8e51ec255bffaf0467", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "106a4cf1f71595f65c4ed2f12b4f868ba0c5f8b6dce75805489be8e6df3f39cf", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "63a2b20a46d7eb9dbe188f45286f0e19b696b4fa072743156a1f70b8c33d5dad", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "63a2b20a46d7eb9dbe188f45286f0e19b696b4fa072743156a1f70b8c33d5dad", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "f24ba4c504e12ec403aa99f19f9d9c78cc513edb2b7671063033902d089d894c", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "f24ba4c504e12ec403aa99f19f9d9c78cc513edb2b7671063033902d089d894c", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", +"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", +"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", +"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "b3086dafdda715fea319d90ee3ccab84a1728678dfa67febce1f7cc943d9e585", +"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "6ea5987edda7c73d7aac080833b8574626f016233c38d068185e8cbcba46cc11", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "25929f2293cfef2d7fdd8859bb16d0311c5532e02cc0624a893c50be3e16182c", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "098c3992a0cc170e8041c0b0708a658f2d438da6dd829f38c8082d75a8d43154", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "e6366ba60e181360741bd85df2fa8fca85f4dad889d510a5e3365abe63f4d6a2", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a78b216be479757c536da26edab8960226c6b1434012d51927b5ea461a952de8", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e91bc6a2639778d60a1201e93fcb488714b7d38f037be31f0a41838165019a48", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "35ff50fcb49fc802e20fd0a44a161afe0a8b2b2f2781b409a4460632e884a83a", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "106c1900eb2e896139b514d9d0d3b4434858c6752c0b8eaca38cf7aadfbe508f", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a2c7a9f111cf2a8fd72d06c5fcc738fab679545c891db34043eeb22d1311ac62", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0a745253b75f0ededdec44be05e3940166128226e96ee49183fb6c97a3fccf70", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2cbaa2088776f1c7c735aa1ef767d33f8ad8ebdb592b6d9814dd1bbabd6da9b5", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "58a16c31957f7d540da34a30f54631e607eca1af6efb27a0b3877e49f77a9d56", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "7cee26436a0025a56eb1f67e432e4e707857714c1bbf5f61df60cc20f54c84ab", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b34ae9ac7b3ea7467afe774bf615ca1e1eab26c64fe5d25178071bf15e8d6518", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "648e45403ce412314e9d91625ace8ffdee52ff37ac99b13f4e86d018a024515d", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1c723bac9117d59b814785b772a9e34ca9cea4af02a8e7e9969a8ab6c07d6faa", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T3T1_en_misc-test_msg_signidentity.py::test_sign": "641820cdb6496ddcbe402cba9b3d24bee009ed212c6c1f54a87ba158b6b05049", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "f04af61059a8edc28122ad708eaa23a5f27441a63a87041da5bde604f3c585c4", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "097567f203b5c8090204f894017ba1676ff3d42c42b79915960d3de701422fec", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d081197da687ed543a4c0bd5ecc65d720253fcc15d2975c26b251bd14ab647de", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "0ac1a47b3ad0595e46a8aedae71446d39f1bcfa703cbe4d1681da7ea8c332a31", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "09f056cf1613388427d5f742910d8127acd7fdfc55d44e0ab8138e7a45852784", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "37e8936c92b8af777c1c6276a2c4cf2c556f6babf9ccc6ed03be990d065f64b8", +"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "132fcbf2f28d368ed826f8ea2bd096572fc9807c6cc9be8f6ada25847b0a0adb", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "81058e35c06ce19b4e398af7ae6ec27c4123c295b5ef030d00ff96ab8999d1e2", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5444fb8a8ab2092036224dd5bdaed2272d9673ae9da485ce7b3e3abbefb9e23c", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "a1d7f9b4248b4bc32ba4b76149862a46c3259579ddb9386da0ac1d451c666722", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1cc45f55b9a213d0aa67110c27852c403bcd6206e319e0f4b0bf341ec9f14127", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "6a57b810b4be43a92d396dfc3d605c211b6f1aa6787dc46d1187ab9ea1733798", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4e265c664333863752796376367463d27e0bd27cec4b769c10d008f043f4952d", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "42eb8eedc199d864ea39e8dbd22ef1e9e2160e6a82967e73860210bedc7365b8", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "629658dc4feb14309037583c186a7e3bb97b3c39adb33cd66a731c85be6ea913", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "cb0a3043c74558979bf602a5b2333af7e87aadb789e78ad7fcd85e2ea2f90ea9", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb62f4781906e3c9cb856c19203018554af912ca5fb75192d6d2551a6385246c", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "0807d127aaa86576c6bf3bd1de2b81931ee6e266e99f04b7c628752c69df7c72", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b6ae624dacb8f665e4f03484486dc6b79fc8f5257ae49e91e62b656575486066", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4e24347e5228591d498da9357d57d5a01b5445d0943c21c8512505b5652406db", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6fccf382712dad39b25341c8fd4efd343993909083d2887451fd8d6b2e5e8c40", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "179d45493e23ccaa7e0d0b11ad5e5c9eb7a20a9005306a80c3406e68316f61f9", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "097fd465bd713db8fa7f52ee2f59f55dc15218cdd7a2aebf3f0c8d27388ea8ff", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "19838c4a131f4d62c7dd2443562f2b8f29f94f74253b2e4edeb96ef2e5d6501d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4e265c664333863752796376367463d27e0bd27cec4b769c10d008f043f4952d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3b546816ab0eabecfa5362ce145c0d98348dfc524a70005f38ea0fb586d7e008", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "b49ed8c62af3d83fb3826f84bdfda00621b9030856b385951cc5238c59d9a7d0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0aee3f3ac01e30b4a56e2053d8e2a6f434bd672c6a07f4434c57826e55e9d555", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1d2a0ec3ca058c2c52f9b093b42976ba377bb634fb3483766003ad561f34c89c", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "e31d8c1996f0bc22f64c6b45f79ce6c653fad3e28f210d7dff118adde1e28d6b", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "1d93919e23c2053dafe725495349ef934afd54cae89555614c7d3d169edac8d6", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "13d1bf36c203d6d3652becdc4b4f27207ed910db99f29c0b0ad3aac8c9d3aeee", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "84bdd5b06a8fc3c78e903ec82c343e08edd98f40a03a4869f64d9200fb09a754", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ff31c7b4cd97cc574c390bb58145a82fc08644731298653726dbe323bc991b68", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "963f0067311df44ec9e62f3c859469783bf2f4d7710b4c653fa9edf19d75d8a7", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28398ee2bfc0e8774613a51155d78039657531b4a34209c457bf364c11e7a13d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7a2afcb4d00fab2004cdec95f2bc3d6c5a37c2f2e9b1749982b1571b265b51a2", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "64626ac12c65af4f17b3654ea2cb3fd487ccf62855792c5a7cf43709996024b7", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "04ca60ba989435647e3dc7aedfc9471e858ec767028c35dbfc8cdf99b8b2b507", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "ef43bf6d25f93115145ef0688dc4fd31870499a4bcc52a050c516228e2e9d641", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6c0f3ab10c3a403526b39326834ba7059d7053eb22cd9403a0cc760e2b62c0e5", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "a91f60fd8b0b1f06cf83d2de541502dc7dcdb9debfa684de6d5d76270435e2d7", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "e68140d2edc1227e6f7591bd0f89615cb8e68880e74948c42461860f170e9d64", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "87bcddf21ffbf1a850b9c4480329498c4148fc7457144959214e037e6b137f87", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2164a72e04396209768bfcb81d77e842863f801600db3a6cceebada0c9834d24", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c605309a6c6161e1fffd10c2a61f6fee862f08eda5a6276dcae2ae4b7a0e812e", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d7596291af2da445c465c00e4810302b8b7ab67743efed9d69d790947f894a85", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "18b4e40f7e3581e3cdbc959f2a9f666064b435a3af8da5ef30d40634ecb169eb", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f6f62e8228d3fbae8b64bce061dd77e49fa6c5c40e0b499bdcc01eb2a9603a59", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "198b0c574bfa13aa6b16807c7cea469144bedc941f806b893ee98c924a0efff8", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "031c302ae2f839862b4fb6ae65da7ac3a6ee84fd3fbf90707d09f907914e0488", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "c51f8b6743401a55153b76374d4a038a7f7ec89df5a9618e90130dd3d84e44cb", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f09745b93295d89d0f1660b1cb88cb2cc1c7fa9542954c898b8696f36ab4af75", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6de4e189036e5f94e0aeed958f9a3d64796b2cfd1d4f318ab7440a33119af4b4", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5eb57d3f6b2ecee825566767d7216480b425ce5eefc691e2f4c510fc1db68b83", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "7523f86df84554313e5139bafbed7155f1259ec4e201b4c6072d614f08d430f5", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "58242541bf8486a102aa87376f2d9a8f2fee74c6956631501155aa5a92ef742f", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "bc15baef3f52f919dba24b46d828b63eb5ad15dcb0660468e9e17088e1523df4", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "c2bccb5164d6fb0a88a20b0df3b9daabce638b269d805aea3bf9afd9e38e6373", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "951f076e5f1eb13f2b5465ba5b9e0561db980f4df59d83e0d817f7134f43f87d", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b1ece4eef5d822ac13244f34850444f72c372ba6839b73b8a782fe181342c396", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "fd184770f3a77113c4185a56811707b67fc90eb684b4ac20e93c4ddfdff2f04a", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8a8f3d3a22c24a4146e2f88b366fff3f64bc94b270eda1a022cfb816b56c1d41", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "9445c0da3a53d11b071908ce1522a65e947205a869c3527409b7833560dc2e8c", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "763ac28b88d516e205373a6eeaa64eea8327d193e86d1f66714e46e6d57bd0de", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "452b30bfdbaca370d1523334d4a4c5c335137d61aa0f88a5b241540ed3b9560b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4ed857971174696bcdbf8bb96abcc9a79ba207d4b802bb1596523bdefaac0be4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "3306ad130ea0a0725b5ff31b36846154574ba2c63f91805239ce3bc92eac22c9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "bfc9c34d8aff615ec61e887cbb38967c55c33d69e8f75b7d3ac538f40dfd5a58", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8aab2a2a197ef41a044fecbdd3b2b59fc5717ae346cb6d1ea982d874451104e3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "cf87b719150963090eb2d00403d9df11684cd2d37890351ada5f4f13c8c8ac6c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "80376b50c2980f34c096c9e03cf774a1155bfa64e0a2a9bf950dc7fd88c8c4bc", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "42650574a87a950d75bec25e30f3ea84dedddfccb28c1ec189970c221c0df817", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "ad6338170c71c67cd1b6b43289798e90af93274c5be6c7297f26b30b6ccc54e2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "2e91a8bb465c735156b069d16de97d814ee8a2c7bbfe90f7283f07049c59ef46", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "24e8d545bf0c83798e57aa0e5ffbfc8faaafb5067ca7e9cd8f1070da41316a9e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e6a710a2aacc8e586e939b3bf8856280e2579ed59fc9ef6c6cd18b17e8306b9d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ab367ea9347daf8e57bf5e9fe8bae9c360c3980ac31eb15a20de53c12ebdd126", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "57caae64b1524fa6e87b258cbe1f2371c3189937f35b4f32529aaf99a1f3f55e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "d9aa2de3287e753b04517c7663d2af2ecca82bf93f4eb45bbf951775692810b1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b2564771f11210fa9e8b8e112aa4404f9e14dbcef8b49a14316f5c5452bdd045", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5b9831bf338022786607e403ac32d12cad57733716f7cee93f37ed3ebf37afc5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9887d87d8684b2c9028ce379d9d402420cc1911a633d4f485941a3de6a07c621", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "44dff629846f52d0fb0c44c98d3d82a6bd3eb71985373d79da07c4fe25711d88", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ec99e2693d5d84bd3b9770b7e62c611c83d14f85ecaa5fec369f2dbc4ffc3a22", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "524a9d4ab0406cce8c7c8165c8eef706656bd44de6f5bf29124db6a98b33c612", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8664c38ef71ce627dd11efb64b0df244ef9da0932f806bbfd284ad7687e8a72c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4897dc73849f7e7787de0a5f2dce4973bff127c173a09cd054bdbf68c3f02ece", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "bbee0856297cb8abe986c1832e4020c02c3f172463e369b577f2c662e72974f8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "0ba810277887b2c7b1821c8eef4f483c143bb1448ef71a34d0474c6a0afedc7d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "09b60fa7a047497229eee817684881c85d3360e710b1b917d0d288ae12aa3459", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "5ea99d554e0b5805ab583635badeb1bd5db23df5e5faa38678a48a53acc3c52c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "738869b0bcf44b9d4d72211293097e1235bde971dcb6b1bed4f4cfeddb4a4fa3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a6329ab4dc42acb9f7e440ecef446c9992d8c588862e469ac38a5f59a2c65884", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "43abb883196a14a72a008419ea0f921fb6a914dd8cc87e77d43dc00f38ef9540", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "53c69f1b612db74ebefa551cb50ca59a301b84a255e1bf79044726fce3b9c695", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "c8b3d2dc9b42c0a95507484a48872bcd31b22bdf078389fc4cbf2e3ce57cf630", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e17ddfe3512edde12103cb8029ec242bed40103b0f26fbf961061a6300f82bde", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "1e983da3fbe7ce90163312f6b6459d3043b47ea32153c09c03a450bc38178d8d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8f9e8f10c47b171bb2fe0be9e8eb8e3fd231d45a18e4bc5a4a876cb5fb03793c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "9654e3167bbda9ff44365f90ee9d42583b473240dce27fa3dfa2976ca4fff8a1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "3b2f7c6d34b8c18317319e5b8844515f0e1e2c9ed46f0cfb8985760aa1a59de8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "357dd981b6b9cb4bde23e9991bd430ffd63cfe31749d97751f2c3f0575ecb5f1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "316d6fee2b77f92814bde333aa85523c7e8049669d7b224ce4788459317d1604", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "16a725ffa812eb64ca6c5ef5e31ae64538cfaa20112d3edf4fca1fb02fa2655a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "7557b1cd54311020fd967143f69e259c5a915eb3f6b30f8e463132da90a46315", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ae11b158580d5bf7b16569923dce63380c9a5f32d073b29d2e9c3ae348a55ff8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "658d6a4cbf09f305c1e8830b8464cda8d3f72896b5796522571cdc6a34c1b818", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "32e6d73d963f7d9012d7ecbeea33d4ecd80c2e2d1947b2cdcd1524cf20212cc7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "93eeb08b19927ef368fb7002eba179b6eacdf816e620866ad00128c60b79f722", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "b50b4bef5695edbae422ffd96c4d544857440424b243a5362cd2d26226d86fb5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "23ccb66429760c0202215169cb41f57423de56470c6e8aba0fb6290d57df064a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "a4d68a3c67736d80a439a78713c27872768a26498b750daf18dd5cb805d436a3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "7fbdef930fd714d565b61f001e51a4b29920515df4f0f7d5ae97f09629ef37ae", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c283ff73e852ce8aaad4fa2c48057c0cca222e38defb889d5ac20bd277c5c97f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "78612d37f00927d13df75bc1379c8ec6fa59593fe5d3e40c6883574280a3577a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7b92d4ca4f4605b86633af82882c40a6b4177103e804db954f9bfdda454817ab", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d33b778dd6396f6289fb074b06431f798133b9ae18dc220a9e6fec39b34a62b0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "30623db2e35594cac28e6897af7caace59f840daae9572e5a671abf4089f4d13", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "201ad0c9e6b74461b2be186583832afe60624a34a811499666792d2e712fb9b8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "de0e2936a3a093259b0ff5b6a4bdf3879cc6d1434df00116b2460b26e012563e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "0b2d55ccbcfd78972e080b6a72d16ed000207c796ac7d81e8f2dc7ce6f5a7048", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6545aafb0f5ec3f7703a5006995b4aa1dd7f70f54113ff871f19da13baaaa1c1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "3faa43bbc5f22d550fa523e34c7bd239f9448a9bc3ea2cbbb9516794dc2973cf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "ef12c38cc08c2a0cceffc79ca75263cbecabcc500f11ac373ee3e58f18549f78", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "52010e3d3e71af3494ebdd43f1f69e11bee65d0e209f75c95690a40da3f81fd1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "84bac830801fb596c563d2704247bebd92e777ae5008a2f34fe89a38114bc1a1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f4e95cb91b71f9bbc64749ec062d944fabf4e59d44753b7c4f71755f5e37cf88", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "b610b5c902ee60ad14c76f81bcb9144ac20806b63856054e9efd4ef36c5755fd", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "255fb82c371edfa0c8a0b93751f9994784913afa12d6cc85b99a26eaab12874b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7a42704bc017c3128894f0016c5ab110edecc243ddebfc8beb0f48ff3befdd0a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "da57711b9f55bf97f7bee8f734a8fdd5e02563046fa911e40014b0f42456450a", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "18272296d219ce2f54f30820936a29d698bd7a26890336c9a326c30007a43e3f", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a9b53f23f657a00cc215987ee1289c6a86225602012ed33fe12ecb7421a960cf", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "214f0ab5a2c67891e91e89ef71668fa89c0b58dd367cc5fc076ac9e1810ac344", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a2ab7d0bdac04efcab422955495d6e4f542e5c0d7770d712bf11b41e75ecb1b7", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1621736102d9ef3197b8593978875905b3978dd355937657e33af5c1054b02ac", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "9fa8e800aa31d45e37da86169d03a19dd0ef6954473a7f4ebb3d3d339d4bbc4b", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a8357c843abe1124dacde751c70313f57ae0b46e6dd2dbf91c5f3027484822a5", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "da742ffb1db1bb3430f6ea64f9d50813d41b15762969ffa4172d48ed62f0aa29", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "e16b547bc1bcb9e11c8785fdc98514a54d53c2b2226e0778cd4b59146ba6ecb8", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4d4a0d45419529aaeadf4cf7ee391f26d15acf586b7f11212ff1a7a0b09c389b", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "34490052e6eee68a9e9c732686461a4fe7f956691feae677f31df6d9054be475", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "353c7dfdeef8d68454e8b9026212b52fb761864b4c5ddefa17ea973cd0e73e7a", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a23d222bbd77d3b199bf73f6c60f5bfae48a45a913b62579e6934df142ff5a4e", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "3c3146d203c179bacb4d389330a6b29077359e53e6ae72f443e5efef3d841cc5", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "f3bada923b206539ad960d369d3a28fdd0500d106ea079714f41add5be37543b", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "9d53cf2c0aa7cd569e613edb9cc710a366e7f152264cf24042009cfa65f83452", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "06c44f296124b25d22690d9a8dc5f8ac7421db139dfce0dd2e2f87762e65198b", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2ae8078b3f39e1f930a1a7c0750d863a8ae9edfad2bdf32b57d63b729fb7fb1c", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "be46f409ac67fbc359df19ad6d188ab31062f7d89b94011e1788fd4d5893640b", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a7172a64a86555942540d9eef80042a3051d4c58e1f8cf7a39e9c99987830e27", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "84e2e99c4c0dbba1f2e44a2f833742dc37f88013972c8ffd0d02673660eb694f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a3de7fcd5cad8c5e4b4316fedde7dc7862eb89ca2f2a8d1a9ba8fb50a068342c", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d75e62e491d87be5d1317e51241431bc71b5a24da21eeb31dbf5a10e929290dc", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "846e5b0c1e740f230b8670be9fdf93de80918e2c1afc43ed99d15af1d959edde", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "380dd41734316482b1c4d2e33777fe42f02829cf637c550fbcc699cc4f7bcbaf", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3d0f941c6ca7df69d6204063f171b1aedeea36e8c9c4d3c81fbd9eca75b248c0", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e7ae941c1a5fb1a10a2e25686771d0ebc5864211966eb7741c88c7bcdb3ea6ca", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "993afda5f990300f12d8f2f318b51a3f7374f7abdbe983326e39c66f0bce0568", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "61242eeca3cd77d51fc2d9012d86e57dde6e722aa4a2df4e818f3ed679aeb430", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "d1746738380b806d193be170c8f476e21448dfa227a91f8547d05e43cda2fe5f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6bddffc62fca2af49b98cefe7ed5aea24541bc41d0f3c242f7fb7dbd96f190f7", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "dc5de8b32a6c86fd034b46daaac0fc3ed1b813e0cefde376de0977d1ec1ece44", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "66ca24e60f8c0b6589b8af806b68308972e56087c1517289cd1c85406ad1aa4f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "adc5c6dda829f19ad14a79547779472d5dd72c9706853aa665e8de7361433183", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7bae062ee776b91f0e61d3b8a743a7800deb265bee722500e79ceba459729b3", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d24cdb336b45aa5a6dc51ea70414b38ed157ec007d1c3840dede56af9ef1d13e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "4995cef741327264327241df0ae283074abdd4477d63028be16f2d216aaa8f7f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "3383ea7a0661c2e227bcdd714e8c4b8599a70ef0677991f0d111a14eca410906", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "fdc7d3703010dc7a5a267a3264b7604580926844aa3a3ba8b093a23e2ba7b50e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "b0c90ca5c5bfce6c79f10c64966d0e2287ab6e70f70ed0dd32dd7c76173baf0e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "12205c75d5a6066fbaf7b89d545583d69062d7169706dd2e6c9aaae6a4b71918", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "989d9d0713f644338e5696be59848b67119851fd64e44d290a43c8cecd554a58", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "31deca2fef5dc1d898a3f6d95c2f715f0c85d8be48a2405d596fa0b955597359", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "cdbd1117fded4dc3efef76f723f5ca646461b86a89f741011a25a794cd016b29", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "641f0ec39c752109a6e287478d529b1e5d3d98cb4eb6b23320a8ba7d97baffba", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "808e6873ffc198a8271244e51538a91f4a737e716bccd441e84775589ad75138", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "ee0c8989f31e75c36a4a74f3715d5bf341366cdbd6b750da99ec1f91d7b90db4", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06aef40642884843baabe7e7d6b69bcd772d6f1e16f231d2c6244b6a727bd08c", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "2a23c234c26217026172b4c55c0a32d33e8b3002c4c618cbc4f6f80f28ad0501", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "039b45fb265d4c7515160a8c54b38ac0526c349fb4f4855a607c656b91b30189", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "313a241f2f94cc60afa2f8d1afda7a6badd91b437f7acfedec1dc1e406187c90", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "dafff07651565cd5e9228d0fababa296fef90f9523985b123dc2839c2120328e", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "9e963071645850e247825f828ef64031b80b1f11edf54c9290f96c909f4de606", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "d8a1776116a79dde0519140150a176d6858828645259420c4f481c485dae208b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "831f8ad892a7a9283d8c6317d3ddaa7e3373f500144a88e18dca31fe69c7569f", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "9de19207e95dc1ac1a4b6bb4268143fca1d832fa89d9bf01a8264043517d8bbf", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "90f36d6374ab9689f2177b4a3add9f5605bd5572493e731119a61281678abebe", +"T3T1_en_test_autolock.py::test_autolock_default_value": "636069ad7e5a8d2e696502408fb494920648308b32ce9da154ac4f4470ea4a9c", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "88d6b6e2701a5dcea58ff8c267b6c0c8210dfde802d75ca4e252fbc899be53f7", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "88d6b6e2701a5dcea58ff8c267b6c0c8210dfde802d75ca4e252fbc899be53f7", +"T3T1_en_test_basic.py::test_capabilities": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_basic.py::test_device_id_different": "033ebf59123903b6fbb34d44fbb74c8873e83605e7b6f5e8b50078ee6589e268", +"T3T1_en_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_basic.py::test_features": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_busy_state.py::test_busy_expiry": "6509e7c943f2d09e3a5a7c69faee74c75b321ed1614d881d1ebdb57693c7f69a", +"T3T1_en_test_busy_state.py::test_busy_state": "738e905dfe55634972474416817c53f0a22a9ebec487d9046be867ab3f2576dd", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", +"T3T1_en_test_cancel.py::test_cancel_on_paginated": "498ffee2ea02e2783466cbb993f0cd83eedd3b67afde37b5d1f713fc996c1455", +"T3T1_en_test_debuglink.py::test_softlock_instability": "3609018ae27ce0ab9eb091384029089ad01bb097d80d9afceb7341548b935ecb", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "2a63f0bd10ba99e223f571482d4af635653bb8a3bddc1d8400777ee5519bc605", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_language.py::test_error_invalid_data_hash": "aaf31bdc64a531bc9084a003b2ad78a9fb91ba9b138090b1e2daf78ca4c106f9", +"T3T1_en_test_language.py::test_error_invalid_data_length": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_language.py::test_error_invalid_header_magic": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_language.py::test_error_invalid_signature": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_language.py::test_error_too_long": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_language.py::test_error_version_mismatch": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_language.py::test_full_language_change[cs]": "050f3711f004da563ee47c55d12a50c07337768a63b27fff9f832d61bf4fbd19", +"T3T1_en_test_language.py::test_full_language_change[de]": "637494aacf526b8c6465a5c48a35eee4fa71d90d9f90d7c675c555bc5df75442", +"T3T1_en_test_language.py::test_full_language_change[en]": "5f6cec419aad5e5658f6fda45c2cd40fa4581823e7f9f0c4199970cd179bfd4e", +"T3T1_en_test_language.py::test_full_language_change[es]": "6c3c6983dedaf60e8818c0acdff7f1ba83ff9106333d834b8bed02d910bf5b1f", +"T3T1_en_test_language.py::test_full_language_change[fr]": "7e1f16d84163fa6b8a8acce859f5c5e97ded578c28f75629e4f9bd587cd051a8", +"T3T1_en_test_language.py::test_header_trailing_data": "476b737d8c779501707449858b7dd2c342f151c99a9a9114a7f30392716b190d", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "9858fc6e1eb3aaa9f26d839c17203e831ef57fd5845df92e346130ae1e7b87d5", +"T3T1_en_test_language.py::test_reject_update": "78b8f16e00c5d653a7d5c0929d21ae8ae1c76798fe28f0eb6edee8e2ee8b0202", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "af743f998d2bad1fd08ea45277ca281ba97a4f344a7d4f8295e1a3ad7590b268", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "af743f998d2bad1fd08ea45277ca281ba97a4f344a7d4f8295e1a3ad7590b268", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "8316441c80b5e3971cc007056a847874829c38a19c486bf7f8e4487260e1c920", +"T3T1_en_test_language.py::test_switch_from_english[None]": "51c78815350308c7687c9b7540d507abf50c7392db7ead05d26446c71612c96c", +"T3T1_en_test_language.py::test_switch_from_english[True]": "51c78815350308c7687c9b7540d507abf50c7392db7ead05d26446c71612c96c", +"T3T1_en_test_language.py::test_switch_from_english_not_silent": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_language.py::test_switch_language": "7ac1b4e96f1e7f0726a953df93a1c8e436de37148bef4bf8a226d3d8d67484ef", +"T3T1_en_test_language.py::test_translations_renders_on_screen": "fccced5225b6ed868670a35d60a637da5284607e7065232286e50d91b22012c0", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "8ac0c969e6d8a79257a41d4651dcf62f936e2120547cb97c6ebdb8d3e57c0cfd", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "da4d930d3ce1790722c946a0a266c48c37a552275a98c8db18e3b7df81230a24", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "537cc0ac2cba1292e97e7973079ef8202e2441809036b03d368caad769204661", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a1f6dc01500cc25bb7ad302da3e5b6040567d9245486e2ab983bc7b03a511603", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "3e9e307a8d14c10e682873e7988fdde21bc7456d47a8a0ce61907b12cd23bfa1", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "e774f4de022f48caacc2445b1994ac19dce7a6155b4224ae7eb727ffc8975ca9", +"T3T1_en_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_msg_applysettings.py::test_safety_checks": "b129e0ba2e3c7ac836b3bb4b0bc8ded1c922eba054b42b434d10499fc780ea2b", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "429a141f97ad5a7b857985fcba60a7ac35e09e6ea54013203d80cb63deef8638", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "75f8fb63ed22a2e9983a9d60488d6cb87bde792ed7b00b67f1754ef5bfa8910a", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "31f143785472dad5adc46df21cf80ae3210c30c22fc719d9f56446d1915a36e8", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "63db4c01cc1abddf73ece3c61d9d0de6bfd6499559e01bc58c2981f416a922f8", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f1cab327533697803793725144e42200106e05f1d81b75ff0a8eb55453a37dfa", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8e6156bc4caf5f75de7c164844de9405e6c08bb74352dc6976a8d93dbc994e53", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b0c0eccecc9e7a84ce9af7fca76d6edce2b1fd0ea48b41354cd0a2f31b8ff604", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "61014a41b3c84831b6c82d0d3f8527452fed48f52cde4737b66f62a72bac3d5e", +"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", +"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", +"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c89489b44e487f6be6757c7dff2118bf4769454cce1ab3b03e0c12a68651d432", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9c861a52adb748eb9ced78260726583889dabf286377b030031471b18c4fade9", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "6e974727f6611b6d20f08fb0e3394b9457545bfef0d9c60c86655003a3fde410", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ac44babb407ef9d30cc1301b9a1a7c02c92e3ff2f555f4b21909814636cfe1f7", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "5fc1a4fa6b5074dfdf76cb081c35555fd432c62237fc77179ba49595779406d2", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "7d4521ca4be8f334a262f3bfe4b3d2eb38ba13f55a4adf75c1d6a97c04fc0090", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "cfe12091650149ae4310c39903c67725e9983c50ae33727add8cf5476c4ad266", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "2ec521e63d280bd2a551b3cd01c01d58ac79cd59d14c1c6bd7a04c3040ac715c", +"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "bd112f5b80f4a57013ed24cd2edc191e76648508ed70d2ff84602ac02f11b730", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "a8ae3193f87cb964296b4b9a3ec029533a547eb343bf3f9dadf462b3078d58c0", +"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "5f9a8c7d060a41c7dac34a48fc90433cb4f3980cee896dbef2c197e1489382c7", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "c383c6aa9458bd87a1012e6880d171e7360a2dc0a5f0259a8655b17949345608", +"T3T1_en_test_msg_ping.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "a0ae9e29d00a0481c7a72130e0fc90181c2f7c00cb4dcac3bc6f2419504e62cf", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "efab70c899991735fff30328f7be12dd1ba12720665c461826fe7fadf4251106", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "9ccb1c3dda5c30a54e5bba83b2e935df8fb901e756496b930b7fd66edc8a0ced", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "488a68d166dbcafcfdd0bb481901002e6de994d1b990a543ee7c309436c7805e", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "033ebf59123903b6fbb34d44fbb74c8873e83605e7b6f5e8b50078ee6589e268", +"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", +"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", +"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", +"T3T1_en_test_pin.py::test_correct_pin": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "de409b3dff3aef0ec32a2d45ec6cf5c33d23b3c7ec8a8130f99f5f47197c6998", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "afe6d894276043f93bbc2c3f44ae31036963d2fe597d5f93cc0ca8ea54fd67a9", +"T3T1_en_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_protection_levels.py::test_apply_settings": "f73dfa0b964e817e75eb1aefe4c0eda83365cc0fa7cdaf79c89659677c13a490", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "628f59eba987445b4d6a90bb2401ca0b099454199793da3743b0e8eadae4dc65", +"T3T1_en_test_protection_levels.py::test_get_address": "5e03fffedab4035e2fa1a270d9212672fafb282c19ffb783c734e32d4f33cf3e", +"T3T1_en_test_protection_levels.py::test_get_entropy": "295a8a97bc590301de424a39ec768c5b73da92b23dab04f5df6a0de5da8b8fc9", +"T3T1_en_test_protection_levels.py::test_get_public_key": "5e03fffedab4035e2fa1a270d9212672fafb282c19ffb783c734e32d4f33cf3e", +"T3T1_en_test_protection_levels.py::test_initialize": "00b62142b8f9a2b0dbbcc5a6a987ff0b1569c4841eca45499857dc264b875841", +"T3T1_en_test_protection_levels.py::test_passphrase_cached": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "ea68873cced831c9babca7ad78a93d0fc0603ed77f4427c673336f267dc8a83a", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "232f83ebc546ec9f606a01be78864c14913c8dcdb0bfcdd01d4d0f6dcfc3224a", +"T3T1_en_test_protection_levels.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_protection_levels.py::test_sign_message": "29b2ef280a8573f6cb6c1249acf13006228faf1d7968da8fee999f84df540845", +"T3T1_en_test_protection_levels.py::test_signtx": "e36db8f49378262cc3befe4295f6155b6c56b1f21395249ddfcff9a41cb15be0", +"T3T1_en_test_protection_levels.py::test_unlocked": "835c5327c35866df9acdf1433e75775eb652956b34ab6123595a06764389f61e", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "456368c2e05ef1a743baa467897ddcad4af06b9cc863b809740d145a66dd88cd", +"T3T1_en_test_protection_levels.py::test_wipe_device": "79922a132a2567d0a1b9b296b95fe7d1756e8af75681d9a0386fd104c0addf8c", +"T3T1_en_test_sdcard.py::test_sd_format": "eb00c8c6d53fb2cbb1020f053219babe32ef3accb8ccefa8dbe315c03fb19149", +"T3T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "097106b59798ff84733f7c6c4855cd52fbc3c0923e91aa84c0f81ac3ebc651b2", +"T3T1_en_test_session.py::test_cannot_resume_ended_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_session.py::test_clear_session": "28127dd802f15874ad7cfb67027b732ea378a9e03852b89861579650b125edb7", +"T3T1_en_test_session.py::test_derive_cardano_empty_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_session.py::test_derive_cardano_running_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_session.py::test_end_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_session.py::test_end_session_only_current": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_session.py::test_session_recycling": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", +"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "f39549678b9631de2991711e728ff7a703ab80be965d794b40c69c0010ede943", +"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74ca896a0493ee40b4e3a709f4cf1ad1d5e80dcccf7229de09fe1a3e40fdc615", +"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f7e9a2550ae7c57cefb0e2a13c62a1ead48fcbd86328d372ec7b54b26d51101a", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "f6d22736654a397b99e7ed4700b88235953bf7b11a293b0fa975f8225dfbb07d", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "671a366a006193926c0af0d7a84f0feba09a220bca32fbc609b17ac431f6f79a", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "c4c9e8c395f99b21e7de2216154a18af726beca5b82a09e689b35d02b6d14eb8", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b95cba09bd47cb9ac2df7272a1ae1e7a6d3ff3b345ad40ac3d139d99637c1ed8", +"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5de5cbe74fe51d694ff926523f318ea3ad93f98bc5bbb13519e76c2f2c5cea43", +"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b2d4b75a4c96cc3ab52056d4b4bc83a38d948bb35aaf422829b05c43ac0cf14", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "e956201e6a960c53fee449e29be2a3094d10bfd7ea3956b0c356aebc90891f60", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b8006f9f20dbe6b437522702ea1068b15b3320909f8d6d86eed47c700b4d9bed", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "f911f2fcc0813237d78c7c59a4237058aec8f8066116703ed4402b70ae802569", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f686330e653bbe1d12bd05b896a9f6fd60b10f9ec1bb2e56cfd8de5e9b7f2941", +"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "842b1dba8dedf7ee6a2c6ce15305dda05b249d7a1cd4ad2854a4a2dead2657d4", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "2c89c52a396e7aa8aee9b5216307b8aa89fd613d2734cbcad6200f95a614b418", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c755c8ab6ac30e0e6b5e74b820ab2fe8dc2651da9f28d82206c50a1b12002d57", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dab7d08e722611f6df10c65cf899eb5fd2d7c581b9782b20f915061bf3621a59", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "9e50c84010c632d4f77cf6986589d02b20612e0750330d7698747648186ee2f1", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "c96aa7c1a89ea02258c3de675fce069ca711a373e0da6f4243df2bfad4dc99fa", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "872dec677716e31c8a273cbc2fb0b378721f62c8520cc3e58c66424230c6f113", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "a8584c502480d28e3cc5ff93f62f46430bd78103b4d2530130e1b84e8912a6d7", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "37e2bb21c01ac37d2766602293139c1068fb2fa1529e47447b19800e707e1fd2", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "9d4e51b1baf7958ccbce3fd950f56d39b235da4d1428889fa0bdbb9300b781ec", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "dfebebe52bd943dbb719062355b7ac38729cc95339a49b795a34fa900419c4ee", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "f51e94cc8df4063ceab5fe431c9a53544533d809a6cf43e5beb4b5c2471d44aa", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "3e23b6eb2ee4d4ae726eee3105dcf06d2914f6dfced39231496ea4c181ecd7ee", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "011aaa0232bfe00f8df11afc2de1c00d01323624e9f4483895965d125e23d971", +"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "7a5407948b99a424d913a27023920eb5deb2b06cba1b78271c8ff6c69b56b85b", +"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "87f09bc2e7d3160ea1ffa7f340ed8513ec64b8bbb64e884e82f80fbb07899e1e", +"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", +"T3T1_en_zcash-test_sign_tx.py::test_one_two": "761e56a0674e522af18cdcfc9cdbd398a7f82f9454eb8bebaf076155336f28f7", +"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", +"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "d408c807422deac11166c3b232208951b4751fc34b3c85a71d2794a42efe0e5d", +"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "05e12d33ff11d7d149711105573b25378e819f89bdaf5571d502c77cf50951a5", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "f780cbed9d8d015ba1872dc35db94fb5b311b179f5a2a4dff057529aaea7b0c3", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "ba41b7d7c77c4ef9ce5b8e50d749241d0633ccdc22aad8d9491d74a01930add8", +"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "895eca0e5eca607eaf3733956c57daf7e9fd579ccd87b187b12938b76aaa4f20", +"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "1b0591593b6195d17465786839ebba30cd59240d6b682306e81dd41085d89425", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "952c904eb590eb76d91f0cf89919faa364c28fea5a9bc72fd589fc359db008cb", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "738eeb4b4090d06eaabdd10ef6b1a0371b9524f6d1055b3c32ffcfa57f26984a", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e6c4e554b2285f7f753b16cc04eb8a1c70baaa76d2b301c7e104ed6b45d9bb78", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "66018aecb48939c12eba4691b10fc2b32afb309a018c3af154a1ed032bd788ff", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "18cf16ebf22cbdf4a77fb83c12e43613cfd9cfb302c5c09e66e1ebd05f475b56", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "18cf16ebf22cbdf4a77fb83c12e43613cfd9cfb302c5c09e66e1ebd05f475b56", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ef4f759f62a09e822c01cefef03947f8369383260243e0f00de2c3ba4915dc13", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "20a8c35d06f9d5050ad9644b6921e73186abed298da83ef145d2c2af5b8fc671", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1c9dd8de0ea726a346ce6480bec2414b29acd6779125d929fa83d84ce9ed3e74", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "399bfd4e6de87e62ebdc60087587f8c27e2befa2b8e6bd9c719c3c100c568057", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "04c01bbda28762974b064751748d37cc03a9f526e99180a8821420d8bca14a12", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "04c01bbda28762974b064751748d37cc03a9f526e99180a8821420d8bca14a12", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "cd27505e5b5c047732ddef06cb93ac052449b79e9babfe4fee6589a453d6fb0a", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "9d60806fc7e7179071eb959f5cbe67d97f11153cbce97864e0615254a163d537", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0b3d3893f01bf57bbd644b19bb2072f8c435931d8cb2a38a97ac2659844efd3c", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0e89f958dba7a48f1c417b808f71b08d84885c5d184274c3866b7ead5bf09f3b", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "0e89f958dba7a48f1c417b808f71b08d84885c5d184274c3866b7ead5bf09f3b", +"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "fd274cc3aa4dc71c6880f7ebb93577e9043446eb736fcb3abef55f09e6b90fbc", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "fd274cc3aa4dc71c6880f7ebb93577e9043446eb736fcb3abef55f09e6b90fbc", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "eb248113228fd3b7a0ff69c4a409ed3e21636e5a59a96cd573b99f79367d41e7", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e6504738da471c13b2b48885e4f7a8a4b5443980b5d887ee96392423b1a9aa18", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "076054bed839f3babd158fbe2e31b3450440b384404826f4acdfa47d27ad97cc", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "760956919718a2db556a03fa4f56d319652f97b4ea2ae120e7f2f8e50dc0e4e1", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "22977c30f679b8e4e32d6df32d7ad03b1ea88f89507831f29db3d0dae36ec00b", +"T3T1_es_bitcoin-test_bgold.py::test_attack_change_input": "8b01437a2c0f48439411680165ad9e17d0192e82fa7e8bd661c93b25c399cda6", +"T3T1_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "8b01437a2c0f48439411680165ad9e17d0192e82fa7e8bd661c93b25c399cda6", +"T3T1_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "e278d0bdbb636e1ac4c0104e22406bac34bb306a55a4632a6d8ac85a7fd065e4", +"T3T1_es_bitcoin-test_bgold.py::test_send_btg_external_presigned": "76bd5e516b65847c293d393ee7c2cb041c1c6130e509df3050c9466dad72fa23", +"T3T1_es_bitcoin-test_bgold.py::test_send_btg_multisig_change": "d5bb12a0c3ee8c066ac2b536c2a53c04d08f28876c2b520c5e4b96a0618d33dd", +"T3T1_es_bitcoin-test_bgold.py::test_send_mixed_inputs": "ffc78dd3979a5880647e4c8f2579915dab175cc4e8f6da0befa960b16cb30020", +"T3T1_es_bitcoin-test_bgold.py::test_send_multisig_1": "ea427fc37728bb7451c1a8b73f7b6300ceb5ec33b6fd5917630a4871bd75661c", +"T3T1_es_bitcoin-test_bgold.py::test_send_p2sh": "774d689147130c4653a7bddfb4cffd35c4188d432fa755241cfa61c50ce194f2", +"T3T1_es_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "5dc24209a2e87b65a38cd18fa0f01685aded24e04be57c0e0355284f5609f5a5", +"T3T1_es_bitcoin-test_dash.py::test_send_dash": "ed3fcc4d9598ec2042ff11a68e6dc90e310c31b74c5e33c221b7e0122f6b85d8", +"T3T1_es_bitcoin-test_dash.py::test_send_dash_dip2_input": "a40dc3ba3c50655eb4e732e065a17a143e2f36549588f9a4acd96de4cadeab07", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "faf69144e29bfec469439bc4012b692183d152bc6b9fc22a7a2dece1716e98e7", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "22ec43384d3d6c49cbccbdd5345bea96abb96fafa2850539a80686ff8c1fc483", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6ddc1073c68608c4d7d51343a2246c0be6590235dfbcd2cdcc2151941193bac5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d72cbab5c93572e17aa9b183ec7b04de6725a8ab69cdb570d873fd46d84acf1e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "85096079c05717cee1c339126547fe5ce40f1dc6c7ddaa796546e0615e559424", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "f54770cf021d90afd81bb6e487f580a69c535ae7c955ce438ac4882464023838", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "6155fc444c1d45ac5cebdf03ea177b5886d3e014b28601e943afb6668ac4155b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "28d63390e293289c062cbaa9066245a091dc902a5dde9b76c20c8767ed16b27b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "71231246c65e9474db0e377fb02e876a0c75c081f7424a156531e234d36b48a8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1ac80b10559da7fb3b3198b6cc485a87cff3020c786df18e8e537252d0e392fc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "1479ff7d5906151fe09df89f9c3c62dc3806a1c7ab8c0b6063bbe6404469f79f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "f8913e114975e207939fbebe9a7b99518d9d3e6bcacf7f7300bc0fdb31396473", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9b15b67c20e7c833d30a8e4e6b1429b88e034dbaf2a4ac9ef5dc0d971253db19", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "9f3b33abd5f0baf16686cb7cf5d25f0cf9425e9e763c46a1f78562ed4ac5827b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e5b34f3fcc94cedf8f92f68e75b945bcbab55eea0582daeacd52dd693ffb3fc6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "faf69144e29bfec469439bc4012b692183d152bc6b9fc22a7a2dece1716e98e7", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "22ec43384d3d6c49cbccbdd5345bea96abb96fafa2850539a80686ff8c1fc483", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "6ddc1073c68608c4d7d51343a2246c0be6590235dfbcd2cdcc2151941193bac5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d72cbab5c93572e17aa9b183ec7b04de6725a8ab69cdb570d873fd46d84acf1e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "85096079c05717cee1c339126547fe5ce40f1dc6c7ddaa796546e0615e559424", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "f54770cf021d90afd81bb6e487f580a69c535ae7c955ce438ac4882464023838", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "6155fc444c1d45ac5cebdf03ea177b5886d3e014b28601e943afb6668ac4155b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "28d63390e293289c062cbaa9066245a091dc902a5dde9b76c20c8767ed16b27b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "71231246c65e9474db0e377fb02e876a0c75c081f7424a156531e234d36b48a8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1ac80b10559da7fb3b3198b6cc485a87cff3020c786df18e8e537252d0e392fc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "1479ff7d5906151fe09df89f9c3c62dc3806a1c7ab8c0b6063bbe6404469f79f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "f8913e114975e207939fbebe9a7b99518d9d3e6bcacf7f7300bc0fdb31396473", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "9b15b67c20e7c833d30a8e4e6b1429b88e034dbaf2a4ac9ef5dc0d971253db19", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "9f3b33abd5f0baf16686cb7cf5d25f0cf9425e9e763c46a1f78562ed4ac5827b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "e5b34f3fcc94cedf8f92f68e75b945bcbab55eea0582daeacd52dd693ffb3fc6", +"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "b98d8923c124769303c839d5df22e72ce5d12d48d727577c1a4ac1015283bc6e", +"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "9c547b6cce67090f083c0369a5697985687d806d48d6dab5596090b04ec62877", +"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_bch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "4d2708eed07839ef53eaa4bda8c4ba91c0fc9dc9f85ce15539b4b4b2af544186", +"T3T1_es_bitcoin-test_getaddress.py::test_btc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_crw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_elements": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_grs": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "f98660b23bcbfa1930516f5da50cc49dba989fc28d7be83097760af7a7b2acea", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "c358127625489f8b1c6d39ff971d12be671d669df653d3408cd91a0ed2343505", +"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "2cca5c65926406343121dcfe5d49755d2e64485f455f4fddf7efa87362f39685", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f8b19b6479e93d50acc83a808665401638a42605596522b6afdb17a1db55225e", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "f7378216552281c524f94b23136b4ee1f8477516279e70e6a3dd16f1471983c4", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "5728d67b6bfcaa219a386e7d8ac7e8cd061f0384c7da40f06bf9a0e334408067", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "95e6cfaa833ce25a340b5df15fc78a71ec733eda6d323db7d4c3eecf48a1f4b2", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "1f239c5d5a54abef6ecfa7fad157dd474a9b2ab51f24dc7792430030e23edc8d", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "3a4c53b24ec7865de481d01afd0b8cc0ea8ce979749133f9365a89886e9a1670", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "13c0002413c4075215ba2f8a82d6f993d530bc30bb5b9e18983739177537712d", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "1928424e55cd30b0d6655d0e90db4fd9a1d0025ba26037dc9ef7ad6e56ddf2e7", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b2541f544e663888b6bea74a070d2a588c27e5d7a56ddd894ee45f5d137593a8", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "87d07eabb24737777b134aec64f987f2ab8321d52da48dc9d8ee36823e1ff4fb", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "6bbff7a5961a1bc96390f387c2e3ccf0e976270cb5e768413f98830752b77b8c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "601f131488af44267ea0af723895b5f35ffc56b78448df261ef39f8a26c45ef6", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "4b1b67068a16dd9d5b15f5f367203a5fa53b45170ad49dbe12ce9a86c236a925", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bea35820f6bcee0245fe5cb065070d3c068183a41c9e60e156db0f196a9f517c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e85351a921905bfa505d9e511ac746bd12ad0a48a69360bb026ce1e2d74d8784", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "29539910e5bea380991ae0fd089b6275576eb76108957a80b678c1eff0d7128c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "d63bb8c1f17429211120fe78b685843e2ed46533b212eca1f386f7de2323b9a5", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "fe74c707227811444ff53a75101701fbde4ff580a45684906df401c8fa374262", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a8c594da386f9a55e6e59cb6930a21f92c4525286c47348f0a00f08563035e89", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "f5e799c41a690ed963d8a75efb3cae6693dda8e933968777949567cd38eb9b11", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "13c1e6cb076df4b4af8773379854b251fb7b1cb9683780f336e348abf983e553", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "5a71898c513e9edf18711b601b49f8c18b7dad2a965bb55707e8d8763dcc0112", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "373df1ca3bf96f8fd6c4b6c35a48766857121defa5657e9ea6caa7fe9cd55c53", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1e573d152e8f090c28d7ec9464a12ff7a2e36a3c75e2db916f1c8c3dce8aa193", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1e573d152e8f090c28d7ec9464a12ff7a2e36a3c75e2db916f1c8c3dce8aa193", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "12e6fd9fb8d26ce9e0f3111556dc27e377b27974b8cf58a333c8d894a9a00883", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "0c1695f66906d5bd9bfb76671b5e8163a9e00ead6a698187cad1814844ae5de5", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "10b4ded8360da83f5245187c371aab2b977759570f0bd9a5eaf7a9675451e9e6", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "698f77756bed9a1b4ab7d549daf3397a16179bc63a4b192c89a92c0861021705", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "25f8748f0c6ce6d97ac6d042c2ea636e05ecc23d2358673c309945b8ed1ecf44", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "399c65e1d1d64494999bd00986a9ce233b4cf075a431acaaf9c911b7e9172e31", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "784fc6d8601ebc2b1411564a31abd8d04d40fb71d8ea6cde0f97d960963eee4f", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "15077e08c1ed8ad35e8658e214d90d0d066a010cb4aa87636b69d8acec35e217", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "fef188362447afe35f7f1256a5f84b5c38028b13d5c9c714da1245a4f96c1de5", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "eb822072fddb56566a7e9362426a0b09be5f8707eda20a646d124a247aaf7447", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9f7172887c87955056667f70fb6528e9b027b65772eea361453e8e11e99fd625", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "19968bd79ab15df993aa14e4e2a43a5d4d0a74ecdf6b4e1cfd4da3cace738bdd", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "2fb7c0b1eb770759b3fa5aa1ee2eca486a8c8d36c7a42e4307850ea203cbc52b", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3a2f01810428e9cb3d86cfdad8d3183a2936384371081130b1c35b6160c27ec9", +"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e5446238572852881a68efd4c1819b32a6b26a7c90e2b0944b71233c7c00029b", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "57d7983f5a0133b2bc108e9902460bd19d5eea7c68e4052d25efb6379994f497", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "7c4adc7a9b7f0a19c8652575274b8481ade7bb2836319c8035c3758748887472", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "001aafce1f19ada366ada1c0712ce6e45077661ed56b6f3e54e4eb7196d57e14", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "05d511e3d4e4b86ffd1568f99646d37aa5af3ee04631751b75472a23e02aa1b3", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "5a6a2aa0f9dac37a4214a23fc4a4221f9aef18ebc64daa4e9adfb0ef533e335f", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "650b5e896da8f21961aa30dd52338fec419fa0d1b905255c9428aa9da0d81b99", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "4c12d5f5a324314d26b7305510917808e86fea2245aa2f1a32ff1daf72ae81bb", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "98c9310893e05fb29420fd73c3a039b021063b70661b722056aad6ef578295c1", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_grs.py::test_legacy": "4563409f6d0d4c1e10bba0bf8c92ed213963d6486e1a8d9d7b43965618d52ade", +"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "4953de970296f942ce8f8082003591226ed3f2d1f5ad047182a7a403ae3b8fb2", +"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "d34d2bd8bdd202e8be70320a7b138a73d890241584f7173b0d9b14b27d3701f2", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "d3b17e7d2083a1ed5b82f8c3bb7f98d8c51b75dd11c871750abcd6fe46a8ccee", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "75f74225be48987ec9cac86a5dd4b99b83fa3df4b51f306480229fd4355f1eb4", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "d286b03d4f4d540ad118099a594a401dd38c525bb4c94e3d6725ed1ad6aa9a4a", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "ee4ff59745b2f23c7e5e6098efd991b764464b0828bd7b6b682464b654429023", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "97d94e951bf2d322970257a1ec13a1195d16246a1006a5fc1d71fd1f1e8c7067", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "d60a912534d81ca7860e3c0c8e8c05aba7e384d543548135e4d3327767c4f803", +"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "db332b048e4b7c0e88ffcb2acaf5723fad1d76ed80bc7ebc40af8f8395d86c2e", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "2c0eaf0dc735ac4d81f8b12ff65efd1c48e0e8c069eb0cfcd653753ccbc54f5a", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "fb9b34983d22f7967d297bd40fc8ad2f97c82706263e0e48e6d738243917c793", +"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "b64d8168b70f1901cb23c91bb78a1d0ab55d6e47cad7809c9959365c31d58a46", +"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "3f594071da8b1b7732e43b0e8d6c9531ffc522b8fa32ddab13959c3c1e87d0fa", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "f5dcf96677fe31f1abd94ea4ac0bff07bec53a448bfc857be0378df3caad2e3b", +"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "fcd0d1b6b0c0a3516c809f077f591f0b02ee508296cec3003db03a1596f54b1d", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f3144b61310c997cbf6a72e238562c85fe3475ed66b5b4833f4318fd33b76cc4", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7b22064884ba66c14a1d12cdf683f10ed9e4d95ff42a522da291d505bf2ad48d", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "a5bda3b733a5cd52a2564199d6b7f9f7c0e1320a0aa58e788dc880a86f1574b6", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "4606121c0f61cfaa2bc4490e1d298a892c284ce5dbbb330f3a588218416b3519", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "587fce37de02ab2ef39cb479e71d07e6ebe022fee1709291a832c4d1383f78e6", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8653ff07e2ef0eb13c4a8e052443cc54e6ad4e69930da75ebc7dc85f0062f3da", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "a1fce37c92875beed8be1a4bca3008f7f853787f5e913138f7b7ffadbc08d38a", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "5f142def723b8b96bbfcf06647b468c55724cac8c5bd8a01e876cc4cc7d94496", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "923a30ea02347943a0cebd024fbff4a46d6a42bb2dba359e2c3eeb04c045399f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "c8a7168134c9b069a4ff5c898eba4ef73b9ab5af15c299d429080877fcea9603", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "5f2deafa7d47b2ed264db3242236e7df0e6d3b90d5e477bda608a259570aed86", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "84c3f2d6b4d2ff2fe121e9f5d38cd71339019026598a30ed3b3175eb9e923698", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "0cca8a1fdc10d5841efa18d41c0086ce5817b7979ac4b51d50f53c44d632ec28", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d3e44ef37a9e9e384f1cdf679c3f3d8e801ff21a5110d6ac3f27b34d8326b9af", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "9984930ff382445ff66801ed6486054ccb91e0805fb4174e10a8e77d9af421b3", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "b15061258b75e3a019a010941f8ad0290e2138d74095822eed9e0164753bff26", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f5e4e9c6940a8b4a85d615122456015a323255333a49a520b1f8b9f3aa64c46b", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "342d16193e2cb4b527dbc6432f4c3c3252918392b27b0c7ffd73ed02d88e9d62", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "6acd58042eefe870d4ebd4c3b4fb2b54fe522036fdfd79a9ef6059ba64a64641", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "efa71d4c702aa291ee169cc2e3671d571475c3078b5936335f26b43c45e06920", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "d715aa7ba429d9950e3cb72583fb665926d13bc96efedb1edaa7ec5757031efc", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "6b2ac7ae1f736519ac86d11083b67f822f0007f564d88345af45bdf64fbb5905", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "d6b4f6efd2b1d19f5c70f598ae1326d7b8782a82d020c38c3a0cc1ae57f29981", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "65969cf5e8ffeb3937099629e3c6c22c196ea535eb0302715861c8837303398f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "ddfcc44e768be54fb420abf79dc1f0b7fbc2758297c1f6415e7bdd85954e8617", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "135b8e262bbd45d04e708cb8f990c2cf79a81ed0b11a9a0877085548822cf4d0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "ecefefa52dc2fc9d37dce0d7d26599ebdeb278e6fe5c44546ca7b388f2f74f21", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "1aef67f0e54a459ddfc0b7ca60ee1a197398674d433f514a5ac013375c3f0742", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "d52a97b9fa1c017dd1a74555e31c2334c6d95e46927ab35ccd1f8b19cf507e8f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "dcbf05599c5b3257aee0e223ab7733234a97c2c44d87e67d03578c15201e6f4f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "97bcd70a5b8d0331189085d5ca78550bcd0d3f9723cf4046609388af5f1c6547", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "fdd3f5445b60ae8f9ce1e29ce6d0109ffd0bd3489fb43960729afe6f27a49515", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a26bb90fa974393ae81c35bc57a88ae3305acd2b80b48c5e007f0777efb61007", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "744d7848d12b904a346e59d20da31a48c18d290bda4cb8343b186c801c982786", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "797858fda88096c0858171699756017bb16f8712ddc06678678da3d20a046ca8", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "bbb0e86f899dadb033338abe3644bcc5f96505947f21a33e437b70ac0edb8651", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "4b0d7ed03156721d5eb4e6c0c9b1c3d644649cac967db21e563ade292bdc25ab", +"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "f65e165065966cce6fc0703435c399c16bac1bafaa8de9d64f382e6c538c5b92", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "9b8b7dfa66f9940a2428a9c8752722bb92260edff7fa5dbdea774236a601ef9f", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c72c5a5cc233fb8f0542f54145ee82edf05f2216835635269a3b634d58a1842d", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "0f4cf24d270f7ca35f92532b581e16e78a98cb23afcb334a3fd64ab8308ee93a", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "7d62569e13f7fde475f9dcf4e972966d302def211afc34fa4395e9aa519f9723", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[decred]": "0333348f49379671a6746124d8b41b91b7f451da99f4373cfe61edd1fa8ca5fd", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "fdc905fc6d6bb771080835bc4eb949a9d05f270f195e65ea3569ce6ae8f8c74a", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5931b76ca29d80fc6bd9d562ef8d0cedc346f57215d823f6a70aaacb9619761e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d3d696582c0163c7108cd38d3fc73796b77e7f383715cf3c5e3a848a75deaac2", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "4de0d0fa9d0bf1e0c65c80cd07957cbdbe1b82f13eb61542e0b9b23cdd1a5197", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "8977d30499462e908f52426be2aeee8fdc30ef1080858b146cfbca6c6af2b2ad", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "8977d30499462e908f52426be2aeee8fdc30ef1080858b146cfbca6c6af2b2ad", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "9d9c6cce8e6efbbb3fe609c07bce07232b802e385727802a48750a1530d99732", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "41f6a27a4bbe55a47922d96a218bbc79d35596e49cc67e7a445345069c8e4911", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "4ddf614aeb7c535c4f8bc8ab29fda9949daebb867424ac54e486f06678d8437e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "4ddf614aeb7c535c4f8bc8ab29fda9949daebb867424ac54e486f06678d8437e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "b650a0a4bcd877354874c6bf9ffe2528d5963db885a103468f94dd03003d7e83", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "0813b563dff00bbc877c506c138d8072ed1f7cbc68c10eb6e6485f58e94d87c8", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "25ae7065b2da7c486be38ab6965acc3fa5c6c10291be00a5bd6b9a2010dac1b0", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "25ae7065b2da7c486be38ab6965acc3fa5c6c10291be00a5bd6b9a2010dac1b0", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "d0838cf2093799d86c3dff084ac958976787d99980e152bffe2c92764bff9cc8", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "44ee8a217ae5098018a5d66afb8a208e0a8d5ef86e69ca9c9767fc6f2e87b536", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "74636f72ed305683e9c3526942871a24e5946a85360c552421db5f103d67c75a", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "c7fc248d0d7780d68d3ba254e4afbbc4d40feeba3d3c5d26c189d75b97e264b3", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "cb08dddacd3cfe048c82d80adfe68fa7ce97afe03c9f171985416b99dc8b8195", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1d19df4518b618aee1f104f47ae851dacbf5d91f833fd1cb89e33e38d9aa8b06", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b8dfa8d662bffb376830bd476e57e3f7a3e39a2f7bdad18156f45100651ea522", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "f0a6c76719fd40d063398e19674f7f5da9a178ba5e218fb681a84ed0d431d329", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "d10866e71d5002f690d20eccf61434bc32f979c1d89b941115afb30d893d0832", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "dcc1a216feabf89ecdb3aec9ccbb0e51ddb412ad64a63bbf3bfc1ba349e0fb3a", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "dcc1a216feabf89ecdb3aec9ccbb0e51ddb412ad64a63bbf3bfc1ba349e0fb3a", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "0c844233cbb185b2b4646ea652537a4a893f96d1ffa87a82f65dca7b406810c9", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "68e1630c59d2bc503fd3b51d9b92f013290329cf4b25bdae4bfcd655434a28e0", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "15013c52e15ff3db19901882e533009b253c1e03c75013c97ebfdc60b096c501", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "15013c52e15ff3db19901882e533009b253c1e03c75013c97ebfdc60b096c501", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "2d317d802c61333816ac25c320903dec52ae70c8c5954c83682ae55e6a88af03", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "5436d7ad9c560fb82533094485caf44c26072b9e463ba47bc4cb16a7fcae6a59", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "2a553065591e07fc61796c4c30fe00843efe9c4a048d809a2aedd43aa0d7a1b4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "2a553065591e07fc61796c4c30fe00843efe9c4a048d809a2aedd43aa0d7a1b4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "7ae250ae4a531a0189b21da6e999d175b1c67f1633d05064bb52930f36864124", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "86e41ed2199d1709f675b8b81fee7b693b7e5bf7a053c6b3a31db8d354bbfab4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "58e071eea8b578747b7da9e904ffbedfe223cd006153693c31456a9c086123de", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8cea5bc5398d2431bb26217b4e65385f4fb4cc55e4b2cf4598ee09331308790e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "d693c7f98b721f7fb02c24d037c5c46f9500493f19a293a9d4f284e6be58fea2", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "24901d79b4f02752579d83c4c2cf9fa1c490f1ee1820dba123d48b6168d4bcb1", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6073715e14efb84ff2cb02fb5686b8856e9c4bb3a51cca2371538e2e7339582b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "728ee9210bf924bd331756522d27469cb45967f0d8a5a7b4db0a9251afef4ff1", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "278d33da6d0e48dac1400e5a5f7b68889118e2ec41e7385fccf879e4521a9973", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "21aa1260f87d7e417d8765ac007f308db57b158c8d095c3573b88f306483acf5", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "09484bed6e3a9b4501f4ccf7b20f88b52e89f384e717d5a74e2554994c27f718", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "35a91a0eadc5c76cbb3853beb408235f4af5881b7621981dab00b34ea88e38de", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "99732c70b8525371a226aabed800faffe578fb57edd42565cfccbb6ea5dc538a", +"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", +"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "26e86646c019fae74d83cd232fcad54b6d328bc7fd203c25473fe09cf1106081", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "9dbaf87d255c2180b0857e6af02b8d8294a3c6f7493db9800c06d952f83a842d", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx.py::test_information": "30197b89e17f6fa38685e2fdd19781a2b9c37c47d02356e50c41423804e132ce", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "092c1d46c801cda93658dfc8d7063a6c9cb93b95c7b1b7ed8fe63293ad3d4b4f", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "e5f850f5d4dee4f887bb9860679eff5bbd9d5b594977a7a1592ba86a77ea6be5", +"T3T1_es_bitcoin-test_signtx.py::test_information_replacement": "a4a25f0b8c073cb3a03a71731dda087e015b4160e7f3866ce6e1a271a00dbb08", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "9c51658a803a2de18476f46961093d22723a77a42a534c2d5a07e82b933f3ca5", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7ae93e603c7376f1cc904b85362c89417c7761d3ddf3df46388500db0d6994d4", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "0832f29b1f4f6dae9c014a10571fa7df21cc938b0cc42f47e406844e5207f2fc", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7ae93e603c7376f1cc904b85362c89417c7761d3ddf3df46388500db0d6994d4", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "0832f29b1f4f6dae9c014a10571fa7df21cc938b0cc42f47e406844e5207f2fc", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "363be180286c8f11f48807d56a72f36282dc8e4462e1d74b79e6f321407788cd", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "bc2bb62c013772a6f4d64f90eae82b554694286305a5a41b5b9a2f0e07487e4a", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "28a869812fb864094b361d9db78d24a871775c35d104c0e05b3f4bea78a262c6", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "dfd486cb6c0ae7457d3ea9e90a8330ffcab03b5d749d6e41fedf6447ea900c50", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "f440ff1d30aa4c53da3b5f401f1cbe429d2c294a5030d8f092e550ec43c19b8f", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "14fb84e71ae9f553d5bb08d0dda1294ee4fe9cf2fafb534e89f0c8577715de83", +"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "98ad9853dbd8294b85c4e9bb3c0104572d9a2645e920a8dd509ffab9ac26f5ad", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "516d8486215ae0c5745f6e16a7909ba08e0029c6a0d094d697922cc083efafab", +"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "1a57bbbbc21ad10327fccfda5a0f030cdd11b13ae0e90b866eb477578408c546", +"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "e1f9bd7b63d466d30fb6c902a09503c126d73ad7babe0104d9eeb9c9bbf0d81d", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "42ac0322596cf78f9deb168375d9de0174202bfe5cce6c69803236d19872b25f", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "b5a81e44f3953a72ca21b10771979407c673514df07a5d1bea37261c92e8668d", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "a7c4eb8dd29a735914ac9ff677fd140615eb57370c69f755c7df95467dc69547", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", +"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "6673021b142d18ff60c83c522a2e9070a6654f573ff6d7e73dfef7635263e366", +"T3T1_es_bitcoin-test_signtx.py::test_two_two": "8cec7d917caf4a260d46d663551b5c05d5b171244530f75b525b3358cfaf1d8b", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "86b50505aa32091a23d1f77c6c2ef9657e95e492d807b0c1b45d0696ee9ebc43", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "d49fcec7ef02d154e1754f54d9a1e57cb7b91e4a095f0619f48acff7eb6c1eb0", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1c9cf9d8d6b16e7c2983652d6ad6e71de8c4d55d7e64895db7095ab348ae7762", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "430872bfb3d5ce69b91251952032f3327226f74e8728066cda39b73d0f9f82bd", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "28a305b707f75b299b75359590a1b8cee5d60b5b94fd7b28305bf184f96c2253", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "ced69375f7e12beaef0663e73a05db59cd2a5831e7b6be59635e21a917c8359a", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "e4f73e3554305c41623063216269116971033f7282fc89b99eddd6b75e40032e", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "7b9c0ae82396bf0accabd5cddd6f981f5464a7149a3d9f1051dd0a4f09bb7965", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f4ef5f8af31e8be4212e8ec4e15879027276dc8acda9fbf1fc41e0254b9c87a3", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "1b976ee2d29f392248aab13088da972cd43d293bb9a8f868716434740387e6a4", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "eabb65200ad815690f43dc68522e4b91b7ec87e826394cd8abf93009d925d2cb", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "500946dfb6fba3dc574102ee87dd6dc9dee383feb3624c769bc555690f077d27", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "b8c2c08c044b1c91096012ccfacd5c50a1064a27ddc332c1bdee3ee68c3b157b", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "8a63254f364b044b53c51ae12098a8badc360d4b7b09b74f0c8b9f0fa0ad873b", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "d3785631e139db7f3c00d78e78b7bdae1d8b3f79d07e50077068b94127b3f314", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "42a00fa98c290f5e68e7c202834e16676f5b3a691638f4177fb0736468650b36", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "04b0636ca6f256fe9e79393e187a22edc0127bdb8c57f23dcbba6d17a3f5bb11", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "e8cc05b3e23c1be2d54b3657f48b834f3390ce0425d3bf80ef7ccf9dfefe3acd", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "532ddfa2a37b83af770deb0f376bd86a9dc6f2304781dff220208ebc3e5735b0", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9f4fb4ca24e451a38196b521b89ea034fad9c8065c40b762f40eec287f947af1", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "532ddfa2a37b83af770deb0f376bd86a9dc6f2304781dff220208ebc3e5735b0", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "9f4fb4ca24e451a38196b521b89ea034fad9c8065c40b762f40eec287f947af1", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "9e748b0ba4eeadfad730263b30515ae61708e21e920724e91ff3305ab37f3b14", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "d7a5283fb30d76c4e19cc9aebd8a386a89bd540cdcbefe1e8342bb5ceda64143", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3792fc93cba778f943cc912d21bc38cf57811cbb4c9e24dba30e34f7f6f4bae5", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "45e143a0db817ad229123ddab3cb63d53f25650ed45a430552573d02fec12a57", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a238c7077b7ac501b8fcae467010ab55dfaac2a2bd2f6a3c9dbea4dd71bf771b", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "06c7c1104cc6a641c62a7dc29ec587fe346a7718514ae51b5acd89c169e4d092", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "eab039db5f270e1dcde3c6ecb3810d6f20d79bb819e510ba24a5492326e60659", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "309e036bab23c44a687b36b274e08515de4a8b4dd160b23a51b58de06e58845f", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1060c9b344a4292fd30185cf067114f73331d4846905bafa5b16ef8246aa3e9a", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "2bcabd059f2058c42fcb7d175bc334067b9b498e1473e2a27c97a39f0b20f436", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "97301f6d23217b870c1a44697d8c138d864bb4b859ac6c399e0d650bdb413b7d", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "1f5569a3ac994d60a708da889a66df002f6a9caa3e7a6e238fbb974e81047251", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "ecfefcf6523ce2117f27c589b65042ad839d629dc29ddef5ff55da09e2f4736a", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "ecfefcf6523ce2117f27c589b65042ad839d629dc29ddef5ff55da09e2f4736a", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "73c08938bf36badc082530311ad5bebc63965a32be2e9164804697d37631c88e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "04c0397dd5f41d05ceba647aeb7268b392925186168c7c8355921e4058cad5be", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "42053e440d835abac19c1339f250d8785f909b29686fde1df40fccc33381add5", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "73c08938bf36badc082530311ad5bebc63965a32be2e9164804697d37631c88e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6189ebc0354d81f120f544d558ec776ac5e780b2ccc3bf698c1c777e6481fb66", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "c0ee0400211bfaef86e69bc78f0636ae80774831bf7db1f3840a55e21e91953c", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "70b936e5bbb0ceb5adc9f34f8d9d35358c0c175349b145b40cb2d18abe6bb1b4", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "883a23ac99b1c93f8c906fc2d10d082733d17962517cb63157149942dc9b6d8d", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "a46044305c385a0b3ebe483b4133f9660475f3d3f3f0a815a3c7c7e6a7c577ed", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "db23d373f28e1bb9db7d37f74ed64d3acfe472bc8b484e7988091035bc187bbd", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1b61852baf6ae54f773e04881dde9068c66b446a13153cb407a1359969c4105f", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "6b21c1698b9d8a6f8ab1b986ccddeba856657cf915179398f3b8bb09f8aee95b", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2715a046eb49c5b2996470eef20942fc40fa4828d634b59b191564f1e05d029b", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "0f9caa46db414d83fcee593193ba69887004e1a441fdb10409aa04eadf69000b", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0aa263bc6bb6682087890460cb9f3fb5943aeb6cf3d15bab4bd100519d4cd12e", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "b0d4cc3573cf6613338c5da49f838edc888705215c666794ce7f0f27ce823a24", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0b50a9e211759e63539001e61cc82b6e823a9b2352a1934ae9c08c99d7bfaf4d", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "506f219a8c061164fa6beae5c13e2cb8ad7190e09723fa35d169c137b3b421ff", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f7678e8dd632fb5b24d4b5e9f62aac33073c7e7cde81d6f81e9e012c818abc59", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "3afcf24fd12cf5907e0367ba18e126e76733170ad2d40f77a5b55b31cc8cc645", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d4e2bc16ef50696c3612c92e167c2135f31b93bfc088638e520ffcffeb244faf", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "dff8d654cf7f60c978580a268e9725005bda890c125ce519c9d6078985bc5056", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "27d9ee431c91ef3c4a8501d707e7d38cf6337e367203a6517541dc47b744e683", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "3ca0ff607b0362a9e6cdff0b7bbf740c19cf9d1b853a04cb89f9737b43a40e98", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "9d482381700347a42c708b40d550a196b7b823d4a69f00e1f7a7a38d6858574b", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "9f7232f62371a7b84c72ae844e318460f814df4fedb0cfe6c9eb5dd9a6c30653", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "8759061f0a9f59f474a2a81727baaccb74e26aea07911a6da0d97a81ae12aeb4", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0340e423600e12a749dd13170c0d28addcbd98e29318bae252d281c24d543bec", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "0b6b0bf59ab14a8815f637fc4ef9875f1c2a9e3a04fb171ee7e32b85cd6449f9", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "9445f39505e1cee57bbce9029d08bc2cf00f8a27be7b569a7da4a2e1114bfa41", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "e6f998a112ac52bedb39b76ea3396eb18ebdd00b877538bf2841327c7f2f7533", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "95f5e020f24fbecc53bec2b08683e2bfdee333ff11eef0ed6226e8e17514c715", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "64076abc2ca6f3eb8b69cc40eeaa698bf121b6a57563bec6370f12aa073ffe9c", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "2214aa5a1d86a54318af3230f40660034c3ac5fd039d85086114f37b345a8ada", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "d51c87068e4a905d7e992181d37927623ab0ef0790e7550c2f5804fa08479c27", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "dd71c7c0ca953a94cf6f810b0d830119f35cc2254be8bcade21d36d5dbf5e5a9", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "caf7673581567bc11443c01738547a5d13c45ecaf9127c25f2c248091d3b30e6", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "36f0bf9341de9903cfa82c661ecb95ac45d8ac3b834dd24ae49f04bfbe6823bd", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "d4336ef395214c987eb548c343372bc0456017783f0884dcf2412e01f78cd9bc", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ea95c8b2a5963ab91880d44afeca08444f7d6a9c951d86a693fe1dbb45c750c6", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "8147da273c2980c2eb9f208064706e64e530b14dab15da8c3fedfce7a8d4f165", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "3949c7020a6e4c5f2e55f7caab314d0bf67ea08c2c3582ec66c7dfb1ecfccbfa", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "22e4fe01d48c8e7d006318b4b2c53bb9f8baba458b35406aa6155236b431f727", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "97dbed4999e9530fadb61d2893502a7c94fee8f548347755d374c311c60a2dba", +"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "9d0d1c4842438f4d4d8375dcf53a3bdd8579823fb76be72e9e5880d2e0a460f9", +"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "655ee1de24f10d07e90f8993493e60988a98507ba7b0bc0bf757326cd37ee57f", +"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "1f2caf7a70b670ea5b0cab7f211c8f8f4062af4e7ea81ee8ee7409741c283209", +"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "c8de522280fb812ae9804e89e33ea37cb6e531cf3fe835750133d91c4c9b6973", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "59e355900ad9c7559da5db8bc94a197e8fdb6d4aa0d8ebe8f8daa84cad62cc4f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "dcfb6a54ff7fd8ef200b8137cc97b145e785f41ff409a4026c023361d2d2bd0a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "e4bb449d64ca4d6c92f253dee3bd99870ff65248cb086f59c172b41595fe7551", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "5d70b466935822b6c6c5e6a1f7eb750a3a425379e7c3dbb56ab5cdfec79fc98f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "eb2502b81e490c00ab1a8603ef676ea9b4b88b51f5a505118d6233c1b2511fa2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "6e5f80f927932d01089d61dc814db00ed586b64ef1ed69fb511092c24c5ea5ee", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2c19fe123edca761389c3a3e07abd28fc5e50d1fdfd5742a2be939b133f18899", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "98c6beb11751523ad48e591e39d3f4f68e0f46496c16ee7ac0163c26e0b9debb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6838552f5f44c17b5acd20d76cb1e07a1183fae55b2607bfe6a64481ae7530a6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "5e9ea30b38f1bdd2ae8fb0ea50cc674c45a9b0bc4ad1aca4b8b0728bbe44a59c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "b8aba1b6c801622c0c585a1901ae6d952d36e1e0e0c5f02a810df292cfc58107", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e913f0b008dc147878adcc367777fdd0da19c0fb8522b3c884d61a6460feb9e5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "26743d9e18e367bb395fd49b86d14f3d44bac67ab25b71ec994b9b3ed19d516c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c95c8c9d5cda1e8aaf46a1bd6ebaf169d5579501badf7bf8ac0755d181bda3cb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "5ecd3a04da63ed92ed0742b527237d48bb248fb1b5de33293e081cf89765a539", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2dd3a356085b2134a4ca49e9687a4e90b1fd7f305e368e83c2de45e7f1491e9e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "58bf0e6cf1e0c8b60a3a0929b24154b244f8282e28d44439526728098bb1a4db", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "b0775b9d1a6f70a9691193a1efade8613d39468649746cf54d7ee8b607f27033", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "92647b515782cc70c5a92f3d2fb661316532f76dc1334e7e27308ba1b21d2616", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "59359bd5a1cd6603b8c4f319075a0065bf1b244c6696f8ed8da3b9540a217764", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "6e05225b87f28e8822a659df7afcc1bbc37e137e1731ac675d8ad36d1341f531", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1e237e0f9c4603f803ad94a37e3a55e1b897006e4cfc13689a538f9d18cbf23e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "7f49fe8da6eb6adbc9dc67d1f623e2deec13320e962d65f026c523dff005cef2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "2f4ba1c73aa550f6a63f59343d0e098d41d78496ca5f6961ca4cec4e8d191bff", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "77ed540903041db930c4b2fd08f234d4bc5d18d76b1a5aa3b085dedec02f3fcb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "f11368ffeadf92aee246346bff21ea574c540783d89bbdb415e58f15abc22fd8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "63075c7f0e8de1b9aa777586edf886d2fc2562a12802d36ff07667f98197a67a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ef7133ad48a3067c3bc80b257ac4ea77cb04d0775f91984b04f137255e7e3041", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "ddd12e413bd42d65975df9f01e34c3caed1af68ca0e7f835f322f6f9dd156687", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "0ac075a80b53a004103eec7327b2b6371239c1970442a74b05735e42779add72", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a41b1a015983635fe4bfef040aec5c7208d6a1b5230d29b0799bec99c4f795b5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0d1b76c23e117e8843601cc3018737fe549ae26fb674007b334af3e6d7087396", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e1e82251a53579070702580ff1103087708167a09dfb770d23fa3229ce88416c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ba46ad5a447dca20038cb30e8dcd1d188b44f4df9e0b15297962cb96cec64cf0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "51cccda41dd222cff0590d4173023768919769f2687897482b06b69879306edb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "f0d94aae61a5080908a482ed570c148835aaa4ce0c5deb93bf1a8017955c553c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "400ab7595f38ea923f2f8ef4d5494d3d487e1dbdd4a5a6378ea1a232a4666aa3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b7664b3fa36c9c4e128a95363a1be75f8f881b688fa951222eb9062948b66352", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "ce681b43f8708d7946843f0161f582e04669a51744215cee76e8a2c1323a2fc6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2c0a5bb5561226396e358a30191f9e10c8d54522fada452529a37f1e87e1bba2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "cedd58e10f7821a44ab7713ff3de22e65aa02c7bb6a0e65bb9e29b2b025f3d4a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "9b57bf9a10ba33ff9d87a806cb231c7328580b4919afe92dc78bba2a25c290a8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "673bae2adef7afb59f8dab2a41507833b746253dc808752db4cdbc5bcb381909", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ca4dde19d88b69842e31fde653834c75c76ea552c420c3892cc2efb25c0ccfb3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "834f8f094b9abfecb12e01be8345fe9920d12b86e3e89315dc0df77b308bc4f3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "bd85ad18729cda62f40a3c1deded531e1e682b776c0939a46fc1350505abcb63", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "5d80a50c6816dc2817ebe06035d4b7ebe32be3df5386ba4df75612bb6e0ae9ea", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "206400bbe9eb93d133150578c34af06a2dfe3033ac6a31ff79d3d3fe61e559a5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "c1beae7f6aa8c49b33bcc5746b78649ba00417eeeb10adaf9b1b563e7643f662", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "86b212e5a23eebc1e6ffee453846b48efe6bc3908412391c4cbb86a832715e92", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9a13fbcff4b064db4029e54dfe57a5ae2d780531b39386fdaa6adcbb79977c0f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "0cedb89ecbf5799cfadb5defc240e24b46466c515f5ed332ef635dab0c5b98b9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "22c9e84925d8a2ff4ba5c78c7dc1b27ae63da7edfa296f17cf22a8cbe17cd959", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "6dedfdef0ba78fefa60f36521d46b148d4f63f9d40ee16f90f932fe9f1f8c98e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "8a48abc516f077355e02f74f2b097904dae3ea54e0cd02972b2d9ac313104b65", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1ab44b41f6db3d1272d8fcba2cf36fcdb010b29219dbbfb573ad7537902a0076", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "96e02d2f0163ea89c5a8b446418c976b91bd501a024b934b9e2944f6b13e17d0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "b4fda702853b8391144c9db029353febdf269663beeb009e9bef66df43341a0e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "da7d5776d92deb6881d7fdcf27ba7d58c8d8ed8f1ea3a579e7190c897ba90cc5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "1e454dd92a893e6bf66d93c7f3d0f98f7d321412f76bc9e33ffdb992d639e453", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "4d72554d61d3367dd68b747ac2ab8109d5be09111f85de6f5220353e189138b1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "2c716e9db9910bfa03e523ccc4d35a70b66cabcb26a72749f76aad238d57f2ae", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "0ee6815696edd9cb2410c873ab5b2c55215020276b72e5194c0f1f0db3990f0a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "17c74cbd92b5ea7f3df2aca4189950f30e8bf3c03b8729fa574ad162320303ec", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f3615d79c50ed53f53bf1f3f9968c1024fdf76996928618f19b93380b2bb81b8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "d8ea0a1f7d3a5076fc69ca102d09d730cc67544319e4958bd57e4d50d0d94b3a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9b93b40489b017a95344e4acf43dc42fcc80cbd24e90c81b7d9df5aa88654098", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "f483395d2112d62aab4293431e817d879c7ad921f985cd75a153f7cb604f309d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "08d666804e473513cb3bfbb172fff71a314bf0aff73398646c31ae88810cd2b8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0bb314dd2992e22aea5f12c721bd3a099e32c2d062fd34da60b09e585e9a58f1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2c46ce0fa3def68ce05441e582b2b1dfaf31e0c2826353068210205791665a15", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "885a71c5b1a4201b3711b65759e7bec192dde334efc215a6e62f2963f891ea34", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0ff028a42c0d3de13b76d12e93dad860963f036c410f23cab098b6dfa40204c3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4fcf207e8bd4721493347e8991cfbc4a8557ef603941c76defec0dbf276a6a0a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5228918b8eec488834d692ffb6b856b11c9fb390dd03cbc7669c60af7ace1516", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "17d6bc09f4895320e8bf67097dc4fa8954191c6ac76908689d47ad21098e6261", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "3cbcd35d46df53249a96e397ed7cdbee67810bf33c98d13bf76f484bf2f59012", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c3550908023a0a4987006a293f94f397b5c0daec44032d02b71636595ca799e5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a78d017a315f664a451974c021db8b9c9f0457e1eb698e869acad0e2162d1095", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "50a794787896e853d1fff378c9fbacf7fb7bf7dafdb870f6d0c9ef21e32d29a6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c52659fbfd47f85e54cce3d840f8ee104fc422d64cc9cb0dda5b5b02aec35254", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "f967af983e643d1b72f1c0abccf1e4d22cc0c37de57de1d1df75ea2fdf576f5c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "f357b97785bfc7326016af10abd72ab01c6aa5b1047e5a17c0907a08b32ea33d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "8de6531c14ac558fa5537641aa724c3223900052c587ff8d6e477f41c4c22840", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ad2e5454bc7ed062c184d24e60ed2647e4cab25a00e83592d95f82387aebfc9d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "564b65adc2a7b998c44f555edb691a170a427f3f12fa6b0e0e79ec8287459c68", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1305f49b6bf46be3a07db53a703093ab2e0ea9b1e849b5d794e067b5313d4195", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "0b3e4549082c357edbdbfbd8b997c2eaffc37f0b1d062aa58d6e90e15b6c3a5c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "27fea4f04ad5ab9330648742999bc9e967d5417ef8789a519cafc36d914db433", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "381a0c1089163c59f7352e237718048809d125fce59ccf8679d1f36becda4264", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e38e955d39c3ae50a185ba701e53ccdf38011a163f3ba9327ae9a21d3748fcd7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "a2c25722cfd9e5013a3a2bcf9c5a2667826c61ee46a5bc63158baa7be6ff7a05", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "049114001855edc019de23e2943aeb3da119b57cec3ac0f26ddeb25fce147794", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "96903906ac51848ea2b4e0af016af4117a746a4a4d16da32a223a5fbe9fe1208", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7b6e23e8f6b61c473a302325958e049812adc27f3603c6ecd4d5c34464fe251d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c0ed4ef7f244154ff866cf852d92579d680575771870d0f51fe9895c1e67a966", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c346bd1a848334ba44592ebba9726518542b4b67ca40ab11a41da4aaa18c4dd2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "219886527bf17d25ee7a39a6280def8affcb6a455d6a5c9099db2b760a213752", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "ba4b4f431b00723aa78f4c6e322863d95f63064be86c4f4556092e165ce18dee", +"T3T1_es_cardano-test_derivations.py::test_bad_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "06287e5bf23b4db3bb9250f74d09c4f7e11b9f7d378f0eb456011f0c7d8d8be1", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0ea2f502ad8e13e1151882e14215489406db4e13c1da52675f334366e5b2cfbd", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a207fb306e49af6a5bf1350a23d82f759a2344b0f1b444daab11452a7a14140f", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "276c66f889a1896bc1becb93ef19a06e504694fb8ed963c2dfb68c94a30337f4", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "6c79474f064ef22108b833ca04ea3aaa75decc6a148ac562640f1013b2626560", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "eb30959102f948ab62733f5706c5f5af1afb8008371668c6068db3417396b6a5", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "bee25ee8344afe2fb1b60f8562465b22a66a540df3a2fb4eb950b734f75601e9", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8d78ebca578b143c8a3f3705c50924c5cf3959ec868a9ee851965462891f0c84", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "626a2ae22d2d4b9db84953fc7a7f9ec727b332667d2c2ea94b5b42cf0297e1bf", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "d5b4d6dc057d23a7c0700a8227774ed254472a65bd357d1cc39754770ff0f5d0", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "808976bdaf1baee3458322f98b86f0ae76971deb1264a3460bc7dcb009236629", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "8c9721daf468eb1ba416fc7074f73c5742182a58a01b174f8f79b51190ae4f88", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "d89c872bf1afc6275a1ea61229e01d8ce455478858296cb64eae09570a68f62b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "413a15dd6ccc51bf64d52e6f5c14ea54ecd41c34f75b7e2cf46fa4b64943f46f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "76e2a8c9b109a0e6a75cabafd8561931e80b34ca005645526fe6a5e30e96d424", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d2a31aeb78e1d6f7c90f3ecc46525c4469f41d32debe11ca5d3de83427c4436e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "1f31cea9daf3c13c20a19ce64dab137dddceeda44accef64ae40a0c26fbe9950", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ac3dc1c281a528b34c4442705756b1d5c6294846066e7d38f9cf747585166a20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "b138448ee9868c22fc49c4ea75d43a7cdd422012653fb8449248a3529b813747", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "11cf13356688eacf116774e6124cd6d440200819ad8f73e7d5e7c8a0438dbe6e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "fe5d038278db48719f32c0923d624dc9f2a02b5241d93277c2db6dccf14b3f52", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "c25aee154ebac790f3bfd6b65d23222856ed9301ae509fe7b3781efee2b7bdc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1682920d2ea63979f4268a07601fa701fb6e6bfb08df43bface3a884531273ab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b30ad035fd7ea1c11ed5c180a7a0245135c39c400883fea16164235757778739", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "886671945d5e537bb5ac2c6d10d8f568dee6a6f1d9344e3c33ce0dee1355272f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "886671945d5e537bb5ac2c6d10d8f568dee6a6f1d9344e3c33ce0dee1355272f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "873ba30c68a474048898c971ed0d16a3e25a7535808b524bfa3bf388d5467c72", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "35feff5ab44abb461b175273a0d513eeec546193b9fc3cb42cc2163c2e01faeb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "5d79187f2c8d7db652a032266b4f1657860574d30d7a3a88f82d707a164c49d8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f4fe09033079df3ec676c15f94693837088bc3e390a1089cc1e3e76743f04452", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "74128098f18a51044896b693a469c7e096fe6be9fbca6a6b620b726f08819a83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e4defa8aceec7633cb3f7c0f4108205837721a60c71c52e34a08f094cdabb4f3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "4ee35f06f68aedd9eb0956485f7f8752e57dfac97ffa1b6248e20e453fac32c0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "400b9e4198eb55c1606811388389b5439855b789279544a1598144b8e983daee", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "b8df920b5dfb4704da887aadab1f8946cefa63cf87b6a932ff32535493bd30bd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "74128098f18a51044896b693a469c7e096fe6be9fbca6a6b620b726f08819a83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e4defa8aceec7633cb3f7c0f4108205837721a60c71c52e34a08f094cdabb4f3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3cc877ee329430c5687fdc35cf12183197694a4edb2f6059f594ad9e471e556d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "fe597eaddd1750f9e06fd577e121f6e511c331e54c2b181197374d1b8a3f74e1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8b9dee7d2b7147ca25f0fbb0f7b8e7c9d186412d6724e77e8af166bd2719786f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b5c4f6cd9a16dbfed95c586c44b9d331246b62190070da4aef5fe888fc442ac7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1c70e231c145248d96e8d1eff9296028c77e68d5bd117cbca9edcc6a2a408fbe", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "f2309a7c04c00d6d1d9ce407ec9d9339baf136aa0753a35fbdd91e8c16cc124d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "0af23656acd628445d6f292caedb3809edbf7f3e46fb40244a5c60ad473ba2bc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "34fe7657076c4b09211dfa0450fef8e72b504b506f56ce1a27a489de7b591d5f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "451d172e41113241d0a537c97a5510d00bc7a4bee260dacd3e16b51fa567f6c2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a197d7acb899d7b16c2de9fb1e514787ce52405e12c4c0766f7d94ac06ac6873", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "9c36995a872e8092819750c6187f2bd4445e5394b0c0eee5eeb28b515daf833d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "79a26aa0ebaeb305db93709bb2ee51a330c1a5cae73d01e86cbd1e0a4a534c22", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3efaf7550f90a730606cf3d1f636d8601ec1c27e16f6c8af17e6e8f13cc4115f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "de5a01bc9b7c5d62fa770ca40dfeb0d4ecbe624dc3e56fd796bf2490638d1818", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "33b013f9566017a3933880981b101a290619ae04b3eadcbacc8326dff75b7052", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "bfca897c27e658c7dee8ce58e6bd6439c601d1dd4061a6e159a193951b45ea48", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "8a67cc26d96aad44a4cfc9c5d655fc37587b007428a384fa9ab53a7092e7ff3a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a2713df177621e5ca0b0ecd1201b30916d827eb71da477820daee526dfedbfb3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "cbb004247bb1d690be89f4136ec0188d62dcbd875827be0c1405454512305652", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "103ee6a5112c7d7dc118e566f640eb05517f32d23b031112943f22800481064f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "b94f77edcb77569967e025ba36920ea00c6a4f5e2f3be68fd7289154a926c58f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "168d2cf6efca9c6bf3732148e227352265b3f09a01ab23c142effbbbe0cc6d94", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "50b5a6bcdd8f4c54e02a4977d6aebfcd9773f2bad3a96ce829a4e7e86f52d0f8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "95907f22bafae7d433cb1b07b255a274d0fefacd0cfc51379cb3856d52b4bfb5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "529ca9c2069e5515b1d843401765aea21be1c33efb08f1a7e361196035981ec3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6c23144a9fcf6dd93f7d839947e20fd10da134608abba0f75f559562075b3de1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f6fd673ef118cc6d1fbee90f3a8df7ccab136a3b556715fb5f2dfb687b60e858", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0a06941a050de72c81c43378df674128f47946cd3268234171588b4bfcd28f87", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "6b9bed854907cfc4bc33b15ead0ddbb9f9e6ae4d1e3c3a61808c148db22a1736", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "33dfdb642b3d032a21c517e988f86cb9d01b389fc7600f60830a774d87856a3e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "c043308eb75974d5e71e9726e35876cf8182014dbc9715b64c52464798763039", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "7e274b7c38dcd8022744e9207d93817671b67e47f15b679e410bc6b2cc1b5dce", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "e7d5514e79b46fbc21ed0eaf44d082158dd1f504c142cd4e94b9b78adc4ec940", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ee25e2182310d50b9de7d0a94b9ab257c67b884f586a56bc38eb7c151ab22845", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a2ecf4c49e435dbab49078dbfadc4445ee81baea0ef2ae0271aaf101e7115ac4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2fbfac7b62d2923c91a0b09bede5ea61d7ec7edb0cdeeb918406c30fd7c2955a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b266066bba29d1bb1a7ee75a95487807bfbe9a7ea2768c85ed434b4e0194091e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "4277097921a767e6afbb601df0dfa530de08490c0fb4c0fcf3c053d16c70b642", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7861daeeadec05120df682370ef0f88c077397f6ff7233582801d0ae3178ad12", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "fc2093b241a8fb682b348dc2d39b68dceeedac2d180757cb05f3712acf299c4b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d630261db05b7b6e89480850b871df94cf4ec1cdde988a6be922e14ea318c616", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "9e67a4d26ff7f8ea2b01942bcff8e4903091900121ac33e9a2acefb7fdaa8ef8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "680740b1e6184dd124a43f95e15952e20296eb3f2bb249c5625b80209bcce8ca", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "3dcaff1436e1619b7e1e6ab190763a703aac410f179acb64a9aeb76706ec73a5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0e6241b915a02f46f56c8198520dd04a722f0fae39131efd829d1be4a6800e66", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0ff831d87737a6ddf83ed585401cb56198d803f2351b7363a0eebeafe522c28e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "d8406bbe3201d344b8b2cc67acf2c5c1a60e3eb44302d1e1b524f238d323c747", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "d8406bbe3201d344b8b2cc67acf2c5c1a60e3eb44302d1e1b524f238d323c747", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "578ac82a08ab44641acbf042caa21d6180b3c769da6d6ddac773a5009f019d45", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d7034b0a356a709790afe298d8cf084a8ad74646e744b05b12c4e3eda400b224", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1cfe630720e91392e370646a44d4aee30a95a0438d5dd9777af55e94171cd34d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "40e47914b10a593f4381f30eec61f3ed8bcbfb2706e594ad87c5ca38da8b0e0f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "0221cd9be44dd05ef635d7a9743d74c42884a11563ae9b192b0f979b13fccdb5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d444a9880b1fb832cd346f2211c47fb14e3a627135eb7940881bf4485257ed64", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "54bf05051f0563e1d449848504c86e9920a5d94ab4c11c9ec4e7cf6b60a01a76", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "50f5f4a06c1efd19639fd28fe34c5dc1248aa4b06c1c7a610d8cb7bdc48c9a2b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "9d48a1f061271f4cb76affcaa5df3c22f03fa572de6d45509b7bf3a950265d46", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "413a15dd6ccc51bf64d52e6f5c14ea54ecd41c34f75b7e2cf46fa4b64943f46f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "11cf13356688eacf116774e6124cd6d440200819ad8f73e7d5e7c8a0438dbe6e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8be7fa5e6412f9f6a4b37071bec8f8ec2664a5885bbb0a02fc6d681701294375", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "d9c7ddf090b150bf4be2bedafd19862811affa5f64d03b11b590a1de94b97521", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2caa2bb57953d0bcc4f2c81a0351371870cd76e3478ff9c23ebc6b8fa24cbbf2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "86fc4166e1d1ead23175c8e48eee70a60f4acc5cc8142c4a82e200db381fdf10", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "e6cec0c99bcb6d6e8afb9d4ff101327a43793de4c75a2be5fed828b428867cb7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b03dccf2e7e4a4fbb6636d84054ea7dbfa065cbce7f007af7b29828100a0ccc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bb0c17d8ba65bc5c5aeb1fde66daf27c0aaa4de71a594c6dce9b4bdb8af0bb24", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "e6cec0c99bcb6d6e8afb9d4ff101327a43793de4c75a2be5fed828b428867cb7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "af26d3b94859b635f8cb0674dc6ec78e46bf71ca160dc993af635eff37cdf7d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f291c4ab7847dcebed6784b1bae5f1f733b39cd59a95c750102879f8035c1af2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7f5a1595832c6fe51ef3454e6e339d2b6f3c17274835e608c467a079a213ca6e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "e47b3550509185bef278cd6d5fd2c845373aa9d359cd02a2b0cdff2912e9fc13", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "1fc92af924f90ffb6788260a33f8ba72fe72a67299f0d2eef4d5d4fd3b61975f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "f07ef728bfe79580e10765936cb36801e6d59cf7f132868128db1ecd15aadd27", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "adb35f7d3feb3c733e0fa6aaa5e370a5be94901a9701d3c604578b6db8239d4d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "b392fa8b5367a1f8985788b31f9029444f89c5eb86fc80e307db860e17f3714f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "5819779ad5a4764008315051e83d82993cd5b7635641c07762bc25e51e64169e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "338fce8e723fd02a785254529eaa473e25a7d8a5a45b67b187cc5aefae253880", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8fb9bba3d9da20292503a3569283311069c2cb2202c2d75147bbb6fac41c875e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8f64a0af5e2cbdb036e8676f553e0545712c476969e033fd9f71562a33d0826b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "86b962f18aa2004fa4646bab6cfc1d73bf9296b9b5b631011552ae1ca2b0b92e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "e54d33a721d91b988172241964bf5f375c962ab08aaa715bdf0698a91b2a2bcc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "1ee773be4ca2daf87b4d5e73a0eb635f8caae46b87c6590786014b865c396b01", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "7503814638fbfa46b5319ad16919c20dfcb5c43bbd952d04b454cc85b5d57993", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "16542e6a15d116be56701b2d8522dbdeb4c5c2842543bb60d8523f2861396437", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "890777630f0c3e1fd94b72544ae0142d602901280a9edd8177c7b4e405ee186e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "792a12d143e21f2fd0f451deb47f5e5a833571856212a9b92c5ac19b76bdaf57", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "1c1ff1cc5b07f1ffaf3ae4355aed275ff9d7552cf9ba07056754bdcafb59e693", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "9ab51cff19da594a241d1a573c0adfbfeca46b9c95dca2d3897c7c867bebb5b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "f16b309a619b8ff5dae472a336205c7f521e90c0b454a99e22615e800604106b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "5d9fef79456277084b74cd7a54e47c2d1c9badbcc0ac9eb000993e577ce61565", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "0905c2509bc0a6400f3941c3b1e0ad9c650e44b3a02cce33f0e1c64a845f82f2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b771a63fbca09a916b08df43bb6a7f1d11d20ccfaadaf06b6da0a198176fd641", +"T3T1_es_ethereum-test_definitions.py::test_builtin": "8494194585f6a378c4b3bcb6d652cb29cfa2088f85304ebcf6a59f96d026233e", +"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "9ca2bd2200794364216aaa7ba8aed576ac3da70aec6df9e5aaec7de33c84f21c", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "9da6cbd032ce540e1175b4eda8c27c7d2be035e9b380bc2a7e4ec21b3f26104a", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0327f815182e96131b19d356cf6430f67f44799dc51683b64abeeb9447bbd3d7", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "fea814cd414d494caa31423c7483f5835d0d6221c64625dd14e8ea7c0758ebf7", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "aa922731c7ad1d859ffd3b1d5ed67db28b19438d888e89e47aa1761a389a0270", +"T3T1_es_ethereum-test_definitions.py::test_external_token": "166b2d3b08cf0022bbac240455779407fdaf38693ecc3d1120fe861e7d963ae4", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "73d01b57f23083ff4d0b884875548f61f872c7545d64e32660ae8477ecd6e4f5", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "b20ea2487eab2bcf5add3879e59ee7d4f3db02b5bad294271dd97ed227997799", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "43c5cb05ef9b35a9f3127b7f298c85f24788a2a4222e148b922a417976f3bc6d", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b629d39991904949fa301089dd05750315971a9cf6ea13ffc4d168b582d9b02b", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "3de4f0cfddb49981cc7cc4db0367a2dafa34d9d40578ded53c3d0b3b7ec45e94", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "3a32c1933475baf1aedc8cf761b81d39abb4dd432fd5e4d6c0f617b7565fdd08", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d462801c953c60f3740b6358e2d421f0d54cacbd38fb39879c2437f0325892d4", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "43ff2e7fbafb035c4de588eb4834ce00c0413b67a445fbe8c77a678e5bb8cb18", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "25540baee0fcf4b5c841f6293249a741458c55ea2fcc2195d24426c69e2697f8", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3d10e3130ebfbe698db617a8e183a9467187f16e4c53b58656cc2840fb60cce2", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "0c3c0a1b58f7d8259ce08ceb74432fd6530f3c861b4fd04968b40101c42c399a", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "15c72309205e57232c7fbf188ac7b059f8d01c1751b84a88cb5d9ce3067376eb", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "9f530378f8a6b7ccde806d05c1b6a68af2327c16b091558f50f009ba2ce9bb79", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "dd7cb8e9a0b1996af6ba5053bcdf1a88fedc9c383214be08f5b634029bac5e21", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f335d9288490a9995012a7e3a1d52d0c30a5f82f16fb426e3f1bf16070799e9e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a3eb448ca1bb17164b2be5188adb31c3b83483848ae7d3f869069b1223614c84", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0a27eaf4b1882cff1fe7780838935aade486c248760ab5337a87e6646d383472", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "da4c5a4c5c4a757064bf85cbc5fd66deadda37ea7ac6e9703febe1f608a77d58", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "1e22a4528175bc819142da6dbe0f042298216f5c0b30957baeab08f5b0a9ad60", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "1d84243249250309f49efa36323f4a8edd9e2fd8e330f69b39c1d2bdeb511d8d", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "d7921ad2fe58ef7dc7b57d3480ca5185e6897e66c1fc195baa2d78f241f70fa3", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "6189b4c756ad88376995ada3b2b9460ec73f219ed5edadc0e644b083af7d21c2", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "4e0e5455e1f44c3faa6a764650f52775bbbd7585bce03b19483db1a49cf54f39", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "16afcabf60b43f89370e95a22716ea5f714c62ea5bba55700f20121f8d809079", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "03b26ec321a6535f321a990dd61c9e11393df55bc79d4545d0ff1b63dd00a83e", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "7526aad501a42f0b773914c74c2adefc5f8d2c57fbd066635bd5d811cfb33ffc", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d2b8e16cc82fc6deeb1e385d9982bf68626b6b54523236d7c1b26737067a3085", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "0b141bbdcc5dde0e0303b825633acbde389fa77b7d13bdfb15a37391450853d5", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ed34c69ced565535a4ae4cf0015257c54fe04e4f1bd1339b5947dec767dd77ed", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "2858b5b854fd99c9a5f58848f8a53d09e86db0b466585b180e16f00fdfb83ab8", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "b1c5e60a139c7b39ee9ac0cc502f9398701d3c1cfee9e0a8c7bd5e2f4beb6a85", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "7d4a1faacabfa092c0bc0bdf7baf315cfb0aa215e4c2a5646be357b774109ad7", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e688111bc782b98a09bd3fe76a2733e03a9fe4d996b5679ce2c0e748fa27cbbc", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "b5df947d8a39bd74e4c3929b04270806b3eb75d43387bf9f8c8bb17da6f2e559", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "ef93904730fec36cfe2e73f9b4529ea29e878e942ce456099261f9077d5ed9a9", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "7bef96e59a5769e0e02df0294d6f38374343506f0a22d004d0738067c0feb37f", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "09656c29ae2b1344d47b0f03506e6060326ffcccef111f93a393afe813a251ee", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "73541cec96526454a0de91c3b38f647419c2fc955738564e82948482ffcedc27", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "06f5f2ad7fee4e8e057894edeb059c2a14fe94ec21d673e0faab60cd285f47c3", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c6f1dab7138884305a77e8603f8635b1c07abcb3edc3e9fa28681c1b2b6c9aec", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "1ce8d124e33be9b5b1e3b70b82fc2c47061eaed54c393f7aa3cc43aed8850596", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "b5df947d8a39bd74e4c3929b04270806b3eb75d43387bf9f8c8bb17da6f2e559", +"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "74a34f5493c74506fe85dd322dc0ac9b2e4f453ccb1b094d8228c6614aeba63e", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "e578cbea03adc831d6540de0b23e907ade1d3149f82f7e79bd7d0984a5f95dfb", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "83b62cdf961627ef8d389ae253d44aac5fbc748715fd11b659ae43712ceeb0ad", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "82908be612e0714ef6ef3c04e8d7af79c0bb0f9018af4e2995529e2839526b82", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "83b62cdf961627ef8d389ae253d44aac5fbc748715fd11b659ae43712ceeb0ad", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "73f33065179da23455b439a090619c7f482a6d87c8fe5ca6b735c82c5cf326c3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "73f33065179da23455b439a090619c7f482a6d87c8fe5ca6b735c82c5cf326c3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "0d16f2e4c29244d2805ae4d00bdfada039d5f339424b891ad36c6ed4ce271081", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a94138c4430b5fe43133d9a356bfd78a08f2c2900bdde5d4adbef8333cc5f829", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a08bb6015062b32d34d81e3eb20d44d5cc171c51ca2a662ed8d7610c8a320079", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f985a30d30781e92b0459a7182e98e61c602ef7d50545d08ac672dfa4f068d9e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "cdea1e34924a2e5e8a5fc3c8bca96767a4d13d8b9cad862e56b1dc3cc85b23a3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3f76d5ae089dc0ef0b47aa9b2770d6132d5b9b9b79d88528cd169a982df69c72", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "ecf0a105713fd3fe6cd812914053c23463409c1a227d27cfc3fd592c24b7b71a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "7c6b28f9f3c2efd5102742e97ae9a1839eed329cfd0d8ad68bd02b8cc443e503", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "36b42105618922c82cdc187e05881e27e2aaaaabf8f9303c0a4664133fa307c3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "7c6b28f9f3c2efd5102742e97ae9a1839eed329cfd0d8ad68bd02b8cc443e503", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "2b281ec5b27b9f818be53a0772d39d252ab9b60099cbba9a513bb5ac4b871910", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2b281ec5b27b9f818be53a0772d39d252ab9b60099cbba9a513bb5ac4b871910", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "6c69663945f7704b67ce6b660fbcc32d11063d67d8b9efb2e71822b58813fe6d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "974e1a44731943f490b67ded7a03a130a6a5938e49f764e5f5284b09d2bdc198", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "42f2135e5439b8be224fd88e6883e713e68de20b4c3a2732dd1dd5e7f42f71ea", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f985a30d30781e92b0459a7182e98e61c602ef7d50545d08ac672dfa4f068d9e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c30f65aea0a7d05752cf7aef041d9ae7bac9c1ecb34048426a00dc92f4c6bd23", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "a7dbb48365f4fb1ffd9a6a479314bfec1cbeeb106ca48d94ba3652574799f124", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "375715f27ee605c397fda02aa88db000174d170907b8affff8dabfdc04637297", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1c9913d13f8d854aa5af513c765bc7d198b1855496f97da2bc719420374f4bb6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "f79d2e6a2bbb42e5f3b965cb19d7a71d66ee1ed0b664c854b0d654b90671a819", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0d16f2e4c29244d2805ae4d00bdfada039d5f339424b891ad36c6ed4ce271081", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "e29c99f8aff260575f1a36d6ac11a90dc5bd6eec25b225ecea71162a38c95983", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a08bb6015062b32d34d81e3eb20d44d5cc171c51ca2a662ed8d7610c8a320079", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e8eeae49ee50deb49a2569fe420cf8cb9e9ed5afcbf205e635d5e8427cba3d6d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "2f834bf985e7d80e975cef6ab01ff2d6846111424a2d24e0ff2de2b1a2796a50", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6c69663945f7704b67ce6b660fbcc32d11063d67d8b9efb2e71822b58813fe6d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "15d5fb1db791c1dd83138ee682489322c91f87944ec211b0760ffa7fcf38f32b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "42f2135e5439b8be224fd88e6883e713e68de20b4c3a2732dd1dd5e7f42f71ea", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a73ea17030e0b40e7311d7de241512be66dd4699883f810c635fce3d6c2f52a5", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "12c754752020bdc8c80cb19f9120d20dfd6720ee44d9b5171d487463e3086f71", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "e9e534e578a7cf5f37a7fa93dabae02ef45c1f8c8ad2a4e506b6b799cf37b6fd", +"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "fb31df4d4d8a94f5a471c266ee597ca97352884a4fd97cd0c7aae2c0acfe9548", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "69a128679278135fb401f0e69269805e575522897d6394886b826108343c8f69", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "b5b6d01616abbff6e2ab0d9c48103db2ae52d28126dd049cfe716176ddfea976", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "806fb40fb2f5fbe2308be07a7c05eb62de5ff81615b7aa18595948178741e7b6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "5448607fc6b5d9ae3b9ace69bae587b8bd4a13c168cd9b6c67402aa1eca8146c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "7917fe4eee0777f97fb22dd957d576b7db0241dc055d38ee351f6f42e387a90a", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "b3099041f1d5a099a9352489c9b50bb196f3206700c0ad83be0e4a660912a53e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "80a689147dbb47fa712c5753ab0706fab7616aea1bd28a8a200b6a74a64fff91", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "795febb368b491e969183c346044e7d9b9c74e06beb5eaba16014c35b0ac8062", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "a3d0520a75ccaa935644e92834bedcf5a94429923a10589df4f46829aa858225", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4ba9a687a114a68b647b9626a94c411855c7a32f5f588bb6381f7ccb83e42d0e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "0b6aa1c12cf6916403b873f0ca4a4f1f9284a0c5259373e3ce06129bb24c2ddd", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "4c6e6f8e9ec5f8d07c2f7922787652f22eade639901819df4a8d04aa21899160", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "b5573ef044c7b23c6c00bd4c1549fdba9d3eb13200c9bb8cf6f7154061d823e6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "b5573ef044c7b23c6c00bd4c1549fdba9d3eb13200c9bb8cf6f7154061d823e6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "55b5dfbdc27d592fd9a7e62ec04a3a3b5fb2a42d1017d3409956c6221948333d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "55b5dfbdc27d592fd9a7e62ec04a3a3b5fb2a42d1017d3409956c6221948333d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", +"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", +"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", +"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "9ac712c7e37de56dbb07eec92e31f2f811e030cf51e166960f24339495e2ea6d", +"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "c58af1a8a5d4012d92a37cb4dc79362750a96f9af2aa2814d74d7519760255b6", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "e2323464410f4cbceb0e6cc46a609e57f33720a88f43f7d13db44a42a15cdc9e", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "81e22d1c7fb26dadcd166f53971a0b7aa88f3d51cd3a83069649163cd304fbd1", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a9cbdc03cd44eb0be944a43f4db00e3cabc975398f5575e567783ba219113572", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "0692cfbc3e0e617b6c8e2f0a3062784a5b985c4ec920d068ba5fd1cf3fe421da", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "858010ba830c766e742fe514220e95cdf5d79b69f78519b7fd8df31612b98a4c", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3db35028673ebf7b7153e268d8ab6883657e1aafa126ec42959ca79eda8a2eab", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "c5c8924c33a7fc7a94d929e79edffe68f76ababa2949191d3536149039d8c987", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "2d23ee746632dd0e48199394c243d2e1de8a29ff079f9b03cc22457176bbb42d", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "27a49ffcc4e2cc1b7a378ef13093ddc3641da9162e5a5227c393958b8e808ae4", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "293ac03ed0c5788ece97234d07a243849f6779095fd6d6b48bfcd68e49d1c2f1", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "fd04b065eb272e74efb3015e4efaa98d707060cb596a9a7592ce2e85818d07f4", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "67bb7bf9827a3c3e402a8d5ad9cf4408652462e294867e00b1eeacbdea8cc7c3", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "5e60bcb1d58cd1c67104cde3baa542d1ae90bd29edaf5a084ee4a79f0c64f6ed", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "093f2d9fb3497e9929debe893c3062cc518cac516306653b06978eb8c1a88768", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "ac532094285713c41f423ee5367c495812c43d40237cfadf8327fd3d8152c30d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T3T1_es_misc-test_msg_signidentity.py::test_sign": "0b1cfc79a5b5b976919b306c6220339b232f66b1f93ee06c80028aaffcd499ea", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "28cdfa4ef0f09a683e0119a0ba1867332c5ca18535d73ef58acad0262dfc35ad", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "d8bd632d3bcedfb98d6da05d1e24b0f405d002cf4aa993e882edeacbe646d425", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "b5b58cbf597a51908bc846667e69fed75a462f2ddb9089be1d19d6a3ade43477", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "7003f4f14de998c6e0e773c0c74b605496397a47d6b5896bffaa6d6b1b5308e4", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "77ff93d1042b63b30eb98678c55e530fb7c9fe9918eec35882b8699efb0ed0c8", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "c5769aadf4edd4b1d3a644c4aa60e07db6baf279dc38b4ddad443b9a44d53dc1", +"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "37399dc8cfdf98f187007e8f64fc7612c2c7dbc5ac74c1201cacdd4615236638", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "461c082bc6246c20551898fec61a9e7f9bef4505d50cdcd675a3b6d260d9e6ed", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e19fe95de47e40f7f2a61ceb9c002430cd55a2bf0b5b373ebdddcdd72323bbea", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "307286e98a473540abc7cd8e2030a90e36d3d4600ec34ba212c81255247a5628", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "29777d5107ea49b4e04e8730f178ae876b5de5e2b4c1181fcf83714330b3b78d", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f63d0dd2f531b73b30882b719af8f1ab7a73a2cd1cc4e2d266a7b7c44835582b", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0b5ee74ba3c3fb18fff92165224915df64758dcba5328c34ec45dfe83a17b2bf", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "09ebd80dcc9d7a83ae61aba89cd6d765a49d695354eaa8de10176bb38c25e8ea", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "44ba7cbdbb2d00f1669f37391f06c6257d72ce3c5a609ecfab561f177fe617a9", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a5487ceec2a9ce0b770043324dcffa1e3939bed1f170582a81fd4f782341d85b", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4552050122b494d538e57bc62640480169ac23eb5bd51f9c536ede3208105f6e", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9cfd571774ffe61fa707d42d29b419992ff2c1a531b5cc8b217055c9bd1c9e24", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c9261f4860afebaa6db020c511407422d11ed08af50082c5a3fd9cb53d610734", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "479c5e6b88126d8fb9238f93132688d8e8433b1c2bc6e46e79554cd4bcf3f58a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "ad6854beecbe25090c965ea4b3ce56c576613dbb2536f10e560e33bbbea370d3", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "54e17668f5c66cc9aaeb374a1faeb1ac3f349011270a29c8246c98c3cf484854", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "60dbf5c8aea5c35a7a0777718beb38b0f8e56663c51c2e5530ff928e17e22cea", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2d341da46fa9a3400aecefe493183c4666f292503c1c06944f6cdad4bdb5018f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0b5ee74ba3c3fb18fff92165224915df64758dcba5328c34ec45dfe83a17b2bf", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "959e031abbfabd4ae6a0eb293da80b761568564d8dbb4dd2d765d03fe56c0967", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "551d3f62b3f454aa22b96e6fc0067a1c4d9dd1e8f773214d7f7452afa385620f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3a67bc3443050f96d0c4c8a75fd530a56e10ac3475b2e0091edbf23206902e63", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0f1c26001259b5ad5c7d76c829f98840ef44ffe2983d5421e921b4cfbd262984", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "882411d64d76e6278a6d2fff2d7aacad8cef900fc262bdf08377072a653106f2", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "3b3aa844adabee59c61bfe02dd1da657d6158f6b72fe67453acf8078ed047af6", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "12dc603108d008cfa24a397f94f0843fd749b47cc0eaa3efeb3e70a9cdcefbfc", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "985ac0579e31affe6132031a379da9f04c1800e955fffd568c5d95e9205eecff", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c186283f2b9fd19bda632ade2c582b069b45612a074b0299a35e112e996f988a", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "089c3f2a77b2ccc054a7dd6b1ba6bb75a172a78c720c8909c9ab78652b310063", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7aa840499711432e69917f40c1d0681b5c2a0510098a5b155f110cb1608f4c41", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8ee942007e5ef72baab7fb67a4eaade25e48da2aa92ebfeda28fda4177572467", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5657e597cae4958fc657bd768d179af28f3469600be95af950697f06ab83c7d", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "6f0f0a6bb0c1a5fabcfe52b2585d8f98e315b92e0d4555e403d6a99bb102ae52", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "923e5cc4751b495767af1cf61b2bd67c6a2f99af5b87e504bf5f3fe5f30a934a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "613c89d30a66f5b3974ca7287577724c1ca62d7fd7f3f32b2ed3dc2fa0ac9793", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "20cfcabeb734ad17ea1dcb205bd8cc7604c00b220a3fae743d19ed0d0ca30399", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "982d5b3920ccaf05fc27f10dc3483c227b25d5c9f7b0d6e2c051bdfa8a769a5d", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66f0483d3a21a3ca9c76b5bc8cd15ca8591b03470d4fefb85e385c2abfaee53a", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dd8d37b2e9072f6a94985ed1fc055f82c41f0387e30aa9e515e7a3ea17ff0172", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "7bf8afc91858365fd751c24e2fb59dfd6dffead64e832c0d6879ef2c1a1bfae0", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "352a542ff97ef2c58424990a1ce65e6218d714255f0c4c66b2e71d126c347494", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e642ce06e0dfc36df4cdb5123f3f57c279ffea64b99dc542dd33b32760ed831", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "edab79cd58b78252329e58f2e9121d76d75fdb1f2ed7f28f026d11e98155ee55", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "90afdba84d21e6d31a834fe56b16d864ee93f84790d61d4d96758fe566212d1a", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "61b4ec9a26ba8314dd023eb1fe9b04b30335f751cb3ca6367138411eda9bd9e6", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9456e28a0f41172a78da9092ac55ee9af329762a970e43af9221416f7bd620d8", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "725ba3feef51baa9f554d8dbcd15584f4c2db8bdd3e13fa1c7151b647cadd636", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "421d62018855db2e08657696bed81e9205a0de23c118c19022812e031b6858c4", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "6e6f294944dd0b70e9ecf9188bf87177358989e62c2783cbda3fe6f7d2980c82", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "0990749ce1603746943f436410f2941fe4801b1abb64666be8ea219fe919f4ca", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "8d5e70d1bfc4a865adb6af4349ac42835ffc1fd3a5e0865c8bb6f9c11207431e", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "824c2c1a893c61a99ac72d42a8ca7ef7948552a58f7ee957a71d75e89afc28d1", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b309d97f8b2f802449e1e899a409b9a3175b21706f3a52e948390c37f9bc1942", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8193620e8ac2d55157d048e9f83578e223d33b272b3e96d6fa91c4355de61ab3", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5839ae74faebac1d76ba2ab2dc116f72dee4cff97b93ee69d46f82568b1aa1ee", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4b66df8902d34a1dc5e30848900e24f938ca7852aef959ca5e9577c81a1c315d", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "96f5ce353e31e08e8d4e4d23143166105376e0f8f80a7775633ccb716f356622", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "4041515218f06e94524bb6c2c069a513ada843470b98b4fdc18996a812e746a7", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "2e520043a1083093c1549c056116c1ab720b9717743e159b858727a284aa554d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "1c053f6aa323a7f253065e34b69a5a89d7587b2a8c0a5de8da6a684b396e6041", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e2acea7abf37d39e4a7ff0cb1a3d926df4cc34f8dd8282e9f8b9d1b2f57bf83b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "18afccd4e2092bab13a65aee64b159a221885e11f6bb7c18e8861a8bc860cfa1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "3a6781abfde7c205a939944de3728ca999305751530963e44fc3f0121b02bf94", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "b7610a8c02b0c01c86f810a969bf9bcf1dff434c0d2f172aed6e0fbd07867869", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "64b8fa951e4ee50be46204605bd00a78f2f8044e120d3ad6fb9aaf33a53b86d9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "f649b403956c04484457b033a57b73adf02dfbfe3b8078357fc7b886449be31b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "02df88c5e0e86c47e269404d3a6da0592b280a5c4d101c1e25deac00cc24b1c1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "59319746b2e943d76931b8a5c5dbd66e54e26b1f09cb8dc5d9cb3df4ab90c04b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f19aa4497a7018893859dd150555d31770685aeb43c71efabcbf1cd4a679a50f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "c70d33306b9339bd56043e90a477bce9f994c84c44efcd90b15d2ae60268b641", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "39494cb85421cd40666fdad39809f8412103561f29e14da1a89f520873b61a57", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "0ff101e8a3aaa4bc1a1739078724989bdfc6cd79b6ff55ad78e693a7e6e6747c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "a736faf2b593fd1edc606ff43127cadf525ad972e7e76eb4a342b8f51c5815aa", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6102ec2958fd13070ff41cb540f6a9721b3e744321b2bb1d3e7d53e52a2b54ff", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "008c866474044627a97362c78efd49ade7abaf4ae32535ab59e9ae098c1cab01", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "9018604a4d5e370b7d5b0d6e431e0930ca8c3fd11cb903ad42d001a5360136c0", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "ced6185aeaccf21c0c1d2b4453eef7740cc401068f9d2f02f1dbec5b2a0dda88", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "92898fcbd7c234c468a18bf0535016127a11375b65c5c4a7bde47c9b535f027e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f5d24499f35006dbf636aeee97f5d5fca8e518e4f097d25e4c92b7565b37e223", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "1644ebc2c4f8f425465c87a31aa7bb93036d9c6f8431f8552606461d1c87b4ea", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3fb6e36a14a965a22268381b8aca16f2b1c9100536fa1fd26e2c14d254071dbe", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "c12520413c3239f1e2ef78d1ae1fa097149591b86c859cdde4e7051541ac0051", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9f86f40d5e846f14098140e1140ecaea9286ae1792bd21229b0a076cd4c9cafb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "244b937958ab4aef07aade8a2c3d75f0ce7aef95c57b766ae301c8d4d82a3f8b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8180416688e6dcae9688f04d4c18dfcdfdb1207aa04a0bc59dd6836ba19b6055", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7f79cb79322432ade5948e86a73c372891d4f38756f4e5b510843173384ddb91", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "0c64e69e33ddb40ea35f4fe6275ae18c495775f37d03ee1cb6cb3d7e526a80eb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c1903a4c772372343b4976dbe9b7e6777ce0b09001b8ddf6964341036ec5dfb2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "2419c6ebd15271534422be2bf43bd98f8979b68a2346ec2ecffc08dc06567e32", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "95e6e7ca8e791b5f2b9a1af0c0cf7dd2826aa7dff8b0df86cde4290ac466c774", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "308ed7cbfd1483bbad8b8f4b2ae76220a85237babb76ce5d68bdcf8ca156ad13", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "f807a41c4689d50b95d2b5f9c2934392acf225bf047012b3026695821cb5d64d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "7868742b0daf4afc457fceb03cdcf8c2db5a36e0f4f46578e2da6f0dce9f9cd1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "09827fd3b4adc6b61ec8477c8d9b499b38840637cee174a9eb987943ac9d1015", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "c3e111939807a75a6395ea82ceb18185bba8c497388302a3e531d4f8597dbce9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "13aba000ca9f6197063a2fb247ec83a2ad98c1f7f65c5264b501def570175b2b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "10e9159672c9ad670a033f8d98917b74fdfc66113a6b58236bfdfba3a9df1681", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "1bdef1c296af49aac736a657ff0828ac88882333fdb18777723754d1a48bf8d3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "a243c6ce6e9f884a5627b2b40033d5b44d8e6963c7b8cf2a817521598b2b1936", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "4f1214b6f77ee639c830f3df22c7d6e5682e111f5d39fe0618e923b9cd7df289", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "3c9a517bb6183cf85929b6cfc52322f49fee92d9958bab2c706e675263cef095", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "31be122f3dcd2c761fb2381062fa6b122d8c1ec527688772f7eed1deb8e57a14", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a1a845dd9fb9d1e1e588ac9c50a947a7f27eac9030d562cf7043953f7ab53b0f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "36f432d109431c7bcff0548d5c3c04b118cee90fd8049e977252a827f6a02157", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "4666691a219e6d1b7112494b841bba70acf58c0bc5e9c6d6e3abeaa7e40ae902", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "ab0703c8db286277873edcd6350b0ce3365460cf897e07b3548d2ed32506eb7f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "344979774b4d19777f64bf4a57116af5d3f2180b3751d251fd160b665ce2b6df", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "fce7c4365b09c14e982763fa408b60066ec82cf806088309335aaab4942aa423", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "637fa17b08e64445db7f9370d2335a62d7cfa1d528a7dba8dfa1ef1c7c13d57f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "3288a48967eae9742f673cd6c75f388bad789b959f3cc37edfb1be69b45433e9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "911112f2593444ae1a38bd2c576937bccda8829b7a39a20750a9d723a3ec3364", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "6125934cca06744012961d3fba45171cee9c76eac60e263a77c5f6f5411e5c47", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "a00e68bd000dced7941481113287af58c07ea8facc9b8a4a650d11e6a6472822", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c1a8b7e9e5aa45369313d2ee56b3beb59e58a99ef46856b3fdc30a6d35d29200", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "72efb6c21c1f3b17843c914931a46d609b35d7928ded7a324e5d6c5ea67c43ad", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "28ac29abd598ef153c64428653b9ff7252336bb4f55df458612be10a70381a1d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "17f54ccae09b3f7ffda8bc5341de154d8326c83065620cc9e2586da2451de7a4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9c4fce94adf5bb063d88243bcc52aaa90562ea42d01c818df3fdc8c9f9654c23", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "244b937958ab4aef07aade8a2c3d75f0ce7aef95c57b766ae301c8d4d82a3f8b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "dbc69e12535f81fd753269c23d54ab21c1b416b7d9979fd051050fc9d690db5f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "40ff28d04a17d65c6f762732d501a844a9b2eeea91b6033bf37b9552438e6cd8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "66406059bc6f863a02b9f9be09cbbd38201685eb5630fe2ea1d5ac33d5b2ad69", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "df5f6aa0700f27b48f91322d3ae0477a63a0439bf0f96975661e5345b70bc6e3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "002710a209a2d8d0396c6467f52bf18acc232b9c7c16562a692747412a0dc1c9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "30f5d9287bb8223b316818d16a59c7b281cf03fdbcbb6136ef354a95c4f89b78", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "eac4b674933ba1cee7845622a55860e1c880229edc4bc36f8108cab75ea763bb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "34438040af9debe5b90ea63808a80f9ea8ff9158e4adf357d425126091a5c3ae", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "44b1f0c96bb1eb0667605ca08f5fa203a3a915ae2196a17f3f4b94748ff37fe8", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f18098294a74d265bef3177ada55e65462b7d97ab96ce359848d4ea675fdba76", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "290e77fd771d2a156249fb7f310cc51f5af2668a9e06d677877fadf99cb0bcab", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "3ca15a6cb8954fc65a42ab6cbfe44aab3200d462fb6c4a12060961878a06121a", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "350600024a2dbecd1e91dd18eb010eedfb7afc8eecdef19613b05010ab42539e", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "f5c0ade0d1d7f62793f7b342078db16bfbdab9dfd09c29677a06fb79c6eb9eaa", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8622a7e5550b0f1dd72bea90e9562dded579b415c5a936e0c7225c3bfad7bf5d", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "260e5af675320b8129326cd4455dc262326e9f5f9a8748cb75067e5fb337fe56", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "94ea79784eec4a9332f8d58f5a863018af79c7bc8422417c0739368af11672f6", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "4ca9659b5b1e2e52375281bd1b215d95fe6b5367eb373b205836d24be3a80309", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "8755603ba764a8c45c201a7d0f2f0dacfc5a32d26d8913533d907022185c192e", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "fccb778f08df707fe3b91b033e43299c60b3a69ec3b2c1fb319c5db8d148caee", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "c013b8c6d5e58d10594cacfd4061807bbab90a34511e3922060d57c6a2e23f55", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5d367b266ff12ce9f804ebe481e504b1a8d2379db9d4f1e0769da5f84dca61c2", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "120d89ad421a262518b79e533c106b211a61d5422d2b80fa93b08bce0f4a3f80", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "40f984810d5707f7c5ce8d39c22be2959e9f6c115b5566ce2c0da4d9eb491268", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "88ebb181169ffa9f5fa882c24ac17c6b060cfd7ab4d95b8f016e86071a0c8836", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "07e1b6861046fa20c80930685f5be2924b11eea094649b2e7d19dad0920a1962", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "04060da27823499f148b47d0a4430611706b74a52ffd05da9ac637d77d2cc895", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "fcd24a2bf50f0079ed28ebd4e1881af7f8d6ce3bd7c0e872c4e9721790805ecd", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "4714c07652593658706e7565eefa1d22cc80346b1a78a609029b17aca0c03611", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "e1a275949682d6ce0b2ef1b3a737753861dc7a8d64be676db3483300a7071f6f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "40193e00a6dcc4c2c23e900cb56768a69055911e5dea157c88ffd284b5a8521f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e7424a358469d42432327de13a97f5c114c6b3ca49270d013dabbfcfe845a5a5", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "04f216aa3eb515e4b32584264b471e2ce236a34d19ee08da489056304445c2ba", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "ef10f18b4d9aafa055c4a01cc0992595fa45f67581a10c7126990d7f4b3e9ad1", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b3d031427029f6ca65e97e19cd6e8302169516fa64041572fce85a862412ca30", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "2ade27fa7d4c00048700657b3ac611a3a02764a89cfb6f7ed22e82ede96b3719", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "f7730564c3c099a41f6a0859006e84dcdaa15a635dabc5469e5e6a1ca88b7172", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "febece91aefc93a8fbc1c0a50b4330e24508ed9c89a522512ce9dd3bac62cb54", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "52ab917de3de4e7f1a714bede85f98eb0aed1f74dd4fd2d8a53825c29c82aeed", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "cd232b4b9f25c2ae581bfd8ec9cadd98f7cc0a6d6518401f2eace6140ffb175d", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "bb645a9b35fd4e61313e86e8cb39e947b08a31de888f0139e7e007f9e58a2a10", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "da2e7fb4356ea2bf10daead4fbd2a6379563db14db7315f46ac7f868cc95dbe6", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "988ce8bf3de4b06ce7c52bfc8a22927c466b8734fb0724dd9279d6056032d843", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "a43c92299f99bc6e324792e9dd5ccda34d2adc8fb8e7eeb066457809f0b257bd", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "8373067217cd5268ef88f4851d5c94354dab27499b3a55e5c290c1084ab7850a", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "ab72112521b7870c8083d64403f9819647ec74865210283c2061853e24b56f08", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7c7e0c9ff137483275d46602cb09f49fe921174dc7471483a4954c9646b4cd44", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0f12806d102cf868c3b73ccc1e15bf817789413da51d6e15f1fc9004ba5e1bb9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "6567ca10b953485c27db3b013a9a16180dd8d3fc1050f88c718223995f94283c", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8f58708abd7c2abb6bac0f6233547e39ffa835c6d0985aa010dc126b90b46251", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "de1821ab4a72ff67c3f4f19cb9c8e2b56e05c80680735d0339782c8be1771c61", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "7aa7edfa224e4a35985a780c40f2c2b820c6b6a59da0d21490ea3efc0dffe70f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "70dcdc49b7296999b55c0ffae6898e5758634bcc4175db294357a564759ae504", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "2d2f8692dbe71ce565dd78849dc888cbb94eb2e4cc63471de0b50930eddf134a", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f3d01f3d94588d4f0b7be2cac2adef0e163c7fbcc1227771722b160b5197be12", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "9699503349c6012c0754b6d6761c58aa85ee253d7c75e37774f97be4ba4ac140", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8775fb7c37a2948937d1fb992199b1c9d602aaec65fa7db31b6133b8b5757955", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "a5d3be33997d684697091a2dfff21ca9c4eb05999b7b1042a65534600e6590fc", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "ab72112521b7870c8083d64403f9819647ec74865210283c2061853e24b56f08", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "cf1f6e8a230ff0c44b7350a387451e3793daae19ba2b862c77ef83c3d48f6200", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "cf5d7ad864c98003714bf35f3de31259fa84906b034868e2e08b4a1963ecec6c", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b65af6d76f80fbb23e21bb6f23fbf03ec83364ae6cf94898d2ab217f9190e90d", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "cbb5e020dbc5d2b1f9081e86d04d055b523eb0237ecd653a8be0530939ff2e38", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "7009af68aadedb76de4c60f385ac2e0604d43efeb936cd29444eb8a480e4cac3", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "094830cc0caf1f77e1526ac2ad5a6792b4f2315ccdecc2b33f8c5f5ad4867ca0", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ae38fed0764af911875c674a66a14f0b6650bf3368102da2a6b1dc5a5ad400da", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "618bdc08c72cb24b7816fac7a7b4906bd67d1ebc5da82b8ecbdf00e297c9967f", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "b8496ddaf77c1d446218102e4322c450105996daccc134f669b0ec60d234040e", +"T3T1_es_test_autolock.py::test_autolock_default_value": "3c5c05e4378beb2b1d2a0bc34be7bc2861c8b58ace7d64c7b981dfb30fd50172", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "eda151a4b51adc8a2cbc58cecce29b862a8c7fae430ca33176bab859872df8b2", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "eda151a4b51adc8a2cbc58cecce29b862a8c7fae430ca33176bab859872df8b2", +"T3T1_es_test_basic.py::test_capabilities": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_basic.py::test_device_id_different": "66c1837c51814d93d1bae35d7ccf70eefc047f004d8908499d24e1da94e53ecf", +"T3T1_es_test_basic.py::test_device_id_same": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_basic.py::test_features": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_basic.py::test_ping": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_busy_state.py::test_busy_expiry": "da280d408675fbdbaddefe467ce32f0fbd64726f8935dc5d49b9d2fe969f7585", +"T3T1_es_test_busy_state.py::test_busy_state": "cba9b124a66e083ae97eb0588259aaa7567a8fd03303d42645d9f51ce4a6a2d0", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", +"T3T1_es_test_cancel.py::test_cancel_on_paginated": "e7867645a35ee40b80f8a3eeaa122571367a3d3a1f850f89f5f7b14ce28522d7", +"T3T1_es_test_debuglink.py::test_softlock_instability": "feba60e1880714c37e5d961dbdd5f5aeaf7b283d946be44d8309daad7fee1c98", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "6f9a2eb356b7054881d6b60116f6f54e4884835b3b3881c151ba6ab5f32f8560", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_language.py::test_error_invalid_data_hash": "e2247117ecc9e7b6beace557014e50fe320236f31ee1849ee1183f5c0e24042f", +"T3T1_es_test_language.py::test_error_invalid_data_length": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", +"T3T1_es_test_language.py::test_error_invalid_header_magic": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", +"T3T1_es_test_language.py::test_error_invalid_signature": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", +"T3T1_es_test_language.py::test_error_too_long": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", +"T3T1_es_test_language.py::test_error_version_mismatch": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", +"T3T1_es_test_language.py::test_full_language_change[cs]": "b4fac0eb57f5f82f94c405a0330d461a5c796fb30036572729764e1960e0b86e", +"T3T1_es_test_language.py::test_full_language_change[de]": "e798172fac192ebca9f768086bc6f0674903fe4cae4ac7bad41c5893e6543125", +"T3T1_es_test_language.py::test_full_language_change[en]": "cb67a2e2dfe9144a9c9099501951fca5cf7df2d034556b6a99598311da342e5e", +"T3T1_es_test_language.py::test_full_language_change[es]": "376683a130d6ac67a2c79b8ff3d43249fd60c3927322bcb7280a070a3aaf4cff", +"T3T1_es_test_language.py::test_full_language_change[fr]": "b6ac036a7eddacbdb0066ce4589324242935f01c9af9523df89b32d3bb34af28", +"T3T1_es_test_language.py::test_header_trailing_data": "a8f1cd89bfdc467c55dc2c98ae9d976f94070753d73985818039e1ccbbe4eca5", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "2edc50a8f1f84785262b6993e663bafefe4c94c74758fc1883e0c81d8a31b82d", +"T3T1_es_test_language.py::test_reject_update": "af4fcd9735b37dce8a96d113629cb38e9f977dca094517de8140f3195f899f27", +"T3T1_es_test_language.py::test_silent_first_install[False-False]": "b9593b319d4fcc9aa74c3066ea8a330ff9cbddb6fec9231248bd3a9b6771c3d6", +"T3T1_es_test_language.py::test_silent_first_install[None-False]": "b9593b319d4fcc9aa74c3066ea8a330ff9cbddb6fec9231248bd3a9b6771c3d6", +"T3T1_es_test_language.py::test_silent_first_install[True-True]": "f24b09dbfb547c2d672b185de63b10e4c0cbd625c91649deb3c51d1cf838d236", +"T3T1_es_test_language.py::test_switch_from_english[None]": "08dcee097442f4bf73560ff86180332af4104d81e165c0428b44ec2319143386", +"T3T1_es_test_language.py::test_switch_from_english[True]": "08dcee097442f4bf73560ff86180332af4104d81e165c0428b44ec2319143386", +"T3T1_es_test_language.py::test_switch_from_english_not_silent": "e9783608cc1ace676e131ac0060a18d4926cd83ed7547cd52610bbc252f38f9b", +"T3T1_es_test_language.py::test_switch_language": "1689270753f434ba1480e00f4a7052fe84e39125f87ced404ea3229fbb156f5a", +"T3T1_es_test_language.py::test_translations_renders_on_screen": "fe82ef54f571300f8bb31f525dd97a6625f39f3c1ac117360753beb29d610132", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9cdf29017398bd44851b0d2b98dc1e721572eafe724fdfd9278ba50a27d6589c", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "7fcc2e5bf7efbdd1ca6cfc4d9bb4fa8ec3a65839b793f06c321991ceab806e29", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "cf5665ce7be41a28061647f55888a757550de03ab7bc1161da560c5c8aacb1c5", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "82add8bbbe096a95cdc31709555073feda73af3335ff4b7295370f5116bc99f5", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "808621ee8606b2940bc2de9350534f65ad079d68314085017556a5b4f9271e48", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "269671a98e634286dc482e0d455e33a952aed5b2e480354b0f8044aaafbd1fec", +"T3T1_es_test_msg_applysettings.py::test_label_too_long": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_msg_applysettings.py::test_safety_checks": "74b8d81ff4612e2a0c2faea87ece873b1ffcabe7a908a0f8896b76b075b56917", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "04b3ec63607e88360d839f8d9a72a483dfcac380dee854ad28af9e058d9e5e92", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1c2b031f987f6da61770e5f1ace16901a0b571ad4448d905d887549c1a4db9e8", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b2ae1874093b1ff319eff75bfbde15eb1e5687af0a7e79f2b506a632def0f77f", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "5f8abaf15f29392607d25f65d45b9f6cfc57b0a8db6aac6d7e22c414b84b0b22", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2068d1da24f27d6c519c6fd018ec99ab499656a53ee09fa293f60a4afc09528a", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "65a2130e4039bd172f7d97ac85ec2724ee51df97cb54c9eaca89c65b4e95545e", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "98999a9ec999aa2a29069d233a3cd043d3d9735c071477f0b14d42555117196d", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "8d9a45d619991e6ff0fa9d1fce021afba180aa4799c4b83373678269f497e6f3", +"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", +"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", +"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0b93588639729d595365e9f08e6b8fe3e0006b45277931a50af79d11f25ecb9a", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c122f12ce28406bc09fba1e25368fe9e204a52d77d94843a885d9f2b4a97811e", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "9367f80f31160a72981279b6642f552419bc78e5bcbfaf0cd84b4c3d2cd1fdc8", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "73b403297a2160cc9a477626cf4170f4a8879ee35a8bfd4f5cb14037a6ee7ea9", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "101d4a36a62dd78ae91293d802bc0ad405d65e52f50792452968fc6d7fd2039a", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "65051eba72b59178e2235b6fa874fcfbeb880e74e69898cd6e33a05de7ff99d4", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "026a511c9a7eb63f41c16c69c628a07cc46040bf62fd34de5b1973b75e459e9c", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "e8e63e04a31f8717f2969428315c072e4881dc7faa8870966926a2c6c07c15f4", +"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "1da77be1a6e89083f539701e46aa2d11c26b8d5571565cd3f848f5ef424865a7", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "c68b301950a34a3fcc8f1fbaa73828b5de58a70a9badbd1738d8e6083637cee4", +"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "2a5c917de03ae51cf139d3c82d3c58955e3ddb9e3aa394cee27422f0a54c05d1", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "b7e34f419b1734e91a8b632a61d6e9a71281a4fd1f4028ae16f67a9240132ccd", +"T3T1_es_test_msg_ping.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "108afdbc04d811b6f6ee12227785ed51e817c5b6cb49a480d941bb70200b54d6", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "aaef7d8707efa4b5ad629916f1830ef65b5479b23a344603f8d5f14282ff2cc9", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "876a606f52720d2dbf32bd68ddabe11f34ab2e8ed7d29e5515fc58f80792ed76", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "714155d406a8d19abf82eada80c7b0f86ad96d31244ee1270a015e0710216ad9", +"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "66c1837c51814d93d1bae35d7ccf70eefc047f004d8908499d24e1da94e53ecf", +"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", +"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", +"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", +"T3T1_es_test_pin.py::test_correct_pin": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "1fbaaad95161ff4da9e2ae7ae37e667870a2b4564828418962d524391f0d7956", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "0b7e28c51c526fcf8faea694ee0149457cdc9ad66ff3ee2983a3663af502a6a3", +"T3T1_es_test_pin.py::test_no_protection": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_protection_levels.py::test_apply_settings": "5f9c4bb58eefbed5acc59f4a85458a2572ea023a6de948d32c88d574c6d53ab5", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "a2e2590f6fae46c336b2f463ea48aabde1348f8f1d4630779d3cc9b50439b355", +"T3T1_es_test_protection_levels.py::test_get_address": "9cc79cf8650a318b43444a136235ddcdd432d8edcda4485532d0cd05196ba07f", +"T3T1_es_test_protection_levels.py::test_get_entropy": "e6fa10492a4b48cd06475be5dbed80e207e51c594265698da6fcbdcb5bf64ce8", +"T3T1_es_test_protection_levels.py::test_get_public_key": "9cc79cf8650a318b43444a136235ddcdd432d8edcda4485532d0cd05196ba07f", +"T3T1_es_test_protection_levels.py::test_initialize": "3301e669f223b8655abc70adc8ef7da57873f02ca54a4b7e473626fecb9f9b4b", +"T3T1_es_test_protection_levels.py::test_passphrase_cached": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "70d4881f9ca8b6b71be4d2bf0672509fc448a66dc72e35e673b5629b57e7f511", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "cdeb89d2802a7fe659a78c749afed9ac2904372d7e71ea2b61b994557443b67f", +"T3T1_es_test_protection_levels.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", +"T3T1_es_test_protection_levels.py::test_sign_message": "aaa7c9cee8695dc818d84eac3567288a0ea4aa66fc0e83c6270f2a69bc2cdf43", +"T3T1_es_test_protection_levels.py::test_signtx": "2a7bfd737150b2c82a4cb7a95551c7a6c5ab5bc2ebf62a6d4877b5f242fb5f25", +"T3T1_es_test_protection_levels.py::test_unlocked": "a18022b87683f056b9b7f0491f68edb9c4ae920f52a3c892c6337588fa4cba89", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "2a1d23b1f8cc7402cddaec723c9bee1428d59dbda0a8bea672c7d314959c8f10", +"T3T1_es_test_protection_levels.py::test_wipe_device": "9d9fc01b1d9324989e5acf71e938a2f22dc2470b65922d76fb0e9fd8f55cfec9", +"T3T1_es_test_sdcard.py::test_sd_format": "a95a337a1098c2f6483fbeefb953f7277189d03b38f792ff8cea7cee47549cda", +"T3T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "7fc9da34627b3ec0400e6fd83c9c156374963c991c4b787527e4692daee6b177", +"T3T1_es_test_session.py::test_cannot_resume_ended_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_session.py::test_clear_session": "d107e5b8924f295b0db54e6af6368c81822705508c0983fa14567757df1f0bc6", +"T3T1_es_test_session.py::test_derive_cardano_empty_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_session.py::test_derive_cardano_running_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_session.py::test_end_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_session.py::test_end_session_only_current": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_session.py::test_session_recycling": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", +"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "c1b4f8209829a6da7445b6167738988883a0bc694075490e75783ceecf537ff2", +"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "ce77813e7227ff5af41faf8f6150af2b87d0d0ae7509e6447f826ac3caf36cba", +"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5198c4b55df400132abc4eaf03daf53c552a93e7b13ca7baa2eba39c7065cc82", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "cbb2afccd5ef1938d1d86aba062807c58a365b3708f93d85c8b6fdbd3ab99fc4", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fbada0e47e70d3178eb9fa71402e9dee562f3e2a98df254e7a7d5a04c02b7791", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "5b8894a84f8134993d8d770260b53a189cbe09208e9b9994341add078e6766a5", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "cc47f9742cfe8349db52a3917fa21befbc390abd0e0bf3484974d09c6cbfda8e", +"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "72c76052749ecfbc285d6b0a36f309b40e4c869c168118cbacbb7aa9fd17cc09", +"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "90973652670a2e6fb41b34f4c48f3c9abba80d3e6f41691f78659bcb91b8a5ef", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2e7b27ed5d4bd60abd63d89a9b202feded6732b47388c95c59d711bb2a7d35b8", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "fce669ad118178bf67066aeef778e16028e63dadce84337d81232abd241e56a8", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "55ac235b00f0084ad9975ed77ed430f7bec60ce9bd44be26edbe040c63d13dbf", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "7633a085ff69e32fbd6fe949f1d277826ef7894a8e7d26081f320ad97c153e13", +"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ea1194f7be788d0fc8fa69410dd59ae838fce2d34de4cbe414852a403e2a135e", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "76c4436562e82ec6268d0cebb0d5b09d819b90f47cb2bb87459f6aea0c600c7a", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "69f5728b5b51fdb335af47c634f5b373fe4197a5d6b991fcba2ede286479039b", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4bac64dc2362b1c2cd359d513e3528fd104c6c3426327e011af7f1de5947b641", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "2ea80448ee8e142036620cc6c75b2e9723fbfd6576f00c74f8570afdb114b721", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ebd8ddd04365f7adc5c44c1bd71d63b9b8525a6c067b42c60e780f87e9151807", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "98af1b069d8d2ec445e299026372d52efef2d421c83ba227751b7c379aeed62d", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "de2b7c37261754096e95d7e04641b1752f6b6e20f28caa865837e1ec95fd9f62", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e5f39fb25c07f25efda59a6d2f5e98f5fdbdb290f43fd7f7dee9aad750fc1ec5", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "1dbb85770758f22114c5a284a39003ab0b08f97422e397257297687058a80e99", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "02efd68c800748415e2916b23f2294a0db68d7dfe85c2310abf0968f38ea294e", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "8ecce5a25a8b7f20ed87aaa9cd95ee9f3468c4d52f1f464fe5b5fe65602f9911", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8e5604ed25002ef32b1008ced0613b09f4288bdd694be5ff39c4e5388642a834", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ad73951025fa7db7c193ed33d02d7706ddd6851d57a70ced5206a8352fceb822", +"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "c5368093c0ee1ca1da67bc534c236a3d7edb3ab87da9ce0eb8e1e7a9ec109402", +"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "f44cf2879b0a2d56b1ffbda98036e5c137249084a4a5c08bf63ad0b73f331718", +"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "9d0d1c4842438f4d4d8375dcf53a3bdd8579823fb76be72e9e5880d2e0a460f9", +"T3T1_es_zcash-test_sign_tx.py::test_one_two": "8bb09f62f4ae5b5432e7b5377f3f5cec3312de5f0a70d75d74393887e35e0e83", +"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", +"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "c1af7d238fec54f5832b9e36a4e5d4baeb86dd765ab6d824d828f1db18a170bd", +"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "061f1075cd3a1eafafdc28305444e94b929a2ec6c49843370a9e598e86075c27", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "7e7b0c25a61ed2868d8d22680a2f81dbff3355c27b0189c47b28026447e55b2d", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "e34c97507448b0fbebdaed6a95d761853e2ee138dbdbf253b2a35cc97702bd81", +"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "2ac6182461f382b799b2e2539b942b08cb48a957c5995558a12b97dd5b12ecdd", +"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "afa20db351f0564115c2711f555b3279688b0a9ce177581601be8d39e5a138f5", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "7ea45cf6a3adaea6ddcce2e109852af1c914fe90daa4338f981b0195d5c28926", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "d2a2787fdc79ce54707d28c267cf536b0568bce05586a6c049bd9a3ddba9f426", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "f13618ac157b732c7883e0427d58a2098b744646c65e2ab5f7f47927889e33aa", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "99996db48c0083cdc205c6542a48f9e80228238842e7572a00b7b58bc500a688", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "f590fb3f4b8a69a3e0feaf58f65a67aa7a4ada8d89184a549434c5a1ec17b332", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "f590fb3f4b8a69a3e0feaf58f65a67aa7a4ada8d89184a549434c5a1ec17b332", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "218c7eef4442e4105565659d8600f60e9f5aec10b67e53f8f5881d2c79c32480", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "e4b10c08b0d94eab8a1aed7a5877331948e0645884946c34a2bdbde039ba066e", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7790c2972c163135877452cb26534364b3dd2c2e9ea74855d7f8e301f63f1c70", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "4a993586370ed4fc771bb737949c7899f430aa6b75c328170ecd071a12b884e8", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "46b15a11d901838656416c3f12a1bb8741c2369c99b2790263903c2b31082bd6", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "46b15a11d901838656416c3f12a1bb8741c2369c99b2790263903c2b31082bd6", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0347e469421f0b70cfc1be9cbe8e55a998a38e4d28b68239abd7b83f8d52b651", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f272c80e61c11bebe60568af893f97535c4a46ab493ce09a1bc2175c10caf581", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "5ba7e8f071d8d398e6a0b15e72328d9670eef64c08f597c91490a049cf882365", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "d7dbaec3a8f9c39c58d030ab1783ad5e8ca9715d759836b06c5e42dd777ceb30", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "d7dbaec3a8f9c39c58d030ab1783ad5e8ca9715d759836b06c5e42dd777ceb30", +"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "0f633e530a38c2447fde5689453c22b5788472aaea0a6f639b94c2485b78c7bd", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "0f633e530a38c2447fde5689453c22b5788472aaea0a6f639b94c2485b78c7bd", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "e6b1a576b38f77555eb91722594e76db74304ca38a128cfb0c49dd7165f853b2", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c3a20512cdb3bd961894a99f2394a7a6dd7b2edab1fd71472e5fda846169a510", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "dd2221808f1902b45b724ffe21ffb0142d71bff83d691f924334b43fedec8341", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "6c94e1fc6a28506199c4ae9c939a900310706f8c28ed70e094b55952b1f0b8b6", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c84232179cdb951ff8a03e92b172e11ea624f7d19c90f9f46ae0da274310ec5", +"T3T1_fr_bitcoin-test_bgold.py::test_attack_change_input": "66ef2ca61c8c8a74420e711a9aebd287dc1ab3382dab28279e398cec92691290", +"T3T1_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "66ef2ca61c8c8a74420e711a9aebd287dc1ab3382dab28279e398cec92691290", +"T3T1_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "f3cdd5bc58a64d16043a952a1f5d73ecf4631d40ec9c6241311d396f0d86e96a", +"T3T1_fr_bitcoin-test_bgold.py::test_send_btg_external_presigned": "922922a85e0a62e902e5384269c42665e1965338c58e201bd1d4859a57e8561a", +"T3T1_fr_bitcoin-test_bgold.py::test_send_btg_multisig_change": "caec88ade3b6a4b9cea523674c975b006428566e04da154514108bb467a9a3c1", +"T3T1_fr_bitcoin-test_bgold.py::test_send_mixed_inputs": "1a90274f3b3512d2b7586dbb33fc8d6f507a5acb2bda504c345b239f4af4f811", +"T3T1_fr_bitcoin-test_bgold.py::test_send_multisig_1": "7865240bfbbdea7a6776d10b23ca5ba413264b67b752df1e16b7d9ca83e2d0f3", +"T3T1_fr_bitcoin-test_bgold.py::test_send_p2sh": "a76d1bf35f9d7a14a84285a49c033e70a2461d53648b85cd543bb0db22a4454d", +"T3T1_fr_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "be144179df24ade3ee49bf03f8e1a0763146cc7ffa40844a03842cfc6eead134", +"T3T1_fr_bitcoin-test_dash.py::test_send_dash": "356d06db25278b9221a08e1a413a599ddb63d8cf0da84b9aef77f3354c8c0094", +"T3T1_fr_bitcoin-test_dash.py::test_send_dash_dip2_input": "e3e432acaba01dd2873c0ec5164f717bc75bc64177f6629d64ba3123d164147d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "fffd40e65d50d0e2b0a7fc9adca24ce57f761fe1dd770613b3781508b5efb5c1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "140368bad3e036123a498e7b466ed1242de98d81bd7159c4bd74d9944c8762eb", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "35e1b88eaef93704bb82a6d359b1c81c5b98e40d486df8bc46e356b0d39478ce", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "80a7c80a5926efed3743c127ffc4fcf253e59ecf6b4044669556363432497dae", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "141c46991c0335ad159a74eb74a3956a2d2f3947522e5e5b5cb546f0f35a5054", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "184a6cd40c4ac5ff417ebb34610443256fb051d57d73883d7e178bf3854bf32b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "843c1d085bf10c22f520ffe8369ab414546126bd3f261dd74d5c428c48b14270", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "9c2df27e2e8745878a646db092830b6b9fe49e9677dfa6ca23c68d755a10ca6a", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "2f54ee240111cb157b7458435b77b606543f6e721b8812201635c4e64d3ba9f4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "0c7f141b4bf165400827dfd23e54a43796db0926d100ada7925e7e4d9e5f59a9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "89c2ba8ac72d4cd6a750e695fa2756c2d970f9c38d5551f2a3007b5ae290b771", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "434617ff6d294ffd3117d3105fb2d17e7804466dc95204c44b10979fbaa05821", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "2dc71d6f2c275b5dc086b9c535a845174d54674f5902ed300cdf48f582a1a42f", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "38a1c0d9bf202d2520cd693bdade96531e34781ac0a563bcf218186fd64cbd29", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a116ceae9cae9005e127664330bba72ee396cdf5274da76344e2e30414733712", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e1252423ecf047d708c39329f22f46dc1c28b6a392329b2e367f06a00f5ca537", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "fffd40e65d50d0e2b0a7fc9adca24ce57f761fe1dd770613b3781508b5efb5c1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "140368bad3e036123a498e7b466ed1242de98d81bd7159c4bd74d9944c8762eb", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "35e1b88eaef93704bb82a6d359b1c81c5b98e40d486df8bc46e356b0d39478ce", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "80a7c80a5926efed3743c127ffc4fcf253e59ecf6b4044669556363432497dae", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "141c46991c0335ad159a74eb74a3956a2d2f3947522e5e5b5cb546f0f35a5054", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "184a6cd40c4ac5ff417ebb34610443256fb051d57d73883d7e178bf3854bf32b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "843c1d085bf10c22f520ffe8369ab414546126bd3f261dd74d5c428c48b14270", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "9c2df27e2e8745878a646db092830b6b9fe49e9677dfa6ca23c68d755a10ca6a", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "2f54ee240111cb157b7458435b77b606543f6e721b8812201635c4e64d3ba9f4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "0c7f141b4bf165400827dfd23e54a43796db0926d100ada7925e7e4d9e5f59a9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "89c2ba8ac72d4cd6a750e695fa2756c2d970f9c38d5551f2a3007b5ae290b771", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "434617ff6d294ffd3117d3105fb2d17e7804466dc95204c44b10979fbaa05821", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "2dc71d6f2c275b5dc086b9c535a845174d54674f5902ed300cdf48f582a1a42f", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "38a1c0d9bf202d2520cd693bdade96531e34781ac0a563bcf218186fd64cbd29", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a116ceae9cae9005e127664330bba72ee396cdf5274da76344e2e30414733712", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "e1252423ecf047d708c39329f22f46dc1c28b6a392329b2e367f06a00f5ca537", +"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "2bb10461c18f3651a3558ef318a410b54903bf064cd8af130e0f6bdc3baf18fa", +"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "f2c1a442c4198640d4389a54c10bd16a972227f262c23b8e48376da6423c503d", +"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "79671f57f7b674dddb7bd066db9573543505b4055f317abab3823b0c1915b4c7", +"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "b071a5dcfedb4ef3c03b92aa0818ee06b87b399d7e8033f6607db335d9ff8cce", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "af6ed36cdbcf9d886b2ef31509cfb98b5ed5d155c33f8c8d0e5bee2bbf85b40a", +"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "bd854738d58ad313354c77f6421ab59e0171f3dd5c44f2781f1a429310f7e691", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "71831de0bb86025a17ae34bec570e454d49c37b0e4e1d623a2bb8a5a31770485", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1b1de8725ea34401635dfe632f54380354e493b9d2038fb83547951c6ce0c030", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "06c9ae88bf872289fd2260ac2e11b639ff38430910e4aefe9ba0486472ee1a62", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a44090bc6ec6b1aaa9d3f28ec61f12fa698f59c5b569dd9511f6f809a0ba8333", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "32d941af3ceb6d9f6c646d3083d429bd1f0bdedc51ad8179089d32a55fd316d2", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "503c7055fe475d4ac27567abed181c1be490aac2db161346eb9882dc6499c6fc", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "8c4c9ee3f82c49bf074645a87dc48010d95bd6c150bb6047ff74295620ee9dd4", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "948558c0bf8773d3de58577ceb5dc3884407d3881d037d2fb04ec90f4591eba2", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "6ce1a46858f8f25893455e5903141b98c44a933a37efccfd36a4e73d10852651", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "342b4ecfae0e3bc937be54ea89b85026dd055fbed341362c5fb74ae312ae0fb4", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "da820f12624b29fbc44c888aec1dedae3a9ac58076dfb492b7addc64af79314c", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "874c44abf0b3f54e4c6bc5cdb9ed08c86022a51fe2f7fb2d688af0af96baf55a", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a4fd74c59e74e312bf95c8e66bbff7dd8ffd00dc546c44a17b4bb77e067f9e2e", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "edad99ca6f1cff8ff5032507849ec35a2598b3bedc1d599535189e7f4bc08593", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "be922b6c5344e9e2fcca44a0ac8c01a8f38c41270a37fff0992ad417c37f2a50", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a2c485e323ad01ba7e9986bc46967a60a9ee39acc764dd7c37258d54769d6b36", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "453814a0def895aa34b46665250f6990d5155164ab69d347a205683efafab445", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "cb2293c7bfc753db3fccb490fe70f86a753384a459bbf0a2b3eb2ee0566854e8", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a271833f901a8facb4c84f1eda1e5d0d532ab1f887c9264c32a3ad94374ccab4", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "be5705ac7186168b188f49982a9ec928d6b40d500c2acb3d5261094aec8ba5d0", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "6a1de4601d04a547b22b8016ae2dd2a51cfcd6bae9bb338ee9ccb9ee6db0f9fd", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "d19f9eec4a8f733fb6a6904c25043687e68e91c8033c396a56eec2fd4ee1f24b", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "d7c64b6ed909a7592e6c546fa2be5f6cf5ca01b0353281370d8e1265f2e77c71", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "36d3b6b2194321df017f3fd5313b342800f30a64996c0a5dcc0597afa6795a18", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "36d3b6b2194321df017f3fd5313b342800f30a64996c0a5dcc0597afa6795a18", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "501684c2d785cc02fbb299c8ff057c0724c31c512e3a06e093c96d59bfa78d2d", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "87e2d0f29a48ea055b9f6f8a06a9e4b72a5e93958b27f6b4ba751eb415a90d3e", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "a5d85e064f53444c0d3ed7c68d6b017b7aa15b3792bd9d1631fde4572cd7278a", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "a5d0c63808c51908b1c778b9b9c299d3f17ef5538f11592c01bc28e1fde53e17", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "00d1f0232901bc1eebbab2f5402cba8a7dc85d2d35e7a0d9d1c810c639cf2dfb", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "4328539a45067896340be36a04a023813e6004e47a2ea4021a5fae297d3ae1ce", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "2f8fa318389afc9018dbcf4c2d9d3a57598c5abcaf1bba7b1e6287b2beb060fd", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "6a976ad640a2361854c1260dd1569f20ee3ebd548fac9c28d333b39c93f42502", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d75059a4c266ae2e94e4f127fb8f14e5dc97bbe627761e6adfdda8909b0ebac9", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "ee0d5ab23382e13ee3b3100bd55ff219bd0d10345f5b9d3ff8a0cda1ec8d42a6", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "32d82d44efe31451a19bea60f5c1fe906a3e319f889c70b616bf7a81b847ec18", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "116929ddafd89e53c60fc81b51325c3bbde59978e9c8e8fd35856dd389453b5b", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "f71eab6e5e2d9f359ee444138557533c0ed33229fbf25fbf0325cce4e4b6f314", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "05f1c7bd8f4b1b3050631540d8b6f3df40097e91e5c4ca7c70cbfdeebc1e2d79", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "dd35fb51181f8a431da8a16277b0fa3dd1ce97d19db499cb5572f0666f6d1265", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "d48dc65162716136e9f8e18586131dcde8e0c841e046d95106b2e4a3f8e2636a", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "95d449f6afc64225c126cc7c0999244e4bb0d9d6116f988fabe361d587027fee", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "53de3ee46d4fec973da7959577b6b2131fb50fd65fb00ece121b19bc652f3f13", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "2dda211909b3319f176ccfdde706505723de4c42cf1198f60de5ec948bb0e115", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "3305f84aa220136aa6255d158d59cbc09a24e5202d5ee13fa24edfbf70d6dac2", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "38af197291e26875ffc27002c33fe849db11971b9f713d17eb582cf5f9a2d585", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "df6a1f813cd9b97762ea414c69d1c56b1113dc72505eaf3481cb3f6e81289986", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2456cce5635e1ef4d799ec7f53ec9433fbd9e5f4bdd070649fbd6b52a81d9049", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_grs.py::test_legacy": "9e6c3b5c9a8d06ee697d8245f165bdd1afaedd1a2d1e4bd3a04c507e409bb392", +"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "e2950c89beaa95c476d723f908a1eed34387e73fa02637065b3c5be444090c4e", +"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "545775fcd6149a76c0c87e3c72d2ffee1e9222532443a6a217a1abd331bb9aaa", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "650c3f01dc51d02a6ac8b12596a7618986fa96f54e89c82761b38b213ee9aeb9", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "02ba4283ce884d1dde2afc5975cf0a785afdc5c9b847b69cefa510cb167ab24e", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "cee745cc47de4c104b19837ef38058a8c25afc4202bc264a57bd707128ee27f8", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "7ff082da13862c7ddec6c2a308a0be1fa2f52b5da096e0a9a3727523e75e714d", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "e7db8138737ba15205b3ca664bbe3828dfdf3d7e710192ec02f015bbd2fb129c", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "83b4a61cc53e24744e4c6d8194d705226c23705d73a44aa49940ee82505899e6", +"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "e62839d037f7c1dcc2171528ae4c8fee2bd3facdfb1609e57383d99255ca1560", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "37a0ea5da43a153d86caf82ec7436c261ae8ca7f89ef84f5806c59476286560f", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "cb977e0112bfc4adf4640187ef27bc37a0b1ecfcbfbccd99a4db0681958943a0", +"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "4b11f35a941104698832ed9f6364b5d0d43ff7c5f897756a64ea36c1477ceadb", +"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "e94993d4b850c2ffdea77bd35bac4ac85521d9831e409316b61a37e60a5d5107", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "2f8e40b4cc95998168ae512930c400698dd095e83ffe7b9fa96e7e91f92432da", +"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "85d03db58643121cd1c195a0f03e4125402864c22b23bf0b9810ec8b0a9d8912", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "6e468e0e34a75a1ef660d4a509fde0949f9c2cc1cc967dca513a50bf843d8b5a", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "789b6f415cc3af8a8834bd10c000bebf1744fb189119355e982f137750d0dbe5", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "6b915fea41f1f3ee65eca0471eba25c5c9446fb655310cf873ef25d98b40a1cf", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "6b0746a717c8f170c1fbdc44ad686daede697e418ac23f1cc615ed4b24a3a536", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "044d28e3d24bc87fdd9beb3fceb069ea30347b8482813b1f59d7a340c236b709", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "188dc34b495ec4890ba2886fffdf97a4634b5944ff355169d76f12f131bba8af", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "f81751ecc5e45bb34af4028a3748b710b30e8cc23784b086d065433f88a3ce36", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "d8f8d583e4bd879f2359815576ac4cf45ca2ab47ae9b2dc4506f4c32a519f8f4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "d33b6d5740069d0316b73cd2d0e9ae412d65131a5997bd2cca9fa698d3b54165", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fce93158fed1259c65c617eb4f78514c687fff54662f2bf15ef12dbe112b3c60", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "f22ec9455c59a57ccac7fd45f4f5f508d97f32de0eb470eb004eb9a9814d2d39", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "b42cefd5e18f6377629617ddd7b6c79d9854c682b80d53a8f1e8212945f17636", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "820c675b6590c792b12847d4b44417ed29c8668707a9766e4bb1d5e4175c88ba", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "09445fdc2bdc47840432fac77c980359f8f4f6a65ca52a94a566c74c411c1696", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "a0535af66e01e6b591c06f322030e7c2d8e85c52afba5e4facc99de18e727f4a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "29a074a9240578d504172424e7901b18f1f38897be75420b77cf42e060075837", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "a7948b594726557f0f07920fdf38badd2881129a8087b2f73664e76c8ae8a3e4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "54b873d54abed4932dd0142678f1cbf854f1c659f9740a75885466da1cf2ef07", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "04715cdadf1a6c51dbdf1e75426c6133d4e42f370d2a37dc8ce0af03b62aa872", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "813e93c0fc84d102947e10192fb4b6c0d3672d1f9b1ace9912003374277bca23", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "4e530a3cdc32deb73b2ec8ca086dfd9f11e3e4b6907eb67846568cb3f45a6fed", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "6e7ee1edfd77b5529726499c3703a1868ec66ff41994ede1010347f519d92cbc", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "1fe4f1d6c2eef9686854ead3384c404e7686408da95db777bbad2d78c1f2fba5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "95666dcc5c35f2e7d2430eceabf7037406648242274bb94f4730eb4bdfe7b794", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "6a9c1f9a750a817b0831df4b25699087ed25f4019b4fcae58e9af71d805a3540", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "d3ce3decbaf9250008f2ffb5227b58f4c156dd9113e7d8cde9b87333a13655ff", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b0b9426239f59edbd7822dae8fd6432d4184e238c58167fd5bf85f0168ad7889", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "a408209f65b42c02076f338705ccfd5492d140538effb2c8b4d055a9c1d996c9", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6206bb5facee3371f97c3212a18685af6814fd51a5ca90b0615e6889ec696877", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "2db40ee27e1c876f8132438ac068832ffb42c450e2653000f829ca9bd630075f", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a835cd86e37b62ca65becbc2acab0e80b268afc8bd09d89eb7871906f24c4de7", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "332822323fb51b443b554d4177713f642a4419c834fb75a8e2318725f2e6b101", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "11e63c78222b9ef7abd150c68b355e80b3d6acfdb296eb2db975d632a1826f6a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "42f5e3be3f91ffba1e4e508407f44cf8f64f3aa0c1bc673798d4288108118480", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "3c2989f673f736cb3cdd235f469b72bb25544f262084b79cc2bccffb067d29e0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "854c1cbb48ba91b507183923f0e5e606364e22c9c25c3d80334d6cf465d5870b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ff6e76457bf04cb630c9a5639fddb056093928c1e3cd646cd078634a44c3d9e8", +"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "3c4d0e8e85004003f262e4854363578ec08d4e412315841029cb27523f304d67", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "64e26e2f0b0bde23b9ffeb661859c12f948a66733f3ac26530bdb9291f85c2c6", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "8496830951905a377f5b3d1ff12ed378045f1bae464296732a460465edc19b85", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "2d88ec77eae7b5c70461779f63a7e2158e1ecfa70d90e993976c68127c860626", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "ca47f1e152ea9aff2238782fa963249307f184dce3c62a908bb2f81e5b3fcb66", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[decred]": "0adcb2ce7ef3b40f59eef4710b3ec02be14c28b1d3b53bb8918dcaa4d6474f2c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "9c3fa3efbf2e18aea8a5bd46988faba64bdb3a029d3285d07ebfbfd6f5cf3476", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "c49fa73d7893ed6d5cf3f292f227ebe53b74d96747c85ecc50992d8f5f23268c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6d3f14cd30ba8bc15a35e70c5a354b763c8f0240f09e2e0cc949fe29a814e6ba", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "b5031e4df40ce1f1228c53f4c60f3a020d1e7876489776d21467873a6f51cab0", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "7172a4dc5c9ec928ee650d24da15f9fb516bd5d7a1e9869e54f94b9f8473e170", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "7172a4dc5c9ec928ee650d24da15f9fb516bd5d7a1e9869e54f94b9f8473e170", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "1302ee4345a4937c40c654a7387f75667173c86fcdfd86fb4f783ca0a7531a11", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "a0a1d86365d2987b4201b4aa0e09e4af9f3d01d4296ff2991a1fc8d0f66a9ea2", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "56143746256565cea445b6348f22c6da7039498ea72b8df7994d30780ed52894", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "56143746256565cea445b6348f22c6da7039498ea72b8df7994d30780ed52894", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "174df157c1b394824ee9b90eea099b0ce072ffcb883a0d5cc2d942e51198b9a9", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "7874abb0a08e82bae7f6e8f2dcd231f78841cd7ae4a28169771fed83fc82fb8c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "ef3a8f624f1ce3d22d6a3932f4a42fcfea7b8f8222bd636ce546618fe5832e6d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "ef3a8f624f1ce3d22d6a3932f4a42fcfea7b8f8222bd636ce546618fe5832e6d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "27711b0b1c556b8ecbeec4d19f6620d6ade469112cc1fe7b043a332c1d693408", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "65d908a935485a8a8452ff8e386e6aeb4cfd07607142de82208b0eacf2c4cb92", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "3dc9a0cba65c6e5f8e6aef9134cc84f1deb6f6ef1cf153be3036549fe200258f", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "328eb62c44d57907c787b4eda347a0dfaefffdf0ab79154fd52ea617fa69e11b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "8666a062ebcf221897981aa0cbea2d55e4cf12c3564e8d3c36f619e48aa88875", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "8718ea206a27babb2a716640e274aa53ff5f4beae2fce1ecbfbd8311752073d0", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "f4299a9a91b7f346e2096811576f01ad576e67cf6e8c6b72884cedb709aaaa77", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "6b8613dd47a39b04617d7f3dc0de01aaca2473da798523438ceeb00b16f044e6", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "615c994d9ba84374a024ad8170052ad2f02c30dc2571a0c23ff491d62b4f6455", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "8624b2d04111c9638e2403686fcd8460d3d34f231bb56f9d9a8cf4b56c6eecb9", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "8624b2d04111c9638e2403686fcd8460d3d34f231bb56f9d9a8cf4b56c6eecb9", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "7b7f3805b70bfb2df3ec30cc2277cee9bbee46389f793e2fe304cf5de05d1ed1", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "8602fe06f4d3f3528c02b1e860bae97f6b0a999f3a47a2a68cdb9de4d27b4476", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8054b2a842c267a458d93b5058f8863cf9396821bc08561f8864e04406d14a53", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8054b2a842c267a458d93b5058f8863cf9396821bc08561f8864e04406d14a53", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "fe0f37552c870a110f3bd5be06df2c8f7e382eed49267917608b76fb8b96f70b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6b9911b920068ef48e5bbe01ffb9e9c70d31c6f18ccf080fa53711c7ab9b095e", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "563203094963521f24c9138967dda33a91e482682045e214daeb95b3649717bb", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "563203094963521f24c9138967dda33a91e482682045e214daeb95b3649717bb", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "43620a9a8346be51a471c6c2e115e1490c3eec9bdd93c7e791aa8b7dec169d7c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "a4e6f13f1ad1068cd3574dcb42b64a9c708d7cbc5af0f5727f9f8c597f8f9cb1", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "152d965f90a5d168571fb59677b23ef30e27a1e52b28456ceef7fe3123369412", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b8566137418c9c7949764b45c0d9d56fdb8dfa3f2cf8949b12048e3e0b8e0929", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "160f47e387c35123320bafc14eb51f166a386d958741346d18278fad0da1ab0d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "dc0515cfdfd75237e5641ddb02b543e19130bcd576ce58bb5f64c70984a3dabd", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "01dd41131f86d5f78621d70a4ef7d99305a942f02085096e380632b93742f0f8", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "fe514c63f5bbbd26ab904a3585d13b304b912bd8bb5cdfee16ab4b671a66faec", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "366f3c3959a0117078d785f473d4856d3d0573b1201d6cabd5febfde7343d91b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "8e7c20df88fd7e89704dd165dfccbb00b63ac46308af7e7702555ba8003dc192", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "08a9254a789c72fd974dcaf6ce71012668068ff3bf8db7c17c01338a6b397d76", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "0db51cb3e0b78a496a384ca61f104f61aa2e4e2c0a2150228d6d50b302930935", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "6909ec8af35cab15a6738b95cb1a47b7d837db8b6299138a3dbe8f1d93563b1a", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", +"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "ea33df0867ea634f2b7493d115fadbe4481fcdaaf180a9bba61e8b3103b99612", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "9198c00570ef770eea17c21580fd1dbf0a0bd0c615050c5f65bc530206d61268", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx.py::test_information": "a5ecce0cfb297c43cc9ed9719f23bc3fb86f456d6278c174942d6e7cfe4bb131", +"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "52e35c5560499ebd9887bba669aa94e1044cfa6bb2ca9f76080978244ed5ed85", +"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "f1a9d844fcebc53d9575a188de11cdd0a0272d60df444b93e61e1a9af4cdbc7b", +"T3T1_fr_bitcoin-test_signtx.py::test_information_replacement": "5421cafaec22f48c174adf515d4f3fd6313083c5e37fc5ee4340e4d7fd6c7df0", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "5ffdb018caafe83a635838f60c6d952c232571d79a0bba33d81dde4107676f2b", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "4448f7b5d822cfa20f260d25f5a12f5dd2ff22a81dbb1b4335ffa02b0ce4b769", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "167b1a487de997e6a7b3d32a37d269d1de07ad356d18f3035b1c5e3f4369f3c2", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "4448f7b5d822cfa20f260d25f5a12f5dd2ff22a81dbb1b4335ffa02b0ce4b769", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "167b1a487de997e6a7b3d32a37d269d1de07ad356d18f3035b1c5e3f4369f3c2", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "adcc55555af2575c1da2186236ecc30c7daf1b5bd963ad12ab646b87bd1e4075", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "a0a749bdd6a81c56ca22d214a44885c190d1026b29b939dbb9092679e81b218f", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "c788ddecc1654773c92ff3796bfcd2b83d24c5ed8a79345dfecfae0d6e885151", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "b3b8b2c2e4f69a636dc2cb8b02430636dd99860a73b7e9cc6e12a87006c51df4", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "5d3c34abb80a97ae653303b503a9c6e3e81cdc095f92d62b2763a8ae96f516fe", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "85015dbecc29268c1f4cdcae87d0a241c6ec630081772148c92a4598aaba8d80", +"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "df2060e6b07fc8d3977e82834b2b15fb6a7b0cf633de39e2b44239d64b15b965", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "c9daf87d2c7d5c6041ac7b1783de999d858b497b92a179c2a4ea036c563de546", +"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "01588d4d80ce5684031a3559ef67e90e91eb69e038d30ecaab6b0c65d9240818", +"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "ef083934e4f2be2da5640c8ffa5b30ccf54d152324812bc5a37368baabd50600", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "ea63ec00952f6c15856379c84bb42dd7390e4a521d77b30e4aa4c9ba5349d348", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "00be1ad597abff132dda63849091d0f73f5b935f5d8a1df749b37a936862e3b3", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "0973414c83e5eb9f216ca2c7769600520b3e4f7102a126db5fea5da86aac7549", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", +"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "60e86d19887c9b78a54ea9b42b46b77eaf2a78ba4d77dc94b6a390cca0b0b231", +"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "335aa6309a3f62279222e8a57e924c1f40a3d71022f167e4130252e4badeb112", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "78a959dfaa10193a830344f22567f152811ccb4c7b675a617fd9e42eff77cf8c", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "6871dd691938e04708ec237aea40b8ea311dabcf9b311ed81d7a66db3bfc8272", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "454d87b024070deb806674c2b0b5980b662d1ded48ee0f15a5f55315c773136f", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "1920980c44087a42afe3a5952f4cd58b712f7ab3f04e630a4ef24184d1cd0f11", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d853cf38d525e744affe105beadb64773e896da4baa78d4c4845f6aa1165b6df", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "365bd7357ca6cdd0f7db04c5ef27c3c61d87f24a91483d0b3131874fa88dc20a", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "a74a715a5fbc3388d2f2f9598c62ba9b902154da589e14bb092c96e01f1f1bb5", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "9ae40dafa5318e14bec7ae0659478fbe47be374de579becf263c8f67de3eba7a", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "a6733f5e82c2a66a3030411f0cfb0e2be84b093d0fc57f289fdc12132c02e6b5", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "6ebb5029af2d3cd887e219da3c9f365e0cd35051cbf882312a3de4f2fc57e2ee", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "e57c783019086d92b2c848c163f7d0c32926a606312b828d5cbe51a8fbb2e447", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "72d8df6f0eb0ccf744a5045145269fdc4cd2eb1b5af4a19eab970eb95676f14a", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "18a118daf8aa6d99a9b8ce7df99367a20029e29a9e0acf3f9069d3e76eaf5266", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "706cf41002e74ff8833123761d6f963c781890bc9f4e9c92705be114c8a16aad", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "67f2e609fa778e908559df1bf45a1bc41e4ba01e86c5b1f005724cef31f2cd0e", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ad3d77620079738586bbf875463a44f675d31f757b43c8da129f54d6cc826201", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bda1e732e40461615ce3aeed46c62243464b0ca520994600be9492d02b23f139", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "6881c0dad0838a3905ed49fb96f13b6a9cb2cc39265e9572b17ce3e2ae2a7f86", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "aa3b0c52904df02464f9fb84464615c9d35358a2346ac559b9880d283c175f7c", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "32fbb5c64e81b24b52f670bd09e606387ba1aad8ded56434f03e51232c68517d", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "aa3b0c52904df02464f9fb84464615c9d35358a2346ac559b9880d283c175f7c", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "32fbb5c64e81b24b52f670bd09e606387ba1aad8ded56434f03e51232c68517d", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "589e68ec22c683a51099fc3c3253927ab2775492edfd3d23f829fdd4fb8a7931", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "5b7b68478a9f04493f74fd489ab61e17940563b1782f1dcb5212f4fa98774500", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5604efb8e7b5ad8957ef5e8cd29888ac8d708dea2555779efe5006bf194491f6", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4438d00be13195b83dccfc6acec4203dedea6b470434f084e38f6a447203f13e", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "3c6c0c9dfa1a8a3cd37ebf3a91f1dac88574e742fcadc333e657a4872f726e2a", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "9456ff82d2e3559cb3e66d0c34e04f9e44a7d5cace587addb698586ff9bdc8e3", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "4c1c07c7d569f9ab198a119d3d7750a086ce495114bab94d05a4cc585dc96612", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "3a6160bb576e590b3f290b0dc1da58c98f40e1e50204a86a0bab7777ceb051eb", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a76f6d07808ab5f7c7839c2f838578ffbaa5966c483b371871cb2a4b3bd4f10f", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "24763707be8b2c53bbe42307ea51dd51914c58cd4cd3e2b145dbc89e36560f15", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "7853b210144cc30a42e7a55b80b9ae295abe3a14cf08c91e1b29146c1c4c97a8", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "7212a5a1deacb678c2dc4d636d5131f466f0cd75516dab5eda83209fdc379dca", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "7a3ab9768a6598fe3c8d9001f08133047050fc3494dd449ace04065807040799", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "7a3ab9768a6598fe3c8d9001f08133047050fc3494dd449ace04065807040799", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a8cab9f8ca0568b71137ac2df1b1e013929cc26847cb085e53eb2f567ca4dc5f", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "1a9bb012020435f9153984a97be5a5c05ea054c78fe86a82e8195ec95572e19d", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "2f1e10cbc440a2944a2c469d961db38c6f90d34a9c96e65016ee81a4da70e76d", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a8cab9f8ca0568b71137ac2df1b1e013929cc26847cb085e53eb2f567ca4dc5f", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "df66e7e5d6c23b1303a2bca9ed58eab8e8a512ed10cfa0b2d4ee060b5bd115ab", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8847b4b8b2b2ea8907a43ac44ec23cba61964948a08f2104fe2080be59a34d8c", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "d16e72e67b67416335d918cffee28d99c0dfac99a89d1b39be8a7a49ff27fd9b", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "135eba1eeb3afe4e40233463e5f98dc51b30c1fec461f6098ec43edf63a2c32a", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e3762c0587f457a98f15222759a44328492c21b33be95e67b8c81608cb6d03e4", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "65478bbd16c797fa041f3ddd5e35558f9054917cb377764503b2db9cde20b7a3", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "86b324032ec84c98e0a5b3084b5d634940bfe967bcf7e057ba627999b8ca1b79", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "69af1007195feb85f94ea26596f4e4eec7f23a9e64fe090b9013d26e7334e74c", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "93586463d4680951e768e89cb5b69e94918407529a7089420b7b502c5b69f494", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b2edacb4c2f6b7e162b64760dd78e94f41d932560a949782224c95044287706e", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ab5218724d340e1a575e3f3fee9112aff5140106e6320805dbdef4509e6e4246", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "6ab891ecaded69d1bb324ccc379a0e53a4ef262ed2071e61777cefc067037e0a", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "274ef6a6f34efce374b6d7fbe51b6302a0130e11734f37bcb7bcde0fb59eadbc", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "88b91134511065f5fa3a0b0673fdc264623ede0d712c0fce97938ec7820bb28f", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a34c49ea173220639850578fa022c4d8593d9c6c19e00f59159989a750e1362f", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "42138ef10818908fffe2700c36ad21f216fd734e2abded9599d1f76d77e963f2", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "90ec51e8ca8e6ec4ed00e7da67e6c29b0eb4e8549cb4c92b5d1138285f8c87df", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "8b593c51e2a0c4b36912ebc8c2e25b386af8474e3e221191c9da766a7638a27b", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "1bff34d3fb17f0a5460c62bd0afccfc88cb29bbb722a85349c84f988082886cb", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "ca4892cb9ed10ae3a2f4d4054c41bb972e2cdbcccb7a9125ecc93844e04d5be4", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "07ed4cb30af857f432fbfb834e50422931527f0b5eebcbde88e422621ec9420b", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "75da6f9b4fc583c9ce86b2bb68eb7a31a0f84a79df1bd448a10608a1c25d4b51", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "63a17cb8a15f223cad72ca4ecb8511041249758acf137b0b38acfe272c5ae057", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "e7dabade93e1e445c35f32502badf7639228cf02a93d66afcbabc9122884471a", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "f48a02ea5242940ab446f54e952a77957b2d385eaffa947e173aaadd50e2763e", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "5d0b7174ffb7392417bcdb178d102efa5d1cdae89001152f4581d7bc165c6ba4", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "6c2ace47b5d0845ed33dae6572967df4dcd21cb8692958a8e7c1b2302a759aa0", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "0818ffde29c6334c13620d86779d88bba8bb683dd014e900f7090ead63bf9d0b", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "c4f0edd4ee30d5192930248f6ca2fa57e5528a0f41356d66821f53030cdc4029", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "c55eb4ec67cc883949cb412b244a6c12e1c1cf212685823e082bbe896e36f2df", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "bf1ca724e0348e2faf1f17408633e4c09d93524d1d6b839b2db8292efcb2b26b", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "d692a9a63386d976b29786c10e32cc8382763e5da126d32e03efbeea383b74f4", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "fcc3ce39b21329c8287813d9669d9887527919cb63809ae28b74a51b68752319", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "26fa371eb6024c5d2b33621f1837cf18389e00a9fe6df7b82ee0eebc20c9df78", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "f52cbd36acf02d3f1fda19eb2c7daf92c5dc3c81fa347accd7944b2c5f747600", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "437e0a374a0b7d6e979e0e2997a06e852b40b2be9ddc987477154b2659014cfc", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "545c8ea8336c01d7e5911514f45314fa18341e83d8c354196551ada30dd1c59e", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "2f6b64c878e5b8eaf2a3f190aa8b7e37383535b2be7be5777555db46d9e18803", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "e6fc121d6dea54c1281fa23f033b7fea7ef17d05bbf2cfa1ff653ab672a547df", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "7d02a7ca4c93a39e2e99a5a7f6f3c36d69780959162a7f0552c042e759b4c36c", +"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "3a1dca74cdc3aa1c44b44fb6f498b60d7290bc7a11b074bcc8177ed5b4c32fbf", +"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "6ed87bdd15f815e1593bd96b1fbc9bcd1e7e7b57811fb6f0b5508c585fb5f572", +"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "c2d7c1dd0a1e7eed339ea8ba595e574dd502b9a8b3a55f42d93b6be800c6415b", +"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "be1f8431bdcfb130bc36f0d96e8820844930ead9a8b10d08a19f35febe0f1841", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "2fbf4050312d6e0234fb2dc503325d029f6324ca935c04f91199d58e8526d901", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0a67d101b35dbdaaebb5f344a61801545445396c2d7270a9adb3132d0f58ac3d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5a89c7e7bbc72bb983afc2c2af60d95921ddf2708616d2d5c342b25a3a314e6a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4f594bf9acd05f585a15ac45d7a5d260129d4eafa00743d26b24f5772a918869", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c6cfb9566605b5788ab3db84b0bb37bd658636d095cf5298f898e143f42b2878", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "bbd44c98827134ffaa8ce0514067df0b42ac97c6c0520d207c90c8a5e6f91d52", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "86e8b7419f6d6c21a27c253eb0b35c0d9436a289c25e8eeffca9214d43c8e82f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "cee382f33dfe57030dfc80193a7bb0ac01a2fb021b9abb42526229f2bdad11a5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6bf47689dc005ff8b2c8d41dd84c58c39ff0b298e2e2f1ef985e54bf75e8ed1d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "10671e157d62c6c195969c242f06e524fa8427d2d90d5038359e55bf1b88fc6c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "76dd000330cbee73713cb9273cbd6ebc1d7e293c012e106fef5941c5a15ea119", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "dcc080104fa7a8519c0cec341b1fdae9fe8c322366ea2311b557fe015fcd766e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2b5dd5a91d7d60efc1b04b4b607098af660ee042e99516a41c4d9c66edb1354d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c913ab54d210b23a816ad3d89dd22f7eccd8c294c5d88f95957c771dc8e4e9af", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "531f0a0e04043edcc15d8cf3e6e4e17b7e7c82197f1e7f3d6f6045ea24d0be34", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "763805cda3de593a5b31b276549da05a55f9bba121b83cada0dd553529c18702", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "9ddc8226582d403fee1239522bde5ee3c96e2d3c5a620da1bfa71269d14f926e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f0f450733e6fd96eb40499cbcc20257bf56e1382d6913b79ad17db36fe6fd49d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9e263b2d857453f17d476808a8579dae51f68d64aa9230c872e288cc62af882d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "988c20bb213cf340638804ba48a5a17ed98687861511b40e3dd70333f6c978af", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "298932e576019cf7a5a34e36aeec8b71e63b53f08ac7537d8d47e19ea4530fc8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "5debe5091dfb8eac8a7b804230882a277ad0094226605b9220f7d90cc75e792f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "50243116605a43eec2aa04118cb0f07fa4ec9fb6a3e13fdb958a562caab1ea4c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "547accd3f64847d54850b4c5e6ccd8ad20caa83f1b930218d04fad84b4169b33", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8ced38434c0cc508c108255adc2c315d474308a950cf9229ca2f864d1722a097", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "4556673ecb06a17f355c2db0cbdb1974499361b6a23b6535d1a5329c17395d4d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8d857c8a665933ce77c183fbda26f4284b900b947201dfe6d2817052ff903978", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "db702e6217832d72ba26b502e5e77fca0a8595d16000ac51f890c7484f04bb08", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "dfc6d464383b4e5c3c89d597298b510df711303b428c6256dbb63e37fc9d67bd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "889b45dcf699cdc86d949b52f708c9060bd9508b5cebbf1e407013d69b14cb63", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "680ff2f99b22cb524f7f6971717527a3df7277d74523892848024636de05bf8e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ef6ba3ae48ce97e86d94fb7b690f9cf29f6c6e3f5813eb3725c06d8601febe2f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "14b8de9507ea58dfee2ca20e82917242863f3c4cb0522311e64ae70f178eef93", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "85a2020a385dd9e4a884f1b3cf97c1aec50773add42833b886ed71a6d75db6fd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cf3be7e08377134c4118bfe9147a6783fa365288d711a8bbf80eea017ebe1f07", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "8cc8d612a45d879eb1a6df2cc2d34dc805a1dfaddfb6e72e8c700a6c84ecc5c8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "1051b54c6a30b210435f16bd1579f3d14b160c34d2092b0904992b9e7ea2e643", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4d53cb5d850937ff0ae36e06009195fe100aec3cb45f7d64d3952d6c97680894", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "79b0d6eeeceb4857b0ef35eaf954e634f1e23cef5c564ec0c6e4daf47269c689", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a2557fb826e3bd3568bf3918363865b368b2f0ada5032de9574a1957c6a26b81", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "65b1a1518e976ac9fdda81403d8ce9b60a208b0648cb248202a36034a9bc5258", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fb2d9ec0389f9fc2d5fe8a0481e76b4a123c4cac1b46e872ac8441e689eabb71", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fc046d0cb15f58374373c56c6b9add1175ef1bebe48ded0714d70f29fdb5e96b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "00d1ece5abbd4adaeee7283b457659eabb6cf1c12557bdae4fa8b0aad0717476", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "db3323394e27a0143e723323ff175d887c934e8db94a2547758e0f06e656302d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "beec67963707bd043d8ee5fc4d331b9778823c63942cbee205f0190ca12806e4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "29c7a13359a599d2948e10968e1cbf20dc442aa188913a90bb84a83b6e7bd633", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "4e9de82c3c7beee2a39cb7bf711c5abf24a5e43f3ac5b08cff41df3ad3820d9d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cdce5e977765d9c237c171e49a73b16b09be0750672de56cb2c1a1719890a333", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "0d52e044f80c726a05a98830ef5a06f0e293070afc0b0fb29ab94cea38ad04ba", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "bd3db103d0f649ad7b53367387c853ce8e85424ee9b126db154ee1672e36c7b5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "7cd6075e4612ca32e3645fbf27da8c178f4ec3810f881878d255be71f0830d81", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "01c3a73b12e8908319e86af5b8907b284842e51f4745c4813d576e540df56dba", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "c1ed1ee6da6349e77fdd344b17382e9a55ea9a8d8f27c19e46889e12e4e4f053", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "7fc7ef94f3290be392340ea5a716f7dfdd132b02c088da07614bd4c7dd588115", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "8fb03f6cfa870606a7027567009759f5e37a67632dcb9bdd57b29c63ceb75745", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5dd66ab27b8e7d57c44265f357729ccb70f39672ce1cdc3b14e96b3ca803132b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "80153577ec69793e7f49d5a15faba9c6653e5fa8d4829690692971344e2eb928", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "66b0d1596afadb6b40f840aa37f50be72de21d44771232d261f8a6ff1f65f1b2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "8871464f0ca0ebc584334d092c84f9db468d961bd6721c2db3ce53fbccc7562a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c2971f5d651d7b3b72b8efdca9cd4d37e61ee851d2ce3631500dbeb4b4a2fc72", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "29c331c51bf4b252f21f35fe783c1a67b2bba39aa969623746e6b398e5eceaab", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "4edae7815977ca41dd52174175beccd49e766d93126ede3bdae95d49eddd5354", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "ea0266655b843e8fb803a4fbcbea0f4e43d602a69474ab224954b5d9288cd359", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "c9d0db43897795ba26dfb19040fe586c5a21d9f500929830908214788da80685", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "016b59126db93aa67e0b5d1de9612dfb6a139270b81341afc1e5e6b1c98a741c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "89e6074f93a6b6d0b8ad8a333ce8642585ecd60ae63707e1a18da7d71482506a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "206fde383d014964bab15b71d559236af7e3e13387a342f80b2ffb4ebc10bc8b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f41b07bee021566060477286e97e352a41a15e52cd4b1656a283bc59f4e49069", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "efa76a14a6ecd3f43b04ddbd890e07ef8b57739e5f5d2df722de64be893ae5c0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "98ab69bafd0acd5c6ffb4d6db536910b103c07a653c667e10cadea8e05cddabb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4ac3e8b9901e162a7194e19bc26cea2ba93642956251fe5496ad172f89052714", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "bf07c7b8d404fc098b2ee78882cf99a24343dde471900ff4485a7b3921e88921", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "befd923116fd7afc9b8600b525123c06283e8b6ba749a1e07592b5aae20316c0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3b8e31ef6838f5b86b07a1c8b1f7bc75454e1859cd02d4d07428209c56a637eb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "818a863229f6c33ec4000244b602ae61687c7228ad3e2b6d837a8937ab1c098e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "fa1733e6fc0aadb19dff97a974b92c16ed3282a54945614c35b1f4318a8f07ee", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "76081aebdfd610137fedfc4c789fe5f7dc250c7fa9fdc01ccfee1b31efb83a55", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1d6c3464884bbe0aba0ff1488e191734e29fc1fd8fff67b6654b307f58d9ade1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "16f239d80106dc141d87f61f6a5776a8132b69bc359a66e50bc7a8ae22449b97", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0a3b0e9311f95dd28b59dce4696652ac52cb03caab472b2ef9a2b8b5e20d9bff", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a20fa054526a73917a2e5f905f21b7ac657c7e3f884af8e9da37b4542f70d2c3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "b5349e05e62855f42312ace98c7dd7f30afb8978288added258c9a7d38408398", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e0a73612a6f2f8f08dcc216b752c8c95b38a8c086a1a68c8cd101f1c61f7d464", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "7644134264cf3aeb43a5d8e1c6debd8d04d8427a5dd5bfae9eb7a3599d58f3a3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "888e3e36ce4f9b1f65b534ecda435ca9bb7ca7c545f8ef22e97f35bbe91a2ee1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "7ec0d5e6dcd1abdbbced04d05878b05430a4dad45fd6677a668ad98dd0a92d7c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "dd5d43e4bd9bb7d2c49bbbc9d687396336b941aa7d2a204c6f35643712cbe367", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4fd94fb9e0699af7c4e0261e8883631c00e0889a06ad5edccae6140295c7c093", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "41918c6b71a4fe2e1006d43c572b59acffd2af256a4a9e33637de3ebbf45a92b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c6016a24ea6eef360871e3487a139ef0f686d5e1129d847560e2bb5f48a1bf0b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "acca25b0c591f1e32d73dd059928e45475c8eeb9aec6fe5a51106ba7c9367cbd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "3268018697905bb38999c4e2ab5413b2d2104556b927f88a73375965d5cb813e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "cafecad60c10138e59c170b259d20d5288777a4a8f4ab207abce94639fe1b246", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "15b4876c1f87c0c965d18fce18615956cedbc4de8becbced645b75fefdb93579", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "cbe1b06a81e8b177b447584bd283a55762894551fed404dce92caeb10cacf85d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "116e7cb742136f6a8fbd61ebe49aca6e82377ce0ed8efff6d8732298ef2aedb9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a471e6b254825792cbfb99b67026d156495aad79fdf3a83d9a587c296ce310a6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "7f7bb2f3d192a4d7773a2c006513c1b6769485c3355cd1492a83286331c613a0", +"T3T1_fr_cardano-test_derivations.py::test_bad_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "d231578d760d0aa5d2f72e5e4e37b696cf925c8845db43fec1477887051e4706", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "2bb54df80480a997945db38057e409aedc8802666f10c096310cb88b9de9a03f", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "08525833be2bd7429713afb3d7d2f560169ccf44f8eb1dceb52b28be9835af1e", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "38daa8934b013a04363083f4038987eadcfa8ac4c3b478bddb3f4b5e41b07834", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "e833b259b5cb9b958522a21c1d56722eb8277a6aaa09ae12e22fc25b6f29f1fb", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "6c139eebcd2e125a80af0c2cb40b06b2fcd60b505ecb6997fbfb5ebaeb8dbe18", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "f02035c5fc40bde88f56ba3b8dd22b00f024c2c576aa1838fb02c1d9119d5ccd", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "1a4542cf900c0270378970618487e992441959357699ce44d29818dbcd2b7f38", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "1aa16a31180e8cfc3b2020a9276c76a578caa3f248800db08b21db3ddc8e9b4f", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "01748c73845a779f1dad873d4aed970187f52d1ae9cdef3d4ea773253f05642b", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "0c98509d9b1c825c67871b1c8a30954870da30e775e1169ec0a9ae0b366a0e7d", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "fc0d361796a868078712d23b22c034d22ea3dca028803f6706ea25bd5db6ab74", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ac4c2bdf01d0566cd89a8374fb10ba2f0acb5e552e923ac755e0c348e9335adf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a70f36ba6d7379273b9651315e9f24ea61cdc97a259366f8dc48dafda7471b12", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9cef6662f7bc04ba3f2c69e3035167e2b1ded82ee726d07e8f6e6616160f8c13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4e466020159326fabd4dddd4659e6c6f593f315ec28ca2ee40b6b06e3a46e957", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9b6a3ae8a310c2c9961f69bbef0463f16335350724a62f05899b99a4f9f63550", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ea8961c7c4310e9013b0175413956ba55a39aed8a5185387be2469e376329237", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "e026d6ad82eb8ad8f6a2ab24f15791debb090bfb2858e8de893c25a975e246b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "48dab10f44952cd3a073736f1845228b8f10e81ecfc355903f5f0f3cd5f53738", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1746d74b9ab1b78b97f6d62c7d451bb23fe7d4e5da4989fe10af17e32594a628", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "ee8a10a85b9191b3fab92b35836014905c77bfcfe6b62b3f6d5b88ca412982b5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "f23f4ac805a43aa030c7713703c37829e8fd0d7df11367e507be432de4209a0b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "f23f4ac805a43aa030c7713703c37829e8fd0d7df11367e507be432de4209a0b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "acc4d19b113a60d034f20001c01296ad69a95c0d539364bcb9cf850d9b863215", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "177fcdbaf4cd7e8c86a8ab068e42f2206266d43a88257f2274985f9666004fd2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "702b0b13147a51a9b65f053bdcd0a19060953bd303744928f83a765733374fe0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "50440bda16597de73a48885bced55a8592187242b7e497a2fbe2bab099ce74c0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "35c515110ebd619d6da512f5c5f12c021b57ce6bc39a23d93f3062b6ea629830", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e581386f4fd2fe1ffa9cb711367f5ac9c593ebc81df18c7d6dbe630a83d556a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "af97517dbeb960826f23973ac07d3ca0924fddd84b0739d79feaffde4afbe4fd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "f197d149d6094c80238168f98e6f47386cd1e64bb8d8630c3dad946f69323b7b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "99627beca831c391830e4b7dd2608a95031fea0f7c729da6249543c6e939798d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "35c515110ebd619d6da512f5c5f12c021b57ce6bc39a23d93f3062b6ea629830", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e581386f4fd2fe1ffa9cb711367f5ac9c593ebc81df18c7d6dbe630a83d556a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "c63b04878011a796379b57069b6dc730f6f5a5549423dcb940d350a92b20ba68", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "82b2f44b805b9447de5e50e1b0b7e9f88f38d35455b0f4e2f6f561affe8ad26f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8a33e36ade7b04caa5a6713ff3f8225e129accaeda5758c5b1292c28107e7512", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "0d5b5f93a80e24f6430785405834a61f74283d58a0821fbb937460e76b7f8bcb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "63b750f43ef04a720bc38a6d1f1aee9f8d14065c466cfede4c1a43c1c2fc2eca", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "da1d7917c4858ec56fa981810b1adf0879c42ad4d1cd44d01a79b94cc13e2e81", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "e34cee2a7d43fa8af764f936015bcc51be10ee4c6a195f83ebf24de518a1fb5b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "dc3db98b3b72f6505ae4cf0778bd6feb8d3f22e21c5838ef03ef0f9f1ff8fc15", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a7a6a539ac1a60d5d76464eb9dc814b5d4b97d7f3210fa550fb850ae7e7dcff5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "095d29bff240700a7e6e26bb8bac4d168a7106af1b0f0d6b01ab981bd4365980", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "94c82af1cf2a0d1a964ab07ef5103e2e43e961495d302479cac15d98a89e7ba8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bfe7a99ed9fad6a84be970a9329c02ad021e0438206fa0f5bbb9b349996e7a19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9e737a9e4063f5c28462df1843d2cefc7194e8ed81a5d6400e9d90792e2cff3c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "626b1964bd7dbdde2c4f73cb597462340909de35d1abe538aaf4f7140345da0c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "60f0a8a40460d7ee7520db5bdb2acad35dafcb1c71065c3c7a9b6d13b0f37c8f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "d980782e888835ebfe6d8ee2703c56a2086180231e88fc14bc575c3c2c85ced0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "681fad7d2255d0cc2e9c3d697ed821c54b02e36593973bbef1eba64bf42b6fc3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "f9edb93a838701beb69797160ae7fade0c29af00f67fd21bf5a36a8eb28cb550", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "2022a49ed937a461900ec26e70ae64312706122f02687c2775ad2cf5eb9b1764", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "b9569a3257eadedf3db7b81b24e0860c3a4c34fdd0d5901225a1a7dd8b4f7876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "dab359e893de6b7faba1173d107500cce4936db3b9ea43a1bfda55722cf4de0c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f181d7aa4bf9add2a94483a7e01ae36fc1e0118d92959c16bc02bcffe08d6679", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "13b2ddbf89dc48b1c512a5aea8ef38b1086d1921e65f78a968f9afa76468a278", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "60f917479627b5c918c8b8dc90d949c474732cada39025d15655a656bab69e18", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7a4b0368b646e185bd3750c5b73974062b7fc4ba30e6613180041d20e27065b2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "72f1b4c1861758f8b93e6b33c27c8fdd362e0196413902232f33143fb6ae2f9b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "2c047c596fe3205e00a5131efcb14bc1c6d5ee3d5b1b7af0d7f2744135d29e8a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "c80fb43b5ecadc6ad7885823ef19c985f1ca1f122a5e266455dab0f235217d6d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a8cdd59ddabc38921c5c887cb895ed3ebcd397c1002a5751e4c7074d1d821acf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "3cddfc22620071b742545259ab5bb2347f42902b4c0f6187fccf0f540304842e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "e605a5c7e45ff3ec0631d8ad8dac42b06d45e30cfc790d51611f7bb3cf2f1987", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "33a163e69082f7e06eee34a7614fd4218c76fedccc7b45d4719bf009695ebf6b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "86cac8d5a932a7de4846f4c854a7b6ac39f1a16b27307f8fca366b357fa0bbbb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11ef6fc1e148b4777e04173fda74991e7f623e9c4e0c4a5d7dcd4d9bf2af7e2e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5af39a12e659a47428f0062fb7c1bf6957758cb6550168ff443a1314e6d7e94a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "16816d58ee16f04c41d0258d94cb123f17f1265a8568c515347ee8cad01b008d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3fc03fc2ad2644160f1a0d714bcebcd391050b6839057a6e6601cec64b22fe4d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "b314a79d3fe667cfb6c80da2d0c72f747b3f4935a9890c7001d0811ef96a69cb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d67317da8d8529f32f492c15a36a6f56ae3f224de46d957cfffb686cfd3843bb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "dedd91139f4c90adcbb218c9cbc469a0c3a58b2d1d1a20c149d470d9572f9914", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "3b25f3a58e621fff908387ac16386cb852e14971cda033da7b65c101a0ab0325", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c14cf088eccbabcaa50cf49ba0653bafbf1e01228bf87883b573ae72df926fb9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "1cd713a6d13b23082879460a1f2cb3bebf69068b6148053f866992d26137f915", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "26a79bef69fba4050f437b78f3f586521620c494e6d7e566a8ba0cb3ff4b05fb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "4f72ef72daa39078796fd614b9f324c2ac0bbbb580f4471dd7a1e74014afd990", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "22c92060e1e820f8af43cfc0cf291a6ad3b66ba21e38ba78f511539cff654eb7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "473527527631e4475012bbd9d38dacdd29cb136e2edb49f003a0425b3badfdec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "dc38b3b1ad5a022ef507e4905d9a564570a01269b50cbff83f60711a5d4862af", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "fc1d104e6f6ec3c1d5237320af98d9ab9b0c26b0c47edc90e0638d651e1322d6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "c460142eb3d8d11039288d79558106302080279b884c4abc62d3870b66a3f066", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8c4d588b53ee2ad7e2b36ab863e66cabccdbcc00f870720e3519ef0bc06f6ad4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "7747250abe9ddfb5b6a87f7623d43a3f7eef812db84c30ec4b24a7345e187eec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "de558be66c24700568d8dc1dc45da7a16c7a4c482a8e72b01e63c804d0312105", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "373caa779a13684520cbcdfb61121601ee20bc95b37b05aee01a22e713c8f566", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "6ef2526d894e42c667a2131d2e830f015e85512f2650f4565887079b82c650cd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "13b0fb87f6404e183ea39b66a0e563ebe7f4d2558bf17e4786e3c69527030aad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "90366ce48be5b25c062bf2f3b430595a7a2aab91ac4585a7a2778c961f8c9306", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "58b610bc59b9ce5595e4927cdf4b5df0909e5c4453b74d76ecd06ad0705bfe0f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "13b0fb87f6404e183ea39b66a0e563ebe7f4d2558bf17e4786e3c69527030aad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e4ea39db7328fbc93df15eedaed2293b97de1fa2a5ac64ae50507e782b4e6111", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "ff7189ca07894c8b84bfc0e7812d3781966187a73157ccb1189d528cc3860fcd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "2d83b4acddc2b9cf70d08d621e1c72e379d2d2645af2c141f63734e270c758fb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "5dcad2b0eef37a0f0d683bfadba3eb5403c237dc51921057c111d18d1d9aec5f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "b542569660edb395546fc61648d2f32d2520844a6380a22becc7d3360b400df8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "d43c1afd82cbf6c92385e8e6673934c84f9885d7356219c2255c0cfaabf2262b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0183ca922bf62560277843b920c327969d8e393e763df9cc74a2d17b4fd53eaa", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "b2b0cf697704b62c68415fe6071b7de10e85c2c200b341a090a33e16201d1c49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "43c45df1fad0b15023bde95f80c8e6ca6e05fbddda6fd0f35640d3b70ed3b5c2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "3a702d11fab07ddc81428ff1a74c71651ee41b4a76e9ade31ad6e69a9871e72c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "a05384a92babe798259e9b182c0186889c1011f652ded30ebef23a5dc85a0732", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "0503ac55724ab278fba4ec727f29ca134a2aaaf9c375d19ff9c453ce7635b795", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "04afb1bbc82e5ae8d3459153c12a4eb8bf39f7cfc212e0368cb7ccba7bd6579c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "b03a86171408433a481778f38f98bda01edbb8ad955f5bb139b0acd1f78c92ef", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c8a834e12c2ac6a3a2e9b4753d142d79427747791d652ede4a96b40c6c32e827", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "ab4f4f4db76a175c51c08a1e2352a5f15b875f962860779a9c8aa13ebd80df1a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "aa3073e7484582dd43701e9a255dc4e96cdaa6a2aa945076ecf99c6ef668e1e5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "62c3e4d5121122a16e4dabd1ab08b94f768e6480719ff95414ddd9a0438ffb53", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "6a9880290cb4a9cc76d5aab3aa497213d44deea3a1bc5d6bf055afe002107169", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "04fdecf805f6fc9402018bed2a8051d209196c9b2c04d1a78e9eeb445b9c7c88", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "9218d443fece701f738ff9ef966a6a5526a2e8203151e23f8dcd4f7c9f214225", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "66832214e5deba2e9fab96c80b3069695968b0a772aa2b16eefd8077e67759ee", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "544b9874c11f01f879e1742d9ea7ba81f4d2867fac9250f6a73edd30b06470f0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "265bf5540235b94968295e0e3c03600eac05c4c24ba264f8ef3bca137e81a56f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d7daa5e86a102c7c2c014cc041360ae867345b4df09ca7c3b79d051d5b7bcdcc", +"T3T1_fr_ethereum-test_definitions.py::test_builtin": "1c98ed8141eda4ba6a5c7d2e1ddc0fadfd150254375d162785e57bccdceed17a", +"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "090b2890cca08fc368e3f7e7ae97ba4c599fdd59761d007ba9f93b07db19fe6d", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "78d21e2665b7d3df8a784437279ccd505d52d1c3b13447e5f454cda0fba10759", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "5a19c2c3f96af75950f14bfbd97432f04c7e213e14088874b90a8c9fd5f140d7", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "1cbc76602510f2c32c55ecfc5efe9b9048244f0cf2eb9c71e49b745001e0689c", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "30b48c90b23e603d4efddfe3722c1329d3f92c5d59f648d225b882099beaf712", +"T3T1_fr_ethereum-test_definitions.py::test_external_token": "7ab7d59356c2a2cbe646a815ea958a4457a272cb361ae91be6abd82189aa2059", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "602fb8ee875e3bd792e821d1b0f3196c93f4be9e3feec03b044a86d8911f9b6c", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "3ede7171d0348e4fc94746de7569d554225f637c2368b538e295f15f87e21b11", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "000cf76995c7e2e9580c92ce2bd8baeda4973a61261cbe5564097674e40d94f3", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "53b7ff296077b2ad738889d6071b8b4f3d7bd5c910c146b84312129a003158f1", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "d44c6b2e62b6e036c5fa743a664b79d97e71612892e3291807bb8c61510cb475", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "3ac43093a0553eb09dac7a231e6af7b3bb899b44afd776fa6bcebdabc20cc8ec", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d489a535bbbbd7be586020e58d14799ea1263e8dba6769cab223d0659995d39b", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "5649ce9fd2515a000be9aebfcb0da2a13f76f6fef06a07d419afddca76d130e7", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "dcaebd38ea28f5fc70193dcc7d97ff3c494a366b84fec06616df6d2b9942e437", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "70416eb4e5bced989db4982ae3be94ea88aa6cbcc252f8ddb5a862a722f69a39", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "97021d42069ae178acc69a2e6a2ad3df76c5d2174b5d86794c9bd19210ced67f", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "0b5c59c76aac2e5991509f687f0a163ac966ce27d9be3f59e0427ee976234f32", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "64e6f70c3d6e15f231f99b22767d57e822ac6b05f22b777f2ccba3a0c3b6cb95", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "637129145f37ed44276f945e0f0b5cdaeb883260de79318b26179fdcd7dc60e2", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e7a5f9f4ea01f162953a54b974116484667ee71f91424b0c0e2c126299aec0bb", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "ab30489b5705e0b19a23f3eed7a12e709a9f2d5896d81ac118125c4fcff4a6bd", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8fa4f8dad9c2b42e83a21c5d7a0911943c6341b5d2404fe00d7046a95458aa22", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e096794bfd3500d928eca4f18d1770b094d602279cd1c1e0a4466a1f59c7d642", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6177e126a729ab3ba81d565fa382a62f759f761524d271198b47ed46b022914c", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "832c953fce9df18a8ed60b1375eaf0682f5fdbcaf46c0903cb0253e58e5b5bbc", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "36ea68426e5aa77cc32f4ff77b45a9c105c353fab08f8a0162e324f2e53a1172", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "7f4bc9304f1a23e2d0a941777ebd47491aae1a7d449ac86c607453414e41df59", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "ec97c79dc2b8f2d6a558201b8542ad757454f0a0f7c4a2d8a78d5713eafbacf6", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "fdb69f64055c31217cc083e54ef103725b097371c81508a774a0414520b741b3", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "25b35c5ae72807dcbdad24b13e59f8ef5c848834ab1eaa4eee47a3516d851f7f", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "28fff7f0bdd2772e45e64540efe47642f2040214d99c710213aa71f86d75331e", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "538dd68f150e80065f047aeac803a9b31ebde85693670c683391c1658d1c5215", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "ab766f41be0dc27efe65f51137d0ddd99f91b3e1728fb0450c2c7d098fe07dd4", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "da79a45ce0297efe71bf6a829ff68ab62ca64b820ed8db968bc2a6c22e36254b", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "1b2caadfc7c47469f54f8bbc00ab86d0f5efd0148de8339e670ffbfba800275d", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "a32dd6578eb3256137d7d79bb377fa447c97851ee654652ebd01eb10779327d4", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "74d03409ea2e3329ee0dffe5e2ad0116f8e0280f79ff80fe42250657d8533bff", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "25191cfb8f16deef4a5a4d1001ac97f497f7789c4a7ecf648a7f615c0b7d045d", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "6a3233fa6fd98f14759574176b508419990e67102dbf711cb093b983d80eb217", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "516f2707a5ae873c1aea6f476fd8aec192eb10beb2fee9f3c5fb7a5070d7a185", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "243d908e45f9d73d34cd6286813e4409ddde695f72b681aafaac5ba24d75e27e", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "97e87ad19314542bf26c8e1c5cd861be34f5804cf35c9cda4d2ab52bd3a9489c", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "b7fb38bf37ca5a5ebeb5ad1d21c6957a81bb58a16585a6def1d6f5c93b8da1f6", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "31bd0a0c5e670c66426095dfb9c581193ccf86b3694e371dfd9a869589f18611", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "b33f775b59faf0415c059612d83b2c4afd30b91a5bd125822fc79f5dbf61d42c", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "636e3fa1b4bce69bba5d9ce334acf4e499b0402dacaa430f8706325c531bc17d", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "6a3233fa6fd98f14759574176b508419990e67102dbf711cb093b983d80eb217", +"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "39c644065c23ab2d40f5a219cdde89e80cef55da23211600aea975663e64c9ef", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "a70cf0bca25efecb826b9db460b63d728c6c4d7862d819c2f5fa8123417faa83", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0fa5200a85bc302d0c1ee645d7663d837ae373de1adf2bbb278d91c90f4c44e6", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b392e66422c2a22c71f29d652d750d8b18c5f35ece5a362e733bf030db1f9ba9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0fa5200a85bc302d0c1ee645d7663d837ae373de1adf2bbb278d91c90f4c44e6", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "089efd046a3a539cfdc3b0373a2c6a93bd5faa5553584edf488b13d0bf93bf8e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "089efd046a3a539cfdc3b0373a2c6a93bd5faa5553584edf488b13d0bf93bf8e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "e0d1ffe749984181ed939c749f4b2c6b8fe35e745a479e50a0365af364343a0e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "e7068d20456be0ecc58577dc033010da57779a9d6d12cb906dc5b60d5513c469", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a2cb91087b6969b5ae344d00acd65aea40044e22551866a5df56f9de99c7bf07", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f55479bf285eb75e3d5f227eafe2f85642c1533afce8aaf2d24e6e7e59b3a7b0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e18c43496ee653734fcaf7de599f7b185effbfb4138bf0efbb5c323aab1d9a9c", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b35066c915e731c414e80634ea8ec3fa51f0e84e0d907c02a4e765a1948651c6", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "b13e260ea043fc69a0d9c3e7a00b9bc69784523255d730f2af8a5ce1ef6fb5b1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "39019472c630f90f8b6c2f6a9b4f82b61412e9fe2965f13c391706a855a5b172", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "3b30f7fc13137daf71b64e2dc7c09c6294af909372fb443491354b0766371edb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "39019472c630f90f8b6c2f6a9b4f82b61412e9fe2965f13c391706a855a5b172", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "326503f9c4681f24d9b12671dbb849b223aa3d6f2a667566b5ddcf3a3f6f7d22", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "326503f9c4681f24d9b12671dbb849b223aa3d6f2a667566b5ddcf3a3f6f7d22", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "6f7d27138a69da79c5a6b2371cbc6fd55ec4844a5ca55fd48de10b7670406215", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "67ee956c2e4d271eb4ddeb5e60f97226c9ab6e1bb305681bc8db81d5cee295af", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "622ad0639de17f384d91fbe6b7af462352ee73f9e1e8f6b62827626fd9496fac", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f55479bf285eb75e3d5f227eafe2f85642c1533afce8aaf2d24e6e7e59b3a7b0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "915bfa57183bffe468402ae5c6f9eab59012a417298e143dc43138efd4a020a4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "2344627e39f46b4cb62af84523b7a69c762171ad6bd20e3c0252e4b25338e94f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "173831538109a7fdd2b7f64e00736dd8ced301b66897e2060c9925430d4cd0bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "30a069438e974826e0255f3a74c3075e8d9d8e3514787421391b965b01516c4f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "48523c8f340829fc40105884871399b1679468f2e2f557ed9f856087702e1049", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "e0d1ffe749984181ed939c749f4b2c6b8fe35e745a479e50a0365af364343a0e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "da886e6c81a15788fccdbf0c19f02415456b2c80345bea15fea0b7aa9bb0aa8f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a2cb91087b6969b5ae344d00acd65aea40044e22551866a5df56f9de99c7bf07", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "7edc40f50cdf2a6a154ae58d8699628f4de817ef5f3e07831f6f52bc76aff75c", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e364f5bcaec8f89a6a44d6d02137a317ac022dca4de04f326f03536506fa880e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6f7d27138a69da79c5a6b2371cbc6fd55ec4844a5ca55fd48de10b7670406215", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "c10bbea32b9c5e9fd420b759fffdcd34dabd4896f5e06bb632122008beeb2ee0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "622ad0639de17f384d91fbe6b7af462352ee73f9e1e8f6b62827626fd9496fac", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1e8787c9eda2feb94c3b4e807d84567195f82173b90653adf3ca1b585ca2f41e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "02e0e2e5cd83aae57e38e9240571332fbe393cbdb98bde4645f500532332d6bd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "e29654de22055ebbc1df87d28f388bb459a3b9621f04dba7dcd2cb3f87fde182", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "5329cb28e68167d514f3faddbccab0f961f6df1153471aac73214584d877f593", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "d53cca112b73ce71f80f06018e751071ff92c4ed945a92697ab6a9564cc32954", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "95612c88e0ce51851f0c15b816fcda0e7e8709e71cd371910676057fc14f7bd4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "fb1769a865faceab1475f056d619fa87056fcd1d925a2043b453e6536f5c90f4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "0338fffe20d3cc5f0d3eb7884532da9e6fc2ed423ca782500cffb2c14b5cd3ac", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "c724ab72cce704aa68e1f72301cc8d06d266b58a60f94aa73388d1dacf1d7155", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "bf54e749c9a5f27de4e0cc86f00974e9a34c5dcc3f4ac6b72df8dabc17034808", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6220039b13cbb33129b35333ad88c10cceaa59d1fc0f2d9fdab5275926d0e25f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "4481dde1ec203066ec833dd80b59ff4bc62bd9b999a9b7c1285944a27ebce447", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "99907338c7818035cc59543bb3fbaee66c7a6733c01b1086ebdab95410858db0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fe4e99ea77c60c90c163f3e4b5eab6fb06829ff8e9a50a2c55c7d408d2d4fdde", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8080143e0900fa3c98f7feb88d10dc5ad3e9a9b89f1513301564bc06574c460c", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "af3c4058948220f5b8df1b06c0a6c2d560193315e050b2d4ed00c4ffc9cfeb19", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "0a33486a04d1100d485ce5c32d0de1e7b91d103c1f20e3f40609d6e2d87bbbfc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "0a33486a04d1100d485ce5c32d0de1e7b91d103c1f20e3f40609d6e2d87bbbfc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", +"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", +"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "af2b25f8baabf60958feece7fe4b9fe9fcdae783605ed6871204a2134ef5602d", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "e404aa56bec9db40ae4294f2406627b1ebadab606ebd27be2aee127a966b1a5f", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "0584acca025a9ae0f32889fbbf7b4a2edb5544848e515b86b921044a5b37aa2c", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "8c70c852de2623374b4fda1e3b07d75db47fbf21c371bbdb0a3d971056b24838", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "7ce5843a41a23a1784826562eb7ab185b9ddf5bf7dbfcec518bf5136097c22b3", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "9d990d6295db1d93aaf311cb06e4954cbec0f1c42b830099513cf8926673a8d1", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e25d319f5771103597fd73f71590303ae4e538822a970e6d649c8749f234b9a0", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "d1ea3a074576fb1b1e93f10e758859c3f91de0b830251e8e47bcfdbe35e637f6", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "cd37a982a7ba142f8380eeb8773fb6e28a22b8264c55e2bf3810e8fd8458307c", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "d3b2636d945aa6b4bf7b03a8faa0412753b244e5c8309acc24a3064222c193a7", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "052ff6f160215c66b05686e39bacc0f932d68f560e0abb8f37a49a6710a4d870", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "376e4ed50e9585dc31d297f1d7578b662682bf95e07ad2750865856137411318", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "7bf2cab0d6d11d37cb7d723530bdf1a6fdf9627c6f03ddb3372b6429d3ccc90c", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "80ce58572ed6e634c4b46b1e335b96def1c83ba4d63d18f22b86040a4689a648", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "86334968f5836700bf3e9ad194713938d0637585fea366211c3635027701fa3e", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "62953fca62df18b03f69e3644b65ff9675169c680c83e42a0a0aa33dbd365eb2", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1f94d9a621b404def62ed8f26ab27b00b41c64d8aa006c3011c2a624b73734b2", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "9cba2cc87e68b60178c3d7b823abfc689c56ab142b8351ab7200d6422caed6fe", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "44d7d7c1df2e1c0c79e5eeb3957f7c52097dd6a276cc7e456e1a6f0afeb0384f", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "6c7b98408f2d7e62e10a01f382effa2618366492b272432dfca39ab797d5865f", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f93a11da3f42d5b2a55bc9a9def07caf7239a0881b5079d0d0100888d8ad8285", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "2f1765c1ce2d8cb88c34c646a4490ec036159c5fae2a1a6a2f21970f1b79648d", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "c97d348feed1feddb7bf74d478ac717c9ffcc374b500526e5dc74c3c528dabe0", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "43e1be5b0b661e2c0428d752c7fc9360a07ee97ffb19512b5b152fddfea63d7b", +"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "545a8a545298d937ef7475ed16668a2ed0f6462fc65b79c752fce29193da744c", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "85c8c6ac21b2462a2dd0c2746d7c47f2734cede8f7c4023fd3295052db26d149", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5ceb252c7fc0ba64f433c9f49ea4e0dc643e662ecd8f0816f54c2bf0f99cb9fb", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "88df89dfc769ebb4960b71410abd0549bc61664ffae13403edc31ea76fba252c", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "538e2aa576dd56ef5054d1a3bff66d0c176c4f3cf80d7ff76b0412411a8b307b", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "b2f1b602b48bf3bcbbb12369a66ee0e0879d7a26c399c542671e9b8871f3032c", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "85feeb0f3d4cf30430c35fd38ddfc77cfe5a14193f324ee834dc6fd1dcdee0ad", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e44d77327cec2941c462cbad4db480757a6aa4b0a6f4e19f7a53ab119b172be7", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "6960c07e518d614f09549d6ea79aab05fab24f09159bcf61f664c9fbcae33265", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ffbb0fc217ea369ddf8f48e7996acb244723b3d90f1a236995991126e9e4e248", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "80ed26de1c7113c0d6d924fc364169a297404ce533c8a182f42d711b06a5b1ae", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "615a79f6753c275585c170398c6bb00c534d593c5aed5d7b1b27b15490c82ac0", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "eb16a5b7da1ed8b24be1db79231008fa3d4b64d308b30854fe64cb6a28102b97", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "164a4c03716896d3db6700cf919dcde4c715ee761070e0e2cfb014f7fd516864", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "18a432bb8dedd7614429de5e29b299e6bbbdbd6f04e03d07e005c536609c54eb", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d926be457d2fa97d55e977650b7faadcba87382ee365c1420ffbf4f77af1d102", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "61ab5d3375210cfe4c1a451e39bf197325d443f5bcb613e251454b3afa12a713", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8497cb8859b51d23da7237480044c6e9c7b60e87a3cb3428d57d529733767ae4", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "85feeb0f3d4cf30430c35fd38ddfc77cfe5a14193f324ee834dc6fd1dcdee0ad", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9f4fcd77dad26b98f5d7b0c3e29e960f8a3daaf3fb05471c5d5178547a55f3f3", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6ab08347663a1513cf81c006d7711cc3ef25a4b8b444adb2cd1566f5c0779f33", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "434257550a35df97886608c509a1f932fa53eb6afc33df03ce4c0bd7a2c29387", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "60330f58f8bea3ec4a300574b7e3ef4989d18af978c23f846765824f649caf26", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0a6cbd84a805de18273596f5daeed2e3b207f65841a679570ac99f497786b8a0", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "efc2f67b938680b0be58849b77752ca483893e7c42d099d7d547813dd33220ed", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "2aa810576ef39cb32ff6837c29b8335e84eff606055bda54c98a6303abd5f86e", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c1695da4dd9d771c78b41f264ea13604a951c177b293e69282ddd12ee7277031", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8c0c32f4052d35675d16e68bc2482b3f7466928cbdf22557e6adfe68fad47f5b", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3dd8afa6b064886ca518a853d2896c42a13b8f3dcb1888772cccd6eeeef45402", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "69855dee7d227ed8014c64961595f76f395e1d2ff1e7eaefea672ccc448415d4", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "02b3a838e4b2a18991816b36778684755999f546fcce32646d8b78d0a8cbf36c", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7ac21681f55e71eb1c04394f3250b4ff4b392abd8c94bb851341436eaafc4bc3", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "30698c92d78a07985318832f35c3789db957f4237d36379d82b27df5f8e44cbb", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "185377255694af531d265b095e1ee2d336d1790e1e3ef51699a01271a4da5e8f", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "95d98a880b628b9a72426bf6f751b23221f5bbf2b639f6211eaa84d61f7519bf", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ffad80271ee919895e3f97777843b1dc0414bf9540ed338466bc387ab9852a70", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "8ddaea9e0e10f616b9ed724a45bb048400b9a7a1988db4f404197eb449824b74", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "88771b035ed19bb793166d10c67c0cc99f17d022a26014e210a3c9be87c6a3c7", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a91e3be0a097d23c99a7d6fac54dc358d18830862a21b87f2d3dad3f3c4adfd6", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "980aa5da55f80c11aed85e8be031519ca998f27992301304bd0febbe8aebcb2e", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7424163883d2144864cfd39b1baea93a9b922f6bb0b712754ae0bb4be4b9865", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "068fe486ce73c3fe25a8af66e6c553ade886df17073731dbd49ff36bca8b9653", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "53a695b0e9aca1e1629a0a39a1eb97e3b95363766c65315085e5642d2ab3e70e", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9e4937899cab29dcb91861bf397a2b360bd9a42f470f7803d92d9d79048fddf7", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f4d87fe7e3b0d78c2dfbfd7cbcc1215faa605e18e778ce1272608a96662880c8", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "005e36ce0c38568197cefb568655a8ab68051c2286bbd169f84ea603afef497d", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d41ecd2f29dffbc0cd7c260582d8dc13f0059bdad1528de9636ddc38585f7b8c", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a84c74fd20499031d38b828e529b74f197b2f160dbc656f9ae5a0bfc49fff4d8", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "7f2be53582a29df18d65d9a5b551cf5591366359abbfcdda86d10d81679cb353", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1f44d37d519d39ac692b8e2f678b92e4624b614497c664ca112c4ff6c507ef41", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "2e010acf10de81bdf1e9aff772cf673ccacf7082176b4156152bc5d01c20c11b", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "753c2a41b13d38d597631cecf9376bd008241665a7b853ad55e7d0390dcfe73f", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5dcd01bbcc42f7161cd625bb97b4b0dc9db5e6863ab657e5ffa02bacc399e2af", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57707bd70f9857cf6fd877f09c52f1d03f4ad7c53603a5ba9c123b06111169a4", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "df6c69516d249c1dd27fd1e727add632650d53fab4dad32d85ace90de580f713", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "2bc092db84bc28730656f2d8777c70b001401d41909871f4f5d1ae601374855d", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "93718e58f1df533df97750b2422ba5a61a1e99879b5d14da7a79f8717a1e59f7", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f0b5fba3719c8d5eb1fa6d0bfa37f379f6ca07280e79a381d5db5985a9417f86", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3dff1deb8d554d358259d336a5d526bb20a53e3b410c423f45256cae70a54fab", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "7191c7992186d6a93847d0ed8bda75837a54e97d3eda019398310129ea62d700", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4f38d92c20ff9a9fb1807c4b810e9c3a3c7c5a72afdd9b702a3ceb5dfab1fa20", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "087743a723d1996dd9b956992c1d2866a08ae6e55a09ce1303b9b9ea52ce3ead", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "35aff87f653a4fe5a092f65dda99491f7955acfb9037f1903f53f8a995650d1a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "aa7b55a3724d8452a0d4981d009f3695a2bdd696486ff5e79ddabc4b015fe5f9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "59e2582744d827158897dee8c9219ba1c5b466bd989b7424793911836650e62c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "ca9e5b854f63887e1cc7ed6b27f6fa00d3bdbb093a13709bda721e8f710064a2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "3fb507003e07b4a11a368c974784f86df08ebff7db72382ad3a2bf1446efdde2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "25bfc7cfecf345337d7d87df2eeb81fa8c7c54270b63acb2e4bc95d703b8040f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "c93554b9395679220ae538ed7ab29984039c874abc9e4c1035b798a878a2b49d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "676826757e2ca077ef98601eb6913f04fa6c1b73ede8758261e2802a0098598c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "cb015ae60521d53849d59717decea90823e1052372b025003d4a9cbeac857758", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "6d62c23536906f75bc79344faa67198ccd6985af026eb08f8091c64fb0032a01", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "3590bff9556b3e367e74f8e968aa35092e90d972020d2b193066162de5a557bd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "17d6c8c950c604570ed49034e4899bab39514f668ec3f01f6e333e01b0b5f54c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "4318ea8928c3f13336c3d6601d948c1b50b56b0b2bb2eef89b416cdf5b7480aa", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "8bf7d8365a7bb8f1818eb0afbd875062ccbb1a0824f0ad45ed142dac59098d36", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "6c2c9cdfebf8f9cc99f45b2ec1694cd6ee88dc7b338908829c8b744641fcaf6d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6eaa544e989dc5a129aed99b5122c3c661585ba4be7b361091ec8579df2b3fb9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "d49089aa955bc5f6e4d10d7c718142a17a53d5786391df40e5339108cf86e2ef", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "623aef861082858d8a50d600653f953a7d9f79c9b04f0d0f9a138919ca035f00", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a87858740c0998683dd682768d48c56e882453a84ab43d0a0998dad51398d76e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "7dbcfd81427e9980b0119fe6da91c097b291b299d046f460e382b7c88b67285f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9655ce8971f6ba0c70647bb7f1284f674a7d24d2b61430f9e1c6601ee8725d27", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "191e7f77e472c65c0538a01e7afbc812d23d9b00458f9ba736b7a6d2ef77e59e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "51077cc98cf2f3cf5114478c71539382587a822cb553955b47fb3161be57a4ed", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b1c48b36a67ce5253c9ce29f7b092d444875b85f94e3860dce8da5739242044b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "e80cbd82c6b46986aa44c11407c6dad74949a03fbbda6c6c899d2c330be2bcb7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "77d1bd0f95e48f7d422ed55bf03ddad01df33d5bd2273ca473f0ae89b24276eb", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5a97a62627099e31a120223bc4a8f50af37fb5e039f163c6fb5c2da2729495f2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "86a9e4029659c9b0f4eb760e325afb98e9a666a04571dca4eacd2c8abedb9f52", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "8439cf3471539b6a9bcb2d9d24474336c563d3328239bb5d305a7190cf67f708", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "97c9032ef739c6d56b25a976d14e463cc41e24719e9f4085e39358a88635b74d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "91e8ffa8aa8712c7883ebb91bfe1be016e66a49317622ce6ac829389d662a994", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "ae13768231cabf2f9586928e1b5bd3821b320a9c828a6e84ee03f98d9c41d866", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "1c3225d36d6adb969c9e5af61e0bd5d391ea051869776bf64d50765d00c86bb4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7550427efe7379f8b274cdc7afba33df7f5c548b0a35ee7222896c88e10e146c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "8f26f217340bab0520394623dc13c8990689b2ca812388ec19fa9b338354b200", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8241638682ad4a17314d168d83afc3e7af89c757e3af7be274e1c8f589f0c292", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3b7b26afd1b8034de3fe4ed1ffb62b4e6aea039a5fdf483fe50adaa78f872037", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "49986a549f5820cb113f72ec477b637384ad03d9acc532e32cedeacccd448936", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "7746d81a0f343e5587ffcb22f765ec159375e09a67f828e56dfa5f452e86e6f8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "d7e6409d775cb4775ce8ced40db6cb5f8febd8c48e52bafee106ca725ae50cf0", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a8b4f2c4fce38597c4fe7e06f0f891ba3ad851e7eb7b992f7a60cbef0722921e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "a25f3ed58687e3418b6776f3038f177713d0f436e077276254d89fae87588053", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "78204a526611baf2c8567377dcf32a4152b3366e87f76c129ef66ecf7343dbd6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "a022435c7dcdea2856ec658984e838eade0551d46d7ad4fdcacbc0d96182d806", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "74ffbbaf6eb7b29d993729daf151f19acae7470b565d3f8771cf68103607ca01", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "3e7e5a2851e0594e23ecfd64765f661e3784dae51d5aa35b0e14881d0c54b9fb", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c7f2f7543dac14dd40599b78962a05faee38c69fe34397c54923587878b543a4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "68127d9c43082227546aa06ba8831b7966e5fb71af33fc7862ca717b39d244aa", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "47ea2148bb7b91f946a2bd62485c11c00f92f4b1f9645e216904a2b8d07123b8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "67aafd5b33e3794a21b647a1ebc99b3992d6583748edb8e337967b6a754f848f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "e1392f2d85a38adfead15b96b241f8bf60432e4e48880ebc3f30ebfdbe022543", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c1aeb6975b1c4328f9251809ea7c952eb4774ec82a8a1341e2af00e342aaea55", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "08541f24217355bb1523b89855d5caa1f7bc9f954af944ac5656623fd7ab8a75", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "9c0726217e7c19f89cce779ad0588e50b1a00f0586af8f06af776aa624a2291d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "00acb42b136afb849d178b3ae81857a9df8907d4732b17990dee95df77c7889f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "1cfa3d5728aecd3840aecf28ee3779a9c281a0963d7b7492c3bc86abac8ff0de", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "191e7f77e472c65c0538a01e7afbc812d23d9b00458f9ba736b7a6d2ef77e59e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "2b19d72c4030143888a6e51f6b3bd4c8d0925d477ad46809a7c9ea3aafba1691", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "e71ae565799562cfd8ca9defa6a768b9e01a19759c281d5f538af432f2023272", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "211cd2a57f71d225782079349d586461779a25964e4009101f9de93a571cd3c2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bf22a999e3eff1ffbcd590052c3add861ec80af9fed08bcec03e438afd5a54d1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "8e8f976782fd958fb89f33bce4ef8e6c8d60e5fc11d0b8c4cec7623bdb9cc8a5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "370d94fb9e1044ddbaad9aa1af1f94285a41ddaec32250fbf7f46b829e9954da", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "e4fbd32f36dd002f11aeef0755278fc311faec24949e1b61955dfbce44049b8f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "e7a55b7125218b40076e7b1dde2819823d90e43455bb9056756b5c0b9c8f9231", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "2433b86715cd143351391fc4cd818d23409f93a9119442ed632faaf7c2a55620", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "b180fb1252ac7b86e0d2de9b2360748c28f02e3117780de31ef71b4e826ff9b1", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c071e9f2672d36dc06b6a45f6da68e5918d3f7a509843c930ea4ac45860e8a0b", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "61efc02007dfb2110e7a9d3d3692aded24a4c269b3b6ac0384002bd148782cfd", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "425479b00424c0fa72a7de1624c93cb1dfa2d5c33a5dc77626437c946cc5f227", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "197469ea1447deea6326338f4329a956a226143a2e99a45d4414a51196176bbf", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "1372ac4e83decd7c7e1428cc8aecf739174f6075d6dd1aab407a6a928244276e", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "93ad18735bc23c42cf2544279ffc4a4d610cef0b760573c9945d2a832a8afe02", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0381cd50b46c7665a38523d386e956627abc1d5070b99cf007ff7d96b19c5924", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "be4507f99c832130ab941d8ec2d717d145da1179a49ab51fba66b86e9753db4d", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "29238dfacae6db130f1f9d06b97a2036b6b34e4ab143c5f0bc1c353bdc21942d", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a21af397662093b8eaa123f154d80e5391419d0f16ae9b4abb608f2df983c07b", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "4d94538ed6efa6e3aada0e8ae062f46ada1f98f61548485480ce2ccb4bff3e88", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "6e1362f71d54a07b41891ce8d429250fd19cda086d6a502f5838bedd96ed6487", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "143939caea633aab9b8d104e09131724fde68636686d1fb91dec7cb30bb4c2df", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "cebb3819f62a47ee4c85e05bfde807363638ad9c933bcf06d16a957180c7bd81", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "341be5e6fb1f5abe6e664e0dafba135b0afa82d082d1028e32c6789f8a55c202", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "2f98d1272e909ad9680e9274db0e8873e15d85453c39c54d10b8bd357d3aa17b", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f0411294cf4c3e6bee948ad02dc90d31e3ab951ef7b23f730aaf7ffcb32f1903", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "79f8dfd580c4da34ce6926584aabac662524af25bfbfb42a5f818ed4a4f28369", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "54218f8a08bc74ce8d685b97e61d532c5e0152cebad50d609503dec982306460", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "a543705507b0722a90857a7d4f97eefe12847585ecd4c8a0097446b7215624b1", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "73c4e80e523a894f7fdf3d3e0e436944a3263aea521485c3be3a6f50b14f50dc", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6cef49e313d1e8d5dddb97782c99843325b220924733d6e6579849745bb87e08", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "93d52748f67d06d868220abf1713a32a93ae4d69c8718ea147e92092451526e0", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d8a060e83200742797fe5f4920a04bfa21736ec9c88d25b7f3003930bf4ea389", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "9da453f325619a30c446567cf6746098e72579d3f2f89855a8c36c93078be092", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "6425a393e8f34f793525fe90d57eb241d976d013ebccd476ae905ddb98e4d5a3", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "4cf177cab420e81ed90e8f287101d23fd48aef864078e443bb196ff14e01749d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "4ac84cdd7bc0a346c88eb2b0ba4736f7f9a48e276eb2a43d7f2a7ebf029f581d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e204f9b2a895ccce6fe9bddaeb6dc50f33d279c788d70c6f48ccfe13845e7588", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6f16921870b7bc30170f108e75c0733dde4d0bba11dd8748367df8ca971b1892", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "731c761fff2c409dca1ecd97ceece602f3e928bbc9daee52644ca4b1bdef48d7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "092457da3e41853489c8cb23257a424cbbce5d90dadfdd540b32fecb61025195", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "7a7a93c5f3cc727564fc128b904cd7ef3040eb7e7efeff3a92513781e46a8a5e", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7d1bc4aeb3640431a9099c9251e4a4be0ce7b99b3dcfd15313782afdae1e424", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "ebafef6e1aff45f7bf284cc046b3f30456ca8ba0b81256362d45ef1b1d4b1a29", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "3bdb18df20c374ed938d9b83f5b293984feec50568bbb444ccc15570d75cab47", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "fecf1e973644cbe8452aeabeb1f16ed003d1c45036b1afd87d07001bcfa7a433", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ae76e8e276c92de843c379bd61f50197ca2ab5f1ef09a98521dae0dd79386733", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d79ac2daee6a3e15ec391413cbaeb7e221c685fd7fc4f2d20e550778d33b084f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4167920fd548fac5ae5b13f7903681d838bcc798e377d362fe991e545451381f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "3828ccd3ea0bbeae735a2ae0ced9f4bd59aa67f699a59923114e1e6a15e3173a", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "c41ce3ffe8be3d27f4f75a8878527f7fdb5bff8a86aa5428926f816a31f0bf2f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "c62803145a607c580875a767f32c7ba21adf5320c41ec77fab3a3740309163e7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a194b270b5c59e5d1c2f8afc860ec34d2233413f9028f97fe45294b1b9676a9b", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "7755621ef5c84a8081f6b92e92f16c9bfc64cc9c65eb30af02f11ced40ab75ee", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "9f166638c3b736615b7c2e760ad7526cee9ad07822bc4b5937c34292ac4655c7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "62ff783eebc5b5110a53424b8060b351b2c222cf9f8607967a25a47e2e487caf", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0eafa8f484e6288865612b1d348e52da4926aea1c32164c8a1b2dc9b6fc72e30", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3bdb18df20c374ed938d9b83f5b293984feec50568bbb444ccc15570d75cab47", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "309f9fb4af9d4ccb9f3a7ae2c157ca3a6ea981587cc5f07f81e3cece731615dd", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "4a945f3abfc1d67a3691d82f21bef4364b7b1b99a58826608e138b3c809a2b0f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "59692f9d8d68eb9996fc233cd4a02fe69e517866e072ee13f9fa2934927e6e4e", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "7fa10a589798c45a8ef6fa587ef024c551cd3bce3e7343ee6e0cc4977182e14f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "19537b30b939c7f90a4ed4491f60cd194b746b951f47b77a475b5611e449ab2a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "88fb2a78366ef5e9db13c3a4a4d42ee7193a745db3edcdc6c177c6ec34362b06", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7f03058c16865a19c1ddec6b1df68c63a58e44d32294ec5326bb32fed99837f0", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "bc15eb77c0b9a3d96e618c2d7fc76532719190cc50b2f2d6fb7a0ac05095e451", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "5863611cf3515b66808b88391f4899a990b710f330218cc386996565585c75bb", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "44094e1dbe78c1aecb6a05fce386f92bb067b5c02d03102293361a28eea46e09", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "807bb5292a18eb533e0e48e6f129b9b6bb176878e393ba7a9b4aa0859a7ec1e1", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "807bb5292a18eb533e0e48e6f129b9b6bb176878e393ba7a9b4aa0859a7ec1e1", +"T3T1_fr_test_basic.py::test_capabilities": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_basic.py::test_device_id_different": "ab4acdd890a084e6041b9c385d4b4f4c331f29eec77bbcb69b4e99b3f8d554c8", +"T3T1_fr_test_basic.py::test_device_id_same": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_basic.py::test_features": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_basic.py::test_ping": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_busy_state.py::test_busy_expiry": "0b142663642a8981e8fb85cf0eda771d72c9d2206cd224d170b588f32da4d8cd", +"T3T1_fr_test_busy_state.py::test_busy_state": "251609abd57665b7882e24583141737c9b6c1ca43ff75ab8bec2181e4fa3f044", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", +"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "3547888bf963a9e458d362f218df5770e81b53ad850c462f98c00ea772ab42dd", +"T3T1_fr_test_debuglink.py::test_softlock_instability": "11479b768ca4b58acf621101c18d681126bbf66581184489922df2eea1357ba5", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "a1d024203379022355feb1ecbe72d16ded27a7060cba89469b82d14e84d8eabc", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_language.py::test_error_invalid_data_hash": "3136454bc9903887c47ad11d488b52186f1be09cf3e174241d2147176ae460dd", +"T3T1_fr_test_language.py::test_error_invalid_data_length": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", +"T3T1_fr_test_language.py::test_error_invalid_header_magic": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", +"T3T1_fr_test_language.py::test_error_invalid_signature": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", +"T3T1_fr_test_language.py::test_error_too_long": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", +"T3T1_fr_test_language.py::test_error_version_mismatch": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", +"T3T1_fr_test_language.py::test_full_language_change[cs]": "b17431a711f150c6f9aa32f2f3759435bcda4bfa3f29081df07b837abb5cc741", +"T3T1_fr_test_language.py::test_full_language_change[de]": "6608898fde56463747ad89c4e9671db3b0d4bac7cd8572d84351091967c5e081", +"T3T1_fr_test_language.py::test_full_language_change[en]": "69396b93a7625119c7d975958f76bad9fc3c7205886399dd140e9b349a772a70", +"T3T1_fr_test_language.py::test_full_language_change[es]": "106369f4edd63c8d8f944dd2db6efd2db564eecd3fe5d32d498e84335e52f831", +"T3T1_fr_test_language.py::test_full_language_change[fr]": "f412523214b630e19025608a766a49f4ab164e665807b4352ce181d6e1187aa4", +"T3T1_fr_test_language.py::test_header_trailing_data": "ad7fd20e20cbd6166e8bf2402d1619dc2694d067d5dd7ec51b4489f57c1ed125", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "d62937e9570d0a989face054bb9ea2148bac54230d3b08246ad5f56efda3acd7", +"T3T1_fr_test_language.py::test_reject_update": "320fbdd3d6be3e1b16f9a4852e9f27f344ad61056e35467628e48ae960581e98", +"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "1bd30ae477edf769f359f3c4f814701ce06163b331893a44ecf987768ac2ad09", +"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "1bd30ae477edf769f359f3c4f814701ce06163b331893a44ecf987768ac2ad09", +"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "837c1340985e79eabb6f0ed36ee2bd270bcfd1e65e9f16cf5abf6bddb0c4f26d", +"T3T1_fr_test_language.py::test_switch_from_english[None]": "8719550d6e6adc7569222937af5385b22a186d881fe52239f7501fa588d85fed", +"T3T1_fr_test_language.py::test_switch_from_english[True]": "8719550d6e6adc7569222937af5385b22a186d881fe52239f7501fa588d85fed", +"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "cb2b9211a28e57a3264d054fcf54fecc80a44ba40fe48dead24e24be14e8d0fc", +"T3T1_fr_test_language.py::test_switch_language": "13a94ffefa6c7ec7fe9c011ee0c697ef50bb4a7a816d4fd6a40d8331d5054d64", +"T3T1_fr_test_language.py::test_translations_renders_on_screen": "74d05ce87dfc17f6bd5b8991ef7a29495b23b6e59e087dd4430caefe1eb28041", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "142719ce2b8655e9ca9e4de88f7cf79e5528f6c59aa731b0a014d6d9f955f036", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "de263cf9f734b098bd85593cc2b68feeaa99e58e2314408c4bac09be435aba77", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "529b16a80c3be9cf26a45189c999e4563cc9a6974af8f70145586e8ea6803069", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00988807c1ab4c5f52d67d732c5082757aca490e3ac31104a571e7654dbd9085", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "974423ceef14cf1a10346d3bb6e1fcdc16530b6691c5d908f530cce47dc6f612", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "b5881eb8c2d3a41e14ed0ca4941b2b0700df73f4a108d1cada639c600b014b0f", +"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "11728ebd055b8dd997f30c806950104e149df07c5a3dad5b29b22c91ccba7e7c", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "81b1fb6210e5b0692f1b5f2a624f09c29af93cd522e98858f9827b6c896484af", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "5f2e6366257d4e0b4a150162964b1506ae07b544da8dd77a4a4ef86f9442a2e1", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "95b8d3c0672ad842812365f4477246a3588fd935426acbcee7feddfa3f71ff14", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "56eb47e37a4555014ddd5ca539e65c6e37a4564e88b492fea593586afeec468f", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9bc50a221db3ec1744c903f21db4a14f5afe9b27d8ff87243d99e1cfa28f94a2", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "662b8a9bb4946936be88d5c776ad67e9dc1b3d845bca120eebe40ed45e0109b1", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1e44c44917a8ef414f1d3de27a899618551ed761bbdb290984bff4ae2299f8f7", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ccb7696f1052b83dc194a2694ef2b5046df215de3a5b40bdfba510b0bfbd6ac3", +"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1d4378a636628308f0dcfa13f003c83ffa93672f3383f19a85a41bbc1832f0b2", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "143d20c7d11e9b3246e30c2d75de7c22e658ecbd4bfb7781a6fc98c3fe2b4e1d", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "67d680e6ae25fd4e1d2107aea8e7e8a48ec2d25c435ce4edb8eaa2fb4150498a", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "9d6002b5b1f5547d0be0e83651385d800f1b27d276c1838a846002198c974798", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "2f36b9bc6a3103f84647c887086ccf78b468950df0709e38b3f32955756b1549", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "a7a672e01a6b436411df8bd10ced9fc6d93912ce5e7e67d290a5508f6aeb5f04", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "db874cb9046bc9e902fe76b69d74ab3711d7b36ca83f8b077d45f11149d8ec0a", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "d2e0316c1ce92ccec54631e6385c89e2d60e9e65cc1c4913e5809b3de0c1536b", +"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "3ae62610411e44eca0576920b6d043a5231b285e7f34db697b3b685cd68a3616", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "8be2ee6e83965b14f12cc625d1ed8d3ae8705a2f9717dd548fc168e2eb1e098b", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "a0dc6ffdafbdcbb85fe2e09ceb16fc58c2c83313373d7c0c60d05f1e1e5aa222", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "429b85f2924d25626145986d5e35351946f1a56ccff42f83f57fe602019d8066", +"T3T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "48e8eb0818213f65cb3fc527344ba04001943a15435d09278b188aa462d483f2", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "0d4277842c3f8195d3ec748ea82586da5bcd2a61eedea8d8c3d36aef14aafff8", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "31e2ee65e6825a461042d6feb0c64a0759054d5a56ca8d24d9d80b6423db2f38", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "18e1834e08ebb4bfe885f54b36edb9acff434e3d1682ef9b8303b21ae2ab8105", +"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "ab4acdd890a084e6041b9c385d4b4f4c331f29eec77bbcb69b4e99b3f8d554c8", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "8c171ce75274153912dea13ba981e01b8a284337dcf57b45ee31bd584ea1734a", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "8c171ce75274153912dea13ba981e01b8a284337dcf57b45ee31bd584ea1734a", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", +"T3T1_fr_test_pin.py::test_correct_pin": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "821d7af227908754deb0588c3b7a5185d5de0a39e4031e47ac1166fe30be6655", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "3b0bce557549e02d0c06a271481e4359b9e9cd1f6e59aeb76bface584e21e1f3", +"T3T1_fr_test_pin.py::test_no_protection": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "3cf18204ad7cc750b17486540976f6697b92e63d503d2a054166848b7366899d", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "2161cc050d4e30e23ed47e23da90d79b031751a48d9d8f840c8f8cf0a8323b5b", +"T3T1_fr_test_protection_levels.py::test_get_address": "0a18ab2c40a4a618876e25d77c1b3cbae11f5f4657639d8800828f2cf5ee3fdc", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "6b1318228de5b2a11c5f26162c80db3dd25895de91249a93542478ad7931e62e", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "0a18ab2c40a4a618876e25d77c1b3cbae11f5f4657639d8800828f2cf5ee3fdc", +"T3T1_fr_test_protection_levels.py::test_initialize": "de4af0cfe52d5407840239b18d7630db00a571668d3edcd80fea8907d97ec892", +"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "cad2ea4e4b890e2794befccb8caedd353c8bdae427309d128ad67e0ac4a42de3", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "3798102d9e7ef1318928178548fe2213283977ad9215b705c969fcf0de38c2a3", +"T3T1_fr_test_protection_levels.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", +"T3T1_fr_test_protection_levels.py::test_sign_message": "50a8e5ca56b3faa30f88afb36d67d2489306cbc0646f1db6fd86150ce8dfeae3", +"T3T1_fr_test_protection_levels.py::test_signtx": "aea73884d8f8d0e2c4f8168f8839317ae7f6604625743dbd8695f8796da119f2", +"T3T1_fr_test_protection_levels.py::test_unlocked": "1ea176720ffee45d6b866702e770bf03be499721e1ed627e7cd162f314ab1dfc", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "0b123040d9591820e1bb2d26f670f7ea864c0d9aabd564402c479ebd02872f9b", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "7e7ce3bade869d4061a08bc735f55c1db46dd2e4b802740577c3ad57c3a9aa58", +"T3T1_fr_test_sdcard.py::test_sd_format": "31e261a1dca1105543b767c42420569c3048eb0ff0bdf35f8de5a936beed8159", +"T3T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4a36d239bfb8b16ebb527a77dace158d2929a6b5a75b588a9dbafcd1f81738c5", +"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_session.py::test_clear_session": "0ab6fece5d339499391d08c907067ec668211417c874d3a7dfaf10b93c4fabac", +"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_session.py::test_session_recycling": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "90b30e647d6cdc148221ce080f7f925e53756015de9084e254bc816740649388", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "1b99f1ac93c58b1204fb0be7c05c78ef0edee97591ae003dcf0bbcc7271ccc39", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "bd7fc5d8d4c1145f53f30de022aae78e5b8c9da26e2c8028dc24c7a63a0e4125", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "032a42e40594526040a1fbdd16f85cca634a4788fce876bb9c5d210fdcf14f96", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "3b287aa610be74787c226147a9d0f90b3dfa845888c4544dba4a2cc21ae9b8bb", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "be591b806eb0394b145578e6adeed0c16698f89e47c880495616095e0bbe39f5", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "dd6881bd84dc3123aefc7101004028ed19c887450b4f7dc9ac34be26d9bc7477", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8db9a2054d1880b21094c1130d66606c88558e57d0187b315000a9df5c9974e2", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "b08648e55c692a88d7b254e5a2e47cf3d7193c5e078d86b7c5e1c342c2a7cd3b", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c4585c060afed6a846facf4909e7705d64f93673f5711a4e62fcbbc1020be275", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b80498105334cc6c0c17dbbaef4d2f012004f4df8ff461d94a992fef1ae567b4", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "781da6f1be1715db1139b5859a65bf608fd4c3cb1eea1f8df563fd42237f5b8a", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "ec6e80f9bb9bb9f17b3e166b51f744d6cfe83397f007d8b6d2084e9004d52bcd", +"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "1da1e2156d2f115a068bef65e5052472767c5291e547af1e951be95ce1f20fcb", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aa8f4c5126cf852694f81e5768fde2024c96aba72c491e07be8336d2e4ccc300", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "506792c673183891922f45245cc59a8e888d10ce41ad4c43a046d6ffd7989b31", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "fd43d8ac72dfca2d30e5e4801e245890ff905fda5390ec22f35dc1a8f78f92df", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "3929a75f20d7cd33aaa6f3d6b9cabf1f801b0fac78f23892e43e0da93e359bcd", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "303cf7db5fff2a6753a0495d8cf6608c86cc52346969233a96fdcad29912bd18", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "b18fb5dc21d741f5dd59676fe650d138a0772e94c73ebd508eaa58a17ae030fa", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "bb905fffdf928c05948413f0990e10f5255c17fa56812c3bfbbdb77ec43749bc", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5fc6054169122b15bd55c88909cfc4bebc12e5e1262db1047c60dd3aad323f51", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "71e98e2b347c735ab4090569029887bf7979cec3efd6c91c2b0c84835d07c19b", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e6916524e799f6ef629a1d1fa6c0380b83d1f782e10c60e411594a7589a4abbd", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "10f5c22194ebabd987217ef45a9ed36b9c28528d5401667390b144e66543276c", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "9c292f8742a362bb2c0be0e76331ee372d1b96a663b4ef20f2fdeecefc3b6feb", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b6ee69f00fb63b280633844569b11ec623a18d715a76ffb45550932f9e085b50", +"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "6013c9907b5a4628d333c89c440bb6598bf7bc1085062b18fefe1079469206ec", +"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "87435614ee9edb5fba90567bf43d033f2cd7146da6c747e1f316419264005679", +"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "3a1dca74cdc3aa1c44b44fb6f498b60d7290bc7a11b074bcc8177ed5b4c32fbf", +"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "632982338f0542460c700e6710c42254cc5e098471e6c25f8061bdafe22d1eac", +"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", +"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "45e33313131233d5274c6b19d3eeb8432e0bab94bca801d5aa57b876f19c255b", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "deee5c12961a421d5334266617dd517f045dec0d2f76bdf51b6c0a594348bd85", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "b778429d3e6e732969589aba64524b38f95d8f44a3de665442860d9e2ad31047", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "465bc58ced3603bbbda63153438a924e752ae79303beeecfaced89aeffa2d147", +"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "a35c54fcef2686b3846c4d56d082091fc3c172d88853e2307bc473f37ea67a33", +"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94" +}, +"persistence_tests": { +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "5da2d368154467c1b68fd0d676f84da3377083d7cf2bd0871f96a9f163b220ef", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "62ad9d823cfdff7774521587a6daf70c872876e1b75df6236323abc07135cba9", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "b9949cb03a12d8ddc61410b43d170f658af614667b67cda246459bb655527356", +"T3T1_en_test_shamir_persistence.py::test_abort": "acdbb336fcf6e6b4a7046bf66fdb278f97d0bdd42dbbaa0b558dc223446b7f50", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "6eae781b70a129d9c9cbba1a14878dc5bfdec4da1c779d2730b371fc9643c235", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "e749da9bbbcb8a0019edbf7aa425b1f3b4f11146d7a42853114a03bdfed51cdb", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "87303b91615d1a1e38ca1a898ab561da8acfd779b6c533923efaabdd6e7c976d", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "5894305ee4b8a293f2b6fd507b8035dbd5d273185c170b4bb0154f0e41c47614" } } } From c448a7bcfcffd931b30c4adb837d3b7beef96519 Mon Sep 17 00:00:00 2001 From: obrusvit Date: Tue, 9 Apr 2024 13:17:05 +0200 Subject: [PATCH 015/626] refactor(tools): add gen_upper arg to gen_font The new option allows generation of font glyph definition where both lowercase and uppercase letters are mapped to uppercase glyphs. [no changelog] --- .../lib/fonts/font_pixeloperator_bold_8.c | 106 ++++++++- .../lib/fonts/font_pixeloperator_bold_8.h | 7 + .../lib/fonts/font_pixeloperator_regular_8.c | 106 ++++++++- .../lib/fonts/font_pixeloperator_regular_8.h | 7 + .../fonts/font_pixeloperatormono_regular_8.h | 2 + core/embed/lib/fonts/font_roboto_bold_20.c | 2 + core/embed/lib/fonts/font_roboto_bold_20.h | 2 + core/embed/lib/fonts/font_roboto_regular_20.c | 2 + core/embed/lib/fonts/font_roboto_regular_20.h | 2 + .../lib/fonts/font_robotomono_medium_20.c | 2 + .../lib/fonts/font_robotomono_medium_20.h | 2 + core/embed/lib/fonts/font_tthoves_bold_17.c | 84 +++---- core/embed/lib/fonts/font_tthoves_bold_17.h | 12 +- .../lib/fonts/font_tthoves_demibold_21.c | 2 + .../lib/fonts/font_tthoves_demibold_21.h | 2 + .../embed/lib/fonts/font_tthoves_regular_21.c | 2 + .../embed/lib/fonts/font_tthoves_regular_21.h | 2 + core/embed/lib/fonts/font_unifont_bold_16.c | 2 + core/site_scons/tools.py | 5 +- core/tools/codegen/gen_font.py | 207 ++++++++++++------ .../font_pixeloperator_bold_8_upper_cs.json | 32 +++ .../font_pixeloperator_bold_8_upper_de.json | 9 + .../font_pixeloperator_bold_8_upper_es.json | 17 ++ .../font_pixeloperator_bold_8_upper_fr.json | 34 +++ ...font_pixeloperator_regular_8_upper_cs.json | 32 +++ ...font_pixeloperator_regular_8_upper_de.json | 9 + ...font_pixeloperator_regular_8_upper_es.json | 17 ++ ...font_pixeloperator_regular_8_upper_fr.json | 34 +++ ...son => font_tthoves_bold_17_upper_cs.json} | 30 +-- ...son => font_tthoves_bold_17_upper_de.json} | 6 +- ...son => font_tthoves_bold_17_upper_es.json} | 14 +- ...son => font_tthoves_bold_17_upper_fr.json} | 32 +-- 32 files changed, 652 insertions(+), 172 deletions(-) create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_upper_cs.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_upper_de.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_upper_es.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_upper_fr.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_upper_cs.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_upper_de.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_upper_es.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_upper_fr.json rename core/translations/fonts/{font_tthoves_bold_17_cs.json => font_tthoves_bold_17_upper_cs.json} (50%) rename core/translations/fonts/{font_tthoves_bold_17_de.json => font_tthoves_bold_17_upper_de.json} (54%) rename core/translations/fonts/{font_tthoves_bold_17_es.json => font_tthoves_bold_17_upper_es.json} (52%) rename core/translations/fonts/{font_tthoves_bold_17_fr.json => font_tthoves_bold_17_upper_fr.json} (50%) diff --git a/core/embed/lib/fonts/font_pixeloperator_bold_8.c b/core/embed/lib/fonts/font_pixeloperator_bold_8.c index 5bdd5e4038..76c6ce16b9 100644 --- a/core/embed/lib/fonts/font_pixeloperator_bold_8.c +++ b/core/embed/lib/fonts/font_pixeloperator_bold_8.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off @@ -6,6 +8,8 @@ // - the third, fourth and fifth bytes are advance, bearingX and bearingY of the horizontal metrics of the glyph // - the rest is packed 1-bit glyph data +// NOTE: hand-changed the width and advance of '_' to 5 + /* */ static const uint8_t Font_PixelOperator_Bold_8_glyph_32[] = { 0, 0, 4, 0, 0 }; /* ! */ static const uint8_t Font_PixelOperator_Bold_8_glyph_33[] = { 2, 7, 5, 1, 7, 255, 204 }; /* " */ static const uint8_t Font_PixelOperator_Bold_8_glyph_34[] = { 5, 3, 6, 0, 7, 222, 246 }; @@ -69,7 +73,7 @@ /* \ */ static const uint8_t Font_PixelOperator_Bold_8_glyph_92[] = { 4, 7, 5, 0, 7, 204, 102, 99, 48 }; /* ] */ static const uint8_t Font_PixelOperator_Bold_8_glyph_93[] = { 4, 7, 6, 0, 7, 243, 51, 51, 240 }; /* ^ */ static const uint8_t Font_PixelOperator_Bold_8_glyph_94[] = { 6, 4, 7, 0, 7, 49, 236, 225, 0 }; -/* _ */ static const uint8_t Font_PixelOperator_Bold_8_glyph_95[] = { 5, 1, 5, 0, 0, 248 }; +/* _ */ static const uint8_t Font_PixelOperator_Bold_8_glyph_95[] = { 5, 1, 5, 0, 0, 248 }; // width (1st), advance (3rd) changed to 5, last byte to 248 /* ` */ static const uint8_t Font_PixelOperator_Bold_8_glyph_96[] = { 3, 2, 5, 0, 7, 204 }; /* a */ static const uint8_t Font_PixelOperator_Bold_8_glyph_97[] = { 6, 5, 7, 0, 5, 120, 55, 243, 124 }; /* b */ static const uint8_t Font_PixelOperator_Bold_8_glyph_98[] = { 6, 7, 7, 0, 7, 195, 15, 179, 207, 63, 128 }; @@ -104,6 +108,8 @@ /* ? */ const uint8_t Font_PixelOperator_Bold_8_glyph_nonprintable[] = { 6, 7, 7, 0, 7, 132, 207, 57, 207, 252, 255 }; +/* ? */ const uint8_t Font_PixelOperator_Bold_8_upper_glyph_nonprintable[] = { 6, 7, 7, 0, 7, 132, 207, 57, 207, 252, 255 }; + const uint8_t * const Font_PixelOperator_Bold_8[126 + 1 - 32] = { Font_PixelOperator_Bold_8_glyph_32, Font_PixelOperator_Bold_8_glyph_33, @@ -201,3 +207,101 @@ const uint8_t * const Font_PixelOperator_Bold_8[126 + 1 - 32] = { Font_PixelOperator_Bold_8_glyph_125, Font_PixelOperator_Bold_8_glyph_126, }; + +const uint8_t * const Font_PixelOperator_Bold_8_upper[126 + 1 - 32] = { + Font_PixelOperator_Bold_8_glyph_32, + Font_PixelOperator_Bold_8_glyph_33, + Font_PixelOperator_Bold_8_glyph_34, + Font_PixelOperator_Bold_8_glyph_35, + Font_PixelOperator_Bold_8_glyph_36, + Font_PixelOperator_Bold_8_glyph_37, + Font_PixelOperator_Bold_8_glyph_38, + Font_PixelOperator_Bold_8_glyph_39, + Font_PixelOperator_Bold_8_glyph_40, + Font_PixelOperator_Bold_8_glyph_41, + Font_PixelOperator_Bold_8_glyph_42, + Font_PixelOperator_Bold_8_glyph_43, + Font_PixelOperator_Bold_8_glyph_44, + Font_PixelOperator_Bold_8_glyph_45, + Font_PixelOperator_Bold_8_glyph_46, + Font_PixelOperator_Bold_8_glyph_47, + Font_PixelOperator_Bold_8_glyph_48, + Font_PixelOperator_Bold_8_glyph_49, + Font_PixelOperator_Bold_8_glyph_50, + Font_PixelOperator_Bold_8_glyph_51, + Font_PixelOperator_Bold_8_glyph_52, + Font_PixelOperator_Bold_8_glyph_53, + Font_PixelOperator_Bold_8_glyph_54, + Font_PixelOperator_Bold_8_glyph_55, + Font_PixelOperator_Bold_8_glyph_56, + Font_PixelOperator_Bold_8_glyph_57, + Font_PixelOperator_Bold_8_glyph_58, + Font_PixelOperator_Bold_8_glyph_59, + Font_PixelOperator_Bold_8_glyph_60, + Font_PixelOperator_Bold_8_glyph_61, + Font_PixelOperator_Bold_8_glyph_62, + Font_PixelOperator_Bold_8_glyph_63, + Font_PixelOperator_Bold_8_glyph_64, + Font_PixelOperator_Bold_8_glyph_65, + Font_PixelOperator_Bold_8_glyph_66, + Font_PixelOperator_Bold_8_glyph_67, + Font_PixelOperator_Bold_8_glyph_68, + Font_PixelOperator_Bold_8_glyph_69, + Font_PixelOperator_Bold_8_glyph_70, + Font_PixelOperator_Bold_8_glyph_71, + Font_PixelOperator_Bold_8_glyph_72, + Font_PixelOperator_Bold_8_glyph_73, + Font_PixelOperator_Bold_8_glyph_74, + Font_PixelOperator_Bold_8_glyph_75, + Font_PixelOperator_Bold_8_glyph_76, + Font_PixelOperator_Bold_8_glyph_77, + Font_PixelOperator_Bold_8_glyph_78, + Font_PixelOperator_Bold_8_glyph_79, + Font_PixelOperator_Bold_8_glyph_80, + Font_PixelOperator_Bold_8_glyph_81, + Font_PixelOperator_Bold_8_glyph_82, + Font_PixelOperator_Bold_8_glyph_83, + Font_PixelOperator_Bold_8_glyph_84, + Font_PixelOperator_Bold_8_glyph_85, + Font_PixelOperator_Bold_8_glyph_86, + Font_PixelOperator_Bold_8_glyph_87, + Font_PixelOperator_Bold_8_glyph_88, + Font_PixelOperator_Bold_8_glyph_89, + Font_PixelOperator_Bold_8_glyph_90, + Font_PixelOperator_Bold_8_glyph_91, + Font_PixelOperator_Bold_8_glyph_92, + Font_PixelOperator_Bold_8_glyph_93, + Font_PixelOperator_Bold_8_glyph_94, + Font_PixelOperator_Bold_8_glyph_95, + Font_PixelOperator_Bold_8_glyph_96, + Font_PixelOperator_Bold_8_glyph_65, // a -> A + Font_PixelOperator_Bold_8_glyph_66, // b -> B + Font_PixelOperator_Bold_8_glyph_67, // c -> C + Font_PixelOperator_Bold_8_glyph_68, // d -> D + Font_PixelOperator_Bold_8_glyph_69, // e -> E + Font_PixelOperator_Bold_8_glyph_70, // f -> F + Font_PixelOperator_Bold_8_glyph_71, // g -> G + Font_PixelOperator_Bold_8_glyph_72, // h -> H + Font_PixelOperator_Bold_8_glyph_73, // i -> I + Font_PixelOperator_Bold_8_glyph_74, // j -> J + Font_PixelOperator_Bold_8_glyph_75, // k -> K + Font_PixelOperator_Bold_8_glyph_76, // l -> L + Font_PixelOperator_Bold_8_glyph_77, // m -> M + Font_PixelOperator_Bold_8_glyph_78, // n -> N + Font_PixelOperator_Bold_8_glyph_79, // o -> O + Font_PixelOperator_Bold_8_glyph_80, // p -> P + Font_PixelOperator_Bold_8_glyph_81, // q -> Q + Font_PixelOperator_Bold_8_glyph_82, // r -> R + Font_PixelOperator_Bold_8_glyph_83, // s -> S + Font_PixelOperator_Bold_8_glyph_84, // t -> T + Font_PixelOperator_Bold_8_glyph_85, // u -> U + Font_PixelOperator_Bold_8_glyph_86, // v -> V + Font_PixelOperator_Bold_8_glyph_87, // w -> W + Font_PixelOperator_Bold_8_glyph_88, // x -> X + Font_PixelOperator_Bold_8_glyph_89, // y -> Y + Font_PixelOperator_Bold_8_glyph_90, // z -> Z + Font_PixelOperator_Bold_8_glyph_123, + Font_PixelOperator_Bold_8_glyph_124, + Font_PixelOperator_Bold_8_glyph_125, + Font_PixelOperator_Bold_8_glyph_126, +}; diff --git a/core/embed/lib/fonts/font_pixeloperator_bold_8.h b/core/embed/lib/fonts/font_pixeloperator_bold_8.h index 198ebd4a43..d3b0f11a57 100644 --- a/core/embed/lib/fonts/font_pixeloperator_bold_8.h +++ b/core/embed/lib/fonts/font_pixeloperator_bold_8.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 1 @@ -8,3 +10,8 @@ #define Font_PixelOperator_Bold_8_BASELINE 1 extern const uint8_t* const Font_PixelOperator_Bold_8[126 + 1 - 32]; extern const uint8_t Font_PixelOperator_Bold_8_glyph_nonprintable[]; +#define Font_PixelOperator_Bold_8_upper_HEIGHT 8 +#define Font_PixelOperator_Bold_8_upper_MAX_HEIGHT 8 +#define Font_PixelOperator_Bold_8_upper_BASELINE 1 +extern const uint8_t* const Font_PixelOperator_Bold_8_upper[126 + 1 - 32]; +extern const uint8_t Font_PixelOperator_Bold_8_upper_glyph_nonprintable[]; diff --git a/core/embed/lib/fonts/font_pixeloperator_regular_8.c b/core/embed/lib/fonts/font_pixeloperator_regular_8.c index ba7a412dd4..5f61813307 100644 --- a/core/embed/lib/fonts/font_pixeloperator_regular_8.c +++ b/core/embed/lib/fonts/font_pixeloperator_regular_8.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off @@ -6,6 +8,8 @@ // - the third, fourth and fifth bytes are advance, bearingX and bearingY of the horizontal metrics of the glyph // - the rest is packed 1-bit glyph data +// NOTE: hand-changed the width and advance of '_' to 5 + /* */ static const uint8_t Font_PixelOperator_Regular_8_glyph_32[] = { 0, 0, 4, 0, 0 }; /* ! */ static const uint8_t Font_PixelOperator_Regular_8_glyph_33[] = { 1, 7, 4, 1, 7, 250 }; /* " */ static const uint8_t Font_PixelOperator_Regular_8_glyph_34[] = { 3, 3, 6, 1, 7, 182, 128 }; @@ -69,7 +73,7 @@ /* \ */ static const uint8_t Font_PixelOperator_Regular_8_glyph_92[] = { 3, 7, 4, 0, 7, 145, 36, 72 }; /* ] */ static const uint8_t Font_PixelOperator_Regular_8_glyph_93[] = { 3, 7, 6, 0, 7, 228, 146, 120 }; /* ^ */ static const uint8_t Font_PixelOperator_Regular_8_glyph_94[] = { 5, 3, 6, 0, 7, 34, 162 }; -/* _ */ static const uint8_t Font_PixelOperator_Regular_8_glyph_95[] = { 5, 1, 5, 0, 0, 248 }; +/* _ */ static const uint8_t Font_PixelOperator_Regular_8_glyph_95[] = { 5, 1, 5, 0, 0, 248 }; // width (1st), advance (3rd) changed to 5, last byte to 248 /* ` */ static const uint8_t Font_PixelOperator_Regular_8_glyph_96[] = { 2, 2, 4, 0, 7, 144 }; /* a */ static const uint8_t Font_PixelOperator_Regular_8_glyph_97[] = { 5, 5, 6, 0, 5, 112, 95, 23, 128 }; /* b */ static const uint8_t Font_PixelOperator_Regular_8_glyph_98[] = { 5, 7, 6, 0, 7, 132, 61, 24, 199, 192 }; @@ -104,6 +108,8 @@ /* ? */ const uint8_t Font_PixelOperator_Regular_8_glyph_nonprintable[] = { 5, 7, 6, 0, 7, 139, 189, 221, 255, 127 }; +/* ? */ const uint8_t Font_PixelOperator_Regular_8_upper_glyph_nonprintable[] = { 5, 7, 6, 0, 7, 139, 189, 221, 255, 127 }; + const uint8_t * const Font_PixelOperator_Regular_8[126 + 1 - 32] = { Font_PixelOperator_Regular_8_glyph_32, Font_PixelOperator_Regular_8_glyph_33, @@ -201,3 +207,101 @@ const uint8_t * const Font_PixelOperator_Regular_8[126 + 1 - 32] = { Font_PixelOperator_Regular_8_glyph_125, Font_PixelOperator_Regular_8_glyph_126, }; + +const uint8_t * const Font_PixelOperator_Regular_8_upper[126 + 1 - 32] = { + Font_PixelOperator_Regular_8_glyph_32, + Font_PixelOperator_Regular_8_glyph_33, + Font_PixelOperator_Regular_8_glyph_34, + Font_PixelOperator_Regular_8_glyph_35, + Font_PixelOperator_Regular_8_glyph_36, + Font_PixelOperator_Regular_8_glyph_37, + Font_PixelOperator_Regular_8_glyph_38, + Font_PixelOperator_Regular_8_glyph_39, + Font_PixelOperator_Regular_8_glyph_40, + Font_PixelOperator_Regular_8_glyph_41, + Font_PixelOperator_Regular_8_glyph_42, + Font_PixelOperator_Regular_8_glyph_43, + Font_PixelOperator_Regular_8_glyph_44, + Font_PixelOperator_Regular_8_glyph_45, + Font_PixelOperator_Regular_8_glyph_46, + Font_PixelOperator_Regular_8_glyph_47, + Font_PixelOperator_Regular_8_glyph_48, + Font_PixelOperator_Regular_8_glyph_49, + Font_PixelOperator_Regular_8_glyph_50, + Font_PixelOperator_Regular_8_glyph_51, + Font_PixelOperator_Regular_8_glyph_52, + Font_PixelOperator_Regular_8_glyph_53, + Font_PixelOperator_Regular_8_glyph_54, + Font_PixelOperator_Regular_8_glyph_55, + Font_PixelOperator_Regular_8_glyph_56, + Font_PixelOperator_Regular_8_glyph_57, + Font_PixelOperator_Regular_8_glyph_58, + Font_PixelOperator_Regular_8_glyph_59, + Font_PixelOperator_Regular_8_glyph_60, + Font_PixelOperator_Regular_8_glyph_61, + Font_PixelOperator_Regular_8_glyph_62, + Font_PixelOperator_Regular_8_glyph_63, + Font_PixelOperator_Regular_8_glyph_64, + Font_PixelOperator_Regular_8_glyph_65, + Font_PixelOperator_Regular_8_glyph_66, + Font_PixelOperator_Regular_8_glyph_67, + Font_PixelOperator_Regular_8_glyph_68, + Font_PixelOperator_Regular_8_glyph_69, + Font_PixelOperator_Regular_8_glyph_70, + Font_PixelOperator_Regular_8_glyph_71, + Font_PixelOperator_Regular_8_glyph_72, + Font_PixelOperator_Regular_8_glyph_73, + Font_PixelOperator_Regular_8_glyph_74, + Font_PixelOperator_Regular_8_glyph_75, + Font_PixelOperator_Regular_8_glyph_76, + Font_PixelOperator_Regular_8_glyph_77, + Font_PixelOperator_Regular_8_glyph_78, + Font_PixelOperator_Regular_8_glyph_79, + Font_PixelOperator_Regular_8_glyph_80, + Font_PixelOperator_Regular_8_glyph_81, + Font_PixelOperator_Regular_8_glyph_82, + Font_PixelOperator_Regular_8_glyph_83, + Font_PixelOperator_Regular_8_glyph_84, + Font_PixelOperator_Regular_8_glyph_85, + Font_PixelOperator_Regular_8_glyph_86, + Font_PixelOperator_Regular_8_glyph_87, + Font_PixelOperator_Regular_8_glyph_88, + Font_PixelOperator_Regular_8_glyph_89, + Font_PixelOperator_Regular_8_glyph_90, + Font_PixelOperator_Regular_8_glyph_91, + Font_PixelOperator_Regular_8_glyph_92, + Font_PixelOperator_Regular_8_glyph_93, + Font_PixelOperator_Regular_8_glyph_94, + Font_PixelOperator_Regular_8_glyph_95, + Font_PixelOperator_Regular_8_glyph_96, + Font_PixelOperator_Regular_8_glyph_65, // a -> A + Font_PixelOperator_Regular_8_glyph_66, // b -> B + Font_PixelOperator_Regular_8_glyph_67, // c -> C + Font_PixelOperator_Regular_8_glyph_68, // d -> D + Font_PixelOperator_Regular_8_glyph_69, // e -> E + Font_PixelOperator_Regular_8_glyph_70, // f -> F + Font_PixelOperator_Regular_8_glyph_71, // g -> G + Font_PixelOperator_Regular_8_glyph_72, // h -> H + Font_PixelOperator_Regular_8_glyph_73, // i -> I + Font_PixelOperator_Regular_8_glyph_74, // j -> J + Font_PixelOperator_Regular_8_glyph_75, // k -> K + Font_PixelOperator_Regular_8_glyph_76, // l -> L + Font_PixelOperator_Regular_8_glyph_77, // m -> M + Font_PixelOperator_Regular_8_glyph_78, // n -> N + Font_PixelOperator_Regular_8_glyph_79, // o -> O + Font_PixelOperator_Regular_8_glyph_80, // p -> P + Font_PixelOperator_Regular_8_glyph_81, // q -> Q + Font_PixelOperator_Regular_8_glyph_82, // r -> R + Font_PixelOperator_Regular_8_glyph_83, // s -> S + Font_PixelOperator_Regular_8_glyph_84, // t -> T + Font_PixelOperator_Regular_8_glyph_85, // u -> U + Font_PixelOperator_Regular_8_glyph_86, // v -> V + Font_PixelOperator_Regular_8_glyph_87, // w -> W + Font_PixelOperator_Regular_8_glyph_88, // x -> X + Font_PixelOperator_Regular_8_glyph_89, // y -> Y + Font_PixelOperator_Regular_8_glyph_90, // z -> Z + Font_PixelOperator_Regular_8_glyph_123, + Font_PixelOperator_Regular_8_glyph_124, + Font_PixelOperator_Regular_8_glyph_125, + Font_PixelOperator_Regular_8_glyph_126, +}; diff --git a/core/embed/lib/fonts/font_pixeloperator_regular_8.h b/core/embed/lib/fonts/font_pixeloperator_regular_8.h index ddd01b0ee7..2565d87905 100644 --- a/core/embed/lib/fonts/font_pixeloperator_regular_8.h +++ b/core/embed/lib/fonts/font_pixeloperator_regular_8.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 1 @@ -8,3 +10,8 @@ #define Font_PixelOperator_Regular_8_BASELINE 1 extern const uint8_t* const Font_PixelOperator_Regular_8[126 + 1 - 32]; extern const uint8_t Font_PixelOperator_Regular_8_glyph_nonprintable[]; +#define Font_PixelOperator_Regular_8_upper_HEIGHT 8 +#define Font_PixelOperator_Regular_8_upper_MAX_HEIGHT 8 +#define Font_PixelOperator_Regular_8_upper_BASELINE 1 +extern const uint8_t* const Font_PixelOperator_Regular_8_upper[126 + 1 - 32]; +extern const uint8_t Font_PixelOperator_Regular_8_upper_glyph_nonprintable[]; diff --git a/core/embed/lib/fonts/font_pixeloperatormono_regular_8.h b/core/embed/lib/fonts/font_pixeloperatormono_regular_8.h index 27a730c8bf..ce157770fd 100644 --- a/core/embed/lib/fonts/font_pixeloperatormono_regular_8.h +++ b/core/embed/lib/fonts/font_pixeloperatormono_regular_8.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 1 diff --git a/core/embed/lib/fonts/font_roboto_bold_20.c b/core/embed/lib/fonts/font_roboto_bold_20.c index 225385bca3..da87d94e85 100644 --- a/core/embed/lib/fonts/font_roboto_bold_20.c +++ b/core/embed/lib/fonts/font_roboto_bold_20.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off diff --git a/core/embed/lib/fonts/font_roboto_bold_20.h b/core/embed/lib/fonts/font_roboto_bold_20.h index 8469473513..f922ba6600 100644 --- a/core/embed/lib/fonts/font_roboto_bold_20.h +++ b/core/embed/lib/fonts/font_roboto_bold_20.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 4 diff --git a/core/embed/lib/fonts/font_roboto_regular_20.c b/core/embed/lib/fonts/font_roboto_regular_20.c index 64f3d68700..f4370a6e6d 100644 --- a/core/embed/lib/fonts/font_roboto_regular_20.c +++ b/core/embed/lib/fonts/font_roboto_regular_20.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off diff --git a/core/embed/lib/fonts/font_roboto_regular_20.h b/core/embed/lib/fonts/font_roboto_regular_20.h index ac18ed1f33..8eeb509837 100644 --- a/core/embed/lib/fonts/font_roboto_regular_20.h +++ b/core/embed/lib/fonts/font_roboto_regular_20.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 4 diff --git a/core/embed/lib/fonts/font_robotomono_medium_20.c b/core/embed/lib/fonts/font_robotomono_medium_20.c index 72884c1b22..c08fc3fb0a 100644 --- a/core/embed/lib/fonts/font_robotomono_medium_20.c +++ b/core/embed/lib/fonts/font_robotomono_medium_20.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off diff --git a/core/embed/lib/fonts/font_robotomono_medium_20.h b/core/embed/lib/fonts/font_robotomono_medium_20.h index b371bca009..7b43d298fc 100644 --- a/core/embed/lib/fonts/font_robotomono_medium_20.h +++ b/core/embed/lib/fonts/font_robotomono_medium_20.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 4 diff --git a/core/embed/lib/fonts/font_tthoves_bold_17.c b/core/embed/lib/fonts/font_tthoves_bold_17.c index 992febaa25..d8b3138e3c 100644 --- a/core/embed/lib/fonts/font_tthoves_bold_17.c +++ b/core/embed/lib/fonts/font_tthoves_bold_17.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off @@ -71,40 +73,14 @@ /* ^ */ static const uint8_t Font_TTHoves_Bold_17_glyph_94[] = { 8, 5, 8, 0, 12, 0, 251, 159, 0, 16, 255, 255, 0, 112, 207, 253, 5, 192, 111, 248, 10, 242, 31, 242, 31 }; /* _ */ static const uint8_t Font_TTHoves_Bold_17_glyph_95[] = { 9, 3, 8, 0, 0, 82, 85, 85, 85, 0, 245, 255, 255, 255, 1, 245, 255, 255, 255, 1 }; /* ` */ static const uint8_t Font_TTHoves_Bold_17_glyph_96[] = { 5, 3, 5, 0, 13, 114, 23, 0, 176, 175, 0, 0, 253, 5 }; -/* a */ static const uint8_t Font_TTHoves_Bold_17_glyph_97[] = { 9, 9, 10, 0, 9, 0, 214, 239, 42, 0, 128, 255, 255, 239, 1, 192, 172, 114, 255, 7, 0, 0, 0, 255, 9, 48, 235, 255, 255, 10, 241, 239, 187, 255, 10, 245, 95, 80, 255, 10, 242, 255, 255, 255, 10, 48, 252, 158, 250, 10 }; -/* b */ static const uint8_t Font_TTHoves_Bold_17_glyph_98[] = { 10, 12, 11, 1, 12, 254, 10, 0, 0, 0, 254, 10, 0, 0, 0, 254, 10, 0, 0, 0, 254, 171, 238, 26, 0, 254, 255, 255, 239, 1, 254, 207, 167, 255, 10, 254, 14, 0, 251, 14, 254, 10, 0, 247, 15, 254, 13, 0, 251, 14, 254, 207, 166, 255, 10, 254, 255, 255, 239, 1, 254, 168, 238, 26, 0 }; -/* c */ static const uint8_t Font_TTHoves_Bold_17_glyph_99[] = { 10, 9, 10, 0, 9, 0, 178, 254, 76, 0, 64, 255, 255, 255, 6, 224, 255, 120, 254, 31, 243, 111, 0, 147, 57, 245, 47, 0, 0, 0, 243, 111, 0, 131, 56, 224, 255, 120, 254, 31, 64, 255, 255, 255, 6, 0, 179, 254, 76, 0 }; -/* d */ static const uint8_t Font_TTHoves_Bold_17_glyph_100[] = { 10, 12, 11, 0, 12, 0, 0, 0, 240, 159, 0, 0, 0, 240, 159, 0, 0, 0, 240, 159, 0, 179, 238, 247, 159, 80, 255, 255, 255, 159, 224, 255, 120, 254, 159, 243, 111, 0, 243, 159, 245, 47, 0, 240, 159, 243, 111, 0, 243, 159, 224, 255, 120, 254, 159, 80, 255, 255, 255, 159, 0, 179, 239, 183, 159 }; -/* e */ static const uint8_t Font_TTHoves_Bold_17_glyph_101[] = { 10, 9, 10, 0, 9, 0, 179, 238, 75, 0, 64, 255, 255, 255, 6, 224, 207, 18, 250, 47, 243, 175, 136, 249, 111, 245, 255, 255, 255, 127, 243, 95, 0, 0, 0, 224, 223, 34, 201, 28, 64, 255, 255, 255, 6, 0, 178, 238, 75, 0 }; -/* f */ static const uint8_t Font_TTHoves_Bold_17_glyph_102[] = { 7, 13, 7, 0, 13, 0, 212, 255, 4, 0, 255, 255, 4, 32, 255, 25, 0, 32, 255, 6, 0, 247, 255, 255, 4, 247, 255, 255, 4, 115, 255, 106, 1, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 6, 0 }; -/* g */ static const uint8_t Font_TTHoves_Bold_17_glyph_103[] = { 10, 13, 10, 0, 9, 0, 197, 223, 245, 63, 96, 255, 255, 255, 63, 241, 255, 152, 255, 63, 243, 111, 0, 248, 63, 245, 47, 0, 245, 63, 244, 111, 0, 248, 63, 241, 255, 135, 255, 63, 112, 255, 255, 255, 63, 0, 197, 223, 249, 63, 32, 2, 0, 246, 63, 241, 223, 84, 253, 15, 112, 255, 255, 255, 8, 0, 197, 239, 92, 0 }; -/* h */ static const uint8_t Font_TTHoves_Bold_17_glyph_104[] = { 9, 12, 10, 1, 12, 254, 10, 0, 0, 0, 254, 10, 0, 0, 0, 254, 10, 0, 0, 0, 254, 171, 239, 25, 0, 254, 255, 255, 207, 0, 254, 207, 249, 255, 3, 254, 14, 80, 255, 6, 254, 10, 32, 255, 6, 254, 10, 16, 255, 6, 254, 10, 16, 255, 6, 254, 10, 16, 255, 6, 254, 10, 16, 255, 6 }; -/* i */ static const uint8_t Font_TTHoves_Bold_17_glyph_105[] = { 3, 13, 5, 1, 13, 51, 1, 255, 8, 255, 8, 0, 0, 255, 8, 255, 8, 255, 8, 255, 8, 255, 8, 255, 8, 255, 8, 255, 8, 255, 8 }; -/* j */ static const uint8_t Font_TTHoves_Bold_17_glyph_106[] = { 5, 17, 6, 0, 13, 0, 51, 1, 0, 255, 8, 0, 255, 8, 0, 0, 0, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 117, 255, 8, 253, 255, 6, 253, 175, 0 }; -/* k */ static const uint8_t Font_TTHoves_Bold_17_glyph_107[] = { 9, 12, 9, 1, 12, 254, 10, 0, 0, 0, 254, 10, 0, 0, 0, 254, 10, 0, 0, 0, 254, 10, 176, 255, 2, 254, 10, 247, 111, 0, 254, 58, 255, 10, 0, 254, 235, 223, 0, 0, 254, 255, 111, 0, 0, 254, 202, 239, 1, 0, 254, 42, 255, 12, 0, 254, 10, 245, 143, 0, 254, 10, 144, 255, 4 }; -/* l */ static const uint8_t Font_TTHoves_Bold_17_glyph_108[] = { 3, 12, 5, 1, 12, 254, 10, 254, 10, 254, 10, 254, 10, 254, 10, 254, 10, 254, 10, 254, 10, 254, 10, 254, 10, 254, 10, 254, 10 }; -/* m */ static const uint8_t Font_TTHoves_Bold_17_glyph_109[] = { 13, 9, 15, 1, 9, 255, 167, 206, 67, 252, 60, 0, 255, 255, 255, 255, 255, 255, 2, 255, 159, 252, 255, 186, 255, 9, 255, 11, 240, 207, 0, 254, 11, 255, 8, 224, 175, 0, 252, 12, 255, 8, 224, 175, 0, 252, 12, 255, 8, 224, 175, 0, 252, 12, 255, 8, 224, 175, 0, 252, 12, 255, 8, 224, 175, 0, 252, 12 }; -/* n */ static const uint8_t Font_TTHoves_Bold_17_glyph_110[] = { 9, 9, 10, 1, 9, 255, 183, 239, 8, 0, 255, 255, 255, 175, 0, 255, 191, 249, 255, 2, 255, 12, 112, 255, 4, 255, 9, 48, 255, 5, 255, 8, 48, 255, 5, 255, 8, 48, 255, 5, 255, 8, 48, 255, 5, 255, 8, 48, 255, 5 }; -/* o */ static const uint8_t Font_TTHoves_Bold_17_glyph_111[] = { 10, 9, 10, 0, 9, 0, 178, 238, 75, 0, 64, 255, 255, 255, 7, 224, 255, 120, 254, 47, 243, 111, 0, 243, 111, 245, 47, 0, 240, 143, 243, 111, 0, 243, 111, 224, 255, 120, 254, 47, 64, 255, 255, 255, 7, 0, 179, 238, 75, 0 }; -/* p */ static const uint8_t Font_TTHoves_Bold_17_glyph_112[] = { 10, 13, 11, 1, 9, 255, 182, 223, 9, 0, 255, 255, 255, 223, 0, 255, 191, 183, 255, 8, 255, 12, 0, 252, 13, 255, 9, 0, 249, 15, 255, 13, 0, 252, 13, 255, 191, 182, 255, 8, 255, 255, 255, 223, 0, 255, 187, 223, 25, 0, 255, 8, 0, 0, 0, 255, 8, 0, 0, 0, 255, 8, 0, 0, 0, 255, 8, 0, 0, 0 }; -/* q */ static const uint8_t Font_TTHoves_Bold_17_glyph_113[] = { 10, 13, 11, 0, 9, 0, 179, 238, 184, 159, 80, 255, 255, 255, 159, 224, 255, 120, 254, 159, 243, 111, 0, 243, 159, 245, 47, 0, 240, 159, 243, 111, 0, 243, 159, 224, 255, 120, 254, 159, 80, 255, 255, 255, 159, 0, 179, 239, 248, 159, 0, 0, 0, 240, 159, 0, 0, 0, 240, 159, 0, 0, 0, 240, 159, 0, 0, 0, 240, 159 }; -/* r */ static const uint8_t Font_TTHoves_Bold_17_glyph_114[] = { 6, 9, 7, 1, 9, 255, 218, 159, 255, 255, 159, 255, 159, 54, 255, 11, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0, 255, 8, 0 }; -/* s */ static const uint8_t Font_TTHoves_Bold_17_glyph_115[] = { 9, 9, 9, 0, 9, 48, 234, 223, 6, 0, 242, 255, 255, 143, 0, 246, 63, 128, 187, 0, 245, 207, 88, 1, 0, 144, 255, 255, 111, 0, 0, 65, 214, 255, 0, 214, 29, 112, 255, 1, 225, 255, 254, 191, 0, 32, 235, 223, 8, 0 }; -/* t */ static const uint8_t Font_TTHoves_Bold_17_glyph_116[] = { 7, 12, 7, 0, 12, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 6, 0, 247, 255, 255, 5, 247, 255, 255, 5, 115, 255, 106, 2, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 91, 2, 0, 255, 255, 5, 0, 213, 255, 5 }; -/* u */ static const uint8_t Font_TTHoves_Bold_17_glyph_117[] = { 9, 9, 10, 1, 9, 255, 8, 48, 255, 5, 255, 8, 48, 255, 5, 255, 8, 48, 255, 5, 255, 8, 48, 255, 5, 255, 9, 48, 255, 5, 255, 12, 96, 255, 5, 252, 191, 249, 255, 5, 245, 255, 255, 255, 5, 80, 253, 109, 255, 5 }; -/* v */ static const uint8_t Font_TTHoves_Bold_17_glyph_118[] = { 10, 9, 9, 0, 9, 252, 13, 0, 248, 31, 247, 47, 0, 253, 12, 241, 127, 32, 255, 7, 192, 207, 96, 255, 2, 112, 255, 177, 207, 0, 32, 255, 247, 127, 0, 0, 253, 255, 47, 0, 0, 248, 255, 13, 0, 0, 243, 255, 8, 0 }; -/* w */ static const uint8_t Font_TTHoves_Bold_17_glyph_119[] = { 14, 9, 14, 0, 9, 251, 14, 128, 255, 4, 242, 127, 247, 47, 192, 255, 8, 246, 63, 243, 95, 240, 255, 12, 250, 15, 240, 159, 244, 255, 15, 253, 11, 176, 223, 248, 217, 95, 255, 7, 112, 255, 255, 149, 255, 255, 3, 48, 255, 255, 81, 255, 255, 0, 0, 255, 223, 16, 255, 191, 0, 0, 251, 175, 0, 254, 127, 0 }; -/* x */ static const uint8_t Font_TTHoves_Bold_17_glyph_120[] = { 11, 9, 10, 0, 9, 160, 255, 2, 242, 175, 0, 16, 255, 9, 249, 31, 0, 0, 247, 63, 255, 7, 0, 0, 224, 255, 239, 0, 0, 0, 96, 255, 111, 0, 0, 0, 176, 255, 191, 0, 0, 0, 246, 143, 255, 6, 0, 32, 255, 10, 250, 47, 0, 176, 239, 1, 225, 191, 0 }; -/* y */ static const uint8_t Font_TTHoves_Bold_17_glyph_121[] = { 11, 13, 10, 0, 9, 224, 207, 0, 112, 255, 4, 144, 255, 2, 176, 239, 0, 48, 255, 7, 240, 159, 0, 0, 253, 13, 244, 79, 0, 0, 248, 47, 249, 14, 0, 0, 242, 143, 253, 10, 0, 0, 208, 255, 255, 4, 0, 0, 112, 255, 255, 0, 0, 0, 32, 255, 175, 0, 0, 0, 0, 252, 95, 0, 0, 0, 101, 253, 15, 0, 0, 0, 255, 255, 9, 0, 0, 0, 255, 174, 1, 0, 0 }; -/* z */ static const uint8_t Font_TTHoves_Bold_17_glyph_122[] = { 8, 9, 9, 0, 9, 245, 255, 255, 239, 245, 255, 255, 239, 98, 102, 254, 175, 0, 144, 255, 12, 0, 247, 223, 1, 80, 255, 46, 0, 243, 255, 89, 85, 246, 255, 255, 255, 246, 255, 255, 255 }; /* { */ static const uint8_t Font_TTHoves_Bold_17_glyph_123[] = { 7, 17, 7, 0, 13, 0, 16, 67, 0, 0, 245, 255, 1, 0, 254, 255, 1, 16, 255, 10, 0, 32, 255, 6, 0, 32, 255, 6, 0, 48, 255, 6, 0, 211, 255, 3, 0, 245, 110, 0, 0, 245, 175, 0, 0, 177, 255, 4, 0, 32, 255, 6, 0, 32, 255, 6, 0, 32, 255, 6, 0, 16, 255, 76, 0, 0, 253, 255, 1, 0, 178, 255, 1 }; /* | */ static const uint8_t Font_TTHoves_Bold_17_glyph_124[] = { 3, 16, 7, 2, 12, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9, 255, 9 }; /* } */ static const uint8_t Font_TTHoves_Bold_17_glyph_125[] = { 7, 17, 7, 0, 13, 65, 3, 0, 0, 246, 223, 1, 0, 246, 255, 10, 0, 16, 254, 13, 0, 0, 251, 13, 0, 0, 251, 13, 0, 0, 251, 14, 0, 0, 248, 207, 0, 0, 128, 255, 0, 0, 210, 255, 0, 0, 249, 127, 0, 0, 251, 14, 0, 0, 251, 13, 0, 0, 251, 13, 0, 81, 255, 12, 0, 246, 255, 8, 0, 246, 158, 0, 0 }; /* ~ */ static const uint8_t Font_TTHoves_Bold_17_glyph_126[] = { 10, 4, 10, 0, 7, 0, 98, 2, 0, 0, 128, 255, 159, 246, 143, 242, 255, 255, 255, 79, 245, 63, 180, 239, 7 }; -/* ? */ const uint8_t Font_TTHoves_Bold_17_glyph_nonprintable[] = { 9, 12, 9, 0, 12, 255, 40, 32, 230, 255, 63, 0, 0, 16, 254, 10, 32, 39, 0, 248, 90, 213, 207, 0, 246, 255, 255, 95, 0, 249, 255, 223, 2, 96, 255, 255, 95, 0, 250, 255, 255, 47, 64, 255, 255, 255, 239, 238, 255, 255, 255, 63, 99, 255, 255, 255, 15, 48, 255, 255, 255, 15, 48, 255, 255 }; +/* ? */ const uint8_t Font_TTHoves_Bold_17_upper_glyph_nonprintable[] = { 9, 12, 9, 0, 12, 255, 40, 32, 230, 255, 63, 0, 0, 16, 254, 10, 32, 39, 0, 248, 90, 213, 207, 0, 246, 255, 255, 95, 0, 249, 255, 223, 2, 96, 255, 255, 95, 0, 250, 255, 255, 47, 64, 255, 255, 255, 239, 238, 255, 255, 255, 63, 99, 255, 255, 255, 15, 48, 255, 255, 255, 15, 48, 255, 255 }; -const uint8_t * const Font_TTHoves_Bold_17[126 + 1 - 32] = { +const uint8_t * const Font_TTHoves_Bold_17_upper[126 + 1 - 32] = { Font_TTHoves_Bold_17_glyph_32, Font_TTHoves_Bold_17_glyph_33, Font_TTHoves_Bold_17_glyph_34, @@ -170,32 +146,32 @@ const uint8_t * const Font_TTHoves_Bold_17[126 + 1 - 32] = { Font_TTHoves_Bold_17_glyph_94, Font_TTHoves_Bold_17_glyph_95, Font_TTHoves_Bold_17_glyph_96, - Font_TTHoves_Bold_17_glyph_97, - Font_TTHoves_Bold_17_glyph_98, - Font_TTHoves_Bold_17_glyph_99, - Font_TTHoves_Bold_17_glyph_100, - Font_TTHoves_Bold_17_glyph_101, - Font_TTHoves_Bold_17_glyph_102, - Font_TTHoves_Bold_17_glyph_103, - Font_TTHoves_Bold_17_glyph_104, - Font_TTHoves_Bold_17_glyph_105, - Font_TTHoves_Bold_17_glyph_106, - Font_TTHoves_Bold_17_glyph_107, - Font_TTHoves_Bold_17_glyph_108, - Font_TTHoves_Bold_17_glyph_109, - Font_TTHoves_Bold_17_glyph_110, - Font_TTHoves_Bold_17_glyph_111, - Font_TTHoves_Bold_17_glyph_112, - Font_TTHoves_Bold_17_glyph_113, - Font_TTHoves_Bold_17_glyph_114, - Font_TTHoves_Bold_17_glyph_115, - Font_TTHoves_Bold_17_glyph_116, - Font_TTHoves_Bold_17_glyph_117, - Font_TTHoves_Bold_17_glyph_118, - Font_TTHoves_Bold_17_glyph_119, - Font_TTHoves_Bold_17_glyph_120, - Font_TTHoves_Bold_17_glyph_121, - Font_TTHoves_Bold_17_glyph_122, + Font_TTHoves_Bold_17_glyph_65, // a -> A + Font_TTHoves_Bold_17_glyph_66, // b -> B + Font_TTHoves_Bold_17_glyph_67, // c -> C + Font_TTHoves_Bold_17_glyph_68, // d -> D + Font_TTHoves_Bold_17_glyph_69, // e -> E + Font_TTHoves_Bold_17_glyph_70, // f -> F + Font_TTHoves_Bold_17_glyph_71, // g -> G + Font_TTHoves_Bold_17_glyph_72, // h -> H + Font_TTHoves_Bold_17_glyph_73, // i -> I + Font_TTHoves_Bold_17_glyph_74, // j -> J + Font_TTHoves_Bold_17_glyph_75, // k -> K + Font_TTHoves_Bold_17_glyph_76, // l -> L + Font_TTHoves_Bold_17_glyph_77, // m -> M + Font_TTHoves_Bold_17_glyph_78, // n -> N + Font_TTHoves_Bold_17_glyph_79, // o -> O + Font_TTHoves_Bold_17_glyph_80, // p -> P + Font_TTHoves_Bold_17_glyph_81, // q -> Q + Font_TTHoves_Bold_17_glyph_82, // r -> R + Font_TTHoves_Bold_17_glyph_83, // s -> S + Font_TTHoves_Bold_17_glyph_84, // t -> T + Font_TTHoves_Bold_17_glyph_85, // u -> U + Font_TTHoves_Bold_17_glyph_86, // v -> V + Font_TTHoves_Bold_17_glyph_87, // w -> W + Font_TTHoves_Bold_17_glyph_88, // x -> X + Font_TTHoves_Bold_17_glyph_89, // y -> Y + Font_TTHoves_Bold_17_glyph_90, // z -> Z Font_TTHoves_Bold_17_glyph_123, Font_TTHoves_Bold_17_glyph_124, Font_TTHoves_Bold_17_glyph_125, diff --git a/core/embed/lib/fonts/font_tthoves_bold_17.h b/core/embed/lib/fonts/font_tthoves_bold_17.h index e415b9378b..94ecd370d7 100644 --- a/core/embed/lib/fonts/font_tthoves_bold_17.h +++ b/core/embed/lib/fonts/font_tthoves_bold_17.h @@ -1,10 +1,12 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 4 #error Wrong TREZOR_FONT_BPP (expected 4) #endif -#define Font_TTHoves_Bold_17_HEIGHT 17 -#define Font_TTHoves_Bold_17_MAX_HEIGHT 18 -#define Font_TTHoves_Bold_17_BASELINE 4 -extern const uint8_t* const Font_TTHoves_Bold_17[126 + 1 - 32]; -extern const uint8_t Font_TTHoves_Bold_17_glyph_nonprintable[]; +#define Font_TTHoves_Bold_17_upper_HEIGHT 17 +#define Font_TTHoves_Bold_17_upper_MAX_HEIGHT 18 +#define Font_TTHoves_Bold_17_upper_BASELINE 4 +extern const uint8_t* const Font_TTHoves_Bold_17_upper[126 + 1 - 32]; +extern const uint8_t Font_TTHoves_Bold_17_upper_glyph_nonprintable[]; diff --git a/core/embed/lib/fonts/font_tthoves_demibold_21.c b/core/embed/lib/fonts/font_tthoves_demibold_21.c index 4014a6fb5a..de02f2ba80 100644 --- a/core/embed/lib/fonts/font_tthoves_demibold_21.c +++ b/core/embed/lib/fonts/font_tthoves_demibold_21.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off diff --git a/core/embed/lib/fonts/font_tthoves_demibold_21.h b/core/embed/lib/fonts/font_tthoves_demibold_21.h index 2cc9ab3ca7..bcaf664609 100644 --- a/core/embed/lib/fonts/font_tthoves_demibold_21.h +++ b/core/embed/lib/fonts/font_tthoves_demibold_21.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 4 diff --git a/core/embed/lib/fonts/font_tthoves_regular_21.c b/core/embed/lib/fonts/font_tthoves_regular_21.c index aceee17872..2db8aae33c 100644 --- a/core/embed/lib/fonts/font_tthoves_regular_21.c +++ b/core/embed/lib/fonts/font_tthoves_regular_21.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off diff --git a/core/embed/lib/fonts/font_tthoves_regular_21.h b/core/embed/lib/fonts/font_tthoves_regular_21.h index 7d1eafe2fb..82e48105fe 100644 --- a/core/embed/lib/fonts/font_tthoves_regular_21.h +++ b/core/embed/lib/fonts/font_tthoves_regular_21.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include #if TREZOR_FONT_BPP != 4 diff --git a/core/embed/lib/fonts/font_unifont_bold_16.c b/core/embed/lib/fonts/font_unifont_bold_16.c index 975620b90d..666d0049dd 100644 --- a/core/embed/lib/fonts/font_unifont_bold_16.c +++ b/core/embed/lib/fonts/font_unifont_bold_16.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include // clang-format off diff --git a/core/site_scons/tools.py b/core/site_scons/tools.py index 0da77e3a68..e069c20e5b 100644 --- a/core/site_scons/tools.py +++ b/core/site_scons/tools.py @@ -27,11 +27,12 @@ def add_font( font_name: str, font: str | None, defines: list[str], sources: list[str] ) -> None: if font is not None: + font_filename = font.replace("_upper", "").lower() defines += [ "TREZOR_FONT_" + font_name + "_ENABLE=" + font, - "TREZOR_FONT_" + font_name + '_INCLUDE=\\"' + font.lower() + '.h\\"', + "TREZOR_FONT_" + font_name + '_INCLUDE=\\"' + font_filename + '.h\\"', ] - sourcefile = "embed/lib/fonts/" + font.lower() + ".c" + sourcefile = "embed/lib/fonts/" + font_filename + ".c" if sourcefile not in sources: sources.append(sourcefile) diff --git a/core/tools/codegen/gen_font.py b/core/tools/codegen/gen_font.py index a604bbb0ae..0c3660008b 100755 --- a/core/tools/codegen/gen_font.py +++ b/core/tools/codegen/gen_font.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# script used to generate /embed/extmod/modtrezorui/font_*_*.c +# script used to generate core/embed/lib/fonts/font_*_*.c from __future__ import annotations @@ -167,12 +167,12 @@ def from_face( advance += -bearingX bearingX = 0 else: - raise ValueError("Negative bearingX for character '%s'" % c) + raise ValueError(f"Negative bearingX for character '{c}'") bearingY = metrics.horiBearingY // 64 assert advance >= 0 and advance <= 255 assert bearingX >= 0 and bearingX <= 255 if bearingY < 0: # HACK - print("normalizing bearingY %d for '%s'" % (bearingY, c)) + print(f"normalizing bearingY {bearingY} for '{c}'") bearingY = 0 assert bearingY >= 0 and bearingY <= 255 buf = list(bitmap.buffer) @@ -184,9 +184,7 @@ def from_face( width -= remove_left assert advance > remove_left advance -= remove_left - print( - 'Glyph "%c": removed %d pixel columns from the left' % (c, remove_left) - ) + print(f'Glyph "{c}": removed {remove_left} pixel columns from the left') return Glyph( char=c, @@ -202,17 +200,7 @@ def from_face( def print_metrics(self) -> None: print( - 'Loaded glyph "%c" ... %d x %d @ %d grays (%d bytes, metrics: %d, %d, %d)' - % ( - self.char, - self.width, - self.rows, - self.num_grays, - len(self.buf), - self.advance, - self.bearingX, - self.bearingY, - ) + f'Loaded glyph "{self.char}" ... {self.width} x {self.rows} @ {self.num_grays} grays ({len(self.buf)} bytes, metrics: {self.advance}, {self.bearingX}, {self.bearingY})' ) def process_byte(self, b: int) -> int: @@ -222,7 +210,11 @@ def process_byte(self, b: int) -> int: return b def get_definition_line( - self, name_style_size: str, bpp: int, i: int | str, static: bool = True + self, + name_style_size: str, + bpp: int, + i: int | str, + static: bool = True, ) -> str: numbers = ", ".join(str(n) for n in self.to_bytes(bpp)) comment = f"/* {self.char} */" @@ -260,17 +252,25 @@ def __init__( bpp: int = 4, shaveX: int = 0, ext: str = "ttf", + gen_normal: bool = True, # generate font with all the letters + gen_upper: bool = False, # generate font with only upper-cased letters ): - print("Processing ... %s %s %s" % (name, style, size)) + if gen_normal is False and gen_upper is False: + raise ValueError( + "At least one must be selected from normal glyphs or only uppercased glyphs." + ) + print(f"Processing ... {name} {style} {size}") self.name = name self.style = style self.size = size self.bpp = bpp self.shaveX = shaveX self.ext = ext + self.gen_normal = gen_normal + self.gen_upper = gen_upper self.face = freetype.Face(str(FONTS_DIR / f"{name}-{style}.{ext}")) self.face.set_pixel_sizes(0, size) # type: ignore - self.fontname = "%s_%s_%d" % (name.lower(), style.lower(), size) + self.fontname = f"{name.lower()}_{style.lower()}_{size}" self.font_ymin = 0 self.font_ymax = 0 @@ -288,7 +288,10 @@ def _h_file_name(self) -> Path: def write_files(self) -> None: self.write_c_files() - self.write_foreign_json() + if self.gen_normal: + self.write_foreign_json(upper_cased=False) + if self.gen_upper: + self.write_foreign_json(upper_cased=True) if WRITE_WIDTHS: self.write_char_widths_files() @@ -296,17 +299,25 @@ def write_c_files(self) -> None: self._write_c_file() self._write_h_file() - def write_foreign_json(self) -> None: + def write_foreign_json(self, upper_cased=False) -> None: for lang, language_chars in all_languages.items(): fontdata = {} for item in language_chars: c = _normalize(item) + map_from = c + if c.islower() and upper_cased and c != "ß": + # FIXME not sure how to properly handle the german "ß" + c = c.upper() assert len(c) == 1 + assert len(map_from) == 1 self._load_char(c) glyph = Glyph.from_face(self.face, c, self.shaveX) glyph.print_metrics() - fontdata[c] = glyph.to_bytes(self.bpp).hex() - file = JSON_FONTS_DEST / f"font_{self.fontname}_{lang}.json" + fontdata[map_from] = glyph.to_bytes(self.bpp).hex() + file = ( + JSON_FONTS_DEST + / f"font_{self.fontname}{'_upper' if upper_cased else ''}_{lang}.json" + ) json_content = json.dumps(fontdata, indent=2, ensure_ascii=False) file.write_text(json_content + "\n") @@ -317,6 +328,8 @@ def write_char_widths_files(self) -> None: # "normal" ASCII characters for i in range(MIN_GLYPH, MAX_GLYPH + 1): c = chr(i) + if c.islower() and not self.gen_normal: + c = c.upper() chars.add(c) # foreign language data for _lang, lang_chars in all_languages.items(): @@ -341,23 +354,45 @@ def _write_c_file(self) -> None: def _write_c_file_content(self, f: TextIO) -> None: # Write "normal" ASCII characters for i in range(MIN_GLYPH, MAX_GLYPH + 1): - c = chr(i) - self._write_char_definition(f, c, i) - - # Write non-printable character - f.write("\n") - nonprintable = self._get_nonprintable_definition_line() - f.write(nonprintable) + if chr(i).islower() and not self.gen_normal: + continue + self._write_char_definition(f, chr(i), i) + + # Write nonprintable glyph + if self.gen_normal: + f.write("\n") + nonprintable = self._get_nonprintable_definition_line() + f.write(nonprintable) + if self.gen_upper: + f.write("\n") + nonprintable = self._get_nonprintable_definition_line(upper=True) + f.write(nonprintable) # Write array of all glyphs - f.write("\n") - f.write( - "const uint8_t * const Font_%s[%d + 1 - %d] = {\n" - % (self._name_style_size, MAX_GLYPH, MIN_GLYPH) - ) - for i in range(MIN_GLYPH, MAX_GLYPH + 1): - f.write(" Font_%s_glyph_%d,\n" % (self._name_style_size, i)) - f.write("};\n") + if self.gen_normal: + f.write("\n") + f.write( + f"const uint8_t * const Font_{self._name_style_size}[{MAX_GLYPH} + 1 - {MIN_GLYPH}] = {{\n" + ) + for i in range(MIN_GLYPH, MAX_GLYPH + 1): + f.write(f" Font_{self._name_style_size}_glyph_{i},\n") + f.write("};\n") + + # Write array of all glyphs for _upper version + if self.gen_upper: + f.write("\n") + f.write( + f"const uint8_t * const Font_{self._name_style_size}_upper[{MAX_GLYPH} + 1 - {MIN_GLYPH}] = {{\n" + ) + for i in range(MIN_GLYPH, MAX_GLYPH + 1): + comment = "" + if chr(i).islower(): + c_from = chr(i) + c_to = c_from.upper() + i = ord(c_to) + comment = f" // {c_from} -> {c_to}" + f.write(f" Font_{self._name_style_size}_glyph_{i},{comment}\n") + f.write("};\n") def _write_char_definition(self, f: TextIO, c: str, i: int) -> None: self._load_char(c) @@ -373,49 +408,68 @@ def _write_char_definition(self, f: TextIO, c: str, i: int) -> None: self.font_ymax = max(self.font_ymax, yMax) def _write_c_file_header(self, f: TextIO) -> None: + f.write("// This file is generated by core/tools/codegen/gen_font.py\n\n") f.write("#include \n\n") f.write("// clang-format off\n\n") f.write("// - the first two bytes are width and height of the glyph\n") f.write( "// - the third, fourth and fifth bytes are advance, bearingX and bearingY of the horizontal metrics of the glyph\n" ) - f.write("// - the rest is packed %d-bit glyph data\n\n" % self.bpp) + f.write(f"// - the rest is packed {self.bpp}-bit glyph data\n\n") - def _get_nonprintable_definition_line(self) -> str: + def _get_nonprintable_definition_line(self, upper: bool = False) -> str: c = "?" self._load_char(c) glyph = Glyph.from_face(self.face, c, self.shaveX, inverse_colors=True) - return glyph.get_definition_line( - self._name_style_size, self.bpp, "nonprintable", static=False - ) + if upper: + return glyph.get_definition_line( + f"{self._name_style_size}_upper", self.bpp, "nonprintable", static=False + ) + else: + return glyph.get_definition_line( + self._name_style_size, self.bpp, "nonprintable", static=False + ) def _load_char(self, c: str) -> None: self.face.load_char(c, freetype.FT_LOAD_RENDER | freetype.FT_LOAD_TARGET_NORMAL) # type: ignore def _write_h_file(self) -> None: with open(OUT_DIR / self._h_file_name, "wt") as f: + f.write("// This file is generated by core/tools/codegen/gen_font.py\n\n") f.write("#include \n\n") - f.write("#if TREZOR_FONT_BPP != %d\n" % self.bpp) - f.write("#error Wrong TREZOR_FONT_BPP (expected %d)\n" % self.bpp) + f.write(f"#if TREZOR_FONT_BPP != {self.bpp}\n") + f.write(f"#error Wrong TREZOR_FONT_BPP (expected {self.bpp})\n") f.write("#endif\n") - - f.write("#define Font_%s_HEIGHT %d\n" % (self._name_style_size, self.size)) - f.write( - "#define Font_%s_MAX_HEIGHT %d\n" - % (self._name_style_size, self.font_ymax - self.font_ymin) - ) - f.write( - "#define Font_%s_BASELINE %d\n" - % (self._name_style_size, -self.font_ymin) - ) - f.write( - "extern const uint8_t* const Font_%s[%d + 1 - %d];\n" - % (self._name_style_size, MAX_GLYPH, MIN_GLYPH) - ) - f.write( - "extern const uint8_t Font_%s_glyph_nonprintable[];\n" - % (self._name_style_size) - ) + if self.gen_normal: + f.write(f"#define Font_{self._name_style_size}_HEIGHT {self.size}\n") + f.write( + f"#define Font_{self._name_style_size}_MAX_HEIGHT {self.font_ymax - self.font_ymin}\n" + ) + f.write( + f"#define Font_{self._name_style_size}_BASELINE {-self.font_ymin}\n" + ) + f.write( + f"extern const uint8_t* const Font_{self._name_style_size}[{MAX_GLYPH} + 1 - {MIN_GLYPH}];\n" + ) + f.write( + f"extern const uint8_t Font_{self._name_style_size}_glyph_nonprintable[];\n" + ) + if self.gen_upper: + f.write( + f"#define Font_{self._name_style_size}_upper_HEIGHT {self.size}\n" + ) + f.write( + f"#define Font_{self._name_style_size}_upper_MAX_HEIGHT {self.font_ymax - self.font_ymin}\n" + ) + f.write( + f"#define Font_{self._name_style_size}_upper_BASELINE {-self.font_ymin}\n" + ) + f.write( + f"extern const uint8_t* const Font_{self._name_style_size}_upper[{MAX_GLYPH} + 1 - {MIN_GLYPH}];\n" + ) + f.write( + f"extern const uint8_t Font_{self._name_style_size}_upper_glyph_nonprintable[];\n" + ) if __name__ == "__main__": @@ -427,12 +481,29 @@ def _write_h_file(self) -> None: FaceProcessor("TTHoves", "Regular", 21, ext="otf").write_files() FaceProcessor("TTHoves", "DemiBold", 21, ext="otf").write_files() - FaceProcessor("TTHoves", "Bold", 17, ext="otf").write_files() + FaceProcessor( + "TTHoves", "Bold", 17, ext="otf", gen_normal=False, gen_upper=True + ).write_files() FaceProcessor("RobotoMono", "Medium", 20).write_files() - FaceProcessor("PixelOperator", "Regular", 8, bpp=1, shaveX=1).write_files() - - FaceProcessor("PixelOperator", "Bold", 8, bpp=1, shaveX=1).write_files() + FaceProcessor( + "PixelOperator", + "Regular", + 8, + bpp=1, + shaveX=1, + gen_normal=True, + gen_upper=True, + ).write_files() + FaceProcessor( + "PixelOperator", + "Bold", + 8, + bpp=1, + shaveX=1, + gen_normal=True, + gen_upper=True, + ).write_files() FaceProcessor("PixelOperatorMono", "Regular", 8, bpp=1, shaveX=1).write_files() # For model R diff --git a/core/translations/fonts/font_pixeloperator_bold_8_upper_cs.json b/core/translations/fonts/font_pixeloperator_bold_8_upper_cs.json new file mode 100644 index 0000000000..6f57045bc3 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_upper_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "060707000718c7b3cffcc0", + "Č": "0607070007cde7b3c33780", + "Ď": "0607070007cdefb3cf3f80", + "É": "060707000718cff0f30fc0", + "Ě": "0607070007cdeff0f30fc0", + "Í": "0307050107786db0", + "Ň": "0607070007cdecfbff7cc0", + "Ó": "060707000718c7b3cf3780", + "Ř": "0607070007cdefb3cfecc0", + "Š": "0607070007cde7b0783f80", + "Ť": "0607070007cdefcc30c300", + "Ú": "060707000718ccf3cf3780", + "Ů": "06070700077b3780cf3780", + "Ý": "060707000718ccf378c300", + "Ž": "0607070007cdefc6318fc0", + "á": "060707000718c7b3cffcc0", + "č": "0607070007cde7b3c33780", + "ď": "0607070007cdefb3cf3f80", + "é": "060707000718cff0f30fc0", + "ě": "0607070007cdeff0f30fc0", + "í": "0307050107786db0", + "ň": "0607070007cdecfbff7cc0", + "ó": "060707000718c7b3cf3780", + "ř": "0607070007cdefb3cfecc0", + "š": "0607070007cde7b0783f80", + "ť": "0607070007cdefcc30c300", + "ú": "060707000718ccf3cf3780", + "ů": "06070700077b3780cf3780", + "ý": "060707000718ccf378c300", + "ž": "0607070007cdefc6318fc0" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_upper_de.json b/core/translations/fonts/font_pixeloperator_bold_8_upper_de.json new file mode 100644 index 0000000000..3f801ff000 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_upper_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0607070007cc07b3cffcc0", + "Ö": "0607070007cc07b3cf3780", + "Ü": "0607070007cc0cf3cf3780", + "ß": "06070700077b3cf6cf3d80", + "ä": "0607070007cc07b3cffcc0", + "ö": "0607070007cc07b3cf3780", + "ü": "0607070007cc0cf3cf3780" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_upper_es.json b/core/translations/fonts/font_pixeloperator_bold_8_upper_es.json new file mode 100644 index 0000000000..acf4ba958a --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_upper_es.json @@ -0,0 +1,17 @@ +{ + "Á": "060707000718c7b3cffcc0", + "É": "060707000718cff0f30fc0", + "Í": "0307050107786db0", + "Ñ": "070707000777bb376fdbb300", + "Ó": "060707000718c7b3cf3780", + "Ú": "060707000718ccf3cf3780", + "Ü": "0607070007cc0cf3cf3780", + "á": "060707000718c7b3cffcc0", + "é": "060707000718cff0f30fc0", + "í": "0307050107786db0", + "ñ": "070707000777bb376fdbb300", + "ó": "060707000718c7b3cf3780", + "ú": "060707000718ccf3cf3780", + "ü": "0607070007cc0cf3cf3780", + "¿": "0607070006300318c33780" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_upper_fr.json b/core/translations/fonts/font_pixeloperator_bold_8_upper_fr.json new file mode 100644 index 0000000000..023e938545 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_upper_fr.json @@ -0,0 +1,34 @@ +{ + "À": "060707000760c7b3cffcc0", + "Â": "0707070007fd0de66cdfb300", + "Æ": "0a070b00077ff30cc33cfc330cfc", + "Ç": "06080700077b3c30cde19c00", + "È": "060707000760cff0f30fc0", + "É": "060707000718cff0f30fc0", + "Ê": "06070700077b3ff0f30fc0", + "Ë": "0607070007cc0ff0f30fc0", + "Î": "0507050007f4d8c63180", + "Ï": "05070500079818c63180", + "Ô": "0707070007fd0de66cd99e00", + "Ù": "060707000760ccf3cf3780", + "Û": "06070700077b3033cf3780", + "Ü": "0607070007cc0cf3cf3780", + "Ÿ": "0607070007cc0cf378c300", + "Œ": "0a070b00077ff30cc33ccc3307fc", + "à": "060707000760c7b3cffcc0", + "â": "0707070007fd0de66cdfb300", + "æ": "0a070b00077ff30cc33cfc330cfc", + "ç": "06080700077b3c30cde19c00", + "è": "060707000760cff0f30fc0", + "é": "060707000718cff0f30fc0", + "ê": "06070700077b3ff0f30fc0", + "ë": "0607070007cc0ff0f30fc0", + "î": "0507050007f4d8c63180", + "ï": "05070500079818c63180", + "ô": "0707070007fd0de66cd99e00", + "ù": "060707000760ccf3cf3780", + "û": "06070700077b3033cf3780", + "ü": "0607070007cc0cf3cf3780", + "ÿ": "0607070007cc0cf378c300", + "œ": "0a070b00077ff30cc33ccc3307fc" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_upper_cs.json b/core/translations/fonts/font_pixeloperator_regular_8_upper_cs.json new file mode 100644 index 0000000000..373d3e813f --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_upper_cs.json @@ -0,0 +1,32 @@ +{ + "Á": "0507060007111d18fe20", + "Č": "0507060007511d1845c0", + "Ď": "0507060007513d18c7c0", + "É": "0507060007113f0e43e0", + "Ě": "0507060007513f0e43e0", + "Í": "020704010762a8", + "Ň": "050706000751239ace20", + "Ó": "0507060007111d18c5c0", + "Ř": "0507060007513d18fa20", + "Š": "0507060007511d0707c0", + "Ť": "0507060007513e421080", + "Ú": "0507060007112318c5c0", + "Ů": "0507060007228918c5c0", + "Ý": "05070600071123151080", + "Ž": "0507060007513e2223e0", + "á": "0507060007111d18fe20", + "č": "0507060007511d1845c0", + "ď": "0507060007513d18c7c0", + "é": "0507060007113f0e43e0", + "ě": "0507060007513f0e43e0", + "í": "020704010762a8", + "ň": "050706000751239ace20", + "ó": "0507060007111d18c5c0", + "ř": "0507060007513d18fa20", + "š": "0507060007511d0707c0", + "ť": "0507060007513e421080", + "ú": "0507060007112318c5c0", + "ů": "0507060007228918c5c0", + "ý": "05070600071123151080", + "ž": "0507060007513e2223e0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_upper_de.json b/core/translations/fonts/font_pixeloperator_regular_8_upper_de.json new file mode 100644 index 0000000000..c46e747a25 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_upper_de.json @@ -0,0 +1,9 @@ +{ + "Ä": "0507060007501d18fe20", + "Ö": "0507060007501d18c5c0", + "Ü": "0507060007502318c5c0", + "ß": "0507060007746368c6c0", + "ä": "0507060007501d18fe20", + "ö": "0507060007501d18c5c0", + "ü": "0507060007502318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_upper_es.json b/core/translations/fonts/font_pixeloperator_regular_8_upper_es.json new file mode 100644 index 0000000000..431ec16706 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_upper_es.json @@ -0,0 +1,17 @@ +{ + "Á": "0507060007111d18fe20", + "É": "0507060007113f0e43e0", + "Í": "020704010762a8", + "Ñ": "06070600076668b2aa6880", + "Ó": "0507060007111d18c5c0", + "Ú": "0507060007112318c5c0", + "Ü": "0507060007502318c5c0", + "á": "0507060007111d18fe20", + "é": "0507060007113f0e43e0", + "í": "020704010762a8", + "ñ": "06070600076668b2aa6880", + "ó": "0507060007111d18c5c0", + "ú": "0507060007112318c5c0", + "ü": "0507060007502318c5c0", + "¿": "050706000620088845c0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_upper_fr.json b/core/translations/fonts/font_pixeloperator_regular_8_upper_fr.json new file mode 100644 index 0000000000..58418218c2 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_upper_fr.json @@ -0,0 +1,34 @@ +{ + "À": "0507060007411d18fe20", + "Â": "0507060007229d18fe20", + "Æ": "09070a00077fc42211cf84423e", + "Ç": "0508060007746108b84c00", + "È": "0507060007413f0e43e0", + "É": "0507060007113f0e43e0", + "Ê": "050706000722bf0e43e0", + "Ë": "0507060007503f0e43e0", + "Î": "0307040007542490", + "Ï": "0307040007a12490", + "Ô": "0507060007229d18c5c0", + "Ù": "0507060007412318c5c0", + "Û": "0507060007228118c5c0", + "Ü": "0507060007502318c5c0", + "Ÿ": "05070600075023151080", + "Œ": "09070a00077fc42211c88441fe", + "à": "0507060007411d18fe20", + "â": "0507060007229d18fe20", + "æ": "09070a00077fc42211cf84423e", + "ç": "0508060007746108b84c00", + "è": "0507060007413f0e43e0", + "é": "0507060007113f0e43e0", + "ê": "050706000722bf0e43e0", + "ë": "0507060007503f0e43e0", + "î": "0307040007542490", + "ï": "0307040007a12490", + "ô": "0507060007229d18c5c0", + "ù": "0507060007412318c5c0", + "û": "0507060007228118c5c0", + "ü": "0507060007502318c5c0", + "ÿ": "05070600075023151080", + "œ": "09070a00077fc42211c88441fe" +} diff --git a/core/translations/fonts/font_tthoves_bold_17_cs.json b/core/translations/fonts/font_tthoves_bold_17_upper_cs.json similarity index 50% rename from core/translations/fonts/font_tthoves_bold_17_cs.json rename to core/translations/fonts/font_tthoves_bold_17_upper_cs.json index 6f1437b5b3..75460deca5 100644 --- a/core/translations/fonts/font_tthoves_bold_17_cs.json +++ b/core/translations/fonts/font_tthoves_bold_17_upper_cs.json @@ -14,19 +14,19 @@ "Ů": "0b110c01110000100000000050fe08000000b07a0e00000050ff080000000010000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", "Ý": "0d100c001000000070270000000000f90c0000000040df01000000000000000000e1ff0100f2df0070ff0800fa5f0000fe1f20ff0c0000f68fa0ff040000e0fff3cf00000060ffff3f00000000fdff0b00000000f5ff0300000000e0df0000000000e0cf0000000000e0cf0000000000e0cf000000", "Ž": "0a100b0010007503760100f2bf9f000040ff0c000000000000f3ffffffcff3ffffffcfa2aaaaffaf000090ff1e0000f5ff030020ff6f0000d1ff090000fbcf000080ff1e0000f3ff9c9989f5ffffffdff5ffffffdf", - "á": "090d0a000d00004067000000f24f000000fc0700000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", - "č": "0a0d0a000d007611670000f5dd5f000080ff0800000000000000b2fe4c0040ffffff06e0ff78fe1ff36f009339f52f000000f36f008338e0ff78fe1f40ffffff0600b3fe4c00", - "ď": "0e0c0d000c000000f09ff31f000000f09ff70a000000f09fea0400b3eef79f000050ffffff9f0000e0ff78fe9f0000f36f00f39f0000f52f00f09f0000f36f00f39f0000e0ff78fe9f000050ffffff9f000000b3efb79f0000", - "é": "0a0d0a000d00003067000000e15f000000fa0800000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", - "ě": "0a0d0a000d007611670000f5dd5f000080ff0800000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", - "í": "050d05010d70ef01f23f00740400000000ff0800ff0800ff0800ff0800ff0800ff0800ff0800ff0800ff0800", - "ň": "090d0a010d503770170030effb080000f5bf00000000000000ffb7ef0800ffffffaf00ffbff9ff02ff0c70ff04ff0930ff05ff0830ff05ff0830ff05ff0830ff05ff0830ff05", - "ó": "0a0d0a000d00003077000000e07f000000f90900000000000000b2ee4b0040ffffff07e0ff78fe2ff36f00f36ff52f00f08ff36f00f36fe0ff78fe2f40ffffff0700b3ee4b00", - "ř": "080d07000db07ff80b10fddf000072270000000000f0affd09f0ffff09f0ff6903f0bf0000f08f0000f08f0000f08f0000f08f0000f08f0000", - "š": "090d09000d503760170020fffb090000f4bf0000000000000030eadf0600f2ffff8f00f63f80bb00f5cf58010090ffff6f000041d6ff00d61d70ff01e1fffebf0020ebdf0800", - "ť": "0a0d09000d000000d40d20ff06f80a20ff06fc0420ff060000f7ffff0500f7ffff050073ff6a020020ff06000020ff06000020ff06000020ff5b020000ffff050000d5ff0500", - "ú": "090d0a010d0000fa0c000040ef010000502700000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", - "ů": "090e0a010e000001000000e49f000000baf6000000e49f00000000010000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", - "ý": "0b110a000d000020ff05000000c07f0000000072060000000000000000e0cf0070ff0490ff02b0ef0030ff07f09f0000fd0df44f0000f82ff90e0000f28ffd0a0000d0ffff04000070ffff00000020ffaf00000000fc5f00000065fd0f000000ffff09000000ffae010000", - "ž": "080d09000d60cff32e00f9ff040070470000000000f5ffffeff5ffffef6266feaf0090ff0c00f7df0150ff2e00f3ff5955f6fffffff6ffffff" + "á": "0d100d001000000040670000000000f24f0000000000fb070000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "č": "0c100c00100040376017000020fefb0a000000f4cf00000000000000000020c9df290000f5ffffff0420ffdfebff1ec0ff0700f88ff0bf00007068f37f00000000f37f00000000f0bf00008079c0ff0600f88f20ffdfdaff1e00f5ffffff040020d9df2900", + "ď": "0b100c011000761277000000f4ce7f00000060ff0a0000000000000000fcffdf290000fcffffff0600fcafdaff3f00fc0e00f6df00fc0e00b0ff01fc0e0060ff04fc0e0060ff04fc0e00b0ff01fc0e00f6df00fc9fdaff3f00fcffffff0600fcffdf290000", + "é": "09100a011000007217000000fc09000060cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "ě": "09100a0110503760170020fffb090000f4cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "í": "051005011000770370df00f22e00000000fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00", + "ň": "0b100d011000740376010000e2bfaf00000040ff0c0000000000000000fccf0060ff04fcff0460ff04fcff0c60ff04fcff4f60ff04fcffcf60ff04fc7eff64ff04fc0efe6cff04fc0ef6dfff04fc0ed0ffff04fc0e50ffff04fc0e00fdff04fc0e00f4ff04", + "ó": "0d100d001000000070270000000000f90c0000000030ef010000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "ř": "0b100c011020674047000000fbfa1d000000d1ff020000000000000000fcffff9d0000fcffffff0c00fc8f98fe5f00fc0e00f49f00fc0e00f1af00fc0e00f88f00fcffffff2f00fcffffdf0300fcafff0c0000fc0efaaf0000fc0eb0ff0900fc0e00fc9f00", + "š": "0b100b001000740476020000e1afaf00000030ff0d000000000000000000b4fe9d010060ffffff2f00f0ff79fccf00f39f00c0ff00f1ef3600000090ffffcf060000b5feff9f00000010e5ff00f65f0090ff02f2ff68f8ef0070ffffff5f0000b3fdad0300", + "ť": "0a100a0010007611670000f5dd5f000080ff08000000000000faffffffaffaffffffafa6caffac7a0050ff05000050ff05000050ff05000050ff05000050ff05000050ff05000050ff05000050ff05000050ff0500", + "ú": "0b100c01100000306700000000e16f00000000fa080000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "ů": "0b110c01110000100000000050fe08000000b07a0e00000050ff080000000010000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "ý": "0d100c001000000070270000000000f90c0000000040df01000000000000000000e1ff0100f2df0070ff0800fa5f0000fe1f20ff0c0000f68fa0ff040000e0fff3cf00000060ffff3f00000000fdff0b00000000f5ff0300000000e0df0000000000e0cf0000000000e0cf0000000000e0cf000000", + "ž": "0a100b0010007503760100f2bf9f000040ff0c000000000000f3ffffffcff3ffffffcfa2aaaaffaf000090ff1e0000f5ff030020ff6f0000d1ff090000fbcf000080ff1e0000f3ff9c9989f5ffffffdff5ffffffdf" } diff --git a/core/translations/fonts/font_tthoves_bold_17_de.json b/core/translations/fonts/font_tthoves_bold_17_upper_de.json similarity index 54% rename from core/translations/fonts/font_tthoves_bold_17_de.json rename to core/translations/fonts/font_tthoves_bold_17_upper_de.json index 5793c03c2b..f19214a69f 100644 --- a/core/translations/fonts/font_tthoves_bold_17_de.json +++ b/core/translations/fonts/font_tthoves_bold_17_upper_de.json @@ -3,7 +3,7 @@ "Ö": "0d100d0010000011100100000050dff03f00000050dff03f0000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", "Ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", "ß": "090c0a010c30ebcf0700f3ffffbf00fbafd7ff03fe0d60ff05ff0bd5ff02ff1bff7f00ff1bffbf00ff0b80ff06ff0b20ff0aff0bb5ff08ff1bffff02ff1bef3b00", - "ä": "090d0a000d001100110000fc66cf0000fc66cf00000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", - "ö": "0a0d0a000d001100110000fb47ef0000fb47ef00000000000000b2ee4b0040ffffff07e0ff78fe2ff36f00f36ff52f00f08ff36f00f36fe0ff78fe2f40ffffff0700b3ee4b00", - "ü": "090d0a010d1011100100909ff30f00909ff30f000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05" + "ä": "0d100d0010000011001100000000fd75bf00000000fd75bf0000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "ö": "0d100d0010000011100100000050dff03f00000050dff03f0000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000" } diff --git a/core/translations/fonts/font_tthoves_bold_17_es.json b/core/translations/fonts/font_tthoves_bold_17_upper_es.json similarity index 52% rename from core/translations/fonts/font_tthoves_bold_17_es.json rename to core/translations/fonts/font_tthoves_bold_17_upper_es.json index 3146a5fbc1..ee30e4c62b 100644 --- a/core/translations/fonts/font_tthoves_bold_17_es.json +++ b/core/translations/fonts/font_tthoves_bold_17_upper_es.json @@ -6,12 +6,12 @@ "Ó": "0d100d001000000070270000000000f90c0000000030ef010000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", "Ú": "0b100c01100000306700000000e16f00000000fa080000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", "Ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", - "á": "090d0a000d00004067000000f24f000000fc0700000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", - "é": "0a0d0a000d00003067000000e15f000000fa0800000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", - "í": "050d05010d70ef01f23f00740400000000ff0800ff0800ff0800ff0800ff0800ff0800ff0800ff0800ff0800", - "ñ": "090d0a010d007251090040ffed0d00a03fcb02000000000000ffb7ef0800ffffffaf00ffbff9ff02ff0c70ff04ff0930ff05ff0830ff05ff0830ff05ff0830ff05ff0830ff05", - "ó": "0a0d0a000d00003077000000e07f000000f90900000000000000b2ee4b0040ffffff07e0ff78fe2ff36f00f36ff52f00f08ff36f00f36fe0ff78fe2f40ffffff0700b3ee4b00", - "ú": "090d0a010d0000fa0c000040ef010000502700000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", - "ü": "090d0a010d1011100100909ff30f00909ff30f000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", + "á": "0d100d001000000040670000000000f24f0000000000fb070000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "é": "09100a011000007217000000fc09000060cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "í": "051005011000770370df00f22e00000000fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00", + "ñ": "0b100d011000603895010000f5ffef0000009552290000000000000000fccf0060ff04fcff0460ff04fcff0c60ff04fcff4f60ff04fcffcf60ff04fc7eff64ff04fc0efe6cff04fc0ef6dfff04fc0ed0ffff04fc0e50ffff04fc0e00fdff04fc0e00f4ff04", + "ó": "0d100d001000000070270000000000f90c0000000030ef010000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "ú": "0b100c01100000306700000000e16f00000000fa080000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", "¿": "090d0900090090ff01000090ff01000070cc010000000000000080ee000000c0ff000010fc9f0000d0ff090000f59f000000f76f10cc08f4efc8ff07c0ffffdf0000d8df1900" } diff --git a/core/translations/fonts/font_tthoves_bold_17_fr.json b/core/translations/fonts/font_tthoves_bold_17_upper_fr.json similarity index 50% rename from core/translations/fonts/font_tthoves_bold_17_fr.json rename to core/translations/fonts/font_tthoves_bold_17_upper_fr.json index 8f5beb81a0..5c3f34fa29 100644 --- a/core/translations/fonts/font_tthoves_bold_17_fr.json +++ b/core/translations/fonts/font_tthoves_bold_17_upper_fr.json @@ -15,20 +15,20 @@ "Ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", "Ÿ": "0d100c0010000011100100000050dff03f00000050dff03f000000000000000000e1ff0100f2df0070ff0800fa5f0000fe1f20ff0c0000f68fa0ff040000e0fff3cf00000060ffff3f00000000fdff0b00000000f5ff0300000000e0df0000000000e0cf0000000000e0cf0000000000e0cf000000", "Œ": "120c12000c0020d9df97ffffff6f00f5ffffffffffff6f20ffafc8ffff777737b0ff0500f9ff000000f0bf0000f1ff000000f37f0000c0ffffff1ff47f0000b0ffffff1ff1af0000e0ff666606d0ff0300f7ff00000040ffafb8ffff77773700f7ffffffffffff6f0020dadf97ffffff6f", - "à": "090d0a000d007604000000f51e00000080bf0000000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", - "â": "090d0a000d002077020000d0ff0d0000fb77bf00000000000000d6ef2a0080ffffef01c0ac72ff07000000ff0930ebffff0af1efbbff0af55f50ff0af2ffffff0a30fc9efa0a", - "æ": "0f090f000900d7df07d6cf070080ffffefffffaf00c09c61ff8f71ff05006388ff5f55fe09a0ffffffffffff0cf39f33ff3e222202f56f70ff7f51cc04f1ffffdfffffbf0030fcbe03d7cf0800", - "ç": "0a0d0a000900a2fe4c0040ffffff05e0ff78fe1ff36f009339f52f000000f45f007227e0ef66fd1f60ffffff0700d5ff6d000000ed00000000f90b000010f70e000040cf0500", - "è": "0a0d0a000d007604000000f42f00000060cf0000000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", - "é": "0a0d0a000d00003067000000e15f000000fa0800000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", - "ê": "0a0d0a000d002077020000d0ff0d0000fb77bf00000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", - "ë": "0a0d0a000d001100110000fc66cf0000fc66cf00000000000000b3ee4b0040ffffff06e0cf12fa2ff3af88f96ff5ffffff7ff35f000000e0df22c91c40ffffff0600b2ee4b00", - "î": "070d06000d30ff0c00e2bfaf00740477010000000000ff080000ff080000ff080000ff080000ff080000ff080000ff080000ff080000ff0800", - "ï": "070d06000d10011100f81aff01f81aff010000000000ff080000ff080000ff080000ff080000ff080000ff080000ff080000ff080000ff0800", - "ô": "0a0d0a000d001077020000c0ff1e0000fa69cf00000000000000b2ee4b0040ffffff07e0ff78fe2ff36f00f36ff52f00f08ff36f00f36fe0ff78fe2f40ffffff0700b3ee4b00", - "ù": "090d0a010d70ef01000000fa0a000000700700000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", - "û": "090d0a010d00f5af000030effb080050377017000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", - "ü": "090d0a010d1011100100909ff30f00909ff30f000000000000ff0830ff05ff0830ff05ff0830ff05ff0830ff05ff0930ff05ff0c60ff05fcbff9ff05f5ffffff0550fd6dff05", - "ÿ": "0b110a000d00100111000000f21ffb070000f21ffb0700000000000000e0cf0070ff0490ff02b0ef0030ff07f09f0000fd0df44f0000f82ff90e0000f28ffd0a0000d0ffff04000070ffff00000020ffaf00000000fc5f00000065fd0f000000ffff09000000ffae010000", - "œ": "100910000900b3ee1a91ee4b0050ffffeffeffff06e0ef87ffef13fa1ff35f00f8cf88f95ff52f00f5ffffff6ff36f00f99f000000e0ff97ffff14c90c40ffffeffeffff0600b3ee1aa2ee5b00" + "à": "0d100d0010000076040000000000f51f000000000070bf000000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "â": "0d100d0010000020770100000000d1ff0c00000000fc86af0000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "æ": "110c11000c000050ffffffffff080000c0ffffffffff080000f3bffc8f7777040000fa2ff91f0000000010ff0bf91f0000000080ff05f9ffffff0300e0ef00f9ffffff0300f6ffffff7f66660100fdffffff1f00000040ff8c88fd8f777703b0ff0300f9ffffff08f2df0000f9ffffff08", + "ç": "0c100c000c0020c9df290000f5ffffef0320ffdfebff0ec0ff0700f87ff0cf00008079f37f00000000f47f00000000f1af00006067d0ff0400f59f50ffafa7ff2f00f8ffffff040050fcff4c000000b01f0000000080cf0000000071fe00000000f26d0000", + "è": "09100a0110406700000010fe05000000f31e00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "é": "09100a011000007217000000fc09000060cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "ê": "09100a0110007037000000faff030070bff41e000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "ë": "09100a0110001110010080aff20f0080aff20f000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "î": "07100600100075060050ff6f00f33efd040000000000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e00", + "ï": "071006001010011100f40ffd05f40ffd050000000000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e0000fc0e00", + "ô": "0d100d0010000060570000000000f7ff0500000040dfe33f0000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "ù": "0b100c011000750500000000f33f0000000050df000000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "û": "0b100c011000107702000000c0ff1e000000f969cf0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "ÿ": "0d100c0010000011100100000050dff03f00000050dff03f000000000000000000e1ff0100f2df0070ff0800fa5f0000fe1f20ff0c0000f68fa0ff040000e0fff3cf00000060ffff3f00000000fdff0b00000000f5ff0300000000e0df0000000000e0cf0000000000e0cf0000000000e0cf000000", + "œ": "120c12000c0020d9df97ffffff6f00f5ffffffffffff6f20ffafc8ffff777737b0ff0500f9ff000000f0bf0000f1ff000000f37f0000c0ffffff1ff47f0000b0ffffff1ff1af0000e0ff666606d0ff0300f7ff00000040ffafb8ffff77773700f7ffffffffffff6f0020dadf97ffffff6f" } From 43e759ea0b21ae2706f22d88fd84575a1b324a8d Mon Sep 17 00:00:00 2001 From: obrusvit Date: Tue, 9 Apr 2024 13:23:36 +0200 Subject: [PATCH 016/626] refactor(core): apply uppercased fonts in build [no changelog] --- core/SConscript.bootloader | 12 +++++- core/SConscript.bootloader_ci | 8 ++++ core/SConscript.bootloader_emu | 12 +++++- core/SConscript.firmware | 8 +++- core/SConscript.prodtest | 6 +++ core/SConscript.reflash | 6 +++ core/SConscript.unix | 8 +++- .../extmod/modtrezorui/modtrezorui-display.h | 4 +- core/embed/lib/fonts/fonts.c | 40 ++++++++++++++++++ core/embed/lib/fonts/fonts.h | 42 ++++++++++++++++++- core/embed/rust/src/ui/display/font.rs | 5 ++- core/mocks/generated/trezorui.pyi | 2 +- core/src/trezor/ui/__init__.py | 2 +- core/src/trezor/ui/layouts/tr/__init__.py | 5 ++- core/translations/cs.json | 16 ++++--- core/translations/de.json | 16 ++++--- core/translations/es.json | 16 ++++--- core/translations/fr.json | 16 ++++--- 18 files changed, 190 insertions(+), 34 deletions(-) diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 00529e0eb1..3a5ec2afe8 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -36,18 +36,24 @@ if TREZOR_MODEL in ('R', ): FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO='Font_PixelOperator_Regular_8' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): FONT_NORMAL='Font_TTHoves_Regular_21' FONT_DEMIBOLD='Font_TTHoves_Regular_21' - FONT_BOLD='Font_TTHoves_Bold_17' + FONT_BOLD='Font_TTHoves_Bold_17_upper' FONT_MONO='Font_TTHoves_Regular_21' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' elif TREZOR_MODEL in ('T3T1',): FONT_NORMAL='Font_TTSatoshi_DemiBold_21' FONT_DEMIBOLD='Font_TTSatoshi_DemiBold_21' - FONT_BOLD='Font_TTHoves_Bold_17' + FONT_BOLD=None FONT_MONO='Font_TTSatoshi_DemiBold_21' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' # modtrezorcrypto CCFLAGS_MOD += '-Wno-sequence-point ' @@ -114,6 +120,8 @@ tools.add_font('BOLD', FONT_BOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('DEMIBOLD', FONT_DEMIBOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) env = Environment( ENV=os.environ, diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 1835b93055..e5c41fd60b 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -34,18 +34,24 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BOLD=None FONT_MONO='Font_PixelOperatorMono_Regular_8' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T',): FONT_NORMAL='Font_Roboto_Regular_20' FONT_DEMIBOLD=None FONT_BOLD=None FONT_MONO='Font_RobotoMono_Medium_20' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T3T1',): FONT_NORMAL='Font_TTSatoshi_DemiBold_21' FONT_DEMIBOLD=None FONT_BOLD=None FONT_MONO='Font_RobotoMono_Medium_21' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None # modtrezorcrypto CCFLAGS_MOD += '-Wno-sequence-point ' @@ -106,6 +112,8 @@ tools.add_font('BOLD', FONT_BOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('DEMIBOLD', FONT_DEMIBOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) env = Environment( ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')), diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 22bbc26de0..1506c4197c 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -33,18 +33,24 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO='Font_PixelOperator_Regular_8' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T', 'DISC2'): FONT_NORMAL='Font_TTHoves_Regular_21' FONT_DEMIBOLD=None - FONT_BOLD='Font_TTHoves_Bold_17' + FONT_BOLD=None FONT_MONO=None FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' elif TREZOR_MODEL in ('T3T1',): FONT_NORMAL='Font_TTSatoshi_DemiBold_21' FONT_DEMIBOLD='Font_TTSatoshi_DemiBold_21' - FONT_BOLD='Font_TTHoves_Bold_17' + FONT_BOLD=None FONT_MONO='Font_TTSatoshi_DemiBold_21' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' # modtrezorcrypto CCFLAGS_MOD += '-Wno-sequence-point ' @@ -164,6 +170,8 @@ tools.add_font('BOLD', FONT_BOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('DEMIBOLD', FONT_DEMIBOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) env = Environment(ENV=os.environ, CFLAGS='%s -DCONFIDENTIAL= -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0'))) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 1f926fcba5..fa38b8b80d 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -42,12 +42,16 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO='Font_PixelOperatorMono_Regular_8' FONT_BIG='Font_Unifont_Regular_16' + FONT_NORMAL_UPPER='Font_PixelOperator_Regular_8_upper' + FONT_BOLD_UPPER='Font_PixelOperator_Bold_8_upper' elif TREZOR_MODEL in ('T', 'T3T1', 'DISC1', 'DISC2'): FONT_NORMAL='Font_TTHoves_Regular_21' FONT_DEMIBOLD='Font_TTHoves_DemiBold_21' - FONT_BOLD='Font_TTHoves_Bold_17' + FONT_BOLD=None FONT_MONO='Font_RobotoMono_Medium_20' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' # modtrezorconfig CPPPATH_MOD += [ @@ -391,6 +395,8 @@ tools.add_font('BOLD', FONT_BOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('DEMIBOLD', FONT_DEMIBOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) SOURCE_QSTR = SOURCE_MOD + SOURCE_MICROPYTHON + SOURCE_MICROPYTHON_SPEED diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 22a6626d03..481a1a48ef 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -38,12 +38,16 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO=None FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T', 'T3T1'): FONT_NORMAL=None FONT_DEMIBOLD=None FONT_BOLD='Font_Roboto_Bold_20' FONT_MONO=None FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None # modtrezorcrypto CPPPATH_MOD += [ @@ -100,6 +104,8 @@ tools.add_font('BOLD', FONT_BOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('DEMIBOLD', FONT_DEMIBOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) env = Environment( ENV=os.environ, diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 4772d45a95..7259a28653 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -33,12 +33,16 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO=None FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T', 'T3T1'): FONT_NORMAL=None FONT_DEMIBOLD=None FONT_BOLD='Font_Roboto_Bold_20' FONT_MONO=None FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None # modtrezorcrypto CPPPATH_MOD += [ @@ -74,6 +78,8 @@ tools.add_font('BOLD', FONT_BOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('DEMIBOLD', FONT_DEMIBOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) env = Environment( ENV=os.environ, diff --git a/core/SConscript.unix b/core/SConscript.unix index 90fe0df537..4a8bb342ef 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -44,12 +44,16 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO='Font_PixelOperatorMono_Regular_8' FONT_BIG='Font_Unifont_Regular_16' + FONT_NORMAL_UPPER='Font_PixelOperator_Regular_8_upper' + FONT_BOLD_UPPER='Font_PixelOperator_Bold_8_upper' elif TREZOR_MODEL in ('T', 'T3T1'): FONT_NORMAL='Font_TTHoves_Regular_21' FONT_DEMIBOLD='Font_TTHoves_DemiBold_21' - FONT_BOLD='Font_TTHoves_Bold_17' + FONT_BOLD=None FONT_MONO='Font_RobotoMono_Medium_20' FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' # modtrezorconfig CPPPATH_MOD += [ @@ -441,6 +445,8 @@ tools.add_font('BOLD', FONT_BOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('DEMIBOLD', FONT_DEMIBOLD, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) SOURCE_QSTR = SOURCE_MOD + SOURCE_MICROPYTHON + SOURCE_UNIX diff --git a/core/embed/extmod/modtrezorui/modtrezorui-display.h b/core/embed/extmod/modtrezorui/modtrezorui-display.h index 85662585a1..59c69ff520 100644 --- a/core/embed/extmod/modtrezorui/modtrezorui-display.h +++ b/core/embed/extmod/modtrezorui/modtrezorui-display.h @@ -28,8 +28,8 @@ /// HEIGHT: int # display height in pixels /// FONT_MONO: int # id of monospace font /// FONT_NORMAL: int # id of normal-width font -/// FONT_BOLD: int # id of bold-width font /// FONT_DEMIBOLD: int # id of demibold font +/// FONT_BOLD_UPPER: int # id of bold-width-uppercased font /// typedef struct _mp_obj_Display_t { mp_obj_base_t base; @@ -163,9 +163,9 @@ STATIC const mp_rom_map_elem_t mod_trezorui_Display_locals_dict_table[] = { {MP_ROM_QSTR(MP_QSTR_WIDTH), MP_ROM_INT(DISPLAY_RESX)}, {MP_ROM_QSTR(MP_QSTR_HEIGHT), MP_ROM_INT(DISPLAY_RESY)}, {MP_ROM_QSTR(MP_QSTR_FONT_NORMAL), MP_ROM_INT(FONT_NORMAL)}, - {MP_ROM_QSTR(MP_QSTR_FONT_BOLD), MP_ROM_INT(FONT_BOLD)}, {MP_ROM_QSTR(MP_QSTR_FONT_DEMIBOLD), MP_ROM_INT(FONT_DEMIBOLD)}, {MP_ROM_QSTR(MP_QSTR_FONT_MONO), MP_ROM_INT(FONT_MONO)}, + {MP_ROM_QSTR(MP_QSTR_FONT_BOLD_UPPER), MP_ROM_INT(FONT_BOLD_UPPER)}, }; STATIC MP_DEFINE_CONST_DICT(mod_trezorui_Display_locals_dict, mod_trezorui_Display_locals_dict_table); diff --git a/core/embed/lib/fonts/fonts.c b/core/embed/lib/fonts/fonts.c index 76b528ed9f..b40be71e19 100644 --- a/core/embed/lib/fonts/fonts.c +++ b/core/embed/lib/fonts/fonts.c @@ -42,6 +42,14 @@ int font_height(int font) { case FONT_BOLD: return FONT_BOLD_HEIGHT; #endif +#ifdef TREZOR_FONT_NORMAL_UPPER_ENABLE + case FONT_NORMAL_UPPER: + return FONT_NORMAL_UPPER_HEIGHT; +#endif +#ifdef TREZOR_FONT_BOLD_UPPER_ENABLE + case FONT_BOLD_UPPER: + return FONT_BOLD_UPPER_HEIGHT; +#endif #ifdef TREZOR_FONT_MONO_ENABLE case FONT_MONO: return FONT_MONO_HEIGHT; @@ -68,6 +76,14 @@ int font_max_height(int font) { case FONT_BOLD: return FONT_BOLD_MAX_HEIGHT; #endif +#ifdef TREZOR_FONT_NORMAL_UPPER_ENABLE + case FONT_NORMAL_UPPER: + return FONT_NORMAL_UPPER_MAX_HEIGHT; +#endif +#ifdef TREZOR_FONT_BOLD_UPPER_ENABLE + case FONT_BOLD_UPPER: + return FONT_BOLD_UPPER_MAX_HEIGHT; +#endif #ifdef TREZOR_FONT_MONO_ENABLE case FONT_MONO: return FONT_MONO_MAX_HEIGHT; @@ -94,6 +110,14 @@ int font_baseline(int font) { case FONT_BOLD: return FONT_BOLD_BASELINE; #endif +#ifdef TREZOR_FONT_NORMAL_UPPER_ENABLE + case FONT_NORMAL_UPPER: + return FONT_NORMAL_UPPER_BASELINE; +#endif +#ifdef TREZOR_FONT_BOLD_UPPER_ENABLE + case FONT_BOLD_UPPER: + return FONT_BOLD_UPPER_BASELINE; +#endif #ifdef TREZOR_FONT_MONO_ENABLE case FONT_MONO: return FONT_MONO_BASELINE; @@ -192,6 +216,14 @@ const uint8_t *font_nonprintable_glyph(int font) { case FONT_BOLD: return NONPRINTABLE_GLYPH(FONT_BOLD_DATA); #endif +#ifdef TREZOR_FONT_NORMAL_UPPER_ENABLE + case FONT_NORMAL_UPPER: + return NONPRINTABLE_GLYPH(FONT_NORMAL_UPPER_DATA); +#endif +#ifdef TREZOR_FONT_BOLD_UPPER_ENABLE + case FONT_BOLD_UPPER: + return NONPRINTABLE_GLYPH(FONT_BOLD_UPPER_DATA); +#endif #ifdef TREZOR_FONT_MONO_ENABLE case FONT_MONO: return NONPRINTABLE_GLYPH(FONT_MONO_DATA); @@ -233,6 +265,14 @@ const uint8_t *font_get_glyph(int font, uint16_t c) { case FONT_BOLD: return FONT_BOLD_DATA[c - ' ']; #endif +#ifdef TREZOR_FONT_NORMAL_UPPER_ENABLE + case FONT_NORMAL_UPPER: + return FONT_NORMAL_UPPER_DATA[c - ' ']; +#endif +#ifdef TREZOR_FONT_BOLD_UPPER_ENABLE + case FONT_BOLD_UPPER: + return FONT_BOLD_UPPER_DATA[c - ' ']; +#endif #ifdef TREZOR_FONT_MONO_ENABLE case FONT_MONO: return FONT_MONO_DATA[c - ' ']; diff --git a/core/embed/lib/fonts/fonts.h b/core/embed/lib/fonts/fonts.h index 108dd91999..2b897c7517 100644 --- a/core/embed/lib/fonts/fonts.h +++ b/core/embed/lib/fonts/fonts.h @@ -82,6 +82,30 @@ #define FONT_BOLD_BASELINE FONT_DEFINE(TREZOR_FONT_BOLD_ENABLE, _BASELINE) #endif +#ifdef TREZOR_FONT_NORMAL_UPPER_ENABLE +#include TREZOR_FONT_NORMAL_UPPER_INCLUDE +#define FONT_NORMAL_UPPER (-6) +#define FONT_NORMAL_UPPER_DATA TREZOR_FONT_NORMAL_UPPER_ENABLE +#define FONT_NORMAL_UPPER_HEIGHT \ + FONT_DEFINE(TREZOR_FONT_NORMAL_UPPER_ENABLE, _HEIGHT) +#define FONT_NORMAL_UPPER_MAX_HEIGHT \ + FONT_DEFINE(TREZOR_FONT_NORMAL_UPPER_ENABLE, _MAX_HEIGHT) +#define FONT_NORMAL_UPPER_BASELINE \ + FONT_DEFINE(TREZOR_FONT_NORMAL_UPPER_ENABLE, _BASELINE) +#endif + +#ifdef TREZOR_FONT_BOLD_UPPER_ENABLE +#include TREZOR_FONT_BOLD_UPPER_INCLUDE +#define FONT_BOLD_UPPER (-7) +#define FONT_BOLD_UPPER_DATA TREZOR_FONT_BOLD_UPPER_ENABLE +#define FONT_BOLD_UPPER_HEIGHT \ + FONT_DEFINE(TREZOR_FONT_BOLD_UPPER_ENABLE, _HEIGHT) +#define FONT_BOLD_UPPER_MAX_HEIGHT \ + FONT_DEFINE(TREZOR_FONT_BOLD_UPPER_ENABLE, _MAX_HEIGHT) +#define FONT_BOLD_UPPER_BASELINE \ + FONT_DEFINE(TREZOR_FONT_BOLD_UPPER_ENABLE, _BASELINE) +#endif + #define MAX_FONT_H(A, B) ((A) > (B) ? (A) : (B)) #define FONT_MAX_HEIGHT_1 0 @@ -110,10 +134,24 @@ #define FONT_MAX_HEIGHT_5 FONT_MAX_HEIGHT_4 #endif +#ifdef TREZOR_FONT_NORMAL_UPPER_ENABLE +#define FONT_MAX_HEIGHT_6 \ + MAX_FONT_H(FONT_NORMAL_UPPER_MAX_HEIGHT, FONT_MAX_HEIGHT_5) +#else +#define FONT_MAX_HEIGHT_6 FONT_MAX_HEIGHT_5 +#endif + +#ifdef TREZOR_FONT_BOLD_UPPER_ENABLE +#define FONT_MAX_HEIGHT_7 \ + MAX_FONT_H(FONT_BOLD_UPPER_MAX_HEIGHT, FONT_MAX_HEIGHT_6) +#else +#define FONT_MAX_HEIGHT_7 FONT_MAX_HEIGHT_6 +#endif + #ifdef TREZOR_FONT_MONO_ENABLE -#define FONT_MAX_HEIGHT MAX_FONT_H(FONT_MONO_MAX_HEIGHT, FONT_MAX_HEIGHT_5) +#define FONT_MAX_HEIGHT MAX_FONT_H(FONT_MONO_MAX_HEIGHT, FONT_MAX_HEIGHT_7) #else -#define FONT_MAX_HEIGHT FONT_MAX_HEIGHT_5 +#define FONT_MAX_HEIGHT FONT_MAX_HEIGHT_7 #endif int font_height(int font); diff --git a/core/embed/rust/src/ui/display/font.rs b/core/embed/rust/src/ui/display/font.rs index b88953b98a..220cfe8170 100644 --- a/core/embed/rust/src/ui/display/font.rs +++ b/core/embed/rust/src/ui/display/font.rs @@ -122,15 +122,18 @@ impl Glyph { } /// Font constants. Keep in sync with FONT_ definitions in -/// `extmod/modtrezorui/fonts/fonts.h`. +/// `core/embed/lib/fonts/fonts.h`. #[derive(Copy, Clone, PartialEq, Eq, FromPrimitive)] #[repr(u8)] +#[allow(non_camel_case_types)] pub enum Font { NORMAL = 1, BOLD = 2, MONO = 3, BIG = 4, DEMIBOLD = 5, + NORMAL_UPPER = 6, + BOLD_UPPER = 7, } impl From for i32 { diff --git a/core/mocks/generated/trezorui.pyi b/core/mocks/generated/trezorui.pyi index f636a74b44..b34f62bbb9 100644 --- a/core/mocks/generated/trezorui.pyi +++ b/core/mocks/generated/trezorui.pyi @@ -10,8 +10,8 @@ class Display: HEIGHT: int # display height in pixels FONT_MONO: int # id of monospace font FONT_NORMAL: int # id of normal-width font - FONT_BOLD: int # id of bold-width font FONT_DEMIBOLD: int # id of demibold font + FONT_BOLD_UPPER: int # id of bold-width-uppercased font def __init__(self) -> None: """ diff --git a/core/src/trezor/ui/__init__.py b/core/src/trezor/ui/__init__.py index a8580a96cb..3e4b7adddf 100644 --- a/core/src/trezor/ui/__init__.py +++ b/core/src/trezor/ui/__init__.py @@ -21,8 +21,8 @@ # re-export constants from modtrezorui NORMAL: int = Display.FONT_NORMAL -BOLD: int = Display.FONT_BOLD DEMIBOLD: int = Display.FONT_DEMIBOLD +BOLD_UPPER: int = Display.FONT_BOLD_UPPER MONO: int = Display.FONT_MONO WIDTH: int = Display.WIDTH HEIGHT: int = Display.HEIGHT diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 844f6a2860..91d0b87ae4 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -868,7 +868,10 @@ async def _confirm_ask_pagination( trezorui2.confirm_more( title=title, button=TR.buttons__go_back, - items=[(ui.BOLD, f"Size: {len(data)} bytes"), (ui.MONO, data)], + items=[ + (ui.BOLD_UPPER, f"Size: {len(data)} bytes"), + (ui.MONO, data), + ], ) ) else: diff --git a/core/translations/cs.json b/core/translations/cs.json index 36f4ded771..75f6a04c15 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -5,21 +5,27 @@ "2_FONT_BOLD": "font_pixeloperator_bold_8_cs.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_cs.json", "4_FONT_BIG": "font_unifont_regular_16_cs.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_cs.json" + "5_FONT_DEMIBOLD": "font_unifont_bold_16_cs.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_cs.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_cs.json" }, "T2T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_cs.json", - "2_FONT_BOLD": "font_tthoves_bold_17_cs.json", + "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_cs.json", "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_cs.json" + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_cs.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_cs.json" }, "T3T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_cs.json", - "2_FONT_BOLD": "font_tthoves_bold_17_cs.json", + "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_cs.json", "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_cs.json" + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_cs.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_cs.json" } }, "header": { diff --git a/core/translations/de.json b/core/translations/de.json index e8595915ce..86c6ddf0b4 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -5,21 +5,27 @@ "2_FONT_BOLD": "font_pixeloperator_bold_8_de.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_de.json", "4_FONT_BIG": "font_unifont_regular_16_de.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_de.json" + "5_FONT_DEMIBOLD": "font_unifont_bold_16_de.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_de.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_de.json" }, "T2T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_de.json", - "2_FONT_BOLD": "font_tthoves_bold_17_de.json", + "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_de.json", "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_de.json" + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_de.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_de.json" }, "T3T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_de.json", - "2_FONT_BOLD": "font_tthoves_bold_17_de.json", + "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_de.json", "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_de.json" + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_de.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_de.json" } }, "header": { diff --git a/core/translations/es.json b/core/translations/es.json index ce7b8a1f07..cf4b06e4ce 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -5,21 +5,27 @@ "2_FONT_BOLD": "font_pixeloperator_bold_8_es.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_es.json", "4_FONT_BIG": "font_unifont_regular_16_es.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_es.json" + "5_FONT_DEMIBOLD": "font_unifont_bold_16_es.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_es.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_es.json" }, "T2T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_es.json", - "2_FONT_BOLD": "font_tthoves_bold_17_es.json", + "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_es.json", "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_es.json" + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_es.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_es.json" }, "T3T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_es.json", - "2_FONT_BOLD": "font_tthoves_bold_17_es.json", + "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_es.json", "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_es.json" + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_es.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_es.json" } }, "header": { diff --git a/core/translations/fr.json b/core/translations/fr.json index 8ddb5880bd..dd0b6e59ff 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -5,21 +5,27 @@ "2_FONT_BOLD": "font_pixeloperator_bold_8_fr.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_fr.json", "4_FONT_BIG": "font_unifont_regular_16_fr.json", - "5_FONT_DEMIBOLD": "font_unifont_bold_16_fr.json" + "5_FONT_DEMIBOLD": "font_unifont_bold_16_fr.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_fr.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_fr.json" }, "T2T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_fr.json", - "2_FONT_BOLD": "font_tthoves_bold_17_fr.json", + "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_fr.json", "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_fr.json" + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_fr.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_fr.json" }, "T3T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_fr.json", - "2_FONT_BOLD": "font_tthoves_bold_17_fr.json", + "2_FONT_BOLD": null, "3_FONT_MONO": "font_robotomono_medium_20_fr.json", "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_fr.json" + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_fr.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_fr.json" } }, "header": { From f9e55a215db665570d1ee875649c09513b450411 Mon Sep 17 00:00:00 2001 From: obrusvit Date: Tue, 9 Apr 2024 13:24:47 +0200 Subject: [PATCH 017/626] refactor(core): replace upper calls by upper font [no changelog] --- core/embed/rust/src/ui/component/text/op.rs | 4 ++ .../ui/model_tr/component/changing_text.rs | 2 +- .../model_tr/component/coinjoin_progress.rs | 2 +- .../src/ui/model_tr/component/homescreen.rs | 4 +- .../src/ui/model_tr/component/progress.rs | 2 +- core/embed/rust/src/ui/model_tr/layout.rs | 8 +-- core/embed/rust/src/ui/model_tr/theme/mod.rs | 8 ++- .../rust/src/ui/model_tt/component/page.rs | 56 +++++++++-------- .../rust/src/ui/model_tt/component/result.rs | 2 +- core/embed/rust/src/ui/model_tt/layout.rs | 4 +- .../rust/src/ui/model_tt/theme/bootloader.rs | 38 ++++++------ core/embed/rust/src/ui/model_tt/theme/mod.rs | 44 ++++++------- core/src/trezor/ui/layouts/progress.py | 7 --- core/src/trezor/ui/layouts/tr/__init__.py | 61 ++++++++----------- core/src/trezor/ui/layouts/tr/fido.py | 2 +- core/src/trezor/ui/layouts/tr/recovery.py | 2 +- core/src/trezor/ui/layouts/tr/reset.py | 6 +- core/src/trezor/ui/layouts/tt/__init__.py | 59 ++++++++---------- core/src/trezor/ui/layouts/tt/fido.py | 2 +- core/src/trezor/ui/layouts/tt/recovery.py | 4 +- core/src/trezor/ui/layouts/tt/reset.py | 4 +- 21 files changed, 156 insertions(+), 165 deletions(-) diff --git a/core/embed/rust/src/ui/component/text/op.rs b/core/embed/rust/src/ui/component/text/op.rs index 6e4d11413f..101bfc8c22 100644 --- a/core/embed/rust/src/ui/component/text/op.rs +++ b/core/embed/rust/src/ui/component/text/op.rs @@ -253,6 +253,10 @@ impl<'a> OpTextLayout<'a> { self.font(Font::BOLD).text(text.into()) } + pub fn text_bold_upper(self, text: impl Into>) -> Self { + self.font(Font::BOLD_UPPER).text(text.into()) + } + pub fn text_demibold(self, text: impl Into>) -> Self { self.font(Font::DEMIBOLD).text(text.into()) } diff --git a/core/embed/rust/src/ui/model_tr/component/changing_text.rs b/core/embed/rust/src/ui/model_tr/component/changing_text.rs index 35ec844572..a9df41b66d 100644 --- a/core/embed/rust/src/ui/model_tr/component/changing_text.rs +++ b/core/embed/rust/src/ui/model_tr/component/changing_text.rs @@ -44,7 +44,7 @@ where } pub fn center_bold(text: T) -> Self { - Self::new(text, Font::BOLD, Alignment::Center) + Self::new(text, Font::BOLD_UPPER, Alignment::Center) } /// Not showing ellipsis at the beginning of longer texts. diff --git a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs index 1e2194efbc..50d7b7e8c3 100644 --- a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs @@ -83,7 +83,7 @@ impl Component for CoinJoinProgress { text_multiline( self.area, TR::coinjoin__title_progress.into(), - Font::BOLD, + Font::BOLD_UPPER, theme::FG, theme::BG, Alignment::Center, diff --git a/core/embed/rust/src/ui/model_tr/component/homescreen.rs b/core/embed/rust/src/ui/model_tr/component/homescreen.rs index 31de64e0e2..b6ccc6cf6f 100644 --- a/core/embed/rust/src/ui/model_tr/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_tr/component/homescreen.rs @@ -31,7 +31,7 @@ const LOGO_ICON_TOP_MARGIN: i16 = 12; const LOCK_ICON_TOP_MARGIN: i16 = 12; const NOTIFICATION_HEIGHT: i16 = 12; const LABEL_OUTSET: i16 = 3; -const NOTIFICATION_FONT: Font = Font::NORMAL; +const NOTIFICATION_FONT: Font = Font::NORMAL_UPPER; const NOTIFICATION_ICON: Icon = theme::ICON_WARNING; const COINJOIN_CORNER: Point = AREA.top_right().ofs(Offset::new(-2, 2)); @@ -313,7 +313,7 @@ impl ConfirmHomescreen { pub fn new(title: TString<'static>, buffer_func: F) -> Self { let btn_layout = ButtonLayout::cancel_none_text(TR::buttons__change.into()); ConfirmHomescreen { - title: Child::new(Label::centered(title, theme::TEXT_BOLD)), + title: Child::new(Label::centered(title, theme::TEXT_BOLD_UPPER)), buffer_func, buttons: Child::new(ButtonController::new(btn_layout)), } diff --git a/core/embed/rust/src/ui/model_tr/component/progress.rs b/core/embed/rust/src/ui/model_tr/component/progress.rs index 4b9da68f51..6b03a27eac 100644 --- a/core/embed/rust/src/ui/model_tr/component/progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/progress.rs @@ -49,7 +49,7 @@ impl Progress { } pub fn with_title(mut self, title: TString<'static>) -> Self { - self.title = Some(Child::new(Label::centered(title, theme::TEXT_BOLD))); + self.title = Some(Child::new(Label::centered(title, theme::TEXT_BOLD_UPPER))); self } diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index e76cf25d25..a20d593e0e 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -671,7 +671,7 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma let fee_rate_amount = fee_rate_amount.unwrap_or("".into()); let ops = OpTextLayout::new(theme::TEXT_MONO) - .text_bold(TR::confirm_total__title_fee) + .text_bold_upper(TR::confirm_total__title_fee) .newline() .newline() .newline_half() @@ -692,7 +692,7 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma // TODO: include wallet info when available let ops = OpTextLayout::new(theme::TEXT_MONO) - .text_bold(TR::confirm_total__title_sending_from) + .text_bold_upper(TR::confirm_total__title_sending_from) .newline() .newline() .newline_half() @@ -1072,7 +1072,7 @@ extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map let mut ops = OpTextLayout::new(theme::TEXT_NORMAL); ops = ops.alignment(geometry::Alignment::Center); if !warning.is_empty() { - ops = ops.text_bold(warning).newline(); + ops = ops.text_bold_upper(warning).newline(); } if !description.is_empty() { ops = ops.text_normal(description); @@ -1144,7 +1144,7 @@ extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Ma let btn_layout = ButtonLayout::arrow_none_text(TR::buttons__quit.into()); let btn_actions = ButtonActions::cancel_none_confirm(); let ops = OpTextLayout::new(theme::TEXT_NORMAL) - .text_bold(title) + .text_bold_upper(title) .newline() .newline_half() .text_normal(TR::addr_mismatch__contact_support_at) diff --git a/core/embed/rust/src/ui/model_tr/theme/mod.rs b/core/embed/rust/src/ui/model_tr/theme/mod.rs index 6728727afd..1948620bd7 100644 --- a/core/embed/rust/src/ui/model_tr/theme/mod.rs +++ b/core/embed/rust/src/ui/model_tr/theme/mod.rs @@ -18,8 +18,8 @@ pub const FG: Color = WHITE; // Default foreground (text & icon) color. pub const BG: Color = BLACK; // Default background color. // Font constants. -pub const FONT_BUTTON: Font = Font::NORMAL; -pub const FONT_HEADER: Font = Font::BOLD; +pub const FONT_BUTTON: Font = Font::NORMAL_UPPER; +pub const FONT_HEADER: Font = Font::BOLD_UPPER; pub const FONT_CHOICE_ITEMS: Font = Font::BIG; // Text constants. @@ -33,6 +33,10 @@ pub const TEXT_BOLD: TextStyle = TextStyle::new(Font::BOLD, FG, BG, FG, FG) .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) .with_ellipsis_icon(ICON_NEXT_PAGE, ELLIPSIS_ICON_MARGIN) .with_prev_page_icon(ICON_PREV_PAGE, PREV_PAGE_ICON_MARGIN); +pub const TEXT_BOLD_UPPER: TextStyle = TextStyle::new(Font::BOLD_UPPER, FG, BG, FG, FG) + .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) + .with_ellipsis_icon(ICON_NEXT_PAGE, ELLIPSIS_ICON_MARGIN) + .with_prev_page_icon(ICON_PREV_PAGE, PREV_PAGE_ICON_MARGIN); pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, FG, BG, FG, FG) .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) .with_ellipsis_icon(ICON_NEXT_PAGE, ELLIPSIS_ICON_MARGIN) diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index c8fa2756b6..4bbc187da1 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -561,7 +561,7 @@ mod tests { ), Paragraph::new( &theme::TEXT_BOLD, - "Second, bold, paragraph should also fit on the screen whole I think.", + "Second, bold, paragraph should also fit.", ), ]), theme::BG, @@ -576,7 +576,7 @@ mod tests { "component": "Paragraphs", "paragraphs": [ ["This is the first", "\n", "paragraph and it should", "\n", "fit on the screen", "\n", "entirely."], - ["Second, bold, paragraph", "\n", "should also fit on the", "\n", "screen whole I think."], + ["Second, bold,", "\n", "paragraph should", "\n", "also fit."], ], }, "hold": false, @@ -594,7 +594,7 @@ mod tests { let mut page = ButtonPage::new( Paragraphs::new( Paragraph::new( - &theme::TEXT_BOLD, + &theme::TEXT_NORMAL, "This is somewhat long paragraph that goes on and on and on and on and on and will definitely not fit on just a single screen. You have to swipe a bit to see all the text it contains I guess. There's just so much letters in it.", ) ), @@ -611,18 +611,18 @@ mod tests { "paragraphs": [ [ "This is somewhat long", "\n", - "paragraph that goes on", "\n", - "and on and on and on and", "\n", - "on and will definitely not", "\n", - "fit on just a single", "\n", - "screen. You have to", "\n", - "swipe a bit to see all the", "\n", - "text it contains I guess.", "...", + "paragraph that goes", "\n", + "on and on and on and", "\n", + "on and on and will", "\n", + "definitely not fit on", "\n", + "just a single screen.", "\n", + "You have to swipe a", "..." ], ], }, "hold": false, }); + let second_page = serde_json::json!({ "component": "ButtonPage", "active_page": 1, @@ -630,7 +630,12 @@ mod tests { "content": { "component": "Paragraphs", "paragraphs": [ - ["There's just so much", "\n", "letters in it."], + [ + "bit to see all the text it", "\n", + "contains I guess.", "\n", + "There's just so much", "\n", + "letters in it." + ], ], }, "hold": false, @@ -676,20 +681,21 @@ mod tests { "component": "Paragraphs", "paragraphs": [ [ - "This paragraph is using a", "\n", - "bold font. It doesn't need", "\n", - "to be all that long.", + "This paragraph is", "\n", + "using a bold font. It", "\n", + "doesn't need to be all", "\n", + "that long.", ], [ "And this one is u", "\n", "sing MONO. Monosp", "\n", - "ace is nice for n", "\n", - "umbers, they", "...", + "ace is nice f", "...", ], ], }, "hold": false, }); + let second_page = serde_json::json!({ "component": "ButtonPage", "active_page": 1, @@ -698,20 +704,19 @@ mod tests { "component": "Paragraphs", "paragraphs": [ [ - "...", "have the same", "\n", + "...", "or numbers, t", "\n", + "hey have the same", "\n", "width and can be", "\n", "scanned quickly.", "\n", "Even if they span", "\n", "several pages or", "\n", "something.", ], - [ - "Let's add another one", "...", - ], ], }, "hold": false, }); + let third_page = serde_json::json!({ "component": "ButtonPage", "active_page": 2, @@ -720,10 +725,13 @@ mod tests { "component": "Paragraphs", "paragraphs": [ [ - "for a good measure. This", "\n", - "one should overflow all", "\n", - "the way to the third page", "\n", - "with a bit of luck.", + "Let's add another", "\n", + "one for a good", "\n", + "measure. This one", "\n", + "should overflow all", "\n", + "the way to the third", "\n", + "page with a bit of", "\n", + "luck.", ], ], }, diff --git a/core/embed/rust/src/ui/model_tt/component/result.rs b/core/embed/rust/src/ui/model_tt/component/result.rs index f5bb2f2151..d276dc5ab7 100644 --- a/core/embed/rust/src/ui/model_tt/component/result.rs +++ b/core/embed/rust/src/ui/model_tt/component/result.rs @@ -37,7 +37,7 @@ impl ResultStyle { } pub const fn title_style(&self) -> TextStyle { - TextStyle::new(Font::BOLD, self.fg_color, self.bg_color, FG, FG) + TextStyle::new(Font::BOLD_UPPER, self.fg_color, self.bg_color, FG, FG) } } diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index f874973ebc..641b458390 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -2158,7 +2158,7 @@ mod tests { let ops = OpTextLayout::new(theme::TEXT_NORMAL) .text_normal("Testing text layout, with some text, and some more text. And ") - .text_bold("parameters!"); + .text_bold_upper("parameters!"); let formatted = FormattedText::new(ops); let mut layout = Dialog::new(formatted, buttons); layout.place(SCREEN); @@ -2168,7 +2168,7 @@ mod tests { "content": { "component": "FormattedText", "text": ["Testing text layout, with", "\n", "some text, and some", "\n", - "more text. And ", "paramet", "-", "\n", "ers!"], + "more text. And ", "parame", "-", "\n", "ters!"], "fits": true, }, "controls": { diff --git a/core/embed/rust/src/ui/model_tt/theme/bootloader.rs b/core/embed/rust/src/ui/model_tt/theme/bootloader.rs index cfc47a793d..ac2e320985 100644 --- a/core/embed/rust/src/ui/model_tt/theme/bootloader.rs +++ b/core/embed/rust/src/ui/model_tt/theme/bootloader.rs @@ -74,7 +74,7 @@ pub const START_URL: &[u8] = include_res!("model_tt/res/start.toif"); pub fn button_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: BLD_BG, button_color: WHITE, background_color: BLD_BG, @@ -83,7 +83,7 @@ pub fn button_confirm() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: BLD_BG, button_color: BLD_INSTALL_BTN_COLOR_ACTIVE, background_color: BLD_BG, @@ -92,7 +92,7 @@ pub fn button_confirm() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: GREY_DARK, background_color: FG, @@ -106,7 +106,7 @@ pub fn button_confirm() -> ButtonStyleSheet { pub fn button_wipe_cancel() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: WHITE, button_color: BLD_WIPE_CANCEL_BTN_COLOR, background_color: BLD_WIPE_COLOR, @@ -115,7 +115,7 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: WHITE, button_color: BLD_WIPE_CANCEL_BTN_COLOR_ACTIVE, background_color: BLD_WIPE_COLOR, @@ -124,7 +124,7 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: GREY_LIGHT, button_color: GREY_DARK, background_color: WHITE, @@ -138,7 +138,7 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { pub fn button_wipe_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: BLD_WIPE_COLOR, button_color: BLD_WIPE_BTN_COLOR, background_color: BLD_WIPE_COLOR, @@ -147,7 +147,7 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: BLD_WIPE_COLOR, button_color: BLD_WIPE_BTN_COLOR_ACTIVE, background_color: BLD_WIPE_COLOR, @@ -156,7 +156,7 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: GREY_DARK, background_color: FG, @@ -170,7 +170,7 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { pub fn button_bld_menu() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: BLD_FG, button_color: BLD_BG, background_color: BLD_BG, @@ -179,7 +179,7 @@ pub fn button_bld_menu() -> ButtonStyleSheet { border_width: 2, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: BLD_FG, button_color: BLD_BG, background_color: BLD_BG, @@ -188,7 +188,7 @@ pub fn button_bld_menu() -> ButtonStyleSheet { border_width: 2, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: GREY_LIGHT, button_color: BLD_BG, background_color: BLD_BG, @@ -202,7 +202,7 @@ pub fn button_bld_menu() -> ButtonStyleSheet { pub fn button_bld() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: BLD_FG, button_color: BLD_BTN_COLOR, background_color: BLD_BG, @@ -211,7 +211,7 @@ pub fn button_bld() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: BLD_FG, button_color: BLD_BTN_COLOR_ACTIVE, background_color: BLD_BG, @@ -220,7 +220,7 @@ pub fn button_bld() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: GREY_LIGHT, button_color: BLD_BTN_COLOR, background_color: BLD_BG, @@ -233,7 +233,7 @@ pub fn button_bld() -> ButtonStyleSheet { pub const fn text_title(bg: Color) -> TextStyle { TextStyle::new( - Font::BOLD, + Font::BOLD_UPPER, BLD_TITLE_COLOR, bg, BLD_TITLE_COLOR, @@ -243,7 +243,7 @@ pub const fn text_title(bg: Color) -> TextStyle { pub const TEXT_NORMAL: TextStyle = TextStyle::new(Font::NORMAL, BLD_FG, BLD_BG, BLD_FG, BLD_FG); pub const TEXT_WARNING: TextStyle = TextStyle::new( - Font::BOLD, + Font::BOLD_UPPER, BLD_WARN_COLOR, BLD_BG, BLD_WARN_COLOR, @@ -252,9 +252,9 @@ pub const TEXT_WARNING: TextStyle = TextStyle::new( pub const fn text_fingerprint(bg: Color) -> TextStyle { TextStyle::new(Font::NORMAL, BLD_FG, bg, BLD_FG, BLD_FG).with_line_breaking(BreakWordsNoHyphen) } -pub const TEXT_BOLD: TextStyle = TextStyle::new(Font::BOLD, BLD_FG, BLD_BG, BLD_FG, BLD_FG); +pub const TEXT_BOLD: TextStyle = TextStyle::new(Font::BOLD_UPPER, BLD_FG, BLD_BG, BLD_FG, BLD_FG); pub const TEXT_WIPE_BOLD: TextStyle = TextStyle::new( - Font::BOLD, + Font::BOLD_UPPER, BLD_WIPE_TEXT_COLOR, BLD_WIPE_COLOR, BLD_WIPE_TEXT_COLOR, diff --git a/core/embed/rust/src/ui/model_tt/theme/mod.rs b/core/embed/rust/src/ui/model_tt/theme/mod.rs index 8d0052b71f..2cfddd30a5 100644 --- a/core/embed/rust/src/ui/model_tt/theme/mod.rs +++ b/core/embed/rust/src/ui/model_tt/theme/mod.rs @@ -158,7 +158,7 @@ pub const fn label_progress() -> TextStyle { } pub const fn label_title() -> TextStyle { - TextStyle::new(Font::BOLD, GREY_LIGHT, BG, GREY_LIGHT, GREY_LIGHT) + TextStyle::new(Font::BOLD_UPPER, GREY_LIGHT, BG, GREY_LIGHT, GREY_LIGHT) } pub const fn label_subtitle() -> TextStyle { @@ -166,13 +166,13 @@ pub const fn label_subtitle() -> TextStyle { } pub const fn label_coinjoin_progress() -> TextStyle { - TextStyle::new(Font::BOLD, FG, YELLOW, FG, FG) + TextStyle::new(Font::BOLD_UPPER, FG, YELLOW, FG, FG) } pub const fn button_default() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: GREY_DARK, background_color: BG, @@ -181,7 +181,7 @@ pub const fn button_default() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: GREY_MEDIUM, background_color: BG, @@ -190,7 +190,7 @@ pub const fn button_default() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: GREY_LIGHT, button_color: GREY_DARK, background_color: BG, @@ -204,7 +204,7 @@ pub const fn button_default() -> ButtonStyleSheet { pub const fn button_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: GREEN, background_color: BG, @@ -213,7 +213,7 @@ pub const fn button_confirm() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: GREEN_DARK, background_color: BG, @@ -222,7 +222,7 @@ pub const fn button_confirm() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: GREY_LIGHT, button_color: GREEN_DARK, background_color: BG, @@ -236,7 +236,7 @@ pub const fn button_confirm() -> ButtonStyleSheet { pub const fn button_cancel() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: RED, background_color: BG, @@ -245,7 +245,7 @@ pub const fn button_cancel() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: RED_DARK, background_color: BG, @@ -254,7 +254,7 @@ pub const fn button_cancel() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: GREY_LIGHT, button_color: RED, background_color: BG, @@ -272,7 +272,7 @@ pub const fn button_danger() -> ButtonStyleSheet { pub const fn button_reset() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: YELLOW, background_color: BG, @@ -281,7 +281,7 @@ pub const fn button_reset() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: YELLOW_DARK, background_color: BG, @@ -290,7 +290,7 @@ pub const fn button_reset() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: YELLOW, background_color: BG, @@ -304,7 +304,7 @@ pub const fn button_reset() -> ButtonStyleSheet { pub const fn button_moreinfo() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: BG, background_color: BG, @@ -313,7 +313,7 @@ pub const fn button_moreinfo() -> ButtonStyleSheet { border_width: 2, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: BG, background_color: BG, @@ -322,7 +322,7 @@ pub const fn button_moreinfo() -> ButtonStyleSheet { border_width: 2, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: GREY_LIGHT, button_color: BG, background_color: BG, @@ -336,7 +336,7 @@ pub const fn button_moreinfo() -> ButtonStyleSheet { pub const fn button_info() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: BLUE, background_color: BG, @@ -345,7 +345,7 @@ pub const fn button_info() -> ButtonStyleSheet { border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: FG, button_color: BLUE_DARK, background_color: BG, @@ -354,7 +354,7 @@ pub const fn button_info() -> ButtonStyleSheet { border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::BOLD_UPPER, text_color: GREY_LIGHT, button_color: BLUE, background_color: BG, @@ -593,7 +593,7 @@ pub const fn loader_lock_icon() -> LoaderStyleSheet { pub const TEXT_NORMAL: TextStyle = TextStyle::new(Font::NORMAL, FG, BG, GREY_LIGHT, GREY_LIGHT); pub const TEXT_DEMIBOLD: TextStyle = TextStyle::new(Font::DEMIBOLD, FG, BG, GREY_LIGHT, GREY_LIGHT); -pub const TEXT_BOLD: TextStyle = TextStyle::new(Font::BOLD, FG, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_BOLD: TextStyle = TextStyle::new(Font::BOLD_UPPER, FG, BG, GREY_LIGHT, GREY_LIGHT); pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, FG, BG, GREY_LIGHT, GREY_LIGHT) .with_line_breaking(LineBreaking::BreakWordsNoHyphen) .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) @@ -629,7 +629,7 @@ pub fn textstyle_number(num: i32) -> &'static TextStyle { let font = Font::from_i32(-num); match font { Some(Font::DEMIBOLD) => &TEXT_DEMIBOLD, - Some(Font::BOLD) => &TEXT_BOLD, + Some(Font::BOLD_UPPER) => &TEXT_BOLD, Some(Font::MONO) => &TEXT_MONO, _ => &TEXT_NORMAL, } diff --git a/core/src/trezor/ui/layouts/progress.py b/core/src/trezor/ui/layouts/progress.py index e08592d876..89c5db5b0f 100644 --- a/core/src/trezor/ui/layouts/progress.py +++ b/core/src/trezor/ui/layouts/progress.py @@ -58,13 +58,6 @@ def progress( if description is None: description = TR.progress__please_wait # def_arg - if title is not None: - title = title.upper() - elif not utils.MODEL_IS_T2B1: - # on TT, uppercase the description which ends up on top of the screen - # when no title is set - description = description.upper() - return RustProgress( layout=trezorui2.show_progress( description=description, diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 91d0b87ae4..ae54d338fd 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -277,7 +277,7 @@ def _placeholder_confirm( verb = verb or TR.buttons__confirm # def_arg return confirm_action( br_type, - title.upper(), + title, data, description, verb=verb, @@ -302,7 +302,7 @@ async def get_bool( result = await interact( RustLayout( trezorui2.confirm_action( - title=title.upper(), + title=title, action=data, description=description, verb=verb, @@ -340,9 +340,6 @@ def confirm_action( br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg - if verb_cancel is not None: - verb_cancel = verb_cancel.upper() - if description is not None and description_param is not None: description = description.format(description_param) @@ -350,10 +347,10 @@ def confirm_action( interact( RustLayout( trezorui2.confirm_action( - title=title.upper(), + title=title, action=action, description=description, - verb=verb.upper(), + verb=verb, verb_cancel=verb_cancel, hold=hold, reverse=reverse, @@ -403,7 +400,7 @@ def confirm_reset_device( interact( RustLayout( trezorui2.confirm_reset_device( - title=title.upper(), + title=title, button=button, ) ), @@ -446,7 +443,7 @@ def confirm_path_warning( title = f"{TR.words__unknown} {path_type if path_type else 'path'}" return _placeholder_confirm( "path_warning", - title.upper(), + title, description=path, br_code=ButtonRequestType.UnknownDerivationPath, ) @@ -546,7 +543,7 @@ def xpub_title(i: int) -> str: # User pressed left cancel button, show mismatch dialogue. else: result = await ctx_wait( - RustLayout(trezorui2.show_mismatch(title=mismatch_title.upper())) + RustLayout(trezorui2.show_mismatch(title=mismatch_title)) ) assert result in (CONFIRMED, CANCELLED) # Right button aborts action, left goes back to showing address. @@ -567,7 +564,7 @@ def show_pubkey( mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg return show_address( address=pubkey, - title=title.upper(), + title=title, account=account, path=path, br_type=br_type, @@ -589,7 +586,7 @@ def _show_modal( ) -> Awaitable[None]: return confirm_action( br_type, - header.upper(), + header, subheader, content, verb=button_confirm or "", @@ -638,7 +635,7 @@ def show_warning( return interact( RustLayout( trezorui2.show_warning( # type: ignore [Argument missing for parameter "title"] - button=button.upper(), + button=button, warning=content, # type: ignore [No parameter named "warning"] description=subheader or "", ) @@ -705,7 +702,7 @@ async def confirm_output( trezorui2.confirm_output_address( address=address, address_label=address_label or "", - address_title=address_title.upper(), + address_title=address_title, chunkify=chunkify, ) ), @@ -718,7 +715,7 @@ async def confirm_output( result = await interact( RustLayout( trezorui2.confirm_output_amount( - amount_title=amount_title.upper(), + amount_title=amount_title, amount=amount, ) ), @@ -776,11 +773,11 @@ async def should_show_more( result = await interact( RustLayout( trezorui2.confirm_with_info( - title=title.upper(), + title=title, items=para, - button=confirm.upper(), + button=confirm, verb_cancel=verb_cancel, # type: ignore [No parameter named "verb_cancel"] - info_button=button_text.upper(), # unused on TR + info_button=button_text, # unused on TR ) ), br_type, @@ -809,7 +806,6 @@ def confirm_blob( chunkify: bool = False, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg - title = title.upper() layout = RustLayout( trezorui2.confirm_blob( title=title, @@ -892,7 +888,7 @@ def confirm_address( ) -> Awaitable[None]: return confirm_blob( br_type, - title.upper(), + title, address, description, br_code=br_code, @@ -925,7 +921,7 @@ def confirm_amount( description = description or f"{TR.words__amount}:" # def_arg return confirm_blob( br_type, - title.upper(), + title, amount, description, br_code=br_code, @@ -955,7 +951,7 @@ def handle_bytes(prop: PropertyType): interact( RustLayout( trezorui2.confirm_properties( - title=title.upper(), + title=title, items=map(handle_bytes, props), # type: ignore [cannot be assigned to parameter "items"] hold=hold, ) @@ -983,15 +979,12 @@ async def confirm_value( if not verb and not hold: raise ValueError("Either verb or hold=True must be set") - if verb: - verb = verb.upper() - if info_items is None: return await raise_if_not_confirmed( interact( RustLayout( trezorui2.confirm_value( # type: ignore [Argument missing for parameter "subtitle"] - title=title.upper(), + title=title, description=description, value=value, verb=verb or TR.buttons__hold_to_confirm, @@ -1011,7 +1004,7 @@ async def confirm_value( while True: should_show_more_layout = RustLayout( trezorui2.confirm_with_info( - title=title.upper(), + title=title, items=((ui.NORMAL, value),), button=verb or TR.buttons__confirm, info_button=TR.buttons__info, @@ -1035,7 +1028,7 @@ async def confirm_value( await ctx_wait( RustLayout( trezorui2.confirm_blob( - title=info_title.upper(), + title=info_title, data=info_value, description=description, extra=None, @@ -1232,7 +1225,7 @@ def confirm_metadata( ) -> Awaitable[None]: return _placeholder_confirm( br_type, - title.upper(), + title, description=content.format(param), hold=hold, br_code=br_code, @@ -1241,7 +1234,7 @@ def confirm_metadata( def confirm_replacement(description: str, txid: str) -> Awaitable[None]: return confirm_value( - description.upper(), + description, txid, TR.send__transaction_id, "confirm_replacement", @@ -1349,7 +1342,7 @@ def confirm_sign_identity( return _placeholder_confirm( "confirm_sign_identity", - f"{TR.words__sign} {proto}".upper(), + f"{TR.words__sign} {proto}", text, br_code=BR_TYPE_OTHER, ) @@ -1460,7 +1453,7 @@ async def request_pin_on_device( result = await interact( RustLayout( trezorui2.request_pin( - prompt=prompt.upper(), + prompt=prompt, subprompt=subprompt, allow_cancel=allow_cancel, wrong_pin=wrong_pin, @@ -1546,7 +1539,7 @@ async def confirm_set_new_pin( ) -> None: await _confirm_multiple_pages_texts( br_type, - title.upper(), + title, [description, information], TR.buttons__turn_on, br_code, @@ -1563,7 +1556,7 @@ async def confirm_set_new_pin( ] await _confirm_multiple_pages_texts( br_type, - title.upper(), + title, next_info, TR.buttons__continue, br_code, diff --git a/core/src/trezor/ui/layouts/tr/fido.py b/core/src/trezor/ui/layouts/tr/fido.py index 896b005940..b05e956dbc 100644 --- a/core/src/trezor/ui/layouts/tr/fido.py +++ b/core/src/trezor/ui/layouts/tr/fido.py @@ -14,7 +14,7 @@ async def confirm_fido( """Webauthn confirmation for one or more credentials.""" confirm = RustLayout( trezorui2.confirm_fido( # type: ignore [Argument missing for parameter "icon_name"] - title=header.upper(), + title=header, app_name=app_name, accounts=accounts, ) diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index 4d21f59d1d..db40ae9efc 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -94,7 +94,7 @@ async def continue_recovery( trezorui2.confirm_recovery( title="", description=text, - button=button_label.upper(), + button=button_label, info_button=False, dry_run=dry_run, show_info=show_info, # type: ignore [No parameter named "show_info"] diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index 0c8149b98a..d86d974dfd 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -88,7 +88,7 @@ async def select_word( while len(words) < 3: words.append(words[-1]) - word_ordinal = format_ordinal(checked_index + 1).upper() + word_ordinal = format_ordinal(checked_index + 1) result = await wait( RustLayout( trezorui2.select_word( @@ -148,7 +148,7 @@ async def _prompt_number( ) -> int: num_input = RustLayout( trezorui2.request_number( - title=title.upper(), + title=title, count=count, min_count=min_count, max_count=max_count, @@ -292,6 +292,6 @@ async def show_reset_warning( br_type, subheader or "", content, - button.upper(), + button, br_code=br_code, ) diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 34b4e603ba..6dd82ff8f3 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -256,11 +256,6 @@ def confirm_action( exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> Awaitable[None]: - if verb is not None: - verb = verb.upper() - if verb_cancel is not None: - verb_cancel = verb_cancel.upper() - if description is not None and description_param is not None: description = description.format(description_param) @@ -268,7 +263,7 @@ def confirm_action( interact( RustLayout( trezorui2.confirm_action( - title=title.upper(), + title=title, action=action, description=description, verb=verb, @@ -292,8 +287,6 @@ def confirm_single( description_param: str | None = None, verb: str | None = None, ) -> Awaitable[None]: - if verb is not None: - verb = verb.upper() description_param = description_param or "" # Placeholders are coming from translations in form of {0} @@ -306,7 +299,7 @@ def confirm_single( interact( RustLayout( trezorui2.confirm_emphasized( - title=title.upper(), + title=title, items=(begin, (True, description_param), end), verb=verb, ) @@ -327,7 +320,7 @@ def confirm_reset_device(title: str, recovery: bool = False) -> Awaitable[None]: interact( RustLayout( trezorui2.confirm_reset_device( - title=title.upper(), + title=title, button=button, ) ), @@ -362,7 +355,7 @@ async def prompt_backup() -> bool: result = await interact( RustLayout( trezorui2.confirm_action( - title=TR.words__warning.upper(), + title=TR.words__warning, action=TR.backup__want_to_skip, description=TR.backup__can_back_up_anytime, verb=TR.buttons__back_up, @@ -515,7 +508,7 @@ def show_pubkey( mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg return show_address( address=pubkey, - title=title.upper(), + title=title, account=account, path=path, br_type=br_type, @@ -538,7 +531,7 @@ async def show_error_and_raise( trezorui2.show_error( title=subheader or "", description=content, - button=button.upper(), + button=button, allow_cancel=False, ) ), @@ -562,7 +555,7 @@ def show_warning( trezorui2.show_warning( title=content, description=subheader or "", - button=button.upper(), + button=button, ) ), br_type, @@ -584,7 +577,7 @@ def show_success( trezorui2.show_success( title=content, description=subheader or "", - button=button.upper(), + button=button, allow_cancel=False, ) ), @@ -605,7 +598,7 @@ async def confirm_output( chunkify: bool = False, ) -> None: if title is not None: - # TODO: handle translation + # TODO: handle translation: if title.upper().startswith("CONFIRM "): title = title[len("CONFIRM ") :] amount_title = title @@ -621,7 +614,7 @@ async def confirm_output( result = await interact( RustLayout( trezorui2.confirm_value( - title=recipient_title.upper(), + title=recipient_title, subtitle=address_label, description=None, value=address, @@ -640,7 +633,7 @@ async def confirm_output( result = await interact( RustLayout( trezorui2.confirm_value( - title=amount_title.upper(), + title=amount_title, subtitle=None, description=None, value=amount, @@ -709,10 +702,10 @@ async def should_show_more( result = await interact( RustLayout( trezorui2.confirm_with_info( - title=title.upper(), + title=title, items=para, - button=confirm.upper(), - info_button=button_text.upper(), + button=confirm, + info_button=button_text, ) ), br_type, @@ -780,7 +773,6 @@ def confirm_blob( chunkify: bool = False, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg - title = title.upper() layout = RustLayout( trezorui2.confirm_blob( title=title, @@ -880,9 +872,6 @@ def confirm_value( if not verb and not hold: raise ValueError("Either verb or hold=True must be set") - if verb: - verb = verb.upper() - info_items = info_items or [] info_layout = RustLayout( trezorui2.show_info_with_cancel( @@ -896,7 +885,7 @@ def confirm_value( with_info( RustLayout( trezorui2.confirm_value( - title=title.upper(), + title=title, subtitle=subtitle, description=description, value=value, @@ -927,7 +916,7 @@ def confirm_properties( interact( RustLayout( trezorui2.confirm_properties( - title=title.upper(), + title=title, items=items, hold=hold, ) @@ -984,7 +973,7 @@ def confirm_summary( total_layout = RustLayout( trezorui2.confirm_total( - title=title.upper(), + title=title, items=items, info_button=bool(info_items), ) @@ -992,7 +981,7 @@ def confirm_summary( info_items = info_items or [] info_layout = RustLayout( trezorui2.show_info_with_cancel( - title=info_title.upper() if info_title else TR.words__title_information, + title=info_title if info_title else TR.words__title_information, items=info_items, ) ) @@ -1034,7 +1023,7 @@ async def confirm_ethereum_tx( # Allowing going back and forth between recipient and summary/details await confirm_blob( br_type, - TR.words__recipient.upper(), + TR.words__recipient, recipient, verb=TR.buttons__continue, chunkify=chunkify, @@ -1144,11 +1133,11 @@ def confirm_metadata( verb = verb or TR.buttons__continue # def_arg return confirm_action( br_type, - title=title.upper(), + title=title, action="", description=content, description_param=param, - verb=verb.upper(), + verb=verb, hold=hold, br_code=br_code, ) @@ -1157,7 +1146,7 @@ def confirm_metadata( def confirm_replacement(title: str, txid: str) -> Awaitable[None]: return confirm_blob( "confirm_replacement", - title.upper(), + title, txid, TR.send__transaction_id, TR.buttons__continue, @@ -1244,7 +1233,7 @@ def confirm_modify_fee( ) -> Awaitable[None]: fee_layout = RustLayout( trezorui2.confirm_modify_fee( - title=title.upper(), + title=title, sign=sign, user_fee_change=user_fee_change, total_fee_new=total_fee_new, @@ -1499,7 +1488,7 @@ def confirm_set_new_pin( interact( RustLayout( trezorui2.confirm_emphasized( - title=title.upper(), + title=title, items=( (True, description + "\n\n"), information, diff --git a/core/src/trezor/ui/layouts/tt/fido.py b/core/src/trezor/ui/layouts/tt/fido.py index 9dc42c152f..f4f628e469 100644 --- a/core/src/trezor/ui/layouts/tt/fido.py +++ b/core/src/trezor/ui/layouts/tt/fido.py @@ -56,7 +56,7 @@ async def confirm_fido( """Webauthn confirmation for one or more credentials.""" confirm = _RustFidoLayout( trezorui2.confirm_fido( - title=header.upper(), + title=header, app_name=app_name, icon_name=icon_name, accounts=accounts, diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index 10c8f3aa5f..a3c99e4fc8 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -132,7 +132,7 @@ async def continue_recovery( trezorui2.confirm_recovery( title=text, description=description, - button=button_label.upper(), + button=button_label, info_button=info_func is not None, dry_run=dry_run, ) @@ -161,7 +161,7 @@ async def show_recovery_warning( trezorui2.show_warning( title=content, description=subheader or "", - button=button.upper(), + button=button, allow_cancel=False, ) ), diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index a5f74be379..c5a08d10f6 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -158,7 +158,7 @@ async def _prompt_number( ) -> int: num_input = RustLayout( trezorui2.request_number( - title=title.upper(), + title=title, description=description, count=count, min_count=min_count, @@ -359,7 +359,7 @@ async def show_reset_warning( trezorui2.show_warning( title=subheader or "", description=content, - button=button.upper(), + button=button, allow_cancel=False, ) ), From f8fcb49ba681297ded7ac513c7d84d9ae55dc56b Mon Sep 17 00:00:00 2001 From: obrusvit Date: Tue, 9 Apr 2024 21:27:26 +0200 Subject: [PATCH 018/626] refactor(core): allow changing button font on R By default, buttons have uppercased font. The addition is necessary to customize font on info buttons where we need normal font. [no changelog] --- .../rust/src/ui/model_tr/component/button.rs | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/core/embed/rust/src/ui/model_tr/component/button.rs b/core/embed/rust/src/ui/model_tr/component/button.rs index 04d7762db9..e1bfd8c8ec 100644 --- a/core/embed/rust/src/ui/model_tr/component/button.rs +++ b/core/embed/rust/src/ui/model_tr/component/button.rs @@ -87,11 +87,6 @@ impl Button { self.content = ButtonContent::Text(text); } - /// Changing the style of the button. - pub fn set_style(&mut self, styles: ButtonStyleSheet) { - self.styles = styles; - } - // Setting the visual state of the button. fn set(&mut self, ctx: &mut EventCtx, state: State) { if self.state != state { @@ -295,6 +290,7 @@ pub struct ButtonStyle { impl ButtonStyleSheet { pub fn new( + font: Font, normal_color: Color, active_color: Color, with_outline: bool, @@ -304,7 +300,7 @@ impl ButtonStyleSheet { ) -> Self { Self { normal: ButtonStyle { - font: theme::FONT_BUTTON, + font, text_color: normal_color, with_outline, with_arms, @@ -312,7 +308,7 @@ impl ButtonStyleSheet { offset, }, active: ButtonStyle { - font: theme::FONT_BUTTON, + font, text_color: active_color, with_outline, with_arms, @@ -324,12 +320,14 @@ impl ButtonStyleSheet { // White text in normal mode. pub fn default( + font: Font, with_outline: bool, with_arms: bool, fixed_width: Option, offset: Offset, ) -> Self { Self::new( + font, theme::FG, theme::BG, with_outline, @@ -344,6 +342,7 @@ impl ButtonStyleSheet { #[derive(Clone)] pub struct ButtonDetails { pub content: ButtonContent, + font: Font, pub duration: Option, with_outline: bool, with_arms: bool, @@ -357,6 +356,7 @@ impl ButtonDetails { pub fn text(text: TString<'static>) -> Self { Self { content: ButtonContent::Text(text), + font: Font::NORMAL_UPPER, duration: None, with_outline: true, with_arms: false, @@ -370,6 +370,7 @@ impl ButtonDetails { pub fn icon(icon: Icon) -> Self { Self { content: ButtonContent::Icon(icon), + font: Font::NORMAL_UPPER, duration: None, with_outline: false, with_arms: false, @@ -469,9 +470,16 @@ impl ButtonDetails { self } + /// Specifying the font of the button. + pub fn with_font(mut self, font: Font) -> Self { + self.font = font; + self + } + /// Button style that should be applied. pub fn style(&self) -> ButtonStyleSheet { ButtonStyleSheet::default( + self.font, self.with_outline, self.with_arms, self.fixed_width, @@ -539,7 +547,11 @@ impl ButtonLayout { Self::new( Some(ButtonDetails::from_text_possible_icon(left)), Some(ButtonDetails::armed_text(middle)), - Some(ButtonDetails::text("i".into()).with_fixed_width(theme::BUTTON_ICON_WIDTH)), + Some( + ButtonDetails::text("i".into()) + .with_fixed_width(theme::BUTTON_ICON_WIDTH) + .with_font(Font::NORMAL), + ), ) } @@ -548,7 +560,11 @@ impl ButtonLayout { Self::new( Some(ButtonDetails::cancel_icon()), Some(ButtonDetails::armed_text(middle)), - Some(ButtonDetails::text("i".into()).with_fixed_width(theme::BUTTON_ICON_WIDTH)), + Some( + ButtonDetails::text("i".into()) + .with_fixed_width(theme::BUTTON_ICON_WIDTH) + .with_font(Font::NORMAL), + ), ) } @@ -665,7 +681,11 @@ impl ButtonLayout { Self::new( Some(ButtonDetails::up_arrow_icon()), Some(ButtonDetails::armed_text(text)), - Some(ButtonDetails::text("i".into()).with_fixed_width(theme::BUTTON_ICON_WIDTH)), + Some( + ButtonDetails::text("i".into()) + .with_fixed_width(theme::BUTTON_ICON_WIDTH) + .with_font(Font::NORMAL), + ), ) } From 68e01a48cbd62a58ded531477f19855cfcf1bb68 Mon Sep 17 00:00:00 2001 From: obrusvit Date: Wed, 17 Apr 2024 12:37:41 +0200 Subject: [PATCH 019/626] fix(core/ui): fix model R altcoin summary [no changelog] --- core/embed/rust/src/ui/model_tr/component/flow.rs | 15 ++++++++++----- core/embed/rust/src/ui/model_tr/layout.rs | 4 +++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/core/embed/rust/src/ui/model_tr/component/flow.rs b/core/embed/rust/src/ui/model_tr/component/flow.rs index 85a1bc8c41..f1363bdec6 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow.rs @@ -2,6 +2,7 @@ use crate::{ strutil::TString, ui::{ component::{Child, Component, ComponentExt, Event, EventCtx, Pad, Paginate}, + constant::SCREEN, geometry::Rect, }, }; @@ -94,11 +95,15 @@ where /// position. fn change_current_page(&mut self, ctx: &mut EventCtx) { self.current_page = self.pages.get(self.page_counter); - if let Some(title) = self.current_page.title() { - self.title = Some(Title::new(title)); - self.title.place(self.title_area); - } else { - self.title = None; + if !self.has_common_title { + if let Some(title) = self.current_page.title() { + self.title = Some(Title::new(title)); + } else { + self.title = None; + } + // in case the title was added or removed, re-calculate the areas for + // subcomponents + self.place(SCREEN); } let scrollbar_active_index = self .pages diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index a20d593e0e..708f50b773 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -735,6 +735,8 @@ extern "C" fn new_altcoin_tx_summary(n_args: usize, args: *const Obj, kwargs: *m let btn_actions = ButtonActions::cancel_confirm_next(); let ops = OpTextLayout::new(theme::TEXT_MONO) + .text_bold(amount_title) + .newline() .text_mono(amount_value) .newline() .newline_half() @@ -743,7 +745,7 @@ extern "C" fn new_altcoin_tx_summary(n_args: usize, args: *const Obj, kwargs: *m .text_mono(fee_value); let formatted = FormattedText::new(ops); - Page::new(btn_layout, btn_actions, formatted).with_title(amount_title) + Page::new(btn_layout, btn_actions, formatted) } 1 => { // Other information From fccfa43ac9df57c1fc5a4358fc4d1e77f8cfc050 Mon Sep 17 00:00:00 2001 From: obrusvit Date: Sun, 28 Apr 2024 15:49:30 +0200 Subject: [PATCH 020/626] fix(core/ui): fix model R common title The title previously disappeared after going back and forth. Used in PIN setting and FIDO confirm. [no changelog] --- core/embed/rust/src/ui/model_tr/component/flow.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/embed/rust/src/ui/model_tr/component/flow.rs b/core/embed/rust/src/ui/model_tr/component/flow.rs index f1363bdec6..43c599e15b 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow.rs @@ -20,8 +20,9 @@ where pages: FlowPages, /// Instance of the current Page current_page: Page, - /// Title being shown at the top in bold + /// Title being shown at the top in bold upper title: Option, + has_common_title: bool, scrollbar: Child<ScrollBar>, content_area: Rect, title_area: Rect, @@ -46,6 +47,7 @@ where pages, current_page, title, + has_common_title: false, content_area: Rect::zero(), title_area: Rect::zero(), scrollbar: Child::new(ScrollBar::to_be_filled_later()), @@ -65,6 +67,7 @@ where /// with the page content, as the content will be offset. pub fn with_common_title(mut self, title: TString<'static>) -> Self { self.title = Some(Title::new(title)); + self.has_common_title = true; self } From b24e044499aa89184802c24cc6c43b996cdfa3ea Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 28 Apr 2024 20:28:51 +0200 Subject: [PATCH 021/626] fix(tests): button content comparison [no changelog] --- tests/device_tests/test_language.py | 2 +- tests/persistence_tests/test_shamir_persistence.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/device_tests/test_language.py b/tests/device_tests/test_language.py index 7a13bd6cb7..205055008f 100644 --- a/tests/device_tests/test_language.py +++ b/tests/device_tests/test_language.py @@ -70,7 +70,7 @@ def ping_input_flow(client: Client, title: str, right_button: str): yield layout = client.debug.wait_layout() assert layout.title().upper() == title.upper() - assert layout.button_contents()[-1] == right_button.upper() + assert layout.button_contents()[-1].upper() == right_button.upper() client.debug.press_yes() # TT does not have a right button text (but a green OK tick) diff --git a/tests/persistence_tests/test_shamir_persistence.py b/tests/persistence_tests/test_shamir_persistence.py index fb3cc5881d..53553d8399 100644 --- a/tests/persistence_tests/test_shamir_persistence.py +++ b/tests/persistence_tests/test_shamir_persistence.py @@ -42,7 +42,7 @@ def test_abort(core_emulator: Emulator): device_handler.run(device.recover, pin_protection=False) - assert debug.wait_layout().title() == "RECOVER WALLET" + assert debug.wait_layout().title().lower() == "recover wallet" layout = debug.click(buttons.OK, wait=True) assert "number of words" in layout.text_content() @@ -61,7 +61,7 @@ def test_abort(core_emulator: Emulator): assert "Enter your backup" in debug.read_layout().text_content() layout = debug.click(buttons.CANCEL, wait=True) - assert layout.title() in ("ABORT RECOVERY", "CANCEL RECOVERY") + assert layout.title().lower() in ("abort recovery", "cancel recovery") layout = debug.click(buttons.OK, wait=True) assert layout.main_component() == "Homescreen" From aaff0fe2d30300356cec11a9d8ac894fde269264 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 9 Apr 2024 13:33:23 +0200 Subject: [PATCH 022/626] refactor(core): do not use all-caps in en.json The change is necessary for future models where titles might not be uppercased. [no changelog] --- .../generated/translated_string.rs | 720 +++++++++--------- core/mocks/trezortranslate_keys.pyi | 360 ++++----- core/translations/en.json | 360 ++++----- core/translations/signatures.json | 6 +- 4 files changed, 723 insertions(+), 723 deletions(-) diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 6f3f09a532..1fdfb22e1b 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -17,24 +17,24 @@ pub enum TranslatedString { addr_mismatch__wrong_derivation_path = 4, // "Wrong derivation path for selected account." addr_mismatch__xpub_mismatch = 5, // "XPUB mismatch?" address__public_key = 6, // "Public key" - address__title_cosigner = 7, // "COSIGNER" - address__title_receive_address = 8, // "RECEIVE ADDRESS" - address__title_yours = 9, // "YOURS" + address__title_cosigner = 7, // "Cosigner" + address__title_receive_address = 8, // "Receive address" + address__title_yours = 9, // "Yours" address_details__derivation_path = 10, // "Derivation path:" - address_details__title_receive_address = 11, // "RECEIVE ADDRESS" - address_details__title_receiving_to = 12, // "RECEIVING TO" + address_details__title_receive_address = 11, // "Receive address" + address_details__title_receiving_to = 12, // "Receiving to" authenticate__confirm_template = 13, // "Allow connected computer to confirm your {0} is genuine?" authenticate__header = 14, // "Authenticate device" auto_lock__change_template = 15, // "Auto-lock your Trezor after {0} of inactivity?" - auto_lock__title = 16, // "AUTO-LOCK DELAY" + auto_lock__title = 16, // "Auto-lock delay" backup__can_back_up_anytime = 17, // "You can back up your Trezor once, at any time." backup__it_should_be_backed_up = 18, // "You should back up your new wallet right now." backup__it_should_be_backed_up_now = 19, // "It should be backed up now!" backup__new_wallet_created = 20, // "New wallet created.\n" backup__new_wallet_successfully_created = 21, // "New wallet created successfully." backup__recover_anytime = 22, // "You can use your backup to recover your wallet at any time." - backup__title_backup_wallet = 23, // "BACK UP WALLET" - backup__title_skip = 24, // "SKIP BACKUP" + backup__title_backup_wallet = 23, // "Back up wallet" + backup__title_skip = 24, // "Skip backup" backup__want_to_skip = 25, // "Are you sure you want to skip the backup?" #[cfg(feature = "universal_fw")] binance__buy = 26, // "Buy" @@ -72,59 +72,59 @@ pub enum TranslatedString { bitcoin__new_fee_rate = 47, // "New fee rate:" bitcoin__simple_send_of = 48, // "Simple send of" bitcoin__ticket_amount = 49, // "Ticket amount:" - bitcoin__title_confirm_details = 50, // "CONFIRM DETAILS" - bitcoin__title_finalize_transaction = 51, // "FINALIZE TRANSACTION" - bitcoin__title_high_mining_fee = 52, // "HIGH MINING FEE" - bitcoin__title_meld_transaction = 53, // "MELD TRANSACTIONS" - bitcoin__title_modify_amount = 54, // "MODIFY AMOUNT" - bitcoin__title_payjoin = 55, // "PAYJOIN" - bitcoin__title_proof_of_ownership = 56, // "PROOF OF OWNERSHIP" - bitcoin__title_purchase_ticket = 57, // "PURCHASE TICKET" - bitcoin__title_update_transaction = 58, // "UPDATE TRANSACTION" + bitcoin__title_confirm_details = 50, // "Confirm details" + bitcoin__title_finalize_transaction = 51, // "Finalize transaction" + bitcoin__title_high_mining_fee = 52, // "High mining fee" + bitcoin__title_meld_transaction = 53, // "Meld transactions" + bitcoin__title_modify_amount = 54, // "Modify amount" + bitcoin__title_payjoin = 55, // "Payjoin" + bitcoin__title_proof_of_ownership = 56, // "Proof of ownership" + bitcoin__title_purchase_ticket = 57, // "Purchase ticket" + bitcoin__title_update_transaction = 58, // "Update transaction" bitcoin__unknown_path = 59, // "Unknown path" bitcoin__unknown_transaction = 60, // "Unknown transaction" bitcoin__unusually_high_fee = 61, // "Unusually high fee." bitcoin__unverified_external_inputs = 62, // "The transaction contains unverified external inputs." bitcoin__valid_signature = 63, // "The signature is valid." bitcoin__voting_rights = 64, // "Voting rights to:" - buttons__abort = 65, // "ABORT" - buttons__access = 66, // "ACCESS" - buttons__again = 67, // "AGAIN" - buttons__allow = 68, // "ALLOW" - buttons__back = 69, // "BACK" - buttons__back_up = 70, // "BACK UP" - buttons__cancel = 71, // "CANCEL" - buttons__change = 72, // "CHANGE" - buttons__check = 73, // "CHECK" - buttons__check_again = 74, // "CHECK AGAIN" - buttons__close = 75, // "CLOSE" - buttons__confirm = 76, // "CONFIRM" - buttons__continue = 77, // "CONTINUE" - buttons__details = 78, // "DETAILS" - buttons__enable = 79, // "ENABLE" - buttons__enter = 80, // "ENTER" - buttons__enter_share = 81, // "ENTER SHARE" - buttons__export = 82, // "EXPORT" - buttons__format = 83, // "FORMAT" - buttons__go_back = 84, // "GO BACK" - buttons__hold_to_confirm = 85, // "HOLD TO CONFIRM" - buttons__info = 86, // "INFO" - buttons__install = 87, // "INSTALL" - buttons__more_info = 88, // "MORE INFO" - buttons__ok_i_understand = 89, // "OK, I UNDERSTAND" - buttons__purchase = 90, // "PURCHASE" - buttons__quit = 91, // "QUIT" - buttons__restart = 92, // "RESTART" - buttons__retry = 93, // "RETRY" - buttons__select = 94, // "SELECT" - buttons__set = 95, // "SET" - buttons__show_all = 96, // "SHOW ALL" - buttons__show_details = 97, // "SHOW DETAILS" - buttons__show_words = 98, // "SHOW WORDS" - buttons__skip = 99, // "SKIP" - buttons__try_again = 100, // "TRY AGAIN" - buttons__turn_off = 101, // "TURN OFF" - buttons__turn_on = 102, // "TURN ON" + buttons__abort = 65, // "Abort" + buttons__access = 66, // "Access" + buttons__again = 67, // "Again" + buttons__allow = 68, // "Allow" + buttons__back = 69, // "Back" + buttons__back_up = 70, // "Back up" + buttons__cancel = 71, // "Cancel" + buttons__change = 72, // "Change" + buttons__check = 73, // "Check" + buttons__check_again = 74, // "Check again" + buttons__close = 75, // "Close" + buttons__confirm = 76, // "Confirm" + buttons__continue = 77, // "Continue" + buttons__details = 78, // "Details" + buttons__enable = 79, // "Enable" + buttons__enter = 80, // "Enter" + buttons__enter_share = 81, // "Enter share" + buttons__export = 82, // "Export" + buttons__format = 83, // "Format" + buttons__go_back = 84, // "Go back" + buttons__hold_to_confirm = 85, // "Hold to confirm" + buttons__info = 86, // "Info" + buttons__install = 87, // "Install" + buttons__more_info = 88, // "More info" + buttons__ok_i_understand = 89, // "Ok, I understand" + buttons__purchase = 90, // "Purchase" + buttons__quit = 91, // "Quit" + buttons__restart = 92, // "Restart" + buttons__retry = 93, // "Retry" + buttons__select = 94, // "Select" + buttons__set = 95, // "Set" + buttons__show_all = 96, // "Show all" + buttons__show_details = 97, // "Show details" + buttons__show_words = 98, // "Show words" + buttons__skip = 99, // "Skip" + buttons__try_again = 100, // "Try again" + buttons__turn_off = 101, // "Turn off" + buttons__turn_on = 102, // "Turn on" #[cfg(feature = "universal_fw")] cardano__addr_base = 103, // "Base" #[cfg(feature = "universal_fw")] @@ -347,21 +347,21 @@ pub enum TranslatedString { coinjoin__do_not_disconnect = 213, // "Do not disconnect your Trezor!" coinjoin__max_mining_fee = 214, // "Max mining fee" coinjoin__max_rounds = 215, // "Max rounds" - coinjoin__title = 216, // "AUTHORIZE COINJOIN" - coinjoin__title_do_not_disconnect = 217, // "DO NOT DISCONNECT YOUR TREZOR!" - coinjoin__title_progress = 218, // "COINJOIN IN PROGRESS" + coinjoin__title = 216, // "Authorize coinjoin" + coinjoin__title_do_not_disconnect = 217, // "Do not disconnect your trezor!" + coinjoin__title_progress = 218, // "Coinjoin in progress" coinjoin__waiting_for_others = 219, // "Waiting for others" confirm_total__fee_rate = 220, // "Fee rate:" confirm_total__sending_from_account = 221, // "Sending from account:" - confirm_total__title_fee = 222, // "FEE INFORMATION" - confirm_total__title_sending_from = 223, // "SENDING FROM" + confirm_total__title_fee = 222, // "Fee information" + confirm_total__title_sending_from = 223, // "Sending from" debug__loading_seed = 224, // "Loading seed" debug__loading_seed_not_recommended = 225, // "Loading private seed is not recommended." device_name__change_template = 226, // "Change device name to {0}?" - device_name__title = 227, // "DEVICE NAME" + device_name__title = 227, // "Device name" entropy__send = 228, // "Do you really want to send entropy?" - entropy__title = 229, // "INTERNAL ENTROPY" - entropy__title_confirm = 230, // "CONFIRM ENTROPY" + entropy__title = 229, // "Internal entropy" + entropy__title_confirm = 230, // "Confirm entropy" #[cfg(feature = "universal_fw")] eos__about_to_sign_template = 231, // "You are about to sign {0}." #[cfg(feature = "universal_fw")] @@ -473,17 +473,17 @@ pub enum TranslatedString { #[cfg(feature = "universal_fw")] ethereum__sign_eip712 = 285, // "Really sign EIP-712 typed data?" #[cfg(feature = "universal_fw")] - ethereum__title_confirm_data = 286, // "CONFIRM DATA" + ethereum__title_confirm_data = 286, // "Confirm data" #[cfg(feature = "universal_fw")] - ethereum__title_confirm_domain = 287, // "CONFIRM DOMAIN" + ethereum__title_confirm_domain = 287, // "Confirm domain" #[cfg(feature = "universal_fw")] - ethereum__title_confirm_message = 288, // "CONFIRM MESSAGE" + ethereum__title_confirm_message = 288, // "Confirm message" #[cfg(feature = "universal_fw")] - ethereum__title_confirm_struct = 289, // "CONFIRM STRUCT" + ethereum__title_confirm_struct = 289, // "Confirm struct" #[cfg(feature = "universal_fw")] - ethereum__title_confirm_typed_data = 290, // "CONFIRM TYPED DATA" + ethereum__title_confirm_typed_data = 290, // "Confirm typed data" #[cfg(feature = "universal_fw")] - ethereum__title_signing_address = 291, // "SIGNING ADDRESS" + ethereum__title_signing_address = 291, // "Signing address" #[cfg(feature = "universal_fw")] ethereum__units_template = 292, // "{0} units" #[cfg(feature = "universal_fw")] @@ -492,7 +492,7 @@ pub enum TranslatedString { ethereum__valid_signature = 294, // "The signature is valid." experimental_mode__enable = 295, // "Enable experimental features?" experimental_mode__only_for_dev = 296, // "Only for development and beta testing!" - experimental_mode__title = 297, // "EXPERIMENTAL MODE" + experimental_mode__title = 297, // "Experimental mode" #[cfg(feature = "universal_fw")] fido__already_registered = 298, // "Already registered" #[cfg(feature = "universal_fw")] @@ -514,39 +514,39 @@ pub enum TranslatedString { #[cfg(feature = "universal_fw")] fido__please_enable_pin_protection = 307, // "Please enable PIN protection." #[cfg(feature = "universal_fw")] - fido__title_authenticate = 308, // "FIDO2 AUTHENTICATE" + fido__title_authenticate = 308, // "FIDO2 authenticate" #[cfg(feature = "universal_fw")] - fido__title_import_credential = 309, // "IMPORT CREDENTIAL" + fido__title_import_credential = 309, // "Import credential" #[cfg(feature = "universal_fw")] - fido__title_list_credentials = 310, // "LIST CREDENTIALS" + fido__title_list_credentials = 310, // "List credentials" #[cfg(feature = "universal_fw")] - fido__title_register = 311, // "FIDO2 REGISTER" + fido__title_register = 311, // "FIDO2 register" #[cfg(feature = "universal_fw")] - fido__title_remove_credential = 312, // "REMOVE CREDENTIAL" + fido__title_remove_credential = 312, // "Remove credential" #[cfg(feature = "universal_fw")] - fido__title_reset = 313, // "FIDO2 RESET" + fido__title_reset = 313, // "FIDO2 reset" #[cfg(feature = "universal_fw")] - fido__title_u2f_auth = 314, // "U2F AUTHENTICATE" + fido__title_u2f_auth = 314, // "U2F authenticate" #[cfg(feature = "universal_fw")] - fido__title_u2f_register = 315, // "U2F REGISTER" + fido__title_u2f_register = 315, // "U2F register" #[cfg(feature = "universal_fw")] - fido__title_verify_user = 316, // "FIDO2 VERIFY USER" + fido__title_verify_user = 316, // "FIDO2 verify user" #[cfg(feature = "universal_fw")] fido__unable_to_verify_user = 317, // "Unable to verify user." #[cfg(feature = "universal_fw")] fido__wanna_erase_credentials = 318, // "Do you really want to erase all credentials?" - firmware_update__title = 319, // "UPDATE FIRMWARE" - firmware_update__title_fingerprint = 320, // "FW FINGERPRINT" + firmware_update__title = 319, // "Update firmware" + firmware_update__title_fingerprint = 320, // "FW fingerprint" homescreen__click_to_connect = 321, // "Click to Connect" homescreen__click_to_unlock = 322, // "Click to Unlock" - homescreen__title_backup_failed = 323, // "BACKUP FAILED" - homescreen__title_backup_needed = 324, // "BACKUP NEEDED" - homescreen__title_coinjoin_authorized = 325, // "COINJOIN AUTHORIZED" - homescreen__title_experimental_mode = 326, // "EXPERIMENTAL MODE" - homescreen__title_no_usb_connection = 327, // "NO USB CONNECTION" - homescreen__title_pin_not_set = 328, // "PIN NOT SET" - homescreen__title_seedless = 329, // "SEEDLESS" - homescreen__title_set = 330, // "CHANGE HOMESCREEN?" + homescreen__title_backup_failed = 323, // "Backup failed" + homescreen__title_backup_needed = 324, // "Backup needed" + homescreen__title_coinjoin_authorized = 325, // "Coinjoin authorized" + homescreen__title_experimental_mode = 326, // "Experimental mode" + homescreen__title_no_usb_connection = 327, // "No USB connection" + homescreen__title_pin_not_set = 328, // "PIN not set" + homescreen__title_seedless = 329, // "Seedless" + homescreen__title_set = 330, // "Change homescreen?" inputs__back = 331, // "BACK" inputs__cancel = 332, // "CANCEL" inputs__delete = 333, // "DELETE" @@ -554,30 +554,30 @@ pub enum TranslatedString { inputs__return = 335, // "RETURN" inputs__show = 336, // "SHOW" inputs__space = 337, // "SPACE" - joint__title = 338, // "JOINT TRANSACTION" + joint__title = 338, // "Joint transaction" joint__to_the_total_amount = 339, // "To the total amount:" joint__you_are_contributing = 340, // "You are contributing:" language__change_to_template = 341, // "Change language to {0}?" language__changed = 342, // "Language changed successfully" language__progress = 343, // "Changing language" - language__title = 344, // "LANGUAGE SETTINGS" + language__title = 344, // "Language settings" lockscreen__tap_to_connect = 345, // "Tap to connect" lockscreen__tap_to_unlock = 346, // "Tap to unlock" - lockscreen__title_locked = 347, // "LOCKED" - lockscreen__title_not_connected = 348, // "NOT CONNECTED" + lockscreen__title_locked = 347, // "Locked" + lockscreen__title_not_connected = 348, // "Not connected" misc__decrypt_value = 349, // "Decrypt value" misc__encrypt_value = 350, // "Encrypt value" - misc__title_suite_labeling = 351, // "SUITE LABELING" + misc__title_suite_labeling = 351, // "Suite labeling" modify_amount__decrease_amount = 352, // "Decrease amount by:" modify_amount__increase_amount = 353, // "Increase amount by:" modify_amount__new_amount = 354, // "New amount:" - modify_amount__title = 355, // "MODIFY AMOUNT" + modify_amount__title = 355, // "Modify amount" modify_fee__decrease_fee = 356, // "Decrease fee by:" modify_fee__fee_rate = 357, // "Fee rate:" modify_fee__increase_fee = 358, // "Increase fee by:" modify_fee__new_transaction_fee = 359, // "New transaction fee:" modify_fee__no_change = 360, // "Fee did not change.\n" - modify_fee__title = 361, // "MODIFY FEE" + modify_fee__title = 361, // "Modify fee" modify_fee__transaction_fee = 362, // "Transaction fee:" #[cfg(feature = "universal_fw")] monero__confirm_export = 363, // "Confirm export" @@ -725,11 +725,11 @@ pub enum TranslatedString { passphrase__next_screen_will_show_passphrase = 437, // "Next screen will show the passphrase." passphrase__please_enter = 438, // "Please enter your passphrase." passphrase__revoke_on_device = 439, // "Do you want to revoke the passphrase on device setting?" - passphrase__title_confirm = 440, // "CONFIRM PASSPHRASE" - passphrase__title_enter = 441, // "ENTER PASSPHRASE" - passphrase__title_hide = 442, // "HIDE PASSPHRASE" - passphrase__title_settings = 443, // "PASSPHRASE SETTINGS" - passphrase__title_source = 444, // "PASSPHRASE SOURCE" + passphrase__title_confirm = 440, // "Confirm passphrase" + passphrase__title_enter = 441, // "Enter passphrase" + passphrase__title_hide = 442, // "Hide passphrase" + passphrase__title_settings = 443, // "Passphrase settings" + passphrase__title_source = 444, // "Passphrase source" passphrase__turn_off = 445, // "Turn off passphrase protection?" passphrase__turn_on = 446, // "Turn on passphrase protection?" pin__change = 447, // "Change PIN?" @@ -750,9 +750,9 @@ pub enum TranslatedString { pin__reenter_new = 462, // "Re-enter new PIN" pin__reenter_to_confirm = 463, // "Please re-enter PIN to confirm." pin__should_be_long = 464, // "PIN should be 4-50 digits long." - pin__title_check_pin = 465, // "CHECK PIN" - pin__title_settings = 466, // "PIN SETTINGS" - pin__title_wrong_pin = 467, // "WRONG PIN" + pin__title_check_pin = 465, // "Check PIN" + pin__title_settings = 466, // "PIN settings" + pin__title_wrong_pin = 467, // "Wrong PIN" pin__tries_left = 468, // "tries left" pin__turn_off = 469, // "Are you sure you want to turn off PIN protection?" pin__turn_on = 470, // "Turn on PIN protection?" @@ -771,14 +771,14 @@ pub enum TranslatedString { progress__loading_transaction = 483, // "Loading transaction..." progress__locking_device = 484, // "Locking the device..." progress__one_second_left = 485, // "1 second left" - progress__please_wait = 486, // "PLEASE WAIT" - storage_msg__processing = 487, // "PROCESSING" + progress__please_wait = 486, // "Please wait" + storage_msg__processing = 487, // "Processing" progress__refreshing = 488, // "Refreshing..." progress__signing_transaction = 489, // "Signing transaction..." progress__syncing = 490, // "Syncing..." progress__x_seconds_left_template = 491, // "{0} seconds left" reboot_to_bootloader__restart = 492, // "Trezor will restart in bootloader mode." - reboot_to_bootloader__title = 493, // "GO TO BOOTLOADER" + reboot_to_bootloader__title = 493, // "Go to bootloader" reboot_to_bootloader__version_by_template = 494, // "Firmware version {0}\nby {1}" recovery__cancel_dry_run = 495, // "Cancel backup check" recovery__check_dry_run = 496, // "Check your backup?" @@ -803,18 +803,18 @@ pub enum TranslatedString { recovery__share_already_entered = 515, // "Share already entered" recovery__share_from_another_shamir = 516, // "You have entered a share from another Shamir Backup." recovery__share_num_template = 517, // "Share {0}" - recovery__title = 518, // "RECOVER WALLET" - recovery__title_cancel_dry_run = 519, // "CANCEL BACKUP CHECK" - recovery__title_cancel_recovery = 520, // "CANCEL RECOVERY" - recovery__title_dry_run = 521, // "BACKUP CHECK" - recovery__title_recover = 522, // "RECOVER WALLET" - recovery__title_remaining_shares = 523, // "REMAINING SHARES" + recovery__title = 518, // "Recover wallet" + recovery__title_cancel_dry_run = 519, // "Cancel backup check" + recovery__title_cancel_recovery = 520, // "Cancel recovery" + recovery__title_dry_run = 521, // "Backup check" + recovery__title_recover = 522, // "Recover wallet" + recovery__title_remaining_shares = 523, // "Remaining shares" recovery__type_word_x_of_y_template = 524, // "Type word {0} of {1}" recovery__wallet_recovered = 525, // "Wallet recovered successfully" recovery__wanna_cancel_dry_run = 526, // "Are you sure you want to cancel the backup check?" recovery__wanna_cancel_recovery = 527, // "Are you sure you want to cancel the recovery process?" recovery__word_count_template = 528, // "({0} words)" - recovery__word_x_of_y_template = 529, // "WORD {0} OF {1}" + recovery__word_x_of_y_template = 529, // "Word {0} of {1}" recovery__x_more_items_starting_template_plural = 530, // "{count} more {plural} starting" recovery__x_more_shares_needed_template_plural = 531, // "{count} more {plural} needed." recovery__x_of_y_entered_template = 532, // "{0} of {1} shares entered successfully." @@ -822,13 +822,13 @@ pub enum TranslatedString { reset__advanced_group_threshold_info = 534, // "The group threshold specifies the number of groups required to recover your wallet." reset__all_x_of_y_template = 535, // "all {0} of {1} shares" reset__any_x_of_y_template = 536, // "any {0} of {1} shares" - reset__button_create = 537, // "CREATE WALLET" - reset__button_recover = 538, // "RECOVER WALLET" + reset__button_create = 537, // "Create wallet" + reset__button_recover = 538, // "Recover wallet" reset__by_continuing = 539, // "By continuing you agree to Trezor Company's terms and conditions." - reset__check_backup_title = 540, // "CHECK BACKUP" - reset__check_group_share_title_template = 541, // "CHECK G{0} - SHARE {1}" - reset__check_wallet_backup_title = 542, // "CHECK WALLET BACKUP" - reset__check_share_title_template = 543, // "CHECK SHARE #{0}" + reset__check_backup_title = 540, // "Check backup" + reset__check_group_share_title_template = 541, // "Check g{0} - share {1}" + reset__check_wallet_backup_title = 542, // "Check wallet backup" + reset__check_share_title_template = 543, // "Check share #{0}" reset__continue_with_next_share = 544, // "Continue with the next share." reset__continue_with_share_template = 545, // "Continue with share #{0}." reset__finished_verifying_group_template = 546, // "You have finished verifying your recovery shares for group {0}." @@ -837,7 +837,7 @@ pub enum TranslatedString { reset__group_description = 549, // "A group is made up of recovery shares." reset__group_info = 550, // "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds." reset__group_share_checked_successfully_template = 551, // "Group {0} - Share {1} checked successfully." - reset__group_share_title_template = 552, // "GROUP {0} - SHARE {1}" + reset__group_share_title_template = 552, // "Group {0} - share {1}" reset__more_info_at = 553, // "More info at" reset__need_all_share_template = 554, // "For recovery you need all {0} of the shares." reset__need_any_share_template = 555, // "For recovery you need any {0} of the shares." @@ -851,15 +851,15 @@ pub enum TranslatedString { reset__number_of_shares_info = 563, // "= total number of unique word lists used for wallet backup." reset__one_share = 564, // "1 share" reset__only_one_share_will_be_created = 565, // "Only one share will be created." - reset__recovery_wallet_backup_title = 566, // "WALLET BACKUP" - reset__recovery_share_title_template = 567, // "RECOVERY SHARE #{0}" + reset__recovery_wallet_backup_title = 566, // "Wallet backup" + reset__recovery_share_title_template = 567, // "Recovery share #{0}" reset__required_number_of_groups = 568, // "The required number of groups for recovery." reset__select_correct_word = 569, // "Select the correct word for each position." - reset__select_word_template = 570, // "SELECT {0} WORD" + reset__select_word_template = 570, // "Select {0} word" reset__select_word_x_of_y_template = 571, // "Select word {0} of {1}:" reset__set_it_to_count_template = 572, // "Set it to {0} and you will need " reset__share_checked_successfully_template = 573, // "Recovery share #{0} checked successfully." - reset__share_words_title = 574, // "STANDARD BACKUP" + reset__share_words_title = 574, // "Standard backup" reset__slip39_checklist_num_groups = 575, // "Number of groups" reset__slip39_checklist_num_shares = 576, // "Number of shares" reset__slip39_checklist_set_num_groups = 577, // "Set number of groups" @@ -867,21 +867,21 @@ pub enum TranslatedString { reset__slip39_checklist_set_sizes = 579, // "Set sizes and thresholds" reset__slip39_checklist_set_sizes_longer = 580, // "Set size and threshold for each group" reset__slip39_checklist_set_threshold = 581, // "Set threshold" - reset__slip39_checklist_title = 582, // "BACKUP CHECKLIST" + reset__slip39_checklist_title = 582, // "Backup checklist" reset__slip39_checklist_write_down = 583, // "Write down and check all shares" reset__slip39_checklist_write_down_recovery = 584, // "Write down and check all recovery shares" reset__the_threshold_sets_the_number_of_shares = 585, // "The threshold sets the number of shares " reset__threshold_info = 586, // "= minimum number of unique word lists used for recovery." - reset__title_backup_is_done = 587, // "BACKUP IS DONE" - reset__title_create_wallet = 588, // "CREATE WALLET" - reset__title_create_wallet_shamir = 589, // "CREATE WALLET (SHAMIR)" - reset__title_group_threshold = 590, // "GROUP THRESHOLD" - reset__title_number_of_groups = 591, // "NUMBER OF GROUPS" - reset__title_number_of_shares = 592, // "NUMBER OF SHARES" - reset__title_set_group_threshold = 593, // "SET GROUP THRESHOLD" - reset__title_set_number_of_groups = 594, // "SET NUMBER OF GROUPS" - reset__title_set_number_of_shares = 595, // "SET NUMBER OF SHARES" - reset__title_set_threshold = 596, // "SET THRESHOLD" + reset__title_backup_is_done = 587, // "Backup is done" + reset__title_create_wallet = 588, // "Create wallet" + reset__title_create_wallet_shamir = 589, // "Create wallet (shamir)" + reset__title_group_threshold = 590, // "Group threshold" + reset__title_number_of_groups = 591, // "Number of groups" + reset__title_number_of_shares = 592, // "Number of shares" + reset__title_set_group_threshold = 593, // "Set group threshold" + reset__title_set_number_of_groups = 594, // "Set number of groups" + reset__title_set_number_of_shares = 595, // "Set number of shares" + reset__title_set_threshold = 596, // "Set threshold" reset__to_form_group_template = 597, // "to form Group {0}." reset__tos_link = 598, // "trezor.io/tos" reset__total_number_of_shares_in_group_template = 599, // "Set the total number of shares in Group {0}." @@ -898,13 +898,13 @@ pub enum TranslatedString { rotation__east = 608, // "east" rotation__north = 609, // "north" rotation__south = 610, // "south" - rotation__title_change = 611, // "CHANGE ROTATION" + rotation__title_change = 611, // "Change rotation" rotation__west = 612, // "west" safety_checks__approve_unsafe_always = 613, // "Trezor will allow you to approve some actions which might be unsafe." safety_checks__approve_unsafe_temporary = 614, // "Trezor will temporarily allow you to approve some actions which might be unsafe." safety_checks__enforce_strict = 615, // "Do you really want to enforce strict safety checks (recommended)?" - safety_checks__title = 616, // "SAFETY CHECKS" - safety_checks__title_safety_override = 617, // "SAFETY OVERRIDE" + safety_checks__title = 616, // "Safety checks" + safety_checks__title_safety_override = 617, // "Safety override" sd_card__all_data_will_be_lost = 618, // "All data on the SD card will be lost." sd_card__card_required = 619, // "SD card required." sd_card__disable = 620, // "Do you really want to remove SD card protection from your device?" @@ -920,25 +920,25 @@ pub enum TranslatedString { sd_card__refresh = 630, // "Do you really want to replace the current SD card secret with a newly generated one?" sd_card__refreshed = 631, // "You have successfully refreshed SD protection." sd_card__restart = 632, // "Do you want to restart Trezor in bootloader mode?" - sd_card__title = 633, // "SD CARD PROTECTION" - sd_card__title_problem = 634, // "SD CARD PROBLEM" + sd_card__title = 633, // "SD card protection" + sd_card__title_problem = 634, // "SD card problem" sd_card__unknown_filesystem = 635, // "Unknown filesystem." sd_card__unplug_and_insert_correct = 636, // "Please unplug the device and insert the correct SD card." sd_card__use_different_card = 637, // "Use a different card or format the SD card to the FAT32 filesystem." sd_card__wanna_format = 638, // "Do you really want to format the SD card?" sd_card__wrong_sd_card = 639, // "Wrong SD card." send__address_path = 640, // "address path" - send__confirm_sending = 641, // "SENDING AMOUNT" + send__confirm_sending = 641, // "Sending amount" send__from_multiple_accounts = 642, // "Sending from multiple accounts." send__including_fee = 643, // "Including fee:" send__maximum_fee = 644, // "Maximum fee:" send__receiving_to_multisig = 645, // "Receiving to a multisig address." - send__title_confirm_sending = 646, // "CONFIRM SENDING" - send__title_joint_transaction = 647, // "JOINT TRANSACTION" - send__title_receiving_to = 648, // "RECEIVING TO" - send__title_sending = 649, // "SENDING" - send__title_sending_amount = 650, // "SENDING AMOUNT" - send__title_sending_to = 651, // "SENDING TO" + send__title_confirm_sending = 646, // "Confirm sending" + send__title_joint_transaction = 647, // "Joint transaction" + send__title_receiving_to = 648, // "Receiving to" + send__title_sending = 649, // "Sending" + send__title_sending_amount = 650, // "Sending amount" + send__title_sending_to = 651, // "Sending to" send__to_the_total_amount = 652, // "To the total amount:" send__total_amount = 653, // "Total amount:" send__transaction_id = 654, // "Transaction ID:" @@ -946,10 +946,10 @@ pub enum TranslatedString { share_words__words_in_order = 656, // " words in order." share_words__wrote_down_all = 657, // "I wrote down all " sign_message__bytes_template = 658, // "{0} Bytes" - sign_message__confirm_address = 659, // "SIGNING ADDRESS" - sign_message__confirm_message = 660, // "CONFIRM MESSAGE" + sign_message__confirm_address = 659, // "Signing address" + sign_message__confirm_message = 660, // "Confirm message" sign_message__message_size = 661, // "Message size:" - sign_message__verify_address = 662, // "VERIFY ADDRESS" + sign_message__verify_address = 662, // "Verify address" #[cfg(feature = "universal_fw")] solana__account_index = 663, // "Account index" #[cfg(feature = "universal_fw")] @@ -1141,10 +1141,10 @@ pub enum TranslatedString { tutorial__ready_to_use = 758, // "You're ready to\nuse Trezor." tutorial__scroll_down = 759, // "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up." tutorial__sure_you_want_skip = 760, // "Are you sure you\nwant to skip the tutorial?" - tutorial__title_hello = 761, // "HELLO" - tutorial__title_screen_scroll = 762, // "SCREEN SCROLL" - tutorial__title_skip = 763, // "SKIP TUTORIAL" - tutorial__title_tutorial_complete = 764, // "TUTORIAL COMPLETE" + tutorial__title_hello = 761, // "Hello" + tutorial__title_screen_scroll = 762, // "Screen scroll" + tutorial__title_skip = 763, // "Skip tutorial" + tutorial__title_tutorial_complete = 764, // "Tutorial complete" tutorial__use_trezor = 765, // "Use Trezor by\nclicking the left and right buttons.\n\rContinue right." tutorial__welcome_press_right = 766, // "Welcome to Trezor. Press right to continue." #[cfg(feature = "universal_fw")] @@ -1152,11 +1152,11 @@ pub enum TranslatedString { #[cfg(feature = "universal_fw")] u2f__set_template = 768, // "Set the U2F counter to {0}?" #[cfg(feature = "universal_fw")] - u2f__title_get = 769, // "GET U2F COUNTER" + u2f__title_get = 769, // "Get U2F counter" #[cfg(feature = "universal_fw")] - u2f__title_set = 770, // "SET U2F COUNTER" + u2f__title_set = 770, // "Set U2F counter" wipe__info = 771, // "All data will be erased." - wipe__title = 772, // "WIPE DEVICE" + wipe__title = 772, // "Wipe device" wipe__want_to_wipe = 773, // "Do you really want to wipe the device?\n" wipe_code__change = 774, // "Change wipe code?" wipe_code__changed = 775, // "Wipe code changed." @@ -1169,13 +1169,13 @@ pub enum TranslatedString { wipe_code__mismatch = 782, // "The wipe codes you entered do not match." wipe_code__reenter = 783, // "Re-enter wipe code" wipe_code__reenter_to_confirm = 784, // "Please re-enter wipe code to confirm." - wipe_code__title_check = 785, // "CHECK WIPE CODE" - wipe_code__title_invalid = 786, // "INVALID WIPE CODE" - wipe_code__title_settings = 787, // "WIPE CODE SETTINGS" + wipe_code__title_check = 785, // "Check wipe code" + wipe_code__title_invalid = 786, // "Invalid wipe code" + wipe_code__title_settings = 787, // "Wipe code settings" wipe_code__turn_off = 788, // "Turn off wipe code protection?" wipe_code__turn_on = 789, // "Turn on wipe code protection?" wipe_code__wipe_code_mismatch = 790, // "Wipe code mismatch" - word_count__title = 791, // "NUMBER OF WORDS" + word_count__title = 791, // "Number of words" words__account = 792, // "Account" words__account_colon = 793, // "Account:" words__address = 794, // "Address" @@ -1203,15 +1203,15 @@ pub enum TranslatedString { words__recipient = 816, // "Recipient" words__sign = 817, // "Sign" words__signer = 818, // "Signer" - words__title_check = 819, // "CHECK" - words__title_group = 820, // "GROUP" - words__title_information = 821, // "INFORMATION" - words__title_remember = 822, // "REMEMBER" - words__title_share = 823, // "SHARE" - words__title_shares = 824, // "SHARES" - words__title_success = 825, // "SUCCESS" - words__title_summary = 826, // "SUMMARY" - words__title_threshold = 827, // "THRESHOLD" + words__title_check = 819, // "Check" + words__title_group = 820, // "Group" + words__title_information = 821, // "Information" + words__title_remember = 822, // "Remember" + words__title_share = 823, // "Share" + words__title_shares = 824, // "Shares" + words__title_success = 825, // "Success" + words__title_summary = 826, // "Summary" + words__title_threshold = 827, // "Threshold" words__unknown = 828, // "Unknown" words__warning = 829, // "Warning" words__writable = 830, // "Writable" @@ -1219,26 +1219,26 @@ pub enum TranslatedString { reboot_to_bootloader__just_a_moment = 832, // "Just a moment..." inputs__previous = 833, // "PREVIOUS" #[cfg(feature = "universal_fw")] - ethereum__staking_claim = 834, // "CLAIM" + ethereum__staking_claim = 834, // "Claim" #[cfg(feature = "universal_fw")] - ethereum__staking_claim_address = 835, // "CLAIM ADDRESS" + ethereum__staking_claim_address = 835, // "Claim address" #[cfg(feature = "universal_fw")] ethereum__staking_claim_intro = 836, // "Claim ETH from Everstake?" #[cfg(feature = "universal_fw")] - ethereum__staking_stake = 837, // "STAKE" + ethereum__staking_stake = 837, // "Stake" #[cfg(feature = "universal_fw")] - ethereum__staking_stake_address = 838, // "STAKE ADDRESS" + ethereum__staking_stake_address = 838, // "Stake address" #[cfg(feature = "universal_fw")] ethereum__staking_stake_intro = 839, // "Stake ETH on Everstake?" #[cfg(feature = "universal_fw")] - ethereum__staking_unstake = 840, // "UNSTAKE" + ethereum__staking_unstake = 840, // "Unstake" #[cfg(feature = "universal_fw")] ethereum__staking_unstake_intro = 841, // "Unstake ETH from Everstake?" - storage_msg__starting = 842, // "STARTING UP" - storage_msg__verifying_pin = 843, // "VERIFYING PIN" - storage_msg__wrong_pin = 844, // "WRONG PIN" + storage_msg__starting = 842, // "Starting up" + storage_msg__verifying_pin = 843, // "Verifying PIN" + storage_msg__wrong_pin = 844, // "Wrong PIN" reset__create_x_of_y_shamir_backup_template = 845, // "Do you want to create a {0} of {1} Shamir backup?" - reset__title_shamir_backup = 846, // "SHAMIR BACKUP" + reset__title_shamir_backup = 846, // "Shamir backup" } impl TranslatedString { @@ -1251,24 +1251,24 @@ impl TranslatedString { Self::addr_mismatch__wrong_derivation_path => "Wrong derivation path for selected account.", Self::addr_mismatch__xpub_mismatch => "XPUB mismatch?", Self::address__public_key => "Public key", - Self::address__title_cosigner => "COSIGNER", - Self::address__title_receive_address => "RECEIVE ADDRESS", - Self::address__title_yours => "YOURS", + Self::address__title_cosigner => "Cosigner", + Self::address__title_receive_address => "Receive address", + Self::address__title_yours => "Yours", Self::address_details__derivation_path => "Derivation path:", - Self::address_details__title_receive_address => "RECEIVE ADDRESS", - Self::address_details__title_receiving_to => "RECEIVING TO", + Self::address_details__title_receive_address => "Receive address", + Self::address_details__title_receiving_to => "Receiving to", Self::authenticate__confirm_template => "Allow connected computer to confirm your {0} is genuine?", Self::authenticate__header => "Authenticate device", Self::auto_lock__change_template => "Auto-lock your Trezor after {0} of inactivity?", - Self::auto_lock__title => "AUTO-LOCK DELAY", + Self::auto_lock__title => "Auto-lock delay", Self::backup__can_back_up_anytime => "You can back up your Trezor once, at any time.", Self::backup__it_should_be_backed_up => "You should back up your new wallet right now.", Self::backup__it_should_be_backed_up_now => "It should be backed up now!", Self::backup__new_wallet_created => "New wallet created.\n", Self::backup__new_wallet_successfully_created => "New wallet created successfully.", Self::backup__recover_anytime => "You can use your backup to recover your wallet at any time.", - Self::backup__title_backup_wallet => "BACK UP WALLET", - Self::backup__title_skip => "SKIP BACKUP", + Self::backup__title_backup_wallet => "Back up wallet", + Self::backup__title_skip => "Skip backup", Self::backup__want_to_skip => "Are you sure you want to skip the backup?", #[cfg(feature = "universal_fw")] Self::binance__buy => "Buy", @@ -1306,59 +1306,59 @@ impl TranslatedString { Self::bitcoin__new_fee_rate => "New fee rate:", Self::bitcoin__simple_send_of => "Simple send of", Self::bitcoin__ticket_amount => "Ticket amount:", - Self::bitcoin__title_confirm_details => "CONFIRM DETAILS", - Self::bitcoin__title_finalize_transaction => "FINALIZE TRANSACTION", - Self::bitcoin__title_high_mining_fee => "HIGH MINING FEE", - Self::bitcoin__title_meld_transaction => "MELD TRANSACTIONS", - Self::bitcoin__title_modify_amount => "MODIFY AMOUNT", - Self::bitcoin__title_payjoin => "PAYJOIN", - Self::bitcoin__title_proof_of_ownership => "PROOF OF OWNERSHIP", - Self::bitcoin__title_purchase_ticket => "PURCHASE TICKET", - Self::bitcoin__title_update_transaction => "UPDATE TRANSACTION", + Self::bitcoin__title_confirm_details => "Confirm details", + Self::bitcoin__title_finalize_transaction => "Finalize transaction", + Self::bitcoin__title_high_mining_fee => "High mining fee", + Self::bitcoin__title_meld_transaction => "Meld transactions", + Self::bitcoin__title_modify_amount => "Modify amount", + Self::bitcoin__title_payjoin => "Payjoin", + Self::bitcoin__title_proof_of_ownership => "Proof of ownership", + Self::bitcoin__title_purchase_ticket => "Purchase ticket", + Self::bitcoin__title_update_transaction => "Update transaction", Self::bitcoin__unknown_path => "Unknown path", Self::bitcoin__unknown_transaction => "Unknown transaction", Self::bitcoin__unusually_high_fee => "Unusually high fee.", Self::bitcoin__unverified_external_inputs => "The transaction contains unverified external inputs.", Self::bitcoin__valid_signature => "The signature is valid.", Self::bitcoin__voting_rights => "Voting rights to:", - Self::buttons__abort => "ABORT", - Self::buttons__access => "ACCESS", - Self::buttons__again => "AGAIN", - Self::buttons__allow => "ALLOW", - Self::buttons__back => "BACK", - Self::buttons__back_up => "BACK UP", - Self::buttons__cancel => "CANCEL", - Self::buttons__change => "CHANGE", - Self::buttons__check => "CHECK", - Self::buttons__check_again => "CHECK AGAIN", - Self::buttons__close => "CLOSE", - Self::buttons__confirm => "CONFIRM", - Self::buttons__continue => "CONTINUE", - Self::buttons__details => "DETAILS", - Self::buttons__enable => "ENABLE", - Self::buttons__enter => "ENTER", - Self::buttons__enter_share => "ENTER SHARE", - Self::buttons__export => "EXPORT", - Self::buttons__format => "FORMAT", - Self::buttons__go_back => "GO BACK", - Self::buttons__hold_to_confirm => "HOLD TO CONFIRM", - Self::buttons__info => "INFO", - Self::buttons__install => "INSTALL", - Self::buttons__more_info => "MORE INFO", - Self::buttons__ok_i_understand => "OK, I UNDERSTAND", - Self::buttons__purchase => "PURCHASE", - Self::buttons__quit => "QUIT", - Self::buttons__restart => "RESTART", - Self::buttons__retry => "RETRY", - Self::buttons__select => "SELECT", - Self::buttons__set => "SET", - Self::buttons__show_all => "SHOW ALL", - Self::buttons__show_details => "SHOW DETAILS", - Self::buttons__show_words => "SHOW WORDS", - Self::buttons__skip => "SKIP", - Self::buttons__try_again => "TRY AGAIN", - Self::buttons__turn_off => "TURN OFF", - Self::buttons__turn_on => "TURN ON", + Self::buttons__abort => "Abort", + Self::buttons__access => "Access", + Self::buttons__again => "Again", + Self::buttons__allow => "Allow", + Self::buttons__back => "Back", + Self::buttons__back_up => "Back up", + Self::buttons__cancel => "Cancel", + Self::buttons__change => "Change", + Self::buttons__check => "Check", + Self::buttons__check_again => "Check again", + Self::buttons__close => "Close", + Self::buttons__confirm => "Confirm", + Self::buttons__continue => "Continue", + Self::buttons__details => "Details", + Self::buttons__enable => "Enable", + Self::buttons__enter => "Enter", + Self::buttons__enter_share => "Enter share", + Self::buttons__export => "Export", + Self::buttons__format => "Format", + Self::buttons__go_back => "Go back", + Self::buttons__hold_to_confirm => "Hold to confirm", + Self::buttons__info => "Info", + Self::buttons__install => "Install", + Self::buttons__more_info => "More info", + Self::buttons__ok_i_understand => "Ok, I understand", + Self::buttons__purchase => "Purchase", + Self::buttons__quit => "Quit", + Self::buttons__restart => "Restart", + Self::buttons__retry => "Retry", + Self::buttons__select => "Select", + Self::buttons__set => "Set", + Self::buttons__show_all => "Show all", + Self::buttons__show_details => "Show details", + Self::buttons__show_words => "Show words", + Self::buttons__skip => "Skip", + Self::buttons__try_again => "Try again", + Self::buttons__turn_off => "Turn off", + Self::buttons__turn_on => "Turn on", #[cfg(feature = "universal_fw")] Self::cardano__addr_base => "Base", #[cfg(feature = "universal_fw")] @@ -1581,21 +1581,21 @@ impl TranslatedString { Self::coinjoin__do_not_disconnect => "Do not disconnect your Trezor!", Self::coinjoin__max_mining_fee => "Max mining fee", Self::coinjoin__max_rounds => "Max rounds", - Self::coinjoin__title => "AUTHORIZE COINJOIN", - Self::coinjoin__title_do_not_disconnect => "DO NOT DISCONNECT YOUR TREZOR!", - Self::coinjoin__title_progress => "COINJOIN IN PROGRESS", + Self::coinjoin__title => "Authorize coinjoin", + Self::coinjoin__title_do_not_disconnect => "Do not disconnect your trezor!", + Self::coinjoin__title_progress => "Coinjoin in progress", Self::coinjoin__waiting_for_others => "Waiting for others", Self::confirm_total__fee_rate => "Fee rate:", Self::confirm_total__sending_from_account => "Sending from account:", - Self::confirm_total__title_fee => "FEE INFORMATION", - Self::confirm_total__title_sending_from => "SENDING FROM", + Self::confirm_total__title_fee => "Fee information", + Self::confirm_total__title_sending_from => "Sending from", Self::debug__loading_seed => "Loading seed", Self::debug__loading_seed_not_recommended => "Loading private seed is not recommended.", Self::device_name__change_template => "Change device name to {0}?", - Self::device_name__title => "DEVICE NAME", + Self::device_name__title => "Device name", Self::entropy__send => "Do you really want to send entropy?", - Self::entropy__title => "INTERNAL ENTROPY", - Self::entropy__title_confirm => "CONFIRM ENTROPY", + Self::entropy__title => "Internal entropy", + Self::entropy__title_confirm => "Confirm entropy", #[cfg(feature = "universal_fw")] Self::eos__about_to_sign_template => "You are about to sign {0}.", #[cfg(feature = "universal_fw")] @@ -1707,17 +1707,17 @@ impl TranslatedString { #[cfg(feature = "universal_fw")] Self::ethereum__sign_eip712 => "Really sign EIP-712 typed data?", #[cfg(feature = "universal_fw")] - Self::ethereum__title_confirm_data => "CONFIRM DATA", + Self::ethereum__title_confirm_data => "Confirm data", #[cfg(feature = "universal_fw")] - Self::ethereum__title_confirm_domain => "CONFIRM DOMAIN", + Self::ethereum__title_confirm_domain => "Confirm domain", #[cfg(feature = "universal_fw")] - Self::ethereum__title_confirm_message => "CONFIRM MESSAGE", + Self::ethereum__title_confirm_message => "Confirm message", #[cfg(feature = "universal_fw")] - Self::ethereum__title_confirm_struct => "CONFIRM STRUCT", + Self::ethereum__title_confirm_struct => "Confirm struct", #[cfg(feature = "universal_fw")] - Self::ethereum__title_confirm_typed_data => "CONFIRM TYPED DATA", + Self::ethereum__title_confirm_typed_data => "Confirm typed data", #[cfg(feature = "universal_fw")] - Self::ethereum__title_signing_address => "SIGNING ADDRESS", + Self::ethereum__title_signing_address => "Signing address", #[cfg(feature = "universal_fw")] Self::ethereum__units_template => "{0} units", #[cfg(feature = "universal_fw")] @@ -1726,7 +1726,7 @@ impl TranslatedString { Self::ethereum__valid_signature => "The signature is valid.", Self::experimental_mode__enable => "Enable experimental features?", Self::experimental_mode__only_for_dev => "Only for development and beta testing!", - Self::experimental_mode__title => "EXPERIMENTAL MODE", + Self::experimental_mode__title => "Experimental mode", #[cfg(feature = "universal_fw")] Self::fido__already_registered => "Already registered", #[cfg(feature = "universal_fw")] @@ -1748,39 +1748,39 @@ impl TranslatedString { #[cfg(feature = "universal_fw")] Self::fido__please_enable_pin_protection => "Please enable PIN protection.", #[cfg(feature = "universal_fw")] - Self::fido__title_authenticate => "FIDO2 AUTHENTICATE", + Self::fido__title_authenticate => "FIDO2 authenticate", #[cfg(feature = "universal_fw")] - Self::fido__title_import_credential => "IMPORT CREDENTIAL", + Self::fido__title_import_credential => "Import credential", #[cfg(feature = "universal_fw")] - Self::fido__title_list_credentials => "LIST CREDENTIALS", + Self::fido__title_list_credentials => "List credentials", #[cfg(feature = "universal_fw")] - Self::fido__title_register => "FIDO2 REGISTER", + Self::fido__title_register => "FIDO2 register", #[cfg(feature = "universal_fw")] - Self::fido__title_remove_credential => "REMOVE CREDENTIAL", + Self::fido__title_remove_credential => "Remove credential", #[cfg(feature = "universal_fw")] - Self::fido__title_reset => "FIDO2 RESET", + Self::fido__title_reset => "FIDO2 reset", #[cfg(feature = "universal_fw")] - Self::fido__title_u2f_auth => "U2F AUTHENTICATE", + Self::fido__title_u2f_auth => "U2F authenticate", #[cfg(feature = "universal_fw")] - Self::fido__title_u2f_register => "U2F REGISTER", + Self::fido__title_u2f_register => "U2F register", #[cfg(feature = "universal_fw")] - Self::fido__title_verify_user => "FIDO2 VERIFY USER", + Self::fido__title_verify_user => "FIDO2 verify user", #[cfg(feature = "universal_fw")] Self::fido__unable_to_verify_user => "Unable to verify user.", #[cfg(feature = "universal_fw")] Self::fido__wanna_erase_credentials => "Do you really want to erase all credentials?", - Self::firmware_update__title => "UPDATE FIRMWARE", - Self::firmware_update__title_fingerprint => "FW FINGERPRINT", + Self::firmware_update__title => "Update firmware", + Self::firmware_update__title_fingerprint => "FW fingerprint", Self::homescreen__click_to_connect => "Click to Connect", Self::homescreen__click_to_unlock => "Click to Unlock", - Self::homescreen__title_backup_failed => "BACKUP FAILED", - Self::homescreen__title_backup_needed => "BACKUP NEEDED", - Self::homescreen__title_coinjoin_authorized => "COINJOIN AUTHORIZED", - Self::homescreen__title_experimental_mode => "EXPERIMENTAL MODE", - Self::homescreen__title_no_usb_connection => "NO USB CONNECTION", - Self::homescreen__title_pin_not_set => "PIN NOT SET", - Self::homescreen__title_seedless => "SEEDLESS", - Self::homescreen__title_set => "CHANGE HOMESCREEN?", + Self::homescreen__title_backup_failed => "Backup failed", + Self::homescreen__title_backup_needed => "Backup needed", + Self::homescreen__title_coinjoin_authorized => "Coinjoin authorized", + Self::homescreen__title_experimental_mode => "Experimental mode", + Self::homescreen__title_no_usb_connection => "No USB connection", + Self::homescreen__title_pin_not_set => "PIN not set", + Self::homescreen__title_seedless => "Seedless", + Self::homescreen__title_set => "Change homescreen?", Self::inputs__back => "BACK", Self::inputs__cancel => "CANCEL", Self::inputs__delete => "DELETE", @@ -1788,30 +1788,30 @@ impl TranslatedString { Self::inputs__return => "RETURN", Self::inputs__show => "SHOW", Self::inputs__space => "SPACE", - Self::joint__title => "JOINT TRANSACTION", + Self::joint__title => "Joint transaction", Self::joint__to_the_total_amount => "To the total amount:", Self::joint__you_are_contributing => "You are contributing:", Self::language__change_to_template => "Change language to {0}?", Self::language__changed => "Language changed successfully", Self::language__progress => "Changing language", - Self::language__title => "LANGUAGE SETTINGS", + Self::language__title => "Language settings", Self::lockscreen__tap_to_connect => "Tap to connect", Self::lockscreen__tap_to_unlock => "Tap to unlock", - Self::lockscreen__title_locked => "LOCKED", - Self::lockscreen__title_not_connected => "NOT CONNECTED", + Self::lockscreen__title_locked => "Locked", + Self::lockscreen__title_not_connected => "Not connected", Self::misc__decrypt_value => "Decrypt value", Self::misc__encrypt_value => "Encrypt value", - Self::misc__title_suite_labeling => "SUITE LABELING", + Self::misc__title_suite_labeling => "Suite labeling", Self::modify_amount__decrease_amount => "Decrease amount by:", Self::modify_amount__increase_amount => "Increase amount by:", Self::modify_amount__new_amount => "New amount:", - Self::modify_amount__title => "MODIFY AMOUNT", + Self::modify_amount__title => "Modify amount", Self::modify_fee__decrease_fee => "Decrease fee by:", Self::modify_fee__fee_rate => "Fee rate:", Self::modify_fee__increase_fee => "Increase fee by:", Self::modify_fee__new_transaction_fee => "New transaction fee:", Self::modify_fee__no_change => "Fee did not change.\n", - Self::modify_fee__title => "MODIFY FEE", + Self::modify_fee__title => "Modify fee", Self::modify_fee__transaction_fee => "Transaction fee:", #[cfg(feature = "universal_fw")] Self::monero__confirm_export => "Confirm export", @@ -1959,11 +1959,11 @@ impl TranslatedString { Self::passphrase__next_screen_will_show_passphrase => "Next screen will show the passphrase.", Self::passphrase__please_enter => "Please enter your passphrase.", Self::passphrase__revoke_on_device => "Do you want to revoke the passphrase on device setting?", - Self::passphrase__title_confirm => "CONFIRM PASSPHRASE", - Self::passphrase__title_enter => "ENTER PASSPHRASE", - Self::passphrase__title_hide => "HIDE PASSPHRASE", - Self::passphrase__title_settings => "PASSPHRASE SETTINGS", - Self::passphrase__title_source => "PASSPHRASE SOURCE", + Self::passphrase__title_confirm => "Confirm passphrase", + Self::passphrase__title_enter => "Enter passphrase", + Self::passphrase__title_hide => "Hide passphrase", + Self::passphrase__title_settings => "Passphrase settings", + Self::passphrase__title_source => "Passphrase source", Self::passphrase__turn_off => "Turn off passphrase protection?", Self::passphrase__turn_on => "Turn on passphrase protection?", Self::pin__change => "Change PIN?", @@ -1984,9 +1984,9 @@ impl TranslatedString { Self::pin__reenter_new => "Re-enter new PIN", Self::pin__reenter_to_confirm => "Please re-enter PIN to confirm.", Self::pin__should_be_long => "PIN should be 4-50 digits long.", - Self::pin__title_check_pin => "CHECK PIN", - Self::pin__title_settings => "PIN SETTINGS", - Self::pin__title_wrong_pin => "WRONG PIN", + Self::pin__title_check_pin => "Check PIN", + Self::pin__title_settings => "PIN settings", + Self::pin__title_wrong_pin => "Wrong PIN", Self::pin__tries_left => "tries left", Self::pin__turn_off => "Are you sure you want to turn off PIN protection?", Self::pin__turn_on => "Turn on PIN protection?", @@ -2005,14 +2005,14 @@ impl TranslatedString { Self::progress__loading_transaction => "Loading transaction...", Self::progress__locking_device => "Locking the device...", Self::progress__one_second_left => "1 second left", - Self::progress__please_wait => "PLEASE WAIT", - Self::storage_msg__processing => "PROCESSING", + Self::progress__please_wait => "Please wait", + Self::storage_msg__processing => "Processing", Self::progress__refreshing => "Refreshing...", Self::progress__signing_transaction => "Signing transaction...", Self::progress__syncing => "Syncing...", Self::progress__x_seconds_left_template => "{0} seconds left", Self::reboot_to_bootloader__restart => "Trezor will restart in bootloader mode.", - Self::reboot_to_bootloader__title => "GO TO BOOTLOADER", + Self::reboot_to_bootloader__title => "Go to bootloader", Self::reboot_to_bootloader__version_by_template => "Firmware version {0}\nby {1}", Self::recovery__cancel_dry_run => "Cancel backup check", Self::recovery__check_dry_run => "Check your backup?", @@ -2037,18 +2037,18 @@ impl TranslatedString { Self::recovery__share_already_entered => "Share already entered", Self::recovery__share_from_another_shamir => "You have entered a share from another Shamir Backup.", Self::recovery__share_num_template => "Share {0}", - Self::recovery__title => "RECOVER WALLET", - Self::recovery__title_cancel_dry_run => "CANCEL BACKUP CHECK", - Self::recovery__title_cancel_recovery => "CANCEL RECOVERY", - Self::recovery__title_dry_run => "BACKUP CHECK", - Self::recovery__title_recover => "RECOVER WALLET", - Self::recovery__title_remaining_shares => "REMAINING SHARES", + Self::recovery__title => "Recover wallet", + Self::recovery__title_cancel_dry_run => "Cancel backup check", + Self::recovery__title_cancel_recovery => "Cancel recovery", + Self::recovery__title_dry_run => "Backup check", + Self::recovery__title_recover => "Recover wallet", + Self::recovery__title_remaining_shares => "Remaining shares", Self::recovery__type_word_x_of_y_template => "Type word {0} of {1}", Self::recovery__wallet_recovered => "Wallet recovered successfully", Self::recovery__wanna_cancel_dry_run => "Are you sure you want to cancel the backup check?", Self::recovery__wanna_cancel_recovery => "Are you sure you want to cancel the recovery process?", Self::recovery__word_count_template => "({0} words)", - Self::recovery__word_x_of_y_template => "WORD {0} OF {1}", + Self::recovery__word_x_of_y_template => "Word {0} of {1}", Self::recovery__x_more_items_starting_template_plural => "{count} more {plural} starting", Self::recovery__x_more_shares_needed_template_plural => "{count} more {plural} needed.", Self::recovery__x_of_y_entered_template => "{0} of {1} shares entered successfully.", @@ -2056,13 +2056,13 @@ impl TranslatedString { Self::reset__advanced_group_threshold_info => "The group threshold specifies the number of groups required to recover your wallet.", Self::reset__all_x_of_y_template => "all {0} of {1} shares", Self::reset__any_x_of_y_template => "any {0} of {1} shares", - Self::reset__button_create => "CREATE WALLET", - Self::reset__button_recover => "RECOVER WALLET", + Self::reset__button_create => "Create wallet", + Self::reset__button_recover => "Recover wallet", Self::reset__by_continuing => "By continuing you agree to Trezor Company's terms and conditions.", - Self::reset__check_backup_title => "CHECK BACKUP", - Self::reset__check_group_share_title_template => "CHECK G{0} - SHARE {1}", - Self::reset__check_wallet_backup_title => "CHECK WALLET BACKUP", - Self::reset__check_share_title_template => "CHECK SHARE #{0}", + Self::reset__check_backup_title => "Check backup", + Self::reset__check_group_share_title_template => "Check g{0} - share {1}", + Self::reset__check_wallet_backup_title => "Check wallet backup", + Self::reset__check_share_title_template => "Check share #{0}", Self::reset__continue_with_next_share => "Continue with the next share.", Self::reset__continue_with_share_template => "Continue with share #{0}.", Self::reset__finished_verifying_group_template => "You have finished verifying your recovery shares for group {0}.", @@ -2071,7 +2071,7 @@ impl TranslatedString { Self::reset__group_description => "A group is made up of recovery shares.", Self::reset__group_info => "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds.", Self::reset__group_share_checked_successfully_template => "Group {0} - Share {1} checked successfully.", - Self::reset__group_share_title_template => "GROUP {0} - SHARE {1}", + Self::reset__group_share_title_template => "Group {0} - share {1}", Self::reset__more_info_at => "More info at", Self::reset__need_all_share_template => "For recovery you need all {0} of the shares.", Self::reset__need_any_share_template => "For recovery you need any {0} of the shares.", @@ -2085,15 +2085,15 @@ impl TranslatedString { Self::reset__number_of_shares_info => "= total number of unique word lists used for wallet backup.", Self::reset__one_share => "1 share", Self::reset__only_one_share_will_be_created => "Only one share will be created.", - Self::reset__recovery_wallet_backup_title => "WALLET BACKUP", - Self::reset__recovery_share_title_template => "RECOVERY SHARE #{0}", + Self::reset__recovery_wallet_backup_title => "Wallet backup", + Self::reset__recovery_share_title_template => "Recovery share #{0}", Self::reset__required_number_of_groups => "The required number of groups for recovery.", Self::reset__select_correct_word => "Select the correct word for each position.", - Self::reset__select_word_template => "SELECT {0} WORD", + Self::reset__select_word_template => "Select {0} word", Self::reset__select_word_x_of_y_template => "Select word {0} of {1}:", Self::reset__set_it_to_count_template => "Set it to {0} and you will need ", Self::reset__share_checked_successfully_template => "Recovery share #{0} checked successfully.", - Self::reset__share_words_title => "STANDARD BACKUP", + Self::reset__share_words_title => "Standard backup", Self::reset__slip39_checklist_num_groups => "Number of groups", Self::reset__slip39_checklist_num_shares => "Number of shares", Self::reset__slip39_checklist_set_num_groups => "Set number of groups", @@ -2101,21 +2101,21 @@ impl TranslatedString { Self::reset__slip39_checklist_set_sizes => "Set sizes and thresholds", Self::reset__slip39_checklist_set_sizes_longer => "Set size and threshold for each group", Self::reset__slip39_checklist_set_threshold => "Set threshold", - Self::reset__slip39_checklist_title => "BACKUP CHECKLIST", + Self::reset__slip39_checklist_title => "Backup checklist", Self::reset__slip39_checklist_write_down => "Write down and check all shares", Self::reset__slip39_checklist_write_down_recovery => "Write down and check all recovery shares", Self::reset__the_threshold_sets_the_number_of_shares => "The threshold sets the number of shares ", Self::reset__threshold_info => "= minimum number of unique word lists used for recovery.", - Self::reset__title_backup_is_done => "BACKUP IS DONE", - Self::reset__title_create_wallet => "CREATE WALLET", - Self::reset__title_create_wallet_shamir => "CREATE WALLET (SHAMIR)", - Self::reset__title_group_threshold => "GROUP THRESHOLD", - Self::reset__title_number_of_groups => "NUMBER OF GROUPS", - Self::reset__title_number_of_shares => "NUMBER OF SHARES", - Self::reset__title_set_group_threshold => "SET GROUP THRESHOLD", - Self::reset__title_set_number_of_groups => "SET NUMBER OF GROUPS", - Self::reset__title_set_number_of_shares => "SET NUMBER OF SHARES", - Self::reset__title_set_threshold => "SET THRESHOLD", + Self::reset__title_backup_is_done => "Backup is done", + Self::reset__title_create_wallet => "Create wallet", + Self::reset__title_create_wallet_shamir => "Create wallet (shamir)", + Self::reset__title_group_threshold => "Group threshold", + Self::reset__title_number_of_groups => "Number of groups", + Self::reset__title_number_of_shares => "Number of shares", + Self::reset__title_set_group_threshold => "Set group threshold", + Self::reset__title_set_number_of_groups => "Set number of groups", + Self::reset__title_set_number_of_shares => "Set number of shares", + Self::reset__title_set_threshold => "Set threshold", Self::reset__to_form_group_template => "to form Group {0}.", Self::reset__tos_link => "trezor.io/tos", Self::reset__total_number_of_shares_in_group_template => "Set the total number of shares in Group {0}.", @@ -2132,13 +2132,13 @@ impl TranslatedString { Self::rotation__east => "east", Self::rotation__north => "north", Self::rotation__south => "south", - Self::rotation__title_change => "CHANGE ROTATION", + Self::rotation__title_change => "Change rotation", Self::rotation__west => "west", Self::safety_checks__approve_unsafe_always => "Trezor will allow you to approve some actions which might be unsafe.", Self::safety_checks__approve_unsafe_temporary => "Trezor will temporarily allow you to approve some actions which might be unsafe.", Self::safety_checks__enforce_strict => "Do you really want to enforce strict safety checks (recommended)?", - Self::safety_checks__title => "SAFETY CHECKS", - Self::safety_checks__title_safety_override => "SAFETY OVERRIDE", + Self::safety_checks__title => "Safety checks", + Self::safety_checks__title_safety_override => "Safety override", Self::sd_card__all_data_will_be_lost => "All data on the SD card will be lost.", Self::sd_card__card_required => "SD card required.", Self::sd_card__disable => "Do you really want to remove SD card protection from your device?", @@ -2154,25 +2154,25 @@ impl TranslatedString { Self::sd_card__refresh => "Do you really want to replace the current SD card secret with a newly generated one?", Self::sd_card__refreshed => "You have successfully refreshed SD protection.", Self::sd_card__restart => "Do you want to restart Trezor in bootloader mode?", - Self::sd_card__title => "SD CARD PROTECTION", - Self::sd_card__title_problem => "SD CARD PROBLEM", + Self::sd_card__title => "SD card protection", + Self::sd_card__title_problem => "SD card problem", Self::sd_card__unknown_filesystem => "Unknown filesystem.", Self::sd_card__unplug_and_insert_correct => "Please unplug the device and insert the correct SD card.", Self::sd_card__use_different_card => "Use a different card or format the SD card to the FAT32 filesystem.", Self::sd_card__wanna_format => "Do you really want to format the SD card?", Self::sd_card__wrong_sd_card => "Wrong SD card.", Self::send__address_path => "address path", - Self::send__confirm_sending => "SENDING AMOUNT", + Self::send__confirm_sending => "Sending amount", Self::send__from_multiple_accounts => "Sending from multiple accounts.", Self::send__including_fee => "Including fee:", Self::send__maximum_fee => "Maximum fee:", Self::send__receiving_to_multisig => "Receiving to a multisig address.", - Self::send__title_confirm_sending => "CONFIRM SENDING", - Self::send__title_joint_transaction => "JOINT TRANSACTION", - Self::send__title_receiving_to => "RECEIVING TO", - Self::send__title_sending => "SENDING", - Self::send__title_sending_amount => "SENDING AMOUNT", - Self::send__title_sending_to => "SENDING TO", + Self::send__title_confirm_sending => "Confirm sending", + Self::send__title_joint_transaction => "Joint transaction", + Self::send__title_receiving_to => "Receiving to", + Self::send__title_sending => "Sending", + Self::send__title_sending_amount => "Sending amount", + Self::send__title_sending_to => "Sending to", Self::send__to_the_total_amount => "To the total amount:", Self::send__total_amount => "Total amount:", Self::send__transaction_id => "Transaction ID:", @@ -2180,10 +2180,10 @@ impl TranslatedString { Self::share_words__words_in_order => " words in order.", Self::share_words__wrote_down_all => "I wrote down all ", Self::sign_message__bytes_template => "{0} Bytes", - Self::sign_message__confirm_address => "SIGNING ADDRESS", - Self::sign_message__confirm_message => "CONFIRM MESSAGE", + Self::sign_message__confirm_address => "Signing address", + Self::sign_message__confirm_message => "Confirm message", Self::sign_message__message_size => "Message size:", - Self::sign_message__verify_address => "VERIFY ADDRESS", + Self::sign_message__verify_address => "Verify address", #[cfg(feature = "universal_fw")] Self::solana__account_index => "Account index", #[cfg(feature = "universal_fw")] @@ -2375,10 +2375,10 @@ impl TranslatedString { Self::tutorial__ready_to_use => "You're ready to\nuse Trezor.", Self::tutorial__scroll_down => "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", Self::tutorial__sure_you_want_skip => "Are you sure you\nwant to skip the tutorial?", - Self::tutorial__title_hello => "HELLO", - Self::tutorial__title_screen_scroll => "SCREEN SCROLL", - Self::tutorial__title_skip => "SKIP TUTORIAL", - Self::tutorial__title_tutorial_complete => "TUTORIAL COMPLETE", + Self::tutorial__title_hello => "Hello", + Self::tutorial__title_screen_scroll => "Screen scroll", + Self::tutorial__title_skip => "Skip tutorial", + Self::tutorial__title_tutorial_complete => "Tutorial complete", Self::tutorial__use_trezor => "Use Trezor by\nclicking the left and right buttons.\n\rContinue right.", Self::tutorial__welcome_press_right => "Welcome to Trezor. Press right to continue.", #[cfg(feature = "universal_fw")] @@ -2386,11 +2386,11 @@ impl TranslatedString { #[cfg(feature = "universal_fw")] Self::u2f__set_template => "Set the U2F counter to {0}?", #[cfg(feature = "universal_fw")] - Self::u2f__title_get => "GET U2F COUNTER", + Self::u2f__title_get => "Get U2F counter", #[cfg(feature = "universal_fw")] - Self::u2f__title_set => "SET U2F COUNTER", + Self::u2f__title_set => "Set U2F counter", Self::wipe__info => "All data will be erased.", - Self::wipe__title => "WIPE DEVICE", + Self::wipe__title => "Wipe device", Self::wipe__want_to_wipe => "Do you really want to wipe the device?\n", Self::wipe_code__change => "Change wipe code?", Self::wipe_code__changed => "Wipe code changed.", @@ -2403,13 +2403,13 @@ impl TranslatedString { Self::wipe_code__mismatch => "The wipe codes you entered do not match.", Self::wipe_code__reenter => "Re-enter wipe code", Self::wipe_code__reenter_to_confirm => "Please re-enter wipe code to confirm.", - Self::wipe_code__title_check => "CHECK WIPE CODE", - Self::wipe_code__title_invalid => "INVALID WIPE CODE", - Self::wipe_code__title_settings => "WIPE CODE SETTINGS", + Self::wipe_code__title_check => "Check wipe code", + Self::wipe_code__title_invalid => "Invalid wipe code", + Self::wipe_code__title_settings => "Wipe code settings", Self::wipe_code__turn_off => "Turn off wipe code protection?", Self::wipe_code__turn_on => "Turn on wipe code protection?", Self::wipe_code__wipe_code_mismatch => "Wipe code mismatch", - Self::word_count__title => "NUMBER OF WORDS", + Self::word_count__title => "Number of words", Self::words__account => "Account", Self::words__account_colon => "Account:", Self::words__address => "Address", @@ -2437,15 +2437,15 @@ impl TranslatedString { Self::words__recipient => "Recipient", Self::words__sign => "Sign", Self::words__signer => "Signer", - Self::words__title_check => "CHECK", - Self::words__title_group => "GROUP", - Self::words__title_information => "INFORMATION", - Self::words__title_remember => "REMEMBER", - Self::words__title_share => "SHARE", - Self::words__title_shares => "SHARES", - Self::words__title_success => "SUCCESS", - Self::words__title_summary => "SUMMARY", - Self::words__title_threshold => "THRESHOLD", + Self::words__title_check => "Check", + Self::words__title_group => "Group", + Self::words__title_information => "Information", + Self::words__title_remember => "Remember", + Self::words__title_share => "Share", + Self::words__title_shares => "Shares", + Self::words__title_success => "Success", + Self::words__title_summary => "Summary", + Self::words__title_threshold => "Threshold", Self::words__unknown => "Unknown", Self::words__warning => "Warning", Self::words__writable => "Writable", @@ -2453,26 +2453,26 @@ impl TranslatedString { Self::reboot_to_bootloader__just_a_moment => "Just a moment...", Self::inputs__previous => "PREVIOUS", #[cfg(feature = "universal_fw")] - Self::ethereum__staking_claim => "CLAIM", + Self::ethereum__staking_claim => "Claim", #[cfg(feature = "universal_fw")] - Self::ethereum__staking_claim_address => "CLAIM ADDRESS", + Self::ethereum__staking_claim_address => "Claim address", #[cfg(feature = "universal_fw")] Self::ethereum__staking_claim_intro => "Claim ETH from Everstake?", #[cfg(feature = "universal_fw")] - Self::ethereum__staking_stake => "STAKE", + Self::ethereum__staking_stake => "Stake", #[cfg(feature = "universal_fw")] - Self::ethereum__staking_stake_address => "STAKE ADDRESS", + Self::ethereum__staking_stake_address => "Stake address", #[cfg(feature = "universal_fw")] Self::ethereum__staking_stake_intro => "Stake ETH on Everstake?", #[cfg(feature = "universal_fw")] - Self::ethereum__staking_unstake => "UNSTAKE", + Self::ethereum__staking_unstake => "Unstake", #[cfg(feature = "universal_fw")] Self::ethereum__staking_unstake_intro => "Unstake ETH from Everstake?", - Self::storage_msg__starting => "STARTING UP", - Self::storage_msg__verifying_pin => "VERIFYING PIN", - Self::storage_msg__wrong_pin => "WRONG PIN", + Self::storage_msg__starting => "Starting up", + Self::storage_msg__verifying_pin => "Verifying PIN", + Self::storage_msg__wrong_pin => "Wrong PIN", Self::reset__create_x_of_y_shamir_backup_template => "Do you want to create a {0} of {1} Shamir backup?", - Self::reset__title_shamir_backup => "SHAMIR BACKUP", + Self::reset__title_shamir_backup => "Shamir backup", } } diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index ee950bdbe2..6cfddf997b 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -9,24 +9,24 @@ class TR: addr_mismatch__wrong_derivation_path: str = "Wrong derivation path for selected account." addr_mismatch__xpub_mismatch: str = "XPUB mismatch?" address__public_key: str = "Public key" - address__title_cosigner: str = "COSIGNER" - address__title_receive_address: str = "RECEIVE ADDRESS" - address__title_yours: str = "YOURS" + address__title_cosigner: str = "Cosigner" + address__title_receive_address: str = "Receive address" + address__title_yours: str = "Yours" address_details__derivation_path: str = "Derivation path:" - address_details__title_receive_address: str = "RECEIVE ADDRESS" - address_details__title_receiving_to: str = "RECEIVING TO" + address_details__title_receive_address: str = "Receive address" + address_details__title_receiving_to: str = "Receiving to" authenticate__confirm_template: str = "Allow connected computer to confirm your {0} is genuine?" authenticate__header: str = "Authenticate device" auto_lock__change_template: str = "Auto-lock your Trezor after {0} of inactivity?" - auto_lock__title: str = "AUTO-LOCK DELAY" + auto_lock__title: str = "Auto-lock delay" backup__can_back_up_anytime: str = "You can back up your Trezor once, at any time." backup__it_should_be_backed_up: str = "You should back up your new wallet right now." backup__it_should_be_backed_up_now: str = "It should be backed up now!" backup__new_wallet_created: str = "New wallet created.\n" backup__new_wallet_successfully_created: str = "New wallet created successfully." backup__recover_anytime: str = "You can use your backup to recover your wallet at any time." - backup__title_backup_wallet: str = "BACK UP WALLET" - backup__title_skip: str = "SKIP BACKUP" + backup__title_backup_wallet: str = "Back up wallet" + backup__title_skip: str = "Skip backup" backup__want_to_skip: str = "Are you sure you want to skip the backup?" binance__buy: str = "Buy" binance__confirm_cancel: str = "Confirm cancel" @@ -52,59 +52,59 @@ class TR: bitcoin__new_fee_rate: str = "New fee rate:" bitcoin__simple_send_of: str = "Simple send of" bitcoin__ticket_amount: str = "Ticket amount:" - bitcoin__title_confirm_details: str = "CONFIRM DETAILS" - bitcoin__title_finalize_transaction: str = "FINALIZE TRANSACTION" - bitcoin__title_high_mining_fee: str = "HIGH MINING FEE" - bitcoin__title_meld_transaction: str = "MELD TRANSACTIONS" - bitcoin__title_modify_amount: str = "MODIFY AMOUNT" - bitcoin__title_payjoin: str = "PAYJOIN" - bitcoin__title_proof_of_ownership: str = "PROOF OF OWNERSHIP" - bitcoin__title_purchase_ticket: str = "PURCHASE TICKET" - bitcoin__title_update_transaction: str = "UPDATE TRANSACTION" + bitcoin__title_confirm_details: str = "Confirm details" + bitcoin__title_finalize_transaction: str = "Finalize transaction" + bitcoin__title_high_mining_fee: str = "High mining fee" + bitcoin__title_meld_transaction: str = "Meld transactions" + bitcoin__title_modify_amount: str = "Modify amount" + bitcoin__title_payjoin: str = "Payjoin" + bitcoin__title_proof_of_ownership: str = "Proof of ownership" + bitcoin__title_purchase_ticket: str = "Purchase ticket" + bitcoin__title_update_transaction: str = "Update transaction" bitcoin__unknown_path: str = "Unknown path" bitcoin__unknown_transaction: str = "Unknown transaction" bitcoin__unusually_high_fee: str = "Unusually high fee." bitcoin__unverified_external_inputs: str = "The transaction contains unverified external inputs." bitcoin__valid_signature: str = "The signature is valid." bitcoin__voting_rights: str = "Voting rights to:" - buttons__abort: str = "ABORT" - buttons__access: str = "ACCESS" - buttons__again: str = "AGAIN" - buttons__allow: str = "ALLOW" - buttons__back: str = "BACK" - buttons__back_up: str = "BACK UP" - buttons__cancel: str = "CANCEL" - buttons__change: str = "CHANGE" - buttons__check: str = "CHECK" - buttons__check_again: str = "CHECK AGAIN" - buttons__close: str = "CLOSE" - buttons__confirm: str = "CONFIRM" - buttons__continue: str = "CONTINUE" - buttons__details: str = "DETAILS" - buttons__enable: str = "ENABLE" - buttons__enter: str = "ENTER" - buttons__enter_share: str = "ENTER SHARE" - buttons__export: str = "EXPORT" - buttons__format: str = "FORMAT" - buttons__go_back: str = "GO BACK" - buttons__hold_to_confirm: str = "HOLD TO CONFIRM" - buttons__info: str = "INFO" - buttons__install: str = "INSTALL" - buttons__more_info: str = "MORE INFO" - buttons__ok_i_understand: str = "OK, I UNDERSTAND" - buttons__purchase: str = "PURCHASE" - buttons__quit: str = "QUIT" - buttons__restart: str = "RESTART" - buttons__retry: str = "RETRY" - buttons__select: str = "SELECT" - buttons__set: str = "SET" - buttons__show_all: str = "SHOW ALL" - buttons__show_details: str = "SHOW DETAILS" - buttons__show_words: str = "SHOW WORDS" - buttons__skip: str = "SKIP" - buttons__try_again: str = "TRY AGAIN" - buttons__turn_off: str = "TURN OFF" - buttons__turn_on: str = "TURN ON" + buttons__abort: str = "Abort" + buttons__access: str = "Access" + buttons__again: str = "Again" + buttons__allow: str = "Allow" + buttons__back: str = "Back" + buttons__back_up: str = "Back up" + buttons__cancel: str = "Cancel" + buttons__change: str = "Change" + buttons__check: str = "Check" + buttons__check_again: str = "Check again" + buttons__close: str = "Close" + buttons__confirm: str = "Confirm" + buttons__continue: str = "Continue" + buttons__details: str = "Details" + buttons__enable: str = "Enable" + buttons__enter: str = "Enter" + buttons__enter_share: str = "Enter share" + buttons__export: str = "Export" + buttons__format: str = "Format" + buttons__go_back: str = "Go back" + buttons__hold_to_confirm: str = "Hold to confirm" + buttons__info: str = "Info" + buttons__install: str = "Install" + buttons__more_info: str = "More info" + buttons__ok_i_understand: str = "Ok, I understand" + buttons__purchase: str = "Purchase" + buttons__quit: str = "Quit" + buttons__restart: str = "Restart" + buttons__retry: str = "Retry" + buttons__select: str = "Select" + buttons__set: str = "Set" + buttons__show_all: str = "Show all" + buttons__show_details: str = "Show details" + buttons__show_words: str = "Show words" + buttons__skip: str = "Skip" + buttons__try_again: str = "Try again" + buttons__turn_off: str = "Turn off" + buttons__turn_on: str = "Turn on" cardano__addr_base: str = "Base" cardano__addr_enterprise: str = "Enterprise" cardano__addr_legacy: str = "Legacy" @@ -218,21 +218,21 @@ class TR: coinjoin__do_not_disconnect: str = "Do not disconnect your Trezor!" coinjoin__max_mining_fee: str = "Max mining fee" coinjoin__max_rounds: str = "Max rounds" - coinjoin__title: str = "AUTHORIZE COINJOIN" - coinjoin__title_do_not_disconnect: str = "DO NOT DISCONNECT YOUR TREZOR!" - coinjoin__title_progress: str = "COINJOIN IN PROGRESS" + coinjoin__title: str = "Authorize coinjoin" + coinjoin__title_do_not_disconnect: str = "Do not disconnect your trezor!" + coinjoin__title_progress: str = "Coinjoin in progress" coinjoin__waiting_for_others: str = "Waiting for others" confirm_total__fee_rate: str = "Fee rate:" confirm_total__sending_from_account: str = "Sending from account:" - confirm_total__title_fee: str = "FEE INFORMATION" - confirm_total__title_sending_from: str = "SENDING FROM" + confirm_total__title_fee: str = "Fee information" + confirm_total__title_sending_from: str = "Sending from" debug__loading_seed: str = "Loading seed" debug__loading_seed_not_recommended: str = "Loading private seed is not recommended." device_name__change_template: str = "Change device name to {0}?" - device_name__title: str = "DEVICE NAME" + device_name__title: str = "Device name" entropy__send: str = "Do you really want to send entropy?" - entropy__title: str = "INTERNAL ENTROPY" - entropy__title_confirm: str = "CONFIRM ENTROPY" + entropy__title: str = "Internal entropy" + entropy__title_confirm: str = "Confirm entropy" eos__about_to_sign_template: str = "You are about to sign {0}." eos__action_name: str = "Action Name:" eos__arbitrary_data: str = "Arbitrary data" @@ -288,26 +288,26 @@ class TR: ethereum__show_full_message: str = "Show full message" ethereum__show_full_struct: str = "Show full struct" ethereum__sign_eip712: str = "Really sign EIP-712 typed data?" - ethereum__staking_claim: str = "CLAIM" - ethereum__staking_claim_address: str = "CLAIM ADDRESS" + ethereum__staking_claim: str = "Claim" + ethereum__staking_claim_address: str = "Claim address" ethereum__staking_claim_intro: str = "Claim ETH from Everstake?" - ethereum__staking_stake: str = "STAKE" - ethereum__staking_stake_address: str = "STAKE ADDRESS" + ethereum__staking_stake: str = "Stake" + ethereum__staking_stake_address: str = "Stake address" ethereum__staking_stake_intro: str = "Stake ETH on Everstake?" - ethereum__staking_unstake: str = "UNSTAKE" + ethereum__staking_unstake: str = "Unstake" ethereum__staking_unstake_intro: str = "Unstake ETH from Everstake?" - ethereum__title_confirm_data: str = "CONFIRM DATA" - ethereum__title_confirm_domain: str = "CONFIRM DOMAIN" - ethereum__title_confirm_message: str = "CONFIRM MESSAGE" - ethereum__title_confirm_struct: str = "CONFIRM STRUCT" - ethereum__title_confirm_typed_data: str = "CONFIRM TYPED DATA" - ethereum__title_signing_address: str = "SIGNING ADDRESS" + ethereum__title_confirm_data: str = "Confirm data" + ethereum__title_confirm_domain: str = "Confirm domain" + ethereum__title_confirm_message: str = "Confirm message" + ethereum__title_confirm_struct: str = "Confirm struct" + ethereum__title_confirm_typed_data: str = "Confirm typed data" + ethereum__title_signing_address: str = "Signing address" ethereum__units_template: str = "{0} units" ethereum__unknown_token: str = "Unknown token" ethereum__valid_signature: str = "The signature is valid." experimental_mode__enable: str = "Enable experimental features?" experimental_mode__only_for_dev: str = "Only for development and beta testing!" - experimental_mode__title: str = "EXPERIMENTAL MODE" + experimental_mode__title: str = "Experimental mode" fido__already_registered: str = "Already registered" fido__device_already_registered: str = "This device is already registered with this application." fido__device_already_registered_with_template: str = "This device is already registered with {0}." @@ -318,29 +318,29 @@ class TR: fido__not_registered: str = "Not registered" fido__not_registered_with_template: str = "This device is not registered with\n{0}." fido__please_enable_pin_protection: str = "Please enable PIN protection." - fido__title_authenticate: str = "FIDO2 AUTHENTICATE" - fido__title_import_credential: str = "IMPORT CREDENTIAL" - fido__title_list_credentials: str = "LIST CREDENTIALS" - fido__title_register: str = "FIDO2 REGISTER" - fido__title_remove_credential: str = "REMOVE CREDENTIAL" - fido__title_reset: str = "FIDO2 RESET" - fido__title_u2f_auth: str = "U2F AUTHENTICATE" - fido__title_u2f_register: str = "U2F REGISTER" - fido__title_verify_user: str = "FIDO2 VERIFY USER" + fido__title_authenticate: str = "FIDO2 authenticate" + fido__title_import_credential: str = "Import credential" + fido__title_list_credentials: str = "List credentials" + fido__title_register: str = "FIDO2 register" + fido__title_remove_credential: str = "Remove credential" + fido__title_reset: str = "FIDO2 reset" + fido__title_u2f_auth: str = "U2F authenticate" + fido__title_u2f_register: str = "U2F register" + fido__title_verify_user: str = "FIDO2 verify user" fido__unable_to_verify_user: str = "Unable to verify user." fido__wanna_erase_credentials: str = "Do you really want to erase all credentials?" - firmware_update__title: str = "UPDATE FIRMWARE" - firmware_update__title_fingerprint: str = "FW FINGERPRINT" + firmware_update__title: str = "Update firmware" + firmware_update__title_fingerprint: str = "FW fingerprint" homescreen__click_to_connect: str = "Click to Connect" homescreen__click_to_unlock: str = "Click to Unlock" - homescreen__title_backup_failed: str = "BACKUP FAILED" - homescreen__title_backup_needed: str = "BACKUP NEEDED" - homescreen__title_coinjoin_authorized: str = "COINJOIN AUTHORIZED" - homescreen__title_experimental_mode: str = "EXPERIMENTAL MODE" - homescreen__title_no_usb_connection: str = "NO USB CONNECTION" - homescreen__title_pin_not_set: str = "PIN NOT SET" - homescreen__title_seedless: str = "SEEDLESS" - homescreen__title_set: str = "CHANGE HOMESCREEN?" + homescreen__title_backup_failed: str = "Backup failed" + homescreen__title_backup_needed: str = "Backup needed" + homescreen__title_coinjoin_authorized: str = "Coinjoin authorized" + homescreen__title_experimental_mode: str = "Experimental mode" + homescreen__title_no_usb_connection: str = "No USB connection" + homescreen__title_pin_not_set: str = "PIN not set" + homescreen__title_seedless: str = "Seedless" + homescreen__title_set: str = "Change homescreen?" inputs__back: str = "BACK" inputs__cancel: str = "CANCEL" inputs__delete: str = "DELETE" @@ -349,30 +349,30 @@ class TR: inputs__return: str = "RETURN" inputs__show: str = "SHOW" inputs__space: str = "SPACE" - joint__title: str = "JOINT TRANSACTION" + joint__title: str = "Joint transaction" joint__to_the_total_amount: str = "To the total amount:" joint__you_are_contributing: str = "You are contributing:" language__change_to_template: str = "Change language to {0}?" language__changed: str = "Language changed successfully" language__progress: str = "Changing language" - language__title: str = "LANGUAGE SETTINGS" + language__title: str = "Language settings" lockscreen__tap_to_connect: str = "Tap to connect" lockscreen__tap_to_unlock: str = "Tap to unlock" - lockscreen__title_locked: str = "LOCKED" - lockscreen__title_not_connected: str = "NOT CONNECTED" + lockscreen__title_locked: str = "Locked" + lockscreen__title_not_connected: str = "Not connected" misc__decrypt_value: str = "Decrypt value" misc__encrypt_value: str = "Encrypt value" - misc__title_suite_labeling: str = "SUITE LABELING" + misc__title_suite_labeling: str = "Suite labeling" modify_amount__decrease_amount: str = "Decrease amount by:" modify_amount__increase_amount: str = "Increase amount by:" modify_amount__new_amount: str = "New amount:" - modify_amount__title: str = "MODIFY AMOUNT" + modify_amount__title: str = "Modify amount" modify_fee__decrease_fee: str = "Decrease fee by:" modify_fee__fee_rate: str = "Fee rate:" modify_fee__increase_fee: str = "Increase fee by:" modify_fee__new_transaction_fee: str = "New transaction fee:" modify_fee__no_change: str = "Fee did not change.\n" - modify_fee__title: str = "MODIFY FEE" + modify_fee__title: str = "Modify fee" modify_fee__transaction_fee: str = "Transaction fee:" monero__confirm_export: str = "Confirm export" monero__confirm_ki_sync: str = "Confirm ki sync" @@ -451,11 +451,11 @@ class TR: passphrase__next_screen_will_show_passphrase: str = "Next screen will show the passphrase." passphrase__please_enter: str = "Please enter your passphrase." passphrase__revoke_on_device: str = "Do you want to revoke the passphrase on device setting?" - passphrase__title_confirm: str = "CONFIRM PASSPHRASE" - passphrase__title_enter: str = "ENTER PASSPHRASE" - passphrase__title_hide: str = "HIDE PASSPHRASE" - passphrase__title_settings: str = "PASSPHRASE SETTINGS" - passphrase__title_source: str = "PASSPHRASE SOURCE" + passphrase__title_confirm: str = "Confirm passphrase" + passphrase__title_enter: str = "Enter passphrase" + passphrase__title_hide: str = "Hide passphrase" + passphrase__title_settings: str = "Passphrase settings" + passphrase__title_source: str = "Passphrase source" passphrase__turn_off: str = "Turn off passphrase protection?" passphrase__turn_on: str = "Turn on passphrase protection?" pin__change: str = "Change PIN?" @@ -476,9 +476,9 @@ class TR: pin__reenter_new: str = "Re-enter new PIN" pin__reenter_to_confirm: str = "Please re-enter PIN to confirm." pin__should_be_long: str = "PIN should be 4-50 digits long." - pin__title_check_pin: str = "CHECK PIN" - pin__title_settings: str = "PIN SETTINGS" - pin__title_wrong_pin: str = "WRONG PIN" + pin__title_check_pin: str = "Check PIN" + pin__title_settings: str = "PIN settings" + pin__title_wrong_pin: str = "Wrong PIN" pin__tries_left: str = "tries left" pin__turn_off: str = "Are you sure you want to turn off PIN protection?" pin__turn_on: str = "Turn on PIN protection?" @@ -497,14 +497,14 @@ class TR: progress__loading_transaction: str = "Loading transaction..." progress__locking_device: str = "Locking the device..." progress__one_second_left: str = "1 second left" - progress__please_wait: str = "PLEASE WAIT" + progress__please_wait: str = "Please wait" progress__refreshing: str = "Refreshing..." progress__signing_transaction: str = "Signing transaction..." progress__syncing: str = "Syncing..." progress__x_seconds_left_template: str = "{0} seconds left" reboot_to_bootloader__just_a_moment: str = "Just a moment..." reboot_to_bootloader__restart: str = "Trezor will restart in bootloader mode." - reboot_to_bootloader__title: str = "GO TO BOOTLOADER" + reboot_to_bootloader__title: str = "Go to bootloader" reboot_to_bootloader__version_by_template: str = "Firmware version {0}\nby {1}" recovery__cancel_dry_run: str = "Cancel backup check" recovery__check_dry_run: str = "Check your backup?" @@ -529,18 +529,18 @@ class TR: recovery__share_already_entered: str = "Share already entered" recovery__share_from_another_shamir: str = "You have entered a share from another Shamir Backup." recovery__share_num_template: str = "Share {0}" - recovery__title: str = "RECOVER WALLET" - recovery__title_cancel_dry_run: str = "CANCEL BACKUP CHECK" - recovery__title_cancel_recovery: str = "CANCEL RECOVERY" - recovery__title_dry_run: str = "BACKUP CHECK" - recovery__title_recover: str = "RECOVER WALLET" - recovery__title_remaining_shares: str = "REMAINING SHARES" + recovery__title: str = "Recover wallet" + recovery__title_cancel_dry_run: str = "Cancel backup check" + recovery__title_cancel_recovery: str = "Cancel recovery" + recovery__title_dry_run: str = "Backup check" + recovery__title_recover: str = "Recover wallet" + recovery__title_remaining_shares: str = "Remaining shares" recovery__type_word_x_of_y_template: str = "Type word {0} of {1}" recovery__wallet_recovered: str = "Wallet recovered successfully" recovery__wanna_cancel_dry_run: str = "Are you sure you want to cancel the backup check?" recovery__wanna_cancel_recovery: str = "Are you sure you want to cancel the recovery process?" recovery__word_count_template: str = "({0} words)" - recovery__word_x_of_y_template: str = "WORD {0} OF {1}" + recovery__word_x_of_y_template: str = "Word {0} of {1}" recovery__x_more_items_starting_template_plural: str = "{count} more {plural} starting" recovery__x_more_shares_needed_template_plural: str = "{count} more {plural} needed." recovery__x_of_y_entered_template: str = "{0} of {1} shares entered successfully." @@ -548,13 +548,13 @@ class TR: reset__advanced_group_threshold_info: str = "The group threshold specifies the number of groups required to recover your wallet." reset__all_x_of_y_template: str = "all {0} of {1} shares" reset__any_x_of_y_template: str = "any {0} of {1} shares" - reset__button_create: str = "CREATE WALLET" - reset__button_recover: str = "RECOVER WALLET" + reset__button_create: str = "Create wallet" + reset__button_recover: str = "Recover wallet" reset__by_continuing: str = "By continuing you agree to Trezor Company's terms and conditions." - reset__check_backup_title: str = "CHECK BACKUP" - reset__check_group_share_title_template: str = "CHECK G{0} - SHARE {1}" - reset__check_share_title_template: str = "CHECK SHARE #{0}" - reset__check_wallet_backup_title: str = "CHECK WALLET BACKUP" + reset__check_backup_title: str = "Check backup" + reset__check_group_share_title_template: str = "Check g{0} - share {1}" + reset__check_share_title_template: str = "Check share #{0}" + reset__check_wallet_backup_title: str = "Check wallet backup" reset__continue_with_next_share: str = "Continue with the next share." reset__continue_with_share_template: str = "Continue with share #{0}." reset__create_x_of_y_shamir_backup_template: str = "Do you want to create a {0} of {1} Shamir backup?" @@ -564,7 +564,7 @@ class TR: reset__group_description: str = "A group is made up of recovery shares." reset__group_info: str = "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds." reset__group_share_checked_successfully_template: str = "Group {0} - Share {1} checked successfully." - reset__group_share_title_template: str = "GROUP {0} - SHARE {1}" + reset__group_share_title_template: str = "Group {0} - share {1}" reset__more_info_at: str = "More info at" reset__need_all_share_template: str = "For recovery you need all {0} of the shares." reset__need_any_share_template: str = "For recovery you need any {0} of the shares." @@ -578,15 +578,15 @@ class TR: reset__number_of_shares_info: str = "= total number of unique word lists used for wallet backup." reset__one_share: str = "1 share" reset__only_one_share_will_be_created: str = "Only one share will be created." - reset__recovery_share_title_template: str = "RECOVERY SHARE #{0}" - reset__recovery_wallet_backup_title: str = "WALLET BACKUP" + reset__recovery_share_title_template: str = "Recovery share #{0}" + reset__recovery_wallet_backup_title: str = "Wallet backup" reset__required_number_of_groups: str = "The required number of groups for recovery." reset__select_correct_word: str = "Select the correct word for each position." - reset__select_word_template: str = "SELECT {0} WORD" + reset__select_word_template: str = "Select {0} word" reset__select_word_x_of_y_template: str = "Select word {0} of {1}:" reset__set_it_to_count_template: str = "Set it to {0} and you will need " reset__share_checked_successfully_template: str = "Recovery share #{0} checked successfully." - reset__share_words_title: str = "STANDARD BACKUP" + reset__share_words_title: str = "Standard backup" reset__slip39_checklist_num_groups: str = "Number of groups" reset__slip39_checklist_num_shares: str = "Number of shares" reset__slip39_checklist_set_num_groups: str = "Set number of groups" @@ -594,22 +594,22 @@ class TR: reset__slip39_checklist_set_sizes: str = "Set sizes and thresholds" reset__slip39_checklist_set_sizes_longer: str = "Set size and threshold for each group" reset__slip39_checklist_set_threshold: str = "Set threshold" - reset__slip39_checklist_title: str = "BACKUP CHECKLIST" + reset__slip39_checklist_title: str = "Backup checklist" reset__slip39_checklist_write_down: str = "Write down and check all shares" reset__slip39_checklist_write_down_recovery: str = "Write down and check all recovery shares" reset__the_threshold_sets_the_number_of_shares: str = "The threshold sets the number of shares " reset__threshold_info: str = "= minimum number of unique word lists used for recovery." - reset__title_backup_is_done: str = "BACKUP IS DONE" - reset__title_create_wallet: str = "CREATE WALLET" - reset__title_create_wallet_shamir: str = "CREATE WALLET (SHAMIR)" - reset__title_group_threshold: str = "GROUP THRESHOLD" - reset__title_number_of_groups: str = "NUMBER OF GROUPS" - reset__title_number_of_shares: str = "NUMBER OF SHARES" - reset__title_set_group_threshold: str = "SET GROUP THRESHOLD" - reset__title_set_number_of_groups: str = "SET NUMBER OF GROUPS" - reset__title_set_number_of_shares: str = "SET NUMBER OF SHARES" - reset__title_set_threshold: str = "SET THRESHOLD" - reset__title_shamir_backup: str = "SHAMIR BACKUP" + reset__title_backup_is_done: str = "Backup is done" + reset__title_create_wallet: str = "Create wallet" + reset__title_create_wallet_shamir: str = "Create wallet (shamir)" + reset__title_group_threshold: str = "Group threshold" + reset__title_number_of_groups: str = "Number of groups" + reset__title_number_of_shares: str = "Number of shares" + reset__title_set_group_threshold: str = "Set group threshold" + reset__title_set_number_of_groups: str = "Set number of groups" + reset__title_set_number_of_shares: str = "Set number of shares" + reset__title_set_threshold: str = "Set threshold" + reset__title_shamir_backup: str = "Shamir backup" reset__to_form_group_template: str = "to form Group {0}." reset__tos_link: str = "trezor.io/tos" reset__total_number_of_shares_in_group_template: str = "Set the total number of shares in Group {0}." @@ -624,13 +624,13 @@ class TR: rotation__east: str = "east" rotation__north: str = "north" rotation__south: str = "south" - rotation__title_change: str = "CHANGE ROTATION" + rotation__title_change: str = "Change rotation" rotation__west: str = "west" safety_checks__approve_unsafe_always: str = "Trezor will allow you to approve some actions which might be unsafe." safety_checks__approve_unsafe_temporary: str = "Trezor will temporarily allow you to approve some actions which might be unsafe." safety_checks__enforce_strict: str = "Do you really want to enforce strict safety checks (recommended)?" - safety_checks__title: str = "SAFETY CHECKS" - safety_checks__title_safety_override: str = "SAFETY OVERRIDE" + safety_checks__title: str = "Safety checks" + safety_checks__title_safety_override: str = "Safety override" sd_card__all_data_will_be_lost: str = "All data on the SD card will be lost." sd_card__card_required: str = "SD card required." sd_card__disable: str = "Do you really want to remove SD card protection from your device?" @@ -646,25 +646,25 @@ class TR: sd_card__refresh: str = "Do you really want to replace the current SD card secret with a newly generated one?" sd_card__refreshed: str = "You have successfully refreshed SD protection." sd_card__restart: str = "Do you want to restart Trezor in bootloader mode?" - sd_card__title: str = "SD CARD PROTECTION" - sd_card__title_problem: str = "SD CARD PROBLEM" + sd_card__title: str = "SD card protection" + sd_card__title_problem: str = "SD card problem" sd_card__unknown_filesystem: str = "Unknown filesystem." sd_card__unplug_and_insert_correct: str = "Please unplug the device and insert the correct SD card." sd_card__use_different_card: str = "Use a different card or format the SD card to the FAT32 filesystem." sd_card__wanna_format: str = "Do you really want to format the SD card?" sd_card__wrong_sd_card: str = "Wrong SD card." send__address_path: str = "address path" - send__confirm_sending: str = "SENDING AMOUNT" + send__confirm_sending: str = "Sending amount" send__from_multiple_accounts: str = "Sending from multiple accounts." send__including_fee: str = "Including fee:" send__maximum_fee: str = "Maximum fee:" send__receiving_to_multisig: str = "Receiving to a multisig address." - send__title_confirm_sending: str = "CONFIRM SENDING" - send__title_joint_transaction: str = "JOINT TRANSACTION" - send__title_receiving_to: str = "RECEIVING TO" - send__title_sending: str = "SENDING" - send__title_sending_amount: str = "SENDING AMOUNT" - send__title_sending_to: str = "SENDING TO" + send__title_confirm_sending: str = "Confirm sending" + send__title_joint_transaction: str = "Joint transaction" + send__title_receiving_to: str = "Receiving to" + send__title_sending: str = "Sending" + send__title_sending_amount: str = "Sending amount" + send__title_sending_to: str = "Sending to" send__to_the_total_amount: str = "To the total amount:" send__total_amount: str = "Total amount:" send__transaction_id: str = "Transaction ID:" @@ -672,10 +672,10 @@ class TR: share_words__words_in_order: str = " words in order." share_words__wrote_down_all: str = "I wrote down all " sign_message__bytes_template: str = "{0} Bytes" - sign_message__confirm_address: str = "SIGNING ADDRESS" - sign_message__confirm_message: str = "CONFIRM MESSAGE" + sign_message__confirm_address: str = "Signing address" + sign_message__confirm_message: str = "Confirm message" sign_message__message_size: str = "Message size:" - sign_message__verify_address: str = "VERIFY ADDRESS" + sign_message__verify_address: str = "Verify address" solana__account_index: str = "Account index" solana__associated_token_account: str = "Associated token account" solana__confirm_multisig: str = "Confirm multisig" @@ -757,10 +757,10 @@ class TR: stellar__value_sha256: str = "Value (SHA-256):" stellar__wanna_clean_value_key_template: str = "Do you want to clear value key {0}?" stellar__your_account: str = " your account" - storage_msg__processing: str = "PROCESSING" - storage_msg__starting: str = "STARTING UP" - storage_msg__verifying_pin: str = "VERIFYING PIN" - storage_msg__wrong_pin: str = "WRONG PIN" + storage_msg__processing: str = "Processing" + storage_msg__starting: str = "Starting up" + storage_msg__verifying_pin: str = "Verifying PIN" + storage_msg__wrong_pin: str = "Wrong PIN" tezos__baker_address: str = "Baker address:" tezos__balance: str = "Balance:" tezos__ballot: str = "Ballot:" @@ -778,18 +778,18 @@ class TR: tutorial__ready_to_use: str = "You're ready to\nuse Trezor." tutorial__scroll_down: str = "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up." tutorial__sure_you_want_skip: str = "Are you sure you\nwant to skip the tutorial?" - tutorial__title_hello: str = "HELLO" - tutorial__title_screen_scroll: str = "SCREEN SCROLL" - tutorial__title_skip: str = "SKIP TUTORIAL" - tutorial__title_tutorial_complete: str = "TUTORIAL COMPLETE" + tutorial__title_hello: str = "Hello" + tutorial__title_screen_scroll: str = "Screen scroll" + tutorial__title_skip: str = "Skip tutorial" + tutorial__title_tutorial_complete: str = "Tutorial complete" tutorial__use_trezor: str = "Use Trezor by\nclicking the left and right buttons.\n\rContinue right." tutorial__welcome_press_right: str = "Welcome to Trezor. Press right to continue." u2f__get: str = "Increase and retrieve the U2F counter?" u2f__set_template: str = "Set the U2F counter to {0}?" - u2f__title_get: str = "GET U2F COUNTER" - u2f__title_set: str = "SET U2F COUNTER" + u2f__title_get: str = "Get U2F counter" + u2f__title_set: str = "Set U2F counter" wipe__info: str = "All data will be erased." - wipe__title: str = "WIPE DEVICE" + wipe__title: str = "Wipe device" wipe__want_to_wipe: str = "Do you really want to wipe the device?\n" wipe_code__change: str = "Change wipe code?" wipe_code__changed: str = "Wipe code changed." @@ -802,13 +802,13 @@ class TR: wipe_code__mismatch: str = "The wipe codes you entered do not match." wipe_code__reenter: str = "Re-enter wipe code" wipe_code__reenter_to_confirm: str = "Please re-enter wipe code to confirm." - wipe_code__title_check: str = "CHECK WIPE CODE" - wipe_code__title_invalid: str = "INVALID WIPE CODE" - wipe_code__title_settings: str = "WIPE CODE SETTINGS" + wipe_code__title_check: str = "Check wipe code" + wipe_code__title_invalid: str = "Invalid wipe code" + wipe_code__title_settings: str = "Wipe code settings" wipe_code__turn_off: str = "Turn off wipe code protection?" wipe_code__turn_on: str = "Turn on wipe code protection?" wipe_code__wipe_code_mismatch: str = "Wipe code mismatch" - word_count__title: str = "NUMBER OF WORDS" + word_count__title: str = "Number of words" words__account: str = "Account" words__account_colon: str = "Account:" words__address: str = "Address" @@ -836,15 +836,15 @@ class TR: words__recipient: str = "Recipient" words__sign: str = "Sign" words__signer: str = "Signer" - words__title_check: str = "CHECK" - words__title_group: str = "GROUP" - words__title_information: str = "INFORMATION" - words__title_remember: str = "REMEMBER" - words__title_share: str = "SHARE" - words__title_shares: str = "SHARES" - words__title_success: str = "SUCCESS" - words__title_summary: str = "SUMMARY" - words__title_threshold: str = "THRESHOLD" + words__title_check: str = "Check" + words__title_group: str = "Group" + words__title_information: str = "Information" + words__title_remember: str = "Remember" + words__title_share: str = "Share" + words__title_shares: str = "Shares" + words__title_success: str = "Success" + words__title_summary: str = "Summary" + words__title_threshold: str = "Threshold" words__unknown: str = "Unknown" words__warning: str = "Warning" words__writable: str = "Writable" diff --git a/core/translations/en.json b/core/translations/en.json index 4d266032f3..b010dc31d6 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -11,24 +11,24 @@ "addr_mismatch__wrong_derivation_path": "Wrong derivation path for selected account.", "addr_mismatch__xpub_mismatch": "XPUB mismatch?", "address__public_key": "Public key", - "address__title_cosigner": "COSIGNER", - "address__title_receive_address": "RECEIVE ADDRESS", - "address__title_yours": "YOURS", + "address__title_cosigner": "Cosigner", + "address__title_receive_address": "Receive address", + "address__title_yours": "Yours", "address_details__derivation_path": "Derivation path:", - "address_details__title_receive_address": "RECEIVE ADDRESS", - "address_details__title_receiving_to": "RECEIVING TO", + "address_details__title_receive_address": "Receive address", + "address_details__title_receiving_to": "Receiving to", "authenticate__confirm_template": "Allow connected computer to confirm your {0} is genuine?", "authenticate__header": "Authenticate device", "auto_lock__change_template": "Auto-lock your Trezor after {0} of inactivity?", - "auto_lock__title": "AUTO-LOCK DELAY", + "auto_lock__title": "Auto-lock delay", "backup__can_back_up_anytime": "You can back up your Trezor once, at any time.", "backup__it_should_be_backed_up": "You should back up your new wallet right now.", "backup__it_should_be_backed_up_now": "It should be backed up now!", "backup__new_wallet_created": "New wallet created.\n", "backup__new_wallet_successfully_created": "New wallet created successfully.", "backup__recover_anytime": "You can use your backup to recover your wallet at any time.", - "backup__title_backup_wallet": "BACK UP WALLET", - "backup__title_skip": "SKIP BACKUP", + "backup__title_backup_wallet": "Back up wallet", + "backup__title_skip": "Skip backup", "backup__want_to_skip": "Are you sure you want to skip the backup?", "binance__buy": "Buy", "binance__confirm_cancel": "Confirm cancel", @@ -54,59 +54,59 @@ "bitcoin__new_fee_rate": "New fee rate:", "bitcoin__simple_send_of": "Simple send of", "bitcoin__ticket_amount": "Ticket amount:", - "bitcoin__title_confirm_details": "CONFIRM DETAILS", - "bitcoin__title_finalize_transaction": "FINALIZE TRANSACTION", - "bitcoin__title_high_mining_fee": "HIGH MINING FEE", - "bitcoin__title_meld_transaction": "MELD TRANSACTIONS", - "bitcoin__title_modify_amount": "MODIFY AMOUNT", - "bitcoin__title_payjoin": "PAYJOIN", - "bitcoin__title_proof_of_ownership": "PROOF OF OWNERSHIP", - "bitcoin__title_purchase_ticket": "PURCHASE TICKET", - "bitcoin__title_update_transaction": "UPDATE TRANSACTION", + "bitcoin__title_confirm_details": "Confirm details", + "bitcoin__title_finalize_transaction": "Finalize transaction", + "bitcoin__title_high_mining_fee": "High mining fee", + "bitcoin__title_meld_transaction": "Meld transactions", + "bitcoin__title_modify_amount": "Modify amount", + "bitcoin__title_payjoin": "Payjoin", + "bitcoin__title_proof_of_ownership": "Proof of ownership", + "bitcoin__title_purchase_ticket": "Purchase ticket", + "bitcoin__title_update_transaction": "Update transaction", "bitcoin__unknown_path": "Unknown path", "bitcoin__unknown_transaction": "Unknown transaction", "bitcoin__unusually_high_fee": "Unusually high fee.", "bitcoin__unverified_external_inputs": "The transaction contains unverified external inputs.", "bitcoin__valid_signature": "The signature is valid.", "bitcoin__voting_rights": "Voting rights to:", - "buttons__abort": "ABORT", - "buttons__access": "ACCESS", - "buttons__again": "AGAIN", - "buttons__allow": "ALLOW", - "buttons__back": "BACK", - "buttons__back_up": "BACK UP", - "buttons__cancel": "CANCEL", - "buttons__change": "CHANGE", - "buttons__check": "CHECK", - "buttons__check_again": "CHECK AGAIN", - "buttons__close": "CLOSE", - "buttons__confirm": "CONFIRM", - "buttons__continue": "CONTINUE", - "buttons__details": "DETAILS", - "buttons__enable": "ENABLE", - "buttons__enter": "ENTER", - "buttons__enter_share": "ENTER SHARE", - "buttons__export": "EXPORT", - "buttons__format": "FORMAT", - "buttons__go_back": "GO BACK", - "buttons__hold_to_confirm": "HOLD TO CONFIRM", - "buttons__info": "INFO", - "buttons__install": "INSTALL", - "buttons__more_info": "MORE INFO", - "buttons__ok_i_understand": "OK, I UNDERSTAND", - "buttons__purchase": "PURCHASE", - "buttons__quit": "QUIT", - "buttons__restart": "RESTART", - "buttons__retry": "RETRY", - "buttons__select": "SELECT", - "buttons__set": "SET", - "buttons__show_all": "SHOW ALL", - "buttons__show_details": "SHOW DETAILS", - "buttons__show_words": "SHOW WORDS", - "buttons__skip": "SKIP", - "buttons__try_again": "TRY AGAIN", - "buttons__turn_off": "TURN OFF", - "buttons__turn_on": "TURN ON", + "buttons__abort": "Abort", + "buttons__access": "Access", + "buttons__again": "Again", + "buttons__allow": "Allow", + "buttons__back": "Back", + "buttons__back_up": "Back up", + "buttons__cancel": "Cancel", + "buttons__change": "Change", + "buttons__check": "Check", + "buttons__check_again": "Check again", + "buttons__close": "Close", + "buttons__confirm": "Confirm", + "buttons__continue": "Continue", + "buttons__details": "Details", + "buttons__enable": "Enable", + "buttons__enter": "Enter", + "buttons__enter_share": "Enter share", + "buttons__export": "Export", + "buttons__format": "Format", + "buttons__go_back": "Go back", + "buttons__hold_to_confirm": "Hold to confirm", + "buttons__info": "Info", + "buttons__install": "Install", + "buttons__more_info": "More info", + "buttons__ok_i_understand": "Ok, I understand", + "buttons__purchase": "Purchase", + "buttons__quit": "Quit", + "buttons__restart": "Restart", + "buttons__retry": "Retry", + "buttons__select": "Select", + "buttons__set": "Set", + "buttons__show_all": "Show all", + "buttons__show_details": "Show details", + "buttons__show_words": "Show words", + "buttons__skip": "Skip", + "buttons__try_again": "Try again", + "buttons__turn_off": "Turn off", + "buttons__turn_on": "Turn on", "cardano__addr_base": "Base", "cardano__addr_enterprise": "Enterprise", "cardano__addr_legacy": "Legacy", @@ -220,21 +220,21 @@ "coinjoin__do_not_disconnect": "Do not disconnect your Trezor!", "coinjoin__max_mining_fee": "Max mining fee", "coinjoin__max_rounds": "Max rounds", - "coinjoin__title": "AUTHORIZE COINJOIN", - "coinjoin__title_do_not_disconnect": "DO NOT DISCONNECT YOUR TREZOR!", - "coinjoin__title_progress": "COINJOIN IN PROGRESS", + "coinjoin__title": "Authorize coinjoin", + "coinjoin__title_do_not_disconnect": "Do not disconnect your trezor!", + "coinjoin__title_progress": "Coinjoin in progress", "coinjoin__waiting_for_others": "Waiting for others", "confirm_total__fee_rate": "Fee rate:", "confirm_total__sending_from_account": "Sending from account:", - "confirm_total__title_fee": "FEE INFORMATION", - "confirm_total__title_sending_from": "SENDING FROM", + "confirm_total__title_fee": "Fee information", + "confirm_total__title_sending_from": "Sending from", "debug__loading_seed": "Loading seed", "debug__loading_seed_not_recommended": "Loading private seed is not recommended.", "device_name__change_template": "Change device name to {0}?", - "device_name__title": "DEVICE NAME", + "device_name__title": "Device name", "entropy__send": "Do you really want to send entropy?", - "entropy__title": "INTERNAL ENTROPY", - "entropy__title_confirm": "CONFIRM ENTROPY", + "entropy__title": "Internal entropy", + "entropy__title_confirm": "Confirm entropy", "eos__about_to_sign_template": "You are about to sign {0}.", "eos__action_name": "Action Name:", "eos__arbitrary_data": "Arbitrary data", @@ -290,26 +290,26 @@ "ethereum__show_full_message": "Show full message", "ethereum__show_full_struct": "Show full struct", "ethereum__sign_eip712": "Really sign EIP-712 typed data?", - "ethereum__title_confirm_data": "CONFIRM DATA", - "ethereum__title_confirm_domain": "CONFIRM DOMAIN", - "ethereum__title_confirm_message": "CONFIRM MESSAGE", - "ethereum__title_confirm_struct": "CONFIRM STRUCT", - "ethereum__title_confirm_typed_data": "CONFIRM TYPED DATA", - "ethereum__title_signing_address": "SIGNING ADDRESS", + "ethereum__title_confirm_data": "Confirm data", + "ethereum__title_confirm_domain": "Confirm domain", + "ethereum__title_confirm_message": "Confirm message", + "ethereum__title_confirm_struct": "Confirm struct", + "ethereum__title_confirm_typed_data": "Confirm typed data", + "ethereum__title_signing_address": "Signing address", "ethereum__units_template": "{0} units", "ethereum__unknown_token": "Unknown token", "ethereum__valid_signature": "The signature is valid.", - "ethereum__staking_stake": "STAKE", - "ethereum__staking_stake_address": "STAKE ADDRESS", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Stake address", "ethereum__staking_stake_intro": "Stake ETH on Everstake?", - "ethereum__staking_unstake": "UNSTAKE", + "ethereum__staking_unstake": "Unstake", "ethereum__staking_unstake_intro": "Unstake ETH from Everstake?", - "ethereum__staking_claim": "CLAIM", - "ethereum__staking_claim_address": "CLAIM ADDRESS", + "ethereum__staking_claim": "Claim", + "ethereum__staking_claim_address": "Claim address", "ethereum__staking_claim_intro": "Claim ETH from Everstake?", "experimental_mode__enable": "Enable experimental features?", "experimental_mode__only_for_dev": "Only for development and beta testing!", - "experimental_mode__title": "EXPERIMENTAL MODE", + "experimental_mode__title": "Experimental mode", "fido__already_registered": "Already registered", "fido__device_already_registered": "This device is already registered with this application.", "fido__device_already_registered_with_template": "This device is already registered with {0}.", @@ -320,29 +320,29 @@ "fido__not_registered": "Not registered", "fido__not_registered_with_template": "This device is not registered with\n{0}.", "fido__please_enable_pin_protection": "Please enable PIN protection.", - "fido__title_authenticate": "FIDO2 AUTHENTICATE", - "fido__title_import_credential": "IMPORT CREDENTIAL", - "fido__title_list_credentials": "LIST CREDENTIALS", - "fido__title_register": "FIDO2 REGISTER", - "fido__title_remove_credential": "REMOVE CREDENTIAL", - "fido__title_reset": "FIDO2 RESET", - "fido__title_u2f_auth": "U2F AUTHENTICATE", - "fido__title_u2f_register": "U2F REGISTER", - "fido__title_verify_user": "FIDO2 VERIFY USER", + "fido__title_authenticate": "FIDO2 authenticate", + "fido__title_import_credential": "Import credential", + "fido__title_list_credentials": "List credentials", + "fido__title_register": "FIDO2 register", + "fido__title_remove_credential": "Remove credential", + "fido__title_reset": "FIDO2 reset", + "fido__title_u2f_auth": "U2F authenticate", + "fido__title_u2f_register": "U2F register", + "fido__title_verify_user": "FIDO2 verify user", "fido__unable_to_verify_user": "Unable to verify user.", "fido__wanna_erase_credentials": "Do you really want to erase all credentials?", - "firmware_update__title": "UPDATE FIRMWARE", - "firmware_update__title_fingerprint": "FW FINGERPRINT", + "firmware_update__title": "Update firmware", + "firmware_update__title_fingerprint": "FW fingerprint", "homescreen__click_to_connect": "Click to Connect", "homescreen__click_to_unlock": "Click to Unlock", - "homescreen__title_backup_failed": "BACKUP FAILED", - "homescreen__title_backup_needed": "BACKUP NEEDED", - "homescreen__title_coinjoin_authorized": "COINJOIN AUTHORIZED", - "homescreen__title_experimental_mode": "EXPERIMENTAL MODE", - "homescreen__title_no_usb_connection": "NO USB CONNECTION", - "homescreen__title_pin_not_set": "PIN NOT SET", - "homescreen__title_seedless": "SEEDLESS", - "homescreen__title_set": "CHANGE HOMESCREEN?", + "homescreen__title_backup_failed": "Backup failed", + "homescreen__title_backup_needed": "Backup needed", + "homescreen__title_coinjoin_authorized": "Coinjoin authorized", + "homescreen__title_experimental_mode": "Experimental mode", + "homescreen__title_no_usb_connection": "No USB connection", + "homescreen__title_pin_not_set": "PIN not set", + "homescreen__title_seedless": "Seedless", + "homescreen__title_set": "Change homescreen?", "inputs__back": "BACK", "inputs__cancel": "CANCEL", "inputs__delete": "DELETE", @@ -351,30 +351,30 @@ "inputs__previous": "PREVIOUS", "inputs__show": "SHOW", "inputs__space": "SPACE", - "joint__title": "JOINT TRANSACTION", + "joint__title": "Joint transaction", "joint__to_the_total_amount": "To the total amount:", "joint__you_are_contributing": "You are contributing:", "language__change_to_template": "Change language to {0}?", "language__changed": "Language changed successfully", "language__progress": "Changing language", - "language__title": "LANGUAGE SETTINGS", + "language__title": "Language settings", "lockscreen__tap_to_connect": "Tap to connect", "lockscreen__tap_to_unlock": "Tap to unlock", - "lockscreen__title_locked": "LOCKED", - "lockscreen__title_not_connected": "NOT CONNECTED", + "lockscreen__title_locked": "Locked", + "lockscreen__title_not_connected": "Not connected", "misc__decrypt_value": "Decrypt value", "misc__encrypt_value": "Encrypt value", - "misc__title_suite_labeling": "SUITE LABELING", + "misc__title_suite_labeling": "Suite labeling", "modify_amount__decrease_amount": "Decrease amount by:", "modify_amount__increase_amount": "Increase amount by:", "modify_amount__new_amount": "New amount:", - "modify_amount__title": "MODIFY AMOUNT", + "modify_amount__title": "Modify amount", "modify_fee__decrease_fee": "Decrease fee by:", "modify_fee__fee_rate": "Fee rate:", "modify_fee__increase_fee": "Increase fee by:", "modify_fee__new_transaction_fee": "New transaction fee:", "modify_fee__no_change": "Fee did not change.\n", - "modify_fee__title": "MODIFY FEE", + "modify_fee__title": "Modify fee", "modify_fee__transaction_fee": "Transaction fee:", "monero__confirm_export": "Confirm export", "monero__confirm_ki_sync": "Confirm ki sync", @@ -453,11 +453,11 @@ "passphrase__next_screen_will_show_passphrase": "Next screen will show the passphrase.", "passphrase__please_enter": "Please enter your passphrase.", "passphrase__revoke_on_device": "Do you want to revoke the passphrase on device setting?", - "passphrase__title_confirm": "CONFIRM PASSPHRASE", - "passphrase__title_enter": "ENTER PASSPHRASE", - "passphrase__title_hide": "HIDE PASSPHRASE", - "passphrase__title_settings": "PASSPHRASE SETTINGS", - "passphrase__title_source": "PASSPHRASE SOURCE", + "passphrase__title_confirm": "Confirm passphrase", + "passphrase__title_enter": "Enter passphrase", + "passphrase__title_hide": "Hide passphrase", + "passphrase__title_settings": "Passphrase settings", + "passphrase__title_source": "Passphrase source", "passphrase__turn_off": "Turn off passphrase protection?", "passphrase__turn_on": "Turn on passphrase protection?", "pin__change": "Change PIN?", @@ -478,9 +478,9 @@ "pin__reenter_new": "Re-enter new PIN", "pin__reenter_to_confirm": "Please re-enter PIN to confirm.", "pin__should_be_long": "PIN should be 4-50 digits long.", - "pin__title_check_pin": "CHECK PIN", - "pin__title_settings": "PIN SETTINGS", - "pin__title_wrong_pin": "WRONG PIN", + "pin__title_check_pin": "Check PIN", + "pin__title_settings": "PIN settings", + "pin__title_wrong_pin": "Wrong PIN", "pin__tries_left": "tries left", "pin__turn_off": "Are you sure you want to turn off PIN protection?", "pin__turn_on": "Turn on PIN protection?", @@ -499,13 +499,13 @@ "progress__loading_transaction": "Loading transaction...", "progress__locking_device": "Locking the device...", "progress__one_second_left": "1 second left", - "progress__please_wait": "PLEASE WAIT", + "progress__please_wait": "Please wait", "progress__refreshing": "Refreshing...", "progress__signing_transaction": "Signing transaction...", "progress__syncing": "Syncing...", "progress__x_seconds_left_template": "{0} seconds left", "reboot_to_bootloader__restart": "Trezor will restart in bootloader mode.", - "reboot_to_bootloader__title": "GO TO BOOTLOADER", + "reboot_to_bootloader__title": "Go to bootloader", "reboot_to_bootloader__version_by_template": "Firmware version {0}\nby {1}", "reboot_to_bootloader__just_a_moment": "Just a moment...", "recovery__cancel_dry_run": "Cancel backup check", @@ -531,18 +531,18 @@ "recovery__share_already_entered": "Share already entered", "recovery__share_from_another_shamir": "You have entered a share from another Shamir Backup.", "recovery__share_num_template": "Share {0}", - "recovery__title": "RECOVER WALLET", - "recovery__title_cancel_dry_run": "CANCEL BACKUP CHECK", - "recovery__title_cancel_recovery": "CANCEL RECOVERY", - "recovery__title_dry_run": "BACKUP CHECK", - "recovery__title_recover": "RECOVER WALLET", - "recovery__title_remaining_shares": "REMAINING SHARES", + "recovery__title": "Recover wallet", + "recovery__title_cancel_dry_run": "Cancel backup check", + "recovery__title_cancel_recovery": "Cancel recovery", + "recovery__title_dry_run": "Backup check", + "recovery__title_recover": "Recover wallet", + "recovery__title_remaining_shares": "Remaining shares", "recovery__type_word_x_of_y_template": "Type word {0} of {1}", "recovery__wallet_recovered": "Wallet recovered successfully", "recovery__wanna_cancel_dry_run": "Are you sure you want to cancel the backup check?", "recovery__wanna_cancel_recovery": "Are you sure you want to cancel the recovery process?", "recovery__word_count_template": "({0} words)", - "recovery__word_x_of_y_template": "WORD {0} OF {1}", + "recovery__word_x_of_y_template": "Word {0} of {1}", "recovery__x_more_items_starting_template_plural": "{count} more {plural} starting", "recovery__x_more_shares_needed_template_plural": "{count} more {plural} needed.", "recovery__x_of_y_entered_template": "{0} of {1} shares entered successfully.", @@ -550,13 +550,13 @@ "reset__advanced_group_threshold_info": "The group threshold specifies the number of groups required to recover your wallet.", "reset__all_x_of_y_template": "all {0} of {1} shares", "reset__any_x_of_y_template": "any {0} of {1} shares", - "reset__button_create": "CREATE WALLET", - "reset__button_recover": "RECOVER WALLET", + "reset__button_create": "Create wallet", + "reset__button_recover": "Recover wallet", "reset__by_continuing": "By continuing you agree to Trezor Company's terms and conditions.", - "reset__check_backup_title": "CHECK BACKUP", - "reset__check_group_share_title_template": "CHECK G{0} - SHARE {1}", - "reset__check_wallet_backup_title": "CHECK WALLET BACKUP", - "reset__check_share_title_template": "CHECK SHARE #{0}", + "reset__check_backup_title": "Check backup", + "reset__check_group_share_title_template": "Check g{0} - share {1}", + "reset__check_wallet_backup_title": "Check wallet backup", + "reset__check_share_title_template": "Check share #{0}", "reset__continue_with_next_share": "Continue with the next share.", "reset__continue_with_share_template": "Continue with share #{0}.", "reset__create_x_of_y_shamir_backup_template": "Do you want to create a {0} of {1} Shamir backup?", @@ -566,7 +566,7 @@ "reset__group_description": "A group is made up of recovery shares.", "reset__group_info": "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds.", "reset__group_share_checked_successfully_template": "Group {0} - Share {1} checked successfully.", - "reset__group_share_title_template": "GROUP {0} - SHARE {1}", + "reset__group_share_title_template": "Group {0} - share {1}", "reset__more_info_at": "More info at", "reset__need_all_share_template": "For recovery you need all {0} of the shares.", "reset__need_any_share_template": "For recovery you need any {0} of the shares.", @@ -580,15 +580,15 @@ "reset__number_of_shares_info": "= total number of unique word lists used for wallet backup.", "reset__one_share": "1 share", "reset__only_one_share_will_be_created": "Only one share will be created.", - "reset__recovery_wallet_backup_title": "WALLET BACKUP", - "reset__recovery_share_title_template": "RECOVERY SHARE #{0}", + "reset__recovery_wallet_backup_title": "Wallet backup", + "reset__recovery_share_title_template": "Recovery share #{0}", "reset__required_number_of_groups": "The required number of groups for recovery.", "reset__select_correct_word": "Select the correct word for each position.", - "reset__select_word_template": "SELECT {0} WORD", + "reset__select_word_template": "Select {0} word", "reset__select_word_x_of_y_template": "Select word {0} of {1}:", "reset__set_it_to_count_template": "Set it to {0} and you will need ", "reset__share_checked_successfully_template": "Recovery share #{0} checked successfully.", - "reset__share_words_title": "STANDARD BACKUP", + "reset__share_words_title": "Standard backup", "reset__slip39_checklist_num_groups": "Number of groups", "reset__slip39_checklist_num_shares": "Number of shares", "reset__slip39_checklist_set_num_groups": "Set number of groups", @@ -596,22 +596,22 @@ "reset__slip39_checklist_set_sizes": "Set sizes and thresholds", "reset__slip39_checklist_set_sizes_longer": "Set size and threshold for each group", "reset__slip39_checklist_set_threshold": "Set threshold", - "reset__slip39_checklist_title": "BACKUP CHECKLIST", + "reset__slip39_checklist_title": "Backup checklist", "reset__slip39_checklist_write_down": "Write down and check all shares", "reset__slip39_checklist_write_down_recovery": "Write down and check all recovery shares", "reset__the_threshold_sets_the_number_of_shares": "The threshold sets the number of shares ", "reset__threshold_info": "= minimum number of unique word lists used for recovery.", - "reset__title_backup_is_done": "BACKUP IS DONE", - "reset__title_create_wallet": "CREATE WALLET", - "reset__title_create_wallet_shamir": "CREATE WALLET (SHAMIR)", - "reset__title_group_threshold": "GROUP THRESHOLD", - "reset__title_number_of_groups": "NUMBER OF GROUPS", - "reset__title_number_of_shares": "NUMBER OF SHARES", - "reset__title_set_group_threshold": "SET GROUP THRESHOLD", - "reset__title_set_number_of_groups": "SET NUMBER OF GROUPS", - "reset__title_set_number_of_shares": "SET NUMBER OF SHARES", - "reset__title_set_threshold": "SET THRESHOLD", - "reset__title_shamir_backup": "SHAMIR BACKUP", + "reset__title_backup_is_done": "Backup is done", + "reset__title_create_wallet": "Create wallet", + "reset__title_create_wallet_shamir": "Create wallet (shamir)", + "reset__title_group_threshold": "Group threshold", + "reset__title_number_of_groups": "Number of groups", + "reset__title_number_of_shares": "Number of shares", + "reset__title_set_group_threshold": "Set group threshold", + "reset__title_set_number_of_groups": "Set number of groups", + "reset__title_set_number_of_shares": "Set number of shares", + "reset__title_set_threshold": "Set threshold", + "reset__title_shamir_backup": "Shamir backup", "reset__to_form_group_template": "to form Group {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Set the total number of shares in Group {0}.", @@ -626,13 +626,13 @@ "rotation__east": "east", "rotation__north": "north", "rotation__south": "south", - "rotation__title_change": "CHANGE ROTATION", + "rotation__title_change": "Change rotation", "rotation__west": "west", "safety_checks__approve_unsafe_always": "Trezor will allow you to approve some actions which might be unsafe.", "safety_checks__approve_unsafe_temporary": "Trezor will temporarily allow you to approve some actions which might be unsafe.", "safety_checks__enforce_strict": "Do you really want to enforce strict safety checks (recommended)?", - "safety_checks__title": "SAFETY CHECKS", - "safety_checks__title_safety_override": "SAFETY OVERRIDE", + "safety_checks__title": "Safety checks", + "safety_checks__title_safety_override": "Safety override", "sd_card__all_data_will_be_lost": "All data on the SD card will be lost.", "sd_card__card_required": "SD card required.", "sd_card__disable": "Do you really want to remove SD card protection from your device?", @@ -648,25 +648,25 @@ "sd_card__refresh": "Do you really want to replace the current SD card secret with a newly generated one?", "sd_card__refreshed": "You have successfully refreshed SD protection.", "sd_card__restart": "Do you want to restart Trezor in bootloader mode?", - "sd_card__title": "SD CARD PROTECTION", - "sd_card__title_problem": "SD CARD PROBLEM", + "sd_card__title": "SD card protection", + "sd_card__title_problem": "SD card problem", "sd_card__unknown_filesystem": "Unknown filesystem.", "sd_card__unplug_and_insert_correct": "Please unplug the device and insert the correct SD card.", "sd_card__use_different_card": "Use a different card or format the SD card to the FAT32 filesystem.", "sd_card__wanna_format": "Do you really want to format the SD card?", "sd_card__wrong_sd_card": "Wrong SD card.", "send__address_path": "address path", - "send__confirm_sending": "SENDING AMOUNT", + "send__confirm_sending": "Sending amount", "send__from_multiple_accounts": "Sending from multiple accounts.", "send__including_fee": "Including fee:", "send__maximum_fee": "Maximum fee:", "send__receiving_to_multisig": "Receiving to a multisig address.", - "send__title_confirm_sending": "CONFIRM SENDING", - "send__title_joint_transaction": "JOINT TRANSACTION", - "send__title_receiving_to": "RECEIVING TO", - "send__title_sending": "SENDING", - "send__title_sending_amount": "SENDING AMOUNT", - "send__title_sending_to": "SENDING TO", + "send__title_confirm_sending": "Confirm sending", + "send__title_joint_transaction": "Joint transaction", + "send__title_receiving_to": "Receiving to", + "send__title_sending": "Sending", + "send__title_sending_amount": "Sending amount", + "send__title_sending_to": "Sending to", "send__to_the_total_amount": "To the total amount:", "send__total_amount": "Total amount:", "send__transaction_id": "Transaction ID:", @@ -674,14 +674,14 @@ "share_words__words_in_order": " words in order.", "share_words__wrote_down_all": "I wrote down all ", "sign_message__bytes_template": "{0} Bytes", - "sign_message__confirm_address": "SIGNING ADDRESS", - "sign_message__confirm_message": "CONFIRM MESSAGE", + "sign_message__confirm_address": "Signing address", + "sign_message__confirm_message": "Confirm message", "sign_message__message_size": "Message size:", - "sign_message__verify_address": "VERIFY ADDRESS", - "storage_msg__verifying_pin": "VERIFYING PIN", - "storage_msg__processing": "PROCESSING", - "storage_msg__starting": "STARTING UP", - "storage_msg__wrong_pin": "WRONG PIN", + "sign_message__verify_address": "Verify address", + "storage_msg__verifying_pin": "Verifying PIN", + "storage_msg__processing": "Processing", + "storage_msg__starting": "Starting up", + "storage_msg__wrong_pin": "Wrong PIN", "solana__account_index": "Account index", "solana__associated_token_account": "Associated token account", "solana__confirm_multisig": "Confirm multisig", @@ -780,18 +780,18 @@ "tutorial__ready_to_use": "You're ready to\nuse Trezor.", "tutorial__scroll_down": "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", "tutorial__sure_you_want_skip": "Are you sure you\nwant to skip the tutorial?", - "tutorial__title_hello": "HELLO", - "tutorial__title_screen_scroll": "SCREEN SCROLL", - "tutorial__title_skip": "SKIP TUTORIAL", - "tutorial__title_tutorial_complete": "TUTORIAL COMPLETE", + "tutorial__title_hello": "Hello", + "tutorial__title_screen_scroll": "Screen scroll", + "tutorial__title_skip": "Skip tutorial", + "tutorial__title_tutorial_complete": "Tutorial complete", "tutorial__use_trezor": "Use Trezor by\nclicking the left and right buttons.\n\rContinue right.", "tutorial__welcome_press_right": "Welcome to Trezor. Press right to continue.", "u2f__get": "Increase and retrieve the U2F counter?", "u2f__set_template": "Set the U2F counter to {0}?", - "u2f__title_get": "GET U2F COUNTER", - "u2f__title_set": "SET U2F COUNTER", + "u2f__title_get": "Get U2F counter", + "u2f__title_set": "Set U2F counter", "wipe__info": "All data will be erased.", - "wipe__title": "WIPE DEVICE", + "wipe__title": "Wipe device", "wipe__want_to_wipe": "Do you really want to wipe the device?\n", "wipe_code__change": "Change wipe code?", "wipe_code__changed": "Wipe code changed.", @@ -804,13 +804,13 @@ "wipe_code__mismatch": "The wipe codes you entered do not match.", "wipe_code__reenter": "Re-enter wipe code", "wipe_code__reenter_to_confirm": "Please re-enter wipe code to confirm.", - "wipe_code__title_check": "CHECK WIPE CODE", - "wipe_code__title_invalid": "INVALID WIPE CODE", - "wipe_code__title_settings": "WIPE CODE SETTINGS", + "wipe_code__title_check": "Check wipe code", + "wipe_code__title_invalid": "Invalid wipe code", + "wipe_code__title_settings": "Wipe code settings", "wipe_code__turn_off": "Turn off wipe code protection?", "wipe_code__turn_on": "Turn on wipe code protection?", "wipe_code__wipe_code_mismatch": "Wipe code mismatch", - "word_count__title": "NUMBER OF WORDS", + "word_count__title": "Number of words", "words__account": "Account", "words__account_colon": "Account:", "words__address": "Address", @@ -838,15 +838,15 @@ "words__recipient": "Recipient", "words__sign": "Sign", "words__signer": "Signer", - "words__title_check": "CHECK", - "words__title_group": "GROUP", - "words__title_information": "INFORMATION", - "words__title_remember": "REMEMBER", - "words__title_share": "SHARE", - "words__title_shares": "SHARES", - "words__title_success": "SUCCESS", - "words__title_summary": "SUMMARY", - "words__title_threshold": "THRESHOLD", + "words__title_check": "Check", + "words__title_group": "Group", + "words__title_information": "Information", + "words__title_remember": "Remember", + "words__title_share": "Share", + "words__title_shares": "Shares", + "words__title_success": "Success", + "words__title_summary": "Summary", + "words__title_threshold": "Threshold", "words__unknown": "Unknown", "words__warning": "Warning", "words__writable": "Writable", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 13b3fa203a..88ba24ecda 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "fe1f2942f8723f3f65fe7972de93e1dcdd214cc14be8251c44b7047808c10e11", - "datetime": "2024-04-24T15:46:21.632186", - "commit": "c52db3a8deae36eb2becc96f4917ea7164656f76" + "merkle_root": "90736ae8e42f99fb99a51af2cd7635a5b23edcec2984dfbe036c09aac6e18e64", + "datetime": "2024-05-06T12:59:07.941559", + "commit": "6011fca897a639e9b78568921d6f54f19b5c9936" }, "history": [ { From df9f9f6cb43d72191618fea2a31a025d782b55f1 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 28 Apr 2024 14:40:55 +0200 Subject: [PATCH 023/626] refactor(core): update EN fixtures Updating after UTF-8 uppercasing issue. Only changes for Model T are during language change where it actually fixes a problem. Model R has more changes - especially in show_warning invocation. See PR 3696 for more info. [no changelog] --- tests/ui_tests/fixtures.json | 258 +++++++++++++++++------------------ 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 2c57088bca..9e3834fa94 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -855,12 +855,12 @@ "T2B1_en_test_pin.py::test_pin_long": "a9861a92fed71ddd42bb56a39f7c80100158e23145f1f433c06d72ccb14efaa7", "T2B1_en_test_pin.py::test_pin_long_delete": "3833d4e71cc1c388bacb1ef4c9b7c8e47e897887b21603dec53ed4d02e381e4c", "T2B1_en_test_pin.py::test_pin_longer_than_max": "fbd7c4034dcca37f07527e8864ab426970b7192c51a4965d0fc499d0eb6bbc24", -"T2B1_en_test_pin.py::test_pin_same_as_wipe_code": "41e5505d884d87efe05cb9401351f89c7365dbece7f911d4115516c11f52bb9b", -"T2B1_en_test_pin.py::test_pin_setup": "040256a62fb20f5284bbec0ababab6d94f6fbed1b9b9a0cebe58a73ccae7ff2d", -"T2B1_en_test_pin.py::test_pin_setup_mismatch": "4cafbb73ee107509f8766d73d2389ef246d27ade3540b835cdfaf83d2cb4a416", +"T2B1_en_test_pin.py::test_pin_same_as_wipe_code": "a1b6d8fd0a6bd6a5d2dd0a2ec75f57829fd9a532ab164e676f647e15db3e4e04", +"T2B1_en_test_pin.py::test_pin_setup": "77763635ad3d67a3a821c0f340f71e7382391c657cc51a81ac3a24f2a4b536cb", +"T2B1_en_test_pin.py::test_pin_setup_mismatch": "a7d0d19e7ba5e7a7cbfcb92c38f0f3eb75c0e19eb12fc953185a3564b20aacb1", "T2B1_en_test_pin.py::test_pin_short": "a87619c455ec81763cbb133279f9e7fbb3b9a5a02c58e1da63640d51a4e107c3", -"T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "329962b3b949dc1429d361e4ae6c5224b4a75c981ae833fd3bf1618df44fbd2a", -"T2B1_en_test_pin.py::test_wipe_code_setup": "4afe5ceb8f953892eea8b6b7c6997a1b5afa40b81372265a84a567b61773d89b", +"T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "242efdbabbe39e4eaf7d10ef0fde8c3a499ec27419deb41632549c6412b79c59", +"T2B1_en_test_pin.py::test_wipe_code_setup": "2924233cb43eba66815a860d720a0e6c399acbde23c9ea74234ca53da106f71d", "T2B1_en_test_recovery.py::test_recovery_bip39": "632e414cf9886064a0c5a72cb8d676a2a3755f4db19e5c8aff1c3d2833374a84", "T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "6689558320ffceecb9c8a5eccaf1f83ab1e63f01d3387a580ec2c412f047286e", "T2B1_en_test_recovery.py::test_recovery_slip39_basic": "5f3c58aea5c8ad3c1c32c2fe303a0aa91b0805cce5d4dcd23473f72120109458", @@ -3774,14 +3774,14 @@ "T2B1_en_bitcoin-test_getaddress.py::test_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_bch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_bch_multisig": "7dd1e63466cd5387b8e0ebe22e47c0274e319b456951bbb16a14174e61f60aa8", +"T2B1_en_bitcoin-test_getaddress.py::test_bch_multisig": "63dcebacc9acde58a8e518ca08d4d0508da685a468bc6f7ecaaea33317862477", "T2B1_en_bitcoin-test_getaddress.py::test_btc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_crw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_elements": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_grs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_invalid_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_ltc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_multisig": "ec7fbb53bfa047306d357697ae309ca90321c9464fda6bfd3a6b225be7ee1345", +"T2B1_en_bitcoin-test_getaddress.py::test_multisig": "b1a235a0cd5e9991b64714a6850412c475c46ddefbcae0391662f7d4fb934814", "T2B1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f4a9b7935b7d870f13eceb6efa481095adfb4b5e9dd43d7cf2670415210c9319", "T2B1_en_bitcoin-test_getaddress.py::test_public_ckd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -3833,14 +3833,14 @@ "T2B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "31a69b3216cbc1e2ac24cd4e184f25302da9e8a1ad80801eb2a4f7db0419fc76", "T2B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "abb9fa03da8b03ef8a42e78e1b0324c8ee18227851c6bd3e5a68bd8d31943c30", "T2B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "ce472f42e18622512756287ab9d178394a8c0372c606e6e76f676b11091fd219", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "9d58cf99cdb205178eea39361d140c84c006f7f55e2bf15962e8e18b6918e89a", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "e1806ab68c58937a6896858ea9557becb89daa1d17e37921507ee4aa7ab12aee", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "954ed1ca2ab1486bed797d2b22fcad953adab3916752717d220a5f9e7da484bb", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "954ed1ca2ab1486bed797d2b22fcad953adab3916752717d220a5f9e7da484bb", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "391a4008b7c3a93fbfd0dfff22aca8896420b45b91d745a83d7e65ba80c9288b", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "840e6ce6ccbe78aa96ed4e9836f5e8a50f874b77961fb22e436810e99999d467", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "aa034fd6b7224b43eeb20afa4d078e20e7c30abe70150621c6671942d1b4bb31", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "78decb159be4d47b18dcbb3d92858d10f0122fd9a21a00516719edf2f65ceabb", +"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "55bf33145015400aea10a2ebcc0286daf6f73a55e92d62564efc15dc0eff7708", +"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "029c68db26f669576fc9c564abe61cff868a3889842bf7bb7a9c73dd67bc9d53", +"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1b303ed139f35c2b28a23e9d040be0cc699b5bd4392d07cba3955451ad613b62", +"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1b303ed139f35c2b28a23e9d040be0cc699b5bd4392d07cba3955451ad613b62", +"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "4dd343a31ee80d8689de676164290060a5f9ba2b9ab43f7058e7422e30e91f5d", +"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "19116316cc26dfdb2d47fd614a410680dcbe84c5af205a3a828aabcecebb4d98", +"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "33b0980d12a96568052d5589eb6eb9c1eb0c9229ffcfea2e95a9ef1b64dff927", +"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e9448a165c19b4136eb6b0b1b0d2194b0f2320d1b88d22a8e91946e8bb1c8348", "T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "aaed75a3003868548ea0b0355521b5001e272091308fbb0144142898bb97dde0", "T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ac3fbdd417423379e1d724194883d1f20c248e60414f0ab0bdb47989356be499", "T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "362f3638e6904bb9cb28eb65a5c465ac305f1be563b2f075b44a45fa9fa8f210", @@ -3905,8 +3905,8 @@ "T2B1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "3516574f2630080af30474774ba4d43151b4e144e6e3af146c27d7c5dc038b89", "T2B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "644dcabb2d8cf624a031a2853f55af687b627d93b3fde6cc4b860f3dc3156138", "T2B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "de03cf73f4249bd7b955e5a1d363d297f2fed470d8773d14ed46fc0f48a784fb", -"T2B1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "76984380f30ebd7f5f04cc5cb6581887c89713d0f79ac230e8cffaba2ddbb9bc", -"T2B1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "12a3b1ad73fce377a5c90138eb1cf767a02de8a2d55db75e0a69becc5fdf7ae2", +"T2B1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b0e9f6967a6651ec71c1e5f3f54408c17070bff7dc53ad5d54ed1ccda48bc9eb", +"T2B1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "d25f0335f780f3ce9a82347c9e49c33e1fe587ce6bf73f53d3df14dc1b6968d7", "T2B1_en_bitcoin-test_multisig.py::test_15_of_15": "d2362894ba0b1365f4b50c9fa5adf6242a9f71312e5a51295ecfcbda25bad273", "T2B1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "43ef2841c1847f9eb425e3ba1cdba4a8880363889347c5fa9ba70e7654d181f0", "T2B1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "23960e739861c482ed71941947f8709425d20fc6dd98cd15abb9eecd56b53676", @@ -3930,14 +3930,14 @@ "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "32d689482d115154b9eafbc19666d57ea82af580b45565bb6c54eae149827016", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c25fd4cb97026303068c39dd3191618aba44ea4d65ceafbb99fdf730c6c91d07", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "2a6cc82571f79eded2cc9371ba4ff4afbb0b8980e363ebe30000dba672c6837e", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "a7154e9c390b26a52c2910199eef885a9ca8d50bb84a775165acf1f7927dc30a", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "193a3c841c501a0bfef881ff37b567e5b85cb0a1b082ae3a1eda1db6803f6403", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c71a37f23707a29fbc51308eac80ba64e47782582912d26df72156597546cced", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "9a55b2919e32c1550386dd2775d06775e08b65aa16235386fe18c5e03c0d1e25", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "4f178c7f53a89862d5b9b2e925b0455f9fe5ed171476ed3a5e3cc1c1bace9ea5", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ff8007bf949b2857c4b2b1f30da546ba7f8d32e0f6268b6d06ecce907277aca1", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "c64a1efe2598c4659e238ba5266817eb0dfead0a48593818682d3af625935e13", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9c5606816b4a10dc0b9d55cf0c4037413b8bc72937dd7fdab2611bd4a5c4d749", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "0c8912320a3005107d7c9d59587eaf1c17effecab07d8f3aeb66f2cc2231fba3", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "80a10fdcdf16656c352740c4344bad2bd62c85f0b5c616ad7748713159b289c9", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "dfc6fdca2940af52f1ed90599d9bf7849aa4381d9cc95f18bbb8103446ff3893", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e066234500fab50fc44d873d97bb06349e43a54fd3702236a5f0b5fe39984ecd", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "546723a6256cfce3d08fd532db94df2a58e00d0bfa3252194432e198fa657264", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "4b6e004f60ab63bfe4cea91a9a5e7a35d1ba36769c4f2472f8121d57018bbcbc", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "b506da5f1c161f68f67aea59f54b998de72f7b53ee4abb7a521e85406cc8be5a", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "cd2250986be372aded714e34dbe3374afe521c036ea165654e5c43b6aed37fac", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -3949,13 +3949,13 @@ "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7d18bc469cc81017aa6ce0609afe49344158ec01734c5cc58638d8300589763f", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "264b37c100c13dad663f56192c196189283cd55109eec26e60255b06d15bbab3", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6efc81302232a4d9b87ff3ae245596aaf0aeb97090d7f5844a96eb403a20de84", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "07494195abc7cbc3a9c948c1f6d520ba43316282f8207d3729b602dda94003be", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "1a67b684e07525929b9183c0721aae43c5e2c61d028f7c63cd511bb8dc97bddd", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f303bf1b6a12f2c5543e57515c0654f7fcc651c9fcfbf03e9d570df27c2162f1", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "e6cf269cdab80d6cd18f93674884a99fbda1a76385f5e8e061690f73a9a5d40a", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "8320040b44fbdbcd3a72200f0061dd75190f6290884f37d363beb846ae3f8979", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "0cf5d19f80b1d74f2cec901a1a095700a94cb53e6f887da0c8d51ca23e5b584c", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "1f383ccf1c3df308b4e43957cf0b1d67ee7c4c719e4642245e39f17c7de1e296", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "84c82c4c01a3ea675e6d8996c2ea53081f0f3b371408a3a1bf405530c6e4bfaa", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "192d26d28907315a36327ac77548bd5cf957e563c2e1bf11e7424e9b2322adde", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "af9cb6826569a182c1693d6d5ddce14039093c378ac2eea3efa6133cf65ed05e", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "3e96bd474e82d7e908c0a287ce76bb76261ba6a32a776e762ff33d14fc91b068", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "450d03c22c1252649093670e082d35167adb83bd67175d49240eee74a5f0170e", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "f2b3b16cbdf88b96cec3e151c2a26dcbd3724e1d93d60220eb4a2d7e4c5ec8b1", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e885031efd52320a7df07721f8a1c7f2004272587da75a715c3d3b303596cbfe", @@ -3986,35 +3986,35 @@ "T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", "T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "98dac05a444553eb733f4ebb76a83d5310f35f1d57f7613909671d02cb62bbd4", "T2B1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "e1c8b0b2a0feff6256cd985cdf7abbcb68c0d76ebc1141758c5821c4bc5bde69", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "50bc1025b2d98048506b79cbb4c9a7afb77f4c6dff869448d3ea16e44e482cb1", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "149cdc0a68dfa52c858ba71e8d0004f8324721182831eb4c4f73005d195f770f", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "e4ba6c1f03f69753fbdd0b3f6f48d5cb4668f9f0e46171f5cede04535093017e", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "11b09fc1f623f522e4ece098051385438adb8483dce4e77977bc458a7c6d3db6", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "bd588c72a241b81894f074b28b7dfaa9c20bf36b6eddb78687f8f54637912410", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "4845ed702d5bb635a15b412d91951c2c46ea00754b4aa9fe08c50f287608d345", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "6aaa568ba69cd2da4df0821e0b640e93669f9753531327bbda42acca23d56207", +"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "26c8a33c010252699c4ff999f7b5b1bd8f80657e865699875d3e082563d6bd11", +"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "0bdc267ba9c39cf60775db8c92d2834dd71e24fa964f85358a94a73de0c1f853", +"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "205b54e1971cc5ad481a3ea9a3f89c8d408aef858dff573d5e17b2745428b283", +"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "327e7017eaceb28e91d80a82c11ba854bac79401572f96dee6fb91c68e4b57b5", +"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "bc05b41e02877f5ec3117222c50b330a21560ff49791824029964bb51a56b2b2", +"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "fba47cd35892ac7c9a460fc12afb785f59613eb388d13cb660f335d2150bbeb2", +"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ef86018f0b266f2968275f843dfbaccc4aba05facf0c92ff432ef2f1d6fb18c2", "T2B1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "73d55c948994957a7af2aeb2927657fe39b1f1f5db35075b246512a4cc695242", "T2B1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "b36f59ed6bae71e854da94f6ef9996038a7486f1d30832f524d250589a00f9bb", "T2B1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "fc1a9e432095c3cfc81ad5804fd2203c64c4025113ac8006c59dcefda6d1b55a", "T2B1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", "T2B1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", -"T2B1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "3722d7227ea060dc093c6bdcfccf896403bd492c7c452ab67c65fc1176c5c6f3", -"T2B1_en_bitcoin-test_signtx.py::test_fee_high_warning": "20b7b8943eb06b765afd6ae15d6b4f1fdd44364c3df7f831386be2b2895c768e", +"T2B1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "c90bcc09994ac08f91313f586b1f6abc9c85e4095473e29fe38884a94d756a87", +"T2B1_en_bitcoin-test_signtx.py::test_fee_high_warning": "72c8a80e97c5a553bb2dc1cd1f223f53de2a9405faf51dd9c458f15bfabbeb65", "T2B1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx.py::test_information": "90d01767ffb3f4640d120a76774c32886569e8cee87c9237b973342beed6957d", "T2B1_en_bitcoin-test_signtx.py::test_information_cancel": "b9a12e03640234ea396535635cbfd59cdc93ce45cbe9a143a2e597b1a0b0c8f3", -"T2B1_en_bitcoin-test_signtx.py::test_information_mixed": "9a9eff11b129e170d67c7c652fc5420e82fd4af1b1e8db1ed3716f4a9aae0774", +"T2B1_en_bitcoin-test_signtx.py::test_information_mixed": "769558b0ce9d24249af7d0b816e50d0bf147c33cbc8331884937b0f9647f0e49", "T2B1_en_bitcoin-test_signtx.py::test_information_replacement": "9521c2e4bf4c09cb010cc811014d21f92359e4d4d14d4f510a30f34e40973cb1", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "4cff5b6e906cfc244d5c223bbf7c521af1a187abc3a5c18393ec44f129409b65", +"T2B1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "1938362c9873d46e1cb41812cb3f23f96a7e3c751669a8f302a7c6c8f5c572cb", "T2B1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "90994ba4feb80539208a780e3a5602960e533f46f00a216e7cabd8c709b806d4", "T2B1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "2d9d4993bfdb287b98a4c1afa77334f09acfd7f2f578487b6094b8d0bdaae234", "T2B1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "a184091a70fedb8f1ef063df2155ca63f1694f85e135513e21d07f1a43c3e178", "T2B1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d35c4bd90f36e2a4a9018a8d11a3f146dc566e48ced294ce37bd68ed6f70e1ff", "T2B1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "fc870a46c971dd752958d3fe4fd127325af21b58f6c6a67a4cc45ab4e0e79e23", -"T2B1_en_bitcoin-test_signtx.py::test_lots_of_change": "8934bc328219614d6fe79a9d42545ed7f455c09b04699dfc0431180d831f25de", +"T2B1_en_bitcoin-test_signtx.py::test_lots_of_change": "4948852aed56d256ba41c4f3c34579cd57c4414d3c1c8a58318fef1a6d219ec7", "T2B1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "d75d8177577a15e652c56c869395c2de0b90f35bd482ba13afa0f6d5ebedf7a8", "T2B1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "c77674b7017aea81147e73d5737bbdae2084f6df531d4770ff88e6d112a8a7d1", "T2B1_en_bitcoin-test_signtx.py::test_not_enough_funds": "26d52056f4225156037623a75c24342da3a4449e000e3d3a6374ddbce67d248e", @@ -4035,7 +4035,7 @@ "T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx.py::test_spend_coinbase": "233e91efb19035433834af5f90bcff8688dd6bb829350e535f4af5eecd14baf3", "T2B1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "26696705a7d6faf8b1be9d66dbb31aa132a038365632af0a7c01684a1ef40cdb", -"T2B1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "90d7c8a448c8f5de9921eda5e27202d6f6498f53a8c0f407906199da610003c9", +"T2B1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "14858f08cf950bc206317c841e856510dea68e0ca5c17a98686ba3b891fc6238", "T2B1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", "T2B1_en_bitcoin-test_signtx.py::test_two_changes": "adb7a86357895a902688d9e65f470638d18b3663168841f42cad3bbed215bab3", "T2B1_en_bitcoin-test_signtx.py::test_two_two": "ee8741bff119e6c1049eac69fec502d7434558bc28933275212c4b573d117de8", @@ -4052,24 +4052,24 @@ "T2B1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fa651a3d73795053b95513f8e1384d79f696e46db71f20ec9af75e91f4f3a9f7", "T2B1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "10517bdbe7e530082ada2e0246fe11bce0dfdc741ff71b5ce0b1bb33d4d4bcae", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "20c8f0429b26bb5475aa7ea438f93bd976d83554185962d9c049f84e7e112c1d", +"T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1f4c4d25e4038227b987aba7cbe6e998a0311331f451250938c81b7b86960222", "T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "0f6b1ab9e3a80d96d4645a902edad4a83f384c774b78f4aa7fdb9c8598b15540", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "aa8d89d26b9d6ad2829956e0a4f1700dab9757394d2fe7c795e7625c45728491", +"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "903d4d590e58e0e510873fcaced93241d83b4bc7d5b19a7b4fa7c6b51905f737", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c028e8e71c6ef7da9857f3696f383d339b6ec72d2cb71df49fffb0f56df71b66", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f95c5fe6cbad5ec7838ebb416cff4b77ca7f458d5dea033223e7dc6623802839", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "3e83b98315dfbfbd6c9d8fdefb86b9aa7e0537f1c869f76b64e7b70df09c258d", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "647905b99af69da785bae3b1edea3a59413ebfcf13a7e04b8f87b4d90bdce074", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "be79d3dde7efa8bc8c50610f06b2ce499266ccb9aaed9c13d38e4d335fb44930", +"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "b31ab64795b293d5de04fdb2dc4c5ce022e8adfd904ecc45e2271816bb7a9ec9", "T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7e221e550fe2b75e67bb0610b9afda4a136ff8fd7b9134c08268ae51f527870f", "T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "52d2b069bd357af0e4aa5bfa6ad33a3f3748c8265f826ab30af37fee7634f329", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "4f27f131f39f02fbfbe88f8dff94e075ada9249cc775a5b2b541474e85b472b2", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7752a73c3d1e41265f6852cc035f800e6a631b243d1c74a690b268f2f668bbf0", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "4f27f131f39f02fbfbe88f8dff94e075ada9249cc775a5b2b541474e85b472b2", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "18801fd48cebc1a9acf3abfd2450b5669279604214a6285eb54fff4b9d8a850c", +"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "504d0622ab197f19fedda7e016c0086319fadff7bfc51fdada452fb77d8df1e9", +"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7d7193ba8bf40762570849d311d5454da7203216362f8a3d4d99ba8bf1a4dccc", +"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "504d0622ab197f19fedda7e016c0086319fadff7bfc51fdada452fb77d8df1e9", +"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "8438332ce446acbadc7109f89b9b92048ddf2adde83a7292027042f4363f0acd", "T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c072f90fecb07a693c09038a26d44eadae88854df02e0537aa99f946d641af83", "T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "249e65809ac735eec03907514834fa347df6fa2f44d63dfc09cc89defd85885e", @@ -4087,10 +4087,10 @@ "T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", "T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", "T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e6c6121e33437342775283cfd37d7d9d3465534ff3363427da9c586e3a4de5ff", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "63ff641caa87d95e0f526d5836910b3d3d0edea29753ecec235a6895f305d554", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "63ff641caa87d95e0f526d5836910b3d3d0edea29753ecec235a6895f305d554", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "63ff641caa87d95e0f526d5836910b3d3d0edea29753ecec235a6895f305d554", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "63ff641caa87d95e0f526d5836910b3d3d0edea29753ecec235a6895f305d554", "T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", @@ -4110,14 +4110,14 @@ "T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", "T2B1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "c175ec0da3d56c9be3a81a818ecc37c1422037d99083779b28608f12ff035529", "T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "8012ca199237c207abf7c1486580fa880cf8b0a8956788754cfb707035c80e55", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "aedb92ba5420235a7d9071558dd090655e669dfe0e8e9359c53e4395d00983a3", +"T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "f103b1a41cb576dc48bb58e6054766a3f23003c631314a57f86336f486c9b9ce", "T2B1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "805e43edd2e618ebdf3c7048f84ecaf6e0c1ad4eadc525973673c39572fcffae", "T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "4733777903a39e9ff9c04d8a34cce77109f7ee6d526dffab432b6e41cd39a35c", "T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "57eb82ad09663331c93051b2bd414a7fefedda56aee170a3420f1dab9d79a231", "T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2865642943d3e1945cbb497a25967d134cf067db03bbbd6fce3a078b1264e222", "T2B1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "28a2b5a2761e176786f1800d27655418bf9a7194d48d367d39898cbbe4d77a8a", "T2B1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "137a9870f2fee1847bcaf0ecd6cbcfd69b7af23902b4230415b0b10ae6fbb2d0", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "7e9779beaea3835034aed8c778433935eb77a82b4552883eaa1d1062c4282046", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "4dc8ce2ca964840953b21bdf5e44cd10aadf93d6a9973206e87933dcdeefcb55", "T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "ad74f383c53ed6e271395ffb09c6e987b5c6d182618ee5ee362981aceac732ea", "T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "16ba7b01fdd5e486bce2f871bdd0ce66fa5e4fce8ed0338176a061e3df99ccf1", "T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6dc1beb3e38e3ca07ef2e4a0f6a5ffc8f10b11256b1c036f3e54ff06e14984b5", @@ -4127,12 +4127,12 @@ "T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a737a936ba1f3aeb5e1523af8a556c06ec627087e0e79ccedd6783db4fa78990", "T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "51460b3fc4bcfca864c174f6b96d5f43dd77ddf01f5baa0b2c71336472ef63aa", "T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "2f4ecc827daedcd23119078e152279adbbba3b641e691435114addfc29f3e829", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "5ca01c1e9a6c496eed957e46ab26dadd3847731c1d8d3d02f2ed30bea954b007", +"T2B1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "79b2970f60f9a11a5711ddb53ed890abaef244e9104952cd46ef39c87a258326", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "baa00b071f0136573a12b57eb1c3eb795ce9a9edb56c5885863dec46efd191aa", +"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "d812da9d79f87eac7ea8a13c20a40ae9580b2e91fc4c6e5f49c72ce5c1234780", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "01cb6d247ac5255e71848c23ca856ec1f4a792f27877d6f4bf4d2c746204ca34", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "285c46efd05d5634a7df0e7113ebc3495f8dc2a8556e0382c1b8b20af1f7d5f9", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b1a6aff58f9553f7d23e8a1a881f86b59b64453469e186753e52e40b62a264a4", @@ -4306,34 +4306,34 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "ba3ffd638b5a6e3e50df2f8ee355af062a983e33f853dc13b04bed2c510531f5", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "41c18f927371a044ae76aae10b401e613f013b5e85b998a6490a8e3e59df32a5", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "149390ade67242a7dfbef1175873c7ff4da29ec340f9db2fb48833f5f2ef5a0d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "066511a1eaefd647ed9b53480fad217f176d9f07fa4048e6518e20a948627990", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "541b3b9f9ba841ce3d46fb7082d175716f98e706e4bd4027c6800dfd286e9286", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "24a02a101fb8e42117af6c850dc78edf61a66982368b56c5ebad16fee28327d6", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "815dd2f93b0f72bc401572e769738a8d76892321bb453e32eadc848f18d1efb2", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "7115df98f6539f3657d5757e9ca31109650f48318f7314f13452dcb2a452571c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "3efed449668307507b40196508697c0096cb0a1a57c53e4e5c17506c1a076922", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "733a4604fc5f3143556b7032fa80a330c340b2844d12d21ac672ea8a98462674", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "69472a182d2218260d77aeef282c5481f3490c2cf5bbd568069df0e0e3b4b933", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "be74c56349ecc5f18d4ace048b64c10d9dc16e4b76464806c4a99e8d6ed7b79e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "5523d539a970e740033470d38dde51c24fe8f3b63422290f3d65c0381bcdb037", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "748d54a2d8c48766fe7bebdd13b5ab25b35a6ad7b008ecec56a1ad872d1b04f3", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4d088ce7aabcf4d3e4843f34c0af230335f91002ab785d2f0eace3fa35b4f965", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f428de7357f167421d37bae68d5c79a8d9afc69eb16697fd4ef9156ec5c4ed30", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "fc4a796b8c2037fe18942c058c716da4a28e22952c32d758bad32c141440a4ff", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "0944a0df8935ea245b6dcccf8ca5ba71ea3128d1ff8cbc3649d2bfbea9a96ee2", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d7b99c72e1a96412d24271e6634248e069ee04b1f6cbf248a06b6ea20a043548", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "aee6ef9d97377e327f2adf6bede652c95c747444e8645189a1fcc0fb7e42d926", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "36d9f530f00f637401518df39cf59bcf54d31f7cc85c1f5e0627e99345c46e43", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6300e6db5cd6beea15ec87125c6baa0587af93c1bfef2424b0d58d5b67f50c84", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "152a9779fbcb5ccca0ce231f6c2584c7f9e55232944184f5341a4a0121e6fffa", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b9340f62162a6e610142974c650d0073d7fdadce514a76f4104663c37742476f", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "003060a5f25b31b42ea1aafc3f8c8eb511a564ee1e645dd01048fe7586d226ef", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0ac6dabb1fcb6888db49464d4fdaa15d6231341ac4957352bdacb941f70f8512", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "1b192388b76c8da26faa1318376b08f11c47029792adaa7cf3601fc15a6a8d6e", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "488cf1a6b968b5b77a7c2cee0ac407b5f05e05af6858c678c0d56c0def0780ea", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "475f1731c788eb6a55a2383ec8c4fbb23b44d182c7672ff06814bcb3c8403078", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "0877fef8cc21b0e3201857118f2c21abcfea34c918531dcdbd91c1e4ba1708f7", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "7eba45854fc36bdeb8045c2c527fe9d1123506b8afef85bbe8fe2fd1c2cb1bbd", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "3bfffad2815e4e5c22854d23739314a56510fa155bef476ad808d3832f6ce196", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "b42ca62736e83f6c3b38765124673c720fe6e8906022d5846b375878ade5c230", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b327f5e1aa4db47111979c49a7dd991b8227cca836954f7555f46508de16fcd6", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d61f6a0c349c7532475f9b2f13cb18aa39b560543a35074637dae4d15026566c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "646f1150e79be8fa7285c1e520813a4880de0618ad379e0c3dcd0ea9a73afbc9", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "93be7fb1b1bb7cec0336a470bad734afaa6a14e2ca1e15026e764a4129693105", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "ed613ae7ae47e94eebd3084a601f15ee60dc311b8096d554ee3f590fb92b2058", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8951c970e90eac93fcff5b4cf950c178d4156a4c1c7a756516e18c31f651759e", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "f8a5f1201d07ed98cb03febffb0a30a2e61eb6ea1540cd25fd7135101927d4e9", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f1ed37aa52e934088876f70ae7a0fc2470540ef43e6dfc79778a2c7d64c84bdb", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5c081587a0c42ed299c6d47a4956ee6c3171bfd76dc10472f2dcb8dd3ddaf2f0", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "521ece5244ef6b68acbe3344d069b3d3682b51aaac931942c64824353bc74eee", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "59d89672426e39c60e380b34bf10c4112c4888218ca26f0c30f3a7ab93e6f5f9", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "d8b3543c3a9e5ed3666c9445ad1f370d02d46bb15828285ed7e6d3ea556aa9d1", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "4a48c7508a2998f2fe3591fd9d03e91e41fb104be4908428df8ececa41fc2906", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "2634395c2ca09e13f13b5f1887409d44fd905bb0efd7b2617851b3f98318fda3", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "7bb2e7a23b9348fd9e9c5e63664978010fe960b8f7aeba606c4c59e0239e5e19", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "1eb96cb67a4beadb37ff189587c76a79d7554e6b6f5c6efc0f4822f0b1ae958f", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f11108652b0c097c9c48631ccb99a73e87f0d8d43df5a7774769e1609aedc59d", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", @@ -4385,10 +4385,10 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "7403f3aebaa2ce01ab2eaa92cc2dcab8ec727fafa8bd8bb81d6b9929114692f8", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "86e32da3dd8da1139997d01d9d039378174c9cc4d1b9b5ea9cb50f1d156d3e1d", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", @@ -4433,7 +4433,7 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "f640afd3c8f96de52e7abf43f9c107ecddc8ec73728d2b33d00a7f4da82f41da", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "3cb8c35708a39a835014707de5f7f2f196264f05b2d094d162607bddbe9d8c15", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "073f7f1edb67a2b86a6a6412dca9c0baa4e9ae6351d1ebb490dd04f3a826319d", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "cc8549afa850b8037fe442e3410bb75cca7d619890bc5c7192cc32fd324c412e", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "2e2d19c70f2ab9f6a441a267150c382a3fab1787cffdc68c963a2fdc7a6796cc", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", @@ -4443,7 +4443,7 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "69a9704afbf44b5cb52c0eb074d6baab7365d8de38b2b06fc8a0ad4d8c6a5bb7", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "af530c1edb6a2cb39d0a826e949d013dc0a39046597c23678aec893fb84146ff", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8010eb573c5f7586f35800a931650692c34c54efe1b42a76ce21c2e636aed227", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "04eb8808eb8d2c24b320f533790cfbdb19f9c5166e1a1afe12f5ec277e468b4d", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", @@ -4473,7 +4473,7 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "250d3aaa65f63c1ab21925609d23f9e5b2c2a47646ca2e743fd3bf964c872829", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "f9034319e5bfab7de839c0d31db566383e92f03400c473b66ef3063ce8a7fff9", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", @@ -4486,7 +4486,7 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c49115b603b977683c21d3b24f04f8394a172a53ee524fe2521b78ea1f510e61", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "58cd99d32df5de73d45a1a5ef32cede77619c03335d8063005896335938916b8", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "9657efaec571f16616f903b9c68ffdf9f9d39628f33ec3c10a63a6377feb7693", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "a49d073355d70bc9cac0decc447e727dde03ea51ac432dcd6c152f887a016ab3", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "ac7c656cfb484aaf9596dae64402e15d4f76d92ca6377ffa534307829b1835ce", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "3d4190a337eacb84f9d1af9b738dc151dcb5e98a42cfce16a3fc3f7b96e022b7", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "af91468fe2519576e6352729dbc49d495746e12305f898f993159871420f0db0", @@ -4589,14 +4589,14 @@ "T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "40a1c36d02106c8aa492229a6f8f68e677a5b12fb1b8bd86582b03dd8e56f99a", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "08d14ed2a8e55a76bbb7a265d6e9c18b167a8efedfabd87a66796be99a964550", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "f3c4f2387165c86998ebe51a117e389fd9406334b7656a8848c7d4d5f5fc6d91", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "47cc2312c02c7a8acf5eb8e6817512b1a85313420833445411dbbe1c6e5eba30", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "8b980005c73c6341727f542e4d35077cf7cc5251d19811bf9691b095cf7f8f15", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "2b531dba75ad94f2c6997f99141e05819bb424302a444c3c53c78fdbb3478432", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f6421c9631d9892a4c51618bf3f6409a5cc0c11689db67694486473b730284e5", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "4f1c15cef69675ccc0643192309bed8756cad31fc3df7e9d68e9755e4c4cf327", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fcc7d1becaca1755e4a04624b5b0410d444650f46abbca7f974b5deb63ce3528", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "54a5f0390b5fd510098c943407815364cf54cf2569a84afacb27d04f453fe77f", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "27cd74a3731b0e501cd05a5738a8d78d150217aef3617849f173abe15af1258f", @@ -4610,17 +4610,17 @@ "T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "c64fb3c018b2325dcf374010bc551b0c5d0e4d46e8eb515e66c8846fc3584c05", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "a648deef8291d431b9d4e7df9c144c3d9d1e14ce133bd85b9daef20acd6dbc20", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "81a3be88975ee9154098d3e8e1c4be8530ae1b55da7701105979e4cdfc4bc60c", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "09cc1b1c3bb9a7c07e5cd46b99a46e866200d57339449a6051f08d38f6cf15a2", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "8b980005c73c6341727f542e4d35077cf7cc5251d19811bf9691b095cf7f8f15", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "2b531dba75ad94f2c6997f99141e05819bb424302a444c3c53c78fdbb3478432", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "693857d0537f73c9a2173863910c31f568eb1b9a22a94159507c83d70f4c5498", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "36f0232e47b750a0c36af988339cd2513016c317b0620ea9df90b24db4742474", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6b59cbb33cf6b9bd5ee15411698388887d972044cc07031259f3aecdb1cfb5af", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b31b9ca04fa2cfcbe89930b0f7870c3527ddf89eb2b1838ed45489c5f2252d3c", -"T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8ba1350238c7e6765d842aefe5c591fd90f7455dfb4f43b83c83d707fe100776", -"T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c38af6097694801fdf73cf3f7154ca5bf37ea543418364ff9d7a5aac0fb752c2", +"T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "1825d4be360362111e38db28a788b2250b1a420037e87ad0c1a25d193a462f4e", +"T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "bb93c331ddef290deec4079509bf93a6826162a01a46c2ef1dc07227239a3977", "T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "eb6e718ab30bf5327ca9105e5621adc003660f3d97fefc269464addb683a381c", "T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "76fe8b9b3783ded6c5fb91b536bfd320266386a0116c4565daf7fa51da3ef749", "T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d44259eafdf1a758284d5035f585cbd339480aeb105f9f25cadc14c80b670adf", @@ -4640,14 +4640,14 @@ "T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5ec441ee292a9034c7d859f216050e7af702dcc219ed16e4ca17352ae4784c9b", "T2B1_en_ethereum-test_signtx.py::test_signtx_fee_info": "b4ae728ff71c1e6112abbb0111b85b2760f957b677726b35734e63c318495408", "T2B1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "263993daffe2a77a46a17d5b598aca84de52ba0e051e4cb5de5c524a48192ed3", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "1ea43e82e1fe510fd619071f40fc58ffa4736fc169e18b9abbb720aa04e5364e", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "7242e35bc8b7550c7df2302931fac750d360256e82d8ec8a0b61e160e62b111e", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "91621327c5b0833d90e15f16eac95730cd58fb5d0d6f0c8380bcd2954363b8f8", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "7a6877e7778fa3edcf9cdacd2960a0034fa5aa60692c9cb894ae0a4d9803542b", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "210035b1a4ec147b3fd562ee218772accccbbbf7ba25874a6ab669d1dd59c0bd", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "313447d1c26f47757b8e3837bd3fe7067f63744bcfde624f85381163a9add129", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "fd6b4073dcd277d857e778ab670d6306d1ee185ec4bfb999a5c64fba2599d44d", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "73a57fa8f4f8bf34867c48d82f5a9c447aea3523499bc6a3ef5954c0040e77fd", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "30778c6b5e5e77f88f2324a3befa8d1b34860c99faa9a1138674f63d72f733c3", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "d38a20e3bb9f67c65c31357e5519402947c2f46cabde8e4624f092e293e4a5d3", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "fcfc5f884d268fbff7fa2328ba7795dc408660b99e7a566854c3a6856580e068", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "11c241f819250ca92bb7442ad5a28f3cd85314932d1f310f53efc85a3295d126", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "a9ab05144d0561d3bbd3b8fd76b457bdbbd14d80f971fb46d680b1929627e2f8", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "8220442bb4a7522e385ebcfe026d3a94597fe50eeb7bc0de379f0619e27cc371", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "5550e437344e1af32bf23e534fd5aa68dbd211ff5184b0f4e28511e2cb64f912", @@ -4657,8 +4657,8 @@ "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "37c213bfcf96a1d69a74251a1ffe22ec8378afc3d7c8a61425eb141e38009490", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "37c213bfcf96a1d69a74251a1ffe22ec8378afc3d7c8a61425eb141e38009490", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "ba7f6b20466639dbb0900749e0a9cdeae2c71367cfea7cda8445e642dbdd3ee6", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "ba7f6b20466639dbb0900749e0a9cdeae2c71367cfea7cda8445e642dbdd3ee6", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "2e0a01b90464925f68f9a4ec81eed3814d04057b7d6660235215780428ad8740", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "2e0a01b90464925f68f9a4ec81eed3814d04057b7d6660235215780428ad8740", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "87a16dd0c432c3913a3af0c4ad5453f475a093110cec012336f8682ae7a4ca50", @@ -4725,7 +4725,7 @@ "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "69315e1a8d394d894b570230f2affe9d5c77a2790f6ded163078fd13799e2448", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c3ef5d0790c83ff1ba4418eb44b89dce1b343fa048cf6bdd4936c032838c9a92", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "523530b98bddcaf655b4e3ed3219a8acba9352266937b2ba6843de8353719bcc", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "9e3271390a137436ca330e87607d50836c566fc2dabc6158866875bda5ea54d1", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -4733,9 +4733,9 @@ "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fafb486186b0d378ceb0f3ffd8d729cbc64c1e92dfdc0149cd3b5e61397a5b43", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2ad8812fc0845a049141ca6a3ffa424574a6c4bdd5278adc3aaa4a8d14a9ce17", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "904660c665fd9fe7e0758523b9817218aac80eccbc3fb21fa5f68b2981eb9e14", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "317c603274cb8c781ecc341c5728158aa8b4716a278bf2fe58cea91455dc8494", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f2886d71bf78c5eca118e00f4fe0a25fe65692cb45baae8ca011798e9b7f4f05", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "d472479b2b15875d13ec16bd393d2908af817c4d038aad09c3770c7a44f387a0", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e90b6b0bd3a7a252a526b5d52417f002fae5394ad2ad350c8a998c302f122102", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "076f60e7d7e639f047050f35aff4361daccd8e91febdd41f47ff22b1b1376a08", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "daa2d9ee6d01c382e40889f3ce9fe246a26ffa3ffc39c23f3ecc2f42d046c706", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "076f60e7d7e639f047050f35aff4361daccd8e91febdd41f47ff22b1b1376a08", @@ -4744,16 +4744,16 @@ "T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "cacbd98f9529935bcc29e7f1f23967c1d82bffde0e69ec6d9c9b63f0eaa50acf", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "d3883c968a0adcd07d9e3c7d6a1b42f0c861328f9524b43bee339fe5a617383a", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9ca4d0de7e0b9f0ef45b2e33f813009a1fa5391853f4cb1d842121398f4e22c5", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d1b81245de8ac4a0fff6b08a07ee0d8c79c01b8cde904f6de9821dd49a9d48f4", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "591fe9b8999ce0655807023f6cc1f4f8391942d578061c1868a4027f895a0167", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "3adc05c2ee6515cce8c477f1ec30497d3b963b0c06edb70f3b8b480b21e1e767", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f0937944d0c41f5898ce5d557b7306909b946f55fc7f3c8c1c3b4fb9a67d9b99", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3c493e217277214e62c01e13ec7ddb444a4f7a66a8f466f8be8ced290caeccb2", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "f5754421d5604034b9aadbaa8a1adf2d0b0d6dcad2c9b64ea5bc270e6c56c881", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d94aa28e5b33d1e214b421073808148a3f40fad4186c5aca6cd6dd42b53210f0", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "14beab9f30a452ef2e733d6b9c0dadf5b51d9a0795f51ee10a533dbb78ecfd69", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "f4a8fcbfaebff01cdc33e9bf2cb26b8e9d14ca86f8b4da2d5dd53712f5a3249f", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e9a74f8aafbdce938f88bc31c5e6edc95a8713a4fe84e877cb0faf5c6d4b521c", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9300959b0fa732fec0cb9656470c39211a8591d92d7d29099474edf45c7bef6b", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "70b04caabe4f26cf296b4bd84bb1a0561ed4099af922dc61d81830b65172be38", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c2a1d887c7c931f8a9dfbdd6514babe460b6a72672e9b4dc27e783daabbba321", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c73c8b20213c962ca62413eea9a383d0f5ca3e3afa6d21b56470c792fcb778a8", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e429e4cef3d7d472140f5697ed0604eafa9c9bb224bf481eb35049bd0ee1fc70", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "9af97c3b64680f33197e76237a6121d24b72ef72ce007787a63a85c60368e2d5", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "590aa68e3990a7d44d46bb2766cea6ee4c2aa8b8a969689dd6d3228cbe9df875", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7b263b889081f8cebb8a3d744430eef8d719f216de621263939006a18a8556f4", @@ -4763,11 +4763,11 @@ "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "a7fe2740ba57d0790479b9fd56d7a0cb6e985a4d3fcd2cc2a8245c13becfa922", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "be8181d67dd2aa8e791533a23605dc2b81f365019c2ab5b2089ed81b840d1591", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "4975bb1256785c7b188231f6eedeaadd798cd41b884e1a50788670fa79aeca45", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ed4662a5df961dcdde60d11bdda2e8984f49de7be79b7dd5e7c184de265fc219", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9eed365ce77963e7a40edcf9cd36afc5d8401347e94c47c3d0add98e534c45d0", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "51f9ebb160fb086ca731efce727104c2d9702c9ff1367b68408f54a3eef68eac", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f6303097005c4d03571ec92653a7f76450d2072c98811128e0c29f5a09924087", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "da62d9ccdc436759f229ac74523ae5a5ce9dc4bc3aa8bee875426beee8a0d22f", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "51b5bb2f7010857eb8dcddbbc4aee2b756a62e31327882f577ac1fc1c30df59c", "T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cb1dc243f81a1f07e37defbfe582a5e3aebb7516924d462e6f93440edcb08d9b", "T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "09f352d0b3e4ae6dc2227109be60a305a6808c185f996b52dffd3fc2329d214a", "T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "74ae2eca1cf7b95acc49fa23c35c5f1229305cea759ecf6ab9095fbf4018cf35", @@ -4855,7 +4855,7 @@ "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "2298d30807d3d94a02bc2735a0be1dc89da65140629a76a8bd629c15471019c4", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "9b68aa5b44e48839c229c3debcd07bacbb40d3cab92e2b97c9f4dcaeedb31595", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ea2fd2377008542b18e20752992574184fbcfc28b434de5d0a69703323c7f6f0", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "6f515941425592f310418568eaeee1b21cf61f33eeb523da0725f6c3e1015ce4", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d71c71049c7ef3a0e9b149f509f23e39ea1e4359f3b1d7d850d2e498bcfc4528", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "827210bd1787236c31b0acdac620b87c066bab0b36659e3e163dafdf694a1ef9", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f790a421c467bb1de98d842c9d292d25b81a1ada6695f40a8571d5fda4b1b23d", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d3b410e94d90f18195f32c09e98308cf4905e03e1070d2b524da7e1cea5153fc", @@ -4943,7 +4943,7 @@ "T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", "T2B1_en_test_cancel.py::test_cancel_on_paginated": "79f025ebfbdc5a81dae1385b17d2d802280063479c8480fa5281734fe1542385", "T2B1_en_test_debuglink.py::test_softlock_instability": "cff029b728b242ec07f405a0fcd12a77212f0a28e9ec14f1b9e2db1b63293783", -"T2B1_en_test_firmware_hash.py::test_firmware_hash_emu": "a020914cfcb0f51772fc14300eb89899b605e114cb75655874aed44ef29695c0", +"T2B1_en_test_firmware_hash.py::test_firmware_hash_emu": "07a18c9e52c1a1d865fbe57960ebdafaf1f32a3d426af991469680000cbbe0f4", "T2B1_en_test_firmware_hash.py::test_firmware_hash_hw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_language.py::test_error_invalid_data_hash": "0cb01b8002472dff316d6eb3ba901dffb762d88fdf61e5ef8642ca7772d3e71c", "T2B1_en_test_language.py::test_error_invalid_data_length": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", @@ -4952,7 +4952,7 @@ "T2B1_en_test_language.py::test_error_too_long": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", "T2B1_en_test_language.py::test_error_version_mismatch": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", "T2B1_en_test_language.py::test_full_language_change[cs]": "5d3e1222ac4ed3afc376923c5d1e78f0faaddbb00de766ff14b85bf5068d5d20", -"T2B1_en_test_language.py::test_full_language_change[de]": "dba2c1337c0dce17829600dcff5aa814fca2867ca79bd0e760676c449d374512", +"T2B1_en_test_language.py::test_full_language_change[de]": "a4b4a4eb3ac5332f7628eb5b82f93c28c30af4297fbf462167637e4d72300073", "T2B1_en_test_language.py::test_full_language_change[en]": "a9c383b584d24c5aa9623b7955fe3e45dcf6016dbc0327a7ce9176ecb0e4d5d3", "T2B1_en_test_language.py::test_full_language_change[es]": "94ead6f9d0f308f60ffd135c9bbd5012a30f05b4f44fdb22286ae259bef9e205", "T2B1_en_test_language.py::test_full_language_change[fr]": "2f3a0e8541cc7b96dc983d4de2149e4e2b230b43e1971153ec6bc82e7dadafb8", @@ -4988,16 +4988,16 @@ "T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", "T2B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", "T2B1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ea276d47a239b8389071eeed9fc51e962340f808ef642343fb30db48c8ff699d", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3c12cf8b0abe61410de9eb830b922c2ef6154d3cc67a08c9b30f7f861d25293a", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0f13f63c07c028b6f7f637231792f7c59440fd409a17727c93892532a6e92826", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "0afc4dafaf546cc71104a6c4d27f686abf874468a33400191892e07bb741a23a", "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "d8c9b5e0276545c008069e4acd6118e7dbf6ad4a00aeef77c0cc4bf794c2c63e", -"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "ace510751a5c91022e21e3e088013ff4260dfb1c25732fac80cdc88345d0cdd2", -"T2B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "c8a5fdc1a70727a9992d07f44d6dbdd9886ccddd99b3a50b41eb75a7e2c2647c", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "d3f19f4a02a571d07a410ac56b92e79da7bced18d91b7e788290211c6cdeb6d0", +"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "5bae235ca89bf1c0da13620837a8a27209a10a6861c61709ae2becb9ab27d0e4", +"T2B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "0435985cdde633a543e80a88d84100bc1cf11150c60a2619035a64285a3420cf", "T2B1_en_test_msg_changepin_t2.py::test_change_pin": "a218c9db7f5567458053cf075cef32d3afaec724111c3ba9f23d53b468d4b0a2", "T2B1_en_test_msg_changepin_t2.py::test_remove_pin": "9e69d8a6e72383d4b48af12340790bef5e55ed77821f80c7ac959522885097a8", -"T2B1_en_test_msg_changepin_t2.py::test_set_failed": "36a5cde2473ea82c5031826ea4c4971043850332ab9eca1020e1ea068e97e3f3", -"T2B1_en_test_msg_changepin_t2.py::test_set_pin": "762965944766f817ededfa4eb23166542ce71412a4d5c817a7bd0c65b974d3be", +"T2B1_en_test_msg_changepin_t2.py::test_set_failed": "200c1497e33124deadccd5b84e68616d6d27d03a3613a00055ef733604a12d9d", +"T2B1_en_test_msg_changepin_t2.py::test_set_pin": "d40621de37584c0affe3be30154eb58687d8423bfac40e96b430cb35d54fac52", "T2B1_en_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", "T2B1_en_test_msg_loaddevice.py::test_load_device_2": "caf04f8db960bf67885209f02f53bb79d5687aabbd63c1d437daeebf47ccea40", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", @@ -12301,22 +12301,22 @@ "T2T1_en_test_language.py::test_error_invalid_signature": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", "T2T1_en_test_language.py::test_error_too_long": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", "T2T1_en_test_language.py::test_error_version_mismatch": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T2T1_en_test_language.py::test_full_language_change[cs]": "050f3711f004da563ee47c55d12a50c07337768a63b27fff9f832d61bf4fbd19", -"T2T1_en_test_language.py::test_full_language_change[de]": "637494aacf526b8c6465a5c48a35eee4fa71d90d9f90d7c675c555bc5df75442", +"T2T1_en_test_language.py::test_full_language_change[cs]": "b67104363cd1dba59dbe65a4d9d6924954a1c0ae9a279ed6a52fd7f18045c5be", +"T2T1_en_test_language.py::test_full_language_change[de]": "f62b6aa78d2b614e28ec8f64ecf60733b1c76fa7631e53fe414b8015b70a4094", "T2T1_en_test_language.py::test_full_language_change[en]": "5f6cec419aad5e5658f6fda45c2cd40fa4581823e7f9f0c4199970cd179bfd4e", "T2T1_en_test_language.py::test_full_language_change[es]": "6c3c6983dedaf60e8818c0acdff7f1ba83ff9106333d834b8bed02d910bf5b1f", "T2T1_en_test_language.py::test_full_language_change[fr]": "7e1f16d84163fa6b8a8acce859f5c5e97ded578c28f75629e4f9bd587cd051a8", -"T2T1_en_test_language.py::test_header_trailing_data": "476b737d8c779501707449858b7dd2c342f151c99a9a9114a7f30392716b190d", +"T2T1_en_test_language.py::test_header_trailing_data": "bf322715e91f7fb147f11c187d88813f6cea81f520030a9c71ac7fdba1b39f6a", "T2T1_en_test_language.py::test_language_is_removed_after_wipe": "706b3c433db7d062350986f86b4bc47413210369261cb7556a011fcf791153a9", "T2T1_en_test_language.py::test_reject_update": "78b8f16e00c5d653a7d5c0929d21ae8ae1c76798fe28f0eb6edee8e2ee8b0202", -"T2T1_en_test_language.py::test_silent_first_install[False-False]": "867da01cda7c15a8f8d0c6d52b55ccb43216652820a9178fc340c820721f2a00", -"T2T1_en_test_language.py::test_silent_first_install[None-False]": "867da01cda7c15a8f8d0c6d52b55ccb43216652820a9178fc340c820721f2a00", -"T2T1_en_test_language.py::test_silent_first_install[True-True]": "f77b5cb28c46c361fcbb9dc8c982299ae3bf2473e275c659b5f0a7e238443eb1", -"T2T1_en_test_language.py::test_switch_from_english[None]": "51c78815350308c7687c9b7540d507abf50c7392db7ead05d26446c71612c96c", -"T2T1_en_test_language.py::test_switch_from_english[True]": "51c78815350308c7687c9b7540d507abf50c7392db7ead05d26446c71612c96c", +"T2T1_en_test_language.py::test_silent_first_install[False-False]": "77d704870843ca886d0a807a8f467f5741e0d7713ba68d78ba0ecc0d8921e910", +"T2T1_en_test_language.py::test_silent_first_install[None-False]": "77d704870843ca886d0a807a8f467f5741e0d7713ba68d78ba0ecc0d8921e910", +"T2T1_en_test_language.py::test_silent_first_install[True-True]": "f33959c2ef979e678c8065b40e56efb563dcf569ea62c506e800152515ffa94a", +"T2T1_en_test_language.py::test_switch_from_english[None]": "2d3e384d3bf18cf73eab43a3a43e596a3ff2a923390f9f5430ab04392fb28913", +"T2T1_en_test_language.py::test_switch_from_english[True]": "2d3e384d3bf18cf73eab43a3a43e596a3ff2a923390f9f5430ab04392fb28913", "T2T1_en_test_language.py::test_switch_from_english_not_silent": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_test_language.py::test_switch_language": "08a40de5b52f46c932dfd40b5082b1ff3ceff0877b4b37192d3a2f1d1fcf7e67", -"T2T1_en_test_language.py::test_translations_renders_on_screen": "fccced5225b6ed868670a35d60a637da5284607e7065232286e50d91b22012c0", +"T2T1_en_test_language.py::test_switch_language": "96d22e81bdc95a01571b678688798ea58868f818372bbc28fff6cb2415531d56", +"T2T1_en_test_language.py::test_translations_renders_on_screen": "bc06283850dbfad95bf96a97768c276df1543073d41d89909097ea2fc4f3f9ad", "T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0e2a71ac60add6bebc03645b6f4f6f19abdba56f1e55e799479b116e5a66aef6", "T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", From ef3c49c3472aeb0d342613343c69732b3e497615 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 6 May 2024 20:07:59 +0200 Subject: [PATCH 024/626] fix(tests): update fixtures of T2B1 Probably an omission after pull #3710. Update using ../tests/update_fixtures.py local -r [no changelog] --- tests/ui_tests/fixtures.json | 47 +++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 9e3834fa94..bf6d31e293 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -4724,9 +4724,9 @@ "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "69315e1a8d394d894b570230f2affe9d5c77a2790f6ded163078fd13799e2448", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "523530b98bddcaf655b4e3ed3219a8acba9352266937b2ba6843de8353719bcc", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "9e3271390a137436ca330e87607d50836c566fc2dabc6158866875bda5ea54d1", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "948831eea0cad4a965ec66efec3872336bba1b767532072b761e3793c83f4b50", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c4cd0a177633a8413f93e8cd822456d23e8b9933dde7de4d297bc2d3e5d1540b", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "829c12770a146dd2660f235e34ff8f3a69c5d39040720a9b1833b4d6ab7befd4", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "8e00ca95885d971555eb9cd0f72be49bad27092c2a8772ffa490ba5086b5fb46", @@ -4756,24 +4756,24 @@ "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e429e4cef3d7d472140f5697ed0604eafa9c9bb224bf481eb35049bd0ee1fc70", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "9af97c3b64680f33197e76237a6121d24b72ef72ce007787a63a85c60368e2d5", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "590aa68e3990a7d44d46bb2766cea6ee4c2aa8b8a969689dd6d3228cbe9df875", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7b263b889081f8cebb8a3d744430eef8d719f216de621263939006a18a8556f4", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "5e73e48a82d34b315ee346ba731cea73ebe7a0aac3992b8677217f8516728799", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "9eb8fcf86274cec7cdf3581d4aab92d403c05d295eb3c06660a6000fe2588114", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "0961c86739794860b0dc6536b97088faa3f3703f3e2744fdf457e561c7f21e6e", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "a7fe2740ba57d0790479b9fd56d7a0cb6e985a4d3fcd2cc2a8245c13becfa922", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "be8181d67dd2aa8e791533a23605dc2b81f365019c2ab5b2089ed81b840d1591", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "df20c07c51b91122e5915590868b9c46448bad977e01b03f2f6ff3f3de73caef", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "b0b7f808ddd0bdcb508318b0a5ab6a2bc933cb50b1207fb9bb2a429c576c21f4", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "ce6389b61742ea1bbd613969aabb63466bf7f49b77b2f27db8874cb2beb40203", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "659273d8773032d841b7aa3dcfdead53f4f9b3c4c58c4c253f1851e37d798a44", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "c8a6dbe06267c879a59558111d3a422be911a97adf38c8ef85603b6e19f6f097", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "bb82c7bf6e43e5f4a69b079f5a9d63c682b9e1839ab9eeac5a2241f20abadc37", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ed4662a5df961dcdde60d11bdda2e8984f49de7be79b7dd5e7c184de265fc219", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9eed365ce77963e7a40edcf9cd36afc5d8401347e94c47c3d0add98e534c45d0", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "51f9ebb160fb086ca731efce727104c2d9702c9ff1367b68408f54a3eef68eac", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f6303097005c4d03571ec92653a7f76450d2072c98811128e0c29f5a09924087", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "51b5bb2f7010857eb8dcddbbc4aee2b756a62e31327882f577ac1fc1c30df59c", -"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cb1dc243f81a1f07e37defbfe582a5e3aebb7516924d462e6f93440edcb08d9b", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "09f352d0b3e4ae6dc2227109be60a305a6808c185f996b52dffd3fc2329d214a", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "74ae2eca1cf7b95acc49fa23c35c5f1229305cea759ecf6ab9095fbf4018cf35", -"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a1bbafb0d49929c0b62203d655e84f345470051cd02ef1cffc0e2ee704708fc7", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "fdfbffcc3a99bcfcc4d2fbe32c2e1b42d53af21910cefdb2a18058c553e8a879", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ec047a8e65dea3cc592b9889dec2ae22d3718dbfb9bfe97b6799540c6af0a19a", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6339554affe43322167bfe89d126f3d4e1f8c2b906e31bae2a443bd2e067c859", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "621d8346c71b4029978f524a766bda638878a063a56690e37289dd6fa3bcd1d4", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "35fa9d4a96bf5ace4efa3730cf999aaf246557811ac346bc69c371349099537e", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "4a9415af8cbc4cd317b7b88cb03586da6a5d31f37700d9ffcfa6233a11143403", +"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a1483d1109d4b1bf5c6d09742e48fa27ae8075840524173492bf189a61dc0da8", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e0ee385ec1e38a7632a490d64157bcd5ea8c8264b3cc120c56bdef7aecbb51b7", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2741953dc55cb61afb0d5a7e55485c2baad6746192ae98dae9a8528c589f328a", +"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "c9cd80dd9a3bf550d7413dd0590e3f29f28cb1adbb93fb05a5165aabe0c384c6", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "9730cb5e34f6a90cf63a4a6f2c4fa279201228ace1bb9025be166f2cab132522", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b6b689c1832240ac7a4caaf2470388eda76bdb0acc4ac26bdba002d3b84117e0", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", @@ -4980,11 +4980,14 @@ "T2B1_en_test_msg_applysettings.py::test_experimental_features": "0ac7ff5ebcc73c8922545b14e8584d13199ea0c5d0712189b16e24ded22e3c17", "T2B1_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", -"T2B1_en_test_msg_backup_device.py::test_backup_bip39": "d8778ebc414b075141007dd18f9ecf652338947187bb2f9770101ccbfa56e233", +"T2B1_en_test_msg_backup_device.py::test_backup_bip39": "2f3fcd299c216b6168260b4daca23aeee8c0b088f0e2aec050a949a2119e904f", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "2292ff8faec75a418fcee48235a2333843fe1458b4e3ec0af673b5153574152b", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8672475749cc6b3b1f066d8d31d1ad2ea0fd1ee677d7e97ce6a4051619bbd85f", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "fb35ceaf56b93785eb465f5f6b195a4db7fcb0db1cc6e4be32691f5a1a096828", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5a0af939f74afec51385aae6a181aa30a816c86226c1fe3636e0b8b9eaa045cd", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "be8fd80321cf86569dbdd9a42bdc0d2d433db5d52a179bc1e1e013aaa4b0da63", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "95590e5d8d36c0afbc41e8fdf97354e2122715b59c3f5db944773cd7d843c9bd", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ae6a51ce4641a97dddf8f9e5fe2211b0f1ec025752d8e691ef872f619d5afcb2", "T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", "T2B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", "T2B1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", From 069ed1eb32d450c77244f0a66dc38088bd4ad85c Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 7 May 2024 15:08:56 +0200 Subject: [PATCH 025/626] refactor(core): no all-caps in other langs jsons This commit changes translations strings of ES, FR, CS, DE langs so that they do not use UPPERCASED titles, button labels and other texts. [no changelog] --- core/translations/cs.json | 356 +++++++++++++++--------------- core/translations/de.json | 356 +++++++++++++++--------------- core/translations/es.json | 356 +++++++++++++++--------------- core/translations/fr.json | 356 +++++++++++++++--------------- core/translations/signatures.json | 6 +- 5 files changed, 715 insertions(+), 715 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 75f6a04c15..176eb0de42 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -40,24 +40,24 @@ "addr_mismatch__wrong_derivation_path": "Chybná derivační cesta pro vybraný účet.", "addr_mismatch__xpub_mismatch": "Neshoduje se XPUB?", "address__public_key": "Veřejný klíč", - "address__title_cosigner": "DALŠÍ PODEPISUJÍCÍ", - "address__title_receive_address": "PŘIJÍMACÍ ADRESA", - "address__title_yours": "VAŠE", + "address__title_cosigner": "Další podepisující", + "address__title_receive_address": "Přijímací adresa", + "address__title_yours": "Vaše", "address_details__derivation_path": "Derivační cesta:", - "address_details__title_receive_address": "PŘIJÍMACÍ ADRESA", - "address_details__title_receiving_to": "PŘÍJEM", + "address_details__title_receive_address": "Přijímací adresa", + "address_details__title_receiving_to": "Příjem", "authenticate__confirm_template": "Povolit připojenému počítači potvrdit pravost vašeho {0}?", "authenticate__header": "Ověřit zařízení", "auto_lock__change_template": "Automaticky zamknout Trezor po {0} nečinnosti?", - "auto_lock__title": "PRODLEVA AUTO ZÁMKU", + "auto_lock__title": "Prodleva auto zámku", "backup__can_back_up_anytime": "Svůj Trezor můžete kdykoli zálohovat.", "backup__it_should_be_backed_up": "Novou peněženku byste si měli ihned zálohovat.", "backup__it_should_be_backed_up_now": "Měli byste ji hned zálohovat!", "backup__new_wallet_created": "Byla vytvořena nová peněženka.\n", "backup__new_wallet_successfully_created": "Nová peněženka byla vytvořena.", "backup__recover_anytime": "Pomocí zálohy můžete svou peněženku kdykoli obnovit.", - "backup__title_backup_wallet": "ZÁLOHA PENĚŽENKY", - "backup__title_skip": "PŘESKOČIT ZÁLOHU", + "backup__title_backup_wallet": "Záloha peněženky", + "backup__title_skip": "Přeskočit zálohu", "backup__want_to_skip": "Určitě chcete přeskočit zálohování?", "binance__buy": "Koupit", "binance__confirm_cancel": "Potvrdit zrušení", @@ -83,59 +83,59 @@ "bitcoin__new_fee_rate": "Nová výše poplatku:", "bitcoin__simple_send_of": "Jednoduché odeslání", "bitcoin__ticket_amount": "Částka za lístek:", - "bitcoin__title_confirm_details": "POTVRDIT ÚDAJE", - "bitcoin__title_finalize_transaction": "DOKONČIT TRANSAKCI", - "bitcoin__title_high_mining_fee": "VYS. POPLATEK TĚŽBY", - "bitcoin__title_meld_transaction": "TRANSAKCE MELD", - "bitcoin__title_modify_amount": "UPRAVIT ČÁSTKU", - "bitcoin__title_payjoin": "PAYJOIN", - "bitcoin__title_proof_of_ownership": "DŮKAZ VLASTNICTVÍ", - "bitcoin__title_purchase_ticket": "KOUPIT LÍSTEK", - "bitcoin__title_update_transaction": "AKTUALIZ. TRANSAKCI", + "bitcoin__title_confirm_details": "Potvrdit údaje", + "bitcoin__title_finalize_transaction": "Dokončit transakci", + "bitcoin__title_high_mining_fee": "Vys. poplatek těžby", + "bitcoin__title_meld_transaction": "Transakce meld", + "bitcoin__title_modify_amount": "Upravit částku", + "bitcoin__title_payjoin": "Payjoin", + "bitcoin__title_proof_of_ownership": "Důkaz vlastnictví", + "bitcoin__title_purchase_ticket": "Koupit lístek", + "bitcoin__title_update_transaction": "Aktualiz. transakci", "bitcoin__unknown_path": "Neznámá cesta", "bitcoin__unknown_transaction": "Neznámá transakce", "bitcoin__unusually_high_fee": "Nezvykle vysoký poplatek.", "bitcoin__unverified_external_inputs": "Transakce obsahuje neověřené externí vstupy.", "bitcoin__valid_signature": "Podpis je platný.", "bitcoin__voting_rights": "Hlasovací práva:", - "buttons__abort": "ZRUŠIT", - "buttons__access": "PŘÍSTUP", - "buttons__again": "ZNOVU", - "buttons__allow": "POVOLIT", - "buttons__back": "ZPĚT", - "buttons__back_up": "ZÁLOHOVAT", - "buttons__cancel": "ZRUŠIT", - "buttons__change": "ZMĚNIT", - "buttons__check": "ZKONTROLOVAT", - "buttons__check_again": "ZNOVU ZKONTRL.", - "buttons__close": "ZAVŘÍT", - "buttons__confirm": "POTVRDIT", - "buttons__continue": "POKRAČUJ", - "buttons__details": "PODROBNOSTI", - "buttons__enable": "ZAPNOUT", - "buttons__enter": "ZADAT", - "buttons__enter_share": "ZADAT ČÁST", - "buttons__export": "EXPORTOVAT", - "buttons__format": "FORMÁTOVAT", - "buttons__go_back": "JÍT ZPĚT", - "buttons__hold_to_confirm": "DRŽENÍM POTVRĎ", - "buttons__info": "INFORMACE", - "buttons__install": "NAINSTALOVAT", - "buttons__more_info": "DALŠÍ INFORMACE", + "buttons__abort": "Zrušit", + "buttons__access": "Přístup", + "buttons__again": "Znovu", + "buttons__allow": "Povolit", + "buttons__back": "Zpět", + "buttons__back_up": "Zálohovat", + "buttons__cancel": "Zrušit", + "buttons__change": "Změnit", + "buttons__check": "Zkontrolovat", + "buttons__check_again": "Znovu zkontrl.", + "buttons__close": "Zavřít", + "buttons__confirm": "Potvrdit", + "buttons__continue": "Pokračuj", + "buttons__details": "Podrobnosti", + "buttons__enable": "Zapnout", + "buttons__enter": "Zadat", + "buttons__enter_share": "Zadat část", + "buttons__export": "Exportovat", + "buttons__format": "Formátovat", + "buttons__go_back": "Jít zpět", + "buttons__hold_to_confirm": "Držením potvrď", + "buttons__info": "Informace", + "buttons__install": "Nainstalovat", + "buttons__more_info": "Další informace", "buttons__ok_i_understand": "OK, ROZUMÍM", - "buttons__purchase": "KOUPIT", - "buttons__quit": "UKONČIT", - "buttons__restart": "RESTARTOVAT", - "buttons__retry": "OPAKOVAT", - "buttons__select": "VYBRAT", - "buttons__set": "NASTAVIT", - "buttons__show_all": "ZOBRAZIT VŠE", - "buttons__show_details": "UKÁZAT PODROB.", - "buttons__show_words": "ZOBRAZIT SLOVA", - "buttons__skip": "PŘESKOČIT", - "buttons__try_again": "ZKUSIT ZNOVU", - "buttons__turn_off": "VYPNOUT", - "buttons__turn_on": "ZAPNOUT", + "buttons__purchase": "Koupit", + "buttons__quit": "Ukončit", + "buttons__restart": "Restartovat", + "buttons__retry": "Opakovat", + "buttons__select": "Vybrat", + "buttons__set": "Nastavit", + "buttons__show_all": "Zobrazit vše", + "buttons__show_details": "Ukázat podrob.", + "buttons__show_words": "Zobrazit slova", + "buttons__skip": "Přeskočit", + "buttons__try_again": "Zkusit znovu", + "buttons__turn_off": "Vypnout", + "buttons__turn_on": "Zapnout", "cardano__addr_base": "Základní", "cardano__addr_enterprise": "Podniková", "cardano__addr_legacy": "Legacy", @@ -249,21 +249,21 @@ "coinjoin__do_not_disconnect": "Neodpojujte Trezor!", "coinjoin__max_mining_fee": "Max. poplatek za těžbu", "coinjoin__max_rounds": "Maximum kol", - "coinjoin__title": "SCHVÁLIT COINJOIN", - "coinjoin__title_do_not_disconnect": "NEODPOJUJTE TREZOR!", - "coinjoin__title_progress": "PROBÍHÁ COINJOIN", + "coinjoin__title": "Schválit coinjoin", + "coinjoin__title_do_not_disconnect": "Neodpojujte trezor!", + "coinjoin__title_progress": "Probíhá coinjoin", "coinjoin__waiting_for_others": "Čeká se na ostatní", "confirm_total__fee_rate": "Výše poplatku:", "confirm_total__sending_from_account": "Odeslání z účtu:", - "confirm_total__title_fee": "INFO O POPLATCÍCH", - "confirm_total__title_sending_from": "ODESLÁNÍ Z", + "confirm_total__title_fee": "Info o poplatcích", + "confirm_total__title_sending_from": "Odeslání z", "debug__loading_seed": "Načítání seedu", "debug__loading_seed_not_recommended": "Nedoporučujeme načítat soukromý seed.", "device_name__change_template": "Změnit název zařízení na {0}?", - "device_name__title": "NÁZEV ZAŘÍZENÍ", + "device_name__title": "Název zařízení", "entropy__send": "Opravdu chcete odeslat entropii?", - "entropy__title": "INTERNÍ ENTROPIE", - "entropy__title_confirm": "POTVRDIT ENTROPII", + "entropy__title": "Interní entropie", + "entropy__title_confirm": "Potvrdit entropii", "eos__about_to_sign_template": "Chystáte se podepsat {0}.", "eos__action_name": "Název akce:", "eos__arbitrary_data": "Libovolná data", @@ -319,26 +319,26 @@ "ethereum__show_full_message": "Zobrazit celou zprávu", "ethereum__show_full_struct": "Zobrazit strukturu", "ethereum__sign_eip712": "Chcete podepsat typovaná data EIP-712?", - "ethereum__title_confirm_data": "POTVRDIT DATA", - "ethereum__title_confirm_domain": "POTVRDIT DOMÉNU", - "ethereum__title_confirm_message": "POTVRDIT ZPRÁVU", - "ethereum__title_confirm_struct": "POTVRDIT STRUKTURU", - "ethereum__title_confirm_typed_data": "POTVRDIT TYP. DATA", - "ethereum__title_signing_address": "PODEPISOVÁNÍ ADRESY", + "ethereum__title_confirm_data": "Potvrdit data", + "ethereum__title_confirm_domain": "Potvrdit doménu", + "ethereum__title_confirm_message": "Potvrdit zprávu", + "ethereum__title_confirm_struct": "Potvrdit strukturu", + "ethereum__title_confirm_typed_data": "Potvrdit typ. data", + "ethereum__title_signing_address": "Podepisování adresy", "ethereum__units_template": "Jednotky: {0}", "ethereum__unknown_token": "Neznámý token", "ethereum__valid_signature": "Podpis je platný.", - "ethereum__staking_stake": "STAKE", - "ethereum__staking_stake_address": "STAKE ADRESA", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Stake adresa", "ethereum__staking_stake_intro": "Stakovat ETH na Everstake?", - "ethereum__staking_unstake": "ZRUŠIT STAKOVÁNÍ", + "ethereum__staking_unstake": "Zrušit stakování", "ethereum__staking_unstake_intro": "Zrušit stakování ETH z Everstake?", - "ethereum__staking_claim": "NÁROKOVAT", - "ethereum__staking_claim_address": "NÁROKOVAT ADRESU", + "ethereum__staking_claim": "Nárokovat", + "ethereum__staking_claim_address": "Nárokovat adresu", "ethereum__staking_claim_intro": "Nárokovat ETH z Everstake?", "experimental_mode__enable": "Povolit experimentální funkce?", "experimental_mode__only_for_dev": "Pouze pro vývoj a beta testování!", - "experimental_mode__title": "EXPERIMENT. REŽIM", + "experimental_mode__title": "Experiment. režim", "fido__already_registered": "Registrace již proběhla", "fido__device_already_registered": "Toto zařízení je v aplikaci již zaregistrováno.", "fido__device_already_registered_with_template": "Toto zařízení je již registrováno v {0}.", @@ -349,29 +349,29 @@ "fido__not_registered": "Nezaregistrováno", "fido__not_registered_with_template": "Toto zařízení není zaregistrováno v\n{0}.", "fido__please_enable_pin_protection": "Povolte ochranu PIN kódem.", - "fido__title_authenticate": "OVĚŘENÍ FIDO2", - "fido__title_import_credential": "IMPORTOVAT ÚDAJE", - "fido__title_list_credentials": "VYPSAT ÚDAJE", - "fido__title_register": "REGISTRACE FIDO2", - "fido__title_remove_credential": "ODSTRANIT ÚDAJE", - "fido__title_reset": "RESET FIDO2", - "fido__title_u2f_auth": "OVĚŘENÍ U2F", - "fido__title_u2f_register": "REGISTRACE U2F", - "fido__title_verify_user": "OVĚŘENÍ UŽIV. FIDO2", + "fido__title_authenticate": "Ověření FIDO2", + "fido__title_import_credential": "Importovat údaje", + "fido__title_list_credentials": "Vypsat údaje", + "fido__title_register": "Registrace FIDO2", + "fido__title_remove_credential": "Odstranit údaje", + "fido__title_reset": "Reset FIDO2", + "fido__title_u2f_auth": "Ověření U2F", + "fido__title_u2f_register": "Registrace U2F", + "fido__title_verify_user": "Ověření uživ. FIDO2", "fido__unable_to_verify_user": "Zakázáním ověříte uživatele.", "fido__wanna_erase_credentials": "Chcete vymazat všechny údaje?", - "firmware_update__title": "AKTUAL. FIRMWARE", - "firmware_update__title_fingerprint": "OTISK FIRMWARU", + "firmware_update__title": "Aktual. firmware", + "firmware_update__title_fingerprint": "Otisk firmwaru", "homescreen__click_to_connect": "Kliknutím se připojíte", "homescreen__click_to_unlock": "Kliknutím odemknete", - "homescreen__title_backup_failed": "ZÁLOHA SELHALA", - "homescreen__title_backup_needed": "JE POTŘEBA ZÁLOHA", - "homescreen__title_coinjoin_authorized": "COINJOIN SCHVÁLEN", - "homescreen__title_experimental_mode": "EXPERIMENT. REŽIM", - "homescreen__title_no_usb_connection": "ŽÁDNÉ PŘIPOJENÍ USB", - "homescreen__title_pin_not_set": "NENÍ NASTAVEN PIN", - "homescreen__title_seedless": "BEZ SEEDU", - "homescreen__title_set": "ZMĚNIT DOMOV. OBR.?", + "homescreen__title_backup_failed": "Záloha selhala", + "homescreen__title_backup_needed": "Je potřeba záloha", + "homescreen__title_coinjoin_authorized": "Coinjoin schválen", + "homescreen__title_experimental_mode": "Experiment. režim", + "homescreen__title_no_usb_connection": "Žádné připojení usb", + "homescreen__title_pin_not_set": "Není nastaven PIN", + "homescreen__title_seedless": "Bez seedu", + "homescreen__title_set": "Změnit domov. obr.?", "inputs__back": "ZPĚT", "inputs__cancel": "ZRUŠIT", "inputs__delete": "ODSTRANIT", @@ -380,30 +380,30 @@ "inputs__previous": "PŘEDCHOZÍ", "inputs__show": "ZOBRAZIT", "inputs__space": "ROZDĚLENÍ", - "joint__title": "SPOLEČNÁ TRANSAKCE", + "joint__title": "Společná transakce", "joint__to_the_total_amount": "Do celkové částky:", "joint__you_are_contributing": "Přispíváte:", "language__change_to_template": "Změnit jazyk na {0}?", "language__changed": "Jazyk byl změněn", "language__progress": "Změna jazyka", - "language__title": "NASTAVENÍ JAZYKA", + "language__title": "Nastavení jazyka", "lockscreen__tap_to_connect": "Klepnutím se připojíte", "lockscreen__tap_to_unlock": "Klepnutím odemknete", - "lockscreen__title_locked": "UZAMČENO", - "lockscreen__title_not_connected": "NEPŘIPOJENO", + "lockscreen__title_locked": "Uzamčeno", + "lockscreen__title_not_connected": "Nepřipojeno", "misc__decrypt_value": "Dešifrovat hodnotu", "misc__encrypt_value": "Zašifrovat hodnotu", - "misc__title_suite_labeling": "POPISKY ZE SUITE", + "misc__title_suite_labeling": "Popisky ze suite", "modify_amount__decrease_amount": "Snížit částku o:", "modify_amount__increase_amount": "Zvýšit částku o:", "modify_amount__new_amount": "Nová částka:", - "modify_amount__title": "UPRAVIT ČÁSTKU", + "modify_amount__title": "Upravit částku", "modify_fee__decrease_fee": "Snížit poplatek o:", "modify_fee__fee_rate": "Výše poplatku:", "modify_fee__increase_fee": "Zvýšit poplatek o:", "modify_fee__new_transaction_fee": "Nový trans. poplatek:", "modify_fee__no_change": "Poplatek se nezměnil.\n", - "modify_fee__title": "UPRAVIT POPLATEK", + "modify_fee__title": "Upravit poplatek", "modify_fee__transaction_fee": "Transakční poplatek:", "monero__confirm_export": "Potvrdit export", "monero__confirm_ki_sync": "Potvrdit synchronizaci ki", @@ -482,11 +482,11 @@ "passphrase__next_screen_will_show_passphrase": "Na další obrazovce se zobrazí passphrase.", "passphrase__please_enter": "Zadejte passphrase.", "passphrase__revoke_on_device": "Chcete zrušit passphrase v nastavení zařízení?", - "passphrase__title_confirm": "POTVRDIT PASSPHRASE", - "passphrase__title_enter": "ZADEJTE PASSPHRASE", - "passphrase__title_hide": "SKRÝT PASSPHRASE", - "passphrase__title_settings": "NASTAV. PASSPHRASE", - "passphrase__title_source": "ZDROJ PASSPHRASE", + "passphrase__title_confirm": "Potvrdit passphrase", + "passphrase__title_enter": "Zadejte passphrase", + "passphrase__title_hide": "Skrýt passphrase", + "passphrase__title_settings": "Nastav. passphrase", + "passphrase__title_source": "Zdroj passphrase", "passphrase__turn_off": "Vypnout ochranu s passphrase?", "passphrase__turn_on": "Zapnout ochranu s passphrase?", "pin__change": "Změnit PIN?", @@ -507,9 +507,9 @@ "pin__reenter_new": "Znovu zadejte nový PIN", "pin__reenter_to_confirm": "Znovu zadejte PIN pro potvrzení.", "pin__should_be_long": "PIN musí mít 4-50 číslic.", - "pin__title_check_pin": "ZKONTROLOVAT PIN", - "pin__title_settings": "NASTAVENÍ PIN KÓDU", - "pin__title_wrong_pin": "NESPRÁVNÝ PIN KÓD", + "pin__title_check_pin": "Zkontrolovat PIN", + "pin__title_settings": "Nastavení PIN kódu", + "pin__title_wrong_pin": "Nesprávný PIN kód", "pin__tries_left": "zbývajících pokusů", "pin__turn_off": "Opravdu chcete vypnout ochranu PIN kódem?", "pin__turn_on": "Zapnout ochranu PIN kódem?", @@ -528,13 +528,13 @@ "progress__loading_transaction": "Načítání transakce...", "progress__locking_device": "Zamykání zařízení...", "progress__one_second_left": "Zbývá 1 s", - "progress__please_wait": "POČKEJTE", + "progress__please_wait": "Počkejte", "progress__refreshing": "Obnovování...", "progress__signing_transaction": "Podpis transakce...", "progress__syncing": "Synchronizace...", "progress__x_seconds_left_template": "Zbývá {0} s", "reboot_to_bootloader__restart": "Trezor se restartuje v režimu bootloaderu.", - "reboot_to_bootloader__title": "SPUSTIT BOOTLOADER", + "reboot_to_bootloader__title": "Spustit bootloader", "reboot_to_bootloader__version_by_template": "Verze firmwaru {0}\nz {1}", "reboot_to_bootloader__just_a_moment": "Chvíli počkejte...", "recovery__cancel_dry_run": "Zrušit kontrolu zálohy", @@ -560,18 +560,18 @@ "recovery__share_already_entered": "Část jste již zadali", "recovery__share_from_another_shamir": "Zadali jste část z jiné zálohy Shamir.", "recovery__share_num_template": "Část {0}", - "recovery__title": "OBNOVIT PENĚŽENKU", - "recovery__title_cancel_dry_run": "ZRUŠ. KONTR. ZÁLOHY", - "recovery__title_cancel_recovery": "ZRUŠIT OBNOVENÍ", - "recovery__title_dry_run": "KONTROLA ZÁLOHY", - "recovery__title_recover": "OBNOVIT PENĚŽENKU", - "recovery__title_remaining_shares": "ZBÝVAJÍCÍ ČÁSTI", + "recovery__title": "Obnovit peněženku", + "recovery__title_cancel_dry_run": "Zruš. kontr. zálohy", + "recovery__title_cancel_recovery": "Zrušit obnovení", + "recovery__title_dry_run": "Kontrola zálohy", + "recovery__title_recover": "Obnovit peněženku", + "recovery__title_remaining_shares": "Zbývající části", "recovery__type_word_x_of_y_template": "Zadejte slovo {0} z {1}", "recovery__wallet_recovered": "Peněženka obnovena", "recovery__wanna_cancel_dry_run": "Opravdu chcete zrušit kontrolu zálohy?", "recovery__wanna_cancel_recovery": "Opravdu chcete proces obnovy zrušit?", "recovery__word_count_template": "(slova: {0})", - "recovery__word_x_of_y_template": "SLOVO {0} Z {1}", + "recovery__word_x_of_y_template": "Slovo {0} z {1}", "recovery__x_more_items_starting_template_plural": "Zahajuje se dalších {count} {plural}", "recovery__x_more_shares_needed_template_plural": "Je potřeba dalších {count} {plural}.", "recovery__x_of_y_entered_template": "Zadáno {0} částí z {1}.", @@ -579,13 +579,13 @@ "reset__advanced_group_threshold_info": "Počet částí zálohy skupiny určuje počet skupin potřebných k obnovení peněženky.", "reset__all_x_of_y_template": "všech {0} z {1} částí", "reset__any_x_of_y_template": "lib. {0} z {1} částí", - "reset__button_create": "VYTV. PENĚŽENKU", - "reset__button_recover": "OBN. PENĚŽENKU", + "reset__button_create": "Vytv. peněženku", + "reset__button_recover": "Obn. peněženku", "reset__by_continuing": "Pokračováním přijímáte smluvní podmínky společnosti Trezor.", - "reset__check_backup_title": "ZKONTR. ZÁLOHU", - "reset__check_group_share_title_template": "ZKONT. G{0}-ČÁST{1}", - "reset__check_wallet_backup_title": "ZKONTROLOVAT SEED", - "reset__check_share_title_template": "ZKONTROL. ČÁST #{0}", + "reset__check_backup_title": "Zkontr. zálohu", + "reset__check_group_share_title_template": "Zkont. g{0}-část{1}", + "reset__check_wallet_backup_title": "Zkontrolovat seed", + "reset__check_share_title_template": "Zkontrol. část #{0}", "reset__continue_with_next_share": "Pokračujte další částí.", "reset__continue_with_share_template": "Pokračujte částí #{0}.", "reset__finished_verifying_group_template": "Ověřili jste části zálohy skupiny {0}.", @@ -594,7 +594,7 @@ "reset__group_description": "Skupina se skládá z částí zálohy.", "reset__group_info": "Každá skupina má stanovený počet částí a vlastní počet částí zálohy pro obnovu. V dalších krocích nastavíte počty částí a počet pro obnovu.", "reset__group_share_checked_successfully_template": "Skupina {0} - Proběhla kontrola části {1}.", - "reset__group_share_title_template": "SKUPINA{0}-ČÁST{1}", + "reset__group_share_title_template": "Skupina{0}-část{1}", "reset__more_info_at": "Další informace na", "reset__need_all_share_template": "K obnovení potřebujete všech {0} částí.", "reset__need_any_share_template": "K obnovení potřebujete libovolné {0} části.", @@ -608,15 +608,15 @@ "reset__number_of_shares_info": "= počet seznamů jedinečných slov u zálohy peněženky.", "reset__one_share": "1 část", "reset__only_one_share_will_be_created": "Bude vytvořena pouze jedna část.", - "reset__recovery_wallet_backup_title": "ZÁLOHA", - "reset__recovery_share_title_template": "ČÁST ZÁLOHY Č. {0}", + "reset__recovery_wallet_backup_title": "Záloha", + "reset__recovery_share_title_template": "Část zálohy č. {0}", "reset__required_number_of_groups": "Požadovaný počet skupin pro obnovení.", "reset__select_correct_word": "Pro každou pozici vyberte správné slovo.", - "reset__select_word_template": "VYBRAT SLOVO {0}", + "reset__select_word_template": "Vybrat slovo {0}", "reset__select_word_x_of_y_template": "Vyb. slovo {0} z {1}:", "reset__set_it_to_count_template": "Nastavte {0} a budete potřebovat ", "reset__share_checked_successfully_template": "Proběhla kontrola {0}. části zálohy.", - "reset__share_words_title": "STANDARDNÍ ZÁLOHA", + "reset__share_words_title": "Standardní záloha", "reset__slip39_checklist_num_groups": "Počet skupin", "reset__slip39_checklist_num_shares": "Počet částí", "reset__slip39_checklist_set_num_groups": "Nastavte počet skupin", @@ -624,21 +624,21 @@ "reset__slip39_checklist_set_sizes": "Nastavte velikosti a počet pro obnovu", "reset__slip39_checklist_set_sizes_longer": "Nastavte velikost a počet částí každé skup.", "reset__slip39_checklist_set_threshold": "Nastavte počet částí", - "reset__slip39_checklist_title": "KONT. SEZNAM ZÁLOHY", + "reset__slip39_checklist_title": "Kont. seznam zálohy", "reset__slip39_checklist_write_down": "Zapište si a zkontr. všechny části", "reset__slip39_checklist_write_down_recovery": "Zapište si a zkontr. všechny části zálohy", "reset__the_threshold_sets_the_number_of_shares": "Počet pro obnovu nastaví počet částí ", "reset__threshold_info": "= minimální počet seznamů jedinečných slov u obnovy.", - "reset__title_backup_is_done": "ZÁLOHA JE DOKONČENA", - "reset__title_create_wallet": "VYTV. PENĚŽENKU", - "reset__title_create_wallet_shamir": "VYTVOŘIT PENĚŽENKU (SHAMIR)", - "reset__title_group_threshold": "POČET OBN. SKUPINY", - "reset__title_number_of_groups": "POČET SKUPIN", - "reset__title_number_of_shares": "POČET ČÁSTÍ", - "reset__title_set_group_threshold": "NAST. POČET SKUPINY", - "reset__title_set_number_of_groups": "NASTAVIT POČET SKUPIN", - "reset__title_set_number_of_shares": "NASTAVIT POČET ČÁSTÍ", - "reset__title_set_threshold": "NAST. POČET OBNOVY", + "reset__title_backup_is_done": "Záloha je dokončena", + "reset__title_create_wallet": "Vytv. peněženku", + "reset__title_create_wallet_shamir": "Vytvořit peněženku (shamir)", + "reset__title_group_threshold": "Počet obn. skupiny", + "reset__title_number_of_groups": "Počet skupin", + "reset__title_number_of_shares": "Počet částí", + "reset__title_set_group_threshold": "Nast. počet skupiny", + "reset__title_set_number_of_groups": "Nastavit počet skupin", + "reset__title_set_number_of_shares": "Nastavit počet částí", + "reset__title_set_threshold": "Nast. počet obnovy", "reset__to_form_group_template": "k vytvoření skupiny {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Nastavte celkový počet částí ve skupině {0}.", @@ -653,13 +653,13 @@ "rotation__east": "východ", "rotation__north": "sever", "rotation__south": "jih", - "rotation__title_change": "ZMĚNIT ORIENTACI", + "rotation__title_change": "Změnit orientaci", "rotation__west": "západ", "safety_checks__approve_unsafe_always": "Trezor vám umožní schválit některé akce, které by mohly být nebezpečné.", "safety_checks__approve_unsafe_temporary": "Trezor vám dočasně umožní schválit některé akce, které by mohly být nebezpečné.", "safety_checks__enforce_strict": "Opravdu chcete zavést přísné bezpečnostní kontroly (doporučeno)?", - "safety_checks__title": "BEZPEČN. KONTROLY", - "safety_checks__title_safety_override": "VYŘAZENÍ ZABEZPEČ.", + "safety_checks__title": "Bezpečn. kontroly", + "safety_checks__title_safety_override": "Vyřazení zabezpeč.", "sd_card__all_data_will_be_lost": "Všechna data na kartě SD budou ztracena.", "sd_card__card_required": "Vyžadována karta SD.", "sd_card__disable": "Opravdu chcete ze svého zařízení odstranit ochranu karty SD?", @@ -675,25 +675,25 @@ "sd_card__refresh": "Opravdu chcete nahradit aktuální klíč karty SD nově vygenerovaným?", "sd_card__refreshed": "Úspěšně jste obnovili ochranu SD.", "sd_card__restart": "Chcete restartovat Trezor v režimu bootloaderu?", - "sd_card__title": "OCHRANA KARTY SD", - "sd_card__title_problem": "PROBLÉM S KARTOU SD", + "sd_card__title": "Ochrana karty SD", + "sd_card__title_problem": "Problém s kartou SD", "sd_card__unknown_filesystem": "Neznámý systém souborů.", "sd_card__unplug_and_insert_correct": "Odpojte zařízení a vložte správnou kartu SD.", "sd_card__use_different_card": "Použijte jinou kartu nebo naformátujte kartu SD na systém souborů FAT32.", "sd_card__wanna_format": "Opravdu chcete naformátovat kartu SD?", "sd_card__wrong_sd_card": "Nesprávná karta SD.", "send__address_path": "cesta adresy", - "send__confirm_sending": "ODESÍLÁNÍ ČÁSTKY", + "send__confirm_sending": "Odesílání částky", "send__from_multiple_accounts": "Odesílání z více účtů.", "send__including_fee": "Včetně poplatku:", "send__maximum_fee": "Maximální poplatek:", "send__receiving_to_multisig": "Příjem na adresách multisig.", - "send__title_confirm_sending": "POTVRDIT ODESLÁNÍ", - "send__title_joint_transaction": "SPOLEČNÁ TRANSAKCE", - "send__title_receiving_to": "PŘÍJEM", - "send__title_sending": "ODESÍLÁNÍ", - "send__title_sending_amount": "ODESÍLÁNÍ ČÁSTKY", - "send__title_sending_to": "ODESÍLÁNÍ", + "send__title_confirm_sending": "Potvrdit odeslání", + "send__title_joint_transaction": "Společná transakce", + "send__title_receiving_to": "Příjem", + "send__title_sending": "Odesílání", + "send__title_sending_amount": "Odesílání částky", + "send__title_sending_to": "Odesílání", "send__to_the_total_amount": "Do celkové částky:", "send__total_amount": "Celková částka:", "send__transaction_id": "ID transakce:", @@ -701,10 +701,10 @@ "share_words__words_in_order": " slova v pořadí.", "share_words__wrote_down_all": "Zapsal/a jsem si všechna ", "sign_message__bytes_template": "{0} bajtů", - "sign_message__confirm_address": "PODEPISOVÁNÍ ADRESY", - "sign_message__confirm_message": "POTVRDIT ZPRÁVU", + "sign_message__confirm_address": "Podepisování adresy", + "sign_message__confirm_message": "Potvrdit zprávu", "sign_message__message_size": "Velikost zprávy:", - "sign_message__verify_address": "OVĚŘIT ADRESU", + "sign_message__verify_address": "Ověřit adresu", "solana__account_index": "Index účtu", "solana__associated_token_account": "Přidružený tokenový účet", "solana__confirm_multisig": "Potvrďte multisig", @@ -786,10 +786,10 @@ "stellar__value_sha256": "Hodnota (SHA-256):", "stellar__wanna_clean_value_key_template": "Chcete vymazat klíč hodnoty {0}?", "stellar__your_account": " váš účet", - "storage_msg__verifying_pin": "OVĚŘOVÁNÍ PINU", - "storage_msg__processing": "ZPRACOVÁVÁNÍ", - "storage_msg__starting": "SPOUŠTĚNÍ", - "storage_msg__wrong_pin": "ŠPATNÝ PIN", + "storage_msg__verifying_pin": "Ověřování PINu", + "storage_msg__processing": "Zpracovávání", + "storage_msg__starting": "Spouštění", + "storage_msg__wrong_pin": "Špatný PIN", "tezos__baker_address": "Adresa bakera:", "tezos__balance": "Zůstatek:", "tezos__ballot": "Hlasování:", @@ -807,18 +807,18 @@ "tutorial__ready_to_use": "Nyní můžete\npoužívat Trezor.", "tutorial__scroll_down": "Když se text nevejde na jednu obrazovku, pravým tlačítkem posunete text dolů.\n\rLevým tlačítkem se posunete nahoru.", "tutorial__sure_you_want_skip": "Opravdu chcete\npřeskočit tutoriál?", - "tutorial__title_hello": "DOBRÝ DEN", - "tutorial__title_screen_scroll": "POSUNUTÍ OBRAZOVKY", - "tutorial__title_skip": "PŘESKOČIT TUTORIÁL", - "tutorial__title_tutorial_complete": "TUTORIÁL DOKONČEN", + "tutorial__title_hello": "Dobrý den", + "tutorial__title_screen_scroll": "Posunutí obrazovky", + "tutorial__title_skip": "Přeskočit tutoriál", + "tutorial__title_tutorial_complete": "Tutoriál dokončen", "tutorial__use_trezor": "Trezor použijete\nstisknutím levého a pravého tlačítka.\n\rPokračujte vpravo.", "tutorial__welcome_press_right": "Vítá vás Trezor. Pokračujte stisknutím pravého tlačítka.", "u2f__get": "Zvýšit a načíst čítač U2F?", "u2f__set_template": "Nastavit čítač U2F na {0}?", - "u2f__title_get": "ZÍSKAT ČÍTAČ U2F", - "u2f__title_set": "NASTAVIT ČÍTAČ U2F", + "u2f__title_get": "Získat čítač U2F", + "u2f__title_set": "Nastavit čítač U2F", "wipe__info": "Všechna data budou smazána.", - "wipe__title": "VYMAZAT ZAŘÍZENÍ", + "wipe__title": "Vymazat zařízení", "wipe__want_to_wipe": "Opravdu chcete vymazat zařízení?\n", "wipe_code__change": "Změnit kód pro vymazání?", "wipe_code__changed": "Kód pro vymazání změněn.", @@ -831,13 +831,13 @@ "wipe_code__mismatch": "Zadané kódy pro vymazání se neshodují.", "wipe_code__reenter": "Zopakujte kód vymazání", "wipe_code__reenter_to_confirm": "Potvrďte dalším zadáním kódu vymazání.", - "wipe_code__title_check": "ZKONT. KÓD VYMAZÁNÍ", - "wipe_code__title_invalid": "NESPRÁVNÝ KÓD PRO VYMAZÁNÍ", - "wipe_code__title_settings": "NAST. KÓDU VYMAZÁNÍ", + "wipe_code__title_check": "Zkont. kód vymazání", + "wipe_code__title_invalid": "Nesprávný kód pro vymazání", + "wipe_code__title_settings": "Nast. kódu vymazání", "wipe_code__turn_off": "Vypnout ochranu kódem pro vymazání?", "wipe_code__turn_on": "Zapnout ochranu kódem pro vymazání?", "wipe_code__wipe_code_mismatch": "Neshoda kódu vymazání", - "word_count__title": "POČET SLOV", + "word_count__title": "Počet slov", "words__account": "Účet", "words__account_colon": "Účet:", "words__address": "Adresa", @@ -865,15 +865,15 @@ "words__recipient": "Příjemce", "words__sign": "Podepsat", "words__signer": "Podepisující osoba", - "words__title_check": "ZKONTROLOVAT", - "words__title_group": "SKUPINA", - "words__title_information": "INFORMACE", - "words__title_remember": "ZAPAMATOVAT", - "words__title_share": "ČÁST", - "words__title_shares": "ČÁSTI", - "words__title_success": "HOTOVO", - "words__title_summary": "SOUHRN", - "words__title_threshold": "ČÁSTI PRO OBNOVU", + "words__title_check": "Zkontrolovat", + "words__title_group": "Skupina", + "words__title_information": "Informace", + "words__title_remember": "Zapamatovat", + "words__title_share": "Část", + "words__title_shares": "Části", + "words__title_success": "Hotovo", + "words__title_summary": "Souhrn", + "words__title_threshold": "Části pro obnovu", "words__unknown": "Neznámé", "words__warning": "Varování", "words__writable": "Zapisovatelné", diff --git a/core/translations/de.json b/core/translations/de.json index 86c6ddf0b4..93be067922 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -40,24 +40,24 @@ "addr_mismatch__wrong_derivation_path": "Ableitungspfad für gewähltes Konto falsch.", "addr_mismatch__xpub_mismatch": "XPUB passt nicht?", "address__public_key": "Public Key", - "address__title_cosigner": "MITUNTERZEICH.", - "address__title_receive_address": "EMPFÄNG-ADRESSE", - "address__title_yours": "DEINER", + "address__title_cosigner": "Mitunterzeich.", + "address__title_receive_address": "Empfäng-adresse", + "address__title_yours": "Deiner", "address_details__derivation_path": "Ableitungspfad:", - "address_details__title_receive_address": "EMPFÄNG-ADRESSE", - "address_details__title_receiving_to": "EMPFÄNGER", + "address_details__title_receive_address": "Empfäng-adresse", + "address_details__title_receiving_to": "Empfänger", "authenticate__confirm_template": "Darf verbundener Computer bestätigen, dass {0} echt ist?", "authenticate__header": "Gerät authentifizieren", "auto_lock__change_template": "Trezor nach {0} Inaktivität automatisch sperren?", - "auto_lock__title": "AUTO-LOCK-VERZÖGER.", + "auto_lock__title": "Auto-lock-verzöger.", "backup__can_back_up_anytime": "Du kannst deinen Trezor jederzeit einmalig sichern.", "backup__it_should_be_backed_up": "Du solltest jetzt dein neues Wallet sichern.", "backup__it_should_be_backed_up_now": "Es sollte jetzt gesichert werden!", "backup__new_wallet_created": "Neues Wallet wurde erstellt.", "backup__new_wallet_successfully_created": "Neues Wallet wurde erfolgreich erstellt.", "backup__recover_anytime": "Mit dem Backup kannst du immer dein Wallet wiederherstellen.", - "backup__title_backup_wallet": "WALLET-BACKUP", - "backup__title_skip": "BACKUP ÜBERSPRINGEN", + "backup__title_backup_wallet": "Wallet-backup", + "backup__title_skip": "Backup überspringen", "backup__want_to_skip": "Möchtest du das Backup wirklich überspringen?", "binance__buy": "Kaufen", "binance__confirm_cancel": "Abbrechen bestätigen", @@ -83,59 +83,59 @@ "bitcoin__new_fee_rate": "Neuer Gebührensatz:", "bitcoin__simple_send_of": "Einfaches Senden von", "bitcoin__ticket_amount": "Ticketbetrag:", - "bitcoin__title_confirm_details": "DETAILS BESTÄTIGEN", - "bitcoin__title_finalize_transaction": "TRANSAKTION ABSCHLIESSEN", - "bitcoin__title_high_mining_fee": "HOHE MINING-GEBÜHR", - "bitcoin__title_meld_transaction": "TRANSAKT. VEREINEN", - "bitcoin__title_modify_amount": "BETRAG ÄNDERN", - "bitcoin__title_payjoin": "PAYJOIN", - "bitcoin__title_proof_of_ownership": "EIGENTUMSNACHWEIS", - "bitcoin__title_purchase_ticket": "TICKET KAUFEN", - "bitcoin__title_update_transaction": "TRANSAKTION UPDATEN", + "bitcoin__title_confirm_details": "Details bestätigen", + "bitcoin__title_finalize_transaction": "Transaktion abschliessen", + "bitcoin__title_high_mining_fee": "Hohe mining-gebühr", + "bitcoin__title_meld_transaction": "Transakt. vereinen", + "bitcoin__title_modify_amount": "Betrag ändern", + "bitcoin__title_payjoin": "Payjoin", + "bitcoin__title_proof_of_ownership": "Eigentumsnachweis", + "bitcoin__title_purchase_ticket": "Ticket kaufen", + "bitcoin__title_update_transaction": "Transaktion updaten", "bitcoin__unknown_path": "Unbekannter Pfad", "bitcoin__unknown_transaction": "Unbekannte Transaktion", "bitcoin__unusually_high_fee": "Ungewöhnlich hohe Gebühr.", "bitcoin__unverified_external_inputs": "Die Transaktion enthält nicht verifizierte externe Eingaben.", "bitcoin__valid_signature": "Die Signatur ist gültig.", "bitcoin__voting_rights": "Stimmrechte an:", - "buttons__abort": "ABBRECHEN", - "buttons__access": "ZUGRIFF", - "buttons__again": "WIEDERHOLEN", - "buttons__allow": "ZULASSEN", - "buttons__back": "ZURÜCK", - "buttons__back_up": "SICHERN", - "buttons__cancel": "ABBRECHEN", - "buttons__change": "ÄNDERN", - "buttons__check": "PRÜFEN", - "buttons__check_again": "ERNEUT PRÜFEN", - "buttons__close": "SCHLIESSEN", - "buttons__confirm": "BESTÄTIGEN", - "buttons__continue": "WEITER", - "buttons__details": "DETAILS", - "buttons__enable": "AKTIVIEREN", - "buttons__enter": "EINGEBEN", - "buttons__enter_share": "SHARE EINGEBEN", - "buttons__export": "EXPORTIEREN", - "buttons__format": "FORMATIEREN", - "buttons__go_back": "ZURÜCK", - "buttons__hold_to_confirm": "Z. BEST. HALTEN", - "buttons__info": "INFO", - "buttons__install": "INSTALLIEREN", - "buttons__more_info": "WEITERE INFOS", + "buttons__abort": "Abbrechen", + "buttons__access": "Zugriff", + "buttons__again": "Wiederholen", + "buttons__allow": "Zulassen", + "buttons__back": "Zurück", + "buttons__back_up": "Sichern", + "buttons__cancel": "Abbrechen", + "buttons__change": "Ändern", + "buttons__check": "Prüfen", + "buttons__check_again": "Erneut prüfen", + "buttons__close": "Schliessen", + "buttons__confirm": "Bestätigen", + "buttons__continue": "Weiter", + "buttons__details": "Details", + "buttons__enable": "Aktivieren", + "buttons__enter": "Eingeben", + "buttons__enter_share": "Share eingeben", + "buttons__export": "Exportieren", + "buttons__format": "Formatieren", + "buttons__go_back": "Zurück", + "buttons__hold_to_confirm": "Z. best. halten", + "buttons__info": "Info", + "buttons__install": "Installieren", + "buttons__more_info": "Weitere infos", "buttons__ok_i_understand": "ICH VERSTEHE", - "buttons__purchase": "KAUFEN", - "buttons__quit": "BEENDEN", - "buttons__restart": "NEU STARTEN", - "buttons__retry": "WIEDERHOLEN", - "buttons__select": "AUSWÄHLEN", - "buttons__set": "FESTLEGEN", - "buttons__show_all": "ALLE ANZEIGEN", - "buttons__show_details": "DETAILS ANZ.", - "buttons__show_words": "WÖRTER ANZ.", - "buttons__skip": "ÜBSPR", - "buttons__try_again": "WIEDERHOLEN", - "buttons__turn_off": "DEAKTIVIEREN", - "buttons__turn_on": "AKTIVIEREN", + "buttons__purchase": "Kaufen", + "buttons__quit": "Beenden", + "buttons__restart": "Neu starten", + "buttons__retry": "Wiederholen", + "buttons__select": "Auswählen", + "buttons__set": "Festlegen", + "buttons__show_all": "Alle anzeigen", + "buttons__show_details": "Details anz.", + "buttons__show_words": "Wörter anz.", + "buttons__skip": "Übspr", + "buttons__try_again": "Wiederholen", + "buttons__turn_off": "Deaktivieren", + "buttons__turn_on": "Aktivieren", "cardano__addr_base": "Basis", "cardano__addr_enterprise": "Enterprise", "cardano__addr_legacy": "Veraltet", @@ -249,21 +249,21 @@ "coinjoin__do_not_disconnect": "Trenne deinen Trezor nicht!", "coinjoin__max_mining_fee": "Max. Mining-Gebühr", "coinjoin__max_rounds": "Max. Runden", - "coinjoin__title": "COINJOIN AUTORISIER.", - "coinjoin__title_do_not_disconnect": "TRENNE DEINEN TREZOR NICHT!", - "coinjoin__title_progress": "COINJOIN LÄUFT", + "coinjoin__title": "Coinjoin autorisier.", + "coinjoin__title_do_not_disconnect": "Trenne deinen trezor nicht!", + "coinjoin__title_progress": "Coinjoin läuft", "coinjoin__waiting_for_others": "Auf andere warten", "confirm_total__fee_rate": "Gebührensatz:", "confirm_total__sending_from_account": "Gesendet von Konto:", - "confirm_total__title_fee": "GEBÜHREN-INFO", - "confirm_total__title_sending_from": "GESENDET VON", + "confirm_total__title_fee": "Gebühren-info", + "confirm_total__title_sending_from": "Gesendet von", "debug__loading_seed": "Seed wird geladen", "debug__loading_seed_not_recommended": "Laden privater Seeds wird nicht empfohlen.", "device_name__change_template": "Gerätename in {0} ändern?", - "device_name__title": "GERÄTENAME", + "device_name__title": "Gerätename", "entropy__send": "Entropie wirklich senden?", - "entropy__title": "INTERNE ENTROPIE", - "entropy__title_confirm": "ENTROPIE BESTÄTIGEN", + "entropy__title": "Interne entropie", + "entropy__title_confirm": "Entropie bestätigen", "eos__about_to_sign_template": "Du bist dabei, {0} zu signieren.", "eos__action_name": "Aktionsname:", "eos__arbitrary_data": "Beliebige Daten", @@ -319,26 +319,26 @@ "ethereum__show_full_message": "Ganze zeigen", "ethereum__show_full_struct": "Ganze zeigen", "ethereum__sign_eip712": "EIP-712-Daten wirklich signieren?", - "ethereum__title_confirm_data": "DATEN BESTÄTIGEN", - "ethereum__title_confirm_domain": "DOMAIN BESTÄTIGEN", - "ethereum__title_confirm_message": "NACHR. BESTÄTIGEN", - "ethereum__title_confirm_struct": "STRUKTUR BESTÄTIGEN", - "ethereum__title_confirm_typed_data": "DATEN BESTÄTIGEN", - "ethereum__title_signing_address": "SIGNIERADRESSE", + "ethereum__title_confirm_data": "Daten bestätigen", + "ethereum__title_confirm_domain": "Domain bestätigen", + "ethereum__title_confirm_message": "Nachr. bestätigen", + "ethereum__title_confirm_struct": "Struktur bestätigen", + "ethereum__title_confirm_typed_data": "Daten bestätigen", + "ethereum__title_signing_address": "Signieradresse", "ethereum__units_template": "{0} Einheiten", "ethereum__unknown_token": "Ungültiger Token", "ethereum__valid_signature": "Die Signatur ist gültig.", - "ethereum__staking_stake": "STAKE", - "ethereum__staking_stake_address": "STAKING ADRESSE", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Staking adresse", "ethereum__staking_stake_intro": "ETH auf Everstake staken?", - "ethereum__staking_unstake": "ENTSTAKEN", + "ethereum__staking_unstake": "Entstaken", "ethereum__staking_unstake_intro": "ETH von Everstake entstaken?", - "ethereum__staking_claim": "EINLÖSEN", - "ethereum__staking_claim_address": "ADRESSE ZUM EINLÖSEN", + "ethereum__staking_claim": "Einlösen", + "ethereum__staking_claim_address": "Adresse zum einlösen", "ethereum__staking_claim_intro": "ETH von Everstake einlösen?", "experimental_mode__enable": "Experimentelle Funktionen aktivieren?", "experimental_mode__only_for_dev": "Nur für Entwicklung und Beta-Tests.", - "experimental_mode__title": "EXPERIMENTIERMODUS", + "experimental_mode__title": "Experimentiermodus", "fido__already_registered": "Bereits registriert", "fido__device_already_registered": "Das Gerät ist bereits bei dieser Anwendung registriert.", "fido__device_already_registered_with_template": "Gerät ist bereits bei {0} registriert.", @@ -349,29 +349,29 @@ "fido__not_registered": "Nicht registriert", "fido__not_registered_with_template": "Dieses Gerät ist nicht registriert bei\n{0}.", "fido__please_enable_pin_protection": "Aktiviere den PIN-Schutz.", - "fido__title_authenticate": "FIDO2 AUTHENTIFIZ.", - "fido__title_import_credential": "DATEN IMPORTIEREN", - "fido__title_list_credentials": "DATEN AUFLISTEN", - "fido__title_register": "FIDO2 REGISTRIEREN", - "fido__title_remove_credential": "DATEN ENTFERNEN", - "fido__title_reset": "FIDO2 ZURÜCKSETZEN", - "fido__title_u2f_auth": "U2F AUTHENTIFIZIER.", - "fido__title_u2f_register": "U2F REGISTRIEREN", - "fido__title_verify_user": "FIDO2-NUTZER VERIF.", + "fido__title_authenticate": "FIDO2 authentifiz.", + "fido__title_import_credential": "Daten importieren", + "fido__title_list_credentials": "Daten auflisten", + "fido__title_register": "FIDO2 registrieren", + "fido__title_remove_credential": "Daten entfernen", + "fido__title_reset": "FIDO2 zurücksetzen", + "fido__title_u2f_auth": "U2F authentifizier.", + "fido__title_u2f_register": "U2F registrieren", + "fido__title_verify_user": "FIDO2-nutzer verif.", "fido__unable_to_verify_user": "Benutzer kann nicht verifiziert werden.", "fido__wanna_erase_credentials": "Möchtest du wirklich alle Daten löschen?", - "firmware_update__title": "FIRMWARE UPDATEN", - "firmware_update__title_fingerprint": "FW FINGERABDRUCK", + "firmware_update__title": "Firmware updaten", + "firmware_update__title_fingerprint": "Fw fingerabdruck", "homescreen__click_to_connect": "Zum Verbinden klicken", "homescreen__click_to_unlock": "Zum Entsperren klicken", - "homescreen__title_backup_failed": "BACKUP-FEHLER", - "homescreen__title_backup_needed": "BACKUP ERFORDERLICH", - "homescreen__title_coinjoin_authorized": "COINJOIN AUTORIS.", - "homescreen__title_experimental_mode": "EXPERIMENTIERMODUS", - "homescreen__title_no_usb_connection": "KEIN USB-ANSCHLUSS", - "homescreen__title_pin_not_set": "PIN NICHT VERGEBEN", - "homescreen__title_seedless": "OHNE SEED", - "homescreen__title_set": "START-SCREEN ÄNDERN", + "homescreen__title_backup_failed": "Backup-fehler", + "homescreen__title_backup_needed": "Backup erforderlich", + "homescreen__title_coinjoin_authorized": "Coinjoin autoris.", + "homescreen__title_experimental_mode": "Experimentiermodus", + "homescreen__title_no_usb_connection": "Kein usb-anschluss", + "homescreen__title_pin_not_set": "PIN nicht vergeben", + "homescreen__title_seedless": "Ohne seed", + "homescreen__title_set": "Start-screen ändern", "inputs__back": "ZURÜCK", "inputs__cancel": "ABBRECHEN", "inputs__delete": "LÖSCHEN", @@ -380,30 +380,30 @@ "inputs__return": "ZURÜCK", "inputs__show": "ANZEIGEN", "inputs__space": "LEER", - "joint__title": "GEMEINS. TRANSAKT.", + "joint__title": "Gemeins. transakt.", "joint__to_the_total_amount": "Gesamtbetrag:", "joint__you_are_contributing": "Dein Anteil:", "language__change_to_template": "Sprache in {0} ändern?", "language__changed": "Die Sprache änderte sich erfolgreich", "language__progress": "Sprache ändern", - "language__title": "SPRACHEINSTELLUNG.", + "language__title": "Spracheinstellung.", "lockscreen__tap_to_connect": "Zum Verbinden tippen", "lockscreen__tap_to_unlock": "Zum Entsperren tippen", - "lockscreen__title_locked": "GESPERRT", - "lockscreen__title_not_connected": "NICHT VERBUNDEN", + "lockscreen__title_locked": "Gesperrt", + "lockscreen__title_not_connected": "Nicht verbunden", "misc__decrypt_value": "Wert entschlüsseln", "misc__encrypt_value": "Wert verschlüsseln", - "misc__title_suite_labeling": "SUITE-LABELING", + "misc__title_suite_labeling": "Suite-labeling", "modify_amount__decrease_amount": "Betrag reduzieren um:", "modify_amount__increase_amount": "Betrag erhöhen um:", "modify_amount__new_amount": "Neuer Betrag:", - "modify_amount__title": "BETRAG ÄNDERN", + "modify_amount__title": "Betrag ändern", "modify_fee__decrease_fee": "Gebühr reduzieren um:", "modify_fee__fee_rate": "Gebührensatz:", "modify_fee__increase_fee": "Gebühr erhöhen um:", "modify_fee__new_transaction_fee": "Neue Transak.-Gebühr:", "modify_fee__no_change": "Gebühr nicht geändert.", - "modify_fee__title": "GEBÜHR ÄNDERN", + "modify_fee__title": "Gebühr ändern", "modify_fee__transaction_fee": "Transaktionsgebühr:", "monero__confirm_export": "Export bestätigen", "monero__confirm_ki_sync": "KI-Sync bestätigen", @@ -482,11 +482,11 @@ "passphrase__next_screen_will_show_passphrase": "Passphrase wird auf dem nächsten Bildschirm angezeigt.", "passphrase__please_enter": "Gib deine Passphrase ein.", "passphrase__revoke_on_device": "Möchtest du die Passphrase auf dem Gerät widerrufen?", - "passphrase__title_confirm": "PASSPHR. BESTÄTIGEN", - "passphrase__title_enter": "PASSPHRASE EINGEBEN", - "passphrase__title_hide": "PASSPHR. AUSBLENDEN", - "passphrase__title_settings": "PASSPHRASEN-EINST.", - "passphrase__title_source": "PASSPHRASEN-QUELLE", + "passphrase__title_confirm": "Passphr. bestätigen", + "passphrase__title_enter": "Passphrase eingeben", + "passphrase__title_hide": "Passphr. ausblenden", + "passphrase__title_settings": "Passphrasen-einst.", + "passphrase__title_source": "Passphrasen-quelle", "passphrase__turn_off": "Passphrasenschutz deaktivieren?", "passphrase__turn_on": "Passphrasenschutz aktivieren?", "pin__change": "PIN ändern?", @@ -507,9 +507,9 @@ "pin__reenter_new": "Neue PIN neu eingeben", "pin__reenter_to_confirm": "Gib die PIN zur Bestätigung erneut ein.", "pin__should_be_long": "PIN sollte aus 4-50 Ziffern bestehen.", - "pin__title_check_pin": "PIN PRÜFEN", - "pin__title_settings": "PIN-EINSTELLUNGEN", - "pin__title_wrong_pin": "FALSCHE PIN", + "pin__title_check_pin": "PIN prüfen", + "pin__title_settings": "PIN-einstellungen", + "pin__title_wrong_pin": "Falsche PIN", "pin__tries_left": "übrig", "pin__turn_off": "Möchtest du den PIN-Schutz wirklich deaktivieren?", "pin__turn_on": "PIN-Schutz aktivieren?", @@ -528,14 +528,14 @@ "progress__loading_transaction": "Transakt. lädt...", "progress__locking_device": "Das Gerät sperren...", "progress__one_second_left": "1 Sekunde verbleibend", - "progress__please_wait": "BITTE WARTEN", + "progress__please_wait": "Bitte warten", "progress__refreshing": "Wird aktualisiert...", "progress__signing_transaction": "Transakt. wird signiert", "progress__syncing": "Wird synchronisiert...", "progress__x_seconds_left_template": "Noch {0} Sekunden", "reboot_to_bootloader__just_a_moment": "Einen Augenblick...", "reboot_to_bootloader__restart": "Trezor wird im Bootloader-Modus neu gestartet.", - "reboot_to_bootloader__title": "ZUM BOOTLOADER", + "reboot_to_bootloader__title": "Zum bootloader", "reboot_to_bootloader__version_by_template": "Firmware-Version {0}\nvon {1}", "recovery__cancel_dry_run": "Backup-Überprüfung abbrechen", "recovery__check_dry_run": "Backup überprüfen?", @@ -560,18 +560,18 @@ "recovery__share_already_entered": "Share wurde bereits eingegeben", "recovery__share_from_another_shamir": "Share eines anderen Shamir-Backups eingegeben.", "recovery__share_num_template": "Share {0}", - "recovery__title": "WALLET WIEDERHERST.", - "recovery__title_cancel_dry_run": "BACKUP-CHECK ABBR.", - "recovery__title_cancel_recovery": "WIEDERHERST. ABBR.", - "recovery__title_dry_run": "BACKUP-ÜBERPRÜFUNG", - "recovery__title_recover": "WALLET WIEDERHERST.", - "recovery__title_remaining_shares": "VERBLEIBENDE SHARES", + "recovery__title": "Wallet wiederherst.", + "recovery__title_cancel_dry_run": "Backup-check abbr.", + "recovery__title_cancel_recovery": "Wiederherst. abbr.", + "recovery__title_dry_run": "Backup-überprüfung", + "recovery__title_recover": "Wallet wiederherst.", + "recovery__title_remaining_shares": "Verbleibende shares", "recovery__type_word_x_of_y_template": "Tippe Wort {0} von {1}", "recovery__wallet_recovered": "Wallet-Wiederherstell. erfolgreich", "recovery__wanna_cancel_dry_run": "Möchtest du die Backup-Überprüfung wirklich abbrechen?", "recovery__wanna_cancel_recovery": "Möchtest du die Wiederherstellung wirklich abbrechen?", "recovery__word_count_template": "({0} Wörter)", - "recovery__word_x_of_y_template": "WORT {0} VON {1}", + "recovery__word_x_of_y_template": "Wort {0} von {1}", "recovery__x_more_items_starting_template_plural": "{count} mehr {plural} gestartet", "recovery__x_more_shares_needed_template_plural": "{count} mehr {plural} erforderlich.", "recovery__x_of_y_entered_template": "{0} von {1} Shares erfolgreich eingegeben.", @@ -579,13 +579,13 @@ "reset__advanced_group_threshold_info": "Die Gruppenschwelle zeigt die nötige Anzahl der Gruppen zur Wallet-Wiederherstell.", "reset__all_x_of_y_template": "alle {0} der {1} Shares", "reset__any_x_of_y_template": "{0} der {1} Shares", - "reset__button_create": "WALLET ERST.", - "reset__button_recover": "WALLET WIEDER.", + "reset__button_create": "Wallet erst.", + "reset__button_recover": "Wallet wieder.", "reset__by_continuing": "Du stimmst den Geschäftsbedingungen von Trezor Company zu.", - "reset__check_backup_title": "BACKUP ÜBERPRÜFEN", - "reset__check_group_share_title_template": "G{0}-SHARE {1} PRÜFEN", - "reset__check_wallet_backup_title": "SEED ÜBERPRÜFEN", - "reset__check_share_title_template": "SHARE #{0} PRÜFEN", + "reset__check_backup_title": "Backup überprüfen", + "reset__check_group_share_title_template": "G{0}-share {1} prüfen", + "reset__check_wallet_backup_title": "Seed überprüfen", + "reset__check_share_title_template": "Share #{0} prüfen", "reset__continue_with_next_share": "Fahre mit dem nächsten Share fort.", "reset__continue_with_share_template": "Fahre mit Share #{0} fort.", "reset__finished_verifying_group_template": "Verifizierung deiner Recovery Shares für Gruppe {0} ist abgeschlossen.", @@ -594,7 +594,7 @@ "reset__group_description": "Eine Gruppe besteht aus Recovery Shares.", "reset__group_info": "Jede Gruppe hat eine feste Share-Anzahl und eine eigene Schwelle. Als nächstes legst du die Anzahl der Shares und die Schwellen fest. In den nächsten Schritten legst du die Anzahl der Shares und die Schwellen fest.", "reset__group_share_checked_successfully_template": "Gruppe {0} - Share {1} erfolgreich geprüft.", - "reset__group_share_title_template": "GRUPPE {0} - SHARE {1}", + "reset__group_share_title_template": "Gruppe {0} - share {1}", "reset__more_info_at": "Weitere Infos unter", "reset__need_all_share_template": "Alle {0} Shares zur Wiederherstellung nötig", "reset__need_any_share_template": "Du benötigst {0} Shares zur Wiederherstellung.", @@ -608,15 +608,15 @@ "reset__number_of_shares_info": "= Gesamtzahl eindeutiger Wortlisten für Wallet-Backup.", "reset__one_share": "1 Share", "reset__only_one_share_will_be_created": "Es wird nur ein Share erstellt.", - "reset__recovery_wallet_backup_title": "RECOVERY SEED", - "reset__recovery_share_title_template": "RECOVERY SHARE #{0}", + "reset__recovery_wallet_backup_title": "Recovery seed", + "reset__recovery_share_title_template": "Recovery share #{0}", "reset__required_number_of_groups": "Zur Wiederherstellung erforderliche Anzahl von Gruppen.", "reset__select_correct_word": "Wähle für jede Position das richtige Wort.", - "reset__select_word_template": "{0} WORT AUSWÄHLEN", + "reset__select_word_template": "{0} wort auswählen", "reset__select_word_x_of_y_template": "Wort {0} von {1}:", "reset__set_it_to_count_template": "Bei {0} benötigst du ", "reset__share_checked_successfully_template": "Recovery Share #{0} erfolgreich geprüft.", - "reset__share_words_title": "STANDARD-BACKUP", + "reset__share_words_title": "Standard-backup", "reset__slip39_checklist_num_groups": "Anzahl der Gruppen", "reset__slip39_checklist_num_shares": "Anzahl der Shares", "reset__slip39_checklist_set_num_groups": "Gruppenanzahl wählen", @@ -624,21 +624,21 @@ "reset__slip39_checklist_set_sizes": "Größen und Schwellen festlegen", "reset__slip39_checklist_set_sizes_longer": "Größe und Schwelle für jede Gruppe festlegen", "reset__slip39_checklist_set_threshold": "Schwelle festlegen", - "reset__slip39_checklist_title": "BACKUP-CHECKLISTE", + "reset__slip39_checklist_title": "Backup-checkliste", "reset__slip39_checklist_write_down": "Alle Shares notieren und prüfen", "reset__slip39_checklist_write_down_recovery": "Alle Recovery Shares notieren und prüfen", "reset__the_threshold_sets_the_number_of_shares": "Die Schwelle bestimmt die Anzahl der Shares ", "reset__threshold_info": "= Mindestanzahl eindeutiger Wortlisten für Wiederherstellung.", - "reset__title_backup_is_done": "BACKUP FERTIG", - "reset__title_create_wallet": "WALLET ERSTELLEN", - "reset__title_create_wallet_shamir": "WALLET ERSTELLEN (SHAMIR)", - "reset__title_group_threshold": "GRUPPENSCHWELLE", - "reset__title_number_of_groups": "ANZAHL DER GRUPPEN", - "reset__title_number_of_shares": "ANZAHL SHARES", - "reset__title_set_group_threshold": "GRUPP.-SCHW. WÄHLEN", - "reset__title_set_number_of_groups": "ANZAHL DER GRUPPEN", - "reset__title_set_number_of_shares": "ANZAHL DER SHARES", - "reset__title_set_threshold": "SCHWELLE FESTLEGEN", + "reset__title_backup_is_done": "Backup fertig", + "reset__title_create_wallet": "Wallet erstellen", + "reset__title_create_wallet_shamir": "Wallet erstellen (shamir)", + "reset__title_group_threshold": "Gruppenschwelle", + "reset__title_number_of_groups": "Anzahl der gruppen", + "reset__title_number_of_shares": "Anzahl shares", + "reset__title_set_group_threshold": "Grupp.-schw. wählen", + "reset__title_set_number_of_groups": "Anzahl der gruppen", + "reset__title_set_number_of_shares": "Anzahl der shares", + "reset__title_set_threshold": "Schwelle festlegen", "reset__to_form_group_template": "zur Bildung von Gruppe {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Wähle die Share-Anzahl in Gruppe {0}.", @@ -653,13 +653,13 @@ "rotation__east": "Osten", "rotation__north": "Norden", "rotation__south": "Süden", - "rotation__title_change": "DREHUNG ÄNDERN", + "rotation__title_change": "Drehung ändern", "rotation__west": "Westen", "safety_checks__approve_unsafe_always": "Trezor erlaubt dir, einige Aktionen zu genehmigen, die unsicher sein könnten.", "safety_checks__approve_unsafe_temporary": "Trezor erlaubt kurzzeitig die Genehmigung potenziell unsicherer Aktionen.", "safety_checks__enforce_strict": "Strenge Sicherheitsprüfungen wirklich erzwingen (empfohlen)?", - "safety_checks__title": "SICHERHEITSCHECKS", - "safety_checks__title_safety_override": "SICHERH.-ÜBERSCHR.", + "safety_checks__title": "Sicherheitschecks", + "safety_checks__title_safety_override": "Sicherh.-überschr.", "sd_card__all_data_will_be_lost": "Alle Daten auf der SD-Karte gehen verloren.", "sd_card__card_required": "SD-Karte erforderlich.", "sd_card__disable": "Möchtest du den SD-Kartenschutz wirklich vom Gerät entfernen?", @@ -675,25 +675,25 @@ "sd_card__refresh": "Aktuelles SD-Kartengeheimnis wirklich durch neu generiertes ersetzen?", "sd_card__refreshed": "Du hast den SD-Schutz erfolgreich aktualisiert.", "sd_card__restart": "Möchtest du Trezor im Bootloader-Modus neu starten?", - "sd_card__title": "SD-KARTENSCHUTZ", - "sd_card__title_problem": "SD-KARTENPROBLEM", + "sd_card__title": "SD-kartenschutz", + "sd_card__title_problem": "SD-kartenproblem", "sd_card__unknown_filesystem": "Unbekanntes Dateisystem.", "sd_card__unplug_and_insert_correct": "Trenne das Gerät und lege die richtige SD-Karte ein.", "sd_card__use_different_card": "Verwende eine andere Karte oder formatiere die SD-Karte mit dem FAT32-Dateisystem.", "sd_card__wanna_format": "Möchtest du die SD-Karte wirklich formatieren?", "sd_card__wrong_sd_card": "Falsche SD-Karte.", "send__address_path": "Adressenpfad", - "send__confirm_sending": "BETRAG SENDEN", + "send__confirm_sending": "Betrag senden", "send__from_multiple_accounts": "Von mehreren Konten gesendet.", "send__including_fee": "Einschließ. Gebühr:", "send__maximum_fee": "Max. Gebühr:", "send__receiving_to_multisig": "Von Multisig-Adresse empfangen.", - "send__title_confirm_sending": "SENDEN BESTÄTIGEN", - "send__title_joint_transaction": "GEMEINS. TRANSAKT.", - "send__title_receiving_to": "EMPFÄNGER", - "send__title_sending": "SENDEN", - "send__title_sending_amount": "BETRAG SENDEN", - "send__title_sending_to": "SENDEN AN", + "send__title_confirm_sending": "Senden bestätigen", + "send__title_joint_transaction": "Gemeins. transakt.", + "send__title_receiving_to": "Empfänger", + "send__title_sending": "Senden", + "send__title_sending_amount": "Betrag senden", + "send__title_sending_to": "Senden an", "send__to_the_total_amount": "Gesamtbetrag:", "send__total_amount": "Gesamtbetrag:", "send__transaction_id": "Transaktions-ID:", @@ -701,10 +701,10 @@ "share_words__words_in_order": " Wörter der Reihe nach notiert.", "share_words__wrote_down_all": "Ich habe alle ", "sign_message__bytes_template": "{0} Bytes", - "sign_message__confirm_address": "SIGNIERADRESSE", - "sign_message__confirm_message": "NACHR. BESTÄTIGEN", + "sign_message__confirm_address": "Signieradresse", + "sign_message__confirm_message": "Nachr. bestätigen", "sign_message__message_size": "Größe der Nachricht:", - "sign_message__verify_address": "ADRESSE VERIFIZIEREN", + "sign_message__verify_address": "Adresse verifizieren", "solana__account_index": "Konto-Index", "solana__associated_token_account": "Zugehöriges Token-Konto", "solana__confirm_multisig": "Multisig bestätigen", @@ -786,10 +786,10 @@ "stellar__value_sha256": "Wert (SHA-256):", "stellar__wanna_clean_value_key_template": "Möchtest du den Wert-Key {0} löschen?", "stellar__your_account": " dein Konto", - "storage_msg__verifying_pin": "PIN ÜBERPRÜFEN", - "storage_msg__processing": "VERARBEITUNG", - "storage_msg__starting": "STARTVORGANG", - "storage_msg__wrong_pin": "FALSCHER PIN", + "storage_msg__verifying_pin": "PIN überprüfen", + "storage_msg__processing": "Verarbeitung", + "storage_msg__starting": "Startvorgang", + "storage_msg__wrong_pin": "Falscher PIN", "tezos__baker_address": "Baker-Adresse:", "tezos__balance": "Guthaben:", "tezos__ballot": "Abstimmung:", @@ -807,18 +807,18 @@ "tutorial__ready_to_use": "Du kannst jetzt\nTrezor verwenden.", "tutorial__scroll_down": "Drücke rechts, um nach unten zu scrollen und alles zu lesen, wenn der Text nicht auf einen Bildschirm passt.\n\rDrücke links, um nach oben zu scrollen.", "tutorial__sure_you_want_skip": "Möchtest du das Tutorial\nwirklich überspringen?", - "tutorial__title_hello": "HALLO", - "tutorial__title_screen_scroll": "BILDSCHIRM SCROLLEN", - "tutorial__title_skip": "TUTORIAL ÜBERSPR.", - "tutorial__title_tutorial_complete": "TUTORIAL BEENDET", + "tutorial__title_hello": "Hallo", + "tutorial__title_screen_scroll": "Bildschirm scrollen", + "tutorial__title_skip": "Tutorial überspr.", + "tutorial__title_tutorial_complete": "Tutorial beendet", "tutorial__use_trezor": "Verwende Trezor durch\ndrücken der linken und rechten Tasten.\n\rWeiter rechts.", "tutorial__welcome_press_right": "Willkommen bei Trezor. Drücke rechts, um fortzufahren.", "u2f__get": "U2F-Zähler erhöhen und abrufen?", "u2f__set_template": "U2F-Zähler auf {0} setzen?", - "u2f__title_get": "U2F-ZÄHLER ERHALTEN", - "u2f__title_set": "U2F-ZÄHLER WÄHLEN", + "u2f__title_get": "U2F-zähler erhalten", + "u2f__title_set": "U2F-zähler wählen", "wipe__info": "Alle Daten werden gelöscht.", - "wipe__title": "GERÄT LÖSCHEN", + "wipe__title": "Gerät löschen", "wipe__want_to_wipe": "Möchtest du die Gerätedaten wirklich löschen?\n", "wipe_code__change": "Löschcode ändern?", "wipe_code__changed": "Löschcode geändert.", @@ -831,13 +831,13 @@ "wipe_code__mismatch": "Die Löschcodes stimmen nicht überein.", "wipe_code__reenter": "Löschcode neu wählen", "wipe_code__reenter_to_confirm": "Gib den Löschcode zur Bestätigung erneut ein.", - "wipe_code__title_check": "LÖSCHCODE PRÜFEN", - "wipe_code__title_invalid": "UNGÜLTIGER LÖSCHCODE", - "wipe_code__title_settings": "LÖSCHCODE-EINSTELL.", + "wipe_code__title_check": "Löschcode prüfen", + "wipe_code__title_invalid": "Ungültiger löschcode", + "wipe_code__title_settings": "Löschcode-einstell.", "wipe_code__turn_off": "Löschcode-Schutz deaktivieren?", "wipe_code__turn_on": "Löschcode-Schutz aktivieren?", "wipe_code__wipe_code_mismatch": "Löschcode-Konflikt", - "word_count__title": "ANZAHL DER WÖRTER", + "word_count__title": "Anzahl der wörter", "words__account": "Konto", "words__account_colon": "Konto:", "words__address": "Adresse", @@ -865,15 +865,15 @@ "words__recipient": "Empfänger", "words__sign": "Signieren", "words__signer": "Unterzeichner", - "words__title_check": "PRÜFEN", - "words__title_group": "GRUPPE", - "words__title_information": "INFORMATIONEN", - "words__title_remember": "ERINNERUNG", - "words__title_share": "SHARE", - "words__title_shares": "SHARES", - "words__title_success": "ERFOLG", - "words__title_summary": "ZUSAMMENFASSUNG", - "words__title_threshold": "SCHWELLE", + "words__title_check": "Prüfen", + "words__title_group": "Gruppe", + "words__title_information": "Informationen", + "words__title_remember": "Erinnerung", + "words__title_share": "Share", + "words__title_shares": "Shares", + "words__title_success": "Erfolg", + "words__title_summary": "Zusammenfassung", + "words__title_threshold": "Schwelle", "words__unknown": "Unbekannt", "words__warning": "Warnung", "words__writable": "Beschreibbar", diff --git a/core/translations/es.json b/core/translations/es.json index cf4b06e4ce..b8f366d71a 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -40,24 +40,24 @@ "addr_mismatch__wrong_derivation_path": "Cuenta seleccionada: Derivación incorrecta", "addr_mismatch__xpub_mismatch": "¿La XPUB no coincide?", "address__public_key": "Clave pública", - "address__title_cosigner": "COFIRMANTE", - "address__title_receive_address": "DIRECCIÓN DESTINO", - "address__title_yours": "TUYO", + "address__title_cosigner": "Cofirmante", + "address__title_receive_address": "Dirección destino", + "address__title_yours": "Tuyo", "address_details__derivation_path": "Ruta de derivación:", - "address_details__title_receive_address": "DIRECCIÓN DESTINO", - "address_details__title_receiving_to": "RECIBIR EN", + "address_details__title_receive_address": "Dirección destino", + "address_details__title_receiving_to": "Recibir en", "authenticate__confirm_template": "¿Confirmar con el ordenador conectado que tu {0} es original?", "authenticate__header": "Autenticar dispositivo", "auto_lock__change_template": "¿Autobloquear tras {0} de inactividad?", - "auto_lock__title": "TIEMPO AUTOBLOQUEO.", + "auto_lock__title": "Tiempo autobloqueo.", "backup__can_back_up_anytime": "Puedes hacer una copia de seguridad del Trezor cuando quieras.", "backup__it_should_be_backed_up": "El monedero precisa una copia de seguridad.", "backup__it_should_be_backed_up_now": "Se precisa una copia de seguridad.", "backup__new_wallet_created": "Se ha creado un nuevo monedero.", "backup__new_wallet_successfully_created": "Se ha creado un nuevo monedero.", "backup__recover_anytime": "La copia de seguridad permite recuperar siempre el monedero.", - "backup__title_backup_wallet": "C. SEG. MONEDERO", - "backup__title_skip": "OMITIR C. SEG.", + "backup__title_backup_wallet": "C. seg. monedero", + "backup__title_skip": "Omitir c. seg.", "backup__want_to_skip": "¿Quieres omitir la copia de seguridad?", "binance__buy": "Comprar", "binance__confirm_cancel": "Confirmar cancelación", @@ -83,59 +83,59 @@ "bitcoin__new_fee_rate": "Nueva comisión:", "bitcoin__simple_send_of": "Envío sencillo de", "bitcoin__ticket_amount": "Importe del ticket:", - "bitcoin__title_confirm_details": "VALIDAR DETALLES", - "bitcoin__title_finalize_transaction": "FINALIZAR TRANSACCIÓN", - "bitcoin__title_high_mining_fee": "ALTA TASA MINERÍA", - "bitcoin__title_meld_transaction": "COMBINAR TRANSACC.", - "bitcoin__title_modify_amount": "MODIFICAR IMPORTE", - "bitcoin__title_payjoin": "PAYJOIN", - "bitcoin__title_proof_of_ownership": "PRUEBA PROPIEDAD", - "bitcoin__title_purchase_ticket": "TICKET COMPRA", - "bitcoin__title_update_transaction": "REFRESCAR TRANSACC.", + "bitcoin__title_confirm_details": "Validar detalles", + "bitcoin__title_finalize_transaction": "Finalizar transacción", + "bitcoin__title_high_mining_fee": "Alta tasa minería", + "bitcoin__title_meld_transaction": "Combinar transacc.", + "bitcoin__title_modify_amount": "Modificar importe", + "bitcoin__title_payjoin": "Payjoin", + "bitcoin__title_proof_of_ownership": "Prueba propiedad", + "bitcoin__title_purchase_ticket": "Ticket compra", + "bitcoin__title_update_transaction": "Refrescar transacc.", "bitcoin__unknown_path": "Ruta desconocida", "bitcoin__unknown_transaction": "Transacc. desconocida", "bitcoin__unusually_high_fee": "Comisión inusualmente alta.", "bitcoin__unverified_external_inputs": "La transacción contiene entradas externas sin verificar.", "bitcoin__valid_signature": "La firma es válida.", "bitcoin__voting_rights": "Derechos de voto de:", - "buttons__abort": "ABORTAR", - "buttons__access": "ACCEDER", - "buttons__again": "DE NUEVO", - "buttons__allow": "PERMITIR", - "buttons__back": "ATRÁS", - "buttons__back_up": "C. SEG.", - "buttons__cancel": "CANCELAR", - "buttons__change": "CAMBIAR", - "buttons__check": "REVISAR", - "buttons__check_again": "RECOMPROBAR", - "buttons__close": "CERRAR", - "buttons__confirm": "VALIDAR", - "buttons__continue": "CONTINUAR", - "buttons__details": "DETALLES", - "buttons__enable": "ACTIVAR", - "buttons__enter": "INTRODUCIR", - "buttons__enter_share": "INTR. REC-COMP.", - "buttons__export": "EXPORTAR", - "buttons__format": "FORMATEAR", - "buttons__go_back": "ATRÁS", - "buttons__hold_to_confirm": "CONF. PULSANDO", - "buttons__info": "INFO", - "buttons__install": "INSTALAR ", - "buttons__more_info": "MÁS INFO", + "buttons__abort": "Abortar", + "buttons__access": "Acceder", + "buttons__again": "De nuevo", + "buttons__allow": "Permitir", + "buttons__back": "Atrás", + "buttons__back_up": "C. seg.", + "buttons__cancel": "Cancelar", + "buttons__change": "Cambiar", + "buttons__check": "Revisar", + "buttons__check_again": "Recomprobar", + "buttons__close": "Cerrar", + "buttons__confirm": "Validar", + "buttons__continue": "Continuar", + "buttons__details": "Detalles", + "buttons__enable": "Activar", + "buttons__enter": "Introducir", + "buttons__enter_share": "Intr. rec-comp.", + "buttons__export": "Exportar", + "buttons__format": "Formatear", + "buttons__go_back": "Atrás", + "buttons__hold_to_confirm": "Conf. pulsando", + "buttons__info": "Info", + "buttons__install": "Instalar ", + "buttons__more_info": "Más info", "buttons__ok_i_understand": "LO ENTIENDO", - "buttons__purchase": "COMPRAR", - "buttons__quit": "SALIR", - "buttons__restart": "REINICIAR", - "buttons__retry": "REINTENTAR", - "buttons__select": "SELECCIONAR", - "buttons__set": "AJUSTAR", - "buttons__show_all": "MOSTRAR TODO", - "buttons__show_details": "MOSTRAR TODO", - "buttons__show_words": "MOSTRAR PALAB.", - "buttons__skip": "OMITIR", - "buttons__try_again": "REINTENTAR", - "buttons__turn_off": "APAGAR", - "buttons__turn_on": "ENCENDER", + "buttons__purchase": "Comprar", + "buttons__quit": "Salir", + "buttons__restart": "Reiniciar", + "buttons__retry": "Reintentar", + "buttons__select": "Seleccionar", + "buttons__set": "Ajustar", + "buttons__show_all": "Mostrar todo", + "buttons__show_details": "Mostrar todo", + "buttons__show_words": "Mostrar palab.", + "buttons__skip": "Omitir", + "buttons__try_again": "Reintentar", + "buttons__turn_off": "Apagar", + "buttons__turn_on": "Encender", "cardano__addr_base": "Base", "cardano__addr_enterprise": "Enterprise", "cardano__addr_legacy": "Legacy", @@ -249,21 +249,21 @@ "coinjoin__do_not_disconnect": "¡No desconectes el Trezor!", "coinjoin__max_mining_fee": "Tasa máxima de minería", "coinjoin__max_rounds": "Número máx. rondas", - "coinjoin__title": "AUTORIZAR COINJOIN", - "coinjoin__title_do_not_disconnect": "¡NO DESCONECTES EL TREZOR!", - "coinjoin__title_progress": "COINJOIN EN CURSO", + "coinjoin__title": "Autorizar coinjoin", + "coinjoin__title_do_not_disconnect": "¡No desconectes el trezor!", + "coinjoin__title_progress": "Coinjoin en curso", "coinjoin__waiting_for_others": "Esperando a los demás", "confirm_total__fee_rate": "Comisión:", "confirm_total__sending_from_account": "Envío desde cuenta:", - "confirm_total__title_fee": "INFO. COMISIÓN", - "confirm_total__title_sending_from": "ENVÍO DESDE", + "confirm_total__title_fee": "Info. comisión", + "confirm_total__title_sending_from": "Envío desde", "debug__loading_seed": "Cargando semilla", "debug__loading_seed_not_recommended": "No recomendado: cargar semilla privada.", "device_name__change_template": "¿Cambiar el nombre del dispositivo a {0}?", - "device_name__title": "NOMBRE DISPOSITIVO", + "device_name__title": "Nombre dispositivo", "entropy__send": "¿Quieres enviar la entropía?", - "entropy__title": "ENTROPÍA INTERNA", - "entropy__title_confirm": "VALIDAR ENTROPÍA", + "entropy__title": "Entropía interna", + "entropy__title_confirm": "Validar entropía", "eos__about_to_sign_template": "Estás a punto de firmar {0}.", "eos__action_name": "Nombre de acción:", "eos__arbitrary_data": "Datos arbitrarios", @@ -319,26 +319,26 @@ "ethereum__show_full_message": "Ver mensaje íntegro.", "ethereum__show_full_struct": "Ver estruct. íntegra.", "ethereum__sign_eip712": "¿Quieres firmar los datos EIP-712?", - "ethereum__title_confirm_data": "VALIDAR DATOS", - "ethereum__title_confirm_domain": "VALIDAR DOMINIO", - "ethereum__title_confirm_message": "VALIDAR MENSAJE", - "ethereum__title_confirm_struct": "VALIDAR ESTRUCTURA", - "ethereum__title_confirm_typed_data": "VALIDAR DATOS", - "ethereum__title_signing_address": "DIRECCIÓN FIRMA", + "ethereum__title_confirm_data": "Validar datos", + "ethereum__title_confirm_domain": "Validar dominio", + "ethereum__title_confirm_message": "Validar mensaje", + "ethereum__title_confirm_struct": "Validar estructura", + "ethereum__title_confirm_typed_data": "Validar datos", + "ethereum__title_signing_address": "Dirección firma", "ethereum__units_template": "{0} unidades", "ethereum__unknown_token": "Token desconocido", "ethereum__valid_signature": "La firma es válida.", - "ethereum__staking_stake": "HACER STAKE", - "ethereum__staking_stake_address": "DIRECCIÓN DE STAKE", + "ethereum__staking_stake": "Hacer stake", + "ethereum__staking_stake_address": "Dirección de stake", "ethereum__staking_stake_intro": "¿Hacer stake de ETH en Everstake?", - "ethereum__staking_unstake": "RETIRAR STAKE", + "ethereum__staking_unstake": "Retirar stake", "ethereum__staking_unstake_intro": "¿Retirar ETH de Everstake?", - "ethereum__staking_claim": "RECLAMAR", - "ethereum__staking_claim_address": "DIR. DE RECLAMO", + "ethereum__staking_claim": "Reclamar", + "ethereum__staking_claim_address": "Dir. de reclamo", "ethereum__staking_claim_intro": "¿Reclamar ETH de Everstake?", "experimental_mode__enable": "¿Activar funciones experimentales?", "experimental_mode__only_for_dev": "Solo para desarrollo y pruebas beta.", - "experimental_mode__title": "MODO EXPERIMENTAL", + "experimental_mode__title": "Modo experimental", "fido__already_registered": "Ya registrado", "fido__device_already_registered": "Este dispositivo ya está registrado en esta aplicación.", "fido__device_already_registered_with_template": "Este dispositivo ya está registrado en {0}.", @@ -349,29 +349,29 @@ "fido__not_registered": "No registrado", "fido__not_registered_with_template": "Este dispositivo no está registrado en\n{0}.", "fido__please_enable_pin_protection": "Activa la protección con PIN.", - "fido__title_authenticate": "AUTENTICACIÓN FIDO2", - "fido__title_import_credential": "IMPORTAR CREDENCIAL", - "fido__title_list_credentials": "LISTAR CREDENCIALES", - "fido__title_register": "REGISTRO FIDO2", - "fido__title_remove_credential": "ELIMINAR CREDENCIAL", - "fido__title_reset": "RESTABLECER FIDO2", - "fido__title_u2f_auth": "AUTENTICACIÓN U2F", - "fido__title_u2f_register": "REGISTRO U2F", - "fido__title_verify_user": "VERIFICAR FIDO2", + "fido__title_authenticate": "Autenticación FIDO2", + "fido__title_import_credential": "Importar credencial", + "fido__title_list_credentials": "Listar credenciales", + "fido__title_register": "Registro FIDO2", + "fido__title_remove_credential": "Eliminar credencial", + "fido__title_reset": "Restablecer FIDO2", + "fido__title_u2f_auth": "Autenticación U2F", + "fido__title_u2f_register": "Registro U2F", + "fido__title_verify_user": "Verificar FIDO2", "fido__unable_to_verify_user": "No se puede verificar el usuario.", "fido__wanna_erase_credentials": "¿Quieres borrar todas las credenciales?", - "firmware_update__title": "ACTUALIZAR FIRMWARE", - "firmware_update__title_fingerprint": "HUELLA DIGITAL DE FW", + "firmware_update__title": "Actualizar firmware", + "firmware_update__title_fingerprint": "Huella digital de fw", "homescreen__click_to_connect": "Clic para conectar", "homescreen__click_to_unlock": "Clic para desbloquear", - "homescreen__title_backup_failed": "ERROR C. SEG.", - "homescreen__title_backup_needed": "C. SEG. NECESARIA", - "homescreen__title_coinjoin_authorized": "COINJOIN AUTORIZADO", - "homescreen__title_experimental_mode": "MODO EXPERIMENTAL", - "homescreen__title_no_usb_connection": "SIN CONEXIÓN USB", - "homescreen__title_pin_not_set": "PIN NO CONFIGURADO", - "homescreen__title_seedless": "SIN SEMILLA", - "homescreen__title_set": "CAMBIAR VISTA INICIO", + "homescreen__title_backup_failed": "Error c. seg.", + "homescreen__title_backup_needed": "C. seg. necesaria", + "homescreen__title_coinjoin_authorized": "Coinjoin autorizado", + "homescreen__title_experimental_mode": "Modo experimental", + "homescreen__title_no_usb_connection": "Sin conexión usb", + "homescreen__title_pin_not_set": "PIN no configurado", + "homescreen__title_seedless": "Sin semilla", + "homescreen__title_set": "Cambiar vista inicio", "inputs__back": "ATRÁS", "inputs__cancel": "CANCELAR", "inputs__delete": "ELIMINAR", @@ -380,30 +380,30 @@ "inputs__return": "VOLVER", "inputs__show": "MOSTRAR", "inputs__space": "ESPACIO", - "joint__title": "TRANSACC. CONJUNTA", + "joint__title": "Transacc. conjunta", "joint__to_the_total_amount": "Al importe total:", "joint__you_are_contributing": "Estás aportando:", "language__change_to_template": "Cambiar el idioma a {0}?", "language__changed": "El lenguaje cambió con éxito", "language__progress": "Lenguaje cambiante", - "language__title": "AJUSTES DE IDIOMA", + "language__title": "Ajustes de idioma", "lockscreen__tap_to_connect": "Toca para conectar", "lockscreen__tap_to_unlock": "Toca para desbloquear", - "lockscreen__title_locked": "BLOQUEADO", - "lockscreen__title_not_connected": "NO CONECTADO", + "lockscreen__title_locked": "Bloqueado", + "lockscreen__title_not_connected": "No conectado", "misc__decrypt_value": "Descifrar valor", "misc__encrypt_value": "Cifrar valor", - "misc__title_suite_labeling": "ETIQUETADO SUITE", + "misc__title_suite_labeling": "Etiquetado suite", "modify_amount__decrease_amount": "Reducir importe en:", "modify_amount__increase_amount": "Aumentar importe en:", "modify_amount__new_amount": "Nuevo importe:", - "modify_amount__title": "MODIFICAR IMPORTE", + "modify_amount__title": "Modificar importe", "modify_fee__decrease_fee": "Reducir comisión en:", "modify_fee__fee_rate": "Comisión:", "modify_fee__increase_fee": "Aumentar comisión en:", "modify_fee__new_transaction_fee": "Nueva tasa transacción:", "modify_fee__no_change": "No ha cambiado.", - "modify_fee__title": "MODIFICAR COMISIÓN", + "modify_fee__title": "Modificar comisión", "modify_fee__transaction_fee": "Tasa transacción:", "monero__confirm_export": "Confirmar exportación", "monero__confirm_ki_sync": "Confirmar sincronización imagen clave", @@ -482,11 +482,11 @@ "passphrase__next_screen_will_show_passphrase": "En la siguiente pantalla verás la frase de contraseña.", "passphrase__please_enter": "Escribe la frase de contraseña.", "passphrase__revoke_on_device": "¿Revocar la frase de contraseña en la configuración?", - "passphrase__title_confirm": "VALIDA FRASE CONTR.", - "passphrase__title_enter": "INTRO. FRASE CONTR.", - "passphrase__title_hide": "OCULTAR FRASE", - "passphrase__title_settings": "CONFIG. FRASE CONTR.", - "passphrase__title_source": "ORIGEN FRASE CONTR.", + "passphrase__title_confirm": "Valida frase contr.", + "passphrase__title_enter": "Intro. frase contr.", + "passphrase__title_hide": "Ocultar frase", + "passphrase__title_settings": "Config. frase contr.", + "passphrase__title_source": "Origen frase contr.", "passphrase__turn_off": "¿Desactivar la protección por frase de contraseña?", "passphrase__turn_on": "¿Activar la protección por frase de contraseña?", "pin__change": "¿Cambiar PIN?", @@ -507,9 +507,9 @@ "pin__reenter_new": "Reintroducir nuevo PIN.", "pin__reenter_to_confirm": "Vuelve a introducir el PIN para confirmar.", "pin__should_be_long": "El PIN debe tener 4-50 dígitos.", - "pin__title_check_pin": "REVISAR PIN", - "pin__title_settings": "AJUSTES PIN", - "pin__title_wrong_pin": "PIN INCORRECTO", + "pin__title_check_pin": "Revisar PIN", + "pin__title_settings": "Ajustes PIN", + "pin__title_wrong_pin": "PIN incorrecto", "pin__tries_left": "rest.", "pin__turn_off": "¿Quieres desactivar la protección con PIN?", "pin__turn_on": "¿Activar la protección con PIN?", @@ -528,14 +528,14 @@ "progress__loading_transaction": "Cargando transacc...", "progress__locking_device": "Bloq. el dispositivo...", "progress__one_second_left": "Queda 1 segundo", - "progress__please_wait": "ESPERA", + "progress__please_wait": "Espera", "progress__refreshing": "Actualizando...", "progress__signing_transaction": "Firmando transacción...", "progress__syncing": "Sincronizando...", "progress__x_seconds_left_template": "Quedan {0} segundos", "reboot_to_bootloader__just_a_moment": "Sólo un momento...", "reboot_to_bootloader__restart": "Trezor se reiniciará en modo bootloader.", - "reboot_to_bootloader__title": "IR A BOOTLOADER", + "reboot_to_bootloader__title": "Ir a bootloader", "reboot_to_bootloader__version_by_template": "Versión firmware {0}\npor {1}", "recovery__cancel_dry_run": "Anular la revisión de la copia de seguridad", "recovery__check_dry_run": "¿Revisar la copia de seguridad?", @@ -560,18 +560,18 @@ "recovery__share_already_entered": "Ya se ha introducido el recurso compartido", "recovery__share_from_another_shamir": "El rec. comp. es de otra copia de seguridad de Shamir.", "recovery__share_num_template": "Recurso compartido {0}", - "recovery__title": "RECUPERAR MONEDERO", - "recovery__title_cancel_dry_run": "ANULAR REV. C. SEG.", - "recovery__title_cancel_recovery": "ANULAR RECUPERACIÓN", - "recovery__title_dry_run": "REVISAR C. SEG.", - "recovery__title_recover": "RECUPERAR MONEDERO", - "recovery__title_remaining_shares": "RESTO REC. COMP.", + "recovery__title": "Recuperar monedero", + "recovery__title_cancel_dry_run": "Anular rev. c. seg.", + "recovery__title_cancel_recovery": "Anular recuperación", + "recovery__title_dry_run": "Revisar c. seg.", + "recovery__title_recover": "Recuperar monedero", + "recovery__title_remaining_shares": "Resto rec. comp.", "recovery__type_word_x_of_y_template": "Meter palabra {0} de {1}", "recovery__wallet_recovered": "Se ha recuperado el monedero.", "recovery__wanna_cancel_dry_run": "¿Quieres anular la revisión de la copia de seguridad?", "recovery__wanna_cancel_recovery": "¿Quieres anular el proceso de recuperación?", "recovery__word_count_template": "({0} palabras)", - "recovery__word_x_of_y_template": "PALABRA {0} DE {1}", + "recovery__word_x_of_y_template": "Palabra {0} de {1}", "recovery__x_more_items_starting_template_plural": "Se están iniciando {count} {plural} más", "recovery__x_more_shares_needed_template_plural": "Se necesitan {count} {plural} más.", "recovery__x_of_y_entered_template": "Rec. comp. introducidos: {0} de {1}.", @@ -579,13 +579,13 @@ "reset__advanced_group_threshold_info": "El umbral de grupo determina el nro.de grupos necesarios para recuperar el monedero.", "reset__all_x_of_y_template": "{0} de {1} rec. comp.", "reset__any_x_of_y_template": "{0} de {1} rec. comp.", - "reset__button_create": "CREAR MONED.", - "reset__button_recover": "RECUP. MONED.", + "reset__button_create": "Crear moned.", + "reset__button_recover": "Recup. moned.", "reset__by_continuing": "Si continúas, aceptas los términos de Trezor Company.", - "reset__check_backup_title": "REVISAR C. SEG.", - "reset__check_group_share_title_template": "REVISAR REC. {0} G {1}", - "reset__check_wallet_backup_title": "REVISAR SEMILLA", - "reset__check_share_title_template": "REVISAR REC. nro.{0}", + "reset__check_backup_title": "Revisar c. seg.", + "reset__check_group_share_title_template": "Revisar rec. {0} g {1}", + "reset__check_wallet_backup_title": "Revisar semilla", + "reset__check_share_title_template": "Revisar rec. nro.{0}", "reset__continue_with_next_share": "Continuar con el próximo rec. comp.", "reset__continue_with_share_template": "Continuar con el recurso nro.{0}.", "reset__finished_verifying_group_template": "Fin de la verificación de los rec. comp. de recuperación del grupo {0}.", @@ -594,7 +594,7 @@ "reset__group_description": "Un grupo consta de rec. comp. de recuperación.", "reset__group_info": "Cada grupo tiene un nro.de rec. comp. y su propio umbral. En los siguientes pasos, ajustarás el nro.de rec. comp. y los umbrales.", "reset__group_share_checked_successfully_template": "Verificado: Rec. comp. {0} del grupo {1}.", - "reset__group_share_title_template": "REC. COMP. {0} G. {1}", + "reset__group_share_title_template": "Rec. comp. {0} g. {1}", "reset__more_info_at": "Más información en", "reset__need_all_share_template": "Se necesitan los {0} rec. comp.", "reset__need_any_share_template": "Se necesita alguno de los {0} rec. comp.", @@ -608,15 +608,15 @@ "reset__number_of_shares_info": "= total de listas de palabras únicas para la copia de seguridad.", "reset__one_share": "1 recurso compartido", "reset__only_one_share_will_be_created": "Solo se creará un recurso compartido.", - "reset__recovery_wallet_backup_title": "SEMILLA RECUP.", - "reset__recovery_share_title_template": "REC. RECUP. nro.{0}", + "reset__recovery_wallet_backup_title": "Semilla recup.", + "reset__recovery_share_title_template": "Rec. recup. nro.{0}", "reset__required_number_of_groups": "El nro.de grupos necesario para la recuperación.", "reset__select_correct_word": "Selecciona la palabra correcta para cada posición.", - "reset__select_word_template": "USAR {0} PALABRA", + "reset__select_word_template": "Usar {0} palabra", "reset__select_word_x_of_y_template": "Palabra {0} de {1}:", "reset__set_it_to_count_template": "Ajústalo en {0} y necesitarás ", "reset__share_checked_successfully_template": "Verificado: Rec de recuperación nro.{0}.", - "reset__share_words_title": "C. SEG. ESTÁNDAR", + "reset__share_words_title": "C. seg. estándar", "reset__slip39_checklist_num_groups": "Número de grupos", "reset__slip39_checklist_num_shares": "Nro.de rec. comp.", "reset__slip39_checklist_set_num_groups": "Ajustar nro.grupos", @@ -624,21 +624,21 @@ "reset__slip39_checklist_set_sizes": "Definir tamaños y umbrales", "reset__slip39_checklist_set_sizes_longer": "Definir tamaño y umbral de cada grupo", "reset__slip39_checklist_set_threshold": "Ajustar umbral", - "reset__slip39_checklist_title": "LISTA C. SEG.", + "reset__slip39_checklist_title": "Lista c. seg.", "reset__slip39_checklist_write_down": "Listar y revisar todos los rec. comp.", "reset__slip39_checklist_write_down_recovery": "Listar y revisar todos los rec. comp. recup.", "reset__the_threshold_sets_the_number_of_shares": "El umbral establece el nro.de rec. comp. ", "reset__threshold_info": "= mínimo de listas de palabras únicas para la recuperación.", - "reset__title_backup_is_done": "C. SEG. COMPLETA", - "reset__title_create_wallet": "CREAR MONEDERO", - "reset__title_create_wallet_shamir": "CREAR MONEDERO (SHAMIR)", - "reset__title_group_threshold": "UMBRAL GRUPOS", - "reset__title_number_of_groups": "NRO.GRUPOS", - "reset__title_number_of_shares": "NRO.REC. COMP.", - "reset__title_set_group_threshold": "AJUSTAR UMBRAL G.", - "reset__title_set_number_of_groups": "AJUSTAR NRO.GRUPOS", - "reset__title_set_number_of_shares": "AJUSTAR NRO.REC. COMP.", - "reset__title_set_threshold": "AJUSTAR UMBRAL", + "reset__title_backup_is_done": "C. seg. completa", + "reset__title_create_wallet": "Crear monedero", + "reset__title_create_wallet_shamir": "Crear monedero (shamir)", + "reset__title_group_threshold": "Umbral grupos", + "reset__title_number_of_groups": "Nro.grupos", + "reset__title_number_of_shares": "Nro.rec. comp.", + "reset__title_set_group_threshold": "Ajustar umbral g.", + "reset__title_set_number_of_groups": "Ajustar nro.grupos", + "reset__title_set_number_of_shares": "Ajustar nro.rec. comp.", + "reset__title_set_threshold": "Ajustar umbral", "reset__to_form_group_template": "para formar el grupo {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Fija el total de rec. comp. del grupo {0}.", @@ -653,13 +653,13 @@ "rotation__east": "este", "rotation__north": "norte", "rotation__south": "sur", - "rotation__title_change": "CAMBIAR ROTACIÓN", + "rotation__title_change": "Cambiar rotación", "rotation__west": "oeste", "safety_checks__approve_unsafe_always": "Trezor te permitirá aprobar algunas acciones que podrían no ser seguras.", "safety_checks__approve_unsafe_temporary": "Trezor te permitirá aprobar temporalmente algunas acciones que podrían no ser seguras.", "safety_checks__enforce_strict": "¿Quieres aplicar estrictos controles de seguridad (recomendado)?", - "safety_checks__title": "TEST DE SEGURIDAD", - "safety_checks__title_safety_override": "ANULACIÓN SEGURIDAD", + "safety_checks__title": "Test de seguridad", + "safety_checks__title_safety_override": "Anulación seguridad", "sd_card__all_data_will_be_lost": "Se perderán todos los datos de la tarjeta SD.", "sd_card__card_required": "Se precisa una SD.", "sd_card__disable": "¿Quieres quitar la protección de la tarjeta SD del dispositivo?", @@ -675,25 +675,25 @@ "sd_card__refresh": "¿Quieres sustituir el secreto de la tarjeta SD actual por uno nuevo?", "sd_card__refreshed": "Has actualizado la protección SD.", "sd_card__restart": "¿Deseas reiniciar el Trezor en modo bootloader?", - "sd_card__title": "PROTECCIÓN SD", - "sd_card__title_problem": "PROBLEMA CON LA SD", + "sd_card__title": "Protección SD", + "sd_card__title_problem": "Problema con la SD", "sd_card__unknown_filesystem": "Sistema de archivos desconocido.", "sd_card__unplug_and_insert_correct": "Desconecta el dispositivo e introduce la tarjeta SD correcta.", "sd_card__use_different_card": "Utiliza una tarjeta diferente o formatea la tarjeta SD al sistema de archivos FAT32.", "sd_card__wanna_format": "¿Quieres formatear la tarjeta SD?", "sd_card__wrong_sd_card": "Tarjeta SD incorrecta.", "send__address_path": "ruta de la dirección", - "send__confirm_sending": "IMPORTE ENVÍO", + "send__confirm_sending": "Importe envío", "send__from_multiple_accounts": "Enviando desde varias cuentas.", "send__including_fee": "Comisión incluida:", "send__maximum_fee": "Comisión máxima:", "send__receiving_to_multisig": "Recepción en una dirección multifirma.", - "send__title_confirm_sending": "VALIDAR ENVÍO", - "send__title_joint_transaction": "TRANSACC. CONJUNTA", - "send__title_receiving_to": "RECIBIR EN", - "send__title_sending": "ENVÍO", - "send__title_sending_amount": "IMPORTE ENVÍO", - "send__title_sending_to": "ENVÍO A", + "send__title_confirm_sending": "Validar envío", + "send__title_joint_transaction": "Transacc. conjunta", + "send__title_receiving_to": "Recibir en", + "send__title_sending": "Envío", + "send__title_sending_amount": "Importe envío", + "send__title_sending_to": "Envío a", "send__to_the_total_amount": "Al importe total:", "send__total_amount": "Importe total:", "send__transaction_id": "ID de la transacción:", @@ -701,10 +701,10 @@ "share_words__words_in_order": " palabras en orden.", "share_words__wrote_down_all": "Escribí las ", "sign_message__bytes_template": "{0} bytes", - "sign_message__confirm_address": "DIRECCIÓN FIRMA", - "sign_message__confirm_message": "VALIDAR MENSAJE", + "sign_message__confirm_address": "Dirección firma", + "sign_message__confirm_message": "Validar mensaje", "sign_message__message_size": "Tamaño del mensaje:", - "sign_message__verify_address": "VERIFICAR DIRECCIÓN", + "sign_message__verify_address": "Verificar dirección", "solana__account_index": "Índice de la cuenta", "solana__associated_token_account": "Cuenta de token asociada", "solana__confirm_multisig": "Confirmar multifirma", @@ -786,10 +786,10 @@ "stellar__value_sha256": "Valor (SHA-256):", "stellar__wanna_clean_value_key_template": "¿Quieres borrar la clave de valor {0}?", "stellar__your_account": " tu cuenta", - "storage_msg__verifying_pin": "VERIFICANDO PIN", - "storage_msg__processing": "PROCESANDO", - "storage_msg__starting": "INICIANDO", - "storage_msg__wrong_pin": "PIN INCORRECTO", + "storage_msg__verifying_pin": "Verificando PIN", + "storage_msg__processing": "Procesando", + "storage_msg__starting": "Iniciando", + "storage_msg__wrong_pin": "PIN incorrecto", "tezos__baker_address": "Dirección de panadero:", "tezos__balance": "Saldo:", "tezos__ballot": "Papeleta:", @@ -807,18 +807,18 @@ "tutorial__ready_to_use": "Ya puedes\nusar Trezor.", "tutorial__scroll_down": "Pulsa el botón derecho para ir bajando y leer todo cuando el texto no quepa en una pantalla.\n\rPulsa el botón izquierdo para ir hacia arriba.", "tutorial__sure_you_want_skip": "¿Seguro que quieres\nomitir el tutorial?", - "tutorial__title_hello": "HOLA", - "tutorial__title_screen_scroll": "DESPLAZARSE", - "tutorial__title_skip": "OMITIR TUTORIAL", - "tutorial__title_tutorial_complete": "TUTORIAL COMPLETO", + "tutorial__title_hello": "Hola", + "tutorial__title_screen_scroll": "Desplazarse", + "tutorial__title_skip": "Omitir tutorial", + "tutorial__title_tutorial_complete": "Tutorial completo", "tutorial__use_trezor": "Maneja Trezor pulsando\nderecha e izquierda.\n\rContinúa con la derecha.", "tutorial__welcome_press_right": "Te damos la bienvenida a Trezor. Pulsa el botón derecho para continuar.", "u2f__get": "¿Aumentar y recuperar el contador U2F?", "u2f__set_template": "¿Ajustar el contador U2F a {0}?", - "u2f__title_get": "RECIBIR CONT. U2F", - "u2f__title_set": "CONFIG. CONT. U2F", + "u2f__title_get": "Recibir cont. U2F", + "u2f__title_set": "Config. cont. U2F", "wipe__info": "Se borrarán todos los datos.", - "wipe__title": "BORRAR DISPOSITIVO", + "wipe__title": "Borrar dispositivo", "wipe__want_to_wipe": "¿Quieres borrar el dispositivo?\n", "wipe_code__change": "¿Cambiar el código de borrar?", "wipe_code__changed": "El código de borrar se ha cambiado.", @@ -831,13 +831,13 @@ "wipe_code__mismatch": "Los códigos de borrar no coinciden.", "wipe_code__reenter": "Reingresar cód.borrar.", "wipe_code__reenter_to_confirm": "Reingresar cód.borrar para confirmar.", - "wipe_code__title_check": "REVISAR CÓD. BORRAR", - "wipe_code__title_invalid": "CÓD. BORRAR NO VÁLIDO", - "wipe_code__title_settings": "CONFIG. CÓD. BORRAR", + "wipe_code__title_check": "Revisar cód. borrar", + "wipe_code__title_invalid": "Cód. borrar no válido", + "wipe_code__title_settings": "Config. cód. borrar", "wipe_code__turn_off": "¿Desactivar protección del código de borrar?", "wipe_code__turn_on": "¿Activar la protección del código de borrar?", "wipe_code__wipe_code_mismatch": "Cód.borrar no coincide.", - "word_count__title": "NRO.PALABRAS", + "word_count__title": "Nro.palabras", "words__account": "Cuenta", "words__account_colon": "Cuenta:", "words__address": "Dirección", @@ -865,15 +865,15 @@ "words__recipient": "Destinatario", "words__sign": "Firmar", "words__signer": "Firmante", - "words__title_check": "REVISAR", - "words__title_group": "GRUPO", - "words__title_information": "INFORMACIÓN", - "words__title_remember": "RECORDAR", - "words__title_share": "REC. COMP.", - "words__title_shares": "REC. COMP.", - "words__title_success": "COMPLETADO", - "words__title_summary": "RESUMEN", - "words__title_threshold": "UMBRAL", + "words__title_check": "Revisar", + "words__title_group": "Grupo", + "words__title_information": "Información", + "words__title_remember": "Recordar", + "words__title_share": "Rec. comp.", + "words__title_shares": "Rec. comp.", + "words__title_success": "Completado", + "words__title_summary": "Resumen", + "words__title_threshold": "Umbral", "words__unknown": "Desconocido", "words__warning": "Advertencia", "words__writable": "Modificable", diff --git a/core/translations/fr.json b/core/translations/fr.json index dd0b6e59ff..81ae0513f2 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -40,24 +40,24 @@ "addr_mismatch__wrong_derivation_path": "Chemin dériv. incorrect du compte sélectionné.", "addr_mismatch__xpub_mismatch": "Err. clé publ. (XPUB) ?", "address__public_key": "Clé publique", - "address__title_cosigner": "COSIGNATAIRE", - "address__title_receive_address": "ADR. DE RÉCEP.", - "address__title_yours": "LA VÔTRE", + "address__title_cosigner": "Cosignataire", + "address__title_receive_address": "Adr. de récep.", + "address__title_yours": "La vôtre", "address_details__derivation_path": "Chemin de dérivation :", - "address_details__title_receive_address": "ADR. DE RÉCEP.", - "address_details__title_receiving_to": "RÉCEP. SUR", + "address_details__title_receive_address": "Adr. de récep.", + "address_details__title_receiving_to": "Récep. sur", "authenticate__confirm_template": "Autoriser l'ord. connecté à conf. que votre {0} est auth. ?", "authenticate__header": "Authentifier le disp.", "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d'inactivité ?", - "auto_lock__title": "DÉLAI DE VER. AUTO", + "auto_lock__title": "Délai de ver. auto", "backup__can_back_up_anytime": "Vous pouvez sauv. Trezor une fois, à tout moment.", "backup__it_should_be_backed_up": "Sauvegardez votre portef. maintenant.", "backup__it_should_be_backed_up_now": "Il doit être sauvegardé dès maintenant !", "backup__new_wallet_created": "Nouveau portef. créé.", "backup__new_wallet_successfully_created": "Nouveau portef. créé avec succès.", "backup__recover_anytime": "Vous pouvez utiliser votre sauv. pour récup. votre portef.", - "backup__title_backup_wallet": "SAUVEG. PORTEF.", - "backup__title_skip": "IGNORER SAUVEGARDE", + "backup__title_backup_wallet": "Sauveg. portef.", + "backup__title_skip": "Ignorer sauvegarde", "backup__want_to_skip": "Voulez-vous vraiment ignorer la sauvegarde ?", "binance__buy": "Acheter", "binance__confirm_cancel": "Conf. annulation", @@ -83,59 +83,59 @@ "bitcoin__new_fee_rate": "Nouveau taux de frais :", "bitcoin__simple_send_of": "Envoi simple de", "bitcoin__ticket_amount": "Montant du ticket :", - "bitcoin__title_confirm_details": "CONF. DÉTAILS", - "bitcoin__title_finalize_transaction": "FINALISER TRANS.", - "bitcoin__title_high_mining_fee": "FRAIS DE MIN. ÉLEVÉS", - "bitcoin__title_meld_transaction": "FUSIONNER TRANS.", - "bitcoin__title_modify_amount": "MODIFIER LE MONTANT", - "bitcoin__title_payjoin": "PAYJOIN", - "bitcoin__title_proof_of_ownership": "PREUVE DE PROPRIÉTÉ", - "bitcoin__title_purchase_ticket": "ACHETER UN TICKET", - "bitcoin__title_update_transaction": "MAJ LA TRANS.", + "bitcoin__title_confirm_details": "Conf. détails", + "bitcoin__title_finalize_transaction": "Finaliser trans.", + "bitcoin__title_high_mining_fee": "Frais de min. élevés", + "bitcoin__title_meld_transaction": "Fusionner trans.", + "bitcoin__title_modify_amount": "Modifier le montant", + "bitcoin__title_payjoin": "Payjoin", + "bitcoin__title_proof_of_ownership": "Preuve de propriété", + "bitcoin__title_purchase_ticket": "Acheter un ticket", + "bitcoin__title_update_transaction": "Maj la trans.", "bitcoin__unknown_path": "Chemin inconnu", "bitcoin__unknown_transaction": "Transaction inconnue", "bitcoin__unusually_high_fee": "Frais anormalement élevés.", "bitcoin__unverified_external_inputs": "La transaction contient des entrées externes non vérifiées.", "bitcoin__valid_signature": "Signature valide.", "bitcoin__voting_rights": "Droits de vote pour :", - "buttons__abort": "ANNULER", - "buttons__access": "ACCÉDER", - "buttons__again": "TUTO", - "buttons__allow": "AUTORISER", - "buttons__back": "RETOUR", - "buttons__back_up": "SAUVEG.", - "buttons__cancel": "ANNULER", - "buttons__change": "CHANGER", - "buttons__check": "VÉRIFIER", - "buttons__check_again": "REVÉRIFIER", - "buttons__close": "FERMER", - "buttons__confirm": "CONF.", - "buttons__continue": "CONTINUER", - "buttons__details": "DÉTAILS", - "buttons__enable": "ACTIVER", - "buttons__enter": "SAISIR", - "buttons__enter_share": "SAISIR FRAGM.", - "buttons__export": "EXPORTER", - "buttons__format": "FORMAT", - "buttons__go_back": "RETOUR", - "buttons__hold_to_confirm": "APPUI POUR CONF", - "buttons__info": "INFOS", - "buttons__install": "INSTALLER", - "buttons__more_info": "PLUS D'INFOS", + "buttons__abort": "Annuler", + "buttons__access": "Accéder", + "buttons__again": "Tuto", + "buttons__allow": "Autoriser", + "buttons__back": "Retour", + "buttons__back_up": "Sauveg.", + "buttons__cancel": "Annuler", + "buttons__change": "Changer", + "buttons__check": "Vérifier", + "buttons__check_again": "Revérifier", + "buttons__close": "Fermer", + "buttons__confirm": "Conf.", + "buttons__continue": "Continuer", + "buttons__details": "Détails", + "buttons__enable": "Activer", + "buttons__enter": "Saisir", + "buttons__enter_share": "Saisir fragm.", + "buttons__export": "Exporter", + "buttons__format": "Format", + "buttons__go_back": "Retour", + "buttons__hold_to_confirm": "Appui pour conf", + "buttons__info": "Infos", + "buttons__install": "Installer", + "buttons__more_info": "Plus d'infos", "buttons__ok_i_understand": "JE COMPRENDS", - "buttons__purchase": "ACHETER", - "buttons__quit": "QUITTER", - "buttons__restart": "REDÉMARRER", - "buttons__retry": "RÉESSAYER", - "buttons__select": "SÉLECTIONNER", - "buttons__set": "DÉFINIR", - "buttons__show_all": "AFFICHER TOUT", - "buttons__show_details": "AFFICHER TOUT", - "buttons__show_words": "AFFICHER MOTS", - "buttons__skip": "IGNORER", - "buttons__try_again": "RÉESSAYER", - "buttons__turn_off": "DÉSACTIVER", - "buttons__turn_on": "ACTIVER", + "buttons__purchase": "Acheter", + "buttons__quit": "Quitter", + "buttons__restart": "Redémarrer", + "buttons__retry": "Réessayer", + "buttons__select": "Sélectionner", + "buttons__set": "Définir", + "buttons__show_all": "Afficher tout", + "buttons__show_details": "Afficher tout", + "buttons__show_words": "Afficher mots", + "buttons__skip": "Ignorer", + "buttons__try_again": "Réessayer", + "buttons__turn_off": "Désactiver", + "buttons__turn_on": "Activer", "cardano__addr_base": "Base", "cardano__addr_enterprise": "Entreprise", "cardano__addr_legacy": "Legacy", @@ -249,21 +249,21 @@ "coinjoin__do_not_disconnect": "Ne déconnectez pas votre Trezor !", "coinjoin__max_mining_fee": "Frais de minage max", "coinjoin__max_rounds": "Nbre max de tours", - "coinjoin__title": "AUTORISER COINJOIN", - "coinjoin__title_do_not_disconnect": "NE DÉCONNECTEZ PAS VOTRE TREZOR !", - "coinjoin__title_progress": "COINJOIN EN COURS", + "coinjoin__title": "Autoriser coinjoin", + "coinjoin__title_do_not_disconnect": "Ne déconnectez pas votre trezor !", + "coinjoin__title_progress": "Coinjoin en cours", "coinjoin__waiting_for_others": "En attente des autres", "confirm_total__fee_rate": "Taux des frais :", "confirm_total__sending_from_account": "Compte d'envoi :", - "confirm_total__title_fee": "INFOS SUR LES FRAIS", - "confirm_total__title_sending_from": "ENVOI DEPUIS", + "confirm_total__title_fee": "Infos sur les frais", + "confirm_total__title_sending_from": "Envoi depuis", "debug__loading_seed": "Chargement de la seed", "debug__loading_seed_not_recommended": "Charg. de seed privée non recommandé", "device_name__change_template": "Modifier le nom du disp. pour {0} ?", - "device_name__title": "NOM DU DISP.", + "device_name__title": "Nom du disp.", "entropy__send": "Voulez-vous vraiment envoyer l'entropie ?", - "entropy__title": "ENTROPIE INTERNE", - "entropy__title_confirm": "CONF. ENTROPIE", + "entropy__title": "Entropie interne", + "entropy__title_confirm": "Conf. entropie", "eos__about_to_sign_template": "Vous êtes sur le point de signer {0}.", "eos__action_name": "Nom de l'action :", "eos__arbitrary_data": "Données arbitraires", @@ -319,26 +319,26 @@ "ethereum__show_full_message": "Aff. message complet", "ethereum__show_full_struct": "Aff. structure complète", "ethereum__sign_eip712": "Signer ces données EIP-712 ?", - "ethereum__title_confirm_data": "CONF. DONNÉES", - "ethereum__title_confirm_domain": "CONF. DOMAINE", - "ethereum__title_confirm_message": "CONF. MESSAGE", - "ethereum__title_confirm_struct": "CONF. STRUCTURE", - "ethereum__title_confirm_typed_data": "CONF. DONNÉES", - "ethereum__title_signing_address": "ADR. DE SIGNATURE", + "ethereum__title_confirm_data": "Conf. données", + "ethereum__title_confirm_domain": "Conf. domaine", + "ethereum__title_confirm_message": "Conf. message", + "ethereum__title_confirm_struct": "Conf. structure", + "ethereum__title_confirm_typed_data": "Conf. données", + "ethereum__title_signing_address": "Adr. de signature", "ethereum__units_template": "{0} unités", "ethereum__unknown_token": "Jeton inconnu", "ethereum__valid_signature": "Signature valide.", - "ethereum__staking_stake": "STAKE", - "ethereum__staking_stake_address": "ADRESSE DE STAKING", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Adresse de staking", "ethereum__staking_stake_intro": "Staker de l'ETH sur Everstake?", - "ethereum__staking_unstake": "UNSTAKE", + "ethereum__staking_unstake": "Unstake", "ethereum__staking_unstake_intro": "Terminer le Staking de l'ETH sur Everstake?", - "ethereum__staking_claim": "RETIRER", - "ethereum__staking_claim_address": "ADRESSE DE RETRAIT", + "ethereum__staking_claim": "Retirer", + "ethereum__staking_claim_address": "Adresse de retrait", "ethereum__staking_claim_intro": "Retirer l'ETH d'Everstake?", "experimental_mode__enable": "Activer les fonct. expérimentales ?", "experimental_mode__only_for_dev": "Uniquement pour le dév. et les tests bêta !", - "experimental_mode__title": "MODE EXPÉRIMENTAL", + "experimental_mode__title": "Mode expérimental", "fido__already_registered": "Déjà enregistré", "fido__device_already_registered": "Ce disp. est déjà enregistré dans cette application.", "fido__device_already_registered_with_template": "Ce disp. est déjà enregistré dans {0}.", @@ -349,29 +349,29 @@ "fido__not_registered": "Non enregistré", "fido__not_registered_with_template": "Ce disp. n'est pas enregistré dans\n{0}.", "fido__please_enable_pin_protection": "Activez la prot. par PIN.", - "fido__title_authenticate": "AUTHENTIFIER FIDO2", - "fido__title_import_credential": "IMPORTER ID", - "fido__title_list_credentials": "LISTER ID", - "fido__title_register": "ENREGISTRER FIDO2", - "fido__title_remove_credential": "SUPPR. ID", - "fido__title_reset": "FIDO2 RESET", - "fido__title_u2f_auth": "AUTHENTIFIER U2F", - "fido__title_u2f_register": "ENREGISTRER U2F", - "fido__title_verify_user": "VÉRIFIER UTIL. FIDO2", + "fido__title_authenticate": "Authentifier FIDO2", + "fido__title_import_credential": "Importer id", + "fido__title_list_credentials": "Lister id", + "fido__title_register": "Enregistrer FIDO2", + "fido__title_remove_credential": "Suppr. id", + "fido__title_reset": "FIDO2 reset", + "fido__title_u2f_auth": "Authentifier U2F", + "fido__title_u2f_register": "Enregistrer U2F", + "fido__title_verify_user": "Vérifier util. FIDO2", "fido__unable_to_verify_user": "Impossible de vérifier l'utilisateur.", "fido__wanna_erase_credentials": "Voulez-vous vraiment effacer tous les id ?", - "firmware_update__title": "MAJ LOGICIEL", - "firmware_update__title_fingerprint": "EMPREINTE FW", + "firmware_update__title": "Maj logiciel", + "firmware_update__title_fingerprint": "Empreinte fw", "homescreen__click_to_connect": "Se connecter", "homescreen__click_to_unlock": "Cliquez pour déverr.", - "homescreen__title_backup_failed": "ÉCHEC SAUVEGARDE", - "homescreen__title_backup_needed": "SAUVEG. NÉCESSAIRE", - "homescreen__title_coinjoin_authorized": "COINJOIN AUTORISÉ", - "homescreen__title_experimental_mode": "MODE EXPÉRIMENTAL", - "homescreen__title_no_usb_connection": "0 CONNEXION USB", - "homescreen__title_pin_not_set": "PIN NON DÉFINI", - "homescreen__title_seedless": "SANS SEED", - "homescreen__title_set": "CHANGER ACCUEIL", + "homescreen__title_backup_failed": "Échec sauvegarde", + "homescreen__title_backup_needed": "Sauveg. nécessaire", + "homescreen__title_coinjoin_authorized": "Coinjoin autorisé", + "homescreen__title_experimental_mode": "Mode expérimental", + "homescreen__title_no_usb_connection": "0 connexion usb", + "homescreen__title_pin_not_set": "PIN non défini", + "homescreen__title_seedless": "Sans seed", + "homescreen__title_set": "Changer accueil", "inputs__back": "RETOUR", "inputs__cancel": "ANNULER", "inputs__delete": "SUPPRIMER", @@ -380,30 +380,30 @@ "inputs__return": "RETOUR", "inputs__show": "AFFICHER", "inputs__space": "ESPACE", - "joint__title": "TRANS. COMMUNE", + "joint__title": "Trans. commune", "joint__to_the_total_amount": "Au montant total :", "joint__you_are_contributing": "Votre contribution :", "language__change_to_template": "Changer la langue en {0}?", "language__changed": "La langue a changé avec succès", "language__progress": "Langage changeant", - "language__title": "PARAMÈTR. DE LANG.", + "language__title": "Paramètr. de lang.", "lockscreen__tap_to_connect": "Se connecter", "lockscreen__tap_to_unlock": "Appuyez pour déverr.", - "lockscreen__title_locked": "VERROUILLÉ", - "lockscreen__title_not_connected": "NON CONNECTÉ", + "lockscreen__title_locked": "Verrouillé", + "lockscreen__title_not_connected": "Non connecté", "misc__decrypt_value": "Déchiffrer la valeur", "misc__encrypt_value": "Chiffrer la valeur", - "misc__title_suite_labeling": "ÉTIQUETAGE DE SUITE", + "misc__title_suite_labeling": "Étiquetage de suite", "modify_amount__decrease_amount": "Diminuer de :", "modify_amount__increase_amount": "Augmenter de :", "modify_amount__new_amount": "Nouveau montant :", - "modify_amount__title": "MODIFIER LE MONTANT", + "modify_amount__title": "Modifier le montant", "modify_fee__decrease_fee": "Réduire les frais de :", "modify_fee__fee_rate": "Taux des frais :", "modify_fee__increase_fee": "Augmenter frais de :", "modify_fee__new_transaction_fee": "Nouv. frais de trans. :", "modify_fee__no_change": "Frais inchangés.", - "modify_fee__title": "MODIFIER LES FRAIS", + "modify_fee__title": "Modifier les frais", "modify_fee__transaction_fee": "Frais de transaction :", "monero__confirm_export": "Conf. exportation", "monero__confirm_ki_sync": "Conf. sync IC", @@ -482,11 +482,11 @@ "passphrase__next_screen_will_show_passphrase": "La phrase secrète s'affichera à l'écran suivant.", "passphrase__please_enter": "Saisissez votre phrase secrète.", "passphrase__revoke_on_device": "Voulez-vous révoquer la phrase secrète dans les par. du disp. ?", - "passphrase__title_confirm": "CONF. PHRASE SECR.", - "passphrase__title_enter": "SAISIR PHRASE SECR.", - "passphrase__title_hide": "MASQUER PHRA. SECR.", - "passphrase__title_settings": "PARAM DE PHRA. SECR.", - "passphrase__title_source": "SOURCE PHRASE SECR.", + "passphrase__title_confirm": "Conf. phrase secr.", + "passphrase__title_enter": "Saisir phrase secr.", + "passphrase__title_hide": "Masquer phra. secr.", + "passphrase__title_settings": "Param de phra. secr.", + "passphrase__title_source": "Source phrase secr.", "passphrase__turn_off": "Désactiver la prot. par phrase secrète ?", "passphrase__turn_on": "Activer la prot. par phrase secrète ?", "pin__change": "Modifier le PIN ?", @@ -507,9 +507,9 @@ "pin__reenter_new": "Réentrez nouv. PIN", "pin__reenter_to_confirm": "Réentrez le PIN pour conf.", "pin__should_be_long": "Le PIN doit être composé de 4 à 50 chiffres.", - "pin__title_check_pin": "VÉRIFIER PIN", - "pin__title_settings": "PARAM DU PIN", - "pin__title_wrong_pin": "MAUVAIS PIN", + "pin__title_check_pin": "Vérifier PIN", + "pin__title_settings": "Param du PIN", + "pin__title_wrong_pin": "Mauvais PIN", "pin__tries_left": "rest.", "pin__turn_off": "Voulez-vous vraiment désactiver la prot. par PIN ?", "pin__turn_on": "Activer la prot. par PIN ?", @@ -528,14 +528,14 @@ "progress__loading_transaction": "Charg. de la trans...", "progress__locking_device": "Verrouill. l'appareil...", "progress__one_second_left": "1 seconde restante", - "progress__please_wait": "PATIENTEZ", + "progress__please_wait": "Patientez", "progress__refreshing": "Actualisation en cours", "progress__signing_transaction": "Signature en cours...", "progress__syncing": "Synch. en cours", "progress__x_seconds_left_template": "{0} secondes restantes", "reboot_to_bootloader__just_a_moment": "Juste un moment...", "reboot_to_bootloader__restart": "Trezor redémarrera en mode bootloader.", - "reboot_to_bootloader__title": "ACCÉDER BOOTLOADER", + "reboot_to_bootloader__title": "Accéder bootloader", "reboot_to_bootloader__version_by_template": "Version du logiciel {0}\npar {1}", "recovery__cancel_dry_run": "Annuler la vér. de la sauv.", "recovery__check_dry_run": "Vérifier votre sauvegarde ?", @@ -560,18 +560,18 @@ "recovery__share_already_entered": "Fragment déjà saisi", "recovery__share_from_another_shamir": "Vous avez saisi un fragm. d'une autre sauv. Shamir.", "recovery__share_num_template": "Fragment {0}", - "recovery__title": "RÉCUP. PORTEF.", - "recovery__title_cancel_dry_run": "ANNULER VÉR. SAUV.", - "recovery__title_cancel_recovery": "ANNULER LA RÉCUP.", - "recovery__title_dry_run": "VÉRIF. SAUVEGARDE", - "recovery__title_recover": "RÉCUP. PORTEF.", - "recovery__title_remaining_shares": "FRAGM. RESTANTS", + "recovery__title": "Récup. portef.", + "recovery__title_cancel_dry_run": "Annuler vér. sauv.", + "recovery__title_cancel_recovery": "Annuler la récup.", + "recovery__title_dry_run": "Vérif. sauvegarde", + "recovery__title_recover": "Récup. portef.", + "recovery__title_remaining_shares": "Fragm. restants", "recovery__type_word_x_of_y_template": "Entrez le mot {0} sur {1}", "recovery__wallet_recovered": "Portef. récupéré avec succès", "recovery__wanna_cancel_dry_run": "Voulez-vous vraiment annuler la vér. de la sauv. ?", "recovery__wanna_cancel_recovery": "Voulez-vous vraiment annuler le processus de récup. ?", "recovery__word_count_template": "({0} mots)", - "recovery__word_x_of_y_template": "MOT {0} SUR {1}", + "recovery__word_x_of_y_template": "Mot {0} sur {1}", "recovery__x_more_items_starting_template_plural": "{count} plus {plural} ont commencé", "recovery__x_more_shares_needed_template_plural": "{count} plus {plural} sont nécessaires.", "recovery__x_of_y_entered_template": "{0} fragm. sur {1} saisis avec succès.", @@ -579,13 +579,13 @@ "reset__advanced_group_threshold_info": "Le seuil de groupe détermine le nbre de groupes pour récup.votre portef.", "reset__all_x_of_y_template": "tous {0} fragm. sur {1}", "reset__any_x_of_y_template": "de {0} fragm. sur {1}", - "reset__button_create": "CRÉER PORTEF.", - "reset__button_recover": "RÉCUP. PORTEF.", + "reset__button_create": "Créer portef.", + "reset__button_recover": "Récup. portef.", "reset__by_continuing": "En continuant, vous acceptez les conditions générales de Trezor.", - "reset__check_backup_title": "VÉRIF. SAUVEGARDE", - "reset__check_group_share_title_template": "VÉR. G{0}- FRAGM. {1}", - "reset__check_wallet_backup_title": "VÉRIFIER LA SEED", - "reset__check_share_title_template": "VÉRIFIER FRAGM. #{0}", + "reset__check_backup_title": "Vérif. sauvegarde", + "reset__check_group_share_title_template": "Vér. g{0}- fragm. {1}", + "reset__check_wallet_backup_title": "Vérifier la seed", + "reset__check_share_title_template": "Vérifier fragm. #{0}", "reset__continue_with_next_share": "Continuez avec le fragm. suivant.", "reset__continue_with_share_template": "Continuez avec le fragm. #{0}.", "reset__finished_verifying_group_template": "Vous avez terminé la vér. de vos fragm. de récup. pour le groupe {0}.", @@ -594,7 +594,7 @@ "reset__group_description": "Un groupe est composé de fragm. de récup.", "reset__group_info": "Chaque groupe a un nbre défini de fragm. et un seuil spécifique. Dans les étapes suivantes, vous allez déf. le nbre de fragm. et les seuils.", "reset__group_share_checked_successfully_template": "Groupe {0} - Fragment {1} vérifié.", - "reset__group_share_title_template": "GROUPE {0} - FRAGM. {1}", + "reset__group_share_title_template": "Groupe {0} - fragm. {1}", "reset__more_info_at": "Plus d'inf. à l'adr.", "reset__need_all_share_template": "Pour la récup., tous les {0} fragm. sont requis", "reset__need_any_share_template": "Pour la récup., {0} fragm. sont requis", @@ -608,15 +608,15 @@ "reset__number_of_shares_info": "= nbre total de listes de mots uniques pour la sauv. du portef.", "reset__one_share": "1 fragm.", "reset__only_one_share_will_be_created": "Un seul fragm. sera créé.", - "reset__recovery_wallet_backup_title": "SEED DE RÉCUP.", - "reset__recovery_share_title_template": "FRAGM. DE RÉCUP. #{0}", + "reset__recovery_wallet_backup_title": "Seed de récup.", + "reset__recovery_share_title_template": "Fragm. de récup. #{0}", "reset__required_number_of_groups": "Le nbre de groupes requis pour la récup.", "reset__select_correct_word": "Sélect. le mot correct par emplacement.", - "reset__select_word_template": "SÉLECTIONNER {0} MOT", + "reset__select_word_template": "Sélectionner {0} mot", "reset__select_word_x_of_y_template": "Mot {0} sur {1}:", "reset__set_it_to_count_template": "Définissez-le sur {0} et vous aurez besoin ", "reset__share_checked_successfully_template": "Le fragm. de récup. #{0} a été vérifié.", - "reset__share_words_title": "SAUV. STANDARD", + "reset__share_words_title": "Sauv. standard", "reset__slip39_checklist_num_groups": "Nbre de groupes", "reset__slip39_checklist_num_shares": "Nbre fragm.", "reset__slip39_checklist_set_num_groups": "Déf. nbre de groupes", @@ -624,21 +624,21 @@ "reset__slip39_checklist_set_sizes": "Déf. tailles et seuils", "reset__slip39_checklist_set_sizes_longer": "Déf. les tailles et seuils par groupe", "reset__slip39_checklist_set_threshold": "Déf. seuil", - "reset__slip39_checklist_title": "LISTE CONTR. SAUVEG.", + "reset__slip39_checklist_title": "Liste contr. sauveg.", "reset__slip39_checklist_write_down": "Noter et vérifier tous les fragm.", "reset__slip39_checklist_write_down_recovery": "Noter et vérifier tous les fragm. de récup.", "reset__the_threshold_sets_the_number_of_shares": "Le seuil définit le nbre de fragm. ", "reset__threshold_info": "= nbre min de listes de mots uniques utilisées pour la récup.", - "reset__title_backup_is_done": "SAUV. TERMINÉE", - "reset__title_create_wallet": "CRÉER PORTEF.", - "reset__title_create_wallet_shamir": "CRÉER PORT. (SHAMIR)", - "reset__title_group_threshold": "SEUIL DU GROUPE", - "reset__title_number_of_groups": "NBRE DE GROUPES", - "reset__title_number_of_shares": "NBRE FRAGM.", - "reset__title_set_group_threshold": "DÉF. SEUIL DE GROUPE", - "reset__title_set_number_of_groups": "DÉF. NBRE DE GROUPES", - "reset__title_set_number_of_shares": "DÉF. NBRE DE FRAGM.", - "reset__title_set_threshold": "DÉF. SEUIL", + "reset__title_backup_is_done": "Sauv. terminée", + "reset__title_create_wallet": "Créer portef.", + "reset__title_create_wallet_shamir": "Créer port. (shamir)", + "reset__title_group_threshold": "Seuil du groupe", + "reset__title_number_of_groups": "Nbre de groupes", + "reset__title_number_of_shares": "Nbre fragm.", + "reset__title_set_group_threshold": "Déf. seuil de groupe", + "reset__title_set_number_of_groups": "Déf. nbre de groupes", + "reset__title_set_number_of_shares": "Déf. nbre de fragm.", + "reset__title_set_threshold": "Déf. seuil", "reset__to_form_group_template": "pour former le Groupe {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Déf. le nbre de fragm. dans le Groupe {0}.", @@ -653,13 +653,13 @@ "rotation__east": "est", "rotation__north": "nord", "rotation__south": "sud", - "rotation__title_change": "MODIFIER ROTATION", + "rotation__title_change": "Modifier rotation", "rotation__west": "ouest", "safety_checks__approve_unsafe_always": "Trezor vous permettra d'approuver certaines actions qui pourraient être dangereuses.", "safety_checks__approve_unsafe_temporary": "Trezor vous laissera temporairement appr. des actions pouvant être dangereuses.", "safety_checks__enforce_strict": "Voulez-vous vraiment appliquer des contrôles de sécurité rigoureux (recommandé) ?", - "safety_checks__title": "CONTRÔLES DE SÉCU.", - "safety_checks__title_safety_override": "CONTOURN. SÉCU.", + "safety_checks__title": "Contrôles de sécu.", + "safety_checks__title_safety_override": "Contourn. sécu.", "sd_card__all_data_will_be_lost": "Toutes les données sur la carte SD seront perdues.", "sd_card__card_required": "Carte SD requise.", "sd_card__disable": "Voulez-vous vraiment supprimer la prot. par carte SD de votre disp. ?", @@ -675,25 +675,25 @@ "sd_card__refresh": "Voulez-vous vraiment remplacer le code secret de la carte SD par un nouveau ?", "sd_card__refreshed": "Vous avez actualisé la prot. par carte SD.", "sd_card__restart": "Voulez-vous redémarrer Trezor en mode bootloader ?", - "sd_card__title": "PROT. PAR CARTE SD", - "sd_card__title_problem": "PROB. DE CARTE SD", + "sd_card__title": "Prot. par carte SD", + "sd_card__title_problem": "Prob. de carte SD", "sd_card__unknown_filesystem": "Système de fichiers inconnu.", "sd_card__unplug_and_insert_correct": "Débranchez le disp. et insérer la carte SD appropriée.", "sd_card__use_different_card": "Utilisez autre carte ou formatez carte SD pour FAT32 filesystem.", "sd_card__wanna_format": "Voulez-vous vraiment formater la carte SD ?", "sd_card__wrong_sd_card": "Mauvaise carte SD.", "send__address_path": "chemin d'adr.", - "send__confirm_sending": "MONTANT DE L'ENVOI", + "send__confirm_sending": "Montant de l'envoi", "send__from_multiple_accounts": "Envoi depuis plusieurs comptes.", "send__including_fee": "Frais inclus :", "send__maximum_fee": "Frais max :", "send__receiving_to_multisig": "Récep. vers adr. multisignatures.", - "send__title_confirm_sending": "CONF. ENVOI", - "send__title_joint_transaction": "TRANS. COMMUNE", - "send__title_receiving_to": "RÉCEP. SUR", - "send__title_sending": "ENVOI", - "send__title_sending_amount": "MONTANT DE L'ENVOI", - "send__title_sending_to": "ENVOI À", + "send__title_confirm_sending": "Conf. envoi", + "send__title_joint_transaction": "Trans. commune", + "send__title_receiving_to": "Récep. sur", + "send__title_sending": "Envoi", + "send__title_sending_amount": "Montant de l'envoi", + "send__title_sending_to": "Envoi à", "send__to_the_total_amount": "Au montant total :", "send__total_amount": "Montant total :", "send__transaction_id": "ID de transaction :", @@ -701,10 +701,10 @@ "share_words__words_in_order": " mots dans l'ordre.", "share_words__wrote_down_all": "J'ai noté tous les ", "sign_message__bytes_template": "{0} octets", - "sign_message__confirm_address": "ADR. DE SIGNATURE", - "sign_message__confirm_message": "CONF. MESSAGE", + "sign_message__confirm_address": "Adr. de signature", + "sign_message__confirm_message": "Conf. message", "sign_message__message_size": "Taille du message :", - "sign_message__verify_address": "VÉRIFIER L'ADR.", + "sign_message__verify_address": "Vérifier l'adr.", "solana__account_index": "Index du compte", "solana__associated_token_account": "Compte de jetons associé", "solana__confirm_multisig": "Conf. multisignatures", @@ -787,10 +787,10 @@ "stellar__wanna_clean_value_key_template": "Voulez-vous effacer la clé de valeur {0} ?", "stellar__your_account": " votre compte", "tezos__baker_address": "Adr. du baker :", - "storage_msg__verifying_pin": "VÉRIFICATION DU PIN", - "storage_msg__processing": "TRAITEMENT", - "storage_msg__starting": "DÉMARRAGE", - "storage_msg__wrong_pin": "PIN INCORRECT", + "storage_msg__verifying_pin": "Vérification du PIN", + "storage_msg__processing": "Traitement", + "storage_msg__starting": "Démarrage", + "storage_msg__wrong_pin": "PIN incorrect", "tezos__balance": "Solde :", "tezos__ballot": "Bulletin de vote :", "tezos__confirm_delegation": "Conf. délégation", @@ -807,18 +807,18 @@ "tutorial__ready_to_use": "Vous êtes prêt à\nutiliser Trezor.", "tutorial__scroll_down": "Utilisez le bouton droit pour lire le contenu lorsqu'il dépasse.\n\rBouton gauche pour faire défiler l'écran vers le haut.", "tutorial__sure_you_want_skip": "Voulez-vous vraiment\nignorer le tutoriel ?", - "tutorial__title_hello": "BONJOUR", - "tutorial__title_screen_scroll": "DÉFILEMENT ÉCRAN", - "tutorial__title_skip": "IGNORER LE TUTORIEL", - "tutorial__title_tutorial_complete": "TUTORIEL TERMINÉ", + "tutorial__title_hello": "Bonjour", + "tutorial__title_screen_scroll": "Défilement écran", + "tutorial__title_skip": "Ignorer le tutoriel", + "tutorial__title_tutorial_complete": "Tutoriel terminé", "tutorial__use_trezor": "Utilisez Trezor avec\nles boutons gauche et droit.\n\rContinuez avec le droit.", "tutorial__welcome_press_right": "Bienvenue sur Trezor. Appuyez sur le bouton droit pour continuer.", "u2f__get": "Augm. et récup. compteur U2F ?", "u2f__set_template": "Déf. compteur U2F sur {0} ?", - "u2f__title_get": "OBTENIR COMPT. U2F", - "u2f__title_set": "DÉF. COMPTEUR U2F", + "u2f__title_get": "Obtenir compt. U2F", + "u2f__title_set": "Déf. compteur U2F", "wipe__info": "Toutes les données seront effacées.", - "wipe__title": "EFFACER DISP.", + "wipe__title": "Effacer disp.", "wipe__want_to_wipe": "Voulez-vous vraiment effacer le disp. ?\n", "wipe_code__change": "Modifier le code d'eff. ?", "wipe_code__changed": "Code d'eff. modifié.", @@ -831,13 +831,13 @@ "wipe_code__mismatch": "Les codes d'eff. ne correspondent pas.", "wipe_code__reenter": "Réentr. code d'eff.", "wipe_code__reenter_to_confirm": "Ressaisissez code d'eff. pour conf.", - "wipe_code__title_check": "VÉRIF CODE EFFACE.", - "wipe_code__title_invalid": "CODE EFF. NON VALIDE", - "wipe_code__title_settings": "PARAM DE CODE EFF.", + "wipe_code__title_check": "Vérif code efface.", + "wipe_code__title_invalid": "Code eff. non valide", + "wipe_code__title_settings": "Param de code eff.", "wipe_code__turn_off": "Désactiver la prot. par code d'eff. ?", "wipe_code__turn_on": "Activer la prot. par code d'eff. ?", "wipe_code__wipe_code_mismatch": "Erreur de code d'eff.", - "word_count__title": "NBR DE MOTS", + "word_count__title": "Nbr de mots", "words__account": "Compte", "words__account_colon": "Compte :", "words__address": "Adr.", @@ -865,15 +865,15 @@ "words__recipient": "Destinataire", "words__sign": "Signer", "words__signer": "Signataire", - "words__title_check": "VÉRIFIER", - "words__title_group": "GROUPE", - "words__title_information": "INFORMATIONS", - "words__title_remember": "RAPPEL", - "words__title_share": "FRAGMENT", - "words__title_shares": "FRAGMENTS", - "words__title_success": "RÉUSSITE", - "words__title_summary": "RÉSUMÉ", - "words__title_threshold": "SEUIL", + "words__title_check": "Vérifier", + "words__title_group": "Groupe", + "words__title_information": "Informations", + "words__title_remember": "Rappel", + "words__title_share": "Fragment", + "words__title_shares": "Fragments", + "words__title_success": "Réussite", + "words__title_summary": "Résumé", + "words__title_threshold": "Seuil", "words__unknown": "Inconnu", "words__warning": "Avertissement", "words__writable": "Modifiable", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 88ba24ecda..648ba06e5d 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "90736ae8e42f99fb99a51af2cd7635a5b23edcec2984dfbe036c09aac6e18e64", - "datetime": "2024-05-06T12:59:07.941559", - "commit": "6011fca897a639e9b78568921d6f54f19b5c9936" + "merkle_root": "3914b5ae3576923ab539501e2f1789c5b9aa20c6a64dbf1429e2e3aeb49e2aa5", + "datetime": "2024-05-07T15:07:13.690256", + "commit": "d9d7aebd48c6fde3262b3e7f89a4c30d5d27dfde" }, "history": [ { From 50eba3cfbb9c6cde68d9c0d421db556f8b7bbe32 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 7 May 2024 15:09:26 +0200 Subject: [PATCH 026/626] refactor(core): update other langs fixtures [no changelog] --- tests/ui_tests/fixtures.json | 7285 +++++++++++++++++----------------- 1 file changed, 3653 insertions(+), 3632 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index bf6d31e293..9e7503be1f 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -738,9 +738,9 @@ "T2B1": { "click_tests": { "T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f1187009ad9b010c8c57570a113b5950b7f6821468057ba8b5ca92508007544d", -"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "5d5665c29585526e07491b3c66ce0dd5ebcf0b2c15da3577e183e04df3a00e09", +"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "248d3de9d6f90e91ee5d019a0b6cb1146bcbe41908fd515cce809fe079cc7420", "T2B1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "724cd9716838c5c4f2580425885476b4aff27038589a9cf59906de1f7ba08741", -"T2B1_cs_test_autolock.py::test_autolock_interrupts_signing": "438d530d62209e65b22952b246400f8dca3298f1aed0729cf98dfc4179b46c8b", +"T2B1_cs_test_autolock.py::test_autolock_interrupts_signing": "02874299d8db61ad9fe894f3bdda6267e61e89258b2912dcd9ce996e97548410", "T2B1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "7e37d10fd0fb53741c00fae0249e149f812a84cc36f0aab072e83b7cbfe55d33", "T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "c272f39acc61f4b107c4f22ced26a358a1ab1a8fe84ddbe5d5eb55d21846a32e", "T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "cf159a4d1b3eefa80fe2d3034db7e136c757de4eb8c3ac087e63114f6ad1c551", @@ -758,19 +758,19 @@ "T2B1_cs_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "26ccf5e617ca7014c7801c10c3b4be2e011457a6969109f709824494123ab98a", "T2B1_cs_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ba468e87e835f86f67e382ad4175d3f95de2b45207b141f7226ec983d4fbc36e", "T2B1_cs_test_passphrase_tr.py::test_passphrase_loop_all_characters": "42717296ddc466af7f2ff36d3ff80345f0e7dcaa8950d2daccd2402ada07a33b", -"T2B1_cs_test_pin.py::test_pin_change": "775c5606529b292b597c9879d370699644b7da71966450d56cc971248db4a7a5", +"T2B1_cs_test_pin.py::test_pin_change": "8b7d47098fcd794be49486e10b4741923fb8e7b45c0d3542adbcc2126b194691", "T2B1_cs_test_pin.py::test_pin_delete_hold": "14f636bb512ddbd199f98d0084e25636bc1b6e61bad3c392327d073c0949c3cc", "T2B1_cs_test_pin.py::test_pin_empty_cannot_send": "f5a9eab8ae7fcba02628bc5d3af9b1b05e978fd6c07381bab96d9b8c5d0a9cb7", "T2B1_cs_test_pin.py::test_pin_incorrect": "553f416caf4529f60b5729ec165e92b00758360482cc588393499d9687058bbf", "T2B1_cs_test_pin.py::test_pin_long": "def7f1ed3d39a71a961671e84048664f0ac8f5881f28907cac69d3191992b32b", "T2B1_cs_test_pin.py::test_pin_long_delete": "bb6e0ce9ae0ba2275aad2bd1fe55bd598a7a0aa8ba3a652ea575f4b1d9a8ce62", "T2B1_cs_test_pin.py::test_pin_longer_than_max": "e803370869e1d4d1e5712f0d50517b3dca111e80e764b757d0535c7a1dea09d3", -"T2B1_cs_test_pin.py::test_pin_same_as_wipe_code": "68ff8e471ba1386c0367ebfb5e797bb96e26f2aaf95b29aee8d278010a0fa56a", -"T2B1_cs_test_pin.py::test_pin_setup": "0856375c6102cb2213d205a86ac0512a0c727fde3ef74e0e1254870834aba7fa", -"T2B1_cs_test_pin.py::test_pin_setup_mismatch": "9e60377fddf5a5ee586313034782f4bec7178fe53cdc833c12729a3f8af23647", +"T2B1_cs_test_pin.py::test_pin_same_as_wipe_code": "cc51d2d9d46c2374c1ec6551624f848fafbded8af762c9dc1250698b8ea77ca9", +"T2B1_cs_test_pin.py::test_pin_setup": "971f59d39aed4609f220c6d3c16322617a7773295bd41be72877fd76ff2c7ff8", +"T2B1_cs_test_pin.py::test_pin_setup_mismatch": "41da639b7b8d8446b7b4e18df7f4d9a065e4ca418fa82cdb907db4326bc1e10e", "T2B1_cs_test_pin.py::test_pin_short": "3ab81cf8e392b3a5dae098b708866e5412042563844f44b633df2e946df1661e", -"T2B1_cs_test_pin.py::test_wipe_code_same_as_pin": "12717e98c6e96cdbd0519cc43765606305ffd81e40eb8326a030501072877cca", -"T2B1_cs_test_pin.py::test_wipe_code_setup": "99cd98d5e8f6160cc3c86cdb5eab43e31d5bec572c1af65bba4e3857128e7cec", +"T2B1_cs_test_pin.py::test_wipe_code_same_as_pin": "54ac7437efa78aa1d9d2ab2ffee9bc4884765a42da2d2ee0ee75c5cce8702f57", +"T2B1_cs_test_pin.py::test_wipe_code_setup": "a04b640c59cc1f0bfaf3e91450ce3a61a03e4b77a3596df5e2dbfa302fb87f61", "T2B1_cs_test_recovery.py::test_recovery_bip39": "b39bed5f9adcbcfb54a2c6da36aa1f694cd3fa17c94a262ce1f53000084852f3", "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "48dde6e5b926c445947b344bef1fff91f4016f4033a5b5693837d8e5757cd1a1", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "78a2ce9924b7758a97853d1ab27bbbc2f8be1dfe9f2d14014de803aa0bb62d30", @@ -783,9 +783,9 @@ "T2B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", "T2B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", "T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "9c27bf9333ffbb46c561f090ca0b626c51f97e42be966fa7325e9a8a211917aa", -"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "12e3301776e18d72b9e6b8a4eebde1bcaddf8ee7da3f7aa29c9d7c5d478065c3", +"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "c7611f87512353c4140725d96e1e39ba24cbeb7a611d83379b939d706ccd2ba6", "T2B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "d14aa9dd9e0d8fbfb5b4018271b939434b7951a3dbc24e46ffa96e47a816bed9", -"T2B1_de_test_autolock.py::test_autolock_interrupts_signing": "666d77f16edfe12f121917d200a4b83c146cac7264ad0fe9f82a429f9b6af49d", +"T2B1_de_test_autolock.py::test_autolock_interrupts_signing": "2b6718ec5c0978d1c8028eff7e9653e0bf069d01d2354fdffa6f350c4f9ad63c", "T2B1_de_test_autolock.py::test_autolock_passphrase_keyboard": "112ea6d5bd593e28b376a6ba04c6d60c39df2fdce1ed4a40b215b716a7ffd9b0", "T2B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "f365e2ed0d3ec8c2b49c602df1649bd0b339ef325623250339ea443e39dd52f2", "T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "c48381a4420c0a6c9892ed24a4c2863dc2ef6492422335af7c1fc15957f15893", @@ -810,12 +810,12 @@ "T2B1_de_test_pin.py::test_pin_long": "7b543e536c9ad5e3d970d62b5be764d8b380972c35aeab6c24374cd6798bc159", "T2B1_de_test_pin.py::test_pin_long_delete": "363226d550efba6831fc866b9411d244e5560fa66e0d10b397916712deb10fa7", "T2B1_de_test_pin.py::test_pin_longer_than_max": "d5a3d41ffd42bb91927ccb39ad6029ded8a8240c0a8b7a709a06bca8c8dce052", -"T2B1_de_test_pin.py::test_pin_same_as_wipe_code": "61af00dc2708edc861f0187d334505d5399d800af9ff9d9acddd7664616ef8bb", -"T2B1_de_test_pin.py::test_pin_setup": "c29d66070b297a89e271f279fc71e6b511bd8c355d918d9f95d849986ceb85a8", -"T2B1_de_test_pin.py::test_pin_setup_mismatch": "8be60c3c3486cbdbd7aa1207199fe62be8853a1128fb9b9ace9f49fce6f8dc59", +"T2B1_de_test_pin.py::test_pin_same_as_wipe_code": "da14ce4c84d3e052ac22eaf3b8bc965f79e92a52d227f66b1c9a6cb8ce3bfcae", +"T2B1_de_test_pin.py::test_pin_setup": "e1f572457c54d830d331fd826f9f36fcc8f9e13cadc0a231f564443f51c703fb", +"T2B1_de_test_pin.py::test_pin_setup_mismatch": "d8186819e4483ebf85bf929420432d72f41b44c7900ef7b7319763e0f1b72ca5", "T2B1_de_test_pin.py::test_pin_short": "83e7a8ceeab1210100dcdd99d8beee7de6af772daf1c56a574ad823f644f33e9", -"T2B1_de_test_pin.py::test_wipe_code_same_as_pin": "75fc44c4052d08dffaa7fb81e92722f2faf22cd09661634183f573a755a0250a", -"T2B1_de_test_pin.py::test_wipe_code_setup": "8650953d575b51a0266a4c745a2c395076be0f15f3c073733173dcfcabf5233a", +"T2B1_de_test_pin.py::test_wipe_code_same_as_pin": "ce44be19f56562e130bea35ba9ea87299609519a0790398eab16c9cbc5d986d6", +"T2B1_de_test_pin.py::test_wipe_code_setup": "8f1352109892e8f1768a023700c75e5f45cbd225428cce19639db55e71bf7c57", "T2B1_de_test_recovery.py::test_recovery_bip39": "4982804edb96e55b635b24f64ee07e5ab98d4a7c5aa999870c318d49f64e6bce", "T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "ae7d2ea0bf92eb7da2a2604f285687995849b267318ac5229f663784c448fcf1", "T2B1_de_test_recovery.py::test_recovery_slip39_basic": "26f47dfda39e927f17ded8054a2e892a24d56d0c04fead1e0ac30160c20d5f66", @@ -900,12 +900,12 @@ "T2B1_es_test_pin.py::test_pin_long": "bc88b7b89b54074a582e9df5be9136d5c27d343099f7ea02ab9ddbe9fcbab3e1", "T2B1_es_test_pin.py::test_pin_long_delete": "4143b2ff210dfabb790f52e8fafaefa0fc7716d5d845955edd6c1373ea9e5e9a", "T2B1_es_test_pin.py::test_pin_longer_than_max": "2569644bdfbc1d8b39e8d51a6cdd42078e4dfd3f268f51c80ebc9be927587bd7", -"T2B1_es_test_pin.py::test_pin_same_as_wipe_code": "1a6e038435960953f0abf512f59cc0ffaf9a60573d42461609fd90a1082a8d12", -"T2B1_es_test_pin.py::test_pin_setup": "69b30e2315419d911d55b36efcb24f57895ba86a78646acd65b21a374cfc73ad", -"T2B1_es_test_pin.py::test_pin_setup_mismatch": "abd1440158e6aacc5469e6e1508753a12d6b80be13d13ee16a4acfcc2f2e75c5", +"T2B1_es_test_pin.py::test_pin_same_as_wipe_code": "d2a657a42c5a37e5c708c8dce8300635790c454fb4ea9b3b7ebbd41f3bc922c3", +"T2B1_es_test_pin.py::test_pin_setup": "758d1f8c07ee7c6659dccce3bdb8b3fa252a56cd440b252edfbb0d57e8717104", +"T2B1_es_test_pin.py::test_pin_setup_mismatch": "5c2706aa9ac8a9a0f6175353d67b1750ba6a329ccb3acf6b2cbfc86c96db5d47", "T2B1_es_test_pin.py::test_pin_short": "0e99a5101d7ea8e56aa6fd0f1ddb7e5458c0d9621ba4408427dcb27448a9773d", -"T2B1_es_test_pin.py::test_wipe_code_same_as_pin": "4921e020138e655ff2ac9ec166898a776a8b5e646bb2d7683a8f8000c22eb602", -"T2B1_es_test_pin.py::test_wipe_code_setup": "f5f5e16a4afaac69d3871185ea1e8c537abcfe16aa0f568f42a7eed0e0f3459b", +"T2B1_es_test_pin.py::test_wipe_code_same_as_pin": "de05c94ff93ed2effdf93cc6587657b05a8c72773ce8eb6609bae62e1ebe1e8c", +"T2B1_es_test_pin.py::test_wipe_code_setup": "28dc846e7b88f147a7c5a6b2707417b253ccc1155778de9e13e8a170e9f3503c", "T2B1_es_test_recovery.py::test_recovery_bip39": "d836420b4c87a47c4f6d764fa87917d64f40b9cd8154c1b0739e76c9b4226712", "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "fb6366eb8f5862120aaecae5567e934546bf06bce43fce91305f4130b3e47640", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "40d49a424c770eae159c3ffa8d22709f014caf940e6600861c18e78538f5edb6", @@ -938,19 +938,19 @@ "T2B1_fr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "61c6497db6c69de9338547c8184bdbcd1cb452ad1f36ab37f4516a90473441fd", "T2B1_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "8da058fa6f29f5327cffe6239655cddf530719f0dcecb3cded5554f0f317a9c7", "T2B1_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "9f70b92d9ccdbdf713e473f25e12f0a81684b1070483f6e4efa14dc2f30612de", -"T2B1_fr_test_pin.py::test_pin_change": "19a0864080740a08b11c4774a19026956b7501a62b71e42efd296afc6ed1919d", +"T2B1_fr_test_pin.py::test_pin_change": "a56b215fc633721feccde9909db5e4afadaedc3974e65656549b8344f3731ee0", "T2B1_fr_test_pin.py::test_pin_delete_hold": "42f9519ec2d2024c080349172e03e3e9140538312bc26176536c8b2cb5eab5c4", "T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "1958a46f370c079099f1631fc35f5af949473fe9e1fb1e09e8bceb577918f8f4", "T2B1_fr_test_pin.py::test_pin_incorrect": "45cd1b92b4978ba3e0e5fc5e821119ae454d7916b633b4e6d2a1539d8d0545bd", "T2B1_fr_test_pin.py::test_pin_long": "f0387f65dc401252af9819b93570213283de6d38f24e2bd87723a2e97f6c9118", "T2B1_fr_test_pin.py::test_pin_long_delete": "7bdd766f295d866016457ea6335bb51deca66e5293da460d58cca9a0d96d8470", "T2B1_fr_test_pin.py::test_pin_longer_than_max": "ecec02d80b637d81900c83d460bc198981a37ada1d5c57914b77e45884a52e9f", -"T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "aeabb114ea4206555272613fa5a754c41233f45d4a26b2de7b72f513b6c6e54b", -"T2B1_fr_test_pin.py::test_pin_setup": "a2943cab988b96cea6cbf1397c1ca54bb10b19d186ba5b3b98dc203b4c8f0639", -"T2B1_fr_test_pin.py::test_pin_setup_mismatch": "9352e53d9070134d37b7c07df3e3ce89457ac90f7cc5e21d11a3e6ea5ec3546b", +"T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "287226fa2b15fc4bff47335e052ee853e26d75cc35db38175d66a18d8e5050c7", +"T2B1_fr_test_pin.py::test_pin_setup": "56312a77d93ba23745f020f1db6e08c2520243e5fb5839c9b1c752c84299a302", +"T2B1_fr_test_pin.py::test_pin_setup_mismatch": "2355be5932873459592cbfed1950b07cf03a88aee418b8d8645476953450de8b", "T2B1_fr_test_pin.py::test_pin_short": "381e7af4da1c2d01bfc426f263190b06e44812bcab495220fe98779255cc9648", -"T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "4bd5af4c7da6aa9173143e0ec58b119e502b975284a3182a7b830c19feccc76e", -"T2B1_fr_test_pin.py::test_wipe_code_setup": "21c06640f18b423eaba39d4b40beebad24a72e4ed620e707a21f54e8fdedc33c", +"T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "847dc181953db227e00e0d616f3cedabe367e4684e0fc77aa6dedc0abc67546d", +"T2B1_fr_test_pin.py::test_wipe_code_setup": "746bdefd49d511099c5fe90663e2ffdff261821960f3f663295349bca359a57a", "T2B1_fr_test_recovery.py::test_recovery_bip39": "7345536d86da59f83e498ac6fc6ee42f2b5c9ead902c41caae6d08c57f6129b6", "T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "2293f0baf03ca5850988b736c0e6e684c116291a54108a77134a3e1dc16405f7", "T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "af734abbec86878d07875a03fd264547e00ad61d11999d4f1ab5582ff46b2e15", @@ -968,31 +968,31 @@ "T2B1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "396a3731cf3218fd70052769be16e36be424e3accc0c6352d962eb56e67ca1b2", "T2B1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "977be292c8a15e593ee283a90b3af438e3a45bdea7566e43fb81bbf7a03cede0", "T2B1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "0e0f5c16c05a0628df9783ede1ec04e7bf06c6aa10575f00c19822bb7f1fa4ca", -"T2B1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "f753c678557d3dbf5902539977c345b98a1ba5efd294429945c9d04140256e45", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4b0ffcb1bc90942b3dd470a4e3ddd04be5dc6f770506afdd847b092d1f1d5ee4", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e4dd1b8ed8f5a510a786252b3768d293190b4288c25ecde87c90be66e57f65ed", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "5d41de936b58f607746341409a1dc0262b48799f3f2ab7c5388c94bbcb6772b7", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "4b0ffcb1bc90942b3dd470a4e3ddd04be5dc6f770506afdd847b092d1f1d5ee4", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e4dd1b8ed8f5a510a786252b3768d293190b4288c25ecde87c90be66e57f65ed", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "5d41de936b58f607746341409a1dc0262b48799f3f2ab7c5388c94bbcb6772b7", +"T2B1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "a1f27ad27988e4347a04268b8ce673b8f2c13ba0060970df789a0285b806b745", +"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2d0818c80d9e082527782ffd5c5a0e16f01cc52be4dd3c1f21a75d0d7451cf7c", +"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "81bdc339580bfae6802d35bb370710aa2b114c80125352b19fb2f881ec969c95", +"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "525e7779c1d0462c166aa74513678c707d6c37c3235047a97625c3f03bfc0f8c", +"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2d0818c80d9e082527782ffd5c5a0e16f01cc52be4dd3c1f21a75d0d7451cf7c", +"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "81bdc339580bfae6802d35bb370710aa2b114c80125352b19fb2f881ec969c95", +"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "525e7779c1d0462c166aa74513678c707d6c37c3235047a97625c3f03bfc0f8c", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ed5c1960389f48032dd6f27d6683ca78c5e79a4a295500e4b83a5a368d0e406d", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6ccfdf12ec748ecf1717eeadf42e392e3636bd5c567b45fe7f6ca48db41bda43", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "32b25b6de46f3ebc29be9841dc162b61c561d314a97e683b26a0bd84d391625a", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6731877dffb2f660016695b8880961d9f8f72cb783fd111bcaf53c573cfc2201", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "0e8ac9ad590e2de58760cf62a2cc45ffbe85560ce211ad35bd403c89b89b1fe5", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "0e8ac9ad590e2de58760cf62a2cc45ffbe85560ce211ad35bd403c89b89b1fe5", +"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c2892ee7eabbe69c77b80e9283604224c512ac876e85648520d1ea4ea35e7593", +"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c2892ee7eabbe69c77b80e9283604224c512ac876e85648520d1ea4ea35e7593", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "c8ff767346e56aadabcdce445535211dc94ecec88149cf1048d8439393161288", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "30e0e31dda9d5703bc3afc500b8ea9c85fbd34b2cd8a6d9b9b0976fe155826cd", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "4c80791396ac4980740aa3eec5331a2f572ce11a5fe81065ddb374212dcafd02", +"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5ac9b722e18622fb08e3c872641938705df8c04db2d0f4a455ab0195028ece1a", +"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "d4128698d292c124c0c222fc1919e662f0ec9a07f3cb6eb6920002a927193090", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "2adcb6f0ebc02c938e71c079e66b7445cad1843d5c58f755fc7bf97c2cb88451", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "2adcb6f0ebc02c938e71c079e66b7445cad1843d5c58f755fc7bf97c2cb88451", -"T2B1_cs_bitcoin-test_bcash.py::test_attack_change_input": "dfb9ac56cb02883c4d296063c208961fe404ef912450d00191be4c5af8ab5231", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_change": "9ac678917c2bc687c50e5650a2513a2f9aea322e094b9a8c6e185367ce7eb7e5", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "09ab55b17969d85fb83f29396b45202e8fb36316a0039c9dbfe248cd427ad0ce", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "aea96dd66f101bded7eb65205573f603d682a8968a6a440d94958874c0d28ea5", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "fe6115fdd49e8d14649521ef25a82a50acfb34008f0f0b93151b06cbd9bb7508", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "8ac8c8154156a06d9f1a6eb07c74a23b082735cf8ff4dfa21705df83d4149dfb", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a8d1e5c8b3464bbb6156cceb36a1f129540ea9e53ef344da8394d8edef5dc5da", +"T2B1_cs_bitcoin-test_bcash.py::test_attack_change_input": "2911ebb4ca66c500fae919354476ac74b96ab5aa3066232f51ec8c7c24b4724f", +"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_change": "f2aeb15c67b76383f25444842da6bd4d2b42e6e74fba481c8493b3778fa0a553", +"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "8d04d1807c64f3f37ba84a83b12a7da52d1ee25d5528eccec104171417236a4e", +"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "af1f6cf3c0f18ec6b057e1ac516972a29dca77865d2cec86151e5137461357b8", +"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "5e76c0b4db4cf7d79082ae13fff69338ede0cda3baed736a9e1a5fe36342eaf4", +"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "3b4415f68f0f42cafd5b84bb30250b53f49b1ed2f4a70fa8f77f5e5f01663b4a", +"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "9c30168009a527244092954d76950b3dbeb67298c4cabd6e22d522d2aa8d3de9", "T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "1934842b0ca1f4924871ac18a07592c33fb4fae3648ced2d6c3412260b7fbfd5", "T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "d8ed600417c4cf1a116dff76ad7eb6d2b897495f89670ed392719ebf3272e102", "T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "dcf61e5c49b8a8d5b1128a18ed61434830f608661b975e0be2e01592dc606775", @@ -1029,30 +1029,30 @@ "T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5e799795408a06b51386c46337dc058c6b70f9854dae55f4ce9205b5b3a0e87c", "T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "8870e5239dfeb2db088e915cc7eaf3f3c6f27ef9a837935c74cc9559055d87d2", "T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "55f01f92ee4148f5bbc3af43ce39b90cd36708610f8843886decaad31c7c00f4", -"T2B1_cs_bitcoin-test_firo.py::test_spend_lelantus": "1cd2a0220594eac40375fb3c1471c78f92c526b495f7da1cae82c74fc50a9419", -"T2B1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "8dd99774053453c9ccd5496c8738903c382be254a3a84ac15a958dd6587223f7", +"T2B1_cs_bitcoin-test_firo.py::test_spend_lelantus": "1c623955f453c9eb1f33c8da37a2fb33d157a909df32cf2711f331a087aed0a9", +"T2B1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "b32128c52d3ba8c1445746cbfc2575582fede5e63aa3f4b11bbe07d53742e218", "T2B1_cs_bitcoin-test_getaddress.py::test_address_mac": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_bch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "3aca73428d7b2c221a14a4c47acec866de1c65d59dd4a0de724fecc26beb0328", +"T2B1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "b8d2703e4365eadbe2a906450fb2d7a21f73777bdc92f5fcd2c357816e10aac4", "T2B1_cs_bitcoin-test_getaddress.py::test_btc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_crw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_elements": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_grs": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_invalid_path": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_ltc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_multisig": "3db1a0404b06bdd0b6c36637569eddd0e58e86fe45c447770f55385300de63ff", +"T2B1_cs_bitcoin-test_getaddress.py::test_multisig": "67a5a7017687f58c8b72b87812fd185bbe68c7b62435d6d90ed812c0cb9e6851", "T2B1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "beeb948756c73530fc7d8bf315a1322e84a446e730f1e67df7232980c1258e0f", +"T2B1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "240dca1253fb9ee33ce68c4a08a6bf62338159f46f5fd0612a918ab012c81db8", "T2B1_cs_bitcoin-test_getaddress.py::test_public_ckd": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_tbtc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress.py::test_tgrs": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_unknown_path": "47e5dd3f519018ece43e320b1d4dab9824cf838165979cc5f28705aac38cd034", +"T2B1_cs_bitcoin-test_getaddress.py::test_unknown_path": "89e70de91ae7a1bfe7e66e40b32c2bb0ee73417f6a9c31df77676f1719523103", "T2B1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "5d31c4c302fd49fd7acb13fafc9dbbd09f8b41312b1a735430ecccc4e7d46c10", -"T2B1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "300c93ed7bf3167fc1baa28a5d9ccabe993468124cd5d5646f107fad54fa630f", +"T2B1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "671a70ade41e3aa06b32abdbfd3f2ab8a1e88ee2ae18fc34b8babdad82a60ab3", "T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -1093,14 +1093,14 @@ "T2B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a80a313bd904775904ebf7efa0bc4053687f1a9d42d04323f4a198fe04ea1ad8", "T2B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "75dc1898bb22418ce382706e454dfe135ec071197b9ace91032f8a6d27abf1a8", "T2B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "5511db50e30177b37fa1529f993f54062f087672c4bffb17f7620e1045dc23f9", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "280888408d5dd2049325f49616589d1d3a24a7399735d84778e919144d4d507c", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "42bf3e5283737d7e7728fcf336d09a01317fbe2c648d6f194eba923afc732d17", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "e27fe3ad5950c982b0fa010d3a67c1bc2cff29bed32f7bc5642f1ba7625d0a2b", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "e27fe3ad5950c982b0fa010d3a67c1bc2cff29bed32f7bc5642f1ba7625d0a2b", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "20d382411bb848f46732fc2153abeca890af64cb9bcf2a8102f2b5e96203637f", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "8f8bbaeb9f4ddd7c0795e0fc22e37fb9b1dd88513543111cff167f67957e0a48", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "d6b10f6f6cbab4e8d2a5b79507359ee309bdc267c172ab9fd1a0798e3599d33b", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "8ece55906baf03709e9d6fd5a47208bf59ecb046f447074283f7ea5239f1b972", +"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "d8146b33e412805dbc7babf9bd8dda1afa060e6e64f700b998dd81f0117e02bf", +"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "cd47343515173247414271395e688db7f59d6d16bf9384bf25f0c1bc2bb72438", +"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "6e31f2a710b25ae677b84454dfb0c12816c4e514b4a39ee3d45e17439ab83f9f", +"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "6e31f2a710b25ae677b84454dfb0c12816c4e514b4a39ee3d45e17439ab83f9f", +"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "8671612925256d7b43c0cac88f53fb1c9ae3867d0dcb046e90f5ca79f5067d72", +"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "78154477cd531d9780a72c813de228931e9d6d2ad6a4fdc791c45c1d692c36c6", +"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "7e7c13df153005d214f19299ae997fc29388158d5f85d4f97a21c66d79654880", +"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fa2c16444adc33bf48ac17dffa9f225e3ff92e7b5caa812a304ca7a2345ee910", "T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "104a2573a3fbba0126af537fee4da98523d0929e859bae6dbf1bad464e303113", "T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "00ac5e9b64d0f31d5b50c8f37ef41671ff7d76fe814318602ecbc3b429be1772", "T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "796617d377689bce979b1bf083034fb731ab8ad0390232f34c523856fd1eaca0", @@ -1131,15 +1131,15 @@ "T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "d8ed600417c4cf1a116dff76ad7eb6d2b897495f89670ed392719ebf3272e102", "T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "c07009d0992e84d787d9daeb207a2cb907d855e39aba88d61efbfb5bdd031a50", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "0167f9b67ad0e6fcea5bf19d9225231c8b8488ab469709fe400ecce0d5b88e9f", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "08fe1e1bfabb399a50c9fdfbdd2db865352681d38aa53d67b7967dddd1862b49", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "2df6760eb6c5354e43e5360707eac4d388b1f7061a4bfcc2c063dc72121376ea", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "eae453ffd2e77ec9992540d737a9ad31fb48d84cfa717d022acba1873ff73114", +"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "734bb2ec8061f557ab62202552d8252d03504f1c4c47340d602151c4958b18e1", +"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "85ef93ea8819f7b4ef38d1168b0580ceb992807ccc8ffc20d3ff7fe41f0187de", +"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "32584b91207a7c1a40c3f514f3fcef0b5c1db5b7ddea132d8b9d15a03e5bb981", +"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "7b3e5072bf75e2e92198bc8699ec12bf439e45538c229f6ef8ac25be90439437", "T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "481fedbaa83a76effdbd7753abb388a4f8426f031886109600bfad6b418375d5", "T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "566c79dbf610d8011e819909c9011fbc3306de0c7da6cf0d5029091159abb130", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "9b6060ee678f4f65d8c3ea308a9bd224bf32c0da38d8a1c08ac548fb9588aafd", +"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "17442c6db5498748756c7e42710b58b2198d6d67bfd460211a78632149aa9af5", "T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "172d8773719cfed27d63f4497980e2da5a60c897cc3747f525324a57805e7e10", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "b0701f7b6457951f3fe46b7e3058f95e61e44e88115ca658536bbd44cc9c100c", +"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fe3a9aed880dee348cd5aafa9791deff986153a95d3f58cb7062f81050e98df3", "T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -1158,75 +1158,75 @@ "T2B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_grs.py::test_legacy": "eae99d32454d6bc55a7c9db77cacc7c7142eb1a401f04cffeaf3f4a94d8d7598", +"T2B1_cs_bitcoin-test_grs.py::test_legacy": "4fa5b3f97b08a0e56b917ed92b30be67ba6b6fd9970fe1697309230a3a2f736a", "T2B1_cs_bitcoin-test_grs.py::test_legacy_change": "5a381b8c951ba7fd2dc6074a62ffb445a389d3caeb0de8e389e3a2943da8e4de", -"T2B1_cs_bitcoin-test_grs.py::test_send_p2tr": "0d32722f5338b8461ad8c3d5cd097f37d920484af33e47ee62a2043d7d28ad2f", -"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_native": "38b884480bbe36c26ea943e005be77cdf435735b80145bedb4e3ebf625f7f4e4", -"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "178a762b21842535de5d7f75042fe1b49253362f7b82e22573d71cf25a83f9d0", -"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "dca674bf6407691de515ff35e895f7a6251b523cfeda630980d6a7c599ac10a5", -"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "919050b24a8dfd58e4f5ff179a0bc03f3df6cd2408aafe3f2157c005c3b9d1b3", -"T2B1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "45f41181e86fc56f8e1e48b528ee1e09f69e747a68b53adce7773b4f54486cbd", -"T2B1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "02940f9eb736d041534fd30ee58c9e2c60aeefe4a451032ddbd58d8f5ca884c2", -"T2B1_cs_bitcoin-test_multisig.py::test_15_of_15": "f33cf9902594893433d40bb098ba042a3183f958a5eebe2f03dfd5a754f65a41", -"T2B1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "38afd2c951afc54fdd9f50a1c92087335ff90a6647d6783364f1546fd53787e7", -"T2B1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "2845a26012f59f590bd9b6ac31e7c7765f6b43bad2d344cf7298c25754517908", -"T2B1_cs_bitcoin-test_multisig.py::test_attack_change_input": "42fb17153ee871e0402bf070012d7b8fa331732abbe3da17901ecd091b673af4", +"T2B1_cs_bitcoin-test_grs.py::test_send_p2tr": "f3e04de3a8bd801d4e4001cbd079fa92437f3e8718a9302bd68eb10f6f86ddd0", +"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_native": "f75b6cd7c0f0a7c17caf852dd4cede262dcaa333fe73aed44c7da87a04fe6776", +"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "e403a1853ad951dd8da5936a5b515e284779d277c8e3bb640bced4cd5f845b78", +"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "1e7230d208662bc24107d924655164dafc8b93ec53400f3df5c3855207db1f7e", +"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "c50feb36eed00bb26ddadce6408ea0dbd3cb2cf4696b9efc3af314edec45e8c9", +"T2B1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "9c982836ff4e50f275b8440f07bb85febb867b21d83b2440a8c12e080d1c9866", +"T2B1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f76f0b3b9f59368a7f66b07ce2ece25ca833f57d408b446c006ef352ee73c9c1", +"T2B1_cs_bitcoin-test_multisig.py::test_15_of_15": "d7a33dca58ff78b2d5b949bb8aed4493766b3960587b41560b5e54aba22041a0", +"T2B1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "9ba8b7e8b757cecae8d45b29252470cb1b93a5f6b89063a2d8f4e476b81461f1", +"T2B1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e50acc704d7f8bacfddb9f8b086f2ea3fa990df7dbefe9b59454957789b875a4", +"T2B1_cs_bitcoin-test_multisig.py::test_attack_change_input": "df93202c28aafb26510333d14811a506ed80020273236920d0b20ea336cfcbc9", "T2B1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_multisig_change.py::test_external_external": "8991811bd281775263b2b5892a1835327043d008f70f477be825fe85890b6c53", -"T2B1_cs_bitcoin-test_multisig_change.py::test_external_internal": "f7d72479d712e6a8f69bf082058b824bea295102d510989a60a1e76ec225eecf", -"T2B1_cs_bitcoin-test_multisig_change.py::test_internal_external": "8897bee4fb180f4b62a9a31aa49e7b9be1b6b12ddbda8649c16191ff72f18538", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "7eec6cfb3c6d24635bc74bbc5eca62aecbc9082f936822fef4400bfdb07bb271", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "b9296a5bd0ad87ac38725fe835c23c4af8306f5ab9a6995266d0f039de3242a8", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "80a0e55ba48d4a822a11b04adcdc6cdcfa4847c5470a61cb8b250d86f87913c1", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "445efecf914b7d2b936a4f09b67008e990a4ad1cc04b3a5fe78e361af51430c3", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "929bd899484466df19cba7a6ac33a96816e54557b50a131857c5bb625ec5c43d", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "6f4258fd07eabc701e5b627eb971d513482954be198d026c74d7a89a25fce2d4", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "0bf6ff7e55efb1cec02252bf604b8938ce6c46e6c5e2b6850382b442a431cbe8", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ec644277c3e1a3826d923ec096b5b649bf58256f46858822715b32cfcef97ba8", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "37d5b95c5783f3b8c3183c32c17d198affc2fbd822e19589e8532abb0b50f45a", +"T2B1_cs_bitcoin-test_multisig_change.py::test_external_external": "5a10a94e93233e2d10abafd429896364602a4c7e78f8fcd33c506cbd11800fcf", +"T2B1_cs_bitcoin-test_multisig_change.py::test_external_internal": "8501ad0a8b5edac4b408532f36e743e88349bccd12199132b157aa2c16ac5520", +"T2B1_cs_bitcoin-test_multisig_change.py::test_internal_external": "fd703d741f3d0bd1388c6d6e2e7afd721ce0b00ab98384f7da384e8fbabd1bb3", +"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "3094107820be5a7e562b860a7b6507105aa8ce2556837816e3e452655f56a4dd", +"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "0aeab0506f7ac68e793c183902ba288e1df1da6883c11531ab8b3dad4ddd779f", +"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "9620dece0b0b1a18d9c89fe42e3f4f1709d061fde52e1190082ba65b8e08b034", +"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "3093ee11beffc996e8d6f58ea3e11629e45ce9f7f2f00a1fb14bc93057e89c7a", +"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "9882c519c46233bc22e939009d9f6f78a7fc9c7362c7c38ce385d49f213314a5", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3554e6f58551f63e271e3ce0bee56f09b5a52f96fbb9d35d2d116382ea245ea6", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "e3db8f9a3df030c72c8eff363fdcfe4d6313f6392533474933d36c0486723ecc", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f69ca9b77243e5d274c5cf0e3c5cb54f12e89e194d6d1b2e0f4ad1c9d9889689", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "b4c134c61c2b6b09e5244ddb93886f1dfd83b4ed6afad78c5e1595672e7e62d0", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "0d77fff3a02a1cb4231944db2b5412b130ebb972886e8016bad789b60a871e2e", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "5987ca160864845e5de561daab111e6ff4f9a1d27dfdabbd94346bd3052e8e61", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "55195c8dd47c16b9d70a8ef402d9177d9ee5354481f8a96977eba35abca94884", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "ae474705569a73d0b0856d992215b3a943c1803e03c12d7416601c57a03b6917", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d4c4983d1093cf49f5887e20ccbd10b1b1df48360c3b8dd4aed0f2cdfe178739", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "9ffe37e49f7744beab0de642a8cc38792725bb5848c6cb3ae0cd59188d83f3c1", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "dd7cd7f4ae75f5774910f5ee0f692bb201ac86879d7f13811b2af0e6107c7d7f", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "bec37148e6f26a1e64c9dcb297b3f9e0a8e9d98205b95f5cd6a4854be862d268", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "ff36e1cc764a595d3a408901ee80f4896682a2b029ebd7f2d04486bdbd5afe28", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "5a131082b5c52e051a0abbbc8b2ec8ed9778ff3bf806ea8bbbad3f0171488bc7", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "0693598a3f188b29987c74239be99f9d58af7c201562e2246971249f2b57374c", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "8b70d8205c62071034a50cbff161134f3d1cdc507f7a555c0ef731ba90730755", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "035b1ab8798c7e7ef1c14f308b494d9cf6dbadd39a1dc1c1dda975805370cd15", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "36cb87f1fb435b599883026153d50eb80a48ef9aa6267f5f2fdbcfbd92b087cd", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "ac88de11f34c2e57fe571d98086295d68d8b3b860312904e0aedc7bf89782de8", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "b8d9dfc711649d8a51714281bee4e1e74b48e8815d417af6ec50402dc36e4b74", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "84bbff9478fa89c11b52f1fddb7bb8bd8e639628b5f8bcc3790c76de752f8d4e", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "d64e6bc57c4f394ce45ee675e0f60a08a9bf6066eae0675416cf50e2af565abc", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a17ad8ae8269c577c61ab4e95b122859dc8bac707a826e57aebd45c31aa10ea9", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f97a60ed772ea00b6b4cf915e11ed53d6bf50d85f49356de35fbdfcc4cefc471", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "176a231a405706ce4293a095aa295237a2a100ba4e6f135334cd3c26ec3326e2", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "693d4686ea9e815fe4759516670825f7a668dcb927f2b5900f054d1c76bf861e", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "b7814e5af8915e05097a13a9dae3e3b747b54ffc7b922814ec3a44d57f425e9f", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "a8d5008904412c6949f3440946297809fb60d278bfdc22fcb3e74a89515d1fbd", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "16fd66ed3231870e69aef37381374df52233d873c344b2d22f95a6a380e766f7", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "519b50e707d8e1cc967fc87fde3d9bd826fbed7d48f9c096a5cfcb463d3d9b82", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "94a60c6656d560a6aa07ff006fcfe9b7fdab060e99872d1ca2c716aaf74101b1", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "459523a308cea50e3e70f53497c82f4a02b438cfcac0902af69df3989f5ce567", "T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "40e60aefa567ed07354f6f3ac3bce533aa7c0f1339b2ffbc9b15ab66cfe56d71", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1fb2e3f8f332f3acd421a02ea7a166df75e69e8534084e57fb70c1ef452edc13", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6e4795219e796700b209e6394d0d4994c9e5a6b062cf05565478ab3280e02a05", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "863610af7b66441f4932f797c64983aec62e0d9df93548cb8b8b4e58292be044", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "81159510e3118eb17c8610255da74cf26454cb0be979deef5ca299eae09725e7", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "03e89d7b52cf3fd9b3d28e8dcfd76b09a64bde2401b47d8f7cd68cbff525e4fe", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "8c9164fbe9ee4eb4be735cc87349ed9240e66f87b3260896674949d8d6ada81f", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "9ab52053c795b9e74c5e2b70b0aeeff55c161aa7519bc8d56cebed44acb17d7c", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d833fe6934f01c78234f0cac9e78156ce483362977c093b8a1fd5b559d3471ce", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "ec93cf3c85c061c861432d3da7d3f8bdc648052fbc3eccb3592c2c9242ac0508", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "5e8eb251c88e4ff5af78c31ead30e8664df46af567019e4ee28e6fe6a1dac35f", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "12a9293de43f83e4cbe97977dec32ed07fcafac53fd773ee6164f6f55a4fc8b5", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "e09424380699a41ae986c3e697fd42570bd4092131fb5f7eea9f841b1a779ebc", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "713c522a9903b254f303f0d5ea0309e98665732718b995a79dda8c724e13b930", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "292202e39884aecf19b4c25699049089e621eb3b04a2c6b1ab4dcfb58c3f9485", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "51640f42fa76af559ab972ffbef9febed38984b620c6584c23addd0a547867cb", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4a4a1eef7ce4b7280f91a9fea1342af95d9a5c805de4cd65b56473efc9da54d5", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7c6443bc08f37745273cb4e379ec2b918a15e9e9855d2ac2c75609414abc0e97", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6c93f24ee58e5c3e1746a118c413337c856d1951d6743b7eaf2449e6a41a6744", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "d08dc7c5d005d7b53777e448650c698d84514e25b0e891be2d4395d19c8ce5e5", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "f825724bc288694b0ad33e93c357d44c7a423965151252e6fc41acc8869e45e0", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "fce49b5f4d1b6f334f25bbdea70a279d8e010be0c70f50288107aa3c77793fa6", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "3b42bcc8dbef738afd3b8be9ae0b405e6c59d0181307978ca645cfdf4ed32ef7", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c64a164e33cbe7630615f55e69aa04893eff47e5b06c8152a31b25d096fce966", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "5caf9c08a20ba5677c42dfb3c7c049d4eec61a0f86318e9423bc9f98ddb5b0b5", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c77784ba12beb3fba0b2e7a6f8f39701c1cc191c00863ebc3a65bd2314cfa995", +"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "dd9adbe2bd5d391f06753c8918046679cbe604e2c9c7cb3f26d063e8fc995964", "T2B1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_op_return.py::test_opreturn": "275f0d2972034ad889ec9325e015318b8a12b70b4c391980237897ce466ad695", +"T2B1_cs_bitcoin-test_op_return.py::test_opreturn": "072dcdb01000c37da7d7c3b6956d8c1d3ab89b56ff14eca118c5e7fe9fef88f3", "T2B1_cs_bitcoin-test_op_return.py::test_opreturn_address": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "ad0312bc0c16d73001d62abf2cf25214dc103d0d7bb7a6b2b41b41e1723d034d", +"T2B1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "9ffbdfa73a564a8592b4d0d27c1b9efeabae35904f416ca1878007a5fde97b4d", "T2B1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "e5fdd045f188193beda7095ff7cf6c1b8e82362d41419838d20eea0d8998339d", +"T2B1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4c1e9617ef54f43665e4e692db2d98dce8bc59eb3da6c02ea4134a29d622e817", "T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "9e8577a427871308945674e929874583a784d790906e2822775ab750e59cecd2", "T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "9e8577a427871308945674e929874583a784d790906e2822775ab750e59cecd2", "T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "224480d32b1f17749e2cc44626a3fc0adcd895de35974e903664cbbfd5bdd70f", @@ -1246,111 +1246,111 @@ "T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a5fd990c19849911f3b6ed598677b73d65be385d343a24a02f3641dcc349d30d", "T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "eb02d5dd706a0b0f8049d203ce79ef08a46937a798304fc031a7a82f18c9f2bd", "T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "66641567b5523842444cb105bdfb223ed16436357f41c9f1cb997cbc6c5b6fc9", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "cfa8c1633cbb5c417e1a8dd8afdae7fdae499de0901db127040b141647c5325e", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "210971d97299bd0756069e0c39ec47dc52d1a25453a237b4ea0113c2a02e3d85", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "9e317a82d56e8677840187b20106d819d4606255a9cb0518c75e663ea7d19974", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "798978e7beea023123d6519654318ed78b28ece1c859e9afc620acf64580eb03", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "f663d90ba6e8e2b15773afc2aa39d75848d808033b076806a3b920842d05b6ff", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "196398265c64cebde6d5bd2404336144c9540a74bb26a5895480083776ee6a0c", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c3f59aa434aa44763e09e5f23e42055ea9033e398d628bcbebae6f64a873c80a", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "3e5c383f2f1df2ba1c60a575a7def27ad0cc680e0b510eb8981228c470d5d7c4", -"T2B1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "f511e7f84adac7f212e54a73f95e5e31bc8da750be91db4466f15136b6aeae8f", -"T2B1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "fb79edc31658074e8a64a20f597dc6d1abd16068b10cc3d5573fada301b16155", -"T2B1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "0100fb38cf9cda4b1bd2d5db9686ee7e520b5f05bc8e0ff7eb7b94155edca6b0", -"T2B1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "0100fb38cf9cda4b1bd2d5db9686ee7e520b5f05bc8e0ff7eb7b94155edca6b0", -"T2B1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "01a7fa390dc588879e5e962ac34488f9404654240c310e016342945ffa0d7ced", -"T2B1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "d50f0022c65637c2a94b0a4a05ad270f165e82fd8f94d2011e710b74acc24860", +"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "6a1ec357aaa93cd93ca660b000e0829db6cfc848127a0891250f8853726c09f6", +"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "d266a7c7fcecbf2d51a997e4462b0a5426ceaac0a286b0491a6c1c3395d4d057", +"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "6d437a046f12202ae80b9fc8ba7d6777efc6d9655e50d173d422f052e343f787", +"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "cf746367aec2048479850b89ca31683c994285dcc91016d272326c19fd840c59", +"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "2cea5fb373b2b75df2c41df5e6e361fc95df30dd5bbe72be2475515ca004c3d8", +"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e63a41dcd660b716f78daddc1cb99d83ddcdc43485f62dbc1dbfd3aeb83b5c2f", +"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "3e65aebc940b15f5702fab0011c53445b0798415155973521b61d26f83561c1c", +"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "1e18a81de3f8c992e1c8d997eb46bfba98b3a9204e53be092e70ca55117116ac", +"T2B1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "7ffff5af7b550c504964d8e2a1b53c4a5491a3125024a15fe1bc123c52067790", +"T2B1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "e91af534fe70e98e63b24052fdc0fc9c01b085d8ceb87f5de810633cacbb445d", +"T2B1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", +"T2B1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", +"T2B1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "7964e96cb80fc928af9f41f3e6557bdb15e1b53db01865f1b64dea9d019cbb22", +"T2B1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "4b1d8e34efeea733bdde45e3b8bfff3feee4b81dbadfc41d9406a505005d518e", "T2B1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx.py::test_information": "3be03ae84b15a82dc8aa55e92e167bc3e2877e9ac5b5f0575ba58c068c93e952", -"T2B1_cs_bitcoin-test_signtx.py::test_information_cancel": "01cc5e812678d6fd5eb4ed77f2b6d2a6a41de1718c0e078ad46d02a8ef904596", -"T2B1_cs_bitcoin-test_signtx.py::test_information_mixed": "f5ad4dc52dd9321bd6bdaca685d79ae18656629e8e9fdb6bc6668dbc7796c728", +"T2B1_cs_bitcoin-test_signtx.py::test_information": "bf125ffc822d9490bd34c08c380889f4c5c908fe61cc8615146ed1cf7bd4e2d0", +"T2B1_cs_bitcoin-test_signtx.py::test_information_cancel": "89b9146058f74931740d3f552f0a917f42e853bcb691cadab840fd8258bb0d18", +"T2B1_cs_bitcoin-test_signtx.py::test_information_mixed": "da6236cfa0afd4a1840ad02c16a7ccf4513cadbb9b1e4c38757870cc80fca007", "T2B1_cs_bitcoin-test_signtx.py::test_information_replacement": "42479908865e1c5b2614897504cedce7d304f376ffd282dc467da523c0867149", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7c69db93dee45a7814624af6e9f6f44c3148214dbc68d71a7f6c75acc0653220", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "4d1ff46db0a0047b52e1a72883299921c69bf30277a598063627081f179b72af", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "dc24753a563efb052904e47ac42ae7b8a75651f95b742c1a751c617d6412b263", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "0531af543aa0283ee3e1a6241c0dcee642aa33d52e8c5cdc4a857a76e5df2e8a", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "de839523a60c9c3c1570ba5450d0aa580d707c3fc4cf80710f75636021cb00ea", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "107763ec8eeab8254049199fbaa9f67e6a33301f16295be793b1ee05899804eb", -"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_change": "2097d0ddf3005e214626d7954274bdc31b11dcea1583848ec993fe59cc69c2fc", -"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "8d0ca1b43a85edc7a3415be7c44328ba12787bb77d0e4ba7b0dffd2ace4f0916", -"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "faf5c7889db252c4f170831d6666aac3d0d334f4d24acc0810715b51b3fb8abf", -"T2B1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "243e3cc44674d1d9fadb3077e0b9b32792e800c6190f18db4a27c55c3213d480", -"T2B1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "aad3d7ae6b50fb45a4c5b482071d8ddb4c863ff71bd63ab243521a4ccb9de541", -"T2B1_cs_bitcoin-test_signtx.py::test_one_one_fee": "cf5c3e488b8dd67bb94bdc0e79baf2a5f5d114b037c63d3eb8176677d1b244b5", -"T2B1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "eabff7dcdb1b0cf56a82053f8dcfd9489e0dac114070774e254a2fcc3e60eba5", -"T2B1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "aae6aa85a45b69bc5a687306070f3c7ae78fc11190e03daa1d93237a995528c3", -"T2B1_cs_bitcoin-test_signtx.py::test_one_two_fee": "19d3d61165197f5edd4241ea5a1cd5e9ccfe9c79ac51eca64b4a2e893d0926b6", -"T2B1_cs_bitcoin-test_signtx.py::test_p2sh": "046f07dcc64ae6075d7e3dbc78ece485f83be8956fefad24dd75aa8a5b5ae300", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "f60c3b4e67de54d5d76d26965771d51057ce1944512c7e02503806013dc15ba9", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "f60c3b4e67de54d5d76d26965771d51057ce1944512c7e02503806013dc15ba9", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "f60c3b4e67de54d5d76d26965771d51057ce1944512c7e02503806013dc15ba9", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "f60c3b4e67de54d5d76d26965771d51057ce1944512c7e02503806013dc15ba9", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "f60c3b4e67de54d5d76d26965771d51057ce1944512c7e02503806013dc15ba9", +"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d6a75e04c760c4c152efdd51ce3966ad165d965ab19884e2e15424b11b69001b", +"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "124db25618a700f7ee18430800eb42a7a4b8f9e7483beff5fade0792d96b8726", +"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "616d02ea98d09b13cc5e22bc2747e48e485a64d22476a3f26da46cf98430dcee", +"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "3913314e52d52a65d30df7d758027034735c6a825cec367461ad68dbb28364ef", +"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "a7c37bc271580219f7c191aab0674e0762a550641d9f0eaa7e078b71871a569d", +"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d5c0e61c4bcce1765d79087e84c11e781ec295dd586d9d37746711c1412b99a6", +"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_change": "9146e8ea1e9acbd16608849bfeff1cb5a755124de5cdbfbe4a5f160d8a0a31ec", +"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "02948bee099010001320727585870eaf5c4d98b2d55204383cc610374a8934fb", +"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "a42a6c28b9fb1412b571e21c2c9dbf5d0bc013f11a5af856d32812bd4042e039", +"T2B1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "5b6acf8b07712f67c9ce239828285141b54b93efebd79769d20253e0e41ec7ca", +"T2B1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "909ed888bbe621a32827f5bab577762624d216ccfa7fe1d74e4b3303c4c64271", +"T2B1_cs_bitcoin-test_signtx.py::test_one_one_fee": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", +"T2B1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "0b99f7ed5fee70209ed187c291b11089d8a9b7168e7bddc5f8bcce0bb1e29aa2", +"T2B1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "83d944a442258be2a0687e21c47a7a57d17958ef05a3a790fde013bd8d1e51d4", +"T2B1_cs_bitcoin-test_signtx.py::test_one_two_fee": "6eb5492d827cbf9fd1fdf588cf2727bde8be0ee9abee5c6307604c954d93e476", +"T2B1_cs_bitcoin-test_signtx.py::test_p2sh": "abdc7d973ae84b57f671cff62629106b8ea08bab7b1e47eb7b9b7fcee9d43bce", +"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", "T2B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "e10bf35b2610143f90e6b8a929f925bec51475f808ffe1a9ba0c955be3f6af6b", -"T2B1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "16c417c323604eef2dfd975dc7d77c92cd4c4e8759b5aaa23c4a55f1068c35fd", -"T2B1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "aa48a0b33b3b4720f4445959108800eee882baf8ea66869bc4a23b0fb789b2ab", -"T2B1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "0100fb38cf9cda4b1bd2d5db9686ee7e520b5f05bc8e0ff7eb7b94155edca6b0", -"T2B1_cs_bitcoin-test_signtx.py::test_two_changes": "a1ba8162b4dbd6a165f5c50ca1f0ccba964472811eae07235408d83134d23034", -"T2B1_cs_bitcoin-test_signtx.py::test_two_two": "72822f7a644cfc8874c199b9ca59fc60fd8cf53ff2fdf29bb96e13d62b3bd6a8", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "cf5c3e488b8dd67bb94bdc0e79baf2a5f5d114b037c63d3eb8176677d1b244b5", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "cb21230e0746901e51bfb1c3aa8b73bcd5c91c9cbdb7719f000755dc4301fe20", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "eda514831fe02a9ff5e71ff89de12b1bb093700cf3d948444ffdd3bbfcc0ab22", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "7b46a9724081b7a177363274c06c693fd146804a7e8c90e57b52d6bd5722cd09", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "cf5c3e488b8dd67bb94bdc0e79baf2a5f5d114b037c63d3eb8176677d1b244b5", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "4b840fa6d760b77f7b0e78137024640ce074d3a2dc956133d95277a2d4e2b194", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "21a478563d738ba59c7a36831a8ec11ebe7b29dc9315f80042ad90eff3927d74", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "ce835807667b4610bd6e13d762c999941a03b0ee4c91051581871b7e964ec74b", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "012a89a454a324210a9c2f9f91b46b691f35479c9678bbdc9026b805a44b631e", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "4b840fa6d760b77f7b0e78137024640ce074d3a2dc956133d95277a2d4e2b194", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "99d875b26b43002696ed79a0ae9e9ae232500467074ec0df0c3be9c0ec021383", +"T2B1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "4fbca0a9dddf0a2d8a8c66ad67024c5dc5c1d9ac25776f9b917360382526f0f9", +"T2B1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "ed8945ddafd022679b632551c04620f5d138160dd74ebefaed98c54a82424e3e", +"T2B1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "db58e0f14752bec728ca009b97af39c73410178fb0fce42fb5a79a06c1efdabd", +"T2B1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", +"T2B1_cs_bitcoin-test_signtx.py::test_two_changes": "2a0bfe211e57be92528ed46ecfc6bfd57a9d5875547aca3c285f073dc4cfc77b", +"T2B1_cs_bitcoin-test_signtx.py::test_two_two": "d2bdc5f7bc37b0e50bf47680d8ceb0db456bb5a2c2df0861d5c993b1d6ba8776", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4873023f73f1137e702613b43e7a202f05069bcd0fa1408e2468908753f74163", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "542f74046f41ed7ad49d4e6b2171180368b0c7883052428c6ad45082a7ebbf9f", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "90f9ea9b51ffb016394657c02cd4c45c59687df2caf8746971329d76233be584", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a4de79a37c82e58c510358234fa9f27d158123fed6bdbe796fc3c120d8453853", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "9c2a9e3b134bcea40f97703e95f294dac1c7a4ffaa33592ba393fa21892a9a37", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "98da775e8accf6cbac5952c52a2076ead05d99df9d5c30434ab7a1c309edf002", +"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "589116665f82b0f65203280268126b7193a705a410ed32a32e4d32a618bd81da", "T2B1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "6c03bc899827eff08ade6b52e67bf7111624c9ada95d64c76fbf4a08bd69169d", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "e1ee37dc260c5776f9087fe119a77fca8dd1080dc2f20161922c7de5facb6bad", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "6053d072c0cd14cd215e857f60f6689f7eea89f040fdb915f636b7842b53b4ca", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "eabbae42a88f311054dfdb010e0a96535191e349a5bd60e9425096e273003fbe", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4f96dd4d86444290c483bc659b52549b7381ce8c6cdace049ef849d7202c3127", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "066b01722ee7fd6dcf344fbc820271499b8ad47ac84755cafa2b56772c55a6d3", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "387421037010f31900988ee90efcdca0959757f4dec2c9b28bc951e3e5b8d624", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "a984482f63e7c217d36a2268f7796dd2c6a9a421ea3455e44f4d57c2c4515761", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "9fe1ae4d1cf43ebf50413a7d4813f9f99f71282fa3becc9f058d537df4fc2c42", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "3194eeb7a2fdf595220d4af6b38b29090624a96f0dbc78fa46ca9fd3216d8160", "T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "9a49cfa23fc3ad8604cfbb6262a4714c7b1a094e9c66f6fbed7d56cc27c8f2bd", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "e636fcadda827ba6943dbfb0f8b4e81bfa532d413a54016d93d70f5207abd3bc", "T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "b38a03aa4c670191a45cee7dae9a5f75d8027f6ee855c5cde155a62ef942e1f3", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e6f9ab211f34a5d0ace7bbcbc087cab4768d06ebadc62008ec1867a91d0c02a7", -"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "53626b5aebddd9b6d274291b5ee6dc06b0657096f5d65787ce48c154ad530da6", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "48c5cdb3a252c530e1d7baae689a2b194eab531a4b3c82e713c05f139e427c55", +"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "3de28a4db4fdf084e26c29dd618203d3a02629a5b9f97d8f52d48f824fd9d1eb", +"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "253a1df445bb171c634c82311f876ba37a27fe4c82f73dd740f7a14416a26803", "T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "afdd6e002771388cd60fa9ec6371ea96b71a5235ffdf9b8cbe7c0689990f9727", -"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "8636a3c746f3ac3bf03e235b76068a33523f09b6a11b8c4849e33d06291845b0", -"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "b52218b64e3e29f391f8fa791b4706634659730a08d28d5f6534e873a9beda1d", -"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "724729eb411536c1320636efdd718532c6671fc54986eb414ccf4f6c1d947780", -"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "b52218b64e3e29f391f8fa791b4706634659730a08d28d5f6534e873a9beda1d", -"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "136fe84f469573c6f8065859167279626770d0e89feb5e682b0bafbda2f2f7a9", +"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "18a1ef8e5075e77c2ad9f91f585603fb94fbd0bb6cbdc81718e22ada773d6351", +"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "6850851bd9253d19f24c728570cb062dd3c326a175f79f0af3571bd7b5672b11", +"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "9e480a7e0ce03e5ccab45dd83e8061ae81605c203384c2a89fb9e765fbed6415", +"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4060d61e348e74b2e0c2a6832610461bada446af2157aa32cd7bdc9d5475ab72", +"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "9e480a7e0ce03e5ccab45dd83e8061ae81605c203384c2a89fb9e765fbed6415", +"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "f9cbcca83a0470cf98ef846b12ffc51b8920907b532014482c2a193a642cea6c", "T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7e9240a8b35c8e7fadc6cef28e5ffe88df141830071a9b72bda606a1660f751f", "T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "816a58a63e88a2e4fb981c75af1a03274cbd02dbeff50f72ec91f877ba48570c", "T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5e8baf802b302c6e7f698b5579a44e0ce81704cabe0f3ee150ba1c63508e5368", "T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "df3dcb8a602b5d9bfb76973249601f570e170fa5870dba4ef09a05d1f7ca3797", "T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "96a00c0c1cc69e5e87c5dc581e8a551334def513ae8288bb34bb8fc7bd3e8082", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "542b48bc65a886c1fb37fafe6e83507e14eaf8382d0153455e6b7825c6b970ea", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "ea0d868e7a50813f6be2f6df2a53a7db66bfdfb5a07787ca3e0cf0dc33b5bf37", +"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "284469aa6f2a9a3e97a0deb58e9f6a2c5d13f6030d2599f54f2bd70eca860e6a", +"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "ef486f62fc674b1a867191260f7da26a0b00c99f8ec9e4d2924ae48202b7f277", "T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "eee278d38cb141f28b061585aed7d4130e0c41ce340bc7e3c56900e556d009b4", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "eee278d38cb141f28b061585aed7d4130e0c41ce340bc7e3c56900e556d009b4", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "eee278d38cb141f28b061585aed7d4130e0c41ce340bc7e3c56900e556d009b4", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "eee278d38cb141f28b061585aed7d4130e0c41ce340bc7e3c56900e556d009b4", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a9d9fcc1f3390e7a67763b3c7b62f248053e147fbf466c5b21a4a56f2a1a23d2", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a9d9fcc1f3390e7a67763b3c7b62f248053e147fbf466c5b21a4a56f2a1a23d2", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a9d9fcc1f3390e7a67763b3c7b62f248053e147fbf466c5b21a4a56f2a1a23d2", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a9d9fcc1f3390e7a67763b3c7b62f248053e147fbf466c5b21a4a56f2a1a23d2", +"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", +"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", +"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", +"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", +"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", +"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", +"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", +"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", "T2B1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", @@ -1369,33 +1369,33 @@ "T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "37739bc1c44ef50cc573d2cf9a034d719d0522ca272bea2c86fe86a965d6973f", "T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", "T2B1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "7b2284f3d8b60e09a14b5eda32f86d2f9d8ce4c12b83d787830d4ea91aebe361", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "d823f95bf1f5a8296aa38c8e33b96ab9602aeaae07496d5b9d812ba0ce18fbaa", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "fea90b97dff227e5103e61755d57633259ece40c57915359601ca8541cafb4ff", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "497502d486b075d7fe8c59cf497ef3d2c7258b9bf7d48e2ca224708384cdb4a7", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "d8977506a473a95fc3ff7c5b3dc04db7111bcec904042079a8d314a6aff5d71e", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "151628dd506becf5ea98faab8cc15e71e7cc717eacd72f8a4d2bc16b2c05c22c", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "50f9ff507a4c2fdec205f532a1d9ad071ac70c93fdbf633ac4e7b8374c2adc09", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ac7016ddafcadf5a1d1a8113ccd80543f251e3aa98511e530fb7bfb16a0291da", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "6c0ca7365c19079bd56b8210e32b48e009806e4f7287a774ba2339ef95e94820", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "78c82ec9ac5449ec549715685e3db9f4db16e7d20d9fa59ef9c46d0137ac2258", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "358d3edffb1f2727b5938723d0c738a93556a7d09cb9b87904002d7c674c2342", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "735a91d5dcc138295f698d324f530503f1e0cccffd7addd08b350670a5f5d76e", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "68c9f11973c1bfcf9ca7a71a4361e81fcfadb25a4b57152f5f49791399025bc6", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "6d2bd72148666a7f489d95ebb11e48159a1be5d284b3ecfd6da7f6a09030c71f", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "4b840fa6d760b77f7b0e78137024640ce074d3a2dc956133d95277a2d4e2b194", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "abcbff1bf302f7bd80bff2fc557c45e13b0469112b456019c66590a183e4d62d", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "cc1cdc68b438c7ba282d7b0204f39ace878c8cd56eacba45a24c4b086edfd5db", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "7b3b15fff2585019e4fd56f82efe6ac1ac89a37591cfbd7035e047a9f8a64482", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "ac4c2eeb45d8fde89b48338263ba70e6d8960ada41cee3e5e779a5ab8819791f", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "b6c38b0b5d30728ebb368e678121665c5595bbc022f0534e0bd30bbcae1715f2", +"T2B1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "ca88cfdaacf0c82b4f4df943fc482273819dd6b078d443cde4a18120916c4214", +"T2B1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b2e4b99df51a413e4bac3b433254ff9b045d3e2225d13abdff42c54d0c573ac6", +"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "bc2cc24541cd225a4f9bbee039395947874c6c5d31430d6c71066cf5b4b20614", +"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f0607a71b16b6cb2e3dda61be0d5ff5d771359962c70192f909ebecb24b37280", +"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "e062ca3ad7b78a76973dd705e1469823b6ffffde6ce8b7bf8e7e5e4b45a49c84", +"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "994694c07d0c8a0a80fb26fbd0298c495afd2cf265b5a0b503b225513ffc38e6", +"T2B1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "722446a2b816812aa2631bad02c927144a432d9e0906bb1c8aeeb7f72f8fe6fd", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "82e7a6632f79020fef15d3fb18cad60c1f0207957a8e026fb2624781fcdd9295", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "e59c5b0be35bc2f15303f21761c650bac2c5d287be5215d243f474ad935dcd82", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "2df26fe1aabcef123b11a4324f4c51514cf5024788c6b0ea01db5091ac5748fd", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "455b58f65370afde13ffa41775cd7ff9e606686831c4e4965f6a91132fd1c091", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6084e9fab28225a35390bd05173fad2cdfe433185e25a6b1e1db85f2207be5fc", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "8a6578ba83c33933707e4d8e1a8345e181dc71848d301730265d0fa92cd527bf", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "29d416748008c45c8f254f7d7e2774cdb690bea4b5a2ebcd177ab17db3c2cf3b", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "3f34b75108c90ef73d4d8b67f3216aef8bbff04cc30b7653e2bf33bd8ffa08cc", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "1bae892aad7de07d4ef982a5a7b8aaa30582d98c137950e4b23b945e7a807895", +"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "cccdf162022b35ad09f75a612dbac40034f412be0874b9e152aea513ec805b8b", +"T2B1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "e76c5b225cd667ab556c619e5f4d9ce08c1b31bfcc6918be0f6293118e0e01d7", "T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "9d524b540ea49af0bc55397054e110e829df17c1daf61f5a66775d2901cdfbd1", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "91fd40845633db975e48d78a6ef1a26a9ee910456f6cfa05727b9c4a37bbb8b3", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "dd831a32a6c9112938651b2dbae4c469e811f3641b43c9a3b4287176a2e64751", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "727dc078dabe2979ecf1e75adfa44e4da9a62a6cebceee216bc9aa4f0d7b3051", +"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "dff4bd40649d61cf46dbfaba002c17d648c4460eed44147a37ef7025375c991d", +"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "b31b3684486ac38a036a9e5ebc73187be1b36955507e3276a6021303370259a6", +"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "734b4329d810877751641525b1223601af96e8442ad78dbe1327563f33a57054", +"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2c7f6a6fc4a11b15716dfb96e47bb199cef0261ad50da817c3c5cf2196c2480b", "T2B1_cs_bitcoin-test_verifymessage.py::test_message_grs": "4a497c9778ff4810a774fff938e970079d47e754f34058611450f2a1027e8281", "T2B1_cs_bitcoin-test_verifymessage.py::test_message_long": "b6ddc32b3bd6e8caaa25db0d3277cdc34a6dd83e21168d2bfd735d686b7113b9", "T2B1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "97bf56e0223d53d8de6a5bc245bf2ead661267173d3b03680184c3c4d7540d5e", @@ -1411,9 +1411,9 @@ "T2B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d70bca3f6147c0b036d97686d72754320613e1c0e95a41ab36612ebc9327310d", "T2B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "4e58fdfc8c3f8da09b2ca0cb3e6112862c3089ba34a642bf151f7553f06c67d5", "T2B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "ab4e52e3c3ad508fd817ba92ce22a6bbe9494778d4d1e27b5f7aae02379f660b", -"T2B1_cs_bitcoin-test_zcash.py::test_external_presigned": "16ef10201b994d8b9c9ee4c4f1ead5fbe2a06762bee7c11b14d6ef0f814b9310", -"T2B1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "79dc0c322c5c8360f7034ebe2da2b75ff02dbc9ef95031a5a0b6acd8333b45f4", -"T2B1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "5a2f98d2e3f70948a7644cf9bea22e3085e51caea3fe483b5fdbc182ccca2381", +"T2B1_cs_bitcoin-test_zcash.py::test_external_presigned": "7768da68844736c7b938b0da0f64386ce9b0b42f865e353c6ab9378ccce2e7e2", +"T2B1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "4cbe4458f0706cd1df438b0d1be712e1aca5e9036cedebbc4ff5e8f0e818f034", +"T2B1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "37ec7de2bc995aa94b0673b3d2f0b1b36395190f5d6f31030b2099d2d5eb1bca", "T2B1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "4d1acd5378f816bcf49eb369ced78e6495166c941a01dd6672d7d68b622211bc", @@ -1424,32 +1424,32 @@ "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3f709757ca6f3b2652e101965eac5ee756cbbe45dccaedc50bed585f866abf51", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "b075e4e82c0899ea4f8c2a725387af5af7473f8bf91fe7f218006e136c6fa371", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6388aedc70d6dc9916681c57f1a714cd96f8d9fa6a7cee9d1c93d86f1e49af9", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "d2d741f75aa8f3dd139a253bcc0b465077ef25a24ee62a2edb64bca3fe77b58e", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "bcaedcca9b659e5c07af69a8c19ffaebc05eab0ec15f30fba95ed25b84226a4c", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "1bd30604ce64e330ef94d2c2b593a1517aad5a81535cee8f9c296b49c46ace74", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "59e1029b30ff197510451d2468b5e542504f5254008e6e043125f17e141f2e44", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "42bcc35906ff0ad168dd3cd21eca448ad2b9d384e20241e30f3db6ad6fbb76ef", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "e9ddcd85ee0d6f9a5f8ff9ed7bf424605d070eb3586546a4fe3c4a907dad1e3d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "eaa38e5d5e8f030661f8c48ec9e3368b836afffeb5527ba9db6261ffa1f7ad90", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "571374f06f51bad35e07ace2580f3c4a50f94a55594e5abacba83ba17457f393", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "a5512d704e151b6a79b7b20cca2edaf744779180d7e9aea38bdeecdcff8dca47", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "ae934a26cadb13f31f3c8a3b1ddc16454a2fd6d469f67bb11d87e7da6f8aefe0", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c3e4f3d773049621a6ea14819d83d842c4810d68ad22227148e12ce2c6bbd3f7", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "c6c704c9262392cde65f7f1329a709a6cb5548097a599c17c8c3da4d5ff8b972", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7d75e5cb34cfb1d4758433882b051019ba0d50debde3d03047cbee8cb5254370", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "43a694b731f7e6687b970ee8df61f35ffde9d3080c54a3f8e9b713f16e4806eb", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "229aa02deac632b2c9c77b19c4f944dba48f410b49e4a5f863a9aa297286207d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "4549812c64938f1cff95aabd5a97c321376df60eb0625571f308693375944f65", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "37ddd7133e3d6b7e398545ce56989e8cccb14619abe43739f316a68075f87c31", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "d97a3a9ba588f4c4c5f0928bfb7a12440f3f382ab0a4db5b8123d13a1562f71d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "517dcc131e76ba5196ca268cd5461061786d5501bbbc7748b2fe42bc02cb9ab5", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "3187cbe82c80a8b032b754811ae16bb92dd4ae883d5dd0d3f19d7bbb082413c5", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "2c9aee5c62b6cc20ad5e27d7dfee55a3b771fa3b254dae67a706929d286e27be", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "fe715f45ee4f0abc1eac19e6d2f49c122c61cbb912f440c64181321e7e64ae87", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "919851ba753da1e7c16681e69aa8749e15f5d26d9c5d928db88f6ecc757c160f", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "48ed1e866dc22a34c798e05393737ec4d7fb8c0f7a61b29e4a5527b3d08ccd5f", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "1c3bdc90996b6c2371223eae8a832223177c4c1ba5738012469e8de58d47e86a", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "30514b8d1519533d5cb4572b0475ed835f93a460c0008da6d16b6b335b392d42", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "4c03de0cc756a784017a99ccd86f13ad56a1c0426b44f3094531550bfc708ed6", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "5b887064b8732c6923e2b4ceb45ab2720cd7eb6ddbf36434309e971963272b45", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "0b83e09710d637a41d6c3ea3ea68cf8cacc13ff8362c88f447f0dc7caee3c501", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "5acf62b8d783aedbfa0c94264bc7fe95c6e12f8b9d55000420187510ad90204d", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "0a8453c2401a9d8f1082088c69c9859eb94744860c232cc80e0374bb2ea9b774", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "a99b9afad6bdb208f0a89f82ddee18bb5ae37c049731d974daa9e5714a897395", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d6ecee4500516fe91b97f8ee9ada50cb532aa665ecd80027c6c964e0c40fb0f8", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "c65c40047fc71cf044ca80a127058d1aace561f49c705343ac4152d77195a211", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "e4ec0de8395b3e398259ad47151b8c2cd2aa1acf01a345fde8c4abf78eb0e262", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "fd2a045bcac53c39451d035d2b8b22254ee4b723ed5883f2b67ac56b34382307", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "9c1fe3a9a2d44d1ce9a0b156be51ef66846be4fd7390c8a4540c2341f02c0130", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a1d2f9b2427946e98350821736d3cd49afa9d8cfc6bbaf632d8b77821451c1b4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "5008f5e1ce5d0031a8987f66ffec2aab68b3891dbcfb9ff33d4c772856551b74", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cc5df74ac2925466f097fc577f4fab09b6424c38d35fb13baa44c688871919d2", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "65af2ee078158075be6f9c359c7acd1ceb7812ffa53854796820acbbf042f6bc", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "3db9e9447b728dc00386a6d8bedc5456cd2dadb201b274ab18f00d79d99f9d82", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "d9737202c02fdf51dbee2d6aefa03e686e7aa9dc968e85e19cb76f1093a36666", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "e6b9aff0e41da0f91b8b23dce4e511c1a74fe6bef21bd39d880d51ebf85c5fd0", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "39e82214845b8f628efb6e7ec4c634233d853d97cfe68e9384014b3b9dad5d6e", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "3621933e7f29f00a493a55d991c58b95d26b2628647b7e7ea71efa3005b3199b", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "a333baf4f494eb22488b7eb84ae39919dff4089c5ff1169533d2f6b7769608a0", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "47495c240370b515daedeb7a3cfbe361c062f31d2d6f361007c141644e16d821", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "52a69c45e65e55c5c5e9819777be230e472b08bb0dca4e2bc54eee26093edfec", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "fea28a98cc7e1359bfd04812b30c7091cff9c5fa050e285a8af82792e016437b", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a991ec42a7591d2ff66d833490f349c191c5b15d7c03b11718bb9062bb6146d7", @@ -1464,301 +1464,301 @@ "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "125239a90d1cdc135ca928a408939f0c0b1685c081a33f646efb93978c65f513", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "0c282530550565e33d97d532d3076f0283cc05d5e7e708f1915e0b2b25e9deca", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "84933b8742603f5e31430c442de2ecde79d36c5a6cf214518f4977e80de45aec", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "5ec72aca1b118636ee8b9f631b6fc8a0833fd2ee97ec856ecefeff1280a1c040", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "65164cd1615c954ddb6907b48ba569b562143632feebf0616de1dff398fab7f8", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "cbb4b789ba81e031078593152be62dd9193ae37fd64441568491732aa5225879", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "c0fdf05409eec8020ddc6680f9f694457d0a5a3a4564138d4efa8b6e81c4c3f9", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "84d89037e34a0e820280d2b5a37388e463671f9d157beeee67b16ccdd7815de4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "2cfa7cfa018b1c00ac73fc25c222a560d3d669203b84fda4bf0398a2085b2c73", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "20460c69312f8d7c1576af943ad44c8fbcee148bdbdb08bf0f081e4307e9230a", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "33b9d92b2d96a640b969076776da40d546c5feb7ba364b795d582d028be185f5", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6a3c95b4b73d8ecf0b7f55f901947d6643f550abf7d2332db4d6e6fe2ea060d3", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "5e0eb1d8f5fa5bbc22dd2ba3256988e539a6e1354a2a13372ffcdbf7ad097752", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "2042b06230b2d0bd4bae80fd18516474cfdb6cbfce602da14f3ce693bd73c59a", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "b814fb6c6258d7598e88ebd0b997e4f52644a04f1f7d386364bc48200947052a", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "500a53997f82772ca58803c50122776046bf1162d1b816e1af357dff714f1363", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "195c988e06673a8be848797d63014a3ad4170aa65c2a95fe76b216776454231a", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "42db6637b48afb0651add301df1d71b03b3c41c1f83fc615b6eabf128d321a7d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "7064bc695bd9a04e53a8483ecf749f3a48131a48cfb72e3f6bab919c3f88db19", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d2345037dacbf0932484b92dd5dd7af9a67eced137a5b14362fa3a8161b77114", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "fc974c1d5d94c6173df575a7a806810df5142ff75246a1229c708dbbb650c4de", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "e68ba77db72d28156c3545d1a99d2979e36825518b6bee73a141ff38dba31dd4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "daece65083c1ae2240d3e7e74ec25d0de0b1ab8ab7df34770ff41d2eb810b804", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "f3a7176ad9b9d533bd623958bd5f125901c59afa231846285ec694848ecf1416", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "2c5b5c822fb5b7cbe69d7c4973494537fe955c890b548655c2ebb5ea02a40d3e", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "29ab637baa841d9090081bdbc973d895ead18903a6053014420f0e070b2c2e42", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "3cb6d7917ef8fd5058d356e0e9cb4234becf59ff4b62ce5cf683c4254a8bf72c", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "c39f1f93575f96ce7078f2c7ce0f282c60c035a5214e9b544dee6bdf41d6ac62", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "028739fad461e0dcc104da8e74b1cce944195d4b6e1f281234171cf0fcb02b30", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "44aabfa3c0da70570b3af6868a65d518e00979b86f8f109b4e5dfa1ecbd30388", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "50d60ceaec2308584177f1ce2865a6297ef0029b66497150ae3b3ea8431ff703", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "3a180b562fb01ff3039ce6849e4f3250b1ccdc00296bff7f3bfc44c1e61ebcee", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "6da568572d6d34922cf9b2301f6e12057ec7f709ae135a1bdf39842e95680aae", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "1ebac0346de54a3873e92e5afab50cb1d52b6a797a47f471b970184028ae1bae", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "006ab8fe24d36f772c1cf1070c3218dcd4e6084a36b24543d9c93f2d9345d842", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "45a169074332d0f514da1f0ce7a69c2680c9460f33684e1d7c656493828dfb1d", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ee397982b3d6a2f356139229f623a4c4fcc40600ebebfba918ab6ad683d2cbc4", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a5e6def7afc1f95c7449a1a82ad8c67a89f59d766a36402a7b48e7ad70df6a1c", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ffe6c7de89036dc7a35cf169f52c37983abc9576283944c38b42dface23dddcb", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "395f04e3d269dc633251591e52ea6e2cb137610139c765aeb608bb7184874c2d", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "40f47b46c4db9359e9d45d7ecaca1f65f300b3ccea994abd90da149fbe159dc4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a00186b4f48a1f9fc8c24dbced48670ed59926a28598e8920992d1b593bf548c", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "07f0d0a0eae1fcf833a495da289251f93ed227d3463fdb9cd379fe816eee0ee0", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "cc06f30dd2dd4b187b809d75163ebef1d89f02225e24ec8ae2da6043203ff1c3", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "2caa54e4eda7487d0db013eb88bf695832650c0a672398d68ed6bd2badbbe868", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0d14b6e630d04cd40a39a720ba5319e8e6944f4c8ea5fe21d17e08720b1456ba", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a731b9ef293b165f7104ea4e8f542bd782919bbb56740b64dd6ebe0e9d3bcf4d", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "378a94b26950da6fffa24a9fb3393438399aa299d354c0a84ba8c7495e59a098", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6d31ac702ea33397b9f81f2e6ffeedc12741cdcbfeda731602efb969027a7b40", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "c619216fc67e492e28dfcc5e65c8fd1ef3d5ef3a042a144f3aa92b96618a45b4", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d152853ef5883210aaa1124342871881b3955d18e4b835f00246cec1360abaa9", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "badb5e83bf523f4cc32fd3b82e573bfd8284cb43c84e1cc293fe5a2b8373ffc2", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a6253fd49486e6a48c12553894c75d07b4c7b95b7483bd76e84f06db22eaae71", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c262671437bee02f901045dd408f169aeba778cd7c7e2872c26c6e91a869680d", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d32cb96138096c10a4752dafcfa1598b26e886404a670b88a010e26255c0affe", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b329e67d30ff275bfd8cf87ec148cd08865bf2cbd204c43a3a1578256363c0e4", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "cdce2fe75883c2b54822ceacc4c54037f5680145eb91fd04ba9e09cb18729ea5", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "3cc6b4a26349fedca53b3ae7403f03f0ec68bc1f70f1753031187f8f86c6c692", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "d432693d6e151c927b8d4a9715d322ff88b52f53b355ae30a1333f2529ae351b", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "8084b6da7688c23765548da33f055e15b4a10e52775ff3884f556dca05f99266", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "5bfd5edd2004f8a6413127a5de9bf1dccd4a117b5c08497c361dc0d5f2bc2efe", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e362d00427f0daa1d5812d6865e3beeed7f7174c2d8d2d8b446e0e7a9585ab1f", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5b64f364c7854211eb14d563ec6336e9054e54c2a7c1e7af73d1f719ba799696", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "a21e663f358878690334c40af627a7416c65f76819131623040ba6ce368151ad", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "5bb5c81eb0efca455aa0164fc636c06a9c036f974f0be3c950ec6ee644278cc7", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "bec358449cf3ad5a6914100b716760fbc42756121b0899026ff1346b2e250c99", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "d7e0db7ee1c17ba78981af97b76feddc4648280ba5717b7bbe60b877684dc304", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e94042a549f5e92a2611771392a5ae759af45755c634da914d60ba8aa2630212", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d0bf8342990a98d513128f2a2cd41c610e1ab24a7ef18b6ac4841c7d10bf40f8", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "be98d0887e6a1d5cd0a9e241f7aad2c00191814235b7ce0d0663ce051e4835c2", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "3e5052829b0775de7949ff0758ac75370117654b9cc47769d87811af278be47c", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "1c8a711e05d6374359f01e7c5ecbd93bfc56250b72a3621f22431b8e2444324d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "82c38b98b0dd5811c6e3efbca55ff91503e34dceab7c473e1e06573171c90a2d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "23e818a32d21cb3c295d29713f23a8ec3d4fc4a193fd29ac18c5f82712abdb68", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c6a40033dadfeb01e491854e18d7620226083731be9c3de957a1b6f177947fde", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "86fe1e4d4d6f6b5485514139c83c818bc6282a6c18272dbd8795b9d676412388", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "4ef4fa963646fc12375310c8e06ac73a54289b72fe6d8628cfdd0ca38a3f5989", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a69f79abfe622808220953a58d8ca9821da814f8e0c23b81705e6a4cfaa45701", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e8137bb502883a0360be574b6410ccd53a4c1e6cb2de9aed18f2fb5734b72f4a", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "03143f8443aafd51db8cc765fd1d3d2fd02e3b51634ec8009f316fbd3e9e499a", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "86a0b73c3dbcc251c76fda5f98dad33c9f0e05828e7adfb34d1e5a6c49861485", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "6edb938b465c739daa2421118f976aecfbf11b380f2f52b39b10a929700c6c6d", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "bd6f505457936e139ea796f162d39933873dc3423b20a352c8ce9f5688e50156", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8da4944c2e0f03c11cb802d9c2cf05176a7786a9d6d6ae840b56d4ba305355a6", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "556a89efc9c79968f881bd6908fc5e0b0c2d0215797456c6da0b98a36cf50c09", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "4e2ed5900672180e7130b16e9d14ef873ae5380152170b41495d92aeb700064a", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a6292d71ea66add607cffaf4e5b1a998598f9cb40a9d1de97edd59befcb5e198", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "1ba91bf2edfa334c09b619e894c2c5a34d27b29e82fd211d7a4f3bedd0a553a8", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "11827c2ff4e245013821a0d337e205e3c12ece4da1a2018aa2cce7cf7a7444af", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "2dcd5dfe1e3010bd8fe6bd25f3eaed4d2d1d919b06ff26acf97e8fe72d9e752d", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "01de3548ad5680d34bbd1d5de3d0c9ceca28b50d06003b95f2ca53875a49bc5e", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "dc35cb62e501f18f3f4fe8cbbe9c9f7a093bfd86466791d5af5b39c2eb68d66b", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "698d1e855c9033808d6cdb529669b8d271ade54c13b705872989b53fbc5e0f5b", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c587feb46550d8870c0de9611638b05b1cf4bf5b1522065b7a9e2450f3baee89", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "4f1e5bb2d146f2797232c5a91b95964224c0a360bb67d8cf2a2a8680a9f17dc2", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "15f0277406dfec45910e6d463bd86a9fa0dd1a15d6a30146a3889e034068e838", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "3b44c20c4f83774b61589d2d019358ebb5ff90edc968401dc348f9efa54fa5ce", "T2B1_cs_cardano-test_derivations.py::test_bad_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_cardano-test_derivations.py::test_ledger_available_always": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "330e5353219d4423ac3ee9e6c9f68c43e7a4f78174432ce8d5e3275fedd3175a", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "13414e459b3d1336a537c1319c35ba4bec0db910e6a14cf1536ecc24fa64d1e5", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "f56915bf1981f0843f026a632a432837fc0c3db669b68afb84dba05e99e867f6", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "dbd4a4616d083f1dcc2b2e8c78f27a318cbcb23a6e0f8e87058188210cdd56a5", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "efe6b4b615ae81a35d2f926831be23bc99e5a8820e06d46ee5f64922d23b0942", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "a056d3de348d638182f509160a0fd74d9e0168b1abf844eef6d51acc014d79bc", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "5ee7849c981f62e1e4f7f86c12a323df5d54269cb5ff8757142dca648bb3b13e", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "be5fab7e147f740ced2ebe0a8be614613124265e6379f55bca63313e7c73960c", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "0a7b8d5da385af28a4d0850002dad6892ce1b530c23f17457c1816eba487bb03", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "ab2609414fb762a49cc44fe1247cb70334b86f7ae1ec8292605d251f0e29760b", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "c66889125b2258949b317e1a1ec4a189fae9da00d9a100a5188a3a95bed3c09a", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "e3706cba21fc8d3061dd0490e8393248c1acd1d301379c512553a8bd2917f17e", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "0c49a4f3955069932bf0be0560b844f6d2c86d51afc20ef436ac86a151f9ae2f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "12846e6a2f9374d38303e32880ae0dac450ddb382ce009cc26f35c595ae293ae", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "3c1e44a4a14612eff21e42b04824cbae2e261c39442129aa378e26e0b80db0a4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "504185b0cdfb922db68388b5c0fe497a841796d15ddd60cf278229690591051c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "41ead1e0e1e9a9ab23fabf8b428c76c8662fc76f5f572ad44f0d36dbe8ae4d23", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "41ead1e0e1e9a9ab23fabf8b428c76c8662fc76f5f572ad44f0d36dbe8ae4d23", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "116f0c187d163406fd68554264dfcaeb5f5dcd978edc1843df7fad55f80123a8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "fb130e2331f0c38a10b5fdf19476ae48a69635e1206333fbd003726525605660", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "6b1f6320dca7b1c57d3d3f0c2b1f22b20ab9b327356767d267ad64e2f1b49aec", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "21c2b697ef7997b3e86d41ac85d74f9bf18e5e88ee971faf213593da0050618e", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "5c86135d329c2eaf9cf782afdbd0972e66fb89c96582ccfc90025b5f2fdf2830", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "bab466e92c9984355b6c7605ec07263a7c19b5658eb492647f8d33470aa5e81a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "17a88db216b0572fd601a0c9ae91a1fe107dcc15e35a48bd02740fe9f16f3c2a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "d8aa88bfb05bb910a5484c75e5695f344714a04974ed448d0d21cd9f87b3c72a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9858a1837b365dfea9601b5a1ceb1f5ac97aa46470577bd81abf325d58473018", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9858a1837b365dfea9601b5a1ceb1f5ac97aa46470577bd81abf325d58473018", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "c394fe6069ea3d6df7f7cff29430507f4b5024e169bddd2aa6af4070f66d7ece", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "96e408642977ca368b40fb303b8fe876a11b2b78b7f8c88c869dc935d82bd00f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f53d32c7f02b5e7f8d3cc07ca95fef0175e1b46f0e48182632b93fe9a76f740d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "ad1bd5519bb4092548b00a6afa9fca1d4ee43e35436292b89a14215968681ded", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "5d86a4b987f0e038c72aab1b8f54252fdd9d0654b4f5dd0a24296b5ce9c7dade", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "9c340be76cb107c8a3a795de2ad9f36cb4c8b7239bd9e9f6a054468502717d43", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "cb3a82a6d1ae56584d6ffb6e472ccb587810e66d81a25d6ced94dcba6e2da2c2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "154ef13882efa484aebd626e5b6bc93cd78569ab6fd59dfe4f7a0e4e81edf96f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "41ead1e0e1e9a9ab23fabf8b428c76c8662fc76f5f572ad44f0d36dbe8ae4d23", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "51fb8deed9cbca8c0e62bba1953bd66764d78f46e61b578ce9dda5bdd4c32391", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "ad1bd5519bb4092548b00a6afa9fca1d4ee43e35436292b89a14215968681ded", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "b8e1e6f64ba865436d9491f52c0f20d0e7ad5a202405a196a89d13152acc519e", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "9c340be76cb107c8a3a795de2ad9f36cb4c8b7239bd9e9f6a054468502717d43", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "cb3a82a6d1ae56584d6ffb6e472ccb587810e66d81a25d6ced94dcba6e2da2c2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3409fdf07ac8b6221c591851b2fce42fbcaa7227a0389d0d4d89406263c446e1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "ad1bd5519bb4092548b00a6afa9fca1d4ee43e35436292b89a14215968681ded", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "bc06e835dba30f98992a2bf558d598b31bb5d5a426a16464a370134c6683e38a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "70be24b460d006b24de16386fe3cb8923d9cc40c6b0a632408fdf263b03ae0e4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3ca3d267bc0427e089eec1d2b25b82418ef5d6855e24cd461cd899abf04dcd08", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "78468305fa636ef388893ebf9bd4f86883b969b406e9648394e82977cc6060f8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "11813a183cb05928a7cf15d7716d350e5b28d75418e2605ea9a6cb6024475307", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "3ab9cb61d38b6e9c2598d4d31c8464b0376a270a8bee4944757f0b0caa507808", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "3da003152e68343463a52b6358586de39648c9ef90bbfc187146753da2516c27", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "97c2f5fcf12cb700621f7d66f15bb1713f101d1b965b07b1ac180cdfc473ac6b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d091eb8d6ffcea6a9607e70d227035fe5d9447beb0e78aa8c39379be962f3fb2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "8c9450870394e69d8be2dd12f909c07957dbfec3ce92cf53b5b3574ec4950631", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "66b9fc396c297a7d0590648a96d68251e69a6620bfe39c25438935e8a078ad02", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "21eff33de74d08da220d6808ed5b884b06ff3603680f05cb07a0a001fd829609", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "05b0745d004c4f28da23e3a51cd78c086e42187777fcd8e7561e9a7d5d9e1b6d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "a77aa328f8144e67efb664c7ef75710c81262df814235ab972f5422eac987b61", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "5c4b0c678d3c4ac9960e705dd7accf7a51fe8c2e08f96b6921a3223c4287c402", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "1613fa469809ae81c4d7fed8ff70a6c4a4cc9fbdd2aa0a1a0805375d959ea7f8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "292dbc2eb9334665350a1e6030f9fad874373133c0e8ea4104188f462ffb6279", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d7799b55e8872ab448ce483c40633c2ce5e3a218636ac9b8e1087eaa80ad913c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "5655bf43216ebed386d0d94618cb4d7b092c6af4c01d482940471e8ff714d59d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "d7322111420d9edb5efbb4dff728755d1ff3134a065d21a136e7ebd72b8cc539", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "72aac5c76db5add89d0d3062ca383befa917598f95e59a232b56a2225b7aac8b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "208871a487cb1fc9c7619418bf397ae24234afeee83613ee36bdcac55e55a2d1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "208871a487cb1fc9c7619418bf397ae24234afeee83613ee36bdcac55e55a2d1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "2f98486527e66a9f804543ab5602c1998a979145f869b8e98704f454738af666", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "a08beb0c12bc5474a22422141bb57a0dbb6a6dc6123806a1882dfa993f9c844c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "eb349c17d25a5d4a1f15d9c9501c61aa0660bc79002245fe849bf425281273cf", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "012e7a015d0de0c6e4a99d021f7fea27a4c4f44d20789818b58e95542219d9bd", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "ee3e04c757ec2e5841c7c787c999b41f962e724256e279d6326fa32c1865ba98", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "dadbdf1fff1ffc986655feb4d56a1cb5bd716b18189e2b8f792e9f9ba0c00b42", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "764ee198ee6061f80ee24f1b31f40f406f42513c42dc816591ddba6f64c711ff", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "7596419109a890af36f48f26feb42b534f36a20346fd2d769e0fd791a4050c30", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "ad1bd5519bb4092548b00a6afa9fca1d4ee43e35436292b89a14215968681ded", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "bb3afc2d2eac01d9899d97bd9dd44ec07515f01d2db8283d66a1e40a9a9f850f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "e8246c0661aa2f5d8589a9d4fcb8d931500b15884d6dcb49ebc7cc20661cb724", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "ff8615d2ae0c2b87fd428af40f3d6a6cce1ebb13575c6e561c767aa443969759", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "59304d4673407cf54e4d9d2ad74f29b85271fd1910777f8a84582f9289de81ab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "3718e2d7bedde3ed07c0d7fe7d74107d145ff3d9326b25f099183201fa2843d8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "1692fe62ea2ee356c24cede4824b9f4d1f75cc46368885fb75db4324798785a4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "648363025c24f733e8512356a655289ac8f7e3db1d4ed041594663c27e9ddb3f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ad1bd5519bb4092548b00a6afa9fca1d4ee43e35436292b89a14215968681ded", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "e817d48e946c07663d06f04805db726fba3008a10dbd38ccfabba9b0a79178ef", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "068b2b120019cdb6cd179dc65826a68447fa01e648fb3d66f3895824c8d58135", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "207c7d6475f3e778eee0729d419a454b1c38af23e2484f910c30787e26626b0b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "43ccd05fa2fc085b206161846f7925e18af02a8e66be8ff624e6633af1c49ec1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "ad6769ee1d740665f8e407131178ebb20ca08b833603777992c4b3c96df19d21", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4818d70778ca73856f09f7599e0923781fb19e2d848f730b87c08d9e54cb343b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "a68e132d59ab90017da0484f3b34a8952f86bef31bf6599f54786faa7b1e291f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "a0f1f840ee169ff7dfc95bd1fbc5275c897084730547b6e03ded60d3ba1c5ec4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "77b2d6873f0827433013de4098634a6e841247fbc8219550a24d8b7c72c1e2c8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b176f7fcb85efbbfb00c9c5b761d385ec41369efc005594f41c9c549f477e8ec", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b176f7fcb85efbbfb00c9c5b761d385ec41369efc005594f41c9c549f477e8ec", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "1a0f5136fdde476d9124382b59b2cb27e6b23ae128e133ab09b1df9412619fd1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "0f657bd77aa760e8f9835d69d9ad8bf3109c01438e0bbd99c57bff77fcc45c04", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "8181568db5f73ff98d90d50e138205bb55c5a3286658cafe542699da2d27d61c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "acf11688d8f4f9a69c6289aa39d76c11a3ed6ef34a438f3f303bfe66f2e9ec00", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "8b9e251ca23fd03911afd595b4a1c82953262f543eadee56036a617d80060b92", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "035bdf013fc767f536c6e5dbec854d5252747a5816bf9c2c7ebbe52705be63e7", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "41ead1e0e1e9a9ab23fabf8b428c76c8662fc76f5f572ad44f0d36dbe8ae4d23", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "41ead1e0e1e9a9ab23fabf8b428c76c8662fc76f5f572ad44f0d36dbe8ae4d23", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "69e09858e10830a57c83096b40926e6f7f8892793f4d4f7e0df2c273cab23793", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "a0a33f0f0e09c3c2043ad1d95dbf8952521cc8a214d7dbd17d4de8072ebe8582", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "bee7f1022e7be2f0665d8e6fd06aaa44bcb8f1c5e52a38ccc192da8d687c105b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "12846e6a2f9374d38303e32880ae0dac450ddb382ce009cc26f35c595ae293ae", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "21c2b697ef7997b3e86d41ac85d74f9bf18e5e88ee971faf213593da0050618e", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "48614ade29d43a321832c72828a4b7f5ad8135b3dbdd9e1cbed948475f77a960", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "cc07efb4947b149a63b3abbcf6cefd9a99a2a6de445f9bb7a2077b6a7b61f635", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d71492bcba8caede3af5f6432f5a55f2ab0d9c317045027618cc58bd545db29c", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "0845ff6da4f59c54e2196b10d5051e363eb23c439e98a0286f92efb7d883bb08", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "9fdc11df1fdc279640f408b8a7724567c15da2225f968d0c5f2e570f68fe5d03", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "d08556f10ea0f5ef599dcf760e47ac14ea68af8bdacfc2bae4aeaaf40ccf2e5c", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "d556a82641b3ebda820980af18530031ebbb6ff1f93babfd40ae072af256f2f4", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "e673370efe3f9dc64631201e59c665f787009a64550867c1543f6046251d42ce", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "afee8f386ca679e3152d9de6998d9464a06a7a3756e2f475d296338bf4b5a906", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "c0bcded5cb1ee4a3c7ad7c063cec0bdf95bcc931ffe16c7d552494045d7780e8", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "5cee21708d542f88906697d7b36177a58b48b0e7e0234344328fd04b5807c2ed", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "23d5b2c9f0a4dc34502cdedc296c005085a27eba74f46570954045af96cddd6c", +"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "32bbec0f7656d26734363df7b037abfd0986e3b726085c30d09fc7bacfb468bf", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "814be6fc1275882215049275f65d41b5205add189c3abbb7eef70a7a5bcae108", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "be2037dad31a09bb6267ab970edd0a745336297995905f48e3505ed8be1669e1", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "5e5ca3c2a96fcc2f35417c13c7de81660f9611591ec9355f48aba62b6cc72332", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "9a137f69edbaed170e4a218f333bb81fd0bdb4951ab84902359ce965cc668d07", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "dd655eeb058e1d0cb19292a534183c66c8f0a9768d3b7b8c82a31372cba1abdf", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "99fdcad64292363d221724a8ad9044f3ad50186b7de68009fd275236ee30ba5a", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "58993ecd340f0060b36148d168c1c8ae68e817019f2cf8ef955221bac5bfaa37", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c870f29b382033121705b20d6dbd2d9aa74615ff125acf1c7bef95c7d88d0115", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "bc3440736f31df066ce217626a9c11af00f0ee8b3a2e9aed8571d598ea5baced", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "00c48370a66d94a854808c15d73c66b026acf10794538ea73284261c179a01ac", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "1713fc3f35208c51224e37c4a8fe2f31b42500abed2ff4a767a7608c0fcbdc42", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "84ed8cb06e7db1702deca60fdb9050f48daccb8f77ba1a113008e72282b70125", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "84ed8cb06e7db1702deca60fdb9050f48daccb8f77ba1a113008e72282b70125", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "f9cbe2f06dcf161d2bf2d864dbc6ca046b9c78e1a2a3a9c30a6006bc73edef09", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "11b62a9de0b162373d67b498bb881625a47633fd2af6e9f22a4ac06042a0a0d2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f677be583facd1e34379532dfe39e9809634c811d01cfe306dd3082852a8497f", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c6750b0b28a5191b32ad6f682b43026c4fca49b22f15ce7a7e1c332e08e7d921", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "b788252e632e286f1e0eb9f25f440bdad7bff822b5fe7eb2c2a0acf257cdd0d4", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "d78b94ed08744ce63e4a9f117b7847713ec174b0acfa7866f935e4ac432817db", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "145cb271549259a3fdcff01f7ec4318a1d02290d6762c00668629a8b0a4ecf51", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "82080c3f901043e88429c129576f503e612e0aea0b191c43dea42aafa65ef43b", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "b788252e632e286f1e0eb9f25f440bdad7bff822b5fe7eb2c2a0acf257cdd0d4", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "b958b6c5a233fcfa2a04693351aba5b5a643a2e5a9f8be15fd7cdfec73f89c33", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "15ec44a6b327f6d36e39417526017e5d64b93946f161c125be57cce6d3dcdead", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "cbba55975ad9a7e7b3b0d2e3d582bb28d5df3aee92d8c5fec1ffcd0ef9941339", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "76d5790496f4b2dc7d5283445447a056587532345d6fb658148512a08aeabbc2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "3c3cf960e2aca8536d31c3cd45fa42783bea09d4946793124fc1fcf780e40301", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "a0390a272ab11bf8241b43c19074769a7cfc6c41bd10b0cbd3f593a99556646c", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "224fc8414f4760eb59da49a5647e75d2d5e174a6cecac1f075d02c8ad42122b8", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "bc98ba363b53d130e648b8060d5d2bc173e0cd49e559e3b3ce515898d5af69e9", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "27fb99a0ad9f4a379875d2b334a284d041283989604dc214d9a1782e0a4b10bc", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "211ecac73ac2ce69a50534e17630620a39871a8cd99016232b955d3792f79462", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "f37b8265a2e7a75bfb09a03ae41ad2a8c4b2c296e6098d3e09a8109151b208d8", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2d73a42a1d51f1e37a47c9d00b068b6b1391f0d984ccd74243c2cf2493f424da", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab1eb75c7c3cc748301e3bbd7969f324f770ed711246eb974a3d23d15de8726", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "30bf85a73810868f5c97ed5ed277c67e94cf720de03cb6e596fedfce4cf24195", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "12e8ad78ae39bd192e43403aa835988c248cb37ef2d80ccc0b132cb2a8b04395", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "22ced1e261e563427d6f447bf4d0e58783fe6133d6d0a5ef7626f3c5944027c5", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "df8c258eb7dae8851a588d99c67ec72739560b2f89a254ef02ef50c59c7827d9", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a1b370b3e33592fecd93bc7d997dc428f343bfa256d9474bbd6546a55f5e2593", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "27d8b898bedf722f46bc802e45e3632347969588862d91976223b5ee7ac5d34f", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "955dc242e93db3e95246016279fff706abb4675a37f1a0213f1765028f52ced2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "686eb7fbf0a4f28006c92b3057b62b8eb9de68b410ced91c6e7628bf4a125750", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8f6fe813d33f511f95833f2f9c6c3fd8b54e5564324db59ed2e459131b61d5ba", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6fb7d90bd064291bf03a8bc3321f1d9af7d3cf6cdea2f4c7995c3e187772fa46", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "ce285291c4fe4bc85b21e0ec897ce906ef334c59d4ecf10a39027696bf145ffe", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "0dd1a5ab171ec590f2c9b8212ae25c14b7c874f86bbe229d3429e4ac57c4775a", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "fd1fd070eeb933a691e4fdb734fc5524ca78dc53c730a78d9c3fc29d99600f32", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "322431a19d7ae10b608051f4353100e6a98ca3dce11c063e99e0331e8bc8e824", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0bf62d60cfba212bf3d4169a828c862a07d34c2ceb0e0da5d8ee8d84ba6dd8b6", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e25d7d71648d638c1c311e92c3da446d125492248dce5f45da83c8e88bbc4652", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "cf4819c0bf37509b64c587e6e69d938ceaf717c01f7b1384461bfd7c8a81be5c", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "1c6f0967dae46487234a54a139e8be1685d12eab471afa16f6134c61a8dd4fbf", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "00e920a0adf7507576ccf1cf946da0e45f1ccc06e329bd0fc98c5fade1938ec1", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1f128db52b7463d7d2b0db5eeb98c703ce70b297256d9fe5d403ad883f8c7912", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "d026fd1e2c8ca9c80492a55764d9296e7689e47c6ad6ffb474669b54ab40bb3d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7351417f44da89666c19b7ef8e6781c78b131a69c72292fd7ce289045f8e2ee9", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "f06053998dabb6b56d371b0dcfc72bd0ff2860bb5b4b9188ace88b66f6a386e4", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9d11fdef0e4b020bc57701afe7a0d78b03e121aacced85c8fb7fdeba28a3ddf6", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "477caf4eb070fffc0740a578b55ae756909c0ca947abdca6934366661474517a", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "edcd19b971a6dd738fa844318dfbd7e522da0c17f687eb8f85307a688f09cd45", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "19d6e0961446efe014b0842cff44cdcd65c289eef425254b73fa152c467c6eed", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3f92e2805da77ff85093fdeb037f0beb8edfbc5f57b280f849aa61070bfba874", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "32a1cf701c8c7f17deaf52e575fca1509b07e3579c81c714a173f7bffe3f4ee4", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "3fc9ff7a259b18fba6e6314b03ac4c291a2c010979b87c83a46bec0fdd33ad15", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "da54d529e08559a3c21b5ed2292994daefd64cfb36b30bc332a43cb453a91452", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "fb8bdacbfe3dd97bc7cedadd985f6b50148543d99d75acc6b979f4b6819c4170", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "968c85fc0bd3628bf4f28a07c7ba57f94efdb6d578df28ab6f9249c5974d525e", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "530f2962f1b30c96b1748a78b35d07239b3c99c701efbc11bd3fea94621c2c5f", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "578c5ea24271de38b734fb5e68e6233f9ccc9c658b87bf6701fe3ed86209cc0d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "78509dd5a1194be1c3ffd3ba12c103025fb794e951baf80c08737354f3a5e48b", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "fe918bcf02427364a43ff3e0d4be11419ac433509abdd5e31810a32b70d7e408", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "950153b041776bb32a7e49afe35985e501fd7952fd701d43d90adf7bec855656", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3a0373b3d0a3de2973dc8eef0feacf23bcc17752174a27cb14325f785845b95a", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "dcdab1f7ebd3985ffbc13132f9e791bf20ec2fa88a5d12441a85240d15c40962", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "f84db7101212a927cc700e24c2d2b0a71db5f80679f465c0293af8a18b00f130", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "3e43bd4e5b39c7fb8bd592ac06dc6057c0457ea6ed244a2e1009ba7e85e1a27d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "814be6fc1275882215049275f65d41b5205add189c3abbb7eef70a7a5bcae108", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "58993ecd340f0060b36148d168c1c8ae68e817019f2cf8ef955221bac5bfaa37", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "238fe35ce694b0e58ef6484ee528a1a73e04206b75c9b6940822a932d959e35c", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "ac098ce52f717f2a7b8a8c2073a7443851a01f0289784f274394ed6ce98d66a0", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "e0b653b6b767e9a8a0957045e6b1ddd4d9f29997505ebdf18254b4d3b1d7dd0b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "e0b653b6b767e9a8a0957045e6b1ddd4d9f29997505ebdf18254b4d3b1d7dd0b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "573f4a713c7dca45dcde666271c78e69c08dcee077a6c2b783200491e34f6b06", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f1fdabbc2adbcc5b7ad3eec16778fd666d3566ea2b21f204e27d4f8430385fe8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "d92e28888a7b0c77176b889e803880173852b477fb95a14aeb5e9731c79788fb", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "ad1bd5519bb4092548b00a6afa9fca1d4ee43e35436292b89a14215968681ded", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "573f4a713c7dca45dcde666271c78e69c08dcee077a6c2b783200491e34f6b06", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "acce4e5d7eaac353bdfd30cacdd5a32759ca0fc48638bd9e6fe88d1d740a648b", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cfd1bb6ed828b68ae6842b623935cc290cf95e6bdb0ee09838597a5f3b23146f", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "573f4a713c7dca45dcde666271c78e69c08dcee077a6c2b783200491e34f6b06", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "d7286e88a8d562060f595b9e196ff00580b3bb4ab63804e635ea78c3b57c23df", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "62ba956749d0586e5c8247b01164b1d580070102631288606b30924a30f01a10", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "4c730bed2201c1844e0f5134041230cab6743011df59118512b2d5fcb44e6f90", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "bc46ecdc57b4a8e547d111ba18a5eba600fa53e04fa4cdec54f328ad9a35cfb7", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "0dfca1b37fe33d8e38d306f61f8fae2b8e7c422e39673773e0fabf78b69f0228", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "09ac4dcf4d1748473f4230c77a2f0643c159070c5ce2528f0e3f167ad8aab8ef", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "6b48b7fcb481f4d6a025197fb8e112b2f2491621dd7f9c47568d7033e5f11d49", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "516f6bf357fb515391abc4aaaa652db2850e3d9bf12acbf593589ed9a8cec316", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "5d663e85b83cc7036abdd7d6fe49546ad27bdc42ab26970f38371c0f8eed4770", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "13e3623e86e75ece0a7cd1fbf03e4f3ac0b4d0e78ca38aab11f8d74ad7f67835", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "13e3623e86e75ece0a7cd1fbf03e4f3ac0b4d0e78ca38aab11f8d74ad7f67835", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "13e3623e86e75ece0a7cd1fbf03e4f3ac0b4d0e78ca38aab11f8d74ad7f67835", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "13e3623e86e75ece0a7cd1fbf03e4f3ac0b4d0e78ca38aab11f8d74ad7f67835", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "13e3623e86e75ece0a7cd1fbf03e4f3ac0b4d0e78ca38aab11f8d74ad7f67835", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "13e3623e86e75ece0a7cd1fbf03e4f3ac0b4d0e78ca38aab11f8d74ad7f67835", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "5d663e85b83cc7036abdd7d6fe49546ad27bdc42ab26970f38371c0f8eed4770", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "5d663e85b83cc7036abdd7d6fe49546ad27bdc42ab26970f38371c0f8eed4770", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "5d663e85b83cc7036abdd7d6fe49546ad27bdc42ab26970f38371c0f8eed4770", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "62ba956749d0586e5c8247b01164b1d580070102631288606b30924a30f01a10", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "ec0686cf476ddee7af6941327bda0208621deeb9bce74e9506253c62a201954a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "1815ff0ed8ee46bfeff6579330ccf10e441a1d783d846f9e677f5d6c569315e6", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "f89324b993396f3f8bc255d0b8dc8be99573bc9b44c46f6b3668bfe023b8c82f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "c73751f863b50e7e83ee838a006c43a39bc6c602aa7e342a117ed6e8bb3cafc2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "12d6259205f1341261af79f88c97872e46250a1b610d52485abc366ea1e61627", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "e59758e6f7766e5d1a67a9efcf8c002469d8fa623ff9a2c30c9981b9e1702ef9", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e190e7c3f1495085ef52da8dbb7f0fa3bf82479afc397553137a6851a4f2b6f8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "573f4a713c7dca45dcde666271c78e69c08dcee077a6c2b783200491e34f6b06", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "573f4a713c7dca45dcde666271c78e69c08dcee077a6c2b783200491e34f6b06", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "bc46ecdc57b4a8e547d111ba18a5eba600fa53e04fa4cdec54f328ad9a35cfb7", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "02b6c671768f92c511f9d924e87fc2cb80caf8f32d672db44aff8735d31deab0", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "bbc5d386f0ec9eb9a18a8612f20c73639b51329ad0eef0023f142597e895e01f", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "dc9043956a32cf1b141f3c85be985b9518c3f82591f2fa63e3d55c9a7ce32815", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "a1d2e6e582b2041a9e886652e1d435f97e5476b0a53a28ef27517ebb320896c3", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "9b0a8ec675dd67bf545ef12abf1fbde55dfdc577ad2f3764cc8f042f0025a878", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "bcbeb1a5f0b009c5b336906931216ee44e32135b7a29cf893855608fa5784280", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "625c917c328cf70fc8669adc8f8654db7d1da36e3a89a82a0a7441e540f3e0e8", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "151b76b1f47ae8f8339f5bd604d86b4eb6993ed802ddfd111eff1301743d9109", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "d6bf126e450a35a8b55931f0bb892898c1e308d4ba8e9448ee129b9ba119b8ad", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "80e3ad43f555fb940ec30ce589ec5e24b41664f35b5327ab434be57a887b6356", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "a4648e878dbae93a3f01adb9a5ac84c2526491d7ec46b6cd09f4dd7be90ec65f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "e0b653b6b767e9a8a0957045e6b1ddd4d9f29997505ebdf18254b4d3b1d7dd0b", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "d1c9784695c859a03871ba45161ba95ccbbc22a8a4e51d0accdc45ed3e370d98", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "1497779a282d9c3c4ca8bebd6cf6c0212889d7f6abe2b5b0b628f146541693bd", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "04bc7ad64d6eb0acebb787ea8dd04894a90e0b87221feb1bb7c60692e3941667", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1c6634811d177e8f37fa766828dc401364c490763a6727c63c223fefbf7b0503", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "208871a487cb1fc9c7619418bf397ae24234afeee83613ee36bdcac55e55a2d1", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "208871a487cb1fc9c7619418bf397ae24234afeee83613ee36bdcac55e55a2d1", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4879b87590a5eaa820df87bd48a4906803087682c6edf8a74ceeb202470184be", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "0ff2ea19940f5066258c781814ead30c1fb6257b7eeda92e9b66034789b5bae5", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "208871a487cb1fc9c7619418bf397ae24234afeee83613ee36bdcac55e55a2d1", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "573f4a713c7dca45dcde666271c78e69c08dcee077a6c2b783200491e34f6b06", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "573f4a713c7dca45dcde666271c78e69c08dcee077a6c2b783200491e34f6b06", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "9e3f110d773213a08bee606801c9233befa78860b20e43282b7728ed5919135a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "866be45197b302ebfb44d7c98f54c878f0b4f004882d7a1154e66facbf079c5f", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "01be3556d21ee46ceacda3ccb394f2fd3fc8b8700ceba35716e690f67d13a94d", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fa93004fe8ffd7a2a0d5a4df8a8ff0f07dabb732e9bf8faa4fa3cc6b3486f475", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "1910474a55c68686764250fd5b43de46cd86496837e56c839546b412aa9a5383", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0018c03f137f0f2225e2ea81c97e4fb2b45cf511965116a69b8a01dc049ae9f3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "13e3623e86e75ece0a7cd1fbf03e4f3ac0b4d0e78ca38aab11f8d74ad7f67835", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "94fe4e54042d550e5cf9657e6b07d8e10f16e68944db514eadeb0b4a3ed0cbab", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "ef2cedaa41455299fc48b335abbfaf406190c76c2065fcbb77a601b62ba184f2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "3d3c61b8ec82612014973944fefb901b4462d4d0825f48d4c015f07a8ca1e07f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "1e953ffbb5228f839abc196748e2a7a14999369825bab72964a81e2238e63bbe", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "ef3bac55679dfdf1418fd8d013a90a948e6aa05bb012d18c9d6c8ba045b91bf5", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "6ed7a8d390f68115cec17982929d76b1e637d97a2e4ec55d0c14afd653bb862b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "cb3a82a6d1ae56584d6ffb6e472ccb587810e66d81a25d6ced94dcba6e2da2c2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "636c90c8ce57172b08ad1a7f67ebc56f6ebb962ba52c52bd3e53e9e26426d29e", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "95b6bbc3c63e2132dcbf7dd995c4c8e8145e74bea00a19ee6bc61049ccba143e", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "9a2fa5748b06eec146c5cd028c873ae5bd0535ba328deb276af15f5ccbc75495", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "2b1f182d77e42bb6cfea1c8332b4c4943c050183d1729aff433c086c3b75b0eb", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "64c86acb901f0e5a10fe0fb131abe223737aea1e155acf750ecbc8d6f68370af", -"T2B1_cs_ethereum-test_definitions.py::test_builtin": "434a93fc6f7f64964893ca182463b9a5b49b51506d5ce67d7009f17da8c63634", -"T2B1_cs_ethereum-test_definitions.py::test_builtin_token": "106f75d311320ba864aab5cfd4df28ca0fb6f0d6ad80ddc3e7bbcc16be21fe37", -"T2B1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "4d6713a3741f77eb5896ea2896a1df053b5b6de7e0813730ac64e0851f698caf", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6d495e433dadb35968f3d6ea95dd5ef7bb2ff4e1fb5b775c0803aaff650c17ea", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4b2ae61575d0f153779d490a0416b9d0f77e5cc056b67377c679b6e8d1e4c135", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "1d4ac3bb9797f47c118c3106f6e1b219bc727930cb3b305b27b57941ef5e2bf1", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "1c1f01b2f945580c4a3de9569e34b8411d812f8a17e0a659182863d5ef9965fc", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "088dfa4015188a9915e5d688bb344edfde98fc7306c84bc62491cedbc459b0f6", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "d7d74ca27e3013d0ade665f1f899022b69d1c6710d888de6942256a27725b3f9", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "c9f15064fb08c809b318ebfa3bd56918942694f8f0eaf77344da7010fd3a74a9", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "35c883e4291d70ff5641f96e280ec503e1d18f7fc629a4f5af56731d324d6a3c", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "102e900340fea35a43c9352ed784cb279b54eeb7a6de3e5e1e0afbe315ab6756", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "e6169ba9c54e9a05443a9ae953795c5bd4d35915c55aef311ede9d7b405093a8", +"T2B1_cs_ethereum-test_definitions.py::test_builtin": "3a7ec3506208a4ccc5a84a336a3b3e5b06f7ce3f9a7e36de6c05cf3599e83739", +"T2B1_cs_ethereum-test_definitions.py::test_builtin_token": "f7ca2782e9f99a86ca6fcbae0751adc5a99ddda27554a4661521711c864fff1a", +"T2B1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "96c71169792ab82d98a5dbcfa46a4654acebcd640ceaf5d6c9df056d4b362232", "T2B1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "920458872942686097a8cc1bb315b51b677e327abc28832b4ecf757527e48893", -"T2B1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "d3ef57d459d8a43c6421c38a32df66a0f2d37ccb31541e4cbaceb5829013f055", -"T2B1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "ed9d830fb7b9d54671eb0d8a1229d6056cd1e364f0d41b4d5eef0e11d464f045", -"T2B1_cs_ethereum-test_definitions.py::test_external_token": "34cba96fb142e729048b612537858a5c2406a9c05e9e520b0b870820322750f3", +"T2B1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aaea18a317bac5eff0c8a3610830ed833ce14ffdf39d71a66a8cfb7fdab73f18", +"T2B1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "b78ffc60df92b39efa76a98c7cf431f46f8e4ff72b0e5f5edaf02237d789a08a", +"T2B1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "e6cd59d888de715267dfc9f8185c49f5785a362fa21129540ba4f8b4b5dc277f", +"T2B1_cs_ethereum-test_definitions.py::test_external_token": "28f91fee40d9ecbd9e5b746ac9f17ad74cabf8f28d62649edba1cd584d3173c9", "T2B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "8198df7be54a494d3e101ef512a9b9732958a7475c5775826e7af68e03d4939c", "T2B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "53e08d57c0ecbf652932c78d0e838f08ca1285cadeff34043dda2bd4f69444c4", @@ -1772,7 +1772,7 @@ "T2B1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_slip44_external": "3332f7dc305c0f9fbdaa2bff54965ec9723d4f29d003cb2e00c84b62bf6441b9", +"T2B1_cs_ethereum-test_definitions.py::test_slip44_external": "2cfe6a12843602f13141ad99fc37460bc3e02e9517ad02ef9c835308a737d6b3", "T2B1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -1834,80 +1834,80 @@ "T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "05b925efa210073cf41f6ad1e0d857235db5cc903d93d62870e8634699c2e949", "T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "65bddf4190edbfecbefccbc884faa1c21da472c46bb950ad5c4291464d568cb5", "T2B1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "c4bfcd1908331d857a89e1206fd74ae093e349830cf592a287e406bae2a71f4d", -"T2B1_cs_ethereum-test_signtx.py::test_data_streaming": "bdf2ee8eb4b38cda8a31624e31b446acd08f2721f72064893f1d91c2741ee91f", +"T2B1_cs_ethereum-test_signtx.py::test_data_streaming": "bffb80b4a37ac8970377f8bf33ae4512990cf89ff4182dc856daa2e54f6161d0", "T2B1_cs_ethereum-test_signtx.py::test_sanity_checks": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "6b3443e5efd08087152c8f709fae1bdb07902c5bd6bc4089aa82221c4c2ba245", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "33842d100ea6e40710597a5f6db287a450df6fcc68b499fde6a0d41b11475739", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7ab9710ea3bb548a93d9f5a870e6129a8f0b54f2a812194e467eb194f2df7bf3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "2985f500421f2ec13073c0798eb4634081cc1233c0da1dde70c9a887d354a115", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7ab9710ea3bb548a93d9f5a870e6129a8f0b54f2a812194e467eb194f2df7bf3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "6b3443e5efd08087152c8f709fae1bdb07902c5bd6bc4089aa82221c4c2ba245", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "6b3443e5efd08087152c8f709fae1bdb07902c5bd6bc4089aa82221c4c2ba245", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "103b7db806670fcc2aafe687bd2c2be506ae9fee13e2c3398b88c8a4934ec60e", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "103b7db806670fcc2aafe687bd2c2be506ae9fee13e2c3398b88c8a4934ec60e", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "6b3443e5efd08087152c8f709fae1bdb07902c5bd6bc4089aa82221c4c2ba245", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "6b3443e5efd08087152c8f709fae1bdb07902c5bd6bc4089aa82221c4c2ba245", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "245a447516db76caed2c227293b6cd200aff279672ffd381ec2d736abd57744d", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "52f7ebb74b6dda5f107f85cca8389da0eb9dae77f3022b83f246c262fbe60f59", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "d37fede66ed9bb7b26b780443a25854d4fad8a9d7c17bb716718dfa96da49f02", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "6b3443e5efd08087152c8f709fae1bdb07902c5bd6bc4089aa82221c4c2ba245", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "6b3443e5efd08087152c8f709fae1bdb07902c5bd6bc4089aa82221c4c2ba245", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "6b3443e5efd08087152c8f709fae1bdb07902c5bd6bc4089aa82221c4c2ba245", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "831b44963a471314995706d6f66eea2e514678429336fced9f6fd3ac4c24944f", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "eb4fba75cfbaa09263e8b38c0d7d767450cfa84b5e465676fd8011d4b0483556", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "5118f3d5bd1ef889425db25578d321e44a2adee65a2ce5ca9350a2a8554c18c2", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "bed775395de481178d35c2edd52c01f57eaa693846364f2eed701cf5ff01d5a8", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "7e0eef1a969f9e193eb7afe09566aeaf628cfdb29e5772e5486b5bd7bbb45083", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "fc844c320d3acdbcd8ea4d5acaa559817095f99f680178c8bd61dad901ba785a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "4bc6ad321d281a80246c4fd787bfd150bcd5f5973ef57a2a86a372320ba178b8", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "dec29ee128acbb31269be1191f94a2b514da6430b7ec99d3676cc99fcd9dae81", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "4bc6ad321d281a80246c4fd787bfd150bcd5f5973ef57a2a86a372320ba178b8", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "7e0eef1a969f9e193eb7afe09566aeaf628cfdb29e5772e5486b5bd7bbb45083", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "7e0eef1a969f9e193eb7afe09566aeaf628cfdb29e5772e5486b5bd7bbb45083", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "e20526a892b8d9cfdef06066202bfda65cb9b90c606d2b90e07650be7824fa37", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "e20526a892b8d9cfdef06066202bfda65cb9b90c606d2b90e07650be7824fa37", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "7e0eef1a969f9e193eb7afe09566aeaf628cfdb29e5772e5486b5bd7bbb45083", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "7e0eef1a969f9e193eb7afe09566aeaf628cfdb29e5772e5486b5bd7bbb45083", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "d651a39120893828b7fb7620dcf96435ac5b42141c9a1d36772e1be613c90d02", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "6cd16c0608e520feabac901cf1028cecd52683c7bcb23a4d20ef11df2bb379d2", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "c5497246cbbdc666118deabfa45d4da0bde88ff4b6f090d1a96365922be5d734", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "7e0eef1a969f9e193eb7afe09566aeaf628cfdb29e5772e5486b5bd7bbb45083", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "7e0eef1a969f9e193eb7afe09566aeaf628cfdb29e5772e5486b5bd7bbb45083", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "7e0eef1a969f9e193eb7afe09566aeaf628cfdb29e5772e5486b5bd7bbb45083", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "831b44963a471314995706d6f66eea2e514678429336fced9f6fd3ac4c24944f", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "5a60499f1d1d8d897ee8b057b0aa45e8ab5ddb82497a55748757c7a4a818b6c3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4abee0099ce3ed423674e708d044844f13f49d83d20d284f231433a8045392f0", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "7e57e6b3c08e323b3a5378cb4961da90f1ce159d35a9f4e366424ce9fb39427f", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "f3b1fb15c6a58c49ed2da827b98d640dc45c7fd1b5e48b16e4aac6b04cb992c5", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "336c76f2063db85978ddf2ca092c34155c315e857ca324451e34e0bcb7adff0f", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "9196146a0a70ced61bef4edf0d5599822234a1a33e41999230e2371addcdec75", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "1ce51a2ad5a4fe7a91d3be64de174697934dc69f0d8a824db6b611f4fe5ae4da", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "fe6789ade09bd1bdab8ff481588138f58acacdbf04196d6f5274dc4960914993", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "13423ed5dc1d9103bbd78fa38eaba03ffcf26216a32c85db73c9d8fdd55adaa7", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "fdbdf5d247311e9f1bb608b0d744c8ede41ed792b83a28c66f2f8a2f30b42bff", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "1bb6b9c225d75e2a94a2dfa51b2238ae559ea9bcb90e78b9b00ce90006a38b58", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "75bd6a9184017a116eacedb21b4e5c2459be8d747d2a7c85a03cc694df0b8e53", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "1ce51a2ad5a4fe7a91d3be64de174697934dc69f0d8a824db6b611f4fe5ae4da", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b67bc7313497f6e8921a074b58daf76dec53e33effe1e538e736d01c68b82f25", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "5c6562c2de5139ceb244992f65887b0d1f87fd152229c3c7e6bef28577e6b0e2", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "108a4e58b123308de0157d64bb181dbfff10b39820836d8738108f22e9d18e3d", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "872f0c72bba59c5e3a04cc1e2127c44148b1074ca6c1b3e8327c17d421e780fd", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "395add4705638352d45f6f72c4f785975da3588cab9063b5788767b1c648453a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "20950a16b87fd46611a88587d327293ecd6a1becc917bddddd2126b48ac08755", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b67bc7313497f6e8921a074b58daf76dec53e33effe1e538e736d01c68b82f25", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "85e6ebbfb4b085a127f4c3ad2c297811c0dbb89bee88e4be2f882d6425041461", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "85e6ebbfb4b085a127f4c3ad2c297811c0dbb89bee88e4be2f882d6425041461", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "8af95e7f5ca1aeba5317e0df9e5f81ed704803e65ba107e34e8e7458933de647", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "87fbb89821b5708b192adade286e12895f4bd1a6bcf56d4217ad5a8ecbdc3e6e", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "45357465966032ce6d7a92ab574a77de7647f960edc1618067478ac9aae79b56", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e73612cb880074aae4fc37c2fac42c0f483bf8d0ff8814baf8fc75e84296a00d", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "f68f65f24744cdad2fe61fe07db261d120d09e3c08c080fa1d8dfc35e33f9a55", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7a19dec8ca3e0d7b63b4d89e25f87cb7c0759ba57929a53523829ac5f7908fe3", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c29bc9316322d5955f5399d136667ed0c6073ae05492e8875692c75e2fa9fa92", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7a19dec8ca3e0d7b63b4d89e25f87cb7c0759ba57929a53523829ac5f7908fe3", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "8e216a589fc798163e1a8f28deb17850a948b8917fa3df7ae5352505c9762487", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "8e216a589fc798163e1a8f28deb17850a948b8917fa3df7ae5352505c9762487", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "7d735b66b9b733594b277339bbe09be1bac72a45ef57e15f1e57b123a8401fd8", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "bcb0def3b00826be42839eae9353752b074460e4ea7ccd1f5edb04d1131b0542", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "d1f325ca2e584c05e8661536be838dc84939d32e65c0c08f155ab187a0e327eb", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "da8d8cd60509a3a2c4227a020721e5ffb962e8a869055fa7b24830e4339ffecc", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d38dc3e25408285b797a8365f14fccb7f79f28f742bb18e6d373c78e40116e82", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "f8c1356273c4f3b4bd5be87bbf74935aacc2c4de5cc62ce35c79834b7de8c301", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "a884c9e86ae496f2ff89262c3fabf24113f8ed759bc2d5f4db538cef1388e390", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "71f542d52a7e8273e7f5db77ad5ec09db594823519a155f1aa14231031066533", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "1f35d44082179825cbc9d020563ee3ab4f162950a4e282e57dbad976655f7fbe", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "41f7c0d1aa1315b2f76e4bd21cfdbefdba5ca638151e56d14c2fb011fc743b0e", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1f35d44082179825cbc9d020563ee3ab4f162950a4e282e57dbad976655f7fbe", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a54a0f8e9448aa7797e4d36c2cdfd542bf2732e4c68cff475e7fa506d33a546f", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a54a0f8e9448aa7797e4d36c2cdfd542bf2732e4c68cff475e7fa506d33a546f", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "60f3db675f134312d0185ee768f8019ccbc34c894368d109d7f5bbed200aafae", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "323e048b93a07a91277b5b6fa9d642c8eb5efbb4d3427d9bce0f0d7e4fa3a05e", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "9d37e9878d384d77aaa0bc345cc60cb0045ab0161fde22f20ed2355e9c1d69f8", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "da8d8cd60509a3a2c4227a020721e5ffb962e8a869055fa7b24830e4339ffecc", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "53e64f6a4d3a2e0b15899d6bfaa857e448c24ca71c33a62a04dad8006af89c5a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "131c2baa663dc4089aee8c85b71ab85153ce9172aa70fea78dfb5ee4f14d1dea", +"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "75d90fc0cfc18b2cd25162d00b946a48be611664b87501e104daf72a9619e7a3", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "10bc01af49681731143dec47687cc8426e4d684b83151de5072a1bdc34eafd25", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c0a7353f39afb0bc45e040bfe85ffadd1f59179c1fa183beef657b105ad6fcd4", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "b5b7cf0fb6853a835e716b7a5e7c9a8b64fa9c926c4897836c663cc34dbce64c", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "cf1bc9cb6679479908769b5a73460fb208c3c38fb1bc834318d08d6e62b5ed35", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7203207d398285a05e5fb86cbfe8cc369c6171b24ff9c78faf7328c7fa2e7b62", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2ae1cb6297e0a25352f230ec237654e8599b764aceb2be61324030c685c5bb97", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "aa7313cc60983bc75e518d6a00e893f48e1131f795620568e02e405fffeb96ca", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e1bd2aec3996ab65fa4d11e4439d1e7eb5702b5baa5ae50708cc65879a686bc3", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "6ea757e19ebc1103655170dacfc13854873eaa7fd4065cde587da3abd5a0546a", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "cf1bc9cb6679479908769b5a73460fb208c3c38fb1bc834318d08d6e62b5ed35", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "89844b3c22dd00b61928f0fe4f07d71e2977830a95fe576a35866ae09127b05e", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "d07e3720584745adb2f784c15725b29393e7238c95660318f00a946abdab8fbb", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "eb21e6b9728934efe2c2f9de96e29788d9cebb4d559067c22e4072fa1cef54a8", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "9a59afbaf4c7fdb908edb362089043295b1f58d26a571599ed4ed2db0b2a99e3", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1ad6a996cd8d7069b28cb61771efbbe26634ab38439300e110f2c1d744735d61", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "daa1202981db31c00a091736bf7de6a5a4e3947bffe3127c242f401819fb296c", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "89844b3c22dd00b61928f0fe4f07d71e2977830a95fe576a35866ae09127b05e", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "7095cfc2848969821dac2934bf52231039f46caebcbf5b9a69c3044ad7390dcd", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "7095cfc2848969821dac2934bf52231039f46caebcbf5b9a69c3044ad7390dcd", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "b5dd318de60f5945f3fbc4e900530dd4899a72361323b1cbf57209e42fe66f63", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "181aaa3b397527f11866489ce05c9d084fac600ad7e53fe02a3552e57436505b", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4ba4c7fe165c4d02e910e7529bc4ca61de71a04370a9b545ff3b8a6f1a61a622", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "266b17669864cdbd75e89d6500bd316553660561512ef46fd95ced55fcb30eb4", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "d4a077f2622c7b209d9fb6ed0d06ac02ca7275c3906a0a8ffc5f5d72cf8eb380", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "d71b58334be06578438d0de2edd39543d15e9f4260b1bb0008f74f9b44694ffc", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "ad261c896f1156bb8539b331369feb371177940772b7e15ac4b521f49577be34", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "40ea5e051259d69d3e5f99711b91db3d6b5b16d9c5e5426f72012293214363c3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "c44a6543d19e3fc137522bca0d835b37a52a1c7bd89851d69f358453732e61f0", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "0f857b152cc6509ef6d9e687dbd913f49337dfed63fc8069f0b68cf3bebd5aca", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "e0e13de243fa9647a3ab9702adb01c1e4b96fa39246da00d6c22e3348b00c6f5", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e13889b6af7d12b08bc40cb7bdc101066a8c32bd0cfbd94d9ad69d7381991fe9", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "5174923e32973121e0229c44cd2aaa1a5ae3c1a3daafa68cae325297bb55e220", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4b2489245e628d5e6aa5c185b5dfc97541413c7f7c2bc9e2ecbd4c5d9d0cb979", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8392d302a6d412125b6c5c68367c9e312ee1ddaea2508a039848584c8c9515c4", @@ -1917,8 +1917,8 @@ "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "6b8e73e5268cadb91a78d95deb612449f038567f00959759fce99e9575716537", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "6b8e73e5268cadb91a78d95deb612449f038567f00959759fce99e9575716537", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "e14dc398b92277a93a19e2541f994c72022bc1e634346c7bd27d921f8271dec7", +"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "e14dc398b92277a93a19e2541f994c72022bc1e634346c7bd27d921f8271dec7", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "69d92b51b7dcfb3f983d31daf33fa98630a3882bbf3229b5eb9a940dcfc16e40", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "69d92b51b7dcfb3f983d31daf33fa98630a3882bbf3229b5eb9a940dcfc16e40", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", @@ -1984,38 +1984,38 @@ "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "36f240fb7eefb3d862052559bb249d168456537ee9d0ad20e4bad7d186b5e5ef", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c986b867ecc95697c26eda25a723a2ce7f62983fbfb6a7ab5b1c22b4c6c9953b", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "e7ba4c2d19feee7a8c231cb48bb25813758ec26b055525ab3dc0e6edabf8925a", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8ba053492949b3e2e36455b85aa124aabdcbe52f032e3ff9686e308c7484c7c8", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d755e219d8e7b545485f945bb8e34bec74b906dee1e056b4eedc34d4593938d8", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "925f1e3aad162264ecfd89285510fb44349543613014d96eea7a0bfa641ece57", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7eaff43156d489a93128debabcc876ba7433aaf56209028fad22da6f623f7e5d", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d36d75b3d8cc4e46541242e6688ea71f5d2925e8cbd2bf699137c9b41f2aabe0", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "f7f84560f596a5ff522f0c595236cde01f0e17ad1800f75c08522a51806063eb", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "77b9b05b01705cce9f7b768ec038f237983ed757e228f6418d4e81dffdd92b71", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "6a53b04ff1bc4e4fcd3b430aa08795ff01a175b877ab1207c69510cadd357494", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "05b5f6ada328168835a87ece6264a1682f57c2fb4d34457eabda1fcf5f679fe8", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "723f35e2525926383bd139fb42487586d33f9ac7b59a8c84ad03b3be210042c3", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2a658abba40c87d28541563959d82c504e2c1d7fe25aa078a11911e9445c2e25", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e3f75f7033dfce0e8216f11e19a4cd6d315e525a17ab123aefe9a2a68625636a", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "2a658abba40c87d28541563959d82c504e2c1d7fe25aa078a11911e9445c2e25", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e3f75f7033dfce0e8216f11e19a4cd6d315e525a17ab123aefe9a2a68625636a", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "aeff2f1e85ce01b89b5b26ca1021c0e13cb0b182c0311ac575883894a2d2e15f", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "bc12dcff036e2bc59afa11a4952f071505a90e834a068fa1b20409cb1aead279", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9d8706ee6c278d403b8133535147d71ca58e798d545ae31ed37c5191da98d018", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "f7f84560f596a5ff522f0c595236cde01f0e17ad1800f75c08522a51806063eb", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "ce596fa58afc1c9942b2639f8b4465c56226cfab0b1fb4ea829bd8b8e94726b8", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "418a8cb27508fb80e5f7fd32417bdd2fbc9f342980807b6f57737e3c97566aef", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "11029501e101e3b01ac9aeadd6700405253ec3b0cd8fa0aec5777f8f99df7ccf", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "ea1c2fd9efca86887612cee20e75c4f6b86d4615fbbd3b58df8b989400184db7", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9efd6f9713961212d65bd59a938f5e3608ce73ac1074953b293ea749d4804d4a", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "0ff6e676b56496972498e345183bb9a488ce84bab5fbb7eae01de4c9d9a1ca70", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "7d30c823cc027b86f2fa6c39c97cbc6aa79d4f62adda5971041ac2f7b71a74d4", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3be21a0fb08c2481c3907fac99b47963a94716076293bf751b9650abc69c40c3", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "79ba713d760738aee7951bc07196d9d666b708523a604568b2d6108cedea77d1", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "c4af7ecdd46562213d6383706fdf6a480a127a63dad936872ce4685d47d0e0c9", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "1c98e645f2f8969576d8fdc0d57a271f5645be2f61fcefea32fae32058ecbe59", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "45cd2dbce2b931bad6ed910c437a2d35dc43ec86b1d1dfbf2c77151f586005b5", +"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "759bd23ec9f9a5c63a9c2f9d84fa1451675d38c75b642fcbd5d5448f9148399f", +"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "c33c05df43e9a59df5d568d9edb7a00bcb3cfd594e171cf37df4edf29d8faf0f", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "af390c611b41f2ac6f5b03c05591c95a8b18b3d9aa95e99d67d323e98d225d12", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "857119e4e411eb8061e65d4ce8e75e7b37b6c2c117721341fe5dc903f46f1f7b", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "115bc2ea3357c7b07f7fe55f4650d6df4ac5d29f8252ee1308baf634dfed906b", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a6c64dc9596ffa53996fb937690e2f03188a1efffe5a3e06b727474a4a03109d", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "c8069b5627b1c59cb2fa27ed107d379272ecfe468e6b70e2567bbc2348d47e78", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "0493e5a92a51c5c280f97e79e0a692134c5c34d9d618256d4bc8509e0ca506df", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5a49467e368d522bad3235beb735ca134bcdcf3610a6054c832d81dc78589543", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "0493e5a92a51c5c280f97e79e0a692134c5c34d9d618256d4bc8509e0ca506df", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "5a49467e368d522bad3235beb735ca134bcdcf3610a6054c832d81dc78589543", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "9ad67ce8350b09f3c7c3b4eb83ba4dcdb926399c687f1a8039f26da639299d71", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "bee60954094581e5f9ef3b2e3d780d8d89ca904140eabab1cac468e9179e3784", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "0538494a2be218d762ce646ba2a023bb8c38525286c348378387c01f483b6502", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "af390c611b41f2ac6f5b03c05591c95a8b18b3d9aa95e99d67d323e98d225d12", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0bb80c1822c414f07029f0fe97ae5c5b3c831de9ae6836bb3a0af4b4505289ed", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c87784219a83ab7a59c2218e021584d6103d430ee7c06cd51210fbe10ccc8c57", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "76bd7a5a65da432e4fbee1206016d2bee65413ff26710c8c11543bcd0d46b625", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "08de7670f18acec9253066980ee19d5a71e76eeb32986d73aa16019c964c7e37", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a70b2808912753c5aed47d3fbbe0174c225ff4c6c4ac8a53ba6f11701d5ff158", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "b78da55edb1ed1c184377d63df2ab06b5c56eef4edf1e0cd53fde07c3521de66", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "32db976ceddabb3c9631cb68ed3125dfc688dfc3e6095ea15a2f75629c2e3f85", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e8dee00273427ccc871dc79e55ebe0354b12e1b6bc18610bf7064a2c8063f608", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "60a98eb38fb81605f3a843f2d95ee7d55e643a232d2410106446ce5008f66db6", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "6cd3a36de98e8baac832278cf9341d741b343ab98ab7d4f57d0323bc87274f2d", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2c92c69358fe2b30ab5196beaaa45344092d95e57de0214eb11013a5990cc397", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "256bf6cfb44e0f1199d3e06d60e4d6d66bdb5fe2fea4440953279f36143d15c1", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "af55a065996c9f442fb1c4ad331c1c2f70e757038135634d427d8f84dcc348c6", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "a5a26fb50d7c14d34da7c83f5ef6091216862d119b386c08976386bf02d1982d", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "467e3a95c58dd61854558d6fb947a8be8dc03d494e97b93e079f0af291bf9e41", @@ -2023,14 +2023,14 @@ "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "eced6674c2fc5ce443c5ef1bbfe0de7c319e2b16084e925972c54f2964d21e78", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "6a65429a96ceda2cb8f140e7ca532fbd0200b086b01da51b7ac26cd701191693", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e81da35213aa022e2acb574556bcb07864ff5609e8ee154b0b91174077ae2179", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6a6d57d7b4d1d5179264eef1ed3b57b5f6d095c9f8e108e1049a0512f8811103", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "0f25df5a45c217f284f7c873668793b8af2c42f1b6c7058e846c06f96ba97716", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0c934e995fb139b13fc6387dedce3fd0211da630404209a0148dd1a30ad0e2e2", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "b88b6356a39b8c2b1f09bcbc4fa919d0b4b0480b47f7094e27723be3cae94fb4", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "5bfa09e6afb6a610db9b3660ece972215158242a428ee5b30d471a74b2930ff7", -"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "592beb1b371ec3e411e973dc48b38b17026a7706e4375125bce5668cb7d74f8c", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0c030ebbecd40e18dc6a9c0c6831d981b23cce4572a2015a168164ac84b3f2d9", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5acfccdef18a6cd9d1254b9bbebb679f5aa7b50e3dbaa19519f33397fed5d6a5", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6e7810188ec903264134cf5d73ee3d443b58c499aeb4b644403b523a13e217a7", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c088cef440e0b380a48ee04a5a89ffc7fd4574f608ada3d51a3c276c05679580", +"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "690a2a0bb52fde96e307d7ed7c3350a258df3e5cd9969f7e7aeefff525e56025", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "470b2386c759ac03380fad1c2f2eca5d45ede721d6c48c99f5ab75876350014f", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0d8fb809f1c66ddaf6904fe03e8f8b227ede1120573bedbbf14f5a45209b7925", "T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "73d5a230a2f91435ea57452b4c66c2e31282a196f96ba1611211dcef32af9506", "T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2511cff732eeb801fbfb0df5fa4463e3f1cbae334871ac6cf05f8ce81bb13e36", "T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "032a1841b5f986813c17de6ae95e9c45e31c67737577795b26f4632970f55f90", @@ -2042,20 +2042,20 @@ "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "9539f7ed5f9c59a1fb0a4432d18ab8a4c7f638c4c98a8d4b7202a658d5a67268", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b5886a9242548fd94144d45911d678b8a83e54fc7474a7585c6eb9b22dd50ee7", -"T2B1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d8af4a463193332c7ceaf5061abecc7b4d3b2d62a01bf974ab6788a8c8edf0f2", +"T2B1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "64f8b1dd06f3625578407bb0762ec1d884d239fa41add8e2c8c4e729e1427461", +"T2B1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "efce1b2bc97194ecfb360e626e1b67c31973452f157fc6c9108ab4e1de64a401", "T2B1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "2da058ddac1a68c2b3dd0d83f7985ec8677e2069cdd0993ee5e6717f91838499", "T2B1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c9581f1b317852be23082db74737c615bc9826a552ccd15fdb58d2e3253a894c", "T2B1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "df62ff08c08567c7da909b819a816601e3bb813786d695a6413c38c906c85050", -"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "de00588015bf9884623cf1897e68df385cd3b986efd9baabc366681b7fa2432f", -"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "7c722b9b2bfcc3c99592046361ac229825ea06e01834a27bbc7bdc602fc02b64", -"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "e2d8cd11ec4a00b52c181b8b28c3509106fb428176233336c343432e58721645", +"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e34121c97f8202b5be9705bfe3225d5a2bc8a8d49949d06f6565b1e4ba2ce0c5", +"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "a4e117b3af0905b34431c15284430942a657e7e25abf203a4a430ff2286eec74", +"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "ad8bd78721f3f8ac8fb07651749b2b6488551d94a5a8f578207d447e5884b065", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "715f8f9479d74e2bf0b930a989a40304178fef818123d68ddbae197a1a710a2a", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "dcbba03df6cc2f5579d2f9b2709194a9d590135d7ecaa370d882b1aa0091f074", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "a8f075efce3dd9c0d5a69446a6b8b5e952dbd52e4ac554d47da31fe8c91745cc", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "7fe1a74aecbac68a30893f3b8335fedf2f86feefb86bd4dd49669ba7dcde56aa", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a0cd5a8ca5896b925e054fa2d5b5bcb8bfcdce67606c36cd5c54ec7a6b03f6b3", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "3be13db9c26a859fd03334cee14ba65a7e1c2f88d4b3614eb6ba69a7935632e1", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "c477236977bc543ed26c62190c9dbe5c2e897059aac7d1c349cde02f867387b4", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "8320d46c869c56c2db39a1f65ee9164212c4e66092bf93a74ab4a173060d67ca", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b3d8d0bdbd4e3f5d9f9f21aab2334ec9460ab6ec55b22d8a745c3cea45999a0e", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "039b3b2426f42eae1effbe2181378c9aeef2ba11602f561a3f093d1e51b3ac19", @@ -2064,24 +2064,25 @@ "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "2ad64911c2069660647a2c3541599849607c022c17cbed32661f0d0d399de572", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c3fccd0819b630b6aa8c194213100a22670709f5c83837bcad5d747bf31abb20", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "745692b0b395852f2cb42f71123bd69583b7df2c6467118226377986d51860e5", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "f7706202e812045b9111eebaf97b636dcc9c9988ad0c92712b39938ac25d792c", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "535dd7c823a82ebb78f7c1b68ca139a32c28438deee0ad5ddb47909b152c31fc", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "a738a89c2e2682bf238a9eb9747302029f69dd22718d71ab6348b0fd7aeaa016", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "394618f2dd97eef04851dccb226593a84e6bdcf51ccc84ea2dd6d53d3262bef8", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5e615ea8bfc188769724e3ca5c7d2b323984f7fb05b86349da777d2e9f42644b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "c53a45dbf4f27d529453a624991ccae147671f1f77ed4d1b03933a5f73f555ca", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9059399d5dd57efd8d41c429d4fa866b5f995c2ec96eb18ad955457139a9f9fc", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "666cfb2eb916466c1d0d872ac2f33d357335770d778ddae845d43393acc5498f", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "2621af1195f873ff604b461dabc06dbb7f48c1f7212011e981b85dd119ec4ec6", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "11ecc14553f25f9b1e80e579c8d9c0972295c0f99036e6e310d4ca60a5f4cdd3", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "4dc85f2ba62f4ab5c690d7dbc7e6037dd8f17f2acbc7620779ffb3a4be62ec1b", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3d458f3cc78dc934666a9680fb0f27a45595a1ce5981e1ed3ad47d0abf05aeeb", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "b85d69dad89314c84b9f5719c9e6a5bdecf07b7bd81ac530c9969f3b007fa9d4", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "a03c46c355915b7da5778543f13a712257278664a5e9ff3f6ee9255a97da5db4", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "9d0fa88c83a048a8952cabac17e4e22051c6a023a4a223fee1b3f48e1be05766", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "20e1cccfd3833238dd5b9556b3690a9e076fd995a577462b3b07df0db886bac9", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "a4812972da9fd56a6755b59a27d426491c6997ded94041739a565cff5b18dcc8", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "069ddf002a36141c34b1548d73114ba546deb3c1c5a77c0e22b2478578579b98", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "871a82c5d2cbc6b3f2ca5d349993d456ad2acedd4fbb436544adc5fa4a0450ae", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "9d10c7936588ab9da686b92626f4d4dbee6194d4ad35eecb430884ff9b03ef6b", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5c216805e286ee7aee41e4aa616e9d4a2dd174ffd04bc4069a99578e0a027071", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "5027f6dd8500b97ffeed5f09c94268eff1bd7c342d772aefa5f28b3e5ff897c4", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "a39d9d81c1a31b737fc822ae3691c38c85a52d3f076e66beacbc004ae332acc7", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "f58c3ae5cb619aea102f3dc3c394ea2408e1580d4e60f6a0f8fffb5f88c04dae", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "922fb1e30f86c91605cd621f301bd21f7cc290a2ed9f775ec656bfd6cdaf096e", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "0f44bc536de01dcce51a61d8ad4e61123c3418cc7b170695f6c184fe694844d1", @@ -2092,26 +2093,29 @@ "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "d5741b2d59bf8ee395d33ca802b474976a00a3bf71a7f97085d3c171dcb77f2b", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "19eb9e18a6db621d873cd814375a612f1f6e65e5a2228195a41c5c5404dde098", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "cf89c97b9916bdbd4dcc7dcae65fc4f8f1bb6325a20ca585b7a7cd2ca23386ac", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "99d034185b2ae64897146e18e9d83d2d184766e8d3daac0a4e7ef0744cc01145", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9a3f3d0b0dcff8f3162afd6502f4c538e1f593acb9a078ca4858e22d90d944a1", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "fadf078b110eb4b26ab766fd77662588243cc13e0b05bdc787f257dc3db4e9e3", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "d3fc26a8a8de18d97abe79c81b761e0b3dc83f377700f5f4fa6db02c0ad571bf", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8ad4ba42fd6870b890a0bed845773cb135019156bf4d8ec455cc0c12250a882b", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "cc0b421c70aac37dea8227d51e9993e4a99b5ff27ad5d333af579f7d732d96a2", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "3e5adb55599dd32732039ae480fe4f049b54f785ba2554339a238d57d53ebea6", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "f089c068485ceaa4b4be0b1e6ec80d04bad3f365b450b63f2543e831cd696966", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "b7c00de6a515cef26397b9bac2e2e82c3d39c1c1f9ae1ce7f47134b11f663fec", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "89c601bf1ec67fa6fa50198bb78ffd534cd26a4b3b39958deecdb307466e438c", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ab59d340da7b1916e04f12585d433cee1083c9d1d744b5a99530899e86c411e7", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "60078d2d07b5db51f5766f3b183af061771de5319af712259ac14edf93ed47d7", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "729049db358482875dd713439d6e3580fa3e6c7ef36ba5a6554df2af705a722a", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d98dd224ee7814aaa29ef8dac203ee9a0958c98fe51a5c5137b09e9cff01a505", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "09c111a86664213cbdb8d095603a679d72660d5550dc62b31716b14661171bcf", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "4775483766a2f65775882e01ee12b03e8e1116bd04ece5858c113290eb956898", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "dca4bc8f3076b33315c0d22d1d22a059ed9cc5a1c8575c6f21172c1087f40130", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "b86f7491829284e459d53b08b2a8c817f92bcdb94c77ab56b679a3c43818cdc6", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "022c26e7b6f6bd02091dc50c2f507e5d87853b9165448dc4737f73c9545032c2", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "ae14d3c08f19ccf139771094de50e21d40eb0b93388aa06497ba3cb43fd58936", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "1a757d704b9bcbb816bb06d7e5c08421c3ae65d7c7fb66ef1462061cbc254451", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "b053389a93bae4f677667f3e91856370f03a3c0048589abd8381cbba04e02cc4", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "08602cb293ea84124c8b97de08e7be0c8d6ee33d8161d87960291e825a27f32a", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "8cf352183715cc4ad8b7e49320af313f089f550bb5a9ffda45e421d162fac86c", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0d8fc275be4ba5dde7612efa97880681fe2d232ef255b2487da561f7dc5cd21e", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "ac1e2ba7820e36c0d94e69cbec4d92a564a7d188b291c5c7bfc3daea63189a16", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "2a36b6aa97d2e3b71264c1a86aaa59e72c70234a1e5bdee15990007129ad5ab7", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "6a28dc4d917d366ed5a2e2e1d47ddd410635555df23a036aa56d75cf6ad371a3", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "efcb77ca69a70d06326166e6aa6482e30e8c5c0895bc392bb96ec977af31e969", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "0779e28284ff65300a696998ef3dae0861aa330b18d93a980e11fb2f02866c3e", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0b7ba58da02d670754b1905a0857a41f876e26055453c11392fb518c72c020ed", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "a90868d8be0cccff3f3bbe1a79f5e25145fb8879e073f384eff5d5f0c0ee11fd", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "9a856f11122c7521c3f54bd133356e845c137cb6cbc40e9e0032713a0ae4ad0c", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "289d6fdf0cc59942bce7472ae4363c66524bd24c6a6ce986a47a1842a9e1d355", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f1116d57bd86f5a940a7f676347b3e4393a6e49de110fc088d79841a05ffba24", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "accb9527c4d42d2fde7e2e10753b4bcfd06a5bc3c1b633c0d62aa37659463b69", @@ -2135,71 +2139,71 @@ "T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "532fcacecdded3f68c3003fe68181a164be5a36dda8f6eeef81e7c76bd33d37f", "T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "18331c9865465ccf660f8d0d593fa137487012cfb353c03a9abae9cf2247d272", "T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "550bccb039f05130debf9e63cd9d22d265fb8a7668b73a49fcbfa7678ecd9be9", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "9cccaf7409b7946c7fac39428eef5eec9a098cb4436f4a22d8bc9be013ad8931", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "7016c1b50e40fdb3573aaca1d36d5a35cfbd4e88c4fa322e33e41e5f336328be", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "f94e030b2b1ea5bb1b833ddcdd8bc7cf5e12cd6609b4b1f7a71b969c4f96f389", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "4ea8a7d55d010c625c0bb09629526c1690e2cfddb99bf8c910c671dd0bb5c089", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "b2a924f9dbc011ff42729a08c8b28ad6551b36a52fb3f31d58e9f8c43a9fa8a7", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "1e92bb1e976b9422cae8d0363404d4bbc46bce973f81c616dc0457078fd37366", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b308462410346b80ebde94624abf162adabed767512a4b9ddee9417725721567", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "3e56eb45e32a555587d88b4db449de17776e0c7266811acbcaa9ddb9a76eb07c", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "caed737b90f3a3f806d52f5842079e06ecb6a5f7e05c9442e4829bcb8ade5e46", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "096a72c874f702340224dc6b26a83a8e7c025bf25a76615e2392d08fadb0dfac", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "4eeced431739cb8473465a3650bdf22ed2e8d76aa452a91eb1c4e93be656dda7", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "2b800ad456efa2db48dc1efecdfc911f24f7014368b5d055f881ba161a547cf6", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "911c9b7c0caf676a9c3930d0854da8ef9222cb045784bea5dcdd6db9cb648e17", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "df05e9df09f9da24dcef2225e80d767b8030ddc6038e0801d543dc952d0ba384", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "8ed27183b6066983e535438290c390011f4d7a482324a00658a5c4f753ffa00e", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "2a60b3a334ced408e62fd6cf414362b6617606872b56d0b73d31fe77da88dd28", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "5aacb041dfc500aedeb6c7507d73b53e97d464f0de8ab3838164ab4d86e2ae8c", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "bd7952d0274d1d791b815d32faca5dd88e295319bd0670d86a68e8b41b03dfc5", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "03709e26626e6ce4fa050de9feda49192bc9c889b2d12a289db3a32547c7eebc", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "609d3580825000d5821ba25e1edcf5c9f105bac194440de1fc6ce79095b330a7", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8c1f3605aa2b06b278ae0bd1cbdd6d8ede8f2d6ad78d1145ce088ed1d61fb895", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "b9f2d5a78646f46fba95f6483ff0a4d11648ab6f955cdc383a1a8a5855edb6f7", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "8374b78427587a0efde2feaa539a6ba9a784b4ebf3784dfa6b0e198b05812eab", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "91c0cae3c91da30eeeb9cdbb81fa1d233bca6f40ac410d5f7828d816978820be", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "83ef27aae9b7f2381caceb962ade6a5beec60c1955dc59bc481dde562aafbe21", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "341f77bfd56a569aa0efdeadd1d466f4ff1eb955e74e0abafb3409457ffd8250", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "d51b459c45d8e608e665496f50953b2b6ece33c2a589089401bb4871c2b33608", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "11d8724290285ac0a2bb2ef85c2d2d9adc97cbaecb0e7a485b3814f10badacc3", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "14d325f69adb1eccc69cbbab3f6d6f9d3a00d8504124c1fb53d07fc3f7c12fbf", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "5aacb041dfc500aedeb6c7507d73b53e97d464f0de8ab3838164ab4d86e2ae8c", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "f3455488202766f0b920f705659b142c6f313c7205af72428c3a0628dae06591", -"T2B1_cs_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "c211ebbb663b5da935616fcf6fba3598c371ef1654abbe617c116f837e27c285", -"T2B1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "c211ebbb663b5da935616fcf6fba3598c371ef1654abbe617c116f837e27c285", -"T2B1_cs_test_authenticate_device.py::test_authenticate_device[]": "c211ebbb663b5da935616fcf6fba3598c371ef1654abbe617c116f837e27c285", -"T2B1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "c211ebbb663b5da935616fcf6fba3598c371ef1654abbe617c116f837e27c285", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay": "2bf44baf76389106884a3e3b36861a776d6690a18560a28c0fa198ca9599e23f", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "e962e31e5085de7960e79edd37420a1ea0a6e653bd7af3019f7b63ba40416e11", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "ee27e00cd0e6570e44e0304e93057049391af0591415b1c2431953fe7b480c40", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "3860c9f6dcfe4bc1116a70bc5566b9c953bdc628987df0c8756d350fe005469b", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "e3d71f90dc175ec93beb4ad221c8d368e1c653c85c59db5942939c53f4191e22", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8c7554195aad5ce128ad7310734a2cb7178d074d2b8f181b6c398586ceb6bfba", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "78a7b08aab215580885b93fcf66ed4baa89a932faa7668b219646efdc2f40b06", -"T2B1_cs_test_autolock.py::test_autolock_cancels_ui": "f98ba1e6d62d5b74ff812efbe62f1ef679b663c5acbaea9212d56795b200ca3d", -"T2B1_cs_test_autolock.py::test_autolock_default_value": "5f1cfbc035b5d9f841e053f26eab5f2ef7335f621554382ab66d31ee1dc1bf67", -"T2B1_cs_test_autolock.py::test_autolock_ignores_getaddress": "9805fab4704eae8e0b26136b7ddb8a09b464c3ad1683ad68539c49661dcbfafb", -"T2B1_cs_test_autolock.py::test_autolock_ignores_initialize": "9805fab4704eae8e0b26136b7ddb8a09b464c3ad1683ad68539c49661dcbfafb", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "de899b25701b7cdb70c7054a8fbf3fe9068dded677ad4b9e04be570cfcd74386", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "45ce48b3da95e081158171fb4258cfca7d395e92af96f181645e3f8ed35546c7", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "282c58a6cabb5e08553e59990272914a5740e0c3f0a245181eff60a0356bf46f", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a3b877cd6bed7ba4f017b4bc80cedc3c740dae716da157a145b68e2db75e6be2", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "644c1afe167f2a81a6db31ea35b5d332e10bdc914def29b07e1f6908924b2cf9", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "ed067da09daee7bdf717943790e998cc0a4ac24a5defd2d4a8f35c14ebc9af94", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c1922ffdef4aad899f5c949f3ee96ab998861074a7b01f4f829413156f6a3334", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "74ec91d4894c49788894459c1110fcd894f11f5a53b84920666ab44f75ec2cae", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "70f09df2f3b21af3d76f987f6d5926a51397747e76a11d474c34f5f6133d1367", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ed56e5a0f44bc00cb0d21dbbc5a3be0c5421e90c4197d7c3a7e607a75c74059", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "123ef411fc9497c1add2114f9f5f8e12f7924c210791568d9872d8e9ee83233e", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "ae8a2592c376adf75dc45277773dd3c484c958d7b1d918f898365e7b1f701e9c", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "05ae1cb198171497c917753b558ebb968cf893a1b2877d567d90b498f94b870a", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "706e19edb517e7d72ab885072999e5bef137d94751207c26de0ce600153a3cd2", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "f84a32ce57fc7fbc92073fcaed043942230ab46c33d5854a4e826d4b4a2ea66f", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "4fe3f72abf5915da195f440c09a7a39c18d26c8e7c2f2de39c45f328b7ffbd27", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "c4a2484679d44908d2a62359633543b8043d001ef2eda40aa468d40293c7315d", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0544d60b4e5041f3c7478d288218287a69b01fb9c036a4daf06f8253c59f16d1", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "77fbf7bbfb9ff9df249a2fd5454992e749646f9c149f63cb86c85737b4337cb0", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "60005435aed1e081cd1991ad697ed1d8462f3509163b35159d59e748031ff6b4", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8c0f8c85286bffa9623752eefbdef4a925bc620d0db75dbe3a13e5d691d323bb", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "f872905d7e7c07c6184c612107ab5d1401c264a0ed64db470dfcd1d2a29f5b2a", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "ba9104699f5c586a63e1c550251e72d605d2e519ff093e832e466fa02d7149fa", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "f97157fe42f0f0b36d622444085a07911bd1553f02f58dfd2658069df6c361b2", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "aac91c7521bdcaa38520da811768b59c0b559ef7d4ecd82aae311d2ed513760f", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "a1f95ffb31c57b10965b3a19e5c28b1942718a218dc820fbdc7356821c92c0d7", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "71b013533f03bf41ef8cd29a0a3cf186ae2b5657720f34bbc0c16afb15acf4fe", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6c17b1480f7a3a3b01baa76a389f9ab6ae16a28d6a78371f740ecabd5002327b", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9d27c50bd99283fd50d2b4ae8a08f04c0adfb54859c67ce3de3dee5380fa9ca2", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "c4a2484679d44908d2a62359633543b8043d001ef2eda40aa468d40293c7315d", +"T2B1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "b85b55a292c31978bec9de1e0f129f5b0965b1cba16fbd5988ed5783c764a393", +"T2B1_cs_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", +"T2B1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", +"T2B1_cs_test_authenticate_device.py::test_authenticate_device[]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", +"T2B1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay": "e4acc5b870a39884108e03904e502ca59d70cf1c4d9006aa8dbcdaa6af80fc79", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "d75bcba7305de08f56f3f5de2301d72b76d65d474d5de5d2fb112a45dacd1f48", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "28da4855e5222dc3f1f4b1487a83915b2414b6c78749d532a86cf50560607238", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "ec822d8fa06e6a29e96933431070bcfe3c44ab50b67a090f3faabba7e4fd991d", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "31c36cad6d7b76541a91679d9811d5e0a0e8e54ca516fb9d25b9a887da76ef16", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5eadf109dac01fb7d394ae9790df1fa1f947c698abeb223343fa9afc9aa3660a", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "6a62cd6bcff8a3bfc0d97a695a5ce9b2a3852bb0a48fd3d5fafc81ca182e953d", +"T2B1_cs_test_autolock.py::test_autolock_cancels_ui": "d21c1abd39d9de0d4b7e5388fdf73ede08482ce1eed78e319395ef9cd5b27857", +"T2B1_cs_test_autolock.py::test_autolock_default_value": "fc209f1517a962c1c820db24cf391626838a897332133404befa866b3c3c6c02", +"T2B1_cs_test_autolock.py::test_autolock_ignores_getaddress": "6d7dfe534a9214fbdd1ea326a376f4d69e2ea57f9ad8351c5aeba484d3c3cdef", +"T2B1_cs_test_autolock.py::test_autolock_ignores_initialize": "6d7dfe534a9214fbdd1ea326a376f4d69e2ea57f9ad8351c5aeba484d3c3cdef", "T2B1_cs_test_basic.py::test_capabilities": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_basic.py::test_device_id_different": "eac611a367e3e8fb03285040f9f6847a1b98dd6194cc60a94e2262cb82a9d7c6", +"T2B1_cs_test_basic.py::test_device_id_different": "6297507a80a6105805985b094ea72787b9a5ea5162b919ad5b6c1d2cb1bd6a0c", "T2B1_cs_test_basic.py::test_device_id_same": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_basic.py::test_features": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_basic.py::test_ping": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_busy_state.py::test_busy_expiry": "3ada1eb6b81ca1cba6132b590848152d4f95741a58e0175443a634043b6b95b4", -"T2B1_cs_test_busy_state.py::test_busy_state": "672ba38d2f70c16230df19328f2986973d3cbc7aa93a16db1ff08a5d37a83389", +"T2B1_cs_test_busy_state.py::test_busy_state": "3bb4c4aa4854c6d542c2bae491cfe25cb7d9128ffa2126f1e59b1acd2fa27715", "T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "bd34197b00445a2d4cea025c169dac839d1d3f24a0c32a59d0221fb6b672ffef", "T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "bd34197b00445a2d4cea025c169dac839d1d3f24a0c32a59d0221fb6b672ffef", "T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "bd34197b00445a2d4cea025c169dac839d1d3f24a0c32a59d0221fb6b672ffef", "T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "bd34197b00445a2d4cea025c169dac839d1d3f24a0c32a59d0221fb6b672ffef", "T2B1_cs_test_cancel.py::test_cancel_on_paginated": "607f20d338f7e345dd2eca4385274d01d048dada9c59852e51d4168b214c1e18", -"T2B1_cs_test_debuglink.py::test_softlock_instability": "f2a44eee0e5ed2b69aa6e76437491cbe45f7a3b8d8f0af4067896a371918fb93", -"T2B1_cs_test_firmware_hash.py::test_firmware_hash_emu": "6b7ce9a35263a9f2d664fb382925c38bdba3548013c81ed36e6118c22e15ec67", +"T2B1_cs_test_debuglink.py::test_softlock_instability": "3cfe5b39e49fc6a9461c9f55e484acaa81b0da0d71f0612819bf88a60fed17ce", +"T2B1_cs_test_firmware_hash.py::test_firmware_hash_emu": "f7e29f0aa9167d32f7ae0f5475c29c0f0fd39ba665c8e4cf4638ff07447b3c25", "T2B1_cs_test_firmware_hash.py::test_firmware_hash_hw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_language.py::test_error_invalid_data_hash": "19a433acf4351dbce77ae09e1e7ca459fff8644639e6c8f8e809e87cab219ec2", "T2B1_cs_test_language.py::test_error_invalid_data_length": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", @@ -2208,12 +2212,12 @@ "T2B1_cs_test_language.py::test_error_too_long": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", "T2B1_cs_test_language.py::test_error_version_mismatch": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", "T2B1_cs_test_language.py::test_full_language_change[cs]": "2ec09180130d164d4738135e72f0950c761f3e02cc8fcbd952b5c999e4152c63", -"T2B1_cs_test_language.py::test_full_language_change[de]": "3bf8b47b8a87d2180db3fde8d83701ca0effff29cdc2f09762d1b6056dd53c0d", +"T2B1_cs_test_language.py::test_full_language_change[de]": "d53713d193ea657160d320befdf25431c4a9e6358fd43d9b814c8b7367009e01", "T2B1_cs_test_language.py::test_full_language_change[en]": "1a14371860d2d9e3cda9c4b8a3ca3a1b9f45e2beb0eb1c26bfcc20c22c7cd25b", "T2B1_cs_test_language.py::test_full_language_change[es]": "1db03f150dd5b88c7912d6afe88d7869ca6ab407e58c59535de56440aa9c05c6", "T2B1_cs_test_language.py::test_full_language_change[fr]": "0263ccab0d6aefd19896c2d96a7f6f9a8871257392fcacc0c8fee6212ec340bf", "T2B1_cs_test_language.py::test_header_trailing_data": "abbf6b257e8db657a83cc80f0fea86a46fadec4aafb7fbc3bf8a50123cd73635", -"T2B1_cs_test_language.py::test_language_is_removed_after_wipe": "2fff103489ec419c95fe9d08bf8c6dfb1cffb9e487a2cf51abc8f7f0aff437fa", +"T2B1_cs_test_language.py::test_language_is_removed_after_wipe": "3ae483e3963ca8fcaf29070da360ec683ab9c29729f87be8996ca09f8a509ccf", "T2B1_cs_test_language.py::test_reject_update": "a5bc2e6015b97e3cfe40b400b8139f2e9890d391bca3f934497b05b3308618ed", "T2B1_cs_test_language.py::test_silent_first_install[False-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", "T2B1_cs_test_language.py::test_silent_first_install[None-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", @@ -2223,70 +2227,73 @@ "T2B1_cs_test_language.py::test_switch_from_english_not_silent": "fb2e18e513a44a58cd1e31fa563c3c9783d5ec0a692ffb0b6635b833e13d76d5", "T2B1_cs_test_language.py::test_switch_language": "0c2bc505e2a70aa7f544d15a20c2cbec91ae70da6cc48fe6947ffa4de9bcebda", "T2B1_cs_test_language.py::test_translations_renders_on_screen": "fd543359e3be7f3e65c8e1129df243572305b0a458997343524d7f79a553fe74", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "68e1528e2452e6c4c2f844a13552c686d2ce08a990855e6bf8d9f48422cc6256", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "bfa7efba0618223d83b008d4b8f494df0270a01fe8bdfbcf1694fb9bea2a42e1", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "b9958ac43b3c8914ac2bb0fc665921bf5219d00a8ae342bf98c6ab7c7c33e98a", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings": "325da57b3cd957a1f354a05d77faac15ddc5c8f9d31607dc4963ecdc0c49be57", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "1beeea109df89849400e7bb733acab2c5c8252b4727610d3ac4aaaf9566332d9", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "6f776239150a1ec16f20d242b43026cfbdf83c8d2d1aa44741b54e0699ec60b3", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "a24bdf53d0e25134598a274d20d95a885eb4d06d5b258b6985d1a5f00d8ba9f8", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "f0b4b3f8352e82e83de2b756ce4a88c8de6937213054f0b7eb7fa990b880653a", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings": "ce5645274b5fc13450d0a790dd1d5630c02a9b0495583bdb9db5cdbc6e1388e6", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "a95c15a8583f1b50942df922698dd20e35e2f7d09e526738cb2ced20303efc3e", "T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "b359f6fb4ee2dd63ea089c7399c18f502c38fb0d4070cd92942f75018fd58a82", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "519951a918eb7116aa2d95dd752952acd754cdb79bca818c093d1c8d9915d2b0", -"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "8f8e29d5dc6c9e954998795aa3b4f731aa5970a55de141dc853c07c70fd4ac48", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "487177fc514575393734e77c463767580be49587960c2acb21b24e97a17b20be", +"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "e38272686dea67f5d13d89589518db14a9481716bc7ec5b1cb7e126dea09a373", "T2B1_cs_test_msg_applysettings.py::test_label_too_long": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_msg_applysettings.py::test_safety_checks": "23609cbf4a99072ec4851172d1303b4193f6c9494c31818b08e1c145004b7805", +"T2B1_cs_test_msg_applysettings.py::test_safety_checks": "c663fd32d9d6e18a0685cd69382e433f480c82933d5a84a3a53d8dee0d1d8f80", "T2B1_cs_test_msg_backup_device.py::test_backup_bip39": "c50cbe7178599e54601ea50076ac6ef3db80c09ea9435f5534f1ba7d0b3efcca", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c4b217af3959b3af0f4aba5757deb6f90561ab69ef83e5de57d6e50be84c8e21", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8645ab55b2da69b647d22ba43904690dfa20e38638162b1061ad26674af80be0", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a7923569d0e141ea788a0b9cea4ff3fa286ae4fadf05b6d899444bbb860db55d", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "d210e84b4807d31f3394542914d018dc8d2aee55d2101544f31a36c5b8a4986a", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "499b3a8399acae74af63beacc744249973c3460f66f5be8f1eab236c73033224", "T2B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", "T2B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", "T2B1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "496106c13f3fc902cc00e4803654d121bbf35d43800178afd3ac7fbeb3a83df1", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "5b52fe4f24025edc67f86e4bce0e98616b6fdc87e96ebad7044923a155f94f7d", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "8446a8416795fe0f3dace7af6a5b5036ce1993e8fa610fea8b0d1d033a2d85a9", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "389cf5b306d4b45d9d14ecaa803b260091afe4d98690fe01596e09eed33c1f4a", -"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "4a4ad71df8c63b36e45ce7ecb49a8f25731df5f3e2dc6a3e5c7715c9f6f93f11", -"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "4f9aa178f9ff27ac3fd2daaaabae8d2d38939b090f0219cb01360bbde4fa7615", -"T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "9951758ae92e4ee706802e8920fe3034e440bb76b8c49e896a33cb949f4a88a0", -"T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "f62eb0c28a202d60a24df94b127c2576317a37cfaf48620801daf36a40307bf2", -"T2B1_cs_test_msg_changepin_t2.py::test_set_failed": "0806cdb9f82a1fd608bce0c16ed9db90e966cd43924b01dde26eeb255fbb44ac", -"T2B1_cs_test_msg_changepin_t2.py::test_set_pin": "7a4afd98afc09286558af641182c65594488f4cebc2dc2139f74a2b7f0cd6f2c", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_1": "3a3c51d243b1e183ffcc03378cfd079af2ac09ea8cd8710696bc16686b8ad0e1", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "43367d8c66f5a4a17dbfe1bd25bc2067ea85aa2a6e9486ec2018d935fadf62c9", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3a3c51d243b1e183ffcc03378cfd079af2ac09ea8cd8710696bc16686b8ad0e1", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "3a3c51d243b1e183ffcc03378cfd079af2ac09ea8cd8710696bc16686b8ad0e1", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "85040e43034ab4c6e3eeac4d3ecaa24d3f24e702d8cf0d049a14dc0d92c6f374", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "567d0fb48b141d6d92f39f1adff92de5ad3ca27f77f004abd46a8862d61b2d43", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "57e90fba05243baa9f7c55a08c8628f882d6d906a9dd62d8ea419d36ce8442f1", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1d56ba8d29b61fc3d41c197093da2fb465d1f0ff87622df2ceb599420f8cb78f", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "375273cd94cf39a22e9fe082073ed5b390de87a366dc26490826eab60f7a7aaa", +"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "362719d37f5fb2296adf1b137a96f70ba507431a4a0390d4958bd0fcdd9f6443", +"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "ef462808efcd585f34026107f42294e48e6d13b68028d64ba157f957bdc20f8e", +"T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "6d92c6a4f45a1751ed3795bf424c905bfb40f1266229be7b8fd23b2c9a7aafef", +"T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "391220bb0e17eeb125a0ba7589ff6623d76b2bf8440aaf43d800b0b8ceffc9d2", +"T2B1_cs_test_msg_changepin_t2.py::test_set_failed": "77677a25860127358ec60b8ddb191b1a6adb3f88461434c34b36db34eb33139b", +"T2B1_cs_test_msg_changepin_t2.py::test_set_pin": "25eacd352596d8a7f5d83a118bf32ecb228ad4b1b92320730c3fc093b5ff9c7e", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_1": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "90819328507d3f5214bb09e037d4c72c1cd02354e0f7935cd398faa93016caf3", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "b55b36904a2ba78c888248a3d159fd8af311b794d0b6c7bd07728e4f2a87620d", "T2B1_cs_test_msg_ping.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "8741398a6f1bc57ed9f7b54946398066fb28189cb288eef1ed57ed0c9b6f0dd7", -"T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "eac611a367e3e8fb03285040f9f6847a1b98dd6194cc60a94e2262cb82a9d7c6", +"T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "23dec1004dafc2f7c89663b3797a5d20e5786ed051c4226310b61d278047d62f", +"T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "6297507a80a6105805985b094ea72787b9a5ea5162b919ad5b6c1d2cb1bd6a0c", "T2B1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "4b8be11041eeafa7d2b2e3796b9ea4e46a180b07793568f1569994722e1a9c13", "T2B1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "4b8be11041eeafa7d2b2e3796b9ea4e46a180b07793568f1569994722e1a9c13", "T2B1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3779415b770cec004f28d9626911b3ffad26d17e4f8ba978fff76932948ff3e2", "T2B1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3779415b770cec004f28d9626911b3ffad26d17e4f8ba978fff76932948ff3e2", -"T2B1_cs_test_pin.py::test_correct_pin": "ba3753b4f2e8d045f2d0093c3faf9416492a74bdc59cd5604408bac69f87f286", -"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "4c024dc5ec731bfbc71fca2607fd8a49c6c5b1865deb740c8cda08d8337d78d8", -"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "f48f8002def964dde87b908364bfc3757165d81003b40b839f029cf9e5c6d238", +"T2B1_cs_test_pin.py::test_correct_pin": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", +"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "8d9564cc8aba761a1db0ee46de0143ce61fcd42631442a14d48a893f15205726", +"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "2ee59f179703e1891d570c0906069b0a4d5ec7fcaa9656ce96e2670888d1440a", "T2B1_cs_test_pin.py::test_no_protection": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_protection_levels.py::test_apply_settings": "6d0dba83cabc18db57312c001753c9146f43a58d47ac074ca6c39b57c0a1ddaa", -"T2B1_cs_test_protection_levels.py::test_change_pin_t2": "69016551a4b3cb300837069ad99ebb295f269badba0a8a383c186b2ede1fc97e", -"T2B1_cs_test_protection_levels.py::test_get_address": "a7736796bfcf054dcc389f36dc0e8d89723a9c75df3f40693c95f30ec16dd1b4", -"T2B1_cs_test_protection_levels.py::test_get_entropy": "c9bd21f780fa18b56bd04dcb1a359ab47fdbff71936d32846b72a7c3228d02d0", -"T2B1_cs_test_protection_levels.py::test_get_public_key": "a7736796bfcf054dcc389f36dc0e8d89723a9c75df3f40693c95f30ec16dd1b4", -"T2B1_cs_test_protection_levels.py::test_initialize": "ea05c3b519577267660131d944ff6364067fdb59e9ae9c509e6a253bd7b3eaee", +"T2B1_cs_test_protection_levels.py::test_apply_settings": "aa9ce7c028eb5ff7ea7a9d8ccaffc3cdddbef9c4d6ad9567c10385a2877c20d7", +"T2B1_cs_test_protection_levels.py::test_change_pin_t2": "2144c7b84a45efbc176bffd6aebbcbfeb602bedb6948474b485d02d4d6bd6c6a", +"T2B1_cs_test_protection_levels.py::test_get_address": "e65ab39200c44c1417844823a6e78da8fdd8fce4fbe66b99a2b8c50bbbf3cbaf", +"T2B1_cs_test_protection_levels.py::test_get_entropy": "24eca43268845aa42597e492722290a85fa067e1f4a3485ebfc638db8d9f6e28", +"T2B1_cs_test_protection_levels.py::test_get_public_key": "e65ab39200c44c1417844823a6e78da8fdd8fce4fbe66b99a2b8c50bbbf3cbaf", +"T2B1_cs_test_protection_levels.py::test_initialize": "48f0ba1c3e264b529a4530b2f667ad07b5f9629c0a5c44f8e64ca69c72137920", "T2B1_cs_test_protection_levels.py::test_passphrase_cached": "0ca4df8cfc49be43d21350e06d1bbb218736cb534c6f18a4c93a157686197339", -"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "ff0322e20b1331281e23d14773715e466727264fb5ac731ff651e91ed11e0a7f", -"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "fb2c2081af53f29451a2234d7d04fd1ee9be301b53232faeb6d38cf5c2a91d0c", +"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "09c8fbddc79247e0d34ad5fd0223bb6929937aed9e06526acde0e544bae73b14", +"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "cba2a22cafa905cbe40388b035cf4505a8c07fddf8bf8d9d1de62651015b73f3", "T2B1_cs_test_protection_levels.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_protection_levels.py::test_sign_message": "be42dbbfa1e39a0b270c34e6cf1e6dd820125d13df2a965fe0d32b248ecdbf56", -"T2B1_cs_test_protection_levels.py::test_signtx": "ae1b4460cdcfea9dac513ac85372f3fc600dcdddad52f0172565d559d49e665c", -"T2B1_cs_test_protection_levels.py::test_unlocked": "afd74eecc1f41a8feb18b2d583dfcc748e6819ed5b8cd53b3fb622bc971f886e", -"T2B1_cs_test_protection_levels.py::test_verify_message_t2": "e6c98ba8f12824923577923ff63426603828e19fc6718faec29e712cb0485320", -"T2B1_cs_test_protection_levels.py::test_wipe_device": "971d4eca86370012c8381935c9ad6ccf1e246c59f992ba2f219a78470fd83969", +"T2B1_cs_test_protection_levels.py::test_sign_message": "8fd7a240caadac30c199ef819e5e80c84b09d0ee241eb8141cf67f0f724193b3", +"T2B1_cs_test_protection_levels.py::test_signtx": "379c71e1fb213b5cc1feb4dc446ab929b8d25b4dd2492fb49bfd893dec140632", +"T2B1_cs_test_protection_levels.py::test_unlocked": "d45aa3fa066835bb5ed5c7f803fcd0693564f2a84c6fae377fc3fa13c6683429", +"T2B1_cs_test_protection_levels.py::test_verify_message_t2": "7adb0534531529fdf43625541659156273d7daa7d2d3394c18ce4054372992dd", +"T2B1_cs_test_protection_levels.py::test_wipe_device": "0d00b5c915f5b958051384fd9075a3c752777ec3e6b4863e444b7d681e04ab79", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_clear_session": "e83f6cd51109d712474078f7d8dea9ffd43fe1ee0e9fb705583e52412111e9e9", +"T2B1_cs_test_session.py::test_clear_session": "9ec6f277513545d0a4ce3f94de451f47dada0868bda3e989bd458f73566a98b2", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_derive_cardano_running_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_end_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -2311,40 +2318,40 @@ "T2B1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "a130896e2d615269ab3b3ffb620f665778ba06e379b032bbebaf9d1608940bc1", "T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "412383e152dce7c1610e7001163df398018fc6a60f1defaf8dcee447fa64403b", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "61dc3f96b5f9bf0c0e7eba1cbe1dbed357b2366525e553a477da60246e6dc7e0", +"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "89af2d60b20e9f202ca313b3c127e5d9724ab8b0321c0e856e7b878fcf3111c4", "T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "800ff92736cb75042e8e01377bb28dd8db2284ddde8b8dd511835017394b262e", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "4d4eb97f6f00f0623e3210e41fee39976f9d2e01d44fa723b71a5254f2c961c9", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "f6a8755b919b52d12c1d3d9b2b281edc53be3de3f542bbba048df500c051d37c", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "eaf2bcdbcbb3d58fd5d7aaf767444b2dc8e5d21d4f5131ac6cd184c10fe77fd8", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "a6a75f7c98d07995b96a230bd0a2a860810e07e6e6c9dee54dcdb82a977406f6", +"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "386908bfdddaa1a915db58a2f0cbcb0bc36d5082a133323f41fbcb3d67a8a2c0", +"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "7b99de05b05709e34d9c77d05fe9874dbe154d215a67352240e926c14d3777f4", +"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "6a0975462798c214097edf86885ba65763da9aae835c73caaaa02e72f99e1fa6", +"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "20d8ac005999cc3ab4e83fb1d76f22ed2f11fa1425de042e0d585856177a76f3", "T2B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "33f1b1c154c5d05e401ee54f9a177982508cd11a1c2d80227eee9382ebbd08ec", "T2B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "30b658f3ce4933d33f6a9509f8b8014a3fba931a43c66228258e0fdc74abd28e", "T2B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "3c30f6c96771c10cc4e41f3470c8ec1474520b476a385e208f3091c5cb3bbcd4", "T2B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5bd119121f055bd21ae44e92f0566fc1f21246c93c91476bca4ce1420e6858a8", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "0b80788cc19363299e9ed787000cec8c89c6a951adc9e6eef1f62a70b88fd244", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ffb3bca06fb30677fc07e5a0d61ac57e9c1caab4bf9730f1cce748825316558d", +"T2B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "974b8b99a9c8d5fa118010df29a27e262a855372a580e026c685f7ed983e936d", +"T2B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "54c292192a21ef302d036abb8fa69bf2974e7ebc17b90cb11c5d4f22c7d33a8b", "T2B1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "b540eded02d2b6c94ded415dc1e40323d6420007eddcc4102d161ec0ad7d0cf7", "T2B1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "6436e811b1391d0fd55f4b50a0f6bd8be3e3bbecfeee71df073ba8f2f22653e5", -"T2B1_cs_zcash-test_sign_tx.py::test_external_presigned": "16ef10201b994d8b9c9ee4c4f1ead5fbe2a06762bee7c11b14d6ef0f814b9310", -"T2B1_cs_zcash-test_sign_tx.py::test_one_two": "d8e019a43da92fd788c6e87c7ae2b01595ea7f6f864bd6bb6c29cb1749a62ce6", +"T2B1_cs_zcash-test_sign_tx.py::test_external_presigned": "7768da68844736c7b938b0da0f64386ce9b0b42f865e353c6ab9378ccce2e7e2", +"T2B1_cs_zcash-test_sign_tx.py::test_one_two": "f3e7769be4155a1e540dbfe99ac3e41dd1bdc65cb1f722238a8139643084d73d", "T2B1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "3dfb0ab0eed53dfe81da93a24afd5b0780f802b0d71244106eaa17cf080e6df4", -"T2B1_cs_zcash-test_sign_tx.py::test_spend_multisig": "d56ed97f537cbcb73f8e66647d34685ba16e1b34a373ca42ecc5d610dccada37", -"T2B1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "887d665a1c8ae9c9fec053257692358ea16633bac7466248403419b4cfda21bb", -"T2B1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "68f80409d62fcec568a75b8c08034190b0cd4bf69f0b4761c2f309398c38fdf5", -"T2B1_cs_zcash-test_sign_tx.py::test_unified_address": "76f891332638fe2680ecd18c8122d7b265a210ba798a0034d204d85b1b1fa95a", +"T2B1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "e04fb9970e8468bbbdd0d7a4288a7379ff0d4763184d60841a97c27f5c08cb81", +"T2B1_cs_zcash-test_sign_tx.py::test_spend_multisig": "6d901b38a328228e56025e386c9157cec224f9b4c48bf5e87331e2ba91e181fd", +"T2B1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "6c0ca5b901e81f13e88f5f85f6373d71f9d2c5dae49310300a27dd3ce8893802", +"T2B1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "749e4ee822002e5b05aa61e9c8caeeaa7832c6bea7759be2dc40d6e16b46f93d", +"T2B1_cs_zcash-test_sign_tx.py::test_unified_address": "73b0495558bd8d51ebdf421531115169d03854fdf61aebecae6ee5a8d675873d", "T2B1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "6b678ee29ced030601f9edeb5153b3ac60ec115f9642ab90b9a9cda0814fd7c2", "T2B1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b279b002d9d052800e17b572a5351a6f537399610b33a1332ecfa013573b4812", "T2B1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "22f0722491d6b72a186d7364543eeaa82e37ee1112a8a3f0ea2e0348d944723c", "T2B1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7a921731c83f4452bb3fea00a0d2a1c073317d95656de9cb6dfd6bd5529cbb6d", "T2B1_de_binance-test_get_public_key.py::test_binance_get_public_key": "affdddb1440fae9bc4682200b0441705da9c745c3d7e555dbbaf34c203243609", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "83fe03e428a7fa4005783972f8847aa445caefce705e71c4ccf9624058f09f4e", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "b5b9669b281d1e6e6bfae0ea3db5ce42959be1e50cc8bcca166468f04cd90ec6", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "86dce5bb34a5de6e69f1f12eca0073b64882d7d844db030c3fefbe2a70e22a74", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "83fe03e428a7fa4005783972f8847aa445caefce705e71c4ccf9624058f09f4e", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "b5b9669b281d1e6e6bfae0ea3db5ce42959be1e50cc8bcca166468f04cd90ec6", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "86dce5bb34a5de6e69f1f12eca0073b64882d7d844db030c3fefbe2a70e22a74", +"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "f0b4a97e43c0bb74655aa1cf6eb710d827a7f8d39f2ab86218ba32ea09d48fcd", +"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8b1efe5b7f0a5eb1770b839f4500a6a4b4485f24a1905c0c12125b406f1bcd9d", +"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "b6a188c3d0a601311980dc76fadaaf495b8f4e777393f7f159fc901601fd6d4e", +"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "f0b4a97e43c0bb74655aa1cf6eb710d827a7f8d39f2ab86218ba32ea09d48fcd", +"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "8b1efe5b7f0a5eb1770b839f4500a6a4b4485f24a1905c0c12125b406f1bcd9d", +"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "b6a188c3d0a601311980dc76fadaaf495b8f4e777393f7f159fc901601fd6d4e", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "6515097ade04a1dfa0a913e105866d9e2d4750b32d48be71953c8842c25a6260", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "f05be5e263e97d8ec91dc113e8289fda07acabb87acc7d5159a6ea53d74e7671", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7d7657a854dcf7e21c0ecbb08087edca6f2eac142d526ff0c86ac3343c5072b7", @@ -2352,17 +2359,17 @@ "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "6038ce950ffe6c7e2f1ea79ae1d481c78f91267ec23d320d1fed4a4b7e47246e", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "6038ce950ffe6c7e2f1ea79ae1d481c78f91267ec23d320d1fed4a4b7e47246e", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a944e4159fa05caf2445f7745bf02e9135ac786a5638760104e47460b6a09f85", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "66b9afc691193119138b9538f8644206fb81c41accc5248fd8fe95ac2e1578b1", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "44bea90c8138dd244801affcc6c5c8908eea3373f28eb6b377dda5872ffdf991", +"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "34729549d2e8828a4df78aac877f6160cebcf6cc81658d2ab6283c14d096715b", +"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "669921943a1bd7ad45dc208efda96565c9dd5535d228563e615685893cbd7f75", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "a9d7c9cda1427257fd737ecf3761941fe8a8149e0495c4ea0885149305ef8adc", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "a9d7c9cda1427257fd737ecf3761941fe8a8149e0495c4ea0885149305ef8adc", -"T2B1_de_bitcoin-test_bcash.py::test_attack_change_input": "4c08fc19312c95f2a9bc77618d1292764543017be00f212afe1c107771a2ad37", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_change": "21d60ca0e7c2c593468bcfda99b60bb60ae267a85aff1ad76e7c5fdcf0f423f5", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "826c1c715e71f297f30c9802194f57dcffc849dea1018d59e62090718d4b2b72", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "9ce451ac9890a215f7766797fac453bcc09c49a11762586ec8b978ca755c8e48", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "5551341fac8b7975b8bf34f5145ddf4c632d5dfdc0aa7249b272d0dd0a511cd5", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "b5df6212744204f96cd15fd6ad058e48511658caacfa812464423de00fffc7ef", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "082f943ebe78a73e184935c34f9df218187462f1eb23d6238ace980abc221d3f", +"T2B1_de_bitcoin-test_bcash.py::test_attack_change_input": "51d26632d8b3a6e07df61e68862fc29b919167ff915884b3bfc2531e0b959736", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_change": "8251ad89fd455dd3ce5c1cb8e3a4a399e0ceaaf6c477d470d100beb1b9308814", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bd5373a49deac614f556972783155e1b51cbdffd8d8ed96914321877eda5e438", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "bbf7eb113f2c6b3735cc081573667711f74df06bd2a3fcdcd1d23374959fa0f8", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "22184e314e15b8576f3ad3cf642690027b78b7ba6a677de7b8d29f30ed79d3d1", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "7d3e9ea70375d9127fcfeb8cf4ce5415fe596c85026785972c999290001153cc", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b17d85623f2051b9b69399ff8fc6e30f0e27c2a8e64f6a2101457d5046591a61", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "0cdddd68b21be7de1a64cb4af29634369914009a3fd637c2d35c7db0cf3c1772", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "db34366d09df207e692f84de1fa4ab208d4838fac2d7b23f128836e261301ee4", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "ab141a1bcd2d44c7e59b468e6f35191e89c9666c6f3f49e120dbdb5f5692ea5b", @@ -2399,19 +2406,19 @@ "T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "98f9eca93f0defb2060d34bdb2a0443396df7777634112c022361e18e622762d", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "65359b1a632a01a6b1f4a10f2b1da8f6fdfc6b47ef53b1d73fc323265a7f830c", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "6618068129cf6814f7d3f1550128f24a42b05e0a097a89694f905222015f3e8b", -"T2B1_de_bitcoin-test_firo.py::test_spend_lelantus": "cd4e4aaf3658928e541c8b8185cde9f5dea25e1ef95515c069c82271ed053151", -"T2B1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "f3b0d76c4c9f0e868b284d25563877bec29f1fbda7c545e3a768f2c824cbb2d0", +"T2B1_de_bitcoin-test_firo.py::test_spend_lelantus": "0bb8017bc9fff653e75e44621eadc751a9cec0ac0c0b63ff8fed7d05f8947cd0", +"T2B1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "831753544e208569f7d9fa6a3fc3b4c4ebfe99b2fe5e84d6bf6160137abf1e93", "T2B1_de_bitcoin-test_getaddress.py::test_address_mac": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_bch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_bch_multisig": "0b6ec6a423f5e2f6d5f7c1bb9c6c9ebb4b3f437f439c486cff6cf457f11266c6", +"T2B1_de_bitcoin-test_getaddress.py::test_bch_multisig": "1ada18c18024204192c913c536ffe251a4cc34079c588984cea88e49dffd1485", "T2B1_de_bitcoin-test_getaddress.py::test_btc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_crw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_elements": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_grs": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_invalid_path": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_ltc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_multisig": "d9a4e59d89eba7478b7c4302405e260c327a15fbeedf634847a786de277742a4", +"T2B1_de_bitcoin-test_getaddress.py::test_multisig": "eebc1771298cde4590f108743bfb2f354c8b41cc0b068131b450492cd172b6cd", "T2B1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9bb0c6f30f2bf7b7d927309520b7badab7ee067c586e78afa6fd47e2b3a9c57d", "T2B1_de_bitcoin-test_getaddress.py::test_public_ckd": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -2463,14 +2470,14 @@ "T2B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "deae1c57da04fff64c8415c3e22e631673197d3a30cff82666583c69b7c904ef", "T2B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "37a86b9562c1995a6330aa993f3777e00bb6dda36c238ca36d50912fb38baccc", "T2B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "4671f5d7621177c75b80d313c00753290a384b442ad149cf7bf1f2c784d05fcd", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "de4eaeb6eacb8880a2b65f20b405fd2caeaaf79a90583d04817e522a30850c59", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "e6c74e594d3a06ae065aff1da7f6232870e79c604bd4aaa5770da665ec89df52", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1060f2d25ef93e04157270b6c8b1a3ebc64f7a5172373568a5d03fff3d83cc39", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1060f2d25ef93e04157270b6c8b1a3ebc64f7a5172373568a5d03fff3d83cc39", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "9edeff748ab56e0db10b119f75b05813b23478e756ee3cf907934f11f02fe931", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "19727b15f90cc6c60dd28f5c8b4da2e9852e8facc342d88ae9b85ef447d2a76e", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "63c1c9dc2ecdda6565da13574e522c22e1633fc6f89fb44bca202cb85fce7e75", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "c273eb7587bb0613a9b0888772a8346b08b10ed5e16ef495c0c89340466aa42a", +"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "afc3a30d968a00d38e64438a4a70fc33d8a713ad1765a22b4027513a2247ac0e", +"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "3d89334415b693d478c2c7cbaa6c659781b73868e39ac9c8b1e9034c23566628", +"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "6fc6d2c8f8b291c5b1a09db39ab50774624d22eda07a572dea2225cc8cd57d55", +"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "6fc6d2c8f8b291c5b1a09db39ab50774624d22eda07a572dea2225cc8cd57d55", +"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "3272a58aae4ef76145de4f7292567fe597ca252fee28d5ff35b28a1dae1ebb63", +"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "f1682ba15faa9517403f9ade646a42a9564c751c592a5a1145dedff24cb650c8", +"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "011f392fa0744bf1c66407d3e67d22d7b9f53e05980efc5eab3780d96395c7d2", +"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e15bf6090210bbd6f156190b9f6587ed5ea328c230e9b05236dc7573c8ed5a92", "T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "cba0bc656061de3738de56b15b7c74b8fdac969ec42b6d42b1dc07cd7370815d", "T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "eebc00c67b5e41387de0a116b192ba6a6fa2c3d2579598875d3ff846dfdbbd52", "T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "1efc42a77a023b08a2157bee463d125bf23f4dc451f144aa88139ea075948eaf", @@ -2528,28 +2535,28 @@ "T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_grs.py::test_legacy": "7c80279cbd08d6bae9f9897f8bf1dd1ebceee713c5fd61195e872d388191ce5e", +"T2B1_de_bitcoin-test_grs.py::test_legacy": "7353fd8062f69de53d19cb1b5c8c7a1409913d5d6cf59b696c657cbf256120e4", "T2B1_de_bitcoin-test_grs.py::test_legacy_change": "3f1674b935a033a743b1097529a023fc47f03fea0e3ee46f21317bc2ed0bc48e", -"T2B1_de_bitcoin-test_grs.py::test_send_p2tr": "6e75189088b8fc69a693b7c48bb7a5db9acda9a410b89c83c02a8e03141fda1b", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native": "3679fc6e71c928b3760e56c8b9944d5943b21f26781deb0687104e7b8ed47985", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "4ea5c253676be8a203769a9269471ee60b736ac1efa5346492823221388f9b80", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "98c40025cb158bbd96aac8d335e74ac5c55e70f590d42b3de2adcdff2d0b6493", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "dea44787f0534757da15f2d301e72dcf6722dc4515261d7e08a25cb49ab7a83e", -"T2B1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "206f1a8704c98dc2be07b4369ee982279916084b1693c2770a382fcb225c2913", -"T2B1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "83a5bf34c1da5ec17f63706281530f9fa189779666d0bef0fac8bdcd2236c30e", -"T2B1_de_bitcoin-test_multisig.py::test_15_of_15": "ac69340240eca63b9ce7c0032f09e71f95018a389cdf540a7ac99b919d6e41c0", -"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "8a40d1a59246e8292a6513f754ce3b15349d759dfd5fedbb483f643fb2b116fd", -"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "35087186af190b522032d434aa23b09acdbcff10e04989573edb2cae23498f4f", -"T2B1_de_bitcoin-test_multisig.py::test_attack_change_input": "41a9021ee1063bcfdd4ac078d7d43906ab728ce2fa8cb0cceaef9d4dbd6647b3", +"T2B1_de_bitcoin-test_grs.py::test_send_p2tr": "ce640082cf898cf26c98576a397406edfa89fc67fde6cfb815b5ce9958556bbe", +"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native": "5dc1e35c730d598387ae29aa7e00aa703bce47e6fedea2fa90f5e45876905a75", +"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "2ef4ce5c8c150d3ce79ac506daa9f5059a5224967092dbf1dc5838c1dd0fd258", +"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "b2d4e8bd267ec8d3045f4d2cfc3615a55194dc72843d632eeb15859e11dab7ee", +"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "59c51779d14307ee80a38233e32b3976ff107cce979a867f33860dc016b317c0", +"T2B1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "bbbc63b5640e2f6045dacdb3e44315d133d8a4de5e43bde551dec5156d88be58", +"T2B1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f88fce98d3b7b31cf073e734f6d8f8c9ff463e79e911798d9f6901fc2c16a8aa", +"T2B1_de_bitcoin-test_multisig.py::test_15_of_15": "4169a49c666c613a24f3b7ac9387bbcd007197fe1d5607f95a0f8e62c269150b", +"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "fea8b15b9b1d5c651d79dde46f47f8c6a911911037f1c439699d93526db86aaf", +"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "1876a76008c13b1bc9eb3656c57cde901c9cdc2ba294c9cc694225c7a035e0aa", +"T2B1_de_bitcoin-test_multisig.py::test_attack_change_input": "6a60e9c02f7f6abe79588e4b787277e9c797fef4cbccdbf9418c77e755627cd7", "T2B1_de_bitcoin-test_multisig.py::test_missing_pubkey": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_multisig_change.py::test_external_external": "3d39386fcbab84d79b551e77ebbfdfa3c67bb6a5cfdddf2017e461d8ae897845", -"T2B1_de_bitcoin-test_multisig_change.py::test_external_internal": "9c3bbec579b271204315d28c093109b66963947050658f2fe79a1ba544baecf9", -"T2B1_de_bitcoin-test_multisig_change.py::test_internal_external": "a972cd7ee8d017a43d17fd11bc2d549772c7341c50585c1986d92ec13531b70f", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "416beea157caca026305c1fefeb982ee388b81c250a767c33b73c7022f38c46d", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "1ecd69fdefb63ee12548c6f1680c485526f5ec827104056671997d6b385c3b27", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "f8122b833ebeb633fa91a19d3777a34c3e254d4dd611eb83b00a1791c547ef22", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "52d0d04192b3d03fed75b293cd85813539967c2963ddbb0e4b3bd62e571dd055", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "33344db5456bb56a92774122656dcdd8d0a65f3ed81a1016a2f4337787a4cf99", +"T2B1_de_bitcoin-test_multisig_change.py::test_external_external": "54027a318e298c65700cb7bd5091cfa5d6bb3a3926699f4d1b1ae6362beb0142", +"T2B1_de_bitcoin-test_multisig_change.py::test_external_internal": "666639c5a5689e49b4f152715633782319e9ac37355a4092db799b9731f510ad", +"T2B1_de_bitcoin-test_multisig_change.py::test_internal_external": "f061c195669f77eca54c40e5b4d06b190586db5ea7846f8bdf458bb5f6fce7af", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "898668fb7679a615a8cba44767c2c9612d065b0bfff2985d72c9c6dd810fbbd5", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "8214354eb1d49071186d842c2166050c6b4b5f86686b4a258ae1d4f060d92c40", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "f59a0249cd4b3e33c3ad38f3ce4afaf012dcf39443dc6feb021b0ba3f232cb07", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "4a6147eda0125c9588d3c2fc702f61a42a18946a7530e1b2ed7ca63dd3b8b8c1", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "c836cf8ec079942761c32a149c1457ea76b1a1747e0cb1dbc809e55f8aa7bf6f", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9ba1f92c611098ad9f5ebf6d372bdb6ef279342d0466251d89ca73c99c3e407b", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "8d3273ff8db1dd138019a2b2597bc49aca9e2165ba0f56fb20062281cd5c8d14", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "a43329c45f85590778e2b0ba952cf3100c142ca988f230a2fffa9f277b242995", @@ -2560,14 +2567,14 @@ "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "554f89c7e1c700245a339e976373f61f4937f4b1358b58c3514b9e86c5058e32", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "13e805364911e210a38df401087b4d5c41b8fc1fc0a6eab48502168d4ab43c27", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e562edf0f431aab4adc28d4a48d9627b4a301ac3d6fce4e31015e9fe351c5232", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "34b82c8b4c355a86e2a92a1602a70660b470a09ae930714842d8e6fb028d0d6a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "016cdc61b7fa08a211f578ea39d6b75028f64e7d33387ca2cf531c1f293ab6be", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "afc070889741ce7c192ed1a04d2c01430119bbb12b8a075d681c9851bc25b146", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "54154ef0728e08493c566c035cce830ead37c16602d806d03d4cfa62ff647ea3", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "1744389c97877b177981b9aebcd88bec7c028923052a21df6fefd16e7c73e427", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "b83b6b73654de871b4179dc10436f829c617483448fc1bd4764a5445acb9d4b3", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "e57a0df3bd81c82b8bdd3cdefc1d163993fe67900b7c3e6c32798c5f512417d3", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "e670e338c4371f8cf8f67071f4fd768372fb621d8d5195a1e11674e755751bde", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "e75e31835a15565baa156b172ed5b55c05b365a969b63f43f95fa0beb0904922", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "5046643d8d3c827200216126974b6dfc8f48a9f95640208f51cba57b7d0934c0", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "0ac1dceb2dbcbfa72ed75f4462ff07d8aade41f0d902a5820d9291e845445b31", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "6b275ea970bba95742ab971c8e2647cdaccf85914ba5b4dcbd88fb4d3b91654f", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "d094fcbf06cd0a6a8d6cb647a197a02596cc184f77a3c81b97f09a0068e79d83", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "d0bb9f8003ffbc6091cbf91c14fe2c60cf274e02976804117409d69f1a0de3c7", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "137dfc0bc8046a63cf844f7f44339673e3d3d98ed0aeb16a6e6ca0341619b64a", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "4f2424a9d0beb78ea9507610a936a5750fc18a79363f1ed76944b41aa79ca0b9", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -2578,25 +2585,25 @@ "T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "d84d849b75fe52347f3800f3c105c22a3823a8841eeed51f3cac18c6739120b4", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "970cc4e093dd2bc909dcfb69543fdb4ee64d847ecd5855b70a7acc8431f856b9", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "6ebb1de72fad46818f37a30624179ac0689d50b3727a3579e9ef833b11209485", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "52fd81bd8dafc38d656c40e514826ddf86b5a75b0d5f01e9d172f8c1d98567f9", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "65ecee37846421b0f5e943383f119fd33979844841a2caeaa626b9c2ed46f31d", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "07ca6dd282e578779015a6f3159723165f380026d3b185ae0f64759ffa9ae3b1", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c0f167a640240b3c7a869f076eb44115efd9e9ef2ca0ed526145cfe08b6218a9", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "7852ef3471820bf58124ec7db54641d13e379686fe4515f8c7dd699cdb152ae4", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "ed0efff790c73502a2f3dee0fc899b40ff7c2f09c4e48f26f7cad0d5825f9dd8", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "123cff23465ebf0fc3e8cfe1759f66bda37cb4112a114cf4263fe96f2418ecc9", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "41a5a22443aa338667ece003bdcd0283e7a2ac21f0a20afcea8ea706d2d5364b", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "a92ae2370110eb624d0a61d812d73440340d0d42995900d0b3ac050da2ea1b88", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "44fb9c525801b6e8846bdb02ab39bfe4a51780d935b623b78d772517d931e167", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "1f699c6e7617c899e285163aef4b915c22538df5e3da74d3ce980a046c8ab76f", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "7228994691fdfac4c8e7bd789fd4c6781b7cded2dbf214690795f7bac80858ea", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "8e03fad2d8078a9b59a7fef9f844673b539570b33ff0ba71a3d5e8291a8f9e3b", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a7727222e18e6ec6ab7f4323e2db837bd077e4c68fd55e2216779fccc8d6d203", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "43d7d15390dfc4475554b64755b8c9ef905f4e95af207bb8388b39c8e53bdf81", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "221f3ee68ff9c6c292176048feeaf44fff957cc86744617191f7e403a3cb427a", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "84e5769761e714d422c3f6ddecd8c4a8ea6fe2c832dacf6c838c855bb0a86cc5", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3d21f579c13830808b091e3493c72d10b63c20fd87fc1b419ed30d242f49ba59", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "4cf112b5754deeacca4fcc1fadc4085fd815814d046ded37f88092c8a4d1914b", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "8707d2ce8d7ea42a72137743e2b24b8422045c2b6666d014351a3614be675ecc", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "91c584bacd4c34eb6755a4700797b133f22feb8465aaf1927ff1be4532978c70", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "517426f4f4ca9d983d14dbadf03fcd8e672b7bae7d46a0517d741bee44a7b329", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "a95ffefcd9dac8e2f079301987c84a84c66579c6d0d04a62e92c17d4b18ff091", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "2b86f5a5cce6c10bb80f874928b1e972871216415b6c2326cdf7aa12755362f4", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "65210b1e39541465f521621696f0d1d42349cd73e354618588cb2b280c111a4b", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d65477632c55ce830c069ae02baff10df866d28600524f7537908de6e2d28c9c", "T2B1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_op_return.py::test_opreturn": "3e372a58d43aebfa8485b20564432ca28d2fade3793b761a71a5e1b076039382", +"T2B1_de_bitcoin-test_op_return.py::test_opreturn": "cb0830a5af1ad42053f232520f0284bf0df8cdc9d95a16914f3339614a78128d", "T2B1_de_bitcoin-test_op_return.py::test_opreturn_address": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_included": "d505007612b618456dadb037db98e3e607b43c10c85d3f66a0dc3534c5af375c", +"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_included": "3fc8077afe1ce726515aac46e6c0d70c1c3e817fe772b78d1c5e3c1f7754dfbf", "T2B1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "cd1a643201d2ae2207e36e6b8e102905fdc7127018e21a576d46b046f7843d86", +"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "ec1579e5fe91453516f99a2f00a793f36c45aa2edd03ca283ed14e2b466e8ba4", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "5a8f5b9d0f5aca531730e95c00c08b3593960ad4216583cc7ca7515d59adf2d7", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "5a8f5b9d0f5aca531730e95c00c08b3593960ad4216583cc7ca7515d59adf2d7", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "81bc5d94472fb241a82e2fd5a60b02502bc93cf177e33e9a78bc3c8bb529137f", @@ -2616,111 +2623,111 @@ "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "c2041ca55cf1bcf9e49e28cd0250b9722a4c043035a247c7a32ab7d6e7ef9081", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "49b34418c4ea579e50700f22a5e79dd511a6d2592e54cf9a254b20a55ee7f62f", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "800f218b1d10f9cebcfc667bef8439be6d31450f4c2726b53c8f2a87b012f326", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "e6c7faaa06010b85e218662b0d563dabad8b5de65268c47db5115cf1947457d9", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b6d6d226935d3df454c757e6677348d1aef5ce1c3513d431c26f53e3d633b55b", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "7d8460b470cd3150476adeece0de5ea59cb9e75fb4c48de45a5bc4e87d479124", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "1520d9ea9b986482d6532591b562b2c120c22aa35657a7d6aa76f322788e9b51", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "844040e2a2bd900a5abca50b20b1f4451b9ed93d06a6b7cfca0992c31f68982a", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "ff683440d74956811a956f784b530234e8abc12bf57d4a489525d51ed4e0ad0a", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ab8857de4901fd76993f3973bc7e3c1f073909c30536a75428c389f4eaac3719", +"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "92d0d871af78b74b13563dc630a8b41c4c73655e0482b2bdff56f334188a9f8b", +"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8334e0fdf9916c6b7944ed151b0b6759f8d72b134e17022e75aa9766c7e06fc8", +"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8d9250962030d1ce18997d4665c4d2ece5b9ee414ca704711501b28e1d34b765", +"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c75979c5981df9245d1878fa312013dcd5612b53c930228c0a5c5acf891ea486", +"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "0318cae4067cd4a3faedd36972ecb9efa3b9c4784c29347b920828d27081e026", +"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "16063995c0ecf37f1004070936fdb7532ad51543510e9be0d1c8f3e7bf8ef346", +"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "50ee60f31032745dc76c50fd67bb531ae152016e16832316888f1c5760a068d1", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "9bb95d579f8288c66eda148050a2cf54bb0fe43642d25387a4d72ca6d15ef95c", -"T2B1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "306624bdd0206876f6d9aa546566450a2d0c9dd20a187cced9f04bef4e200b3a", -"T2B1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "e156f199ae6ed715f29c4c722fb1c2326366ea5642d57e6567e8778e7c6e26ba", -"T2B1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "567c0c844054dcc1cd81218eeb33f7077a0b1b3b011991e02762a32adc525773", -"T2B1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "567c0c844054dcc1cd81218eeb33f7077a0b1b3b011991e02762a32adc525773", -"T2B1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "ba6728f820e490fe0e1db46226cba94b2366b786be74818cbc03a0079a196bc4", -"T2B1_de_bitcoin-test_signtx.py::test_fee_high_warning": "2eb0a9f7e900485af3bbc4488ea23adfd13e59dba6e460377020e548a44117cd", +"T2B1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "fcdaedc7c533b3df67ac4169e1b7d2cf0a902f492569b19d3815f36a6b8f89bb", +"T2B1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "b4be4659534446fbccf12a4b98e553ecbd6ff3cce4971e1d1da9bb0b4c2d744f", +"T2B1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "fc93c5c26b4c140357cd8c4723e2427f3a602fb33d33baed2b2be7eefc20f473", +"T2B1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "fc93c5c26b4c140357cd8c4723e2427f3a602fb33d33baed2b2be7eefc20f473", +"T2B1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "6e729dc9be3b81b213d6dad563187d132021dc7a040a58b092eeb63084110d7c", +"T2B1_de_bitcoin-test_signtx.py::test_fee_high_warning": "5e38472eb9f6b508a9225927436ef9b32d62faae7835f2decf893452cbf433b3", "T2B1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx.py::test_information": "395fd809722f115fb1b885d58349ecdd2ddb73e1d192d7e83b4c527768ac05c5", -"T2B1_de_bitcoin-test_signtx.py::test_information_cancel": "8d56ade883d46330ff3202b91b493e28b177edb1e7b6be6aebd0293c315bc35a", -"T2B1_de_bitcoin-test_signtx.py::test_information_mixed": "211602744df28bbcdf787ca8829c0a0cd23aa9553137c68dccf18fb8579edf92", +"T2B1_de_bitcoin-test_signtx.py::test_information": "3db0d3a98bfc4f287f611d540fee1362329241fbb3bc782f7b58c1a586679e8d", +"T2B1_de_bitcoin-test_signtx.py::test_information_cancel": "1ef1f7b1df00c2d85324c75e7dc7f490b721455bed7632609c3e69a2a605d8b7", +"T2B1_de_bitcoin-test_signtx.py::test_information_mixed": "ebd868932ff7a3750b078330493823a0b7f4df2a7e7eac5ba54695e5be17c613", "T2B1_de_bitcoin-test_signtx.py::test_information_replacement": "dc8ef4c5e4cf2b7aa990c798b276b489cef0efc4d120256bcc90bc463d76e2d7", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "2fe22636b7399a77605aab8c6a8094efabf4a4d53082591536baef0c537ab0f2", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "530a57f1264b4ece14eea0f2704c3bb695752202bc209e7214e750caacbd3b45", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "2d79cc8430758ac0c7b7e47e169190e445c2fa7cbc0eced529c6276b16d7e64c", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "13139fef29a3be5ac1827b47ebd18e57d88f19ed9433bc38e2d40bab995f12d8", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "404b6eb14867cfbe2518bab9dede2bd92f6876315d6d6abb48ea1cfdee0af115", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "f43eb7f23c4ee2d29e461eb7a3bcd8edda25351fc6d3a84216be2ecb38bd7b3e", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_change": "2474179d7a5bcc074271cc403aa0a51f1f1917846824296c683cec965d89c35e", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "0d0f5c3cd23189401d43424696dbe74d2dc5ea96b2dbd78d0ea52396a7a72a60", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "2bb83ce2b2a070100297798f77aee4d6f63becc69847e4d34fb2ca9a63138494", -"T2B1_de_bitcoin-test_signtx.py::test_not_enough_funds": "d2231fba1fd7b7e821d8d3eb6e5dd77ec6c5000e951dc8ed98df50d79f47b9e9", -"T2B1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "c4e337a03ac729e093c3a24ff4bbe3bc6b97a505d6ad9a49008bf7db43406a5e", -"T2B1_de_bitcoin-test_signtx.py::test_one_one_fee": "06c41897c8fea3e66875e06c2a64c615529e49c2b08b29bd6667b00c2aefaaa5", -"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "17277e9fbff0ddc55ff967d38c841563b59a63711bd3df493072cb83db83a775", -"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "3a780ab2b473c43d501555c481477416b681a830724af77c97a4d533feaa30e5", -"T2B1_de_bitcoin-test_signtx.py::test_one_two_fee": "2dd998bbf25b0a66ddc32b1bd5916e067630c728e407cdc2d4912c260fd2b432", -"T2B1_de_bitcoin-test_signtx.py::test_p2sh": "d403f77d738e9f4312c452035fd400f63a3abba6d8936ddc39a81c5f5e722322", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "6c24078683cbddc7e856198748c3a68f08911d7f5836781f8d0b84b26317e5e2", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "6c24078683cbddc7e856198748c3a68f08911d7f5836781f8d0b84b26317e5e2", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "6c24078683cbddc7e856198748c3a68f08911d7f5836781f8d0b84b26317e5e2", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "6c24078683cbddc7e856198748c3a68f08911d7f5836781f8d0b84b26317e5e2", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "6c24078683cbddc7e856198748c3a68f08911d7f5836781f8d0b84b26317e5e2", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "91c8310e30eb4d34d1a998768ecb2b60098ffc5d3aa4c8a8da71453c189aed87", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7f222e03954bd3333b3b6c7b4912006b77567a81d1e14f94a56b7255644e82eb", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5b1ae27cbb04baf79bf8368f63d3288132aa189091f901c59751a2b243ba283b", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "a00bb6a5a13338eee12f54b57d14dc6d3f496d78aae37e104d97bb599c897fc3", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5816a0fa4d0a1b4f0d2a3471f2e87787cb2b847eabf313996754cd3efbedc168", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d983e4958186ff437d4c7c33cabd3410d3632d53a5faedbe17f08382013e731c", +"T2B1_de_bitcoin-test_signtx.py::test_lots_of_change": "61c896b51f0fd1a0912885280006682ffdc708a8a8fecbcc6660c2fb4c33b023", +"T2B1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "69265b50597beea5d2ecaa29ef753e1e6af0fd6d4319729e5bd47c25b034524b", +"T2B1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "df8e0062479a09df42d57f89cfc36b22dd12477c9867c51d8b017f7ad3bc2f9e", +"T2B1_de_bitcoin-test_signtx.py::test_not_enough_funds": "2727f1b20af9256eb9b6ce1d10ea62728a5a9d6b8c292f544d61bc91a41f87d8", +"T2B1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "93a1d8ec8f82cab03ffbec9eb384c07312cb11808cf591a79df829bf58c38c73", +"T2B1_de_bitcoin-test_signtx.py::test_one_one_fee": "b17614864e084d07ac030f4dae7cbae2c2fc868c9449d9e495b020b8fb26f389", +"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "795819d105ed0ec58cd38637f6b0511feee256b2c9f3fe4dfa86d3aa0047bb46", +"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "1a595c48a161301cc1a137e6fd6f75aa5923e6b695fedded17de7298d0ab8d79", +"T2B1_de_bitcoin-test_signtx.py::test_one_two_fee": "743c85591b14a29c75fe078fdb5c7d8b53460d7547181d5e9c835b16c22f8c6c", +"T2B1_de_bitcoin-test_signtx.py::test_p2sh": "933cb47b587ceec83e3f269dffaa6d60c43bf16e4ffbe9854ef67eb1d3307f64", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", "T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx.py::test_spend_coinbase": "aa2e2f404ea767298eb2f5f24a1960d1c19d37146e92676717970b4ce6ad3abf", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "4905c931d013cf7fb424eedf74626848d2d1c01ccc162ecd54b953da32c99f14", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "d49c412c6ac8441cc870e7047859e4df0580667210d8521f926154059e40b15c", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "567c0c844054dcc1cd81218eeb33f7077a0b1b3b011991e02762a32adc525773", -"T2B1_de_bitcoin-test_signtx.py::test_two_changes": "30646e944d8eb9f29bdcd4c7d369e4e72c9cee1613bce45b004fb29b0d9c0693", -"T2B1_de_bitcoin-test_signtx.py::test_two_two": "01026394614115d38457e7da068d3fdd71f8730bdb9358c254566bc2b52480de", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "06c41897c8fea3e66875e06c2a64c615529e49c2b08b29bd6667b00c2aefaaa5", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4d28f0bc87bef9cf6a9f958da44ecc037e12c663fe0ae7bf24ad643fbf0615ef", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "31300ae9542d801599d455976a7b31ba30d7684ac45d43da8d1d998757fa6240", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "c7509a5830392b7e2f46a4887ce61a4a6e7561ad3ca6f6d784da272d7dc27c85", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "06c41897c8fea3e66875e06c2a64c615529e49c2b08b29bd6667b00c2aefaaa5", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "d5d6de44a8a86da1c760508b1ca296f922d176e4e88dbc1d10f9b645c9dd8db9", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a515f2de60b2d834d2a3db19d51da90943fd85660774b66eec39f48328975d3e", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "fcc5cac90f7c5610722affac4848e24deba3cbc9e887db4c1bfbcd2d40faba41", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "dfdd1ecfd3f157554320c3f3124364f365762434188900df25439da35a9a422b", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "d5d6de44a8a86da1c760508b1ca296f922d176e4e88dbc1d10f9b645c9dd8db9", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "dec0e8162a4b058da30adb129538817266fd5076ab2300ff9f26a7c79b587432", +"T2B1_de_bitcoin-test_signtx.py::test_spend_coinbase": "25484eee5ee681a5454fa695731b1dc137e3cc3b05aa213416812de7593bc412", +"T2B1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "be159338e3e6cd23c6a2c0ffda8847b5197fc7ce4bdb7173a7716e1e30a5a34e", +"T2B1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "85214fb4846c2b1641472948db868dc8cfa558fa8f791000c59c6c050c852427", +"T2B1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "fc93c5c26b4c140357cd8c4723e2427f3a602fb33d33baed2b2be7eefc20f473", +"T2B1_de_bitcoin-test_signtx.py::test_two_changes": "540303bdd58f3d94b1e2c1ae92124164c9256aaccc373ee376aeed3551f3412d", +"T2B1_de_bitcoin-test_signtx.py::test_two_two": "072942846dbcff5fdf75aed50d120b4ff21a429257baffbfd5921ebbdd017baa", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b17614864e084d07ac030f4dae7cbae2c2fc868c9449d9e495b020b8fb26f389", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "3a8881dce8a4521e30e09a55bfef1b265596357c748e549136bdd1eb88e47410", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "fcac1185c2eb3ff45e357d5a291ae736496d1cff61f6a2641657ce273934c231", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "50471e0e08f62f6fe1ef97cbf42de3ab0553e4af63887070610f156c774a0ac3", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b17614864e084d07ac030f4dae7cbae2c2fc868c9449d9e495b020b8fb26f389", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "0560141ded0a4d5b8fa2690e3c49a25128ddac707dc091605de4e37e91628ede", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b6732a002655f87afe33e5e2d400f85466389cde88d181e8bd3b60a1f718ba11", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "c05250788539c1ca796be6aa4e63c4d2de481cfd92b940296f07b38ab9d75a59", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "0f3e6481e8063c821b29374f6d1a5b4923a7925eac6bee0dc03a0b144ceffbb4", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "0560141ded0a4d5b8fa2690e3c49a25128ddac707dc091605de4e37e91628ede", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d96a42e2a703adf8df4d16a0bee8736a18bd9caafb0812807a1342bc0e9b7f6e", "T2B1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "639561aa10e0c34a5eb604e789d5060b650cdbde5e56a688b040eab6c0059775", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "58323d778daaeaf0d7fdbd9d2e4c239c734b8355a9c288f75e0f3d061e641b41", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "3be3cdfab0bbfa4a602c5c198fc4f590c06833f0c0e42a1911e3b823145a4503", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "ecd5008ad9e201c359036eb92f43ef2778e77f287b1351a48260dc666520f520", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "d2c6ef237436fe68d430af5ed06597ff573683b33e0f7b462c36db756aa1442a", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "9d3d6f74efe1d8e9ee80e5c0121dee99f59cc17d76ba19f6e47a050d8f8aef06", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "6349c6f3e72c1f2e67acda7178e3f4d4514235fdf964e1d1a7485bb26b603c48", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "63c725bdba12fc6cb6a75bd04edd830bf0f044a5ebdcb8fb2dfd6b1afa6b04c1", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "5ad0c9458cfe42feccaaa226b608812f5abef376f9824c79721b4789ba851b84", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "62234a950e76e794a766e1088c25116a0c8d808f8d33f43f26607c17cd998d1a", "T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "af79ab0d90e6c65bd35c7a009daa75284075fa14bdc6e67dcc836dc13ff7a43c", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7a14ea7b566e186f626e80776b499fe14e4089ae26fd7fd6025b243a7057dd12", "T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "7e4c09ce18af24f51ff31eefd4a06ee0a936ad3fa93f58b822ed3bb3fd345580", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "239b5ad9ed54f1b27b745c50ba8432dd8140d511372bedfe552d248f19cde77f", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "cb981f0ad2e75bd9c83339e37276c4a7470e8cb07c2f66afa17941355d285ca5", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c7e225b7e25f2d028019d385bc36f190399d86d3635006e4e5e6b5e243a53b7f", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c8a3ee310e9afef86c4887c768e6e92273307a3f8fa6d45a459977a4e0b08044", +"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "a1b64f3bc621b3921260ce2ff883bffe8c19df017769c0122170fc9e509e3c55", "T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "6403300c393dc5cd961de8e2a60c4dd66e206409c26c96c4e29fce55f1b79454", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "07320a1b27df60bade6d6b265f0b43d038559d8a00988aae89ac38866d3b7340", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "8a733a922a1c1cfc157ddc0510faa979ea107eacf9829dcde573ceee7af2b90a", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "bd8d3827fa37b6712cc4b9f780ba77524294cb5927f5add7331e6f597237c0af", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "8a733a922a1c1cfc157ddc0510faa979ea107eacf9829dcde573ceee7af2b90a", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "690fa44c6cd5bb5235133bedfece19d1723f208a85ce973ba0fe48e1114b176f", +"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "ff017e951ac908adfc95b4d0cc96eb231d071ab8a6e8add5ee0ed201c5d4be73", +"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "84e3ed9e2814e15d5f9e82759a7590a0cbec4ee2ce5591cf927b96c6e54d8f3d", +"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "7a7794f49666362a5dcbc2f109df2d7ccdd7bc854e472a2d41c99b755065d266", +"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "8ca6697ee11e183fce62861534ce29971476afd6d68b6fe4e2ca5f0e5abd5fd8", +"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "7a7794f49666362a5dcbc2f109df2d7ccdd7bc854e472a2d41c99b755065d266", +"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "62dbd8023ab3e2be1bf8dc9e1c48241fd6457d39100e22c49c23ddf71fbec6d0", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "fbedfb818206d67d1b621ac924d1bf72994b48192cbe52bee4f6b8bf0b596fe8", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9e92ed8da57f14b16b322f5a0683036daaeef0f4c0eeb54b1201fe784eb2b3c1", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "9f7a78920101ab0ea0cc1ad43ef7df442cca728a5ca88f20351314fc65d22227", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "8d26c760d3e8c4a2bd85a9645f2afbf9e4629e7ffd64e692a243f5b773ad5a84", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "1c33fc42fc9501a3cfe1db5c0e5f4e8364b5bbace828c53ba827026aa9a1ba82", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "5586bc0bba74202b3dd71fd3bf2fbfd8aee2bb68f2de1f406248bd588eb93789", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "524b1065d70be00bff87221796c0cdda429fdb6466f03adc4ff4aee1d34032da", +"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "834143d21595c3b6ad5854adf851eef0a996bf8610ec0155e708624e5646b61a", +"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a1f58f8dac84572d265ad9ab242925357a045dc5c77655d202998be29908411a", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "5cbda798dff5668df5afee94c1227989b9b1c4d3c9d9928f4fd2b25bbe06ae82", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "5cbda798dff5668df5afee94c1227989b9b1c4d3c9d9928f4fd2b25bbe06ae82", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "5cbda798dff5668df5afee94c1227989b9b1c4d3c9d9928f4fd2b25bbe06ae82", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5cbda798dff5668df5afee94c1227989b9b1c4d3c9d9928f4fd2b25bbe06ae82", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "f4e2275d00fb182ac8b43961649e477f872d3175ba5f50461be7dd375945848c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "f4e2275d00fb182ac8b43961649e477f872d3175ba5f50461be7dd375945848c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "f4e2275d00fb182ac8b43961649e477f872d3175ba5f50461be7dd375945848c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "f4e2275d00fb182ac8b43961649e477f872d3175ba5f50461be7dd375945848c", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "27975305e666eaf7e79fac1236a7b7587883ab66696c0d72b86a43c77976ac60", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "27975305e666eaf7e79fac1236a7b7587883ab66696c0d72b86a43c77976ac60", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "27975305e666eaf7e79fac1236a7b7587883ab66696c0d72b86a43c77976ac60", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "27975305e666eaf7e79fac1236a7b7587883ab66696c0d72b86a43c77976ac60", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "9c069fc7a46725d0d240059c11811fce4a9e778ea6a04d158afdba6fa5b1d9f5", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "9c069fc7a46725d0d240059c11811fce4a9e778ea6a04d158afdba6fa5b1d9f5", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "9c069fc7a46725d0d240059c11811fce4a9e778ea6a04d158afdba6fa5b1d9f5", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9c069fc7a46725d0d240059c11811fce4a9e778ea6a04d158afdba6fa5b1d9f5", "T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", @@ -2739,33 +2746,33 @@ "T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "14b4e1cc7f8c5abf3e87049dc5188d62f226574912e100c82546a31853185b55", "T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", "T2B1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "56154aa7779489200f8486d2dec258db0a6fe10fc75e18404d341e1c98d06824", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "a75e718137fa87b431f82ad8a2cdb257ab4565a1cdeefee136d082c44a7943be", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "0d330b787b45445fa58ec66895513df7a6a2e45cf8553b1eda1e2b484ed019fb", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5ec22fb22ff8dbb9c9d3f0eb0cf34e8d3ae2ce30f42d9a8912824e72d625cba0", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "8871c36bd9d1fdf9766ac49c01d183caeac9fe00618746dcf95da5061ec0ca22", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "adc25d645f1e116d7c5fdf99632c626543d94997125618d5b35f3e2ce43dfcbf", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "71967e9880ac1152985701929bfdcd1b68a916418acf2234cbd3c4a4e46360d9", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "39a7b70d60441f5fb7f7220e9059fe5026c04a8f218ade7cac9e17b385d6107d", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "bd1c715cce3a1cdfee1ab4245a7164297c113932ee399665593ee7bfc194b779", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "a0f359fb68be43700eaea7cdafb69bb66ec5587ddaeadd4ae15607ba5ac83261", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "fa227bd1e927cbc90060d488efef0dc40dbc54719e40eaa1f250a4ea4cb56849", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "d95a8c9b179ed0c68999a7b554ac2a049f0e8c00e0a4d73eecbfaf96632bd836", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "fd78a11284779256b0c9aed44e4da5b76bbfb54c13f7c4601e864241108537ca", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "7cde6adbb47e9b6e35ea77f33883ceb1e5b7d6af69d2ce20eb7bfe402d8f404a", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "d5d6de44a8a86da1c760508b1ca296f922d176e4e88dbc1d10f9b645c9dd8db9", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "4c432afbbc06ba0b13956bdb8a0819bc06b2ff24ff8188e32a4c0cd64280e9ef", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "d347ce4d1662b9a40839932287242ead86f8c5f991fea0971dcb395199b65b49", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5105fe86d9dc4760b5e073ac5ac878989c473c27cdb700816321b885497b462e", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "c946f64872d6b12bb24c97fcd4a047423dee12a0e44e4bad97280d36c66222ea", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "1feee2fdc24075b8075fde31a09b9675a07e25569d9eef76d866559abd6eb505", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "196bf513610493411de90ed88a2f8beff7f8213734459af7da99bb9f3db8abbc", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b5a10442763dfff73f8c3501baf7ef4b6df8128ebe1833ed82e08075238a512c", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "0a1ca42fd8129f0256bc6c9210b57db96ad7e645d11337a29a08c43d19363f04", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "3cb5e2e78cf846e6c8eee5e33afe21dab9439db4a90ad0bc61e0b2d795d36347", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "1713ed6bc878a150a4893b80b94b7362b3c678da3e539f177b49562d3c0dc468", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "9e602cf653ae8df1fe932469800ecb9c3d292b2963102b9bb9867e11006c5bcb", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ef2669bf23057feb0b0e722a3f4684e300519f30c5ccfb554b7c290aa9e1ff8d", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "00f18cf7650d70b5270dcde95a106a68386c7e2b3b70887cdf17b605e41e90c5", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "fa2ba6b6a9c7567e2fffe9ef1223da51cfb90206183a4c31c6895b361efc659a", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "147ccf7013efc259f68c2f12a0fc2320962140791585a2209ec00eda9ebd117e", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "778de4d22f2b61c90edec07d46d6f9fe355ac08fa8d95744fb09e72848652d8b", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "9c7ef37246a14de5d61c73e477631f75c6f2c9bf388067c9b73d1032c55a056d", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "8b5289e5a7d08256e4bb8d933623f1908d3ed4d6b26e6ec18951622cba21847d", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "0560141ded0a4d5b8fa2690e3c49a25128ddac707dc091605de4e37e91628ede", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "42062ea5d03d3edfb565793fe8a9d892378f33818595e022f6f36c7ecf22508d", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "abdba6ffe3173326f73bf844087e631e487efccfdecf5714e3e7accde937056b", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "134121fd05962809d58a95865302c3022ef7fdbdc0e27c9b9edfd2db6760ea92", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "194106dbef0d3fd6a1201ef7a8facca2696d8f1a9a0ef069e2e4580793ee9c85", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "29986a345fb5325b42bfad4d65ef5868a7103eac2ccd7bc4787a6041d9d24f53", "T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "59d1ebb4593146964e6a22d5282c6ecd0a038457f5b202c3b7608d36dfd5ea83", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7dea1880ed94cddf727a0831f400d6ba1b7c2e4b94046afdc4787a375b855336", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "3c30d7735eafdf0442a389879fef10bf9fa881579129669fbd121c2143254d60", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b24607ec904ba801a8b9414765b4856e20fa5b4227b437297953ea603e7ec468", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "48fc60bcaf698d711e1f99fc21def2e71f2df6a988575e02b4567a454110f1c7", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "0c0f0046d1de05e0bcc62940e42c07c156e6a173c5639d438dc8fe396c5a050f", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "c9173c6318c2a61479d34d30a15beced2e48173903611e62761f90bd86bc3de6", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "56f1c47c244ebf1196f7756dabda064414792f73065a29f84ea6b1cf58103836", "T2B1_de_bitcoin-test_verifymessage.py::test_message_grs": "079405991d4a41c64e747d241c53cd877b9a713bac0f830639b628b47a2bac45", "T2B1_de_bitcoin-test_verifymessage.py::test_message_long": "3f23a4abbfeac518c46d3bf984c639e483ea6cfb22184bef1617abbc3c29a7a5", "T2B1_de_bitcoin-test_verifymessage.py::test_message_testnet": "9d8904b8bf95cd9d66d8beafece1fd54d8dc6e6d7d91178c99bc35e6202bb39e", @@ -2781,9 +2788,9 @@ "T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "5175846c7d4468e575faf30992e9b5fa5f5aa18dcb3d23fe3f949ad4a135c743", "T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ce8762d01111784f27a0d1b4caa5e19fbd663a56cc34fc5494b4a2b6c2a5cbdf", "T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "db3c784afdf12012fd50d3a39e765dce8345a71e4b03d470e4923c8b1ce9eab6", -"T2B1_de_bitcoin-test_zcash.py::test_external_presigned": "3f85e289463deda50f2c767a784a9ba1d02a5fa9e6e9e5e268f33dd66885b602", -"T2B1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "4c1448bf2d066fbdc66c009e8f5269d91c5c56dec78043f698ddfba69091c3f7", -"T2B1_de_bitcoin-test_zcash.py::test_spend_old_versions": "3ed2be5a67e7e323b543efe760dd8df1b6727ab2a6221d9ee47435894a77b401", +"T2B1_de_bitcoin-test_zcash.py::test_external_presigned": "b10849bd341489f6b484ed89b82139b2e753df1538854c466e7f67e4b46aaee0", +"T2B1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "839e446ae97882e045707153d7736efc62500909465097d1f7590401b5033d6f", +"T2B1_de_bitcoin-test_zcash.py::test_spend_old_versions": "14f799ed510e7ebc97016f6fcc75189a3ceb27511449d3f60f963fd4ae756062", "T2B1_de_bitcoin-test_zcash.py::test_v3_not_supported": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a55b6e7850f78227ebfc4ade739cd3c501e63d12216486e577222cc79214eb01", @@ -2794,32 +2801,32 @@ "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d3d8b9c70f3f20f8d1d46a0a3f6383cd6762e9b455449b2d38985bc5cea23a40", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "8d91a0ca5712aaf09992b94a453709219b2f5c1cca3b3d8904020a9e5a756e44", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da56777cb68977ed9ea25e6e6ab1725b5d8cbc38d199222df1f76cca982e42b2", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "8e24c9c25a479e90f895fcd047da2122f8d708a6a748047a1aaec123ccf45944", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "c376409b95faaf21d2d89f3e860f4485b7563b2a792a566c3520ae5b5131ae9c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "3ee9385df5778f6759633e198841ef18f7d20fd246e332fb8820b34010528547", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "69be42eafa82c9dadd81e014edaaab23c0d0028382bc67021cd66500a69e1326", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "3703eb30c4258a2628ffba48127deb638f3c50783dfa710b39006e2e8f438efe", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "247b7797b26b337152e1b32d499cbe32c74e62adc12b736d9e8bfe70c1f4ae75", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "75b6a3c7218af0adebc874259a465aad62cca10499e1b3dec9a72c970fd31d7d", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "5848457f8481adebb6ae1a93c57fb5ca14ddbd3dbf8198ff9e860c4ba11e5190", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "5e185c70afec0bf0c53bf26a8801340b2ed29cbf64ccb29f59f9d33464e74569", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "bf44583bbbcccfb436a4ad42e09d069456c499391a5b8eed8b11322f7949584b", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e75f5720615e33697125ff5956e8248a2ab7b97fde6818c039843095fc4bdd42", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "decacb1b5c7ef61dc9d445689fe74ce970177cbf5ff05e33ffae3d3fa2959508", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "556b3f23e4fe2dae0e77bf452ae8b7e80666caca2316f6dc1d5387fbd84735b9", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "a2efaba5c00f860f5bbba8c545c3fa1ed01feb31057d913d1fbab5b60a711438", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "0586c0d5507d51af6043769f2ac1a9c5c5d72d3f9674e0588971890f07645eaa", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "e5ef1e9f7cf5cf392fae0cca4c479d7e458ef031295a290c523836504a76b946", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "2bf539ceeb5ed1c721dccf6d74537942b517ce21db6ccfd05fd151013634f1af", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "7d6d2a7d27cff471cfc175c66c916ea60d01414057a5d38ec68db2732e434f49", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f3ef8ff5b8e6ea05b0a9ef956d0ea26f6144fe4d0d5768a7b993a1a84e8d5287", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9dc9f1ee44d67f52b750bc88c647c6eb6ac095a7344c8cc7aaf78f0d8aedd362", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "9435b0dc18055121c814556dce4e1965385e6fbf50816bc29620130ebf4c8028", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f32144eddd2b6eecaca057080b3eadd800be083deb02c871210fa963be94d9eb", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "3851dde657ebe31a27828e531718b04a6cd44d6c6dbd38ccbad4a73a78098b9c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4582288c0bf69a4bdfc28caabd9bb51af9a1d0e8760b2e26df60d1700e740c99", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8003df79cc5f8daefceba64c410db5fcf7c05c716461940dad4ced5d67f7f0d4", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "d35f1c670e08bd4c9585ad1dabe7733eba334bff6082b59701f266a1da36cbad", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "409891820f87e6e9104a781414e0a44b03cda796f8039b42b3c8c4cca3d6b338", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "507c82f516ef15368479a0fb673b74be59f1bd896b3ab2090784a7cd31e0cae0", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "024c67af65eb7b788896414b21dc76692d008c10815b7dc62e021ff479e56d78", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "7c8807b244693f51cce06a350ddf1d903e0585656de542f4bdbac630bb8970c0", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "fdcd163e073bb7c15035000f2dce88f3c48ad64436dbfcbe18c2aaa1b94376eb", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "97e15f089060550a3602a21757f4aed728ef08cc4770abbf4f0ef8171e47ef6d", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "260a7a717f3fe3a7a83ef9f40ea950029c65c88143781978a3aafdd5064be424", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "99813b365dd3a89c8161669b8a1a279486b389e1b81080df6f2befe574817619", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "5d2be5077edb89a5fea22133e9378d093a93277c9d6324f6106902487cbc3676", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "ac04a8ec6e61d130d5536c1137c3760d96b681b6aefbb7e324412c58dd189629", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a4032ac7212eb203edc25830a85178a9b970dc22649b889b14b9e270e7f4cf82", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "77427e1e241fdbfd27cefb04ea0cbd95d12fc4533780b388d885263d9098762a", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "dd6950bd93eb46f64d726e482b302187ee19fce77a7bdd2eed340f747f892e0d", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "5ea976664420a3e0fde5d7b28759ca9c6354e83065cc9090fb6092129d4f3e2d", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "cb118e86c33cce55370695713420331232ce8d6ee7fb07f3331872909440e9ef", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "8cab5b28da3dd109f5658ee8a9cad62bbb6c4fe0e2498e09c0457f33fa2761d7", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "e0fc33477358ecd4562343c15608a6ae4ce586018d10b6efe1d71e8003896a9b", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a2b39f1c3f6aff88fc65ecb212f4d6f1f839606b2b689e384a59def9716b47ca", @@ -2834,32 +2841,32 @@ "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "55b41893a01914c0cee79ff1471a5aba7d973a69a755dcb163f4da675c455fb0", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8992b8e5331aad0cdb13c38d92d9d8b367fd7bb594be29dc121dd36e89283530", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "834878afb0df1c4e7442e5f675407dcb5b98c8a23eea1cf9a28512dddf4b3b1a", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "1b2478cee251d980d8680ea82c7acedee765a00917a4ef8aa96cfb001884f6d5", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "e868c0d646177cbc0a589ae02c6c544d72162d0ae0a9fc896de9e5d19d6cc9d4", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "76f0565e0aa652fd02330b473ed155e177ebc1f5f26a6278bee13c3379fef82a", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "82ab8881de76388dd23515b9beba86a2d1da08a457f6335775d111dc949ca03c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "84d37a78213eee945afba76ab3ad92d0fbdfce409c9369ba4f47edbf89dac7d5", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "a8f5b4acbd7b5146231c37216ee28113e3c1bcead3764451a8a2303180d1ed94", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "981fb5f68dee0109a032fd56af329bc937041f350f4b46c4ff3855ca17431150", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "4fbebd4f60f43729b46cc2a0416ae8381c5c53e3b0d0e2829a724db585fce95b", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "6bd6c1684e25e371cccd5255f37d6ecf5fadbbb66113f1f17661ae2cb890ca2e", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ffe2b1d9e809c212f76c5f78f12357133c7784f0fc8f3b95149d73e3fb155eb2", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "53d3f458a81657d7ccec81eac7a02759259f0396fa61268f962b224e19dad7c2", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "ad80974eb2753f6b2d0b2ec43d3d142ae8c18a3f8a3f1d7c465dfc0bb29c1194", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cc1658265a1700de40bc47ee2d2d08fcf97c13565b5e2f28e81decaa44bd94e7", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ebc04944a90023a242defd400a338ee602673631d140ba6b81201c9cf3dea0bd", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "39d62db43f5e702957a7f923ce61f7e764bf2808520b4c49aa5d1d94d1575930", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "9ede64518ab5fa026a7607d273867bc22af43d89014526a3acd4387e440a9d97", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "62f0718ec04f80526fa3199c4c18e779a77dcc8896abc3264cd896e44f9859f4", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "caae02a64ded8458c5e430a425d4080e540ccb36eb9972a0ff176103486c0b38", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "8378ac03173778226fe576bbd5e30fdabfe0b91a17b42fad881aee21d538fed3", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "2a8e61c451ef0575a7dcadfb5912557dcc1c079371eb0ab6c5cb4ff87f9f9aec", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "f5245f979807cc7ab5f58ce0b96ab71fc5d508e513574762ca180251ab0f07f7", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "223ac056f114581005252340d7b3995f4abcfe673b10f931a6208d7e1a13fe0e", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "dc63eeea0e8629363085989c571abe63a033d414e42cc6b84099b3775a355b8c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "30f40555e2fab97ad7d97361508f37f208368ca40add583109fbf03ea92056c5", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "1c5dd6086e3dc97863eae7698ea297c541c03b14eb06f5dd28b1b9dd9f779225", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "05ce713dea63631a5d16b3e090693784ef014c84a8b66117baf5b038a585594a", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "de091b08ae79f3bf1528a19934312f791197dee0d0bb1bbafa1fa2828f6cc4d6", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "fdbba2de841f24cf10d276e2e39f8a75ae057021a2a4592b6c1599cd5497e3df", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "c0b645d8df800a89406ae1ea89ab170cb739678b06c9130edaf5b1376cf53374", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2dd94098fd8aa0d49019b98749aa71286a4800a5a35008cfdc8838da7f9d9d92", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "3e4fce59a669bb2e237c0c6d8419f767af7f2c78d83ac9d39d24b682e007c978", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "30da0cf81507d20244062d06bbd66831fefef3537456206c49916967eb184910", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "567956197357d1007235cca895fdf44d809d4040e84e31c86d148ab3abe18816", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "7b83b32537e7d981a23c4b223ff0f3d46965377ac88c762fe40694ec1f3765aa", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "8ca9d3f6477663ef6fff087265c4ac22bfc685d8a2d912a8f1643cc10575e0f4", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "7bb8ced6b002b0fd9a990b027eb9c1f5183380cc36359a8a584577d8cfcb6708", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "9d60066d62f9b04d42e7f75bc3086778f57d8300abad7b2c8f6e26b6d6c66f7f", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6e8b3bd738f3c0efad30970442442ec38599660c141baabfcea149e029a6ec13", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "956d8d3a3197eff4b506ed685f712c00a176fd6fc7cdb4970b9c8e044de1ae8b", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "5269b65aac845c8c5c207ab7c93d397f9884a7b7c7fdddb270329635a4971480", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d7927839a8c6543837e2c573feb0760a139af0e30031eee2958e1fecb45e039f", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "cd06b142382abc1f27645976192e81c13ec4cfaf74885309161320af0f335a8d", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ac83f473fd6f61e3a10f73bf7536bf3fcd71b76c031d7c5b4ebb180ebdafc976", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "6d39bea9ac4a4f4dd12c1e4d112c716c471cd3722d56a5db8af119d30a1b0bf7", @@ -2891,244 +2898,244 @@ "T2B1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_cardano-test_derivations.py::test_ledger_available_always": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "0604be3d9b63e71938702bd32a9d126c9fe4602e862981bc1d0cf6f4a3e45161", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "110111c04217a0ade065c822c6a90698b7ca2428f918d77eddaba3004b202b8d", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "45e9ed7de959f16f46b1cb8f38fb05d7afd2c7d1154f328ddaba38400fa3e373", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "75f198b22e48448ae2159ffe9e38e57e30c687184792979bc8c86dc0c2efd89c", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "b7ed15220c70f715fb3b4dcf4c93dea3dbc369be76d3b8b4bc367b3e46345866", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "c10ac33e326631c67780936cc1c3460f028f2917bc18dd9e18b324481953e60a", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "f20af07abbba1ef78ab36fd3b0bb5415ec6c79d41dac2a693904cd15d4c57aad", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "9077da71bbf867017eec2b37d188a08d5c33c14788b9a51438146ddc3d3ba444", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "e2abc2f128b631e1d132bce40b4d66d4a32816bdf7da24e33a2c91f3f77e7b6e", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "dca9d9e42ed67fbb160d443a1623f4a193b68599d9adf67228a1cd2c9f4824d0", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "69b5ffa460329244d351a242c98f55c97876d1c89d385d2a38fc84931909c4d7", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "9dd7464299f12aec3b3ea44cc12f20f2f4dfe770ae5fa7f2c5f3962a16d3c425", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "47cac621e1449ebf14fffd03cf1e3e02545594df112ebc6e8674f90c98c6d4b0", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0412105001bbd6e643ade3567afdd62dc8dd4c7c2ea13bf409dc4b9a5e4482b0", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4912a92e27f66923117250bde4e1a0ffec4621a33af07cd5a3117cffff9e29ae", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "b1cf09f2c945a94ab46e5140a1711f68fde94ccc38b5a90f0d0c37c5a0aa34d4", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "15673e49bb339a6b0103c19c3cbb562fad8d80cc97992a37b2288f6578ca2574", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "3ca60b73770ae4deb947aea74c4566f11adfc2f650fb94267fe80431eca41409", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "dca6b2b09dd19095130f9873d60ff4773f015fae81b4ec5e025e2522503e7e37", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "526d044be5409d67cae44faa499df69cc36b53e366deda4666b66a118efc5255", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "ab8586d47f1fcfa07e50edf2be939f5da85971add78fdbd4514db09bc25d040f", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "a8df688458a24c366f3253b1f02effb134956a216698b489adf1825e068e5112", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "d44e4421a89e225c8be930f26e495c12844ea06c88063aae4265d3382061fd13", +"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cde6c3f473d9ee85ba4e0e73ba39c4a0d6b27d441c7fea56ce22df2c61067a84", "T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "7357c78e8516fd29bcd999cec5b307ae78734b239f07ba31531f67aeac99a20c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "c07a1680aa26e5a56a962e90f2b66189ac996b4e9c66f86f7f27d633530a3b66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "d71d8e8a00ee60f0f212a42e8f959812b9c32193e86276c8e2d8dbd6e0fe3e7b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "2dea6279a463876aa24b4408d204b67e64431dc2d51b6d7107f2a1ca2f1c704c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "4edf9a2cec9c331a0937165893ff6411b114843bb6d54a3b98118f37416e423a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "4edf9a2cec9c331a0937165893ff6411b114843bb6d54a3b98118f37416e423a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "5cfef9755cafe60930d445586f1c3bc0bc11e16ae8914bba110859b7fb59576b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b8d482ccb6e9b6c812d71d4114c05adf4251f1492e9b0c05aeeb51d8b93950ec", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "23576db2c8ec6794d13acbc3c727b60117c0b70d7bdb196d23278725d5b04548", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "20c75877e4cec2490f7bd688a36804651ac982f53b6a4eda8a7e96730f13d76a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "cd79a6521772621a74dfc21f1f4ad5610d38c5cae09d39c68ca55d71a2e16601", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "60b32f758993331a7b1727e3da7d597501016e7abed87b9bf1236d2280aa05c4", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "3eac646a485dc6c15c8b98ca15a208e50d2f9849014e0827cbe05ad10fb482a4", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "590df471be57599ad419e359ec6a2475c3c9c734198c23bb0a4da4ad3278b8e8", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "fb2b3f817008cd00a3965af29ed99a45e807409c99e0f511d5d684ef865a38da", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "fb2b3f817008cd00a3965af29ed99a45e807409c99e0f511d5d684ef865a38da", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "59efc96bfecf202c9a29ab8402e0a8ac1b7066dbe6588ee8518751f5373f2f09", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "74d3ab43f7c13f212b08d48582ab80c4bef020b869f695f03189c59318496d7d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "79d7c3ed19654b9d4f371b446ba930ea71be5136fd8c11ea62006f0c796377bb", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "a0b662bb756d5923b9afbe5a6280030cac2b56c4ba683fb92c00a4d7aebd4d9e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "06337e5d10c3f2e8f7aa0dfb7f1513f4c8a8ba1bff66efab52bb71ecc88e1c72", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "19c27151bdf71a6a65fef33ff7f6de8701e4e05def402eebcba0b8c017030862", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "8b0be0d3d66e8f57d9faeb51c187c79dc1769c103d398d67720788318d612a6a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "5ab983c1964d33293c2719fb709b66b54302265cf6e8f7d14c33246a71ffdb30", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "4edf9a2cec9c331a0937165893ff6411b114843bb6d54a3b98118f37416e423a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "ed5bef6b2e535e87448c47cd25e784e829cf672c1e03985febc946556b6c6869", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "a0b662bb756d5923b9afbe5a6280030cac2b56c4ba683fb92c00a4d7aebd4d9e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "21258c78a01bf1d051cfafe28bf323c4495a58e929079eba6957c9b876fd30cf", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "19c27151bdf71a6a65fef33ff7f6de8701e4e05def402eebcba0b8c017030862", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "8b0be0d3d66e8f57d9faeb51c187c79dc1769c103d398d67720788318d612a6a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cbe2ee50e28ef45bb2a2b53a9950aaa7d5a424602ef756a5a96e51c42bdafbc1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "a0b662bb756d5923b9afbe5a6280030cac2b56c4ba683fb92c00a4d7aebd4d9e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "48b43bede48521b1cbe396d259e409219883dfa5635c1d3ca709fe4559c45696", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "9fc80cdd236508b96f24372cd20b8706f3bee64ccb3538e2516a2e8656cf156f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "cf7250d3054a6947932c0b64d99010fcfaafa03dfcfac7ee3743bd7bcff1b494", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "e35ddbadb2101b6190d0417f60210a3c0c68f4ff76026d3cdbbce8e9bdd684b8", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "ff7fa83e8a7959cdbd3bb5f4873557f24fbed3423d7c98d8ca3cd42b68014cbc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7b566104079e9d195df32c0db6a2ab17eb263f6de98750c5bc8c5f5c4d163835", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "3be3aa6f4dff5640e562b3f665aca9fc332ef853921818ede5f46d533847ad53", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "8c203dcfdf5e7e8ce37c254fa58a2916b3569e3d4b13e37a36e8d4e05ddcc5d0", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "131d56212d225c4312329435457b8a4edd119d4953301df43deba0603c60ffe9", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e2c79c03f14dae8e8a49c0d561b0150fddf735e227a343f5756e8f024c20cfb8", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "aecb5dd7297bec4e78e5da525b6d39da875a5a8c57ca0927bcfe0d145bbfdb3c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "6cc7d704183d278ffa08ddfa83e57f67781e9f2d4829d5d735f789bb50dc790e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "d3631cb89eedb8a1798c72b7e7fa406faded564fe97b1c0d4932a47f77587e20", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "47fd66916415ab5d6344e8255e29f35364f72178df6a519debf53c22774e7f82", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "44676cd3716361ea1ff36ce8036116f3884408acff2ceb92fb1051841ffdee52", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "3b04b72f6a93faf63988a992e3bd34497de26d7643508e91f6abf0b2b7ec58b7", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "ed7731d434e0eaa322fc4bfd5ebbe25560712925fb170f7f67d703e8f67a9f5a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "e09cf7f2a118fb96d8cdcf9d55552b09986d214abc5fd9d3c840e215a464b9c0", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "2ca8264430fa8d66d664a45465f40b834354a3e2fd04643c63be6738143685e3", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "8067ee5cc8b0dad33b72f69a3e84d31aeaa7ca14d1103990e7c7b04da833e26b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "3cd6e846b9b23f76a4497bcf033f43ebc980d94920e28c5896e740c53b1b1d03", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "fab1f75617caf3d6e1bfd4a03d8a1e8054d934765ce4293de41ec85577c54b12", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "fab1f75617caf3d6e1bfd4a03d8a1e8054d934765ce4293de41ec85577c54b12", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "392f21c0e7897193e4ead5fcebb9a8c809f3965f8496dee1d936e8d13c9a6bd3", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "0269adafb2933995152ca62df5ce18f52b0899841e4cc546000a2b988b3eecca", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "bdd0acb61bd1addb2151346ff78967a5bad698b009e53571d8a7f7958cfa7988", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "26cea4290e7088daf8a8f353f8c152621ce4afdfac686d5b424a63eebf7d0977", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "a96f972337b0568160d511cc052bc16787f82940111a8eebd4330afaa9160346", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2005b6417454282e27197cf93d683169fd49706f786c93f8fa8f21e51ee0f52c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "f483cdbc306b325991e9d25a6cfd311b6c5b79754385fe9490635488c4bcc380", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "eefa2c9469336fa00f64b17387c115e74fa0ce70de641af5e75d941075c20b71", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "a0b662bb756d5923b9afbe5a6280030cac2b56c4ba683fb92c00a4d7aebd4d9e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "075d137e9c06f14538150df97fb3286318057f2b2913afbf7e840692248d015c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "3e0ead950bf4264f318d5fb8437f90d75b1152918eca2e3b4c3225c590b2a275", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "3342efeb35b0fa9b11ec47425670502a76eba4ec7d6e8173b7e71852d4bd75a0", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "db10c1a1be4fa592d286132401c47a103cd5b4f9ccd0dff9841b52fcb9138400", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "caa864970ab24e94e580452d1b706ca36c3e0cd38ab65de458fe95fb28dc10de", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "1d78abd15c7ce2f560289d4e8e0dd8f0c6a045673c7fdfd66ccbc278d479d246", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e7d4a5a652f45b5c71db2ddcc0252ccfce60dcf36ac86ebaf137ef50c84199a3", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a0b662bb756d5923b9afbe5a6280030cac2b56c4ba683fb92c00a4d7aebd4d9e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0040c2de22a508eb492083dd3a17737446c783b322c06b7f628712362b6064a1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "9b50e55a28587a072986927c7cc33f8f1b5fc7a67bf3cbd0e1e864edc2c03849", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "7413b9f139df2af3cf3656fc161b9eabcf7179c039f4560689a44d0890f45034", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "4b9a6c686ed71a0e778773a0e7b3ec781b3456fb815bb3a36c378299045c07b3", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "9833a8dd784838876d2c672712654c9ceeaddcb87cff274fb9673087b92945e1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b235086b4cc713cc3a6c855a7861a02c3a43e22c783409941d8a788b0d91d611", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "40ce162b0cb45ba24435bb571e37d54ba8cfa242aded7fa21db9b73cb7ee4b87", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e2a12b36131bcca3629fc1d40d236b9168699c12814380ed501f93811f1023b5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "287967360660a4a28c0cf6e2b3223b145009fef540b39e719046a7918aaec981", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ec0522318f18990b25eedb339dac03f953df6c83688976ebaa5fd0298b497260", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ec0522318f18990b25eedb339dac03f953df6c83688976ebaa5fd0298b497260", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "e71e58646f3340b13eca24f9cc570b7feac671b93b68fa966cb328bf89e53f87", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "918c1d1ddd3c8aaaa41c53e11e1df7fb46f8386219c202abcf7e1200828783a9", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "f3ac65c8f95e28f819ad0a6df54cc68fb3a68f93c12ce39a627a92c360ade7a9", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "919915c40fa25b3fa06ebe752983c907d42552311314b5e4e8e405aa8d7a89b4", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "2a6f71793a665ff3e6490b6c03854c02342ec1b350f3232b8f6e522b7ae12b78", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "2b76be079587ee8d0443bb402badbf0097c1e4498fb7acc9ba9696d75eb20268", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "4edf9a2cec9c331a0937165893ff6411b114843bb6d54a3b98118f37416e423a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "4edf9a2cec9c331a0937165893ff6411b114843bb6d54a3b98118f37416e423a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "ed8155ecccc47b9ff25070dbe128734f5592a5ed0a705e9c55d6dc7e34b556fc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "f18c1009fcc2051744ae6a0776467ddf8f9b46868ffb35d10fe0c8dd3cdf5362", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "3bb1ec477d9be7e98b6b70ac3ba8646c7e9270473de6ba083fc198fc8e93a7ab", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "c07a1680aa26e5a56a962e90f2b66189ac996b4e9c66f86f7f27d633530a3b66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "20c75877e4cec2490f7bd688a36804651ac982f53b6a4eda8a7e96730f13d76a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "f94292c44e520436a40b295633746a9b3936a98e5a25629c9d71f84c7ab556ac", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "876dc5c6a1b2c434bb180f87be8de89a251f23618da482ebceee98de31be9605", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "bea6e8e8f530af597baeb24f29464afba371fe420b7cc643bdcc96d5d2d31101", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "618e39bc55696f19ac34a9c6e9f924f9b610de6e9ee84489013bf3831cfbe0f4", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c6436a7c6956c21bcdc5f981e2a5f0904b692e87be314880ad599f9e796e66ef", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "2fd0168a9c616997bf454ff78f34ba19e977696073ea9832a0fc1571f10a8e31", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "43d6ee6ed24961dfa604f0102738d873a2d59eaa39c6fea511010f03d4d2ace1", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "5dbfd14efcafc190f06ddd5461db1f89b5e1cdce040d879b4c899ca9aa7a68c2", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "6d32d611be5e7f1a13172ff98db391680bbe19f5e588c14ffed2d2b8bcf14e56", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "946bc1851692115ab940647d2e1f92599440836cf20cdd4bf6f6beafe9b6c87a", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "cbe2b85ab717e87af4b8f37d1b141b85ba6cde34790a5c3af7443d9f337d8cf4", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "023488fa9cd2495dab22f5482f0aa406cee9ca7310a11ac49c873545a922395a", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "023488fa9cd2495dab22f5482f0aa406cee9ca7310a11ac49c873545a922395a", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "dc7d1e514967bae748c5521dc1e07b9d556919862fb9987b1b426c203502cf32", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e6098fb33cd40969d7a69669924bfad2304124a834cf4dd6b0df30f7e36d727c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a717d4d92b7fcf481b6b0a6b73b1e6b814e4e5a37861b21e646b25b6f3964145", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "4caf0f2cd36edb32d3ef29562c17798005d717a3d83c9882a322e16337d96003", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0036f9a9273d0d17fbdb9fe56ecdbd4a74ec3b7e4950fd1e1a455ec8e8378fa6", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "2117531d61e165e1fcf4353ceac9e61c501e68618eaf741f2baab5b0837bf13d", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "4605a7048ae25daa9902e6361871182a26e38dee5de560809828809edbb7ac26", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "696a72d6fcc6a888c1061527f235d837ce82f76460a385ac18e08a86598c47ef", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0036f9a9273d0d17fbdb9fe56ecdbd4a74ec3b7e4950fd1e1a455ec8e8378fa6", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cfbdd9f87bfd5d9e7847ad98415e026d1061f2db984692926b19dc5741595056", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "9928d08cf4aa91f5490dcbdc431d6b2d2f3b88dee5df01997a6dd188f1091ff8", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "42b86d4b1fba41037a6a7e15ba4a41e4ee1ef240ae3661bc9d763304987f392a", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "25032ca0dd01421253c35804f93e2eaf87e939e491f1cb31c2e617b44f965a2a", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1eaafe60662617f609c25272b0e17a05593aa4024340c9dc49da7e5f2effa840", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "104314fbb659433cc6c8a4e2e0f2019a008df566a0030665df9759a7473a82c9", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "b1903e24c4e44c48b86dea0fd4dbe2b79e25e497c1e6be7df4df3ddd2320f8de", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "e01a12a30181e7df890595504e8aa8b417976da7fb479e24a16f6c64343d11dc", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "c9b781b91eba62d0eea25d1eb7b62d1340c82c0e55775b444d8a9357f845eccb", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "691d5868897691d2572ccc20a3956d3ca5d990c2b806f8f14c62baf16b41355e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "4538ed84977b90319321d1478baaa240d1bdf60300ebea65e1a112bf352b3af1", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "95ea8204bdbbb193f1807b8770f45b447c377d1dc5e2fcb0b46f5c643534fdce", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "b18ebca699ffc0c7139bb1bba2f3c0bd725b19e28717cda2e5fafa028e78ec6b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "a803318a9fa4dd95fa536abd53e8cf164b8267e4d7613c43feb5743a84c3aa26", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "085c8281b8e6a7a05ce9680f68e045bb03c1610ba5fdfcdb2d2c63828af8bb43", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2a40352a5c1d826b4b6ed5371d2fa87f53e6fd86d9415ada7770b47c687af216", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "ef43eac6c2477746c2a659d14e8115245a8e07ba267b9e5ba37f729585145be2", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "76d3675877aca68a92885fddac9863100792069adaa4030842f9837d552190da", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "46f47b660deef9361c8550326f00abd3f30a12fe4558b09587016eebe0440e54", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "7ea9d238318c095ac9ffa198d8e2d5554d91f85b12a84a9d3191f2e40ce36969", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "2014596dcadcfb27199028183dded55a4c71bdbec0d81af00bfdb6f7e05846cf", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "4b86e893f6e05de25855621ad768b9ab6d1255387c836dfc2de79cbfb87ac7f1", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "4285dc29975205fbbd786f0f577c3fa06b2dc498dc096ca61db8932c21b79915", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "37c44fe9cc5daafc3c19e69dad687ad77924ff5c2337a314259acb2b81d7afef", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "a4f029287528b9bf24ecca5aeb3d709581792883681839ccf883f9f191150c17", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "83e7943c837980e236949e1c3823c1d0b63971cb6a1f521fddd0405aee4a18f2", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "fde224416a6992de7a6147e45d85158317611bb29a0b970b193ac22fddc8cca4", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2c49ad7c947b84d93152704308af013a63ef19efdd094d1eb31f908df5eb32e0", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "c3b75948f1fb881fa299cfe86018a71f0743168001736625eaf5005305460dfb", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "8941cca5e7afc6651623390c94eaaa86bfb90e802ce706c4f59eb67de37e61ad", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "485b75baee329b0a1e752af25a3ce02a88e11cbb251749f8eba10ca2978ed334", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b3b428b5a8ae7934f37d9a3972f3c0c0b55ca182ec5410be0f33751ef854da82", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "9f43f19d83e1f9ed3a7072305dc3eeba8c4f8146d8b5ca859d7f08390807a2c2", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c97e226163159fe09019d9eaf88687b0ee94dab1eb325024d0fde64bd5351c4c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "60a9d9ac4ebb9f6e0057e2ad2e34f61c0f09e8e38ee178c34458e0f28d6a1720", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0f7fbbfb16cb77cae760072b23ddab0b1799c2b6fbf3df1e85a3a5a710de18db", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4516fd2a9b10b2622c0f2999861bb97a1b8e16193f91e7b61555fb370c6b7343", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7dd23e53757333064984ac2354624e41e9d07f17eb90e18f07f8b91718679d50", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ac8f6736cf2dedf2cd6125525a4bc7a72a4b3a07528d52ac82021819da900ce6", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "847626414548beb2c73bf702e0238b40ebd9577cbe6f161bfce15ab6a5e393d8", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "52645db2138b15ec5eb6bdd813b81fbee4c9ce2ffa4a023bf4162ffae5239d13", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4da2689d5ac33ab6ee4a60a70b75f07b5c0be98cd6362d4a8fcc2830e5e5a4da", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4f83cc5158e035cb1b611bd19eb09d7296832846eb0cdde6a6b57c2c6d208d19", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "503072788c5bd3a575809acb3cc26e7488d20a3f9d2e6a445bd440cde433ffe1", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "789c20eee409a0634eac71baae437f474e8c7cd1b1454fd5707b90750e121ff1", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c92b7ad08baa6c60c94ae28fb5e709e43b10300dc7d31c2ee629d80f9150b08f", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "0c9be01ee21b6588c03bc1fb8a74053d653faebbb3c4a1fddc14603d80cf7ad4", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b779c995dfe4e0a140e1f5bdc8cbb66bbab3e31affe680016208728f48216515", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "96f92a6e46ae74f69fad69e83cadf0f115007aeb76825d6da37bf78b7f3e0c9a", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "cc08e4c2f1ddc5dd5598b755f7d06b5ef10e9fd61bb5b66870f821a8db2fb9eb", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "98a7c56184392352ff6a286cd75be24ce5f4222cdf40620074c5ba6170b50247", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3f207042c59125255aeab0834a7d41d0c605f17be1b39a0ba4a4e6f2cabec47d", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "bc641080a0e509784bbbbf81fdeec9be67295f71a5c24f4d96c6e93bee003b4c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9dac354127d04ed43ef19209a9b3f8ffe5179e5d949b673449457766009c2966", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "ffe21eb8f726c7baf3e65cfc7266aa0941d07d6630cdbb01f52266d2aa5d9319", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "f94292c44e520436a40b295633746a9b3936a98e5a25629c9d71f84c7ab556ac", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "43d6ee6ed24961dfa604f0102738d873a2d59eaa39c6fea511010f03d4d2ace1", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "c59297c18fff47a8bb55184f50ba6821fe5c16869ad710fb380e55936fe61f18", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "c4b5bba8f0cad7ea0a4fe5909f655ac2c3481958ff5052fad124d83c46eccee2", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "af6e7d597e2ec5954cfc3deef1790e305d929e53a2e7af51b09137e0d7adeb5c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "af6e7d597e2ec5954cfc3deef1790e305d929e53a2e7af51b09137e0d7adeb5c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "bdbbc3a267defeca315ab8cea09b0c238ae6f58ca5b0c62e06a3134cd28c5a75", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "5fdd8f2a3c50d98d0ce8f39fb13a8d11551ed090accc5ef4145e87b5b1d134b9", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "7e6f07cee1b9e4dcc1ec11fd3636e8059a986bfcdce65dacbb35133bf5299604", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "a0b662bb756d5923b9afbe5a6280030cac2b56c4ba683fb92c00a4d7aebd4d9e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "bdbbc3a267defeca315ab8cea09b0c238ae6f58ca5b0c62e06a3134cd28c5a75", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "ebeea67e7ff22aecbba5622ab5bf640fe7474afd7bd8aedc72aa8f4fb732e255", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e830882567c10161997548cac777e02511316a2986f213b7ad7d2d9512e2fbc6", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "bdbbc3a267defeca315ab8cea09b0c238ae6f58ca5b0c62e06a3134cd28c5a75", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "43dd2ef9a31173a1e3a357702112deed8c8c9ded375f76e5958c5bf313a4cbe9", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "4625cbd2cf13d5daeedcec5b2316612c80820edb2aea5ff6a97d7513c62ce613", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "647d956421908a457e29a641fd2e718b3a587c80f891913ebb5cdd17c7a35f0f", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "3e05c1a3f1b9b6b56205a6e7283b66291045642961a1917b2f3d423690273436", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "1d4f96121487a6a992ea0b707e32c12f8ed6d3d0cfea4b5ff9aee586a631cafe", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "e02f29205e47572db792955916a122828a6c9c9c97156cc46db3e1b522337813", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "77bb38a45b3d1819821d00215a745fcb163fbabdd027a731605e21e413978d49", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "6e99cb4e939b684724e63077ede331fd0c17be04839581e7de628c757ec9a775", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "8e38c697d5a501105559a104302e426a1b9fefeae7fb76de0e0f96819f8732ae", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "ff4baea2aa900a698082c12ff2d1b23588069854c2819849a0672b9e47355598", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "ff4baea2aa900a698082c12ff2d1b23588069854c2819849a0672b9e47355598", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "ff4baea2aa900a698082c12ff2d1b23588069854c2819849a0672b9e47355598", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "ff4baea2aa900a698082c12ff2d1b23588069854c2819849a0672b9e47355598", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "ff4baea2aa900a698082c12ff2d1b23588069854c2819849a0672b9e47355598", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "ff4baea2aa900a698082c12ff2d1b23588069854c2819849a0672b9e47355598", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "8e38c697d5a501105559a104302e426a1b9fefeae7fb76de0e0f96819f8732ae", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "8e38c697d5a501105559a104302e426a1b9fefeae7fb76de0e0f96819f8732ae", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "8e38c697d5a501105559a104302e426a1b9fefeae7fb76de0e0f96819f8732ae", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "4625cbd2cf13d5daeedcec5b2316612c80820edb2aea5ff6a97d7513c62ce613", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "5ce86118b7e347f42ea87de409e8a32d58cda7271ab149bd3426806f87ef5054", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "e9618fe1dfd6d30ee3811aa853025d147aea802eaf9e4abd5ef4cf378737b600", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "e23e6a97aeac60bfe5a629faa7a07b49ee0155b02d1b0e6e5ff64310b4190c0d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "4a8eac90a3b64529d7668d9a835bf8f680487a1f6b86c0997142faa6b1fcc8e2", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8af270c74b929cd33a803c123c9fa2b6f023a86f6edc7b9ad2eaae87380b3ea0", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "3f8fae5f0869ee4842443c45dc97df5371c8f84c43921b4b8241fb54a8e05ddd", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e050a0f883b59db808f615622716f2bba51ac790a13cd357913c98a3c4924b0b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "bdbbc3a267defeca315ab8cea09b0c238ae6f58ca5b0c62e06a3134cd28c5a75", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "bdbbc3a267defeca315ab8cea09b0c238ae6f58ca5b0c62e06a3134cd28c5a75", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "3e05c1a3f1b9b6b56205a6e7283b66291045642961a1917b2f3d423690273436", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d97348a9f6d2c920fde06cc2e688dd65a799aa4d680026467525e4bd8f238d13", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "07f2a02d438df8d5c2adace78928dd5f60e6a9b5d049046d33f7c0af688e4307", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "836a7d09c2b128ca18f96e7daef85bada5c903aed8b5f7549cc0bcebe1e6a83c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "7f7df52d14ef9fd1081a9491305068ed0a6a81448f43d37740ce54fb77a48b6c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "d72c6a43ded19bd59bc85761c8ae21fe50972f4887253aba3c14321992ae7889", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "a1fab66c62ed2d9ff6fe9cd627a7ebd5cdc8bf398a663d9c9de6ac1478c29124", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "86af58942e1b2d6b4364ea35cae23030a9f6631cb6a1d135e285d6eb188202f0", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "1ae155312c163d85aad3a039b49811695bb56d34827fa79404f9bcb027ef5d5d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "5c95167af376020c13e42dbe44a536e851f7db9e09e63d58ce24194b44edc0d1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "6581ae4fcd6e77895b53cc0ab7cc3da1d13cbef4b76c13791e2b69689ae2812e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "ee71c7d6ce8c8e5d60fe3b71f016c7baf8666a88b51852ebd1eddb98be09b04d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "af6e7d597e2ec5954cfc3deef1790e305d929e53a2e7af51b09137e0d7adeb5c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "cd745fe91aa49ea7ce07d76f1a257195bbdef660c7086b5eeeb0fb3c3739b4c7", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "2af2747edc216b022244d5d5997c742a4f449e0373423b331d39f4e65238e617", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a71d4f62106e87104a5e66542d492c9c2c928be67171c80f264a3878792d32f8", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1902ed43f92423434538868511a021f50c7ec4809b4afca56db501eea9c222ba", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "fab1f75617caf3d6e1bfd4a03d8a1e8054d934765ce4293de41ec85577c54b12", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "fab1f75617caf3d6e1bfd4a03d8a1e8054d934765ce4293de41ec85577c54b12", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "abd0116a051b56807e0d71501c8f3a599c402ee624ba8129892d3e21808c79c6", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "66fdccb6664b5909d98767802b35e6edf0032f3672019584fbe49da8e8d73609", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "fab1f75617caf3d6e1bfd4a03d8a1e8054d934765ce4293de41ec85577c54b12", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "bdbbc3a267defeca315ab8cea09b0c238ae6f58ca5b0c62e06a3134cd28c5a75", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "bdbbc3a267defeca315ab8cea09b0c238ae6f58ca5b0c62e06a3134cd28c5a75", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "9e5a949115cead9699aca3e51012f26c1d7e5a7845bd64f976c388b7a28e775c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "5e9dc32179f4845398063688700b6ac924befa654c78f3abda006d72d5da4630", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a5891b34be4ebde96d4e8a61693e24c01e66c25a9bc65898c486ffe4ab03a319", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "d6613815f4a0f89ba4322094e86e1b4a2a0ef64fe24c63ed3e103f942553254d", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "eb917e4849951d59de0bc3bba61dde3c0fee977754a2018fae1432953db5550d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "a872364f23168cabb045a0c0c546c9be56c09d53f95c4366818386c11e26158c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "ff4baea2aa900a698082c12ff2d1b23588069854c2819849a0672b9e47355598", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "15472be995651197439c5e9c1851698238f5a44075e6001401552c5238d63084", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4f4d2ae03ddab69a121bef27a906eb6646a623b2e42cee7bfd239c1f973b0b56", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "9625c674d9adcac9d55c7c3aee821d634ed42913c6b9ccd3a61bbfdf21500c70", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "991d830fc3650d5536ed895a22be4eedfe77bb36d5f118b182b1050624ecb9ea", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "243d648d19a298645ebc846c5e51f85ebfa760815315b120a01b87f81817f966", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "b53596c1a5817c58388891341efcd1c998afe92f090030376ba8117c647b713b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "8b0be0d3d66e8f57d9faeb51c187c79dc1769c103d398d67720788318d612a6a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "a0c81fa0149037866af7d873f8def6a67136bd5d4fb23a9fef3561477962461f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "fa3e06644d225ea6a508de47bda3916221e2010d822a4ce979bc05663a68ae4f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "43a42c2f92d613bddd2e7d081ff8c4de7824bd301eee238a07a3401377f43a31", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "5ee33424a7fe1948e6f5c82212c7c5629b582bd6b8d42c2df98fac1687441955", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "f80fd351ee996d7bee8d4b106a71ee8871277bed86aeed2705fde09ac4134e06", -"T2B1_de_ethereum-test_definitions.py::test_builtin": "8b5d06ff97f7a27eba311c5f04a35b0130f320c3f721332b1412e3e2f9202991", -"T2B1_de_ethereum-test_definitions.py::test_builtin_token": "e279c43889be8bfc7b4541e9256cefb768db0735dd091e830932f6817851e953", -"T2B1_de_ethereum-test_definitions.py::test_chain_id_allowed": "c6dbe671a04cdfaf2334c256469e6a9b29d152781d800d9b73b26614f5507285", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c1602964914416a7ae5a12792e48562fc4b02f813c38bd698766305d5c18084d", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "fe3734d93dabd44c27334085b551eeb496efbd168e82a3fa7e8fb0dad43e0322", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "c3653af3915094c6b6fcca2370df7e0ebaf7df820c8a65b9c1c9e6d450c718d7", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "5353220c99147dd4574599bd41b27af93f9aed04ec80b57c5fdf16966d4d45a2", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "62a01d84691efa84719b008b55f2d13995c296d952fe0560efb5a8931a43baf3", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "63054643058196dea6265a610639e72f7bc22d239de62774f66f597cf3979197", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "1dfe41b09e0dc74dd8e9d31e7c635b1ec4420fb039de5bf340c022f79ab94601", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "c4008d450c5c2cac1844db5f092d0bae80a0b90f1d9304353197535589e2b692", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "b9d69a4cb33d0d8d458404b4ff869d530b6a9d9860d74faa18ba4ff523cba77d", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "c64a1eabf34d79466c52bb5e7792995716dfc426402029cf54ee34bcd6526732", +"T2B1_de_ethereum-test_definitions.py::test_builtin": "26d4b0fc00d2f899b0cc78cce5257c7cb898f8a670ad480209a9a457f2978baf", +"T2B1_de_ethereum-test_definitions.py::test_builtin_token": "c0976a2d9b47427fc5ffb7cb29045457d82a424874cbc5d4f0c6c88c2b48479e", +"T2B1_de_ethereum-test_definitions.py::test_chain_id_allowed": "8ef2c5cc45e6b89db609d392b4f1b3b569e1790a4946bd63a21393238120c9fc", "T2B1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "f24a0b6cd7c76192406ffd1275409eb3d3e9ef1c58d5934f1226546d3c338b19", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "810cb591670867257196cbefb6dd3af356a05bd9a6f0e420ba3c06f6c94abfbc", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_without_token": "ffff890c163be4347b1b3674a670568b77dc266cad1be13e4f319db6060707d7", -"T2B1_de_ethereum-test_definitions.py::test_external_token": "10ae6e0f3e90d23b66e5b1c031e9c8d9a6380563b2f1095aeb025c0b3a890513", +"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "dd988311fc5415377a0eeffafec19fa0bbfa044a7b631c137278b643ece40438", +"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "fbccbcd90e236f828599cd689ff36a3640f3f1b5e052946b332c773e8a0740ea", +"T2B1_de_ethereum-test_definitions.py::test_external_chain_without_token": "709e0070010323114ec6cea44265eb82597fca1ef810a2cc70013c351dd1c204", +"T2B1_de_ethereum-test_definitions.py::test_external_token": "75689370153fa4a9eac3d6be72623c1735bc8ab6dba41ec994ea27514eaa28c2", "T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ec1cb04940385206c4005cdb541bb79519341da1066ea83686053a199795b06a", "T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "bdc811f599caf12b51e515e0cec9165d5b9fdbf35a8408f53a5eb1e75379ee00", @@ -3142,7 +3149,7 @@ "T2B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions.py::test_slip44_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_slip44_external": "72dfdde5b03f15c10858b63011180737304050e9a6a34cfd4054a3690cc36461", +"T2B1_de_ethereum-test_definitions.py::test_slip44_external": "eb2c381a7d34232d7feca50e6ecb9e4b86755ce2ec8ca840e8369d14bb22aac3", "T2B1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions_bad.py::test_bad_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -3204,80 +3211,80 @@ "T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6b58c573450e9c2b451910185871901dd1d6c6a4463e1ef68459e398a2ded184", "T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "f2ed1a6bd10ad8559bc9db96fb841584447c31e8f1579bc447ac28021a828dc0", "T2B1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "6dc8fb1223b369913eaeb92d34fd2fb45baff029cde06e71e5823d5819ea9b75", -"T2B1_de_ethereum-test_signtx.py::test_data_streaming": "8c53ff47637d07e76c3f48822906af3df71ab326e1c116b0cadcac350d3e8f7a", +"T2B1_de_ethereum-test_signtx.py::test_data_streaming": "c31c54b0f0e9729946732097a78697156865e68b01c3d85b95f43b2ae29e8afc", "T2B1_de_ethereum-test_signtx.py::test_sanity_checks": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "0aeb7c821d144157dac91fa4df69474e42f44e3c6c3ae2af1967cf2086d29bfd", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "4dbfe45395bab19bf5effe2148fd5b81814a1b952d727720d3f651de841deffa", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "95d792d71d8bfb9c680368978649b2b8191b7965b63342dc512aa203690fce91", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "32c3846851dd1ef92e8ceb82e7892cf2d5ecf9248080bda200b838bcafc73688", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "95d792d71d8bfb9c680368978649b2b8191b7965b63342dc512aa203690fce91", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "0aeb7c821d144157dac91fa4df69474e42f44e3c6c3ae2af1967cf2086d29bfd", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "0aeb7c821d144157dac91fa4df69474e42f44e3c6c3ae2af1967cf2086d29bfd", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "fe6d346ac1e9993e91a492f4dedfb48eb70c82d9d63d1c8ccd0f0ebfed45a6b2", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "fe6d346ac1e9993e91a492f4dedfb48eb70c82d9d63d1c8ccd0f0ebfed45a6b2", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "0aeb7c821d144157dac91fa4df69474e42f44e3c6c3ae2af1967cf2086d29bfd", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "0aeb7c821d144157dac91fa4df69474e42f44e3c6c3ae2af1967cf2086d29bfd", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "126a2392d2d6a3ad3f76ce92bf958b98dc6f0f6ab70b758e123f1f9842c33204", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "bb0e197ef4e7b32bef4e093d55dafaedf1ab52fb7c42aaa6ac9a297c4fa16b09", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "811c1120a748a9f44144cd2544b0a41f5c2c20fa46fcca7a70a6622555554350", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "0aeb7c821d144157dac91fa4df69474e42f44e3c6c3ae2af1967cf2086d29bfd", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "0aeb7c821d144157dac91fa4df69474e42f44e3c6c3ae2af1967cf2086d29bfd", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "0aeb7c821d144157dac91fa4df69474e42f44e3c6c3ae2af1967cf2086d29bfd", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "5a2e89fee8d9ac9091aa56cd6f3e5894f7b4e1467d4c02388e47640d50be8677", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7338b6cd31074d6de3a08667aad5af78fa4c919b9f71b774cb48020ea18b7a85", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "a09693c076ecf2f33e28a280e821e86a17acb7822866d714920554fab477695a", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "39cc7dfe6fd317b00eff1a1e02049977a31b8e823ba4e7b9f305484bebed19fe", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "4e0a28b45c21e19a87003e274023c6e1ba0dc5b02c52e3d78f454691164f4309", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "c0188a2503f058d30a8b1a57abba3d048e4a63dd548c4512b01de55a167a8b92", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "fed8475efa47ec5339657d7b68e5bd61f906749c8ab139340703159c3a7ad8e1", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "3231a08a91756541377f546751a5571db4e06086658851e95f3f2b1800020710", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "fed8475efa47ec5339657d7b68e5bd61f906749c8ab139340703159c3a7ad8e1", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "4e0a28b45c21e19a87003e274023c6e1ba0dc5b02c52e3d78f454691164f4309", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4e0a28b45c21e19a87003e274023c6e1ba0dc5b02c52e3d78f454691164f4309", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "4b9596cd62783f9e8dd49ad2b861433c1d4bcacec50699c95a3fa51f478f5b1e", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "4b9596cd62783f9e8dd49ad2b861433c1d4bcacec50699c95a3fa51f478f5b1e", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4e0a28b45c21e19a87003e274023c6e1ba0dc5b02c52e3d78f454691164f4309", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4e0a28b45c21e19a87003e274023c6e1ba0dc5b02c52e3d78f454691164f4309", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "c3d7ad91f8fdcd62b03fda2019103d59c1d8118f9795df183721f1af5cd9f023", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "ca3960289fedefb78fddae61a46f274cd542c0fae6430e38e5407712b09f0546", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "938573bf975a7fec17b77bc3e450d615bae6776a4ce0a2d0054f176865ea2712", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4e0a28b45c21e19a87003e274023c6e1ba0dc5b02c52e3d78f454691164f4309", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4e0a28b45c21e19a87003e274023c6e1ba0dc5b02c52e3d78f454691164f4309", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "4e0a28b45c21e19a87003e274023c6e1ba0dc5b02c52e3d78f454691164f4309", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "5a2e89fee8d9ac9091aa56cd6f3e5894f7b4e1467d4c02388e47640d50be8677", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "4df4b68da4dbcc1222a066f66c29a8c7ce5c192e9daa161e8fdda203abbdaa26", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "506039aa342f8f714200248e35c04656bda4ff49fda99ae3ac2d909ae3950f15", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "4c614e4c72a62ffcdbea2e1540246989a13faa86d1422387992a1e252f58caf0", -"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "03da76840a3e4f3107d711a2fcd7d6623427fdaf7b94d9baadee65cc7b6ecae8", -"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "82160770209673fbde740f14f746a4e51846fb191d1ddd9e02e154ff1b0610c1", -"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "f8121df02bf9186c13623afba4e299db56c0df8e8a6c91706a1aa76ae4939814", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "ffdad16db243c213b79b7a8fe9b7601b3e402ebb3101598e0bb407617b73f374", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0aafacbd2edaf6ecde7abb66931bc1a7950533473efa4fba2950d44958e5ee35", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "547d539861fe7957a20fcc92cad0661653820920a5d912988040ca942601a931", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "58f6f4780b79c8fb24fcf7dc4235e558528a144136c84a140770dc27c896fb1e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "2650674ed342cac63b6d9f8dd5973ad227053581bd3f60f7c06632aa3032c7f6", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4be531e5425c08db18db94987d47d32bcf8f1faffd0f5397c12e587f031fd329", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "ffdad16db243c213b79b7a8fe9b7601b3e402ebb3101598e0bb407617b73f374", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "6512724c75261c9fb57d520f7eea91b8e19365434e96126eef84cd8851f5d2b2", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "266dd272d90c383c0e5c0f884425ce52642e6767f8f5773c7f2a598702f0ad5b", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "2cf4c293b47ce77ed4585bd2ae99c5f50f17deb38bb05e35b7ec37ccb7f6489a", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f885af654e977e3a941c867be902aa2f6d7aa659e795de222fa7326e71238508", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "0803b577e3eefb034dc5cc937f1cbb295fcab5ffb28bf13dadca83faefa7a7e8", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "3c7d1cc678dba5923328f653fd2b4b9bfbdb002f09712d50ee59af6c14f2ca81", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "6512724c75261c9fb57d520f7eea91b8e19365434e96126eef84cd8851f5d2b2", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "9e0c49e45ec198850c0dc63a6b2fe45b9010b239f13f363fc7f4b8aaff760704", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "9e0c49e45ec198850c0dc63a6b2fe45b9010b239f13f363fc7f4b8aaff760704", -"T2B1_de_ethereum-test_signtx.py::test_signtx_fee_info": "15d70ad227e77820edb4de88ccef2fd53749c8dc4d977e137e9b285942009af4", -"T2B1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "bd22990b6a89f1948abbe2af22a1e3f34b84cb446a6aba18e2e89f958c0cadf8", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "1e60f4c098ffe0da45749dfcf74babca47b191718333b0274dc97f7a7ca40e2f", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "420175ecc8ff02bc663b2e45956186ab4b1bb6cbcdf813d8bb24602a79c1bc9d", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "91f8dd5b6c7d5993d0d788e4002b47745f11ac6409f856ff156481736f2a2cf7", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "f22f521874f6ea8835160ab15ea0472585b6a0f8bf998585c252d5bbbf97fd17", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "419a6940c441a6a1a21c3951cd3aa528b4a557f7487b1246a8fd53563174a37c", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "f22f521874f6ea8835160ab15ea0472585b6a0f8bf998585c252d5bbbf97fd17", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "fa1421a963d0bc3aa22557c34153a4b3301c824f7d0cbb84b11e0c278ce8b4cb", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "fa1421a963d0bc3aa22557c34153a4b3301c824f7d0cbb84b11e0c278ce8b4cb", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "c74305eda7c797b66d4b7b8b7b5fb2d4bbadab768321afb2b9bb7cef0996669c", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "83205c6fae094defba26424bc3523c8e6ad94bbb2bc9554549e4eb30437c4292", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "76ca9238fa0f3e0ca84af3dc83517b6a2a23c48ce26b7e0e724e821f602d97b7", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "70623132cf508e398bc8902bae9ea8278aa5483d8c57c1f602d2832734bd42eb", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "5caa270b8c296d98c577f63b7909f77a4bd826dee0f5c70c41ba416c0e7f2ab0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "eb929b349336b77aea232e3ddb4625fba22d6c5f53886203cf19a2091a82505b", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "82e65701fd85d95cc3021faaa57507779f0e4c1125d367baa1d239bc78163c54", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "68b5c0a927d06916e99f645c26b29cf0e9db9e232e11c78a3d489448ee05e2ec", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ba21cac4c5ea933f67e995e1ee654c7e35457065dd4137e4b31294150148f019", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "87349a9f9c841d4285be7176024432055e133f5e82e217f56d5f94d98a7ed13d", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ba21cac4c5ea933f67e995e1ee654c7e35457065dd4137e4b31294150148f019", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f72b30fbbd287ad8a551f974bc55d4e331ae24dc959197362a725edee1b120ad", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f72b30fbbd287ad8a551f974bc55d4e331ae24dc959197362a725edee1b120ad", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "42edbdbe8e5b8efe6af02c09dc9b23664f9beec86c60237846a7144c8188a027", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "464ef92b7f8b4f72ba98b68a81f57a218d6d07c0d9eeccc22f911483d63fddf5", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "b51d389efec73d4ac2361ed4840760eff31dcad5ddb03568f8a87e823492654f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "70623132cf508e398bc8902bae9ea8278aa5483d8c57c1f602d2832734bd42eb", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fc332c34884db71471ac259c89b33a6dd326b6cc79501a97c0ebc948dacb113d", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "90e8255dc39bef427fb8c7791f4592eea9e425c31654df528c232ce9df43b60f", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "582667abf6e0c426c960d56b1c009b0c129f0807e57a51a3b5d3bf5ea0926e74", +"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "2163d99d3e0446d1cc951a0ac433eac709197f4cbdc9f1aaf0b3071582b99bdb", +"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "781664db14e071968be75bdbbaf75d5b5ac891a714ea463e8203f2ee6de864f0", +"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2e7e6be5450280282aeaf3aa092a65f78f8b199962ae564bdabb2e53c2a1d3f2", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "a791dfc72b1704a4184ba0fecef509a6cfb51326f8bc1bb200a5995c008de88f", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "4d212c09a9a88418af901aa4ada3e49ba741d7a6e8e5a21f6e49177a0eeaa32a", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "f572f234b57c336fe188bd2dbc37200dd370ba083f80e602952e22e69c1baded", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "9af311606471ca28a8e81a46a18c3a5e13ddca83de312b01f5d5fa3ea0db37bd", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "2d8641bf478b58743b406cd86c1d659a1087dfced3d218bab2962139a2656b37", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "f0b2430722f735ac858d5dd01520bad89e38a5a0ea46f3b9c501020c5bc51e60", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "a791dfc72b1704a4184ba0fecef509a6cfb51326f8bc1bb200a5995c008de88f", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "01c1075437f01f6ce32dcbbcbfed16cb275d3f7010378cceeeb34c88f8d42dec", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "07ca0862997cc1d84711b77c4ca8d2b7a6f35e00e1a53fe8156075f188f521c2", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "fab1d4a4875887f3b80c8fdb51c0095d77b9fbd01e874afad6f57780eac9300a", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "876d52a988aa1da290d9f2b6d43ba0b568ed932e2e422b766fca56c39a83a81c", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "32c074bf3ed20ce7d02a26986b118457fb4c86bf9c77d43b3af8a2ff0841e723", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f672cd5620ccd557eb070c122cb5876eeaae7785e7d35c2b5bfa43731ff498b6", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "01c1075437f01f6ce32dcbbcbfed16cb275d3f7010378cceeeb34c88f8d42dec", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "835bd06f578a5ce001635730bc3247fc618540ac98f8799b5433941afcca73e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "835bd06f578a5ce001635730bc3247fc618540ac98f8799b5433941afcca73e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx_fee_info": "3ad5448fec7eb3c4554fcec6524ce993c41a9062b0e9b82bf84be3877ac1aa21", +"T2B1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "de0303f303b80539a70056d5bdb5edcdc041d3f15d306a24ab15e1790e2aa25e", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "1a2711c853b4fdfd82d4471f3d3d10a3500044845abb09b8aa1f99a8d0ab5862", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "be37f799d9572009a463444510eacdcee553d81838189bf6a01a898420b45701", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "74844511d315b5959c28a53e21cf4edb45503730736e00ce492273c5b2005645", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "803dc7de29aeebe02fdd518905e51f15121fd7adaf21e8bd595afbb1d00d5c2d", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "11ecbdc24f8d02b89495359d8162cc7bc064d4d8d1353948554fb80826a7c536", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "5a5fa44da5e7e20788c8044d2caebf38dd07ff0f0b8eb0f6399ad2fe02db96bd", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "44ac899e7f7694e4b46f11483d7f306c382d46354613e362ce48d0051ec3a98b", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "3d59aee5c6184354e8e3ea4a6542c56c4d019bd5065caf832110b201887c9f30", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "d58ff8ccabe8a01c55476588af4489d781fd8945624769e13ba5962f3008bf6b", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "09e0af126c9efdf1765f3fdf588beb94d5848f118937152079037b1ded484044", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "4e18dacbc44d7e7051ccc09f9a55c1ea0b13c82cd19a140b9438499d7540db0b", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "983aed909d608f17df60fd10251f5ee659039950adfe7cdcb8529b43b01cc388", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "566013a3c7b25c2f26827ca837217fd7efff57a77d305be685c4cc729ee1b437", @@ -3287,8 +3294,8 @@ "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "7f1a0638446df1eca1c6dab1f23c70e7445f4e5379c2132daf87cf6388d662f2", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "7f1a0638446df1eca1c6dab1f23c70e7445f4e5379c2132daf87cf6388d662f2", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "e6d86d5c4b0be23309fe89546ec73c3a9ff172c6b28644e29ace92185ab321e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "e6d86d5c4b0be23309fe89546ec73c3a9ff172c6b28644e29ace92185ab321e3", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "e2dc808981ae1957209eb6c31db83699c093bf5ecfb6aeb4e4a0cc7a2553ee9a", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "e2dc808981ae1957209eb6c31db83699c093bf5ecfb6aeb4e4a0cc7a2553ee9a", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "57f81d58fdbda91952c124e1533b6f7b53120d54971fd318b33c45d0bf8e7e74", @@ -3349,43 +3356,43 @@ "T2B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "b758fc4fc71eccf2ddebc5271960ca3ec202db8f967ca4202fce497050973763", "T2B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "d6dec70132774f1c4c974115cbeaefe89c4396fc7f9851b3412fe67295acbe24", "T2B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "a89c0eefac55211b6ab03d0c1f12bb628a9a14061c328d1134a7187dcea570bd", -"T2B1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "bfebf48fdd36870d6a8bbd8d25df1c44a857daf93b8c30a88b7acd42db88416d", +"T2B1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "6100e4b473d1bd1b86ab6bd39387d4ff86c446844b8c554f3a12ebc8f5ae43a4", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "19b71b5974bd724114f132771216dd9084d04224a0e7388de8b04ce9f63473c1", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f9e7772bc002247357d4569eba568fb65e8399869178983a67c9594e587c669e", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "b9d3cf6ee75ec2a247735f4a73f9608d6d3d2f3aa7a725c49f9a17732fed5152", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9ae81948eba7ad24e9513aaf00cacc14be9708f48804aa2d850b170a1c7e197f", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4f98fd4a37ae565028c3d295cf28483fb2599176e01f556a11726449d95c3152", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "25dee7b3acb0ba9abfa6df110fc900134fbb8af93f27ecb7dfed506d6eea0ab1", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "cd99b56147e74c77a005cf925ba15410b6e97d011950b56730a13f833c06793a", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e5ccb31937b4d261e6467cc7e1e06faf63bec76addbb7f93ceae6871723e4343", +"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7fe5069ff024837d386c79dae14c3bd86019d56f8d9f1d68852408cdbb9bb908", +"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "11db9c07865a5b675e2a9fe43e5e7e9f57d17839fbfc8e6da1f58470db2122e1", "T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4a0826caf62574b42880b889e8f1a68fb345c0467649d1a7ee7c951dbda1be0d", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7c0a9671ebc9faf99c018d67e8c28052d625601a0353b56417783173d1a6cc2e", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b9ad8bd58d8748eec48cf14ba06add52bb3eeb9489992ce946a2b7fc35a63d79", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e2cba497177dd41a9000a8cca7a6ce10bb2b773e9b83e40c2f1929d57e65120d", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1f1bd65c2ca684a89d8c413d8ceb0fb3e87776ae92faec715c92259c52d4ac44", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "76c2f759a72d630623a0e71b264b0d03f4afe3e72712c80e15f52f2fef8e1f8f", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "a2cd51fcbbd41a47db4e320b593fa5c86c0015e2aa14b52ca0f653cdeaceeb75", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "76c2f759a72d630623a0e71b264b0d03f4afe3e72712c80e15f52f2fef8e1f8f", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "a2cd51fcbbd41a47db4e320b593fa5c86c0015e2aa14b52ca0f653cdeaceeb75", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "ac6ef65e66b41a79be9a40a1e19f4098ea3eaf9903ca52a0e5647408b57a5fee", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "80d1f45ec7bd9a514a235f2b00313c9e8a5803fb002591af5b29496025fdade0", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9916189c912cccfbb4c7a5d13c09f2569cb23b81dd2dd4ac87f14618f6ec1651", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c792cbd77faca25f2ae07cf5fe61b63b651ffac515d24340f225300a3d6b92c5", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d1d84faba6d01cc17c08820fbb256d4d7839ca52a75cd008a6e5bba9885fe838", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "12a8b9e09906e67c4597c3e12ef6340acb34882f54c2ecaaf23b581331425bb9", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "95bb2abb7e3736114fb4d41f97b7eb5d1fe41cff0f38c45c19efb02815f7f38e", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e200766c77f6cac975b3e1311a328a3c19f68e2ab0c2aec3f55a2cd7f446d912", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5362653f9af5f294d170489b849fd1a719e7f8bce1841524ee69fa93641fde8b", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "e200766c77f6cac975b3e1311a328a3c19f68e2ab0c2aec3f55a2cd7f446d912", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "5362653f9af5f294d170489b849fd1a719e7f8bce1841524ee69fa93641fde8b", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "42855d1a57a746273d7e3c00ace31e2f00583e28e7fed60dcce5e75b481b95a5", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "37fc0027f42f5f72b877781c838edeb8cc9bbd20d31cb58518a8d9a0719056b4", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f6ef40c6268390e7d63ededf60240c9395086256d56765fce417f62cc5fbd382", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4a0826caf62574b42880b889e8f1a68fb345c0467649d1a7ee7c951dbda1be0d", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c590d077ede79c994e3ed1065ceedfb387b0972d789b81bf876e7476cb6c7ecd", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "01e3d1eb0935570d6d98d3ed44c9de281fe0fc459e7ac0406d77bd52f18106a9", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "66fd644b505304f8f48dacb1fc4d283b68006fe190458908f3dfe877556f2de0", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0952105b662f343e9f7281b613f6a1b0f0ecdc38bb3314bfbe7dd8a5f3e94146", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "f1248eec6af177c9dddf5a22d58f697fbf70ff581344099ea004d1832b0c4fb3", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "501a4d235daad1e64f454ac8d398c5e953ff3781d090d7eac63819397b8755f6", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "2e16fcd29666698fe971c00a9c92027124640338c821cfb25448f59d5aee60ff", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "8a635afe34d604aa54927f57abdaef573fba1a4875ced51bb589b9a39295b53e", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "e9fcd14c9ca3b04ebcb60353304361038b11ccfe2d9de6c8573d75e060aa4231", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b0a86cb5ee295237c20dcb00d01dede7db96d8b82c9526918539f64af7fb797d", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "ac03c5d6d114645a957ff4a65566827e3fa6307907b30ff637739112f1f161f2", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "51eb8c5ced6ceba8a3b849391741da8cb8bd6becad5ca67913dd434a8065eaec", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2dde05f4c669c489cd861f390b04c7c6fd0cc7cbc6ab9dca493f2d8dec76c76d", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fe2df9fd5c224f4e9c89162a620471904d570ab3c3209b2e31ff794917150de3", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "6b5e849108cd9dc4c6dc9317f5ef850caa9de2b5269c7003a613fce20909c194", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "667b4c449a7530c0e30b5d52d9849bd0bc25dad6e6facd843d22a436c72bd6cd", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d87e15e862a403953fa95152adf31f3293b1b5a26a8492faee847d86017b472c", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "2c1d59bb0c00a9b9d6c221d75b20d1da68ae44d95df3b88f7519c08fefbe4f82", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9526bda931f043d7bd7bb8245fcb69c104a6c33e114c76f229f2130681d56dfb", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "da96726067ace03d9fc65b85ad1b4c4525fcecaea373e4e80f3fd7324c44baa8", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "a9edd95ba75804fcc3b080f993787c5fadfb6f955301d432391f9e3410ba9cc4", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2e89f062073f520ebff605456c02fddf403dfc9cecdcd4713ab9d764c2c14976", +"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e26b841f9f697bc1c981dad7c83ed8d1a33c02be9754edf1cc23bf48b6477d8", +"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "828c14baafb6b05762ecee30b860d5d06d8882747174e050f0baecef347a80c6", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5a5b56dda1730ca30af147c8e5f31c8f8c237b2fd2d57346efb86930a3f82fa", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "3448c150ed1882d622b6b14c061f4c1f55e857cd0342f87da0ae3b5e2fe9330c", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "d233aaed20e872ea427db762bb0810079afb07764a4b9fffad7c389f55bf2b0b", @@ -3393,14 +3400,14 @@ "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0c74a358f517f0469491dacb4d685cb9817f5f93f17b3b835e7a99e513c3b69b", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "5f0cb2e4bf2d598b4b283554fc87fabbfddfc35560a14a078654a1753b7e7bbe", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "2bb23d1da730e7d84093a7ca3c5ef28df922cb88225cef90632e4514a72573d4", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "16d383f7ce236bc1eb209f276ce2244e3793dc6a7219d7154bbe187b44465203", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1cd0a339ebac22a15a297785beddec0bcd9c344fc445c756d50ac5fc5f648186", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "3ddcb3201927cdb389c19d4c658e8c2fb806766531cfcb276f1d16af94342120", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1b99e01ddbca28687c080c9b15de9875ce2f63671feefb1a46c0dc8767f640db", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "cfed53f1ed1b9e0185b4c512bd4a20e52964ab73f401e10cdaa39ed1d3d1d909", -"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "14968c5f61ff5ef8e11931698bae25cbfe1f86fddeee0c11fecc02237754c5d4", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9410d8cfe83c5b387cea36572e13612ba2864ecf8153c3c2add710a3b056dca2", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "eb18bd22c89d094602dfb67996dcb5ffda67439abb6fce9d0a68a847ad21b52e", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "6891faf0797ca9e4b072fb7c7c14e798e8b2a52026b7b0777e71612b470b925e", +"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "720602af0af5376f7c80321d20c3bd5a729d3f145c0baa9fa45927426b7e7d37", +"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ff57495b7aa3367cbf5e1f08df6a01cba9957f0d31ef1ea97bf83fea288eed12", +"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b4d83f8c56a24d86d25a83e80ee9eb052fa7bba089c86b42bfd5b0a8973f5a31", "T2B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "bc6dc32854a0353904129e423494b86509ef7f0c445bdea557103dbb9d81ab03", "T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "24eb52a63b7a471037b1c10582517e003762dcb854c3e643fbe3d7dae334a1f1", "T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "575841dc379c72800dab43db860520c2a96095cdb67480300bb7a4c463f74a88", @@ -3412,8 +3419,8 @@ "T2B1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "17cf8f3a471a4799edc55b52bb6fbef1fc5c4060c2086bbbe154c118a73a5b26", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address_other": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "287e4679ca7442e69e1a79e26551efb27a3d0c495570e2f9b055bb66c505e4bf", -"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e8b327a96e2b50d639b0fc963d6c2edffdf6dfeca3224f8cc38990e28fdf22f4", +"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "8301d934dfcf96c289ceb5d357c9f9d95c7400f8acb7f592732ea540d3c4d06e", +"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b50bb2e085d71751eca1e9e2b208f7ffe511f5e81dbe18fed7d9dbbac4345bc7", "T2B1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "2486947fafac44b8d5304c99adf94e179c39a74e9c4f308e640e35a2648acb9a", "T2B1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "87bdfc1e42ff1b2717f5b46d1d0df46fd1808da6c54e2db11f3fab88932ad131", "T2B1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "72449b70ec9e084a54e98fd5420570f428dee4d77fb191e808e197eef93ca1f3", @@ -3425,7 +3432,7 @@ "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "413fc0ebed06865d06361391a499fdf21a456ae4352834e28dab9ad129bd6b30", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "74c311c9cc84d8cb0e86847c18b6d0b3ffd9f4a74cf4dcd4556e8489911d9062", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "98017a2c65bcf3f20d4cd7bf398790c06a7d987e22894460e5e4ca2d86ac687e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "6aa204a465987fdc60dd6587a4489b1c230cc072c6f9c778ad771e97140ae07a", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "6a0bd13324d34e16626e4c3b2a546da9edff1443f51c826f6908de581b0fe63e", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "4190e52748302cdaa6d90f91970bbc2b0840ab85de33e734f6fc2e499523664a", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "394644ff6856d6736dc08be6e316d7ae5dead8afa130300655b0d2d7791abecd", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e136cfc5345b938ef8266511cdf0b323d83e71f68965b6a3e8e5cb790a0e2865", @@ -3434,24 +3441,25 @@ "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "dc42125b082c806ff49071630ccb81e1f1cb382434720b1528a5d4a5fc922e99", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "30424a8aabd8747abe61804746d34d741f96ec34b6847ec8ae02301beba94247", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "e77f316cc9709e675fa25bb899396ca4aebf6643f5d009c91274fb5a133e3b39", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "3dbacf24e3da888e81d64ea993ecb77deea593b51c41c357aab8b3c0fe721259", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c8c145d3187e3fa6042f65524d4b422b297354b04a7c1d3ee60d85e33545adf1", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "c067360be35e5cc453996d5b85119b0129b88e7acdd889935cc9395c2a2c088e", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "61519c2dde1d7009452b1afa9ea0bbcd606f683eef0d15b62842c721b199888c", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "e84d6748db886c259d9ac38d64aaf2a5c44735ebbd9a76bd75c9ed640fe6e3f9", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "27510e78ffe40e388ff1e15d7c363e3bd8ca281379fab533c849d4cbbab8852f", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "5543f9fc08625c4afa7124da53d172af922779097dccf792647b288f1cc8a9d1", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "e9b0606400fbfcdac7d9d55d8a0e0aec88fce74b77660b3952515f7abe57c454", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "45aef9f07eab03fc9d2ce7f4dd8329ae0a7a0474d9e27771be23a854422a40c0", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "001ad858aab4657ea558a953dd1676024e3612581d031aa90286ae19259245de", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "001ad858aab4657ea558a953dd1676024e3612581d031aa90286ae19259245de", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "0c9f92e7d2cf623cc77b866701621e09ef7ef1b2912debf4df80e9708af70f64", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "0c8349efbf69bd1f52244dda64478e4ccccacaa2062e6723ab1a4287a96538d7", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "582233ccd1c45e81229dd8d27751941a5bb2cad608d77604589e1d82a868bd20", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "929c7b7050bf13c00eb482404b9b8ce0d6bb53b370685a985fe9402a233b7b6d", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8f38a05eb20eaf08a3aaf48c90aee9f7704d98e0257adbca628f37c971a6ccd2", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "1135ea4d66a428afa3a6e7b958f71d702df37135134f93a57bcd8cb006c52686", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "3692cf613598507b4829930a5d0fbe06beae2e5858b08ea86bd16bbd927d45ed", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "f929b1f00bd38a45d09e848d74bc6615caff869b2cb8bc256ab867281fe0171a", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "3c30e02c1d814da35881bd5970f6622d27a9a5a14c23eb58faa289652dbde3dd", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c27c8fef35fe31320113ada60907a6474d416d606c936486f7a9546f464155ae", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "ab0d7973a8bcc0783a7893ac338ca19e81893498973c36232fce316099591e35", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "621b662722c2ae9c77e91a928522cdbe7546d604f01e2eb24905cb5b0ab35c3c", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "1a1fbd88b4afe040a81fc19e7e4f0859565e6370e0ba64be5f81fa71c8299943", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "b5d6d3d84cdd0369a986869fe4c3b58cb86528c559b592527089a84f14d97a4e", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "635bf4167aaf2b39e13394a879959b0d2ce01ac54ccd4ad8d41e8b20d09e9efa", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "00705065bf41fd64e988c5dede3448049c462c8ed2144f99cdde7f0c490c8887", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "c5840c87c87ecb8113d4d4f71f5c619b4e505cfd399059921c1f29bf4554487a", @@ -3462,26 +3470,29 @@ "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "bf3ddbe66fea7defcbae24c5d32086ed2980c5491aa42373fb89b85a0f613182", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "4397276bd1c9ca5264e6984400cd5f4297b80b6430e01b0e8df948b6e91e63e3", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "4c59dd6c797ed6bd88d80dc1add659f746381685ce5c755957266387406bdf5c", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "fdca2faef3f27b17862bfa885fe3e178711d7caf017e8ecfd3a0ca98c61752fd", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "f796cc4352ae9b789fd4e2cfed09d23efa2db7e4a924557fbe7e42b9ec006b11", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "99747cac44322133e6c81fe1685239d5771505f0178ae0d597a4c3ef219458d1", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "92e981bf2bf96f5485d9c966eee2708fce8355d5a0bcf0ab2757548af9ba753f", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "2a50cbbb166fce8bd19ee0f6c308ccc09eb4b0378f6e6ac2ee49d26a0f0a6297", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "cf48b90458a2ef22feae26437166467b54525538844ca5115df2bbc384e6b464", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7894705e74504161f8bbd466dc2c223c3484c34fe1e12a763a901c7b67945b24", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "33ea1bbe18f1525ef82083edc0d27c9f54c620138fe3d8b3eb687a40dfc48655", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "cef2ba4113d206339ff11bf17ee363ac6ef00b1586eaf2c5bb81b360d3e40e4e", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "02aae89471d51cd41024573ffd45485bc478e85c9624c8530c88be368be7941e", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "9f3be6117069f0a5723b592bc77902c8e870b8012fa8eb884c209e2467a65d7b", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "2020efc7ac624dedcde6a143b880d09804e652d255ce39f60c6389bd58d22629", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "698af7bce0d7474c746cfad1aa145857055361b3df07fa9a534285c33bbc662b", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "dca9e6adc31be6d98730835364c0782fe4028ef0ed053dd49c2a72b8528af688", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "8d82a94d1196b202a823ed9952ca0f43d879031143d59500fccd3fb982792346", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "ac1a136b2a897070ad8c10d8d317422bad6e7c1f52b888b35914cedd2b4613b8", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "29f226d0899bb1cf03649997d896e13ad01d1bb190ce4bf9e9ed3861e3a57294", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "386cfbee9023f4a478a198b55e73cec1cb14bc6b6fd44b4e9a6c13b708d83eaa", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "a86ec0b55c83f3daec952dd1434afaa2a9fc4f7d3d8a6479d98423a0d81f85ed", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "8d619dfa95a7423641d030917d34b14f2a68c82f8c57f8b150895ae17088abe6", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "d545c496e52f617193ce02c6569156ac455d549604b16ca465bbe17f10e60418", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "864f4c333516c54dab0179a2e9853ecffa92d9b39ec574ee93491cf8b4d36ae4", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "e2a654080c1840ce96662299fa54acce8e79aa6536be40a94beb93384b225299", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "4348f0ae44f70bcc469a75607502041f9d6a07b04997b5ef6e1ec811bc9565f8", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "c5008f95942b4035690be9e4dfc9efadf659a8012774fd81e9ae70696d562e89", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "545505aecd0aa9f5ab7fb773f21e8e496e306ed813cec49acffecedd6c659dfd", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "7de5213816ca83cf7a3abec9b6238649fe253c5a7b6af7a2483ef3d6897160d2", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "bd98b9c98667ad54e1355fc0af5db4425710b38c5e48085c2628e18fbfe8df47", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "4e07f0c8c0510dbaf5df668f792126c1d82490cf1c7521ca51e19d94ad924f2a", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "c7217e546be4889416a2ff7af98a9605bbc84848fc535f22253e468a98506efa", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "097808599534867691f0d4d051d8dacfcfdf932e2827c2eca25245700dafa525", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "69741b5357ffb09920dbb4b1a127427097eac2078a93239563eb1ae6dcedd216", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "45d1b801d40d08fac1fca2b0b747917efbde3b0274217e60fa4882d675f1f777", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "75424ab4d3c9f5a8d48f95b51279981fab664847942308682eba553c5a27c580", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "b617d4bc8792605e8aa65205af2fbdc8fc754de95fb5f0bbf62e0ca4d0e1b2b1", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "031d93250874761e12720aa6a6c6e27c42dab139945bd28d4630a87fc65855d0", @@ -3505,41 +3516,41 @@ "T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "836c9c5508424e54a96a2435be71742151555d83ed0a0712bd72d6604460a586", "T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "e1ff3474c55826fa526852c3d2930d9664e544dc4c303064a5a265f837dab21f", "T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "d6bdf14b7bf4249bf8ec5295ba456de010376fefabdd3ff2ef2af09ddabaf915", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "213b04e7fe8f0915cc1d23705434594ece32ec0772fe3e38be0fb996ae1a5990", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "4ad594c7b19429ffe6fe0d05e15a4cab3489bb2459202509646b4ea738810f72", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "ecea289fc101d76c88a9cc82547bcf8f511008fb2c1c06d7c5a4e0e2b93ab27d", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "c35789cfce7e0baaab557c591c981d6c68711b761887194fe9ac74944f48bdbe", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "2d361fd12b162a7230778c520b74d96b5c14bbafddd08b914dcd7009814b2f2c", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "ed3760644815527781c3c5eecb40a6243f0f3c686b79fbf742beea9b9eed79a9", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "3aaede0d5d8b9d9900ec5c400fca697b1721990fcd019755efa3844bccbff2e8", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "4c98f8f83243305e3f17b685523fab6f21a394dde647783226057003a1a3d46a", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "89d034b6bab1264ebfad70cff38cada3e72e7e6832214c9d423df59793e71ed5", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2e006c6ef7e7e765b2f016ce21983e31cf247a9b8a3b43200d819c08e65529d0", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "679f71e9b72d74fb48e8e3c2eeecd17e5a672ecced0bcb2401af463a496a51a9", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "12d525c1e49811c8a7631fd310bfd3e5eac9ebd38bb743aef47c3dd71f0b3d75", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "8108deea9e312df5762ed227b3e2b79599344301223bc7296e05c2aaa253b211", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "29053269590dcf842118bf066ece1b51d10125d4779cfecbd64a357aef15c221", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "137fdfe9a227d4adfd98912b228cbc790215e131c29f77449b2144bac15b480c", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "6ff50fe1525f62a948b9211fa1b05ecf29002e4fc34c5576be84afc5b5907a70", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "a926278265b92d13a52c601b29c2319d09a0371709d72d7dcf1287ef4d98a080", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "eac2e72c3037f04ef196b79a7816403ce0b482e85b9008884100222fc5aa6355", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d42dba4f8dd21e8a83afc13c85a4f492dc989d9073c83f96a4e734e8463a4aed", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "f82525d306540504c3e87c6c9e5aa1c52eb91312a4d83319e8ecf391c1601823", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "7fa380261d75c62f6c52776ee7313ea2eeec37f9774c607af66a18deaac6819d", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "e0982c99abc3bbb64aa686bc941f35f47cdd24d4ae6bb8650ab682c739f641dc", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "c1f9bef5e2059eebed764f6695d3161d4a05ba7d46f5dc4a612104018fb396ca", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "c3af3b0b6156a87892661d6478a377a44bf3a85a20e90f9ca5f8a722b6243b7b", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "aee6093566892f6b90c1ad0de8abd0f3a077c1715a90efc101e4a999ea71ce9f", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "9f175acd17985b3798b9f65d5b10eb363b42c1275f7db4be3e61b98d0eb9d5bd", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5f0eb92e8526d327d7d50a453a5cda846480d534862808a081e2ab26c7bf3bfb", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "61bb3e245f4bba3d34a10eaa591bd8ab340f47b1e89fb9cdd1b81acfe8738911", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "7dfbda3c704a290252fc406c53ce38704c81883b4790ae327ebb0923566dccb7", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "a926278265b92d13a52c601b29c2319d09a0371709d72d7dcf1287ef4d98a080", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "0b935985b22ada7144910bd5f0d62f885b75d7e15f64eadd809bc0e4cf4f89d6", -"T2B1_de_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "0096e8182a0e8b438e1e55e49f5e4dc71872c486341c801f147b46a06cb3c69c", -"T2B1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "0096e8182a0e8b438e1e55e49f5e4dc71872c486341c801f147b46a06cb3c69c", -"T2B1_de_test_authenticate_device.py::test_authenticate_device[]": "0096e8182a0e8b438e1e55e49f5e4dc71872c486341c801f147b46a06cb3c69c", -"T2B1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "0096e8182a0e8b438e1e55e49f5e4dc71872c486341c801f147b46a06cb3c69c", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "3bf35c40d97d043ac346ec4f1af6b5d5e86333a9dfc7fdcd8fd5594a6127eefc", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "308d54884f637fb163c6d495db88c9e094ce95b3ca9b85d98960afb499098601", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d584f77d7b19d4210f032493e1063286608eff050b31677e7535c5894c9a1913", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "bfbc8c1ba4259d5564aa4eab7fc719d94da8a6f6bff49faa9cfe6f0716d9e9a3", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "4d9958f05ac7f7e5c591c6d7ed54f46760c4f67d957ad7aad33e1206fe7cf900", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "090b53af94e8c7e9f6ff650e9c765b76fc04a11abc11b843853ecc992401ebbe", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "08a338962a97e969369ed4260cdddb644950ba215f23ee5e6ef41620363c15c0", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "7c1fa8c604386e5caf2cdb31e9ca433b3b9ac94ccb4631dc9387e1ffffe88091", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c4eeee93e80f323241c92ad5c078d1f2542fb8358627a243686e81dc41680bac", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "124d2db2f307428f5ea8cd3893ad639a41071d8acbfb1df3af0e3de0657158b1", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "fb1653df81a0591a7b5d0bb45f9c0f7694f7f4b5e2ff4a66b03600d371ac6b69", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "cf4417d89a0a5036b36e6fb711403b80a05e4116d2e0f3c90eefbcd7038457af", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f9019cdba4e5a0dc816b2b0965b048ff9c71e2d39ef52683fa9b566f4afce48a", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "058a44a0cbfd0a5162cf95c9b08d2271f633b867709f43bbe948ee9f448e9002", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "80617ee4730290c18e1f41e926638c5f9bd417e7ddcdf46765f291912bdef033", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "1a3335d10fe7cf2f3e8b08f539d2b1f07a72775bfc3b015ac8f391cbf07e2006", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "1345806e51e1a28079169477c041a12e58b24ca1a870cdb84fce58a02354c3da", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "1cf718b75c8decf83d4dbe2c92ad8ad80053932862d128f42ddb59110cde00e6", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "89849dab2d97e8862fb0727e5193dd01249227a2e484812a44fe6c44c381712f", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d6b2253ed95dfc593f383450f12581e60e55fe98c12fd873e9400f2ce17fa178", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "edf40f1f27c4d1ff429da8d980b05e44fa5d0690a9d81dd3270fc139e1165c0d", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "a6059f00148e44c78494a5ca94a903edcd479d648d697cc73a9f640623ae12c1", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "c843c0fb0979c127648310552faba9819884274e5ee3d830572bd14897b1d49e", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "f6b8b37f3b616e8ad6a8c869cd70f645e6f362992ea171eb305696dfa8767336", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "01333e6640104da2df813a6682c1ca4d12d0c9106bf4fc1d0bc613b7c589a50f", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "e6a15129af2beae1bf0f1428ab5da0417fc7ba0710725d1589b25cf6880d2d0a", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "dc4bcce9ac14c70700b5998834342e887d194959eef294828bd9faa6a4f904fe", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6a54d587b8b9c8780857819d6e0fc82af74b9b45273cc03dc16c349b871d235b", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "c446139cc7ebf56da02f258f6a27663c111bd5e56f54b7d3d7d2c85470a9b5b2", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "1345806e51e1a28079169477c041a12e58b24ca1a870cdb84fce58a02354c3da", +"T2B1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "c9a8cb0c921699bd90637950c710193a1a4b4abd0a415a9c91980b641f91abab", +"T2B1_de_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", +"T2B1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", +"T2B1_de_test_authenticate_device.py::test_authenticate_device[]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", +"T2B1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", "T2B1_de_test_autolock.py::test_apply_auto_lock_delay": "d00d4b470ec6816171d31372e42312a6f7984c14ab2848f0dbc2f280fc0f2549", "T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", "T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", @@ -3569,7 +3580,7 @@ "T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "df9a4b97537328e6029e29c7bc3a09b8132c4ae0f96614b370b69db2d9525c1f", "T2B1_de_test_cancel.py::test_cancel_on_paginated": "f07b0add089fd36888908a7dbe30859ae04e0f1427af8c8d88865bd9c1bdca5c", "T2B1_de_test_debuglink.py::test_softlock_instability": "2f3d6d49f89438c57cb46590be9e7e17e34d353f26b8b3fbbaef5b6a34b878d4", -"T2B1_de_test_firmware_hash.py::test_firmware_hash_emu": "7588c63d8abf02c7bcf047f8e4979ed4a043743fb67c727742def7d5bb3a6a26", +"T2B1_de_test_firmware_hash.py::test_firmware_hash_emu": "b64812ac9c7f3d3f34118ae559f44c9727e02409211003966ea5475b026225d8", "T2B1_de_test_firmware_hash.py::test_firmware_hash_hw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_language.py::test_error_invalid_data_hash": "001546a6d7d6fd797f5d358a85afbb653ab3dba0ee15650b38981149460e33ad", "T2B1_de_test_language.py::test_error_invalid_data_length": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", @@ -3578,12 +3589,12 @@ "T2B1_de_test_language.py::test_error_too_long": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", "T2B1_de_test_language.py::test_error_version_mismatch": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", "T2B1_de_test_language.py::test_full_language_change[cs]": "589c12e07e0d2053ff943f143b7f49e813933d6da88cbd728bed6f8bd4cb245b", -"T2B1_de_test_language.py::test_full_language_change[de]": "13bb144baa30ebd38e167c452d78a0b265923e24f46b18c3903dabe3aa79e620", +"T2B1_de_test_language.py::test_full_language_change[de]": "a916293d096cff0f5476d3f3a5c8041332e190cd18f93aec196bc90cb8c519c9", "T2B1_de_test_language.py::test_full_language_change[en]": "a35bc4501de8bae861d757421e17440a21f7d4f3ce1a56bfadabe9e5b467e4a2", "T2B1_de_test_language.py::test_full_language_change[es]": "2fd72d78dd1d1176ac6aecdfd3ea790aa2aafac0d705b406d44c0e9c9545002c", "T2B1_de_test_language.py::test_full_language_change[fr]": "fda57886e4c371f3219a29dd54b01de43e96bbb94a6fcc7d6c9e1bd1e7e30ace", "T2B1_de_test_language.py::test_header_trailing_data": "8d546f37251d84f6493b199cb84219d818def9318c908e3fb7feaba788862028", -"T2B1_de_test_language.py::test_language_is_removed_after_wipe": "57eacf6ebb19d99eb75d2d49328291e9ae63e74ed3dce00382730516a36c9e1d", +"T2B1_de_test_language.py::test_language_is_removed_after_wipe": "c0cf6626c33349cb62e1bfeaa324aeca236f7e2bd2c846ebbff217aa2a95fca4", "T2B1_de_test_language.py::test_reject_update": "c030eaa1b84ee548a68f0e20ad74201cbbeea1f09095dfafe0465020f3215a7a", "T2B1_de_test_language.py::test_silent_first_install[False-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", "T2B1_de_test_language.py::test_silent_first_install[None-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", @@ -3593,9 +3604,9 @@ "T2B1_de_test_language.py::test_switch_from_english_not_silent": "734df403a42da192b49b0bfc990db9f4b84e118c0b678da7e159e6a0c2a86896", "T2B1_de_test_language.py::test_switch_language": "e922d8763c8d4c700a92727e4bdf3b7ad962d1980512c38e66e1aad8979b116d", "T2B1_de_test_language.py::test_translations_renders_on_screen": "76682d785587a89e97813092dd09f407f8cbc8c11845f84d7b891fc25d21ad0e", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "30b469a1fb9e03d651dd0e07f705e7e7f834adaf03d06972c3c464a095820650", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "10695655e2026fae50529e65dd58f2b21ed52fb9ac8df0d074c98e63bb849624", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "a2b3419b59013d8161cae12de8ad2ba38e89ffb5288c9fb115ec51a906857916", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "876c1685a5b5cb8104af1bf2d79234bfe7e8451bc67de9e609da658efa1c62df", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "e5180625f1534c840329c2f46c44445d942a2051135bf8270504b43e2abc8012", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5d88ca231c16a760f9db2005d7cdb24ed282ff7377026a947e023523654b2971", "T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", "T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", "T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", @@ -3611,25 +3622,28 @@ "T2B1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3a61ff16444f595b749035d1c87fd56fe217287fc27df6997bd9726e612e9601", "T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", "T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1daf88009dbbf5286edd8f01d4470c79de3acb5e3940d03fbb585e99c603051f", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "69b01226a1179c5e71f0dc78b1970b4edcfd8453e7263fe049d9f5070aa4c806", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "c643d597cd0b41b47a733c0442258cfee300bf2a4e7782126a1de8efc62bd0b4", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6462fb726b6250d3f97d7b9807c5e93c92ba4e3cc4cf206b6e058a7245957207", "T2B1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c925fcea96ab652c5cba68ecf4c6cfeb069da7eed29037211d72301b0e34fbb0", "T2B1_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", "T2B1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "65b60d339b3b24e1b6aae435fb70c86bb31a949ca2d45dc479bc1083695d5515", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6dab3ec48ac1c6820d03e3aff05df6f322de4d68a6e4505f326750d8145b3d85", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0c88c1506e0d80e3440ba7f6069e43fcf35dc3ed296c8310f6638d11cdc7dc93", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1325026b5ec3b3bc60237082d1b58b6611b799ab54e1964e225d795e52e4fff4", "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5ed7a9edbef7af20347d0d89bfd78e877c19e28c59a0460d61c9a30b4efe2eca", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "34a50ea1bfc22a96d8bab4e66f1fd3e492f3fb30d122998d307a39af472aa736", -"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "1d77b62621c930ba9fe063b045d173f32bf86cc19ce399567e71a3e78f1b8b2a", -"T2B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "a4e05ca3bc7c2ef0e4badf9aa426d38de8139276a60fb21c93af82ca3b7c25a1", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "dfcba29ac3a43714f69bc8dd0bc2fc2d05ce60c9ef2a0b4aa5a53c07180a44cc", +"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "3729a5e5d8f15d945f0d59609cabe677c3beedec8f2aa541f2558307323f01c6", +"T2B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "5ef3dddc3cc1974a4e15a13350a7959192319bf40f5bf2a1b989b3b3d4165192", "T2B1_de_test_msg_changepin_t2.py::test_change_pin": "3df9a2c360f67026a145d74b059ccfb8ae353859eb14e84d66b3eb28bdb4af1e", "T2B1_de_test_msg_changepin_t2.py::test_remove_pin": "4c1dbafc3b02ad5ffc5f5404f79b1c56efde82e2e1a7ceab44dddb6544e94efd", -"T2B1_de_test_msg_changepin_t2.py::test_set_failed": "9d6f22660fec6cdbf4b68fc2230bd6ca8d78e72930d80e95df3f874878dca086", -"T2B1_de_test_msg_changepin_t2.py::test_set_pin": "3080907564b3bbaa3d7125733fa1b817c10139a19d0b2b956afb39ba106050ad", +"T2B1_de_test_msg_changepin_t2.py::test_set_failed": "7a66af5eaf3ad7fa6a77a65a7962c81da50ac048320681727b9a9ae397b7d9bd", +"T2B1_de_test_msg_changepin_t2.py::test_set_pin": "b4aa6064d8f7824e034bc7a1f46103c1529d9de3a2bb83d70a5bbc67be2547cd", "T2B1_de_test_msg_loaddevice.py::test_load_device_1": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", "T2B1_de_test_msg_loaddevice.py::test_load_device_2": "ad70b931c3ba980fd4937bac5de58cf8fe4ae3a6dd7c95135916be2bce9d32f1", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", "T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "2c6e982dac10da8bba0ba793b225a5518216467da203d1ba0eaa96afc76500c8", -"T2B1_de_test_msg_ping.py::test_ping": "c5d2fa0882792a553ba2b2ee2a1f4cca2a5e00d30b1b3dec4c95ce2717b38690", +"T2B1_de_test_msg_ping.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "091523cdac2db517c52b84a4d31f61d03e28adcf9f1000dea2f5f7dd3fa297b7", "T2B1_de_test_msg_wipedevice.py::test_wipe_device": "e385b141ce2b606f086a4c1c6644e60bfb31e2c72c5f6cc3d8c677f996c7b523", "T2B1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a24c1e200c1edf8b2c442f6bc7ae48055b1afe9d317f2d74f56f732a62a09616", @@ -3649,9 +3663,9 @@ "T2B1_de_test_protection_levels.py::test_passphrase_cached": "d2467c07fd34ffad1ff6c5887af6ed74bde2ac95953e290c1ca1a7bcf22abfc8", "T2B1_de_test_protection_levels.py::test_passphrase_reporting[False]": "cb69fbc5fbba1d2a680c8545e4c5ec5e0ec8060083233324ef3b5c032d8b8f44", "T2B1_de_test_protection_levels.py::test_passphrase_reporting[True]": "a33cac608acbc9b7c37d3579e84a3b67b4429708091d06609b43e647cf5ac028", -"T2B1_de_test_protection_levels.py::test_ping": "c5d2fa0882792a553ba2b2ee2a1f4cca2a5e00d30b1b3dec4c95ce2717b38690", +"T2B1_de_test_protection_levels.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_protection_levels.py::test_sign_message": "a9ca29d1384881e99377451ee8b0ff9d354b3d31bdbb24eba53aa3cde7611b96", -"T2B1_de_test_protection_levels.py::test_signtx": "a0714c21ed425acdb62d01ceadb2a7976c7aa12474c8a48f1c0ea9084f4f3dc2", +"T2B1_de_test_protection_levels.py::test_signtx": "fefa5e44135cd6bf81e1b50a81e8ef2ec6e78c3bdb8be12188bc16f26cf0241e", "T2B1_de_test_protection_levels.py::test_unlocked": "eb7f30e5a5194d575f621b11a5b3adcae50692b7a683fc070eef692b95879f0b", "T2B1_de_test_protection_levels.py::test_verify_message_t2": "a5f0fe7d3aa6bb746e3037d780f492f29e6226e499de5567903f3d1e353ac608", "T2B1_de_test_protection_levels.py::test_wipe_device": "8c5ca43ea512e8f466ebc493e13f6ab2e303aace2684e81855e47d722c44c368", @@ -3680,29 +3694,29 @@ "T2B1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "9bf1088d861d3ad90ee92f771bc41912341c099c36b35428ef6fa3f7c77dfd98", "T2B1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "0be3c3194bbc0365f9294d8a29717ea2b07d663dfd78e148700686421ecda3fd", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "6c247f0dc5c0843d76f4f7635ccb16314973e398b6538ff39faf5a2fe0e48e8f", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "0d65b432edcd2d4b0d1cdc82ea4bbb308ebab705f723bed27d6b7ced4acb2f8e", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "f2c2e8c940d218aeac8b2654f9269fe82f49b5f6d8f0cbb3371b27bc52115ef9", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "679fc9103a446e14f5966f22961e22e3ee8ae23a2fcdec87e7a85b2a0f15cbde", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "37b8b2b01fd8b11e2058206d3630c90f01fb634ad3bf3da3d334a7d716ec442a", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "994df55fe266bb73337ad51c333bc29907549691646cb5f7be571580384cc1c7", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "b7c9f9608fa6719d9c28c80da4ece8c747a25300a174e5ecbb2e1c0ff69d003b", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "788821bec49a2963ba9ef75ce6550480ca997efce100d7f69ae1c8a36155cb1c", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "02e4277a78f9dfe1e57c5ecdf9493accb084a4a8609158ceee9ef32b6da437ec", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "3e69d5636450d06772c1921dec2abf564c3850636852c80c7679243c5faec05c", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "86c779fe1d2c20cfbd07a74c7af6e9753d6fd2cb06e551bf37db0779e7fbb66a", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "48db865348356ac24a823d1b167aba9304810bf7bb32b3defea080b72a483bc7", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "b72b4c01163b6257cce1a4bcd02acbf7854a3de69a9b0ef9d3aa53773c38826d", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e8bbc64f602f34d73a65dcc8db33a801340276e087f694cad794f6f2c400a459", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "4ad474b86c8e3c9cc590948661fc939779a26dca594262ec6b172537e7de6d91", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e473fe43f87d09e01f2409e698d64af82ddc6a35f422baa2ac6711d6be524e29", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "2d3d803273252b8aad3aa6e3e1b8e244275e99c8c192f603121d080c83e85e14", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e393deea1ef1a4bf96fb0f32f5749379cb3a08efab8bfbfbac01ccc97c665a5c", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ccf203d423eb90251551efe1c10d2282db13dd8de93519dc3124fb0ba0b53eaa", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5d1a50d706b6845196fc81f59bec2c950d618cbe722458239c97d1ef0ad87b0c", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "5989449edf48f13e12d3fa146eed357c0d45aed832f6ad86b49d46d47c80061f", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "66429d35a7432665c9170f0ff4becd7494ca84fe8cf27567efc3f7e657910292", "T2B1_de_webauthn-test_msg_webauthn.py::test_add_remove": "ed9db521f9bb579c35ed8df8421ed84df45121649d99ea04b071da0fd76ea57d", "T2B1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "8f269d9d7ae6eb993d01a74df141d055e67682d2bd8683ab3aaf3310f0302985", -"T2B1_de_zcash-test_sign_tx.py::test_external_presigned": "3f85e289463deda50f2c767a784a9ba1d02a5fa9e6e9e5e268f33dd66885b602", -"T2B1_de_zcash-test_sign_tx.py::test_one_two": "8863e3e2edc27ccacbc384fde3525429535395b1fa4dad55ddba99ef1985a4b7", +"T2B1_de_zcash-test_sign_tx.py::test_external_presigned": "b10849bd341489f6b484ed89b82139b2e753df1538854c466e7f67e4b46aaee0", +"T2B1_de_zcash-test_sign_tx.py::test_one_two": "b19226c574395edd4d28df6473fc220c31237cd185d27506c4aa1929f75cbf07", "T2B1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_zcash-test_sign_tx.py::test_send_to_multisig": "9fc58522b3aacd4a1970b5edd473fdabc072f141855e0f766248c18e25158682", -"T2B1_de_zcash-test_sign_tx.py::test_spend_multisig": "62a87f2b9efe6ef4057657e123cd884ec0e1c625f57912ed1d23d445f555c5e4", -"T2B1_de_zcash-test_sign_tx.py::test_spend_v4_input": "5c398a3cb7db9f43cc014e3f328de62acfda7bb6eda1a4794fb8c83dec846fda", -"T2B1_de_zcash-test_sign_tx.py::test_spend_v5_input": "5db188560975387613a657c544f65ce96b5c0df64bbddbbdae4ac3f7c0ed67fb", -"T2B1_de_zcash-test_sign_tx.py::test_unified_address": "a53a47f133c45253ca6f85c86f1df1649ae679297ab7bb0a392d38638d1b0b08", +"T2B1_de_zcash-test_sign_tx.py::test_send_to_multisig": "26f1fab83d1ec347d40ba36aeca1904392f0c6fc23ed2897ae0df92a112b8f59", +"T2B1_de_zcash-test_sign_tx.py::test_spend_multisig": "01932ce5f53316960199cd06565b59c23a7e8c5e7b629e8f0e83633c3c5985d9", +"T2B1_de_zcash-test_sign_tx.py::test_spend_v4_input": "052b14c1908052569789f57d6f502a0ac635e772752d2c9c0bb6aef1f29d0bef", +"T2B1_de_zcash-test_sign_tx.py::test_spend_v5_input": "85f68cbc54fd6cb47b38408a93b905d1084e60b8ff57ff647624655c18626e17", +"T2B1_de_zcash-test_sign_tx.py::test_unified_address": "5e78fbd305b3bc45bd1ebf4833afdefc402f05df7716eb1978262533fe3c0603", "T2B1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "e76ef483e6b929ff74ab0425708a86264ba8d6b58f3e6f669e3c8d794d02b580", "T2B1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "56868c4176799e51ced92154e6d1525565b68b062d91ef52503def0c6c8fba06", @@ -5086,11 +5100,11 @@ "T2B1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "77c92cb466ced8659d1033da0fb876c0dd8f4dfa826160f9077a7ca728ed4fef", "T2B1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "0877a1818fbe901149223fcc9f6477e221a4e75670ec0ae88587dc08ccf098e9", "T2B1_es_binance-test_get_public_key.py::test_binance_get_public_key": "5e0fffd73cdd2553018bd0f80eeda990f9845ac0ebcf17a530255beceab45a8a", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "6a036c7a00b909ef1206c06382ca9212769b53e459098bf064245355e8ceaeca", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "084b15b721a3f3219599539fa7230f91419275987cd99df4f20e0b2df7ffa00e", +"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "5c9d4a277a91bac643c6141cba71d51f26f4262bcea654fa5b20d2dd1f38805c", +"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "687c2d33e1eada9442d129d31121d8e6c7525a2bcdbe2fbc4ee96a5d627e95e7", "T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "908da5010ff89991c3fe45954749e23010437bdd6b5a48b42264226185d8d292", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "6a036c7a00b909ef1206c06382ca9212769b53e459098bf064245355e8ceaeca", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "084b15b721a3f3219599539fa7230f91419275987cd99df4f20e0b2df7ffa00e", +"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "5c9d4a277a91bac643c6141cba71d51f26f4262bcea654fa5b20d2dd1f38805c", +"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "687c2d33e1eada9442d129d31121d8e6c7525a2bcdbe2fbc4ee96a5d627e95e7", "T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "908da5010ff89991c3fe45954749e23010437bdd6b5a48b42264226185d8d292", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "a1bb58cd3f498dd61978c53b3d0009f89291d6db236f4491e706953921ecb04a", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "610b680fc768e0ea25d782a3158d904ab55880e347a159460bc520bfdf71770b", @@ -5151,14 +5165,14 @@ "T2B1_es_bitcoin-test_getaddress.py::test_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_bch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_bch_multisig": "9b4fa7219fe75f42caa23ca9dd99ee33b07925976102fb3db1b1fd69a7546f9f", +"T2B1_es_bitcoin-test_getaddress.py::test_bch_multisig": "a9c2a2999f7ea99eb06961fa6b1d84ed65dc43cc8a48a2cc5baabdfb7efc5f97", "T2B1_es_bitcoin-test_getaddress.py::test_btc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_crw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_elements": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_grs": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_invalid_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_ltc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_multisig": "36d0770809d9969f75bc75d340e66176d3969378bfd201a3feccdeefd88230a6", +"T2B1_es_bitcoin-test_getaddress.py::test_multisig": "e4ccc3954dd47a047b534099b85a0d96a90f8e412f5b14dfdb5e3eaedf9da68f", "T2B1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "e8754753c40568313b9f8d41ab993ba8c2dfc734f221fe9e84d09995ec1884fd", "T2B1_es_bitcoin-test_getaddress.py::test_public_ckd": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -5210,14 +5224,14 @@ "T2B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "18ec20882980d77781793c4bbb31697f8a336e1eaf119864d5c636eab07f2784", "T2B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "021b0d4199d247bbd1a1f33c3e74051eacbddeb8ec33104a5c72de93a4149c7e", "T2B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "d8c4bdd457480e9f517883c135a6f8e7324e6c4d1ba756762aa22c9223acee29", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "52e05dd5281843cbcfc707b7d8eacec214c912307fe57c5b99294716aeeecf54", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "5c7479947f7e3bc194c346a22ebc10de069938c26bb64d31fb1a347271cb2ad0", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "e2ccec722d6e84b0c7b6624568a31c20583734bad70be4017fb4060a89cb7151", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "e2ccec722d6e84b0c7b6624568a31c20583734bad70be4017fb4060a89cb7151", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "54a50c8fb583e7725a7ce694ea472d8220d412d82fc51001c494d83b41d3dabc", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "76d544fbbd8f3a5826dc879e0169f110136f22c6939870d4f6d75ac8652c355d", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "040c7ef8b1a023e166d81826b4f3aee878e4d6991f0403eb3a4f2e129ddaf477", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "a98b5d033c09c9276f234641b40f694fa68e09a993af893446b6cb6d131ec4ff", +"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "c9ee3f63ee0006eb7ae2c051e2bd9606a900506b91cf5508b362181dc7bdd425", +"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "4039d34db4be3b629b1552add822f6eabf379aa8974c68725412a4626cd6019d", +"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "17411e319a72be0fe4b2154353f6343c57c2d0ce7a4d38bf14ff19d42f0af6eb", +"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "17411e319a72be0fe4b2154353f6343c57c2d0ce7a4d38bf14ff19d42f0af6eb", +"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "982fba8854f3561e472ee4fc4c2ce114b2cb9310e5e29ceec60b193bfbc79c19", +"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "8e782706608fb062b635c4daaea308182e79275d900261a73cb5f8d7e823822b", +"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "dd17633206a2ae4ef9b68bd14830180c2dececc23887d711e10afba8ef665957", +"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "20da309c91662c63ffa21b6ec22178e7bd9d58eaa7fc9953c8a72c65809abf6f", "T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "ebbd51b92c8623d8a987fa5845ffdd21dfb6061709b5e3dfb2f6b8a7b8bd93aa", "T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c211e1f589bbf44917f780207e1dca8d4a25d4586c3e0a85e3c06d6d5008528b", "T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "acfc35968929bd8ed898bb93da05da4a830442ca76b5c4baf69eeb5034f3af54", @@ -5282,8 +5296,8 @@ "T2B1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "21732c5fa31be490a9215b64bfdb8b9a4d5c754e46e46a94a9d55e1d260a86ba", "T2B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "4ebe7113381f62efb6656fb39046b100bdb8bc76f6537692080a790e1f306da5", "T2B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "55329755657397077bf47b8176f2552025cb98af4fe3320403dfc102bad81368", -"T2B1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "a628d482327020056f83490ed53722a6a6f46ed51838800bee51f71fbe77504f", -"T2B1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "cada4abc6012e93ca4004baff4746bc4ed61317b8e904a1796be1ba0af941f50", +"T2B1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "7bcf17b85c7887e07e2d06a3ce713c7265565fd48371574bd59a05e500daae27", +"T2B1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "614fafe356d56a300212c34869214bca3a59c0a325d3da11d37293fa9d161066", "T2B1_es_bitcoin-test_multisig.py::test_15_of_15": "1265663b5856c64ef1fb790859e379df7e7c9f2afeeb348dc85f8b53185cbbe3", "T2B1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "0860b63d49046d3b24db0e7e40349fd3cda3c4e074aa5c2520bf52e302f29094", "T2B1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "4e777be36e3dc8a2baa083b6021e10a97e6e642bd938d6d57a1fc2df3786b6d8", @@ -5307,14 +5321,14 @@ "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "ecf12fd33c711493a7320a7c4a76da42279d406bec20b45b6753263b6ae517e4", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "42c224196cb707a62effe0fd55de67fdfededa396ad6573772f75987c65f75f7", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "5c064bf14ca98a09413765ff2466d279445d282f93e3bb57917fcf263d1dad86", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "062abbb95512202d7e7a71e6c97a546883c13bb597cdb2f89524846cc3d93202", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "3ce51cdc5b512b480798a2790327e2963886592f56a158002153d728a00e42a8", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "831d9db6577ea64a0bbc2a100efa99b0b33bd4e8473c690873b26d94b7ce36b7", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "f6976a987cd6ef872882a9f07477d1befdc40d8a63c53169b4fd041db892a6f3", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "41b018371ca2739ae7152def9f5af58f71012aad2d503dccbf37fc127513aeba", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "28cfdcf779353339980c66e666861670972f6b9a96b1ed60980045017e8c7c26", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "281d13f7a2cfe964bcdd5d996abd4a9bb8cf0351d40170809e52dd5e3279c5ed", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "697a8136ad710d5d733c05ab34824a056eb9f7ec518051a9419b3909b19cc0eb", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "cf6d63a2f6ae29515951dffd509a1d5d40ad765620a31865743f9fd648da6a0d", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "b8cc9f0081a7ebf1255dee2e12e62747e94772dc45d4fec877d87d78ff661000", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "09fd6703925ed5fe1b987591b4c3518ae7430a7d434537146f515965caa4f196", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "d0c39d54a2214cadd43df01154b242932db1548d67f49b6ffce3b0aa1fb6065c", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "f033b8ccc38811cfb1c0199387d47db55a8647404bcbd9a9df44c082f0f63648", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a94f69aeadd2b75935d396a3ce267c89f73b1d975847585825d435942925907c", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "46dbe8a4546c26085dde1495d2392b9929ed521f5313aafd5e6cd35a7dc57838", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "4619a0eec7484acd5f0055c6abba7faabf59e8e7296ad003015c0b03337c9d83", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -5326,13 +5340,13 @@ "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b3ce35a320948ac240fb1c6a1265dc3ff8aeded37952ea19e01f2e9dc6e5d40b", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "e8fabc62ac646951d5039333fe5ed9fb58f4da9f9395fce5f26612db84ee0333", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ccdc69f0ecccc3fcb537d95e0dba9292f31d038c70bbb075552d08d1cf647983", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "95224f320f88d424ee562f3177b2025d0536a6060d4970af17938f47a309beb4", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "e4155ec2dff54c9f39aef1ac8f8e308375f572c6126f683608d514e8d303f613", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "ce64f61c538254442a74c1e9ad326a94fd3aa1e647c329a9ab368379a96075fc", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "fb3e8308151f1d289edd9ba47fc0a953bfa24d514c053893ea7f0e3a55f11774", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7c9186c404b2b78925a97b32924de5de9087524a3e272ae13713f6625e7cf7bf", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6eb849ab2246c1eec2e568b87dc8be7c30fe2060a33a309a4fff65b0060dcd67", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "cdcb70379f882a24b1707ec8ac1391e1af4c90ad5bab0024d8d5bff23a789a92", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "dcb299a567bcb364cb40f1002a74964e5fa699c4b5a6ac395210c17abb636fd2", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "946bd1fae7a7875e88b9ca43497d9d1cdd0b0ddae9a912d446fb6526a2f9ee5d", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "a8f6b1e313d46cd5b2f2e407951de8af44cdde42d4e87912ebd809dd0ec8b851", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "58b67ad8d39c44d9624418d3d105cdb69bfd76eff472a58a680fcc98ee1c3874", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "bc685e1994d85231b5b3c84e0cb2e5b2e0598cc93e8cfe3cb626be168d3f4565", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d971e3514cab3bdb4694a4580529500425e485225992c7e85afbc3caae0b187f", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d386911a570a344cee3c48b32175e5ec656a76ec1ec6fb580f93df0774851b5d", @@ -5363,35 +5377,35 @@ "T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "2ac632b05a0b249a112c97f3908e58a3902f1627aa678ed22ee444f0de577844", "T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "7308a5db6eed0a4c7c4aa312ffe655f7106bdb151bd546cca4bcdd6c1ffa938d", "T2B1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "6a463cb0b3c869f54806451501ed4b51d2a6fc0b2056af3f756e44043005fee6", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "18106bd630d3874b79dd4ae6fc30eb520315f2cb80d4d92f859cbb25096b0aff", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "a87e029241f930f00a40e822122d739467c3b408d1f16495ce5e1f0c7ad2bc62", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "3ac3873f1f8c725391529fb1231b92a3ca7da608af95e3abbeab318c369683f9", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "f0557aeb22921f8fb59a4c012332af98267521ec34efb51e2a47ca43a195a9d9", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "99e92e47dac5b664bf23c9543996b29b7e5cb4afa4f99aba4eed5e978c3a0c47", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "a833ffd2a9b78d5b4d41d4150e71e1ce2e36aca899b2e68125f29bf7c7e90d96", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "0b4883662474c80cb09f68120f1d85afbc398301e9cdd1f9e0a38060067c9778", +"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "d7705bb82c0d801b8a245de6a10c82042a47868fd42e416c83454f2230fe6f63", +"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "dd2a4e6215f9ada53fc938b062e5d185a14c4e49fd59a854db53f22f193f0a83", +"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "62998885190a38c2182c30e464d78390214fef0c55ccc763acbc513a73d7793d", +"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "43d794498da5b9b81bca3d11653680d4f1d1920f21120fdcad5b041c022f1d89", +"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "2e5a833b3854def17bae9fa748a00803e812bf805b2ad8b46c1c505364055981", +"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "a1b84f31d4c2b157abf6772c27e80513630ccc865f0c781517de3ec8e4ec508c", +"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "74fe66ea2a2f56c9747456101373b3eba91351c38e5c61f2679e581375e50cd5", "T2B1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "a753898a470cc483a1428e20268ff5e0835c0f44cf799838a6e788eaf79118cf", "T2B1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "00835d10e3b199889b13553fbcf1cb76836c0bcfd6f43959fe3ee769e1d251d9", "T2B1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "10381cd2f4a37497a53c39c55e08c494647cfa59aec43b36a94b1659fb474c1f", "T2B1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "a09579e1f8a2a4ccc2706618ef3a8730da80057ff2a618cfae5157959b95e3d4", "T2B1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "a09579e1f8a2a4ccc2706618ef3a8730da80057ff2a618cfae5157959b95e3d4", -"T2B1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "32def79cd36e63ca10ef2c370f6758d7b372a9e2a1404fca49ed16e51ede7817", -"T2B1_es_bitcoin-test_signtx.py::test_fee_high_warning": "f3c67d2d7d21d2ec0678dff7b0959d5a4e1c6e0272f5535afc11ec7da1440111", +"T2B1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "213a380d6c7d24f9dc9b6b06ecc06ada13fc6a78b2edf5529d300f1e9ce916a4", +"T2B1_es_bitcoin-test_signtx.py::test_fee_high_warning": "f568e19547200ab4f99140ba2ea45726671ac09e79b497055dabb38b6f67fb38", "T2B1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx.py::test_information": "40084672634d939f382aa1f61628fa078657633fe84e644d2c21b9431c70274a", "T2B1_es_bitcoin-test_signtx.py::test_information_cancel": "9eb01212a51c235373f09ab405763b0ba6a97fd7320ea70a024c04af2b91e109", -"T2B1_es_bitcoin-test_signtx.py::test_information_mixed": "620227e32e1914d900a816be1215560bdbb86e1a04d8a3b91c10dc82fb0e3c83", +"T2B1_es_bitcoin-test_signtx.py::test_information_mixed": "1956674e348b5edccebdba0e33ee25a03adacb37bdf5f06c2f0c2ef009930a33", "T2B1_es_bitcoin-test_signtx.py::test_information_replacement": "ff56a2236ca5d8ec886d0099f230bc8307e9b8f18695c28dd8570d4e18bbdb24", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "29db0373e9bb98723e245dbcecdb84ecfa863b0e53fd6cdc64e3f7ea99e8b062", +"T2B1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "3a055b8132546c05daa2c3b9051218467f589d743788302fa47cdc348921580e", "T2B1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "5bf5593e35759cd3b28a9abbaa0410f772d464cd2fdf9128f156e66ce1084146", "T2B1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "55d179f12a6ec198b5103ad104c6b78c06587fdf74e132091f75272a9c8307e1", "T2B1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7f916278695301f6a2a8f24ccc13f76c082497ccfe6d39131f10b5d01080ccc9", "T2B1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "34e49294153891f3b2173f6376ec25ed126be4370ceef5c25a2ad0af71caf38e", "T2B1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bfba9736c226ad919ea981587c4464cd2f9b90f98619f717c99e0fbd6473f9bf", -"T2B1_es_bitcoin-test_signtx.py::test_lots_of_change": "6e03e34ba4c6bc9acffb4c1348b0a23c1079293a15f302dfa1aae94c94085b8c", +"T2B1_es_bitcoin-test_signtx.py::test_lots_of_change": "678b617222053e84deaab29d25345c356607c4a1c13077579a749689a2f19597", "T2B1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "7b87c32c5d044a085e89e5130473b5b65bec8b93913b724aee9dbd48d9fce37e", "T2B1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "7381a47c5d91d6f54b880d1f64f54583501d664f78f4a49b8f3e109454a139c5", "T2B1_es_bitcoin-test_signtx.py::test_not_enough_funds": "840d6312c3cd3b88481e62f99d0908ae0cb235de5f59838c6dfa18831ce894ef", @@ -5412,7 +5426,7 @@ "T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx.py::test_spend_coinbase": "ea2009f58e7a060cdc8a3aff8acc770d3174544b85bc052d35c129b6e24f9c1c", "T2B1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "7f5649186927646fdd1c93b931db5f868415da977175b832a85454c4f2dc4a06", -"T2B1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "e5b509728f869c82398fecedd639f2aff034ef292a444a203bf400a84f89bd1b", +"T2B1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "9162084ced48317676a39c92df42f06f7aee222c2f9a110579766d73e7a7b6f8", "T2B1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "a09579e1f8a2a4ccc2706618ef3a8730da80057ff2a618cfae5157959b95e3d4", "T2B1_es_bitcoin-test_signtx.py::test_two_changes": "d90df2cc6aa6e5c981a661036d8d51d642c5dda6b3fb31163a7a4ab65455a5d8", "T2B1_es_bitcoin-test_signtx.py::test_two_two": "523b758db7ea5ab83dd1b98dc3c8ea1f193e8ffa6351e381932014f5a20055ce", @@ -5429,24 +5443,24 @@ "T2B1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "3a7488bf1e81ec6a72d7cf693c2d56849ba48f888948806d63019412dcdddb81", "T2B1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "adc653de9b25713b357d07b599aba9acf542bb5ad7132e4695cee3b7c05f273a", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "fa63e3ae87f81352a46e480d0ce1f65e45aa97f79de14994a434867c88bba3d1", +"T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "3bdcda2faa3f8abe51489f7a59de0f7443798234ec98af2bf33235585a39b40e", "T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "8344c6e3ad81970ee8c8772163ac407b798c331c43b8fb374099028191a9ecbd", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "12b13821023cd91444d9c575497677691d5276394a5ad52b72f1bb096a7420d1", +"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "3a65dc9d42ae98cd980e08efcc79fc7bfe22f86a13f2ee201466ba54f9bc5b29", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b83ef8b909473d1c5bf4d4c6cee8b1895b7d8441fa0401f6046951abea47bdf1", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ed1e67c17013c3ea366c5586b4eeaef26acdf9760b9515eace42b439490a69d3", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "627a26a1a0b34fb846c2c71c46d219df1141e811f9c73a13dd8b6750e8ff67bf", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "1ff5ce3bfada2d4db22234c11482832fa84ace9a7549e0124ce66a407ec96b18", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "1dbf4dbed791bbf7c6ad2ddd38d9a44622f6ab37c9ec6eb7bd6416d6518fcb87", +"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "8a966734159f118544058694406e33bd0f2e91bbcb4a07941e08098a9c022684", "T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "3d65074d5deba29fbc34d5ebe3c656542302f15ecab2e891cf882dd0bc43a673", "T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "dbb36104f7dad2d3e8dc1f81e52ad1da0ccbda7fc1166c62822bf829ca88040c", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "8c31d39c1a1b2c9b96ae6512f4b56e38a10b89eaf2ac98750dbecb5670ce9622", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "f4eed6803fbcda1aac996dffadca59133a2897d0701aca0813fd70b4218afcd0", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "8c31d39c1a1b2c9b96ae6512f4b56e38a10b89eaf2ac98750dbecb5670ce9622", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "7d2e8f5d7e74eabe31b660d18656b691ce7591ae0be6959fa0868b7e6afae688", +"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "f6cc64b35ed0ec8a230291410754a7df1be83561a592d10d77a10ff2ec6562c5", +"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "85799c27fbcae113cf9ab6d97e535ae3c90baebc61638ccb7d2f3832c5e2ad98", +"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "f6cc64b35ed0ec8a230291410754a7df1be83561a592d10d77a10ff2ec6562c5", +"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "84c0dccd7a0542f7ba8630b3eea1882425db142796dc206bdefa79f70db3f1b1", "T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "649943388f4e78369d850f96a7a87ebacacb9b62ef78d6bb85b700593413d49e", "T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "90954ee12f793e78b5950e176d8c46927c408dc37259d669f1b3114c6f98837f", @@ -5464,10 +5478,10 @@ "T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "14c0b79db8283ad1522404536e322cb83142b20039052f33c67b6c81abfc9a49", "T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "14c0b79db8283ad1522404536e322cb83142b20039052f33c67b6c81abfc9a49", "T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "14c0b79db8283ad1522404536e322cb83142b20039052f33c67b6c81abfc9a49", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "86202026bb8d289cb60cca143e3a07d4af9312971210d4e58e6709cc19dc4b4d", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "86202026bb8d289cb60cca143e3a07d4af9312971210d4e58e6709cc19dc4b4d", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "86202026bb8d289cb60cca143e3a07d4af9312971210d4e58e6709cc19dc4b4d", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "86202026bb8d289cb60cca143e3a07d4af9312971210d4e58e6709cc19dc4b4d", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d055a650c682d37454b234606bef6e32ce2c5e378c65ba3ab2f43890681d4710", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d055a650c682d37454b234606bef6e32ce2c5e378c65ba3ab2f43890681d4710", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d055a650c682d37454b234606bef6e32ce2c5e378c65ba3ab2f43890681d4710", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d055a650c682d37454b234606bef6e32ce2c5e378c65ba3ab2f43890681d4710", "T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", @@ -5487,14 +5501,14 @@ "T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", "T2B1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "a369b25651895e8ef28ede6aef94b14b06f9545b91bc815d8caece7bb203d108", "T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "fc6522757d106b6ef57f06662af2390c4ec689080b6e5985f976104be79e78d9", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b028f123d6c1580b0d23649ffb541144e47df74701b0213b7aa23610b95e37ba", +"T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "f3fbbab9d5b9b70384465299b21e38d4bbb9fbe7dfcbbdd15feb7fe3953a71bc", "T2B1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "dc7779e091ff477a30901677b19e62f217e89f36058544025537ed15cf4643a1", "T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c66d369d2115d53b85f1cfe23049a9f1c7bbb689467885c6f8c91e81a6c9251e", "T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "8ee6b691b0eacefb955c04b0fd5020206158637ffa7d8741b124d9df4c03fe69", "T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "17a4ad6ea396918b5fe9b1bc81b529d9728e7c7237cd0c731c97e883ac105b4b", "T2B1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d8fbdc4ee282ab4336d6ae8a6d4c69ff335736777bcfc2c29aad2956aa97cd2a", "T2B1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "edf1971e3bce1c1b7ba3c5ea7e2557ad71b5c487c33997a22ca771d1921da2ee", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "493a1262e414053676dfa0a5546fb115f0c097a0588e4e056278c8d7973146c1", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "40341dad2aa1038ee05ab56852f67fc2d2d350a0c141fdb36fb4a74af479788b", "T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "231f791bd6106862d67676dcc4cbf6eeccc38177ad8ab144f3b6eb63fa16c3b5", "T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "16d0f971eaaf7ffdc7c8b03234e4434c7d6be1be879ad2c7d8652fb8b415b077", "T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "533d44f74dba4799058ffe3d68984f2cd656ad86f6ae9befca5311079019578e", @@ -5504,12 +5518,12 @@ "T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "405ee2903854b28b3bc65f5dcdbcb621c25bf8376f6eb008235cbab1527c1f30", "T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a2d00bce994aeafddbafcc08ba839a1cc7249bdbbc9719194f7a8ddf69969afd", "T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "dc34989461411a2be5575454455bd134876ad0273e7a96d5d675f1bb690a648b", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "15d5448051a1d133b9cf4f45fa55c6dfb66ecdfba75d2aa09c0c4513b16f94d7", +"T2B1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "e53c4d38892f98b1c5a5fafe04f6b45e4249c2fef81d2803e7332d62b16dacc1", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "d0258c53ecfef3e3a0a31cb61ab8ff690deb0e92e0c46c91362511f4ad3c51f1", +"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "074e03ce72cfc5ecf0693981d6b480aae692e737cabd1f51d746e053b310c040", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "46a661e5e162a950c65c13b162b3531c3e9e633cbe0cdcd43dc4ce307be82ca0", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "cc2e06a4704de4039b447f84dd5491f2b60d65951d07bcce859cdcae012a529b", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2481875d175534d56163cd698bdb0f506eb4518f0c56ae4a24d2768435d274ee", @@ -5541,32 +5555,32 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "de0eb620ee80f6f94d0f033b9ca5192ec001e7f367138c5c9e213dea41c1f3ef", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c6c03097dcbe5f2b7e7ac690296cb3b0b0b7b10a70167f8a889217e3c4a6d77c", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6c4bd02c5ae7f1901e07206a3d921e03476890e68253748e7a919e882985793", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "9cdf50c7863b16436064ba7197b98c2859732df4b79d990c8bced0a79b3e7f43", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "16ba220e00055809b9973ae7f80793dd5a9041487f1d0a19c68f06b784fe5e02", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "844fa4556c853ec27192adc126f10dc17a6186d0d19eb6f8ffa74241c145a370", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "ce1c02d43cf9d0ba8e9f01561c00ee4a1c072fab25ea2d86b864176886d86f6e", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "062d8d211f28e1a125ff1b5ea8d0033ced93a414371c0081232b52454dda479d", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d437e93313f2d8a15c9e68aeb3635c7c1072f9e4912e5fbe797104a943fcad04", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "38de876a57f3ba9d3e9facab308ff4b28a52f231fcb47bd2f07994bce812d454", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "487bc1c567d4ecc260979e8abe46c22a27588147437901c85e24d98f2c3fbd8b", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "c1c361caf5ee320eedc9dbc8649f7ce7f51d558dac39fdbf0077918aa2bfa454", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "1153ac6af7b2bba5ba8b2e0d5a2748a4f5f4dc5015bb4b1e352b2c703706e016", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "1164ea0d1ef4b99dbd7571d0c4891e1145f8590b0dfe08cf4f33262884061e19", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "20d327e80ad55f70f0109deb5e3d4154a9e4dd09f54ec6666aa8432b623d9303", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "70b97c300a73075d651f46e5415c2e8076df417d02058ff078b41123ce653641", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "d5fd5486efea795cbdbf0d8d9e97ff8ba17951c62c7172a2830b2c68a22deeb0", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2cc7be371f0db5475625d676cbb80a4c68eb9f190775338f51cca881e6796f34", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "558c116f658f8b9afea10d2c5f56068b3859d0947988813a9e756dd4276ff24c", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "cb2a54d7ce20b3962f3a783c85e6053623b08ee1e507266fef0c98ddbc9cb5a4", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "97f64304ccc6ea1ba780f8a3bbe83ff8db5fccdc8235a72770406b2c64cff565", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "2aaf8aad691a1c2c2ffb77771057edbe4dc4b2d7bf8037ef68f2c1654e8a5b01", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "bd1594ab91c33791df0f2f4a42c7d5a8b4b85dede9b91de6bc608c2fd1421ecb", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "0959aaf0dbbddc3a3f3e9cfb9276f1d828cd91ca7f940877ad892d6e6767dd9b", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7b788e2f6449e60e6289fe550560f5b176ae48d4d161f37c11819679855883d5", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "d8b4f47ea8eebff20c19bb6f905929ac099df6665b23df00eed5fbb6074351f0", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "ab58bf34cf98d9f63c372aa4610cc5f89dd1fc12cc7cfbfd6b632f447f052474", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d75545d8736519d6c2c10050dd638ad8f6b19c09164542bcaa7a639b8c7ca7ed", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "d10d60abd2c73ba5ca7d9d6aac89605bf4aa1f478e684afde0c1b70b4677456d", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "e8ea42162dfb27c025132842140b528da391a8e60b3bc310dc9fe4ceddb8d017", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "56105e3899f71ebaf772590e26048845a84e35446980390ac072efc6a431ad4a", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3ed4240459623efe07795cf76017650acbd6d53c990877e8e7a3c67f3e503e78", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "66a2f05663cbda9f6fb23ac8804fcaa391d7d853d960e0cbc7d4739ce7e1d1fb", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "4913c899b33c495d402f09bcf7633904adbe4821cf8c3b2fe11e2fce6771b90b", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "62fbd38ae271f5a76af52ac6c5b5a2cc4051798bcbde0677506b9e9dcdd8a032", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "6683795dc2e24631be49a83a21523f52bfdecb81eb947e7beced6a8a4290d45e", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "366848e4441030a2ec13a8f7e48ef9ae548d7cf87e031cddeef55fb9631260c5", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "287d9371e6eb8aea05a8cad6669e7d2c3224bb42585b89d9d631e81334f82ffc", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "f01a3222310cf4b1204da198ac06dfc84ebdf70d16f9f186715b3b34966b4320", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "9a26bc4b0d616993900578130ca40b74581c421de1e8e58d0632cd5b8f5edaa8", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "64d78229af97f9f41896d47ade2cf6d1f44d74d0c9b5bcdd2157a8a87507366c", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "95abcfd5705ae0ee55dd59cddc3e8e9ed0ffb36e94bc1af759600f8622ef1934", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "f0b3b93cd0351d585a4ddf9c6cdaf39ae030b00f9566f49539d2d76c9bc8357e", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "743db1209a8100a03c68b9efaacb104b9b6a1650b4c49cb0c74b00cf6c3a05a8", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "968bb7cbd0d1bf085944b816b79956dcc38a12a5330c543336bafb3574508e90", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b3db521ea0173e39f3b93c8e49ff2223ea5ba3535e927ec7ce8b2999897e67f0", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "06a8bf4390cde635bc8a021c23c7ae92002862977a2da81588bd8e77d9298ada", @@ -5581,32 +5595,32 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "150693653c7cae42419cb30d9d14223dee1155b8039631727e61a689c9002cef", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "dce20451897cc1d5a824d3cacf375307752c83d2ca5659cfce305849cfbdb1cf", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "63228f42518d18790cf9976f712ce3c22b50d86d9b7539132b6d5ce8e2ec949c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "e4803ea4a11c04666d7dbb6ca3a8828af73f942e97c9927602802a5712102b44", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "87366a291640d9756975a5ec630ced4169f9fee24ef62e38676369c8656b2901", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "11172c0bdf2fa09ea286f477cb4dd40ca264f93ff01bf35e922d35c03515b514", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "860325effa72a0837fdc9b7bc21965367610c325961f42401fe880c1f9ff2486", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "cadfd85dc9b23bd3b0bbf16d370fbf6c798b624680619cc1351504b55baa09f8", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "bf511d3e10c76d2cd29e263bb18feaed73364d899be63ca28e0199241fe3bf9f", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ad01d89ceaf01a75f93b206ff0ff30671c032c3fc1310ee84c56d9d4d0e79571", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bc6db05b88c37cc1e86447f181fc0503dcf782bfe52d258a039716c35cd6d7d8", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "8d4ca0d986871a9ef2ec62b05b7d1c8eec4310d254ad131e4ec2eb704b61e73a", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "c4a23dcde7091a5a523f8403933ea0e2eaa030f1997987aeb80a0e706342a38c", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "01c766e398945165669a3c0a678ce54c6c72c064ce9b28237d40d6e8aab5ecb5", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "a047b5e0d055fd27bb1aa48dbbbb74522466720c603f944aed848a1bdbc4c81f", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "13a572dd62932d2ab16b3735b15db6d8d7c198a77d8120526084e5bd8ae7ba97", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "77282abe499d8fc3da49c2d590fe5c1495df8bd2936fe78803ca588f08ab964c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "7a6e0a2d01504e663278b28d3e5d9b97eeb664eb0e94241b8a34d0e765ad713f", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "cd555eb7f0e24bec4d8d61d3044683ca87c0df5f810de8b60c5916aa9cf9eefa", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "f8f775e180ea9b573da38f29e0b0643f708b804660ac8c51c9aa43ee1510b62a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "35e3267864fb3cece798f64d2ae19130fd81fadf3e23e07996f477d9147e6ccc", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "c20bd76a95f608f062d5bccaff7a8e8f5b3acfa260b31ca01cb77081d008804a", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "8df1f63072fe2aa0488b27fa93bf7ed1e006813f92e8a144cbe999ca70c7714b", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "fecd7c21fccf1d21b9cd7f84dc723596860b97cac387bcdfb118d3f1d70c6aaa", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "ff42a49aeba489b0dc7e164a987f4d230dc335e327adf7112d4e0e1a8d624fa6", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "bdf358c19d193ef9e167970efa920f88b2f7029dc6e924e6621dd604618549ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "f6d785ed41f117617e2c04562605ba346002f09a63136dcb504dc7e0515a1b22", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "c4d3806334e0f2526dd2c373d8034165124ef228b0c784bdc3536c9d09e63963", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "afe3f15f7bf13d0ec3ce70d8a2de4432b0c8581ae612ba23951794beb5bab91e", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "c5c95c313222a15f839e688b6a1bb69deee8d8940e0dd0190ae133dbeb84b1b3", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "24049397a9488fd8bcb09e37206cb0683d466cd986c6ca9cda0c1c555bd3972f", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "a7f5aa1601355ebb4d3ffad0920d0316fd57a8a719de1e83ee3be809386b10e7", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "18891be9a0620ce6b3c543bc3f44d4086a2e6567acca8f3c32eb6731a845f2b9", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "493f905bdfd5f8b8ac4525667b1bb41c2bbded2d240cd1d31dacddebca31709b", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "fdfdad16a52a67e0ee6df6289d1feef6595e4fcb86ba76917a23dc36a0f9deae", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "5d626c01d18dc3aed35ead0bac3c752efa92f6a4d66f55adcbeb8d610290ef8f", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "4f3cf6952c4c0e295fc8b192dbae4f60b67dbda59a3a763eb775d718579afbbb", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "58750eb3b091800a8a0e749d5f33ce657d9efad3b130022f0503895ae63366fa", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "8614c5b5c579d712eab13c0fda03919796698f73706ba07a06df16a3d90b5635", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "868e4861591789efaa59e5df584b90459ae229218d0ad94590a56c510949e133", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "cdc063cc825b5f3922543ec02d37324599d6ca9ec362ca72e02bc2b5424422ce", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "f9ab8f18d1f217e588e0d68f18df359aea9afe82dd3f77c79d3746661b85b3e5", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ebfefe248e51d33871e3e6de775de16c9624efdb31936c7030b14a1fdef25b63", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ef715afac35227b1d860be377efad158ce68ec175ac3873ec5573c82a01d2a65", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "6364dcb96857bb8ca4da148aa19b7a41848e3927769b14ed44cfa1eb3aeb26ed", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "6d3e3a1e4cada403f3f40e00f0b922002a47552dc9340d4731429e336594d734", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c11edbed71840642257e4e6ca99b6aa0577b4c1112cf87d703a308ad02c1723a", @@ -5638,18 +5652,18 @@ "T2B1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_cardano-test_derivations.py::test_ledger_available_always": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "65e86cdc5cad6f03bb12b48ed55aac0197a48c59c3d098313716c5955fdd946b", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "f1c27c002b07bb091df351c8cb286996c2bc9cf9ddac86e91eebe37da30f4a40", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a0cea388c654320020cec13e7cb4654fd5ac23ea3789bc1c1794bae05519d3da", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "107cc58fc9988f4ced5f528f4384a00dea6c2892d1fe78f5c28e87bd6c3197dd", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "d9c0d196149dc2e1531b49d445a020b60bbaec4b2d55371e2ff0a847a68bde90", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "074c194190b9c8aa0de393e00f2526168f20805cc43a52d42e0261c971d8b897", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "35d5834a1daf54476666dfe7fff49686b5e816a8408cddb081201bbcd4899b09", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8cf86c472d9946b8a6c40485cafdcccc07a6e2687d7944194a7a01dc952924cd", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "1e871ee77d49d4163ca54debc8717540c417bb1d03235b2b35736acba95ea83b", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "a6b750cbfd671b98becdb71ab71844a152cb22e5d1227b43ce2546a647a4fb74", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "239ad7c1830dacb8a0a032501928845765d47ef9659ea16f747924c90a592be9", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "5bfda29d95f2ce8a477e265e8d91c90ae006b717a0d84db325de0dcea90d45e2", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "aa47440bafdc1501d85443b321db2070dbaee088f8192145b0eff318f96653f5", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0fe8f666b0c5a499c04322299fc9e223a1aff9b9818df8749a4f8c48ac84e884", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "c0c63616ab3bb6e0ef44cef2eec337b46ebc9f3a2cbb1e0f4ea736a58f2edacf", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "507f10341d98dc0d1f37e7dfd6424d5c08dd36f10858ca378a10ff9f4550d141", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "8232665a384894c8aa6bdda4b3a2995489374e958e96f023b8b3db0c7140e757", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "b8e134278d91377c6a0b4485e152d2eeb5487c4cec560968302af35139285a1c", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "e0f0151e214cb372ae865ec048adc8a975cf3763191d56a1ffb51cf791dd7e02", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "07a28e4d6a492ba8e85441fe6f7bde27893d8cc2c30a1241c492988794df34c7", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "373418858d89fc52006072eae9d589ec93f18bfa1147d2a7a84411c9db5e8f43", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "8cb9f8e8f31a25efe41d438559e06c7e0c7961485bb3f8046819df1debe9564f", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "756f830c19e46e426c9dc0ea1f9b08ea6f928646af6f3c56d04a9e94fbb93be4", +"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "486f1c9416328651700ba1dd3096dc7424e8a05300a681194086044e13b1b5f5", "T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "b3920827bef507ac8ad13b4ec58e4e8e927791e222c4f42579602798e0d09644", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b5902937268fc3aa0b0244ecdb97b125cd2d3e59bba955ff0c5a7f016e76f8", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6f3b6169e3fc48f40b46bf83cf21287b5f839e21fb9e874c4ab32c9c84aa723d", @@ -5683,54 +5697,54 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "54f9771ad8f05e29ec4fbb55ec6ba9d6bfbd21c861c866f6b71e4579350a79ae", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "3f084045c00d5bac93ed3246fd3642d20046158562ebd3926cf402f611593218", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "9d5250ad197830488826619b14eaf9ee6895f5e42f2ce20d60ef073f0c5df91e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "2df232465ced5d6250bef2f8e994cfa9acc04f8991f5cc33045e4d760101f028", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "93e17d58551736f294180439e5bfe7a16fd507dc4774b2c8fbf349486c9680f9", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "aa80b7b83080bd783ab39868f2f56383389a1cce5e63b60f7f73ec07cb437e33", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "8b951d1e14916013bfaa84c47f2fc5cfadc938fc559ced86159ff949f7d63a76", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "5aeb7c33d8d3fb30d40ea52bba6207e18614dfd308c4bb4385f7428633915aef", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "edd3e326371a40e2d071bb47a01ad5690689e0b31a5c0357f38ba191c20686f7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "8afd11ac63da6be525bf3298c8e6f984107b03dcd7be0fd5e97dd0c3dd22e6c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "2b1a1e4f1e8a92505446ec22fc12cf4bfcff35f861284d18c22ffea46d28d4e3", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "4fc6c825eecd7bacaa5e40c6be9bc4c75e31f6494a755eb2623015043d51f205", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "da03445c6d1388bcbc5ee2535869ee9782e7d3f62092a5ebfbddb201578141c1", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "b09e1acae30b4570ee8c5cf0376b92d99a8870018430c78d18d6f0567b75da30", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "6f67d5bd70e704414988c27b4206712ee30a7cd842e58323d29b2253fc916373", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2efc6b206fe6fc1ac657a8957d6199ceba0711f5a1dc47540d4a1d37c5c9460a", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "b6a3100290ade2dcced325117f43436e391f3b045056a1d583c13d71e4da61c6", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "57ca452b4e87ad83d51bbd5d33b656ac4037f7f5115d253820aab88a343322c6", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b672e35054e05a0231831a8bef870483b561e7a24e094c074ac0cc8905f6b1a7", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "4e03269c876471994b1276c39d5e317ebe89f8a46228b37c94749305be8721fc", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "978157919f44e997b0f07bad3e9acb6dabc3ef224cdcb5e0e8442b60deb88349", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "346764f6698e4019f77927d598ba2bffebef7d084663bcd42984719e91761391", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "486aea496ffd13f11a08a2ab87b94b0bfc5f48930435b921c8e418b31b744594", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "3953e067f41feb6b1826621b0f0c0c3b457723b1e9ebf0934807be8c82161c82", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6600a1fda4e5dd224ab7bb7eaa6cd977c7ef2a9042aa45d2abc6c8c56a1274b1", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e880a5884a20a4d38b057f211fdcef9345dafe5c67cf972046f5bd1b3579ddc6", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "8f0ca78de95cd1e2901102450ef6ff0bd9b2b832591a84a6e925d1b9c9ea6ddd", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5cdf0d039cdece483d13618e075580b5016e712bbfdc6a834aef67cdb550d21f", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "46624c0f71176cbd346ddae51d1b747d44e25bf753f04ace9139660bfa0c9024", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dbe4341aa6aa90ed924405436438860815c25d9f99c7404e375db595164b6932", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "13fdf548bd6bf37717a3dfffe64216f7f6b17eb02e4850658411edff525fc2e2", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "66735fd89b7769e8fc94629f441c0786bc821ae7773ea9f0aaaa6f3b3328d303", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "3a1ee9faab273f914c7a6176cd9dbe05154632550ff6062f0331a286d5ab284b", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "1b03411e7a18c7fa6066ad7cfe446a8d524a6799a365cd24396d975f2e4d53fb", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "1b23ef54c18dd42497d4565a274db83ab25b361703582c981ae2cad462ab6da5", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "fc4b7e57179540205b2aa2243f2736dafa5c6a144f24588d0db0374d512c9d04", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "780dc151ae3124fac75d56e593b12c6d0e39c857b68c19a6065cdf3ce93eb216", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "c2f68c043e10b4c7c9171c399b101a5007e04a54678fe39ba485f69d1477411f", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f2af062bec638cc21fb45f2949f8c65d8315061a9a5eb48ce4508caee199fa97", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "308b822c16737af30accce9876b3cbcea8f4d851d9f6c07836eb2c4fb5dcedd6", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e39f722fd6f6a23e2d0b95e50e07cc3cf9ab591769733d5f14d32bfe77f91bf2", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "883ea7bd5d54f4f50ed5c0dd65ab1f93d94be7369ba1a8d943af03e8b8def16e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "1d522b1e2ca693c20a473c9a55a230c0d6b88a0a34ea8c913bbfe25adb4b3063", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "3b31af269ab0aad4ffb5abe29797fb5e5de32bded72ac720ca8b0cb1ee649979", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "02859e175709b135e4f6acee11582a3771adbf3a6783f4f2459bc43fc318d8d7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "9e5aaac6c0f54df025990748137ce54d77a3e88f8a4b0a3addb8fa24d02484e6", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "0d5dc5696576466219fac3acc4e3d406aa1c6c62b2155db9d7f80461d95ffd34", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "a3b3771229e0eff18058932016aa971b8a85b4a4910ca3f2e9c13b37cff20b02", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "886491fa3862ee345f7e5998778c0c037b91d1a11db470919e6a4ad714f2b85f", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "9d05c3a3434ff3698f8485d28601bfc65e4a541b5be50e4428abcd2d47659b8f", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "ac2e4b774a5542b1ba7a219154e3cf1c677417fedf95ff93e0cf4add584dccb1", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "53f37d349369558344a94be3a20c7ea82b5394d52008eba28c55c070dbe97061", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "dee15424375ecb6e5a86cb34e92604c1b9e394340dd2b05a408e0d80e5912501", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a74b6abf42627aabfebb4847d1210def39cddda933a2b9516d7221f047e5e65e", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "85d4fd114e7ec656d60bfadd75a244acbca0386a3d49587b2ce85b98b5130e54", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7d4d213c683a518f02ed712a4d5be0c740c0fc38818f9c37b82d6a19203a12b9", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "45dbf281aea988f368e0cd98273ba75b1bdf4ab82db98f2a2b89b7092d79fad5", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "c71ca04cf884c0958b5b26659df368298befafee5faa92754b66d878a53a97d5", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "af03f4e6ba4a68e994fec97691ea567958e61d501726147dfb9804a0e1b5de22", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "1aaedb6e35c38e69494869ec0a183f3b5f3084d5f41737435825ad0c6f89504b", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a41ac286ffef907e5fc2f444fd4a9d032674f8c462d2c863d710e8e932946963", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "a4b06ea9fce28a99c2a231ed5c43f902a07094098a6f625fa79cd11b772dc366", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "e407c3945419f2c9228ec666198caea7679884d89a809adb0d726318c50d4013", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "b143bd1708511211f02349a3d463efd0522ed5b040ca3a267a5286df0ae9a5e2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "fae5c8a7131b9b5729552ccd3cf3c7fadd4bbc345d84a0a7f54e6a492833dc22", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "866ae4cf5819be4583d45c4143d8c4b6800c5b276e83ba781978ee44b97f19fc", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "adf42e3e4191853b1e6b61c38c4b4cc1ac50d99c5c4943897ef721a9ff30fcb6", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b3b37a4f0b8220e9a1f39ba2326e627ff1b7f900cca0a10daba1c71d957e2447", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "f2fb7b3791b2c7e94505d84207344eb88da587461bc0f79ea4d0f70c95c23aed", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "5014374ab60b266a3d95bc15503a28673b3497d4d4d0ad157e5712ba0a689c04", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "acbc680ff844947de32b91a5cdbdbf3f71c67dc747b72e2ff6bffb642e77135c", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "a172a00d0a45b5049e06281fe44ce4cfdff5acfbbf8c69b21e530a1ded36c35e", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e4adf36468a3279c471737311baaf5e415aa6584784140a2ee05d261e4fd68a", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "5b58023ca8c689fa8291dccebb52a93b8bf255e2215ac0f1ac1505f3dc3827f5", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "5f5d461d57ecf98710a8da853c4cbff081c0b29c170f04d654e1c2fb8ff31a47", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c11dd00da5f0cf32e89b24721e750a9be89476bca3f792eb695e31fa51a6e4c6", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a45a1560080a482659ec963b03b67a71f677130ab67058c8e1fde22dddc0e50a", @@ -5762,10 +5776,10 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0e782e3eedfd0c96577e80254aec819a848b2b2d5dc8cacc8f1a29e186e219af", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "32862bc18381086743795acc950856fd9d6933aa4786598ae576f8560800b5ea", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d022257d5599de92cdb88e98d8f87cb3f40fce9d965f78955ef42a6cf56d27e0", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d022257d5599de92cdb88e98d8f87cb3f40fce9d965f78955ef42a6cf56d27e0", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", @@ -5810,7 +5824,7 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "28c2d48dc5280b3a186255210475b4c52e1d10497de253d59a03a8a2823e2935", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "61626716934ec4524d0ad202c31e3ccb95c839762dd30ecff70ecb38111f7f1a", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "138684585f821a5cb75ac66c633e6cead076929b4df0b2a77eb077d8b75c7f2f", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "1fa92920259bad51b7d0366481207fe87910340fad0b902e2bd92143699ddba9", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a8cc09c1f5b998e1e05a6ab206c5c9fe5ec6f9f3ef91a2f7751af91fe91dd748", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", @@ -5820,7 +5834,7 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "1bf81e05b3529ae7b5d5a193612b01c0fb9cf5b233a519c3ab59e3b5f3346a85", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c2a3308626c03ac402af80dda8c639c853922314e02bc4fb63a02715bbd62ad7", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "62bec4a45d5dc7b73edf169ec96ece712b06d17227719097a7c67846daf41a53", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d022257d5599de92cdb88e98d8f87cb3f40fce9d965f78955ef42a6cf56d27e0", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", @@ -5850,7 +5864,7 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "97d6ad859d518a61b6dc0ff74d6a94f0e51fd9c3b8b1f33b9e22415ad4e7d1da", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "9f0c0d825a5ea71051f2937aebb3db1307fd7ecdcf3412bb5b17505531b6e402", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", @@ -5863,9 +5877,9 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "5f51a559bdf08408d2c8fc21d83a259c5eb03649c799a4da322fca385d74f9f5", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "2ed6e8f03fc72aaaf636a55676425111f0b940490f1f7c1ba1bd0269b1238020", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "841dfb9b8e9b12710457ceeefb84a263bd4ae7fe0c0706cf4e5b56f4b0b43321", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "b8787fd69ed518545814f71538003f6b91db98819c7caa6e50180f3507166e48", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "e7c1998e4dc2ac8821fbed2db7201ee320499665332a2790a121f554acb94b3b", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "031116b0fe8d45eec69c00a50a87b8e9e3ec09d3f0585c15bba0c9b78f13903c", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "6c6b958694f4623fde1211f2508965e17fe03b89ed10d229c5ecc4d90740cec8", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "8703a3c6ce02fb8d95108cadb68da422a4a52591ad31d287056c7d50ca9854f7", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "ff3b9de391ae6630efbe7ac55ba0883c18b5612cd30787dab80a3de74fd41064", "T2B1_es_ethereum-test_definitions.py::test_builtin": "7e3a811f7586d78d1a78b8a38cadf9f49d76ed28b5d9006a8c9bd2298aae81ea", "T2B1_es_ethereum-test_definitions.py::test_builtin_token": "4498c1b73ab9f249122cbd8944df6b6201a77a25571f2bda057be490daef8dde", @@ -5966,14 +5980,14 @@ "T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "ae9afc5caddd3224d744eb2b844b2b2bce5d17ad639a5b687fddd226b926b257", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "e61210bd5cc31174330d254ee8af33713d557434468e71cc5706ceffc82ac352", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a91ba37c4a1624f69eb8a9525160865decb33f778055309a75e17808cd116cc3", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4b3f2d07d209d87828499390d74ad72a45ef860faddc382c0cafa9b75b3915a8", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "96dae8436d08b45f08ef114c409435ebc60e73815805a4711c4ede494e1edb9f", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "e501c291cc2232dd72ad725be08dc098981f931bbd2f5689753b3dfe0e101737", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "39c40457ebe677fa8aa4971da8f059573c418e0784bf4649f6bc3da4674d0b2a", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "ae1decb71e323b4fbf864ba9e23b1772be42d5cb3491724e38b4f85b9da8060e", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "6244305f07a2ec6b69055ba72406a69d0de2b6db373ebe13ab0917aca21c7f70", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b51db1ca0257d0aea498b3081b9ef6fa0e4d56a5865884ad0407bc0631509806", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "63c334f588c219f9805912fc90907a1f9387d8e745afef48e3fd92adb980531f", @@ -5987,17 +6001,17 @@ "T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "80b18c138c70c0d8cea3c53c4b1bb36b96785f6e47d7768da8267819a24c55a5", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "7a30c43a65f41cf3dae5367eb1cc64a1c8a1f72e7287dca2bc0c353cef3078cc", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "72f1c3c5e30cf802a8c2ebee3ae5f8cba4b8e846a657c5b960328f833cfb6fe6", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "d45deaef23040b05f5f2c39acb1c040f01b1b76994f56b96e119bd86d9cda842", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "96dae8436d08b45f08ef114c409435ebc60e73815805a4711c4ede494e1edb9f", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "e501c291cc2232dd72ad725be08dc098981f931bbd2f5689753b3dfe0e101737", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "88115701c78f45d7665406e8d63d52a496bf9d859ba0cdfa6c717bacb0796d75", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "91402e8a18ba1ba2e1d9f04454a6488da6f1ba1e5ff9a2718399a28f03b1bf87", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "42974196e97b0c4e3b63a9cca193396664abe1c9d39fe61b46259fecf39151d0", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "110232270b56ed4fc7f31a2c3d91c6f93a0805e00e8199037850d206d192903b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "a45c1d448b64f3111b59c2b9ea7bdc21df30a04129f9af4e18e13c669221a352", -"T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1096f15be8af8fdd3e7aff4a3716690a3ac83c14fb02d2aa094320402826d335", +"T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c28e5d8a8e09fc03df8b18b69f2bf14d18a6c149d7623152ee9f42f4b13930f9", +"T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "b7b8f41a1ab0f510d831e915d65baa335e79283dc6e6b5b20bda2bcc10a20a77", "T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "105b8517372cc279c279f895aededb6ea8819db59c65b1539c657821df5dd162", "T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "070b3467c557501f6bbdb5a36dbe1e04d8786ff37534274e168611ef5a3bc7c3", "T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7475f33b487d813b7be599af85a410b9c089d9603e9bbedd5ba70077b48c6a6d", @@ -6017,14 +6031,14 @@ "T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "8485f52d599ccdec1b67382e3943b25148b1acd068d0624b9284379e347064ba", "T2B1_es_ethereum-test_signtx.py::test_signtx_fee_info": "d3e2304bfbcab5b87e578a21781f5bce5c872dacaa8d46f9a5108809b5f88f08", "T2B1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "0f01cf0a6dae94d6a11639b1017f1f473efb79cf520eb52c987e40ba096eb787", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "19407a5e2faa2b28f44369ea93bf43e2d149da2ab1d89d430292a0d2370b44e6", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "66a9c2d984fc6556d4246afeb2c0bdf2ce3e70afc54b200ac771e9c1833cfc84", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "da08b089d9acf943567638d0806c9d356fa4f0c6b84caa07636b5a698bace7b8", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "590d68000f8b81c14fab20b34075bb35b97d9e1482612255c7c09b516ca292b4", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "1d10285d0891e2f3a3169f286ac2cbcf20bd90e428dad85a5b49a1424f6de4a1", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "329da3e72ebfac8e3c2fc8b2d16615e1a0ccfdda2a0c7d04bef4245eb8efad3a", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "5cd8dd0803827f475460eeea0409845c1d531b1cdb9d8ef35d6ced8c1cd73166", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "7edac4ef006ab868af1b4cb7ed7656c5ba65a3722eef1d543f81271097da44ff", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "b531f2698eae989fe8ef172c4665b5c74d418a5bc247b364190d4f102d7577bf", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "d9b07fba77eae8dd7789aeb5ac881544cba78866812e5e553d87e3775a87fb2b", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "da874a244ff5cff9f53368a008a8433fdc7fe6163b98c9c9eca93868df68ad9c", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "9c12d4de34a9cd08e1985f0511e51bdc1efb66f1a6bfe61d18b4db5940c784b7", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "65fe199fe52e8ffbbec5bc3a919b1bc5d97355ccdd9415a22c48d860bf8e8540", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fe7734d72fc96e7dda1ac2f75c8e001a1e3d2d48d513eb825e5255e311572917", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "9520a6f1fa5cb69220b8fc67ecf17fc859b0e52b2355e4900cafc9e965fff809", @@ -6034,8 +6048,8 @@ "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "ce58e2da56fbfb9a34096f35fe27537ffcd1e14ac295c7f1d4b2809cfc1fd8b5", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "ce58e2da56fbfb9a34096f35fe27537ffcd1e14ac295c7f1d4b2809cfc1fd8b5", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "6056dabfdd928cc39add5df54d1e71ff37063efe77e6d9fa9202e9720737c0d8", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "6056dabfdd928cc39add5df54d1e71ff37063efe77e6d9fa9202e9720737c0d8", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "fa25cdefabb33dde3be7082a768e7bc5931ff2d6a3665b576cb703c2b4eb78f1", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "fa25cdefabb33dde3be7082a768e7bc5931ff2d6a3665b576cb703c2b4eb78f1", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "227040fddc63eb0a769691acf5e0df4199b86c9efda697164d51055a80b3b78a", @@ -6101,38 +6115,38 @@ "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "052579387342dc4d6ba95fe519c5766cb6fa62ac3c9fa7be2eeb2e05946aa27c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "fa5c53b939ca6f559012ffc50e486e3498838268f6a899716f2a7307c0ecb5ee", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "7ed54fcc2c4c6311beda2b8ead7b6c12811071ed1a827501ac2449e5889ebb6a", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "383f9fc5ba53c12231c897dbdb8a0c33886f73a1de9abfbfb7aadc24fa56043d", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "939364b40efd5e1f5ed953da9669c96532803f9e850e89869ab44598521b9527", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d28d729876736906b8bc4424585860802acb641e3e41fe6d7e8bb6eb6254ae35", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "6273e8e641cb999ced744bb5e0a98866d215b9a10510531bb9e27560bc5169bd", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "c76b6ff31582d28ba40774f775bddcec5b944f9a365a54fa20b07adff3bc8d7b", +"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1890c911ff6d8d190e64ffb11fdff88908ca98877708dbab6ace7ac4cadb35a1", +"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "917caceeceaa33be2153199cc631d8428072ca27eeec8f5eabca53f5ef8e233c", "T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e558fd4383c18f5860285557e9d07251c6aea8b87bb6ac30988822a0642163ae", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "bdfa22a1653d5a24b3295b271eb2fc88b3894a21b978dc14e665cafe56a18ec2", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "43e663a179d336fa55e18c2b3906e352272273db3e6993b625d42ed14bb885e3", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "945e4001331398b8c14a3996918dad9859d782c241c1eb1b7f3a1bbc0828659c", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5cd67225fd3bb37f1d8f4e3752b568a62bb3ca77d6d7fe2a49b78f9408ed7956", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "93c9350121948578c3e9ed097d682aceae09bf7c20057e1c5d07ef8cab22b6e0", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "2e9afb9a570508661335aba0071db4e7a59eb68e8fdb34f46b5eca693054f110", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "93c9350121948578c3e9ed097d682aceae09bf7c20057e1c5d07ef8cab22b6e0", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "2e9afb9a570508661335aba0071db4e7a59eb68e8fdb34f46b5eca693054f110", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "20be7c749a910709f5b19667c234d015289f9deb8a8371c26a451aa589b91c03", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "3ef6217c0a7ee4997018269dc2547955ab9cc1d1b4a9ced608b46ba5eb6e94ce", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ab6dffe2419b06663ccd2474d27a9d18337f63f40e9082f01440933a0b205d6d", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "da295db3022a5185da7c7a23c8d0f7a5d42c1774cb042c75296be2b8ffc84280", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9ab77b0c356f004cf3db762279f7be75205b23d229ae7da0e4987e4af8923fbb", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "6125f922cefdab48b7055c4f95e182e387e60d1d871e8a39d4c4482c8e933e00", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "11359474e0ea836aa2848523b6725b0d7ae9c7647b7a718e6934efacef057853", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "080e7dff03b0ff8717d6cc1f7f62b5c0931ec1ffed0f0e72ca84abb98efdf4ef", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1f78f13594c7ce8f5b7b558f7853e3eeef56761a4a24b89ec914ddb8756a492c", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "080e7dff03b0ff8717d6cc1f7f62b5c0931ec1ffed0f0e72ca84abb98efdf4ef", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1f78f13594c7ce8f5b7b558f7853e3eeef56761a4a24b89ec914ddb8756a492c", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "efe313d602a82e7e975f9f3b2bbe937ef641f775943655bd45d1e72f40e72120", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "269d5d0f0b09b61f532f050a4b59f474449116b526565e95c1702c61bbc91f4a", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "15eb6b3a1e84fe8d302186e187d81f1cef90086c0df3397b9b21843306aa5804", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e558fd4383c18f5860285557e9d07251c6aea8b87bb6ac30988822a0642163ae", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0dbe75041a35eb9c9d4e1a660f1af03238da67a7a4b85794a8112392d179788f", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "eb00f840b2e4566fabf0e37e888fe8bcc13ed491a758c9f8dd886d3ef681a9d7", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "040e3e578403883fb5277a496e6e3d948bf1d7c27d16a4c65146a8fdd1293aa7", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "67b08c3fff240f25ec978a07d86d611e2bdd753e4c38de0ca0428f7f4f5d9f13", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "1762d1b64e9e53d6d37f5115ca74e0c9fb3bf7aaf5a1524ddb36d9b51c2f9393", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "b28add949e5b642e0edf02ebfc9330bc3cd91e9a994480f3f5ea00cc94901330", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "053cc2ccd6706c78f8a09c6d0757d1b365b21b7bfa65c552f644c61cdfd7e95b", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "8b32dd012a5ec31144955c8a0a183fdc1509d5eb9b32aa986a6380da96a1bd52", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "4e91b644208bbe2abf34c5d703cd69c169bd64cc4c6feb61fa8f0c4169548222", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "dd8f2046e91d212209e6ab6ef5042a227ddcba7295682ef4d17c88013b366939", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "115865a2fb0b0474a414689ccdea75680f6fb0ff7441c8d0f861e590c5a9b916", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6dde4e2637979b4a27a67a9565371393d0a4b0bd938e09696980d6840e4e91b7", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f0671f8632c609761deef5fb882e8bf4017cf6e5b44921c00bcf5639343cda41", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "594751b7e5814590ebbdb946467c914d8d4d6a5a21b9c1920c8f0282a1796e7a", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3f3d85234d9b9c55237d9dd450f0a63b0c908f1af2a515ac382e7b0d07c7f4af", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2c29e63e0fb6d5015987ce3608c3862ecca723571c8fb64418aca1eab9270fb6", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5d1d67cc619831a6f8699e595e72310865b64ec08855f48e754f213518207d9a", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "04b8ec9efef5fcf094eaed0c10fb9ac03fff9449ee44755176d06c8c1596d5cd", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "d0ece4825fc36c249a79fd1f9e5f24cd2e20d0af34ecec740a71302738e75ac6", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "9b427305ad6aecf86f6dd1379a0809e54a77ad91996fe39d001cf6fc7f8b0e71", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5a8861473daeef4f53fab1e20b2c2feefb72dafa204eaef147fb0a22c90590be", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d41591aee123f241193c0bbf4e1404bea6ea9bf80b725879e28dc45d5239f07d", +"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e6b54280c068caefcf17a1f28174b3f5a9f49c597f6d0f4f84553f5da7048df1", +"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "da2aa458a81d36d6ef00585ebbea3ffa4f011631d67d73bde0356da99c58425e", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7673dd1da89ff6519ec7daa8a6af3b2919dcaa06dd132284654fba0ac1b656a5", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "46750377f41810988c1cc53b78269e68afa4a063bf27872366ba56e62bdd3189", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "68e4dc965ff138bb8eb7ed051209754e03e00a3e01a05197ea4c95d0d5e2fee7", @@ -6140,14 +6154,14 @@ "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "9f0dba8db325555b57dac26cbebbe736be9405d9db1d3fcf7183257ff6f9854e", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f384739b07a06ebb48b44dcdf2505e28d06007f2334899564afb7e5d1965eb30", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "34354028bec50b67fcdcf44a322f7d5598ebf526e26fc8fb49197b315b4319aa", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0b3762e61964f9ab527ca5b7193fbbba493f74944391f7f764e83803f7e98e4d", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "174af19811d766d269d10c62bbe0c8e4e6911dfe3516c38a64b68856625a5f64", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "097cdd133776868251b1ebf6bd72708d71e5c1dc0c973425837b391f750c02cf", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a397ef0eb03e1f7ab2a17608e49c41b39994443836fa67c79e09048aae0c3209", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f3feb0a9a03a7cc7c5961f96a92c97361f7e66ea677047f8aa5a4a946561ab73", -"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "badce7c486811d503d7509a3e921233bbb3930ad2afab4a5163434213cf0c37e", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e5440eed9c6373edce28e8409ef10dd3471b0faae57aa77ad60bd2b7d28e8ed8", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "be2579b21e499915567b06c5bdaa11c6c7434a1c4b08347aa41458fdd3125adc", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "5af4fb6e24d897029185600479aa2b30109687bbff31eedaed6ff5517d37ce50", +"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e097a09acef439c5d5ac28077733f09ea3cdd28ecca031c0288cde6be92e47c8", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6e63a1fea0a31aec4b836c6c48d81b4f6e29a52317f897ca9525d3729389a0aa", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0408185cf64ebe42cab1fca96987883146d6cd52aa3c76ff7225f71288018258", "T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5b7e99c8204d99544c4b36600548f4720de022b2721d75e05a85ef2727611823", "T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "9ac2a53b62047e7a956f360d4913ddce27b9e5abbcc2ef336e7aa7856be54123", "T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e4f4bfb747ddb795eb8b6312d4b9f39ffb965a0fad9a86d9ead0d29f8cabba49", @@ -6228,7 +6242,7 @@ "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "697b0ceec0f707380f5ad45c78b7e8afd6239b9839997e91dfa551d0b5c74f8b", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "d439353af62b254b95f990b1291778661b733a47f5d6c75d5b4431d0391e5157", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "6777514ecc94077148e8a475812da8a4467ad1f78daa4a231a00ddab067ea2d6", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "4efee3483b09bfe358a7b02e8bf10a1c4ef18b485d8db0059b1c9f6776941221", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "5409661736a922442d9931e3528448eb76f6c53ef8c20bc534cfd240a5ecaa3d", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d23165d60a3cbb04d1d24993608a65faa130a4d422347caefc79f6029371d2a0", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "54111d819692efe85bcf4dbb048eb87de5655deca1802e45abbee0fee0b8b2f2", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "0bc8d8d9da34fcb3c9a1f0babdd77ea88f9bcae39297135f8b61575915b274b8", @@ -6256,7 +6270,7 @@ "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "47c972b9dae51b600051b3f764882a7ce117653ba99a0698809da5cb34e50cd0", "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "76233c85dc50ff7b50ea818600c8915096787e16b606a6aaeaf89892a814e45b", "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "3f388c50a0165fab37012dc01708dbe4389a1508ab79d1332e54e7b82c1457a8", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "8cf3f80c0a546f1ff21328fb270b92acb7a56694a85c599477cb267ef9e0f77c", +"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "781006ced7850e2c21972e0aadf019faf601dc48da616cb71b64fe6e5d960bf1", "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "73841dfe4f3875ef310dda362eaaaf638ca21cfaecd3e3a089c6cb97c8c757cb", "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "9c19b25005dfa620481b69914bce2a41aaa3de812cd77b50b795eb203487f6ab", "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "04d1a10047e219340f167d36db8dc0cfc52cda185e8e912e78bac9b4faae695c", @@ -6269,9 +6283,9 @@ "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "0b0e9be03e4cd0143b82d74a1744b8242949772727ffe2b5f7c01f8476677950", "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f84e493f2c317f713f00b1965d9da76094bfa91b8c8344b4d23496af4dd1b2f8", "T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "2c6589a8d2b9b5eb1de1dc97c00e4da3eca114eb8579c869a436a887712cf421", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "33df34b9e672c7fc05ab19fdd0eaf85647bea6fb00ccc0515dd32b73e2394840", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "fd0e2e1b9a9affecbef74360e331518f73b4d4df1a49fe15887994d024024d77", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "0c61bcc90faaed5457eff7b1bb9ca88ea0d872cb048e53530ecfc07069fbdd5c", +"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "d4e1e1a7e5c88189024c8d6d8759220de5bbe655a82b83c65993ecb38a63e278", +"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "7331a115aa45a912c8f0ef5d7df1dec77a1d26d0b7b441a29eda3d3fd7064892", +"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "c5b06a88c6a3cf5d74faf8ed937242a8306d111e3b1890b3fec67c2852fa1a88", "T2B1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "867e771d921575c44de61bc55f86c1fcc9b405538fa1e5ad32c434d82936d676", "T2B1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "77e41ab537f6769fa4d54cf3e0b18e897a17773bcd7e41eace6de0e20243b246", "T2B1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "d447e53351e211f2e6800657d40e9b94f7d84e528e051f6f79eb3d0f60c04349", @@ -6316,7 +6330,7 @@ "T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", "T2B1_es_test_cancel.py::test_cancel_on_paginated": "6130249059f20e9ef6cc82fa54c36e180c45d3f90614862d4999f9eeb17d8fa1", "T2B1_es_test_debuglink.py::test_softlock_instability": "9fc02701c8431843b697b313c3bf66d0bd1223896d0a1787346b72b25279314a", -"T2B1_es_test_firmware_hash.py::test_firmware_hash_emu": "ae6a370bc90e9e9528e649d2136e03c870a53008b4c5a444cabf9bb34862d255", +"T2B1_es_test_firmware_hash.py::test_firmware_hash_emu": "9d58ce887cde18e51f4df0c52ac8697481866bf4ee27260207925ce6c8e148bf", "T2B1_es_test_firmware_hash.py::test_firmware_hash_hw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_language.py::test_error_invalid_data_hash": "1e4a266ea51d55976cf4a1f8655e58629092b617c9d36e0603a5081961130564", "T2B1_es_test_language.py::test_error_invalid_data_length": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", @@ -6325,12 +6339,12 @@ "T2B1_es_test_language.py::test_error_too_long": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", "T2B1_es_test_language.py::test_error_version_mismatch": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", "T2B1_es_test_language.py::test_full_language_change[cs]": "4d49f8000c083a5c0fb8e3c174508555c7cb25620b4c1a587cd6b1cfffc6ed92", -"T2B1_es_test_language.py::test_full_language_change[de]": "798cc411ae428309616443d20710eba2c4fa02526dd03c7e971c22f07d3664f8", +"T2B1_es_test_language.py::test_full_language_change[de]": "60784a1347f5f1662826f2c6363e5b78c5266b56b37f9a6cb74c7a7a938d38ef", "T2B1_es_test_language.py::test_full_language_change[en]": "5684c4f7e6ca01d85d83549d892ecc4fc0277b46dd7294d0d7ef436a2f4bbf6d", "T2B1_es_test_language.py::test_full_language_change[es]": "51aee9f7f7e76839471274c909bcdd2c117e3fe6d9ca634ef71f1209dcb2271a", "T2B1_es_test_language.py::test_full_language_change[fr]": "0f7df785e611deec165dcce914efbabb497cba640795c8b90f396c223af7f3f0", "T2B1_es_test_language.py::test_header_trailing_data": "112c52b046074513671e25a0c27fb8e1e52c94d403be29e68890afbaeb7b5fda", -"T2B1_es_test_language.py::test_language_is_removed_after_wipe": "3532dbe03acff697f9b3b4682270a2e01ff58ff44ab45ae7f55fe24bfef01c53", +"T2B1_es_test_language.py::test_language_is_removed_after_wipe": "f5b289bd2063748be25744389207c429595f8dca2df5ff393ed6ba68d95bd71a", "T2B1_es_test_language.py::test_reject_update": "72b5cc4bb1d3a1024ef5348356565e711392fc379afee08a9d4275b7d627c213", "T2B1_es_test_language.py::test_silent_first_install[False-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", "T2B1_es_test_language.py::test_silent_first_install[None-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", @@ -6340,9 +6354,9 @@ "T2B1_es_test_language.py::test_switch_from_english_not_silent": "a9b0e47be4dac0a6e99582439a6225527e8e365b7e74cca03892675853b1a152", "T2B1_es_test_language.py::test_switch_language": "26c80e43afd26df2a04f55e21c44c36cf8bbb9c4f5ee3012ee7a4a5f8e2313c7", "T2B1_es_test_language.py::test_translations_renders_on_screen": "7f3f39ddad3967195db73c2609822dced686f8fc8efe77c72c5606b840b17231", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "158963b7b966fe95b92d8a4be19971c5321847154c2e574de04e361750537569", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "2e80ee5ab2d87d55f9c96460eda140a7074faa2d5237d23057de2b12cbbb61ec", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "862fcc578fcce80ec60104f57dd7f6f3312b2160c481ac5bb954d57cdfafd018", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "0f9c5c41a75ae09288566edb2c46b105ba6790956d2646748efcd3c07b987a33", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "0d5ca389cd9e8aed00ab9d4b357b40d038c0d727fc61cf409dc51d3b22c60f11", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "42d31cb3e5f776a6512929f0a38b08f8de26752fa6f30ede6cae926558ac2f02", "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", @@ -6361,16 +6375,16 @@ "T2B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", "T2B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", "T2B1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "51b9832afbc789830e7129548f57cf4c7f12a62c3473ec272341a5606c0a464d", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3d4e5cfb9545a90969b9cbeb2b01f720552278dad70daff395b7dfa51a88a18c", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "2b10f8a157e7fb4091f5d4f2755391c6e5d214f86542b7f168977548024bcd7a", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c2e05978f88968095f6365a4add766180ede88f1b298f6a7fe43879914ce1239", "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "22ae79c8dc2b0d32a5d9bacddd9be52b6bf8ce8216aa69360270e746e5d7a2a3", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e02129bf6abf34f0248613f1c9e08200c3058cb867d3258113f5c5a3844a378f", -"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "3e31bae579843519db69bb9301516df2957f2f6f8d83586cad677a9e60d7013b", -"T2B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "0ef60476fbb6f5e21672bb09ac00b1cf0bffbc011da68a9bbff62a2d01c0be15", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "bfcd2eb2e9fcf7f95fb18f7300d4ccdbd807388ef4d4f499024b622ae825b386", +"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "6b25bc3e9092a4b7b352aa1a7e6f2e1a5d42be33e33e971452f2dc2f31a1a2ee", +"T2B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "402ec1eac6e3b1adcca0164837908a26857c1aa232708128b8e20db65f958100", "T2B1_es_test_msg_changepin_t2.py::test_change_pin": "b5c6d6ed8d87b35f91b9601c9d6a87e25bad879b326e4108080d3c08291d9722", "T2B1_es_test_msg_changepin_t2.py::test_remove_pin": "9cd99fe144e94eaadae6ef1adc12439b62745a553cc8a0664dfe5eafeb01b0aa", -"T2B1_es_test_msg_changepin_t2.py::test_set_failed": "26f0fd06b1b2cdfb107a01884b1fb9db476714d2a6d44f3980fb68093c385a3b", -"T2B1_es_test_msg_changepin_t2.py::test_set_pin": "19d5d4ce8f4020ba5f86f513aa232c8da05824c2bcd29c6691785160665f83d9", +"T2B1_es_test_msg_changepin_t2.py::test_set_failed": "e4019ce947c756c2ffb3753b86b1e2603e8d2a1e2b9ac9c08bb87758f4ac9ca9", +"T2B1_es_test_msg_changepin_t2.py::test_set_pin": "ebed946b3783686304c682d00ab75de96b95129e068b6485646b3d1cbc952b8f", "T2B1_es_test_msg_loaddevice.py::test_load_device_1": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", "T2B1_es_test_msg_loaddevice.py::test_load_device_2": "b73f35704810c4cb44e97309af840ebe5c30a26d8e8ca7bee26886d66a589553", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", @@ -6455,12 +6469,12 @@ "T2B1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "89292a81a0a4380eb2b7af21c0bee0a53fdd3b86d20c58f73382ec58dd495fbb", "T2B1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "21dce3ae58a0b4383d4b295e452ed2282167d39155dd5a828db5bfa432d42047", "T2B1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "71c351ca201522a74e1f7199ac7cbf99542f646774dcd031099db50b8fd50743", -"T2B1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "65d0a30aebd6f8768673f3857f4efb150703deca40a90361681bb308ea4480f7", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "c70f1b816a14dc2a32a55c5cd32ace7987b4257dd7b0a8c0a47956946584c68b", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "adfb0ce87fa7c10980c1e7263e57a025ed1cf9527a27dfaeab9d3f307a4c9217", +"T2B1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "6e22d97a5b4bd8e789a204aaa16f494596e0d8511ec824adc7c4f9b9fe5e87e7", +"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "0c49bc55d035c05b21e470cb4b3ab0182e10166e21b8a2e8d21f774792b5f395", +"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8f730c973185c77623019a5fa8254658d262e56d200a2192ea73eba08e5f23a3", "T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "57c47b1573b0c2558047784e8988c2ff7f2c643b14989a24b1f6963eff77ad40", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "c70f1b816a14dc2a32a55c5cd32ace7987b4257dd7b0a8c0a47956946584c68b", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "adfb0ce87fa7c10980c1e7263e57a025ed1cf9527a27dfaeab9d3f307a4c9217", +"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "0c49bc55d035c05b21e470cb4b3ab0182e10166e21b8a2e8d21f774792b5f395", +"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "8f730c973185c77623019a5fa8254658d262e56d200a2192ea73eba08e5f23a3", "T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "57c47b1573b0c2558047784e8988c2ff7f2c643b14989a24b1f6963eff77ad40", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "d465726f6007b636e5a48c3b0b14c3612eb97b5c51e13f5f1e08bf1c693e22f9", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ef13f3c0105c9888fdf2d973dc28f71658d5ddbf0b3c1f05f26b8870e74786fd", @@ -6521,14 +6535,14 @@ "T2B1_fr_bitcoin-test_getaddress.py::test_address_mac": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_getaddress.py::test_bch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "4d764885ada3a20675bafec3686a7d135ac5374907cf1036604bc0de1604891c", +"T2B1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "5eb28208a34b28532e9b5cf10177af727bfd18c30d02eb2d916c76a98519c5d5", "T2B1_fr_bitcoin-test_getaddress.py::test_btc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_getaddress.py::test_crw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_getaddress.py::test_elements": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_getaddress.py::test_grs": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_getaddress.py::test_invalid_path": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_getaddress.py::test_ltc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_multisig": "a8465acd0c2adfbcec03fc6a16c9a137da3b4d39462a3a8b497f005e64566963", +"T2B1_fr_bitcoin-test_getaddress.py::test_multisig": "533a067f937f69a4bc82c2a9c250e6e219ac02e7944a8dbd604e7d96d229374b", "T2B1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "32adaf10f115bf28f6abe7a0c9520e93cf79fc09dface4c19afecd7c0b0f2f4e", "T2B1_fr_bitcoin-test_getaddress.py::test_public_ckd": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -6580,14 +6594,14 @@ "T2B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "70fd1b9fbddbbea31659ea5f6d7f8353c5cbcfd624d7dd5872858df08a88d2a2", "T2B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "09c45b7e27b2b1be279d96f20ca49de3b413e57c8ff45f23bd07f126120a4c7a", "T2B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "0aebc668a6373314d183905b60f265d95c455b03996c47a109045315196902bf", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "80828b6240735e4a5ad45e560f42088b604b3ece917bb4da576c7508f4f6c9c6", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "e000de82846b96a4670b3fbf63a70c8a39f9cd707e057643310063cd7a17c820", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1d50c713971b3599aa3243cda5b2d75d4df2dcf5031460bd4442ee73c580a795", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1d50c713971b3599aa3243cda5b2d75d4df2dcf5031460bd4442ee73c580a795", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "1bdaee134bdf1b641248ad0dfe8738ba73a970a270366be448e3eb8074901ae1", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "0ea279fabf231fb06151374db7b416f21cf4b4b88407404666ff43f4603cfd8e", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "6f5e602db89bf8f7d73ca1a69e147b03aef1e04bd3d31caf4ebe9db3c1e266a5", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e8455add25cf55c515222ed5fc740798bd5c49f8ffd3c4bfb527fdac4b9caa2a", +"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "c19839a6fc59409b5eea68833528bd8b534fbd5f5555a934f5a0eb920dcd2fe8", +"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "90b2115d532404d5e112390e45d5f1bbc83591faea3a38df874ed197f929475b", +"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "e1b228f76cda714318d1cc094689a82c7536c68f3df7a9304ac11659679aea81", +"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "e1b228f76cda714318d1cc094689a82c7536c68f3df7a9304ac11659679aea81", +"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "173965f9dc366768bbb1b872941d0718ef428564fb2a19ffad9bf80806fc7cc2", +"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fbab9a8675c6fa476ed7503d5acf469e46a8d64387fbffe1ab0950ee1d7c098d", +"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "cb81eabbd761257c4b11eba444eec26687fe321987f826346c9e8d53ecdcf185", +"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fa5b7137eeffb743bed1ce7cab4f54c6cfe967b5aa07610b49dbfec63adeaec4", "T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "3146c0ea2360ad96dd37632481e99f96dc6013dd68ec7142dd63e38f96948a8d", "T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "925b7abc2d7292439e90227a3fd39eec3438bd062a3a9fd5281c866ba77a8c5d", "T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "c58ca4732915138ec37ba16010015d5492484145fcbc8a17bced91faa293dff5", @@ -6652,8 +6666,8 @@ "T2B1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "ce236bc31133c4c2e3aba4507d1926ce695faf8d0fd2fd1c1ed3b67992e8988a", "T2B1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "688cd85849ec2b4a53bd25b29a62f8037a8af640d3db55cd91c5e0b0543b93a1", "T2B1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1d445d723977544e89fab37a74193afdf9c3a98f132045f8e2bf4e6117af3bd4", -"T2B1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "a46499ebd758213c961f04fbd8b52a555e3100cb6d844b06a05075a9a0519f50", -"T2B1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f860f73304e95e19569dcdc1089ce05b2fecdf9024ed5ce74ffc68bff57095e4", +"T2B1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b538109ac41b552bcf137eb1af33578c5d481a212763b0ff1e55053300e63257", +"T2B1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "1b3290c393d296833a336a0956eb3f8daa0865ef842f66b383ef04c91c669cd9", "T2B1_fr_bitcoin-test_multisig.py::test_15_of_15": "50f18aff2066872291af9b60025022c743aa718aa24888dc551773fea808e9b0", "T2B1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "d5de110b06dff47bc52b30ab865ba9124999cc2440919b3e09aa829ad4ec7ca8", "T2B1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "db843f7fc2ba1e1fa3a00bd87525d9956dd299b85199ec08cd3551ce86f0c0e0", @@ -6677,14 +6691,14 @@ "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "79c6a48d05e25ee1c0fd6ee73a4f1c53408fac96289db536276128a2e8ea609e", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d45838675caada0c043c9cfef14e77138d09134f8a6637b28238ed2aa1468621", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "a0766df652809682491473892ff2db8623631e553d2b1eaf10a0fadea06b660d", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "37766c9c9338caf63ded215e7b6487be036c6fce9662fc3d0252e3356e042b9f", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "a21071fdf2cfe5d2a0eb16fbf69a6ce23f2eb809f53e61a4d56b9491cdaf0d32", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "937d023339e9c7c6bacf3335a66bdf49be6e5a725a1c18504ec63069c50feb51", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c5e70bbf897f2ca9737893828161af8373d58e7ff28ab66fb1a877b55d9b1eed", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "bb65cd76039812574be595cb8f56c8f71645dce177753f4ad57b9f4c886af246", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "3c346260b1595d1376fad0bd6536d9f323349e9fb188253a66288d4273a49c7c", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "717f157a4b3f517866f0f674e205330d906026bd72dd2feea1fa3faaef8c9e62", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "74106592782ceeac87d3f3f1c9c103ffe563587e96a2ae5ec094dfdcf2f1693a", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "252d3de776067f60284b05e5d400d986c254e5d65018f7987612dbdf60332e3f", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "df60c29d18bf74f3a7ea7e9091130e42567c74671eb90d77cb5ad50a02bb3657", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "be98bbe03d490c97fe5a85af1a0788f49fc3ca34057a9740b5ee43fa251679e1", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "5b031e7ad8fe91e1d3763f208597b07d6bb88a4a791ab4002f99ed57b0698035", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "5ac0598862a02d6b912c27e0bd65b147be8900eeb8e1e11e0cb0f106e0384439", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "c04d50b71fab71994e107109b3a2c7337d230dc0a538a939b31cdfc1c317931c", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "190b406accff3a66ee5330290dd170891aec1cc23f802263a49cfd7735bfbd64", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9e3ef6e7e2eefbbaa77cc0f808e02820df9be86ebac2c365cf6267400616e8a4", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -6696,13 +6710,13 @@ "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "94654486c5cb97c24981be10960578bcedd4da216dcf71d652631b1184d050de", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "18751193860f6cfbbd1956477ab8cfa388c36d37eeccd23b7feebd975457278d", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1813aa86ba247c792b95b669369784262576d5407c77348f553c8804fda573f0", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "8c9a55d48ec61fbbfafe235938804db9cf142aec264380ea1dd4e4745c4320f2", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "fb3c7db16fe3cb661d12961ed63d81446a2a498c5405805afc94450a55c1090f", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "fd7caf4e7f17f029126d95103894f514322541e843d4db5dd4677afc909ab1b8", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "4f40ebd0ffc7dfc284f526a4f9e2e70669db2c47559a4057e54986f42ad5f8cc", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c36e8682d9f31c92b61f38d7afbef7b8bad55e05744a87230966e9b50338a90e", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "daa62d476dc095e77f0d566762b51954d4fbc06fb2b94e5d859bd791f9848bc2", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "4bbb7f9c60cd45f41df3416a4be943db337969a6fc00be7512d7f6ae6d59793e", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "baa398f045650e4d6dd7b6515bc7f16f3dd3b9fe8c5eba54f5154cc293a1dc77", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4544cb7b64d05ffe3b3c32b47e5caefe79694e5d97a345d77cdc2f1efdce7073", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "47ab2e94b28ac684a8d7a0b31fc68d136eebbffffbaecb46e8c788bb90cb953a", +"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "2e813ad3d6d9ac9a93db95735ed891d898e15beb6f09495079d14c4ca708f0d6", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "afcd36de08e142cb6f8ad8d508fcc3c68da038a436392f5481df903cd5ef65c7", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ccc83fe601401d1f09714fd80908bfad53ab0f8b50f62d8fd83ba5c26873f162", "T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4d50c8e5cf3cab9f523b3b09d8211c0e12c2c0596efe45a3a6d543240aa42d88", @@ -6733,35 +6747,35 @@ "T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "6f8f8946fc6c38261177480c00a1369f1343dbc2745a0ed6ddbabc37f6794b02", "T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "05405ce086110a14193cb92cb054214394ebd5025c88acc3e76e9ebab12f9803", "T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "de43a61d0f6a444056e8d766041f331fc5e2d67faca999d3abec06385cb2d932", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "7d0efce62ee188516834f07f1b13a7dcb521acd60cf1d749f2aa73e14ee2867a", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "7bd401cac5efd77246f6f60a6a648f2762c006700389efb8c141b49c9ce9dc15", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "811996dc180875ccedeb46f9c17a39c50772c7ca0c0b8577918fcb62b32b247e", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "9956de7bc906c5d817ec83b2531ac8a8c50276a729c663fff81569f625d3e988", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "f3da34ed1abcb2308a1578a27b2afd1382e413a561baee3bfb7a623ba1ae616c", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "b3ea20be91ef1f8922e36052feab3175a7bb2d1b0241b2e00144683ab1599314", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "f669da914ce71f0455dc023edb5147e16a88c5fe502f6fea9579985ec12cbe85", +"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "c83ed354cc1d1ead6c43ea0c1af078545a8e3fe3a872696bef10e719154e5862", +"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "4e3cd9af85cfc6a633d54d482e6ad66b072ce7bb2a70f5958063307c94b21ff9", +"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "ab1f2a705e9a7eb9774555ec52d71117203dc9f34ba9fd2202b244a1bf696623", +"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "1272191fc819cb5024bee158c552d323eaf8871355c1f7319fbafc0f2405d1ce", +"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "5b1e6158abf213c56d0966fce3cf93a34dd999e1b19356d5b0785f8c889bc196", +"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "6e1fee75b60f7ef87db5d1eb825de35933ff8cf95a08b016ad5d8396d8ab6770", +"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "879a80464aa1b54a9fedf9d9b88645e0edb4d6472007753cf360ac6efea8e81c", "T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "9684e506d9f459b153794637d46d31b46f5fdc5131d8fab8120160ae647c357b", "T2B1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "a63183867d2c0bc7ce8d88cb8a70f91b0e6f4b644ed256d08d4445a28f645560", "T2B1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "d1f84f8048ebfe3e0f6e718dccf4483a7d30e6133be7bbc97b16019853e36256", "T2B1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", "T2B1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", -"T2B1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "2d5ece18bae54f3a2dce8d06cf33766461b2a293fe7abda134d89e2b60129bb3", -"T2B1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "0839b35e3bed8c89e7033dc3dcee28dee82ca1f32207614c8bcf7b3155ebc10b", +"T2B1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "a2e258a68df1090954a4bfefcbe3842b9ba68a335312862dd04bb9ef5e128c89", +"T2B1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "129cb9e232a567735e733b457306901e7335f8a4e2f37c46f766bc3cf2f4df4b", "T2B1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx.py::test_information": "4425c963cf13d2b4171dc5abe8e481421cc7dd4e4361413ab8fa1c928988dd6e", "T2B1_fr_bitcoin-test_signtx.py::test_information_cancel": "7789b5fd3f4ebfc8f4a558ffe5cec9d8c1db0e5766175db2c811fc1c951d1c5c", -"T2B1_fr_bitcoin-test_signtx.py::test_information_mixed": "24dc30105a6b197955940fdde85843abefd0b3b8cafbd9fdfbb3a10965254b42", +"T2B1_fr_bitcoin-test_signtx.py::test_information_mixed": "a6d4af1386d42948d559e31e8543b2a4843a3d346aca2cc7eaa43b0a6feaacae", "T2B1_fr_bitcoin-test_signtx.py::test_information_replacement": "f1ab90318e20f64bacf21e903f5d845e6fe2806d9b643201b96a0905edc2722e", -"T2B1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "ec007f0f935fc002dfcf2d6e52430d3b88d419e7f8088bdbaaa932fe2f57ff82", +"T2B1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "1f1f5859147667c31fd4588aac55f67499c4b919fdb00198ee4b8bb11dd35e59", "T2B1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1af2d7966d2a611b5a33bb35cbef0fc474009e4f5080171f008a0e3c5b06e9d0", "T2B1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "3f52fcc5d043b548da4ff6e933462042c8276d5fc312aafadc379284fce36c77", "T2B1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "666ef328c6fa58f1f3749b206ff638aeb0f68599e46bf14fc9182f9fed4fa36b", "T2B1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "1d17fd06b444902301ec2b45bbc2d6ec03e63e6ba0f2ebc398bd1405b4f73cf2", "T2B1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "c9026b0b2504f42b9f1dba444aa3c8cdc0d1499ae731c5a3f8c9573a911212d8", -"T2B1_fr_bitcoin-test_signtx.py::test_lots_of_change": "19b1426e581ef6a6e4c04eed8e10289dc026a1fe3f7a556b467e500274f4282a", +"T2B1_fr_bitcoin-test_signtx.py::test_lots_of_change": "02feb00512573e35aa6c0515f7a97083a832c36b09e297eae5503242ea84dece", "T2B1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "37335f9684caa9346ca34f7c45704dbbbaa1f8af0c818f63dda62bb9ce322547", "T2B1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "692bcb7f41a2c41a80d62af8c02ed44e3f7b99de9e1d00ae435f46cbf91f6700", "T2B1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "602895f0d3328dea7337d01a728aab462104c5672b2f1a7215d85f9dd21d00c3", @@ -6782,7 +6796,7 @@ "T2B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "0d130ba66ccb009be7600c875938f74ccd9efec046b15a9b0e6298890394fc74", "T2B1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "ea34e6dc0e5d2fb82a1ebc5b91948f7fe0494874b1eccb900ebfb6db581eace3", -"T2B1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "69a6c6ac67fa16bf0a29374b53dedb6e86ac3e84e3cab2276db96da96c1c4eb1", +"T2B1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "5e7e97c61bee5f04a0f8ee65f9f789aab73dfe518a49ce6cac7769d0592083bc", "T2B1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", "T2B1_fr_bitcoin-test_signtx.py::test_two_changes": "0a7b93ae4c6f3833a205474231d430fb7d7f00a7c2ea946d657fbe99167fe115", "T2B1_fr_bitcoin-test_signtx.py::test_two_two": "a4b980219ad39f792aa596ca00feb363294e8d178077c6d7fbf6e0f4841ae9be", @@ -6799,24 +6813,24 @@ "T2B1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "308f67efe059017095eb8bb0d76101297e7c76761027a4fad5b3b8af2f6f1717", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "b9204eb93310d5fd0696813a6020adc66ecc1c682452bf624a3a44bce1d90795", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "930352f313832b48e9b88a3785a1b30566d03452c488530728f1b6957d1c2c7f", +"T2B1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "ec6cd6d81f98ea8ffd79ce9ef5dfcd2187bb1beabd54a0d9a1b0325f05bb3aa0", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "f5d8053c8747c77aee89aada9fae957a7f1a1af80c78106b4a010db2d3903c63", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "fd8c70a06a492b55600b8392134772fa6fc56fbf0235d6f4ffcdc89d15639aba", +"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "2afeec8aba0da63e1ed0c69d6c79a3bbd47804f59b972233212c71c925602d6d", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "13631edc64fa125a0ace65e71a08e8fbf6a2b6eaf1293ab510943d957b63431e", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "48c99481a00d460e98294f8fb418d9956b8e40bc2247bc85cf1fb6183e3d2ba9", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "e5221650e40dc88dfc52d30eaf4b44520afc29608b83e986bcfa246531f0430e", "T2B1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "ec55c7a21f2fe8e04726dc699a11c34f29ce203a0e0b580749a005ee3394cf2a", -"T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "86160b335cdef5a3cdd4e062e9f0789440c5b5491f1c308f38ef32e74f190580", +"T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c8be255333c49fc92ad6f9543635a09435c9be8d57152b9c28bec6f1a72635df", "T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "d9a3acfb6cec3ba5068b75cbdec65853cbacf82bf45d2c4eff0d7d2191fa3dce", "T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "a68d31f7fb79b7b751c053e2f09b50d80b8086b1b705fe7203f38762dd3c02f6", -"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "ba6d75d105f294b5cf5028954fec1f52c98d3e87151af6a102b07a4c280dee7b", -"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "6a8e391fb6c2cb5a3e81db246128162e49b9ee8db4aa09d7ac67aba4b96de092", -"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "ba6d75d105f294b5cf5028954fec1f52c98d3e87151af6a102b07a4c280dee7b", -"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "218eda3936ed7db3020929eb2f335974ad938dea616c3252328c6b39e57048c3", +"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "2e83c5391f2c3e2852b4653a1976a67ba105d2b25ebf285270381332cd1a5bf3", +"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9000e945ef344eb29edf1c1238bfb263f7467d637474a2955e08e4e3a9c671eb", +"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "2e83c5391f2c3e2852b4653a1976a67ba105d2b25ebf285270381332cd1a5bf3", +"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "98f58bb2676c8d245fab40a70e1b01529c36fafd6ad8d764780e47498f7b0e3f", "T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a6a32245adfc684ee2a95cf22a35406100b4920e81793322d95711dfef9bbcfd", "T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ebdfe951fbcca236eceda840f2ede42faab476170d56d135b824eb6c38833f4f", @@ -6834,10 +6848,10 @@ "T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", "T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", "T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a1430d7ec9f5d4c70bf2cd7d4f9775d98a405d222083dd62ca9cafd417d6ca88", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a1430d7ec9f5d4c70bf2cd7d4f9775d98a405d222083dd62ca9cafd417d6ca88", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a1430d7ec9f5d4c70bf2cd7d4f9775d98a405d222083dd62ca9cafd417d6ca88", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a1430d7ec9f5d4c70bf2cd7d4f9775d98a405d222083dd62ca9cafd417d6ca88", +"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", +"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", +"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", +"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", "T2B1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", @@ -6857,14 +6871,14 @@ "T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", "T2B1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "740c7734a0ea42378e98400e202cb4fefd56d2340b624df539c1394134d8f0d7", "T2B1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "201da7b3a1e244f817da173ab2774f4a65199c5134e34f8ce5582b8346bca6a0", -"T2B1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e2073d9e8bdadb241c1e5b541ae4f05d2ccadd9c996b1a9477064688010ff658", +"T2B1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "d8980c1edc3c6de2bb0b7f25402364a9ea0c89e0c7a1c30f09a809ed601f2e7a", "T2B1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "601c5f80e66cf2b627052c94f03d97e5a82e9a3da6f6948c3387835fe8feef76", "T2B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ac38703e1b0f7585fdffd86a993031c540117f1695f4d5d445ceb1b8e86c74aa", "T2B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "d27fa6ff71c983955f6b34e9fcd2196f471938fd62c41caf99d8d06fc5badb2e", "T2B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "642c5ce0552779659c781140e1f16c48b87a674224660ecff7bb4ab836f9b4f7", "T2B1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5f85a8450ce4554546d252609fd9acef8854650f446daa214ddc509c94d4c877", "T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "7a5e099a5a45a69cc7f5db73895b802239e86da3eba642e4358674ba3ce66414", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "0fd60ddb33609aa3bb4b8a8cc51487753b21485f23afe1912d7a8cf650a22b88", +"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "cdf2047ac1962e93faab1e3e5f40173a7b816d6a57095eca20f3a44cfb5b939e", "T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "f1a609b6370c1e048c842cba3c119d698261e6a6e139ad778ec50c8b91761f75", "T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "1f5219431526b12cede1c2e40ee541f69a47b85302e117be0da2cf6a109beb47", "T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "986e59dfbb4e136199bf152d11e9206cfd589dbec6e57abdaf0f49a154cc0cce", @@ -6874,12 +6888,12 @@ "T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "0a13802d1e75dc0d5e214b538aecc5afe86225822e0965a09ca59adb7fe6f033", "T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "07fe597d023287b21b46c0851312ae3792e31bd4297053744e7da3719146d394", "T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a27a9cb01fd49837bed5e63b60b1d78140468e5f3d403b624dea8f09aaef7aee", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "c9aac40a76418b68bf1ba75d1904ced61a02f6577f2fcffcceabdc8055d50c66", +"T2B1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "17b4923be8a3f7c67738ae88bdb5111b67f1fafc55d034b38f73e1da43f18a02", "T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "3b40bbf0a128f6dcc04974f62d0b10b4387c8cfdb0262e3a7bdfeebeb2c5e230", +"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "8ac0b902bf5a4402c2d8d85507171ba2c68b1c91f683d55675eebf4d1beb8922", "T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6648ea1328f71a4183d9edcb3a1bc43eb7a617d0d8cdc5c02148c20a71921bf6", "T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "64689abd15ecbb721181e87a4f68cfbfd603d115afaa7d7308c60de3d9227443", "T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c6a7658cbacd03ac07df7ac54c9884b4abfbd08beb6cec1dc34c185e289cceb7", @@ -6908,125 +6922,125 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9afd57dda298198f84af1f927c2001ac654a9b510b1f3e6394bc9632a6e73358", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "91e57cbcbe0090b502a9a4c6b92bf3d78e7c679a62417cbba4175cb4d18850e4", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fabd30e3c20680bb8afd2fea71db37c87cf08ae7d5b55e5813f89e2767aee7e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "6182d6c6a4b29da72576eab13243a1210b77a52c0416eb3cb5ea5f1fe8380c34", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "8cbcadf00f2c1eb8f737268acabf2d942752610d27c75a16077a82b8fc4b167f", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8723687fd0ef413edb22bd2fc6e85c6fc8384fcea2032653b1bc72af978d84bb", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "cf08f0158c32a46684b50aba4b3d0409bb5776294b924dfa002aa53258102718", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "04d50f562f60113c3803ba3c0d99ecb79c3fcea1ec8a1067b9b3ecb54ebb9652", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "7ff4e7187fa116145201715acab3661d2da57c2ff601d3a9e993e671eb66390e", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "c74b599f109d8ff75371a433c7fd01ad48240b27d12f5ecfcd9cd326839c1675", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "fb0d5a557188a2da26ac0fe9296bd675676c66d705431ca5a8094b741fa313f9", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "f8007ca51957ebbb6677709a2b118414bb8f352f6656a936d27c4c6d44177940", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "70622901737432f1ab9f06863c9a4b18489aa2cb370a1267822d261830ae72f6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "69a7b4390592375a98433637b3578ccd137ec34cd5f442241d993f39d13846e8", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "f89db0a766f253ab425751742af0ecfa814a3a264f254ed2db86f32b3ff4c37b", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ff0b70b6e69e6b5422e8afee397566cdc92ae583171532fc25b5ff359b2bb4a8", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "414b10b27ef60e4a36f628c325887d86907194283d8251e8458eb438cfa5b729", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "831d74fcce3d0ea82823568b088b81ca90659029decc7e231411e1aa54404f1b", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "11247373b0b43d3a972b04a3981ef3be2a31f775b98ef1af082fe6b6b37ddea6", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d8b38404e8446360bae3c74bdf35bdc6e3af5fdbe4b2a0bcefd5640b0d07c2a2", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ed5566fc3941012bf1e0377008646de4ce41055172587365931c71c6933848ee", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "8ef9fcc796a11c9d569af552cf013e00b31c623e4d0f9371bbbe1e0944bd736f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "ad126e0018e0797f12a3fe1be0fa852e95a7584f8f6043eb87488394d770bc51", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "f302210253d20e8f61d6825c3e0eedebfffb5e968284f31a3ab4a679ec70498b", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "22548aebb8a83b1584aa80bd3b107caf3a3b1facc5a7f97eb937aeddaaaedee3", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "41c6933121f7595259927fcd9e6b01c1ac21d32f473475647f43d56e79bbdb60", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "86e849139da4f4848bb48e6ca2ef7c3bf6aad9b57f5d5e28ba50ae07a1a56e8e", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "e83f13963727c04eafc9ff6738f72611511862488d94179f7e00ad4e2d3f8d99", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "034dcfa9b3f7c55bb3680c4143717dc1bcb1d796ed0918cc5a6adbef1a3de991", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5aeef4aafd2814106b846ad9a8be3d438b9831fddae6f4d0fae5dfb89ee06d50", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "5399da3145594675c9b700b95dcf25db217ff1da868b4901f7425c91415b571d", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "0eea58a782df817b19fd27e152cdb3ab61f965d0d07ac1f99f8330105d566963", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "0361137998c82328b15ac5328e19da1c3dfb1baf648fbe64dbeb6a9814628c24", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "3108aea589454bbe9ad655d770838081e521151b68ee94e2c6b57179a22768b0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "864883fb36e5e84799dc9ca8fba87f4181c0c77b836e91ec30923b815a9c9a7e", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "b57a3823df63daa6f16e48e6921c07400038b6f58bee5f03c76dbbf06628535c", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "bc41d3e857b9d49dcf6937015f37af59e45f94d58071de57e6c83398706b2bf9", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b908c24f4806e326b30308531b70a867559ae5c95dec7472d9bcaadae37a7d4f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "2cb4318dc78a8d363eafa8d808d018d85a66542050d9ec179a1d556a10cd2d5f", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5b308c10f59bafd4e1aebde0a837aabd49efb790a6df51fe87fbb563c2a9c6ac", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "450cbcc103d725fe9f2a7b126ce1b52c1c8ca82497be8d189dafd85b1f7388c2", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "476e0f1043108e830be523fd0b84ba035519e1d72a62baaa1713876e35296ed5", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "303222f0353b4e62f95baa6da58429ed106311800ee0ff135a7e282ca4162573", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "2a3217141afd829d20378a142cfc0832f50abb9d96dbedb5c01fd7d76b93e306", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0db9a5d228a27d06a2700d14cca65c6fe4f2405f686099f521b4a99d03fb57af", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "2b2d0ef454dde1737a49445419555291786c96b92415b4e717fe328ab17dfe1b", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "9061014c02729725262bdf15512764d0b821d828e00ac0d4068a4324237bac09", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "fd5798bb727baf025c3d2fae5ba4f8cda13b24b8c94b717713e5681bc1f5d7c4", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7c93b8c052a8ae17f0dd0222745b8f9658575568d45967db960f69b5d476976a", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ef724f9f59bb56a619928ea07d1dd2a64c2b0080553f1934b1a7afdcaf728a28", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4f9b061285820e0ccfad3c00636576fee92fa7ac88f3ebe12ceb4ee51c3162ef", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3c60baa9caea69387e92169e4b5d51b75c418719383aa82c0d4bf14464b51b35", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "5fd802f7689488b34577429cb6d8c1d099e034dc675d2a10e2f1a450088766e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "2dc799d7563d40c827b1d6a1c8875cbc88188e2ce986b1b9504b7fc5f39a13d2", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "16086c46120d03d10a3a758d655c6177dd4b4edc7627337210d73141beaa1ef9", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "0b550effca6ba0d3b06c2502e27877af40376771fbc355a5ec30c02243db57ee", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "9a66162dbd3b55a3f51c6ec86a5c4f777a7b70bb7f69c0e78c33c94cadec3d79", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "5d9e4e7595b51022e94eecf621b7aea637eda9319f2c6b399e3c61eb7c527d1d", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "7b1047cc909f594b5ef4c9dbb5cd0975bb64b171efcc608bb000efcd59045fc6", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ab317da8dda931865217e973714bd8b24f0ba7e7c91dd81784dae191fe5bf9c3", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "2b13316dcf2ffd0baa21a1cc8e1b0ceee0d5bf34a2271e6955393f55ef25cb63", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "ee9fdd2effefcb92df1ac90a07706282b8f1fdbef3bb006c8c49af730e0db204", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "ac09fb4484c38b164a54664137a278a2f978cfddd5df977ee0d147d385dcb66f", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "00e92c80230b40fce9277554206a2685036248a1f15462ad016acd77df805fbe", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9d14745f5b58f3438c24ec3b3cc6ced879f4bd7eed9cecd32c768faba58a48d1", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "37598626b1ce9caa0318626a252678bb2683fad0e965cdcd30646cff4d288276", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "e89e559dccf0418dbee8a4bcbb8e00ffa19fcfe844e5e617caa479e4b39d7704", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "4ba3bbad44385fd9fcc01cea5854156e5396f0a857833b792a708c5d611c5355", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "0a25589548dbc34679ae1bcf85712b1de029de3207aa521366ef389e068882bc", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "bf9ac82b5e94e903027cc98d835a7b564802a863569d2529796badb976c7a2a2", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "e0e37e8e61e5c4dc2a9099fc8dbcd0a63f3128fbe103da76b4b788be0599bce6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "1ff221547991612425d144af53a8ea5b10a6421971d6316f3fe586462249ee67", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "113ff15fe89933220df48c0c366d015101e2bdaa05778fb90c248c76108f5776", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "5cec71dfe071c7e053b4698edbbc480a5f1b127ac7d9a797a42ebe46653756c0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "3221be209d375d698ef7ca8b37c293cb77407a18f012b7da26a71511f1598c06", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c2161a05ee5e6421770b6412a54bf8dbaeef15d26a8e229fd5a11258a8b877d7", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "89f2b8a1375757253476c0aa23bb1f0f3b85e3dfb5a8f2b01f3ee9f59950c2f4", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "20d68143d4d30f3bfcbcc1814cc3a7cf63e96088df630cfe3d6d1ebcaad17826", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "ffc722eb1b2b24f083be3878af89ee6146d7ed993d6acc4095dc49adf7db77ab", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "43a27a72933fcf9efb9da5fea6755e7198acad1fa6792aadeaae0e87379ae5c3", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "814df293396068bc5453131de5caad606cd3ebf44b138b761ad35a69f2b13b9f", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "feadc55fbb695d34ebce91cc13f8824cc8920f08bcb77d4e147b8e55d68c11ac", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3ed15cd47a83c41793204c557e8240015cba1b0d7df4c23559c0f59c97b1f4ec", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "522a40b6564cbf9bbf6049180793ec64d4b65b428a9fbf281bb219c450fd3f83", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "1dbc87a072eb794151c7465cdbec3d9fcd899023ee35c91c33e05435c1486121", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "b496c6693bc0e4aaa05f797250a5bb028ca0f808af33d452f959578a3f0baa28", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "5dde7071b299cedc37425b9c39e795dd07fc135f0d6efabf1a49f2d3ef2a9766", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "77c1f2df2ff8ef8b4388884816e5e01ccd7be51faa7799e82e18f4cfd1855b58", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "032e4056a24c47551e395efc5a1480e09af423e7e7aebb03e3d028a0b404a244", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "728e801d838291fc2514bd0427645b7b91e321892cb7cda3b857d1160d00bf37", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "1355c59afc0962a6bc1550e230e66239bbebe7cfb5e5563f1b4495c50484827c", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "34f7036788060850edb7bdbd547ab221b10aebd322cab4231ea339945a246bcb", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "5ce1ed6a69c65c7276491736a974cd03023dc908667a8f6d3ac310b241ad1633", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "b75828a131f43788a3f5ab9c5ef2cbbe2586a226a0bfa02480c1fe71a6a9049c", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "61a9754ea8b1d25b3ee63d0fafb95a4df196ba062967f4c2dd302809ed515346", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4d3d12674172ccdfdb2419535909184ef53f4b7f77a11d3e349d263a33d2a561", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "b0207d4db8460a8ea695f1d9dd75d175e4fe885336e79cbaf6ad048c0a219da0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "ba1c6cb7e3f5382a8b0c64c48df29b23a017826362f0eb2b9c908fc7b808874a", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "67f3bc469dd8f02772a406ec610e4b2c6d29cb921a4e2f9f38e2c19e83814872", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "6c28a96e663a9fd3d602e4ec3f3bd97955c4478b2e2cc3acb9338abf948e11b9", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "83fff233cb907b10a98dc727ed1ceb20f9c10d0e7e00bbd79df859c07c920a4f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "d6d29280f24455bc7c96103400af4a92b4f0e6ef4cdf9b13fefdba51a35f2b83", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "38391394385823279acd41a2f66190d401c93a85fce34330c5d79d75ced94944", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ebe247b36644b4a7c0bd6fa66a531d2cc96ac0ad719ada0a2030846ad45dc3e0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "46cf56f5c0e24d2c33ca7749b937c77214d55800929711da2f9d1ff793289572", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4e99f9394b8218e026e4a24440f78ddc2e35c690603c57fba53fe60b10b65e61", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "e2d241f05dcb84518be67e4ca3348618d8fcadb4424af95199a43d1dbe5be68d", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "7b698e415cfcb4756b20bd8ce216c81797efeb1ee8e7c3114826d3a96f5e43a3", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "70eefdf9efb7ff6e5417e21fb2cb29bb0db93067b76f17d102299c15514e7547", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "3659c94775d6dc949878f3883b5776806e00560d7d57f45b89e9747f848ae7e3", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e7b3061da9e24a7ec753c54e5c9601d41c4929cd67cd6aff68b811cf43ad28cc", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6e5b759ad9061127768f9f7c842193dced1917604b8e785a7dc78deda52fa658", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "9d72d5b2e595306ca8fe645fad63f38ee1ed4811228460ae772caeebf5a0c76a", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "b8a3906c386e2d370abcd72be87f14ed5546bec5426dffa2de0dbc3799184d7e", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2ed4dfeac9e12e918f34ff162aa80fac5500b586ee0039be26c116fcf8b0cc01", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b5a49a5dc4c0c803f37ae1f67cab2ba8fa7a34eac87681a94fd0e7253a51da85", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "48c106eb4f2c76dd853cfea599292e06d15d31f5dc575da74d012fb4318c87d6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "3d3914a57b980e22743404e75afbb6b4c46abcd40db575a5370a97704974ddec", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "4c90a9d9f2f0de30ace6cc8fd12784f82c968f3c566f24309aeadae6b10549ba", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "eefca3a4cbc577c50595aaa01f1fa922aa5a0cabec6c19d0248a3c2867b1510c", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "9478429c7b855fd2db6a13e82889381d071355f579dbff3765437ef9c84bf8d2", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "11345475ee05a18e59c920af27c3f317272feae7a716c66f49dbf5ae54141630", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7c5d6477069b081b09fa7679a602a55230e5d17e4e5fe1d99939177edc04678f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "c541c7294abb9dda930b5f91b242f1b392417c7bbf20c0333616942892d6f23d", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "cfe1dcc3de48bf92f34e000aa183bd8036ddc4cf7a1dfe14c26da710d5e36e77", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "7b0ec052c43b87a89327b7292a556942f4689dbdf5936af6b2c44ffa6bed73b5", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "d04bfe1dcb092eaab549463a61b6001918c67d479227ff31921cd88cd21d9c39", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "61359eef96ad3ed7b5292e5bae1d6e43841fa5d6e310d48740b2ce53e474c209", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "d9855d5785417a46e3fa267ebedb629ddc3dd06e713c909a5ffbada56c5368a6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "d04fcbf51b5dde4ef8b9477d2868e144f053df38e2bc161157b11ee177046bc6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "aba707a26c0b58557ac207e09e42a48fce309f1f40a09c45942fb0cf0b1d94f1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "b51810e3a3f30e4e22e510264a1261f57d1ff0ae0110f8a4bec923787f1d26ad", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "10c0eb7d23a5142e6523d9ce2c1f40d23fed8abed570336425ced40b892c52ff", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "6816cd446e5d0fc00e07e9bea5d3df5aadd4ea1fbf94ae85aa41a226b6a9e4d8", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "a8d321f3d454306582b5473d6d94ff8ed89805f04b40133cafccf84e6aead887", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "f966c1f295daaa2eaac30e02d386066a9451426d54c8ee48b5ad60750afb3ff1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "84d2f6797ad1094169c379267c6f1bc71c1e577a68b21669a02ab2d502d268da", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "b131ce1890e54c9a7530040b7677a52d0b61b642ae93eeeeed49c1fe9e740c09", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "3d63e06dac074bdb4c1738577b6db12b3f8464d2d79fa7a7f3670f94e502b51f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "c5ffbbb03b6539ed7bb09fcb367eee9f61831365488087ff809e40a0c085cd8f", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "6baedaedb2e0eb3aed82ed392ffd1110513643d7a67d7da1092df8fe33cfbec6", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6d828d0f2d5c4432b1092061259ebc2ff73e79567691d3dc7b4c28f929311ff2", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "ff3c3ac482fb7f80bc5554d466773b08a6c8fb6466756c668a82a5df72789348", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "798e3a1088f19dd5297149c57aba5758cce6f3e3e1b834fd2bc1387a1f8a4057", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "45029eeb0767519845e6c496ba8163e941e7b4b2cdf93e7d8a592b1839263fd6", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1cc8bf559fb76b417915aa19b9f865eb00bffbceadfc083bdfc1cbcf951a8c1f", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "894c43b0641ad5bd0b544a4a128b3906779a3acc05684008e71b6c313eb2617d", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "fa90193914c5c4e91fed16d959eb6ddff98b921016d287cea06d6de9f6969218", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e52cd1465934ba6aab8d9b445a3544b2926974685c062e15c7e92e7e8f3f806a", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "d4fb370502d7a578a93fed4bd9fd0539d28a8392db9cc63bd6a6e4704302f004", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "40716d9d67d36916809e39e1ab2db6ae30bd7f6bc45db0855300378f20efac92", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "85bc2d30eb7e8be15ede2d307eff2c73fcfd8b604efb1f3bf3b2dce63cc6f867", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "14d516f1222aafde692f24beefeeaf63cfaee3849e9e9ea3269aec9ef7cdf389", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "677071fe50b778b31ef68c46a4a6b62835400aac39f4ae20a24e5238edaa04c7", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "dde97faf6c90c0b998a60b074304ef2ffc988bf2d1288d6b03f9c5fa80f3538e", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e0747e726c7ede0889ad5b5d462874e6c389ccec727e0caafdcd5c7966842972", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "696ee5d8f72c02b4d3df8634957a823d2e1565d8b0bf4537baafd5d2e1811a09", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "bd5065d7c60bcbb3ed571988d4dc1175a0b05e1a2cd8639900910b8bd045af07", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "217a273734abd13c44a2ea5a12597c19672eb40a0db4fb7d08ecdf25d76a24ae", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e7f61e1b120e5cd847e9e09d26b8b73fd766d5c46727befa765db6fc359ca506", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "1a4175279f92ca62a8cda374d89056be2bf48be7c6c01ab576ce1743bec653ec", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7f6e7fea771a184d84b5f758bf14e415a171cd0483d6d6da494b810f2b3c00ad", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "87073f9ec4fd9eac1154cadf596174d19cf8719e9d6c33ee01c56d7d78956be1", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "d57fe7fe2091046891dfcc553ccf5fbc6036bf28954ad78c5b314b3e0e588859", "T2B1_fr_cardano-test_derivations.py::test_bad_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_cardano-test_derivations.py::test_ledger_available_always": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1032431cb11b86979cff0c67f11ac2a469fa3d28ad0031c05120ff36e16401f5", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b896c6aea56d750d445c9b78c94050e7e39801acf68b28617683b23286847440", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "2cc85d62e13aca814891e8d1bd49b8488d502fe39ec6abbe15347530ef10c209", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "6e38e287ad24d924dc25b17e6733164b3338e3ecb6c25bf753d18acaa091d3a8", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "47e3655e6cd8b07d47b24d5268f456820569eaab809f8749a4a4f373ea34d833", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "89695d35e19c6c842009936567b5d56f13e0ce5f0d579e8fcb4f342d030a0d4c", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "11cb3a6a056008dea1d4cf84ae782fd1b48be3e6f598b418420bb48c0cfb035f", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "73b00d829f0f9f825b9a775d2bef8b791563bc5a7b0aab294511cb7deccbdd30", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "265393fb7866443dc6df2bdcb3fbbb345c6ac26e65fc6e3ea0145522321581cb", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "40acbe25c694ca98cbc62d27ecb0b54058bf3186e1e615f11d0bea796767ee64", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "c17715b38218b4c0744f2de6d3e06fd6d8e3782fb5055d8be69d9d0e9b88fcac", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "eb7fc35701545bbcfa826a20109a1e63979ff0eb8f374fd28152204eba7356c8", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "fb77fead20e56de7f566aebd8c476730e7c48ed06ed0b78297343dcb813a2775", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1c209832b465087beca17525151f11877628f6ad951a2b1018c75fe03221981b", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "495dc5bbd7729433ebb34c94f02e9e9b58dc47da44eaaab512ba85b147253f06", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "bf758f1ca316d3320b0e946756aa097a18f08fe3851bfac87a490490b5741b8a", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "fb8d23b42d3cd4993f4d560edbbbc611f90a2e7b0846fada438182bccbad3c36", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "9a2afdba4f6fcd55e95b62326a3c20456fabb27a7b766a04c108e0bfe5c4fd07", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "78582b8d980e022736eee1ddf3f4dcf5ed6118cd8dfd924905a47c353dfa3da6", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "b38068d2ecf9407c3b8e8ae8ee2cad11474a68909641f2ff20d920bbd2ce9310", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "4c7d9079afaa79fff40970ede6b900924a4495ba022066db166b45648cd43173", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "073274174b477581f26c3ce4a520979ad3730b7f8e98c3e142cd97b534a00ab7", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "bd8ee71e8acd10d06e4fd60243b35decf6d461fa4a3f6838b28872242ef29d33", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "986acdf3317186bb6c381309c5fe95f90ea077bf31195e16d9fe8df64d2f28bb", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "aab0920405e83e3b78ad0b3a27ce2708a885c76122234b6c2c6d8dce5c46da92", +"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "2298c4289751e1933928cf603a54e0db8ef10d090f75c4a97511aa7d10e8d488", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "708c33c2414a72a00aaf049f9d1691aebcfc13bd5ea5e9ed414cf341d5e7767f", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9f645c724245630a63a9f40505bb4a1f634aa47ad3a2c5cbef6021ff3e8440c5", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3684d468bcaf1671136a8f4ac55e4d3ca2d4c19d34869c31fae44699e17a6dec", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "954169abdafc56e2976c73309f444925cb5a75d0b85803490e21ec8788412ece", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "44d758c52ff16a0914919850b7a8435d7b53093c91bcaf235acc13db72e5ee29", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "2b5181d652cc2952fcdc31e9a7473834cf8a28929e687ca652e63bda43aba72c", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0d9f55a90637f95eb89ca4ba07d0c2cd0f8bc8d0c25bf5549c4d37e25d509fb6", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3098e0a9503604bcb09e83a476bf01ca98eaaddf2e5afc23438611e98466c9cf", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "23e83f83e51db2a6b95c02e30fd3cb2b04f0861c2b089a8047ddaa361fcbaf3c", @@ -7053,54 +7067,54 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "c9d112df0b28f322654732e03ff32c0c34d6eed0e4a4157eb91d79224230cb35", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "692adffb7a41827180251b3199e540c11d4504b3fe75cee9ae9e8820a56a912e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8fc1c02ba7b9d1b2f826f2e0b842742587d919afe1828f779dc0267716df4e58", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "73872b66a89b817babc481ab6e2d45264ccae4f8c62cb36c468df579193ad42f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "5a9cf3e94d178b911c8c927560dad6b9db118b49a05dd41caf359da9c4265780", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "37e3f355aa158df02bf9f1c6672f8af4d1fa24eaea073f7c9c07729ceedf9715", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "028310999520ac608ef04bb19e4cbf7a8dabbffe6d508a93b7be94a49add8f13", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a5255264979d9f2dc8374b404aa192d5d53ba94241b5667e32e0395bfb485890", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "2592d80bfea77e3cee6c8da88da933389d252a47f6bc2321293cfed8f3ede3ff", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "cb3725e0575937643a618e660b0b6076146fe2f4d2638da394f2aaf2daf24f5a", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "bc82b2c0a9a02282f83b37557fa7c9f5735d3cc31af731c5b8127e22702b8644", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "b644900451db26204189bfa2726c6b22964971194a2db1883f56f0811aa32c3c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3bb26d8cc7465fbc070b5fa712ab071fef4ebda761081bfff3ac08dbd217cf6f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "c12106b0484ff6b75aaca38495a24139f413f2c3e6bcc004fbbf80afb72df1e4", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "01c1643b70a640660bba55d5643c38f21f3f65df0c965fc6f4ccac25367d6bdb", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "dae17121f7bb210d84cbf126265465eab0031367660ce93da74a7e7de8b1a55c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "a664e45480e9021633ce78e448915a9426eccb2311d1e586ae17ee3c427bb478", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "ea70610613af00f101976ede4696e049e318cd0afdcc37b731e77c93c4f0acf0", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8865ffe50e594810655f6b52e77456c6631c5c5dd138740eafc3f7b009d4f98e", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "ed008f28a1603e2fa52d19dd89c6fc491eeeca6ddddf6100059db311c43492d5", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "19568487e21985f72282e5f824367ec0f3ac3da9acd8b6723c8d5b57dd002cc0", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "fd7ef7451fd8df04f34b1e59d6cd04b4ebeec48b4e2c75cfeec835c39f43f211", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9336dd1264c6c75dc726925b1e0633c7050ba699a37afa1c3396c07c6cd93cb6", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f11869a54e5f22b58575533879d7a22f4e5bd62440268a4c724df08d6094660f", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "888f3aa3c58713a55e1835e723e6ba69a9f7c1c55a18947ff178d2f5098d6d86", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0504fb74f0dd3df126cac3815cda4b810562821d828a1d537c279bd4cf9b907d", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e6a8d8065f4b22dd984b376653d50766e634d04c1162d448be3cb14c275b5787", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "986171cae541717edf6697c74847b8a043e91ab44bbe513f981eca087765b597", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "0bcb295d4b3de072a40dc2525231fb0fbe2ec95029d620981b25d75ed88b9f35", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "03c9251821db82ce98a8d008d5b55133b07b8f8859a8ccbb6e1822391214658a", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4c3c0039040214ab600ca56c3e4e52cca9d4e9f16b8f28d3cd90fe2f157a2b74", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "710d29a244d6828e22427eb74cf084bfc3c1ac01eb92d22c2fbd7b5078b67c85", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "6a49129478832969ce1d7edfd2d2a45662a86da3c86d5ae8b80a9a711da41491", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7150f86c7a7743ef80aa77e506badf0c38848a77ed62963db98136a0a8279978", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "58358a17d933f3e11d64b212feb7df1e4f9396f6ea0c980f6212e682b7b2bf5f", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "9b122dc0dd1f98ff8cc4d5c3ffb318870d587bb6e700694aabae8edabd4665cf", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "74796d3f289c087ede5749937c3d52ffb68b37906d8eddbde1b82be69d3d55e6", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a61da5d1fb422bffcd62ae0b811e696dcf8586a36857bed4435c6f9c77798964", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "97864616a257c0e021cf4091b0b7835a50fb9f4a97608b0196bc30a4e2a82f45", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "41b8e44e39a01d1ef5a507cb8a3e58236a23e6501da28641e7add90f0ddd9680", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e9626116f5cd45f54f3d7fd2149893a8374579693b955a5b6d5962ddc76c3faf", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5801b49a0848ecfbaeb0cbcfec1f72cef497223319fe69a4b33ce9aa4f19442b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "34303a9388d55861720cc26e7523e9491675e3c51cde02a09a0fe39206eddf0b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "7eb864b01daa93438f4615532384079e477cee72f4e014b02d9d31fca4e93144", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ffb51df61de0c0a140321f8e843eb5d4f330de7de0d0fd138fe132496321f46e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e80fcb7212427dd459e385d7fbc8d7b36dd93c074a759c67e9142966caf044de", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "56ccfa40a9d207c386920ccdc6fdd5d9bb688035fd3e62b9c2b0c79d64f7eb46", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "72fa20e879fb05bb7b6830d72dba2ac57f9473fb7588167c7a1afa071d3537fb", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "9bf99bd1f843e132b2ac6cf92c379c5ac62b079a513e54413f01dcd251ffa5e6", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "f2df0a2896975471bc902ee93cee5dad817ab345da586f0430d21f4ef6a28d70", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "55483afb5ea9382407226905f0820f1621fd5e6f93a33159335aee05fd993cad", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "0eef7b292bb56c2cdbc3110a83b19d1d305b14b65f8218d68479ebf1eabeb01b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "fdebffd5d6707805c0f53484460b0c5c320f45cd697ca1ad802491287e94c820", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "5778c3d27b71d780eac684f0766710c77f6d2ef033ac5edfcd6d9fd10f656849", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "07906e020c17c07fe80b81257acfde89838b831ac449b3875dcaf4808d82cee2", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b9cadcaeefbb80f3b2086f933a3020896700de3afecb9558c498f7f35230135f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "47ec8b580e2ac82ac2b886c03652abb1337c823808f939764948b7225bb78364", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "13f55784e294fcca102d37b706b68ff52f7eb4dbbfa58f8e2a6da9a8b424b5cb", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "49df6bbfe2a333aa99fc836fdc42520a10bbcf527ab618ddf30b6ef22f40c968", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "86eb89febd533cdedcd1fb9ae8df7774ad941482196c94247636fbc750187055", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9b42217bb20bddeddfa2536aaef4fa8f524b0d61bab658fdad9485c74a026a18", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0b6d36f11550f0f8b59ccee39600c937fe4b8d47c43684ccabed75580bd543ff", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "60dbdd92aa9d03d231214be4c4445f4fbb18e8d00031d14ebe36905f29432924", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "018e4a903777f5179defbdda7be4bf2e5d34336ee897cc25860730491e204993", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "2839071716a215e6ad512d7651b43c6b03e3fbf78a0b53451ae5f5f96ff5408e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "302ec6622f228877dd07c7e07195215726bd003ef634772ecc38fed0586b0406", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "7eceb79e0bd7b634bb2bfbeeb9f251a0c661b91ec8fd1d12e6ad32531f957140", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "3cffdd48a5666f09b37145eb706180d4db78007fbfde53fc01df2d726bd729c1", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0c082de1503cf41fbaf39426f54b28229dedfa2d3c25fceeb0197289a59ba6ec", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c80e81b49d2da0e752ed8d9af3f82f630be0d79c0136838531b190d499bff63a", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "a6799e0f1d29f5e25036c388c1578f86e178e484753a79ed7c783a963bccd5bf", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "182968481fb25c934a0ceeb39f5725ca42cf2eb7d0e529fc4924aa4bbdb73f4b", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "29237f9e1a6f19a9648c58833e1a8b117496e7b766e9b821daf385c39dcc4ea9", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b8365a7c21df14fbcc42fa79aadf8d2c6981bb2ae679c87816ce97c718354293", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "59fae57ca493a6d4c8f365058710ac475d4a02faed1817895d6942b2480075b7", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "6fa7f8c42e5507af7d6c9a4a5b985c95da4b281e9c4313ec5f8c9da8f7a5d053", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "deb80a2e72daf3f9383243267c0bfbbe011950fcc5514206802900a146a87fb0", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "efcfdc814c8e642767a7e1282788bd8a6212a6f95f69d1d934fcb2b852f698cb", @@ -7132,10 +7146,10 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "30f230a7c8e84c0dfc18796af7b88cfa7ba4735310ee59646c6016db20e0733c", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8933053e3342b3dfb6da3f377b74dddd506a27c45ce30371b2539fcc5cf634ff", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "73927a277c10e4078cd45df4a9958c0ca91ff75c778b3da946ecb20fbfec1736", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "73927a277c10e4078cd45df4a9958c0ca91ff75c778b3da946ecb20fbfec1736", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", @@ -7180,7 +7194,7 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "7d0aa60a3a6d77480ad0891e35a29a866588d5e26c7559e34464a3cf534c4aee", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8764f7293968bd87b6b859c861c153fb0a02177509bdd9cfeaf71e06990624cc", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8f994375d2d39b845e7e65b6beb4c5ec612744d7af88d2ef834a64242f4b9e66", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "1001244c10b53646132ab241fcec0fc40eae0c119f71b646701d4ef8a24fa7c9", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "9c50e5b04d134fd7032e18761b89de5059fe55e1963fb14700c25bc750ed9831", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", @@ -7190,7 +7204,7 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "59593e20808363c5dc5bde4def7396d6c945deb7a744009c3ca491d81e334fe1", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c81afcd4d9aa13b148dd5d9932eda20afe8864d2a1f4f5c82de27ce95fb3cda8", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1528960f135e5dce6b387588fc5594a1e34da6911b93d80b5ddd062784b585f9", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "73927a277c10e4078cd45df4a9958c0ca91ff75c778b3da946ecb20fbfec1736", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", @@ -7220,7 +7234,7 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "3b986615aca6f2aa0d55bae690884996f70887d93cc484e9ae6d457b43ac7ace", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "a8346cc5a6bb518886160f5bb6055cb168490c7a4582e42f64490cccb8a0cdf0", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", @@ -7233,9 +7247,9 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "956936514f745a5aea047e2f351df4329dd9e4e56b76e5d5aac517f916ee06b3", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "f8abdf71502693ba90ae905e1123f16425b92c3c583ecf92b557c0f5fb3e9585", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "c82fcbd3d4d6b02a6e238e4daaf5470bc6dd267e2686ede63c7ca7fd4a3e6ebb", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "e5a95dba51c8a06946e203dd17bf8f88a8a66e6ea6da6538416af0281aee629f", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "8fef06fb8601e986a08c041ebdf7eac2ec613dd69dd40775ba3fb7664843aa5d", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "199e50efdae788798b4a54d94cb12b42f3024371c11568aa6193979acf4acb49", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "4abba34653f79e91c4b4f4e2ffcc7c930569e9b70e71ce787a06127652205377", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "615783b5758e8353b75a4745a8c41407ac063748007f602e74a5128f273d1fee", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "f92dbaa1f71e28eb096eccb84a0b7c7699c01d2607e5f94377b42fefda70f0e0", "T2B1_fr_ethereum-test_definitions.py::test_builtin": "34ef7794e8cd1e1302676298857eb7603f69d1b137290574e3bd72c907f98194", "T2B1_fr_ethereum-test_definitions.py::test_builtin_token": "0af55b44184df4fb2d401192ae62cfa19f8bb54900870433b007d0b41d742a8c", @@ -7336,14 +7350,14 @@ "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "1392400722748dfa31df2a1bee999f12ae67d67e9f3c60bad15a47777a7d8519", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "c849ef9decf3eacdc7a315a2a12d5d61ff2b8eb930ea06b422dbc0feba995847", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "0c4d843c5a41828d15a982b078f6b3ec0286b29e3659563ec1378711003763ef", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "8777dbc9a3fb51890f41bd40f7ae3a5861a401e2c6076f310342e3267cd401f2", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "dc00de55316b5cf8ebcaa26db507f0cfe488f02638c332526964e6621a875090", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "df350ea4cdee8d23803507248dcfa3d75770d3998a29b9d08850001b04e60c76", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7cf131c7386e3e3a73f1c418ff6dbd59811c4a8a717a6a06f205724927a68078", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "22f3f370457652e9db2496cf7f8fba37fedb01c42e64b23b6c15c5157788facd", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "3a724a027ad8c1457c4951e078d06cfbc110068083ffcb92b9cc912b9693ad22", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5e5b791079e5690807d9fdde093c9693a09390f1f0ad832df5e9580d8bd4d197", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "bed8ebc57024888e173acb4509a31897716d1242976734840c91fbbda9a9a10c", @@ -7357,17 +7371,17 @@ "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "dc25ad0df15ce2d64e3086f32e4ef1850cfe8327a07e3e93987cf720437395e6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "5a7b70c4e8eed68f59bae9335e7c9b701ee59e2dd315f3d5767f0caadc6a9924", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "827c262013a1b26392c99cad3897b4d95f121f7eef03351bfc159cdd5c044682", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "576cc3b678483408294ee8bea2c7100ff444f508886c63dcfd73abd1354a2304", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "dc00de55316b5cf8ebcaa26db507f0cfe488f02638c332526964e6621a875090", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "df350ea4cdee8d23803507248dcfa3d75770d3998a29b9d08850001b04e60c76", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "74de483257e4ab4fb9092e84bc1b44939af328ac1df8fb2f782be907fdd813e1", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "39d799303a3474ef419541457a2594a9e3add9cd471388d66442ddd8bbe2a74d", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "de2ae47cc080df1d3d06137a9931451a2be464ab3d26a39df4853ad32b880184", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "aa33dc2bceb95d614fda653e98158d442f318c2b16e224b34678570adf86801a", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c5394eb4baf730ff5e42659783a4675a6383e3743387651cab5894f25e5493bf", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "a8933ffb02b6fb13555a3c890e1b17fcbef10fedb58f05d636bfd08af9326e4f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "f8053139dc2b1b4d6e31d39adbaf06ef6806ad448091a658e502d54ec9b1b02d", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "8cb7270f20b61301526f18675c2c710d8e4f0993024996187b86863d11036d32", "T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "839a5a3102c0216388fdd5482c95db6d72dbb3817e454091ebc447b5df7768cb", "T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "0516ca238c47989bc7e66be820b7190a18245d0c6842e447a451418b8d67fce8", "T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7598d225c03a8914ac3fac4740f9e27630094c7bc7ab536bc57905cc2ebbaadc", @@ -7387,14 +7401,14 @@ "T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5d3682595e9fb0e7b0e9ffdff2abf53256aa5ead9007526f4cfedecfe2354551", "T2B1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "0442e496c19758c5918510bd2f38b18da51948b03cd11650ebbc99714fbcf8a6", "T2B1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "c75cb68e25fa009749bb990a322facb954131c8295bc3a9fdf55f40c4d3b7980", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "2dc5e8435cb0f5517d28aed0c2de1bd2b68dbbcddd8935fece0298816c6cf2f6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "d379c86c01541d7081f10666e02153d6d37aa63bcb6041e1e7a4f2dae0ad90b6", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "859baaa006e47c7f2cd1aba116b514d66ec8f3a4be7802ec502ecea9b41f0bd3", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "80d3e99051b5983c0d8aaa74dc35718e12a158b3e994c99a7723daad7c645a63", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "429f8edfe73b2121a6f5fb746fa96e3d581a39719f9094392df64784f0f550b6", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c495ccd67dedb9d0354b250afe3b08d6eb4771b66cc86de44ce98b9bad13ecfd", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "c4db547cfdd9e6fda33f81839b334ca7fa2ff0db5931afaa6b9ca3fc06c11c28", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "5a57cd27e23f917d82c875b3fd4b2540e0614657abb1a98be3b9060d55155af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6b833c27dba30cfe933c7f3ffe43a269abbc6422c8df71424838eb3c03460cd6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "46d7fd9607918ff7552f9f8762fd21c753236187c2f0c6b49177721948464489", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "f247fcb65211aa7d323ccd92a811b0b880f9f57174d7b05864257f7e63f991e8", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "c40bef4c8895862acc10c3294c6b6e8df2d94bfa8db39f022727336381398d4e", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "45a9a709df136a9bdccb5d4bdfa7c45ccf18657fc35fb1d5c6df6ad535c03ff8", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "674706b2d97a4d43edc349192d98278a94b293fe3d6d47ff24823a41e029310c", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "2b95c8e2fa89af319fe7883d931f5c9d7bb942458b251fe9cfa231ca4ff6d5de", @@ -7404,8 +7418,8 @@ "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "3fb883a472236e2db5aefad25e49d3bd1db6f02223c66d388e1e8da82377542b", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "3fb883a472236e2db5aefad25e49d3bd1db6f02223c66d388e1e8da82377542b", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "fc528b8c99bc2e96f148f693c2b033ca88f8fa5670f2c0a3fc5f91e0aed3d1e3", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "fc528b8c99bc2e96f148f693c2b033ca88f8fa5670f2c0a3fc5f91e0aed3d1e3", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "cee0f6a519db68f21773449f3e6856006dd40734e49b069fb879028322150cb6", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "cee0f6a519db68f21773449f3e6856006dd40734e49b069fb879028322150cb6", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "e2b731229d1427e2b311d23f3e096545613313ec5a3da4e50e86afbad6adbfca", @@ -7434,7 +7448,7 @@ "T2B1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "4554b246e452bb27972592676399cf8c949816da4a00cab368cea778d40f8ea3", "T2B1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "527ccd1f2a4ef84a181c06d4df26fdc2c582035e745d25aea9f0b114d8a9d898", "T2B1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "1070bd02fac2efc841080c0637bcb8caa9dc47e36295cae6d7c96bf0db7f541a", -"T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "1ea8882b4e451ea355fd8edc147b486a8594bff956ecb6fd3f6042f798d7be0b", +"T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b88a77fd08f3bb3bff5dc70f960878ed65bdd46dc34f11865bce617e7aaaed28", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "d7b2b7f911d0b1ebcd95275ccd1ecf1e7b8e53080d5fa70c01a8840dc23b1237", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7471,38 +7485,38 @@ "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "4648343821ad5ec6b3c6603aa3fa795c1799febfd04e1354f12d93a2e69b5fc6", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5c5133cb38daa00f4e965684e4897b1df963e078e5c2e998aee7e7b9f902ba24", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "17582941fdc0f9409c28cecbfb99c9b65dd5404055f2d6371c895ba3171d0fcc", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "bd4ce3204e120052ceea28a0873411b2bb716bd2dcf2f981d04da01a73fb324e", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "63247dfdeae4c7ace1eb3697f6371ab82941ee3519a9cb6c23ee0b4bcf41b32b", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "194b03b326e0bd2f9a9cf7a88a09caec0163fb2c1ba5acb078a75f76654871a3", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "8a7685b0a43db7e40a6f008cb70e678524676ae479b3d12186f96dedbf5f8a58", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "918d7a08b23874c751f09f863b670fb0e9ab52229aefd4c315fb002820a6b207", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e7cec052fb427ee9d00d91c964098b191efdc94ccf2bd509ab70049be4bad897", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "72577e4df06195a8579f8c487c7dc49aa5b6c2f8ea6622afac374b1c08442a42", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "ff1467749ed3e022171ab66fd03c6568b71f3c193f2c90f7a5595ea0c5f8e824", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "034ac0fb31045153a1a1b13de054dee6401ce5306f01ea8ac91977f7cdf7c506", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "94d6153326aed43f6fc30721b8363ea4bba3381b631135097647de216dca8e0a", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c6727312b83f6d0a99357ba2b94a125cce1d68fe03ade90c2d88070d59326dbf", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "aeb5f46b4150b041aff522d3f577f835d9dc76aa2ecefab5996f59731c6a1eb1", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fa696cd83ab11f1f6fa2f24ca20b612cc0dce7c54ef0003824564f713c1df346", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "a6dee38790765413d4e54a5ae2dbdc447239916248cd5bbdce6ea8d17742a888", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "fa696cd83ab11f1f6fa2f24ca20b612cc0dce7c54ef0003824564f713c1df346", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "a6dee38790765413d4e54a5ae2dbdc447239916248cd5bbdce6ea8d17742a888", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "f8ade0821951853029ab74cf96708c34c01f8d32b018b6e68eb022f397183eec", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "17b30c4587e882db803e977a3c2e720a93b84e14f9e018579947c1a577d0f808", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8f1d547db16a3afdef8f41506ca4d7765463c40af7b85aed22ed2efeb677e163", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "70610b7956860b8b2a413c62f81e00d87d8241811259c726da29abbe400035a3", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "26995904ca1ab8d458d13729517bba3108e9eaea8640efc6e897a3fff20b3915", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "9153ef94e9722a39034048f22a846119178d9b09ce5b0053d2a79d0839971419", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "dc83955e9013c6a11aaad82a46270f3cc1b6b764a65fea81d116bd292cab7715", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "96214a77bcd84b102f830d5c8f4b4a1e00c473f0d138eb9e3a3f0fca8600a6ed", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "bbcad21321f90814eddbec4c52c69d2d5d028e982b3820cb1345bd96aa6ea088", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "96214a77bcd84b102f830d5c8f4b4a1e00c473f0d138eb9e3a3f0fca8600a6ed", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "bbcad21321f90814eddbec4c52c69d2d5d028e982b3820cb1345bd96aa6ea088", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "0d491430f77ea78d347a6e96021ac43caa03a49e0e09d49419d2ad38be78b4f7", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "e9833c19b59419cba81c30878ca5d52c065b1e8ce8a6a48cb5396e47c9692529", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ba237ee2ef6942c26e16509bd993fe6d757868753f527a4a91310ba6d3a0a2d5", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "ff1467749ed3e022171ab66fd03c6568b71f3c193f2c90f7a5595ea0c5f8e824", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "a99ae111b297238171133fa517dd2f92cc14433f79ef7ed7603f8815d30a075c", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "b8f1e9599eff1f7e06c781fbe95438ff8b75460deee2a03744d3b55a9be2d8aa", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "39ec8530e18985774243bf549182aceda60b76bcc46e6d1278ecaa3a12ae456b", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b001b00020a4e5a74e31f9c751f215b7519dd1f01dc20f5f1769aecf21f5ec6a", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9e170fe009be0ba0b9594cf40ff5ddd496d23f1bd61d584e2c477d25f8a61796", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "91c84d644c8d8d3b5e415ae5791e2cf684a81729a437ad31f97464cf860a7040", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "3c7ea9f1b55fc82f37c02f1eb3defa962695b4fb7a8609f9bf073f8763d82c4d", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "cb3ba06a9e1bd9e45f4c46879f7aa4fa9eec23510330bd686a36adc4ee487c75", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5647add583993e1919ce83189838ab56d08a8735521a00b21b89f0e9534b2eb2", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b85beaf560092b2be3b42c1782a25e576a0e958f687544fe8ce4d696d60d6758", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7b9f0aaf753b22cd2c20e06b2cfffaa0591432fdf3f2a8c9586f54fd3ade59a1", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "47743d7050b53ac4324c471f5fa265b54f2195bad2536141792405bce1478a19", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "de156d31a9483775d4c736cda8a6d180944ffb54cdbd789954b1b0d4a52de304", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bad0a3a60075b538b0794cbef7aa499e6bcaf9deeb8b793b253fbcb31a3eef3b", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f19d4f7b8adfe75b8d4925f19fea9652f6ad0226ce85aeb2fcfa6e0c4f4a120f", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b0f9ce8e4aa6515cd9fb549090c03e66dfdb27fea2ccdd4423e1a9e7f609937f", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b3dda4d10e5f4284a002f9ba581aa88a237de6ec284a9383b69e0ee765a3b983", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "f6fd96a5fc27ec5f125eff2dbef1e7da4563acab333f5899e0b9af8fe42cbaab", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "adc84514ded91e1816a828d25904243a0a35fc994a1e55a59e0988a5f2d49c44", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0daa7a91930cb04fd3dddf1bba9ddf7cacae6f9297f60967d098fc00bbf63c71", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8bb26aae8e6fd9401e78d154d8b359b68f2714b0e66b1fa3b4a53320c1eea747", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "bfa11994a944d76ccdef5d0217d39856f69f0c88da67d1037d4a84edde6c48a5", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "1fa59516ab6437f0eb6a0c6e724c0bd214e91079a5bb548d1fd1987825957e99", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a87d04a296a08b073a8859dcd7e68819c40e15463e093ff7d19576ec7aaf9d02", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7fd0ca1272b6b64ab587edb3b661347605d78da004c80cca86fa57071ba97e7b", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "d3fea7e4029df3ecebf53df1bc7f92b80313885f4cf194f563b6a116c377ed36", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "7c89fcc71b5e3986e5241ab3b89963fa68661469de7c6dcd33aaa97c43922cf9", @@ -7510,14 +7524,14 @@ "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "f1bad761df826659c87bbef5b876f549daa47de0cc41f1498f242dcf4bdd6532", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f80cca8f74d6d1e1860c3aa6698f8cc75969cf93ab5feefd80b4d63797b88457", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "7624c3063a77b941a51f59802095adc37882c85af4ce43f9c24e8209c3cf87cd", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dca0b979475234a86f863ff4c1a13b2f1232a8f1937a83443d0331e087359f63", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "867351ec7280a04ad469c95cc0b994fb51dacc107198f28e76bcd25d9b870155", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d21eae69e5a7d4700778f9af92ef6e302927ee1bcbf98a3932fe8363f7ae77a3", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "40b2a4b343e9fc0e835cf7e90a3b3c518573fc6b42c61ff5fece90e07bc6a921", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a165794bf46c38bb0f95a3717407890741fcc35443aa70fc91a76845cd0fc747", -"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "959155726c16a29bf40d6c8f25336c3786b90cdeb5cd4481fd75aae6f89de86f", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6af750f41faa5c335006b3666131767964edcbcf7e4abb177a1d3094dd9c7ea7", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "07cca9f3bcb5a62bcd3f17146c2a8fd3cc30bd569988ef53f591d979d8975128", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6556cde9bff6d9cd92c6fb8914252b3af4687ce92774fdf1d457d3ee387873f5", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a981a39599ee54b70a048d342f0ac4d11bed614de5867061db2994f384c9cc5c", +"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "699b6c8894775340566baed8fb966900566d45b854d1d74b51b333f426d62405", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "576156b7d1564d4908fe3a02440c51cfdbf7d9a53bbcbf61c82300f4287b0ff7", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c6c346b761e3076249c32c2192608302833687e66a36906e918000336da44065", "T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "39b2db2fbb65d222d9b70cfac7c6c1d8743e4f3d07e115548f6aa6d614a540b8", "T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "51268ee1cf65fdc6643d1d20f84efce1feb3acd8720acf68db3c28a710d9890a", "T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "70ca642b526586bc3acd28413fdc09d2f0ae3d6ff18d7a02a7379a7ab663558b", @@ -7529,14 +7543,14 @@ "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "dff804b3a83122ee113c995502f97618218421d979fbd4f48214ba7ab7ae6075", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "669ec582f94b6c09cdb1aa65c4ce788b4d55f8f9cdba4af4871f0e18683e8064", -"T2B1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "296354405560c6dbe84d14351b8c964a911d654d99bef8c624e2ec729d6fb13f", +"T2B1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "4870d932c72f9a9ea8d1319cff056cb0d2f7f066b682fbc0725263daa134594f", +"T2B1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "9210dbc1a4e62c883dd1f619a719ac7448efa44db9f615d39be7fabcadd61e13", "T2B1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "45b1f01a1f1260a546014b06d8102fffe3dfe17d6934306b9eb07b7ad796b12d", "T2B1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "30c8738fc927cdd01d45e1b16d48d85030de4dd06c5fd1332baa3b46b42ed582", "T2B1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "3a7a82917e448cd7a999d7252d09fa8e7981dc2583e6c4a15b4c56621928617c", -"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b2dd7b3533e8662ba580e6629a4c0ca2f46f846b13c49586461ebdeb95f7de2b", -"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "021aa5e74cb8f52ca40ac3c52e963a8d9206ac8cc7acca41444ac84abd7db9bc", -"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "1614324f4168df74bf8a48691af3ad6611c6258f828fd11015e4541f77075dbc", +"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "f108b11687ed6315c03799cfd93bd844a4f14e1d06eedb0fd143a51913c15508", +"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "e6dd7d6061671dc77b5040c3709c935f4d8c83d7d2760eea399cfea56569e192", +"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "0b9198270cd62ce57ab58f6c82120084c6b6ddffa637c45c92536486ee2edc41", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "b246b23315405a12c6463ed64e74395dc3e7fb8c9e06256317b7631990b0c3cb", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4f107e44754b1535e0b64648acd704cfc71c29ad2015a465389ddd6d4848eb75", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "0e7975c4feab17d0bc079c34eade264b104df0f3b6d8a8e6ae01099fbe4d1b38", @@ -7560,6 +7574,7 @@ "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "ae8b4050cff6d2f503a966e7ae5097ba8c82831de62ed66f747873d20f20b72f", +"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8bf58a89c9f2af059a71cffaee24d77e1cbf59d5aaec5ec00b86adb64b62e8c3", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c0d933de22a941689439a0913aaad0c090a433ce2c824072d72c97841c49c2f1", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "7650f45d59308e18cc8bfa90c95a4d41a7fabaef7eb43935215233c23e4a02b8", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "c843fdaa220aee37503f5296e2ad7c3c4667f036d92fd130cf96cb4ea7cd1b33", @@ -7596,9 +7611,12 @@ "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "82252d39ba5872ea309a1f3a564149f6e4e54a609a8fd7f020070c4309ef9d3f", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0cc21f781433b4c40da93e686d9b1ab1e261dd8f4577e066206d91fdecd189e9", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "0023ed2d823cf1c9b2c03961bc659716bc8c96c4687f5c2e832cbdb0bf6f1f9a", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "121400a1a5da2f96ef9a35a643f74d2241bce2268b1c6703d40c4647a3bbe94e", +"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4d2b6b5ef20105bc65b8ae50cc9fdc51323fd0a103717fb9822afe6a1ed07490", +"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "56facf2f1cdf7360595036566b816aa3d8bda7672894c835665a4780164fb36e", +"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "d39eb6f629be29287b8d6d35bbc4283642c5f4dcd49ad47f64b6063399c87ec7", +"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "e0ef53b54ea38d348fdd2e2dcaef389d211de0a778a55ba7115dae0df3ca127c", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "aca8a0a33893727a4bfd9e62975f50950372093a8d71aaa12d1b18074c7445cb", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "3b9acd81a5680e7382c1e188ad7cc9eda00bb0d3a6a1fd96a5eeaf43386990b6", +"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f7c8b98b105f99edace2bb08f5391c45e428b5e31c2ff30a7db2637e26c0cf9e", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "ba88d0788debbf9f084360ef3b373bd22602c17deb1f6773f2bf29194aa57fcd", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "5a9e1aeadedd3d069d8695cff987b388f827c06764d0fd2126637cba54aa27c8", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "c59c9d49a2e96b10eb7947b804bece89c9b624cd1290be8f1cc6c18d1793bc64", @@ -7622,37 +7640,37 @@ "T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "e6705676dde88924610553fb2b71cf978cadacfc388914459c4405e3303c4d02", "T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6f3b9432dcf164cdef0a42092be7099c769a79b102f7c479971859fa02d2dc00", "T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "43a2df84cdb8fe6ee552dfb8685859fd1796fff96e89159c96ced1b4f7a1841a", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ec36af88b5b2353722242445d481c311af0fbb9625739549fff77db3386262e0", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "37fc8cb52571ba4e7cd66107da4f89c21168740e2578fbe3fe858111107f5ab7", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "2f2e129b66517c8fa9f69b255efc0bb6977ee255b794f55ed921e237a0f4f63d", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "9ae129e0087e9fd48b8d3ccb9ab9a243ed5922e4f64dade5f0588f31cf0c8cc7", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "6268ccc7be115c0c9ce1c6b1ff7d0f62bd5722357ebf5d4b24cb458ed327cb94", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4d4242717820e4cab35d3592b9286e5dc1cd5aebfbf4015aaf8af6d04858f2a8", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "281c239ac6d1a023382936bebd144204f5600120223ce0ae32cba3f6dc97ca81", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "75237660a5b6414a28c86bb23b11c6d7ebdf98f110ab29091b354fce53093c03", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "eb281d9308b4c5489f38cb94515d226e73a93e0b521e4b9a3e0e846d2d17c466", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "507f0ffcc98db7382aa73f74478c0ff90063affd6fbf27ac39147f02ef05e865", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "941229f64f4a49907be49b9b5b4536212850bc8775381d8a6a75193e984248df", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "66da51d1940b4f32be467d18e4a9968610e16be0061bcc88886ba6cff38c43eb", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "9d1988a89d0be6d4a67b3ddc1f87f71a9da196388a5080ad6e1747f6012b9546", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "e99e605398a3553cdaa2eeabe5269569bc63dfdc2b805bec3ce77c27812470f2", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "573a060fc75a53595bdf9d8e061aa4d34f1fb4818fa25b1ddd26842a4fe0f8c1", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "fa1e476c00369ac49baefded8d2179a42eb8397b7611c10799ea2cbac88f12ad", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "5d7cde7b16a35d60bf7d874c0d787dddfc0662d9c1b8637ee066f87c84d711d9", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "fe240a35ff906c31e75953e5b85a398f2bc8d26126ab709ef7ea92eb042c7bf7", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "b1889c923e6b6318010575b87925027f2d0c63eac351b8eb9b0b925f5524b547", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "b8f8c8d0def1e484da2b205d11585e464051133ed0b570d0f780de8c064f8ef3", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "452226212ac1576f190f42e641b4e5f091fe5e79b7fec65432e6f48a1cb997da", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "2877806c0b848b2d8153903c49b2dfb5242e4ba7195b1f9fc9350880a9ae3b90", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "81a3803ca4a0b48aa112cf3432391c6714503426a4593ebf25455c3a6736da9e", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "dcb797f948fe4b7872c7d4fa05b4dbaefe05083508739a24f76257c137b65a7c", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "d6884b480f6237e5adc63b85e4c8db9c0c72a8ecc0aff39983a82fe768a2e4dc", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "d682250f77f1d9ddeb4ae3704bdb752f352abe9c2c1e2d958b3d1c7862cbfa54", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "dc6d67612ee58c461329481520671e27f10c527c7cd3295081492a114aeed7c6", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "49c7aca1edcaeffb49260dc6ded47efb55390bd2e3e0c7904a8d0854adc4e194", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2c87c678cde50263aad91e2612f7666fbddacc55d30c837a45023c92ebcdb45b", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "5d7cde7b16a35d60bf7d874c0d787dddfc0662d9c1b8637ee066f87c84d711d9", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "855e1814fc2b24bb3e2875b9c28672347f0a0ce32d3020fc0f90ce84601bd6cb", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "81cb664437f9f48fd7a3c44178630beed86a8b55bc7c524fb6f9974b4f4d87a3", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8a33a2ab5a8ae77a1ff6ebd52ee4682842e8850a8acd34537df4d3bd489d00ab", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "113c22dd4bf53acaefc4c7f54027a98c3d471306ce51175782c9d7e782a54bd3", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "598babdc99028fbf1970b9329b95eed9758fe21d98908958f880ad3b25417a8f", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "84097e9eaf23aa6431f416a8f66c1860baa413e2a74c64c70ded9950de79be51", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3b1661a9bc8288bae527ef8b303b0f88c23f9aad2c6c8870e5c5fad2a42895f6", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "3b477db2d3b578b15841e41ce934e245876df1427114c5dbb125346e6b2345b9", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "83312f14fa749638a193aa54c2a473bb7815edca58c7e5889f3f84b6e09aca83", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "68844b4f02c25bce011ae056ba27f34e0c6099be2a230878c1cf2f0bb30c4b85", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "5ed46cbd98d8d67006bb495a8c238956d6400b0a54347bb53a6efc60e74eebca", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "476b193e50e3424546c728247a887413e3195f22da3ec2603f4fbc18cae92452", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "4f998bedbb71d3838a5f59adf12c098bbddd519981341189693f20c6640fdf22", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "66c1a6defab41f5516611f7fe9e16faa3486f4a93557ee87eb5025c485df64d4", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "95ad07c968088414f1e235e55e193ee286ef1f69611a2ee4eea8b8e6e06621d0", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "d1fbfa0a8c7c0869b4971852d9b25a954091fac7337c7fbbd5dabf1fe1bf44bc", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "922dc44bb164046057bd739adf900ce9c4969a256a5f1c4b13ee0cabb2fdbb4e", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "f69424f0d8c737481fb5d27776c9fb61ec26480d5bc1f85d5954f9222b1ab3e7", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "044c3796d679fe0ad75a11abf1d3fe6675202993483dea7f90fffdcaf850f1e0", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ae5f6623e3ae10f2bed6e34a2b94ec812c0b93ad98456d319b5c368a1185f663", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "e466fed20e27f4c97775901ae78fe590378d5eb13223aa7a292b08dbc9fc1b74", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "029de7294f2f1b0cda653e75191d9202c3b52f60bb843f8ef6e524678eece8b8", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "d05d89923d4857bbc72d078cd05facf7c66208095019f384624903342492646d", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "73edaf855d9440f0b23ef2c0e1ea7da3ea0d2006866fd49b3c24287dc0a7ce88", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "90774a638a019371bcd844d5e7020cfdb4084c82c0e875c4c5e5db0a34277d84", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "f205dc8603e1ac432855d63c80df535968c6a94f1b5b9b7992a82a5f20752635", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "2f9b4d8de23473e569dfae087f5d7c8bdf55107739c4110b8c88788d86d4d54e", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "19862ca6fcded3748b3297f458a0c6717032af79adf5d6207d74885fc94c161b", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "17b33460779f9af5714ef576949b068c1c9f56e8affdf0c2f42135b10cdc262f", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "38cd688968416eeee9a39c8549311ba004891dfd1643cce126d930f4a5619b9e", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "f69424f0d8c737481fb5d27776c9fb61ec26480d5bc1f85d5954f9222b1ab3e7", +"T2B1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "04608b3243cd4f13ba9d33e6d7b69f0c4f56a032d92a419a72eb6d70f81826d5", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", @@ -7686,7 +7704,7 @@ "T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "8dac501219f38847b56cc659e833106e24587a7cb35440b411bdcf6bd78ccb9f", "T2B1_fr_test_cancel.py::test_cancel_on_paginated": "ff0916ae4448c4a453d72bcad8551c67d5361bba6d8c16fd5df956ccfa1551df", "T2B1_fr_test_debuglink.py::test_softlock_instability": "d8951e60aea2164863302838edccbf0f0b4e326062b3e02b8d366cc5e6f0ad51", -"T2B1_fr_test_firmware_hash.py::test_firmware_hash_emu": "0a3a22269c264a5e1f6d478badeecfc55b63cb42cb44ad993752bc0a10a7ee4a", +"T2B1_fr_test_firmware_hash.py::test_firmware_hash_emu": "29f74094a536aee7cafbc2e63fb29084607787ab9351a9b74ab74b20a34c60cf", "T2B1_fr_test_firmware_hash.py::test_firmware_hash_hw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_language.py::test_error_invalid_data_hash": "c3c594c2d963c7562250b5cae43e6933a6c67c8b7aa7063e58de94e56fdad446", "T2B1_fr_test_language.py::test_error_invalid_data_length": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", @@ -7695,12 +7713,12 @@ "T2B1_fr_test_language.py::test_error_too_long": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", "T2B1_fr_test_language.py::test_error_version_mismatch": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", "T2B1_fr_test_language.py::test_full_language_change[cs]": "42b092ceaf24b5f24004c9abfcf3536a297b0ebefc94767a6537c874856ff7f5", -"T2B1_fr_test_language.py::test_full_language_change[de]": "9c17773272c038309f1fed6385f1d6a7adb5d92719e6ff4e73903037076df482", +"T2B1_fr_test_language.py::test_full_language_change[de]": "d51e49abee6755b254d37555830b6bebfbca95f549a31206efe11e2d08b8ef2a", "T2B1_fr_test_language.py::test_full_language_change[en]": "5c8ccc0eb1be8baebf3d2cd0a60b022728933ac4180f27a0caa73a5b9fb0f642", "T2B1_fr_test_language.py::test_full_language_change[es]": "e27434b09eef1556fe6fa0b050fb2b43eed6b4f37d622b7831a5fcbcde3f72bd", "T2B1_fr_test_language.py::test_full_language_change[fr]": "7fae72778d7111b0d7746ce3fdfdae724415f651b2c3e195da55dc3cf6e24f8e", "T2B1_fr_test_language.py::test_header_trailing_data": "30a19ba738d7bd2b5309351740a5102da462e73c6ec923a0ae92dc385c1c6f9e", -"T2B1_fr_test_language.py::test_language_is_removed_after_wipe": "9fae7538eaff6644b64fa0a77f99dc5f068dbfd8e739dbc3232455b49c828fa5", +"T2B1_fr_test_language.py::test_language_is_removed_after_wipe": "a7a194ab630b992155a116a4ee46f4635c2d3d63555cbe3c6631fe1e6dcaa77e", "T2B1_fr_test_language.py::test_reject_update": "4c1d851a4f7ca6075e71d096a4b124b31f8ff280d609cc2495ded9750f057b51", "T2B1_fr_test_language.py::test_silent_first_install[False-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", "T2B1_fr_test_language.py::test_silent_first_install[None-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", @@ -7710,9 +7728,9 @@ "T2B1_fr_test_language.py::test_switch_from_english_not_silent": "2d59eedb25da2468512d9576ef7d7f4528804d4fb8bb1921d4ee8d4d20d91196", "T2B1_fr_test_language.py::test_switch_language": "d64c176bfb4ea6ddbb57c7b609ac0983b335ae0ce503c653480d379caf71976a", "T2B1_fr_test_language.py::test_translations_renders_on_screen": "c96510d7b9812933713c70d22e2a549f12e888a28d8a2624a649d73bf3871d12", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "61e42f4eef33a9f482a1593dc245186e26883d3b78e3d48af1651bfb5fe6e3d6", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "184525975dc813659ec4b463cd09b71eefa7ddb250f01dd34b3c1a0010d203ed", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "f7ba191faf53af8474b217b64f6273692d897022b42b85fb02cf9dfd701d79e5", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "cc2a971bea1961b8f83db9163ceb75fdfefd0691cbd578fd297b26f3069f5557", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "0ff4f3d608382e8e96b8c457cf878de0a84b61fe8d4462f0288c0daee1b9923c", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "55fbc311b8bac5c3b50b0c3e0dee2677d696243418d6695fc3cc93b1ab8f0032", "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", @@ -7728,37 +7746,40 @@ "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "00ce5fda115418bcee02aa6e244d22a1b349041c200a7fdaefdf490504fa0161", "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1ba703c3e1603acad5a8a0291a8d6f8412af0c80df5de4bec476917563192b29", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d04c8c1b5a485c058fce121ac6788e9a5adf58d691a79b4a1be414a0911f0cff", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "f6bc8aaa670f08f91fb4a521809d0d31c72a6145b9b0ee2d0ac0c16769415481", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "601d03c364c2e120e55cf8fc53fccc59e272d0fe9506434bae8848e58b970804", "T2B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", "T2B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", "T2B1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b95854ea0794e282b54410749bec786239c53aae2ed745538c63e645c8bea368", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3e9a4b66f089140112e815ac960ba6fc6352e96d215d47f8481dd0a31cd99bea", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "371819f81b71d649e3651d1793a2866bf050a8f82bf647c0d7fdf88ecd478075", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "15e4d4dc16d24eea2049675eddc8d29eb8bd77ee63c8bcd084b5a0c6cbee06c9", "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5364e98bc3e6941907557b4d563bd51b1dea6c6c2b789acd75cf81ea3b1f2b44", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "27849b498ad86eff26552c256fd9ba0377f2818d01a77bb14dad0b96efffac18", -"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "845418eebb17485c92b8611314039f743dc8ceb234e898b65ef797e9ca7ca97f", -"T2B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "8765ba2037c4395499211daa750d78f9eec6cae66a3a5b032254f09303f2947d", -"T2B1_fr_test_msg_changepin_t2.py::test_change_pin": "e489b16f59fb2b071f2aea42e863882df604e436ec2f2d78238f7aceb4e4756d", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c3376efdc912344ece8840ad8df189c89d37f8869a0badb8e899bcffb27bba12", +"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "4e160dffa7921fd8eac8505f5c705bc30706ff9506beee4d48cb05f6c4293434", +"T2B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "5d9102a9d47e0fe4c2a89b56d2bda768787a9a6170fe95f15180a023a0da4043", +"T2B1_fr_test_msg_changepin_t2.py::test_change_pin": "16eda873ebd99eb3ef94ab98187cccd6fa6d630ed2151b385d2f96ad2ffe7a10", "T2B1_fr_test_msg_changepin_t2.py::test_remove_pin": "248dad8c0f796f0bfa8f24c1213ab207a2032d5568ca714707a9a42acb377e1b", -"T2B1_fr_test_msg_changepin_t2.py::test_set_failed": "1274e127e423ae4baf71651942960021035e43720ecee83583b2557a1d9bb4d0", -"T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "4b2b7b2a5ad13138382e18f2534a2f0ea90c92829125ac6180dbb8708f2d6874", +"T2B1_fr_test_msg_changepin_t2.py::test_set_failed": "c54eef85a1d0dc450a51346dd3d7427dc351f24c0b2350c878cc08b48472476b", +"T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "a5f4bb1f4708018e27cc69c8b44b4af3a1933b57dcb113c2214b4d0caf4b2b4e", "T2B1_fr_test_msg_loaddevice.py::test_load_device_1": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "61cb1f662a0d95ce8b6bb03dcf5ae93d1c06f6ddd6154347d041d307ac994d7a", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "2a44c716592eccbf987dfbed505571bd5958263cdbb43622ec592c9d38061474", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "f4674af0485498c4c24157487081377b8460d905181758c0d32ffac7c5de81b4", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "e461a4be23ac97e533e270fcaf534e97991e03ced635b7bb07a937b9c74bcde6", "T2B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", "T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "226bfdaea3436b63d6219c91b44fa3c83433e5d0825ba52e38f7023eb206143a", "T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "960d2712951d706d1c588545edb7eb3f2718765e24c172d0dfbfe4b10b20ed17", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "314c381cad7015a4efc240d27ab593a8795d13e86d05acc47c06abe322a7c853", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "314c381cad7015a4efc240d27ab593a8795d13e86d05acc47c06abe322a7c853", -"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fad76a56c29b9f7589b831eb2b86881e6a29312f1024e08112e6b5f9e5c92ba1", -"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fad76a56c29b9f7589b831eb2b86881e6a29312f1024e08112e6b5f9e5c92ba1", +"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "16d97922df63ed6436fccda16e7146a4e308749a2eb324501bbba79a92dd5ab3", +"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "16d97922df63ed6436fccda16e7146a4e308749a2eb324501bbba79a92dd5ab3", +"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "d1b42b827ae964a8ee33603059ba1b2ae766d56678b5475a5c8545d8609b3f64", +"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "d1b42b827ae964a8ee33603059ba1b2ae766d56678b5475a5c8545d8609b3f64", "T2B1_fr_test_pin.py::test_correct_pin": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_pin.py::test_exponential_backoff_t2": "d93978c7b01dcc3819595a4f76343b227fdceee7e4d70f5b14c2376795db027a", "T2B1_fr_test_pin.py::test_incorrect_pin_t2": "f05b31710bfca662821c34ad797a3b53163729e76fd79494a19d80d56ce89a56", "T2B1_fr_test_pin.py::test_no_protection": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_protection_levels.py::test_apply_settings": "f8cde865d9eb752ccd56d92b86492929b5aaae985d3b05067d02150ac96e3759", -"T2B1_fr_test_protection_levels.py::test_change_pin_t2": "a8421c9590067d7d271e0e83143e88dc34158ba6b4622dd64fec44a184aed37e", +"T2B1_fr_test_protection_levels.py::test_change_pin_t2": "e6bd00b17137025c7d2e5b32adf28bfe5371f4c85585d11edbaede3d8c9434da", "T2B1_fr_test_protection_levels.py::test_get_address": "36197524003da43bf2b559f4c2ce9cb3fb8df03ead75599af8a49b7e5ad4d28b", "T2B1_fr_test_protection_levels.py::test_get_entropy": "a04c717eaa80bd59fa114e23c7fc86255cba9bdfa74db4dc955c4434f9d4b575", "T2B1_fr_test_protection_levels.py::test_get_public_key": "36197524003da43bf2b559f4c2ce9cb3fb8df03ead75599af8a49b7e5ad4d28b", @@ -7778,26 +7799,26 @@ "T2B1_fr_test_session.py::test_derive_cardano_running_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session_only_current": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_session_recycling": "fad76a56c29b9f7589b831eb2b86881e6a29312f1024e08112e6b5f9e5c92ba1", -"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "00f862de4b32bb1c00bd0ee428a60a54756fecdc501a9844e60594704d89c302", -"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "ca5685a8194c3bc12ba018e292f04a0a3d82147369b409eb7344e014c10cc9d2", -"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "c7ca1ed8fbc5316227e1d498702c0be241eac7ac2b4c765ad88ea409313e1067", -"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "b665d3da068a9724395cd93f5d0147fa77686eae35b98782ae47b6846631df02", +"T2B1_fr_test_session.py::test_session_recycling": "d1b42b827ae964a8ee33603059ba1b2ae766d56678b5475a5c8545d8609b3f64", +"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "5e9b18c7410aaced4e014083e170304058f05a4cb29798161cf7691e56beae1c", +"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "55ff1f40847d2a014e3d81bb06615dfc8922a3c3e8357df0580cd4dc7331951e", +"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "2dd7d2522e7f31a362c14f4aab364831d68f1dd121bace27401881f2595b9ab3", +"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "c03324747c52f060f79e20294461e88e9fcb429706feb95f4daf27bd3c29bc27", "T2B1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "80dbef30aa8dd509fcbed8444cb3a5defc748f9672373ff50a5675715ef5993d", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "c0ee5a83d022e41c6be806b5681191299369f020a2103772dc287632c9a5350a", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "53760e49a6b34165b510a6f8f0882d3c61d466872067a3409449d2113af2247d", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "50992f83ae27ea261c81dde6b7ef07169ba6d927023d4ccdb0ce00e529cb5ece", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "13af71e5caf1835a5d4200c2114b37fe1c628afd12bfaa3b954115787e3d15bc", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "f3ff4fc35e55c55ba2ada968aca5b544750d81a50b75d3e72508b3826b256706", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "2accaab9838ca695764b3e77c1baf0c6c4d998e98f85b07219e094746dac2ad8", +"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "68533111220b8811cad51ce8f64e7837cc2477b1c5c473fb1f34423170844a04", +"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "68639d8fae615da39d57a25316cb057fc09061270d15d54ce4b86bd79626d910", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ba9fe5b13953b72952449179d717b1dc52e6450b934c341fee319247281b663a", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9ad5b6b401a2ce7676b4cba10b6d74abfb4d9887c42cd73cb3487649fbfa3a16", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a530de477c0377f1f44dcbd0f42b3c124362c996a72baacad110224d94b531ed", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "5631b4584d945aa3d27c9a6506562cb8e02fdd0650e8afc0b02b3a4e1fd1a212", "T2B1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "767c9cbd7babcdc12d39a8a6e6645e020c4482326c22fdc10022fdd83706842a", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "82b6eecb6ced551234a2853c901681a2d7e2c78110d76c5fd32fbd87231f2d2d", +"T2B1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "46cc638c163497e2a442e25a62cc0a47bd6e22726beceaa440e392d843240b8b", +"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "938cee96ea1f98e4877d0b1d2ae5fc531a43fc6a28902a3bbf33c9951c16051b", "T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "f9f1d7f42c595c7f81376859f22296ff53bcdaac4c9f36176d679f6c3f60f479", "T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "0ccdfa8922983da156bfb2beb9676dc7677d8c663793128c31816c70184b7d4c", "T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "088d062356f1d93fd5fc24cbf73b60f582e3b4732ace52cfae4675603efc17fd", @@ -7807,7 +7828,7 @@ "T2B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5e9737de184d5087ef0e321a265a134a4de01820ea0076f2b9cd15c3819d15f8", "T2B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "bc8d1a01ee5fa2a82f617b7535865e68a82ed520dae809cdf9385af272d1e9e2", "T2B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "c00282de2bcc07531c9de0f2011ea95b289c3e94a31886dc0ccd4cd86f48783d", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "6f2107448b21a340013ee354c713696a32b4acfdf4ff391bfda41393340bed01", +"T2B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "170ecb812d238b2cde92f4698bcd5c82c64fcd59175585df340f58af676acfff", "T2B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8231883f448cdec51e4fdf8761bcfc4961cd43d50c0fec91ac39d3a1086868b5", "T2B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "6645c79e3f2307c00bc21d2c87712cebaf8f76e1abb4a027575fcd9518bce767", "T2B1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "13c9c0370118f70696c2fabd90b3094c32b9bae7c0eae64b8cec5c91831b2136", @@ -7826,16 +7847,16 @@ "T2T1": { "click_tests": { "T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "4bcaa7a1bef5eeaae5986c41c41515f1bc34012e5937eb0f80fade2298640dd8", -"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "12b6673bdc1091ce235841ab61682f48101b84cc433a897f448d41619cfe99f3", +"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "e41ad75157c3c84e572dffe37b0b88ad26fe0510eded16102d07cb41b8dd36c7", "T2T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "05b1c0ec28c40a0ca351e846714fd1a086ae2d339025a370ec981d721e9cbedc", -"T2T1_cs_test_autolock.py::test_autolock_interrupts_signing": "d28e2bd17e816b9309e4605e36f281ad3a1b3e31d28925ffba25bde2fd819f0c", +"T2T1_cs_test_autolock.py::test_autolock_interrupts_signing": "e8909c5220a43b661ee35d0edb62469fbd57f0e53a5dc57e1fa72d0adc4f6c65", "T2T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "4bebadba7031a4162cd48a3208c6183727132daa04cc16ab4476cb2dd79f20c0", "T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "ebe72ee4f6abe32d5d030984f6f1be044e05bee84e63f5ee52bd066df4e97927", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "ca44273b8dd6d519ff6eaf7b88e200e7c679cb64e4bbac6d6f93f8376e956939", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "b08f61db4eede3c346f278e2b96cd2135b6f4bd8ea666acc30abfac990f79d3c", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "e7fc987409ce70878444d159b1656ef6ccbd1fea2d21843cd4ea6f1cfa6e4d41", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "016e46d231be0fb8dede53bc4f8e842a58c53152d939d179bd04e58ebc51f2d4", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "13597aa6effb13244ed60756fefbe5821aa4339bbc89ff9ef3806d75c602de5a", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "23d969786494c544567219644f9848ac66ebbf5c9da2fd1f18bfe85f948099ca", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "529f8aa61704bec95492e551b76ab31d848d7d98196a8d67b2ddbeaf1da19c7f", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "15b82c0d7736ee07f9a08ff80c2a53a5973306e8949805ffb70c348360f46842", "T2T1_cs_test_lock.py::test_hold_to_lock": "b6fc997ab22d51731a7fa994b2849970b5e83c38b0108584910bcf5c8fe47e53", "T2T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T2T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", @@ -7874,9 +7895,9 @@ "T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bae467da0bb7edbe3798fb7ef192e348c1786ce488e83bbc0ef362ec9c893741", "T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b8a38e031a8806325bcce5d65a6b5f3e674e7530a0bc1ceba5f875c41ab1b475", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e91bb83330840e2691d3faeeade1b43621f3cb144aa8f38aa425f8e00f7d928", -"T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "ce88735e0b55b51a6bc4e3ed26fa80ff6435d86a0027666e1be72447067125fb", +"T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8078df18e03affdd08dcba3798b2f81c4e339d096562023b75fa1436b2fa483", "T2T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7ca31effe094026c9e00a78e2e5117e199e5ce5ddf4a4a869899a17193706ef3", -"T2T1_de_test_autolock.py::test_autolock_interrupts_signing": "405b72c6d08be0eae506f7e8b368ab326beab01011c2863af5a060c56b668a37", +"T2T1_de_test_autolock.py::test_autolock_interrupts_signing": "e08bae0f83bd09aa9bca336daea9038493204d64efc580c4a75018b78b3dd7bf", "T2T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "0fab68ea14b5c88854af8d91af858cdd9dcb4ad6facaf9e795ed827498db5131", "T2T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "0e58a536d8d369fc270d3136647158221256c7bc529d49ff86b1596232952453", "T2T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "4e99f4dffe668064111f70fecba063895cd23f9923e6f164eb00f648fe396c83", @@ -7978,8 +7999,8 @@ "T2T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2ab38b584b868bbf22501c70c13bc4fec9c376b65cac52cfec63836a98f2b703", "T2T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "37a764a71200043f47213df663875e9a445b989460df834c4d08b0b3862f5a6b", "T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4408dcc3c29f8a2e366796d06d3935b4eb2b55063713bcd490f14fe3be0cf3b9", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "92448a644d7234d0250090d48f6a5c6648d003a43bea88d35133887b9dd0ba6a", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "8dd302914daa6403eb562f22b7881bc2cb7d5e5cb893d1d38b3fa4a8c032eb6d", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "8427a11f493810c26c1d9b270328bd14bccf385f94b0bcfd281e3fcd90068b28", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c1c22b46198dbf706afdedd8b057eb9732cfd18b0cb57c30f217b22f91b81126", "T2T1_es_test_lock.py::test_hold_to_lock": "11c1e5e33d8e6046326c9c30f61216130a83ca9916172fef6808080bc9c67216", "T2T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T2T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", @@ -8015,8 +8036,8 @@ "T2T1_es_test_reset_bip39.py::test_reset_bip39": "644226a8736f10de7878950e41d189b207474a40022365b87ea1ea24912c1eb3", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a619ccc056e6dac3f040ad49e7a7286721fbcaf8a2ab14e871833fd1d5dfffe1", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c63962a0ea08d008f709dc80ed19671e056df97fad3264c377de5fbc39506df5", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "98bce13c3c28979a6f7f1dceeafbe4d975eecdbf2e8ceca1f29d2a2d34f483df", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "48bdee69c0c01249d2cf9d5297f6204488a2d42d98db53ee90e24248f2ff5f18", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5cd17ca09bb26b670d2f88dd23791d9a26736d5b5cdb82d26cbbfdeacdcab761", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6a826c0fef58dab431e27a35a19a1020d54ea5674ff455c4b5566b804d5a4f8f", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b5d12766c3d49c8bfd80548dc1b18eda5a88e7799fc7002c1aa17bd29fb1b3c9", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "4b7b8f476fcaa0d38bd1621a4eb50ed3c92f2bb65be12b012a9e91dca2ee0a61", "T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "b93dbd30a75a6aa4ba3d6c695e04baa811c01d55700b386fe446b03cddcefb86", @@ -8071,13 +8092,13 @@ "T2T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "fb9519eacd90972796571a24485f1830049e1e610b53fcdb65ea8b1099c8cb0d", "T2T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "aaf8e9fd3056e69ff7ac84ad051f9511e9a5076b6a34ee05c696ea3e3f90c508", "T2T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7caa0f9ec73082f01f8426c29e4085dddc29e3f75694e343e3ab60848a8436c2", -"T2T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "78cf99ca978c3283895efa62b9b00259590b3798f61daf9878c10a00e2be8324", -"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "cb11fa560314c9b0aa64881eac07a62b7d4c7dff12c36515aec42dad99114cd1", -"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "40d07ccf03bfc3f91c8f748a871a037599e61360fc67c2ee8408004765f7dd56", -"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "d4346c5871b0541ed955062495922ce127c58f59400896ee1c9bf8a46865be62", -"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "cb11fa560314c9b0aa64881eac07a62b7d4c7dff12c36515aec42dad99114cd1", -"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "40d07ccf03bfc3f91c8f748a871a037599e61360fc67c2ee8408004765f7dd56", -"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "d4346c5871b0541ed955062495922ce127c58f59400896ee1c9bf8a46865be62", +"T2T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "99dd791ee89276532d64eb9292ffe6f0911437fa9a93ce50722bdefff004a8cc", +"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a265eb496e5021cc38ac33eff33c56d46c589369326ad158de5920aed380b3ca", +"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e6ef7b3dd4b425b1bbab2f49699d8d5508a8b993544d15b691f834d221e44844", +"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "ee068a81eb1462e340b3b19984e15b94819b707c39bd283d6d9c26d93786aa90", +"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "a265eb496e5021cc38ac33eff33c56d46c589369326ad158de5920aed380b3ca", +"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e6ef7b3dd4b425b1bbab2f49699d8d5508a8b993544d15b691f834d221e44844", +"T2T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "ee068a81eb1462e340b3b19984e15b94819b707c39bd283d6d9c26d93786aa90", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "c9108adac3ce23380002a5019496c0224d7f24a05d12ed881cf8a444dd98d558", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b3cbfe5991c49b088827c9bb5d22e7b8267f85cc3ada3e0594b62845f2df75a9", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "509afffd6ed07242d5e2c5c1fe216e9a277f42d5f9d459084db3573f59bdc5c0", @@ -8085,33 +8106,33 @@ "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4e6afb03f0f0557db4acedd19b5778eeeb05b12b7ef3a13742a5b3f7d09e5c59", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4e6afb03f0f0557db4acedd19b5778eeeb05b12b7ef3a13742a5b3f7d09e5c59", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1239ab191a3617f42b7158c9b00dd1aaa91d62b895fd0a32dbbc3e99a7326892", -"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "c15a5e98c6abc7a19c7e39cbdd5371ffcf6dd7836a325d6da4a1cf5fd580b634", -"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7c420658ee3d6c5b4d3d761af26de66cc0bcf7c471499deb274d964dcaab950c", +"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d878ddcd406e5d02a65cc536992735fe257d07bc3791e05c30a4d2a574c6c5d3", +"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "545e82145565de5b2a8f9821f039eeb1b9d20743ba54233231091899377b12c3", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", -"T2T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "b2632cca34ef5bfa4ec82d9f42e6c7f02ab2877641946dc15e00545d35c7be1d", -"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "b2632cca34ef5bfa4ec82d9f42e6c7f02ab2877641946dc15e00545d35c7be1d", -"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "75815dd5a677052badff2c883a54ff5f2f1dd1eb85c566d5f8e164961fdb5db6", -"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "18e5ffcf03fc8e9cc3e9bdbe5912158b07aa54c56d68ec02e4c23accbb78388d", -"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "95744de25688a176e8852483d73154c3bbeebd1825442d37c2b20deebe0d523e", -"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "42d19a59b4f8b00d946e968b89d68e3cc10bbe8d017402e3e82a0c067d384b27", -"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "c0dfed142ca786e2407183617f0331a3071b263c411002c31eefd5776d493d0c", -"T2T1_cs_bitcoin-test_bgold.py::test_attack_change_input": "2db6ff20be95f12dbf430f3849d033dfb4c651fdfd5bc4f0b1b281558cdd44fe", -"T2T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "2db6ff20be95f12dbf430f3849d033dfb4c651fdfd5bc4f0b1b281558cdd44fe", -"T2T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "60a727c216773ad0add34655974faf217b94204641ade4181fec649b4decaf58", -"T2T1_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "02cb85eed7420b609d8d36c586deefbbe32c4fc4cc92540e8e51e352e6ca6a71", -"T2T1_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "7e56e2050861561adf09b67ad6b734787990dca2f306e741e27b457dd6fa95c9", -"T2T1_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "0c76719e80a7cea40a7b83db7c3e18063a79823f37df08e0a87e69b07301eac6", -"T2T1_cs_bitcoin-test_bgold.py::test_send_multisig_1": "0060690dcf1c1858ee49296bd38a3685271e646e2249811870d337aada8f8210", -"T2T1_cs_bitcoin-test_bgold.py::test_send_p2sh": "6dd5abc24b4cf936cc130b8effbeb929bffd2d76c044e48ab95cb56638ef50f6", -"T2T1_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "d0c618339414593608cafc0d6c8a8493ad979591a86fa8f269fe1cf810d56ec9", -"T2T1_cs_bitcoin-test_dash.py::test_send_dash": "e43260fcb945fb101fa0bc56fd1881c1667b846a30cf7c7d2ddece24860d90ca", -"T2T1_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "2df942c286c677dea35be23e5dd34c0bc61667c4883444f50a13cf9067abb002", -"T2T1_cs_bitcoin-test_decred.py::test_decred_multisig_change": "51bc23c7edb6b82453d9809571876de8e9666a9416fa748a81b1214baa12ce35", -"T2T1_cs_bitcoin-test_decred.py::test_purchase_ticket_decred": "076619443ac2591601a94e95525555e610fc3e26033cb4d88b5067d5ff250ae1", -"T2T1_cs_bitcoin-test_decred.py::test_send_decred": "fdc3e8dea63e10cf7c259a315fa9343e9b54e97d02db9b63141227600b62914c", -"T2T1_cs_bitcoin-test_decred.py::test_send_decred_change": "e3b902931275a09a5df3b8303cf70a7035970d2a8d08f6bcb4b9404d033008cf", -"T2T1_cs_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "1c96440e522336b90c2a4c6fe62369a484f401b7f35a2598eb86498d0f7bf639", +"T2T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "543aefd40b045e048278d770d31a6e82f400c72f0b1f05d394bad09a12d32602", +"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "543aefd40b045e048278d770d31a6e82f400c72f0b1f05d394bad09a12d32602", +"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "565e103fbb7c26731162de2901ea5285bb1b8dfde908e9d3fd6ed56b0a54ae3a", +"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "a1dad26475d83ee1ae15484dcab06fe29d6306670bc93bb2404d056df74edc8c", +"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "13e14f251e58551ed1ec72882dec53bf786d42a572fd1d83873e7b92b37f33af", +"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "ef2c0fa7a21272bb89f4d28f5e1577b54e55d89ac5e1f5c2aad33a8cdb2c4fa2", +"T2T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "f99dfbebba944f95f1f30a77c47f9dbdcea6e761cfdd0c420dd1835f05b9c081", +"T2T1_cs_bitcoin-test_bgold.py::test_attack_change_input": "25d8d3c633b4723500c0d08a691885129aabc8b5ab2d381ec1305b42a81c3440", +"T2T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "25d8d3c633b4723500c0d08a691885129aabc8b5ab2d381ec1305b42a81c3440", +"T2T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "d343fb6fa999aff949eba343168358b99db6f534647688ba5277a86b43f79a62", +"T2T1_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "71d21978e9f03d96868803f023f2d340132dd99e9dca9ae7d5f68da3055067c9", +"T2T1_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "c64c6c574325f2be07d21b40d08f7fd104fc076c410ca08358ffd2cfe45c5db6", +"T2T1_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "3f0ef9378880369022d5eadbe2a2f748b9e2a78a82a87e5450106b86e4406a85", +"T2T1_cs_bitcoin-test_bgold.py::test_send_multisig_1": "d9f642e7f0bd4dd60ec00da2dc3eaba4efec8c9f1c6245b4a3cc27ea50386cac", +"T2T1_cs_bitcoin-test_bgold.py::test_send_p2sh": "4dea10f47de539102752a449d6bad5a6186eabfafb9350e0e1879e0e69a49544", +"T2T1_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "0098c8b33b3058b3a5f610b8ed67605e355022613ce7f4f16216b5a8716c85c9", +"T2T1_cs_bitcoin-test_dash.py::test_send_dash": "335f7e6a2848b085002b697246f75643c8fc880547c588b455198eb5453f253f", +"T2T1_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "a41668351634e0edf22939bce11f223528316432d247c7982a2e2b526f0d1342", +"T2T1_cs_bitcoin-test_decred.py::test_decred_multisig_change": "c60faa3fd863116d9f25aedf3476c6e82e74acb513192be95da74880b0603dd5", +"T2T1_cs_bitcoin-test_decred.py::test_purchase_ticket_decred": "ad1550ab421261df920d5bbee711629c2f3993492ad04df9434e7e590bad1f07", +"T2T1_cs_bitcoin-test_decred.py::test_send_decred": "8ae6012900154e293955d1f8326552d527c288901cb863b176701754f0ba6c3e", +"T2T1_cs_bitcoin-test_decred.py::test_send_decred_change": "5200d5675564cf2d3084810a8f0413f12cfbf66086bd1f3bd11e950cb0adc1dc", +"T2T1_cs_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "58b0f967bed91c3d4681aa10770446c2e24a028c41547c5b00973afeb4ff4bc7", "T2T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", "T2T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", "T2T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", @@ -8148,8 +8169,8 @@ "T2T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "59f62ab5b50dc69af561f304de7ee7bb9435a7aa207ca190608006d3cd93de9d", "T2T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "bee3fef9235e53253a6092d9c36e33c100be86c9433add12eb8255c3da51aa82", "T2T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "68df3189d87a42611c09da1d94eec556048f48644e1fc3700bbc22632462c61e", -"T2T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "a7ab74400ec07e427aca117eb62c68c2af9ea1abb02ea8663faed6d9ec7cae4f", -"T2T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "2bf3ac343b69d6cd6c02ba35ab565169cb897cabd742737368100a3139fc7cfa", +"T2T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "27bc3cd1cd7b41560c9f68665ec27fcd92d71e6963c6f320cee734c7e4bf1074", +"T2T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "73000a0630ba354f431820496b3d1e16a330f619bc4664ce4b61298cfb5c5a65", "T2T1_cs_bitcoin-test_getaddress.py::test_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_bitcoin-test_getaddress.py::test_bch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -8277,28 +8298,28 @@ "T2T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_bitcoin-test_grs.py::test_legacy": "e9f2e4627c9c65a27d6c7b0124aac0145bc9a76131cd1d3e19f8986497afa13b", -"T2T1_cs_bitcoin-test_grs.py::test_legacy_change": "df8d5f03ebc0af691a2ef4188777c081254a3b33c5bc8473eb0118ab90119d1b", -"T2T1_cs_bitcoin-test_grs.py::test_send_p2tr": "b22f38734c3c6fb1840a16a368153cdb6ef2265dd3cd7edf5a2e304f80c5a515", -"T2T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "4589151c506e97bf7fb2f45fcfa11ea950e151c802aaaabd67b2f9592dc1aed4", -"T2T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "a80bb00f4bd2ddca14f6fe828836a1cd32066a696ef259412d7ba87db38d507f", -"T2T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "4a14d439a87863f36801ace1521479814096b417c9355646d17a54d48d9fe255", -"T2T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "777b0f97d01eda4116838a817491e2abebbb2f47f7ddcb61337d45fd5e016c74", -"T2T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "be10e09800f8b5309d50942275d7122040faccd71eb0622acbf4efefe2b39254", -"T2T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "6b021b1bbffa29c5ead1845d26be6548271bb4ad9db4b1f63266f1fdce47080d", -"T2T1_cs_bitcoin-test_multisig.py::test_15_of_15": "4a6bee4fe45f28f75bea099aefc41a471bc4e61fa5ff013d37b31b79a9242a44", -"T2T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d2e069af15313c44ef9307f6b1aa28b4b11e6f5062122a924c92eeecce4eace5", -"T2T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e13a77a4da94e0ec63285a6ea1894bc43bc3575666e97fc4fcb50fea434f81c8", -"T2T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "a3bad4796a417941f035464615782fb96d6037e3b491b6cd0d9738ca47f6ca31", -"T2T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_multisig_change.py::test_external_external": "409c6641d96339ab9f5d459ea7f5b59a578f5ab9e667703e3d16dd606ffe90af", -"T2T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "69ed585ebcf3caff0388a386904fd1f6e0c782648a557bc152b1235b9a4b7b9c", -"T2T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "f2002c78ce94a861a17d9ebd7b34a47b846ef41352583f76b265c8b659effce3", -"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "c590209a8aab02820aa5e2841f698a7f22475bc0f08bcce02f2db9b21a2abe1b", -"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2c7cda253567c83dab72d9ccaf724dafc40d52e244b4aa25f1dce0c1d6e43b10", -"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "f252ce8846050e4bb8352037ef8c3d65f24fb463a6b9efafce1684d075227138", -"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "58c1f15b65f9c825a845434a9c0263ae12051275fee79c7631a0fb24ed6a836c", -"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "40fc42ff7d5b8ff4751f84cef6dbd6158d7b744e20199e1a8e4703d03b7b8e42", +"T2T1_cs_bitcoin-test_grs.py::test_legacy": "74acadfe5082039fab5af3dcc310116438909eb22e7df300a33fff3912194c2c", +"T2T1_cs_bitcoin-test_grs.py::test_legacy_change": "6cbef5f7a68e7506399b7649266d4a2fc9c86d07dd6f11f929069600aaa54d4c", +"T2T1_cs_bitcoin-test_grs.py::test_send_p2tr": "7dba04bcffd722aba6a3de3450d8b69ffada62b88c86413562b589c098a68c02", +"T2T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "3e09845e82652ccc583a7eeb5f04a4585911de413a1bf486c7a0883390a806fc", +"T2T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "6d3fe1442d303da4cc9ed3e693cdad028ffc4f51584dfaa40ab7eacb1c528b73", +"T2T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "ca813e12db2e50ec8b59e15dbfd8fdf0fbd4a0c41b1ac7119690678f202db37e", +"T2T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "fda638e0bd7bb29eb2afb572ac26c6ce99485642a87f68d3dfeb00c30e82fa95", +"T2T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "2112b54485b2a085ba3ff9796a5574352d1e03adb6349e421c9ab38457fcbcfe", +"T2T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7a35ad4cef673a61b47ed5f8de15c2f2b7151273bd4e18246e316ecfbe192ea1", +"T2T1_cs_bitcoin-test_multisig.py::test_15_of_15": "fd4509f739bf62162079867c7ee8042bf989c0054924eda46d2d9c1042c74473", +"T2T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "02661f652ddc1e8e5c4d598d396dee340b4fb851d59279ac3a16b2d4eff6b252", +"T2T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "08b0a79e90850dac1aec6bdc49bcd89d0ecb60a62963092ebbe893691b5ebce1", +"T2T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "c03bfda6f92eac441b5a727c04dfb12e9cf725fa2a2991bf31c257618c87dc05", +"T2T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_multisig_change.py::test_external_external": "a50a5eb9045e4fce67debabf83fc8a24bcf5ce0b56dfec9df63fecaadd0d9adb", +"T2T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "400c32c4f256467f96676902bde4837238f68710476afa50923d34666f13878a", +"T2T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "984c90669159cd0b258f0b2c14ae12038bdd074d10fe0d581b4547d965003469", +"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "d353a10133be5019205b8fadd82076c626d5d2cb145d74c63b9ba4e7e4e111ac", +"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "5f51a461f0a5a9564f5c87be5d3f333bf422bbaa8705b69000c0a38de8eb69ba", +"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "ece5087013d74f8f6c66857b900810d2d9a26726ea7a7dd1fbd7f84316871cef", +"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "5a1fae7c15fa01487e598f56cc8fc589b22d43c3016e30527301f98ced362b15", +"T2T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "e2b997d15627964ec923b646647f1b37e32db1b92ee575bc4808f6948aae89ab", "T2T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "32842acef03e92bb8e9588c4f62c720c090b76cfa05b1b501139ecb80f440924", "T2T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "2cd39bc9256d0fe145193e4e303dbac4513831025b5a84c95a776c299e223cb6", "T2T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "aba263e4db929b988210854950b66b22b9d94b1aeb125252a2d4167627f71298", @@ -8327,25 +8348,25 @@ "T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ad77552ed741f9d93cf818597151f44f204e31754f33914018ce8985344e22b0", "T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "98271cba7e1e73598e3fcec535a6c026614de476235d35573382170b661d5316", "T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "600866c5ddf653eec4fe3a52c1f3b84f901e327ee950c1337e9dfe9f9721a36c", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "678ea311c23190635adb775d22ceef04fa26338e74e6e2acbea4ead3785fe1e7", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c91fd16ad1b1c287e19604c0545a29d5c15b81c7a740f0bafbd1cac1b2c6d561", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "8537548d96aaf358a46a49fe2e6d80e18f63ccd768915a0918e61ebae58ec5d8", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "5ea91418c282033734ff510340e6cbfe23e92d9622fc6366a9ed0f3d0d250614", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "f9ffaf8c9c6705765e7a53754707bdcf963f83a250551355142da20428c8c242", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "00c9fac9e9f6833dbb386d7df1c254a5f71c0134f6ccef09c307134de110db74", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "ce0a7178100f946c14cbfc2cc9245794f8b2471b4a2bd80d631633e3c91f6a0c", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d6621625501f5be1b437d5b9b3ef79d4dcfb3a8962e894b010060dbb938468ef", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "cb8271287f888db3ecc441523efcad5cf8e50a855efdd775a9ef1d917567819b", -"T2T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_op_return.py::test_opreturn": "f1a5eb1cd1ba8bf574e2bab8959e8e660e132e190a852e4993b05b0a330d83c2", -"T2T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "67de74bc7692e72551145ea28517806a2f9ff570865050b6a2eeee34375606a0", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "de78fd2fa360453d95e85c5ee5e8de40b925577c30648c166e4999c6169d1f31", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "80bf459aadedaf00e0f494ee3db3e8ac58695558a8a11fe583bf0c3be8b7204c", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a7e30fa104eeff1389d08868aa19e1f5c5c486bda86284311908e6cc87ce5de0", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "43d5a9f472c07d6c2402ed70041f48215eeb50b56813decde19240fab75842f4", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "183503edbf87067faaabe27b74927623b93e29f20088b7c4959d649cafbe229e", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "b7b31dffa340246382b83614d857d5678e5a311423e257eeb354300e1e1d0f3d", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f334becb0ca0cfade44636c42c32f5e7449c2bd8a4092b972cafef24547ef719", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "b7e84f94562cf6cb61b1ec13b5114f7e99a2d5a65c4a873817689b8df1eeef00", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", +"T2T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "a978ece6cfc4917d06ba47db8a5260eab663f2682c496d0ebced805feebc4ae1", +"T2T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_op_return.py::test_opreturn": "44c01272aab632ebc31e5a45107be1fa213d641bb05b13368e3f300cfb0f1ee6", +"T2T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "cc6e6e2957cdef6616101a9d8a1e399b07d8355ff804c411d449710a4fac2366", "T2T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "facc4656751c47122746af3fae3d2933088abf5db95f2fa436168c7e93790771", +"T2T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4ba1ae3b1ac59a8e3fc62638739e94d9c54d54a3be612810650a9830b06f5b5e", "T2T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", "T2T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", "T2T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dba56c6086b06373ae3b2a73ff3cda693f982ad74ff54cb80a652e2d2096b2e", @@ -8397,151 +8418,151 @@ "T2T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "0d85c285504c18080ce0c04a7e81ceff0695cde20ff264222a0692efc07dc4d3", "T2T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "160724035b4cf0c6b11047265b5d7fc538adbac62c3d7353718915dba51bf6bf", "T2T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "4ced42503d09292c0985186444200e6f9ecff95925b93c2a455eb8a55db18056", -"T2T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "aaa405e55ed5ac4d63302ec5995a3df8d3282a3d37a1a8f262c8b2e6b251ed5a", -"T2T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "48b3ed5f69b9046839133aa6e287f1242a9e192c33404add578ab6055502dc64", -"T2T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T2T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T2T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "4f48ec019c1d590a90d17ba3ae95dfcaf47a6cb5dcdae01a597e270cd2f575f6", -"T2T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "9517e7a6abc3883cb7f6758a232000e494dda42131352e8f095ebd355cad12d7", -"T2T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx.py::test_information": "e4983b9ff84ec65b0ef21eda2723cff184fd9875ab6a2446f245209550b9008e", -"T2T1_cs_bitcoin-test_signtx.py::test_information_cancel": "30e2ccdc179f67772318bc95bb0670a01762c67114ccd4f78fa8975dfffa1211", -"T2T1_cs_bitcoin-test_signtx.py::test_information_mixed": "ec1061dcbbc0140884f4e42faf3507933c2456f67003647095640f7615576a3e", -"T2T1_cs_bitcoin-test_signtx.py::test_information_replacement": "220262309578a995591ceee444378920823ed4e563b46330d246f66837b39d89", -"T2T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0c07bfc6fa29584ce1dfb6515b00da4870ee71c0ddaf2d063d88db4208bf57bb", -"T2T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6947654cfdba912e3d805feb52059740de133c7e7baefe80cbab0915da676fe7", -"T2T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "faa2db37151bab191aa5d8b27e8850410c07d40a2423097ea9388f181b66311e", -"T2T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "6947654cfdba912e3d805feb52059740de133c7e7baefe80cbab0915da676fe7", -"T2T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "faa2db37151bab191aa5d8b27e8850410c07d40a2423097ea9388f181b66311e", -"T2T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bbcd6fcd974499de2f167ca68a1d101f0f752c9e5d292c3895c76bc27f0315a2", -"T2T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "7056d9fc4f52093ec579e9155f582d3eee2a4a8532e3fc4a48d28d06b2d2810f", -"T2T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "3e24ca4fffc88521996d559b11ad5205029c81cc24fbf7403582e7ec8b1f515c", -"T2T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "b992b2a8072df6147c85a9abf5dec4d86c7c2c9ea9933fb6b9428ac0de6c661f", -"T2T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "348fe671b84dac3a0c15cec510e36ac110978cf04d3fa3c5a6edc50560562582", -"T2T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "784e565a085a15f4715fce96e6cd73607d070f1356b4c64ee7d727ecc23d27a0", -"T2T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T2T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "ac90bd47df61b14b56f7fdc958f5f879a08d93afee93befe9c68e6291636fe3d", -"T2T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "6b47aa5f1a8e59418bfb99ff5499a7aef887b7a50996ec5214ca8eba470afca1", -"T2T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "7a9370fb7106255f4b6bbdfbcb728cafac4b33561f8e28288a55336806904f43", -"T2T1_cs_bitcoin-test_signtx.py::test_p2sh": "4709f478dcc3844434aae13ad94b7fc171e9c54a301c83da735cb27eefcfcc1c", -"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", +"T2T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "7c41e9147059dd52307034aa743adf2c66e4e5e2133ba9b8696f83c31a8f56b4", +"T2T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "7087e1a698ac23c370eb3723d517d2fed28d1578b18578c106eede23163770be", +"T2T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", +"T2T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", +"T2T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "15ec591bbd7a3c69c132a830ff3d36500740f88d9188cdeccdfac9160e604078", +"T2T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "6791a350bab3c49fd782368b3155a988ab94ca3eff568272033094f0bbbfca24", +"T2T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx.py::test_information": "d8726bce8544f7c3a1ea675ca72e8d2c62c392452da2203bc16038366ed179f0", +"T2T1_cs_bitcoin-test_signtx.py::test_information_cancel": "450da08f06b81709091f8c3b0179edfd5cf41b4dd4e0e5e906d119bcfe85bc12", +"T2T1_cs_bitcoin-test_signtx.py::test_information_mixed": "ee24e57db1e35421b1a43cca0adb7207a02b778a372c99f2e10c7b4689dade33", +"T2T1_cs_bitcoin-test_signtx.py::test_information_replacement": "31b2a40db290a2217b09e96b995d15fe7d45e8eff08aca4b924aa9babd0d4524", +"T2T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "e9be94bfc7937b533323b703de6bcd234c709bd1928d350bf54d6755cb46bf55", +"T2T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "21e5a419b62922af2df837cbc7a3761f08cef33f9a8d402f0b9cc4ffe01f6b5f", +"T2T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d425dd1157b815d6f0f5c0346e18c3ec4c9e8367b99a48daad58a2c612ce481d", +"T2T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "21e5a419b62922af2df837cbc7a3761f08cef33f9a8d402f0b9cc4ffe01f6b5f", +"T2T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d425dd1157b815d6f0f5c0346e18c3ec4c9e8367b99a48daad58a2c612ce481d", +"T2T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "97222f135955f18ac4d690e7f49472e58bd28e43c5fb9db676474682953cbd05", +"T2T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "795d158f875fb1ac3dc24ecafa6c1f611b75c5588312833563b2acfee70686e4", +"T2T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "9b868cb2268991eee8fde9b2e8e1b2b230ccbfcd802ee166891aaea1ce754f93", +"T2T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "f07584f8bd4ee44fff931bac0a52c550e8891d5d820035ea55b547169eb9aeec", +"T2T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "3ad55243bcf1499ca88dadb608b9ac73a046763d4b11c92bd8569f2630aeef0c", +"T2T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "e45c042a9d418cb97f4aeb9a3d1c1f173f42fa5f01d73fd0af745c24db812a60", +"T2T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", +"T2T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "98258e28bd62abb6646c8c42c06815f1ce633ac5d4ceb970bccc52172dadb0a4", +"T2T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "847f708946174bd71c8f32c807badd2741164925e3e21e71d15a304af91a62f7", +"T2T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "44cf9950367c19e23e33888362f4e609a22fd36b3a7ee531957054eac1db16ac", +"T2T1_cs_bitcoin-test_signtx.py::test_p2sh": "f3b375c5753cd8877f96e0e29aaacb6f4d65753221f0ebf515f63be5cbc43e8d", +"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", +"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", +"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", +"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", +"T2T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", "T2T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "15ab6ade7aaa5e59bbfc4b7b80903db1bba47b8e9f9da828b1f8fb91b7bd02f5", -"T2T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "195c8f8db23364f8cc919cce1526a5c609da19f136440b595b23dedf98c93f1f", -"T2T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "63b878d3335c31c48c4465ba8ee7deea649ff6521603249b5ae9bc7d1a5a2645", -"T2T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T2T1_cs_bitcoin-test_signtx.py::test_two_changes": "c4ec99155b09db15c81cee7a70f10821698e87e5d5b580973d96ad4362ee2378", -"T2T1_cs_bitcoin-test_signtx.py::test_two_two": "fb3dcb2539f4b7cd29c619117c6c3287d8c1bfbbd88f7485813d632c37b47efe", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a794535c8851a673d008324fe7d00f87054861de7f5e5ef9af3719ca88337ac2", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9b3ffabcd01d218e6601c802e0f7a952bb9fc2c88c10d315e3a1dbe0d5a9da6e", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "d27bc343b644081ab4df811b5c991109164d7826651c53e6f67eaa3ae0e3d581", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "5ddaad6b563bb384ea3ca37dd04bd440dbf360006fb900a271a23472f4012c95", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "bc93411098685c62cd74ffa15a6462d03faed2582fc9c8eec868e45928b6344c", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "435330cab18bcc4c9a90b0e78cf5c1f41e37763bcb98cdc79ecbc6b8cfbb65cb", -"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "b24df2c210c99e604bb05e56de2641d5e0d62fdb00b2d06a22c9ec6bec6c1193", +"T2T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "10244dd824ac87d65704440e3316e763b2a41277c689d7363c5dd51d3efe84ea", +"T2T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "cccc715d85244856df87b4d9794c66b9410490981b1a9413fc2880c15e94dd7a", +"T2T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "9fcfb28c6f324a86035fa253d05d9671d4c3b4018f1e6d5605c565d4a9f0a959", +"T2T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", +"T2T1_cs_bitcoin-test_signtx.py::test_two_changes": "ad18ef9add038abcfab4a7db828333cce046ce5be74dc2b2bced69478dd990f2", +"T2T1_cs_bitcoin-test_signtx.py::test_two_two": "10a43b0b20bd48b7f18da9c2636e67d880c306ef12bdd89dc83c832efc0c0724", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b4b0ec9adb12c298a6ea1b1f6cfa64335ce524e62b0fd538b6991de17807dd09", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "87b0cfda1e6323dda7742af5318c6eea7474fed6257328a71d4d8fe3337e7254", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "72aee7d17393192300ff14b668e51692d81dc745eb2fb878ed621cfbca8f1444", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "8ac5a184b524d1eaa7a37ec7a20f514e39e14f414a1c1eb0af7061d1a52535c6", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "988dc0dfd67d814750abd5581460b7c51c56967cc5f3405b3715714dc8895ac5", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "66dd89be9916d9501b69ed8adf62f90e621a19112be58d28d12cda48a344b7b8", +"T2T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "a3bdb8fd6f89714f3b1bdc09218aac397f40c51f63d61e326b368f8046727ed6", "T2T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "5aa315d3e42bbcdcb4156fa0de2aec6dcd8a2b1d436a5be5f3e38fdf5abb720e", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "ef1d126f03bb1326ae2079fa9ea17b87eb4fb3f4ee75560d4a79c04a9fe579cb", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "4ef65bff4f16be5b8ac6ef3b782f1b2588d2633a39a61fd2813e064812423695", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "d1ce5191bc297f1bc5584ebbf2b5ca7546617132c3e0a4eefd1dadccb4e8324c", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c0e0e9222488565f241b095cc03d6b02fcc05789386da437e5167f3e0019e313", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "bb52bb78977be98e2122e629d0677f8230cebc8b81151d803fb4725077a20c8d", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "2f16c5ea0f131561f71a79f15ff0fbeb06503ed3b5990c6f2a84ed1bd0ca908c", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "630d209dc9afb49cd5f2f64446d9f219dc84db91132ae2d53cb5c386ad0c6801", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "08319f182a824ca3ebd659770e10f568d0665d31e454934e31f22c08049a9fc7", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4c1d99dfcb550ab843b101147bb1399d1d7bd8561b7129b47701fb94106afb4f", "T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "3e62a97456389a751964e05552b621d4d95827ade9114772ba990927f8d8d4dd", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c3bc569989e0c3d656cd1ee4570a1235527e9f1993af0e3917971392b46efa45", -"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e2b3aad7f6b4f397051906db3fd489486d608b2d0a5aad21166a3c49d6bac583", -"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "3380baeb84390ef2aaaf7938f6a80219f96ebd0b2fe08c17a423bdb4a220f0ce", -"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bb18d15e898c990e5da5bd17b07679413394a8f198ff74b241854477513aac89", -"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "1dec0b819a3c7daed521529e0b14541d227d0a0788da09adf4f0e4b550440433", -"T2T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "97f30b0ebfa6a32446d4b848e6cd13fee84793cf11ccf8a33cf3b1643fe1e5c5", -"T2T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "5d486977acc9a222587bcb19cb98405435cfe4ed890964029d264758740e1838", -"T2T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "97f30b0ebfa6a32446d4b848e6cd13fee84793cf11ccf8a33cf3b1643fe1e5c5", -"T2T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "5d486977acc9a222587bcb19cb98405435cfe4ed890964029d264758740e1838", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a4aa1dae137b8877a1fa8911ca785fafac5ae9ba4c95c6ae9f33bd5c82f92741", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "b9f0d5744f87930ae15f9c02ba074945ddb2274346bdab6a62c9f9499b2dc72e", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "25ad42d8fa38902212e7cf26607a7bae29691c7695151cc20899e8c5d1d4a253", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d7d20560e015abae17fb6b16e5a14c08986811d3e66007e839192bf6c15e692d", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "82fe91b00c8e0ade7f7a98ae30a21de18821f3ee1a44c147f6447b22728c5653", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "d54db070251b720ebd4b05e978fc9f721f37d96d3784411b72e66eca384d448b", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ff9a0dbbf9b1a38908a40fd5ee17173247214aef4ece9230b8cf8164df331d6c", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "613988ffe71102daee01364f5d9856bdc51b14aff5a852b59cca70ee7b3ab287", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a7c961d409d8c8d3de8a88f658bde08001adca691ab85fd09581baf37aecdd09", -"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6697adf95f477764ef1cd3c2e89f0a559f2d92eeda0f60222aad3d244a336fde", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "b6a4e304e7181a23f66192d186994deb2e5bd772d8086e47d16ae95e8f5c82b8", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6ad580f8a2087761241e5c2f3e3f9c959fd650319e0231538ff019bd35e58360", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "2e5ac929590b432292fa922e6651f809fc755076e6462b707c4bfc1717e4f65b", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "2e5ac929590b432292fa922e6651f809fc755076e6462b707c4bfc1717e4f65b", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "f3f08bb7157e8564d7118494b80e1a5b8c0fe6fd5a42518dbe69dfc0d7d717fa", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "d1f93a9be5e67994212c865227c7bd4dd97a15f683d43f879dc7c605ac6993a7", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "35f4fd127ddea03750100137e42e82e40e3b8a79f513c9efac675bd994ecbd91", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "f3f08bb7157e8564d7118494b80e1a5b8c0fe6fd5a42518dbe69dfc0d7d717fa", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "ebd61c48595b246d5dd902c7a2f9cf98e307b71a8e618fa4c827622789411bd7", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "65da5b443d7db1e47068fafb01bac0454331667cd11b6f749c908bdcc15021d6", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T2T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "44be147162a32edcb63ba11872208c4521b9db54ecbab79ff9a9a4daeed6c8be", -"T2T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "01eef5024f2bf1e582640b51c2cb28a51b8d5cb912b5f7983f23a2dcfb46da9d", -"T2T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "cf919d4381fae0b8e7214799687b0fe9466098a4d3f5f59b70c3eb2e69303cc9", -"T2T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "96e62554f2dd7a4250c6e517039303817d9622ef42ebd892209b29f041730d60", -"T2T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "8cbb19a0fbc286fe7af28b4fe99d2efeec1c63ea7735364a38a8989f9cea35fc", -"T2T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "71dd5cf9d7ff23b573258046229905cc6eab91d040180b68fa31f3637049709d", -"T2T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "1ffa53d2aafcdb73ba0d4c84524de1e2845a9fd48b78fc9c78e6f79d0904aa0d", -"T2T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ed1e3d350632ce0ae6b35ab598dbabef9b30270ff3ecc5616bcb90564f92bf6d", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0ee04f420450e7ddbd20175d8f718f87f567d6171662ac7e8ae56c9179360474", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "9b46964e38efa379ff291bc66bab2c38967e548a460bdbc91e1fd537a80e5769", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "03d7c3d76fc9a5aa44605eef6bb970efcca467a126ef7d8bd987a4010de220eb", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "f838279241edf380bc7ca4107a4734b8b2caeef1be79a86a4079e2344ffe49ea", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a60f7192af2b22254cb09947e53d7ed25c02c97e9e0f2d35c4aaadcdbe22a8ae", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d14d3ac3c78e28b978947c09b17cedaedaceb3cd3dad2fa248c6a91548f57828", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d93c9c3b0cb687f75a17edaeca5ad1f2fda4bb7ec7e90d792772d9b3c845b086", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "99676918532997e6a27eab67b529aee3e805136c7242e77785625343fb34fb72", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a34f69a442c15a7ecf36a1f92395fa3360a9b7443f1c1905a40fde7307219db9", -"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "4d6255cf55e195bd8df6d6af2d8eb7df7fa77681daab7defd7a6a665c6368ef6", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "fe832936c31f69c4ec9bbe92314b9f31c2471b493a29e50d186a6d24439311d8", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "a146a0521c0186e8c31006653b48dca3e7924d3ea61b68f2605ae733fb9476ea", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a30a199d1ae68b3c94f04fbdef54929a637aadbe75cc9bc494c51ef5add56e19", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "74d502fa2730deae4c5f7e83c9c193022e97d99f1b5e0b166bdd7e6a9b7e418b", -"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "5c8b72fa8c5bf8e6b53e3a92f8b83c11884911ccba17fa9ec6d93e3ca8b777fd", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "af409efbb080998c1a30622a02239a9b9e3e9f321cb26d09ab0c5e4c69156697", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "33e5fe5449601ed5f91d7b4badd171b90ba60cc6fe709f4984172e319b20d9b9", +"T2T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "67361933c2284513b69ea351e5b0e14e30f1dc0f082ddce1eaca0ee0fc6c2f71", +"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c1b01d9aceae7471acc8b7b21ad5161a0a6981044bc42a55dca57cb2bba0c538", +"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "228fad76934206748ad626d3c1a3786a234255fe09507f281b3eb82c4cca5b0d", +"T2T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "c5355cb65440844ff42f974489e274e7c99d093ae429f0b77895baa5629c6538", +"T2T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3384acf255eb2c6c358aa82365bdd130069ce2cc13b48e9fd7ed6b7bee781bb2", +"T2T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7e0130bf9c752a1b2db395610a73b6afbb36d48f35bdf0296744ae9583d962eb", +"T2T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3384acf255eb2c6c358aa82365bdd130069ce2cc13b48e9fd7ed6b7bee781bb2", +"T2T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "7e0130bf9c752a1b2db395610a73b6afbb36d48f35bdf0296744ae9583d962eb", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c52186d8fedb3f710b8219f3ab2d57597c82a728f44496ca69569c184d3ae77f", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "1483bcf92bc1ed3c68a0bbc668257869c0a2265e1833798fafda202eabf7979d", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ce102efd7c5e9602a572ea437e0b4e34e08601bcca9b654b0f85f05a2d3b847d", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "74402c765f5dc15da422f747ad60ffac9e490eb78ee8080b3773074494b79f34", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "15f4895b6988d8ea0d8eca7fd794ba389e119b837e5e153454d9b772b6572d07", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "0304602342139735c7aa19e7ff75cce4643a9a6f330c130cf3a31cfaec5c0315", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b6374aa097b07421411e9d3917b34ac906a1560f61ba99bf6d261a0c09a1712e", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "a863aaac02bc102dffdbe1fd0bb16b61a0aedf7c92a2c873eba618422b7e1157", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "485a9c12d08b6044b71e8cdcfee42889abab2c2606ee53d9700288f1be918fcf", +"T2T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "28f78742e4c34c8a55e3684bcbf4c79713ea53279536dec00b16bac9313d8ab0", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", +"T2T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "660d5c602465ced2edd740b7061eef89cc4da3c95e6768e7c1cfb01d7f7be55f", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "db2bc4707d184e5e70a56746fe0b3bfe3da97d32b0906680c74adde822b1c2a7", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "fb8d835a2ecb7b279bc3100851d454cadf72fdba32a962cdf245230476becf6b", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "fb8d835a2ecb7b279bc3100851d454cadf72fdba32a962cdf245230476becf6b", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "ab27f681f8144511e74ed2cc9d157916a151dfb429a08e6912a28bb0f7d3ccda", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "3cb9896b9dd1b18d32ad1c9eb02f3f01bd2367ad943fd32551c1248a1e3c33af", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "0808c6e4e531414cc4def62cefe25ea5f7d5df664e6d21472f85f636c22c85a9", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "ab27f681f8144511e74ed2cc9d157916a151dfb429a08e6912a28bb0f7d3ccda", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "1becb044a16b534a79feb2f15973960422e7dd557c70d57263880bd9492943ab", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "5b9815b62530816e2cb64b8ff62c08c6d63f4df585e2b0294dabb1473b9aed69", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", +"T2T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "58acd5b042ba188422b15add1640f16ff7238515ee86813b6c4eee41290062ad", +"T2T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7debafc666c94ddffe6a1da5b731690950e641e5eb8e0f45f0a6b236765834bf", +"T2T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "435667dcb82489240372ec55397fabaa55dba13c2eee7e423feca64456ea5cc7", +"T2T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3b7bf803ae12a5fe6cf1421b23210307084f8b9e3d3f69c3ad160bb2064f113b", +"T2T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "b69155dd7016e691410ace41c6bb8500fb8af7a5aabc34b8adb52c5aa73b5d8b", +"T2T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f7fa57c89ce26ef300347cc781dd9433473b682f8c5a613fbf64c12375b59e79", +"T2T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8a81acde365a27f26db95d651ffd8f9fb0bee801fc5c4e349264d11cb7a28c47", +"T2T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b549a31cb03d64c6a983003b09cb446d7f6f2ae5c31965ac74dfad8031c80ead", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "3051a8100ac9d8a5e3f70703c9d291ba0393c54991f342971176c2259342420a", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "30b7902286aa67c21fcecb0d367e7088e09e1402bb8fd96eecd7ff1177ae744b", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "473ecdcef6b14f51cfa13acb6ad42d7dd4e9676ba9fb599ff5af84e91b1d4b75", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "4137cdb790779b246451dcf7bdab16f7694133050aa33a6cc94ae73372999d0f", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "2bff22a07cddf1d9fbec3a807f8b832fcb0a706f5d3aff8cef8f3dd0dec715ab", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "26d31beec6d07263137621a015f5e5868618347b0a08a36453d8f114379517cc", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "a24e9d5f07e255fd365d11a067dd1fc20d3d1c4001c969074943c9174d253b9a", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "375c06b4a355077b1f22810871767be8757d2d9dd7070d6a30aa5a8bce0b4e7b", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "c7132eea8748f7c93126a7ec3bbec3d8cf836388c4c4d540dfef3e95488690bc", +"T2T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "0ec570aad97031ff8310c494b5ed5700b6d8bd3f62813313e8442bc56dd7852e", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "d2d2608228e87cb0dacea2cb96a0456119f12954343fc3346b5d44994ead3849", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "e8f6ad831da81c9c02e9cf7a174daffebafbf186673456af3da1bc69ca65029c", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "184aa0b0b6b56345e10fb50e1c987bb2ca75f9466d109613c9967acfbc5232ca", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "30a0229c3182dbcc17db351350f14e35dce6a43f2593d907c1fb57443f739edc", +"T2T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d88826de9483505c51662cc1480e042fbec449a05cc3a50cf4dc444252fe84dd", "T2T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "042727e532bf1cf74550268fc5feaf5fa0a29f18b7bb9e1b26bbfdf6b11a1bc0", "T2T1_cs_bitcoin-test_verifymessage.py::test_message_long": "7a43153a3fca6c4f95145874456179f7f3ad34efcf7a5553b423c80d4d9fa296", "T2T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "48a9b2a3576e562ef74b281a5f6746b8c4a58700d58731e9abbace0f75922680", @@ -8557,9 +8578,9 @@ "T2T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "216fa732b14c21f774c6b7a02fc17770baa306d4dfeb54c9c77a85b0a619136a", "T2T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "7dc7613482d4e8c986377a85ca8fa6191426147bf767c448010208d955363a14", "T2T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "4c01473d34cb3fdbd0fd18c886a58229a1ce6362a6efcdf749dd1d6fa9eafb1f", -"T2T1_cs_bitcoin-test_zcash.py::test_external_presigned": "dd75ce54d46dc216e7c0fa9306e1cf535689c590f058a5446648033b809b4e94", -"T2T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d9c7687522d079023684b80e5821773ecb8748e16d0bffd7c44bfc553e08ee42", -"T2T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "9a7bcff67bf1912f92474dedc94f3985d4e84be3d944285ebacc95dd6e144942", +"T2T1_cs_bitcoin-test_zcash.py::test_external_presigned": "6c5bab0969bfc1cbbaf093852a0e959da07c5721128f70a213b9675bea0868a9", +"T2T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "b074c9d0ed5c42e5bcf110b7472b667dd78ecd00398edd4cb5da5ea4c50023f4", +"T2T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "68e5d0a9c8214c25d58b276e052ebc75c9b653be7303f98149c372e56fe50158", "T2T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "fe2a7751d96de0731c7b526cf514624ce01725e976cbe29c2d53e5ba43d2e024", @@ -8571,31 +8592,31 @@ "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4dced33bf016d2ffff4f4ee7f57a124773f2c45a2e5e6fb9b27c75cee8caedb3", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da3d2954cf9a9593e3c0823447d68517ab7b87c3b999ee38ca384e64130f234f", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "10ebc3ee52cd5d07f62a783f15d83e5e97189a612b7758779ac4b447501e2a38", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "713e5572002c019749588ba89dd29e6fc49fcee04eb3e9a268a4f3c691dcacaf", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "da5303e90f225f5786e405424369e3879f8a248ef6e83b6e6960408f706bc18b", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "1225219585bad0bca1d05b329ab492c9ae151953d11ec709de4e53d5f687c8c8", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b26c6755f8ec60f98f80013594558c00215e32a48e9214b4df0c024fa53b6f57", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "e39351ae973898c26b54848659cee91ea3d676c69df4b3c773e4d99553482bdc", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "5879fcddc63c531df48fabfcc2de60318173ffcdd0a1901d3df01391245b0a54", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "2599d72c58ba36860ca4370750f581211f73a05c77e5e7c10e5ed1ba5794cc4d", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "bca30f7baf250c553298a4ff9531bf22065ddf44e933e3f19896632479e78825", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c994f56e464b70ccec11ddb2ef8fd79f3b01dd9bfef79539ca9694e78b9fc0bc", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "6e4d55fcc15d3a97f033fa5451fe30959085d69fbdddb07b7178262b9b6db863", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "b147660b277445ceb442c182c60f51686b6700651e32a648ed0d36e28b64e67b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "235330922f1f90f367036abf73ced4ab675b0151992b3ead735b805c7098a060", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "c0deb646f7b576bd51190995ed33c7d51a0e01403e9604e2f34b55f51886380a", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "c1ed6ffd94e0365da389597d93c5d407e70de1f4c945892db082b50ed4a08fad", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "b376f7247444665e43edb9fc4750b3110d1701a04ca8de52c474eb751e127802", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f784e906672e51a655ddb0fc1d77919d94b8ea2071e4a2827d99a72c3222afea", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "528fbe5b008204b88c08355815cc846781c5320d9c91b473cc30a4f91039f755", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7e6bb2a7318eeaa59f91af5043d1aa3104f789ba19fcad8916af268b4af59afa", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "2d1d5f1c8a4d38391a0ddfe0d9bad60afdcd3afab0c063a54b02d262a65e61b7", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "27c4480f454851cc3107bdf0790d43f702e215ea15c021d099947591d01edab4", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "77eddda9ff146a73f3338eb52653ce0fd1f36b96cf370e64bab3994dd67c7e48", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "3333d5ae0e5db1bf89fa3fc13ebdde49d6dc6af197f0bdc9b07bc04c0eb552f7", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "732f8a4cf14c072b1f15ba527b6ae4f17c061784ad5604cb6e10d0370466ab4b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5ef212b4770e7b112018866133cd62997331a990b48f6c5704ceed336ace2888", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "a8154229536c508ae41c78f2062ae6c56180d36e254d487b177835e17fb6892c", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "eef67695f2a35a535fd1337b86e891cce60aa6bd49a537470f35be5cba96d27b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "29846b400cd7cc683e6a6a66f8f6be7bfca36bffc31cd0d9375580fd953f9378", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "aedec0d855db73bb13e2e34355fbe1458c669c3c17c5f9cd435d15960c4da548", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8abfd651949b0549bd79208da02a84cce2d7b7f4f6af9367f350f4c928af880d", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "f802fb1231a0d3510a80a90c484256edf6837348ddf38abe00342c7056f13eff", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "983f47d25ccf331721c5c3213a9e63d5c0cf6437d320bd754f9166b954fac8d0", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8dfe95715e368b515988e1b7c3bd8097efeed5d3c1275fff07f34814843b6773", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a594861d42778723fb3ded922934af2ba49a07d832c5a09deddffee71c8eaf95", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "445c2bd60b5a052da63dad87ea70c29e0ed86f4d481d920f1dfde54d6816267d", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a347b1dbab6408f25d2b63ac9a98301b828e2c20bd6b414217c2a68e87219624", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "bbb0c548cdc37fe5d48dcca601f8741bc6841699f63d2ed339816df9ea507baf", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "58e3581c2ab38ac257225428bb691b753e6d859609c6849d1f847d77a06b0b76", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "bab89219682125df5a48c377ba46502b04a8ee6be24362a803acd6c91785e228", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "1c28e2e1234149bf87def3d3717c912ab08cf581412c241018fe034239054c5a", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "27023c94f0fbbddcb143812eddd2f24266d44295167616932e387b3b9ab74d40", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cb94e96209f7fbcb6e712deb056f219ce6cd04a633bc7e6891cce9a759b62202", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7423cb702eaf8374b6b3b8dc4eb115182c47cc3510de5d8f95dac07ddf3beb5b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "f17b1b1abbc369bc0c38732144f6a9957662b65b3d5fe7e22c27d7d51e5fdd3b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "932750f63621b656b9bf7ab1c66f4d34efa35c190b3b593809dd1ca34ab7269e", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "07251fb2bdd389377bed64b5950db0fa0ce65da99875d2340d4b3b283e57ca87", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "4e8072bfa4f1341a05b75d5bbd39116b3dfca716ffbdd8c9bb203d967c9fd85f", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88b4ef87509bec1ba8b7e2285aaf22b63d4ad5b28e2d6d635f11475ed6e20ef5", @@ -8611,332 +8632,332 @@ "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1957d99baaa7b4df9b5391e7379ee5b1ef2bffa850c569484cbb6fbe86994faf", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "8a0000bac3d9bf5b41b4eac9b9f3ba4b4555dbbf9a04de0c7d680bf406a59ad2", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "a4ee98095613c42aad79adc78b8d4617fa0c181af97fb8ed26ceae43dc3d9ad1", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "d15e7a6d269828c6194738186b1ae2df91d6f5eb27cb51bc3dba0168055aa767", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "c3c8817945f2a37f63fa92f035d348dee83736bbed61d30ab1647a73f7497632", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "12764e2f35b2b97dab990ac88537be93134631caed69977ebcf33462ae23446b", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c1d160203e6cdbf2715809142301fb48e5c6f7a5bf0d3ac83bbd071441af8cb0", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "cf47e1409d9e84262d37299ccda7c46f6bd9771c492cff212fcf7c9809fcaceb", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "f753f4b7836c5ddc23a4707dde3250fb59e404386447e8e256e9e3a1960bf5dd", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bd80abc56744dd17f0188b0c62b93bb3f5a98b419f45d1a8742e30f339110984", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "99e7b912d3f72b235cb16c91013bdf0ea42cca0b4aece1413105bb1ed0dd1b3b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "93ffcabf24c70f54cb0cf09becd9a0e8d67b9b067d80c50472f562b3d6e70514", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "18ecb1f8e26d07d41eb70e34ef8ebf04c0348ffbd7d7b0d5f597de144277281e", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "788d525588656e3aee39fb2119955170e26314ae0a03c84b486d2decb83df8ea", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "13eb27fc123c4d55a9aa14f94e9d73af89fb2bdc3499b117b3a9a4d9af28d0ae", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ca17a7988a774d82daa513bcc74e4151a974b6dc7ddd81d3fb673b7c4015aef3", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "06836af0fafde28ee68addbe62871e7d989487de2d73ad9fe8cbd62ad179b2ce", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "ebc751c8826184832c9ade7932d0946e51b302c0ada91634fb94b5251510a08a", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "f90c46529559857ed18ba9ebac071e2a30f906316d3f77bb16c77a32b108a670", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "af16cbb55609f67477f711af46e3aae8c7a88e2542fbf1d1a5e729d910252ed3", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "75b771fd9f00e743a22c970c076521cb09a6e58340fedfdf49366bdc5b65b4a7", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "d48ff71a16e5b63c7da8094b98a5dee174feeafb06f9cc2a97c69c31bc22bb5d", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "d05c3a906efb548f06e676b5202dabdde06992db96537a2d4ba13083959f19e9", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "025374ed572e2854f38ca26abe65544d458e8f2a7003104827d862d1ba42f377", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "075d13a0b2d03e7115a2fd938822c55c8065c57e7688fb2d4c6b41015656a7fa", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1637c592c222e63a195a0873b53f2b73e19abd47f1f10ebfe50704a0dd62c19f", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5bade979f53d0cb6c0864cc7754be361ac73def14c38a8cd064131232f619a67", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "759b5b75b92e6afbd876ccca8c55522837f674217e20d30e714995f43cb8ed7c", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "759413dbccb3df9b4f0abdfd7b12507eb0e0ab1e5d75e94b55c9f19ecd11b6bc", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "7b409722f943e7e45fb55921b80cd5dc10685ed1d32e1312752ed606f76f4101", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "3802d995264e9e5e192ace57d22177f00a31120fcfdb6dfbeb4c924d2ae77f32", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "5cb431d9b01bedc244dfcd13132bb540d5afb0558f565a6c090d5fe10e48fee0", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "120584d48232e48685b37f3bfd648f4a8dfa29f3ed5f0a5a86dbd5020973fe56", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "cb599878f3283a93213d3c9bf40ddc27c659b50484436a06f83be7d16b8e54b5", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "7c48bbb9cd9131a0b93cad58e1f8b903c4cbdd7837fb83725fb8a78771572119", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "525c2effc307f98df5f7e09308122f93a804a1865f170913e8205e82d43448f5", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c46d999c0466c88e0fd84be2b65135ee6a20fcf1c4c8c6fe0542fe4062d0cefc", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ff448e383fb14aec0098092b17701d67bb8a3b4ac9ee743e167997e21a5fc0b0", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a0d59b3d961690ffd41751afd28a94ee6366402a93a277a4f2c32d7ccb679506", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "48aaf2d49cee8617e53ce6db0c427e641dce7cdb8b3277088832d6d9619c76b2", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "63e77cc2be608542a1f6c46d47890c369dae728b3ce73b930ecd4074a2e7d18a", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "e56cc63b826e6c27390ace3173dced9bba37f513dd1b86ced965e3206da2a3d3", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "8bdc07efa2bbd8912aec9eb41fb0703344cd16dc6b8bcad0cc0b8d436577835a", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "5977a5bd5e0019138710a721fe0337cffc17da16b45be3c0343e9b8a5182b35b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "bea9e99a85ae11b1085f1ec38c96b0425d85fa006efceb4add10129abfaf401d", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "12a796393fc0f618a56aa904cfa0b5c8dff83aadb446996c5385ff312c5ebe76", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "916ab6d5f1ff2be103b1f77029ee75f733636d7e8f57390f09fc40e8fb19c111", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f58071562b859823dfa1538a3b081d3807fe23dd8e83c55781a9ab1c336089d1", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3f0de896c6ff2946afe6c08c77cd82a3c167df1acd925edbb262bd5844fb2db8", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e4c569417b8d52d20fb3d8da0f5a0bf5c4c189c924c97b35a4c1384015a2cedf", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6f0654b16de894b1787ae81358caeba1c869bb0985ac9f5af4f16f86d709ee38", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "57917aa2f29f1bd48985d313a0ee8d6567ed5942d936f37ee5d84ffe881bc5ca", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "d79d63261c239b44ae2c06b1556300785effabd9d587ddb1de6c691867577926", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "8a8349b86afbff0f66d0a0cb5a0c4b43f9d1f396c344daa32a170988f7163174", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "4d91489cccc1163689933079d0dace4ed073982742a4b05a065ace8d7a737ae3", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "cbb195f3150b0c0db4661c5c7a4482436bbfc4b31dfe9b99f4d2d8188a3ee390", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "eb7e280c9d9c54e197e1f6b2fb41f93999e4d50f51fb15045a8ebb5fa4d8bc06", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "95e204fa43e86ec07559679fdc23ddd6f57c0e866435d1e3ddd186ecbacdc2f8", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ed8a6991e4c72c62d07e2a80b99f3839b4616ec32e0eae4515819a0bea7db7c3", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "bfcc3ce1f083b1d724688930076dd85008ef7e16620c03e25e3b4dfdba7a2db7", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1ac35f94c99a195a2c90b11368bbd594bf94e672c54d3fe046d94dc2a6b1584c", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "483ec6b1b7b89bf10c108c915ef2d09969bab5e6bc9dbdf123fdb5578d335da6", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8c2fa55bd3ce4267e256cffd717b8dbc4d7ec2e48e8f6b656609ccee2d0fe890", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c8e06dd686f63412df2e08b3bf184ab9fba8a6ff482e76e127464d4aa0724b58", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e84bb01ab8469511a23bbf6ee1c43bcaace54d176409968e59675d331194084f", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "62b712561b2a6820229d9c6124cb121249490fa1bf919c1a4c304438b94d64a3", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9b67006969b8aeae36bd814c2e50611ae7376628a09da6fb6035d96b6ed10c2e", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5bab043e66d25ff7a4a260496c0b19f7d9a78e7a9f90ef297f89f2ac1aaa329a", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "55769832dda769f3e5ee86e7e45271400cc198f3abbf18f3f4d54918b24271f0", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b4614508a92984e537976b66677402cdbb8f3ef66f1c20a1ee656ace964d105c", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fc39b214e22446ff3658db155ed6997811dd7c06731e6f4fcdeb47913caab4a0", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "6dcc8b1648dffe52af7f04817401efd814f466d62a4e4b988abd130754a92170", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "60dace26d6f6dbbee0716174142670943908ac819ec5b1b31cc1fa5ed76017cf", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a0cf65e7ba9e0f9bcbdbd5806fae815476f2d0850ee550930384b568b5fd189b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "919636362bc1736739ee65fd3610f0ccee66e2d853ab88bc4088d4ecc79f30e2", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b73f17b48f723157f4be55064026a4cddb87a6190b7307bcdb3e7ab65b7f9f91", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "21c5da1aa33eddb9c63e44b4dc0b7e6ecf32e2bbd6b31865de44a3cc0f0055c9", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "5de90bb092f5fcefae3e76ab3e4184fcf46c3097daec88ef9089b881d42ec319", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "a0fd015db6d93dbe1a40d8de46f24b83b8eb995236fb9e9a7878a0a71f27bebe", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "c9704a533a21b3c36e3f02481b26cff583c41ad7e303196eb62e0071b3f398d6", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "0d81cd0d017f83d6bec57f311120b95550922bb74a93afea118c369d5d5007ff", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a8d945ba3fe514a68771a3686fde56486603fdf4f9db49cab44d2e30d905ae40", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f6332c444e0e6645af438058a7b5e0ebf524a0ac709c4581b486d9c46698787f", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e73bf39b02a02173ef9c184dd6c0462ce284857052bcd861a185c8fffe0b5ea2", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "420bdd1285c752ba70b9caf651277c29eeed71ab9a08d049c2b62f0134a369b4", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "204289568e711dcbaec6a93aa8a9d8b20b394dcf9d72e7d2ab774f9268bc5f84", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "a14423ad534638ff450d9de87cc71a223a5bdae243d6c77e14baffc9f302e36c", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "330567987333acac21a868766cc2efea7b7f3bb6152ee93adeb67762feb743f2", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7d1d67fffcfe43fbd8f191fe19ec2ebba73578aff885c2af58137fde4c69586d", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a08bbfb77d3943930f954315b56c5d2027b16d07a65d8a774a4df27935820453", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "8609748599728c8146f6004252baf2b8af1fe44987db630adf83b625e69921e5", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "46c98b818ca1100f51601776541723f9d1331f066df788c6d1f2dede969a0d5c", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e163c576fac87285b9a301f70b315e67c9841b04988ab87079399fc03199f651", "T2T1_cs_cardano-test_derivations.py::test_bad_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_cardano-test_derivations.py::test_ledger_available_always": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "205c2363f08942fe227b76d1d8f267fcab0c19fa55bcb59e582f135298b281c7", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "41757a529e9d3861d1b1b1b11302686979904e1ab92f676f38eeac5bfff6ea4f", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "3d9da2d36711495c6f45afe63e37bf88536dcf03142074d2ec786bbba89e13cb", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "3c2af1a1e5f0e4cae316b49c3ab8ca39f528e8150afa35a12f7cb7a6db43d2de", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "95b07a93e37b647592b6cd0d292b84f64e2f46785e0e31a39d805796e5e08779", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "c457d8a79a114cf8aa3ddbea19eb933fcaaafbc2a6465e926e5a156ad951085a", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "59cf0c189cafa6c5cefb95f22876145e3318269f2eab3bcc43073172aad60620", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "6713a9640c6ebececbf2554d445a3da6dc71fa1bb47a64618183eb7173d83c76", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "057690f59dc16e209103db5340fd9620226b6efeea941457a27a553ca2207087", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "bf60a00c4465fc322476868852c3b07878a2e906d3f95c0905abc78d89146c78", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "92715dfafcfe4067ad54ea9e271c2f4e1e2b5780994c588bee8bc2c1206bfa30", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "5f92a92ced7359fb22f15b8ed9ef9ab64ff39a567db0f579193cc8cb22612090", -"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "eb11532062ab02abab18f61b1cd08797d04f67aecb5648a4d6c5897ee69466db", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "15d48130af0d6ce87ec4b58b2f1ff1d8151771adbde8399f94f227b115a3e169", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "93fe08c9513186dbda8d73ec534654d42394996b0d99234ac3ea5826c0b5be02", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "600e5fdf90361680b0165e17749236f481429addecf700bc5eb3187bd15d4881", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cc8e5ba04e915396f6e8544b0425757431e3fdc5ba24b8d80e4fe0471ce56ff6", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "4af4c9b00191aa2045cffe531395e98741d92234389d377770b9c32c9dbffbe4", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "f49015a1ed733782a6dc7068f42c00730d2d3247e09df124fed8ecd8efea4899", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "3b0d966cd0b7de3c1a67e8fab25325b9a1f0be41202697aefe229c2a95f3126b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "b660ae76575bfce08cb9742ef1aca2a829f034b27d1fa55b5bd7400442006324", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "3ac54e0606001cb94da6a7342d7cb1ff6be93b87603dbe2f7a13bddca9cc82fb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "479dcb4eff6032005bab35d85eca1358ca39343d13d750eb14b9e92622674097", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "feca058db0765a0e8c7d045a4878f278a92d40c60add5c409a339fb13b8bd4c3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "524ce7fef74bd5368b052432983e655ac2f87ff9eb12fe622a62f1e5d3984689", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "524ce7fef74bd5368b052432983e655ac2f87ff9eb12fe622a62f1e5d3984689", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "70582f944d06e4288ee9f061e7b5ab2fb8950c82bdd30db50f8f0b543798cb98", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "5e9ee0c1c696efc846f1a088999312e5fecbb70e5e4fdef85e238898c5b00ded", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a0044873f36d7001a67ed6199d8487dead31ae396c723565ca9df3ddbbfcd8d8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "20acb7183f1b9450a26afd41606b395153b57dec602219ef763904dae4b17b99", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "74dfbcfb1ac0492b04675d3951652bd777a2b3fb475e92588f35fa99eb4f7026", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "abbf65911333c1fc812d4b4adbe8121a7e5a5df79e9ff3b00808eca965c74633", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "875565741525f7b482154f1049064cf12d37998b24789bcbf9b46e6249efa2ff", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "7199640aa463aa243e98cfa20eb3d4204ee46a8f97354d684c2c6d738a6c0870", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "8090a6b148b16e957cd572d7b007afaef79a693ce204eac097902e21b85fa05f", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "74dfbcfb1ac0492b04675d3951652bd777a2b3fb475e92588f35fa99eb4f7026", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "abbf65911333c1fc812d4b4adbe8121a7e5a5df79e9ff3b00808eca965c74633", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "b024d3faeaa2e91480dd3fb0eef1d676e88753f22019d17e75aa9ddd8fff4b42", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "91dded5c04d5d9479c118e936fbdbca7bd8991ab7c61c915d9772279e6a7b9b9", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "c724c7f6fb49ed728d2f84d6aac4d4c9153fee165dca33170e4f81244485a9eb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "caad567f35cb99226dceeb966cc0bd2ddc8cf0d78b5ca45c0487dcf8b3c99027", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "8f3b233d798358efeb8e59d78aeebbb08977e012b6ad4172bd4bf6765f6d490d", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "27812dd7b22e03e16de63050067ec27fb75c8be85116ee140cce18d631ee6b6a", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7fc7d36cef779d079b1bf7a9ef1165a7b849d970f8881e0e939661ac7b667714", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "20910fc3219f49917010626e3acfb09b82d65ba9dd7cc17d27921b809e954b49", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "84d25fdd0312705e1d5f4e9494c0582e70af61ab30b3028fbb191fd52d8645cb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "bb00f35383a23e4ed31444126f7a37e469a4214ea964144189d2ef89e8df3a8d", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e83ea6d7f67c7a10fe435ffbbb31a28b3b29f8a259ca8d81eb4db31ab6eee2fb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "d4e006f2dce33247fc8d783669eb10265a935b761697d411f2f1fa9dd09f8610", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "be796471213d42df2f79f8c807bd1dd6aa600874612e7cf90cbcfc78cf1d3c9a", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "153c1347fc83cfe772f3fb7e26904b403ce3610a35947642ecf972751c307318", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2d787ce2c7db6d88cc0c2b4a2bcf927d0f6fb2e0b93c8dbb66ca0d6c56613697", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "90741e2df6449e169f48d62e4d655948f80be00cbf83060b2a14f0326b0781ac", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "329b378577c651d9cde227e32409ec20af9977793793d72c7c75987d78220dca", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "f6a7765a1d2c4c235842c1df8eb588cbd163e3907c89dd2f4aa857bf3bd188dc", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "0eac8fe426a1201b4f1f5a0b485e9bad7461f0297362b860b0daa026888cb637", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "63c45d380fa7103da3aefaacfad395ed699884dff519bb90ad9467bcaebcd0e0", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "34fed959797ede3e71d75d2f3dc163bae7f2766f5150eef356dec3c81d8a57e2", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a6174dcb2a8f6209a60b609f2fc7efcc7eeaf18ff22d76453fac40cbd949c48f", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "e2a67d8cb2d8708c05ffa6acace6eb2ef80f591120298b0825c5f2b024c24c4d", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b66640b4305103968e23d7a19f2ad1615821495b17835f9304990508eefb01fc", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7cf345752ad81b4ca0102fe5e9d130844a4279c8126ac79c7b346f0973bdfa1d", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "cfd9a3851bb4fd24e7bbf608b1c4d73c6ac1d04be250f93984a7739e04e1dc4c", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "59dde3afdb5abfdb91a941daa1700c33e70d0a3ffa9496631b3f547ae3bef538", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "86391feda734eedc54099cf808d4764b70ce5b97905f2347a8f408ee685e26b6", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "1aebbfb1f711046b0aa8e8b3df150053af18166ee43e0bac2e35271c701aeccb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "e3303c1601d7aab31a5293080189d4d4bccffd40618a0ea4459ff9909f49c6aa", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "65d111f11975e43b15e97ddaf31f400af437ceeda7c82eaa989baf39521544d2", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b1ce145b0714a69d923861e0991def8a0292dd791e5e0d1ab802abea671e2c14", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "126340ba640059bb667eff14d905c94574df9dd2364b275eebdffb5a70f38065", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "25f767ed759ef71d11258ad97438fab6b380a32b5cc246548d20f8f1a281b8f3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7427323021f757e18578a088ea64fd4d515d5df8cf856ed24f5a1c5056193e47", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "bf59059087c19f352eb7444d8d2dc96226d81719b8ccf5be7680e969de4f716c", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5463d34e3fb3035d47598ce5f099bfad33bf7c6d27a0c8a51219136f02b9a8b2", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "8e6ff82e72411e9e23baadb5158e527a0f7cde4d430b9154bf976d249ea3a095", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "83252ee4f6b2f44c970a1db58dafee0d02b61b6b7e7d2381bdc8b3da77cc8b2f", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d21225898ff795191661b533fcec9765468f19011fed12b4b7857331a9552fc2", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "acadf7a505aecba3e4013799b938bc17455d283300175eaefbd0f381afb6b940", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "2e4d153f75b84a41f430886d22c4b0a235f5c249ce60379be6fabc4d08c58b1a", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "611b1465e82c05e2b3a53c6145aef97b8ce151cdbf06d45ba36b8c6a8daf6d08", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "faaa5fad3fda0eb61f35d69f4f945d8cbc52c16042d6f67f34c24ff79ed1b592", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d751164abc5b9589d6364a34cb942072308a5caf1d8cc75f605fef9d31660d21", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "edbaaa701a170030f61aa28bc35a3b246e0ece38a72c77df050cf62941bdf830", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6a0254d4d4e20d9e6ba465a20dd79a183019bbdbcd01d13a64ac365aa45b4d17", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6a0254d4d4e20d9e6ba465a20dd79a183019bbdbcd01d13a64ac365aa45b4d17", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f48a4f2023517b9cd108a859bfae840455c6a1b6ebe7bf3859bba60413b52346", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "4f481d69ed4494a63d5fb9be025a0051238bb94be566847c6495d962b8f337ce", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "cfa4aa08d8e3fc22641a935b24695909a538da3a140b132e0200c6f3f4671e65", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "33b9c7b5f690fe6e2baa3e580bcda2a26b1254446bbf85f6ea301726cbfd2c02", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "5db6e8b70ebdfeacaff7f110cd0773b9238f49116bdf7c7307489e310b56ab01", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "484eec6e80aded346a2ce3fb3ddcedf1e58ff504bf22385f99c490e02fa7ffb2", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "af4bb451969b231a9408e5de487d3e625ae82c607eb1f525255923344488d45c", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6f19f8b00ecb4d95b192434c581abbdb3451d6901dfdef094a8b72eea84d1ecf", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "dd8a83abb6eb2c460c92fc074e62ae784b2dbdc9f298292ac4c2810bf2c18a25", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "15d48130af0d6ce87ec4b58b2f1ff1d8151771adbde8399f94f227b115a3e169", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "3b0d966cd0b7de3c1a67e8fab25325b9a1f0be41202697aefe229c2a95f3126b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "2a91f8fb92062c2fdc4557c6ec53ed9b141776ddaa25a9d832882a5449da3a2b", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b04250e527b01644521a19889326b552d87ee33fb75db226ff588f858e81e56c", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a5691854bd2deda9844e35acdd0cb0c5628536d490cd1b683cc010ff251fdf51", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "ff3f5ef26287dc3f323b287f48ec39363f8b65139a86294e613f997e02d90203", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c3b40a6253a3e8388698998707c7331ccc6e99e48e57be1578b3c3c05d7da95c", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fccca766cdb9af9567922a258710630ada8aeed37a84eeca3b72c3f1984f4d81", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "a06a966045710d08899a2d27bd4123adeaf344d5a6e908a6301628e1eb184f20", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "9f91a429a92f95f4fc84bfd05936baf494913f041c7a6c68fb075f9419ddd4ca", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "5c35c3fd1490fec94af88c9e563677af43e80112ae742851c955ec4fb391925c", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "7206c58251ceef7fbd6169c714b8e45e003312c1a1fa72ca8b1c5a8424b463cb", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "cbd5dbdca796fdde1338ebf8a96e8211372fd65e28fdf910922bace8e098c029", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c52fb9368eb4bc569773167cd0022f0a54cf2e48ad83332051d96cc166c346c3", +"T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "5a9cdbd8b05bf710cad900fc3252729bdcb15bde4dcb7234a00406be780a3467", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b705cf1b3132fd049d1550a1de28e323ec2653d1dcfd08c57c5a7f51986b1b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "594a4ba2b231ec5413dc3d9f9fe60570ec7724f5a9249e3b6cf657525b02a45e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "44476582358691018bbebdc5f625296ee202258b0c1f6421db14e04931e59dd8", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f186ba69462fa6c308218e8908238eb0f4b6e66996b35033a754b31e5436de35", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "475f55fe26fcac1f9e72cf4f6bae9d5c8bf93622ec2893fae4ad49d1a3cbde7c", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "661c56ab9f6d0b27ba19cc5c563f1f81eeecc667ca34105d14d9bfe679cc97b9", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "cd4cb2aa71c5fc26114fd8a62b2c3fa92638c1b9865df694a6dc658fed07184b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c7771ccfa179cb6f92579c558c5543c8508476f50871fe575180c8a5f66034ab", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "77282b5dddb8a6b37fd7ba45f4a41f0d3eb6a1838160a700b67b06a7af3169af", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "de354fcc0551dda86c0fac4b739eb6b99183e652c637fcbac2d70be6bfabb102", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "af7ac4c650788674964bb6331e52d87d527cfd1a33fe2c8e176a28857418fac1", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "5fb4e08958a3fca4b5e2f9f5ca4a1af8286c5467ef646d5c6019be1d0df2afe1", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "5fb4e08958a3fca4b5e2f9f5ca4a1af8286c5467ef646d5c6019be1d0df2afe1", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "aa5699fd91ca6c9a49204f8ef8e7f490785041d9e610f655df0726e65052baf6", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "b59a491eb2a67e5a8d1aeccab8d8e8ddeecbce9efaddaed110c65e3c250d2db9", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6bbafca34c69fde6aea6167b1c3c9d3a683c8cfed22c2ff18ce18b6dcdf0762a", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f6fd4fbfb90f4c7c221bb0af435f570ac8c58a9af3fa2b89b55b19164d7c1c88", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "faba2e1268b6701bad92823d4fac255b9b5350e82c71674fa5dce6ffdd179fca", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "aa90ccda7d9c9959dc2be227cd0666419b4a0b53a3949a6d4d3a29ab6ad6fda7", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "be3ff16b356e9391de01a0a7a9fe633d6fa37bad89e015dfc7f0103dda4e98bf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "e0f96f0841cc67cabd73c5ec693841523debb89e6623d28c543b5798a9e5ee81", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "9ffc9917a0247d1be393fe190e993f82d8032628eb78f18dd4a14609575412ee", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "faba2e1268b6701bad92823d4fac255b9b5350e82c71674fa5dce6ffdd179fca", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "aa90ccda7d9c9959dc2be227cd0666419b4a0b53a3949a6d4d3a29ab6ad6fda7", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "e79d99660827fe14626994c7ceb07b6c6bbfaf1c7dbcfe9cb924cc75463e0530", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "0bbd8c50d25a05c9a4da502b5166c612256382502e1478d0bfba630344504d75", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "f962a61fc89e0fc1c7e85dab77a8dd401ca519219aa64d2729ed518e124b5c54", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "9d1083088fc55037225170d74d813057fe48f99e2fb33cc23181818de8f7f179", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "54b7a5feaa36d3de1cfb3d0836aec10d2ec6038525126d54448d029ef28dacd9", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "ef3ca8f436441b76373b8ba04f31b70c381dc0edfe17a3d1fcc7a6ffb2bb728c", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "775e23c06eb7f92f0c205796b1113cadd0cb16b7faf96de36e2a28c6393592a8", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "298be2b903164c3b9e2d5fe2cce4523a252d3b22255efee6b955a80d67f186a2", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "43920e045bdbd0cc19970c6339c946e7ca5ce451cd7a832c47ede83ff13e5155", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "24d52a244d77254c5c4558beeeb710c4d2fccb216cc40c85be2a91e3894c0c3f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c203f035a61bf7832ef1549e1f5483d89c9f3838a41cddb9f318ee817e36cfd4", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "60fcc0e1bce9bd0d9677a1bf90d4372b619f60cd5674daa07fb00c75e6b7d342", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4ea136c7bbb94163065617d131153fc6c6e58a600d7b469464c867c3695a17db", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "d2ef0a4f0899560b048c83b713f5fbc189b0fc24db470821c5b6389194bd233f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "5e66e0e8fa485c1c0a7a0292d96d7eb9ab82ab57459bcd5c9a019e05d68b2647", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "ae606a5e444053e679ecde22ec19f459ed24f612a3a774fc1ae3d0e22de238ea", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "b822b41d8a34c5140a5db572549e42d218f9148ef0dd6bcfc94c74d359622c9f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fdc02b6710a9e3e5c8a095b46ead939abdd88fae2cc396a0d91c12fcad7ceaa8", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "1de92ff8d0a2ffd2fe6d9cd518c1fb50af81b3ffc9e5b9d87afcc75f51dd187d", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "663988d7dc9025a0b0ea3b0104749513806bfc54d22b78c77315e76666bbfbf1", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "6d90f284f506a03feff102a15d2f33f071c5fdfc6652fe12871296e4ca407e72", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "de56345b461d61652df3a2e20c8936bdc8efd29ff0109cb88fe59e84e363eb8b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "19a072e5ebeaa61f6c9bd0d7dcbacd76e552d8c4ad84508b767c7e6b03751dcb", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "63b8a1ff31fb80eeb102b64ad25d847b6171b8f9fe06ad96fc4ba4e272a589ed", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "8941673cbad3f43397c0516dcecbcf2274b383aa1830c43ce24ea54368e1aa20", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6c2f9e3a79861a410b5b7613e2f7c852cfcc2338f544bd126d930b97b73f173b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "e33d07e138db17b40b369ea6c8dd82ded802f8f4839e7115010847778847f9e0", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "7c2580c2d771d55ba3c6bfdc97e491e8a11994e31c58a1c97c01d1cb74aa3f02", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "6b9adb99d65f9a91393066d5c8b4fac61cd0a3fbef712438cb453066536f7096", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "11f3cd251e8705dc8548ad83a0481cf02c6e4185fdf955850c45a12f78c7a879", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "abbbef2fe9113b7d89ddf09c537813037ee89b5ad759e3a422e7feeafa06da90", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ce44c45f9e126ef880d7c175967f560e52439b03238f64a9d8744891df17e7aa", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a22179605f6d325e9e5cb921d85aafdb2ce7ccf337b1f02caa9ceb592bb85709", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "bb561d2bbea7ea46bd148f62c86f35292e8ce8855e6900382711ee2bafbc73cb", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fcc0172fece8a3d30ce3f76fe564e4cfa560db0785babd2e6228f445fd070bfd", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "371d13a75eebd3578bdbf89af63325dc432853cfebe4585edfdd21d32698d596", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3d2a1e54ce93f505a8671ab232772b7a696bad88cde38159f528b0c0e43c2698", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "65980812e7871fc5ff6d396978ce39dbeece64babd43dd4b29e2b27b8cb6a6d3", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "bca4f1a253ddebdb90769823828c4c15047bef9a6faaaa9608c1b64316b292f0", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4f92a18e9150d2e02340e00c6cf304184fbe75ceb14e33b2378b4f7919df2653", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "961dc7581378dc4a35d10cd27a51d7ee7892443ca892e801ed3f4e16e3272d0c", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9deb71c5bed9352a429568ee4be0c5454522786873d71ee12d6fa08d34b9916c", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "efa7fb9b031385ce06ff26df22187790b1d694503098dcd203ee88c0903d4ace", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ca8c279751c123558fd05fe350e16a57d7a1d91e8e6a91d367d579a282eda994", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "c21e6f1497e74bbef314f6fe99ba5bb09f1ce6745861dc0abc511d318a486b4d", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "59240a6cc49341d79b93134982a18a520837fcb63dc4058fdd965faf3d7ac346", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "99209667fc84455fb009f3d3e350141f5641d0081dd578041eb1430005c2aad0", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f79a6a74e117322ce0bd0fdadb5df4e313060597a19ff9bc62537b7738a039ed", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ca83a6cb3b8e279e83d682e97239d17481f38a349558a05308395b1648ffa4c9", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "14b40aca5579446803088b11e94f0a897b683f62813bb0824ee31b98e6dd120b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "b82469c10ab0e7d6d13b054cb9ada9a6f552e2a0529e4cc26522dcff6b8afad6", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "95cdcd4515af3ed3e8c0b44bce6d3487e7a86697f3b6c77557db2c8685e7c25d", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "faf1853dde78ba77a646d039694b7bc4114c72025beb4d585d7135161bf07d59", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "a2b705cf1b3132fd049d1550a1de28e323ec2653d1dcfd08c57c5a7f51986b1b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "cd4cb2aa71c5fc26114fd8a62b2c3fa92638c1b9865df694a6dc658fed07184b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "cd1e4b5868fa91909fe34135fb834288e9896a0a0ac793fea260cff1d01b8bf3", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dc4cb48df5897c0715d4a052414b28d45787ba9350a850db647b4d36e20b8589", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "1f03dd2bde1991bb1c00a8302ca9f07e117c4a3a7ca0559e569ded8a847b7e70", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "bc6b74deaa6ee797c38f0ed28e0cbb207468a1fbcc14537add4e2ce9d18a5ff6", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "cb67668533949423b2684eaefbcebe14b1414648b49add4b214566900b8b2d20", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "5959d8e6f3acbaa5c26bd9faa9514b557d0d8d68e55fbfcd8cf79d6215ad70cb", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8dccc371e1bcc7456402a02e2ced0d7b9317682d80c68cf448ca76756739c6a6", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "2157366209b2a66cbb337e386353a4842af529fc5fe5dd8f2da5a131bc713be0", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8dd8ad562986e115f4ef2df4608ed849e63d999916de25b0800bbc7140cb5360", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "1c5bf17ec70a444bebb502f2cbec045ff8e625462de3cd66c1a1dd662ad3fccb", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b7e05510acf44d94cbf762daeae228a68a0e4022ab3de2e4d9a7eccbe41d7bad", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "d2f936bf44dfdbac2830ed90bf0b10647660f1df461bac46d7e239a617995956", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "1f8bcb5691a4fb7c8c70d8cc04f37d0075c5d1ced96fe1db6f335d376316c867", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bbb8e3d51bf28e54f0319a5e6be66a3e73e77c12ad5a24c502c178e1033b67a4", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "2157366209b2a66cbb337e386353a4842af529fc5fe5dd8f2da5a131bc713be0", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "5c4f06a892025a45fd0ce5169e22f1cb59cf5040c14601360432405189163854", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "109f5d6139b8eb490c8eec82fb7c51f6ab59e18d2936ffacd2dde61eb7121f4a", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "102ab484bcc9e9ddaa282490acde7251c3f50f7624546af088567a5fab35e446", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "514501b5e1f3c82e64eef126ddb17fad6fafc41f173d0a346d4ba4a5434e7d52", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "30cb47e9617f569c6a49834dc71ca599ced8910163e6675aa584a8754dc1d758", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "e7658fbd2e631d31eddfa2e98782583a15b55d00461437e1858538d3d3dd7a64", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "47cb0b5e569a7fccc03242a0baed5339fe01f2aae5529ce74c9aa8798ac1f0cd", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "1c5bf17ec70a444bebb502f2cbec045ff8e625462de3cd66c1a1dd662ad3fccb", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "8c8db5175f60c18f5f2a530c757b54539a2e834918b53f224473da81ce13dd1d", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f3e6129934f12cbaf2072eacd06028da450c2daf405f51aba0253cc931a75c34", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "321a288a9dc9b2f4a1c732b7a9c89f4c1831d2d03de5ad2a4458bf29d1bbec4a", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "bef90aedaf9470a84f99be1f51b3a54db94f2fb561620adaebe2875b7349b29b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "03d17b6795617d69dcdae358a577fc45feb35a0e64f545d3ced0e79ffdb6b01b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "3bb70b667051e819ae8f1b38e55f63c02c73320b931a91cd1354f5909b94bb64", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "3b1a0b48cb04e7eaaa1d3ac1bb99429d690b789fffc4f15f932be430e0b153c2", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "efa68b377331877e69df61d59613742f3373e729eca435bdd96e3970b7353da0", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "346c9cb0a6dfe9358d2340d1952e109d2e12e157e689b823fea1b6c0036b0aed", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "d971bdf7a9ffbe2a40abecf4d63beaf2e9900d46b9174214c0f27563e43b275f", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "90690a36511472d80836247218971e666ec9e16282fe5d399c4b22d5fec6d50c", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "8a88a80d2835415862ff9c92ec2d6552f9c278899ae52aa80783b8f63531549f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "f87b7f1f16c1825d85d06460a604e75a566e8e40280977d5ecbc19c16c7b2f91", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "591a24384b8adddec8bb2ac0fcd3b89594f006afbdea2734c9e0b4c78f49042b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "77d99486762dbeade27d8c5aa9eb5deb63b4c576d24bb87e94bdcd115638667f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "aa5dc2faecb0c869f74d86b78326b037ee7308a2fb31c2f7901ac5af7e05093f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "73400f173ad4e1db3ec6c4d110bd01d66a55a24161bd919bd5baf0717994f254", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "111b1eccec2a416502b02fd47897f83a898f32f3cf01d2e8898bc2f74300c44e", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "cf5ec2b5deb33ae73bce9721b55071b26c35ffc3a05f06c35599b4e6823c970a", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "dd2cb694bfb8c6fdf81340719b684e9a8ad92abdadbffb18831407259eb55127", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "71b6c890d729a37c8ad4f2d1ac73ea583724f2f97af6e3b28506be0661c554a5", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "23f98dd62750b0a2f9eb19dc54414ed476d4c6b43a4e60d7cee8bab8f74ae0e7", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "add7c0153e9615bb2e401137a6cdba989cf9919c276ffce79af94581e750ffb6", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "3555b623fd19149a6578a5e5fa26665a93e992748f0820e9928493725a5dca94", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "80436fe490c098c3adf6f47fcf068b93f0d3034a806b8a73978f0f31503497ea", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "863ff980c5dfda039948138465cb6931ac353265a87ab79f000cca9a4724c5f1", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "3b9570d340a81abd9f6c1506ec50c5bb1d8cff4df9a4058edb9e38d106e7db46", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "10ae3933807ac853af3b462a73b55f0a4b625da96045401d9897be55b72340e4", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "c50869028b8cbc599c3be947bb62ab1588fcb1fe5f381a8e1bebe4e11cb5b72c", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "bd39f569e0a21325e916c5675f2d19c940099ff5c7adbb8121a1593fdf9ca5fc", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1338ce706b4d3c42304287b5da9d8bd5cc5c41d951a77444de580a8c5b216703", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "037d33fbeb14ce12d1b7e246de595521edc511801d37c60c519c0d35bd2f6d66", -"T2T1_cs_eos-test_get_public_key.py::test_eos_get_public_key": "e5367971ffc6c1627977b59e31c22a8314d8dfb6b7c42a8bd742608dc16288df", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0f3b1e8d399d08ef0651d587b9a245f7474397f160127bab0a6ac932556a5982", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "fc8a58cfc66226e593a04a1b4c93f2ccff8fd805ca23e1bb5679b77a47c72e28", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "a1249cc6f5c05e7b8f1dc738fd9d55761c764de636dbfc19bf641cdc0b09584c", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d841d637a132f29b21ba5de91ed88c91030ff8c1360c194af773f7f08982684f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ff772299c9dde576f122ac62804ae2ea1399b0448ace19d02e27a6eca7279884", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "5733555ae77807883c14415164d7b55665fa1a89b3ccb8b3cc8f8fd6fa7bd2fe", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "19495f75bd93afde80641ab49bffb886b05261c72edad8e764269b97c7cbbe51", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "4e3935a1d4ab15934788b923a5225fac4a26f5f1023ded444763b8c16a5842fd", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "2cb4611d59702abe0d9c231677b3b4dc2d59839cdae2b3c61ff4f25534570d0f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "a2d0e29df533950cfbe4c7404676a51de74e71dde00c2fc8db2bbccdaac0748f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "88def87383de1773ee23be6b2fad213e3d1b736e7b5906ff72b1df1b8e6fe39a", +"T2T1_cs_eos-test_get_public_key.py::test_eos_get_public_key": "d38b1c91f060adc4d045d3923ce1a09cca42bfa0002359f0c26b116d23bc2125", "T2T1_cs_eos-test_signtx.py::test_eos_signtx_buyram": "08d7a0561b9841f415c2c7841b2cd2a4f903b1e9c906b473aa997e632f375531", "T2T1_cs_eos-test_signtx.py::test_eos_signtx_buyrambytes": "2a400cc87ba7be2047c8feddb319605b5a2b987d60f411921c60a68bcc7fb3bc", "T2T1_cs_eos-test_signtx.py::test_eos_signtx_delegate": "e45fad749b8055f89ccf4b2fd3bc8c6baab4dd5a21fa7f185cf01e9ffb72a26d", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_deleteauth": "58374590d40720c14b97694f7e83ad53736526aa702ab80f6165cba2d916a9b8", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_linkauth": "e9e67f7b0729926ccef4aa1cf9b9951b4c03eb36782fd565107f5a89d1274ba3", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_newaccount": "ab518a102227712a6c10511c42c3db5ee52973355a0b77d4fa2e72fd3d734bb3", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_refund": "dcb74beb69041203c2575dbd06775d3203c7598f9c46df7fc94b2f7f6f8ff717", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_deleteauth": "02e03be649e1672bcb592a3aaf55f58233781e06c0d589d8ecf7b5422d9c50cd", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_linkauth": "4edb802910581e4ae271397159c3eda1e5615037e0215dfcd804d0106e0b136c", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_newaccount": "8eef0d0f6998f0c6b798851815135487dfff84dadefb02eff9092a22ce97549d", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_refund": "055d9c8af78193dc34331fa9fbd37473e822fb16248adda2f1b41ec1933517c6", "T2T1_cs_eos-test_signtx.py::test_eos_signtx_sellram": "c7839ca98b06538c3a3d2045a76a9ecb7f17e5390512acbb31d009b7e966ca6d", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_setcontract": "fb458ece2af421d90391a8fd23df853c33c7ee11a1bab25a2a0572077be234ab", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "3fa797cb17311f6fd45942a3004e43fe350810b82dd4f55e1b48c0d1d9ec5f3c", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "3fa797cb17311f6fd45942a3004e43fe350810b82dd4f55e1b48c0d1d9ec5f3c", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_undelegate": "d10cf0b6ec76d213c75f228a936b5f526092c48e2bded855afee3eff0db59e9e", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_unknown": "cf9120b3d09bf4a7d2e747ea907dd7cdde948e30ea294fd4471edd3033bbb2c1", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_unlinkauth": "4e5b1150d8cd3412125bea9731dd19bc92c77dfbd7f8a132131067d4a31ef0b0", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_updateauth": "13e85a353ce6d57bd84f1d0c0964186b3e6230430838b1d319f677cb84baba46", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_vote": "e2aec52a3e9dc231330f253bb345ac611dbff174b91fd6a372d9dc1ab69acde2", -"T2T1_cs_eos-test_signtx.py::test_eos_signtx_vote_proxy": "22f66d20205fbbf5f095392a52e614771b494fa9e6cf293adb08a10b3bc5ea4a", -"T2T1_cs_ethereum-test_definitions.py::test_builtin": "9afd8705125c4bd38c0aa90de24bf4e818b700d02e1bda2d20ed6070e2d01274", -"T2T1_cs_ethereum-test_definitions.py::test_builtin_token": "85d11960a0bc042e1a0df40d13b59b4037d9caf6771ddb266af3cf34675ae175", -"T2T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "8f9400e6c9b1d02bbc4a3bf879cd96a383bcd930bd24751bca58f181945b9874", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_setcontract": "e47252d1ed06977c4ba90574f5f58d741ddfa67c7e7fff94ba19efac6671c7ee", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "7a84e6b144f30b90f6a8699db0aa3a4de0eecc80ba0ff040e8b27c98ae9a963c", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "7a84e6b144f30b90f6a8699db0aa3a4de0eecc80ba0ff040e8b27c98ae9a963c", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_undelegate": "17b9e11c92f1b1c6a5f74f7ed7e6f05249446bcfaed0371eb33cf1dd3b08ab0a", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_unknown": "7dbf235f0f7c7f59314a0ab5efeff012cde2f8043f1e8f416b65640d2d511ef5", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_unlinkauth": "6f3f2ce2776e1eb13f73b56f860f9146ae52553e9657140ae1f1703ecf56dc4a", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_updateauth": "1f13c021444ca1ee3627644381365b922500de0f018cefb5141275aacc4c7eb2", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_vote": "b72eb63f1ea16b347c6fb8ede3c82dee97542112e5eaf1c998a1b0aeecc9327f", +"T2T1_cs_eos-test_signtx.py::test_eos_signtx_vote_proxy": "8967870913f8dd8531bf55652d442b4a3803cd2ca383d8c70a5250d064b0da5f", +"T2T1_cs_ethereum-test_definitions.py::test_builtin": "de296955cc1d49eb34a7e5ffe691756d92304dc1ae4431ebc4d7170f5364d095", +"T2T1_cs_ethereum-test_definitions.py::test_builtin_token": "f63b95811be20d48b959ef17941e20701241bf13893ad8c019f9714d17982267", +"T2T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "f87efaac3f790430623bfa59f353f0cbbcc3f5932ad82ec9bda5ea1fff4d89ea", "T2T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "48982064ec440a5a9a779e5582bbcb9df076a2d18047a9a17a9675facb224ae2", -"T2T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "ea148d00cb96609a936f25b9541d240160d4efe0aa93f6e40b61431699f68b3e", -"T2T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "0e43a66135868743df9cdabec6caf925b75c704b6ab5d09fb21cc9f062fe232f", -"T2T1_cs_ethereum-test_definitions.py::test_external_token": "0d39f4194196b71694958df582b6a85825240e0b3958f50a4704409c3d23f237", +"T2T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "836602cf4e53ca59d5e477ce2559a6be0e4f1582fe4ac6e466a3ca0161f91bed", +"T2T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "97801fa7e2c89167da85b1c8cbb57b4382f21b6d5bfb7e8ca06e3a84c126687c", +"T2T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "818531d7bcb528f4e3083eca8f548ba9c476b55575d0e7682b78065ab874c8bb", +"T2T1_cs_ethereum-test_definitions.py::test_external_token": "4915e5191799961fc7e6da007efb467662159cc89137fd549c0ba80d2ffa9e4e", "T2T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "d572102c2bdcb117d7a5e8627c853ea1ebfba804782407f436731235b538f841", +"T2T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "2c5a739f101e13e827c491cd1fa75b35631deade959829fb17f5524626bc9475", "T2T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a2de39e033e27c29a6146a19888f6a5052e9c41bb064f06070438b0f13a2b7aa", "T2T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3e8b682d7c6cdd18122a92a7a0257e022af33a508a65c3cb797850b2debc966e", +"T2T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "a2455c08b36a834500d17a125c22e68aba532efb7ac2a8228b85b4993552843d", "T2T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "fd09a0dc102e6896b2635e7b75609ea2da38ed328bebec256e408e3f2ead7503", "T2T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_ethereum-test_definitions.py::test_slip44_external": "f56de516175621207bd9f7d2045fed18382663797c533a9191bf891209a57331", +"T2T1_cs_ethereum-test_definitions.py::test_slip44_external": "93ebc2127feb8ccdc205f0242ee56909e1c929548e9541dac781022a2e84106d", "T2T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -8969,17 +8990,17 @@ "T2T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", "T2T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", "T2T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "cb13b38c67612733160ec05d11582b0f4d752565e0cf765389a22bf444b683f0", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "52ebc63690cf439b924249757eae62088ce60f5cafc4eb7b0c0b0cf2858bd18c", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "70e04eefa918066303796fd97fc411f257bd83ea27b7c033de081ba7602c1e9a", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "2bbc38bdf104be213856bfe6e1ff184769b357e818359a76d8d30cf0468f3117", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "8f989b56f02c5c9da399dc877a163115b0ee73e488107194e2ffa714cca29260", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "cfa226e69ddd8183ae415eca37f900a1e7b9263d6d72d7e2f215d7efaaf03ce9", -"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "ce1f4967c15bc2888a36c8823e245fc4d237de2bd342c09e5e3abd157a7b09d6", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e5c6aa09caee4bb1f2c4461795f7370dacaa5e083750ce0285b4c0e85a886133", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "8fcf8829ce05bdf65c9bb80eeb6de569ff004716623cde96ef1cec7a7caccefc", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "804739db4d358558ef7f8284ed5e60c2e0c6703226004628a83b2208b60d295b", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "9ed5f1a2917549875959971f08e364f48b7a6798fe0e5f2e29a2c8e33a37e8ae", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "f4a5cd7412014690be2d184911a9e998dfcc936c402fb9824ed9d79e8eaa2f67", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "17af0f7dabed34cb433b65bb5c470f3d62124505393664e2fac200f559fcb9d4", +"T2T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "64d403eafa1c50e8ae049fd9d0512020465571d290234502e9c49606dd7c040c", "T2T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "ff22f4bee5aab1875cf7ee5a8c3bbfa1d5ffe70564d9feca9bb39bf4a6f5e202", "T2T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b9e0da1af2d0f6559f4c53b4545224c7d087dfe50916946e994d0d95095ef995", "T2T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "fda7dd15172ac39b27a1bf729e253fa4414f1416ac0a17af6fd332c944b9b7c8", @@ -8998,72 +9019,72 @@ "T2T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "5079cc771502a74b64df3ab84326aa68dce71be8d4371dd911ab680d18f29672", "T2T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "badb1055045be086afc7bdb9d0865de935e10b2d822d9cf4c6f6f2fa287e4a89", "T2T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "440fdfc1adcec245b4cb274eb5d577c61591509bf7ba3ab866432185b0a4d818", -"T2T1_cs_ethereum-test_signtx.py::test_data_streaming": "4f5d39c67c7ddf3804367ffe4779f9e516bf80606d83ce07af740de4bcf59945", +"T2T1_cs_ethereum-test_signtx.py::test_data_streaming": "f8b9cac3284d3f99eaf161d6297f2183f4a230ea0dee8d288a79d1ffcac5fc0d", "T2T1_cs_ethereum-test_signtx.py::test_sanity_checks": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "8ca8c80d46824a534cbd62df127cf4ba8c197a8e2aa9d51a9af5471ef71341c4", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "4fe5071c6bf79414213eb238d081712a1b0f52f4a8098ef8fbfec9e79615de42", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "e3f1986cfb86ce41ba68118cb50ec5f06dfb054a0232c7fc1f18954e0a2b1ba3", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "4fe5071c6bf79414213eb238d081712a1b0f52f4a8098ef8fbfec9e79615de42", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f1f6e6c11b920bf407eab9fa0fa864dbc9e0a130ec2c9056fb91fa054441006e", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f1f6e6c11b920bf407eab9fa0fa864dbc9e0a130ec2c9056fb91fa054441006e", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "22f54111c23b147f6e7d4eebe4eb362039994b0f5aa67bdf87a1dd02ef3cb47e", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "7416d23e513984c63ce60ab18d6634606a2b4518770bd22f31f81b052f140826", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4353575316ae02d31400f1e7320f191f572de40cfb259834e6dfa2009e462d9f", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "7dc3cb0121c8c8a0a8510b1307b7fc603d94e9293fb8476bf6545d85630ccee5", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "18e4b5e7a9e23c9af3d61aeaa749793efa74ae0c6003820ee7db036aa530a259", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "d5559729fe4a54a4cf1a8e894d2a2f58f316e247a374e41810c0eeec0ba7f408", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "8904e1e3ef34a88da935d2db1fba0f5ccbcb2219b613c835bf6fee59d9113595", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "773070557c2ff0936d0954c07ec3b8e4f9e1fe2824abbcbd80d3097ea418f10c", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "febe59780b274b429be4dea92f4bfae259754663cd27bf58b55a687eb1ff20e0", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "773070557c2ff0936d0954c07ec3b8e4f9e1fe2824abbcbd80d3097ea418f10c", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "dd7bf0b59aa934cc8910d89b4bd1e0cd359a681ca3fcd41105687e8baede4434", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "dd7bf0b59aa934cc8910d89b4bd1e0cd359a681ca3fcd41105687e8baede4434", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "736edcb709e250256008b391efafa1ea8f432cef4c9f9849ea3eca6d2b22151e", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "39cdd18a9156ec8021ef50bd7b8a62a59d5eecb0b33e8946143a7e1766370560", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "258839bdfedb656eb8e922e1ad27b2a8492b0a06254e7435dccdb18cb615f14b", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "7dc3cb0121c8c8a0a8510b1307b7fc603d94e9293fb8476bf6545d85630ccee5", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0f5b5cb59da2c2c422104deb088ff728878d807de511665c4724bfb9044e91af", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "19ffad22e90cad3b9c588250a9b1a5f27efa91e2127e53b5ee8c61fcae400d61", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8507e4b9198efe39652785a5e54e480f94a25b8294f9ca9a8fe785ec3a2d4a01", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "712a5685cf10486e36d7f6b8a60fd213c0061f1f6c1793b52b654c5655ad1952", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "a7f515174b971d418a39c54c2719a2d11fba9ef86fee1ed76a6ec137c049d8ba", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "22f54111c23b147f6e7d4eebe4eb362039994b0f5aa67bdf87a1dd02ef3cb47e", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "c9f77a3372ab8ec312beac5a6db800783d193294d85e418b8fd1b7adb38db730", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4353575316ae02d31400f1e7320f191f572de40cfb259834e6dfa2009e462d9f", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "eb58c7887cdb2b03db77c4b4a52da147085ffbe4553ebf67486b26f4efe14e9a", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "158afea5c17a5176233000f2148e64c08ed5ec2237abde033498556bc7603672", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "736edcb709e250256008b391efafa1ea8f432cef4c9f9849ea3eca6d2b22151e", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "667c3a86a36ee3a8a6aba189a97c0df59721bb999e4922f215d74ce175375399", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "258839bdfedb656eb8e922e1ad27b2a8492b0a06254e7435dccdb18cb615f14b", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c827abdcc825f9c5dd17687e0f9141e24b5cabd8881c4dc4413479c7a69b7886", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f1a7187ccf3fa796169fa859267c93e87d3ec794ce1e11a218ce487b82fb570d", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "ba825d65a19482d295e43d2f7989a0bfa2a386290fe46a58ddc6935f2ddaef6c", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ba825d65a19482d295e43d2f7989a0bfa2a386290fe46a58ddc6935f2ddaef6c", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "ab73c0b49eec518041a1f1cfa9f622f0dc50129b3db6d86fe9045b3d8f3b9f25", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8c6065616fe0c67e4821bf6003252c7427843160b26b6e5ad0924759eb69be74", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "bfe1ea061851a72fdbad69c05ce85f6b33dd4fa21261bac4370dff952e697c59", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0d23a2f7562795f98415879966258c8678c2b8242b5b54fcc1c736daac93a4e3", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5fa57666f86e74e32e642500fbb7bdd376dc807005a23fb3f07fcfc56f195387", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0d23a2f7562795f98415879966258c8678c2b8242b5b54fcc1c736daac93a4e3", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0a8a1aff3aae84f5dbf9c102b4b0b979e0be025f8e9654947f76ddcffcb8b684", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0a8a1aff3aae84f5dbf9c102b4b0b979e0be025f8e9654947f76ddcffcb8b684", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "554e6136b09ac2120fb94a8bcf3c0fe6d0fd15711c54424d157463aa4a27a6cd", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "79e95dade990b6c11938deb13a7319e73c5a6b33edf7ba94b74d9419a1b6a95c", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "c526d24725403fd4f1eb6acaf5c0525643d2583c7ed92529a42f8a1818787253", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c218217c25858e4df592ba9ed329a4f699bfa930e10fa8cdb8fc1b35dbe5d177", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "726f69fb7d0b6cfbeda503963e7d80d81175053baafdf0c56fdc5e8431a9fde0", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b10e9f40bc0eddd6d2fd3d52c9bbc3d1de89c3c28e056bcc8330fa53450a0c5c", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "b2a9438c7b96315f20cba80613b9f48678cdc6bc40bad0fc343a352c4ac8f62b", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "f11763bbdb0984feba9cda8fd7e27f3c29f422acfb8f3c33a1d3c461316ce6dc", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1969414558ea0725da5dd16bf5ce42e6dd41657259660827ba5cd43c676e58be", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "f11763bbdb0984feba9cda8fd7e27f3c29f422acfb8f3c33a1d3c461316ce6dc", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "045ab58e5228e001327f01a8b11b11e5881ab18afed272c8c6ffc507ffb4ba6d", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "045ab58e5228e001327f01a8b11b11e5881ab18afed272c8c6ffc507ffb4ba6d", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "b15f9caeb5627b7de07e4a3ba80dd662315398aa0577b4aa850bf04870d96ae6", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "2f1c82037bceaf4a3a5587f63791cbb9dde2c7f3cd5d0c4e1815bb6a7968c479", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4c959965ccf57f6cce04e126c41e00900fa7eadf2e6bc7cd0c597fac93cc0206", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c218217c25858e4df592ba9ed329a4f699bfa930e10fa8cdb8fc1b35dbe5d177", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0439750afe32d0faf12613e2a80aec902ddf89d298bad15fe398654dd873fdc9", +"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "def7e507572e22ac7f8f48e6d591d36e707ec5abf68e74263ee67d0bf0624fff", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "4ef6c1c80cf0c934939dcca4917446fc1fc30fc1f60962e77b3bbad4df300247", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1b738bf75903fd5b1c582aa29b1a2eb5d7cae31aa6e7dcfe5db94c672ac21801", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2c5e91b90ee372c8d8006754d1decf1803bd515000a86bc0571153a5b7199082", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "554e6136b09ac2120fb94a8bcf3c0fe6d0fd15711c54424d157463aa4a27a6cd", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2813d1317ec2a585053f14aca6c32d8b9c429aa97feed6ecfd5de61b512eb395", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "c526d24725403fd4f1eb6acaf5c0525643d2583c7ed92529a42f8a1818787253", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "85371363093945284090a6fccea1bd7292b217b6d9f6bf4d4530f55e84266f7f", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "28c5d510ae42c52784e964975b32ca25897bf45a1b903d6371d046a949d9bdc3", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "b15f9caeb5627b7de07e4a3ba80dd662315398aa0577b4aa850bf04870d96ae6", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "25ee398fe06b6bca0cb0d2d500d01c23206fae8212516bdcbddde390c4476519", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4c959965ccf57f6cce04e126c41e00900fa7eadf2e6bc7cd0c597fac93cc0206", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "968751d33f312d15d9fccedfe50b3d3f05ca169c8f7995373544f75ad611447d", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "98cd21593bfbb635bfa897a6e7c5eb3c6ab80fba03a2cba3aeb4f3259e0caca5", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "31fe200afdae83c2d32938a8f2b0be051ea708ee6cadc198e08cfd41525f7cb0", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "31fe200afdae83c2d32938a8f2b0be051ea708ee6cadc198e08cfd41525f7cb0", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "882ddc60a090624d69cb94daf66cc5a04e82c83af3050d35d505229a75f8886f", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7781a854670bb38acbe5d00a99e7bde404f7a8f60d68a1b07ec057b1bd4fb2f9", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "897fdc8cc7c6358a0dcb4f566f3fa88c6e005dee6d372027bdd3ec2979df9a18", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "13c3d46eb48b6e9e989cb9a241987a3a1ca0189236596d2a3ef9e12502874011", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "40a49084a89c0fbf02ed380d5baf4b1c5a29b4c675a273a77c2c29a341368fe8", @@ -9111,9 +9132,9 @@ "T2T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "df81c39e6fd20ca56aafd9e6c4175472190cb74a7b2551e196b3e6e1daee77ca", "T2T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d025205f6855b9cd70dd9dc31ab924d009e799e05c5b94135fc14dc01f76853a", "T2T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "380ac240bd5640370348cd3f11961fc8b33d432d6734663aa113fcefc4ce9eff", -"T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a1a003de7e1cbaea5a8c3cf15584af1ad5a7216df42c6e34c6cf6cbb12315b2d", +"T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "9735e3b03d62177215eaf671d9dff4e9b1bae1fa5c3bcefea290dd723320287e", "T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a9428e7e4a1aa0f9ed52b5941f79a0759f4b423bcea5898c5f1d16c123a46542", +"T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "cd4b56ccfc663dd499e4ac02fff1000e05f58347f1bfdfc45612832e5c7d780c", "T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "212c91ae3491cd920d1a7b86d47243812ca5456239406782388afea2b556331d", "T2T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", @@ -9146,23 +9167,23 @@ "T2T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "536fb01c22c7be1bc634b717159db1df0dd91eeb45462aa01cda130d79aaed32", "T2T1_cs_nem-test_getaddress.py::test_nem_getaddress[False]": "58120d74abd6cb3aefd2ad05b82eb087358a7d248b83c7a7d17631045e8413aa", "T2T1_cs_nem-test_getaddress.py::test_nem_getaddress[True]": "49a19b2f753605eff0130be6792f514dda0d312f73ba5b7c40f2b87dff0ba6c7", -"T2T1_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "da801fc04818806be766c5187be65185c9556bf54ecc2a5bc47b31846174bbdc", -"T2T1_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "9856bbb02ce76cd3f5398d9d0d709dbf3faca28387cf47e56b1bf802103cefc1", -"T2T1_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "8e3510b3174e8eb0b6d85563dd640107b0d2bb9d6db247699cef3496db355e76", -"T2T1_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "3e524ba6c61364c21ed480d189f88d73160bb5215e2a9d7261484299e01ef4be", -"T2T1_cs_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "371b2f17aad52d37bbe0e7a6954de81ab837aba4d70462d8408298b997412d02", -"T2T1_cs_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "6667cbbee6345e371ed46bfd77b01f88a55e48b0ac0135b140a67e2530ddfc53", -"T2T1_cs_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "fd1ec8b229ce78091734013609eea7262a9e3e1ac3dc1b4bee86c830244ed4a8", -"T2T1_cs_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "0d3c1dd36f5efbb4ea76ad6cfbade47e34cd0dbbf0fafa794f05b4a07e0ddd6b", -"T2T1_cs_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "2aac17c51c84e7406eb6af814c70e8ef9cbc6fe4e5a0394b785cf19ebc644b21", -"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "2e0cca459bc0ce5442a5b829e21756ee0f797fb5239831272eee6adcbe614232", -"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "6cc2eb4ce627d5fafead7046619dc9ff309e720b68e138bcc8edd85cdfa70c2c", -"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "ea5b2cc37aacec63a574bdbd0aa50c5f4cdd3e11aa0d2c795ab8d299f39d74b1", -"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "873d10baece06272928d5ede2823cf280be9b6593f593c3c444c88034ec5b524", -"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "5dcad012a0f6ad5cfb6a78874c10b455e8639de2df5c41a5b12ef630aa2b7879", -"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "024b924cdd6edcfed9dab1f48d9d34594ad5b223e494b1d0e245c5ebb8699667", -"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "ec3d779ce11170f9dfce973f362e5c163ad7dbcb2df159cb18808c168e77488c", -"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "d992e14a5dce8b78109e24373ac10e63058d3a3d3712aebc9dc719f53ab2e8c8", +"T2T1_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "ec38de89b53ea3f6eb203d3ded1be3ba7a8d1f8787ec92d32d3411982bfab1e2", +"T2T1_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "91c8fbf1a9ad519aadbc5356c383b3c104c9049ada85eec4c747d5bff21a1433", +"T2T1_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "0ebb0be47d8eb090c006cacca627f56503a9e8d81a0d3f8a052a01ba9ccf0fbf", +"T2T1_cs_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "d7d249d84c7ce4919e5be3a70c64999aae5f774aacd69aaae5f7b04c0a180902", +"T2T1_cs_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "6fb8555a8f27872dc37129cea17be06b8ec292338fcd901fd666e13ae37be51d", +"T2T1_cs_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "2725d95fb774e400f4f4671ea07a1547bdeccd90a3e04f7ea19b1e966ac6b5c8", +"T2T1_cs_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "ffe25857b2a9f410016e7cb7c1bc35e5acd9ca6104cb2f259027773cb19385ff", +"T2T1_cs_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "36c412f974be6c90b7cac8c63bc7e26a20bf606bb9f2964880c89307b0c62261", +"T2T1_cs_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "8b285f50d571f619e1bccfb41a327ca667d38e47f2d21b378ddcb65818c297f2", +"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "8e32de710c1a553accd33f817bcba123da3b0a4bf0c5ea8c246edaf0ae1f5fae", +"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "0855187737094b6beb3d853c40981711ffa0946b8d11cece8739d7aac07db3e0", +"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "f9c537ddbd5ab78366b1ef2daf6ca894bc47818d2ad26cf16a816e219477c6fe", +"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "245858956cc664f306ff7d22a3068003a2eba229fbaa14cb12ccc73931177a40", +"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "517d96b568fd150afa69682ea52de783b9b411741d347c94989dc5b0b594c3ec", +"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "fa35df2bf818fb686c5ae1cbdb25074da64a716d30d022a054566dbcb306e918", +"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "87d5c9844c3e363600aa79cda58faceebb596dc3c26a30eae6327a5fd1a1d083", +"T2T1_cs_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "b7879e685e02f92a45f63d016fba239a3f6961df80c34357d52d9086eb10e0b0", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -9199,9 +9220,9 @@ "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ddf1bcc7cee67e2bc38dda78543c9d04d6c6429a6540423042117cfe6e707fab", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2db3e3119116de9b001a288f040d92e4b90ae4c6178ec94f7b44d23f247e2a73", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fce31a993c026c2ab3a2b381c712b6069cda27bd66b084c35005bdca81afb048", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "41f6602c5547c20e6ac37ec89675a712ccce5d4a4e5044bff683f60c5739c6cd", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "3c38e65316da91ba5df0af1e3574291ff641365d3a525db86a223600fb2b2c37", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "f038ee930da68b30e1aadfc9733207e52eaecd3cc79f284c7a1253e8c40d8ce3", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "29956f95d176dba8da7eebf385ef404749d99c8a92e030e29a197846880da228", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "77f96bdb6a5b243bf6617c025a66c34a0be03cb6ac625958b09538746b5d7c16", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "7748cb842ff076d55fc84bc26fd2d5ed388e79ec979c35df85a1973e99e07f0b", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "41a6afce45815e1e9605cd275f6a531a17e8e527e1ff85e0a8282f2e2bf1a30b", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "6ad5fb50fc18b813c6d3d0f7e9352ce5323355a10ae9e8803d0e4b89dd578566", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "bfa354de5d406f1e400b6e06a383fe837f790cacd5b13b15a6fda9cd013a30ea", @@ -9225,20 +9246,20 @@ "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "23e90bde0e5eae1b7df9b3ae3e9d84f1bbba8af351f15c4031291d6f6059e5b8", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a34846f672266c68a8ce747a2e1c37c661437833548488e10c2064360e8bf363", -"T2T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "9b3a4d1b5add7f308101796ff0c7fd8ce76e1b3acf54990a270a1c2228c732b7", +"T2T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "d0fd6f4824228a40044e3f7e3ec29acd4e0792e6ade5f646cb1be61b27e01fe0", +"T2T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d2a49f3914f71aff54a761a076c4d714ba042fa2809b192c37f83247eb70c023", "T2T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "75fa897dfcb35653ce38f1a9cc36d44450a0c5f97864d0096198fd8a5ed66e8d", "T2T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c877dca4555a977d881c38e3e4348c93c9ba30c654fc63d5d3db1a1269a77bac", "T2T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "cec4f416b087df067b99e4d8355da04b1a694ab51bc693d1b28be44046d76d85", -"T2T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "3a315b32fe6af185fc51b247dbd36194ba1005d91168cd9163d32ac412fa49fd", -"T2T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "feb44a6596acf57afed9d20517e383435febb6e476a5c0b90c9231188e1e68cb", -"T2T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "98b97bf14d9677b1751677e3813facb7cbc050445844adb55609958d0d89f2c8", +"T2T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "2fc007b808d16adfcec5daa8925a3007cd22c3b6bc51c3d7bc9d25924959ecde", +"T2T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "82846d8e63804462f6e56bbe75ae550f46092206996e02d940783f9566f8eadf", +"T2T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3430e97706eacfe0a9cb99dd74d64f8a027f71d55b077d0e745e421a4332a7da", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "fd2e44bdea6384ab4b94b5e0557c08e7ad3e7e69fc1e0bdd4e067731ad0e07bf", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "32dff1643694e5a1fe8b29f4aadd9149f4104a59e358f5842a82616179c45962", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "bea4ebfde9aa1878a47013eeb914cbc9b13ec03e569ddca5dbff4eadb8d958f9", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "72c32c85a8db6e00abd4e647048782669390136fb49e4df889ce98372f31e2dd", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "5e650a58311d032de9aa4b883f4cf62619e6c8662b3f6d053fb88319ebef4377", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "e564d7d57b0606385445ee97a53832c5a77de54719cd1ae157753f26dfdbbf33", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "4ced87f327f8758a9e8b5e85a1cdab9494ce4d82b52d1a7f8200f8dce483e49a", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "dba3467455573011a0261da2656447a47e6b7e6ae5ffec5be2f13c48fc5d350f", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0fe3792a4c30cb81b842f891a0815b636760b28bff3634c3df7d0145391a5c36", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "53ed953d030a21ea1cb0c6e79d137cc24281b4d612ad6b7364023496029addcc", @@ -9247,25 +9268,25 @@ "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "ec7de41627f7ad667d72ca818f2d6834e7368e088d8c1ae50120fbb8e8cfb2dd", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "518e2e69c1ab095a7a2915dfa484a048e17e715f167ffa1a1e01a56932ad1ba4", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "477e435a95a07d539ddb25440c07fdafa3d2ade23a3b74196489ae92df64b2ac", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "f9c7214383ffbf56e2bf889e6116dec10ca25ea1e82fdeb8533220333518f5a4", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "36a999e0a9298e7738cc425e67698b5b362b7b8cf3af5a7063ad3092cf081dc7", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "e9848c532b610f0eea6a37e46a2a25392e44a69af9e895dc64288430ffeb9dc4", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c5bd059bcb1508240c47cb70be30d74a17f15e871b28876ba5c2c8b78e0feed7", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b7d0cd3934588201cb5b9531d27df8407e6e3fbe30fcce6f697ee5b9f7e068a2", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2606d159dc70ddd12787bec91b10238d77f36a8acd139aa2d3acd42c1e483843", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "65ef6ff4a7218d5c0b95075636ccb2a535734a764a574f59dbdbb63a45167655", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "24ed199cf1cd2379f8b4588d4448c41462a3e768ed0e25f6d8d3650eb798f3cd", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6521caa997ee3c15aa6fac482450fca18cc6b7793159df567489bdfa93aa3356", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09d1dfaf38d500cef7b298ab61ad2d128c530bcc6fe75f405821d0a2d45130aa", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "9b2dd7c06acec4d060adc07206acdb8ae616926b91d6b3b4393e5429c8ce763e", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "692d5fc2ecbe326d6b229f77c7d449cba76ac77eb80e9df3ed85f9c4326d48b6", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "53f820251de3f990f8419a8c6900776e6b02300dab1fe6cfc2fc2a80c6598ff7", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "a6c3d5e716e078bfed3e904483118d13b821ef76eacda49627cd1f7244980a1d", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e10339532cb4a6ada3dc0eff756467aaa4787ac44daba1f5019ac3b7ffa25d36", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "687c8cdf8cdb327f46eb606f4a1187fac67217f1fc9ac540c975a3d56888fa12", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "c9bf1c94e8141b620f16486760901e46eeacf990faffb77b290a611e8f052f04", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "87cc3fc2abaca6f3ce3c1227330a3a2b9fb4a3263f1cf724ffd63a196c10490e", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "851946d246793d72923aa3522cfe4a0c455d6c3ecd77aed38ec6c2fbf42ce29c", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "29d3ff94b84243ca133b3b6e07bdb8f05e1ed4e25b149a05b3a50b1e72676b6d", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "38b2c7d5937b5f98444080d1d40cb6ad4b984d3d8cb6f8e8c6b5f69d1977d9af", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4f39cded0fbe41c00fb4b6d45057f6c988bfd07d76abc83fb2fe5af399d7272c", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "2c8d328995f07197d300c551e539c8c96420aa98c99e4a229d7043fbb4d493f3", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "0d2cd29a60c45333e4440d859e4e47e32310851f86833e36e5034149bf2cc846", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "e0ea707742a02e41a5ddfc83aa66b23880b2acc59e05fc469b8f6fc683be6cad", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5d4e33d185e8a4bba81c9e60fb270a326aa476ab780c0e866579e2b7c602e6c0", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "06f773b9429029725aa6f62b826e063d6bf24bc4dda5fa2ff0f8e25fcfe51b30", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "afff259ff7e1f0c82106515a313b53575e612a1802a298c8b111fe752ba00b3a", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "40515ea662cb38454da94fd60fcdea8d9df2470c0b0eb8e4d1789b168191e61f", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "acd5a8b109b63e54e620dcd0b7f3b54bc29a3d3c170ab7ddb89e79d1737ddba0", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "17e8ff760ef20eb12abd6ac6517b0f799c1d27033a399514d42762c76cf49f7d", @@ -9276,29 +9297,29 @@ "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "97b4f0b3cc4795d4239cbf6686f598edb92e9cdb6583c339e722d090a5008083", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e58b849808153b44bebe111b96c8c419dc4608a24e2845f84242561b0dcb9d47", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "139ac1bc4afe643028de15d71087930f363c3850c74595a33f10cb97c7711b4e", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a00b0d68da071ba15f97708ae732f35fe40dc0f5c55671fe2047f95d163788b9", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9d6303f26588d1c2e274ff268257c447e86a75ddc7cf46da3a2c0a312ee8355f", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "452a1f5e361808295075750a71ef49105715227600fab3f5443b5aa0ff70d467", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cc814a3e4e8c00e23eec8f073dbd865771ef83b490ee4596b280178fe23a2aaa", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "d5064fd1d7ec455a32cf1b2eac39dfc38dc07b231c377c424b7feaddb476c95b", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "8f48ce150a385a0787642ccad4553bccbad05b107f9b01f8cd85f101e0952742", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "78a62bd5c0343c49e2b8e90e4051e1076732350b5dcf6113c6edf53bb0fe3062", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7fa83be8c046f8bc9c5b8114d1d87fd91feb322a1cbb9e3fc4689d832986cdb9", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "67339c72ebb598461b9ac367a6ce8d678ac05bf22f74bedc2444b024a831272a", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "5a5651311f9a8286dfa459a29587c28ade2b0af44d091cd593ef3d2eec2ed3a9", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "516f0704d1a53e9d7281007a34d02051de91fd89b35d2863c004b9ad25b5cdfb", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3b39c85e1748cf129ae9f4e4184c265b235e5b3cb28dfdb8567fd6abcf64756d", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "c09e8dbad8fa4e1b61c1a8e1ea569518d1873a8979d561d7f65427e71598d22a", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ecf696fab4faea408264bb98ec33fdad726906212b5743bbc42b3330edfda63e", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "647c04b5fa500a7ef372cfedbd5185dc477da59ea734af5afdc45fffbd0addb2", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3c268891e70eeb3e3e3ebda79479bd53c985715ed803f5cf02b9f1224e2b943c", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "204a09cee74f0a2f3f6405bc2a5c6228b443459ad3cc866c5c53344a6349c6c2", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "130707bf16ac9eff5373b1de485eece01b4b069dc0f677ea4b3f609d1c4665e5", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "173062b458c03a8b1b510d1e200f25aa3e826d074102a7c7177f544c68f21e08", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "787ac7fa8becb6081dc08258482988059e3f6c24aa248460c730c8df2c1c4f1c", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "9dcdce348c63abf4dde7e69747d84986fa596069b19575167394fbd8de2346cf", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "5288a10bbd550f0bb9c49baeaefe51ac2e9028849a899eb64a56aff1a3b178b0", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "e10339532cb4a6ada3dc0eff756467aaa4787ac44daba1f5019ac3b7ffa25d36", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "6690fb1a9c4e8847d2a2866674d845055cc95856b7c7693bdaa1e92c693866cf", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "8eb37d3d2a653498619b721de8689da5a6f0ae6b30c222230c8e7dd52e39d4ff", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "87cc3fc2abaca6f3ce3c1227330a3a2b9fb4a3263f1cf724ffd63a196c10490e", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4428033963b71ab3377d7748cf48f08019c93f6261e38665b837c75ac0f11e23", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "8bb5017226b903d8befabdfc0664dc104c01524c971527ad8f456e74d2c04520", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "89508fea4c7df3d6fbb0e4685cfa18921127566eb63d1955f41e91e8e3dc69a4", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a0a71a445bbcfe996753ec382a204621c154594347e6fd382c55db4f0e706bd3", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d7fc5c5683d33b267227addeeae0efbe749bf52099a028399f9a75fe888e3d9d", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "f5c1153630716ed072919b1098d89ccaa2bd0a6b887bd772e967b8aedb50aa26", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "36b472a776e2e3851eba8e63cf48baa213417eefaf01200d7e7a882a3957590f", -"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "2baadc38d6b200b8eaaf3083bca22e7c887d62dbc09ef897849727298fd112e2", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fb2f9d4c6c3478fe5324801be0805c520f24f312abfadb8be6d97c31bdb7091c", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "2045dc0e56bd0b81f0fdaa7dd1121211d17ee763833c9251f5aecc4719127779", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "ba83a7059000599aabbd37bb32378f6219d2cff830d2aedafbf482d26be23a80", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "31fc222dd6132547805ad3016a4ac6ea2d3e145801420f05a3c04faf121a609e", @@ -9322,37 +9343,37 @@ "T2T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "9d111c231773407fa452c116b38698c2c9bf7945e117df2fc7f88f8f85ead953", "T2T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3187917eb6f8a463b4bbf3d6bcf52d9db341c334c1bb7d2c00e9d28efa325cef", "T2T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "5b2432d9a05314fd0223b1f0661684407192bd07e3c1fbca7c54e1570f52fc2f", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "88090b08e0a2426c37382f558e80eaaf7fecdf8360bab8968e1be7303e69bb67", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6a8516a39f2b9cd78c1fc7acab872a947d032b006c8ee32164c1124103ca01f4", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "f772066ae9058b0f2801fec75fa066b7e62e053dbb40fa7cf373f1b557c14249", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "45f9e46452adcbb56d32b942653451a230501c5d8dc9fb47eb74ef508c97bf7f", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "83482bbc22e8c52d142411bd5bc5a26a027cb14fe72e3c57ef5b363820a4658a", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4d562db11a15824da8cf29ecef1bdbfebfbda119bf4c37bee34593074180ba98", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "1bc7d30b44dd7b5f1d81c4c28fc3ae58105d666bc01979a3fdf5037d41211b52", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0f66a672c50bca056d1a1830a84e0e33b51d056ac5eb608ea34010a7a1e08504", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "bd1374ee1d136081e7d432e99159ab537f53e6e97e3feaee2d283914a672a835", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1bb26b7be21e0e0dd733bc7b2a7301ff8cd8e842d97a03bbf9b153d796da03d0", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "1de9f079fd8a1cc28816c45abb73d69121f932cddf1b468042297216bf56d136", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "24b176aabadfe6842fd83a631ba1bbd0c676d29109a51072c83211f0881c4e6a", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "3055c8e6011cd64e29755f5b2b18d0250fa5f14e1ff263ae12e6e830794bf430", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "eafd704c44bad034143e6d7c6123420f435c09ac332c35a36c49485190c148e4", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "9e48eb0e188ba2de44d637039f68a446dc5b730dbf7b63251dded42fc98f566b", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "2682c5c66c0097b330f9f14a818dd7810eb9b3728f8b06f0beaf60d82adaa51f", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "eefeee9a792a4d78f14b5a64540a68fb3f68bfa4bf9c85a8d38c500af92a94b0", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "97e219fb0f5417afeedc744caa5a30dabd5a7825a9e545ceff1c9d165c28699c", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ef9cfd6850b4ebc2c1164175e1aaacc22bf32b4728d6de3d4a948239a398f636", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "54d1e895690f3139f5068cb8e5912eb47063be9f7b69c17bce39bec9bf451458", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d9f8b88587d1d0726568e860b6d52cb21e3def56b990a5413980c50b1ab5d6c1", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "9476c42bfe58b016ee703964165f0b05c5d58c52ec9f48cf1b9a5ed731e9adc1", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "3124987aa4012a14daf7f33e809daa34311e3b0e5b795d4d174a308a077b7d64", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "b3cd453f7fe6d01ffe55b383a08a80f53729da601318287cf3e903bc799666ce", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "e0ef545906f8f8bf48ddf8d6d6fa068490e52a638051ef1e59fae786bb8de80f", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ee5cff27aba12583b6da615813bfb3323baffc0daa3fc3c6c0bfb86fea15f412", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "287ba699bf5a26e989915c5c02668aba28a43dd9bf7a4faddbd89407b24c30ab", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "2dca165c324ba6890a980b7448fd814aa8bc1a491a739943f6c11e0237be0952", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9a828a7c8a7cff8b523cdb0ee8e7683196fce85d29ecbba79790e7ea281af87b", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "eefeee9a792a4d78f14b5a64540a68fb3f68bfa4bf9c85a8d38c500af92a94b0", -"T2T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "fb4eca10eef0888387dd42d4804dff9db31eddc06dabf1df2a68bc22068efbbe", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "669ae415ba5cfcd9011370ba416d9cedf0b270aa784e6ac111acdb2a84d693ac", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a6cbf2d1035a4719680c13ec8840495ddc46e89437a10333b62d99e6807c5f45", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "40b7a3025e62d2e8a4b5449f0b0a13504f5e1b843cb92a48e4adf0754752de4a", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a9d959b07a6359f8ba8f3ad412ba1586d087a5f5569039a2da6cc618619ceb52", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "1848e758bcfc9b575fabdb0303bb48837e6396371097d5d7e6ea8fcfcb26c36c", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "cf9a03a6f038294bd61ccdcd070dbdb4793a3c06d7ef3802180628a1c8f6df27", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "5ff89f607e298719af9d8bb6c7a8ee09ced0bf235c7d7641a8700c18beafb777", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "fa4014285217975c95c0f5d53dc28a963bc427697ce56dc31529ebb637806fda", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "9d861bf42c34a569a2b7d16f16c1795aca73fae88b1f1f82ebd2359d38791a49", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6378f7c14bb66cd5ab024a2a2797079af8e339f25aba80ddb3c3aee7c915e9cc", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "b77c87e04da56a384fd5957593d6d7d96738a52f762cdee82addccca18a7fb12", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "f91d80c0f7c1ac4853ec90a3f356d08496994bde3fb1d801563e99de546ae384", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "77622c1a1851933d37e33faf40e278d82086301db512620a877701dd77756cc3", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "900231f95d95f672dea32202b254355dab5d6076303f86de183f6970c9f2f105", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "945d0fdd26e9e0d1c7b9296c1020897f94e23fab0622ef45541b9c2916d6e083", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "549066ab1bf84afb533fa0d4c094aecbd33b0402b65fd5039deb342f74737d0c", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "959e555623ba8f2dc3cc066d713900df652638ea4cb08872c032fd02df805e34", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "706b689623b759917e6a4335a8e93e7ded951adf90c889a9743fabb48d6b23b8", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "423e2fef974fffe60ea0830be723298bc1e09aa9ea2e640b8a7a35a0a55bcd1e", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "37d97dcce1f405d827cac46687643caccdae36be13ee3622b6704401717d4e88", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "50dc4a5a2a8b0699ebcce89f17c893ea49b48797df220e1b141bdce7308677d7", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "a04af00a1a44515d1a2b7cc220fdcd5c57416232c84f632691b9dd4498aca49b", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "864d45c23b12fe4d4f66e0350506763636320a02775c1d9173468ada7978ce34", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "c80563ba120dcb8f62a0a6830e99210e341b0ca68d0f8d672a9d58019f2aaeea", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "22575a8cd66903ce2373fd8794882919eaca9bfe2e84bee1d2ab56cafe9079e2", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "3af2b9224f1390483e06c22b27b8ccb61737dc8699d8f5a5845c7dad86dd1f27", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8f20eb9a61ec136a5d053ad7cd5f12bf747df4faffb2202164140ca007c350bb", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "e95148732d86e99e5ca9a0f6be008b3f4b12775c5d23671ed5127d58170021ed", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", +"T2T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5706b5159f3131e87cd725f13bdd35dd057ad772c7a5313f5714266e8eb03098", "T2T1_cs_test_autolock.py::test_apply_auto_lock_delay": "9c8b46122210202ca2a03bfe73bbe18f6535cce7dfe6317e5788cb1bf500c9f3", "T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", "T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", @@ -9384,28 +9405,28 @@ "T2T1_cs_test_debuglink.py::test_softlock_instability": "5ace49e9f6465d2a6fe19c0ccccfa5604f103b7ceb02a20a917647f09c374802", "T2T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "bf3b0b0bfc905aa8b9cb991baffb7c523f4f185f0a6531081c2e09fee5964108", "T2T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_test_language.py::test_error_invalid_data_hash": "a115b6f40562970530bd4fdeabab584b19bd08001a7d5c22f2627ad39d1c6ff3", -"T2T1_cs_test_language.py::test_error_invalid_data_length": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T2T1_cs_test_language.py::test_error_invalid_header_magic": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T2T1_cs_test_language.py::test_error_invalid_signature": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T2T1_cs_test_language.py::test_error_too_long": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T2T1_cs_test_language.py::test_error_version_mismatch": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T2T1_cs_test_language.py::test_full_language_change[cs]": "9d3a56d7637e585431673f57662f51b0b5bd134d68ceed34ba2807175f9734a7", -"T2T1_cs_test_language.py::test_full_language_change[de]": "6d72b391d3e2ffefded5765bf580720b2ff6a178d4a26bfb1dca361680c84f22", -"T2T1_cs_test_language.py::test_full_language_change[en]": "f9cc189cb54aa4c338d45c46ef8bc115b873f9aae88f0a3265e09da556f95fef", -"T2T1_cs_test_language.py::test_full_language_change[es]": "643ecd8f4a8d0bf4aa797836c18f9df8b8606c17ddca595d140120e3019c2cb0", -"T2T1_cs_test_language.py::test_full_language_change[fr]": "f4b8b9660987d6dda059db920188291ce597b35954594988a44236377a9e5363", -"T2T1_cs_test_language.py::test_header_trailing_data": "b85421372491bb30c424ea034135083b7342efd0e977e4816e69443a005a7bd9", -"T2T1_cs_test_language.py::test_language_is_removed_after_wipe": "192b43841ea45c8b130ae9bdb8d15edb6d406e8a14f1e34201de7b7530755de1", -"T2T1_cs_test_language.py::test_reject_update": "f5f0f60c0eee142ca023fd2960bdd410e355833f69f61f44203bc20cb13922e4", -"T2T1_cs_test_language.py::test_silent_first_install[False-False]": "36f721199e5ef77d7e7bc5e7866e46a1b3c6c17a63eaf3619c3cac32f53358aa", -"T2T1_cs_test_language.py::test_silent_first_install[None-False]": "36f721199e5ef77d7e7bc5e7866e46a1b3c6c17a63eaf3619c3cac32f53358aa", -"T2T1_cs_test_language.py::test_silent_first_install[True-True]": "1dca7d803ff1d1fb50fb53e9dd430befe95cdf85edd9c855815817bcce01873c", -"T2T1_cs_test_language.py::test_switch_from_english[None]": "e5c90dd87e1a12c90399f728e6a039a35a393f0aef75bda77f777173cb22aa52", -"T2T1_cs_test_language.py::test_switch_from_english[True]": "e5c90dd87e1a12c90399f728e6a039a35a393f0aef75bda77f777173cb22aa52", -"T2T1_cs_test_language.py::test_switch_from_english_not_silent": "a1e756fe6046d140a72d986708b472708ba7a0bc40ed94d7909231b434e1f2f2", -"T2T1_cs_test_language.py::test_switch_language": "14497b794c9499ab230a20403447dc40b6c91413d93bd51c0e72bc812d9af0cf", -"T2T1_cs_test_language.py::test_translations_renders_on_screen": "45d3d73278de297d33a0be7e579bce5c7d1a5df32e8ed079518435be16b63585", +"T2T1_cs_test_language.py::test_error_invalid_data_hash": "eeb33c9c4f9ed22a54db5d3ff17e8df1f17725036d7a4ee8436ff1e957968a8f", +"T2T1_cs_test_language.py::test_error_invalid_data_length": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T2T1_cs_test_language.py::test_error_invalid_header_magic": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T2T1_cs_test_language.py::test_error_invalid_signature": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T2T1_cs_test_language.py::test_error_too_long": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T2T1_cs_test_language.py::test_error_version_mismatch": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T2T1_cs_test_language.py::test_full_language_change[cs]": "9b7fb87471c4cad34c5e6e37413496e06119061ed1621fc36d9ecf218a167573", +"T2T1_cs_test_language.py::test_full_language_change[de]": "e6bdd9f09eed62b4370e6ce92402e2ef4dc4c29b09d90e8530492a7e21fd1a28", +"T2T1_cs_test_language.py::test_full_language_change[en]": "8a9e7f32e0c4123efbb4dde7a3bc62d9177ed4d0aadfbbaa114e64dee3d852d4", +"T2T1_cs_test_language.py::test_full_language_change[es]": "a2ece6cef08534144aebea549c2f7b7dafad44200155f7bef4c6cd9085b25690", +"T2T1_cs_test_language.py::test_full_language_change[fr]": "4b5d2ef1c9bcbafd1705576a34d0538dd25e5719c8ffa156ebccc2d04a2d15c7", +"T2T1_cs_test_language.py::test_header_trailing_data": "bd0f5504c03601f1c48fd8f44177e13c5b64b96ee1d7faaf463a9d42605f9c22", +"T2T1_cs_test_language.py::test_language_is_removed_after_wipe": "331b6eedac9a2f34abb6155de5359333b9314d56a3248785956851f1ef7d23bf", +"T2T1_cs_test_language.py::test_reject_update": "a04a7ec8f30e9ddee0975d46fda0a10f22c0e1e513283cc6045c00a52f8a3fab", +"T2T1_cs_test_language.py::test_silent_first_install[False-False]": "d4c76b3068cd908841b872e893e2bb78610227110ca369459c5c3218a8a30765", +"T2T1_cs_test_language.py::test_silent_first_install[None-False]": "d4c76b3068cd908841b872e893e2bb78610227110ca369459c5c3218a8a30765", +"T2T1_cs_test_language.py::test_silent_first_install[True-True]": "9018a4f9f84359ab02e069b440f9d9d030f203351f282ea707c703bda62217c9", +"T2T1_cs_test_language.py::test_switch_from_english[None]": "78fa9df1c7bc478776ed934deefda7a9e8fa40b7d6dc7bff3c3a09326c74c10c", +"T2T1_cs_test_language.py::test_switch_from_english[True]": "78fa9df1c7bc478776ed934deefda7a9e8fa40b7d6dc7bff3c3a09326c74c10c", +"T2T1_cs_test_language.py::test_switch_from_english_not_silent": "91a7151e16f344efdfad245fa29a186f1fae409387e4f1bf732a0cec1ed739ff", +"T2T1_cs_test_language.py::test_switch_language": "39a66700fdecc28cc5ab93d48b3fb2f004987f1a1d6f3b0991a02b1843eec8e1", +"T2T1_cs_test_language.py::test_translations_renders_on_screen": "0ef96497bae150341b21d5c6d8a332b62d242ee59174187bdb0e96269dc43b26", "T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "902d37a8a618eaf59c50d0cbb26db2dbe771222e72e466654a960b84440efcb6", "T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", "T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", @@ -9438,11 +9459,11 @@ "T2T1_cs_test_msg_changepin_t2.py::test_remove_pin": "c228eeb6228ba61965712a05e313297b054f463cdbf33a86888a4833cb22ad7d", "T2T1_cs_test_msg_changepin_t2.py::test_set_failed": "d44150ef88ec051c85010fed2d12a15abb8162beef36ac992ca1b450a3364f6d", "T2T1_cs_test_msg_changepin_t2.py::test_set_pin": "c0ba09f92891d36e040348160915a0abb48f31491a4ae72aeb386d7a85c61fa4", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_1": "43171b5de15c1366853aa6f14704d881cb203e1ad4b25e4c79eeed3642f8809b", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "85a6a9956387ad45fbf841840c65c9bf4b920650ad0df08c2ffe429f7c79a883", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "43171b5de15c1366853aa6f14704d881cb203e1ad4b25e4c79eeed3642f8809b", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "43171b5de15c1366853aa6f14704d881cb203e1ad4b25e4c79eeed3642f8809b", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "01629b877f905ebc3cd67bdf404e7b57e5f313d1a6a50d8e484220a0cf778f09", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_1": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "8a58a03d6089a51c6b37846f345e0fd48a909eaa78099aebdff44192f3b6ccb2", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "38d9b6e57c229d75496c26605efc57b7a159511bff3dbc6477c6a9304e85333e", "T2T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T2T1_cs_test_msg_sd_protect.py::test_enable_disable": "7815d8d7eff783050c6b202ab538dc0eaedf1f6f9e7ceb535c77c6a6b8b18331", "T2T1_cs_test_msg_sd_protect.py::test_refresh": "cd45ae6cf914bd58774f36a203dcd1928439ef510db1fe29d8a81aa903c3c17a", @@ -9468,11 +9489,11 @@ "T2T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "d9138aacde97523c30ccae998a2fb4a9e0841d2a72114860c60449aa1b074e84", "T2T1_cs_test_protection_levels.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T2T1_cs_test_protection_levels.py::test_sign_message": "0612f5474b0b0630b51619c6392b177889258678d83cc4f3344ca70c66e9ecd4", -"T2T1_cs_test_protection_levels.py::test_signtx": "9755276466359c489910ae2cefdcf6db60a67a0c0bd8a5670bc697d8def88629", +"T2T1_cs_test_protection_levels.py::test_signtx": "af9c86685957ca9e083c1911ca97c3e02012942ae6ae3610635a5f207364a72e", "T2T1_cs_test_protection_levels.py::test_unlocked": "c0b276e7523ac36d9d7e47aa49bf212d031ac624313c5cdb0d1148007139245a", "T2T1_cs_test_protection_levels.py::test_verify_message_t2": "735574dece67508e3f46f09ed24d15b60479c34b8677dd7cca3283f7a8f2d430", "T2T1_cs_test_protection_levels.py::test_wipe_device": "c0d15ec0f9f3353fc04ecb6fc26de3fd7976d0e404c4ea8d8f1623dcdbb82ab2", -"T2T1_cs_test_sdcard.py::test_sd_format": "44efb36eef6deceba99c4125344c504232f78f1df38c2cc39b4fd5702e662acb", +"T2T1_cs_test_sdcard.py::test_sd_format": "8f1ca58187e0eb32b6e23e369b1e9a3f68ee244023e2a0d25930d887f9bff5f2", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "40ced7c029b6e69daf5255afbdcf46f54c629faf0927ad6be5ec8318701e5a9f", "T2T1_cs_test_session.py::test_cannot_resume_ended_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -9501,9 +9522,9 @@ "T2T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "85f31cdab9b7ac4bd63540d5428a43010c7c9f6284df6aa4ddab1a9ba7b506e5", "T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aab7139148c4db5da785c7bba462b99c1c62b39af841d0986f8fb839979d6212", -"T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "6ccd4b32d1c29573faabe091b1de6a6743932f3aaa76af64df0c6b99b544106e", -"T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "520b14f8797bf273d7dbf7918e62673d66c6477188f773c326b907ee2e015d3f", -"T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "96835c93f021819733b1c5f18e8877014624492fe63fd1683dd0de827e4cc86c", +"T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "af0afee22a2b75c9f1ded40279e04c88786909afb9d6949b798ab1680faf62fe", +"T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "9cd0b5648352049a2a290a30261ca69a060ec80f821a0b64555ec2c7dfe5b8bf", +"T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "182feeea0860ae5e9347e6c2ec64c185f16d4b0136d448bea2d86696871b276d", "T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "4330f18abba49d143547e9b91b252b48eebdb08abfc1c48a39e5b9cba9ba1efc", "T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a55dd5a911ad37437e76ca92fbafbc14b6e7e75b5571cf225749ec8921f8576b", "T2T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fb7108722b7465127626fa8c2bdcedfbad3df8468a9e74d9d948f57d1b93981b", @@ -9515,26 +9536,26 @@ "T2T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "83aa15b49f8db110b6e45b78fc0f8afc1026bce81dd9388c10748cd2b57034b3", "T2T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "49265b0b9bc77fddefbcb374cd836ab6dcbe779b3a0eacb8c3431e60e707f853", "T2T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "5523f9e16493f0218cfde853817263db17680e391fe872ea7e3b5ed0fa5fa2d5", -"T2T1_cs_zcash-test_sign_tx.py::test_external_presigned": "dd75ce54d46dc216e7c0fa9306e1cf535689c590f058a5446648033b809b4e94", -"T2T1_cs_zcash-test_sign_tx.py::test_one_two": "1cd9cb6ffec689578227d3cfc12e681c108a1fc3051a0417657d3f4a6dcef362", -"T2T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T2T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "f706e70d9d73bf5ef052a1eb67f2ab830fe880c434b1a1edc6a5e213a06707b0", -"T2T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "e6b2c6f2f2514659e6be7e2bc0abede895a25f3df76c58f99b26ec93a4dd5d55", -"T2T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "35b01b8cccea5a0075979cde904151d42d5b6fac865e23a8e61c85939ad08b09", -"T2T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "93df395998e0cbfd3be941810fc13104b394dbd49c347fd1eaeea0289798b8fb", -"T2T1_cs_zcash-test_sign_tx.py::test_unified_address": "3cdd2085f60e8cf3e00d52cfd4481458c4103e83c69937303e46a92ececa8b8d", +"T2T1_cs_zcash-test_sign_tx.py::test_external_presigned": "6c5bab0969bfc1cbbaf093852a0e959da07c5721128f70a213b9675bea0868a9", +"T2T1_cs_zcash-test_sign_tx.py::test_one_two": "34abd8f4cc3ea3ab9a25a8b2dac7a75281cf4e6154611600cf34745ca37243c7", +"T2T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T2T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "1b183b8281df737e5210dde94d6df74729aa83353a3778a60bfed1618e6a17c3", +"T2T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "cf29bdacbb2837fba56b65ce9ee0d6a32f163b867288b863cae79bbc5aa79599", +"T2T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "f05c89f20e80be5faea4ea14bc5ea3c247cc01ee8aad5c374bfac325262a2da5", +"T2T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "a19c1c732cd26205671ca05ae634ab25c92ba2a78119c4c9279f9564d6f01ccf", +"T2T1_cs_zcash-test_sign_tx.py::test_unified_address": "5263c5198f3de829acfb5fd2f062e4dbd7e7a772ff37e03ad9938c18cd741a8c", "T2T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8b04b754bc8523673322215b6a00ca82070c1cb507f18b941439ddc1a71330b3", "T2T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "34c96a3ffabc72c04e7de5c3c41a5220fdcc260e8e428e402700d873fa5ff0d8", "T2T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "52be789ecba93fac2f8d9b0f348921b44fbfaf90055de4cd5f317e8b73e07952", "T2T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9961a32676e652987196a9dae48864274cc3de8c317291349de3417bbd4375ca", "T2T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "d06829f14d4ca09da6fe6bc84916eb48febb57841739c059fe02004e940b8bcc", -"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2038ca134d0d1d3a4862c98d20e831a3d21490e4aa23b57ab638d432d1e0a1a9", -"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "6cbadf110e0814e44715bc9f5eb976cd2607e429258ac46ab85daf3e740acc21", -"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "e54e9005fecc33eb40ea50874faab70ed5d02f302cab3f823aa7ecc9dafb7208", -"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2038ca134d0d1d3a4862c98d20e831a3d21490e4aa23b57ab638d432d1e0a1a9", -"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "6cbadf110e0814e44715bc9f5eb976cd2607e429258ac46ab85daf3e740acc21", -"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "e54e9005fecc33eb40ea50874faab70ed5d02f302cab3f823aa7ecc9dafb7208", +"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a62a64a1057c01700d441ff86c311855f3a4c6dd0c0d432c8638b3054323353a", +"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "633dc02580c2d90ca4ffa7f47dacb0648e57bc04a1254e36864c20188b531cc9", +"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "e8d30966215874d6f15968ac8a4c8b27225ec5af72320e37d3c5f3691432ac03", +"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "a62a64a1057c01700d441ff86c311855f3a4c6dd0c0d432c8638b3054323353a", +"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "633dc02580c2d90ca4ffa7f47dacb0648e57bc04a1254e36864c20188b531cc9", +"T2T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "e8d30966215874d6f15968ac8a4c8b27225ec5af72320e37d3c5f3691432ac03", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "af662f3ef98d9bfc8f1e03a6b4cef12f8c955cc16059c826808c71f8b1987389", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "2e37ed22095d7a073dbef900c55566874abb4c3509e2de6bebe06920fbe71b1c", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f9e30feb5237edd872806bc548d62acc529305893f5fb3407cb8605ffbfa1bb1", @@ -9542,33 +9563,33 @@ "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "342ea940862082bf46bd5bf98ae2ae3ba2a754f9e68ed4516bfd957967400d46", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "342ea940862082bf46bd5bf98ae2ae3ba2a754f9e68ed4516bfd957967400d46", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "d35204d220e204e9da5aea5bf0462b4650422d777dedb55101b0b0ea49af27b9", -"T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5c113bc9d874bc63e8c205dac3369b836d79ce197109c848534c0d22d0e54fd0", -"T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "eaea5e14a629dc3221c85ed34d663c344b6663081cade07693e5e4cf159bdf44", +"T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a5d1a0a50cc0318eff4a27297e56f731fbed0bda39cae1a17615e22e6047d605", +"T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7e808702a6455402afa7993d99edd1c6b37636b63d01090aea02f0e083827db1", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", -"T2T1_de_bitcoin-test_bcash.py::test_attack_change_input": "0cb9a8eb21cba13ccd4bb9ac6e79c5286877f4596340de92cd92b9c65a7fab7a", -"T2T1_de_bitcoin-test_bcash.py::test_send_bch_change": "0cb9a8eb21cba13ccd4bb9ac6e79c5286877f4596340de92cd92b9c65a7fab7a", -"T2T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "736c8777a8d7a2f734a418989841f8cc1d1152ba8a7a917dc24072e039e9cdf8", -"T2T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "f62a6c153d26b4c92b9f7ba658e3b2054e64da3c7f0181ef3bb3d7e82dd9807c", -"T2T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "e7fc90a98f175f4f11be0b3f5342df6afba1957b9630417ed6b11c8359372406", -"T2T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "3395f0a673070c452fa05f218851120dce9f34c3f51281caa41e79c3dcd612a9", -"T2T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6188b171e6e1c48b2f5026bc5a54ad4116f4084a1302e6d152e15da3248dd183", -"T2T1_de_bitcoin-test_bgold.py::test_attack_change_input": "c64a42e1d6e1e85e4aba3b0775694c1c413d7c3dafd79c87652df7f15fbf135b", -"T2T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "c64a42e1d6e1e85e4aba3b0775694c1c413d7c3dafd79c87652df7f15fbf135b", -"T2T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "ffcb5b2907bea0b532e9d5815f7c8c360643234ee480582c2a3592c443865771", -"T2T1_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "af67e3d34b208f1d10f071ebe0217e49e1181d7f53b6131afee88dcdc20ecd97", -"T2T1_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "3132c940da577e769f25605ba2ccbc13b6d8e630a6a9c74e81974bd45c61866f", -"T2T1_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "0f7847013b17bba1c3134b835e3d3ad16135661e6cde237e86d4122f04be3046", -"T2T1_de_bitcoin-test_bgold.py::test_send_multisig_1": "92426e0a6d6201bb143f508cce8e2c0e749842cfeb331f21f69efe44cc3568b3", -"T2T1_de_bitcoin-test_bgold.py::test_send_p2sh": "70790e7bf49fd2e083b6a4faf7f43a44b79328a737e0868a3b072e0595b74992", -"T2T1_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "652785c3c553a649d731eb7c3ac4a522016077965fbeaa3b6874e11744af2903", -"T2T1_de_bitcoin-test_dash.py::test_send_dash": "acd622ec1ecef460f90c20f2277d257a8c1fef9a2acb1f953cc92ce4861bb994", -"T2T1_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "68267fe587b9a936675ed4e1f8782d21eb469f8af3fddf712b830a85f467374b", -"T2T1_de_bitcoin-test_decred.py::test_decred_multisig_change": "c6ff1c186354a7279e5e5b1006fc3ec1acdb5a6da03ecb3bf801ea4d4668e7f0", -"T2T1_de_bitcoin-test_decred.py::test_purchase_ticket_decred": "483502ced967c446e9b56415e7377bb9dd700b6a54b56fc5620c1d22596794e9", -"T2T1_de_bitcoin-test_decred.py::test_send_decred": "578b894607ccf40b2c50b96307d0f46dde925c45be6d19e150932b911b55b23d", -"T2T1_de_bitcoin-test_decred.py::test_send_decred_change": "05e0866a9ee99c69a8c489ccf58077966552778335d227db05164aa64c020663", -"T2T1_de_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "f436ac3d0d9eeb87e940af9a7d54d34e7ed64ec17389b409f68313a1dd19bfc5", +"T2T1_de_bitcoin-test_bcash.py::test_attack_change_input": "000fb25c5a1455cd8c75372293cbca00a9ca034078eb1d401c2213274818fe5f", +"T2T1_de_bitcoin-test_bcash.py::test_send_bch_change": "000fb25c5a1455cd8c75372293cbca00a9ca034078eb1d401c2213274818fe5f", +"T2T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "205772b0ede7ddff5456f5ff1a0b4bdc92e4fb91bf547bb10b6372ccfbdddff7", +"T2T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "40a06762d550595fc0b80ada085e09555d05e5ef7a56c6be8c49e329e1d89a5c", +"T2T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "a546916f892916d48fa253755740151a3a02731444cf8b390b1aaf3a3bbcbf6f", +"T2T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "60503baf1c396d3b5fd275b89b5a0b4a8f877bab02868712a5fdbe5b5c45195c", +"T2T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "bba776e12005c44b42750132ce34b2168cd020ff9908094c6ecdac9b3be3e753", +"T2T1_de_bitcoin-test_bgold.py::test_attack_change_input": "fedb5cdbd0c20d19e209816aa6f1140abe2746bdb50fe703a030ab72a98d7554", +"T2T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "fedb5cdbd0c20d19e209816aa6f1140abe2746bdb50fe703a030ab72a98d7554", +"T2T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "d4ce1182a6875f21eb6cfc445ffc684575616473448076b99d36a0b4d4d54dc2", +"T2T1_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "10eea7b1988ea19534d01b3fe2db662b368d9e0670cbf06ceba8db099b19801b", +"T2T1_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "bef164479dbbecd892aeeea432489e2b7641586ee6ddf8a0814eaf6bd9e180f4", +"T2T1_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "48a5bbf15f7f5a2bf7be487742c3829d81dd6871e3081b88515b31b47259b254", +"T2T1_de_bitcoin-test_bgold.py::test_send_multisig_1": "b52e9527d9e19ce9b040888bbc22f49b522b6848aaace3760ecd4c4bb16d9789", +"T2T1_de_bitcoin-test_bgold.py::test_send_p2sh": "6cbe3eb5586c855c9abebd354e33c2c756967f583b20df71ec0764577d340781", +"T2T1_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "35c931ae56cc886089b0525d6d452cb0cea89248cd8503251c6cc865bafb2b11", +"T2T1_de_bitcoin-test_dash.py::test_send_dash": "8ef8313daf9b5ada908d1c0807b5950679769d45a975fea58d0a2a722682ea49", +"T2T1_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "28a6bf66401c4ba2a14df3dcb550d6b061c4906d00499b5c3402891e5ba4d2a5", +"T2T1_de_bitcoin-test_decred.py::test_decred_multisig_change": "6193e3a4e399f8e9e57b1c5cb618d1e4a9a680927963b74d1d8550115d26f307", +"T2T1_de_bitcoin-test_decred.py::test_purchase_ticket_decred": "9db6ace88b51c25a5f2856bb6d16942027ff7e45e7b5acd84db3a014777419f4", +"T2T1_de_bitcoin-test_decred.py::test_send_decred": "675743b36b1d30a4fb01f83a00640412472f4db24676d9c14a4da2182f2a699f", +"T2T1_de_bitcoin-test_decred.py::test_send_decred_change": "e719af9d1f724582926c75b14d3917dbd966d24382bf7e11e6dc12b81f81ba01", +"T2T1_de_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "69e48218ec87530b19cf8661ae3b8c9353e3ca544d265804452bceb5d5d3c4ce", "T2T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", "T2T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", "T2T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", @@ -9605,8 +9626,8 @@ "T2T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "abf4b0d84db1323786f4e7c703140336ded8a409905d8fb1275ebd3f385f86fe", "T2T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "04b61e0fa43ee0a9b4e7a6c845d096c0f1df1dca6c78b6b97a262c7d7a710ad1", "T2T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "72a6eab0613382aacc331682d365480f6f5b54ad8db1152b862e1785141287cb", -"T2T1_de_bitcoin-test_firo.py::test_spend_lelantus": "4e9a98c440691d61bb58c74fd82ead2b5ff242ec1e5cdbf0ac19888bcc598db7", -"T2T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "d4c9d7293bd0260f7b07a538ba1c8821ea11a3e60eaf93a68ae0b8cc00482c54", +"T2T1_de_bitcoin-test_firo.py::test_spend_lelantus": "8316b714d7c9980de0884f92e7c5ad1e237244ccc9bdf1afc66d0819182bc481", +"T2T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "32d83d0a70351e53476e86f35b8f71f0902113f5b79d4d25e9921ed9c309c0fa", "T2T1_de_bitcoin-test_getaddress.py::test_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_bitcoin-test_getaddress.py::test_bch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -9734,28 +9755,28 @@ "T2T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_bitcoin-test_grs.py::test_legacy": "187bd7334b86373d973fe9e0d31b9de0070029e9372305794e056b5d2bc5a6b5", -"T2T1_de_bitcoin-test_grs.py::test_legacy_change": "916f924a69f53952af0fb7a60f168a4317e9870236b1a26ff8e1536ada375cb1", -"T2T1_de_bitcoin-test_grs.py::test_send_p2tr": "56758dd1af6261ba87abe90b284d63b4391c64a5a3922b8a932e1c09153b1971", -"T2T1_de_bitcoin-test_grs.py::test_send_segwit_native": "ae403b23b1b5fdef19f62f1a804b5d357aab803850f4202a760785d9bd8177ae", -"T2T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "9b73e9ca561f05dde8306e1b01691fcf5a13cead5207e63f3e2d8c4dece2caca", -"T2T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "69521f5c988c1abe037570c29bcb023be96c2031374a2e122a0a540b72b79381", -"T2T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "dfbb37289d40db5f250f4635b1dfd0f3f628653e0ddf1921c759a3b72f20d82a", -"T2T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c7cd1275972d0f6173b4f427e18e5610711bfa3e48b50e31bd72c40de45a5423", -"T2T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "9e8f6c0f9c89cb4f109d4d3793510f9d22ad751bf386ddf358835f0c654847c9", -"T2T1_de_bitcoin-test_multisig.py::test_15_of_15": "4a147bd2da7e362aae0d75792090c53dbac97a27164ed09b452983b9c10dea7b", -"T2T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "037fd02ea2b816d865cdd75d539c653db32a3d83f2803f6d923f1e77ca561567", -"T2T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "62490b47d5283109ef480fc7d4487dc81b9556184437307f80b041c1bad4c4fe", -"T2T1_de_bitcoin-test_multisig.py::test_attack_change_input": "b48c191999eff33118610114cecb9cbdc25bb5ea9e91ada1918091bdabd3afe2", -"T2T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_multisig_change.py::test_external_external": "4c3e91f77f296002ca3628dd682807abb999dc7d5663aa38c2ee3d7412780055", -"T2T1_de_bitcoin-test_multisig_change.py::test_external_internal": "cf2d2842907cc129c88868199132c21709a48a6e1d0a50da832f5ff86f13d7c6", -"T2T1_de_bitcoin-test_multisig_change.py::test_internal_external": "1403bf66b99263c8652e644a0512f40bef7650f4c55a65569c35a033109fee06", -"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f8c458d7fd86758f76584182ee53487df0406c9ca14079bcd410031a5e0fd3bf", -"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7befa9d38a136cfb3b785168c2fdd44d33e16784209c2cd4559aed71b0e3f819", -"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "945171f958a106db3ac9b03ad615bc472b958ed92daef854bd9dabeafbfc0915", -"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8b46919107f053cc17a7c2f5423fcb6b2f27c05bc78a1fdb21d82d08dfc25a96", -"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "32388ee283f47424a229be105e1487ca896eaa18a4898c3527e826787d1ec505", +"T2T1_de_bitcoin-test_grs.py::test_legacy": "25d9086b77f7525569eeeee9c9fdf62664daf42e416d1369b48569ec5847c4ec", +"T2T1_de_bitcoin-test_grs.py::test_legacy_change": "9e166579ab06c61ff7a1ca2afd0ae5d2332ad276744e40e102ab90b09ef59619", +"T2T1_de_bitcoin-test_grs.py::test_send_p2tr": "f517751e70d3821d912111282edcf1b96789bf8f292ceb002671cc17dcf26a28", +"T2T1_de_bitcoin-test_grs.py::test_send_segwit_native": "5bffc1fb78de55be30bd2f1db744621b68f3c8f24ddc1654329293e1642f0914", +"T2T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "7903f0ca09eced401e535a1d7d6f44932957945b4b596868842957c7b1d06c98", +"T2T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "32a2c7a71a270ce678451d36c538c31c2febebfdb7c1447228ce82d8d6524166", +"T2T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "6111bdcea0d438da38dda92de278d4f66b2b5bb0b6a949d21bff33e255900df0", +"T2T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "bb9dcf8a41af2f980673273410d7bc5aa085a1976728d62659fdb46851939d56", +"T2T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "3177156d1e1cee64388d8e6164cbe881ef192a838c2331edb328bca598a37cac", +"T2T1_de_bitcoin-test_multisig.py::test_15_of_15": "304b1c31e7ea6e5c0cbb0bea1eea36f08d9753db8ff4da3b64af9d5553ec4a83", +"T2T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "d906493591eb326f7abaed3c2e879ca992aa7ed719c46ef5204a359348e2d58d", +"T2T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "7c62bd05415ff3ee3aebd5df43a0986ea513e080594d73fde2e29e50f9fde196", +"T2T1_de_bitcoin-test_multisig.py::test_attack_change_input": "0ec1464cf13a3034640616d01d5bf21612e0a0a5aaddeedf1cdda542c1c5adf6", +"T2T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_multisig_change.py::test_external_external": "a95e0fb06fee40c6e019ff3f8853649e529bd2e326bbf1ed16487259405399e0", +"T2T1_de_bitcoin-test_multisig_change.py::test_external_internal": "0682e50f81466a446b665c7250b49d5e2e32a4ac08d568b92434fce9f72fae14", +"T2T1_de_bitcoin-test_multisig_change.py::test_internal_external": "2697e01f2e1e7af98ae9ca22e07b310678881ccdee5d8dfe0d0ca1652788a7a6", +"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "1a620448b1e4f4994c1a11980a18650dd4840a3eab5a85be9e035e4484ed2e50", +"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "f165f52bcd0e997ee30a22d9462f297649fec0cdf1387b2947ca7def537bf22c", +"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "d4199c91e13a996c8e8af6014b781180dec77903dcbd984f5a8bc292bf336b93", +"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "bb8c81aacf79cfb8ee958a3e7f3e3ed8d733fd590f1d2942aeca23f4a14facf4", +"T2T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "69bcdc81b27d79d09236f0ad112c428e52593fa46029204aa12621850449ee3d", "T2T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "23dcbc93a12e77192533492fde55fa10b363f4e5dc73c864b0b8c88631f4a83e", "T2T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "63a169ca1c10921fb343921d0dc1202978d5c3967ef9906f5fa401bca55aec3f", "T2T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ae6db1972c9b584dc8c3c26850f56734ac8ae5caf174cad72fb045ba203c81ca", @@ -9784,25 +9805,25 @@ "T2T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "5ab91825c7b3aaf488a9707bf0f5b616a54332cd9b2aecad4e2f9e89df765c74", "T2T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b830da59e059112fd60b0eab834153ce81410a0be5e234d45c84b03814bb3151", "T2T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "45abccd33a0bb02216458f21d7a03500ed6db0b80dfd45610c4ab91c102bed4d", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a0abf6ae6c7c863b32908097b64314afff6fdd3863017597ad542ffdd15b93a4", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9ba6628c8fcb8cb4aa663db515c1cfeed0d2ffba45b027e5546aa98c1c600dbc", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "53aab978ab389d46c2e1a0a252d5962cfa74fb8c0661bc4435456602a80b2141", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "ac2a35429116829bc9b64d36e2b9a118a0c4583130c6a8da5d7c5abb2e8e9589", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "340b3ad14cb53e23d93fc00d32e56baaced8572d0f5ee2d2f1c0fc30609cb97d", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "2f085f081d58d0776824481d221c5204090a60526f7b7c8c2c7304f6d7336510", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f1cff0b889af8871a1b578e0f1a58d5a2aba4205e03fa6f22168de7661a09842", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "853b983ec8bc1cd2f1fc21375a3b70ef6dc214877a665f9b1c017f88e099df74", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "33b1c6f8246f3a2d755015e950e3e3923a8d7565e100713b45d5f2db401d78bc", -"T2T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_op_return.py::test_opreturn": "bbcdedba7de9698e5f39ce27eefbe2f04573415d4c83c6c11869866b679a83ad", -"T2T1_de_bitcoin-test_op_return.py::test_opreturn_address": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "cb14903c47f019cb4226a57a54460830afbd9539402a25e07764d52bfe95248e", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "765e72dae3ec84edede2614847e433db2351a38a2903742a458d38ff5bdce029", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "af9649ba21a7ce851d4d5f3b188732ff7478cd3ea377fd4679dd99d65a0d1f98", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "417da43350c8073a85ded3e4655ea58ae3dd758260c218ae33252c6f0e664b1b", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "17e76cc8e824f771e8dff085a947295b96240131d1cc8e3b6834a3dc5f493cab", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a7132f5cc5eb7a156783edd4ccecea7c076c1ee28f93074ddea4655f531c938b", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "a09cf1dc9a5db89be44406eeb5c1d383d014c226c201ebb64d9f56b0ede83d01", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "68d3a185cb16d5a0dbeee4d22cd02cc01be8e6897ed9077327fd82ec3643aee1", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "6bf3b228db444dcef5e20d6f8b110bf6c6da7db6946043c9c288f02878b592ab", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", +"T2T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "49289f78e2629b47932063653769ef93a0c079f3719842566c7d40b3543c42a5", +"T2T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_op_return.py::test_opreturn": "4650c0c675d9447afc26efa6e4d3c4104cd88f1265c472e48f8b06578e73e64e", +"T2T1_de_bitcoin-test_op_return.py::test_opreturn_address": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "d7f44c3c839364e3a4e317187ebd77e5c9bc4a13053b11fa202a5f7b02b8c2cf", "T2T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "bbbf53b27b55c2e3621226c754a26e0b6d26e28ad4dee522e5bdf00124c86708", +"T2T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "70b52e613f0282a3820e5d3007456234c9bd393f7687ddcea81ecd3f9d9af9d4", "T2T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", "T2T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", "T2T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "208dd4db2f811fcc7bf39284784e6635fd06373281cbb38a02ef5d0e4372b0d9", @@ -9854,151 +9875,151 @@ "T2T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ac28bd7184f7a2fe5a87afcae4aac70273ade8be077069c40c79521110848bab", "T2T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "ace4e89ae1c8d469bd284d0844c0f413753535190f059289fa5d502d8bcbb397", "T2T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "2564a17d6948a8d654af5f88b0eb626c84b240d612d91ecea3d819b5712c32e9", -"T2T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "c9db0e68ac78feaa55594ef18374beadf7c906ee9c01152ebabb6d65f8906be8", -"T2T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "2db20091875cd7019669d7085c30a94fb8604524222790109657a9400530e01c", -"T2T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T2T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T2T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "fa4d96feca2a2e1767b0cb7032dc63afd16c6af257e8c094c8a204450e4de6be", -"T2T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "a30a89598202fd3c38e3f80046d627976c50d92b51ee1922825d9bf20e301927", -"T2T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx.py::test_information": "02fb59b788b4f0d10f3a59e28e04ee60a3627608b52621ffe3b1e6b8c22fef3a", -"T2T1_de_bitcoin-test_signtx.py::test_information_cancel": "e68c38bb87495ea419e510876a78e374d4097f8e8739df2350acb7d4d4bfdab7", -"T2T1_de_bitcoin-test_signtx.py::test_information_mixed": "70ae35c7daa3a3700a3d82504b335af40f6e9885a7f8fa0b41afb7556012e07e", -"T2T1_de_bitcoin-test_signtx.py::test_information_replacement": "1f86e0267e7a6a0b89cf3de3c4736315849f111d8a789dc9f5041861ff3c2d11", -"T2T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "8f8f1bfa9f931f54c63f024c2c1e27955ebc298a6a27ff16c11bc8503cfd185e", -"T2T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "da5ebe4d58ffbe3551ef822f4f76446e9ee64f0b315ae20b3c6266d5232ccddc", -"T2T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "1cfd8a7d30fc68e006af5516123228739e8fb89628bb55e62a160551819ff9e8", -"T2T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "da5ebe4d58ffbe3551ef822f4f76446e9ee64f0b315ae20b3c6266d5232ccddc", -"T2T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "1cfd8a7d30fc68e006af5516123228739e8fb89628bb55e62a160551819ff9e8", -"T2T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5dbc15008641b71a624828adf0adda352b91c82cc7900b2d6c5cc65446843b79", -"T2T1_de_bitcoin-test_signtx.py::test_lots_of_change": "09354c507051ba6d4914cba6c207658a5ce059028434ca99fc32a3f45b8a47e8", -"T2T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "d91a933880fba80c47a1312b8316eda7964313cecc32f4e0b5e8823f00f661df", -"T2T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "720cd7592c9cf30d8248e01f42039d718a812b6404fd92f97d17f312e6e9e955", -"T2T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "94dcd49b4703d8dbdbcb460dbd599a4a058952ea228746b75ffadb7c579a4fb7", -"T2T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "17e60684cd5bd0ff681363a2a042254a19077e9108af6f71766ac721b6ce6c35", -"T2T1_de_bitcoin-test_signtx.py::test_one_one_fee": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T2T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "0d5bb1503e5b6eb112295531a529266af5114b56cfe005a6b1a495b24ebf8f40", -"T2T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "c1f335a1ac1b7c430a75d6e9e42235bd8a32d164db483df03a4700cb5648d180", -"T2T1_de_bitcoin-test_signtx.py::test_one_two_fee": "964c1f8cdebe3312a6439d381eac2abe15187b31e6e19458d367550abb84f5a7", -"T2T1_de_bitcoin-test_signtx.py::test_p2sh": "a248d971eef2b5b71f215c3471feab815acfa1cb8e758dd93a1db8a75948835f", -"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", +"T2T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "2894e3eb5273c0fdbb7cce37adf37d62e02ccd95e39a25997a282b833a2fdb12", +"T2T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "918028b8bad66a756e8e2dec08e31c146cbb6121e396f1930351d831515d2894", +"T2T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", +"T2T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", +"T2T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "9d0771442ba15121afb2925f943b66431e2f1deb3198ec2d9b4ecd22a9838d40", +"T2T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "f3677f4ad3bbb02d17220ea56300794e5fcaa18fb464f47825e21706d6b3089f", +"T2T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx.py::test_information": "f09c1499a249d4e54808dc635a4aabd652e7cc476fa98fcaa1be13159c755e8c", +"T2T1_de_bitcoin-test_signtx.py::test_information_cancel": "ace23f8e3171f790b2df8c563c02e54b58919bdb7ad819bb052d1ad4780f5360", +"T2T1_de_bitcoin-test_signtx.py::test_information_mixed": "631bdef61dd83d22e82afc8159f9e6ad944d4c5313628f51198508a6d6496f2e", +"T2T1_de_bitcoin-test_signtx.py::test_information_replacement": "09ad97e8082a25c62847a5440ad91b9c412eee1c86fff24e89991ea05f971282", +"T2T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "a55302b142f9d932bcc074fa3cc2b455df3b49e6bb07c5c2cd39f851d5990cf4", +"T2T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1dd74b6f7cf08a86b2349918fca4325b953809e3352ddc7362b625fa72000ea5", +"T2T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "39c5d8b94612fd2fbc569e72635a8023bf7a4b5fe73eddb0a0caa94683fe366d", +"T2T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "1dd74b6f7cf08a86b2349918fca4325b953809e3352ddc7362b625fa72000ea5", +"T2T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "39c5d8b94612fd2fbc569e72635a8023bf7a4b5fe73eddb0a0caa94683fe366d", +"T2T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "6acb1bf9d3b931b8d4bef7b65e404861dbd3e3a70086a66be913d57c4d4651fc", +"T2T1_de_bitcoin-test_signtx.py::test_lots_of_change": "72c64be9ba555b2dbb2371abc6c5bd0e9cbf4feebb1d01882c83d3420b32daf0", +"T2T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "373e3ebdf35519ec3c40e2d2b0aac0a7b1a6717b9b35fc5c2ce7329b42f6f1ff", +"T2T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "4b0797066aeaad803bec2a31698ddab3480fd4186e55fc876702eb16f245f888", +"T2T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "edfe7f28abc7a5f77c3e51367388f4b97966978c43cd21af7d1b9c7ca26dd4f0", +"T2T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "4e7c5c6a2c43018b5039278834a2caa7d25628d2ed32e0a72c7b6d2adaa310f8", +"T2T1_de_bitcoin-test_signtx.py::test_one_one_fee": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", +"T2T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "569eee587f0e41fb8e329f95d1554c70e50f59b1bd90a15266ec639bcaae3195", +"T2T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "d349f4eb9d6317817b55aa67a6bcecba0f75e3540fa153f6843fa256baacae98", +"T2T1_de_bitcoin-test_signtx.py::test_one_two_fee": "b81e63c296385966cda367d8df1a6419efdd74ff424820f52024fbb52d21e396", +"T2T1_de_bitcoin-test_signtx.py::test_p2sh": "1458a32abb85965613a6f1768308e150d6835707f17b899d19bb150847f3793c", +"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", +"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", +"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", +"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", +"T2T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", "T2T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "687402dcc2c1419c98832355f99534a2a5e2b2e09a55106416c44a9c79cb4fb4", -"T2T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "ec54abe8318e7e428245d1cb13d25a3650ff980c5ce889cd89f3778a4e998537", -"T2T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "045306d4977b0abf6bdba0ab49a4cb1e2f68ec2cfd49f14174d060b4e49087b9", -"T2T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T2T1_de_bitcoin-test_signtx.py::test_two_changes": "2b48938f8632092cc010be0d16120e1d960f177bb91904c8bafb72d4c50dba0f", -"T2T1_de_bitcoin-test_signtx.py::test_two_two": "8d0ee4d8fd9a4bc8ef4a3df82e55a7d8e7a66cd21b8be5992ab782273e9ceca0", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "90c89493efcd2a8475ba9bbebaa20e1b9a264f327551a364886181dd68b73a94", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "7c09f6ff42ca91b0ac86966286ac1994db2728789b105c0da68f852635175316", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "3d6efad9d5b0ab0149fb36347eef9a07e318bc4bcee52d8a3d34df2f697442fa", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a328fefef92993769684daad941ac56ce429dc81e27e1245026e1e356bad1a55", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "96cbc5f4dce03bc4920a3c5e87b39fe4b6b5e2f801980fbf9d090a97b6b5fe1b", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5c4cb0545101aaa654345fe0ac3199b13c00196727090a579c794ee9f97056c1", -"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d3d03455835e32609989606d975ad3b0e3c81fa1fd650c89617409c225efb048", +"T2T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "11b97f78aadf6df521610595c03dd8732086a6d136e22029da9b6ad3d2fd22a5", +"T2T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "780dac4b5a38f60fa17abb43733721b926636aede73de151e923891a51554b2a", +"T2T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "edc97fe979da6fab0fcf2c5d0606f19be34e0d4b2f893c534d08f52700e36802", +"T2T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", +"T2T1_de_bitcoin-test_signtx.py::test_two_changes": "cb9b86d4cb68142d2458e19f8f630a79a74b8de810ea1fd00d1285fbb6b88438", +"T2T1_de_bitcoin-test_signtx.py::test_two_two": "a27c09ebf7742aa8327b455ef39347dde07a29a034975a6674a116b373aa71b9", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "0bc9cd4ffd31cd91bca7737c0deeff5fa145d1f11ef6c98ec2e80acb4058d8e7", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "82a2cd32511b5126bbf6ba1952d1f250061e73eef5ec0051472742540298ed4f", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "a5ef51f98967f8a66a0ae75c3cb5584fa214ddc7b50124d97da8321a6e1dc3e3", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "ba336218bbf46771335df9ee97270a58d80ac9fff69d36b705ec038357654689", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "c515f42e7a3807618ea664c716e01af0bcdc4fbd4502a86a51a1bb3a26446b1b", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1ec17b89a43a89419869ce1f3a79239c194f5c75fb81d13fa68ca4d0ad37009b", +"T2T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "de804f3d559a38b53b05dd2244eeb651300d41a411322a63df5c23682a077e05", "T2T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0d0412eb55a955fd79e70371b7186557299f6e423f2376e9ff183a2b67652137", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1d7d27629d2fa30de94406cb8e559721fbf4772c554bfba14e16c18699de15d6", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "6e735feb08a2376bfb317a05c94634929bc96cae94beff6714a084171185fa67", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0ed7a91f8babd223331db3df89797aa2288b0f0c893d562744cd8d3708dad3bd", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b09276c2b27f43268c07a4d16b8c0385d87fdd6675430994f93f4ca317454891", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "3bc82949b610f3bd1e9ede5225219be64105a24fc66a3c157176bd49302632b4", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "0206c672d6a00504d682d8e757a8cf290ca836a690df16cbe7e5de6f8cf97076", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "5ff75912502bc1ee090ca62c637b53e1a11a250ed93bbdcb126aba44116f8bf3", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "8ef2d2864373abf5b1a2ccf38462e8844e432c51ee293707a5bc192669ab853d", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ed7241168b9002ad3a69ce6db048c37fc70ac6168811cf54214b37edbb2da2db", "T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "0c749f1be0f0ce51997fc63c888abeb636d6d56f2245fb9d92fe9a22c7825f57", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "06981d77f508d156ca6c2595e13bce12429187b9111cdd12a69a9f37c68c7a01", -"T2T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "aa0cb6c7f95d4c6266ba32b988af040f0ce3c29e7bf5a0a3ef4a8eca1e5c4498", -"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "5091de55d717306fa73100a7908b2b4442039fc8ac7fb16722def353e207cbff", -"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7e6a798324c8019019fde5f9ff8fd27a080c88b868e63b5cfed7b2b310d292f9", -"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "67ad861481273be81ca47a7fdadb7e4d1cbbf493689595df335492896dc0d3d5", -"T2T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "1c4aeea9bf65e7aa89698c76883d20ad9ce435f8c7fc2d68b0a174d36333d719", -"T2T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "a74fa38811067363c564d93f21b4f163d034ffd7eb44b759a96e4451cc122da5", -"T2T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "1c4aeea9bf65e7aa89698c76883d20ad9ce435f8c7fc2d68b0a174d36333d719", -"T2T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "a74fa38811067363c564d93f21b4f163d034ffd7eb44b759a96e4451cc122da5", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "d7751d51d6e465d2da904e6f78435a1522f4b9f9f921d810263de6ee61c02f81", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "7f626cc02c2d38fd6ea8e0d0aa69531d4984de9e64e6ee483bdbf14c385107b0", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "248b589932345b1ee5d9cefb04d22fa861527c33dc2da62af425c196648875fa", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c28daa5bdad2d32bcdcd6869a13f39e16d982adc62c83bda47a524cfddb5739f", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "b4e965dcd8c04fe585458d15482dc9496077325127ccb1e97d83fea54729af29", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "f50fa3c406db98243fcee047eb20ace974646b07b3963e9c800d9577f485a3a4", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "7937baea70c65efd9415c0c4dabc6a26c0d9b4ae005528f471f71c905f36faf0", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "647b18880af45c4f928db7b5264428bc42d913af403092ecf5833cf18ac6277c", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "0a8ff30c8868b304b43d90a880ce2736686db45cee73f9b36b4e86b3fb2c45bd", -"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8de40c79c6ffd1781eda446f4cdc9caaca36d7dc3c020e647bd6f5cec1cbfe73", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "22311090d34bae5e0680a4ae04fde15e6873e20d40079139aef91e697a2340b9", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "fc069bf99b14db6bcc82b164577290ee1306d10b7cd317d625cf9aa2fc056e51", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "4a9b651e4f0c57d76997bfd3f1ee18b3566761e1eafd7a06865738545dfbae3e", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "4a9b651e4f0c57d76997bfd3f1ee18b3566761e1eafd7a06865738545dfbae3e", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a699526b33cda0098a0466d594a35bd52d9bc81899857ac6783d979341cbdeb5", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "067ad9bdf5b0f33792df22166b5ead0f1864cef44158f8e6da3f7627ef9145d5", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "9420a4d36d46f161a2c19310f44c76dbfe52271f27075f4f296ee7bc0bb4ea27", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a699526b33cda0098a0466d594a35bd52d9bc81899857ac6783d979341cbdeb5", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "b42047e39a2614209c61b2de549f691fca3382cc198a80448bfcd22c8b70f783", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "f9ee8c7e6e7d33133c817a30778ccea62d666a55a0d6aa0dbf98ca9bc5e8a1b9", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T2T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "f4ddea4a4ef75780afb1a98c6b5f226fce6155b9d1c58da1d7cb002a921d0339", -"T2T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7044dddea721445ecf665b07f0231962a66500edfd81b9bfbe118c89dd91144d", -"T2T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e2afd3c79e690905b3123425308fe66355cfc52f73d7785089796e4335509f66", -"T2T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "af67422f3c12ad9b4634bda3653a76df6779e8d62147a73d278d561359ecb6cd", -"T2T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "9b401c59fde93d5d1355566cc952a4644f6e44e1cb2abc90a759d9a739042c44", -"T2T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f89a2e03000625bba736dbbc9f9fbf0de9c20af5cff1402f542d970264ed9ecb", -"T2T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e0b624b2f579d2471813f3c8ed90939f2e998b7ea47c88fb625693b7b738d2a5", -"T2T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d8c176e4795e77106c9fc1c61a65513accdf4f6457db254b228352f9db8e0fc5", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "2b221a469051f15a73716d1ced545e38b32b28145a2e132ddd6111d202258b2d", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "eebb11be899c8b1323e438e9694c8b14d1a7ca4b99ce0646f0e5742dd2e48c6e", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0cff975c185bdf9a046465bb46dab8b7522793d5148414c1cb3e2f55daec9b33", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0baab56d6323521dfbab947e207d36bfc8e2f70b90d12e5f4315ecc326ebd29a", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "3663ff8cf8840be02418246fb3ac0d18744c7efdff87ac6cf0c158405dc7fea7", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "70081ab169d6774e771fd08675240d50402de8a5bcc1fab034b85cf00b746e9d", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "579110b91367cfbb883dfdbde327f3530b93542ad4d254101d536881a35d368c", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "71514b8c7b4623419a396826214badb01a1f228aafabe869deb647b2fe0d7fd2", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "137fa4b0e0ca281bd55c3312889a61a96cf99d81702c32c67dd32dcdb3e7cb5c", -"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1f251f18e6e200d9b2968a12ba23a50cac93f3b453d19bde2dc00d8cee9e8fbe", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "47afe6774c095d566f11c35881d33fcd624e37a2eff260a3a11945f39b1ffcce", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "bce2774a94da770f4dcf00c9ab43d0769cddddd62fdd2f4abe9cd1fad5a90864", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "006b9dee52aacf96373f71569d6b69a8971d8496bb8462cf61c338ef4ce6a05c", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "6830091ad24777a2d6c31cb31bab17edad2927896a3ef18971d5d0f053933ef9", -"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "814c78e82321f6c911f3334aaae6e071c551dfa1e287377f55fd5fad8d9fc33e", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "458de3c8ea18c3cab08e7bd5cfb6bdc42a7f9d6dae5ac64be2f8a09157e24461", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "7f7f359068214216c3469fb76e8986c3f1d93e70b57455c442c403e177357497", +"T2T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "65fe3c954ca089231dc599e5557d13e752b70bfcd458566711e5d8fdd7d41b68", +"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "6b19fb915c1fa8d374773caac2909c6ce8817a8d27516cd983ebecaff0b56eaf", +"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "5ac338249c81f10b2d19965f7a50c4863aa1d79def8f170d6ace9106839a8f1f", +"T2T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "43d3fde1d8111df7cd3f2f19a99a444bd994fc488268f618084174468d950109", +"T2T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "d570a20acdef9b5a5c2aaacd02b0ecf81b4d7a3b35c3ea998f5fe074b89598b5", +"T2T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e2a0389e4edbe48e0bb5d445d35484ca804ef4b48a95ed095c7c181bca574213", +"T2T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d570a20acdef9b5a5c2aaacd02b0ecf81b4d7a3b35c3ea998f5fe074b89598b5", +"T2T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e2a0389e4edbe48e0bb5d445d35484ca804ef4b48a95ed095c7c181bca574213", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "051bf0943867b221785de1c7a6638f5681d47b1d8117eaddff407b94c0273e60", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "64a5423955ac886b03d90784cf0f736a020f0fa5d07eb4fcf4f1861742149891", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "1746070960750d3d11f75f5c6002657f52f07fce1184b007868e343885bbc599", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d27a750f1a1589df35f62057225cb9681c955fd57905fe5e761a9582ecc58fec", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8f09be162718b6551814c8d77623a1684e911148a4b207bdafae9b57e970e424", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "ba9adc6602d7ef0342480818e0d81b90b3082dd457819c02700e8c8936c3677e", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "81e2a9f2c3a86a000401dbf4ff30ff06ef147e1aa2f09faa14a9d1257e9905ac", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "6570eff2b07eb013b695a2ba0edbe6aa77ca7aa0dc947ffb38c9efb49267efd8", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "6b2ecc6f92ec11bcade86f2d9dce0701d390b3f27bc135a5bc149aae7d68ba88", +"T2T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d4805952d5c2451847b74cda9a01c3607cf7a22cbe3cd6e338d2cd86a4a13e66", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", +"T2T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "f488ac4082a4b81b7dfe5922a6312735913a46189dbad9ffdbbe789e5b7050c2", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "8ad87e6ec69ecb182547dcfc30782541732a4dce7b8215569c7dcec9ecf55c72", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "4b5f68913958932c5eee6d765e81037f0f10baf48b07cc7b99f85deea7f9af8c", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "4b5f68913958932c5eee6d765e81037f0f10baf48b07cc7b99f85deea7f9af8c", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "bf6d36bf2d054194d579949c6ad99700ed18adca2abfb2bb2839c74930a7fe18", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "f51bf3c972c2ca560c61674dbba86b598aeb46ecae8ee150f4742f06eef23b33", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "fd873258b424f49f8475830de4725343e8bebc357ce6a62db178c7a0fcaf2b40", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "bf6d36bf2d054194d579949c6ad99700ed18adca2abfb2bb2839c74930a7fe18", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "12f4fe24b5071ba8e9d193fb8f4ddf2bb9f44b18894bdd6edb69be53075cdad3", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "31f07dd3cbb663ac68a0c213e4b54f07131366779cfd2e8d90dc3b282fabb620", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", +"T2T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "bf5116c30f461483355c4c5ca9e70c284dffe3fb7c9a1cfe0407c945ad569937", +"T2T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "0f7715a1c271a7311cbc29b705576bdcb5712a4e29d72d29ebf6ecde6e974157", +"T2T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "61c1ef338867ac7ee172973901cd23fe00cc3ceeb4622aec7eb8a2ec9629ffcd", +"T2T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "536856de9b23fe8fc4f7272ad0e61adbccb1e4bb0ada4764cd5f12c6c1a41af3", +"T2T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ba1313c76d0cf209ee0edf98e42ce854517dafa8f0c992a9ca63aa263a91c84a", +"T2T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "49706bd15e32def385fbe0fc9ad76c5ff80bb341e339b58e771e7b1c91fe799a", +"T2T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8de78dcc1542f3444cb3b407b323d989aeb7382c843fdeea1ce4712aa15e690d", +"T2T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b8aea83d6135a2ed8c3a2c9e0987a04022c33d9aaa2c05ee408f247eb755b5bd", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "04b5a1334d414347e42ca16e7ddfe742298797da986192547e8ba9c2f5c7c76d", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "addf23207b7acdc4c2d1d0fa6848baaf6a3f38078c9800cbbd407d9a5dd79099", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "364933b7d01036d2e5e94e8e35f6a6bc0227e2059ab8d9e32bc87d4f9ecd221e", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "ad3a8d46bcbea5c643577ab4aab33f2b8ffa3eaf2dd36c839bf99de1cdafd6d9", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f0e7b2ec1cc08d822b08efaea581438cea32e0788a66ee93e91f217a891184aa", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "df51ff40b7aa167dbfaaed64f2b5040639ea8872d18c8bb808e7dac29bc5bf75", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "600b9c584ce6502d56ca6689e869bbe315e4785d31efecd7e630a4353a3707e5", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5174aff232a2d90d344f0f5f628b260faddb5a35821bcfb99af178e0635b4310", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "766d7349fb614d7ae03f59a5d432d2a182911666f14bd7f607bf5b0af93cdf18", +"T2T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "68c233f18e9f1eafa38f4eddcb74e70291d61a1d81be412a6f14ffd2496b9121", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0c248b63da04850d728a1d4d7d1daa00adf426389165754e335dddd158105e9c", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "9166f459237be52b8d72e0c5c4bb319a603f9afa8910cea657792c50cb356ffe", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a4004fa8c11af343dbbf5dc4560c1c2d5d1307f6845871f5598ee52a303283a4", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "2e104f60bea3f6d67a1de14b251245c38f6bfbd199fd49d751aa80b2254668a0", +"T2T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "54f1e6038e3ecd1fc13068ebd4f30fcd4aae2ffeb7324f8e46ac745c87aaaeb3", "T2T1_de_bitcoin-test_verifymessage.py::test_message_grs": "794e2a8aee88ec640dc423ed1b7cf1b18041152a22271c59763a46aa16ee3220", "T2T1_de_bitcoin-test_verifymessage.py::test_message_long": "da7dc947d07c9bcf8201efb4dec7930b747ff6ce93031e4bdc348f8eb8200f59", "T2T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "284c3aacbe52c95befc6064748c9bcbd731a1e59e478afd33504ed4f322dc691", @@ -10014,9 +10035,9 @@ "T2T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d4e2bacfda8855d67aa7334bbe59d7ba5174731bb765397f8eb01b4189208e6d", "T2T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "1e3597dbd248adfbbec4cba3ad1abf05953e175b254e555b8695ccd48dffab8f", "T2T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d819b0af50daef38f14f8a60f762340b5f06befe6835d652fe7241ac0a44fee0", -"T2T1_de_bitcoin-test_zcash.py::test_external_presigned": "47d5ec5a4cf12907681a5146b1390c88ec41c6f37eaa76fc663018ee5357df66", -"T2T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c6924460d75b6146354d13bf69a6f7513b85b36e6317d94aab2d38a4225f2ac5", -"T2T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "3206716a48a02a13132918c3fb229b8aa856b0eeb8e8cea2ffc91bca2b100321", +"T2T1_de_bitcoin-test_zcash.py::test_external_presigned": "92d56b3396d2c9376b80b2ed14e367cb5596a4a34c78ac14d8faf8b3063a5110", +"T2T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5d2f90e5fbd79dfa1156f0b238f34d0176818477b0559e739ff179c7ff8fe61e", +"T2T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "09a4d848d72734193a9e86077565c40b487656e1d9761a0371b13dae4186c4f2", "T2T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "f74f552c0d8dc532164d53e5f46b9bf433dc20295b01e0e51dfeef0c4b64e4bf", @@ -10137,249 +10158,249 @@ "T2T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "73f3e0ce053a75d8e3b908660ba999d411f56ffe391eadbd3d623d47aca54bb0", "T2T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cc6ce7065cc13995795876e91dee61100a3d95ad58832762064b659fe75753ce", "T2T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "43620c115f5f889f96729b6c6eb4d2016519a8cabc7dcbac48ccde3a60275949", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "041a0a33d745ebd99add8caedd083fe0c53a65f72b6a47e1b77c29ab5b369179", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "e591d65e40c5db772aa4cb7db38f42e5a1386e40a09cc46d0c440761e485314e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "ed37950b5655ff097c5b806df3f95eb8fc2e629db2c37674eeaa755299016b16", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "48a6777d19cf8aa67261ae8d8466ca2bd76e762ae5ba547bdb21ea4a162bc7f6", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "7c2873d41e445af9541cc647a6f7c1d8e27e2cc411dfa9e73ddbc429ed7397a3", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "cd4df7664a391837ad62fd05f06651e5449dfbc44fbacb7b1a849b7747a1c7ed", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "efd955926946fa1b108c59bb6d11edb37b39b5ab32008def77d49a46a557f1df", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "0542a4339623b0fdeddc1d431fc28a1d1d23fd4e2e809d6ef800fbe79eb076c1", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "0a4edc6de7e4b637f094befd9261e62635b6747dbff220888c7b679b965f0b3e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "4474505f79c927bc5f349974b5af5e1355117a1935f510ae0b8024cb944c5ad7", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "2d154d0776929b3b2a77cc3a78b2904fa88dfdc1ed06403007c6ccd1a0b4d585", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "ba664e94da52701f75f81227594235380818e9dff0323a16e61ad0c652c44694", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "ba664e94da52701f75f81227594235380818e9dff0323a16e61ad0c652c44694", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "8d15866cb1fdeeb3cbee24ccda8c95b0aea6625268c6ec8ea0a294f814777e5c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "3cf1508f4f4dc4e517e69c0af17541d27e8ada6a9faefa7841efd6611f369ccf", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "64d71cf5fb65f1289e31c1c5b1dfa77e25cc7cdeeb7e1e3738d44b58ac9e7397", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "2891867f653b18ba138c12d33593d8de560f81fa8caf78a60095c1d006e13468", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "d1e7ad3f7ea15159ff3833aa9b621be9e9ef390d341c53ec7d2f039e4a915100", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "89a83288b2a442d4f3dab84082621332e95634df17c26f18c7936db35384a543", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "ee984a626687a4d8921f072efd336ac5941850d2c8a790c1dabd9c8f612d3bd4", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1451071846089ae64f2714aa7014e29e54acdbb31e80b1a15a4b53c768dbe055", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "0631ac1d882eebd9baff9d37921329c6c03e72ef355f3657f9cc9a7f4068e152", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "d1e7ad3f7ea15159ff3833aa9b621be9e9ef390d341c53ec7d2f039e4a915100", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "89a83288b2a442d4f3dab84082621332e95634df17c26f18c7936db35384a543", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "17525b20f12f8555e86e4afc2c86cb5ffe253bf83b2d4c91a543603c96af1bf2", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "5c8745ae115f6a747c96acdf8a2d8a77489182f9c16c83175b9d0936bdc8c81d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "3fa912f848b794901d3cb3e205171aebf7ff1484cd190492720443219386d5a5", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "1b1bb66f4375e146ebf01d66f30e76a9937dc9b6f5d97ea7582f6085e70bdbf1", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "ef2d0148f5c09e351346967ce75d6242b0be27810b70ea20d48c164d3e047570", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "877b79fecf3772dcde31da1dcabcced62a2ed7f7b7d21eb3c42afec35c3f9e63", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "2019f098c70a9f68dd4be9f301fb732697b1b94eb45d1c51845e547e5caf303c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "6977afea08e22cf7b91420cce13b4e3c4198c4bd2acad02e0df0094cd4c6751f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "390f44730733db573dac809dd273b9ec562a6f1a863aa09703a9d640476adb65", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d68cab03d2003c4b6fb4ac3f3dc67bca20df41195274e5d9f12571cdedd384ce", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "55779fc60c0b4d693342e73b26ebed0e1123f08ccece770cf09076025c3a428b", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2a1a05c5fc75a7ff9bd7685ac42a591d8084430ba5d343a03f1be160c73219a2", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "730e79dc433f0cd043722e63b77af24dc98a0a59dfcabad85996ae57dad7c694", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "347fc5a9d8ebd1da61f3e62f6a5cf0121cc0a1a7e4db1032390eab8ac2313dd2", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4f8d4c3102e3383bfaf783265a14f8011af22f935fecfe2c9f1f4b63af2a143e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "532bf546961e44439ff9ff22f64c232ee641f98756b827775e7eb3dca1295ba3", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "005fbde396ae1cea7983b9dc3c5aefae04e453865ef68184cf0d8266c0a2ada6", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4bae0b0afe7e44c7711dc77add1595e3f4b5fd255edfb1f4c9a50e2586c4f8db", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "5cbe34032d26d60847956cf0eb7510b238344b90b56fa95c64e5e983d7f2f70e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "29ba78298def845d834c050971d7473771d9970bf36501c53c9fe6d9e9ed7bf5", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "7a5a7d7a5ee295237fa523d49c4cbcc5a6382c239a8bcce0e71758bd23ab453d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "c73e1c5bfd948b75c6a86fc3c1b1a148637619dc73fd45877294cdad05ad5319", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "19e110ca23ffc4116bcffa90f6e3163493be3bab3080c792163f7b6249549b43", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "65b75e7134fe05e5f5830043c822a432af105386e6c185b4b37fbbc489d3f029", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "d184fdc47a5994c893ad7c592926eb447863d710c3ab450dbe7da64c1e16ddac", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "e5db2e0addf81a8c4ddc14930a2c467b47d0943f2d9561556d569a49246525d1", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "83cd404c2435bebc7588327bd86ea18820d95b54b69e251e431aeed234db278f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "f2acf2b2c5557f1fad5b120abe3166d5c3753f171d86df3ee75664410f1bf82d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "d7495f06dbaa2daf966e56f815ee65b9afb11f090a94cd544f9db4c781206779", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "2008aa2a191c63acdfcafb3a525cfe99dde79e004240a45b09973e42d6f33ea7", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "072317f2154787426e373e48c40170bffc7da2c1c36ce1cf4a13e6c7be020cfb", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "7a97b9e9827d300096b94fdb27eab1637845018a351778d8bbd42c102e011d1c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "22d4e313cf4a86e484f06da48a669263f1a2f10c40b8e22587e3d914c37dfde7", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "002dcb75ed6699b92d288341a72100586bbaf69a319ee8bd86fe1821a29e4426", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b4a2fbe66d1c5e7d92e313f32e5b1e94c3ac94dc7d65fdd2b3a02b3b3acf7738", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "e9a66d138213991d2d34828c9522f24be77ad90f09785dff5f42a653653ee218", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7b89264a1b042362f86474ab096073bfad5a07f069feb98ec72bb26efc8a2f4d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f8941a26a327c991752de2238e4c103a21b755f617337fbe8b11ddc334677832", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e53e0afa61c8446aaded58917bc6e64786c36aaeb9573dfab3793aeb15cad133", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "11dc1f631bc2e8f6fa5a112d7716b18639d362e0e682a7829536c483772b7827", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d67a308fb7fb1d971745d04ee590f8ac21d2c4bc7c78443bf4d80123f6906ce8", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "21d776810e67512d955c35febb0ccea8fc6bc9fdf3f7746e10f7289cbd44f54e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "69fccf7e116a0fa25a53a84ff5b531db27a8286d5840b4d0d25e8797496bfc9a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "b03c9305755ac0525b54ded4afdd477f2566db72a46105888ebe1e35ae2cf921", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e5f2056bbc971f34f00faf8df216ddeea2f5832e6f9093e1cf631fead397ad6e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "d04b543a48aff742ed8d2c3fb540ffc83d9d9eb3447fa2ca63fe0b0780ec90cf", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2983e4c991ef11252f2d19fe56a8453e2900976a1395b27620c7ceb892649161", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2983e4c991ef11252f2d19fe56a8453e2900976a1395b27620c7ceb892649161", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "3beddcd3405a4f62a38a99d6aaccef7c59835297d1978d504d524b58c3928539", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "136db55fbe219bc9ceed471c46fc1ee62b745d8d4276feda5859a8060bdae922", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "948080e08f0b74aa0dcc6098cab5b58562a4cce7baef7806f52bdb890d25d0a5", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "3efdf0c95f9b8159c342092da6f99e235aaadc94fa98afc52a1fce1af9bb34b3", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ca6af6800ad9ad1d1c94fd98f0d7ef10af8485c3aa4b7794f6e18b2cd291121a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "78a36ef078a263aa9e99961b4352120d2c14342da9d466b9f7b36babf4fc97a6", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "d61fc7e221496c19b6c342dd9176ff15814eac42ceebac0446b2e5db8bafc737", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "2ac918e3f91a292ca1b6daa9b8288553d26f7294f4eb98967c16c414b6665412", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "3d06387484b8a6d48d49845e5c7e747cdb305fb137ef6acf22142b55b64fc674", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "041a0a33d745ebd99add8caedd083fe0c53a65f72b6a47e1b77c29ab5b369179", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "efd955926946fa1b108c59bb6d11edb37b39b5ab32008def77d49a46a557f1df", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "b054a957f52dd3269b3120581e586263b570b0430f853ababec0e1aaef9993f1", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0606502a11893dc5b8298459b3e4922da1814beb8c0f14a906ac2b9df582a108", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "843aa587aff1c5c148e48f8d1b85d0b9dbd7704d58bebe599ef234654b205353", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f25fc78c79fa20d6b7f35156041c548252fdbe59ab535527bd99e3ced14d492d", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "64258d1fa2acc749eea0362a084c57fe13192ade175453c7b3e48528d4006be8", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e9c532cdf3f8076669544042b53fb50e764244a3d2dfd097e37196021ff8cb55", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "f35fbab88a59f37766fbedc1191496759adbdad7e215209123b24e440b499944", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1feceefd6de52fc86a4bad2b4ebee669defc38e2c6e05c88bcb7f62de98b69d4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "f6006832676ddb3373e340b2c6c645aca97a72c0ffb6bdbd182b527b9f2ff7ff", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "865412a2a8974722d9e01cbd177aeca8daeabb6fc22026681340ad2b7b5e2535", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "bb3fd8fd7e003e6e52cbc2b1c1d16a107c9d71bba90992cdbdb68e9a296bd79c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "4bf60e2a8281204428ca35f268a2a954670bff7fb0fc421f3d5645328a545f76", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "4bf60e2a8281204428ca35f268a2a954670bff7fb0fc421f3d5645328a545f76", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2c012d29c4db42bdc8a1444fd4e38e45bb99439b4e1f0cfc128276a4900eeaef", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "db8258f552a8c64f5f5ce19658c35dda5661333197a15c57f614768b9d75fc82", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "56f99ca0d6e05a573d9c6265d93adb7fb44b557201dbca6c92c209e999838ca8", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "36a0308982a16dee509fe2b74151df4a055ed373b3b8773e88509a1f57077186", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "e242e5370ceafa7c0661aed2f52224cf698254abf0a25a67afad522bdc5e527c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "593a39f7bef9f70f15c81f1e2f71b915f5f01355f8ee61880acf1d8877b7afc9", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "eebb09b55cb0678fb02910c0070525dd55d0d509b2450e852d324329f3bf5335", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "2a1790567bb39cfb005824a0c07298f174d04e0caadd01dd8002e08fccd8ca6e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a410cccf889fd7ef07ee8a696342b2bd9d2795b9ce13ff9ff8db31c8fb891d66", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "e242e5370ceafa7c0661aed2f52224cf698254abf0a25a67afad522bdc5e527c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "593a39f7bef9f70f15c81f1e2f71b915f5f01355f8ee61880acf1d8877b7afc9", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "417ad01a00a1fba45f4ae59b96c1e5d063208d6fd0bbae0cf233f4f82d343566", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "82a7dd3a5593b4f59b6b9f62c3e3c58e18104a535378d40297eafbd3c7dbdacc", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d4b1289c74481dcd80a19e021fc19bc1062cf0b4e1d0e535af5a588ae5538cc6", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "62e9285da00900b18bd24a7758d014a9546847423839114aebee34706f8f7c8e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "5d6ea172721675c8de6c76915c9798a6cb434d2cb830b1581e2949cce8852375", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "8522dba76be7a999f1516f4ac257dd49c3a567782cd8be238a8472683a8d6b80", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "36a3f22f7ad5c77eaf248b2c3a853bc7cdaa7e515fb2f5229bcf35ba1dace7d2", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f0d67a6a4bb9d3ac35d9fe473e0684b835434426ec92d7a2bcf1fc48d197705a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "e2ebed2c337a7fe0aab1c350510b172d635314fd0bbec52e7c168ae38d9431c0", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a4f4d0581f7ac773ea3a3d9e31760d3977d314f7a9921344be1d44c79a8c299b", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "12c3e6bafb34b2480169a243082496b65fdfc5c1e44f32cb3dcf65aa05152e3f", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a9f2cb26fa79b92849df8707a9bb2503c835bf48bb5a8f3cd5ba947ed0014f30", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab47e2f22a59b5587507c4ad7934fa701dd1f60b429b3a9ee55a5d2daaecbfc", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "780cdf960ce08061c9e224b598ad0d6228d00dfcc4d814bcf1eb25ed95aa557f", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "04ceb103ea2e5b4936a6c93e20daf155da026d823fa0dc14789943f5b5dca824", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "aba5014dd11fda262154fab699a7bd06fa211763ba9d4f5c11f7c37c76bc70b4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "d3fc7103c30f537615b9afa3ef3c05c8dd8b83066cf779048ed29744af598d36", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7fd364614a400ab839e69155ee1d9992737c929f2ee10555c27558138f38d016", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "f534f5c6d035a82344b31b6b1decb32b99da6aa2292a1e6302deea28456dbdc0", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e9c3f3f501bdae1d308d74f7bbd82944182fa0ed8187b8d7069e54919ce057a4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "5d09570aafb60a57919bfef29a85ba58915046ec1d080de0f56fd50d0e6d41bc", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "618625453aba2154f7ea1bd661be18a1c68bf5901e98e7bebe30cd4fca58ced2", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "b4de8680ae69d8a53b25005c84fca31d0a306e48150940e641f591c5c5e3daaa", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "27e020e46635d1464f48449df085a038f2d329421c6c8e8ede5db7e6e3a9db86", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "97b55d91993c93437d047af0e2ca33e8b8e52c6fb98d7c79d7c69325044ffcc6", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6a4a0020fc453b97c7d999268f040b15780157ff0436771bfb20a366af10e64f", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "c0bb94c52dc43301d6fa8fff845a1f22ba15a52b93ddd9bd8aedf2ada9888ac7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "3ff3d24cf9fac2e85734ddf1464fe302b431fefdf356bd75ffd57b3602af0c3d", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "27963fce76b9585163e3c2be4b350d3c5147da9f1f727d04fb5a48376b28f99c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "6b165bf3bbc3775286c21047e3b649571168a7c7c902115cee024c436be2fbf1", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "359b51f73a256f9e5b3ff6edc46bc9836356e2d9b51fca2520cdb44501b81da2", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "31ef04e8cc1654ba1d4c5a27fabbab86209b7daf0f13cb733342569dffedb33c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a6e2b2558438fbbeead3bbf0b482a30b6ff9d551aa9227d0b291746909f19da9", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c217b799c252aa8d772cd4b5bfa820bf26c45b4a3b9bea3c0f41e8542abfc9d3", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6c29a9e0b33f14d8549d9635e38c8ff13b1cf4bae7bd36319d28bf0f28790954", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6a3dedfefa16c32ce6a1fe470d271645ba08e4e4ad8552857095fcfa5183283b", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "1592544e84850950f1fe7ae4b073c682c63130d35ad6ed5bb879b4e972407ab3", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d3c8b242994ca11848eec3ed77daaacb81fa0ee4853f382565ed9a751f16fa91", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ecfa2df89098af4a37a9b5b2fca2f309e168955b580101c8c4e8a349092faa98", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "13e32dae83494fc5e3bd41ea07600baf418bf6153f06a50c97702ef5623f31d1", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "066507d14abd8f7b6cbffab1b6c3d0c60716887e47b4a1b2115b9a26c44ed08b", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9f985619d4e544dc52b4af43a52fcc259b01235f44ddb1882731b993284a64b5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b6fe22230ff6ee382ddbe8aeb2489c566db47b18082b46377f33e7d0aeaa8512", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "63b341a969ee8579b716adc52b15c31c7fb200790a080eb6d8ed304a688ab417", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a566cb44245067a3f8ac87803372c8c8126c7ec8dfd8d945c94918cc9184a9f0", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "7a89ba6ffc292d0166bddd8a8befc9a675d2f2cbba057626557d64faaba0e22c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0dd147f2f280c224527ad52882b8d6c2f44382b81af417cf02ecff758d3b7713", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "6f974fc9c853074bfe1e7db7eb979eba884cbc857e66a45dc5c74216081ddccf", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "01ed44300e8a4b4d9f28537cf6c69c113b469389dad486e6a78e14dfc6c34f82", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "10baf4ac0869f9989a308eac8ba654dfede21542c93a8e17ff51faaa3b3fd19f", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "a936cf9d036d80143b52c05cfe88d24f267a3be0f8fc9220b7f3ce37397930f3", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "7cf168d2a7d6ea16baad7f8b4b210f8aeb4b37e4f2462ead5eb4775434555631", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8343e398bcf2a5db99fd1c425d8482213468137e485980dbb367a5dc1cb0980c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "b054a957f52dd3269b3120581e586263b570b0430f853ababec0e1aaef9993f1", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "f35fbab88a59f37766fbedc1191496759adbdad7e215209123b24e440b499944", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f8454c1cbdc953c4da33d6ee9dbcae806fce307d0ead5d970518d735ef17b66a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "6cb35194eda9a3215d741783a5274e896e954231742886d2a37281323d23a8c0", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "160f80ed1992a95ff3041fa5634f67842fc91d827bc50f565c19f679eaeca79c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "a078f52a8df5f3c6f3d0445115cf69ee3c838a12c09e679473be591e6caa6c29", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "9411558671f75483c6c52e59a0f7722adb1a9b803502057675971ad88ccd23f8", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "b6a5c56df3e7682ad7aa171d749797578a1ede0ec721fa121f521c51d71a6142", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "445ec696bf998b24298985f0d06ea2d6c898fcf9ebbeee8ee40757b387bac845", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "57fed81c395ba294b9faddc82beda4899f2e7c730ca63a08bba3a82aae4f0a04", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "a55212b23c7bcecea60d5f8eb93930fa026d1e32c6e2a9dc1f668961f7e8543c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "3f5e79b4d60361bfdd800df2252f0cdb78ef5dc6dc85142340b38dbb1e4c2004", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "9144a3cb537340b6605f8ff73e9acade4d4ce3514b2d907829cb865424901b4b", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "f78b8e0172d7c28d1b275130f2b04f313a508e142678ed830847fcd12446f307", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "39e7332bdd2ed8a75837a5f0a74758a7f0dedd9b607bdc3d8c7118a946c18522", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "a17dddade9d9ad05921879c628186d61ee250976dc9ebaa7eea67850d0b00478", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "57fed81c395ba294b9faddc82beda4899f2e7c730ca63a08bba3a82aae4f0a04", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "6c3c1ccdb4d79e461a366994d6b36d0bf9199e72e8799adc61eaf9e2c2c02d4b", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "e9a76ad0db7de94e6b9e5409f766d1aa66d602fc3016938e1ca2618bc19056b0", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "d756feffe41d65fc1cee51a23b51307ce8d6a779c464768d68a7bcff90be19ad", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "8f3e817596b82a52d52fd631e0e8448aa7d4506bf1a4825e499611c99a653b08", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "2f23b4346328a408d6be3d57b513830658659cab5c51a02e67d2079de7e754ad", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b063a8610392b38587e09f5340fc41d34d576c88224c02fbb9e98367b5c0145a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e68172881697136c505b7ed1a1693b2754e9e20443b230a88cb7596d1631ab56", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "3f5e79b4d60361bfdd800df2252f0cdb78ef5dc6dc85142340b38dbb1e4c2004", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "eb5e56f443bff116658df158732b11a429aa447c92bfc926857cfc01d0fb54db", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "55d077dc754613258d8b4910d78795b348f36c1bb46c7c003e76b8354c6d5b5e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "06e18c96b99157a50afd5cb17ea41e5ed2f32c8ccf9ea29d978d2c309827ea06", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "0683ab79507399b3706f0209a8b4ed4280a5b83f9fcec3716802304883bbfe5e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "f618926694f9e6e6aa32dd843cc14abac26ae8acc2b3343d3f339234df4a86c5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "571199ee2776a23496f951f674fbe258accd9ded59b8b8d3acc2312edc346652", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "677ee15dec8df0b5bca641d1885b0b45d169d4161dfbbbc0f0ed6a5d6e945e2b", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "630ff9863be4de9c028a1dc692b4111a4e2858859d9453c16dc9d23198a329f9", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "bcc69655c82268c54cf654c461810e7e636358d60d4cf43b77698620930481ac", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "462f1752be04edec00c5318135d07b857c1c6173cd77067742075e806353825a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "5cd2a62303f8801e7ce7ae587d2bc262e30124b3588cd1a17c12fbfc5079892d", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "9a839dff8d5d60739ec3f765e021ae326b0ce68938ac3a3e814bd5f15e598882", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "6085ba93e0dfdd3e654cda072ecb3590ad5f4d164ca49d2cd07a8d34091c9c3e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a48a99c801f0ded61ea85c781bc01948c4ae74275d2bf142b82fa54a574239bc", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "b74d312a39ac2cd3f38f0ca20f62fb715d593fff9a978951f1a30b4612fcc5f5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "b4522913d68352271d4e3a773532bda74423fc03916bc8ce04d59677a4c8e8f9", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ffe9e10dbbc4732460ac100456b3e847efc91f8932b46d5144a29ba2144490d8", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "08ec5e552b2ec78e6730e3f547cd08d4dcbb995381ec5ffdc990577e11653fba", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1772e5f040f00c94f9f2573a1f05b460d4af45e143277a064af8a2481f775894", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "8ade078974aba76f722a3b9b2a5a320c053f434202114bfb5a31cd1fecef496f", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "55dc33fecb3e805ff107e19daeb1976ad01ba0158f56134a9a00ffeb8afbcab9", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "38fa3ea83e611e4cac24d118fe4f6406630ee5c33dd373f807f583a635bc377a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "7b697fce266eb0026514de535c69175067d9ae3df71f00a0bee148a33ef2cbb7", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "4659ddcdf32a47ae6638d0afdd926311595ad6a1d31d67c9260e0eb9188e5211", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "853ca8b8828eebe06456b90daee8077a6fa998f705f51b474d06c97020fdf01a", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "4c594d4d30f4ea47410fa0fa883d1e6b7ed29b18f5be9b5cb2f5dcb411923d2e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "5ddcd7c2927a57283b1f04c462c588d58bfe8d55dad611be0dfd756a37085cd3", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "e3d4fe19e3339a7c0d67fcf8ab3fa5803a8bd24e7ed68832d0bee0e027632924", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "a885585d69b1b84151bb0fa3bad99efadfadd6268cd45bf2f1829bb4edc667d6", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6d190a7d38313b79166a7be339700a8a0ab1639655e76a2ddb59d268bafcdbbc", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "16b6bb58a991faa0dad73e944fd99eeb213f67df7bc5a22a91d9654aa808c693", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d8f70d5fc664dd8e456d33a956513a3a24605846ee449d91d70d73dab5659b89", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c4eadd3db005b1637111c82ec982580e0f24da9293a82067dce02eb4a821b646", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "f8400f5d8297a4fd985c46f04092db103ab3704a4c1b256c5923183dc5981c44", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "ae726c09b8f293fd723944642919af7e2908e6651f453157538ba23b17667def", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "82c31ded543a593fc91a27f85dd232a15a032bbb178a22702171e8e805897227", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "8d894a2beb111300bf77cbac8c605fc081bd1477f89e38c9877a019e2b07d7d1", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "4879ba95cefc82f2be2a802c165f604c65c8ddda831d1013a25ef93cf4fdffb2", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "7793102d055a49f7da67a453f7e834ec4a725deb59d91dd5fa43d5404facb8e5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "9d4e2a30080b1ce7f44a7cdf2eb38b109ff9a8a2b4299e70b39ba535dd184f2a", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "8992e483e803c3ca7dbd2a082b4c5be8b1ecb22ff69e5c9166c73acd5e3f7f86", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "abf3a2da2bba8d1a97503757eec6614dc5182318850cbd7f65cc0f8e39d89701", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "c145106fa59bcb619ab00309ffd08c57ba98cbabf837cfdc7eda1ae742835cd7", "T2T1_de_eos-test_get_public_key.py::test_eos_get_public_key": "cc02031e72ecb08b8094fba03179f19ed505ef5c488e2cd98f1e1d874db8dc87", "T2T1_de_eos-test_signtx.py::test_eos_signtx_buyram": "91e5138759d3528a751f8277c1683ca612b15d0dc40641aa26e37c45a42f3df1", "T2T1_de_eos-test_signtx.py::test_eos_signtx_buyrambytes": "738bec61d6a235b7898b1e9d1d723efb5edace72ba8203d97ea4bf10adf7b451", "T2T1_de_eos-test_signtx.py::test_eos_signtx_delegate": "c020a2cd0e0ba53a13ab1ec531d990c97410033b55a4389a9c2d8d2891959430", -"T2T1_de_eos-test_signtx.py::test_eos_signtx_deleteauth": "dbbd00fbd4ebd13124216be28d6cf2a42b1b2b8e62038927b8d34bd59a572bc8", -"T2T1_de_eos-test_signtx.py::test_eos_signtx_linkauth": "0a5d340a85957277360be43317f1bd36906c4dfa7a7b1f628bf11e5263928e8c", +"T2T1_de_eos-test_signtx.py::test_eos_signtx_deleteauth": "ab076b223f77d9bf27cf209ace70bbfe8c39408dd43605e4a8d29753c85fbcdf", +"T2T1_de_eos-test_signtx.py::test_eos_signtx_linkauth": "a195fdd2f5caeb054523f02e61c3b2e83227dcde2ed71cb7a4d45226ca4e5046", "T2T1_de_eos-test_signtx.py::test_eos_signtx_newaccount": "a3b694211ec1faff2595794a0f351e9db500f50628169df645358e74a9d00203", -"T2T1_de_eos-test_signtx.py::test_eos_signtx_refund": "a9a242da72be7f7289c1616c88868e2af9a36107d987fa8d94222649c1734ae8", +"T2T1_de_eos-test_signtx.py::test_eos_signtx_refund": "cef2a8a67c3c09afb6e01e52891bcb5d3243fe97387e82b48e9b14de42703f81", "T2T1_de_eos-test_signtx.py::test_eos_signtx_sellram": "05ee3379f8b72de0b99d89d99746e0426af42dba63d80c0ba4fa2022f9e9d612", "T2T1_de_eos-test_signtx.py::test_eos_signtx_setcontract": "f69dfe96bb84f693e412ccabe47977af7762aa1b0109138033db54c26223f75d", "T2T1_de_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "8128b14cf3c9b8620dca95ed2769d0a82c4cb42f7aaff7f1c54bafba7eb84d93", "T2T1_de_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "8128b14cf3c9b8620dca95ed2769d0a82c4cb42f7aaff7f1c54bafba7eb84d93", "T2T1_de_eos-test_signtx.py::test_eos_signtx_undelegate": "0f24643d9b9b34021eb1265087fa67dded36a764d10f9740c7fa89bf7a047176", "T2T1_de_eos-test_signtx.py::test_eos_signtx_unknown": "438868a905d24e5ab706f4bf5e096097bfd98931ba890b4f53e56b1a0b3c5834", -"T2T1_de_eos-test_signtx.py::test_eos_signtx_unlinkauth": "b93d138b20becd1ee17f8fa86eea77de2f46dd0e947ea2a0ba0b34a888b02d46", +"T2T1_de_eos-test_signtx.py::test_eos_signtx_unlinkauth": "e8aa329f5d2f70609ba08aa353ed8a5f636818790641bb4b08fd266afa03a4ff", "T2T1_de_eos-test_signtx.py::test_eos_signtx_updateauth": "bd4a1ed0ed0867563634fc005117ab71cc6340719b5c8bf00664844f013a8e0a", -"T2T1_de_eos-test_signtx.py::test_eos_signtx_vote": "631c3621b841ceee9587baa1c648976bb81bed65f83a5df1e3b0b62e87ba06fd", +"T2T1_de_eos-test_signtx.py::test_eos_signtx_vote": "52107bad09c4e492fe03eed1c1d5b3e6dc1fd1d25df1718be85179ca0ba138c5", "T2T1_de_eos-test_signtx.py::test_eos_signtx_vote_proxy": "e6eace9c80863276a30109f4b309e57fe1ae42ba53506c7e965c79b5db664ac8", -"T2T1_de_ethereum-test_definitions.py::test_builtin": "f374acafb8a41f528745fd7be7e78a4a239b5a73cae246d0531f39a501556d02", -"T2T1_de_ethereum-test_definitions.py::test_builtin_token": "5667f7e39290d3cc2051bd5fca59c03d46f3160c216dce359dd13752be336e9e", -"T2T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "e863f3dbb7d1f1dd0b7e2a60d8aa4122a5bce3b8820f614862ee634b6e0dbb07", +"T2T1_de_ethereum-test_definitions.py::test_builtin": "b70da6c9adb218cbc3849097089ec458dd631b69885f83e28b5f02dc7b684866", +"T2T1_de_ethereum-test_definitions.py::test_builtin_token": "75228e5605a3b56c1bb29451df86c64a0b174ef0d427cac4c6313078390068d5", +"T2T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "0b2e1e4474fcfdc2050b08fa4c61b3c04f72889172c0bba068a3cde4cf74d194", "T2T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0fa29d58d9f7ec7646bbb6391fdf4df3bec7f8ac3d913c459bae7d1038727741", -"T2T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "4730e056e64b2f31625073ba4a0d9fac628991eb8010bc7f8d2e86d536624bb4", -"T2T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "605fe69ec2546a7a3086bc9281d91ef1460088c5436a1dfc1073345ce3d8b77a", -"T2T1_de_ethereum-test_definitions.py::test_external_token": "6f65cf10515e6f9c4cbdadf55e3322a05052ab5dfd5aba2c5e0f7c9f8a3562ee", +"T2T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "2e6aab77dc8787158ce0f01b596ae6ff2dcf4fa5c713ffa47bdc55646eb15bd1", +"T2T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "78c25821c2f1abf04e077eb9ac540b09993be0bce6cefd1f9ed82890ceff8afe", +"T2T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "704e1c6f5f9384a2d26e11542b8753ad2d3d58a9071045d8d39c23ee27953576", +"T2T1_de_ethereum-test_definitions.py::test_external_token": "796ca5f04524fd4d5454c66f9e34a2d8bb681197adb8b064ef770ad2f057247f", "T2T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "22ffbc18cd0d9dbe960a51fbb816b316214ba2eebc777552601246e99410b296", "T2T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "e2fbe9d289f282bbfb9064e16a74d24a066ece5d2b38f59c29cd69a9d2753537", @@ -10393,7 +10414,7 @@ "T2T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_ethereum-test_definitions.py::test_slip44_external": "62b223ef96892c704c9da60cd1cceb285f05295ce50fb158a6840838a5975746", +"T2T1_de_ethereum-test_definitions.py::test_slip44_external": "2ceec1d13815a526b5446bd2e79399ab16e070c769f057fe9eb3effe1f3aaaee", "T2T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -10455,72 +10476,72 @@ "T2T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "22940fe01d52e95906f57298f36d8486fbb6bd9f9306db58051492654c135433", "T2T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "88e32223ecf12b1822bd0dc76c0d137eee41ccc9a095b1020e4f684ed81eabda", "T2T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "aa023fd6e81e15eff67f6e41961e1244be7883e6e01ee5bc6a56559fbc55c036", -"T2T1_de_ethereum-test_signtx.py::test_data_streaming": "ec2cb7af1be0d5964c3b7f0b4fc2de52a125bd628f46d473b978b32afa823d97", +"T2T1_de_ethereum-test_signtx.py::test_data_streaming": "5e2a8aa0da1a90817e75c04c915785a9c567b86059fad80c1f06fd146af81f54", "T2T1_de_ethereum-test_signtx.py::test_sanity_checks": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "624b6b046d9439cbdf0ad645bee350b67548d7d75c9c151034b06196b6ed9119", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "6ae340267193af2eaed11b544099f9de20a15eea07a79a142caa0c0b47509a42", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "51975dd30803ef2f4de938ddd26776a1eb27a984063bcabb8bd71b07584cd760", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "6ae340267193af2eaed11b544099f9de20a15eea07a79a142caa0c0b47509a42", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f6c65dd99732bc7912cd851920c818d841f10d886837b89404f23f9ae83d9605", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f6c65dd99732bc7912cd851920c818d841f10d886837b89404f23f9ae83d9605", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d45a56217ccfe6ac931698ad68a8534faea557e1d47c3700e27f1e59dde4ac53", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4d6a9c1d25c957712cf5433e5dc4862cc01e826be4eafabdafa2a687f2a3919f", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3f6fea2e0b70545fca3d4828305c86b0f2079c8a1cd2e3288b79e955c2f2bbf7", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "89874d121ef66cd0b751712a5c2e029cd25533e4a3f0b2dc553da52f36c2655e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e8640622a54881f2d297a46bd489cc11566ec920f7fc06ed83491b2d98e092e3", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "999bdb2b1a2488c46f1ab4436c3548f2e224ac7f0b34977b85ca750aa5c27b44", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "312f12d5cdf6d9744ab4a706c5a51c1f04b740239cf4f6437faa3d22823fe20c", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9b9091d25c58b712155c7a23aac093fcfab6c0f938f8e2890965faf7a85e07a9", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7a552c27d1c988550bdb521c35e57076d5add9bb0086bdd0f2314fa8473dd0c0", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9b9091d25c58b712155c7a23aac093fcfab6c0f938f8e2890965faf7a85e07a9", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "d23870c2909ffad7c7d59468780bac3b1ba6bd3df946a44b0371638793a26daf", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "d23870c2909ffad7c7d59468780bac3b1ba6bd3df946a44b0371638793a26daf", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "18de2948ee4b999250ab45d7cea552495b7a535076ac821ce07a188e51e819e8", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "29a02f935018938df1f6316311e02802f58a723a2e7f1a4066aaf2716c914b51", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "feb676830f8b7cea8141a43366d209cfcc1891be07d466ec5f8de8af048a2824", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "89874d121ef66cd0b751712a5c2e029cd25533e4a3f0b2dc553da52f36c2655e", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6e02ccbb8dc1183240efcae9990ce396c136722bf1488822152b2a9070753ace", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "349c744d42742380339d638b9ef7b20e9ea762b493c59f39159e71d33cf6fcb0", -"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "ab474bb787fd54d83ca068976c13011e8b1be2a17995b782471db2a32e56a287", -"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "2effbff7403ee4cdc0c8f199b49ebab92f6b84903a3e7dd0a611528bf2fad995", -"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "d3baa3345ea13d8961bab395996fb94dadeee85de3693a41b9b1ceeff44073d1", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d45a56217ccfe6ac931698ad68a8534faea557e1d47c3700e27f1e59dde4ac53", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "cde59ea7f5f34ed6207355f313988c1dec8ae060de050c6a89606b7845bc8810", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3f6fea2e0b70545fca3d4828305c86b0f2079c8a1cd2e3288b79e955c2f2bbf7", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "6b58eeadc416d0aedf48da5a51f6a149f01df33471ff8e5c690cd3c0fe4880f8", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "1e4972a02b0450024cc2306f393fc6940673088a4903f6300025460006da5d9d", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "18de2948ee4b999250ab45d7cea552495b7a535076ac821ce07a188e51e819e8", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "04b5bf9a8bacc901417e88a0d438938218cc9925bb95a573a9766acaf2015208", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "feb676830f8b7cea8141a43366d209cfcc1891be07d466ec5f8de8af048a2824", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "962e01eeed35b1ab00ad8a8b32ad2005f5353a77f2f29b45d0a2a0ac27a87aff", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "34e2796d80356525a60f8830bc677ac7b79ff57372d6b20945a7b118e189729c", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "1294c9e6487c849d0520ec876226f2d91034c8fbfea04b4fa1d4d1662b756f6d", -"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "1294c9e6487c849d0520ec876226f2d91034c8fbfea04b4fa1d4d1662b756f6d", -"T2T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "a6196664de6687a639589630e868377bfc7b53dd76b0897799b67e272fe9f91e", -"T2T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "c306905f34e62c5640b6834ebf9bf95aba69a7f024f9f8aa3bfd84678798aa63", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "3fd4d1a6ad31de4e513458d651a5e017a852a0ff73d21eae8b83dbfa3bef7374", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9b24333cad04e517540786994a66d51929e3c892fd2ccc6b48eef1ae5b8306a9", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "79cb8e765a790958c17cf5c50e7eabb043946f3cb5eda7bfe7d4295f811b856d", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9b24333cad04e517540786994a66d51929e3c892fd2ccc6b48eef1ae5b8306a9", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "ac03ac36e181810e3f88bbe9a6417ed201de7d8188841f8a686540701edff076", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "ac03ac36e181810e3f88bbe9a6417ed201de7d8188841f8a686540701edff076", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "bf46a2d0c525fae4e7c3a37c31b7a7ced8c22524ecf20ee3f56ae8c0a6d7c651", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "25a385c1909af11b02baf44864233922070f1b659023393a2f74a9b24c10085a", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1b7b5dd0f41842f283a08f7beb1b4c13ca36c58971393e57a2ffa9a6e9dc1b61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "bd7e1f86ef995eb89771ac388ed2e542a95503242b9bf2ff567c36f943dae427", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "c4d595412014d5c61a91a21947af6fb43a5a7df6a172bba681b6f22d3f37757a", +"T2T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "bda33c4fa45bdf36778cd153b64a564a0f807561d371674a5e46cc76fdc165b6", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "2da99e0aba69bcfc12a9ce3b3dafe96bdcf2cd2f5ba7394a8d7c9c3caf97132c", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ccaaa0ba67fafbc5fff1db2775156efb5f891e162a1ac981d2083d5e5593e544", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a43459ae1bf4b017dbe90956725a0319a6f9115fce6127085c45a8ed803f302e", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ccaaa0ba67fafbc5fff1db2775156efb5f891e162a1ac981d2083d5e5593e544", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "c505b2e84a72f486093491b637047df4a8a5ee42aa3d826e47c9f9245d80a95c", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "c505b2e84a72f486093491b637047df4a8a5ee42aa3d826e47c9f9245d80a95c", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "cebc4d3abfede9b91cd438941570e7f8f3ef00a4f1ad13ac8b59189a69297a69", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "e4e432aa05002758a152d2c80190814a87aadc054d8e9d28061c3fd976c1207c", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "a3748bcb168eb5d18e8055aa79fccff7b529b05591e9c8b4ab8a8e629ca30028", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "bd7e1f86ef995eb89771ac388ed2e542a95503242b9bf2ff567c36f943dae427", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b28490986eb38490a2a56b869f9005ffa4daa4010b1feab754e99a38a739052d", +"T2T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "afa544240be6df60987b88aa7400b5bb19e4b52e24a02c3b2b21399ec3a87324", +"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "5fb3fc6308b1baec801f9a6f6fec6559ae0a861a86d127d354495b01a356bb51", +"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c2b8cd6831543f6992f83114a4a5818aeda6eb38b0a6239998ac7e1951f357f4", +"T2T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "7fe9f8acc11ede4e7e412894431d7f2e5dd496fc90f8287eaa81d84c856ab983", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "bf46a2d0c525fae4e7c3a37c31b7a7ced8c22524ecf20ee3f56ae8c0a6d7c651", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "e90e11b07ab23f21fb69e04947bd99144bc182caaa84c8b276380dd6d90ef0f2", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1b7b5dd0f41842f283a08f7beb1b4c13ca36c58971393e57a2ffa9a6e9dc1b61", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "11055d2887b7d2b797d433eb0ae0938dcfb75091ef1d20eca41b3c01626d32b1", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4450a1b9eb04f1e7ba7b1ad9b09d9f23aa6d56c90a3b30929d4459cf62d4982b", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "cebc4d3abfede9b91cd438941570e7f8f3ef00a4f1ad13ac8b59189a69297a69", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "d20a2c180c95b0adec44331518d9ab44993394854f94e34766ef49642ee55366", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "a3748bcb168eb5d18e8055aa79fccff7b529b05591e9c8b4ab8a8e629ca30028", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c88bca75b897c148f89eb6e813f894b7fd0c6803e7776b87e9bb9e0ed7bd5b8c", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "222f8592da85ebde2758b30a58f896985dbfd6d6092a72f956fc8a7760dab53c", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", +"T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", +"T2T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "bfb1a60f5e0b0653197b821854fc97a16060edef3d3f3ecdb4125cc857d0798e", +"T2T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "e652ec974319b2822f3db8c45c4a884af507e8e2404676693e5efc1747a95373", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ebdef978bdcfff5d1bc3965685880252963bcb63cfbe73a29031768a5e16ef7a", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "3bdd24bd65fc730ce5c5b4de5a05be1772660efe20fafce9942a1cc274613e42", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "e35a186db3ff8927e5bf4d24501d8914f9aca42ed6c9ec642af0cda35a2fa4f9", @@ -10568,9 +10589,9 @@ "T2T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3238efe69c8ad351b921a769b5f5daf91b252f89c9d7c08e1cc7075ae7a67806", "T2T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "f028a400dad0eb049c42de8c5e7ba57bddd6881bb61c2c20594a54aed14ee849", "T2T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "c82e4e18f402534f17a7bc7949a432f3394ff9d4156c12b77d55c6d9bd9db744", -"T2T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "4f5a1b12f03b91fbd7dad2234c0b97063025c6874d09abbf05525d39719ab9d4", +"T2T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "0aba69a0e1bfb96e1525ee56fb0ec6b08b8655cb5163da70199ddd0aece751d7", "T2T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "48c2ebedd4ffab514df0e00929879bf0803b220ecb0f32363289c860395e540b", +"T2T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a91d34b541494aa36357fd0284b7d6a0de5044269f37271e3a3dd4692d3a69f9", "T2T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "d65949821bde4259451e86184e45a3a18453dbbf63487a825a7f686e05f67a19", "T2T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", @@ -10600,26 +10621,26 @@ "T2T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "5040445e0576597b7761850eec9da94f896ab9f71e2a1e3dc0f5485084708088", "T2T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "20c578e45dd3088e91cb1ed3af434a41fec92fb3259904d1d2997cec92c14fcf", "T2T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "97af2df0fadc828f537830ac0ca4954545937a820a53c5640eb3c19e41a6bfcf", -"T2T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "11bdfd310e9dbc8fb9ff251456c05863e6edf92e34b6174b0e53129fd4f34820", +"T2T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "15942a1eba92da5bbd904fc44f8c3d2ae1c8bbf28fa15e3615389e13806385e2", "T2T1_de_nem-test_getaddress.py::test_nem_getaddress[False]": "ad9949c1a3c85edba4c68a3a76d3e0ff0153b4b778ff4733699c4f39bae8efee", "T2T1_de_nem-test_getaddress.py::test_nem_getaddress[True]": "8b24c8aa75449813a2de67f603617f5530dd3090223d6637ba6091c5be8b983f", -"T2T1_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "b569d2646f0dfaae703d1953b39379aa07ea16e5a295219dffcbaa6c3154e3de", -"T2T1_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "c884d374d23fa2b6fe4fd427207df26c4ef26eacd0c41302ecb13475758a31ed", -"T2T1_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "bf852c2495c6f28db284de369971797dd0e45adc50ddb68571908c46247fc709", -"T2T1_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "401534539fc5b0817ab2ac14a940ec1b5aba4be541c011e0c4092d1717a7546b", -"T2T1_de_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "a258d95e4c615188fa2c93ac4b2c34a237c74994835de931bbff3aaaf1a8dc9c", -"T2T1_de_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "2216596956c880ffbf23349b28a7bb47286d260ecb2523be554d8687bf1fd951", -"T2T1_de_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "c911abd8ee162f5bdd012a1c00004ac90f96e18090abd068d7ffe06ca63e0e26", -"T2T1_de_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "158a5e10678edd09fceca8934b11ba7e1d556f8596b4682c5701640459dc38e9", -"T2T1_de_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "e31056a308ad219437f13eb5e64417c4a218c8fb554ae2fdc0142413162f44c9", -"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "537d026bfdc95c71990f3b56bd4d4e8852980debf035fa5357d9a9379580b848", -"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "4e13a9a359498b7f85e1ec3b9f58bd301aa9106825ef814e174f55db62804e49", -"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "c3341e2c6b81e5a1624944c947a5a0899091699dc813b6e183d512e0ecdbe3e4", -"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "50a1a4e6e859d61c29ffbb29a73e3cc4864a52862c55a8d45e91d03f46c73794", -"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "046f7b8e65140bbfb249ab22850f5d402e4de57fd0f78769ed123ab3d851b095", -"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "ec6224e85440207843462c36431c767a91058c580f717bbca6120df41b687236", -"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "bc478b94866583fc22f09e9b78abd6a89fd5812de2ba99e93c215ebec85b038d", -"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "b40232a61d75a6817321618cf9102ed54a069ef82264865f8c057fb63773f510", +"T2T1_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "cb6aa214c080f6018f9e749029c661d221d1c4582983d63bad16cfda79182f59", +"T2T1_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "1f48e46a5df6ddb33a8eb1889caeb02b63eb3221f82abf249d1ad119faf2c560", +"T2T1_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "fc87a6f4f62b29bd9fa4c205f5be1ccfe4e7a2e970fa83358c4c3466664834dc", +"T2T1_de_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "b9a1a304cd5f7f5a3cfb6e9dabd667099afe0a70c4c8ab1200d726f50afaee03", +"T2T1_de_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "61ba0d204ee9020b45e6408b44cce699569b328a01976e62e07bc7062968d077", +"T2T1_de_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "4826f5b5fbb7192c161ba82eb0e81a2403fc0654c0ca94511eaef067791cf5c6", +"T2T1_de_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "3cfc9d41f44ed565b3fdfb88ae69fb6880cb950176454126b1c25d40b6e3ca58", +"T2T1_de_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "36a3f21aee8cd7b77ecf18980212b7d32597e5986f44e6eceee5ff9e36015935", +"T2T1_de_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "82066dd70d04a9dae030646ac3c319083874d76c0d8d2f2dfeab366156087a21", +"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "6500bc2009178d7c5bbe81904a91616bca633fd857d18951f7b187cdd147d758", +"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "3edb34adc7dfca65b0924bcdc2279728be1c28d9d4d41250f855ee729b7a6547", +"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "354bd41bb55ee7cd94511a2a69623a33aacf9a35ccd7462300b8d6cdf6d8efc8", +"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "59af8c834574a65ac1d364d1d31ab476c95598e7c66eaba69b0a7462ab5841a1", +"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "98718a75a5d0a2c9b6f3459d8c0a8862edcf9607d64d013f428732fa4c9d153d", +"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "2620dd0114aa727f5045b4ac7453add1f13ff9ac108a4b3c36ee82927e0b85c9", +"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "cc2ed0941df6f4841934aca0cd6705936a85882a9a49042f7d51b972c3beb5e3", +"T2T1_de_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "fd36d24636c471833ed22e99b43a3dc6236119442b451cb4388c63a3bcc3604a", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -10682,8 +10703,8 @@ "T2T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "5a5d89e5341710b0826c836413d6ae5f4f2ad18df5d962729072c8e919f22cd3", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "18fabad57c607ff2e1b94a680cd352cc4fe59c941824ff22438aaaa7c55a34a8", -"T2T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "6d3c37f6b61be79f3b0c79102d6279439e773455366fb8f864f019712c500928", +"T2T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "ef952275069d3abe27a3cc39d7dc4f62a8858ba42aa5e505ada0856c8edd50c4", +"T2T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5bc4c4463b13dbff3291c422b26bc04622fea4ba2b3ca37334f81e4e7328b631", "T2T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bc97c35720be8a5daf9295b2034c3419e3cb23025f1e48024c10d46ac51a4752", "T2T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "ab011871ee4d822035f6a06c5119f570b77183967c14651dc957ded18b777af4", "T2T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "88635c3e8548603f28d7435ecd97126cd1cb590b6075d5473de435babc68de88", @@ -10695,7 +10716,7 @@ "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e3164dfa8681017f2e8bc7a189db4ed737a7229c3219d7c34726615fc82419fd", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "df6be7ba24364397973345c98859d19317a81defb0d0296c4b18072944d72ece", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "62801ea5bd2b156ee2525bc98e2344a370e0b61d12ac9e09d0441ae9ae003d8c", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "7fe07aa8313454d059498efd93bd5a5abf61cc773dd123ae1f9b5f18c3401633", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9eb37fe9411f94cbb8ed92fe5f83273094bebff0613bf343c1f2123bfc8b80e8", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d3b411ef7812bdc772c52c9deec850d45d9661f8a2dd183a7f1ee529e24b9bb6", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "f1c4b0c88df5e17c1681d68d32af42553ca135804efc9efa767c3bab26f306e0", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a396b0cb88e242855ae92ed8e51858d9a1ac81e3ee6149398e8567bb86274e4e", @@ -10704,25 +10725,25 @@ "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e61735df0804a4ff0ec36ed55512966d299e76360a38ce6c85ac7db9ac9c4ad0", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "36bc286316bc3ce0da2a032c61a7490ab25ac890fe4a72fbef46bd68e700ba73", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f422f7b653c558e1f0c29d28544af6580cbfa5b781c9fbff664f8cb3c2bf3450", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "21d37ca780902294c482d59b9bfe25bc61360f510c64a44d0580345f7f014619", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6792a50d11c19b47ce4bc41a0bf4ed04f1675dc0a628fe0e0096922e93ecf935", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b9336bedf22c34fa19d52131d96cabfeda605b3bb640fd08311ff940cf77b404", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "f311c7e7333be9eaaffcab89ec3d08c2b80814794f6c2fd4f98c0f6dcbf1f331", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "6bca6cd502f26827bb64346a1e3808ee154b2fac921c763f51fc0e06d85ecf14", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "8ecaa5444d8c85e7e819be08db2d460a4068f4ac996b3e70cd20e592043e4a3a", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "5285211605ea34fcfe701c5565edb0ad3d1630c55b23d66c6b98b7e7ca3ed2c4", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "960d881144aaf6e006f0a49cbbea5c71c701bb8d06b6f025fad8f9faa2715505", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "21591f532d5cf2609aca3d2fa53b86f04ea55758df68d9663c5e8f2d048f5f82", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "281bf1e082e7148dafc07425aec95a991f51e896ae5a1286d38e8e1ec0c51401", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "444f10176539fe1667b69ef2203eaf55ea373dc05cd0a2cc5a5476bfa7aa0a41", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d732a6bccf02c5e3f141346f8024eeff0087ecafaa9edfc86f060518cfdbafa5", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "491f7675532d5f62b3009932e42c0b131ade34d475829e573700b394fa0286da", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "65aa0fdd293ae3d4afe1558547c267472935537bad9ad1d0187f27bf04bf9191", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "7cd6f12b46ffdd0db1b295bfd2868609aca9eae0f770ff2c2fbfad121d1efb3d", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "3c546daefdf521ea98e4209482074f895eb66288b11bc4bd5fcf0fccca43b712", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "fc59b10e924d732485693dfd56b59ef2a78fd13ae202a42f75c70b47f50cfb74", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a0573a04f96dee00633d189d2a18cfef8caf06719f231311d59f6a90e1d84172", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "0330ee7b73eab93fa705184ba7a9ce65514556222ff65c3d40c3d698282cb232", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4c15c5bd3d33eb05e2cf2ba8432ce8aa38003975acf9c06e5eca0cdad419dc23", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5afbe96c3d008be0d14152e86d9fd382a1f809c14961e4e4850f938a19bfeffd", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "28be11d4366258c2e7196c2cf9502d40d457fd478a7252374c9df24f03e67ff2", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "48920f5c770e0f502c472f666e52b930c5b332aafbda26875801ecc56d1b303d", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "7acf010948324f7da7b4156756127291eb242b3a977289add2700329f898ca1e", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "2fc1df0c271c2ff3fba34c6de4aa46543adc3fef4c7af53b4ea350eab0ba0d10", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "944ba76db424e4a303b41043f14e26ec3a408f46384dd226a9aeb29d3648c09c", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8512dbcdad6c4099972de87a9703b887a8e0a1d699d11f5147db0ac4c8f94f2e", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "eb1f70f22b5998b39f545b4b224c44eb49f9646e4e5f95d04acfa88bfb120dcb", @@ -10733,27 +10754,27 @@ "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "cd4c24d302d9d0f903ae1672040d3bbe5848fb19cf2f1223bf81bfbf694430ae", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "76e8eac1fc01053b2af9a03cbf9991e3622ec92808a71fdc9a5697bbc03d08da", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "c18f700d5708d740c6a34b0936370853fd004832ae6a1bc1752ca8467e7242ab", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a181116fc0c2666dcea495441f57d2b33401b66d103dd24825e98a5388ec3b24", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "eddc66fc9b0e92ec4dec10122d745ea5afde175935744b98c1f3caebce2f1166", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "45ebf3563965765e816bf483f0953ad8547a8e99db18e68dcf0435c96a28daea", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "a06bd0ee40f357e30047b50dd6c33c293eba8dd07186f3881b822d4ff5585ba6", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8ee33c6326fd6d42713f5609c0bb4b8eed8d8f7974b8ac3d4a60149eaf8fd520", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0dfd8da84154473b35bfac62e63adcb83b7116e1fca41e187b8939d3fec8527e", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "a665822ff73ba71d31ef3bf1e32494b26db02ae154ba597c1e412303ead76509", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "034600fa22999d4fb14976730ebb4c98df3f0250824dd959da7753b9f90458da", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8fd78d3b89a509874f5219d7410a226b40591bcf17ed67434687a73831280d2c", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "33d41e851354b319b35d85c73107a688506ef197a4b706a22b0d8976cb1f0055", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "dbfb1226258a4e7b6859fb73d4134a90fc67f083bd6e91abb017e09751d2463e", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "e43e3a43150f24e863952c3c7c3781f16c75da73fe704621e76fdc48f3e50382", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ee2c3831c345d4cadc3bf32bdbe3b16abaa59d373b5a21642f9996f07bdbba67", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6b3639c16f597c7569772a4d9080ab024937e543a7c9298dcd50d167df7bc228", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "2040467f9271bc18bb97a4715e9a72ea7c4f17409dd5be58a7bd3dffc284782a", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "c4c5ebad9ced7475634606416f8558b9da22daa88cc59b2c8e215c41125194d8", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "186901990fe724e64d035c8a72a9f7a0997126b7794d0776e427e29de5b4b92e", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "0046f7b9832dc2ac5d075cc172a0a006746b7c26118e5cd9a4457643d919a95c", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dde60e30fe682e4adef7071e2d313035e6e40180518cc586a828f73f2dfa5634", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "4066aa8ef7d1192607436e32f533724fa4ff90c108ebaef08381f107c05de5f9", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9beebc4e60313ca9012ff07e53ec2aa7c4d5335270a8f5bb6b5117406930ac8b", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "65aa0fdd293ae3d4afe1558547c267472935537bad9ad1d0187f27bf04bf9191", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "7cea9e36e4c5549fd23b413711bff9882a00ec6d6b135098fa9f17e8a2aebd3d", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "7266aafa8f65b2235d9c250e62a455a1103468d1ba3115dc0d342175ffe6ebb2", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "7cd6f12b46ffdd0db1b295bfd2868609aca9eae0f770ff2c2fbfad121d1efb3d", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b570e793166997dc38a2ffbe08f684c48aeb7a6261443480a4dc7005f90b10d1", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a2a4535b13b943705020e78099c4e6d529bc76115a626f9f76d4a0c33c6726ff", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "b2954b90606603158574f11cd6f0cb7ed3cadc14c380bb07d35509e70c0c67df", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "19762b6ed5f35f0b6a42425acca636569683b37795c1ac3f69ae702369b96e49", -"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2f50b01c59e9892d641d0e5f1b7665a135dc1f08772c2bf1ef168dc4820bba61", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bbd4914f91434f608a04db10ae9906dc6153e62e40fb065e6b7809cde3b7af6e", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "5088890fddf0b1c769dd8862baef59184c9d4cf54b03eeebeadbf6fedaaa0e8c", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "83de207f8666c1c6fb984e8f0a91ece8498c00b64b59efdc44b456fb7e617f44", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "859c68d089ee79a6c76838f1cc25044abfd5278f5f6c3a5dbcb92cb492218089", @@ -10779,37 +10800,37 @@ "T2T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "71973a384a5179558bdfac990ed4cb6f3eec0b8bef210170c6089e20c02cb9b3", "T2T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6259fb2bc6de42591eee7d99972ba2e5e433aa5953300f489c22dcb5c506c721", "T2T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "656ebcb02da9ad3fc496cdc71c6341fd9365a1ff5f7716c01b950d23409c18c8", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "476a5103dec47d1cd92b07ad258f34228fbd4064cfcfe2f402b89ff9d1f1dc45", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "0d6fe654d7577986d47d8e1b57c3929766b9bb00909984071a9620d06b6f908e", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6f8fc9a6f0aa979041fe2363e017838b7cfc52c1c845970edf862ab294171c8d", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "fbd5eb92d8dd3bb5cbc58bd288c3f2eeba3d229840d88745e43d3fae1c6c555e", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "01022a54c91d445d662640d286fe6a5ce76e3d076f6b78e01e2dcb1dfac25c46", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b444be6c4c7211067fb59c4612cb51e9b5e7c23f18fd5691afefe821fea43268", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b74744e766cdd32e409c0b190dde953a9c4a645c94b3e3d61f2c71ee8ad53bb4", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "b2fa6934bb9ccc54888c001abe940f4859ad6038a30cd4562b07281d33c62f24", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d93f5f414eb72c2afd940663d34aa94bf36637f8f959a9d4746d65c28bcf27db", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "4dac58e94608d59ea1f16bb534a78bb25a6c23dbb92daf1927ce22a12187a892", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "3cb0dd5aae387bb78b6857f8d42eb425cc53481924d64262d5d7efbdeacc0fba", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "edbd6a5dd48e94dc2af123662a879b2928f0cf54bb37e7bc87bf09dc8f5e8e96", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f0801006efc36180623cfacc1ca27be53e600bc4ca4018610722a2315b144c42", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "1f80f9d1c64afba405d8af3d67ad0fa7fbbe466a7cad14dfe33eefc29ac56228", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "543ba326bf07677a84e05f7f3277c3f605eea7410e6b18c8560fa3b211ff985b", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d264c190ce017356a04fe1ad9c3c80ac86bbb5a20a71defd7f251492590e7617", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "62a29c715c550d8d650c5d2ef89f0c298d8f229f21891daa609665f80690164a", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "2f29b86143c11e2bcbfdb98efd76a16a3b5fb75ba08e720ed4c578f0d5ac5e5b", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "687159b9c1b3f063ef0b098fd976d3d265e951dc3c02514c707f821a27c7dfce", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "bfd5aab0e63e9fe5654f3d7908ba163e80366a88cb9984c52eb901e2b13cba08", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "2a26460ad58aede5a4b2bf8ef9dbfa07c9e85735b2a6d0da716c7ad9841b4787", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "3927770d06832f91cf0e51ec7b59eba939ddfc6ee4a265fe03e4f2ff5d5d2503", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "dc2b836a5f06184494867d792aac6dcefccd7207394b7ad9def421e3ee1e4e6b", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "b3e87b5b5e4d0a8572b0a6b77f6ccd916ba03665c1304128ec2fb03be1abfcaf", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4de2eb2c8266dff4dfadb06ad2934cbc5612a243324a60c249ef727cf0b938ab", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "37193478dc53884057cca22805a6cae606cdda13142a15dcf50f59214171d26d", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "b06eaac7369935dbc16272456e89d332fefdd9f35845538323915719fc3a2d1e", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "56d716ecbf5e78b1b95818432d1669fd5334ec81b78094024a6592d278a4adfa", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "6eef0d1e2bbbb12716fa6f6863e2edaf3954540e24bc9dd8ed149645630349d1", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "62a29c715c550d8d650c5d2ef89f0c298d8f229f21891daa609665f80690164a", -"T2T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8bd4bcc4febf5ecaa85d63f04b70cf96f569a957254892e3cd95e6b12aeca2b8", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ffbbaf424b8ae2e8b72d3f2b79450289b9ab7ae2048d55e395b5a089853519a0", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6f3e536fb9aeb503d828ed0da7c7035b8be90d262645bb93c462fd83583e8c9d", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8fb85843de6700ffff61161c19c47511f0d5a6e121a083d6c2b78417d940a4ac", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "04dae84a21665a99ae0a196ceccc2a2a065cfc66fecb3c6db6323079e7ee6178", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "410231a83de661ca006de49ccc5dcee89ebde856634f80fe720b6a1d2158d6fa", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "9e2e5fb018139d6d3a33186de110bfa8fa299bf2552a6eaca6789b0252cee5ce", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "47e80fade03a36affcf385c8291d25be6a7ee0b7a8e61d17542832c0ae2cc579", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0030010fe0fc740d83169106a0d54e6031e302e4dee3fe79d047aa1637ae3c7c", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d191b3132ca433b188ab55db17bc63c58febc5e277ca58223553455313e4ee1e", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ee36aa3aa61e43d1062945e43e132ee14790d844eb009a99a7786f56494a09e", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "c1adb1d274ff5c8ac930b5efd1f51b250d79ec8fbdd17c2a737437becf3ad2a9", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "082ec5a57e458525dee6aebce562b3a2a0ff30967f343b0c53a10a4fce7b252a", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "01ec7122954ea46ae2e5fbdc93ab240e7ea79330767282b91b1a65429b78fdef", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "e5278411b13bd05fe7e30926aebc095d76fdd6db21153a082404c7745ec9886c", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e9fc60563dd2f5a25e8a9bfd1751d50c550e7487342f0981f64512ec1302be25", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f0c7201ecf32ae335740e72b868119781935b7793be5914c0861a09ebe5927e6", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4d7f525ca9eaba0a2fac0317f8d1f787aa0830a7ce732b6d7362bcd0e78c456e", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7f39ddb7311b5a567ca0e9209d32fb8d0e73f630363bd0dc4d854ae42862252c", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d4ae0b709d644b75ea577911ed334b331dd32a98dc60fe8558b8bf69741b0b74", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "5928e61a8c4168744824d50cdf273e7fe057031560d265741cc073e3cd13abdb", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "6a9988b2d5d85eafe0bbaa55b95502c04e081971fc85e4fcebdcf98bd8c8ce0a", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "7d988f2cabe1ad22d8afd825f24c86e862de067043a1e9b0a04cd8da6db435a0", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "2144faa361a6b68eb87077781269c9ea7c79f3fe46370128a896eac8bfa63a1b", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "e7159e74e546b8c39b9daeadce528ed7665dd371c07588f9949ecdbc96258805", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "7b987601fdd22f13e4f4c075c22b5d5b093096b169a10f0dadc264425d3974e7", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "acfe775ec0fa0191d50d075abbde23449db0cf3095573ec82cfde01e60bf99aa", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "69e9dba8cfaa630b4cddfaab51cd2761afc1829119cce8f2a96e42cbcff1372d", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b91f11915250e0860c6fbcbed934eb8b64d0bdc2463c8cd3482d368c8b14d1b5", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "88ab14176af2072a8aa452682864773cb02f80c2eadbd924555e70e07171fc65", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4d7f525ca9eaba0a2fac0317f8d1f787aa0830a7ce732b6d7362bcd0e78c456e", +"T2T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "34ab7e77ddf5b9d72d0478b51d1f2189bdc40a7cab33a3bf2d154d3096867ffb", "T2T1_de_test_autolock.py::test_apply_auto_lock_delay": "f7e4f54f3f0e027ee11ff886422ac54e0d44ebf545afeb5ee80e6ddbec202f53", "T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", "T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", @@ -10841,28 +10862,28 @@ "T2T1_de_test_debuglink.py::test_softlock_instability": "b1f71b2ccea57e0375d465b3c0bc5a4fbcfab66ce4eb9701fa91fc4808e1359d", "T2T1_de_test_firmware_hash.py::test_firmware_hash_emu": "5f74c8e2421c3e3af6f8c3fed431fe795b8a8db7b83a95a5d48ef779df916363", "T2T1_de_test_firmware_hash.py::test_firmware_hash_hw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_test_language.py::test_error_invalid_data_hash": "e04e7f635d4867c08710860857bd99a1b50690bca0a62eb60a253b1fbf805b2f", -"T2T1_de_test_language.py::test_error_invalid_data_length": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T2T1_de_test_language.py::test_error_invalid_header_magic": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T2T1_de_test_language.py::test_error_invalid_signature": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T2T1_de_test_language.py::test_error_too_long": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T2T1_de_test_language.py::test_error_version_mismatch": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T2T1_de_test_language.py::test_full_language_change[cs]": "e80f73eaf6f294b9a1c148cb23ad1a398051e36a26d66f8809774f0bb0a7ab45", -"T2T1_de_test_language.py::test_full_language_change[de]": "4601ed00f895ff75ff63dfdd96ca40f976c72cefc8090f6cb26feb68a87eb7a6", -"T2T1_de_test_language.py::test_full_language_change[en]": "1b4ab2771906bc023fe197967faab90a0502011d5a2de1158d12f19bbfe06866", -"T2T1_de_test_language.py::test_full_language_change[es]": "e8296a4d49fa05c32560d65582a505d68563f4e30725411d6b4da4c6a0ec9107", -"T2T1_de_test_language.py::test_full_language_change[fr]": "ecc398791047c183da85c433512afb0b8ccc84011f595d17ba93054483fc1785", -"T2T1_de_test_language.py::test_header_trailing_data": "335aa3055c6b2ac93faea9d0b04c69d9e64dde3b1140d336fa0b017c7587dcd7", -"T2T1_de_test_language.py::test_language_is_removed_after_wipe": "9b515dfd83d4859a0109cedd938458cd29c1afc9df688ca0637d232d81831735", -"T2T1_de_test_language.py::test_reject_update": "f0d458afc7a5163b57d18ed237e8e8b86472f550eca018e0cf653ed58b5d434d", -"T2T1_de_test_language.py::test_silent_first_install[False-False]": "6368ef714a237ecf0b5d1890aadf30ef30edcf702bd5676bc9bcf1df07897e8f", -"T2T1_de_test_language.py::test_silent_first_install[None-False]": "6368ef714a237ecf0b5d1890aadf30ef30edcf702bd5676bc9bcf1df07897e8f", -"T2T1_de_test_language.py::test_silent_first_install[True-True]": "55204ab413989f3da0499edcb6933b068861f6b0fc9b659967534588be8dbf89", -"T2T1_de_test_language.py::test_switch_from_english[None]": "e52cf2029134bd82212443fd562170b371bc742197fb73a15d6e717cf95bd6a7", -"T2T1_de_test_language.py::test_switch_from_english[True]": "e52cf2029134bd82212443fd562170b371bc742197fb73a15d6e717cf95bd6a7", -"T2T1_de_test_language.py::test_switch_from_english_not_silent": "f5b4ffffdfede0554f79c02af5ea2091cb6d5275cf3554c118703cd14e844bed", -"T2T1_de_test_language.py::test_switch_language": "13544c687b07b69e8d5894aae1e48d7e52234bffd18b9a253ec85eb6d6984960", -"T2T1_de_test_language.py::test_translations_renders_on_screen": "01845138103ae1b0490d59edc22167cc784f9222939cf4960a1b60724e5cd094", +"T2T1_de_test_language.py::test_error_invalid_data_hash": "2c9c361d73bab1c091485d6531243e8e45b624d055786907d95aa3e7ac0689d3", +"T2T1_de_test_language.py::test_error_invalid_data_length": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T2T1_de_test_language.py::test_error_invalid_header_magic": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T2T1_de_test_language.py::test_error_invalid_signature": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T2T1_de_test_language.py::test_error_too_long": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T2T1_de_test_language.py::test_error_version_mismatch": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T2T1_de_test_language.py::test_full_language_change[cs]": "a3a3e12a096fb0333cebf86336fcded22e89c5f29ab0accae36472aca6907e99", +"T2T1_de_test_language.py::test_full_language_change[de]": "2fb9cd06f13e6bfd7f77265ca1de9d484f5be23474bee3e9008474034acfb1ee", +"T2T1_de_test_language.py::test_full_language_change[en]": "bdf46f4dbac8af74ae3eeba6b34dedfbe6501e250a948e0700b2b8c467b62d0b", +"T2T1_de_test_language.py::test_full_language_change[es]": "03aaaf27f1f4949434241bf81687a88d42e449019d6de857c0307562746ae20a", +"T2T1_de_test_language.py::test_full_language_change[fr]": "9df1b2edcab533231f6bc5440563a1d3114d0b8f2515dda53192ad7d19f835c8", +"T2T1_de_test_language.py::test_header_trailing_data": "116c567c75abd93070cb47853ac07210b0e0f4d97b5940ada58ef365a6cc5749", +"T2T1_de_test_language.py::test_language_is_removed_after_wipe": "dfddbca25e265f51cd7716905ce5082833f01348b966a1b81bfbbc2b9cad2680", +"T2T1_de_test_language.py::test_reject_update": "2326ff9cef030570cc9a4766f3f481850bd20602337c20b807555011f3d60874", +"T2T1_de_test_language.py::test_silent_first_install[False-False]": "dacbcb27d1ea35f26bfc793a0fc4148e75cbcb75ceaf6d69682dfde1d7776b77", +"T2T1_de_test_language.py::test_silent_first_install[None-False]": "dacbcb27d1ea35f26bfc793a0fc4148e75cbcb75ceaf6d69682dfde1d7776b77", +"T2T1_de_test_language.py::test_silent_first_install[True-True]": "fd6eff7b285b8963dac4332cd3b6e1fe9dcfdbc81b6ab1042fe00ade8cb2a144", +"T2T1_de_test_language.py::test_switch_from_english[None]": "9c1e2e0ba0bccbe4010e59312b25388637338d9dd1eee8d3ca1bcdb6109623a8", +"T2T1_de_test_language.py::test_switch_from_english[True]": "9c1e2e0ba0bccbe4010e59312b25388637338d9dd1eee8d3ca1bcdb6109623a8", +"T2T1_de_test_language.py::test_switch_from_english_not_silent": "242603b8b2406a7f5ebf08b8aa670c1eea7009cdc90174a108e9e85e667030ec", +"T2T1_de_test_language.py::test_switch_language": "494b40becb93accd213f6eac324e7dac6cdef847bc945cc46adbe7be11a0896f", +"T2T1_de_test_language.py::test_translations_renders_on_screen": "cce098c9da0ce2015c394ef8ac06e11612fe95fc90d052e317de81edafe73afa", "T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "498b7cef2dbbf9e08a2b36522f407597415328c558ca633288ac7aa316391cdd", "T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", "T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", @@ -10900,7 +10921,7 @@ "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", "T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "428efe8252b318705f27b7aa24e3de092598002ea6bc95ba1d68f1a3bee4713a", -"T2T1_de_test_msg_ping.py::test_ping": "06b0b04c345ac39dbc1c07e3aab30d378443248e27761469e2d4c28d0fa359d9", +"T2T1_de_test_msg_ping.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T2T1_de_test_msg_sd_protect.py::test_enable_disable": "7a6fe5c5cde3f9d9aa6af2053d09f20a57d3a50b5c8c81a496ac32f79737a878", "T2T1_de_test_msg_sd_protect.py::test_refresh": "e559dc474096349cb817d56d7b86220ed3f187e5dc936524484e8571c83101dd", "T2T1_de_test_msg_sd_protect.py::test_wipe": "5ee2512365b58d8266d894261af1b189457ddd89a22813ad9be4f1e7fb035f79", @@ -10923,9 +10944,9 @@ "T2T1_de_test_protection_levels.py::test_passphrase_cached": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", "T2T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "a0eb65130d8ae95d61bafc30d920239ccf4950c74f0b948d02543a4e71a415b8", "T2T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "9c156cfbb059fefc0c7b663aa204618a2476ed7c439f80a21e3ab35239d08fc1", -"T2T1_de_test_protection_levels.py::test_ping": "06b0b04c345ac39dbc1c07e3aab30d378443248e27761469e2d4c28d0fa359d9", +"T2T1_de_test_protection_levels.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T2T1_de_test_protection_levels.py::test_sign_message": "c74c80164c32a8c5b95a765be40bcf3e7d1463b99ceb283288b463ff460281da", -"T2T1_de_test_protection_levels.py::test_signtx": "da72a596b0a123e98835798f74f4207dfb7c3f5e3eae458e0d3e49793c1c1879", +"T2T1_de_test_protection_levels.py::test_signtx": "fb0d36f83eee89f134a9f6e1d0a3f320d84166ae429a6e552559f774e0a28d2e", "T2T1_de_test_protection_levels.py::test_unlocked": "97cde4874c0952f2da6f2f41845b8ce279e4015ea95ef38bd8c0e0d55039b80d", "T2T1_de_test_protection_levels.py::test_verify_message_t2": "b0298371e1eb13ab94bd944dbfca4079e5e6751003fb9e0a2bb4dc35d02db844", "T2T1_de_test_protection_levels.py::test_wipe_device": "2b6b86e0caebab7123f67264d3082849c56ee4d94ce8da13fede6d1012b866cc", @@ -10957,9 +10978,9 @@ "T2T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b2d433b6f27546cf0d3654c966da05570630743edd059edd33590bcf74a3df4b", "T2T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3ed29e74cb3e06c85b1278559435a44865bf0f5c68e1dfe3b294648b7d861905", -"T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "147692961a945a4e028dbaa9721bb492cec200c0a45bf52c69f47efad5ac046d", -"T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "2b11fdce6c468c2d6b627f687955c210a31ed21668e2e25bf293dffac1e73e6e", -"T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "344fdd1dc16feb0a2b60b161b73feba91ff1755dd4096998f1bb1bc4302c1cb7", +"T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "fcf3d3231a3bc913e2808331ec4dfe6fc55caebbdb88b0ab7db4e0f539774126", +"T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b4e9c7930d56b8766ebe1ebec1a6f6952650d0df923526ef6ff125278be6520f", +"T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4f3b598ede6c6d90e247074a8380021916d980b7690c9266e2a1222879d5f2ba", "T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "05121d236900445631cad6610f24d11c5cb5bdacc218d14db2ce67dd45688043", "T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "47cf430ee3d5470aa9e7b4d04a0c79b58a8356e662689f427e704e0542ce7797", "T2T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "85ba098241fae0873463933c7b324109811504c266ddc78c97a9cf03a70e680e", @@ -10967,19 +10988,19 @@ "T2T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e6cdfe33b545ee13919507b6297716777030a3aabf1e34f68850c7a59683e301", "T2T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "de08bc5b4df8cbdd291817e2be75d26d5ce4e6d85f498eea048b3d8ccc192f4f", "T2T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "4e2d9fe07bc28da86d221d2c8560071a1387c1375fa354db1dd771bdd2a5e3b0", -"T2T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "405d84e34ef67b0762ddb1795c6f1b2eed8919bd95b57cbb3b3079b1c3486b03", +"T2T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "69ed3ad659dd6f17813a712f4efc7ac1b162fab136cf50cd8ee987c3532de843", "T2T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "69320ea4e2c3bd6d6ee2959a97ccde01a0f20b2972a6b4ced0a70855d5769c0e", "T2T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "a01963042fbab67cb7bf0d0a4683d0cd7a5b6f0b1a8a31ccad316e128af2718c", "T2T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "6f364f906fd898692efd14e9ebb840cb6748b8127bb47d46c5bfcacd4ca62059", "T2T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "d68cbf3ccd599858c4541264ef3eed3cbed19fa5dea43605b235054dcf28ecf1", -"T2T1_de_zcash-test_sign_tx.py::test_external_presigned": "47d5ec5a4cf12907681a5146b1390c88ec41c6f37eaa76fc663018ee5357df66", -"T2T1_de_zcash-test_sign_tx.py::test_one_two": "8858897ed00ecc96cc9faca290a9e4c63d6a6055627f689a9fb10aa19569f91e", -"T2T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T2T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "23e004c951f6bd8768f56abfcaff501c36fcb496549b7856cabe9e28a0246d68", -"T2T1_de_zcash-test_sign_tx.py::test_spend_multisig": "59d1dd264d3484228ca1a0b6d60de89348d18c880bdea41c3d6c4c0fe3bb3f8d", -"T2T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "30a94463a5e29b80e5b14c63732e5aed747b3c0e293b26792872d86a0909efcb", -"T2T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "1add1350d61025419342badf48ebd3bb195f6cafbb468cf73903096fbe02dd4e", -"T2T1_de_zcash-test_sign_tx.py::test_unified_address": "193538e211cdc2ee22ed4321d01a2007d22fe8c79e6cfeb92779aa330bf227cc", +"T2T1_de_zcash-test_sign_tx.py::test_external_presigned": "92d56b3396d2c9376b80b2ed14e367cb5596a4a34c78ac14d8faf8b3063a5110", +"T2T1_de_zcash-test_sign_tx.py::test_one_two": "058454cc90d51b354548b794b15e2d8ffbb198f2ec066af5d6206a0bc5a107f5", +"T2T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T2T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "41408995aa0d057f1c535ebfb4539c381d36e420d5a5790d43955f9c8b9552e6", +"T2T1_de_zcash-test_sign_tx.py::test_spend_multisig": "92be155678955e634de05ac5349c6fa38ed3ef6adaecedbf5a0c00031bdd2544", +"T2T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "cd2d7ee5eff015846fafc86513a5c111ccc00348054bd0815d2d74381afd55ac", +"T2T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "9ba6fb8462930c9dd78c3142c0b25c5a0708c30335b487287be294b479113d53", +"T2T1_de_zcash-test_sign_tx.py::test_unified_address": "b267a7f2994ae0332b362c4d186bd538f49910dcf5739fb8db49af387a0de3e8", "T2T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "fa3d667e1439c9c2a475fff22d94e330c14697ff8dda4bcdded775492cb40a90", "T2T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "ceac9a64c9aff8a4226e40f068ce412556eb582d909a9f8d401e83ca10433d77", @@ -12460,11 +12481,11 @@ "T2T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "952c904eb590eb76d91f0cf89919faa364c28fea5a9bc72fd589fc359db008cb", "T2T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "738eeb4b4090d06eaabdd10ef6b1a0371b9524f6d1055b3c32ffcfa57f26984a", "T2T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e6c4e554b2285f7f753b16cc04eb8a1c70baaa76d2b301c7e104ed6b45d9bb78", -"T2T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "66018aecb48939c12eba4691b10fc2b32afb309a018c3af154a1ed032bd788ff", -"T2T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "18cf16ebf22cbdf4a77fb83c12e43613cfd9cfb302c5c09e66e1ebd05f475b56", +"T2T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "133143384228dc73a9de577446267ce0454ebd7ee3dba7ad97424d365e06c7bd", +"T2T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "46a219667989a2a516a06bda8938e135ef73af74cefcc4bd941da28c7aedfe30", "T2T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", "T2T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", -"T2T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "18cf16ebf22cbdf4a77fb83c12e43613cfd9cfb302c5c09e66e1ebd05f475b56", +"T2T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "46a219667989a2a516a06bda8938e135ef73af74cefcc4bd941da28c7aedfe30", "T2T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", "T2T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ef4f759f62a09e822c01cefef03947f8369383260243e0f00de2c3ba4915dc13", @@ -13031,26 +13052,26 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "3cbcd35d46df53249a96e397ed7cdbee67810bf33c98d13bf76f484bf2f59012", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c3550908023a0a4987006a293f94f397b5c0daec44032d02b71636595ca799e5", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a78d017a315f664a451974c021db8b9c9f0457e1eb698e869acad0e2162d1095", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "50a794787896e853d1fff378c9fbacf7fb7bf7dafdb870f6d0c9ef21e32d29a6", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c52659fbfd47f85e54cce3d840f8ee104fc422d64cc9cb0dda5b5b02aec35254", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "f967af983e643d1b72f1c0abccf1e4d22cc0c37de57de1d1df75ea2fdf576f5c", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "f357b97785bfc7326016af10abd72ab01c6aa5b1047e5a17c0907a08b32ea33d", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "8de6531c14ac558fa5537641aa724c3223900052c587ff8d6e477f41c4c22840", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ad2e5454bc7ed062c184d24e60ed2647e4cab25a00e83592d95f82387aebfc9d", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "564b65adc2a7b998c44f555edb691a170a427f3f12fa6b0e0e79ec8287459c68", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1305f49b6bf46be3a07db53a703093ab2e0ea9b1e849b5d794e067b5313d4195", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "0b3e4549082c357edbdbfbd8b997c2eaffc37f0b1d062aa58d6e90e15b6c3a5c", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "27fea4f04ad5ab9330648742999bc9e967d5417ef8789a519cafc36d914db433", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "381a0c1089163c59f7352e237718048809d125fce59ccf8679d1f36becda4264", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e38e955d39c3ae50a185ba701e53ccdf38011a163f3ba9327ae9a21d3748fcd7", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "a2c25722cfd9e5013a3a2bcf9c5a2667826c61ee46a5bc63158baa7be6ff7a05", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "049114001855edc019de23e2943aeb3da119b57cec3ac0f26ddeb25fce147794", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "96903906ac51848ea2b4e0af016af4117a746a4a4d16da32a223a5fbe9fe1208", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7b6e23e8f6b61c473a302325958e049812adc27f3603c6ecd4d5c34464fe251d", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c0ed4ef7f244154ff866cf852d92579d680575771870d0f51fe9895c1e67a966", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c346bd1a848334ba44592ebba9726518542b4b67ca40ab11a41da4aaa18c4dd2", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "219886527bf17d25ee7a39a6280def8affcb6a455d6a5c9099db2b760a213752", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "ba4b4f431b00723aa78f4c6e322863d95f63064be86c4f4556092e165ce18dee", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f5861777419681afa594b7d2fadb0f08bd83a3d8794f5a082fffbeefee4eb74a", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a9965d207bb2385b1174f4cecb16a73c49bdec344734df0886978a3b3529cbbd", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "388d35b0e0eb15b5b39aec9db3191758d2c3d86e4d22036f4a60e59b15b23882", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "feb70f29a31e13655840e78e746dfbfd9ab48289d01167a26273df8a4008aa83", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "86f6f626447b0f2065e34aae133eaa31e66d79e2459854a2b44fcd9b800e0575", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "7fe80ab9eb77acd148cea00ba370b381bb5baf9e20991898d7015763a9364e76", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9cfe0c547495d9b209d67e45274529dff8f987e185dbe92cb5ad7f4ae8639dd3", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "4ee28072584eb697ab9bdc9dea77e68c3b307430dd0ccc7752507dd1f6a8c7f4", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "c9c41d2cccca4bbf3afda0199ebfb59b169c7d453c05b9f93d2c388f92523325", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "73086a92bea891480db93e05e8403fa829d9a22f7002aaba08b94f8a322019fc", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "91fe68b86a41637724b00baf46b419134c19466da6f0a09a79c9ba8f4ee620f2", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "0a58945755af91066f91b8038abb115e6f6940812718ff6350ca2af603688be2", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "40d2967f3c624b30eae7c31f85b6a81bcee47730f9f3199e8ac20db6621ca975", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "60285715c6450edbe423a19e8b0df400d5956c1640680244a4347c91ac6d745c", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8481e7ec34e24e41df8ddc65b6ebbf64d9a885e5dfb463d775cd7227b5f59334", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ec692acf6d364ccc1bacef8e588cc50531abb91151552f80ace98e046ec57285", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d1b8c40eb2f687ffd20c54f468df6cf631c7102690c312ac107d86777febf764", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "a5880bdd9b88d557d8bdd0d0ac0d484c0b02ddc0ec7f42b04b7c74e87607eb6f", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "2b1cfce042e8a3dddd7b6f8832af53d84ae3be67c79756d0568303c36b4acbf5", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f4f420a89cdbe7aa3ef5157aa71edd5ad338bfbb1487fcb882b07f0514c5016f", "T2T1_es_cardano-test_derivations.py::test_bad_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -13069,240 +13090,240 @@ "T2T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "808976bdaf1baee3458322f98b86f0ae76971deb1264a3460bc7dcb009236629", "T2T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "8c9721daf468eb1ba416fc7074f73c5742182a58a01b174f8f79b51190ae4f88", "T2T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "d89c872bf1afc6275a1ea61229e01d8ce455478858296cb64eae09570a68f62b", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "413a15dd6ccc51bf64d52e6f5c14ea54ecd41c34f75b7e2cf46fa4b64943f46f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "76e2a8c9b109a0e6a75cabafd8561931e80b34ca005645526fe6a5e30e96d424", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d2a31aeb78e1d6f7c90f3ecc46525c4469f41d32debe11ca5d3de83427c4436e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "1f31cea9daf3c13c20a19ce64dab137dddceeda44accef64ae40a0c26fbe9950", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ac3dc1c281a528b34c4442705756b1d5c6294846066e7d38f9cf747585166a20", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "b138448ee9868c22fc49c4ea75d43a7cdd422012653fb8449248a3529b813747", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "11cf13356688eacf116774e6124cd6d440200819ad8f73e7d5e7c8a0438dbe6e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "fe5d038278db48719f32c0923d624dc9f2a02b5241d93277c2db6dccf14b3f52", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "c25aee154ebac790f3bfd6b65d23222856ed9301ae509fe7b3781efee2b7bdc6", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1682920d2ea63979f4268a07601fa701fb6e6bfb08df43bface3a884531273ab", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b30ad035fd7ea1c11ed5c180a7a0245135c39c400883fea16164235757778739", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "886671945d5e537bb5ac2c6d10d8f568dee6a6f1d9344e3c33ce0dee1355272f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "886671945d5e537bb5ac2c6d10d8f568dee6a6f1d9344e3c33ce0dee1355272f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "873ba30c68a474048898c971ed0d16a3e25a7535808b524bfa3bf388d5467c72", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "35feff5ab44abb461b175273a0d513eeec546193b9fc3cb42cc2163c2e01faeb", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "5d79187f2c8d7db652a032266b4f1657860574d30d7a3a88f82d707a164c49d8", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f4fe09033079df3ec676c15f94693837088bc3e390a1089cc1e3e76743f04452", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "74128098f18a51044896b693a469c7e096fe6be9fbca6a6b620b726f08819a83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e4defa8aceec7633cb3f7c0f4108205837721a60c71c52e34a08f094cdabb4f3", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "4ee35f06f68aedd9eb0956485f7f8752e57dfac97ffa1b6248e20e453fac32c0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "400b9e4198eb55c1606811388389b5439855b789279544a1598144b8e983daee", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "b8df920b5dfb4704da887aadab1f8946cefa63cf87b6a932ff32535493bd30bd", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "74128098f18a51044896b693a469c7e096fe6be9fbca6a6b620b726f08819a83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e4defa8aceec7633cb3f7c0f4108205837721a60c71c52e34a08f094cdabb4f3", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3cc877ee329430c5687fdc35cf12183197694a4edb2f6059f594ad9e471e556d", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "fe597eaddd1750f9e06fd577e121f6e511c331e54c2b181197374d1b8a3f74e1", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8b9dee7d2b7147ca25f0fbb0f7b8e7c9d186412d6724e77e8af166bd2719786f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b5c4f6cd9a16dbfed95c586c44b9d331246b62190070da4aef5fe888fc442ac7", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1c70e231c145248d96e8d1eff9296028c77e68d5bd117cbca9edcc6a2a408fbe", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "f2309a7c04c00d6d1d9ce407ec9d9339baf136aa0753a35fbdd91e8c16cc124d", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "0af23656acd628445d6f292caedb3809edbf7f3e46fb40244a5c60ad473ba2bc", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "34fe7657076c4b09211dfa0450fef8e72b504b506f56ce1a27a489de7b591d5f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "451d172e41113241d0a537c97a5510d00bc7a4bee260dacd3e16b51fa567f6c2", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a197d7acb899d7b16c2de9fb1e514787ce52405e12c4c0766f7d94ac06ac6873", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "9c36995a872e8092819750c6187f2bd4445e5394b0c0eee5eeb28b515daf833d", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "79a26aa0ebaeb305db93709bb2ee51a330c1a5cae73d01e86cbd1e0a4a534c22", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3efaf7550f90a730606cf3d1f636d8601ec1c27e16f6c8af17e6e8f13cc4115f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "de5a01bc9b7c5d62fa770ca40dfeb0d4ecbe624dc3e56fd796bf2490638d1818", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "33b013f9566017a3933880981b101a290619ae04b3eadcbacc8326dff75b7052", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "bfca897c27e658c7dee8ce58e6bd6439c601d1dd4061a6e159a193951b45ea48", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "8a67cc26d96aad44a4cfc9c5d655fc37587b007428a384fa9ab53a7092e7ff3a", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a2713df177621e5ca0b0ecd1201b30916d827eb71da477820daee526dfedbfb3", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "cbb004247bb1d690be89f4136ec0188d62dcbd875827be0c1405454512305652", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "103ee6a5112c7d7dc118e566f640eb05517f32d23b031112943f22800481064f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "b94f77edcb77569967e025ba36920ea00c6a4f5e2f3be68fd7289154a926c58f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "168d2cf6efca9c6bf3732148e227352265b3f09a01ab23c142effbbbe0cc6d94", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "50b5a6bcdd8f4c54e02a4977d6aebfcd9773f2bad3a96ce829a4e7e86f52d0f8", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "95907f22bafae7d433cb1b07b255a274d0fefacd0cfc51379cb3856d52b4bfb5", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "529ca9c2069e5515b1d843401765aea21be1c33efb08f1a7e361196035981ec3", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6c23144a9fcf6dd93f7d839947e20fd10da134608abba0f75f559562075b3de1", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f6fd673ef118cc6d1fbee90f3a8df7ccab136a3b556715fb5f2dfb687b60e858", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0a06941a050de72c81c43378df674128f47946cd3268234171588b4bfcd28f87", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "6b9bed854907cfc4bc33b15ead0ddbb9f9e6ae4d1e3c3a61808c148db22a1736", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "33dfdb642b3d032a21c517e988f86cb9d01b389fc7600f60830a774d87856a3e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "c043308eb75974d5e71e9726e35876cf8182014dbc9715b64c52464798763039", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "7e274b7c38dcd8022744e9207d93817671b67e47f15b679e410bc6b2cc1b5dce", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "e7d5514e79b46fbc21ed0eaf44d082158dd1f504c142cd4e94b9b78adc4ec940", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ee25e2182310d50b9de7d0a94b9ab257c67b884f586a56bc38eb7c151ab22845", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a2ecf4c49e435dbab49078dbfadc4445ee81baea0ef2ae0271aaf101e7115ac4", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2fbfac7b62d2923c91a0b09bede5ea61d7ec7edb0cdeeb918406c30fd7c2955a", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b266066bba29d1bb1a7ee75a95487807bfbe9a7ea2768c85ed434b4e0194091e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "4277097921a767e6afbb601df0dfa530de08490c0fb4c0fcf3c053d16c70b642", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7861daeeadec05120df682370ef0f88c077397f6ff7233582801d0ae3178ad12", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "fc2093b241a8fb682b348dc2d39b68dceeedac2d180757cb05f3712acf299c4b", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d630261db05b7b6e89480850b871df94cf4ec1cdde988a6be922e14ea318c616", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "9e67a4d26ff7f8ea2b01942bcff8e4903091900121ac33e9a2acefb7fdaa8ef8", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "680740b1e6184dd124a43f95e15952e20296eb3f2bb249c5625b80209bcce8ca", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "3dcaff1436e1619b7e1e6ab190763a703aac410f179acb64a9aeb76706ec73a5", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0e6241b915a02f46f56c8198520dd04a722f0fae39131efd829d1be4a6800e66", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0ff831d87737a6ddf83ed585401cb56198d803f2351b7363a0eebeafe522c28e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "d8406bbe3201d344b8b2cc67acf2c5c1a60e3eb44302d1e1b524f238d323c747", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "d8406bbe3201d344b8b2cc67acf2c5c1a60e3eb44302d1e1b524f238d323c747", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "578ac82a08ab44641acbf042caa21d6180b3c769da6d6ddac773a5009f019d45", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d7034b0a356a709790afe298d8cf084a8ad74646e744b05b12c4e3eda400b224", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1cfe630720e91392e370646a44d4aee30a95a0438d5dd9777af55e94171cd34d", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "40e47914b10a593f4381f30eec61f3ed8bcbfb2706e594ad87c5ca38da8b0e0f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "0221cd9be44dd05ef635d7a9743d74c42884a11563ae9b192b0f979b13fccdb5", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d444a9880b1fb832cd346f2211c47fb14e3a627135eb7940881bf4485257ed64", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "54bf05051f0563e1d449848504c86e9920a5d94ab4c11c9ec4e7cf6b60a01a76", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "50f5f4a06c1efd19639fd28fe34c5dc1248aa4b06c1c7a610d8cb7bdc48c9a2b", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "9d48a1f061271f4cb76affcaa5df3c22f03fa572de6d45509b7bf3a950265d46", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "413a15dd6ccc51bf64d52e6f5c14ea54ecd41c34f75b7e2cf46fa4b64943f46f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "11cf13356688eacf116774e6124cd6d440200819ad8f73e7d5e7c8a0438dbe6e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "906254885716b0b3dda7e84997c5088b7b8d1c51527c5a15ea6a44cc99da0f20", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0538f0a988f6861777907d40c5a8984fa0b0b99510c7851215d727946a30a062", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4197d8e569897ca8d08f9bcaeb489501f20f6571b7df0a5b9328a0cbdcc4d0d9", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "474f42ca872d0510353365a21dacf081dcacbaab834fb8d959cac90c026775eb", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "481ab377941c08d97a206616cb2f52e37d573759475dd91d9f9aa1b9709f2ff6", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "92d218a0409671c77c3702e8435fbd3f97360b088afe4bc1f2c11d41a32e942a", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "69cfdb39e02665599c0168d69e0419a0d3601604b5cdc2c1d4ac00c43b373785", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1952410d46ac1e82f5a941281bd3459016b6e5dbf7dc4ded6222114d7bd13b97", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "36542e8846977858b3eae09d937759b7367393922bbf6b819bd305d24cfd0095", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "09845a753675edf5edbf92cbadfeee40069e7a7e40c015f62b087b94610ebed6", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b49abd13fb80d26ea67bedbccb1003893e7aede5f58d7cb42770880a4a3f1e81", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9c850c79e3863eeb69e63a613dce58bb680f5e0a41c1f59bed3e66c38897a17c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9c850c79e3863eeb69e63a613dce58bb680f5e0a41c1f59bed3e66c38897a17c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "a889fb44d76197b12fd8deb04a917030c0031ead49dd0c295e12f8a2775d088c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c027275b6bc9ec1b68a5076b9c008736d59e72a4bdefbc71dedf37195c900776", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "c74a7e508252d2b4e5a868756d7a86b20924da1bfa640b772d06bf005c452d57", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "bbc51befed8106fc093ee8429e9ddf06b0b150b1a2c42411d430b1ee236694e1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "4396c70da4293ee86e083e6f1c430c0f89a80ca59f8615d07af73371aaada577", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "1f062bf1c22f06e53b10c1c90d9fdd3d1ef6d4c94b386794f0e23a96a46914c5", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "75d014e40c761118e1df576297d293a50b611a01023317496744dcf6da043e7b", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1ec8a170b0af13cc706f4bd9f70078bb21c9dc1a7d681edafad90b933709016b", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "106a184d920dc0daf509235718edec6067843123150bf2d6d3c6680e2d50155b", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "4396c70da4293ee86e083e6f1c430c0f89a80ca59f8615d07af73371aaada577", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "1f062bf1c22f06e53b10c1c90d9fdd3d1ef6d4c94b386794f0e23a96a46914c5", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "8f369d8d8115123c1a0406f3bad78cf0cffff2f4f78f12d70abba83feb67cfa3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "633b16346e144adeb63f7e48fbd64dc38d81b81b0454cef96ccde44475688859", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "88ccf7795d9c3672004775c19429e1f91d222ccb61b8dbcd108ba55c0d9aa363", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "865155a1fe4aa8c8ad94dba40fa79312c1a3bf24b42032449624faf7abd7b55a", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "39d58ca9b01cddf76b2757ce9847073043eab6353de0929732c0e7da3e926845", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "858e595c5dd8b5d656155e1ead3026e79f790829c46afd8e2e34e2207cc8f9bc", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "17a392b541e633f9e3833c6e4fa2b35e6aacc55398e0db210d5c440338de14e5", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "1f98b72d81309dd96930a2f05e9164be1daea980722297172c0e723b2d38bace", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a910885ed3480eaca4a2fe013acd6d9f3d1bbe6ea3a9622e7f02f4b2bf9879e5", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "77199b22cd5981363016b0ce404e42f660833b133cdc62b50b036fcbf5f43777", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d223c3e651e70fe78ec3e5b6b6d3c3fdd06fdd4cfbe761a1b578f270888015dd", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5278b236aaa976482d2f5193209457abcdd51a0d472eb0896fa9665d7f2a9461", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "14bec6205be447427374351dd75836fa82a0183f820928b9c48bacb474ce9305", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "9e304a0c5000f07bc255d5d652081ada9804920ad5b2ca6445c4a6740a0ab348", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "1a55f71999d34d82b2298beb67c0d94d0e2c788f20d39b45c47aa37ad8fe6dbe", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "3411b5d0461d3ec2e46645b3fac7d26d2fcb7434eef34b0a7d1906a074f8b2fb", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "81940226ebad77adf617d31ba9d3285c5694b40cb22283a688c4bedd4d85416e", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b3e6caf7323cc679582d215d37baf5d4afabb31d3302ad82c1a1506a5bbc0cc1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "ae39e305f5baea3577952a7ac3149d7bad21f7ca3a7e811792a9f8545e1d243d", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "355b16ea1d5767eaa15150763816c6b3d25e4a6dd41bc92eac39dd4a225b6921", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "20f2a9a13e15890f1f669d197289e2b117212621b30609ae948ae9f7ec4dd691", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "881762f87863c232801013329ba1765a49d8951f6d69ed4d64734ddeadf1f8a2", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "b020f42b30654529d1eea376296eaa6cd8e27c2f1836a26047e39a96c4884e0f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f8e66dd4e729e7ea9fbbce73260ac332a0e4c5967298adc077df5182b42fb106", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "c3207703c436bdfd3e1d4943f58103a7577b3e65f40b325fdca2b647968203e4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "ceac59a0f1582a21be84a536cd8593e960960e56b488a2f54c3b19d656d2ff5a", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "6834b411d88d39e6f3071a90f46e95e4a208f65cfee2127cc8e37001557c5346", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "5a16a64f3140f7c389b0fe31130f5f294217dce66a3baebec711b124d4250794", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "604389f34dfe2e0cfffdaeb3240734b9d146ced9e983551e728ec5673812d2c6", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f8055fc3d0e8cf6a7802ce737b364fad69bac1f3290d9aefc52b75d07af57fe4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "caf41f71a9b3fa10ae9864a87fdc7403d48d7eeffdea4eaecfea3c2cef3f1f72", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "e2916347fd20d8f5407363b185d7c4e1341abdfac217015316cfea4d16543c1c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2f3e47b01e1957f356b6acf24048281af7c7b3889e4d16983a98feceaf02430d", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ae7136a9c82302968e88ef958d21256b3963791009770de828ce3837b98e2186", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "ca34e89ccd20410e1301f864c9371c9be3e63991cf9c299c441c83eb312498b9", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7acac1fb4aea9ae638e70890863da73e371152253a22976a2b17ef88a274df0d", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e7b6abc9b166d7d586abe7f59a17d099fab1d55b5a2b916a8e1ad30e38cccbc1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f90b073e61fcb1f9174be4a1e0b40e290e7b00647829017ebf6e7ce62b067a61", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "540d3d90cadf5cbd9dd62d275114793716ecd2fc5d98db60020f23887c78781e", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "3b4d6ddbc262f039cf0eed62e3db249b9113ff0e13ec1fa5597729b5e325478f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bf84aedb1f4a63bde4bd13c45ed4645696563362c9b84a1fc8da535f1c02315f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d91a813a0768d73f1d52029e99ed75987bc0cf744f1da3700f789f6202917666", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f7e6639d7d13d04596ca456f4b6df3937a3c9816f52ed78d27122b4488e54b", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ea63a77b0b42d0491b6dfc49f78ca520abe3456a24c7161de3f32ccce06714fd", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "0a1c350dfe8f70a89405d567e142b2667cb270300d9a15500bafeecd85fa8779", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "15006775de49a2fd64a90eb41164d024643ca5f6b9879ac0406b54d3cb960645", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "069b73ac6fb9e1ca1cbb5d291b3d77f291c9907599176eb58c8039ab21c8db2c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "89f6410ea4b307188913b901004bbf4482208e7f04c3b08ae0b65acc849cc6fa", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "0d9ead5403a9c51ddac922f4881b0f0ea6c15eb63019cdbc04271ebc8e6c7289", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "f1a381132fdaa62a6bc040a0411db9aa01f464cc5a331d6e6567ad7fef74b2d6", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "3dd406507397365c843e963920f766a9b3b8bd02abe1b2db16ecb2f17ebd28b0", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ef7305a7e9aeb66d1f711884e0abcdab9b15ef3af796e11ccc48f46dbfd82ecf", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "0675de135f5589fad56556fd149906765ce742c50c31a2c6e16e049d96f4c239", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "906254885716b0b3dda7e84997c5088b7b8d1c51527c5a15ea6a44cc99da0f20", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "69cfdb39e02665599c0168d69e0419a0d3601604b5cdc2c1d4ac00c43b373785", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8be7fa5e6412f9f6a4b37071bec8f8ec2664a5885bbb0a02fc6d681701294375", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dfbc8fc7e896305a4a29c3984c3dba81ccda7ea67313592471c2fb6682d4e010", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "d9c7ddf090b150bf4be2bedafd19862811affa5f64d03b11b590a1de94b97521", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2caa2bb57953d0bcc4f2c81a0351371870cd76e3478ff9c23ebc6b8fa24cbbf2", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "dffb92fe8917ea7cbeacbe5570cce24ec3e3ddfa9385c480d057e10b0473d894", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "ca08e8c1fdc7772ae6bce2f50bdfce2327932b183f71322f11dbe116ea5bfaf3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "86fc4166e1d1ead23175c8e48eee70a60f4acc5cc8142c4a82e200db381fdf10", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "e6cec0c99bcb6d6e8afb9d4ff101327a43793de4c75a2be5fed828b428867cb7", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "a755faa8ec9748b7ecefd5795700c8f8c50bcbbdcc3c55437a369410f0968a48", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "7b06ff30789050b997536963baca318cc1a9d9f781f4cd6ae20b3abd998cfb03", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b03dccf2e7e4a4fbb6636d84054ea7dbfa065cbce7f007af7b29828100a0ccc7", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bb0c17d8ba65bc5c5aeb1fde66daf27c0aaa4de71a594c6dce9b4bdb8af0bb24", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4d9d423859f83abbcbef2d1e5eaf98e10904fe4d08092c4d04ff8195fb0f7745", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2d85b74353be6131476adc8985004fe23681ae510de25e2aec8ed7d739a11dbb", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "e6cec0c99bcb6d6e8afb9d4ff101327a43793de4c75a2be5fed828b428867cb7", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "af26d3b94859b635f8cb0674dc6ec78e46bf71ca160dc993af635eff37cdf7d2", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f291c4ab7847dcebed6784b1bae5f1f733b39cd59a95c750102879f8035c1af2", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7f5a1595832c6fe51ef3454e6e339d2b6f3c17274835e608c467a079a213ca6e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "e47b3550509185bef278cd6d5fd2c845373aa9d359cd02a2b0cdff2912e9fc13", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "1fc92af924f90ffb6788260a33f8ba72fe72a67299f0d2eef4d5d4fd3b61975f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "f07ef728bfe79580e10765936cb36801e6d59cf7f132868128db1ecd15aadd27", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "adb35f7d3feb3c733e0fa6aaa5e370a5be94901a9701d3c604578b6db8239d4d", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "7b06ff30789050b997536963baca318cc1a9d9f781f4cd6ae20b3abd998cfb03", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "5c8f2e5d6f6180d3cb828a26320dce6c2ddce0a93dcac90b4cf4e9841b77c483", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "ac72cd97521dacfdae1851e31027008f74431fcc5c6814f5c5f1b7422b642476", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "314d0666a5d3a8e6600d07ff71ac6ffbf2127e896223866506e632d268215133", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "92862e04e5429720ea9583f073abbfa2d4871f79bc4d9c80ed4b9cb94df7019c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "da1de59fda2730294368410f3087bad19d171790f6716dd96ecf2a08d83a7bab", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "2ff2adf5166ea9b5c1bdfda5f1eb5bd395232741f2f7fae6f856a98dcc143073", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "496858e1ba82ace8a54976081eddb8f6bdf70bdd6a584a65fd82260114e4fb8f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "b392fa8b5367a1f8985788b31f9029444f89c5eb86fc80e307db860e17f3714f", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "5819779ad5a4764008315051e83d82993cd5b7635641c07762bc25e51e64169e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "338fce8e723fd02a785254529eaa473e25a7d8a5a45b67b187cc5aefae253880", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8fb9bba3d9da20292503a3569283311069c2cb2202c2d75147bbb6fac41c875e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "e6f5fd8c146f9152987a892c0f01ad8da3700a50c07be82b547ae6ff4608d6cb", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "c8ac273cc4c5176cfad2ffd89fb34abe26a44e2a73c251df695e4dbf8bbce59d", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "ce218a91b3f209a57c677b8bdd36f3d3392a2bed6c09751961a6d9b0df2c0f3d", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "3471e7616bcc597aec60f8cea8d15e677c05e251d11e180708c0580a4858552a", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8f64a0af5e2cbdb036e8676f553e0545712c476969e033fd9f71562a33d0826b", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ea364c2b9c601afe946ef8596a657bc162554aea7d182a960ef54aa09fb0165c", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "86b962f18aa2004fa4646bab6cfc1d73bf9296b9b5b631011552ae1ca2b0b92e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "e54d33a721d91b988172241964bf5f375c962ab08aaa715bdf0698a91b2a2bcc", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "856e602f3f0d7b63fa346a51ec3ef19abe1fe0575e2e915e5f000efc0b005fb8", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "68308dea4c56801f4327c36967dab8bd69b3c899eebacbac74c1db7dc4e1953e", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "1ee773be4ca2daf87b4d5e73a0eb635f8caae46b87c6590786014b865c396b01", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "7503814638fbfa46b5319ad16919c20dfcb5c43bbd952d04b454cc85b5d57993", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "16542e6a15d116be56701b2d8522dbdeb4c5c2842543bb60d8523f2861396437", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "890777630f0c3e1fd94b72544ae0142d602901280a9edd8177c7b4e405ee186e", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "792a12d143e21f2fd0f451deb47f5e5a833571856212a9b92c5ac19b76bdaf57", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "1c1ff1cc5b07f1ffaf3ae4355aed275ff9d7552cf9ba07056754bdcafb59e693", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "9ab51cff19da594a241d1a573c0adfbfeca46b9c95dca2d3897c7c867bebb5b3", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "f16b309a619b8ff5dae472a336205c7f521e90c0b454a99e22615e800604106b", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "5d9fef79456277084b74cd7a54e47c2d1c9badbcc0ac9eb000993e577ce61565", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "0905c2509bc0a6400f3941c3b1e0ad9c650e44b3a02cce33f0e1c64a845f82f2", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b771a63fbca09a916b08df43bb6a7f1d11d20ccfaadaf06b6da0a198176fd641", -"T2T1_es_eos-test_get_public_key.py::test_eos_get_public_key": "b2f5e7c75c39fad83af599cdd0a1eb2c7d8f1ffac3a289e71c60abd4f51af96e", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_buyram": "d652cfa319035cfc0cc2df6b39a49171270f933c7faf0ddccdfb1b6bd7f68f78", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_buyrambytes": "9041d53b0a2c02073fc5ef5256f8b4dbcac5bda788014be9dee4ad4232cbe193", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_delegate": "f94ec4f688a3b60f5b2671a63eb6c9e0940b46586a20f9bdb58bd580552843bf", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_deleteauth": "3c5833217910d14112e75e296b944a65450ef72589f14cc5cd8413e3607608ca", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_linkauth": "c9620471a689106b6621bce6c73f6365695607a7bbbb7784c76644f22b38745f", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_newaccount": "33f8d66642ff729338510a0fc89c09e214c5abe6fd9a175ca8fa4224f18d0358", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_refund": "064e4187cdb25c9977b9538d92e9a032823b031e39244eef265c02cf9352aa40", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_sellram": "f8bc74450ce075caeb102ca4656a3ecf28a9c38b1ee477ccd3f2c363f90276fe", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_setcontract": "0d9058c6fedcb83a9ab304b2f8ad6873fa87367131a744d91c6c5f8a5fcf76ff", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "5e6a8217baf7a956bcc13080225b74a09943133501e2268167a83d1d06124a06", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "5e6a8217baf7a956bcc13080225b74a09943133501e2268167a83d1d06124a06", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_undelegate": "98af23509f71d14d27d8a6a682449c854a245a02839edb9bb403f83314632d30", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_unknown": "df9dfea2aa4be21cc4f842b87334dbd5b98e9ee0f8430b2d646b7aa300a12996", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_unlinkauth": "410560f2d8af245dd8823f8271bfedddfee5759a05ed67226cffd3cfbab17c2b", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_updateauth": "827035ca1deafbce88ac01fbb3a5e12a08975f5c4fb66ba9c6b422e74d484e9f", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_vote": "34bd70c20b641c72061937c5673e42204e954e20c9ff8c182b2055f966094d80", -"T2T1_es_eos-test_signtx.py::test_eos_signtx_vote_proxy": "24052e9c96510f02812b666dac2acacdfcce38d06c469f9fc0983e1a822a18c4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "8364ad81419e35bae77e4e7cd6f7b77d7ddce914453265684efc6523f7feb79e", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "d8e98b1f3db9a44eafe5f489ef3ef8f219f89c0c7ee05bbfed37f65ea90d4191", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "fea923c356934d2d224b27ef2087b5b645737100c7298b757418d47ac548dd32", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d67139f6364532bf43c7ff3f88e4f01a9d09c3aaf5fd1096ef8dd04645ca0029", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "6d36703cb0545eb28b15f3bd0ffaec0db38bdc074b4f878a693102baefb30600", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "1f799a219efa3060eb6c4fbcd0f0e2e14eaa0e028484d4d39603696581355263", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "3ffb4520723eab876b2c0bb0b06059752712ffb8fc2bde4c679f976e7222a3dc", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "0bc610933373606c681d692e98e2979cc6f5182a80785fd24caf04467cf9ecc4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6810e51caf90cf56b1ac1448e049dff7b735aa7121c8f8d4e759a9d756dcd6b0", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1e08dbcdf4b16be6bfa63facec60169c3dc50a9abbbd86f2ef88c3ef3f4f5980", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "f4db23e1d695d3750cf6b2e9cf81309dbd54bad3c93e2682822a4c04d5f9a373", +"T2T1_es_eos-test_get_public_key.py::test_eos_get_public_key": "3d86a516aa3a13a45f0077ebb1abdd41ff50a40fcd8a7694f0045bee534f49c9", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_buyram": "35968401e794e08a7c70f8d9b3faebb8bab424501b55833280f1a28bb89cb66e", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_buyrambytes": "07edab92b549a582dc74423e57e0095ebde63afaa13679f87cb5582ab04113fa", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_delegate": "88268344c8007ca8bde3231e27504d8c01e3bc5a1d594da7bcfe44add58d8ff5", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_deleteauth": "a4e84d03771f0cddd7edbf604ca8caf5d2a514d646baf79ecabc00a0db6b684c", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_linkauth": "686aaf8184d6bf4a7c3c29ab15b4935a23110642bd731a493fe8e855a14a552b", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_newaccount": "e0460e31dcc102a92857bef7fde21b73b13815e0f0bc71a5d4d7980f770e64fe", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_refund": "ccdddbe938121ea7e73bdc42818fe2e732cf027c1b08ecaa1be5833b40f0e5cf", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_sellram": "1250c3c553a08b700139d35e92e923a7d3bc24d2142440d07ea0b0317796f096", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_setcontract": "88fac07996f50c33869129d3896ff65304c87f5f9d921e0a7b2324e3aa8c523e", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "3663935c70f8288d8aa3c50338ee2d328e3836d12afc686085eeace2ce123bf3", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "3663935c70f8288d8aa3c50338ee2d328e3836d12afc686085eeace2ce123bf3", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_undelegate": "7397d9b6d0297641d2e6c098036f4a36a158058b2769bb0942124446ae44a782", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_unknown": "b8157f88cefcbd2ba2676d2da5c3b4c9315536eaf12372eb92798501bc6aeaa9", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_unlinkauth": "81b1c8ad46e40b59de9306e32c9cd2f90e6eec73be858aab6fa58c53016fc2eb", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_updateauth": "a86d206a4181f24a7302a804db5adcd7f14f01ea2001d1f9ad08a8febe9df4c4", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_vote": "5148c4100a621b4a882ec0e7ef6de62f5d6c4e4269f9514b22562983e1af0e0b", +"T2T1_es_eos-test_signtx.py::test_eos_signtx_vote_proxy": "abf0b166c3d91976e46b0f74b5697c64e3bbba569ee872be54bc7b72a6087131", "T2T1_es_ethereum-test_definitions.py::test_builtin": "8494194585f6a378c4b3bcb6d652cb29cfa2088f85304ebcf6a59f96d026233e", "T2T1_es_ethereum-test_definitions.py::test_builtin_token": "9ca2bd2200794364216aaa7ba8aed576ac3da70aec6df9e5aaec7de33c84f21c", "T2T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "9da6cbd032ce540e1175b4eda8c27c7d2be035e9b380bc2a7e4ec21b3f26104a", @@ -13313,13 +13334,13 @@ "T2T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "aa922731c7ad1d859ffd3b1d5ed67db28b19438d888e89e47aa1761a389a0270", "T2T1_es_ethereum-test_definitions.py::test_external_token": "166b2d3b08cf0022bbac240455779407fdaf38693ecc3d1120fe861e7d963ae4", "T2T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "73d01b57f23083ff4d0b884875548f61f872c7545d64e32660ae8477ecd6e4f5", +"T2T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "076605de44ffd6eb66ac6132b909f2d8964b78b409b3800611c0fb0cdaa18e5f", "T2T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "b20ea2487eab2bcf5add3879e59ee7d4f3db02b5bad294271dd97ed227997799", "T2T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "43c5cb05ef9b35a9f3127b7f298c85f24788a2a4222e148b922a417976f3bc6d", +"T2T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "a207a5536334a89de3cfca264ced90ec97806875347bdfb313461cd491b198ff", "T2T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b629d39991904949fa301089dd05750315971a9cf6ea13ffc4d168b582d9b02b", "T2T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -13358,17 +13379,17 @@ "T2T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T2T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T2T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "da4c5a4c5c4a757064bf85cbc5fd66deadda37ea7ac6e9703febe1f608a77d58", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "1e22a4528175bc819142da6dbe0f042298216f5c0b30957baeab08f5b0a9ad60", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "1d84243249250309f49efa36323f4a8edd9e2fd8e330f69b39c1d2bdeb511d8d", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "d7921ad2fe58ef7dc7b57d3480ca5185e6897e66c1fc195baa2d78f241f70fa3", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "6189b4c756ad88376995ada3b2b9460ec73f219ed5edadc0e644b083af7d21c2", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "4e0e5455e1f44c3faa6a764650f52775bbbd7585bce03b19483db1a49cf54f39", -"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "16afcabf60b43f89370e95a22716ea5f714c62ea5bba55700f20121f8d809079", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "0713aede9b34fd2e7d3a3e92ad98ec5dd55efa9720ceb431ba1d57f7c41ffbcb", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c972120e5e6ae0e16bc0183db8c4253f4fb139ca6db358a3a8d63de3e4c77fb8", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "898c01c30cdd95438e62e3a01ee480d8826a0febf0400b8f612d2c200bc655b9", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8c8b9b999cc3e1387fde32aa96a531e2cb405bb4cc5ab1bd99f6d1c845239cf9", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "52871fd893cbf39f3736b44aba01d64ec168b9ee4309cd200f54f04f0aa2932d", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3e7740c7bcfe6d3d74616f23fbc4d2635b72ff60ceda219d152fdf3d44b0bfb0", +"T2T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "52e034d33b2c45a9da00964515fc9e1b32f291450a3ddcd0aae7a247ef180a98", "T2T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "03b26ec321a6535f321a990dd61c9e11393df55bc79d4545d0ff1b63dd00a83e", "T2T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "7526aad501a42f0b773914c74c2adefc5f8d2c57fbd066635bd5d811cfb33ffc", "T2T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d2b8e16cc82fc6deeb1e385d9982bf68626b6b54523236d7c1b26737067a3085", @@ -13532,26 +13553,26 @@ "T2T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "7003f4f14de998c6e0e773c0c74b605496397a47d6b5896bffaa6d6b1b5308e4", "T2T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "77ff93d1042b63b30eb98678c55e530fb7c9fe9918eec35882b8699efb0ed0c8", "T2T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "c5769aadf4edd4b1d3a644c4aa60e07db6baf279dc38b4ddad443b9a44d53dc1", -"T2T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "37399dc8cfdf98f187007e8f64fc7612c2c7dbc5ac74c1201cacdd4615236638", +"T2T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "428811596d9d0fa4dd623cd1342ce42ac0f404d5d37ad291d22eb4d9893d309d", "T2T1_es_nem-test_getaddress.py::test_nem_getaddress[False]": "672ada8b0b422237eaac651553d2b2575de810f892a004a9aba0394b18753fc2", "T2T1_es_nem-test_getaddress.py::test_nem_getaddress[True]": "fb2779b33424fea21b0766021e9b9df42fea37a7800899b360c2aee22120a7a7", -"T2T1_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "254b9b9f145605e89cfbabbb509ec2c16ff76765e62bc65fd8e0c27c84a46d4c", -"T2T1_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "f9067ce8d1749ee97e169a067ca620f44d706c05291f68e9fbd49922df14f8bd", -"T2T1_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "58aff49f643c549c376fcdec81647f5285440fa7a6b640cca0fe523e524bf1ea", -"T2T1_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "44df3c033fd3bc5d4568c92b50889e00c1b3966b8ff2449c88191f20bf52ddf7", -"T2T1_es_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "0337bdcf8ade2fd5096cf3a1fd1eed18e64eaa79750435c64b9621898e7980b7", -"T2T1_es_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "1ee1e09792b800c6ac42943c7e72caa034799e037de0924f6ee1e2bb8cb91e63", -"T2T1_es_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "f6c6775b4335f8d04f0992e68926581abd3b50081b48fa6ea6f0904a402b8cb4", -"T2T1_es_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "eb120b328d9cadbd284a5fb36f18e174ae00cd3cd468d8094cb51a8698a97c6d", -"T2T1_es_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "c40ab327ee84025921adcfac3b95c3eb0c4c6561e0515bed490dcda95560f971", -"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "db987d6007d1767832fe80cc350943884ef1d661f513c6761d13c19400804a66", -"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "8286d02eda3c13f98829782fe002b3bbbf4777b612d3b8d0553378e283cb5467", -"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "e872d46400215366660cde1b67fb0cd0b232e0a88d2b7f4e4f70ed4d70316656", -"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "9fbfc627cb6ccb7915b810d3239fbb880f1dedb42b282d8e844896d5353d514b", -"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "035333e13aaf493ab21e21d2fb3c19cdb5d6d105ed011b1492819f3a90668920", -"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "22dc4e2c4fd8a54553ee17983481d5544a36fcaba0ddfe1cd5f6e19111462bac", -"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "aa6930fd92dd141021f2e7e1a6e04045a66e6fc348c9aa6a5cf5e511a758c13d", -"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "639d98d757626e9f817bdc63549bf824fb59698347e2c2a2d219aa0ea1991725", +"T2T1_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "dca81795e3c056d8e83b57fa3410bead402a90509668a1c0dc0ea00f07cfcacb", +"T2T1_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "988f6f5a90483a1b86708c2b8a47b7ca53701a8bbccc6131a299e07cc5d419c8", +"T2T1_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "7209d253f5100b9bf32a31accf6d04dd6e992a7bbfb78d744c91aac58d8b2b13", +"T2T1_es_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "9e090727517c7dd0db6b384c7e0935ba2c3933d9eff34e479845d459c15069a9", +"T2T1_es_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "fdc8c76fe17ee720dcc2f624ad592424f48e7efee24c9703a64c34d3174cc3eb", +"T2T1_es_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "cfd9dc85b5423e036f894c0821938019cdefd18025030fdd6d548356d429c445", +"T2T1_es_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "c13bc31a029a350273295988efcc5f04f3c6050dd1d8c5dd66a7571d167b0468", +"T2T1_es_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "7c4847b4a644c456d756323981b8d65b279edaedab2b3c519fc30aff42672201", +"T2T1_es_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "5ceb0249f269c10049a27402d3d8f53e5447eecb3c3c18f39cddbe751afd5e62", +"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "3ba2a53473f9b17fa2859f238c9ab367029dde8feff5666c91581ea7de5fc68e", +"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "32363dcf2920853ff590311c5668b1b2113a149783fc01239098a7f134192884", +"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "ae88cbba67df031c99d166290b0bf892b25abe1f08562bb22db1380cfc95e920", +"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "aa22e05ce439cf2e759660f3baf7bbe61803b684de9f85f945daf5969b9a53f3", +"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "657fd4a162cbc5705cdaf865382685a18847d1e0db490c906bcc58f6239f06d5", +"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "95a7dcaf10742715b955402631e33c674e2a5224deedae2924c0c216c2e52355", +"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "7241cb9131fe9701ea347b0a60c9e6896576a7920b337760aced79fc236d374c", +"T2T1_es_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "cdef4e4a837b053d49d20283114f5a5d9eeb835d89880647f93eef8233faae01", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -13590,10 +13611,10 @@ "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "611d56d305fa5d605b191b866822428e99ab605e7634190e70d60070ed8f3195", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d224c8e21874c5a238a21cab83dc0b7ea8cf6b02f05df42b6a4cb2f3f380deb7", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "01dd081154465f634b28a748d870a044c05a05eca6fbbbb5c86596f64cfcb683", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "de1d2208a7a5d3b9ba7dd4f66e13e0dbe1efe9fe31d9e8b43fbc1104f82b5eb6", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5b0fe7daa093000e418af154d4affcc9a1f5adf63e8d82cbf1274b56e613587c", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e92fb0bc5645bd6bef799b291db6df29f43f72a25f323f8551838109ac6c7e6d", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "3441cc3c041d7e0af9f2593ed6207f571429f1274840f6b33abf9dd187d2151c", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "b2d60eb665ae2a5061a41f1a16c55498c897831743f952ac3ee1d2cab8261b2b", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "a5d91e205ca1295ce4564f5d72483fb47a63605346aab79c6dc4c7f9944f87f8", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3feef5d60a1a5f6ab43f2033ef4b0a266c70223ebbec77b67bcc14ddc9a50e40", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "faa3527677ffafb45b176cda3164dd7d88f37d541c8dd9bcbd62b447483b8ddc", @@ -13602,10 +13623,10 @@ "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a3bd99f3660d1a3cda56e9739bbefc724deb8eeb4b73246e84503bfe789bde37", "T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b8111873f3f468d5bc9aa2b1201dcffe108d65915009233381c611db0f4a0701", "T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "acc0d0370bbbe44ad16158388a4337151bb5110c1877f0e80b4c8c872e66b9b2", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "20ac87d19949eb128fbf98febb53a6c01f5fd41656a7ae768282be872f0f8d05", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "637b3b9b2314955a770349c6fbfc2ed63bb808541c0f5bab471cb199cb47285f", "T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8dd2e27e4956d24b1f2c1d1d942b03d76e25a94805b840fed2901472c493740b", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5f1963970a32edbd9e320e742b99c8b722685a049ba619f53ed481380ee0060e", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9c647fd417e3b1bab8aeab5af00db0c93c57dc435848d9c1aab637c8ac507cd4", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "239fc7a9906999cb15617e015d960ce18abe3552c946cd734089fc04b1a55627", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "25d652ece7be654fe2e7d14893559de671d5e1777088e5f180bee1270ec4e301", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -13619,9 +13640,9 @@ "T2T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8193620e8ac2d55157d048e9f83578e223d33b272b3e96d6fa91c4355de61ab3", "T2T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5839ae74faebac1d76ba2ab2dc116f72dee4cff97b93ee69d46f82568b1aa1ee", "T2T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4b66df8902d34a1dc5e30848900e24f938ca7852aef959ca5e9577c81a1c315d", -"T2T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "96f5ce353e31e08e8d4e4d23143166105376e0f8f80a7775633ccb716f356622", -"T2T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "4041515218f06e94524bb6c2c069a513ada843470b98b4fdc18996a812e746a7", -"T2T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "2e520043a1083093c1549c056116c1ab720b9717743e159b858727a284aa554d", +"T2T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b1f5ed1c2ce4ce7637814563608f6f2e2b577b84da754f4682e17b56c203fd76", +"T2T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "5b28e3c9828504bec18ad666b8de4f5df4a430f98c6e43c5490e3e9e16d98424", +"T2T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "6ae73483b317e33bcae2e140b6379542e3fb15ee1fd7da63ab5420df3bf5cf0d", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "1c053f6aa323a7f253065e34b69a5a89d7587b2a8c0a5de8da6a684b396e6041", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e2acea7abf37d39e4a7ff0cb1a3d926df4cc34f8dd8282e9f8b9d1b2f57bf83b", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "18afccd4e2092bab13a65aee64b159a221885e11f6bb7c18e8861a8bc860cfa1", @@ -13646,7 +13667,7 @@ "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3fb6e36a14a965a22268381b8aca16f2b1c9100536fa1fd26e2c14d254071dbe", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "c12520413c3239f1e2ef78d1ae1fa097149591b86c859cdde4e7051541ac0051", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9f86f40d5e846f14098140e1140ecaea9286ae1792bd21229b0a076cd4c9cafb", -"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "244b937958ab4aef07aade8a2c3d75f0ce7aef95c57b766ae301c8d4d82a3f8b", +"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9fabfd70710795e1c93e7133f0288e8a61d5f5c6b36008914eac59c051de02b", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8180416688e6dcae9688f04d4c18dfcdfdb1207aa04a0bc59dd6836ba19b6055", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7f79cb79322432ade5948e86a73c372891d4f38756f4e5b510843173384ddb91", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "0c64e69e33ddb40ea35f4fe6275ae18c495775f37d03ee1cb6cb3d7e526a80eb", @@ -13679,11 +13700,11 @@ "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c1a8b7e9e5aa45369313d2ee56b3beb59e58a99ef46856b3fdc30a6d35d29200", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "72efb6c21c1f3b17843c914931a46d609b35d7928ded7a324e5d6c5ea67c43ad", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "28ac29abd598ef153c64428653b9ff7252336bb4f55df458612be10a70381a1d", -"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "17f54ccae09b3f7ffda8bc5341de154d8326c83065620cc9e2586da2451de7a4", +"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "b077166c430c4719703c82d78f7ddbf29bf31f97cad2949e568d6832deb1262e", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9c4fce94adf5bb063d88243bcc52aaa90562ea42d01c818df3fdc8c9f9654c23", -"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "244b937958ab4aef07aade8a2c3d75f0ce7aef95c57b766ae301c8d4d82a3f8b", +"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9fabfd70710795e1c93e7133f0288e8a61d5f5c6b36008914eac59c051de02b", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "dbc69e12535f81fd753269c23d54ab21c1b416b7d9979fd051050fc9d690db5f", -"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "40ff28d04a17d65c6f762732d501a844a9b2eeea91b6033bf37b9552438e6cd8", +"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "18e36eef0a798265d522c69c844b938343fe471c7967e68007b02767e6db8a16", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "66406059bc6f863a02b9f9be09cbbd38201685eb5630fe2ea1d5ac33d5b2ad69", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "df5f6aa0700f27b48f91322d3ae0477a63a0439bf0f96975661e5345b70bc6e3", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "002710a209a2d8d0396c6467f52bf18acc232b9c7c16562a692747412a0dc1c9", @@ -13711,37 +13732,37 @@ "T2T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "04060da27823499f148b47d0a4430611706b74a52ffd05da9ac637d77d2cc895", "T2T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "fcd24a2bf50f0079ed28ebd4e1881af7f8d6ce3bd7c0e872c4e9721790805ecd", "T2T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "4714c07652593658706e7565eefa1d22cc80346b1a78a609029b17aca0c03611", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "e1a275949682d6ce0b2ef1b3a737753861dc7a8d64be676db3483300a7071f6f", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "40193e00a6dcc4c2c23e900cb56768a69055911e5dea157c88ffd284b5a8521f", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e7424a358469d42432327de13a97f5c114c6b3ca49270d013dabbfcfe845a5a5", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "04f216aa3eb515e4b32584264b471e2ce236a34d19ee08da489056304445c2ba", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "ef10f18b4d9aafa055c4a01cc0992595fa45f67581a10c7126990d7f4b3e9ad1", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b3d031427029f6ca65e97e19cd6e8302169516fa64041572fce85a862412ca30", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "2ade27fa7d4c00048700657b3ac611a3a02764a89cfb6f7ed22e82ede96b3719", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "f7730564c3c099a41f6a0859006e84dcdaa15a635dabc5469e5e6a1ca88b7172", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "febece91aefc93a8fbc1c0a50b4330e24508ed9c89a522512ce9dd3bac62cb54", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "52ab917de3de4e7f1a714bede85f98eb0aed1f74dd4fd2d8a53825c29c82aeed", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "cd232b4b9f25c2ae581bfd8ec9cadd98f7cc0a6d6518401f2eace6140ffb175d", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "bb645a9b35fd4e61313e86e8cb39e947b08a31de888f0139e7e007f9e58a2a10", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "da2e7fb4356ea2bf10daead4fbd2a6379563db14db7315f46ac7f868cc95dbe6", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "988ce8bf3de4b06ce7c52bfc8a22927c466b8734fb0724dd9279d6056032d843", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "a43c92299f99bc6e324792e9dd5ccda34d2adc8fb8e7eeb066457809f0b257bd", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "8373067217cd5268ef88f4851d5c94354dab27499b3a55e5c290c1084ab7850a", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "ab72112521b7870c8083d64403f9819647ec74865210283c2061853e24b56f08", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7c7e0c9ff137483275d46602cb09f49fe921174dc7471483a4954c9646b4cd44", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0f12806d102cf868c3b73ccc1e15bf817789413da51d6e15f1fc9004ba5e1bb9", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "6567ca10b953485c27db3b013a9a16180dd8d3fc1050f88c718223995f94283c", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8f58708abd7c2abb6bac0f6233547e39ffa835c6d0985aa010dc126b90b46251", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "de1821ab4a72ff67c3f4f19cb9c8e2b56e05c80680735d0339782c8be1771c61", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "7aa7edfa224e4a35985a780c40f2c2b820c6b6a59da0d21490ea3efc0dffe70f", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "70dcdc49b7296999b55c0ffae6898e5758634bcc4175db294357a564759ae504", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "2d2f8692dbe71ce565dd78849dc888cbb94eb2e4cc63471de0b50930eddf134a", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f3d01f3d94588d4f0b7be2cac2adef0e163c7fbcc1227771722b160b5197be12", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "9699503349c6012c0754b6d6761c58aa85ee253d7c75e37774f97be4ba4ac140", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8775fb7c37a2948937d1fb992199b1c9d602aaec65fa7db31b6133b8b5757955", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "a5d3be33997d684697091a2dfff21ca9c4eb05999b7b1042a65534600e6590fc", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "ab72112521b7870c8083d64403f9819647ec74865210283c2061853e24b56f08", -"T2T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "cf1f6e8a230ff0c44b7350a387451e3793daae19ba2b862c77ef83c3d48f6200", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "a306b6c509e773766f37795ab30be0527b3451bdc5d997aa03c7081626556997", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8eb7caa3a04a6f778df516e1bdcd4b8cc0772a5d6b087bf2dc9a56f59a28b3e7", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "aa3e8efaa00c85063b5c63510f4abd438d79481c1c58ef7b1d6ae13a5750ddc5", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "c098d2c55d42c6908254f8fdf733761913ac0fca924bf3e435479fd4c6916828", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "6064c611e04bd6a83c9a669986aa9b2bc4f9f8c8c0794938105465b38b769387", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4662d8d95fd424491936508141c4097f1670a5e79a0ccb8b3675d5320d4170c9", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c7772bfd1a16ccf5c4c6ad1cbcba54c16531cc32878e1b7cc08c8a32ba0084b5", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "1b2cd64f52eee7eda1494403e7faef725b0a0f52b0e73e9aaaa833fcd27b548b", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "7551222e871ba0640487c704c6aa14953b6f6e3a9645df21de7d1251a75457c1", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bec35cb61debe6248e87b4e6c6538ec4b6fae18986333e729b6f583377a9a17d", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "9fe45d7e7aa248583c64af05fee267d62468ef2a9ef29bf1e55b87c4f3bccfb2", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "20907eb886754ce90caa25abd015d834e7a6ddb21feaaf41c5e9c43cc9ba587c", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "8fdcd17f02592d18faa42c5b10330ab544b6481dda8138705bdafec9282b5b6a", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "bf1945431ddc845aeceb844211c56518c1f77c01986c138a252f6a52205df5a4", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "1420ac2dee6ee2fca765f16b7ea1ee62bf91d0ddcfb61beece7081f8019864ea", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e7d72e4f532c978bcd24ae594f9c9f0c460a262dd360bf3966796ed2e36025aa", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "6b4ef8932f6e76ce105a93633b7d3e7fc6745ded42d6e642e02ad80f2dfe9420", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "8b879c6307f9f187009699754ebebd27eaf1959c3ae414cde05da7d500de88dc", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "36aef1197db8be2f4e8a454af0f66b93de7d9d9474327e68fa9eb249e77283c1", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "651f90e050cc597e2a4acf960f70318efe74ca5a7e8cacf89818d0762787e892", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d50238cea8fa03e14e6655721cc42619de9c559c7f46ef075aff8cab9a0e0e94", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "9e8e3de394cb7c096a79afa4c83b1dc749e0fddd98d7756dd10421c92b2e55ab", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "560bd9e0e1579a4e8f82db3b24cc2ea5ce6634e019913943d27b4256de2d35b4", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "ba0fca04752511b33ecfb897d3d56e9ffa70d37cf95d276723a044f4b4fa73e5", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "199c39fe7d0e66cc9da902dec55a9fd7eed99201c87630e7bdf48eb934ba9764", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "07f90866c3d0bfd36a1b5ad542b6245ca824950a3c04901458746a70a9268e2b", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5c983d0b8888df5f286e43f75cb2812fb788509dc287b71443abfaac67b92632", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "32cd24c1852c28777346119e59e336787f8b1ef8cf0a3d94e482be42577fcf5b", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "597480b947a91b4bbc8a34f69941e0eff43acb9c001e6a499170514924410509", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "6b4ef8932f6e76ce105a93633b7d3e7fc6745ded42d6e642e02ad80f2dfe9420", +"T2T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "da70906b0740ee06e4fbf2196663b1254b7d1b93b84c331e41f57324ba4f894f", "T2T1_es_test_autolock.py::test_apply_auto_lock_delay": "a4c293750a4dd093f7b6129b048b9d5150e6a97ed78d0a7bbdbe490047edf09d", "T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", "T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", @@ -13779,22 +13800,22 @@ "T2T1_es_test_language.py::test_error_invalid_signature": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", "T2T1_es_test_language.py::test_error_too_long": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", "T2T1_es_test_language.py::test_error_version_mismatch": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T2T1_es_test_language.py::test_full_language_change[cs]": "b4fac0eb57f5f82f94c405a0330d461a5c796fb30036572729764e1960e0b86e", -"T2T1_es_test_language.py::test_full_language_change[de]": "e798172fac192ebca9f768086bc6f0674903fe4cae4ac7bad41c5893e6543125", +"T2T1_es_test_language.py::test_full_language_change[cs]": "7868720b322fbc1b8b54781782b634bdc366b4bcc1b59c5e23797c75e29dddc5", +"T2T1_es_test_language.py::test_full_language_change[de]": "4c38b27038c782ed47ee9b0a111313b838255f92f91abf6405606ae9d533c92b", "T2T1_es_test_language.py::test_full_language_change[en]": "cb67a2e2dfe9144a9c9099501951fca5cf7df2d034556b6a99598311da342e5e", "T2T1_es_test_language.py::test_full_language_change[es]": "376683a130d6ac67a2c79b8ff3d43249fd60c3927322bcb7280a070a3aaf4cff", "T2T1_es_test_language.py::test_full_language_change[fr]": "b6ac036a7eddacbdb0066ce4589324242935f01c9af9523df89b32d3bb34af28", -"T2T1_es_test_language.py::test_header_trailing_data": "a8f1cd89bfdc467c55dc2c98ae9d976f94070753d73985818039e1ccbbe4eca5", +"T2T1_es_test_language.py::test_header_trailing_data": "3a92b8f6d81355e4e1dae92a1811aec9a8d1e95df0e01ca5a21eb8395f46aa67", "T2T1_es_test_language.py::test_language_is_removed_after_wipe": "878d668652d773385db2de8ca685f0bfb7710f42e1805e508ccc3d3631807776", "T2T1_es_test_language.py::test_reject_update": "af4fcd9735b37dce8a96d113629cb38e9f977dca094517de8140f3195f899f27", -"T2T1_es_test_language.py::test_silent_first_install[False-False]": "3af77e84e03933e28fb4dcb3171174e375cd8e1ed91553d84d95eba71c7d0a80", -"T2T1_es_test_language.py::test_silent_first_install[None-False]": "3af77e84e03933e28fb4dcb3171174e375cd8e1ed91553d84d95eba71c7d0a80", -"T2T1_es_test_language.py::test_silent_first_install[True-True]": "fe18a9ec4fef7289c316f0482be9711ad1afa32e44fe12af47479cc0a12bf83e", -"T2T1_es_test_language.py::test_switch_from_english[None]": "08dcee097442f4bf73560ff86180332af4104d81e165c0428b44ec2319143386", -"T2T1_es_test_language.py::test_switch_from_english[True]": "08dcee097442f4bf73560ff86180332af4104d81e165c0428b44ec2319143386", +"T2T1_es_test_language.py::test_silent_first_install[False-False]": "f9be8384d13e45bbc4ac9c1ab203edb192979d183bbd6b5dd02b67b4162fb4a3", +"T2T1_es_test_language.py::test_silent_first_install[None-False]": "f9be8384d13e45bbc4ac9c1ab203edb192979d183bbd6b5dd02b67b4162fb4a3", +"T2T1_es_test_language.py::test_silent_first_install[True-True]": "e725a1ff5d7260a2774b31f9cda641ab13dd130359dce6e273540d1842d7fd5e", +"T2T1_es_test_language.py::test_switch_from_english[None]": "d75f1279c1c1cb40ddab61946b24315949804d4f639ade39c84c1b5647e4c868", +"T2T1_es_test_language.py::test_switch_from_english[True]": "d75f1279c1c1cb40ddab61946b24315949804d4f639ade39c84c1b5647e4c868", "T2T1_es_test_language.py::test_switch_from_english_not_silent": "e9783608cc1ace676e131ac0060a18d4926cd83ed7547cd52610bbc252f38f9b", -"T2T1_es_test_language.py::test_switch_language": "876e99be5099f0373a6fb0d339d83f9856cca71dcd6d530f3457905d0da6eefb", -"T2T1_es_test_language.py::test_translations_renders_on_screen": "fe82ef54f571300f8bb31f525dd97a6625f39f3c1ac117360753beb29d610132", +"T2T1_es_test_language.py::test_switch_language": "d27e11660724f07715a88a19ca005e49c22fff75050f4a51ae49eadd8adc271a", +"T2T1_es_test_language.py::test_translations_renders_on_screen": "fed6eb186d9f50c47bfdf23caec18f42c418d7dbbc1dddfea147001df3d289c2", "T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "10ca9d457273961cc4b57726947f506282dff36b5dacc94cac1c442f528c2fef", "T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", "T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", @@ -13809,11 +13830,11 @@ "T2T1_es_test_msg_backup_device.py::test_backup_bip39": "72587b8abaf39c6437ceebda9b5adc0cd0dc1ba55309a12bc7aacd7519e5e54d", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "d2f760e520d57aab9f032b9890f7cdee4cd6e8399d554468ba9183f1c8be3685", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "400528125d0574ff08405d3347572f5628ef46048603ac0b6eef9ee035af6f8c", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "741fccffebb1fd852b2cbde990f1cf62981283ddb7dd3e0442ee73f475ff586a", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "4f5e6954c3a26bd7298836ff6c2eab3a840dafd94858184e971b28bbe5e2ad78", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e7e6f40d948aac962109dda203c6d993c62e8fd9a192ec7c360e3939d7ec7d61", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8996c33a3c1cf3d1acffa4e9aa359c27fb0db7d31557a0d73174c6b890b688a6", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c11497dbfdf0bedfc960c5cd13224af3f0ba0c8f59972628f230d022f629f54e", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "777c8dd5ce222444f6c0bec022277d3a2b778933ebe348a20c88405ce3a8b3aa", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "7e204495959829e314e29ae8a5da7429eaa843ae642e2ca5e4d304b32bc2adb1", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e2be7305c3626c147420fd8c575df6c43765230956e332363e48e13db91a0d5f", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "829ee4054552159b7d8ac7973544ecd42e4a40f189e522599e5bd08d3b7bfb5b", "T2T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", "T2T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", "T2T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -13888,10 +13909,10 @@ "T2T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "55ac235b00f0084ad9975ed77ed430f7bec60ce9bd44be26edbe040c63d13dbf", "T2T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "7633a085ff69e32fbd6fe949f1d277826ef7894a8e7d26081f320ad97c153e13", "T2T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ea1194f7be788d0fc8fa69410dd59ae838fce2d34de4cbe414852a403e2a135e", -"T2T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "76c4436562e82ec6268d0cebb0d5b09d819b90f47cb2bb87459f6aea0c600c7a", +"T2T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "93d724be6eed8bb1d096ba4355c9d664abab8839a11c42a98223f483ea315c47", +"T2T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "54284b8e906c0c81faa5f6878df6acc407426cf864512117760464442ae1b5ad", "T2T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "69f5728b5b51fdb335af47c634f5b373fe4197a5d6b991fcba2ede286479039b", -"T2T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4bac64dc2362b1c2cd359d513e3528fd104c6c3426327e011af7f1de5947b641", +"T2T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "1e5dc9ab2ff86427a9e0ffc4f2a9e22349de3f0b72e5e0827cc84f58283d1f39", "T2T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "2ea80448ee8e142036620cc6c75b2e9723fbfd6576f00c74f8570afdb114b721", "T2T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ebd8ddd04365f7adc5c44c1bd71d63b9b8525a6c067b42c60e780f87e9151807", "T2T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "98af1b069d8d2ec445e299026372d52efef2d421c83ba227751b7c379aeed62d", @@ -13899,7 +13920,7 @@ "T2T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e5f39fb25c07f25efda59a6d2f5e98f5fdbdb290f43fd7f7dee9aad750fc1ec5", "T2T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "1dbb85770758f22114c5a284a39003ab0b08f97422e397257297687058a80e99", "T2T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "02efd68c800748415e2916b23f2294a0db68d7dfe85c2310abf0968f38ea294e", -"T2T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "8ecce5a25a8b7f20ed87aaa9cd95ee9f3468c4d52f1f464fe5b5fe65602f9911", +"T2T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "510d6dc5e989c661f2a28ac7c981b6f2ede6a4a047b1823bd115930067b5e2a1", "T2T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8e5604ed25002ef32b1008ced0613b09f4288bdd694be5ff39c4e5388642a834", "T2T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ad73951025fa7db7c193ed33d02d7706ddd6851d57a70ced5206a8352fceb822", "T2T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "c5368093c0ee1ca1da67bc534c236a3d7edb3ab87da9ce0eb8e1e7a9ec109402", @@ -13917,13 +13938,13 @@ "T2T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "7ea45cf6a3adaea6ddcce2e109852af1c914fe90daa4338f981b0195d5c28926", "T2T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "d2a2787fdc79ce54707d28c267cf536b0568bce05586a6c049bd9a3ddba9f426", "T2T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "f13618ac157b732c7883e0427d58a2098b744646c65e2ab5f7f47927889e33aa", -"T2T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "99996db48c0083cdc205c6542a48f9e80228238842e7572a00b7b58bc500a688", +"T2T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "1f0fc8ab7ccedfef4f08e2bd52c3aa21f59b52d1451723e3842627568f40e172", "T2T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", "T2T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", -"T2T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "f590fb3f4b8a69a3e0feaf58f65a67aa7a4ada8d89184a549434c5a1ec17b332", +"T2T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "04b64ea2e1fcd9b6297ddd995ee133a049a0e85f6500d6a9c3b6b4543479301b", "T2T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", "T2T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", -"T2T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "f590fb3f4b8a69a3e0feaf58f65a67aa7a4ada8d89184a549434c5a1ec17b332", +"T2T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "04b64ea2e1fcd9b6297ddd995ee133a049a0e85f6500d6a9c3b6b4543479301b", "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "218c7eef4442e4105565659d8600f60e9f5aec10b67e53f8f5881d2c79c32480", "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "e4b10c08b0d94eab8a1aed7a5877331948e0645884946c34a2bdbde039ba066e", "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7790c2972c163135877452cb26534364b3dd2c2e9ea74855d7f8e301f63f1c70", @@ -14413,8 +14434,8 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0a67d101b35dbdaaebb5f344a61801545445396c2d7270a9adb3132d0f58ac3d", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5a89c7e7bbc72bb983afc2c2af60d95921ddf2708616d2d5c342b25a3a314e6a", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4f594bf9acd05f585a15ac45d7a5d260129d4eafa00743d26b24f5772a918869", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c6cfb9566605b5788ab3db84b0bb37bd658636d095cf5298f898e143f42b2878", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "bbd44c98827134ffaa8ce0514067df0b42ac97c6c0520d207c90c8a5e6f91d52", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c4613563acea836244a7ecd2d0d9caef2428b0be3b5d164c8803ec492bbbea23", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "95735cb81c4ccc922fd7758fb317fbe5f538e90ed4ac7b9c97de25a674218a31", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "86e8b7419f6d6c21a27c253eb0b35c0d9436a289c25e8eeffca9214d43c8e82f", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "cee382f33dfe57030dfc80193a7bb0ac01a2fb021b9abb42526229f2bdad11a5", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6bf47689dc005ff8b2c8d41dd84c58c39ff0b298e2e2f1ef985e54bf75e8ed1d", @@ -14438,23 +14459,23 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8d857c8a665933ce77c183fbda26f4284b900b947201dfe6d2817052ff903978", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "db702e6217832d72ba26b502e5e77fca0a8595d16000ac51f890c7484f04bb08", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "dfc6d464383b4e5c3c89d597298b510df711303b428c6256dbb63e37fc9d67bd", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "889b45dcf699cdc86d949b52f708c9060bd9508b5cebbf1e407013d69b14cb63", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "680ff2f99b22cb524f7f6971717527a3df7277d74523892848024636de05bf8e", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ef6ba3ae48ce97e86d94fb7b690f9cf29f6c6e3f5813eb3725c06d8601febe2f", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "14b8de9507ea58dfee2ca20e82917242863f3c4cb0522311e64ae70f178eef93", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "d20c38e3ea61ab99ced022b450f754689cccde13e1a7317926ee02c41b5bdd6f", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "64af1bac919a7051b43e17638922e127d9a17c95e14a19cca5b5effe4b5550d8", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c590d6c1b26a66dd4a3555d89cfc07cb54b4be8913117d0d5503be3e53ebc85d", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "35abc08942aaa0f711188d5bda2838f330b1ec4b982fd0e3cb0ec02becdbd975", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "85a2020a385dd9e4a884f1b3cf97c1aec50773add42833b886ed71a6d75db6fd", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cf3be7e08377134c4118bfe9147a6783fa365288d711a8bbf80eea017ebe1f07", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "8cc8d612a45d879eb1a6df2cc2d34dc805a1dfaddfb6e72e8c700a6c84ecc5c8", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "1051b54c6a30b210435f16bd1579f3d14b160c34d2092b0904992b9e7ea2e643", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4d53cb5d850937ff0ae36e06009195fe100aec3cb45f7d64d3952d6c97680894", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "79b0d6eeeceb4857b0ef35eaf954e634f1e23cef5c564ec0c6e4daf47269c689", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0408f2010d1dbbad0ad5b647d1a4844ccd092f7fdae40d927a07bd63003335e1", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "551de185b7f7aebdbd16330acd8cfc2db0d7f4af0c33b284d1202445eaffb75c", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ad892b092565d7eff3f22b73c478b17d207761ce22c8f721b71a184876238d35", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "e8f0daca8ab522f7c97d3624ee13922711cbb39a9d35e7dc64b6c062e17ff336", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a2557fb826e3bd3568bf3918363865b368b2f0ada5032de9574a1957c6a26b81", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "65b1a1518e976ac9fdda81403d8ce9b60a208b0648cb248202a36034a9bc5258", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fb2d9ec0389f9fc2d5fe8a0481e76b4a123c4cac1b46e872ac8441e689eabb71", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fc046d0cb15f58374373c56c6b9add1175ef1bebe48ded0714d70f29fdb5e96b", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "00d1ece5abbd4adaeee7283b457659eabb6cf1c12557bdae4fa8b0aad0717476", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "db3323394e27a0143e723323ff175d887c934e8db94a2547758e0f06e656302d", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "beec67963707bd043d8ee5fc4d331b9778823c63942cbee205f0190ca12806e4", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "2205a87e30b0253a2c5c9d1ae887d6ea49170069582d120bef35f660abee1952", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "a74cd859271addbae5730810e7475ccbe256911e0aa2d10841df18c062530970", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "29c7a13359a599d2948e10968e1cbf20dc442aa188913a90bb84a83b6e7bd633", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "4e9de82c3c7beee2a39cb7bf711c5abf24a5e43f3ac5b08cff41df3ad3820d9d", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cdce5e977765d9c237c171e49a73b16b09be0750672de56cb2c1a1719890a333", @@ -14478,60 +14499,60 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "89e6074f93a6b6d0b8ad8a333ce8642585ecd60ae63707e1a18da7d71482506a", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "206fde383d014964bab15b71d559236af7e3e13387a342f80b2ffb4ebc10bc8b", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f41b07bee021566060477286e97e352a41a15e52cd4b1656a283bc59f4e49069", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "efa76a14a6ecd3f43b04ddbd890e07ef8b57739e5f5d2df722de64be893ae5c0", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "98ab69bafd0acd5c6ffb4d6db536910b103c07a653c667e10cadea8e05cddabb", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4ac3e8b9901e162a7194e19bc26cea2ba93642956251fe5496ad172f89052714", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "bf07c7b8d404fc098b2ee78882cf99a24343dde471900ff4485a7b3921e88921", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "fa69507aedf12106821cc460468957cb3486d9b8747d24745f1e0d1f018cbf98", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "5062846d9217254ae6b2b988861a7c9191e28a2fa0e0b3229a9068fbf4294767", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "95d14f67f789b2c93a55cab14b2e0c96c9c30f72898a22eb4296ec8729ac7cff", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ffdb9bd91151fcf5be1fc569e687cf8bda303f8894acd0c23e635964fad3a32c", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "befd923116fd7afc9b8600b525123c06283e8b6ba749a1e07592b5aae20316c0", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3b8e31ef6838f5b86b07a1c8b1f7bc75454e1859cd02d4d07428209c56a637eb", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "818a863229f6c33ec4000244b602ae61687c7228ad3e2b6d837a8937ab1c098e", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "fa1733e6fc0aadb19dff97a974b92c16ed3282a54945614c35b1f4318a8f07ee", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "76081aebdfd610137fedfc4c789fe5f7dc250c7fa9fdc01ccfee1b31efb83a55", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1d6c3464884bbe0aba0ff1488e191734e29fc1fd8fff67b6654b307f58d9ade1", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "16f239d80106dc141d87f61f6a5776a8132b69bc359a66e50bc7a8ae22449b97", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0a3b0e9311f95dd28b59dce4696652ac52cb03caab472b2ef9a2b8b5e20d9bff", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a20fa054526a73917a2e5f905f21b7ac657c7e3f884af8e9da37b4542f70d2c3", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "b5349e05e62855f42312ace98c7dd7f30afb8978288added258c9a7d38408398", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e0a73612a6f2f8f08dcc216b752c8c95b38a8c086a1a68c8cd101f1c61f7d464", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "7644134264cf3aeb43a5d8e1c6debd8d04d8427a5dd5bfae9eb7a3599d58f3a3", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "888e3e36ce4f9b1f65b534ecda435ca9bb7ca7c545f8ef22e97f35bbe91a2ee1", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "7ec0d5e6dcd1abdbbced04d05878b05430a4dad45fd6677a668ad98dd0a92d7c", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "dd5d43e4bd9bb7d2c49bbbc9d687396336b941aa7d2a204c6f35643712cbe367", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4fd94fb9e0699af7c4e0261e8883631c00e0889a06ad5edccae6140295c7c093", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "41918c6b71a4fe2e1006d43c572b59acffd2af256a4a9e33637de3ebbf45a92b", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c6016a24ea6eef360871e3487a139ef0f686d5e1129d847560e2bb5f48a1bf0b", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "acca25b0c591f1e32d73dd059928e45475c8eeb9aec6fe5a51106ba7c9367cbd", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "3268018697905bb38999c4e2ab5413b2d2104556b927f88a73375965d5cb813e", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "cafecad60c10138e59c170b259d20d5288777a4a8f4ab207abce94639fe1b246", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "15b4876c1f87c0c965d18fce18615956cedbc4de8becbced645b75fefdb93579", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "cbe1b06a81e8b177b447584bd283a55762894551fed404dce92caeb10cacf85d", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "116e7cb742136f6a8fbd61ebe49aca6e82377ce0ed8efff6d8732298ef2aedb9", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a471e6b254825792cbfb99b67026d156495aad79fdf3a83d9a587c296ce310a6", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "7f7bb2f3d192a4d7773a2c006513c1b6769485c3355cd1492a83286331c613a0", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f60cf2edfdd88c8a22df5c5a4655f046996dca8cff3773d9b55169660c042f07", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "7de22eeb6c59456b7319cac5a4eb1264062c35935c7d727361908116d45d727b", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "541dd35959c599b82eede7a3336ff68673cd35bf1f0e1c6da7359d6b9f36968d", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e82164f38cc710b7f53b01b4b6445c6edfe8edd8d9dbf1c29a912c9211b312dc", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "21f83843259aa869a6127df0788a7c37b1957c495526a22bf053779f36f68858", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "778e4ab5b9a8df87228d72fd43932f95e9cdf58c7ae03aa475b412cec48bbbaf", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "5c82462aa9aa9b37f312a51c936fa1236e6b05a7d049e0070bc797842f6a6def", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "e728ee2b093f71e19f8210a4c431283acc53d6790fa6de22e617a939638f7cbd", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "bb742ec27469932a02c0f38e46a1f07da90ec896c9b3ab6b8221434d15eb8932", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "08e85b1b0252629fe5170f1afcc6febf0061016f059eeb11bcc83f28e20079cb", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "74728cc1862fb0f3c3b0daecba04fd6dd090ab314cc899da7c7c29b50c57ca4b", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "9fe5245c5ec4941d3b1bb000d6212f05e5a5653553c86daa15ec82a1ba49d103", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "d454a300a25312d4ef81351e68b22a46a95f4d24a87efcb4be077658c915f980", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c3a13dda79857b8991caccb8d1dd83cfc0ca135d5d9f900130d644166bb7486a", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "b0df6d24828a859f565973cff525ea14b666fea211fd81cf8df229b0eb117513", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e85ba42d143ef8718ab23535e509d4f2162faaffb290f31ad0c4774e3f0dbe8b", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "41338181a4e1dd1e8fa5ca591cbbb8ff56ebd3f4752eabf4a2fa4e2ea30eb70a", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "87f49008b06d12d0ab16d66fa3d109505889f898de59b29de4cecd6299ff21aa", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "df049cbfe85eb8bb41c3d76b5ffb1433a9f2f05612421e66b367c977649762c2", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e1f74521d1e57c0cf538c1e62ff776c17b40db2571785ec3a8c85707962182bf", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "56310309d59d05f9bd90623f7942e6155c395efced4699017088626f6cf5cce2", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "dbbd5d232056a68672c9d75e475be928755292362e7bc6c7ea35661b37c7bd3e", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "0baaf6566d134b2c016869d54064e62ef59c054df41661baac274d208befabf8", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "945d9149be0737f6c12601eac668947322a3ced639764f91ff7527fd0bcdab66", "T2T1_fr_cardano-test_derivations.py::test_bad_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_cardano-test_derivations.py::test_ledger_available_always": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "d231578d760d0aa5d2f72e5e4e37b696cf925c8845db43fec1477887051e4706", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "2bb54df80480a997945db38057e409aedc8802666f10c096310cb88b9de9a03f", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "08525833be2bd7429713afb3d7d2f560169ccf44f8eb1dceb52b28be9835af1e", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "38daa8934b013a04363083f4038987eadcfa8ac4c3b478bddb3f4b5e41b07834", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "e833b259b5cb9b958522a21c1d56722eb8277a6aaa09ae12e22fc25b6f29f1fb", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "6c139eebcd2e125a80af0c2cb40b06b2fcd60b505ecb6997fbfb5ebaeb8dbe18", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "f02035c5fc40bde88f56ba3b8dd22b00f024c2c576aa1838fb02c1d9119d5ccd", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "1a4542cf900c0270378970618487e992441959357699ce44d29818dbcd2b7f38", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "1aa16a31180e8cfc3b2020a9276c76a578caa3f248800db08b21db3ddc8e9b4f", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "01748c73845a779f1dad873d4aed970187f52d1ae9cdef3d4ea773253f05642b", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "0c98509d9b1c825c67871b1c8a30954870da30e775e1169ec0a9ae0b366a0e7d", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "fc0d361796a868078712d23b22c034d22ea3dca028803f6706ea25bd5db6ab74", -"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ac4c2bdf01d0566cd89a8374fb10ba2f0acb5e552e923ac755e0c348e9335adf", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "cb99d5ac65ed7932428fee58928207b19174169a4dcb0813726ce31078e998bb", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "ae26a68cc262accf92181b3db1d5978b1c80b68dcc92bad76a787a17dcb4a7b1", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4d90cc7778f4b702a828487d49b652cff09a1b118f6e8ffd1cf571188a91abd2", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "d110c223035c1f23788d4f971a058a951aa10b581211ef205aee54ae21ee92d4", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "60faa29bf4796169937fbf0dc2b2591e990178908f28d9ac934169ea9a5839ba", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "a04fa19352fcf26242b02bcd6a84b6bb7edff5a2c8cc256b8e1c9441d8caa070", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "9f250649a3b5e887cb8c3ef2d031ebbea7964e4a1a51c33c7da3bfec1509a0b1", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "742fda033e3e09925c2875099dd5694041237750679a1dd8655d876124f9bcdf", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "6d78e8ff792244646bd28d9f5152a1038e468b32bec9fb1dcf915a6d1c9c2d69", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "72d157bb8c44f7d45bc5fa46da6173a9556ceade2a9ee51e23ef739c5f33f3fc", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "988f2f4e5e3e73371ac643252bf76a11718bbfca40bb643839eb692f77c153bb", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "1cac85a1d95766ed1a40f26202aa0ad242ebbe29197ddd1f8536af96b9139198", +"T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "396e2461990856920dd261bda781ce7472cf3b49331062801037bf84bde31023", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a70f36ba6d7379273b9651315e9f24ea61cdc97a259366f8dc48dafda7471b12", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9cef6662f7bc04ba3f2c69e3035167e2b1ded82ee726d07e8f6e6616160f8c13", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "fc0af93e1e7844b00af04c714caa6e3e857575ccfc9db0a92c44f9f3ed3267fe", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4e466020159326fabd4dddd4659e6c6f593f315ec28ca2ee40b6b06e3a46e957", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "6431a402ed1eac6d6a74d8438f56636b46d0ff64b6a4246761adf1a2eb58bbb7", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9b6a3ae8a310c2c9961f69bbef0463f16335350724a62f05899b99a4f9f63550", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ea8961c7c4310e9013b0175413956ba55a39aed8a5185387be2469e376329237", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", @@ -14595,7 +14616,7 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11ef6fc1e148b4777e04173fda74991e7f623e9c4e0c4a5d7dcd4d9bf2af7e2e", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5af39a12e659a47428f0062fb7c1bf6957758cb6550168ff443a1314e6d7e94a", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "bc11f996c3df62edc0b4c890f8bc84f0255a7dabf43cf60f4261b620eedc02e4", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", @@ -14742,22 +14763,22 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "544b9874c11f01f879e1742d9ea7ba81f4d2867fac9250f6a73edd30b06470f0", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "265bf5540235b94968295e0e3c03600eac05c4c24ba264f8ef3bca137e81a56f", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d7daa5e86a102c7c2c014cc041360ae867345b4df09ca7c3b79d051d5b7bcdcc", -"T2T1_fr_eos-test_get_public_key.py::test_eos_get_public_key": "25abd08e057278f0b3f576b3003f2344f61da8adb1c77f6c286a54ea87086ddd", +"T2T1_fr_eos-test_get_public_key.py::test_eos_get_public_key": "426122273a409c26da3364602f4cfd8314d6fb006fd12c70147f1a1ea3487c86", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_buyram": "ad540563939247f6649d431f46ac9caed77982b1c04c0047b2979960c4ddd9d3", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_buyrambytes": "46d0ef666c282ffd6b90d7adc6b032df0486328dff73cab4cf907d04096665f9", -"T2T1_fr_eos-test_signtx.py::test_eos_signtx_delegate": "309766fe13ea7f17b8ed26b3fe59b6cf98e14c18c31f3a6ba7e00f7b56460033", +"T2T1_fr_eos-test_signtx.py::test_eos_signtx_delegate": "49f563d4b09b55af617700da86f8eb51433ca7345f48b8861f60570509d3db50", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_deleteauth": "5ee9850fabda5bf5c8bf7f8580d3bff8c1f707db62fdbc099dbc3af9c3f5e43c", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_linkauth": "994f75fb84d261332443f3e699d5b681ce7f0f16da9eb9f2a631847bfbf38425", -"T2T1_fr_eos-test_signtx.py::test_eos_signtx_newaccount": "b32519d34c7f403bbb37482ceb4c7cc21f53369b0bfd2e059a46f7b9f6fcd42f", +"T2T1_fr_eos-test_signtx.py::test_eos_signtx_newaccount": "ab44c5eab740d114cc055f78b106d7c42ed80661258cb3aa3a7ba7967afdbc10", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_refund": "583809cdaedf5db4f45d0013baafe543a572c65f7e15f8eb44cd7a81ae453e49", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_sellram": "23c2c62ed1a0bc739c61c8ddba0e0ec2044113b9a259e5a672103d7aa4197c96", -"T2T1_fr_eos-test_signtx.py::test_eos_signtx_setcontract": "d8f0d668d882e4128553b023893b1e3bd355e9a0f16dd9056b851f6c36955fef", +"T2T1_fr_eos-test_signtx.py::test_eos_signtx_setcontract": "187afd4aba9068faa7ca48d43d4534815ee224d14bae6e5d28ae885363330c07", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "c730aad74d7a091476e69899e9eea09366b5f9bdfb4d397ea8be6e9fec3b4d8f", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "c730aad74d7a091476e69899e9eea09366b5f9bdfb4d397ea8be6e9fec3b4d8f", -"T2T1_fr_eos-test_signtx.py::test_eos_signtx_undelegate": "8706382b0c84534fee44ede32ee6cd31adccf48aa7e40ac62ef67f18097540ef", -"T2T1_fr_eos-test_signtx.py::test_eos_signtx_unknown": "97ba456909404bdf6c37a168c230a3bc6d001f2506b220766a613d2d2f288c89", +"T2T1_fr_eos-test_signtx.py::test_eos_signtx_undelegate": "a0d035c4f6ee34f21ca563993b1480641686d64071d2eb1819f4c23979f356b3", +"T2T1_fr_eos-test_signtx.py::test_eos_signtx_unknown": "2eff17e1268605db2c2fbc015eeddf13953ac599e8dcea24d68f6f458b5a476a", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_unlinkauth": "0cf44eda74521a26246eac5912ccdd77d89a8856e03e607724681d1426704da3", -"T2T1_fr_eos-test_signtx.py::test_eos_signtx_updateauth": "f017268e268858fb4e3469ffc159e2f37415a972ddd7ca25bc2f987e1a1c54a3", +"T2T1_fr_eos-test_signtx.py::test_eos_signtx_updateauth": "0c5ed0f0a547ef6f2e80bcb4364afe286e30231877ff48e303e505a4fdad278b", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_vote": "d17b9d3c59216517638700e5bf93d90f6802690ea04a1ef089242e38e9369790", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_vote_proxy": "49130facb02c1ea05f52c9451da2e65b92828ad9a7be8800ab760f77f49f9872", "T2T1_fr_ethereum-test_definitions.py::test_builtin": "1c98ed8141eda4ba6a5c7d2e1ddc0fadfd150254375d162785e57bccdceed17a", @@ -14825,7 +14846,7 @@ "T2T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", "T2T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", "T2T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "ec97c79dc2b8f2d6a558201b8542ad757454f0a0f7c4a2d8a78d5713eafbacf6", -"T2T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "fdb69f64055c31217cc083e54ef103725b097371c81508a774a0414520b741b3", +"T2T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "9edcaefa32f557201dc1de665465c1f822a60f55b92be958266933c2f72863c4", "T2T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "25b35c5ae72807dcbdad24b13e59f8ef5c848834ab1eaa4eee47a3516d851f7f", "T2T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "28fff7f0bdd2772e45e64540efe47642f2040214d99c710213aa71f86d75331e", "T2T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "538dd68f150e80065f047aeac803a9b31ebde85693670c683391c1658d1c5215", @@ -14957,7 +14978,7 @@ "T2T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "376e4ed50e9585dc31d297f1d7578b662682bf95e07ad2750865856137411318", "T2T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "7bf2cab0d6d11d37cb7d723530bdf1a6fdf9627c6f03ddb3372b6429d3ccc90c", "T2T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "80ce58572ed6e634c4b46b1e335b96def1c83ba4d63d18f22b86040a4689a648", -"T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "86334968f5836700bf3e9ad194713938d0637585fea366211c3635027701fa3e", +"T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e2fae2f630e8cc65fdd66d7edc4bb1452d1fd4ecb70c028ec9f5e6273769406e", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "62953fca62df18b03f69e3644b65ff9675169c680c83e42a0a0aa33dbd365eb2", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -14992,9 +15013,9 @@ "T2T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "545a8a545298d937ef7475ed16668a2ed0f6462fc65b79c752fce29193da744c", "T2T1_fr_nem-test_getaddress.py::test_nem_getaddress[False]": "580561b14ec3995000abe8bdc65ff9dd5162aa35bd5a5c15a9551c6ebc0fe2d5", "T2T1_fr_nem-test_getaddress.py::test_nem_getaddress[True]": "f91da3c324352145b08becbbfbf7c1229302d56527c8aaf3ad4505d87cd1105a", -"T2T1_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "ecc9020abc346ca3db8cc3a59fba7d2993a2d962dd9e7d354232241de5125c50", -"T2T1_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "3b5524be0c29576f36e20b4ce3b2f507ac5e8a0b759ccf04efed8c809db4ef85", -"T2T1_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "878120d5bf3707e7d8d564cd4bbbcc903b66c859360da98b260b21d14129e799", +"T2T1_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "4cb5c9bc277d8be2afefdc38ef4b1e9ea8ba9d289182fca67ce1c822d4ac062a", +"T2T1_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "740d4e5a6a208db6b4fc6d8ac850a9c38d36a460c9b299858297766cd651c0f1", +"T2T1_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "f195de32a1bb2820bf96c9f2c893be5e1305e020cd6092002c3cace3622140c8", "T2T1_fr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "35bf5bacc55d85f064ca68087d2a6caf1ee53018048df2c5b7387d9b8bbf2532", "T2T1_fr_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "3ffdddac40dbb3891c5fd8590af3a71ba13c2ea8af2ec3d5fdcf57e5250f16bc", "T2T1_fr_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "baebc965ff5b7477c36f6ab252252e3491fb0d17e568e04f78872a2b4a641240", @@ -15002,12 +15023,12 @@ "T2T1_fr_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "36b26884bad04fd7e8ead0eef6cacb6a143e8c6c89b7614d7badcc1bfcd93602", "T2T1_fr_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "40b80a5ff0395524e00ee82c9c54fe933822c6936297ad8fbf5333bab965a1d8", "T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "8edf28f0674d55a416cd2d063fd226131a4f0bd2605fa695c1acbf28a3313f66", -"T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "ebd9a3e2ea3dee2f75b6c69775bb1a4b3f90d9f75d696b4403995dc75cfc9196", -"T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "47dbfdfa7a5b14dfe64d079fa7dde74a8e9b57b18ec283c5e4755d26dc4cf88a", -"T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "01d3133e011af2358658e730a0791f4104f2e78e5023b671c7a75c21926aae4e", +"T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "b45046bb368f8bd27da0e28d3196414952147ec8828e6fac311019e65be75e30", +"T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "12e7ceb2f85a2cb010d4887d459fd1c095bf1458831c6bee561a05f00d359e8a", +"T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "8d52cc9f2b0b49021b127dc61a3516794e36003124a27aa8a847f8eb2a59824d", "T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "f66a457e8265d42d343c00a70cb7083d230ecb18cdb980fbe5fd42711b037594", "T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "51ce3f78d940e88a904f426058f7b823499405883ecb81678863be6edcf3c2a7", -"T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "0b6c96eab5b9bab665f0fce000a0723b0441d61d9b0370e551f5da451f12fd92", +"T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "19b8b73c98ed7095f486eee2466f4a2c17204c77afbc155cadae0f6917e02fc8", "T2T1_fr_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "1c558a25ba8deda75fd8e54ad816b302657f0af3452edc4ccf8e60a3130bdc4b", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -15071,14 +15092,14 @@ "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "2e010acf10de81bdf1e9aff772cf673ccacf7082176b4156152bc5d01c20c11b", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "753c2a41b13d38d597631cecf9376bd008241665a7b853ad55e7d0390dcfe73f", -"T2T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5dcd01bbcc42f7161cd625bb97b4b0dc9db5e6863ab657e5ffa02bacc399e2af", +"T2T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cfdda605a1d1e3febcf743e99a96f691b44ced371865b975c58c0122bee9af77", +"T2T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "1db994cbe385e240869bb01abbe4768f95cebd313e607ca71fdd022797cc4c98", "T2T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57707bd70f9857cf6fd877f09c52f1d03f4ad7c53603a5ba9c123b06111169a4", "T2T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "df6c69516d249c1dd27fd1e727add632650d53fab4dad32d85ace90de580f713", "T2T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "2bc092db84bc28730656f2d8777c70b001401d41909871f4f5d1ae601374855d", -"T2T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "93718e58f1df533df97750b2422ba5a61a1e99879b5d14da7a79f8717a1e59f7", -"T2T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f0b5fba3719c8d5eb1fa6d0bfa37f379f6ca07280e79a381d5db5985a9417f86", -"T2T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3dff1deb8d554d358259d336a5d526bb20a53e3b410c423f45256cae70a54fab", +"T2T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "aac7025941917aa1e7df6569951525e26495c5ae90e7f8902dee90a2bf7768ba", +"T2T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8f83a28c305d264f13b91dd446106d6ca91a61a0c19b6d19878ec4d53c125caf", +"T2T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "df268e06300e8621f13f5b579a85305808664f7f3a74b0c5055d0ee68cdc176a", "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "7191c7992186d6a93847d0ed8bda75837a54e97d3eda019398310129ea62d700", "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4f38d92c20ff9a9fb1807c4b810e9c3a3c7c5a72afdd9b702a3ceb5dfab1fa20", "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "087743a723d1996dd9b956992c1d2866a08ae6e55a09ce1303b9b9ea52ce3ead", @@ -15168,37 +15189,37 @@ "T2T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f0411294cf4c3e6bee948ad02dc90d31e3ab951ef7b23f730aaf7ffcb32f1903", "T2T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "79f8dfd580c4da34ce6926584aabac662524af25bfbfb42a5f818ed4a4f28369", "T2T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "54218f8a08bc74ce8d685b97e61d532c5e0152cebad50d609503dec982306460", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "a543705507b0722a90857a7d4f97eefe12847585ecd4c8a0097446b7215624b1", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "73c4e80e523a894f7fdf3d3e0e436944a3263aea521485c3be3a6f50b14f50dc", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6cef49e313d1e8d5dddb97782c99843325b220924733d6e6579849745bb87e08", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "93d52748f67d06d868220abf1713a32a93ae4d69c8718ea147e92092451526e0", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d8a060e83200742797fe5f4920a04bfa21736ec9c88d25b7f3003930bf4ea389", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "9da453f325619a30c446567cf6746098e72579d3f2f89855a8c36c93078be092", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "6425a393e8f34f793525fe90d57eb241d976d013ebccd476ae905ddb98e4d5a3", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "4cf177cab420e81ed90e8f287101d23fd48aef864078e443bb196ff14e01749d", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "4ac84cdd7bc0a346c88eb2b0ba4736f7f9a48e276eb2a43d7f2a7ebf029f581d", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e204f9b2a895ccce6fe9bddaeb6dc50f33d279c788d70c6f48ccfe13845e7588", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6f16921870b7bc30170f108e75c0733dde4d0bba11dd8748367df8ca971b1892", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "731c761fff2c409dca1ecd97ceece602f3e928bbc9daee52644ca4b1bdef48d7", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "092457da3e41853489c8cb23257a424cbbce5d90dadfdd540b32fecb61025195", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "7a7a93c5f3cc727564fc128b904cd7ef3040eb7e7efeff3a92513781e46a8a5e", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7d1bc4aeb3640431a9099c9251e4a4be0ce7b99b3dcfd15313782afdae1e424", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "ebafef6e1aff45f7bf284cc046b3f30456ca8ba0b81256362d45ef1b1d4b1a29", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "3bdb18df20c374ed938d9b83f5b293984feec50568bbb444ccc15570d75cab47", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "fecf1e973644cbe8452aeabeb1f16ed003d1c45036b1afd87d07001bcfa7a433", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ae76e8e276c92de843c379bd61f50197ca2ab5f1ef09a98521dae0dd79386733", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d79ac2daee6a3e15ec391413cbaeb7e221c685fd7fc4f2d20e550778d33b084f", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4167920fd548fac5ae5b13f7903681d838bcc798e377d362fe991e545451381f", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "3828ccd3ea0bbeae735a2ae0ced9f4bd59aa67f699a59923114e1e6a15e3173a", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "c41ce3ffe8be3d27f4f75a8878527f7fdb5bff8a86aa5428926f816a31f0bf2f", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "c62803145a607c580875a767f32c7ba21adf5320c41ec77fab3a3740309163e7", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a194b270b5c59e5d1c2f8afc860ec34d2233413f9028f97fe45294b1b9676a9b", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "7755621ef5c84a8081f6b92e92f16c9bfc64cc9c65eb30af02f11ced40ab75ee", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "9f166638c3b736615b7c2e760ad7526cee9ad07822bc4b5937c34292ac4655c7", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "62ff783eebc5b5110a53424b8060b351b2c222cf9f8607967a25a47e2e487caf", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0eafa8f484e6288865612b1d348e52da4926aea1c32164c8a1b2dc9b6fc72e30", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3bdb18df20c374ed938d9b83f5b293984feec50568bbb444ccc15570d75cab47", -"T2T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "309f9fb4af9d4ccb9f3a7ae2c157ca3a6ea981587cc5f07f81e3cece731615dd", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "fcf2a55d6060f968b4ce7b8c8e16dcb6a1e6fc75849c010ae9ec1d01335d61c7", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "82099222334226d1e69f1c70feb4f1b12bc3a3e83077e475e6075646110d27ca", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e50c4a41bc97a0ef9489c07a51de85eca0f203ef9fd8c3c91bfa0e0fcb9f5eac", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "4e1d5662b8cc759e641937d9a428009044c3670feba00d55dabb092d4048d068", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "95997238d57a10a71572a05110225a2bb9446e3b38f1b20c693d7525c90a589b", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "058f67d7336449b0117e88c4373804699d22ed98f2a5f30aa1fa4e9bac42f8cb", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "7b0d197ff33513d04f2c8480bf6dd086ab5b1b1c4f3c7d6c97cec18a3c734c03", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "9202499f5d005bfe633b435252b55feb81e05f8517305348572a3db1cf062da7", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "69d648d21091940a239c5095788ae396444fb83001cf6fd3413b82cc8e0c4dc5", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "aaf5c1b1f0bb20d42a1dca30e5a7e5a111234c3a1cc90bfbf445a9fbf10a6281", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "380789da523fde359270673568473d673e2d9b637be693778ae0cffc3b216ca2", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "3da8a246537330a42641ba1caebca227ac49b8f961cd9034fc77246f9905cbd5", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "0c26a07dc79d8c60f2addca13932b56b4e63d9803d14c1e45abbec11304da9a7", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b24bf0be9b4f000cb4a212bdef0aeb08e85ffc02dd92c4b7ad340163faf3739f", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "ee18fe94d2f700375acdcd4c49f78cb149daf3037abbb44ef14eba58a27e4dd8", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "0ef80d268cdcea74facbb905ce5154000b451f8c24d28cf9948f98e4a45c5a1c", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "5554728937ffd25fc26fef3dad245ac27733e998b6b07e270530f66f6bcdaa98", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "775089eaafac4ffdcc063d719a128c4c93a1985edef41ec127c71c15bd0943b1", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "41a05ae0de54aa39cc3aad01b942cdca237ba0e3563322a8ecdda3c848d1ea89", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "bd6b40d7ae006788db39f31ec86e42169edb32239021e283a00ac2964f2bebbe", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "8576000b00c1be1d8fdf0638c1bb2c344804c60e7768d737cc6d160b9e94b719", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "740f88fb5ef70c1f24b488ca3a5a0680bfa7684e5b31cf072e228171df9d74bd", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "1b48d7cfbb653c2cd562e1d660d68bf8184e442d01b9072444af46062b56c7a2", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "b8a9aa0a21b1de38c53b50009e6eab3815ed20adf130824cf6e2aa46d08a60f8", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "8e530380defc1213d141110ebbf61afce3a88810fc69c624134664f64505d377", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c9c330b8992ee815766a3fab01a7645abd1d6052811ffff131a94bc7463003b0", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "739e8de2ea6b32761368764a71c58080b1681b01fc71aa7c80779b321447c3f0", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "108d774249ed92c8fba2691aebd948cf7838c52015b4a15c02db5bfc9d6fe5d3", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", +"T2T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ade0899bf79556c28959438700567564c8a8065dd92d81b6839aa0b1200216a4", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay": "2fba03351a923044992316898e91b519945b066c0fe8b6cf31830445445ed2bb", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", @@ -15236,22 +15257,22 @@ "T2T1_fr_test_language.py::test_error_invalid_signature": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", "T2T1_fr_test_language.py::test_error_too_long": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", "T2T1_fr_test_language.py::test_error_version_mismatch": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T2T1_fr_test_language.py::test_full_language_change[cs]": "b17431a711f150c6f9aa32f2f3759435bcda4bfa3f29081df07b837abb5cc741", -"T2T1_fr_test_language.py::test_full_language_change[de]": "6608898fde56463747ad89c4e9671db3b0d4bac7cd8572d84351091967c5e081", +"T2T1_fr_test_language.py::test_full_language_change[cs]": "e6b765d9c115e7daac458a900dd21b1471a76d19863c3ff2563e659e09b5b9bd", +"T2T1_fr_test_language.py::test_full_language_change[de]": "c013d7ad195c5eed8690687938dc3c0954e7b851305b0ff7a2253c213619e14a", "T2T1_fr_test_language.py::test_full_language_change[en]": "69396b93a7625119c7d975958f76bad9fc3c7205886399dd140e9b349a772a70", "T2T1_fr_test_language.py::test_full_language_change[es]": "106369f4edd63c8d8f944dd2db6efd2db564eecd3fe5d32d498e84335e52f831", "T2T1_fr_test_language.py::test_full_language_change[fr]": "f412523214b630e19025608a766a49f4ab164e665807b4352ce181d6e1187aa4", -"T2T1_fr_test_language.py::test_header_trailing_data": "ad7fd20e20cbd6166e8bf2402d1619dc2694d067d5dd7ec51b4489f57c1ed125", +"T2T1_fr_test_language.py::test_header_trailing_data": "5eb574eceda92ba29ad18a78a5cb2b4916a654d4eb4540ba954904d50158a9be", "T2T1_fr_test_language.py::test_language_is_removed_after_wipe": "bc29101b257d06f94b9ce3784207672fdf7e0b17fde973e2cfe7f461ad533750", "T2T1_fr_test_language.py::test_reject_update": "320fbdd3d6be3e1b16f9a4852e9f27f344ad61056e35467628e48ae960581e98", -"T2T1_fr_test_language.py::test_silent_first_install[False-False]": "90f1fbcd5602b0034ad1bd284f2dff71c400b394efdfa8accc8dc41312ad5a35", -"T2T1_fr_test_language.py::test_silent_first_install[None-False]": "90f1fbcd5602b0034ad1bd284f2dff71c400b394efdfa8accc8dc41312ad5a35", -"T2T1_fr_test_language.py::test_silent_first_install[True-True]": "ecd048dbebc5054b5a63e68dbebd984fb1338d8c7d16bd9c7f56db3adc4c29f0", -"T2T1_fr_test_language.py::test_switch_from_english[None]": "8719550d6e6adc7569222937af5385b22a186d881fe52239f7501fa588d85fed", -"T2T1_fr_test_language.py::test_switch_from_english[True]": "8719550d6e6adc7569222937af5385b22a186d881fe52239f7501fa588d85fed", +"T2T1_fr_test_language.py::test_silent_first_install[False-False]": "2121256081e3af7b9eb393f2ea8cb3fee960de5829ca28c519572df4434315d7", +"T2T1_fr_test_language.py::test_silent_first_install[None-False]": "2121256081e3af7b9eb393f2ea8cb3fee960de5829ca28c519572df4434315d7", +"T2T1_fr_test_language.py::test_silent_first_install[True-True]": "bde52d232d329d6cb1e304c055b01c0d6153695b847ba2025cd401c8370b94b1", +"T2T1_fr_test_language.py::test_switch_from_english[None]": "d9f98fdfd0da31fba7cb8304385c744b523548eb612223f35107227b1fea4e04", +"T2T1_fr_test_language.py::test_switch_from_english[True]": "d9f98fdfd0da31fba7cb8304385c744b523548eb612223f35107227b1fea4e04", "T2T1_fr_test_language.py::test_switch_from_english_not_silent": "cb2b9211a28e57a3264d054fcf54fecc80a44ba40fe48dead24e24be14e8d0fc", -"T2T1_fr_test_language.py::test_switch_language": "134f32b315d030a75fe560472f00364f025ad4feb7e1558fdf9f54d4e6e6c413", -"T2T1_fr_test_language.py::test_translations_renders_on_screen": "74d05ce87dfc17f6bd5b8991ef7a29495b23b6e59e087dd4430caefe1eb28041", +"T2T1_fr_test_language.py::test_switch_language": "1f8ca455be2cd16c83707908893810eb33d912979b1375ae7eda481f081bbe37", +"T2T1_fr_test_language.py::test_translations_renders_on_screen": "09d6ddbff11d3f2f25cf17a3bdf26da546c689cf0ed4fac709992182625702ef", "T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "58d1011a828ca54ef6c03ec659a5f658612173d319b1a00de579b726e2e96d5c", "T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", @@ -15285,20 +15306,20 @@ "T2T1_fr_test_msg_changepin_t2.py::test_set_failed": "ccc6212506a30dadacd6f7470569e40098c4bdc5fcd63244b900f64a5fc23598", "T2T1_fr_test_msg_changepin_t2.py::test_set_pin": "2741144c8358b9f9875a7999c66f618131f039e4877f2f2c75f31afc387a6c2d", "T2T1_fr_test_msg_loaddevice.py::test_load_device_1": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "5b8d32a3e02697bfec936b8205d005b8c60150486216053da9684ff04a95afd7", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "707eea5b0e06a085949c80b48f105b3b0d41f0822af09fab78b7d985b351678f", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "d9f3196d708309bd2252ea3c7b08439fa85f951eb71f317fa32064c6d1149054", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "e13963504e7f36fbabb9697fe6c9198e9b5f440a051cb5255edf33f991086b13", "T2T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", "T2T1_fr_test_msg_sd_protect.py::test_enable_disable": "9c9912fcf9470e481e8b6db4c2d28ab9d83f29d07db552ce48fba22fee1e8639", "T2T1_fr_test_msg_sd_protect.py::test_refresh": "746ca2d525a528f410fdfc86ca93ecfe03f7ff18e21fcb6d50111f41bd8cb098", "T2T1_fr_test_msg_sd_protect.py::test_wipe": "49d6c49b76d7d7edc60625bb2448b2c9facb257e05786fc94a10acec39484240", "T2T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "d47af00944011f9140904dd1fc9b6784fa419644c2714551f60cfba761a248ee", "T2T1_fr_test_msg_wipedevice.py::test_wipe_device": "361842715b5f7636f577c8c9bc8bc69548474cd26c26fd1b5fbcd850656f7753", -"T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "8c171ce75274153912dea13ba981e01b8a284337dcf57b45ee31bd584ea1734a", -"T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "8c171ce75274153912dea13ba981e01b8a284337dcf57b45ee31bd584ea1734a", -"T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", -"T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", +"T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", +"T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", +"T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", +"T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T2T1_fr_test_pin.py::test_correct_pin": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_pin.py::test_exponential_backoff_t2": "261c265057bc64b59090e02b38b1a7934e21d7c6c00cffe81baea223142f50bd", "T2T1_fr_test_pin.py::test_incorrect_pin_t2": "0c72f3f8ddb8f9a695efe47d84682af6ff9d2675b56a1b326f69eb913be9aa2f", @@ -15327,26 +15348,26 @@ "T2T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_test_session.py::test_session_recycling": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", -"T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "90b30e647d6cdc148221ce080f7f925e53756015de9084e254bc816740649388", -"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "1b99f1ac93c58b1204fb0be7c05c78ef0edee97591ae003dcf0bbcc7271ccc39", -"T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "bd7fc5d8d4c1145f53f30de022aae78e5b8c9da26e2c8028dc24c7a63a0e4125", -"T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "032a42e40594526040a1fbdd16f85cca634a4788fce876bb9c5d210fdcf14f96", +"T2T1_fr_test_session.py::test_session_recycling": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", +"T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "40a58d0f0072a17f9f52b30fcd4741db16aa35b9cca7418cf33328c5b69fc6d9", +"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "2c455a7df6cd8ea51b882090a2879c58c8f7d9ddbf4715056d21d58919d21b54", +"T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5c3ee50ed554d815add3d28dd95be64da4755c57b0ad1c8d4fa355f9c9aa8c53", +"T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "4b068c0a109ca07d0eb805af47f80a14fd1f541802a13198c56572265267ddfe", "T2T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "3b287aa610be74787c226147a9d0f90b3dfa845888c4544dba4a2cc21ae9b8bb", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "be591b806eb0394b145578e6adeed0c16698f89e47c880495616095e0bbe39f5", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "5d1700b76f711709576f9bb72a5d271fb38e8c2f8a747cd5d18549d499c9d40b", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "dd6881bd84dc3123aefc7101004028ed19c887450b4f7dc9ac34be26d9bc7477", -"T2T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8db9a2054d1880b21094c1130d66606c88558e57d0187b315000a9df5c9974e2", -"T2T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "b08648e55c692a88d7b254e5a2e47cf3d7193c5e078d86b7c5e1c342c2a7cd3b", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "929d5b2d0ea1a22ea66d71ef532824c9a0bdeda2a5c402fb22ac531082842330", +"T2T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "d4e0c3c8498bb5a8ea6091a2aacecebcaaaad231232964c92eb02b20edc195cf", +"T2T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "5b433835ec11b6297a628891ec1b2264e9fd1ecc88cbabfc52382c7972c7cf5f", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c4585c060afed6a846facf4909e7705d64f93673f5711a4e62fcbbc1020be275", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b80498105334cc6c0c17dbbaef4d2f012004f4df8ff461d94a992fef1ae567b4", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "781da6f1be1715db1139b5859a65bf608fd4c3cb1eea1f8df563fd42237f5b8a", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "ec6e80f9bb9bb9f17b3e166b51f744d6cfe83397f007d8b6d2084e9004d52bcd", "T2T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "1da1e2156d2f115a068bef65e5052472767c5291e547af1e951be95ce1f20fcb", -"T2T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aa8f4c5126cf852694f81e5768fde2024c96aba72c491e07be8336d2e4ccc300", +"T2T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "2a74640a8ccc6a1f86e8957b625d87a61dd6157e93a92f5e857ffbdbc2678103", +"T2T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "9568f825fb2a99e7a20fd2d9c2a8bc6e4b0cb6e43c9fe4f2b7752d11800b0649", "T2T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "506792c673183891922f45245cc59a8e888d10ce41ad4c43a046d6ffd7989b31", "T2T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "fd43d8ac72dfca2d30e5e4801e245890ff905fda5390ec22f35dc1a8f78f92df", "T2T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "3929a75f20d7cd33aaa6f3d6b9cabf1f801b0fac78f23892e43e0da93e359bcd", @@ -15356,7 +15377,7 @@ "T2T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5fc6054169122b15bd55c88909cfc4bebc12e5e1262db1047c60dd3aad323f51", "T2T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "71e98e2b347c735ab4090569029887bf7979cec3efd6c91c2b0c84835d07c19b", "T2T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e6916524e799f6ef629a1d1fa6c0380b83d1f782e10c60e411594a7589a4abbd", -"T2T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "10f5c22194ebabd987217ef45a9ed36b9c28528d5401667390b144e66543276c", +"T2T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5315713b449b814cbdd85f565ca50480d69e0e679402026935605fb23955c50f", "T2T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "9c292f8742a362bb2c0be0e76331ee372d1b96a663b4ef20f2fdeecefc3b6feb", "T2T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b6ee69f00fb63b280633844569b11ec623a18d715a76ffb45550932f9e085b50", "T2T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "6013c9907b5a4628d333c89c440bb6598bf7bc1085062b18fefe1079469206ec", From 30b50c64624a782c25e746bb72a92a949051182e Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 8 May 2024 18:07:35 +0200 Subject: [PATCH 027/626] refactor(core): update T3T1 fixtures [no changelog] --- tests/ui_tests/fixtures.json | 3348 +++++++++++++++++----------------- 1 file changed, 1674 insertions(+), 1674 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 9e7503be1f..6e0ba27955 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15406,16 +15406,16 @@ "T3T1": { "click_tests": { "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "62e0431a324677ee6a1adf679136ceee96dff070068492171a02bb159bce5c87", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "dfd1bfddfa90e9a21586494bf9fa6de2b886addfb79e86918941800d9cd7da5f", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "779b1a24cd9e7b1ad8fc339ce3f2e3b3d623ec587fd132c307562ffc24932dc7", "T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "37ee6e2b07c872f2a9c33c280b7be91bdfc223c8eee34aa8f7085837f150ca9d", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "8823902cedaa78bfba7a93b6d543ba9b71588ee86dda83b1d041b8fa7d8c3a65", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "250e7ffa0ad425ec18ea178538c98e7ee59874ef52e7e4d7d07ff122d8ea537b", "T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "ddf0c3b091eef587adb8786f498e855516dd572314ba588e91649595af7a358a", "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "2925456668663dcf63cf030eabf5b0a55e7395a70b22b1e85b00a08bba141a89", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "b027097462daa6727c40806967fcb284ec32fb729cca8666bcef48ff75dc98ad", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "12d6d6165656188cff9e9c267b4b2fef40bd437237d42dd793de31c36ea1a5f5", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ea086361587f00c6abaf84faee202b8c3805af154f3d8271c89078c64196539e", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "91491c045eb816ccf8189640574132a91f310958ac01d58394f63b32efb9fba5", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3e9896ab2816ef2ed8c7253b6563b7e74bf217e75f1fe2a5ae81b5522682b2c0", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "defb8c967711cbc271f94a37c3dd505379aa50b5b773c6919a17a2cb12043811", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "511a7e9e7477190690f12fbfa8749e69e6811665f40fd0fea2a8849f133d7027", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0fd20d19efdc39d946a132fa581091a445da4f3eb424f1b71790adb9f3e51679", "T3T1_cs_test_lock.py::test_hold_to_lock": "0e8cf06515f909a1ee67d1f749ced1f9933674e33aee225e62390c2a1e3d901a", "T3T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T3T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", @@ -15454,9 +15454,9 @@ "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e637cc9f17eb47b549bd69a1897b5a386c62890910212be79f32c820a75b11e7", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1702c0f4ae9bd9bf44fa494881facebd9736d1a1fae2b564017f21f999e21739", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e69f1d962aa09b907c6ef4886604321584507031ca81194ae31ee359d3b18311", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "9381f2b219e98242debb0a6372e44653d412ba57b40ff245517c731d03e01d66", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "113199817596637d5eb61d6ff2e5d331651ae1bc2e2c41b018acc1e723fdc3ce", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a0aea17ae65b3e5769509207b64d2b13622fd9b6b05df8d4fa99fd7f6cceedbe", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "24a0f61e295bb8cb614d29ae256bc070878d39dff40151d244ebec9dc399841a", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "3f52bac5ce91656e17ddc47fe3fc25aeb222d083d302207ac551317c880aa065", "T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "55d42b477af4c98e2abdfe66d506437a4f3e45d7008dcc59ad3cdd80cd02665e", "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ae09966cbfee6e5e1a55231aa5386e0c9235c411aa1560d30adb674078188590", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "fa40cfa1d84b174d4c191ba9e93e489cbf4398232f6f4a08b7591520336d5ec8", @@ -15558,8 +15558,8 @@ "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "210a7bae28c84565bf5fc748583449bc71b5de5f3ae4b64bf8923cdb35b35ea6", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "40e03c97e2ef2887fcb8431d6e18eea96e4e50f75cb5936d1873248b96648bc2", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f552bd22ac89b24cbfe12f6f7e25e4b2b3bf127c1907720a19821f71f21bb1a1", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "60dc6da85afa676f6db815b1cace3d37497547315b218c6a996d316efec229e3", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "748b5c6d33fb03477260ff3552684e8c09b99d8a19e9fadd639e904fcd2158ee", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3291b3498961444326ee825af5bc6b672a2b92381dadee1df36d60c04f9d3267", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b4f5e8ec155784497add1ea30385c995434640d96cd75cdeb39e5d695de9e115", "T3T1_es_test_lock.py::test_hold_to_lock": "8692abc2f68ad3577824088bbb1898cbe7574f3730083224601d9fd6ca847252", "T3T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T3T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", @@ -15595,8 +15595,8 @@ "T3T1_es_test_reset_bip39.py::test_reset_bip39": "c1387c1c2fb4286512d93824a12f953f16b51295cc8d558cae6fd1e310eaa090", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0fb4c39f0a264948f1b2fe4d826227f7dea4f6e786aafbdf061dcb1ebf27309d", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "075062ab783981ebc2e39789bd560c129e28b85332f1c02242fa62345a09cf23", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "75b49a3864081aed3f971566aa7c8b571342ee93f78c3d4cc1f1aeee968e813a", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "89722867b8a3bd50019824f9152bcb152a77f108d1ca91cf4dbd7a02e565df6d", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4405b945ed078a411abf455efa2604776f8831235440f20f28c5a7c2a33381c2", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b1f6ac25133bd252284195a3a3c8e6edfed0c66ab2423e1c09f7822c58265116", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2cfdef780039ba2a24fd93545148696f6f8b5f7ee3049c3e005be03020655bc5", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "57aa1b6bcd629465c3f0716d0be70861c124264d601cbefdeda7c3a8498afab0", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "1f7c2890d794cd107243e4d7892a9beb209d98437ff7ff67eb3a4a85bdbce4fe", @@ -15651,13 +15651,13 @@ "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "fb9519eacd90972796571a24485f1830049e1e610b53fcdb65ea8b1099c8cb0d", "T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "aaf8e9fd3056e69ff7ac84ad051f9511e9a5076b6a34ee05c696ea3e3f90c508", "T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7caa0f9ec73082f01f8426c29e4085dddc29e3f75694e343e3ab60848a8436c2", -"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "78cf99ca978c3283895efa62b9b00259590b3798f61daf9878c10a00e2be8324", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "cb11fa560314c9b0aa64881eac07a62b7d4c7dff12c36515aec42dad99114cd1", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "40d07ccf03bfc3f91c8f748a871a037599e61360fc67c2ee8408004765f7dd56", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "d4346c5871b0541ed955062495922ce127c58f59400896ee1c9bf8a46865be62", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "cb11fa560314c9b0aa64881eac07a62b7d4c7dff12c36515aec42dad99114cd1", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "40d07ccf03bfc3f91c8f748a871a037599e61360fc67c2ee8408004765f7dd56", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "d4346c5871b0541ed955062495922ce127c58f59400896ee1c9bf8a46865be62", +"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "99dd791ee89276532d64eb9292ffe6f0911437fa9a93ce50722bdefff004a8cc", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a265eb496e5021cc38ac33eff33c56d46c589369326ad158de5920aed380b3ca", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e6ef7b3dd4b425b1bbab2f49699d8d5508a8b993544d15b691f834d221e44844", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "ee068a81eb1462e340b3b19984e15b94819b707c39bd283d6d9c26d93786aa90", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "a265eb496e5021cc38ac33eff33c56d46c589369326ad158de5920aed380b3ca", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e6ef7b3dd4b425b1bbab2f49699d8d5508a8b993544d15b691f834d221e44844", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "ee068a81eb1462e340b3b19984e15b94819b707c39bd283d6d9c26d93786aa90", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "c9108adac3ce23380002a5019496c0224d7f24a05d12ed881cf8a444dd98d558", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b3cbfe5991c49b088827c9bb5d22e7b8267f85cc3ada3e0594b62845f2df75a9", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "509afffd6ed07242d5e2c5c1fe216e9a277f42d5f9d459084db3573f59bdc5c0", @@ -15665,28 +15665,28 @@ "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "830c7d899e8685abcfa7720a736fec27bef71286633a9e2732fa28edc63b6d7a", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "830c7d899e8685abcfa7720a736fec27bef71286633a9e2732fa28edc63b6d7a", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1239ab191a3617f42b7158c9b00dd1aaa91d62b895fd0a32dbbc3e99a7326892", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "c15a5e98c6abc7a19c7e39cbdd5371ffcf6dd7836a325d6da4a1cf5fd580b634", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7c420658ee3d6c5b4d3d761af26de66cc0bcf7c471499deb274d964dcaab950c", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d878ddcd406e5d02a65cc536992735fe257d07bc3791e05c30a4d2a574c6c5d3", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "545e82145565de5b2a8f9821f039eeb1b9d20743ba54233231091899377b12c3", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", -"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "b2632cca34ef5bfa4ec82d9f42e6c7f02ab2877641946dc15e00545d35c7be1d", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "b2632cca34ef5bfa4ec82d9f42e6c7f02ab2877641946dc15e00545d35c7be1d", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "75815dd5a677052badff2c883a54ff5f2f1dd1eb85c566d5f8e164961fdb5db6", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "18e5ffcf03fc8e9cc3e9bdbe5912158b07aa54c56d68ec02e4c23accbb78388d", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "95744de25688a176e8852483d73154c3bbeebd1825442d37c2b20deebe0d523e", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "42d19a59b4f8b00d946e968b89d68e3cc10bbe8d017402e3e82a0c067d384b27", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "c0dfed142ca786e2407183617f0331a3071b263c411002c31eefd5776d493d0c", -"T3T1_cs_bitcoin-test_bgold.py::test_attack_change_input": "2db6ff20be95f12dbf430f3849d033dfb4c651fdfd5bc4f0b1b281558cdd44fe", -"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "2db6ff20be95f12dbf430f3849d033dfb4c651fdfd5bc4f0b1b281558cdd44fe", -"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "60a727c216773ad0add34655974faf217b94204641ade4181fec649b4decaf58", -"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "02cb85eed7420b609d8d36c586deefbbe32c4fc4cc92540e8e51e352e6ca6a71", -"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "7e56e2050861561adf09b67ad6b734787990dca2f306e741e27b457dd6fa95c9", -"T3T1_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "0c76719e80a7cea40a7b83db7c3e18063a79823f37df08e0a87e69b07301eac6", -"T3T1_cs_bitcoin-test_bgold.py::test_send_multisig_1": "0060690dcf1c1858ee49296bd38a3685271e646e2249811870d337aada8f8210", -"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh": "6dd5abc24b4cf936cc130b8effbeb929bffd2d76c044e48ab95cb56638ef50f6", -"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "d0c618339414593608cafc0d6c8a8493ad979591a86fa8f269fe1cf810d56ec9", -"T3T1_cs_bitcoin-test_dash.py::test_send_dash": "e43260fcb945fb101fa0bc56fd1881c1667b846a30cf7c7d2ddece24860d90ca", -"T3T1_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "2df942c286c677dea35be23e5dd34c0bc61667c4883444f50a13cf9067abb002", +"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "543aefd40b045e048278d770d31a6e82f400c72f0b1f05d394bad09a12d32602", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "543aefd40b045e048278d770d31a6e82f400c72f0b1f05d394bad09a12d32602", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "565e103fbb7c26731162de2901ea5285bb1b8dfde908e9d3fd6ed56b0a54ae3a", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "a1dad26475d83ee1ae15484dcab06fe29d6306670bc93bb2404d056df74edc8c", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "13e14f251e58551ed1ec72882dec53bf786d42a572fd1d83873e7b92b37f33af", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "ef2c0fa7a21272bb89f4d28f5e1577b54e55d89ac5e1f5c2aad33a8cdb2c4fa2", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "f99dfbebba944f95f1f30a77c47f9dbdcea6e761cfdd0c420dd1835f05b9c081", +"T3T1_cs_bitcoin-test_bgold.py::test_attack_change_input": "25d8d3c633b4723500c0d08a691885129aabc8b5ab2d381ec1305b42a81c3440", +"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "25d8d3c633b4723500c0d08a691885129aabc8b5ab2d381ec1305b42a81c3440", +"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "d343fb6fa999aff949eba343168358b99db6f534647688ba5277a86b43f79a62", +"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "71d21978e9f03d96868803f023f2d340132dd99e9dca9ae7d5f68da3055067c9", +"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "c64c6c574325f2be07d21b40d08f7fd104fc076c410ca08358ffd2cfe45c5db6", +"T3T1_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "3f0ef9378880369022d5eadbe2a2f748b9e2a78a82a87e5450106b86e4406a85", +"T3T1_cs_bitcoin-test_bgold.py::test_send_multisig_1": "d9f642e7f0bd4dd60ec00da2dc3eaba4efec8c9f1c6245b4a3cc27ea50386cac", +"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh": "4dea10f47de539102752a449d6bad5a6186eabfafb9350e0e1879e0e69a49544", +"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "0098c8b33b3058b3a5f610b8ed67605e355022613ce7f4f16216b5a8716c85c9", +"T3T1_cs_bitcoin-test_dash.py::test_send_dash": "335f7e6a2848b085002b697246f75643c8fc880547c588b455198eb5453f253f", +"T3T1_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "a41668351634e0edf22939bce11f223528316432d247c7982a2e2b526f0d1342", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", @@ -15723,8 +15723,8 @@ "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "59f62ab5b50dc69af561f304de7ee7bb9435a7aa207ca190608006d3cd93de9d", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "bee3fef9235e53253a6092d9c36e33c100be86c9433add12eb8255c3da51aa82", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "68df3189d87a42611c09da1d94eec556048f48644e1fc3700bbc22632462c61e", -"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "a7ab74400ec07e427aca117eb62c68c2af9ea1abb02ea8663faed6d9ec7cae4f", -"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "2bf3ac343b69d6cd6c02ba35ab565169cb897cabd742737368100a3139fc7cfa", +"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "27bc3cd1cd7b41560c9f68665ec27fcd92d71e6963c6f320cee734c7e4bf1074", +"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "73000a0630ba354f431820496b3d1e16a330f619bc4664ce4b61298cfb5c5a65", "T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_bitcoin-test_getaddress.py::test_bch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -15852,28 +15852,28 @@ "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_grs.py::test_legacy": "e9f2e4627c9c65a27d6c7b0124aac0145bc9a76131cd1d3e19f8986497afa13b", -"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "df8d5f03ebc0af691a2ef4188777c081254a3b33c5bc8473eb0118ab90119d1b", -"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "b22f38734c3c6fb1840a16a368153cdb6ef2265dd3cd7edf5a2e304f80c5a515", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "4589151c506e97bf7fb2f45fcfa11ea950e151c802aaaabd67b2f9592dc1aed4", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "a80bb00f4bd2ddca14f6fe828836a1cd32066a696ef259412d7ba87db38d507f", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "4a14d439a87863f36801ace1521479814096b417c9355646d17a54d48d9fe255", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "777b0f97d01eda4116838a817491e2abebbb2f47f7ddcb61337d45fd5e016c74", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "be10e09800f8b5309d50942275d7122040faccd71eb0622acbf4efefe2b39254", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "6b021b1bbffa29c5ead1845d26be6548271bb4ad9db4b1f63266f1fdce47080d", -"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "4a6bee4fe45f28f75bea099aefc41a471bc4e61fa5ff013d37b31b79a9242a44", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d2e069af15313c44ef9307f6b1aa28b4b11e6f5062122a924c92eeecce4eace5", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e13a77a4da94e0ec63285a6ea1894bc43bc3575666e97fc4fcb50fea434f81c8", -"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "a3bad4796a417941f035464615782fb96d6037e3b491b6cd0d9738ca47f6ca31", -"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "409c6641d96339ab9f5d459ea7f5b59a578f5ab9e667703e3d16dd606ffe90af", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "69ed585ebcf3caff0388a386904fd1f6e0c782648a557bc152b1235b9a4b7b9c", -"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "f2002c78ce94a861a17d9ebd7b34a47b846ef41352583f76b265c8b659effce3", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "c590209a8aab02820aa5e2841f698a7f22475bc0f08bcce02f2db9b21a2abe1b", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2c7cda253567c83dab72d9ccaf724dafc40d52e244b4aa25f1dce0c1d6e43b10", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "f252ce8846050e4bb8352037ef8c3d65f24fb463a6b9efafce1684d075227138", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "58c1f15b65f9c825a845434a9c0263ae12051275fee79c7631a0fb24ed6a836c", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "40fc42ff7d5b8ff4751f84cef6dbd6158d7b744e20199e1a8e4703d03b7b8e42", +"T3T1_cs_bitcoin-test_grs.py::test_legacy": "74acadfe5082039fab5af3dcc310116438909eb22e7df300a33fff3912194c2c", +"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "6cbef5f7a68e7506399b7649266d4a2fc9c86d07dd6f11f929069600aaa54d4c", +"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "7dba04bcffd722aba6a3de3450d8b69ffada62b88c86413562b589c098a68c02", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "3e09845e82652ccc583a7eeb5f04a4585911de413a1bf486c7a0883390a806fc", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "6d3fe1442d303da4cc9ed3e693cdad028ffc4f51584dfaa40ab7eacb1c528b73", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "ca813e12db2e50ec8b59e15dbfd8fdf0fbd4a0c41b1ac7119690678f202db37e", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "fda638e0bd7bb29eb2afb572ac26c6ce99485642a87f68d3dfeb00c30e82fa95", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "2112b54485b2a085ba3ff9796a5574352d1e03adb6349e421c9ab38457fcbcfe", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7a35ad4cef673a61b47ed5f8de15c2f2b7151273bd4e18246e316ecfbe192ea1", +"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "fd4509f739bf62162079867c7ee8042bf989c0054924eda46d2d9c1042c74473", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "02661f652ddc1e8e5c4d598d396dee340b4fb851d59279ac3a16b2d4eff6b252", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "08b0a79e90850dac1aec6bdc49bcd89d0ecb60a62963092ebbe893691b5ebce1", +"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "c03bfda6f92eac441b5a727c04dfb12e9cf725fa2a2991bf31c257618c87dc05", +"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "a50a5eb9045e4fce67debabf83fc8a24bcf5ce0b56dfec9df63fecaadd0d9adb", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "400c32c4f256467f96676902bde4837238f68710476afa50923d34666f13878a", +"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "984c90669159cd0b258f0b2c14ae12038bdd074d10fe0d581b4547d965003469", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "d353a10133be5019205b8fadd82076c626d5d2cb145d74c63b9ba4e7e4e111ac", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "5f51a461f0a5a9564f5c87be5d3f333bf422bbaa8705b69000c0a38de8eb69ba", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "ece5087013d74f8f6c66857b900810d2d9a26726ea7a7dd1fbd7f84316871cef", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "5a1fae7c15fa01487e598f56cc8fc589b22d43c3016e30527301f98ced362b15", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "e2b997d15627964ec923b646647f1b37e32db1b92ee575bc4808f6948aae89ab", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "32842acef03e92bb8e9588c4f62c720c090b76cfa05b1b501139ecb80f440924", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "2cd39bc9256d0fe145193e4e303dbac4513831025b5a84c95a776c299e223cb6", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "aba263e4db929b988210854950b66b22b9d94b1aeb125252a2d4167627f71298", @@ -15902,25 +15902,25 @@ "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ad77552ed741f9d93cf818597151f44f204e31754f33914018ce8985344e22b0", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "98271cba7e1e73598e3fcec535a6c026614de476235d35573382170b661d5316", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "600866c5ddf653eec4fe3a52c1f3b84f901e327ee950c1337e9dfe9f9721a36c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "678ea311c23190635adb775d22ceef04fa26338e74e6e2acbea4ead3785fe1e7", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c91fd16ad1b1c287e19604c0545a29d5c15b81c7a740f0bafbd1cac1b2c6d561", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "8537548d96aaf358a46a49fe2e6d80e18f63ccd768915a0918e61ebae58ec5d8", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "5ea91418c282033734ff510340e6cbfe23e92d9622fc6366a9ed0f3d0d250614", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "f9ffaf8c9c6705765e7a53754707bdcf963f83a250551355142da20428c8c242", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "00c9fac9e9f6833dbb386d7df1c254a5f71c0134f6ccef09c307134de110db74", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "ce0a7178100f946c14cbfc2cc9245794f8b2471b4a2bd80d631633e3c91f6a0c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d6621625501f5be1b437d5b9b3ef79d4dcfb3a8962e894b010060dbb938468ef", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ed272ca569e1c349b63f8393e5810333d114d9b54a51df18ca515ab5e8be141d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "cb8271287f888db3ecc441523efcad5cf8e50a855efdd775a9ef1d917567819b", -"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "f1a5eb1cd1ba8bf574e2bab8959e8e660e132e190a852e4993b05b0a330d83c2", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "67de74bc7692e72551145ea28517806a2f9ff570865050b6a2eeee34375606a0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "de78fd2fa360453d95e85c5ee5e8de40b925577c30648c166e4999c6169d1f31", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "80bf459aadedaf00e0f494ee3db3e8ac58695558a8a11fe583bf0c3be8b7204c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a7e30fa104eeff1389d08868aa19e1f5c5c486bda86284311908e6cc87ce5de0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "43d5a9f472c07d6c2402ed70041f48215eeb50b56813decde19240fab75842f4", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "183503edbf87067faaabe27b74927623b93e29f20088b7c4959d649cafbe229e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "b7b31dffa340246382b83614d857d5678e5a311423e257eeb354300e1e1d0f3d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f334becb0ca0cfade44636c42c32f5e7449c2bd8a4092b972cafef24547ef719", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "b7e84f94562cf6cb61b1ec13b5114f7e99a2d5a65c4a873817689b8df1eeef00", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "a978ece6cfc4917d06ba47db8a5260eab663f2682c496d0ebced805feebc4ae1", +"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "44c01272aab632ebc31e5a45107be1fa213d641bb05b13368e3f300cfb0f1ee6", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "cc6e6e2957cdef6616101a9d8a1e399b07d8355ff804c411d449710a4fac2366", "T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "facc4656751c47122746af3fae3d2933088abf5db95f2fa436168c7e93790771", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4ba1ae3b1ac59a8e3fc62638739e94d9c54d54a3be612810650a9830b06f5b5e", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dba56c6086b06373ae3b2a73ff3cda693f982ad74ff54cb80a652e2d2096b2e", @@ -15972,151 +15972,151 @@ "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "0d85c285504c18080ce0c04a7e81ceff0695cde20ff264222a0692efc07dc4d3", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "160724035b4cf0c6b11047265b5d7fc538adbac62c3d7353718915dba51bf6bf", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "4ced42503d09292c0985186444200e6f9ecff95925b93c2a455eb8a55db18056", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "aaa405e55ed5ac4d63302ec5995a3df8d3282a3d37a1a8f262c8b2e6b251ed5a", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "48b3ed5f69b9046839133aa6e287f1242a9e192c33404add578ab6055502dc64", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "4f48ec019c1d590a90d17ba3ae95dfcaf47a6cb5dcdae01a597e270cd2f575f6", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "9517e7a6abc3883cb7f6758a232000e494dda42131352e8f095ebd355cad12d7", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "e4983b9ff84ec65b0ef21eda2723cff184fd9875ab6a2446f245209550b9008e", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "30e2ccdc179f67772318bc95bb0670a01762c67114ccd4f78fa8975dfffa1211", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "ec1061dcbbc0140884f4e42faf3507933c2456f67003647095640f7615576a3e", -"T3T1_cs_bitcoin-test_signtx.py::test_information_replacement": "220262309578a995591ceee444378920823ed4e563b46330d246f66837b39d89", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0c07bfc6fa29584ce1dfb6515b00da4870ee71c0ddaf2d063d88db4208bf57bb", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6947654cfdba912e3d805feb52059740de133c7e7baefe80cbab0915da676fe7", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "faa2db37151bab191aa5d8b27e8850410c07d40a2423097ea9388f181b66311e", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "6947654cfdba912e3d805feb52059740de133c7e7baefe80cbab0915da676fe7", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "faa2db37151bab191aa5d8b27e8850410c07d40a2423097ea9388f181b66311e", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bbcd6fcd974499de2f167ca68a1d101f0f752c9e5d292c3895c76bc27f0315a2", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "7056d9fc4f52093ec579e9155f582d3eee2a4a8532e3fc4a48d28d06b2d2810f", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "3e24ca4fffc88521996d559b11ad5205029c81cc24fbf7403582e7ec8b1f515c", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "b992b2a8072df6147c85a9abf5dec4d86c7c2c9ea9933fb6b9428ac0de6c661f", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "348fe671b84dac3a0c15cec510e36ac110978cf04d3fa3c5a6edc50560562582", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "784e565a085a15f4715fce96e6cd73607d070f1356b4c64ee7d727ecc23d27a0", -"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "ac90bd47df61b14b56f7fdc958f5f879a08d93afee93befe9c68e6291636fe3d", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "6b47aa5f1a8e59418bfb99ff5499a7aef887b7a50996ec5214ca8eba470afca1", -"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "7a9370fb7106255f4b6bbdfbcb728cafac4b33561f8e28288a55336806904f43", -"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "4709f478dcc3844434aae13ad94b7fc171e9c54a301c83da735cb27eefcfcc1c", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "d0e7f7a4ce109032fbe95ab032f885cd4d72e66f29182281ad6688709eb020b5", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "7c41e9147059dd52307034aa743adf2c66e4e5e2133ba9b8696f83c31a8f56b4", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "7087e1a698ac23c370eb3723d517d2fed28d1578b18578c106eede23163770be", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", +"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "15ec591bbd7a3c69c132a830ff3d36500740f88d9188cdeccdfac9160e604078", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "6791a350bab3c49fd782368b3155a988ab94ca3eff568272033094f0bbbfca24", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "d8726bce8544f7c3a1ea675ca72e8d2c62c392452da2203bc16038366ed179f0", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "450da08f06b81709091f8c3b0179edfd5cf41b4dd4e0e5e906d119bcfe85bc12", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "ee24e57db1e35421b1a43cca0adb7207a02b778a372c99f2e10c7b4689dade33", +"T3T1_cs_bitcoin-test_signtx.py::test_information_replacement": "31b2a40db290a2217b09e96b995d15fe7d45e8eff08aca4b924aa9babd0d4524", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "e9be94bfc7937b533323b703de6bcd234c709bd1928d350bf54d6755cb46bf55", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "21e5a419b62922af2df837cbc7a3761f08cef33f9a8d402f0b9cc4ffe01f6b5f", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d425dd1157b815d6f0f5c0346e18c3ec4c9e8367b99a48daad58a2c612ce481d", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "21e5a419b62922af2df837cbc7a3761f08cef33f9a8d402f0b9cc4ffe01f6b5f", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d425dd1157b815d6f0f5c0346e18c3ec4c9e8367b99a48daad58a2c612ce481d", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "97222f135955f18ac4d690e7f49472e58bd28e43c5fb9db676474682953cbd05", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "795d158f875fb1ac3dc24ecafa6c1f611b75c5588312833563b2acfee70686e4", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "9b868cb2268991eee8fde9b2e8e1b2b230ccbfcd802ee166891aaea1ce754f93", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "f07584f8bd4ee44fff931bac0a52c550e8891d5d820035ea55b547169eb9aeec", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "3ad55243bcf1499ca88dadb608b9ac73a046763d4b11c92bd8569f2630aeef0c", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "e45c042a9d418cb97f4aeb9a3d1c1f173f42fa5f01d73fd0af745c24db812a60", +"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "98258e28bd62abb6646c8c42c06815f1ce633ac5d4ceb970bccc52172dadb0a4", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "847f708946174bd71c8f32c807badd2741164925e3e21e71d15a304af91a62f7", +"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "44cf9950367c19e23e33888362f4e609a22fd36b3a7ee531957054eac1db16ac", +"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "f3b375c5753cd8877f96e0e29aaacb6f4d65753221f0ebf515f63be5cbc43e8d", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "15ab6ade7aaa5e59bbfc4b7b80903db1bba47b8e9f9da828b1f8fb91b7bd02f5", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "195c8f8db23364f8cc919cce1526a5c609da19f136440b595b23dedf98c93f1f", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "63b878d3335c31c48c4465ba8ee7deea649ff6521603249b5ae9bc7d1a5a2645", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ebafc8c20cdf7b2e0b8d8b0d0d9afb840e1d05383c9d644ff6ff108c1a3f06de", -"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "c4ec99155b09db15c81cee7a70f10821698e87e5d5b580973d96ad4362ee2378", -"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "fb3dcb2539f4b7cd29c619117c6c3287d8c1bfbbd88f7485813d632c37b47efe", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a794535c8851a673d008324fe7d00f87054861de7f5e5ef9af3719ca88337ac2", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9b3ffabcd01d218e6601c802e0f7a952bb9fc2c88c10d315e3a1dbe0d5a9da6e", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "d27bc343b644081ab4df811b5c991109164d7826651c53e6f67eaa3ae0e3d581", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "69f10dc1117632e079392a918c6da3c31b965a0ecf9e9e1b523a789cd0fd31c0", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "5ddaad6b563bb384ea3ca37dd04bd440dbf360006fb900a271a23472f4012c95", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "bc93411098685c62cd74ffa15a6462d03faed2582fc9c8eec868e45928b6344c", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "435330cab18bcc4c9a90b0e78cf5c1f41e37763bcb98cdc79ecbc6b8cfbb65cb", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "b24df2c210c99e604bb05e56de2641d5e0d62fdb00b2d06a22c9ec6bec6c1193", +"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "10244dd824ac87d65704440e3316e763b2a41277c689d7363c5dd51d3efe84ea", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "cccc715d85244856df87b4d9794c66b9410490981b1a9413fc2880c15e94dd7a", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "9fcfb28c6f324a86035fa253d05d9671d4c3b4018f1e6d5605c565d4a9f0a959", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", +"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "ad18ef9add038abcfab4a7db828333cce046ce5be74dc2b2bced69478dd990f2", +"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "10a43b0b20bd48b7f18da9c2636e67d880c306ef12bdd89dc83c832efc0c0724", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b4b0ec9adb12c298a6ea1b1f6cfa64335ce524e62b0fd538b6991de17807dd09", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "87b0cfda1e6323dda7742af5318c6eea7474fed6257328a71d4d8fe3337e7254", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "72aee7d17393192300ff14b668e51692d81dc745eb2fb878ed621cfbca8f1444", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "8ac5a184b524d1eaa7a37ec7a20f514e39e14f414a1c1eb0af7061d1a52535c6", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "988dc0dfd67d814750abd5581460b7c51c56967cc5f3405b3715714dc8895ac5", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "66dd89be9916d9501b69ed8adf62f90e621a19112be58d28d12cda48a344b7b8", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "a3bdb8fd6f89714f3b1bdc09218aac397f40c51f63d61e326b368f8046727ed6", "T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "5aa315d3e42bbcdcb4156fa0de2aec6dcd8a2b1d436a5be5f3e38fdf5abb720e", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "ef1d126f03bb1326ae2079fa9ea17b87eb4fb3f4ee75560d4a79c04a9fe579cb", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "4ef65bff4f16be5b8ac6ef3b782f1b2588d2633a39a61fd2813e064812423695", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "d1ce5191bc297f1bc5584ebbf2b5ca7546617132c3e0a4eefd1dadccb4e8324c", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c0e0e9222488565f241b095cc03d6b02fcc05789386da437e5167f3e0019e313", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "bb52bb78977be98e2122e629d0677f8230cebc8b81151d803fb4725077a20c8d", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "2f16c5ea0f131561f71a79f15ff0fbeb06503ed3b5990c6f2a84ed1bd0ca908c", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "630d209dc9afb49cd5f2f64446d9f219dc84db91132ae2d53cb5c386ad0c6801", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "08319f182a824ca3ebd659770e10f568d0665d31e454934e31f22c08049a9fc7", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4c1d99dfcb550ab843b101147bb1399d1d7bd8561b7129b47701fb94106afb4f", "T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "3e62a97456389a751964e05552b621d4d95827ade9114772ba990927f8d8d4dd", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c3bc569989e0c3d656cd1ee4570a1235527e9f1993af0e3917971392b46efa45", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e2b3aad7f6b4f397051906db3fd489486d608b2d0a5aad21166a3c49d6bac583", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "3380baeb84390ef2aaaf7938f6a80219f96ebd0b2fe08c17a423bdb4a220f0ce", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bb18d15e898c990e5da5bd17b07679413394a8f198ff74b241854477513aac89", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "1dec0b819a3c7daed521529e0b14541d227d0a0788da09adf4f0e4b550440433", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "97f30b0ebfa6a32446d4b848e6cd13fee84793cf11ccf8a33cf3b1643fe1e5c5", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "5d486977acc9a222587bcb19cb98405435cfe4ed890964029d264758740e1838", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "97f30b0ebfa6a32446d4b848e6cd13fee84793cf11ccf8a33cf3b1643fe1e5c5", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "5d486977acc9a222587bcb19cb98405435cfe4ed890964029d264758740e1838", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a4aa1dae137b8877a1fa8911ca785fafac5ae9ba4c95c6ae9f33bd5c82f92741", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "b9f0d5744f87930ae15f9c02ba074945ddb2274346bdab6a62c9f9499b2dc72e", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "25ad42d8fa38902212e7cf26607a7bae29691c7695151cc20899e8c5d1d4a253", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d7d20560e015abae17fb6b16e5a14c08986811d3e66007e839192bf6c15e692d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "82fe91b00c8e0ade7f7a98ae30a21de18821f3ee1a44c147f6447b22728c5653", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "d54db070251b720ebd4b05e978fc9f721f37d96d3784411b72e66eca384d448b", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ff9a0dbbf9b1a38908a40fd5ee17173247214aef4ece9230b8cf8164df331d6c", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "613988ffe71102daee01364f5d9856bdc51b14aff5a852b59cca70ee7b3ab287", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a7c961d409d8c8d3de8a88f658bde08001adca691ab85fd09581baf37aecdd09", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6697adf95f477764ef1cd3c2e89f0a559f2d92eeda0f60222aad3d244a336fde", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ab278d2c207519b4f272170533efe51f9b4553948b0550b41d539cd878df9eb7", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "59b6615a657b49207958a6c0a560c856add5f2b594dabf54d5d440e58891744c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "b6a4e304e7181a23f66192d186994deb2e5bd772d8086e47d16ae95e8f5c82b8", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6ad580f8a2087761241e5c2f3e3f9c959fd650319e0231538ff019bd35e58360", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "2e5ac929590b432292fa922e6651f809fc755076e6462b707c4bfc1717e4f65b", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "2e5ac929590b432292fa922e6651f809fc755076e6462b707c4bfc1717e4f65b", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "f3f08bb7157e8564d7118494b80e1a5b8c0fe6fd5a42518dbe69dfc0d7d717fa", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "d1f93a9be5e67994212c865227c7bd4dd97a15f683d43f879dc7c605ac6993a7", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "35f4fd127ddea03750100137e42e82e40e3b8a79f513c9efac675bd994ecbd91", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "f3f08bb7157e8564d7118494b80e1a5b8c0fe6fd5a42518dbe69dfc0d7d717fa", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "ebd61c48595b246d5dd902c7a2f9cf98e307b71a8e618fa4c827622789411bd7", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "65da5b443d7db1e47068fafb01bac0454331667cd11b6f749c908bdcc15021d6", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "1e0a3ffc86dc2af37fa469dd497e5ff68f0c5315074478e26580c5f77d8e624c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "44be147162a32edcb63ba11872208c4521b9db54ecbab79ff9a9a4daeed6c8be", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "01eef5024f2bf1e582640b51c2cb28a51b8d5cb912b5f7983f23a2dcfb46da9d", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "cf919d4381fae0b8e7214799687b0fe9466098a4d3f5f59b70c3eb2e69303cc9", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "96e62554f2dd7a4250c6e517039303817d9622ef42ebd892209b29f041730d60", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "8cbb19a0fbc286fe7af28b4fe99d2efeec1c63ea7735364a38a8989f9cea35fc", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "71dd5cf9d7ff23b573258046229905cc6eab91d040180b68fa31f3637049709d", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "1ffa53d2aafcdb73ba0d4c84524de1e2845a9fd48b78fc9c78e6f79d0904aa0d", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ed1e3d350632ce0ae6b35ab598dbabef9b30270ff3ecc5616bcb90564f92bf6d", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0ee04f420450e7ddbd20175d8f718f87f567d6171662ac7e8ae56c9179360474", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "9b46964e38efa379ff291bc66bab2c38967e548a460bdbc91e1fd537a80e5769", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "03d7c3d76fc9a5aa44605eef6bb970efcca467a126ef7d8bd987a4010de220eb", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "f838279241edf380bc7ca4107a4734b8b2caeef1be79a86a4079e2344ffe49ea", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a60f7192af2b22254cb09947e53d7ed25c02c97e9e0f2d35c4aaadcdbe22a8ae", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d14d3ac3c78e28b978947c09b17cedaedaceb3cd3dad2fa248c6a91548f57828", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "6f470c385534987fa9c9cd8a9189d585f3dd1c6b751479964fab3f5b6eeb026e", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d93c9c3b0cb687f75a17edaeca5ad1f2fda4bb7ec7e90d792772d9b3c845b086", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "99676918532997e6a27eab67b529aee3e805136c7242e77785625343fb34fb72", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a34f69a442c15a7ecf36a1f92395fa3360a9b7443f1c1905a40fde7307219db9", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "4d6255cf55e195bd8df6d6af2d8eb7df7fa77681daab7defd7a6a665c6368ef6", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "fe832936c31f69c4ec9bbe92314b9f31c2471b493a29e50d186a6d24439311d8", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "a146a0521c0186e8c31006653b48dca3e7924d3ea61b68f2605ae733fb9476ea", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a30a199d1ae68b3c94f04fbdef54929a637aadbe75cc9bc494c51ef5add56e19", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "74d502fa2730deae4c5f7e83c9c193022e97d99f1b5e0b166bdd7e6a9b7e418b", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "5c8b72fa8c5bf8e6b53e3a92f8b83c11884911ccba17fa9ec6d93e3ca8b777fd", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "af409efbb080998c1a30622a02239a9b9e3e9f321cb26d09ab0c5e4c69156697", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "33e5fe5449601ed5f91d7b4badd171b90ba60cc6fe709f4984172e319b20d9b9", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "67361933c2284513b69ea351e5b0e14e30f1dc0f082ddce1eaca0ee0fc6c2f71", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c1b01d9aceae7471acc8b7b21ad5161a0a6981044bc42a55dca57cb2bba0c538", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "228fad76934206748ad626d3c1a3786a234255fe09507f281b3eb82c4cca5b0d", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "c5355cb65440844ff42f974489e274e7c99d093ae429f0b77895baa5629c6538", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3384acf255eb2c6c358aa82365bdd130069ce2cc13b48e9fd7ed6b7bee781bb2", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7e0130bf9c752a1b2db395610a73b6afbb36d48f35bdf0296744ae9583d962eb", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3384acf255eb2c6c358aa82365bdd130069ce2cc13b48e9fd7ed6b7bee781bb2", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "7e0130bf9c752a1b2db395610a73b6afbb36d48f35bdf0296744ae9583d962eb", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c52186d8fedb3f710b8219f3ab2d57597c82a728f44496ca69569c184d3ae77f", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "1483bcf92bc1ed3c68a0bbc668257869c0a2265e1833798fafda202eabf7979d", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ce102efd7c5e9602a572ea437e0b4e34e08601bcca9b654b0f85f05a2d3b847d", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "74402c765f5dc15da422f747ad60ffac9e490eb78ee8080b3773074494b79f34", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "15f4895b6988d8ea0d8eca7fd794ba389e119b837e5e153454d9b772b6572d07", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "0304602342139735c7aa19e7ff75cce4643a9a6f330c130cf3a31cfaec5c0315", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b6374aa097b07421411e9d3917b34ac906a1560f61ba99bf6d261a0c09a1712e", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "a863aaac02bc102dffdbe1fd0bb16b61a0aedf7c92a2c873eba618422b7e1157", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "485a9c12d08b6044b71e8cdcfee42889abab2c2606ee53d9700288f1be918fcf", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "28f78742e4c34c8a55e3684bcbf4c79713ea53279536dec00b16bac9313d8ab0", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "660d5c602465ced2edd740b7061eef89cc4da3c95e6768e7c1cfb01d7f7be55f", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "db2bc4707d184e5e70a56746fe0b3bfe3da97d32b0906680c74adde822b1c2a7", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "fb8d835a2ecb7b279bc3100851d454cadf72fdba32a962cdf245230476becf6b", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "fb8d835a2ecb7b279bc3100851d454cadf72fdba32a962cdf245230476becf6b", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "ab27f681f8144511e74ed2cc9d157916a151dfb429a08e6912a28bb0f7d3ccda", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "3cb9896b9dd1b18d32ad1c9eb02f3f01bd2367ad943fd32551c1248a1e3c33af", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "0808c6e4e531414cc4def62cefe25ea5f7d5df664e6d21472f85f636c22c85a9", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "ab27f681f8144511e74ed2cc9d157916a151dfb429a08e6912a28bb0f7d3ccda", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "1becb044a16b534a79feb2f15973960422e7dd557c70d57263880bd9492943ab", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "5b9815b62530816e2cb64b8ff62c08c6d63f4df585e2b0294dabb1473b9aed69", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "58acd5b042ba188422b15add1640f16ff7238515ee86813b6c4eee41290062ad", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7debafc666c94ddffe6a1da5b731690950e641e5eb8e0f45f0a6b236765834bf", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "435667dcb82489240372ec55397fabaa55dba13c2eee7e423feca64456ea5cc7", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3b7bf803ae12a5fe6cf1421b23210307084f8b9e3d3f69c3ad160bb2064f113b", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "b69155dd7016e691410ace41c6bb8500fb8af7a5aabc34b8adb52c5aa73b5d8b", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f7fa57c89ce26ef300347cc781dd9433473b682f8c5a613fbf64c12375b59e79", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8a81acde365a27f26db95d651ffd8f9fb0bee801fc5c4e349264d11cb7a28c47", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b549a31cb03d64c6a983003b09cb446d7f6f2ae5c31965ac74dfad8031c80ead", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "3051a8100ac9d8a5e3f70703c9d291ba0393c54991f342971176c2259342420a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "30b7902286aa67c21fcecb0d367e7088e09e1402bb8fd96eecd7ff1177ae744b", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "473ecdcef6b14f51cfa13acb6ad42d7dd4e9676ba9fb599ff5af84e91b1d4b75", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "4137cdb790779b246451dcf7bdab16f7694133050aa33a6cc94ae73372999d0f", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "2bff22a07cddf1d9fbec3a807f8b832fcb0a706f5d3aff8cef8f3dd0dec715ab", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "26d31beec6d07263137621a015f5e5868618347b0a08a36453d8f114379517cc", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "a24e9d5f07e255fd365d11a067dd1fc20d3d1c4001c969074943c9174d253b9a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "375c06b4a355077b1f22810871767be8757d2d9dd7070d6a30aa5a8bce0b4e7b", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "c7132eea8748f7c93126a7ec3bbec3d8cf836388c4c4d540dfef3e95488690bc", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "0ec570aad97031ff8310c494b5ed5700b6d8bd3f62813313e8442bc56dd7852e", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "d2d2608228e87cb0dacea2cb96a0456119f12954343fc3346b5d44994ead3849", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "e8f6ad831da81c9c02e9cf7a174daffebafbf186673456af3da1bc69ca65029c", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "184aa0b0b6b56345e10fb50e1c987bb2ca75f9466d109613c9967acfbc5232ca", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "30a0229c3182dbcc17db351350f14e35dce6a43f2593d907c1fb57443f739edc", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d88826de9483505c51662cc1480e042fbec449a05cc3a50cf4dc444252fe84dd", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "042727e532bf1cf74550268fc5feaf5fa0a29f18b7bb9e1b26bbfdf6b11a1bc0", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "7a43153a3fca6c4f95145874456179f7f3ad34efcf7a5553b423c80d4d9fa296", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "48a9b2a3576e562ef74b281a5f6746b8c4a58700d58731e9abbace0f75922680", @@ -16132,9 +16132,9 @@ "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "216fa732b14c21f774c6b7a02fc17770baa306d4dfeb54c9c77a85b0a619136a", "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "7dc7613482d4e8c986377a85ca8fa6191426147bf767c448010208d955363a14", "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "4c01473d34cb3fdbd0fd18c886a58229a1ce6362a6efcdf749dd1d6fa9eafb1f", -"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "dd75ce54d46dc216e7c0fa9306e1cf535689c590f058a5446648033b809b4e94", -"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d9c7687522d079023684b80e5821773ecb8748e16d0bffd7c44bfc553e08ee42", -"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "9a7bcff67bf1912f92474dedc94f3985d4e84be3d944285ebacc95dd6e144942", +"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "6c5bab0969bfc1cbbaf093852a0e959da07c5721128f70a213b9675bea0868a9", +"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "b074c9d0ed5c42e5bcf110b7472b667dd78ecd00398edd4cb5da5ea4c50023f4", +"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "68e5d0a9c8214c25d58b276e052ebc75c9b653be7303f98149c372e56fe50158", "T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "fe2a7751d96de0731c7b526cf514624ce01725e976cbe29c2d53e5ba43d2e024", @@ -16146,31 +16146,31 @@ "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4dced33bf016d2ffff4f4ee7f57a124773f2c45a2e5e6fb9b27c75cee8caedb3", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da3d2954cf9a9593e3c0823447d68517ab7b87c3b999ee38ca384e64130f234f", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "10ebc3ee52cd5d07f62a783f15d83e5e97189a612b7758779ac4b447501e2a38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "713e5572002c019749588ba89dd29e6fc49fcee04eb3e9a268a4f3c691dcacaf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "da5303e90f225f5786e405424369e3879f8a248ef6e83b6e6960408f706bc18b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "1225219585bad0bca1d05b329ab492c9ae151953d11ec709de4e53d5f687c8c8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b26c6755f8ec60f98f80013594558c00215e32a48e9214b4df0c024fa53b6f57", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "e39351ae973898c26b54848659cee91ea3d676c69df4b3c773e4d99553482bdc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "5879fcddc63c531df48fabfcc2de60318173ffcdd0a1901d3df01391245b0a54", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "2599d72c58ba36860ca4370750f581211f73a05c77e5e7c10e5ed1ba5794cc4d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "bca30f7baf250c553298a4ff9531bf22065ddf44e933e3f19896632479e78825", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c994f56e464b70ccec11ddb2ef8fd79f3b01dd9bfef79539ca9694e78b9fc0bc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "6e4d55fcc15d3a97f033fa5451fe30959085d69fbdddb07b7178262b9b6db863", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "b147660b277445ceb442c182c60f51686b6700651e32a648ed0d36e28b64e67b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "235330922f1f90f367036abf73ced4ab675b0151992b3ead735b805c7098a060", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "c0deb646f7b576bd51190995ed33c7d51a0e01403e9604e2f34b55f51886380a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "c1ed6ffd94e0365da389597d93c5d407e70de1f4c945892db082b50ed4a08fad", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "b376f7247444665e43edb9fc4750b3110d1701a04ca8de52c474eb751e127802", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f784e906672e51a655ddb0fc1d77919d94b8ea2071e4a2827d99a72c3222afea", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "528fbe5b008204b88c08355815cc846781c5320d9c91b473cc30a4f91039f755", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7e6bb2a7318eeaa59f91af5043d1aa3104f789ba19fcad8916af268b4af59afa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "2d1d5f1c8a4d38391a0ddfe0d9bad60afdcd3afab0c063a54b02d262a65e61b7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "27c4480f454851cc3107bdf0790d43f702e215ea15c021d099947591d01edab4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "77eddda9ff146a73f3338eb52653ce0fd1f36b96cf370e64bab3994dd67c7e48", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "3333d5ae0e5db1bf89fa3fc13ebdde49d6dc6af197f0bdc9b07bc04c0eb552f7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "732f8a4cf14c072b1f15ba527b6ae4f17c061784ad5604cb6e10d0370466ab4b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5ef212b4770e7b112018866133cd62997331a990b48f6c5704ceed336ace2888", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "a8154229536c508ae41c78f2062ae6c56180d36e254d487b177835e17fb6892c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "eef67695f2a35a535fd1337b86e891cce60aa6bd49a537470f35be5cba96d27b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "29846b400cd7cc683e6a6a66f8f6be7bfca36bffc31cd0d9375580fd953f9378", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "aedec0d855db73bb13e2e34355fbe1458c669c3c17c5f9cd435d15960c4da548", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8abfd651949b0549bd79208da02a84cce2d7b7f4f6af9367f350f4c928af880d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "f802fb1231a0d3510a80a90c484256edf6837348ddf38abe00342c7056f13eff", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "983f47d25ccf331721c5c3213a9e63d5c0cf6437d320bd754f9166b954fac8d0", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8dfe95715e368b515988e1b7c3bd8097efeed5d3c1275fff07f34814843b6773", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a594861d42778723fb3ded922934af2ba49a07d832c5a09deddffee71c8eaf95", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "445c2bd60b5a052da63dad87ea70c29e0ed86f4d481d920f1dfde54d6816267d", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a347b1dbab6408f25d2b63ac9a98301b828e2c20bd6b414217c2a68e87219624", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "bbb0c548cdc37fe5d48dcca601f8741bc6841699f63d2ed339816df9ea507baf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "58e3581c2ab38ac257225428bb691b753e6d859609c6849d1f847d77a06b0b76", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "bab89219682125df5a48c377ba46502b04a8ee6be24362a803acd6c91785e228", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "1c28e2e1234149bf87def3d3717c912ab08cf581412c241018fe034239054c5a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "27023c94f0fbbddcb143812eddd2f24266d44295167616932e387b3b9ab74d40", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cb94e96209f7fbcb6e712deb056f219ce6cd04a633bc7e6891cce9a759b62202", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7423cb702eaf8374b6b3b8dc4eb115182c47cc3510de5d8f95dac07ddf3beb5b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "f17b1b1abbc369bc0c38732144f6a9957662b65b3d5fe7e22c27d7d51e5fdd3b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "932750f63621b656b9bf7ab1c66f4d34efa35c190b3b593809dd1ca34ab7269e", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "07251fb2bdd389377bed64b5950db0fa0ce65da99875d2340d4b3b283e57ca87", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "4e8072bfa4f1341a05b75d5bbd39116b3dfca716ffbdd8c9bb203d967c9fd85f", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88b4ef87509bec1ba8b7e2285aaf22b63d4ad5b28e2d6d635f11475ed6e20ef5", @@ -16186,314 +16186,314 @@ "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1957d99baaa7b4df9b5391e7379ee5b1ef2bffa850c569484cbb6fbe86994faf", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "8a0000bac3d9bf5b41b4eac9b9f3ba4b4555dbbf9a04de0c7d680bf406a59ad2", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "a4ee98095613c42aad79adc78b8d4617fa0c181af97fb8ed26ceae43dc3d9ad1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "d15e7a6d269828c6194738186b1ae2df91d6f5eb27cb51bc3dba0168055aa767", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "c3c8817945f2a37f63fa92f035d348dee83736bbed61d30ab1647a73f7497632", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "12764e2f35b2b97dab990ac88537be93134631caed69977ebcf33462ae23446b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c1d160203e6cdbf2715809142301fb48e5c6f7a5bf0d3ac83bbd071441af8cb0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "cf47e1409d9e84262d37299ccda7c46f6bd9771c492cff212fcf7c9809fcaceb", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "f753f4b7836c5ddc23a4707dde3250fb59e404386447e8e256e9e3a1960bf5dd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bd80abc56744dd17f0188b0c62b93bb3f5a98b419f45d1a8742e30f339110984", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "99e7b912d3f72b235cb16c91013bdf0ea42cca0b4aece1413105bb1ed0dd1b3b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "93ffcabf24c70f54cb0cf09becd9a0e8d67b9b067d80c50472f562b3d6e70514", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "18ecb1f8e26d07d41eb70e34ef8ebf04c0348ffbd7d7b0d5f597de144277281e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "788d525588656e3aee39fb2119955170e26314ae0a03c84b486d2decb83df8ea", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "13eb27fc123c4d55a9aa14f94e9d73af89fb2bdc3499b117b3a9a4d9af28d0ae", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ca17a7988a774d82daa513bcc74e4151a974b6dc7ddd81d3fb673b7c4015aef3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "06836af0fafde28ee68addbe62871e7d989487de2d73ad9fe8cbd62ad179b2ce", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "ebc751c8826184832c9ade7932d0946e51b302c0ada91634fb94b5251510a08a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "f90c46529559857ed18ba9ebac071e2a30f906316d3f77bb16c77a32b108a670", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "af16cbb55609f67477f711af46e3aae8c7a88e2542fbf1d1a5e729d910252ed3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "75b771fd9f00e743a22c970c076521cb09a6e58340fedfdf49366bdc5b65b4a7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "d48ff71a16e5b63c7da8094b98a5dee174feeafb06f9cc2a97c69c31bc22bb5d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "d05c3a906efb548f06e676b5202dabdde06992db96537a2d4ba13083959f19e9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "025374ed572e2854f38ca26abe65544d458e8f2a7003104827d862d1ba42f377", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "075d13a0b2d03e7115a2fd938822c55c8065c57e7688fb2d4c6b41015656a7fa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1637c592c222e63a195a0873b53f2b73e19abd47f1f10ebfe50704a0dd62c19f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5bade979f53d0cb6c0864cc7754be361ac73def14c38a8cd064131232f619a67", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "759b5b75b92e6afbd876ccca8c55522837f674217e20d30e714995f43cb8ed7c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "759413dbccb3df9b4f0abdfd7b12507eb0e0ab1e5d75e94b55c9f19ecd11b6bc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "7b409722f943e7e45fb55921b80cd5dc10685ed1d32e1312752ed606f76f4101", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "3802d995264e9e5e192ace57d22177f00a31120fcfdb6dfbeb4c924d2ae77f32", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "5cb431d9b01bedc244dfcd13132bb540d5afb0558f565a6c090d5fe10e48fee0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "120584d48232e48685b37f3bfd648f4a8dfa29f3ed5f0a5a86dbd5020973fe56", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "cb599878f3283a93213d3c9bf40ddc27c659b50484436a06f83be7d16b8e54b5", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "7c48bbb9cd9131a0b93cad58e1f8b903c4cbdd7837fb83725fb8a78771572119", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "525c2effc307f98df5f7e09308122f93a804a1865f170913e8205e82d43448f5", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c46d999c0466c88e0fd84be2b65135ee6a20fcf1c4c8c6fe0542fe4062d0cefc", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ff448e383fb14aec0098092b17701d67bb8a3b4ac9ee743e167997e21a5fc0b0", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a0d59b3d961690ffd41751afd28a94ee6366402a93a277a4f2c32d7ccb679506", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "48aaf2d49cee8617e53ce6db0c427e641dce7cdb8b3277088832d6d9619c76b2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "63e77cc2be608542a1f6c46d47890c369dae728b3ce73b930ecd4074a2e7d18a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "e56cc63b826e6c27390ace3173dced9bba37f513dd1b86ced965e3206da2a3d3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "8bdc07efa2bbd8912aec9eb41fb0703344cd16dc6b8bcad0cc0b8d436577835a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "5977a5bd5e0019138710a721fe0337cffc17da16b45be3c0343e9b8a5182b35b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "bea9e99a85ae11b1085f1ec38c96b0425d85fa006efceb4add10129abfaf401d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "12a796393fc0f618a56aa904cfa0b5c8dff83aadb446996c5385ff312c5ebe76", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "916ab6d5f1ff2be103b1f77029ee75f733636d7e8f57390f09fc40e8fb19c111", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f58071562b859823dfa1538a3b081d3807fe23dd8e83c55781a9ab1c336089d1", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3f0de896c6ff2946afe6c08c77cd82a3c167df1acd925edbb262bd5844fb2db8", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e4c569417b8d52d20fb3d8da0f5a0bf5c4c189c924c97b35a4c1384015a2cedf", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6f0654b16de894b1787ae81358caeba1c869bb0985ac9f5af4f16f86d709ee38", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "57917aa2f29f1bd48985d313a0ee8d6567ed5942d936f37ee5d84ffe881bc5ca", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "d79d63261c239b44ae2c06b1556300785effabd9d587ddb1de6c691867577926", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "8a8349b86afbff0f66d0a0cb5a0c4b43f9d1f396c344daa32a170988f7163174", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "4d91489cccc1163689933079d0dace4ed073982742a4b05a065ace8d7a737ae3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "cbb195f3150b0c0db4661c5c7a4482436bbfc4b31dfe9b99f4d2d8188a3ee390", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "eb7e280c9d9c54e197e1f6b2fb41f93999e4d50f51fb15045a8ebb5fa4d8bc06", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "95e204fa43e86ec07559679fdc23ddd6f57c0e866435d1e3ddd186ecbacdc2f8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ed8a6991e4c72c62d07e2a80b99f3839b4616ec32e0eae4515819a0bea7db7c3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "bfcc3ce1f083b1d724688930076dd85008ef7e16620c03e25e3b4dfdba7a2db7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1ac35f94c99a195a2c90b11368bbd594bf94e672c54d3fe046d94dc2a6b1584c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "483ec6b1b7b89bf10c108c915ef2d09969bab5e6bc9dbdf123fdb5578d335da6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8c2fa55bd3ce4267e256cffd717b8dbc4d7ec2e48e8f6b656609ccee2d0fe890", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c8e06dd686f63412df2e08b3bf184ab9fba8a6ff482e76e127464d4aa0724b58", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e84bb01ab8469511a23bbf6ee1c43bcaace54d176409968e59675d331194084f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "62b712561b2a6820229d9c6124cb121249490fa1bf919c1a4c304438b94d64a3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9b67006969b8aeae36bd814c2e50611ae7376628a09da6fb6035d96b6ed10c2e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5bab043e66d25ff7a4a260496c0b19f7d9a78e7a9f90ef297f89f2ac1aaa329a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "55769832dda769f3e5ee86e7e45271400cc198f3abbf18f3f4d54918b24271f0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b4614508a92984e537976b66677402cdbb8f3ef66f1c20a1ee656ace964d105c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fc39b214e22446ff3658db155ed6997811dd7c06731e6f4fcdeb47913caab4a0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "6dcc8b1648dffe52af7f04817401efd814f466d62a4e4b988abd130754a92170", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "60dace26d6f6dbbee0716174142670943908ac819ec5b1b31cc1fa5ed76017cf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a0cf65e7ba9e0f9bcbdbd5806fae815476f2d0850ee550930384b568b5fd189b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "919636362bc1736739ee65fd3610f0ccee66e2d853ab88bc4088d4ecc79f30e2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b73f17b48f723157f4be55064026a4cddb87a6190b7307bcdb3e7ab65b7f9f91", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "21c5da1aa33eddb9c63e44b4dc0b7e6ecf32e2bbd6b31865de44a3cc0f0055c9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "5de90bb092f5fcefae3e76ab3e4184fcf46c3097daec88ef9089b881d42ec319", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "a0fd015db6d93dbe1a40d8de46f24b83b8eb995236fb9e9a7878a0a71f27bebe", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "c9704a533a21b3c36e3f02481b26cff583c41ad7e303196eb62e0071b3f398d6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "0d81cd0d017f83d6bec57f311120b95550922bb74a93afea118c369d5d5007ff", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a8d945ba3fe514a68771a3686fde56486603fdf4f9db49cab44d2e30d905ae40", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f6332c444e0e6645af438058a7b5e0ebf524a0ac709c4581b486d9c46698787f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e73bf39b02a02173ef9c184dd6c0462ce284857052bcd861a185c8fffe0b5ea2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "420bdd1285c752ba70b9caf651277c29eeed71ab9a08d049c2b62f0134a369b4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "204289568e711dcbaec6a93aa8a9d8b20b394dcf9d72e7d2ab774f9268bc5f84", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "a14423ad534638ff450d9de87cc71a223a5bdae243d6c77e14baffc9f302e36c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "330567987333acac21a868766cc2efea7b7f3bb6152ee93adeb67762feb743f2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7d1d67fffcfe43fbd8f191fe19ec2ebba73578aff885c2af58137fde4c69586d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a08bbfb77d3943930f954315b56c5d2027b16d07a65d8a774a4df27935820453", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "8609748599728c8146f6004252baf2b8af1fe44987db630adf83b625e69921e5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "46c98b818ca1100f51601776541723f9d1331f066df788c6d1f2dede969a0d5c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e163c576fac87285b9a301f70b315e67c9841b04988ab87079399fc03199f651", "T3T1_cs_cardano-test_derivations.py::test_bad_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "205c2363f08942fe227b76d1d8f267fcab0c19fa55bcb59e582f135298b281c7", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "41757a529e9d3861d1b1b1b11302686979904e1ab92f676f38eeac5bfff6ea4f", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "3d9da2d36711495c6f45afe63e37bf88536dcf03142074d2ec786bbba89e13cb", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "3c2af1a1e5f0e4cae316b49c3ab8ca39f528e8150afa35a12f7cb7a6db43d2de", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "95b07a93e37b647592b6cd0d292b84f64e2f46785e0e31a39d805796e5e08779", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "c457d8a79a114cf8aa3ddbea19eb933fcaaafbc2a6465e926e5a156ad951085a", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "59cf0c189cafa6c5cefb95f22876145e3318269f2eab3bcc43073172aad60620", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "6713a9640c6ebececbf2554d445a3da6dc71fa1bb47a64618183eb7173d83c76", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "057690f59dc16e209103db5340fd9620226b6efeea941457a27a553ca2207087", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "bf60a00c4465fc322476868852c3b07878a2e906d3f95c0905abc78d89146c78", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "92715dfafcfe4067ad54ea9e271c2f4e1e2b5780994c588bee8bc2c1206bfa30", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "5f92a92ced7359fb22f15b8ed9ef9ab64ff39a567db0f579193cc8cb22612090", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "eb11532062ab02abab18f61b1cd08797d04f67aecb5648a4d6c5897ee69466db", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "15d48130af0d6ce87ec4b58b2f1ff1d8151771adbde8399f94f227b115a3e169", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "93fe08c9513186dbda8d73ec534654d42394996b0d99234ac3ea5826c0b5be02", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "600e5fdf90361680b0165e17749236f481429addecf700bc5eb3187bd15d4881", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cc8e5ba04e915396f6e8544b0425757431e3fdc5ba24b8d80e4fe0471ce56ff6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "4af4c9b00191aa2045cffe531395e98741d92234389d377770b9c32c9dbffbe4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "f49015a1ed733782a6dc7068f42c00730d2d3247e09df124fed8ecd8efea4899", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "3b0d966cd0b7de3c1a67e8fab25325b9a1f0be41202697aefe229c2a95f3126b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "b660ae76575bfce08cb9742ef1aca2a829f034b27d1fa55b5bd7400442006324", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "3ac54e0606001cb94da6a7342d7cb1ff6be93b87603dbe2f7a13bddca9cc82fb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "479dcb4eff6032005bab35d85eca1358ca39343d13d750eb14b9e92622674097", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "feca058db0765a0e8c7d045a4878f278a92d40c60add5c409a339fb13b8bd4c3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "524ce7fef74bd5368b052432983e655ac2f87ff9eb12fe622a62f1e5d3984689", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "524ce7fef74bd5368b052432983e655ac2f87ff9eb12fe622a62f1e5d3984689", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "70582f944d06e4288ee9f061e7b5ab2fb8950c82bdd30db50f8f0b543798cb98", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "5e9ee0c1c696efc846f1a088999312e5fecbb70e5e4fdef85e238898c5b00ded", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a0044873f36d7001a67ed6199d8487dead31ae396c723565ca9df3ddbbfcd8d8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "20acb7183f1b9450a26afd41606b395153b57dec602219ef763904dae4b17b99", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "74dfbcfb1ac0492b04675d3951652bd777a2b3fb475e92588f35fa99eb4f7026", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "abbf65911333c1fc812d4b4adbe8121a7e5a5df79e9ff3b00808eca965c74633", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "875565741525f7b482154f1049064cf12d37998b24789bcbf9b46e6249efa2ff", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "7199640aa463aa243e98cfa20eb3d4204ee46a8f97354d684c2c6d738a6c0870", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "8090a6b148b16e957cd572d7b007afaef79a693ce204eac097902e21b85fa05f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "74dfbcfb1ac0492b04675d3951652bd777a2b3fb475e92588f35fa99eb4f7026", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "abbf65911333c1fc812d4b4adbe8121a7e5a5df79e9ff3b00808eca965c74633", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "b024d3faeaa2e91480dd3fb0eef1d676e88753f22019d17e75aa9ddd8fff4b42", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "91dded5c04d5d9479c118e936fbdbca7bd8991ab7c61c915d9772279e6a7b9b9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "c724c7f6fb49ed728d2f84d6aac4d4c9153fee165dca33170e4f81244485a9eb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "caad567f35cb99226dceeb966cc0bd2ddc8cf0d78b5ca45c0487dcf8b3c99027", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "8f3b233d798358efeb8e59d78aeebbb08977e012b6ad4172bd4bf6765f6d490d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "27812dd7b22e03e16de63050067ec27fb75c8be85116ee140cce18d631ee6b6a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7fc7d36cef779d079b1bf7a9ef1165a7b849d970f8881e0e939661ac7b667714", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "20910fc3219f49917010626e3acfb09b82d65ba9dd7cc17d27921b809e954b49", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "84d25fdd0312705e1d5f4e9494c0582e70af61ab30b3028fbb191fd52d8645cb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "bb00f35383a23e4ed31444126f7a37e469a4214ea964144189d2ef89e8df3a8d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e83ea6d7f67c7a10fe435ffbbb31a28b3b29f8a259ca8d81eb4db31ab6eee2fb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "d4e006f2dce33247fc8d783669eb10265a935b761697d411f2f1fa9dd09f8610", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "be796471213d42df2f79f8c807bd1dd6aa600874612e7cf90cbcfc78cf1d3c9a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "153c1347fc83cfe772f3fb7e26904b403ce3610a35947642ecf972751c307318", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2d787ce2c7db6d88cc0c2b4a2bcf927d0f6fb2e0b93c8dbb66ca0d6c56613697", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "90741e2df6449e169f48d62e4d655948f80be00cbf83060b2a14f0326b0781ac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "329b378577c651d9cde227e32409ec20af9977793793d72c7c75987d78220dca", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "f6a7765a1d2c4c235842c1df8eb588cbd163e3907c89dd2f4aa857bf3bd188dc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "0eac8fe426a1201b4f1f5a0b485e9bad7461f0297362b860b0daa026888cb637", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "63c45d380fa7103da3aefaacfad395ed699884dff519bb90ad9467bcaebcd0e0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "34fed959797ede3e71d75d2f3dc163bae7f2766f5150eef356dec3c81d8a57e2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a6174dcb2a8f6209a60b609f2fc7efcc7eeaf18ff22d76453fac40cbd949c48f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "e2a67d8cb2d8708c05ffa6acace6eb2ef80f591120298b0825c5f2b024c24c4d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b66640b4305103968e23d7a19f2ad1615821495b17835f9304990508eefb01fc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7cf345752ad81b4ca0102fe5e9d130844a4279c8126ac79c7b346f0973bdfa1d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "cfd9a3851bb4fd24e7bbf608b1c4d73c6ac1d04be250f93984a7739e04e1dc4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "59dde3afdb5abfdb91a941daa1700c33e70d0a3ffa9496631b3f547ae3bef538", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "86391feda734eedc54099cf808d4764b70ce5b97905f2347a8f408ee685e26b6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "1aebbfb1f711046b0aa8e8b3df150053af18166ee43e0bac2e35271c701aeccb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "e3303c1601d7aab31a5293080189d4d4bccffd40618a0ea4459ff9909f49c6aa", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "65d111f11975e43b15e97ddaf31f400af437ceeda7c82eaa989baf39521544d2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b1ce145b0714a69d923861e0991def8a0292dd791e5e0d1ab802abea671e2c14", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "126340ba640059bb667eff14d905c94574df9dd2364b275eebdffb5a70f38065", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "25f767ed759ef71d11258ad97438fab6b380a32b5cc246548d20f8f1a281b8f3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7427323021f757e18578a088ea64fd4d515d5df8cf856ed24f5a1c5056193e47", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "bf59059087c19f352eb7444d8d2dc96226d81719b8ccf5be7680e969de4f716c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5463d34e3fb3035d47598ce5f099bfad33bf7c6d27a0c8a51219136f02b9a8b2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "8e6ff82e72411e9e23baadb5158e527a0f7cde4d430b9154bf976d249ea3a095", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "83252ee4f6b2f44c970a1db58dafee0d02b61b6b7e7d2381bdc8b3da77cc8b2f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d21225898ff795191661b533fcec9765468f19011fed12b4b7857331a9552fc2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "acadf7a505aecba3e4013799b938bc17455d283300175eaefbd0f381afb6b940", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "2e4d153f75b84a41f430886d22c4b0a235f5c249ce60379be6fabc4d08c58b1a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "611b1465e82c05e2b3a53c6145aef97b8ce151cdbf06d45ba36b8c6a8daf6d08", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "faaa5fad3fda0eb61f35d69f4f945d8cbc52c16042d6f67f34c24ff79ed1b592", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d751164abc5b9589d6364a34cb942072308a5caf1d8cc75f605fef9d31660d21", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "edbaaa701a170030f61aa28bc35a3b246e0ece38a72c77df050cf62941bdf830", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6a0254d4d4e20d9e6ba465a20dd79a183019bbdbcd01d13a64ac365aa45b4d17", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6a0254d4d4e20d9e6ba465a20dd79a183019bbdbcd01d13a64ac365aa45b4d17", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f48a4f2023517b9cd108a859bfae840455c6a1b6ebe7bf3859bba60413b52346", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "4f481d69ed4494a63d5fb9be025a0051238bb94be566847c6495d962b8f337ce", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "cfa4aa08d8e3fc22641a935b24695909a538da3a140b132e0200c6f3f4671e65", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "33b9c7b5f690fe6e2baa3e580bcda2a26b1254446bbf85f6ea301726cbfd2c02", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "5db6e8b70ebdfeacaff7f110cd0773b9238f49116bdf7c7307489e310b56ab01", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "484eec6e80aded346a2ce3fb3ddcedf1e58ff504bf22385f99c490e02fa7ffb2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "2a5520ec9f5ec173c72c2093e49a855afb24dfaf722e52d3f42e88367abdebde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "af4bb451969b231a9408e5de487d3e625ae82c607eb1f525255923344488d45c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6f19f8b00ecb4d95b192434c581abbdb3451d6901dfdef094a8b72eea84d1ecf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "dd8a83abb6eb2c460c92fc074e62ae784b2dbdc9f298292ac4c2810bf2c18a25", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "15d48130af0d6ce87ec4b58b2f1ff1d8151771adbde8399f94f227b115a3e169", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "3b0d966cd0b7de3c1a67e8fab25325b9a1f0be41202697aefe229c2a95f3126b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "2a91f8fb92062c2fdc4557c6ec53ed9b141776ddaa25a9d832882a5449da3a2b", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b04250e527b01644521a19889326b552d87ee33fb75db226ff588f858e81e56c", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a5691854bd2deda9844e35acdd0cb0c5628536d490cd1b683cc010ff251fdf51", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "ff3f5ef26287dc3f323b287f48ec39363f8b65139a86294e613f997e02d90203", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c3b40a6253a3e8388698998707c7331ccc6e99e48e57be1578b3c3c05d7da95c", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fccca766cdb9af9567922a258710630ada8aeed37a84eeca3b72c3f1984f4d81", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "a06a966045710d08899a2d27bd4123adeaf344d5a6e908a6301628e1eb184f20", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "9f91a429a92f95f4fc84bfd05936baf494913f041c7a6c68fb075f9419ddd4ca", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "5c35c3fd1490fec94af88c9e563677af43e80112ae742851c955ec4fb391925c", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "7206c58251ceef7fbd6169c714b8e45e003312c1a1fa72ca8b1c5a8424b463cb", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "cbd5dbdca796fdde1338ebf8a96e8211372fd65e28fdf910922bace8e098c029", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c52fb9368eb4bc569773167cd0022f0a54cf2e48ad83332051d96cc166c346c3", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "5a9cdbd8b05bf710cad900fc3252729bdcb15bde4dcb7234a00406be780a3467", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b705cf1b3132fd049d1550a1de28e323ec2653d1dcfd08c57c5a7f51986b1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "594a4ba2b231ec5413dc3d9f9fe60570ec7724f5a9249e3b6cf657525b02a45e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "44476582358691018bbebdc5f625296ee202258b0c1f6421db14e04931e59dd8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f186ba69462fa6c308218e8908238eb0f4b6e66996b35033a754b31e5436de35", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "475f55fe26fcac1f9e72cf4f6bae9d5c8bf93622ec2893fae4ad49d1a3cbde7c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "661c56ab9f6d0b27ba19cc5c563f1f81eeecc667ca34105d14d9bfe679cc97b9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "cd4cb2aa71c5fc26114fd8a62b2c3fa92638c1b9865df694a6dc658fed07184b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c7771ccfa179cb6f92579c558c5543c8508476f50871fe575180c8a5f66034ab", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "77282b5dddb8a6b37fd7ba45f4a41f0d3eb6a1838160a700b67b06a7af3169af", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "de354fcc0551dda86c0fac4b739eb6b99183e652c637fcbac2d70be6bfabb102", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "af7ac4c650788674964bb6331e52d87d527cfd1a33fe2c8e176a28857418fac1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "5fb4e08958a3fca4b5e2f9f5ca4a1af8286c5467ef646d5c6019be1d0df2afe1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "5fb4e08958a3fca4b5e2f9f5ca4a1af8286c5467ef646d5c6019be1d0df2afe1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "aa5699fd91ca6c9a49204f8ef8e7f490785041d9e610f655df0726e65052baf6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "b59a491eb2a67e5a8d1aeccab8d8e8ddeecbce9efaddaed110c65e3c250d2db9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6bbafca34c69fde6aea6167b1c3c9d3a683c8cfed22c2ff18ce18b6dcdf0762a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f6fd4fbfb90f4c7c221bb0af435f570ac8c58a9af3fa2b89b55b19164d7c1c88", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "faba2e1268b6701bad92823d4fac255b9b5350e82c71674fa5dce6ffdd179fca", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "aa90ccda7d9c9959dc2be227cd0666419b4a0b53a3949a6d4d3a29ab6ad6fda7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "be3ff16b356e9391de01a0a7a9fe633d6fa37bad89e015dfc7f0103dda4e98bf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "e0f96f0841cc67cabd73c5ec693841523debb89e6623d28c543b5798a9e5ee81", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "9ffc9917a0247d1be393fe190e993f82d8032628eb78f18dd4a14609575412ee", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "faba2e1268b6701bad92823d4fac255b9b5350e82c71674fa5dce6ffdd179fca", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "aa90ccda7d9c9959dc2be227cd0666419b4a0b53a3949a6d4d3a29ab6ad6fda7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "e79d99660827fe14626994c7ceb07b6c6bbfaf1c7dbcfe9cb924cc75463e0530", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "0bbd8c50d25a05c9a4da502b5166c612256382502e1478d0bfba630344504d75", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "f962a61fc89e0fc1c7e85dab77a8dd401ca519219aa64d2729ed518e124b5c54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "9d1083088fc55037225170d74d813057fe48f99e2fb33cc23181818de8f7f179", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "54b7a5feaa36d3de1cfb3d0836aec10d2ec6038525126d54448d029ef28dacd9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "ef3ca8f436441b76373b8ba04f31b70c381dc0edfe17a3d1fcc7a6ffb2bb728c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "775e23c06eb7f92f0c205796b1113cadd0cb16b7faf96de36e2a28c6393592a8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "298be2b903164c3b9e2d5fe2cce4523a252d3b22255efee6b955a80d67f186a2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "43920e045bdbd0cc19970c6339c946e7ca5ce451cd7a832c47ede83ff13e5155", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "24d52a244d77254c5c4558beeeb710c4d2fccb216cc40c85be2a91e3894c0c3f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c203f035a61bf7832ef1549e1f5483d89c9f3838a41cddb9f318ee817e36cfd4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "60fcc0e1bce9bd0d9677a1bf90d4372b619f60cd5674daa07fb00c75e6b7d342", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4ea136c7bbb94163065617d131153fc6c6e58a600d7b469464c867c3695a17db", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "d2ef0a4f0899560b048c83b713f5fbc189b0fc24db470821c5b6389194bd233f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "5e66e0e8fa485c1c0a7a0292d96d7eb9ab82ab57459bcd5c9a019e05d68b2647", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "ae606a5e444053e679ecde22ec19f459ed24f612a3a774fc1ae3d0e22de238ea", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "b822b41d8a34c5140a5db572549e42d218f9148ef0dd6bcfc94c74d359622c9f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fdc02b6710a9e3e5c8a095b46ead939abdd88fae2cc396a0d91c12fcad7ceaa8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "1de92ff8d0a2ffd2fe6d9cd518c1fb50af81b3ffc9e5b9d87afcc75f51dd187d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "663988d7dc9025a0b0ea3b0104749513806bfc54d22b78c77315e76666bbfbf1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "6d90f284f506a03feff102a15d2f33f071c5fdfc6652fe12871296e4ca407e72", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "de56345b461d61652df3a2e20c8936bdc8efd29ff0109cb88fe59e84e363eb8b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "19a072e5ebeaa61f6c9bd0d7dcbacd76e552d8c4ad84508b767c7e6b03751dcb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "63b8a1ff31fb80eeb102b64ad25d847b6171b8f9fe06ad96fc4ba4e272a589ed", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "8941673cbad3f43397c0516dcecbcf2274b383aa1830c43ce24ea54368e1aa20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6c2f9e3a79861a410b5b7613e2f7c852cfcc2338f544bd126d930b97b73f173b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "e33d07e138db17b40b369ea6c8dd82ded802f8f4839e7115010847778847f9e0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "7c2580c2d771d55ba3c6bfdc97e491e8a11994e31c58a1c97c01d1cb74aa3f02", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "6b9adb99d65f9a91393066d5c8b4fac61cd0a3fbef712438cb453066536f7096", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "11f3cd251e8705dc8548ad83a0481cf02c6e4185fdf955850c45a12f78c7a879", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "abbbef2fe9113b7d89ddf09c537813037ee89b5ad759e3a422e7feeafa06da90", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ce44c45f9e126ef880d7c175967f560e52439b03238f64a9d8744891df17e7aa", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a22179605f6d325e9e5cb921d85aafdb2ce7ccf337b1f02caa9ceb592bb85709", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "bb561d2bbea7ea46bd148f62c86f35292e8ce8855e6900382711ee2bafbc73cb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fcc0172fece8a3d30ce3f76fe564e4cfa560db0785babd2e6228f445fd070bfd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "371d13a75eebd3578bdbf89af63325dc432853cfebe4585edfdd21d32698d596", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3d2a1e54ce93f505a8671ab232772b7a696bad88cde38159f528b0c0e43c2698", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "65980812e7871fc5ff6d396978ce39dbeece64babd43dd4b29e2b27b8cb6a6d3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "bca4f1a253ddebdb90769823828c4c15047bef9a6faaaa9608c1b64316b292f0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4f92a18e9150d2e02340e00c6cf304184fbe75ceb14e33b2378b4f7919df2653", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "961dc7581378dc4a35d10cd27a51d7ee7892443ca892e801ed3f4e16e3272d0c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9deb71c5bed9352a429568ee4be0c5454522786873d71ee12d6fa08d34b9916c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "efa7fb9b031385ce06ff26df22187790b1d694503098dcd203ee88c0903d4ace", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ca8c279751c123558fd05fe350e16a57d7a1d91e8e6a91d367d579a282eda994", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "c21e6f1497e74bbef314f6fe99ba5bb09f1ce6745861dc0abc511d318a486b4d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "59240a6cc49341d79b93134982a18a520837fcb63dc4058fdd965faf3d7ac346", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "99209667fc84455fb009f3d3e350141f5641d0081dd578041eb1430005c2aad0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f79a6a74e117322ce0bd0fdadb5df4e313060597a19ff9bc62537b7738a039ed", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ca83a6cb3b8e279e83d682e97239d17481f38a349558a05308395b1648ffa4c9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "14b40aca5579446803088b11e94f0a897b683f62813bb0824ee31b98e6dd120b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "b82469c10ab0e7d6d13b054cb9ada9a6f552e2a0529e4cc26522dcff6b8afad6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "95cdcd4515af3ed3e8c0b44bce6d3487e7a86697f3b6c77557db2c8685e7c25d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "faf1853dde78ba77a646d039694b7bc4114c72025beb4d585d7135161bf07d59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "a2b705cf1b3132fd049d1550a1de28e323ec2653d1dcfd08c57c5a7f51986b1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "cd4cb2aa71c5fc26114fd8a62b2c3fa92638c1b9865df694a6dc658fed07184b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "cd1e4b5868fa91909fe34135fb834288e9896a0a0ac793fea260cff1d01b8bf3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dc4cb48df5897c0715d4a052414b28d45787ba9350a850db647b4d36e20b8589", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "1f03dd2bde1991bb1c00a8302ca9f07e117c4a3a7ca0559e569ded8a847b7e70", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "bc6b74deaa6ee797c38f0ed28e0cbb207468a1fbcc14537add4e2ce9d18a5ff6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "78b7d9e6f31f30d8129113cf3838dd67f3d46ef9276ef6d4665c301758240ec3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "cb67668533949423b2684eaefbcebe14b1414648b49add4b214566900b8b2d20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "5959d8e6f3acbaa5c26bd9faa9514b557d0d8d68e55fbfcd8cf79d6215ad70cb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8dccc371e1bcc7456402a02e2ced0d7b9317682d80c68cf448ca76756739c6a6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "2157366209b2a66cbb337e386353a4842af529fc5fe5dd8f2da5a131bc713be0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8dd8ad562986e115f4ef2df4608ed849e63d999916de25b0800bbc7140cb5360", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "1c5bf17ec70a444bebb502f2cbec045ff8e625462de3cd66c1a1dd662ad3fccb", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b7e05510acf44d94cbf762daeae228a68a0e4022ab3de2e4d9a7eccbe41d7bad", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "d2f936bf44dfdbac2830ed90bf0b10647660f1df461bac46d7e239a617995956", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "1f8bcb5691a4fb7c8c70d8cc04f37d0075c5d1ced96fe1db6f335d376316c867", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bbb8e3d51bf28e54f0319a5e6be66a3e73e77c12ad5a24c502c178e1033b67a4", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "91ad797a2576e9577d354da5727a1789a2688f9bf05b4b91272c4b300cbd53f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "2157366209b2a66cbb337e386353a4842af529fc5fe5dd8f2da5a131bc713be0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "5c4f06a892025a45fd0ce5169e22f1cb59cf5040c14601360432405189163854", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "109f5d6139b8eb490c8eec82fb7c51f6ab59e18d2936ffacd2dde61eb7121f4a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "102ab484bcc9e9ddaa282490acde7251c3f50f7624546af088567a5fab35e446", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "514501b5e1f3c82e64eef126ddb17fad6fafc41f173d0a346d4ba4a5434e7d52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "30cb47e9617f569c6a49834dc71ca599ced8910163e6675aa584a8754dc1d758", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "e7658fbd2e631d31eddfa2e98782583a15b55d00461437e1858538d3d3dd7a64", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "47cb0b5e569a7fccc03242a0baed5339fe01f2aae5529ce74c9aa8798ac1f0cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "1c5bf17ec70a444bebb502f2cbec045ff8e625462de3cd66c1a1dd662ad3fccb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "8c8db5175f60c18f5f2a530c757b54539a2e834918b53f224473da81ce13dd1d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f3e6129934f12cbaf2072eacd06028da450c2daf405f51aba0253cc931a75c34", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "321a288a9dc9b2f4a1c732b7a9c89f4c1831d2d03de5ad2a4458bf29d1bbec4a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "bef90aedaf9470a84f99be1f51b3a54db94f2fb561620adaebe2875b7349b29b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "03d17b6795617d69dcdae358a577fc45feb35a0e64f545d3ced0e79ffdb6b01b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "3bb70b667051e819ae8f1b38e55f63c02c73320b931a91cd1354f5909b94bb64", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "3b1a0b48cb04e7eaaa1d3ac1bb99429d690b789fffc4f15f932be430e0b153c2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "efa68b377331877e69df61d59613742f3373e729eca435bdd96e3970b7353da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "346c9cb0a6dfe9358d2340d1952e109d2e12e157e689b823fea1b6c0036b0aed", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "d971bdf7a9ffbe2a40abecf4d63beaf2e9900d46b9174214c0f27563e43b275f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "90690a36511472d80836247218971e666ec9e16282fe5d399c4b22d5fec6d50c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6041c8f718d3d59f26732b65db48a900023203aeb07a833030589c8fa9e293d3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "8a88a80d2835415862ff9c92ec2d6552f9c278899ae52aa80783b8f63531549f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "f87b7f1f16c1825d85d06460a604e75a566e8e40280977d5ecbc19c16c7b2f91", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "591a24384b8adddec8bb2ac0fcd3b89594f006afbdea2734c9e0b4c78f49042b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "77d99486762dbeade27d8c5aa9eb5deb63b4c576d24bb87e94bdcd115638667f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "aa5dc2faecb0c869f74d86b78326b037ee7308a2fb31c2f7901ac5af7e05093f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "73400f173ad4e1db3ec6c4d110bd01d66a55a24161bd919bd5baf0717994f254", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "d4c093b533f0ce1a89c561cc0d331c26522bbc7b4470a7d9fab04e7f8c2fe13f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5864c0192b3bdc3a28fa80392ed5076faed8f215cbaccd0959afae552895b962", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "111b1eccec2a416502b02fd47897f83a898f32f3cf01d2e8898bc2f74300c44e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "cf5ec2b5deb33ae73bce9721b55071b26c35ffc3a05f06c35599b4e6823c970a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "dd2cb694bfb8c6fdf81340719b684e9a8ad92abdadbffb18831407259eb55127", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "71b6c890d729a37c8ad4f2d1ac73ea583724f2f97af6e3b28506be0661c554a5", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "23f98dd62750b0a2f9eb19dc54414ed476d4c6b43a4e60d7cee8bab8f74ae0e7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "b465bc2991e1221f692214d53c05c35368c154ef0ccd0f4d425e2d59651abbf8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "08472fe00a698e2664714f6f89688ad7c62612c12f163ac2bfff9927f8808ffb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "319456d33b333235d38b4941a47c2c49b4286a253ef64a7bc82348022f7eb164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "add7c0153e9615bb2e401137a6cdba989cf9919c276ffce79af94581e750ffb6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "812fa8794ede372d8f600d0ee1732fc6670b9411f1e223e67f9a7532b63ddc1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "3555b623fd19149a6578a5e5fa26665a93e992748f0820e9928493725a5dca94", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "80436fe490c098c3adf6f47fcf068b93f0d3034a806b8a73978f0f31503497ea", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "863ff980c5dfda039948138465cb6931ac353265a87ab79f000cca9a4724c5f1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "3b9570d340a81abd9f6c1506ec50c5bb1d8cff4df9a4058edb9e38d106e7db46", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "10ae3933807ac853af3b462a73b55f0a4b625da96045401d9897be55b72340e4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "c50869028b8cbc599c3be947bb62ab1588fcb1fe5f381a8e1bebe4e11cb5b72c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "bd39f569e0a21325e916c5675f2d19c940099ff5c7adbb8121a1593fdf9ca5fc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1338ce706b4d3c42304287b5da9d8bd5cc5c41d951a77444de580a8c5b216703", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "037d33fbeb14ce12d1b7e246de595521edc511801d37c60c519c0d35bd2f6d66", -"T3T1_cs_ethereum-test_definitions.py::test_builtin": "9afd8705125c4bd38c0aa90de24bf4e818b700d02e1bda2d20ed6070e2d01274", -"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "85d11960a0bc042e1a0df40d13b59b4037d9caf6771ddb266af3cf34675ae175", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "8f9400e6c9b1d02bbc4a3bf879cd96a383bcd930bd24751bca58f181945b9874", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0f3b1e8d399d08ef0651d587b9a245f7474397f160127bab0a6ac932556a5982", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "fc8a58cfc66226e593a04a1b4c93f2ccff8fd805ca23e1bb5679b77a47c72e28", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "a1249cc6f5c05e7b8f1dc738fd9d55761c764de636dbfc19bf641cdc0b09584c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d841d637a132f29b21ba5de91ed88c91030ff8c1360c194af773f7f08982684f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ff772299c9dde576f122ac62804ae2ea1399b0448ace19d02e27a6eca7279884", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "5733555ae77807883c14415164d7b55665fa1a89b3ccb8b3cc8f8fd6fa7bd2fe", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "19495f75bd93afde80641ab49bffb886b05261c72edad8e764269b97c7cbbe51", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "4e3935a1d4ab15934788b923a5225fac4a26f5f1023ded444763b8c16a5842fd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "2cb4611d59702abe0d9c231677b3b4dc2d59839cdae2b3c61ff4f25534570d0f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "a2d0e29df533950cfbe4c7404676a51de74e71dde00c2fc8db2bbccdaac0748f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "88def87383de1773ee23be6b2fad213e3d1b736e7b5906ff72b1df1b8e6fe39a", +"T3T1_cs_ethereum-test_definitions.py::test_builtin": "de296955cc1d49eb34a7e5ffe691756d92304dc1ae4431ebc4d7170f5364d095", +"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "f63b95811be20d48b959ef17941e20701241bf13893ad8c019f9714d17982267", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "f87efaac3f790430623bfa59f353f0cbbcc3f5932ad82ec9bda5ea1fff4d89ea", "T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "48982064ec440a5a9a779e5582bbcb9df076a2d18047a9a17a9675facb224ae2", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "ea148d00cb96609a936f25b9541d240160d4efe0aa93f6e40b61431699f68b3e", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "0e43a66135868743df9cdabec6caf925b75c704b6ab5d09fb21cc9f062fe232f", -"T3T1_cs_ethereum-test_definitions.py::test_external_token": "0d39f4194196b71694958df582b6a85825240e0b3958f50a4704409c3d23f237", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "836602cf4e53ca59d5e477ce2559a6be0e4f1582fe4ac6e466a3ca0161f91bed", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "97801fa7e2c89167da85b1c8cbb57b4382f21b6d5bfb7e8ca06e3a84c126687c", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "818531d7bcb528f4e3083eca8f548ba9c476b55575d0e7682b78065ab874c8bb", +"T3T1_cs_ethereum-test_definitions.py::test_external_token": "4915e5191799961fc7e6da007efb467662159cc89137fd549c0ba80d2ffa9e4e", "T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "d572102c2bdcb117d7a5e8627c853ea1ebfba804782407f436731235b538f841", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "2c5a739f101e13e827c491cd1fa75b35631deade959829fb17f5524626bc9475", "T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a2de39e033e27c29a6146a19888f6a5052e9c41bb064f06070438b0f13a2b7aa", "T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3e8b682d7c6cdd18122a92a7a0257e022af33a508a65c3cb797850b2debc966e", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "a2455c08b36a834500d17a125c22e68aba532efb7ac2a8228b85b4993552843d", "T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "fd09a0dc102e6896b2635e7b75609ea2da38ed328bebec256e408e3f2ead7503", "T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "f56de516175621207bd9f7d2045fed18382663797c533a9191bf891209a57331", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "93ebc2127feb8ccdc205f0242ee56909e1c929548e9541dac781022a2e84106d", "T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -16526,17 +16526,17 @@ "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", "T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "cb13b38c67612733160ec05d11582b0f4d752565e0cf765389a22bf444b683f0", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "52ebc63690cf439b924249757eae62088ce60f5cafc4eb7b0c0b0cf2858bd18c", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "70e04eefa918066303796fd97fc411f257bd83ea27b7c033de081ba7602c1e9a", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "2bbc38bdf104be213856bfe6e1ff184769b357e818359a76d8d30cf0468f3117", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "8f989b56f02c5c9da399dc877a163115b0ee73e488107194e2ffa714cca29260", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "b5e0d333a16380ced1fe9fb2baa2dea9edcefad792082c7f0c59d9e9ca66fae3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "cfa226e69ddd8183ae415eca37f900a1e7b9263d6d72d7e2f215d7efaaf03ce9", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "ce1f4967c15bc2888a36c8823e245fc4d237de2bd342c09e5e3abd157a7b09d6", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e5c6aa09caee4bb1f2c4461795f7370dacaa5e083750ce0285b4c0e85a886133", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "8fcf8829ce05bdf65c9bb80eeb6de569ff004716623cde96ef1cec7a7caccefc", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "804739db4d358558ef7f8284ed5e60c2e0c6703226004628a83b2208b60d295b", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "9ed5f1a2917549875959971f08e364f48b7a6798fe0e5f2e29a2c8e33a37e8ae", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "f4a5cd7412014690be2d184911a9e998dfcc936c402fb9824ed9d79e8eaa2f67", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "17af0f7dabed34cb433b65bb5c470f3d62124505393664e2fac200f559fcb9d4", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "64d403eafa1c50e8ae049fd9d0512020465571d290234502e9c49606dd7c040c", "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "ff22f4bee5aab1875cf7ee5a8c3bbfa1d5ffe70564d9feca9bb39bf4a6f5e202", "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b9e0da1af2d0f6559f4c53b4545224c7d087dfe50916946e994d0d95095ef995", "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "fda7dd15172ac39b27a1bf729e253fa4414f1416ac0a17af6fd332c944b9b7c8", @@ -16555,72 +16555,72 @@ "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "5079cc771502a74b64df3ab84326aa68dce71be8d4371dd911ab680d18f29672", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "badb1055045be086afc7bdb9d0865de935e10b2d822d9cf4c6f6f2fa287e4a89", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "440fdfc1adcec245b4cb274eb5d577c61591509bf7ba3ab866432185b0a4d818", -"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "4f5d39c67c7ddf3804367ffe4779f9e516bf80606d83ce07af740de4bcf59945", +"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "f8b9cac3284d3f99eaf161d6297f2183f4a230ea0dee8d288a79d1ffcac5fc0d", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "8ca8c80d46824a534cbd62df127cf4ba8c197a8e2aa9d51a9af5471ef71341c4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "4fe5071c6bf79414213eb238d081712a1b0f52f4a8098ef8fbfec9e79615de42", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "e3f1986cfb86ce41ba68118cb50ec5f06dfb054a0232c7fc1f18954e0a2b1ba3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "4fe5071c6bf79414213eb238d081712a1b0f52f4a8098ef8fbfec9e79615de42", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f1f6e6c11b920bf407eab9fa0fa864dbc9e0a130ec2c9056fb91fa054441006e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f1f6e6c11b920bf407eab9fa0fa864dbc9e0a130ec2c9056fb91fa054441006e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "22f54111c23b147f6e7d4eebe4eb362039994b0f5aa67bdf87a1dd02ef3cb47e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "7416d23e513984c63ce60ab18d6634606a2b4518770bd22f31f81b052f140826", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4353575316ae02d31400f1e7320f191f572de40cfb259834e6dfa2009e462d9f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "24df76cbf83af03d6dd06f0689e7345d392a9cf330d0c2e2f62bf7c027b062eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "7dc3cb0121c8c8a0a8510b1307b7fc603d94e9293fb8476bf6545d85630ccee5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "18e4b5e7a9e23c9af3d61aeaa749793efa74ae0c6003820ee7db036aa530a259", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "d5559729fe4a54a4cf1a8e894d2a2f58f316e247a374e41810c0eeec0ba7f408", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "8904e1e3ef34a88da935d2db1fba0f5ccbcb2219b613c835bf6fee59d9113595", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "773070557c2ff0936d0954c07ec3b8e4f9e1fe2824abbcbd80d3097ea418f10c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "febe59780b274b429be4dea92f4bfae259754663cd27bf58b55a687eb1ff20e0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "773070557c2ff0936d0954c07ec3b8e4f9e1fe2824abbcbd80d3097ea418f10c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "dd7bf0b59aa934cc8910d89b4bd1e0cd359a681ca3fcd41105687e8baede4434", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "dd7bf0b59aa934cc8910d89b4bd1e0cd359a681ca3fcd41105687e8baede4434", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "736edcb709e250256008b391efafa1ea8f432cef4c9f9849ea3eca6d2b22151e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "39cdd18a9156ec8021ef50bd7b8a62a59d5eecb0b33e8946143a7e1766370560", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "258839bdfedb656eb8e922e1ad27b2a8492b0a06254e7435dccdb18cb615f14b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "f78a06d0bdb3f33cdb15856e431c34f126b3e4bc298405980d09dd61848a3e93", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "7dc3cb0121c8c8a0a8510b1307b7fc603d94e9293fb8476bf6545d85630ccee5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0f5b5cb59da2c2c422104deb088ff728878d807de511665c4724bfb9044e91af", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "19ffad22e90cad3b9c588250a9b1a5f27efa91e2127e53b5ee8c61fcae400d61", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8507e4b9198efe39652785a5e54e480f94a25b8294f9ca9a8fe785ec3a2d4a01", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "712a5685cf10486e36d7f6b8a60fd213c0061f1f6c1793b52b654c5655ad1952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "a7f515174b971d418a39c54c2719a2d11fba9ef86fee1ed76a6ec137c049d8ba", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "22f54111c23b147f6e7d4eebe4eb362039994b0f5aa67bdf87a1dd02ef3cb47e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "c9f77a3372ab8ec312beac5a6db800783d193294d85e418b8fd1b7adb38db730", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4353575316ae02d31400f1e7320f191f572de40cfb259834e6dfa2009e462d9f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "eb58c7887cdb2b03db77c4b4a52da147085ffbe4553ebf67486b26f4efe14e9a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "158afea5c17a5176233000f2148e64c08ed5ec2237abde033498556bc7603672", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "6ca447316e76253b6ed5c0a224fdffa8e3b49dc2e2c3c7b67d15b4e3c0ecc22a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "736edcb709e250256008b391efafa1ea8f432cef4c9f9849ea3eca6d2b22151e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "667c3a86a36ee3a8a6aba189a97c0df59721bb999e4922f215d74ce175375399", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "258839bdfedb656eb8e922e1ad27b2a8492b0a06254e7435dccdb18cb615f14b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c827abdcc825f9c5dd17687e0f9141e24b5cabd8881c4dc4413479c7a69b7886", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f1a7187ccf3fa796169fa859267c93e87d3ec794ce1e11a218ce487b82fb570d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8d15d46aafc65df9d98e1bce0fd1fb20ebd6057f4a34c84b7fef1597a9508d11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "ba825d65a19482d295e43d2f7989a0bfa2a386290fe46a58ddc6935f2ddaef6c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ba825d65a19482d295e43d2f7989a0bfa2a386290fe46a58ddc6935f2ddaef6c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "ab73c0b49eec518041a1f1cfa9f622f0dc50129b3db6d86fe9045b3d8f3b9f25", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8c6065616fe0c67e4821bf6003252c7427843160b26b6e5ad0924759eb69be74", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "bfe1ea061851a72fdbad69c05ce85f6b33dd4fa21261bac4370dff952e697c59", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0d23a2f7562795f98415879966258c8678c2b8242b5b54fcc1c736daac93a4e3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5fa57666f86e74e32e642500fbb7bdd376dc807005a23fb3f07fcfc56f195387", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0d23a2f7562795f98415879966258c8678c2b8242b5b54fcc1c736daac93a4e3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0a8a1aff3aae84f5dbf9c102b4b0b979e0be025f8e9654947f76ddcffcb8b684", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0a8a1aff3aae84f5dbf9c102b4b0b979e0be025f8e9654947f76ddcffcb8b684", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "554e6136b09ac2120fb94a8bcf3c0fe6d0fd15711c54424d157463aa4a27a6cd", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "79e95dade990b6c11938deb13a7319e73c5a6b33edf7ba94b74d9419a1b6a95c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "c526d24725403fd4f1eb6acaf5c0525643d2583c7ed92529a42f8a1818787253", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c218217c25858e4df592ba9ed329a4f699bfa930e10fa8cdb8fc1b35dbe5d177", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "726f69fb7d0b6cfbeda503963e7d80d81175053baafdf0c56fdc5e8431a9fde0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b10e9f40bc0eddd6d2fd3d52c9bbc3d1de89c3c28e056bcc8330fa53450a0c5c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "b2a9438c7b96315f20cba80613b9f48678cdc6bc40bad0fc343a352c4ac8f62b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "f11763bbdb0984feba9cda8fd7e27f3c29f422acfb8f3c33a1d3c461316ce6dc", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1969414558ea0725da5dd16bf5ce42e6dd41657259660827ba5cd43c676e58be", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "f11763bbdb0984feba9cda8fd7e27f3c29f422acfb8f3c33a1d3c461316ce6dc", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "045ab58e5228e001327f01a8b11b11e5881ab18afed272c8c6ffc507ffb4ba6d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "045ab58e5228e001327f01a8b11b11e5881ab18afed272c8c6ffc507ffb4ba6d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "b15f9caeb5627b7de07e4a3ba80dd662315398aa0577b4aa850bf04870d96ae6", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "2f1c82037bceaf4a3a5587f63791cbb9dde2c7f3cd5d0c4e1815bb6a7968c479", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4c959965ccf57f6cce04e126c41e00900fa7eadf2e6bc7cd0c597fac93cc0206", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c218217c25858e4df592ba9ed329a4f699bfa930e10fa8cdb8fc1b35dbe5d177", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0439750afe32d0faf12613e2a80aec902ddf89d298bad15fe398654dd873fdc9", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "def7e507572e22ac7f8f48e6d591d36e707ec5abf68e74263ee67d0bf0624fff", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "4ef6c1c80cf0c934939dcca4917446fc1fc30fc1f60962e77b3bbad4df300247", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1b738bf75903fd5b1c582aa29b1a2eb5d7cae31aa6e7dcfe5db94c672ac21801", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2c5e91b90ee372c8d8006754d1decf1803bd515000a86bc0571153a5b7199082", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "554e6136b09ac2120fb94a8bcf3c0fe6d0fd15711c54424d157463aa4a27a6cd", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2813d1317ec2a585053f14aca6c32d8b9c429aa97feed6ecfd5de61b512eb395", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "c526d24725403fd4f1eb6acaf5c0525643d2583c7ed92529a42f8a1818787253", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "85371363093945284090a6fccea1bd7292b217b6d9f6bf4d4530f55e84266f7f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "28c5d510ae42c52784e964975b32ca25897bf45a1b903d6371d046a949d9bdc3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "b15f9caeb5627b7de07e4a3ba80dd662315398aa0577b4aa850bf04870d96ae6", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "25ee398fe06b6bca0cb0d2d500d01c23206fae8212516bdcbddde390c4476519", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4c959965ccf57f6cce04e126c41e00900fa7eadf2e6bc7cd0c597fac93cc0206", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "968751d33f312d15d9fccedfe50b3d3f05ca169c8f7995373544f75ad611447d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "98cd21593bfbb635bfa897a6e7c5eb3c6ab80fba03a2cba3aeb4f3259e0caca5", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "31fe200afdae83c2d32938a8f2b0be051ea708ee6cadc198e08cfd41525f7cb0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "31fe200afdae83c2d32938a8f2b0be051ea708ee6cadc198e08cfd41525f7cb0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "882ddc60a090624d69cb94daf66cc5a04e82c83af3050d35d505229a75f8886f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7781a854670bb38acbe5d00a99e7bde404f7a8f60d68a1b07ec057b1bd4fb2f9", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "897fdc8cc7c6358a0dcb4f566f3fa88c6e005dee6d372027bdd3ec2979df9a18", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "13c3d46eb48b6e9e989cb9a241987a3a1ca0189236596d2a3ef9e12502874011", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "40a49084a89c0fbf02ed380d5baf4b1c5a29b4c675a273a77c2c29a341368fe8", @@ -16668,9 +16668,9 @@ "T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "df81c39e6fd20ca56aafd9e6c4175472190cb74a7b2551e196b3e6e1daee77ca", "T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d025205f6855b9cd70dd9dc31ab924d009e799e05c5b94135fc14dc01f76853a", "T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "380ac240bd5640370348cd3f11961fc8b33d432d6734663aa113fcefc4ce9eff", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a1a003de7e1cbaea5a8c3cf15584af1ad5a7216df42c6e34c6cf6cbb12315b2d", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "9735e3b03d62177215eaf671d9dff4e9b1bae1fa5c3bcefea290dd723320287e", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a9428e7e4a1aa0f9ed52b5941f79a0759f4b423bcea5898c5f1d16c123a46542", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "cd4b56ccfc663dd499e4ac02fff1000e05f58347f1bfdfc45612832e5c7d780c", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "212c91ae3491cd920d1a7b86d47243812ca5456239406782388afea2b556331d", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", @@ -16737,9 +16737,9 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0b587dfaedf22a648a277a6a4569a0aea575c2f81b92dc5d1c636c8e112d3ca2", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e30344a76f7988bc928b86abafdb032b78a48607ef16cffc66d58473a7c8a13", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1e7110cdc5c51a73279fccfff529d9c905203299f9de5d834aba262e5f0194a5", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e782b0df3e3bce0388b176e3efaba56232722a5621df46e7f692ef02ad41ab7b", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "751e4c5979d949fb79d52675da99d6af4b91660e5609701c6a273e29c903238f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "bb2ce895c4d92ea6fd70b1ee0ab597bed7dc4fc04cd729d1533367dc1ea86cc0", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "443583bdf27b893b6dd4b56bd5ed31f66a33e11d622a8ef2013c6e36f9b4f39a", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "666c08ee4b1bbacea85f0593ee9efa76abbba385e289e623b5e05fb41aff6876", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "3d71772ea1e6ca8ccd5cde0ea32a3a8a6ce9149022574cd0ee826baccfde11e0", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "78672ba722e1cb276ff48a2bea40a9026e9e2582ac1cb5db849fba1a360047e4", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "d2a3d07f99e1961af97d783fa0244d7a100c0c1a3b1ca342c8f608e0e7f377ed", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f6edaa76fcc54315ecb19068c58c6acf4c2c2b88e78d803b37480fb3a04af79e", @@ -16763,20 +16763,20 @@ "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "23e90bde0e5eae1b7df9b3ae3e9d84f1bbba8af351f15c4031291d6f6059e5b8", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a34846f672266c68a8ce747a2e1c37c661437833548488e10c2064360e8bf363", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "9b3a4d1b5add7f308101796ff0c7fd8ce76e1b3acf54990a270a1c2228c732b7", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "d0fd6f4824228a40044e3f7e3ec29acd4e0792e6ade5f646cb1be61b27e01fe0", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d2a49f3914f71aff54a761a076c4d714ba042fa2809b192c37f83247eb70c023", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "75fa897dfcb35653ce38f1a9cc36d44450a0c5f97864d0096198fd8a5ed66e8d", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c877dca4555a977d881c38e3e4348c93c9ba30c654fc63d5d3db1a1269a77bac", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "cec4f416b087df067b99e4d8355da04b1a694ab51bc693d1b28be44046d76d85", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "3a315b32fe6af185fc51b247dbd36194ba1005d91168cd9163d32ac412fa49fd", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "feb44a6596acf57afed9d20517e383435febb6e476a5c0b90c9231188e1e68cb", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "98b97bf14d9677b1751677e3813facb7cbc050445844adb55609958d0d89f2c8", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "2fc007b808d16adfcec5daa8925a3007cd22c3b6bc51c3d7bc9d25924959ecde", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "82846d8e63804462f6e56bbe75ae550f46092206996e02d940783f9566f8eadf", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3430e97706eacfe0a9cb99dd74d64f8a027f71d55b077d0e745e421a4332a7da", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "fd2e44bdea6384ab4b94b5e0557c08e7ad3e7e69fc1e0bdd4e067731ad0e07bf", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "32dff1643694e5a1fe8b29f4aadd9149f4104a59e358f5842a82616179c45962", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "bea4ebfde9aa1878a47013eeb914cbc9b13ec03e569ddca5dbff4eadb8d958f9", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "72c32c85a8db6e00abd4e647048782669390136fb49e4df889ce98372f31e2dd", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "5e650a58311d032de9aa4b883f4cf62619e6c8662b3f6d053fb88319ebef4377", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "e564d7d57b0606385445ee97a53832c5a77de54719cd1ae157753f26dfdbbf33", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "4ced87f327f8758a9e8b5e85a1cdab9494ce4d82b52d1a7f8200f8dce483e49a", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "dba3467455573011a0261da2656447a47e6b7e6ae5ffec5be2f13c48fc5d350f", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0fe3792a4c30cb81b842f891a0815b636760b28bff3634c3df7d0145391a5c36", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "53ed953d030a21ea1cb0c6e79d137cc24281b4d612ad6b7364023496029addcc", @@ -16785,25 +16785,25 @@ "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "ec7de41627f7ad667d72ca818f2d6834e7368e088d8c1ae50120fbb8e8cfb2dd", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "518e2e69c1ab095a7a2915dfa484a048e17e715f167ffa1a1e01a56932ad1ba4", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "477e435a95a07d539ddb25440c07fdafa3d2ade23a3b74196489ae92df64b2ac", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "f9c7214383ffbf56e2bf889e6116dec10ca25ea1e82fdeb8533220333518f5a4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "36a999e0a9298e7738cc425e67698b5b362b7b8cf3af5a7063ad3092cf081dc7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "e9848c532b610f0eea6a37e46a2a25392e44a69af9e895dc64288430ffeb9dc4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c5bd059bcb1508240c47cb70be30d74a17f15e871b28876ba5c2c8b78e0feed7", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b7d0cd3934588201cb5b9531d27df8407e6e3fbe30fcce6f697ee5b9f7e068a2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2606d159dc70ddd12787bec91b10238d77f36a8acd139aa2d3acd42c1e483843", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "65ef6ff4a7218d5c0b95075636ccb2a535734a764a574f59dbdbb63a45167655", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "24ed199cf1cd2379f8b4588d4448c41462a3e768ed0e25f6d8d3650eb798f3cd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6521caa997ee3c15aa6fac482450fca18cc6b7793159df567489bdfa93aa3356", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09d1dfaf38d500cef7b298ab61ad2d128c530bcc6fe75f405821d0a2d45130aa", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "9b2dd7c06acec4d060adc07206acdb8ae616926b91d6b3b4393e5429c8ce763e", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "692d5fc2ecbe326d6b229f77c7d449cba76ac77eb80e9df3ed85f9c4326d48b6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "53f820251de3f990f8419a8c6900776e6b02300dab1fe6cfc2fc2a80c6598ff7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "a6c3d5e716e078bfed3e904483118d13b821ef76eacda49627cd1f7244980a1d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e10339532cb4a6ada3dc0eff756467aaa4787ac44daba1f5019ac3b7ffa25d36", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "687c8cdf8cdb327f46eb606f4a1187fac67217f1fc9ac540c975a3d56888fa12", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "c9bf1c94e8141b620f16486760901e46eeacf990faffb77b290a611e8f052f04", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "87cc3fc2abaca6f3ce3c1227330a3a2b9fb4a3263f1cf724ffd63a196c10490e", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "851946d246793d72923aa3522cfe4a0c455d6c3ecd77aed38ec6c2fbf42ce29c", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "29d3ff94b84243ca133b3b6e07bdb8f05e1ed4e25b149a05b3a50b1e72676b6d", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "38b2c7d5937b5f98444080d1d40cb6ad4b984d3d8cb6f8e8c6b5f69d1977d9af", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4f39cded0fbe41c00fb4b6d45057f6c988bfd07d76abc83fb2fe5af399d7272c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "2c8d328995f07197d300c551e539c8c96420aa98c99e4a229d7043fbb4d493f3", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "0d2cd29a60c45333e4440d859e4e47e32310851f86833e36e5034149bf2cc846", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "e0ea707742a02e41a5ddfc83aa66b23880b2acc59e05fc469b8f6fc683be6cad", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5d4e33d185e8a4bba81c9e60fb270a326aa476ab780c0e866579e2b7c602e6c0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "06f773b9429029725aa6f62b826e063d6bf24bc4dda5fa2ff0f8e25fcfe51b30", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "afff259ff7e1f0c82106515a313b53575e612a1802a298c8b111fe752ba00b3a", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "40515ea662cb38454da94fd60fcdea8d9df2470c0b0eb8e4d1789b168191e61f", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "acd5a8b109b63e54e620dcd0b7f3b54bc29a3d3c170ab7ddb89e79d1737ddba0", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "17e8ff760ef20eb12abd6ac6517b0f799c1d27033a399514d42762c76cf49f7d", @@ -16814,29 +16814,29 @@ "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "97b4f0b3cc4795d4239cbf6686f598edb92e9cdb6583c339e722d090a5008083", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e58b849808153b44bebe111b96c8c419dc4608a24e2845f84242561b0dcb9d47", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "139ac1bc4afe643028de15d71087930f363c3850c74595a33f10cb97c7711b4e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a00b0d68da071ba15f97708ae732f35fe40dc0f5c55671fe2047f95d163788b9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9d6303f26588d1c2e274ff268257c447e86a75ddc7cf46da3a2c0a312ee8355f", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "452a1f5e361808295075750a71ef49105715227600fab3f5443b5aa0ff70d467", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cc814a3e4e8c00e23eec8f073dbd865771ef83b490ee4596b280178fe23a2aaa", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "d5064fd1d7ec455a32cf1b2eac39dfc38dc07b231c377c424b7feaddb476c95b", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "8f48ce150a385a0787642ccad4553bccbad05b107f9b01f8cd85f101e0952742", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "78a62bd5c0343c49e2b8e90e4051e1076732350b5dcf6113c6edf53bb0fe3062", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7fa83be8c046f8bc9c5b8114d1d87fd91feb322a1cbb9e3fc4689d832986cdb9", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "67339c72ebb598461b9ac367a6ce8d678ac05bf22f74bedc2444b024a831272a", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "5a5651311f9a8286dfa459a29587c28ade2b0af44d091cd593ef3d2eec2ed3a9", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "516f0704d1a53e9d7281007a34d02051de91fd89b35d2863c004b9ad25b5cdfb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3b39c85e1748cf129ae9f4e4184c265b235e5b3cb28dfdb8567fd6abcf64756d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "c09e8dbad8fa4e1b61c1a8e1ea569518d1873a8979d561d7f65427e71598d22a", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ecf696fab4faea408264bb98ec33fdad726906212b5743bbc42b3330edfda63e", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "647c04b5fa500a7ef372cfedbd5185dc477da59ea734af5afdc45fffbd0addb2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3c268891e70eeb3e3e3ebda79479bd53c985715ed803f5cf02b9f1224e2b943c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "204a09cee74f0a2f3f6405bc2a5c6228b443459ad3cc866c5c53344a6349c6c2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "130707bf16ac9eff5373b1de485eece01b4b069dc0f677ea4b3f609d1c4665e5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "173062b458c03a8b1b510d1e200f25aa3e826d074102a7c7177f544c68f21e08", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "787ac7fa8becb6081dc08258482988059e3f6c24aa248460c730c8df2c1c4f1c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "9dcdce348c63abf4dde7e69747d84986fa596069b19575167394fbd8de2346cf", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "5288a10bbd550f0bb9c49baeaefe51ac2e9028849a899eb64a56aff1a3b178b0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "e10339532cb4a6ada3dc0eff756467aaa4787ac44daba1f5019ac3b7ffa25d36", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "6690fb1a9c4e8847d2a2866674d845055cc95856b7c7693bdaa1e92c693866cf", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "8eb37d3d2a653498619b721de8689da5a6f0ae6b30c222230c8e7dd52e39d4ff", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "87cc3fc2abaca6f3ce3c1227330a3a2b9fb4a3263f1cf724ffd63a196c10490e", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4428033963b71ab3377d7748cf48f08019c93f6261e38665b837c75ac0f11e23", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "8bb5017226b903d8befabdfc0664dc104c01524c971527ad8f456e74d2c04520", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "89508fea4c7df3d6fbb0e4685cfa18921127566eb63d1955f41e91e8e3dc69a4", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a0a71a445bbcfe996753ec382a204621c154594347e6fd382c55db4f0e706bd3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d7fc5c5683d33b267227addeeae0efbe749bf52099a028399f9a75fe888e3d9d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "f5c1153630716ed072919b1098d89ccaa2bd0a6b887bd772e967b8aedb50aa26", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "36b472a776e2e3851eba8e63cf48baa213417eefaf01200d7e7a882a3957590f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "2baadc38d6b200b8eaaf3083bca22e7c887d62dbc09ef897849727298fd112e2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fb2f9d4c6c3478fe5324801be0805c520f24f312abfadb8be6d97c31bdb7091c", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "2045dc0e56bd0b81f0fdaa7dd1121211d17ee763833c9251f5aecc4719127779", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "ba83a7059000599aabbd37bb32378f6219d2cff830d2aedafbf482d26be23a80", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "31fc222dd6132547805ad3016a4ac6ea2d3e145801420f05a3c04faf121a609e", @@ -16860,37 +16860,37 @@ "T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "9d111c231773407fa452c116b38698c2c9bf7945e117df2fc7f88f8f85ead953", "T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3187917eb6f8a463b4bbf3d6bcf52d9db341c334c1bb7d2c00e9d28efa325cef", "T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "5b2432d9a05314fd0223b1f0661684407192bd07e3c1fbca7c54e1570f52fc2f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "88090b08e0a2426c37382f558e80eaaf7fecdf8360bab8968e1be7303e69bb67", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6a8516a39f2b9cd78c1fc7acab872a947d032b006c8ee32164c1124103ca01f4", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "f772066ae9058b0f2801fec75fa066b7e62e053dbb40fa7cf373f1b557c14249", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "45f9e46452adcbb56d32b942653451a230501c5d8dc9fb47eb74ef508c97bf7f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "83482bbc22e8c52d142411bd5bc5a26a027cb14fe72e3c57ef5b363820a4658a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4d562db11a15824da8cf29ecef1bdbfebfbda119bf4c37bee34593074180ba98", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "1bc7d30b44dd7b5f1d81c4c28fc3ae58105d666bc01979a3fdf5037d41211b52", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0f66a672c50bca056d1a1830a84e0e33b51d056ac5eb608ea34010a7a1e08504", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "bd1374ee1d136081e7d432e99159ab537f53e6e97e3feaee2d283914a672a835", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1bb26b7be21e0e0dd733bc7b2a7301ff8cd8e842d97a03bbf9b153d796da03d0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "1de9f079fd8a1cc28816c45abb73d69121f932cddf1b468042297216bf56d136", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "24b176aabadfe6842fd83a631ba1bbd0c676d29109a51072c83211f0881c4e6a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "3055c8e6011cd64e29755f5b2b18d0250fa5f14e1ff263ae12e6e830794bf430", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "eafd704c44bad034143e6d7c6123420f435c09ac332c35a36c49485190c148e4", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "9e48eb0e188ba2de44d637039f68a446dc5b730dbf7b63251dded42fc98f566b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "2682c5c66c0097b330f9f14a818dd7810eb9b3728f8b06f0beaf60d82adaa51f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "eefeee9a792a4d78f14b5a64540a68fb3f68bfa4bf9c85a8d38c500af92a94b0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "97e219fb0f5417afeedc744caa5a30dabd5a7825a9e545ceff1c9d165c28699c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ef9cfd6850b4ebc2c1164175e1aaacc22bf32b4728d6de3d4a948239a398f636", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "54d1e895690f3139f5068cb8e5912eb47063be9f7b69c17bce39bec9bf451458", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d9f8b88587d1d0726568e860b6d52cb21e3def56b990a5413980c50b1ab5d6c1", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "9476c42bfe58b016ee703964165f0b05c5d58c52ec9f48cf1b9a5ed731e9adc1", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "3124987aa4012a14daf7f33e809daa34311e3b0e5b795d4d174a308a077b7d64", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "b3cd453f7fe6d01ffe55b383a08a80f53729da601318287cf3e903bc799666ce", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "e0ef545906f8f8bf48ddf8d6d6fa068490e52a638051ef1e59fae786bb8de80f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ee5cff27aba12583b6da615813bfb3323baffc0daa3fc3c6c0bfb86fea15f412", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "287ba699bf5a26e989915c5c02668aba28a43dd9bf7a4faddbd89407b24c30ab", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "2dca165c324ba6890a980b7448fd814aa8bc1a491a739943f6c11e0237be0952", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9a828a7c8a7cff8b523cdb0ee8e7683196fce85d29ecbba79790e7ea281af87b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "eefeee9a792a4d78f14b5a64540a68fb3f68bfa4bf9c85a8d38c500af92a94b0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "fb4eca10eef0888387dd42d4804dff9db31eddc06dabf1df2a68bc22068efbbe", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "669ae415ba5cfcd9011370ba416d9cedf0b270aa784e6ac111acdb2a84d693ac", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a6cbf2d1035a4719680c13ec8840495ddc46e89437a10333b62d99e6807c5f45", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "40b7a3025e62d2e8a4b5449f0b0a13504f5e1b843cb92a48e4adf0754752de4a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a9d959b07a6359f8ba8f3ad412ba1586d087a5f5569039a2da6cc618619ceb52", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "1848e758bcfc9b575fabdb0303bb48837e6396371097d5d7e6ea8fcfcb26c36c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "cf9a03a6f038294bd61ccdcd070dbdb4793a3c06d7ef3802180628a1c8f6df27", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "5ff89f607e298719af9d8bb6c7a8ee09ced0bf235c7d7641a8700c18beafb777", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "fa4014285217975c95c0f5d53dc28a963bc427697ce56dc31529ebb637806fda", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "9d861bf42c34a569a2b7d16f16c1795aca73fae88b1f1f82ebd2359d38791a49", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6378f7c14bb66cd5ab024a2a2797079af8e339f25aba80ddb3c3aee7c915e9cc", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "b77c87e04da56a384fd5957593d6d7d96738a52f762cdee82addccca18a7fb12", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "f91d80c0f7c1ac4853ec90a3f356d08496994bde3fb1d801563e99de546ae384", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "77622c1a1851933d37e33faf40e278d82086301db512620a877701dd77756cc3", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "900231f95d95f672dea32202b254355dab5d6076303f86de183f6970c9f2f105", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "945d0fdd26e9e0d1c7b9296c1020897f94e23fab0622ef45541b9c2916d6e083", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "549066ab1bf84afb533fa0d4c094aecbd33b0402b65fd5039deb342f74737d0c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "959e555623ba8f2dc3cc066d713900df652638ea4cb08872c032fd02df805e34", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "706b689623b759917e6a4335a8e93e7ded951adf90c889a9743fabb48d6b23b8", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "423e2fef974fffe60ea0830be723298bc1e09aa9ea2e640b8a7a35a0a55bcd1e", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "37d97dcce1f405d827cac46687643caccdae36be13ee3622b6704401717d4e88", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "50dc4a5a2a8b0699ebcce89f17c893ea49b48797df220e1b141bdce7308677d7", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "a04af00a1a44515d1a2b7cc220fdcd5c57416232c84f632691b9dd4498aca49b", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "864d45c23b12fe4d4f66e0350506763636320a02775c1d9173468ada7978ce34", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "c80563ba120dcb8f62a0a6830e99210e341b0ca68d0f8d672a9d58019f2aaeea", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "22575a8cd66903ce2373fd8794882919eaca9bfe2e84bee1d2ab56cafe9079e2", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "3af2b9224f1390483e06c22b27b8ccb61737dc8699d8f5a5845c7dad86dd1f27", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8f20eb9a61ec136a5d053ad7cd5f12bf747df4faffb2202164140ca007c350bb", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "e95148732d86e99e5ca9a0f6be008b3f4b12775c5d23671ed5127d58170021ed", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5706b5159f3131e87cd725f13bdd35dd057ad772c7a5313f5714266e8eb03098", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "c4b7487ac2f28fbdb9adaa09905fb63cc48985f63d30edf9a70167e7059abb1f", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", @@ -16922,28 +16922,28 @@ "T3T1_cs_test_debuglink.py::test_softlock_instability": "c6d1589a2a6f53a752806e4aa4e2b03f68685ca7213c5dd4af5c82eafa6d014a", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "bf3b0b0bfc905aa8b9cb991baffb7c523f4f185f0a6531081c2e09fee5964108", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_language.py::test_error_invalid_data_hash": "a115b6f40562970530bd4fdeabab584b19bd08001a7d5c22f2627ad39d1c6ff3", -"T3T1_cs_test_language.py::test_error_invalid_data_length": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_error_invalid_header_magic": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_error_invalid_signature": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_error_too_long": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_error_version_mismatch": "50e134f41236263aead8efc879ac9472ea3812d33a1a5bbd41bdc5f129adac60", -"T3T1_cs_test_language.py::test_full_language_change[cs]": "9d3a56d7637e585431673f57662f51b0b5bd134d68ceed34ba2807175f9734a7", -"T3T1_cs_test_language.py::test_full_language_change[de]": "6d72b391d3e2ffefded5765bf580720b2ff6a178d4a26bfb1dca361680c84f22", -"T3T1_cs_test_language.py::test_full_language_change[en]": "f9cc189cb54aa4c338d45c46ef8bc115b873f9aae88f0a3265e09da556f95fef", -"T3T1_cs_test_language.py::test_full_language_change[es]": "643ecd8f4a8d0bf4aa797836c18f9df8b8606c17ddca595d140120e3019c2cb0", -"T3T1_cs_test_language.py::test_full_language_change[fr]": "f4b8b9660987d6dda059db920188291ce597b35954594988a44236377a9e5363", -"T3T1_cs_test_language.py::test_header_trailing_data": "b85421372491bb30c424ea034135083b7342efd0e977e4816e69443a005a7bd9", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "1216097a924958c54e389006ed8ae9025854fad69ef33421a494b48e52e593f7", -"T3T1_cs_test_language.py::test_reject_update": "f5f0f60c0eee142ca023fd2960bdd410e355833f69f61f44203bc20cb13922e4", -"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "e993ac49426d3a1d1126a5d4825fac1ec13ba41b31fe4a3570b7be3bd84a2625", -"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "e993ac49426d3a1d1126a5d4825fac1ec13ba41b31fe4a3570b7be3bd84a2625", -"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "aba658ad4e110f027ac423472eb7cab19103b73099def7f5eb1e1e82a98b1a41", -"T3T1_cs_test_language.py::test_switch_from_english[None]": "e5c90dd87e1a12c90399f728e6a039a35a393f0aef75bda77f777173cb22aa52", -"T3T1_cs_test_language.py::test_switch_from_english[True]": "e5c90dd87e1a12c90399f728e6a039a35a393f0aef75bda77f777173cb22aa52", -"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "a1e756fe6046d140a72d986708b472708ba7a0bc40ed94d7909231b434e1f2f2", -"T3T1_cs_test_language.py::test_switch_language": "2f92dcdc93302e3dabc2791bd62cbd161a90d5674d41aab1b4525161b076735a", -"T3T1_cs_test_language.py::test_translations_renders_on_screen": "45d3d73278de297d33a0be7e579bce5c7d1a5df32e8ed079518435be16b63585", +"T3T1_cs_test_language.py::test_error_invalid_data_hash": "eeb33c9c4f9ed22a54db5d3ff17e8df1f17725036d7a4ee8436ff1e957968a8f", +"T3T1_cs_test_language.py::test_error_invalid_data_length": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T3T1_cs_test_language.py::test_error_invalid_header_magic": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T3T1_cs_test_language.py::test_error_invalid_signature": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T3T1_cs_test_language.py::test_error_too_long": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T3T1_cs_test_language.py::test_error_version_mismatch": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", +"T3T1_cs_test_language.py::test_full_language_change[cs]": "9b7fb87471c4cad34c5e6e37413496e06119061ed1621fc36d9ecf218a167573", +"T3T1_cs_test_language.py::test_full_language_change[de]": "e6bdd9f09eed62b4370e6ce92402e2ef4dc4c29b09d90e8530492a7e21fd1a28", +"T3T1_cs_test_language.py::test_full_language_change[en]": "8a9e7f32e0c4123efbb4dde7a3bc62d9177ed4d0aadfbbaa114e64dee3d852d4", +"T3T1_cs_test_language.py::test_full_language_change[es]": "a2ece6cef08534144aebea549c2f7b7dafad44200155f7bef4c6cd9085b25690", +"T3T1_cs_test_language.py::test_full_language_change[fr]": "4b5d2ef1c9bcbafd1705576a34d0538dd25e5719c8ffa156ebccc2d04a2d15c7", +"T3T1_cs_test_language.py::test_header_trailing_data": "bd0f5504c03601f1c48fd8f44177e13c5b64b96ee1d7faaf463a9d42605f9c22", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "46141e926bb646e9e9511e84c9dbc85d3c921dd4b3c002d60e786920bb61d5d9", +"T3T1_cs_test_language.py::test_reject_update": "a04a7ec8f30e9ddee0975d46fda0a10f22c0e1e513283cc6045c00a52f8a3fab", +"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "fbce679b298b36cf1f59eccc37f5ce76a0c3116f2ad72386ef8b19fe331f3732", +"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "fbce679b298b36cf1f59eccc37f5ce76a0c3116f2ad72386ef8b19fe331f3732", +"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "7aaf27926509b2f07d1007e0f925c3e4f07ec13f28b323f3b44b4f4406d5fd79", +"T3T1_cs_test_language.py::test_switch_from_english[None]": "78fa9df1c7bc478776ed934deefda7a9e8fa40b7d6dc7bff3c3a09326c74c10c", +"T3T1_cs_test_language.py::test_switch_from_english[True]": "78fa9df1c7bc478776ed934deefda7a9e8fa40b7d6dc7bff3c3a09326c74c10c", +"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "91a7151e16f344efdfad245fa29a186f1fae409387e4f1bf732a0cec1ed739ff", +"T3T1_cs_test_language.py::test_switch_language": "5eac4f7bed83779e740736c7cec12ed6686a693ae6d5609dec9312081d20def3", +"T3T1_cs_test_language.py::test_translations_renders_on_screen": "0ef96497bae150341b21d5c6d8a332b62d242ee59174187bdb0e96269dc43b26", "T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "e7c5ef8ca271696bd49916a8a1cacb56bded4eb603a32c1870e1b36844855567", "T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", "T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", @@ -16976,11 +16976,11 @@ "T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "f2491d60cf5a47e28070cdcf4f9d4426f30fe13a22ba741d509c9701476afc54", "T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "3ca71417890e4f6c8cc37459c270f3403fcd1b3d6e48bab2503b7add0f385a05", "T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "6592bbfc05e4b22b06ed861c1b0a1a866c5e88585f54d9c1c58ee050f5e23b17", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "4fc61f31c31870650cdc2b98770973915f4725afbb12b0dac65deec83dcd87c2", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "941ef51f1acacd7a483235bb1f87b4a99dc87f492c51c88cb4632cbd63e42cb5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "3ffde45b78d8e28e5795303c5db6799b2f872a06a97e4e996948a3838e189628", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "840a8c70cebd67533d49bf2f9de36209d4c0c07086bb1a894b7a422901711fe5", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "98a93969e252965167fa53218131066b76acd33ad68b8309038f7220de8d05db", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "840a8c70cebd67533d49bf2f9de36209d4c0c07086bb1a894b7a422901711fe5", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "840a8c70cebd67533d49bf2f9de36209d4c0c07086bb1a894b7a422901711fe5", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "d21a90872b6f01417683c744cb383597eb1482b52c11278dc56c4285a5934d23", "T3T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "fe9aedd5ced93330e544bd1c9c6cc6fcc7bcbf93e518e3240e4ef4f0cb21a085", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "dbd5f08579c8a9900a2a5b8c2d944866b027c34bcd3f9991087e85c816822b18", @@ -17006,11 +17006,11 @@ "T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "011971910b847471958acc3f29029e65b66b3f03608a9f9fef3b22b2641c7076", "T3T1_cs_test_protection_levels.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T3T1_cs_test_protection_levels.py::test_sign_message": "c1c2fa31b3ca952aa13a7a90d27696e5bf8454e1f23bc2e3759db4b3892b876b", -"T3T1_cs_test_protection_levels.py::test_signtx": "4da8a6b06006f2455d0a15ef12d4f8f6e638922103bf7655a3677d5fc1667d1e", +"T3T1_cs_test_protection_levels.py::test_signtx": "95ec7fb559a3aa1a7400fb00c3e16d56cd74bab10d036cf40135a0dd7ee25cc8", "T3T1_cs_test_protection_levels.py::test_unlocked": "220677caa2b1e7749d2315a739bf35a0a3008a9a10bad6d94affbf08997fbe65", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "ad6d84129560c60b8d51acff8fdb121ef7c068129b51e4a6fcb46321dc4b2c93", "T3T1_cs_test_protection_levels.py::test_wipe_device": "f31631ecf44dc23450c87efde2a9ea96689c97dc7a176cacdfc8d2c9449f14d8", -"T3T1_cs_test_sdcard.py::test_sd_format": "7bacaee5de088a97de251e63242a12d976ac69dc3324d4651cf335ee6b9ffc39", +"T3T1_cs_test_sdcard.py::test_sd_format": "8ab982f4d35a87ac0fc603076dd9efc9ee77822ab7c391e7faa5f17867b3b1c5", "T3T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "7c7d4078687e1a1db79fe179094b8e538e8b1d741f0425113875fd34314d4f81", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -17039,9 +17039,9 @@ "T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "85f31cdab9b7ac4bd63540d5428a43010c7c9f6284df6aa4ddab1a9ba7b506e5", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aab7139148c4db5da785c7bba462b99c1c62b39af841d0986f8fb839979d6212", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "6ccd4b32d1c29573faabe091b1de6a6743932f3aaa76af64df0c6b99b544106e", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "520b14f8797bf273d7dbf7918e62673d66c6477188f773c326b907ee2e015d3f", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "96835c93f021819733b1c5f18e8877014624492fe63fd1683dd0de827e4cc86c", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "af0afee22a2b75c9f1ded40279e04c88786909afb9d6949b798ab1680faf62fe", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "9cd0b5648352049a2a290a30261ca69a060ec80f821a0b64555ec2c7dfe5b8bf", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "182feeea0860ae5e9347e6c2ec64c185f16d4b0136d448bea2d86696871b276d", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "4330f18abba49d143547e9b91b252b48eebdb08abfc1c48a39e5b9cba9ba1efc", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a55dd5a911ad37437e76ca92fbafbc14b6e7e75b5571cf225749ec8921f8576b", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fb7108722b7465127626fa8c2bdcedfbad3df8468a9e74d9d948f57d1b93981b", @@ -17053,26 +17053,26 @@ "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "83aa15b49f8db110b6e45b78fc0f8afc1026bce81dd9388c10748cd2b57034b3", "T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "49265b0b9bc77fddefbcb374cd836ab6dcbe779b3a0eacb8c3431e60e707f853", "T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "5523f9e16493f0218cfde853817263db17680e391fe872ea7e3b5ed0fa5fa2d5", -"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "dd75ce54d46dc216e7c0fa9306e1cf535689c590f058a5446648033b809b4e94", -"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "1cd9cb6ffec689578227d3cfc12e681c108a1fc3051a0417657d3f4a6dcef362", -"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "9429beff5cb262a2a84c7ce24afc71730f6a15b48d4a0f7fe22493fe86d01865", -"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "f706e70d9d73bf5ef052a1eb67f2ab830fe880c434b1a1edc6a5e213a06707b0", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "e6b2c6f2f2514659e6be7e2bc0abede895a25f3df76c58f99b26ec93a4dd5d55", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "35b01b8cccea5a0075979cde904151d42d5b6fac865e23a8e61c85939ad08b09", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "93df395998e0cbfd3be941810fc13104b394dbd49c347fd1eaeea0289798b8fb", -"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "3cdd2085f60e8cf3e00d52cfd4481458c4103e83c69937303e46a92ececa8b8d", +"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "6c5bab0969bfc1cbbaf093852a0e959da07c5721128f70a213b9675bea0868a9", +"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "34abd8f4cc3ea3ab9a25a8b2dac7a75281cf4e6154611600cf34745ca37243c7", +"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", +"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "1b183b8281df737e5210dde94d6df74729aa83353a3778a60bfed1618e6a17c3", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "cf29bdacbb2837fba56b65ce9ee0d6a32f163b867288b863cae79bbc5aa79599", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "f05c89f20e80be5faea4ea14bc5ea3c247cc01ee8aad5c374bfac325262a2da5", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "a19c1c732cd26205671ca05ae634ab25c92ba2a78119c4c9279f9564d6f01ccf", +"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "5263c5198f3de829acfb5fd2f062e4dbd7e7a772ff37e03ad9938c18cd741a8c", "T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8b04b754bc8523673322215b6a00ca82070c1cb507f18b941439ddc1a71330b3", "T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "34c96a3ffabc72c04e7de5c3c41a5220fdcc260e8e428e402700d873fa5ff0d8", "T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "52be789ecba93fac2f8d9b0f348921b44fbfaf90055de4cd5f317e8b73e07952", "T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9961a32676e652987196a9dae48864274cc3de8c317291349de3417bbd4375ca", "T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "d06829f14d4ca09da6fe6bc84916eb48febb57841739c059fe02004e940b8bcc", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2038ca134d0d1d3a4862c98d20e831a3d21490e4aa23b57ab638d432d1e0a1a9", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "6cbadf110e0814e44715bc9f5eb976cd2607e429258ac46ab85daf3e740acc21", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "e54e9005fecc33eb40ea50874faab70ed5d02f302cab3f823aa7ecc9dafb7208", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2038ca134d0d1d3a4862c98d20e831a3d21490e4aa23b57ab638d432d1e0a1a9", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "6cbadf110e0814e44715bc9f5eb976cd2607e429258ac46ab85daf3e740acc21", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "e54e9005fecc33eb40ea50874faab70ed5d02f302cab3f823aa7ecc9dafb7208", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a62a64a1057c01700d441ff86c311855f3a4c6dd0c0d432c8638b3054323353a", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "633dc02580c2d90ca4ffa7f47dacb0648e57bc04a1254e36864c20188b531cc9", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "e8d30966215874d6f15968ac8a4c8b27225ec5af72320e37d3c5f3691432ac03", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "a62a64a1057c01700d441ff86c311855f3a4c6dd0c0d432c8638b3054323353a", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "633dc02580c2d90ca4ffa7f47dacb0648e57bc04a1254e36864c20188b531cc9", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "e8d30966215874d6f15968ac8a4c8b27225ec5af72320e37d3c5f3691432ac03", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "af662f3ef98d9bfc8f1e03a6b4cef12f8c955cc16059c826808c71f8b1987389", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "2e37ed22095d7a073dbef900c55566874abb4c3509e2de6bebe06920fbe71b1c", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f9e30feb5237edd872806bc548d62acc529305893f5fb3407cb8605ffbfa1bb1", @@ -17080,28 +17080,28 @@ "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4a69bdbb87c28dcc053eae2aaf0c315f5c0d72fa956f80d7d8453786355ecdea", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4a69bdbb87c28dcc053eae2aaf0c315f5c0d72fa956f80d7d8453786355ecdea", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "d35204d220e204e9da5aea5bf0462b4650422d777dedb55101b0b0ea49af27b9", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5c113bc9d874bc63e8c205dac3369b836d79ce197109c848534c0d22d0e54fd0", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "eaea5e14a629dc3221c85ed34d663c344b6663081cade07693e5e4cf159bdf44", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a5d1a0a50cc0318eff4a27297e56f731fbed0bda39cae1a17615e22e6047d605", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7e808702a6455402afa7993d99edd1c6b37636b63d01090aea02f0e083827db1", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", -"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "0cb9a8eb21cba13ccd4bb9ac6e79c5286877f4596340de92cd92b9c65a7fab7a", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "0cb9a8eb21cba13ccd4bb9ac6e79c5286877f4596340de92cd92b9c65a7fab7a", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "736c8777a8d7a2f734a418989841f8cc1d1152ba8a7a917dc24072e039e9cdf8", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "f62a6c153d26b4c92b9f7ba658e3b2054e64da3c7f0181ef3bb3d7e82dd9807c", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "e7fc90a98f175f4f11be0b3f5342df6afba1957b9630417ed6b11c8359372406", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "3395f0a673070c452fa05f218851120dce9f34c3f51281caa41e79c3dcd612a9", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6188b171e6e1c48b2f5026bc5a54ad4116f4084a1302e6d152e15da3248dd183", -"T3T1_de_bitcoin-test_bgold.py::test_attack_change_input": "c64a42e1d6e1e85e4aba3b0775694c1c413d7c3dafd79c87652df7f15fbf135b", -"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "c64a42e1d6e1e85e4aba3b0775694c1c413d7c3dafd79c87652df7f15fbf135b", -"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "ffcb5b2907bea0b532e9d5815f7c8c360643234ee480582c2a3592c443865771", -"T3T1_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "af67e3d34b208f1d10f071ebe0217e49e1181d7f53b6131afee88dcdc20ecd97", -"T3T1_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "3132c940da577e769f25605ba2ccbc13b6d8e630a6a9c74e81974bd45c61866f", -"T3T1_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "0f7847013b17bba1c3134b835e3d3ad16135661e6cde237e86d4122f04be3046", -"T3T1_de_bitcoin-test_bgold.py::test_send_multisig_1": "92426e0a6d6201bb143f508cce8e2c0e749842cfeb331f21f69efe44cc3568b3", -"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh": "70790e7bf49fd2e083b6a4faf7f43a44b79328a737e0868a3b072e0595b74992", -"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "652785c3c553a649d731eb7c3ac4a522016077965fbeaa3b6874e11744af2903", -"T3T1_de_bitcoin-test_dash.py::test_send_dash": "acd622ec1ecef460f90c20f2277d257a8c1fef9a2acb1f953cc92ce4861bb994", -"T3T1_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "68267fe587b9a936675ed4e1f8782d21eb469f8af3fddf712b830a85f467374b", +"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "000fb25c5a1455cd8c75372293cbca00a9ca034078eb1d401c2213274818fe5f", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "000fb25c5a1455cd8c75372293cbca00a9ca034078eb1d401c2213274818fe5f", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "205772b0ede7ddff5456f5ff1a0b4bdc92e4fb91bf547bb10b6372ccfbdddff7", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "40a06762d550595fc0b80ada085e09555d05e5ef7a56c6be8c49e329e1d89a5c", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "a546916f892916d48fa253755740151a3a02731444cf8b390b1aaf3a3bbcbf6f", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "60503baf1c396d3b5fd275b89b5a0b4a8f877bab02868712a5fdbe5b5c45195c", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "bba776e12005c44b42750132ce34b2168cd020ff9908094c6ecdac9b3be3e753", +"T3T1_de_bitcoin-test_bgold.py::test_attack_change_input": "fedb5cdbd0c20d19e209816aa6f1140abe2746bdb50fe703a030ab72a98d7554", +"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "fedb5cdbd0c20d19e209816aa6f1140abe2746bdb50fe703a030ab72a98d7554", +"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "d4ce1182a6875f21eb6cfc445ffc684575616473448076b99d36a0b4d4d54dc2", +"T3T1_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "10eea7b1988ea19534d01b3fe2db662b368d9e0670cbf06ceba8db099b19801b", +"T3T1_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "bef164479dbbecd892aeeea432489e2b7641586ee6ddf8a0814eaf6bd9e180f4", +"T3T1_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "48a5bbf15f7f5a2bf7be487742c3829d81dd6871e3081b88515b31b47259b254", +"T3T1_de_bitcoin-test_bgold.py::test_send_multisig_1": "b52e9527d9e19ce9b040888bbc22f49b522b6848aaace3760ecd4c4bb16d9789", +"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh": "6cbe3eb5586c855c9abebd354e33c2c756967f583b20df71ec0764577d340781", +"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "35c931ae56cc886089b0525d6d452cb0cea89248cd8503251c6cc865bafb2b11", +"T3T1_de_bitcoin-test_dash.py::test_send_dash": "8ef8313daf9b5ada908d1c0807b5950679769d45a975fea58d0a2a722682ea49", +"T3T1_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "28a6bf66401c4ba2a14df3dcb550d6b061c4906d00499b5c3402891e5ba4d2a5", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", @@ -17138,8 +17138,8 @@ "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "abf4b0d84db1323786f4e7c703140336ded8a409905d8fb1275ebd3f385f86fe", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "04b61e0fa43ee0a9b4e7a6c845d096c0f1df1dca6c78b6b97a262c7d7a710ad1", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "72a6eab0613382aacc331682d365480f6f5b54ad8db1152b862e1785141287cb", -"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "4e9a98c440691d61bb58c74fd82ead2b5ff242ec1e5cdbf0ac19888bcc598db7", -"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "d4c9d7293bd0260f7b07a538ba1c8821ea11a3e60eaf93a68ae0b8cc00482c54", +"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "8316b714d7c9980de0884f92e7c5ad1e237244ccc9bdf1afc66d0819182bc481", +"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "32d83d0a70351e53476e86f35b8f71f0902113f5b79d4d25e9921ed9c309c0fa", "T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_bitcoin-test_getaddress.py::test_bch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -17267,28 +17267,28 @@ "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_grs.py::test_legacy": "187bd7334b86373d973fe9e0d31b9de0070029e9372305794e056b5d2bc5a6b5", -"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "916f924a69f53952af0fb7a60f168a4317e9870236b1a26ff8e1536ada375cb1", -"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "56758dd1af6261ba87abe90b284d63b4391c64a5a3922b8a932e1c09153b1971", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "ae403b23b1b5fdef19f62f1a804b5d357aab803850f4202a760785d9bd8177ae", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "9b73e9ca561f05dde8306e1b01691fcf5a13cead5207e63f3e2d8c4dece2caca", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "69521f5c988c1abe037570c29bcb023be96c2031374a2e122a0a540b72b79381", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "dfbb37289d40db5f250f4635b1dfd0f3f628653e0ddf1921c759a3b72f20d82a", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c7cd1275972d0f6173b4f427e18e5610711bfa3e48b50e31bd72c40de45a5423", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "9e8f6c0f9c89cb4f109d4d3793510f9d22ad751bf386ddf358835f0c654847c9", -"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "4a147bd2da7e362aae0d75792090c53dbac97a27164ed09b452983b9c10dea7b", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "037fd02ea2b816d865cdd75d539c653db32a3d83f2803f6d923f1e77ca561567", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "62490b47d5283109ef480fc7d4487dc81b9556184437307f80b041c1bad4c4fe", -"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "b48c191999eff33118610114cecb9cbdc25bb5ea9e91ada1918091bdabd3afe2", -"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "4c3e91f77f296002ca3628dd682807abb999dc7d5663aa38c2ee3d7412780055", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "cf2d2842907cc129c88868199132c21709a48a6e1d0a50da832f5ff86f13d7c6", -"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "1403bf66b99263c8652e644a0512f40bef7650f4c55a65569c35a033109fee06", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f8c458d7fd86758f76584182ee53487df0406c9ca14079bcd410031a5e0fd3bf", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7befa9d38a136cfb3b785168c2fdd44d33e16784209c2cd4559aed71b0e3f819", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "945171f958a106db3ac9b03ad615bc472b958ed92daef854bd9dabeafbfc0915", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8b46919107f053cc17a7c2f5423fcb6b2f27c05bc78a1fdb21d82d08dfc25a96", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "32388ee283f47424a229be105e1487ca896eaa18a4898c3527e826787d1ec505", +"T3T1_de_bitcoin-test_grs.py::test_legacy": "25d9086b77f7525569eeeee9c9fdf62664daf42e416d1369b48569ec5847c4ec", +"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "9e166579ab06c61ff7a1ca2afd0ae5d2332ad276744e40e102ab90b09ef59619", +"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "f517751e70d3821d912111282edcf1b96789bf8f292ceb002671cc17dcf26a28", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "5bffc1fb78de55be30bd2f1db744621b68f3c8f24ddc1654329293e1642f0914", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "7903f0ca09eced401e535a1d7d6f44932957945b4b596868842957c7b1d06c98", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "32a2c7a71a270ce678451d36c538c31c2febebfdb7c1447228ce82d8d6524166", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "6111bdcea0d438da38dda92de278d4f66b2b5bb0b6a949d21bff33e255900df0", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "bb9dcf8a41af2f980673273410d7bc5aa085a1976728d62659fdb46851939d56", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "3177156d1e1cee64388d8e6164cbe881ef192a838c2331edb328bca598a37cac", +"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "304b1c31e7ea6e5c0cbb0bea1eea36f08d9753db8ff4da3b64af9d5553ec4a83", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "d906493591eb326f7abaed3c2e879ca992aa7ed719c46ef5204a359348e2d58d", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "7c62bd05415ff3ee3aebd5df43a0986ea513e080594d73fde2e29e50f9fde196", +"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "0ec1464cf13a3034640616d01d5bf21612e0a0a5aaddeedf1cdda542c1c5adf6", +"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "a95e0fb06fee40c6e019ff3f8853649e529bd2e326bbf1ed16487259405399e0", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "0682e50f81466a446b665c7250b49d5e2e32a4ac08d568b92434fce9f72fae14", +"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "2697e01f2e1e7af98ae9ca22e07b310678881ccdee5d8dfe0d0ca1652788a7a6", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "1a620448b1e4f4994c1a11980a18650dd4840a3eab5a85be9e035e4484ed2e50", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "f165f52bcd0e997ee30a22d9462f297649fec0cdf1387b2947ca7def537bf22c", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "d4199c91e13a996c8e8af6014b781180dec77903dcbd984f5a8bc292bf336b93", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "bb8c81aacf79cfb8ee958a3e7f3e3ed8d733fd590f1d2942aeca23f4a14facf4", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "69bcdc81b27d79d09236f0ad112c428e52593fa46029204aa12621850449ee3d", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "23dcbc93a12e77192533492fde55fa10b363f4e5dc73c864b0b8c88631f4a83e", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "63a169ca1c10921fb343921d0dc1202978d5c3967ef9906f5fa401bca55aec3f", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ae6db1972c9b584dc8c3c26850f56734ac8ae5caf174cad72fb045ba203c81ca", @@ -17317,25 +17317,25 @@ "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "5ab91825c7b3aaf488a9707bf0f5b616a54332cd9b2aecad4e2f9e89df765c74", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b830da59e059112fd60b0eab834153ce81410a0be5e234d45c84b03814bb3151", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "45abccd33a0bb02216458f21d7a03500ed6db0b80dfd45610c4ab91c102bed4d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a0abf6ae6c7c863b32908097b64314afff6fdd3863017597ad542ffdd15b93a4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9ba6628c8fcb8cb4aa663db515c1cfeed0d2ffba45b027e5546aa98c1c600dbc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "53aab978ab389d46c2e1a0a252d5962cfa74fb8c0661bc4435456602a80b2141", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "ac2a35429116829bc9b64d36e2b9a118a0c4583130c6a8da5d7c5abb2e8e9589", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "340b3ad14cb53e23d93fc00d32e56baaced8572d0f5ee2d2f1c0fc30609cb97d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "2f085f081d58d0776824481d221c5204090a60526f7b7c8c2c7304f6d7336510", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f1cff0b889af8871a1b578e0f1a58d5a2aba4205e03fa6f22168de7661a09842", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "853b983ec8bc1cd2f1fc21375a3b70ef6dc214877a665f9b1c017f88e099df74", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "6d650a8657a0e140098193d089cc6f03ade720b726a000ecff2a00c4b86a517a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "33b1c6f8246f3a2d755015e950e3e3923a8d7565e100713b45d5f2db401d78bc", -"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "bbcdedba7de9698e5f39ce27eefbe2f04573415d4c83c6c11869866b679a83ad", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "cb14903c47f019cb4226a57a54460830afbd9539402a25e07764d52bfe95248e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "765e72dae3ec84edede2614847e433db2351a38a2903742a458d38ff5bdce029", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "af9649ba21a7ce851d4d5f3b188732ff7478cd3ea377fd4679dd99d65a0d1f98", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "417da43350c8073a85ded3e4655ea58ae3dd758260c218ae33252c6f0e664b1b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "17e76cc8e824f771e8dff085a947295b96240131d1cc8e3b6834a3dc5f493cab", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a7132f5cc5eb7a156783edd4ccecea7c076c1ee28f93074ddea4655f531c938b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "a09cf1dc9a5db89be44406eeb5c1d383d014c226c201ebb64d9f56b0ede83d01", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "68d3a185cb16d5a0dbeee4d22cd02cc01be8e6897ed9077327fd82ec3643aee1", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "6bf3b228db444dcef5e20d6f8b110bf6c6da7db6946043c9c288f02878b592ab", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "49289f78e2629b47932063653769ef93a0c079f3719842566c7d40b3543c42a5", +"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "4650c0c675d9447afc26efa6e4d3c4104cd88f1265c472e48f8b06578e73e64e", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "d7f44c3c839364e3a4e317187ebd77e5c9bc4a13053b11fa202a5f7b02b8c2cf", "T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "bbbf53b27b55c2e3621226c754a26e0b6d26e28ad4dee522e5bdf00124c86708", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "70b52e613f0282a3820e5d3007456234c9bd393f7687ddcea81ecd3f9d9af9d4", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "208dd4db2f811fcc7bf39284784e6635fd06373281cbb38a02ef5d0e4372b0d9", @@ -17387,151 +17387,151 @@ "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ac28bd7184f7a2fe5a87afcae4aac70273ade8be077069c40c79521110848bab", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "ace4e89ae1c8d469bd284d0844c0f413753535190f059289fa5d502d8bcbb397", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "2564a17d6948a8d654af5f88b0eb626c84b240d612d91ecea3d819b5712c32e9", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "c9db0e68ac78feaa55594ef18374beadf7c906ee9c01152ebabb6d65f8906be8", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "2db20091875cd7019669d7085c30a94fb8604524222790109657a9400530e01c", -"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "fa4d96feca2a2e1767b0cb7032dc63afd16c6af257e8c094c8a204450e4de6be", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "a30a89598202fd3c38e3f80046d627976c50d92b51ee1922825d9bf20e301927", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx.py::test_information": "02fb59b788b4f0d10f3a59e28e04ee60a3627608b52621ffe3b1e6b8c22fef3a", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "e68c38bb87495ea419e510876a78e374d4097f8e8739df2350acb7d4d4bfdab7", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "70ae35c7daa3a3700a3d82504b335af40f6e9885a7f8fa0b41afb7556012e07e", -"T3T1_de_bitcoin-test_signtx.py::test_information_replacement": "1f86e0267e7a6a0b89cf3de3c4736315849f111d8a789dc9f5041861ff3c2d11", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "8f8f1bfa9f931f54c63f024c2c1e27955ebc298a6a27ff16c11bc8503cfd185e", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "da5ebe4d58ffbe3551ef822f4f76446e9ee64f0b315ae20b3c6266d5232ccddc", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "1cfd8a7d30fc68e006af5516123228739e8fb89628bb55e62a160551819ff9e8", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "da5ebe4d58ffbe3551ef822f4f76446e9ee64f0b315ae20b3c6266d5232ccddc", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "1cfd8a7d30fc68e006af5516123228739e8fb89628bb55e62a160551819ff9e8", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5dbc15008641b71a624828adf0adda352b91c82cc7900b2d6c5cc65446843b79", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "09354c507051ba6d4914cba6c207658a5ce059028434ca99fc32a3f45b8a47e8", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "d91a933880fba80c47a1312b8316eda7964313cecc32f4e0b5e8823f00f661df", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "720cd7592c9cf30d8248e01f42039d718a812b6404fd92f97d17f312e6e9e955", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "94dcd49b4703d8dbdbcb460dbd599a4a058952ea228746b75ffadb7c579a4fb7", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "17e60684cd5bd0ff681363a2a042254a19077e9108af6f71766ac721b6ce6c35", -"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "0d5bb1503e5b6eb112295531a529266af5114b56cfe005a6b1a495b24ebf8f40", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "c1f335a1ac1b7c430a75d6e9e42235bd8a32d164db483df03a4700cb5648d180", -"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "964c1f8cdebe3312a6439d381eac2abe15187b31e6e19458d367550abb84f5a7", -"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "a248d971eef2b5b71f215c3471feab815acfa1cb8e758dd93a1db8a75948835f", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "e5728278f3a4e7a0ebb4c0936fdc0e8ed5fdde44fc3a74a061804a39227109bc", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "2894e3eb5273c0fdbb7cce37adf37d62e02ccd95e39a25997a282b833a2fdb12", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "918028b8bad66a756e8e2dec08e31c146cbb6121e396f1930351d831515d2894", +"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", +"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "9d0771442ba15121afb2925f943b66431e2f1deb3198ec2d9b4ecd22a9838d40", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "f3677f4ad3bbb02d17220ea56300794e5fcaa18fb464f47825e21706d6b3089f", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx.py::test_information": "f09c1499a249d4e54808dc635a4aabd652e7cc476fa98fcaa1be13159c755e8c", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "ace23f8e3171f790b2df8c563c02e54b58919bdb7ad819bb052d1ad4780f5360", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "631bdef61dd83d22e82afc8159f9e6ad944d4c5313628f51198508a6d6496f2e", +"T3T1_de_bitcoin-test_signtx.py::test_information_replacement": "09ad97e8082a25c62847a5440ad91b9c412eee1c86fff24e89991ea05f971282", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "a55302b142f9d932bcc074fa3cc2b455df3b49e6bb07c5c2cd39f851d5990cf4", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1dd74b6f7cf08a86b2349918fca4325b953809e3352ddc7362b625fa72000ea5", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "39c5d8b94612fd2fbc569e72635a8023bf7a4b5fe73eddb0a0caa94683fe366d", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "1dd74b6f7cf08a86b2349918fca4325b953809e3352ddc7362b625fa72000ea5", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "39c5d8b94612fd2fbc569e72635a8023bf7a4b5fe73eddb0a0caa94683fe366d", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "6acb1bf9d3b931b8d4bef7b65e404861dbd3e3a70086a66be913d57c4d4651fc", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "72c64be9ba555b2dbb2371abc6c5bd0e9cbf4feebb1d01882c83d3420b32daf0", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "373e3ebdf35519ec3c40e2d2b0aac0a7b1a6717b9b35fc5c2ce7329b42f6f1ff", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "4b0797066aeaad803bec2a31698ddab3480fd4186e55fc876702eb16f245f888", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "edfe7f28abc7a5f77c3e51367388f4b97966978c43cd21af7d1b9c7ca26dd4f0", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "4e7c5c6a2c43018b5039278834a2caa7d25628d2ed32e0a72c7b6d2adaa310f8", +"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "569eee587f0e41fb8e329f95d1554c70e50f59b1bd90a15266ec639bcaae3195", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "d349f4eb9d6317817b55aa67a6bcecba0f75e3540fa153f6843fa256baacae98", +"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "b81e63c296385966cda367d8df1a6419efdd74ff424820f52024fbb52d21e396", +"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "1458a32abb85965613a6f1768308e150d6835707f17b899d19bb150847f3793c", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "687402dcc2c1419c98832355f99534a2a5e2b2e09a55106416c44a9c79cb4fb4", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "ec54abe8318e7e428245d1cb13d25a3650ff980c5ce889cd89f3778a4e998537", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "045306d4977b0abf6bdba0ab49a4cb1e2f68ec2cfd49f14174d060b4e49087b9", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "08c1b6403ce3c249c1efaaf1a28ba5defb1f9aa24306896c0e6708f893213382", -"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "2b48938f8632092cc010be0d16120e1d960f177bb91904c8bafb72d4c50dba0f", -"T3T1_de_bitcoin-test_signtx.py::test_two_two": "8d0ee4d8fd9a4bc8ef4a3df82e55a7d8e7a66cd21b8be5992ab782273e9ceca0", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "90c89493efcd2a8475ba9bbebaa20e1b9a264f327551a364886181dd68b73a94", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "7c09f6ff42ca91b0ac86966286ac1994db2728789b105c0da68f852635175316", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "3d6efad9d5b0ab0149fb36347eef9a07e318bc4bcee52d8a3d34df2f697442fa", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b4552716fcaafc4bcfe20ed973010cae4840c7c35768b5924501440be36c7011", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a328fefef92993769684daad941ac56ce429dc81e27e1245026e1e356bad1a55", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "96cbc5f4dce03bc4920a3c5e87b39fe4b6b5e2f801980fbf9d090a97b6b5fe1b", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5c4cb0545101aaa654345fe0ac3199b13c00196727090a579c794ee9f97056c1", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d3d03455835e32609989606d975ad3b0e3c81fa1fd650c89617409c225efb048", +"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "11b97f78aadf6df521610595c03dd8732086a6d136e22029da9b6ad3d2fd22a5", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "780dac4b5a38f60fa17abb43733721b926636aede73de151e923891a51554b2a", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "edc97fe979da6fab0fcf2c5d0606f19be34e0d4b2f893c534d08f52700e36802", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", +"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "cb9b86d4cb68142d2458e19f8f630a79a74b8de810ea1fd00d1285fbb6b88438", +"T3T1_de_bitcoin-test_signtx.py::test_two_two": "a27c09ebf7742aa8327b455ef39347dde07a29a034975a6674a116b373aa71b9", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "0bc9cd4ffd31cd91bca7737c0deeff5fa145d1f11ef6c98ec2e80acb4058d8e7", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "82a2cd32511b5126bbf6ba1952d1f250061e73eef5ec0051472742540298ed4f", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "a5ef51f98967f8a66a0ae75c3cb5584fa214ddc7b50124d97da8321a6e1dc3e3", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "ba336218bbf46771335df9ee97270a58d80ac9fff69d36b705ec038357654689", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "c515f42e7a3807618ea664c716e01af0bcdc4fbd4502a86a51a1bb3a26446b1b", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1ec17b89a43a89419869ce1f3a79239c194f5c75fb81d13fa68ca4d0ad37009b", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "de804f3d559a38b53b05dd2244eeb651300d41a411322a63df5c23682a077e05", "T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0d0412eb55a955fd79e70371b7186557299f6e423f2376e9ff183a2b67652137", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1d7d27629d2fa30de94406cb8e559721fbf4772c554bfba14e16c18699de15d6", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "6e735feb08a2376bfb317a05c94634929bc96cae94beff6714a084171185fa67", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0ed7a91f8babd223331db3df89797aa2288b0f0c893d562744cd8d3708dad3bd", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b09276c2b27f43268c07a4d16b8c0385d87fdd6675430994f93f4ca317454891", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "3bc82949b610f3bd1e9ede5225219be64105a24fc66a3c157176bd49302632b4", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "0206c672d6a00504d682d8e757a8cf290ca836a690df16cbe7e5de6f8cf97076", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "5ff75912502bc1ee090ca62c637b53e1a11a250ed93bbdcb126aba44116f8bf3", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "8ef2d2864373abf5b1a2ccf38462e8844e432c51ee293707a5bc192669ab853d", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ed7241168b9002ad3a69ce6db048c37fc70ac6168811cf54214b37edbb2da2db", "T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "0c749f1be0f0ce51997fc63c888abeb636d6d56f2245fb9d92fe9a22c7825f57", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "06981d77f508d156ca6c2595e13bce12429187b9111cdd12a69a9f37c68c7a01", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "aa0cb6c7f95d4c6266ba32b988af040f0ce3c29e7bf5a0a3ef4a8eca1e5c4498", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "5091de55d717306fa73100a7908b2b4442039fc8ac7fb16722def353e207cbff", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7e6a798324c8019019fde5f9ff8fd27a080c88b868e63b5cfed7b2b310d292f9", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "67ad861481273be81ca47a7fdadb7e4d1cbbf493689595df335492896dc0d3d5", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "1c4aeea9bf65e7aa89698c76883d20ad9ce435f8c7fc2d68b0a174d36333d719", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "a74fa38811067363c564d93f21b4f163d034ffd7eb44b759a96e4451cc122da5", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "1c4aeea9bf65e7aa89698c76883d20ad9ce435f8c7fc2d68b0a174d36333d719", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "a74fa38811067363c564d93f21b4f163d034ffd7eb44b759a96e4451cc122da5", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "d7751d51d6e465d2da904e6f78435a1522f4b9f9f921d810263de6ee61c02f81", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "7f626cc02c2d38fd6ea8e0d0aa69531d4984de9e64e6ee483bdbf14c385107b0", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "248b589932345b1ee5d9cefb04d22fa861527c33dc2da62af425c196648875fa", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c28daa5bdad2d32bcdcd6869a13f39e16d982adc62c83bda47a524cfddb5739f", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "b4e965dcd8c04fe585458d15482dc9496077325127ccb1e97d83fea54729af29", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "f50fa3c406db98243fcee047eb20ace974646b07b3963e9c800d9577f485a3a4", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "7937baea70c65efd9415c0c4dabc6a26c0d9b4ae005528f471f71c905f36faf0", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "647b18880af45c4f928db7b5264428bc42d913af403092ecf5833cf18ac6277c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "0a8ff30c8868b304b43d90a880ce2736686db45cee73f9b36b4e86b3fb2c45bd", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8de40c79c6ffd1781eda446f4cdc9caaca36d7dc3c020e647bd6f5cec1cbfe73", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c74e9e9278e739579810f791926535b69e443249d6ccf3dc92b55d67bbfbd195", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2cb3e7ce0aeeb54f92a6cd852746b1b1298e0eb1d742b3770e232b9dad47a68c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "22311090d34bae5e0680a4ae04fde15e6873e20d40079139aef91e697a2340b9", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "fc069bf99b14db6bcc82b164577290ee1306d10b7cd317d625cf9aa2fc056e51", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "4a9b651e4f0c57d76997bfd3f1ee18b3566761e1eafd7a06865738545dfbae3e", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "4a9b651e4f0c57d76997bfd3f1ee18b3566761e1eafd7a06865738545dfbae3e", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a699526b33cda0098a0466d594a35bd52d9bc81899857ac6783d979341cbdeb5", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "067ad9bdf5b0f33792df22166b5ead0f1864cef44158f8e6da3f7627ef9145d5", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "9420a4d36d46f161a2c19310f44c76dbfe52271f27075f4f296ee7bc0bb4ea27", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a699526b33cda0098a0466d594a35bd52d9bc81899857ac6783d979341cbdeb5", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "b42047e39a2614209c61b2de549f691fca3382cc198a80448bfcd22c8b70f783", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "f9ee8c7e6e7d33133c817a30778ccea62d666a55a0d6aa0dbf98ca9bc5e8a1b9", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "3af2c3afc934c15385230fec7aa7a2f9de08369467f82865c234c2b8e0e5fe69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "f4ddea4a4ef75780afb1a98c6b5f226fce6155b9d1c58da1d7cb002a921d0339", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7044dddea721445ecf665b07f0231962a66500edfd81b9bfbe118c89dd91144d", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e2afd3c79e690905b3123425308fe66355cfc52f73d7785089796e4335509f66", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "af67422f3c12ad9b4634bda3653a76df6779e8d62147a73d278d561359ecb6cd", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "9b401c59fde93d5d1355566cc952a4644f6e44e1cb2abc90a759d9a739042c44", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f89a2e03000625bba736dbbc9f9fbf0de9c20af5cff1402f542d970264ed9ecb", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e0b624b2f579d2471813f3c8ed90939f2e998b7ea47c88fb625693b7b738d2a5", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d8c176e4795e77106c9fc1c61a65513accdf4f6457db254b228352f9db8e0fc5", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "2b221a469051f15a73716d1ced545e38b32b28145a2e132ddd6111d202258b2d", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "eebb11be899c8b1323e438e9694c8b14d1a7ca4b99ce0646f0e5742dd2e48c6e", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0cff975c185bdf9a046465bb46dab8b7522793d5148414c1cb3e2f55daec9b33", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0baab56d6323521dfbab947e207d36bfc8e2f70b90d12e5f4315ecc326ebd29a", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "3663ff8cf8840be02418246fb3ac0d18744c7efdff87ac6cf0c158405dc7fea7", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "70081ab169d6774e771fd08675240d50402de8a5bcc1fab034b85cf00b746e9d", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "4cfd9890845ad821a58e612c8b22b216422b154025b24b490518591f7f3e2aea", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "579110b91367cfbb883dfdbde327f3530b93542ad4d254101d536881a35d368c", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "71514b8c7b4623419a396826214badb01a1f228aafabe869deb647b2fe0d7fd2", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "137fa4b0e0ca281bd55c3312889a61a96cf99d81702c32c67dd32dcdb3e7cb5c", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1f251f18e6e200d9b2968a12ba23a50cac93f3b453d19bde2dc00d8cee9e8fbe", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "47afe6774c095d566f11c35881d33fcd624e37a2eff260a3a11945f39b1ffcce", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "bce2774a94da770f4dcf00c9ab43d0769cddddd62fdd2f4abe9cd1fad5a90864", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "006b9dee52aacf96373f71569d6b69a8971d8496bb8462cf61c338ef4ce6a05c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "6830091ad24777a2d6c31cb31bab17edad2927896a3ef18971d5d0f053933ef9", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "814c78e82321f6c911f3334aaae6e071c551dfa1e287377f55fd5fad8d9fc33e", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "458de3c8ea18c3cab08e7bd5cfb6bdc42a7f9d6dae5ac64be2f8a09157e24461", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "7f7f359068214216c3469fb76e8986c3f1d93e70b57455c442c403e177357497", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "65fe3c954ca089231dc599e5557d13e752b70bfcd458566711e5d8fdd7d41b68", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "6b19fb915c1fa8d374773caac2909c6ce8817a8d27516cd983ebecaff0b56eaf", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "5ac338249c81f10b2d19965f7a50c4863aa1d79def8f170d6ace9106839a8f1f", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "43d3fde1d8111df7cd3f2f19a99a444bd994fc488268f618084174468d950109", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "d570a20acdef9b5a5c2aaacd02b0ecf81b4d7a3b35c3ea998f5fe074b89598b5", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e2a0389e4edbe48e0bb5d445d35484ca804ef4b48a95ed095c7c181bca574213", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d570a20acdef9b5a5c2aaacd02b0ecf81b4d7a3b35c3ea998f5fe074b89598b5", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e2a0389e4edbe48e0bb5d445d35484ca804ef4b48a95ed095c7c181bca574213", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "051bf0943867b221785de1c7a6638f5681d47b1d8117eaddff407b94c0273e60", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "64a5423955ac886b03d90784cf0f736a020f0fa5d07eb4fcf4f1861742149891", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "1746070960750d3d11f75f5c6002657f52f07fce1184b007868e343885bbc599", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d27a750f1a1589df35f62057225cb9681c955fd57905fe5e761a9582ecc58fec", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8f09be162718b6551814c8d77623a1684e911148a4b207bdafae9b57e970e424", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "ba9adc6602d7ef0342480818e0d81b90b3082dd457819c02700e8c8936c3677e", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "81e2a9f2c3a86a000401dbf4ff30ff06ef147e1aa2f09faa14a9d1257e9905ac", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "6570eff2b07eb013b695a2ba0edbe6aa77ca7aa0dc947ffb38c9efb49267efd8", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "6b2ecc6f92ec11bcade86f2d9dce0701d390b3f27bc135a5bc149aae7d68ba88", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d4805952d5c2451847b74cda9a01c3607cf7a22cbe3cd6e338d2cd86a4a13e66", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "f488ac4082a4b81b7dfe5922a6312735913a46189dbad9ffdbbe789e5b7050c2", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "8ad87e6ec69ecb182547dcfc30782541732a4dce7b8215569c7dcec9ecf55c72", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "4b5f68913958932c5eee6d765e81037f0f10baf48b07cc7b99f85deea7f9af8c", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "4b5f68913958932c5eee6d765e81037f0f10baf48b07cc7b99f85deea7f9af8c", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "bf6d36bf2d054194d579949c6ad99700ed18adca2abfb2bb2839c74930a7fe18", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "f51bf3c972c2ca560c61674dbba86b598aeb46ecae8ee150f4742f06eef23b33", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "fd873258b424f49f8475830de4725343e8bebc357ce6a62db178c7a0fcaf2b40", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "bf6d36bf2d054194d579949c6ad99700ed18adca2abfb2bb2839c74930a7fe18", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "12f4fe24b5071ba8e9d193fb8f4ddf2bb9f44b18894bdd6edb69be53075cdad3", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "31f07dd3cbb663ac68a0c213e4b54f07131366779cfd2e8d90dc3b282fabb620", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "bf5116c30f461483355c4c5ca9e70c284dffe3fb7c9a1cfe0407c945ad569937", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "0f7715a1c271a7311cbc29b705576bdcb5712a4e29d72d29ebf6ecde6e974157", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "61c1ef338867ac7ee172973901cd23fe00cc3ceeb4622aec7eb8a2ec9629ffcd", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "536856de9b23fe8fc4f7272ad0e61adbccb1e4bb0ada4764cd5f12c6c1a41af3", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ba1313c76d0cf209ee0edf98e42ce854517dafa8f0c992a9ca63aa263a91c84a", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "49706bd15e32def385fbe0fc9ad76c5ff80bb341e339b58e771e7b1c91fe799a", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8de78dcc1542f3444cb3b407b323d989aeb7382c843fdeea1ce4712aa15e690d", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b8aea83d6135a2ed8c3a2c9e0987a04022c33d9aaa2c05ee408f247eb755b5bd", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "04b5a1334d414347e42ca16e7ddfe742298797da986192547e8ba9c2f5c7c76d", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "addf23207b7acdc4c2d1d0fa6848baaf6a3f38078c9800cbbd407d9a5dd79099", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "364933b7d01036d2e5e94e8e35f6a6bc0227e2059ab8d9e32bc87d4f9ecd221e", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "ad3a8d46bcbea5c643577ab4aab33f2b8ffa3eaf2dd36c839bf99de1cdafd6d9", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f0e7b2ec1cc08d822b08efaea581438cea32e0788a66ee93e91f217a891184aa", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "df51ff40b7aa167dbfaaed64f2b5040639ea8872d18c8bb808e7dac29bc5bf75", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "600b9c584ce6502d56ca6689e869bbe315e4785d31efecd7e630a4353a3707e5", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5174aff232a2d90d344f0f5f628b260faddb5a35821bcfb99af178e0635b4310", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "766d7349fb614d7ae03f59a5d432d2a182911666f14bd7f607bf5b0af93cdf18", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "68c233f18e9f1eafa38f4eddcb74e70291d61a1d81be412a6f14ffd2496b9121", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0c248b63da04850d728a1d4d7d1daa00adf426389165754e335dddd158105e9c", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "9166f459237be52b8d72e0c5c4bb319a603f9afa8910cea657792c50cb356ffe", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a4004fa8c11af343dbbf5dc4560c1c2d5d1307f6845871f5598ee52a303283a4", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "2e104f60bea3f6d67a1de14b251245c38f6bfbd199fd49d751aa80b2254668a0", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "54f1e6038e3ecd1fc13068ebd4f30fcd4aae2ffeb7324f8e46ac745c87aaaeb3", "T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "794e2a8aee88ec640dc423ed1b7cf1b18041152a22271c59763a46aa16ee3220", "T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "da7dc947d07c9bcf8201efb4dec7930b747ff6ce93031e4bdc348f8eb8200f59", "T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "284c3aacbe52c95befc6064748c9bcbd731a1e59e478afd33504ed4f322dc691", @@ -17547,9 +17547,9 @@ "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d4e2bacfda8855d67aa7334bbe59d7ba5174731bb765397f8eb01b4189208e6d", "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "1e3597dbd248adfbbec4cba3ad1abf05953e175b254e555b8695ccd48dffab8f", "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d819b0af50daef38f14f8a60f762340b5f06befe6835d652fe7241ac0a44fee0", -"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "47d5ec5a4cf12907681a5146b1390c88ec41c6f37eaa76fc663018ee5357df66", -"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c6924460d75b6146354d13bf69a6f7513b85b36e6317d94aab2d38a4225f2ac5", -"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "3206716a48a02a13132918c3fb229b8aa856b0eeb8e8cea2ffc91bca2b100321", +"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "92d56b3396d2c9376b80b2ed14e367cb5596a4a34c78ac14d8faf8b3063a5110", +"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5d2f90e5fbd79dfa1156f0b238f34d0176818477b0559e739ff179c7ff8fe61e", +"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "09a4d848d72734193a9e86077565c40b487656e1d9761a0371b13dae4186c4f2", "T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "f74f552c0d8dc532164d53e5f46b9bf433dc20295b01e0e51dfeef0c4b64e4bf", @@ -17670,231 +17670,231 @@ "T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "73f3e0ce053a75d8e3b908660ba999d411f56ffe391eadbd3d623d47aca54bb0", "T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cc6ce7065cc13995795876e91dee61100a3d95ad58832762064b659fe75753ce", "T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "43620c115f5f889f96729b6c6eb4d2016519a8cabc7dcbac48ccde3a60275949", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "041a0a33d745ebd99add8caedd083fe0c53a65f72b6a47e1b77c29ab5b369179", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "e591d65e40c5db772aa4cb7db38f42e5a1386e40a09cc46d0c440761e485314e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "ed37950b5655ff097c5b806df3f95eb8fc2e629db2c37674eeaa755299016b16", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "48a6777d19cf8aa67261ae8d8466ca2bd76e762ae5ba547bdb21ea4a162bc7f6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "7c2873d41e445af9541cc647a6f7c1d8e27e2cc411dfa9e73ddbc429ed7397a3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "cd4df7664a391837ad62fd05f06651e5449dfbc44fbacb7b1a849b7747a1c7ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "efd955926946fa1b108c59bb6d11edb37b39b5ab32008def77d49a46a557f1df", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "0542a4339623b0fdeddc1d431fc28a1d1d23fd4e2e809d6ef800fbe79eb076c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "0a4edc6de7e4b637f094befd9261e62635b6747dbff220888c7b679b965f0b3e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "4474505f79c927bc5f349974b5af5e1355117a1935f510ae0b8024cb944c5ad7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "2d154d0776929b3b2a77cc3a78b2904fa88dfdc1ed06403007c6ccd1a0b4d585", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "ba664e94da52701f75f81227594235380818e9dff0323a16e61ad0c652c44694", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "ba664e94da52701f75f81227594235380818e9dff0323a16e61ad0c652c44694", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "8d15866cb1fdeeb3cbee24ccda8c95b0aea6625268c6ec8ea0a294f814777e5c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "3cf1508f4f4dc4e517e69c0af17541d27e8ada6a9faefa7841efd6611f369ccf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "64d71cf5fb65f1289e31c1c5b1dfa77e25cc7cdeeb7e1e3738d44b58ac9e7397", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "2891867f653b18ba138c12d33593d8de560f81fa8caf78a60095c1d006e13468", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "d1e7ad3f7ea15159ff3833aa9b621be9e9ef390d341c53ec7d2f039e4a915100", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "89a83288b2a442d4f3dab84082621332e95634df17c26f18c7936db35384a543", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "ee984a626687a4d8921f072efd336ac5941850d2c8a790c1dabd9c8f612d3bd4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1451071846089ae64f2714aa7014e29e54acdbb31e80b1a15a4b53c768dbe055", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "0631ac1d882eebd9baff9d37921329c6c03e72ef355f3657f9cc9a7f4068e152", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "d1e7ad3f7ea15159ff3833aa9b621be9e9ef390d341c53ec7d2f039e4a915100", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "89a83288b2a442d4f3dab84082621332e95634df17c26f18c7936db35384a543", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "17525b20f12f8555e86e4afc2c86cb5ffe253bf83b2d4c91a543603c96af1bf2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "5c8745ae115f6a747c96acdf8a2d8a77489182f9c16c83175b9d0936bdc8c81d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "3fa912f848b794901d3cb3e205171aebf7ff1484cd190492720443219386d5a5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "1b1bb66f4375e146ebf01d66f30e76a9937dc9b6f5d97ea7582f6085e70bdbf1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "ef2d0148f5c09e351346967ce75d6242b0be27810b70ea20d48c164d3e047570", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "877b79fecf3772dcde31da1dcabcced62a2ed7f7b7d21eb3c42afec35c3f9e63", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "2019f098c70a9f68dd4be9f301fb732697b1b94eb45d1c51845e547e5caf303c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "6977afea08e22cf7b91420cce13b4e3c4198c4bd2acad02e0df0094cd4c6751f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "390f44730733db573dac809dd273b9ec562a6f1a863aa09703a9d640476adb65", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d68cab03d2003c4b6fb4ac3f3dc67bca20df41195274e5d9f12571cdedd384ce", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "55779fc60c0b4d693342e73b26ebed0e1123f08ccece770cf09076025c3a428b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2a1a05c5fc75a7ff9bd7685ac42a591d8084430ba5d343a03f1be160c73219a2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "730e79dc433f0cd043722e63b77af24dc98a0a59dfcabad85996ae57dad7c694", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "347fc5a9d8ebd1da61f3e62f6a5cf0121cc0a1a7e4db1032390eab8ac2313dd2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4f8d4c3102e3383bfaf783265a14f8011af22f935fecfe2c9f1f4b63af2a143e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "532bf546961e44439ff9ff22f64c232ee641f98756b827775e7eb3dca1295ba3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "005fbde396ae1cea7983b9dc3c5aefae04e453865ef68184cf0d8266c0a2ada6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4bae0b0afe7e44c7711dc77add1595e3f4b5fd255edfb1f4c9a50e2586c4f8db", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "5cbe34032d26d60847956cf0eb7510b238344b90b56fa95c64e5e983d7f2f70e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "29ba78298def845d834c050971d7473771d9970bf36501c53c9fe6d9e9ed7bf5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "7a5a7d7a5ee295237fa523d49c4cbcc5a6382c239a8bcce0e71758bd23ab453d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "c73e1c5bfd948b75c6a86fc3c1b1a148637619dc73fd45877294cdad05ad5319", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "19e110ca23ffc4116bcffa90f6e3163493be3bab3080c792163f7b6249549b43", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "65b75e7134fe05e5f5830043c822a432af105386e6c185b4b37fbbc489d3f029", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "d184fdc47a5994c893ad7c592926eb447863d710c3ab450dbe7da64c1e16ddac", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "e5db2e0addf81a8c4ddc14930a2c467b47d0943f2d9561556d569a49246525d1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "83cd404c2435bebc7588327bd86ea18820d95b54b69e251e431aeed234db278f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "f2acf2b2c5557f1fad5b120abe3166d5c3753f171d86df3ee75664410f1bf82d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "d7495f06dbaa2daf966e56f815ee65b9afb11f090a94cd544f9db4c781206779", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "2008aa2a191c63acdfcafb3a525cfe99dde79e004240a45b09973e42d6f33ea7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "072317f2154787426e373e48c40170bffc7da2c1c36ce1cf4a13e6c7be020cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "7a97b9e9827d300096b94fdb27eab1637845018a351778d8bbd42c102e011d1c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "22d4e313cf4a86e484f06da48a669263f1a2f10c40b8e22587e3d914c37dfde7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "002dcb75ed6699b92d288341a72100586bbaf69a319ee8bd86fe1821a29e4426", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b4a2fbe66d1c5e7d92e313f32e5b1e94c3ac94dc7d65fdd2b3a02b3b3acf7738", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "e9a66d138213991d2d34828c9522f24be77ad90f09785dff5f42a653653ee218", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7b89264a1b042362f86474ab096073bfad5a07f069feb98ec72bb26efc8a2f4d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f8941a26a327c991752de2238e4c103a21b755f617337fbe8b11ddc334677832", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e53e0afa61c8446aaded58917bc6e64786c36aaeb9573dfab3793aeb15cad133", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "11dc1f631bc2e8f6fa5a112d7716b18639d362e0e682a7829536c483772b7827", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d67a308fb7fb1d971745d04ee590f8ac21d2c4bc7c78443bf4d80123f6906ce8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "21d776810e67512d955c35febb0ccea8fc6bc9fdf3f7746e10f7289cbd44f54e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "69fccf7e116a0fa25a53a84ff5b531db27a8286d5840b4d0d25e8797496bfc9a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "b03c9305755ac0525b54ded4afdd477f2566db72a46105888ebe1e35ae2cf921", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e5f2056bbc971f34f00faf8df216ddeea2f5832e6f9093e1cf631fead397ad6e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "d04b543a48aff742ed8d2c3fb540ffc83d9d9eb3447fa2ca63fe0b0780ec90cf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2983e4c991ef11252f2d19fe56a8453e2900976a1395b27620c7ceb892649161", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2983e4c991ef11252f2d19fe56a8453e2900976a1395b27620c7ceb892649161", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "3beddcd3405a4f62a38a99d6aaccef7c59835297d1978d504d524b58c3928539", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "136db55fbe219bc9ceed471c46fc1ee62b745d8d4276feda5859a8060bdae922", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "948080e08f0b74aa0dcc6098cab5b58562a4cce7baef7806f52bdb890d25d0a5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "3efdf0c95f9b8159c342092da6f99e235aaadc94fa98afc52a1fce1af9bb34b3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ca6af6800ad9ad1d1c94fd98f0d7ef10af8485c3aa4b7794f6e18b2cd291121a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "78a36ef078a263aa9e99961b4352120d2c14342da9d466b9f7b36babf4fc97a6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "500860d9ba05e1c501e7258f15370f4ed725c71700878498404f76625f85d71d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "d61fc7e221496c19b6c342dd9176ff15814eac42ceebac0446b2e5db8bafc737", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "2ac918e3f91a292ca1b6daa9b8288553d26f7294f4eb98967c16c414b6665412", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "3d06387484b8a6d48d49845e5c7e747cdb305fb137ef6acf22142b55b64fc674", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "041a0a33d745ebd99add8caedd083fe0c53a65f72b6a47e1b77c29ab5b369179", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "efd955926946fa1b108c59bb6d11edb37b39b5ab32008def77d49a46a557f1df", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "b054a957f52dd3269b3120581e586263b570b0430f853ababec0e1aaef9993f1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0606502a11893dc5b8298459b3e4922da1814beb8c0f14a906ac2b9df582a108", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "843aa587aff1c5c148e48f8d1b85d0b9dbd7704d58bebe599ef234654b205353", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f25fc78c79fa20d6b7f35156041c548252fdbe59ab535527bd99e3ced14d492d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "64258d1fa2acc749eea0362a084c57fe13192ade175453c7b3e48528d4006be8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e9c532cdf3f8076669544042b53fb50e764244a3d2dfd097e37196021ff8cb55", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "f35fbab88a59f37766fbedc1191496759adbdad7e215209123b24e440b499944", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1feceefd6de52fc86a4bad2b4ebee669defc38e2c6e05c88bcb7f62de98b69d4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "f6006832676ddb3373e340b2c6c645aca97a72c0ffb6bdbd182b527b9f2ff7ff", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "865412a2a8974722d9e01cbd177aeca8daeabb6fc22026681340ad2b7b5e2535", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "bb3fd8fd7e003e6e52cbc2b1c1d16a107c9d71bba90992cdbdb68e9a296bd79c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "4bf60e2a8281204428ca35f268a2a954670bff7fb0fc421f3d5645328a545f76", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "4bf60e2a8281204428ca35f268a2a954670bff7fb0fc421f3d5645328a545f76", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2c012d29c4db42bdc8a1444fd4e38e45bb99439b4e1f0cfc128276a4900eeaef", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "db8258f552a8c64f5f5ce19658c35dda5661333197a15c57f614768b9d75fc82", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "56f99ca0d6e05a573d9c6265d93adb7fb44b557201dbca6c92c209e999838ca8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "36a0308982a16dee509fe2b74151df4a055ed373b3b8773e88509a1f57077186", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "e242e5370ceafa7c0661aed2f52224cf698254abf0a25a67afad522bdc5e527c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "593a39f7bef9f70f15c81f1e2f71b915f5f01355f8ee61880acf1d8877b7afc9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "eebb09b55cb0678fb02910c0070525dd55d0d509b2450e852d324329f3bf5335", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "2a1790567bb39cfb005824a0c07298f174d04e0caadd01dd8002e08fccd8ca6e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a410cccf889fd7ef07ee8a696342b2bd9d2795b9ce13ff9ff8db31c8fb891d66", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "e242e5370ceafa7c0661aed2f52224cf698254abf0a25a67afad522bdc5e527c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "593a39f7bef9f70f15c81f1e2f71b915f5f01355f8ee61880acf1d8877b7afc9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "417ad01a00a1fba45f4ae59b96c1e5d063208d6fd0bbae0cf233f4f82d343566", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "82a7dd3a5593b4f59b6b9f62c3e3c58e18104a535378d40297eafbd3c7dbdacc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d4b1289c74481dcd80a19e021fc19bc1062cf0b4e1d0e535af5a588ae5538cc6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "62e9285da00900b18bd24a7758d014a9546847423839114aebee34706f8f7c8e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "5d6ea172721675c8de6c76915c9798a6cb434d2cb830b1581e2949cce8852375", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "8522dba76be7a999f1516f4ac257dd49c3a567782cd8be238a8472683a8d6b80", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "36a3f22f7ad5c77eaf248b2c3a853bc7cdaa7e515fb2f5229bcf35ba1dace7d2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f0d67a6a4bb9d3ac35d9fe473e0684b835434426ec92d7a2bcf1fc48d197705a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "e2ebed2c337a7fe0aab1c350510b172d635314fd0bbec52e7c168ae38d9431c0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a4f4d0581f7ac773ea3a3d9e31760d3977d314f7a9921344be1d44c79a8c299b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "12c3e6bafb34b2480169a243082496b65fdfc5c1e44f32cb3dcf65aa05152e3f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a9f2cb26fa79b92849df8707a9bb2503c835bf48bb5a8f3cd5ba947ed0014f30", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab47e2f22a59b5587507c4ad7934fa701dd1f60b429b3a9ee55a5d2daaecbfc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "780cdf960ce08061c9e224b598ad0d6228d00dfcc4d814bcf1eb25ed95aa557f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "04ceb103ea2e5b4936a6c93e20daf155da026d823fa0dc14789943f5b5dca824", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "aba5014dd11fda262154fab699a7bd06fa211763ba9d4f5c11f7c37c76bc70b4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "d3fc7103c30f537615b9afa3ef3c05c8dd8b83066cf779048ed29744af598d36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7fd364614a400ab839e69155ee1d9992737c929f2ee10555c27558138f38d016", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "f534f5c6d035a82344b31b6b1decb32b99da6aa2292a1e6302deea28456dbdc0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e9c3f3f501bdae1d308d74f7bbd82944182fa0ed8187b8d7069e54919ce057a4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "5d09570aafb60a57919bfef29a85ba58915046ec1d080de0f56fd50d0e6d41bc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "618625453aba2154f7ea1bd661be18a1c68bf5901e98e7bebe30cd4fca58ced2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "b4de8680ae69d8a53b25005c84fca31d0a306e48150940e641f591c5c5e3daaa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "27e020e46635d1464f48449df085a038f2d329421c6c8e8ede5db7e6e3a9db86", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "97b55d91993c93437d047af0e2ca33e8b8e52c6fb98d7c79d7c69325044ffcc6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6a4a0020fc453b97c7d999268f040b15780157ff0436771bfb20a366af10e64f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "c0bb94c52dc43301d6fa8fff845a1f22ba15a52b93ddd9bd8aedf2ada9888ac7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "3ff3d24cf9fac2e85734ddf1464fe302b431fefdf356bd75ffd57b3602af0c3d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "27963fce76b9585163e3c2be4b350d3c5147da9f1f727d04fb5a48376b28f99c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "6b165bf3bbc3775286c21047e3b649571168a7c7c902115cee024c436be2fbf1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "359b51f73a256f9e5b3ff6edc46bc9836356e2d9b51fca2520cdb44501b81da2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "31ef04e8cc1654ba1d4c5a27fabbab86209b7daf0f13cb733342569dffedb33c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a6e2b2558438fbbeead3bbf0b482a30b6ff9d551aa9227d0b291746909f19da9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c217b799c252aa8d772cd4b5bfa820bf26c45b4a3b9bea3c0f41e8542abfc9d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6c29a9e0b33f14d8549d9635e38c8ff13b1cf4bae7bd36319d28bf0f28790954", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6a3dedfefa16c32ce6a1fe470d271645ba08e4e4ad8552857095fcfa5183283b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "1592544e84850950f1fe7ae4b073c682c63130d35ad6ed5bb879b4e972407ab3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d3c8b242994ca11848eec3ed77daaacb81fa0ee4853f382565ed9a751f16fa91", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ecfa2df89098af4a37a9b5b2fca2f309e168955b580101c8c4e8a349092faa98", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "13e32dae83494fc5e3bd41ea07600baf418bf6153f06a50c97702ef5623f31d1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "066507d14abd8f7b6cbffab1b6c3d0c60716887e47b4a1b2115b9a26c44ed08b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9f985619d4e544dc52b4af43a52fcc259b01235f44ddb1882731b993284a64b5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b6fe22230ff6ee382ddbe8aeb2489c566db47b18082b46377f33e7d0aeaa8512", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "63b341a969ee8579b716adc52b15c31c7fb200790a080eb6d8ed304a688ab417", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a566cb44245067a3f8ac87803372c8c8126c7ec8dfd8d945c94918cc9184a9f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "7a89ba6ffc292d0166bddd8a8befc9a675d2f2cbba057626557d64faaba0e22c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0dd147f2f280c224527ad52882b8d6c2f44382b81af417cf02ecff758d3b7713", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "6f974fc9c853074bfe1e7db7eb979eba884cbc857e66a45dc5c74216081ddccf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "01ed44300e8a4b4d9f28537cf6c69c113b469389dad486e6a78e14dfc6c34f82", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "10baf4ac0869f9989a308eac8ba654dfede21542c93a8e17ff51faaa3b3fd19f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "a936cf9d036d80143b52c05cfe88d24f267a3be0f8fc9220b7f3ce37397930f3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "7cf168d2a7d6ea16baad7f8b4b210f8aeb4b37e4f2462ead5eb4775434555631", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8343e398bcf2a5db99fd1c425d8482213468137e485980dbb367a5dc1cb0980c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "b054a957f52dd3269b3120581e586263b570b0430f853ababec0e1aaef9993f1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "f35fbab88a59f37766fbedc1191496759adbdad7e215209123b24e440b499944", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f8454c1cbdc953c4da33d6ee9dbcae806fce307d0ead5d970518d735ef17b66a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "6cb35194eda9a3215d741783a5274e896e954231742886d2a37281323d23a8c0", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "160f80ed1992a95ff3041fa5634f67842fc91d827bc50f565c19f679eaeca79c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "a078f52a8df5f3c6f3d0445115cf69ee3c838a12c09e679473be591e6caa6c29", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4b465d693b3debd768ac8cfde8a6ac4fbf2673b0c6f9f4819888cf09525f0cfb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "9411558671f75483c6c52e59a0f7722adb1a9b803502057675971ad88ccd23f8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "b6a5c56df3e7682ad7aa171d749797578a1ede0ec721fa121f521c51d71a6142", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "445ec696bf998b24298985f0d06ea2d6c898fcf9ebbeee8ee40757b387bac845", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "57fed81c395ba294b9faddc82beda4899f2e7c730ca63a08bba3a82aae4f0a04", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "a55212b23c7bcecea60d5f8eb93930fa026d1e32c6e2a9dc1f668961f7e8543c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "3f5e79b4d60361bfdd800df2252f0cdb78ef5dc6dc85142340b38dbb1e4c2004", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "9144a3cb537340b6605f8ff73e9acade4d4ce3514b2d907829cb865424901b4b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "f78b8e0172d7c28d1b275130f2b04f313a508e142678ed830847fcd12446f307", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "39e7332bdd2ed8a75837a5f0a74758a7f0dedd9b607bdc3d8c7118a946c18522", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "a17dddade9d9ad05921879c628186d61ee250976dc9ebaa7eea67850d0b00478", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "35f10bdd6c0b9dec28a6a60a775a29368e9e18c251a7afc118e710825fb7cb2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "57fed81c395ba294b9faddc82beda4899f2e7c730ca63a08bba3a82aae4f0a04", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "6c3c1ccdb4d79e461a366994d6b36d0bf9199e72e8799adc61eaf9e2c2c02d4b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "e9a76ad0db7de94e6b9e5409f766d1aa66d602fc3016938e1ca2618bc19056b0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "d756feffe41d65fc1cee51a23b51307ce8d6a779c464768d68a7bcff90be19ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "8f3e817596b82a52d52fd631e0e8448aa7d4506bf1a4825e499611c99a653b08", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "2f23b4346328a408d6be3d57b513830658659cab5c51a02e67d2079de7e754ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b063a8610392b38587e09f5340fc41d34d576c88224c02fbb9e98367b5c0145a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e68172881697136c505b7ed1a1693b2754e9e20443b230a88cb7596d1631ab56", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "3f5e79b4d60361bfdd800df2252f0cdb78ef5dc6dc85142340b38dbb1e4c2004", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "eb5e56f443bff116658df158732b11a429aa447c92bfc926857cfc01d0fb54db", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "55d077dc754613258d8b4910d78795b348f36c1bb46c7c003e76b8354c6d5b5e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "06e18c96b99157a50afd5cb17ea41e5ed2f32c8ccf9ea29d978d2c309827ea06", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "0683ab79507399b3706f0209a8b4ed4280a5b83f9fcec3716802304883bbfe5e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "f618926694f9e6e6aa32dd843cc14abac26ae8acc2b3343d3f339234df4a86c5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "571199ee2776a23496f951f674fbe258accd9ded59b8b8d3acc2312edc346652", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "677ee15dec8df0b5bca641d1885b0b45d169d4161dfbbbc0f0ed6a5d6e945e2b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "630ff9863be4de9c028a1dc692b4111a4e2858859d9453c16dc9d23198a329f9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "bcc69655c82268c54cf654c461810e7e636358d60d4cf43b77698620930481ac", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "462f1752be04edec00c5318135d07b857c1c6173cd77067742075e806353825a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "5cd2a62303f8801e7ce7ae587d2bc262e30124b3588cd1a17c12fbfc5079892d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "effbe5bcc02795a18656ab3bd5afc6d3ec14af29d9552aed99a0ff3703874c03", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "9a839dff8d5d60739ec3f765e021ae326b0ce68938ac3a3e814bd5f15e598882", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "6085ba93e0dfdd3e654cda072ecb3590ad5f4d164ca49d2cd07a8d34091c9c3e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a48a99c801f0ded61ea85c781bc01948c4ae74275d2bf142b82fa54a574239bc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "b74d312a39ac2cd3f38f0ca20f62fb715d593fff9a978951f1a30b4612fcc5f5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "b4522913d68352271d4e3a773532bda74423fc03916bc8ce04d59677a4c8e8f9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ffe9e10dbbc4732460ac100456b3e847efc91f8932b46d5144a29ba2144490d8", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "0f934befc0ca9f3011d3b730b0b53e0c22a68fabdce2879200ed5b79af62dd74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "ec78381d1705b488a497fae7bcd730f2f7750e2f02caad2ddb7cd38330e7d9ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "08ec5e552b2ec78e6730e3f547cd08d4dcbb995381ec5ffdc990577e11653fba", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1772e5f040f00c94f9f2573a1f05b460d4af45e143277a064af8a2481f775894", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "8ade078974aba76f722a3b9b2a5a320c053f434202114bfb5a31cd1fecef496f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "55dc33fecb3e805ff107e19daeb1976ad01ba0158f56134a9a00ffeb8afbcab9", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "38fa3ea83e611e4cac24d118fe4f6406630ee5c33dd373f807f583a635bc377a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "303aea319129f4b2f4393a832ed99bdfaf6e2948ebe3a9b84fac26725684939c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "599e6e88e3f52c32eaa0c9a7591ca3311db6b9a843c6fe7d498e2c1985a85b71", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "b327db2c1589b340560032b8ce4fa2d81f49b4425bb3e012ff9346f85d16732e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "7b697fce266eb0026514de535c69175067d9ae3df71f00a0bee148a33ef2cbb7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "be07a64c4a4573cdc5e9949e97608fd598d2eb5132996a804bf6b106d355d06a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "4659ddcdf32a47ae6638d0afdd926311595ad6a1d31d67c9260e0eb9188e5211", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "853ca8b8828eebe06456b90daee8077a6fa998f705f51b474d06c97020fdf01a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "4c594d4d30f4ea47410fa0fa883d1e6b7ed29b18f5be9b5cb2f5dcb411923d2e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "5ddcd7c2927a57283b1f04c462c588d58bfe8d55dad611be0dfd756a37085cd3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "e3d4fe19e3339a7c0d67fcf8ab3fa5803a8bd24e7ed68832d0bee0e027632924", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "a885585d69b1b84151bb0fa3bad99efadfadd6268cd45bf2f1829bb4edc667d6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6d190a7d38313b79166a7be339700a8a0ab1639655e76a2ddb59d268bafcdbbc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "16b6bb58a991faa0dad73e944fd99eeb213f67df7bc5a22a91d9654aa808c693", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d8f70d5fc664dd8e456d33a956513a3a24605846ee449d91d70d73dab5659b89", -"T3T1_de_ethereum-test_definitions.py::test_builtin": "f374acafb8a41f528745fd7be7e78a4a239b5a73cae246d0531f39a501556d02", -"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "5667f7e39290d3cc2051bd5fca59c03d46f3160c216dce359dd13752be336e9e", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "e863f3dbb7d1f1dd0b7e2a60d8aa4122a5bce3b8820f614862ee634b6e0dbb07", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c4eadd3db005b1637111c82ec982580e0f24da9293a82067dce02eb4a821b646", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "f8400f5d8297a4fd985c46f04092db103ab3704a4c1b256c5923183dc5981c44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "ae726c09b8f293fd723944642919af7e2908e6651f453157538ba23b17667def", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "82c31ded543a593fc91a27f85dd232a15a032bbb178a22702171e8e805897227", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "8d894a2beb111300bf77cbac8c605fc081bd1477f89e38c9877a019e2b07d7d1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "4879ba95cefc82f2be2a802c165f604c65c8ddda831d1013a25ef93cf4fdffb2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "7793102d055a49f7da67a453f7e834ec4a725deb59d91dd5fa43d5404facb8e5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "9d4e2a30080b1ce7f44a7cdf2eb38b109ff9a8a2b4299e70b39ba535dd184f2a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "8992e483e803c3ca7dbd2a082b4c5be8b1ecb22ff69e5c9166c73acd5e3f7f86", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "abf3a2da2bba8d1a97503757eec6614dc5182318850cbd7f65cc0f8e39d89701", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "c145106fa59bcb619ab00309ffd08c57ba98cbabf837cfdc7eda1ae742835cd7", +"T3T1_de_ethereum-test_definitions.py::test_builtin": "b70da6c9adb218cbc3849097089ec458dd631b69885f83e28b5f02dc7b684866", +"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "75228e5605a3b56c1bb29451df86c64a0b174ef0d427cac4c6313078390068d5", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "0b2e1e4474fcfdc2050b08fa4c61b3c04f72889172c0bba068a3cde4cf74d194", "T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0fa29d58d9f7ec7646bbb6391fdf4df3bec7f8ac3d913c459bae7d1038727741", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "4730e056e64b2f31625073ba4a0d9fac628991eb8010bc7f8d2e86d536624bb4", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "605fe69ec2546a7a3086bc9281d91ef1460088c5436a1dfc1073345ce3d8b77a", -"T3T1_de_ethereum-test_definitions.py::test_external_token": "6f65cf10515e6f9c4cbdadf55e3322a05052ab5dfd5aba2c5e0f7c9f8a3562ee", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "2e6aab77dc8787158ce0f01b596ae6ff2dcf4fa5c713ffa47bdc55646eb15bd1", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "78c25821c2f1abf04e077eb9ac540b09993be0bce6cefd1f9ed82890ceff8afe", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "704e1c6f5f9384a2d26e11542b8753ad2d3d58a9071045d8d39c23ee27953576", +"T3T1_de_ethereum-test_definitions.py::test_external_token": "796ca5f04524fd4d5454c66f9e34a2d8bb681197adb8b064ef770ad2f057247f", "T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "22ffbc18cd0d9dbe960a51fbb816b316214ba2eebc777552601246e99410b296", "T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "e2fbe9d289f282bbfb9064e16a74d24a066ece5d2b38f59c29cd69a9d2753537", @@ -17908,7 +17908,7 @@ "T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "62b223ef96892c704c9da60cd1cceb285f05295ce50fb158a6840838a5975746", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "2ceec1d13815a526b5446bd2e79399ab16e070c769f057fe9eb3effe1f3aaaee", "T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -17970,72 +17970,72 @@ "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "22940fe01d52e95906f57298f36d8486fbb6bd9f9306db58051492654c135433", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "88e32223ecf12b1822bd0dc76c0d137eee41ccc9a095b1020e4f684ed81eabda", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "aa023fd6e81e15eff67f6e41961e1244be7883e6e01ee5bc6a56559fbc55c036", -"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "ec2cb7af1be0d5964c3b7f0b4fc2de52a125bd628f46d473b978b32afa823d97", +"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "5e2a8aa0da1a90817e75c04c915785a9c567b86059fad80c1f06fd146af81f54", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "624b6b046d9439cbdf0ad645bee350b67548d7d75c9c151034b06196b6ed9119", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "6ae340267193af2eaed11b544099f9de20a15eea07a79a142caa0c0b47509a42", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "51975dd30803ef2f4de938ddd26776a1eb27a984063bcabb8bd71b07584cd760", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "6ae340267193af2eaed11b544099f9de20a15eea07a79a142caa0c0b47509a42", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f6c65dd99732bc7912cd851920c818d841f10d886837b89404f23f9ae83d9605", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f6c65dd99732bc7912cd851920c818d841f10d886837b89404f23f9ae83d9605", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d45a56217ccfe6ac931698ad68a8534faea557e1d47c3700e27f1e59dde4ac53", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4d6a9c1d25c957712cf5433e5dc4862cc01e826be4eafabdafa2a687f2a3919f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3f6fea2e0b70545fca3d4828305c86b0f2079c8a1cd2e3288b79e955c2f2bbf7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ec0985e800dac1e36e3aa7e6b3c03025ae469d86794f921af0a89eee993675e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "89874d121ef66cd0b751712a5c2e029cd25533e4a3f0b2dc553da52f36c2655e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e8640622a54881f2d297a46bd489cc11566ec920f7fc06ed83491b2d98e092e3", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "999bdb2b1a2488c46f1ab4436c3548f2e224ac7f0b34977b85ca750aa5c27b44", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "312f12d5cdf6d9744ab4a706c5a51c1f04b740239cf4f6437faa3d22823fe20c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9b9091d25c58b712155c7a23aac093fcfab6c0f938f8e2890965faf7a85e07a9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7a552c27d1c988550bdb521c35e57076d5add9bb0086bdd0f2314fa8473dd0c0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9b9091d25c58b712155c7a23aac093fcfab6c0f938f8e2890965faf7a85e07a9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "d23870c2909ffad7c7d59468780bac3b1ba6bd3df946a44b0371638793a26daf", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "d23870c2909ffad7c7d59468780bac3b1ba6bd3df946a44b0371638793a26daf", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "18de2948ee4b999250ab45d7cea552495b7a535076ac821ce07a188e51e819e8", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "29a02f935018938df1f6316311e02802f58a723a2e7f1a4066aaf2716c914b51", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "feb676830f8b7cea8141a43366d209cfcc1891be07d466ec5f8de8af048a2824", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "007cb59a2a106fd65feae97e036efe891d74b9909181f634ccff95db9cb5fd6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "89874d121ef66cd0b751712a5c2e029cd25533e4a3f0b2dc553da52f36c2655e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6e02ccbb8dc1183240efcae9990ce396c136722bf1488822152b2a9070753ace", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "349c744d42742380339d638b9ef7b20e9ea762b493c59f39159e71d33cf6fcb0", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "ab474bb787fd54d83ca068976c13011e8b1be2a17995b782471db2a32e56a287", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "2effbff7403ee4cdc0c8f199b49ebab92f6b84903a3e7dd0a611528bf2fad995", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "d3baa3345ea13d8961bab395996fb94dadeee85de3693a41b9b1ceeff44073d1", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d45a56217ccfe6ac931698ad68a8534faea557e1d47c3700e27f1e59dde4ac53", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "cde59ea7f5f34ed6207355f313988c1dec8ae060de050c6a89606b7845bc8810", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3f6fea2e0b70545fca3d4828305c86b0f2079c8a1cd2e3288b79e955c2f2bbf7", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "6b58eeadc416d0aedf48da5a51f6a149f01df33471ff8e5c690cd3c0fe4880f8", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "1e4972a02b0450024cc2306f393fc6940673088a4903f6300025460006da5d9d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "05369e436ee3ff3a51ec4b0580c295c714bb411332385198771340b7ca15bba5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "18de2948ee4b999250ab45d7cea552495b7a535076ac821ce07a188e51e819e8", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "04b5bf9a8bacc901417e88a0d438938218cc9925bb95a573a9766acaf2015208", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "feb676830f8b7cea8141a43366d209cfcc1891be07d466ec5f8de8af048a2824", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "962e01eeed35b1ab00ad8a8b32ad2005f5353a77f2f29b45d0a2a0ac27a87aff", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "34e2796d80356525a60f8830bc677ac7b79ff57372d6b20945a7b118e189729c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "012145a3863ee96db73e8266217a4353df45133426cb0c76d95fb6eb1d278de9", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "1294c9e6487c849d0520ec876226f2d91034c8fbfea04b4fa1d4d1662b756f6d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "1294c9e6487c849d0520ec876226f2d91034c8fbfea04b4fa1d4d1662b756f6d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "a6196664de6687a639589630e868377bfc7b53dd76b0897799b67e272fe9f91e", -"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "c306905f34e62c5640b6834ebf9bf95aba69a7f024f9f8aa3bfd84678798aa63", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "3fd4d1a6ad31de4e513458d651a5e017a852a0ff73d21eae8b83dbfa3bef7374", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9b24333cad04e517540786994a66d51929e3c892fd2ccc6b48eef1ae5b8306a9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "79cb8e765a790958c17cf5c50e7eabb043946f3cb5eda7bfe7d4295f811b856d", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9b24333cad04e517540786994a66d51929e3c892fd2ccc6b48eef1ae5b8306a9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "ac03ac36e181810e3f88bbe9a6417ed201de7d8188841f8a686540701edff076", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "ac03ac36e181810e3f88bbe9a6417ed201de7d8188841f8a686540701edff076", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "bf46a2d0c525fae4e7c3a37c31b7a7ced8c22524ecf20ee3f56ae8c0a6d7c651", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "25a385c1909af11b02baf44864233922070f1b659023393a2f74a9b24c10085a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1b7b5dd0f41842f283a08f7beb1b4c13ca36c58971393e57a2ffa9a6e9dc1b61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "bd7e1f86ef995eb89771ac388ed2e542a95503242b9bf2ff567c36f943dae427", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "c4d595412014d5c61a91a21947af6fb43a5a7df6a172bba681b6f22d3f37757a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "bda33c4fa45bdf36778cd153b64a564a0f807561d371674a5e46cc76fdc165b6", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "2da99e0aba69bcfc12a9ce3b3dafe96bdcf2cd2f5ba7394a8d7c9c3caf97132c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ccaaa0ba67fafbc5fff1db2775156efb5f891e162a1ac981d2083d5e5593e544", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a43459ae1bf4b017dbe90956725a0319a6f9115fce6127085c45a8ed803f302e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ccaaa0ba67fafbc5fff1db2775156efb5f891e162a1ac981d2083d5e5593e544", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "c505b2e84a72f486093491b637047df4a8a5ee42aa3d826e47c9f9245d80a95c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "c505b2e84a72f486093491b637047df4a8a5ee42aa3d826e47c9f9245d80a95c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "cebc4d3abfede9b91cd438941570e7f8f3ef00a4f1ad13ac8b59189a69297a69", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "e4e432aa05002758a152d2c80190814a87aadc054d8e9d28061c3fd976c1207c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "a3748bcb168eb5d18e8055aa79fccff7b529b05591e9c8b4ab8a8e629ca30028", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "bd7e1f86ef995eb89771ac388ed2e542a95503242b9bf2ff567c36f943dae427", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b28490986eb38490a2a56b869f9005ffa4daa4010b1feab754e99a38a739052d", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "afa544240be6df60987b88aa7400b5bb19e4b52e24a02c3b2b21399ec3a87324", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "5fb3fc6308b1baec801f9a6f6fec6559ae0a861a86d127d354495b01a356bb51", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c2b8cd6831543f6992f83114a4a5818aeda6eb38b0a6239998ac7e1951f357f4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "7fe9f8acc11ede4e7e412894431d7f2e5dd496fc90f8287eaa81d84c856ab983", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "bf46a2d0c525fae4e7c3a37c31b7a7ced8c22524ecf20ee3f56ae8c0a6d7c651", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "e90e11b07ab23f21fb69e04947bd99144bc182caaa84c8b276380dd6d90ef0f2", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1b7b5dd0f41842f283a08f7beb1b4c13ca36c58971393e57a2ffa9a6e9dc1b61", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "11055d2887b7d2b797d433eb0ae0938dcfb75091ef1d20eca41b3c01626d32b1", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4450a1b9eb04f1e7ba7b1ad9b09d9f23aa6d56c90a3b30929d4459cf62d4982b", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "cebc4d3abfede9b91cd438941570e7f8f3ef00a4f1ad13ac8b59189a69297a69", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "d20a2c180c95b0adec44331518d9ab44993394854f94e34766ef49642ee55366", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "a3748bcb168eb5d18e8055aa79fccff7b529b05591e9c8b4ab8a8e629ca30028", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c88bca75b897c148f89eb6e813f894b7fd0c6803e7776b87e9bb9e0ed7bd5b8c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "222f8592da85ebde2758b30a58f896985dbfd6d6092a72f956fc8a7760dab53c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "bfb1a60f5e0b0653197b821854fc97a16060edef3d3f3ecdb4125cc857d0798e", +"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "e652ec974319b2822f3db8c45c4a884af507e8e2404676693e5efc1747a95373", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ebdef978bdcfff5d1bc3965685880252963bcb63cfbe73a29031768a5e16ef7a", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "3bdd24bd65fc730ce5c5b4de5a05be1772660efe20fafce9942a1cc274613e42", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "e35a186db3ff8927e5bf4d24501d8914f9aca42ed6c9ec642af0cda35a2fa4f9", @@ -18083,9 +18083,9 @@ "T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3238efe69c8ad351b921a769b5f5daf91b252f89c9d7c08e1cc7075ae7a67806", "T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "f028a400dad0eb049c42de8c5e7ba57bddd6881bb61c2c20594a54aed14ee849", "T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "c82e4e18f402534f17a7bc7949a432f3394ff9d4156c12b77d55c6d9bd9db744", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "4f5a1b12f03b91fbd7dad2234c0b97063025c6874d09abbf05525d39719ab9d4", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "0aba69a0e1bfb96e1525ee56fb0ec6b08b8655cb5163da70199ddd0aece751d7", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "48c2ebedd4ffab514df0e00929879bf0803b220ecb0f32363289c860395e540b", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a91d34b541494aa36357fd0284b7d6a0de5044269f37271e3a3dd4692d3a69f9", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "d65949821bde4259451e86184e45a3a18453dbbf63487a825a7f686e05f67a19", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", @@ -18115,7 +18115,7 @@ "T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "5040445e0576597b7761850eec9da94f896ab9f71e2a1e3dc0f5485084708088", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "20c578e45dd3088e91cb1ed3af434a41fec92fb3259904d1d2997cec92c14fcf", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "97af2df0fadc828f537830ac0ca4954545937a820a53c5640eb3c19e41a6bfcf", -"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "11bdfd310e9dbc8fb9ff251456c05863e6edf92e34b6174b0e53129fd4f34820", +"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "15942a1eba92da5bbd904fc44f8c3d2ae1c8bbf28fa15e3615389e13806385e2", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -18178,8 +18178,8 @@ "T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "5a5d89e5341710b0826c836413d6ae5f4f2ad18df5d962729072c8e919f22cd3", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "18fabad57c607ff2e1b94a680cd352cc4fe59c941824ff22438aaaa7c55a34a8", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "6d3c37f6b61be79f3b0c79102d6279439e773455366fb8f864f019712c500928", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "ef952275069d3abe27a3cc39d7dc4f62a8858ba42aa5e505ada0856c8edd50c4", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5bc4c4463b13dbff3291c422b26bc04622fea4ba2b3ca37334f81e4e7328b631", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bc97c35720be8a5daf9295b2034c3419e3cb23025f1e48024c10d46ac51a4752", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "ab011871ee4d822035f6a06c5119f570b77183967c14651dc957ded18b777af4", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "88635c3e8548603f28d7435ecd97126cd1cb590b6075d5473de435babc68de88", @@ -18191,7 +18191,7 @@ "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e3164dfa8681017f2e8bc7a189db4ed737a7229c3219d7c34726615fc82419fd", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "df6be7ba24364397973345c98859d19317a81defb0d0296c4b18072944d72ece", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "62801ea5bd2b156ee2525bc98e2344a370e0b61d12ac9e09d0441ae9ae003d8c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "7fe07aa8313454d059498efd93bd5a5abf61cc773dd123ae1f9b5f18c3401633", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9eb37fe9411f94cbb8ed92fe5f83273094bebff0613bf343c1f2123bfc8b80e8", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d3b411ef7812bdc772c52c9deec850d45d9661f8a2dd183a7f1ee529e24b9bb6", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "f1c4b0c88df5e17c1681d68d32af42553ca135804efc9efa767c3bab26f306e0", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a396b0cb88e242855ae92ed8e51858d9a1ac81e3ee6149398e8567bb86274e4e", @@ -18200,25 +18200,25 @@ "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e61735df0804a4ff0ec36ed55512966d299e76360a38ce6c85ac7db9ac9c4ad0", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "36bc286316bc3ce0da2a032c61a7490ab25ac890fe4a72fbef46bd68e700ba73", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f422f7b653c558e1f0c29d28544af6580cbfa5b781c9fbff664f8cb3c2bf3450", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "21d37ca780902294c482d59b9bfe25bc61360f510c64a44d0580345f7f014619", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6792a50d11c19b47ce4bc41a0bf4ed04f1675dc0a628fe0e0096922e93ecf935", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b9336bedf22c34fa19d52131d96cabfeda605b3bb640fd08311ff940cf77b404", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "f311c7e7333be9eaaffcab89ec3d08c2b80814794f6c2fd4f98c0f6dcbf1f331", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "6bca6cd502f26827bb64346a1e3808ee154b2fac921c763f51fc0e06d85ecf14", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "8ecaa5444d8c85e7e819be08db2d460a4068f4ac996b3e70cd20e592043e4a3a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "5285211605ea34fcfe701c5565edb0ad3d1630c55b23d66c6b98b7e7ca3ed2c4", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "960d881144aaf6e006f0a49cbbea5c71c701bb8d06b6f025fad8f9faa2715505", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "21591f532d5cf2609aca3d2fa53b86f04ea55758df68d9663c5e8f2d048f5f82", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "281bf1e082e7148dafc07425aec95a991f51e896ae5a1286d38e8e1ec0c51401", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "444f10176539fe1667b69ef2203eaf55ea373dc05cd0a2cc5a5476bfa7aa0a41", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d732a6bccf02c5e3f141346f8024eeff0087ecafaa9edfc86f060518cfdbafa5", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "491f7675532d5f62b3009932e42c0b131ade34d475829e573700b394fa0286da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "65aa0fdd293ae3d4afe1558547c267472935537bad9ad1d0187f27bf04bf9191", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "7cd6f12b46ffdd0db1b295bfd2868609aca9eae0f770ff2c2fbfad121d1efb3d", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "3c546daefdf521ea98e4209482074f895eb66288b11bc4bd5fcf0fccca43b712", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "fc59b10e924d732485693dfd56b59ef2a78fd13ae202a42f75c70b47f50cfb74", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a0573a04f96dee00633d189d2a18cfef8caf06719f231311d59f6a90e1d84172", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "0330ee7b73eab93fa705184ba7a9ce65514556222ff65c3d40c3d698282cb232", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4c15c5bd3d33eb05e2cf2ba8432ce8aa38003975acf9c06e5eca0cdad419dc23", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5afbe96c3d008be0d14152e86d9fd382a1f809c14961e4e4850f938a19bfeffd", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "28be11d4366258c2e7196c2cf9502d40d457fd478a7252374c9df24f03e67ff2", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "48920f5c770e0f502c472f666e52b930c5b332aafbda26875801ecc56d1b303d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "7acf010948324f7da7b4156756127291eb242b3a977289add2700329f898ca1e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "2fc1df0c271c2ff3fba34c6de4aa46543adc3fef4c7af53b4ea350eab0ba0d10", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "944ba76db424e4a303b41043f14e26ec3a408f46384dd226a9aeb29d3648c09c", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8512dbcdad6c4099972de87a9703b887a8e0a1d699d11f5147db0ac4c8f94f2e", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "eb1f70f22b5998b39f545b4b224c44eb49f9646e4e5f95d04acfa88bfb120dcb", @@ -18229,27 +18229,27 @@ "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "cd4c24d302d9d0f903ae1672040d3bbe5848fb19cf2f1223bf81bfbf694430ae", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "76e8eac1fc01053b2af9a03cbf9991e3622ec92808a71fdc9a5697bbc03d08da", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "c18f700d5708d740c6a34b0936370853fd004832ae6a1bc1752ca8467e7242ab", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a181116fc0c2666dcea495441f57d2b33401b66d103dd24825e98a5388ec3b24", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "eddc66fc9b0e92ec4dec10122d745ea5afde175935744b98c1f3caebce2f1166", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "45ebf3563965765e816bf483f0953ad8547a8e99db18e68dcf0435c96a28daea", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "a06bd0ee40f357e30047b50dd6c33c293eba8dd07186f3881b822d4ff5585ba6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8ee33c6326fd6d42713f5609c0bb4b8eed8d8f7974b8ac3d4a60149eaf8fd520", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0dfd8da84154473b35bfac62e63adcb83b7116e1fca41e187b8939d3fec8527e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "a665822ff73ba71d31ef3bf1e32494b26db02ae154ba597c1e412303ead76509", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "034600fa22999d4fb14976730ebb4c98df3f0250824dd959da7753b9f90458da", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8fd78d3b89a509874f5219d7410a226b40591bcf17ed67434687a73831280d2c", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "33d41e851354b319b35d85c73107a688506ef197a4b706a22b0d8976cb1f0055", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "dbfb1226258a4e7b6859fb73d4134a90fc67f083bd6e91abb017e09751d2463e", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "e43e3a43150f24e863952c3c7c3781f16c75da73fe704621e76fdc48f3e50382", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ee2c3831c345d4cadc3bf32bdbe3b16abaa59d373b5a21642f9996f07bdbba67", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6b3639c16f597c7569772a4d9080ab024937e543a7c9298dcd50d167df7bc228", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "2040467f9271bc18bb97a4715e9a72ea7c4f17409dd5be58a7bd3dffc284782a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "c4c5ebad9ced7475634606416f8558b9da22daa88cc59b2c8e215c41125194d8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "186901990fe724e64d035c8a72a9f7a0997126b7794d0776e427e29de5b4b92e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "0046f7b9832dc2ac5d075cc172a0a006746b7c26118e5cd9a4457643d919a95c", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dde60e30fe682e4adef7071e2d313035e6e40180518cc586a828f73f2dfa5634", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "4066aa8ef7d1192607436e32f533724fa4ff90c108ebaef08381f107c05de5f9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9beebc4e60313ca9012ff07e53ec2aa7c4d5335270a8f5bb6b5117406930ac8b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "65aa0fdd293ae3d4afe1558547c267472935537bad9ad1d0187f27bf04bf9191", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "7cea9e36e4c5549fd23b413711bff9882a00ec6d6b135098fa9f17e8a2aebd3d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "7266aafa8f65b2235d9c250e62a455a1103468d1ba3115dc0d342175ffe6ebb2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "7cd6f12b46ffdd0db1b295bfd2868609aca9eae0f770ff2c2fbfad121d1efb3d", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b570e793166997dc38a2ffbe08f684c48aeb7a6261443480a4dc7005f90b10d1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a2a4535b13b943705020e78099c4e6d529bc76115a626f9f76d4a0c33c6726ff", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "b2954b90606603158574f11cd6f0cb7ed3cadc14c380bb07d35509e70c0c67df", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "19762b6ed5f35f0b6a42425acca636569683b37795c1ac3f69ae702369b96e49", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2f50b01c59e9892d641d0e5f1b7665a135dc1f08772c2bf1ef168dc4820bba61", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bbd4914f91434f608a04db10ae9906dc6153e62e40fb065e6b7809cde3b7af6e", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "5088890fddf0b1c769dd8862baef59184c9d4cf54b03eeebeadbf6fedaaa0e8c", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "83de207f8666c1c6fb984e8f0a91ece8498c00b64b59efdc44b456fb7e617f44", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "859c68d089ee79a6c76838f1cc25044abfd5278f5f6c3a5dbcb92cb492218089", @@ -18275,37 +18275,37 @@ "T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "71973a384a5179558bdfac990ed4cb6f3eec0b8bef210170c6089e20c02cb9b3", "T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6259fb2bc6de42591eee7d99972ba2e5e433aa5953300f489c22dcb5c506c721", "T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "656ebcb02da9ad3fc496cdc71c6341fd9365a1ff5f7716c01b950d23409c18c8", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "476a5103dec47d1cd92b07ad258f34228fbd4064cfcfe2f402b89ff9d1f1dc45", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "0d6fe654d7577986d47d8e1b57c3929766b9bb00909984071a9620d06b6f908e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6f8fc9a6f0aa979041fe2363e017838b7cfc52c1c845970edf862ab294171c8d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "fbd5eb92d8dd3bb5cbc58bd288c3f2eeba3d229840d88745e43d3fae1c6c555e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "01022a54c91d445d662640d286fe6a5ce76e3d076f6b78e01e2dcb1dfac25c46", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b444be6c4c7211067fb59c4612cb51e9b5e7c23f18fd5691afefe821fea43268", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b74744e766cdd32e409c0b190dde953a9c4a645c94b3e3d61f2c71ee8ad53bb4", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "b2fa6934bb9ccc54888c001abe940f4859ad6038a30cd4562b07281d33c62f24", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d93f5f414eb72c2afd940663d34aa94bf36637f8f959a9d4746d65c28bcf27db", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "4dac58e94608d59ea1f16bb534a78bb25a6c23dbb92daf1927ce22a12187a892", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "3cb0dd5aae387bb78b6857f8d42eb425cc53481924d64262d5d7efbdeacc0fba", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "edbd6a5dd48e94dc2af123662a879b2928f0cf54bb37e7bc87bf09dc8f5e8e96", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f0801006efc36180623cfacc1ca27be53e600bc4ca4018610722a2315b144c42", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "1f80f9d1c64afba405d8af3d67ad0fa7fbbe466a7cad14dfe33eefc29ac56228", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "543ba326bf07677a84e05f7f3277c3f605eea7410e6b18c8560fa3b211ff985b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d264c190ce017356a04fe1ad9c3c80ac86bbb5a20a71defd7f251492590e7617", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "62a29c715c550d8d650c5d2ef89f0c298d8f229f21891daa609665f80690164a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "2f29b86143c11e2bcbfdb98efd76a16a3b5fb75ba08e720ed4c578f0d5ac5e5b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "687159b9c1b3f063ef0b098fd976d3d265e951dc3c02514c707f821a27c7dfce", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "bfd5aab0e63e9fe5654f3d7908ba163e80366a88cb9984c52eb901e2b13cba08", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "2a26460ad58aede5a4b2bf8ef9dbfa07c9e85735b2a6d0da716c7ad9841b4787", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "3927770d06832f91cf0e51ec7b59eba939ddfc6ee4a265fe03e4f2ff5d5d2503", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "dc2b836a5f06184494867d792aac6dcefccd7207394b7ad9def421e3ee1e4e6b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "b3e87b5b5e4d0a8572b0a6b77f6ccd916ba03665c1304128ec2fb03be1abfcaf", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4de2eb2c8266dff4dfadb06ad2934cbc5612a243324a60c249ef727cf0b938ab", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "37193478dc53884057cca22805a6cae606cdda13142a15dcf50f59214171d26d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "b06eaac7369935dbc16272456e89d332fefdd9f35845538323915719fc3a2d1e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "56d716ecbf5e78b1b95818432d1669fd5334ec81b78094024a6592d278a4adfa", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "6eef0d1e2bbbb12716fa6f6863e2edaf3954540e24bc9dd8ed149645630349d1", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "62a29c715c550d8d650c5d2ef89f0c298d8f229f21891daa609665f80690164a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8bd4bcc4febf5ecaa85d63f04b70cf96f569a957254892e3cd95e6b12aeca2b8", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ffbbaf424b8ae2e8b72d3f2b79450289b9ab7ae2048d55e395b5a089853519a0", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6f3e536fb9aeb503d828ed0da7c7035b8be90d262645bb93c462fd83583e8c9d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8fb85843de6700ffff61161c19c47511f0d5a6e121a083d6c2b78417d940a4ac", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "04dae84a21665a99ae0a196ceccc2a2a065cfc66fecb3c6db6323079e7ee6178", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "410231a83de661ca006de49ccc5dcee89ebde856634f80fe720b6a1d2158d6fa", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "9e2e5fb018139d6d3a33186de110bfa8fa299bf2552a6eaca6789b0252cee5ce", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "47e80fade03a36affcf385c8291d25be6a7ee0b7a8e61d17542832c0ae2cc579", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0030010fe0fc740d83169106a0d54e6031e302e4dee3fe79d047aa1637ae3c7c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d191b3132ca433b188ab55db17bc63c58febc5e277ca58223553455313e4ee1e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ee36aa3aa61e43d1062945e43e132ee14790d844eb009a99a7786f56494a09e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "c1adb1d274ff5c8ac930b5efd1f51b250d79ec8fbdd17c2a737437becf3ad2a9", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "082ec5a57e458525dee6aebce562b3a2a0ff30967f343b0c53a10a4fce7b252a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "01ec7122954ea46ae2e5fbdc93ab240e7ea79330767282b91b1a65429b78fdef", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "e5278411b13bd05fe7e30926aebc095d76fdd6db21153a082404c7745ec9886c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e9fc60563dd2f5a25e8a9bfd1751d50c550e7487342f0981f64512ec1302be25", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f0c7201ecf32ae335740e72b868119781935b7793be5914c0861a09ebe5927e6", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4d7f525ca9eaba0a2fac0317f8d1f787aa0830a7ce732b6d7362bcd0e78c456e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7f39ddb7311b5a567ca0e9209d32fb8d0e73f630363bd0dc4d854ae42862252c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d4ae0b709d644b75ea577911ed334b331dd32a98dc60fe8558b8bf69741b0b74", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "5928e61a8c4168744824d50cdf273e7fe057031560d265741cc073e3cd13abdb", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "6a9988b2d5d85eafe0bbaa55b95502c04e081971fc85e4fcebdcf98bd8c8ce0a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "7d988f2cabe1ad22d8afd825f24c86e862de067043a1e9b0a04cd8da6db435a0", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "2144faa361a6b68eb87077781269c9ea7c79f3fe46370128a896eac8bfa63a1b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "e7159e74e546b8c39b9daeadce528ed7665dd371c07588f9949ecdbc96258805", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "7b987601fdd22f13e4f4c075c22b5d5b093096b169a10f0dadc264425d3974e7", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "acfe775ec0fa0191d50d075abbde23449db0cf3095573ec82cfde01e60bf99aa", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "69e9dba8cfaa630b4cddfaab51cd2761afc1829119cce8f2a96e42cbcff1372d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b91f11915250e0860c6fbcbed934eb8b64d0bdc2463c8cd3482d368c8b14d1b5", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "88ab14176af2072a8aa452682864773cb02f80c2eadbd924555e70e07171fc65", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4d7f525ca9eaba0a2fac0317f8d1f787aa0830a7ce732b6d7362bcd0e78c456e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "34ab7e77ddf5b9d72d0478b51d1f2189bdc40a7cab33a3bf2d154d3096867ffb", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e7cc38e109bd253741fe8ee3d20891b7c3e36c7e780c8bebec031fd318a6a9f1", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", @@ -18337,28 +18337,28 @@ "T3T1_de_test_debuglink.py::test_softlock_instability": "f533b6840f7f5b94c5baf11d12ae6b2e04a68efb292a67f8a7307f23366758d6", "T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "5f74c8e2421c3e3af6f8c3fed431fe795b8a8db7b83a95a5d48ef779df916363", "T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_language.py::test_error_invalid_data_hash": "e04e7f635d4867c08710860857bd99a1b50690bca0a62eb60a253b1fbf805b2f", -"T3T1_de_test_language.py::test_error_invalid_data_length": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_error_invalid_header_magic": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_error_invalid_signature": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_error_too_long": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_error_version_mismatch": "ab8a42d2322443af7bb558315fc2437f8c3ff84762675c0b5579eb2a79b30e85", -"T3T1_de_test_language.py::test_full_language_change[cs]": "e80f73eaf6f294b9a1c148cb23ad1a398051e36a26d66f8809774f0bb0a7ab45", -"T3T1_de_test_language.py::test_full_language_change[de]": "4601ed00f895ff75ff63dfdd96ca40f976c72cefc8090f6cb26feb68a87eb7a6", -"T3T1_de_test_language.py::test_full_language_change[en]": "1b4ab2771906bc023fe197967faab90a0502011d5a2de1158d12f19bbfe06866", -"T3T1_de_test_language.py::test_full_language_change[es]": "e8296a4d49fa05c32560d65582a505d68563f4e30725411d6b4da4c6a0ec9107", -"T3T1_de_test_language.py::test_full_language_change[fr]": "ecc398791047c183da85c433512afb0b8ccc84011f595d17ba93054483fc1785", -"T3T1_de_test_language.py::test_header_trailing_data": "335aa3055c6b2ac93faea9d0b04c69d9e64dde3b1140d336fa0b017c7587dcd7", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "6ea67a16636b85a897aae3692836332dd42f2f99729ee45a797f0cc501cfd1d8", -"T3T1_de_test_language.py::test_reject_update": "f0d458afc7a5163b57d18ed237e8e8b86472f550eca018e0cf653ed58b5d434d", -"T3T1_de_test_language.py::test_silent_first_install[False-False]": "8017703f780ff228eefcbe4b33b4c69b4ddd1c3cb620a94721c21d78f24eccf4", -"T3T1_de_test_language.py::test_silent_first_install[None-False]": "8017703f780ff228eefcbe4b33b4c69b4ddd1c3cb620a94721c21d78f24eccf4", -"T3T1_de_test_language.py::test_silent_first_install[True-True]": "620c9abea014f60f7dd8bca66f2badc8ee57e6f2154058cc81894a1b8679eaee", -"T3T1_de_test_language.py::test_switch_from_english[None]": "e52cf2029134bd82212443fd562170b371bc742197fb73a15d6e717cf95bd6a7", -"T3T1_de_test_language.py::test_switch_from_english[True]": "e52cf2029134bd82212443fd562170b371bc742197fb73a15d6e717cf95bd6a7", -"T3T1_de_test_language.py::test_switch_from_english_not_silent": "f5b4ffffdfede0554f79c02af5ea2091cb6d5275cf3554c118703cd14e844bed", -"T3T1_de_test_language.py::test_switch_language": "cdba76ec5e11898052afde505ec1d89eeb6491f3eea9a5c78d9dd0470e5edcb0", -"T3T1_de_test_language.py::test_translations_renders_on_screen": "01845138103ae1b0490d59edc22167cc784f9222939cf4960a1b60724e5cd094", +"T3T1_de_test_language.py::test_error_invalid_data_hash": "2c9c361d73bab1c091485d6531243e8e45b624d055786907d95aa3e7ac0689d3", +"T3T1_de_test_language.py::test_error_invalid_data_length": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T3T1_de_test_language.py::test_error_invalid_header_magic": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T3T1_de_test_language.py::test_error_invalid_signature": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T3T1_de_test_language.py::test_error_too_long": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T3T1_de_test_language.py::test_error_version_mismatch": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", +"T3T1_de_test_language.py::test_full_language_change[cs]": "a3a3e12a096fb0333cebf86336fcded22e89c5f29ab0accae36472aca6907e99", +"T3T1_de_test_language.py::test_full_language_change[de]": "2fb9cd06f13e6bfd7f77265ca1de9d484f5be23474bee3e9008474034acfb1ee", +"T3T1_de_test_language.py::test_full_language_change[en]": "bdf46f4dbac8af74ae3eeba6b34dedfbe6501e250a948e0700b2b8c467b62d0b", +"T3T1_de_test_language.py::test_full_language_change[es]": "03aaaf27f1f4949434241bf81687a88d42e449019d6de857c0307562746ae20a", +"T3T1_de_test_language.py::test_full_language_change[fr]": "9df1b2edcab533231f6bc5440563a1d3114d0b8f2515dda53192ad7d19f835c8", +"T3T1_de_test_language.py::test_header_trailing_data": "116c567c75abd93070cb47853ac07210b0e0f4d97b5940ada58ef365a6cc5749", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "3e82a66d01f8d4e089b794ffe4f9b71b945a062089729a5a9f16cdc525d26679", +"T3T1_de_test_language.py::test_reject_update": "2326ff9cef030570cc9a4766f3f481850bd20602337c20b807555011f3d60874", +"T3T1_de_test_language.py::test_silent_first_install[False-False]": "33f7e86757399d4e1f0454b5c11f1c217c4bad262a32e45ced47649222bf0d87", +"T3T1_de_test_language.py::test_silent_first_install[None-False]": "33f7e86757399d4e1f0454b5c11f1c217c4bad262a32e45ced47649222bf0d87", +"T3T1_de_test_language.py::test_silent_first_install[True-True]": "08c764520c2d77ec8d12b63f82a5ba36b0f7ebc2cbec7c874fad4ac343d546f4", +"T3T1_de_test_language.py::test_switch_from_english[None]": "9c1e2e0ba0bccbe4010e59312b25388637338d9dd1eee8d3ca1bcdb6109623a8", +"T3T1_de_test_language.py::test_switch_from_english[True]": "9c1e2e0ba0bccbe4010e59312b25388637338d9dd1eee8d3ca1bcdb6109623a8", +"T3T1_de_test_language.py::test_switch_from_english_not_silent": "242603b8b2406a7f5ebf08b8aa670c1eea7009cdc90174a108e9e85e667030ec", +"T3T1_de_test_language.py::test_switch_language": "54bf96f7b2ece87fe60546ffe878744dc04e580095e572d72e91ae06dec57838", +"T3T1_de_test_language.py::test_translations_renders_on_screen": "cce098c9da0ce2015c394ef8ac06e11612fe95fc90d052e317de81edafe73afa", "T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9edeb66428984c049d7d8a805868a1b50ee622a272b37fb8212afe76b550bf84", "T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", "T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", @@ -18396,7 +18396,7 @@ "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", "T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "0f323936e4accb75334b6ad75aff54822246d1e6628749d132eecd9dd0051058", -"T3T1_de_test_msg_ping.py::test_ping": "06b0b04c345ac39dbc1c07e3aab30d378443248e27761469e2d4c28d0fa359d9", +"T3T1_de_test_msg_ping.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "649b4376aa411f30acfbbac55cb503ae1307210eae26f21ac495bd7f33b10871", "T3T1_de_test_msg_sd_protect.py::test_refresh": "390ae32984df693f17a085c6aa8c458f45b67bcf5e8c5da3b78a6aaf32055f33", "T3T1_de_test_msg_sd_protect.py::test_wipe": "bf6e5a14b6c266354b13b235c8bc3433d3246e280e3e8c760e3ffbde66e514ca", @@ -18419,9 +18419,9 @@ "T3T1_de_test_protection_levels.py::test_passphrase_cached": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", "T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "90525514655e73caabcb61438091108691e1a65c3b6e78e1b214f5592abb9cb5", "T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f92a4424d068900e925e4e3303bea28b18b5f8046a1656c7b121bb42bafc546d", -"T3T1_de_test_protection_levels.py::test_ping": "06b0b04c345ac39dbc1c07e3aab30d378443248e27761469e2d4c28d0fa359d9", +"T3T1_de_test_protection_levels.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T3T1_de_test_protection_levels.py::test_sign_message": "1e20eb16978bdc9f7aee7d8d3870690c612c91059a896090f110500f984b57db", -"T3T1_de_test_protection_levels.py::test_signtx": "afede10067fb7275da7dc6d705a7ef3a2a958cb865befbf93da8224f5d8e39cd", +"T3T1_de_test_protection_levels.py::test_signtx": "044e43b7b182c0e2cf5767b449ade3464c1b2152e4bd60559f1fbaf1965802bc", "T3T1_de_test_protection_levels.py::test_unlocked": "a2c5dee044f0b259c610d37f053c50174ea0bfd233600f3a161ff98c32565906", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "f0e578ec05a877ee73468b41775377f1577d94dbdbd7167e0a04a54454d1a420", "T3T1_de_test_protection_levels.py::test_wipe_device": "1e945b7d7af2a531bb58f5b611755170666d912cd4396a9fe4c5ecbb7f206d9c", @@ -18453,9 +18453,9 @@ "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b2d433b6f27546cf0d3654c966da05570630743edd059edd33590bcf74a3df4b", "T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3ed29e74cb3e06c85b1278559435a44865bf0f5c68e1dfe3b294648b7d861905", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "147692961a945a4e028dbaa9721bb492cec200c0a45bf52c69f47efad5ac046d", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "2b11fdce6c468c2d6b627f687955c210a31ed21668e2e25bf293dffac1e73e6e", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "344fdd1dc16feb0a2b60b161b73feba91ff1755dd4096998f1bb1bc4302c1cb7", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "fcf3d3231a3bc913e2808331ec4dfe6fc55caebbdb88b0ab7db4e0f539774126", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b4e9c7930d56b8766ebe1ebec1a6f6952650d0df923526ef6ff125278be6520f", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4f3b598ede6c6d90e247074a8380021916d980b7690c9266e2a1222879d5f2ba", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "05121d236900445631cad6610f24d11c5cb5bdacc218d14db2ce67dd45688043", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "47cf430ee3d5470aa9e7b4d04a0c79b58a8356e662689f427e704e0542ce7797", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "85ba098241fae0873463933c7b324109811504c266ddc78c97a9cf03a70e680e", @@ -18463,19 +18463,19 @@ "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e6cdfe33b545ee13919507b6297716777030a3aabf1e34f68850c7a59683e301", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "de08bc5b4df8cbdd291817e2be75d26d5ce4e6d85f498eea048b3d8ccc192f4f", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "4e2d9fe07bc28da86d221d2c8560071a1387c1375fa354db1dd771bdd2a5e3b0", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "405d84e34ef67b0762ddb1795c6f1b2eed8919bd95b57cbb3b3079b1c3486b03", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "69ed3ad659dd6f17813a712f4efc7ac1b162fab136cf50cd8ee987c3532de843", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "69320ea4e2c3bd6d6ee2959a97ccde01a0f20b2972a6b4ced0a70855d5769c0e", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "a01963042fbab67cb7bf0d0a4683d0cd7a5b6f0b1a8a31ccad316e128af2718c", "T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "6f364f906fd898692efd14e9ebb840cb6748b8127bb47d46c5bfcacd4ca62059", "T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "d68cbf3ccd599858c4541264ef3eed3cbed19fa5dea43605b235054dcf28ecf1", -"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "47d5ec5a4cf12907681a5146b1390c88ec41c6f37eaa76fc663018ee5357df66", -"T3T1_de_zcash-test_sign_tx.py::test_one_two": "8858897ed00ecc96cc9faca290a9e4c63d6a6055627f689a9fb10aa19569f91e", -"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "de018154ebd91fc201015375dad51a50328df50cc14b8eaebef9794c34c31d3c", -"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "23e004c951f6bd8768f56abfcaff501c36fcb496549b7856cabe9e28a0246d68", -"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "59d1dd264d3484228ca1a0b6d60de89348d18c880bdea41c3d6c4c0fe3bb3f8d", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "30a94463a5e29b80e5b14c63732e5aed747b3c0e293b26792872d86a0909efcb", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "1add1350d61025419342badf48ebd3bb195f6cafbb468cf73903096fbe02dd4e", -"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "193538e211cdc2ee22ed4321d01a2007d22fe8c79e6cfeb92779aa330bf227cc", +"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "92d56b3396d2c9376b80b2ed14e367cb5596a4a34c78ac14d8faf8b3063a5110", +"T3T1_de_zcash-test_sign_tx.py::test_one_two": "058454cc90d51b354548b794b15e2d8ffbb198f2ec066af5d6206a0bc5a107f5", +"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", +"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "41408995aa0d057f1c535ebfb4539c381d36e420d5a5790d43955f9c8b9552e6", +"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "92be155678955e634de05ac5349c6fa38ed3ef6adaecedbf5a0c00031bdd2544", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "cd2d7ee5eff015846fafc86513a5c111ccc00348054bd0815d2d74381afd55ac", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "9ba6fb8462930c9dd78c3142c0b25c5a0708c30335b487287be294b479113d53", +"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "b267a7f2994ae0332b362c4d186bd538f49910dcf5739fb8db49af387a0de3e8", "T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "fa3d667e1439c9c2a475fff22d94e330c14697ff8dda4bcdded775492cb40a90", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "ceac9a64c9aff8a4226e40f068ce412556eb582d909a9f8d401e83ca10433d77", @@ -19758,22 +19758,22 @@ "T3T1_en_test_language.py::test_error_invalid_signature": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", "T3T1_en_test_language.py::test_error_too_long": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", "T3T1_en_test_language.py::test_error_version_mismatch": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_full_language_change[cs]": "050f3711f004da563ee47c55d12a50c07337768a63b27fff9f832d61bf4fbd19", -"T3T1_en_test_language.py::test_full_language_change[de]": "637494aacf526b8c6465a5c48a35eee4fa71d90d9f90d7c675c555bc5df75442", +"T3T1_en_test_language.py::test_full_language_change[cs]": "b67104363cd1dba59dbe65a4d9d6924954a1c0ae9a279ed6a52fd7f18045c5be", +"T3T1_en_test_language.py::test_full_language_change[de]": "f62b6aa78d2b614e28ec8f64ecf60733b1c76fa7631e53fe414b8015b70a4094", "T3T1_en_test_language.py::test_full_language_change[en]": "5f6cec419aad5e5658f6fda45c2cd40fa4581823e7f9f0c4199970cd179bfd4e", "T3T1_en_test_language.py::test_full_language_change[es]": "6c3c6983dedaf60e8818c0acdff7f1ba83ff9106333d834b8bed02d910bf5b1f", "T3T1_en_test_language.py::test_full_language_change[fr]": "7e1f16d84163fa6b8a8acce859f5c5e97ded578c28f75629e4f9bd587cd051a8", -"T3T1_en_test_language.py::test_header_trailing_data": "476b737d8c779501707449858b7dd2c342f151c99a9a9114a7f30392716b190d", +"T3T1_en_test_language.py::test_header_trailing_data": "bf322715e91f7fb147f11c187d88813f6cea81f520030a9c71ac7fdba1b39f6a", "T3T1_en_test_language.py::test_language_is_removed_after_wipe": "9858fc6e1eb3aaa9f26d839c17203e831ef57fd5845df92e346130ae1e7b87d5", "T3T1_en_test_language.py::test_reject_update": "78b8f16e00c5d653a7d5c0929d21ae8ae1c76798fe28f0eb6edee8e2ee8b0202", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "af743f998d2bad1fd08ea45277ca281ba97a4f344a7d4f8295e1a3ad7590b268", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "af743f998d2bad1fd08ea45277ca281ba97a4f344a7d4f8295e1a3ad7590b268", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "8316441c80b5e3971cc007056a847874829c38a19c486bf7f8e4487260e1c920", -"T3T1_en_test_language.py::test_switch_from_english[None]": "51c78815350308c7687c9b7540d507abf50c7392db7ead05d26446c71612c96c", -"T3T1_en_test_language.py::test_switch_from_english[True]": "51c78815350308c7687c9b7540d507abf50c7392db7ead05d26446c71612c96c", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "c72f0c97900e9ca2b7307c325347c1b1936af39fdbce4d59b19c5d930403fb67", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "c72f0c97900e9ca2b7307c325347c1b1936af39fdbce4d59b19c5d930403fb67", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "c0dbdca95577cb4da273c873d272269141f040bb06a6585cee0c4ccaa61ea517", +"T3T1_en_test_language.py::test_switch_from_english[None]": "2d3e384d3bf18cf73eab43a3a43e596a3ff2a923390f9f5430ab04392fb28913", +"T3T1_en_test_language.py::test_switch_from_english[True]": "2d3e384d3bf18cf73eab43a3a43e596a3ff2a923390f9f5430ab04392fb28913", "T3T1_en_test_language.py::test_switch_from_english_not_silent": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_language.py::test_switch_language": "7ac1b4e96f1e7f0726a953df93a1c8e436de37148bef4bf8a226d3d8d67484ef", -"T3T1_en_test_language.py::test_translations_renders_on_screen": "fccced5225b6ed868670a35d60a637da5284607e7065232286e50d91b22012c0", +"T3T1_en_test_language.py::test_switch_language": "e26b247a181f5a3cb36b117ee3fced256d6276aefd990095b0453759d0fa76bd", +"T3T1_en_test_language.py::test_translations_renders_on_screen": "bc06283850dbfad95bf96a97768c276df1543073d41d89909097ea2fc4f3f9ad", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "8ac0c969e6d8a79257a41d4651dcf62f936e2120547cb97c6ebdb8d3e57c0cfd", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", @@ -19896,11 +19896,11 @@ "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "952c904eb590eb76d91f0cf89919faa364c28fea5a9bc72fd589fc359db008cb", "T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "738eeb4b4090d06eaabdd10ef6b1a0371b9524f6d1055b3c32ffcfa57f26984a", "T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e6c4e554b2285f7f753b16cc04eb8a1c70baaa76d2b301c7e104ed6b45d9bb78", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "66018aecb48939c12eba4691b10fc2b32afb309a018c3af154a1ed032bd788ff", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "18cf16ebf22cbdf4a77fb83c12e43613cfd9cfb302c5c09e66e1ebd05f475b56", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "133143384228dc73a9de577446267ce0454ebd7ee3dba7ad97424d365e06c7bd", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "46a219667989a2a516a06bda8938e135ef73af74cefcc4bd941da28c7aedfe30", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "18cf16ebf22cbdf4a77fb83c12e43613cfd9cfb302c5c09e66e1ebd05f475b56", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "46a219667989a2a516a06bda8938e135ef73af74cefcc4bd941da28c7aedfe30", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ef4f759f62a09e822c01cefef03947f8369383260243e0f00de2c3ba4915dc13", @@ -20462,26 +20462,26 @@ "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "3cbcd35d46df53249a96e397ed7cdbee67810bf33c98d13bf76f484bf2f59012", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c3550908023a0a4987006a293f94f397b5c0daec44032d02b71636595ca799e5", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a78d017a315f664a451974c021db8b9c9f0457e1eb698e869acad0e2162d1095", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "50a794787896e853d1fff378c9fbacf7fb7bf7dafdb870f6d0c9ef21e32d29a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c52659fbfd47f85e54cce3d840f8ee104fc422d64cc9cb0dda5b5b02aec35254", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "f967af983e643d1b72f1c0abccf1e4d22cc0c37de57de1d1df75ea2fdf576f5c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "f357b97785bfc7326016af10abd72ab01c6aa5b1047e5a17c0907a08b32ea33d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "8de6531c14ac558fa5537641aa724c3223900052c587ff8d6e477f41c4c22840", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ad2e5454bc7ed062c184d24e60ed2647e4cab25a00e83592d95f82387aebfc9d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "564b65adc2a7b998c44f555edb691a170a427f3f12fa6b0e0e79ec8287459c68", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1305f49b6bf46be3a07db53a703093ab2e0ea9b1e849b5d794e067b5313d4195", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "0b3e4549082c357edbdbfbd8b997c2eaffc37f0b1d062aa58d6e90e15b6c3a5c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "27fea4f04ad5ab9330648742999bc9e967d5417ef8789a519cafc36d914db433", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "381a0c1089163c59f7352e237718048809d125fce59ccf8679d1f36becda4264", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e38e955d39c3ae50a185ba701e53ccdf38011a163f3ba9327ae9a21d3748fcd7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "a2c25722cfd9e5013a3a2bcf9c5a2667826c61ee46a5bc63158baa7be6ff7a05", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "049114001855edc019de23e2943aeb3da119b57cec3ac0f26ddeb25fce147794", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "96903906ac51848ea2b4e0af016af4117a746a4a4d16da32a223a5fbe9fe1208", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7b6e23e8f6b61c473a302325958e049812adc27f3603c6ecd4d5c34464fe251d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c0ed4ef7f244154ff866cf852d92579d680575771870d0f51fe9895c1e67a966", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c346bd1a848334ba44592ebba9726518542b4b67ca40ab11a41da4aaa18c4dd2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "219886527bf17d25ee7a39a6280def8affcb6a455d6a5c9099db2b760a213752", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "ba4b4f431b00723aa78f4c6e322863d95f63064be86c4f4556092e165ce18dee", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f5861777419681afa594b7d2fadb0f08bd83a3d8794f5a082fffbeefee4eb74a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a9965d207bb2385b1174f4cecb16a73c49bdec344734df0886978a3b3529cbbd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "388d35b0e0eb15b5b39aec9db3191758d2c3d86e4d22036f4a60e59b15b23882", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "feb70f29a31e13655840e78e746dfbfd9ab48289d01167a26273df8a4008aa83", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "86f6f626447b0f2065e34aae133eaa31e66d79e2459854a2b44fcd9b800e0575", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "7fe80ab9eb77acd148cea00ba370b381bb5baf9e20991898d7015763a9364e76", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9cfe0c547495d9b209d67e45274529dff8f987e185dbe92cb5ad7f4ae8639dd3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "4ee28072584eb697ab9bdc9dea77e68c3b307430dd0ccc7752507dd1f6a8c7f4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "c9c41d2cccca4bbf3afda0199ebfb59b169c7d453c05b9f93d2c388f92523325", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "73086a92bea891480db93e05e8403fa829d9a22f7002aaba08b94f8a322019fc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "91fe68b86a41637724b00baf46b419134c19466da6f0a09a79c9ba8f4ee620f2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "0a58945755af91066f91b8038abb115e6f6940812718ff6350ca2af603688be2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "40d2967f3c624b30eae7c31f85b6a81bcee47730f9f3199e8ac20db6621ca975", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "60285715c6450edbe423a19e8b0df400d5956c1640680244a4347c91ac6d745c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8481e7ec34e24e41df8ddc65b6ebbf64d9a885e5dfb463d775cd7227b5f59334", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ec692acf6d364ccc1bacef8e588cc50531abb91151552f80ace98e046ec57285", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d1b8c40eb2f687ffd20c54f468df6cf631c7102690c312ac107d86777febf764", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "a5880bdd9b88d557d8bdd0d0ac0d484c0b02ddc0ec7f42b04b7c74e87607eb6f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "2b1cfce042e8a3dddd7b6f8832af53d84ae3be67c79756d0568303c36b4acbf5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f4f420a89cdbe7aa3ef5157aa71edd5ad338bfbb1487fcb882b07f0514c5016f", "T3T1_es_cardano-test_derivations.py::test_bad_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -20500,222 +20500,222 @@ "T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "808976bdaf1baee3458322f98b86f0ae76971deb1264a3460bc7dcb009236629", "T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "8c9721daf468eb1ba416fc7074f73c5742182a58a01b174f8f79b51190ae4f88", "T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "d89c872bf1afc6275a1ea61229e01d8ce455478858296cb64eae09570a68f62b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "413a15dd6ccc51bf64d52e6f5c14ea54ecd41c34f75b7e2cf46fa4b64943f46f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "76e2a8c9b109a0e6a75cabafd8561931e80b34ca005645526fe6a5e30e96d424", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d2a31aeb78e1d6f7c90f3ecc46525c4469f41d32debe11ca5d3de83427c4436e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "1f31cea9daf3c13c20a19ce64dab137dddceeda44accef64ae40a0c26fbe9950", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ac3dc1c281a528b34c4442705756b1d5c6294846066e7d38f9cf747585166a20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "b138448ee9868c22fc49c4ea75d43a7cdd422012653fb8449248a3529b813747", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "11cf13356688eacf116774e6124cd6d440200819ad8f73e7d5e7c8a0438dbe6e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "fe5d038278db48719f32c0923d624dc9f2a02b5241d93277c2db6dccf14b3f52", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "c25aee154ebac790f3bfd6b65d23222856ed9301ae509fe7b3781efee2b7bdc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1682920d2ea63979f4268a07601fa701fb6e6bfb08df43bface3a884531273ab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b30ad035fd7ea1c11ed5c180a7a0245135c39c400883fea16164235757778739", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "886671945d5e537bb5ac2c6d10d8f568dee6a6f1d9344e3c33ce0dee1355272f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "886671945d5e537bb5ac2c6d10d8f568dee6a6f1d9344e3c33ce0dee1355272f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "873ba30c68a474048898c971ed0d16a3e25a7535808b524bfa3bf388d5467c72", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "35feff5ab44abb461b175273a0d513eeec546193b9fc3cb42cc2163c2e01faeb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "5d79187f2c8d7db652a032266b4f1657860574d30d7a3a88f82d707a164c49d8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f4fe09033079df3ec676c15f94693837088bc3e390a1089cc1e3e76743f04452", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "74128098f18a51044896b693a469c7e096fe6be9fbca6a6b620b726f08819a83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e4defa8aceec7633cb3f7c0f4108205837721a60c71c52e34a08f094cdabb4f3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "4ee35f06f68aedd9eb0956485f7f8752e57dfac97ffa1b6248e20e453fac32c0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "400b9e4198eb55c1606811388389b5439855b789279544a1598144b8e983daee", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "b8df920b5dfb4704da887aadab1f8946cefa63cf87b6a932ff32535493bd30bd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "74128098f18a51044896b693a469c7e096fe6be9fbca6a6b620b726f08819a83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e4defa8aceec7633cb3f7c0f4108205837721a60c71c52e34a08f094cdabb4f3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3cc877ee329430c5687fdc35cf12183197694a4edb2f6059f594ad9e471e556d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "fe597eaddd1750f9e06fd577e121f6e511c331e54c2b181197374d1b8a3f74e1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8b9dee7d2b7147ca25f0fbb0f7b8e7c9d186412d6724e77e8af166bd2719786f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b5c4f6cd9a16dbfed95c586c44b9d331246b62190070da4aef5fe888fc442ac7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1c70e231c145248d96e8d1eff9296028c77e68d5bd117cbca9edcc6a2a408fbe", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "f2309a7c04c00d6d1d9ce407ec9d9339baf136aa0753a35fbdd91e8c16cc124d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "0af23656acd628445d6f292caedb3809edbf7f3e46fb40244a5c60ad473ba2bc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "34fe7657076c4b09211dfa0450fef8e72b504b506f56ce1a27a489de7b591d5f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "451d172e41113241d0a537c97a5510d00bc7a4bee260dacd3e16b51fa567f6c2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a197d7acb899d7b16c2de9fb1e514787ce52405e12c4c0766f7d94ac06ac6873", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "9c36995a872e8092819750c6187f2bd4445e5394b0c0eee5eeb28b515daf833d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "79a26aa0ebaeb305db93709bb2ee51a330c1a5cae73d01e86cbd1e0a4a534c22", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3efaf7550f90a730606cf3d1f636d8601ec1c27e16f6c8af17e6e8f13cc4115f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "de5a01bc9b7c5d62fa770ca40dfeb0d4ecbe624dc3e56fd796bf2490638d1818", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "33b013f9566017a3933880981b101a290619ae04b3eadcbacc8326dff75b7052", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "bfca897c27e658c7dee8ce58e6bd6439c601d1dd4061a6e159a193951b45ea48", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "8a67cc26d96aad44a4cfc9c5d655fc37587b007428a384fa9ab53a7092e7ff3a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a2713df177621e5ca0b0ecd1201b30916d827eb71da477820daee526dfedbfb3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "cbb004247bb1d690be89f4136ec0188d62dcbd875827be0c1405454512305652", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "103ee6a5112c7d7dc118e566f640eb05517f32d23b031112943f22800481064f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "b94f77edcb77569967e025ba36920ea00c6a4f5e2f3be68fd7289154a926c58f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "168d2cf6efca9c6bf3732148e227352265b3f09a01ab23c142effbbbe0cc6d94", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "50b5a6bcdd8f4c54e02a4977d6aebfcd9773f2bad3a96ce829a4e7e86f52d0f8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "95907f22bafae7d433cb1b07b255a274d0fefacd0cfc51379cb3856d52b4bfb5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "529ca9c2069e5515b1d843401765aea21be1c33efb08f1a7e361196035981ec3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6c23144a9fcf6dd93f7d839947e20fd10da134608abba0f75f559562075b3de1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f6fd673ef118cc6d1fbee90f3a8df7ccab136a3b556715fb5f2dfb687b60e858", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0a06941a050de72c81c43378df674128f47946cd3268234171588b4bfcd28f87", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "6b9bed854907cfc4bc33b15ead0ddbb9f9e6ae4d1e3c3a61808c148db22a1736", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "33dfdb642b3d032a21c517e988f86cb9d01b389fc7600f60830a774d87856a3e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "c043308eb75974d5e71e9726e35876cf8182014dbc9715b64c52464798763039", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "7e274b7c38dcd8022744e9207d93817671b67e47f15b679e410bc6b2cc1b5dce", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "e7d5514e79b46fbc21ed0eaf44d082158dd1f504c142cd4e94b9b78adc4ec940", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ee25e2182310d50b9de7d0a94b9ab257c67b884f586a56bc38eb7c151ab22845", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a2ecf4c49e435dbab49078dbfadc4445ee81baea0ef2ae0271aaf101e7115ac4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2fbfac7b62d2923c91a0b09bede5ea61d7ec7edb0cdeeb918406c30fd7c2955a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b266066bba29d1bb1a7ee75a95487807bfbe9a7ea2768c85ed434b4e0194091e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "4277097921a767e6afbb601df0dfa530de08490c0fb4c0fcf3c053d16c70b642", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7861daeeadec05120df682370ef0f88c077397f6ff7233582801d0ae3178ad12", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "fc2093b241a8fb682b348dc2d39b68dceeedac2d180757cb05f3712acf299c4b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d630261db05b7b6e89480850b871df94cf4ec1cdde988a6be922e14ea318c616", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "9e67a4d26ff7f8ea2b01942bcff8e4903091900121ac33e9a2acefb7fdaa8ef8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "680740b1e6184dd124a43f95e15952e20296eb3f2bb249c5625b80209bcce8ca", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "3dcaff1436e1619b7e1e6ab190763a703aac410f179acb64a9aeb76706ec73a5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0e6241b915a02f46f56c8198520dd04a722f0fae39131efd829d1be4a6800e66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0ff831d87737a6ddf83ed585401cb56198d803f2351b7363a0eebeafe522c28e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "d8406bbe3201d344b8b2cc67acf2c5c1a60e3eb44302d1e1b524f238d323c747", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "d8406bbe3201d344b8b2cc67acf2c5c1a60e3eb44302d1e1b524f238d323c747", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "578ac82a08ab44641acbf042caa21d6180b3c769da6d6ddac773a5009f019d45", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d7034b0a356a709790afe298d8cf084a8ad74646e744b05b12c4e3eda400b224", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1cfe630720e91392e370646a44d4aee30a95a0438d5dd9777af55e94171cd34d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "40e47914b10a593f4381f30eec61f3ed8bcbfb2706e594ad87c5ca38da8b0e0f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "0221cd9be44dd05ef635d7a9743d74c42884a11563ae9b192b0f979b13fccdb5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d444a9880b1fb832cd346f2211c47fb14e3a627135eb7940881bf4485257ed64", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a681ae0d202f031b9d4c3815468c1d5ad550b7317f3b7e1e2a34ed932d439e20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "54bf05051f0563e1d449848504c86e9920a5d94ab4c11c9ec4e7cf6b60a01a76", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "50f5f4a06c1efd19639fd28fe34c5dc1248aa4b06c1c7a610d8cb7bdc48c9a2b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "9d48a1f061271f4cb76affcaa5df3c22f03fa572de6d45509b7bf3a950265d46", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "413a15dd6ccc51bf64d52e6f5c14ea54ecd41c34f75b7e2cf46fa4b64943f46f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "11cf13356688eacf116774e6124cd6d440200819ad8f73e7d5e7c8a0438dbe6e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "906254885716b0b3dda7e84997c5088b7b8d1c51527c5a15ea6a44cc99da0f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0538f0a988f6861777907d40c5a8984fa0b0b99510c7851215d727946a30a062", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4197d8e569897ca8d08f9bcaeb489501f20f6571b7df0a5b9328a0cbdcc4d0d9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "474f42ca872d0510353365a21dacf081dcacbaab834fb8d959cac90c026775eb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "481ab377941c08d97a206616cb2f52e37d573759475dd91d9f9aa1b9709f2ff6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "92d218a0409671c77c3702e8435fbd3f97360b088afe4bc1f2c11d41a32e942a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "69cfdb39e02665599c0168d69e0419a0d3601604b5cdc2c1d4ac00c43b373785", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1952410d46ac1e82f5a941281bd3459016b6e5dbf7dc4ded6222114d7bd13b97", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "36542e8846977858b3eae09d937759b7367393922bbf6b819bd305d24cfd0095", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "09845a753675edf5edbf92cbadfeee40069e7a7e40c015f62b087b94610ebed6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b49abd13fb80d26ea67bedbccb1003893e7aede5f58d7cb42770880a4a3f1e81", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9c850c79e3863eeb69e63a613dce58bb680f5e0a41c1f59bed3e66c38897a17c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9c850c79e3863eeb69e63a613dce58bb680f5e0a41c1f59bed3e66c38897a17c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "a889fb44d76197b12fd8deb04a917030c0031ead49dd0c295e12f8a2775d088c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c027275b6bc9ec1b68a5076b9c008736d59e72a4bdefbc71dedf37195c900776", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "c74a7e508252d2b4e5a868756d7a86b20924da1bfa640b772d06bf005c452d57", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "bbc51befed8106fc093ee8429e9ddf06b0b150b1a2c42411d430b1ee236694e1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "4396c70da4293ee86e083e6f1c430c0f89a80ca59f8615d07af73371aaada577", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "1f062bf1c22f06e53b10c1c90d9fdd3d1ef6d4c94b386794f0e23a96a46914c5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "75d014e40c761118e1df576297d293a50b611a01023317496744dcf6da043e7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1ec8a170b0af13cc706f4bd9f70078bb21c9dc1a7d681edafad90b933709016b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "106a184d920dc0daf509235718edec6067843123150bf2d6d3c6680e2d50155b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "4396c70da4293ee86e083e6f1c430c0f89a80ca59f8615d07af73371aaada577", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "1f062bf1c22f06e53b10c1c90d9fdd3d1ef6d4c94b386794f0e23a96a46914c5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "8f369d8d8115123c1a0406f3bad78cf0cffff2f4f78f12d70abba83feb67cfa3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "633b16346e144adeb63f7e48fbd64dc38d81b81b0454cef96ccde44475688859", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "88ccf7795d9c3672004775c19429e1f91d222ccb61b8dbcd108ba55c0d9aa363", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "865155a1fe4aa8c8ad94dba40fa79312c1a3bf24b42032449624faf7abd7b55a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "39d58ca9b01cddf76b2757ce9847073043eab6353de0929732c0e7da3e926845", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "858e595c5dd8b5d656155e1ead3026e79f790829c46afd8e2e34e2207cc8f9bc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "17a392b541e633f9e3833c6e4fa2b35e6aacc55398e0db210d5c440338de14e5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "1f98b72d81309dd96930a2f05e9164be1daea980722297172c0e723b2d38bace", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a910885ed3480eaca4a2fe013acd6d9f3d1bbe6ea3a9622e7f02f4b2bf9879e5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "77199b22cd5981363016b0ce404e42f660833b133cdc62b50b036fcbf5f43777", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d223c3e651e70fe78ec3e5b6b6d3c3fdd06fdd4cfbe761a1b578f270888015dd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5278b236aaa976482d2f5193209457abcdd51a0d472eb0896fa9665d7f2a9461", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "14bec6205be447427374351dd75836fa82a0183f820928b9c48bacb474ce9305", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "9e304a0c5000f07bc255d5d652081ada9804920ad5b2ca6445c4a6740a0ab348", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "1a55f71999d34d82b2298beb67c0d94d0e2c788f20d39b45c47aa37ad8fe6dbe", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "3411b5d0461d3ec2e46645b3fac7d26d2fcb7434eef34b0a7d1906a074f8b2fb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "81940226ebad77adf617d31ba9d3285c5694b40cb22283a688c4bedd4d85416e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b3e6caf7323cc679582d215d37baf5d4afabb31d3302ad82c1a1506a5bbc0cc1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "ae39e305f5baea3577952a7ac3149d7bad21f7ca3a7e811792a9f8545e1d243d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "355b16ea1d5767eaa15150763816c6b3d25e4a6dd41bc92eac39dd4a225b6921", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "20f2a9a13e15890f1f669d197289e2b117212621b30609ae948ae9f7ec4dd691", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "881762f87863c232801013329ba1765a49d8951f6d69ed4d64734ddeadf1f8a2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "b020f42b30654529d1eea376296eaa6cd8e27c2f1836a26047e39a96c4884e0f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f8e66dd4e729e7ea9fbbce73260ac332a0e4c5967298adc077df5182b42fb106", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "c3207703c436bdfd3e1d4943f58103a7577b3e65f40b325fdca2b647968203e4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "ceac59a0f1582a21be84a536cd8593e960960e56b488a2f54c3b19d656d2ff5a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "6834b411d88d39e6f3071a90f46e95e4a208f65cfee2127cc8e37001557c5346", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "5a16a64f3140f7c389b0fe31130f5f294217dce66a3baebec711b124d4250794", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "604389f34dfe2e0cfffdaeb3240734b9d146ced9e983551e728ec5673812d2c6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f8055fc3d0e8cf6a7802ce737b364fad69bac1f3290d9aefc52b75d07af57fe4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "caf41f71a9b3fa10ae9864a87fdc7403d48d7eeffdea4eaecfea3c2cef3f1f72", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "e2916347fd20d8f5407363b185d7c4e1341abdfac217015316cfea4d16543c1c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2f3e47b01e1957f356b6acf24048281af7c7b3889e4d16983a98feceaf02430d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ae7136a9c82302968e88ef958d21256b3963791009770de828ce3837b98e2186", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "ca34e89ccd20410e1301f864c9371c9be3e63991cf9c299c441c83eb312498b9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7acac1fb4aea9ae638e70890863da73e371152253a22976a2b17ef88a274df0d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e7b6abc9b166d7d586abe7f59a17d099fab1d55b5a2b916a8e1ad30e38cccbc1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f90b073e61fcb1f9174be4a1e0b40e290e7b00647829017ebf6e7ce62b067a61", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "540d3d90cadf5cbd9dd62d275114793716ecd2fc5d98db60020f23887c78781e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "3b4d6ddbc262f039cf0eed62e3db249b9113ff0e13ec1fa5597729b5e325478f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bf84aedb1f4a63bde4bd13c45ed4645696563362c9b84a1fc8da535f1c02315f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d91a813a0768d73f1d52029e99ed75987bc0cf744f1da3700f789f6202917666", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f7e6639d7d13d04596ca456f4b6df3937a3c9816f52ed78d27122b4488e54b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ea63a77b0b42d0491b6dfc49f78ca520abe3456a24c7161de3f32ccce06714fd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "0a1c350dfe8f70a89405d567e142b2667cb270300d9a15500bafeecd85fa8779", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "15006775de49a2fd64a90eb41164d024643ca5f6b9879ac0406b54d3cb960645", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "069b73ac6fb9e1ca1cbb5d291b3d77f291c9907599176eb58c8039ab21c8db2c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "89f6410ea4b307188913b901004bbf4482208e7f04c3b08ae0b65acc849cc6fa", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "0d9ead5403a9c51ddac922f4881b0f0ea6c15eb63019cdbc04271ebc8e6c7289", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "f1a381132fdaa62a6bc040a0411db9aa01f464cc5a331d6e6567ad7fef74b2d6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "3dd406507397365c843e963920f766a9b3b8bd02abe1b2db16ecb2f17ebd28b0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ef7305a7e9aeb66d1f711884e0abcdab9b15ef3af796e11ccc48f46dbfd82ecf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "0675de135f5589fad56556fd149906765ce742c50c31a2c6e16e049d96f4c239", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "906254885716b0b3dda7e84997c5088b7b8d1c51527c5a15ea6a44cc99da0f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "69cfdb39e02665599c0168d69e0419a0d3601604b5cdc2c1d4ac00c43b373785", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8be7fa5e6412f9f6a4b37071bec8f8ec2664a5885bbb0a02fc6d681701294375", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dfbc8fc7e896305a4a29c3984c3dba81ccda7ea67313592471c2fb6682d4e010", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "d9c7ddf090b150bf4be2bedafd19862811affa5f64d03b11b590a1de94b97521", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2caa2bb57953d0bcc4f2c81a0351371870cd76e3478ff9c23ebc6b8fa24cbbf2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "55870ad7df0888093efce97e014d36fe8ae081f613b77ff9a647e7dd953a4175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "dffb92fe8917ea7cbeacbe5570cce24ec3e3ddfa9385c480d057e10b0473d894", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "ca08e8c1fdc7772ae6bce2f50bdfce2327932b183f71322f11dbe116ea5bfaf3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "86fc4166e1d1ead23175c8e48eee70a60f4acc5cc8142c4a82e200db381fdf10", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "e6cec0c99bcb6d6e8afb9d4ff101327a43793de4c75a2be5fed828b428867cb7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "a755faa8ec9748b7ecefd5795700c8f8c50bcbbdcc3c55437a369410f0968a48", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "7b06ff30789050b997536963baca318cc1a9d9f781f4cd6ae20b3abd998cfb03", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "b03dccf2e7e4a4fbb6636d84054ea7dbfa065cbce7f007af7b29828100a0ccc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bb0c17d8ba65bc5c5aeb1fde66daf27c0aaa4de71a594c6dce9b4bdb8af0bb24", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4d9d423859f83abbcbef2d1e5eaf98e10904fe4d08092c4d04ff8195fb0f7745", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2d85b74353be6131476adc8985004fe23681ae510de25e2aec8ed7d739a11dbb", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f9516613ae8ab38066c990b921714f5832aeac1c6f9602044c8f22c8f3b96b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "e6cec0c99bcb6d6e8afb9d4ff101327a43793de4c75a2be5fed828b428867cb7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "af26d3b94859b635f8cb0674dc6ec78e46bf71ca160dc993af635eff37cdf7d2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f291c4ab7847dcebed6784b1bae5f1f733b39cd59a95c750102879f8035c1af2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7f5a1595832c6fe51ef3454e6e339d2b6f3c17274835e608c467a079a213ca6e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "e47b3550509185bef278cd6d5fd2c845373aa9d359cd02a2b0cdff2912e9fc13", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "1fc92af924f90ffb6788260a33f8ba72fe72a67299f0d2eef4d5d4fd3b61975f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "f07ef728bfe79580e10765936cb36801e6d59cf7f132868128db1ecd15aadd27", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "adb35f7d3feb3c733e0fa6aaa5e370a5be94901a9701d3c604578b6db8239d4d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "7b06ff30789050b997536963baca318cc1a9d9f781f4cd6ae20b3abd998cfb03", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "5c8f2e5d6f6180d3cb828a26320dce6c2ddce0a93dcac90b4cf4e9841b77c483", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "ac72cd97521dacfdae1851e31027008f74431fcc5c6814f5c5f1b7422b642476", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "314d0666a5d3a8e6600d07ff71ac6ffbf2127e896223866506e632d268215133", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "92862e04e5429720ea9583f073abbfa2d4871f79bc4d9c80ed4b9cb94df7019c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "da1de59fda2730294368410f3087bad19d171790f6716dd96ecf2a08d83a7bab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "2ff2adf5166ea9b5c1bdfda5f1eb5bd395232741f2f7fae6f856a98dcc143073", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "496858e1ba82ace8a54976081eddb8f6bdf70bdd6a584a65fd82260114e4fb8f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "b392fa8b5367a1f8985788b31f9029444f89c5eb86fc80e307db860e17f3714f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "5819779ad5a4764008315051e83d82993cd5b7635641c07762bc25e51e64169e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "338fce8e723fd02a785254529eaa473e25a7d8a5a45b67b187cc5aefae253880", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8fb9bba3d9da20292503a3569283311069c2cb2202c2d75147bbb6fac41c875e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "36d4c0d597d2658308556f0dc2654474e1c42abebb8e074bfd7df3c7b1813ca4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "e6f5fd8c146f9152987a892c0f01ad8da3700a50c07be82b547ae6ff4608d6cb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "c8ac273cc4c5176cfad2ffd89fb34abe26a44e2a73c251df695e4dbf8bbce59d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "ce218a91b3f209a57c677b8bdd36f3d3392a2bed6c09751961a6d9b0df2c0f3d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "3471e7616bcc597aec60f8cea8d15e677c05e251d11e180708c0580a4858552a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8f64a0af5e2cbdb036e8676f553e0545712c476969e033fd9f71562a33d0826b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ea364c2b9c601afe946ef8596a657bc162554aea7d182a960ef54aa09fb0165c", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "bfd6ae61cc8e34bfc77ead5b7e307f4b535e1f4c59bace3d596dd0a46c3b6304", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "8513c3b094189c4ca6b64c3f90e0dda57de627214ec3d2e087099b9de86ad0ad", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "86b962f18aa2004fa4646bab6cfc1d73bf9296b9b5b631011552ae1ca2b0b92e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "e54d33a721d91b988172241964bf5f375c962ab08aaa715bdf0698a91b2a2bcc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "856e602f3f0d7b63fa346a51ec3ef19abe1fe0575e2e915e5f000efc0b005fb8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "68308dea4c56801f4327c36967dab8bd69b3c899eebacbac74c1db7dc4e1953e", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "1ee773be4ca2daf87b4d5e73a0eb635f8caae46b87c6590786014b865c396b01", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4fccd548b22253877df359a35bbf49199b53ef93ccd6fab75413ee3c7a259da0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "68f1f1062d1c250164738cf097749fb6ec386a9c99865df27891d04a22747ba9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "a8d7cd45a9efa9526feb9c956c20c43945acc321bfeceec6df11d100f3693e83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "7503814638fbfa46b5319ad16919c20dfcb5c43bbd952d04b454cc85b5d57993", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "2007080e085867e9bcf8ce56456ae62b7bb01ff548e6ffd0c11d993a67167507", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "16542e6a15d116be56701b2d8522dbdeb4c5c2842543bb60d8523f2861396437", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "890777630f0c3e1fd94b72544ae0142d602901280a9edd8177c7b4e405ee186e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "792a12d143e21f2fd0f451deb47f5e5a833571856212a9b92c5ac19b76bdaf57", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "1c1ff1cc5b07f1ffaf3ae4355aed275ff9d7552cf9ba07056754bdcafb59e693", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "9ab51cff19da594a241d1a573c0adfbfeca46b9c95dca2d3897c7c867bebb5b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "f16b309a619b8ff5dae472a336205c7f521e90c0b454a99e22615e800604106b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "5d9fef79456277084b74cd7a54e47c2d1c9badbcc0ac9eb000993e577ce61565", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "0905c2509bc0a6400f3941c3b1e0ad9c650e44b3a02cce33f0e1c64a845f82f2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b771a63fbca09a916b08df43bb6a7f1d11d20ccfaadaf06b6da0a198176fd641", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "8364ad81419e35bae77e4e7cd6f7b77d7ddce914453265684efc6523f7feb79e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "d8e98b1f3db9a44eafe5f489ef3ef8f219f89c0c7ee05bbfed37f65ea90d4191", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "fea923c356934d2d224b27ef2087b5b645737100c7298b757418d47ac548dd32", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d67139f6364532bf43c7ff3f88e4f01a9d09c3aaf5fd1096ef8dd04645ca0029", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "6d36703cb0545eb28b15f3bd0ffaec0db38bdc074b4f878a693102baefb30600", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "1f799a219efa3060eb6c4fbcd0f0e2e14eaa0e028484d4d39603696581355263", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "3ffb4520723eab876b2c0bb0b06059752712ffb8fc2bde4c679f976e7222a3dc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "0bc610933373606c681d692e98e2979cc6f5182a80785fd24caf04467cf9ecc4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6810e51caf90cf56b1ac1448e049dff7b735aa7121c8f8d4e759a9d756dcd6b0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1e08dbcdf4b16be6bfa63facec60169c3dc50a9abbbd86f2ef88c3ef3f4f5980", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "f4db23e1d695d3750cf6b2e9cf81309dbd54bad3c93e2682822a4c04d5f9a373", "T3T1_es_ethereum-test_definitions.py::test_builtin": "8494194585f6a378c4b3bcb6d652cb29cfa2088f85304ebcf6a59f96d026233e", "T3T1_es_ethereum-test_definitions.py::test_builtin_token": "9ca2bd2200794364216aaa7ba8aed576ac3da70aec6df9e5aaec7de33c84f21c", "T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "9da6cbd032ce540e1175b4eda8c27c7d2be035e9b380bc2a7e4ec21b3f26104a", @@ -20726,13 +20726,13 @@ "T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "aa922731c7ad1d859ffd3b1d5ed67db28b19438d888e89e47aa1761a389a0270", "T3T1_es_ethereum-test_definitions.py::test_external_token": "166b2d3b08cf0022bbac240455779407fdaf38693ecc3d1120fe861e7d963ae4", "T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "73d01b57f23083ff4d0b884875548f61f872c7545d64e32660ae8477ecd6e4f5", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "076605de44ffd6eb66ac6132b909f2d8964b78b409b3800611c0fb0cdaa18e5f", "T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "b20ea2487eab2bcf5add3879e59ee7d4f3db02b5bad294271dd97ed227997799", "T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "43c5cb05ef9b35a9f3127b7f298c85f24788a2a4222e148b922a417976f3bc6d", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "a207a5536334a89de3cfca264ced90ec97806875347bdfb313461cd491b198ff", "T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b629d39991904949fa301089dd05750315971a9cf6ea13ffc4d168b582d9b02b", "T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -20771,17 +20771,17 @@ "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "da4c5a4c5c4a757064bf85cbc5fd66deadda37ea7ac6e9703febe1f608a77d58", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "1e22a4528175bc819142da6dbe0f042298216f5c0b30957baeab08f5b0a9ad60", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "1d84243249250309f49efa36323f4a8edd9e2fd8e330f69b39c1d2bdeb511d8d", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "d7921ad2fe58ef7dc7b57d3480ca5185e6897e66c1fc195baa2d78f241f70fa3", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "6189b4c756ad88376995ada3b2b9460ec73f219ed5edadc0e644b083af7d21c2", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "59a1c631cd9eb4e4ea54cacd48ea3df1ad9a8e16608f47856b0601fa45f1cd6f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "4e0e5455e1f44c3faa6a764650f52775bbbd7585bce03b19483db1a49cf54f39", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "16afcabf60b43f89370e95a22716ea5f714c62ea5bba55700f20121f8d809079", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "0713aede9b34fd2e7d3a3e92ad98ec5dd55efa9720ceb431ba1d57f7c41ffbcb", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c972120e5e6ae0e16bc0183db8c4253f4fb139ca6db358a3a8d63de3e4c77fb8", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "898c01c30cdd95438e62e3a01ee480d8826a0febf0400b8f612d2c200bc655b9", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8c8b9b999cc3e1387fde32aa96a531e2cb405bb4cc5ab1bd99f6d1c845239cf9", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "52871fd893cbf39f3736b44aba01d64ec168b9ee4309cd200f54f04f0aa2932d", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3e7740c7bcfe6d3d74616f23fbc4d2635b72ff60ceda219d152fdf3d44b0bfb0", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "52e034d33b2c45a9da00964515fc9e1b32f291450a3ddcd0aae7a247ef180a98", "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "03b26ec321a6535f321a990dd61c9e11393df55bc79d4545d0ff1b63dd00a83e", "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "7526aad501a42f0b773914c74c2adefc5f8d2c57fbd066635bd5d811cfb33ffc", "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d2b8e16cc82fc6deeb1e385d9982bf68626b6b54523236d7c1b26737067a3085", @@ -20945,7 +20945,7 @@ "T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "7003f4f14de998c6e0e773c0c74b605496397a47d6b5896bffaa6d6b1b5308e4", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "77ff93d1042b63b30eb98678c55e530fb7c9fe9918eec35882b8699efb0ed0c8", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "c5769aadf4edd4b1d3a644c4aa60e07db6baf279dc38b4ddad443b9a44d53dc1", -"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "37399dc8cfdf98f187007e8f64fc7612c2c7dbc5ac74c1201cacdd4615236638", +"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "428811596d9d0fa4dd623cd1342ce42ac0f404d5d37ad291d22eb4d9893d309d", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -20984,10 +20984,10 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8ee942007e5ef72baab7fb67a4eaade25e48da2aa92ebfeda28fda4177572467", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5657e597cae4958fc657bd768d179af28f3469600be95af950697f06ab83c7d", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "6f0f0a6bb0c1a5fabcfe52b2585d8f98e315b92e0d4555e403d6a99bb102ae52", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "923e5cc4751b495767af1cf61b2bd67c6a2f99af5b87e504bf5f3fe5f30a934a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "6f1ca2704d7f25a728a690e3842405d9fb51169c8efd68fa05234938742f6fe1", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "613c89d30a66f5b3974ca7287577724c1ca62d7fd7f3f32b2ed3dc2fa0ac9793", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "20cfcabeb734ad17ea1dcb205bd8cc7604c00b220a3fae743d19ed0d0ca30399", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "982d5b3920ccaf05fc27f10dc3483c227b25d5c9f7b0d6e2c051bdfa8a769a5d", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "1236465d27f05db5639169acfe7331535c5c35bd0d2cff76cd9903b82f0a85fb", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66f0483d3a21a3ca9c76b5bc8cd15ca8591b03470d4fefb85e385c2abfaee53a", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dd8d37b2e9072f6a94985ed1fc055f82c41f0387e30aa9e515e7a3ea17ff0172", @@ -20996,10 +20996,10 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e642ce06e0dfc36df4cdb5123f3f57c279ffea64b99dc542dd33b32760ed831", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "edab79cd58b78252329e58f2e9121d76d75fdb1f2ed7f28f026d11e98155ee55", "T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "90afdba84d21e6d31a834fe56b16d864ee93f84790d61d4d96758fe566212d1a", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "61b4ec9a26ba8314dd023eb1fe9b04b30335f751cb3ca6367138411eda9bd9e6", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2f1a4562da3fbd1417420612b19805a8aaf13529ecfd305dbb462bce4864963a", "T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9456e28a0f41172a78da9092ac55ee9af329762a970e43af9221416f7bd620d8", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "725ba3feef51baa9f554d8dbcd15584f4c2db8bdd3e13fa1c7151b647cadd636", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "421d62018855db2e08657696bed81e9205a0de23c118c19022812e031b6858c4", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4fd165255d1b8eb20fb72f0b311061ff475d84f9555cc50c753dbcf32b099cd0", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "21dae60027e854269c6841265455ed037aa19ff8602b35073f4a96234abb020d", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -21013,9 +21013,9 @@ "T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8193620e8ac2d55157d048e9f83578e223d33b272b3e96d6fa91c4355de61ab3", "T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5839ae74faebac1d76ba2ab2dc116f72dee4cff97b93ee69d46f82568b1aa1ee", "T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4b66df8902d34a1dc5e30848900e24f938ca7852aef959ca5e9577c81a1c315d", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "96f5ce353e31e08e8d4e4d23143166105376e0f8f80a7775633ccb716f356622", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "4041515218f06e94524bb6c2c069a513ada843470b98b4fdc18996a812e746a7", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "2e520043a1083093c1549c056116c1ab720b9717743e159b858727a284aa554d", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b1f5ed1c2ce4ce7637814563608f6f2e2b577b84da754f4682e17b56c203fd76", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "5b28e3c9828504bec18ad666b8de4f5df4a430f98c6e43c5490e3e9e16d98424", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "6ae73483b317e33bcae2e140b6379542e3fb15ee1fd7da63ab5420df3bf5cf0d", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "1c053f6aa323a7f253065e34b69a5a89d7587b2a8c0a5de8da6a684b396e6041", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e2acea7abf37d39e4a7ff0cb1a3d926df4cc34f8dd8282e9f8b9d1b2f57bf83b", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "18afccd4e2092bab13a65aee64b159a221885e11f6bb7c18e8861a8bc860cfa1", @@ -21040,7 +21040,7 @@ "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3fb6e36a14a965a22268381b8aca16f2b1c9100536fa1fd26e2c14d254071dbe", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "c12520413c3239f1e2ef78d1ae1fa097149591b86c859cdde4e7051541ac0051", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9f86f40d5e846f14098140e1140ecaea9286ae1792bd21229b0a076cd4c9cafb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "244b937958ab4aef07aade8a2c3d75f0ce7aef95c57b766ae301c8d4d82a3f8b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9fabfd70710795e1c93e7133f0288e8a61d5f5c6b36008914eac59c051de02b", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8180416688e6dcae9688f04d4c18dfcdfdb1207aa04a0bc59dd6836ba19b6055", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7f79cb79322432ade5948e86a73c372891d4f38756f4e5b510843173384ddb91", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "0c64e69e33ddb40ea35f4fe6275ae18c495775f37d03ee1cb6cb3d7e526a80eb", @@ -21073,11 +21073,11 @@ "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c1a8b7e9e5aa45369313d2ee56b3beb59e58a99ef46856b3fdc30a6d35d29200", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "72efb6c21c1f3b17843c914931a46d609b35d7928ded7a324e5d6c5ea67c43ad", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "28ac29abd598ef153c64428653b9ff7252336bb4f55df458612be10a70381a1d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "17f54ccae09b3f7ffda8bc5341de154d8326c83065620cc9e2586da2451de7a4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "b077166c430c4719703c82d78f7ddbf29bf31f97cad2949e568d6832deb1262e", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9c4fce94adf5bb063d88243bcc52aaa90562ea42d01c818df3fdc8c9f9654c23", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "244b937958ab4aef07aade8a2c3d75f0ce7aef95c57b766ae301c8d4d82a3f8b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9fabfd70710795e1c93e7133f0288e8a61d5f5c6b36008914eac59c051de02b", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "dbc69e12535f81fd753269c23d54ab21c1b416b7d9979fd051050fc9d690db5f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "40ff28d04a17d65c6f762732d501a844a9b2eeea91b6033bf37b9552438e6cd8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "18e36eef0a798265d522c69c844b938343fe471c7967e68007b02767e6db8a16", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "66406059bc6f863a02b9f9be09cbbd38201685eb5630fe2ea1d5ac33d5b2ad69", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "df5f6aa0700f27b48f91322d3ae0477a63a0439bf0f96975661e5345b70bc6e3", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "002710a209a2d8d0396c6467f52bf18acc232b9c7c16562a692747412a0dc1c9", @@ -21105,37 +21105,37 @@ "T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "04060da27823499f148b47d0a4430611706b74a52ffd05da9ac637d77d2cc895", "T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "fcd24a2bf50f0079ed28ebd4e1881af7f8d6ce3bd7c0e872c4e9721790805ecd", "T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "4714c07652593658706e7565eefa1d22cc80346b1a78a609029b17aca0c03611", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "e1a275949682d6ce0b2ef1b3a737753861dc7a8d64be676db3483300a7071f6f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "40193e00a6dcc4c2c23e900cb56768a69055911e5dea157c88ffd284b5a8521f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e7424a358469d42432327de13a97f5c114c6b3ca49270d013dabbfcfe845a5a5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "04f216aa3eb515e4b32584264b471e2ce236a34d19ee08da489056304445c2ba", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "ef10f18b4d9aafa055c4a01cc0992595fa45f67581a10c7126990d7f4b3e9ad1", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b3d031427029f6ca65e97e19cd6e8302169516fa64041572fce85a862412ca30", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "2ade27fa7d4c00048700657b3ac611a3a02764a89cfb6f7ed22e82ede96b3719", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "f7730564c3c099a41f6a0859006e84dcdaa15a635dabc5469e5e6a1ca88b7172", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "febece91aefc93a8fbc1c0a50b4330e24508ed9c89a522512ce9dd3bac62cb54", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "52ab917de3de4e7f1a714bede85f98eb0aed1f74dd4fd2d8a53825c29c82aeed", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "cd232b4b9f25c2ae581bfd8ec9cadd98f7cc0a6d6518401f2eace6140ffb175d", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "bb645a9b35fd4e61313e86e8cb39e947b08a31de888f0139e7e007f9e58a2a10", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "da2e7fb4356ea2bf10daead4fbd2a6379563db14db7315f46ac7f868cc95dbe6", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "988ce8bf3de4b06ce7c52bfc8a22927c466b8734fb0724dd9279d6056032d843", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "a43c92299f99bc6e324792e9dd5ccda34d2adc8fb8e7eeb066457809f0b257bd", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "8373067217cd5268ef88f4851d5c94354dab27499b3a55e5c290c1084ab7850a", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "ab72112521b7870c8083d64403f9819647ec74865210283c2061853e24b56f08", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7c7e0c9ff137483275d46602cb09f49fe921174dc7471483a4954c9646b4cd44", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0f12806d102cf868c3b73ccc1e15bf817789413da51d6e15f1fc9004ba5e1bb9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "6567ca10b953485c27db3b013a9a16180dd8d3fc1050f88c718223995f94283c", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8f58708abd7c2abb6bac0f6233547e39ffa835c6d0985aa010dc126b90b46251", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "de1821ab4a72ff67c3f4f19cb9c8e2b56e05c80680735d0339782c8be1771c61", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "7aa7edfa224e4a35985a780c40f2c2b820c6b6a59da0d21490ea3efc0dffe70f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "70dcdc49b7296999b55c0ffae6898e5758634bcc4175db294357a564759ae504", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "2d2f8692dbe71ce565dd78849dc888cbb94eb2e4cc63471de0b50930eddf134a", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f3d01f3d94588d4f0b7be2cac2adef0e163c7fbcc1227771722b160b5197be12", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "9699503349c6012c0754b6d6761c58aa85ee253d7c75e37774f97be4ba4ac140", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8775fb7c37a2948937d1fb992199b1c9d602aaec65fa7db31b6133b8b5757955", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "a5d3be33997d684697091a2dfff21ca9c4eb05999b7b1042a65534600e6590fc", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "ab72112521b7870c8083d64403f9819647ec74865210283c2061853e24b56f08", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "cf1f6e8a230ff0c44b7350a387451e3793daae19ba2b862c77ef83c3d48f6200", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "a306b6c509e773766f37795ab30be0527b3451bdc5d997aa03c7081626556997", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8eb7caa3a04a6f778df516e1bdcd4b8cc0772a5d6b087bf2dc9a56f59a28b3e7", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "aa3e8efaa00c85063b5c63510f4abd438d79481c1c58ef7b1d6ae13a5750ddc5", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "c098d2c55d42c6908254f8fdf733761913ac0fca924bf3e435479fd4c6916828", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "6064c611e04bd6a83c9a669986aa9b2bc4f9f8c8c0794938105465b38b769387", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4662d8d95fd424491936508141c4097f1670a5e79a0ccb8b3675d5320d4170c9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c7772bfd1a16ccf5c4c6ad1cbcba54c16531cc32878e1b7cc08c8a32ba0084b5", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "1b2cd64f52eee7eda1494403e7faef725b0a0f52b0e73e9aaaa833fcd27b548b", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "7551222e871ba0640487c704c6aa14953b6f6e3a9645df21de7d1251a75457c1", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bec35cb61debe6248e87b4e6c6538ec4b6fae18986333e729b6f583377a9a17d", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "9fe45d7e7aa248583c64af05fee267d62468ef2a9ef29bf1e55b87c4f3bccfb2", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "20907eb886754ce90caa25abd015d834e7a6ddb21feaaf41c5e9c43cc9ba587c", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "8fdcd17f02592d18faa42c5b10330ab544b6481dda8138705bdafec9282b5b6a", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "bf1945431ddc845aeceb844211c56518c1f77c01986c138a252f6a52205df5a4", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "1420ac2dee6ee2fca765f16b7ea1ee62bf91d0ddcfb61beece7081f8019864ea", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e7d72e4f532c978bcd24ae594f9c9f0c460a262dd360bf3966796ed2e36025aa", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "6b4ef8932f6e76ce105a93633b7d3e7fc6745ded42d6e642e02ad80f2dfe9420", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "8b879c6307f9f187009699754ebebd27eaf1959c3ae414cde05da7d500de88dc", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "36aef1197db8be2f4e8a454af0f66b93de7d9d9474327e68fa9eb249e77283c1", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "651f90e050cc597e2a4acf960f70318efe74ca5a7e8cacf89818d0762787e892", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d50238cea8fa03e14e6655721cc42619de9c559c7f46ef075aff8cab9a0e0e94", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "9e8e3de394cb7c096a79afa4c83b1dc749e0fddd98d7756dd10421c92b2e55ab", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "560bd9e0e1579a4e8f82db3b24cc2ea5ce6634e019913943d27b4256de2d35b4", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "ba0fca04752511b33ecfb897d3d56e9ffa70d37cf95d276723a044f4b4fa73e5", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "199c39fe7d0e66cc9da902dec55a9fd7eed99201c87630e7bdf48eb934ba9764", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "07f90866c3d0bfd36a1b5ad542b6245ca824950a3c04901458746a70a9268e2b", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5c983d0b8888df5f286e43f75cb2812fb788509dc287b71443abfaac67b92632", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "32cd24c1852c28777346119e59e336787f8b1ef8cf0a3d94e482be42577fcf5b", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "597480b947a91b4bbc8a34f69941e0eff43acb9c001e6a499170514924410509", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "6b4ef8932f6e76ce105a93633b7d3e7fc6745ded42d6e642e02ad80f2dfe9420", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "da70906b0740ee06e4fbf2196663b1254b7d1b93b84c331e41f57324ba4f894f", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "cf5d7ad864c98003714bf35f3de31259fa84906b034868e2e08b4a1963ecec6c", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", @@ -21173,22 +21173,22 @@ "T3T1_es_test_language.py::test_error_invalid_signature": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", "T3T1_es_test_language.py::test_error_too_long": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", "T3T1_es_test_language.py::test_error_version_mismatch": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_full_language_change[cs]": "b4fac0eb57f5f82f94c405a0330d461a5c796fb30036572729764e1960e0b86e", -"T3T1_es_test_language.py::test_full_language_change[de]": "e798172fac192ebca9f768086bc6f0674903fe4cae4ac7bad41c5893e6543125", +"T3T1_es_test_language.py::test_full_language_change[cs]": "7868720b322fbc1b8b54781782b634bdc366b4bcc1b59c5e23797c75e29dddc5", +"T3T1_es_test_language.py::test_full_language_change[de]": "4c38b27038c782ed47ee9b0a111313b838255f92f91abf6405606ae9d533c92b", "T3T1_es_test_language.py::test_full_language_change[en]": "cb67a2e2dfe9144a9c9099501951fca5cf7df2d034556b6a99598311da342e5e", "T3T1_es_test_language.py::test_full_language_change[es]": "376683a130d6ac67a2c79b8ff3d43249fd60c3927322bcb7280a070a3aaf4cff", "T3T1_es_test_language.py::test_full_language_change[fr]": "b6ac036a7eddacbdb0066ce4589324242935f01c9af9523df89b32d3bb34af28", -"T3T1_es_test_language.py::test_header_trailing_data": "a8f1cd89bfdc467c55dc2c98ae9d976f94070753d73985818039e1ccbbe4eca5", +"T3T1_es_test_language.py::test_header_trailing_data": "3a92b8f6d81355e4e1dae92a1811aec9a8d1e95df0e01ca5a21eb8395f46aa67", "T3T1_es_test_language.py::test_language_is_removed_after_wipe": "2edc50a8f1f84785262b6993e663bafefe4c94c74758fc1883e0c81d8a31b82d", "T3T1_es_test_language.py::test_reject_update": "af4fcd9735b37dce8a96d113629cb38e9f977dca094517de8140f3195f899f27", -"T3T1_es_test_language.py::test_silent_first_install[False-False]": "b9593b319d4fcc9aa74c3066ea8a330ff9cbddb6fec9231248bd3a9b6771c3d6", -"T3T1_es_test_language.py::test_silent_first_install[None-False]": "b9593b319d4fcc9aa74c3066ea8a330ff9cbddb6fec9231248bd3a9b6771c3d6", -"T3T1_es_test_language.py::test_silent_first_install[True-True]": "f24b09dbfb547c2d672b185de63b10e4c0cbd625c91649deb3c51d1cf838d236", -"T3T1_es_test_language.py::test_switch_from_english[None]": "08dcee097442f4bf73560ff86180332af4104d81e165c0428b44ec2319143386", -"T3T1_es_test_language.py::test_switch_from_english[True]": "08dcee097442f4bf73560ff86180332af4104d81e165c0428b44ec2319143386", +"T3T1_es_test_language.py::test_silent_first_install[False-False]": "220b3026a516ac72ee96546adb71fab7a41534bbd16216a2a094fc2a78bc75e7", +"T3T1_es_test_language.py::test_silent_first_install[None-False]": "220b3026a516ac72ee96546adb71fab7a41534bbd16216a2a094fc2a78bc75e7", +"T3T1_es_test_language.py::test_silent_first_install[True-True]": "006092a5fc863c2c2858539507f63893d31e40d8634e76aeead9b4db0d88e0ec", +"T3T1_es_test_language.py::test_switch_from_english[None]": "d75f1279c1c1cb40ddab61946b24315949804d4f639ade39c84c1b5647e4c868", +"T3T1_es_test_language.py::test_switch_from_english[True]": "d75f1279c1c1cb40ddab61946b24315949804d4f639ade39c84c1b5647e4c868", "T3T1_es_test_language.py::test_switch_from_english_not_silent": "e9783608cc1ace676e131ac0060a18d4926cd83ed7547cd52610bbc252f38f9b", -"T3T1_es_test_language.py::test_switch_language": "1689270753f434ba1480e00f4a7052fe84e39125f87ced404ea3229fbb156f5a", -"T3T1_es_test_language.py::test_translations_renders_on_screen": "fe82ef54f571300f8bb31f525dd97a6625f39f3c1ac117360753beb29d610132", +"T3T1_es_test_language.py::test_switch_language": "0625f32464beea4bb43bb1d1effacb93d5dfcd6747da9d3898222c1d2f07ea42", +"T3T1_es_test_language.py::test_translations_renders_on_screen": "fed6eb186d9f50c47bfdf23caec18f42c418d7dbbc1dddfea147001df3d289c2", "T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9cdf29017398bd44851b0d2b98dc1e721572eafe724fdfd9278ba50a27d6589c", "T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", "T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", @@ -21203,11 +21203,11 @@ "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "04b3ec63607e88360d839f8d9a72a483dfcac380dee854ad28af9e058d9e5e92", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1c2b031f987f6da61770e5f1ace16901a0b571ad4448d905d887549c1a4db9e8", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b2ae1874093b1ff319eff75bfbde15eb1e5687af0a7e79f2b506a632def0f77f", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "5f8abaf15f29392607d25f65d45b9f6cfc57b0a8db6aac6d7e22c414b84b0b22", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2068d1da24f27d6c519c6fd018ec99ab499656a53ee09fa293f60a4afc09528a", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "124964310a99c5343f001cf603e9d71ffda78e33c23f831b5d65a5d19af9ec85", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "cdc33a34f7754c3d59f242e4aad85b2f545f000c737dbb679e563edb8e5cb41f", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "65a2130e4039bd172f7d97ac85ec2724ee51df97cb54c9eaca89c65b4e95545e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "98999a9ec999aa2a29069d233a3cd043d3d9735c071477f0b14d42555117196d", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "8d9a45d619991e6ff0fa9d1fce021afba180aa4799c4b83373678269f497e6f3", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ae62055830c453c813a5f6ef11134204be0b9b9dbe5f300f983c3beb43c58d6e", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "65b21cdd2d113175f55f62f9e94c7042cb57a95ecf52bba82538a532ba2918e2", "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", @@ -21282,10 +21282,10 @@ "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "55ac235b00f0084ad9975ed77ed430f7bec60ce9bd44be26edbe040c63d13dbf", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "7633a085ff69e32fbd6fe949f1d277826ef7894a8e7d26081f320ad97c153e13", "T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ea1194f7be788d0fc8fa69410dd59ae838fce2d34de4cbe414852a403e2a135e", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "76c4436562e82ec6268d0cebb0d5b09d819b90f47cb2bb87459f6aea0c600c7a", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "93d724be6eed8bb1d096ba4355c9d664abab8839a11c42a98223f483ea315c47", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "54284b8e906c0c81faa5f6878df6acc407426cf864512117760464442ae1b5ad", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "69f5728b5b51fdb335af47c634f5b373fe4197a5d6b991fcba2ede286479039b", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4bac64dc2362b1c2cd359d513e3528fd104c6c3426327e011af7f1de5947b641", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "1e5dc9ab2ff86427a9e0ffc4f2a9e22349de3f0b72e5e0827cc84f58283d1f39", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "2ea80448ee8e142036620cc6c75b2e9723fbfd6576f00c74f8570afdb114b721", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ebd8ddd04365f7adc5c44c1bd71d63b9b8525a6c067b42c60e780f87e9151807", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "98af1b069d8d2ec445e299026372d52efef2d421c83ba227751b7c379aeed62d", @@ -21293,7 +21293,7 @@ "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e5f39fb25c07f25efda59a6d2f5e98f5fdbdb290f43fd7f7dee9aad750fc1ec5", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "1dbb85770758f22114c5a284a39003ab0b08f97422e397257297687058a80e99", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "02efd68c800748415e2916b23f2294a0db68d7dfe85c2310abf0968f38ea294e", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "8ecce5a25a8b7f20ed87aaa9cd95ee9f3468c4d52f1f464fe5b5fe65602f9911", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "510d6dc5e989c661f2a28ac7c981b6f2ede6a4a047b1823bd115930067b5e2a1", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8e5604ed25002ef32b1008ced0613b09f4288bdd694be5ff39c4e5388642a834", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ad73951025fa7db7c193ed33d02d7706ddd6851d57a70ced5206a8352fceb822", "T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "c5368093c0ee1ca1da67bc534c236a3d7edb3ab87da9ce0eb8e1e7a9ec109402", @@ -21311,13 +21311,13 @@ "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "7ea45cf6a3adaea6ddcce2e109852af1c914fe90daa4338f981b0195d5c28926", "T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "d2a2787fdc79ce54707d28c267cf536b0568bce05586a6c049bd9a3ddba9f426", "T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "f13618ac157b732c7883e0427d58a2098b744646c65e2ab5f7f47927889e33aa", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "99996db48c0083cdc205c6542a48f9e80228238842e7572a00b7b58bc500a688", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "1f0fc8ab7ccedfef4f08e2bd52c3aa21f59b52d1451723e3842627568f40e172", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "f590fb3f4b8a69a3e0feaf58f65a67aa7a4ada8d89184a549434c5a1ec17b332", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "04b64ea2e1fcd9b6297ddd995ee133a049a0e85f6500d6a9c3b6b4543479301b", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "f590fb3f4b8a69a3e0feaf58f65a67aa7a4ada8d89184a549434c5a1ec17b332", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "04b64ea2e1fcd9b6297ddd995ee133a049a0e85f6500d6a9c3b6b4543479301b", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "218c7eef4442e4105565659d8600f60e9f5aec10b67e53f8f5881d2c79c32480", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "e4b10c08b0d94eab8a1aed7a5877331948e0645884946c34a2bdbde039ba066e", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7790c2972c163135877452cb26534364b3dd2c2e9ea74855d7f8e301f63f1c70", @@ -21802,8 +21802,8 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0a67d101b35dbdaaebb5f344a61801545445396c2d7270a9adb3132d0f58ac3d", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5a89c7e7bbc72bb983afc2c2af60d95921ddf2708616d2d5c342b25a3a314e6a", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4f594bf9acd05f585a15ac45d7a5d260129d4eafa00743d26b24f5772a918869", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c6cfb9566605b5788ab3db84b0bb37bd658636d095cf5298f898e143f42b2878", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "bbd44c98827134ffaa8ce0514067df0b42ac97c6c0520d207c90c8a5e6f91d52", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c4613563acea836244a7ecd2d0d9caef2428b0be3b5d164c8803ec492bbbea23", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "95735cb81c4ccc922fd7758fb317fbe5f538e90ed4ac7b9c97de25a674218a31", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "86e8b7419f6d6c21a27c253eb0b35c0d9436a289c25e8eeffca9214d43c8e82f", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "cee382f33dfe57030dfc80193a7bb0ac01a2fb021b9abb42526229f2bdad11a5", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6bf47689dc005ff8b2c8d41dd84c58c39ff0b298e2e2f1ef985e54bf75e8ed1d", @@ -21827,23 +21827,23 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8d857c8a665933ce77c183fbda26f4284b900b947201dfe6d2817052ff903978", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "db702e6217832d72ba26b502e5e77fca0a8595d16000ac51f890c7484f04bb08", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "dfc6d464383b4e5c3c89d597298b510df711303b428c6256dbb63e37fc9d67bd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "889b45dcf699cdc86d949b52f708c9060bd9508b5cebbf1e407013d69b14cb63", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "680ff2f99b22cb524f7f6971717527a3df7277d74523892848024636de05bf8e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ef6ba3ae48ce97e86d94fb7b690f9cf29f6c6e3f5813eb3725c06d8601febe2f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "14b8de9507ea58dfee2ca20e82917242863f3c4cb0522311e64ae70f178eef93", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "d20c38e3ea61ab99ced022b450f754689cccde13e1a7317926ee02c41b5bdd6f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "64af1bac919a7051b43e17638922e127d9a17c95e14a19cca5b5effe4b5550d8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c590d6c1b26a66dd4a3555d89cfc07cb54b4be8913117d0d5503be3e53ebc85d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "35abc08942aaa0f711188d5bda2838f330b1ec4b982fd0e3cb0ec02becdbd975", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "85a2020a385dd9e4a884f1b3cf97c1aec50773add42833b886ed71a6d75db6fd", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cf3be7e08377134c4118bfe9147a6783fa365288d711a8bbf80eea017ebe1f07", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "8cc8d612a45d879eb1a6df2cc2d34dc805a1dfaddfb6e72e8c700a6c84ecc5c8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "1051b54c6a30b210435f16bd1579f3d14b160c34d2092b0904992b9e7ea2e643", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4d53cb5d850937ff0ae36e06009195fe100aec3cb45f7d64d3952d6c97680894", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "79b0d6eeeceb4857b0ef35eaf954e634f1e23cef5c564ec0c6e4daf47269c689", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0408f2010d1dbbad0ad5b647d1a4844ccd092f7fdae40d927a07bd63003335e1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "551de185b7f7aebdbd16330acd8cfc2db0d7f4af0c33b284d1202445eaffb75c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ad892b092565d7eff3f22b73c478b17d207761ce22c8f721b71a184876238d35", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "e8f0daca8ab522f7c97d3624ee13922711cbb39a9d35e7dc64b6c062e17ff336", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a2557fb826e3bd3568bf3918363865b368b2f0ada5032de9574a1957c6a26b81", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "65b1a1518e976ac9fdda81403d8ce9b60a208b0648cb248202a36034a9bc5258", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fb2d9ec0389f9fc2d5fe8a0481e76b4a123c4cac1b46e872ac8441e689eabb71", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fc046d0cb15f58374373c56c6b9add1175ef1bebe48ded0714d70f29fdb5e96b", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "00d1ece5abbd4adaeee7283b457659eabb6cf1c12557bdae4fa8b0aad0717476", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "db3323394e27a0143e723323ff175d887c934e8db94a2547758e0f06e656302d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "beec67963707bd043d8ee5fc4d331b9778823c63942cbee205f0190ca12806e4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "2205a87e30b0253a2c5c9d1ae887d6ea49170069582d120bef35f660abee1952", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "a74cd859271addbae5730810e7475ccbe256911e0aa2d10841df18c062530970", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "29c7a13359a599d2948e10968e1cbf20dc442aa188913a90bb84a83b6e7bd633", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "4e9de82c3c7beee2a39cb7bf711c5abf24a5e43f3ac5b08cff41df3ad3820d9d", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cdce5e977765d9c237c171e49a73b16b09be0750672de56cb2c1a1719890a333", @@ -21867,60 +21867,60 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "89e6074f93a6b6d0b8ad8a333ce8642585ecd60ae63707e1a18da7d71482506a", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "206fde383d014964bab15b71d559236af7e3e13387a342f80b2ffb4ebc10bc8b", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f41b07bee021566060477286e97e352a41a15e52cd4b1656a283bc59f4e49069", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "efa76a14a6ecd3f43b04ddbd890e07ef8b57739e5f5d2df722de64be893ae5c0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "98ab69bafd0acd5c6ffb4d6db536910b103c07a653c667e10cadea8e05cddabb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4ac3e8b9901e162a7194e19bc26cea2ba93642956251fe5496ad172f89052714", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "bf07c7b8d404fc098b2ee78882cf99a24343dde471900ff4485a7b3921e88921", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "fa69507aedf12106821cc460468957cb3486d9b8747d24745f1e0d1f018cbf98", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "5062846d9217254ae6b2b988861a7c9191e28a2fa0e0b3229a9068fbf4294767", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "95d14f67f789b2c93a55cab14b2e0c96c9c30f72898a22eb4296ec8729ac7cff", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ffdb9bd91151fcf5be1fc569e687cf8bda303f8894acd0c23e635964fad3a32c", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "befd923116fd7afc9b8600b525123c06283e8b6ba749a1e07592b5aae20316c0", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3b8e31ef6838f5b86b07a1c8b1f7bc75454e1859cd02d4d07428209c56a637eb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "818a863229f6c33ec4000244b602ae61687c7228ad3e2b6d837a8937ab1c098e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "fa1733e6fc0aadb19dff97a974b92c16ed3282a54945614c35b1f4318a8f07ee", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "76081aebdfd610137fedfc4c789fe5f7dc250c7fa9fdc01ccfee1b31efb83a55", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1d6c3464884bbe0aba0ff1488e191734e29fc1fd8fff67b6654b307f58d9ade1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "16f239d80106dc141d87f61f6a5776a8132b69bc359a66e50bc7a8ae22449b97", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0a3b0e9311f95dd28b59dce4696652ac52cb03caab472b2ef9a2b8b5e20d9bff", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a20fa054526a73917a2e5f905f21b7ac657c7e3f884af8e9da37b4542f70d2c3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "b5349e05e62855f42312ace98c7dd7f30afb8978288added258c9a7d38408398", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e0a73612a6f2f8f08dcc216b752c8c95b38a8c086a1a68c8cd101f1c61f7d464", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "7644134264cf3aeb43a5d8e1c6debd8d04d8427a5dd5bfae9eb7a3599d58f3a3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "888e3e36ce4f9b1f65b534ecda435ca9bb7ca7c545f8ef22e97f35bbe91a2ee1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "7ec0d5e6dcd1abdbbced04d05878b05430a4dad45fd6677a668ad98dd0a92d7c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "dd5d43e4bd9bb7d2c49bbbc9d687396336b941aa7d2a204c6f35643712cbe367", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4fd94fb9e0699af7c4e0261e8883631c00e0889a06ad5edccae6140295c7c093", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "41918c6b71a4fe2e1006d43c572b59acffd2af256a4a9e33637de3ebbf45a92b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c6016a24ea6eef360871e3487a139ef0f686d5e1129d847560e2bb5f48a1bf0b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "acca25b0c591f1e32d73dd059928e45475c8eeb9aec6fe5a51106ba7c9367cbd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "3268018697905bb38999c4e2ab5413b2d2104556b927f88a73375965d5cb813e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "cafecad60c10138e59c170b259d20d5288777a4a8f4ab207abce94639fe1b246", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "15b4876c1f87c0c965d18fce18615956cedbc4de8becbced645b75fefdb93579", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "cbe1b06a81e8b177b447584bd283a55762894551fed404dce92caeb10cacf85d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "116e7cb742136f6a8fbd61ebe49aca6e82377ce0ed8efff6d8732298ef2aedb9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a471e6b254825792cbfb99b67026d156495aad79fdf3a83d9a587c296ce310a6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "7f7bb2f3d192a4d7773a2c006513c1b6769485c3355cd1492a83286331c613a0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f60cf2edfdd88c8a22df5c5a4655f046996dca8cff3773d9b55169660c042f07", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "7de22eeb6c59456b7319cac5a4eb1264062c35935c7d727361908116d45d727b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "541dd35959c599b82eede7a3336ff68673cd35bf1f0e1c6da7359d6b9f36968d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e82164f38cc710b7f53b01b4b6445c6edfe8edd8d9dbf1c29a912c9211b312dc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "21f83843259aa869a6127df0788a7c37b1957c495526a22bf053779f36f68858", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "778e4ab5b9a8df87228d72fd43932f95e9cdf58c7ae03aa475b412cec48bbbaf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "5c82462aa9aa9b37f312a51c936fa1236e6b05a7d049e0070bc797842f6a6def", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "e728ee2b093f71e19f8210a4c431283acc53d6790fa6de22e617a939638f7cbd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "bb742ec27469932a02c0f38e46a1f07da90ec896c9b3ab6b8221434d15eb8932", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "08e85b1b0252629fe5170f1afcc6febf0061016f059eeb11bcc83f28e20079cb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "74728cc1862fb0f3c3b0daecba04fd6dd090ab314cc899da7c7c29b50c57ca4b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "9fe5245c5ec4941d3b1bb000d6212f05e5a5653553c86daa15ec82a1ba49d103", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "d454a300a25312d4ef81351e68b22a46a95f4d24a87efcb4be077658c915f980", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c3a13dda79857b8991caccb8d1dd83cfc0ca135d5d9f900130d644166bb7486a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "b0df6d24828a859f565973cff525ea14b666fea211fd81cf8df229b0eb117513", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e85ba42d143ef8718ab23535e509d4f2162faaffb290f31ad0c4774e3f0dbe8b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "41338181a4e1dd1e8fa5ca591cbbb8ff56ebd3f4752eabf4a2fa4e2ea30eb70a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "87f49008b06d12d0ab16d66fa3d109505889f898de59b29de4cecd6299ff21aa", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "df049cbfe85eb8bb41c3d76b5ffb1433a9f2f05612421e66b367c977649762c2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e1f74521d1e57c0cf538c1e62ff776c17b40db2571785ec3a8c85707962182bf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "56310309d59d05f9bd90623f7942e6155c395efced4699017088626f6cf5cce2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "dbbd5d232056a68672c9d75e475be928755292362e7bc6c7ea35661b37c7bd3e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "0baaf6566d134b2c016869d54064e62ef59c054df41661baac274d208befabf8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "945d9149be0737f6c12601eac668947322a3ced639764f91ff7527fd0bcdab66", "T3T1_fr_cardano-test_derivations.py::test_bad_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "d231578d760d0aa5d2f72e5e4e37b696cf925c8845db43fec1477887051e4706", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "2bb54df80480a997945db38057e409aedc8802666f10c096310cb88b9de9a03f", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "08525833be2bd7429713afb3d7d2f560169ccf44f8eb1dceb52b28be9835af1e", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "38daa8934b013a04363083f4038987eadcfa8ac4c3b478bddb3f4b5e41b07834", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "e833b259b5cb9b958522a21c1d56722eb8277a6aaa09ae12e22fc25b6f29f1fb", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "6c139eebcd2e125a80af0c2cb40b06b2fcd60b505ecb6997fbfb5ebaeb8dbe18", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "f02035c5fc40bde88f56ba3b8dd22b00f024c2c576aa1838fb02c1d9119d5ccd", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "1a4542cf900c0270378970618487e992441959357699ce44d29818dbcd2b7f38", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "1aa16a31180e8cfc3b2020a9276c76a578caa3f248800db08b21db3ddc8e9b4f", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "01748c73845a779f1dad873d4aed970187f52d1ae9cdef3d4ea773253f05642b", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "0c98509d9b1c825c67871b1c8a30954870da30e775e1169ec0a9ae0b366a0e7d", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "fc0d361796a868078712d23b22c034d22ea3dca028803f6706ea25bd5db6ab74", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ac4c2bdf01d0566cd89a8374fb10ba2f0acb5e552e923ac755e0c348e9335adf", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "cb99d5ac65ed7932428fee58928207b19174169a4dcb0813726ce31078e998bb", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "ae26a68cc262accf92181b3db1d5978b1c80b68dcc92bad76a787a17dcb4a7b1", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4d90cc7778f4b702a828487d49b652cff09a1b118f6e8ffd1cf571188a91abd2", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "d110c223035c1f23788d4f971a058a951aa10b581211ef205aee54ae21ee92d4", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "60faa29bf4796169937fbf0dc2b2591e990178908f28d9ac934169ea9a5839ba", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "a04fa19352fcf26242b02bcd6a84b6bb7edff5a2c8cc256b8e1c9441d8caa070", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "9f250649a3b5e887cb8c3ef2d031ebbea7964e4a1a51c33c7da3bfec1509a0b1", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "742fda033e3e09925c2875099dd5694041237750679a1dd8655d876124f9bcdf", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "6d78e8ff792244646bd28d9f5152a1038e468b32bec9fb1dcf915a6d1c9c2d69", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "72d157bb8c44f7d45bc5fa46da6173a9556ceade2a9ee51e23ef739c5f33f3fc", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "988f2f4e5e3e73371ac643252bf76a11718bbfca40bb643839eb692f77c153bb", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "1cac85a1d95766ed1a40f26202aa0ad242ebbe29197ddd1f8536af96b9139198", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "396e2461990856920dd261bda781ce7472cf3b49331062801037bf84bde31023", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a70f36ba6d7379273b9651315e9f24ea61cdc97a259366f8dc48dafda7471b12", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9cef6662f7bc04ba3f2c69e3035167e2b1ded82ee726d07e8f6e6616160f8c13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "fc0af93e1e7844b00af04c714caa6e3e857575ccfc9db0a92c44f9f3ed3267fe", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4e466020159326fabd4dddd4659e6c6f593f315ec28ca2ee40b6b06e3a46e957", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "6431a402ed1eac6d6a74d8438f56636b46d0ff64b6a4246761adf1a2eb58bbb7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9b6a3ae8a310c2c9961f69bbef0463f16335350724a62f05899b99a4f9f63550", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ea8961c7c4310e9013b0175413956ba55a39aed8a5185387be2469e376329237", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", @@ -21984,7 +21984,7 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11ef6fc1e148b4777e04173fda74991e7f623e9c4e0c4a5d7dcd4d9bf2af7e2e", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5af39a12e659a47428f0062fb7c1bf6957758cb6550168ff443a1314e6d7e94a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "bc11f996c3df62edc0b4c890f8bc84f0255a7dabf43cf60f4261b620eedc02e4", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", @@ -22196,7 +22196,7 @@ "T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", "T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", "T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "ec97c79dc2b8f2d6a558201b8542ad757454f0a0f7c4a2d8a78d5713eafbacf6", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "fdb69f64055c31217cc083e54ef103725b097371c81508a774a0414520b741b3", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "9edcaefa32f557201dc1de665465c1f822a60f55b92be958266933c2f72863c4", "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "25b35c5ae72807dcbdad24b13e59f8ef5c848834ab1eaa4eee47a3516d851f7f", "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "28fff7f0bdd2772e45e64540efe47642f2040214d99c710213aa71f86d75331e", "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "538dd68f150e80065f047aeac803a9b31ebde85693670c683391c1658d1c5215", @@ -22328,7 +22328,7 @@ "T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "376e4ed50e9585dc31d297f1d7578b662682bf95e07ad2750865856137411318", "T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "7bf2cab0d6d11d37cb7d723530bdf1a6fdf9627c6f03ddb3372b6429d3ccc90c", "T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "80ce58572ed6e634c4b46b1e335b96def1c83ba4d63d18f22b86040a4689a648", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "86334968f5836700bf3e9ad194713938d0637585fea366211c3635027701fa3e", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e2fae2f630e8cc65fdd66d7edc4bb1452d1fd4ecb70c028ec9f5e6273769406e", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "62953fca62df18b03f69e3644b65ff9675169c680c83e42a0a0aa33dbd365eb2", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -22423,14 +22423,14 @@ "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "2e010acf10de81bdf1e9aff772cf673ccacf7082176b4156152bc5d01c20c11b", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "753c2a41b13d38d597631cecf9376bd008241665a7b853ad55e7d0390dcfe73f", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5dcd01bbcc42f7161cd625bb97b4b0dc9db5e6863ab657e5ffa02bacc399e2af", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cfdda605a1d1e3febcf743e99a96f691b44ced371865b975c58c0122bee9af77", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "1db994cbe385e240869bb01abbe4768f95cebd313e607ca71fdd022797cc4c98", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57707bd70f9857cf6fd877f09c52f1d03f4ad7c53603a5ba9c123b06111169a4", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "df6c69516d249c1dd27fd1e727add632650d53fab4dad32d85ace90de580f713", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "2bc092db84bc28730656f2d8777c70b001401d41909871f4f5d1ae601374855d", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "93718e58f1df533df97750b2422ba5a61a1e99879b5d14da7a79f8717a1e59f7", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f0b5fba3719c8d5eb1fa6d0bfa37f379f6ca07280e79a381d5db5985a9417f86", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3dff1deb8d554d358259d336a5d526bb20a53e3b410c423f45256cae70a54fab", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "aac7025941917aa1e7df6569951525e26495c5ae90e7f8902dee90a2bf7768ba", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8f83a28c305d264f13b91dd446106d6ca91a61a0c19b6d19878ec4d53c125caf", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "df268e06300e8621f13f5b579a85305808664f7f3a74b0c5055d0ee68cdc176a", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "7191c7992186d6a93847d0ed8bda75837a54e97d3eda019398310129ea62d700", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4f38d92c20ff9a9fb1807c4b810e9c3a3c7c5a72afdd9b702a3ceb5dfab1fa20", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "087743a723d1996dd9b956992c1d2866a08ae6e55a09ce1303b9b9ea52ce3ead", @@ -22520,37 +22520,37 @@ "T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f0411294cf4c3e6bee948ad02dc90d31e3ab951ef7b23f730aaf7ffcb32f1903", "T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "79f8dfd580c4da34ce6926584aabac662524af25bfbfb42a5f818ed4a4f28369", "T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "54218f8a08bc74ce8d685b97e61d532c5e0152cebad50d609503dec982306460", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "a543705507b0722a90857a7d4f97eefe12847585ecd4c8a0097446b7215624b1", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "73c4e80e523a894f7fdf3d3e0e436944a3263aea521485c3be3a6f50b14f50dc", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6cef49e313d1e8d5dddb97782c99843325b220924733d6e6579849745bb87e08", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "93d52748f67d06d868220abf1713a32a93ae4d69c8718ea147e92092451526e0", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d8a060e83200742797fe5f4920a04bfa21736ec9c88d25b7f3003930bf4ea389", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "9da453f325619a30c446567cf6746098e72579d3f2f89855a8c36c93078be092", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "6425a393e8f34f793525fe90d57eb241d976d013ebccd476ae905ddb98e4d5a3", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "4cf177cab420e81ed90e8f287101d23fd48aef864078e443bb196ff14e01749d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "4ac84cdd7bc0a346c88eb2b0ba4736f7f9a48e276eb2a43d7f2a7ebf029f581d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e204f9b2a895ccce6fe9bddaeb6dc50f33d279c788d70c6f48ccfe13845e7588", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6f16921870b7bc30170f108e75c0733dde4d0bba11dd8748367df8ca971b1892", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "731c761fff2c409dca1ecd97ceece602f3e928bbc9daee52644ca4b1bdef48d7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "092457da3e41853489c8cb23257a424cbbce5d90dadfdd540b32fecb61025195", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "7a7a93c5f3cc727564fc128b904cd7ef3040eb7e7efeff3a92513781e46a8a5e", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7d1bc4aeb3640431a9099c9251e4a4be0ce7b99b3dcfd15313782afdae1e424", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "ebafef6e1aff45f7bf284cc046b3f30456ca8ba0b81256362d45ef1b1d4b1a29", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "3bdb18df20c374ed938d9b83f5b293984feec50568bbb444ccc15570d75cab47", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "fecf1e973644cbe8452aeabeb1f16ed003d1c45036b1afd87d07001bcfa7a433", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ae76e8e276c92de843c379bd61f50197ca2ab5f1ef09a98521dae0dd79386733", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d79ac2daee6a3e15ec391413cbaeb7e221c685fd7fc4f2d20e550778d33b084f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4167920fd548fac5ae5b13f7903681d838bcc798e377d362fe991e545451381f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "3828ccd3ea0bbeae735a2ae0ced9f4bd59aa67f699a59923114e1e6a15e3173a", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "c41ce3ffe8be3d27f4f75a8878527f7fdb5bff8a86aa5428926f816a31f0bf2f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "c62803145a607c580875a767f32c7ba21adf5320c41ec77fab3a3740309163e7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a194b270b5c59e5d1c2f8afc860ec34d2233413f9028f97fe45294b1b9676a9b", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "7755621ef5c84a8081f6b92e92f16c9bfc64cc9c65eb30af02f11ced40ab75ee", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "9f166638c3b736615b7c2e760ad7526cee9ad07822bc4b5937c34292ac4655c7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "62ff783eebc5b5110a53424b8060b351b2c222cf9f8607967a25a47e2e487caf", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0eafa8f484e6288865612b1d348e52da4926aea1c32164c8a1b2dc9b6fc72e30", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3bdb18df20c374ed938d9b83f5b293984feec50568bbb444ccc15570d75cab47", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "309f9fb4af9d4ccb9f3a7ae2c157ca3a6ea981587cc5f07f81e3cece731615dd", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "fcf2a55d6060f968b4ce7b8c8e16dcb6a1e6fc75849c010ae9ec1d01335d61c7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "82099222334226d1e69f1c70feb4f1b12bc3a3e83077e475e6075646110d27ca", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e50c4a41bc97a0ef9489c07a51de85eca0f203ef9fd8c3c91bfa0e0fcb9f5eac", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "4e1d5662b8cc759e641937d9a428009044c3670feba00d55dabb092d4048d068", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "95997238d57a10a71572a05110225a2bb9446e3b38f1b20c693d7525c90a589b", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "058f67d7336449b0117e88c4373804699d22ed98f2a5f30aa1fa4e9bac42f8cb", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "7b0d197ff33513d04f2c8480bf6dd086ab5b1b1c4f3c7d6c97cec18a3c734c03", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "9202499f5d005bfe633b435252b55feb81e05f8517305348572a3db1cf062da7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "69d648d21091940a239c5095788ae396444fb83001cf6fd3413b82cc8e0c4dc5", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "aaf5c1b1f0bb20d42a1dca30e5a7e5a111234c3a1cc90bfbf445a9fbf10a6281", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "380789da523fde359270673568473d673e2d9b637be693778ae0cffc3b216ca2", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "3da8a246537330a42641ba1caebca227ac49b8f961cd9034fc77246f9905cbd5", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "0c26a07dc79d8c60f2addca13932b56b4e63d9803d14c1e45abbec11304da9a7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b24bf0be9b4f000cb4a212bdef0aeb08e85ffc02dd92c4b7ad340163faf3739f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "ee18fe94d2f700375acdcd4c49f78cb149daf3037abbb44ef14eba58a27e4dd8", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "0ef80d268cdcea74facbb905ce5154000b451f8c24d28cf9948f98e4a45c5a1c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "5554728937ffd25fc26fef3dad245ac27733e998b6b07e270530f66f6bcdaa98", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "775089eaafac4ffdcc063d719a128c4c93a1985edef41ec127c71c15bd0943b1", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "41a05ae0de54aa39cc3aad01b942cdca237ba0e3563322a8ecdda3c848d1ea89", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "bd6b40d7ae006788db39f31ec86e42169edb32239021e283a00ac2964f2bebbe", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "8576000b00c1be1d8fdf0638c1bb2c344804c60e7768d737cc6d160b9e94b719", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "740f88fb5ef70c1f24b488ca3a5a0680bfa7684e5b31cf072e228171df9d74bd", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "1b48d7cfbb653c2cd562e1d660d68bf8184e442d01b9072444af46062b56c7a2", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "b8a9aa0a21b1de38c53b50009e6eab3815ed20adf130824cf6e2aa46d08a60f8", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "8e530380defc1213d141110ebbf61afce3a88810fc69c624134664f64505d377", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c9c330b8992ee815766a3fab01a7645abd1d6052811ffff131a94bc7463003b0", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "739e8de2ea6b32761368764a71c58080b1681b01fc71aa7c80779b321447c3f0", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "108d774249ed92c8fba2691aebd948cf7838c52015b4a15c02db5bfc9d6fe5d3", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ade0899bf79556c28959438700567564c8a8065dd92d81b6839aa0b1200216a4", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "4a945f3abfc1d67a3691d82f21bef4364b7b1b99a58826608e138b3c809a2b0f", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", @@ -22588,22 +22588,22 @@ "T3T1_fr_test_language.py::test_error_invalid_signature": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", "T3T1_fr_test_language.py::test_error_too_long": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", "T3T1_fr_test_language.py::test_error_version_mismatch": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_full_language_change[cs]": "b17431a711f150c6f9aa32f2f3759435bcda4bfa3f29081df07b837abb5cc741", -"T3T1_fr_test_language.py::test_full_language_change[de]": "6608898fde56463747ad89c4e9671db3b0d4bac7cd8572d84351091967c5e081", +"T3T1_fr_test_language.py::test_full_language_change[cs]": "e6b765d9c115e7daac458a900dd21b1471a76d19863c3ff2563e659e09b5b9bd", +"T3T1_fr_test_language.py::test_full_language_change[de]": "c013d7ad195c5eed8690687938dc3c0954e7b851305b0ff7a2253c213619e14a", "T3T1_fr_test_language.py::test_full_language_change[en]": "69396b93a7625119c7d975958f76bad9fc3c7205886399dd140e9b349a772a70", "T3T1_fr_test_language.py::test_full_language_change[es]": "106369f4edd63c8d8f944dd2db6efd2db564eecd3fe5d32d498e84335e52f831", "T3T1_fr_test_language.py::test_full_language_change[fr]": "f412523214b630e19025608a766a49f4ab164e665807b4352ce181d6e1187aa4", -"T3T1_fr_test_language.py::test_header_trailing_data": "ad7fd20e20cbd6166e8bf2402d1619dc2694d067d5dd7ec51b4489f57c1ed125", +"T3T1_fr_test_language.py::test_header_trailing_data": "5eb574eceda92ba29ad18a78a5cb2b4916a654d4eb4540ba954904d50158a9be", "T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "d62937e9570d0a989face054bb9ea2148bac54230d3b08246ad5f56efda3acd7", "T3T1_fr_test_language.py::test_reject_update": "320fbdd3d6be3e1b16f9a4852e9f27f344ad61056e35467628e48ae960581e98", -"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "1bd30ae477edf769f359f3c4f814701ce06163b331893a44ecf987768ac2ad09", -"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "1bd30ae477edf769f359f3c4f814701ce06163b331893a44ecf987768ac2ad09", -"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "837c1340985e79eabb6f0ed36ee2bd270bcfd1e65e9f16cf5abf6bddb0c4f26d", -"T3T1_fr_test_language.py::test_switch_from_english[None]": "8719550d6e6adc7569222937af5385b22a186d881fe52239f7501fa588d85fed", -"T3T1_fr_test_language.py::test_switch_from_english[True]": "8719550d6e6adc7569222937af5385b22a186d881fe52239f7501fa588d85fed", +"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "2b5eaf0c1c0f3ce6dc3c7c3685638e8f6c0187b05e130f14a5f4ddc76f4d888b", +"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "2b5eaf0c1c0f3ce6dc3c7c3685638e8f6c0187b05e130f14a5f4ddc76f4d888b", +"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "9a719720811fdc36a01060e7cb797f514ec9826d16766d5d9f19f747415b080a", +"T3T1_fr_test_language.py::test_switch_from_english[None]": "d9f98fdfd0da31fba7cb8304385c744b523548eb612223f35107227b1fea4e04", +"T3T1_fr_test_language.py::test_switch_from_english[True]": "d9f98fdfd0da31fba7cb8304385c744b523548eb612223f35107227b1fea4e04", "T3T1_fr_test_language.py::test_switch_from_english_not_silent": "cb2b9211a28e57a3264d054fcf54fecc80a44ba40fe48dead24e24be14e8d0fc", -"T3T1_fr_test_language.py::test_switch_language": "13a94ffefa6c7ec7fe9c011ee0c697ef50bb4a7a816d4fd6a40d8331d5054d64", -"T3T1_fr_test_language.py::test_translations_renders_on_screen": "74d05ce87dfc17f6bd5b8991ef7a29495b23b6e59e087dd4430caefe1eb28041", +"T3T1_fr_test_language.py::test_switch_language": "639aa6446703772a348c240de37a4a7789e714bf1e8b9e5d1a4da7750362600c", +"T3T1_fr_test_language.py::test_translations_renders_on_screen": "09d6ddbff11d3f2f25cf17a3bdf26da546c689cf0ed4fac709992182625702ef", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "142719ce2b8655e9ca9e4de88f7cf79e5528f6c59aa731b0a014d6d9f955f036", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", @@ -22637,20 +22637,20 @@ "T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "3ae62610411e44eca0576920b6d043a5231b285e7f34db697b3b685cd68a3616", "T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "8be2ee6e83965b14f12cc625d1ed8d3ae8705a2f9717dd548fc168e2eb1e098b", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "a0dc6ffdafbdcbb85fe2e09ceb16fc58c2c83313373d7c0c60d05f1e1e5aa222", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "8f06246a31fc230d41f7bc1f0fb6e3c521203355e3713f5068bb121a281f2b8f", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "429b85f2924d25626145986d5e35351946f1a56ccff42f83f57fe602019d8066", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "34f25ad7e12a8e8edacde34239a7eda19a2366e0eb17654b34cec4522b4e0602", "T3T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "48e8eb0818213f65cb3fc527344ba04001943a15435d09278b188aa462d483f2", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "0d4277842c3f8195d3ec748ea82586da5bcd2a61eedea8d8c3d36aef14aafff8", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "31e2ee65e6825a461042d6feb0c64a0759054d5a56ca8d24d9d80b6423db2f38", "T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "18e1834e08ebb4bfe885f54b36edb9acff434e3d1682ef9b8303b21ae2ab8105", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "ab4acdd890a084e6041b9c385d4b4f4c331f29eec77bbcb69b4e99b3f8d554c8", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "8c171ce75274153912dea13ba981e01b8a284337dcf57b45ee31bd584ea1734a", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "8c171ce75274153912dea13ba981e01b8a284337dcf57b45ee31bd584ea1734a", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T3T1_fr_test_pin.py::test_correct_pin": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", "T3T1_fr_test_pin.py::test_exponential_backoff_t2": "821d7af227908754deb0588c3b7a5185d5de0a39e4031e47ac1166fe30be6655", "T3T1_fr_test_pin.py::test_incorrect_pin_t2": "3b0bce557549e02d0c06a271481e4359b9e9cd1f6e59aeb76bface584e21e1f3", @@ -22679,26 +22679,26 @@ "T3T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_session_recycling": "d78bebd26769d50fc64b78410dcde69f40b510c86f858ee360c20b55f05a5676", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "90b30e647d6cdc148221ce080f7f925e53756015de9084e254bc816740649388", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "1b99f1ac93c58b1204fb0be7c05c78ef0edee97591ae003dcf0bbcc7271ccc39", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "bd7fc5d8d4c1145f53f30de022aae78e5b8c9da26e2c8028dc24c7a63a0e4125", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "032a42e40594526040a1fbdd16f85cca634a4788fce876bb9c5d210fdcf14f96", +"T3T1_fr_test_session.py::test_session_recycling": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "40a58d0f0072a17f9f52b30fcd4741db16aa35b9cca7418cf33328c5b69fc6d9", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "2c455a7df6cd8ea51b882090a2879c58c8f7d9ddbf4715056d21d58919d21b54", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5c3ee50ed554d815add3d28dd95be64da4755c57b0ad1c8d4fa355f9c9aa8c53", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "4b068c0a109ca07d0eb805af47f80a14fd1f541802a13198c56572265267ddfe", "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "3b287aa610be74787c226147a9d0f90b3dfa845888c4544dba4a2cc21ae9b8bb", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "be591b806eb0394b145578e6adeed0c16698f89e47c880495616095e0bbe39f5", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "5d1700b76f711709576f9bb72a5d271fb38e8c2f8a747cd5d18549d499c9d40b", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "dd6881bd84dc3123aefc7101004028ed19c887450b4f7dc9ac34be26d9bc7477", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8db9a2054d1880b21094c1130d66606c88558e57d0187b315000a9df5c9974e2", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "b08648e55c692a88d7b254e5a2e47cf3d7193c5e078d86b7c5e1c342c2a7cd3b", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "929d5b2d0ea1a22ea66d71ef532824c9a0bdeda2a5c402fb22ac531082842330", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "d4e0c3c8498bb5a8ea6091a2aacecebcaaaad231232964c92eb02b20edc195cf", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "5b433835ec11b6297a628891ec1b2264e9fd1ecc88cbabfc52382c7972c7cf5f", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c4585c060afed6a846facf4909e7705d64f93673f5711a4e62fcbbc1020be275", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b80498105334cc6c0c17dbbaef4d2f012004f4df8ff461d94a992fef1ae567b4", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "781da6f1be1715db1139b5859a65bf608fd4c3cb1eea1f8df563fd42237f5b8a", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "ec6e80f9bb9bb9f17b3e166b51f744d6cfe83397f007d8b6d2084e9004d52bcd", "T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "1da1e2156d2f115a068bef65e5052472767c5291e547af1e951be95ce1f20fcb", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aa8f4c5126cf852694f81e5768fde2024c96aba72c491e07be8336d2e4ccc300", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "2a74640a8ccc6a1f86e8957b625d87a61dd6157e93a92f5e857ffbdbc2678103", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "9568f825fb2a99e7a20fd2d9c2a8bc6e4b0cb6e43c9fe4f2b7752d11800b0649", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "506792c673183891922f45245cc59a8e888d10ce41ad4c43a046d6ffd7989b31", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "fd43d8ac72dfca2d30e5e4801e245890ff905fda5390ec22f35dc1a8f78f92df", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "3929a75f20d7cd33aaa6f3d6b9cabf1f801b0fac78f23892e43e0da93e359bcd", @@ -22708,7 +22708,7 @@ "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5fc6054169122b15bd55c88909cfc4bebc12e5e1262db1047c60dd3aad323f51", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "71e98e2b347c735ab4090569029887bf7979cec3efd6c91c2b0c84835d07c19b", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e6916524e799f6ef629a1d1fa6c0380b83d1f782e10c60e411594a7589a4abbd", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "10f5c22194ebabd987217ef45a9ed36b9c28528d5401667390b144e66543276c", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5315713b449b814cbdd85f565ca50480d69e0e679402026935605fb23955c50f", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "9c292f8742a362bb2c0be0e76331ee372d1b96a663b4ef20f2fdeecefc3b6feb", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b6ee69f00fb63b280633844569b11ec623a18d715a76ffb45550932f9e085b50", "T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "6013c9907b5a4628d333c89c440bb6598bf7bc1085062b18fefe1079469206ec", From 2e58a4959f99f53d3155b3cabfafafb26d498ed1 Mon Sep 17 00:00:00 2001 From: M1nd3r <petrsedlacek.km@seznam.cz> Date: Wed, 8 May 2024 13:41:27 +0200 Subject: [PATCH 028/626] docs(core): fix reference to SLIP-23 in cardano node derivation [no changelog] --- core/src/apps/cardano/seed.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/apps/cardano/seed.py b/core/src/apps/cardano/seed.py index 4a7f7b2674..f7b6cfd2ff 100644 --- a/core/src/apps/cardano/seed.py +++ b/core/src/apps/cardano/seed.py @@ -171,7 +171,7 @@ async def _get_keychain(derivation_type: CardanoDerivationType) -> Keychain: if mnemonic.is_bip39(): return await _get_keychain_bip39(derivation_type) else: - # derive the root node via SLIP-0023 https://github.com/satoshilabs/slips/blob/master/slip-0022.md + # derive the root node via SLIP-0023 https://github.com/satoshilabs/slips/blob/master/slip-0023.md seed = await get_seed() return Keychain(cardano.from_seed_slip23(seed)) From 04d501722851a49e1b0b576cfa2f5189ec0dea31 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Mon, 29 Apr 2024 10:37:00 +0200 Subject: [PATCH 029/626] feat(core): improve loader haptic effect [no changelog] --- core/embed/rust/build.rs | 3 +- core/embed/rust/src/trezorhal/haptic.rs | 6 +++ .../rust/src/ui/model_tt/component/loader.rs | 7 +++- core/embed/trezorhal/haptic.h | 7 ++++ .../stm32u5/haptic/drv2625/drv2625.c | 42 ++++++++++++------- 5 files changed, 47 insertions(+), 18 deletions(-) diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index fffd32346c..2bac7e7b9c 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -358,7 +358,8 @@ fn generate_trezorhal_bindings() { .allowlist_function("button_read") // haptic .allowlist_type("haptic_effect_t") - .allowlist_function("haptic_play"); + .allowlist_function("haptic_play") + .allowlist_function("haptic_play_rtp"); // Write the bindings to a file in the OUR_DIR. bindings diff --git a/core/embed/rust/src/trezorhal/haptic.rs b/core/embed/rust/src/trezorhal/haptic.rs index d76474c2b3..9a07149e3f 100644 --- a/core/embed/rust/src/trezorhal/haptic.rs +++ b/core/embed/rust/src/trezorhal/haptic.rs @@ -11,3 +11,9 @@ pub fn play(effect: HapticEffect) { ffi::haptic_play(effect as _); } } + +pub fn play_rtp(amplitude: i8, duration: u16) { + unsafe { + ffi::haptic_play_rtp(amplitude, duration); + } +} diff --git a/core/embed/rust/src/ui/model_tt/component/loader.rs b/core/embed/rust/src/ui/model_tt/component/loader.rs index ebac3b3aac..7dfb92e627 100644 --- a/core/embed/rust/src/ui/model_tt/component/loader.rs +++ b/core/embed/rust/src/ui/model_tt/component/loader.rs @@ -1,5 +1,5 @@ #[cfg(feature = "haptic")] -use crate::trezorhal::haptic::{play, HapticEffect}; +use crate::trezorhal::haptic::{self, play, HapticEffect}; use crate::{ time::{Duration, Instant}, ui::{ @@ -7,6 +7,7 @@ use crate::{ component::{Component, Event, EventCtx, Pad}, display::{self, toif::Icon, Color}, geometry::{Offset, Rect}, + lerp::Lerp, model_tt::constant, util::animation_disabled, }, @@ -173,6 +174,10 @@ impl Component for Loader { } else if self.is_completely_shrunk(now) { return Some(LoaderMsg::ShrunkCompletely); } else { + let progress = self.progress(now).unwrap() as f32 / 1000.0; + let ampl = i16::lerp(0, 76, progress); + haptic::play_rtp(ampl as i8, 100); + // There is further progress in the animation, request an animation frame event. ctx.request_anim_frame(); } diff --git a/core/embed/trezorhal/haptic.h b/core/embed/trezorhal/haptic.h index 2cd4c2911c..1b99cac4f1 100644 --- a/core/embed/trezorhal/haptic.h +++ b/core/embed/trezorhal/haptic.h @@ -23,4 +23,11 @@ bool haptic_test(uint16_t duration_ms); // Play haptic effect void haptic_play(haptic_effect_t effect); +// Starts the haptic motor with a specified amplitude and period +// +// The function can be invoked repeatedly during the specified duration +// (`duration_ms`) to modify the amplitude dynamically, allowing +// the creation of customized haptic effects. +bool haptic_play_rtp(int8_t amplitude, uint16_t duration_ms); + #endif diff --git a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c index 8c4a0703ff..21121d2349 100644 --- a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c +++ b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c @@ -94,6 +94,11 @@ void haptic_calibrate(void) { HAL_Delay(3000); } +// Set to `true` if real-time playing is activated. to +// This prevents the repeated set of `DRV2625_REG_MODE` register +// which would otherwise stop all playback. +static bool playing_rtp = false; + void haptic_init(void) { // select library set_reg(DRV2625_REG_LIBRARY, LIB_SEL | DRV2625_REG_LIBRARY_GAIN_25); @@ -124,26 +129,29 @@ void haptic_init(void) { TIM_Handle.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; TIM_Handle.Init.CounterMode = TIM_COUNTERMODE_UP; TIM_Handle.Init.RepetitionCounter = 0; - HAL_TIM_PWM_Init(&TIM_Handle); + HAL_TIM_OnePulse_Init(&TIM_Handle, TIM_OPMODE_SINGLE); - TIM_OC_InitTypeDef TIM_OC_InitStructure = {0}; - TIM_OC_InitStructure.OCMode = TIM_OCMODE_PWM2; - TIM_OC_InitStructure.OCPolarity = TIM_OCPOLARITY_HIGH; - TIM_OC_InitStructure.Pulse = 1; - TIM_OC_InitStructure.OCNPolarity = TIM_OCNPOLARITY_HIGH; - TIM_OC_InitStructure.OCFastMode = TIM_OCFAST_DISABLE; - HAL_TIM_PWM_ConfigChannel(&TIM_Handle, &TIM_OC_InitStructure, TIM_CHANNEL_1); + TIM_OnePulse_InitTypeDef TIM_OP_InitStructure = {0}; + TIM_OP_InitStructure.OCMode = TIM_OCMODE_PWM2; + TIM_OP_InitStructure.OCPolarity = TIM_OCPOLARITY_HIGH; + TIM_OP_InitStructure.Pulse = 1; + TIM_OP_InitStructure.OCNPolarity = TIM_OCNPOLARITY_HIGH; + HAL_TIM_OnePulse_ConfigChannel(&TIM_Handle, &TIM_OP_InitStructure, + TIM_CHANNEL_1, TIM_CHANNEL_2); HAL_TIM_OC_Start(&TIM_Handle, TIM_CHANNEL_1); - TIM16->CR1 |= TIM_CR1_OPM; TIM16->BDTR |= TIM_BDTR_MOE; } -static bool haptic_play_RTP(int8_t amplitude, uint16_t duration_ms) { - if (!set_reg(DRV2625_REG_MODE, - DRV2625_REG_MODE_RTP | DRV2625_REG_MODE_TRGFUNC_ENABLE)) { - return false; +bool haptic_play_rtp(int8_t amplitude, uint16_t duration_ms) { + if (!playing_rtp) { + if (!set_reg(DRV2625_REG_MODE, + DRV2625_REG_MODE_RTP | DRV2625_REG_MODE_TRGFUNC_ENABLE)) { + return false; + } + + playing_rtp = true; } if (!set_reg(DRV2625_REG_RTP, (uint8_t)amplitude)) { @@ -166,6 +174,8 @@ static bool haptic_play_RTP(int8_t amplitude, uint16_t duration_ms) { } static void haptic_play_lib(drv2625_lib_effect_t effect) { + playing_rtp = false; + set_reg(DRV2625_REG_MODE, DRV2625_REG_MODE_WAVEFORM); set_reg(DRV2625_REG_WAVESEQ1, effect); set_reg(DRV2625_REG_WAVESEQ2, 0); @@ -175,13 +185,13 @@ static void haptic_play_lib(drv2625_lib_effect_t effect) { void haptic_play(haptic_effect_t effect) { switch (effect) { case HAPTIC_BUTTON_PRESS: - haptic_play_RTP(PRESS_EFFECT_AMPLITUDE, PRESS_EFFECT_DURATION); + haptic_play_rtp(PRESS_EFFECT_AMPLITUDE, PRESS_EFFECT_DURATION); break; case HAPTIC_ALERT: haptic_play_lib(ALERT_750MS_100); break; case HAPTIC_HOLD_TO_CONFIRM: - haptic_play_lib(TRANSITION_RAMP_UP_SHORT_SMOOTH_1); + haptic_play_lib(DOUBLE_CLICK_60); break; default: break; @@ -189,5 +199,5 @@ void haptic_play(haptic_effect_t effect) { } bool haptic_test(uint16_t duration_ms) { - return haptic_play_RTP(PRODTEST_EFFECT_AMPLITUDE, duration_ms); + return haptic_play_rtp(PRODTEST_EFFECT_AMPLITUDE, duration_ms); } From c680187b0ebeec74c32253bc6ddb2047314b6f8c Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 2 May 2024 09:27:53 +0200 Subject: [PATCH 030/626] feat(core): add disable haptic option to tt ui button [no changelog] --- .../rust/src/ui/model_tt/component/button.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/core/embed/rust/src/ui/model_tt/component/button.rs b/core/embed/rust/src/ui/model_tt/component/button.rs index fdf11ca15f..3517053472 100644 --- a/core/embed/rust/src/ui/model_tt/component/button.rs +++ b/core/embed/rust/src/ui/model_tt/component/button.rs @@ -1,5 +1,5 @@ #[cfg(feature = "haptic")] -use crate::trezorhal::haptic::{play, HapticEffect}; +use crate::trezorhal::haptic::{self, HapticEffect}; use crate::{ strutil::TString, time::Duration, @@ -30,6 +30,7 @@ pub struct Button { state: State, long_press: Option<Duration>, long_timer: Option<TimerToken>, + haptics: bool, } impl Button { @@ -46,6 +47,7 @@ impl Button { state: State::Initial, long_press: None, long_timer: None, + haptics: true, } } @@ -84,6 +86,11 @@ impl Button { self } + pub const fn without_haptics(mut self) -> Self { + self.haptics = false; + self + } + pub fn enable_if(&mut self, ctx: &mut EventCtx, enabled: bool) { if enabled { self.enable(ctx); @@ -252,7 +259,9 @@ impl Component for Button { // Touch started in our area, transform to `Pressed` state. if touch_area.contains(pos) { #[cfg(feature = "haptic")] - play(HapticEffect::ButtonPress); + if self.haptics { + haptic::play(HapticEffect::ButtonPress); + } self.set(ctx, State::Pressed); if let Some(duration) = self.long_press { self.long_timer = Some(ctx.request_timer(duration)); @@ -296,7 +305,9 @@ impl Component for Button { self.long_timer = None; if matches!(self.state, State::Pressed) { #[cfg(feature = "haptic")] - play(HapticEffect::ButtonPress); + if self.haptics { + haptic::play(HapticEffect::ButtonPress); + } self.set(ctx, State::Initial); return Some(ButtonMsg::LongPressed); } From d04ecba815a464ed4c65ff9552cda16ee7a45dc9 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 2 May 2024 09:29:05 +0200 Subject: [PATCH 031/626] fix(core): fix tt ui loader haptic feedback [no changelog] --- core/embed/rust/build.rs | 2 +- core/embed/rust/src/trezorhal/haptic.rs | 4 ++-- .../rust/src/ui/model_tt/component/loader.rs | 19 ++++++++++++++----- .../rust/src/ui/model_tt/component/page.rs | 5 +++-- core/embed/trezorhal/haptic.h | 2 +- .../stm32u5/haptic/drv2625/drv2625.c | 14 +++++++++++++- 6 files changed, 34 insertions(+), 12 deletions(-) diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index 2bac7e7b9c..edc8d983c1 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -359,7 +359,7 @@ fn generate_trezorhal_bindings() { // haptic .allowlist_type("haptic_effect_t") .allowlist_function("haptic_play") - .allowlist_function("haptic_play_rtp"); + .allowlist_function("haptic_play_custom"); // Write the bindings to a file in the OUR_DIR. bindings diff --git a/core/embed/rust/src/trezorhal/haptic.rs b/core/embed/rust/src/trezorhal/haptic.rs index 9a07149e3f..a1f75700e3 100644 --- a/core/embed/rust/src/trezorhal/haptic.rs +++ b/core/embed/rust/src/trezorhal/haptic.rs @@ -12,8 +12,8 @@ pub fn play(effect: HapticEffect) { } } -pub fn play_rtp(amplitude: i8, duration: u16) { +pub fn play_custom(amplitude_pct: i8, duration_ms: u16) { unsafe { - ffi::haptic_play_rtp(amplitude, duration); + ffi::haptic_play_custom(amplitude_pct, duration_ms); } } diff --git a/core/embed/rust/src/ui/model_tt/component/loader.rs b/core/embed/rust/src/ui/model_tt/component/loader.rs index 7dfb92e627..3de7dac8e8 100644 --- a/core/embed/rust/src/ui/model_tt/component/loader.rs +++ b/core/embed/rust/src/ui/model_tt/component/loader.rs @@ -1,5 +1,5 @@ #[cfg(feature = "haptic")] -use crate::trezorhal::haptic::{self, play, HapticEffect}; +use crate::trezorhal::haptic::{self, HapticEffect}; use crate::{ time::{Duration, Instant}, ui::{ @@ -18,6 +18,9 @@ use super::theme; const GROWING_DURATION_MS: u32 = 1000; const SHRINKING_DURATION_MS: u32 = 500; +const HAPTIC_AMPLITUDE_MAX_PCT: i16 = 16; +const HAPTIC_AMPLITUDE_DURATION_MS: u16 = 100; + pub enum LoaderMsg { GrownCompletely, ShrunkCompletely, @@ -169,14 +172,20 @@ impl Component for Loader { if self.is_completely_grown(now) { #[cfg(feature = "haptic")] - play(HapticEffect::HoldToConfirm); + haptic::play(HapticEffect::HoldToConfirm); return Some(LoaderMsg::GrownCompletely); } else if self.is_completely_shrunk(now) { return Some(LoaderMsg::ShrunkCompletely); } else { - let progress = self.progress(now).unwrap() as f32 / 1000.0; - let ampl = i16::lerp(0, 76, progress); - haptic::play_rtp(ampl as i8, 100); + #[cfg(feature = "haptic")] + { + if matches!(self.state, State::Growing(_)) { + let progress = + self.progress(now).unwrap() as f32 / display::LOADER_MAX as f32; + let ampl = i16::lerp(0, HAPTIC_AMPLITUDE_MAX_PCT, progress); + haptic::play_custom(ampl as i8, HAPTIC_AMPLITUDE_DURATION_MS); + } + } // There is further progress in the animation, request an animation frame event. ctx.request_anim_frame(); diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index 4bbc187da1..b8040ce5e1 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -49,8 +49,9 @@ where T: Component, { pub fn with_hold(mut self) -> Result<Self, Error> { - self.button_confirm = - Button::with_text(TR::buttons__hold_to_confirm.into()).styled(theme::button_confirm()); + self.button_confirm = Button::with_text(TR::buttons__hold_to_confirm.into()) + .styled(theme::button_confirm()) + .without_haptics(); self.loader = Some(Loader::new()); Ok(self) } diff --git a/core/embed/trezorhal/haptic.h b/core/embed/trezorhal/haptic.h index 1b99cac4f1..c54db4a285 100644 --- a/core/embed/trezorhal/haptic.h +++ b/core/embed/trezorhal/haptic.h @@ -28,6 +28,6 @@ void haptic_play(haptic_effect_t effect); // The function can be invoked repeatedly during the specified duration // (`duration_ms`) to modify the amplitude dynamically, allowing // the creation of customized haptic effects. -bool haptic_play_rtp(int8_t amplitude, uint16_t duration_ms); +bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms); #endif diff --git a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c index 21121d2349..bcc216f218 100644 --- a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c +++ b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c @@ -78,6 +78,7 @@ #define PRESS_EFFECT_AMPLITUDE 25 #define PRESS_EFFECT_DURATION 10 +#define MAX_AMPLITUDE 127 #define PRODTEST_EFFECT_AMPLITUDE 127 static bool set_reg(uint8_t addr, uint8_t value) { @@ -144,7 +145,7 @@ void haptic_init(void) { TIM16->BDTR |= TIM_BDTR_MOE; } -bool haptic_play_rtp(int8_t amplitude, uint16_t duration_ms) { +static bool haptic_play_rtp(int8_t amplitude, uint16_t duration_ms) { if (!playing_rtp) { if (!set_reg(DRV2625_REG_MODE, DRV2625_REG_MODE_RTP | DRV2625_REG_MODE_TRGFUNC_ENABLE)) { @@ -198,6 +199,17 @@ void haptic_play(haptic_effect_t effect) { } } +bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms) { + if (amplitude_pct < 0) { + amplitude_pct = 0; + } else if (amplitude_pct > 100) { + amplitude_pct = 100; + } + + return haptic_play_rtp((int8_t)((amplitude_pct * MAX_AMPLITUDE) / 100), + duration_ms); +} + bool haptic_test(uint16_t duration_ms) { return haptic_play_rtp(PRODTEST_EFFECT_AMPLITUDE, duration_ms); } From 5ef428ef5568d134975715a70ec5c85b30b2500c Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 9 May 2024 15:21:46 +0200 Subject: [PATCH 032/626] ci: run common.yml and prebuild.yml nightly --- .github/workflows/common.yml | 6 +++++- .github/workflows/prebuild.yml | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/common.yml b/.github/workflows/common.yml index 44a95bcfdf..60ec8231fa 100644 --- a/.github/workflows/common.yml +++ b/.github/workflows/common.yml @@ -1,6 +1,10 @@ name: Common -on: [pull_request] +on: + pull_request: + workflow_dispatch: + schedule: + - cron: '14 23 * * *' # every day @ 23:14 jobs: crypto_build: diff --git a/.github/workflows/prebuild.yml b/.github/workflows/prebuild.yml index 61b827c2b4..22e03a12c9 100644 --- a/.github/workflows/prebuild.yml +++ b/.github/workflows/prebuild.yml @@ -1,6 +1,10 @@ name: "Prebuild checks" -on: [pull_request] +on: + pull_request: + workflow_dispatch: + schedule: + - cron: '13 23 * * *' # every day @ 23:13 jobs: block-fixup: @@ -54,7 +58,7 @@ jobs: # or contain `[no changelog]` in the commit message. changelog_check: name: Changelog check - if: ${{ github.ref != 'main' }} + if: ${{ github.ref != 'main' && github.event_name == 'pull_request' }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 067daa790c357759b50ea99e7562f157b9ed92a8 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 9 May 2024 15:22:36 +0200 Subject: [PATCH 033/626] ci: bump action dependencies --- .github/actions/ui-comment/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/ui-comment/action.yml b/.github/actions/ui-comment/action.yml index 7ae49e7197..e72e7b4d7c 100644 --- a/.github/actions/ui-comment/action.yml +++ b/.github/actions/ui-comment/action.yml @@ -4,7 +4,7 @@ runs: using: composite steps: - name: Find Comment - uses: peter-evans/find-comment@v2 + uses: peter-evans/find-comment@v3 id: fc if: github.event_name == 'pull_request' with: @@ -13,7 +13,7 @@ runs: body-includes: ui-comment-${{ github.workflow }} - name: Create or update comment - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@v4 if: github.event_name == 'pull_request' with: comment-id: ${{ steps.fc.outputs.comment-id }} From 946e855e5d2cd11ccd934c768a6ae3729c368799 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 9 May 2024 15:27:57 +0200 Subject: [PATCH 034/626] ci: actions: don't fill logs with junk when uploading to s3 --- .github/actions/ui-report/action.yml | 4 ++-- .github/workflows/core.yml | 5 +++-- .github/workflows/legacy.yml | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/actions/ui-report/action.yml b/.github/actions/ui-report/action.yml index f8d360e337..170e902602 100644 --- a/.github/actions/ui-report/action.yml +++ b/.github/actions/ui-report/action.yml @@ -38,12 +38,12 @@ runs: shell: sh - name: Upload report run: | - aws s3 sync ${{ github.run_id }} s3://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }} + aws s3 sync --no-progress ${{ github.run_id }} s3://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }} echo "[UI test report](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/${{ inputs.model }}-${{ inputs.lang }}-${{ github.job }}/index.html)" >> $GITHUB_STEP_SUMMARY shell: sh - name: Upload test screen recording run: | - aws s3 sync ci/ui_test_records s3://data.trezor.io/dev/firmware/ui_tests + aws s3 sync --no-progress ci/ui_test_records s3://data.trezor.io/dev/firmware/ui_tests # TODO: generate directory listing / autoindex shell: sh - uses: actions/upload-artifact@v4 diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 3e36703565..e590021997 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -690,7 +690,7 @@ jobs: fi - name: Upload diff from main branch run: | - aws s3 sync master_diff s3://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }} + aws s3 sync --no-progress master_diff s3://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }} continue-on-error: true core_ui_comment: @@ -706,6 +706,7 @@ jobs: git diff --quiet origin/main...HEAD -- tests/ui_tests/fixtures.json || echo "FIXTURES_CHANGED=$?" >> $GITHUB_OUTPUT id: check-fixtures-changed - uses: ./.github/actions/ui-comment + # TODO: always run if comment already exists if: ${{ steps.check-fixtures-changed.outputs.FIXTURES_CHANGED == '1' }} core_upload_emu: @@ -726,7 +727,7 @@ jobs: continue-on-error: true - run: | rm unix/trezor-emu-core - aws s3 sync unix s3://data.trezor.io/dev/firmware/emu-nightly + aws s3 sync --no-progress unix s3://data.trezor.io/dev/firmware/emu-nightly # Connect # TODO: core_connect_test diff --git a/.github/workflows/legacy.yml b/.github/workflows/legacy.yml index d3eb4e98da..7793076632 100644 --- a/.github/workflows/legacy.yml +++ b/.github/workflows/legacy.yml @@ -183,7 +183,7 @@ jobs: fi - name: Upload main branch diff run: | - aws s3 sync master_diff s3://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }} + aws s3 sync --no-progress master_diff s3://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }} continue-on-error: true legacy_ui_comment: @@ -199,6 +199,7 @@ jobs: git diff --quiet origin/main...HEAD -- tests/ui_tests/fixtures.json || echo "FIXTURES_CHANGED=$?" >> $GITHUB_OUTPUT id: check-fixtures-changed - uses: ./.github/actions/ui-comment + # TODO: always run if comment already exists if: ${{ steps.check-fixtures-changed.outputs.FIXTURES_CHANGED == '1' }} core_upload_emu: @@ -220,4 +221,4 @@ jobs: - run: | mkdir emulators cp trezor-emu-legacy* emulators - aws s3 sync emulators s3://data.trezor.io/dev/firmware/emu-nightly + aws s3 sync --no-progress emulators s3://data.trezor.io/dev/firmware/emu-nightly From 447c680b885224953d6942ec9586d15888436ff8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C5=A0etina?= <57008159+Hannsek@users.noreply.github.com> Date: Thu, 9 May 2024 15:29:35 +0200 Subject: [PATCH 035/626] chore(core): update cs.json and fixtures Fixes https://github.com/trezor/trezor-firmware/issues/3697 [no changelog] --- core/translations/cs.json | 2 +- core/translations/signatures.json | 6 +- tests/ui_tests/fixtures.json | 300 +++++++++++++++--------------- 3 files changed, 154 insertions(+), 154 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 176eb0de42..ac85585688 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -510,7 +510,7 @@ "pin__title_check_pin": "Zkontrolovat PIN", "pin__title_settings": "Nastavení PIN kódu", "pin__title_wrong_pin": "Nesprávný PIN kód", - "pin__tries_left": "zbývajících pokusů", + "pin__tries_left": "pokusů", "pin__turn_off": "Opravdu chcete vypnout ochranu PIN kódem?", "pin__turn_on": "Zapnout ochranu PIN kódem?", "pin__wrong_pin": "Nesprávný PIN", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 648ba06e5d..83ce720dcb 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "3914b5ae3576923ab539501e2f1789c5b9aa20c6a64dbf1429e2e3aeb49e2aa5", - "datetime": "2024-05-07T15:07:13.690256", - "commit": "d9d7aebd48c6fde3262b3e7f89a4c30d5d27dfde" + "merkle_root": "7f6adc6048cb1450b2eb0cba49f4762a8cb1085773dbe8d33edd43243a3e31e9", + "datetime": "2024-05-09T14:36:52.807566", + "commit": "5580746b680d08cff6b1c6073bbcaec611790a12" }, "history": [ { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 6e0ba27955..0fd875cf04 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -761,7 +761,7 @@ "T2B1_cs_test_pin.py::test_pin_change": "8b7d47098fcd794be49486e10b4741923fb8e7b45c0d3542adbcc2126b194691", "T2B1_cs_test_pin.py::test_pin_delete_hold": "14f636bb512ddbd199f98d0084e25636bc1b6e61bad3c392327d073c0949c3cc", "T2B1_cs_test_pin.py::test_pin_empty_cannot_send": "f5a9eab8ae7fcba02628bc5d3af9b1b05e978fd6c07381bab96d9b8c5d0a9cb7", -"T2B1_cs_test_pin.py::test_pin_incorrect": "553f416caf4529f60b5729ec165e92b00758360482cc588393499d9687058bbf", +"T2B1_cs_test_pin.py::test_pin_incorrect": "0a60b46ad40816b76660505ac83d260f48ab7808e15a810daa18fe19714fcaa1", "T2B1_cs_test_pin.py::test_pin_long": "def7f1ed3d39a71a961671e84048664f0ac8f5881f28907cac69d3191992b32b", "T2B1_cs_test_pin.py::test_pin_long_delete": "bb6e0ce9ae0ba2275aad2bd1fe55bd598a7a0aa8ba3a652ea575f4b1d9a8ce62", "T2B1_cs_test_pin.py::test_pin_longer_than_max": "e803370869e1d4d1e5712f0d50517b3dca111e80e764b757d0535c7a1dea09d3", @@ -2256,7 +2256,7 @@ "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1d56ba8d29b61fc3d41c197093da2fb465d1f0ff87622df2ceb599420f8cb78f", "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "375273cd94cf39a22e9fe082073ed5b390de87a366dc26490826eab60f7a7aaa", "T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "362719d37f5fb2296adf1b137a96f70ba507431a4a0390d4958bd0fcdd9f6443", -"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "ef462808efcd585f34026107f42294e48e6d13b68028d64ba157f957bdc20f8e", +"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "fc9c7caa47ac8366e1bb4fc0b8e781b7063d39f20eb03344f1cb0aa95f7df349", "T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "6d92c6a4f45a1751ed3795bf424c905bfb40f1266229be7b8fd23b2c9a7aafef", "T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "391220bb0e17eeb125a0ba7589ff6623d76b2bf8440aaf43d800b0b8ceffc9d2", "T2B1_cs_test_msg_changepin_t2.py::test_set_failed": "77677a25860127358ec60b8ddb191b1a6adb3f88461434c34b36db34eb33139b", @@ -2274,8 +2274,8 @@ "T2B1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3779415b770cec004f28d9626911b3ffad26d17e4f8ba978fff76932948ff3e2", "T2B1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3779415b770cec004f28d9626911b3ffad26d17e4f8ba978fff76932948ff3e2", "T2B1_cs_test_pin.py::test_correct_pin": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "8d9564cc8aba761a1db0ee46de0143ce61fcd42631442a14d48a893f15205726", -"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "2ee59f179703e1891d570c0906069b0a4d5ec7fcaa9656ce96e2670888d1440a", +"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "bb69d4668cff5eb0517e34e3b58308122cdf8288452f2f09f76fb52cb6852e9a", +"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "72f00ba9b833ed091df10e375a996e56cc17529c03d0984a26f1133adc616247", "T2B1_cs_test_pin.py::test_no_protection": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_protection_levels.py::test_apply_settings": "aa9ce7c028eb5ff7ea7a9d8ccaffc3cdddbef9c4d6ad9567c10385a2877c20d7", "T2B1_cs_test_protection_levels.py::test_change_pin_t2": "2144c7b84a45efbc176bffd6aebbcbfeb602bedb6948474b485d02d4d6bd6c6a", @@ -7846,18 +7846,18 @@ }, "T2T1": { "click_tests": { -"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "4bcaa7a1bef5eeaae5986c41c41515f1bc34012e5937eb0f80fade2298640dd8", -"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "e41ad75157c3c84e572dffe37b0b88ad26fe0510eded16102d07cb41b8dd36c7", -"T2T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "05b1c0ec28c40a0ca351e846714fd1a086ae2d339025a370ec981d721e9cbedc", -"T2T1_cs_test_autolock.py::test_autolock_interrupts_signing": "e8909c5220a43b661ee35d0edb62469fbd57f0e53a5dc57e1fa72d0adc4f6c65", -"T2T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "4bebadba7031a4162cd48a3208c6183727132daa04cc16ab4476cb2dd79f20c0", -"T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "ebe72ee4f6abe32d5d030984f6f1be044e05bee84e63f5ee52bd066df4e97927", -"T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "ca44273b8dd6d519ff6eaf7b88e200e7c679cb64e4bbac6d6f93f8376e956939", -"T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "b08f61db4eede3c346f278e2b96cd2135b6f4bd8ea666acc30abfac990f79d3c", +"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "20625261187abd2f01b49fbe13b128fa88638addb802420050ed0d0492bc33fc", +"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "0a4ef50c4cd61493f1af0119a681924898b1270bbf68bd0ca6ecc6c287ec579a", +"T2T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "e0d8d418d171904d809c7a30b2c9804da384463701c628df167e32d65a82ad5f", +"T2T1_cs_test_autolock.py::test_autolock_interrupts_signing": "c66ac8d285be5876d63ac3c75f078738eb2a668ec1cdfdef11f8d5ea643f66ad", +"T2T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "3fb6fef6b48ccc9523659b83e4e1d11e5d7f28a18f2ce6d74a58345333df8496", +"T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "a49f1063caaecd342dd10a75e19c7ef351fb2dbc78cb4289c67ef70f51b12d73", +"T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "14425620334e05b9f93534c9bbabf2a3d5300801085438c84a7f793727ecee65", +"T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "368df46fec1dee22dfbdc3975478143c805638c37c02ce62348759e0c3e61155", "T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "23d969786494c544567219644f9848ac66ebbf5c9da2fd1f18bfe85f948099ca", "T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "529f8aa61704bec95492e551b76ab31d848d7d98196a8d67b2ddbeaf1da19c7f", "T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "15b82c0d7736ee07f9a08ff80c2a53a5973306e8949805ffb70c348360f46842", -"T2T1_cs_test_lock.py::test_hold_to_lock": "b6fc997ab22d51731a7fa994b2849970b5e83c38b0108584910bcf5c8fe47e53", +"T2T1_cs_test_lock.py::test_hold_to_lock": "cae9be494e1bf8cbc1b0a37835e6b4892cec88757ad2b0e4e68f89f3f1f97e1b", "T2T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T2T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", "T2T1_cs_test_passphrase_tt.py::test_passphrase_delete": "c1f8c0a733563756481ed0aaf15d833cfd266b69fab7daa7eeca6deff738c404", @@ -7872,20 +7872,20 @@ "T2T1_cs_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "8a66f279dd55fb7867b0cd3b87a961589e3ec45d6e08320488fe2ba4bb834ddb", "T2T1_cs_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c60b0b0d19fe093de73e8b3ef3a7e65f6ea01ecc736ad6ed45fd44148d050716", "T2T1_cs_test_passphrase_tt.py::test_passphrase_prompt_disappears": "5fd1a1add04b6a38619bb1788676676aa68d900055597ea1cc2118d441bab710", -"T2T1_cs_test_pin.py::test_pin_cancel": "0c36a5443bb67f543bc3905fae9e27b9b25f2ddc0ea9f8a1c9b06a95c4bb2a40", -"T2T1_cs_test_pin.py::test_pin_change": "2845616391cf8e0a1fd7427a4ce5864b5b15037270743839695d01615747ec89", -"T2T1_cs_test_pin.py::test_pin_delete_hold": "34da57d7d43d1c4129e75da4b8471a699f4d1bad3aa4823dbeaca8fd8cfea694", -"T2T1_cs_test_pin.py::test_pin_empty_cannot_send": "471581ff46fa376c52b8d41c46edca5c486fe1d968a43bf392da03e092de275b", -"T2T1_cs_test_pin.py::test_pin_incorrect": "8c2e8b07d015869a5587e6979d661d875fa228b716e33fa59f6b1e966c485e49", -"T2T1_cs_test_pin.py::test_pin_long": "b9a4a3043bbb972f924892c0d2a03a97f1aac6a1d9cec021a00f80993174eff4", -"T2T1_cs_test_pin.py::test_pin_long_delete": "f31adbf0596f5af83e147a9a27a0352dfc14fa5e929a07eae944c296e2ffd558", -"T2T1_cs_test_pin.py::test_pin_longer_than_max": "e6adcf75f0130900156078a6939ce3ee0649088d38d12a61f4ed30eb007fdb5e", +"T2T1_cs_test_pin.py::test_pin_cancel": "1350a7290909796ef76a20ad1f1f4d849aecff45d6858a936369ac274c54ea3a", +"T2T1_cs_test_pin.py::test_pin_change": "7ce9ea97542f534ea8e86b0538107c3e2f38d6537c64c6e948c8c409b43142dd", +"T2T1_cs_test_pin.py::test_pin_delete_hold": "36a93d5278840d3063d161b70e52170f78c3709457b87bce39b8b840a555ec5c", +"T2T1_cs_test_pin.py::test_pin_empty_cannot_send": "3ec2f4fd92e7376200ca08ca0859a513237e83dbe34bd13b0d922248ac338212", +"T2T1_cs_test_pin.py::test_pin_incorrect": "2c2cddca2f07185f8a7fc313f88bf1dea0676a5aaea75123a0794a90dcd0eea5", +"T2T1_cs_test_pin.py::test_pin_long": "208786a56801e50e9d483d9721bee0e7e13ec9ecbc1158903ff776962553bb1c", +"T2T1_cs_test_pin.py::test_pin_long_delete": "ce5ae28be23baa1e26a4b0b4b0af3af7a3a2c7a4d2025f776e40b04336c38e27", +"T2T1_cs_test_pin.py::test_pin_longer_than_max": "4e2f2c929dd159a87d77dc51cf3dbf2f50da95ff0b00c34d9fafc19284c47a2f", "T2T1_cs_test_pin.py::test_pin_same_as_wipe_code": "980030b51cc93874fac581ecc3611d4ee3873ac9f00365a761008c16f9d2a5e4", "T2T1_cs_test_pin.py::test_pin_setup": "80e99ad1f29a091f2c6259ddb4af0963f3266bfcb3813719de9b3977aa8d797d", "T2T1_cs_test_pin.py::test_pin_setup_mismatch": "c14b4c71c2da514c485926d583e71985a6ee11e8abd2734c562852b85f69977e", -"T2T1_cs_test_pin.py::test_pin_short": "471581ff46fa376c52b8d41c46edca5c486fe1d968a43bf392da03e092de275b", -"T2T1_cs_test_pin.py::test_wipe_code_same_as_pin": "cdf7ecace7c4b62127e3e8c457a581ab21442197e8e8532ff3d25ddcb48ce6d1", -"T2T1_cs_test_pin.py::test_wipe_code_setup": "012967bec84ad17f8a07558a4bba4b365fc84d206e994da782e944849cfa60a2", +"T2T1_cs_test_pin.py::test_pin_short": "3ec2f4fd92e7376200ca08ca0859a513237e83dbe34bd13b0d922248ac338212", +"T2T1_cs_test_pin.py::test_wipe_code_same_as_pin": "2fa2d084bbc6b7319fd515cb41f0c878055f67a4466d3b663959320253992862", +"T2T1_cs_test_pin.py::test_wipe_code_setup": "42b3bb7a93311a5e5876d88fb02a20d829bb8b2b6ada710895ff9d8242f8f9ae", "T2T1_cs_test_recovery.py::test_recovery_bip39": "e8fc42659087a3b41e0e2db70cb3211895478d20fe7a775675ca6e2c06c1e77a", "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9fce49fe5cd46312732a8643f9f0dd2694b376722b344d7106d3f4ee57f30a57", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "c5e7eb0fb076bc6f1122a463c3b05c058dc3d59fed14d36e97b81b8bc34ccd15", @@ -8103,8 +8103,8 @@ "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b3cbfe5991c49b088827c9bb5d22e7b8267f85cc3ada3e0594b62845f2df75a9", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "509afffd6ed07242d5e2c5c1fe216e9a277f42d5f9d459084db3573f59bdc5c0", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "9b5d0dabf97a59321f37f5fe358d80762748326369de128e51c5f0c444c7e9f0", -"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4e6afb03f0f0557db4acedd19b5778eeeb05b12b7ef3a13742a5b3f7d09e5c59", -"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4e6afb03f0f0557db4acedd19b5778eeeb05b12b7ef3a13742a5b3f7d09e5c59", +"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5197d28874426c27e0c6eef0cb2dbbc536e3f8b12ed31696b71337212f43a9e5", +"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5197d28874426c27e0c6eef0cb2dbbc536e3f8b12ed31696b71337212f43a9e5", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1239ab191a3617f42b7158c9b00dd1aaa91d62b895fd0a32dbbc3e99a7326892", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d878ddcd406e5d02a65cc536992735fe257d07bc3791e05c30a4d2a574c6c5d3", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "545e82145565de5b2a8f9821f039eeb1b9d20743ba54233231091899377b12c3", @@ -9374,29 +9374,29 @@ "T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "e95148732d86e99e5ca9a0f6be008b3f4b12775c5d23671ed5127d58170021ed", "T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", "T2T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5706b5159f3131e87cd725f13bdd35dd057ad772c7a5313f5714266e8eb03098", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay": "9c8b46122210202ca2a03bfe73bbe18f6535cce7dfe6317e5788cb1bf500c9f3", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "19511d818ec13299d9047ded923442f0249ba4bac23e3793bdd0d606a882b617", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "a4fb109cb5d9831612561368e64076ba4381481bc1b70d00233e7a1e29e5bf3f", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "0e641ba080c6769593ff6d47e8c37ccec13a5e6d95634591d3a2f80713dcb0f2", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "12925f5b9dd9aaba22bd6f7beac0c458472d8e22607131405494f38f5606cb9a", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a3cb60517dcc5af4bc95a5290993c481d1ee969ce661b800e81a9d49c1c1948e", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8cd39dc8ff5515c933c13866bac705c9a2a79bb612483c3978876106b9ce58ae", -"T2T1_cs_test_autolock.py::test_autolock_cancels_ui": "f9742c1e1e6507ea38ad923ff824203f0936b90899e20a2aee932c9e142ea392", -"T2T1_cs_test_autolock.py::test_autolock_default_value": "083609fdf530a63af9aacc44751baa5482a2366bb7e5c7423107cf502db40cdf", -"T2T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "72a0b5aa61392be279266f7e92a323b06e3ea3575f41abb04ad8600be4c1a0b8", -"T2T1_cs_test_autolock.py::test_autolock_ignores_initialize": "72a0b5aa61392be279266f7e92a323b06e3ea3575f41abb04ad8600be4c1a0b8", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay": "089ca65d2c06b96a51d6d4b7767f4e2305440470cfe8efdd1153e3d23fe4a941", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "8e89f1b4e96f59314e8b6a97b666369d43575f21278cb58bce61277c5dacb8be", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "de0f2f0e2b7419134a2f29406c3e8fe04b90ea300d0066cf1655870991547f71", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "11cbb45227dec28557e845e3e24ac83582624ab625969d3d0104b63cd71a8aaf", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "c533340d3c0fa35a5a2778e0b099a319419b3d122a03ae7e2e04ffbffda6825f", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "571143fb9529cf547b3f51d9b826fe247e14667d942240cd7bed9c07b76f30f7", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a9a391b12f79ed2603f803ad7ff15772e7c5f0c50d79fb7a2d03de1116de2b39", +"T2T1_cs_test_autolock.py::test_autolock_cancels_ui": "02d1a2376ce9feea934981925de03d93827470bf5fbc2f1de327a053dc71bb35", +"T2T1_cs_test_autolock.py::test_autolock_default_value": "d233a567d6fb26a3cd18684500391e8b2229fe93de4f8119ff9ef2a16399b843", +"T2T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "8d4eeb3e9ccacc60c902d00a80151234e4dc90649332495c076d17d70974ffb5", +"T2T1_cs_test_autolock.py::test_autolock_ignores_initialize": "8d4eeb3e9ccacc60c902d00a80151234e4dc90649332495c076d17d70974ffb5", "T2T1_cs_test_basic.py::test_capabilities": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_basic.py::test_device_id_different": "c3dbf3ed1bd619e77173d6b8e80335f8e5397627adc00ae16f9bd0f8074529aa", "T2T1_cs_test_basic.py::test_device_id_same": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_basic.py::test_features": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_basic.py::test_ping": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_busy_state.py::test_busy_expiry": "5807370e36255f64722c9b70002daad3b718387eaa41102561ec6a0dcbeed20a", -"T2T1_cs_test_busy_state.py::test_busy_state": "3aedf1fc9425861690745239a9bc06f6c65d57ff136443fa96d8d811ad6eb01f", +"T2T1_cs_test_busy_state.py::test_busy_state": "491481abc34b5ebe614e45edb1a5831cffb87b9acd28b5bb596d8e61c0b29147", "T2T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", "T2T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", "T2T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", @@ -9427,15 +9427,15 @@ "T2T1_cs_test_language.py::test_switch_from_english_not_silent": "91a7151e16f344efdfad245fa29a186f1fae409387e4f1bf732a0cec1ed739ff", "T2T1_cs_test_language.py::test_switch_language": "39a66700fdecc28cc5ab93d48b3fb2f004987f1a1d6f3b0991a02b1843eec8e1", "T2T1_cs_test_language.py::test_translations_renders_on_screen": "0ef96497bae150341b21d5c6d8a332b62d242ee59174187bdb0e96269dc43b26", -"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "902d37a8a618eaf59c50d0cbb26db2dbe771222e72e466654a960b84440efcb6", -"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_msg_applysettings.py::test_apply_settings": "9fa928df6bc0cecdf88085b5f58e72b6d42dde12facc6e90076a030ff34b898e", -"T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "6c6a68722afd8b4d148ab83d32bf9f5b0cac2aa7babe40cb5417bbe717338e53", +"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "855c605e5b4fedba0aa1268094a703fb61af6b0ab4527dff6d53cbca4d1152f6", +"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_msg_applysettings.py::test_apply_settings": "f418798467e742fdcf5592315310ecf0237e23d09c4f02936bd06c11f6ebb284", +"T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "f87881be98e05714b6a2c6cced9382ba8316368a711944b388729bd5b85593f4", "T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "06b22572a797de355eb21edb05c582369e0f480e69450a3d7ce7c338fb07ac5f", -"T2T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "869fcb005b4fe7b2f70528144f722d726e13c8009afbe341c8fb04ea27cb1480", -"T2T1_cs_test_msg_applysettings.py::test_experimental_features": "d5cf84d09f3e6087359beeadfe439b13f72743d34b50b74fa36311a4f272a570", +"T2T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "70d7cb582a972a27f346f86685b0245042ef20ee3cf39182b618a228295bdaa7", +"T2T1_cs_test_msg_applysettings.py::test_experimental_features": "4ed46d0812a0af386ded66d73f672284b3ff625601467f405bb8c3e46c3da150", "T2T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", "T2T1_cs_test_msg_backup_device.py::test_backup_bip39": "c436401095d0cc0cab5af7b379a32ea71595796e00de83766389d3eb69660c73", @@ -9450,15 +9450,15 @@ "T2T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", "T2T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1636a254bde7bce6994634daf3cb6c808d54ce420d7dbe0f01dfc580e170ce6c", -"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "b4e48b01fc739e43de795ae3791c2da4b7aa124bbd5d3eed2d80655b6a8d849b", +"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "be92f86f750cb31cf1f105413e2ad00053cbb8080b3c52c43b0682c8e2beae9c", "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "3e893170b1e80dc53617b5707b94f9a486f9fbf6f7d42fe05dd7d6c1d0c3d497", -"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "5239443b7ad71c3bf7d147208125ba90fdc7f209ad3f6b22f0c98ca30ec5d3a2", -"T2T1_cs_test_msg_changepin_t2.py::test_change_failed": "190d8c37be4e5a4563c026fc31824723948bf26b96b4bae4de90874a3370b4f9", -"T2T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "4061619759041f9798a863ed329a2ba9e26ae4320542d877ca3dead7f44d4d87", -"T2T1_cs_test_msg_changepin_t2.py::test_change_pin": "269b1fdcca1eddc60a540fa76a5f1e47f6f46814a47adaf76ebdc1d447d51d35", -"T2T1_cs_test_msg_changepin_t2.py::test_remove_pin": "c228eeb6228ba61965712a05e313297b054f463cdbf33a86888a4833cb22ad7d", +"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e474c3b7ee87123456263add1b6a793a0478e4a5eb3887e8d8794f7890b0d4f8", +"T2T1_cs_test_msg_changepin_t2.py::test_change_failed": "3ae8aaa54debbeda6d7e2a9d4d178003b0f5c49e95478728b6c9965324eb7889", +"T2T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "08ac3c286ca2a906945aa3a64f65cdaccfc9fee97c52a696be5fddb6fa350d54", +"T2T1_cs_test_msg_changepin_t2.py::test_change_pin": "1016d5ded51408eed07b9d048f8f51eceec1df950c215615670d8799a9020e83", +"T2T1_cs_test_msg_changepin_t2.py::test_remove_pin": "6b81f8e410e9eb6f12e00b96085ce069b998645b5c92100da6aad4230b9fa306", "T2T1_cs_test_msg_changepin_t2.py::test_set_failed": "d44150ef88ec051c85010fed2d12a15abb8162beef36ac992ca1b450a3364f6d", -"T2T1_cs_test_msg_changepin_t2.py::test_set_pin": "c0ba09f92891d36e040348160915a0abb48f31491a4ae72aeb386d7a85c61fa4", +"T2T1_cs_test_msg_changepin_t2.py::test_set_pin": "40108039319e94ecc1da4b5b2f246d6e400e896239e8e0a6922727d539991a4d", "T2T1_cs_test_msg_loaddevice.py::test_load_device_1": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", "T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "8a58a03d6089a51c6b37846f345e0fd48a909eaa78099aebdff44192f3b6ccb2", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", @@ -9468,36 +9468,36 @@ "T2T1_cs_test_msg_sd_protect.py::test_enable_disable": "7815d8d7eff783050c6b202ab538dc0eaedf1f6f9e7ceb535c77c6a6b8b18331", "T2T1_cs_test_msg_sd_protect.py::test_refresh": "cd45ae6cf914bd58774f36a203dcd1928439ef510db1fe29d8a81aa903c3c17a", "T2T1_cs_test_msg_sd_protect.py::test_wipe": "2717e4a4297ad22125fe6a07d5eda1403d8678dfa9f302ff48fe5becf3d76a8f", -"T2T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "53c6bbf9ce3f75d38b9329fd9442061381a385079d6217676578f990353ac2ce", +"T2T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "50894c333d72b9a22be61e959839a7645f7d010cc9854d4171efacb7ef97f16f", "T2T1_cs_test_msg_wipedevice.py::test_wipe_device": "c3dbf3ed1bd619e77173d6b8e80335f8e5397627adc00ae16f9bd0f8074529aa", "T2T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", "T2T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", "T2T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T2T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T2T1_cs_test_pin.py::test_correct_pin": "fa47941c5e440a03d79fed29e832c66100971c95d522c28433b469833d699630", -"T2T1_cs_test_pin.py::test_exponential_backoff_t2": "d866dec6c552fb3c5c6adee8691820a1efa1a526ffbb8ea646d6264c51ac718b", -"T2T1_cs_test_pin.py::test_incorrect_pin_t2": "2f913e53e9cce4843393a5035d1810ced492fa2130e1e1f4c8c2a69d83774b63", +"T2T1_cs_test_pin.py::test_correct_pin": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", +"T2T1_cs_test_pin.py::test_exponential_backoff_t2": "dc2da4343403dd18bf9a9a2c51d8e86022da5f8aef85566c6eed5bfb36ac8d62", +"T2T1_cs_test_pin.py::test_incorrect_pin_t2": "d7d33aacb2c1403ac0455dc5e06601a6641fd3f0fa4dd127d92ad036b6175fd0", "T2T1_cs_test_pin.py::test_no_protection": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_test_protection_levels.py::test_apply_settings": "507ff899d3869cf253f09aef1946e014bd3e7180bfd09d49618e4c823f24be88", -"T2T1_cs_test_protection_levels.py::test_change_pin_t2": "1952df74da280cf37246dfbaf39234b40844f784bd87be4717b53a0bb57e2457", -"T2T1_cs_test_protection_levels.py::test_get_address": "3b94cbd02d17398bb69ee5a1a408e87a852a840db15cc24a823882691edcde66", -"T2T1_cs_test_protection_levels.py::test_get_entropy": "2246146ea16740db3c7afa84261840f34f44d9af3159e95973a138f089af0c55", -"T2T1_cs_test_protection_levels.py::test_get_public_key": "3b94cbd02d17398bb69ee5a1a408e87a852a840db15cc24a823882691edcde66", -"T2T1_cs_test_protection_levels.py::test_initialize": "0c654d94d471180524756889c7c501a5018b8c77651774e90f5abb26e21ddfba", +"T2T1_cs_test_protection_levels.py::test_apply_settings": "9a636efe7f06a973f5fc0777f3db32edfafd21e4a8bbcf034febeb17f90d5833", +"T2T1_cs_test_protection_levels.py::test_change_pin_t2": "e5c757ea3bccbcbfec858abc88c6d5391a70dd36a77dcc4976c0dc2e40fd8161", +"T2T1_cs_test_protection_levels.py::test_get_address": "8b54fee36b5f1281805696a79ebc999766ff573f9371da000d69036452120d0a", +"T2T1_cs_test_protection_levels.py::test_get_entropy": "02bc86da235c30e17fe9a5a331784628c9843cab609ee79252c4d3f1f593ad52", +"T2T1_cs_test_protection_levels.py::test_get_public_key": "8b54fee36b5f1281805696a79ebc999766ff573f9371da000d69036452120d0a", +"T2T1_cs_test_protection_levels.py::test_initialize": "907f2058edfa7e6208e7a05308fcedf909eeb3adc8306dd3f371b998abe7e989", "T2T1_cs_test_protection_levels.py::test_passphrase_cached": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", -"T2T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "78b8bc529b46e05d353371bcb15907556b817ad0df9691c7b875aacb62baa023", -"T2T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "d9138aacde97523c30ccae998a2fb4a9e0841d2a72114860c60449aa1b074e84", +"T2T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "01fea2b9a10e1b547f57f75bc7531d07ab92144298c1dabd2cf9f0a1f1f89d87", +"T2T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "7f959cb3de3b49c840f266c518acd65e1db7268dc8e215ddf94572e298f389e1", "T2T1_cs_test_protection_levels.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T2T1_cs_test_protection_levels.py::test_sign_message": "0612f5474b0b0630b51619c6392b177889258678d83cc4f3344ca70c66e9ecd4", -"T2T1_cs_test_protection_levels.py::test_signtx": "af9c86685957ca9e083c1911ca97c3e02012942ae6ae3610635a5f207364a72e", -"T2T1_cs_test_protection_levels.py::test_unlocked": "c0b276e7523ac36d9d7e47aa49bf212d031ac624313c5cdb0d1148007139245a", -"T2T1_cs_test_protection_levels.py::test_verify_message_t2": "735574dece67508e3f46f09ed24d15b60479c34b8677dd7cca3283f7a8f2d430", -"T2T1_cs_test_protection_levels.py::test_wipe_device": "c0d15ec0f9f3353fc04ecb6fc26de3fd7976d0e404c4ea8d8f1623dcdbb82ab2", +"T2T1_cs_test_protection_levels.py::test_sign_message": "1e3507d34e2e3aaea77494a3e0a08ea54716e9b84bbf4dd3ce291ace8938dfe3", +"T2T1_cs_test_protection_levels.py::test_signtx": "ac19378fc3447fb2c352d341c5284998791ae10d387c0652249e9673c27c97c6", +"T2T1_cs_test_protection_levels.py::test_unlocked": "03c60806a17607d7e3b39d76d3d82144ceef92ebbf90bc25ecdd6233bc0081cf", +"T2T1_cs_test_protection_levels.py::test_verify_message_t2": "7cbc1f75a41c00a6d53fe6372113fdba190489e8819fb6d4a7f6d9898b0115c1", +"T2T1_cs_test_protection_levels.py::test_wipe_device": "e2f47c3779d782bb71d8dfd553560ef36b4d6fa67a629719e380e30af8727229", "T2T1_cs_test_sdcard.py::test_sd_format": "8f1ca58187e0eb32b6e23e369b1e9a3f68ee244023e2a0d25930d887f9bff5f2", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", -"T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "40ced7c029b6e69daf5255afbdcf46f54c629faf0927ad6be5ec8318701e5a9f", +"T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "f919e4e387fcb3806adb43f7b8f71ae3b14a30970b3d79bb4c9bd063804a084c", "T2T1_cs_test_session.py::test_cannot_resume_ended_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_test_session.py::test_clear_session": "c4e7b1008c80c66c173a944c0d845863d46af03858cb3c2162da80d52cf70455", +"T2T1_cs_test_session.py::test_clear_session": "ec1347088a94f3f812cf885d684802d0275484dcf3c590537fcaaf630a5cebb5", "T2T1_cs_test_session.py::test_derive_cardano_empty_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_session.py::test_derive_cardano_running_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_session.py::test_end_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -15405,18 +15405,18 @@ }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "62e0431a324677ee6a1adf679136ceee96dff070068492171a02bb159bce5c87", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "779b1a24cd9e7b1ad8fc339ce3f2e3b3d623ec587fd132c307562ffc24932dc7", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "37ee6e2b07c872f2a9c33c280b7be91bdfc223c8eee34aa8f7085837f150ca9d", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "250e7ffa0ad425ec18ea178538c98e7ee59874ef52e7e4d7d07ff122d8ea537b", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "ddf0c3b091eef587adb8786f498e855516dd572314ba588e91649595af7a358a", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "2925456668663dcf63cf030eabf5b0a55e7395a70b22b1e85b00a08bba141a89", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "b027097462daa6727c40806967fcb284ec32fb729cca8666bcef48ff75dc98ad", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "12d6d6165656188cff9e9c267b4b2fef40bd437237d42dd793de31c36ea1a5f5", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e3c6cf99454680b7f6a635477d4b4e0343a8c379187a0b9a8746087d808c6584", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "0fecf449eceb7d31148b9e0363d942fd285f73d2368ddb8f1be5769acc40a266", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "0a3f8226afd5bc1846327ac6527bde04d78aa4d7289e782f9a8234ba02d36d4f", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "b2547cbc23739396957f512c60fbb4a41be986a28d5810441aea624b743f451f", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "208b0aae8abcc367ed570d5317c3ea76f1414a0a4cfe6f877c7d86fc868923c5", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "143f81514b342874f528182b55e53bc632924f3fd7f44967dd2a171e07f8fd70", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "c3a3ef8291fec640a93ab37ccc08bac97de5380e8c7b5105ba34243e89fc7be1", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "5ab884e92ab8105925457a3fc6f4fca866749f2eacbd1817b9c196375c4961f3", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "defb8c967711cbc271f94a37c3dd505379aa50b5b773c6919a17a2cb12043811", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "511a7e9e7477190690f12fbfa8749e69e6811665f40fd0fea2a8849f133d7027", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0fd20d19efdc39d946a132fa581091a445da4f3eb424f1b71790adb9f3e51679", -"T3T1_cs_test_lock.py::test_hold_to_lock": "0e8cf06515f909a1ee67d1f749ced1f9933674e33aee225e62390c2a1e3d901a", +"T3T1_cs_test_lock.py::test_hold_to_lock": "ec202e9df1622e2f189652e7929db202d6017ef6df2a235ed0035cea032bdd05", "T3T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T3T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", "T3T1_cs_test_passphrase_tt.py::test_passphrase_delete": "c1f8c0a733563756481ed0aaf15d833cfd266b69fab7daa7eeca6deff738c404", @@ -15431,20 +15431,20 @@ "T3T1_cs_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "8a66f279dd55fb7867b0cd3b87a961589e3ec45d6e08320488fe2ba4bb834ddb", "T3T1_cs_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c60b0b0d19fe093de73e8b3ef3a7e65f6ea01ecc736ad6ed45fd44148d050716", "T3T1_cs_test_passphrase_tt.py::test_passphrase_prompt_disappears": "5fd1a1add04b6a38619bb1788676676aa68d900055597ea1cc2118d441bab710", -"T3T1_cs_test_pin.py::test_pin_cancel": "0c36a5443bb67f543bc3905fae9e27b9b25f2ddc0ea9f8a1c9b06a95c4bb2a40", -"T3T1_cs_test_pin.py::test_pin_change": "b34da66139dd8f93ff67a8cbf03332dc63895ec325578c6123d90615b5a5711f", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "c2a1eb2d6d45c1a773f6cab6191149d48d1a64e999274c8189c791941d217397", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "06431a63c954ed1c7c219b0550988d086eb16b4dfb7def93d4917e74e72e3169", -"T3T1_cs_test_pin.py::test_pin_incorrect": "904fc973bad7a9677ddb5e35b652d21439c934e727cb00a6655e0fba165d7b2b", -"T3T1_cs_test_pin.py::test_pin_long": "5daa3f20464421c5b1c2eb7e718e26c6fad3966191c3f4138677703c2d42b8ba", -"T3T1_cs_test_pin.py::test_pin_long_delete": "4fe18b7d4917143f49e065e3f3eb0b78dc01e491c46bda48b4f5edd7b8e7d759", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "26fbf0858a21eb115a2a50beb6921f490d7af5bfd7d11ab98adff09867dd1abb", +"T3T1_cs_test_pin.py::test_pin_cancel": "1350a7290909796ef76a20ad1f1f4d849aecff45d6858a936369ac274c54ea3a", +"T3T1_cs_test_pin.py::test_pin_change": "47a3f558ae0ed7a84f8ed34cd50fb79feab55e8fe7d20e659e3af68929f5b12c", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "547997906f51a612129ce5c6c2e105093f38108ae7d1952b011fa7f1d2ab55e5", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "e6c8bc6f11706c2598688253d36e029cd4c94580fa8b57d8a9fa6a1d2de5892c", +"T3T1_cs_test_pin.py::test_pin_incorrect": "1e26d67ad98fc35bfaeef541126bf1d52b05551536a72a630cb36f893bc80979", +"T3T1_cs_test_pin.py::test_pin_long": "3bfb3a532a8ef0db18b84d036d4ef15a3c22e013660f236c0b5ec1c2a83c60a7", +"T3T1_cs_test_pin.py::test_pin_long_delete": "e913c0a0460feb1746035474aa36ea16826fbb4797fdb9c9cb57def31cb0500d", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "c3de0ab13a0df917c5e026375609c08a08a694ec13c9ece1a04629623ad62f64", "T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "7c7c28f6d0af928a6abb77ccd628705872738ab949aa676e2464b0a954b39dc1", "T3T1_cs_test_pin.py::test_pin_setup": "f58e6b57a7fc9760d9322e149503950d8dce13d88c6318864a88c4759d447d60", "T3T1_cs_test_pin.py::test_pin_setup_mismatch": "c14b4c71c2da514c485926d583e71985a6ee11e8abd2734c562852b85f69977e", -"T3T1_cs_test_pin.py::test_pin_short": "06431a63c954ed1c7c219b0550988d086eb16b4dfb7def93d4917e74e72e3169", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "3f05de3699884ace43fd768eb6d9f4fad61ba02010ce0a7782a9a0b38ed47a5f", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "b7c02b179855cee5e53a5e0e6ed436ff918bebb924b2bdabb0cacdd4b6278431", +"T3T1_cs_test_pin.py::test_pin_short": "e6c8bc6f11706c2598688253d36e029cd4c94580fa8b57d8a9fa6a1d2de5892c", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "c327f22c58a2833102c705cc817183bfd0fbf9d1df51af1b2da4a3c3c29c8789", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "f55c2eea6c6d09f22e8d3160628bf45612f96c5771dad7c9f53bc6df455423f1", "T3T1_cs_test_recovery.py::test_recovery_bip39": "7f8ef2ab3a7c4bf28463e4dc11891cc2d099f207cd9ef99a68df52b6f49be162", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8766eab82a293be974c517d14c569429187f081d56df48359ab3088fd6f25be6", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "20fa687cca06770b862cf90db02429d24fea3469d2b9a931b828093555307d5d", @@ -15662,8 +15662,8 @@ "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b3cbfe5991c49b088827c9bb5d22e7b8267f85cc3ada3e0594b62845f2df75a9", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "509afffd6ed07242d5e2c5c1fe216e9a277f42d5f9d459084db3573f59bdc5c0", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "9b5d0dabf97a59321f37f5fe358d80762748326369de128e51c5f0c444c7e9f0", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "830c7d899e8685abcfa7720a736fec27bef71286633a9e2732fa28edc63b6d7a", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "830c7d899e8685abcfa7720a736fec27bef71286633a9e2732fa28edc63b6d7a", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2f529d6344caeecd4a3321f9dd2984cd1a7da414bbb6f28bc99ce3c0839fd502", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2f529d6344caeecd4a3321f9dd2984cd1a7da414bbb6f28bc99ce3c0839fd502", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1239ab191a3617f42b7158c9b00dd1aaa91d62b895fd0a32dbbc3e99a7326892", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d878ddcd406e5d02a65cc536992735fe257d07bc3791e05c30a4d2a574c6c5d3", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "545e82145565de5b2a8f9821f039eeb1b9d20743ba54233231091899377b12c3", @@ -16891,29 +16891,29 @@ "T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "e95148732d86e99e5ca9a0f6be008b3f4b12775c5d23671ed5127d58170021ed", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5706b5159f3131e87cd725f13bdd35dd057ad772c7a5313f5714266e8eb03098", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "c4b7487ac2f28fbdb9adaa09905fb63cc48985f63d30edf9a70167e7059abb1f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c4453bc1870c3785cbf7407bf2b7e04bf53e65c3b3b92363117bcdfab401f880", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "75dae5bb67fe717e5a86ce42ee2911e7edf04ceb43d1cae260f0c5eb9511dc2a", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "87c46626e50ca8da23c90d252d3d39da0b31233176df2436641e966b419b096b", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a5db3c8701e5f885be62591b5f20f47a8c9f7eb814e3538d860f740dd983ddea", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "fdc22050f01915f083251f92481e45b74276f714faf0501053abfdc75a5a4d7f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "aa7b9bc156dac87014da130693dc0ba4cb80d70c3c92fe4875927f87a2e515c8", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "6d990980f062eaec5609dc3120e3e18de535aaa9d60827ec241911f3e8e678bd", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "7df543360bc3bf7b3741774e79ea75c729c1082e4c2af542c71cf33ab58dbd58", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "7af0a4862074274197ea6f070dfe9812d4ae4cf6ba09156e0846c1ee1b2b5592", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "7af0a4862074274197ea6f070dfe9812d4ae4cf6ba09156e0846c1ee1b2b5592", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "0ede94eda7ef5a3a459c0bda5712d051223fe95100cefdd2015168e8e44a3fe3", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ad62568faccd0abdffb1e4f2f291258d58a004d057f09aaaef1f1f9002f4a589", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "0d9a941dff9d6863da0ef205f6589e2132e11c80043a07f94568ae26ef3fb5c8", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "93f7916b566d0a654cea0c06b64c7b44144b5fff2ff85f21a7d723678b87b35a", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "56725288177c80b496eefe436f91a6e684d82bf24ea5d07f52d26f06289977d6", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ead3471685557fb64090c0613bb6ce19a4395fc74504a022be4c623e537f22a8", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "f2b383da42cd778798b823b3710d9e915d14590bd04b63a337677638df3fbd34", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "d86b3200a78491d0f6f61532b2de3dac805b6c879f3ea375d5aa39103b70bf7b", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "acd449f047124934c2dda35fca97259a757383090cf6153032857e1bb56ce202", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "551cc01d7d3d646f014070230c5ce03c7d51bb2c0fa024b556aeeba3b6621af8", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "551cc01d7d3d646f014070230c5ce03c7d51bb2c0fa024b556aeeba3b6621af8", "T3T1_cs_test_basic.py::test_capabilities": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_test_basic.py::test_device_id_different": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", "T3T1_cs_test_basic.py::test_device_id_same": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_test_basic.py::test_features": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_test_basic.py::test_ping": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_test_busy_state.py::test_busy_expiry": "5807370e36255f64722c9b70002daad3b718387eaa41102561ec6a0dcbeed20a", -"T3T1_cs_test_busy_state.py::test_busy_state": "fde1b3b0b48c5788cf506cc541096167e2b94699a5059281a9848a92e6435311", +"T3T1_cs_test_busy_state.py::test_busy_state": "9a846017e3ac79ae304490124caaf70eef76b60d0372c48e3cb8cfc2b334b2b0", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", @@ -16944,15 +16944,15 @@ "T3T1_cs_test_language.py::test_switch_from_english_not_silent": "91a7151e16f344efdfad245fa29a186f1fae409387e4f1bf732a0cec1ed739ff", "T3T1_cs_test_language.py::test_switch_language": "5eac4f7bed83779e740736c7cec12ed6686a693ae6d5609dec9312081d20def3", "T3T1_cs_test_language.py::test_translations_renders_on_screen": "0ef96497bae150341b21d5c6d8a332b62d242ee59174187bdb0e96269dc43b26", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "e7c5ef8ca271696bd49916a8a1cacb56bded4eb603a32c1870e1b36844855567", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "99bf4be975da77baaa57cd4f8ee238b035b47fcfaefe7908b61dc0c847d0119e", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "361cd8061b73405ec6ccbdf220acc85d80a35097d32d60e167e84135cd7b3207", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "5e323af2413eb0d7a90a4648568669d527e30fc65f57a32a6723b650e4257a41", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "da578cc458ff7c77278596c088c4fa5494b980adb8664a2bab41d89757439dc8", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "e752565d9dc631550fccc602775e2903d2036d530f52f7f70a2da4850dbf217a", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "06b22572a797de355eb21edb05c582369e0f480e69450a3d7ce7c338fb07ac5f", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "16e8ed54462dcba9cf54a38efd80b9bb041359b1f129b3fd3e4961e1a267f67d", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "2896aef3f7eb018b61a10012f91c28ddc528d18125976ccac9d047157a0f4424", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "06be2ab46c89f4269e08a3e31dc7f4f7d877e8fcf2c111a31d4302789641d46e", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "c19522e144a09d76403bf308e261fbfa00deb94b8f09f9b51c91536581cf5006", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "21c0b1b9aceda19eadf19480d896b9b60faf971da63d147c28a0fd58fb6ee114", @@ -16967,15 +16967,15 @@ "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", "T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "f80a7223bea74080baf1a1dcbd4ff56c52011048ea5478b721cc20214b42f77d", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9b5381b0ec144a10735c93fd8502301723c7725808ba667a22741b97da08d6ad", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "8f7a0b93fd9602605aaaaca55b409468e09715f425611bfd98519eee9f059e38", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c1febab3a5f19fb7f5d52a7f8aa0b61ec00bcbbd21e8fd4df641ef7f7e737826", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "3a6904b9e4799ed58d09dcd5763a18131daa3e309b9bb0cdb4eff8e928299597", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "7214bb36b746b698633588b026359254e26dba4a65eb40f212191794caddaa66", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "b4504fc19a4b071acd92e20883a4d604d175e607d504db1ea8bcab664d688f60", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "c670c492f6c89135ef05a59b7a9f3f944529c1f30590d3878b0f5cb5effb457d", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "f2491d60cf5a47e28070cdcf4f9d4426f30fe13a22ba741d509c9701476afc54", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0151cccb0237921183ac7036f9ba711f0beaae379191bb2bc64b9830f3f971e0", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "76ec57af41088bd292ff93475169dd125c1992da8a1bcb29625d13bd088f960c", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "21248c1c66a4ff82086d023306e0ff4968841a9264f600190a32dfdc046bcafe", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "49d87a7062641b69719b84a1e5c18dd444f231a1796bca763317daffb921c25d", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "98f5e95a8394a34a221a92b62d00fffd7d4c47c6252bca1c3f2d1f426e3a97c5", "T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "3ca71417890e4f6c8cc37459c270f3403fcd1b3d6e48bab2503b7add0f385a05", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "6592bbfc05e4b22b06ed861c1b0a1a866c5e88585f54d9c1c58ee050f5e23b17", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "ee65d2c2ee84f7ffd0160726823ca09a3606ba16273b243c9b8a71913f7763f4", "T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "840a8c70cebd67533d49bf2f9de36209d4c0c07086bb1a894b7a422901711fe5", "T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "98a93969e252965167fa53218131066b76acd33ad68b8309038f7220de8d05db", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "840a8c70cebd67533d49bf2f9de36209d4c0c07086bb1a894b7a422901711fe5", @@ -16985,36 +16985,36 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "fe9aedd5ced93330e544bd1c9c6cc6fcc7bcbf93e518e3240e4ef4f0cb21a085", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "dbd5f08579c8a9900a2a5b8c2d944866b027c34bcd3f9991087e85c816822b18", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "673f0cbd7ac66238b4e1f4c88f75f3ccf2b59309745695fc10472be4a1ae1442", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "ee8ae9f84e81803bc72bdfe5455a06d53972e668002fcf31ba4e9683f0847fb1", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "89d1aea7840bbfab21733f43d2cf1e3eec875f09ea389579fb000e83990607b2", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T3T1_cs_test_pin.py::test_correct_pin": "e38412b9bb9f169e0488c56d9afc224738f555907be8594066918fed98f432e1", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "a9ea4a6fb6f3b561c58e0e542f0db269c39d5aa5328b54dc1bf73df49dfd754b", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "8c6139b2ff22b9633c8b4bdaef696b20a278f0427ae5348d00e61578f014ff15", +"T3T1_cs_test_pin.py::test_correct_pin": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "74d630d9c2f2bd50fbecf646415cca8ab6a569b1119aeaa3fe66f46e53e17ca4", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "03f889d520135db9a4ef5958ec7a832d6759533e1dec90f24d5e6895ad724db8", "T3T1_cs_test_pin.py::test_no_protection": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "2c60d8858c5f8121174a91e9d1bf5e447a320e3641c67ad0756f7fc1e469f6a2", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "a68ce4679c1d56b2bd808793a05b6db87bcb5096de197f500c945ac17f6d8f49", -"T3T1_cs_test_protection_levels.py::test_get_address": "575f69e9babb2c56746448efb8892df80709a726a87d299ad81a579cda310294", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "500e723393cd596bbe6031fbc132567b14c1e14524a3972bfbe2ea875700f3ec", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "575f69e9babb2c56746448efb8892df80709a726a87d299ad81a579cda310294", -"T3T1_cs_test_protection_levels.py::test_initialize": "9dddba33194632c207ebbfa38ccb8ca2e781319f1d32a8ce317852ad6e45be31", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "e481dfd2660dea1ebc913c24057a955710e58a1ce1b7f3d8625d1b55d645a65c", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "08693f3fc06dd29985f7e4e4f088a05d95a738c263e8b6dfc0c0041867bc65e2", +"T3T1_cs_test_protection_levels.py::test_get_address": "5ce2a993e76c3b917627ac5a235a921f8b6885ee7000293dd9b204115ebb6e1f", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "cad276bac2e8396a4fbb906aa1fe1e612030553087d751489c2780228e43a7cb", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "5ce2a993e76c3b917627ac5a235a921f8b6885ee7000293dd9b204115ebb6e1f", +"T3T1_cs_test_protection_levels.py::test_initialize": "26fe447e4a7e4c1ec35c0f1afb199cd600089d6242397ed1be76bf12beac8495", "T3T1_cs_test_protection_levels.py::test_passphrase_cached": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "25181df730f8d8c53ede87629fdb46e6dc335ea926c27171ce123ce7623d9607", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "011971910b847471958acc3f29029e65b66b3f03608a9f9fef3b22b2641c7076", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "108043b1225d9290b08b7e85a2b3c1de72111ef9c82ad692c0c69ea9e2c1fd19", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "fac0c9ce994caaaef0951a2e97b7c828406b76749fe0ce53fcce371481525867", "T3T1_cs_test_protection_levels.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T3T1_cs_test_protection_levels.py::test_sign_message": "c1c2fa31b3ca952aa13a7a90d27696e5bf8454e1f23bc2e3759db4b3892b876b", -"T3T1_cs_test_protection_levels.py::test_signtx": "95ec7fb559a3aa1a7400fb00c3e16d56cd74bab10d036cf40135a0dd7ee25cc8", -"T3T1_cs_test_protection_levels.py::test_unlocked": "220677caa2b1e7749d2315a739bf35a0a3008a9a10bad6d94affbf08997fbe65", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "ad6d84129560c60b8d51acff8fdb121ef7c068129b51e4a6fcb46321dc4b2c93", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "f31631ecf44dc23450c87efde2a9ea96689c97dc7a176cacdfc8d2c9449f14d8", +"T3T1_cs_test_protection_levels.py::test_sign_message": "4b22d39c28a288f34eb451cd870be4b76ff8e5c8b3a75135a8a8732f5c3ccd30", +"T3T1_cs_test_protection_levels.py::test_signtx": "2a65bacef38f1a27ccb2c4c83541b3bd7ecae788d6a97c796b82c659cee4ff0c", +"T3T1_cs_test_protection_levels.py::test_unlocked": "0347f39679ce19780f5f1eba34262ab495e1d1988e682fb3dca15c1298e55d70", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "7b75263c8cd9b308c701e7267bd9cb5de18fefdde5a456cce34c1e192ab31a94", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "ea5a35e5c00a10459d0a3bce488cec0eeb60ac3076c43d09dcc5b7dd7116285f", "T3T1_cs_test_sdcard.py::test_sd_format": "8ab982f4d35a87ac0fc603076dd9efc9ee77822ab7c391e7faa5f17867b3b1c5", "T3T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "7c7d4078687e1a1db79fe179094b8e538e8b1d741f0425113875fd34314d4f81", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "ac41bb0bb0f52e8b107c1cd58f42675bdb0faf6aad2f2f8f5c3d9911fae01127", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_clear_session": "701c7c2dcdd6b7f0591590a6504a6562579b4bddfb0c734b1b5ceb3083289002", +"T3T1_cs_test_session.py::test_clear_session": "1121fb3f374acc64945f6e9ec8d474fd04621356ae07658395520c9ef288edb7", "T3T1_cs_test_session.py::test_derive_cardano_empty_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_test_session.py::test_derive_cardano_running_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_test_session.py::test_end_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", From 5f0d028a83ba9cd363dae0be7f32dfbc6b5312f8 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 9 May 2024 14:23:45 +0200 Subject: [PATCH 036/626] ci: avoid ASAN related failures on build_bootloader_emu The build job is setting too many variables. The sconscript is responsible for those, but bootloader_emu does not support ASAN and does not have the right linker flags to make "-Z sanitizer=address" work. We don't care because bootloader emulator is not used in the test suite so we couldn't catch anything with ASAN anyway. --- .github/workflows/core.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index e590021997..2fe3a03fd5 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -109,8 +109,6 @@ jobs: BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }} ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} - RUSTC_BOOTSTRAP: ${{ matrix.asan == 'asan' && '1' || '0' }} - RUSTFLAGS: ${{ matrix.asan == 'asan' && '-Z sanitizer=address' || '' }} LSAN_OPTIONS: "suppressions=../../asan_suppressions.txt" steps: - uses: actions/checkout@v4 From be049ba61908302402ee57e1bb725a5f8e210991 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Fri, 10 May 2024 01:22:52 +0200 Subject: [PATCH 037/626] ci: actions: no block-fixup on scheduled pipelines --- .github/workflows/prebuild.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/prebuild.yml b/.github/workflows/prebuild.yml index 22e03a12c9..f6d1dfb26b 100644 --- a/.github/workflows/prebuild.yml +++ b/.github/workflows/prebuild.yml @@ -9,6 +9,7 @@ on: jobs: block-fixup: name: Block fixup + if: github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 88a9574e57809d7631cfe78f765299b30278d6f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Wed, 29 Nov 2023 17:41:28 +0100 Subject: [PATCH 038/626] feat(crypto): implement elligator2 --- crypto/Makefile | 1 + crypto/elligator2.c | 190 ++++++++++++++++++++++++++++++++++++++++++++ crypto/elligator2.h | 28 +++++++ 3 files changed, 219 insertions(+) create mode 100644 crypto/elligator2.c create mode 100644 crypto/elligator2.h diff --git a/crypto/Makefile b/crypto/Makefile index c9d3efc941..a9d1f3266a 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -128,6 +128,7 @@ SRCS += cardano.c SRCS += tls_prf.c SRCS += hash_to_curve.c SRCS += buffer.c der.c +SRCS += elligator2.c OBJS = $(SRCS:.c=.o) OBJS += secp256k1-zkp.o diff --git a/crypto/elligator2.c b/crypto/elligator2.c new file mode 100644 index 0000000000..78894d32dd --- /dev/null +++ b/crypto/elligator2.c @@ -0,0 +1,190 @@ +/** Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: The above copyright + * notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES + * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#include <assert.h> +#include <stdbool.h> + +#include "ed25519-donna/ed25519-donna.h" +#include "memzero.h" + +#include "elligator2.h" + +// Returns 1 if a equals b, returns 0 otherwise. +static int curve25519_isequal(bignum25519 a, const bignum25519 b) { + bignum25519 difference; + curve25519_sub(difference, a, b); + int result = 1 - curve25519_isnonzero(difference); + memzero(difference, sizeof(difference)); + return result; +} + +// Sets out to a if c equals 0, sets out to b if c equals 1. +static void curve25519_cmov(bignum25519 out, const bignum25519 a, + const bignum25519 b, uint32_t c) { + assert((int)(c == 1) | (int)(c == 0)); + + bignum25519 a_copy = {0}, b_copy = {0}; + curve25519_copy(a_copy, a); + curve25519_copy(b_copy, b); + curve25519_swap_conditional(a_copy, b_copy, c); + memzero(b_copy, sizeof(b_copy)); + curve25519_copy(out, a_copy); + memzero(a_copy, sizeof(a_copy)); +} + +bool map_to_curve_elligator2_curve25519(const uint8_t input[32], + curve25519_key output) { + // https://www.rfc-editor.org/rfc/rfc9380.html#map-to-curve25519 + // The procedure from the above link is used, with the exception that the + // y-coordinate of the output point is not computed, because it is not needed. + bignum25519 input_bignum = {0}; + curve25519_expand(input_bignum, (unsigned char*)input); + + // c3 = sqrt(-1) + bignum25519 c3 = {0}; + curve25519_set_sqrtneg1(c3); + + // J = 486662 + bignum25519 j = {0}; + curve25519_set(j, 486662); + + // tv1 = u^2 + bignum25519 tv1 = {0}; + curve25519_square(tv1, input_bignum); + memzero(input_bignum, sizeof(input_bignum)); + + // tv1 = 2 * tv1 + curve25519_add_reduce(tv1, tv1, tv1); + + // xd = tv1 + 1 + bignum25519 xd = {0}; + bignum25519 one = {0}; + curve25519_set(one, 1); + curve25519_add_reduce(xd, tv1, one); + memzero(one, sizeof(one)); + + // x1n = -J + bignum25519 x1n = {0}; + curve25519_neg(x1n, j); + + // tv2 = xd^2 + bignum25519 tv2 = {0}; + curve25519_square(tv2, xd); + + // gxd = tv2 * xd + bignum25519 gxd = {0}; + curve25519_mul(gxd, tv2, xd); + + // gx1 = J * tv1 + bignum25519 gx1 = {0}; + curve25519_mul(gx1, j, tv1); + memzero(j, sizeof(j)); + + // gx1 = gx1 * x1n + curve25519_mul(gx1, gx1, x1n); + + // gx1 = gx1 + tv2 + curve25519_add_reduce(gx1, gx1, tv2); + + // gx1 = gx1 * x1n + curve25519_mul(gx1, gx1, x1n); + + // tv3 = gxd^2 + bignum25519 tv3 = {0}; + curve25519_square(tv3, gxd); + + // tv2 = tv3^2 + curve25519_square(tv2, tv3); + + // tv3 = tv3 * gxd + curve25519_mul(tv3, tv3, gxd); + + // tv3 = tv3 * gx1 + curve25519_mul(tv3, tv3, gx1); + + // tv2 = tv2 * tv3 + curve25519_mul(tv2, tv2, tv3); + + // y11 = tv2^c4 + bignum25519 y11 = {0}; + curve25519_pow_two252m3(y11, tv2); + + // y11 = y11 * tv3 + curve25519_mul(y11, y11, tv3); + memzero(tv3, sizeof(tv3)); + + // y12 = y11 * c3 + bignum25519 y12 = {0}; + curve25519_mul(y12, y11, c3); + memzero(c3, sizeof(c3)); + + // tv2 = y11^2 + curve25519_square(tv2, y11); + + // tv2 = tv2 * gxd + curve25519_mul(tv2, tv2, gxd); + + // e1 = tv2 == gx1 + int e1 = curve25519_isequal(tv2, gx1); + + // y1 = CMOV(y12, y11, e1) + bignum25519 y1 = {0}; + curve25519_cmov(y1, y12, y11, e1); + memzero(y12, sizeof(y12)); + memzero(y11, sizeof(y11)); + memzero(&e1, sizeof(e1)); + + // x2n = x1n * tv1 + bignum25519 x2n = {0}; + curve25519_mul(x2n, x1n, tv1); + memzero(tv1, sizeof(tv1)); + + // tv2 = y1^2 + curve25519_square(tv2, y1); + memzero(y1, sizeof(y1)); + + // tv2 = tv2 * gxd + curve25519_mul(tv2, tv2, gxd); + memzero(gxd, sizeof(gxd)); + + // e3 = tv2 == gx1 + int e3 = curve25519_isequal(tv2, gx1); + memzero(tv2, sizeof(tv2)); + memzero(gx1, sizeof(gx1)); + + // xn = CMOV(x2n, x1n, e3) + bignum25519 xn = {0}; + curve25519_cmov(xn, x2n, x1n, e3); + memzero(x1n, sizeof(x1n)); + memzero(x2n, sizeof(x2n)); + memzero(&e3, sizeof(e3)); + + // Compute the x-coordinate of the output point + // x = xn / xd + bignum25519 x = {0}; + curve25519_recip(x, xd); + memzero(xd, sizeof(xd)); + curve25519_mul(x, xn, x); + memzero(xn, sizeof(xn)); + + // output = x + curve25519_contract(output, x); + memzero(x, sizeof(x)); + + return true; +} diff --git a/crypto/elligator2.h b/crypto/elligator2.h new file mode 100644 index 0000000000..c38c4d1355 --- /dev/null +++ b/crypto/elligator2.h @@ -0,0 +1,28 @@ +/** + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES + * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef __ELLIGATOR2_H__ +#define __ELLIGATOR2_H__ +#include <stdint.h> +#include "ed25519-donna/ed25519.h" + +bool map_to_curve_elligator2_curve25519(const uint8_t input[32], + curve25519_key output); +#endif From 68114fa43d5fc7401520b917653b89bdbb595571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Wed, 29 Nov 2023 16:11:22 +0100 Subject: [PATCH 039/626] test(crypto): add elligator2 tests --- crypto/tests/test_check.c | 541 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 541 insertions(+) diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index 7911f01df4..1a7ba16441 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -61,6 +61,7 @@ #include "ed25519-donna/ed25519-donna.h" #include "ed25519-donna/ed25519-keccak.h" #include "ed25519-donna/ed25519.h" +#include "elligator2.h" #include "hash_to_curve.h" #include "hmac_drbg.h" #include "memzero.h" @@ -10389,6 +10390,542 @@ START_TEST(test_der_reencode_int) { } END_TEST +START_TEST(test_elligator2) { + static struct { + const char *input; + const char *output; + } tests[] = { + // https://elligator.org/vectors/curve25519_direct.vec + {"0000000000000000000000000000000000000000000000000000000000000000", + "0000000000000000000000000000000000000000000000000000000000000000"}, + {"66665895c5bc6e44ba8d65fd9307092e3244bf2c18877832bd568cb3a2d38a12", + "04d44290d13100b2c25290c9343d70c12ed4813487a07ac1176daa5925e7975e"}, + {"673a505e107189ee54ca93310ac42e4545e9e59050aaac6f8b5f64295c8ec02f", + "242ae39ef158ed60f20b89396d7d7eef5374aba15dc312a6aea6d1e57cacf85e"}, + {"990b30e04e1c3620b4162b91a33429bddb9f1b70f1da6e5f76385ed3f98ab131", + "998e98021eb4ee653effaa992f3fae4b834de777a953271baaa1fa3fef6b776e"}, + {"341a60725b482dd0de2e25a585b208433044bc0a1ba762442df3a0e888ca063c", + "683a71d7fca4fc6ad3d4690108be808c2e50a5af3174486741d0a83af52aeb01"}, + {"922688fa428d42bc1fa8806998fbc5959ae801817e85a42a45e8ec25a0d7541a", + "696f341266c64bcfa7afa834f8c34b2730be11c932e08474d1a22f26ed82410b"}, + {"0d3b0eb88b74ed13d5f6a130e03c4ad607817057dc227152827c0506a538bb3a", + "0b00df174d9fb0b6ee584d2cf05613130bad18875268c38b377e86dfefef177f"}, + {"01a3ea5658f4e00622eeacf724e0bd82068992fae66ed2b04a8599be16662e35", + "7ae4c58bc647b5646c9f5ae4c2554ccbf7c6e428e7b242a574a5a9c293c21f7e"}, + {"1d991dff82a84afe97874c0f03a60a56616a15212fbe10d6c099aa3afcfabe35", + "f81f235696f81df90ac2fc861ceee517bff611a394b5be5faaee45584642fb0a"}, + {"185435d2b005a3b63f3187e64a1ef3582533e1958d30e4e4747b4d1d3376c728", + "f938b1b320abb0635930bd5d7ced45ae97fa8b5f71cc21d87b4c60905c125d34"}, + {"b98d026c2a247fd113596f4317d8ff9f89f172c4be46320a5e82f579b953b633", + "19f98122afbd38dd5b97afc07fe89c00d9d45834a25ae851e527e34a5e763c07"}, + {"69599ab5a829c3e9515128d368da7354a8b69fcee4e34d0a668b783b6cae550f", + "09024abaaef243e3b69366397e8dfc1fdc14a0ecc7cf497cbe4f328839acce69"}, + {"409f76202dcc3280d14a9bc87b5f474349bbb6325e92733e0feee571a7f2462a", + "16235355f04bef29019ec6903788b9ee56214d1fdb60ddcc9f9bdc2816a3b132"}, + {"9172922f96d2fa41ea0daf961857056f1656ab8406db80eaeae76af58f8c9f10", + "beab745a2a4b4e7f1a7335c3ffcdbd85139f3a72b667a01ee3e3ae0e530b3372"}, + {"6850a20ac5b6d2fa7af7042ad5be234d3311b9fb303753dd2b610bd566983201", + "1287388eb2beeff706edb9cf4fcfdd35757f22541b61528570b86e8915be1530"}, + {"84417826c0e80af7cb25a73af1ba87594ff7048a26248b5757e52f2824e06831", + "51acd2e8910e7d28b4993db7e97e2b995005f26736f60dcdde94bdf8cb542251"}, + {"b0fbe152849f49034d2fa00ccc7b960fad7b30b6c4f9f2713eb01c147146ad31", + "98508bb3590886af3be523b61c3d0ce6490bb8b27029878caec57e4c750f993d"}, + {"a79d61017ca66f33fe88551437480dd28d4f0f36a9a000fd859b433add37d224", + "868916ddbfc34c7318dc28bf60a50d4c6a869654d1500b55da67c30f0dca8f52"}, + {"10fcdaa10cc6dec8f14f40527d44cb7c3b251e3d050ee5e0f7d8eb84de3f6730", + "b89c0c7ea8437775e39ed2562c4abff6d494ac21ff8feeb761a14cf7b0fcf672"}, + {"dce43ff0b17076fcdda6b75fd2ff198238f09aac92005f3ae933d16309135804", + "30e4c1de9adaba8fe4253c0389447e08dc1cbaf8bf7599bd9eb90f008c075a76"}, + {"f89544949536d01342f1260c8faa3f73814b64ccda14bea2b33a2c3bb5d8272b", + "b02e403a6d3ca67afdf316f60a711a625b42e8c1d14bf577409bb19dc9a4646b"}, + {"c30c2b4d8b3470e15016857187eaafd94f1682eb7bb04e8198b9c5d5ea65c20d", + "28558a909e53855f4319ebd7e4c3fb38e7e2de64dde94096060f5b3a72ee2f02"}, + {"a0ca9ff75afae65598630b3b93560834c7f4dd29a557aa29c7becd49aeef3713", + "3c5fad0516bb8ec53da1c16e910c23f792b971c7e2a0ee57d57c32e3655a646b"}, + {"c1447f768ab7cee8c79efa7a7046e54d7fa525ff6f407cda3b452fff1a00d12b", + "6f4aabaa4db9acf69a9aab373c58c1e1eb556be27a83c5b38d794cc69077386d"}, + {"53c901818418331d4c60add01d312c2a43d37a6488e3f11049ed9733b32a1f13", + "9a4603d2b8b08371ba5cf57cacc3e0678a9ef02b169dd048a09cf35a7b972f03"}, + {"59d974e7773b58bc3a5dad7e5978fe3fe05407989ffd12ef86daa435284bd01f", + "d4551dda6f038831d2922caa961e8b9183b66f58045ca1bd3bae51b1abac953c"}, + {"1d4e6df41544fb75740bae6a1b76932e1ccc463e0a4d3feb7da1e3e05bd59717", + "20a48a6e898dd507871fb8affbb4545f3a1d4232911cddb9238f3838a6cfe224"}, + {"6d7504f9ddbb88a0189766abfd3ef4d23004f09a474578d239a66fd25762d436", + "4f3811de70a3f8f1292988b942b4c4389990c84666577001a4ae1050af86b24e"}, + {"acc9ef51e2a2302dfce6527ba4ba4e1b2d6e45c0ee9f310a843335969e474f3e", + "81830f021f9226aeaef39088697b58aba5a786a895b729c1750a706aba52d928"}, + {"49bce04ead971c953a28cfacbb243ee120d2aaee2fe5335be7781c8ad6ddd220", + "a8225e34d582dd2f7b20ca016124baa651940ae1cc4235233dbba3354b5bb130"}, + {"f74010ce44f7315f6fa9f160db8cc36de4f950cc9abc3740c8f36edda26d093c", + "12fb44eb87b638749703d545b2591d69bb127fabb75a838936d76478b8b7a67e"}, + {"065d251b785d4ac4eb3d72abd076a06ece7b2bb56259e8df47a93476068dad3e", + "73cfe8edb2a812f5f2c95f5e03288b4c467a6b2d049e92bd610e05536f3c1828"}, + {"7b847e4ebaa0863a6f88395414b4c71b46749c33171ad8f0e4d274bd8764841c", + "e52f1a315163fb514c397b992f1520c8029fe874091a73c5fcbdeca7276f741b"}, + {"83be476de634460b5c802c5d2c509acc039a45845bdd30890db2f49244bcc40d", + "bc5f960e8eebe12ae7bb32da9ceec44cdc0252e28bce8e94140f2ac8edb5e009"}, + {"0df7e65e2c7ebd3d24919aeea20505d866e6f7a03ee9a11e378e9b4a02a2be2e", + "339d5931d273106cf2df52f4bf882cf2b5bf2ce607d1b02a68b446a87348372d"}, + {"97350b0977d06146bd7609bfadc8af713d3c97af2929625e44ccdb66791c5427", + "95a07c43f29abbe3d5669cfeb47e9deb6ffabd750747fd00d7b6a6a961824a09"}, + {"4de3fc72e672419c49d5ab43c350d54f1b85babc2efe147ebed9fb7a88567206", + "172c80045d66f23c288af430e6c0b4858c0c25d5fb3ffdda51e5d49306e5914b"}, + {"ae86df433f1a10722ea8830701033a389b9a5658aa7cd5222b22c6eb35af4200", + "ffa827a11292ce6227c8b733ed23bb8f7ac0c228882d58d846841613ff0e553c"}, + {"36d517adeb3e37f8bf7b27a04518f9cd8ed112ef70e2481592bad507e83d370e", + "2e42504c343178102d2b64b3c546b85ec087b9a3049d01540efd9dd5533afc30"}, + {"65953a9ab4c544df848a1d305222eadcc2239e65cd3d937d9ec38c2e4151e522", + "cb770813e75783503d18934e5ed5501f9dc6ee95f7fe0a5394ca9400c78e9012"}, + {"d6916059a6c1633568bcc0e6778ad64ce74eb3b940dab7502492a6d8401ab331", + "9d0b3a8f98930853d5ce855a9fadc74b8b46e5ff7efe7e38348919455611ee4f"}, + {"9de65213b5fee99d5f12044d5ad34f5e5cc0bec810306fdd80035b0a383eaa35", + "bd7826a4e359bdc02b44ed6c0c88150e347c21aa3c9efb219990a25946f6ca24"}, + {"2ba79130ca3e18293e91f414da769124875d4bd16596774ec07b743b92409a2a", + "f59213b5ce7f85f96ea55b2e848942dca95bf72cae42ebda4b7fb2908007fe08"}, + {"ea629e6c5c876e330b138c039cfc5f26b140191d700da3f3524295839f0c0904", + "5677b2ccac1ee955bfcadb6eecc9abb31fac150ee09d6a4a9415b9a352c3d019"}, + {"f85393caffdd45ff11884d57a11d636497d2c051bfddd1dd2daa720a3ad0e41e", + "7ca81cbc7bb7754c2c0682dad1c1bc9c3ebb9202fb2e92101cb2bc421e6dd13f"}, + {"05907fe6f7ccee83a3edfad91b9bee6b32b032cb410ea8bd47631e6eb1b9db3b", + "3f5004865de81cc592f0fd886d844b4be67cfe09e8537bf1a151ac2bebaeed06"}, + {"4c8f1fa41c0474d764adb3058cf43d42c59144b78fc944f681ddca24584a7410", + "5ed0e4cffb8c8f529fe95a08addfcb551b91315b1ad1d599d23336373101821b"}, + {"a17b81e83e8df0e756e5ee78be90ecca82a655730eb7ec7e9772bb573238f304", + "4e11595bee0b56d913a3c0ab84744fefc856d19dfe03d3e6a9053abc51d3a827"}, + {"6b4f01976aa5ef0499d8db79abf11afced47e13828e5e17ac89e30d9c0fbad34", + "c891167508580444fceb262b20ceb5bbebc6fc90e711ae34af3e2e1f13591f3e"}, + {"1036188858ad4a53b9808c969e6234c3d44c1dc88a5e66e609fae829db868e3a", + "58b2d775c360a709cb4c782591dda15b7890eac0cc7e187806a4d7a4d976b579"}, + {"b254226a148d8a70492c4a06db182b5f75459da97b930007882e37de7e34b831", + "943e0c1965f0a48005ebc09c3b0467a73a8f0dc15baaea8246e6e23ad78ed373"}, + {"14c8805aa84895acf1cbf6d0dc01798ab28e74a88ca522986ea35c0457c6dc28", + "77f22c29a3684e9ca09fc10e914a5c2f72a5137c55d196eade12f39299d95b6d"}, + {"c5a5617802640970768db50bffceaa5132522f5023d3b463c9aef6cc74393426", + "14b81b87c1794cfcfc95be94ab42ecf4d1f74acda9ab6b349c3c7051d779b476"}, + {"0d281e20ec2e3561a20ebc908c1c5e9ffb1f850e597ffc91c8861d1c57ef3a3e", + "4cb81c5f44401492c7a6623452cfe1f1d7a6e54c283b469e5fcd535a299f7811"}, + {"100ac1f37bf0621e6527ae18d685629dc3bd922c31bd8308b4c3a8f02f358e06", + "ea330c4a059829bde2b8b4cb97a4e7e06fa57be8182ad35f051811ae9519c60f"}, + {"2eda104fea9cc2d548ec6b3714466b866551b118f8cbdf752387cf7f315f0b3c", + "bf90fe4fb92c11a0e80c7033a7cebbcc53560e5e0c4976da05db9d357d98c53d"}, + {"ae81ecf028f19e93a794aac7e960d318e03e23c7626fa4ab261b3e415813931b", + "5b710c56c6bf097180bc83a4e48a2a4c36d2049bd653b9927e48a49e7843796a"}, + {"13a07ed64c8fe69d6ece6f692bdceb74438420c22c9e30000bf09401f40f3028", + "7d936e5d9fa4c3143a533a5c1791d2746788571500f792a2f2a25a4727b13625"}, + {"78886502d83647870e537e138808d0d1f01f941958caa1ca541c4172eddd7a36", + "9523a6af303364520c9b19475c1ba34847cd9d10e35a2c773f916d71fe014707"}, + {"c68d4ceead9a188d00ddcda391c5c036ecd5cd281f243aacaa327bbbf3384c3a", + "7b3dfda94889b562373af0b01f717451eaee15601c104433d3ecc58cf104c552"}, + {"08299526e422b03dc9e74cfc37c07159fec719cebfef41ed801a3837066dd60c", + "bf1456d4c982a296cba8f1246db8e650e51accf26358d819374c590778dc703e"}, + {"e516613b85ee24ee2ac97d70a2683131254bb0e0253cd1e77f5d18bc13847137", + "ffb93511e2294c00f7413699d0b021f210320a712a38842a50356086da0b425d"}, + {"3829a8c39d2152c9c474f804edabedb82d1e51c621ad9880c5ac3fa1c8080622", + "48fef3db414e9ecbbae22b3dd0c38d8417130357374e0e1b539c263e64c08c2e"}, + {"2d7564b0431d5d724744c5a9facf4e679dd8eb8fdf32c73fb2be92a65d50ad39", + "f8cbc4d1b9fa811e46ec6461c7f1e198191772531df34b8de0cbac623b48824e"}, + {"dbf28e226039b4291d0307169562dd7e80d23ce4ceb45b7b078349f8c50a5a3e", + "778f79319847bfe6408023d6de0c2999b51c27e759f1916b715ff145a8056b6b"}, + {"0510e1e919a24a8a782607e957954eae4fe8335ef42b243d2b8d526690b2213f", + "0b1a23f0720626f078d9ddb5001350e822b0483080135bd9b6ff39c5183e0c0c"}, + {"1d4156af645c1915e905e86b01c82e7739526c1ca9dee753def7cc3f5205dc38", + "5ed8d237564cb97cd55f02967348f337524a92caeb4aa8e84dd1bd4736b1e777"}, + {"2e6b3fb2ab3b4b9333c30d6fbcc619e096832bd4f27c33c8934a784556c20a31", + "01281046f80bdf45ac905b5a534fe4d5606dccf776ec353f795f8095a109830e"}, + {"8be8bb07f75e4f14dad37a9d71f9debce6d9ff6d0e2e831e3af61e5dafcf7f1c", + "e87d8cbc7fcd68c3ca4d20ef9a833a3a6282b162e0b2280af2a3287e5f5f4f2f"}, + {"918348cc15950e2d21940da1f6f26e0111ac3a84af976fbb85d872b8d3375d23", + "d8a7d46a47d5ea29ae321ebe7531b12b9bd68efd45e5f8398121c25e701b4621"}, + {"e330ebf9a0a09331ffb9690f57934b855e35f319966ceeaacbf6614eb912352f", + "240fce810c4f4aaee00bf7d29abaa29a70ea9352c1d892aee79a46ed4b6abd1a"}, + {"ca4e9d3319c955caf99827a0dce25d4d3d21330740c024bab3a1cf65dda8fa2e", + "6e18546401c4be1e3382f693c9aeef8e29cba23b97ffda97953d4a521ddce847"}, + {"f48bddc8ba6756104cbc5270e93c940351ffe3bf637701c5704860e8bd6c3c0a", + "399f3ebd61c4adc300ab9a6ecd0f2032fbed95114b9073aca0351b0c9d9c8554"}, + {"05ae3acb5b333b349f555340317d14eb252c498f4b5b7f0120863c046df25e13", + "94c99367e2b56883160d5ad49b1cd027b1344bd16b7d84b58616b44ec3eeb119"}, + {"f6133f9040410095b7420cca15c7c3edaa48f5c88f712022cc52115480cd491b", + "d8c7b1366530810f8e0f7eab483acb1ea23351f8ce48d3dde704ee0e648a0762"}, + {"ca15df20fb126dd6cba6069c4d057c9f5846774ea2959c8242442b491c1db603", + "226e64adfd089c41f0c660e235a11591727db48171b2bb76e0ebafc02bff1b24"}, + {"caf135ca09763e9259434f9be79c151430fa5a5145a5406b37733499086ac11a", + "669ec25bb09147237cff26a238dcdbb869f4cdb40f04326dbc68eb556087dd67"}, + {"0c6e825aea8f0d5cb84ead458813e956094b8d306bc3518f00a3e06d92fd0038", + "7bdabef5754857d5805be8eb423dbd31695e61c8ecc10b693005d20475d12933"}, + {"7a6685fd00c9ac478ae4878017ef4f4816dc8489f5fbb8122af687a8c7fc173d", + "731ab275727d776f593c98995312181b8649bbbc5086832e0247c04812343a0a"}, + {"f08f58072bf17d2632344d4c2ec877849c624a1514e1df599ae161d77394e20c", + "9045a3daa55cde4bde863c9953b2bd105a9dd114ae5eeb77bdf9b1aac416f431"}, + {"5f11086c6b4e290c6f7a19b428062c19f94293bb6ae863e6661e7cd46112430f", + "c149c23a0b660ea5da8bc8f6004ed3533732d524b4023915b1132b107b198b5c"}, + {"230030447df3d9a9634091503eb94ee39737a8690c3f61bb122c7264bc00083d", + "63533931ea7fc2446f686678602dfc5c08596c1ded9b6382a1ba30158d2d036c"}, + {"e014bb17434c3afba159c76328093ab0779073a40416051fd4ec4dbd12bc2737", + "923878089012dc6460b49d59a1c866878a950293943048f082ecd6dc12a7c37f"}, + {"a6de26c5b78e7d026b461b618fe621fe15a1b73f66eb888a39ad2fd8d765c02f", + "a6486fec438a8c02719ee43477fc3baa4d5bc96defdae46b0858fe56bda30a63"}, + {"14a7aa0360bb1f5b60f2fd28c3c370d7d560cead49aa15452c5acfe961227d12", + "b264722169444cad7e94ca1d9d0981f27c0654e322d1a0dce5e83cbce4e3114c"}, + {"b39f23638ef80f290a18df4f01a78f52f95594a030decf99f9a7f1501e320737", + "86be13dc0760d575d6dd82f4a24995737fe57f979fa64014537af371f38d0d16"}, + {"2ab3090ae695ab5a8be8ca3e7ce9d1b0731cbd999686ecdcea6a32757c2a6c03", + "9d555bd024126df6a9e2c016a29f2bd997f24e1b1a0456332a746c2f53ac3620"}, + {"1ea131a74b812554f32a9b9b51dd8e8008c7e5dc065b9864c86e8b3b1dbf111e", + "be94dd73684261991d7fc5c5c0ec1a19b93f668eafe006d85478b032c3970158"}, + {"d298c05fd81f21dd1c27a2b0d75089d50ed25a91d42a7cd3a4b86de6f5f43a26", + "fedc39590410c38a1498450ea92145ee34a2a3c10830f859b90cb5251904255e"}, + {"fbdbe3cb4a82278caaaedd21ccb1b77f93849073a11722b12880da02f8d0ae3b", + "b1fbbc3b0c25f506d291e3ce0a0eaa5729caf55efdb0f0c25333de43ec12753c"}, + {"5261b23ebb1be5a1f00dedc499fe2d97d74cfe058f5038873b604ac662bb0f31", + "14b4854695f07d9220edfc964b0f4a052843ab08ae6eaa2c046bea951d4b5008"}, + {"f5341a8229f50d5781b8d87d43bda44b3cf9cbd33fc461f8962c5d98f79c421d", + "12335ee256477057c10a7a7f4c115962e6dc2e8ed8547f2e8b76e701cec62215"}, + {"7157701e0b85a69520112caed1e8e215b4460be7c6779dd95c1175d06b6bab3b", + "f48e1e7230a18383820d7a3dc912e2b0726f6ee5dc4a5e6744096ef95da5090b"}, + {"ef42d90bc355b8c2aa1516b55cdb3dfcc897a1af505738f2b67f31c1cca7bc0f", + "2777938f38843d91a170d647de2e05c599ed5641b833608fe0dc742483f0e00f"}, + {"6f8fe7c709a31163e7660a2067abd95ee5436c1055f04d33b76db9a88c7d871b", + "89332639ead9698e0a9bf4fe2979a5045a391190fa15c7e8f3884007b7e9da13"}, + {"55dcb4ffb1aa83e7b55ab6a94ffd39bdaef28e69637241c0ad62fa581d1a1a3b", + "ef80876a594c0cfd7dd5a80b526b89fcf5aa5f5dcca4401575aa312c330ab933"}, + {"0fca979d853fe2468d5c0bf30fe60b9d9ad380f9c788b39297627f4f4c00612c", + "9912b2ef49e4807e124fbdfb7fd0e1cf5e3de3d03711e1610ce5ef5cd6d60456"}, + {"5053a350bd994664950a7c05a35dbd94abdffd1e0189b59679312c709b4c5a38", + "0e6f0af1c490fefd6ace0a9a5853a50617463082a0dc430f52521dbbc14a6a45"}, + {"5c8447a44d4bc650748f553c90264f41aa7c7419a543d42bef7758afd1e51c25", + "7d9cf7f3b2159213c7bde6225276af477ee91b72011f24fb0c2ab96a6feb200d"}, + {"2374e95359456df02ecfe67f794a0fdf62adeadbb585e0787d3c97cd62d63e26", + "24b6030ee8e56c4d38d4dc868c938d9933b1180ba2999af6e930cecb457eee17"}, + {"f935a2442482033693cc50da75685541873218edbb58c35be2d0120caf6e300a", + "74b6b4cc560491b5274972afc6f0d474dd226b8adb1e68bbb586e919ba17e477"}, + {"e87d30104328794c7f265a16adbfd0db25c106352b21454202dc47c48fbae624", + "d3baee80f59931863ecdb91de54e55975cbd31f06818066b5a97d35023e33f0d"}, + {"5aac8cf707f66c0bb79304cf2fb3e2d278c7ad23a00809051b282909990d6d12", + "7f6712fbedba9bd3f112efbd1d8e6647af5d43bc7d023d28aeacc0ba7f8b7340"}, + {"0f66c460a1cca36ca8d45d946b93bc6b1e914f06a18d552c1f0a62f4b7b8c313", + "12cd3a4af52df6339a67a8483653cd8c2c5aa8e0e8770d091e828b1179d9f11e"}, + {"369f3cac832b9182a53c4584a5ffef245f67ef7d58f9e5d1e8d2d01a5bd89f2d", + "f5676d37f03a7541e8bcafc3e8aa670f99375d2964729ab38b40cc12f8a1482a"}, + {"b58e9140a655d5ec93e92a42b54b13d8d52a42fa2db09aedcad4693127e21c13", + "a153aca0b07c67c59245c27b46f91439c4b4c585a1c6c3a8597d3a1466cd7c2d"}, + {"0c3eb55a5031d421679fe1ee54d9605c3ebb91579fb2c2f54f893c366b6bb325", + "33a523418318173b1e16c2b6948c3ec1f24e882045756a0ee3a56ac1f7dd1b6d"}, + {"267221322e2aa08a01f4df542069e0674aa81b122927e154feb299294a5d2a20", + "9135dc09480c01d8704ed5e1f71e1631f85fb84aa0df10f2fb7768755967df25"}, + {"1a19f778f0b64aeed4ae5c8dffb9692b445dba8e2dfc35b7f1faca2195363c31", + "374c04320c12e48ed56536ca89dc1e0f3ac7164f3a3875a66c79767e10c2ad2e"}, + {"5034b3f9e49b3f8e435f70da00bcb41d29ecbb1938316bbe8fb518dd2386651d", + "19c53a56b04d81521b3cdf78c162f5050b1bd135315386d4e857cb68e37b2c56"}, + {"5c83fb50ab4073d8bce3ca71e115ff430ca5616654a944bfc91327105fe67927", + "86c7367314c0ccea4b00160700e12491a29b4dc7745c8145040205496f43d34a"}, + {"abc88cbef6d5ceb5bac1254c22496aff838a827ba822756f9b76a7a10ae8ee24", + "35eceba14b707ff18fa02a01f131a7b1d9d2affcb4af0238c3978db5da5d3f7d"}, + {"0e38ae66df38978de5f4cd330f8c7060514cd019cbeb71e6c5d1ddebfa41f30d", + "70e67cf938daa6138327f49e7f4c5f598821e82411382011490b56498c83997e"}, + {"88ffeba3a3930c8a88497b2b6eb0c376b3d298cd99bd7680952c4a2f90d79909", + "a4748fa04932308595835d81673a4c3510242b3d0b592234816a64911ee7de14"}, + {"5a058aa9a92cf4d566632e9608cfeb1ba789f9cb1697981b3e80896965667713", + "02b35f649638443c655ae3304ff1e442de70d43005b117b190ceb4411803c149"}, + {"128388f449e220c20d1c16b89af8a10b32d7fd720a09eea22150fe1e0af5bb33", + "e7524fa2c08570a7c0d1a3b0006594e1356ee152f05f747c3ff450fe5860d473"}, + {"cf01edbd805ce2b6a06a1edeb8e1db796d18957a988b5bc67c87b3313819380a", + "4a4071518b91984a4be3bdecf141f5805823684b222fb6b08e07d7af448b5426"}, + {"0671ffbdf649232dce5517a31c2e10190623466deee6b425026f4947d6da381f", + "31eac58d7221d8bb9b2f16163e512690e4fe43b780be5b154162534d6f556f23"}, + {"c0f93432244e59e10c752b54abf59baf33f81d5662bc989a38c518715887fb04", + "21f9dae8d46ca4c8e08b6d843febd53e91663ee63f0c83f0242dc26901a3847d"}, + {"fc3e68cafafb72bd9eacc0968eb636c955036a431cbaa7361957a05fbb30fc31", + "c718a6710241f91f500cbe5c9f4d91d68ed8932c81abad3582ff7a9bb00d9d5d"}, + {"f3f7b4b0ea9fa8fe641855b56fb06a071e18011a83639b1be158d749806a3025", + "789db5557a8112b522ebff9697beca7fc8988947dc9bd21909db0e452a99e563"}, + {"e7a2169d465aeb6e9c8d6e73eaa4206bf853427c1ebba9fdb483ea1ae9a3ba3c", + "7ca0365b7f80782842e565578b35487656d61fa4c406c71223217c645cd5e977"}, + {"5f587c79c42a5a388c367b969e13c90b0248ab59d03db52cadffd9818c0f4718", + "421c40ebb7bab0da773edbb00bf357963b1da1503ba32f048fc2838cda3ed35d"}, + {"b07e2e0081bbfcc7f33e46169a70bf3f163048ecc14fc318fb72d10dbf77bd01", + "8a32d243dc66f47c3538a9c614fab3495f371a4f72114db73184f9e916c4e456"}, + {"0b1863cbdba731958be8f2cf19b4c2dccc82facda9c5fd8dd2426a35f01bb616", + "f4384cdbd8fd2a2599060452cbc8a596879aaa802682fd382571bd4872418827"}, + {"b1fbcb21879ee42cb77a55a4df4f310104d8efd36c1c6ae10d571b1a25c48210", + "dc9d364609b8238e8674d72f524c079d322ab3336b79c3bceb1861332a57f04e"}, + {"667fae03900d57e996376df2d859d8c1891cf7e8abc3060f1ab0ed4259b99e0f", + "67e125bd0fa9d5311a1c17d7e4a0ae284512326e6d04f3ec7b083dd38e1a196e"}, + {"53953cd42a687a889102704c13e3f1f4d0db6dd70e6081d056295203cedda23d", + "d67bf029ff190feb1049ae919b18d24c98ea84a24fba9682658ebd4889a1cc7f"}, + {"7978bf9b5fa8ab95719289393817a55688e2c7a23312d817e39c6a06a7a5ab01", + "faf932b0a991d92b145f4b3cd9103cd38fa690ebde21ddc381d86c1626aff50f"}, + {"a197b0a5141275694cca8b19e024234fb2129171fab0bff943b1e9113c406709", + "90d378223b599431222ce2386163e8d04d8a661c2bd73732f7638e15f356bf5c"}, + {"6e7fcc9d44b84c0c2bec10d8b3287f8cb90b0aac6587800615dfca87d8874e21", + "86e4dc8bf121a49f6a936baca7572849246956541c5cad638cbc4ceaf404573d"}, + {"dcb0bba82ce2cb24ac8634a2cd045fd41b9206869c78126047c64dda0d9ecf1f", + "6b47ae1e3d866aa1358dc9b9bf6f814d6e7f8450b6207aacd3d38bf773b87609"}, + {"6795d49660bf03258efe18dbda124391cb64915093cda129764f90a4535bed25", + "0540fe708334f9cb47b5a2dec3ed77b914d061224a587146efb7f88ba2ca895d"}, + {"f6134def7f4ea939c66ce363e46ca9f2bf918b03b409337603e2065852f22a0f", + "d065cec3eb5e0fdec914edfc9fb1a2be9d5ff9bf84faa3a112644f0f83f38815"}, + {"4f78abf5dbf7b5b278555d7acd3ee1e7c05aa6d22dd53ce57c70325e325d550f", + "8d8c9fb924185870d0ef93ef0b29b2e6a03f96f7ff41b93f92b34674075ccd29"}, + {"a8cf3e64519809baaa8e90ec17df56799c5c2acc984b43f977105ee55fb67701", + "792d9d713115bb6db393d9188dc3ebf03c64bc526c1238cf4582a24fc52fa40c"}, + {"5ef50a67c70edda74c7dcc52ba915dfce05bcc8e0d16957e13b315a6958d5417", + "c51a289e14be0034b2c9ae8dad94d7eff46dfd6f61cdf687b286ddda3b837f16"}, + {"c70f6c3d08aeefbf85fda5447c6b756d311a4b068833b525c47a251f3fc4dd15", + "892c7a92ce2486f49d74076d6b9c234ddb8af2a56c70f2f64aa80354f8573f71"}, + {"a77a599e290b37c43ae2cb19237d1be4f356cdcfd181c74542429a9759f6e22b", + "d2c348da8c4de56053c64133eab60c586b6d2288795905532fc40d6d003b1b13"}, + {"55a7b7fcaa96e4cfa4ae4569bc7d9b8d3ceb45941728627f338536ab0a6fde37", + "14fccdba1c2eb5fd430366b224e35c89dc148590753759c0dc8fae357dfdc434"}, + {"cba7339cdd086f94cb6e2eba530a8f1451ec87975f0632f2f6a4b2d0de7e052c", + "b66ea0192bced6d473910725aada1d1cc0ed3e225d78185fa820c6056ae34057"}, + {"270a6ab6737c68b7e0fde1ee12b86af93e5c24e8684bd7189bfdcd5d94b8b538", + "faf9ee965df83dc64129a76ed094ab972a969693d51ce35af3bd4800a774fb7a"}, + {"f1f905fd588d44b17ea6283be0077ff3e71fd88984c88d567bf86a74f9063b17", + "c7891c357e81c23869bf2e0b2b3571450fb147c8f18a026959f23b08cc009941"}, + {"29d21d5858c163e555b23a30120b2b3d0513687bba43928d58afc990e36bce18", + "d9fb5f1f8b6eb13c790b44a461461cd6cb488ec93a5e096d85c7958157395517"}, + {"8018a7212cd0cbe6493eb70aba5ce315864a582ad62ebbcf8d2d9827d90e2a38", + "7c8662dc99a6f5c57f7dfc492af5c504a6d34e04cb4118842d89841f78c77a2b"}, + {"29aa270f196de30c41cae26ec6a3c78f3613faf8cbf5bf04eee588ae39262912", + "0a5b6f6e6dc2daca0f5bcf283c9e0db5e0ca9e079bd6261db14b43979d04867f"}, + {"2cc177693204a553fb15a0d5a825ef571f64cc69166eb98f024cfc8b9cdf883e", + "e54a9f1dc759953799b04506c3f35afe6efe49a4b2215afd1c47c7fbf32b4a27"}, + {"c0c59843232294a23d7db9520b348a6c06506a141728f22d955c6ec8d457d21f", + "1841be58157b2cdca6f59a07ac703c948bf7cd56f213e2406dc86c330df8741f"}, + {"d57a2d7d7b4a607b4d9a3cbbf41535c3c17b7992586426893a60c816144b532b", + "d93b6a13fcc812eca45d719109f2be1c39c419d56181032a2e02912be765a749"}, + {"0f022dbb9466c774578109aeefc5d431713e83377249738412c54ca7ad4fd501", + "f215cccf7333ef203ab7425f5c8d5b6db64c30bb566c997157f3263514ea2c5a"}, + {"ae2134f76a02208d7494f3cbc055524f3663d5b0e1e41cdb127116888ee1312d", + "026e90c1e05e7ea585016e6ab102e644c10cc6355447fee697d845bdd1840769"}, + {"d8b03fb132e3972e248db65634601a137ea42b1a2e1949756bf7b6dbbc0b8237", + "81a35058b6359797a4523b05f35a60c7f64bf1a6d229a7abea53709719db3f16"}, + {"98a6a47518b635cace0050f5838e6e730cf162bb4bf045b6f9650a9381371d1a", + "62a466c23c3a0ce0b263d107ec85820cec8d28e8302743695fec1bf3e340ab27"}, + {"7ae3546deda426399a22a6afddedd6c3b6740c3ef2cc50d131e96a5a3942cb3a", + "3ac9495d4083be9aecbbd72a762dbf5e352f57105b289a1971a0da2f6750d33c"}, + {"6c272cae9b527390aeca722e82c1d79733dbd70c1a968c79d1401fe7de673f1b", + "6f9de11c1f6f53fc503e7ed49bf216fe020664e42fd097126709c82932ea495e"}, + {"1e0abaf9f769fd4988f3b5a543af0d45e4833f5198a181150fb2ef8fc1778b13", + "50ec571e11dcdd6cce97095b754532d4f593df6ead6148be63c008057d05ec06"}, + {"76c592c267c2c1053827d9f72b2f1acdfcac91aa5c5d283ebb6f84aa7960d304", + "a9278cae9638ecc712ff1f2fe5b47348f113701e0d15ee35c9be4f16e4d72850"}, + {"37d059dbfcbb73a04ce93a6a9700d325a469555f7329f3ff629606ce53f93e18", + "24a72bc383ffc9754ca67b89b45d8f81a7d1b4d7c483686c70fbb9d22359bd48"}, + {"cd51a10618a1724a15429fade0127565bfd046fe8e865080f75e8ca596af1117", + "5cf8658f130f859d0f46a43dd0d14403a5642b6dd89c29c73b7f5527eccdcf58"}, + {"10136633655ca3b05d24d3de3011d754a7024e513b1553d5fc566057cd300d36", + "9a7885a6c5ae3c528821464f51e5b3801db8e89b827bf6c125d29c92b031b279"}, + {"5c93c12f612152c1c3a5b43450f280ceea6ba0111c9f7888b1ed811df1d86915", + "6170fdcbc9b91ff30ae85ee267dd257fd6898c85a33556ecbc8194cffff96e6f"}, + {"6d0265ff5ee44ec4072d71c51931271c0cbac96a0fdfa228c33eaac4a8d3751a", + "145d32abd93644ccb6449aa47fef948ab09a1ea665a45a364e18a0219395a764"}, + {"d3971f263b0b7f8e216d7f438c28cfd2245d743e603380f5144a5b0edbe3d507", + "23ffd808f0b240d41c4fa3e423ca6516c41df442ad67d2cfb30274c557bd7f46"}, + {"0e292ab5d08a7ad67ee4a2f6f066aceea0726c7785208123a5aec622ee6baf3b", + "cfd79f2baef15120f9aab7be1dab7ab4e89d1dd82120d276821696089f750179"}, + {"7e04408466dc68aa5ff7dff24ab7445aa0c43d9d6fe02b3a54e17852c0dac903", + "16579875020c797dde3c77800f906b259304011713b112e8bf1688003fc40b69"}, + {"0de03719b00697282cda572237d6eade729a631fe85060c60369efb58089640f", + "49b06b5610de567531c9777998da61a27d3b9b464bca01287ff7ee2e5eeb567e"}, + {"4460ecab3a3993672499bd90bdfddf6b39c14406354e881c297bf9aa2d95a41c", + "c0b0ddd09c3d3cf724d09b294efdc300e3694011af6f7491f85855e1fcd27415"}, + {"5b0c4ca74594198245d05b59cc24f73503edb762ba1402160ba72e6d53984c19", + "2524a32b0c9a35d0e6d9abdb5fda4bf481e158b4495251780bc8a9849c0dbb37"}, + {"9437cf7151d90d35a85bec1d32e4de28346c4ba4960b0b2d415e658ee77e9f2f", + "50f4d4f04c0a91d7c66693c3b5656c83614088b08d4b5bb59df8c4332023757c"}, + {"4ae0941cf4b873cdb72a75f96762d31f186facfc616ae5a4f75d6146c8ab4012", + "6ac983fb81164372f3870acf519cb77723dfcc56c4e1922b2c29061876eb3319"}, + {"85dacba8ffdb0912a6a82738bdf610c74a636a7e2b76da24ca30f66ec95d9c04", + "418d1b3fbb8be9e35beae5267b5ce2110b53682287517e16a15895caa922737f"}, + {"74b3b0c307eb627ad5e56cc0840687079468ef43eab43347df9bb47c8a7b922a", + "3f5101cb863e74d89c32e48d6a1d51236d92d263a56afd1e78f3ac6585ad401b"}, + {"fe348630eb4fe8fff716fe1d96a503ac852b4622600b2040befa473365373d3f", + "599816814b7eb47d5624be588cab2555fe882836e82d69f8ab267f2e7c6b625f"}, + {"fd947e5710145f70b2d650f9db3c3c4006ee5fa27b162c64bbde7a4a502caa1d", + "a51cadc9f26a9ecb1c4a080f2ac5c44ad666e0ee205ca875758bb02a4c49e921"}, + {"7fd4313e895bac05cfc51e1070fcf1b52dd80e987a16102c22d7b1c4e8c7001c", + "d02f3c55f49422baf0413de805f7da581ca2c124737d1ade9ccee8d59d05c97a"}, + {"6e1b03fff8d9a75ca1136cba9a2ed94a67e9dd727ceb7e7621de3308f592b204", + "6ea9ae9affb20a8cda3f3cb527c31fdc54483c90e3e7cbb709b1d8d82d980016"}, + {"9785f1515c5b8b364b388b1b22821f1cd3fa637bea98f6ed127bf56f9562a637", + "ed8820ae10d680a6a6ec55289323640de9dc36289e55014a67cea6943bd7c67f"}, + {"4e6565e8f6355637ed8fe0ad26d701c871586c6899ad0393637b7432b21abb01", + "3817ffcfba81e808fc7d892df9a92139a6c1fec012518fc514208dcbc96f1027"}, + {"74ede9acaf7b907b6421122b7663f2fbd4b96b69a49a5be4cce7ee71c8f94211", + "d50c53cb934386b3487e7e6c982176805c9ae06e6451bf7ac8f75f435b874021"}, + {"d9298fcce9222b61ebd60d4e08efb7b2b8deeedcb21dcbdd538b5d94763e0b35", + "32180db80a049b160d635bcca2c637def4989a0f155a05d65514498d18e92d72"}, + {"3f8c0d1d964cae028e17d021e00d440169bb340e394e2d4b81496dce5011d41f", + "9ef21d85e2a7b23d91adcd91b8b20a318c65e29984845cea9e86c83095e9be24"}, + {"bd4f8ce79617eedb315aff777bf16d54784e192ae169466bb88c79e5c6e7582f", + "ef234e4feddeb187b6c52bedc013ae01d4caa9aa00816549ee83dba16d75715c"}, + {"252843f300f8e0c4917924f98871bf21eefbc35b849147eb2710943996993639", + "98143d07e0e46a6006020cc9b52c1c53d73264b0d5f6d97a843cc118454f071c"}, + {"590a48130c5b7c3edbc28649413dd21c607f12133fd64892f1f94445e26c6c0e", + "3d5fe0facc62e91bdae75de485059a884ff57d229e845ce6583c289a1a0bae03"}, + {"67fb10fcbe5cb27ed87ee2bafc390cbf58e9e3d1b5ae484dba6440ecba0ff51f", + "a57a21e89aa79d36d3f130f9e101bdf2835594181690cd22ae439ad56bb82f6e"}, + {"956c036e2a28891528f47aeb35ce303fd2f4e8694bfd17db62a104f6f02f8417", + "a57223e36b52498f6be70fbfcaebaacb93941e0ac8020d0cfb742ea05abf7606"}, + {"e115347558b9ea6a9658f05ba888e17c5d0980fd881cca6429431ca9682df222", + "b141606fb2601df912fea792f7c551389ea7bb6bd3ae810c8fab14414e07b116"}, + {"bf666546f43c1b7cde451203c1c588ae94232350e76c8f6d439dd741d43be83d", + "12139801c6f2574dd4d05bc5d994324db73736245a32831dd4c33f6d5518b12c"}, + {"eb8f27e47e6bf61836b290bebca9a1a9d8bbbe23dabc503f8c69d3c8eab8213a", + "10e178593c8d4ff4e3a7b5a77b669638fbc011d022a128df2d4631ac68167b0a"}, + {"83192bb379fae0011976edfd2e5ce4cd23145302735363a623c209b66e17e02f", + "e891af8305aa1d33d9ecf46105b97292bcd3de87e5bd525c23945cc178aa324e"}, + {"0d0397ddaec333d789f0afd0a3526b5705d82ab1dce2ef98b0cf0215d817f13e", + "c287734b2daa886277197e7c7041d36a3b6271d7bb5b86847f9ccf7034349904"}, + {"6919ae1f897ba44d5b8882e8efc2048cab88ba35bf6129683b0b59eadf912304", + "cd3ec0b8085504094550a85569a841ffe623133ba7df6d892824b5155c24af78"}, + {"bb6d2ca4877b979e38470d00739ce216f9d0d01ed8145c49d3b2e7e339df9b37", + "7f3252d45a17b5b61b5bc88007e6e15ae6f813eb3aed2955941c5469585d9332"}, + {"5e4cd46e0d230c3f81655594efb9a5ec8f512c53f8653ae462a12e24588ead25", + "9876dc1d59cff049acb47a5c76a357dbd28249a46529ca1c9dd1a6acc3825d1e"}, + {"5cd6c28ede3cf32a7d41a0ee82db2e094e307ae59d377aac837ad92945a92e28", + "f505969087228b43e0b1783bc876a999b26b1ca59f512055cf6c2d6fccd31967"}, + {"c92c6bf1fe8eb00439c250cd3c2958c0f589f97d1e53b12c2c2b164eef643c26", + "e91005394f98f6d050a51d01d91bf40b088680544ced0133dc9b76dc89f2f06d"}, + {"2e60b5da461e329be6f927bbf1881636d9b482a7b8a550a1159fd999cd2e1e0e", + "1b69d3245e6bb244bbfbf07d3408918f441f95ce9e164a8838869e93e9bd2423"}, + {"12958c58e9a3994cc55e9299498ca0d9a6c852568bc066a16dd3ea290beaf026", + "35fc37f4b95f4469f6f1bbe3c3568758ff4bd69362dff231e6046449ed0b3723"}, + {"e10041dbbd970f61d686f6b705bd9b48b21ff5ac9134d3c954c484122fa12c03", + "db06a4b799ad123f7facc3c3469537237416c7e814285045ae9b05a29b309870"}, + {"1e76f55347c64f512de6a274ce4eac1903399b4e9b036f00db13c132c84f6f23", + "412ee326c532d7fb22a9c24c13779ba58da6700c5222f0159663c676ffb6de72"}, + {"b86b15a0b94c2d400a2ca12a5b655ef8cad897bb76824ca3abcf8010ec7dd22f", + "54387f7ab7154ef9dab2c05af62d948bff94960a4c091cb72e470486a9d44549"}, + {"f9b69e01755a8971e75d056cc40a7eefdf2ba7b83f11798342d63cc1e3ccff3d", + "25a3a1a5fddd93ed6c694a80f54a130252b148c5c3766b924f519a09e58cab1d"}, + {"b5f4f1fc2b16f37c014785e2512def0b7167e0ed1d8d61794ced516f89a6a91e", + "8e6884b2208f9822731e200fa433153d7825c6d2c5164e563c1fd4aae9866016"}, + {"bfc3c0e75ee0041c3151879aa400d43eece9bfb7641f6e29d805c4e574c4ec2d", + "b64f1177bef8aab66cf7b287276ce3c4325f96dbccfda5018285ebf736878762"}, + {"f2feeb5f82c281bc72b47d6f7deac81748cb0f9455cf95f283b46358c6bd5335", + "fcfbfe831e6ffd643b7e5a119042ac90e404dd6fe138eced2dcfa8682d5b7543"}, + {"08b05cee3cf8731094e7c8ab7e402e7627884f4e560a2c3f0c8c15ff3b68ae31", + "a29f8a8e57fb6a8e434513bd85209e8a6d65daa2d8ca5621e26760a94568c130"}, + {"e6c39685bb4831568e71ff04f82444f9ef1d3ddd6b39f9d5117058326a716834", + "681cfa89812e0933e5c39912afbe1b52b52bc14cd795bc131f7f1b9bf0a42a0a"}, + {"34df6477bad44f5782129ce8ef8330af1931e473455dc5bb02bc08352c775704", + "9c775d36dc04ae52cfc4e384f2acd956a3bc5f3ac08ac813377bd3495b8de13a"}, + {"231822ea9c0a195534982acab449cbad64d2c8e4309fc14cc5e7fd01074b243e", + "13abc54b4d65a1ceb455ac0677de735015b1dc3831bf8b0558cfc17ef680cb76"}, + {"7ee0b73119314dd1fafd73f314793b9d202823212e672bb6e2e0f00020ef220d", + "dff53598d719a4b231697286de7171c54f6dcce568010ba8929f52284628c20c"}, + {"694748489fd577d19d8fc764dc495d275e924b443f851f40b4d0c9e9a0248b18", + "9242c62e3fe6f6b929d962479d18f24d0f29af422c089ef4d3b193ddd06a3f1d"}, + {"d933f62222bcd802776c9fe9f776a74337e2e1c2a6b4757a1a89dcba64b6ec13", + "a1c88002d033161a50eb051d48110a2cd566bf75ffad1d6996b69347a5c2c874"}, + {"0f84fa4fd3141101e7163d9b5a3436fda71f369dde063f3087e67d7fd124a30f", + "227b58b9e5aae4e71fa2a4ea358dcb37d8350a89020a02e08e91627da5b14266"}, + {"3177d8c0a8b216d911f5fed6df082163f3e458d8cc9f8fe39ba48348af5c7109", + "dcd7b75011043718fbedcab5672bd0b7991846f29336eb8db9799cc29590d46b"}, + {"e83d95f22631ea13c273dae7bed7830a927792e288b1a55cdffa1a41588d8513", + "82996c346bd95d64b4d11cb6f2c346ca34bf48b2bdd34f4092923fc1f4630a63"}, + {"3f766eea298745c46cd4563e624455d96b8d8affc3597c0c62ff2650bb6f7a1f", + "5fde8146052b402802fd85ef7c336222502e647d715a0323871f2d7c567cc864"}, + {"420c503fa383c532482b1ba5ac6f612ff248a2c2d1f1445a510691a7feaddf28", + "aa3cc1a45c3d782b674140f8889f91b8517a7ffe28ebf6c31ccf0d7f94fcca59"}, + {"9264f112b3b3c43c33034f05842a6dc65b48f7618a40795b26ab31e869780b0a", + "8a90024fc18bafe5cb30583690fb83c6be57318e362b427bad3748bf7795c376"}, + {"bb9f1789a219a9cdbaedb9bceb9402742b3e8387164e65591b94f62d29b8961f", + "ddc670d74747c08dc109c8f9b0e47d92516368d65daf6b4860bc9441fc4d3f44"}, + {"7343fcca63ccd993be8e68e019e66ecc706bdf1438a1f92d0c2f6f9344074818", + "9ed23885e7b0818d1ae85d246c5791b851175ccd488d0307841845e2cf79e236"}, + {"5fa29c71c398f59514e2974fb5f6c9769d21953e6da1bf675694a8dc356de22e", + "20d4655962adcacccf18b111564175cc63c16127ffcafe56255df5dc5b494031"}, + {"9a3c70cd8635238499d6094129c128c2472798b9b70e7c998e4846eb2d065432", + "e65d924309065e31262e3d933ca0c220ee26b3345a59e5440dcb6b6203633769"}, + {"4cc2f06a95ec398e87f920fbf42c65a178243f17c385ab02078575d68dc0772a", + "ca7de00ec696183e978915b76c24d7f5e4f4fc92e7cccbc8317cda158a4a3d26"}, + {"4daa3126ea5c8ce2d4716cbf1f7f4c31e88221b95178687c885960ba33e2b92c", + "9a97c82c8feedcb0d5818b28e8524a6acd2372a996742957ea99e30af730016f"}, + {"210cf82275cc5581c185a4cfe75a48a9c4cec8b26ae6ee6d247abbc993d11b3a", + "1cf2d1a450d86599620b22dc6a67e82f12ba4d143706330a406827696947e46c"}, + {"378061a4f8a56ce7fb35eb42d1c544f0291c4f16e4632e6382df2a42a287e020", + "1de340df9c353eb7baa9e34f4ecbcdd6c48b19915def5dd438bcad4a1860e57e"}, + {"79edcec98cac4c68ba2d0705be19a582dc7f8f8801d8ba8731ba4852c0db6431", + "0a2c7ce989c412478f22867d696a64f2a2bb0ea49061db9b4b723ce455cafc41"}, + {"48d5db49efeac028e9b6b255b0b748f6376f75979d95c6f7fb543f2b8189ad1e", + "585d8408a4a981c1880cd7d9c4fa8f3608b403e69a246ad66402abbc4c515659"}, + {"bc51b72885daa8da3a4b7dd990865d5d68cc25c12178071e8807195c62925318", + "5717e3bde78dd0b8da30eece11184e058f11bf1feb9f102ef5e050536e1fef47"}, + {"8b41b03f8a883169e9d2a5958d868124cd37b7ee4c84805a3729c2c95f697207", + "a708912d5305487f754c2857337c754155c99fc80a5f366e145198472a267e01"}, + {"b0ea6e71547375e9c12773a233e2af99ce90f75bdd10a4d9c9f294b5238ca009", + "7128133f5199d228fda2f2b621e939328973137e191af36bf9da9a2b23513c12"}, + {"bbf1697bf69a5c50905a0af9cb8ac1801b737853dd53604d622ee020459f6403", + "05082d4ab91e94f4f258571b936990664a8bc3dbff7b1d969ecc1c67f93a586c"}, + {"346fe98321ca46ea6c5107d757f85426024c56b2c16f9d65b195bfce91001c2b", + "a3bab21520dfd7f160398c7d4c1178011e173de520ecf2e28c776ca8612fce76"}, + {"f803f928ef671a45cb8ebb436520d376a4dee0b30b7c7ac7bc268cb261a6ae18", + "6cec3ccfa3fae1218d37668095568641131cbb4c3282c5c8733582c06a532b2e"}, + {"c34956201d38ea89fa23b5705302f2dfe2aadff9441fe1275cbac4c1a79cc10a", + "65fe02b65388a21906d03ed13ba0be3b06d0338a54efa7cd40bb51bce364f224"}, + {"4cb380ef1683c25b5b150b13bb5670ddd550efec81d670051361b0e956d1ee16", + "0cdba037581cfc2885a23a0d1ef3fee298bfb764c482ff93fbf315416d4ac746"}, + {"92b892cf2e687990deeccc200222fafa8c5f6dde6822560d4cff63faa2d86c0b", + "3661e2b936459dc36b50bb913443c1a9c1bee7a20ac434a5393d2ea27240d653"}, + {"9f007942d0335c424ef5457caceeadd0b08635a8ec6c4540dab41e1f889d6d25", + "2b84d9b945bc44bd4bfe0a3528db1fb36b89a3eec37a53ecf0426b8ad1426a47"}, + {"79fc38995745def485f0b15256c3ddd0c90f0e152e6da9ea7cc973048928190a", + "126cc0ca47a723f0cdc7498132d0afd98f2a0b4c8d9056b4d64b3b710054095c"}, + {"73a8494cf1bb682f50c251b447d41f9e4e6827de6fca2f8fb24767b1f7f6a111", + "4ae06615ae3835efe72ceeb2fb86af8c58dfb942817cb1889e24358642baff1a"}, + {"f2d4b68962a0c392292f26276f7db3be30d29c868421b5d7bb0b09df40149106", + "d5568c4635741a949d2ec79ce60eddbe552316a39ce995ea1dfb331139b6c244"}, + {"f3f116d4b4251c1634ffa9ac9cc0bf666e0bc58b445ba762e5b9fbe5b82cd72b", + "82c86a6a830c7cebba9860959017478f3d47996a856a084b1371dddfdc8ccf74"}, + {"bef8be67bad3f1b644741b638151a5e326cd040e45805100abfa1cb2023e2720", + "8bdf71bb91953fbc769ccd38b2f9a56987bd37c012b6284c517390d0e690f65f"}, + {"c5e8d660c0f432b8e0f4700d30109abfb630fefda684aad07df14d96d8d2cf1c", + "65c5a1d68ef39e74851356dd3e79914ed1e7af2d9ff92025a340e3beef488c19"}, + {"203b0790916cda3385b6ac955e8b55d72a06e9f46dcfa201addd752fd7e56102", + "ea6deb3a125a97acb46c66921fcc3de81a8614c9af4b44405fd8ac7967040d74"}, + {"212f000b8adad8cbf2bfe2a34d1af4f19fec015072bbed897b4bb46cb5c1fd3e", + "7d313ad2d459b66c41eba054598626ac11b8c747787e61b657d1cd920c457e0c"}, + {"70727c29524a46873384bacb8db27cc5a8550e7d3dd032344c07b8bbdde09f02", + "b741269f9b23c63f378ea7852e6c87e179d7a2f3aa36ffabfb21b0099a504718"}, + {"1438d163dc0a3c9df341af7474b7795f3add2855fbd184b7b09a8fe7e73b3611", + "1a6e62904310d1893ab79e790c87da05e73675d58e923adaf4ef07ec1eceb636"}, + {"8ce5f5a12f3e9a68301784a9026c48e12603581195457cf0ae3c1df88665632b", + "85fb6bf8b6b251e0a765c6f9347d90737a07f56d9ab0a3fd5ef8d2c96f737b7a"}, + {"369b3326d376203b9c2ff634f3842c6e3642ac36b0956fe379bff77f14403119", + "bc9986ab0e74e0e30beb7abea3522f486a22a989ce21dce9faea5eadc8837715"}, + {"71c4ab15d9e12e38e63451d881acee03c9aa9b4122d64d9b70bdfa054dd91924", + "db6314c169a555b7827fd36497363e4592a1ba4f359027f9aca47ce421fc9c44"}, + {"aec410101f0dd94186ab16a6976c3221b82124f94f274a58646c4b24e9850706", + "ddc588a9344d50f15acea91e4cbcd84f7db75dc3be42b9139b82b4a51d130357"}, + {"7291238fde758f1d8357dae5a5b4934fb77a85438c788df0641cc335f0cb1336", + "6f0f3bb17fbe7675df022d1fe055a4abcec0fa5e6a5e05ab87496fdd75996a73"}, + {"4e094348d8cf3c5615e4a734bae2f41561e9eb0e7e38a669ac25f258a850810a", + "d92962e2827e05ce44d723bd99933934b772642b646b3cb8036b080d0a084362"}, + {"a20ec90d5e830aed686038d255074fffd95035497e73cb587bae42907e32fe15", + "4fbeef3d982e8e0f8084082e99aa051446b3183b6db5b60bbbb254bc62da4c0f"}, + {"1d038cb81514f236f31f68faf70df24d3346278dbcce3d78fa35102565526e2a", + "deca427a897134d73a9d54d98772ab5c265b1269b5700316fc85dcd7d2cb1a4a"}, + {"24d5fe7ca7d92b3c6d6ef071200cfc4ae2ab763f2b9072a093c616cf78d2fb21", + "1f515f845a2f15d6efbe7f0c3af76e97bcc1ac07caa73e4085210abff933382a"}, + }; + for (size_t i = 0; i < sizeof(tests) / sizeof(*tests); i++) { + uint8_t input[32] = {0}; + uint8_t output[32] = {0}; + uint8_t expected_output[32] = {0}; + + memcpy(input, fromhex(tests[i].input), 32); + memcpy(expected_output, fromhex(tests[i].output), 32); + + int res = map_to_curve_elligator2_curve25519(input, output); + ck_assert_int_eq(res, true); + ck_assert_mem_eq(output, expected_output, 32); + } +} +END_TEST + static int my_strncasecmp(const char *s1, const char *s2, size_t n) { size_t i = 0; while (i < n) { @@ -10726,6 +11263,10 @@ Suite *test_suite(void) { tcase_add_test(tc, test_der_reencode_int); suite_add_tcase(s, tc); + tc = tcase_create("elligator2"); + tcase_add_test(tc, test_elligator2); + suite_add_tcase(s, tc); + #if USE_CARDANO tc = tcase_create("bip32-cardano"); From 2f699a1b6f574eca9d98050c65b75a37a2cdc82d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 2 Apr 2024 15:31:24 +0200 Subject: [PATCH 040/626] feat(core): add elligator2 python bindings [no changelog] --- core/SConscript.firmware | 1 + core/SConscript.unix | 1 + .../modtrezorcrypto-elligator2.h | 64 +++++++++++++++++++ .../extmod/modtrezorcrypto/modtrezorcrypto.c | 3 + .../generated/trezorcrypto/elligator2.pyi | 8 +++ core/src/trezor/crypto/__init__.py | 1 + 6 files changed, 78 insertions(+) create mode 100644 core/embed/extmod/modtrezorcrypto/modtrezorcrypto-elligator2.h create mode 100644 core/mocks/generated/trezorcrypto/elligator2.pyi diff --git a/core/SConscript.firmware b/core/SConscript.firmware index fa38b8b80d..629341eaf2 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -121,6 +121,7 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/ed25519-donna/ed25519-sha3.c', 'vendor/trezor-crypto/ed25519-donna/ed25519.c', 'vendor/trezor-crypto/ed25519-donna/modm-donna-32bit.c', + 'vendor/trezor-crypto/elligator2.c', 'vendor/trezor-crypto/groestl.c', 'vendor/trezor-crypto/hasher.c', 'vendor/trezor-crypto/hmac.c', diff --git a/core/SConscript.unix b/core/SConscript.unix index 4a8bb342ef..5cb787d956 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -122,6 +122,7 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/ed25519-donna/ed25519-sha3.c', 'vendor/trezor-crypto/ed25519-donna/ed25519.c', 'vendor/trezor-crypto/ed25519-donna/modm-donna-32bit.c', + 'vendor/trezor-crypto/elligator2.c', 'vendor/trezor-crypto/groestl.c', 'vendor/trezor-crypto/hasher.c', 'vendor/trezor-crypto/hmac.c', diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-elligator2.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-elligator2.h new file mode 100644 index 0000000000..8bbfd7910d --- /dev/null +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-elligator2.h @@ -0,0 +1,64 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "py/objstr.h" + +#include "embed/extmod/trezorobj.h" + +#include "elligator2.h" + +/// package: trezorcrypto.elligator2 + +/// def map_to_curve25519(input: bytes) -> bytes: +/// """ +/// Maps a 32-byte input to a curve25519 point. +/// """ +mp_obj_t mod_trezorcrypto_elligator2_map_to_curve25519(mp_obj_t input) { + mp_buffer_info_t input_buffer_info = {0}; + mp_get_buffer_raise(input, &input_buffer_info, MP_BUFFER_READ); + if (input_buffer_info.len != 32) { + mp_raise_ValueError("Invalid input length"); + } + + vstr_t output_vstr = {0}; + vstr_init_len(&output_vstr, 32); + int res = map_to_curve_elligator2_curve25519(input_buffer_info.buf, + (uint8_t *)output_vstr.buf); + if (res != true) { + mp_raise_ValueError(NULL); + } + + return mp_obj_new_str_from_vstr(&mp_type_bytes, &output_vstr); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1( + mod_trezorcrypto_elligator2_map_to_curve25519_obj, + mod_trezorcrypto_elligator2_map_to_curve25519); + +STATIC const mp_rom_map_elem_t mod_trezorcrypto_elligator2_globals_table[] = { + {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_elligator2)}, + {MP_ROM_QSTR(MP_QSTR_map_to_curve25519), + MP_ROM_PTR(&mod_trezorcrypto_elligator2_map_to_curve25519_obj)}, +}; +STATIC MP_DEFINE_CONST_DICT(mod_trezorcrypto_elligator2_globals, + mod_trezorcrypto_elligator2_globals_table); + +STATIC const mp_obj_module_t mod_trezorcrypto_elligator2_module = { + .base = {&mp_type_module}, + .globals = (mp_obj_dict_t *)&mod_trezorcrypto_elligator2_globals, +}; diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c index ebd9ce34a0..8d4c2d02fa 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c @@ -55,6 +55,7 @@ static void wrapped_ui_wait_callback(uint32_t current, uint32_t total) { #include "modtrezorcrypto-crc.h" #include "modtrezorcrypto-curve25519.h" #include "modtrezorcrypto-ed25519.h" +#include "modtrezorcrypto-elligator2.h" #include "modtrezorcrypto-groestl.h" #include "modtrezorcrypto-hmac.h" #include "modtrezorcrypto-nist256p1.h" @@ -102,6 +103,8 @@ STATIC const mp_rom_map_elem_t mp_module_trezorcrypto_globals_table[] = { MP_ROM_PTR(&mod_trezorcrypto_curve25519_module)}, {MP_ROM_QSTR(MP_QSTR_ed25519), MP_ROM_PTR(&mod_trezorcrypto_ed25519_module)}, + {MP_ROM_QSTR(MP_QSTR_elligator2), + MP_ROM_PTR(&mod_trezorcrypto_elligator2_module)}, #if !BITCOIN_ONLY {MP_ROM_QSTR(MP_QSTR_monero), MP_ROM_PTR(&mod_trezorcrypto_monero_module)}, #endif diff --git a/core/mocks/generated/trezorcrypto/elligator2.pyi b/core/mocks/generated/trezorcrypto/elligator2.pyi new file mode 100644 index 0000000000..c1e1bae8da --- /dev/null +++ b/core/mocks/generated/trezorcrypto/elligator2.pyi @@ -0,0 +1,8 @@ +from typing import * + + +# extmod/modtrezorcrypto/modtrezorcrypto-elligator2.h +def map_to_curve25519(input: bytes) -> bytes: + """ + Maps a 32-byte input to a curve25519 point. + """ diff --git a/core/src/trezor/crypto/__init__.py b/core/src/trezor/crypto/__init__.py index 2c7b0cd045..c08024842f 100644 --- a/core/src/trezor/crypto/__init__.py +++ b/core/src/trezor/crypto/__init__.py @@ -4,6 +4,7 @@ bip39, chacha20poly1305, crc, + elligator2, hmac, pbkdf2, random, From 5140cba7d2efc11e1244cd8cf0e66f4b15f83266 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 2 Apr 2024 15:31:30 +0200 Subject: [PATCH 041/626] test(core): add elligator2 unit tests [no changelog] --- core/tests/test_trezor.crypto.elligator2.py | 37 +++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 core/tests/test_trezor.crypto.elligator2.py diff --git a/core/tests/test_trezor.crypto.elligator2.py b/core/tests/test_trezor.crypto.elligator2.py new file mode 100644 index 0000000000..f6312f4b78 --- /dev/null +++ b/core/tests/test_trezor.crypto.elligator2.py @@ -0,0 +1,37 @@ +from common import * + +from trezor.crypto import elligator2 + + +class TestCryptoElligator2(unittest.TestCase): + def test_map_to_curve25519(self): + # https://elligator.org/vectors/curve25519_direct.vec + vectors = [ + ("0000000000000000000000000000000000000000000000000000000000000000", + "0000000000000000000000000000000000000000000000000000000000000000"), + ("66665895c5bc6e44ba8d65fd9307092e3244bf2c18877832bd568cb3a2d38a12", + "04d44290d13100b2c25290c9343d70c12ed4813487a07ac1176daa5925e7975e"), + ("673a505e107189ee54ca93310ac42e4545e9e59050aaac6f8b5f64295c8ec02f", + "242ae39ef158ed60f20b89396d7d7eef5374aba15dc312a6aea6d1e57cacf85e"), + ("990b30e04e1c3620b4162b91a33429bddb9f1b70f1da6e5f76385ed3f98ab131", + "998e98021eb4ee653effaa992f3fae4b834de777a953271baaa1fa3fef6b776e"), + ("341a60725b482dd0de2e25a585b208433044bc0a1ba762442df3a0e888ca063c", + "683a71d7fca4fc6ad3d4690108be808c2e50a5af3174486741d0a83af52aeb01"), + ("922688fa428d42bc1fa8806998fbc5959ae801817e85a42a45e8ec25a0d7541a", + "696f341266c64bcfa7afa834f8c34b2730be11c932e08474d1a22f26ed82410b"), + ("0d3b0eb88b74ed13d5f6a130e03c4ad607817057dc227152827c0506a538bb3a", + "0b00df174d9fb0b6ee584d2cf05613130bad18875268c38b377e86dfefef177f"), + ("01a3ea5658f4e00622eeacf724e0bd82068992fae66ed2b04a8599be16662e35", + "7ae4c58bc647b5646c9f5ae4c2554ccbf7c6e428e7b242a574a5a9c293c21f7e"), + ("1d991dff82a84afe97874c0f03a60a56616a15212fbe10d6c099aa3afcfabe35", + "f81f235696f81df90ac2fc861ceee517bff611a394b5be5faaee45584642fb0a"), + ("185435d2b005a3b63f3187e64a1ef3582533e1958d30e4e4747b4d1d3376c728", + "f938b1b320abb0635930bd5d7ced45ae97fa8b5f71cc21d87b4c60905c125d34"), + ] + + for input, output in vectors: + self.assertEqual(hexlify(elligator2.map_to_curve25519(unhexlify(input))).decode('ascii'), output) + + +if __name__ == "__main__": + unittest.main() From ccb242ee1cde588a8a3194db3ffe0d14bcbdba57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 2 Apr 2024 16:51:01 +0200 Subject: [PATCH 042/626] chore(core): introduce THP flag [no changelog] --- ci/build.yml | 2 + core/Makefile | 5 +- core/SConscript.firmware | 8 +++- core/SConscript.unix | 9 +++- .../extmod/modtrezorcrypto/modtrezorcrypto.c | 4 ++ .../extmod/modtrezorutils/modtrezorutils.c | 7 +++ core/mocks/generated/trezorutils.pyi | 2 + .../site_tools/micropython/__init__.py | 2 + core/src/trezor/crypto/__init__.py | 4 +- core/src/trezor/utils.py | 1 + core/tests/test_trezor.crypto.elligator2.py | 5 +- docs/ci/jobs.md | 46 +++++++++---------- 12 files changed, 66 insertions(+), 29 deletions(-) diff --git a/ci/build.yml b/ci/build.yml index 95c6c145b8..8faa98da55 100644 --- a/ci/build.yml +++ b/ci/build.yml @@ -197,6 +197,8 @@ core unix regular build: stage: build <<: *gitlab_caching needs: [] + variables: + THP: "1" script: - $NIX_SHELL --run "poetry run make -C core build_unix" artifacts: diff --git a/core/Makefile b/core/Makefile index 99125fbea4..9b5a32426e 100644 --- a/core/Makefile +++ b/core/Makefile @@ -36,6 +36,7 @@ ADDRESS_SANITIZER ?= 0 CMAKELISTS ?= 0 PYTEST_TIMEOUT ?= 500 TEST_LANG ?= "en" +THP ?= 0 # OpenOCD interface default. Alternative: ftdi/olimex-arm-usb-tiny-h OPENOCD_INTERFACE ?= stlink @@ -269,12 +270,12 @@ build_firmware: templates build_cross ## build firmware with frozen modules TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" \ PYOPT="$(PYOPT)" BITCOIN_ONLY="$(BITCOIN_ONLY)" \ BOOTLOADER_QA="$(BOOTLOADER_QA)" BOOTLOADER_DEVEL="$(BOOTLOADER_DEVEL)" \ - DISABLE_OPTIGA="$(DISABLE_OPTIGA)" \ + DISABLE_OPTIGA="$(DISABLE_OPTIGA)" THP="$(THP)" \ $(FIRMWARE_BUILD_DIR)/firmware.bin build_unix: templates ## build unix port $(SCONS) CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/trezor-emu-core $(UNIX_PORT_OPTS) \ - TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" \ + TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" THP="$(THP)" \ PYOPT="0" BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN="$(ADDRESS_SANITIZER)" build_unix_frozen: templates build_cross ## build unix port with frozen modules diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 629341eaf2..887419c6d2 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -13,6 +13,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) PYOPT = ARGUMENTS.get('PYOPT', '1') DISABLE_OPTIGA = ARGUMENTS.get('DISABLE_OPTIGA', '0') == '1' +THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol FEATURE_FLAGS = { @@ -121,7 +122,6 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/ed25519-donna/ed25519-sha3.c', 'vendor/trezor-crypto/ed25519-donna/ed25519.c', 'vendor/trezor-crypto/ed25519-donna/modm-donna-32bit.c', - 'vendor/trezor-crypto/elligator2.c', 'vendor/trezor-crypto/groestl.c', 'vendor/trezor-crypto/hasher.c', 'vendor/trezor-crypto/hmac.c', @@ -389,6 +389,11 @@ TRANSLATION_DATA = [ "translations/order.json", ] +if THP: + CPPDEFINES_MOD += ['USE_THP'] + SOURCE_MOD += [ + 'vendor/trezor-crypto/elligator2.c', + ] # fonts tools.add_font('NORMAL', FONT_NORMAL, CPPDEFINES_MOD, SOURCE_MOD) @@ -713,6 +718,7 @@ if FROZEN: backlight='backlight' in FEATURES_AVAILABLE, optiga='optiga' in FEATURES_AVAILABLE, ui_layout=UI_LAYOUT, + thp=THP, ) source_mpyc = env.FrozenCFile( diff --git a/core/SConscript.unix b/core/SConscript.unix index 5cb787d956..5ef09e5142 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -10,6 +10,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') DMA2D = TREZOR_MODEL in ('T', 'T3T1') OPTIGA = TREZOR_MODEL in ('R', 'T3T1') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol if TREZOR_MODEL in ('DISC1', 'DISC2'): # skip unix build @@ -122,7 +123,6 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/ed25519-donna/ed25519-sha3.c', 'vendor/trezor-crypto/ed25519-donna/ed25519.c', 'vendor/trezor-crypto/ed25519-donna/modm-donna-32bit.c', - 'vendor/trezor-crypto/elligator2.c', 'vendor/trezor-crypto/groestl.c', 'vendor/trezor-crypto/hasher.c', 'vendor/trezor-crypto/hmac.c', @@ -191,6 +191,12 @@ if FEATURE_FLAGS["AES_GCM"]: 'vendor/trezor-crypto/aes/aesgcm.c', ] +if THP: + CPPDEFINES_MOD += ['USE_THP'] + SOURCE_MOD += [ + 'vendor/trezor-crypto/elligator2.c', + ] + # modtrezorio SOURCE_MOD += [ 'embed/extmod/modtrezorio/modtrezorio.c', @@ -799,6 +805,7 @@ if FROZEN: backlight=TREZOR_MODEL in ('T', 'T3T1'), optiga=OPTIGA, ui_layout=UI_LAYOUT, + thp=THP, ) source_mpyc = env.FrozenCFile( diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c index 8d4c2d02fa..082a58a4bd 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c @@ -55,7 +55,9 @@ static void wrapped_ui_wait_callback(uint32_t current, uint32_t total) { #include "modtrezorcrypto-crc.h" #include "modtrezorcrypto-curve25519.h" #include "modtrezorcrypto-ed25519.h" +#if USE_THP #include "modtrezorcrypto-elligator2.h" +#endif #include "modtrezorcrypto-groestl.h" #include "modtrezorcrypto-hmac.h" #include "modtrezorcrypto-nist256p1.h" @@ -103,8 +105,10 @@ STATIC const mp_rom_map_elem_t mp_module_trezorcrypto_globals_table[] = { MP_ROM_PTR(&mod_trezorcrypto_curve25519_module)}, {MP_ROM_QSTR(MP_QSTR_ed25519), MP_ROM_PTR(&mod_trezorcrypto_ed25519_module)}, +#if USE_THP {MP_ROM_QSTR(MP_QSTR_elligator2), MP_ROM_PTR(&mod_trezorcrypto_elligator2_module)}, +#endif #if !BITCOIN_ONLY {MP_ROM_QSTR(MP_QSTR_monero), MP_ROM_PTR(&mod_trezorcrypto_monero_module)}, #endif diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index bff4e7532f..309e4684bf 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -434,6 +434,8 @@ STATIC mp_obj_tuple_t mod_trezorutils_version_obj = { /// """Whether the firmware is Bitcoin-only.""" /// UI_LAYOUT: str /// """UI layout identifier ("tt" for model T, "tr" for models One and R).""" +/// USE_THP: bool +/// """Whether the firmware supports Trezor-Host Protocol (version 3).""" STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_trezorutils)}, @@ -497,6 +499,11 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { #else {MP_ROM_QSTR(MP_QSTR_BITCOIN_ONLY), mp_const_false}, #endif +#ifdef USE_THP + {MP_ROM_QSTR(MP_QSTR_USE_THP), mp_const_true}, +#else + {MP_ROM_QSTR(MP_QSTR_USE_THP), mp_const_false}, +#endif #ifdef UI_LAYOUT_TT {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_TT)}, #elif UI_LAYOUT_TR diff --git a/core/mocks/generated/trezorutils.pyi b/core/mocks/generated/trezorutils.pyi index 088da5cd27..d1a4c157d4 100644 --- a/core/mocks/generated/trezorutils.pyi +++ b/core/mocks/generated/trezorutils.pyi @@ -144,3 +144,5 @@ BITCOIN_ONLY: bool """Whether the firmware is Bitcoin-only.""" UI_LAYOUT: str """UI layout identifier ("tt" for model T, "tr" for models One and R).""" +USE_THP: bool +"""Whether the firmware supports Trezor-Host Protocol (version 3).""" diff --git a/core/site_scons/site_tools/micropython/__init__.py b/core/site_scons/site_tools/micropython/__init__.py index 94477ba2c9..d4f422ff61 100644 --- a/core/site_scons/site_tools/micropython/__init__.py +++ b/core/site_scons/site_tools/micropython/__init__.py @@ -47,6 +47,7 @@ def generate_frozen_module(source, target, env, for_signature): optiga = env["optiga"] layout_tt = env["ui_layout"] == "UI_LAYOUT_TT" layout_tr = env["ui_layout"] == "UI_LAYOUT_TR" + thp = env["thp"] interim = f"{target[:-4]}.i" # replace .mpy with .i sed_scripts = " ".join( [ @@ -56,6 +57,7 @@ def generate_frozen_module(source, target, env, for_signature): rf"-e 's/utils\.USE_OPTIGA/{optiga}/g'", rf"-e 's/utils\.UI_LAYOUT == \"TT\"/{layout_tt}/g'", rf"-e 's/utils\.UI_LAYOUT == \"TR\"/{layout_tr}/g'", + rf"-e 's/utils\.USE_THP/{thp}/g'", r"-e 's/if TYPE_CHECKING/if False/'", r"-e 's/import typing/# \0/'", r"-e '/from typing import (/,/^\s*)/ {s/^/# /; }'", diff --git a/core/src/trezor/crypto/__init__.py b/core/src/trezor/crypto/__init__.py index c08024842f..51c159fe16 100644 --- a/core/src/trezor/crypto/__init__.py +++ b/core/src/trezor/crypto/__init__.py @@ -4,7 +4,6 @@ bip39, chacha20poly1305, crc, - elligator2, hmac, pbkdf2, random, @@ -22,3 +21,6 @@ if utils.USE_OPTIGA: from trezorcrypto import optiga # noqa: F401 + +if utils.USE_THP: + from trezorcrypto import elligator2 # noqa: F401 diff --git a/core/src/trezor/utils.py b/core/src/trezor/utils.py index e3ca5be872..995af3198e 100644 --- a/core/src/trezor/utils.py +++ b/core/src/trezor/utils.py @@ -13,6 +13,7 @@ USE_BACKLIGHT, USE_OPTIGA, USE_SD_CARD, + USE_THP, VERSION, bootloader_locked, check_firmware_header, diff --git a/core/tests/test_trezor.crypto.elligator2.py b/core/tests/test_trezor.crypto.elligator2.py index f6312f4b78..1c4189fcfd 100644 --- a/core/tests/test_trezor.crypto.elligator2.py +++ b/core/tests/test_trezor.crypto.elligator2.py @@ -1,10 +1,13 @@ from common import * -from trezor.crypto import elligator2 +if utils.USE_THP: + from trezor.crypto import elligator2 +@unittest.skipUnless(utils.USE_THP, "only needed for THP") class TestCryptoElligator2(unittest.TestCase): def test_map_to_curve25519(self): + # https://elligator.org/vectors/curve25519_direct.vec vectors = [ ("0000000000000000000000000000000000000000000000000000000000000000", diff --git a/docs/ci/jobs.md b/docs/ci/jobs.md index 5fb64ffcf6..ca21d7d127 100644 --- a/docs/ci/jobs.md +++ b/docs/ci/jobs.md @@ -81,69 +81,69 @@ Build of Core into firmware. Bitcoin-only version. Non-frozen emulator build. This means you still need Python files present which get interpreted. -### [core unix regular R build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L209) +### [core unix regular R build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L211) Non-frozen emulator build for model R. -### [core unix regular asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L223) +### [core unix regular asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L225) -### [core unix frozen regular build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L244) +### [core unix frozen regular build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L246) Build of Core into UNIX emulator. Something you can run on your laptop. Frozen version. That means you do not need any other files to run it, it is just a single binary file that you can execute directly. -### [core unix frozen btconly debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L263) +### [core unix frozen btconly debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L265) Build of Core into UNIX emulator. Something you can run on your laptop. Frozen version. That means you do not need any other files to run it, it is just a single binary file that you can execute directly. See [Emulator](../core/emulator/index.md) for more info. Debug mode enabled, Bitcoin-only version. -### [core unix frozen btconly debug asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L279) +### [core unix frozen btconly debug asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L281) -### [core unix frozen debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L302) +### [core unix frozen debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L304) Build of Core into UNIX emulator. Something you can run on your laptop. Frozen version. That means you do not need any other files to run it, it is just a single binary file that you can execute directly. **Are you looking for a Trezor T emulator? This is most likely it.** -### [core unix frozen R debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L315) +### [core unix frozen R debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L317) -### [core unix frozen T3T1 debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L330) +### [core unix frozen T3T1 debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L332) -### [core unix frozen R debug build arm](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L344) +### [core unix frozen R debug build arm](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L346) -### [core unix frozen T3T1 debug build arm](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L367) +### [core unix frozen T3T1 debug build arm](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L369) -### [core unix frozen debug asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L390) +### [core unix frozen debug asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L392) -### [core unix frozen debug build arm](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L406) +### [core unix frozen debug build arm](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L408) -### [core macos frozen regular build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L428) +### [core macos frozen regular build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L430) -### [crypto build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L453) +### [crypto build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L455) Build of our cryptographic library, which is then incorporated into the other builds. -### [legacy fw regular build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L483) +### [legacy fw regular build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L485) -### [legacy fw regular debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L499) +### [legacy fw regular debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L501) -### [legacy fw btconly build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L516) +### [legacy fw btconly build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L518) -### [legacy fw btconly debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L535) +### [legacy fw btconly debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L537) -### [legacy emu regular debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L556) +### [legacy emu regular debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L558) Regular version (not only Bitcoin) of above. **Are you looking for a Trezor One emulator? This is most likely it.** -### [legacy emu regular debug asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L571) +### [legacy emu regular debug asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L573) -### [legacy emu regular debug build arm](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L589) +### [legacy emu regular debug build arm](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L591) -### [legacy emu btconly debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L615) +### [legacy emu btconly debug build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L617) Build of Legacy into UNIX emulator. Use keyboard arrows to emulate button presses. Bitcoin-only version. -### [legacy emu btconly debug asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L632) +### [legacy emu btconly debug asan build](https://github.com/trezor/trezor-firmware/blob/master/ci/build.yml#L634) --- ## TEST stage - [test.yml](https://github.com/trezor/trezor-firmware/blob/master/ci/test.yml) From f0fef1d8c1ad82f5ca57113c9ef5e83d9fd1a684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 5 Apr 2024 15:41:14 +0200 Subject: [PATCH 043/626] chore: update gcc --- ci/shell.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/shell.nix b/ci/shell.nix index ba4770fa9a..7fc51be7f3 100644 --- a/ci/shell.nix +++ b/ci/shell.nix @@ -120,7 +120,7 @@ stdenvNoCC.mkDerivation ({ moreutils ] ++ lib.optionals (!stdenv.isDarwin) [ autoPatchelfHook - gcc11 + gcc12 procps valgrind ] ++ lib.optionals (stdenv.isDarwin) [ From 18f7820d4706454d0c0ab5aa0af8d5011394d6f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 10 May 2024 15:36:21 +0200 Subject: [PATCH 044/626] style: fix style according to new clang [no changelog] --- .../modtrezorutils/modtrezorutils-meminfo.h | 10 +++++----- core/embed/lib/display.c | 4 +++- core/embed/lib/fonts/fonts.c | 2 +- core/embed/trezorhal/boards/stm32u5a9j-dk.h | 4 ++-- .../embed/trezorhal/stm32f4/displays/st7789v.c | 2 +- .../embed/trezorhal/stm32f4/displays/st7789v.h | 2 +- core/embed/trezorhal/stm32u5/touch/sitronix.c | 4 ++-- core/embed/trezorhal/stm32u5/trustzone.c | 8 ++++---- crypto/chacha_drbg.h | 2 +- crypto/monero/int-util.h | 18 +++++++++--------- crypto/monero/serialize.c | 2 +- legacy/firmware/ethereum.c | 2 +- legacy/firmware/recovery.c | 2 +- storage/flash_ll.h | 4 ++-- 14 files changed, 34 insertions(+), 32 deletions(-) diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils-meminfo.h b/core/embed/extmod/modtrezorutils/modtrezorutils-meminfo.h index 6c825343fd..422c83caac 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils-meminfo.h +++ b/core/embed/extmod/modtrezorutils/modtrezorutils-meminfo.h @@ -59,10 +59,10 @@ #define ATB_MASK_2 (0x30) #define ATB_MASK_3 (0xc0) -#define ATB_0_IS_FREE(a) (((a)&ATB_MASK_0) == 0) -#define ATB_1_IS_FREE(a) (((a)&ATB_MASK_1) == 0) -#define ATB_2_IS_FREE(a) (((a)&ATB_MASK_2) == 0) -#define ATB_3_IS_FREE(a) (((a)&ATB_MASK_3) == 0) +#define ATB_0_IS_FREE(a) (((a) & ATB_MASK_0) == 0) +#define ATB_1_IS_FREE(a) (((a) & ATB_MASK_1) == 0) +#define ATB_2_IS_FREE(a) (((a) & ATB_MASK_2) == 0) +#define ATB_3_IS_FREE(a) (((a) & ATB_MASK_3) == 0) #define BLOCK_SHIFT(block) (2 * ((block) & (BLOCKS_PER_ATB - 1))) #define ATB_GET_KIND(block) \ @@ -98,7 +98,7 @@ #define BLOCK_FROM_PTR(ptr) \ (((byte *)(ptr)-MP_STATE_MEM(gc_pool_start)) / BYTES_PER_BLOCK) #define PTR_FROM_BLOCK(block) \ - (((block)*BYTES_PER_BLOCK + (uintptr_t)MP_STATE_MEM(gc_pool_start))) + (((block) * BYTES_PER_BLOCK + (uintptr_t)MP_STATE_MEM(gc_pool_start))) #define ATB_FROM_BLOCK(bl) ((bl) / BLOCKS_PER_ATB) // ptr should be of type void* diff --git a/core/embed/lib/display.c b/core/embed/lib/display.c index 5c99bfaffc..c50886799e 100644 --- a/core/embed/lib/display.c +++ b/core/embed/lib/display.c @@ -36,7 +36,9 @@ #include "display_interface.h" -static struct { int x, y; } DISPLAY_OFFSET; +static struct { + int x, y; +} DISPLAY_OFFSET; // common display functions diff --git a/core/embed/lib/fonts/fonts.c b/core/embed/lib/fonts/fonts.c index b40be71e19..7bb2350a38 100644 --- a/core/embed/lib/fonts/fonts.c +++ b/core/embed/lib/fonts/fonts.c @@ -139,7 +139,7 @@ font_glyph_iter_t font_glyph_iter_init(const int font, const uint8_t *text, }; } -#define IS_UTF8_CONTINUE(c) (((c)&0b11000000) == 0b10000000) +#define IS_UTF8_CONTINUE(c) (((c) & 0b11000000) == 0b10000000) static uint16_t next_utf8_codepoint(font_glyph_iter_t *iter) { uint16_t out; diff --git a/core/embed/trezorhal/boards/stm32u5a9j-dk.h b/core/embed/trezorhal/boards/stm32u5a9j-dk.h index 3ff3673ee6..bb21f24766 100644 --- a/core/embed/trezorhal/boards/stm32u5a9j-dk.h +++ b/core/embed/trezorhal/boards/stm32u5a9j-dk.h @@ -7,8 +7,8 @@ #define USE_I2C 1 #define USE_RGB_COLORS 1 #define USE_TOUCH 1 -//#define USE_SBU 1 -//#define USE_DISP_I8080_8BIT_DW 1 +// #define USE_SBU 1 +// #define USE_DISP_I8080_8BIT_DW 1 #define USE_HASH_PROCESSOR 1 #include "displays/dsi.h" diff --git a/core/embed/trezorhal/stm32f4/displays/st7789v.c b/core/embed/trezorhal/stm32f4/displays/st7789v.c index 7e9f1392c7..f4e047dc44 100644 --- a/core/embed/trezorhal/stm32f4/displays/st7789v.c +++ b/core/embed/trezorhal/stm32f4/displays/st7789v.c @@ -70,7 +70,7 @@ __IO DISP_MEM_TYPE *const DISPLAY_DATA_ADDRESS = #endif #define DATA_TRANSFER(X) \ - DATA((X)&0xFF); \ + DATA((X) & 0xFF); \ DATA((X) >> 8) __attribute__((section(".fb1"))) diff --git a/core/embed/trezorhal/stm32f4/displays/st7789v.h b/core/embed/trezorhal/stm32f4/displays/st7789v.h index f3f1958714..4f8a816ffd 100644 --- a/core/embed/trezorhal/stm32f4/displays/st7789v.h +++ b/core/embed/trezorhal/stm32f4/displays/st7789v.h @@ -55,7 +55,7 @@ void display_efficient_clear(void); #define PIXELDATA(X) DATA(X) #elif USE_DISP_I8080_8BIT_DW #define PIXELDATA(X) \ - DATA((X)&0xFF); \ + DATA((X) & 0xFF); \ DATA((X) >> 8) #endif diff --git a/core/embed/trezorhal/stm32u5/touch/sitronix.c b/core/embed/trezorhal/stm32u5/touch/sitronix.c index d097cc9ca7..b705ceba77 100644 --- a/core/embed/trezorhal/stm32u5/touch/sitronix.c +++ b/core/embed/trezorhal/stm32u5/touch/sitronix.c @@ -681,8 +681,8 @@ typedef struct { #define TS_INT_EXTI_IRQn EXTI8_IRQn /* Includes ------------------------------------------------------------------*/ -//#include "stm32u5x9j_discovery_ts.h" -//#include "stm32u5x9j_discovery.h" +// #include "stm32u5x9j_discovery_ts.h" +// #include "stm32u5x9j_discovery.h" /** @addtogroup BSP * @{ diff --git a/core/embed/trezorhal/stm32u5/trustzone.c b/core/embed/trezorhal/stm32u5/trustzone.c index e760217cc2..f77fbb4a15 100644 --- a/core/embed/trezorhal/stm32u5/trustzone.c +++ b/core/embed/trezorhal/stm32u5/trustzone.c @@ -25,10 +25,10 @@ #define SAU_INIT_CTRL_ENABLE 1 #define SAU_INIT_CTRL_ALLNS 0 -#define SAU_INIT_REGION(n, start, end, sec) \ - SAU->RNR = ((n)&SAU_RNR_REGION_Msk); \ - SAU->RBAR = ((start)&SAU_RBAR_BADDR_Msk); \ - SAU->RLAR = ((end)&SAU_RLAR_LADDR_Msk) | \ +#define SAU_INIT_REGION(n, start, end, sec) \ + SAU->RNR = ((n) & SAU_RNR_REGION_Msk); \ + SAU->RBAR = ((start) & SAU_RBAR_BADDR_Msk); \ + SAU->RLAR = ((end) & SAU_RLAR_LADDR_Msk) | \ (((sec) << SAU_RLAR_NSC_Pos) & SAU_RLAR_NSC_Msk) | 1U static void trustzone_configure_sau(void) { diff --git a/crypto/chacha_drbg.h b/crypto/chacha_drbg.h index 83e2d0b421..15c3d73161 100644 --- a/crypto/chacha_drbg.h +++ b/crypto/chacha_drbg.h @@ -33,7 +33,7 @@ // block_count blocks of hash function in derivation_function. There is no need // the input to have this length, it's just an optimalization. #define CHACHA_DRBG_OPTIMAL_RESEED_LENGTH(block_count) \ - ((block_count)*SHA256_BLOCK_LENGTH - 1 - 4 - 9) + ((block_count) * SHA256_BLOCK_LENGTH - 1 - 4 - 9) // 1 = sizeof(counter), 4 = sizeof(output_length) in // derivation_function, 9 is length of SHA256 padding of message // aligned to bytes diff --git a/crypto/monero/int-util.h b/crypto/monero/int-util.h index 4942a1a0a0..c1c8553807 100644 --- a/crypto/monero/int-util.h +++ b/crypto/monero/int-util.h @@ -67,12 +67,12 @@ static inline uint64_t mul128(uint64_t multiplier, uint64_t multiplicand, return product_lo; } -#define SWAP64(x) \ - ((((uint64_t)(x)&0x00000000000000ff) << 56) | \ - (((uint64_t)(x)&0x000000000000ff00) << 40) | \ - (((uint64_t)(x)&0x0000000000ff0000) << 24) | \ - (((uint64_t)(x)&0x00000000ff000000) << 8) | \ - (((uint64_t)(x)&0x000000ff00000000) >> 8) | \ - (((uint64_t)(x)&0x0000ff0000000000) >> 24) | \ - (((uint64_t)(x)&0x00ff000000000000) >> 40) | \ - (((uint64_t)(x)&0xff00000000000000) >> 56)) +#define SWAP64(x) \ + ((((uint64_t)(x) & 0x00000000000000ff) << 56) | \ + (((uint64_t)(x) & 0x000000000000ff00) << 40) | \ + (((uint64_t)(x) & 0x0000000000ff0000) << 24) | \ + (((uint64_t)(x) & 0x00000000ff000000) << 8) | \ + (((uint64_t)(x) & 0x000000ff00000000) >> 8) | \ + (((uint64_t)(x) & 0x0000ff0000000000) >> 24) | \ + (((uint64_t)(x) & 0x00ff000000000000) >> 40) | \ + (((uint64_t)(x) & 0xff00000000000000) >> 56)) diff --git a/crypto/monero/serialize.c b/crypto/monero/serialize.c index 4d4cbd8bbe..1580718cb9 100644 --- a/crypto/monero/serialize.c +++ b/crypto/monero/serialize.c @@ -16,7 +16,7 @@ int xmr_size_varint(uint64_t num) { int xmr_write_varint(uint8_t *buff, size_t buff_size, uint64_t num) { unsigned ctr = 0; while (num >= 0x80 && ctr < buff_size) { - *buff = (uint8_t)(((num)&0x7f) | 0x80); + *buff = (uint8_t)(((num) & 0x7f) | 0x80); ++buff; ++ctr; num >>= 7; diff --git a/legacy/firmware/ethereum.c b/legacy/firmware/ethereum.c index e5682a08e8..c047ceb9b7 100644 --- a/legacy/firmware/ethereum.c +++ b/legacy/firmware/ethereum.c @@ -159,7 +159,7 @@ static void hash_rlp_number(uint64_t number) { data[4] = (number >> 24) & 0xff; data[5] = (number >> 16) & 0xff; data[6] = (number >> 8) & 0xff; - data[7] = (number)&0xff; + data[7] = (number) & 0xff; int offset = 0; while (!data[offset]) { offset++; diff --git a/legacy/firmware/recovery.c b/legacy/firmware/recovery.c index 6aae892efc..9ed3b7b435 100644 --- a/legacy/firmware/recovery.c +++ b/legacy/firmware/recovery.c @@ -112,7 +112,7 @@ static uint8_t word_matrix[9]; * prefix length or table for the very first level, as the prefix length * is always one and there are always nine choices on the second level. */ -#define MASK_IDX(x) ((x)&0xfff) +#define MASK_IDX(x) ((x) & 0xfff) #define TABLE1(x) MASK_IDX(word_table1[x]) #define TABLE2(x) MASK_IDX(word_table2[x]) diff --git a/storage/flash_ll.h b/storage/flash_ll.h index c7704cf0d2..e6faaee09a 100644 --- a/storage/flash_ll.h +++ b/storage/flash_ll.h @@ -36,10 +36,10 @@ typedef uint32_t flash_block_t[FLASH_BLOCK_WORDS]; #if FLASH_BLOCK_WORDS == 1 #define FLASH_ALIGN(X) (((X) + 3) & ~3) -#define FLASH_IS_ALIGNED(X) (((X)&3) == 0) +#define FLASH_IS_ALIGNED(X) (((X) & 3) == 0) #elif FLASH_BLOCK_WORDS == 4 #define FLASH_ALIGN(X) (((X) + 0xF) & ~0xF) -#define FLASH_IS_ALIGNED(X) (((X)&0xF) == 0) +#define FLASH_IS_ALIGNED(X) (((X) & 0xF) == 0) #else #error Unsupported number of FLASH_BLOCK_WORDS. #endif From 68c83f54cb69acf28b8d5a946f00f8fb10a8be98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 16 Apr 2024 14:27:42 +0200 Subject: [PATCH 045/626] chore: update clang --- ci/shell.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ci/shell.nix b/ci/shell.nix index 7fc51be7f3..f8ad4b3c64 100644 --- a/ci/shell.nix +++ b/ci/shell.nix @@ -22,6 +22,17 @@ let }; overlays = [ rustOverlay ]; }; + # 23.11 from 15. 4. 2024 + newNixpkgs = import (builtins.fetchTarball { + url = "https://github.com/NixOS/nixpkgs/archive/53a2c32bc66f5ae41a28d7a9a49d321172af621e.tar.gz"; + sha256 = "0yqbwqbripb1bbhlwjfbqmg9qb0lai2fc0k1vfh674d6rrc8igwv"; + }) { + config = { + allowUnfree = acceptJlink; + segger-jlink.acceptLicense = acceptJlink; + }; + overlays = [ rustOverlay ]; + }; # commit before python36 was removed oldPythonNixpkgs = import (builtins.fetchTarball { url = "https://github.com/NixOS/nixpkgs/archive/b9126f77f553974c90ab65520eff6655415fc5f4.tar.gz"; @@ -108,7 +119,7 @@ stdenvNoCC.mkDerivation ({ libffi libjpeg libusb1 - llvmPackages.clang + newNixpkgs.llvmPackages_17.clang openssl pkgconfig poetry From 9a4215581eda84cfc1529e5f2ffe3d04664f1f0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 16 Apr 2024 13:45:31 +0200 Subject: [PATCH 046/626] refactor(legacy): fix empty parameter list warnings [no changelog] --- legacy/buttons.c | 2 +- legacy/common.c | 2 +- legacy/firmware/config.c | 2 +- legacy/firmware/fsm_msg_common.h | 2 +- legacy/firmware/stellar.c | 2 +- legacy/oled.c | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/legacy/buttons.c b/legacy/buttons.c index 58e2b6d579..1b3e7f1e86 100644 --- a/legacy/buttons.c +++ b/legacy/buttons.c @@ -25,7 +25,7 @@ struct buttonState button; uint16_t buttonRead(void) { return gpio_port_read(BTN_PORT); } #endif -void buttonUpdate() { +void buttonUpdate(void) { static uint16_t last_state = BTN_PIN_YES | BTN_PIN_NO; uint16_t state = buttonRead(); diff --git a/legacy/common.c b/legacy/common.c index f87bff5097..0003588fe4 100644 --- a/legacy/common.c +++ b/legacy/common.c @@ -96,7 +96,7 @@ void hal_delay(uint32_t ms) { #endif } -void drbg_init() { +void drbg_init(void) { uint8_t entropy[48] = {0}; random_buffer(entropy, sizeof(entropy)); hmac_drbg_init(&drbg_ctx, entropy, sizeof(entropy), NULL, 0); diff --git a/legacy/firmware/config.c b/legacy/firmware/config.c index 0bb3e59094..75d133bbb5 100644 --- a/legacy/firmware/config.c +++ b/legacy/firmware/config.c @@ -979,7 +979,7 @@ void config_setU2FCounter(uint32_t u2fcounter) { storage_set_counter(KEY_U2F_COUNTER, u2fcounter); } -uint32_t config_getAutoLockDelayMs() { +uint32_t config_getAutoLockDelayMs(void) { if (sectrue == autoLockDelayMsCached) { return autoLockDelayMs; } diff --git a/legacy/firmware/fsm_msg_common.h b/legacy/firmware/fsm_msg_common.h index 5debd36ead..77a6ae43be 100644 --- a/legacy/firmware/fsm_msg_common.h +++ b/legacy/firmware/fsm_msg_common.h @@ -538,7 +538,7 @@ void fsm_msgSetU2FCounter(const SetU2FCounter *msg) { layoutHome(); } -void fsm_msgGetNextU2FCounter() { +void fsm_msgGetNextU2FCounter(void) { CHECK_PIN layoutDialogSwipe(&bmp_icon_question, _("Cancel"), _("Confirm"), NULL, diff --git a/legacy/firmware/stellar.c b/legacy/firmware/stellar.c index 8a64efdff5..78e9454abe 100644 --- a/legacy/firmware/stellar.c +++ b/legacy/firmware/stellar.c @@ -1349,7 +1349,7 @@ void stellar_fillSignedTx(StellarSignedTx *resp) { resp->signature.size = sizeof(signature); } -bool stellar_allOperationsConfirmed() { +bool stellar_allOperationsConfirmed(void) { return stellar_activeTx.confirmed_operations == stellar_activeTx.num_operations; } diff --git a/legacy/oled.c b/legacy/oled.c index d0dfcce5e4..7fe94d9053 100644 --- a/legacy/oled.c +++ b/legacy/oled.c @@ -177,9 +177,9 @@ void oledInit() { /* * Clears the display buffer (sets all pixels to black) */ -void oledClear() { memzero(_oledbuffer, sizeof(_oledbuffer)); } +void oledClear(void) { memzero(_oledbuffer, sizeof(_oledbuffer)); } -void oledInvertDebugLink() { +void oledInvertDebugLink(void) { #if DEBUG_LINK oledInvertPixel(OLED_WIDTH - 5, 0); oledInvertPixel(OLED_WIDTH - 4, 0); @@ -229,7 +229,7 @@ void oledRefresh() { } #endif -const uint8_t *oledGetBuffer() { return _oledbuffer; } +const uint8_t *oledGetBuffer(void) { return _oledbuffer; } void oledSetBuffer(uint8_t *buf) { memcpy(_oledbuffer, buf, sizeof(_oledbuffer)); From bfbb6f8685422bf8ceba392326d3dffe38b368d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 5 Apr 2024 15:44:05 +0200 Subject: [PATCH 047/626] chore(crypto): initialize automatic variables to zero --- crypto/Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crypto/Makefile b/crypto/Makefile index a9d1f3266a..ef1f5bac76 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -59,6 +59,10 @@ CFLAGS += $(OPTFLAGS) \ -Wno-missing-braces \ -Werror +ifneq ($(FUZZER),1) # This can be removed once the fuzzer machine uses at least clang 16 + CFLAGS += -ftrivial-auto-var-init=zero +endif + ZKP_CFLAGS = \ -DECMULT_GEN_PREC_BITS=4 \ -DECMULT_WINDOW_SIZE=8 \ From 6b81d24b5c3ed2722f2bdab2aa881c5e6d023f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Wed, 10 Apr 2024 15:11:12 +0200 Subject: [PATCH 048/626] chore(core): separate crypto sources in build scripts [no changelog] --- core/SConscript.boardloader | 8 ++++++-- core/SConscript.bootloader | 8 ++++++-- core/SConscript.bootloader_ci | 10 +++++++--- core/SConscript.bootloader_emu | 6 ++++-- core/SConscript.firmware | 12 ++++++++---- core/SConscript.prodtest | 8 ++++++-- core/SConscript.reflash | 6 ++++-- core/SConscript.unix | 12 ++++++++---- 8 files changed, 49 insertions(+), 21 deletions(-) diff --git a/core/SConscript.boardloader b/core/SConscript.boardloader index 03a7b731b1..4cf682d849 100644 --- a/core/SConscript.boardloader +++ b/core/SConscript.boardloader @@ -24,6 +24,7 @@ CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = ["BOARDLOADER"] SOURCE_MOD = [] +SOURCE_MOD_CRYPTO = [] CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] @@ -41,6 +42,9 @@ CPPDEFINES_MOD += [ 'ED25519_NO_PRECOMP', ] SOURCE_MOD += [ + 'vendor/trezor-storage/flash_area.c', +] +SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/blake2s.c', 'vendor/trezor-crypto/ed25519-donna/curve25519-donna-32bit.c', 'vendor/trezor-crypto/ed25519-donna/curve25519-donna-helpers.c', @@ -50,7 +54,6 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/ed25519-donna/modm-donna-32bit.c', 'vendor/trezor-crypto/memzero.c', 'vendor/trezor-crypto/sha2.c', - 'vendor/trezor-storage/flash_area.c', ] # modtrezorui @@ -130,7 +133,7 @@ env.Replace( ) env.Replace( - ALLSOURCES=SOURCE_MOD + SOURCE_BOARDLOADER + SOURCE_HAL, + ALLSOURCES=SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_BOARDLOADER + SOURCE_HAL, ALLDEFS=tools.get_defs_for_cmake(env['CPPDEFINES'] + env['CPPDEFINES_IMPLICIT'])) cmake_gen = env.Command( @@ -145,6 +148,7 @@ cmake_gen = env.Command( obj_program = [] obj_program += env.Object(source=SOURCE_MOD) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO) obj_program += env.Object(source=SOURCE_BOARDLOADER) obj_program += env.Object(source=SOURCE_HAL) diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 3a5ec2afe8..12baa0b6f6 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -26,6 +26,7 @@ CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = [] SOURCE_MOD = [] +SOURCE_MOD_CRYPTO = [] CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] @@ -71,6 +72,9 @@ CPPDEFINES_MOD += [ ] SOURCE_MOD += [ + 'vendor/trezor-storage/flash_area.c', +] +SOURCE_MOD_CRYPTO = [ 'vendor/trezor-crypto/blake2s.c', 'vendor/trezor-crypto/chacha_drbg.c', 'vendor/trezor-crypto/chacha20poly1305/chacha_merged.c', @@ -83,7 +87,6 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/memzero.c', 'vendor/trezor-crypto/rand.c', 'vendor/trezor-crypto/sha2.c', - 'vendor/trezor-storage/flash_area.c', ] # modtrezorui @@ -201,7 +204,7 @@ env.Replace( ) env.Replace( - ALLSOURCES=SOURCE_MOD + SOURCE_BOOTLOADER + SOURCE_NANOPB + SOURCE_HAL, + ALLSOURCES=SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_BOOTLOADER + SOURCE_NANOPB + SOURCE_HAL, ALLDEFS=tools.get_defs_for_cmake(env['CPPDEFINES'] + env['CPPDEFINES_IMPLICIT'] + [f"PRODUCTION={int(PRODUCTION)}", f"BOOTLOADER_QA={int(BOOTLOADER_QA)}"])) cmake_gen = env.Command( @@ -265,6 +268,7 @@ env.Append(LINKFLAGS=f' -l{RUST_LIB}') obj_program = [] obj_program += env.Object(source=SOURCE_MOD) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO) obj_program += env.Object(source=SOURCE_BOOTLOADER) obj_program += env.Object(source=SOURCE_NANOPB) obj_program += env.Object(source=SOURCE_HAL) diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index e5c41fd60b..861744a5a6 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -24,6 +24,7 @@ CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = [] SOURCE_MOD = [] +SOURCE_MOD_CRYPTO = [] CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] @@ -66,6 +67,9 @@ CPPDEFINES_MOD += [ 'ED25519_NO_PRECOMP', ] SOURCE_MOD += [ + 'vendor/trezor-storage/flash_area.c', +] +SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/blake2s.c', 'vendor/trezor-crypto/chacha_drbg.c', 'vendor/trezor-crypto/chacha20poly1305/chacha_merged.c', @@ -78,7 +82,6 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/memzero.c', 'vendor/trezor-crypto/rand.c', 'vendor/trezor-crypto/sha2.c', - 'vendor/trezor-storage/flash_area.c', ] # modtrezorui @@ -181,14 +184,14 @@ env.Replace( ] + CPPDEFINES_MOD + CPPDEFINES_HAL, ASFLAGS=env.get('ENV')['CPU_ASFLAGS'], ASPPFLAGS='$CFLAGS $CCFLAGS', - ALLSOURCES=SOURCE_MOD + SOURCE_BOOTLOADER + SOURCE_HAL+ SOURCE_NANOPB, ) + ALLSOURCES=SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_BOOTLOADER + SOURCE_HAL+ SOURCE_NANOPB, ) env.Replace( HEADERTOOL='tools/headertool.py', ) env.Replace( - ALLSOURCES=SOURCE_MOD + SOURCE_BOOTLOADER + SOURCE_NANOPB + SOURCE_HAL, + ALLSOURCES=SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_BOOTLOADER + SOURCE_NANOPB + SOURCE_HAL, ALLDEFS=tools.get_defs_for_cmake(env['CPPDEFINES'] + env['CPPDEFINES_IMPLICIT'])) cmake_gen = env.Command( @@ -204,6 +207,7 @@ cmake_gen = env.Command( obj_program = [] obj_program += env.Object(source=SOURCE_MOD) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO) obj_program += env.Object(source=SOURCE_BOOTLOADER) obj_program += env.Object(source=SOURCE_NANOPB) obj_program += env.Object(source=SOURCE_HAL) diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 1506c4197c..290faa2c07 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -26,6 +26,7 @@ CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = [] SOURCE_MOD = [] +SOURCE_MOD_CRYPTO = [] if TREZOR_MODEL in ('1', 'R'): FONT_NORMAL='Font_PixelOperator_Regular_8' @@ -66,7 +67,7 @@ CPPDEFINES_MOD += [ 'TREZOR_UI2', 'FANCY_FATAL_ERROR' ] -SOURCE_MOD += [ +SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/blake2s.c', 'vendor/trezor-crypto/chacha_drbg.c', 'vendor/trezor-crypto/chacha20poly1305/chacha_merged.c', @@ -254,7 +255,7 @@ except OSError: env.Replace( - ALLSOURCES=SOURCE_MOD + SOURCE_BOOTLOADER + SOURCE_NANOPB + SOURCE_TREZORHAL + SOURCE_UNIX, + ALLSOURCES=SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_BOOTLOADER + SOURCE_NANOPB + SOURCE_TREZORHAL + SOURCE_UNIX, ALLDEFS=tools.get_defs_for_cmake(env['CPPDEFINES'])) cmake_gen = env.Command( @@ -328,6 +329,7 @@ env.Append(LINKFLAGS='-lm') obj_program = [] obj_program += env.Object(source=SOURCE_MOD) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO) obj_program += env.Object(source=SOURCE_BOOTLOADER) obj_program += env.Object(source=SOURCE_NANOPB) obj_program += env.Object(source=SOURCE_TREZORHAL) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 887419c6d2..e46a296667 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -31,6 +31,7 @@ CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = [] SOURCE_MOD = [] +SOURCE_MOD_CRYPTO = [] CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] @@ -88,6 +89,8 @@ SOURCE_MOD += [ 'embed/extmod/modtrezorcrypto/crc.c', 'embed/extmod/modtrezorcrypto/modtrezorcrypto.c', 'embed/extmod/modtrezorcrypto/rand.c', +] +SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/address.c', 'vendor/trezor-crypto/aes/aes_modes.c', 'vendor/trezor-crypto/aes/aesccm.c', @@ -143,7 +146,7 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/tls_prf.c', ] if EVERYTHING: - SOURCE_MOD += [ + SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/cardano.c', 'vendor/trezor-crypto/monero/base58.c', 'vendor/trezor-crypto/monero/serialize.c', @@ -177,7 +180,7 @@ if FEATURE_FLAGS["SECP256K1_ZKP"]: 'vendor/secp256k1-zkp/src/precomputed_ecmult_gen.c', 'vendor/secp256k1-zkp/src/asm/field_10x26_arm.s' ] - SOURCE_MOD += [ + SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/zkp_context.c', 'vendor/trezor-crypto/zkp_ecdsa.c', 'vendor/trezor-crypto/zkp_bip340.c', @@ -189,7 +192,7 @@ if FEATURE_FLAGS["AES_GCM"]: 'USE_AES_GCM', 'AES_VAR', ] - SOURCE_MOD += [ + SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/aes/gf128mul.c', 'vendor/trezor-crypto/aes/aesgcm.c', ] @@ -731,9 +734,10 @@ if FROZEN: # Program objects # -source_files = SOURCE_MOD + SOURCE_FIRMWARE + SOURCE_MICROPYTHON + SOURCE_MICROPYTHON_SPEED + SOURCE_HAL +source_files = SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_FIRMWARE + SOURCE_MICROPYTHON + SOURCE_MICROPYTHON_SPEED + SOURCE_HAL obj_program = [] obj_program.extend(env.Object(source=SOURCE_MOD)) +obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO)) if FEATURE_FLAGS["SECP256K1_ZKP"]: obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function')) source_files.extend(SOURCE_MOD_SECP256K1_ZKP) diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 481a1a48ef..476ff7b5b4 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -28,6 +28,7 @@ CPPDEFINES_MOD = [ 'USE_INSECURE_PRNG', ] SOURCE_MOD = [] +SOURCE_MOD_CRYPTO = [] CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] @@ -55,6 +56,9 @@ CPPPATH_MOD += [ 'vendor/trezor-storage', ] SOURCE_MOD += [ + 'vendor/trezor-storage/flash_area.c', +] +SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/aes/aes_modes.c', 'vendor/trezor-crypto/aes/aesccm.c', 'vendor/trezor-crypto/aes/aescrypt.c', @@ -75,7 +79,6 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/secp256k1.c', 'vendor/trezor-crypto/sha2.c', 'vendor/trezor-crypto/tls_prf.c', - 'vendor/trezor-storage/flash_area.c', ] # modtrezorui @@ -180,7 +183,7 @@ env.Replace( env.Replace( - ALLSOURCES=SOURCE_MOD + SOURCE_PRODTEST + SOURCE_HAL, + ALLSOURCES=SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_PRODTEST + SOURCE_HAL, ALLDEFS=tools.get_defs_for_cmake(env['CPPDEFINES'] + env['CPPDEFINES_IMPLICIT'])) cmake_gen = env.Command( @@ -196,6 +199,7 @@ cmake_gen = env.Command( obj_program = [] obj_program.extend(env.Object(source=SOURCE_MOD)) +obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO)) obj_program.extend(env.Object(source=SOURCE_PRODTEST)) obj_program.extend(env.Object(source=SOURCE_HAL)) diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 7259a28653..657c9581fe 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -23,6 +23,7 @@ CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = [] SOURCE_MOD = [] +SOURCE_MOD_CRYPTO = [] CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] @@ -49,7 +50,7 @@ CPPPATH_MOD += [ 'vendor/trezor-crypto', 'vendor/trezor-storage', ] -SOURCE_MOD += [ +SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/memzero.c', ] @@ -146,7 +147,7 @@ env.Replace( ) env.Replace( - ALLSOURCES=SOURCE_MOD + SOURCE_REFLASH + SOURCE_HAL, + ALLSOURCES=SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_REFLASH + SOURCE_HAL, ALLDEFS=tools.get_defs_for_cmake(env['CPPDEFINES'] + env['CPPDEFINES_IMPLICIT'])) cmake_gen = env.Command( @@ -161,6 +162,7 @@ cmake_gen = env.Command( obj_program = [] obj_program += env.Object(source=SOURCE_MOD) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO) obj_program += env.Object(source=SOURCE_REFLASH) obj_program += env.Object(source=SOURCE_HAL) diff --git a/core/SConscript.unix b/core/SConscript.unix index 5ef09e5142..ec93317266 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -34,6 +34,7 @@ CPPDEFINES_MOD = [] SOURCE_MOD = [ 'vendor/micropython/extmod/vfs_posix_file.c', ] +SOURCE_MOD_CRYPTO = [] PYOPT = ARGUMENTS.get('PYOPT', '1') FROZEN = ARGUMENTS.get('TREZOR_EMULATOR_FROZEN', 0) @@ -90,6 +91,8 @@ SOURCE_MOD += [ 'embed/extmod/trezorobj.c', 'embed/extmod/modtrezorcrypto/crc.c', 'embed/extmod/modtrezorcrypto/modtrezorcrypto.c', +] +SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/address.c', 'vendor/trezor-crypto/aes/aes_modes.c', 'vendor/trezor-crypto/aes/aescrypt.c', @@ -143,7 +146,7 @@ SOURCE_MOD += [ 'vendor/trezor-crypto/slip39_english.c', ] if EVERYTHING: - SOURCE_MOD += [ + SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/cardano.c', 'vendor/trezor-crypto/monero/base58.c', 'vendor/trezor-crypto/monero/serialize.c', @@ -174,7 +177,7 @@ if FEATURE_FLAGS["SECP256K1_ZKP"]: 'vendor/secp256k1-zkp/src/precomputed_ecmult.c', 'vendor/secp256k1-zkp/src/precomputed_ecmult_gen.c', ] - SOURCE_MOD += [ + SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/zkp_context.c', 'vendor/trezor-crypto/zkp_ecdsa.c', 'vendor/trezor-crypto/zkp_bip340.c', @@ -186,7 +189,7 @@ if FEATURE_FLAGS["AES_GCM"]: 'USE_AES_GCM', 'AES_VAR', ] - SOURCE_MOD += [ + SOURCE_MOD_CRYPTO += [ 'vendor/trezor-crypto/aes/gf128mul.c', 'vendor/trezor-crypto/aes/aesgcm.c', ] @@ -819,8 +822,9 @@ if FROZEN: # obj_program = [] -source_files = SOURCE_MOD + SOURCE_MICROPYTHON + SOURCE_UNIX +source_files = SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_MICROPYTHON + SOURCE_UNIX obj_program.extend(env.Object(source=SOURCE_MOD)) +obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO)) if FEATURE_FLAGS["SECP256K1_ZKP"]: obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function')) source_files.extend(SOURCE_MOD_SECP256K1_ZKP) From 756d2500156974e1d332d27a56926e84aa7aa831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Mon, 15 Apr 2024 17:55:24 +0200 Subject: [PATCH 049/626] chore(core): initialize automatic variables to zero [no changelog] --- core/SConscript.boardloader | 2 +- core/SConscript.bootloader | 2 +- core/SConscript.bootloader_ci | 2 +- core/SConscript.bootloader_emu | 2 +- core/SConscript.firmware | 2 +- core/SConscript.prodtest | 2 +- core/SConscript.reflash | 2 +- core/SConscript.unix | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/SConscript.boardloader b/core/SConscript.boardloader index 4cf682d849..eafb66910a 100644 --- a/core/SConscript.boardloader +++ b/core/SConscript.boardloader @@ -148,7 +148,7 @@ cmake_gen = env.Command( obj_program = [] obj_program += env.Object(source=SOURCE_MOD) -obj_program += env.Object(source=SOURCE_MOD_CRYPTO) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero') obj_program += env.Object(source=SOURCE_BOARDLOADER) obj_program += env.Object(source=SOURCE_HAL) diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 12baa0b6f6..567424b8b2 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -268,7 +268,7 @@ env.Append(LINKFLAGS=f' -l{RUST_LIB}') obj_program = [] obj_program += env.Object(source=SOURCE_MOD) -obj_program += env.Object(source=SOURCE_MOD_CRYPTO) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero') obj_program += env.Object(source=SOURCE_BOOTLOADER) obj_program += env.Object(source=SOURCE_NANOPB) obj_program += env.Object(source=SOURCE_HAL) diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 861744a5a6..e042a0a1eb 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -207,7 +207,7 @@ cmake_gen = env.Command( obj_program = [] obj_program += env.Object(source=SOURCE_MOD) -obj_program += env.Object(source=SOURCE_MOD_CRYPTO) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero') obj_program += env.Object(source=SOURCE_BOOTLOADER) obj_program += env.Object(source=SOURCE_NANOPB) obj_program += env.Object(source=SOURCE_HAL) diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 290faa2c07..d915d5df28 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -329,7 +329,7 @@ env.Append(LINKFLAGS='-lm') obj_program = [] obj_program += env.Object(source=SOURCE_MOD) -obj_program += env.Object(source=SOURCE_MOD_CRYPTO) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero') obj_program += env.Object(source=SOURCE_BOOTLOADER) obj_program += env.Object(source=SOURCE_NANOPB) obj_program += env.Object(source=SOURCE_TREZORHAL) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index e46a296667..196b0c2c02 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -737,7 +737,7 @@ if FROZEN: source_files = SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_FIRMWARE + SOURCE_MICROPYTHON + SOURCE_MICROPYTHON_SPEED + SOURCE_HAL obj_program = [] obj_program.extend(env.Object(source=SOURCE_MOD)) -obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO)) +obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero')) if FEATURE_FLAGS["SECP256K1_ZKP"]: obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function')) source_files.extend(SOURCE_MOD_SECP256K1_ZKP) diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 476ff7b5b4..5ca7c58fca 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -199,7 +199,7 @@ cmake_gen = env.Command( obj_program = [] obj_program.extend(env.Object(source=SOURCE_MOD)) -obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO)) +obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero')) obj_program.extend(env.Object(source=SOURCE_PRODTEST)) obj_program.extend(env.Object(source=SOURCE_HAL)) diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 657c9581fe..6dfdef1d7a 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -162,7 +162,7 @@ cmake_gen = env.Command( obj_program = [] obj_program += env.Object(source=SOURCE_MOD) -obj_program += env.Object(source=SOURCE_MOD_CRYPTO) +obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero') obj_program += env.Object(source=SOURCE_REFLASH) obj_program += env.Object(source=SOURCE_HAL) diff --git a/core/SConscript.unix b/core/SConscript.unix index ec93317266..9c69edc877 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -824,7 +824,7 @@ if FROZEN: obj_program = [] source_files = SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_MICROPYTHON + SOURCE_UNIX obj_program.extend(env.Object(source=SOURCE_MOD)) -obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO)) +obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero')) if FEATURE_FLAGS["SECP256K1_ZKP"]: obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function')) source_files.extend(SOURCE_MOD_SECP256K1_ZKP) From 82e62cf41c1e0134d2d2ed824c3ad74ead01f10e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Mon, 15 Apr 2024 18:15:28 +0200 Subject: [PATCH 050/626] chore(legacy): initialize automatic variables to zero [no changelog] --- legacy/Makefile.include | 2 ++ 1 file changed, 2 insertions(+) diff --git a/legacy/Makefile.include b/legacy/Makefile.include index d4a340483d..c98ec6b28e 100644 --- a/legacy/Makefile.include +++ b/legacy/Makefile.include @@ -189,6 +189,8 @@ else CFLAGS += -DDEBUG_T1_SIGNATURES=0 endif +../vendor/trezor-crypto/%.o: CFLAGS += -ftrivial-auto-var-init=zero + all: $(NAME).bin openocd: From 3d74e30fa7f27695813040baffb620461d5e0677 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Wed, 8 May 2024 12:43:07 +0200 Subject: [PATCH 051/626] chore(core): rename Shamir to Multi-share [no changelog] --- core/embed/rust/librust_qstr.h | 4 +- .../generated/translated_string.rs | 20 +- core/mocks/trezortranslate_keys.pyi | 7 +- .../apps/management/recovery_device/layout.py | 2 +- .../apps/management/reset_device/__init__.py | 8 +- core/tools/translations/rules.json | 3 +- core/translations/cs.json | 3 +- core/translations/de.json | 3 +- core/translations/en.json | 7 +- core/translations/es.json | 3 +- core/translations/fr.json | 3 +- core/translations/order.json | 4 +- core/translations/signatures.json | 6 +- tests/click_tests/reset.py | 5 +- tests/input_flows_helpers.py | 4 +- tests/ui_tests/fixtures.json | 518 +++++++++--------- 16 files changed, 294 insertions(+), 306 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 0512b15891..86007084a7 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -361,7 +361,7 @@ static void _librust_qstrs(void) { MP_QSTR_recovery__progress_will_be_lost; MP_QSTR_recovery__select_num_of_words; MP_QSTR_recovery__share_already_entered; - MP_QSTR_recovery__share_from_another_shamir; + MP_QSTR_recovery__share_from_another_multi_share_backup; MP_QSTR_recovery__share_num_template; MP_QSTR_recovery__title; MP_QSTR_recovery__title_cancel_dry_run; @@ -397,7 +397,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__check_wallet_backup_title; MP_QSTR_reset__continue_with_next_share; MP_QSTR_reset__continue_with_share_template; - MP_QSTR_reset__create_x_of_y_shamir_backup_template; + MP_QSTR_reset__create_x_of_y_multi_share_backup_template; MP_QSTR_reset__finished_verifying_group_template; MP_QSTR_reset__finished_verifying_shares; MP_QSTR_reset__finished_verifying_wallet_backup; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 1fdfb22e1b..1e8b72e94e 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -801,7 +801,7 @@ pub enum TranslatedString { recovery__progress_will_be_lost = 513, // "All progress will be lost." recovery__select_num_of_words = 514, // "Select the number of words in your backup." recovery__share_already_entered = 515, // "Share already entered" - recovery__share_from_another_shamir = 516, // "You have entered a share from another Shamir Backup." + recovery__share_from_another_multi_share_backup = 516, // "You have entered a share from another multi-share backup." recovery__share_num_template = 517, // "Share {0}" recovery__title = 518, // "Recover wallet" recovery__title_cancel_dry_run = 519, // "Cancel backup check" @@ -874,7 +874,7 @@ pub enum TranslatedString { reset__threshold_info = 586, // "= minimum number of unique word lists used for recovery." reset__title_backup_is_done = 587, // "Backup is done" reset__title_create_wallet = 588, // "Create wallet" - reset__title_create_wallet_shamir = 589, // "Create wallet (shamir)" + reset__title_create_wallet_shamir = 589, // "\"\"" reset__title_group_threshold = 590, // "Group threshold" reset__title_number_of_groups = 591, // "Number of groups" reset__title_number_of_shares = 592, // "Number of shares" @@ -1237,8 +1237,8 @@ pub enum TranslatedString { storage_msg__starting = 842, // "Starting up" storage_msg__verifying_pin = 843, // "Verifying PIN" storage_msg__wrong_pin = 844, // "Wrong PIN" - reset__create_x_of_y_shamir_backup_template = 845, // "Do you want to create a {0} of {1} Shamir backup?" - reset__title_shamir_backup = 846, // "Shamir backup" + reset__create_x_of_y_multi_share_backup_template = 845, // "Do you want to create a {0} of {1} multi-share backup?" + reset__title_shamir_backup = 846, // "Multi-share backup" } impl TranslatedString { @@ -2035,7 +2035,7 @@ impl TranslatedString { Self::recovery__progress_will_be_lost => "All progress will be lost.", Self::recovery__select_num_of_words => "Select the number of words in your backup.", Self::recovery__share_already_entered => "Share already entered", - Self::recovery__share_from_another_shamir => "You have entered a share from another Shamir Backup.", + Self::recovery__share_from_another_multi_share_backup => "You have entered a share from another multi-share backup.", Self::recovery__share_num_template => "Share {0}", Self::recovery__title => "Recover wallet", Self::recovery__title_cancel_dry_run => "Cancel backup check", @@ -2108,7 +2108,7 @@ impl TranslatedString { Self::reset__threshold_info => "= minimum number of unique word lists used for recovery.", Self::reset__title_backup_is_done => "Backup is done", Self::reset__title_create_wallet => "Create wallet", - Self::reset__title_create_wallet_shamir => "Create wallet (shamir)", + Self::reset__title_create_wallet_shamir => "\"\"", Self::reset__title_group_threshold => "Group threshold", Self::reset__title_number_of_groups => "Number of groups", Self::reset__title_number_of_shares => "Number of shares", @@ -2471,8 +2471,8 @@ impl TranslatedString { Self::storage_msg__starting => "Starting up", Self::storage_msg__verifying_pin => "Verifying PIN", Self::storage_msg__wrong_pin => "Wrong PIN", - Self::reset__create_x_of_y_shamir_backup_template => "Do you want to create a {0} of {1} Shamir backup?", - Self::reset__title_shamir_backup => "Shamir backup", + Self::reset__create_x_of_y_multi_share_backup_template => "Do you want to create a {0} of {1} multi-share backup?", + Self::reset__title_shamir_backup => "Multi-share backup", } } @@ -3270,7 +3270,7 @@ impl TranslatedString { Qstr::MP_QSTR_recovery__progress_will_be_lost => Some(Self::recovery__progress_will_be_lost), Qstr::MP_QSTR_recovery__select_num_of_words => Some(Self::recovery__select_num_of_words), Qstr::MP_QSTR_recovery__share_already_entered => Some(Self::recovery__share_already_entered), - Qstr::MP_QSTR_recovery__share_from_another_shamir => Some(Self::recovery__share_from_another_shamir), + Qstr::MP_QSTR_recovery__share_from_another_multi_share_backup => Some(Self::recovery__share_from_another_multi_share_backup), Qstr::MP_QSTR_recovery__share_num_template => Some(Self::recovery__share_num_template), Qstr::MP_QSTR_recovery__title => Some(Self::recovery__title), Qstr::MP_QSTR_recovery__title_cancel_dry_run => Some(Self::recovery__title_cancel_dry_run), @@ -3706,7 +3706,7 @@ impl TranslatedString { Qstr::MP_QSTR_storage_msg__starting => Some(Self::storage_msg__starting), Qstr::MP_QSTR_storage_msg__verifying_pin => Some(Self::storage_msg__verifying_pin), Qstr::MP_QSTR_storage_msg__wrong_pin => Some(Self::storage_msg__wrong_pin), - Qstr::MP_QSTR_reset__create_x_of_y_shamir_backup_template => Some(Self::reset__create_x_of_y_shamir_backup_template), + Qstr::MP_QSTR_reset__create_x_of_y_multi_share_backup_template => Some(Self::reset__create_x_of_y_multi_share_backup_template), Qstr::MP_QSTR_reset__title_shamir_backup => Some(Self::reset__title_shamir_backup), _ => None, } diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 6cfddf997b..eb15d7d813 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -527,7 +527,7 @@ class TR: recovery__progress_will_be_lost: str = "All progress will be lost." recovery__select_num_of_words: str = "Select the number of words in your backup." recovery__share_already_entered: str = "Share already entered" - recovery__share_from_another_shamir: str = "You have entered a share from another Shamir Backup." + recovery__share_from_another_multi_share_backup: str = "You have entered a share from another multi-share backup." recovery__share_num_template: str = "Share {0}" recovery__title: str = "Recover wallet" recovery__title_cancel_dry_run: str = "Cancel backup check" @@ -557,7 +557,7 @@ class TR: reset__check_wallet_backup_title: str = "Check wallet backup" reset__continue_with_next_share: str = "Continue with the next share." reset__continue_with_share_template: str = "Continue with share #{0}." - reset__create_x_of_y_shamir_backup_template: str = "Do you want to create a {0} of {1} Shamir backup?" + reset__create_x_of_y_multi_share_backup_template: str = "Do you want to create a {0} of {1} multi-share backup?" reset__finished_verifying_group_template: str = "You have finished verifying your recovery shares for group {0}." reset__finished_verifying_shares: str = "You have finished verifying your recovery shares." reset__finished_verifying_wallet_backup: str = "You have finished verifying your wallet backup." @@ -601,7 +601,6 @@ class TR: reset__threshold_info: str = "= minimum number of unique word lists used for recovery." reset__title_backup_is_done: str = "Backup is done" reset__title_create_wallet: str = "Create wallet" - reset__title_create_wallet_shamir: str = "Create wallet (shamir)" reset__title_group_threshold: str = "Group threshold" reset__title_number_of_groups: str = "Number of groups" reset__title_number_of_shares: str = "Number of shares" @@ -609,7 +608,7 @@ class TR: reset__title_set_number_of_groups: str = "Set number of groups" reset__title_set_number_of_shares: str = "Set number of shares" reset__title_set_threshold: str = "Set threshold" - reset__title_shamir_backup: str = "Shamir backup" + reset__title_shamir_backup: str = "Multi-share backup" reset__to_form_group_template: str = "to form Group {0}." reset__tos_link: str = "trezor.io/tos" reset__total_number_of_shares_in_group_template: str = "Set the total number of shares in Group {0}." diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index f2f11c5077..3bdf544200 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -91,7 +91,7 @@ async def request_mnemonic( # show_identifier_mismatch await show_recovery_warning( "warning_mismatched_share", - TR.recovery__share_from_another_shamir, + TR.recovery__share_from_another_multi_share_backup, ) return None except word_validity.ThresholdReached: diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index f66f7675cf..49f9fcfdfd 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -39,11 +39,7 @@ async def reset_device(msg: ResetDevice) -> Success: _validate_reset_device(msg) # make sure user knows they're setting up a new wallet - if backup_type in (BAK_T_SLIP39_BASIC, BAK_T_SLIP39_ADVANCED): - title = TR.reset__title_create_wallet_shamir - else: - title = TR.reset__title_create_wallet - await confirm_reset_device(title) + await confirm_reset_device(TR.reset__title_create_wallet) # Rendering empty loader so users do not feel a freezing screen render_empty_loader(config.StorageMessage.PROCESSING_MSG) @@ -170,7 +166,7 @@ async def backup_slip39_custom( await confirm_action( "warning_shamir_backup", TR.reset__title_shamir_backup, - description=TR.reset__create_x_of_y_shamir_backup_template.format( + description=TR.reset__create_x_of_y_multi_share_backup_template.format( groups[0][0], groups[0][1] ), verb=TR.buttons__continue, diff --git a/core/tools/translations/rules.json b/core/tools/translations/rules.json index 5f9511ef7e..5893eebdaa 100644 --- a/core/tools/translations/rules.json +++ b/core/tools/translations/rules.json @@ -518,7 +518,7 @@ "recovery__progress_will_be_lost": "text,2", "recovery__select_num_of_words": "text,3", "recovery__share_already_entered": "text,2", - "recovery__share_from_another_shamir": "text,3", + "recovery__share_from_another_multi_share_backup": "text,3", "recovery__share_num_template": "text,1", "recovery__title": "title,1", "recovery__title_cancel_dry_run": "title,1", @@ -591,7 +591,6 @@ "reset__threshold_info": "text,3", "reset__title_backup_is_done": "title,1", "reset__title_create_wallet": "title,1", - "reset__title_create_wallet_shamir": "title,2", "reset__title_group_threshold": "title,1", "reset__title_number_of_groups": "title,1", "reset__title_number_of_shares": "title,1", diff --git a/core/translations/cs.json b/core/translations/cs.json index ac85585688..f8a45debd8 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -558,7 +558,7 @@ "recovery__progress_will_be_lost": "Veškerý postup bude ztracen.", "recovery__select_num_of_words": "Vyberte počet slov v záloze.", "recovery__share_already_entered": "Část jste již zadali", - "recovery__share_from_another_shamir": "Zadali jste část z jiné zálohy Shamir.", + "recovery__share_from_another_multi_share_backup": "Zadali jste část z jiné zálohy Shamir.", "recovery__share_num_template": "Část {0}", "recovery__title": "Obnovit peněženku", "recovery__title_cancel_dry_run": "Zruš. kontr. zálohy", @@ -631,7 +631,6 @@ "reset__threshold_info": "= minimální počet seznamů jedinečných slov u obnovy.", "reset__title_backup_is_done": "Záloha je dokončena", "reset__title_create_wallet": "Vytv. peněženku", - "reset__title_create_wallet_shamir": "Vytvořit peněženku (shamir)", "reset__title_group_threshold": "Počet obn. skupiny", "reset__title_number_of_groups": "Počet skupin", "reset__title_number_of_shares": "Počet částí", diff --git a/core/translations/de.json b/core/translations/de.json index 93be067922..0a5f593b83 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -558,7 +558,7 @@ "recovery__progress_will_be_lost": "Alle Fortschritte gehen verloren.", "recovery__select_num_of_words": "Wörteranzahl in deinem Backup auswählen.", "recovery__share_already_entered": "Share wurde bereits eingegeben", - "recovery__share_from_another_shamir": "Share eines anderen Shamir-Backups eingegeben.", + "recovery__share_from_another_multi_share_backup": "Share eines anderen Shamir-Backups eingegeben.", "recovery__share_num_template": "Share {0}", "recovery__title": "Wallet wiederherst.", "recovery__title_cancel_dry_run": "Backup-check abbr.", @@ -631,7 +631,6 @@ "reset__threshold_info": "= Mindestanzahl eindeutiger Wortlisten für Wiederherstellung.", "reset__title_backup_is_done": "Backup fertig", "reset__title_create_wallet": "Wallet erstellen", - "reset__title_create_wallet_shamir": "Wallet erstellen (shamir)", "reset__title_group_threshold": "Gruppenschwelle", "reset__title_number_of_groups": "Anzahl der gruppen", "reset__title_number_of_shares": "Anzahl shares", diff --git a/core/translations/en.json b/core/translations/en.json index b010dc31d6..51fae0ca8e 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -529,7 +529,7 @@ "recovery__progress_will_be_lost": "All progress will be lost.", "recovery__select_num_of_words": "Select the number of words in your backup.", "recovery__share_already_entered": "Share already entered", - "recovery__share_from_another_shamir": "You have entered a share from another Shamir Backup.", + "recovery__share_from_another_multi_share_backup": "You have entered a share from another multi-share backup.", "recovery__share_num_template": "Share {0}", "recovery__title": "Recover wallet", "recovery__title_cancel_dry_run": "Cancel backup check", @@ -559,7 +559,7 @@ "reset__check_share_title_template": "Check share #{0}", "reset__continue_with_next_share": "Continue with the next share.", "reset__continue_with_share_template": "Continue with share #{0}.", - "reset__create_x_of_y_shamir_backup_template": "Do you want to create a {0} of {1} Shamir backup?", + "reset__create_x_of_y_multi_share_backup_template": "Do you want to create a {0} of {1} multi-share backup?", "reset__finished_verifying_group_template": "You have finished verifying your recovery shares for group {0}.", "reset__finished_verifying_wallet_backup": "You have finished verifying your wallet backup.", "reset__finished_verifying_shares": "You have finished verifying your recovery shares.", @@ -603,7 +603,6 @@ "reset__threshold_info": "= minimum number of unique word lists used for recovery.", "reset__title_backup_is_done": "Backup is done", "reset__title_create_wallet": "Create wallet", - "reset__title_create_wallet_shamir": "Create wallet (shamir)", "reset__title_group_threshold": "Group threshold", "reset__title_number_of_groups": "Number of groups", "reset__title_number_of_shares": "Number of shares", @@ -611,7 +610,7 @@ "reset__title_set_number_of_groups": "Set number of groups", "reset__title_set_number_of_shares": "Set number of shares", "reset__title_set_threshold": "Set threshold", - "reset__title_shamir_backup": "Shamir backup", + "reset__title_shamir_backup": "Multi-share backup", "reset__to_form_group_template": "to form Group {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Set the total number of shares in Group {0}.", diff --git a/core/translations/es.json b/core/translations/es.json index b8f366d71a..c5b3d90ace 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -558,7 +558,7 @@ "recovery__progress_will_be_lost": "Se perderá todo el progreso.", "recovery__select_num_of_words": "Elige el nro.de p. de la copia seg.", "recovery__share_already_entered": "Ya se ha introducido el recurso compartido", - "recovery__share_from_another_shamir": "El rec. comp. es de otra copia de seguridad de Shamir.", + "recovery__share_from_another_multi_share_backup": "El rec. comp. es de otra copia de seguridad de Shamir.", "recovery__share_num_template": "Recurso compartido {0}", "recovery__title": "Recuperar monedero", "recovery__title_cancel_dry_run": "Anular rev. c. seg.", @@ -631,7 +631,6 @@ "reset__threshold_info": "= mínimo de listas de palabras únicas para la recuperación.", "reset__title_backup_is_done": "C. seg. completa", "reset__title_create_wallet": "Crear monedero", - "reset__title_create_wallet_shamir": "Crear monedero (shamir)", "reset__title_group_threshold": "Umbral grupos", "reset__title_number_of_groups": "Nro.grupos", "reset__title_number_of_shares": "Nro.rec. comp.", diff --git a/core/translations/fr.json b/core/translations/fr.json index 81ae0513f2..32d20d0fbf 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -558,7 +558,7 @@ "recovery__progress_will_be_lost": "Toute progression sera perdue.", "recovery__select_num_of_words": "Sélect. le nbre de mots dans votre sauv.", "recovery__share_already_entered": "Fragment déjà saisi", - "recovery__share_from_another_shamir": "Vous avez saisi un fragm. d'une autre sauv. Shamir.", + "recovery__share_from_another_multi_share_backup": "Vous avez saisi un fragm. d'une autre sauv. Shamir.", "recovery__share_num_template": "Fragment {0}", "recovery__title": "Récup. portef.", "recovery__title_cancel_dry_run": "Annuler vér. sauv.", @@ -631,7 +631,6 @@ "reset__threshold_info": "= nbre min de listes de mots uniques utilisées pour la récup.", "reset__title_backup_is_done": "Sauv. terminée", "reset__title_create_wallet": "Créer portef.", - "reset__title_create_wallet_shamir": "Créer port. (shamir)", "reset__title_group_threshold": "Seuil du groupe", "reset__title_number_of_groups": "Nbre de groupes", "reset__title_number_of_shares": "Nbre fragm.", diff --git a/core/translations/order.json b/core/translations/order.json index 39d74465d7..0b19414927 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -515,7 +515,7 @@ "513": "recovery__progress_will_be_lost", "514": "recovery__select_num_of_words", "515": "recovery__share_already_entered", - "516": "recovery__share_from_another_shamir", + "516": "recovery__share_from_another_multi_share_backup", "517": "recovery__share_num_template", "518": "recovery__title", "519": "recovery__title_cancel_dry_run", @@ -844,6 +844,6 @@ "842": "storage_msg__starting", "843": "storage_msg__verifying_pin", "844": "storage_msg__wrong_pin", - "845": "reset__create_x_of_y_shamir_backup_template", + "845": "reset__create_x_of_y_multi_share_backup_template", "846": "reset__title_shamir_backup" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 83ce720dcb..a8856a3dbb 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "7f6adc6048cb1450b2eb0cba49f4762a8cb1085773dbe8d33edd43243a3e31e9", - "datetime": "2024-05-09T14:36:52.807566", - "commit": "5580746b680d08cff6b1c6073bbcaec611790a12" + "merkle_root": "84629035a4b41f95a6d058c3a4a67220ff3ed4aea61bb72bd0c266b51708bd09", + "datetime": "2024-05-13T15:44:26.979619", + "commit": "82e62cf41c1e0134d2d2ed824c3ad74ead01f10e" }, "history": [ { diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index 3650b88091..952cda4780 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -13,10 +13,7 @@ def confirm_new_wallet(debug: "DebugLink") -> None: - TR.assert_equals_multiple( - debug.read_layout().title(), - ["reset__title_create_wallet", "reset__title_create_wallet_shamir"], - ) + TR.assert_equals(debug.read_layout().title(), "reset__title_create_wallet") if debug.model in (models.T2T1, models.T3T1): debug.click(buttons.OK, wait=True) elif debug.model in (models.T2B1,): diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 615c2bc188..3f12044979 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -161,7 +161,9 @@ def warning_share_already_entered(self) -> BRGeneratorType: def warning_share_from_another_shamir(self) -> BRGeneratorType: br = yield assert br.code == B.Warning - TR.assert_in(self._text_content(), "recovery__share_from_another_shamir") + TR.assert_in( + self._text_content(), "recovery__share_from_another_multi_share_backup" + ) self.debug.press_yes() def success_share_group_entered(self) -> BRGeneratorType: diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 0fd875cf04..b169beb839 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -745,9 +745,9 @@ "T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "c272f39acc61f4b107c4f22ced26a358a1ab1a8fe84ddbe5d5eb55d21846a32e", "T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "cf159a4d1b3eefa80fe2d3034db7e136c757de4eb8c3ac087e63114f6ad1c551", "T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "39e858a1d9879f999b19d9555fb57efcab53fea56b9f161c94e5f38f13f3d658", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "345bafe370a25611720526b11748922f500b44015c2e536cd303cb99db5c93e0", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "63e3d4a4cda66453918f049c5e2b57036305d99ee8d71eeb2aa1c5b4d1f9b51b", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "93b510fc5acd81c3447ab64e3197ce87f04f5107d531f2ac74335e882fda1a5b", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "588a2ab40c7ef589137a9139c8152a08687196c8fe8029b0aaf8f1cbfabb4fcb", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ef0198542294db61369de3ffbaeebd5159f1a78a40071e35d00bf951c340f3c0", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1359808af337de40b5f0e1ca0673f06e8d62d15c8117ddafe3647c9aa5d60080", "T2B1_cs_test_lock.py::test_hold_to_lock": "c0fa643e8fec7a18e7046e06b605e1eb1fc4673983c33b966858e7a061c08581", "T2B1_cs_test_passphrase_tr.py::test_cancel": "3f02823f2de1e46c30dadc9aef8d1c1fe2cdd2ecff0d1ec9aeb770793ff482f2", "T2B1_cs_test_passphrase_tr.py::test_passphrase_delete": "1e464363ef619f450d2c0c9f82d5336e666ee3ded7107ce1079267dd75a3cdb3", @@ -775,10 +775,10 @@ "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "48dde6e5b926c445947b344bef1fff91f4016f4033a5b5693837d8e5757cd1a1", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "78a2ce9924b7758a97853d1ab27bbbc2f8be1dfe9f2d14014de803aa0bb62d30", "T2B1_cs_test_reset_bip39.py::test_reset_bip39": "e6ab28c1220196c73e1b73d59545788da3b71deea10189e31b3e2359d22017d5", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ae7dca17aeefc938f5708d52353700c8093d537ec48079cc5760d60843cbdd50", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e3b2caf67de2b6b2ca224bb035de5439755c2d1c9509688cf2b74d04aab7976c", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5fee5b1467c2767b67ae8ea04d6607feb14ba8297ae0e7ddb8597df53ae27c1e", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a2d580d775edd706449746d860e3e957611dcce9042a554be0804f7e699eade1", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b9b62889effd0ffcca628464ace1f1bfb6d3a678f8d52b63b83332723bb9c03e", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1600d3627999ce31b467f4e9d9606a8836b40d81d5db8e975f7d6c3fcecec476", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "af6e7d3bb98a37bcb3fc0b0ff4f3b628ed257a3942f22d29426d4de228633150", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d14054b3bf4d24a8c0c9b93ca0503fdd0d497646c9191780f7b922bf4b06506a", "T2B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", "T2B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", "T2B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", @@ -791,8 +791,8 @@ "T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "c48381a4420c0a6c9892ed24a4c2863dc2ef6492422335af7c1fc15957f15893", "T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "2614cc40069651512c393206d3a7302eba83f52d47b0d4b38688952fe09c46d5", "T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b84cd72caae6b987a808510a5b036923ba2720f39aa0547d821f81c53b5aa8d8", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a6ac5f2c8a35900e068ad74e557a673b4354e1646a4e8fd6a9ab74f51aab139b", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2e9ff995c605e7cce2c6ebeffdf12944bbb0522d34bf0fbbcf43461c5838ac7b", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7f047ea9bcb24cc1d5b617453e960b5a8c4f5fd3ddc928f7306d511788d3875d", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "4388de3ef38492bd8adf4c835bad2e328dca6b21ccf7b5fb111b98ff2bea1949", "T2B1_de_test_lock.py::test_hold_to_lock": "fcc639edde3349bb64883e5119289d94ff26c0225b84c987fe3afa4c9ff49380", "T2B1_de_test_passphrase_tr.py::test_cancel": "260dfca06b933d88120da15c6a981c9e2bf136a1bb148cbaf0244a85c80c6767", "T2B1_de_test_passphrase_tr.py::test_passphrase_delete": "18f04b5c66ea5d1ede7e616f03e1a937dc57a0a2bc55bdf8c9d1aa917194e6ed", @@ -835,9 +835,9 @@ "T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f35d159c13b36c428e68969bbeb87fb4bdbfa6c21eb98985b5832849938d6934", "T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "df7a17ab9cd2c617ce22a615e1da9bedee41f978459cbe103f2eecb8dfe8db12", "T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "53b39b3ff0548a91e87ac3391462850e4f6060fa1a19ae873eca6fc5cce8dbb2", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9e620acfff4ef1442996b81c1fd9c73d20490c2deecc6bc05aa0b665d9cd217c", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "aa0d1382ef0f2e16e24d0afbd25a105f572cd4f17d91dd44ca6a3f46a60bf6c4", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "5586a21ef466d85077021c289690f22afe787445523b29900f49ec03468598d8", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8d5199ed1e2b0f03c37e3ddd1ee0388d772737c2f426dcb8e9e70647228ee132", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "0febcfe0ea43da4855ca6b78b701b48ed8ac301777984cf2e798abdacbddc46b", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9b36b1f4de0d891a88530997d28de77936545e30269e4e26fb2ade405538ff8f", "T2B1_en_test_lock.py::test_hold_to_lock": "83e2d055215b03150069d9fcb3aee6dc3f78a0d2bc43d8133425bf6b000c191d", "T2B1_en_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", "T2B1_en_test_passphrase_tr.py::test_passphrase_delete": "28468562292a54f2d8cc954129c6b1859c267bc5a9b94f9b406352e71a4c8036", @@ -865,10 +865,10 @@ "T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "6689558320ffceecb9c8a5eccaf1f83ab1e63f01d3387a580ec2c412f047286e", "T2B1_en_test_recovery.py::test_recovery_slip39_basic": "5f3c58aea5c8ad3c1c32c2fe303a0aa91b0805cce5d4dcd23473f72120109458", "T2B1_en_test_reset_bip39.py::test_reset_bip39": "818f7de91f7d73b4e287c9f6bd205c95c3b568d0a269e1084ec976a1885d7037", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "38ba7436ccf4d969f4821d9ff0f65646478376e254d4eda80cbce4034fc5a4e4", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a96bd0f6bbf9bcf8f20f7832f0c99c3631d6d2f6bb50d26ea3a681c44973b875", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f873d72ecc201e998274001516f6da8ec28e5d39fd0a0e6fb86a365be1b19fd2", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "cfaff71fd9595c4600b8c8ced20775ecf2dadb2785fcb9774eb9402f35e7d28a", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4e761e2dda932f2c51a40243f458791399ec8b94978e5ae73e809a35d39a8b8a", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "765a641e087cc3327262dfdbd09f82957e83470bb37b97950398ef5267f8c1af", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7d07f9313dc14e5f6111eefb1c9f93a17f2a048f81e3c883a68d1495e8a7b8bd", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "45293b3bef2d475cc85b6da0ac59ebda350efe63257524015b99174f0b6cc546", "T2B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", "T2B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", "T2B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", @@ -880,9 +880,9 @@ "T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "1f1b83d430f4662b25854c6d0135375c8286c8feebe39f4ee69df5538c69de34", "T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "5590f60c28de6bedcf1bafadcf103b81a3a418f4f7ea31b8c3585f06e48ce391", "T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "09e18b001bb66c7ea14b489b50e05fb55a48fa67f841f3259b5f751b7901f1e0", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "10883a824e38e1d8d96cba03d997554ba0353b8bd1866e539e764436fd8c93a9", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d36032f83b30374249e24f6a6c42769a88b7adbe17fd660191672aef55fc2f0c", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "8315a65bc6a112c768d11c7ef3510358140859d58c81c76c0d97994e3551b84f", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d86b06d7236c64eebde39a4d3acb9599815d59d8934921342be243ee33fed99c", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "70b57a73effc809557d36edfc0c0d2617df1b9b946a56a522fa0f0f572a6cd26", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c41d9f401554cf21e2ee8effaf766b9ae149889536942bfcbdac6d9cec359e28", "T2B1_es_test_lock.py::test_hold_to_lock": "8b56379898b0f83deb893fbf6892242c3014bf896782854e7538d685fd6749b2", "T2B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", "T2B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", @@ -910,10 +910,10 @@ "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "fb6366eb8f5862120aaecae5567e934546bf06bce43fce91305f4130b3e47640", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "40d49a424c770eae159c3ffa8d22709f014caf940e6600861c18e78538f5edb6", "T2B1_es_test_reset_bip39.py::test_reset_bip39": "4c7a5cc6b7a02d600995bd5f4e0adf2fd2668eefcfb95bba353b693c9dbecf76", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a1c386e98b35d536b1f4f4d8b9c00c38fb360dc7855a1037ec480ce2aeb028bd", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e3a49588b26011b82dee23089a2ccd485d1ee677ad25591e553a38ff30421acd", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e29821e7b47fcc0fa8f5883b2d4ce347af2d538c242bb5371071f25660b6b428", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4296f1b2c4127c47ea14a91b9c9545a9bbc42547108a937db744b61de9b4150b", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b3e71ded5e7f85591cdccddf54c335614cb2c28f49a52da6d21c233c88f65577", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "32aa036ddc5d8ae46fb3993f5e242ef532c13f95dabdf0c31abefac4b00d1b2b", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "a70c76b8d36d5a725aba7f368485829e9901afe5d45f3efe27031a8193508683", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "ad90b323d4cf2bdcf40bfb7c30f4bf13a4d4385a36143c172488246ab6321c1e", "T2B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", "T2B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", "T2B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", @@ -925,9 +925,9 @@ "T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "752f8b27476baef0e9038e52ce39eb432ea62779849b2c129654e5d0e9b516e9", "T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "3a33032c5e477c1cc6b676cb51ee387ac9b18094ffcfbf454f2b1ef1db12e925", "T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "73c463e67621607963ab83270ca726709b1d1e151393918da4c07a3fabb46d7b", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "51af9440889ad77ca0d14d2df7851a2971a255e1988473e3e6dd0457f253772f", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9787e6a308a1ef81d7f3e4d3c05813895954ed19ea02bfd60c9a68c42151abec", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "88983e51b4236be512656af0fd13de903561c5f9c42aee721638eecab0cd72d1", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "31aaafd45d40f194fe3b7765a365fd23329c815ef3aff4b6baaf5ac98a81de0a", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7245a0e8832d67c5b3c2b8d3a47ad4887583cbc15a1306a483eb16a7e1a67ed0", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2af3b65a7837f467dd27d97938391b0139e227797b4b3fb671c2a05d0ecd955f", "T2B1_fr_test_lock.py::test_hold_to_lock": "120c4051eca095f220eebb6b54122b6a72da41c5ee67f1215a5c964e6b76d3a6", "T2B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", "T2B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", @@ -955,10 +955,10 @@ "T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "2293f0baf03ca5850988b736c0e6e684c116291a54108a77134a3e1dc16405f7", "T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "af734abbec86878d07875a03fd264547e00ad61d11999d4f1ab5582ff46b2e15", "T2B1_fr_test_reset_bip39.py::test_reset_bip39": "ad5080eb9cd9d9b3ca2b3b6f966963836d0771eea4f747c443965b6dd3a55b8b", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f1ca9e3217248ee939e2c723f19491cb7dc33b878b64720f431eaf1253794cb3", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f46023ee7580c059d1c8b32949e757e2e932b11a106b580364f7925a0e1142d8", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "93150fe5c8fc7408c0cb85ce37f7c56b64ef076c7d1498baa60957638007a852", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1cef516a8996ccb36872acd24303e614245b1dfbd0dcd9e8ce822c68d49ff1ec", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "098ef9f7bafee2f777d384c23bc433018a09fa35a5e422720bbc3c571f5bcba6", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3c8df7a319891fd60f0d5f9f01ba79f4fc1d7f304e0f8e65b47ae74133d6f059", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e11b7bee599f9c08db5cbc4ded8644e5d5e0f8b33bf268e822ae1db154ffac35", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1579cd88f7b17e7aafa3e65ec4a91241539649fd6b892337ab12b291a52ba716", "T2B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", "T2B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", "T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" @@ -2017,11 +2017,11 @@ "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2c92c69358fe2b30ab5196beaaa45344092d95e57de0214eb11013a5990cc397", "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "256bf6cfb44e0f1199d3e06d60e4d6d66bdb5fe2fea4440953279f36143d15c1", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "af55a065996c9f442fb1c4ad331c1c2f70e757038135634d427d8f84dcc348c6", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "a5a26fb50d7c14d34da7c83f5ef6091216862d119b386c08976386bf02d1982d", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "467e3a95c58dd61854558d6fb947a8be8dc03d494e97b93e079f0af291bf9e41", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "55cc26da09ee80c2c70b66529fe2a2ca44e42fc5ab951f3a4747c50226454d39", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "b195e04fe8239f1fc73ecb71f3224ce5917067655be7cf161310147ae0cb891a", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "84a1e92f603a878b45f5565f729e0feb620df4b66273960360daef0208b8387f", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "eced6674c2fc5ce443c5ef1bbfe0de7c319e2b16084e925972c54f2964d21e78", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "6a65429a96ceda2cb8f140e7ca532fbd0200b086b01da51b7ac26cd701191693", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0f15671cbcc2c5b288b10c4b38a17890beebdeacb8015e08b8575cedfe22402d", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "b78b498a78beb7314f596b46ea59a4a97988b2588d2d4e666e98fd25261e4683", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6a6d57d7b4d1d5179264eef1ed3b57b5f6d095c9f8e108e1049a0512f8811103", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "0f25df5a45c217f284f7c873668793b8af2c42f1b6c7058e846c06f96ba97716", @@ -2029,11 +2029,11 @@ "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6e7810188ec903264134cf5d73ee3d443b58c499aeb4b644403b523a13e217a7", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c088cef440e0b380a48ee04a5a89ffc7fd4574f608ada3d51a3c276c05679580", "T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "690a2a0bb52fde96e307d7ed7c3350a258df3e5cd9969f7e7aeefff525e56025", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "470b2386c759ac03380fad1c2f2eca5d45ede721d6c48c99f5ab75876350014f", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0d8fb809f1c66ddaf6904fe03e8f8b227ede1120573bedbbf14f5a45209b7925", -"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "73d5a230a2f91435ea57452b4c66c2e31282a196f96ba1611211dcef32af9506", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2511cff732eeb801fbfb0df5fa4463e3f1cbae334871ac6cf05f8ce81bb13e36", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "032a1841b5f986813c17de6ae95e9c45e31c67737577795b26f4632970f55f90", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "734937ae03ea12591f4f31e44c179d3cab1f4b80c39dc94085e84575e44113f8", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7929e52db1d860f3e58c04a1bd65a6a3e1e25fa501b7594317c56281cce9f7bd", +"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f2c6927de138f2d17aa3db02181409b1a1f4462577f38f33bcdd2d53098dee2d", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5d35497e801e3bdd8b9e48360988d29f99891d7590051f96064d7108bc831d1a", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "57df3deb7602627892c813406a75fc39897411b566bbaff3ba73beb70c090bfd", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8ccf16649aeac16d0845fd44fee2a1dbd2b223d367966ed15878478da43e5b92", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d737f4992a9b77b6f1e942ec780ac06eebc1d222622ab93071c90e7c0092d6ed", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c0cbbe91fed1a92fd632ddc86618f0e30ef58d16e931990cc0735b47362ddc08", @@ -2246,8 +2246,8 @@ "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8645ab55b2da69b647d22ba43904690dfa20e38638162b1061ad26674af80be0", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a7923569d0e141ea788a0b9cea4ff3fa286ae4fadf05b6d899444bbb860db55d", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "d210e84b4807d31f3394542914d018dc8d2aee55d2101544f31a36c5b8a4986a", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "499b3a8399acae74af63beacc744249973c3460f66f5be8f1eab236c73033224", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "262cdb1b693b64c2ca4f6855966d9734c073a263d54975b148119bfe49698a5b", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a79cfe711fc331913f2a4a5963c871f15ffce877caf97293acd3c9c4f7087ef9", "T2B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", "T2B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", "T2B1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -4765,17 +4765,17 @@ "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d94aa28e5b33d1e214b421073808148a3f40fad4186c5aca6cd6dd42b53210f0", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "14beab9f30a452ef2e733d6b9c0dadf5b51d9a0795f51ee10a533dbb78ecfd69", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "f4a8fcbfaebff01cdc33e9bf2cb26b8e9d14ca86f8b4da2d5dd53712f5a3249f", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c2a1d887c7c931f8a9dfbdd6514babe460b6a72672e9b4dc27e783daabbba321", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c73c8b20213c962ca62413eea9a383d0f5ca3e3afa6d21b56470c792fcb778a8", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e429e4cef3d7d472140f5697ed0604eafa9c9bb224bf481eb35049bd0ee1fc70", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3e02af6c1f85c6a03cb01445f109141c98b9ed39ea4769d7f9d922ff1843c9ec", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3fc2d8b18aebf5e92a09d9c576d4e185a2726bf5c0e1e50ce79a71328ee264be", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a62af119e91f7f6aaf6a71efc5ed99099eabbdeacfbe9108359db7f3e7efff5a", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "9af97c3b64680f33197e76237a6121d24b72ef72ce007787a63a85c60368e2d5", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "590aa68e3990a7d44d46bb2766cea6ee4c2aa8b8a969689dd6d3228cbe9df875", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "df20c07c51b91122e5915590868b9c46448bad977e01b03f2f6ff3f3de73caef", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "b0b7f808ddd0bdcb508318b0a5ab6a2bc933cb50b1207fb9bb2a429c576c21f4", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "ce6389b61742ea1bbd613969aabb63466bf7f49b77b2f27db8874cb2beb40203", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "8138bce15c39910a39f3760fe264e9875760173bb6fbf57d8a42a25046cf5508", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "619bc317cb746bf5cb23a139c7384aeceec1425e7623c3252b8445317fdc6ac6", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "659273d8773032d841b7aa3dcfdead53f4f9b3c4c58c4c253f1851e37d798a44", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "c8a6dbe06267c879a59558111d3a422be911a97adf38c8ef85603b6e19f6f097", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "bb82c7bf6e43e5f4a69b079f5a9d63c682b9e1839ab9eeac5a2241f20abadc37", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "e0769be7ac6efea202bac79321d3221119aec13a33ade1e7b10af9e3ba75d6d5", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "e6ae9824aad7716151f06dffe5671b52e1b10734446ee294834a5d6a5932deeb", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ed4662a5df961dcdde60d11bdda2e8984f49de7be79b7dd5e7c184de265fc219", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6339554affe43322167bfe89d126f3d4e1f8c2b906e31bae2a443bd2e067c859", @@ -4783,11 +4783,11 @@ "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "35fa9d4a96bf5ace4efa3730cf999aaf246557811ac346bc69c371349099537e", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "4a9415af8cbc4cd317b7b88cb03586da6a5d31f37700d9ffcfa6233a11143403", "T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a1483d1109d4b1bf5c6d09742e48fa27ae8075840524173492bf189a61dc0da8", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e0ee385ec1e38a7632a490d64157bcd5ea8c8264b3cc120c56bdef7aecbb51b7", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2741953dc55cb61afb0d5a7e55485c2baad6746192ae98dae9a8528c589f328a", -"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "c9cd80dd9a3bf550d7413dd0590e3f29f28cb1adbb93fb05a5165aabe0c384c6", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "9730cb5e34f6a90cf63a4a6f2c4fa279201228ace1bb9025be166f2cab132522", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b6b689c1832240ac7a4caaf2470388eda76bdb0acc4ac26bdba002d3b84117e0", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d78301f59b62bdff0499b5b2ff4e8a87f3b43ba3a7d277a5b8e057b0a7dfeb20", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4105f6c9f5eb6a7c28d21fe3c1516816365c3c10dd8e835f0b87dab721703da3", +"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "20e02a5418df1fcd102d02676d7de8025f7a2358494f38d18ee4d2086d4a73dc", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6d413c9c2d3b8343e9855ff4e06d6f1f03c1e191cbd0ce2bcabe391faaa0df66", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7f616f5d2dd154c04eb5b9d551803d4e48027fbfdae46f6958f77253c285bf6f", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", @@ -5000,8 +5000,8 @@ "T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5a0af939f74afec51385aae6a181aa30a816c86226c1fe3636e0b8b9eaa045cd", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "be8fd80321cf86569dbdd9a42bdc0d2d433db5d52a179bc1e1e013aaa4b0da63", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "95590e5d8d36c0afbc41e8fdf97354e2122715b59c3f5db944773cd7d843c9bd", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ae6a51ce4641a97dddf8f9e5fe2211b0f1ec025752d8e691ef872f619d5afcb2", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e2e49dc687a2259f9a6beb258efe57e894f7f4cdcf9119053a90e46c3c34e77e", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "3c324970c7c126efc4cdde138b156b375a8e4e0aaa0efbfd81bb641a3cba2b5e", "T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", "T2B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", "T2B1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -6148,11 +6148,11 @@ "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e6b54280c068caefcf17a1f28174b3f5a9f49c597f6d0f4f84553f5da7048df1", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "da2aa458a81d36d6ef00585ebbea3ffa4f011631d67d73bde0356da99c58425e", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7673dd1da89ff6519ec7daa8a6af3b2919dcaa06dd132284654fba0ac1b656a5", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "46750377f41810988c1cc53b78269e68afa4a063bf27872366ba56e62bdd3189", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "68e4dc965ff138bb8eb7ed051209754e03e00a3e01a05197ea4c95d0d5e2fee7", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "286bacf6924cc1cd71b599840a1cd7c77ac71e75e9798631c7b83d911cd39931", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "f1791cfb0091f111ca3a0c1c2a4d30ae797654f65acbee98c3d8b44ddc85efe7", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7f349fd79c14b8ac84c619473648bbca04f4959c9774f9cb664ff9442c19eded", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "9f0dba8db325555b57dac26cbebbe736be9405d9db1d3fcf7183257ff6f9854e", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f384739b07a06ebb48b44dcdf2505e28d06007f2334899564afb7e5d1965eb30", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5f34730bdd362ac1637e5824f18e7fca1194a5d2fc7c1202cb2b43b82a8d21fa", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "6b001d3e176f7aa6c67d5ed874ad41a07c43b5116195a3cd552a0be4ed348a9b", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0b3762e61964f9ab527ca5b7193fbbba493f74944391f7f764e83803f7e98e4d", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "174af19811d766d269d10c62bbe0c8e4e6911dfe3516c38a64b68856625a5f64", @@ -6160,11 +6160,11 @@ "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a397ef0eb03e1f7ab2a17608e49c41b39994443836fa67c79e09048aae0c3209", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "5af4fb6e24d897029185600479aa2b30109687bbff31eedaed6ff5517d37ce50", "T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e097a09acef439c5d5ac28077733f09ea3cdd28ecca031c0288cde6be92e47c8", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6e63a1fea0a31aec4b836c6c48d81b4f6e29a52317f897ca9525d3729389a0aa", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0408185cf64ebe42cab1fca96987883146d6cd52aa3c76ff7225f71288018258", -"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5b7e99c8204d99544c4b36600548f4720de022b2721d75e05a85ef2727611823", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "9ac2a53b62047e7a956f360d4913ddce27b9e5abbcc2ef336e7aa7856be54123", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e4f4bfb747ddb795eb8b6312d4b9f39ffb965a0fad9a86d9ead0d29f8cabba49", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "164a758b8bdf3c5450d2cc2e8baf4a4dd5a6b254b094bb0b01e00976059749fc", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b35f857e67f6ca19f2fd2da64bfb9de927f9e96e8c83970e9e55f62c8a45beff", +"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d7837e15f656f920077b938a17c08dd23f3ced0e5c050aa83c0b1a5e44a06d95", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "28a1acf8c086802ab55c527019e38e59e2e5307fdfca44a2c8c8f945b6cf1b43", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "36f8cae8f2ac39e5da768abda05dcd40d5223b6b48ac3750860912de3c8917ab", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "78f919438ef71fa5fc80c7ef7f9d3eda33473aec868c69691995bb7532105360", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6582438e0b80f97108f7f2cd7caf92721afe2fba6bc31513280d840d3c0bb522", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2eb70fa9f5f3acc615ee2594ca083e48e273c0406f18500690982f2b1b5d7dc1", @@ -7518,11 +7518,11 @@ "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "1fa59516ab6437f0eb6a0c6e724c0bd214e91079a5bb548d1fd1987825957e99", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a87d04a296a08b073a8859dcd7e68819c40e15463e093ff7d19576ec7aaf9d02", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7fd0ca1272b6b64ab587edb3b661347605d78da004c80cca86fa57071ba97e7b", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "d3fea7e4029df3ecebf53df1bc7f92b80313885f4cf194f563b6a116c377ed36", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "7c89fcc71b5e3986e5241ab3b89963fa68661469de7c6dcd33aaa97c43922cf9", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "7416c19cceee64367f1f7d6d5078e52fb17248527fba0751f538aecbb04bc977", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "411e6000a2672cdec47c5c12df25211fe6d5534ca4cee1961e0ec3834dc1cc4f", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "4dbe63ec8f03ea0bebb24e68cb5958dbd6f5e7f46e8aed3a694dbb11b30472a4", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "f1bad761df826659c87bbef5b876f549daa47de0cc41f1498f242dcf4bdd6532", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f80cca8f74d6d1e1860c3aa6698f8cc75969cf93ab5feefd80b4d63797b88457", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5c658c5642657914030d8a7dd4a23c44e8b239bd1c1d565e2470251c4f16a429", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "a1ade95b976a6e28deb91c7abe226ee384dc58776a0c53d1c2d970bce5bda75b", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dca0b979475234a86f863ff4c1a13b2f1232a8f1937a83443d0331e087359f63", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "867351ec7280a04ad469c95cc0b994fb51dacc107198f28e76bcd25d9b870155", @@ -7530,11 +7530,11 @@ "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6556cde9bff6d9cd92c6fb8914252b3af4687ce92774fdf1d457d3ee387873f5", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a981a39599ee54b70a048d342f0ac4d11bed614de5867061db2994f384c9cc5c", "T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "699b6c8894775340566baed8fb966900566d45b854d1d74b51b333f426d62405", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "576156b7d1564d4908fe3a02440c51cfdbf7d9a53bbcbf61c82300f4287b0ff7", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c6c346b761e3076249c32c2192608302833687e66a36906e918000336da44065", -"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "39b2db2fbb65d222d9b70cfac7c6c1d8743e4f3d07e115548f6aa6d614a540b8", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "51268ee1cf65fdc6643d1d20f84efce1feb3acd8720acf68db3c28a710d9890a", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "70ca642b526586bc3acd28413fdc09d2f0ae3d6ff18d7a02a7379a7ab663558b", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "535f1ce0a90bf5fc9f5fdc8088a83245885977d68edf7f638a3ff5d5662380c6", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d14f02fb6eb479a12e58bb35d1858a25ae29ed1901f8c48c11a82a8c451ec27f", +"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "956abd38be685cda6dcf96b9a5de7778585cc625125df51f9971bab30a647cf0", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "15a5e070b56dbcc256c2b0fef1cab999ecc5088f8e9cccd3ba0e10928d8236dc", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "861eaab4c29f7c90f1f8de0d46780026c86b9d8990065b7694278c9b33f202f5", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "851bee61c1b9d2d3417144b6d0504f0ae48409a1e01da5498d6cc1c4a5fb9e0a", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "47bc3fb72c06124191ef7e9586df146a892f87046107218384d08b06baceb34e", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3256148778d8e34a180b5ca01b0bb41ff5cf573055a8b4fea6a8f42aa084b5b3", @@ -7854,9 +7854,9 @@ "T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "a49f1063caaecd342dd10a75e19c7ef351fb2dbc78cb4289c67ef70f51b12d73", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "14425620334e05b9f93534c9bbabf2a3d5300801085438c84a7f793727ecee65", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "368df46fec1dee22dfbdc3975478143c805638c37c02ce62348759e0c3e61155", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "23d969786494c544567219644f9848ac66ebbf5c9da2fd1f18bfe85f948099ca", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "529f8aa61704bec95492e551b76ab31d848d7d98196a8d67b2ddbeaf1da19c7f", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "15b82c0d7736ee07f9a08ff80c2a53a5973306e8949805ffb70c348360f46842", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f41af8c56b49aa12eb6170c6f5526a67cefe19591953481ebba7be1a413d735a", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b9ec1b7ce589bafa64a708d6dc4fe90725e8998b1424c632523b2c755230ae26", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "a4bd64cc39717bd6eddc5c1abcaf1fcdae83a7449753e119026c73e1233a31ed", "T2T1_cs_test_lock.py::test_hold_to_lock": "cae9be494e1bf8cbc1b0a37835e6b4892cec88757ad2b0e4e68f89f3f1f97e1b", "T2T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T2T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", @@ -7890,10 +7890,10 @@ "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9fce49fe5cd46312732a8643f9f0dd2694b376722b344d7106d3f4ee57f30a57", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "c5e7eb0fb076bc6f1122a463c3b05c058dc3d59fed14d36e97b81b8bc34ccd15", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "537205ff560808738cb7f92a975db4f901822513dc6e04765644119009b53983", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2c43412fe258d5bc41c5e5556c99200a80a09afc28c2ea66e4d0d4c773428e49", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4687407359daf9210ad0be537a775513cae5db03f810b5f6850e177d327bb34f", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bae467da0bb7edbe3798fb7ef192e348c1786ce488e83bbc0ef362ec9c893741", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b8a38e031a8806325bcce5d65a6b5f3e674e7530a0bc1ceba5f875c41ab1b475", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "150808fe83f8c00e16aa664fa52f5bda82a6f40517e47b6bd851ad17a3334c7d", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "64e981437043f321afb3c33392e05042710f52c2b3f2b15bde27aa240b55eccf", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "98b25e2d7c68f1c6c5f646695d2ca06ce2134aa3315b4dd02269d2586f237c4d", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "276fde46af4b1c41605db2f08b55c6cffcf0889e635ca08029bb157d7455ec72", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e91bb83330840e2691d3faeeade1b43621f3cb144aa8f38aa425f8e00f7d928", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8078df18e03affdd08dcba3798b2f81c4e339d096562023b75fa1436b2fa483", "T2T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7ca31effe094026c9e00a78e2e5117e199e5ce5ddf4a4a869899a17193706ef3", @@ -7902,9 +7902,9 @@ "T2T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "0e58a536d8d369fc270d3136647158221256c7bc529d49ff86b1596232952453", "T2T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "4e99f4dffe668064111f70fecba063895cd23f9923e6f164eb00f648fe396c83", "T2T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "900cbf60bb283d843b99efaee0e6eab9030ebbbd6fc474fbb6dc2b8cc5cf70e8", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "dee850edc2adc8287cf4acf4dac43fe89e19c5f3c4d694e5cbb45c8848874868", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d2c37cfbebb562273eb63461a5cb0cde948f3eacf952805a976b68ac95f7da7a", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6a95412138f2b9a4e53f883d80787ff64660022ccef5ecbad0e4e5b359e41e9e", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "29d5f2a80119aadee3e7c0b4dfdae5da48c5514c65c02684a51f199559ee6119", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4ad97bfef72c1d047f1575fc6c66e2d836c1058d212b9850e4b06ff3fdb05be9", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c573afe919684581d61e6fe1c2b3417dd135714f10ce002cc7c69f62b692c145", "T2T1_de_test_lock.py::test_hold_to_lock": "4254a324366ca37a8e3cbf7f4aa1b7bcb02f4d631ac9e4fbca50a2ed60131858", "T2T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", "T2T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", @@ -7938,10 +7938,10 @@ "T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "385fd9b6db99191f374ef6bf1885769270b04ed4c83b898410a820f5c1bfe795", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "44fa35cc2ffa836301818fa5c9fe5823e485da113a3329e878715bafb51ec154", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "f8f3be3e3f9a4aae2d38861d9a97ab186f65d8acb266074743a24c17e92898a2", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "7d3304dd1c3da795fefd5ad45f7f57844a2a03ba4e431adddfc1eb3dd141cf55", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "40bcdb14794df08309c3d247e59b7674fe2b2274690212ebd14e09f7e11173a7", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "8c866dcce447d13b2fb24f951bafaed47f35916e684bacde43974e6ddafbc7c4", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "202a1afbbc2fd332cf2e56a549e360d392881ab7f20d8b19acb15df561b82d46", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "422770a2603705f1de74c92fd97ca7c2a6963265b1346b3b5e6391fe9a554751", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a54ac17e101731386e6530db774443841e50cc745039dd163935ffb2ee656ebb", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5122549259f0dba4ad3b8e608de024f37c598820a09fec13ffcc611298435492", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "60dd23fa69540bcff63db1b270b8fe9be9ce7e98729c95b1ad8925db420a3dfa", "T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "521b6ce07207c262b832fb4e78477f89211dc02a4b6e02a6fe8d389a2be909cf", "T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8ff223f44e97a98fbef62c2ed314bdc2d3a2f160d0396d09733847ce103494d", "T2T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "15ce8ca8c46be745296ad39b2df4e4503f1b3208c3f5b3e3f48d7bd172779605", @@ -7950,9 +7950,9 @@ "T2T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "140ff1c01d0d27ade29e88af481a9a24385fbe01058bdbf35f2fa20c19e0c386", "T2T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "f9a5c8f92ca3b0b9545a9a5b3cf8df4de9943fbe45de113aa6f970d60b3b9b49", "T2T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "2ea54adc6df443f758a6395b6b443fbfe5931cbd62a321504de9ae453aff8ca8", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6c33232fdff24175a489c83507bcde9bd859cc2d7f1ca687e154befd0cd2b883", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "20bdb47f4150af61b2a64927f7df2f49fedf9d02442d103c2833bddcc57f9f93", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "97fb33be7f98498b0acfcade1e5333475c9e6dce131ca7bdde3a54cf72c595fe", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b25bf7604a7b71bd9949f5fb281aaf3cb4fcf94f528ec39b25ab85d0a2002086", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a1d6959ae545a62b3218c6ab12ec5d0f4e4d7facbfee9101ba771e8efae3a110", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "24be30b9b530e5f8c0f8bdf1a8de80cba73dd6da1ed42d45fce36e0c9f65dd23", "T2T1_en_test_lock.py::test_hold_to_lock": "a5739f92ae28fc57769e444408ce5b58223d0d33b368022ef78ea68e0f8c9b80", "T2T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", "T2T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", @@ -7986,10 +7986,10 @@ "T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "a009899ccd3305cb6737c8fa645cc9eedf4e46d6669a621a07d8cd9447d80f2f", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "9b0f5a7b8d2ab0fed1e5389076bc035e24dce377d275824220f1aa61e9bb4810", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "1feb3fcae2c593ea9193bcab23d8e64accd6fdbd2b05e2d2403ff89f8f94e4d8", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "6dc6b1ed736a1073c05067f37b817bf139e832a41db7d7804622d4a452db7b2a", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "50b553055335d639728e075c6757ae8cecea4887a0508876ce36501f81fcf7dc", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "a407656fc025984edf491d8ff04adc55e7e1b683e3bdc39b74172aba1e419777", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3cf750b01cea54c96b7f5e1fee535af8e42e02447e2da62bf7b9b167a9cc835e", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "321bb1ca828fbfe706976a725c7609a152ac97c675c26480eac5bc3c1aa6bfe0", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5d5a3feaafb41d2490261bfb839e09fe23cf444931a07bf07cc6751803b8c80a", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eae324bf985156be4de01bacd26e6351d44a0766a69c148e06ca846b1be14f4d", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6a45df5a9b902a648ec35e604a285682254be90e1a720ace4db7ebd14cd94f8c", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a6c27b94205c9dd53a817612fe0abd85743079be6ea00206626be171e1aec455", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e32e681c59dddd9e0b52d559d2f843dad022662fc56507c1ef76c1491aa8728d", "T2T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "d3a25e5f32fff10662159ae1d42a057db28ebf7c331d8b1910ae8e0e4e74f29f", @@ -7998,9 +7998,9 @@ "T2T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "9fd091e3fa094c27590e10ae9644ebaac8fc32502bb070981f007e1da3c41b10", "T2T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2ab38b584b868bbf22501c70c13bc4fec9c376b65cac52cfec63836a98f2b703", "T2T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "37a764a71200043f47213df663875e9a445b989460df834c4d08b0b3862f5a6b", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4408dcc3c29f8a2e366796d06d3935b4eb2b55063713bcd490f14fe3be0cf3b9", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "8427a11f493810c26c1d9b270328bd14bccf385f94b0bcfd281e3fcd90068b28", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c1c22b46198dbf706afdedd8b057eb9732cfd18b0cb57c30f217b22f91b81126", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ea68c57d578aa68e2d19c7b42ba2cd3a6829679f5048e8372018402ae8153876", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "393a3b383f42fdde0b373c1b25fa90436e12163ac21c7e4de80f013a006ea9da", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "8f4cda4156849d31ae69259d18e0e8a9a11865024e5f8532d58c7ecc047f219c", "T2T1_es_test_lock.py::test_hold_to_lock": "11c1e5e33d8e6046326c9c30f61216130a83ca9916172fef6808080bc9c67216", "T2T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T2T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", @@ -8034,10 +8034,10 @@ "T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "0e74c799e720952caf98271764e8151da2f3f79a5456a1b8fdd4bea13ea780bc", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "db5ec08707ea408f9d08a8f0cfc42aba44358ee6ce94ff73af542ef8ca5993ec", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "644226a8736f10de7878950e41d189b207474a40022365b87ea1ea24912c1eb3", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a619ccc056e6dac3f040ad49e7a7286721fbcaf8a2ab14e871833fd1d5dfffe1", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c63962a0ea08d008f709dc80ed19671e056df97fad3264c377de5fbc39506df5", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5cd17ca09bb26b670d2f88dd23791d9a26736d5b5cdb82d26cbbfdeacdcab761", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6a826c0fef58dab431e27a35a19a1020d54ea5674ff455c4b5566b804d5a4f8f", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0451a11abf5629f3189638e06769ac4fb590c60e1748cac3229070e0599ee693", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0c12fb9d20269eeb2c1b336d39d101f7252c5bb3686a7a098b86e0eb707e3100", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4d757ddf5c0c17a2edede82ac1c417f006e67b47cc32d1a6834ee0853b5160ae", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d4390871ea4e209cd8a2973eb40cf26f09970b01577f3a90f8f09d22ce0b62f3", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b5d12766c3d49c8bfd80548dc1b18eda5a88e7799fc7002c1aa17bd29fb1b3c9", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "4b7b8f476fcaa0d38bd1621a4eb50ed3c92f2bb65be12b012a9e91dca2ee0a61", "T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "b93dbd30a75a6aa4ba3d6c695e04baa811c01d55700b386fe446b03cddcefb86", @@ -8046,9 +8046,9 @@ "T2T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "6341145caa8a438f9c4813d20f4fa14ae692dc927cd1e6418fd242fd089b7330", "T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "12e5ab29c4e6a7acb823f50c8094476731e1a8325414107d29cf1e2294d40b4c", "T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "8ad2b77fa910ef4b5a950a3b306be275f0fbd99cda6705b8e08c7381abd4784c", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "fa93b9899ab76e4780b9241741bd07d034fdab6cd3e93bedd0ba2b813d3f8c62", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "188098a2fb8fb4d8737c550a377833d63e8fb0904a6e4009ae379e6b39f69842", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "17268ddf251caac8e25a6a87db1150c684fd41bdba4d19bc39ebf4e4643d1d80", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "dcd56041f3a4064e7b4d0eab1ca1754aefb79826e4c20e7c0d806ac020f63053", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "dbfd08a6a656241c1a2efcca19688a39524087c63233f421de9c70f9427ed1f4", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "30e81db65a068e2902a84d7c3b4b4d2ef11dcca2be5b7d95f93eb6d297590b52", "T2T1_fr_test_lock.py::test_hold_to_lock": "9806bca2f87c93ad68284e812c702177535768017bccce6e6264ca4dc63b7c30", "T2T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", "T2T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", @@ -8082,10 +8082,10 @@ "T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "5bcecb9c0d7ff67fd388e13aa5daf4bf849a886efe7b9ae64a4579b15202be23", "T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "676c1eaf8983dd9d07e476303f2c0370006740a4c2a34a11ae68735fdfdd3ee7", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "5d9a35bf67c9520002ee41abac5c556f1932b9fc2073a259c3a8acf4443fc64d", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "8647ebde75da70020183baad95218f44753132df62b526a77d1e1d43a958b6d9", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0ddb9fcf396c0f78d4234e96c12d4bf52beba5c2daec0b395b154a41e146480a", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "53646d514d96635c4bdcfb53ca86b62776c1d8de132619f9ac07afee3072806a", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "837cc7e613df91c589c2a3995fdbce9e5246ea1e4c1638f25ac94190f60cd2a5" +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "de5e884ee18c51ed5e12290cbe2faa06fea1792d75cc3814db9bedf151a5c578", +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "897fed170f4f7dce854af3af52ed3cc0e270f0b634ed80edc6b92815b7132046", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "96fe29d165264d24365c7d62cc45bb4627133afda5bef9b6903fe8f5019cd2c0", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3b0b8b3feeb590ddd6adb8c5729688f051a1ff61f16bcd80c8baf81213f09c1b" }, "device_tests": { "T2T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", @@ -9221,11 +9221,11 @@ "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2db3e3119116de9b001a288f040d92e4b90ae4c6178ec94f7b44d23f247e2a73", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fce31a993c026c2ab3a2b381c712b6069cda27bd66b084c35005bdca81afb048", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "29956f95d176dba8da7eebf385ef404749d99c8a92e030e29a197846880da228", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "77f96bdb6a5b243bf6617c025a66c34a0be03cb6ac625958b09538746b5d7c16", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "7748cb842ff076d55fc84bc26fd2d5ed388e79ec979c35df85a1973e99e07f0b", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "48ec6d308aedbf549028d4fce9845608b32ce772a716d839d1f924f4ee45f9c9", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "07259c6f4f25881c1586a1db82817fa8baafa20c2dbbc446762dfacf8279f657", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "41a6afce45815e1e9605cd275f6a531a17e8e527e1ff85e0a8282f2e2bf1a30b", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "6ad5fb50fc18b813c6d3d0f7e9352ce5323355a10ae9e8803d0e4b89dd578566", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "bfa354de5d406f1e400b6e06a383fe837f790cacd5b13b15a6fda9cd013a30ea", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0c60daec705b1ec0a6e788ee9d93b917e8a1acff7aff8268c4fbdef0d3d01462", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "61752a247a074657a56c71bf2a0a8557880d6841b72acd78405c9ba5f518871b", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c8caf6c0d9650720a6e966d874694610f8f048750f8119b8b1867d016eb2368e", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5d2af81b8ae45704c40aa97d9ed9cf87b56c6aa9c30c556eb1a350172d26c764", @@ -9233,11 +9233,11 @@ "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "52ffea964d3a3c1f7736c6f15fc99ca10bc1cd07903c3594aa46b184bb369cfb", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "70340e4bb88712feada3d6b0dd238b211c543dc1209359d3c53318955d54adf5", "T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "6fc675c8d68cad7ebd1692deecbc618f5e11a4779d7a146794e911dc88c72e04", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "20dd598b52fc26146c234cfcbd9785915a85ac90a0b1a2fd55112e15ca07adee", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1e6a3a4f7654df2daf9051f79af3a87f0fc0086897b9501fc10318006d498cd4", -"T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ed8433a96bca8ef36454856ecdcfc5f7d42cf7091578f388e17503775b2d558d", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "15915ee08a4eee5baaeab8328f29390812188ee1f6587cee759d97caf9cefdbe", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "34169fef42f2d78c3b38793e9d2be725d5ec5efde2494f6a0f964351f1f4497b", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ae16e1e1a1ccabfb25b540ee4f9597425b48c71817f4807537aec60bac358e7e", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8a3b2d45e638b1d4434b3100bedefa9b8ee0c5ddfabe2c742930e7325e66cc3d", +"T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d0455a26cfff4eb405b9cb72624fa17ff4cea4cfda5cf05d436bd598e405f503", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f60b155963d34b4abb13c127d9f88e34fddd81cfe430cf10397a077ed88eeac2", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "3a7d0697f28120f4d99e982331217fd94e732763493de8efe8927485a4e21f6b", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", @@ -9444,8 +9444,8 @@ "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "3bc1741f8aa4359fe44b1e1f6c5c027eb097dd7773f1b3c7b58b432c5d75286b", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8268a5fbe95c3be2540e05fe7a99e94f350a064cb0f92dfe0b8db79e13e32bfd", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "5a210f05a9e4040a3fd3c88abf03e6142bee9bc4454240910482b7b66c2145f3", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "acc033ba11596e2808dab331b4be8b1774432fbb26f47372a781a3eeb40b2d75", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "c1ce59416f4d3aa5661b2430645235a47a37e2861baaf6cb6484537fc48edbf6", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "add9379f38648e97f10145cde341da049ffe809b9c8729ab532a46be39bbdbd3", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6d7fc33bf8a4c6b6fcde74bc342f17ff97854c7378088e0531c283e93a3c5386", "T2T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", "T2T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", "T2T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -10678,11 +10678,11 @@ "T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a41c082f40c0cf424064179da18c8a28c25aea8da7aa8d97b49397b33a72fa03", "T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "24f8115deb03abf6624975d228cde64253d5f6a822f216e1671ed28c45d12221", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "03c67a21b9c0e19b7da02d4cbf7f380a2a411215abd9004d0ce9e3062e2437a3", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "0daf36876327bbc9b3d118217108a41bbaf06cef8f3b0461350817a8a6102057", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "6790827418162faecee267785921476d6403915ecb8ea95ca5c09e4bb2d5a3db", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "948fd6c1249c82020c197747de2889e9f5f59edfe3b1249e9c55e65147525ed6", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "057c638028c831dc6580454212e5960b0876555cc5e91c644c1c62d9015ea9d2", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9a58e8bb4c31f9736258d3b721faa6e03ade25c8b43bd57143c553fedf7e5b35", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5e85fcaf5fe9ed9d7f4d198116292304d2f99cecf5c002b78184701872e8da6f", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "97cd09b721e9248aaf17249950b1671d33f5ebe52689a421aa266a1867246580", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "57d57f99e14f7f0ac715e2d54684eba86d8d3ad3be994a1681a0de3a4bb11cf5", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "38c0a7b97bc1791a41bcb1584c8127cfe19863c03420b29ce239a4f16da5e5d2", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "41b97d6c80896a11d1954b49b67160a4edfa61880f21d15bfed5e7b1bbc6ed95", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1ed4bea3143debd0a2eb9053a8d51a916fddc8788c4c1936da8f0eba6efa6ec8", @@ -10690,11 +10690,11 @@ "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7109155049cf3fe9bb431db8f29b2d217c2d355da403d391b559815c4236e35", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c2150b826dd599d7f39cf0b68e2e6fae1fffcf2068d420a667ee8e5ed6a92fcd", "T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c78bb5763a46b10e170923fd43a108a068d160b418f5b6d8af6c89ba5f000a0c", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "bb321b346849f0b3d8efa6ddcf2b9596b95412dac971ea37933eaa8f04fadea9", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d42d4d70ddcae7f4c18cb52174ffddfd69f68a7e81a387e0325a4e38e44b8827", -"T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "741d35ebfbd17c264e1aef43e7066d48305b8c5717ae38ca2f99c3c0ebb34ec1", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a1465ff0b6ebe4faf5de60abafd539905d55917a7a8db11c4e309da55ca01b9c", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8d11aab9d0547474067fcc12d90906513da8ced19b7571423598c982c44d35dd", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "23780088b74778d56230e7ed0c77c19b11df2546428c8da6b1595e97f050b681", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "29da774492d39dc1bd20f9d87b98ced8cfbeb5d176151428f1bfab5544caf5a0", +"T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "dba5669fc3fe0c1628d825ecbb286e913f35e34d2501467a1e19d92bbcf29588", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6b411a234d80ca1403fc386d92f274042532bd860de65222666c3d6abda9cbfa", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "62b90e9ba8e1cb2e8316689e3e8b50d21d8deb16fbdae523321c41470ed9d84e", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", @@ -10901,8 +10901,8 @@ "T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "37070e6c1cc80ff431c94e4abf15fa227e5e025b313197d038b08cb99e88533f", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "3a3889128b2d52fc72fe3a399cec891d674f25a47567a4b73660579ac85e901f", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6236ced0ded64b2cf58d25ce5844cd6861526055c516498453ec910d86a1a8f9", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "a6408fb3bb88d60adf52066fb131365efc6ea276c7cca994f420cbf3ae9fae84", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "452a7bfd27d122af7e44c9ded28fea1b418622f943dffa5d7b82eb88e36d4661", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "40164cb70a4241c57f46882eed4bcc6379115cbec4afa1c9ea45f24d1affa479", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ebbc641a9eb294a7276823c27ddbacf7995507311e48cad5928b0516bb96030f", "T2T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", "T2T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", "T2T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -12129,17 +12129,17 @@ "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7d6b8c0008568f8a9fac9e6bb543b3b60845eb6aa5cc715efc5ed75f95aa27cb", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "443ab1ba8f9bc006865e978418b4ccdf931f88ad5c13397467cfc01ed3b3e406", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "a16d8e9838b762534c0a2d8c82c277ba81e49f018506dc26624a4a0d8cce97c6", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "35565f30ebe2dfccf5c4bd774f7cdf410688347173389b36b1f9d60d441cce96", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9672e34c2bbd4a3825258f2239d369e4aac4b28a170b6ed9c716180ff0477ed6", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "aea2334f29f8f4af160e238d79cac41e1b3b33feb08b71c2ab0cd867b8e8a20b", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c8f48570ea01b8046ac1deb84f3a12d1b02718ef28fcb47402e9f98745769d3e", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d31779beb275065c26d2ad3fab64682b4c55c9c0bee2e2ddab6c607762d1e551", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "35b9bc382e6e0c8778be8456f7dda77ea693ed5e8bc1168213c9ca5b1b1d5720", "T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "5f3413af77cc76413fe1ec3e00e17850f8de504499b5bf9d753ed4d9351931e5", "T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2b866e19489d98b9924398080478e2126fe9769b057ea725e7ba795584adb1ad", "T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e5468c5e24463f2e7f0bd7eec981bb7e942cce7dbadcdbd7c5cf3bd1df229a4f", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "7d5bcc38644dbf0b0b3e10659c1f37ea0614518db63480c9dc1c7ad1dd1210f7", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "313ac8fb4b3da9cfbdf19bf90617ff8fb69aa894485f682eb32a4db2d9e08f30", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "b400fc538b0190f08a1f4e5896c1383d22add069018330f31e535e8b64b8799a", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "45e091601218e22ccab8c9d5037c16d76473d446568f10ae641848f931238194", "T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7846f566faafc178e190e2bf320b4028847ca58993c80fe4865dab6efd453f17", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "d224375841a21ce86f7abeac502b3baf9d1ac94f1c9868b85c9326ec4ee4505b", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "1d2b0fb041b91bf6b405bce8e6ab34b6db89f6c5a6b0680a7e4eb7fb258d38d9", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ffd36a3fd421250666a83637ed4327c614d84e56a0e38c2e5f3cf13a46497732", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f2d65c79da5d03603c63a0cf3e36efdf5f6c3dad6934bbb9897e02ee6ce93202", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "550ef3ed1a280dfee383119ee41329956c47ae38162721cd3ad53f00d8423937", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "adfc882ee9368382c280d2d80a358e362d555f6dd72e645dcc6cb7bcb1a5bf56", @@ -12147,11 +12147,11 @@ "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9a091e24dd9e1a4f000f7b457c6c868d5a839ae5da56022c94dc8ad90900ee13", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "426b7fea50e15767f8038324ff1e6aac01f8cab1cf57a998b5c65951daa74ef6", "T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "13c73bb3ea55849f7aa918f142942265ece4863f9f9645ffcdfb93fca5ab26f7", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d128d28108e9c9cde11ee0028d3bd8ed34a866b148efbcf3f89e316e401f2c6b", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ece7afb1567c31ac7edf380f402f24cd3c2cedc5d8c93d7bb0b140a8c3fcfc85", -"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0290b12f3902f6315505cfa9b582adec9b3421773191ce7401f48b8f554ad842", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f034c92bdd7946eefb2402976df7406dc2048f35040fc8d7b685d59ac3ec4f88", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "182a4be3493bc23999bffa969f3e2d236ecf478ffa23fc83236f0e162e503399", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9c5c06e1db268e0d0e9afdeaf66d73da2e57e9962886d554b7b5ffb0ffb63f61", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "eadbaf081948d78f6d1c39659de2f08291ba1c35598533b9ba635c7f8795f619", +"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f8ff23130c6e58403d22a0e1624f15f7450a9d3335c1f97e1e0162957c8f54f8", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "48517a6cc89d824bce17ec80fde1e71dc65ff4bf83dba813df9af596477f806a", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1a75791efd3d9f1d5ba49a5a15807d923728dd3a4fdd4a2fb87126bc133a2276", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", @@ -12358,8 +12358,8 @@ "T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b432bf3671b15fdcfb92113fcef0e95671c3d7beaae70b25a87d090d30f9a079", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "4a6f3fdd5d7ae36e6b5ad84faa5385565fd13f4ce3f7d915fa16c2184f99ebbd", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e17b49d05f231444684b0ebad638456b4b6d7b0ae195180778c3f687b7d0ca7d", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "53788010ec0f9c81ea07828ae32425c3d38a1d35789aa91d3163e117fa2cbe99", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ebc007c9801856ad27dd6332b7dc5413189191268e10fcf5604203b75d8c52ed", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b2ca4d9b60edaeefca177e373ddcfca93ab67102c5b2082d8a80dacfa655340a", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b54caad20ec3418cc8079afe466c4054b208e5820e84fc30235ccce843967a91", "T2T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", "T2T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", "T2T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -13610,11 +13610,11 @@ "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d405d791a687be77da11e1c7b37eb49feaa5dd74b5746fac42c5916385c8b63a", "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "611d56d305fa5d605b191b866822428e99ab605e7634190e70d60070ed8f3195", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d224c8e21874c5a238a21cab83dc0b7ea8cf6b02f05df42b6a4cb2f3f380deb7", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "01dd081154465f634b28a748d870a044c05a05eca6fbbbb5c86596f64cfcb683", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5b0fe7daa093000e418af154d4affcc9a1f5adf63e8d82cbf1274b56e613587c", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "11584d7536395af694a2b5bc4ba741e21820041acadf5f907e5c08147d0a383c", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "fe2351955e520cfd4d67cdf932462c3fd69d7a4373afd73a72ab71afe597017b", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e92fb0bc5645bd6bef799b291db6df29f43f72a25f323f8551838109ac6c7e6d", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "3441cc3c041d7e0af9f2593ed6207f571429f1274840f6b33abf9dd187d2151c", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "a5d91e205ca1295ce4564f5d72483fb47a63605346aab79c6dc4c7f9944f87f8", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "e618936f8ab537e1d2d8562283901deea6a288485363dfcda171741c3b65d97b", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "5b2fc9377ea69b697ecc06da294f71ae0ed27ca1430a62e75125d6ed3b192809", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3feef5d60a1a5f6ab43f2033ef4b0a266c70223ebbec77b67bcc14ddc9a50e40", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "faa3527677ffafb45b176cda3164dd7d88f37d541c8dd9bcbd62b447483b8ddc", @@ -13622,11 +13622,11 @@ "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "215421830b8cbde327892fce38c042d95db05a321a9979d206b99a4e59ce4fd6", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a3bd99f3660d1a3cda56e9739bbefc724deb8eeb4b73246e84503bfe789bde37", "T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b8111873f3f468d5bc9aa2b1201dcffe108d65915009233381c611db0f4a0701", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "acc0d0370bbbe44ad16158388a4337151bb5110c1877f0e80b4c8c872e66b9b2", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "637b3b9b2314955a770349c6fbfc2ed63bb808541c0f5bab471cb199cb47285f", -"T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8dd2e27e4956d24b1f2c1d1d942b03d76e25a94805b840fed2901472c493740b", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "239fc7a9906999cb15617e015d960ce18abe3552c946cd734089fc04b1a55627", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "25d652ece7be654fe2e7d14893559de671d5e1777088e5f180bee1270ec4e301", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "50a8af6c86f80ea782dc50fdcce297c26a243a92f09fce52a5584b5397e3f468", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "44992a718d0e5f42d96a758a3cc3e2f85530abb6eee9e5318c0c090fa4a666b7", +"T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e7c45fa0dd43261daac14cc2e0bd1e70edcf5e6e01cf44449369fca970025127", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cfd7023dcd4aca013ca5accdb090d0881ba1b543208416d6badbcfe41e54fcc7", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1478855266a762ae5d630e4cdc0e1fe8c8c00e3b6cf84d2cc3d621c08a994608", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -13833,8 +13833,8 @@ "T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e7e6f40d948aac962109dda203c6d993c62e8fd9a192ec7c360e3939d7ec7d61", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8996c33a3c1cf3d1acffa4e9aa359c27fb0db7d31557a0d73174c6b890b688a6", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c11497dbfdf0bedfc960c5cd13224af3f0ba0c8f59972628f230d022f629f54e", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e2be7305c3626c147420fd8c575df6c43765230956e332363e48e13db91a0d5f", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "829ee4054552159b7d8ac7973544ecd42e4a40f189e522599e5bd08d3b7bfb5b", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "a6e0625189fa40f77a0c2dd58c76faac5f3beb3b2386cfd75b6c6efce1f69c40", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "02ad3175184eb9443b8e19b079bbddb2da91fca79733bc19910ef1044b0ad080", "T2T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", "T2T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", "T2T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -15067,11 +15067,11 @@ "T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "461178dd45fc130048749dd679ae202547e64c3311e07ff9ea27a593c7cbe51d", "T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6904de14224eb55d657747ccbc0b73a093406d2910665c69dbfc65df949b1d3a", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e18f67ec58ea71bbd9d8dbc83a36846b5ef494cf4653e64b93c6f858a1834dd8", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "f4f2365dbb895b2b765a5cc90d1ba5285c9dbe64d9b0cf78171e32a150fceed2", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "20815808a1c0448419908cb6d679dd40cbd589e4a5e7e4c381fd2d05fdbbadc2", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "1e8696b66f1656ee9964494a6bf1ed1499c55510c535a36fccf3339491014a30", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5bf03c89fa3bc3ad58c7d6f82066ec1e7fd755443a11ec25d6ae532ac1ffafee", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "647986a83c9c0de60df929cf2b2f2a9a05a679bf08292f2c3d140b422e96fbbd", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "636c718eabc1b0f4c1fcf71dce3e0c44466006234811e6188dad80d1e123a3d8", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "22b8508bb568c05bdc4efd90c1ba43058a55356f3bd0e201f1a9f751c5e36a6a", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "bdab5b37a4aaa4dd904d7a86b2133b4b97924487025662850eb35287c4cafe29", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "93d9d8fdffdf2cfaf90d035034e522a0c011831f5f6126d32e07afee7431b55b", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "978fcc41f8e83b9111f2733a1325a0b52c0aac5f7e5367783ad4a16fe0190587", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "03445a15416218d18604e3d229eb93e866227dc39e1f49a0f874cc9efb743e2f", @@ -15079,11 +15079,11 @@ "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ac31713136ca74bef0d54440a062758acf2c55dbf58f784896d7edf9318bbf3d", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2100cc09016c1f1886c846b3540f46874fd32e1ee41550f5acf97c0d233d3d05", "T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1a561435908f4823b0f9ff21e7cbf723156cad8a47fcea8c971d6da3b478fb75", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "98b31621b49c149fd5c9730e1f2688adce1620b1906fdf63756a824ed64dcbec", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d9d52aba70a5ef5d2e71d7e3e2314aceab5e784bf39d3e9694ece43486ddea28", -"T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "17da2795fed7d52e338fb6664c46dd0010dead77b1b194cb638da00d5b4a8f88", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "221ed02ec5daff74a13dada747c824a190aff09927e9c6195208fba472a051c8", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7f3feb40f1f06ce581a8a0adbd39dbe8b7890acdaeb51c4bb5aefca01e7fa286", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a78f558fae7199de5e0b672dcd028deded7ff862e5fd9d4817286b437df402ec", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4615bfdccaa7d8d08ef6370a6ce7f386f8b4b5ae34d52deb64c319d317191dbf", +"T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1d903da547400aec99d91203de1b643f6faf37ed2296cbe58639edd36ad0f78e", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "787a22d99069ef0c4177adb03c4e191b46d6b59c52cfb27337f101467cdbc045", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d79584560bd4c18ccea7ce2f714982df982fd5f5bb0a130611359721a9ed46a4", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", @@ -15290,8 +15290,8 @@ "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d9ee237e878d4539fef1f3f079cac65d3ddb26fee981bfa5fa405c27e28288de", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2ae9bf940f547719023c78f4aac88326be7c9b2ddf32824c2ade7bfee3dd2698", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "16a48db51cf4ac7c1207207fe92257510a86db58dceeabe847df1b324952fd1e", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "5924db7645dfe2f23627380eec3a6262df862eb20696fa3bc2a6b12afcd1c5d0", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "da7193abe591f36e26ba7b540c7bd1f2b2096aa9690267d68f8acee889921afc", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4a320f05e153101f8216afb5882187bc0faad320981882ab9550c3654356133c", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6ae45b1161b593c518da6ca5b9595643a4a0f9cafdf78cd03c5e141ca027ac72", "T2T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", "T2T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", "T2T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -15413,9 +15413,9 @@ "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "143f81514b342874f528182b55e53bc632924f3fd7f44967dd2a171e07f8fd70", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "c3a3ef8291fec640a93ab37ccc08bac97de5380e8c7b5105ba34243e89fc7be1", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "5ab884e92ab8105925457a3fc6f4fca866749f2eacbd1817b9c196375c4961f3", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "defb8c967711cbc271f94a37c3dd505379aa50b5b773c6919a17a2cb12043811", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "511a7e9e7477190690f12fbfa8749e69e6811665f40fd0fea2a8849f133d7027", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0fd20d19efdc39d946a132fa581091a445da4f3eb424f1b71790adb9f3e51679", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8e0188d169ac286182eb3c3ec4fb6c2af3ff8d5d809fb500cfb07b7289415149", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "32d36fb566d5f6df163f63238086f9f5554527e2fe962dd705a69e219e6a00d2", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f842d19441e64e1db2f9454971611c84b4a30c71ed9554632cf158a2cea72cf8", "T3T1_cs_test_lock.py::test_hold_to_lock": "ec202e9df1622e2f189652e7929db202d6017ef6df2a235ed0035cea032bdd05", "T3T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T3T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", @@ -15449,10 +15449,10 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8766eab82a293be974c517d14c569429187f081d56df48359ab3088fd6f25be6", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "20fa687cca06770b862cf90db02429d24fea3469d2b9a931b828093555307d5d", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e653fdcab4edec38ccf0634288e7d618bc8dd73eb2f22529cf9827898f56da17", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "fb09f7bf90ffb9696ce41be6e452abd4b21879174290e4a7c6da5e3e4fbd947d", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "10301ac15cc7e4f05f686e5597fd3ec2dec039bc013c294b5f84a687c2f336a4", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e637cc9f17eb47b549bd69a1897b5a386c62890910212be79f32c820a75b11e7", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1702c0f4ae9bd9bf44fa494881facebd9736d1a1fae2b564017f21f999e21739", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9d7d1fe39d0aa6946e00d83cb840a016d526ad0f3ed149ce93bd4660d9f0bf44", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "fb8aa1472a60d91feaab767617767667f6029845f65f0391d698771dc26d69ec", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eec3afc1c62a0b3956b3014fe628c2b5b04633be69ef09eeca546f4538b816b2", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d6811ae96881fdd4dcd372716f895b1c8a51c4f1cfdabb10b50ed0b5e5935eda", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e69f1d962aa09b907c6ef4886604321584507031ca81194ae31ee359d3b18311", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "113199817596637d5eb61d6ff2e5d331651ae1bc2e2c41b018acc1e723fdc3ce", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a0aea17ae65b3e5769509207b64d2b13622fd9b6b05df8d4fa99fd7f6cceedbe", @@ -15461,9 +15461,9 @@ "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ae09966cbfee6e5e1a55231aa5386e0c9235c411aa1560d30adb674078188590", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "fa40cfa1d84b174d4c191ba9e93e489cbf4398232f6f4a08b7591520336d5ec8", "T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "c8c5159b86ab463d1ace5ce25744b83dae647e1ef730dd27a1db0a74a6186ab5", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a0feb69ed402fa2d9a9418c52e7a757b7551173d2a6c37373c039c7d029b0e4d", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "bbed2b91ccead31c0e4633302c753f41e67bd73383acd5ec77b751ff901ee8bc", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "a3a3b403919c23545576e4000eb182ea13f2c15da902f67431cc92bfad9ffcf7", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f182f932f5534d5fdb4de7e7533799417964703a01367a52d2a998733abebcad", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "97d76578f007661448365df2d882f285bd68d5e1ddc739e07a5d5d42c618849e", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "818ea348aa945af5483879922f2fa42890e69d18b3b7f5c042794fd8f6ecc8a8", "T3T1_de_test_lock.py::test_hold_to_lock": "116a1bcf9e0d900a21815703564e58c8dfde980ce502d4fa57cd28b4ff68e7d4", "T3T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", "T3T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", @@ -15497,10 +15497,10 @@ "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "393af9be535289774f4c7f69a31127c89497ae6b0a9c251dc5b97c847aa11b7d", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "37a9d5d636a53d6a7876f12b0bfdeb8861e23fb81559d65309bb005a755bb0ae", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "f9db3934ee7fe0b69525bbc642e2af061aa0010b937518940cce94f182f5db15", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b42503eeb1f68aea805cf1c9ba8be41c97f4541659bc4b2f4987e09b0f585368", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4d57c6c41757aa0f919dd6523b621427311754bdbd6a41890ef9ebf6c79d05b8", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ff8d022996af07db45e528e21d7285565974a9916529bb450dbda22445372b90", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d83cdbad67584de1b447f611014616bfb87936f8889949890bfc621e33379734", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3c60a0801b42adfe6d0ba9d9975e5256c18c8904da358f3d61574ae038fb39e5", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "43648276c221cf6db6b5e580edf0f0c0efd99a13e7217931e60003b89804879f", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c24a3cdbf7ce6e260cc8505045e4e92b996a931c5394230625c808aa46296eb6", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9f0e9c887affd0e28f1e0e1dba66e3505edb1e3ee18e78f6a19d3a8402f03d5b", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "86415194d0a822709e64ad765a93c64967ace2adf61b4e7c4f3353e4486a4fbf", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a2e5ede5cca634d93f3a4a5bb4a8323b0ae5576652c4183233bba42152480c64", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "d7b8c8cb51eee2f131a74577e8beeb8209c93d4bcf12a52fcba461d8c37270b3", @@ -15509,9 +15509,9 @@ "T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "be557c3e4e0492d0b884d4ed549d3ae18e6175b74b5945e7ab6f2f96aab58748", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "700aa42142055535b4123d84f6d307a0589b43600c2dec525312d06c2af9aa18", "T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "736652b5298a7a4ee2e51282323d1150c9844b6f7b738f421ac4ad3a83d0788d", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b13e22bddd80296bb0d08dff4bc94dad287c40247045eb779b88ba5c53050507", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ebab6dc1bbf5648693ff34ffece0b67d829d44ac03a751c72dcf623b2cd2c8ba", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "aadf5b948d034af305b275fd0d837619b8f133039b4ed431fa31fd65cc2e143e", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "dcf3611b9ccbd6665c79e71ac6dd2d88e8882bce8674dabb553dd8bce1637de7", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "673a8a2ef9dee025e855287b657a0de5c2eb058b2b4f85e6c97eae0d99b8acd8", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3e8113c8341fddf928e5fffbda56e399ef5b7a379821d092786d08034a736eeb", "T3T1_en_test_lock.py::test_hold_to_lock": "9d60d7aa2fbe6a0de14379e02ea825fbf9e21471596498f7be686f2538391f1d", "T3T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", "T3T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", @@ -15545,10 +15545,10 @@ "T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "35c67f93da34ba0f3c72a09076391bbc1ef24661d7ff8102f0394ee50250b29b", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "a9f1ab4971b614ec67fdaa9602f72ba5eebe54204b3735f8aa2b91ddeee41a19", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "beab50474b19fedaf4487c64071529e4217288942e4695ed795632559835b20b", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ef7f63ddb82bcd7ca92d739865cf466741b531b86946b1524b8440382823a56a", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5ac9a51693538d546a37d7c6c8c3be260849bdccd84d4f92a2c48ac036914100", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "08a2e9747cf0cc71d6fff582b7972e5c6b5a63bb667c6a63b2110aa7dc675b84", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5b61a5331e62c21419c8ffdd4ba8ff41b1ef18f9dcb575b3ad4aa5359062d5c1", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9dec43731d5e2124dfec89fd0bbcdc55e0fb2e74dee36392220ef72c0e1f4157", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3e9790ca009520cfa5394d089716fcfe26ad1bc17a5e06dfe3bb8cfb2fd068d7", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "96a1ede33efa68859e5f9e762aa8b93a9ede823c1873e633f169e2b303729c7c", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b8f9fbc1cc0e41864fa3f91e82735394d0b5c2746cc60c291a167761972970ff", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f5dd586173207ad0c2ca10288d9b0459bcd9c47b322a762bf69a48152a8d6884", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "31873e72e779156bc1ef9045b2ac30ba25568692032850f71d1a16dae9e93a7f", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "a2da4e7cd30e51e3a8587286660adfce5d6ca3dd0528a6c75c3f1c321ea6586c", @@ -15557,9 +15557,9 @@ "T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "43e9a64487eb5dd479c81e9f2fec09d9688832c5fffb1ab2acdd158a28572b9a", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "210a7bae28c84565bf5fc748583449bc71b5de5f3ae4b64bf8923cdb35b35ea6", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "40e03c97e2ef2887fcb8431d6e18eea96e4e50f75cb5936d1873248b96648bc2", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f552bd22ac89b24cbfe12f6f7e25e4b2b3bf127c1907720a19821f71f21bb1a1", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3291b3498961444326ee825af5bc6b672a2b92381dadee1df36d60c04f9d3267", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b4f5e8ec155784497add1ea30385c995434640d96cd75cdeb39e5d695de9e115", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8773cbce2d6f57a8ad93e8f43b541c150538c89718479cc22a9eb2b8c5498141", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "5ead8f4f3113cf03672e45e0241f512505202f185b6e8d42f6eea7bf72615ecf", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "23b0040e453ecd96592f648c9b611dbebd7f28d44b62c9604127a1715f2ffdba", "T3T1_es_test_lock.py::test_hold_to_lock": "8692abc2f68ad3577824088bbb1898cbe7574f3730083224601d9fd6ca847252", "T3T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T3T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", @@ -15593,10 +15593,10 @@ "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "1b15cdc0e1d8b2087d71a43ed131b9c21efd339a7ffb71f1c7330c180bd3275d", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "796fa6b469663f333d82bb296dc286d0c36be1cea4bcf5b7efd4371871d782aa", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "c1387c1c2fb4286512d93824a12f953f16b51295cc8d558cae6fd1e310eaa090", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0fb4c39f0a264948f1b2fe4d826227f7dea4f6e786aafbdf061dcb1ebf27309d", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "075062ab783981ebc2e39789bd560c129e28b85332f1c02242fa62345a09cf23", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4405b945ed078a411abf455efa2604776f8831235440f20f28c5a7c2a33381c2", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b1f6ac25133bd252284195a3a3c8e6edfed0c66ab2423e1c09f7822c58265116", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "836a27888695290186b0cdbd9303288b7c06587b2186048b781f6d1837965ab0", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "29fb1827361db1ff7ae63145c7be5849724ae33c64893f77e0e599fcebf32248", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "40d963b286a7b1bcb9199f5666d564cd9383043a94e35a5c4f5831a3539f36a4", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "66d5998cff4cfbb7af455a83fb290b99ba9eca98c16255a7c615d02e2761d67c", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2cfdef780039ba2a24fd93545148696f6f8b5f7ee3049c3e005be03020655bc5", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "57aa1b6bcd629465c3f0716d0be70861c124264d601cbefdeda7c3a8498afab0", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "1f7c2890d794cd107243e4d7892a9beb209d98437ff7ff67eb3a4a85bdbce4fe", @@ -15605,9 +15605,9 @@ "T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "6e5ffef280c38a6271cba4221ab7e686c6918e20faf1db24e1ae06736ecf8bda", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "70c84970b185ed2864c3f90eb98a3db5baf1872911dd87021e41531e93553d3d", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "6d4aa4011816184fe5dd277e931d370d666e0da7f332b74d21c4906a9fdd2bed", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9d13b27a5e2c3b59f9a9074d7b0f6a88c3c879ac899565a668f2dcd45e2970ed", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4a97049098f4a972435269350f85aa4ce0efc9b48a34bb3521e2f16ae7f20f87", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2942aab24575e2ea01e97fb7519726a37218511c3d815f47cac096bc29af7ea5", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f27f6bae13acba729e1df0604d5154e32356bb78fa7fa4be93c51490190cea83", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "facd536c5be690ac35643f664e715b0f6365e8f5035c7f3864df4c7f98c621c0", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1409a2e645642daa31c9b9e7f6d62cfb7c435639427a343bc8f2f9eb64e551a7", "T3T1_fr_test_lock.py::test_hold_to_lock": "1b0ac32693b45bd3f93826006a3a33efb2619b7d9698ca35be742c59f6f1411d", "T3T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", "T3T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", @@ -15641,10 +15641,10 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "7259f03479342329ad3e17880bbc6fd198eee09d0884df8c97d225747fbf8841", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "a5169417e155f73ecb329c2573e79e37f30eac2f1f4ba7d4a7dc60f0131ad1a5", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "95957ef5e91b9e091145be5b2ae87d6708a4cd273ff44cc726a16d153beb04dd", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4d7829e03cd18f428d3a2813df1fc07940da58449b0c5357cd56814efbec90e6", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e227438b61cd2950c9c49d91f4888ed665e644251cf3696dfd7368849a35f40d", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1be05a4f0517b1fa2501880db571221a91754400b6e30134714e9161c2f7d4e1", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "cd2e48cd72798e720689d05be404ae40ea96e22e6e5da298df3bf404d30d256e" +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f359aea23a319d57fa6658525f75c0b2caef6c022467e4babb5ce5ab8d4071a6", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ff52600e707f07c40ffda40d4fea68b1fd6ac20656b83341d973ad0df8dc21f3", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f0469a1ff22b294f3f4fd7f8fb934f80bf11b1132c0b0b7932075b366cfdb145", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8567c5a1dca48172b1143d5cd52ce40bad0012a4680c9a516ef1fe4d73da2668" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", @@ -16738,11 +16738,11 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e30344a76f7988bc928b86abafdb032b78a48607ef16cffc66d58473a7c8a13", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1e7110cdc5c51a73279fccfff529d9c905203299f9de5d834aba262e5f0194a5", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "443583bdf27b893b6dd4b56bd5ed31f66a33e11d622a8ef2013c6e36f9b4f39a", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "666c08ee4b1bbacea85f0593ee9efa76abbba385e289e623b5e05fb41aff6876", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "3d71772ea1e6ca8ccd5cde0ea32a3a8a6ce9149022574cd0ee826baccfde11e0", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "df424e9237f18aa36ae46bf629420d24da3cb0c60508e729091ae87b27def85f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "8ef3db66b9a6a1124838b7f33ede4e9943becd36f2e2b9950ce0288a33f8e0da", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "78672ba722e1cb276ff48a2bea40a9026e9e2582ac1cb5db849fba1a360047e4", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "d2a3d07f99e1961af97d783fa0244d7a100c0c1a3b1ca342c8f608e0e7f377ed", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f6edaa76fcc54315ecb19068c58c6acf4c2c2b88e78d803b37480fb3a04af79e", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "739555ab45c0b5da06a1b9d7a6d6e2cbe4366e15662098d4f17a6f3a4716e092", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "481fb734de51e33a92e0824e0a614c200a127b8b2556c85e4dc1bcc436bd199c", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f4807908daebd239b4f5606c91f06be35c93e9bb7071e92f1c2459edb548a6e6", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "321b05495d37f1f95a09fc450601ee2e3f370aa4af9a7543e63be13e97c33995", @@ -16750,11 +16750,11 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75659956ae467175de9c7a8bb61d9d7321efc91f8f87816a17f18463cf6cff41", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1f02eb23ba80694ef0fbbe4f19614f84ff52c9342a0be48f90a6f02efa816dce", "T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a400a0b33482bdfd4470e82c96dab21f08652d6436c8273d820eca0c369e39d7", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2b879adfabbbe637d5e50a433f8a911a57467edbbd59af61037081426b778780", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7fd44837eacd3082a7e8dfa11af04c4e6952c705d354bfff9f0f72560efe89f1", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "79305a7cb1571730b927d6b5b4549bf8c79508711f8b1a2990f598c0de9a65d5", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "442d3ce8be485fc31667026dab018d2c7521067b83198f7b8e5779df2bb32904", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f2048e8199f966374921e88f9a80c30090627e5fe867ae8cbac8dc34c9318ce0", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b70e2f842cd752e1033aa4d0c8ae38e450ca311e38479581340d95b5bf0b308f", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "84e24c4eee88de04c9148ee1b6bdd5ec6d23880d37597d0159b385f3edc21a60", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a8bd97bd243145e64f7b776a631d7d1bf404558bf19ffd9085f90e1aad027f6f", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "fd8513f476006d88649573009d065e72a47bcad35614e33c7167bb2aaa442042", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "c39ec56bfb5288e57daecccbf52780c1e21ab177b9bba8d908febe94b62f0b85", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", @@ -16961,8 +16961,8 @@ "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4fae4bc57a53b57aa1c6628b625cec1d41adb07c0504a82f2afbc2f5d9d11384", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6e80595458ffb3c1a41ab5e2a2dc2f7c243708645b040b4759ff5e9569dbdbce", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c1f9b6f548a0c68f2f9c8be67b74811807bcca0ffe8f96ce35213d9ed57609db", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7671b4ce0a9f4fb5e30fa5d684dce5ac14aad3e532da71fbf260c2e7efb0662d", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b17826fcd4f1e4a0ced8345e1c8dd31804b3d949ffcbe53fec73b61a29710187", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "321079715d3bd98a5f22a6da9d46a015dfce690593ea6fbfe157b3dc9496771c", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6c2b37a606caa923305e2c890d0b75af1ca166bbff72ef9bca491fb579357186", "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", "T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", @@ -18153,11 +18153,11 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8f11d9988ab51214ab59e3ecdea10bf810259b69f3e5c6774d6af3a8266af3e8", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7edd741620c6d5c96e7229e11d215ff1114630b64b814c022467c6c0a72fe740", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "adda197012484eeba7d8a6379ced43ecbae120f985f2d4f347b4ad4afb05d6ef", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "28d4733dbe9d87fd557437119f9cd4bd6ddf965e745cfc0437bf635f2580adb2", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5135fbb586c3585c6c34e4ca69cdf702a664aa37842177fb2a4c740c76a36e37", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "52c8b5d6da874d9f9e4e32d9d349463a4d90319761a4b303d3b10281d1bcb550", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "f0de0ec63553997de72a46b10d994f70f3085aa8b26e5fa1fa7cba32e142b17c", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "334168e5731e1d7ba6986e4cad01f9548c50e305f74871939638dd5188c2cdb3", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ff8a81d691fa353ef89718f7448ab057938defcfe736c88613e3a4cc1283d75e", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "3212acdc11fce42e414c23742163be1637b7f0a016d6d58922a439f0e512c03f", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "2c185dbf16adac3d5b5799cfe36784c6971e23ea39e8ebfd82b2c6afbe4c0d64", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "998fb6e92a968fe8cd965c9f7567e07a7fa78c23940d99d303130e5f144130d6", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e3eb4429c50959404a72ffc87db52b944c0b95f0784ae2fa5ebbb155a636752a", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9594468af5fc3b3345774bd205361a51b7647452b5f2bf68e40250518aa0121a", @@ -18165,11 +18165,11 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "191f367d9f35a8cdb4c8ca69de36049eb5e989f3258f42c94f2525e7445eeb66", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fc441a7efedfb9dee0afddd6b5df987b69208ca4f8543313694a095d0a193685", "T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "388a92c622ea26c7f5af76b9cab819040b3f5c3032f3abfa8b452341bb6caaad", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "576346cdbd53a12123ea2b7b98ca666696584cf56df996668ff6a013f894ed05", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1b2267ca6d30b4b633cd3b883e1522e5d47563366e5b46a1c75a35e874694883", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0401e19b8db97cf29e2bcaf5dea90c124aa4cded5a61c1a19b5a664bae8e0d02", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ca418d8d95e99c53451c3c86ca4cc054aad718b951dfd526a367799376c8f584", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ad8d43b91d2323d5bbd12a40fffbdc7e4d83519cff6fd86cea4682e05b0ff4a7", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "154fe61ccca911c0549a42e035ea1e28b3c76fba31999211a76e2c18fc2c8128", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1bd99f00e95a8a48513ad0d4678675aea499d0e7105d205fff799753c40d9d73", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1eb4dc094c30cc0298e1d14165592d54469d4dc5b0212422dd60ca57c24977f2", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4b3cdbd39b8e618701c692fa5e3ff7380141003e050408f0266f51a70b47325f", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b0eefc56e10aac1a7a490b31bcee3df17b9150498f8289345b37371ab141e743", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", @@ -18376,8 +18376,8 @@ "T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "77ac0b61fb4140409c32c2e9435c5545b93635ce65c24f7dd1c4d8aada93493b", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f137fac2ee4b198d19b732efb96c657513a74f051f02b642e8b83826972a05bf", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "38b5afe1623634c7dd7771b81c4b799877d434679345df720e8945902ad433e1", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "be93b4ebaaebb51f2994454c4871aaeb86fac7746d95ea303715991b6f507398", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "43c90a69945802352fccd4949de7a6f076bac2e57dc39206666057494e8ceea5", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "c3e781ab2f47f5b268e8ec4a1cc7d17dd8e14c9685c0886f791b3a88349b3ea4", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a128aff3fdd0ad25bc6afc05de49d09661d2a9f35c46b84db28e3979f37e050b", "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", "T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", @@ -19562,17 +19562,17 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "e31d8c1996f0bc22f64c6b45f79ce6c653fad3e28f210d7dff118adde1e28d6b", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "1d93919e23c2053dafe725495349ef934afd54cae89555614c7d3d169edac8d6", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "13d1bf36c203d6d3652becdc4b4f27207ed910db99f29c0b0ad3aac8c9d3aeee", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "84bdd5b06a8fc3c78e903ec82c343e08edd98f40a03a4869f64d9200fb09a754", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ff31c7b4cd97cc574c390bb58145a82fc08644731298653726dbe323bc991b68", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "963f0067311df44ec9e62f3c859469783bf2f4d7710b4c653fa9edf19d75d8a7", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "1ccebb6bdbd12ec5e9efca2202f20ebfd9696306ce6646598c3f3440f339ebfa", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5e13b86617820a9ff1b5a9ac5d21092743f6c89bb523e9f17e4f88ba1e91da08", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "21558d4237f3e390b757cd01bf68ec7b00734803e8ca7237410db4bd12985924", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28398ee2bfc0e8774613a51155d78039657531b4a34209c457bf364c11e7a13d", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7a2afcb4d00fab2004cdec95f2bc3d6c5a37c2f2e9b1749982b1571b265b51a2", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "64626ac12c65af4f17b3654ea2cb3fd487ccf62855792c5a7cf43709996024b7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "04ca60ba989435647e3dc7aedfc9471e858ec767028c35dbfc8cdf99b8b2b507", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "ef43bf6d25f93115145ef0688dc4fd31870499a4bcc52a050c516228e2e9d641", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "31c11bf7bf2ce98cd19750eaf307b5cc156cec0a6aef7c133457199f874fe8a5", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "0a69649b2a30cfed3df06d745e69ef5b5d7f1365e85f4242f76bd8a906e427d2", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6c0f3ab10c3a403526b39326834ba7059d7053eb22cd9403a0cc760e2b62c0e5", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "a91f60fd8b0b1f06cf83d2de541502dc7dcdb9debfa684de6d5d76270435e2d7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "e68140d2edc1227e6f7591bd0f89615cb8e68880e74948c42461860f170e9d64", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ba11fbe65ba3995251087c289a48672a5a1ec2d31b82a458b3f2694a2e608500", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "6ba43aaf7cc698b708b4a64677207f26b6610ca0fba420588291c7660dad0feb", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "87bcddf21ffbf1a850b9c4480329498c4148fc7457144959214e037e6b137f87", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2164a72e04396209768bfcb81d77e842863f801600db3a6cceebada0c9834d24", @@ -19580,11 +19580,11 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d7596291af2da445c465c00e4810302b8b7ab67743efed9d69d790947f894a85", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "18b4e40f7e3581e3cdbc959f2a9f666064b435a3af8da5ef30d40634ecb169eb", "T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f6f62e8228d3fbae8b64bce061dd77e49fa6c5c40e0b499bdcc01eb2a9603a59", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "198b0c574bfa13aa6b16807c7cea469144bedc941f806b893ee98c924a0efff8", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "031c302ae2f839862b4fb6ae65da7ac3a6ee84fd3fbf90707d09f907914e0488", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "c51f8b6743401a55153b76374d4a038a7f7ec89df5a9618e90130dd3d84e44cb", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f09745b93295d89d0f1660b1cb88cb2cc1c7fa9542954c898b8696f36ab4af75", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6de4e189036e5f94e0aeed958f9a3d64796b2cfd1d4f318ab7440a33119af4b4", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "538f44e6bf070aeb7814bc1f35a2e28aea41d7a3f80e59200a616188ac755350", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d69ec7495b983b635fe407b3a2d176a89ae7eb9ca791822715693fa8b4778ab5", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d579f6a90f9f21d3098224a4fe503a0f1b42ca3bbaf057bc821d23c105909633", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cf7084f6229703081ad653308ca561c59f54dbcf919ae1f4b4437c42be1672dd", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "33ec5f4b06a0de5a7326c4576c441e8fcbb6308315efaa77ad05f61a7f2ac63f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", @@ -19791,8 +19791,8 @@ "T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "63db4c01cc1abddf73ece3c61d9d0de6bfd6499559e01bc58c2981f416a922f8", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f1cab327533697803793725144e42200106e05f1d81b75ff0a8eb55453a37dfa", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8e6156bc4caf5f75de7c164844de9405e6c08bb74352dc6976a8d93dbc994e53", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b0c0eccecc9e7a84ce9af7fca76d6edce2b1fd0ea48b41354cd0a2f31b8ff604", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "61014a41b3c84831b6c82d0d3f8527452fed48f52cde4737b66f62a72bac3d5e", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4b40bcda1027acd50d2db7a4d4a385fd23c722a4b4d517627c9621f196d4cac4", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f8bf4c5aa62746b5a66a3ab3ede76d0210d8c7563175e9598672638323dc3fb5", "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", "T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", @@ -20983,11 +20983,11 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7aa840499711432e69917f40c1d0681b5c2a0510098a5b155f110cb1608f4c41", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8ee942007e5ef72baab7fb67a4eaade25e48da2aa92ebfeda28fda4177572467", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5657e597cae4958fc657bd768d179af28f3469600be95af950697f06ab83c7d", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "6f0f0a6bb0c1a5fabcfe52b2585d8f98e315b92e0d4555e403d6a99bb102ae52", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "6f1ca2704d7f25a728a690e3842405d9fb51169c8efd68fa05234938742f6fe1", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "a48c9f4df31a98517888832ab0eeceb23beaadcb4d950efe56ba934bd7428a1a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "6031958a84b5e85acf04d39e5db1e9071d8e78130cd770fd592988bea73c8c79", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "613c89d30a66f5b3974ca7287577724c1ca62d7fd7f3f32b2ed3dc2fa0ac9793", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "20cfcabeb734ad17ea1dcb205bd8cc7604c00b220a3fae743d19ed0d0ca30399", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "1236465d27f05db5639169acfe7331535c5c35bd0d2cff76cd9903b82f0a85fb", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "329fb150c7b119353b22074016499e6af381e5e47a74517d2f33384e8e095a0c", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "1f9cb8a79235d40efca0da2be90a4d8f7dc44ec4b305cf9ce954a3a8ecc540fa", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66f0483d3a21a3ca9c76b5bc8cd15ca8591b03470d4fefb85e385c2abfaee53a", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dd8d37b2e9072f6a94985ed1fc055f82c41f0387e30aa9e515e7a3ea17ff0172", @@ -20995,11 +20995,11 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "352a542ff97ef2c58424990a1ce65e6218d714255f0c4c66b2e71d126c347494", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e642ce06e0dfc36df4cdb5123f3f57c279ffea64b99dc542dd33b32760ed831", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "edab79cd58b78252329e58f2e9121d76d75fdb1f2ed7f28f026d11e98155ee55", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "90afdba84d21e6d31a834fe56b16d864ee93f84790d61d4d96758fe566212d1a", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2f1a4562da3fbd1417420612b19805a8aaf13529ecfd305dbb462bce4864963a", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9456e28a0f41172a78da9092ac55ee9af329762a970e43af9221416f7bd620d8", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4fd165255d1b8eb20fb72f0b311061ff475d84f9555cc50c753dbcf32b099cd0", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "21dae60027e854269c6841265455ed037aa19ff8602b35073f4a96234abb020d", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "969b56334d86a40675d8d3f7e0049fa68aae3d1b0c877dc5137fc463d2255858", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "70e9c5de6f2a25683ac628aaa427a405bb3f2a74e357c237f0dff53d351ec30a", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "25f047d84d37a1e25d67af102de9dd0227e101f2ae62f7d419645b0d270305c9", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a5319877b666c440493c15e135ccada146e965e9b2717b4b4798eedd9642fa1b", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0ed9fdedd27bbc958b71363f33cbd4474799b7e6c1ad12296b037d261ce00906", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -21206,8 +21206,8 @@ "T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "124964310a99c5343f001cf603e9d71ffda78e33c23f831b5d65a5d19af9ec85", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "cdc33a34f7754c3d59f242e4aad85b2f545f000c737dbb679e563edb8e5cb41f", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "65a2130e4039bd172f7d97ac85ec2724ee51df97cb54c9eaca89c65b4e95545e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ae62055830c453c813a5f6ef11134204be0b9b9dbe5f300f983c3beb43c58d6e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "65b21cdd2d113175f55f62f9e94c7042cb57a95ecf52bba82538a532ba2918e2", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "c5468b4f993c6926fbca6105457a56ccad9239f7ecc7e21860654decd8b1e4b0", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f1afce8aa35ca9867a3934713ef41a4cb60d1ed9bee8f0c32b6daef8657db6bc", "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", @@ -22398,11 +22398,11 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "69855dee7d227ed8014c64961595f76f395e1d2ff1e7eaefea672ccc448415d4", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "02b3a838e4b2a18991816b36778684755999f546fcce32646d8b78d0a8cbf36c", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7ac21681f55e71eb1c04394f3250b4ff4b392abd8c94bb851341436eaafc4bc3", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "30698c92d78a07985318832f35c3789db957f4237d36379d82b27df5f8e44cbb", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "185377255694af531d265b095e1ee2d336d1790e1e3ef51699a01271a4da5e8f", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "81a4a78cd520ee1761db0b1a827516a03f34d09574fe303d8324380968034900", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5bc1668de9d7c6d6417d0957514924278e667634134d05534ab865558a6f436e", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "95d98a880b628b9a72426bf6f751b23221f5bbf2b639f6211eaa84d61f7519bf", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ffad80271ee919895e3f97777843b1dc0414bf9540ed338466bc387ab9852a70", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "8ddaea9e0e10f616b9ed724a45bb048400b9a7a1988db4f404197eb449824b74", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5ed6f0745bb8d7096b91cdd5554e266b123238b26a3fec081c0a24f247de6d65", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "14a29b446c946f8d014360eea54e6ebdf3fb7c91a1d67c12d053c5a43b9af5b4", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "88771b035ed19bb793166d10c67c0cc99f17d022a26014e210a3c9be87c6a3c7", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a91e3be0a097d23c99a7d6fac54dc358d18830862a21b87f2d3dad3f3c4adfd6", @@ -22410,11 +22410,11 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7424163883d2144864cfd39b1baea93a9b922f6bb0b712754ae0bb4be4b9865", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "068fe486ce73c3fe25a8af66e6c553ade886df17073731dbd49ff36bca8b9653", "T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "53a695b0e9aca1e1629a0a39a1eb97e3b95363766c65315085e5642d2ab3e70e", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9e4937899cab29dcb91861bf397a2b360bd9a42f470f7803d92d9d79048fddf7", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f4d87fe7e3b0d78c2dfbfd7cbcc1215faa605e18e778ce1272608a96662880c8", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "005e36ce0c38568197cefb568655a8ab68051c2286bbd169f84ea603afef497d", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d41ecd2f29dffbc0cd7c260582d8dc13f0059bdad1528de9636ddc38585f7b8c", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a84c74fd20499031d38b828e529b74f197b2f160dbc656f9ae5a0bfc49fff4d8", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "32e011242ebcbdc61ffc762ffc4db4ae73fc80bf65290d43f1f4c1a79bbee033", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9529ca418fff2095e284eb9a08346edc8a8b2885604a91ecca92ecb9b2c74ad6", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "047f07608080d760bb763356585b7744c98f1b3e206c1347b98006a064711e2e", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c1837b210fff67ffd96182b59f8e735d70b0e4e9f018b7432dbd06e584fa74e2", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eccbfba5184fca9449a6dca0faf34661c31a399ca1bc9fa1b4ae9493ba9ba2e5", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", @@ -22621,8 +22621,8 @@ "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "56eb47e37a4555014ddd5ca539e65c6e37a4564e88b492fea593586afeec468f", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9bc50a221db3ec1744c903f21db4a14f5afe9b27d8ff87243d99e1cfa28f94a2", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "662b8a9bb4946936be88d5c776ad67e9dc1b3d845bca120eebe40ed45e0109b1", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1e44c44917a8ef414f1d3de27a899618551ed761bbdb290984bff4ae2299f8f7", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ccb7696f1052b83dc194a2694ef2b5046df215de3a5b40bdfba510b0bfbd6ac3", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7115cbf212a6622cb2a890b38a329bcd795e92717a367d9373bce9f23bb5b3ea", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d3af392eb617bea5db18c5442c946a2c6979776d4e3168bb6719a5f894bcc1f0", "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", "T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", From 12ff2e4570469107fe0b98e7297836c5270ae17b Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 14 May 2024 13:17:13 +0200 Subject: [PATCH 052/626] refactor(core/rust): allow Copy and Clone for Gc This is legal for garbage-collected pointers and we only avoided the implementation due to being careful. Now is the first time we need that functionality. [no changelog] --- core/embed/rust/src/micropython/gc.rs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/core/embed/rust/src/micropython/gc.rs b/core/embed/rust/src/micropython/gc.rs index 3c0fe8e05c..ae29990eeb 100644 --- a/core/embed/rust/src/micropython/gc.rs +++ b/core/embed/rust/src/micropython/gc.rs @@ -9,11 +9,16 @@ use crate::error::Error; use super::ffi; /// A pointer type for values on the garbage-collected heap. -/// -/// Although a garbage-collected pointer type technically should implement -/// `Copy` and `Clone`, we avoid doing this until proven necessary. pub struct Gc<T: ?Sized>(NonNull<T>); +impl<T: ?Sized> Clone for Gc<T> { + fn clone(&self) -> Self { + *self + } +} + +impl<T: ?Sized> Copy for Gc<T> {} + impl<T> Gc<T> { /// Allocate memory on the heap managed by the MicroPython garbage collector /// and then place `v` into it. `v` will _not_ get its destructor called. @@ -100,6 +105,20 @@ impl<T: ?Sized> Gc<T> { // a mutable reference. unsafe { this.0.as_mut() } } + + /// Return a immutable reference to the value. + /// + /// # Safety + /// + /// `Gc` values can originate in the MicroPython interpreter, and these can + /// be both shared and mutable. Before calling this function, you have to + /// ensure that `this` does not get externally mutated and nobody + /// holds a mutable reference. + pub unsafe fn as_ref(this: &Self) -> &T { + // SAFETY: The caller must guarantee that `this` meets all the requirements for + // a immutable reference. + unsafe { this.0.as_ref() } + } } impl<T: ?Sized> Deref for Gc<T> { From 80d1ce25c67bac6eaca4f3bf715ca22f73c0f552 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Mon, 22 Jan 2024 16:09:21 +0100 Subject: [PATCH 053/626] refactor(core/rust): improve tjpgdec interface [no changelog] --- core/embed/rust/src/ui/display/tjpgd.rs | 6 +- .../ui/model_tt/component/homescreen/mod.rs | 16 +-- .../model_tt/component/homescreen/render.rs | 12 +- rust/trezor-tjpgdec/src/lib.rs | 135 ++++++++++-------- 4 files changed, 97 insertions(+), 72 deletions(-) diff --git a/core/embed/rust/src/ui/display/tjpgd.rs b/core/embed/rust/src/ui/display/tjpgd.rs index 1fc6de3455..734cad50c9 100644 --- a/core/embed/rust/src/ui/display/tjpgd.rs +++ b/core/embed/rust/src/ui/display/tjpgd.rs @@ -20,7 +20,7 @@ pub fn jpeg(data: &[u8], pos: Point, scale: u8) { let mut inp = BufferInput(data); if let Ok(mut jd) = JDEC::new(&mut inp, pool) { let _ = jd.set_scale(scale); - let _ = jd.decomp(&mut out); + let _ = jd.decomp(&mut inp, &mut out); } } @@ -50,9 +50,9 @@ pub fn jpeg_test(data: &[u8]) -> bool { } let mut out = BlackHoleOutput; - let mut res = jd.decomp(&mut out); + let mut res = jd.decomp(&mut inp, &mut out); while res == Err(Error::Interrupted) { - res = jd.decomp(&mut out); + res = jd.decomp(&mut inp, &mut out); } res.is_ok() } else { diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs index 1033139f5d..ec5769e776 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs @@ -215,9 +215,9 @@ impl Component for Homescreen { if let Ok(data) = res { if is_image_jpeg(data.as_ref()) { - let mut input = BufferInput(data.as_ref()); + let input = BufferInput(data.as_ref()); let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(&mut input, pool.buffer.as_mut_slice()); + let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); homescreen( &mut hs_img, &[text], @@ -241,9 +241,9 @@ impl Component for Homescreen { } if show_default { - let mut input = BufferInput(IMAGE_HOMESCREEN); + let input = BufferInput(IMAGE_HOMESCREEN); let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(&mut input, pool.buffer.as_mut_slice()); + let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); homescreen( &mut hs_img, &[text], @@ -348,9 +348,9 @@ impl Component for Lockscreen<'_> { if let Ok(data) = res { if is_image_jpeg(data.as_ref()) { - let mut input = BufferInput(data.as_ref()); + let input = BufferInput(data.as_ref()); let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(&mut input, pool.buffer.as_mut_slice()); + let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); homescreen_blurred(&mut hs_img, texts); show_default = false; } else if is_image_toif(data.as_ref()) { @@ -364,9 +364,9 @@ impl Component for Lockscreen<'_> { } if show_default { - let mut input = BufferInput(IMAGE_HOMESCREEN); + let input = BufferInput(IMAGE_HOMESCREEN); let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(&mut input, pool.buffer.as_mut_slice()); + let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); homescreen_blurred(&mut hs_img, texts); } } diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen/render.rs b/core/embed/rust/src/ui/model_tt/component/homescreen/render.rs index 458f5aa355..b50b5f28b6 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen/render.rs +++ b/core/embed/rust/src/ui/model_tt/component/homescreen/render.rs @@ -86,14 +86,16 @@ pub trait HomescreenDecompressor { pub struct HomescreenJpeg<'i> { pub output: BufferOutput, - pub jdec: Option<JDEC<'i, 'i>>, + pub input: BufferInput<'i>, + pub jdec: Option<JDEC<'i>>, } impl<'i> HomescreenJpeg<'i> { - pub fn new(input: &'i mut BufferInput<'i>, pool: &'i mut [u8]) -> Self { + pub fn new(mut input: BufferInput<'i>, pool: &'i mut [u8]) -> Self { Self { output: BufferOutput::new(WIDTH, 16), - jdec: JDEC::new(input, pool).ok(), + jdec: JDEC::new(&mut input, pool).ok(), + input, } } } @@ -107,7 +109,9 @@ impl<'i> HomescreenDecompressor for HomescreenJpeg<'i> { } fn decompress(&mut self) { - self.jdec.as_mut().map(|dec| dec.decomp(&mut self.output)); + self.jdec + .as_mut() + .map(|dec| dec.decomp(&mut self.input, &mut self.output)); } fn get_data(&mut self) -> &mut BufferJpeg { diff --git a/rust/trezor-tjpgdec/src/lib.rs b/rust/trezor-tjpgdec/src/lib.rs index 39a2c890e3..9333352e33 100644 --- a/rust/trezor-tjpgdec/src/lib.rs +++ b/rust/trezor-tjpgdec/src/lib.rs @@ -23,7 +23,8 @@ / Jul 01, 2021 R0.03 Added JD_FASTDECODE option. / Some performance improvement. / Jan 02, 2023 Rust version by Trezor Company, modified to meet our needs. - +/ May 14, 2024 Added better support for decompression resuming after an +/ output function interruption. Trezor modifications: - included overflow detection from https://github.com/cmumford/TJpgDec - removed JD_FASTDECODE=0 option @@ -31,6 +32,7 @@ Trezor modifications: - allowed interrupted functionality - tighter integration into Trezor codebase by using our data structures - removed generic input and output functions, replaced by our specific functionality + - added better support for decompression resuming after an output function interruption /----------------------------------------------------------------------------*/ #![no_std] @@ -85,7 +87,7 @@ pub enum Error { UnsupportedJpeg, } -pub struct JDEC<'i, 'p> { +pub struct JDEC<'p> { dctr: usize, dptr: usize, inbuf: &'p mut [u8], @@ -113,8 +115,9 @@ pub struct JDEC<'i, 'p> { hufflut_dc: [&'p mut [u8]; 2], workbuf: &'p mut [i32], mcubuf: &'p mut [i16], + mcu_x: u16, + mcu_y: u16, pool: &'p mut [u8], - input_func: &'i mut dyn JpegInput, } /// Zigzag-order to raster-order conversion table @@ -146,7 +149,7 @@ const IPSF: [u16; 64] = [ f!(0.27590), f!(0.38268), f!(0.36048), f!(0.32442), f!(0.27590), f!(0.21678), f!(0.14932), f!(0.07612), ]; -impl<'i, 'p> JDEC<'i, 'p> { +impl<'p> JDEC<'p> { /// Allocate a memory block from memory pool /// `self`: decompressor object reference /// `ndata` number of `T` items to allocate @@ -175,12 +178,12 @@ impl<'i, 'p> JDEC<'i, 'p> { } } - fn jpeg_in(&mut self, inbuf_offset: Option<usize>, n_data: usize) -> usize { + fn jpeg_in(&mut self, inbuf_offset: Option<usize>, n_data: usize, input_func: &mut dyn JpegInput) -> usize { if let Some(offset) = inbuf_offset { let inbuf = &mut self.inbuf[offset..offset + n_data]; - self.input_func.read(Some(inbuf), n_data) + input_func.read(Some(inbuf), n_data) } else { - self.input_func.read(None, n_data) + input_func.read(None, n_data) } } @@ -355,7 +358,7 @@ impl<'i, 'p> JDEC<'i, 'p> { /// `self`: decompressor object reference /// `id`: table ID (0:Y, 1:C) /// `cls`: table class (0:DC, 1:AC) - fn huffext(&mut self, id: usize, cls: usize) -> Result<i32, Error> { + fn huffext(&mut self, id: usize, cls: usize, input_func: &mut dyn JpegInput) -> Result<i32, Error> { let mut dc: usize = self.dctr; let mut dp: usize = self.dptr; let mut d: u32; @@ -373,7 +376,7 @@ impl<'i, 'p> JDEC<'i, 'p> { if dc == 0 { // Buffer empty, re-fill input buffer dp = 0; // Top of input buffer - dc = self.jpeg_in(Some(0), JD_SZBUF); + dc = self.jpeg_in(Some(0), JD_SZBUF, input_func); if dc == 0 { // Err: read error or wrong stream termination return Err(Error::Input); @@ -479,7 +482,7 @@ impl<'i, 'p> JDEC<'i, 'p> { /// Extract N bits from input stream /// `self`: decompressor object reference /// `nbit`: number of bits to extract (1 to 16) - fn bitext(&mut self, nbit: u32) -> Result<i32, Error> { + fn bitext(&mut self, nbit: u32, input_func: &mut dyn JpegInput) -> Result<i32, Error> { let mut dc: usize = self.dctr; let mut dp: usize = self.dptr; let mut d: u32; @@ -494,7 +497,7 @@ impl<'i, 'p> JDEC<'i, 'p> { if dc == 0 { // Buffer empty, re-fill input buffer dp = 0; // Top of input buffer - dc = self.jpeg_in(Some(0), JD_SZBUF); + dc = self.jpeg_in(Some(0), JD_SZBUF, input_func); if dc == 0 { // Err: read error or wrong stream termination return Err(Error::Input); @@ -531,7 +534,7 @@ impl<'i, 'p> JDEC<'i, 'p> { /// Process restart interval /// `self`: decompressor object reference /// `rstn`: expected restart sequence number - fn restart(&mut self, rstn: u16) -> Result<(), Error> { + fn restart(&mut self, rstn: u16, input_func: &mut dyn JpegInput) -> Result<(), Error> { let mut dp = self.dptr; let mut dc: usize = self.dctr; let mut marker: u16; @@ -546,7 +549,7 @@ impl<'i, 'p> JDEC<'i, 'p> { if dc == 0 { // No input data is available, re-fill input buffer dp = 0; - dc = self.jpeg_in(Some(0), JD_SZBUF); + dc = self.jpeg_in(Some(0), JD_SZBUF, input_func); if dc == 0 { return Err(Error::Input); } @@ -696,7 +699,7 @@ impl<'i, 'p> JDEC<'i, 'p> { /// Load all blocks in an MCU into working buffer /// `self`: decompressor object reference - fn mcu_load(&mut self) -> Result<(), Error> { + fn mcu_load(&mut self, input_func: &mut dyn JpegInput) -> Result<(), Error> { let mut d: i32; let mut e: i32; let mut blk: u32; @@ -720,12 +723,12 @@ impl<'i, 'p> JDEC<'i, 'p> { id = if cmp != 0 { 1 } else { 0 }; // Huffman table ID of this component // Extract a DC element from input stream - d = self.huffext(id as usize, 0)?; // Extract a huffman coded data (bit length) + d = self.huffext(id as usize, 0, input_func)?; // Extract a huffman coded data (bit length) bc = d as u32; d = self.dcv[cmp as usize] as i32; // DC value of previous block if bc != 0 { // If there is any difference from previous block - e = self.bitext(bc)?; // Extract data bits + e = self.bitext(bc, input_func)?; // Extract data bits bc = 1 << (bc - 1); // MSB position if e as u32 & bc == 0 { e -= ((bc << 1) - 1) as i32; // Restore negative value @@ -751,7 +754,7 @@ impl<'i, 'p> JDEC<'i, 'p> { z = 1; // Top of the AC elements (in zigzag-order) loop { // Extract a huffman coded value (zero runs and bit length) - d = self.huffext(id as usize, 1)?; + d = self.huffext(id as usize, 1, input_func)?; if d == 0 { // EOB? break; @@ -765,7 +768,7 @@ impl<'i, 'p> JDEC<'i, 'p> { bc &= 0xf; if bc != 0 { // Bit length? - d = self.bitext(bc)?; // Extract data bits + d = self.bitext(bc, input_func)?; // Extract data bits bc = 1 << (bc - 1); // MSB position if d as u32 & bc == 0 { // Restore negative value if needed @@ -1112,7 +1115,7 @@ impl<'i, 'p> JDEC<'i, 'p> { } /// Analyze the JPEG image and Initialize decompressor object - pub fn new(input_func: &'i mut dyn JpegInput, pool: &'p mut [u8]) -> Result<Self, Error> { + pub fn new(input_func: &mut dyn JpegInput, pool: &'p mut [u8]) -> Result<Self, Error> { let mut jd = JDEC { dctr: 0, dptr: 0, @@ -1142,7 +1145,8 @@ impl<'i, 'p> JDEC<'i, 'p> { ncomp: 0, nrst: 0, mcubuf: &mut [], - input_func, + mcu_x: 0, + mcu_y: 0, }; let mut marker: u16; @@ -1156,7 +1160,7 @@ impl<'i, 'p> JDEC<'i, 'p> { marker = 0; ofs = marker as u32; loop { - if jd.jpeg_in(Some(0), 1) != 1 { + if jd.jpeg_in(Some(0), 1, input_func) != 1 { // Err: SOI was not detected return Err(Error::Input); } @@ -1169,7 +1173,7 @@ impl<'i, 'p> JDEC<'i, 'p> { loop { // Parse JPEG segments // Get a JPEG marker - if jd.jpeg_in(Some(0), 4) != 4 { + if jd.jpeg_in(Some(0), 4, input_func) != 4 { return Err(Error::Input); } // Marker @@ -1189,7 +1193,7 @@ impl<'i, 'p> JDEC<'i, 'p> { return Err(Error::MemoryInput); } // Load segment data - if jd.jpeg_in(Some(0), len) != len { + if jd.jpeg_in(Some(0), len, input_func) != len { return Err(Error::Input); } // Image width in unit of pixel @@ -1235,7 +1239,7 @@ impl<'i, 'p> JDEC<'i, 'p> { return Err(Error::MemoryInput); } // Load segment data - if jd.jpeg_in(Some(0), len) != len { + if jd.jpeg_in(Some(0), len, input_func) != len { return Err(Error::Input); } // Get restart interval (MCUs) @@ -1247,7 +1251,7 @@ impl<'i, 'p> JDEC<'i, 'p> { return Err(Error::MemoryInput); } // Load segment data - if jd.jpeg_in(Some(0), len) != len { + if jd.jpeg_in(Some(0), len, input_func) != len { return Err(Error::Input); } // Create huffman tables @@ -1259,7 +1263,7 @@ impl<'i, 'p> JDEC<'i, 'p> { return Err(Error::MemoryInput); } // Load segment data - if jd.jpeg_in(Some(0), len) != len { + if jd.jpeg_in(Some(0), len, input_func) != len { return Err(Error::Input); } // Create de-quantizer tables @@ -1271,7 +1275,7 @@ impl<'i, 'p> JDEC<'i, 'p> { return Err(Error::MemoryInput); } // Load segment data - if jd.jpeg_in(Some(0), len) != len { + if jd.jpeg_in(Some(0), len, input_func) != len { return Err(Error::Input); } if jd.width == 0 || jd.height == 0 { @@ -1323,7 +1327,7 @@ impl<'i, 'p> JDEC<'i, 'p> { // Align stream read offset to JD_SZBUF ofs %= JD_SZBUF as u32; if ofs != 0 { - jd.dctr = jd.jpeg_in(Some(ofs as usize), (JD_SZBUF as u32 - ofs) as usize); + jd.dctr = jd.jpeg_in(Some(ofs as usize), (JD_SZBUF as u32 - ofs) as usize, input_func); } jd.dptr = (ofs - (if JD_FASTDECODE != 0 { 0 } else { 1 })) as usize; return Ok(jd); // Initialization succeeded. Ready to @@ -1338,7 +1342,7 @@ impl<'i, 'p> JDEC<'i, 'p> { _ => { // Unknown segment (comment, exif or etc..) // Skip segment data (null pointer specifies to remove data from the stream) - if jd.jpeg_in(None, len) != len { + if jd.jpeg_in(None, len, input_func) != len { return Err(Error::Input); } } @@ -1346,38 +1350,55 @@ impl<'i, 'p> JDEC<'i, 'p> { } } - /// Start to decompress the JPEG picture - /// `scale`: output de-scaling factor (0 to 3) - pub fn decomp(&mut self, output_func: &mut dyn JpegOutput) -> Result<(), Error> { - let mx = (self.msx as i32 * 8) as u32; // Size of the MCU (pixel) - let my = (self.msy as i32 * 8) as u32; // Size of the MCU (pixel) - let mut y = 0; - while y < self.height as u32 { - // Vertical loop of MCUs - let mut x = 0; - while x < self.width as u32 { - // Horizontal loop of MCUs - if self.nrst != 0 && { - // Process restart interval if enabled - let val = self.rst; - self.rst += 1; - val == self.nrst - } { - let val = self.rsc; - self.rsc += 1; - self.restart(val)?; - self.rst = 1; - } - // Load an MCU (decompress huffman coded stream, dequantize and apply IDCT) - self.mcu_load()?; - // Output the MCU (YCbCr to RGB, scaling and output) - self.mcu_output(x, y, output_func)?; - x += mx; + /// Start/resume JPEG decompression + /// + /// The function decompress the JPEG image in stream and calls + /// the output function for each decoded MCU. + /// + /// If the output function returns `false`, the decompression is interrupted. + /// It's possible later to call `decomp()` again to resume the decompression. + pub fn decomp(&mut self, input_func: &mut dyn JpegInput, output_func: &mut dyn JpegOutput) -> Result<(), Error> { + let mx = self.msx as u16 * 8; // Size of the MCU (pixel) + let my = self.msy as u16 * 8; // Size of the MCU (pixel) + while self.mcu_y < self.height { + if self.nrst != 0 && { + // Process restart interval if enabled + let val = self.rst; + self.rst += 1; + val == self.nrst + } { + let val = self.rsc; + self.rsc += 1; + self.restart(val, input_func)?; + self.rst = 1; + } + + // Load an MCU (decompress huffman coded stream, dequantize and apply IDCT) + self.mcu_load(input_func)?; + + let x = self.mcu_x as u32; + let y = self.mcu_y as u32; + + self.mcu_x += mx; + if self.mcu_x >= self.width { + self.mcu_x = 0; + self.mcu_y += my; } - y += my; + + // Output the MCU (YCbCr to RGB, scaling and output) + self.mcu_output(x, y, output_func)?; } Ok(()) } + + /// Returns pixel coordinates (top-left) of the next decoded MCU + /// + /// The function is useful when the decompression is interrupted + /// and later resumed by `decomp()`. + pub fn next_mcu(&self) -> (u16, u16) { + (self.mcu_x, self.mcu_y) + } + } pub trait JpegInput { From 3336e3902fbfdde1cfd5af1d213579ab2397055e Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Tue, 16 Apr 2024 15:52:17 +0200 Subject: [PATCH 054/626] feat(core): introduce new display drivers [no changelog] --- core/Makefile | 25 +- core/SConscript.boardloader | 20 +- core/SConscript.bootloader | 23 +- core/SConscript.bootloader_ci | 3 +- core/SConscript.bootloader_emu | 67 +- core/SConscript.firmware | 27 +- core/SConscript.prodtest | 2 +- core/SConscript.reflash | 2 +- core/SConscript.unix | 61 +- core/embed/boardloader/main.c | 2 + core/embed/bootloader/bootui.c | 3 + core/embed/bootloader/emulator.c | 5 +- core/embed/bootloader/main.c | 1 - core/embed/bootloader/memory_stm32f4.ld | 2 + core/embed/bootloader/memory_stm32u58.ld | 2 + core/embed/bootloader/memory_stm32u5a.ld | 2 + core/embed/bootloader_ci/bootui.c | 1 + core/embed/bootloader_ci/main.c | 1 + core/embed/bootloader_ci/memory_stm32f4.ld | 6 + .../extmod/modtrezorui/modtrezorui-display.h | 6 + core/embed/firmware/memory_DISC2.ld | 2 + core/embed/firmware/memory_T.ld | 5 + core/embed/lib/{display.c => display_draw.c} | 8 +- core/embed/lib/{display.h => display_draw.h} | 5 +- core/embed/lib/dma2d_emul.c | 2 +- core/embed/lib/gfx_bitblt.h | 120 ++ core/embed/lib/gfx_bitblt_mono8.c | 110 ++ core/embed/lib/gfx_bitblt_rgb565.c | 136 ++ core/embed/lib/gfx_bitblt_rgba8888.c | 156 ++ core/embed/lib/gfx_color.c | 49 + core/embed/lib/gfx_color.h | 345 ++++ core/embed/lib/gfx_draw.c | 276 +++ core/embed/lib/gfx_draw.h | 153 ++ core/embed/lib/terminal.c | 66 +- core/embed/lib/terminal.h | 2 - core/embed/prodtest/main.c | 1 + core/embed/reflash/main.c | 1 + core/embed/rust/Cargo.toml | 8 + core/embed/rust/trezorhal.h | 5 +- .../embed/trezorhal/boards/stm32f429i-disc1.h | 6 +- core/embed/trezorhal/boards/stm32u5a9j-dk.h | 6 +- core/embed/trezorhal/boards/trezor_1.h | 3 +- core/embed/trezorhal/boards/trezor_r_v10.h | 4 +- core/embed/trezorhal/boards/trezor_r_v3.h | 4 +- core/embed/trezorhal/boards/trezor_r_v4.h | 4 +- core/embed/trezorhal/boards/trezor_r_v6.h | 4 +- core/embed/trezorhal/boards/trezor_t.h | 11 +- .../embed/trezorhal/boards/trezor_t3t1_revE.h | 14 +- core/embed/trezorhal/boards/trezor_t3t1_v4.h | 14 +- .../display.h} | 16 +- core/embed/trezorhal/dma2d_bitblt.h | 45 + core/embed/trezorhal/stm32f4/common.c | 4 + core/embed/trezorhal/stm32f4/displays/ltdc.c | 20 +- core/embed/trezorhal/stm32f4/displays/ltdc.h | 4 +- .../stm32f4/displays/panels/lx154a2422.c | 2 +- .../stm32f4/displays/panels/tf15411a.c | 2 +- .../trezorhal/stm32f4/displays/st7789v.c | 8 +- .../stm32f4/displays/ug-2828tswig01.c | 2 +- .../stm32f4/displays/vg-2864ksweg01.c | 2 +- core/embed/trezorhal/stm32f4/dma2d.c | 2 +- core/embed/trezorhal/stm32f4/dma2d_bitblt.c | 599 +++++++ core/embed/trezorhal/stm32f4/secret.c | 2 +- core/embed/trezorhal/stm32f4/touch/ft6x36.c | 4 +- .../stm32f4/xdisplay/st-7789/display_driver.c | 149 ++ .../stm32f4/xdisplay/st-7789/display_fb.c | 218 +++ .../stm32f4/xdisplay/st-7789/display_fb.h | 32 + .../stm32f4/xdisplay/st-7789/display_io.c | 145 ++ .../stm32f4/xdisplay/st-7789/display_io.h | 67 + .../stm32f4/xdisplay/st-7789/display_nofb.c | 104 ++ .../stm32f4/xdisplay/st-7789/display_panel.c | 244 +++ .../stm32f4/xdisplay/st-7789/display_panel.h | 57 + .../stm32f4/xdisplay/st-7789/panels/154a.c | 132 ++ .../stm32f4/xdisplay/st-7789/panels/154a.h | 27 + .../xdisplay/st-7789/panels/lx154a2411.c | 82 + .../xdisplay/st-7789/panels/lx154a2411.h | 27 + .../xdisplay/st-7789/panels/lx154a2422.c | 159 ++ .../xdisplay/st-7789/panels/lx154a2422.h | 29 + .../xdisplay/st-7789/panels/tf15411a.c | 174 ++ .../xdisplay/st-7789/panels/tf15411a.h | 30 + .../stm32f429i-disc1/display_driver.c | 154 ++ .../stm32f429i-disc1/display_internal.h | 36 + .../xdisplay/stm32f429i-disc1/display_ltdc.c | 291 +++ .../xdisplay/stm32f429i-disc1/ili9341_spi.c | 512 ++++++ .../xdisplay/stm32f429i-disc1/ili9341_spi.h | 13 + .../stm32f4/xdisplay/ug-2828/display_driver.c | 398 +++++ .../stm32f4/xdisplay/vg-2864/display_driver.c | 379 ++++ core/embed/trezorhal/stm32u5/displays/dsi.h | 4 - core/embed/trezorhal/stm32u5/dma2d_bitblt.c | 1 + core/embed/trezorhal/stm32u5/xdisplay/st-7789 | 1 + .../xdisplay/stm32u5a9j-dk/display_driver.c | 155 ++ .../xdisplay/stm32u5a9j-dk/display_fb.c | 77 + .../stm32u5a9j-dk/display_gfxmmu_lut.h | 1006 +++++++++++ .../xdisplay/stm32u5a9j-dk/display_internal.h | 58 + .../xdisplay/stm32u5a9j-dk/display_ltdc_dsi.c | 1562 +++++++++++++++++ core/embed/trezorhal/stm32u5/xdisplay/vg-2864 | 1 + core/embed/trezorhal/unix/display-unix.c | 4 +- core/embed/trezorhal/unix/display_driver.c | 461 +++++ core/embed/trezorhal/unix/dma2d_bitblt.c | 22 + core/embed/trezorhal/xdisplay.h | 156 ++ core/embed/trezorhal/xdisplay_legacy.c | 43 + core/embed/trezorhal/xdisplay_legacy.h | 56 + core/embed/unix/main.c | 3 + core/site_scons/boards/discovery.py | 20 +- core/site_scons/boards/discovery2.py | 22 +- core/site_scons/boards/trezor_r_v10.py | 12 +- core/site_scons/boards/trezor_r_v3.py | 12 +- core/site_scons/boards/trezor_r_v4.py | 12 +- core/site_scons/boards/trezor_r_v6.py | 12 +- core/site_scons/boards/trezor_t.py | 51 +- core/site_scons/boards/trezor_t3t1_revE.py | 26 +- core/site_scons/boards/trezor_t3t1_v4.py | 26 +- 111 files changed, 9612 insertions(+), 143 deletions(-) rename core/embed/lib/{display.c => display_draw.c} (98%) rename core/embed/lib/{display.h => display_draw.h} (95%) create mode 100644 core/embed/lib/gfx_bitblt.h create mode 100644 core/embed/lib/gfx_bitblt_mono8.c create mode 100644 core/embed/lib/gfx_bitblt_rgb565.c create mode 100644 core/embed/lib/gfx_bitblt_rgba8888.c create mode 100644 core/embed/lib/gfx_color.c create mode 100644 core/embed/lib/gfx_color.h create mode 100644 core/embed/lib/gfx_draw.c create mode 100644 core/embed/lib/gfx_draw.h rename core/embed/{lib/display_interface.h => trezorhal/display.h} (89%) create mode 100644 core/embed/trezorhal/dma2d_bitblt.h create mode 100644 core/embed/trezorhal/stm32f4/dma2d_bitblt.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_driver.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_internal.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_ltdc.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.h create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/ug-2828/display_driver.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/vg-2864/display_driver.c create mode 120000 core/embed/trezorhal/stm32u5/dma2d_bitblt.c create mode 120000 core/embed/trezorhal/stm32u5/xdisplay/st-7789 create mode 100644 core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_driver.c create mode 100644 core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_fb.c create mode 100644 core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_gfxmmu_lut.h create mode 100644 core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_internal.h create mode 100644 core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_ltdc_dsi.c create mode 120000 core/embed/trezorhal/stm32u5/xdisplay/vg-2864 create mode 100644 core/embed/trezorhal/unix/display_driver.c create mode 100644 core/embed/trezorhal/unix/dma2d_bitblt.c create mode 100644 core/embed/trezorhal/xdisplay.h create mode 100644 core/embed/trezorhal/xdisplay_legacy.c create mode 100644 core/embed/trezorhal/xdisplay_legacy.h diff --git a/core/Makefile b/core/Makefile index 9b5a32426e..f591634a85 100644 --- a/core/Makefile +++ b/core/Makefile @@ -242,18 +242,25 @@ build_embed: build_boardloader build_bootloader build_firmware # build boardload build_boardloader: ## build boardloader $(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" \ - CMAKELISTS="$(CMAKELISTS)" $(BOARDLOADER_BUILD_DIR)/boardloader.bin + CMAKELISTS="$(CMAKELISTS)" NEW_RENDERING="$(NEW_RENDERING)" $(BOARDLOADER_BUILD_DIR)/boardloader.bin build_bootloader: ## build bootloader $(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" \ - CMAKELISTS="$(CMAKELISTS)" BOOTLOADER_QA="$(BOOTLOADER_QA)" BOOTLOADER_DEVEL="$(BOOTLOADER_DEVEL)" $(BOOTLOADER_BUILD_DIR)/bootloader.bin + CMAKELISTS="$(CMAKELISTS)" BOOTLOADER_QA="$(BOOTLOADER_QA)" BOOTLOADER_DEVEL="$(BOOTLOADER_DEVEL)" \ + NEW_RENDERING="$(NEW_RENDERING)" $(BOOTLOADER_BUILD_DIR)/bootloader.bin build_bootloader_ci: ## build CI device testing bootloader $(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" \ CMAKELISTS="$(CMAKELISTS)" $(BOOTLOADER_CI_BUILD_DIR)/bootloader.bin build_bootloader_emu: ## build the unix bootloader emulator - $(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" $(BOOTLOADER_EMU_BUILD_DIR)/bootloader.elf + $(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" \ + CMAKELISTS="$(CMAKELISTS)" NEW_RENDERING="$(NEW_RENDERING)" $(BOOTLOADER_EMU_BUILD_DIR)/bootloader.elf + +build_bootloader_emu_debug: ## build the unix bootloader emulator + $(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" \ + CMAKELISTS="$(CMAKELISTS)" NEW_RENDERING="$(NEW_RENDERING)" TREZOR_EMULATOR_DEBUGGABLE=1 \ + $(BOOTLOADER_EMU_BUILD_DIR)/bootloader.elf build_prodtest: ## build production test firmware $(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" \ @@ -261,7 +268,7 @@ build_prodtest: ## build production test firmware build_reflash: ## build reflash firmware + reflash image $(SCONS) CFLAGS="$(CFLAGS)" PRODUCTION="$(PRODUCTION)" TREZOR_MODEL="$(TREZOR_MODEL)" \ - CMAKELISTS="$(CMAKELISTS)" $(REFLASH_BUILD_DIR)/reflash.bin + CMAKELISTS="$(CMAKELISTS)" NEW_RENDERING="$(NEW_RENDERING)" $(REFLASH_BUILD_DIR)/reflash.bin dd if=build/boardloader/boardloader.bin of=$(REFLASH_BUILD_DIR)/sdimage.bin bs=1 seek=0 dd if=build/bootloader/bootloader.bin of=$(REFLASH_BUILD_DIR)/sdimage.bin bs=1 seek=49152 @@ -270,24 +277,26 @@ build_firmware: templates build_cross ## build firmware with frozen modules TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" \ PYOPT="$(PYOPT)" BITCOIN_ONLY="$(BITCOIN_ONLY)" \ BOOTLOADER_QA="$(BOOTLOADER_QA)" BOOTLOADER_DEVEL="$(BOOTLOADER_DEVEL)" \ - DISABLE_OPTIGA="$(DISABLE_OPTIGA)" THP="$(THP)" \ + DISABLE_OPTIGA="$(DISABLE_OPTIGA)" THP="$(THP)" NEW_RENDERING="$(NEW_RENDERING)" \ $(FIRMWARE_BUILD_DIR)/firmware.bin build_unix: templates ## build unix port $(SCONS) CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/trezor-emu-core $(UNIX_PORT_OPTS) \ TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" THP="$(THP)" \ - PYOPT="0" BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN="$(ADDRESS_SANITIZER)" + PYOPT="0" BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN="$(ADDRESS_SANITIZER)" \ + NEW_RENDERING="$(NEW_RENDERING)" build_unix_frozen: templates build_cross ## build unix port with frozen modules $(SCONS) CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/trezor-emu-core $(UNIX_PORT_OPTS) \ TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" \ PYOPT="$(PYOPT)" BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN="$(ADDRESS_SANITIZER)" \ - TREZOR_MEMPERF="$(TREZOR_MEMPERF)" TREZOR_EMULATOR_FROZEN=1 + TREZOR_MEMPERF="$(TREZOR_MEMPERF)" TREZOR_EMULATOR_FROZEN=1 NEW_RENDERING="$(NEW_RENDERING)" build_unix_debug: templates ## build unix port $(SCONS) --max-drift=1 CFLAGS="$(CFLAGS)" $(UNIX_BUILD_DIR)/trezor-emu-core $(UNIX_PORT_OPTS) \ TREZOR_MODEL="$(TREZOR_MODEL)" CMAKELISTS="$(CMAKELISTS)" \ - BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN=1 TREZOR_EMULATOR_DEBUGGABLE=1 + BITCOIN_ONLY="$(BITCOIN_ONLY)" TREZOR_EMULATOR_ASAN=1 TREZOR_EMULATOR_DEBUGGABLE=1 \ + NEW_RENDERING="$(NEW_RENDERING)" build_cross: ## build mpy-cross port $(MAKE) -C vendor/micropython/mpy-cross $(CROSS_PORT_OPTS) diff --git a/core/SConscript.boardloader b/core/SConscript.boardloader index eafb66910a..e5d898cd63 100644 --- a/core/SConscript.boardloader +++ b/core/SConscript.boardloader @@ -5,6 +5,7 @@ import tools TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' if TREZOR_MODEL in ('1', ): # skip boardloader build @@ -20,6 +21,9 @@ if TREZOR_MODEL in ('1', ): FEATURES_WANTED = ["sd_card"] +if NEW_RENDERING: + FEATURES_WANTED.append("new_rendering") + CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = ["BOARDLOADER"] @@ -63,13 +67,27 @@ CPPPATH_MOD += [ SOURCE_MOD += [ 'embed/lib/colors.c', 'embed/lib/display_utils.c', - 'embed/lib/display.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', + 'embed/lib/gfx_color.c', + 'embed/lib/gfx_bitblt_rgb565.c', + 'embed/lib/gfx_bitblt_rgba8888.c', + 'embed/lib/gfx_bitblt_mono8.c', 'embed/lib/image.c', 'embed/lib/mini_printf.c', 'embed/lib/terminal.c', ] +if NEW_RENDERING: + CPPDEFINES_MOD += ['NEW_RENDERING'] + SOURCE_MOD += [ + 'embed/lib/gfx_draw.c', + ] +else: + SOURCE_MOD += [ + 'embed/lib/display_draw.c', + ] + + env = Environment(ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')), diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 567424b8b2..811c660e3a 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -7,6 +7,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) BOOTLOADER_QA = ARGUMENTS.get('BOOTLOADER_QA', '0') == '1' PRODUCTION = 0 if BOOTLOADER_QA else ARGUMENTS.get('PRODUCTION', '0') == '1' +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' if TREZOR_MODEL in ('1', ): # skip bootloader build @@ -22,6 +23,9 @@ if TREZOR_MODEL in ('1', ): FEATURES_WANTED = ["input", "rgb_led", "consumption_mask", "usb", "optiga", "dma2d"] +if NEW_RENDERING: + FEATURES_WANTED.append("new_rendering") + CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = [] @@ -99,9 +103,12 @@ SOURCE_MOD += [ 'embed/lib/buffers.c', 'embed/lib/colors.c', 'embed/lib/display_utils.c', - 'embed/lib/display.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', + 'embed/lib/gfx_color.c', + 'embed/lib/gfx_bitblt_mono8.c', + 'embed/lib/gfx_bitblt_rgb565.c', + 'embed/lib/gfx_bitblt_rgba8888.c', 'embed/lib/image.c', 'embed/lib/mini_printf.c', 'embed/lib/terminal.c', @@ -111,6 +118,17 @@ SOURCE_MOD += [ 'vendor/micropython/lib/uzlib/tinflate.c', ] +if NEW_RENDERING: + CPPDEFINES_MOD += ['NEW_RENDERING'] + SOURCE_MOD += [ + 'embed/lib/gfx_draw.c', + ] +else: + SOURCE_MOD += [ + 'embed/lib/display_draw.c', + ] + + SOURCE_NANOPB = [ 'vendor/nanopb/pb_common.c', 'vendor/nanopb/pb_decode.c', @@ -241,6 +259,9 @@ def cargo_build(): features.append("bootloader") features.extend(FEATURES_AVAILABLE) + if NEW_RENDERING: + features.append('new_rendering') + cargo_opts = [ f'--target={env.get("ENV")["RUST_TARGET"]}', f'--target-dir=../../build/bootloader/rust', diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index e042a0a1eb..7e962e72cc 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -5,6 +5,7 @@ import tools TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' if TREZOR_MODEL in ('1', 'DISC1', 'DISC2'): # skip bootloader_ci build @@ -91,8 +92,8 @@ CPPPATH_MOD += [ SOURCE_MOD += [ 'embed/extmod/modtrezorcrypto/rand.c', 'embed/lib/colors.c', + 'embed/lib/display_draw.c', 'embed/lib/display_utils.c', - 'embed/lib/display.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/image.c', diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index d915d5df28..6e23f25271 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -6,6 +6,7 @@ import boards TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' DMA2D = False if TREZOR_MODEL in ('1', 'DISC1'): @@ -22,6 +23,9 @@ if TREZOR_MODEL in ('1', 'DISC1'): FEATURES_WANTED = ["input", "rgb_led", "dma2d"] +if NEW_RENDERING: + FEATURES_WANTED.append("new_rendering") + CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = [] @@ -94,10 +98,12 @@ SOURCE_MOD += [ 'embed/lib/buffers.c', 'embed/lib/colors.c', 'embed/lib/display_utils.c', - 'embed/lib/display.c', - 'embed/lib/dma2d_emul.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', + 'embed/lib/gfx_color.c', + 'embed/lib/gfx_bitblt_mono8.c', + 'embed/lib/gfx_bitblt_rgb565.c', + 'embed/lib/gfx_bitblt_rgba8888.c', 'embed/lib/image.c', 'embed/lib/terminal.c', 'embed/lib/touch.c', @@ -108,6 +114,23 @@ SOURCE_MOD += [ 'vendor/trezor-storage/flash_area.c', ] +if NEW_RENDERING: + CPPDEFINES_MOD += ['NEW_RENDERING'] + if TREZOR_MODEL in ('T',): + CPPDEFINES_MOD += ['DISPLAY_RGB565'] + elif TREZOR_MODEL in ('R', '1',): + CPPDEFINES_MOD += ['XFRAMEBUFFER', 'DISPLAY_MONO'] + elif TREZOR_MODEL in ('T3T1',): + CPPDEFINES_MOD += ['XFRAMEBUFFER', 'DISPLAY_RGB565'] + SOURCE_MOD += [ + 'embed/lib/gfx_draw.c', + ] +else: + SOURCE_MOD += [ + 'embed/lib/display_draw.c', + 'embed/lib/dma2d_emul.c', +] + if TREZOR_MODEL in ('1', ): SOURCE_MOD += [ 'embed/models/model_T1B1_layout.c', @@ -142,7 +165,6 @@ SOURCE_BOOTLOADER = [ SOURCE_TREZORHAL = [ 'embed/trezorhal/unix/boot_args.c', - 'embed/trezorhal/unix/display-unix.c', 'embed/trezorhal/unix/fault_handlers.c', 'embed/trezorhal/unix/flash.c', 'embed/trezorhal/unix/flash_otp.c', @@ -154,6 +176,17 @@ SOURCE_TREZORHAL = [ 'embed/trezorhal/unix/secret.c', ] +if NEW_RENDERING: + SOURCE_TREZORHAL += [ + 'embed/trezorhal/unix/display_driver.c', + 'embed/trezorhal/unix/dma2d_bitblt.c', + 'embed/trezorhal/xdisplay_legacy.c', + ] +else: + SOURCE_TREZORHAL += [ + 'embed/trezorhal/unix/display-unix.c', + ] + if TREZOR_MODEL in ('R', 'T3T1'): SOURCE_TREZORHAL += [ 'embed/trezorhal/unix/optiga_hal.c', @@ -270,17 +303,18 @@ cmake_gen = env.Command( # RUST_TARGET = 'x86_64-unknown-linux-gnu' -RUST_PROFILE = 'release' RUST_LIB = 'trezor_lib' -RUST_LIBDIR = f'build/bootloader_emu/rust/{RUST_TARGET}/{RUST_PROFILE}' + +if ARGUMENTS.get('TREZOR_EMULATOR_DEBUGGABLE', '0') == '1': + RUST_PROFILE = 'dev' + RUST_LIBDIR = f'build/bootloader_emu/rust/{RUST_TARGET}/debug' +else: + RUST_PROFILE = 'release' + RUST_LIBDIR = f'build/bootloader_emu/rust/{RUST_TARGET}/release' + RUST_LIBPATH = f'{RUST_LIBDIR}/lib{RUST_LIB}.a' def cargo_build(): - # Determine the profile build flags. - if RUST_PROFILE == 'release': - profile = '--release' - else: - profile = '' if TREZOR_MODEL in ("1",): features = ["model_t1"] elif TREZOR_MODEL in ("R",): @@ -290,6 +324,17 @@ def cargo_build(): else: features = ["model_tt"] + if NEW_RENDERING: + features.append('new_rendering') + if TREZOR_MODEL in ('T',): + features.append('display_rgb565') + elif TREZOR_MODEL in ('R', '1',): + features.append('display_mono') + features.append('xframebuffer') + elif TREZOR_MODEL in ('T3T1',): + features.append('display_rgb565') + features.append('xframebuffer') + if TREZOR_MODEL in ('T', 'T3T1'): features.append('touch') features.append('backlight') @@ -312,7 +357,7 @@ def cargo_build(): bindgen_macros = tools.get_bindgen_defines(env.get("CPPDEFINES"), ALLPATHS) - return f'export BINDGEN_MACROS=\'{bindgen_macros}\'; cd embed/rust; cargo build {profile} ' + ' '.join(cargo_opts) + return f'export BINDGEN_MACROS=\'{bindgen_macros}\'; cd embed/rust; cargo build --profile {RUST_PROFILE} ' + ' '.join(cargo_opts) rust = env.Command( target=RUST_LIBPATH, diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 196b0c2c02..e47842a999 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -14,6 +14,7 @@ CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) PYOPT = ARGUMENTS.get('PYOPT', '1') DISABLE_OPTIGA = ARGUMENTS.get('DISABLE_OPTIGA', '0') == '1' THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' FEATURE_FLAGS = { @@ -26,6 +27,8 @@ FEATURE_FLAGS = { FEATURES_WANTED = ["input", "sbu", "sd_card", "rgb_led", "dma2d", "consumption_mask", "usb" ,"optiga", "haptic"] if DISABLE_OPTIGA and PYOPT == '0': FEATURES_WANTED.remove("optiga") +if NEW_RENDERING: + FEATURES_WANTED.append("new_rendering") CCFLAGS_MOD = '' CPPPATH_MOD = [] @@ -211,9 +214,12 @@ SOURCE_MOD += [ 'embed/lib/buffers.c', 'embed/lib/colors.c', 'embed/lib/display_utils.c', - 'embed/lib/display.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', + 'embed/lib/gfx_color.c', + 'embed/lib/gfx_bitblt_rgb565.c', + 'embed/lib/gfx_bitblt_rgba8888.c', + 'embed/lib/gfx_bitblt_mono8.c', 'embed/lib/image.c', 'embed/lib/mini_printf.c', 'embed/lib/terminal.c', @@ -224,6 +230,17 @@ SOURCE_MOD += [ 'vendor/micropython/lib/uzlib/tinflate.c', ] +if NEW_RENDERING: + CPPDEFINES_MOD += ['NEW_RENDERING'] + SOURCE_MOD += [ + 'embed/lib/gfx_draw.c', + ] +else: + SOURCE_MOD += [ + 'embed/lib/display_draw.c', + ] + + CPPDEFINES_MOD += [ 'TREZOR_UI2', 'TRANSLATIONS', @@ -792,8 +809,16 @@ def cargo_build(): features.append('universal_fw') features.append('ui') features.append('translations') + + if NEW_RENDERING: + features.append('new_rendering') + if PYOPT == '0': features.append('debug') + features.append('ui_debug') + if TREZOR_MODEL in ('T', 'T3T1', 'DISC1', 'DISC2'): + features.append('ui_blurring') + features.append('ui_jpeg_decoder') features.extend(FEATURES_AVAILABLE) diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 5ca7c58fca..a12714e873 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -88,8 +88,8 @@ CPPPATH_MOD += [ SOURCE_MOD += [ 'embed/lib/colors.c', + 'embed/lib/display_draw.c', 'embed/lib/display_utils.c', - 'embed/lib/display.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/image.c', diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 6dfdef1d7a..5312e6d1fc 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -60,8 +60,8 @@ CPPPATH_MOD += [ ] SOURCE_MOD += [ 'embed/lib/colors.c', + 'embed/lib/display_draw.c', 'embed/lib/display_utils.c', - 'embed/lib/display.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/image.c', diff --git a/core/SConscript.unix b/core/SConscript.unix index 9c69edc877..c2dfe80497 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -11,6 +11,7 @@ DMA2D = TREZOR_MODEL in ('T', 'T3T1') OPTIGA = TREZOR_MODEL in ('R', 'T3T1') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' if TREZOR_MODEL in ('DISC1', 'DISC2'): # skip unix build @@ -219,9 +220,12 @@ SOURCE_MOD += [ 'embed/lib/buffers.c', 'embed/lib/colors.c', 'embed/lib/display_utils.c', - 'embed/lib/display.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', + 'embed/lib/gfx_color.c', + 'embed/lib/gfx_bitblt_rgb565.c', + 'embed/lib/gfx_bitblt_rgba8888.c', + 'embed/lib/gfx_bitblt_mono8.c', 'embed/lib/image.c', 'embed/lib/terminal.c', 'embed/lib/translations.c', @@ -231,6 +235,16 @@ SOURCE_MOD += [ 'vendor/micropython/lib/uzlib/tinflate.c', ] +if NEW_RENDERING: + SOURCE_MOD += [ + 'embed/lib/gfx_draw.c', + ] +else: + SOURCE_MOD += [ + 'embed/lib/display_draw.c', + ] + + if TREZOR_MODEL in ('1', ): SOURCE_MOD += [ 'embed/models/model_T1B1_layout.c', @@ -264,6 +278,17 @@ if FROZEN: if RASPI: CPPDEFINES_MOD += ['TREZOR_EMULATOR_RASPI'] +if NEW_RENDERING: + CPPDEFINES_MOD += ['NEW_RENDERING'] + if TREZOR_MODEL in ('T',): + CPPDEFINES_MOD += ['DISPLAY_RGB565'] + elif TREZOR_MODEL in ('R', '1',): + CPPDEFINES_MOD += ['XFRAMEBUFFER', 'DISPLAY_MONO'] + elif TREZOR_MODEL in ('T3T1',): + CPPDEFINES_MOD += ['XFRAMEBUFFER', 'DISPLAY_RGB565'] + + + # modtrezorutils SOURCE_MOD += [ 'embed/extmod/modtrezorutils/modtrezorutils.c', @@ -408,7 +433,6 @@ SOURCE_MICROPYTHON = [ SOURCE_UNIX = [ 'embed/trezorhal/unix/boot_args.c', 'embed/trezorhal/unix/common.c', - 'embed/trezorhal/unix/display-unix.c', 'embed/trezorhal/unix/flash.c', 'embed/trezorhal/unix/flash_otp.c', 'embed/trezorhal/unix/random_delays.c', @@ -424,6 +448,20 @@ SOURCE_UNIX = [ 'vendor/micropython/ports/unix/input.c', 'vendor/micropython/ports/unix/unix_mphal.c', ] + +if NEW_RENDERING: + SOURCE_MOD += [ + 'embed/trezorhal/unix/display_driver.c', + 'embed/trezorhal/unix/dma2d_bitblt.c', + 'embed/trezorhal/xdisplay_legacy.c', + ] +else: + SOURCE_MOD += [ + 'embed/trezorhal/unix/display-unix.c', + 'embed/lib/dma2d_emul.c', + ] + + if TREZOR_MODEL in ('T', 'R', 'T3T1'): SOURCE_UNIX += [ 'embed/trezorhal/unix/sbu.c', @@ -438,9 +476,6 @@ if DMA2D: CPPDEFINES_MOD += [ 'USE_DMA2D', ] - SOURCE_UNIX += [ - 'embed/lib/dma2d_emul.c', - ] TRANSLATION_DATA = [ @@ -878,6 +913,7 @@ def cargo_build(): features.append('universal_fw') features.append('ui') features.append('translations') + if PYOPT == '0': features.append('debug') if DMA2D: @@ -886,9 +922,24 @@ def cargo_build(): if TREZOR_MODEL in ('T', 'T3T1'): features.append('touch') features.append('sd_card') + features.append('ui_blurring') + features.append('ui_jpeg_decoder') if TREZOR_MODEL in ('R', '1'): features.append('button') + if NEW_RENDERING: + features.append('new_rendering') + if TREZOR_MODEL in ('T',): + features.append('display_rgb565') + elif TREZOR_MODEL in ('R', '1',): + features.append('display_mono') + features.append('xframebuffer') + elif TREZOR_MODEL in ('T3T1',): + features.append('display_rgb565') + features.append('xframebuffer') + + env.get('ENV')['TREZOR_MODEL'] = TREZOR_MODEL + bindgen_macros = tools.get_bindgen_defines(env.get("CPPDEFINES"), ALLPATHS) return f'export BINDGEN_MACROS=\'{bindgen_macros}\'; cd embed/rust; cargo build --profile {RUST_PROFILE} --target-dir=../../build/unix/rust --no-default-features --features "{" ".join(features)}" --target {TARGET}' diff --git a/core/embed/boardloader/main.c b/core/embed/boardloader/main.c index d5dedfe026..6da1c2d8ee 100644 --- a/core/embed/boardloader/main.c +++ b/core/embed/boardloader/main.c @@ -21,9 +21,11 @@ #include TREZOR_BOARD #include "board_capabilities.h" +#include "buffers.h" #include "common.h" #include "compiler_traits.h" #include "display.h" +#include "display_draw.h" #include "fault_handlers.h" #include "flash.h" #include "image.h" diff --git a/core/embed/bootloader/bootui.c b/core/embed/bootloader/bootui.c index ae5937073f..b74d57cc51 100644 --- a/core/embed/bootloader/bootui.c +++ b/core/embed/bootloader/bootui.c @@ -22,8 +22,11 @@ #include TREZOR_BOARD #include "bootui.h" +#include "colors.h" #include "display.h" +#include "display_draw.h" #include "display_utils.h" +#include "fonts/fonts.h" #ifdef TREZOR_EMULATOR #include "emulator.h" #else diff --git a/core/embed/bootloader/emulator.c b/core/embed/bootloader/emulator.c index 1ad001af1f..5b36e1fe93 100644 --- a/core/embed/bootloader/emulator.c +++ b/core/embed/bootloader/emulator.c @@ -110,6 +110,7 @@ __attribute__((noreturn)) void display_error_and_die(const char *message, } __attribute__((noreturn)) int main(int argc, char **argv) { + display_init(); flash_init(); flash_otp_init(); @@ -187,10 +188,6 @@ __attribute__((noreturn)) int main(int argc, char **argv) { jump_to(NULL); } -void display_set_little_endian(void) {} - -void display_reinit(void) {} - void mpu_config_bootloader(void) {} void mpu_config_off(void) {} diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 999edaca9a..c3cc57fa1b 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -72,7 +72,6 @@ #include "emulator.h" #else #include "compiler_traits.h" -#include "mini_printf.h" #include "mpu.h" #include "platform.h" #endif diff --git a/core/embed/bootloader/memory_stm32f4.ld b/core/embed/bootloader/memory_stm32f4.ld index 3662808146..392c9a1d8e 100644 --- a/core/embed/bootloader/memory_stm32f4.ld +++ b/core/embed/bootloader/memory_stm32f4.ld @@ -67,6 +67,8 @@ SECTIONS { .buf : ALIGN(4) { *(.buf*); . = ALIGN(4); + *(.no_dma_buffers*); + . = ALIGN(4); } >SRAM .boot_args : ALIGN(8) { diff --git a/core/embed/bootloader/memory_stm32u58.ld b/core/embed/bootloader/memory_stm32u58.ld index 059b4ca2d8..0812d1925c 100644 --- a/core/embed/bootloader/memory_stm32u58.ld +++ b/core/embed/bootloader/memory_stm32u58.ld @@ -78,6 +78,8 @@ SECTIONS { .buf : ALIGN(4) { *(.buf*); . = ALIGN(4); + *(.no_dma_buffers*); + . = ALIGN(4); } >SRAM1 .stack : ALIGN(8) { diff --git a/core/embed/bootloader/memory_stm32u5a.ld b/core/embed/bootloader/memory_stm32u5a.ld index 9803e696d9..c45ed12735 100644 --- a/core/embed/bootloader/memory_stm32u5a.ld +++ b/core/embed/bootloader/memory_stm32u5a.ld @@ -78,6 +78,8 @@ SECTIONS { .buf : ALIGN(4) { *(.buf*); . = ALIGN(4); + *(.no_dma_buffers*); + . = ALIGN(4); } >SRAM1 .stack : ALIGN(8) { diff --git a/core/embed/bootloader_ci/bootui.c b/core/embed/bootloader_ci/bootui.c index e98326536d..7b6a4e288e 100644 --- a/core/embed/bootloader_ci/bootui.c +++ b/core/embed/bootloader_ci/bootui.c @@ -21,6 +21,7 @@ #include "bootui.h" #include "display.h" +#include "display_draw.h" #include "display_utils.h" #include "icon_done.h" #include "icon_fail.h" diff --git a/core/embed/bootloader_ci/main.c b/core/embed/bootloader_ci/main.c index 7ae4071043..3db0631a27 100644 --- a/core/embed/bootloader_ci/main.c +++ b/core/embed/bootloader_ci/main.c @@ -22,6 +22,7 @@ #include "common.h" #include "display.h" +#include "display_draw.h" #include "flash.h" #include "flash_otp.h" #include "image.h" diff --git a/core/embed/bootloader_ci/memory_stm32f4.ld b/core/embed/bootloader_ci/memory_stm32f4.ld index d66d8bfc38..42eb1cd20c 100644 --- a/core/embed/bootloader_ci/memory_stm32f4.ld +++ b/core/embed/bootloader_ci/memory_stm32f4.ld @@ -73,4 +73,10 @@ SECTIONS { *(.boot_args*); . = ALIGN(8); } >BOOT_ARGS + + .data_ccm : ALIGN(4) { + *(.no_dma_buffers*); + . = ALIGN(4); + } >CCMRAM + } diff --git a/core/embed/extmod/modtrezorui/modtrezorui-display.h b/core/embed/extmod/modtrezorui/modtrezorui-display.h index 59c69ff520..69e37d0152 100644 --- a/core/embed/extmod/modtrezorui/modtrezorui-display.h +++ b/core/embed/extmod/modtrezorui/modtrezorui-display.h @@ -18,6 +18,8 @@ */ #include "display.h" +#include "display_draw.h" +#include "fonts/fonts.h" /// class Display: /// """ @@ -128,11 +130,13 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorui_Display_backlight_obj, /// Saves current display contents to PNG file with given prefix. /// """ STATIC mp_obj_t mod_trezorui_Display_save(mp_obj_t self, mp_obj_t prefix) { +#ifdef TREZOR_EMULATOR mp_buffer_info_t pfx = {0}; mp_get_buffer_raise(prefix, &pfx, MP_BUFFER_READ); if (pfx.len > 0) { display_save(pfx.buf); } +#endif return mp_const_none; } STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorui_Display_save_obj, @@ -143,7 +147,9 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorui_Display_save_obj, /// Clears buffers in display saving. /// """ STATIC mp_obj_t mod_trezorui_Display_clear_save(mp_obj_t self) { +#ifdef TREZOR_EMULATOR display_clear_save(); +#endif return mp_const_none; } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorui_Display_clear_save_obj, diff --git a/core/embed/firmware/memory_DISC2.ld b/core/embed/firmware/memory_DISC2.ld index ec4a5ae26c..a79d3e078f 100644 --- a/core/embed/firmware/memory_DISC2.ld +++ b/core/embed/firmware/memory_DISC2.ld @@ -89,6 +89,8 @@ SECTIONS { .data_ccm : ALIGN(4) { *(.no_dma_buffers*); . = ALIGN(4); + *(.buf*); + . = ALIGN(4); } >SRAM1 .heap : ALIGN(4) { diff --git a/core/embed/firmware/memory_T.ld b/core/embed/firmware/memory_T.ld index 8f65dd6c17..9affc00a90 100644 --- a/core/embed/firmware/memory_T.ld +++ b/core/embed/firmware/memory_T.ld @@ -87,6 +87,11 @@ SECTIONS { . = ALIGN(4); } >SRAM + .buf : ALIGN(4) { + *(.buf*); + . = ALIGN(4); + } >SRAM + .heap : ALIGN(4) { . = 37K; /* this acts as a build time assertion that at least this much memory is available for heap use */ . = ABSOLUTE(sram_end); /* this explicitly sets the end of the heap */ diff --git a/core/embed/lib/display.c b/core/embed/lib/display_draw.c similarity index 98% rename from core/embed/lib/display.c rename to core/embed/lib/display_draw.c index c50886799e..289b2ce16c 100644 --- a/core/embed/lib/display.c +++ b/core/embed/lib/display_draw.c @@ -19,7 +19,7 @@ #define _GNU_SOURCE -#include "display.h" +#include "display_draw.h" #include "buffers.h" #include "common.h" @@ -34,7 +34,7 @@ #include "memzero.h" -#include "display_interface.h" +#include "display.h" static struct { int x, y; @@ -63,8 +63,8 @@ void display_clear(void) { // set MADCTL first so that we can set the window correctly next display_orientation(0); // address the complete frame memory - display_set_window(0, 0, MAX_DISPLAY_RESX - 1, MAX_DISPLAY_RESY - 1); - for (uint32_t i = 0; i < MAX_DISPLAY_RESX * MAX_DISPLAY_RESY; i++) { + display_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); + for (uint32_t i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { // 2 bytes per pixel because we're using RGB 5-6-5 format PIXELDATA(0x0000); } diff --git a/core/embed/lib/display.h b/core/embed/lib/display_draw.h similarity index 95% rename from core/embed/lib/display.h rename to core/embed/lib/display_draw.h index f76c8b4cc9..dcd046681d 100644 --- a/core/embed/lib/display.h +++ b/core/embed/lib/display_draw.h @@ -17,8 +17,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef __DISPLAY_H__ -#define __DISPLAY_H__ +#ifndef __DISPLAY_DRAW_H__ +#define __DISPLAY_DRAW_H__ #include <stdbool.h> #include <stddef.h> @@ -27,7 +27,6 @@ #include "buffers.h" #include "colors.h" #include TREZOR_BOARD -#include "display_interface.h" #include "fonts/fonts.h" // provided by common diff --git a/core/embed/lib/dma2d_emul.c b/core/embed/lib/dma2d_emul.c index a9ccd9d106..99fb880be0 100644 --- a/core/embed/lib/dma2d_emul.c +++ b/core/embed/lib/dma2d_emul.c @@ -18,7 +18,7 @@ */ #include "colors.h" -#include "display_interface.h" +#include "display.h" typedef enum { DMA2D_LAYER_FG = 1, diff --git a/core/embed/lib/gfx_bitblt.h b/core/embed/lib/gfx_bitblt.h new file mode 100644 index 0000000000..bb0af66abe --- /dev/null +++ b/core/embed/lib/gfx_bitblt.h @@ -0,0 +1,120 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef GFX_BITBLT_H +#define GFX_BITBLT_H + +#include <stdbool.h> +#include <stdint.h> + +#include "gfx_color.h" + +// These module provides low-level bit block transfer (bitblt) +// operations on different bitmap/framebuffer types. +// +// `fill` - fills a rectangle with a solid color (with an optional +// alpha, allowing color blending). +// +// `copy` - copies a bitmap or part of it to the destination bitmap. +// +// `blend` - blends a bitmap with a 1- or 4-bit alpha channel to the +// destination using background and foreground colors. +// +// These operations might be accelerated using DMA2D (ChromART accelerator) +// on the STM32 platform. + +// Represents a set of parameters for a bit block transfer operation. +typedef struct { + // Pointer to the destination bitmap's first row + void* dst_row; + // Number of bytes per line in the destination bitmap + uint16_t dst_stride; + // X-coordinate of the top-left corner inside the destination + uint16_t dst_x; + // Y-coordinate of the top-left corner inside the destination + uint16_t dst_y; + // Height of the filled/copied/blended area + uint16_t height; + // Width of the filled/copied/blended area + uint16_t width; + + // Pointer to the source bitmap's first row + // (unused for fill operations) + void* src_row; + // Number of bytes per line in the source bitmap + // (unused for fill operations) + uint16_t src_stride; + // X-coordinate of the origin in the source bitmap + // (unused for fill operations) + uint16_t src_x; + // Y-coordinate of the origin in the source bitmap + // (unused for fill operations) + uint16_t src_y; + + // Foreground color used when copying/blending/filling + gfx_color_t src_fg; + // Background color used when copying mono bitmaps + gfx_color_t src_bg; + // Alpha value for fill operation (255 => normal fill, 0 => noop) + uint8_t src_alpha; + +} gfx_bitblt_t; + +// Functions for RGB565 bitmap/framebuffer + +// Fills a rectangle with a solid color +void gfx_rgb565_fill(const gfx_bitblt_t* bb); +// Copies a mono bitmap (with 1-bit alpha channel) +void gfx_rgb565_copy_mono1p(const gfx_bitblt_t* bb); +// Copies a mono bitmap (with 4-bit alpha channel) +void gfx_rgb565_copy_mono4(const gfx_bitblt_t* bb); +// Copies an RGB565 bitmap +void gfx_rgb565_copy_rgb565(const gfx_bitblt_t* bb); +// Blends a mono bitmap (with 4-bit alpha channel) +// with the destination bitmap +void gfx_rgb565_blend_mono4(const gfx_bitblt_t* bb); + +// Functions for RGBA8888 bitmap/framebuffer +void gfx_rgba8888_fill(const gfx_bitblt_t* bb); +// Copies a mono bitmap (with 1-bit alpha channel) +void gfx_rgba8888_copy_mono1p(const gfx_bitblt_t* bb); +// Copies a mono bitmap (with 4-bit alpha channel) +void gfx_rgba8888_copy_mono4(const gfx_bitblt_t* bb); +// Copies an RGB565 bitmap +void gfx_rgba8888_copy_rgb565(const gfx_bitblt_t* bb); +// Copies an RGBA8888 bitmap +void gfx_rgba8888_copy_rgba8888(const gfx_bitblt_t* bb); +// Blends a mono bitmap (with 4-bit alpha channel) +// with the destination bitmap +void gfx_rgba8888_blend_mono4(const gfx_bitblt_t* bb); + +// Functions for Mono8 bitmap/framebuffer +void gfx_mono8_fill(const gfx_bitblt_t* bb); +// Copies a mono bitmap (with 1-bit alpha channel) +void gfx_mono8_copy_mono1p(const gfx_bitblt_t* bb); +// Copies a mono bitmap (with 4-bit alpha channel) +void gfx_mono8_copy_mono4(const gfx_bitblt_t* bb); +// Blends a mono bitmap (with 1-bit alpha channel) +// with the destination bitmap +void gfx_mono8_blend_mono1p(const gfx_bitblt_t* bb); +// Blends a mono bitmap (with 4-bit alpha channel) +// with the destination bitmap +void gfx_mono8_blend_mono4(const gfx_bitblt_t* bb); + +#endif // GFX_BITBLT_H diff --git a/core/embed/lib/gfx_bitblt_mono8.c b/core/embed/lib/gfx_bitblt_mono8.c new file mode 100644 index 0000000000..30966c6e08 --- /dev/null +++ b/core/embed/lib/gfx_bitblt_mono8.c @@ -0,0 +1,110 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "gfx_bitblt.h" + +void gfx_mono8_fill(const gfx_bitblt_t* bb) { + uint8_t* dst_ptr = (uint8_t*)bb->dst_row + bb->dst_x; + uint16_t height = bb->height; + + uint8_t fg = gfx_color_lum(bb->src_fg); + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + dst_ptr[x] = fg; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + } +} + +void gfx_mono8_copy_mono1p(const gfx_bitblt_t* bb) { + uint8_t* dst_ptr = (uint8_t*)bb->dst_row + bb->dst_x; + uint8_t* src = (uint8_t*)bb->src_row; + uint16_t src_ofs = bb->src_stride * bb->src_y + bb->src_x; + uint16_t height = bb->height; + + uint8_t fg = gfx_color_lum(bb->src_fg); + uint8_t bg = gfx_color_lum(bb->src_bg); + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t mask = 1 << (7 - ((src_ofs + x) & 7)); + uint8_t data = src[(src_ofs + x) / 8]; + dst_ptr[x] = (data & mask) ? fg : bg; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ofs += bb->src_stride; + } +} + +void gfx_mono8_copy_mono4(const gfx_bitblt_t* bb) { + uint8_t* dst_ptr = (uint8_t*)bb->dst_row + bb->dst_x; + uint8_t* src_row = (uint8_t*)bb->src_row; + uint16_t height = bb->height; + + uint8_t fg = gfx_color_lum(bb->src_fg); + uint8_t bg = gfx_color_lum(bb->src_bg); + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t src_data = src_row[(x + bb->src_x) / 2]; + uint8_t src_lum = (x + bb->src_x) & 1 ? src_data >> 4 : src_data & 0xF; + dst_ptr[x] = (fg * src_lum + bg * (15 - src_lum)) / 15; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_row += bb->src_stride / sizeof(*src_row); + } +} + +void gfx_mono8_blend_mono1p(const gfx_bitblt_t* bb) { + uint8_t* dst_ptr = (uint8_t*)bb->dst_row + bb->dst_x; + uint8_t* src = (uint8_t*)bb->src_row; + uint16_t src_ofs = bb->src_stride * bb->src_y + bb->src_x; + uint16_t height = bb->height; + + uint8_t fg = gfx_color_lum(bb->src_fg); + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t mask = 1 << (7 - ((src_ofs + x) & 7)); + uint8_t data = src[(src_ofs + x) / 8]; + dst_ptr[x] = (data & mask) ? fg : dst_ptr[x]; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ofs += bb->src_stride; + } +} + +void gfx_mono8_blend_mono4(const gfx_bitblt_t* bb) { + uint8_t* dst_ptr = (uint8_t*)bb->dst_row + bb->dst_x; + uint8_t* src_row = (uint8_t*)bb->src_row; + uint16_t height = bb->height; + + uint8_t fg = gfx_color_lum(bb->src_fg); + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t src_data = src_row[(x + bb->src_x) / 2]; + uint8_t src_alpha = (x + bb->src_x) & 1 ? src_data >> 4 : src_data & 0x0F; + dst_ptr[x] = (fg * src_alpha + dst_ptr[x] * (15 - src_alpha)) / 15; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_row += bb->src_stride / sizeof(*src_row); + } +} diff --git a/core/embed/lib/gfx_bitblt_rgb565.c b/core/embed/lib/gfx_bitblt_rgb565.c new file mode 100644 index 0000000000..a881ca12ab --- /dev/null +++ b/core/embed/lib/gfx_bitblt_rgb565.c @@ -0,0 +1,136 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "gfx_bitblt.h" + +#if USE_DMA2D +#include "dma2d_bitblt.h" +#endif + +void gfx_rgb565_fill(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgb565_fill(bb)) +#endif + { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + bb->dst_x; + uint16_t height = bb->height; + + if (bb->src_alpha == 255) { + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + dst_ptr[x] = bb->src_fg; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + } + } else { + uint8_t alpha = bb->src_alpha; + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + dst_ptr[x] = gfx_color16_blend_a8(bb->src_fg, dst_ptr[x], alpha); + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + } + } + } +} + +void gfx_rgb565_copy_mono1p(const gfx_bitblt_t* bb) { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + bb->dst_x; + uint8_t* src = (uint8_t*)bb->src_row; + uint16_t src_ofs = bb->src_stride * bb->src_y + bb->src_x; + uint16_t height = bb->height; + + uint16_t fg = gfx_color_to_color16(bb->src_fg); + uint16_t bg = gfx_color_to_color16(bb->src_bg); + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t mask = 1 << (7 - ((src_ofs + x) & 7)); + uint8_t data = src[(src_ofs + x) / 8]; + dst_ptr[x] = (data & mask) ? fg : bg; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ofs += bb->src_stride; + } +} + +void gfx_rgb565_copy_mono4(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgb565_copy_mono4(bb)) +#endif + { + const gfx_color16_t* gradient = + gfx_color16_gradient_a4(bb->src_fg, bb->src_bg); + + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + bb->dst_x; + uint8_t* src_row = (uint8_t*)bb->src_row; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t fg_data = src_row[(x + bb->src_x) / 2]; + uint8_t fg_lum = (x + bb->src_x) & 1 ? fg_data >> 4 : fg_data & 0xF; + dst_ptr[x] = gradient[fg_lum]; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_row += bb->src_stride / sizeof(*src_row); + } + } +} + +void gfx_rgb565_copy_rgb565(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgb565_copy_rgb565(bb)) +#endif + { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + bb->dst_x; + uint16_t* src_ptr = (uint16_t*)bb->src_row + bb->src_x; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + dst_ptr[x] = src_ptr[x]; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } + } +} + +void gfx_rgb565_blend_mono4(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgb565_blend_mono4(bb)) +#endif + { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + bb->dst_x; + uint8_t* src_row = (uint8_t*)bb->src_row; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t fg_data = src_row[(x + bb->src_x) / 2]; + uint8_t fg_alpha = (x + bb->src_x) & 1 ? fg_data >> 4 : fg_data & 0x0F; + dst_ptr[x] = gfx_color16_blend_a4( + bb->src_fg, gfx_color16_to_color(dst_ptr[x]), fg_alpha); + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_row += bb->src_stride / sizeof(*src_row); + } + } +} diff --git a/core/embed/lib/gfx_bitblt_rgba8888.c b/core/embed/lib/gfx_bitblt_rgba8888.c new file mode 100644 index 0000000000..69a88bfde2 --- /dev/null +++ b/core/embed/lib/gfx_bitblt_rgba8888.c @@ -0,0 +1,156 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "gfx_bitblt.h" + +#if USE_DMA2D +#include "dma2d_bitblt.h" +#endif + +void gfx_rgba8888_fill(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgba8888_fill(bb)) +#endif + { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint16_t height = bb->height; + + if (bb->src_alpha == 255) { + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + dst_ptr[x] = gfx_color_to_color32(bb->src_fg); + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + } + } else { + uint8_t alpha = bb->src_alpha; + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + dst_ptr[x] = gfx_color32_blend_a8( + bb->src_fg, gfx_color32_to_color(dst_ptr[x]), alpha); + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + } + } + } +} + +void gfx_rgba8888_copy_mono1p(const gfx_bitblt_t* bb) { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint8_t* src = (uint8_t*)bb->src_row; + uint16_t src_ofs = bb->src_stride * bb->src_y + bb->src_x; + uint16_t height = bb->height; + + uint32_t fg = gfx_color_to_color32(bb->src_fg); + uint32_t bg = gfx_color_to_color32(bb->src_bg); + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t mask = 1 << (7 - ((src_ofs + x) & 7)); + uint8_t data = src[(src_ofs + x) / 8]; + dst_ptr[x] = (data & mask) ? fg : bg; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ofs += bb->src_stride; + } +} + +void gfx_rgba8888_copy_mono4(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgba8888_copy_mono4(bb)) +#endif + { + const gfx_color32_t* gradient = + gfx_color32_gradient_a4(bb->src_fg, bb->src_bg); + + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint8_t* src_row = (uint8_t*)bb->src_row; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t fg_data = src_row[(x + bb->src_x) / 2]; + uint8_t fg_lum = (x + bb->src_x) & 1 ? fg_data >> 4 : fg_data & 0xF; + dst_ptr[x] = gradient[fg_lum]; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_row += bb->src_stride / sizeof(*src_row); + } + } +} + +void gfx_rgba8888_copy_rgb565(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgba8888_copy_rgb565(bb)) +#endif + { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint16_t* src_ptr = (uint16_t*)bb->src_row + bb->src_x; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + dst_ptr[x] = gfx_color16_to_color32(src_ptr[x]); + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } + } +} + +void gfx_rgba8888_copy_rgba8888(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgba8888_copy_rgba8888(bb)) +#endif + { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint32_t* src_ptr = (uint32_t*)bb->src_row + bb->src_x; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + dst_ptr[x] = src_ptr[x]; + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } + } +} + +void gfx_rgba8888_blend_mono4(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgba8888_blend_mono4(bb)) +#endif + { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint8_t* src_row = (uint8_t*)bb->src_row; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t fg_data = src_row[(x + bb->src_x) / 2]; + uint8_t fg_alpha = (x + bb->src_x) & 1 ? fg_data >> 4 : fg_data & 0x0F; + dst_ptr[x] = gfx_color32_blend_a4( + bb->src_fg, gfx_color32_to_color(dst_ptr[x]), fg_alpha); + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_row += bb->src_stride / sizeof(*src_row); + } + } +} diff --git a/core/embed/lib/gfx_color.c b/core/embed/lib/gfx_color.c new file mode 100644 index 0000000000..429446e2ae --- /dev/null +++ b/core/embed/lib/gfx_color.c @@ -0,0 +1,49 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "gfx_color.h" +#include "colors.h" + +const gfx_color16_t* gfx_color16_gradient_a4(gfx_color_t fg_color, + gfx_color_t bg_color) { + static gfx_color16_t cache[16] = {0}; + + if (gfx_color_to_color16(bg_color) != cache[0] || + gfx_color_to_color16(fg_color) != cache[15]) { + for (int alpha = 0; alpha < 16; alpha++) { + cache[alpha] = gfx_color16_blend_a4(fg_color, bg_color, alpha); + } + } + + return cache; +} + +const gfx_color32_t* gfx_color32_gradient_a4(gfx_color_t fg_color, + gfx_color_t bg_color) { + static gfx_color32_t cache[16] = {0}; + + if (bg_color != gfx_color32_to_color(cache[0]) || + fg_color != gfx_color32_to_color(cache[15])) { + for (int alpha = 0; alpha < 16; alpha++) { + cache[alpha] = gfx_color32_blend_a4(fg_color, bg_color, alpha); + } + } + + return cache; +} diff --git a/core/embed/lib/gfx_color.h b/core/embed/lib/gfx_color.h new file mode 100644 index 0000000000..4aac35d982 --- /dev/null +++ b/core/embed/lib/gfx_color.h @@ -0,0 +1,345 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef GFX_COLOR_H +#define GFX_COLOR_H + +#include <stdint.h> + +#define GFX_COLOR_16BIT +// #define GFX_COLOR_32BIT + +// Color in RGB565 format +// +// |15 8 | 7 0| +// |---------------------------------| +// |r r r r r g g g | g g g b b b b b| +// |---------------------------------| + +typedef uint16_t gfx_color16_t; + +// Color in RGBA8888 format +// +// |31 24 |23 16 |15 8 | 7 0 | +// |----------------------------------------------------------------------| +// |a a a a a a a a | r r r r r r r r | g g g g g g g g | b b b b b b b b | +// |----------------------------------------------------------------------| +// + +typedef uint32_t gfx_color32_t; + +#ifdef GFX_COLOR_16BIT +#define gfx_color_t gfx_color16_t +#define gfx_color_to_color16(c) (c) +#define gfx_color16_to_color(c) (c) +#define gfx_color_to_color32(c) (gfx_color16_to_color32(c)) +#define gfx_color32_to_color(c) (gfx_color32_to_color16(c)) +#define gfx_color_lum(c) (gfx_color16_lum(c)) +#elif GFX_COLOR_32BIT +#define gfx_color_t gfx_color32_t +#define gfx_color_to_color16(c) (gfx_color32_to_color16(c)) +#define gfx_color16_to_color(c) (gfx_color16_to_color32(c)) +#define gfx_color_to_color32(c) (c) +#define gfx_color32_to_color(c) (c) +#define gfx_color_lum(c) (gfx_color32_lum(c)) +#else +#error "GFX_COLOR_16BIT/32BIT not specified" +#endif + +// Extracts red component from gfx_color16_t and converts it to 8-bit value +#define gfx_color16_to_r(c) ((((c) & 0xF800) >> 8) | (((c) & 0xF800) >> 13)) +// Extracts green component from gfx_color16_t and converts it to 8-bit value +#define gfx_color16_to_g(c) ((((c) & 0x07E0) >> 3) | (((c) & 0x07E0) >> 9)) +// Extracts blue component from gfx_color16_t and converts it to 8-bit value +#define gfx_color16_to_b(c) ((((c) & 0x001F) << 3) | (((c) & 0x001F) >> 2)) + +// Extracts red component from gfx_color32_t +#define gfx_color32_to_r(c) (((c) & 0x00FF0000) >> 16) +// Extracts green component from gfx_color32_t +#define gfx_color32_to_g(c) (((c) & 0x0000FF00) >> 8) +// Extracts blue component from gfx_color32_t +#define gfx_color32_to_b(c) (((c) & 0x000000FF) >> 0) + +// 4-bit linear interpolation between `fg` and `bg` +#define a4_lerp(fg, bg, alpha) (((fg) * (alpha) + ((bg) * (15 - (alpha)))) / 15) +// 8-bit linear interpolation between `fg` and `bg` +#define a8_lerp(fg, bg, alpha) \ + (((fg) * (alpha) + ((bg) * (255 - (alpha)))) / 255) + +// Constructs a 16-bit color from the given red (r), +// green (g), and blue (b) values in the range 0..255 +static inline gfx_color16_t gfx_color16_rgb(uint8_t r, uint8_t g, uint8_t b) { + return ((r & 0xF8U) << 8) | ((g & 0xFCU) << 3) | ((b & 0xF8U) >> 3); +} + +// Constructs a 32-bit color from the given red (r), +// green (g), and blue (b) values in the range 0..255. +// Alpha is set to 255. +static inline gfx_color32_t gfx_color32_rgb(uint8_t r, uint8_t g, uint8_t b) { + return (0xFFU << 24) | ((uint32_t)r << 16) | ((uint32_t)g << 8) | b; +} + +// Converts a 16-bit color to a 32-bit color; alpha is set to 255 +static inline gfx_color32_t gfx_color16_to_color32(gfx_color16_t color) { + uint32_t r = gfx_color16_to_r(color); + uint32_t g = gfx_color16_to_g(color); + uint32_t b = gfx_color16_to_b(color); + + return gfx_color32_rgb(r, g, b); +} + +// Converts 32-bit color to 16-bit color, alpha is ignored +static inline gfx_color16_t gfx_color32_to_color16(gfx_color32_t color) { + uint16_t r = (color & 0x00F80000) >> 8; + uint16_t g = (color & 0x0000FC00) >> 5; + uint16_t b = (color & 0x000000F8) >> 3; + + return r | g | b; +} + +// Converts 16-bit color into luminance (ranging from 0 to 255) +static inline uint8_t gfx_color16_lum(gfx_color16_t color) { + uint32_t r = gfx_color16_to_r(color); + uint32_t g = gfx_color16_to_g(color); + uint32_t b = gfx_color16_to_b(color); + + return (r + g + b) / 3; +} + +// Converts 32-bit color into luminance (ranging from 0 to 255) +static inline uint8_t gfx_color32_lum(gfx_color16_t color) { + uint32_t r = gfx_color32_to_r(color); + uint32_t g = gfx_color32_to_g(color); + uint32_t b = gfx_color32_to_b(color); + + return (r + g + b) / 3; +} + +#ifdef GFX_COLOR_16BIT +// Blends foreground and background colors with 4-bit alpha +// +// Returns a color in 16-bit format +// +// If `alpha` is 0, the function returns the background color +// If `alpha` is 15, the function returns the foreground color +static inline gfx_color16_t gfx_color16_blend_a4(gfx_color16_t fg, + gfx_color16_t bg, + uint8_t alpha) { + uint16_t fg_r = (fg & 0xF800) >> 11; + uint16_t bg_r = (bg & 0xF800) >> 11; + uint16_t r = a4_lerp(fg_r, bg_r, alpha); + + uint16_t fg_g = (fg & 0x07E0) >> 5; + uint16_t bg_g = (bg & 0x07E0) >> 5; + uint16_t g = a4_lerp(fg_g, bg_g, alpha); + + uint16_t fg_b = (fg & 0x001F) >> 0; + uint16_t bg_b = (bg & 0x001F) >> 0; + uint16_t b = a4_lerp(fg_b, bg_b, alpha); + + return (r << 11) | (g << 5) | b; +} + +// Blends foreground and background colors with 8-bit alpha +// +// Returns a color in 16-bit format +// +// If `alpha` is 0, the function returns the background color +// If `alpha` is 15, the function returns the foreground color +static inline gfx_color16_t gfx_color16_blend_a8(gfx_color16_t fg, + gfx_color16_t bg, + uint8_t alpha) { + uint16_t fg_r = (fg & 0xF800) >> 11; + uint16_t bg_r = (bg & 0xF800) >> 11; + uint16_t r = a8_lerp(fg_r, bg_r, alpha); + + uint16_t fg_g = (fg & 0x07E0) >> 5; + uint16_t bg_g = (bg & 0x07E0) >> 5; + uint16_t g = a8_lerp(fg_g, bg_g, alpha); + + uint16_t fg_b = (fg & 0x001F) >> 0; + uint16_t bg_b = (bg & 0x001F) >> 0; + uint16_t b = a8_lerp(fg_b, bg_b, alpha); + + return (r << 11) | (g << 5) | b; +} + +// Blends foreground and background colors with 4-bit alpha +// +// Returns a color in 32-bit format +// +// If alpha is 0, the function returns the background color +// If alpha is 15, the function returns the foreground color +static inline gfx_color32_t gfx_color32_blend_a4(gfx_color16_t fg, + gfx_color16_t bg, + uint8_t alpha) { + uint16_t fg_r = gfx_color16_to_r(fg); + uint16_t bg_r = gfx_color16_to_r(bg); + uint16_t r = a4_lerp(fg_r, bg_r, alpha); + + uint16_t fg_g = gfx_color16_to_g(fg); + uint16_t bg_g = gfx_color16_to_g(bg); + uint16_t g = a4_lerp(fg_g, bg_g, alpha); + + uint16_t fg_b = gfx_color16_to_b(fg); + uint16_t bg_b = gfx_color16_to_b(bg); + uint16_t b = a4_lerp(fg_b, bg_b, alpha); + + return gfx_color32_rgb(r, g, b); +} + +// Blends foreground and background colors with 8-bit alpha +// +// Returns a color in 32-bit format +// +// If `alpha` is 0, the function returns the background color +// If `alpha` is 255, the function returns the foreground color +static inline gfx_color32_t gfx_color32_blend_a8(gfx_color16_t fg, + gfx_color16_t bg, + uint8_t alpha) { + uint16_t fg_r = gfx_color16_to_r(fg); + uint16_t bg_r = gfx_color16_to_r(bg); + uint16_t r = a8_lerp(fg_r, bg_r, alpha); + + uint16_t fg_g = gfx_color16_to_g(fg); + uint16_t bg_g = gfx_color16_to_g(bg); + uint16_t g = a8_lerp(fg_g, bg_g, alpha); + + uint16_t fg_b = gfx_color16_to_b(fg); + uint16_t bg_b = gfx_color16_to_b(bg); + uint16_t b = a8_lerp(fg_b, bg_b, alpha); + + return gfx_color32_rgb(r, g, b); +} + +#elif GFX_COLOR_32BIT + +// Blends foreground and background colors with 4-bit alpha +// +// Returns a color in 16-bit format +// +// If `alpha` is 0, the function returns the background color +// If `alpha` is 15, the function returns the foreground color +static inline gfx_color16_t gfx_color16_blend_a4(gfx_color32_t fg, + gfx_color32_t bg, + uint8_t alpha) { + uint16_t fg_r = gfx_color32_to_r(fg); + uint16_t bg_r = gfx_color32_to_r(bg); + uint16_t r = a4_lerp(fg_r, bg_r, alpha); + + uint16_t fg_g = gfx_color32_to_g(fg); + uint16_t bg_g = gfx_color32_to_g(bg); + uint16_t g = a4_lerp(fg_g, bg_g, alpha); + + uint16_t fg_b = gfx_color32_to_b(fg); + uint16_t bg_b = gfx_color32_to_b(bg); + uint16_t b = a4_lerp(fg_b, bg_b, alpha); + + return gfx_color16_rgb(r, g, b); +} + +// Blends foreground and background colors with 8-bit alpha +// +// Returns a color in 16-bit format +// +// If `alpha` is 0, the function returns the background color +// If `alpha` is 255, the function returns the foreground color +static inline gfx_color16_t gfx_color16_blend_a8(gfx_color32_t fg, + gfx_color32_t bg, + uint8_t alpha) { + uint16_t fg_r = gfx_color32_to_r(fg); + uint16_t bg_r = gfx_color32_to_r(bg); + uint16_t r = a8_lerp(fg_r, bg_r, alpha); + + uint16_t fg_g = gfx_color32_to_g(fg); + uint16_t bg_g = gfx_color32_to_g(bg); + uint16_t g = a8_lerp(fg_g, bg_g, alpha); + + uint16_t fg_b = gfx_color32_to_b(fg); + uint16_t bg_b = gfx_color32_to_b(bg); + uint16_t b = g = a8_lerp(fg_b, bg_b, alpha); + + return gfx_color16_rgb(r, g, b); +} + +// Blends foreground and background colors with 4-bit alpha +// +// Returns a color in 32-bit format +// +// If `alpha` is 0, the function returns the background color +// If `alpha` is 15, the function returns the foreground color +static inline gfx_color32_t gfx_color32_blend_a4(gfx_color32_t fg, + gfx_color32_t bg, + uint8_t alpha) { + uint16_t fg_r = gfx_color32_to_r(fg); + uint16_t bg_r = gfx_color32_to_r(bg); + uint16_t r = a4_lerp(fg_r, bg_r, alpha); + + uint16_t fg_g = gfx_color32_to_g(fg); + uint16_t bg_g = gfx_color32_to_g(bg); + uint16_t g = a4_lerp(fg_g, bg_g, alpha); + + uint16_t fg_b = gfx_color32_to_b(fg); + uint16_t bg_b = gfx_color32_to_b(bg); + uint16_t b = a4_lerp(fg_b, bg_b, alpha); + + return gfx_color32_rgb(r, g, b); +} + +// Blends foreground and background colors with 8-bit alpha +// +// Returns a color in 32-bit format +// +// If `alpha` is 0, the function returns the background color +// If `alpha` is 15, the function returns the foreground color +static inline gfx_color32_t gfx_color32_blend_a8(gfx_color32_t fg, + gfx_color32_t bg, + uint8_t alpha) { + uint16_t fg_r = gfx_color32_to_r(fg); + uint16_t bg_r = gfx_color32_to_r(bg); + uint16_t r = a8_lerp(fg_r, bg_r, alpha); + + uint16_t fg_g = gfx_color32_to_g(fg); + uint16_t bg_g = gfx_color32_to_g(bg); + uint16_t g = a8_lerp(fg_g, bg_g, alpha); + + uint16_t fg_b = gfx_color32_to_b(fg); + uint16_t bg_b = gfx_color32_to_b(bg); + uint16_t b = a8_lerp(fg_b, bg_b, alpha); + + return gfx_color32_rgb(r, g, b); +} + +#else +#error "GFX_COLOR_16BIT/32BIT not specified" +#endif + +// Returns a gradient as an array of 16 consecutive 16-bit colors +// +// Each element in the array represents a color, with `retval[0]` being +// the background (`bg`) color and `retval[15]` the foreground (`fg`) color +const gfx_color16_t* gfx_color16_gradient_a4(gfx_color_t fg, gfx_color_t bg); + +// Returns a gradient as an array of 16 consecutive 32-bit colors +// +// Each element in the array represents a color, with `retval[0]` being +// the background (`bg`) color and `retval[15]` the foreground (`fg`) color +const gfx_color32_t* gfx_color32_gradient_a4(gfx_color_t fg, gfx_color_t bg); + +#endif // GFX_COLOR_H diff --git a/core/embed/lib/gfx_draw.c b/core/embed/lib/gfx_draw.c new file mode 100644 index 0000000000..4cce909ec5 --- /dev/null +++ b/core/embed/lib/gfx_draw.c @@ -0,0 +1,276 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <display.h> + +#include "display_draw.h" +#include "fonts/fonts.h" +#include "gfx_draw.h" + +typedef struct { + int16_t dst_x; + int16_t dst_y; + int16_t src_x; + int16_t src_y; + int16_t width; + int16_t height; +} gfx_clip_t; + +static inline gfx_clip_t gfx_clip(gfx_rect_t dst, const gfx_bitmap_t* bitmap) { + int16_t dst_x = dst.x0; + int16_t dst_y = dst.y0; + + int16_t src_x = 0; + int16_t src_y = 0; + + if (bitmap != NULL) { + src_x += bitmap->offset.x; + src_y += bitmap->offset.y; + + // Normalize negative x-offset of bitmap + if (src_x < 0) { + dst_x -= src_x; + src_x = 0; + } + + // Normalize negative y-offset of src bitmap + if (src_y < 0) { + dst_y -= src_y; + src_y = 0; + } + } + + // Normalize negative top-left of destination rectangle + if (dst_x < 0) { + src_x -= dst_x; + dst_x = 0; + } + + if (dst_y < 0) { + src_y -= dst_y; + dst_y = 0; + } + + // Calculate dimension of effective rectangle + int16_t width = MIN(DISPLAY_RESX, dst.x1) - dst_x; + int16_t height = MIN(DISPLAY_RESY, dst.y1) - dst_y; + + if (bitmap != NULL) { + width = MIN(width, bitmap->size.x - src_x); + height = MIN(height, bitmap->size.y - src_y); + } + + gfx_clip_t clip = { + .dst_x = dst_x, + .dst_y = dst_y, + .src_x = src_x, + .src_y = src_y, + .width = width, + .height = height, + }; + + return clip; +} + +void gfx_clear(void) { + gfx_bitblt_t bb = { + // Destination bitmap + .height = DISPLAY_RESX, + .width = DISPLAY_RESY, + .dst_row = NULL, + .dst_x = 0, + .dst_y = 0, + .dst_stride = 0, + + // Source bitmap + .src_fg = 0, + .src_alpha = 255, + }; + + display_fill(&bb); +} + +void gfx_draw_bar(gfx_rect_t rect, gfx_color_t color) { + gfx_clip_t clip = gfx_clip(rect, NULL); + + if (clip.width <= 0 || clip.height <= 0) { + return; + } + + gfx_bitblt_t bb = { + // Destination bitmap + .height = clip.height, + .width = clip.width, + .dst_row = NULL, + .dst_x = clip.dst_x, + .dst_y = clip.dst_y, + .dst_stride = 0, + + // Source bitmap + .src_fg = color, + .src_alpha = 255, + }; + + display_fill(&bb); +} + +void gfx_draw_bitmap(gfx_rect_t rect, const gfx_bitmap_t* bitmap) { + gfx_clip_t clip = gfx_clip(rect, bitmap); + + if (clip.width <= 0 || clip.height <= 0) { + return; + } + + gfx_bitblt_t bb = { + // Destination bitmap + .height = clip.height, + .width = clip.width, + .dst_row = NULL, + .dst_x = clip.dst_x, + .dst_y = clip.dst_y, + .dst_stride = 0, + + // Source bitmap + .src_row = (uint8_t*)bitmap->ptr + bitmap->stride * clip.src_y, + .src_x = clip.src_x, + .src_y = clip.src_y, + .src_stride = bitmap->stride, + .src_fg = bitmap->fg_color, + .src_bg = bitmap->bg_color, + .src_alpha = 255, + }; + + // Currently, we use `gfx_draw_bitmap` exclusively for text rendering. + // Therefore, we are including the variant of `display_copy_xxx()` that is + // specifically needed for drawing glyphs in the format we are using + // to save some space in the flash memory. + +#if TREZOR_FONT_BPP == 1 + if (bitmap->format == GFX_FORMAT_MONO1P) { + display_copy_mono1p(&bb); + } +#endif +#if TREZOR_FONT_BPP == 4 + if (bitmap->format == GFX_FORMAT_MONO4) { + display_copy_mono4(&bb); + } +#endif +} + +#if TREZOR_FONT_BPP == 1 +#define GLYPH_FORMAT GFX_FORMAT_MONO1P +#define GLYPH_STRIDE(w) (((w) + 7) / 8) +#elif TREZOR_FONT_BPP == 2 +#error Unsupported TREZOR_FONT_BPP value +#define GLYPH_FORMAT GFX_FORMAT_MONO2 +#define GLYPH_STRIDE(w) (((w) + 3) / 4) +#elif TREZOR_FONT_BPP == 4 +#define GLYPH_FORMAT GFX_FORMAT_MONO4 +#define GLYPH_STRIDE(w) (((w) + 1) / 2) +#elif TREZOR_FONT_BPP == 8 +#error Unsupported TREZOR_FONT_BPP value +#define GLYPH_FORMAT GFX_FORMAT_MONO8 +#define GLYPH_STRIDE(w) (w) +#else +#error Unsupported TREZOR_FONT_BPP value +#endif + +#define GLYPH_WIDTH(g) ((g)[0]) +#define GLYPH_HEIGHT(g) ((g)[1]) +#define GLYPH_ADVANCE(g) ((g)[2]) +#define GLYPH_BEARING_X(g) ((g)[3]) +#define GLYPH_BEARING_Y(g) ((g)[4]) +#define GLYPH_DATA(g) ((void*)&(g)[5]) + +void gfx_draw_text(gfx_offset_t pos, const char* text, size_t maxlen, + const gfx_text_attr_t* attr) { + if (text == NULL) { + return; + } + + gfx_bitmap_t bitmap = { + .format = GLYPH_FORMAT, + .fg_color = attr->fg_color, + .bg_color = attr->bg_color, + }; + + int max_height = font_max_height(attr->font); + int baseline = font_baseline(attr->font); + + for (int i = 0; i < maxlen; i++) { + uint8_t ch = (uint8_t)text[i]; + + if (ch == 0 || pos.x >= DISPLAY_RESX) { + break; + } + + const uint8_t* glyph = font_get_glyph(attr->font, ch); + + if (glyph == NULL) { + continue; + } + + bitmap.ptr = GLYPH_DATA(glyph); + bitmap.stride = GLYPH_STRIDE(GLYPH_WIDTH(glyph)); + bitmap.size.x = GLYPH_WIDTH(glyph); + bitmap.size.y = GLYPH_HEIGHT(glyph); + + bitmap.offset.x = -GLYPH_BEARING_X(glyph); + bitmap.offset.y = -(max_height - baseline - GLYPH_BEARING_Y(glyph)); + + gfx_draw_bitmap(gfx_rect(pos.x, pos.y, DISPLAY_RESX, DISPLAY_RESY), + &bitmap); + + pos.x += GLYPH_ADVANCE(glyph); + } +} + +// =============================================================== +// emulation of legacy functions + +void display_clear(void) { gfx_clear(); } + +void display_bar(int x, int y, int w, int h, uint16_t c) { + gfx_draw_bar(gfx_rect_wh(x, y, w, h), c); +} + +void display_text(int x, int y, const char* text, int textlen, int font, + uint16_t fg_color, uint16_t bg_color) { + gfx_text_attr_t attr = { + .font = font, + .fg_color = fg_color, + .bg_color = bg_color, + }; + + size_t maxlen = textlen < 0 ? UINT32_MAX : textlen; + gfx_draw_text(gfx_offset(x, y), text, maxlen, &attr); +} + +void display_text_center(int x, int y, const char* text, int textlen, int font, + uint16_t fg_color, uint16_t bg_color) { + gfx_text_attr_t attr = { + .font = font, + .fg_color = fg_color, + .bg_color = bg_color, + }; + + size_t maxlen = textlen < 0 ? UINT32_MAX : textlen; + int w = font_text_width(font, text, textlen); + gfx_draw_text(gfx_offset(x - w / 2, y), text, maxlen, &attr); +} diff --git a/core/embed/lib/gfx_draw.h b/core/embed/lib/gfx_draw.h new file mode 100644 index 0000000000..fcd32bacca --- /dev/null +++ b/core/embed/lib/gfx_draw.h @@ -0,0 +1,153 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef GFX_DRAW_H +#define GFX_DRAW_H + +#include "gfx_color.h" + +// 2D rectangle coordinates +// +// `x0`, `y0` - top-left coordinates +// `x1`, `y1` - bottom-right coordinates point (not included) +typedef struct { + int16_t x0; + int16_t y0; + int16_t x1; + int16_t y1; +} gfx_rect_t; + +// Builds a rectangle (`gfx_rect_t`) from top-left coordinates and dimensions +static inline gfx_rect_t gfx_rect_wh(int16_t x, int16_t y, int16_t w, + int16_t h) { + gfx_rect_t rect = { + .x0 = x, + .y0 = y, + .x1 = x + w, + .y1 = y + h, + }; + + return rect; +} + +// Builds a rectangle (`gfx_rect_t`) from top-left and bottom-right coordinates +static inline gfx_rect_t gfx_rect(int16_t x0, int16_t y0, int16_t x1, + int16_t y1) { + gfx_rect_t rect = { + .x0 = x0, + .y0 = y0, + .x1 = x1, + .y1 = y1, + }; + + return rect; +} + +// 2D offset/ coordinates +typedef struct { + int16_t x; + int16_t y; +} gfx_offset_t; + +// Builds a `gfx_offset_t` structure +static inline gfx_offset_t gfx_offset(int16_t x, int16_t y) { + gfx_offset_t offset = { + .x = x, + .y = y, + }; + + return offset; +} + +// 2D size in pixels +typedef struct { + int16_t x; + int16_t y; +} gfx_size_t; + +// Builds a `gfx_size_t` structure +static inline gfx_size_t gfx_size(int16_t x, int16_t y) { + gfx_size_t size = { + .x = x, + .y = y, + }; + + return size; +} + +// Format of pixels in a bitmap +typedef enum { + GFX_FORMAT_UNKNOWN, // + GFX_FORMAT_MONO1P, // 1-bpp per pixel (packed) + GFX_FORMAT_MONO4, // 4-bpp per pixel + GFX_FORMAT_RGB565, // 16-bpp per pixel + GFX_FORMAT_RGBA8888, // 32-bpp +} gfx_format_t; + +// 2D bitmap reference +typedef struct { + // pointer to top-left pixel + void* ptr; + // stride in bytes + size_t stride; + // size in pixels + gfx_size_t size; + // format of pixels, GFX_FORMAT_xxx + uint8_t format; + // offset used when bitmap is drawed using gfx_draw_bitmap() + gfx_offset_t offset; + // foreground color (used with MONOx formats) + gfx_color_t fg_color; + // background color (used with MONOx formats) + gfx_color_t bg_color; +} gfx_bitmap_t; + +// Text attributes (font and color) +typedef struct { + // Font identifier + int font; + // Foreground color + gfx_color_t fg_color; + // Background color + gfx_color_t bg_color; +} gfx_text_attr_t; + +// Fills a rectangle with a specified color. +void gfx_draw_bar(gfx_rect_t rect, gfx_color_t color); + +// Draws a bitmap into the specified rectangle. +// +// The destination rectangle may not be fully filled if the source bitmap +// is smaller than destination rectangle or if the bitmap is translated by +// an offset partially or completely outside the destination rectangle. +// +// Currently, we use `gfx_draw_bitmap` exclusively for text rendering. +// Not all bitmap formats are supported now. Please see the implementation. +void gfx_draw_bitmap(gfx_rect_t rect, const gfx_bitmap_t* bitmap); + +// Draws a text to the specified position. +// +// `offset` - the most left point on the font baseline +// `text` - utf-8 text +// `maxlen` - maximum number of characters displayed (use SIZE_MAX when not +// specified) `attr` - font & text color +void gfx_draw_text(gfx_offset_t offset, const char* text, size_t maxlen, + const gfx_text_attr_t* attr); + +#endif // GFX_DRAW_H diff --git a/core/embed/lib/terminal.c b/core/embed/lib/terminal.c index 9411cbdff9..13d733acc1 100644 --- a/core/embed/lib/terminal.c +++ b/core/embed/lib/terminal.c @@ -24,7 +24,8 @@ #include "display.h" #include TREZOR_BOARD -#ifndef TREZOR_PRINT_DISABLE +#include "fonts/fonts.h" +#include "gfx_draw.h" #define TERMINAL_COLS (DISPLAY_RESX / 6) #define TERMINAL_ROWS (DISPLAY_RESY / 8) @@ -39,6 +40,62 @@ void term_set_color(uint16_t fgcolor, uint16_t bgcolor) { terminal_bgcolor = bgcolor; } +#ifdef NEW_RENDERING + +// Font_Bitmap contains 96 (0x20 - 0x7F) 5x7 glyphs +// Each glyph consists of 5 bytes (each byte represents one column) +// +// This function converts the glyph into the format compatible +// with `display_copy_mono1p()` functions. +static uint64_t term_glyph_bits(char ch) { + union { + uint64_t u64; + uint8_t bytes[8]; + } result = {0}; + + if (ch > 32 && (uint8_t)ch < 128) { + const uint8_t *b = &Font_Bitmap[(ch - ' ') * 5]; + + for (int y = 0; y < 7; y++) { + uint8_t mask = 1 << y; + result.bytes[y] |= ((b[0] & mask) ? 128 : 0) + ((b[1] & mask) ? 64 : 0) + + ((b[2] & mask) ? 32 : 0) + ((b[3] & mask) ? 16 : 0) + + ((b[4] & mask) ? 8 : 0); + } + } + return result.u64; +} + +// Redraws specified rows to the display +static void term_redraw_rows(int start_row, int row_count) { + uint64_t glyph_bits = 0; + gfx_bitblt_t bb = { + .height = 8, + .width = 6, + .dst_row = NULL, + .dst_x = 0, + .dst_y = 0, + .dst_stride = 0, + + .src_row = &glyph_bits, + .src_x = 0, + .src_y = 0, + .src_stride = 8, + .src_fg = terminal_fgcolor, + .src_bg = terminal_bgcolor, + }; + + for (int y = start_row; y < start_row + row_count; y++) { + bb.dst_y = y * 8; + for (int x = 0; x < TERMINAL_COLS; x++) { + glyph_bits = term_glyph_bits(terminal_fb[y][x]); + bb.dst_x = x * 6; + display_copy_mono1p(&bb); + } + } +} +#endif // NEW_RENDERING + // display text using bitmap font void term_print(const char *text, int textlen) { static uint8_t row = 0, col = 0; @@ -77,6 +134,10 @@ void term_print(const char *text, int textlen) { } } +#ifdef NEW_RENDERING + term_redraw_rows(0, TERMINAL_ROWS); + display_refresh(); +#else // NEW RENDERING // render buffer to display display_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); for (int i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { @@ -105,6 +166,7 @@ void term_print(const char *text, int textlen) { } display_pixeldata_dirty(); display_refresh(); +#endif } #ifdef TREZOR_EMULATOR @@ -127,5 +189,3 @@ void term_printf(const char *fmt, ...) { va_end(va); } } - -#endif // TREZOR_PRINT_DISABLE diff --git a/core/embed/lib/terminal.h b/core/embed/lib/terminal.h index 7cc036dffb..d1dc9bfa01 100644 --- a/core/embed/lib/terminal.h +++ b/core/embed/lib/terminal.h @@ -22,11 +22,9 @@ #include "colors.h" -#ifndef TREZOR_PRINT_DISABLE void term_set_color(uint16_t fgcolor, uint16_t bgcolor); void term_print(const char *text, int textlen); void term_printf(const char *fmt, ...) __attribute__((__format__(__printf__, 1, 2))); -#endif #endif // LIB_TERMINAL_H diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index e18a40c784..b4209ac718 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -26,6 +26,7 @@ #include "button.h" #include "common.h" #include "display.h" +#include "display_draw.h" #include "display_utils.h" #include "fault_handlers.h" #include "flash.h" diff --git a/core/embed/reflash/main.c b/core/embed/reflash/main.c index 06b3b2d3a4..b98a3bceb7 100644 --- a/core/embed/reflash/main.c +++ b/core/embed/reflash/main.c @@ -25,6 +25,7 @@ #include "common.h" #include "display.h" +#include "display_draw.h" #include "flash.h" #include "image.h" #include "model.h" diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 2faab74a7e..6454358e8e 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -15,10 +15,18 @@ micropython = [] protobuf = ["micropython"] ui = [] dma2d = [] +xframebuffer = [] +display_mono = [] +display_rgb565 = [] +display_rgba8888 = [] framebuffer = [] framebuffer32bit = [] ui_debug = [] ui_bounds = [] +ui_antialiasing = [] +ui_blurring = [] +ui_jpeg_decoder = ["jpeg"] +new_rendering = [] bootloader = [] button = [] touch = [] diff --git a/core/embed/rust/trezorhal.h b/core/embed/rust/trezorhal.h index 1ee7ac69a7..7dadc0abf4 100644 --- a/core/embed/rust/trezorhal.h +++ b/core/embed/rust/trezorhal.h @@ -1,12 +1,15 @@ #include TREZOR_BOARD + #include "buffers.h" #include "button.h" #include "common.h" #include "display.h" -#include "display_interface.h" +#include "display_draw.h" #include "dma2d.h" +#include "dma2d_bitblt.h" #include "flash.h" #include "fonts/fonts.h" +#include "gfx_bitblt.h" #include "haptic.h" #include "model.h" #include "rgb_led.h" diff --git a/core/embed/trezorhal/boards/stm32f429i-disc1.h b/core/embed/trezorhal/boards/stm32f429i-disc1.h index 9f8b0a65ec..cd37a97124 100644 --- a/core/embed/trezorhal/boards/stm32f429i-disc1.h +++ b/core/embed/trezorhal/boards/stm32f429i-disc1.h @@ -3,18 +3,16 @@ #define HSE_8MHZ -#define MAX_DISPLAY_RESX 240 -#define MAX_DISPLAY_RESY 320 #define DISPLAY_RESX 240 #define DISPLAY_RESY 320 +#define DISPLAY_COLOR_MODE DMA2D_OUTPUT_RGB565 +#define DISPLAY_LEGACY_HEADER "displays/ltdc.h" #define USE_I2C 1 #define USE_TOUCH 1 #define USE_SDRAM 1 #define USE_RGB_COLORS 1 -#include "displays/ltdc.h" - #define I2C_COUNT 1 #define I2C_INSTANCE_0 I2C3 #define I2C_INSTANCE_0_CLK_EN __HAL_RCC_I2C3_CLK_ENABLE diff --git a/core/embed/trezorhal/boards/stm32u5a9j-dk.h b/core/embed/trezorhal/boards/stm32u5a9j-dk.h index bb21f24766..baf3e71171 100644 --- a/core/embed/trezorhal/boards/stm32u5a9j-dk.h +++ b/core/embed/trezorhal/boards/stm32u5a9j-dk.h @@ -11,7 +11,11 @@ // #define USE_DISP_I8080_8BIT_DW 1 #define USE_HASH_PROCESSOR 1 -#include "displays/dsi.h" +#define DISPLAY_RESX 240 +#define DISPLAY_RESY 240 + +#define DISPLAY_COLOR_MODE DMA2D_OUTPUT_ARGB8888 +#define DISPLAY_LEGACY_HEADER "displays/dsi.h" #define I2C_COUNT 1 #define I2C_INSTANCE_0 I2C5 diff --git a/core/embed/trezorhal/boards/trezor_1.h b/core/embed/trezorhal/boards/trezor_1.h index 4f126a7206..7fec05ac7b 100644 --- a/core/embed/trezorhal/boards/trezor_1.h +++ b/core/embed/trezorhal/boards/trezor_1.h @@ -5,7 +5,8 @@ #define USE_BUTTON 1 -#include "displays/vg-2864ksweg01.h" +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 64 #define BTN_LEFT_PIN GPIO_PIN_5 #define BTN_LEFT_PORT GPIOC diff --git a/core/embed/trezorhal/boards/trezor_r_v10.h b/core/embed/trezorhal/boards/trezor_r_v10.h index be44e5585d..b48479d526 100644 --- a/core/embed/trezorhal/boards/trezor_r_v10.h +++ b/core/embed/trezorhal/boards/trezor_r_v10.h @@ -8,7 +8,9 @@ #define USE_I2C 1 #define USE_CONSUMPTION_MASK 1 -#include "displays/vg-2864ksweg01.h" +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 64 +#define DISPLAY_LEGACY_HEADER "displays/vg-2864ksweg01.h" #define BTN_LEFT_PIN GPIO_PIN_10 #define BTN_LEFT_PORT GPIOC diff --git a/core/embed/trezorhal/boards/trezor_r_v3.h b/core/embed/trezorhal/boards/trezor_r_v3.h index 242a3f5416..ffe8b69148 100644 --- a/core/embed/trezorhal/boards/trezor_r_v3.h +++ b/core/embed/trezorhal/boards/trezor_r_v3.h @@ -6,7 +6,9 @@ #define USE_BUTTON 1 #define USE_SBU 1 -#include "displays/ug-2828tswig01.h" +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 128 +#define DISPLAY_LEGACY_HEADER "displays/ug-2828tswig01.h" #define BTN_LEFT_PIN GPIO_PIN_0 #define BTN_LEFT_PORT GPIOA diff --git a/core/embed/trezorhal/boards/trezor_r_v4.h b/core/embed/trezorhal/boards/trezor_r_v4.h index 29054d200b..9dbbb62671 100644 --- a/core/embed/trezorhal/boards/trezor_r_v4.h +++ b/core/embed/trezorhal/boards/trezor_r_v4.h @@ -6,7 +6,9 @@ #define USE_BUTTON 1 #define USE_SBU 1 -#include "displays/vg-2864ksweg01.h" +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 64 +#define DISPLAY_LEGACY_HEADER "displays/vg-2864ksweg01.h" #define BTN_LEFT_PIN GPIO_PIN_5 #define BTN_LEFT_PORT GPIOC diff --git a/core/embed/trezorhal/boards/trezor_r_v6.h b/core/embed/trezorhal/boards/trezor_r_v6.h index 72a7cedeaa..d177c3d726 100644 --- a/core/embed/trezorhal/boards/trezor_r_v6.h +++ b/core/embed/trezorhal/boards/trezor_r_v6.h @@ -6,7 +6,9 @@ #define USE_BUTTON 1 #define USE_SBU 1 -#include "displays/vg-2864ksweg01.h" +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 64 +#define DISPLAY_LEGACY_HEADER "displays/vg-2864ksweg01.h" #define BTN_LEFT_PIN GPIO_PIN_10 #define BTN_LEFT_PORT GPIOC diff --git a/core/embed/trezorhal/boards/trezor_t.h b/core/embed/trezorhal/boards/trezor_t.h index 557f8bb55c..14e2ffd3ff 100644 --- a/core/embed/trezorhal/boards/trezor_t.h +++ b/core/embed/trezorhal/boards/trezor_t.h @@ -3,9 +3,6 @@ #define HSE_8MHZ -#define DISPLAY_RESX 240 -#define DISPLAY_RESY 240 - #define USE_SD_CARD 1 #define USE_I2C 1 #define USE_TOUCH 1 @@ -14,12 +11,14 @@ #define USE_BACKLIGHT 1 #define USE_DISP_I8080_8BIT_DW 1 -#include "displays/panels/lx154a2422.h" -#include "displays/st7789v.h" +#define DISPLAY_RESX 240 +#define DISPLAY_RESY 240 +#define DISPLAY_COLOR_MODE DMA2D_OUTPUT_RGB565 +#define DISPLAY_LEGACY_HEADER "displays/st7789v.h" + #define DISPLAY_IDENTIFY 1 #define DISPLAY_TE_PORT GPIOD #define DISPLAY_TE_PIN GPIO_PIN_12 -#define TRANSFORM_TOUCH_COORDS lx154a2422_transform_touch_coords #define BACKLIGHT_PWM_FREQ 10000 #define BACKLIGHT_PWM_TIM TIM1 diff --git a/core/embed/trezorhal/boards/trezor_t3t1_revE.h b/core/embed/trezorhal/boards/trezor_t3t1_revE.h index 95e11f796f..4fd2f7b48b 100644 --- a/core/embed/trezorhal/boards/trezor_t3t1_revE.h +++ b/core/embed/trezorhal/boards/trezor_t3t1_revE.h @@ -1,9 +1,6 @@ #ifndef _TREZOR_T3T1_H #define _TREZOR_T3T1_H -#define DISPLAY_RESX 240 -#define DISPLAY_RESY 240 - #define VDD_3V3 1 #define USE_SD_CARD 1 @@ -16,8 +13,11 @@ #define USE_BACKLIGHT 1 #define USE_HASH_PROCESSOR 1 -#include "displays/panels/lx154a2422.h" -#include "displays/st7789v.h" +#define DISPLAY_RESX 240 +#define DISPLAY_RESY 240 +#define DISPLAY_LEGACY_HEADER "displays/st7789v.h" +#define DISPLAY_COLOR_MODE DMA2D_OUTPUT_RGB565 + #define DISPLAY_IDENTIFY 1 #define DISPLAY_TE_PORT GPIOD #define DISPLAY_TE_PIN GPIO_PIN_12 @@ -26,10 +26,6 @@ #define DISPLAY_TE_INTERRUPT_GPIOSEL EXTI_GPIOD #define DISPLAY_TE_INTERRUPT_EXTI_LINE EXTI_LINE_12 -#define DISPLAY_PANEL_INIT_SEQ lx154a2422_init_seq -#define DISPLAY_PANEL_ROTATE lx154a2422_rotate -#define TRANSFORM_TOUCH_COORDS lx154a2422_transform_touch_coords - #define BACKLIGHT_PWM_FREQ 12500 #define BACKLIGHT_PWM_TIM TIM17 #define BACKLIGHT_PWM_TIM_CLK_EN __HAL_RCC_TIM17_CLK_ENABLE diff --git a/core/embed/trezorhal/boards/trezor_t3t1_v4.h b/core/embed/trezorhal/boards/trezor_t3t1_v4.h index a43dee3789..bf2c0a00d8 100644 --- a/core/embed/trezorhal/boards/trezor_t3t1_v4.h +++ b/core/embed/trezorhal/boards/trezor_t3t1_v4.h @@ -1,9 +1,6 @@ #ifndef _TREZOR_T3T1_H #define _TREZOR_T3T1_H -#define DISPLAY_RESX 240 -#define DISPLAY_RESY 240 - #define VDD_3V3 1 #define HSE_16MHZ 1 @@ -17,8 +14,11 @@ #define USE_BACKLIGHT 1 #define USE_HASH_PROCESSOR 1 -#include "displays/panels/lx154a2422.h" -#include "displays/st7789v.h" +#define DISPLAY_RESX 240 +#define DISPLAY_RESY 240 +#define DISPLAY_LEGACY_HEADER "displays/st7789v.h" +#define DISPLAY_COLOR_MODE DMA2D_OUTPUT_RGB565 + #define DISPLAY_IDENTIFY 1 #define DISPLAY_TE_PORT GPIOD #define DISPLAY_TE_PIN GPIO_PIN_12 @@ -27,10 +27,6 @@ #define DISPLAY_TE_INTERRUPT_GPIOSEL EXTI_GPIOD #define DISPLAY_TE_INTERRUPT_EXTI_LINE EXTI_LINE_12 -#define DISPLAY_PANEL_INIT_SEQ lx154a2422_init_seq -#define DISPLAY_PANEL_ROTATE lx154a2422_rotate -#define TRANSFORM_TOUCH_COORDS lx154a2422_transform_touch_coords - #define BACKLIGHT_PWM_FREQ 12500 #define BACKLIGHT_PWM_TIM TIM8 #define BACKLIGHT_PWM_TIM_CLK_EN __HAL_RCC_TIM8_CLK_ENABLE diff --git a/core/embed/lib/display_interface.h b/core/embed/trezorhal/display.h similarity index 89% rename from core/embed/lib/display_interface.h rename to core/embed/trezorhal/display.h index 19f68161ac..5e296a8f75 100644 --- a/core/embed/lib/display_interface.h +++ b/core/embed/trezorhal/display.h @@ -17,13 +17,22 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef _DISPLAY_INTERFACE_H -#define _DISPLAY_INTERFACE_H +#ifndef TREZORHAL_DISPLAY_H +#define TREZORHAL_DISPLAY_H + +#if NEW_RENDERING +#include <xdisplay.h> +#else #include <stdint.h> #include "common.h" + #include TREZOR_BOARD +#ifdef DISPLAY_LEGACY_HEADER +#include DISPLAY_LEGACY_HEADER +#endif + #ifndef DISPLAY_FRAMEBUFFER_OFFSET_Y #define DISPLAY_FRAMEBUFFER_OFFSET_Y 0 #endif @@ -68,4 +77,5 @@ uint8_t *display_get_wr_addr(void); void display_shift_window(uint16_t pixels); uint16_t display_get_window_offset(void); -#endif //_DISPLAY_INTERFACE_H +#endif // NEW_RENDERING +#endif // TREZORHAL_DISPLAY_H diff --git a/core/embed/trezorhal/dma2d_bitblt.h b/core/embed/trezorhal/dma2d_bitblt.h new file mode 100644 index 0000000000..a000a7008f --- /dev/null +++ b/core/embed/trezorhal/dma2d_bitblt.h @@ -0,0 +1,45 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_DMA2D_BITBLT_H +#define TREZORHAL_DMA2D_BITBLT_H + +#include "gfx_bitblt.h" + +// Waits until any pending DMA2D operation is finished +void dma2d_wait(void); + +// Following functions are hardware (DMA2D) accelerated versions +// of `gfx_rgb565_xxx()` and `gfx_rgba8888_xxx()` function from `gfx_bitblt.h` + +// These functions may return `false`, indicating that the accelerated +// operation cannot be performed and must be implemented in software + +bool dma2d_rgb565_fill(const gfx_bitblt_t* bb); +bool dma2d_rgb565_copy_mono4(const gfx_bitblt_t* bb); +bool dma2d_rgb565_copy_rgb565(const gfx_bitblt_t* bb); +bool dma2d_rgb565_blend_mono4(const gfx_bitblt_t* bb); + +bool dma2d_rgba8888_fill(const gfx_bitblt_t* bb); +bool dma2d_rgba8888_copy_mono4(const gfx_bitblt_t* bb); +bool dma2d_rgba8888_copy_rgb565(const gfx_bitblt_t* bb); +bool dma2d_rgba8888_copy_rgba8888(const gfx_bitblt_t* bb); +bool dma2d_rgba8888_blend_mono4(const gfx_bitblt_t* bb); + +#endif // TREZORHAL_DMA2D_BITBLT_H diff --git a/core/embed/trezorhal/stm32f4/common.c b/core/embed/trezorhal/stm32f4/common.c index 4539211af2..b29cc6b6a5 100644 --- a/core/embed/trezorhal/stm32f4/common.c +++ b/core/embed/trezorhal/stm32f4/common.c @@ -219,7 +219,11 @@ void collect_hw_entropy(void) { // where this setting might be unknown void ensure_compatible_settings(void) { #ifdef TREZOR_MODEL_T +#ifdef NEW_RENDERING + display_set_compatible_settings(); +#else display_set_big_endian(); +#endif display_orientation(0); set_core_clock(CLOCK_168_MHZ); backlight_pwm_set_slow(); diff --git a/core/embed/trezorhal/stm32f4/displays/ltdc.c b/core/embed/trezorhal/stm32f4/displays/ltdc.c index 8d5bd3eca6..93ee9659e2 100644 --- a/core/embed/trezorhal/stm32f4/displays/ltdc.c +++ b/core/embed/trezorhal/stm32f4/displays/ltdc.c @@ -19,7 +19,7 @@ #include <stdint.h> #include TREZOR_BOARD -#include "display_interface.h" +#include "display.h" #include "memzero.h" #include STM32_HAL_H @@ -46,12 +46,12 @@ uint8_t *const DISPLAY_DATA_ADDRESS = 0; uint16_t cursor_x = 0; uint16_t cursor_y = 0; uint16_t window_x0 = 0; -uint16_t window_y0 = MAX_DISPLAY_RESX - 1; +uint16_t window_y0 = DISPLAY_RESX - 1; uint16_t window_x1 = 0; -uint16_t window_y1 = MAX_DISPLAY_RESY - 1; +uint16_t window_y1 = DISPLAY_RESY - 1; void display_pixeldata(uint16_t c) { - ((uint16_t *)LCD_FRAME_BUFFER)[(cursor_y * MAX_DISPLAY_RESX) + cursor_x] = c; + ((uint16_t *)LCD_FRAME_BUFFER)[(cursor_y * DISPLAY_RESX) + cursor_x] = c; cursor_x++; @@ -83,9 +83,9 @@ void BSP_LCD_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address) { /* Layer Init */ Layercfg.WindowX0 = 0; - Layercfg.WindowX1 = MAX_DISPLAY_RESX; + Layercfg.WindowX1 = DISPLAY_RESX; Layercfg.WindowY0 = 0; - Layercfg.WindowY1 = MAX_DISPLAY_RESY; + Layercfg.WindowY1 = DISPLAY_RESY; Layercfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; Layercfg.FBStartAdress = FB_Address; Layercfg.Alpha = 255; @@ -95,8 +95,8 @@ void BSP_LCD_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address) { Layercfg.Backcolor.Red = 0; Layercfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; Layercfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; - Layercfg.ImageWidth = MAX_DISPLAY_RESX; - Layercfg.ImageHeight = MAX_DISPLAY_RESY; + Layercfg.ImageWidth = DISPLAY_RESX; + Layercfg.ImageHeight = DISPLAY_RESY; HAL_LTDC_ConfigLayer(&LtdcHandler, &Layercfg, LayerIndex); @@ -380,7 +380,7 @@ void display_efficient_clear(void) { uint8_t *display_get_wr_addr(void) { uint32_t address = LCD_FRAME_BUFFER; /* Get the rectangle start address */ - address = (address + (2 * ((cursor_y)*MAX_DISPLAY_RESX + (cursor_x)))); + address = (address + (2 * ((cursor_y)*DISPLAY_RESX + (cursor_x)))); return (uint8_t *)address; } @@ -413,7 +413,7 @@ void display_shift_window(uint16_t pixels) { } uint16_t display_get_window_offset(void) { - return MAX_DISPLAY_RESX - display_get_window_width(); + return DISPLAY_RESX - display_get_window_width(); } void display_finish_actions(void) {} diff --git a/core/embed/trezorhal/stm32f4/displays/ltdc.h b/core/embed/trezorhal/stm32f4/displays/ltdc.h index 2efb2be963..94d83a026f 100644 --- a/core/embed/trezorhal/stm32f4/displays/ltdc.h +++ b/core/embed/trezorhal/stm32f4/displays/ltdc.h @@ -5,8 +5,8 @@ #include STM32_HAL_H #define TREZOR_FONT_BPP 4 -#define DISPLAY_FRAMEBUFFER_WIDTH MAX_DISPLAY_RESX -#define DISPLAY_FRAMEBUFFER_HEIGHT MAX_DISPLAY_RESY +#define DISPLAY_FRAMEBUFFER_WIDTH DISPLAY_RESX +#define DISPLAY_FRAMEBUFFER_HEIGHT DISPLAY_RESY #define DISPLAY_FRAMEBUFFER_OFFSET_X 0 #define DISPLAY_FRAMEBUFFER_OFFSET_Y 0 #define DISPLAY_COLOR_MODE DMA2D_OUTPUT_RGB565 diff --git a/core/embed/trezorhal/stm32f4/displays/panels/lx154a2422.c b/core/embed/trezorhal/stm32f4/displays/panels/lx154a2422.c index acc0efe3f9..9a632fd684 100644 --- a/core/embed/trezorhal/stm32f4/displays/panels/lx154a2422.c +++ b/core/embed/trezorhal/stm32f4/displays/panels/lx154a2422.c @@ -1,5 +1,5 @@ -#include "display_interface.h" +#include "display.h" #include "displays/st7789v.h" #include "touch.h" diff --git a/core/embed/trezorhal/stm32f4/displays/panels/tf15411a.c b/core/embed/trezorhal/stm32f4/displays/panels/tf15411a.c index 4c186bc745..179e3018f9 100644 --- a/core/embed/trezorhal/stm32f4/displays/panels/tf15411a.c +++ b/core/embed/trezorhal/stm32f4/displays/panels/tf15411a.c @@ -1,4 +1,4 @@ -#include "display_interface.h" +#include "display.h" #include "displays/st7789v.h" void tf15411a_init_seq(void) { diff --git a/core/embed/trezorhal/stm32f4/displays/st7789v.c b/core/embed/trezorhal/stm32f4/displays/st7789v.c index f4e047dc44..55659d54ae 100644 --- a/core/embed/trezorhal/stm32f4/displays/st7789v.c +++ b/core/embed/trezorhal/stm32f4/displays/st7789v.c @@ -22,7 +22,7 @@ #include <string.h> #include TREZOR_BOARD #include "backlight_pwm.h" -#include "display_interface.h" +#include "display.h" #include "irq.h" #include "memzero.h" #include "st7789v.h" @@ -34,6 +34,8 @@ #include "displays/panels/lx154a2411.h" #include "displays/panels/lx154a2422.h" #include "displays/panels/tf15411a.h" +#else +#include "displays/panels/lx154a2422.h" #endif // using const volatile instead of #define results in binaries that change @@ -241,7 +243,7 @@ int display_orientation(int degrees) { lx154a2422_rotate(degrees, &DISPLAY_PADDING); } #else - DISPLAY_PANEL_ROTATE(degrees, &DISPLAY_PADDING); + lx154a2422_rotate(degrees, &DISPLAY_PADDING); #endif panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); } @@ -292,7 +294,7 @@ void display_init_seq(void) { _154a_init_seq(); } #else - DISPLAY_PANEL_INIT_SEQ(); + lx154a2422_init_seq(); #endif display_unsleep(); diff --git a/core/embed/trezorhal/stm32f4/displays/ug-2828tswig01.c b/core/embed/trezorhal/stm32f4/displays/ug-2828tswig01.c index 2d165bbaab..4e09309a6f 100644 --- a/core/embed/trezorhal/stm32f4/displays/ug-2828tswig01.c +++ b/core/embed/trezorhal/stm32f4/displays/ug-2828tswig01.c @@ -19,7 +19,7 @@ #include <stdint.h> #include TREZOR_BOARD -#include "display_interface.h" +#include "display.h" #include "memzero.h" #include STM32_HAL_H diff --git a/core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c b/core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c index d8568923d8..ad3ea481bb 100644 --- a/core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c +++ b/core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c @@ -20,7 +20,7 @@ #include <stdbool.h> #include <stdint.h> #include TREZOR_BOARD -#include "display_interface.h" +#include "display.h" #include STM32_HAL_H #ifdef USE_CONSUMPTION_MASK diff --git a/core/embed/trezorhal/stm32f4/dma2d.c b/core/embed/trezorhal/stm32f4/dma2d.c index c27880cd58..c479d4b4c3 100644 --- a/core/embed/trezorhal/stm32f4/dma2d.c +++ b/core/embed/trezorhal/stm32f4/dma2d.c @@ -20,7 +20,7 @@ #include "dma2d.h" #include "colors.h" #include STM32_HAL_H -#include "display_interface.h" +#include "display.h" typedef enum { DMA2D_LAYER_FG = 1, diff --git a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c new file mode 100644 index 0000000000..8d43e5dbcc --- /dev/null +++ b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c @@ -0,0 +1,599 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include STM32_HAL_H + +#include <stddef.h> + +#include "dma2d_bitblt.h" +#include "gfx_color.h" + +static DMA2D_HandleTypeDef dma2d_handle = { + .Instance = (DMA2D_TypeDef*)DMA2D_BASE, +}; + +// Returns `true` if the specified address is accessible by DMA2D +// and can be used by any of the following functions +static inline bool dma2d_accessible(const void* ptr) { +#ifdef STM32F4 + const void* ccm_start = (const void*)0x10000000; + const void* ccm_end = (const void*)0x1000FFFF; + return !(ptr >= ccm_start && ptr <= ccm_end); +#else + return true; +#endif +} + +void dma2d_wait(void) { + while (HAL_DMA2D_PollForTransfer(&dma2d_handle, 10) != HAL_OK) + ; +} + +bool dma2d_rgb565_fill(const gfx_bitblt_t* bb) { + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row)) { + return false; + } + + if (bb->src_alpha == 255) { + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_RGB565; + dma2d_handle.Init.Mode = DMA2D_R2M; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + HAL_DMA2D_Start(&dma2d_handle, gfx_color_to_color32(bb->src_fg), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), + bb->width, bb->height); + } else { +#ifdef STM32U5 + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_RGB565; + dma2d_handle.Init.Mode = DMA2D_M2M_BLEND_FG; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB565; + dma2d_handle.LayerCfg[1].InputOffset = 0; + dma2d_handle.LayerCfg[1].AlphaMode = DMA2D_REPLACE_ALPHA; + dma2d_handle.LayerCfg[1].InputAlpha = bb->src_alpha; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + dma2d_handle.LayerCfg[0].InputColorMode = DMA2D_INPUT_RGB565; + dma2d_handle.LayerCfg[0].InputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + dma2d_handle.LayerCfg[0].AlphaMode = 0; + dma2d_handle.LayerCfg[0].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 0); + + HAL_DMA2D_BlendingStart( + &dma2d_handle, gfx_color_to_color32(bb->src_fg), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), bb->width, + bb->height); +#else + // STM32F4 can not accelerate blending with the fixed color + return false; +#endif + } + + return true; +} + +static void dma2d_config_clut(uint32_t layer, gfx_color_t fg, gfx_color_t bg) { +#define LAYER_COUNT 2 +#define GRADIENT_STEPS 16 + + static struct { + gfx_color_t c_fg; + gfx_color_t c_bg; + } cache[LAYER_COUNT] = {0}; + + if (layer >= LAYER_COUNT) { + return; + } + + volatile uint32_t* clut = + layer ? dma2d_handle.Instance->FGCLUT : dma2d_handle.Instance->BGCLUT; + + if (fg != cache[layer].c_fg || bg != cache[layer].c_bg) { + cache[layer].c_fg = fg; + cache[layer].c_bg = bg; + + for (int step = 0; step < GRADIENT_STEPS; step++) { + clut[step] = gfx_color32_blend_a4(fg, bg, step); + } + + DMA2D_CLUTCfgTypeDef clut; + clut.CLUTColorMode = DMA2D_CCM_ARGB8888; + clut.Size = GRADIENT_STEPS - 1; + clut.pCLUT = 0; // ??? + + HAL_DMA2D_ConfigCLUT(&dma2d_handle, clut, layer); + } +} + +static void dma2d_rgb565_copy_mono4_first_col(gfx_bitblt_t* bb, + const gfx_color16_t* gradient) { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + bb->dst_x; + uint8_t* src_ptr = (uint8_t*)bb->src_row + bb->src_x / 2; + + int height = bb->height; + + while (height-- > 0) { + uint8_t fg_lum = src_ptr[0] >> 4; + dst_ptr[0] = gradient[fg_lum]; + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +static void dma2d_rgb565_copy_mono4_last_col(gfx_bitblt_t* bb, + const gfx_color16_t* gradient) { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + (bb->dst_x + bb->width - 1); + uint8_t* src_ptr = (uint8_t*)bb->src_row + (bb->src_x + bb->width - 1) / 2; + + int height = bb->height; + + while (height-- > 0) { + uint8_t fg_lum = src_ptr[0] & 0x0F; + dst_ptr[0] = gradient[fg_lum]; + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +bool dma2d_rgb565_copy_mono4(const gfx_bitblt_t* params) { + const gfx_color16_t* src_gradient = NULL; + + gfx_bitblt_t bb_copy = *params; + gfx_bitblt_t* bb = &bb_copy; + + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + if (bb->src_x & 1) { + // First column of mono4 bitmap is odd + // Use the CPU to draw the first column + src_gradient = gfx_color16_gradient_a4(bb->src_fg, bb->src_bg); + dma2d_rgb565_copy_mono4_first_col(bb, src_gradient); + bb->dst_x += 1; + bb->src_x += 1; + bb->width -= 1; + } + + if (bb->width > 0 && bb->width & 1) { + // The width is odd + // Use the CPU to draw the last column + if (src_gradient == NULL) { + src_gradient = gfx_color16_gradient_a4(bb->src_fg, bb->src_bg); + } + dma2d_rgb565_copy_mono4_last_col(bb, src_gradient); + bb->width -= 1; + } + + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_RGB565; + dma2d_handle.Init.Mode = DMA2D_M2M_PFC; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_L4; + dma2d_handle.LayerCfg[1].InputOffset = bb->src_stride * 2 - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + dma2d_config_clut(1, bb->src_fg, bb->src_bg); + + HAL_DMA2D_Start(&dma2d_handle, (uint32_t)bb->src_row + bb->src_x / 2, + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), + bb->width, bb->height); + return true; +} + +bool dma2d_rgb565_copy_rgb565(const gfx_bitblt_t* bb) { + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_RGB565; + dma2d_handle.Init.Mode = DMA2D_M2M_PFC; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB565; + dma2d_handle.LayerCfg[1].InputOffset = + bb->src_stride / sizeof(uint16_t) - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + HAL_DMA2D_Start(&dma2d_handle, + (uint32_t)bb->src_row + bb->src_x * sizeof(uint16_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), + bb->width, bb->height); + return true; +} + +static void dma2d_rgb565_blend_mono4_first_col(const gfx_bitblt_t* bb) { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + bb->dst_x; + uint8_t* src_ptr = (uint8_t*)bb->src_row + bb->src_x / 2; + + int height = bb->height; + + while (height-- > 0) { + uint8_t fg_alpha = src_ptr[0] >> 4; + dst_ptr[0] = gfx_color16_blend_a4( + bb->src_fg, gfx_color16_to_color(dst_ptr[0]), fg_alpha); + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +static void dma2d_rgb565_blend_mono4_last_col(const gfx_bitblt_t* bb) { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + (bb->dst_x + bb->width - 1); + uint8_t* src_ptr = (uint8_t*)bb->src_row + (bb->src_x + bb->width - 1) / 2; + + int height = bb->height; + + while (height-- > 0) { + uint8_t fg_alpha = src_ptr[0] & 0x0F; + dst_ptr[0] = gfx_color16_blend_a4( + bb->src_fg, gfx_color16_to_color(dst_ptr[0]), fg_alpha); + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +bool dma2d_rgb565_blend_mono4(const gfx_bitblt_t* params) { + dma2d_wait(); + + gfx_bitblt_t bb_copy = *params; + gfx_bitblt_t* bb = &bb_copy; + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + if (bb->src_x & 1) { + // First column of mono4 bitmap is odd + // Use the CPU to draw the first column + dma2d_rgb565_blend_mono4_first_col(bb); + bb->dst_x += 1; + bb->src_x += 1; + bb->width -= 1; + } + + if (bb->width > 0 && bb->width & 1) { + // The width is odd + // Use the CPU to draw the last column + dma2d_rgb565_blend_mono4_last_col(bb); + bb->width -= 1; + } + + if (bb->width > 0) { + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_RGB565; + dma2d_handle.Init.Mode = DMA2D_M2M_BLEND; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_A4; + dma2d_handle.LayerCfg[1].InputOffset = bb->src_stride * 2 - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = gfx_color_to_color32(bb->src_fg); + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + dma2d_handle.LayerCfg[0].InputColorMode = DMA2D_INPUT_RGB565; + dma2d_handle.LayerCfg[0].InputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + dma2d_handle.LayerCfg[0].AlphaMode = 0; + dma2d_handle.LayerCfg[0].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 0); + + HAL_DMA2D_BlendingStart( + &dma2d_handle, (uint32_t)bb->src_row + bb->src_x / 2, + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), bb->width, + bb->height); + } + + return true; +} + +bool dma2d_rgba8888_fill(const gfx_bitblt_t* bb) { + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row)) { + return false; + } + + if (bb->src_alpha == 255) { + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + dma2d_handle.Init.Mode = DMA2D_R2M; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + HAL_DMA2D_Start(&dma2d_handle, gfx_color_to_color32(bb->src_fg), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), + bb->width, bb->height); + } else { +#ifdef STM32U5 + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + dma2d_handle.Init.Mode = DMA2D_M2M_BLEND_FG; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + dma2d_handle.LayerCfg[1].InputOffset = 0; + dma2d_handle.LayerCfg[1].AlphaMode = DMA2D_REPLACE_ALPHA; + dma2d_handle.LayerCfg[1].InputAlpha = bb->src_alpha; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + dma2d_handle.LayerCfg[0].InputColorMode = DMA2D_INPUT_ARGB8888; + dma2d_handle.LayerCfg[0].InputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + dma2d_handle.LayerCfg[0].AlphaMode = 0; + dma2d_handle.LayerCfg[0].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 0); + + HAL_DMA2D_BlendingStart( + &dma2d_handle, gfx_color_to_color32(bb->src_fg), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), bb->width, + bb->height); +#else + // STM32F4 can not accelerate blending with the fixed color + return false; +#endif + } + return true; +} + +static void dma2d_rgba8888_copy_mono4_first_col(gfx_bitblt_t* bb, + const gfx_color32_t* gradient) { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint8_t* src_ptr = (uint8_t*)bb->src_row + bb->src_x / 2; + + int height = bb->height; + + while (height-- > 0) { + uint8_t fg_lum = src_ptr[0] >> 4; + dst_ptr[0] = gradient[fg_lum]; + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +static void dma2d_rgba8888_copy_mono4_last_col(gfx_bitblt_t* bb, + const gfx_color32_t* gradient) { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + (bb->dst_x + bb->width - 1); + uint8_t* src_ptr = (uint8_t*)bb->src_row + (bb->src_x + bb->width - 1) / 2; + + int height = bb->height; + + while (height-- > 0) { + uint8_t fg_lum = src_ptr[0] & 0x0F; + dst_ptr[0] = gradient[fg_lum]; + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +bool dma2d_rgba8888_copy_mono4(const gfx_bitblt_t* params) { + const gfx_color32_t* src_gradient = NULL; + + gfx_bitblt_t bb_copy = *params; + gfx_bitblt_t* bb = &bb_copy; + + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + if (bb->src_x & 1) { + // First column of mono4 bitmap is odd + // Use the CPU to draw the first column + src_gradient = gfx_color32_gradient_a4(bb->src_fg, bb->src_bg); + dma2d_rgba8888_copy_mono4_first_col(bb, src_gradient); + bb->dst_x += 1; + bb->src_x += 1; + bb->width -= 1; + } + + if (bb->width > 0 && bb->width & 1) { + // The width is odd + // Use the CPU to draw the last column + if (src_gradient == NULL) { + src_gradient = gfx_color32_gradient_a4(bb->src_fg, bb->src_bg); + } + dma2d_rgba8888_copy_mono4_last_col(bb, src_gradient); + bb->width -= 1; + } + + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + dma2d_handle.Init.Mode = DMA2D_M2M_PFC; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_L4; + dma2d_handle.LayerCfg[1].InputOffset = bb->src_stride * 2 - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + dma2d_config_clut(1, bb->src_fg, bb->src_bg); + + HAL_DMA2D_Start(&dma2d_handle, (uint32_t)bb->src_row + bb->src_x / 2, + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), + bb->width, bb->height); + return true; +} + +bool dma2d_rgba8888_copy_rgb565(const gfx_bitblt_t* bb) { + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + dma2d_handle.Init.Mode = DMA2D_M2M_PFC; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB565; + dma2d_handle.LayerCfg[1].InputOffset = + bb->src_stride / sizeof(uint16_t) - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + HAL_DMA2D_Start(&dma2d_handle, + (uint32_t)bb->src_row + bb->src_x * sizeof(uint16_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), + bb->width, bb->height); + return true; +} + +static void dma2d_rgba8888_blend_mono4_first_col(const gfx_bitblt_t* bb) { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint8_t* src_ptr = (uint8_t*)bb->src_row + bb->src_x / 2; + + int height = bb->height; + + while (height-- > 0) { + uint8_t fg_alpha = src_ptr[0] >> 4; + dst_ptr[0] = gfx_color32_blend_a4( + bb->src_fg, gfx_color32_to_color(dst_ptr[0]), fg_alpha); + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +static void dma2d_rgba8888_blend_mono4_last_col(const gfx_bitblt_t* bb) { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + (bb->dst_x + bb->width - 1); + uint8_t* src_ptr = (uint8_t*)bb->src_row + (bb->src_x + bb->width - 1) / 2; + + int height = bb->height; + + while (height-- > 0) { + uint8_t fg_alpha = src_ptr[0] & 0x0F; + dst_ptr[0] = gfx_color32_blend_a4( + bb->src_fg, gfx_color32_to_color(dst_ptr[0]), fg_alpha); + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +bool dma2d_rgba8888_blend_mono4(const gfx_bitblt_t* params) { + dma2d_wait(); + + gfx_bitblt_t bb_copy = *params; + gfx_bitblt_t* bb = &bb_copy; + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + if (bb->src_x & 1) { + // First column of mono4 bitmap is odd + // Use the CPU to draw the first column + dma2d_rgba8888_blend_mono4_first_col(bb); + bb->dst_x += 1; + bb->src_x += 1; + bb->width -= 1; + } + + if (bb->width > 0 && bb->width & 1) { + // The width is odd + // Use the CPU to draw the last column + dma2d_rgba8888_blend_mono4_last_col(bb); + bb->width -= 1; + } + + if (bb->width > 0) { + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + dma2d_handle.Init.Mode = DMA2D_M2M_BLEND; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_A4; + dma2d_handle.LayerCfg[1].InputOffset = bb->src_stride * 2 - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = gfx_color_to_color32(bb->src_fg); + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + dma2d_handle.LayerCfg[0].InputColorMode = DMA2D_INPUT_ARGB8888; + dma2d_handle.LayerCfg[0].InputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + dma2d_handle.LayerCfg[0].AlphaMode = 0; + dma2d_handle.LayerCfg[0].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 0); + + HAL_DMA2D_BlendingStart( + &dma2d_handle, (uint32_t)bb->src_row + bb->src_x / 2, + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), bb->width, + bb->height); + } + + return true; +} + +bool dma2d_rgba8888_copy_rgba8888(const gfx_bitblt_t* bb) { + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + dma2d_handle.Init.Mode = DMA2D_M2M_PFC; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + dma2d_handle.LayerCfg[1].InputOffset = + bb->src_stride / sizeof(uint32_t) - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + HAL_DMA2D_Start(&dma2d_handle, + (uint32_t)bb->src_row + bb->src_x * sizeof(uint32_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), + bb->width, bb->height); + return true; +} diff --git a/core/embed/trezorhal/stm32f4/secret.c b/core/embed/trezorhal/stm32f4/secret.c index d299f2068f..9a90511fde 100644 --- a/core/embed/trezorhal/stm32f4/secret.c +++ b/core/embed/trezorhal/stm32f4/secret.c @@ -1,7 +1,7 @@ #include "secret.h" #include <string.h> #include "common.h" -#include "display.h" +#include "display_draw.h" #include "flash.h" #include "model.h" diff --git a/core/embed/trezorhal/stm32f4/touch/ft6x36.c b/core/embed/trezorhal/stm32f4/touch/ft6x36.c index 439dd16aa6..f2a7d96bce 100644 --- a/core/embed/trezorhal/stm32f4/touch/ft6x36.c +++ b/core/embed/trezorhal/stm32f4/touch/ft6x36.c @@ -260,8 +260,8 @@ uint32_t touch_read(void) { // first touch) (tested with FT6206) const uint32_t event_flag = touch_data[3] & 0xC0; if (touch_data[1] == GESTURE_NO_GESTURE) { - xy = TRANSFORM_TOUCH_COORDS((X_POS_MSB << 8) | X_POS_LSB, - (Y_POS_MSB << 8) | Y_POS_LSB); + xy = touch_pack_xy((X_POS_MSB << 8) | X_POS_LSB, + (Y_POS_MSB << 8) | Y_POS_LSB); if ((number_of_touch_points == 1) && (event_flag == EVENT_PRESS_DOWN)) { touching = 1; return TOUCH_START | xy; diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c new file mode 100644 index 0000000000..848843c2f1 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c @@ -0,0 +1,149 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <string.h> + +#include <xdisplay.h> + +#include "display_fb.h" +#include "display_io.h" +#include "display_panel.h" + +#include "backlight_pwm.h" +#include "supervise.h" + +#ifndef BOARDLOADER +#include "bg_copy.h" +#endif + +#if (DISPLAY_RESX != 240) || (DISPLAY_RESY != 240) +#error "Incompatible display resolution" +#endif + +// Display driver context. +typedef struct { + // Current display orientation (0, 90, 180, 270) + int orientation_angle; +} display_driver_t; + +// Display driver instance +static display_driver_t g_display_driver; + +void display_init(void) { + display_driver_t* drv = &g_display_driver; + memset(drv, 0, sizeof(display_driver_t)); + + display_io_init_gpio(); + display_io_init_fmc(); + display_panel_init(); + display_panel_set_little_endian(); + backlight_pwm_init(); + +#ifdef XFRAMEBUFFER + display_io_init_te_interrupt(); +#endif +} + +void display_reinit(void) { + display_driver_t* drv = &g_display_driver; + memset(drv, 0, sizeof(display_driver_t)); + + // Reinitialize FMC to set correct timing + // We have to do this in reinit because boardloader is fixed. + display_io_init_fmc(); + + // Important for model T as this is not set in boardloader + display_panel_set_little_endian(); + display_panel_init_gamma(); + backlight_pwm_reinit(); + +#ifdef XFRAMEBUFFER + display_io_init_te_interrupt(); +#endif +} + +void display_finish_actions(void) { +#ifdef XFRAMEBUFFER +#ifndef BOARDLOADER + bg_copy_wait(); +#endif +#endif +} + +int display_set_backlight(int level) { +#ifdef XFRAMEBUFFER +#ifndef BOARDLOADER + // wait for DMA transfer to finish before changing backlight + // so that we know that panel has current data + if (backlight_pwm_get() != level && !is_mode_handler()) { + bg_copy_wait(); + } +#endif +#endif + + return backlight_pwm_set(level); +} + +int display_get_backlight(void) { return backlight_pwm_get(); } + +int display_set_orientation(int angle) { + display_driver_t* drv = &g_display_driver; + + if (angle != drv->orientation_angle) { + if (angle == 0 || angle == 90 || angle == 180 || angle == 270) { + drv->orientation_angle = angle; + +#ifdef XFRAMEBUFFER + display_physical_fb_clear(); +#endif + + display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); + for (uint32_t i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { + // 2 bytes per pixel because we're using RGB 5-6-5 format + ISSUE_PIXEL_DATA(0x0000); + } + + display_panel_rotate(angle); + } + } + + return drv->orientation_angle; +} + +int display_get_orientation(void) { + display_driver_t* drv = &g_display_driver; + + return drv->orientation_angle; +} + +void display_wait_for_sync(void) { +#ifdef DISPLAY_TE_PIN + uint32_t id = display_panel_identify(); + if (id && (id != DISPLAY_ID_GC9307)) { + // synchronize with the panel synchronization signal + // in order to avoid visual tearing effects + while (GPIO_PIN_SET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) + ; + while (GPIO_PIN_RESET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) + ; + } +#endif +} + +void display_set_compatible_settings(void) { display_panel_set_big_endian(); } diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c new file mode 100644 index 0000000000..d9aab839c3 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c @@ -0,0 +1,218 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdbool.h> +#include <stdint.h> +#include <string.h> + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "display_fb.h" +#include "display_io.h" +#include "display_panel.h" +#include "xdisplay.h" + +#include "gfx_bitblt.h" +#include "irq.h" +#include "supervise.h" + +#ifndef BOARDLOADER +#include "bg_copy.h" +#endif + +#ifndef STM32U5 +#error Framebuffer only supported on STM32U5 for now +#endif + +// Size of the physical frame buffer in bytes +#define PHYSICAL_FRAME_BUFFER_SIZE (DISPLAY_RESX * DISPLAY_RESY * 2) + +// Physical frame buffers in internal SRAM memory. +// Both frame buffers layes in the fixed addresses that +// are shared between bootloaders and the firmware. +__attribute__((section(".fb1"))) +ALIGN_32BYTES(uint8_t physical_frame_buffer_0[PHYSICAL_FRAME_BUFFER_SIZE]); +__attribute__((section(".fb2"))) +ALIGN_32BYTES(uint8_t physical_frame_buffer_1[PHYSICAL_FRAME_BUFFER_SIZE]); + +// The current frame buffer selector at fixed memory address +// It's shared between bootloaders and the firmware +__attribute__((section(".framebuffer_select"))) uint32_t current_frame_buffer = + 0; + +void display_physical_fb_clear(void) { + memset(physical_frame_buffer_0, 0, sizeof(physical_frame_buffer_0)); + memset(physical_frame_buffer_1, 0, sizeof(physical_frame_buffer_1)); +} + +#ifndef BOARDLOADER +static bool pending_fb_switch = false; +#endif + +#ifndef BOARDLOADER +void DISPLAY_TE_INTERRUPT_HANDLER(void) { + HAL_NVIC_DisableIRQ(DISPLAY_TE_INTERRUPT_NUM); + + if (current_frame_buffer == 1) { + bg_copy_start_const_out_8((uint8_t *)physical_frame_buffer_1, + (uint8_t *)DISPLAY_DATA_ADDRESS, + DISPLAY_RESX * DISPLAY_RESY * 2); + + } else { + bg_copy_start_const_out_8((uint8_t *)physical_frame_buffer_0, + (uint8_t *)DISPLAY_DATA_ADDRESS, + DISPLAY_RESX * DISPLAY_RESY * 2); + } + + pending_fb_switch = false; + __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); +} + +static void wait_for_fb_switch(void) { + while (pending_fb_switch) { + __WFI(); + } + bg_copy_wait(); +} +#endif + +static void copy_fb_to_display(uint16_t *fb) { + for (int i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { + // 2 bytes per pixel because we're using RGB 5-6-5 format + ISSUE_PIXEL_DATA(fb[i]); + } +} + +static void switch_fb_manually(void) { + // sync with the panel refresh + while (GPIO_PIN_SET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) { + } + while (GPIO_PIN_RESET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) { + } + + if (current_frame_buffer == 0) { + current_frame_buffer = 1; + copy_fb_to_display((uint16_t *)physical_frame_buffer_1); + memcpy(physical_frame_buffer_0, physical_frame_buffer_1, + sizeof(physical_frame_buffer_0)); + + } else { + current_frame_buffer = 0; + copy_fb_to_display((uint16_t *)physical_frame_buffer_0); + memcpy(physical_frame_buffer_1, physical_frame_buffer_0, + sizeof(physical_frame_buffer_1)); + } +} + +#ifndef BOARDLOADER +static void switch_fb_in_backround(void) { + if (current_frame_buffer == 0) { + current_frame_buffer = 1; + + memcpy(physical_frame_buffer_0, physical_frame_buffer_1, + sizeof(physical_frame_buffer_0)); + + pending_fb_switch = true; + __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); + svc_enableIRQ(DISPLAY_TE_INTERRUPT_NUM); + } else { + current_frame_buffer = 0; + memcpy(physical_frame_buffer_1, physical_frame_buffer_0, + sizeof(physical_frame_buffer_1)); + + pending_fb_switch = true; + __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); + svc_enableIRQ(DISPLAY_TE_INTERRUPT_NUM); + } +} +#endif + +display_fb_info_t display_get_frame_buffer(void) { + void *addr; + + if (current_frame_buffer == 0) { + addr = (void *)physical_frame_buffer_1; + } else { + addr = (void *)physical_frame_buffer_0; + } + + display_fb_info_t fb = { + .ptr = addr, + .stride = DISPLAY_RESX * sizeof(uint16_t), + }; + + return fb; +} + +void display_refresh(void) { +#ifndef BOARDLOADER + wait_for_fb_switch(); + display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); + + if (is_mode_handler()) { + switch_fb_manually(); + } else { + switch_fb_in_backround(); + } +#else + display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); + switch_fb_manually(); +#endif +} + +void display_fill(const gfx_bitblt_t *bb) { + display_fb_info_t fb = display_get_frame_buffer(); + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = (uint16_t *)((uintptr_t)fb.ptr + fb.stride * bb_new.dst_y); + bb_new.dst_stride = fb.stride; + + gfx_rgb565_fill(&bb_new); +} + +void display_copy_rgb565(const gfx_bitblt_t *bb) { + display_fb_info_t fb = display_get_frame_buffer(); + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = (uint16_t *)((uintptr_t)fb.ptr + fb.stride * bb_new.dst_y); + bb_new.dst_stride = fb.stride; + + gfx_rgb565_copy_rgb565(&bb_new); +} + +void display_copy_mono1p(const gfx_bitblt_t *bb) { + display_fb_info_t fb = display_get_frame_buffer(); + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = (uint16_t *)((uintptr_t)fb.ptr + fb.stride * bb_new.dst_y); + bb_new.dst_stride = fb.stride; + + gfx_rgb565_copy_mono1p(&bb_new); +} + +void display_copy_mono4(const gfx_bitblt_t *bb) { + display_fb_info_t fb = display_get_frame_buffer(); + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = (uint16_t *)((uintptr_t)fb.ptr + fb.stride * bb_new.dst_y); + bb_new.dst_stride = fb.stride; + + gfx_rgb565_copy_mono4(&bb_new); +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h new file mode 100644 index 0000000000..d216be9c46 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h @@ -0,0 +1,32 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_DISPLAY_FB_H +#define TREZORHAL_DISPLAY_FB_H + +#include <stdint.h> + +#ifdef XFRAMEBUFFER + +// Clears both physical frame buffers +void display_physical_fb_clear(void); + +#endif // XFRAMEBUFFER + +#endif // TREZORHAL_DISPLAY_FB_H diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c new file mode 100644 index 0000000000..fe02ca207a --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c @@ -0,0 +1,145 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "display_io.h" +#include "irq.h" + +__IO DISP_MEM_TYPE *const DISPLAY_CMD_ADDRESS = + (__IO DISP_MEM_TYPE *const)((uint32_t)DISPLAY_MEMORY_BASE); +__IO DISP_MEM_TYPE *const DISPLAY_DATA_ADDRESS = + (__IO DISP_MEM_TYPE *const)((uint32_t)DISPLAY_MEMORY_BASE | + (DISPLAY_ADDR_SHIFT << DISPLAY_MEMORY_PIN)); + +void display_io_init_gpio(void) { + // init peripherals + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + __HAL_RCC_FMC_CLK_ENABLE(); + + GPIO_InitTypeDef GPIO_InitStructure; + + // LCD_RST/PC14 + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStructure.Alternate = 0; + GPIO_InitStructure.Pin = GPIO_PIN_14; + // default to keeping display in reset + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); + HAL_GPIO_Init(GPIOC, &GPIO_InitStructure); + +#ifdef DISPLAY_TE_PIN + // LCD_FMARK (tearing effect) + GPIO_InitStructure.Mode = GPIO_MODE_INPUT; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Alternate = 0; + GPIO_InitStructure.Pin = DISPLAY_TE_PIN; + HAL_GPIO_Init(DISPLAY_TE_PORT, &GPIO_InitStructure); +#endif + + GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Alternate = GPIO_AF12_FMC; + // LCD_CS/PD7 LCD_RS/PD11 LCD_RD/PD4 LCD_WR/PD5 + GPIO_InitStructure.Pin = GPIO_PIN_7 | GPIO_PIN_11 | GPIO_PIN_4 | GPIO_PIN_5; + HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); + // LCD_D0/PD14 LCD_D1/PD15 LCD_D2/PD0 LCD_D3/PD1 + GPIO_InitStructure.Pin = GPIO_PIN_14 | GPIO_PIN_15 | GPIO_PIN_0 | GPIO_PIN_1; + HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); + // LCD_D4/PE7 LCD_D5/PE8 LCD_D6/PE9 LCD_D7/PE10 + GPIO_InitStructure.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; + HAL_GPIO_Init(GPIOE, &GPIO_InitStructure); +#ifdef USE_DISP_I8080_16BIT_DW + // LCD_D8/PE11 LCD_D9/PE12 LCD_D10/PE13 LCD_D11/PE14 + GPIO_InitStructure.Pin = + GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14; + HAL_GPIO_Init(GPIOE, &GPIO_InitStructure); + // LCD_D12/PE15 + GPIO_InitStructure.Pin = GPIO_PIN_15; + HAL_GPIO_Init(GPIOE, &GPIO_InitStructure); + // LCD_D13/PD8 LCD_D14/PD9 LCD_D15/PD10 + GPIO_InitStructure.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; + HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); +#endif +} + +void display_io_init_fmc(void) { + // Reference UM1725 "Description of STM32F4 HAL and LL drivers", + // section 64.2.1 "How to use this driver" + SRAM_HandleTypeDef external_display_data_sram = {0}; + external_display_data_sram.Instance = FMC_NORSRAM_DEVICE; + external_display_data_sram.Extended = FMC_NORSRAM_EXTENDED_DEVICE; + external_display_data_sram.Init.NSBank = FMC_NORSRAM_BANK1; + external_display_data_sram.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE; + external_display_data_sram.Init.MemoryType = FMC_MEMORY_TYPE_SRAM; +#ifdef USE_DISP_I8080_16BIT_DW + external_display_data_sram.Init.MemoryDataWidth = + FMC_NORSRAM_MEM_BUS_WIDTH_16; +#elif USE_DISP_I8080_8BIT_DW + external_display_data_sram.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_8; +#endif + external_display_data_sram.Init.BurstAccessMode = + FMC_BURST_ACCESS_MODE_DISABLE; + external_display_data_sram.Init.WaitSignalPolarity = + FMC_WAIT_SIGNAL_POLARITY_LOW; + external_display_data_sram.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS; + external_display_data_sram.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE; + external_display_data_sram.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE; + external_display_data_sram.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE; + external_display_data_sram.Init.AsynchronousWait = + FMC_ASYNCHRONOUS_WAIT_DISABLE; + external_display_data_sram.Init.WriteBurst = FMC_WRITE_BURST_DISABLE; + external_display_data_sram.Init.ContinuousClock = + FMC_CONTINUOUS_CLOCK_SYNC_ONLY; + external_display_data_sram.Init.PageSize = FMC_PAGE_SIZE_NONE; + + // reference RM0090 section 37.5 Table 259, 37.5.4, Mode 1 SRAM, and 37.5.6 + FMC_NORSRAM_TimingTypeDef normal_mode_timing = {0}; + normal_mode_timing.AddressSetupTime = 5; + normal_mode_timing.AddressHoldTime = 1; // don't care + normal_mode_timing.DataSetupTime = 6; + normal_mode_timing.BusTurnAroundDuration = 0; // don't care + normal_mode_timing.CLKDivision = 2; // don't care + normal_mode_timing.DataLatency = 2; // don't care + normal_mode_timing.AccessMode = FMC_ACCESS_MODE_A; + + HAL_SRAM_Init(&external_display_data_sram, &normal_mode_timing, NULL); +} + +#ifdef DISPLAY_TE_INTERRUPT_HANDLER +void display_io_init_te_interrupt(void) { + EXTI_HandleTypeDef EXTI_Handle = {0}; + EXTI_ConfigTypeDef EXTI_Config = {0}; + EXTI_Config.GPIOSel = DISPLAY_TE_INTERRUPT_GPIOSEL; + EXTI_Config.Line = DISPLAY_TE_INTERRUPT_EXTI_LINE; + EXTI_Config.Mode = EXTI_MODE_INTERRUPT; + EXTI_Config.Trigger = EXTI_TRIGGER_RISING; + HAL_EXTI_SetConfigLine(&EXTI_Handle, &EXTI_Config); + + // setup interrupt for tearing effect pin + HAL_NVIC_SetPriority(DISPLAY_TE_INTERRUPT_NUM, IRQ_PRI_DMA, 0); +} +#endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.h new file mode 100644 index 0000000000..75be10ef22 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.h @@ -0,0 +1,67 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_DISPLAY_IO_H +#define TREZORHAL_DISPLAY_IO_H + +#include STM32_HAL_H +#include TREZOR_BOARD + +void display_io_init_gpio(void); +void display_io_init_fmc(void); +void display_io_init_te_interrupt(void); + +#ifndef FMC_BANK1 +#define FMC_BANK1 0x60000000U +#endif + +#define DISPLAY_MEMORY_BASE FMC_BANK1 +#define DISPLAY_MEMORY_PIN 16 + +#ifdef USE_DISP_I8080_16BIT_DW +#define DISPLAY_ADDR_SHIFT 2 +#define DISP_MEM_TYPE uint16_t +#elif USE_DISP_I8080_8BIT_DW +#define DISPLAY_ADDR_SHIFT 1 +#define DISP_MEM_TYPE uint8_t +#else +#error "Unsupported display interface" +#endif + +/*#define DISPLAY_CMD_ADDRESS ((__IO DISP_MEM_TYPE *)(DISPLAY_MEMORY_BASE)) +#define DISPLAY_DATA_ADDRESS \ + ((__IO DISP_MEM_TYPE *)(DISPLAY_MEMORY_BASE | \ + (DISPLAY_ADDR_SHIFT << DISPLAY_MEMORY_PIN))) +*/ + +extern __IO DISP_MEM_TYPE *const DISPLAY_CMD_ADDRESS; +extern __IO DISP_MEM_TYPE *const DISPLAY_DATA_ADDRESS; + +#define ISSUE_CMD_BYTE(X) (*(DISPLAY_CMD_ADDRESS) = (X)) +#define ISSUE_DATA_BYTE(X) (*(DISPLAY_DATA_ADDRESS) = (X)) + +#ifdef USE_DISP_I8080_16BIT_DW +#define ISSUE_PIXEL_DATA(X) DATA(X) +#elif USE_DISP_I8080_8BIT_DW +#define ISSUE_PIXEL_DATA(X) \ + ISSUE_DATA_BYTE((X) & 0xFF); \ + ISSUE_DATA_BYTE((X) >> 8) +#endif + +#endif // TREZORHAL_DISPLAY_IO_H diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c new file mode 100644 index 0000000000..011bc7a3b4 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c @@ -0,0 +1,104 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include TREZOR_BOARD + +#include <xdisplay.h> + +#include "display_io.h" +#include "display_panel.h" + +void display_refresh(void) { + // if the framebuffer is not used the implementation is empty +} + +static inline void set_window(const gfx_bitblt_t* bb) { + display_panel_set_window(bb->dst_x, bb->dst_y, bb->dst_x + bb->width - 1, + bb->dst_y + bb->height + 1); +} + +// For future notice, if we ever want to do a new model using progressive +// rendering. +// +// Following functions can be optimized by using DMA (regular is likely enough) +// to copy the data, along with the fill function. If even more performance is +// needed, we could use double-slice similarly to double-framebuffer and render +// to one with DMA2D while copying the other to the display with DMA. + +void display_fill(const gfx_bitblt_t* bb) { + set_window(bb); + + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + ISSUE_PIXEL_DATA(bb->src_fg); + } + } +} + +void display_copy_rgb565(const gfx_bitblt_t* bb) { + set_window(bb); + + uint16_t* src_ptr = (uint16_t*)bb->src_row + bb->src_x; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + ISSUE_PIXEL_DATA(src_ptr[x]); + } + src_ptr += bb->src_stride / sizeof(*src_ptr); + } +} + +void display_copy_mono1p(const gfx_bitblt_t* bb) { + set_window(bb); + + uint8_t* src = (uint8_t*)bb->src_row; + uint16_t src_ofs = bb->src_stride * bb->src_y + bb->src_x; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t mask = 1 << (7 - ((src_ofs + x) & 7)); + uint8_t data = src[(src_ofs + x) / 8]; + ISSUE_PIXEL_DATA((data & mask) ? bb->src_fg : bb->src_bg); + } + src_ofs += bb->src_stride; + } +} + +void display_copy_mono4(const gfx_bitblt_t* bb) { + set_window(bb); + + const gfx_color16_t* gradient = + gfx_color16_gradient_a4(bb->src_fg, bb->src_bg); + + uint8_t* src_row = (uint8_t*)bb->src_row; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t fg_data = src_row[(x + bb->src_x) / 2]; + uint8_t fg_lum = (x + bb->src_x) & 1 ? fg_data >> 4 : fg_data & 0xF; + ISSUE_PIXEL_DATA(gradient[fg_lum]); + } + src_row += bb->src_stride / sizeof(*src_row); + } +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c new file mode 100644 index 0000000000..aaf86d8e84 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c @@ -0,0 +1,244 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +// using const volatile instead of #define results in binaries that change +// only in 1-byte when the flag changes. +// using #define leads compiler to over-optimize the code leading to bigger +// differencies in the resulting binaries. + +#include "display_panel.h" +#include "display_io.h" + +#ifdef TREZOR_MODEL_T +#include "panels/154a.h" +#include "panels/lx154a2411.h" +#include "panels/lx154a2422.h" +#include "panels/tf15411a.h" +#else +#include "panels/lx154a2422.h" +#endif + +// using const volatile instead of #define results in binaries that change +// only in 1-byte when the flag changes. +// using #define leads compiler to over-optimize the code leading to bigger +// differencies in the resulting binaries. +const volatile uint8_t DISPLAY_ST7789V_INVERT_COLORS2 = 1; + +// Window padding (correction) when using 90dg or 270dg orientation +// (internally the display is 240x320 but we use only 240x240) +static display_padding_t g_window_padding; + +#ifdef DISPLAY_IDENTIFY +static uint32_t read_display_id(uint8_t command) { + volatile uint8_t c = 0; + uint32_t id = 0; + ISSUE_CMD_BYTE(command); + c = *DISPLAY_DATA_ADDRESS; // first returned value is a dummy value and + // should be discarded + c = *DISPLAY_DATA_ADDRESS; + id |= (c << 16); + c = *DISPLAY_DATA_ADDRESS; + id |= (c << 8); + c = *DISPLAY_DATA_ADDRESS; + id |= c; + return id; +} + +uint32_t display_panel_identify(void) { + static uint32_t id = 0x000000U; + static bool id_initialized = false; + + // Return immediately if id has been already initialized + if (id_initialized) return id; + + // RDDID: Read Display ID + id = read_display_id(0x04); + // the default RDDID for ILI9341 should be 0x8000. + // some display modules return 0x0. + // the ILI9341 has an extra id, let's check it here. + if ((id != DISPLAY_ID_ST7789V) && (id != DISPLAY_ID_GC9307)) { + // Read ID4 + uint32_t id4 = read_display_id(0xD3); + if (id4 == DISPLAY_ID_ILI9341V) { // definitely found a ILI9341 + id = id4; + } + } + id_initialized = true; + return id; +} +#else +uint32_t display_panel_identify(void) { return DISPLAY_ID_ST7789V; } +#endif + +bool display_panel_is_inverted() { + bool inv_on = false; + uint32_t id = display_panel_identify(); + if (id == DISPLAY_ID_ST7789V) { + volatile uint8_t c = 0; + ISSUE_CMD_BYTE(0x09); // read display status + c = *DISPLAY_DATA_ADDRESS; // don't care + c = *DISPLAY_DATA_ADDRESS; // don't care + c = *DISPLAY_DATA_ADDRESS; // don't care + c = *DISPLAY_DATA_ADDRESS; + if (c & 0x20) { + inv_on = true; + } + c = *DISPLAY_DATA_ADDRESS; // don't care + } + + return inv_on; +} + +void display_panel_sleep(void) { + uint32_t id = display_panel_identify(); + if ((id == DISPLAY_ID_ILI9341V) || (id == DISPLAY_ID_GC9307) || + (id == DISPLAY_ID_ST7789V)) { + ISSUE_CMD_BYTE(0x28); // DISPOFF: Display Off + ISSUE_CMD_BYTE(0x10); // SLPIN: Sleep in + HAL_Delay(5); // need to wait 5 milliseconds after "sleep in" before + // sending any new commands + } +} + +void display_panel_unsleep(void) { + uint32_t id = display_panel_identify(); + if ((id == DISPLAY_ID_ILI9341V) || (id == DISPLAY_ID_GC9307) || + (id == DISPLAY_ID_ST7789V)) { + ISSUE_CMD_BYTE(0x11); // SLPOUT: Sleep Out + HAL_Delay(5); // need to wait 5 milliseconds after "sleep out" before + // sending any new commands + ISSUE_CMD_BYTE(0x29); // DISPON: Display On + } +} + +void display_panel_set_window(uint16_t x0, uint16_t y0, uint16_t x1, + uint16_t y1) { + x0 += g_window_padding.x; + x1 += g_window_padding.x; + y0 += g_window_padding.y; + y1 += g_window_padding.y; + + uint32_t id = display_panel_identify(); + if ((id == DISPLAY_ID_ILI9341V) || (id == DISPLAY_ID_GC9307) || + (id == DISPLAY_ID_ST7789V)) { + ISSUE_CMD_BYTE(0x2A); + ISSUE_DATA_BYTE(x0 >> 8); + ISSUE_DATA_BYTE(x0 & 0xFF); + ISSUE_DATA_BYTE(x1 >> 8); + ISSUE_DATA_BYTE(x1 & 0xFF); // column addr set + ISSUE_CMD_BYTE(0x2B); + ISSUE_DATA_BYTE(y0 >> 8); + ISSUE_DATA_BYTE(y0 & 0xFF); + ISSUE_DATA_BYTE(y1 >> 8); + ISSUE_DATA_BYTE(y1 & 0xFF); // row addr set + ISSUE_CMD_BYTE(0x2C); + } +} + +void display_panel_set_little_endian(void) { + uint32_t id = display_panel_identify(); + if (id == DISPLAY_ID_GC9307) { + // CANNOT SET ENDIAN FOR GC9307 + } else if (id == DISPLAY_ID_ST7789V) { + ISSUE_CMD_BYTE(0xB0); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0xF8); + } else if (id == DISPLAY_ID_ILI9341V) { + // Interface Control: XOR BGR as ST7789V does + ISSUE_CMD_BYTE(0xF6); + ISSUE_DATA_BYTE(0x09); + ISSUE_DATA_BYTE(0x30); + ISSUE_DATA_BYTE(0x20); + } +} + +void display_panel_set_big_endian(void) { + uint32_t id = display_panel_identify(); + if (id == DISPLAY_ID_GC9307) { + // CANNOT SET ENDIAN FOR GC9307 + } else if (id == DISPLAY_ID_ST7789V) { + ISSUE_CMD_BYTE(0xB0); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0xF0); + } else if (id == DISPLAY_ID_ILI9341V) { + // Interface Control: XOR BGR as ST7789V does + ISSUE_CMD_BYTE(0xF6); + ISSUE_DATA_BYTE(0x09); + ISSUE_DATA_BYTE(0x30); + ISSUE_DATA_BYTE(0x00); + } +} + +void display_panel_init(void) { + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); // LCD_RST/PC14 + // wait 10 milliseconds. only needs to be low for 10 microseconds. + // my dev display module ties display reset and touch panel reset together. + // keeping this low for max(display_reset_time, ctpm_reset_time) aids + // development and does not hurt. + HAL_Delay(10); + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET); // LCD_RST/PC14 + // max wait time for hardware reset is 120 milliseconds + // (experienced display flakiness using only 5ms wait before sending commands) + HAL_Delay(120); + + // identify the controller we will communicate with +#ifdef TREZOR_MODEL_T + uint32_t id = display_panel_identify(); + if (id == DISPLAY_ID_GC9307) { + tf15411a_init_seq(); + } else if (id == DISPLAY_ID_ST7789V) { + if (DISPLAY_ST7789V_INVERT_COLORS2) { + lx154a2422_init_seq(); + } else { + lx154a2411_init_seq(); + } + } else if (id == DISPLAY_ID_ILI9341V) { + _154a_init_seq(); + } +#else + lx154a2422_init_seq(); +#endif + + display_panel_unsleep(); +} + +void display_panel_init_gamma(void) { +#ifdef TREZOR_MODEL_T + uint32_t id = display_panel_identify(); + if (id == DISPLAY_ID_ST7789V && display_panel_is_inverted()) { + // newest TT display - set proper gamma + lx154a2422_gamma(); + } else if (id == DISPLAY_ID_ST7789V) { + lx154a2411_gamma(); + } +#endif +} + +void display_panel_rotate(int angle) { +#ifdef TREZOR_MODEL_T + uint32_t id = display_panel_identify(); + if (id == DISPLAY_ID_GC9307) { + tf15411a_rotate(angle, &g_window_padding); + } else { + lx154a2422_rotate(angle, &g_window_padding); + } +#else + lx154a2422_rotate(angle, &g_window_padding); +#endif +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.h new file mode 100644 index 0000000000..99935a7ba8 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.h @@ -0,0 +1,57 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_ST7789_PANEL_H +#define TREZORHAL_ST7789_PANEL_H + +#include <stdbool.h> +#include <stdint.h> + +// section "9.1.3 RDDID (04h): Read Display ID" +// of ST7789V datasheet +#define DISPLAY_ID_ST7789V 0x858552U +// section "6.2.1. Read display identification information (04h)" +// of GC9307 datasheet +#define DISPLAY_ID_GC9307 0x009307U +// section "8.3.23 Read ID4 (D3h)" +// of ILI9341V datasheet +#define DISPLAY_ID_ILI9341V 0x009341U + +typedef struct { + uint16_t x; + uint16_t y; +} display_padding_t; + +// Identifies the connected display panel and +// returns one of DISPLAY_ID_xxx constant +uint32_t display_panel_identify(void); +bool display_panel_is_inverted(); + +void display_panel_init(void); +void display_panel_init_gamma(void); +void display_panel_set_little_endian(void); +void display_panel_set_big_endian(void); + +void display_panel_sleep(void); +void display_panel_unsleep(void); +void display_panel_set_window(uint16_t x0, uint16_t y0, uint16_t x1, + uint16_t y1); +void display_panel_rotate(int angle); + +#endif // TREZORHAL_ST7789_PANEL_H diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.c new file mode 100644 index 0000000000..8d7dc0fe9c --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.c @@ -0,0 +1,132 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "../display_io.h" + +void _154a_init_seq(void) { + // most recent manual: https://www.newhavendisplay.com/app_notes/ILI9341.pdf + // TEON: Tearing Effect Line On; V-blanking only + ISSUE_CMD_BYTE(0x35); + ISSUE_DATA_BYTE(0x00); + + // COLMOD: Interface Pixel format; 65K color: 16-bit/pixel (RGB 5-6-5 bits + // input) + ISSUE_CMD_BYTE(0x3A); + ISSUE_DATA_BYTE(0x55); + + // Display Function Control: gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xB6); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0xC2); + ISSUE_DATA_BYTE(0x27); + ISSUE_DATA_BYTE(0x00); + + // Interface Control: XOR BGR as ST7789V does + ISSUE_CMD_BYTE(0xF6); + ISSUE_DATA_BYTE(0x09); + ISSUE_DATA_BYTE(0x30); + ISSUE_DATA_BYTE(0x00); + + // the above config is the most important and definitely necessary + + ISSUE_CMD_BYTE(0xCF); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0xC1); + ISSUE_DATA_BYTE(0x30); + + ISSUE_CMD_BYTE(0xED); + ISSUE_DATA_BYTE(0x64); + ISSUE_DATA_BYTE(0x03); + ISSUE_DATA_BYTE(0x12); + ISSUE_DATA_BYTE(0x81); + + ISSUE_CMD_BYTE(0xE8); + ISSUE_DATA_BYTE(0x85); + ISSUE_DATA_BYTE(0x10); + ISSUE_DATA_BYTE(0x7A); + + ISSUE_CMD_BYTE(0xF7); + ISSUE_DATA_BYTE(0x20); + + ISSUE_CMD_BYTE(0xEA); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x00); + + // power control VRH[5:0] + ISSUE_CMD_BYTE(0xC0); + ISSUE_DATA_BYTE(0x23); + + // power control SAP[2:0] BT[3:0] + ISSUE_CMD_BYTE(0xC1); + ISSUE_DATA_BYTE(0x12); + + // vcm control 1 + ISSUE_CMD_BYTE(0xC5); + ISSUE_DATA_BYTE(0x60); + ISSUE_DATA_BYTE(0x44); + + // vcm control 2 + ISSUE_CMD_BYTE(0xC7); + ISSUE_DATA_BYTE(0x8A); + + // framerate + ISSUE_CMD_BYTE(0xB1); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x18); + + // 3 gamma func disable + ISSUE_CMD_BYTE(0xF2); + ISSUE_DATA_BYTE(0x00); + + // gamma curve 1 + ISSUE_CMD_BYTE(0xE0); + ISSUE_DATA_BYTE(0x0F); + ISSUE_DATA_BYTE(0x2F); + ISSUE_DATA_BYTE(0x2C); + ISSUE_DATA_BYTE(0x0B); + ISSUE_DATA_BYTE(0x0F); + ISSUE_DATA_BYTE(0x09); + ISSUE_DATA_BYTE(0x56); + ISSUE_DATA_BYTE(0xD9); + ISSUE_DATA_BYTE(0x4A); + ISSUE_DATA_BYTE(0x0B); + ISSUE_DATA_BYTE(0x14); + ISSUE_DATA_BYTE(0x05); + ISSUE_DATA_BYTE(0x0C); + ISSUE_DATA_BYTE(0x06); + ISSUE_DATA_BYTE(0x00); + + // gamma curve 2 + ISSUE_CMD_BYTE(0xE1); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x10); + ISSUE_DATA_BYTE(0x13); + ISSUE_DATA_BYTE(0x04); + ISSUE_DATA_BYTE(0x10); + ISSUE_DATA_BYTE(0x06); + ISSUE_DATA_BYTE(0x25); + ISSUE_DATA_BYTE(0x26); + ISSUE_DATA_BYTE(0x3B); + ISSUE_DATA_BYTE(0x04); + ISSUE_DATA_BYTE(0x0B); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x33); + ISSUE_DATA_BYTE(0x39); + ISSUE_DATA_BYTE(0x0F); +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.h new file mode 100644 index 0000000000..410455abb3 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.h @@ -0,0 +1,27 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef _154A_H_ +#define _154A_H_ + +// ILI9341 IC controller + +void _154a_init_seq(void); + +#endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.c new file mode 100644 index 0000000000..b81ee75bbf --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.c @@ -0,0 +1,82 @@ + +#include "../display_io.h" + +void lx154a2411_gamma(void) { + // positive voltage correction + ISSUE_CMD_BYTE(0xE0); + ISSUE_DATA_BYTE(0xD0); + ISSUE_DATA_BYTE(0x03); + ISSUE_DATA_BYTE(0x08); + ISSUE_DATA_BYTE(0x0E); + ISSUE_DATA_BYTE(0x11); + ISSUE_DATA_BYTE(0x2B); + ISSUE_DATA_BYTE(0x3B); + ISSUE_DATA_BYTE(0x44); + ISSUE_DATA_BYTE(0x4C); + ISSUE_DATA_BYTE(0x2B); + ISSUE_DATA_BYTE(0x16); + ISSUE_DATA_BYTE(0x15); + ISSUE_DATA_BYTE(0x1E); + ISSUE_DATA_BYTE(0x21); + + // negative voltage correction + ISSUE_CMD_BYTE(0xE1); + ISSUE_DATA_BYTE(0xD0); + ISSUE_DATA_BYTE(0x03); + ISSUE_DATA_BYTE(0x08); + ISSUE_DATA_BYTE(0x0E); + ISSUE_DATA_BYTE(0x11); + ISSUE_DATA_BYTE(0x2B); + ISSUE_DATA_BYTE(0x3B); + ISSUE_DATA_BYTE(0x54); + ISSUE_DATA_BYTE(0x4C); + ISSUE_DATA_BYTE(0x2B); + ISSUE_DATA_BYTE(0x16); + ISSUE_DATA_BYTE(0x15); + ISSUE_DATA_BYTE(0x1E); + ISSUE_DATA_BYTE(0x21); +} + +void lx154a2411_init_seq(void) { + // most recent manual: + // https://www.newhavendisplay.com/appnotes/datasheets/LCDs/ST7789V.pdf + // TEON: Tearing Effect Line On; V-blanking only + ISSUE_CMD_BYTE(0x35); + ISSUE_DATA_BYTE(0x00); + + // COLMOD: Interface Pixel format; 65K color: 16-bit/pixel (RGB 5-6-5 bits + // input) + ISSUE_CMD_BYTE(0x3A); + ISSUE_DATA_BYTE(0x55); + + // CMD2EN: Commands in command table 2 can be executed when EXTC level is Low + ISSUE_CMD_BYTE(0xDF); + ISSUE_DATA_BYTE(0x5A); + ISSUE_DATA_BYTE(0x69); + ISSUE_DATA_BYTE(0x02); + ISSUE_DATA_BYTE(0x01); + + // LCMCTRL: LCM Control: XOR RGB setting + ISSUE_CMD_BYTE(0xC0); + ISSUE_DATA_BYTE(0x20); + + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is gate 80.; + // gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x11); + + // INVOFF (20h): Display Inversion Off + // INVON (21h): Display Inversion On + ISSUE_CMD_BYTE(0x20); + + // the above config is the most important and definitely necessary + + // PWCTRL1: Power Control 1 + ISSUE_CMD_BYTE(0xD0); + ISSUE_DATA_BYTE(0xA4); + ISSUE_DATA_BYTE(0xA1); + + lx154a2411_gamma(); +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.h new file mode 100644 index 0000000000..347aa3b58e --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.h @@ -0,0 +1,27 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef LX154A2411_H_ +#define LX154A2411_H_ + +// ST7789_V IC controller +void lx154a2411_gamma(void); +void lx154a2411_init_seq(void); + +#endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.c new file mode 100644 index 0000000000..d793e09522 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.c @@ -0,0 +1,159 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "lx154a2422.h" + +#include "../display_io.h" + +void lx154a2422_gamma(void) { + // positive voltage correction + ISSUE_CMD_BYTE(0xE0); + ISSUE_DATA_BYTE(0xD0); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x10); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x26); + ISSUE_DATA_BYTE(0x36); + ISSUE_DATA_BYTE(0x34); + ISSUE_DATA_BYTE(0x4D); + ISSUE_DATA_BYTE(0x18); + ISSUE_DATA_BYTE(0x13); + ISSUE_DATA_BYTE(0x14); + ISSUE_DATA_BYTE(0x2F); + ISSUE_DATA_BYTE(0x34); + + // negative voltage correction + ISSUE_CMD_BYTE(0xE1); + ISSUE_DATA_BYTE(0xD0); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x10); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x09); + ISSUE_DATA_BYTE(0x26); + ISSUE_DATA_BYTE(0x36); + ISSUE_DATA_BYTE(0x53); + ISSUE_DATA_BYTE(0x4C); + ISSUE_DATA_BYTE(0x18); + ISSUE_DATA_BYTE(0x14); + ISSUE_DATA_BYTE(0x14); + ISSUE_DATA_BYTE(0x2F); + ISSUE_DATA_BYTE(0x34); +} + +void lx154a2422_init_seq(void) { + // most recent manual: + // https://www.newhavendisplay.com/appnotes/datasheets/LCDs/ST7789V.pdf + // TEON: Tearing Effect Line On; V-blanking only + ISSUE_CMD_BYTE(0x35); + ISSUE_DATA_BYTE(0x00); + + // COLMOD: Interface Pixel format; 65K color: 16-bit/pixel (RGB 5-6-5 bits + // input) + ISSUE_CMD_BYTE(0x3A); + ISSUE_DATA_BYTE(0x55); + + // CMD2EN: Commands in command table 2 can be executed when EXTC level is Low + ISSUE_CMD_BYTE(0xDF); + ISSUE_DATA_BYTE(0x5A); + ISSUE_DATA_BYTE(0x69); + ISSUE_DATA_BYTE(0x02); + ISSUE_DATA_BYTE(0x01); + + // LCMCTRL: LCM Control: XOR RGB setting + ISSUE_CMD_BYTE(0xC0); + ISSUE_DATA_BYTE(0x20); + + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is gate 80.; + // gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x11); + + // INVOFF (20h): Display Inversion Off + // INVON (21h): Display Inversion On + ISSUE_CMD_BYTE(0x21); + + // the above config is the most important and definitely necessary + + // PWCTRL1: Power Control 1 + ISSUE_CMD_BYTE(0xD0); + ISSUE_DATA_BYTE(0xA4); + ISSUE_DATA_BYTE(0xA1); + + lx154a2422_gamma(); +} + +void lx154a2422_rotate(int degrees, display_padding_t* padding) { + uint16_t shift = 0; + char BX = 0, BY = 0; + +#define RGB (1 << 3) +#define ML (1 << 4) // vertical refresh order +#define MH (1 << 2) // horizontal refresh order +#define MV (1 << 5) +#define MX (1 << 6) +#define MY (1 << 7) + // MADCTL: Memory Data Access Control - reference: + // section 8.12 in the ST7789V manual + uint8_t display_command_parameter = 0; + switch (degrees) { + case 0: + display_command_parameter = 0; + BY = 0; + break; + case 90: + display_command_parameter = MV | MX | MH | ML; + BX = 1; + shift = 1; + break; + case 180: + display_command_parameter = MX | MY | MH | ML; + BY = 0; + shift = 1; + break; + case 270: + display_command_parameter = MV | MY; + BX = 1; + break; + } + + ISSUE_CMD_BYTE(0x36); + ISSUE_DATA_BYTE(display_command_parameter); + + if (shift) { + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is + // gate 80.; gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x11); + } else { + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is + // gate 80.; gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x11); + } + + padding->x = BX ? (320 - DISPLAY_RESY) : 0; + padding->y = BY ? (320 - DISPLAY_RESY) : 0; +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.h new file mode 100644 index 0000000000..ba726ba1f3 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.h @@ -0,0 +1,29 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef LX154A2422_H_ +#define LX154A2422_H_ + +#include "../display_panel.h" + +void lx154a2422_init_seq(void); +void lx154a2422_gamma(void); +void lx154a2422_rotate(int degrees, display_padding_t* padding); + +#endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.c new file mode 100644 index 0000000000..155bf017a7 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.c @@ -0,0 +1,174 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "tf15411a.h" +#include "../display_io.h" + +void tf15411a_init_seq(void) { + // Inter Register Enable1 + ISSUE_CMD_BYTE(0xFE); + + // Inter Register Enable2 + ISSUE_CMD_BYTE(0xEF); + + // TEON: Tearing Effect Line On; V-blanking only + ISSUE_CMD_BYTE(0x35); + ISSUE_DATA_BYTE(0x00); + + // COLMOD: Interface Pixel format; 65K color: 16-bit/pixel (RGB 5-6-5 bits + // input) + ISSUE_CMD_BYTE(0x3A); + ISSUE_DATA_BYTE(0x55); + + // Frame Rate + // ISSUE_CMD_BYTE(0xE8); ISSUE_DATA_BYTE(0x12); ISSUE_DATA_BYTE(0x00); + + // Power Control 2 + ISSUE_CMD_BYTE(0xC3); + ISSUE_DATA_BYTE(0x27); + + // Power Control 3 + ISSUE_CMD_BYTE(0xC4); + ISSUE_DATA_BYTE(0x18); + + // Power Control 4 + ISSUE_CMD_BYTE(0xC9); + ISSUE_DATA_BYTE(0x1F); + + ISSUE_CMD_BYTE(0xC5); + ISSUE_DATA_BYTE(0x0F); + + ISSUE_CMD_BYTE(0xC6); + ISSUE_DATA_BYTE(0x00); + + ISSUE_CMD_BYTE(0xC7); + ISSUE_DATA_BYTE(0x10); + + ISSUE_CMD_BYTE(0xC8); + ISSUE_DATA_BYTE(0x01); + + ISSUE_CMD_BYTE(0xFF); + ISSUE_DATA_BYTE(0x62); + + ISSUE_CMD_BYTE(0x99); + ISSUE_DATA_BYTE(0x3E); + + ISSUE_CMD_BYTE(0x9D); + ISSUE_DATA_BYTE(0x4B); + + ISSUE_CMD_BYTE(0x8E); + ISSUE_DATA_BYTE(0x0F); + + // SET_GAMMA1 + ISSUE_CMD_BYTE(0xF0); + ISSUE_DATA_BYTE(0x8F); + ISSUE_DATA_BYTE(0x1B); + ISSUE_DATA_BYTE(0x05); + ISSUE_DATA_BYTE(0x06); + ISSUE_DATA_BYTE(0x07); + ISSUE_DATA_BYTE(0x42); + + // SET_GAMMA3 + ISSUE_CMD_BYTE(0xF2); + ISSUE_DATA_BYTE(0x5C); + ISSUE_DATA_BYTE(0x1F); + ISSUE_DATA_BYTE(0x12); + ISSUE_DATA_BYTE(0x10); + ISSUE_DATA_BYTE(0x07); + ISSUE_DATA_BYTE(0x43); + + // SET_GAMMA2 + ISSUE_CMD_BYTE(0xF1); + ISSUE_DATA_BYTE(0x59); + ISSUE_DATA_BYTE(0xCF); + ISSUE_DATA_BYTE(0xCF); + ISSUE_DATA_BYTE(0x35); + ISSUE_DATA_BYTE(0x37); + ISSUE_DATA_BYTE(0x8F); + + // SET_GAMMA4 + ISSUE_CMD_BYTE(0xF3); + ISSUE_DATA_BYTE(0x58); + ISSUE_DATA_BYTE(0xCF); + ISSUE_DATA_BYTE(0xCF); + ISSUE_DATA_BYTE(0x35); + ISSUE_DATA_BYTE(0x37); + ISSUE_DATA_BYTE(0x8F); +} + +void tf15411a_rotate(int degrees, display_padding_t* padding) { + uint16_t shift = 0; + char BX = 0, BY = 0; + +#define RGB (1 << 3) +#define ML (1 << 4) // vertical refresh order +#define MH (1 << 2) // horizontal refresh order +#define MV (1 << 5) +#define MX (1 << 6) +#define MY (1 << 7) + // MADCTL: Memory Data Access Control - reference: + // section 9.3 in the ILI9341 manual + // section 6.2.18 in the GC9307 manual + // section 8.12 in the ST7789V manual + uint8_t display_command_parameter = 0; + switch (degrees) { + case 0: + display_command_parameter = 0; + BY = 1; + break; + case 90: + display_command_parameter = MV | MX | MH | ML; + BX = 0; + shift = 1; + break; + case 180: + display_command_parameter = MX | MY | MH | ML; + BY = 1; + shift = 1; + break; + case 270: + display_command_parameter = MV | MY; + BX = 0; + break; + } + + display_command_parameter ^= RGB | MY; // XOR RGB and MY settings + + ISSUE_CMD_BYTE(0x36); + ISSUE_DATA_BYTE(display_command_parameter); + + if (shift) { + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is + // gate 80.; gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x11); + } else { + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is + // gate 80.; gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x11); + } + + padding->x = BX ? (320 - DISPLAY_RESY) : 0; + padding->y = BY ? (320 - DISPLAY_RESY) : 0; +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.h new file mode 100644 index 0000000000..33988e0a74 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.h @@ -0,0 +1,30 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TF15411A_H_ +#define TF15411A_H_ + +#include "../display_panel.h" + +// GC9307 IC controller + +void tf15411a_init_seq(void); +void tf15411a_rotate(int degrees, display_padding_t* padding); + +#endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_driver.c new file mode 100644 index 0000000000..378e63f700 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_driver.c @@ -0,0 +1,154 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdint.h> +#include <string.h> + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "display_internal.h" +#include "ili9341_spi.h" +#include "xdisplay.h" + +#if (DISPLAY_RESX != 240) || (DISPLAY_RESY != 320) +#error "Incompatible display resolution" +#endif + +// Display driver context. +typedef struct { + // Pointer to the frame buffer + uint16_t *framebuf; + // Current display orientation (0, 90, 180, 270) + int orientation_angle; + // Current backlight level ranging from 0 to 255 + int backlight_level; +} display_driver_t; + +// Display driver instance +static display_driver_t g_display_driver; + +void display_init(void) { + display_driver_t *drv = &g_display_driver; + memset(drv, 0, sizeof(display_driver_t)); + drv->framebuf = (uint16_t *)FRAME_BUFFER_ADDR; + + // Initialize LTDC controller + BSP_LCD_Init(); + // Initialize external display controller + ili9341_init(); +} + +void display_reinit(void) { + display_driver_t *drv = &g_display_driver; + memset(drv, 0, sizeof(display_driver_t)); + drv->framebuf = (uint16_t *)FRAME_BUFFER_ADDR; +} + +void display_finish_actions(void) { + // Not used and intentionally left empty +} + +int display_set_backlight(int level) { + display_driver_t *drv = &g_display_driver; + + // Just emulation, not doing anything + drv->backlight_level = level; + return level; +} + +int display_get_backlight(void) { + display_driver_t *drv = &g_display_driver; + + return drv->backlight_level; +} + +int display_set_orientation(int angle) { + display_driver_t *drv = &g_display_driver; + + if (angle == 0 || angle == 90 || angle == 180 || angle == 270) { + // Just emulation, not doing anything + drv->orientation_angle = angle; + } + + return drv->orientation_angle; +} + +int display_get_orientation(void) { + display_driver_t *drv = &g_display_driver; + + return drv->orientation_angle; +} + +display_fb_info_t display_get_frame_buffer(void) { + display_driver_t *drv = &g_display_driver; + + display_fb_info_t fb = { + .ptr = (void *)drv->framebuf, + .stride = DISPLAY_RESX * sizeof(uint16_t), + }; + + return fb; +} + +void display_refresh(void) { + // Do nothing as using just a single frame buffer +} + +void display_set_compatible_settings() {} + +void display_fill(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = drv->framebuf + (DISPLAY_RESX * bb_new.dst_y); + bb_new.dst_stride = DISPLAY_RESX * sizeof(uint16_t); + + gfx_rgb565_fill(&bb_new); +} + +void display_copy_rgb565(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = drv->framebuf + (DISPLAY_RESX * bb_new.dst_y); + bb_new.dst_stride = DISPLAY_RESX * sizeof(uint16_t); + + gfx_rgb565_copy_rgb565(&bb_new); +} + +void display_copy_mono1p(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = drv->framebuf + (DISPLAY_RESX * bb_new.dst_y); + bb_new.dst_stride = DISPLAY_RESX * sizeof(uint16_t); + + gfx_rgb565_copy_mono1p(&bb_new); +} + +void display_copy_mono4(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = drv->framebuf + (DISPLAY_RESX * bb_new.dst_y); + bb_new.dst_stride = DISPLAY_RESX * sizeof(uint16_t); + + gfx_rgb565_copy_mono4(&bb_new); +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_internal.h b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_internal.h new file mode 100644 index 0000000000..c19c63a653 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_internal.h @@ -0,0 +1,36 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_DISPLAY_INTERNAL_H +#define TREZORHAL_DISPLAY_INTERNAL_H + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "sdram.h" + +// Frame buffer address in external SDRAM +#define FRAME_BUFFER_ADDR ((uint32_t)SDRAM_DEVICE_ADDR) +// Frame buffer size (16-bit per pixel RGB565) +#define FRAME_BUFFER_SIZE (DISPLAY_RESX * DISPLAY_RESY * 2) + +// Initializes LTDC controller and I/O pins +void BSP_LCD_Init(void); + +#endif // TREZORHAL_DISPLAY_INTERNAL_H diff --git a/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_ltdc.c b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_ltdc.c new file mode 100644 index 0000000000..df3a752c3b --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_ltdc.c @@ -0,0 +1,291 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdint.h> +#include <string.h> + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "display_internal.h" +#include "ili9341_spi.h" +#include "xdisplay.h" + +#define MAX_LAYER_NUMBER 2 + +LTDC_HandleTypeDef LtdcHandler; +static RCC_PeriphCLKInitTypeDef PeriphClkInitStruct; + +/* Default LCD configuration with LCD Layer 1 */ +uint32_t ActiveLayer = 0; + +/** + * @brief Initializes the LCD layers. + * @param LayerIndex: the layer foreground or background. + * @param FB_Address: the layer frame buffer. + */ +void BSP_LCD_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address) { + LTDC_LayerCfgTypeDef Layercfg; + + /* Layer Init */ + Layercfg.WindowX0 = 0; + Layercfg.WindowX1 = DISPLAY_RESX; + Layercfg.WindowY0 = 0; + Layercfg.WindowY1 = DISPLAY_RESY; + Layercfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; + Layercfg.FBStartAdress = FB_Address; + Layercfg.Alpha = 255; + Layercfg.Alpha0 = 0; + Layercfg.Backcolor.Blue = 0; + Layercfg.Backcolor.Green = 0; + Layercfg.Backcolor.Red = 0; + Layercfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; + Layercfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; + Layercfg.ImageWidth = DISPLAY_RESX; + Layercfg.ImageHeight = DISPLAY_RESY; + + HAL_LTDC_ConfigLayer(&LtdcHandler, &Layercfg, LayerIndex); + + // DrawProp[LayerIndex].BackColor = LCD_COLOR_WHITE; + // DrawProp[LayerIndex].pFont = &Font24; + // DrawProp[LayerIndex].TextColor = LCD_COLOR_BLACK; + + /* Dithering activation */ + HAL_LTDC_EnableDither(&LtdcHandler); +} + +/** + * @brief Selects the LCD Layer. + * @param LayerIndex: the Layer foreground or background. + */ +void BSP_LCD_SelectLayer(uint32_t LayerIndex) { ActiveLayer = LayerIndex; } + +/** + * @brief Sets a LCD Layer visible. + * @param LayerIndex: the visible Layer. + * @param state: new state of the specified layer. + * This parameter can be: ENABLE or DISABLE. + */ +void BSP_LCD_SetLayerVisible(uint32_t LayerIndex, FunctionalState state) { + if (state == ENABLE) { + __HAL_LTDC_LAYER_ENABLE(&LtdcHandler, LayerIndex); + } else { + __HAL_LTDC_LAYER_DISABLE(&LtdcHandler, LayerIndex); + } + __HAL_LTDC_RELOAD_CONFIG(&LtdcHandler); +} + +/** + * @brief Sets an LCD Layer visible without reloading. + * @param LayerIndex: Visible Layer + * @param State: New state of the specified layer + * This parameter can be one of the following values: + * @arg ENABLE + * @arg DISABLE + * @retval None + */ +void BSP_LCD_SetLayerVisible_NoReload(uint32_t LayerIndex, + FunctionalState State) { + if (State == ENABLE) { + __HAL_LTDC_LAYER_ENABLE(&LtdcHandler, LayerIndex); + } else { + __HAL_LTDC_LAYER_DISABLE(&LtdcHandler, LayerIndex); + } + /* Do not Sets the Reload */ +} + +/** + * @brief Configures the Transparency. + * @param LayerIndex: the Layer foreground or background. + * @param Transparency: the Transparency, + * This parameter must range from 0x00 to 0xFF. + */ +void BSP_LCD_SetTransparency(uint32_t LayerIndex, uint8_t Transparency) { + HAL_LTDC_SetAlpha(&LtdcHandler, Transparency, LayerIndex); +} + +/** + * @brief Configures the transparency without reloading. + * @param LayerIndex: Layer foreground or background. + * @param Transparency: Transparency + * This parameter must be a number between Min_Data = 0x00 and + * Max_Data = 0xFF + * @retval None + */ +void BSP_LCD_SetTransparency_NoReload(uint32_t LayerIndex, + uint8_t Transparency) { + HAL_LTDC_SetAlpha_NoReload(&LtdcHandler, Transparency, LayerIndex); +} + +/** + * @brief Sets a LCD layer frame buffer address. + * @param LayerIndex: specifies the Layer foreground or background + * @param Address: new LCD frame buffer value + */ +void BSP_LCD_SetLayerAddress(uint32_t LayerIndex, uint32_t Address) { + HAL_LTDC_SetAddress(&LtdcHandler, Address, LayerIndex); +} + +/** + * @brief Sets an LCD layer frame buffer address without reloading. + * @param LayerIndex: Layer foreground or background + * @param Address: New LCD frame buffer value + * @retval None + */ +void BSP_LCD_SetLayerAddress_NoReload(uint32_t LayerIndex, uint32_t Address) { + HAL_LTDC_SetAddress_NoReload(&LtdcHandler, Address, LayerIndex); +} + +void BSP_LCD_Init(void) { + GPIO_InitTypeDef GPIO_InitStructure = {0}; + + /* Enable the LTDC and DMA2D Clock */ + __HAL_RCC_LTDC_CLK_ENABLE(); + __HAL_RCC_DMA2D_CLK_ENABLE(); + + /* Enable GPIOs clock */ + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOG_CLK_ENABLE(); + + /* GPIOs Configuration */ + /* + +------------------------+-----------------------+----------------------------+ + + LCD pins assignment + + +------------------------+-----------------------+----------------------------+ + | LCD_TFT R2 <-> PC.10 | LCD_TFT G2 <-> PA.06 | LCD_TFT B2 <-> PD.06 | | + LCD_TFT R3 <-> PB.00 | LCD_TFT G3 <-> PG.10 | LCD_TFT B3 <-> PG.11 | + | LCD_TFT R4 <-> PA.11 | LCD_TFT G4 <-> PB.10 | LCD_TFT B4 <-> PG.12 | | + LCD_TFT R5 <-> PA.12 | LCD_TFT G5 <-> PB.11 | LCD_TFT B5 <-> PA.03 | + | LCD_TFT R6 <-> PB.01 | LCD_TFT G6 <-> PC.07 | LCD_TFT B6 <-> PB.08 | | + LCD_TFT R7 <-> PG.06 | LCD_TFT G7 <-> PD.03 | LCD_TFT B7 <-> PB.09 | + ------------------------------------------------------------------------------- + | LCD_TFT HSYNC <-> PC.06 | LCDTFT VSYNC <-> PA.04 | + | LCD_TFT CLK <-> PG.07 | LCD_TFT DE <-> PF.10 | + ----------------------------------------------------- + */ + + /* GPIOA configuration */ + GPIO_InitStructure.Pin = + GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_11 | GPIO_PIN_12; + GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FAST; + GPIO_InitStructure.Alternate = GPIO_AF14_LTDC; + HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); + + /* GPIOB configuration */ + GPIO_InitStructure.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11; + HAL_GPIO_Init(GPIOB, &GPIO_InitStructure); + + /* GPIOC configuration */ + GPIO_InitStructure.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_10; + HAL_GPIO_Init(GPIOC, &GPIO_InitStructure); + + /* GPIOD configuration */ + GPIO_InitStructure.Pin = GPIO_PIN_3 | GPIO_PIN_6; + HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); + + /* GPIOF configuration */ + GPIO_InitStructure.Pin = GPIO_PIN_10; + HAL_GPIO_Init(GPIOF, &GPIO_InitStructure); + + /* GPIOG configuration */ + GPIO_InitStructure.Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_11; + HAL_GPIO_Init(GPIOG, &GPIO_InitStructure); + + /* GPIOB configuration */ + GPIO_InitStructure.Pin = GPIO_PIN_0 | GPIO_PIN_1; + GPIO_InitStructure.Alternate = GPIO_AF9_LTDC; + HAL_GPIO_Init(GPIOB, &GPIO_InitStructure); + + /* GPIOG configuration */ + GPIO_InitStructure.Pin = GPIO_PIN_10 | GPIO_PIN_12; + HAL_GPIO_Init(GPIOG, &GPIO_InitStructure); + + /* On STM32F429I-DISCO, it is not possible to read ILI9341 ID because */ + /* PIN EXTC is not connected to VDD and then LCD_READ_ID4 is not accessible. + */ + /* In this case, ReadID function is bypassed.*/ + /*if(ili9341_drv.ReadID() == ILI9341_ID)*/ + + /* LTDC Configuration ----------------------------------------------------*/ + LtdcHandler.Instance = LTDC; + + /* Timing configuration (Typical configuration from ILI9341 datasheet) + HSYNC=10 (9+1) + HBP=20 (29-10+1) + ActiveW=240 (269-20-10+1) + HFP=10 (279-240-20-10+1) + + VSYNC=2 (1+1) + VBP=2 (3-2+1) + ActiveH=320 (323-2-2+1) + VFP=4 (327-320-2-2+1) + */ + + /* Configure horizontal synchronization width */ + LtdcHandler.Init.HorizontalSync = ILI9341_HSYNC; + /* Configure vertical synchronization height */ + LtdcHandler.Init.VerticalSync = ILI9341_VSYNC; + /* Configure accumulated horizontal back porch */ + LtdcHandler.Init.AccumulatedHBP = ILI9341_HBP; + /* Configure accumulated vertical back porch */ + LtdcHandler.Init.AccumulatedVBP = ILI9341_VBP; + /* Configure accumulated active width */ + LtdcHandler.Init.AccumulatedActiveW = 269; + /* Configure accumulated active height */ + LtdcHandler.Init.AccumulatedActiveH = 323; + /* Configure total width */ + LtdcHandler.Init.TotalWidth = 279; + /* Configure total height */ + LtdcHandler.Init.TotalHeigh = 327; + + /* Configure R,G,B component values for LCD background color */ + LtdcHandler.Init.Backcolor.Red = 0; + LtdcHandler.Init.Backcolor.Blue = 0; + LtdcHandler.Init.Backcolor.Green = 0; + + /* LCD clock configuration */ + /* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */ + /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN = 192 Mhz */ + /* PLLLCDCLK = PLLSAI_VCO Output/PLLSAIR = 192/4 = 48 Mhz */ + /* LTDC clock frequency = PLLLCDCLK / LTDC_PLLSAI_DIVR_8 = 48/4 = 6Mhz */ + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC; + PeriphClkInitStruct.PLLSAI.PLLSAIN = 192; + PeriphClkInitStruct.PLLSAI.PLLSAIR = 4; + PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_8; + HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct); + + /* Polarity */ + LtdcHandler.Init.HSPolarity = LTDC_HSPOLARITY_AL; + LtdcHandler.Init.VSPolarity = LTDC_VSPOLARITY_AL; + LtdcHandler.Init.DEPolarity = LTDC_DEPOLARITY_AL; + LtdcHandler.Init.PCPolarity = LTDC_PCPOLARITY_IPC; + + HAL_LTDC_Init(&LtdcHandler); + + /* Initialize the LCD Layers */ + BSP_LCD_LayerDefaultInit(1, FRAME_BUFFER_ADDR); + + memset((void *)FRAME_BUFFER_ADDR, 0, FRAME_BUFFER_SIZE); +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.c b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.c new file mode 100644 index 0000000000..309fb3f0d2 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.c @@ -0,0 +1,512 @@ + + +#include <stdint.h> +#include TREZOR_BOARD +#include "ili9341_spi.h" +#include STM32_HAL_H + +/** + * @brief ILI9341 chip IDs + */ +#define ILI9341_ID 0x9341 + +/** + * @brief ILI9341 Size + */ +#define ILI9341_LCD_PIXEL_WIDTH ((uint16_t)240) +#define ILI9341_LCD_PIXEL_HEIGHT ((uint16_t)320) + +/** + * @brief ILI9341 Timing + */ +/* Timing configuration (Typical configuration from ILI9341 datasheet) + HSYNC=10 (9+1) + HBP=20 (29-10+1) + ActiveW=240 (269-20-10+1) + HFP=10 (279-240-20-10+1) + + VSYNC=2 (1+1) + VBP=2 (3-2+1) + ActiveH=320 (323-2-2+1) + VFP=4 (327-320-2-2+1) +*/ + +/** + * @brief ILI9341 Registers + */ + +/* Level 1 Commands */ +#define LCD_SWRESET 0x01 /* Software Reset */ +#define LCD_READ_DISPLAY_ID 0x04 /* Read display identification information */ +#define LCD_RDDST 0x09 /* Read Display Status */ +#define LCD_RDDPM 0x0A /* Read Display Power Mode */ +#define LCD_RDDMADCTL 0x0B /* Read Display MADCTL */ +#define LCD_RDDCOLMOD 0x0C /* Read Display Pixel Format */ +#define LCD_RDDIM 0x0D /* Read Display Image Format */ +#define LCD_RDDSM 0x0E /* Read Display Signal Mode */ +#define LCD_RDDSDR 0x0F /* Read Display Self-Diagnostic Result */ +#define LCD_SPLIN 0x10 /* Enter Sleep Mode */ +#define LCD_SLEEP_OUT 0x11 /* Sleep out register */ +#define LCD_PTLON 0x12 /* Partial Mode ON */ +#define LCD_NORMAL_MODE_ON 0x13 /* Normal Display Mode ON */ +#define LCD_DINVOFF 0x20 /* Display Inversion OFF */ +#define LCD_DINVON 0x21 /* Display Inversion ON */ +#define LCD_GAMMA 0x26 /* Gamma register */ +#define LCD_DISPLAY_OFF 0x28 /* Display off register */ +#define LCD_DISPLAY_ON 0x29 /* Display on register */ +#define LCD_COLUMN_ADDR 0x2A /* Colomn address register */ +#define LCD_PAGE_ADDR 0x2B /* Page address register */ +#define LCD_GRAM 0x2C /* GRAM register */ +#define LCD_RGBSET 0x2D /* Color SET */ +#define LCD_RAMRD 0x2E /* Memory Read */ +#define LCD_PLTAR 0x30 /* Partial Area */ +#define LCD_VSCRDEF 0x33 /* Vertical Scrolling Definition */ +#define LCD_TEOFF 0x34 /* Tearing Effect Line OFF */ +#define LCD_TEON 0x35 /* Tearing Effect Line ON */ +#define LCD_MAC 0x36 /* Memory Access Control register*/ +#define LCD_VSCRSADD 0x37 /* Vertical Scrolling Start Address */ +#define LCD_IDMOFF 0x38 /* Idle Mode OFF */ +#define LCD_IDMON 0x39 /* Idle Mode ON */ +#define LCD_PIXEL_FORMAT 0x3A /* Pixel Format register */ +#define LCD_WRITE_MEM_CONTINUE 0x3C /* Write Memory Continue */ +#define LCD_READ_MEM_CONTINUE 0x3E /* Read Memory Continue */ +#define LCD_SET_TEAR_SCANLINE 0x44 /* Set Tear Scanline */ +#define LCD_GET_SCANLINE 0x45 /* Get Scanline */ +#define LCD_WDB 0x51 /* Write Brightness Display register */ +#define LCD_RDDISBV 0x52 /* Read Display Brightness */ +#define LCD_WCD 0x53 /* Write Control Display register*/ +#define LCD_RDCTRLD 0x54 /* Read CTRL Display */ +#define LCD_WRCABC 0x55 /* Write Content Adaptive Brightness Control */ +#define LCD_RDCABC 0x56 /* Read Content Adaptive Brightness Control */ +#define LCD_WRITE_CABC 0x5E /* Write CABC Minimum Brightness */ +#define LCD_READ_CABC 0x5F /* Read CABC Minimum Brightness */ +#define LCD_READ_ID1 0xDA /* Read ID1 */ +#define LCD_READ_ID2 0xDB /* Read ID2 */ +#define LCD_READ_ID3 0xDC /* Read ID3 */ + +/* Level 2 Commands */ +#define LCD_RGB_INTERFACE 0xB0 /* RGB Interface Signal Control */ +#define LCD_FRMCTR1 0xB1 /* Frame Rate Control (In Normal Mode) */ +#define LCD_FRMCTR2 0xB2 /* Frame Rate Control (In Idle Mode) */ +#define LCD_FRMCTR3 0xB3 /* Frame Rate Control (In Partial Mode) */ +#define LCD_INVTR 0xB4 /* Display Inversion Control */ +#define LCD_BPC 0xB5 /* Blanking Porch Control register */ +#define LCD_DFC 0xB6 /* Display Function Control register */ +#define LCD_ETMOD 0xB7 /* Entry Mode Set */ +#define LCD_BACKLIGHT1 0xB8 /* Backlight Control 1 */ +#define LCD_BACKLIGHT2 0xB9 /* Backlight Control 2 */ +#define LCD_BACKLIGHT3 0xBA /* Backlight Control 3 */ +#define LCD_BACKLIGHT4 0xBB /* Backlight Control 4 */ +#define LCD_BACKLIGHT5 0xBC /* Backlight Control 5 */ +#define LCD_BACKLIGHT7 0xBE /* Backlight Control 7 */ +#define LCD_BACKLIGHT8 0xBF /* Backlight Control 8 */ +#define LCD_POWER1 0xC0 /* Power Control 1 register */ +#define LCD_POWER2 0xC1 /* Power Control 2 register */ +#define LCD_VCOM1 0xC5 /* VCOM Control 1 register */ +#define LCD_VCOM2 0xC7 /* VCOM Control 2 register */ +#define LCD_NVMWR 0xD0 /* NV Memory Write */ +#define LCD_NVMPKEY 0xD1 /* NV Memory Protection Key */ +#define LCD_RDNVM 0xD2 /* NV Memory Status Read */ +#define LCD_READ_ID4 0xD3 /* Read ID4 */ +#define LCD_PGAMMA 0xE0 /* Positive Gamma Correction register */ +#define LCD_NGAMMA 0xE1 /* Negative Gamma Correction register */ +#define LCD_DGAMCTRL1 0xE2 /* Digital Gamma Control 1 */ +#define LCD_DGAMCTRL2 0xE3 /* Digital Gamma Control 2 */ +#define LCD_INTERFACE 0xF6 /* Interface control register */ + +/* Extend register commands */ +#define LCD_POWERA 0xCB /* Power control A register */ +#define LCD_POWERB 0xCF /* Power control B register */ +#define LCD_DTCA 0xE8 /* Driver timing control A */ +#define LCD_DTCB 0xEA /* Driver timing control B */ +#define LCD_POWER_SEQ 0xED /* Power on sequence register */ +#define LCD_3GAMMA_EN 0xF2 /* 3 Gamma enable register */ +#define LCD_PRC 0xF7 /* Pump ratio control register */ + +/* Size of read registers */ +#define LCD_READ_ID4_SIZE 3 /* Size of Read ID4 */ + +/*############################### SPIx #######################################*/ +#define DISCOVERY_SPIx SPI5 +#define DISCOVERY_SPIx_CLK_ENABLE() __HAL_RCC_SPI5_CLK_ENABLE() +#define DISCOVERY_SPIx_GPIO_PORT GPIOF /* GPIOF */ +#define DISCOVERY_SPIx_AF GPIO_AF5_SPI5 +#define DISCOVERY_SPIx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE() +#define DISCOVERY_SPIx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOF_CLK_DISABLE() +#define DISCOVERY_SPIx_SCK_PIN GPIO_PIN_7 /* PF.07 */ +#define DISCOVERY_SPIx_MISO_PIN GPIO_PIN_8 /* PF.08 */ +#define DISCOVERY_SPIx_MOSI_PIN GPIO_PIN_9 /* PF.09 */ +/* Maximum Timeout values for flags waiting loops. These timeouts are not based + on accurate values, they just guarantee that the application will not remain + stuck if the SPI communication is corrupted. + You may modify these timeout values depending on CPU frequency and + application conditions (interrupts routines ...). */ +#define SPIx_TIMEOUT_MAX ((uint32_t)0x1000) + +/*################################ LCD #######################################*/ +/* Chip Select macro definition */ +#define LCD_CS_LOW() \ + HAL_GPIO_WritePin(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, GPIO_PIN_RESET) +#define LCD_CS_HIGH() \ + HAL_GPIO_WritePin(LCD_NCS_GPIO_PORT, LCD_NCS_PIN, GPIO_PIN_SET) + +/* Set WRX High to send data */ +#define LCD_WRX_LOW() \ + HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_RESET) +#define LCD_WRX_HIGH() \ + HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_SET) + +/* Set WRX High to send data */ +#define LCD_RDX_LOW() \ + HAL_GPIO_WritePin(LCD_RDX_GPIO_PORT, LCD_RDX_PIN, GPIO_PIN_RESET) +#define LCD_RDX_HIGH() \ + HAL_GPIO_WritePin(LCD_RDX_GPIO_PORT, LCD_RDX_PIN, GPIO_PIN_SET) + +/** + * @brief LCD Control pin + */ +#define LCD_NCS_PIN GPIO_PIN_2 +#define LCD_NCS_GPIO_PORT GPIOC +#define LCD_NCS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define LCD_NCS_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE() +/** + * @} + */ +/** + * @brief LCD Command/data pin + */ +#define LCD_WRX_PIN GPIO_PIN_13 +#define LCD_WRX_GPIO_PORT GPIOD +#define LCD_WRX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() +#define LCD_WRX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() + +#define LCD_RDX_PIN GPIO_PIN_12 +#define LCD_RDX_GPIO_PORT GPIOD +#define LCD_RDX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() +#define LCD_RDX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE() + +static SPI_HandleTypeDef SpiHandle; +uint32_t SpixTimeout = + SPIx_TIMEOUT_MAX; /*<! Value of Timeout when SPI communication fails */ + +/* SPIx bus function */ +static void SPIx_Init(void); +static void ili9341_Write(uint16_t Value); +static uint32_t ili9341_Read(uint8_t ReadSize); +static void ili9341_Error(void); + +/** + * @brief SPIx Bus initialization + */ +static void SPIx_Init(void) { + if (HAL_SPI_GetState(&SpiHandle) == HAL_SPI_STATE_RESET) { + /* SPI configuration -----------------------------------------------------*/ + SpiHandle.Instance = DISCOVERY_SPIx; + /* SPI baudrate is set to 5.6 MHz (PCLK2/SPI_BaudRatePrescaler = 90/16 + = 5.625 MHz) to verify these constraints: + - ILI9341 LCD SPI interface max baudrate is 10MHz for write and 6.66MHz + for read + - l3gd20 SPI interface max baudrate is 10MHz for write/read + - PCLK2 frequency is set to 90 MHz + */ + SpiHandle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + + /* On STM32F429I-Discovery, LCD ID cannot be read then keep a common + * configuration */ + /* for LCD and GYRO (SPI_DIRECTION_2LINES) */ + /* Note: To read a register a LCD, SPI_DIRECTION_1LINE should be set */ + SpiHandle.Init.Direction = SPI_DIRECTION_2LINES; + SpiHandle.Init.CLKPhase = SPI_PHASE_1EDGE; + SpiHandle.Init.CLKPolarity = SPI_POLARITY_LOW; + SpiHandle.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED; + SpiHandle.Init.CRCPolynomial = 7; + SpiHandle.Init.DataSize = SPI_DATASIZE_8BIT; + SpiHandle.Init.FirstBit = SPI_FIRSTBIT_MSB; + SpiHandle.Init.NSS = SPI_NSS_SOFT; + SpiHandle.Init.TIMode = SPI_TIMODE_DISABLED; + SpiHandle.Init.Mode = SPI_MODE_MASTER; + + HAL_SPI_Init(&SpiHandle); + } +} + +/** + * @brief SPIx error treatment function. + */ +static void ili9341_Error(void) { + /* De-initialize the SPI communication BUS */ + HAL_SPI_DeInit(&SpiHandle); + + /* Re- Initialize the SPI communication BUS */ + SPIx_Init(); +} + +/** + * @brief Reads 4 bytes from device. + * @param ReadSize: Number of bytes to read (max 4 bytes) + * @retval Value read on the SPI + */ +static uint32_t ili9341_Read(uint8_t ReadSize) { + HAL_StatusTypeDef status = HAL_OK; + uint32_t readvalue; + + status = + HAL_SPI_Receive(&SpiHandle, (uint8_t*)&readvalue, ReadSize, SpixTimeout); + + /* Check the communication status */ + if (status != HAL_OK) { + /* Re-Initialize the BUS */ + ili9341_Error(); + } + + return readvalue; +} + +/** + * @brief Writes a byte to device. + * @param Value: value to be written + */ +static void ili9341_Write(uint16_t Value) { + HAL_StatusTypeDef status = HAL_OK; + + status = HAL_SPI_Transmit(&SpiHandle, (uint8_t*)&Value, 1, SpixTimeout); + + /* Check the communication status */ + if (status != HAL_OK) { + /* Re-Initialize the BUS */ + ili9341_Error(); + } +} + +void ili9341_spi_init(void) { + GPIO_InitTypeDef GPIO_InitStructure; + + /* Configure NCS in Output Push-Pull mode */ + LCD_WRX_GPIO_CLK_ENABLE(); + GPIO_InitStructure.Pin = LCD_WRX_PIN; + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FAST; + HAL_GPIO_Init(LCD_WRX_GPIO_PORT, &GPIO_InitStructure); + + LCD_RDX_GPIO_CLK_ENABLE(); + GPIO_InitStructure.Pin = LCD_RDX_PIN; + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FAST; + HAL_GPIO_Init(LCD_RDX_GPIO_PORT, &GPIO_InitStructure); + + /* Configure the LCD Control pins ----------------------------------------*/ + LCD_NCS_GPIO_CLK_ENABLE(); + + /* Configure NCS in Output Push-Pull mode */ + GPIO_InitStructure.Pin = LCD_NCS_PIN; + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FAST; + HAL_GPIO_Init(LCD_NCS_GPIO_PORT, &GPIO_InitStructure); + + /* Set or Reset the control line */ + LCD_CS_LOW(); + LCD_CS_HIGH(); + + /* Enable SPIx clock */ + DISCOVERY_SPIx_CLK_ENABLE(); + + /* Enable DISCOVERY_SPI GPIO clock */ + DISCOVERY_SPIx_GPIO_CLK_ENABLE(); + + /* configure SPI SCK, MOSI and MISO */ + GPIO_InitStructure.Pin = (DISCOVERY_SPIx_SCK_PIN | DISCOVERY_SPIx_MOSI_PIN | + DISCOVERY_SPIx_MISO_PIN); + GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; + GPIO_InitStructure.Pull = GPIO_PULLDOWN; + GPIO_InitStructure.Speed = GPIO_SPEED_MEDIUM; + GPIO_InitStructure.Alternate = DISCOVERY_SPIx_AF; + HAL_GPIO_Init(DISCOVERY_SPIx_GPIO_PORT, &GPIO_InitStructure); + + SPIx_Init(); +} + +/** + * @brief Writes register value. + */ +void ili9341_WriteData(uint16_t RegValue) { + /* Set WRX to send data */ + LCD_WRX_HIGH(); + + /* Reset LCD control line(/CS) and Send data */ + LCD_CS_LOW(); + ili9341_Write(RegValue); + + /* Deselect: Chip Select high */ + LCD_CS_HIGH(); +} + +/** + * @brief Writes register address. + */ +void ili9341_WriteReg(uint8_t Reg) { + /* Reset WRX to send command */ + LCD_WRX_LOW(); + + /* Reset LCD control line(/CS) and Send command */ + LCD_CS_LOW(); + ili9341_Write(Reg); + + /* Deselect: Chip Select high */ + LCD_CS_HIGH(); +} + +/** + * @brief Reads register value. + * @param RegValue Address of the register to read + * @param ReadSize Number of bytes to read + * @retval Content of the register value + */ +uint32_t ili9341_ReadData(uint16_t RegValue, uint8_t ReadSize) { + uint32_t readvalue = 0; + + /* Select: Chip Select low */ + LCD_CS_LOW(); + + /* Reset WRX to send command */ + LCD_WRX_LOW(); + + ili9341_Write(RegValue); + + readvalue = ili9341_Read(ReadSize); + + /* Set WRX to send data */ + LCD_WRX_HIGH(); + + /* Deselect: Chip Select high */ + LCD_CS_HIGH(); + + return readvalue; +} + +void ili9341_init(void) { + /* Initialize ILI9341 low level bus layer ----------------------------------*/ + ili9341_spi_init(); + + ili9341_WriteReg(LCD_DISPLAY_OFF); + + /* Configure LCD */ + ili9341_WriteReg(0xCA); + ili9341_WriteData(0xC3); + ili9341_WriteData(0x08); + ili9341_WriteData(0x50); + ili9341_WriteReg(LCD_POWERB); + ili9341_WriteData(0x00); + ili9341_WriteData(0xC1); + ili9341_WriteData(0x30); + ili9341_WriteReg(LCD_POWER_SEQ); + ili9341_WriteData(0x64); + ili9341_WriteData(0x03); + ili9341_WriteData(0x12); + ili9341_WriteData(0x81); + ili9341_WriteReg(LCD_DTCA); + ili9341_WriteData(0x85); + ili9341_WriteData(0x00); + ili9341_WriteData(0x78); + ili9341_WriteReg(LCD_POWERA); + ili9341_WriteData(0x39); + ili9341_WriteData(0x2C); + ili9341_WriteData(0x00); + ili9341_WriteData(0x34); + ili9341_WriteData(0x02); + ili9341_WriteReg(LCD_PRC); + ili9341_WriteData(0x20); + ili9341_WriteReg(LCD_DTCB); + ili9341_WriteData(0x00); + ili9341_WriteData(0x00); + ili9341_WriteReg(LCD_FRMCTR1); + ili9341_WriteData(0x00); + ili9341_WriteData(0x1B); + ili9341_WriteReg(LCD_DFC); + ili9341_WriteData(0x0A); + ili9341_WriteData(0xA2); + ili9341_WriteReg(LCD_POWER1); + ili9341_WriteData(0x10); + ili9341_WriteReg(LCD_POWER2); + ili9341_WriteData(0x10); + ili9341_WriteReg(LCD_VCOM1); + ili9341_WriteData(0x45); + ili9341_WriteData(0x15); + ili9341_WriteReg(LCD_VCOM2); + ili9341_WriteData(0x90); + ili9341_WriteReg(LCD_MAC); + ili9341_WriteData(0xC8); + ili9341_WriteReg(LCD_3GAMMA_EN); + ili9341_WriteData(0x00); + ili9341_WriteReg(LCD_RGB_INTERFACE); + ili9341_WriteData(0xC2); + ili9341_WriteReg(LCD_DFC); + ili9341_WriteData(0x0A); + ili9341_WriteData(0xA7); + ili9341_WriteData(0x27); + ili9341_WriteData(0x04); + + /* Colomn address set */ + ili9341_WriteReg(LCD_COLUMN_ADDR); + ili9341_WriteData(0x00); + ili9341_WriteData(0x00); + ili9341_WriteData(0x00); + ili9341_WriteData(0xEF); + /* Page address set */ + ili9341_WriteReg(LCD_PAGE_ADDR); + ili9341_WriteData(0x00); + ili9341_WriteData(0x00); + ili9341_WriteData(0x01); + ili9341_WriteData(0x3F); + ili9341_WriteReg(LCD_INTERFACE); + ili9341_WriteData(0x01); + ili9341_WriteData(0x00); + ili9341_WriteData(0x06); + + ili9341_WriteReg(LCD_GRAM); + HAL_Delay(200); + + ili9341_WriteReg(LCD_GAMMA); + ili9341_WriteData(0x01); + + ili9341_WriteReg(LCD_PGAMMA); + ili9341_WriteData(0x0F); + ili9341_WriteData(0x29); + ili9341_WriteData(0x24); + ili9341_WriteData(0x0C); + ili9341_WriteData(0x0E); + ili9341_WriteData(0x09); + ili9341_WriteData(0x4E); + ili9341_WriteData(0x78); + ili9341_WriteData(0x3C); + ili9341_WriteData(0x09); + ili9341_WriteData(0x13); + ili9341_WriteData(0x05); + ili9341_WriteData(0x17); + ili9341_WriteData(0x11); + ili9341_WriteData(0x00); + ili9341_WriteReg(LCD_NGAMMA); + ili9341_WriteData(0x00); + ili9341_WriteData(0x16); + ili9341_WriteData(0x1B); + ili9341_WriteData(0x04); + ili9341_WriteData(0x11); + ili9341_WriteData(0x07); + ili9341_WriteData(0x31); + ili9341_WriteData(0x33); + ili9341_WriteData(0x42); + ili9341_WriteData(0x05); + ili9341_WriteData(0x0C); + ili9341_WriteData(0x0A); + ili9341_WriteData(0x28); + ili9341_WriteData(0x2F); + ili9341_WriteData(0x0F); + + ili9341_WriteReg(LCD_SLEEP_OUT); + HAL_Delay(200); + ili9341_WriteReg(LCD_DISPLAY_ON); + /* GRAM start writing */ + ili9341_WriteReg(LCD_GRAM); +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.h b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.h new file mode 100644 index 0000000000..07766712d4 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.h @@ -0,0 +1,13 @@ +#ifndef _ILI9341_SPI_H +#define _ILI9341_SPI_H + +#define ILI9341_HSYNC ((uint32_t)9) /* Horizontal synchronization */ +#define ILI9341_HBP ((uint32_t)29) /* Horizontal back porch */ +#define ILI9341_HFP ((uint32_t)2) /* Horizontal front porch */ +#define ILI9341_VSYNC ((uint32_t)1) /* Vertical synchronization */ +#define ILI9341_VBP ((uint32_t)3) /* Vertical back porch */ +#define ILI9341_VFP ((uint32_t)2) /* Vertical front porch */ + +void ili9341_init(void); + +#endif //_ILI9341_SPI_H diff --git a/core/embed/trezorhal/stm32f4/xdisplay/ug-2828/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/ug-2828/display_driver.c new file mode 100644 index 0000000000..7c2363713c --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/ug-2828/display_driver.c @@ -0,0 +1,398 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdint.h> +#include <string.h> + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "xdisplay.h" + +#if (DISPLAY_RESX != 128) || (DISPLAY_RESY != 128) +#error "Incompatible display resolution" +#endif + +// This file implements display driver for monochromatic display V-2864KSWEG01 +// with 128x128 resolution connected to CPU via SPI interface. +// +// This type of displayed was used on some preliminary dev kits for T3T1 (Trezor +// TS3) + +// Display driver context. +typedef struct { + // Frame buffer (8-bit Mono) + uint8_t framebuf[DISPLAY_RESX * DISPLAY_RESY]; + // Current display orientation (0 or 180) + int orientation_angle; + // Current backlight level ranging from 0 to 255 + int backlight_level; +} display_driver_t; + +// Display driver instance +static display_driver_t g_display_driver; + +// Macros to access display parallel interface + +// FSMC/FMC Bank 1 - NOR/PSRAM 1 +#define DISPLAY_MEMORY_BASE 0x60000000 +#define DISPLAY_MEMORY_PIN 16 + +#define CMD_ADDR *((__IO uint8_t *)((uint32_t)(DISPLAY_MEMORY_BASE))) +#define DATA_ADDR \ + (*((__IO uint8_t *)((uint32_t)(DISPLAY_MEMORY_BASE | \ + (1 << DISPLAY_MEMORY_PIN))))) + +#define ISSUE_CMD_BYTE(X) \ + do { \ + (CMD_ADDR) = (X); \ + } while (0) +#define ISSUE_DATA_BYTE(X) \ + do { \ + (DATA_ADDR) = (X); \ + } while (0) + +// --------------------------------------------------------------------------- +// Display controller registers +// --------------------------------------------------------------------------- + +#define OLED_SETCONTRAST 0x81 +#define OLED_DISPLAYALLON_RESUME 0xA4 +#define OLED_DISPLAYALLON 0xA5 +#define OLED_NORMALDISPLAY 0xA6 +#define OLED_INVERTDISPLAY 0xA7 +#define OLED_DISPLAYOFF 0xAE +#define OLED_DISPLAYON 0xAF +#define OLED_SETDISPLAYOFFSET 0xD3 +#define OLED_SETCOMPINS 0xDA +#define OLED_SETVCOMDETECT 0xDB +#define OLED_SETDISPLAYCLOCKDIV 0xD5 +#define OLED_SETPRECHARGE 0xD9 +#define OLED_SETMULTIPLEX 0xA8 +#define OLED_SETLOWCOLUMN 0x00 +#define OLED_SETHIGHCOLUMN 0x10 +#define OLED_SETSTARTLINE 0x40 +#define OLED_MEMORYMODE 0x20 +#define OLED_COMSCANINC 0xC0 +#define OLED_COMSCANDEC 0xC8 +#define OLED_SEGREMAP 0xA0 +#define OLED_CHARGEPUMP 0x8D + +// Dipslay specific initialization sequence +static const uint8_t ug_2828tswig01_init_seq[] = { + OLED_DISPLAYOFF, + // Divide ratio 0, Oscillator Frequency +0% + OLED_SETDISPLAYCLOCKDIV, 0x50, + // Set Memory Addressing Mode - page addressing mode + 0x20, + // Set Contrast Control Register + OLED_SETCONTRAST, 0x8F, + // Set DC-DC Setting: (Double Bytes Command) + 0xAD, 0x8A, + // Set Segment Re-map + OLED_SEGREMAP | 0x01, + // Set COM Output Scan Direction + OLED_COMSCANDEC, + // Set Display Start Line:(Double Bytes Command) + 0xDC, 0x00, + // Set Display Offset:(Double Bytes Command) + OLED_SETDISPLAYOFFSET, 0x00, + // Set Discharge / Pre-Charge Period (Double Bytes Command) + OLED_SETPRECHARGE, 0x22, + // Set VCOM Deselect Level + OLED_SETVCOMDETECT, 0x35, + // Set Multiplex Ratio + OLED_SETMULTIPLEX, 0x7F, + // Set Page + 0xB0, + // Reset column + OLED_SETLOWCOLUMN | 0, OLED_SETHIGHCOLUMN | 0, + + // Set Entire Display Off + // to be clear, this command turns off the function + // which turns entire display on, but it does not clear + // the data in display RAM + OLED_DISPLAYALLON_RESUME, + // Set Normal Display + OLED_NORMALDISPLAY}; + +static void __attribute__((unused)) display_sleep(void) { + // Display OFF + ISSUE_CMD_BYTE(OLED_DISPLAYOFF); + HAL_Delay(5); + // Vpp disable + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_RESET); +} + +static void display_resume(void) { + // Vpp enable + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_SET); + // 100 ms mandatory wait + HAL_Delay(100); + // Display ON + ISSUE_CMD_BYTE(OLED_DISPLAYON); +} + +// Sets the display cursor to the specific row and column +static void display_set_page_and_col(uint8_t page, uint8_t col) { + if (page < (DISPLAY_RESY / 8)) { + ISSUE_CMD_BYTE(0xB0 | (page & 0xF)); + + if (col < DISPLAY_RESX) { + ISSUE_CMD_BYTE(OLED_SETHIGHCOLUMN | ((col & 0x70) >> 4)); + ISSUE_CMD_BYTE(OLED_SETLOWCOLUMN | (col & 0x0F)); + } else { + // Reset column to start + ISSUE_CMD_BYTE(OLED_SETHIGHCOLUMN); + ISSUE_CMD_BYTE(OLED_SETLOWCOLUMN); + } + } +} + +#define COLLECT_ROW_BYTE(src) \ + (0 | (*(src + (0 * DISPLAY_RESX)) >= 128 ? 128 : 0) | \ + (*(src + (1 * DISPLAY_RESX)) >= 128 ? 64 : 0) | \ + (*(src + (2 * DISPLAY_RESX)) >= 128 ? 32 : 0) | \ + (*(src + (3 * DISPLAY_RESX)) >= 128 ? 16 : 0) | \ + (*(src + (4 * DISPLAY_RESX)) >= 128 ? 8 : 0) | \ + (*(src + (5 * DISPLAY_RESX)) >= 128 ? 4 : 0) | \ + (*(src + (6 * DISPLAY_RESX)) >= 128 ? 2 : 0) | \ + (*(src + (7 * DISPLAY_RESX)) >= 128 ? 1 : 0)) + +// Copies the framebuffer to the display via SPI interface +static void display_sync_with_fb(void) { + display_driver_t *drv = &g_display_driver; + + for (int y = 0; y < DISPLAY_RESY / 8; y++) { + display_set_page_and_col(y, 0); + uint8_t *src = &drv->framebuf[y * DISPLAY_RESX * 8]; + for (int x = 0; x < DISPLAY_RESX; x++) { + ISSUE_DATA_BYTE(COLLECT_ROW_BYTE(src)); + src++; + } + } +} + +static void display_init_controller(void) { + // LCD_RST/PC14 + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); + // wait 10 milliseconds. only needs to be low for 10 microseconds. + // my dev display module ties display reset and touch panel reset together. + // keeping this low for max(display_reset_time, ctpm_reset_time) aids + // development and does not hurt. + HAL_Delay(10); + + // LCD_RST/PC14 + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET); + // max wait time for hardware reset is 120 milliseconds + // (experienced display flakiness using only 5ms wait before sending commands) + HAL_Delay(120); + + // Apply initialization sequence specific to this display controller/panel + for (int i = 0; i < sizeof(ug_2828tswig01_init_seq); i++) { + ISSUE_CMD_BYTE(ug_2828tswig01_init_seq[i]); + } + + // Resume the suspended display + display_resume(); + // Clear display internal framebuffer + display_sync_with_fb(); +} + +static void display_init_interface(void) { + // init peripherals + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_FMC_CLK_ENABLE(); + + GPIO_InitTypeDef GPIO_InitStructure = {0}; + + // LCD_RST/PC14 + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStructure.Alternate = 0; + GPIO_InitStructure.Pin = GPIO_PIN_14; + // default to keeping display in reset + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET); + HAL_GPIO_Init(GPIOC, &GPIO_InitStructure); + + // VPP Enable + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_PULLDOWN; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStructure.Alternate = 0; + GPIO_InitStructure.Pin = GPIO_PIN_8; + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_8, GPIO_PIN_RESET); + HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); + + GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Alternate = GPIO_AF12_FMC; + // LCD_CS/PD7 LCD_RS/PD11 LCD_RD/PD4 LCD_WR/PD5 + GPIO_InitStructure.Pin = GPIO_PIN_7 | GPIO_PIN_11 | GPIO_PIN_4 | GPIO_PIN_5; + HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); + // LCD_D0/PD14 LCD_D1/PD15 LCD_D2/PD0 LCD_D3/PD1 + GPIO_InitStructure.Pin = GPIO_PIN_14 | GPIO_PIN_15 | GPIO_PIN_0 | GPIO_PIN_1; + HAL_GPIO_Init(GPIOD, &GPIO_InitStructure); + // LCD_D4/PE7 LCD_D5/PE8 LCD_D6/PE9 LCD_D7/PE10 + GPIO_InitStructure.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10; + HAL_GPIO_Init(GPIOE, &GPIO_InitStructure); + + // Reference UM1725 "Description of STM32F4 HAL and LL drivers", + // section 64.2.1 "How to use this driver" + SRAM_HandleTypeDef display_sram = {0}; + display_sram.Instance = FMC_NORSRAM_DEVICE; + display_sram.Extended = FMC_NORSRAM_EXTENDED_DEVICE; + display_sram.Init.NSBank = FMC_NORSRAM_BANK1; + display_sram.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE; + display_sram.Init.MemoryType = FMC_MEMORY_TYPE_SRAM; + display_sram.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_8; + display_sram.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE; + display_sram.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW; + display_sram.Init.WrapMode = FMC_WRAP_MODE_DISABLE; + display_sram.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS; + display_sram.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE; + display_sram.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE; + display_sram.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE; + display_sram.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE; + display_sram.Init.WriteBurst = FMC_WRITE_BURST_DISABLE; + display_sram.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY; + display_sram.Init.PageSize = FMC_PAGE_SIZE_NONE; + + // reference RM0090 section 37.5 Table 259, 37.5.4, Mode 1 SRAM, and 37.5.6 + FMC_NORSRAM_TimingTypeDef normal_mode_timing = {0}; + normal_mode_timing.AddressSetupTime = 10; + normal_mode_timing.AddressHoldTime = 10; + normal_mode_timing.DataSetupTime = 10; + normal_mode_timing.BusTurnAroundDuration = 0; + normal_mode_timing.CLKDivision = 2; + normal_mode_timing.DataLatency = 2; + normal_mode_timing.AccessMode = FMC_ACCESS_MODE_A; + + HAL_SRAM_Init(&display_sram, &normal_mode_timing, NULL); +} + +void display_init(void) { + display_driver_t *drv = &g_display_driver; + memset(drv, 0, sizeof(display_driver_t)); + + // Initialize GPIO & FSMC controller + display_init_interface(); + // Initialize display controller + display_init_controller(); +} + +void display_reinit(void) { + display_driver_t *drv = &g_display_driver; + memset(drv, 0, sizeof(display_driver_t)); + + // !@# TODO backlight level?? +} + +void display_finish_actions(void) { + /// Not used and intentionally left empty +} + +int display_set_backlight(int level) { + display_driver_t *drv = &g_display_driver; + + if (level != drv->backlight_level) { + if (level >= 0 && level <= 255) { + drv->backlight_level = level; + // Set Contrast Control Register: (Double Bytes Command) + ISSUE_CMD_BYTE(OLED_SETCONTRAST); + ISSUE_CMD_BYTE(level & 0xFF); + } + } + + return drv->backlight_level; +} + +int display_get_backlight(void) { + display_driver_t *drv = &g_display_driver; + + return drv->backlight_level; +} + +int display_set_orientation(int angle) { + display_driver_t *drv = &g_display_driver; + + if (angle != drv->orientation_angle) { + if (angle == 0 || angle == 180) { + drv->orientation_angle = angle; + if (angle == 0) { + // Set Segment Re-map: (A0H - A1H) + ISSUE_CMD_BYTE(OLED_SEGREMAP | 0x01); + // Set COM Output Scan Direction + ISSUE_CMD_BYTE(OLED_COMSCANDEC); + } else { + // Set Segment Re-map: (A0H - A1H) + ISSUE_CMD_BYTE(OLED_SEGREMAP | 0x00); + // Set COM Output Scan Direction + ISSUE_CMD_BYTE(OLED_COMSCANINC); + } + } + } + + return drv->orientation_angle; +} + +int display_get_orientation(void) { + display_driver_t *drv = &g_display_driver; + + return drv->orientation_angle; +} + +display_fb_info_t display_get_frame_buffer(void) { + display_driver_t *drv = &g_display_driver; + + display_fb_info_t fb = { + .ptr = &drv->framebuf[0], + .stride = DISPLAY_RESX, + }; + + return fb; +} + +void display_refresh(void) { display_sync_with_fb(); } + +void display_set_compatible_settings() {} + +void display_fill(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = &drv->framebuf[DISPLAY_RESX * bb_new.dst_y]; + bb_new.dst_stride = DISPLAY_RESX; + + mono8_fill(&bb_new); +} + +void display_copy_mono1p(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = &drv->framebuf[DISPLAY_RESX * bb_new.dst_y]; + bb_new.dst_stride = DISPLAY_RESX; + + mono8_copy_mono1p(&bb_new); +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/vg-2864/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/vg-2864/display_driver.c new file mode 100644 index 0000000000..c0860a2c33 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/vg-2864/display_driver.c @@ -0,0 +1,379 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdbool.h> +#include <stddef.h> +#include <stdint.h> +#include <string.h> + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "xdisplay.h" + +#ifdef USE_CONSUMPTION_MASK +#include "consumption_mask.h" +#endif + +#if (DISPLAY_RESX != 128) || (DISPLAY_RESY != 64) +#error "Incompatible display resolution" +#endif + +// This file implements display driver for monochromatic display V-2864KSWEG01 +// with 128x64 resolution connected to CPU via SPI interface. +// +// This type of display is used with T3T1 model (Trezor TS3) + +// Display driver context. +typedef struct { + // SPI driver instance + SPI_HandleTypeDef spi; + // Frame buffer (8-bit Mono) + uint8_t framebuf[DISPLAY_RESX * DISPLAY_RESY]; + // Current display orientation (0 or 180) + int orientation_angle; + // Current backlight level ranging from 0 to 255 + int backlight_level; +} display_driver_t; + +// Display driver instance +static display_driver_t g_display_driver; + +// Display controller registers +#define OLED_SETCONTRAST 0x81 +#define OLED_DISPLAYALLON_RESUME 0xA4 +#define OLED_DISPLAYALLON 0xA5 +#define OLED_NORMALDISPLAY 0xA6 +#define OLED_INVERTDISPLAY 0xA7 +#define OLED_DISPLAYOFF 0xAE +#define OLED_DISPLAYON 0xAF +#define OLED_SETDISPLAYOFFSET 0xD3 +#define OLED_SETCOMPINS 0xDA +#define OLED_SETVCOMDETECT 0xDB +#define OLED_SETDISPLAYCLOCKDIV 0xD5 +#define OLED_SETPRECHARGE 0xD9 +#define OLED_SETMULTIPLEX 0xA8 +#define OLED_SETLOWCOLUMN 0x00 +#define OLED_SETHIGHCOLUMN 0x10 +#define OLED_SETSTARTLINE 0x40 +#define OLED_MEMORYMODE 0x20 +#define OLED_COMSCANINC 0xC0 +#define OLED_COMSCANDEC 0xC8 +#define OLED_SEGREMAP 0xA0 +#define OLED_CHARGEPUMP 0x8D + +// Display controller initialization sequence +static const uint8_t vg_2864ksweg01_init_seq[] = {OLED_DISPLAYOFF, + OLED_SETDISPLAYCLOCKDIV, + 0x80, + OLED_SETMULTIPLEX, + 0x3F, // 128x64 + OLED_SETDISPLAYOFFSET, + 0x00, + OLED_SETSTARTLINE | 0x00, + OLED_CHARGEPUMP, + 0x14, + OLED_MEMORYMODE, + 0x00, + OLED_SEGREMAP | 0x01, + OLED_COMSCANDEC, + OLED_SETCOMPINS, + 0x12, // 128x64 + OLED_SETCONTRAST, + 0xCF, + OLED_SETPRECHARGE, + 0xF1, + OLED_SETVCOMDETECT, + 0x40, + OLED_DISPLAYALLON_RESUME, + OLED_NORMALDISPLAY, + OLED_DISPLAYON}; + +// Configures SPI driver/controller +static bool display_init_spi(display_driver_t *drv) { + drv->spi.Instance = OLED_SPI; + drv->spi.State = HAL_SPI_STATE_RESET; + drv->spi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16; + drv->spi.Init.Direction = SPI_DIRECTION_2LINES; + drv->spi.Init.CLKPhase = SPI_PHASE_1EDGE; + drv->spi.Init.CLKPolarity = SPI_POLARITY_LOW; + drv->spi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + drv->spi.Init.CRCPolynomial = 7; + drv->spi.Init.DataSize = SPI_DATASIZE_8BIT; + drv->spi.Init.FirstBit = SPI_FIRSTBIT_MSB; + drv->spi.Init.NSS = SPI_NSS_HARD_OUTPUT; + drv->spi.Init.TIMode = SPI_TIMODE_DISABLE; + drv->spi.Init.Mode = SPI_MODE_MASTER; + + return (HAL_OK == HAL_SPI_Init(&drv->spi)) ? true : false; +} + +// Sends specified number of bytes to the display via SPI interface +static void display_send_bytes(display_driver_t *drv, const uint8_t *data, + size_t len) { + volatile int32_t timeout = 1000; + for (int i = 0; i < timeout; i++) + ; + + if (HAL_OK != HAL_SPI_Transmit(&drv->spi, (uint8_t *)data, len, 1000)) { + // TODO: error + return; + } + while (HAL_SPI_STATE_READY != HAL_SPI_GetState(&drv->spi)) { + } +} + +#define COLLECT_ROW_BYTE(src) \ + (0 | (*(src + (0 * DISPLAY_RESX)) >= 128 ? 128 : 0) | \ + (*(src + (1 * DISPLAY_RESX)) >= 128 ? 64 : 0) | \ + (*(src + (2 * DISPLAY_RESX)) >= 128 ? 32 : 0) | \ + (*(src + (3 * DISPLAY_RESX)) >= 128 ? 16 : 0) | \ + (*(src + (4 * DISPLAY_RESX)) >= 128 ? 8 : 0) | \ + (*(src + (5 * DISPLAY_RESX)) >= 128 ? 4 : 0) | \ + (*(src + (6 * DISPLAY_RESX)) >= 128 ? 2 : 0) | \ + (*(src + (7 * DISPLAY_RESX)) >= 128 ? 1 : 0)) + +#define COLLECT_ROW_BYTE_REV(src) \ + (0 | (*(src + (0 * DISPLAY_RESX)) >= 128 ? 1 : 0) | \ + (*(src + (1 * DISPLAY_RESX)) >= 128 ? 2 : 0) | \ + (*(src + (2 * DISPLAY_RESX)) >= 128 ? 4 : 0) | \ + (*(src + (3 * DISPLAY_RESX)) >= 128 ? 8 : 0) | \ + (*(src + (4 * DISPLAY_RESX)) >= 128 ? 16 : 0) | \ + (*(src + (5 * DISPLAY_RESX)) >= 128 ? 32 : 0) | \ + (*(src + (6 * DISPLAY_RESX)) >= 128 ? 64 : 0) | \ + (*(src + (7 * DISPLAY_RESX)) >= 128 ? 128 : 0)) + +// Copies the framebuffer to the display via SPI interface +static void display_sync_with_fb(display_driver_t *drv) { + static const uint8_t cursor_set_seq[3] = {OLED_SETLOWCOLUMN | 0x00, + OLED_SETHIGHCOLUMN | 0x00, + OLED_SETSTARTLINE | 0x00}; + + // SPI select + HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_RESET); + // Set the cursor to the screen top-left corner + display_send_bytes(drv, &cursor_set_seq[0], sizeof(cursor_set_seq)); + + // SPI deselect + HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_SET); + // Set to DATA + HAL_GPIO_WritePin(OLED_DC_PORT, OLED_DC_PIN, GPIO_PIN_SET); + // SPI select + HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_RESET); + + // Send whole framebuffer to the display + + if (drv->orientation_angle == 0) { + for (int y = DISPLAY_RESY / 8 - 1; y >= 0; y--) { + uint8_t buff[DISPLAY_RESX]; + uint8_t *src = &drv->framebuf[y * DISPLAY_RESX * 8]; + + for (int x = DISPLAY_RESX - 1; x >= 0; x--) { + buff[x] = COLLECT_ROW_BYTE(src); + src++; + } + + if (HAL_OK != HAL_SPI_Transmit(&drv->spi, &buff[0], sizeof(buff), 1000)) { + // TODO: error + return; + } + } + } else { + for (int y = 0; y < DISPLAY_RESY / 8; y++) { + uint8_t buff[DISPLAY_RESX]; + uint8_t *src = &drv->framebuf[y * DISPLAY_RESX * 8]; + + for (int x = 0; x < DISPLAY_RESX; x++) { + buff[x] = COLLECT_ROW_BYTE_REV(src); + src++; + } + + if (HAL_OK != HAL_SPI_Transmit(&drv->spi, &buff[0], sizeof(buff), 1000)) { + // TODO: error + return; + } + } + } + + while (HAL_SPI_STATE_READY != HAL_SPI_GetState(&drv->spi)) { + } + + // SPI deselect + HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_SET); + // Set to CMD + HAL_GPIO_WritePin(OLED_DC_PORT, OLED_DC_PIN, GPIO_PIN_RESET); +} + +void display_init(void) { + display_driver_t *drv = &g_display_driver; + + memset(drv, 0, sizeof(display_driver_t)); + drv->backlight_level = 255; + + OLED_DC_CLK_ENA(); + OLED_CS_CLK_ENA(); + OLED_RST_CLK_ENA(); + OLED_SPI_SCK_CLK_ENA(); + OLED_SPI_MOSI_CLK_ENA(); + OLED_SPI_CLK_ENA(); + + GPIO_InitTypeDef GPIO_InitStructure; + + // Set GPIO for OLED display + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Alternate = 0; + GPIO_InitStructure.Pin = OLED_CS_PIN; + HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_RESET); + HAL_GPIO_Init(OLED_CS_PORT, &GPIO_InitStructure); + GPIO_InitStructure.Pin = OLED_DC_PIN; + HAL_GPIO_WritePin(OLED_DC_PORT, OLED_DC_PIN, GPIO_PIN_RESET); + HAL_GPIO_Init(OLED_DC_PORT, &GPIO_InitStructure); + GPIO_InitStructure.Pin = OLED_RST_PIN; + HAL_GPIO_WritePin(OLED_RST_PORT, OLED_RST_PIN, GPIO_PIN_RESET); + HAL_GPIO_Init(OLED_RST_PORT, &GPIO_InitStructure); + + // Enable SPI 1 for OLED display + GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Alternate = OLED_SPI_AF; + GPIO_InitStructure.Pin = OLED_SPI_SCK_PIN; + HAL_GPIO_Init(OLED_SPI_SCK_PORT, &GPIO_InitStructure); + GPIO_InitStructure.Pin = OLED_SPI_MOSI_PIN; + HAL_GPIO_Init(OLED_SPI_MOSI_PORT, &GPIO_InitStructure); + + // Initialize SPI controller + display_init_spi(drv); + + // Set to CMD + HAL_GPIO_WritePin(OLED_DC_PORT, OLED_DC_PIN, GPIO_PIN_RESET); + // SPI deselect + HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_SET); + + // Reset the LCD + HAL_GPIO_WritePin(OLED_RST_PORT, OLED_RST_PIN, GPIO_PIN_SET); + HAL_Delay(1); + HAL_GPIO_WritePin(OLED_RST_PORT, OLED_RST_PIN, GPIO_PIN_RESET); + HAL_Delay(1); + HAL_GPIO_WritePin(OLED_RST_PORT, OLED_RST_PIN, GPIO_PIN_SET); + + // SPI select + HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_RESET); + // Send initialization command sequence + display_send_bytes(drv, &vg_2864ksweg01_init_seq[0], + sizeof(vg_2864ksweg01_init_seq)); + // SPI deselect + HAL_GPIO_WritePin(OLED_CS_PORT, OLED_CS_PIN, GPIO_PIN_SET); + + // Clear display internal framebuffer + display_sync_with_fb(drv); +} + +void display_reinit(void) { + display_driver_t *drv = &g_display_driver; + + memset(drv, 0, sizeof(display_driver_t)); + drv->backlight_level = 255; + + display_init_spi(drv); +} + +void display_finish_actions(void) { + /// Not used and intentionally left empty +} + +int display_set_backlight(int level) { + display_driver_t *drv = &g_display_driver; + + drv->backlight_level = 255; + return drv->backlight_level; +} + +int display_get_backlight(void) { + display_driver_t *drv = &g_display_driver; + + return drv->backlight_level; +} + +int display_set_orientation(int angle) { + display_driver_t *drv = &g_display_driver; + + if (angle != drv->orientation_angle) { + if (angle == 0 || angle == 180) { + drv->orientation_angle = angle; + display_sync_with_fb(drv); + } + } + + return drv->orientation_angle; +} + +int display_get_orientation(void) { + display_driver_t *drv = &g_display_driver; + + return drv->orientation_angle; +} + +display_fb_info_t display_get_frame_buffer(void) { + display_driver_t *drv = &g_display_driver; + + display_fb_info_t fb = { + .ptr = &drv->framebuf[0], + .stride = DISPLAY_RESX, + }; + + return fb; +} + +void display_refresh(void) { + display_driver_t *drv = &g_display_driver; + +#if defined USE_CONSUMPTION_MASK && !defined BOARDLOADER + // This is an intentional randomization of the consumption masking algorithm + // after every change on the display + consumption_mask_randomize(); +#endif + + // Sends the current frame buffer to the display + display_sync_with_fb(drv); +} + +void display_set_compatible_settings() {} + +void display_fill(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = &drv->framebuf[DISPLAY_RESX * bb_new.dst_y]; + bb_new.dst_stride = DISPLAY_RESX; + + gfx_mono8_fill(&bb_new); +} + +void display_copy_mono1p(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = &drv->framebuf[DISPLAY_RESX * bb_new.dst_y]; + bb_new.dst_stride = DISPLAY_RESX; + + gfx_mono8_copy_mono1p(&bb_new); +} diff --git a/core/embed/trezorhal/stm32u5/displays/dsi.h b/core/embed/trezorhal/stm32u5/displays/dsi.h index a717e4bb71..913adb369b 100644 --- a/core/embed/trezorhal/stm32u5/displays/dsi.h +++ b/core/embed/trezorhal/stm32u5/displays/dsi.h @@ -3,10 +3,6 @@ #include STM32_HAL_H -#define MAX_DISPLAY_RESX 240 -#define MAX_DISPLAY_RESY 240 -#define DISPLAY_RESX 240 -#define DISPLAY_RESY 240 #define DISPLAY_COLOR_MODE DMA2D_OUTPUT_ARGB8888 #define DISPLAY_FRAMEBUFFER_WIDTH 768 #define DISPLAY_FRAMEBUFFER_HEIGHT 480 diff --git a/core/embed/trezorhal/stm32u5/dma2d_bitblt.c b/core/embed/trezorhal/stm32u5/dma2d_bitblt.c new file mode 120000 index 0000000000..faeb9cc40b --- /dev/null +++ b/core/embed/trezorhal/stm32u5/dma2d_bitblt.c @@ -0,0 +1 @@ +../stm32f4/dma2d_bitblt.c \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/xdisplay/st-7789 b/core/embed/trezorhal/stm32u5/xdisplay/st-7789 new file mode 120000 index 0000000000..e524c4e49a --- /dev/null +++ b/core/embed/trezorhal/stm32u5/xdisplay/st-7789 @@ -0,0 +1 @@ +../../stm32f4/xdisplay/st-7789 \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_driver.c b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_driver.c new file mode 100644 index 0000000000..daa321df20 --- /dev/null +++ b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_driver.c @@ -0,0 +1,155 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdint.h> +#include <string.h> + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "display_internal.h" +#include "xdisplay.h" + +#if (DISPLAY_RESX != 240) || (DISPLAY_RESY != 240) +#error "Incompatible display resolution" +#endif + +// Display driver context. +typedef struct { + // Current display orientation (0, 90, 180, 270) + int orientation_angle; + // Current backlight level ranging from 0 to 255 + int backlight_level; +} display_driver_t; + +// Display driver instance +static display_driver_t g_display_driver; + +void display_init(void) { + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; + + // Initializes the common periph clock + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LTDC | RCC_PERIPHCLK_DSI; + PeriphClkInit.DsiClockSelection = RCC_DSICLKSOURCE_PLL3; + PeriphClkInit.LtdcClockSelection = RCC_LTDCCLKSOURCE_PLL3; + PeriphClkInit.PLL3.PLL3Source = RCC_PLLSOURCE_HSE; + PeriphClkInit.PLL3.PLL3M = 4; + PeriphClkInit.PLL3.PLL3N = 125; + PeriphClkInit.PLL3.PLL3P = 8; + PeriphClkInit.PLL3.PLL3Q = 2; + PeriphClkInit.PLL3.PLL3R = 24; + PeriphClkInit.PLL3.PLL3RGE = RCC_PLLVCIRANGE_0; + PeriphClkInit.PLL3.PLL3FRACN = 0; + PeriphClkInit.PLL3.PLL3ClockOut = RCC_PLL3_DIVP | RCC_PLL3_DIVR; + HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit); + + // Clear framebuffers + memset(physical_frame_buffer_0, 0x00, PHYSICAL_FRAME_BUFFER_SIZE); + memset(physical_frame_buffer_1, 0x00, PHYSICAL_FRAME_BUFFER_SIZE); + + BSP_LCD_Init(0, LCD_ORIENTATION_PORTRAIT); + BSP_LCD_SetBrightness(0, 100); + BSP_LCD_DisplayOn(0); +} + +void display_reinit(void) { + BSP_LCD_Reinit(0); + if (current_frame_buffer == 0) { + BSP_LCD_SetFrameBuffer(0, GFXMMU_VIRTUAL_BUFFER1_BASE_S); + } else { + BSP_LCD_SetFrameBuffer(0, GFXMMU_VIRTUAL_BUFFER0_BASE_S); + } +} + +void display_finish_actions(void) { + // Not used and intentionally left empty +} + +int display_set_backlight(int level) { + display_driver_t *drv = &g_display_driver; + + // Just emulation, not doing anything + drv->backlight_level = level; + return level; +} + +int display_get_backlight(void) { + display_driver_t *drv = &g_display_driver; + + return drv->orientation_angle; +} + +int display_set_orientation(int angle) { + display_driver_t *drv = &g_display_driver; + + if (angle == 0 || angle == 90 || angle == 180 || angle == 270) { + // Just emulation, not doing anything + drv->orientation_angle = angle; + } + + return drv->orientation_angle; +} + +int display_get_orientation(void) { + display_driver_t *drv = &g_display_driver; + + return drv->orientation_angle; +} + +void display_set_compatible_settings() {} + +void display_fill(const gfx_bitblt_t *bb) { + display_fb_info_t fb = display_get_frame_buffer(); + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = (uint8_t *)fb.ptr + (fb.stride * bb_new.dst_y); + bb_new.dst_stride = fb.stride; + + gfx_rgba8888_fill(&bb_new); +} + +void display_copy_rgb565(const gfx_bitblt_t *bb) { + display_fb_info_t fb = display_get_frame_buffer(); + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = (uint8_t *)fb.ptr + (fb.stride * bb_new.dst_y); + bb_new.dst_stride = fb.stride; + + gfx_rgba8888_copy_rgb565(&bb_new); +} + +void display_copy_mono1p(const gfx_bitblt_t *bb) { + display_fb_info_t fb = display_get_frame_buffer(); + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = (uint8_t *)fb.ptr + (fb.stride * bb_new.dst_y); + bb_new.dst_stride = fb.stride; + + gfx_rgba8888_copy_mono1p(&bb_new); +} + +void display_copy_mono4(const gfx_bitblt_t *bb) { + display_fb_info_t fb = display_get_frame_buffer(); + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = (uint8_t *)fb.ptr + (fb.stride * bb_new.dst_y); + bb_new.dst_stride = fb.stride; + + gfx_rgba8888_copy_mono4(&bb_new); +} diff --git a/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_fb.c b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_fb.c new file mode 100644 index 0000000000..5b425176cc --- /dev/null +++ b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_fb.c @@ -0,0 +1,77 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdint.h> +#include <string.h> + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include <xdisplay.h> +#include "display_internal.h" + +// Physical frame buffers in internal SRAM memory +__attribute__((section(".fb1"))) +ALIGN_32BYTES(uint32_t physical_frame_buffer_0[PHYSICAL_FRAME_BUFFER_SIZE]); + +__attribute__((section(".fb2"))) +ALIGN_32BYTES(uint32_t physical_frame_buffer_1[PHYSICAL_FRAME_BUFFER_SIZE]); + +// The current frame buffer selector at fixed memory address +// It's shared between bootloaders and the firmware +__attribute__((section(".framebuffer_select"))) uint32_t current_frame_buffer = + 0; + +display_fb_info_t display_get_frame_buffer(void) { + uintptr_t addr; + + if (current_frame_buffer == 0) { + addr = GFXMMU_VIRTUAL_BUFFER1_BASE_S; + } else { + addr = GFXMMU_VIRTUAL_BUFFER0_BASE_S; + } + + uint32_t fb_stride = FRAME_BUFFER_PIXELS_PER_LINE * sizeof(uint32_t); + + // We do not utilize whole area of the display + // (discovery kit display is 480x480 and we need just 240x240) + addr += (480 - DISPLAY_RESY) / 2 * sizeof(uint32_t); + addr += (480 - DISPLAY_RESX) / 2 * fb_stride; + + display_fb_info_t fb = { + .ptr = (void *)addr, + .stride = fb_stride, + }; + + return fb; +} + +void display_refresh(void) { + if (current_frame_buffer == 0) { + current_frame_buffer = 1; + BSP_LCD_SetFrameBuffer(0, GFXMMU_VIRTUAL_BUFFER1_BASE_S); + memcpy(physical_frame_buffer_0, physical_frame_buffer_1, + sizeof(physical_frame_buffer_0)); + } else { + current_frame_buffer = 0; + BSP_LCD_SetFrameBuffer(0, GFXMMU_VIRTUAL_BUFFER0_BASE_S); + memcpy(physical_frame_buffer_1, physical_frame_buffer_0, + sizeof(physical_frame_buffer_1)); + } +} diff --git a/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_gfxmmu_lut.h b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_gfxmmu_lut.h new file mode 100644 index 0000000000..86528b9d9a --- /dev/null +++ b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_gfxmmu_lut.h @@ -0,0 +1,1006 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * File Name : gfxmmu_lut.h + * Description : header file for GFX MMU Configuration Table + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __gfxmmu_lut_H +#define __gfxmmu_lut_H +#ifdef __cplusplus +extern "C" { +#endif +// GFX MMU Configuration Table + +#define GFXMMU_FB_SIZE 733936 +#define GFXMMU_LUT_FIRST 0 +#define GFXMMU_LUT_LAST 479 +#define GFXMMU_LUT_SIZE 480 + +uint32_t gfxmmu_lut[2 * GFXMMU_LUT_SIZE] = { + 0x00413601, // GFXMMU_LUT0L + 0x003FFCA0, // GFXMMU_LUT0H + 0x00433401, // GFXMMU_LUT1L + 0x003FFD80, // GFXMMU_LUT1H + 0x00453201, // GFXMMU_LUT2L + 0x003FFEA0, // GFXMMU_LUT2H + 0x00463101, // GFXMMU_LUT3L + 0x003FFFF0, // GFXMMU_LUT3H + 0x00482F01, // GFXMMU_LUT4L + 0x00000170, // GFXMMU_LUT4H + 0x00492E01, // GFXMMU_LUT5L + 0x00000320, // GFXMMU_LUT5H + 0x004A2D01, // GFXMMU_LUT6L + 0x000004F0, // GFXMMU_LUT6H + 0x004B2C01, // GFXMMU_LUT7L + 0x000006E0, // GFXMMU_LUT7H + 0x004C2B01, // GFXMMU_LUT8L + 0x000008F0, // GFXMMU_LUT8H + 0x004D2A01, // GFXMMU_LUT9L + 0x00000B20, // GFXMMU_LUT9H + 0x004D2A01, // GFXMMU_LUT10L + 0x00000D60, // GFXMMU_LUT10H + 0x004E2901, // GFXMMU_LUT11L + 0x00000FB0, // GFXMMU_LUT11H + 0x004F2801, // GFXMMU_LUT12L + 0x00001220, // GFXMMU_LUT12H + 0x00502701, // GFXMMU_LUT13L + 0x000014B0, // GFXMMU_LUT13H + 0x00502701, // GFXMMU_LUT14L + 0x00001750, // GFXMMU_LUT14H + 0x00512601, // GFXMMU_LUT15L + 0x00001A00, // GFXMMU_LUT15H + 0x00522501, // GFXMMU_LUT16L + 0x00001CD0, // GFXMMU_LUT16H + 0x00522501, // GFXMMU_LUT17L + 0x00001FB0, // GFXMMU_LUT17H + 0x00532401, // GFXMMU_LUT18L + 0x000022A0, // GFXMMU_LUT18H + 0x00532401, // GFXMMU_LUT19L + 0x000025A0, // GFXMMU_LUT19H + 0x00542301, // GFXMMU_LUT20L + 0x000028B0, // GFXMMU_LUT20H + 0x00552201, // GFXMMU_LUT21L + 0x00002BE0, // GFXMMU_LUT21H + 0x00552201, // GFXMMU_LUT22L + 0x00002F20, // GFXMMU_LUT22H + 0x00562101, // GFXMMU_LUT23L + 0x00003270, // GFXMMU_LUT23H + 0x00562101, // GFXMMU_LUT24L + 0x000035D0, // GFXMMU_LUT24H + 0x00572001, // GFXMMU_LUT25L + 0x00003940, // GFXMMU_LUT25H + 0x00572001, // GFXMMU_LUT26L + 0x00003CC0, // GFXMMU_LUT26H + 0x00581F01, // GFXMMU_LUT27L + 0x00004050, // GFXMMU_LUT27H + 0x00581F01, // GFXMMU_LUT28L + 0x000043F0, // GFXMMU_LUT28H + 0x00591E01, // GFXMMU_LUT29L + 0x000047A0, // GFXMMU_LUT29H + 0x00591E01, // GFXMMU_LUT30L + 0x00004B60, // GFXMMU_LUT30H + 0x00591E01, // GFXMMU_LUT31L + 0x00004F20, // GFXMMU_LUT31H + 0x005A1D01, // GFXMMU_LUT32L + 0x000052F0, // GFXMMU_LUT32H + 0x005A1D01, // GFXMMU_LUT33L + 0x000056D0, // GFXMMU_LUT33H + 0x005B1C01, // GFXMMU_LUT34L + 0x00005AC0, // GFXMMU_LUT34H + 0x005B1C01, // GFXMMU_LUT35L + 0x00005EC0, // GFXMMU_LUT35H + 0x005C1B01, // GFXMMU_LUT36L + 0x000062D0, // GFXMMU_LUT36H + 0x005C1B01, // GFXMMU_LUT37L + 0x000066F0, // GFXMMU_LUT37H + 0x005C1B01, // GFXMMU_LUT38L + 0x00006B10, // GFXMMU_LUT38H + 0x005D1A01, // GFXMMU_LUT39L + 0x00006F40, // GFXMMU_LUT39H + 0x005D1A01, // GFXMMU_LUT40L + 0x00007380, // GFXMMU_LUT40H + 0x005D1A01, // GFXMMU_LUT41L + 0x000077C0, // GFXMMU_LUT41H + 0x005E1901, // GFXMMU_LUT42L + 0x00007C10, // GFXMMU_LUT42H + 0x005E1901, // GFXMMU_LUT43L + 0x00008070, // GFXMMU_LUT43H + 0x005E1901, // GFXMMU_LUT44L + 0x000084D0, // GFXMMU_LUT44H + 0x005F1801, // GFXMMU_LUT45L + 0x00008940, // GFXMMU_LUT45H + 0x005F1801, // GFXMMU_LUT46L + 0x00008DC0, // GFXMMU_LUT46H + 0x00601801, // GFXMMU_LUT47L + 0x00009240, // GFXMMU_LUT47H + 0x00601701, // GFXMMU_LUT48L + 0x000096E0, // GFXMMU_LUT48H + 0x00601701, // GFXMMU_LUT49L + 0x00009B80, // GFXMMU_LUT49H + 0x00601701, // GFXMMU_LUT50L + 0x0000A020, // GFXMMU_LUT50H + 0x00611601, // GFXMMU_LUT51L + 0x0000A4D0, // GFXMMU_LUT51H + 0x00611601, // GFXMMU_LUT52L + 0x0000A990, // GFXMMU_LUT52H + 0x00611601, // GFXMMU_LUT53L + 0x0000AE50, // GFXMMU_LUT53H + 0x00621501, // GFXMMU_LUT54L + 0x0000B320, // GFXMMU_LUT54H + 0x00621501, // GFXMMU_LUT55L + 0x0000B800, // GFXMMU_LUT55H + 0x00621501, // GFXMMU_LUT56L + 0x0000BCE0, // GFXMMU_LUT56H + 0x00631401, // GFXMMU_LUT57L + 0x0000C1D0, // GFXMMU_LUT57H + 0x00631401, // GFXMMU_LUT58L + 0x0000C6D0, // GFXMMU_LUT58H + 0x00631401, // GFXMMU_LUT59L + 0x0000CBD0, // GFXMMU_LUT59H + 0x00631401, // GFXMMU_LUT60L + 0x0000D0D0, // GFXMMU_LUT60H + 0x00641301, // GFXMMU_LUT61L + 0x0000D5E0, // GFXMMU_LUT61H + 0x00641301, // GFXMMU_LUT62L + 0x0000DB00, // GFXMMU_LUT62H + 0x00641301, // GFXMMU_LUT63L + 0x0000E020, // GFXMMU_LUT63H + 0x00651201, // GFXMMU_LUT64L + 0x0000E550, // GFXMMU_LUT64H + 0x00651201, // GFXMMU_LUT65L + 0x0000EA90, // GFXMMU_LUT65H + 0x00651201, // GFXMMU_LUT66L + 0x0000EFD0, // GFXMMU_LUT66H + 0x00651201, // GFXMMU_LUT67L + 0x0000F510, // GFXMMU_LUT67H + 0x00661101, // GFXMMU_LUT68L + 0x0000FA60, // GFXMMU_LUT68H + 0x00661101, // GFXMMU_LUT69L + 0x0000FFC0, // GFXMMU_LUT69H + 0x00661101, // GFXMMU_LUT70L + 0x00010520, // GFXMMU_LUT70H + 0x00661101, // GFXMMU_LUT71L + 0x00010A80, // GFXMMU_LUT71H + 0x00671001, // GFXMMU_LUT72L + 0x00010FF0, // GFXMMU_LUT72H + 0x00671001, // GFXMMU_LUT73L + 0x00011570, // GFXMMU_LUT73H + 0x00671001, // GFXMMU_LUT74L + 0x00011AF0, // GFXMMU_LUT74H + 0x00671001, // GFXMMU_LUT75L + 0x00012070, // GFXMMU_LUT75H + 0x00680F01, // GFXMMU_LUT76L + 0x00012600, // GFXMMU_LUT76H + 0x00680F01, // GFXMMU_LUT77L + 0x00012BA0, // GFXMMU_LUT77H + 0x00680F01, // GFXMMU_LUT78L + 0x00013140, // GFXMMU_LUT78H + 0x00680F01, // GFXMMU_LUT79L + 0x000136E0, // GFXMMU_LUT79H + 0x00680F01, // GFXMMU_LUT80L + 0x00013C80, // GFXMMU_LUT80H + 0x00690E01, // GFXMMU_LUT81L + 0x00014230, // GFXMMU_LUT81H + 0x00690E01, // GFXMMU_LUT82L + 0x000147F0, // GFXMMU_LUT82H + 0x00690E01, // GFXMMU_LUT83L + 0x00014DB0, // GFXMMU_LUT83H + 0x00690E01, // GFXMMU_LUT84L + 0x00015370, // GFXMMU_LUT84H + 0x006A0D01, // GFXMMU_LUT85L + 0x00015940, // GFXMMU_LUT85H + 0x006A0D01, // GFXMMU_LUT86L + 0x00015F20, // GFXMMU_LUT86H + 0x006A0D01, // GFXMMU_LUT87L + 0x00016500, // GFXMMU_LUT87H + 0x006A0D01, // GFXMMU_LUT88L + 0x00016AE0, // GFXMMU_LUT88H + 0x006A0D01, // GFXMMU_LUT89L + 0x000170C0, // GFXMMU_LUT89H + 0x006B0C01, // GFXMMU_LUT90L + 0x000176B0, // GFXMMU_LUT90H + 0x006B0C01, // GFXMMU_LUT91L + 0x00017CB0, // GFXMMU_LUT91H + 0x006B0C01, // GFXMMU_LUT92L + 0x000182B0, // GFXMMU_LUT92H + 0x006B0C01, // GFXMMU_LUT93L + 0x000188B0, // GFXMMU_LUT93H + 0x006B0C01, // GFXMMU_LUT94L + 0x00018EB0, // GFXMMU_LUT94H + 0x006C0C01, // GFXMMU_LUT95L + 0x000194B0, // GFXMMU_LUT95H + 0x006C0B01, // GFXMMU_LUT96L + 0x00019AD0, // GFXMMU_LUT96H + 0x006C0B01, // GFXMMU_LUT97L + 0x0001A0F0, // GFXMMU_LUT97H + 0x006C0B01, // GFXMMU_LUT98L + 0x0001A710, // GFXMMU_LUT98H + 0x006C0B01, // GFXMMU_LUT99L + 0x0001AD30, // GFXMMU_LUT99H + 0x006C0B01, // GFXMMU_LUT100L + 0x0001B350, // GFXMMU_LUT100H + 0x006D0A01, // GFXMMU_LUT101L + 0x0001B980, // GFXMMU_LUT101H + 0x006D0A01, // GFXMMU_LUT102L + 0x0001BFC0, // GFXMMU_LUT102H + 0x006D0A01, // GFXMMU_LUT103L + 0x0001C600, // GFXMMU_LUT103H + 0x006D0A01, // GFXMMU_LUT104L + 0x0001CC40, // GFXMMU_LUT104H + 0x006D0A01, // GFXMMU_LUT105L + 0x0001D280, // GFXMMU_LUT105H + 0x006D0A01, // GFXMMU_LUT106L + 0x0001D8C0, // GFXMMU_LUT106H + 0x006E0901, // GFXMMU_LUT107L + 0x0001DF10, // GFXMMU_LUT107H + 0x006E0901, // GFXMMU_LUT108L + 0x0001E570, // GFXMMU_LUT108H + 0x006E0901, // GFXMMU_LUT109L + 0x0001EBD0, // GFXMMU_LUT109H + 0x006E0901, // GFXMMU_LUT110L + 0x0001F230, // GFXMMU_LUT110H + 0x006E0901, // GFXMMU_LUT111L + 0x0001F890, // GFXMMU_LUT111H + 0x006E0901, // GFXMMU_LUT112L + 0x0001FEF0, // GFXMMU_LUT112H + 0x006F0801, // GFXMMU_LUT113L + 0x00020560, // GFXMMU_LUT113H + 0x006F0801, // GFXMMU_LUT114L + 0x00020BE0, // GFXMMU_LUT114H + 0x006F0801, // GFXMMU_LUT115L + 0x00021260, // GFXMMU_LUT115H + 0x006F0801, // GFXMMU_LUT116L + 0x000218E0, // GFXMMU_LUT116H + 0x006F0801, // GFXMMU_LUT117L + 0x00021F60, // GFXMMU_LUT117H + 0x006F0801, // GFXMMU_LUT118L + 0x000225E0, // GFXMMU_LUT118H + 0x006F0801, // GFXMMU_LUT119L + 0x00022C60, // GFXMMU_LUT119H + 0x00700701, // GFXMMU_LUT120L + 0x000232F0, // GFXMMU_LUT120H + 0x00700701, // GFXMMU_LUT121L + 0x00023990, // GFXMMU_LUT121H + 0x00700701, // GFXMMU_LUT122L + 0x00024030, // GFXMMU_LUT122H + 0x00700701, // GFXMMU_LUT123L + 0x000246D0, // GFXMMU_LUT123H + 0x00700701, // GFXMMU_LUT124L + 0x00024D70, // GFXMMU_LUT124H + 0x00700701, // GFXMMU_LUT125L + 0x00025410, // GFXMMU_LUT125H + 0x00700701, // GFXMMU_LUT126L + 0x00025AB0, // GFXMMU_LUT126H + 0x00710601, // GFXMMU_LUT127L + 0x00026160, // GFXMMU_LUT127H + 0x00710601, // GFXMMU_LUT128L + 0x00026820, // GFXMMU_LUT128H + 0x00710601, // GFXMMU_LUT129L + 0x00026EE0, // GFXMMU_LUT129H + 0x00710601, // GFXMMU_LUT130L + 0x000275A0, // GFXMMU_LUT130H + 0x00710601, // GFXMMU_LUT131L + 0x00027C60, // GFXMMU_LUT131H + 0x00710601, // GFXMMU_LUT132L + 0x00028320, // GFXMMU_LUT132H + 0x00710601, // GFXMMU_LUT133L + 0x000289E0, // GFXMMU_LUT133H + 0x00710601, // GFXMMU_LUT134L + 0x000290A0, // GFXMMU_LUT134H + 0x00720501, // GFXMMU_LUT135L + 0x00029770, // GFXMMU_LUT135H + 0x00720501, // GFXMMU_LUT136L + 0x00029E50, // GFXMMU_LUT136H + 0x00720501, // GFXMMU_LUT137L + 0x0002A530, // GFXMMU_LUT137H + 0x00720501, // GFXMMU_LUT138L + 0x0002AC10, // GFXMMU_LUT138H + 0x00720501, // GFXMMU_LUT139L + 0x0002B2F0, // GFXMMU_LUT139H + 0x00720501, // GFXMMU_LUT140L + 0x0002B9D0, // GFXMMU_LUT140H + 0x00720501, // GFXMMU_LUT141L + 0x0002C0B0, // GFXMMU_LUT141H + 0x00720501, // GFXMMU_LUT142L + 0x0002C790, // GFXMMU_LUT142H + 0x00720501, // GFXMMU_LUT143L + 0x0002CE70, // GFXMMU_LUT143H + 0x00730401, // GFXMMU_LUT144L + 0x0002D560, // GFXMMU_LUT144H + 0x00730401, // GFXMMU_LUT145L + 0x0002DC60, // GFXMMU_LUT145H + 0x00730401, // GFXMMU_LUT146L + 0x0002E360, // GFXMMU_LUT146H + 0x00730401, // GFXMMU_LUT147L + 0x0002EA60, // GFXMMU_LUT147H + 0x00730401, // GFXMMU_LUT148L + 0x0002F160, // GFXMMU_LUT148H + 0x00730401, // GFXMMU_LUT149L + 0x0002F860, // GFXMMU_LUT149H + 0x00730401, // GFXMMU_LUT150L + 0x0002FF60, // GFXMMU_LUT150H + 0x00730401, // GFXMMU_LUT151L + 0x00030660, // GFXMMU_LUT151H + 0x00730401, // GFXMMU_LUT152L + 0x00030D60, // GFXMMU_LUT152H + 0x00740301, // GFXMMU_LUT153L + 0x00031470, // GFXMMU_LUT153H + 0x00740301, // GFXMMU_LUT154L + 0x00031B90, // GFXMMU_LUT154H + 0x00740301, // GFXMMU_LUT155L + 0x000322B0, // GFXMMU_LUT155H + 0x00740301, // GFXMMU_LUT156L + 0x000329D0, // GFXMMU_LUT156H + 0x00740301, // GFXMMU_LUT157L + 0x000330F0, // GFXMMU_LUT157H + 0x00740301, // GFXMMU_LUT158L + 0x00033810, // GFXMMU_LUT158H + 0x00740301, // GFXMMU_LUT159L + 0x00033F30, // GFXMMU_LUT159H + 0x00740301, // GFXMMU_LUT160L + 0x00034650, // GFXMMU_LUT160H + 0x00740301, // GFXMMU_LUT161L + 0x00034D70, // GFXMMU_LUT161H + 0x00740301, // GFXMMU_LUT162L + 0x00035490, // GFXMMU_LUT162H + 0x00740301, // GFXMMU_LUT163L + 0x00035BB0, // GFXMMU_LUT163H + 0x00740301, // GFXMMU_LUT164L + 0x000362D0, // GFXMMU_LUT164H + 0x00750201, // GFXMMU_LUT165L + 0x00036A00, // GFXMMU_LUT165H + 0x00750201, // GFXMMU_LUT166L + 0x00037140, // GFXMMU_LUT166H + 0x00750201, // GFXMMU_LUT167L + 0x00037880, // GFXMMU_LUT167H + 0x00750201, // GFXMMU_LUT168L + 0x00037FC0, // GFXMMU_LUT168H + 0x00750201, // GFXMMU_LUT169L + 0x00038700, // GFXMMU_LUT169H + 0x00750201, // GFXMMU_LUT170L + 0x00038E40, // GFXMMU_LUT170H + 0x00750201, // GFXMMU_LUT171L + 0x00039580, // GFXMMU_LUT171H + 0x00750201, // GFXMMU_LUT172L + 0x00039CC0, // GFXMMU_LUT172H + 0x00750201, // GFXMMU_LUT173L + 0x0003A400, // GFXMMU_LUT173H + 0x00750201, // GFXMMU_LUT174L + 0x0003AB40, // GFXMMU_LUT174H + 0x00750201, // GFXMMU_LUT175L + 0x0003B280, // GFXMMU_LUT175H + 0x00750201, // GFXMMU_LUT176L + 0x0003B9C0, // GFXMMU_LUT176H + 0x00750201, // GFXMMU_LUT177L + 0x0003C100, // GFXMMU_LUT177H + 0x00760101, // GFXMMU_LUT178L + 0x0003C850, // GFXMMU_LUT178H + 0x00760101, // GFXMMU_LUT179L + 0x0003CFB0, // GFXMMU_LUT179H + 0x00760101, // GFXMMU_LUT180L + 0x0003D710, // GFXMMU_LUT180H + 0x00760101, // GFXMMU_LUT181L + 0x0003DE70, // GFXMMU_LUT181H + 0x00760101, // GFXMMU_LUT182L + 0x0003E5D0, // GFXMMU_LUT182H + 0x00760101, // GFXMMU_LUT183L + 0x0003ED30, // GFXMMU_LUT183H + 0x00760101, // GFXMMU_LUT184L + 0x0003F490, // GFXMMU_LUT184H + 0x00760101, // GFXMMU_LUT185L + 0x0003FBF0, // GFXMMU_LUT185H + 0x00760101, // GFXMMU_LUT186L + 0x00040350, // GFXMMU_LUT186H + 0x00760101, // GFXMMU_LUT187L + 0x00040AB0, // GFXMMU_LUT187H + 0x00760101, // GFXMMU_LUT188L + 0x00041210, // GFXMMU_LUT188H + 0x00760101, // GFXMMU_LUT189L + 0x00041970, // GFXMMU_LUT189H + 0x00760101, // GFXMMU_LUT190L + 0x000420D0, // GFXMMU_LUT190H + 0x00760101, // GFXMMU_LUT191L + 0x00042830, // GFXMMU_LUT191H + 0x00760101, // GFXMMU_LUT192L + 0x00042F90, // GFXMMU_LUT192H + 0x00760101, // GFXMMU_LUT193L + 0x000436F0, // GFXMMU_LUT193H + 0x00760101, // GFXMMU_LUT194L + 0x00043E50, // GFXMMU_LUT194H + 0x00760101, // GFXMMU_LUT195L + 0x000445B0, // GFXMMU_LUT195H + 0x00770001, // GFXMMU_LUT196L + 0x00044D20, // GFXMMU_LUT196H + 0x00770001, // GFXMMU_LUT197L + 0x000454A0, // GFXMMU_LUT197H + 0x00770001, // GFXMMU_LUT198L + 0x00045C20, // GFXMMU_LUT198H + 0x00770001, // GFXMMU_LUT199L + 0x000463A0, // GFXMMU_LUT199H + 0x00770001, // GFXMMU_LUT200L + 0x00046B20, // GFXMMU_LUT200H + 0x00770001, // GFXMMU_LUT201L + 0x000472A0, // GFXMMU_LUT201H + 0x00770001, // GFXMMU_LUT202L + 0x00047A20, // GFXMMU_LUT202H + 0x00770001, // GFXMMU_LUT203L + 0x000481A0, // GFXMMU_LUT203H + 0x00770001, // GFXMMU_LUT204L + 0x00048920, // GFXMMU_LUT204H + 0x00770001, // GFXMMU_LUT205L + 0x000490A0, // GFXMMU_LUT205H + 0x00770001, // GFXMMU_LUT206L + 0x00049820, // GFXMMU_LUT206H + 0x00770001, // GFXMMU_LUT207L + 0x00049FA0, // GFXMMU_LUT207H + 0x00770001, // GFXMMU_LUT208L + 0x0004A720, // GFXMMU_LUT208H + 0x00770001, // GFXMMU_LUT209L + 0x0004AEA0, // GFXMMU_LUT209H + 0x00770001, // GFXMMU_LUT210L + 0x0004B620, // GFXMMU_LUT210H + 0x00770001, // GFXMMU_LUT211L + 0x0004BDA0, // GFXMMU_LUT211H + 0x00770001, // GFXMMU_LUT212L + 0x0004C520, // GFXMMU_LUT212H + 0x00770001, // GFXMMU_LUT213L + 0x0004CCA0, // GFXMMU_LUT213H + 0x00770001, // GFXMMU_LUT214L + 0x0004D420, // GFXMMU_LUT214H + 0x00770001, // GFXMMU_LUT215L + 0x0004DBA0, // GFXMMU_LUT215H + 0x00770001, // GFXMMU_LUT216L + 0x0004E320, // GFXMMU_LUT216H + 0x00770001, // GFXMMU_LUT217L + 0x0004EAA0, // GFXMMU_LUT217H + 0x00770001, // GFXMMU_LUT218L + 0x0004F220, // GFXMMU_LUT218H + 0x00770001, // GFXMMU_LUT219L + 0x0004F9A0, // GFXMMU_LUT219H + 0x00770001, // GFXMMU_LUT220L + 0x00050120, // GFXMMU_LUT220H + 0x00770001, // GFXMMU_LUT221L + 0x000508A0, // GFXMMU_LUT221H + 0x00770001, // GFXMMU_LUT222L + 0x00051020, // GFXMMU_LUT222H + 0x00770001, // GFXMMU_LUT223L + 0x000517A0, // GFXMMU_LUT223H + 0x00770001, // GFXMMU_LUT224L + 0x00051F20, // GFXMMU_LUT224H + 0x00770001, // GFXMMU_LUT225L + 0x000526A0, // GFXMMU_LUT225H + 0x00770001, // GFXMMU_LUT226L + 0x00052E20, // GFXMMU_LUT226H + 0x00770001, // GFXMMU_LUT227L + 0x000535A0, // GFXMMU_LUT227H + 0x00770001, // GFXMMU_LUT228L + 0x00053D20, // GFXMMU_LUT228H + 0x00770001, // GFXMMU_LUT229L + 0x000544A0, // GFXMMU_LUT229H + 0x00770001, // GFXMMU_LUT230L + 0x00054C20, // GFXMMU_LUT230H + 0x00770001, // GFXMMU_LUT231L + 0x000553A0, // GFXMMU_LUT231H + 0x00770001, // GFXMMU_LUT232L + 0x00055B20, // GFXMMU_LUT232H + 0x00770001, // GFXMMU_LUT233L + 0x000562A0, // GFXMMU_LUT233H + 0x00770001, // GFXMMU_LUT234L + 0x00056A20, // GFXMMU_LUT234H + 0x00770001, // GFXMMU_LUT235L + 0x000571A0, // GFXMMU_LUT235H + 0x00770001, // GFXMMU_LUT236L + 0x00057920, // GFXMMU_LUT236H + 0x00770001, // GFXMMU_LUT237L + 0x000580A0, // GFXMMU_LUT237H + 0x00770001, // GFXMMU_LUT238L + 0x00058820, // GFXMMU_LUT238H + 0x00770001, // GFXMMU_LUT239L + 0x00058FA0, // GFXMMU_LUT239H + 0x00780001, // GFXMMU_LUT240L + 0x00059720, // GFXMMU_LUT240H + 0x00770001, // GFXMMU_LUT241L + 0x00059EB0, // GFXMMU_LUT241H + 0x00770001, // GFXMMU_LUT242L + 0x0005A630, // GFXMMU_LUT242H + 0x00770001, // GFXMMU_LUT243L + 0x0005ADB0, // GFXMMU_LUT243H + 0x00770001, // GFXMMU_LUT244L + 0x0005B530, // GFXMMU_LUT244H + 0x00770001, // GFXMMU_LUT245L + 0x0005BCB0, // GFXMMU_LUT245H + 0x00770001, // GFXMMU_LUT246L + 0x0005C430, // GFXMMU_LUT246H + 0x00770001, // GFXMMU_LUT247L + 0x0005CBB0, // GFXMMU_LUT247H + 0x00770001, // GFXMMU_LUT248L + 0x0005D330, // GFXMMU_LUT248H + 0x00770001, // GFXMMU_LUT249L + 0x0005DAB0, // GFXMMU_LUT249H + 0x00770001, // GFXMMU_LUT250L + 0x0005E230, // GFXMMU_LUT250H + 0x00770001, // GFXMMU_LUT251L + 0x0005E9B0, // GFXMMU_LUT251H + 0x00770001, // GFXMMU_LUT252L + 0x0005F130, // GFXMMU_LUT252H + 0x00770001, // GFXMMU_LUT253L + 0x0005F8B0, // GFXMMU_LUT253H + 0x00770001, // GFXMMU_LUT254L + 0x00060030, // GFXMMU_LUT254H + 0x00770001, // GFXMMU_LUT255L + 0x000607B0, // GFXMMU_LUT255H + 0x00770001, // GFXMMU_LUT256L + 0x00060F30, // GFXMMU_LUT256H + 0x00770001, // GFXMMU_LUT257L + 0x000616B0, // GFXMMU_LUT257H + 0x00770001, // GFXMMU_LUT258L + 0x00061E30, // GFXMMU_LUT258H + 0x00770001, // GFXMMU_LUT259L + 0x000625B0, // GFXMMU_LUT259H + 0x00770001, // GFXMMU_LUT260L + 0x00062D30, // GFXMMU_LUT260H + 0x00770001, // GFXMMU_LUT261L + 0x000634B0, // GFXMMU_LUT261H + 0x00770001, // GFXMMU_LUT262L + 0x00063C30, // GFXMMU_LUT262H + 0x00770001, // GFXMMU_LUT263L + 0x000643B0, // GFXMMU_LUT263H + 0x00770001, // GFXMMU_LUT264L + 0x00064B30, // GFXMMU_LUT264H + 0x00770001, // GFXMMU_LUT265L + 0x000652B0, // GFXMMU_LUT265H + 0x00770001, // GFXMMU_LUT266L + 0x00065A30, // GFXMMU_LUT266H + 0x00770001, // GFXMMU_LUT267L + 0x000661B0, // GFXMMU_LUT267H + 0x00770001, // GFXMMU_LUT268L + 0x00066930, // GFXMMU_LUT268H + 0x00770001, // GFXMMU_LUT269L + 0x000670B0, // GFXMMU_LUT269H + 0x00770001, // GFXMMU_LUT270L + 0x00067830, // GFXMMU_LUT270H + 0x00770001, // GFXMMU_LUT271L + 0x00067FB0, // GFXMMU_LUT271H + 0x00770001, // GFXMMU_LUT272L + 0x00068730, // GFXMMU_LUT272H + 0x00770001, // GFXMMU_LUT273L + 0x00068EB0, // GFXMMU_LUT273H + 0x00770001, // GFXMMU_LUT274L + 0x00069630, // GFXMMU_LUT274H + 0x00770001, // GFXMMU_LUT275L + 0x00069DB0, // GFXMMU_LUT275H + 0x00770001, // GFXMMU_LUT276L + 0x0006A530, // GFXMMU_LUT276H + 0x00770001, // GFXMMU_LUT277L + 0x0006ACB0, // GFXMMU_LUT277H + 0x00770001, // GFXMMU_LUT278L + 0x0006B430, // GFXMMU_LUT278H + 0x00770001, // GFXMMU_LUT279L + 0x0006BBB0, // GFXMMU_LUT279H + 0x00770001, // GFXMMU_LUT280L + 0x0006C330, // GFXMMU_LUT280H + 0x00770001, // GFXMMU_LUT281L + 0x0006CAB0, // GFXMMU_LUT281H + 0x00770001, // GFXMMU_LUT282L + 0x0006D230, // GFXMMU_LUT282H + 0x00770001, // GFXMMU_LUT283L + 0x0006D9B0, // GFXMMU_LUT283H + 0x00770001, // GFXMMU_LUT284L + 0x0006E130, // GFXMMU_LUT284H + 0x00760101, // GFXMMU_LUT285L + 0x0006E8A0, // GFXMMU_LUT285H + 0x00760101, // GFXMMU_LUT286L + 0x0006F000, // GFXMMU_LUT286H + 0x00760101, // GFXMMU_LUT287L + 0x0006F760, // GFXMMU_LUT287H + 0x00760101, // GFXMMU_LUT288L + 0x0006FEC0, // GFXMMU_LUT288H + 0x00760101, // GFXMMU_LUT289L + 0x00070620, // GFXMMU_LUT289H + 0x00760101, // GFXMMU_LUT290L + 0x00070D80, // GFXMMU_LUT290H + 0x00760101, // GFXMMU_LUT291L + 0x000714E0, // GFXMMU_LUT291H + 0x00760101, // GFXMMU_LUT292L + 0x00071C40, // GFXMMU_LUT292H + 0x00760101, // GFXMMU_LUT293L + 0x000723A0, // GFXMMU_LUT293H + 0x00760101, // GFXMMU_LUT294L + 0x00072B00, // GFXMMU_LUT294H + 0x00760101, // GFXMMU_LUT295L + 0x00073260, // GFXMMU_LUT295H + 0x00760101, // GFXMMU_LUT296L + 0x000739C0, // GFXMMU_LUT296H + 0x00760101, // GFXMMU_LUT297L + 0x00074120, // GFXMMU_LUT297H + 0x00760101, // GFXMMU_LUT298L + 0x00074880, // GFXMMU_LUT298H + 0x00760101, // GFXMMU_LUT299L + 0x00074FE0, // GFXMMU_LUT299H + 0x00760101, // GFXMMU_LUT300L + 0x00075740, // GFXMMU_LUT300H + 0x00760101, // GFXMMU_LUT301L + 0x00075EA0, // GFXMMU_LUT301H + 0x00760101, // GFXMMU_LUT302L + 0x00076600, // GFXMMU_LUT302H + 0x00750201, // GFXMMU_LUT303L + 0x00076D50, // GFXMMU_LUT303H + 0x00750201, // GFXMMU_LUT304L + 0x00077490, // GFXMMU_LUT304H + 0x00750201, // GFXMMU_LUT305L + 0x00077BD0, // GFXMMU_LUT305H + 0x00750201, // GFXMMU_LUT306L + 0x00078310, // GFXMMU_LUT306H + 0x00750201, // GFXMMU_LUT307L + 0x00078A50, // GFXMMU_LUT307H + 0x00750201, // GFXMMU_LUT308L + 0x00079190, // GFXMMU_LUT308H + 0x00750201, // GFXMMU_LUT309L + 0x000798D0, // GFXMMU_LUT309H + 0x00750201, // GFXMMU_LUT310L + 0x0007A010, // GFXMMU_LUT310H + 0x00750201, // GFXMMU_LUT311L + 0x0007A750, // GFXMMU_LUT311H + 0x00750201, // GFXMMU_LUT312L + 0x0007AE90, // GFXMMU_LUT312H + 0x00750201, // GFXMMU_LUT313L + 0x0007B5D0, // GFXMMU_LUT313H + 0x00750201, // GFXMMU_LUT314L + 0x0007BD10, // GFXMMU_LUT314H + 0x00750201, // GFXMMU_LUT315L + 0x0007C450, // GFXMMU_LUT315H + 0x00740301, // GFXMMU_LUT316L + 0x0007CB80, // GFXMMU_LUT316H + 0x00740301, // GFXMMU_LUT317L + 0x0007D2A0, // GFXMMU_LUT317H + 0x00740301, // GFXMMU_LUT318L + 0x0007D9C0, // GFXMMU_LUT318H + 0x00740301, // GFXMMU_LUT319L + 0x0007E0E0, // GFXMMU_LUT319H + 0x00740301, // GFXMMU_LUT320L + 0x0007E800, // GFXMMU_LUT320H + 0x00740301, // GFXMMU_LUT321L + 0x0007EF20, // GFXMMU_LUT321H + 0x00740301, // GFXMMU_LUT322L + 0x0007F640, // GFXMMU_LUT322H + 0x00740301, // GFXMMU_LUT323L + 0x0007FD60, // GFXMMU_LUT323H + 0x00740301, // GFXMMU_LUT324L + 0x00080480, // GFXMMU_LUT324H + 0x00740301, // GFXMMU_LUT325L + 0x00080BA0, // GFXMMU_LUT325H + 0x00740301, // GFXMMU_LUT326L + 0x000812C0, // GFXMMU_LUT326H + 0x00740301, // GFXMMU_LUT327L + 0x000819E0, // GFXMMU_LUT327H + 0x00730401, // GFXMMU_LUT328L + 0x000820F0, // GFXMMU_LUT328H + 0x00730401, // GFXMMU_LUT329L + 0x000827F0, // GFXMMU_LUT329H + 0x00730401, // GFXMMU_LUT330L + 0x00082EF0, // GFXMMU_LUT330H + 0x00730401, // GFXMMU_LUT331L + 0x000835F0, // GFXMMU_LUT331H + 0x00730401, // GFXMMU_LUT332L + 0x00083CF0, // GFXMMU_LUT332H + 0x00730401, // GFXMMU_LUT333L + 0x000843F0, // GFXMMU_LUT333H + 0x00730401, // GFXMMU_LUT334L + 0x00084AF0, // GFXMMU_LUT334H + 0x00730401, // GFXMMU_LUT335L + 0x000851F0, // GFXMMU_LUT335H + 0x00730401, // GFXMMU_LUT336L + 0x000858F0, // GFXMMU_LUT336H + 0x00730401, // GFXMMU_LUT337L + 0x00085FF0, // GFXMMU_LUT337H + 0x00720501, // GFXMMU_LUT338L + 0x000866E0, // GFXMMU_LUT338H + 0x00720501, // GFXMMU_LUT339L + 0x00086DC0, // GFXMMU_LUT339H + 0x00720501, // GFXMMU_LUT340L + 0x000874A0, // GFXMMU_LUT340H + 0x00720501, // GFXMMU_LUT341L + 0x00087B80, // GFXMMU_LUT341H + 0x00720501, // GFXMMU_LUT342L + 0x00088260, // GFXMMU_LUT342H + 0x00720501, // GFXMMU_LUT343L + 0x00088940, // GFXMMU_LUT343H + 0x00720501, // GFXMMU_LUT344L + 0x00089020, // GFXMMU_LUT344H + 0x00720501, // GFXMMU_LUT345L + 0x00089700, // GFXMMU_LUT345H + 0x00710601, // GFXMMU_LUT346L + 0x00089DD0, // GFXMMU_LUT346H + 0x00710601, // GFXMMU_LUT347L + 0x0008A490, // GFXMMU_LUT347H + 0x00710601, // GFXMMU_LUT348L + 0x0008AB50, // GFXMMU_LUT348H + 0x00710601, // GFXMMU_LUT349L + 0x0008B210, // GFXMMU_LUT349H + 0x00710601, // GFXMMU_LUT350L + 0x0008B8D0, // GFXMMU_LUT350H + 0x00710601, // GFXMMU_LUT351L + 0x0008BF90, // GFXMMU_LUT351H + 0x00710601, // GFXMMU_LUT352L + 0x0008C650, // GFXMMU_LUT352H + 0x00710601, // GFXMMU_LUT353L + 0x0008CD10, // GFXMMU_LUT353H + 0x00700701, // GFXMMU_LUT354L + 0x0008D3C0, // GFXMMU_LUT354H + 0x00700701, // GFXMMU_LUT355L + 0x0008DA60, // GFXMMU_LUT355H + 0x00700701, // GFXMMU_LUT356L + 0x0008E100, // GFXMMU_LUT356H + 0x00700701, // GFXMMU_LUT357L + 0x0008E7A0, // GFXMMU_LUT357H + 0x00700701, // GFXMMU_LUT358L + 0x0008EE40, // GFXMMU_LUT358H + 0x00700701, // GFXMMU_LUT359L + 0x0008F4E0, // GFXMMU_LUT359H + 0x00700701, // GFXMMU_LUT360L + 0x0008FB80, // GFXMMU_LUT360H + 0x006F0801, // GFXMMU_LUT361L + 0x00090210, // GFXMMU_LUT361H + 0x006F0801, // GFXMMU_LUT362L + 0x00090890, // GFXMMU_LUT362H + 0x006F0801, // GFXMMU_LUT363L + 0x00090F10, // GFXMMU_LUT363H + 0x006F0801, // GFXMMU_LUT364L + 0x00091590, // GFXMMU_LUT364H + 0x006F0801, // GFXMMU_LUT365L + 0x00091C10, // GFXMMU_LUT365H + 0x006F0801, // GFXMMU_LUT366L + 0x00092290, // GFXMMU_LUT366H + 0x006F0801, // GFXMMU_LUT367L + 0x00092910, // GFXMMU_LUT367H + 0x006E0901, // GFXMMU_LUT368L + 0x00092F80, // GFXMMU_LUT368H + 0x006E0901, // GFXMMU_LUT369L + 0x000935E0, // GFXMMU_LUT369H + 0x006E0901, // GFXMMU_LUT370L + 0x00093C40, // GFXMMU_LUT370H + 0x006E0901, // GFXMMU_LUT371L + 0x000942A0, // GFXMMU_LUT371H + 0x006E0901, // GFXMMU_LUT372L + 0x00094900, // GFXMMU_LUT372H + 0x006E0901, // GFXMMU_LUT373L + 0x00094F60, // GFXMMU_LUT373H + 0x006D0A01, // GFXMMU_LUT374L + 0x000955B0, // GFXMMU_LUT374H + 0x006D0A01, // GFXMMU_LUT375L + 0x00095BF0, // GFXMMU_LUT375H + 0x006D0A01, // GFXMMU_LUT376L + 0x00096230, // GFXMMU_LUT376H + 0x006D0A01, // GFXMMU_LUT377L + 0x00096870, // GFXMMU_LUT377H + 0x006D0A01, // GFXMMU_LUT378L + 0x00096EB0, // GFXMMU_LUT378H + 0x006C0B01, // GFXMMU_LUT379L + 0x000974E0, // GFXMMU_LUT379H + 0x006C0B01, // GFXMMU_LUT380L + 0x00097B00, // GFXMMU_LUT380H + 0x006C0B01, // GFXMMU_LUT381L + 0x00098120, // GFXMMU_LUT381H + 0x006C0B01, // GFXMMU_LUT382L + 0x00098740, // GFXMMU_LUT382H + 0x006C0B01, // GFXMMU_LUT383L + 0x00098D60, // GFXMMU_LUT383H + 0x006C0B01, // GFXMMU_LUT384L + 0x00099380, // GFXMMU_LUT384H + 0x006B0C01, // GFXMMU_LUT385L + 0x00099990, // GFXMMU_LUT385H + 0x006B0C01, // GFXMMU_LUT386L + 0x00099F90, // GFXMMU_LUT386H + 0x006B0C01, // GFXMMU_LUT387L + 0x0009A590, // GFXMMU_LUT387H + 0x006B0C01, // GFXMMU_LUT388L + 0x0009AB90, // GFXMMU_LUT388H + 0x006B0C01, // GFXMMU_LUT389L + 0x0009B190, // GFXMMU_LUT389H + 0x006A0D01, // GFXMMU_LUT390L + 0x0009B780, // GFXMMU_LUT390H + 0x006A0D01, // GFXMMU_LUT391L + 0x0009BD60, // GFXMMU_LUT391H + 0x006A0D01, // GFXMMU_LUT392L + 0x0009C340, // GFXMMU_LUT392H + 0x006A0D01, // GFXMMU_LUT393L + 0x0009C920, // GFXMMU_LUT393H + 0x006A0D01, // GFXMMU_LUT394L + 0x0009CF00, // GFXMMU_LUT394H + 0x00690E01, // GFXMMU_LUT395L + 0x0009D4D0, // GFXMMU_LUT395H + 0x00690E01, // GFXMMU_LUT396L + 0x0009DA90, // GFXMMU_LUT396H + 0x00690E01, // GFXMMU_LUT397L + 0x0009E050, // GFXMMU_LUT397H + 0x00690E01, // GFXMMU_LUT398L + 0x0009E610, // GFXMMU_LUT398H + 0x00690E01, // GFXMMU_LUT399L + 0x0009EBD0, // GFXMMU_LUT399H + 0x00690E01, // GFXMMU_LUT400L + 0x0009F190, // GFXMMU_LUT400H + 0x00690E01, // GFXMMU_LUT401L + 0x0009F750, // GFXMMU_LUT401H + 0x00680F01, // GFXMMU_LUT402L + 0x0009FD00, // GFXMMU_LUT402H + 0x00680F01, // GFXMMU_LUT403L + 0x000A02A0, // GFXMMU_LUT403H + 0x00680F01, // GFXMMU_LUT404L + 0x000A0840, // GFXMMU_LUT404H + 0x00680F01, // GFXMMU_LUT405L + 0x000A0DE0, // GFXMMU_LUT405H + 0x00671001, // GFXMMU_LUT406L + 0x000A1370, // GFXMMU_LUT406H + 0x00671001, // GFXMMU_LUT407L + 0x000A18F0, // GFXMMU_LUT407H + 0x00671001, // GFXMMU_LUT408L + 0x000A1E70, // GFXMMU_LUT408H + 0x00671001, // GFXMMU_LUT409L + 0x000A23F0, // GFXMMU_LUT409H + 0x00661101, // GFXMMU_LUT410L + 0x000A2960, // GFXMMU_LUT410H + 0x00661101, // GFXMMU_LUT411L + 0x000A2EC0, // GFXMMU_LUT411H + 0x00661101, // GFXMMU_LUT412L + 0x000A3420, // GFXMMU_LUT412H + 0x00661101, // GFXMMU_LUT413L + 0x000A3980, // GFXMMU_LUT413H + 0x00651201, // GFXMMU_LUT414L + 0x000A3ED0, // GFXMMU_LUT414H + 0x00651201, // GFXMMU_LUT415L + 0x000A4410, // GFXMMU_LUT415H + 0x00651201, // GFXMMU_LUT416L + 0x000A4950, // GFXMMU_LUT416H + 0x00641301, // GFXMMU_LUT417L + 0x000A4E80, // GFXMMU_LUT417H + 0x00641301, // GFXMMU_LUT418L + 0x000A53A0, // GFXMMU_LUT418H + 0x00641301, // GFXMMU_LUT419L + 0x000A58C0, // GFXMMU_LUT419H + 0x00641301, // GFXMMU_LUT420L + 0x000A5DE0, // GFXMMU_LUT420H + 0x00631401, // GFXMMU_LUT421L + 0x000A62F0, // GFXMMU_LUT421H + 0x00631401, // GFXMMU_LUT422L + 0x000A67F0, // GFXMMU_LUT422H + 0x00631401, // GFXMMU_LUT423L + 0x000A6CF0, // GFXMMU_LUT423H + 0x00621501, // GFXMMU_LUT424L + 0x000A71E0, // GFXMMU_LUT424H + 0x00621501, // GFXMMU_LUT425L + 0x000A76C0, // GFXMMU_LUT425H + 0x00621501, // GFXMMU_LUT426L + 0x000A7BA0, // GFXMMU_LUT426H + 0x00621501, // GFXMMU_LUT427L + 0x000A8080, // GFXMMU_LUT427H + 0x00611601, // GFXMMU_LUT428L + 0x000A8550, // GFXMMU_LUT428H + 0x00611601, // GFXMMU_LUT429L + 0x000A8A10, // GFXMMU_LUT429H + 0x00611601, // GFXMMU_LUT430L + 0x000A8ED0, // GFXMMU_LUT430H + 0x00601701, // GFXMMU_LUT431L + 0x000A9380, // GFXMMU_LUT431H + 0x00601701, // GFXMMU_LUT432L + 0x000A9820, // GFXMMU_LUT432H + 0x00601701, // GFXMMU_LUT433L + 0x000A9CC0, // GFXMMU_LUT433H + 0x005F1801, // GFXMMU_LUT434L + 0x000AA150, // GFXMMU_LUT434H + 0x005F1801, // GFXMMU_LUT435L + 0x000AA5D0, // GFXMMU_LUT435H + 0x005F1801, // GFXMMU_LUT436L + 0x000AAA50, // GFXMMU_LUT436H + 0x005E1901, // GFXMMU_LUT437L + 0x000AAEC0, // GFXMMU_LUT437H + 0x005E1901, // GFXMMU_LUT438L + 0x000AB320, // GFXMMU_LUT438H + 0x005D1A01, // GFXMMU_LUT439L + 0x000AB770, // GFXMMU_LUT439H + 0x005D1A01, // GFXMMU_LUT440L + 0x000ABBB0, // GFXMMU_LUT440H + 0x005D1A01, // GFXMMU_LUT441L + 0x000ABFF0, // GFXMMU_LUT441H + 0x005C1B01, // GFXMMU_LUT442L + 0x000AC420, // GFXMMU_LUT442H + 0x005C1B01, // GFXMMU_LUT443L + 0x000AC840, // GFXMMU_LUT443H + 0x005B1C01, // GFXMMU_LUT444L + 0x000ACC50, // GFXMMU_LUT444H + 0x005B1C01, // GFXMMU_LUT445L + 0x000AD050, // GFXMMU_LUT445H + 0x005B1C01, // GFXMMU_LUT446L + 0x000AD450, // GFXMMU_LUT446H + 0x005A1D01, // GFXMMU_LUT447L + 0x000AD840, // GFXMMU_LUT447H + 0x005A1D01, // GFXMMU_LUT448L + 0x000ADC20, // GFXMMU_LUT448H + 0x00591E01, // GFXMMU_LUT449L + 0x000ADFF0, // GFXMMU_LUT449H + 0x00591E01, // GFXMMU_LUT450L + 0x000AE3B0, // GFXMMU_LUT450H + 0x00581F01, // GFXMMU_LUT451L + 0x000AE760, // GFXMMU_LUT451H + 0x00581F01, // GFXMMU_LUT452L + 0x000AEB00, // GFXMMU_LUT452H + 0x00572001, // GFXMMU_LUT453L + 0x000AEE90, // GFXMMU_LUT453H + 0x00572001, // GFXMMU_LUT454L + 0x000AF210, // GFXMMU_LUT454H + 0x00562101, // GFXMMU_LUT455L + 0x000AF580, // GFXMMU_LUT455H + 0x00562101, // GFXMMU_LUT456L + 0x000AF8E0, // GFXMMU_LUT456H + 0x00552201, // GFXMMU_LUT457L + 0x000AFC30, // GFXMMU_LUT457H + 0x00552201, // GFXMMU_LUT458L + 0x000AFF70, // GFXMMU_LUT458H + 0x00542301, // GFXMMU_LUT459L + 0x000B02A0, // GFXMMU_LUT459H + 0x00542301, // GFXMMU_LUT460L + 0x000B05C0, // GFXMMU_LUT460H + 0x00532401, // GFXMMU_LUT461L + 0x000B08D0, // GFXMMU_LUT461H + 0x00522501, // GFXMMU_LUT462L + 0x000B0BC0, // GFXMMU_LUT462H + 0x00522501, // GFXMMU_LUT463L + 0x000B0EA0, // GFXMMU_LUT463H + 0x00512601, // GFXMMU_LUT464L + 0x000B1170, // GFXMMU_LUT464H + 0x00502701, // GFXMMU_LUT465L + 0x000B1420, // GFXMMU_LUT465H + 0x00502701, // GFXMMU_LUT466L + 0x000B16C0, // GFXMMU_LUT466H + 0x004F2801, // GFXMMU_LUT467L + 0x000B1950, // GFXMMU_LUT467H + 0x004E2901, // GFXMMU_LUT468L + 0x000B1BC0, // GFXMMU_LUT468H + 0x004D2A01, // GFXMMU_LUT469L + 0x000B1E10, // GFXMMU_LUT469H + 0x004D2A01, // GFXMMU_LUT470L + 0x000B2050, // GFXMMU_LUT470H + 0x004C2B01, // GFXMMU_LUT471L + 0x000B2280, // GFXMMU_LUT471H + 0x004B2C01, // GFXMMU_LUT472L + 0x000B2490, // GFXMMU_LUT472H + 0x004A2D01, // GFXMMU_LUT473L + 0x000B2680, // GFXMMU_LUT473H + 0x00492E01, // GFXMMU_LUT474L + 0x000B2850, // GFXMMU_LUT474H + 0x00482F01, // GFXMMU_LUT475L + 0x000B2A00, // GFXMMU_LUT475H + 0x00463101, // GFXMMU_LUT476L + 0x000B2B80, // GFXMMU_LUT476H + 0x00453201, // GFXMMU_LUT477L + 0x000B2CD0, // GFXMMU_LUT477H + 0x00433401, // GFXMMU_LUT478L + 0x000B2DF0, // GFXMMU_LUT478H + 0x00413601, // GFXMMU_LUT479L + 0x000B2ED0 // GFXMMU_LUT479H +}; + +#ifdef __cplusplus +} +#endif +#endif /*__ gfxmmu_lut_H */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_internal.h b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_internal.h new file mode 100644 index 0000000000..cf3a1e8b66 --- /dev/null +++ b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_internal.h @@ -0,0 +1,58 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZOR_HAL_DISPLAY_INTERNAL_H +#define TREZOR_HAL_DISPLAY_INTERNAL_H + +#include <stdint.h> + +// Size of the physical frame buffer in bytes +// +// It's smaller than size of the virtual frame buffer +// due to used GFXMMU settings +#define PHYSICAL_FRAME_BUFFER_SIZE 184320 + +// Pitch (in pixels) of the virtual frame buffer +#define FRAME_BUFFER_PIXELS_PER_LINE 768 + +// Physical frame buffers in internal SRAM memory +// +// Both frame buffers layes in the fixed addresses that +// are shared between bootloaders and the firmware. +extern uint32_t physical_frame_buffer_0[PHYSICAL_FRAME_BUFFER_SIZE]; +extern uint32_t physical_frame_buffer_1[PHYSICAL_FRAME_BUFFER_SIZE]; + +// The current frame buffer selector at fixed memory address +// +// The variable address is shared between bootloaders and the firmware +extern uint32_t current_frame_buffer; + +// LCD orientations +#define LCD_ORIENTATION_PORTRAIT 0U +#define LCD_ORIENTATION_LANDSCAPE 1U +#define LCD_ORIENTATION_PORTRAIT_ROT180 2U +#define LCD_ORIENTATION_LANDSCAPE_ROT180 3U + +int32_t BSP_LCD_Init(uint32_t Instance, uint32_t Orientation); +int32_t BSP_LCD_Reinit(uint32_t Instance); +int32_t BSP_LCD_SetBrightness(uint32_t Instance, uint32_t Brightness); +int32_t BSP_LCD_DisplayOn(uint32_t Instance); +int32_t BSP_LCD_SetFrameBuffer(uint32_t Instance, uint32_t fb_addr); + +#endif // TREZOR_HAL_DISPLAY_INTERNAL_H diff --git a/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_ltdc_dsi.c b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_ltdc_dsi.c new file mode 100644 index 0000000000..fb3e116322 --- /dev/null +++ b/core/embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_ltdc_dsi.c @@ -0,0 +1,1562 @@ +/** + ****************************************************************************** + * @file stm32u5x9j_discovery_lcd.c + * @author MCD Application Team + * @brief This file includes the driver for Liquid Crystal Display (LCD) + module + * mounted on MB1829A board (ARGB8888 color format). + @verbatim + 1. How To use this driver: + -------------------------- + - This driver is used to drive directly in command mode a LCD TFT using the + DSI interface. + The following IPs are implied : DSI Host IP block working + in conjunction to the LTDC controller. + - This driver is linked by construction to LCD. + + 2. Driver description: + ---------------------- + + Initialization steps: + o Initialize the LCD using the BSP_LCD_Init() function. You can select + display orientation with "Orientation" parameter (portrait, landscape, + portrait with 180 degrees rotation or landscape with 180 degrees + rotation). + o Call BSP_LCD_GetXSize() and BSP_LCD_GetYsize() to get respectively + width and height in pixels of LCD in the current orientation. + o Call BSP_LCD_SetBrightness() and BSP_LCD_GetBrightness() to + respectively set and get LCD brightness. + o Call BSP_LCD_SetActiveLayer() to select the current active layer. + o Call BSP_LCD_GetFormat() to get LCD pixel format supported. + + + Display on LCD: + o Call BSP_LCD_DisplayOn() and BSP_LCD_DisplayOff() to respectively + switch on and switch off the LCD display. + o First, check that frame buffer is available using + BSP_LCD_IsFrameBufferAvailable(). o When frame buffer is available, modify it + using following functions: o Call BSP_LCD_WritePixel() and BSP_LCD_ReadPixel() + to respectively write and read a pixel. o Call BSP_LCD_DrawHLine() to draw a + horizontal line. o Call BSP_LCD_DrawVLine() to draw a vertical line. o Call + BSP_LCD_DrawBitmap() to draw a bitmap. o Call BSP_LCD_FillRect() to draw a + rectangle. o Call BSP_LCD_FillRGBRect() to draw a rectangle with RGB buffer. + o Call BSP_LCD_Refresh() to refresh LCD display. + + + De-initialization steps: + o De-initialize the LCD using the BSP_LCD_DeInit() function. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "colors.h" +#include "stdint.h" +#include "string.h" + +#include TREZOR_BOARD +#include STM32_HAL_H + +#include "display_internal.h" + +/* Common Error codes */ +#define BSP_ERROR_NONE 0 +#define BSP_ERROR_NO_INIT -1 +#define BSP_ERROR_WRONG_PARAM -2 +#define BSP_ERROR_BUSY -3 +#define BSP_ERROR_PERIPH_FAILURE -4 +#define BSP_ERROR_COMPONENT_FAILURE -5 +#define BSP_ERROR_UNKNOWN_FAILURE -6 +#define BSP_ERROR_UNKNOWN_COMPONENT -7 +#define BSP_ERROR_BUS_FAILURE -8 +#define BSP_ERROR_CLOCK_FAILURE -9 +#define BSP_ERROR_MSP_FAILURE -10 +#define BSP_ERROR_FEATURE_NOT_SUPPORTED -11 + +#define BSP_ERROR_BUS_ACKNOWLEDGE_FAILURE (-102) +/* Button user interrupt priority */ +#define BSP_BUTTON_USER_IT_PRIORITY \ + 0x0FUL /* Default is lowest priority level */ + +/* LCD interrupt priorities */ +#define BSP_LCD_GFXMMU_IT_PRIORITY \ + 0x0FUL /* Default is lowest priority level \ + */ +#define BSP_LCD_LTDC_IT_PRIORITY 0x0FUL /* Default is lowest priority level */ +#define BSP_LCD_DSI_IT_PRIORITY 0x0FUL /* Default is lowest priority level */ + +/* HSPI RAM interrupt priority */ +#define BSP_HSPI_RAM_IT_PRIORITY 0x0FUL /* Default is lowest priority level */ +#define LCD_PIXEL_FORMAT_ARGB8888 \ + 0x00000000U /*!< ARGB8888 LTDC pixel format \ + */ +#define LCD_PIXEL_FORMAT_RGB888 0x00000001U /*!< RGB888 LTDC pixel format */ +#define LCD_PIXEL_FORMAT_RGB565 0x00000002U /*!< RGB565 LTDC pixel format */ +#define LCD_PIXEL_FORMAT_ARGB1555 \ + 0x00000003U /*!< ARGB1555 LTDC pixel format \ + */ +#define LCD_PIXEL_FORMAT_ARGB4444 \ + 0x00000004U /*!< ARGB4444 LTDC pixel format \ + */ +#define LCD_PIXEL_FORMAT_L8 0x00000005U /*!< L8 LTDC pixel format */ +#define LCD_PIXEL_FORMAT_AL44 0x00000006U /*!< AL44 LTDC pixel format */ +#define LCD_PIXEL_FORMAT_AL88 0x00000007U /*!< AL88 LTDC pixel format */ +/* LCD instances */ +#define LCD_INSTANCES_NBR 1U + +#define DSI_POWERON_GPIO_PORT GPIOI +#define DSI_POWERON_GPIO_PIN GPIO_PIN_5 +#define DSI_POWERON_GPIO_CLOCK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE() + +#define DSI_RESET_GPIO_PORT GPIOD +#define DSI_RESET_GPIO_PIN GPIO_PIN_5 +#define DSI_RESET_GPIO_CLOCK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE() + +#define VSYNC 1 +#define VBP 12 +#define VFP 50 +#define VACT 481 +#define HSYNC 2 +#define HBP 1 +#define HFP 1 +#define HACT 480 +#define LCD_WIDTH 480 +#define LCD_HEIGHT 480 + +#include "display_gfxmmu_lut.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup STM32U5x9J_DISCOVERY + * @{ + */ + +/** @defgroup STM32U5x9J_DISCOVERY_LCD LCD + * @{ + */ + +/** @defgroup STM32U5x9J_DISCOVERY_LCD_Private_Defines LCD Private Constants + * @{ + */ + +/** + * @} + */ + +/** @defgroup STM32U5x9J_DISCOVERY_LCD_Private_Variables LCD Private Variables + * @{ + */ + +#if (USE_HAL_GFXMMU_REGISTER_CALLBACKS == 1) +static uint32_t LcdGfxmmu_IsMspCbValid[LCD_INSTANCES_NBR] = {0}; +#endif /* (USE_HAL_GFXMMU_REGISTER_CALLBACKS == 1) */ + +#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1) +static uint32_t LcdLtdc_IsMspCbValid[LCD_INSTANCES_NBR] = {0}; +#endif /* (USE_HAL_LTDC_REGISTER_CALLBACKS == 1) */ + +#if (USE_HAL_DSI_REGISTER_CALLBACKS == 1) +static uint32_t LcdDsi_IsMspCbValid[LCD_INSTANCES_NBR] = {0}; +#endif /* (USE_HAL_DSI_REGISTER_CALLBACKS == 1) */ + +GFXMMU_HandleTypeDef hlcd_gfxmmu = {0}; +LTDC_HandleTypeDef hlcd_ltdc = {0}; +DSI_HandleTypeDef hlcd_dsi = {0}; +static DSI_VidCfgTypeDef DSIVidCfg = {0}; + +/** + * @} + */ + +/** @defgroup STM32U5x9J_DISCOVERY_LCD_Private_FunctionPrototypes LCD Private + * Function Prototypes + * @{ + */ +static int32_t LCD_Init(void); +static int32_t LCD_DeInit(void); + +static void GFXMMU_MspInit(GFXMMU_HandleTypeDef *hgfxmmu); +static void GFXMMU_MspDeInit(GFXMMU_HandleTypeDef *hgfxmmu); +static void LTDC_MspInit(LTDC_HandleTypeDef *hltdc); +static void LTDC_MspDeInit(LTDC_HandleTypeDef *hltdc); +static void DSI_MspInit(DSI_HandleTypeDef *hdsi); +static void DSI_MspDeInit(DSI_HandleTypeDef *hdsi); +#if (USE_HAL_DSI_REGISTER_CALLBACKS == 1) +static void DSI_EndOfRefreshCallback(DSI_HandleTypeDef *hdsi); +#endif /* (USE_HAL_DSI_REGISTER_CALLBACKS == 1) */ +/** + * @} + */ + +/** @addtogroup STM32U5x9J_DISCOVERY_LCD_Exported_Functions + * @{ + */ +/** + * @brief Initialize the LCD. + * @param Instance LCD Instance. + * @param Orientation LCD_ORIENTATION_PORTRAIT, LCD_ORIENTATION_LANDSCAPE, + * LCD_ORIENTATION_PORTRAIT_ROT180 or + * LCD_ORIENTATION_LANDSCAPE_ROT180. + * @retval BSP status. + */ +int32_t BSP_LCD_Init(uint32_t Instance, uint32_t Orientation) { + int32_t status = BSP_ERROR_NONE; + + if ((Instance >= LCD_INSTANCES_NBR) || + (Orientation > LCD_ORIENTATION_LANDSCAPE_ROT180)) { + status = BSP_ERROR_WRONG_PARAM; + } else if ((Orientation == LCD_ORIENTATION_LANDSCAPE) || + (Orientation == LCD_ORIENTATION_LANDSCAPE_ROT180)) { + status = BSP_ERROR_FEATURE_NOT_SUPPORTED; + } else { + if (LCD_Init() != 0) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } + + return status; +} + +/** + * @brief De-Initialize the LCD. + * @param Instance LCD Instance. + * @retval BSP status. + */ +int32_t BSP_LCD_DeInit(uint32_t Instance) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + if (LCD_DeInit() != 0) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } + + return status; +} + +/** + * @brief Set the display on. + * @param Instance LCD Instance. + * @retval BSP status. + */ +int32_t BSP_LCD_DisplayOn(uint32_t Instance) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + /* Set the display on */ + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, + DSI_SET_DISPLAY_ON, 0x00) != HAL_OK) { + status = BSP_ERROR_WRONG_PARAM; + } + } + + return status; +} + +/** + * @brief Set the display off. + * @param Instance LCD Instance. + * @retval BSP status. + */ +int32_t BSP_LCD_DisplayOff(uint32_t Instance) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + /* Set the display off */ + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, + DSI_SET_DISPLAY_OFF, 0x00) != HAL_OK) { + status = BSP_ERROR_WRONG_PARAM; + } + } + + return status; +} + +/** + * @brief Set the display brightness. + * @param Instance LCD Instance. + * @param Brightness [00: Min (black), 100 Max]. + * @retval BSP status. + */ +int32_t BSP_LCD_SetBrightness(uint32_t Instance, uint32_t Brightness) { + int32_t status; + + if ((Instance >= LCD_INSTANCES_NBR) || (Brightness > 100U)) { + status = BSP_ERROR_WRONG_PARAM; + } else { + status = BSP_ERROR_FEATURE_NOT_SUPPORTED; + } + + return status; +} + +/** + * @brief Get the display brightness. + * @param Instance LCD Instance. + * @param Brightness [00: Min (black), 100 Max]. + * @retval BSP status. + */ +int32_t BSP_LCD_GetBrightness(uint32_t Instance, uint32_t *Brightness) { + int32_t status; + + if ((Instance >= LCD_INSTANCES_NBR) || (Brightness == NULL)) { + status = BSP_ERROR_WRONG_PARAM; + } else { + status = BSP_ERROR_FEATURE_NOT_SUPPORTED; + } + + return status; +} + +/** + * @brief Get the LCD X size. + * @param Instance LCD Instance. + * @param Xsize LCD X size. + * @retval BSP status. + */ +int32_t BSP_LCD_GetXSize(uint32_t Instance, uint32_t *Xsize) { + int32_t status = BSP_ERROR_NONE; + + if ((Instance >= LCD_INSTANCES_NBR) || (Xsize == NULL)) { + status = BSP_ERROR_WRONG_PARAM; + } else { + /* Get the display Xsize */ + *Xsize = LCD_WIDTH; + } + + return status; +} + +/** + * @brief Get the LCD Y size. + * @param Instance LCD Instance. + * @param Ysize LCD Y size. + * @retval BSP status. + */ +int32_t BSP_LCD_GetYSize(uint32_t Instance, uint32_t *Ysize) { + int32_t status = BSP_ERROR_NONE; + + if ((Instance >= LCD_INSTANCES_NBR) || (Ysize == NULL)) { + status = BSP_ERROR_WRONG_PARAM; + } else { + /* Get the display Ysize */ + *Ysize = LCD_HEIGHT; + } + + return status; +} + +/** + * @brief Set the LCD active layer. + * @param Instance LCD Instance. + * @param LayerIndex Active layer index. + * @retval BSP status. + */ +int32_t BSP_LCD_SetActiveLayer(uint32_t Instance, uint32_t LayerIndex) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + /* Nothing to do */ + UNUSED(LayerIndex); + } + + return status; +} + +/** + * @brief Get pixel format supported by LCD. + * @param Instance LCD Instance. + * @param Format Pointer on pixel format. + * @retval BSP status. + */ +int32_t BSP_LCD_GetFormat(uint32_t Instance, uint32_t *Format) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + /* Get pixel format supported by LCD */ + *Format = LCD_PIXEL_FORMAT_ARGB8888; + } + + return status; +} + +void MX_GFXMMU_Reinit(GFXMMU_HandleTypeDef *hgfxmmu) { + /* Initialize GFXMMU */ + hgfxmmu->Instance = GFXMMU; + hgfxmmu->Init.BlocksPerLine = GFXMMU_192BLOCKS; + hgfxmmu->Init.DefaultValue = 0xFFFFFFFFU; + hgfxmmu->Init.Buffers.Buf0Address = (uint32_t)physical_frame_buffer_0; + hgfxmmu->Init.Buffers.Buf1Address = (uint32_t)physical_frame_buffer_1; + hgfxmmu->Init.Buffers.Buf2Address = 0; + hgfxmmu->Init.Buffers.Buf3Address = 0; +#if defined(GFXMMU_CR_CE) + hgfxmmu->Init.CachePrefetch.Activation = DISABLE; + hgfxmmu->Init.CachePrefetch.CacheLock = GFXMMU_CACHE_LOCK_DISABLE; + hgfxmmu->Init.CachePrefetch.CacheLockBuffer = + GFXMMU_CACHE_LOCK_BUFFER0; /* NU */ + hgfxmmu->Init.CachePrefetch.CacheForce = GFXMMU_CACHE_FORCE_ENABLE; /* NU */ + hgfxmmu->Init.CachePrefetch.OutterBufferability = + GFXMMU_OUTTER_BUFFERABILITY_DISABLE; + hgfxmmu->Init.CachePrefetch.OutterCachability = + GFXMMU_OUTTER_CACHABILITY_DISABLE; + hgfxmmu->Init.CachePrefetch.Prefetch = GFXMMU_PREFETCH_DISABLE; +#endif /* GFXMMU_CR_CE */ +#if defined(GFXMMU_CR_ACE) + hgfxmmu->Init.AddressCache.Activation = DISABLE; + hgfxmmu->Init.AddressCache.AddressCacheLockBuffer = + GFXMMU_ADDRESSCACHE_LOCK_BUFFER0; +#endif /* GFXMMU_CR_ACE */ + hgfxmmu->Init.Interrupts.Activation = DISABLE; + hgfxmmu->Init.Interrupts.UsedInterrupts = GFXMMU_AHB_MASTER_ERROR_IT; /* NU */ +} + +/** + * @brief MX GFXMMU initialization. + * @param hgfxmmu GFXMMU handle. + * @retval HAL status. + */ +__weak HAL_StatusTypeDef MX_GFXMMU_Init(GFXMMU_HandleTypeDef *hgfxmmu) { + MX_GFXMMU_Reinit(hgfxmmu); + return HAL_GFXMMU_Init(hgfxmmu); +} + +/** + * @brief MX LTDC clock configuration. + * @param hltdc LTDC handle. + * @retval HAL status. + */ +__weak HAL_StatusTypeDef MX_LTDC_ClockConfig(LTDC_HandleTypeDef *hltdc) { + RCC_PeriphCLKInitTypeDef PLL3InitPeriph = {0}; + + /* Prevent unused argument(s) compilation warning */ + UNUSED(hltdc); + + /* Start and configurre PLL3 */ + /* HSE = 16MHZ */ + /* 16/(M=4) = 4MHz input (min) */ + /* 4*(N=125) = 500MHz VCO (almost max) */ + /* 500/(P=8) = 62.5 for DSI ie exactly the lane byte clock*/ + /* 500/(R=24) = 20.83 for LTDC exact match with DSI bandwidth */ + PLL3InitPeriph.PeriphClockSelection = RCC_PERIPHCLK_LTDC; + PLL3InitPeriph.LtdcClockSelection = RCC_LTDCCLKSOURCE_PLL3; + PLL3InitPeriph.PLL3.PLL3M = 4; + PLL3InitPeriph.PLL3.PLL3N = 125; + PLL3InitPeriph.PLL3.PLL3P = 8; + PLL3InitPeriph.PLL3.PLL3Q = 8; + PLL3InitPeriph.PLL3.PLL3R = 24; + PLL3InitPeriph.PLL3.PLL3FRACN = 0; + PLL3InitPeriph.PLL3.PLL3RGE = RCC_PLLVCIRANGE_1; + PLL3InitPeriph.PLL3.PLL3ClockOut = RCC_PLL3_DIVR | RCC_PLL3_DIVP; + PLL3InitPeriph.PLL3.PLL3Source = RCC_PLLSOURCE_HSE; + return HAL_RCCEx_PeriphCLKConfig(&PLL3InitPeriph); +} + +void MX_LTDC_Reinit(LTDC_HandleTypeDef *hltdc) { + /* LTDC initialization */ + hltdc->Instance = LTDC; + hltdc->Init.HSPolarity = LTDC_HSPOLARITY_AL; + hltdc->Init.VSPolarity = LTDC_VSPOLARITY_AL; + hltdc->Init.DEPolarity = LTDC_DEPOLARITY_AL; + hltdc->Init.PCPolarity = LTDC_PCPOLARITY_IPC; + hltdc->Init.HorizontalSync = HSYNC - 1; + hltdc->Init.AccumulatedHBP = HSYNC + HBP - 1; + hltdc->Init.AccumulatedActiveW = HACT + HBP + HSYNC - 1; + hltdc->Init.TotalWidth = HACT + HBP + HFP + HSYNC - 1; + hltdc->Init.Backcolor.Red = 0; /* Not used default value */ + hltdc->Init.Backcolor.Green = 0; /* Not used default value */ + hltdc->Init.Backcolor.Blue = 0; /* Not used default value */ + hltdc->Init.Backcolor.Reserved = 0xFF; + + HAL_LTDCEx_StructInitFromVideoConfig(&hlcd_ltdc, &DSIVidCfg); +} + +/** + * @brief MX LTDC initialization. + * @param hltdc LTDC handle. + * @retval HAL status. + */ +__weak HAL_StatusTypeDef MX_LTDC_Init(LTDC_HandleTypeDef *hltdc) { + MX_LTDC_Reinit(hltdc); + + return HAL_LTDC_Init(hltdc); +} + +// HAL_StatusTypeDef MX_LTDC_ReConfigLayer(LTDC_HandleTypeDef *hltdc, uint32_t +// LayerIndex) +//{ +// LTDC_LayerCfgTypeDef LayerCfg = {0}; +// +///* LTDC layer configuration */ +// LayerCfg.WindowX0 = 0; +// LayerCfg.WindowX1 = LCD_WIDTH; +// LayerCfg.WindowY0 = 1; +// LayerCfg.WindowY1 = (uint32_t)LCD_HEIGHT + 1UL; +// LayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888; +// LayerCfg.Alpha = 0xFF; /* NU default value */ +// LayerCfg.Alpha0 = 0; /* NU default value */ +// LayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; /* Not Used: default +// value */ LayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; /* Not +// Used: default value */ LayerCfg.FBStartAdress = +// GFXMMU_VIRTUAL_BUFFER0_BASE; LayerCfg.ImageWidth = +// FRAME_BUFFER_PIXELS_PER_LINE; /* Number of pixels per line in virtual frame +// buffer */ LayerCfg.ImageHeight = LCD_HEIGHT; LayerCfg.Backcolor.Red = 0; +// /* Not Used: default value */ LayerCfg.Backcolor.Green = 0; /* Not Used: +// default value */ LayerCfg.Backcolor.Blue = 0; /* Not Used: default value */ +// LayerCfg.Bac +// return HAL_LTDC_ConfigLayer(hltdc, &LayerCfg, LayerIndex);kcolor.Reserved = +// 0xFF; +//} + +/** + * @brief MX LTDC layer configuration. + * @param hltdc LTDC handle. + * @param LayerIndex LTDC layer index. + * @retval HAL status. + */ +__weak HAL_StatusTypeDef MX_LTDC_ConfigLayer(LTDC_HandleTypeDef *hltdc, + uint32_t LayerIndex, + uint32_t fb_addr) { + LTDC_LayerCfgTypeDef LayerCfg = {0}; + + /* LTDC layer configuration */ + LayerCfg.WindowX0 = 0; + LayerCfg.WindowX1 = LCD_WIDTH; + LayerCfg.WindowY0 = 1; + LayerCfg.WindowY1 = (uint32_t)LCD_HEIGHT + 1UL; + LayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888; + LayerCfg.Alpha = 0xFF; /* NU default value */ + LayerCfg.Alpha0 = 0; /* NU default value */ + LayerCfg.BlendingFactor1 = + LTDC_BLENDING_FACTOR1_PAxCA; /* Not Used: default value */ + LayerCfg.BlendingFactor2 = + LTDC_BLENDING_FACTOR2_PAxCA; /* Not Used: default value */ + LayerCfg.FBStartAdress = fb_addr; + LayerCfg.ImageWidth = + FRAME_BUFFER_PIXELS_PER_LINE; /* Number of pixels per line in virtual + frame buffer */ + LayerCfg.ImageHeight = LCD_HEIGHT; + LayerCfg.Backcolor.Red = 0; /* Not Used: default value */ + LayerCfg.Backcolor.Green = 0; /* Not Used: default value */ + LayerCfg.Backcolor.Blue = 0; /* Not Used: default value */ + LayerCfg.Backcolor.Reserved = 0xFF; + return HAL_LTDC_ConfigLayer(hltdc, &LayerCfg, LayerIndex); +} + +/** + * @brief MX DSI initialization. + * @param hdsi DSI handle. + * @retval HAL status. + */ +HAL_StatusTypeDef MX_DSI_Reinit(DSI_HandleTypeDef *hdsi) { + /* DSI initialization */ + hdsi->Instance = DSI; + hdsi->Init.AutomaticClockLaneControl = DSI_AUTO_CLK_LANE_CTRL_DISABLE; + /* We have 1 data lane at 500Mbps => lane byte clock at 500/8 = 62,5 MHZ */ + /* We want TX escape clock at around 20MHz and under 20MHz so clock division + * is set to 4 */ + hdsi->Init.TXEscapeCkdiv = 4; + hdsi->Init.NumberOfLanes = DSI_TWO_DATA_LANES; + hdsi->Init.PHYFrequencyRange = DSI_DPHY_FRANGE_450MHZ_510MHZ; + hdsi->Init.PHYLowPowerOffset = 0; + + /* Configure the DSI for Video mode */ + DSIVidCfg.VirtualChannelID = 0; + DSIVidCfg.HSPolarity = DSI_HSYNC_ACTIVE_HIGH; + DSIVidCfg.VSPolarity = DSI_VSYNC_ACTIVE_HIGH; + DSIVidCfg.DEPolarity = DSI_DATA_ENABLE_ACTIVE_HIGH; + DSIVidCfg.ColorCoding = DSI_RGB888; + DSIVidCfg.Mode = DSI_VID_MODE_BURST; + DSIVidCfg.PacketSize = LCD_WIDTH; + DSIVidCfg.NullPacketSize = 0xFFFU; + DSIVidCfg.HorizontalSyncActive = HSYNC * 3; + DSIVidCfg.HorizontalBackPorch = HBP * 3; + DSIVidCfg.HorizontalLine = (HACT + HSYNC + HBP + HFP) * 3; + DSIVidCfg.VerticalSyncActive = VSYNC; + DSIVidCfg.VerticalBackPorch = VBP; + DSIVidCfg.VerticalFrontPorch = VFP; + DSIVidCfg.VerticalActive = VACT; + DSIVidCfg.LPCommandEnable = DSI_LP_COMMAND_ENABLE; + DSIVidCfg.LPLargestPacketSize = 64; + /* Specify for each region of the video frame, if the transmission of command + * in LP mode is allowed in this region */ + /* while streaming is active in video mode */ + DSIVidCfg.LPHorizontalFrontPorchEnable = DSI_LP_HFP_ENABLE; + DSIVidCfg.LPHorizontalBackPorchEnable = DSI_LP_HBP_ENABLE; + DSIVidCfg.LPVerticalActiveEnable = DSI_LP_VACT_ENABLE; + DSIVidCfg.LPVerticalFrontPorchEnable = DSI_LP_VFP_ENABLE; + DSIVidCfg.LPVerticalBackPorchEnable = DSI_LP_VBP_ENABLE; + DSIVidCfg.LPVerticalSyncActiveEnable = DSI_LP_VSYNC_ENABLE; + DSIVidCfg.FrameBTAAcknowledgeEnable = DSI_FBTAA_ENABLE; + DSIVidCfg.LooselyPacked = DSI_LOOSELY_PACKED_DISABLE; + + return HAL_OK; +} + +/** + * @brief MX DSI initialization. + * @param hdsi DSI handle. + * @retval HAL status. + */ +__weak HAL_StatusTypeDef MX_DSI_Init(DSI_HandleTypeDef *hdsi) { + DSI_PLLInitTypeDef PLLInit = {0}; + + /* DSI initialization */ + hdsi->Instance = DSI; + hdsi->Init.AutomaticClockLaneControl = DSI_AUTO_CLK_LANE_CTRL_DISABLE; + /* We have 1 data lane at 500Mbps => lane byte clock at 500/8 = 62,5 MHZ */ + /* We want TX escape clock at around 20MHz and under 20MHz so clock division + * is set to 4 */ + hdsi->Init.TXEscapeCkdiv = 4; + hdsi->Init.NumberOfLanes = DSI_TWO_DATA_LANES; + hdsi->Init.PHYFrequencyRange = DSI_DPHY_FRANGE_450MHZ_510MHZ; + hdsi->Init.PHYLowPowerOffset = 0; + + PLLInit.PLLNDIV = 125; + PLLInit.PLLIDF = 4; + PLLInit.PLLODF = 2; + PLLInit.PLLVCORange = DSI_DPHY_VCO_FRANGE_800MHZ_1GHZ; + PLLInit.PLLChargePump = DSI_PLL_CHARGE_PUMP_2000HZ_4400HZ; + PLLInit.PLLTuning = DSI_PLL_LOOP_FILTER_2000HZ_4400HZ; + + if (HAL_DSI_Init(hdsi, &PLLInit) != HAL_OK) { + return HAL_ERROR; + } + + if (HAL_DSI_SetGenericVCID(&hlcd_dsi, 0) != HAL_OK) { + return HAL_ERROR; + } + + /* Configure the DSI for Video mode */ + DSIVidCfg.VirtualChannelID = 0; + DSIVidCfg.HSPolarity = DSI_HSYNC_ACTIVE_HIGH; + DSIVidCfg.VSPolarity = DSI_VSYNC_ACTIVE_HIGH; + DSIVidCfg.DEPolarity = DSI_DATA_ENABLE_ACTIVE_HIGH; + DSIVidCfg.ColorCoding = DSI_RGB888; + DSIVidCfg.Mode = DSI_VID_MODE_BURST; + DSIVidCfg.PacketSize = LCD_WIDTH; + DSIVidCfg.NullPacketSize = 0xFFFU; + DSIVidCfg.HorizontalSyncActive = HSYNC * 3; + DSIVidCfg.HorizontalBackPorch = HBP * 3; + DSIVidCfg.HorizontalLine = (HACT + HSYNC + HBP + HFP) * 3; + DSIVidCfg.VerticalSyncActive = VSYNC; + DSIVidCfg.VerticalBackPorch = VBP; + DSIVidCfg.VerticalFrontPorch = VFP; + DSIVidCfg.VerticalActive = VACT; + DSIVidCfg.LPCommandEnable = DSI_LP_COMMAND_ENABLE; + DSIVidCfg.LPLargestPacketSize = 64; + /* Specify for each region of the video frame, if the transmission of command + * in LP mode is allowed in this region */ + /* while streaming is active in video mode */ + DSIVidCfg.LPHorizontalFrontPorchEnable = DSI_LP_HFP_ENABLE; + DSIVidCfg.LPHorizontalBackPorchEnable = DSI_LP_HBP_ENABLE; + DSIVidCfg.LPVerticalActiveEnable = DSI_LP_VACT_ENABLE; + DSIVidCfg.LPVerticalFrontPorchEnable = DSI_LP_VFP_ENABLE; + DSIVidCfg.LPVerticalBackPorchEnable = DSI_LP_VBP_ENABLE; + DSIVidCfg.LPVerticalSyncActiveEnable = DSI_LP_VSYNC_ENABLE; + DSIVidCfg.FrameBTAAcknowledgeEnable = DSI_FBTAA_ENABLE; + DSIVidCfg.LooselyPacked = DSI_LOOSELY_PACKED_DISABLE; + + /* Drive the display */ + if (HAL_DSI_ConfigVideoMode(&hlcd_dsi, &DSIVidCfg) != HAL_OK) { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief MX DMA2D initialization. + * @param hdma2d DMA2D handle. + * @param Mode DMA2D transfer mode. + * @param OffLine DMA2D output offset. + * @retval HAL status. + */ +__weak HAL_StatusTypeDef MX_DMA2D_Init(DMA2D_HandleTypeDef *hdma2d, + uint32_t Mode, uint32_t OffLine) { + /* Register to memory mode with ARGB8888 as color Mode */ + hdma2d->Instance = DMA2D; + hdma2d->Init.Mode = Mode; + hdma2d->Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + hdma2d->Init.OutputOffset = OffLine; + hdma2d->Init.AlphaInverted = DMA2D_REGULAR_ALPHA; + hdma2d->Init.RedBlueSwap = DMA2D_RB_REGULAR; + hdma2d->Init.BytesSwap = DMA2D_BYTES_REGULAR; + hdma2d->Init.LineOffsetMode = DMA2D_LOM_PIXELS; + + /* DMA2D Initialization */ + return HAL_DMA2D_Init(hdma2d); +} + +#if (USE_HAL_GFXMMU_REGISTER_CALLBACKS == 1) +/** + * @brief Register Default LCD GFXMMU Msp Callbacks + * @retval BSP status + */ +int32_t BSP_LCD_GFXMMU_RegisterDefaultMspCallbacks(uint32_t Instance) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + __HAL_GFXMMU_RESET_HANDLE_STATE(&hlcd_gfxmmu); + + /* Register default MspInit/MspDeInit Callback */ + if (HAL_GFXMMU_RegisterCallback(&hlcd_gfxmmu, HAL_GFXMMU_MSPINIT_CB_ID, + GFXMMU_MspInit) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else if (HAL_GFXMMU_RegisterCallback(&hlcd_gfxmmu, + HAL_GFXMMU_MSPDEINIT_CB_ID, + GFXMMU_MspDeInit) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + LcdGfxmmu_IsMspCbValid[Instance] = 1U; + } + } + + /* BSP status */ + return status; +} + +/** + * @brief Register LCD GFXMMU Msp Callback + * @param Callbacks pointer to LCD MspInit/MspDeInit callback functions + * @retval BSP status + */ +int32_t BSP_LCD_GFXMMU_RegisterMspCallbacks(uint32_t Instance, + BSP_LCD_GFXMMU_Cb_t *Callback) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + __HAL_GFXMMU_RESET_HANDLE_STATE(&hlcd_gfxmmu); + + /* Register MspInit/MspDeInit Callbacks */ + if (HAL_GFXMMU_RegisterCallback(&hlcd_gfxmmu, HAL_GFXMMU_MSPINIT_CB_ID, + Callback->pMspGfxmmuInitCb) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else if (HAL_GFXMMU_RegisterCallback( + &hlcd_gfxmmu, HAL_GFXMMU_MSPDEINIT_CB_ID, + Callback->pMspGfxmmuDeInitCb) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + LcdGfxmmu_IsMspCbValid[Instance] = 1U; + } + } + + /* BSP status */ + return status; +} +#endif /* USE_HAL_GFXMMU_REGISTER_CALLBACKS */ + +#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 1) +/** + * @brief Register Default LCD LTDC Msp Callbacks + * @retval BSP status + */ +int32_t BSP_LCD_LTDC_RegisterDefaultMspCallbacks(uint32_t Instance) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + __HAL_LTDC_RESET_HANDLE_STATE(&hlcd_ltdc); + + /* Register default MspInit/MspDeInit Callback */ + if (HAL_LTDC_RegisterCallback(&hlcd_ltdc, HAL_LTDC_MSPINIT_CB_ID, + LTDC_MspInit) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else if (HAL_LTDC_RegisterCallback(&hlcd_ltdc, HAL_LTDC_MSPDEINIT_CB_ID, + LTDC_MspDeInit) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + LcdLtdc_IsMspCbValid[Instance] = 1U; + } + } + + /* BSP status */ + return status; +} + +/** + * @brief Register LCD LTDC Msp Callback + * @param Callbacks pointer to LCD MspInit/MspDeInit callback functions + * @retval BSP status + */ +int32_t BSP_LCD_LTDC_RegisterMspCallbacks(uint32_t Instance, + BSP_LCD_LTDC_Cb_t *Callback) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + __HAL_LTDC_RESET_HANDLE_STATE(&hlcd_ltdc); + + /* Register MspInit/MspDeInit Callbacks */ + if (HAL_LTDC_RegisterCallback(&hlcd_ltdc, HAL_LTDC_MSPINIT_CB_ID, + Callback->pMspLtdcInitCb) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else if (HAL_LTDC_RegisterCallback(&hlcd_ltdc, HAL_LTDC_MSPDEINIT_CB_ID, + Callback->pMspLtdcDeInitCb) != + HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + LcdLtdc_IsMspCbValid[Instance] = 1U; + } + } + + /* BSP status */ + return status; +} +#endif /* USE_HAL_LTDC_REGISTER_CALLBACKS */ + +#if (USE_HAL_DSI_REGISTER_CALLBACKS == 1) +/** + * @brief Register Default LCD DSI Msp Callbacks + * @retval BSP status + */ +int32_t BSP_LCD_DSI_RegisterDefaultMspCallbacks(uint32_t Instance) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + __HAL_DSI_RESET_HANDLE_STATE(&hlcd_dsi); + + /* Register default MspInit/MspDeInit Callback */ + if (HAL_DSI_RegisterCallback(&hlcd_dsi, HAL_DSI_MSPINIT_CB_ID, + DSI_MspInit) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else if (HAL_DSI_RegisterCallback(&hlcd_dsi, HAL_DSI_MSPDEINIT_CB_ID, + DSI_MspDeInit) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + LcdDsi_IsMspCbValid[Instance] = 1U; + } + } + + /* BSP status */ + return status; +} + +/** + * @brief Register LCD DSI Msp Callback + * @param Callbacks pointer to LCD MspInit/MspDeInit callback functions + * @retval BSP status + */ +int32_t BSP_LCD_DSI_RegisterMspCallbacks(uint32_t Instance, + BSP_LCD_DSI_Cb_t *Callback) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + __HAL_DSI_RESET_HANDLE_STATE(&hlcd_dsi); + + /* Register MspInit/MspDeInit Callbacks */ + if (HAL_DSI_RegisterCallback(&hlcd_dsi, HAL_DSI_MSPINIT_CB_ID, + Callback->pMspDsiInitCb) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else if (HAL_DSI_RegisterCallback(&hlcd_dsi, HAL_DSI_MSPDEINIT_CB_ID, + Callback->pMspDsiDeInitCb) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + LcdDsi_IsMspCbValid[Instance] = 1U; + } + } + + /* BSP status */ + return status; +} +#endif /* USE_HAL_DSI_REGISTER_CALLBACKS */ + +#if (USE_HAL_DMA2D_REGISTER_CALLBACKS == 1) +/** + * @brief Register Default LCD DMA2D Msp Callbacks + * @retval BSP status + */ +int32_t BSP_LCD_DMA2D_RegisterDefaultMspCallbacks(uint32_t Instance) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + __HAL_DMA2D_RESET_HANDLE_STATE(&hlcd_dma2d); + + /* Register default MspInit/MspDeInit Callback */ + if (HAL_DMA2D_RegisterCallback(&hlcd_dma2d, HAL_DMA2D_MSPINIT_CB_ID, + DMA2D_MspInit) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else if (HAL_DMA2D_RegisterCallback(&hlcd_dma2d, + HAL_DMA2D_MSPDEINIT_CB_ID, + DMA2D_MspDeInit) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + LcdDma2d_IsMspCbValid[Instance] = 1U; + } + } + + /* BSP status */ + return status; +} + +/** + * @brief Register LCD DMA2D Msp Callback + * @param Callbacks pointer to LCD MspInit/MspDeInit callback functions + * @retval BSP status + */ +int32_t BSP_LCD_DMA2D_RegisterMspCallbacks(uint32_t Instance, + BSP_LCD_DMA2D_Cb_t *Callback) { + int32_t status = BSP_ERROR_NONE; + + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + __HAL_DMA2D_RESET_HANDLE_STATE(&hlcd_dma2d); + + /* Register MspInit/MspDeInit Callbacks */ + if (HAL_DMA2D_RegisterCallback(&hlcd_dma2d, HAL_DMA2D_MSPINIT_CB_ID, + Callback->pMspDma2dInitCb) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else if (HAL_DMA2D_RegisterCallback( + &hlcd_dma2d, HAL_DMA2D_MSPDEINIT_CB_ID, + Callback->pMspDma2dDeInitCb) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + LcdDma2d_IsMspCbValid[Instance] = 1U; + } + } + + /* BSP status */ + return status; +} +#endif /* USE_HAL_DMA2D_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @defgroup STM32U5x9J_DISCOVERY_LCD_Private_Functions LCD Private Functions + * @{ + */ + +/** + * @brief Initialize LCD. + * @retval BSP status. + */ +static int32_t LCD_Init(void) { + int32_t status = BSP_ERROR_NONE; + uint32_t ErrorNumber = 0; + DSI_PHY_TimerTypeDef PhyTimers = {0}; + DSI_HOST_TimeoutTypeDef HostTimeouts = {0}; + + /***************/ + /* GFXMMU init */ + /***************/ +#if (USE_HAL_GFXMMU_REGISTER_CALLBACKS == 0) + GFXMMU_MspInit(&hlcd_gfxmmu); +#else + /* Register the GFXMMU MSP Callbacks */ + if (LcdGfxmmu_IsMspCbValid[0] == 0U) { + if (BSP_LCD_GFXMMU_RegisterDefaultMspCallbacks(0) != BSP_ERROR_NONE) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } +#endif /* (USE_HAL_GFXMMU_REGISTER_CALLBACKS == 0) */ + + if (status == BSP_ERROR_NONE) { + /* GFXMMU peripheral initialization */ + if (MX_GFXMMU_Init(&hlcd_gfxmmu) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } + /* Initialize LUT */ + else if (HAL_GFXMMU_ConfigLut(&hlcd_gfxmmu, 0, LCD_WIDTH, + (uint32_t)&gfxmmu_lut) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + /* Disable non visible lines : from line 480 to 1023 */ + if (HAL_OK != HAL_GFXMMU_DisableLutLines(&hlcd_gfxmmu, LCD_WIDTH, 544)) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } + } + + /************/ + /* DSI init */ + /************/ + if (status == BSP_ERROR_NONE) { +#if (USE_HAL_DSI_REGISTER_CALLBACKS == 0) + DSI_MspInit(&hlcd_dsi); +#else + /* Register the DSI MSP Callbacks */ + if (LcdDsi_IsMspCbValid[0] == 0U) { + if (BSP_LCD_DSI_RegisterDefaultMspCallbacks(0) != BSP_ERROR_NONE) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } +#endif /* (USE_HAL_DSI_REGISTER_CALLBACKS == 0) */ + + if (status == BSP_ERROR_NONE) { + /* DSI peripheral initialization */ + if (MX_DSI_Init(&hlcd_dsi) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } + } + + /*********************/ + /* LCD configuration */ + /*********************/ + if (status == BSP_ERROR_NONE) { + PhyTimers.ClockLaneHS2LPTime = 11; + PhyTimers.ClockLaneLP2HSTime = 40; + PhyTimers.DataLaneHS2LPTime = 12; + PhyTimers.DataLaneLP2HSTime = 23; + PhyTimers.DataLaneMaxReadTime = 0; + PhyTimers.StopWaitTime = 7; + + if (HAL_DSI_ConfigPhyTimer(&hlcd_dsi, &PhyTimers) != HAL_OK) { + return 6; + } + + HostTimeouts.TimeoutCkdiv = 1; + HostTimeouts.HighSpeedTransmissionTimeout = 0; + HostTimeouts.LowPowerReceptionTimeout = 0; + HostTimeouts.HighSpeedReadTimeout = 0; + HostTimeouts.LowPowerReadTimeout = 0; + HostTimeouts.HighSpeedWriteTimeout = 0; + HostTimeouts.HighSpeedWritePrespMode = 0; + HostTimeouts.LowPowerWriteTimeout = 0; + HostTimeouts.BTATimeout = 0; + + if (HAL_DSI_ConfigHostTimeouts(&hlcd_dsi, &HostTimeouts) != HAL_OK) { + return 7; + } + + if (HAL_DSI_ConfigFlowControl(&hlcd_dsi, DSI_FLOW_CONTROL_BTA) != HAL_OK) { + return 7; + } + + /* Enable the DSI host */ + __HAL_DSI_ENABLE(&hlcd_dsi); + + /*************/ + /* LTDC init */ + /*************/ + if (status == BSP_ERROR_NONE) { + if (MX_LTDC_ClockConfig(&hlcd_ltdc) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { +#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 0) + LTDC_MspInit(&hlcd_ltdc); +#else + /* Register the LTDC MSP Callbacks */ + if (LcdLtdc_IsMspCbValid[0] == 0U) { + if (BSP_LCD_LTDC_RegisterDefaultMspCallbacks(0) != BSP_ERROR_NONE) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } +#endif /* (USE_HAL_GFXMMU_REGISTER_CALLBACKS == 0) */ + + if (status == BSP_ERROR_NONE) { + /* LTDC peripheral initialization */ + if (MX_LTDC_Init(&hlcd_ltdc) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } else { + if (MX_LTDC_ConfigLayer(&hlcd_ltdc, LTDC_LAYER_1, + GFXMMU_VIRTUAL_BUFFER0_BASE_S) != HAL_OK) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } + } + } + } + + /* Start DSI */ + if (HAL_DSI_Start(&(hlcd_dsi)) != HAL_OK) { + return 8; + } + + /* CMD Mode */ + uint8_t InitParam1[3] = {0xFF, 0x83, 0x79}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 3, 0xB9, + InitParam1) != HAL_OK) { + ErrorNumber++; + } + + /* SETPOWER */ + uint8_t InitParam2[16] = {0x44, 0x1C, 0x1C, 0x37, 0x57, 0x90, 0xD0, 0xE2, + 0x58, 0x80, 0x38, 0x38, 0xF8, 0x33, 0x34, 0x42}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 16, 0xB1, + InitParam2) != HAL_OK) { + ErrorNumber++; + } + + /* SETDISP */ + uint8_t InitParam3[9] = {0x80, 0x14, 0x0C, 0x30, 0x20, + 0x50, 0x11, 0x42, 0x1D}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 9, 0xB2, + InitParam3) != HAL_OK) { + ErrorNumber++; + } + + /* Set display cycle timing */ + uint8_t InitParam4[10] = {0x01, 0xAA, 0x01, 0xAF, 0x01, + 0xAF, 0x10, 0xEA, 0x1C, 0xEA}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 10, 0xB4, + InitParam4) != HAL_OK) { + ErrorNumber++; + } + + /* SETVCOM */ + uint8_t InitParam5[4] = {00, 00, 00, 0xC0}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 4, 0xC7, + InitParam5) != HAL_OK) { + ErrorNumber++; + } + + /* Set Panel Related Registers */ + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, 0xCC, + 0x02) != HAL_OK) { + ErrorNumber++; + } + + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, 0xD2, + 0x77) != HAL_OK) { + ErrorNumber++; + } + + uint8_t InitParam6[37] = {0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x08, 0x32, + 0x10, 0x01, 0x00, 0x01, 0x03, 0x72, 0x03, 0x72, + 0x00, 0x08, 0x00, 0x08, 0x33, 0x33, 0x05, 0x05, + 0x37, 0x05, 0x05, 0x37, 0x0A, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x01, 0x00, 0x0E}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 37, 0xD3, + InitParam6) != HAL_OK) { + ErrorNumber++; + } + + uint8_t InitParam7[34] = { + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x18, 0x18, + 0x18, 0x18, 0x19, 0x19, 0x01, 0x00, 0x03, 0x02, 0x05, 0x04, 0x07, 0x06, + 0x23, 0x22, 0x21, 0x20, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 34, 0xD5, + InitParam7) != HAL_OK) { + ErrorNumber++; + } + + uint8_t InitParam8[32] = {0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x19, 0x19, 0x18, 0x18, 0x19, 0x19, 0x18, 0x18, + 0x06, 0x07, 0x04, 0x05, 0x02, 0x03, 0x00, 0x01, + 0x20, 0x21, 0x22, 0x23, 0x18, 0x18, 0x18, 0x18}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 35, 0xD6, + InitParam8) != HAL_OK) { + ErrorNumber++; + } + + /* SET GAMMA */ + uint8_t InitParam9[42] = { + 0x00, 0x16, 0x1B, 0x30, 0x36, 0x3F, 0x24, 0x40, 0x09, 0x0D, 0x0F, + 0x18, 0x0E, 0x11, 0x12, 0x11, 0x14, 0x07, 0x12, 0x13, 0x18, 0x00, + 0x17, 0x1C, 0x30, 0x36, 0x3F, 0x24, 0x40, 0x09, 0x0C, 0x0F, 0x18, + 0x0E, 0x11, 0x14, 0x11, 0x12, 0x07, 0x12, 0x14, 0x18}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 42, 0xE0, + InitParam9) != HAL_OK) { + ErrorNumber++; + } + + uint8_t InitParam10[3] = {0x2C, 0x2C, 00}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 3, 0xB6, + InitParam10) != HAL_OK) { + ErrorNumber++; + } + + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, 0xBD, + 0x00) != HAL_OK) { + ErrorNumber++; + } + + uint8_t InitParam11[] = { + 0x01, 0x00, 0x07, 0x0F, 0x16, 0x1F, 0x27, 0x30, 0x38, 0x40, 0x47, + 0x4E, 0x56, 0x5D, 0x65, 0x6D, 0x74, 0x7D, 0x84, 0x8A, 0x90, 0x99, + 0xA1, 0xA9, 0xB0, 0xB6, 0xBD, 0xC4, 0xCD, 0xD4, 0xDD, 0xE5, 0xEC, + 0xF3, 0x36, 0x07, 0x1C, 0xC0, 0x1B, 0x01, 0xF1, 0x34, 0x00}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 42, 0xC1, + InitParam11) != HAL_OK) { + ErrorNumber++; + } + + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, 0xBD, + 0x01) != HAL_OK) { + ErrorNumber++; + } + + uint8_t InitParam12[] = { + 0x00, 0x08, 0x0F, 0x16, 0x1F, 0x28, 0x31, 0x39, 0x41, 0x48, 0x51, + 0x59, 0x60, 0x68, 0x70, 0x78, 0x7F, 0x87, 0x8D, 0x94, 0x9C, 0xA3, + 0xAB, 0xB3, 0xB9, 0xC1, 0xC8, 0xD0, 0xD8, 0xE0, 0xE8, 0xEE, 0xF5, + 0x3B, 0x1A, 0xB6, 0xA0, 0x07, 0x45, 0xC5, 0x37, 0x00}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 42, 0xC1, + InitParam12) != HAL_OK) { + ErrorNumber++; + } + + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, 0xBD, + 0x02) != HAL_OK) { + ErrorNumber++; + } + + uint8_t InitParam13[42] = { + 0x00, 0x09, 0x0F, 0x18, 0x21, 0x2A, 0x34, 0x3C, 0x45, 0x4C, 0x56, + 0x5E, 0x66, 0x6E, 0x76, 0x7E, 0x87, 0x8E, 0x95, 0x9D, 0xA6, 0xAF, + 0xB7, 0xBD, 0xC5, 0xCE, 0xD5, 0xDF, 0xE7, 0xEE, 0xF4, 0xFA, 0xFF, + 0x0C, 0x31, 0x83, 0x3C, 0x5B, 0x56, 0x1E, 0x5A, 0xFF}; + if (HAL_DSI_LongWrite(&hlcd_dsi, 0, DSI_DCS_LONG_PKT_WRITE, 42, 0xC1, + InitParam13) != HAL_OK) { + ErrorNumber++; + } + + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, 0xBD, + 0x00) != HAL_OK) { + ErrorNumber++; + } + + /* Exit Sleep Mode*/ + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P0, 0x11, + 0x00) != HAL_OK) { + ErrorNumber++; + } + + HAL_Delay(120); + + /* Display On */ + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P0, 0x29, + 0x00) != HAL_OK) { + ErrorNumber++; + } + + HAL_Delay(120); + + if (ErrorNumber != 0U) { + status = BSP_ERROR_PERIPH_FAILURE; + } + } + + return status; +} + +/** + * @brief De-Initialize LCD. + * @retval BSP status. + */ +static int32_t LCD_DeInit(void) { + int32_t status = BSP_ERROR_NONE; + uint32_t ErrorNumber = 0; + + /* Disable DSI wrapper */ + __HAL_DSI_WRAPPER_DISABLE(&hlcd_dsi); + + /* Set display off */ + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P1, + DSI_SET_DISPLAY_OFF, 0x00) != HAL_OK) { + ErrorNumber++; + } + + /* Wait before entering in sleep mode */ + HAL_Delay(2000); + + /* Put LCD in sleep mode */ + if (HAL_DSI_ShortWrite(&hlcd_dsi, 0, DSI_DCS_SHORT_PKT_WRITE_P0, + DSI_ENTER_SLEEP_MODE, 0x0) != HAL_OK) { + ErrorNumber++; + } + + HAL_Delay(120); + + /* De-initialize DSI */ + if (HAL_DSI_DeInit(&hlcd_dsi) != HAL_OK) { + ErrorNumber++; + } +#if (USE_HAL_DSI_REGISTER_CALLBACKS == 0) + DSI_MspDeInit(&hlcd_dsi); +#endif /* (USE_HAL_DSI_REGISTER_CALLBACKS == 0) */ + + /* De-initialize LTDC */ + if (HAL_LTDC_DeInit(&hlcd_ltdc) != HAL_OK) { + ErrorNumber++; + } +#if (USE_HAL_LTDC_REGISTER_CALLBACKS == 0) + LTDC_MspDeInit(&hlcd_ltdc); +#endif /* (USE_HAL_LTDC_REGISTER_CALLBACKS == 0) */ + + /* De-initialize GFXMMU */ + if (HAL_GFXMMU_DeInit(&hlcd_gfxmmu) != HAL_OK) { + ErrorNumber++; + } +#if (USE_HAL_GFXMMU_REGISTER_CALLBACKS == 0) + GFXMMU_MspDeInit(&hlcd_gfxmmu); +#endif /* (USE_HAL_GFXMMU_REGISTER_CALLBACKS == 0) */ + + if (ErrorNumber != 0U) { + status = BSP_ERROR_PERIPH_FAILURE; + } + + return status; +} + +/** + * @brief Initialize GFXMMU MSP. + * @param hgfxmmu GFXMMU handle + * @retval None + */ +static void GFXMMU_MspInit(GFXMMU_HandleTypeDef *hgfxmmu) { + /* Prevent unused argument(s) compilation warning */ + UNUSED(hgfxmmu); + + /* GFXMMU clock enable */ + __HAL_RCC_GFXMMU_CLK_ENABLE(); + + /* Enable GFXMMU interrupt */ + HAL_NVIC_SetPriority(GFXMMU_IRQn, BSP_LCD_GFXMMU_IT_PRIORITY, 0); + HAL_NVIC_EnableIRQ(GFXMMU_IRQn); +} + +/** + * @brief De-Initialize GFXMMU MSP. + * @param hgfxmmu GFXMMU handle + * @retval None + */ +static void GFXMMU_MspDeInit(GFXMMU_HandleTypeDef *hgfxmmu) { + /* Prevent unused argument(s) compilation warning */ + UNUSED(hgfxmmu); + + /* Disable GFXMMU interrupt */ + HAL_NVIC_DisableIRQ(GFXMMU_IRQn); + + /* GFXMMU clock disable */ + __HAL_RCC_GFXMMU_CLK_DISABLE(); +} + +/** + * @brief Initialize LTDC MSP. + * @param hltdc LTDC handle + * @retval None + */ +static void LTDC_MspInit(LTDC_HandleTypeDef *hltdc) { + /* Prevent unused argument(s) compilation warning */ + UNUSED(hltdc); + + /* Enable LCD clock */ + __HAL_RCC_LTDC_CLK_ENABLE(); + + /* Enable LTDC interrupt */ + HAL_NVIC_SetPriority(LTDC_IRQn, BSP_LCD_LTDC_IT_PRIORITY, 0); + HAL_NVIC_EnableIRQ(LTDC_IRQn); + + HAL_NVIC_SetPriority(LTDC_ER_IRQn, BSP_LCD_LTDC_IT_PRIORITY, 0); + HAL_NVIC_EnableIRQ(LTDC_ER_IRQn); +} + +/** + * @brief De-Initialize LTDC MSP. + * @param hltdc LTDC handle + * @retval None + */ +static void LTDC_MspDeInit(LTDC_HandleTypeDef *hltdc) { + /* Prevent unused argument(s) compilation warning */ + UNUSED(hltdc); + + /* Disable LTDC interrupts */ + HAL_NVIC_DisableIRQ(LTDC_ER_IRQn); + HAL_NVIC_DisableIRQ(LTDC_IRQn); + + /* LTDC clock disable */ + __HAL_RCC_LTDC_CLK_DISABLE(); +} + +/** + * @brief Initialize DSI MSP. + * @param hdsi DSI handle + * @retval None + */ +static void DSI_MspInit(DSI_HandleTypeDef *hdsi) { + RCC_PeriphCLKInitTypeDef PLL3InitPeriph = {0}; + RCC_PeriphCLKInitTypeDef DSIPHYInitPeriph = {0}; + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + UNUSED(hdsi); + + /* Enable GPIOI & GPIOD clocks */ + __HAL_RCC_GPIOD_CLK_ENABLE(); + __HAL_RCC_GPIOI_CLK_ENABLE(); + + /* Configure DSI Reset pin */ + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_PULLDOWN; + GPIO_InitStruct.Pin = GPIO_PIN_5; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /* Configure LCD Backlight Pin */ + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Pin = GPIO_PIN_6; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOI, &GPIO_InitStruct); + + /* Enable DSI clock */ + __HAL_RCC_DSI_CLK_ENABLE(); + + /** ################ Set DSI clock to D-PHY source clock ################## + * **/ + + /* Start and configurre PLL3 */ + /* HSE = 16MHZ */ + /* 16/(M=4) = 4MHz input (min) */ + /* 4*(N=125) = 500MHz VCO (almost max) */ + /* 500/(P=8) = 62.5 for DSI ie exactly the lane byte clock*/ + + PLL3InitPeriph.PeriphClockSelection = RCC_PERIPHCLK_DSI; + PLL3InitPeriph.DsiClockSelection = RCC_DSICLKSOURCE_PLL3; + PLL3InitPeriph.PLL3.PLL3M = 4; + PLL3InitPeriph.PLL3.PLL3N = 125; + PLL3InitPeriph.PLL3.PLL3P = 8; + PLL3InitPeriph.PLL3.PLL3Q = 8; + PLL3InitPeriph.PLL3.PLL3R = 24; + PLL3InitPeriph.PLL3.PLL3FRACN = 0; + PLL3InitPeriph.PLL3.PLL3RGE = RCC_PLLVCIRANGE_1; + PLL3InitPeriph.PLL3.PLL3ClockOut = RCC_PLL3_DIVR | RCC_PLL3_DIVP; + PLL3InitPeriph.PLL3.PLL3Source = RCC_PLLSOURCE_HSE; + (void)HAL_RCCEx_PeriphCLKConfig(&PLL3InitPeriph); + + __HAL_RCC_DSI_CLK_ENABLE(); + + /* Switch to D-PHY source clock */ + /* Enable the DSI host */ + hlcd_dsi.Instance = DSI; + + __HAL_DSI_ENABLE(&hlcd_dsi); + + /* Enable the DSI PLL */ + __HAL_DSI_PLL_ENABLE(&hlcd_dsi); + + HAL_Delay(1); + + /* Enable the clock lane and the digital section of the D-PHY */ + hlcd_dsi.Instance->PCTLR |= (DSI_PCTLR_CKE | DSI_PCTLR_DEN); + + /* Set the TX escape clock division factor */ + hlcd_dsi.Instance->CCR = 4; + + HAL_Delay(1); + + /* Config DSI Clock to DSI PHY */ + DSIPHYInitPeriph.PeriphClockSelection = RCC_PERIPHCLK_DSI; + DSIPHYInitPeriph.DsiClockSelection = RCC_DSICLKSOURCE_DSIPHY; + + (void)HAL_RCCEx_PeriphCLKConfig(&DSIPHYInitPeriph); + + /* Reset */ + HAL_Delay(11); + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_5, GPIO_PIN_SET); + HAL_Delay(150); + + /* Reset the TX escape clock division factor */ + hlcd_dsi.Instance->CCR &= ~DSI_CCR_TXECKDIV; + + /* Disable the DSI PLL */ + __HAL_DSI_PLL_DISABLE(&hlcd_dsi); + + /* Disable the DSI host */ + __HAL_DSI_DISABLE(&hlcd_dsi); + + /** ######################################################################### + * **/ + + /* Enable DSI NVIC interrupt */ + /* Default is lowest priority level */ + HAL_NVIC_SetPriority(DSI_IRQn, 0x0FUL, 0); + HAL_NVIC_EnableIRQ(DSI_IRQn); +} + +/** + * @brief De-Initialize DSI MSP. + * @param hdsi DSI handle + * @retval None + */ +static void DSI_MspDeInit(DSI_HandleTypeDef *hdsi) { + RCC_PeriphCLKInitTypeDef PLL3InitPeriph = {0}; + + UNUSED(hdsi); + + /* Switch to PLL3 before Disable */ + PLL3InitPeriph.PeriphClockSelection = RCC_PERIPHCLK_DSI; + PLL3InitPeriph.DsiClockSelection = RCC_DSICLKSOURCE_PLL3; + PLL3InitPeriph.PLL3.PLL3M = 4; + PLL3InitPeriph.PLL3.PLL3N = 125; + PLL3InitPeriph.PLL3.PLL3P = 8; + PLL3InitPeriph.PLL3.PLL3Q = 8; + PLL3InitPeriph.PLL3.PLL3R = 24; + PLL3InitPeriph.PLL3.PLL3FRACN = 0; + PLL3InitPeriph.PLL3.PLL3RGE = RCC_PLLVCIRANGE_1; + PLL3InitPeriph.PLL3.PLL3ClockOut = RCC_PLL3_DIVR | RCC_PLL3_DIVP; + PLL3InitPeriph.PLL3.PLL3Source = RCC_PLLSOURCE_HSE; + (void)HAL_RCCEx_PeriphCLKConfig(&PLL3InitPeriph); + + /* DSI clock disable */ + __HAL_RCC_DSI_CLK_DISABLE(); + + /** @brief Toggle Sw reset of DSI IP */ + __HAL_RCC_DSI_FORCE_RESET(); + __HAL_RCC_DSI_RELEASE_RESET(); + + /* Disable DSI interrupts */ + HAL_NVIC_DisableIRQ(DSI_IRQn); +} + +int32_t BSP_LCD_SetFrameBuffer(uint32_t Instance, uint32_t fb_addr) { + int32_t status = BSP_ERROR_NONE; + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + MX_LTDC_ConfigLayer(&hlcd_ltdc, 0, fb_addr); + } + + return status; +} + +int32_t BSP_LCD_Reinit(uint32_t Instance) { + int32_t status = BSP_ERROR_NONE; + if (Instance >= LCD_INSTANCES_NBR) { + status = BSP_ERROR_WRONG_PARAM; + } else { + // Switch to D-PHY source clock + // Enable the DSI host + hlcd_dsi.Instance = DSI; + + MX_GFXMMU_Reinit(&hlcd_gfxmmu); + MX_DSI_Reinit(&hlcd_dsi); + MX_LTDC_Reinit(&hlcd_ltdc); + } + + return status; +} diff --git a/core/embed/trezorhal/stm32u5/xdisplay/vg-2864 b/core/embed/trezorhal/stm32u5/xdisplay/vg-2864 new file mode 120000 index 0000000000..5f1987533d --- /dev/null +++ b/core/embed/trezorhal/stm32u5/xdisplay/vg-2864 @@ -0,0 +1 @@ +../../stm32f4/xdisplay/vg-2864 \ No newline at end of file diff --git a/core/embed/trezorhal/unix/display-unix.c b/core/embed/trezorhal/unix/display-unix.c index f0442cf4a1..51fe9cc8c3 100644 --- a/core/embed/trezorhal/unix/display-unix.c +++ b/core/embed/trezorhal/unix/display-unix.c @@ -31,7 +31,7 @@ #include "common.h" #include "display-unix.h" -#include "display_interface.h" +#include "display.h" #include "profile.h" #define EMULATOR_BORDER 16 @@ -354,3 +354,5 @@ void display_clear_save(void) { uint8_t *display_get_wr_addr(void) { return (uint8_t *)DISPLAY_DATA_ADDRESS; } void display_finish_actions(void) {} + +void display_reinit(void) {} diff --git a/core/embed/trezorhal/unix/display_driver.c b/core/embed/trezorhal/unix/display_driver.c new file mode 100644 index 0000000000..8b51043bb8 --- /dev/null +++ b/core/embed/trezorhal/unix/display_driver.c @@ -0,0 +1,461 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#define _GNU_SOURCE + +#include <xdisplay.h> + +#include <SDL.h> +#include <SDL_image.h> + +#include "common.h" +#include "profile.h" + +#define EMULATOR_BORDER 16 + +#if defined TREZOR_MODEL_T + +#ifdef TREZOR_EMULATOR_RASPI +#define WINDOW_WIDTH 480 +#define WINDOW_HEIGHT 320 +#define TOUCH_OFFSET_X 110 +#define TOUCH_OFFSET_Y 40 +#else +#define WINDOW_WIDTH 400 +#define WINDOW_HEIGHT 600 +#define TOUCH_OFFSET_X 80 +#define TOUCH_OFFSET_Y 110 +#endif + +#elif defined TREZOR_MODEL_1 + +#define WINDOW_WIDTH 200 +#define WINDOW_HEIGHT 340 +#define TOUCH_OFFSET_X 36 +#define TOUCH_OFFSET_Y 92 + +#elif defined TREZOR_MODEL_R + +#define WINDOW_WIDTH 193 +#define WINDOW_HEIGHT 339 +#define TOUCH_OFFSET_X 32 +#define TOUCH_OFFSET_Y 84 + +#elif defined TREZOR_MODEL_T3T1 + +#define WINDOW_WIDTH 400 +#define WINDOW_HEIGHT 600 +#define TOUCH_OFFSET_X 80 +#define TOUCH_OFFSET_Y 110 + +#else +#error Unknown Trezor model +#endif + +typedef struct { + // Current display orientation (0 or 180) + int orientation_angle; + // Current backlight level ranging from 0 to 255 + int backlight_level; + + SDL_Window *window; + SDL_Renderer *renderer; + SDL_Surface *buffer; + SDL_Texture *texture; + SDL_Texture *background; + SDL_Surface *prev_saved; + +#if DISPLAY_MONO + // SDL2 does not support 8bit surface/texture + // and we have to simulate it + uint8_t mono_framebuf[DISPLAY_RESX * DISPLAY_RESY]; +#endif + +} display_driver_t; + +static display_driver_t g_display_driver; + +//!@# TODO get rid of this... +int sdl_display_res_x = DISPLAY_RESX, sdl_display_res_y = DISPLAY_RESY; +int sdl_touch_offset_x, sdl_touch_offset_y; + +void display_deinit(void) { + display_driver_t *drv = &g_display_driver; + + SDL_FreeSurface(drv->prev_saved); + SDL_FreeSurface(drv->buffer); + if (drv->background != NULL) { + SDL_DestroyTexture(drv->background); + } + if (drv->texture != NULL) { + SDL_DestroyTexture(drv->texture); + } + if (drv->renderer != NULL) { + SDL_DestroyRenderer(drv->renderer); + } + if (drv->window != NULL) { + SDL_DestroyWindow(drv->window); + } + SDL_Quit(); +} + +void display_init(void) { + display_driver_t *drv = &g_display_driver; + + if (SDL_Init(SDL_INIT_VIDEO) != 0) { + printf("%s\n", SDL_GetError()); + ensure(secfalse, "SDL_Init error"); + } + atexit(display_deinit); + + char *window_title = NULL; + char *window_title_alloc = NULL; + if (asprintf(&window_title_alloc, "Trezor^emu: %s", profile_name()) > 0) { + window_title = window_title_alloc; + } else { + window_title = "Trezor^emu"; + window_title_alloc = NULL; + } + + drv->window = + SDL_CreateWindow(window_title, SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, WINDOW_WIDTH, WINDOW_HEIGHT, +#ifdef TREZOR_EMULATOR_RASPI + SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN +#else + SDL_WINDOW_SHOWN | SDL_WINDOW_ALLOW_HIGHDPI +#endif + ); + free(window_title_alloc); + if (!drv->window) { + printf("%s\n", SDL_GetError()); + ensure(secfalse, "SDL_CreateWindow error"); + } + drv->renderer = SDL_CreateRenderer(drv->window, -1, SDL_RENDERER_SOFTWARE); + if (!drv->renderer) { + printf("%s\n", SDL_GetError()); + SDL_DestroyWindow(drv->window); + ensure(secfalse, "SDL_CreateRenderer error"); + } + SDL_SetRenderDrawColor(drv->renderer, 0, 0, 0, 255); + SDL_RenderClear(drv->renderer); + + drv->buffer = SDL_CreateRGBSurface(0, DISPLAY_RESX, DISPLAY_RESY, 16, 0xF800, + 0x07E0, 0x001F, 0x0000); + drv->texture = SDL_CreateTexture(drv->renderer, SDL_PIXELFORMAT_RGB565, + SDL_TEXTUREACCESS_STREAMING, DISPLAY_RESX, + DISPLAY_RESY); + SDL_SetTextureBlendMode(drv->texture, SDL_BLENDMODE_BLEND); +#ifdef __APPLE__ + // macOS Mojave SDL black screen workaround + SDL_PumpEvents(); + SDL_SetWindowSize(drv->window, WINDOW_WIDTH, WINDOW_HEIGHT); +#endif +#ifdef TREZOR_EMULATOR_RASPI +#include "background_raspi.h" + drv->background = IMG_LoadTexture_RW( + drv->renderer, + SDL_RWFromMem(background_raspi_jpg, background_raspi_jpg_len), 0); +#else +#if defined TREZOR_MODEL_T +#include "background_T.h" + drv->background = IMG_LoadTexture_RW( + drv->renderer, SDL_RWFromMem(background_T_jpg, background_T_jpg_len), 0); +#elif defined TREZOR_MODEL_1 +#include "background_1.h" + drv->background = IMG_LoadTexture_RW( + drv->renderer, SDL_RWFromMem(background_1_jpg, background_1_jpg_len), 0); +#elif defined TREZOR_MODEL_R +#include "background_T2B1.h" + drv->background = IMG_LoadTexture_RW( + drv->renderer, + SDL_RWFromMem(background_T2B1_png, background_T2B1_png_len), 0); +#endif +#endif + if (drv->background) { + SDL_SetTextureBlendMode(drv->background, SDL_BLENDMODE_NONE); + sdl_touch_offset_x = TOUCH_OFFSET_X; + sdl_touch_offset_y = TOUCH_OFFSET_Y; + } else { + SDL_SetWindowSize(drv->window, DISPLAY_RESX + 2 * EMULATOR_BORDER, + DISPLAY_RESY + 2 * EMULATOR_BORDER); + sdl_touch_offset_x = EMULATOR_BORDER; + sdl_touch_offset_y = EMULATOR_BORDER; + } +#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R + // T1 and TR do not have backlight capabilities in hardware, so + // setting its value here for emulator to avoid + // calling any `set_backlight` functions + drv->backlight_level = 255; +#else + drv->backlight_level = 0; +#endif +#ifdef TREZOR_EMULATOR_RASPI + drv->orientation_angle = 270; + SDL_ShowCursor(SDL_DISABLE); +#else + drv->orientation_angle = 0; +#endif +} + +void display_reinit(void) { + // not used +} + +void display_finish_actions(void) { + // not used +} + +int display_set_backlight(int level) { + display_driver_t *drv = &g_display_driver; + +#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R + level = 255; +#endif + + if (drv->backlight_level != level && level >= 0 && level <= 255) { + drv->backlight_level = level; + display_refresh(); + } + + return drv->backlight_level; +} + +int display_get_backlight(void) { + display_driver_t *drv = &g_display_driver; + return drv->backlight_level; +} + +int display_set_orientation(int angle) { + display_driver_t *drv = &g_display_driver; + if (angle != drv->orientation_angle) { +#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_T3T1 + if (angle == 0 || angle == 90 || angle == 180 || angle == 270) { +#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R + if (angle == 0 || angle == 180) { +#else +#error Unknown Trezor model +#endif + drv->orientation_angle = angle; + display_refresh(); + } + } + return drv->orientation_angle; +} + +int display_get_orientation(void) { + display_driver_t *drv = &g_display_driver; + return drv->orientation_angle; +} + +#ifdef XFRAMEBUFFER +display_fb_info_t display_get_frame_buffer(void) { + display_driver_t *drv = &g_display_driver; + +#ifdef DISPLAY_MONO + display_fb_info_t fb = { + .ptr = drv->mono_framebuf, + .stride = DISPLAY_RESX, + }; +#else + display_fb_info_t fb = { + .ptr = drv->buffer->pixels, + .stride = DISPLAY_RESX * sizeof(uint16_t), + }; +#endif + + return fb; +} + +#else // XFRAMEBUFFER + +void display_wait_for_sync(void) { + // not used +} +#endif + +#ifdef DISPLAY_MONO +// Copies driver's monochromatic framebuffer into the RGB framebuffer used by +// SDL +static void copy_mono_framebuf(display_driver_t *drv) { + for (int y = 0; y < DISPLAY_RESY; y++) { + uint16_t *dst = + (uint16_t *)((uint8_t *)drv->buffer->pixels + drv->buffer->pitch * y); + uint8_t *src = &drv->mono_framebuf[y * DISPLAY_RESX]; + for (int x = 0; x < DISPLAY_RESX; x++) { + uint8_t lum = src[x] > 40 ? 255 : 0; + dst[x] = gfx_color16_rgb(lum, lum, lum); + } + } +} +#endif + +void display_refresh(void) { + display_driver_t *drv = &g_display_driver; + + if (!drv->renderer) { + display_init(); + } + +#ifdef DISPLAY_MONO + copy_mono_framebuf(drv); +#endif + + if (drv->background) { + const SDL_Rect r = {0, 0, WINDOW_WIDTH, WINDOW_HEIGHT}; + SDL_RenderCopy(drv->renderer, drv->background, NULL, &r); + } else { + SDL_RenderClear(drv->renderer); + } + // Show the display buffer + SDL_UpdateTexture(drv->texture, NULL, drv->buffer->pixels, + drv->buffer->pitch); +#define BACKLIGHT_NORMAL 150 + SDL_SetTextureAlphaMod( + drv->texture, MIN(255, 255 * drv->backlight_level / BACKLIGHT_NORMAL)); + if (drv->background) { + const SDL_Rect r = {TOUCH_OFFSET_X, TOUCH_OFFSET_Y, DISPLAY_RESX, + DISPLAY_RESY}; + SDL_RenderCopyEx(drv->renderer, drv->texture, NULL, &r, + drv->orientation_angle, NULL, 0); + } else { + const SDL_Rect r = {EMULATOR_BORDER, EMULATOR_BORDER, DISPLAY_RESX, + DISPLAY_RESY}; + SDL_RenderCopyEx(drv->renderer, drv->texture, NULL, &r, + drv->orientation_angle, NULL, 0); + } + SDL_RenderPresent(drv->renderer); +} + +void display_set_compatible_settings(void) { + // not used +} + +#ifndef DISPLAY_MONO + +void display_fill(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = + (uint8_t *)drv->buffer->pixels + (drv->buffer->pitch * bb_new.dst_y); + bb_new.dst_stride = drv->buffer->pitch; + + gfx_rgb565_fill(&bb_new); +} + +void display_copy_rgb565(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = + (uint8_t *)drv->buffer->pixels + (drv->buffer->pitch * bb_new.dst_y); + bb_new.dst_stride = drv->buffer->pitch; + + gfx_rgb565_copy_rgb565(&bb_new); +} + +void display_copy_mono1p(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = + (uint8_t *)drv->buffer->pixels + (drv->buffer->pitch * bb_new.dst_y); + bb_new.dst_stride = DISPLAY_RESX; + + gfx_rgb565_copy_mono1p(&bb_new); +} + +void display_copy_mono4(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = + (uint8_t *)drv->buffer->pixels + (drv->buffer->pitch * bb_new.dst_y); + bb_new.dst_stride = drv->buffer->pitch; + + gfx_rgb565_copy_mono4(&bb_new); +} + +#else // DISPLAY_MONO + +void display_fill(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = drv->mono_framebuf + (DISPLAY_RESX * bb_new.dst_y); + bb_new.dst_stride = DISPLAY_RESX; + + gfx_mono8_fill(&bb_new); +} + +void display_copy_mono1p(const gfx_bitblt_t *bb) { + display_driver_t *drv = &g_display_driver; + + gfx_bitblt_t bb_new = *bb; + bb_new.dst_row = drv->mono_framebuf + (DISPLAY_RESX * bb_new.dst_y); + bb_new.dst_stride = DISPLAY_RESX; + + gfx_mono8_copy_mono1p(&bb_new); +} + +#endif + +const char *display_save(const char *prefix) { + display_driver_t *drv = &g_display_driver; + + if (!drv->renderer) { + display_init(); + } + +#ifdef DISPLAY_MONO + copy_mono_framebuf(drv); +#endif + + static int count; + static char filename[256]; + // take a cropped view of the screen contents + const SDL_Rect rect = {0, 0, DISPLAY_RESX, DISPLAY_RESY}; + SDL_Surface *crop = SDL_CreateRGBSurface( + drv->buffer->flags, rect.w, rect.h, drv->buffer->format->BitsPerPixel, + drv->buffer->format->Rmask, drv->buffer->format->Gmask, + drv->buffer->format->Bmask, drv->buffer->format->Amask); + SDL_BlitSurface(drv->buffer, &rect, crop, NULL); + // compare with previous screen, skip if equal + if (drv->prev_saved != NULL) { + if (memcmp(drv->prev_saved->pixels, crop->pixels, crop->pitch * crop->h) == + 0) { + SDL_FreeSurface(crop); + return filename; + } + SDL_FreeSurface(drv->prev_saved); + } + // save to png + snprintf(filename, sizeof(filename), "%s%08d.png", prefix, count++); + IMG_SavePNG(crop, filename); + drv->prev_saved = crop; + return filename; +} + +void display_clear_save(void) { + display_driver_t *drv = &g_display_driver; + + SDL_FreeSurface(drv->prev_saved); + drv->prev_saved = NULL; +} diff --git a/core/embed/trezorhal/unix/dma2d_bitblt.c b/core/embed/trezorhal/unix/dma2d_bitblt.c new file mode 100644 index 0000000000..c2fe9c71a7 --- /dev/null +++ b/core/embed/trezorhal/unix/dma2d_bitblt.c @@ -0,0 +1,22 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "dma2d_bitblt.h" + +void dma2d_wait(void) {} diff --git a/core/embed/trezorhal/xdisplay.h b/core/embed/trezorhal/xdisplay.h new file mode 100644 index 0000000000..0fc3a1420d --- /dev/null +++ b/core/embed/trezorhal/xdisplay.h @@ -0,0 +1,156 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_XDISPLAY_H +#define TREZORHAL_XDISPLAY_H + +#include <stddef.h> +#include <stdint.h> +#include "gfx_bitblt.h" + +#include TREZOR_BOARD + +// This is a universal API for controlling different types of display +// controllers. +// +// Currently, following displays displays are supported +// +// VG-2864KSWEG01 - OLED Mono / 128x64 pixels / SPI +// - Model T1B1 / Model T2B1 +// +// UG-2828SWIG01 - OLED Mono / 128x128 pixels / Parallel +// - Early revisions of T2B1 +// +// ST7789V - TFT RGB / 240x240 pixels / Parallel +// - Model T2T1 / Model T3T1 +// +// ILI9341 - TFT RGB / 320x240 pixels / Parallel / LTDC + SPI +// - STM32F429I-DISC1 Discovery Board +// +// MIPI - +// - STM32U5A9J-DK Discovery Board + +// Fully initializes the display controller. +void display_init(void); + +// Called in application or bootloader to reinitialize an already initialized +// display controller without any distrubing visible effect (blinking, etc.). +void display_reinit(void); + +// Waits for any backround operations (such as DMA copying) and returns. +// +// The function provides a barrier when jumping between +// boardloader/bootloader and firmware. +void display_finish_actions(void); + +// Sets display backlight level ranging from 0 (off)..255 (maximum). +// +// The default backligt level is 0. Without settings it +// to some higher value the displayed pixels are not visible. +// Beware that his also applies to the emulator. +// +// Returns the set level (usually the same value or the +// closest value to the `level` argument) +int display_set_backlight(int level); + +// Gets current display level ranging from 0 (off)..255 (maximum). +int display_get_backlight(void); + +// Sets the display orientation. +// +// May accept one of following values: 0, 90, 180, 270 +// but accepted values are model-dependent. +// Default display orientation is always 0. +// +// Returns the set orientation +int display_set_orientation(int angle); + +// Gets the display's current orientation +// +// Returned value is one of 0, 90, 180, 270. +int display_get_orientation(void); + +#ifdef XFRAMEBUFFER + +typedef struct { + // Pointer to the top-left pixel + void *ptr; + // Stride in bytes + size_t stride; + +} display_fb_info_t; + +// Provides pointer to the inactive (writeable) framebuffer. +// +// If framebuffer is not available yet due to display refreshing etc., +// the function may block until the buffer is ready to write. +display_fb_info_t display_get_frame_buffer(void); + +#else // XFRAMEBUFFER + +// Waits for the vertical synchronization pulse. +// +// Used for synchronization with the display refresh cycle +// to achieve tearless UX if possible when not using a frame buffer. +void display_wait_for_sync(void); +#endif + +// Swaps the frame buffers +// +// The function waits for vertical synchronization and +// swaps the active (currently displayed) and the inactive frame buffers. +void display_refresh(void); + +// Sets display to the mode compatible with the legacy bootloader code. +// +// This is used when switching between the firmware and the bootloader. +void display_set_compatible_settings(void); + +// Following function define display's bitblt interface. +// +// These functions draw directly to to display or to the +// currently inactive framebuffer. +// +// bb->dst_row and bb->dst_stride must be 0 + +// Fills a rectangle with a solid color. +// This function is supported by all types of displays. +void display_fill(const gfx_bitblt_t *bb); +// Copies an RGB565 bitmap. +// This function is supported by RGB displays only. +void display_copy_rgb565(const gfx_bitblt_t *bb); +// Copies a MONO4 bitmap (supported only with RGB displays). +// This function is supported by RGB displays only. +void display_copy_mono4(const gfx_bitblt_t *bb); +// Copies a MONO1P bitmap. +// This function is supported by all types of displays. +void display_copy_mono1p(const gfx_bitblt_t *bb); + +#ifdef TREZOR_EMULATOR +// Save the screen content to a file. +// The function is available only on the emulator. +const char *display_save(const char *prefix); +void display_clear_save(void); +#endif + +// Adds some declarations needed to compile with the legacy code +// (will be removed with the display legacy code) +#include "xdisplay_legacy.h" + +#endif // TREZORHAL_XDISPLAY_H diff --git a/core/embed/trezorhal/xdisplay_legacy.c b/core/embed/trezorhal/xdisplay_legacy.c new file mode 100644 index 0000000000..516f746403 --- /dev/null +++ b/core/embed/trezorhal/xdisplay_legacy.c @@ -0,0 +1,43 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "xdisplay_legacy.h" +#include "xdisplay.h" + +// This code emulates the legacy display interface and will be +// removed after final cleanup of display drivers when the legacy code +// is removed. + +int display_orientation(int angle) { + if (angle >= 0) { + return display_set_orientation(angle); + } else { + return display_get_orientation(); + } +} + +int display_backlight(int level) { + if (level >= 0) { + return display_set_backlight(level); + } else { + return display_get_backlight(); + } +} + +void display_sync(void) {} diff --git a/core/embed/trezorhal/xdisplay_legacy.h b/core/embed/trezorhal/xdisplay_legacy.h new file mode 100644 index 0000000000..0fc4d75cc6 --- /dev/null +++ b/core/embed/trezorhal/xdisplay_legacy.h @@ -0,0 +1,56 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_DISPLAY_LEGACY_H +#define TREZORHAL_DISPLAY_LEGACY_H + +#include <buffers.h> +#include <stdint.h> + +// These declarationscode emulates will be removed after the +// final cleanup of display drivers. They are here just to simplify +// integration with the legacy code. +// +// Most of these function are not called when NEW_RENDERING=1 +// and they are only needed to for succesfully code compilation + +#define DISPLAY_FRAMEBUFFER_WIDTH 768 +#define DISPLAY_FRAMEBUFFER_HEIGHT 480 +#define DISPLAY_FRAMEBUFFER_OFFSET_X 0 +#define DISPLAY_FRAMEBUFFER_OFFSET_Y 0 + +int display_orientation(int angle); +int display_backlight(int level); +void display_refresh(void); +void display_shift_window(uint16_t pixels); +uint16_t display_get_window_offset(void); +void display_pixeldata_dirty(void); +uint8_t* display_get_wr_addr(void); +void display_sync(void); +void display_set_window(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); +void display_pixeldata(uint16_t c); +uint32_t* display_get_fb_addr(void); + +void display_clear(void); +void display_text_render_buffer(const char* text, int textlen, int font, + buffer_text_t* buffer, int text_offset); + +#define PIXELDATA(c) display_pixeldata(c) + +#endif // TREZORHAL_DISPLAY_LEGACY_H diff --git a/core/embed/unix/main.c b/core/embed/unix/main.c index f7c6461ea8..2acd5b528b 100644 --- a/core/embed/unix/main.c +++ b/core/embed/unix/main.c @@ -37,6 +37,7 @@ #include <sys/types.h> #include <unistd.h> +#include "display.h" #include "extmod/misc.h" #include "extmod/vfs_posix.h" #include "flash.h" @@ -481,6 +482,8 @@ MP_NOINLINE int main_(int argc, char **argv) { pre_process_options(argc, argv); + display_init(); + // Map trezor.flash to memory. flash_init(); flash_otp_init(); diff --git a/core/site_scons/boards/discovery.py b/core/site_scons/boards/discovery.py index 89c1be6d35..f06b4126ed 100644 --- a/core/site_scons/boards/discovery.py +++ b/core/site_scons/boards/discovery.py @@ -36,9 +36,20 @@ def configure( sources += [ "embed/models/model_D001_layout.c", ] - sources += [f"embed/trezorhal/stm32f4/displays/{display}"] - sources += ["embed/trezorhal/stm32f4/displays/ili9341_spi.c"] + + if "new_rendering" in features_wanted: + sources += [ + "embed/trezorhal/xdisplay_legacy.c", + "embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_driver.c", + "embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/display_ltdc.c", + "embed/trezorhal/stm32f4/xdisplay/stm32f429i-disc1/ili9341_spi.c", + ] + else: + sources += [f"embed/trezorhal/stm32f4/displays/{display}"] + sources += ["embed/trezorhal/stm32f4/displays/ili9341_spi.c"] + sources += ["embed/trezorhal/stm32f4/dma2d.c"] + sources += ["embed/trezorhal/stm32f4/dma2d_bitblt.c"] sources += [ "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c" ] @@ -51,6 +62,11 @@ def configure( features_available.append("dma2d") features_available.append("framebuffer") + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER"] + features_available.append("xframebuffer") + features_available.append("display_rgb565") + if "input" in features_wanted: sources += ["embed/trezorhal/stm32f4/i2c.c"] sources += ["embed/trezorhal/stm32f4/touch/stmpe811.c"] diff --git a/core/site_scons/boards/discovery2.py b/core/site_scons/boards/discovery2.py index 9f0741563a..fa9edeb4b5 100644 --- a/core/site_scons/boards/discovery2.py +++ b/core/site_scons/boards/discovery2.py @@ -43,9 +43,18 @@ def configure( sources += [ "embed/models/model_D002_layout.c", ] - sources += [ - f"embed/trezorhal/stm32u5/displays/{display}", - ] + + if "new_rendering" in features_wanted: + sources += [ + "embed/trezorhal/xdisplay_legacy.c", + "embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_driver.c", + "embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_fb.c", + "embed/trezorhal/stm32u5/xdisplay/stm32u5a9j-dk/display_ltdc_dsi.c", + ] + else: + sources += [ + f"embed/trezorhal/stm32u5/displays/{display}", + ] if "input" in features_wanted: sources += [ @@ -85,6 +94,7 @@ def configure( defines += ["USE_DMA2D", "FRAMEBUFFER", "FRAMEBUFFER32BIT"] sources += [ "embed/trezorhal/stm32u5/dma2d.c", + "embed/trezorhal/stm32u5/dma2d_bitblt.c", ] features_available.append("dma2d") features_available.append("framebuffer") @@ -95,4 +105,10 @@ def configure( defs = env.get("CPPDEFINES_IMPLICIT") defs += ["__ARM_FEATURE_CMSE=3"] + rust_defs = env.get("ENV")["RUST_INCLUDES"] + rust_defs += "-DFRAMEBUFFER;" + if "new_rendering" in features_wanted: + rust_defs += "-DXFRAMEBUFFER;" + env.get("ENV")["RUST_INCLUDES"] = rust_defs + return features_available diff --git a/core/site_scons/boards/trezor_r_v10.py b/core/site_scons/boards/trezor_r_v10.py index 3489aafa92..96be803d47 100644 --- a/core/site_scons/boards/trezor_r_v10.py +++ b/core/site_scons/boards/trezor_r_v10.py @@ -17,6 +17,11 @@ def configure( board = "trezor_r_v10.h" display = "vg-2864ksweg01.c" + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER"] + features_available.append("xframebuffer") + features_available.append("display_mono") + mcu = "STM32F427xx" stm32f4_common_files(env, defines, sources, paths) @@ -36,7 +41,12 @@ def configure( sources += [ "embed/models/model_T2B1_layout.c", ] - sources += [f"embed/trezorhal/stm32f4/displays/{display}"] + + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/xdisplay_legacy.c"] + sources += ["embed/trezorhal/stm32f4/xdisplay/vg-2864/display_driver.c"] + else: + sources += [f"embed/trezorhal/stm32f4/displays/{display}"] sources += ["embed/trezorhal/stm32f4/i2c.c"] diff --git a/core/site_scons/boards/trezor_r_v3.py b/core/site_scons/boards/trezor_r_v3.py index 86eef17384..15546db251 100644 --- a/core/site_scons/boards/trezor_r_v3.py +++ b/core/site_scons/boards/trezor_r_v3.py @@ -17,6 +17,11 @@ def configure( board = "trezor_r_v3.h" display = "ug-2828tswig01.c" + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER"] + features_available.append("xframebuffer") + features_available.append("display_mono") + mcu = "STM32F427xx" stm32f4_common_files(env, defines, sources, paths) @@ -36,7 +41,12 @@ def configure( sources += [ "embed/models/model_T2B1_layout.c", ] - sources += [f"embed/trezorhal/stm32f4/displays/{display}"] + + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/xdisplay_legacy.c"] + sources += ["embed/trezorhal/stm32f4/xdisplay/ug-2828/display_driver.c"] + else: + sources += [f"embed/trezorhal/stm32f4/displays/{display}"] if "input" in features_wanted: sources += ["embed/trezorhal/stm32f4/button.c"] diff --git a/core/site_scons/boards/trezor_r_v4.py b/core/site_scons/boards/trezor_r_v4.py index f0ce7e39b6..0df0131c63 100644 --- a/core/site_scons/boards/trezor_r_v4.py +++ b/core/site_scons/boards/trezor_r_v4.py @@ -17,6 +17,11 @@ def configure( board = "trezor_r_v4.h" display = "vg-2864ksweg01.c" + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER"] + features_available.append("xframebuffer") + features_available.append("display_mono") + mcu = "STM32F427xx" stm32f4_common_files(env, defines, sources, paths) @@ -36,7 +41,12 @@ def configure( sources += [ "embed/models/model_T2B1_layout.c", ] - sources += [f"embed/trezorhal/stm32f4/displays/{display}"] + + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/xdisplay_legacy.c"] + sources += ["embed/trezorhal/stm32f4/xdisplay/vg-2864/display_driver.c"] + else: + sources += [f"embed/trezorhal/stm32f4/displays/{display}"] if "input" in features_wanted: sources += ["embed/trezorhal/stm32f4/button.c"] diff --git a/core/site_scons/boards/trezor_r_v6.py b/core/site_scons/boards/trezor_r_v6.py index b3f7900710..29a8f2af68 100644 --- a/core/site_scons/boards/trezor_r_v6.py +++ b/core/site_scons/boards/trezor_r_v6.py @@ -17,6 +17,11 @@ def configure( board = "trezor_r_v6.h" display = "vg-2864ksweg01.c" + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER"] + features_available.append("xframebuffer") + features_available.append("display_mono") + mcu = "STM32F427xx" stm32f4_common_files(env, defines, sources, paths) @@ -36,7 +41,12 @@ def configure( sources += [ "embed/models/model_T2B1_layout.c", ] - sources += [f"embed/trezorhal/stm32f4/displays/{display}"] + + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/xdisplay_legacy.c"] + sources += ["embed/trezorhal/stm32f4/xdisplay/vg-2864/display_driver.c"] + else: + sources += [f"embed/trezorhal/stm32f4/displays/{display}"] if "input" in features_wanted: sources += ["embed/trezorhal/stm32f4/button.c"] diff --git a/core/site_scons/boards/trezor_t.py b/core/site_scons/boards/trezor_t.py index c2be10fb79..b038cc356d 100644 --- a/core/site_scons/boards/trezor_t.py +++ b/core/site_scons/boards/trezor_t.py @@ -18,6 +18,9 @@ def configure( hw_revision = 0 features_available.append("disp_i8080_8bit_dw") + if "new_rendering" in features_wanted: + features_available.append("display_rgb565") + mcu = "STM32F427xx" stm32f4_common_files(env, defines, sources, paths) @@ -37,20 +40,41 @@ def configure( sources += [ "embed/models/model_T2T1_layout.c", ] - sources += [f"embed/trezorhal/stm32f4/displays/{display}"] + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/xdisplay_legacy.c"] + sources += ["embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c"] + sources += ["embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c"] + sources += ["embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c"] + sources += ["embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c"] + sources += [ + "embed/trezorhal/stm32f4/xdisplay/st-7789/panels/tf15411a.c", + ] + sources += [ + "embed/trezorhal/stm32f4/xdisplay/st-7789/panels/154a.c", + ] + sources += [ + "embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2411.c", + ] + sources += [ + "embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2422.c", + ] + + else: + sources += [f"embed/trezorhal/stm32f4/displays/{display}"] + sources += [ + "embed/trezorhal/stm32f4/displays/panels/tf15411a.c", + ] + sources += [ + "embed/trezorhal/stm32f4/displays/panels/154a.c", + ] + sources += [ + "embed/trezorhal/stm32f4/displays/panels/lx154a2411.c", + ] + sources += [ + "embed/trezorhal/stm32f4/displays/panels/lx154a2422.c", + ] + sources += ["embed/trezorhal/stm32f4/backlight_pwm.c"] - sources += [ - "embed/trezorhal/stm32f4/displays/panels/tf15411a.c", - ] - sources += [ - "embed/trezorhal/stm32f4/displays/panels/154a.c", - ] - sources += [ - "embed/trezorhal/stm32f4/displays/panels/lx154a2411.c", - ] - sources += [ - "embed/trezorhal/stm32f4/displays/panels/lx154a2422.c", - ] features_available.append("backlight") @@ -87,6 +111,7 @@ def configure( if "dma2d" in features_wanted: defines += ["USE_DMA2D"] sources += ["embed/trezorhal/stm32f4/dma2d.c"] + sources += ["embed/trezorhal/stm32f4/dma2d_bitblt.c"] sources += [ "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c" ] diff --git a/core/site_scons/boards/trezor_t3t1_revE.py b/core/site_scons/boards/trezor_t3t1_revE.py index a15436263a..e422eac2df 100644 --- a/core/site_scons/boards/trezor_t3t1_revE.py +++ b/core/site_scons/boards/trezor_t3t1_revE.py @@ -20,6 +20,11 @@ def configure( features_available.append("framebuffer") defines += ["FRAMEBUFFER"] + if "new_rendering" in features_wanted: + features_available.append("xframebuffer") + features_available.append("display_rgb565") + defines += ["XFRAMEBUFFER"] + mcu = "STM32U585xx" linker_script = "stm32u58" @@ -40,11 +45,23 @@ def configure( sources += [ "embed/models/model_T3T1_layout.c", ] - sources += [f"embed/trezorhal/stm32u5/displays/{display}"] + + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/xdisplay_legacy.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_fb.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_driver.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_io.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_panel.c"] + sources += [ + "embed/trezorhal/stm32u5/xdisplay/st-7789/panels/lx154a2422.c", + ] + else: + sources += [f"embed/trezorhal/stm32u5/displays/{display}"] + sources += [ + "embed/trezorhal/stm32u5/displays/panels/lx154a2422.c", + ] + sources += ["embed/trezorhal/stm32u5/backlight_pwm.c"] - sources += [ - "embed/trezorhal/stm32u5/displays/panels/lx154a2422.c", - ] env_constraints = env.get("CONSTRAINTS") if not (env_constraints and "limited_util_s" in env_constraints): @@ -94,6 +111,7 @@ def configure( if "dma2d" in features_wanted: defines += ["USE_DMA2D"] sources += ["embed/trezorhal/stm32u5/dma2d.c"] + sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] features_available.append("dma2d") if "optiga" in features_wanted: diff --git a/core/site_scons/boards/trezor_t3t1_v4.py b/core/site_scons/boards/trezor_t3t1_v4.py index c98376589d..e9e169cfa1 100644 --- a/core/site_scons/boards/trezor_t3t1_v4.py +++ b/core/site_scons/boards/trezor_t3t1_v4.py @@ -20,6 +20,11 @@ def configure( features_available.append("framebuffer") defines += ["FRAMEBUFFER"] + if "new_rendering" in features_wanted: + features_available.append("xframebuffer") + features_available.append("display_rgb565") + defines += ["XFRAMEBUFFER"] + mcu = "STM32U585xx" linker_script = "stm32u58" @@ -41,10 +46,24 @@ def configure( "embed/models/model_T3T1_layout.c", ] sources += [f"embed/trezorhal/stm32u5/displays/{display}"] + + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/xdisplay_legacy.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_fb.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_driver.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_io.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_panel.c"] + sources += [ + "embed/trezorhal/stm32u5/xdisplay/st-7789/panels/lx154a2422.c", + ] + + else: + sources += [f"embed/trezorhal/stm32u5/displays/{display}"] + sources += [ + "embed/trezorhal/stm32u5/displays/panels/lx154a2422.c", + ] + sources += ["embed/trezorhal/stm32u5/backlight_pwm.c"] - sources += [ - "embed/trezorhal/stm32u5/displays/panels/lx154a2422.c", - ] env_constraints = env.get("CONSTRAINTS") if not (env_constraints and "limited_util_s" in env_constraints): @@ -94,6 +113,7 @@ def configure( if "dma2d" in features_wanted: defines += ["USE_DMA2D"] sources += ["embed/trezorhal/stm32u5/dma2d.c"] + sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] features_available.append("dma2d") if "optiga" in features_wanted: From 5d8a7ac5bfee3b0e51baacfbc1ca4a531504358f Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Tue, 16 Apr 2024 15:53:13 +0200 Subject: [PATCH 055/626] feat(core): introduce new drawing library [no changelog] --- core/embed/rust/Cargo.lock | 37 + core/embed/rust/Cargo.toml | 15 +- core/embed/rust/build.rs | 31 + core/embed/rust/src/io.rs | 126 +++ core/embed/rust/src/trezorhal/bitblt.rs | 445 ++++++++++ core/embed/rust/src/trezorhal/display.rs | 20 +- core/embed/rust/src/trezorhal/mod.rs | 3 + core/embed/rust/src/trezorhal/uzlib.rs | 176 +++- core/embed/rust/src/ui/display/color.rs | 2 +- core/embed/rust/src/ui/display/font.rs | 52 +- core/embed/rust/src/ui/display/image.rs | 225 +++++ core/embed/rust/src/ui/display/mod.rs | 1 + core/embed/rust/src/ui/display/toif.rs | 4 + core/embed/rust/src/ui/geometry.rs | 3 + core/embed/rust/src/ui/mod.rs | 1 + core/embed/rust/src/ui/shape/bar.rs | 128 +++ core/embed/rust/src/ui/shape/base.rs | 52 ++ core/embed/rust/src/ui/shape/bitmap.rs | 360 ++++++++ core/embed/rust/src/ui/shape/blur.rs | 45 + .../rust/src/ui/shape/cache/blur_cache.rs | 61 ++ .../rust/src/ui/shape/cache/drawing_cache.rs | 130 +++ .../rust/src/ui/shape/cache/jpeg_cache.rs | 333 +++++++ core/embed/rust/src/ui/shape/cache/mod.rs | 7 + .../rust/src/ui/shape/cache/zlib_cache.rs | 188 ++++ core/embed/rust/src/ui/shape/canvas/common.rs | 828 ++++++++++++++++++ core/embed/rust/src/ui/shape/canvas/mod.rs | 11 + core/embed/rust/src/ui/shape/canvas/mono8.rs | 114 +++ core/embed/rust/src/ui/shape/canvas/rgb565.rs | 137 +++ .../rust/src/ui/shape/canvas/rgba8888.rs | 128 +++ .../rust/src/ui/shape/canvas/viewport.rs | 103 +++ core/embed/rust/src/ui/shape/circle.rs | 139 +++ .../rust/src/ui/shape/display/fake_display.rs | 11 + .../rust/src/ui/shape/display/fb_mono8.rs | 55 ++ .../rust/src/ui/shape/display/fb_rgb565.rs | 62 ++ .../rust/src/ui/shape/display/fb_rgba8888.rs | 62 ++ .../embed/rust/src/ui/shape/display/memory.md | 58 ++ core/embed/rust/src/ui/shape/display/mod.rs | 40 + .../rust/src/ui/shape/display/nofb_rgb565.rs | 107 +++ .../ui/shape/drawlib-rust-objects.drawio.svg | 4 + .../ui/shape/drawlib-toplevel-arch.drawio.svg | 4 + core/embed/rust/src/ui/shape/jpeg.rs | 216 +++++ core/embed/rust/src/ui/shape/mod.rs | 33 + core/embed/rust/src/ui/shape/qrcode.rs | 169 ++++ core/embed/rust/src/ui/shape/render.rs | 254 ++++++ core/embed/rust/src/ui/shape/text.rs | 134 +++ core/embed/rust/src/ui/shape/toif.rs | 198 +++++ core/embed/rust/src/ui/shape/utils/blur.rs | 357 ++++++++ core/embed/rust/src/ui/shape/utils/circle.rs | 76 ++ core/embed/rust/src/ui/shape/utils/line.rs | 94 ++ core/embed/rust/src/ui/shape/utils/mod.rs | 9 + core/embed/rust/src/ui/shape/utils/trigo.rs | 29 + vendor/micropython | 2 +- 52 files changed, 5864 insertions(+), 15 deletions(-) create mode 100644 core/embed/rust/src/trezorhal/bitblt.rs create mode 100644 core/embed/rust/src/ui/display/image.rs create mode 100644 core/embed/rust/src/ui/shape/bar.rs create mode 100644 core/embed/rust/src/ui/shape/base.rs create mode 100644 core/embed/rust/src/ui/shape/bitmap.rs create mode 100644 core/embed/rust/src/ui/shape/blur.rs create mode 100644 core/embed/rust/src/ui/shape/cache/blur_cache.rs create mode 100644 core/embed/rust/src/ui/shape/cache/drawing_cache.rs create mode 100644 core/embed/rust/src/ui/shape/cache/jpeg_cache.rs create mode 100644 core/embed/rust/src/ui/shape/cache/mod.rs create mode 100644 core/embed/rust/src/ui/shape/cache/zlib_cache.rs create mode 100644 core/embed/rust/src/ui/shape/canvas/common.rs create mode 100644 core/embed/rust/src/ui/shape/canvas/mod.rs create mode 100644 core/embed/rust/src/ui/shape/canvas/mono8.rs create mode 100644 core/embed/rust/src/ui/shape/canvas/rgb565.rs create mode 100644 core/embed/rust/src/ui/shape/canvas/rgba8888.rs create mode 100644 core/embed/rust/src/ui/shape/canvas/viewport.rs create mode 100644 core/embed/rust/src/ui/shape/circle.rs create mode 100644 core/embed/rust/src/ui/shape/display/fake_display.rs create mode 100644 core/embed/rust/src/ui/shape/display/fb_mono8.rs create mode 100644 core/embed/rust/src/ui/shape/display/fb_rgb565.rs create mode 100644 core/embed/rust/src/ui/shape/display/fb_rgba8888.rs create mode 100644 core/embed/rust/src/ui/shape/display/memory.md create mode 100644 core/embed/rust/src/ui/shape/display/mod.rs create mode 100644 core/embed/rust/src/ui/shape/display/nofb_rgb565.rs create mode 100644 core/embed/rust/src/ui/shape/drawlib-rust-objects.drawio.svg create mode 100644 core/embed/rust/src/ui/shape/drawlib-toplevel-arch.drawio.svg create mode 100644 core/embed/rust/src/ui/shape/jpeg.rs create mode 100644 core/embed/rust/src/ui/shape/mod.rs create mode 100644 core/embed/rust/src/ui/shape/qrcode.rs create mode 100644 core/embed/rust/src/ui/shape/render.rs create mode 100644 core/embed/rust/src/ui/shape/text.rs create mode 100644 core/embed/rust/src/ui/shape/toif.rs create mode 100644 core/embed/rust/src/ui/shape/utils/blur.rs create mode 100644 core/embed/rust/src/ui/shape/utils/circle.rs create mode 100644 core/embed/rust/src/ui/shape/utils/line.rs create mode 100644 core/embed/rust/src/ui/shape/utils/mod.rs create mode 100644 core/embed/rust/src/ui/shape/utils/trigo.rs diff --git a/core/embed/rust/Cargo.lock b/core/embed/rust/Cargo.lock index 9cbd4f8285..c2149e641a 100644 --- a/core/embed/rust/Cargo.lock +++ b/core/embed/rust/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "alloc-traits" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b2d54853319fd101b8dd81de382bcbf3e03410a64d8928bbee85a3e7dcde483" + [[package]] name = "autocfg" version = "1.1.0" @@ -279,6 +285,15 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "static-alloc" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "570b7e840addf99f80c5b26abba410e21537002316fc82f2747fd87c171e9d7e" +dependencies = [ + "alloc-traits", +] + [[package]] name = "syn" version = "1.0.80" @@ -309,8 +324,11 @@ dependencies = [ "qrcodegen", "serde_json", "spin", + "static-alloc", "trezor-tjpgdec", "ufmt", + "unsize", + "without-alloc", "zeroize", ] @@ -347,6 +365,15 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "unsize" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa7a7a734c1a5664a662ddcea0b6c9472a21da8888c957c7f1eaa09dba7a939" +dependencies = [ + "autocfg", +] + [[package]] name = "winapi" version = "0.3.9" @@ -369,6 +396,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "without-alloc" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375db0478b203b950ef10d1cce23cdbe5f30c2454fd9e7673ff56656df23adbb" +dependencies = [ + "alloc-traits", + "unsize", +] + [[package]] name = "zeroize" version = "1.7.0" diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 6454358e8e..21a2f1038c 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -17,8 +17,8 @@ ui = [] dma2d = [] xframebuffer = [] display_mono = [] -display_rgb565 = [] -display_rgba8888 = [] +display_rgb565 = ["ui_antialiasing"] +display_rgba8888 = ["ui_antialiasing"] framebuffer = [] framebuffer32bit = [] ui_debug = [] @@ -52,6 +52,8 @@ test = [ "micropython", "protobuf", "ui", + "ui_jpeg_decoder", + "ui_blurring", "dma2d", "touch", "backlight", @@ -113,6 +115,15 @@ version = "0.2.6" default-features = false features = ["nightly"] +[dependencies.static-alloc] +version = "0.2.4" + +[dependencies.without-alloc] +version = "0.2.2" + +[dependencies.unsize] +version = "1.1.0" + # Build dependencies [build-dependencies.bindgen] diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index edc8d983c1..dcbeccfa5d 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -77,6 +77,16 @@ fn prepare_bindings() -> bindgen::Builder { clang_args.push(arg); } + #[cfg(feature = "xframebuffer")] + { + bindings = bindings.clang_args(&["-DXFRAMEBUFFER"]); + } + + #[cfg(feature = "new_rendering")] + { + bindings = bindings.clang_args(["-DNEW_RENDERING"]); + } + // Pass in correct include paths and defines. if is_firmware() { clang_args.push("-nostdinc"); @@ -289,6 +299,27 @@ fn generate_trezorhal_bindings() { .allowlist_var("DISPLAY_FRAMEBUFFER_OFFSET_Y") .allowlist_var("DISPLAY_RESX") .allowlist_var("DISPLAY_RESY") + .allowlist_type("display_fb_info_t") + .allowlist_function("display_get_frame_buffer") + .allowlist_function("display_fill") + .allowlist_function("display_copy_rgb565") + // gfx_bitblt + .allowlist_type("gfx_bitblt_t") + .allowlist_function("gfx_rgb565_fill") + .allowlist_function("gfx_rgb565_copy_mono4") + .allowlist_function("gfx_rgb565_copy_rgb565") + .allowlist_function("gfx_rgb565_blend_mono4") + .allowlist_function("gfx_rgba8888_fill") + .allowlist_function("gfx_rgba8888_copy_mono4") + .allowlist_function("gfx_rgba8888_copy_rgb565") + .allowlist_function("gfx_rgba8888_copy_rgba8888") + .allowlist_function("gfx_rgba8888_blend_mono4") + .allowlist_function("gfx_mono8_fill") + .allowlist_function("gfx_mono8_copy_mono1p") + .allowlist_function("gfx_mono8_copy_mono4") + .allowlist_function("gfx_mono8_blend_mono1p") + .allowlist_function("gfx_mono8_blend_mono4") + .allowlist_function("dma2d_wait") // fonts .allowlist_function("font_height") .allowlist_function("font_max_height") diff --git a/core/embed/rust/src/io.rs b/core/embed/rust/src/io.rs index dbef3552e7..a137955dbf 100644 --- a/core/embed/rust/src/io.rs +++ b/core/embed/rust/src/io.rs @@ -1,5 +1,8 @@ use crate::error::Error; +#[cfg(feature = "micropython")] +use crate::micropython::{buffer::get_buffer, gc::Gc, obj::Obj}; + pub struct InputStream<'a> { buf: &'a [u8], pos: usize, @@ -69,3 +72,126 @@ impl<'a> InputStream<'a> { Ok(uint) } } + +#[derive(Copy, Clone)] +pub enum BinaryData<'a> { + Slice(&'a [u8]), + #[cfg(feature = "micropython")] + Object(Obj), + #[cfg(feature = "micropython")] + AllocatedSlice(Gc<[u8]>), +} + +impl<'a> BinaryData<'a> { + /// Returns `true` if the binary data is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns a reference to the binary data. + /// + /// This function is used just in the `paint()` functions in + /// UI components, that are going to be deleted after adopting new + /// drawing library for models T and TS3. Do not use this function in new + /// code. + /// + /// # Safety + /// The caller must ensure that the returned slice is not modified by + /// MicroPython. This means (a) discarding the slice before returning + /// to Python, and (b) being careful about calling into Python while + /// the slice is held. + pub unsafe fn data(&self) -> &[u8] { + match self { + Self::Slice(data) => data, + // SAFETY: We expect no existing mutable reference. See safety + // note above. + #[cfg(feature = "micropython")] + Self::Object(obj) => unsafe { unwrap!(get_buffer(*obj)) }, + #[cfg(feature = "micropython")] + Self::AllocatedSlice(data) => data, + } + } + + /// Returns the length of the binary data in bytes. + pub fn len(&self) -> usize { + match self { + Self::Slice(data) => data.len(), + #[cfg(feature = "micropython")] + // SAFETY: We expect no existing mutable reference. + Self::Object(obj) => unsafe { unwrap!(get_buffer(*obj)).len() }, + #[cfg(feature = "micropython")] + Self::AllocatedSlice(data) => data.len(), + } + } + + /// Reads binary data from the source into the buffer. + /// - 'ofs' is the offset in bytes from the start of the binary data. + /// - 'buff' is the buffer to read the data into. + /// + /// Returns the number of bytes read. + pub fn read(&self, ofs: usize, buff: &mut [u8]) -> usize { + match self { + Self::Slice(data) => { + let remaining = data.len().saturating_sub(ofs); + let size = buff.len().min(remaining); + buff[..size].copy_from_slice(&data[ofs..ofs + size]); + size + } + + // SAFETY: We expect no existing mutable reference to `obj`. + #[cfg(feature = "micropython")] + Self::Object(obj) => { + let data = unsafe { unwrap!(get_buffer(*obj)) }; + let remaining = data.len().saturating_sub(ofs); + let size = buff.len().min(remaining); + buff[..size].copy_from_slice(&data[ofs..ofs + size]); + size + } + + #[cfg(feature = "micropython")] + Self::AllocatedSlice(data) => { + let remaining = data.len().saturating_sub(ofs); + let size = buff.len().min(remaining); + buff[..size].copy_from_slice(&data[ofs..ofs + size]); + size + } + } + } +} + +impl<'a> PartialEq for BinaryData<'a> { + fn eq(&self, other: &Self) -> bool { + match (self, other) { + (Self::Slice(a), Self::Slice(b)) => a.as_ptr() == b.as_ptr() && a.len() == b.len(), + #[cfg(feature = "micropython")] + (Self::Object(a), Self::Object(b)) => a == b, + #[cfg(feature = "micropython")] + _ => false, + } + } +} + +#[cfg(feature = "micropython")] +impl From<Gc<[u8]>> for BinaryData<'static> { + fn from(data: Gc<[u8]>) -> Self { + Self::AllocatedSlice(data) + } +} + +#[cfg(feature = "micropython")] +impl TryFrom<Obj> for BinaryData<'static> { + type Error = Error; + + fn try_from(obj: Obj) -> Result<Self, Self::Error> { + if !obj.is_bytes() { + return Err(Error::TypeError); + } + Ok(Self::Object(obj)) + } +} + +impl<'a> From<&'a [u8]> for BinaryData<'a> { + fn from(data: &'a [u8]) -> Self { + Self::Slice(data) + } +} diff --git a/core/embed/rust/src/trezorhal/bitblt.rs b/core/embed/rust/src/trezorhal/bitblt.rs new file mode 100644 index 0000000000..f5b6a2dd9c --- /dev/null +++ b/core/embed/rust/src/trezorhal/bitblt.rs @@ -0,0 +1,445 @@ +use super::ffi; + +use crate::ui::{ + display::Color, + geometry::Rect, + shape::{Bitmap, BitmapFormat, BitmapView}, +}; + +/// Waits for the DMA2D peripheral transfer to complete. +pub fn wait_for_transfer() { + // SAFETY: + // `ffi::dma2d_wait()` is always safe to call. + #[cfg(feature = "dma2d")] + unsafe { + ffi::dma2d_wait() + } +} + +impl Default for ffi::gfx_bitblt_t { + fn default() -> Self { + Self { + width: 0, + height: 0, + dst_row: core::ptr::null_mut(), + dst_stride: 0, + dst_x: 0, + dst_y: 0, + src_row: core::ptr::null_mut(), + src_bg: 0, + src_fg: 0, + src_stride: 0, + src_x: 0, + src_y: 0, + src_alpha: 255, + } + } +} + +// This is very private interface (almost completely unsafe) to +// preparing a `gfx_bitblt_t` structure for the bitblt operations. +impl ffi::gfx_bitblt_t { + /// Sets the destination bitmap pointer and stride. + /// + /// # SAFETY + /// 1) Ensure that caller holds mutable reference to the destination bitmap + /// until the `gfx_bitblt_t` is dropped. + unsafe fn with_dst(self, dst: &mut Bitmap) -> Self { + // This ensures that the destination rectangle is + // completely inside the destination bitmap + assert!(dst.width() as u16 >= self.dst_x + self.width); + assert!(dst.height() as u16 >= self.dst_y + self.height); + + Self { + // SAFETY: + // Lines between `dst_y` and`dst_y + height` are inside + // the destination bitmap. See asserts above. + dst_row: unsafe { dst.row_ptr(self.dst_y) }, + dst_stride: dst.stride() as u16, + ..self + } + } + + /// Sets the coordinates of the destination rectangle inside the destination + /// bitmap. + /// + /// # SAFETY + /// 1) Ensure that the rectangle is completely inside the destination + /// bitmap. + /// 2) If the copy or blend operation is used, ensure that the rectangle + /// is completely filled with source bitmap or its part. + unsafe fn with_rect(self, r: Rect) -> Self { + Self { + width: r.width() as u16, + height: r.height() as u16, + dst_x: r.x0 as u16, + dst_y: r.y0 as u16, + ..self + } + } + + /// Sets the source bitmap + /// + /// `x` and `y` specifies offset inside the source bitmap + /// + /// # SAFETY + /// 1) Ensure that `x` and `y` are inside the source bitmap. + /// 2) Source bitmap complete covers destination rectangle. + /// 3) Ensure that caller holds immutable reference to the source bitmap. + /// until the `gfx_bitblt_t` is dropped. + unsafe fn with_src(self, bitmap: &Bitmap, x: i16, y: i16) -> Self { + let bitmap_stride = match bitmap.format() { + BitmapFormat::MONO1P => bitmap.width() as u16, // packed bits + _ => bitmap.stride() as u16, + }; + + Self { + // SAFETY: + // It's safe if `y` is inside the bitmap (see note above) + src_row: unsafe { bitmap.row_ptr(y as u16) }, + src_stride: bitmap_stride, + src_x: x as u16, + src_y: y as u16, + ..self + } + } + + /// Sets foreground color used for rectangle filling or + /// drawing monochrome bitmaps. + fn with_fg(self, fg_color: Color) -> Self { + Self { + src_fg: fg_color.into(), + ..self + } + } + + /// Sets foreground color used for drawing monochrome bitmaps. + fn with_bg(self, bg_color: Color) -> Self { + Self { + src_bg: bg_color.into(), + ..self + } + } + + /// Sets the foreground alpha value used for rectangle filling or + /// bitmap blending. + fn with_alpha(self, alpha: u8) -> Self { + Self { + src_alpha: alpha, + ..self + } + } +} + +/// Rectangle filling operation. +pub struct BitBltFill { + bitblt: ffi::gfx_bitblt_t, +} + +impl BitBltFill { + /// Prepares bitblt **fill** operation + /// + /// - `r` is the rectangle to fill. + /// - `clip` is the clipping rectangle and must be completely inside the + /// destination bitmap. + /// - `color` is the color to fill the rectangle with. + /// - `alpha` is the alpha value to use for blending. + /// + /// The function ensures proper clipping and returns `None` if the fill + /// operation is not needed. + pub fn new(r: Rect, clip: Rect, color: Color, alpha: u8) -> Option<Self> { + let r = r.clamp(clip); + if !r.is_empty() { + Some(Self { + // SAFETY: + // The only unsafe operation is `.with_rect()`, which is safe + // as long as the rectangle is completely inside the destination bitmap. + // We will set the destination bitmap later, so at the moment the + // rectangle cannot be out of bounds. + bitblt: unsafe { + ffi::gfx_bitblt_t::default() + .with_rect(r) + .with_fg(color) + .with_alpha(alpha) + }, + }) + } else { + None + } + } + + /// Fills a rectangle in the destination bitmap with the specified color. + /// + /// Destination bitmap must be in RGB565 format + pub fn rgb565_fill(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::RGB565); + // SAFETY: + // - The destination bitmap is in the correct format. + // - The destination rectangle is completely inside the destination bitmap. + unsafe { ffi::gfx_rgb565_fill(&self.bitblt.with_dst(dst)) }; + dst.mark_dma_pending(); + } + + /// Fills a rectangle in the destination bitmap with the specified color. + /// + /// The destination bitmap is in the RGBA8888 format. + pub fn rgba8888_fill(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::RGBA8888); + // SAFETY: + // - The destination bitmap is in the correct format. + // - The destination rectangle is completely inside the destination bitmap. + unsafe { ffi::gfx_rgba8888_fill(&self.bitblt.with_dst(dst)) }; + dst.mark_dma_pending(); + } + + /// Fills a rectangle in the destination bitmap with the specified color. + /// + /// The destination bitmap is in the MONO8 format. + pub fn mono8_fill(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::MONO8); + // SAFETY: + // - The destination bitmap is in the correct format. + // - The destination rectangle is completely inside the destination bitmap. + unsafe { ffi::gfx_mono8_fill(&self.bitblt.with_dst(dst)) }; + dst.mark_dma_pending(); + } + + /// Fills a rectangle on the display with the specified color. + #[cfg(all(not(feature = "xframebuffer"), feature = "new_rendering"))] + pub fn display_fill(&self) { + assert!(self.bitblt.dst_x + self.bitblt.width <= ffi::DISPLAY_RESX as u16); + assert!(self.bitblt.dst_y + self.bitblt.height <= ffi::DISPLAY_RESY as u16); + // SAFETY: + // - The destination rectangle is completely inside the display. + unsafe { ffi::display_fill(&self.bitblt) }; + } +} + +/// Rectangle copying or blending operation. +pub struct BitBltCopy<'a> { + bitblt: ffi::gfx_bitblt_t, + src: &'a BitmapView<'a>, +} + +impl<'a> BitBltCopy<'a> { + /// Prepares `BitBltCopy` structure for copying or blending a part of the + /// source bitmap to the destination bitmap or display. + /// + /// - `r` is the rectangle in the destination bitmap. + /// - `clip` is the clipping rectangle and must be completely inside the + /// destination bitmap. + /// - `src` represents the source bitmap. + /// + /// The function ensures proper clipping and returns `None` if the copy + /// operation is not needed. + pub fn new(r: Rect, clip: Rect, src: &'a BitmapView) -> Option<Self> { + let mut offset = src.offset; + let mut r_dst = r; + + // Normalize negative x & y-offset of the bitmap + if offset.x < 0 { + r_dst.x0 -= offset.x; + offset.x = 0; + } + + if offset.y < 0 { + r_dst.y0 -= offset.y; + offset.y = 0; + } + + // Clip with the canvas viewport + let mut r = r_dst.clamp(clip); + + // Clip with the bitmap top-left + if r.x0 > r_dst.x0 { + offset.x += r.x0 - r_dst.x0; + } + + if r.y0 > r_dst.y0 { + offset.y += r.y0 - r_dst.y0; + } + + // Clip with the bitmap size + r.x1 = r.x1.min(r.x0 + src.size().x - offset.x); + r.y1 = r.y1.min(r.y0 + src.size().y - offset.y); + + if !r.is_empty() { + Some(Self { + // SAFETY: + // The only unsafe operations are `.with_rect()` and `.with_src()`: + // - There is currently no set destination so the destination rectangle can't be out + // of bounds + // - The `x`, `y` offsets are within the source bitmap, as ensured by the preceding + // code. + // - The source bitmap completely covers the destination rectangle, which is also + // ensured by the preceding code. + // - We hold a immutable reference to the source bitmap in the `BitBltCopy` + // structure. + bitblt: unsafe { + ffi::gfx_bitblt_t::default() + .with_rect(r) + .with_src(src.bitmap, offset.x, offset.y) + .with_bg(src.bg_color) + .with_fg(src.fg_color) + }, + src, + }) + } else { + None + } + } + + /// Copies a part of the source bitmap to the destination bitmap in RGB565 + /// format. + pub fn rgb565_copy(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::RGB565); + + // SAFETY: + // - The destination and source bitmaps are in the correct formats. + // - Source and destination coordinates are properly clipped + // - The DMA pending flag is set for both bitmaps after operations. + unsafe { + let bitblt = self.bitblt.with_dst(dst); + match self.src.format() { + BitmapFormat::MONO4 => ffi::gfx_rgb565_copy_mono4(&bitblt), + BitmapFormat::RGB565 => ffi::gfx_rgb565_copy_rgb565(&bitblt), + _ => unimplemented!(), + } + } + + self.src.bitmap.mark_dma_pending(); + dst.mark_dma_pending(); + } + + /// Blends a part of the source bitmap with the destination bitmap in RGB565 + /// format. + pub fn rgb565_blend(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::RGB565); + + // SAFETY: + // - The destination and source bitmaps are in the correct formats. + // - Source and destination coordinates are properly clipped + // - The DMA pending flag is set for both bitmaps after operations. + unsafe { + let bitblt = self.bitblt.with_dst(dst); + match self.src.format() { + BitmapFormat::MONO4 => ffi::gfx_rgb565_blend_mono4(&bitblt), + _ => unimplemented!(), + } + } + + self.src.bitmap.mark_dma_pending(); + dst.mark_dma_pending(); + } + + /// Copies a part of the source bitmap to the destination bitmap in RGBA8888 + /// format. + pub fn rgba8888_copy(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::RGBA8888); + + // SAFETY: + // - The destination and source bitmaps are in the correct formats. + // - Source and destination coordinates are properly clipped + // - The DMA pending flag is set for both bitmaps after operations. + unsafe { + let bitblt = self.bitblt.with_dst(dst); + match self.src.format() { + BitmapFormat::MONO4 => ffi::gfx_rgba8888_copy_mono4(&bitblt), + BitmapFormat::RGB565 => ffi::gfx_rgba8888_copy_rgb565(&bitblt), + BitmapFormat::RGBA8888 => ffi::gfx_rgba8888_copy_rgba8888(&bitblt), + _ => unimplemented!(), + } + } + + self.src.bitmap.mark_dma_pending(); + dst.mark_dma_pending(); + } + + /// Blends a part of the source bitmap with the destination bitmap in + /// RGBA8888 format. + pub fn rgba8888_blend(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::RGBA8888); + + // SAFETY: + // - The destination and source bitmaps are in the correct formats. + // - Source and destination coordinates are properly clipped + // - The DMA pending flag is set for both bitmaps after operations. + unsafe { + let bitblt = self.bitblt.with_dst(dst); + match self.src.format() { + BitmapFormat::MONO4 => ffi::gfx_rgba8888_blend_mono4(&bitblt), + _ => unimplemented!(), + } + } + + self.src.bitmap.mark_dma_pending(); + dst.mark_dma_pending(); + } + + /// Copies a part of the source bitmap to the destination bitmap in MONO8 + /// format. + pub fn mono8_copy(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::MONO8); + + // SAFETY: + // - The destination and source bitmaps are in the correct formats. + // - Source and destination coordinates are properly clipped + // - The DMA pending flag is set for both bitmaps after operations. + unsafe { + let bitblt = self.bitblt.with_dst(dst); + match self.src.format() { + BitmapFormat::MONO1P => ffi::gfx_mono8_copy_mono1p(&bitblt), + BitmapFormat::MONO4 => ffi::gfx_mono8_copy_mono4(&bitblt), + _ => unimplemented!(), + } + } + + self.src.bitmap.mark_dma_pending(); + dst.mark_dma_pending(); + } + + /// Blends a part of the source bitmap with the destination bitmap in MONO8 + /// format. + pub fn mono8_blend(&self, dst: &mut Bitmap) { + assert!(dst.format() == BitmapFormat::MONO8); + + // SAFETY: + // - The destination and source bitmaps are in the correct formats. + // - Source and destination coordinates are properly clipped + // - The DMA pending flag is set for both bitmaps after operations. + unsafe { + let bitblt = self.bitblt.with_dst(dst); + match self.src.format() { + BitmapFormat::MONO1P => ffi::gfx_mono8_blend_mono1p(&bitblt), + BitmapFormat::MONO4 => ffi::gfx_mono8_blend_mono4(&bitblt), + _ => unimplemented!(), + } + } + + self.src.bitmap.mark_dma_pending(); + dst.mark_dma_pending(); + } + + /// Copies a part of the source bitmap to the display. + /// + /// - The source bitmap uses the RGB565 format. + #[cfg(all(not(feature = "xframebuffer"), feature = "new_rendering"))] + pub fn display_copy(&self) { + assert!(self.bitblt.dst_x + self.bitblt.width <= ffi::DISPLAY_RESX as u16); + assert!(self.bitblt.dst_y + self.bitblt.height <= ffi::DISPLAY_RESY as u16); + + // SAFETY: + // - The source bitmap is in the correct formats. + // - Source and destination coordinates are properly clipped + // - The destination rectangle is completely inside the display. + // - The DMA pending flag is set for src bitmap after operations. + unsafe { + match self.src.format() { + BitmapFormat::RGB565 => ffi::display_copy_rgb565(&self.bitblt), + _ => unimplemented!(), + } + } + + self.src.bitmap.mark_dma_pending(); + } +} diff --git a/core/embed/rust/src/trezorhal/display.rs b/core/embed/rust/src/trezorhal/display.rs index 95a17350be..b2713f695a 100644 --- a/core/embed/rust/src/trezorhal/display.rs +++ b/core/embed/rust/src/trezorhal/display.rs @@ -13,11 +13,11 @@ pub use ffi::{ #[cfg(all(feature = "framebuffer", not(feature = "framebuffer32bit")))] #[derive(Copy, Clone)] -pub struct FrameBuffer(*mut u16); +pub struct FrameBuffer(pub *mut u16); #[cfg(all(feature = "framebuffer", feature = "framebuffer32bit"))] #[derive(Copy, Clone)] -pub struct FrameBuffer(*mut u32); +pub struct FrameBuffer(pub *mut u32); pub fn backlight(val: i32) -> i32 { unsafe { ffi::display_backlight(val) } @@ -98,7 +98,9 @@ pub fn get_fb_addr() -> FrameBuffer { #[inline(always)] #[cfg(all(not(feature = "framebuffer"), feature = "disp_i8080_8bit_dw"))] +#[allow(unused_variables)] pub fn pixeldata(c: u16) { + #[cfg(not(feature = "new_rendering"))] unsafe { ffi::DISPLAY_DATA_ADDRESS.write_volatile((c & 0xff) as u8); ffi::DISPLAY_DATA_ADDRESS.write_volatile((c >> 8) as u8); @@ -178,3 +180,17 @@ pub fn clear() { ffi::display_clear(); } } + +#[cfg(feature = "xframebuffer")] +pub fn get_frame_buffer() -> (&'static mut [u8], usize) { + let fb_info = unsafe { ffi::display_get_frame_buffer() }; + + let fb = unsafe { + core::slice::from_raw_parts_mut( + fb_info.ptr as *mut u8, + DISPLAY_RESY as usize * fb_info.stride, + ) + }; + + (fb, fb_info.stride) +} diff --git a/core/embed/rust/src/trezorhal/mod.rs b/core/embed/rust/src/trezorhal/mod.rs index 39de951510..bab3c62660 100644 --- a/core/embed/rust/src/trezorhal/mod.rs +++ b/core/embed/rust/src/trezorhal/mod.rs @@ -3,12 +3,15 @@ pub mod bip39; #[allow(unused_macros)] pub mod fatal_error; #[cfg(feature = "ui")] +pub mod bitblt; +#[cfg(feature = "ui")] pub mod display; #[cfg(feature = "dma2d")] pub mod dma2d; mod ffi; #[cfg(feature = "haptic")] pub mod haptic; + pub mod io; pub mod model; pub mod random; diff --git a/core/embed/rust/src/trezorhal/uzlib.rs b/core/embed/rust/src/trezorhal/uzlib.rs index bfd3246feb..5ff7f7b4a0 100644 --- a/core/embed/rust/src/trezorhal/uzlib.rs +++ b/core/embed/rust/src/trezorhal/uzlib.rs @@ -1,5 +1,6 @@ use super::ffi; -use core::{marker::PhantomData, mem::MaybeUninit, ptr}; +use crate::io::BinaryData; +use core::{cell::RefCell, marker::PhantomData, mem::MaybeUninit, ptr}; pub const UZLIB_WINDOW_SIZE: usize = 1 << 10; pub use ffi::uzlib_uncomp; @@ -19,7 +20,7 @@ impl<'a> UzlibContext<'a> { pub fn new(src: &'a [u8], window: Option<&'a mut [u8; UZLIB_WINDOW_SIZE]>) -> Self { let mut ctx = Self { uncomp: uzlib_uncomp::default(), - src_data: Default::default(), + src_data: PhantomData, }; unsafe { @@ -55,6 +56,158 @@ impl<'a> UzlibContext<'a> { } } } +} + +struct SourceReadContext<'a> { + /// Compressed data + data: BinaryData<'a>, + /// Ofsset in the compressed data + // (points to the next byte to read) + offset: usize, + /// Internal buffer for reading compressed data + buf: [u8; 128], + buf_head: usize, + buf_tail: usize, +} + +impl<'a> SourceReadContext<'a> { + pub fn new(data: BinaryData<'a>, offset: usize) -> Self { + Self { + data, + offset, + buf: [0; 128], + buf_head: 0, + buf_tail: 0, + } + } + + /// Fill the uncomp struct with the appropriate pointers to the source data + pub fn prepare_uncomp(&self, uncomp: &mut ffi::uzlib_uncomp) { + // SAFETY: the offsets are within the buffer bounds. + // - buf_head is either 0 or advanced by uzlib to at most buf_tail (via + // advance()) + // - buf_tail is at most the buffer size (via reader_callback()) + unsafe { + uncomp.source = self.buf.as_ptr().add(self.buf_head); + uncomp.source_limit = self.buf.as_ptr().add(self.buf_tail); + } + } + + /// Advance the internal buffer after a read operation + /// + /// # Safety + /// + /// The operation is only valid on an uncomp struct that has been filled via + /// `prepare_uncomp` and the source pointer has been updated by the uzlib + /// library after a single uncompress operation. + pub unsafe fn advance(&mut self, uncomp: &ffi::uzlib_uncomp) { + unsafe { + // SAFETY: we trust uzlib to move the `source` pointer only up to `source_limit` + self.buf_head = uncomp.source.offset_from(self.buf.as_ptr()) as usize; + } + } + + /// Implement uzlib reader callback. + /// + /// If the uncomp buffer is exhausted, a callback is invoked that should (a) + /// read one byte of data, and optionally (b) update the uncomp buffer + /// with more data. + pub fn reader_callback(&mut self, uncomp: &mut ffi::uzlib_uncomp) -> Option<u8> { + // fill the internal buffer first + let bytes_read = self.data.read(self.offset, self.buf.as_mut()); + self.buf_head = 0; + self.buf_tail = bytes_read; + // advance total offset + self.offset += bytes_read; + + if bytes_read > 0 { + // "read" one byte + self.buf_head += 1; + // update the uncomp struct + self.prepare_uncomp(uncomp); + // return the first byte read + Some(self.buf[0]) + } else { + // EOF + None + } + } +} + +pub struct ZlibInflate<'a> { + /// Compressed data reader + data: RefCell<SourceReadContext<'a>>, + /// Uzlib context + uncomp: ffi::uzlib_uncomp, + window: PhantomData<&'a [u8]>, +} + +impl<'a> ZlibInflate<'a> { + /// Creates a new `ZlibInflate` instance. + /// - `data` - compressed data + /// - `offset` - initial offset in the compressed data + /// - `window` - window buffer for decompression + pub fn new( + data: BinaryData<'a>, + offset: usize, + window: &'a mut [u8; UZLIB_WINDOW_SIZE], + ) -> Self { + let mut inflate = Self { + data: RefCell::new(SourceReadContext::new(data, offset)), + uncomp: uzlib_uncomp::default(), + window: PhantomData, + }; + + // SAFETY: + // `window` is a valid mutable slice with the size of UZLIB_WINDOW_SIZE + // it remains valid until the `ZlibInflate` instance is dropped + unsafe { + let window_ptr = window.as_mut_ptr() as _; + let window_size = UZLIB_WINDOW_SIZE as u32; + ffi::uzlib_uncompress_init(&mut inflate.uncomp, window_ptr, window_size); + } + + inflate + } + + /// Reads uncompressed data into the destination buffer. + /// Returns `Ok(true)` if all data was read + pub fn read(&mut self, dest: &mut [u8]) -> Result<bool, ()> { + // Fill out source data pointers + self.data.borrow().prepare_uncomp(&mut self.uncomp); + + let res = unsafe { + // Source data callback (used to read more data when source is exhausted) + self.uncomp.source_read_cb = Some(zlib_reader_callback); + // Context for the source data callback + self.uncomp.source_read_cb_context = &self.data as *const _ as *mut cty::c_void; + + // Destination buffer + self.uncomp.dest = dest.as_mut_ptr(); + self.uncomp.dest_limit = self.uncomp.dest.add(dest.len()); + + // SAFETY: + // Even if the `ZlibInflate` instance is moved, the source and context + // pointers are still valid as we set them before calling `uzlib_uncompress` + let res = ffi::uzlib_uncompress(&mut self.uncomp); + + // `uzlib_uncompress` moved self.uncomp.source to the next byte to read + // so we can now update `buf_head` to reflect the new position + // SAFETY: we have just called `uzlib_uncompress` + self.data.borrow_mut().advance(&self.uncomp); + + res + }; + + // Clear the source read callback (just for safety) + self.uncomp.source_read_cb_context = core::ptr::null_mut(); + + match res { + 0 => Ok(false), + 1 => Ok(true), + _ => Err(()), + } + } /// Skips a specified number of bytes (`nbytes`) in the uncompressed stream. /// @@ -65,8 +218,25 @@ impl<'a> UzlibContext<'a> { for i in (0..nbytes).step_by(sink.len()) { let chunk_len = core::cmp::min(sink.len(), nbytes - i); let chunk = &mut sink[0..chunk_len]; - result = self.uncompress(chunk)?; + result = self.read(chunk)?; } Ok(result) } } + +/// This function is called by the uzlib library to read more data from the +/// input stream. +unsafe extern "C" fn zlib_reader_callback(uncomp: *mut ffi::uzlib_uncomp) -> i32 { + // SAFETY: we assume that passed-in uncomp is not null and that we own it + // exclusively (ensured by passing it as &mut into uzlib_uncompress()) + let uncomp = unwrap!(unsafe { uncomp.as_mut() }); + let ctx = uncomp.source_read_cb_context as *const RefCell<SourceReadContext>; + // SAFETY: we assume that ctx is a valid pointer to the refcell holding the + // source data + let mut ctx = unwrap!(unsafe { ctx.as_ref() }).borrow_mut(); + + match ctx.reader_callback(uncomp) { + Some(byte) => byte as i32, + None => -1, // EOF + } +} diff --git a/core/embed/rust/src/ui/display/color.rs b/core/embed/rust/src/ui/display/color.rs index 945eba3ee8..4ad86389ca 100644 --- a/core/embed/rust/src/ui/display/color.rs +++ b/core/embed/rust/src/ui/display/color.rs @@ -98,7 +98,7 @@ impl Color { let r = (fg.r() as u16) * fg_mul + (self.r() as u16) * bg_mul; let g = (fg.g() as u16) * fg_mul + (self.g() as u16) * bg_mul; let b = (fg.b() as u16) * fg_mul + (self.b() as u16) * bg_mul; - Color::rgb((r >> 8) as u8, (g >> 8) as u8, (b >> 8) as u8) + Color::rgb((r / 255) as u8, (g / 255) as u8, (b / 255) as u8) } } diff --git a/core/embed/rust/src/ui/display/font.rs b/core/embed/rust/src/ui/display/font.rs index 220cfe8170..ad94ac9ce7 100644 --- a/core/embed/rust/src/ui/display/font.rs +++ b/core/embed/rust/src/ui/display/font.rs @@ -3,6 +3,7 @@ use crate::{ ui::{ constant, geometry::{Offset, Point, Rect}, + shape::{Bitmap, BitmapFormat}, }, }; use core::slice; @@ -41,12 +42,12 @@ impl Glyph { let width = *data.offset(0) as i16; let height = *data.offset(1) as i16; - let data_bits = constant::FONT_BPP * width * height; - - let data_bytes = if data_bits % 8 == 0 { - data_bits / 8 - } else { - (data_bits / 8) + 1 + let data_bytes = match constant::FONT_BPP { + 1 => (width * height + 7) / 8, // packed bits + 2 => (width * height + 3) / 4, // packed bits + 4 => (width + 1) / 2 * height, // row aligned to bytes + 8 => width * height, + _ => panic!(), }; Glyph { @@ -119,6 +120,26 @@ impl Glyph { _ => 0, } } + + pub fn bitmap(&self) -> Bitmap<'static> { + match constant::FONT_BPP { + 1 => unwrap!(Bitmap::new( + BitmapFormat::MONO1P, + None, + Offset::new(self.width, self.height), + None, + self.data, + )), + 4 => unwrap!(Bitmap::new( + BitmapFormat::MONO4, + None, + Offset::new(self.width, self.height), + None, + self.data, + )), + _ => unimplemented!(), + } + } } /// Font constants. Keep in sync with FONT_ definitions in @@ -243,6 +264,25 @@ impl Font { constant::LINE_SPACE + self.text_height() } + /// Helper functions for **horizontal** text centering. + /// + /// The `text` is centered between `start` and `end`. + /// + /// Returns x-coordinate of the centered text start (including left + /// bearing). + pub fn horz_center(&self, start: i16, end: i16, text: &str) -> i16 { + (start + end - self.visible_text_width(text)) / 2 - self.start_x_bearing(text) + } + + /// Helper functions for **vertical** text centering. + /// + /// The `text` is centered between `start` and `end`. + /// + /// Returns y-coordinate of the centered text baseline. + pub fn vert_center(&self, start: i16, end: i16, text: &str) -> i16 { + (start + end + self.visible_text_height(text)) / 2 + } + pub fn get_glyph(self, ch: char) -> Glyph { let gl_data = display::get_char_glyph(ch as u16, self.into()); diff --git a/core/embed/rust/src/ui/display/image.rs b/core/embed/rust/src/ui/display/image.rs new file mode 100644 index 0000000000..cbca9339d5 --- /dev/null +++ b/core/embed/rust/src/ui/display/image.rs @@ -0,0 +1,225 @@ +use crate::{io::BinaryData, ui::geometry::Offset}; + +impl<'a> BinaryData<'a> { + fn read_u8(&self, ofs: usize) -> Option<u8> { + let mut buff: [u8; 1] = [0; 1]; + if self.read(ofs, buff.as_mut()) == buff.len() { + Some(buff[0]) + } else { + None + } + } + + fn read_u16_le(&self, ofs: usize) -> Option<u16> { + let mut buff: [u8; 2] = [0; 2]; + if self.read(ofs, buff.as_mut()) == buff.len() { + Some(u16::from_le_bytes(buff)) + } else { + None + } + } + + fn read_u16_be(&self, ofs: usize) -> Option<u16> { + let mut buff: [u8; 2] = [0; 2]; + if self.read(ofs, buff.as_mut()) == buff.len() { + Some(u16::from_be_bytes(buff)) + } else { + None + } + } + + fn read_u32_le(&self, ofs: usize) -> Option<u32> { + let mut buff: [u8; 4] = [0; 4]; + if self.read(ofs, buff.as_mut()) == buff.len() { + Some(u32::from_le_bytes(buff)) + } else { + None + } + } +} + +#[derive(PartialEq, Debug, Eq, FromPrimitive, Clone, Copy)] +pub enum ToifFormat { + FullColorBE = 0, // big endian + GrayScaleOH = 1, // odd hi + FullColorLE = 2, // little endian + GrayScaleEH = 3, // even hi +} + +pub struct ToifInfo { + format: ToifFormat, + size: Offset, + len: usize, +} + +impl ToifInfo { + pub const HEADER_LENGTH: usize = 12; + + pub fn parse(image: BinaryData) -> Option<Self> { + if image.read_u8(0)? != b'T' && image.read_u8(1)? != b'O' && image.read_u8(2)? != b'I' { + return None; + } + + let format = match image.read_u8(3)? { + b'f' => ToifFormat::FullColorBE, + b'g' => ToifFormat::GrayScaleOH, + b'F' => ToifFormat::FullColorLE, + b'G' => ToifFormat::GrayScaleEH, + _ => return None, + }; + + let width = image.read_u16_le(4)?; + let height = image.read_u16_le(6)?; + let len = image.read_u32_le(8)? as usize; + + if width > 1024 || height > 1024 || len > 65536 { + return None; + } + + if len + Self::HEADER_LENGTH != image.len() { + return None; + } + + Some(Self { + format, + size: Offset::new(width as i16, height as i16), + len, + }) + } + + pub fn format(&self) -> ToifFormat { + self.format + } + + pub fn size(&self) -> Offset { + self.size + } + + pub fn width(&self) -> i16 { + self.size.x + } + + pub fn height(&self) -> i16 { + self.size.y + } + + pub fn is_grayscale(&self) -> bool { + matches!( + self.format, + ToifFormat::GrayScaleOH | ToifFormat::GrayScaleEH + ) + } + + pub fn stride(&self) -> usize { + if self.is_grayscale() { + (self.width() + 1) as usize / 2 + } else { + self.width() as usize * 2 + } + } +} + +pub struct JpegInfo { + size: Offset, + mcu_height: i16, +} + +impl JpegInfo { + pub fn parse(image: BinaryData) -> Option<Self> { + const M_SOI: u16 = 0xFFD8; + const M_SOF0: u16 = 0xFFC0; + const M_DRI: u16 = 0xFFDD; + const M_RST0: u16 = 0xFFD0; + const M_RST7: u16 = 0xFFD7; + const M_SOS: u16 = 0xFFDA; + const M_EOI: u16 = 0xFFD9; + + let mut result = None; + let mut ofs = 0; + + while image.read_u16_be(ofs)? != M_SOI { + ofs += 1; + } + + loop { + let marker = image.read_u16_be(ofs)?; + + if (marker & 0xFF00) != 0xFF00 { + return None; + } + + ofs += 2; + + ofs += match marker { + M_SOI => 0, + M_SOF0 => { + let w = image.read_u16_be(ofs + 3)? as i16; + let h = image.read_u16_be(ofs + 5)? as i16; + // Number of components + let nc = image.read_u8(ofs + 7)?; + if (nc != 1) && (nc != 3) { + return None; + } + // Sampling factor of the first component + let c1 = image.read_u8(ofs + 9)?; + if (c1 != 0x11) && (c1 != 0x21) & (c1 != 0x22) { + return None; + }; + let mcu_height = (8 * (c1 & 15)) as i16; + + // We now have all the information we need, but + // we will not exit the loop yet until we find the + // M_SOS marker. While this does not ensure absolute + // correctness, it improves the verification slightly. + result = Some(JpegInfo { + size: Offset::new(w, h), + mcu_height, + }); + + image.read_u16_be(ofs)? + } + M_DRI => 4, + M_EOI => return None, + M_RST0..=M_RST7 => 0, + M_SOS => break, + _ => image.read_u16_be(ofs)?, + } as usize; + } + + result + } + + pub fn size(&self) -> Offset { + self.size + } + + pub fn width(&self) -> i16 { + self.size.x + } + + pub fn height(&self) -> i16 { + self.size.y + } + + pub fn mcu_height(&self) -> i16 { + self.mcu_height + } +} + +pub enum ImageInfo { + Invalid, + Toif(ToifInfo), + Jpeg(JpegInfo), +} + +impl ImageInfo { + pub fn parse(image: BinaryData) -> Self { + if let Some(info) = ToifInfo::parse(image) { + Self::Toif(info) + } else if let Some(info) = JpegInfo::parse(image) { + Self::Jpeg(info) + } else { + Self::Invalid + } + } +} diff --git a/core/embed/rust/src/ui/display/mod.rs b/core/embed/rust/src/ui/display/mod.rs index 4ee411e887..e95fb11bbf 100644 --- a/core/embed/rust/src/ui/display/mod.rs +++ b/core/embed/rust/src/ui/display/mod.rs @@ -1,5 +1,6 @@ pub mod color; pub mod font; +pub mod image; pub mod loader; #[cfg(feature = "jpeg")] pub mod tjpgd; diff --git a/core/embed/rust/src/ui/display/toif.rs b/core/embed/rust/src/ui/display/toif.rs index 150394573b..bdcf9f6b61 100644 --- a/core/embed/rust/src/ui/display/toif.rs +++ b/core/embed/rust/src/ui/display/toif.rs @@ -271,6 +271,10 @@ impl<'i> Toif<'i> { &self.data[TOIF_HEADER_LENGTH..] } + pub fn original_data(&self) -> &'i [u8] { + self.data + } + pub fn uncompress(&self, dest: &mut [u8]) { let mut ctx = self.decompression_context(None); unwrap!(ctx.uncompress(dest)); diff --git a/core/embed/rust/src/ui/geometry.rs b/core/embed/rust/src/ui/geometry.rs index d73702340a..a5a7d8a2bb 100644 --- a/core/embed/rust/src/ui/geometry.rs +++ b/core/embed/rust/src/ui/geometry.rs @@ -545,6 +545,7 @@ pub enum Alignment { End, } +#[derive(Copy, Clone)] pub struct Alignment2D(pub Alignment, pub Alignment); impl Alignment2D { @@ -552,6 +553,8 @@ impl Alignment2D { pub const TOP_RIGHT: Alignment2D = Alignment2D(Alignment::End, Alignment::Start); pub const TOP_CENTER: Alignment2D = Alignment2D(Alignment::Center, Alignment::Start); pub const CENTER: Alignment2D = Alignment2D(Alignment::Center, Alignment::Center); + pub const CENTER_LEFT: Alignment2D = Alignment2D(Alignment::Start, Alignment::Center); + pub const CENTER_RIGHT: Alignment2D = Alignment2D(Alignment::End, Alignment::Center); pub const BOTTOM_LEFT: Alignment2D = Alignment2D(Alignment::Start, Alignment::End); pub const BOTTOM_RIGHT: Alignment2D = Alignment2D(Alignment::End, Alignment::End); pub const BOTTOM_CENTER: Alignment2D = Alignment2D(Alignment::Center, Alignment::End); diff --git a/core/embed/rust/src/ui/mod.rs b/core/embed/rust/src/ui/mod.rs index fd8c51dace..b08f77789c 100644 --- a/core/embed/rust/src/ui/mod.rs +++ b/core/embed/rust/src/ui/mod.rs @@ -8,6 +8,7 @@ pub mod display; pub mod event; pub mod geometry; pub mod lerp; +pub mod shape; #[macro_use] pub mod util; diff --git a/core/embed/rust/src/ui/shape/bar.rs b/core/embed/rust/src/ui/shape/bar.rs new file mode 100644 index 0000000000..97f5d8dc64 --- /dev/null +++ b/core/embed/rust/src/ui/shape/bar.rs @@ -0,0 +1,128 @@ +use crate::ui::{display::Color, geometry::Rect}; + +use super::{Canvas, DrawingCache, Renderer, Shape, ShapeClone}; + +use without_alloc::alloc::LocalAllocLeakExt; + +/// A shape for the rendering variuous type of rectangles. +pub struct Bar { + /// Rectangle position and dimenstion + area: Rect, + /// Foreground color (default None) + fg_color: Option<Color>, + /// Background color (default None) + bg_color: Option<Color>, + /// Thickness (default 0) + thickness: i16, + /// Corner radius (default 0) + radius: i16, + /// Alpha (default 255) + alpha: u8, +} + +impl Bar { + pub fn new(area: Rect) -> Self { + Self { + area, + fg_color: None, + bg_color: None, + thickness: 1, + radius: 0, + alpha: 255, + } + } + + pub fn with_fg(self, fg_color: Color) -> Self { + Self { + fg_color: Some(fg_color), + ..self + } + } + + pub fn with_bg(self, bg_color: Color) -> Self { + Self { + bg_color: Some(bg_color), + ..self + } + } + + pub fn with_radius(self, radius: i16) -> Self { + Self { radius, ..self } + } + + pub fn with_thickness(self, thickness: i16) -> Self { + Self { thickness, ..self } + } + + pub fn with_alpha(self, alpha: u8) -> Self { + Self { alpha, ..self } + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } +} + +impl Shape<'_> for Bar { + fn bounds(&self) -> Rect { + self.area + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache) { + // NOTE: drawing of rounded bars without a background + // is not supported. If we needed it, we would have to + // introduce a new function in RgbCanvas. + + // TODO: panic! in unsupported scenarious + + let th = match self.fg_color { + Some(_) => self.thickness, + None => 0, + }; + + if self.radius == 0 { + if let Some(fg_color) = self.fg_color { + // outline + if th > 0 { + let r = self.area; + canvas.fill_rect(Rect { y1: r.y0 + th, ..r }, fg_color, self.alpha); + canvas.fill_rect(Rect { x1: r.x0 + th, ..r }, fg_color, self.alpha); + canvas.fill_rect(Rect { x0: r.x1 - th, ..r }, fg_color, self.alpha); + canvas.fill_rect(Rect { y0: r.y1 - th, ..r }, fg_color, self.alpha); + } + } + if let Some(bg_color) = self.bg_color { + // background + let bg_r = self.area.shrink(th); + canvas.fill_rect(bg_r, bg_color, self.alpha); + } + } else { + if let Some(fg_color) = self.fg_color { + if th > 0 { + if self.bg_color.is_some() { + canvas.fill_round_rect(self.area, self.radius, fg_color, self.alpha); + } else { + #[cfg(not(feature = "ui_antialiasing"))] + canvas.draw_round_rect(self.area, self.radius, fg_color); + } + } + } + if let Some(bg_color) = self.bg_color { + let bg_r = self.area.shrink(th); + canvas.fill_round_rect(bg_r, self.radius, bg_color, self.alpha); + } + } + } +} + +impl<'s> ShapeClone<'s> for Bar { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape<'s>> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(Bar { ..self })) + } +} diff --git a/core/embed/rust/src/ui/shape/base.rs b/core/embed/rust/src/ui/shape/base.rs new file mode 100644 index 0000000000..f8cbb9aaf9 --- /dev/null +++ b/core/embed/rust/src/ui/shape/base.rs @@ -0,0 +1,52 @@ +use crate::ui::geometry::Rect; + +use super::{Canvas, DrawingCache}; + +use without_alloc::alloc::LocalAllocLeakExt; + +// ========================================================================== +// trait Shape +// ========================================================================== + +/// This trait is used internally by so-called Renderers - +/// `DirectRenderer` & `ProgressiveRederer`. +/// +/// All shapes (like `Bar`, `Text`, `Circle`, ...) that can be rendered +/// must implement `Shape` trait. +/// +/// `Shape` objects may use `DrawingCache` as a scratch-pad memory or for +/// caching expensive calculations results. +pub trait Shape<'s> { + /// Returns the smallest bounding rectangle containing whole parts of the + /// shape. + /// + /// The function is used by renderer for optimization if the shape + /// must be renderer or not. + fn bounds(&self) -> Rect; + + /// Draws shape on the canvas. + fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache<'s>); + + /// The function should release all allocated resources needed + /// for shape drawing. + /// + /// It's called by renderer if the shape's draw() function won't be called + /// anymore. + fn cleanup(&mut self, cache: &DrawingCache<'s>); +} + +// ========================================================================== +// trait ShapeClone +// ========================================================================== + +/// All shapes (like `Bar`, `Text`, `Circle`, ...) that can be rendered +/// by `ProgressiveRender` must implement `ShapeClone`. +pub trait ShapeClone<'s> { + /// Clones a shape object at the specified memory bump. + /// + /// The method is used by `ProgressiveRenderer` to store shape objects for + /// deferred drawing. + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape<'s>> + where + T: LocalAllocLeakExt<'s>; +} diff --git a/core/embed/rust/src/ui/shape/bitmap.rs b/core/embed/rust/src/ui/shape/bitmap.rs new file mode 100644 index 0000000000..2143c8dcc1 --- /dev/null +++ b/core/embed/rust/src/ui/shape/bitmap.rs @@ -0,0 +1,360 @@ +use crate::trezorhal::bitblt; + +use crate::ui::{display::Color, geometry::Offset}; + +use core::{cell::Cell, marker::PhantomData}; + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum BitmapFormat { + /// 1-bit mono + MONO1, + /// 1-bit mono packed (bitmap stride is in bits) + MONO1P, + /// 4-bit mono + MONO4, + /// 8-bit mono + MONO8, + /// 16-bit color, RGB565 format + RGB565, + /// 32-bit color, RGBA format + RGBA8888, +} + +pub struct Bitmap<'a> { + /// Pointer to top-left pixel + ptr: *mut u8, + /// Stride in bytes + stride: usize, + /// Size in pixels + size: Offset, + /// Format of pixels + format: BitmapFormat, + /// Bitmap data is mutable + mutable: bool, + /// DMA operation is pending. + /// + /// If this flag is set, a DMA operation on the pointed-to buffer + /// may be pending and so nobody is allowed to look at it -- + /// either through a pre-existing reference (so the Bitmap object must not + /// be dropped) or through one of Bitmap's methods. + /// + /// The `Bitmap` ensures that by `wait_for_dma()`ing the buffer before + /// dropping it or doing anything else with it. + dma_pending: Cell<bool>, + /// + _phantom: core::marker::PhantomData<&'a ()>, +} + +impl<'a> Bitmap<'a> { + /// Creates a new bitmap referencing a specified buffer. + /// + /// Optionally minimal height can be specified and then the height + /// of the new bitmap is adjusted to the buffer size. + /// + /// Returns None if the buffer is not big enough. + /// + /// The `buff` needs to be properly aligned and big enough + /// to hold a bitmap with the specified format and size + pub fn new( + format: BitmapFormat, + stride: Option<usize>, + mut size: Offset, + min_height: Option<i16>, + buff: &'a [u8], + ) -> Option<Self> { + if size.x < 0 && size.y < 0 { + return None; + } + + let min_stride = match format { + BitmapFormat::MONO1 => (size.x + 7) / 8, + BitmapFormat::MONO1P => 0, + BitmapFormat::MONO4 => (size.x + 1) / 2, + BitmapFormat::MONO8 => size.x, + BitmapFormat::RGB565 => size.x * 2, + BitmapFormat::RGBA8888 => size.x * 4, + } as usize; + + let stride = stride.unwrap_or(min_stride); + + let alignment = match format { + BitmapFormat::MONO1 => 1, + BitmapFormat::MONO1P => 1, + BitmapFormat::MONO4 => 1, + BitmapFormat::MONO8 => 1, + BitmapFormat::RGB565 => 2, + BitmapFormat::RGBA8888 => 4, + }; + + assert!(stride >= min_stride); + assert!(buff.as_ptr().align_offset(alignment) == 0); + assert!(stride % alignment == 0); + + let max_height = if stride == 0 { + size.y as usize + } else { + buff.len() / stride + }; + + if size.y as usize > max_height { + if let Some(min_height) = min_height { + if max_height >= min_height as usize { + size.y = max_height as i16; + } else { + return None; + } + } else { + return None; + } + } + + Some(Self { + ptr: buff.as_ptr() as *mut u8, + stride, + size, + format, + mutable: false, + dma_pending: Cell::new(false), + _phantom: PhantomData, + }) + } + + /// Creates a new mutable bitmap referencing a specified buffer. + /// + /// Optionally minimal height can be specified and then the height + /// of the new bitmap is adjusted to the buffer size. + /// + /// Returns None if the buffer is not big enough. + /// + /// The `buff` needs to be properly aligned and big enough + /// to hold a bitmap with the specified format and size + pub fn new_mut( + format: BitmapFormat, + stride: Option<usize>, + size: Offset, + min_height: Option<i16>, + buff: &'a mut [u8], + ) -> Option<Self> { + let mut bitmap = Self::new(format, stride, size, min_height, buff)?; + bitmap.mutable = true; + Some(bitmap) + } + + /// Returns bitmap width in pixels. + pub fn width(&self) -> i16 { + self.size.x + } + + /// Returns bitmap height in pixels. + pub fn height(&self) -> i16 { + self.size.y + } + + /// Returns bitmap width and height in pixels. + pub fn size(&self) -> Offset { + self.size + } + + /// Returns bitmap stride in bytes. + pub fn stride(&self) -> usize { + self.stride + } + + /// Returns bitmap format. + pub fn format(&self) -> BitmapFormat { + self.format + } + + pub fn view(&self) -> BitmapView { + BitmapView::new(self) + } + + /// Returns the specified row as an immutable slice. + /// + /// Returns None if row is out of range. + pub fn row<T>(&self, row: i16) -> Option<&[T]> { + if row < 0 || row >= self.size.y { + return None; + } + + let offset = row as usize * (self.stride / core::mem::size_of::<T>()); + + if offset % core::mem::align_of::<T>() != 0 { + return None; + } + + self.wait_for_dma(); + + // SAFETY: + // The resulting slice is inside the bitmap and properly aligned. + // Potential DMA operation is finished. + Some(unsafe { + core::slice::from_raw_parts( + (self.ptr as *const T).add(offset), + self.stride / core::mem::size_of::<T>(), + ) + }) + } + + /// Returns the specified row as a mutable slice. + /// + /// Returns None if row is out of range or + /// the bitmap is not set as mutable. + pub fn row_mut<T>(&mut self, row: i16) -> Option<&mut [T]> { + if !self.mutable { + return None; + } + + if row < 0 || row >= self.size.y { + return None; + } + + let offset = row as usize * (self.stride / core::mem::size_of::<T>()); + + if offset % core::mem::align_of::<T>() != 0 { + return None; + } + + self.wait_for_dma(); + + // SAFETY: + // The bitmap is mutable. + // The resulting slice is inside the bitmap and properly aligned. + // Potential DMA operation is finished. + Some(unsafe { + core::slice::from_raw_parts_mut( + (self.ptr as *mut T).add(offset), + self.stride / core::mem::size_of::<T>(), + ) + }) + } + + /// Returns specified consecutive rows as a mutable slice + /// + /// Returns None if any of requested row is out of range or + /// the bitmap is not set as mutable. + pub fn rows_mut<T>(&mut self, row: i16, height: i16) -> Option<&mut [T]> { + if !self.mutable { + return None; + } + + if row < 0 || height <= 0 || row + height > self.size.y { + return None; + } + + let offset = self.stride * row as usize; + + if offset % core::mem::align_of::<T>() != 0 { + return None; + } + + self.wait_for_dma(); + + // SAFETY: + // The bitmap is mutable. + // The resulting slice is inside the bitmap and properly aligned. + // Potential DMA operation is finished. + let array = unsafe { + core::slice::from_raw_parts_mut( + self.ptr as *mut T, + self.size.y as usize * self.stride / core::mem::size_of::<T>(), + ) + }; + + let len = self.stride * height as usize; + + Some(&mut array[offset..offset + len]) + } + + /// Return raw mut pointer to the specified bitmap row. + /// + /// # Safety + /// + /// `y` must be in range <0; self.height() - 1>. + pub unsafe fn row_ptr(&self, y: u16) -> *mut cty::c_void { + unsafe { self.ptr.add(self.stride() * y as usize) as *mut cty::c_void } + } + + /// Waits until DMA operation is finished + fn wait_for_dma(&self) { + if self.dma_pending.get() { + bitblt::wait_for_transfer(); + self.dma_pending.set(false); + } + } + + // Mark bitmap as DMA operation is pending + pub fn mark_dma_pending(&self) { + self.dma_pending.set(true); + } +} + +impl<'a> Drop for Bitmap<'a> { + fn drop(&mut self) { + self.wait_for_dma(); + } +} + +pub struct BitmapView<'a> { + pub bitmap: &'a Bitmap<'a>, + pub offset: Offset, + pub fg_color: Color, + pub bg_color: Color, +} + +impl<'a> BitmapView<'a> { + /// Creates a new reference to the bitmap + pub fn new(bitmap: &'a Bitmap) -> Self { + Self { + bitmap, + offset: Offset::zero(), + fg_color: Color::black(), + bg_color: Color::black(), + } + } + + /// Builds a new structure with offset set to the specified value + pub fn with_offset(self, offset: Offset) -> Self { + Self { + offset: offset + self.offset, + ..self + } + } + + /// Builds a new structure with foreground color set to the specified value + pub fn with_fg(self, fg_color: Color) -> Self { + Self { fg_color, ..self } + } + + /// Builds a new structure with background color set to the specified value + pub fn with_bg(self, bg_color: Color) -> Self { + Self { bg_color, ..self } + } + + /// Returns the bitmap width and height in pixels + pub fn size(&self) -> Offset { + self.bitmap.size + } + + /// Returns the bitmap width in pixels + pub fn width(&self) -> i16 { + self.bitmap.width() + } + + /// Returns the bitmap height in pixels + pub fn height(&self) -> i16 { + self.bitmap.height() + } + + /// Returns the bitmap format + pub fn format(&self) -> BitmapFormat { + self.bitmap.format + } + + /// Returns the specified row as an immutable slice. + /// + /// Returns None if row is out of range. + pub fn row<T>(&self, row: i16) -> Option<&[T]> { + self.bitmap.row(row) + } +} diff --git a/core/embed/rust/src/ui/shape/blur.rs b/core/embed/rust/src/ui/shape/blur.rs new file mode 100644 index 0000000000..66fb85adb2 --- /dev/null +++ b/core/embed/rust/src/ui/shape/blur.rs @@ -0,0 +1,45 @@ +use crate::ui::geometry::Rect; + +use super::{Canvas, DrawingCache, Renderer, Shape, ShapeClone}; + +use without_alloc::alloc::LocalAllocLeakExt; + +pub struct Blurring { + // Blurred area + area: Rect, + /// Blurring kernel radius + radius: usize, +} + +/// A shape for the blurring of a specified rectangle area. +impl Blurring { + pub fn new(area: Rect, radius: usize) -> Self { + Self { area, radius } + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } +} + +impl Shape<'_> for Blurring { + fn bounds(&self) -> Rect { + self.area + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache) { + canvas.blur_rect(self.area, self.radius, cache); + } +} + +impl<'s> ShapeClone<'s> for Blurring { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape<'s>> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(Blurring { ..self })) + } +} diff --git a/core/embed/rust/src/ui/shape/cache/blur_cache.rs b/core/embed/rust/src/ui/shape/cache/blur_cache.rs new file mode 100644 index 0000000000..098aad64dd --- /dev/null +++ b/core/embed/rust/src/ui/shape/cache/blur_cache.rs @@ -0,0 +1,61 @@ +use crate::ui::{ + geometry::Offset, + shape::utils::{BlurAlgorithm, BlurBuff}, +}; +use core::cell::UnsafeCell; +use without_alloc::alloc::LocalAllocLeakExt; + +pub struct BlurCache<'a> { + algo: Option<BlurAlgorithm<'a>>, + buff: &'a UnsafeCell<BlurBuff>, + tag: u32, +} + +impl<'a> BlurCache<'a> { + pub fn new<'alloc: 'a, T>(bump: &'alloc T) -> Option<Self> + where + T: LocalAllocLeakExt<'alloc>, + { + let buff = bump + .alloc_t()? + .uninit + .init(UnsafeCell::new([0; core::mem::size_of::<BlurBuff>()])); + + Some(Self { + algo: None, + buff, + tag: 0, + }) + } + + pub fn get( + &mut self, + size: Offset, + radius: usize, + tag: Option<u32>, + ) -> Result<(&mut BlurAlgorithm<'a>, u32), ()> { + if let Some(tag) = tag { + if self.tag == tag { + return Ok((unwrap!(self.algo.as_mut()), self.tag)); + } + } + + // Drop the existing blurring inbstance holding + // a mutable reference to its scratchpad buffer + self.algo = None; + self.tag += 1; + + // Now there's nobody else holding any reference to our buffer + // so we can get mutable reference and pass it to a new + // instance of the blurring algorithm + let buff = unsafe { &mut *self.buff.get() }; + + self.algo = Some(BlurAlgorithm::new(size, radius, buff)?); + + Ok((unwrap!(self.algo.as_mut()), self.tag)) + } + + pub const fn get_bump_size() -> usize { + core::mem::size_of::<UnsafeCell<BlurBuff>>() + } +} diff --git a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs new file mode 100644 index 0000000000..1ac40bcd6d --- /dev/null +++ b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs @@ -0,0 +1,130 @@ +use super::zlib_cache::ZlibCache; + +#[cfg(feature = "ui_blurring")] +use super::blur_cache::BlurCache; + +#[cfg(feature = "ui_jpeg_decoder")] +use super::jpeg_cache::JpegCache; + +use core::cell::{RefCell, RefMut}; +use without_alloc::alloc::LocalAllocLeakExt; + +const ALIGN_PAD: usize = 8; + +#[cfg(feature = "xframebuff")] +const ZLIB_CACHE_SLOTS: usize = 1; +#[cfg(not(feature = "xframebuff"))] +const ZLIB_CACHE_SLOTS: usize = 3; + +const RENDER_BUFF_SIZE: usize = (240 * 2 * 16) + ALIGN_PAD; +const IMAGE_BUFF_SIZE: usize = 2048 + ALIGN_PAD; + +pub type ImageBuff = [u8; IMAGE_BUFF_SIZE]; +pub type RenderBuff = [u8; RENDER_BUFF_SIZE]; + +pub type ImageBuffRef<'a> = RefMut<'a, ImageBuff>; +pub type RenderBuffRef<'a> = RefMut<'a, RenderBuff>; + +pub struct DrawingCache<'a> { + image_buff: &'a RefCell<ImageBuff>, + zlib_cache: RefCell<ZlibCache<'a>>, + + #[cfg(feature = "ui_jpeg_decoder")] + jpeg_cache: RefCell<JpegCache<'a>>, + + #[cfg(feature = "ui_blurring")] + blur_cache: RefCell<BlurCache<'a>>, + + #[cfg(not(feature = "xframebuff"))] + render_buff: &'a RefCell<RenderBuff>, +} + +fn alloc_buf<'a, const S: usize, B>(bump: &'a B) -> Option<&'a RefCell<[u8; S]>> +where + B: LocalAllocLeakExt<'a>, +{ + Some(bump.alloc_t()?.uninit.init(RefCell::new([0; S]))) +} + +impl<'a> DrawingCache<'a> { + pub fn new<TA, TB>(bump_a: &'a TA, bump_b: &'a TB) -> Self + where + TA: LocalAllocLeakExt<'a>, + TB: LocalAllocLeakExt<'a>, + { + Self { + image_buff: unwrap!(alloc_buf(bump_b), "Toif buff alloc"), + zlib_cache: RefCell::new(unwrap!( + ZlibCache::new(bump_a, ZLIB_CACHE_SLOTS), + "ZLIB cache alloc" + )), + #[cfg(feature = "ui_jpeg_decoder")] + jpeg_cache: RefCell::new(unwrap!(JpegCache::new(bump_a), "JPEG cache alloc")), + #[cfg(feature = "ui_blurring")] + blur_cache: RefCell::new(unwrap!(BlurCache::new(bump_a), "Blur cache alloc")), + + #[cfg(not(feature = "xframebuff"))] + render_buff: unwrap!(alloc_buf(bump_b), "Render buff alloc"), + } + } + + /// Returns an object for decompression of TOIF images + pub fn zlib(&self) -> RefMut<ZlibCache<'a>> { + self.zlib_cache.borrow_mut() + } + + /// Returns an object for decompression of JPEG images + #[cfg(feature = "ui_jpeg_decoder")] + pub fn jpeg(&self) -> RefMut<JpegCache<'a>> { + self.jpeg_cache.borrow_mut() + } + + /// Returns an object providing blurring algorithm + #[cfg(feature = "ui_blurring")] + pub fn blur(&self) -> RefMut<BlurCache<'a>> { + self.blur_cache.borrow_mut() + } + + /// Returns a buffer used for ProgressiveRenderer slice + #[cfg(not(feature = "xframebuff"))] + pub fn render_buff(&self) -> Option<RenderBuffRef<'a>> { + self.render_buff.try_borrow_mut().ok() + } + + /// Returns a buffer for intended for drawing of + /// QrCode or ToifImage + pub fn image_buff(&self) -> Option<ImageBuffRef<'a>> { + self.image_buff.try_borrow_mut().ok() + } + + pub const fn get_bump_a_size() -> usize { + let mut size = 0; + + size += ZlibCache::get_bump_size(ZLIB_CACHE_SLOTS); + + #[cfg(feature = "ui_jpeg_decoder")] + { + size += JpegCache::get_bump_size(); + } + + #[cfg(feature = "ui_blurring")] + { + size += BlurCache::get_bump_size(); + } + + size + } + + pub const fn get_bump_b_size() -> usize { + let mut size = 0; + + #[cfg(not(feature = "xframebuff"))] + { + size += core::mem::size_of::<RefCell<RenderBuff>>(); + } + + size += core::mem::size_of::<RefCell<ImageBuff>>(); + + size + } +} diff --git a/core/embed/rust/src/ui/shape/cache/jpeg_cache.rs b/core/embed/rust/src/ui/shape/cache/jpeg_cache.rs new file mode 100644 index 0000000000..6f03cb2ce2 --- /dev/null +++ b/core/embed/rust/src/ui/shape/cache/jpeg_cache.rs @@ -0,0 +1,333 @@ +use crate::{ + io::BinaryData, + ui::{ + display::tjpgd, + geometry::{Offset, Point, Rect}, + shape::{BasicCanvas, Bitmap, BitmapFormat, BitmapView, Canvas, Rgb565Canvas}, + }, +}; + +use core::cell::UnsafeCell; +use without_alloc::alloc::LocalAllocLeakExt; + +// JDEC work buffer size +// +// number of quantization tables (n_qtbl) = 2..4 (typical 2) +// number of huffman tables (n_htbl) = 2..4 (typical 2) +// mcu size = 1 * 1 .. 2 * 2 = 1..4 (typical 4) +// +// hufflut_ac & hufflut_dc are required only if JD_FASTDECODE == 2 (default) +// +// --------------------------------------------------------------------- +// table | size calculation | MIN..MAX | TYP +// --------------------------------------------------------------------- +// qttbl | n_qtbl * size_of(i32) * 64 | 512..1024 | 512 +// huffbits | n_htbl * size_of(u8) * 16 | 32..64 | 32 +// huffcode | n_htbl * size_of(u16) * 256 | 1024..2048 | 1024 +// huffdata | n_htbl * size_of(u8) * 256 | 512..1024 | 512 +// hufflut_ac | n_htbl * size_of(u16) * 1024 | 4096..8192 | 4096 +// hufflut_dc | n_htbl * size_of(u8) * 1024 | 2048..4096 | 2048 +// workbuf | mcu_size * 192 + 64 | 256..832 | 832 +// mcubuf | (mcu_size + 2) * size_of(u16) * 64 | 384..768 | 768 +// inbuff | JD_SZBUF constant | 512..512 | 512 +// ---------------------------------------------------------------|------ +// SUM | | 9376..18560 | 10336 +// ---------------------------------------------------------------|------ + +const JPEG_SCRATCHPAD_SIZE: usize = 10500; // the same const > 10336 as in original code + +// Buffer for a cached row of JPEG MCUs (up to 240x16 RGB565 pixels) +const ALIGN_PAD: usize = 8; +const JPEG_BUFF_SIZE: usize = (240 * 2 * 16) + ALIGN_PAD; + +pub struct JpegCache<'a> { + /// Reference to compressed data + image: Option<BinaryData<'a>>, + /// Value in range 0..3 leads into scale factor 1 << scale + scale: u8, + /// Reader for compressed data + reader: Option<BinaryDataReader<'a>>, + /// JPEG decoder instance + decoder: Option<tjpgd::JDEC<'a>>, + /// Scratchpad memory used by the JPEG decoder + /// (it's used just by our decoder and nobody else) + scratchpad: &'a UnsafeCell<[u8; JPEG_SCRATCHPAD_SIZE]>, + /// horizontal coordinate of cached row or None + /// (valid if row_canvas is Some) + row_y: i16, + /// Canvas for recently decoded row of MCU's + row_canvas: Option<Rgb565Canvas<'a>>, + /// Buffer for slice canvas + row_buff: &'a UnsafeCell<[u8; JPEG_BUFF_SIZE]>, +} + +impl<'a> JpegCache<'a> { + pub fn new<T>(bump: &'a T) -> Option<Self> + where + T: LocalAllocLeakExt<'a>, + { + let scratchpad = bump + .alloc_t()? + .uninit + .init(UnsafeCell::new([0; JPEG_SCRATCHPAD_SIZE])); + + let row_buff = bump + .alloc_t()? + .uninit + .init(UnsafeCell::new([0; JPEG_BUFF_SIZE])); + + Some(Self { + image: None, + scale: 0, + reader: None, + decoder: None, + scratchpad, + row_y: 0, + row_canvas: None, + row_buff, + }) + } + + fn reset<'i: 'a>( + &mut self, + image: Option<BinaryData<'a>>, + scale: u8, + ) -> Result<(), tjpgd::Error> { + // Drop the existing decoder holding + // a mutable reference to the scratchpad and canvas buffer & c + self.decoder = None; + self.row_canvas = None; + + if let Some(image) = image { + // Now there's nobody else holding any reference to our scratchpad buffer + // so we can get a mutable reference and pass it to a new + // instance of the JPEG decoder + let scratchpad = unsafe { &mut *self.scratchpad.get() }; + // Prepare a input buffer + let mut input = BinaryDataReader::new(image); + // Initialize the decoder by reading headers from input + let mut decoder = tjpgd::JDEC::new(&mut input, scratchpad)?; + // Set decoder scale factor + decoder.set_scale(scale)?; + self.decoder = Some(decoder); + // Save modified input buffer + self.reader = Some(input); + } else { + self.reader = None; + } + + self.image = image; + self.scale = scale; + Ok(()) + } + + fn is_for<'i: 'a>(&self, image: BinaryData<'i>, scale: u8) -> bool { + match self.image { + Some(current) => self.decoder.is_some() && current == image && scale == self.scale, + None => false, + } + } + + // left-top origin of output rectangle must be aligned to JPEG MCU size + pub fn decompress_mcu<'i: 'a>( + &mut self, + image: BinaryData<'i>, + scale: u8, + offset: Point, + output: &mut dyn FnMut(Rect, BitmapView) -> bool, + ) -> Result<(), tjpgd::Error> { + // Reset the slot if the JPEG image is different + if !self.is_for(image, scale) { + self.reset(Some(image), scale)?; + } + + // Get coordinates of the next coming MCU + let decoder = unwrap!(self.decoder.as_ref()); // should never fail + let divisor = 1 << self.scale; + let next_mcu = Offset::new( + decoder.next_mcu().0 as i16 / divisor, + decoder.next_mcu().1 as i16 / divisor, + ); + + // Get height of the MCUs (8 or 16pixels) + let mcu_height = decoder.mcu_height() / (1 << self.scale); + + // Reset the decoder if pixel at the offset was already decoded + if offset.y < next_mcu.y || (offset.x < next_mcu.x && offset.y < next_mcu.y + mcu_height) { + self.reset(self.image, scale)?; + } + + let decoder = unwrap!(self.decoder.as_mut()); // should never fail + let input = unwrap!(self.reader.as_mut()); // should never fail + let mut output = JpegFnOutput::new(output); + + match decoder.decomp(input, &mut output) { + Ok(_) | Err(tjpgd::Error::Interrupted) => Ok(()), + Err(e) => Err(e), + } + } + + pub fn decompress_row<'i: 'a>( + &mut self, + image: BinaryData<'i>, + scale: u8, + mut offset_y: i16, + output: &mut dyn FnMut(Rect, BitmapView) -> bool, + ) -> Result<(), tjpgd::Error> { + // Reset the slot if the JPEG image is different + if !self.is_for(image, scale) { + self.reset(Some(image), scale)?; + } + + let mut row_canvas = self.row_canvas.take(); + let mut row_y = self.row_y; + + // Use cached data if possible + if let Some(row_canvas) = row_canvas.as_mut() { + if offset_y >= self.row_y && offset_y < self.row_y + row_canvas.height() { + if !output( + Rect::from_size(row_canvas.size()).translate(Offset::new(0, row_y)), + row_canvas.view(), + ) { + return Ok(()); + } + // Align to the next MCU row + offset_y += row_canvas.height() - offset_y % row_canvas.height(); + } + } else { + // Create a new row for cahing decoded JPEG data + // Now there's nobody else holding any reference to canvas_buff so + // we can get a mutable reference and pass it to a new instance + // of Rgb565Canvas + let canvas_buff = unsafe { &mut *self.row_buff.get() }; + // Prepare canvas as a cache for a row of decoded JPEG MCUs + let decoder = unwrap!(self.decoder.as_ref()); // shoud never fail + let divisor = 1 << self.scale; + row_canvas = Some(unwrap!( + Rgb565Canvas::new( + Offset::new(decoder.width() / divisor, decoder.mcu_height() / divisor), + None, + None, + canvas_buff + ), + "Buffer too small" + )); + } + + self.decompress_mcu( + image, + scale, + Point::new(0, offset_y), + &mut |mcu_r, mcu_bitmap| { + // Get canvas for MCU caching + let row_canvas = unwrap!(row_canvas.as_mut()); // should never fail + + // Calculate coordinates in the row canvas + let dst_r = Rect { + y0: 0, + y1: mcu_r.height(), + ..mcu_r + }; + // Draw a MCU + row_canvas.draw_bitmap(dst_r, mcu_bitmap); + + if mcu_r.x1 < row_canvas.size().x { + // We are not done with the row yet + true + } else { + // We have a complete row, let's pass it to the callee + row_y = mcu_r.y0; + output( + Rect::from_size(row_canvas.size()).translate(Offset::new(0, row_y)), + row_canvas.view(), + ) + } + }, + )?; + + // Store the recently decoded row for future use + self.row_y = row_y; + self.row_canvas = row_canvas; + + Ok(()) + } + + pub const fn get_bump_size() -> usize { + core::mem::size_of::<UnsafeCell<[u8; JPEG_SCRATCHPAD_SIZE]>>() + + core::mem::size_of::<UnsafeCell<[u8; JPEG_BUFF_SIZE]>>() + } +} + +struct BinaryDataReader<'a> { + data: BinaryData<'a>, + offset: usize, +} + +impl<'a> BinaryDataReader<'a> { + fn new(data: BinaryData<'a>) -> Self { + Self { data, offset: 0 } + } +} + +impl<'a> trezor_tjpgdec::JpegInput for BinaryDataReader<'a> { + fn read(&mut self, buf: Option<&mut [u8]>, n_data: usize) -> usize { + let bytes_read = if let Some(buf) = buf { + self.data.read(self.offset, &mut buf[..n_data]) + } else { + n_data.min(self.data.len() - self.offset) + }; + self.offset += bytes_read; + + bytes_read + } +} + +struct JpegFnOutput<F> +where + F: FnMut(Rect, BitmapView) -> bool, +{ + output: F, +} + +impl<F> JpegFnOutput<F> +where + F: FnMut(Rect, BitmapView) -> bool, +{ + pub fn new(output: F) -> Self { + Self { output } + } +} + +impl<F> trezor_tjpgdec::JpegOutput for JpegFnOutput<F> +where + F: FnMut(Rect, BitmapView) -> bool, +{ + fn write( + &mut self, + _jd: &tjpgd::JDEC, + rect_origin: (u32, u32), + rect_size: (u32, u32), + pixels: &[u16], + ) -> bool { + // MCU coordinates in source image + let mcu_r = Rect::from_top_left_and_size( + Point::new(rect_origin.0 as i16, rect_origin.1 as i16), + Offset::new(rect_size.0 as i16, rect_size.1 as i16), + ); + + // SAFETY: aligning from [u16] -> [u8] + let (_, pixels, _) = unsafe { pixels.align_to() }; + + // Create readonly bitmap + let mcu_bitmap = unwrap!(Bitmap::new( + BitmapFormat::RGB565, + None, + mcu_r.size(), + None, + pixels, + )); + + // Return true to continue decompression + (self.output)(mcu_r, BitmapView::new(&mcu_bitmap)) + } +} diff --git a/core/embed/rust/src/ui/shape/cache/mod.rs b/core/embed/rust/src/ui/shape/cache/mod.rs new file mode 100644 index 0000000000..0717577ee7 --- /dev/null +++ b/core/embed/rust/src/ui/shape/cache/mod.rs @@ -0,0 +1,7 @@ +pub mod blur_cache; +pub mod drawing_cache; + +#[cfg(feature = "ui_jpeg_decoder")] +pub mod jpeg_cache; + +pub mod zlib_cache; diff --git a/core/embed/rust/src/ui/shape/cache/zlib_cache.rs b/core/embed/rust/src/ui/shape/cache/zlib_cache.rs new file mode 100644 index 0000000000..4b9f5e602e --- /dev/null +++ b/core/embed/rust/src/ui/shape/cache/zlib_cache.rs @@ -0,0 +1,188 @@ +use crate::{ + io::BinaryData, + trezorhal::uzlib::{ZlibInflate, UZLIB_WINDOW_SIZE}, + ui::display::image::ToifInfo, +}; +use core::cell::UnsafeCell; +use without_alloc::{alloc::LocalAllocLeakExt, FixedVec}; + +struct ZlibCacheSlot<'a> { + /// Decompression context for the current zdata. + /// If `None`, the slot is free to be used. + dc: Option<ZlibInflate<'a>>, + /// Reference to compressed data + image: Option<BinaryData<'a>>, + /// Current offset in decompressed data + output_offset: usize, + /// Window used by current decompression context. + /// (It's used just by own dc and nobody else.) + window: &'a UnsafeCell<[u8; UZLIB_WINDOW_SIZE]>, +} + +impl<'a> ZlibCacheSlot<'a> { + fn new<T>(bump: &'a T) -> Option<Self> + where + T: LocalAllocLeakExt<'a>, + { + let window = bump + .alloc_t()? + .uninit + .init(UnsafeCell::new([0; UZLIB_WINDOW_SIZE])); + + Some(Self { + dc: None, + image: None, + output_offset: 0, + window, + }) + } + + /// Calling with None makes the slot free + fn reset(&mut self, image: Option<BinaryData<'a>>) { + // Drop the existing decompression context holding + // a mutable reference to window buffer + self.dc = None; + + if let Some(image) = image { + // Now there's nobody else holding any reference to our window + // so we can get mutable reference and pass it to a new + // instance of the decompression context + let window = unsafe { &mut *self.window.get() }; + + self.dc = Some(ZlibInflate::new(image, ToifInfo::HEADER_LENGTH, window)); + } + + self.output_offset = 0; + self.image = image; + } + + fn uncompress(&mut self, dest_buf: &mut [u8]) -> Result<bool, ()> { + if let Some(dc) = self.dc.as_mut() { + match dc.read(dest_buf) { + Ok(done) => { + if done { + self.reset(None); + } else { + self.output_offset += dest_buf.len(); + } + Ok(done) + } + Err(e) => Err(e), + } + } else { + Err(()) + } + } + + fn skip(&mut self, nbytes: usize) -> Result<bool, ()> { + if let Some(dc) = self.dc.as_mut() { + match dc.skip(nbytes) { + Ok(done) => { + if done { + self.reset(None); + } else { + self.output_offset += nbytes; + } + + Ok(done) + } + Err(e) => Err(e), + } + } else { + Err(()) + } + } + + fn is_for(&self, image: BinaryData<'a>, offset: usize) -> bool { + match self.image { + Some(current) => current == image && self.output_offset == offset, + None => false, + } + } +} + +pub struct ZlibCache<'a> { + slots: FixedVec<'a, ZlibCacheSlot<'a>>, +} + +impl<'a> ZlibCache<'a> { + pub fn new<T>(bump: &'a T, slot_count: usize) -> Option<Self> + where + T: LocalAllocLeakExt<'a>, + { + let mut cache = Self { + slots: bump.fixed_vec(slot_count)?, + }; + + for _ in 0..cache.slots.capacity() { + cache.slots.push(ZlibCacheSlot::new(bump)?).ok()?; + } + + Some(cache) + } + + fn select_slot_for_reuse(&self) -> Result<usize, ()> { + if self.slots.capacity() > 0 { + // Try to find a free slot. If there's no free slot, + // select the one that performed the least amount of work + // based on the offset in the uncompressed data. + let mut selected = 0; + for (i, slot) in self.slots.iter().enumerate() { + if slot.dc.is_none() { + selected = i; + break; + } else if slot.output_offset < self.slots[selected].output_offset { + selected = i; + } + } + Ok(selected) + } else { + Err(()) + } + } + + pub fn uncompress( + &mut self, + image: BinaryData<'a>, + offset: usize, + dest_buf: &mut [u8], + ) -> Result<bool, ()> { + let slot = self + .slots + .iter_mut() + .find(|slot| slot.is_for(image, offset)); + + let slot = match slot { + Some(slot) => slot, + None => { + let selected = self.select_slot_for_reuse()?; + let slot = &mut self.slots[selected]; + slot.reset(Some(image)); + slot.skip(offset)?; + slot + } + }; + + slot.uncompress(dest_buf) + } + + pub fn uncompress_toif( + &mut self, + image: BinaryData<'a>, + from_row: i16, + dest_buf: &mut [u8], + ) -> Result<(), ()> { + // TODO: optimize this + let info = ToifInfo::parse(image).ok_or(())?; + let from_offset = info.stride() * from_row as usize; + self.uncompress(image, from_offset, dest_buf)?; + Ok(()) + } + + pub const fn get_bump_size(slot_count: usize) -> usize { + (core::mem::size_of::<ZlibCacheSlot>() + + core::mem::size_of::<UnsafeCell<[u8; UZLIB_WINDOW_SIZE]>>() + + 16) + * slot_count + } +} diff --git a/core/embed/rust/src/ui/shape/canvas/common.rs b/core/embed/rust/src/ui/shape/canvas/common.rs new file mode 100644 index 0000000000..ceaff693c1 --- /dev/null +++ b/core/embed/rust/src/ui/shape/canvas/common.rs @@ -0,0 +1,828 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Point, Rect}, +}; + +use super::super::{ + utils::{circle_points, line_points, sin_i16, PI4}, + BitmapView, Viewport, +}; + +#[cfg(feature = "ui_blurring")] +use crate::ui::shape::DrawingCache; + +pub trait BasicCanvas { + /// Returns dimensions of the canvas in pixels. + fn size(&self) -> Offset; + + /// Returns the dimensions of the canvas as a rectangle with + /// the top-left at (0,0). + fn bounds(&self) -> Rect { + Rect::from_size(self.size()) + } + + /// Returns the width of the canvas in pixels. + fn width(&self) -> i16 { + self.size().x + } + + /// Returns the height of the canvas in pixels. + fn height(&self) -> i16 { + self.size().y + } + + /// Gets the current drawing viewport previously set by `set_viewport()` + /// function. + fn viewport(&self) -> Viewport; + + /// Sets the active viewport valid for all subsequent drawing operations. + fn set_viewport(&mut self, vp: Viewport); + + /// Sets the new viewport that's intersection of the + /// current viewport and the `window` rectangle relative + /// to the current viewport. The viewport's origin is + /// set to the top-left corener of the `window`. + fn set_window(&mut self, window: Rect) -> Viewport { + let viewport = self.viewport(); + self.set_viewport(viewport.relative_window(window)); + viewport + } + + /// Sets the new viewport that's intersection of the + /// current viewport and the `clip` rectangle relative + /// to the current viewport. The viewport's origin is + /// not changed. + fn set_clip(&mut self, clip: Rect) -> Viewport { + let viewport = self.viewport(); + self.set_viewport(viewport.relative_clip(clip)); + viewport + } + + /// Draws a filled rectangle with the specified color. + fn fill_rect(&mut self, r: Rect, color: Color, alpha: u8); + + /// Fills the canvas background with the specified color. + fn fill_background(&mut self, color: Color) { + let vp = self.viewport(); + self.fill_rect(vp.clip.translate(-vp.origin), color, 255); + } + + /// Draws a bitmap into to the rectangle. + fn draw_bitmap(&mut self, r: Rect, bitmap: BitmapView); +} + +pub trait Canvas: BasicCanvas { + /// Returns a non-mutable view of the underlying bitmap. + fn view(&self) -> BitmapView; + + /// Draw a pixel at specified coordinates. + fn draw_pixel(&mut self, pt: Point, color: Color); + + /// Draws a single pixel and blends its color with the background. + /// + /// - If alpha == 255, the (foreground) pixel color is used. + /// - If 0 < alpha << 255, pixel and backround colors are blended. + /// - If alpha == 0, the background color is used. + fn blend_pixel(&mut self, pt: Point, color: Color, alpha: u8); + + /// Blends a bitmap with the canvas background + fn blend_bitmap(&mut self, r: Rect, src: BitmapView); + + /// Applies a blur effect to the specified rectangle. + /// + /// The blur effect works properly only when the rectangle is not clipped, + /// which is a strong constraint that's hard to be met. The function uses a + /// simple box filter, where the 'radius' argument represents the length + /// of the sides of this filter. + /// + /// It's important to be aware that strong artifacts may appear on images + /// with horizontal/vertical lines. + #[cfg(feature = "ui_blurring")] + fn blur_rect(&mut self, r: Rect, radius: usize, cache: &DrawingCache); + + /// Draws an outline of a rectangle with rounded corners. + fn draw_round_rect(&mut self, r: Rect, radius: i16, color: Color) { + let split = unwrap!(circle_points(radius).last()).v; + + let b = Rect { + y1: r.y0 + radius - split + 1, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius) { + let pt_l = Point::new(r.x0 + radius - p.u, r.y0 + radius - p.v); + let pt_r = Point::new(r.x1 - radius + p.u - 1, r.y0 + radius - p.v); + if p.v == radius && p.last { + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, 255); + } else { + self.draw_pixel(pt_l, color); + self.draw_pixel(pt_r, color); + } + } + } + + let b = Rect { + y0: r.y0 + radius - split + 1, + y1: r.y0 + radius + 1, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(r.x0 + radius - p.v, r.y0 + radius - p.u); + let pt_r = Point::new(r.x1 - radius + p.v - 1, r.y0 + radius - p.u); + self.draw_pixel(pt_l, color); + self.draw_pixel(pt_r, color); + } + } + + self.fill_rect( + Rect { + x0: r.x0, + y0: r.y0 + radius + 1, + x1: r.x0 + 1, + y1: r.y1 - radius - 1, + }, + color, + 255, + ); + + self.fill_rect( + Rect { + x0: r.x1 - 1, + y0: r.y0 + radius + 1, + x1: r.x1, + y1: r.y1 - radius - 1, + }, + color, + 255, + ); + + let b = Rect { + y0: r.y1 - radius - 1, + y1: r.y1 - radius - 1 + split, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(r.x0 + radius - p.v, r.y1 - radius - 1 + p.u); + let pt_r = Point::new(r.x1 - radius + p.v - 1, r.y1 - radius - 1 + p.u); + self.draw_pixel(pt_l, color); + self.draw_pixel(pt_r, color); + } + } + + let b = Rect { + y0: r.y1 - radius - 1 + split, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius) { + let pt_l = Point::new(r.x0 + radius - p.u, r.y1 - radius - 1 + p.v); + let pt_r = Point::new(r.x1 - radius + p.u - 1, r.y1 - radius - 1 + p.v); + + if p.v == radius && p.last { + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, 255); + } else { + self.draw_pixel(pt_l, color); + self.draw_pixel(pt_r, color); + } + } + } + } + + /// Draws filled rectangle with rounded corners. + #[cfg(not(feature = "ui_antialiasing"))] + fn fill_round_rect(&mut self, r: Rect, radius: i16, color: Color, alpha: u8) { + let split = unwrap!(circle_points(radius).last()).v; + + let b = Rect { + y1: r.y0 + radius - split + 1, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius) { + if p.last { + let pt_l = Point::new(r.x0 + radius - p.u, r.y0 + radius - p.v); + let pt_r = Point::new(r.x1 - radius + p.u - 1, r.y0 + radius - p.v); + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, alpha); + } + } + } + + let b = Rect { + y0: r.y0 + radius - split + 1, + y1: r.y0 + radius + 1, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(r.x0 + radius - p.v, r.y0 + radius - p.u); + let pt_r = Point::new(r.x1 - radius + p.v - 1, r.y0 + radius - p.u); + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, alpha); + } + } + + self.fill_rect( + Rect { + x0: r.x0, + y0: r.y0 + radius + 1, + x1: r.x1, + y1: r.y1 - radius - 1, + }, + color, + alpha, + ); + + let b = Rect { + y0: r.y1 - radius - 1, + y1: r.y1 - radius - 1 + split, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(r.x0 + radius - p.v, r.y1 - radius - 1 + p.u); + let pt_r = Point::new(r.x1 - radius + p.v - 1, r.y1 - radius - 1 + p.u); + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, alpha); + } + } + + let b = Rect { + y0: r.y1 - radius - 1 + split, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius) { + if p.last { + let pt_l = Point::new(r.x0 + radius - p.u, r.y1 - radius - 1 + p.v); + let pt_r = Point::new(r.x1 - radius + p.u - 1, r.y1 - radius - 1 + p.v); + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, alpha); + } + } + } + } + + /// Draws filled rectangle with antialiased rounded corners. + #[cfg(feature = "ui_antialiasing")] + fn fill_round_rect(&mut self, r: Rect, radius: i16, color: Color, alpha: u8) { + let split = unwrap!(circle_points(radius).last()).v; + + let b = Rect { + y1: r.y0 + radius - split + 1, + ..r + }; + + let alpha_mul = |a: u8| -> u8 { ((a as u16 * alpha as u16) / 255) as u8 }; + + if self.viewport().contains(b) { + for p in circle_points(radius) { + let pt_l = Point::new(r.x0 + radius - p.u, r.y0 + radius - p.v); + let pt_r = Point::new(r.x1 - radius + p.u - 1, r.y0 + radius - p.v); + self.blend_pixel(pt_l, color, alpha_mul(p.frac)); + self.blend_pixel(pt_r, color, alpha_mul(p.frac)); + + if p.first { + let inner = Rect::new(pt_l.onright(), pt_r.under()); + self.fill_rect(inner, color, alpha); + } + } + } + + let b = Rect { + y0: r.y0 + radius - split + 1, + y1: r.y0 + radius + 1, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(r.x0 + radius - p.v, r.y0 + radius - p.u); + let pt_r = Point::new(r.x1 - radius + p.v - 1, r.y0 + radius - p.u); + self.blend_pixel(pt_l, color, alpha_mul(p.frac)); + self.blend_pixel(pt_r, color, alpha_mul(p.frac)); + + let inner = Rect::new(pt_l.onright(), pt_r.under()); + self.fill_rect(inner, color, alpha); + } + } + + self.fill_rect( + Rect { + x0: r.x0, + y0: r.y0 + radius + 1, + x1: r.x1, + y1: r.y1 - radius - 1, + }, + color, + alpha, + ); + + let b = Rect { + y0: r.y1 - radius - 1, + y1: r.y1 - radius - 1 + split, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(r.x0 + radius - p.v, r.y1 - radius - 1 + p.u); + let pt_r = Point::new(r.x1 - radius + p.v - 1, r.y1 - radius - 1 + p.u); + self.blend_pixel(pt_l, color, alpha_mul(p.frac)); + self.blend_pixel(pt_r, color, alpha_mul(p.frac)); + + let b = Rect::new(pt_l.onright(), pt_r.under()); + self.fill_rect(b, color, alpha); + } + } + + let b = Rect { + y0: r.y1 - radius - 1 + split, + ..r + }; + + if self.viewport().contains(b) { + for p in circle_points(radius) { + let pt_l = Point::new(r.x0 + radius - p.u, r.y1 - radius - 1 + p.v); + self.blend_pixel(pt_l, color, alpha_mul(p.frac)); + let pt_r = Point::new(r.x1 - radius + p.u - 1, r.y1 - radius - 1 + p.v); + self.blend_pixel(pt_r, color, alpha_mul(p.frac)); + + if p.first { + let b = Rect::new(pt_l.onright(), pt_r.under()); + self.fill_rect(b, color, alpha); + } + } + } + } + + // Draws circle with the specified center and the radius. + #[cfg(not(feature = "ui_antialiasing"))] + fn draw_circle(&mut self, center: Point, radius: i16, color: Color) { + let split = unwrap!(circle_points(radius).last()).v; + + let r = Rect::new( + Point::new(center.x - radius, center.y - radius), + Point::new(center.x + radius + 1, center.y - split + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius) { + let pt_l = Point::new(center.x - p.u, center.y - p.v); + let pt_r = Point::new(center.x + p.u, center.y - p.v); + self.draw_pixel(pt_l, color); + self.draw_pixel(pt_r, color); + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y - split), + Point::new(center.x + radius + 1, center.y + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(center.x - p.v, center.y - p.u); + let pt_r = Point::new(center.x + p.v, center.y - p.u); + self.draw_pixel(pt_l, color); + self.draw_pixel(pt_r, color); + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y + 1), + Point::new(center.x + radius + 1, center.y + split + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius).skip(1).take_while(|p| p.u < p.v) { + let pt_l = Point::new(center.x - p.v, center.y + p.u); + let pt_r = Point::new(center.x + p.v, center.y + p.u); + self.draw_pixel(pt_l, color); + self.draw_pixel(pt_r, color); + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y + split), + Point::new(center.x + radius + 1, center.y + radius + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius) { + let pt_l = Point::new(center.x - p.u, center.y + p.v); + let pt_r = Point::new(center.x + p.u, center.y + p.v); + self.draw_pixel(pt_l, color); + self.draw_pixel(pt_r, color); + } + } + } + + /// Draws filled circle with the specified center and the radius. + #[cfg(not(feature = "ui_antialiasing"))] + fn fill_circle(&mut self, center: Point, radius: i16, color: Color) { + let split = unwrap!(circle_points(radius).last()).v; + let alpha = 255; + + let r = Rect::new( + Point::new(center.x - radius, center.y - radius), + Point::new(center.x + radius + 1, center.y - split + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius) { + if p.last { + let pt_l = Point::new(center.x - p.u, center.y - p.v); + let pt_r = Point::new(center.x + p.u, center.y - p.v); + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, alpha); + } + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y - split), + Point::new(center.x + radius + 1, center.y + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(center.x - p.v, center.y - p.u); + let pt_r = Point::new(center.x + p.v, center.y - p.u); + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, alpha); + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y + 1), + Point::new(center.x + radius + 1, center.y + split + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius).skip(1).take_while(|p| p.u < p.v) { + let pt_l = Point::new(center.x - p.v, center.y + p.u); + let pt_r = Point::new(center.x + p.v, center.y + p.u); + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, alpha); + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y + split), + Point::new(center.x + radius + 1, center.y + radius + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius) { + if p.last { + let pt_l = Point::new(center.x - p.u, center.y + p.v); + let pt_r = Point::new(center.x + p.u, center.y + p.v); + self.fill_rect(Rect::new(pt_l, pt_r.onright().under()), color, alpha); + } + } + } + } + + /// Draws antialiased filled circle with the specified center and the + /// radius. + #[cfg(feature = "ui_antialiasing")] + fn fill_circle(&mut self, center: Point, radius: i16, color: Color) { + let split = unwrap!(circle_points(radius).last()).v; + + let alpha = 255; + let alpha_mul = |a: u8| -> u8 { ((a as u16 * alpha as u16) / 255) as u8 }; + + let r = Rect::new( + Point::new(center.x - radius, center.y - radius), + Point::new(center.x + radius + 1, center.y - split + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius) { + let pt_l = Point::new(center.x - p.u, center.y - p.v); + let pt_r = Point::new(center.x + p.u, center.y - p.v); + self.blend_pixel(pt_l, color, alpha_mul(p.frac)); + if pt_l != pt_r { + self.blend_pixel(pt_r, color, alpha_mul(p.frac)); + } + + if p.first { + let r = Rect::new(pt_l.onright(), pt_r.under()); + self.fill_rect(r, color, alpha); + } + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y - split), + Point::new(center.x + radius + 1, center.y + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius).take_while(|p| p.u < p.v) { + let pt_l = Point::new(center.x - p.v, center.y - p.u); + let pt_r = Point::new(center.x + p.v, center.y - p.u); + self.blend_pixel(pt_l, color, alpha_mul(p.frac)); + self.blend_pixel(pt_r, color, alpha_mul(p.frac)); + + let r = Rect::new(pt_l.onright(), pt_r.under()); + self.fill_rect(r, color, alpha); + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y + 1), + Point::new(center.x + radius + 1, center.y + split + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius).skip(1).take_while(|p| p.u < p.v) { + let pt_l = Point::new(center.x - p.v, center.y + p.u); + let pt_r = Point::new(center.x + p.v, center.y + p.u); + self.blend_pixel(pt_l, color, alpha_mul(p.frac)); + self.blend_pixel(pt_r, color, alpha_mul(p.frac)); + + let r = Rect::new(pt_l.onright(), pt_r.under()); + self.fill_rect(r, color, alpha); + } + } + + let r = Rect::new( + Point::new(center.x - radius, center.y + split), + Point::new(center.x + radius + 1, center.y + radius + 1), + ); + + if self.viewport().contains(r) { + for p in circle_points(radius) { + let pt_l = Point::new(center.x - p.u, center.y + p.v); + let pt_r = Point::new(center.x + p.u, center.y + p.v); + if pt_l != pt_r { + self.blend_pixel(pt_l, color, alpha_mul(p.frac)); + } + self.blend_pixel(pt_r, color, alpha_mul(p.frac)); + + if p.first { + let r = Rect::new(pt_l.onright(), pt_r.under()); + self.fill_rect(r, color, alpha); + } + } + } + } + + /// Fills circle sector with a specified color. + fn fill_sector( + &mut self, + center: Point, + radius: i16, + mut start: i16, + mut end: i16, + color: Color, + ) { + start = (PI4 * 8 + start % (PI4 * 8)) % (PI4 * 8); + end = (PI4 * 8 + end % (PI4 * 8)) % (PI4 * 8); + + let alpha = 255; + let alpha_mul = |a: u8| -> u8 { ((a as u16 * alpha as u16) / 255) as u8 }; + + if start != end { + // The algorithm fills everything except the middle point ;-) + self.draw_pixel(center, color); + } + + for octant in 0..8 { + let angle = octant * PI4; + + // Function for calculation of 'u' coordinate inside the circle octant + // radius * sin(angle) + let sin = |angle: i16| -> i16 { sin_i16(angle, radius) }; + + // Calculate the octant's bounding rectangle + let p = Point::new(sin(PI4) + 1, -radius - 1).rot(octant); + let r = Rect::new(center, p + center.into()); + + // Ensure that `x0`, `y0` represents the top-left corner and + // `x1`, `y1` represents the bottom-right corner. + let r = Rect { + x0: r.x0.min(r.x1), + y0: r.y0.min(r.y1), + x1: r.x0.max(r.x1), + y1: r.y0.max(r.y1), + }; + + // Skip octant if not visible + if !self.viewport().contains(r) { + continue; + } + + // Function for filling a line between two endpoints with antialiasing. + // The function is special for each octant using 4 different axes of symmetry + let filler = &mut |p1: Option<Point>, p1_frac, p2: Point, p2_frac| { + let p2: Point = center + p2.rot(octant).into(); + self.blend_pixel(p2, color, alpha_mul(p2_frac)); + if let Some(p1) = p1 { + let p1: Point = center + p1.rot(octant).into(); + let ofs = Point::new(-1, 0).rot(octant); + self.blend_pixel(p1 + ofs.into(), color, alpha_mul(p1_frac)); + if ofs.x + ofs.y < 0 { + if ofs.x != 0 { + self.fill_rect(Rect::new(p1, p2.under()), color, alpha); + } else { + self.fill_rect(Rect::new(p1, p2.onright()), color, alpha); + } + } else { + let p1 = p1 + ofs.into(); + let p2 = p2 + ofs.into(); + if ofs.x != 0 { + self.fill_rect(Rect::new(p2, p1.under()), color, alpha); + } else { + self.fill_rect(Rect::new(p2, p1.onright()), color, alpha); + } + } + } + }; + + let corr = if octant & 1 == 0 { + // The clockwise octant + |angle| angle + } else { + // The anticlockwise octant + |angle| PI4 - angle + }; + + if start <= end { + // Octant may contain 0 or 1 sector + if start < angle + PI4 && end > angle { + if start <= angle && end >= angle + PI4 { + // Fill all pixels in the octant + fill_octant(radius, 0, sin(PI4), filler); + } else { + // Partial fill + let u1 = if start <= angle { + sin(corr(0)) + } else { + sin(corr(start - angle)) + }; + let u2 = if end <= angle + PI4 { + sin(corr(end - angle)) + } else { + sin(corr(PI4)) + }; + + fill_octant(radius, u1, u2, filler); + } + } + } else { + // Octant may contain 0, 1 or 2 sectors + if end >= angle + PI4 || start <= angle { + // Fill all pixels in the octant + fill_octant(radius, 0, sin(PI4), filler); + } else { + // Partial fill + if (end > angle) && (end < angle + PI4) { + // Fill up to `end` + fill_octant(radius, sin(corr(0)), sin(corr(end - angle)), filler); + } + if start < angle + PI4 { + // Fill all from `start` + fill_octant(radius, sin(corr(start - angle)), sin(corr(PI4)), filler); + } + } + } + } + } +} + +/// Calculates endpoints of a single octant of a circle +/// +/// Used internally by `Canvas::fill_sector()`. +fn fill_octant( + radius: i16, + mut u1: i16, + mut u2: i16, + fill: &mut impl FnMut(Option<Point>, u8, Point, u8), +) { + // Starting end ending points on + if u1 > u2 { + (u1, u2) = (u2, u1); + } + + let mut iter = circle_points(radius).skip(u1 as usize); + + // Intersection of the p1 line and the circle + let p1_start = unwrap!(iter.next()); + + // Intersection of the p1 line and the circle + let mut p2_start = p1_start; + + for p in iter.by_ref() { + if p.u > u2 { + break; + } + p2_start = p; + } + + // Flag if we draw section up to 45degs + let join_flag = iter.next().is_none(); + + // Process area between a p1 line and the circle + let mut p1_iter = line_points(p1_start.v, p1_start.u, 0); + let mut first = true; + let mut skip = 0; + + for c in circle_points(radius) + .skip(p1_start.u as usize) + .take((p2_start.u - p1_start.u) as usize) + { + let p2_coord = Point::new(c.u, -c.v); + + if c.first || first { + let p1 = unwrap!(p1_iter.next()); + let p1_coord = Point::new(p1_start.u - p1.v, -p1_start.v + p1.u); + first = false; + + fill(Some(p1_coord), p1.frac, p2_coord, c.frac); + } else { + fill(None, 0, p2_coord, c.frac); + } + + skip = if c.last { 0 } else { 1 }; + } + + // Process area between a p1 and p2 lines + let p2_iter = line_points(p2_start.v, p2_start.u, 0).skip(skip); + let mut first = true; + for (p1, p2) in p1_iter.zip(p2_iter) { + let p1_coord = Point::new(p1_start.u - p1.v, -p1_start.v + p1.u); + let p2_coord = Point::new(p2_start.u - p2.v, -p2_start.v + p2.u); + let p2_frac = if first { + p2_start.frac + } else if join_flag { + 255 + } else { + 255 - p2.frac + }; + + fill(Some(p1_coord), p1.frac, p2_coord, p2_frac); + first = false; + } +} + +// Private extension functions for the `Point` type not useful +// enough to be exposed in the public API. + +impl Point { + /// Returns point on the left side of the current point. + fn onleft(self) -> Self { + Self { + x: self.x - 1, + ..self + } + } + + /// Returns point on the right side of the current point. + fn onright(self) -> Self { + Self { + x: self.x + 1, + ..self + } + } + + /// Returns point above the current point. + fn above(self) -> Self { + Self { + y: self.y - 1, + ..self + } + } + + /// Returns point below the current point. + fn under(self) -> Self { + Self { + y: self.y + 1, + ..self + } + } + + /// Rotates the point around (0,0) by `octant` * 45 degrees. + fn rot(self, octant: i16) -> Self { + let mut result = self; + + if (octant + 1) & 2 != 0 { + result = Point::new(-result.y, -result.x); + } + + if octant & 4 != 0 { + result = Point::new(-result.x, result.y); + } + + if (octant + 2) & 4 != 0 { + result = Point::new(result.x, -result.y); + } + + result + } +} diff --git a/core/embed/rust/src/ui/shape/canvas/mod.rs b/core/embed/rust/src/ui/shape/canvas/mod.rs new file mode 100644 index 0000000000..9e4507d6e8 --- /dev/null +++ b/core/embed/rust/src/ui/shape/canvas/mod.rs @@ -0,0 +1,11 @@ +mod common; +mod mono8; +mod rgb565; +mod rgba8888; +mod viewport; + +pub use common::{BasicCanvas, Canvas}; +pub use mono8::Mono8Canvas; +pub use rgb565::Rgb565Canvas; +pub use rgba8888::Rgba8888Canvas; +pub use viewport::Viewport; diff --git a/core/embed/rust/src/ui/shape/canvas/mono8.rs b/core/embed/rust/src/ui/shape/canvas/mono8.rs new file mode 100644 index 0000000000..429c288696 --- /dev/null +++ b/core/embed/rust/src/ui/shape/canvas/mono8.rs @@ -0,0 +1,114 @@ +use crate::{ + trezorhal::bitblt::{BitBltCopy, BitBltFill}, + ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + }, +}; + +use super::{ + super::{Bitmap, BitmapFormat, BitmapView}, + BasicCanvas, Canvas, Viewport, +}; + +#[cfg(feature = "ui_blurring")] +use super::super::DrawingCache; + +/// A struct representing 8-bit monochromatic canvas +pub struct Mono8Canvas<'a> { + bitmap: Bitmap<'a>, + viewport: Viewport, +} + +impl<'a> Mono8Canvas<'a> { + /// Creates a new canvas with the specified size and buffer. + /// + /// Optionally minimal height can be specified and then the height + /// of the new bitmap is adjusted to the buffer size. + /// + /// Returns None if the buffer is not big enough. + pub fn new( + size: Offset, + stride: Option<usize>, + min_height: Option<i16>, + buff: &'a mut [u8], + ) -> Option<Self> { + let bitmap = Bitmap::new_mut(BitmapFormat::MONO8, stride, size, min_height, buff)?; + let viewport = Viewport::from_size(bitmap.size()); + Some(Self { bitmap, viewport }) + } + + /// Returns the specified row as a mutable slice. + /// + /// Returns None if row is out of range. + pub fn row_mut(&mut self, row: i16) -> Option<&mut [u8]> { + self.bitmap.row_mut(row) + } +} + +impl<'a> BasicCanvas for Mono8Canvas<'a> { + fn viewport(&self) -> Viewport { + self.viewport + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.viewport = viewport.absolute_clip(self.bounds()); + } + + fn size(&self) -> Offset { + self.bitmap.size() + } + + fn fill_rect(&mut self, r: Rect, color: Color, alpha: u8) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltFill::new(r, self.viewport.clip, color, alpha) { + bitblt.mono8_fill(&mut self.bitmap); + } + } + + fn draw_bitmap(&mut self, r: Rect, bitmap: BitmapView) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltCopy::new(r, self.viewport.clip, &bitmap) { + bitblt.mono8_copy(&mut self.bitmap); + } + } +} + +impl<'a> Canvas for Mono8Canvas<'a> { + fn view(&self) -> BitmapView { + BitmapView::new(&self.bitmap) + } + + fn draw_pixel(&mut self, pt: Point, color: Color) { + let pt = pt + self.viewport.origin; + if self.viewport.clip.contains(pt) { + if let Some(row) = self.row_mut(pt.y) { + row[pt.x as usize] = color.luminance() as u8; + } + } + } + + fn blend_pixel(&mut self, pt: Point, color: Color, alpha: u8) { + let pt = pt + self.viewport.origin; + if self.viewport.clip.contains(pt) { + if let Some(row) = self.row_mut(pt.y) { + let pixel = &mut row[pt.x as usize]; + let fg_color = color.luminance() as u16; + let bg_color = *pixel as u16; + *pixel = ((fg_color * alpha as u16 + bg_color * (255 - alpha) as u16) / 255) as u8; + } + } + } + + fn blend_bitmap(&mut self, r: Rect, src: BitmapView) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltCopy::new(r, self.viewport.clip, &src) { + bitblt.mono8_blend(&mut self.bitmap); + } + } + + #[cfg(feature = "ui_blurring")] + fn blur_rect(&mut self, _r: Rect, _radius: usize, _cache: &DrawingCache) { + unimplemented!(); + } +} diff --git a/core/embed/rust/src/ui/shape/canvas/rgb565.rs b/core/embed/rust/src/ui/shape/canvas/rgb565.rs new file mode 100644 index 0000000000..db0b0ae0aa --- /dev/null +++ b/core/embed/rust/src/ui/shape/canvas/rgb565.rs @@ -0,0 +1,137 @@ +use crate::{ + trezorhal::bitblt::{BitBltCopy, BitBltFill}, + ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + }, +}; + +use super::{ + super::{Bitmap, BitmapFormat, BitmapView}, + BasicCanvas, Canvas, Viewport, +}; + +#[cfg(feature = "ui_blurring")] +use super::super::DrawingCache; + +/// A struct representing 16-bit (RGB565) color canvas +pub struct Rgb565Canvas<'a> { + bitmap: Bitmap<'a>, + viewport: Viewport, +} + +impl<'a> Rgb565Canvas<'a> { + /// Creates a new canvas with the specified size and buffer. + /// + /// Optionally minimal height can be specified and then the height + /// of the new bitmap is adjusted to the buffer size. + /// + /// Returns None if the buffer is not big enough. + pub fn new( + size: Offset, + stride: Option<usize>, + min_height: Option<i16>, + buff: &'a mut [u8], + ) -> Option<Self> { + let bitmap = Bitmap::new_mut(BitmapFormat::RGB565, stride, size, min_height, buff)?; + let viewport = Viewport::from_size(bitmap.size()); + Some(Self { bitmap, viewport }) + } + + /// Returns the specified row as a mutable slice. + /// + /// Returns None if row is out of range. + pub fn row_mut(&mut self, row: i16) -> Option<&mut [u16]> { + self.bitmap.row_mut(row) + } +} + +impl<'a> BasicCanvas for Rgb565Canvas<'a> { + fn size(&self) -> Offset { + self.bitmap.size() + } + + fn viewport(&self) -> Viewport { + self.viewport + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.viewport = viewport.absolute_clip(self.bounds()); + } + + fn fill_rect(&mut self, r: Rect, color: Color, alpha: u8) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltFill::new(r, self.viewport.clip, color, alpha) { + bitblt.rgb565_fill(&mut self.bitmap); + } + } + + fn draw_bitmap(&mut self, r: Rect, bitmap: BitmapView) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltCopy::new(r, self.viewport.clip, &bitmap) { + bitblt.rgb565_copy(&mut self.bitmap); + } + } +} + +impl<'a> Canvas for Rgb565Canvas<'a> { + fn view(&self) -> BitmapView { + BitmapView::new(&self.bitmap) + } + + fn draw_pixel(&mut self, pt: Point, color: Color) { + let pt = pt + self.viewport.origin; + if self.viewport.clip.contains(pt) { + if let Some(row) = self.row_mut(pt.y) { + row[pt.x as usize] = color.into(); + } + } + } + + fn blend_pixel(&mut self, pt: Point, color: Color, alpha: u8) { + let pt = pt + self.viewport.origin; + if self.viewport.clip.contains(pt) { + if let Some(row) = self.row_mut(pt.y) { + let pixel = &mut row[pt.x as usize]; + let bg_color: Color = (*pixel).into(); + *pixel = bg_color.blend(color, alpha).into(); + } + } + } + + fn blend_bitmap(&mut self, r: Rect, src: BitmapView) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltCopy::new(r, self.viewport.clip, &src) { + bitblt.rgb565_blend(&mut self.bitmap); + } + } + + #[cfg(feature = "ui_blurring")] + fn blur_rect(&mut self, r: Rect, radius: usize, cache: &DrawingCache) { + let clip = r.translate(self.viewport.origin).clamp(self.viewport.clip); + + let ofs = radius as i16; + + if clip.width() > 2 * ofs - 1 && clip.height() > 2 * ofs - 1 { + let mut blur_cache = cache.blur(); + let (blur, _) = unwrap!( + blur_cache.get(clip.size(), radius, None), + "Too small blur buffer" + ); + + loop { + if let Some(y) = blur.push_ready() { + let row = unwrap!(self.row_mut(y + clip.y0)); // can't panic + blur.push(&row[clip.x0 as usize..clip.x1 as usize]); + } + if let Some(y) = blur.pop_ready() { + let row = unwrap!(self.row_mut(y + clip.y0)); // can't panic + blur.pop(&mut row[clip.x0 as usize..clip.x1 as usize], None); + if y + 1 >= clip.height() { + break; + } + } + } + } + } +} diff --git a/core/embed/rust/src/ui/shape/canvas/rgba8888.rs b/core/embed/rust/src/ui/shape/canvas/rgba8888.rs new file mode 100644 index 0000000000..f58be3c846 --- /dev/null +++ b/core/embed/rust/src/ui/shape/canvas/rgba8888.rs @@ -0,0 +1,128 @@ +use crate::{ + trezorhal::bitblt::{BitBltCopy, BitBltFill}, + ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + }, +}; + +use super::{ + super::{Bitmap, BitmapFormat, BitmapView}, + BasicCanvas, Canvas, Viewport, +}; + +#[cfg(feature = "ui_blurring")] +use super::super::DrawingCache; + +/// A struct representing 32-bit (RGBA8888) color canvas +pub struct Rgba8888Canvas<'a> { + bitmap: Bitmap<'a>, + viewport: Viewport, +} + +impl<'a> Rgba8888Canvas<'a> { + /// Creates a new canvas with the specified size and buffer. + /// + /// Optionally minimal height can be specified and then the height + /// of the new bitmap is adjusted to the buffer size. + /// + /// Returns None if the buffer is not big enough. + pub fn new( + size: Offset, + stride: Option<usize>, + min_height: Option<i16>, + buff: &'a mut [u8], + ) -> Option<Self> { + let bitmap = Bitmap::new_mut(BitmapFormat::RGBA8888, stride, size, min_height, buff)?; + let viewport = Viewport::from_size(bitmap.size()); + Some(Self { bitmap, viewport }) + } + + /// Returns the specified row as a mutable slice. + /// + /// Returns None if row is out of range. + pub fn row_mut(&mut self, row: i16) -> Option<&mut [u32]> { + self.bitmap.row_mut(row) + } +} + +impl<'a> BasicCanvas for Rgba8888Canvas<'a> { + fn size(&self) -> Offset { + self.bitmap.size() + } + + fn viewport(&self) -> Viewport { + self.viewport + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.viewport = viewport.absolute_clip(self.bounds()); + } + + fn fill_rect(&mut self, r: Rect, color: Color, alpha: u8) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltFill::new(r, self.viewport.clip, color, alpha) { + bitblt.rgba8888_fill(&mut self.bitmap); + } + } + + fn draw_bitmap(&mut self, r: Rect, bitmap: BitmapView) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltCopy::new(r, self.viewport.clip, &bitmap) { + bitblt.rgba8888_copy(&mut self.bitmap); + } + } +} + +impl<'a> Canvas for Rgba8888Canvas<'a> { + fn view(&self) -> BitmapView { + BitmapView::new(&self.bitmap) + } + + fn draw_pixel(&mut self, pt: Point, color: Color) { + let pt = pt + self.viewport.origin; + if self.viewport.clip.contains(pt) { + if let Some(row) = self.row_mut(pt.y) { + row[pt.x as usize] = color.to_u32(); + } + } + } + + fn blend_pixel(&mut self, pt: Point, color: Color, alpha: u8) { + let pt = pt + self.viewport.origin; + if self.viewport.clip.contains(pt) { + if let Some(row) = self.row_mut(pt.y) { + let bg = row[pt.x as usize]; + + let bg_r = ((bg & 0x00FF0000) >> 16) as u16; + let bg_g = ((bg & 0x0000FF00) >> 8) as u16; + let bg_b = (bg & 0x000000FF) as u16; + + let fg_r = color.r() as u16; + let fg_g = color.g() as u16; + let fg_b = color.b() as u16; + + let fg_mul = alpha as u16; + let bg_mul = (255 - alpha) as u16; + + let r = ((fg_r * fg_mul + bg_r * bg_mul) / 255) as u32; + let g = ((fg_g * fg_mul + bg_g * bg_mul) / 255) as u32; + let b = ((fg_b * fg_mul + bg_b * bg_mul) / 255) as u32; + + row[pt.x as usize] = (0xFF << 24) | (r << 16) | (g << 8) | b; + } + } + } + + fn blend_bitmap(&mut self, r: Rect, src: BitmapView) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltCopy::new(r, self.viewport.clip, &src) { + bitblt.rgba8888_blend(&mut self.bitmap); + } + } + + #[cfg(feature = "ui_blurring")] + fn blur_rect(&mut self, _r: Rect, _radius: usize, _cache: &DrawingCache) { + // TODO + } +} diff --git a/core/embed/rust/src/ui/shape/canvas/viewport.rs b/core/embed/rust/src/ui/shape/canvas/viewport.rs new file mode 100644 index 0000000000..aca7f0b653 --- /dev/null +++ b/core/embed/rust/src/ui/shape/canvas/viewport.rs @@ -0,0 +1,103 @@ +use crate::ui::geometry::{Offset, Rect}; + +/// The Viewport concept is foundation for clipping and translating +/// during drawing on the general canvas. +/// +/// The Viewport structure comprises a rectangle representing the +/// clipping area and a drawing origin (or offset), which is applied +/// to all coordinates passed to the drawing functions. +/// +/// Two coordination systems exist - "absolute" and "relative." +/// +/// In the "absolute" coordinate system, (0, 0) is at the left-top of +/// a referenced canvas (device or bitmap). +/// +/// Relative coordinates are with respect to the viewport origin. +/// The relative coordinate (0, 0) is located at (viewport.origin.x, +/// viewport.origin.y). +/// +/// Conversion between "absolute" and "relative" coordinates is straightforward: +/// +/// pt_absolute = pt_relative.translate(viewport.origin) +/// +/// pt_relative = pt_absolute.translate(-viewport.origin) +/// +/// The Viewport's clipping area and origin are always in "absolute" +/// coordinates. Canvas objects utilize the viewport to translate "relative" +/// coordinates passed to drawing functions into "absolute" coordinates that +/// correspond to the target device or bitmap. + +#[derive(Copy, Clone)] +pub struct Viewport { + /// Clipping rectangle relative to the canvas top-left corner + pub clip: Rect, + /// Offset applied to all coordinates before clipping + pub origin: Offset, +} + +impl Viewport { + /// Creates a new viewport with specified clip rectangle and origin at + /// (0,0). + pub fn new(clip: Rect) -> Self { + Self { + clip, + origin: Offset::zero(), + } + } + + /// Creates a new viewport with specified size and origin at (0,0). + pub fn from_size(size: Offset) -> Self { + Self { + clip: Rect::from_size(size), + origin: Offset::zero(), + } + } + + /// Checks if the viewport intersects with the specified rectangle + /// given in relative coordinates. + pub fn contains(&self, r: Rect) -> bool { + !r.translate(self.origin).clamp(self.clip).is_empty() + } + + pub fn translate(self, offset: Offset) -> Self { + Self { + clip: self.clip.translate(offset), + origin: self.origin + offset, + } + } + + /// Creates a new viewport with the new origin given in + /// absolute coordinates. + pub fn with_origin(self, origin: Offset) -> Self { + Self { origin, ..self } + } + + /// Creates a clip of the viewport containing only the specified rectangle + /// given in absolute coordinates. The origin of the new viewport + /// remains unchanged. + pub fn absolute_clip(self, r: Rect) -> Self { + Self { + clip: r.clamp(self.clip), + ..self + } + } + + /// Creates a clip of the viewport containing only the specified rectangle + /// given in relative coordinates. The origin of the new viewport + /// remains unchanged. + pub fn relative_clip(self, r: Rect) -> Self { + Self { + clip: r.translate(self.origin).clamp(self.clip), + ..self + } + } + + /// Creates a clip of the viewport containing only the specified rectangle + /// given in relative coordinates. The origin of the new viewport + /// is set to the top-left corner of the rectangle. + pub fn relative_window(&self, r: Rect) -> Self { + let clip = r.translate(self.origin).clamp(self.clip); + let origin = self.origin + (clip.top_left() - self.clip.top_left()); + Self { clip, origin } + } +} diff --git a/core/embed/rust/src/ui/shape/circle.rs b/core/embed/rust/src/ui/shape/circle.rs new file mode 100644 index 0000000000..95296e0cba --- /dev/null +++ b/core/embed/rust/src/ui/shape/circle.rs @@ -0,0 +1,139 @@ +use crate::ui::{ + display::Color, + geometry::{Point, Rect}, +}; + +use super::{Canvas, DrawingCache, Renderer, Shape, ShapeClone}; + +use without_alloc::alloc::LocalAllocLeakExt; + +/// A shape for rendering various types of circles or circle sectors. +pub struct Circle { + center: Point, + radius: i16, + fg_color: Option<Color>, + bg_color: Option<Color>, + thickness: i16, + start_angle: Option<i16>, + end_angle: Option<i16>, +} + +impl Circle { + pub fn new(center: Point, radius: i16) -> Self { + Self { + center, + radius, + fg_color: None, + bg_color: None, + thickness: 1, + start_angle: None, + end_angle: None, + } + } + + pub fn with_fg(self, fg_color: Color) -> Self { + Self { + fg_color: Some(fg_color), + ..self + } + } + + pub fn with_bg(self, bg_color: Color) -> Self { + Self { + bg_color: Some(bg_color), + ..self + } + } + + pub fn with_thickness(self, thickness: i16) -> Self { + Self { thickness, ..self } + } + + pub fn with_start_angle(self, from_angle: i16) -> Self { + Self { + start_angle: Some(from_angle), + ..self + } + } + + pub fn with_end_angle(self, to_angle: i16) -> Self { + Self { + end_angle: Some(to_angle), + ..self + } + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } +} + +impl Shape<'_> for Circle { + fn bounds(&self) -> Rect { + let c = self.center; + let r = self.radius; + Rect::new( + Point::new(c.x - r, c.y - r), + Point::new(c.x + r + 1, c.y + r + 1), + ) + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache) { + // NOTE: drawing of circles without a background and with a thickness > 1 + // is not supported. If we needed it, we would have to + // introduce RgbCanvas::draw_ring() function. + + // TODO: panic! in unsupported scenarious + let th = match self.fg_color { + Some(_) => self.thickness, + None => 0, + }; + + if self.start_angle.is_none() && self.end_angle.is_none() { + if th == 1 { + if let Some(color) = self.bg_color { + canvas.fill_circle(self.center, self.radius, color); + } + if let Some(color) = self.fg_color { + #[cfg(not(feature = "ui_antialiasing"))] + canvas.draw_circle(self.center, self.radius, color); + #[cfg(feature = "ui_antialiasing")] + canvas.fill_circle(self.center, self.radius, color); + } + } else { + if let Some(color) = self.fg_color { + if th > 0 { + canvas.fill_circle(self.center, self.radius, color); + } + } + if let Some(color) = self.bg_color { + canvas.fill_circle(self.center, self.radius - th, color); + } + } + } else { + let start = self.start_angle.unwrap_or(0); + let end = self.end_angle.unwrap_or(360); + + if let Some(color) = self.fg_color { + if th > 0 { + canvas.fill_sector(self.center, self.radius, start, end, color); + } + } + if let Some(color) = self.bg_color { + canvas.fill_sector(self.center, self.radius - th, start, end, color); + } + } + } +} + +impl<'s> ShapeClone<'s> for Circle { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape<'s>> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(Circle { ..self })) + } +} diff --git a/core/embed/rust/src/ui/shape/display/fake_display.rs b/core/embed/rust/src/ui/shape/display/fake_display.rs new file mode 100644 index 0000000000..43d6cac828 --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/fake_display.rs @@ -0,0 +1,11 @@ +use crate::ui::{ + display::Color, + shape::{DirectRenderer, Mono8Canvas, Viewport}, +}; + +pub fn render_on_display<'a, F>(_viewport: Option<Viewport>, _bg_color: Option<Color>, _func: F) +where + F: FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>), +{ + unimplemented!(); +} diff --git a/core/embed/rust/src/ui/shape/display/fb_mono8.rs b/core/embed/rust/src/ui/shape/display/fb_mono8.rs new file mode 100644 index 0000000000..aa0a454d49 --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/fb_mono8.rs @@ -0,0 +1,55 @@ +use crate::ui::{ + display::Color, + geometry::Offset, + shape::{BasicCanvas, DirectRenderer, DrawingCache, Mono8Canvas, Viewport}, +}; + +use crate::trezorhal::display; + +use static_alloc::Bump; + +/// Creates the `Renderer` object for drawing on a display and invokes a +/// user-defined function that takes a single argument `target`. The user's +/// function can utilize the `target` for drawing on the display. +/// +/// `clip` specifies a rectangle area that the user will draw to. +/// If no clip is specified, the entire display area is used. +/// +/// `bg_color` specifies a background color with which the clip is filled before +/// the drawing starts. If the background color is None, the background +/// is undefined, and the user has to fill it themselves. +pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +where + F: FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>), +{ + const BUMP_SIZE: usize = DrawingCache::get_bump_a_size() + DrawingCache::get_bump_b_size(); + + static mut BUMP: Bump<[u8; BUMP_SIZE]> = Bump::uninit(); + + let bump = unsafe { &mut *core::ptr::addr_of_mut!(BUMP) }; + { + let width = display::DISPLAY_RESX as i16; + let height = display::DISPLAY_RESY as i16; + + bump.reset(); + + let cache = DrawingCache::new(bump, bump); + + let (fb, fb_stride) = display::get_frame_buffer(); + + let mut canvas = unwrap!(Mono8Canvas::new( + Offset::new(width, height), + Some(fb_stride), + None, + fb + )); + + if let Some(viewport) = viewport { + canvas.set_viewport(viewport); + } + + let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache); + + func(&mut target); + } +} diff --git a/core/embed/rust/src/ui/shape/display/fb_rgb565.rs b/core/embed/rust/src/ui/shape/display/fb_rgb565.rs new file mode 100644 index 0000000000..c229d980ac --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/fb_rgb565.rs @@ -0,0 +1,62 @@ +use crate::ui::{ + display::Color, + geometry::Offset, + shape::{BasicCanvas, DirectRenderer, DrawingCache, Rgb565Canvas, Viewport}, +}; + +use crate::trezorhal::display; + +use static_alloc::Bump; + +/// Creates the `Renderer` object for drawing on a display and invokes a +/// user-defined function that takes a single argument `target`. The user's +/// function can utilize the `target` for drawing on the display. +/// +/// `clip` specifies a rectangle area that the user will draw to. +/// If no clip is specified, the entire display area is used. +/// +/// `bg_color` specifies a background color with which the clip is filled before +/// the drawing starts. If the background color is None, the background +/// is undefined, and the user has to fill it themselves. +pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +where + F: FnOnce(&mut DirectRenderer<'_, 'a, Rgb565Canvas<'a>>), +{ + const BUMP_A_SIZE: usize = DrawingCache::get_bump_a_size(); + const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); + + #[cfg_attr(not(target_os = "macos"), link_section = ".no_dma_buffers")] + static mut BUMP_A: Bump<[u8; BUMP_A_SIZE]> = Bump::uninit(); + + #[cfg_attr(not(target_os = "macos"), link_section = ".buf")] + static mut BUMP_B: Bump<[u8; BUMP_B_SIZE]> = Bump::uninit(); + + let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; + let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; + { + let width = display::DISPLAY_RESX as i16; + let height = display::DISPLAY_RESY as i16; + + bump_a.reset(); + bump_b.reset(); + + let cache = DrawingCache::new(bump_a, bump_b); + + let (fb, fb_stride) = display::get_frame_buffer(); + + let mut canvas = unwrap!(Rgb565Canvas::new( + Offset::new(width, height), + Some(fb_stride), + None, + fb + )); + + if let Some(viewport) = viewport { + canvas.set_viewport(viewport); + } + + let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache); + + func(&mut target); + } +} diff --git a/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs b/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs new file mode 100644 index 0000000000..d1e732fa9e --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs @@ -0,0 +1,62 @@ +use crate::ui::{ + display::Color, + geometry::Offset, + shape::{BasicCanvas, DirectRenderer, DrawingCache, Rgba8888Canvas, Viewport}, +}; + +use static_alloc::Bump; + +use crate::trezorhal::display; + +/// Creates the `Renderer` object for drawing on a display and invokes a +/// user-defined function that takes a single argument `target`. The user's +/// function can utilize the `target` for drawing on the display. +/// +/// `clip` specifies a rectangle area that the user will draw to. +/// If no clip is specified, the entire display area is used. +/// +/// `bg_color` specifies a background color with which the clip is filled before +/// the drawing starts. If the background color is None, the background +/// is undefined, and the user has to fill it themselves. +pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +where + F: FnOnce(&mut DirectRenderer<'_, 'a, Rgba8888Canvas<'a>>), +{ + const BUMP_A_SIZE: usize = DrawingCache::get_bump_a_size(); + const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); + + #[cfg_attr(not(target_os = "macos"), link_section = ".no_dma_buffers")] + static mut BUMP_A: Bump<[u8; BUMP_A_SIZE]> = Bump::uninit(); + + #[cfg_attr(not(target_os = "macos"), link_section = ".buf")] + static mut BUMP_B: Bump<[u8; BUMP_B_SIZE]> = Bump::uninit(); + + let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; + let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; + { + let width = display::DISPLAY_RESX as i16; + let height = display::DISPLAY_RESY as i16; + + bump_a.reset(); + bump_b.reset(); + + let cache = DrawingCache::new(bump_a, bump_b); + + let (fb, fb_stride) = display::get_frame_buffer(); + + let mut canvas = unwrap!(Rgba8888Canvas::new( + Offset::new(width, height), + Some(fb_stride), + None, + fb + )); + + if let Some(viewport) = viewport { + canvas.set_viewport(viewport); + } + + let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache); + + func(&mut target); + } +} diff --git a/core/embed/rust/src/ui/shape/display/memory.md b/core/embed/rust/src/ui/shape/display/memory.md new file mode 100644 index 0000000000..ec7093dacc --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/memory.md @@ -0,0 +1,58 @@ +## Memory usage comparison + +## Legacy solution + +**Memory with DMA access** + +``` +buffer_line_16bpp @.buf 1440 +buffer_line_4bpp @.buf 360 +buffer_text @.buf 4320 +------------------------------------------------- + 6120 +``` + +**Memory without DMA access** + +``` +buffer_jpeg @.no_dma 7680 +buffer_jpeg_work @.no_dma 10500 +buffer_blurring @.no_dma 14400 +buffer_blurring_totals @.no_dma 1440 +zlib context+window @.stack 2308 +------------------------------------------------- + 36328 +``` + +## New drawing library + +The memory usage is configurable, so the two options are considered.\ + +MIN variant is slower, but consumes less memory. OPT variant should +be sufficient for all purposes. + + +**Memory with DMA access** + +``` + MIN OPT +ProgressiveRenderer.slice @.buf 480 7680 +ProgressiveRenderer.scratch @.buf 480 2048 +--------------------------------------------------------- + 960 9728 +``` + +**Memory without DMA access** + +``` +ProgressiveRenderer.list @.stack 512 2048 +zlib decompression context @.no_dma 2308 6924 +jpeg decompressor @.no_dma 10500 10500 +partial jpeg image @.no_dma 7680 7680 +blurring window/totals @.no_dma 7920 7920 +------------------------------------------------------------------ + 28920 35072 +``` + + + diff --git a/core/embed/rust/src/ui/shape/display/mod.rs b/core/embed/rust/src/ui/shape/display/mod.rs new file mode 100644 index 0000000000..e4be78b5b5 --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/mod.rs @@ -0,0 +1,40 @@ +#[cfg(all(feature = "xframebuffer", feature = "display_mono"))] +pub mod fb_mono8; +#[cfg(all(feature = "xframebuffer", feature = "display_mono"))] +pub use fb_mono8::render_on_display; + +#[cfg(all(not(feature = "xframebuffer"), feature = "display_rgb565"))] +pub mod nofb_rgb565; +#[cfg(all(not(feature = "xframebuffer"), feature = "display_rgb565"))] +pub use nofb_rgb565::render_on_display; + +#[cfg(all( + feature = "xframebuffer", + feature = "display_rgb565", + not(feature = "display_rgba8888") +))] +pub mod fb_rgb565; +#[cfg(all( + feature = "xframebuffer", + feature = "display_rgb565", + not(feature = "display_rgba8888") +))] +pub use fb_rgb565::render_on_display; + +#[cfg(all( + feature = "xframebuffer", + feature = "display_rgba8888", + not(feature = "display_rgb565") +))] +pub mod fb_rgba8888; +#[cfg(all( + feature = "xframebuffer", + feature = "display_rgba8888", + not(feature = "display_rgb565") +))] +pub use fb_rgba8888::render_on_display; + +#[cfg(not(feature = "new_rendering"))] +pub mod fake_display; +#[cfg(not(feature = "new_rendering"))] +pub use fake_display::render_on_display; diff --git a/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs b/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs new file mode 100644 index 0000000000..885b978329 --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs @@ -0,0 +1,107 @@ +use crate::trezorhal::{ + bitblt::{BitBltCopy, BitBltFill}, + display, +}; + +use crate::ui::{ + display::Color, + geometry::{Offset, Rect}, +}; + +use super::super::{BasicCanvas, BitmapView, DrawingCache, ProgressiveRenderer, Viewport}; + +use static_alloc::Bump; + +// Maximum number of shapes on a single screen +const SHAPE_MAX_COUNT: usize = 45; +// Memory reserved for ProgressiveRenderes shape storage +const SHAPE_MEM_SIZE: usize = 5 * 1024; +// Memory not accessible by DMA +const BUMP_A_SIZE: usize = DrawingCache::get_bump_a_size() + SHAPE_MEM_SIZE; +// Memory accessible by DMA +const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); + +/// Creates the `Renderer` object for drawing on a display and invokes a +/// user-defined function that takes a single argument `target`. The user's +/// function can utilize the `target` for drawing on the display. +/// +/// `clip` specifies a rectangle area that the user will draw to. +/// If no clip is specified, the entire display area is used. +/// +/// `bg_color` specifies a background color with which the clip is filled before +/// the drawing starts. If the background color is None, the background +/// is undefined, and the user has to fill it themselves. +pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +where + F: FnOnce(&mut ProgressiveRenderer<'_, 'a, Bump<[u8; BUMP_A_SIZE]>, DisplayCanvas>), +{ + #[cfg_attr(not(target_os = "macos"), link_section = ".no_dma_buffers")] + static mut BUMP_A: Bump<[u8; BUMP_A_SIZE]> = Bump::uninit(); + + #[cfg_attr(not(target_os = "macos"), link_section = ".buf")] + static mut BUMP_B: Bump<[u8; BUMP_B_SIZE]> = Bump::uninit(); + + let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; + let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; + { + bump_a.reset(); + bump_b.reset(); + + let cache = DrawingCache::new(bump_a, bump_b); + let mut canvas = DisplayCanvas::new(); + + if let Some(viewport) = viewport { + canvas.set_viewport(viewport); + } + + let mut target = + ProgressiveRenderer::new(&mut canvas, bg_color, &cache, bump_a, SHAPE_MAX_COUNT); + + func(&mut target); + + target.render(16); + } +} + +/// A simple display canvas allowing just two bitblt operations: +/// 'fill_rect' and 'draw_bitmap` needed by `ProgressiveRenderer`. +pub struct DisplayCanvas { + size: Offset, + viewport: Viewport, +} + +impl DisplayCanvas { + pub fn new() -> Self { + let size = Offset::new(display::DISPLAY_RESX as i16, display::DISPLAY_RESY as i16); + let viewport = Viewport::from_size(size); + Self { size, viewport } + } +} + +impl BasicCanvas for DisplayCanvas { + fn viewport(&self) -> Viewport { + self.viewport + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.viewport = viewport.absolute_clip(self.bounds()); + } + + fn size(&self) -> Offset { + self.size + } + + fn fill_rect(&mut self, r: Rect, color: Color, _alpha: u8) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltFill::new(r, self.viewport.clip, color, 255) { + bitblt.display_fill(); + } + } + + fn draw_bitmap(&mut self, r: Rect, bitmap: BitmapView) { + let r = r.translate(self.viewport.origin); + if let Some(bitblt) = BitBltCopy::new(r, self.viewport.clip, &bitmap) { + bitblt.display_copy(); + } + } +} diff --git a/core/embed/rust/src/ui/shape/drawlib-rust-objects.drawio.svg b/core/embed/rust/src/ui/shape/drawlib-rust-objects.drawio.svg new file mode 100644 index 0000000000..6adc2a52bd --- /dev/null +++ b/core/embed/rust/src/ui/shape/drawlib-rust-objects.drawio.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Do not edit this file with editors other than draw.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="2502px" height="2362px" viewBox="-0.5 -0.5 2502 2362" content="<mxfile host="Electron" modified="2024-05-03T08:59:29.737Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.2.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="IgOwoyDg8wpzTntSyAlf" scale="1" border="0" version="24.2.5" type="device"> <diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1"> <mxGraphModel dx="2074" dy="1230" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="WIyWlLk6GJQsqaUBKTNV-0" /> <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" /> <mxCell id="1jXiUZ3aZraeuMmb4EUq-1" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;trait&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Shape&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;bounds&lt;/b&gt;(&amp;amp;DrawingCache) -&amp;gt; Offset&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;draw&lt;/b&gt;(&amp;amp;mut dyn Canvas, &amp;amp;DrawingCache)&lt;br&gt;+ &lt;b&gt;cleanup&lt;/b&gt;(&amp;amp;DrawingCache)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="1211" y="640" width="260" height="140" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-3" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;trait&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;ShapeClone&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;clone_at_pool&lt;/b&gt;(&amp;amp;LocalAllocExt) -&amp;gt; Option&amp;lt;&amp;amp;dyn Shape&amp;gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="1570" y="640" width="289" height="140" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-6" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;trait&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Renderer&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render_shape&lt;/b&gt;(Shape + ShapeClone)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;viewport&lt;/b&gt;() -&amp;gt; Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;set_viewport&lt;/b&gt;(Viewport)&lt;br&gt;+ &lt;b&gt;set_window&lt;/b&gt;(window: Rect) -&amp;gt; Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;set_clip&lt;/b&gt;(clip: Rect) -&amp;gt; Viewport&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;in_window&lt;/b&gt;(Rect, &amp;amp;dyn Fn(&amp;amp;mut Self))&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;in_clip&lt;/b&gt;(Rect, &amp;amp;dyn Fn(&amp;amp;mut Self))&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;with_origin&lt;/b&gt;(Rect, &amp;amp;dyn Fn(&amp;amp;mut Self))&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="310" y="460" width="340" height="200" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-11" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;DirectRenderer&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;canvas&lt;/b&gt;: &amp;amp;mut C: Canvas&lt;br&gt;- &lt;b&gt;cache&lt;/b&gt;: DrawingCache&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(&amp;amp;mut C: Canvas, bg_color: Option&amp;lt;Color&amp;gt;, &amp;amp;DrawingCache)&lt;br&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="155" y="735" width="250" height="140" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-12" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;ProgressiveRenderer&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;canvas&lt;/b&gt;: &amp;amp;mut C: BasicCanvas&lt;br&gt;- &lt;b&gt;bump&lt;/b&gt;: &amp;amp;LocalAllocExt&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;shapes&lt;/b&gt;: FixedVec&amp;lt;ShapeHolder&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;viewport&lt;/b&gt;: Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;bg_color&lt;/b&gt;: Option&amp;lt;Color&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;cache&lt;/b&gt;: DrawingCache&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(&amp;amp;mug C: BasicCanvvas, bg_color: Option&amp;lt;Color&amp;gt;, &amp;amp;DrawingCavhas,&amp;nbsp; &amp;amp;LocalAllocExt, max_shapes: usize) -&amp;gt; Self&lt;br&gt;+ &lt;b&gt;render&lt;/b&gt;(lines: usize)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="490" y="735" width="260" height="250" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-16" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-11" target="1jXiUZ3aZraeuMmb4EUq-6" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="270" y="630" as="sourcePoint" /> <mxPoint x="430" y="630" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-18" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.624;entryY=1.007;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-12" target="1jXiUZ3aZraeuMmb4EUq-6" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="820" y="640" as="sourcePoint" /> <mxPoint x="980" y="640" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-19" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;ShapeHolder&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;shape&lt;/b&gt;: &amp;amp;mut dyn Shape&lt;br&gt;+ &lt;b&gt;viewport&lt;/b&gt;: Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=3;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="910" y="820" width="150" height="120" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-23" value="Relation" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-12" target="1jXiUZ3aZraeuMmb4EUq-19" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="180" y="690" as="sourcePoint" /> <mxPoint x="340" y="690" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-24" value="0..n" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;" parent="1jXiUZ3aZraeuMmb4EUq-23" connectable="0" vertex="1"> <mxGeometry x="-1" relative="1" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-25" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" parent="1jXiUZ3aZraeuMmb4EUq-23" connectable="0" vertex="1"> <mxGeometry x="1" relative="1" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-26" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;DrawingCache&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;() -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;zlib&lt;/b&gt;() -&amp;gt; RefMut&amp;lt;ZlibCache&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;jpeg&lt;/b&gt;() -&amp;gt; RefMut&amp;lt;JpegCache&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;blur&lt;/b&gt;() -&amp;gt; RefMut&amp;lt;BlurCache&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;image_buff&lt;/b&gt;() -&amp;gt; Option&amp;lt;RefMut&amp;lt;ImageBuffRef&amp;gt;&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render_buff&lt;/b&gt;() -&amp;gt; Option&amp;lt;RefMut&amp;lt;RenderBuffRef&amp;gt;&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=2;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="255" y="1120" width="310" height="190" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-28" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-19" target="1jXiUZ3aZraeuMmb4EUq-1" edge="1"> <mxGeometry x="-1" y="3" relative="1" as="geometry"> <mxPoint x="1060" y="600" as="sourcePoint" /> <mxPoint x="1220" y="600" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-30" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-19" target="1jXiUZ3aZraeuMmb4EUq-31" edge="1"> <mxGeometry x="-1" y="3" relative="1" as="geometry"> <mxPoint x="1060" y="600" as="sourcePoint" /> <mxPoint x="1349.0500000000002" y="1053.04" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-31" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Viewport&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b&gt;origin&lt;/b&gt;: Offset&lt;br&gt;+&amp;nbsp;&lt;b&gt;clip&lt;/b&gt;: Rect&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;from_size&lt;/b&gt;(Offset) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+ &lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;contains&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;(Rect) -&amp;gt; bool&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;translate&lt;/b&gt;(Offset) -&amp;gt; Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;with_origin&lt;/b&gt;(Offset) -&amp;gt; Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;absolute_clip&lt;/b&gt;(Rect) -&amp;gt; Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;relative_clip&lt;/b&gt;(Rect) -&amp;gt; Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;relative_window&lt;/b&gt;(Rect) -&amp;gt; Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="1211" y="860" width="259" height="245" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-32" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-3" target="1jXiUZ3aZraeuMmb4EUq-1" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1060" y="640" as="sourcePoint" /> <mxPoint x="1220" y="640" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-33" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.473;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;exitPerimeter=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-12" target="1jXiUZ3aZraeuMmb4EUq-26" edge="1"> <mxGeometry x="-1" y="3" relative="1" as="geometry"> <mxPoint x="1060" y="1000" as="sourcePoint" /> <mxPoint x="557.5" y="1120" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-34" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-11" target="1jXiUZ3aZraeuMmb4EUq-26" edge="1"> <mxGeometry x="-1" y="3" relative="1" as="geometry"> <mxPoint x="1060" y="1000" as="sourcePoint" /> <mxPoint x="432.5" y="1120" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-52" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.554;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryPerimeter=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-98" target="1jXiUZ3aZraeuMmb4EUq-1" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1395" y="400" as="sourcePoint" /> <mxPoint x="1510" y="490" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-53" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-98" target="1jXiUZ3aZraeuMmb4EUq-3" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1870" y="440" as="sourcePoint" /> <mxPoint x="2030" y="440" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-56" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;ZlibCache&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;slots&lt;/b&gt;: [ZlibCacheSlot]&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(&amp;amp;bump, slot_count: u32) -&amp;gt; Option&amp;lt;Self&amp;gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;uncompress&lt;/b&gt;(zdata: &amp;amp;[u8], offset: usize, dest_buf: &amp;amp;mut [u8]) -&amp;gt; Result&amp;lt;bool, ())&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=2;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="140" y="1540" width="250" height="160" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-57" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;ZlibCacheSlot&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;zdata_tag&lt;/b&gt;: *const u8&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;offset&lt;/b&gt;: usize&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;dc&lt;/b&gt;: Option&amp;lt;UzlibContext&amp;gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;empty&lt;/b&gt;() -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;initialize&lt;/b&gt;(zdata: &amp;amp;[u8])&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;reset&lt;/b&gt;()&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;uncompress&lt;/b&gt;(dest_buf: &amp;amp;mut [u8])&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;skip&lt;/b&gt;(nbytes: usize)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;is_for&lt;/b&gt;(zdata: &amp;amp; [u8]) -&amp;gt; bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=2;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="140" y="1774" width="250" height="210" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-58" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;JpegCache&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;slots&lt;/b&gt;: [JpegCacheSlot]&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(&amp;amp;bump, slot_count: u32) -&amp;gt; Option&amp;lt;Self&amp;gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=2;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="420" y="1540" width="250" height="160" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-59" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;JpegCacheSlot&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;jpeg&lt;/b&gt;: &amp;amp; [u8]&lt;br&gt;- &lt;b&gt;input&lt;/b&gt;: tjpgd::BufferInput&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;decoder&lt;/b&gt;: tjpgd::JDEC&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(jpeg: &amp;amp;[u8]) -&amp;gt; Result&amp;lt;Self, Error&amp;gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;jpeg_size&lt;/b&gt;() -&amp;gt; Offset&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;is_for&lt;/b&gt;(jpeg: &amp;amp;[u8]) -&amp;gt; bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=2;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="420" y="1774" width="250" height="210" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-61" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-26" target="1jXiUZ3aZraeuMmb4EUq-58" edge="1"> <mxGeometry x="-1" y="3" relative="1" as="geometry"> <mxPoint x="980" y="1690" as="sourcePoint" /> <mxPoint x="1140" y="1690" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-62" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-26" target="1jXiUZ3aZraeuMmb4EUq-56" edge="1"> <mxGeometry x="-1" y="3" relative="1" as="geometry"> <mxPoint x="980" y="1690" as="sourcePoint" /> <mxPoint x="1140" y="1690" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-63" value="Relation" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-56" target="1jXiUZ3aZraeuMmb4EUq-57" edge="1"> <mxGeometry x="-0.0075" relative="1" as="geometry"> <mxPoint x="980" y="1690" as="sourcePoint" /> <mxPoint x="1140" y="1690" as="targetPoint" /> <mxPoint as="offset" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-64" value="0..n" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;" parent="1jXiUZ3aZraeuMmb4EUq-63" connectable="0" vertex="1"> <mxGeometry x="-1" relative="1" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-65" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" parent="1jXiUZ3aZraeuMmb4EUq-63" connectable="0" vertex="1"> <mxGeometry x="1" relative="1" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-69" value="Relation" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-58" target="1jXiUZ3aZraeuMmb4EUq-59" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="980" y="1690" as="sourcePoint" /> <mxPoint x="1140" y="1690" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-70" value="0..1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;" parent="1jXiUZ3aZraeuMmb4EUq-69" connectable="0" vertex="1"> <mxGeometry x="-1" relative="1" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-71" value="1" style="edgeLabel;resizable=0;html=1;align=right;verticalAlign=top;" parent="1jXiUZ3aZraeuMmb4EUq-69" connectable="0" vertex="1"> <mxGeometry x="1" relative="1" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-72" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;BlurCache&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;algo&lt;/b&gt;: Option&amp;lt;BlurAlgorithm&amp;gt;&lt;br&gt;-&amp;nbsp;&lt;b&gt;buff&lt;/b&gt;: &amp;amp;UnsafeCell&amp;lt;BlurBuff&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;tag&lt;/b&gt;: u32&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(&amp;amp;bump)&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;get&lt;/b&gt;(size: Offset, radius: usize, tag: Option&amp;lt;u32&amp;gt;) -&amp;gt; Result&amp;lt;&amp;amp;mut BlurAlgorithm&amp;lt;&#39;a&amp;gt;, u32), ()&amp;gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=2;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="720" y="1540" width="250" height="170" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-75" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;trait&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;BasicCanvas&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;size&lt;/b&gt;() -&amp;gt; Offset&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;bounds&lt;/b&gt;() -&amp;gt; Rect&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;width&lt;/b&gt;() -&amp;gt; i16&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;height&lt;/b&gt;() -&amp;gt; i16&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;viewport&lt;/b&gt;() -&amp;gt; Viewport&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+ &lt;b&gt;set_viewport&lt;/b&gt;(Viewport)&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;set_window&lt;/b&gt;&lt;span style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;(Rect) -&amp;gt; Viewport&lt;/span&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;set_clip&lt;/b&gt;(Rect) -&amp;gt; Viewport&lt;/p&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;fill_rect&lt;/b&gt;&lt;span style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;(Rect, Color)&lt;/span&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;fill_background&lt;/b&gt;(Color)&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;draw_bitmap&lt;/b&gt;(Rect, BitmapRef)&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="2050" y="830" width="260" height="445" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-76" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;trait&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Canvas&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;view&lt;/b&gt;() -&amp;gt; BitmapView&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;draw_pixel&lt;/b&gt;(Point, Color)&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;blend&lt;/b&gt;&lt;b style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;_pixel&lt;/b&gt;(Point, Color, u8)&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;blend_bitmap&lt;/b&gt;(Rect, BitmapView)&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;blur_rect&lt;/b&gt;(Rect, radius)&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial; border-color: var(--border-color);&quot;&gt;draw_round_rect&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;(Rect, radius, Color)&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial; border-color: var(--border-color);&quot;&gt;fill_round_rect&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;(Rect, radius, color)&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;draw_circle&lt;/b&gt;&lt;span style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;(Point, radius, Color)&lt;/span&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial; border-color: var(--border-color);&quot;&gt;fill_circle&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;(Point, radius, Color)&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;fill_sector&lt;/b&gt;(Point, i16, i16, i16, Color)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="1660" y="930" width="260" height="360" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-78" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-76" target="1jXiUZ3aZraeuMmb4EUq-75" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1290" y="1235" as="sourcePoint" /> <mxPoint x="1450" y="1235" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-79" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Rgb565Canvas&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;bitmap&lt;/b&gt;: Bitmap&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;viewport&lt;/b&gt;: Viewport&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(size: Offset, Option&amp;lt;i16&amp;gt;, &amp;amp;mut [u8]) -&amp;gt; Option&amp;lt;Self&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;row_mut&lt;/b&gt;(row: i16) -&amp;gt; Option&amp;lt;&amp;amp;mut [u16])&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="1661" y="1415" width="259" height="245" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-80" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Rgba8888Canvas&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;-&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;bitmap&lt;/b&gt;: Bitmap&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;-&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;viewport&lt;/b&gt;: Viewport&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;new&lt;/b&gt;(size: Offset, Option&amp;lt;i16&amp;gt;, &amp;amp;mut [u8) -&amp;gt; Option&amp;lt;Self&amp;gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;row_mut&lt;/b&gt;(row: i16) -&amp;gt; Option&amp;lt;&amp;amp;mut [u32])&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="2020" y="1415" width="259" height="245" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-83" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.894;exitY=1.021;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-1" target="1jXiUZ3aZraeuMmb4EUq-76" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1100" y="1230" as="sourcePoint" /> <mxPoint x="1870" y="1020" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-84" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.327;entryY=0.991;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-79" target="1jXiUZ3aZraeuMmb4EUq-76" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1430" y="1495" as="sourcePoint" /> <mxPoint x="1590" y="1495" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-85" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-79" target="1jXiUZ3aZraeuMmb4EUq-75" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1850" y="1365" as="sourcePoint" /> <mxPoint x="1800" y="1285" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-86" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.573;entryY=0.998;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-80" target="1jXiUZ3aZraeuMmb4EUq-76" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1430" y="1495" as="sourcePoint" /> <mxPoint x="1590" y="1495" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-87" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-80" target="1jXiUZ3aZraeuMmb4EUq-75" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1430" y="1495" as="sourcePoint" /> <mxPoint x="1590" y="1495" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-92" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Bitmap&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- ptr: *mut u8&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- stride: usize&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- size: Offset&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- format: BitmapFormat&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- mutable: bool&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- dma_pending: bool&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(BitmapFormat, Option&amp;lt;usize&amp;gt;, Offset,&amp;nbsp; Option&amp;lt;i16&amp;gt;, &amp;amp; [u8]) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;new_mut&lt;/b&gt;(BitmapFormat, Option&amp;lt;usize&amp;gt;, Offset,&amp;nbsp; Option&amp;lt;i16&amp;gt;, &amp;amp;mut&amp;nbsp; [u8]) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;size&lt;/b&gt;() -&amp;gt; Offset&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;width&lt;/b&gt;() -&amp;gt; i16&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;height&lt;/b&gt;() -&amp;gt; i16&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;stride&lt;/b&gt;() -&amp;gt; usize&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;view&lt;/b&gt;() -&amp;gt; BitmapView&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;row&lt;/b&gt;&amp;lt;T&amp;gt;(i16) -&amp;gt; Option&amp;lt;&amp;amp;[T}&amp;gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;row_mut&lt;/b&gt;&amp;lt;T&amp;gt;(i16) -&amp;gt; Option&amp;lt;&amp;amp;mut [T}&amp;gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;rows_mut&lt;/b&gt;&amp;lt;T&amp;gt;(i16, i16) -&amp;gt; Option&amp;lt;&amp;amp;mut [T}&amp;gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;rgb565_fill&lt;/b&gt;(Rect, Rect, Color)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;rgb565_copy&lt;/b&gt;(Rect, Rect, &amp;amp;BitmapView)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+ &lt;b&gt;rgb565_blend&lt;/b&gt;(Rect, Rect, &amp;amp;BitmapView)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;rgba8888_fill&lt;/b&gt;(Rect, Rect, Color)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;rgba8888_copy&lt;/b&gt;(Rect, Rect, &amp;amp;BitmapView)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;rgba8888_blend&lt;/b&gt;(Rect, Rect, &amp;amp;BitmapView)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;mono8_fill&lt;/b&gt;(Rect, Rect, Color)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;mono8_copy&lt;/b&gt;(Rect, Rect, &amp;amp;BitmapView)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;mono8_blend&lt;/b&gt;(Rect, Rect, &amp;amp;BitmapView)&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=3;fillColor=#fff2cc;strokeColor=#d6b656;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="1370" y="1810" width="360" height="550" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-93" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;BitmapView&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;-&amp;nbsp;&lt;b&gt;bitmap&lt;/b&gt;: &amp;amp;Bitmap&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;fg_color&lt;/b&gt;: Color&lt;br&gt;- &lt;b&gt;bg_color&lt;/b&gt;: Color&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;offset&lt;/b&gt;: Offset&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(&amp;amp;Bitmap) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;with_fg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_bg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_offset&lt;/b&gt;(Offset) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;size&lt;/b&gt;() -&amp;gt; Offset&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;width&lt;/b&gt;() -&amp;gt; i16&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;height&lt;/b&gt;() -&amp;gt; i16&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;format&lt;/b&gt;() -&amp;gt; BitmapFormat&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;row&lt;/b&gt;&amp;lt;T&amp;gt;(i16) -&amp;gt; Option&amp;lt;&amp;amp;[T]&amp;gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#e1d5e7;strokeColor=#9673a6;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="1265" y="1300" width="190" height="300" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-95" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;BitBltFill&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(Rect, Rect, color) -&amp;gt; Option&amp;lt;Self&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;rgb565_fill(&lt;/b&gt;dst: &amp;amp;Bitmap&lt;b&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;rgba8888_fill(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;mono8_fill(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+ &lt;b&gt;display_fill&lt;/b&gt;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=2;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="2020" y="1870" width="375" height="196" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-98" value="Shape objects" style="swimlane;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="420" y="20" width="1660" height="390" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-43" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;shape::Bar&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;-&amp;nbsp;&lt;b&gt;area&lt;/b&gt;: Rect&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;fg_color&lt;/b&gt;: Option&amp;lt;Color&amp;gt;&lt;br&gt;- &lt;b&gt;bg_color&lt;/b&gt;: Option&amp;lt;Color&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;thickness&lt;/b&gt;: i16&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;-&amp;nbsp;&lt;b&gt;radius&lt;/b&gt;: i16&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(Rect) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;with_fg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_bg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_radius&lt;/b&gt;(i16) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_thickness&lt;/b&gt;(i16) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render&lt;/b&gt;(&amp;amp;mut impl Renderer)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="1jXiUZ3aZraeuMmb4EUq-98" vertex="1"> <mxGeometry x="50" y="50" width="190" height="240" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-44" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;shape::Circle&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;-&amp;nbsp;&lt;b&gt;center:&amp;nbsp;&lt;/b&gt;&amp;nbsp;Point&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;fg_color&lt;/b&gt;: Option&amp;lt;Color&amp;gt;&lt;br&gt;- &lt;b&gt;bg_color&lt;/b&gt;: Option&amp;lt;Color&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;thickness&lt;/b&gt;: i16&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;-&amp;nbsp;&lt;b&gt;radius&lt;/b&gt;: i16&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;start_angle&lt;/b&gt;: Option&amp;lt;i16&amp;gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;end_angle&lt;/b&gt;: Option&amp;lt;i16&amp;gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(center: Point,radius: i16) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;with_fg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_bg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial; border-color: var(--border-color);&quot;&gt;with_thickness&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;(i16) -&amp;gt; Self&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+ &lt;b&gt;with_start_angle&lt;/b&gt;(i16) -&amp;gt; Self&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+ &lt;b&gt;with_end_angle&lt;/b&gt;(i16) -&amp;gt; Self&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render&lt;/b&gt;(&amp;amp;mut impl Renderer)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="1jXiUZ3aZraeuMmb4EUq-98" vertex="1"> <mxGeometry x="280" y="50" width="190" height="320" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-45" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;shape::Text&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;-&amp;nbsp;&lt;b&gt;area&lt;/b&gt;: Rect&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;-&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;text&lt;/b&gt;: &amp;amp;str&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;color&lt;/b&gt;: Color&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;font&lt;/b&gt;: Font&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(area: Rect, &amp;amp;str) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;with_fg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_font&lt;/b&gt;(Font) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render&lt;/b&gt;(&amp;amp;mut impl Renderer)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="1jXiUZ3aZraeuMmb4EUq-98" vertex="1"> <mxGeometry x="510" y="50" width="190" height="240" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-47" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;shape::ToifImage&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;pos&lt;/b&gt;: Point&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;toif&lt;/b&gt;: Toif&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;fg_color&lt;/b&gt;: Color&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;bg_color&lt;/b&gt;: Option&amp;lt;Color&amp;gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(area: Rect, Toif) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;with_fg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_bg&lt;/b&gt;(Color) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render&lt;/b&gt;(&amp;amp;mut impl Renderer)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="1jXiUZ3aZraeuMmb4EUq-98" vertex="1"> <mxGeometry x="740" y="50" width="190" height="240" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-48" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;shape::JpegImage&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;pos&lt;/b&gt;: Point&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;jpeg&lt;/b&gt;: &amp;amp;[u8]&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;scale&lt;/b&gt;: u8&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b style=&quot;border-color: var(--border-color);&quot;&gt;blur_radius&lt;/b&gt;: usize&lt;br&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(area: Rect, &amp;amp;[u8]) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_scale&lt;/b&gt;(u8) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;with_blur&lt;/b&gt;(usize) -&amp;gt; Self&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render&lt;/b&gt;(&amp;amp;mut impl Renderer)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="1jXiUZ3aZraeuMmb4EUq-98" vertex="1"> <mxGeometry x="970" y="50" width="190" height="240" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-49" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;shape::QrCode&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;area&lt;/b&gt;: Rect&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- &lt;b&gt;qr_modules&lt;/b&gt;: [u8; ..]&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;qr_size&lt;/b&gt;: i16&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- &lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;fg_color&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;: Color&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;bg_color&lt;/b&gt;: Option&amp;lt;Color&amp;gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(pos: Point, &amp;amp;str) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render&lt;/b&gt;(&amp;amp;mut impl Renderer)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="1jXiUZ3aZraeuMmb4EUq-98" vertex="1"> <mxGeometry x="1190" y="50" width="190" height="240" as="geometry" /> </mxCell> <mxCell id="9QmJLenIGQQ3Yc-i7Rvr-5" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;shape::Blurring&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;area&lt;/b&gt;: Rect&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;- &lt;b&gt;radius&lt;/b&gt;: usize&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;new&lt;/b&gt;(area: Rect, usize) -&amp;gt; Self&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;+ &lt;b&gt;render&lt;/b&gt;(&amp;amp;mut impl Renderer)&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=3;" parent="1jXiUZ3aZraeuMmb4EUq-98" vertex="1"> <mxGeometry x="1418" y="50" width="190" height="240" as="geometry" /> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-100" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-92" target="1jXiUZ3aZraeuMmb4EUq-95" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="2030" y="1810" as="sourcePoint" /> <mxPoint x="2190" y="1810" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="1jXiUZ3aZraeuMmb4EUq-102" value="" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;edgeStyle=orthogonalEdgeStyle;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-93" target="1jXiUZ3aZraeuMmb4EUq-92" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="2590" y="1530" as="sourcePoint" /> <mxPoint x="2750" y="1530" as="targetPoint" /> <Array as="points"> <mxPoint x="1360" y="1720" /> <mxPoint x="1550" y="1720" /> </Array> </mxGeometry> </mxCell> <mxCell id="jMiwEBN8Bp4u2bMYC65r-1" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-26" target="1jXiUZ3aZraeuMmb4EUq-72" edge="1"> <mxGeometry x="-1" y="3" relative="1" as="geometry"> <mxPoint x="420" y="1320" as="sourcePoint" /> <mxPoint x="555" y="1550" as="targetPoint" /> <Array as="points"> <mxPoint x="488" y="1390" /> <mxPoint x="845" y="1390" /> </Array> </mxGeometry> </mxCell> <mxCell id="9QmJLenIGQQ3Yc-i7Rvr-2" value="" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;edgeStyle=orthogonalEdgeStyle;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-79" target="1jXiUZ3aZraeuMmb4EUq-92" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1370" y="1570" as="sourcePoint" /> <mxPoint x="1535" y="1820" as="targetPoint" /> <Array as="points"> <mxPoint x="1791" y="1720" /> <mxPoint x="1550" y="1720" /> </Array> </mxGeometry> </mxCell> <mxCell id="9QmJLenIGQQ3Yc-i7Rvr-3" value="" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;strokeWidth=2;edgeStyle=orthogonalEdgeStyle;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-80" target="1jXiUZ3aZraeuMmb4EUq-92" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1718" y="1670" as="sourcePoint" /> <mxPoint x="1810" y="1790" as="targetPoint" /> <Array as="points"> <mxPoint x="2149" y="1720" /> <mxPoint x="1550" y="1720" /> </Array> </mxGeometry> </mxCell> <mxCell id="9QmJLenIGQQ3Yc-i7Rvr-6" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;Mono8Canvas&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;-&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;bitmap&lt;/b&gt;: Bitmap&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;-&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;viewport&lt;/b&gt;: Viewport&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;new&lt;/b&gt;(size: Offset, Option&amp;lt;i16&amp;gt;, &amp;amp;mut [u8) -&amp;gt; Option&amp;lt;Self&amp;gt;&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;+&amp;nbsp;&lt;b style=&quot;border-color: var(--border-color);&quot;&gt;row_mut&lt;/b&gt;(row: i16) -&amp;gt; Option&amp;lt;&amp;amp;mut [u32])&lt;/p&gt;&lt;p style=&quot;border-color: var(--border-color); margin: 0px 0px 0px 4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=3;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1"> <mxGeometry x="2380" y="1415" width="259" height="245" as="geometry" /> </mxCell> <mxCell id="9QmJLenIGQQ3Yc-i7Rvr-7" value="" style="endArrow=diamondThin;endFill=0;endSize=24;html=1;rounded=0;strokeWidth=2;edgeStyle=orthogonalEdgeStyle;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="9QmJLenIGQQ3Yc-i7Rvr-6" target="1jXiUZ3aZraeuMmb4EUq-92" edge="1"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="2466" y="1710" as="sourcePoint" /> <mxPoint x="1690" y="1870.52" as="targetPoint" /> <Array as="points"> <mxPoint x="2509" y="1709" /> <mxPoint x="2510" y="1720" /> <mxPoint x="1550" y="1720" /> </Array> </mxGeometry> </mxCell> <mxCell id="DNXeMK3aTwo9okN1xXtb-0" value="&lt;p style=&quot;margin:0px;margin-top:4px;text-align:center;&quot;&gt;&lt;i&gt;&amp;lt;&amp;lt;struct&amp;gt;&amp;gt;&lt;/i&gt;&lt;br&gt;&lt;b&gt;BitBltCopy&lt;/b&gt;&lt;/p&gt;&lt;hr size=&quot;1&quot;&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+ &lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;new_copy&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;(Rect, Rect, &amp;amp;BitmapView)&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;rgb565_copy(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;rgb565_blend(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin:0px;margin-left:4px;&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;rgba8888_copy(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;rgba8888_blend_mono4(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;mono8_copy(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;mono8_blend(&lt;/b&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;dst: &amp;amp;Bitmap&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;+ &lt;b&gt;display_copy&lt;/b&gt;&lt;/span&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;(&lt;/b&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;)&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 0px 4px;&quot;&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;" style="verticalAlign=top;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica;html=1;whiteSpace=wrap;strokeWidth=2;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1"> <mxGeometry x="2020" y="2120" width="375" height="260" as="geometry" /> </mxCell> <mxCell id="DNXeMK3aTwo9okN1xXtb-1" value="" style="endArrow=block;dashed=1;endFill=0;endSize=12;html=1;rounded=0;entryX=-0.005;entryY=0.442;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="1jXiUZ3aZraeuMmb4EUq-92" target="DNXeMK3aTwo9okN1xXtb-0"> <mxGeometry width="160" relative="1" as="geometry"> <mxPoint x="1758" y="2161" as="sourcePoint" /> <mxPoint x="2068" y="2100" as="targetPoint" /> </mxGeometry> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> "><defs/><g><g><rect x="1072" y="620" width="260" height="140" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 262px; height: 140px; padding-top: 620px; margin-left: 1072px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 260px; height: 140px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<trait>></i><br /><b>Shape</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;"></p><p style="margin:0px;margin-left:4px;">+ <b>bounds</b>(&DrawingCache) -> Offset</p><p style="margin:0px;margin-left:4px;">+ <b>draw</b>(&mut dyn Canvas, &DrawingCache)<br />+ <b>cleanup</b>(&DrawingCache)</p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="1072" y="632" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<trait>>...</text></switch></g></g><g><rect x="1431" y="620" width="289" height="140" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 291px; height: 140px; padding-top: 620px; margin-left: 1431px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 289px; height: 140px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<trait>></i><br /><b>ShapeClone</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>clone_at_pool</b>(&LocalAllocExt) -> Option<&dyn Shape><br /></p></div></div></div></foreignObject><text x="1431" y="632" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<trait>>...</text></switch></g></g><g><rect x="171" y="440" width="340" height="200" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 342px; height: 200px; padding-top: 440px; margin-left: 171px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 340px; height: 200px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<trait>></i><br /><b>Renderer</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;"></p><p style="margin:0px;margin-left:4px;">+ <b>render_shape</b>(Shape + ShapeClone)</p><p style="margin:0px;margin-left:4px;">+ <b>viewport</b>() -> Viewport</p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>set_viewport</b>(Viewport)<br />+ <b>set_window</b>(window: Rect) -> Viewport</p><p style="margin:0px;margin-left:4px;">+ <b>set_clip</b>(clip: Rect) -> Viewport<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>in_window</b>(Rect, &dyn Fn(&mut Self))</p><p style="margin:0px;margin-left:4px;">+ <b>in_clip</b>(Rect, &dyn Fn(&mut Self))<br /></p><p style="margin:0px;margin-left:4px;">+ <b>with_origin</b>(Rect, &dyn Fn(&mut Self))<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="171" y="452" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<trait>>...</text></switch></g></g><g><rect x="16" y="715" width="250" height="140" fill="#fff2cc" stroke="#d6b656" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 252px; height: 140px; padding-top: 715px; margin-left: 16px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 250px; height: 140px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>DirectRenderer</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>canvas</b>: &mut C: Canvas<br />- <b>cache</b>: DrawingCache</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(&mut C: Canvas, bg_color: Option<Color>, &DrawingCache)<br /><br /></p></div></div></div></foreignObject><text x="16" y="727" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="351" y="715" width="260" height="250" fill="#fff2cc" stroke="#d6b656" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 262px; height: 250px; padding-top: 715px; margin-left: 351px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 260px; height: 250px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>ProgressiveRenderer</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>canvas</b>: &mut C: BasicCanvas<br />- <b>bump</b>: &LocalAllocExt</p><p style="margin:0px;margin-left:4px;">- <b>shapes</b>: FixedVec<ShapeHolder></p><p style="margin:0px;margin-left:4px;">- <b>viewport</b>: Viewport</p><p style="margin:0px;margin-left:4px;">- <b>bg_color</b>: Option<Color></p><p style="margin:0px;margin-left:4px;">- <b>cache</b>: DrawingCache</p><p style="margin:0px;margin-left:4px;"><br /></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(&mug C: BasicCanvvas, bg_color: Option<Color>, &DrawingCavhas,  &LocalAllocExt, max_shapes: usize) -> Self<br />+ <b>render</b>(lines: usize)</p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="351" y="727" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 141 715 L 242.4 648.87" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 254.13 641.22 L 246.22 654.73 L 238.58 643.01 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 481 715 L 396.13 651.16" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 384.95 642.74 L 400.34 645.57 L 391.93 656.75 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="771" y="800" width="150" height="120" fill="#f5f5f5" stroke="#666666" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 152px; height: 120px; padding-top: 800px; margin-left: 771px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 150px; height: 120px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>ShapeHolder</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>shape</b>: &mut dyn Shape<br />+ <b>viewport</b>: Viewport</p><p style="margin:0px;margin-left:4px;"></p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="771" y="812" fill="#333333" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 628.97 777.5 L 691 777.5 L 691 860 L 766.53 860" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 612.97 777.5 L 620.97 772.79 L 628.97 777.5 L 620.97 782.21 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 754.76 867 L 768.76 860 L 754.76 853" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 819px; margin-left: 691px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Relation</div></div></div></foreignObject><text x="691" y="822" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Relation</text></switch></g></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 785px; margin-left: 613px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">0..n</div></div></div></foreignObject><text x="613" y="796" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">0..n</text></switch></g></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-end; width: 1px; height: 1px; padding-top: 867px; margin-left: 771px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: right;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="771" y="878" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="end">1</text></switch></g></g><g><rect x="116" y="1100" width="310" height="190" fill="#e1d5e7" stroke="#9673a6" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 312px; height: 190px; padding-top: 1100px; margin-left: 116px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 310px; height: 190px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>DrawingCache</b></p><p style="margin:0px;margin-left:4px;"><br /></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>() -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b>zlib</b>() -> RefMut<ZlibCache></p><p style="margin:0px;margin-left:4px;">+ <b>jpeg</b>() -> RefMut<JpegCache></p><p style="margin:0px;margin-left:4px;">+ <b>blur</b>() -> RefMut<BlurCache></p><p style="margin:0px;margin-left:4px;">+ <b>image_buff</b>() -> Option<RefMut<ImageBuffRef>></p><p style="margin:0px;margin-left:4px;">+ <b>render_buff</b>() -> Option<RefMut<RenderBuffRef>></p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="116" y="1112" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 938.97 860 L 996.5 860 L 996.5 690 L 1067.53 690" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 922.97 860 L 930.97 855.29 L 938.97 860 L 930.97 864.71 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 1055.76 697 L 1069.76 690 L 1055.76 683" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 854px; margin-left: 923px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="923" y="854" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">1</text></switch></g></g><g><path d="M 938.97 890 L 996.5 890 L 996.5 962.5 L 1067.53 962.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 922.97 890 L 930.97 885.29 L 938.97 890 L 930.97 894.71 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 1055.76 969.5 L 1069.76 962.5 L 1055.76 955.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 884px; margin-left: 923px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="923" y="884" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">1</text></switch></g></g><g><rect x="1072" y="840" width="259" height="245" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 261px; height: 245px; padding-top: 840px; margin-left: 1072px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 259px; height: 245px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>Viewport</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>origin</b>: Offset<br />+ <b>clip</b>: Rect</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>from_size</b>(Offset) -> Self</p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">contains</b><span style="background-color: initial;">(Rect) -> bool</span><br /></p><p style="margin:0px;margin-left:4px;">+ <b>translate</b>(Offset) -> Viewport</p><p style="margin:0px;margin-left:4px;">+ <b>with_origin</b>(Offset) -> Viewport</p><p style="margin:0px;margin-left:4px;">+ <b>absolute_clip</b>(Rect) -> Viewport</p><p style="margin:0px;margin-left:4px;">+ <b>relative_clip</b>(Rect) -> Viewport</p><p style="margin:0px;margin-left:4px;">+ <b>relative_window</b>(Rect) -> Viewport</p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="1072" y="852" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 1431 690 L 1350.12 690" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1333.12 690 L 1350.12 681.5 L 1350.12 698.5 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 690px; margin-left: 1381px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Extends</div></div></div></foreignObject><text x="1381" y="693" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Extends</text></switch></g></g><g><path d="M 473.99 982.97 L 474 1032.5 L 348.5 1032.5 L 348.5 1095.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 473.98 966.97 L 478.69 974.97 L 473.99 982.97 L 469.28 974.97 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 341.5 1083.76 L 348.5 1097.76 L 355.5 1083.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 962px; margin-left: 479px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="479" y="962" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">1</text></switch></g></g><g><path d="M 141 872.97 L 141 977.5 L 193.5 977.5 L 193.5 1095.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 141 856.97 L 145.71 864.97 L 141 872.97 L 136.29 864.97 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 186.5 1083.76 L 193.5 1097.76 L 200.5 1083.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 852px; margin-left: 146px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="146" y="852" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">1</text></switch></g></g><g><path d="M 1111 390 L 1209.3 605.23" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 1215.11 617.97 L 1202.93 608.14 L 1215.66 602.32 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 1111 390 L 1560.95 612.8" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 1573.5 619.01 L 1557.84 619.07 L 1564.06 606.52 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="1" y="1520" width="250" height="160" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 252px; height: 160px; padding-top: 1520px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 250px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>ZlibCache</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>slots</b>: [ZlibCacheSlot]<br /><br /></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(&bump, slot_count: u32) -> Option<Self><br /></p><p style="margin:0px;margin-left:4px;">+ <b>uncompress</b>(zdata: &[u8], offset: usize, dest_buf: &mut [u8]) -> Result<bool, ())</p></div></div></div></foreignObject><text x="1" y="1532" fill="#333333" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1" y="1754" width="250" height="210" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 252px; height: 210px; padding-top: 1754px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 250px; height: 210px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>ZlibCacheSlot</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>zdata_tag</b>: *const u8</p><p style="margin:0px;margin-left:4px;">- <b>offset</b>: usize</p><p style="margin:0px;margin-left:4px;">- <b>dc</b>: Option<UzlibContext></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>empty</b>() -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b>initialize</b>(zdata: &[u8])</p><p style="margin:0px;margin-left:4px;">+ <b>reset</b>()</p><p style="margin:0px;margin-left:4px;">+ <b>uncompress</b>(dest_buf: &mut [u8]) </p><p style="margin:0px;margin-left:4px;">+ <b>skip</b>(nbytes: usize)</p><p style="margin:0px;margin-left:4px;">+ <b>is_for</b>(zdata: & [u8]) -> bool</p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="1" y="1766" fill="#333333" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="281" y="1520" width="250" height="160" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 252px; height: 160px; padding-top: 1520px; margin-left: 281px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 250px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>JpegCache</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>slots</b>: [JpegCacheSlot]<br /><br /></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(&bump, slot_count: u32) -> Option<Self><br /></p></div></div></div></foreignObject><text x="281" y="1532" fill="#333333" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="281" y="1754" width="250" height="210" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 252px; height: 210px; padding-top: 1754px; margin-left: 281px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 250px; height: 210px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>JpegCacheSlot</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>jpeg</b>: & [u8]<br />- <b>input</b>: tjpgd::BufferInput</p><p style="margin:0px;margin-left:4px;">- <b>decoder</b>: tjpgd::JDEC</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(jpeg: &[u8]) -> Result<Self, Error><br /></p><p style="margin:0px;margin-left:4px;">+ <b>jpeg_size</b>() -> Offset</p><p style="margin:0px;margin-left:4px;">+ <b>is_for</b>(jpeg: &[u8]) -> bool</p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="281" y="1766" fill="#333333" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 271 1307.97 L 271 1405 L 406 1405 L 406 1515.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 271 1291.97 L 275.71 1299.97 L 271 1307.97 L 266.29 1299.97 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 399 1503.76 L 406 1517.76 L 413 1503.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 1287px; margin-left: 276px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="276" y="1287" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">1</text></switch></g></g><g><path d="M 193.5 1307.97 L 193.5 1405 L 126 1405 L 126 1515.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 193.5 1291.97 L 198.21 1299.97 L 193.5 1307.97 L 188.79 1299.97 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 119 1503.76 L 126 1517.76 L 133 1503.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 1287px; margin-left: 199px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="199" y="1287" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">1</text></switch></g></g><g><path d="M 126 1697.97 L 126 1749.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 126 1681.97 L 130.71 1689.97 L 126 1697.97 L 121.29 1689.97 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 119 1737.76 L 126 1751.76 L 133 1737.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1717px; margin-left: 126px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Relation</div></div></div></foreignObject><text x="126" y="1720" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Relation</text></switch></g></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 1687px; margin-left: 128px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">0..n</div></div></div></foreignObject><text x="128" y="1698" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">0..n</text></switch></g></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-end; width: 1px; height: 1px; padding-top: 1761px; margin-left: 125px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: right;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="125" y="1772" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="end">1</text></switch></g></g><g><path d="M 406 1697.97 L 406 1749.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 406 1681.97 L 410.71 1689.97 L 406 1697.97 L 401.29 1689.97 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 399 1737.76 L 406 1751.76 L 413 1737.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1717px; margin-left: 406px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Relation</div></div></div></foreignObject><text x="406" y="1720" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Relation</text></switch></g></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 1687px; margin-left: 408px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">0..1</div></div></div></foreignObject><text x="408" y="1698" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">0..1</text></switch></g></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-end; width: 1px; height: 1px; padding-top: 1761px; margin-left: 405px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: right;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="405" y="1772" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="end">1</text></switch></g></g><g><rect x="581" y="1520" width="250" height="170" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 252px; height: 170px; padding-top: 1520px; margin-left: 581px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 250px; height: 170px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>BlurCache</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>algo</b>: Option<BlurAlgorithm><br />- <b>buff</b>: &UnsafeCell<BlurBuff></p><p style="margin:0px;margin-left:4px;">- <b>tag</b>: u32</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(&bump)</p><p style="margin:0px;margin-left:4px;">+ <b>get</b>(size: Offset, radius: usize, tag: Option<u32>) -> Result<&mut BlurAlgorithm<'a>, u32), ()><br /><br /></p></div></div></div></foreignObject><text x="581" y="1532" fill="#333333" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1911" y="810" width="260" height="445" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 262px; height: 445px; padding-top: 810px; margin-left: 1911px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 260px; height: 445px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<trait>></i><br /><b>BasicCanvas</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;"></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">size</b>() -> Offset<br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">bounds</b>() -> Rect</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">width</b>() -> i16</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">height</b>() -> i16</p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>viewport</b>() -> Viewport</p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ <b>set_viewport</b>(Viewport)</span></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color); background-color: initial;">set_window</b><span style="border-color: var(--border-color); background-color: initial;">(Rect) -> Viewport</span><br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">set_clip</b>(Rect) -> Viewport</p><div><br /></div><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color); background-color: initial;">fill_rect</b><span style="border-color: var(--border-color); background-color: initial;">(Rect, Color)</span><br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">fill_background</b>(Color)<br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">draw_bitmap</b>(Rect, BitmapRef)<br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br style="border-color: var(--border-color);" /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="1911" y="822" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<trait>>...</text></switch></g></g><g><rect x="1521" y="910" width="260" height="360" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 262px; height: 360px; padding-top: 910px; margin-left: 1521px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 260px; height: 360px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<trait>></i><br /><b>Canvas</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;"></p><p style="margin:0px;margin-left:4px;">+ <b>view</b>() -> BitmapView</p><p style="margin:0px;margin-left:4px;"><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color); background-color: initial;">draw_pixel</b>(Point, Color)<br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><span style="border-color: var(--border-color); background-color: initial;">+ <b style="border-color: var(--border-color);">blend</b><b style="border-color: var(--border-color); background-color: initial;">_pixel</b>(Point, Color, u8)<br style="border-color: var(--border-color);" /></span></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">blend_bitmap</b>(Rect, BitmapView)<span style="background-color: initial;"><br /></span></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color); background-color: initial;">blur_rect</b>(Rect, radius)<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial; border-color: var(--border-color);">draw_round_rect</b><span style="background-color: initial;">(Rect, radius, Color)</span><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial; border-color: var(--border-color);">fill_round_rect</b><span style="background-color: initial;">(Rect, radius, color)</span><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><span style="background-color: initial;"><br /></span></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><span style="border-color: var(--border-color); background-color: initial;">+ <b style="border-color: var(--border-color); background-color: initial;">draw_circle</b><span style="border-color: var(--border-color); background-color: initial;">(Point, radius, Color)</span><br style="border-color: var(--border-color);" /></span></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial; border-color: var(--border-color);">fill_circle</b><span style="background-color: initial;">(Point, radius, Color)</span><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>fill_sector</b>(Point, i16, i16, i16, Color)</p></div></div></div></foreignObject><text x="1521" y="922" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<trait>>...</text></switch></g></g><g><path d="M 1781 1090 L 1892.49 1040.69" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1908.96 1033.4 L 1896.13 1048.92 L 1888.85 1032.45 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1061px; margin-left: 1846px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Extends</div></div></div></foreignObject><text x="1846" y="1065" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Extends</text></switch></g></g><g><rect x="1522" y="1395" width="259" height="245" fill="#fff2cc" stroke="#d6b656" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 261px; height: 245px; padding-top: 1395px; margin-left: 1522px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 259px; height: 245px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>Rgb565Canvas</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>bitmap</b>: Bitmap</p><p style="margin:0px;margin-left:4px;">- <b>viewport</b>: Viewport</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(size: Offset, Option<i16>, &mut [u8]) -> Option<Self></p><p style="margin:0px;margin-left:4px;">+ <b>row_mut</b>(row: i16) -> Option<&mut [u16])</p><p style="margin:0px;margin-left:4px;"><br /></p></div></div></div></foreignObject><text x="1522" y="1407" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1881" y="1395" width="259" height="245" fill="#fff2cc" stroke="#d6b656" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 261px; height: 245px; padding-top: 1395px; margin-left: 1881px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 259px; height: 245px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>Rgba8888Canvas</b></p><hr size="1" /><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">- <b style="border-color: var(--border-color);">bitmap</b>: Bitmap</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">- <b style="border-color: var(--border-color);">viewport</b>: Viewport</p><hr size="1" /><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">new</b>(size: Offset, Option<i16>, &mut [u8) -> Option<Self></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">row_mut</b>(row: i16) -> Option<&mut [u32])</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br /></p></div></div></div></foreignObject><text x="1881" y="1407" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 1304.44 762.94 L 1517.98 996.7" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 1504.88 992.73 L 1519.49 998.35 L 1515.22 983.29" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 882px; margin-left: 1413px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Use</div></div></div></foreignObject><text x="1413" y="885" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Use</text></switch></g></g><g><path d="M 1651.5 1395 L 1611.45 1282.06" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 1606.77 1268.87 L 1618.04 1279.72 L 1604.85 1284.4 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 1651.5 1395 L 1961.09 1261.43" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 1973.95 1255.89 L 1963.87 1267.86 L 1958.32 1255 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 2010.5 1395 L 1685.21 1274.9" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 1672.08 1270.05 L 1687.64 1268.34 L 1682.79 1281.47 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 2010.5 1395 L 2037.54 1270.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 2040.52 1257.18 L 2044.38 1272.35 L 2030.7 1269.37 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="1231" y="1790" width="360" height="550" fill="#fff2cc" stroke="#d6b656" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 362px; height: 550px; padding-top: 1790px; margin-left: 1231px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 360px; height: 550px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>Bitmap</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- ptr: *mut u8</p><p style="margin:0px;margin-left:4px;">- stride: usize</p><p style="margin:0px;margin-left:4px;">- size: Offset</p><p style="margin:0px;margin-left:4px;">- format: BitmapFormat</p><p style="margin:0px;margin-left:4px;">- mutable: bool</p><p style="margin:0px;margin-left:4px;">- dma_pending: bool</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(BitmapFormat, Option<usize>, Offset,  Option<i16>, & [u8]) -> Self</p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">new_mut</b>(BitmapFormat, Option<usize>, Offset,  Option<i16>, &mut  [u8]) -> Self<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">size</b>() -> Offset<br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">width</b>() -> i16</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">height</b>() -> i16</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>stride</b>() -> usize</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>view</b>() -> BitmapView</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>row</b><T>(i16) -> Option<&[T}></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>row_mut</b><T>(i16) -> Option<&mut [T}><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>rows_mut</b><T>(i16, i16) -> Option<&mut [T}><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>rgb565_fill</b>(Rect, Rect, Color)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>rgb565_copy</b>(Rect, Rect, &BitmapView)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b>rgb565_blend</b>(Rect, Rect, &BitmapView)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">rgba8888_fill</b>(Rect, Rect, Color)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">rgba8888_copy</b>(Rect, Rect, &BitmapView)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">rgba8888_blend</b>(Rect, Rect, &BitmapView)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">mono8_fill</b>(Rect, Rect, Color)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">mono8_copy</b>(Rect, Rect, &BitmapView)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">mono8_blend</b>(Rect, Rect, &BitmapView)</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br style="border-color: var(--border-color);" /></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br /></p></div></div></div></foreignObject><text x="1231" y="1802" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1126" y="1280" width="190" height="300" fill="#e1d5e7" stroke="#9673a6" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 300px; padding-top: 1280px; margin-left: 1126px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 300px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>BitmapView</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>bitmap</b>: &Bitmap</p><p style="margin:0px;margin-left:4px;">- <b>fg_color</b>: Color<br />- <b>bg_color</b>: Color</p><p style="margin:0px;margin-left:4px;">- <b>offset</b>: Offset</p><p style="margin:0px;margin-left:4px;"><br /></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(&Bitmap) -> Self</p><p style="margin:0px;margin-left:4px;">+ <b>with_fg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_bg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_offset</b>(Offset) -> Self<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>size</b>() -> Offset<br /></p><p style="margin:0px;margin-left:4px;">+ <b>width</b>() -> i16</p><p style="margin:0px;margin-left:4px;">+ <b>height</b>() -> i16</p><p style="margin:0px;margin-left:4px;">+ <b>format</b>() -> BitmapFormat</p><p style="margin:0px;margin-left:4px;">+ <b>row</b><T>(i16) -> Option<&[T]></p></div></div></div></foreignObject><text x="1126" y="1292" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1881" y="1850" width="375" height="196" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 377px; height: 196px; padding-top: 1850px; margin-left: 1881px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 375px; height: 196px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>BitBltFill</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;"></p><p style="margin:0px;margin-left:4px;">+ <b>new</b>(Rect, Rect, color) -> Option<Self></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>rgb565_fill(</b>dst: &Bitmap<b>)</b></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">rgba8888_fill(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b></p><p style="margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">mono8_fill(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b></p><p style="margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ <b>display_fill</b></span><b style="background-color: initial;">(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b></p><p style="margin: 0px 0px 0px 4px;"><br /></p><p style="margin: 0px 0px 0px 4px;"><b><br /></b></p><div><b><br /></b></div></div></div></div></foreignObject><text x="1881" y="1862" fill="#333333" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 281 23 L 281 0 L 1941 0 L 1941 23" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><path d="M 281 23 L 281 390 L 1941 390 L 1941 23" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none"/><path d="M 281 23 L 1941 23" fill="none" stroke="#666666" stroke-miterlimit="10" pointer-events="none"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1658px; height: 1px; padding-top: 12px; margin-left: 282px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Shape objects</div></div></div></foreignObject><text x="1111" y="15" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Shape objects</text></switch></g></g><g><rect x="331" y="50" width="190" height="240" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 240px; padding-top: 50px; margin-left: 331px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 240px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>shape::Bar</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>area</b>: Rect</p><p style="margin:0px;margin-left:4px;">- <b>fg_color</b>: Option<Color><br />- <b>bg_color</b>: Option<Color></p><p style="margin:0px;margin-left:4px;">- <b>thickness</b>: i16</p><p style="margin:0px;margin-left:4px;">- <b>radius</b>: i16</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(Rect) -> Self</p><p style="margin:0px;margin-left:4px;">+ <b>with_fg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_bg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_radius</b>(i16) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_thickness</b>(i16) -> Self<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>render</b>(&mut impl Renderer)</p></div></div></div></foreignObject><text x="331" y="62" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="561" y="50" width="190" height="320" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 320px; padding-top: 50px; margin-left: 561px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 320px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>shape::Circle</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>center: </b> Point</p><p style="margin:0px;margin-left:4px;">- <b>fg_color</b>: Option<Color><br />- <b>bg_color</b>: Option<Color></p><p style="margin:0px;margin-left:4px;">- <b>thickness</b>: i16</p><p style="margin:0px;margin-left:4px;">- <b>radius</b>: i16</p><p style="margin:0px;margin-left:4px;">- <b>start_angle</b>: Option<i16></p><p style="margin:0px;margin-left:4px;">- <b>end_angle</b>: Option<i16></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(center: Point,radius: i16) -> Self</p><p style="margin:0px;margin-left:4px;">+ <b>with_fg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_bg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial; border-color: var(--border-color);">with_thickness</b><span style="background-color: initial;">(i16) -> Self</span><br /></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ <b>with_start_angle</b>(i16) -> Self</span></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ <b>with_end_angle</b>(i16) -> Self</span></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>render</b>(&mut impl Renderer)</p></div></div></div></foreignObject><text x="561" y="62" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="791" y="50" width="190" height="240" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 240px; padding-top: 50px; margin-left: 791px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 240px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>shape::Text</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>area</b>: Rect</p><p style="margin:0px;margin-left:4px;">- <b style="border-color: var(--border-color);">text</b>: &str<br /></p><p style="margin:0px;margin-left:4px;">- <b>color</b>: Color</p><p style="margin:0px;margin-left:4px;">- <b>font</b>: Font</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(area: Rect, &str) -> Self</p><p style="margin:0px;margin-left:4px;">+ <b>with_fg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_font</b>(Font) -> Self<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>render</b>(&mut impl Renderer)</p></div></div></div></foreignObject><text x="791" y="62" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1021" y="50" width="190" height="240" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 240px; padding-top: 50px; margin-left: 1021px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 240px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>shape::ToifImage</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>pos</b>: Point</p><p style="margin:0px;margin-left:4px;">- <b>toif</b>: Toif</p><p style="margin:0px;margin-left:4px;">- <b>fg_color</b>: Color</p><p style="margin:0px;margin-left:4px;">- <b>bg_color</b>: Option<Color></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(area: Rect, Toif) -> Self</p><p style="margin:0px;margin-left:4px;">+ <b>with_fg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_bg</b>(Color) -> Self<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>render</b>(&mut impl Renderer)</p></div></div></div></foreignObject><text x="1021" y="62" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1251" y="50" width="190" height="240" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 240px; padding-top: 50px; margin-left: 1251px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 240px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>shape::JpegImage</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>pos</b>: Point</p><p style="margin:0px;margin-left:4px;">- <b>jpeg</b>: &[u8]</p><p style="margin:0px;margin-left:4px;">- <b>scale</b>: u8<br /></p><p style="margin:0px;margin-left:4px;">- <b style="border-color: var(--border-color);">blur_radius</b>: usize<br /></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(area: Rect, &[u8]) -> Self</p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_scale</b>(u8) -> Self<br /></p><p style="margin:0px;margin-left:4px;">+ <b style="border-color: var(--border-color);">with_blur</b>(usize) -> Self<br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>render</b>(&mut impl Renderer)</p></div></div></div></foreignObject><text x="1251" y="62" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1471" y="50" width="190" height="240" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 240px; padding-top: 50px; margin-left: 1471px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 240px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>shape::QrCode</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>area</b>: Rect</p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">- <b>qr_modules</b>: [u8; ..]</span><br /></p><p style="margin:0px;margin-left:4px;">- <b>qr_size</b>: i16<span style="background-color: initial;"><br /></span></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">- </span><b style="background-color: initial;">fg_color</b><span style="background-color: initial;">: Color</span><br /></p><p style="margin:0px;margin-left:4px;">- <b>bg_color</b>: Option<Color></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(pos: Point, &str) -> Self</p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>render</b>(&mut impl Renderer)</p></div></div></div></foreignObject><text x="1471" y="62" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><rect x="1699" y="50" width="190" height="240" fill="#d5e8d4" stroke="#82b366" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 240px; padding-top: 50px; margin-left: 1699px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 240px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>shape::Blurring</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- <b>area</b>: Rect</p><p style="margin:0px;margin-left:4px;">- <b>radius</b>: usize</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ <b>new</b>(area: Rect, usize) -> Self</p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;">+ <b>render</b>(&mut impl Renderer)</p></div></div></div></foreignObject><text x="1699" y="62" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 1591 2065 L 1865.94 1954.07" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 1878.93 1948.84 L 1868.56 1960.57 L 1863.32 1947.58 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 1221 1580 L 1221 1700 L 1411 1700 L 1411 1762.03" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1411 1788.03 L 1403.35 1775.03 L 1411 1762.03 L 1418.65 1775.03 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 348.5 1307.97 L 348.5 1370 L 706 1370 L 706 1515.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 348.5 1291.97 L 353.21 1299.97 L 348.5 1307.97 L 343.79 1299.97 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 699 1503.76 L 706 1517.76 L 713 1503.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 1287px; margin-left: 354px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="354" y="1287" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">1</text></switch></g></g><g><path d="M 1651.5 1640 L 1651.5 1700 L 1411 1700 L 1411 1762.03" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1411 1788.03 L 1403.35 1775.03 L 1411 1762.03 L 1418.65 1775.03 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 2010.5 1640 L 2010.5 1700 L 1411 1700 L 1411 1762.03" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1411 1788.03 L 1403.35 1775.03 L 1411 1762.03 L 1418.65 1775.03 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="2241" y="1395" width="259" height="245" fill="#fff2cc" stroke="#d6b656" stroke-width="3" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 261px; height: 245px; padding-top: 1395px; margin-left: 2241px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 259px; height: 245px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>Mono8Canvas</b></p><hr size="1" /><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">- <b style="border-color: var(--border-color);">bitmap</b>: Bitmap</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">- <b style="border-color: var(--border-color);">viewport</b>: Viewport</p><hr size="1" /><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">new</b>(size: Offset, Option<i16>, &mut [u8) -> Option<Self></p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;">+ <b style="border-color: var(--border-color);">row_mut</b>(row: i16) -> Option<&mut [u32])</p><p style="border-color: var(--border-color); margin: 0px 0px 0px 4px;"><br /></p></div></div></div></foreignObject><text x="2241" y="1407" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 2370.5 1640 L 2370.5 1689 L 2371 1700 L 1411 1700 L 1411 1762.03" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 1411 1788.03 L 1403.35 1775.03 L 1411 1762.03 L 1418.65 1775.03 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="1881" y="2100" width="375" height="260" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 377px; height: 260px; padding-top: 2100px; margin-left: 1881px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 375px; height: 260px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin:0px;margin-top:4px;text-align:center;"><i><<struct>></i><br /><b>BitBltCopy</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;"></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">new_copy</b><span style="background-color: initial;">(Rect, Rect, &BitmapView)</span><br /></p><p style="margin:0px;margin-left:4px;"><br /></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">rgb565_copy(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b><br /></p><p style="margin:0px;margin-left:4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">rgb565_blend(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b></p><p style="margin:0px;margin-left:4px;"><b><br /></b></p><p style="margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">rgba8888_copy(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b></p><p style="margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">rgba8888_blend_mono4(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b></p><p style="margin: 0px 0px 0px 4px;"><b><br /></b></p><p style="margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">mono8_copy(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b></p><p style="margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ </span><b style="background-color: initial;">mono8_blend(</b><span style="background-color: initial;">dst: &Bitmap</span><b style="background-color: initial;">)</b></p><p style="margin: 0px 0px 0px 4px;"><b style="background-color: initial;"><br /></b></p><p style="margin: 0px 0px 0px 4px;"><span style="background-color: initial;">+ <b>display_copy</b></span><b style="background-color: initial;">(</b><b style="background-color: initial;">)</b><br /></p><div><b><br /></b></div><p style="margin: 0px 0px 0px 4px;"><b><br /></b></p><div><b><br /></b></div></div></div></div></foreignObject><text x="1881" y="2112" fill="#333333" font-family="Helvetica" font-size="12px"><<struct>>...</text></switch></g></g><g><path d="M 1591 2065 L 1864.72 2207.43" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/><path d="M 1877.14 2213.89 L 1861.49 2213.64 L 1867.95 2201.22 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/core/embed/rust/src/ui/shape/drawlib-toplevel-arch.drawio.svg b/core/embed/rust/src/ui/shape/drawlib-toplevel-arch.drawio.svg new file mode 100644 index 0000000000..fc0ae12cad --- /dev/null +++ b/core/embed/rust/src/ui/shape/drawlib-toplevel-arch.drawio.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Do not edit this file with editors other than draw.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="771px" height="902px" viewBox="-0.5 -0.5 771 902" content="<mxfile host="Electron" modified="2024-05-03T08:52:23.649Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.2.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="DizGcrCoRhPYv9V6IpY-" scale="1" border="0" version="24.2.5" type="device"> <diagram name="Page-1" id="aSIIQqQMug5H7vguIeuZ"> <mxGraphModel dx="2074" dy="1230" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <mxCell id="zyGUCMsfAYVcOM6h0kHk-1" value="&lt;b&gt;SHAPE&lt;/b&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=right;verticalAlign=top;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=15;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="100" y="80" width="660" height="90" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-2" value="&lt;b&gt;RENDERER&lt;/b&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=right;verticalAlign=top;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontSize=15;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="100" y="210" width="660" height="90" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-3" value="&lt;b&gt;CANVAS&lt;/b&gt;" style="rounded=0;whiteSpace=wrap;html=1;verticalAlign=top;align=right;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontSize=15;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="100" y="330" width="660" height="100" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-4" value="&lt;b style=&quot;font-size: 14px;&quot;&gt;BitBlt (bitblt.rs)&lt;/b&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;2D bit-block transfer routines&amp;nbsp;&lt;br style=&quot;font-size: 14px;&quot;&gt;(Rust API)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontSize=14;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="100" y="480" width="230" height="80" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-5" value="&lt;b style=&quot;font-size: 14px;&quot;&gt;gfx_bitblt&lt;/b&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;2D bit-block transfer routines&lt;div style=&quot;font-size: 14px;&quot;&gt;(C API)&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontSize=14;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="100" y="625" width="230" height="80" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-6" value="&lt;b style=&quot;font-size: 14px;&quot;&gt;dma2d_bitblt&lt;/b&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;Hardware accelerated bitblt operations" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontSize=14;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="100" y="850" width="230" height="130" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-7" value="&lt;b style=&quot;font-size: 14px;&quot;&gt;display_driver&lt;/b&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;Display initialization, framebuffer implementation, backlight, orientation, synchronization&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;div style=&quot;font-size: 14px;&quot;&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontSize=14;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="420" y="850" width="300" height="130" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-8" value="Bit-blt API&lt;br style=&quot;font-size: 14px;&quot;&gt;for simple access or non-fb drivers" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontSize=14;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="420" y="770" width="140" height="80" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-9" value="&lt;b style=&quot;font-size: 14px;&quot;&gt;gfx&lt;/b&gt;&lt;b style=&quot;background-color: initial;&quot;&gt;_draw&lt;/b&gt;&lt;div&gt;&lt;br style=&quot;font-size: 14px;&quot;&gt;Simple drawing routines&lt;div style=&quot;font-size: 14px;&quot;&gt;(C API)&lt;/div&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;fontSize=14;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="560" y="650" width="180" height="80" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-10" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-12" target="zyGUCMsfAYVcOM6h0kHk-4" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="400" y="640" as="sourcePoint" /> <mxPoint x="450" y="590" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-11" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-13" target="zyGUCMsfAYVcOM6h0kHk-8" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="400" y="640" as="sourcePoint" /> <mxPoint x="450" y="590" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-12" value="Canvas" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="125" y="400" width="180" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-13" value="BasicCanvas" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;" parent="1" vertex="1"> <mxGeometry x="370" y="400" width="180" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-14" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-4" target="zyGUCMsfAYVcOM6h0kHk-5" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="400" y="640" as="sourcePoint" /> <mxPoint x="450" y="590" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-15" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-5" target="zyGUCMsfAYVcOM6h0kHk-6" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="400" y="640" as="sourcePoint" /> <mxPoint x="450" y="590" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-16" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-9" target="zyGUCMsfAYVcOM6h0kHk-8" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="400" y="640" as="sourcePoint" /> <mxPoint x="450" y="590" as="targetPoint" /> <Array as="points"> <mxPoint x="490" y="670" /> </Array> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-17" value="" style="endArrow=none;dashed=1;html=1;strokeWidth=3;rounded=0;fontColor=#660000;strokeColor=#990000;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="50" y="740" as="sourcePoint" /> <mxPoint x="800" y="740" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-18" value="" style="endArrow=none;dashed=1;html=1;strokeWidth=3;rounded=0;fontColor=#660000;strokeColor=#990000;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="40" y="590" as="sourcePoint" /> <mxPoint x="800" y="590" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-19" value="" style="endArrow=none;dashed=1;html=1;strokeWidth=3;rounded=0;fontColor=#660000;strokeColor=#990000;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="40" y="460" as="sourcePoint" /> <mxPoint x="800" y="460" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-20" value="LIB&lt;br&gt;(C)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;portConstraintRotation=0;rotation=-90;fontSize=16;fontColor=#990000;" parent="1" vertex="1"> <mxGeometry x="760" y="650" width="60" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-21" value="HAL&lt;br&gt;(C)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;portConstraintRotation=0;rotation=-90;fontSize=16;fontColor=#990000;" parent="1" vertex="1"> <mxGeometry x="760" y="830" width="60" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-22" value="TrezorHal (RUST)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;portConstraintRotation=0;rotation=-90;fontSize=16;fontColor=#990000;" parent="1" vertex="1"> <mxGeometry x="760" y="505" width="60" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-24" value="High-level abstraction for drawing implements simple objects (such as&amp;nbsp;&lt;b style=&quot;font-size: 14px;&quot;&gt;Bar&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;font-size: 14px;&quot;&gt;Circle&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;font-size: 14px;&quot;&gt;ImageToif&lt;/b&gt;,&amp;nbsp;&lt;b style=&quot;font-size: 14px;&quot;&gt;ImageJpeg&lt;/b&gt;) that can be renderered on the display through the lower layer.&amp;nbsp;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1"> <mxGeometry x="160" y="115" width="530" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-25" value="Provides two distinguished mechanisms for rendering shape on the display:&amp;nbsp;&lt;b style=&quot;font-size: 14px;&quot;&gt;DirectRenderer&lt;/b&gt;&amp;nbsp;for drawing using display drivers exposing framebuffer, and &lt;b style=&quot;font-size: 14px;&quot;&gt;ProgressiveRenderer&lt;/b&gt;&amp;nbsp;for drawing on displays without framebuffer in MCU RAM providing just simple bit-blt operations." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1"> <mxGeometry x="130" y="240" width="550" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-26" value="Several implementations of the&amp;nbsp;&lt;b style=&quot;font-size: 14px;&quot;&gt;Canvas trait&lt;/b&gt;&amp;nbsp;(&lt;b style=&quot;font-size: 14px;&quot;&gt;Rgb565Canvas&lt;/b&gt;, &lt;b style=&quot;font-size: 14px;&quot;&gt;RGBA8888Canvas&lt;/b&gt;, &lt;b style=&quot;font-size: 14px;&quot;&gt;Mono8Canvas&lt;/b&gt;) for different types of framebuffers/displays." style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=14;" parent="1" vertex="1"> <mxGeometry x="140" y="350" width="510" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-30" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-27" target="zyGUCMsfAYVcOM6h0kHk-9" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-31" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-27" target="zyGUCMsfAYVcOM6h0kHk-9" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-27" value="direct drawing without rust lib" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> <mxGeometry x="550" y="600" width="170" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-33" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-1" target="zyGUCMsfAYVcOM6h0kHk-2" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="400" y="640" as="sourcePoint" /> <mxPoint x="450" y="590" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-34" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-2" target="zyGUCMsfAYVcOM6h0kHk-3" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="400" y="640" as="sourcePoint" /> <mxPoint x="450" y="590" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-35" value="UI (RUST)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;portConstraintRotation=0;rotation=-90;fontSize=16;fontColor=#990000;" parent="1" vertex="1"> <mxGeometry x="760" y="240" width="60" height="30" as="geometry" /> </mxCell> <mxCell id="zyGUCMsfAYVcOM6h0kHk-36" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="zyGUCMsfAYVcOM6h0kHk-8" target="zyGUCMsfAYVcOM6h0kHk-5" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> <mxPoint x="400" y="650" as="sourcePoint" /> <mxPoint x="450" y="600" as="targetPoint" /> <Array as="points"> <mxPoint x="370" y="810" /> <mxPoint x="370" y="665" /> </Array> </mxGeometry> </mxCell> </root> </mxGraphModel> </diagram> </mxfile> "><defs/><g><g><rect x="61" y="1" width="660" height="90" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-end; width: 658px; height: 1px; padding-top: 8px; margin-left: 61px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: right;"><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>SHAPE</b></div></div></div></foreignObject><text x="719" y="23" fill="#333333" font-family="Helvetica" font-size="15px" text-anchor="end">SHAPE</text></switch></g></g><g><rect x="61" y="131" width="660" height="90" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-end; width: 658px; height: 1px; padding-top: 138px; margin-left: 61px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: right;"><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>RENDERER</b></div></div></div></foreignObject><text x="719" y="153" fill="#333333" font-family="Helvetica" font-size="15px" text-anchor="end">RENDERER</text></switch></g></g><g><rect x="61" y="251" width="660" height="100" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-end; width: 658px; height: 1px; padding-top: 258px; margin-left: 61px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: right;"><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b>CANVAS</b></div></div></div></foreignObject><text x="719" y="273" fill="#333333" font-family="Helvetica" font-size="15px" text-anchor="end">CANVAS</text></switch></g></g><g><rect x="61" y="401" width="230" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 441px; margin-left: 62px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b style="font-size: 14px;">BitBlt (bitblt.rs)</b><br style="font-size: 14px;" /><br style="font-size: 14px;" />2D bit-block transfer routines <br style="font-size: 14px;" />(Rust API)</div></div></div></foreignObject><text x="176" y="445" fill="#333333" font-family="Helvetica" font-size="14px" text-anchor="middle">BitBlt (bitblt.rs)...</text></switch></g></g><g><rect x="61" y="546" width="230" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 586px; margin-left: 62px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b style="font-size: 14px;">gfx_bitblt</b><br style="font-size: 14px;" /><br style="font-size: 14px;" />2D bit-block transfer routines<div style="font-size: 14px;">(C API)</div></div></div></div></foreignObject><text x="176" y="590" fill="#333333" font-family="Helvetica" font-size="14px" text-anchor="middle">gfx_bitblt...</text></switch></g></g><g><rect x="61" y="771" width="230" height="130" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 228px; height: 1px; padding-top: 836px; margin-left: 62px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b style="font-size: 14px;">dma2d_bitblt</b><br style="font-size: 14px;" /><br style="font-size: 14px;" />Hardware accelerated bitblt operations</div></div></div></foreignObject><text x="176" y="840" fill="#333333" font-family="Helvetica" font-size="14px" text-anchor="middle">dma2d_bitblt...</text></switch></g></g><g><rect x="381" y="771" width="300" height="130" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 836px; margin-left: 382px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b style="font-size: 14px;">display_driver</b><br style="font-size: 14px;" /><br style="font-size: 14px;" />Display initialization, framebuffer implementation, backlight, orientation, synchronization<br style="font-size: 14px;" /><div style="font-size: 14px;"><br style="font-size: 14px;" /></div></div></div></div></foreignObject><text x="531" y="840" fill="#333333" font-family="Helvetica" font-size="14px" text-anchor="middle">display_driver...</text></switch></g></g><g><rect x="381" y="691" width="140" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 731px; margin-left: 382px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Bit-blt API<br style="font-size: 14px;" />for simple access or non-fb drivers</div></div></div></foreignObject><text x="451" y="735" fill="#333333" font-family="Helvetica" font-size="14px" text-anchor="middle">Bit-blt API...</text></switch></g></g><g><rect x="521" y="571" width="180" height="80" fill="#f5f5f5" stroke="#666666" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 611px; margin-left: 522px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><b style="font-size: 14px;">gfx</b><b style="background-color: initial;">_draw</b><div><br style="font-size: 14px;" />Simple drawing routines<div style="font-size: 14px;">(C API)</div></div></div></div></div></foreignObject><text x="611" y="615" fill="#333333" font-family="Helvetica" font-size="14px" text-anchor="middle">gfx_draw...</text></switch></g></g><g><path d="M 176 351 L 176 392.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 176 398.76 L 172 390.76 L 176 392.76 L 180 390.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 421 351 L 416.12 682.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 416.03 688.76 L 412.15 680.71 L 416.12 682.76 L 420.15 680.82 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="86" y="321" width="180" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 336px; margin-left: 87px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Canvas</div></div></div></foreignObject><text x="176" y="340" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Canvas</text></switch></g></g><g><rect x="331" y="321" width="180" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 336px; margin-left: 332px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">BasicCanvas</div></div></div></foreignObject><text x="421" y="340" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">BasicCanvas</text></switch></g></g><g><path d="M 176 481 L 176 537.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 176 543.76 L 172 535.76 L 176 537.76 L 180 535.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 176 626 L 176 762.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 176 768.76 L 172 760.76 L 176 762.76 L 180 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 521 591 L 451 591 L 451 682.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 451 688.76 L 447 680.76 L 451 682.76 L 455 680.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 11 661 L 761 661" fill="none" stroke="#990000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/></g><g><path d="M 1 511 L 761 511" fill="none" stroke="#990000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/></g><g><path d="M 1 381 L 761 381" fill="none" stroke="#990000" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/></g><g><rect x="721" y="571" width="60" height="30" fill="none" stroke="none" transform="rotate(-90,751,586)" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)rotate(-90 751 586)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 586px; margin-left: 722px;"><div data-drawio-colors="color: #990000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(153, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">LIB<br />(C)</div></div></div></foreignObject><text x="751" y="591" fill="#990000" font-family="Helvetica" font-size="16px" text-anchor="middle">LIB...</text></switch></g></g><g><rect x="721" y="751" width="60" height="30" fill="none" stroke="none" transform="rotate(-90,751,766)" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)rotate(-90 751 766)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 766px; margin-left: 722px;"><div data-drawio-colors="color: #990000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(153, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">HAL<br />(C)</div></div></div></foreignObject><text x="751" y="771" fill="#990000" font-family="Helvetica" font-size="16px" text-anchor="middle">HAL...</text></switch></g></g><g><rect x="721" y="426" width="60" height="30" fill="none" stroke="none" transform="rotate(-90,751,441)" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)rotate(-90 751 441)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 441px; margin-left: 722px;"><div data-drawio-colors="color: #990000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(153, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">TrezorHal (RUST)</div></div></div></foreignObject><text x="751" y="446" fill="#990000" font-family="Helvetica" font-size="16px" text-anchor="middle">TrezorH...</text></switch></g></g><g><rect x="121" y="36" width="530" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 528px; height: 1px; padding-top: 51px; margin-left: 122px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">High-level abstraction for drawing implements simple objects (such as <b style="font-size: 14px;">Bar</b>, <b style="font-size: 14px;">Circle</b>, <b style="font-size: 14px;">ImageToif</b>, <b style="font-size: 14px;">ImageJpeg</b>) that can be renderered on the display through the lower layer. </div></div></div></foreignObject><text x="386" y="55" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="14px" text-anchor="middle">High-level abstraction for drawing implements simple objects (such as Bar, C...</text></switch></g></g><g><rect x="91" y="161" width="550" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 548px; height: 1px; padding-top: 176px; margin-left: 92px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Provides two distinguished mechanisms for rendering shape on the display: <b style="font-size: 14px;">DirectRenderer</b> for drawing using display drivers exposing framebuffer, and <b style="font-size: 14px;">ProgressiveRenderer</b> for drawing on displays without framebuffer in MCU RAM providing just simple bit-blt operations.</div></div></div></foreignObject><text x="366" y="180" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="14px" text-anchor="middle">Provides two distinguished mechanisms for rendering shape on the display: Dire...</text></switch></g></g><g><rect x="101" y="271" width="510" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 508px; height: 1px; padding-top: 286px; margin-left: 102px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Several implementations of the <b style="font-size: 14px;">Canvas trait</b> (<b style="font-size: 14px;">Rgb565Canvas</b>, <b style="font-size: 14px;">RGBA8888Canvas</b>, <b style="font-size: 14px;">Mono8Canvas</b>) for different types of framebuffers/displays.</div></div></div></foreignObject><text x="356" y="290" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="14px" text-anchor="middle">Several implementations of the Canvas trait (Rgb565Canvas, RGBA8888Canvas...</text></switch></g></g><g><path d="M 596 551 L 596 571 L 604.63 571" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 609.88 571 L 602.88 574.5 L 604.63 571 L 602.88 567.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 596 551 L 596 571 L 604.63 571" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 609.88 571 L 602.88 574.5 L 604.63 571 L 602.88 567.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="511" y="521" width="170" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 536px; margin-left: 512px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">direct drawing without rust lib</div></div></div></foreignObject><text x="596" y="540" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">direct drawing without rust...</text></switch></g></g><g><path d="M 391 91 L 391 122.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 391 128.76 L 387 120.76 L 391 122.76 L 395 120.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><path d="M 391 221 L 391 242.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 391 248.76 L 387 240.76 L 391 242.76 L 395 240.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g><g><rect x="721" y="161" width="60" height="30" fill="none" stroke="none" transform="rotate(-90,751,176)" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)rotate(-90 751 176)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 176px; margin-left: 722px;"><div data-drawio-colors="color: #990000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(153, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">UI (RUST)</div></div></div></foreignObject><text x="751" y="181" fill="#990000" font-family="Helvetica" font-size="16px" text-anchor="middle">UI (RUS...</text></switch></g></g><g><path d="M 381 731 L 331 731 L 331 586 L 299.24 586" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 293.24 586 L 301.24 582 L 299.24 586 L 301.24 590 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/core/embed/rust/src/ui/shape/jpeg.rs b/core/embed/rust/src/ui/shape/jpeg.rs new file mode 100644 index 0000000000..63f6c13fdb --- /dev/null +++ b/core/embed/rust/src/ui/shape/jpeg.rs @@ -0,0 +1,216 @@ +use crate::{ + io::BinaryData, + ui::{ + display::image::JpegInfo, + geometry::{Alignment2D, Offset, Point, Rect}, + }, +}; + +use super::{Bitmap, BitmapFormat, BitmapView, Canvas, DrawingCache, Renderer, Shape, ShapeClone}; + +use without_alloc::alloc::LocalAllocLeakExt; + +/// A shape for rendering compressed JPEG images. +pub struct JpegImage<'a> { + /// Image position + pos: Point, + // Image position alignment + align: Alignment2D, + /// JPEG data + jpeg: BinaryData<'a>, + /// Scale factor (default 0) + scale: u8, + /// Blurring radius or 0 if no blurring required (default 0) + blur_radius: usize, + /// Dimming of blurred image in range of 0..255 (default 255) + dim: u8, + /// Set if blurring is pending + /// (used only during image drawing). + blur_tag: Option<u32>, + /// Final size calculated from TOIF data + size: Offset, +} + +impl<'a> JpegImage<'a> { + pub fn new_image(pos: Point, jpeg: BinaryData<'a>) -> Self { + JpegImage { + pos, + align: Alignment2D::TOP_LEFT, + scale: 0, + dim: 255, + blur_radius: 0, + jpeg, + blur_tag: None, + size: Offset::zero(), + } + } + + pub fn new(pos: Point, jpeg: &'a [u8]) -> Self { + Self::new_image(pos, jpeg.into()) + } + + pub fn with_align(self, align: Alignment2D) -> Self { + Self { align, ..self } + } + + pub fn with_scale(self, scale: u8) -> Self { + assert!(scale <= 3); + Self { scale, ..self } + } + + pub fn with_blur(self, blur_radius: usize) -> Self { + Self { + blur_radius, + ..self + } + } + + pub fn with_dim(self, dim: u8) -> Self { + Self { dim, ..self } + } + + pub fn render(mut self, renderer: &mut impl Renderer<'a>) { + self.size = self.calc_size(); + renderer.render_shape(self); + } + + fn calc_size(&self) -> Offset { + let info = unwrap!(JpegInfo::parse(self.jpeg), "Invalid image"); + let scale_factor = 1 << self.scale; + let size = info.size(); + Offset::new(size.x / scale_factor, size.y / scale_factor) + } +} + +impl<'a> Shape<'a> for JpegImage<'a> { + fn bounds(&self) -> Rect { + Rect::from_top_left_and_size(self.size.snap(self.pos, self.align), self.size) + } + + fn cleanup(&mut self, _cache: &DrawingCache<'a>) { + self.blur_tag = None; + } + + /* + // Faster implementation suitable for DirectRenderer without blurring support + // (but is terribly slow on ProgressiveRenderer if slices are not aligned + // to JPEG MCUs ) + fn draw(&mut self, canvas: &mut dyn RgbCanvasEx, cache: &DrawingCache<'a>) { + let bounds = self.bounds(cache); + let clip = canvas.viewport().relative_clip(bounds).clip; + + // translate clip to JPEG relative coordinates + let clip = clip.translate(-canvas.viewport().origin); + let clip = clip.translate((-bounds.top_left()).into()); + + unwrap!( + cache.jpeg().decompress_mcu( + self.jpeg, + self.scale, + clip.top_left(), + &mut |mcu_r, mcu_bitmap| { + // Draw single MCU + canvas.draw_bitmap(mcu_r.translate(bounds.top_left().into()), mcu_bitmap); + // Return true if we are not done yet + mcu_r.x1 < clip.x1 || mcu_r.y1 < clip.y1 + } + ), + "Invalid JPEG" + ); + }*/ + + // This is a little bit slower implementation suitable for ProgressiveRenderer + fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache<'a>) { + let bounds = self.bounds(); + let clip = canvas.viewport().relative_clip(bounds).clip; + + // Translate clip to JPEG relative coordinates + let clip = clip.translate(-canvas.viewport().origin); + let clip = clip.translate((-bounds.top_left()).into()); + + if self.blur_radius == 0 { + // Draw JPEG without blurring + + // Routine for drawing single JPEG MCU + let draw_mcu = &mut |row_r: Rect, row_bitmap: BitmapView| { + // Draw a row of decoded MCUs + canvas.draw_bitmap(row_r.translate(bounds.top_left().into()), row_bitmap); + // Return true if we are not done yet + row_r.y1 < clip.y1 + }; + + unwrap!( + cache + .jpeg() + .decompress_row(self.jpeg, self.scale, clip.y0, draw_mcu), + "Invalid JPEG" + ); + } else { + // Draw JPEG with blurring effect + let jpeg_size = self.bounds().size(); + + // Get a single line working bitmap + let buff = &mut unwrap!(cache.image_buff(), "No image buffer"); + let mut slice = unwrap!( + Bitmap::new_mut( + BitmapFormat::RGB565, + None, + Offset::new(jpeg_size.x, 1), + None, + &mut buff[..] + ), + "Too small buffer" + ); + + // Get the blurring algorithm instance + let mut blur_cache = cache.blur(); + let (blur, blur_tag) = + unwrap!(blur_cache.get(jpeg_size, self.blur_radius, self.blur_tag)); + self.blur_tag = Some(blur_tag); + + if let Some(y) = blur.push_ready() { + // A function for drawing a row of JPEG MCUs + let draw_row = &mut |row_r: Rect, jpeg_slice: BitmapView| { + loop { + if let Some(y) = blur.push_ready() { + if y < row_r.y1 { + // should never fail + blur.push(unwrap!(jpeg_slice.row(y - row_r.y0))); + } else { + return true; // need more data + } + } + + if let Some(y) = blur.pop_ready() { + blur.pop(unwrap!(slice.row_mut(0)), Some(self.dim)); // should never fail + let dst_r = Rect::from_top_left_and_size(bounds.top_left(), jpeg_size) + .translate(Offset::new(0, y)); + canvas.draw_bitmap(dst_r, slice.view()); + + if y + 1 >= clip.y1 { + return false; // we are done + } + } + } + }; + + unwrap!( + cache + .jpeg() + .decompress_row(self.jpeg, self.scale, y, draw_row), + "Invalid JPEG" + ); + } + } + } +} + +impl<'a> ShapeClone<'a> for JpegImage<'a> { + fn clone_at_bump<T>(self, bump: &'a T) -> Option<&'a mut dyn Shape<'a>> + where + T: LocalAllocLeakExt<'a>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(JpegImage { ..self })) + } +} diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs new file mode 100644 index 0000000000..b42be4cc1e --- /dev/null +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -0,0 +1,33 @@ +mod bar; +mod base; +mod bitmap; +#[cfg(feature = "ui_blurring")] +mod blur; +mod cache; +mod canvas; +mod circle; +mod display; +#[cfg(feature = "ui_jpeg_decoder")] +mod jpeg; +mod qrcode; +mod render; +mod text; +mod toif; +mod utils; + +pub use bar::Bar; +pub use base::{Shape, ShapeClone}; +pub use bitmap::{Bitmap, BitmapFormat, BitmapView}; +#[cfg(feature = "ui_blurring")] +pub use blur::Blurring; +pub use cache::drawing_cache::DrawingCache; +pub use canvas::{BasicCanvas, Canvas, Mono8Canvas, Rgb565Canvas, Rgba8888Canvas, Viewport}; +pub use circle::Circle; +pub use display::render_on_display; +#[cfg(feature = "ui_jpeg_decoder")] +pub use jpeg::JpegImage; +pub use qrcode::QrImage; +pub use render::{DirectRenderer, ProgressiveRenderer, Renderer}; +pub use text::Text; +pub use toif::ToifImage; +pub use utils::PI4; diff --git a/core/embed/rust/src/ui/shape/qrcode.rs b/core/embed/rust/src/ui/shape/qrcode.rs new file mode 100644 index 0000000000..491dae033e --- /dev/null +++ b/core/embed/rust/src/ui/shape/qrcode.rs @@ -0,0 +1,169 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Rect}, +}; + +use qrcodegen::QrCode; + +use super::{ + utils::line_points, Bitmap, BitmapFormat, Canvas, DrawingCache, Renderer, Shape, ShapeClone, +}; + +use without_alloc::alloc::LocalAllocLeakExt; + +const MAX_QRCODE_BYTES: usize = 400; + +/// A shape for `QrCode` rendering. +pub struct QrImage { + /// Destination rectangle + area: Rect, + /// QR code bitmap + qr_modules: [u8; MAX_QRCODE_BYTES], + /// Size of QR code bitmap in bytes + qr_size: i16, + /// Foreground color + fg_color: Color, + /// Optional background color + bg_color: Option<Color>, +} + +impl QrImage { + pub fn new(area: Rect, qrcode: &QrCode) -> Self { + if area.width() < qrcode.size() as i16 || area.height() < qrcode.size() as i16 { + panic!("Too small area"); + } + + let mut result = QrImage { + area, + qr_size: qrcode.size() as i16, + qr_modules: [0u8; MAX_QRCODE_BYTES], + fg_color: Color::white(), + bg_color: None, + }; + + // Copy content of QR code to the qrmodules buffer + for y in 0..result.qr_size { + for x in 0..result.qr_size { + result.set_module(x, y, qrcode.get_module(x as i32, y as i32)); + } + } + + result + } + + fn set_module(&mut self, x: i16, y: i16, value: bool) { + // Every row starts at byte aligned address + let row_offset = (y * (self.qr_size + 7) / 8) as usize; + let row = &mut self.qr_modules[row_offset..]; + let col_offset = (x / 8) as usize; + let col_bit = 1 << (x & 0x7); + if value { + row[col_offset] |= col_bit; + } else { + row[col_offset] &= col_bit ^ 0xFF; + } + } + + fn get_module(&self, x: i16, y: i16) -> bool { + // Every row starts at byte aligned address + let row_offset = (y * (self.qr_size + 7) / 8) as usize; + let row = &self.qr_modules[row_offset..]; + let col_offset = (x / 8) as usize; + let col_bit = 1 << (x & 0x7); + (row[col_offset] & col_bit) != 0 + } + + pub fn with_fg(self, fg_color: Color) -> Self { + Self { fg_color, ..self } + } + + pub fn with_bg(self, bg_color: Color) -> Self { + Self { + bg_color: Some(bg_color), + ..self + } + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } + + fn draw_row(&self, slice_row: &mut [u8], qr_y: i16) { + slice_row.iter_mut().for_each(|b| *b = 0); + + let mut qr_module = false; + + for p in line_points(self.area.x1 - self.area.x0, self.qr_size, 0) { + if p.first { + qr_module = self.get_module(p.v, qr_y); + } + if !qr_module { + if p.u & 0x01 == 0 { + slice_row[(p.u / 2) as usize] |= 0x0F; + } else { + slice_row[(p.u / 2) as usize] |= 0xF0; + } + } + } + } +} + +impl Shape<'_> for QrImage { + fn bounds(&self) -> Rect { + self.area + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache) { + let buff = &mut unwrap!(cache.image_buff(), "No TOIF buffer"); + + let mut slice = unwrap!( + Bitmap::new_mut( + BitmapFormat::MONO4, + None, + Offset::new(self.area.width(), 1), + None, + &mut buff[..] + ), + "Too small buffer" + ); + + let clip = canvas.viewport().relative_clip(self.bounds()).clip; + + // translate clip to the relative coordinates + let clip = clip.translate(-canvas.viewport().origin); + let clip = clip.translate((-self.area.top_left()).into()); + + for p in line_points(self.area.y1 - self.area.y0, self.qr_size, clip.y0) + .take(clip.height() as usize) + { + if p.first { + self.draw_row(slice.row_mut(0).unwrap(), p.v); + } + + let r = Rect { + y0: self.area.y0 + p.u, + y1: self.area.y0 + p.u + 1, + ..self.area + }; + + let slice_view = slice.view().with_fg(self.fg_color); + + match self.bg_color { + Some(bg_color) => canvas.draw_bitmap(r, slice_view.with_bg(bg_color)), + None => canvas.blend_bitmap(r, slice_view), + } + } + } +} + +impl<'s> ShapeClone<'s> for QrImage { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape<'s>> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(QrImage { ..self })) + } +} diff --git a/core/embed/rust/src/ui/shape/render.rs b/core/embed/rust/src/ui/shape/render.rs new file mode 100644 index 0000000000..a9658fc425 --- /dev/null +++ b/core/embed/rust/src/ui/shape/render.rs @@ -0,0 +1,254 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Point, Rect}, +}; + +use super::{BasicCanvas, Canvas, DrawingCache, Rgb565Canvas, Shape, ShapeClone, Viewport}; + +use without_alloc::{alloc::LocalAllocLeakExt, FixedVec}; + +// ========================================================================== +// trait Renderer +// ========================================================================== + +/// All renders must implement Renderer trait +/// Renderers can immediately use the draw() method of the passed shape or +/// may store it (using the boxed() method) and draw it later +pub trait Renderer<'a> { + fn viewport(&self) -> Viewport; + + fn set_viewport(&mut self, viewport: Viewport); + + fn set_window(&mut self, window: Rect) -> Viewport { + let viewport = self.viewport(); + self.set_viewport(viewport.relative_window(window)); + viewport + } + + fn set_clip(&mut self, clip: Rect) -> Viewport { + let viewport = self.viewport(); + self.set_viewport(viewport.relative_clip(clip)); + viewport + } + + fn render_shape<S>(&mut self, shape: S) + where + S: Shape<'a> + ShapeClone<'a>; + + fn in_window(&mut self, r: Rect, inner: &dyn Fn(&mut Self)) { + let original = self.set_window(r); + inner(self); + self.set_viewport(original); + } + + fn in_clip(&mut self, r: Rect, inner: &dyn Fn(&mut Self)) { + let original = self.set_clip(r); + inner(self); + self.set_viewport(original); + } + + fn with_origin(&mut self, origin: Offset, inner: &dyn Fn(&mut Self)) { + let original = self.viewport(); + self.set_viewport(self.viewport().with_origin(origin)); + inner(self); + self.set_viewport(original); + } +} + +// ========================================================================== +// struct DirectRenderer +// ========================================================================== + +/// A simple implementation of a Renderer that draws directly onto the CanvasEx +pub struct DirectRenderer<'a, 'alloc, C> +where + C: Canvas, +{ + /// Target canvas + canvas: &'a mut C, + /// Drawing cache (decompression context, scratch-pad memory) + cache: &'a DrawingCache<'alloc>, +} + +impl<'a, 'alloc, C> DirectRenderer<'a, 'alloc, C> +where + C: Canvas, +{ + /// Creates a new DirectRenderer instance with the given canvas + pub fn new( + canvas: &'a mut C, + bg_color: Option<Color>, + cache: &'a DrawingCache<'alloc>, + ) -> Self { + if let Some(color) = bg_color { + canvas.fill_background(color); + } + + // TODO: consider storing original canvas.viewport + // and restoring it by drop() function + + Self { canvas, cache } + } +} + +impl<'a, 'alloc, C> Renderer<'alloc> for DirectRenderer<'a, 'alloc, C> +where + C: Canvas, +{ + fn viewport(&self) -> Viewport { + self.canvas.viewport() + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.canvas.set_viewport(viewport); + } + + fn render_shape<S>(&mut self, mut shape: S) + where + S: Shape<'alloc> + ShapeClone<'alloc>, + { + if self.canvas.viewport().contains(shape.bounds()) { + shape.draw(self.canvas, self.cache); + shape.cleanup(self.cache); + } + } +} + +// ========================================================================== +// struct ProgressiveRenderer +// ========================================================================== + +struct ShapeHolder<'a> { + shape: &'a mut dyn Shape<'a>, + viewport: Viewport, +} + +/// A more advanced Renderer implementation that supports deferred rendering. +pub struct ProgressiveRenderer<'a, 'alloc, T, C> +where + T: LocalAllocLeakExt<'alloc>, + C: BasicCanvas, +{ + /// Target canvas + canvas: &'a mut C, + /// Bump for cloning shapes + bump: &'alloc T, + /// List of rendered shapes + shapes: FixedVec<'alloc, ShapeHolder<'alloc>>, + /// Current viewport + viewport: Viewport, + // Default background color + bg_color: Option<Color>, + /// Drawing cache (decompression context, scratch-pad memory) + cache: &'a DrawingCache<'alloc>, +} + +impl<'a, 'alloc, T, C> ProgressiveRenderer<'a, 'alloc, T, C> +where + T: LocalAllocLeakExt<'alloc>, + C: BasicCanvas, +{ + /// Creates a new ProgressiveRenderer instance + pub fn new( + canvas: &'a mut C, + bg_color: Option<Color>, + cache: &'a DrawingCache<'alloc>, + bump: &'alloc T, + max_shapes: usize, + ) -> Self { + let viewport = canvas.viewport(); + Self { + canvas, + bump, + shapes: unwrap!(bump.fixed_vec(max_shapes), "No shape memory"), + viewport, + bg_color, + cache, + } + } + + /// Renders stored shapes onto the specified canvas + pub fn render(&mut self, lines: usize) { + let canvas_clip = self.canvas.viewport().clip; + + if canvas_clip.is_empty() { + return; + } + + let buff = &mut unwrap!(self.cache.render_buff(), "No render buffer"); + + let mut slice = unwrap!( + Rgb565Canvas::new( + Offset::new(canvas_clip.width(), lines as i16), + None, + Some(1), + &mut buff[..], + ), + "No render memory" + ); + + let lines = slice.height() as usize; + + for y in (canvas_clip.y0..canvas_clip.y1).step_by(lines) { + // Calculate the coordinates of the slice we will draw into + let slice_r = Rect::new( + // slice_r is in absolute coordinates + Point::new(canvas_clip.x0, y), + Point::new(canvas_clip.x1, y + lines as i16), + ); + + // Clear the slice background + if let Some(color) = self.bg_color { + slice.set_viewport(Viewport::from_size(slice_r.size())); + slice.fill_background(color); + } + + // Draw all shapes that overlaps the slice + for holder in self.shapes.iter_mut() { + let shape_viewport = holder.viewport.absolute_clip(slice_r); + let shape_bounds = holder.shape.bounds(); + + // Is the shape overlapping the current slice? + if shape_viewport.contains(shape_bounds) { + slice.set_viewport(shape_viewport.translate((-slice_r.top_left()).into())); + holder.shape.draw(&mut slice, self.cache); + + if shape_bounds.y1 + shape_viewport.origin.y <= shape_viewport.clip.y1 { + // The shape will never be drawn again + holder.shape.cleanup(self.cache); + } + } + } + self.canvas.draw_bitmap(slice_r, slice.view()); + } + } +} + +impl<'a, 'alloc, T, C> Renderer<'alloc> for ProgressiveRenderer<'a, 'alloc, T, C> +where + T: LocalAllocLeakExt<'alloc>, + C: BasicCanvas, +{ + fn viewport(&self) -> Viewport { + self.viewport + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.viewport = viewport.absolute_clip(self.canvas.bounds()); + } + + fn render_shape<S>(&mut self, shape: S) + where + S: Shape<'alloc> + ShapeClone<'alloc>, + { + // Is the shape visible? + if self.viewport.contains(shape.bounds()) { + // Clone the shape & push it to the list + let holder = ShapeHolder { + shape: unwrap!(shape.clone_at_bump(self.bump), "No shape memory"), + viewport: self.viewport, + }; + unwrap!(self.shapes.push(holder), "Shape list full"); + } + } +} diff --git a/core/embed/rust/src/ui/shape/text.rs b/core/embed/rust/src/ui/shape/text.rs new file mode 100644 index 0000000000..f0d80f123f --- /dev/null +++ b/core/embed/rust/src/ui/shape/text.rs @@ -0,0 +1,134 @@ +use crate::ui::{ + display::{Color, Font}, + geometry::{Alignment, Offset, Point, Rect}, +}; + +use super::{BitmapView, Canvas, DrawingCache, Renderer, Shape, ShapeClone}; + +use without_alloc::alloc::LocalAllocLeakExt; + +/// A shape for text strings rendering. +pub struct Text<'a> { + // Text position + pos: Point, + // Text string + text: &'a str, + // Text color + color: Color, + // Text font + font: Font, + // Horizontal alignment + align: Alignment, + // Final bounds calculated when rendered + bounds: Rect, +} + +impl<'a> Text<'a> { + /// Creates a `shape::Text` structure with a specified + /// text (`str`) and the top-left corner (`pos`). + pub fn new(pos: Point, text: &'a str) -> Self { + Self { + pos, + text, + color: Color::white(), + font: Font::NORMAL, + align: Alignment::Start, + bounds: Rect::zero(), + } + } + + pub fn with_fg(self, color: Color) -> Self { + Self { color, ..self } + } + + pub fn with_font(self, font: Font) -> Self { + Self { font, ..self } + } + + pub fn with_align(self, align: Alignment) -> Self { + Self { align, ..self } + } + + pub fn render<'r>(mut self, renderer: &mut impl Renderer<'r>) { + self.bounds = self.calc_bounds(); + renderer.render_shape(self); + } + + fn aligned_pos(&self) -> Point { + match self.align { + Alignment::Start => self.pos, + Alignment::Center => Point::new( + self.font.horz_center(self.pos.x, self.pos.x, self.text), + self.pos.y, + ), + Alignment::End => Point::new(self.pos.x - self.font.text_width(self.text), self.pos.y), + } + } + + fn calc_bounds(&self) -> Rect { + let pos = self.aligned_pos(); + let (ascent, descent) = self.font.visible_text_height_ex(self.text); + Rect { + x0: pos.x, + y0: pos.y - ascent, + x1: pos.x + self.font.text_width(self.text), + y1: pos.y + descent, + } + } +} + +impl<'a> Shape<'_> for Text<'a> { + fn bounds(&self) -> Rect { + self.bounds + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache) { + let mut r = self.bounds(); + let max_ascent = self.pos.y - r.y0; + + // TODO: optimize text clipping, use canvas.viewport() + + for ch in self.text.chars() { + if r.x0 >= r.x1 { + break; + } + + let glyph = self.font.get_glyph(ch); + let glyph_bitmap = glyph.bitmap(); + let glyph_view = BitmapView::new(&glyph_bitmap) + .with_fg(self.color) + .with_offset(Offset::new( + -glyph.bearing_x, + -(max_ascent - glyph.bearing_y), + )); + + canvas.blend_bitmap(r, glyph_view); + r.x0 += glyph.adv; + } + } +} + +impl<'a, 's> ShapeClone<'s> for Text<'a> { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape<'s>> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + let text = bump.copy_str(self.text)?; + Some(clone.uninit.init(Text { text, ..self })) + } +} + +impl Font { + fn visible_text_height_ex(&self, text: &str) -> (i16, i16) { + let (mut ascent, mut descent) = (0, 0); + for c in text.chars() { + let glyph = self.get_glyph(c); + ascent = ascent.max(glyph.bearing_y); + descent = descent.max(glyph.height - glyph.bearing_y); + } + (ascent, descent) + } +} diff --git a/core/embed/rust/src/ui/shape/toif.rs b/core/embed/rust/src/ui/shape/toif.rs new file mode 100644 index 0000000000..a4be22c0f9 --- /dev/null +++ b/core/embed/rust/src/ui/shape/toif.rs @@ -0,0 +1,198 @@ +use crate::{ + io::BinaryData, + ui::{ + display::{image::ToifInfo, toif::Toif, Color}, + geometry::{Alignment2D, Offset, Point, Rect}, + }, +}; + +use super::{Bitmap, BitmapFormat, Canvas, DrawingCache, Renderer, Shape, ShapeClone}; + +use without_alloc::alloc::LocalAllocLeakExt; + +/// A shape for rendering compressed TOIF images. +pub struct ToifImage<'a> { + /// Image position + pos: Point, + // Image position alignment + align: Alignment2D, + // Image data + toif: BinaryData<'a>, + // Foreground color + fg_color: Color, + // Optional background color + bg_color: Option<Color>, + /// Final size calculated from TOIF data + size: Offset, +} + +impl<'a> ToifImage<'a> { + pub fn new_image(pos: Point, toif: BinaryData<'a>) -> Self { + Self { + pos, + align: Alignment2D::TOP_LEFT, + toif, + fg_color: Color::white(), + bg_color: None, + size: Offset::zero(), + } + } + + pub fn new(pos: Point, toif: Toif<'a>) -> Self { + Self { + pos, + align: Alignment2D::TOP_LEFT, + toif: toif.original_data().into(), + fg_color: Color::white(), + bg_color: None, + size: Offset::zero(), + } + } + + pub fn with_align(self, align: Alignment2D) -> Self { + Self { align, ..self } + } + + pub fn with_fg(self, fg_color: Color) -> Self { + Self { fg_color, ..self } + } + + pub fn with_bg(self, bg_color: Color) -> Self { + Self { + bg_color: Some(bg_color), + ..self + } + } + + pub fn render(mut self, renderer: &mut impl Renderer<'a>) { + self.size = self.calc_size(); + renderer.render_shape(self); + } + + fn draw_grayscale(&self, canvas: &mut dyn Canvas, cache: &DrawingCache<'a>) { + // TODO: introduce new viewport/shape function for this calculation + let bounds = self.bounds(); + let viewport = canvas.viewport(); + let mut clip = self + .bounds() + .clamp(viewport.clip.translate(-viewport.origin)) + .translate((-bounds.top_left()).into()); + + let buff = &mut unwrap!(cache.image_buff(), "No image buffer"); + let mut slice = unwrap!( + Bitmap::new_mut( + BitmapFormat::MONO4, + None, + bounds.size(), + Some(1), + &mut buff[..] + ), + "Too small buffer" + ); + + while !clip.is_empty() { + let height = core::cmp::min(slice.height(), clip.height()); + unwrap!( + cache.zlib().uncompress_toif( + self.toif, + clip.y0, + unwrap!(slice.rows_mut(0, height)), // should never fail + ), + "Invalid TOIF" + ); + + let r = clip.translate(bounds.top_left().into()); + + let slice_view = slice + .view() + .with_fg(self.fg_color) + .with_offset(Offset::new(r.x0 - bounds.top_left().x, 0)); + + match self.bg_color { + Some(bg_color) => canvas.draw_bitmap(r, slice_view.with_bg(bg_color)), + None => canvas.blend_bitmap(r, slice_view), + } + + clip.y0 += height; + } + } + + fn draw_rgb(&self, canvas: &mut dyn Canvas, cache: &DrawingCache<'a>) { + // TODO: introduce new viewport/shape function for this calculation + let bounds = self.bounds(); + let viewport = canvas.viewport(); + let mut clip = self + .bounds() + .clamp(viewport.clip.translate(-viewport.origin)) + .translate((-bounds.top_left()).into()); + + let buff = &mut unwrap!(cache.image_buff(), "No image buffer"); + let mut slice = unwrap!( + Bitmap::new_mut( + BitmapFormat::RGB565, + None, + bounds.size(), + Some(1), + &mut buff[..] + ), + "Too small buffer" + ); + + while !clip.is_empty() { + let height = core::cmp::min(slice.height(), clip.height()); + + if let Some(row_bytes) = slice.rows_mut(0, height) { + // always true + unwrap!( + cache.zlib().uncompress_toif(self.toif, clip.y0, row_bytes,), + "Invalid TOIF" + ); + } + + let r = clip.translate(bounds.top_left().into()); + + let slice_view = slice + .view() + .with_offset(Offset::new(r.x0 - bounds.top_left().x, 0)); + + canvas.draw_bitmap(r, slice_view); + + clip.y0 += height; + } + } + + fn calc_size(&self) -> Offset { + let info = unwrap!(ToifInfo::parse(self.toif), "Invalid image"); + + info.size() + } +} + +impl<'a> Shape<'a> for ToifImage<'a> { + fn bounds(&self) -> Rect { + Rect::from_top_left_and_size(self.size.snap(self.pos, self.align), self.size) + } + + fn cleanup(&mut self, _cache: &DrawingCache<'a>) { + // TODO: inform the cache that we won't use the zlib slot anymore + } + + fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache<'a>) { + let info = unwrap!(ToifInfo::parse(self.toif), "Invalid image"); + if info.is_grayscale() { + self.draw_grayscale(canvas, cache); + } else { + self.draw_rgb(canvas, cache); + } + } +} + +impl<'a> ShapeClone<'a> for ToifImage<'a> { + fn clone_at_bump<T>(self, bump: &'a T) -> Option<&'a mut dyn Shape<'a>> + where + T: LocalAllocLeakExt<'a>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(ToifImage { ..self })) + } +} diff --git a/core/embed/rust/src/ui/shape/utils/blur.rs b/core/embed/rust/src/ui/shape/utils/blur.rs new file mode 100644 index 0000000000..0cadb9c43c --- /dev/null +++ b/core/embed/rust/src/ui/shape/utils/blur.rs @@ -0,0 +1,357 @@ +use crate::{trezorhal::display, ui::geometry::Offset}; +/// This is a simple and fast blurring algorithm that uses a box filter - +/// a square kernel with all coefficients set to 1. +/// +/// The `BlurFilter` structure holds the context of a simple 2D window averaging +/// filter - a sliding window and the sum of all rows in the sliding window. +/// +/// The `BlurFilter` implements only five public functions - `new`, `push`, +/// `push_read`, `pop` and `pop_ready`. +/// +/// The `new()` function creates a blur filter context. +/// - The `size` argument specifies the size of the blurred area. +/// - The `radius` argument specifies the length of the kernel side. +/// +/// ```rust +/// let blur = BlurFilter::new(size, radius); +/// ``` +/// +/// The `push_ready()` function returns the row from the source bitmap +/// needed to be pushed +/// +/// The `push()` function pushes source row data into the sliding window and +/// performs all necessary calculations. +/// +/// ```rust +/// if let Some(y) = blur.push_ready() { +/// blur.push(&src_bitmap.row(y)[x0..x1]); +/// } +/// ``` +/// +/// The `pop_ready()` function returns the row from the destination bitmap +/// that can be popped out +/// +/// The `pop()` function pops the blurred row from the sliding window. +/// +/// ```rust +/// if let Some(y) = blur.pop_ready() { +/// blur.pop(&mut dst_bitmap.row(y)[x0..x1]); +/// } +/// ``` +use core::mem::size_of; + +const MAX_RADIUS: usize = 4; +const MAX_SIDE: usize = 1 + MAX_RADIUS * 2; +const MAX_WIDTH: usize = display::DISPLAY_RESX as usize; + +pub type BlurBuff = [u8; MAX_WIDTH * (MAX_SIDE * 3 + size_of::<u16>() * 3) + 8]; + +type PixelColor = u16; + +#[derive(Default, Copy, Clone)] +struct Rgb<T> { + pub r: T, + pub g: T, + pub b: T, +} + +impl Rgb<u16> { + #[inline(always)] + fn mulshift(&self, multiplier: u32, shift: u8) -> Rgb<u8> { + Rgb::<u8> { + r: ((self.r as u32 * multiplier) >> shift) as u8, + g: ((self.g as u32 * multiplier) >> shift) as u8, + b: ((self.b as u32 * multiplier) >> shift) as u8, + } + } +} + +impl From<u16> for Rgb<u16> { + #[inline(always)] + fn from(value: u16) -> Self { + Self { + r: (value >> 8) & 0xF8, + g: (value >> 3) & 0xFC, + b: (value << 3) & 0xF8, + } + } +} + +impl core::ops::AddAssign<u16> for Rgb<u16> { + #[inline(always)] + fn add_assign(&mut self, rhs: u16) { + let rgb: Self = rhs.into(); + *self += rgb; + } +} + +impl core::ops::SubAssign<u16> for Rgb<u16> { + #[inline(always)] + fn sub_assign(&mut self, rhs: u16) { + let rgb: Self = rhs.into(); + *self -= rgb; + } +} + +impl core::ops::AddAssign for Rgb<u16> { + #[inline(always)] + fn add_assign(&mut self, rhs: Self) { + self.r += rhs.r; + self.g += rhs.g; + self.b += rhs.b; + } +} + +impl core::ops::SubAssign for Rgb<u16> { + #[inline(always)] + fn sub_assign(&mut self, rhs: Self) { + self.r -= rhs.r; + self.g -= rhs.g; + self.b -= rhs.b; + } +} + +impl From<Rgb<u8>> for u16 { + #[inline(always)] + fn from(value: Rgb<u8>) -> u16 { + let r = (value.r as u16 & 0xF8) << 8; + let g = (value.g as u16 & 0xFC) << 3; + let b = (value.b as u16 & 0xF8) >> 3; + r | g | b + } +} + +impl From<Rgb<u16>> for Rgb<u8> { + #[inline(always)] + fn from(value: Rgb<u16>) -> Self { + Self { + r: value.r as u8, + g: value.g as u8, + b: value.b as u8, + } + } +} + +impl core::ops::AddAssign<Rgb<u8>> for Rgb<u16> { + #[inline(always)] + fn add_assign(&mut self, rhs: Rgb<u8>) { + self.r += rhs.r as u16; + self.g += rhs.g as u16; + self.b += rhs.b as u16; + } +} + +impl core::ops::SubAssign<Rgb<u8>> for Rgb<u16> { + #[inline(always)] + fn sub_assign(&mut self, rhs: Rgb<u8>) { + self.r -= rhs.r as u16; + self.g -= rhs.g as u16; + self.b -= rhs.b as u16; + } +} + +pub struct BlurAlgorithm<'a> { + size: Offset, + radius: usize, + row: usize, + totals: &'a mut [Rgb<u16>], + window: &'a mut [Rgb<u8>], + row_count: usize, +} + +impl<'a> BlurAlgorithm<'a> { + /// Constraints: + /// width <= MAX_WIDTH + /// radius <= MAX_RADIUS + /// width >= radius + pub fn new(size: Offset, radius: usize, memory: &'a mut BlurBuff) -> Result<Self, ()> { + assert!(size.x as usize <= MAX_WIDTH); + assert!(radius <= MAX_RADIUS); + assert!(size.x as usize > 2 * radius - 1); + + // Split buffer into two parts + let window_size = size.x as usize * (1 + radius * 2); + let (window_buff, total_buff) = + memory.split_at_mut(window_size * core::mem::size_of::<Rgb<u8>>()); + + // Allocate `window` from the beginning of the buffer + let (_, window_buff, _) = unsafe { window_buff.align_to_mut() }; + if window_buff.len() < window_size { + return Err(()); + } + let window = &mut window_buff[..window_size]; + window.iter_mut().for_each(|it| *it = Rgb::<u8>::default()); + + // Allocate `totals` from the rest of the buffer + let (_, totals_buff, _) = unsafe { total_buff.align_to_mut() }; + if totals_buff.len() < size.x as usize { + return Err(()); + } + let totals = &mut totals_buff[..size.x as usize]; + totals.iter_mut().for_each(|it| *it = Rgb::<u16>::default()); + + Ok(Self { + size, + radius, + row: 0, + window, + totals, + row_count: 0, + }) + } + + /// Returns the length of the box filter side. + fn box_side(&self) -> usize { + 1 + self.radius * 2 + } + + /// Takes an input row and calculates the same-sized vector + /// as the floating average of n subsequent elements where n = 2 * radius + + /// 1. Finally, it stores it into the specifed row in the sliding + /// window. + fn average_to_row(&mut self, inp: &[PixelColor], row: usize) { + let radius = self.radius; + let offset = self.size.x as usize * row; + let row = &mut self.window[offset..offset + self.size.x as usize]; + + let mut sum = Rgb::<u16>::default(); + + let divisor = (radius * 2 + 1) as u16; + let shift = 10; + let multiplier = (1 << shift) as u32 / divisor as u32; + + // Prepare before averaging + for i in 0..radius { + sum += inp[0]; // Duplicate pixels on the left + sum += inp[i]; // Add first radius pixels + } + + // Process the first few pixels of the row + for i in 0..radius { + sum += inp[i + radius]; + row[i] = sum.mulshift(multiplier, shift); + sum -= inp[0]; + } + + // Process the inner part of the row + for i in radius..row.len() - radius { + sum += inp[i + radius]; + row[i] = sum.mulshift(multiplier, shift); + sum -= inp[i - radius]; + } + + // Process the last few pixels of the row + for i in (row.len() - radius)..row.len() { + sum += inp[inp.len() - 1]; + row[i] = sum.mulshift(multiplier, shift); + sum -= inp[i - radius]; // Duplicate pixels on the right + } + } + + /// Copy one row from the window to the another row. + fn copy_row(&mut self, from_row: usize, to_row: usize) { + let from_offset = self.size.x as usize * from_row; + let to_offset = self.size.x as usize * to_row; + for i in 0..self.size.x as usize { + self.window[to_offset + i] = self.window[from_offset + i]; + } + } + + /// Subtracts the specified row of sliding window from `totals[]`. + fn subtract_row(&mut self, row: usize) { + let offset = self.size.x as usize * row; + let row = &self.window[offset..offset + self.size.x as usize]; + + for (i, item) in row.iter().enumerate() { + self.totals[i] -= *item; + } + } + + /// Adds the specified row of sliding window to `totals[]`. + fn add_row(&mut self, row: usize) { + let offset = self.size.x as usize * row; + let row = &self.window[offset..offset + self.size.x as usize]; + + for (i, item) in row.iter().enumerate() { + self.totals[i] += *item; + } + } + + /// Pushes the most recently pushed row again. + fn push_last_row(&mut self) { + let to_row = self.row; + let from_row = if to_row > 0 { + to_row - 1 + } else { + self.box_side() - 1 + }; + + self.subtract_row(to_row); + self.copy_row(from_row, to_row); + self.add_row(to_row); + + self.row = (to_row + 1) % self.box_side(); + self.row_count += 1; + } + + /// Returns the index of the row needed to be pushed into. + pub fn push_ready(&self) -> Option<i16> { + let y = core::cmp::max(0, self.row_count as i16 - self.radius as i16); + if y < self.size.y { + Some(y) + } else { + None + } + } + + /// Takes the source row and pushes it into the sliding window. + pub fn push(&mut self, input: &[PixelColor]) { + let row = self.row; + + self.subtract_row(row); + self.average_to_row(input, row); + self.add_row(row); + + self.row = (row + 1) % self.box_side(); + self.row_count += 1; + + while self.row_count <= self.radius { + self.push_last_row(); + } + } + + /// Returns the index of row ready to be popped out. + pub fn pop_ready(&self) -> Option<i16> { + let y = self.row_count as i16 - self.box_side() as i16; + if y < 0 { + None + } else { + Some(y) + } + } + + /// Copies the current content of `totals[]` to the output buffer. + pub fn pop(&mut self, output: &mut [PixelColor], dim: Option<u8>) { + let divisor = match dim { + Some(dim) => { + if dim > 0 { + (self.box_side() as u16 * 255) / dim as u16 + } else { + 65535u16 + } + } + None => self.box_side() as u16, + }; + + let shift = 10; + let multiplier = (1 << shift) as u32 / divisor as u32; + + for (i, item) in output.iter_mut().enumerate() { + *item = self.totals[i].mulshift(multiplier, shift).into(); + } + + if self.push_ready().is_none() { + self.push_last_row(); + } + } +} diff --git a/core/embed/rust/src/ui/shape/utils/circle.rs b/core/embed/rust/src/ui/shape/utils/circle.rs new file mode 100644 index 0000000000..2e56a295e9 --- /dev/null +++ b/core/embed/rust/src/ui/shape/utils/circle.rs @@ -0,0 +1,76 @@ +/// Iterator providing points for 1/8th of a circle (single octant) +/// +/// The iterator supplies coordinates of pixels relative to the +/// circle's center point, along with an alpha value in +/// the range (0..255), indicating the proportion of the pixel +/// that lies inside the circle. +/// +/// for p in circle_points(radius) { +/// println!("{}, {}", p.u, p.v); // coordinates <0,radius>..<see_below> +/// println!("{}", p.frac); // distance from the circle <0..255> +/// println!("{}", p.first); // `v` has changed +/// println!("{}", p.last); // next `v` will change +/// } +/// +/// `u` axis is the main and increments at each iteration. +/// +/// endpoint [t, t] or [t - 1, t] where t = radius * (1 / sqrt(2)) + +pub fn circle_points(radius: i16) -> CirclePoints { + CirclePoints { + radius, + u: 0, + v: radius, + t1: radius / 16, + first: true, + } +} + +pub struct CirclePoints { + radius: i16, + u: i16, + v: i16, + t1: i16, + first: bool, +} + +#[derive(Copy, Clone)] +pub struct CirclePointsItem { + pub u: i16, + pub v: i16, + pub frac: u8, + pub first: bool, + pub last: bool, +} + +impl Iterator for CirclePoints { + type Item = CirclePointsItem; + + fn next(&mut self) -> Option<Self::Item> { + if self.v >= self.u { + let mut item = CirclePointsItem { + u: self.u, + v: self.v, + frac: 255 - ((self.t1 as i32 * 255) / self.radius as i32) as u8, + first: self.first, + last: false, + }; + + self.first = false; + self.u += 1; + self.t1 += self.u; + let t2 = self.t1 - self.v; + if t2 >= 0 { + self.t1 = t2; + self.v -= 1; + self.first = true; + } + + item.last = item.v != self.v; + + Some(item) + } else { + None + } + } +} diff --git a/core/embed/rust/src/ui/shape/utils/line.rs b/core/embed/rust/src/ui/shape/utils/line.rs new file mode 100644 index 0000000000..eeae577cbf --- /dev/null +++ b/core/embed/rust/src/ui/shape/utils/line.rs @@ -0,0 +1,94 @@ +/// Iterator providing points on a line (using bresenham's algorithm) +/// +/// The iterator supplies coordinates of pixels relative to the +/// line's start point. +/// +/// constraint: `du` >= `dv`, `start_u` < `du` +/// +/// for p in line_points(du, dv, start_u) { +/// println!("{}, {}", p.u, p.v); // coordinates <0,radius>..<du-1, dv-1> +/// println!("{}", p.frac); // distance from the line <0..255> +/// println!("{}", p.first); // `v` has changed +/// println!("{}", p.last); // next `v` will change +/// } +/// +/// `u` axis is the main and increments at each iteration. + +pub fn line_points(du: i16, dv: i16, start_u: i16) -> LinePoints { + let mut d = 2 * du - 2 * dv; + let mut y = 0; + + for _ in 0..start_u { + if d <= 0 { + d += 2 * du - 2 * dv; + y += 1; + } else { + d -= 2 * dv; + } + } + + LinePoints { + du, + dv, + d, + u: start_u, + v: y, + first: true, + } +} + +pub struct LinePoints { + du: i16, + dv: i16, + d: i16, + u: i16, + v: i16, + first: bool, +} + +#[derive(Copy, Clone)] +pub struct LinePointsItem { + pub u: i16, + pub v: i16, + pub frac: u8, + pub first: bool, + pub last: bool, +} + +impl Iterator for LinePoints { + type Item = LinePointsItem; + + #[inline(always)] + fn next(&mut self) -> Option<Self::Item> { + if self.u < self.du { + let frac = if self.dv < self.du { + 255 - ((self.d + 2 * self.dv - 1) as i32 * 255 / (2 * self.du - 1) as i32) as u8 + } else { + 0 + }; + + let next = LinePointsItem { + u: self.u, + v: self.v, + frac, + first: self.first, + last: self.d <= 0, + }; + + if self.d <= 0 { + self.d += 2 * self.du - 2 * self.dv; + self.v += 1; + self.first = true; + } else { + self.d -= 2 * self.dv; + self.first = false; + } + + self.u += 1; + + Some(next) + } else { + None + } + } +} diff --git a/core/embed/rust/src/ui/shape/utils/mod.rs b/core/embed/rust/src/ui/shape/utils/mod.rs new file mode 100644 index 0000000000..d9e23288c1 --- /dev/null +++ b/core/embed/rust/src/ui/shape/utils/mod.rs @@ -0,0 +1,9 @@ +mod blur; +mod circle; +mod line; +mod trigo; + +pub use blur::{BlurAlgorithm, BlurBuff}; +pub use circle::circle_points; +pub use line::line_points; +pub use trigo::{sin_i16, PI4}; diff --git a/core/embed/rust/src/ui/shape/utils/trigo.rs b/core/embed/rust/src/ui/shape/utils/trigo.rs new file mode 100644 index 0000000000..a18a7bf791 --- /dev/null +++ b/core/embed/rust/src/ui/shape/utils/trigo.rs @@ -0,0 +1,29 @@ +/// Integer representing an angle of 45 degress (PI/4). +// +// Changing this constant requires revisiting isin() algorithm +// (for higher values consider changing T type to i64 or f32) +pub const PI4: i16 = 45; + +/// Fast sine approximation. +/// +/// Returns mult * sin(angle). +/// +/// Angle must be in range <0..PI4>. +/// This function provides an error within +-1 for multiplier up to 500 +pub fn sin_i16(angle: i16, mult: i16) -> i16 { + assert!((0..=PI4).contains(&angle)); + assert!(mult <= 2500); + + type T = i32; + + // Based on polynomial x - x^3 / 6 + let x = angle as T; + + // Constants for the approximation + const K: f32 = (PI4 as f32) * 4.0 / core::f32::consts::PI; + const M: T = (6.0 * K * K + 0.5) as T; + const N: T = (6.0 * K * K * K + 0.5) as T; + + // Applying the approximation + (((M * x - x * x * x) * mult as T + N / 2) / N) as i16 +} diff --git a/vendor/micropython b/vendor/micropython index e63e8b868e..27acb6c49f 160000 --- a/vendor/micropython +++ b/vendor/micropython @@ -1 +1 @@ -Subproject commit e63e8b868ef717ae84a694eaa6782899a396a1af +Subproject commit 27acb6c49f7dedbe5d60b16b8f64ea6c9de82aae From 28aa0a7ee3d14dc041c6263d3d9ca3a3be2581eb Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Wed, 15 May 2024 11:26:27 +0200 Subject: [PATCH 056/626] feat(core): integrate new drawing library [no changelog] --- core/embed/bootloader/bootui.c | 45 ++- core/embed/bootloader/bootui.h | 18 +- core/embed/bootloader/main.c | 7 +- core/embed/rust/rust_ui.h | 1 + core/embed/rust/rust_ui_bootloader.h | 3 + core/embed/rust/src/ui/api/bootloader_c.rs | 23 ++ core/embed/rust/src/ui/api/common_c.rs | 6 +- core/embed/rust/src/ui/component/bar.rs | 62 ++++ core/embed/rust/src/ui/component/base.rs | 28 ++ core/embed/rust/src/ui/component/border.rs | 9 +- core/embed/rust/src/ui/component/connect.rs | 17 +- core/embed/rust/src/ui/component/empty.rs | 4 +- core/embed/rust/src/ui/component/image.rs | 17 + core/embed/rust/src/ui/component/jpeg.rs | 69 +++++ core/embed/rust/src/ui/component/label.rs | 5 + core/embed/rust/src/ui/component/map.rs | 6 +- core/embed/rust/src/ui/component/marquee.rs | 43 ++- core/embed/rust/src/ui/component/maybe.rs | 8 + core/embed/rust/src/ui/component/mod.rs | 10 +- core/embed/rust/src/ui/component/pad.rs | 8 + core/embed/rust/src/ui/component/painter.rs | 74 ----- core/embed/rust/src/ui/component/placed.rs | 18 ++ core/embed/rust/src/ui/component/qr_code.rs | 35 +++ .../rust/src/ui/component/text/formatted.rs | 7 +- .../rust/src/ui/component/text/layout.rs | 72 +++++ .../rust/src/ui/component/text/paragraphs.rs | 48 +++ core/embed/rust/src/ui/component/text/util.rs | 59 ++++ core/embed/rust/src/ui/component/timeout.rs | 3 + core/embed/rust/src/ui/layout/obj.rs | 24 +- core/embed/rust/src/ui/layout/simplified.rs | 48 +-- core/embed/rust/src/ui/layout/util.rs | 5 +- .../src/ui/model_mercury/bootloader/intro.rs | 10 + .../src/ui/model_mercury/bootloader/menu.rs | 9 + .../src/ui/model_mercury/bootloader/mod.rs | 177 ++++++++++- .../ui/model_mercury/bootloader/welcome.rs | 31 ++ .../ui/model_mercury/component/bl_confirm.rs | 36 +++ .../src/ui/model_mercury/component/button.rs | 107 +++++++ .../src/ui/model_mercury/component/error.rs | 17 + .../src/ui/model_mercury/component/frame.rs | 7 + .../src/ui/model_mercury/component/loader.rs | 46 ++- .../src/ui/model_mercury/component/result.rs | 33 ++ .../model_mercury/component/welcome_screen.rs | 29 +- .../rust/src/ui/model_mercury/screens.rs | 20 ++ .../rust/src/ui/model_tr/bootloader/intro.rs | 23 ++ .../rust/src/ui/model_tr/bootloader/menu.rs | 29 +- .../rust/src/ui/model_tr/bootloader/mod.rs | 156 +++++++++- .../src/ui/model_tr/bootloader/welcome.rs | 28 +- .../ui/model_tr/component/address_details.rs | 11 + .../src/ui/model_tr/component/bl_confirm.rs | 28 ++ .../rust/src/ui/model_tr/component/button.rs | 84 +++++ .../model_tr/component/button_controller.rs | 26 ++ .../ui/model_tr/component/changing_text.rs | 41 +++ .../model_tr/component/coinjoin_progress.rs | 59 +++- .../rust/src/ui/model_tr/component/error.rs | 28 ++ .../rust/src/ui/model_tr/component/flow.rs | 18 ++ .../src/ui/model_tr/component/flow_pages.rs | 5 + .../rust/src/ui/model_tr/component/frame.rs | 12 + .../ui/model_tr/component/hold_to_confirm.rs | 5 + .../src/ui/model_tr/component/homescreen.rs | 207 +++++++++++-- .../component/input_methods/choice.rs | 139 +++++++++ .../component/input_methods/choice_item.rs | 102 ++++++ .../component/input_methods/number_input.rs | 5 + .../component/input_methods/passphrase.rs | 6 + .../model_tr/component/input_methods/pin.rs | 7 + .../component/input_methods/simple_choice.rs | 5 + .../component/input_methods/wordlist.rs | 6 + .../rust/src/ui/model_tr/component/loader.rs | 75 ++++- .../rust/src/ui/model_tr/component/page.rs | 7 + .../src/ui/model_tr/component/progress.rs | 28 +- .../rust/src/ui/model_tr/component/result.rs | 15 + .../src/ui/model_tr/component/scrollbar.rs | 50 +++ .../src/ui/model_tr/component/share_words.rs | 56 +++- .../src/ui/model_tr/component/show_more.rs | 6 + .../rust/src/ui/model_tr/component/title.rs | 47 ++- .../ui/model_tr/component/welcome_screen.rs | 26 ++ .../src/ui/model_tr/cshape/dotted_line.rs | 87 ++++++ .../src/ui/model_tr/cshape/loader_circular.rs | 116 +++++++ .../src/ui/model_tr/cshape/loader_small.rs | 88 ++++++ .../src/ui/model_tr/cshape/loader_starry.rs | 105 +++++++ core/embed/rust/src/ui/model_tr/cshape/mod.rs | 9 + core/embed/rust/src/ui/model_tr/layout.rs | 38 +-- core/embed/rust/src/ui/model_tr/mod.rs | 1 + core/embed/rust/src/ui/model_tr/screens.rs | 29 +- .../rust/src/ui/model_tt/bootloader/intro.rs | 10 + .../rust/src/ui/model_tt/bootloader/menu.rs | 9 + .../rust/src/ui/model_tt/bootloader/mod.rs | 169 +++++++++- .../src/ui/model_tt/bootloader/welcome.rs | 28 +- .../ui/model_tt/component/address_details.rs | 9 + .../src/ui/model_tt/component/bl_confirm.rs | 36 +++ .../rust/src/ui/model_tt/component/button.rs | 107 +++++++ .../model_tt/component/coinjoin_progress.rs | 44 ++- .../rust/src/ui/model_tt/component/dialog.rs | 12 + .../rust/src/ui/model_tt/component/error.rs | 17 + .../rust/src/ui/model_tt/component/fido.rs | 32 ++ .../rust/src/ui/model_tt/component/frame.rs | 8 + .../ui/model_tt/component/homescreen/mod.rs | 293 ++++++++++++++---- .../ui/model_tt/component/keyboard/bip39.rs | 49 ++- .../ui/model_tt/component/keyboard/common.rs | 23 ++ .../model_tt/component/keyboard/mnemonic.rs | 14 + .../model_tt/component/keyboard/passphrase.rs | 52 +++- .../src/ui/model_tt/component/keyboard/pin.rs | 93 +++++- .../ui/model_tt/component/keyboard/slip39.rs | 69 ++++- .../model_tt/component/keyboard/word_count.rs | 7 + .../rust/src/ui/model_tt/component/loader.rs | 50 ++- .../src/ui/model_tt/component/number_input.rs | 30 +- .../rust/src/ui/model_tt/component/page.rs | 36 ++- .../src/ui/model_tt/component/progress.rs | 45 ++- .../rust/src/ui/model_tt/component/result.rs | 33 ++ .../rust/src/ui/model_tt/component/scroll.rs | 45 +++ .../src/ui/model_tt/component/simple_page.rs | 13 + .../rust/src/ui/model_tt/component/swipe.rs | 3 + .../ui/model_tt/component/welcome_screen.rs | 47 ++- core/embed/rust/src/ui/model_tt/constant.rs | 5 + core/embed/rust/src/ui/model_tt/layout.rs | 49 ++- core/embed/rust/src/ui/model_tt/mod.rs | 12 +- core/embed/rust/src/ui/model_tt/screens.rs | 24 -- core/embed/rust/src/ui/ui_features.rs | 16 +- 117 files changed, 4264 insertions(+), 342 deletions(-) create mode 100644 core/embed/rust/src/ui/component/bar.rs create mode 100644 core/embed/rust/src/ui/component/jpeg.rs delete mode 100644 core/embed/rust/src/ui/component/painter.rs create mode 100644 core/embed/rust/src/ui/model_tr/cshape/dotted_line.rs create mode 100644 core/embed/rust/src/ui/model_tr/cshape/loader_circular.rs create mode 100644 core/embed/rust/src/ui/model_tr/cshape/loader_small.rs create mode 100644 core/embed/rust/src/ui/model_tr/cshape/loader_starry.rs create mode 100644 core/embed/rust/src/ui/model_tr/cshape/mod.rs delete mode 100644 core/embed/rust/src/ui/model_tt/screens.rs diff --git a/core/embed/bootloader/bootui.c b/core/embed/bootloader/bootui.c index b74d57cc51..ae570c84fc 100644 --- a/core/embed/bootloader/bootui.c +++ b/core/embed/bootloader/bootui.c @@ -72,13 +72,17 @@ static void format_ver(const char *format, uint32_t version, char *buffer, // boot UI +#ifndef NEW_RENDERING static uint16_t boot_background; +#endif + static bool initial_setup = true; void ui_set_initial_setup(bool initial) { initial_setup = initial; } -void ui_screen_boot(const vendor_header *const vhdr, - const image_header *const hdr) { +#ifndef NEW_RENDERING +static void ui_screen_boot_old(const vendor_header *const vhdr, + const image_header *const hdr) { const int show_string = ((vhdr->vtrust & VTRUST_STRING) == 0); if ((vhdr->vtrust & VTRUST_RED) == 0) { boot_background = COLOR_BL_FAIL; @@ -130,9 +134,11 @@ void ui_screen_boot(const vendor_header *const vhdr, display_pixeldata_dirty(); display_refresh(); } +#endif -void ui_screen_boot_wait(int wait_seconds) { - char wait_str[16]; +#ifndef NEW_RENDERING +static void ui_screen_boot_wait(int wait_seconds) { + char wait_str[32]; mini_snprintf(wait_str, sizeof(wait_str), "starting in %d s", wait_seconds); display_bar(0, BOOT_WAIT_Y_TOP, DISPLAY_RESX, BOOT_WAIT_HEIGHT, boot_background); @@ -141,6 +147,7 @@ void ui_screen_boot_wait(int wait_seconds) { display_pixeldata_dirty(); display_refresh(); } +#endif #if defined USE_TOUCH #include "touch.h" @@ -182,7 +189,8 @@ void ui_click(void) { #error "No input method defined" #endif -void ui_screen_boot_click(void) { +#ifndef NEW_RENDERING +static void ui_screen_boot_click(void) { display_bar(0, BOOT_WAIT_Y_TOP, DISPLAY_RESX, BOOT_WAIT_HEIGHT, boot_background); bld_continue_label(boot_background); @@ -190,6 +198,33 @@ void ui_screen_boot_click(void) { display_refresh(); ui_click(); } +#endif + +#ifdef NEW_RENDERING +void ui_screen_boot(const vendor_header *const vhdr, + const image_header *const hdr, int wait) { + bool show_string = ((vhdr->vtrust & VTRUST_STRING) == 0); + const char *vendor_str = show_string ? vhdr->vstr : NULL; + const size_t vendor_str_len = show_string ? vhdr->vstr_len : 0; + bool red_screen = ((vhdr->vtrust & VTRUST_RED) == 0); + uint32_t vimg_len = *(uint32_t *)(vhdr->vimg + 8); + + screen_boot(red_screen, vendor_str, vendor_str_len, hdr->version, vhdr->vimg, + vimg_len, wait); +} +#else // NEW_RENDERING + +void ui_screen_boot(const vendor_header *const vhdr, + const image_header *const hdr, int wait) { + if (wait == 0) { + ui_screen_boot_old(vhdr, hdr); + } else if (wait > 0) { + ui_screen_boot_wait(wait); + } else { + ui_screen_boot_click(); + } +} +#endif // welcome UI diff --git a/core/embed/bootloader/bootui.h b/core/embed/bootloader/bootui.h index c63a6ffa32..e7415b9504 100644 --- a/core/embed/bootloader/bootui.h +++ b/core/embed/bootloader/bootui.h @@ -34,10 +34,22 @@ typedef enum { SCREEN_WELCOME = 5, } screen_t; +// Displays a warning screeen before jumping to the untrusted firmware +// +// Shows vendor image, vendor string and firmware version +// and optional message to the user (see `wait` argument) +// +// `wait` argument specifies a message to the user +// 0 do not show any message +// > 0 show a message like "starting in %d s" +// < 0 show a message like "press button to continue" void ui_screen_boot(const vendor_header* const vhdr, - const image_header* const hdr); -void ui_screen_boot_wait(int wait_seconds); -void ui_screen_boot_click(void); + const image_header* const hdr, int wait); + +// Waits until the user confirms the untrusted firmware +// +// Implementation is device specific - it wait's until +// the user presses a button, touches the display void ui_click(void); void ui_screen_welcome(void); diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index c3cc57fa1b..159b9661ba 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -331,13 +331,13 @@ void real_jump_to_firmware(void) { // if all VTRUST flags are unset = ultimate trust => skip the procedure if ((vhdr.vtrust & VTRUST_ALL) != VTRUST_ALL) { ui_fadeout(); - ui_screen_boot(&vhdr, hdr); + ui_screen_boot(&vhdr, hdr, 0); ui_fadein(); int delay = (vhdr.vtrust & VTRUST_WAIT) ^ VTRUST_WAIT; if (delay > 1) { while (delay > 0) { - ui_screen_boot_wait(delay); + ui_screen_boot(&vhdr, hdr, delay); hal_delay(1000); delay--; } @@ -346,7 +346,8 @@ void real_jump_to_firmware(void) { } if ((vhdr.vtrust & VTRUST_CLICK) == 0) { - ui_screen_boot_click(); + ui_screen_boot(&vhdr, hdr, -1); + ui_click(); } ui_screen_boot_stage_1(false); diff --git a/core/embed/rust/rust_ui.h b/core/embed/rust/rust_ui.h index d2cc626f99..897c6a3311 100644 --- a/core/embed/rust/rust_ui.h +++ b/core/embed/rust/rust_ui.h @@ -1,5 +1,6 @@ #include <stdbool.h> #include "common.h" + #include "rust_ui_bootloader.h" #include "rust_ui_common.h" diff --git a/core/embed/rust/rust_ui_bootloader.h b/core/embed/rust/rust_ui_bootloader.h index 09613cf035..8f0149585c 100644 --- a/core/embed/rust/rust_ui_bootloader.h +++ b/core/embed/rust/rust_ui_bootloader.h @@ -24,3 +24,6 @@ void screen_boot_stage_1(bool fading); uint32_t screen_unlock_bootloader_confirm(void); void screen_unlock_bootloader_success(void); void bld_continue_label(uint16_t bg_color); +void screen_boot(bool warning, const char* vendor_str, size_t vendor_str_len, + uint32_t version, const void* vendor_img, + size_t vendor_img_len, int wait); diff --git a/core/embed/rust/src/ui/api/bootloader_c.rs b/core/embed/rust/src/ui/api/bootloader_c.rs index 9eac86cd28..a6d6b44393 100644 --- a/core/embed/rust/src/ui/api/bootloader_c.rs +++ b/core/embed/rust/src/ui/api/bootloader_c.rs @@ -13,6 +13,7 @@ extern "C" fn screen_welcome() { } #[no_mangle] +#[cfg(not(feature = "new_rendering"))] extern "C" fn bld_continue_label(bg_color: cty::uint16_t) { ModelUI::bld_continue_label(bg_color.into()); } @@ -101,6 +102,28 @@ extern "C" fn screen_boot_stage_1(fading: bool) { ModelUI::screen_boot_stage_1(fading) } +#[no_mangle] +#[cfg(feature = "new_rendering")] +extern "C" fn screen_boot( + warning: bool, + vendor_str: *const cty::c_char, + vendor_str_len: usize, + version: u32, + vendor_img: *const cty::c_void, + vendor_img_len: usize, + wait: i32, +) { + let vendor_str = unsafe { from_c_array(vendor_str, vendor_str_len) }; + let vendor_img = + unsafe { core::slice::from_raw_parts(vendor_img as *const u8, vendor_img_len) }; + + // Splits a version stored as a u32 into four numbers + // starting with the major version. + let version = version.to_le_bytes(); + + ModelUI::screen_boot(warning, vendor_str, version, vendor_img, wait); +} + #[no_mangle] extern "C" fn screen_wipe_progress(progress: u16, initialize: bool) { ModelUI::screen_wipe_progress(progress, initialize) diff --git a/core/embed/rust/src/ui/api/common_c.rs b/core/embed/rust/src/ui/api/common_c.rs index 51a427188d..4f0b0b55bd 100644 --- a/core/embed/rust/src/ui/api/common_c.rs +++ b/core/embed/rust/src/ui/api/common_c.rs @@ -1,11 +1,13 @@ //! Reexporting the `screens` module according to the //! current feature (Trezor model) +use crate::ui::ui_features::{ModelUI, UIFeaturesCommon}; + +#[cfg(not(feature = "new_rendering"))] use crate::ui::{ component::image::Image, display::{Color, Icon}, geometry::{Alignment2D, Point}, - ui_features::{ModelUI, UIFeaturesCommon}, }; use crate::ui::util::from_c_str; @@ -29,6 +31,7 @@ extern "C" fn screen_boot_stage_2() { } #[no_mangle] +#[cfg(not(feature = "new_rendering"))] extern "C" fn display_icon( x: cty::int16_t, y: cty::int16_t, @@ -48,6 +51,7 @@ extern "C" fn display_icon( } #[no_mangle] +#[cfg(not(feature = "new_rendering"))] extern "C" fn display_image( x: cty::int16_t, y: cty::int16_t, diff --git a/core/embed/rust/src/ui/component/bar.rs b/core/embed/rust/src/ui/component/bar.rs new file mode 100644 index 0000000000..604d382cab --- /dev/null +++ b/core/embed/rust/src/ui/component/bar.rs @@ -0,0 +1,62 @@ +use crate::ui::{ + component::{Component, Event, EventCtx, Never}, + display, + display::Color, + geometry::Rect, + shape, + shape::Renderer, +}; + +pub struct Bar { + area: Rect, + color: Color, + bg_color: Color, + radius: i16, +} + +impl Bar { + pub fn new(color: Color, bg_color: Color, radius: i16) -> Self { + Self { + area: Rect::zero(), + color, + bg_color, + radius, + } + } +} + +impl Component for Bar { + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.area + } + + fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { + None + } + + fn paint(&mut self) { + display::rect_fill_rounded(self.area, self.color, self.bg_color, self.radius as u8); + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::Bar::new(self.area) + .with_bg(self.color) + .with_radius(self.radius) + .render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Bar { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Bar"); + } +} diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 6703440b7d..ab8a38fc4d 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -9,6 +9,7 @@ use crate::{ component::{maybe::PaintOverlapping, MsgMap}, display::{self, Color}, geometry::{Offset, Rect}, + shape::Renderer, }, }; @@ -61,6 +62,8 @@ pub trait Component { /// the `Child` wrapper. fn paint(&mut self); + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>); + #[cfg(feature = "ui_bounds")] /// Report current paint bounds of this component. Used for debugging. fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} @@ -154,6 +157,10 @@ where } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.component.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.component.bounds(sink) @@ -254,6 +261,10 @@ where self.inner.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.inner.bounds(sink) @@ -292,6 +303,11 @@ where self.1.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.0.render(target); + self.1.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.0.bounds(sink); @@ -341,6 +357,12 @@ where self.2.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.0.render(target); + self.1.render(target); + self.2.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.0.bounds(sink); @@ -368,6 +390,12 @@ where } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + if let Some(ref c) = self { + c.render(target) + } + } + fn place(&mut self, bounds: Rect) -> Rect { match self { Some(ref mut c) => c.place(bounds), diff --git a/core/embed/rust/src/ui/component/border.rs b/core/embed/rust/src/ui/component/border.rs index e61cf381a6..47941ae629 100644 --- a/core/embed/rust/src/ui/component/border.rs +++ b/core/embed/rust/src/ui/component/border.rs @@ -1,5 +1,8 @@ use super::{Component, Event, EventCtx}; -use crate::ui::geometry::{Insets, Rect}; +use crate::ui::{ + geometry::{Insets, Rect}, + shape::Renderer, +}; pub struct Border<T> { border: Insets, @@ -39,6 +42,10 @@ where self.inner.paint() } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.inner.bounds(sink); diff --git a/core/embed/rust/src/ui/component/connect.rs b/core/embed/rust/src/ui/component/connect.rs index 5faa389242..3d7897bdf0 100644 --- a/core/embed/rust/src/ui/component/connect.rs +++ b/core/embed/rust/src/ui/component/connect.rs @@ -3,7 +3,8 @@ use crate::{ ui::{ component::{Component, Event, EventCtx, Never, Pad}, display::{self, Color, Font}, - geometry::{Offset, Rect}, + geometry::{Alignment, Offset, Rect}, + shape::{self, Renderer}, }, }; @@ -55,6 +56,20 @@ impl Component for Connect { ) }); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let font = Font::NORMAL; + + self.bg.render(target); + + self.message.map(|t| { + shape::Text::new(self.bg.area.center() + Offset::y(font.text_height() / 2), t) + .with_fg(self.fg) + .with_font(font) + .with_align(Alignment::Center) + .render(target); + }); + } } #[cfg(feature = "micropython")] diff --git a/core/embed/rust/src/ui/component/empty.rs b/core/embed/rust/src/ui/component/empty.rs index ce2a3b8834..15fb017dc0 100644 --- a/core/embed/rust/src/ui/component/empty.rs +++ b/core/embed/rust/src/ui/component/empty.rs @@ -1,5 +1,5 @@ use super::{Component, Event, EventCtx, Never}; -use crate::ui::geometry::Rect; +use crate::ui::{geometry::Rect, shape::Renderer}; pub struct Empty; @@ -15,6 +15,8 @@ impl Component for Empty { } fn paint(&mut self) {} + + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/image.rs b/core/embed/rust/src/ui/component/image.rs index 41c1a68839..959ccf2c49 100644 --- a/core/embed/rust/src/ui/component/image.rs +++ b/core/embed/rust/src/ui/component/image.rs @@ -6,6 +6,8 @@ use crate::ui::{ Color, Icon, }, geometry::{Alignment2D, Offset, Point, Rect}, + shape, + shape::Renderer, }; #[derive(PartialEq, Eq, Clone, Copy)] @@ -48,6 +50,12 @@ impl Component for Image { self.draw(self.area.center(), Alignment2D::CENTER); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::ToifImage::new(self.area.center(), self.toif) + .with_align(Alignment2D::CENTER) + .render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(Rect::from_center_and_size( @@ -130,6 +138,15 @@ impl Component for BlendedImage { self.paint_image(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::ToifImage::new(self.bg_top_left, self.bg.toif) + .with_fg(self.bg_color) + .render(target); + shape::ToifImage::new(self.bg_top_left + self.fg_offset, self.fg.toif) + .with_fg(self.fg_color) + .render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(Rect::from_top_left_and_size( diff --git a/core/embed/rust/src/ui/component/jpeg.rs b/core/embed/rust/src/ui/component/jpeg.rs new file mode 100644 index 0000000000..b9e85c688c --- /dev/null +++ b/core/embed/rust/src/ui/component/jpeg.rs @@ -0,0 +1,69 @@ +use crate::{ + io::BinaryData, + ui::{ + component::{Component, Event, EventCtx, Never}, + display, + geometry::{Alignment2D, Offset, Rect}, + shape, + shape::Renderer, + }, +}; + +pub struct Jpeg { + area: Rect, + image: BinaryData<'static>, + scale: u8, +} + +impl Jpeg { + pub fn new(image: BinaryData<'static>, scale: u8) -> Self { + Self { + area: Rect::zero(), + image, + scale, + } + } +} + +impl Component for Jpeg { + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.area + } + + fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { + None + } + + fn paint(&mut self) { + // SAFETY: We expect no existing mutable reference. Resulting reference is + // discarded before returning to micropython. + let jpeg_data = unsafe { self.image.data() }; + + if let Some((size, _)) = display::tjpgd::jpeg_info(jpeg_data) { + let off = Offset::new(size.x / (2 << self.scale), size.y / (2 << self.scale)); + display::tjpgd::jpeg(jpeg_data, self.area.center() - off, self.scale); + } + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::JpegImage::new_image(self.area.center(), self.image) + .with_align(Alignment2D::CENTER) + .with_scale(self.scale) + .render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Jpeg { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Jpeg"); + } +} diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 55364dcc98..4618e21d3e 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -4,6 +4,7 @@ use crate::{ component::{Component, Event, EventCtx, Never}, display::Font, geometry::{Alignment, Insets, Offset, Point, Rect}, + shape::Renderer, }, }; @@ -114,6 +115,10 @@ impl Component for Label<'_> { self.text.map(|c| self.layout.render_text(c)); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.text.map(|c| self.layout.render_text2(c, target)); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.layout.bounds) diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 867d51f59f..76100cbf5a 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -1,5 +1,5 @@ use super::{Component, Event, EventCtx}; -use crate::ui::geometry::Rect; +use crate::ui::{geometry::Rect, shape::Renderer}; pub struct MsgMap<T, F> { inner: T, @@ -31,6 +31,10 @@ where self.inner.paint() } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.inner.bounds(sink); diff --git a/core/embed/rust/src/ui/component/marquee.rs b/core/embed/rust/src/ui/component/marquee.rs index c2f39a0819..d6a91386c8 100644 --- a/core/embed/rust/src/ui/component/marquee.rs +++ b/core/embed/rust/src/ui/component/marquee.rs @@ -4,9 +4,9 @@ use crate::{ ui::{ animation::Animation, component::{Component, Event, EventCtx, Never, TimerToken}, - display, - display::{Color, Font}, - geometry::Rect, + display::{self, Color, Font}, + geometry::{Offset, Rect}, + shape::{self, Renderer}, util::animation_disabled, }, }; @@ -123,6 +123,19 @@ impl Marquee { self.text .map(|t| display::marquee(self.area, t, offset, self.font, self.fg, self.bg)); } + + pub fn render_anim<'s>(&'s self, target: &mut impl Renderer<'s>, offset: i16) { + target.in_window(self.area, &|target| { + let text_height = self.font.text_height(); + let pos = self.area.top_left() + Offset::new(offset, text_height - 1); + self.text.map(|t| { + shape::Text::new(pos, t) + .with_font(self.font) + .with_fg(self.fg) + .render(target); + }); + }); + } } impl Component for Marquee { @@ -214,6 +227,30 @@ impl Component for Marquee { } } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let now = Instant::now(); + + match self.state { + State::Initial => { + self.render_anim(target, 0); + } + State::PauseRight => { + self.render_anim(target, self.min_offset); + } + State::PauseLeft => { + self.render_anim(target, self.max_offset); + } + _ => { + let progress = self.progress(now); + if let Some(done) = progress { + self.render_anim(target, done); + } else { + self.render_anim(target, 0); + } + } + } + } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/maybe.rs b/core/embed/rust/src/ui/component/maybe.rs index 739f1ab823..bbc843bca1 100644 --- a/core/embed/rust/src/ui/component/maybe.rs +++ b/core/embed/rust/src/ui/component/maybe.rs @@ -2,6 +2,7 @@ use crate::ui::{ component::{Component, ComponentExt, Event, EventCtx, Pad}, display::{self, Color}, geometry::Rect, + shape::Renderer, }; pub struct Maybe<T> { @@ -94,6 +95,13 @@ where } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + if self.visible { + self.inner.render(target); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.pad.area); diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index bc54734d9c..0859d68585 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -1,32 +1,36 @@ -#![forbid(unsafe_code)] +//#![forbid(unsafe_code)] +pub mod bar; pub mod base; pub mod border; pub mod connect; pub mod empty; pub mod image; +#[cfg(all(feature = "jpeg", feature = "micropython"))] +pub mod jpeg; pub mod label; pub mod map; pub mod marquee; pub mod maybe; pub mod pad; pub mod paginated; -pub mod painter; pub mod placed; pub mod qr_code; pub mod text; pub mod timeout; +pub use bar::Bar; pub use base::{Child, Component, ComponentExt, Event, EventCtx, Never, Root, TimerToken}; pub use border::Border; pub use empty::Empty; +#[cfg(all(feature = "jpeg", feature = "micropython"))] +pub use jpeg::Jpeg; pub use label::Label; pub use map::MsgMap; pub use marquee::Marquee; pub use maybe::Maybe; pub use pad::Pad; pub use paginated::{PageMsg, Paginate}; -pub use painter::Painter; pub use placed::{FixedHeightBar, Floating, GridPlaced, Split}; pub use qr_code::Qr; pub use text::{ diff --git a/core/embed/rust/src/ui/component/pad.rs b/core/embed/rust/src/ui/component/pad.rs index b26d90d77d..fa6b5b065b 100644 --- a/core/embed/rust/src/ui/component/pad.rs +++ b/core/embed/rust/src/ui/component/pad.rs @@ -1,6 +1,8 @@ use crate::ui::{ display::{self, Color}, geometry::Rect, + shape, + shape::Renderer, }; pub struct Pad { @@ -52,4 +54,10 @@ impl Pad { display::rect_fill(self.area, self.color); } } + + pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::Bar::new(self.area) + .with_bg(self.color) + .render(target); + } } diff --git a/core/embed/rust/src/ui/component/painter.rs b/core/embed/rust/src/ui/component/painter.rs deleted file mode 100644 index 9d6b18e37c..0000000000 --- a/core/embed/rust/src/ui/component/painter.rs +++ /dev/null @@ -1,74 +0,0 @@ -#[cfg(feature = "jpeg")] -use crate::ui::geometry::Offset; -use crate::ui::{ - component::{image::Image, Component, Event, EventCtx, Never}, - display, - geometry::{Alignment2D, Rect}, -}; - -pub struct Painter<F> { - area: Rect, - func: F, -} - -impl<F> Painter<F> { - pub fn new(func: F) -> Self { - Self { - func, - area: Rect::zero(), - } - } -} - -impl<F> Component for Painter<F> -where - F: FnMut(Rect), -{ - type Msg = Never; - - fn place(&mut self, bounds: Rect) -> Rect { - self.area = bounds; - self.area - } - - fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { - None - } - - fn paint(&mut self) { - (self.func)(self.area); - } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } -} - -#[cfg(feature = "ui_debug")] -impl<F> crate::trace::Trace for Painter<F> { - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("Painter"); - } -} - -pub fn image_painter(image: Image) -> Painter<impl FnMut(Rect)> { - let f = move |area: Rect| image.draw(area.center(), Alignment2D::CENTER); - Painter::new(f) -} - -#[cfg(feature = "jpeg")] -pub fn jpeg_painter<'a>( - image: impl Fn() -> &'a [u8], - size: Offset, - scale: u8, -) -> Painter<impl FnMut(Rect)> { - let off = Offset::new(size.x / (2 << scale), size.y / (2 << scale)); - let f = move |area: Rect| display::tjpgd::jpeg(image(), area.center() - off, scale); - Painter::new(f) -} - -pub fn rect_painter(fg: display::Color, bg: display::Color) -> Painter<impl FnMut(Rect)> { - let f = move |area: Rect| display::rect_fill_rounded(area, fg, bg, 2); - Painter::new(f) -} diff --git a/core/embed/rust/src/ui/component/placed.rs b/core/embed/rust/src/ui/component/placed.rs index c4a7580452..18fcc1e186 100644 --- a/core/embed/rust/src/ui/component/placed.rs +++ b/core/embed/rust/src/ui/component/placed.rs @@ -1,6 +1,7 @@ use crate::ui::{ component::{Component, Event, EventCtx}, geometry::{Alignment, Alignment2D, Axis, Grid, GridCellSpan, Insets, Offset, Rect}, + shape::Renderer, }; pub struct GridPlaced<T> { @@ -63,6 +64,10 @@ where fn paint(&mut self) { self.inner.paint() } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target); + } } #[cfg(feature = "ui_debug")] @@ -106,6 +111,10 @@ where fn paint(&mut self) { self.inner.paint() } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target); + } } #[cfg(feature = "ui_debug")] @@ -178,6 +187,10 @@ where fn paint(&mut self) { self.inner.paint() } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target); + } } #[cfg(feature = "ui_debug")] @@ -269,6 +282,11 @@ where self.first.paint(); self.second.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.first.render(target); + self.second.render(target); + } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/qr_code.rs b/core/embed/rust/src/ui/component/qr_code.rs index e99236e3a8..6b13e116d8 100644 --- a/core/embed/rust/src/ui/component/qr_code.rs +++ b/core/embed/rust/src/ui/component/qr_code.rs @@ -8,6 +8,8 @@ use crate::{ constant, display::{pixeldata, pixeldata_dirty, rect_fill_rounded, set_window, Color}, geometry::{Insets, Offset, Rect}, + shape, + shape::Renderer, }, }; @@ -141,6 +143,39 @@ impl Component for Qr { Self::draw(&qr, area, self.border, scale); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let mut outbuffer = [0u8; QR_MAX_VERSION.buffer_len()]; + let mut tempbuffer = [0u8; QR_MAX_VERSION.buffer_len()]; + + let qr = QrCode::encode_text( + self.text.as_ref(), + &mut tempbuffer, + &mut outbuffer, + QrCodeEcc::Medium, + Version::MIN, + QR_MAX_VERSION, + None, + true, + ); + let qr = unwrap!(qr); + + let scale = (self.area.width().min(self.area.height()) - self.border) / (qr.size() as i16); + let side = scale * qr.size() as i16; + let qr_area = Rect::from_center_and_size(self.area.center(), Offset::uniform(side)); + + if self.border > 0 { + shape::Bar::new(qr_area.expand(self.border)) + .with_bg(LIGHT) + .with_radius(CORNER_RADIUS as i16 + 1) // !@# + 1 to fix difference on TR + .render(target); + } + + shape::QrImage::new(qr_area, &qr) + .with_fg(LIGHT) + .with_bg(DARK) + .render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area) diff --git a/core/embed/rust/src/ui/component/text/formatted.rs b/core/embed/rust/src/ui/component/text/formatted.rs index 48d97811e8..52e1803c38 100644 --- a/core/embed/rust/src/ui/component/text/formatted.rs +++ b/core/embed/rust/src/ui/component/text/formatted.rs @@ -1,10 +1,11 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never, Paginate}, geometry::{Alignment, Offset, Rect}, + shape::Renderer, }; use super::{ - layout::{LayoutFit, LayoutSink, TextNoOp, TextRenderer}, + layout::{LayoutFit, LayoutSink, TextNoOp, TextRenderer, TextRenderer2}, op::OpTextLayout, }; @@ -133,6 +134,10 @@ impl Component for FormattedText { self.layout_content(&mut TextRenderer); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.layout_content(&mut TextRenderer2::new(target)); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.op_layout.layout.bounds) diff --git a/core/embed/rust/src/ui/component/text/layout.rs b/core/embed/rust/src/ui/component/text/layout.rs index 5c86089dfc..682d414251 100644 --- a/core/embed/rust/src/ui/component/text/layout.rs +++ b/core/embed/rust/src/ui/component/text/layout.rs @@ -2,6 +2,8 @@ use crate::ui::{ display, display::{toif::Icon, Color, Font, GlyphMetrics}, geometry::{Alignment, Alignment2D, Dimensions, Offset, Point, Rect}, + shape, + shape::Renderer, }; const ELLIPSIS: &str = "..."; @@ -235,6 +237,15 @@ impl TextLayout { self.layout_text(text, &mut self.initial_cursor(), &mut TextRenderer) } + /// Draw as much text as possible on the current screen. + pub fn render_text2<'s>(&self, text: &str, target: &mut impl Renderer<'s>) -> LayoutFit { + self.layout_text( + text, + &mut self.initial_cursor(), + &mut TextRenderer2::new(target), + ) + } + /// Loop through the `text` and try to fit it on the current screen, /// reporting events to `sink`, which may do something with them (e.g. draw /// on screen). @@ -530,6 +541,67 @@ impl LayoutSink for TextRenderer { } } +pub struct TextRenderer2<'a, 's, R>(pub &'a mut R, core::marker::PhantomData<&'s ()>) +where + R: Renderer<'s>; + +impl<'a, 's, R> TextRenderer2<'a, 's, R> +where + R: Renderer<'s>, +{ + pub fn new(target: &'a mut R) -> Self { + Self(target, core::marker::PhantomData) + } +} + +impl<'a, 's, R> LayoutSink for TextRenderer2<'a, 's, R> +where + R: Renderer<'s>, +{ + fn text(&mut self, cursor: Point, layout: &TextLayout, text: &str) { + shape::Text::new(cursor, text) + .with_font(layout.style.text_font) + .with_fg(layout.style.text_color) + .render(self.0); + } + + fn hyphen(&mut self, cursor: Point, layout: &TextLayout) { + shape::Text::new(cursor, "-") + .with_font(layout.style.text_font) + .with_fg(layout.style.hyphen_color) + .render(self.0); + } + + fn ellipsis(&mut self, cursor: Point, layout: &TextLayout) { + if let Some((icon, margin)) = layout.style.ellipsis_icon { + let bottom_left = cursor + Offset::x(margin); + shape::ToifImage::new(bottom_left, icon.toif) + .with_align(Alignment2D::BOTTOM_LEFT) + .with_fg(layout.style.ellipsis_color) + .render(self.0); + } else { + shape::Text::new(cursor, ELLIPSIS) + .with_font(layout.style.text_font) + .with_fg(layout.style.ellipsis_color) + .render(self.0); + } + } + + fn prev_page_ellipsis(&mut self, cursor: Point, layout: &TextLayout) { + if let Some((icon, _margin)) = layout.style.prev_page_ellipsis_icon { + shape::ToifImage::new(cursor, icon.toif) + .with_align(Alignment2D::BOTTOM_LEFT) + .with_fg(layout.style.ellipsis_color) + .render(self.0); + } else { + shape::Text::new(cursor, ELLIPSIS) + .with_font(layout.style.text_font) + .with_fg(layout.style.ellipsis_color) + .render(self.0); + } + } +} + #[cfg(feature = "ui_debug")] pub mod trace { use crate::{trace::ListTracer, ui::geometry::Point}; diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index 1fd658c134..698bc1dfd9 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -8,6 +8,8 @@ use crate::{ geometry::{ Alignment, Alignment2D, Dimensions, Insets, LinearPlacement, Offset, Point, Rect, }, + shape, + shape::Renderer, }, }; @@ -185,6 +187,17 @@ where ) } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + Self::foreach_visible( + &self.source, + &self.visible, + self.offset, + &mut |layout, content| { + layout.render_text2(content, target); + }, + ) + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area); @@ -593,6 +606,19 @@ impl<T> Checklist<T> { layout.style.background_color, ); } + + fn render_icon<'s>( + &self, + layout: &TextLayout, + icon: Icon, + offset: Offset, + target: &mut impl Renderer<'s>, + ) { + let top_left = Point::new(self.area.x0, layout.bounds.y0); + shape::ToifImage::new(top_left + offset, icon.toif) + .with_fg(layout.style.text_color) + .render(target); + } } impl<'a, T> Component for Checklist<T> @@ -632,6 +658,28 @@ where } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.paragraphs.render(target); + + let current_visible = self.current.saturating_sub(self.paragraphs.offset.par); + for layout in self.paragraphs.visible.iter().take(current_visible) { + self.render_icon( + &layout.layout(&self.paragraphs.source), + self.icon_done, + self.done_offset, + target, + ); + } + if let Some(layout) = self.paragraphs.visible.iter().nth(current_visible) { + self.render_icon( + &layout.layout(&self.paragraphs.source), + self.icon_current, + self.current_offset, + target, + ); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area); diff --git a/core/embed/rust/src/ui/component/text/util.rs b/core/embed/rust/src/ui/component/text/util.rs index b417539caf..69ddd4de42 100644 --- a/core/embed/rust/src/ui/component/text/util.rs +++ b/core/embed/rust/src/ui/component/text/util.rs @@ -3,6 +3,7 @@ use crate::{ ui::{ display::{Color, Font}, geometry::{Alignment, Rect}, + shape::Renderer, }, }; @@ -37,6 +38,33 @@ pub fn text_multiline( } } +/// Draws longer multiline texts inside an area. +/// Splits lines on word boundaries/whitespace. +/// When a word is too long to fit one line, splitting +/// it on multiple lines with "-" at the line-ends. +/// +/// If it fits, returns the rest of the area. +/// If it does not fit, returns `None`. +pub fn text_multiline2<'s>( + target: &mut impl Renderer<'s>, + area: Rect, + text: TString<'_>, + font: Font, + fg_color: Color, + bg_color: Color, + alignment: Alignment, +) -> Option<Rect> { + let text_style = TextStyle::new(font, fg_color, bg_color, fg_color, fg_color); + let text_layout = TextLayout::new(text_style) + .with_bounds(area) + .with_align(alignment); + let layout_fit = text.map(|t| text_layout.render_text2(t, target)); + match layout_fit { + LayoutFit::Fitting { height, .. } => Some(area.split_top(height).1), + LayoutFit::OutOfBounds { .. } => None, + } +} + /// Same as `text_multiline` above, but aligns the text to the bottom of the /// area. pub fn text_multiline_bottom( @@ -66,3 +94,34 @@ pub fn text_multiline_bottom( } }) } + +/// Same as `text_multiline` above, but aligns the text to the bottom of the +/// area. +pub fn text_multiline_bottom2<'s>( + target: &mut impl Renderer<'s>, + area: Rect, + text: TString<'_>, + font: Font, + fg_color: Color, + bg_color: Color, + alignment: Alignment, +) -> Option<Rect> { + let text_style = TextStyle::new(font, fg_color, bg_color, fg_color, fg_color); + let mut text_layout = TextLayout::new(text_style) + .with_bounds(area) + .with_align(alignment); + // When text fits the area, displaying it in the bottom part. + // When not, render it "normally". + text.map(|t| match text_layout.fit_text(t) { + LayoutFit::Fitting { height, .. } => { + let (top, bottom) = area.split_bottom(height); + text_layout = text_layout.with_bounds(bottom); + text_layout.render_text2(t, target); + Some(top) + } + LayoutFit::OutOfBounds { .. } => { + text_layout.render_text2(t, target); + None + } + }) +} diff --git a/core/embed/rust/src/ui/component/timeout.rs b/core/embed/rust/src/ui/component/timeout.rs index 67d29c7504..6da62e7255 100644 --- a/core/embed/rust/src/ui/component/timeout.rs +++ b/core/embed/rust/src/ui/component/timeout.rs @@ -3,6 +3,7 @@ use crate::{ ui::{ component::{Component, Event, EventCtx, TimerToken}, geometry::Rect, + shape::Renderer, }, }; @@ -44,6 +45,8 @@ impl Component for Timeout { } fn paint(&mut self) {} + + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 9f7cb0e739..b7c15eb6f5 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -24,6 +24,9 @@ use crate::{ }, }; +#[cfg(feature = "new_rendering")] +use crate::ui::{display::Color, shape::render_on_display}; + #[cfg(feature = "button")] use crate::ui::event::ButtonEvent; #[cfg(feature = "touch")] @@ -69,9 +72,24 @@ where } fn obj_paint(&mut self) -> bool { - let will_paint = self.inner().will_paint(); - self.paint(); - will_paint + #[cfg(not(feature = "new_rendering"))] + { + let will_paint = self.inner().will_paint(); + self.paint(); + will_paint + } + + #[cfg(feature = "new_rendering")] + { + let will_paint = self.inner().will_paint(); + if will_paint { + render_on_display(None, Some(Color::black()), |target| { + self.render(target); + }); + self.skip_paint(); + } + will_paint + } } #[cfg(feature = "ui_bounds")] diff --git a/core/embed/rust/src/ui/layout/simplified.rs b/core/embed/rust/src/ui/layout/simplified.rs index 412d644444..176de577ad 100644 --- a/core/embed/rust/src/ui/layout/simplified.rs +++ b/core/embed/rust/src/ui/layout/simplified.rs @@ -12,8 +12,12 @@ use crate::ui::{ ui_features::ModelUI, UIFeaturesCommon, }; + use num_traits::ToPrimitive; +#[cfg(feature = "new_rendering")] +use crate::ui::{display::color::Color, shape::render_on_display}; + pub trait ReturnToC { fn return_to_c(self) -> u32; } @@ -63,16 +67,28 @@ fn touch_eval() -> Option<TouchEvent> { TouchEvent::new(event_type, ex as _, ey as _).ok() } -pub fn run<F>(frame: &mut F) -> u32 -where - F: Component, - F::Msg: ReturnToC, -{ +fn render(frame: &mut impl Component) { + #[cfg(not(feature = "new_rendering"))] + { + display::sync(); + frame.paint(); + display::refresh(); + } + + #[cfg(feature = "new_rendering")] + { + display::sync(); + render_on_display(None, Some(Color::black()), |target| { + frame.render(target); + }); + display::refresh(); + } +} + +pub fn run(frame: &mut impl Component<Msg = impl ReturnToC>) -> u32 { frame.place(ModelUI::SCREEN); ModelUI::fadeout(); - display::sync(); - frame.paint(); - display::refresh(); + render(frame); ModelUI::fadein(); #[cfg(feature = "button")] @@ -93,24 +109,20 @@ where if let Some(message) = msg { return message.return_to_c(); } - display::sync(); - frame.paint(); - display::refresh(); + render(frame); } } } -pub fn show<F>(frame: &mut F, fading: bool) -where - F: Component, -{ +pub fn show(frame: &mut impl Component, fading: bool) { frame.place(ModelUI::SCREEN); + if fading { ModelUI::fadeout() }; - display::sync(); - frame.paint(); - display::refresh(); + + render(frame); + if fading { ModelUI::fadein() }; diff --git a/core/embed/rust/src/ui/layout/util.rs b/core/embed/rust/src/ui/layout/util.rs index b147158ad5..ef2355b64c 100644 --- a/core/embed/rust/src/ui/layout/util.rs +++ b/core/embed/rust/src/ui/layout/util.rs @@ -1,5 +1,6 @@ use crate::{ error::Error, + io::BinaryData, micropython::{ buffer::{hexlify_bytes, StrBuffer}, gc::Gc, @@ -167,10 +168,10 @@ pub extern "C" fn upy_disable_animation(disable: Obj) -> Obj { unsafe { try_or_raise(block) } } -pub fn get_user_custom_image() -> Result<Gc<[u8]>, Error> { +pub fn get_user_custom_image() -> Result<BinaryData<'static>, Error> { let len = get_avatar_len()?; let mut data = Gc::<[u8]>::new_slice(len)?; // SAFETY: buffer is freshly allocated so nobody else has it. load_avatar(unsafe { Gc::<[u8]>::as_mut(&mut data) })?; - Ok(data) + Ok(data.into()) } diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs index 91c8d95349..1057a732ef 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs @@ -5,6 +5,7 @@ use crate::{ constant::screen, display::Icon, geometry::{Alignment, Insets, Point, Rect}, + shape::Renderer, }, }; @@ -106,6 +107,15 @@ impl<'a> Component for Intro<'a> { self.menu.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.title.render(target); + self.text.render(target); + self.warn.render(target); + self.host.render(target); + self.menu.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.menu.bounds(sink); diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs b/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs index ca4b3b94ae..9ffccbc566 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs @@ -5,6 +5,7 @@ use crate::{ constant::{screen, WIDTH}, display::Icon, geometry::{Insets, Point, Rect}, + shape::Renderer, }, }; @@ -108,6 +109,14 @@ impl Component for Menu { self.reset.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.title.render(target); + self.close.render(target); + self.reboot.render(target); + self.reset.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.close.bounds(sink); diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index f65f726f52..50184934ee 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -23,12 +23,30 @@ use super::{ FIRE40, RESULT_FW_INSTALL, RESULT_WIPE, TEXT_BOLD, TEXT_NORMAL, TEXT_WIPE_BOLD, TEXT_WIPE_NORMAL, WARNING40, WELCOME_COLOR, X24, }, - BACKLIGHT_NORMAL, BLACK, GREEN_LIGHT, GREY, WHITE, + BACKLIGHT_NORMAL, GREEN_LIGHT, GREY, }, ModelMercuryFeatures, }; use crate::ui::{ui_features::UIFeaturesBootloader, UIFeaturesCommon}; + +#[cfg(not(feature = "new_rendering"))] +use super::theme::BLACK; + +#[cfg(feature = "new_rendering")] +use crate::ui::{ + constant, + display::toif::Toif, + geometry::{Alignment, Alignment2D}, + shape, + shape::render_on_display, +}; + +#[cfg(feature = "new_rendering")] +use ufmt::uwrite; + +#[cfg(feature = "new_rendering")] +use super::theme::bootloader::BLD_WARN_COLOR; use intro::Intro; use menu::Menu; @@ -44,6 +62,7 @@ const SCREEN: Rect = ModelMercuryFeatures::SCREEN; const PROGRESS_TEXT_ORIGIN: Point = Point::new(2, 28); impl ModelMercuryFeatures { + #[cfg(not(feature = "new_rendering"))] fn screen_progress( text: &str, progress: u16, @@ -77,6 +96,70 @@ impl ModelMercuryFeatures { Self::fadein(); } } + + #[cfg(feature = "new_rendering")] + fn screen_progress( + text: &str, + progress: u16, + initialize: bool, + fg_color: Color, + bg_color: Color, + icon: Option<(Icon, Color)>, + center_text: Option<&str>, + ) { + if initialize { + Self::fadeout(); + } + display::sync(); + + render_on_display(None, Some(bg_color), |target| { + shape::Text::new(PROGRESS_TEXT_ORIGIN, text) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + + let loader_offset: i16 = 19; + let center_text_offset: i16 = 10; + let center = SCREEN.center() + Offset::y(loader_offset); + let inactive_color = bg_color.blend(fg_color, 85); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(fg_color) + .with_end_angle(((progress as i32 * shape::PI4 as i32 * 8) / 1000) as i16) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER + 2) + .with_bg(bg_color) + .render(target); + + if let Some((icon, color)) = icon { + shape::ToifImage::new(center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(color) + .render(target); + } + + if let Some(center_text) = center_text { + shape::Text::new( + SCREEN.center() + Offset::y(loader_offset + center_text_offset), + center_text, + ) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(GREY) + .render(target); + } + }); + + display::refresh(); + if initialize { + Self::fadein(); + } + } } impl UIFeaturesBootloader for ModelMercuryFeatures { @@ -85,12 +168,13 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { show(&mut frame, true); } + #[cfg(not(feature = "new_rendering"))] fn bld_continue_label(bg_color: Color) { display::text_center( Point::new(SCREEN.width() / 2, SCREEN.height() - 5), "click to continue ...", Font::NORMAL, - WHITE, + BLD_FG, bg_color, ); } @@ -127,8 +211,6 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { None, ); } - - display::refresh(); } fn screen_install_fail() { @@ -252,6 +334,7 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { Self::fadeout(); } + #[cfg(not(feature = "new_rendering"))] display::rect_fill(SCREEN, BLACK); let mut frame = WelcomeScreen::new(); @@ -262,7 +345,6 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { } else { display::set_backlight(BACKLIGHT_NORMAL); } - display::refresh(); } fn screen_wipe_progress(progress: u16, initialize: bool) { @@ -322,4 +404,89 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { ); show(&mut frame, true); } + + #[cfg(feature = "new_rendering")] + fn screen_boot( + warning: bool, + vendor_str: Option<&str>, + version: [u8; 4], + vendor_img: &[u8], + wait: i32, + ) { + let bg_color = if warning { BLD_WARN_COLOR } else { BLD_BG }; + + display::sync(); + + render_on_display(None, Some(bg_color), |target| { + // Draw vendor image if it's valid and has size of 120x120 + if let Ok(toif) = Toif::new(vendor_img) { + if (toif.width() == 120) && (toif.height() == 120) { + // Image position depends on the vendor string presence + let pos = if vendor_str.is_some() { + Point::new(SCREEN.width() / 2, 30) + } else { + Point::new(SCREEN.width() / 2, 60) + }; + + shape::ToifImage::new(pos, toif) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(BLD_FG) + .render(target); + } + } + + // Draw vendor string if present + if let Some(text) = vendor_str { + let pos = Point::new(SCREEN.width() / 2, SCREEN.height() - 5 - 50); + shape::Text::new(pos, text) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) //COLOR_BL_BG + .render(target); + + let pos = Point::new(SCREEN.width() / 2, SCREEN.height() - 5 - 25); + + let mut version_text: BootloaderString = String::new(); + unwrap!(uwrite!( + version_text, + "{}.{}.{}", + version[0], + version[1], + version[2] + )); + + shape::Text::new(pos, version_text.as_str()) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + + // Draw a message + match wait.cmp(&0) { + core::cmp::Ordering::Equal => {} + core::cmp::Ordering::Greater => { + let mut text: BootloaderString = String::new(); + unwrap!(uwrite!(text, "starting in {} s", wait)); + + let pos = Point::new(SCREEN.width() / 2, SCREEN.height() - 5); + shape::Text::new(pos, text.as_str()) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + core::cmp::Ordering::Less => { + let pos = Point::new(SCREEN.width() / 2, SCREEN.height() - 5); + shape::Text::new(pos, "click to continue ...") + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + } + }); + + display::refresh(); + } } diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs b/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs index 0e0321fd2a..3900459163 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs @@ -3,6 +3,8 @@ use crate::ui::{ constant::screen, display::{self, Font}, geometry::{Offset, Point, Rect}, + shape, + shape::Renderer, }; use super::super::theme::{BLACK, GREY, WHITE}; @@ -61,4 +63,33 @@ impl Component for Welcome { BLACK, ); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + + shape::Text::new(TEXT_ORIGIN, "Get started") + .with_font(Font::NORMAL) + .with_fg(GREY) + .render(target); + + shape::Text::new(TEXT_ORIGIN + Offset::y(STRIDE), "with your Trezor") + .with_font(Font::NORMAL) + .with_fg(GREY) + .render(target); + + shape::Text::new(TEXT_ORIGIN + Offset::y(2 * STRIDE), "at") + .with_font(Font::NORMAL) + .with_fg(GREY) + .render(target); + + let at_width = Font::NORMAL.text_width("at "); + + shape::Text::new( + TEXT_ORIGIN + Offset::new(at_width, 2 * STRIDE), + "trezor.io/start", + ) + .with_font(Font::NORMAL) + .with_fg(WHITE) + .render(target); + } } diff --git a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs index 6e33e5dc5e..75ab740980 100644 --- a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs @@ -6,6 +6,8 @@ use crate::{ constant::screen, display::{Color, Icon}, geometry::{Alignment2D, Insets, Offset, Point, Rect}, + shape, + shape::Renderer, }, }; @@ -239,6 +241,40 @@ impl Component for Confirm<'_> { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.content_pad.render(target); + + if let Some(info) = self.info.as_ref() { + if self.show_info { + info.close_button.render(target); + info.title.render(target); + info.text.render(target); + self.left_button.render(target); + self.right_button.render(target); + // short-circuit before painting the main components + return; + } else { + info.info_button.render(target); + // pass through to the rest of the paint + } + } + + self.message.render(target); + self.alert.render(target); + self.left_button.render(target); + self.right_button.render(target); + match &self.title { + ConfirmTitle::Text(label) => label.render(target), + ConfirmTitle::Icon(icon) => { + shape::ToifImage::new(Point::new(screen().center().x, ICON_TOP), icon.toif) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(WHITE) + .render(target); + } + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.left_button.bounds(sink); diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 747f994f6f..fa77f19090 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -8,6 +8,8 @@ use crate::{ display::{self, toif::Icon, Color, Font}, event::TouchEvent, geometry::{Alignment2D, Insets, Offset, Point, Rect}, + shape, + shape::Renderer, }, }; @@ -185,6 +187,18 @@ impl Button { } } + pub fn render_background<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) { + match &self.content { + ButtonContent::IconBlend(_, _, _) => {} + _ => shape::Bar::new(self.area) + .with_bg(style.button_color) + .with_fg(style.border_color) + .with_thickness(style.border_width) + .with_radius(style.border_radius as i16) + .render(target), + } + } + pub fn paint_content(&self, style: &ButtonStyle) { match &self.content { ButtonContent::Empty => {} @@ -223,6 +237,45 @@ impl Button { ), } } + + pub fn render_content<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) { + match &self.content { + ButtonContent::Empty => {} + ButtonContent::Text(text) => { + let width = text.map(|c| style.font.text_width(c)); + let height = style.font.text_height(); + let start_of_baseline = self.area.center() + + Offset::new(-width / 2, height / 2) + + Offset::y(Self::BASELINE_OFFSET); + text.map(|text| { + shape::Text::new(start_of_baseline, text) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + }); + } + ButtonContent::Icon(icon) => { + shape::ToifImage::new(self.area.center(), icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(style.text_color) + .render(target); + } + ButtonContent::IconAndText(child) => { + child.render(target, self.area, self.style(), Self::BASELINE_OFFSET); + } + ButtonContent::IconBlend(bg, fg, offset) => { + shape::Bar::new(self.area) + .with_bg(style.background_color) + .render(target); + shape::ToifImage::new(self.area.top_left(), bg.toif) + .with_fg(style.button_color) + .render(target); + shape::ToifImage::new(self.area.top_left() + *offset, fg.toif) + .with_fg(style.text_color) + .render(target); + } + } + } } impl Component for Button { @@ -311,6 +364,12 @@ impl Component for Button { self.paint_content(style); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let style = self.style(); + self.render_background(target, style); + self.render_content(target, style); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area); @@ -437,4 +496,52 @@ impl IconText { ); } } + + pub fn render<'s>( + &self, + target: &mut impl Renderer<'s>, + area: Rect, + style: &ButtonStyle, + baseline_offset: i16, + ) { + let width = style.font.text_width(self.text); + let height = style.font.text_height(); + + let mut use_icon = false; + let mut use_text = false; + + let mut icon_pos = Point::new( + area.top_left().x + ((Self::ICON_SPACE + Self::ICON_MARGIN) / 2), + area.center().y, + ); + let mut text_pos = + area.center() + Offset::new(-width / 2, height / 2) + Offset::y(baseline_offset); + + if area.width() > (Self::ICON_SPACE + Self::TEXT_MARGIN + width) { + //display both icon and text + text_pos = Point::new(area.top_left().x + Self::ICON_SPACE, text_pos.y); + use_text = true; + use_icon = true; + } else if area.width() > (width + Self::TEXT_MARGIN) { + use_text = true; + } else { + //if we can't fit the text, retreat to centering the icon + icon_pos = area.center(); + use_icon = true; + } + + if use_text { + shape::Text::new(text_pos, self.text) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + } + + if use_icon { + shape::ToifImage::new(icon_pos, self.icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(style.text_color) + .render(target); + } + } } diff --git a/core/embed/rust/src/ui/model_mercury/component/error.rs b/core/embed/rust/src/ui/model_mercury/component/error.rs index 7e046d722a..0999a06541 100644 --- a/core/embed/rust/src/ui/model_mercury/component/error.rs +++ b/core/embed/rust/src/ui/model_mercury/component/error.rs @@ -4,6 +4,8 @@ use crate::{ component::{Child, Component, Event, EventCtx, Label, Never, Pad}, constant::screen, geometry::{Alignment2D, Point, Rect}, + shape, + shape::Renderer, }, }; @@ -89,4 +91,19 @@ impl<'a> Component for ErrorScreen<'a> { self.message.paint(); self.footer.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + + let icon = ICON_WARNING40; + shape::ToifImage::new(Point::new(screen().center().x, ICON_TOP), icon.toif) + .with_fg(WHITE) + .with_bg(FATAL_ERROR_COLOR) + .with_align(Alignment2D::TOP_CENTER) + .render(target); + + self.title.render(target); + self.message.render(target); + self.footer.render(target); + } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index b29f29fe3d..e5c549101e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -7,6 +7,7 @@ use crate::{ }, display::Icon, geometry::{Alignment, Insets, Offset, Rect}, + shape::Renderer, }, }; @@ -175,6 +176,12 @@ where self.button.paint(); self.content.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.title.render(target); + self.subtitle.render(target); + self.button.render(target); + self.content.render(target); + } #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index 8d45cb48e8..68ac609336 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -6,7 +6,8 @@ use crate::{ animation::Animation, component::{Component, Event, EventCtx, Pad}, display::{self, toif::Icon, Color}, - geometry::{Offset, Rect}, + geometry::{Alignment2D, Offset, Rect}, + shape::{self, Renderer}, util::animation_disabled, }, }; @@ -205,6 +206,49 @@ impl Component for Loader { ); } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // TODO: Consider passing the current instant along with the event -- that way, + // we could synchronize painting across the component tree. Also could be useful + // in automated tests. + // In practice, taking the current instant here is more precise in case some + // other component in the tree takes a long time to draw. + let now = Instant::now(); + + if let Some(progress) = self.progress(now) { + let style = if progress < display::LOADER_MAX { + self.styles.normal + } else { + self.styles.active + }; + + self.pad.render(target); + + let center = self.pad.area.center(); + + let inactive_color = Color::black().blend(style.loader_color, 85); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(style.loader_color) + .with_end_angle(((progress as i32 * shape::PI4 as i32 * 8) / 1000) as i16) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER) + .with_bg(style.background_color) + .render(target); + + if let Some((icon, color)) = style.icon { + shape::ToifImage::new(center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(color) + .render(target); + } + } + } } pub struct LoaderStyleSheet { diff --git a/core/embed/rust/src/ui/model_mercury/component/result.rs b/core/embed/rust/src/ui/model_mercury/component/result.rs index 5ae92c229a..f5e619f18c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/result.rs +++ b/core/embed/rust/src/ui/model_mercury/component/result.rs @@ -5,6 +5,8 @@ use crate::{ constant::screen, display::{self, Color, Font, Icon}, geometry::{Alignment2D, Insets, Offset, Point, Rect}, + shape, + shape::Renderer, }, }; @@ -94,6 +96,20 @@ impl Component for ResultFooter<'_> { // footer text self.text.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // divider line + let bar = Rect::from_center_and_size( + Point::new(self.area.center().x, self.area.y0), + Offset::new(self.area.width(), 1), + ); + shape::Bar::new(bar) + .with_fg(self.style.divider_color) + .render(target); + + // footer text + self.text.render(target); + } } pub struct ResultScreen<'a> { @@ -165,4 +181,21 @@ impl<'a> Component for ResultScreen<'a> { self.message.paint(); self.footer.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.footer_pad.render(target); + + shape::ToifImage::new( + Point::new(screen().center().x, ICON_CENTER_Y), + self.icon.toif, + ) + .with_align(Alignment2D::CENTER) + .with_fg(self.style.fg_color) + .with_bg(self.style.bg_color) + .render(target); + + self.message.render(target); + self.footer.render(target); + } } diff --git a/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs b/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs index 83fc452afe..35c0ef6589 100644 --- a/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs @@ -1,7 +1,10 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never}, display, - geometry::{Alignment2D, Offset, Rect}, + display::font::Font, + geometry::{Alignment, Alignment2D, Offset, Rect}, + shape, + shape::Renderer, }; use super::theme; @@ -10,7 +13,7 @@ const TEXT_BOTTOM_MARGIN: i16 = 54; const ICON_TOP_MARGIN: i16 = 48; #[cfg(not(feature = "bootloader"))] const MODEL_NAME_FONT: display::Font = display::Font::DEMIBOLD; -#[cfg(not(feature = "bootloader"))] + use crate::trezorhal::model; pub struct WelcomeScreen { @@ -44,12 +47,32 @@ impl Component for WelcomeScreen { ); display::text_center( self.area.bottom_center() - Offset::y(TEXT_BOTTOM_MARGIN), - "Trezor Safe 5", + model::FULL_NAME, display::Font::NORMAL, theme::FG, theme::BG, ); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::ToifImage::new( + self.area.top_center() + Offset::y(ICON_TOP_MARGIN), + theme::ICON_LOGO.toif, + ) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(theme::FG) + .with_bg(theme::BG) + .render(target); + + shape::Text::new( + self.area.bottom_center() - Offset::y(TEXT_BOTTOM_MARGIN), + model::FULL_NAME, + ) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(theme::FG) + .render(target); + } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/screens.rs b/core/embed/rust/src/ui/model_mercury/screens.rs index 5ccc874dbc..2bb6b36757 100644 --- a/core/embed/rust/src/ui/model_mercury/screens.rs +++ b/core/embed/rust/src/ui/model_mercury/screens.rs @@ -5,17 +5,37 @@ use super::{ constant, }; +#[cfg(feature = "new_rendering")] +use crate::ui::{display::Color, shape::render_on_display}; + pub fn screen_fatal_error(title: &str, msg: &str, footer: &str) { let mut frame = ErrorScreen::new(title.into(), msg.into(), footer.into()); frame.place(constant::screen()); + + #[cfg(feature = "new_rendering")] + render_on_display(None, Some(Color::black()), |target| { + frame.render(target); + }); + + #[cfg(not(feature = "new_rendering"))] frame.paint(); + display::refresh(); } pub fn screen_boot_stage_2() { let mut frame = WelcomeScreen::new(); frame.place(screen()); + display::sync(); + + #[cfg(feature = "new_rendering")] + render_on_display(None, Some(Color::black()), |target| { + frame.render(target); + }); + + #[cfg(not(feature = "new_rendering"))] frame.paint(); + display::refresh(); } diff --git a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs index 3cb0e46376..cf323dac41 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs @@ -4,6 +4,8 @@ use crate::{ component::{Child, Component, Event, EventCtx, Label, Pad}, geometry::{Alignment, Alignment2D, Rect}, layout::simplified::ReturnToC, + shape, + shape::Renderer, }, }; @@ -104,6 +106,27 @@ impl<'a> Component for Intro<'a> { self.buttons.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.title.render(target); + + let area = self.bg.area; + + shape::ToifImage::new(area.top_left(), ICON_WARN_TITLE.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(BLD_FG) + .render(target); + + shape::ToifImage::new(area.top_left(), ICON_WARN_TITLE.toif) + .with_align(Alignment2D::TOP_RIGHT) + .with_fg(BLD_FG) + .render(target); + + self.warn.render(target); + self.text.render(target); + self.buttons.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.title.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs index d0a5fa0e1c..6ba41fb6ea 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs @@ -7,8 +7,10 @@ use crate::{ constant::screen, display, display::{Font, Icon}, - geometry::{Alignment2D, Offset, Point, Rect}, + geometry::{Alignment, Alignment2D, Offset, Point, Rect}, layout::simplified::ReturnToC, + shape, + shape::Renderer, }, }; @@ -69,6 +71,26 @@ impl Choice for MenuChoice { ); } + fn render_center<'s>(&self, target: &mut impl Renderer<'s>, _area: Rect, _inverse: bool) { + // Icon on top and two lines of text below + shape::ToifImage::new(SCREEN_CENTER + Offset::y(-20), self.icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(BLD_FG) + .render(target); + + shape::Text::new(SCREEN_CENTER, self.first_line) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + + shape::Text::new(SCREEN_CENTER + Offset::y(10), self.second_line) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + fn btn_layout(&self) -> ButtonLayout { ButtonLayout::arrow_armed_arrow("SELECT".into()) } @@ -162,6 +184,11 @@ impl Component for Menu { self.choice_page.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + self.choice_page.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.choice_page.bounds(sink) diff --git a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs b/core/embed/rust/src/ui/model_tr/bootloader/mod.rs index 93cb79e3cc..64f4a547a1 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/mod.rs @@ -7,7 +7,7 @@ use crate::{ constant, constant::{HEIGHT, SCREEN}, display::{self, Color, Font, Icon}, - geometry::{Alignment2D, Offset, Point, Rect}, + geometry::{Alignment2D, Offset, Point}, layout::simplified::{run, show, ReturnToC}, }, }; @@ -19,11 +19,22 @@ use super::{ }, theme::{ bootloader::{BLD_BG, BLD_FG, ICON_ALERT, ICON_SPINNER, ICON_SUCCESS}, - ICON_ARM_LEFT, ICON_ARM_RIGHT, TEXT_BOLD, TEXT_NORMAL, WHITE, + ICON_ARM_LEFT, ICON_ARM_RIGHT, TEXT_BOLD, TEXT_NORMAL, }, ModelTRFeatures, }; +#[cfg(not(feature = "new_rendering"))] +use crate::ui::geometry::Rect; + +#[cfg(feature = "new_rendering")] +use crate::ui::{ + display::toif::Toif, geometry::Alignment, model_tr::cshape, shape, shape::render_on_display, +}; + +#[cfg(feature = "new_rendering")] +use ufmt::uwrite; + mod intro; mod menu; mod welcome; @@ -42,6 +53,7 @@ impl ReturnToC for ConfirmMsg { } impl ModelTRFeatures { + #[cfg(not(feature = "new_rendering"))] fn screen_progress( text: &str, text2: &str, @@ -84,6 +96,50 @@ impl ModelTRFeatures { display::refresh(); } + + #[cfg(feature = "new_rendering")] + fn screen_progress( + text: &str, + text2: &str, + progress: u16, + _initialize: bool, + fg_color: Color, + bg_color: Color, + icon: Option<(Icon, Color)>, + ) { + let progress = if progress < 20 { 20 } else { progress }; + + display::sync(); + + render_on_display(None, Some(bg_color), |target| { + let center = SCREEN.top_center() + Offset::y(12); + + cshape::LoaderCircular::new(center, progress) + .with_color(fg_color) + .render(target); + + if let Some((icon, color)) = icon { + shape::ToifImage::new(center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(color) + .render(target); + } + + shape::Text::new(SCREEN.center() + Offset::y(8), text) + .with_align(Alignment::Center) + .with_font(Font::BOLD) + .with_fg(fg_color) + .render(target); + + shape::Text::new(SCREEN.center() + Offset::y(20), text2) + .with_align(Alignment::Center) + .with_font(Font::BOLD) + .with_fg(fg_color) + .render(target); + }); + + display::refresh(); + } } impl UIFeaturesBootloader for ModelTRFeatures { @@ -92,24 +148,25 @@ impl UIFeaturesBootloader for ModelTRFeatures { show(&mut frame, true); } + #[cfg(not(feature = "new_rendering"))] fn bld_continue_label(bg_color: Color) { display::text_center( Point::new(constant::WIDTH / 2, HEIGHT - 2), "CONTINUE", Font::NORMAL, - WHITE, + BLD_FG, bg_color, ); ICON_ARM_LEFT.draw( Point::new(constant::WIDTH / 2 - 36, HEIGHT - 6), Alignment2D::TOP_LEFT, - WHITE, + BLD_FG, bg_color, ); ICON_ARM_RIGHT.draw( Point::new(constant::WIDTH / 2 + 25, HEIGHT - 6), Alignment2D::TOP_LEFT, - WHITE, + BLD_FG, bg_color, ); } @@ -261,6 +318,7 @@ impl UIFeaturesBootloader for ModelTRFeatures { } fn screen_boot_stage_1(_fading: bool) { + #[cfg(not(feature = "new_rendering"))] display::rect_fill(SCREEN, BLD_BG); let mut frame = WelcomeScreen::new(true); @@ -315,4 +373,92 @@ impl UIFeaturesBootloader for ModelTRFeatures { let mut frame = ResultScreen::new(BLD_FG, BLD_BG, ICON_ALERT, title, content, true); show(&mut frame, false); } + + #[cfg(feature = "new_rendering")] + fn screen_boot( + _warning: bool, + vendor_str: Option<&str>, + version: [u8; 4], + vendor_img: &[u8], + wait: i32, + ) { + display::sync(); + + render_on_display(None, Some(BLD_BG), |target| { + // Draw vendor image if it's valid and has size of 24x24 + if let Ok(toif) = Toif::new(vendor_img) { + if (toif.width() == 24) && (toif.height() == 24) { + let pos = Point::new((constant::WIDTH - 22) / 2, 0); + shape::ToifImage::new(pos, toif) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(BLD_FG) + .render(target); + } + } + + // Draw vendor string if present + if let Some(text) = vendor_str { + let pos = Point::new(constant::WIDTH / 2, 36); + shape::Text::new(pos, text) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) //COLOR_BL_BG + .render(target); + + let pos = Point::new(constant::WIDTH / 2, 46); + + let mut version_text: BootloaderString = String::new(); + unwrap!(uwrite!( + version_text, + "{}.{}.{}", + version[0], + version[1], + version[2] + )); + + shape::Text::new(pos, version_text.as_str()) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + + // Draw a message + match wait.cmp(&0) { + core::cmp::Ordering::Equal => {} + core::cmp::Ordering::Greater => { + let mut text: BootloaderString = String::new(); + unwrap!(uwrite!(text, "starting in {} s", wait)); + + let pos = Point::new(constant::WIDTH / 2, HEIGHT - 5); + shape::Text::new(pos, text.as_str()) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + core::cmp::Ordering::Less => { + let pos = Point::new(constant::WIDTH / 2, HEIGHT - 2); + shape::Text::new(pos, "CONTINUE") + .with_align(Alignment::Center) + .with_fg(BLD_FG) + .render(target); + + let pos = Point::new(constant::WIDTH / 2 - 36, HEIGHT - 6); + shape::ToifImage::new(pos, ICON_ARM_LEFT.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(BLD_FG) + .render(target); + + let pos = Point::new(constant::WIDTH / 2 + 25, HEIGHT - 6); + shape::ToifImage::new(pos, ICON_ARM_RIGHT.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(BLD_FG) + .render(target); + } + } + }); + + display::refresh(); + } } diff --git a/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs b/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs index 0a5e03a297..ad261e3b17 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs @@ -1,7 +1,9 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never, Pad}, display::{self, Font}, - geometry::{Offset, Rect}, + geometry::{Alignment, Offset, Rect}, + shape, + shape::Renderer, }; use super::super::theme::bootloader::{BLD_BG, BLD_FG}; @@ -57,4 +59,28 @@ impl Component for Welcome { BLD_BG, ); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + + let top_center = self.bg.area.top_center(); + + shape::Text::new(top_center + Offset::y(24), "Get started with") + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + + shape::Text::new(top_center + Offset::y(32), "your Trezor at") + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + + shape::Text::new(top_center + Offset::y(48), "trezor.io/start") + .with_align(Alignment::Center) + .with_font(Font::BOLD) + .with_fg(BLD_FG) + .render(target); + } } diff --git a/core/embed/rust/src/ui/model_tr/component/address_details.rs b/core/embed/rust/src/ui/model_tr/component/address_details.rs index 6ba2afd77e..0165bb9a78 100644 --- a/core/embed/rust/src/ui/model_tr/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tr/component/address_details.rs @@ -10,6 +10,7 @@ use crate::{ Child, Component, Event, EventCtx, Pad, Paginate, Qr, }, geometry::Rect, + shape::Renderer, }, }; @@ -259,6 +260,16 @@ impl Component for AddressDetails { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + self.buttons.render(target); + match self.current_page { + 0 => self.qr_code.render(target), + 1 => self.details_view.render(target), + _ => self.xpub_view.render(target), + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area) diff --git a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs index 85e589b73a..842c2ce224 100644 --- a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs @@ -4,6 +4,8 @@ use crate::{ component::{Child, Component, ComponentExt, Event, EventCtx, Label, Pad}, display::{self, Color, Font}, geometry::{Point, Rect}, + shape, + shape::Renderer, }, }; @@ -216,6 +218,32 @@ impl Component for Confirm<'_> { self.buttons.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + + let mut display_top_left = |text: TString| { + text.map(|t| { + shape::Text::new(Point::zero(), t) + .with_font(Font::BOLD) + .with_fg(WHITE) + .render(target); + }); + }; + + // We are either on the info screen or on the "main" screen + if self.showing_info_screen { + if let Some(title) = self.info_title { + display_top_left(title); + } + self.info_text.render(target); + } else { + display_top_left(self.title); + self.message.render(target); + self.alert.render(target); + } + self.buttons.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.buttons.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tr/component/button.rs b/core/embed/rust/src/ui/model_tr/component/button.rs index e1bfd8c8ec..7e630d5d21 100644 --- a/core/embed/rust/src/ui/model_tr/component/button.rs +++ b/core/embed/rust/src/ui/model_tr/component/button.rs @@ -7,6 +7,8 @@ use crate::{ display::{self, Color, Font, Icon}, event::PhysicalButton, geometry::{Alignment2D, Offset, Point, Rect}, + shape, + shape::Renderer, }, }; @@ -260,6 +262,88 @@ impl Component for Button { } } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let style = self.style(); + let fg_color = style.text_color; + let bg_color = fg_color.negate(); + let area = self.get_current_area(); + let inversed_colors = bg_color != theme::BG; + + // Filling the background (with 2-pixel rounding when applicable) + if inversed_colors { + shape::Bar::new(area) + .with_radius(3) + .with_bg(bg_color) + .render(target); + } else if style.with_outline { + shape::Bar::new(area) + .with_radius(3) + .with_fg(fg_color) + .render(target); + } else { + shape::Bar::new(area).with_bg(bg_color).render(target); + } + + // Optionally display "arms" at both sides of content - always in FG and BG + // colors (they are not inverted). + if style.with_arms { + shape::ToifImage::new(area.left_center(), theme::ICON_ARM_LEFT.toif) + .with_align(Alignment2D::TOP_RIGHT) + .with_fg(theme::FG) + .render(target); + + shape::ToifImage::new(area.right_center(), theme::ICON_ARM_RIGHT.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(theme::FG) + .render(target); + } + + // Painting the content + match &self.content { + ButtonContent::Text(text) => text.map(|t| { + shape::Text::new( + self.get_text_baseline(style) - Offset::x(style.font.start_x_bearing(t)), + t, + ) + .with_font(style.font) + .with_fg(fg_color) + .render(target); + }), + ButtonContent::Icon(icon) => { + // Allowing for possible offset of the area from current style + let icon_area = area.translate(style.offset); + if style.with_outline { + shape::ToifImage::new(icon_area.center(), icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(fg_color) + .render(target); + } else { + // Positioning the icon in the corresponding corner/center + match self.pos { + ButtonPos::Left => { + shape::ToifImage::new(icon_area.bottom_left(), icon.toif) + .with_align(Alignment2D::BOTTOM_LEFT) + .with_fg(fg_color) + .render(target) + } + + ButtonPos::Right => { + shape::ToifImage::new(icon_area.bottom_right(), icon.toif) + .with_align(Alignment2D::BOTTOM_RIGHT) + .with_fg(fg_color) + .render(target) + } + + ButtonPos::Middle => shape::ToifImage::new(icon_area.center(), icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(fg_color) + .render(target), + } + } + } + } + } } #[derive(PartialEq, Eq)] diff --git a/core/embed/rust/src/ui/model_tr/component/button_controller.rs b/core/embed/rust/src/ui/model_tr/component/button_controller.rs index 76d053faa9..2809388790 100644 --- a/core/embed/rust/src/ui/model_tr/component/button_controller.rs +++ b/core/embed/rust/src/ui/model_tr/component/button_controller.rs @@ -7,6 +7,7 @@ use crate::{ component::{base::Event, Component, EventCtx, Pad, TimerToken}, event::{ButtonEvent, PhysicalButton}, geometry::Rect, + shape::Renderer, }, }; @@ -93,6 +94,18 @@ impl ButtonType { Self::Nothing => {} } } + + pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + match self { + Self::Button(button) => { + button.render(target); + } + Self::HoldToConfirm(htc) => { + htc.render(target); + } + Self::Nothing => {} + } + } } /// Wrapping a button and its state, so that it can be easily @@ -154,6 +167,10 @@ impl ButtonContainer { self.button_type.paint(); } + pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.button_type.render(target); + } + /// Setting the visual state of the button - released/pressed. pub fn set_pressed(&mut self, ctx: &mut EventCtx, is_pressed: bool) { if let ButtonType::Button(btn) = &mut self.button_type { @@ -575,6 +592,13 @@ impl Component for ButtonController { self.right_btn.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + self.left_btn.render(target); + self.middle_btn.render(target); + self.right_btn.render(target); + } + fn place(&mut self, bounds: Rect) -> Rect { // Saving button area so that we can re-place the buttons // when they get updated @@ -754,6 +778,8 @@ impl Component for AutomaticMover { fn paint(&mut self) {} + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { // Moving automatically only when we receive a TimerToken that we have // requested before diff --git a/core/embed/rust/src/ui/model_tr/component/changing_text.rs b/core/embed/rust/src/ui/model_tr/component/changing_text.rs index a9df41b66d..089566d10e 100644 --- a/core/embed/rust/src/ui/model_tr/component/changing_text.rs +++ b/core/embed/rust/src/ui/model_tr/component/changing_text.rs @@ -2,6 +2,8 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never, Pad}, display::Font, geometry::{Alignment, Point, Rect}, + shape, + shape::Renderer, util::long_line_content_with_ellipsis, }; @@ -109,16 +111,39 @@ where common::display_left(baseline, &self.text, self.font); } + fn render_left<'s>(&'s self, target: &mut impl Renderer<'s>) { + let baseline = Point::new(self.pad.area.x0, self.y_baseline()); + shape::Text::new(baseline, self.text.as_ref()) + .with_font(self.font) + .render(target); + } + fn paint_center(&self) { let baseline = Point::new(self.pad.area.bottom_center().x, self.y_baseline()); common::display_center(baseline, &self.text, self.font); } + fn render_center<'s>(&'s self, target: &mut impl Renderer<'s>) { + let baseline = Point::new(self.pad.area.bottom_center().x, self.y_baseline()); + shape::Text::new(baseline, self.text.as_ref()) + .with_align(Alignment::Center) + .with_font(self.font) + .render(target); + } + fn paint_right(&self) { let baseline = Point::new(self.pad.area.x1, self.y_baseline()); common::display_right(baseline, &self.text, self.font); } + fn render_right<'s>(&'s self, target: &mut impl Renderer<'s>) { + let baseline = Point::new(self.pad.area.x1, self.y_baseline()); + shape::Text::new(baseline, self.text.as_ref()) + .with_align(Alignment::End) + .with_font(self.font) + .render(target); + } + fn paint_long_content_with_ellipsis(&self) { let text_to_display = long_line_content_with_ellipsis( self.text.as_ref(), @@ -175,4 +200,20 @@ where } } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + if self.show_content { + // In the case text cannot fit, show ellipsis and its right part + if !self.text_fits_completely() { + self.paint_long_content_with_ellipsis(); + } else { + match self.alignment { + Alignment::Start => self.render_left(target), + Alignment::Center => self.render_center(target), + Alignment::End => self.render_right(target), + } + } + } + } } diff --git a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs index 50d7b7e8c3..53e5892bd1 100644 --- a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs @@ -6,11 +6,16 @@ use crate::{ ui::{ component::{ base::Never, - text::util::{text_multiline, text_multiline_bottom}, + text::util::{ + text_multiline, text_multiline2, text_multiline_bottom, text_multiline_bottom2, + }, Component, Event, EventCtx, }, display::{self, Font}, - geometry::{Alignment, Insets, Rect}, + geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, + model_tr::cshape, + shape, + shape::Renderer, util::animation_disabled, }, }; @@ -124,6 +129,56 @@ impl Component for CoinJoinProgress { ); } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // TOP + let center = self.area.center() + Offset::y(self.loader_y_offset); + + if self.indeterminate { + text_multiline2( + target, + self.area, + TR::coinjoin__title_progress.into(), + Font::BOLD, + theme::FG, + theme::BG, + Alignment::Center, + ); + cshape::LoaderSmall::new(center, self.value) + .with_color(theme::FG) + .render(target); + } else { + cshape::LoaderCircular::new(center, self.value) + .with_color(theme::FG) + .render(target); + shape::ToifImage::new(center, theme::ICON_TICK_FAT.toif) + .with_align(Alignment2D::CENTER) + .with_fg(theme::FG) + .render(target); + } + + // BOTTOM + let top_rest = text_multiline_bottom2( + target, + self.area, + TR::coinjoin__do_not_disconnect.into(), + Font::BOLD, + theme::FG, + theme::BG, + Alignment::Center, + ); + if let Some(rest) = top_rest { + text_multiline_bottom2( + target, + rest.inset(Insets::bottom(FOOTER_TEXT_MARGIN)), + self.text, + Font::NORMAL, + theme::FG, + theme::BG, + Alignment::Center, + ); + } + } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tr/component/error.rs b/core/embed/rust/src/ui/model_tr/component/error.rs index 52818a342b..9772bc9d81 100644 --- a/core/embed/rust/src/ui/model_tr/component/error.rs +++ b/core/embed/rust/src/ui/model_tr/component/error.rs @@ -5,6 +5,9 @@ use crate::{ constant::{screen, WIDTH}, display, geometry::{Alignment2D, Offset, Point, Rect}, + model_tr::cshape, + shape, + shape::Renderer, }, }; @@ -98,4 +101,29 @@ impl Component for ErrorScreen<'_> { self.footer.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + + if self.show_icons { + shape::ToifImage::new(screen().top_left(), theme::ICON_WARN_TITLE.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(FG) + .render(target); + + shape::ToifImage::new(screen().top_right(), theme::ICON_WARN_TITLE.toif) + .with_align(Alignment2D::TOP_RIGHT) + .with_fg(FG) + .render(target); + } + self.title.render(target); + self.message.render(target); + + cshape::HorizontalLine::new(Point::new(0, DIVIDER_POSITION), WIDTH) + .with_step(3) + .with_color(FG) + .render(target); + + self.footer.render(target); + } } diff --git a/core/embed/rust/src/ui/model_tr/component/flow.rs b/core/embed/rust/src/ui/model_tr/component/flow.rs index 43c599e15b..eb4841673e 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow.rs @@ -4,6 +4,7 @@ use crate::{ component::{Child, Component, ComponentExt, Event, EventCtx, Pad, Paginate}, constant::SCREEN, geometry::Rect, + shape::Renderer, }, }; @@ -313,6 +314,23 @@ where // (and painting buttons last would cover the lower part). self.current_page.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + // Scrollbars are painted only with a title and when requested + if self.title.is_some() { + if self.show_scrollbar { + self.scrollbar.render(target); + } + self.title.render(target); + } + self.buttons.render(target); + // On purpose painting current page at the end, after buttons, + // because we sometimes (in the case of QR code) need to use the + // whole height of the display for showing the content + // (and painting buttons last would cover the lower part). + self.current_page.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs b/core/embed/rust/src/ui/model_tr/component/flow_pages.rs index 5ffd92c033..c143c74232 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow_pages.rs @@ -3,6 +3,7 @@ use crate::{ ui::{ component::{base::Component, FormattedText, Paginate}, geometry::Rect, + shape::Renderer, }, }; @@ -121,6 +122,10 @@ impl Page { self.formatted.paint(); } + pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.formatted.render(target); + } + pub fn place(&mut self, bounds: Rect) -> Rect { self.formatted.place(bounds); self.page_count = self.page_count(); diff --git a/core/embed/rust/src/ui/model_tr/component/frame.rs b/core/embed/rust/src/ui/model_tr/component/frame.rs index b9d8d3f7b1..f47158d9e3 100644 --- a/core/embed/rust/src/ui/model_tr/component/frame.rs +++ b/core/embed/rust/src/ui/model_tr/component/frame.rs @@ -3,6 +3,7 @@ use crate::{ ui::{ component::{Child, Component, ComponentExt, Event, EventCtx, Paginate}, geometry::{Insets, Rect}, + shape::Renderer, }, }; @@ -80,6 +81,11 @@ where self.title.paint(); self.content.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.title.render(target); + self.content.render(target); + } } impl<T> Paginate for Frame<T> @@ -197,6 +203,12 @@ where self.scrollbar.paint(); self.content.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.title.render(target); + self.scrollbar.render(target); + self.content.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs index 06f652b768..d0afb1e2cf 100644 --- a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs @@ -5,6 +5,7 @@ use crate::{ component::{Component, Event, EventCtx}, event::ButtonEvent, geometry::Rect, + shape::Renderer, }, }; @@ -122,6 +123,10 @@ impl Component for HoldToConfirm { fn paint(&mut self) { self.loader.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.loader.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/homescreen.rs b/core/embed/rust/src/ui/model_tr/component/homescreen.rs index b6ccc6cf6f..a8a5048697 100644 --- a/core/embed/rust/src/ui/model_tr/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_tr/component/homescreen.rs @@ -1,4 +1,5 @@ use crate::{ + io::BinaryData, strutil::TString, translations::TR, trezorhal::usb::usb_configured, @@ -6,13 +7,17 @@ use crate::{ component::{Child, Component, Event, EventCtx, Label}, constant::{HEIGHT, WIDTH}, display::{ - self, rect_fill, - toif::{Toif, ToifFormat}, + self, + image::{ImageInfo, ToifFormat}, + rect_fill, + toif::Toif, Font, Icon, }, event::USBEvent, - geometry::{Alignment2D, Insets, Offset, Point, Rect}, + geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, layout::util::get_user_custom_image, + shape, + shape::Renderer, }, }; @@ -46,6 +51,16 @@ fn paint_default_image() { ); } +fn render_default_image<'s>(target: &mut impl Renderer<'s>) { + shape::ToifImage::new( + TOP_CENTER + Offset::y(LOGO_ICON_TOP_MARGIN), + theme::ICON_LOGO.toif, + ) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(theme::FG) + .render(target); +} + enum CurrentScreen { EmptyAtStart, Homescreen, @@ -57,6 +72,7 @@ pub struct Homescreen { // always painted, so we need to always paint the label too label: Label<'static>, notification: Option<(TString<'static>, u8)>, + custom_image: Option<BinaryData<'static>>, /// Used for HTC functionality to lock device from homescreen invisible_buttons: Child<ButtonController>, /// Holds the loader component @@ -78,9 +94,11 @@ impl Homescreen { let invisible_btn_layout = ButtonLayout::text_none_text("".into(), "".into()); let loader = loader_description.map(|desc| Child::new(ProgressLoader::new(desc, HOLD_TO_LOCK_MS))); + Self { label: Label::centered(label, theme::TEXT_BIG), notification, + custom_image: get_homescreen_image(), invisible_buttons: Child::new(ButtonController::new(invisible_btn_layout)), loader, show_loader: false, @@ -89,18 +107,27 @@ impl Homescreen { } fn paint_homescreen_image(&self) { - let homescreen_bytes = get_user_custom_image().ok(); - let homescreen = homescreen_bytes - .as_ref() - .and_then(|data| Toif::new(data.as_ref()).ok()) - .filter(check_homescreen_format); - if let Some(toif) = homescreen { + if let Some(image) = self.custom_image { + // SAFETY: We expect no existing mutable reference. Resulting reference is + // discarded before returning to micropython. + let toif = unwrap!(Toif::new(unsafe { image.data() })); toif.draw(TOP_CENTER, Alignment2D::TOP_CENTER, theme::FG, theme::BG); } else { paint_default_image(); } } + fn render_homescreen_image<'s>(&'s self, target: &mut impl Renderer<'s>) { + if let Some(image) = self.custom_image { + shape::ToifImage::new_image(TOP_CENTER, image) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(theme::FG) + .render(target); + } else { + render_default_image(target); + } + } + fn paint_notification(&self) { let baseline = TOP_CENTER + Offset::y(NOTIFICATION_FONT.line_height()); if !usb_configured() { @@ -132,6 +159,51 @@ impl Homescreen { } } + fn render_notification<'s>(&'s self, target: &mut impl Renderer<'s>) { + let baseline = TOP_CENTER + Offset::y(NOTIFICATION_FONT.line_height()); + if !usb_configured() { + shape::Bar::new(AREA.split_top(NOTIFICATION_HEIGHT).0) + .with_bg(theme::BG) + .render(target); + + // TODO: fill warning icons here as well? + TR::homescreen__title_no_usb_connection.map_translated(|t| { + shape::Text::new(baseline, t) + .with_align(Alignment::Center) + .with_font(NOTIFICATION_FONT) + .render(target) + }); + } else if let Some((notification, _level)) = &self.notification { + shape::Bar::new(AREA.split_top(NOTIFICATION_HEIGHT).0) + .with_bg(theme::BG) + .render(target); + + notification.map(|c| { + shape::Text::new(baseline, c) + .with_align(Alignment::Center) + .with_font(NOTIFICATION_FONT) + .render(target) + }); + + // Painting warning icons in top corners when the text is short enough not to + // collide with them + let icon_width = NOTIFICATION_ICON.toif.width(); + let text_width = notification.map(|c| NOTIFICATION_FONT.text_width(c)); + if AREA.width() >= text_width + (icon_width + 1) * 2 { + shape::ToifImage::new(AREA.top_left(), NOTIFICATION_ICON.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(theme::FG) + .with_bg(theme::BG) + .render(target); + shape::ToifImage::new(AREA.top_right(), NOTIFICATION_ICON.toif) + .with_align(Alignment2D::TOP_RIGHT) + .with_fg(theme::FG) + .with_bg(theme::BG) + .render(target); + } + } + } + fn paint_label(&mut self) { // paint black background to place the label let mut outset = Insets::uniform(LABEL_OUTSET); @@ -142,6 +214,19 @@ impl Homescreen { self.label.paint(); } + fn render_label<'s>(&'s self, target: &mut impl Renderer<'s>) { + // paint black background to place the label + let mut outset = Insets::uniform(LABEL_OUTSET); + // the margin at top is bigger (caused by text-height vs line-height?) + // compensate by shrinking the outset + outset.top -= 5; + shape::Bar::new(self.label.text_area().outset(outset)) + .with_bg(theme::BG) + .render(target); + + self.label.render(target); + } + /// So that notification is well visible even on homescreen image fn fill_notification_background(&self) { rect_fill(AREA.split_top(NOTIFICATION_HEIGHT).0, theme::BG); @@ -229,6 +314,19 @@ impl Component for Homescreen { self.paint_label(); } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // Redraw the whole screen when the screen changes (loader vs homescreen) + if self.show_loader { + self.loader.render(target); + } else { + // Painting the homescreen image first, as the notification and label + // should be "on top of it" + self.render_homescreen_image(target); + self.render_notification(target); + self.render_label(target); + } + } } pub struct Lockscreen<'a> { @@ -301,29 +399,50 @@ impl Component for Lockscreen<'_> { ) } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + if self.screensaver { + // keep screen blank + return; + } + shape::ToifImage::new( + TOP_CENTER + Offset::y(LOCK_ICON_TOP_MARGIN), + theme::ICON_LOCK.toif, + ) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(theme::FG) + .render(target); + + self.instruction.render(target); + self.label.render(target); + + if let Some(icon) = &self.coinjoin_icon { + shape::ToifImage::new(COINJOIN_CORNER, icon.toif) + .with_align(Alignment2D::TOP_RIGHT) + .with_fg(theme::FG) + .render(target); + } + } } -pub struct ConfirmHomescreen<F> { +pub struct ConfirmHomescreen { title: Child<Label<'static>>, - buffer_func: F, + image: BinaryData<'static>, buttons: Child<ButtonController>, } -impl<F> ConfirmHomescreen<F> { - pub fn new(title: TString<'static>, buffer_func: F) -> Self { +impl ConfirmHomescreen { + pub fn new(title: TString<'static>, image: BinaryData<'static>) -> Self { let btn_layout = ButtonLayout::cancel_none_text(TR::buttons__change.into()); ConfirmHomescreen { title: Child::new(Label::centered(title, theme::TEXT_BOLD_UPPER)), - buffer_func, + image, buttons: Child::new(ButtonController::new(btn_layout)), } } } -impl<'a, F> Component for ConfirmHomescreen<F> -where - F: Fn() -> &'a [u8], -{ +impl Component for ConfirmHomescreen { type Msg = CancelConfirmMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -348,12 +467,13 @@ where } fn paint(&mut self) { - // Drawing the image full-screen first and then other things on top - let buffer = (self.buffer_func)(); - if buffer.is_empty() { + if self.image.is_empty() { paint_default_image(); } else { - let toif_data = unwrap!(Toif::new(buffer)); + // Drawing the image full-screen first and then other things on top + // SAFETY: We expect no existing mutable reference. Resulting reference is + // discarded before returning to micropython. + let toif_data = unwrap!(Toif::new(unsafe { self.image.data() })); toif_data.draw(TOP_CENTER, Alignment2D::TOP_CENTER, theme::FG, theme::BG); }; // Need to make all the title background black, so the title text is well @@ -363,10 +483,47 @@ where self.title.paint(); self.buttons.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + if self.image.is_empty() { + render_default_image(target); + } else { + shape::ToifImage::new_image(TOP_CENTER, self.image) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(theme::FG) + .render(target); + }; + // Need to make all the title background black, so the title text is well + // visible + let title_area = self.title.inner().area(); + + shape::Bar::new(title_area) + .with_bg(theme::BG) + .render(target); + + self.title.render(target); + self.buttons.render(target); + } } -pub fn check_homescreen_format(toif: &Toif) -> bool { - toif.format() == ToifFormat::GrayScaleEH && toif.width() == WIDTH && toif.height() == HEIGHT +pub fn check_homescreen_format(image: BinaryData) -> bool { + match ImageInfo::parse(image) { + ImageInfo::Toif(info) => { + info.width() == WIDTH + && info.height() == HEIGHT + && info.format() == ToifFormat::GrayScaleEH + } + _ => false, + } +} + +fn get_homescreen_image() -> Option<BinaryData<'static>> { + if let Ok(image) = get_user_custom_image() { + if check_homescreen_format(image) { + return Some(image); + } + } + None } // DEBUG-ONLY SECTION BELOW @@ -388,7 +545,7 @@ impl crate::trace::Trace for Lockscreen<'_> { } #[cfg(feature = "ui_debug")] -impl<F> crate::trace::Trace for ConfirmHomescreen<F> { +impl crate::trace::Trace for ConfirmHomescreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ConfirmHomescreen"); t.child("title", &self.title); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs index 71d662ccc9..4cd681b775 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs @@ -1,6 +1,7 @@ use crate::ui::{ component::{Child, Component, Event, EventCtx, Pad}, geometry::{Insets, Offset, Rect}, + shape::Renderer, util::animation_disabled, }; @@ -14,11 +15,17 @@ pub trait Choice { // Only `paint_center` is required, the rest is optional // and therefore has a default implementation. fn paint_center(&self, area: Rect, inverse: bool); + + fn render_center<'s>(&self, target: &mut impl Renderer<'s>, _area: Rect, _inverse: bool); + fn width_center(&self) -> i16 { 0 } fn paint_side(&self, _area: Rect) {} + + fn render_side<'s>(&self, _target: &mut impl Renderer<'s>, _area: Rect) {} + fn width_side(&self) -> i16 { 0 } @@ -248,6 +255,43 @@ where } } + /// Display current, previous and next choices according to + /// the current ChoiceItem. + fn render_choices<'s>(&'s self, target: &mut impl Renderer<'s>) { + // Getting the row area for the choices - so that displaying + // items in the used font will show them in the middle vertically. + let area_height_half = self.pad.area.height() / 2; + let font_size_half = theme::FONT_CHOICE_ITEMS.visible_text_height("Ay") / 2; + let center_row_area = self + .pad + .area + .split_top(area_height_half) + .0 + .outset(Insets::bottom(font_size_half)); + + // Drawing the current item in the middle. + self.show_current_choice2(target, center_row_area); + + // Not drawing the rest when not wanted + if self.show_only_one_item { + return; + } + + // Getting the remaining left and right areas. + let center_width = self.get_current_item().width_center(); + let (left_area, _center_area, right_area) = center_row_area.split_center(center_width); + + // Possibly drawing on the left side. + if self.has_previous_choice() || self.is_carousel { + self.show_left_choices2(target, left_area); + } + + // Possibly drawing on the right side. + if self.has_next_choice() || self.is_carousel { + self.show_right_choices2(target, right_area); + } + } + /// Setting current buttons, and clearing. fn update(&mut self, ctx: &mut EventCtx) { self.set_buttons(ctx); @@ -296,6 +340,12 @@ where .paint_center(area, self.inverse_selected_item); } + /// Display the current choice in the middle. + fn show_current_choice2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { + self.get_current_item() + .render_center(target, area, self.inverse_selected_item); + } + /// Display all the choices fitting on the left side. /// Going as far as possible. fn show_left_choices(&self, area: Rect) { @@ -338,6 +388,48 @@ where } } + /// Display all the choices fitting on the left side. + /// Going as far as possible. + fn show_left_choices2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { + // NOTE: page index can get negative here, so having it as i16 instead of usize + let mut page_index = self.page_counter as i16 - 1; + let mut current_area = area.split_right(self.items_distance).0; + while current_area.width() > 0 { + // Breaking out of the loop if we exhausted left items + // and the carousel mode is not enabled. + if page_index < 0 { + if self.is_carousel { + // Moving to the last page. + page_index = self.last_page_index() as i16; + } else { + break; + } + } + + let (choice, _) = self.choices.get(page_index as usize); + let choice_width = choice.width_side(); + + if current_area.width() <= choice_width && !self.show_incomplete { + // early break for an item that will not fit the remaining space + break; + } + + // We need to calculate the area explicitly because we want to allow it + // to exceed the bounds of the original area. + let choice_area = Rect::from_top_right_and_size( + current_area.top_right(), + Offset::new(choice_width, current_area.height()), + ); + choice.render_side(target, choice_area); + + // Updating loop variables. + current_area = current_area + .split_right(choice_width + self.items_distance) + .0; + page_index -= 1; + } + } + /// Display all the choices fitting on the right side. /// Going as far as possible. fn show_right_choices(&self, area: Rect) { @@ -379,6 +471,47 @@ where } } + /// Display all the choices fitting on the right side. + /// Going as far as possible. + fn show_right_choices2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { + let mut page_index = self.page_counter + 1; + let mut current_area = area.split_left(self.items_distance).1; + while current_area.width() > 0 { + // Breaking out of the loop if we exhausted right items + // and the carousel mode is not enabled. + if page_index > self.last_page_index() { + if self.is_carousel { + // Moving to the first page. + page_index = 0; + } else { + break; + } + } + + let (choice, _) = self.choices.get(page_index); + let choice_width = choice.width_side(); + + if current_area.width() <= choice_width && !self.show_incomplete { + // early break for an item that will not fit the remaining space + break; + } + + // We need to calculate the area explicitly because we want to allow it + // to exceed the bounds of the original area. + let choice_area = Rect::from_top_left_and_size( + current_area.top_left(), + Offset::new(choice_width, current_area.height()), + ); + choice.render_side(target, choice_area); + + // Updating loop variables. + current_area = current_area + .split_left(choice_width + self.items_distance) + .1; + page_index += 1; + } + } + /// Decrease the page counter to the previous page. fn decrease_page_counter(&mut self) { self.page_counter -= 1; @@ -586,6 +719,12 @@ where self.buttons.paint(); self.paint_choices(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + self.buttons.render(target); + self.render_choices(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs index f9792f6385..e40ce39d2e 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/choice_item.rs @@ -3,6 +3,8 @@ use crate::{ ui::{ display::{self, rect_fill, rect_fill_corners, rect_outline_rounded, Font, Icon}, geometry::{Alignment2D, Offset, Rect}, + shape, + shape::Renderer, }, }; @@ -107,6 +109,27 @@ impl Choice for ChoiceItem { ); } + /// Painting the item as the main choice in the middle. + /// Showing both the icon and text, if the icon is available. + fn render_center<'s>(&self, target: &mut impl Renderer<'s>, area: Rect, inverse: bool) { + let width = text_icon_width(Some(self.text.as_ref()), self.icon, self.font); + render_rounded_highlight( + target, + area, + Offset::new(width, self.font.visible_text_height("Ay")), + inverse, + ); + render_text_icon( + target, + area, + width, + Some(self.text.as_ref()), + self.icon, + self.font, + inverse, + ); + } + /// Getting the overall width in pixels when displayed in center. /// That means both the icon and text will be shown. fn width_center(&self) -> i16 { @@ -125,6 +148,20 @@ impl Choice for ChoiceItem { paint_text_icon(area, width, self.side_text(), self.icon, self.font, false); } + /// Painting smaller version of the item on the side. + fn render_side<'s>(&self, target: &mut impl Renderer<'s>, area: Rect) { + let width = text_icon_width(self.side_text(), self.icon, self.font); + render_text_icon( + target, + area, + width, + self.side_text(), + self.icon, + self.font, + false, + ); + } + /// Getting current button layout. fn btn_layout(&self) -> ButtonLayout { self.btn_layout.clone() @@ -151,6 +188,37 @@ fn paint_rounded_highlight(area: Rect, size: Offset, inverse: bool) { } } +fn render_rounded_highlight<'s>( + target: &mut impl Renderer<'s>, + area: Rect, + size: Offset, + inverse: bool, +) { + let bound = theme::BUTTON_OUTLINE; + let left_bottom = area.bottom_center() + Offset::new(-size.x / 2 - bound, bound + 1); + let x_size = size.x + 2 * bound; + let y_size = size.y + 2 * bound; + let outline_size = Offset::new(x_size, y_size); + let outline = Rect::from_bottom_left_and_size(left_bottom, outline_size); + if inverse { + shape::Bar::new(outline) + .with_radius(1) + .with_bg(theme::FG) + .render(target); + } else { + // Draw outline by drawing two rounded rectangles + shape::Bar::new(outline) + .with_radius(1) + .with_bg(theme::FG) + .render(target); + + shape::Bar::new(outline.shrink(1)) + .with_radius(1) + .with_bg(theme::BG) + .render(target); + } +} + fn text_icon_width(text: Option<&str>, icon: Option<Icon>, font: Font) -> i16 { match (text, icon) { (Some(text), Some(icon)) => { @@ -194,6 +262,40 @@ fn paint_text_icon( } } +fn render_text_icon<'s>( + target: &mut impl Renderer<'s>, + area: Rect, + width: i16, + text: Option<&str>, + icon: Option<Icon>, + font: Font, + inverse: bool, +) { + let fg_color = if inverse { theme::BG } else { theme::FG }; + + let mut baseline = area.bottom_center() - Offset::x(width / 2); + if let Some(icon) = icon { + let height_diff = font.visible_text_height("Ay") - icon.toif.height(); + let vertical_offset = Offset::y(-height_diff / 2); + shape::ToifImage::new(baseline + vertical_offset, icon.toif) + .with_align(Alignment2D::BOTTOM_LEFT) + .with_fg(fg_color) + .render(target); + + baseline = baseline + Offset::x(icon.toif.width() + ICON_RIGHT_PADDING); + } + + if let Some(text) = text { + // Possibly shifting the baseline left, when there is a text bearing. + // This is to center the text properly. + baseline = baseline - Offset::x(font.start_x_bearing(text)); + shape::Text::new(baseline, text) + .with_font(font) + .with_fg(fg_color) + .render(target); + } +} + // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs index a507c31602..9d25e5db81 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs @@ -3,6 +3,7 @@ use crate::{ ui::{ component::{Component, Event, EventCtx}, geometry::Rect, + shape::Renderer, }, }; @@ -81,6 +82,10 @@ impl Component for NumberInput { fn paint(&mut self) { self.choice_page.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.choice_page.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs index fc0ca17f93..d3f422a6ee 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs @@ -6,6 +6,7 @@ use crate::{ component::{text::common::TextBox, Child, Component, ComponentExt, Event, EventCtx}, display::Icon, geometry::Rect, + shape::Renderer, util::char_to_string, }, }; @@ -448,6 +449,11 @@ impl Component for PassphraseEntry { self.passphrase_dots.paint(); self.choice_page.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.passphrase_dots.render(target); + self.choice_page.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs index 404e8d8baf..e977e4ea37 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs @@ -6,6 +6,7 @@ use crate::{ component::{text::common::TextBox, Child, Component, ComponentExt, Event, EventCtx}, display::{Font, Icon}, geometry::Rect, + shape::Renderer, }, }; @@ -323,6 +324,12 @@ impl Component for PinEntry<'_> { self.pin_line.paint(); self.choice_page.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.header_line.render(target); + self.pin_line.render(target); + self.choice_page.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs index 23bc9bd1ca..f322c8cf17 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs @@ -4,6 +4,7 @@ use crate::{ ui::{ component::{Component, Event, EventCtx}, geometry::Rect, + shape::Renderer, }, }; @@ -115,6 +116,10 @@ impl Component for SimpleChoice { fn paint(&mut self) { self.choice_page.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.choice_page.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs index 789fa0bd39..27bfd4fffe 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs @@ -4,6 +4,7 @@ use crate::{ ui::{ component::{text::common::TextBox, Child, Component, ComponentExt, Event, EventCtx}, geometry::Rect, + shape::Renderer, util::char_to_string, }, }; @@ -314,6 +315,11 @@ impl Component for WordlistEntry { self.chosen_letters.paint(); self.choice_page.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.chosen_letters.render(target); + self.choice_page.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/loader.rs b/core/embed/rust/src/ui/model_tr/component/loader.rs index dc05d5b8df..799bfb19a9 100644 --- a/core/embed/rust/src/ui/model_tr/component/loader.rs +++ b/core/embed/rust/src/ui/model_tr/component/loader.rs @@ -6,7 +6,9 @@ use crate::{ component::{Child, Component, Event, EventCtx}, constant, display::{self, Color, Font, LOADER_MAX}, - geometry::{Offset, Rect}, + geometry::{Offset, Point, Rect}, + shape, + shape::Renderer, util::animation_disabled, }, }; @@ -164,6 +166,51 @@ impl Loader { invert_from as i16, ); } + + pub fn render_loader<'s>( + &'s self, + target: &mut impl Renderer<'s>, + style: &LoaderStyle, + done: i32, + ) { + let width = self.area.width(); + // NOTE: need to calculate this in `i32`, it would overflow using `i16` + let split_point = (((width as i32 + 1) * done) / (display::LOADER_MAX as i32)) as i16; + let (r_left, r_right) = self.area.split_left(split_point); + let parts = [(r_left, true), (r_right, false)]; + parts.map(|(r, invert)| { + target.in_clip(r, &|target| { + if invert { + shape::Bar::new(self.area) + .with_radius(3) + .with_bg(style.fg_color) + .render(target); + } else { + shape::Bar::new(self.area) + .with_radius(3) + .with_fg(style.fg_color) + .render(target); + } + + let text_color = if invert { + style.bg_color + } else { + style.fg_color + }; + + self.get_text().map(|t| { + let pt = Point::new( + style.font.horz_center(self.area.x0, self.area.x1, t), + style.font.vert_center(self.area.y0, self.area.y1, "A"), + ); + shape::Text::new(pt, t) + .with_font(style.font) + .with_fg(text_color) + .render(target); + }); + }); + }); + } } impl Component for Loader { @@ -223,6 +270,28 @@ impl Component for Loader { } } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // TODO: Consider passing the current instant along with the event -- that way, + // we could synchronize painting across the component tree. Also could be useful + // in automated tests. + // In practice, taking the current instant here is more precise in case some + // other component in the tree takes a long time to draw. + let now = Instant::now(); + + if let State::Initial = self.state { + self.render_loader(target, self.styles.normal, 0); + } else if let State::Grown = self.state { + self.render_loader(target, self.styles.normal, display::LOADER_MAX as i32); + } else { + let progress = self.progress(now); + if let Some(done) = progress { + self.render_loader(target, self.styles.normal, done as i32); + } else { + self.render_loader(target, self.styles.normal, 0); + } + } + } } pub struct LoaderStyleSheet { @@ -323,6 +392,10 @@ impl Component for ProgressLoader { fn paint(&mut self) { self.loader.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.loader.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/page.rs b/core/embed/rust/src/ui/model_tr/component/page.rs index 31e6505e67..935f184c88 100644 --- a/core/embed/rust/src/ui/model_tr/component/page.rs +++ b/core/embed/rust/src/ui/model_tr/component/page.rs @@ -4,6 +4,7 @@ use crate::{ component::{Child, Component, ComponentExt, Event, EventCtx, Pad, PageMsg, Paginate}, display::Color, geometry::{Insets, Rect}, + shape::Renderer, }, }; @@ -215,6 +216,12 @@ where self.content.paint(); self.buttons.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + self.content.render(target); + self.buttons.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/progress.rs b/core/embed/rust/src/ui/model_tr/component/progress.rs index 6b03a27eac..e44e39ed0e 100644 --- a/core/embed/rust/src/ui/model_tr/component/progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/progress.rs @@ -10,7 +10,10 @@ use crate::{ }, constant, display::{self, Font, Icon, LOADER_MAX}, - geometry::Rect, + geometry::{Alignment2D, Offset, Rect}, + model_tr::cshape, + shape, + shape::Renderer, util::animation_disabled, }, }; @@ -151,6 +154,29 @@ impl Component for Progress { self.description.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.title.render(target); + + let area = constant::screen(); + let center = area.center() + Offset::y(self.loader_y_offset); + + if self.indeterminate { + cshape::LoaderStarry::new(center, self.value) + .with_color(theme::FG) + .render(target); + } else { + cshape::LoaderCircular::new(center, self.value) + .with_color(theme::FG) + .render(target); + shape::ToifImage::new(center, self.icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(theme::FG) + .render(target); + } + self.description_pad.render(target); + self.description.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(Self::AREA); diff --git a/core/embed/rust/src/ui/model_tr/component/result.rs b/core/embed/rust/src/ui/model_tr/component/result.rs index 6da84f8432..32f20f418b 100644 --- a/core/embed/rust/src/ui/model_tr/component/result.rs +++ b/core/embed/rust/src/ui/model_tr/component/result.rs @@ -3,6 +3,8 @@ use crate::ui::{ constant::{screen, HEIGHT, WIDTH}, display::{Color, Icon}, geometry::{Alignment2D, Offset, Point, Rect}, + shape, + shape::Renderer, }; const MESSAGE_AREA_START: i16 = 24 + 11; @@ -107,4 +109,17 @@ impl Component for ResultScreen<'_> { self.message_top.paint(); self.message_bottom.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.small_pad.render(target); + + shape::ToifImage::new(screen().top_center() + Offset::y(ICON_TOP), self.icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(self.fg_color) + .render(target); + + self.message_top.render(target); + self.message_bottom.render(target); + } } diff --git a/core/embed/rust/src/ui/model_tr/component/scrollbar.rs b/core/embed/rust/src/ui/model_tr/component/scrollbar.rs index d394da7be2..3e812ee91a 100644 --- a/core/embed/rust/src/ui/model_tr/component/scrollbar.rs +++ b/core/embed/rust/src/ui/model_tr/component/scrollbar.rs @@ -2,6 +2,8 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never, Pad, Paginate}, display, geometry::{Offset, Point, Rect}, + shape, + shape::Renderer, }; use super::super::theme; @@ -103,6 +105,35 @@ impl ScrollBar { } } + /// Create a (seemingly circular) dot given its top left point. + /// Make it full when it is active, otherwise paint just the perimeter and + /// leave center empty. + fn render_dot<'s>(&self, target: &mut impl Renderer<'s>, dot_type: &DotType, top_right: Point) { + let full_square = + Rect::from_top_right_and_size(top_right, Offset::uniform(Self::MAX_DOT_SIZE)); + + match dot_type { + DotType::BigFull => shape::Bar::new(full_square) + .with_radius(2) + .with_bg(theme::FG) + .render(target), + + DotType::Big => shape::Bar::new(full_square) + .with_radius(2) + .with_fg(theme::FG) + .render(target), + + DotType::Middle => shape::Bar::new(full_square.shrink(1)) + .with_radius(1) + .with_fg(theme::FG) + .render(target), + + DotType::Small => shape::Bar::new(full_square.shrink(2)) + .with_bg(theme::FG) + .render(target), + } + } + /// Get a sequence of dots to be drawn, with specifying their appearance. /// Painting only big dots in case of 2 and 3 pages, /// three big and 1 middle in case of 4 pages, @@ -202,6 +233,14 @@ impl ScrollBar { top_right.x -= Self::DOTS_INTERVAL; } } + + fn render_horizontal<'s>(&'s self, target: &mut impl Renderer<'s>) { + let mut top_right = self.pad.area.top_right(); + for dot in self.get_drawable_dots().iter().rev() { + self.render_dot(target, dot, top_right); + top_right.x -= Self::DOTS_INTERVAL; + } + } } impl Component for ScrollBar { @@ -233,6 +272,17 @@ impl Component for ScrollBar { self.pad.paint(); self.paint_horizontal(); } + + /// Displaying one dot for each page. + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // Not showing the scrollbar dot when there is only one page + if self.page_count <= 1 { + return; + } + + self.pad.render(target); + self.render_horizontal(target); + } } impl Paginate for ScrollBar { diff --git a/core/embed/rust/src/ui/model_tr/component/share_words.rs b/core/embed/rust/src/ui/model_tr/component/share_words.rs index 24283950a1..c9ca066675 100644 --- a/core/embed/rust/src/ui/model_tr/component/share_words.rs +++ b/core/embed/rust/src/ui/model_tr/component/share_words.rs @@ -3,10 +3,13 @@ use crate::{ translations::TR, ui::{ component::{ - text::util::text_multiline, Child, Component, Event, EventCtx, Never, Paginate, + text::util::{text_multiline, text_multiline2}, + Child, Component, Event, EventCtx, Never, Paginate, }, display::Font, geometry::{Alignment, Offset, Rect}, + shape, + shape::Renderer, }, }; @@ -95,6 +98,20 @@ where ); } + /// Display the final page with user confirmation. + fn render_final_page<'s>(&'s self, target: &mut impl Renderer<'s>) { + let final_text = self.get_final_text(); + text_multiline2( + target, + self.area.split_top(INFO_TOP_OFFSET).1, + final_text.as_str().into(), + Font::NORMAL, + theme::FG, + theme::BG, + Alignment::Start, + ); + } + /// Display current set of recovery words. fn paint_words(&mut self) { let mut y_offset = 0; @@ -112,6 +129,32 @@ where display_left(baseline + Offset::x(WORD_X_OFFSET), word, WORD_FONT); } } + + /// Display current set of recovery words. + fn render_words<'s>(&'s self, target: &mut impl Renderer<'s>) { + let mut y_offset = 0; + // Showing the word index and the words itself + for i in 0..WORDS_PER_PAGE { + y_offset += NUMBER_FONT.line_height() + EXTRA_LINE_HEIGHT; + let index = self.word_index() + i; + if index >= self.share_words.len() { + break; + } + let word = &self.share_words[index]; + let baseline = self.area.top_left() + Offset::y(y_offset); + let ordinal = build_string!(5, inttostr!(index as u8 + 1), "."); + + shape::Text::new(baseline + Offset::x(NUMBER_X_OFFSET), &ordinal) + .with_font(NUMBER_FONT) + .with_fg(theme::FG) + .render(target); + + shape::Text::new(baseline + Offset::x(WORD_X_OFFSET), word.as_ref()) + .with_font(WORD_FONT) + .with_fg(theme::FG) + .render(target); + } + } } impl<T> Component for ShareWords<T> @@ -147,6 +190,17 @@ where self.paint_words(); } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // Showing scrollbar in all cases + // Individual pages are responsible for not colliding with it + self.scrollbar.render(target); + if self.is_final_page() { + self.render_final_page(target); + } else { + self.render_words(target); + } + } } impl<T> Paginate for ShareWords<T> diff --git a/core/embed/rust/src/ui/model_tr/component/show_more.rs b/core/embed/rust/src/ui/model_tr/component/show_more.rs index 717481d902..c2a10e1b55 100644 --- a/core/embed/rust/src/ui/model_tr/component/show_more.rs +++ b/core/embed/rust/src/ui/model_tr/component/show_more.rs @@ -3,6 +3,7 @@ use crate::{ ui::{ component::{Child, Component, Event, EventCtx}, geometry::{Insets, Rect}, + shape::Renderer, }, }; @@ -77,6 +78,11 @@ where self.content.paint(); self.buttons.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.content.render(target); + self.buttons.render(target); + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/title.rs b/core/embed/rust/src/ui/model_tr/component/title.rs index f75d488df9..a34e4a288d 100644 --- a/core/embed/rust/src/ui/model_tr/component/title.rs +++ b/core/embed/rust/src/ui/model_tr/component/title.rs @@ -4,7 +4,9 @@ use crate::{ ui::{ component::{Component, Event, EventCtx, Marquee, Never}, display, - geometry::{Offset, Rect}, + geometry::{Alignment, Offset, Rect}, + shape, + shape::Renderer, }, }; @@ -59,6 +61,22 @@ impl Title { }); } + /// Display title/header at the top left of the given area. + pub fn render_header_left<'s>( + target: &mut impl Renderer<'s>, + title: &TString<'static>, + area: Rect, + ) { + let text_height = theme::FONT_HEADER.text_height(); + let title_baseline = area.top_left() + Offset::y(text_height - 1); + title.map(|s| { + shape::Text::new(title_baseline, s) + .with_font(theme::FONT_HEADER) + .with_fg(theme::FG) + .render(target); + }); + } + /// Display title/header centered at the top of the given area. pub fn paint_header_centered(title: &TString<'static>, area: Rect) { let text_height = theme::FONT_HEADER.text_height(); @@ -67,6 +85,23 @@ impl Title { display::text_center(title_baseline, s, theme::FONT_HEADER, theme::FG, theme::BG) }); } + + /// Display title/header centered at the top of the given area. + pub fn render_header_centered<'s>( + target: &mut impl Renderer<'s>, + title: &TString<'static>, + area: Rect, + ) { + let text_height = theme::FONT_HEADER.text_height(); + let title_baseline = area.top_center() + Offset::y(text_height - 1); + title.map(|s| { + shape::Text::new(title_baseline, s) + .with_align(Alignment::Center) + .with_font(theme::FONT_HEADER) + .with_fg(theme::FG) + .render(target); + }); + } } impl Component for Title { @@ -99,6 +134,16 @@ impl Component for Title { Self::paint_header_left(&self.title, self.area); } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + if self.needs_marquee { + self.marquee.render(target); + } else if self.centered { + Self::render_header_centered(target, &self.title, self.area); + } else { + Self::render_header_left(target, &self.title, self.area); + } + } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs b/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs index e9ae5985b9..a824d85e77 100644 --- a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs @@ -1,6 +1,8 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never}, geometry::{Alignment2D, Offset, Rect}, + shape, + shape::Renderer, }; use super::super::theme; @@ -52,6 +54,30 @@ impl Component for WelcomeScreen { theme::BG, ); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::ToifImage::new( + self.area.bottom_center() - Offset::y(5), + theme::ICON_DEVICE_NAME.toif, + ) + .with_align(Alignment2D::BOTTOM_CENTER) + .with_fg(theme::FG) + .render(target); + + let icon = if self.empty_lock { + theme::ICON_LOGO_EMPTY + } else { + theme::ICON_LOGO + }; + + shape::ToifImage::new( + self.area.top_center() + Offset::y(ICON_TOP_MARGIN), + icon.toif, + ) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(theme::FG) + .render(target); + } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tr/cshape/dotted_line.rs b/core/embed/rust/src/ui/model_tr/cshape/dotted_line.rs new file mode 100644 index 0000000000..db7dc56943 --- /dev/null +++ b/core/embed/rust/src/ui/model_tr/cshape/dotted_line.rs @@ -0,0 +1,87 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + shape::{Canvas, DrawingCache, Renderer, Shape, ShapeClone}, +}; + +use without_alloc::alloc::LocalAllocLeakExt; + +// Shape of horizontal solid/dotted line +pub struct HorizontalLine { + /// Position of the left-top point + pos: Point, + // Length of the line + length: i16, + /// Line thickness (default 1) + thickness: u8, + /// Steps of dots (default 0 - full line) + step: u8, + /// Color + color: Color, +} + +impl HorizontalLine { + pub fn new(pos: Point, length: i16) -> Self { + Self { + pos, + length, + thickness: 1, + step: 0, + color: Color::white(), + } + } + + pub fn with_color(self, color: Color) -> Self { + Self { color, ..self } + } + + pub fn with_thickness(self, thickness: u8) -> Self { + Self { thickness, ..self } + } + + pub fn with_step(self, step: u8) -> Self { + Self { step, ..self } + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } +} + +impl<'s> Shape<'s> for HorizontalLine { + fn bounds(&self) -> Rect { + let size = Offset::new(self.length, self.thickness as i16); + Rect::from_top_left_and_size(self.pos, size) + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache) { + if self.step <= self.thickness { + // Solid line + let size = Offset::new(self.length, self.thickness as i16); + let r = Rect::from_top_left_and_size(self.pos, size); + canvas.fill_rect(r, self.color, 255); + } else { + // Dotted line + let thickness = self.thickness as i16; + for x in (0..self.length - thickness).step_by(self.step as usize) { + let r = Rect::from_top_left_and_size( + self.pos + Offset::x(x), + Offset::uniform(thickness), + ); + canvas.fill_rect(r, self.color, 255); + } + } + } +} + +impl<'s> ShapeClone<'s> for HorizontalLine { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape<'s>> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(HorizontalLine { ..self })) + } +} diff --git a/core/embed/rust/src/ui/model_tr/cshape/loader_circular.rs b/core/embed/rust/src/ui/model_tr/cshape/loader_circular.rs new file mode 100644 index 0000000000..92a4b0a94e --- /dev/null +++ b/core/embed/rust/src/ui/model_tr/cshape/loader_circular.rs @@ -0,0 +1,116 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + shape::{Canvas, DrawingCache, Renderer, Shape, ShapeClone}, +}; + +use without_alloc::alloc::LocalAllocLeakExt; + +static CELLS: [Offset; 24] = [ + Offset::new(1, -4), + Offset::new(2, -4), + Offset::new(3, -3), + Offset::new(4, -2), + Offset::new(4, -1), + Offset::new(4, 0), + Offset::new(4, 1), + Offset::new(4, 2), + Offset::new(3, 3), + Offset::new(2, 4), + Offset::new(1, 4), + Offset::new(0, 4), + Offset::new(-1, 4), + Offset::new(-2, 4), + Offset::new(-3, 3), + Offset::new(-4, 2), + Offset::new(-4, 1), + Offset::new(-4, 0), + Offset::new(-4, -1), + Offset::new(-4, -2), + Offset::new(-3, -3), + Offset::new(-2, -4), + Offset::new(-1, -4), + Offset::new(0, -4), +]; + +pub struct LoaderCircular { + /// Position of point (0,0) + pos: Point, + /// Value 0..1000 + value: u16, + /// Color + color: Color, + /// Scale (length of square size) + scale: i16, +} + +impl LoaderCircular { + pub fn new(pos: Point, value: u16) -> Self { + Self { + pos, + value, + color: Color::white(), + scale: 2, + } + } + + pub fn with_color(self, color: Color) -> Self { + Self { color, ..self } + } + + pub fn with_scale(self, scale: i16) -> Self { + Self { scale, ..self } + } + + fn cells(&self) -> &[Offset] { + let value = self.value.clamp(0, 1000); + let last = (CELLS.len() * value as usize) / 1000; + &CELLS[..last] + } + + fn cell_rect(&self, offset: Offset) -> Rect { + let pt = Point::new( + self.pos.x + (offset.x * self.scale) - self.scale / 2, + self.pos.y + (offset.y * self.scale) - self.scale / 2, + ); + Rect::from_top_left_and_size(pt, Offset::uniform(self.scale)) + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } +} + +impl<'s> Shape<'s> for LoaderCircular { + fn bounds(&self) -> Rect { + let cells = self.cells(); + + if cells.is_empty() { + Rect::zero() + } else { + let mut b = self.cell_rect(cells[0]); + cells[1..] + .iter() + .for_each(|c| b = b.union(self.cell_rect(*c))); + b + } + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache) { + for c in self.cells().iter() { + canvas.fill_rect(self.cell_rect(*c), self.color, 255); + } + } +} + +impl<'s> ShapeClone<'s> for LoaderCircular { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(LoaderCircular { ..self })) + } +} diff --git a/core/embed/rust/src/ui/model_tr/cshape/loader_small.rs b/core/embed/rust/src/ui/model_tr/cshape/loader_small.rs new file mode 100644 index 0000000000..a6b23ae3f7 --- /dev/null +++ b/core/embed/rust/src/ui/model_tr/cshape/loader_small.rs @@ -0,0 +1,88 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + shape::{Canvas, DrawingCache, Renderer, Shape, ShapeClone}, +}; + +use without_alloc::alloc::LocalAllocLeakExt; + +use core::f32::consts::SQRT_2; + +const STAR_COUNT: usize = 8; +const RADIUS: i16 = 3; +const DIAGONAL: i16 = ((RADIUS as f32 * SQRT_2) / 2_f32) as i16; + +// Offset of the normal point and then the extra offset for the main point +static STARS: [(Offset, Offset); STAR_COUNT] = [ + (Offset::y(-RADIUS), Offset::y(-1)), + (Offset::new(DIAGONAL, -DIAGONAL), Offset::new(1, -1)), + (Offset::x(RADIUS), Offset::x(1)), + (Offset::new(DIAGONAL, DIAGONAL), Offset::new(1, 1)), + (Offset::y(RADIUS), Offset::y(1)), + (Offset::new(-DIAGONAL, DIAGONAL), Offset::new(-1, 1)), + (Offset::x(-RADIUS), Offset::x(-1)), + (Offset::new(-DIAGONAL, -DIAGONAL), Offset::new(-1, -1)), +]; + +/// A shape of a TS3 small loader +pub struct LoaderSmall { + /// Position of point (0,0) + pos: Point, + /// Value 0..1000 + value: u16, + /// Color + color: Color, +} + +impl LoaderSmall { + pub fn new(pos: Point, value: u16) -> Self { + Self { + pos, + value, + color: Color::white(), + } + } + + pub fn with_color(self, color: Color) -> Self { + Self { color, ..self } + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } +} + +impl Shape<'_> for LoaderSmall { + fn bounds(&self) -> Rect { + Rect::from_top_left_and_size(self.pos, Offset::uniform(1)).expand(RADIUS + 1) + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache) { + // Calculate index of the highlighted star + let sel_idx = (STAR_COUNT * self.value as usize / 1000) % STAR_COUNT; + + for (i, (star_offset, hili_offset)) in STARS.iter().enumerate() { + if (sel_idx + 1) % STAR_COUNT != i { + // Draw a star if it's not behind the highlighted one (clockwise) + let star_pos = self.pos + *star_offset; + canvas.draw_pixel(star_pos, self.color); + if sel_idx == i { + // Higlight the main star + canvas.draw_pixel(star_pos + *hili_offset, self.color); + } + } + } + } +} + +impl<'s> ShapeClone<'s> for LoaderSmall { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(LoaderSmall { ..self })) + } +} diff --git a/core/embed/rust/src/ui/model_tr/cshape/loader_starry.rs b/core/embed/rust/src/ui/model_tr/cshape/loader_starry.rs new file mode 100644 index 0000000000..0f0d470c75 --- /dev/null +++ b/core/embed/rust/src/ui/model_tr/cshape/loader_starry.rs @@ -0,0 +1,105 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + shape::{Canvas, DrawingCache, Renderer, Shape, ShapeClone}, +}; + +use without_alloc::alloc::LocalAllocLeakExt; + +use core::f32::consts::SQRT_2; + +const STAR_COUNT: usize = 8; +const STAR_SMALL: i16 = 2; +const STAR_MEDIUM: i16 = 4; +const STAR_LARGE: i16 = 6; + +const RADIUS: i16 = 13; +const DIAGONAL: i16 = ((RADIUS as f32 * SQRT_2) / 2_f32) as i16; + +// Offset of the normal point and then the extra offset for the main point +static STARS: [Offset; STAR_COUNT] = [ + Offset::y(-RADIUS), + Offset::new(DIAGONAL, -DIAGONAL), + Offset::x(RADIUS), + Offset::new(DIAGONAL, DIAGONAL), + Offset::y(RADIUS), + Offset::new(-DIAGONAL, DIAGONAL), + Offset::x(-RADIUS), + Offset::new(-DIAGONAL, -DIAGONAL), +]; + +/// A shape of a TS3 starry loader +pub struct LoaderStarry { + /// Position of point (0,0) + pos: Point, + /// Value 0..1000 + value: u16, + /// Color + color: Color, +} + +impl LoaderStarry { + pub fn new(pos: Point, value: u16) -> Self { + Self { + pos, + value, + color: Color::white(), + } + } + + pub fn with_color(self, color: Color) -> Self { + Self { color, ..self } + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } + + fn draw_large_star(&self, canvas: &mut dyn Canvas, offset: Offset) { + let r = Rect::from_center_and_size(self.pos + offset, Offset::uniform(STAR_LARGE)); + canvas.fill_round_rect(r, 2, self.color, 255); + } + + fn draw_medium_star(&self, canvas: &mut dyn Canvas, offset: Offset) { + let r = Rect::from_center_and_size(self.pos + offset, Offset::uniform(STAR_MEDIUM)); + canvas.fill_round_rect(r, 1, self.color, 255); + } + + fn draw_small_star(&self, canvas: &mut dyn Canvas, offset: Offset) { + let r = Rect::from_center_and_size(self.pos + offset, Offset::uniform(STAR_SMALL)); + canvas.fill_rect(r, self.color, 255); + } +} + +impl Shape<'_> for LoaderStarry { + fn bounds(&self) -> Rect { + Rect::from_top_left_and_size(self.pos, Offset::uniform(1)).expand(RADIUS + STAR_LARGE) + } + + fn cleanup(&mut self, _cache: &DrawingCache) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache) { + // Calculate the index of the big star + let sel_idx = (STAR_COUNT * self.value as usize / 1000) % STAR_COUNT; + + for (i, c) in STARS.iter().enumerate() { + if i == sel_idx { + self.draw_large_star(canvas, *c); + } else if (sel_idx + 1) % 8 == i || (sel_idx - 1) % 8 == i { + self.draw_medium_star(canvas, *c); + } else { + self.draw_small_star(canvas, *c); + } + } + } +} + +impl<'s> ShapeClone<'s> for LoaderStarry { + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape> + where + T: LocalAllocLeakExt<'s>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(LoaderStarry { ..self })) + } +} diff --git a/core/embed/rust/src/ui/model_tr/cshape/mod.rs b/core/embed/rust/src/ui/model_tr/cshape/mod.rs new file mode 100644 index 0000000000..99d5db684a --- /dev/null +++ b/core/embed/rust/src/ui/model_tr/cshape/mod.rs @@ -0,0 +1,9 @@ +pub mod dotted_line; +pub mod loader_circular; +pub mod loader_small; +pub mod loader_starry; + +pub use dotted_line::HorizontalLine; +pub use loader_circular::LoaderCircular; +pub use loader_small::LoaderSmall; +pub use loader_starry::LoaderStarry; diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 708f50b773..7342274bb6 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -6,15 +6,8 @@ use crate::{ error::Error, maybe_trace::MaybeTrace, micropython::{ - buffer::{get_buffer, StrBuffer}, - gc::Gc, - iter::IterBuf, - list::List, - map::Map, - module::Module, - obj::Obj, - qstr::Qstr, - util, + buffer::StrBuffer, gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, + qstr::Qstr, util, }, strutil::TString, translations::TR, @@ -34,7 +27,7 @@ use crate::{ }, ComponentExt, FormattedText, Label, LineBreaking, Timeout, }, - display, geometry, + geometry, layout::{ obj::{ComponentMsgObj, LayoutObj}, result::{CANCELLED, CONFIRMED, INFO}, @@ -216,10 +209,7 @@ impl<'a> ComponentMsgObj for Lockscreen<'a> { } } -impl<'a, F> ComponentMsgObj for ConfirmHomescreen<F> -where - F: Fn() -> &'a [u8], -{ +impl ComponentMsgObj for ConfirmHomescreen { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { CancelConfirmMsg::Confirmed => Ok(CONFIRMED.as_obj()), @@ -400,15 +390,8 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let data: Obj = kwargs.get(Qstr::MP_QSTR_image)?; - - // Layout needs to hold the Obj to play nice with GC. Obj is resolved to &[u8] - // in every paint pass. - // SAFETY: We expect no existing mutable reference. Resulting reference is - // discarded before returning to micropython. - let buffer_func = move || unsafe { unwrap!(get_buffer(data)) }; - - let obj = LayoutObj::new(ConfirmHomescreen::new(title, buffer_func))?; + let image: Obj = kwargs.get(Qstr::MP_QSTR_image)?; + let obj = LayoutObj::new(ConfirmHomescreen::new(title, image.try_into()?))?; Ok(obj.into()) }; @@ -1615,13 +1598,8 @@ extern "C" fn new_confirm_firmware_update( pub extern "C" fn upy_check_homescreen_format(data: Obj) -> Obj { let block = || { - // SAFETY: buffer does not outlive this function - let buffer = unsafe { get_buffer(data) }?; - - Ok(display::toif::Toif::new(buffer) - .map(|toif| check_homescreen_format(&toif)) - .unwrap_or(false) - .into()) + let image = data.try_into()?; + Ok(check_homescreen_format(image).into()) }; unsafe { util::try_or_raise(block) } diff --git a/core/embed/rust/src/ui/model_tr/mod.rs b/core/embed/rust/src/ui/model_tr/mod.rs index cec56de9d6..b68581716c 100644 --- a/core/embed/rust/src/ui/model_tr/mod.rs +++ b/core/embed/rust/src/ui/model_tr/mod.rs @@ -5,6 +5,7 @@ pub mod bootloader; pub mod common_messages; pub mod component; pub mod constant; +pub mod cshape; #[cfg(feature = "micropython")] pub mod layout; mod screens; diff --git a/core/embed/rust/src/ui/model_tr/screens.rs b/core/embed/rust/src/ui/model_tr/screens.rs index 4855d30743..9bf323b681 100644 --- a/core/embed/rust/src/ui/model_tr/screens.rs +++ b/core/embed/rust/src/ui/model_tr/screens.rs @@ -2,11 +2,21 @@ use crate::ui::{ component::base::Component, constant::screen, display, model_tr::component::WelcomeScreen, }; +#[cfg(feature = "new_rendering")] +use crate::ui::{display::Color, shape::render_on_display}; + use super::{component::ErrorScreen, constant}; pub fn screen_fatal_error(title: &str, msg: &str, footer: &str) { let mut frame = ErrorScreen::new(title.into(), msg.into(), footer.into()); frame.place(constant::screen()); + + #[cfg(feature = "new_rendering")] + render_on_display(None, Some(Color::black()), |target| { + frame.render(target); + }); + + #[cfg(not(feature = "new_rendering"))] frame.paint(); display::refresh(); } @@ -14,7 +24,20 @@ pub fn screen_fatal_error(title: &str, msg: &str, footer: &str) { pub fn screen_boot_stage_2() { let mut frame = WelcomeScreen::new(false); frame.place(screen()); - display::sync(); - frame.paint(); - display::refresh(); + + #[cfg(feature = "new_rendering")] + { + display::sync(); + render_on_display(None, Some(Color::black()), |target| { + frame.render(target); + }); + display::refresh(); + } + + #[cfg(not(feature = "new_rendering"))] + { + display::sync(); + frame.paint(); + display::refresh(); + } } diff --git a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs b/core/embed/rust/src/ui/model_tt/bootloader/intro.rs index 95b61ddaff..c52d8a6804 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/intro.rs @@ -13,6 +13,7 @@ use crate::{ CONTENT_PADDING, CORNER_BUTTON_AREA, MENU32, TEXT_NORMAL, TEXT_WARNING, TITLE_AREA, }, }, + shape::Renderer, }, }; @@ -105,6 +106,15 @@ impl<'a> Component for Intro<'a> { self.menu.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.title.render(target); + self.text.render(target); + self.warn.render(target); + self.host.render(target); + self.menu.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.menu.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs b/core/embed/rust/src/ui/model_tt/bootloader/menu.rs index 7d0d664b49..f542dea4b0 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/menu.rs @@ -13,6 +13,7 @@ use crate::{ X32, }, }, + shape::Renderer, }, }; @@ -108,6 +109,14 @@ impl Component for Menu { self.reset.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.title.render(target); + self.close.render(target); + self.reboot.render(target); + self.reset.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.close.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs index 57b88c8d4e..de6bbf49d6 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs @@ -23,12 +23,31 @@ use super::{ FIRE40, RESULT_FW_INSTALL, RESULT_INITIAL, RESULT_WIPE, TEXT_BOLD, TEXT_NORMAL, TEXT_WIPE_BOLD, TEXT_WIPE_NORMAL, WARNING40, WELCOME_COLOR, X24, }, - BACKLIGHT_NORMAL, BLACK, FG, WHITE, + BACKLIGHT_NORMAL, FG, }, ModelTTFeatures, }; use crate::ui::{ui_features::UIFeaturesBootloader, UIFeaturesCommon}; + +#[cfg(not(feature = "new_rendering"))] +use super::theme::BLACK; + +#[cfg(feature = "new_rendering")] +use crate::ui::{ + constant, + display::toif::Toif, + geometry::{Alignment, Alignment2D, Offset}, + shape, + shape::render_on_display, +}; + +#[cfg(feature = "new_rendering")] +use ufmt::uwrite; + +#[cfg(feature = "new_rendering")] +use super::theme::bootloader::BLD_WARN_COLOR; + use intro::Intro; use menu::Menu; @@ -43,6 +62,7 @@ const RECONNECT_MESSAGE: &str = "PLEASE RECONNECT\nTHE DEVICE"; const SCREEN: Rect = ModelTTFeatures::SCREEN; impl ModelTTFeatures { + #[cfg(not(feature = "new_rendering"))] fn screen_progress( text: &str, progress: u16, @@ -70,6 +90,62 @@ impl ModelTTFeatures { } } + #[cfg(feature = "new_rendering")] + fn screen_progress( + text: &str, + progress: u16, + initialize: bool, + fg_color: Color, + bg_color: Color, + icon: Option<(Icon, Color)>, + ) { + if initialize { + Self::fadeout(); + } + display::sync(); + + render_on_display(None, Some(bg_color), |target| { + shape::Text::new(Point::new(SCREEN.width() / 2, SCREEN.height() - 45), text) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(fg_color) + .render(target); + + let center = SCREEN.center() + Offset::y(-20); + + let inactive_color = bg_color.blend(fg_color, 85); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(fg_color) + .with_end_angle(((progress as i32 * shape::PI4 as i32 * 8) / 1000) as i16) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER + 2) + .with_bg(fg_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER) + .with_bg(bg_color) + .render(target); + + if let Some((icon, color)) = icon { + shape::ToifImage::new(center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(color) + .render(target); + } + }); + + display::refresh(); + if initialize { + Self::fadein(); + } + } + fn screen_install_success_bld(msg: &str, complete_draw: bool) { let mut frame = ResultScreen::new( &RESULT_FW_INSTALL, @@ -99,12 +175,13 @@ impl UIFeaturesBootloader for ModelTTFeatures { show(&mut frame, true); } + #[cfg(not(feature = "new_rendering"))] fn bld_continue_label(bg_color: Color) { display::text_center( Point::new(SCREEN.width() / 2, SCREEN.height() - 5), "click to continue ...", Font::NORMAL, - WHITE, + BLD_FG, bg_color, ); } @@ -126,7 +203,6 @@ impl UIFeaturesBootloader for ModelTTFeatures { } else { Self::screen_install_success_bld(reboot_msg.as_str(), complete_draw) } - display::refresh(); } fn screen_install_fail() { @@ -250,6 +326,7 @@ impl UIFeaturesBootloader for ModelTTFeatures { Self::fadeout(); } + #[cfg(not(feature = "new_rendering"))] display::rect_fill(SCREEN, BLACK); let mut frame = WelcomeScreen::new(true); @@ -260,7 +337,6 @@ impl UIFeaturesBootloader for ModelTTFeatures { } else { display::set_backlight(BACKLIGHT_NORMAL); } - display::refresh(); } fn screen_wipe_progress(progress: u16, initialize: bool) { @@ -317,4 +393,89 @@ impl UIFeaturesBootloader for ModelTTFeatures { ); show(&mut frame, true); } + + #[cfg(feature = "new_rendering")] + fn screen_boot( + warning: bool, + vendor_str: Option<&str>, + version: [u8; 4], + vendor_img: &[u8], + wait: i32, + ) { + let bg_color = if warning { BLD_WARN_COLOR } else { BLD_BG }; + + display::sync(); + + render_on_display(None, Some(bg_color), |target| { + // Draw vendor image if it's valid and has size of 120x120 + if let Ok(toif) = Toif::new(vendor_img) { + if (toif.width() == 120) && (toif.height() == 120) { + // Image position depends on the vendor string presence + let pos = if vendor_str.is_some() { + Point::new(SCREEN.width() / 2, 30) + } else { + Point::new(SCREEN.width() / 2, 60) + }; + + shape::ToifImage::new(pos, toif) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(BLD_FG) + .render(target); + } + } + + // Draw vendor string if present + if let Some(text) = vendor_str { + let pos = Point::new(SCREEN.width() / 2, SCREEN.height() - 5 - 50); + shape::Text::new(pos, text) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) //COLOR_BL_BG + .render(target); + + let pos = Point::new(SCREEN.width() / 2, SCREEN.height() - 5 - 25); + + let mut version_text: BootloaderString = String::new(); + unwrap!(uwrite!( + version_text, + "{}.{}.{}", + version[0], + version[1], + version[2] + )); + + shape::Text::new(pos, version_text.as_str()) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + + // Draw a message + match wait.cmp(&0) { + core::cmp::Ordering::Equal => {} + core::cmp::Ordering::Greater => { + let mut text: BootloaderString = String::new(); + unwrap!(uwrite!(text, "starting in {} s", wait)); + + let pos = Point::new(SCREEN.width() / 2, SCREEN.height() - 5); + shape::Text::new(pos, text.as_str()) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + core::cmp::Ordering::Less => { + let pos = Point::new(SCREEN.width() / 2, SCREEN.height() - 5); + shape::Text::new(pos, "click to continue ...") + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(BLD_FG) + .render(target); + } + } + }); + + display::refresh(); + } } diff --git a/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs b/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs index 5a84bccfea..0e2e3302fb 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs @@ -1,12 +1,14 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never, Pad}, constant::screen, - display::{self, Font, Icon}, - geometry::{Alignment2D, Offset, Rect}, + display::{self, toif::Toif, Font, Icon}, + geometry::{Alignment, Alignment2D, Offset, Rect}, model_tt::theme::{ bootloader::{START_URL, WELCOME_COLOR}, BLACK, GREY_MEDIUM, WHITE, }, + shape, + shape::Renderer, }; pub struct Welcome { @@ -56,4 +58,26 @@ impl Component for Welcome { BLACK, ); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + + shape::Text::new(screen().top_center() + Offset::y(102), "Get started with") + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(GREY_MEDIUM) + .render(target); + + shape::Text::new(screen().top_center() + Offset::y(126), "your Trezor at") + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(GREY_MEDIUM) + .render(target); + + let icon = unwrap!(Toif::new(START_URL)); + shape::ToifImage::new(screen().top_center() + Offset::y(135), icon) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(WHITE) + .render(target); + } } diff --git a/core/embed/rust/src/ui/model_tt/component/address_details.rs b/core/embed/rust/src/ui/model_tt/component/address_details.rs index b325169b48..851ac55252 100644 --- a/core/embed/rust/src/ui/model_tt/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tt/component/address_details.rs @@ -10,6 +10,7 @@ use crate::{ Component, Event, EventCtx, Paginate, Qr, }, geometry::Rect, + shape::Renderer, }, }; @@ -176,6 +177,14 @@ impl Component for AddressDetails { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + match self.current_page { + 0 => self.qr_code.render(target), + 1 => self.details.render(target), + _ => self.xpub_view.render(target), + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { match self.current_page { diff --git a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs index 9ad7f1517f..3bd1de1616 100644 --- a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs @@ -18,6 +18,8 @@ use crate::{ WHITE, }, }, + shape, + shape::Renderer, }, }; @@ -237,6 +239,40 @@ impl Component for Confirm<'_> { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.content_pad.render(target); + + if let Some(info) = self.info.as_ref() { + if self.show_info { + info.close_button.render(target); + info.title.render(target); + info.text.render(target); + self.left_button.render(target); + self.right_button.render(target); + // short-circuit before painting the main components + return; + } else { + info.info_button.render(target); + // pass through to the rest of the paint + } + } + + self.message.render(target); + self.alert.render(target); + self.left_button.render(target); + self.right_button.render(target); + match &self.title { + ConfirmTitle::Text(label) => label.render(target), + ConfirmTitle::Icon(icon) => { + shape::ToifImage::new(Point::new(screen().center().x, ICON_TOP), icon.toif) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(WHITE) + .render(target); + } + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.left_button.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/component/button.rs b/core/embed/rust/src/ui/model_tt/component/button.rs index 3517053472..46a11a2ae9 100644 --- a/core/embed/rust/src/ui/model_tt/component/button.rs +++ b/core/embed/rust/src/ui/model_tt/component/button.rs @@ -10,6 +10,8 @@ use crate::{ display::{self, toif::Icon, Color, Font}, event::TouchEvent, geometry::{Alignment2D, Insets, Offset, Point, Rect}, + shape, + shape::Renderer, }, }; @@ -194,6 +196,18 @@ impl Button { } } + pub fn render_background<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) { + match &self.content { + ButtonContent::IconBlend(_, _, _) => {} + _ => shape::Bar::new(self.area) + .with_bg(style.button_color) + .with_fg(style.border_color) + .with_thickness(style.border_width) + .with_radius(style.border_radius as i16) + .render(target), + } + } + pub fn paint_content(&self, style: &ButtonStyle) { match &self.content { ButtonContent::Empty => {} @@ -232,6 +246,45 @@ impl Button { ), } } + + pub fn render_content<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) { + match &self.content { + ButtonContent::Empty => {} + ButtonContent::Text(text) => { + let width = text.map(|c| style.font.text_width(c)); + let height = style.font.text_height(); + let start_of_baseline = self.area.center() + + Offset::new(-width / 2, height / 2) + + Offset::y(Self::BASELINE_OFFSET); + text.map(|text| { + shape::Text::new(start_of_baseline, text) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + }); + } + ButtonContent::Icon(icon) => { + shape::ToifImage::new(self.area.center(), icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(style.text_color) + .render(target); + } + ButtonContent::IconAndText(child) => { + child.render(target, self.area, self.style(), Self::BASELINE_OFFSET); + } + ButtonContent::IconBlend(bg, fg, offset) => { + shape::Bar::new(self.area) + .with_bg(style.background_color) + .render(target); + shape::ToifImage::new(self.area.top_left(), bg.toif) + .with_fg(style.button_color) + .render(target); + shape::ToifImage::new(self.area.top_left() + *offset, fg.toif) + .with_fg(style.text_color) + .render(target); + } + } + } } impl Component for Button { @@ -324,6 +377,12 @@ impl Component for Button { self.paint_content(style); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let style = self.style(); + self.render_background(target, style); + self.render_content(target, style); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area); @@ -583,4 +642,52 @@ impl IconText { ); } } + + pub fn render<'s>( + &self, + target: &mut impl Renderer<'s>, + area: Rect, + style: &ButtonStyle, + baseline_offset: i16, + ) { + let width = style.font.text_width(self.text); + let height = style.font.text_height(); + + let mut use_icon = false; + let mut use_text = false; + + let mut icon_pos = Point::new( + area.top_left().x + ((Self::ICON_SPACE + Self::ICON_MARGIN) / 2), + area.center().y, + ); + let mut text_pos = + area.center() + Offset::new(-width / 2, height / 2) + Offset::y(baseline_offset); + + if area.width() > (Self::ICON_SPACE + Self::TEXT_MARGIN + width) { + //display both icon and text + text_pos = Point::new(area.top_left().x + Self::ICON_SPACE, text_pos.y); + use_text = true; + use_icon = true; + } else if area.width() > (width + Self::TEXT_MARGIN) { + use_text = true; + } else { + //if we can't fit the text, retreat to centering the icon + icon_pos = area.center(); + use_icon = true; + } + + if use_text { + shape::Text::new(text_pos, self.text) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + } + + if use_icon { + shape::ToifImage::new(icon_pos, self.icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(style.text_color) + .render(target); + } + } } diff --git a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs index 7cb492d1d5..d53d075b1a 100644 --- a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs @@ -7,11 +7,13 @@ use crate::{ translations::TR, ui::{ component::{ - base::Never, painter, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, - Split, + base::Never, Bar, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, Split, }, + constant, display::loader::{loader_circular_uncompress, LoaderDimensions}, - geometry::{Insets, Rect}, + geometry::{Insets, Offset, Rect}, + shape, + shape::Renderer, util::animation_disabled, }, }; @@ -42,7 +44,7 @@ impl<U> CoinJoinProgress<U> { let style = theme::label_coinjoin_progress(); let label = Label::centered(TR::coinjoin__title_do_not_disconnect.into(), style) .vertically_centered(); - let bg = painter::rect_painter(style.background_color, theme::BG); + let bg = Bar::new(style.background_color, theme::BG, 2); let inner = (bg, label); CoinJoinProgress::with_background(text, inner, indeterminate) } @@ -122,6 +124,40 @@ where ); self.label.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.content.render(target); + + let center = constant::screen().center() + Offset::y(LOADER_OFFSET); + let active_color = theme::FG; + let background_color = theme::BG; + let inactive_color = background_color.blend(active_color, 85); + + let start = (self.value as i16 - 100) % 1000; + let end = (self.value as i16 + 100) % 1000; + let start = ((start as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let end = ((end as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + + shape::Circle::new(center, LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + shape::Circle::new(center, LOADER_OUTER) + .with_bg(active_color) + .with_start_angle(start) + .with_end_angle(end) + .render(target); + + shape::Circle::new(center, LOADER_INNER + 2) + .with_bg(active_color) + .render(target); + + shape::Circle::new(center, LOADER_INNER) + .with_bg(background_color) + .render(target); + + self.label.render(target); + } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/dialog.rs b/core/embed/rust/src/ui/model_tt/component/dialog.rs index 85a46540dc..c66d37a91f 100644 --- a/core/embed/rust/src/ui/model_tt/component/dialog.rs +++ b/core/embed/rust/src/ui/model_tt/component/dialog.rs @@ -10,6 +10,7 @@ use crate::{ Child, Component, Event, EventCtx, Never, }, geometry::{Insets, LinearPlacement, Rect}, + shape::Renderer, }, }; @@ -71,6 +72,11 @@ where self.controls.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.content.render(target); + self.controls.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.content.bounds(sink); @@ -196,6 +202,12 @@ where self.controls.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.image.render(target); + self.paragraphs.render(target); + self.controls.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.image.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/component/error.rs b/core/embed/rust/src/ui/model_tt/component/error.rs index 3769f33c9f..12d2bf064b 100644 --- a/core/embed/rust/src/ui/model_tt/component/error.rs +++ b/core/embed/rust/src/ui/model_tt/component/error.rs @@ -4,6 +4,8 @@ use crate::{ component::{Child, Component, Event, EventCtx, Label, Never, Pad}, constant::screen, geometry::{Alignment2D, Point, Rect}, + shape, + shape::Renderer, }, }; @@ -89,4 +91,19 @@ impl<'a> Component for ErrorScreen<'a> { self.message.paint(); self.footer.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + + let icon = ICON_WARNING40; + shape::ToifImage::new(Point::new(screen().center().x, ICON_TOP), icon.toif) + .with_fg(WHITE) + .with_bg(FATAL_ERROR_COLOR) + .with_align(Alignment2D::TOP_CENTER) + .render(target); + + self.title.render(target); + self.message.render(target); + self.footer.render(target); + } } diff --git a/core/embed/rust/src/ui/model_tt/component/fido.rs b/core/embed/rust/src/ui/model_tt/component/fido.rs index 4a1b98e501..a1fe452fec 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido.rs +++ b/core/embed/rust/src/ui/model_tt/component/fido.rs @@ -9,6 +9,8 @@ use crate::{ swipe::{Swipe, SwipeDirection}, theme, ScrollBar, }, + shape, + shape::Renderer, }, }; @@ -211,6 +213,36 @@ where } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.icon.render(target); + self.controls.render(target); + self.app_name.render(target); + + if self.scrollbar.page_count > 1 { + self.scrollbar.render(target); + } + + // Erasing the old text content before writing the new one. + let account_name_area = self.account_name.area(); + let real_area = account_name_area + .with_height(account_name_area.height() + self.account_name.font().text_baseline() + 1); + shape::Bar::new(real_area).with_bg(theme::BG).render(target); + + // Account name is optional. + // Showing it only if it differs from app name. + // (Dummy requests usually have some text as both app_name and account_name.) + let account_name = self.account_name.text(); + let app_name = self.app_name.text(); + if !account_name.is_empty() && account_name != app_name { + self.account_name.render(target); + } + + if self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(theme::BACKLIGHT_NORMAL); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.icon.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/component/frame.rs b/core/embed/rust/src/ui/model_tt/component/frame.rs index 480350dfee..a8e847f712 100644 --- a/core/embed/rust/src/ui/model_tt/component/frame.rs +++ b/core/embed/rust/src/ui/model_tt/component/frame.rs @@ -8,6 +8,7 @@ use crate::{ display::Icon, geometry::{Alignment, Insets, Offset, Rect}, model_tt::component::{Button, ButtonMsg, CancelInfoConfirmMsg}, + shape::Renderer, }, }; @@ -175,6 +176,13 @@ where self.content.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.title.render(target); + self.subtitle.render(target); + self.button.render(target); + self.content.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.title.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs index ec5769e776..4874580bdf 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs @@ -1,17 +1,24 @@ mod render; use crate::{ + io::BinaryData, strutil::TString, time::{Duration, Instant}, translations::TR, trezorhal::usb::usb_configured, ui::{ component::{Component, Event, EventCtx, Pad, TimerToken}, - display::{self, tjpgd::jpeg_info, toif::Icon, Color, Font}, + display::{ + self, + image::{ImageInfo, ToifFormat}, + toif::{Icon, Toif}, + Color, Font, + }, event::{TouchEvent, USBEvent}, - geometry::{Offset, Point, Rect}, + geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, layout::util::get_user_custom_image, model_tt::{constant, theme::IMAGE_HOMESCREEN}, + shape::{self, Renderer}, }, }; @@ -19,10 +26,7 @@ use crate::{ trezorhal::{buffers::BufferJpegWork, uzlib::UZLIB_WINDOW_SIZE}, ui::{ constant::HEIGHT, - display::{ - tjpgd::{jpeg_test, BufferInput}, - toif::{Toif, ToifFormat}, - }, + display::tjpgd::BufferInput, model_tt::component::homescreen::render::{ HomescreenJpeg, HomescreenToif, HOMESCREEN_TOIF_SIZE, }, @@ -49,6 +53,7 @@ const LOADER_DURATION: Duration = Duration::from_millis(2000); pub struct Homescreen { label: TString<'static>, notification: Option<(TString<'static>, u8)>, + image: BinaryData<'static>, hold_to_lock: bool, loader: Loader, pad: Pad, @@ -69,6 +74,7 @@ impl Homescreen { Self { label, notification, + image: get_homescreen_image(), hold_to_lock, loader: Loader::with_lock_icon().with_durations(LOADER_DURATION, LOADER_DURATION / 3), pad: Pad::with_background(theme::BG), @@ -119,6 +125,16 @@ impl Homescreen { self.loader.paint() } + fn render_loader<'s>(&'s self, target: &mut impl Renderer<'s>) { + TR::progress__locking_device.map_translated(|t| { + shape::Text::new(TOP_CENTER + Offset::y(HOLD_Y), t) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(theme::FG); + }); + self.loader.render(target) + } + pub fn set_paint_notification(&mut self) { self.paint_notification_only = true; } @@ -210,12 +226,11 @@ impl Component for Homescreen { let notification = self.get_notification(); - let res = get_user_custom_image(); - let mut show_default = true; - - if let Ok(data) = res { - if is_image_jpeg(data.as_ref()) { - let input = BufferInput(data.as_ref()); + match ImageInfo::parse(self.image) { + ImageInfo::Jpeg(_) => { + // SAFETY: We expect no existing mutable reference. Resulting reference is + // discarded before returning to micropython. + let input = BufferInput(unsafe { self.image.data() }); let mut pool = BufferJpegWork::get_cleared(); let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); homescreen( @@ -224,9 +239,11 @@ impl Component for Homescreen { notification, self.paint_notification_only, ); - show_default = false; - } else if is_image_toif(data.as_ref()) { - let input = unwrap!(Toif::new(data.as_ref())); + } + ImageInfo::Toif(_) => { + // SAFETY: We expect no existing mutable reference. Resulting reference is + // discarded before returning to micropython. + let input = unwrap!(Toif::new(unsafe { self.image.data() })); let mut window = [0; UZLIB_WINDOW_SIZE]; let mut hs_img = HomescreenToif::new(input.decompression_context(Some(&mut window))); @@ -236,20 +253,87 @@ impl Component for Homescreen { notification, self.paint_notification_only, ); - show_default = false; } + _ => {} } + } + } - if show_default { - let input = BufferInput(IMAGE_HOMESCREEN); - let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); - homescreen( - &mut hs_img, - &[text], - notification, - self.paint_notification_only, - ); + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { + self.render_loader(target); + } else { + match ImageInfo::parse(self.image) { + ImageInfo::Jpeg(_) => { + shape::JpegImage::new_image(self.pad.area.center(), self.image) + .with_align(Alignment2D::CENTER) + .render(target) + } + ImageInfo::Toif(_) => { + shape::ToifImage::new_image(self.pad.area.center(), self.image) + .with_align(Alignment2D::CENTER) + .render(target) + } + _ => {} + } + + self.label.map(|t| { + let r = Rect::new(Point::new(6, 198), Point::new(234, 233)); + shape::Bar::new(r) + .with_bg(Color::black()) + .with_alpha(89) + .with_radius(3) + .render(target); + + let style = theme::TEXT_DEMIBOLD; + let pos = Point::new(self.pad.area.center().x, LABEL_Y); + shape::Text::new(pos, t) + .with_align(Alignment::Center) + .with_font(style.text_font) + .with_fg(theme::FG) + .render(target); + }); + + if let Some(notif) = self.get_notification() { + const NOTIFICATION_HEIGHT: i16 = 36; + const NOTIFICATION_BORDER: i16 = 6; + const TEXT_ICON_SPACE: i16 = 8; + + let banner = self + .pad + .area + .inset(Insets::sides(NOTIFICATION_BORDER)) + .with_height(NOTIFICATION_HEIGHT) + .translate(Offset::y(NOTIFICATION_BORDER)); + + shape::Bar::new(banner) + .with_radius(2) + .with_bg(notif.color) + .render(target); + + notif.text.map(|t| { + let style = theme::TEXT_BOLD; + let icon_width = notif.icon.toif.width() + TEXT_ICON_SPACE; + let text_pos = Point::new( + style + .text_font + .horz_center(banner.x0 + icon_width, banner.x1, t), + style.text_font.vert_center(banner.y0, banner.y1, "A"), + ); + + shape::Text::new(text_pos, t) + .with_font(style.text_font) + .with_fg(style.text_color) + .render(target); + + let icon_pos = Point::new(text_pos.x - icon_width, banner.center().y); + + shape::ToifImage::new(icon_pos, notif.icon.toif) + .with_fg(style.text_color) + .with_align(Alignment2D::CENTER_LEFT) + .render(target); + }); } } } @@ -271,6 +355,7 @@ impl crate::trace::Trace for Homescreen { pub struct Lockscreen<'a> { label: TString<'a>, + image: BinaryData<'a>, bootscreen: bool, coinjoin_authorized: bool, } @@ -279,6 +364,7 @@ impl<'a> Lockscreen<'a> { pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { Lockscreen { label, + image: get_homescreen_image(), bootscreen, coinjoin_authorized, } @@ -343,61 +429,146 @@ impl Component for Lockscreen<'_> { texts = &texts[1..]; } - let res = get_user_custom_image(); - let mut show_default = true; - - if let Ok(data) = res { - if is_image_jpeg(data.as_ref()) { - let input = BufferInput(data.as_ref()); + match ImageInfo::parse(self.image) { + ImageInfo::Jpeg(_) => { + // SAFETY: We expect no existing mutable reference. Resulting reference is + // discarded before returning to micropython. + let input = BufferInput(unsafe { self.image.data() }); let mut pool = BufferJpegWork::get_cleared(); let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); homescreen_blurred(&mut hs_img, texts); - show_default = false; - } else if is_image_toif(data.as_ref()) { - let input = unwrap!(Toif::new(data.as_ref())); + } + ImageInfo::Toif(_) => { + // SAFETY: We expect no existing mutable reference. Resulting reference is + // discarded before returning to micropython. + let input = unwrap!(Toif::new(unsafe { self.image.data() })); let mut window = [0; UZLIB_WINDOW_SIZE]; let mut hs_img = HomescreenToif::new(input.decompression_context(Some(&mut window))); homescreen_blurred(&mut hs_img, texts); - show_default = false; } + _ => {} } + } - if show_default { - let input = BufferInput(IMAGE_HOMESCREEN); - let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); - homescreen_blurred(&mut hs_img, texts); + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let center = constant::screen().center(); + + match ImageInfo::parse(self.image) { + ImageInfo::Jpeg(_) => shape::JpegImage::new_image(center, self.image) + .with_align(Alignment2D::CENTER) + .with_blur(4) + .with_dim(140) + .render(target), + ImageInfo::Toif(_) => shape::ToifImage::new_image(center, self.image) + .with_align(Alignment2D::CENTER) + //.with_blur(5) + .render(target), + _ => {} } - } -} -pub fn check_homescreen_format(buffer: &[u8]) -> bool { - is_image_jpeg(buffer) && jpeg_test(buffer) + let (locked, tap) = if self.bootscreen { + ( + TR::lockscreen__title_not_connected, + TR::lockscreen__tap_to_connect, + ) + } else { + (TR::lockscreen__title_locked, TR::lockscreen__tap_to_unlock) + }; + + let mut label_style = theme::TEXT_DEMIBOLD; + label_style.text_color = theme::GREY_LIGHT; + + let mut texts: &[HomescreenText] = &[ + HomescreenText { + text: "".into(), + style: theme::TEXT_NORMAL, + offset: Offset::new(2, COINJOIN_Y), + icon: Some(theme::ICON_COINJOIN), + }, + HomescreenText { + text: locked.into(), + style: theme::TEXT_BOLD, + offset: Offset::y(LOCKED_Y), + icon: Some(theme::ICON_LOCK), + }, + HomescreenText { + text: tap.into(), + style: theme::TEXT_NORMAL, + offset: Offset::y(TAP_Y), + icon: None, + }, + HomescreenText { + text: self.label, + style: label_style, + offset: Offset::y(LABEL_Y), + icon: None, + }, + ]; + + if !self.coinjoin_authorized { + texts = &texts[1..]; + } + + for item in texts.iter() { + item.text.map(|t| { + const TEXT_ICON_SPACE: i16 = 2; + + let icon_width = match item.icon { + Some(icon) => icon.toif.width() + TEXT_ICON_SPACE, + None => 0, + }; + + let area = constant::screen(); + + let text_pos = Point::new( + item.style + .text_font + .horz_center(area.x0 + icon_width, area.x1, t), + 0, + ) + item.offset; + + shape::Text::new(text_pos, t) + .with_font(item.style.text_font) + .with_fg(item.style.text_color) + .render(target); + + if let Some(icon) = item.icon { + let icon_pos = Point::new(text_pos.x - icon_width, text_pos.y); + shape::ToifImage::new(icon_pos, icon.toif) + .with_align(Alignment2D::BOTTOM_LEFT) + .with_fg(item.style.text_color) + .render(target); + } + }); + } + } } -fn is_image_jpeg(buffer: &[u8]) -> bool { - let jpeg = jpeg_info(buffer); - if let Some((size, mcu_height)) = jpeg { - if size.x == HOMESCREEN_IMAGE_WIDTH && size.y == HOMESCREEN_IMAGE_HEIGHT && mcu_height <= 16 - { - return true; +pub fn check_homescreen_format(image: BinaryData, accept_toif: bool) -> bool { + match ImageInfo::parse(image) { + ImageInfo::Jpeg(info) => { + info.width() == HOMESCREEN_IMAGE_WIDTH + && info.height() == HOMESCREEN_IMAGE_HEIGHT + && info.mcu_height() <= 16 + } + ImageInfo::Toif(info) => { + accept_toif + && info.width() == HOMESCREEN_TOIF_SIZE + && info.height() == HOMESCREEN_TOIF_SIZE + && info.format() == ToifFormat::FullColorBE } + _ => false, } - false } -fn is_image_toif(buffer: &[u8]) -> bool { - let toif = Toif::new(buffer); - if let Ok(toif) = toif { - if toif.size().x == HOMESCREEN_TOIF_SIZE - && toif.size().y == HOMESCREEN_TOIF_SIZE - && toif.format() == ToifFormat::FullColorBE - { - return true; +fn get_homescreen_image() -> BinaryData<'static> { + if let Ok(image) = get_user_custom_image() { + if check_homescreen_format(image, true) { + return image; } } - false + IMAGE_HOMESCREEN.into() } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs index 0415d985c2..2f29ae6525 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs @@ -7,13 +7,15 @@ use crate::{ model_tt::{ component::{ keyboard::{ - common::{paint_pending_marker, MultiTapKeyboard}, + common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, mnemonic::{MnemonicInput, MnemonicInputMsg, MNEMONIC_KEY_COUNT}, }, Button, ButtonContent, ButtonMsg, }, theme, }, + shape, + shape::Renderer, }, }; use heapless::String; @@ -154,6 +156,51 @@ impl Component for Bip39Input { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let area = self.button.area(); + let style = self.button.style(); + + // First, paint the button background. + self.button.render_background(target, style); + + // Paint the entered content (the prefix of the suggested word). + let text = self.textbox.content(); + let width = style.font.text_width(text); + // Content starts in the left-center point, offset by 16px to the right and 8px + // to the bottom. + let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); + shape::Text::new(text_baseline, text) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + + // Paint the rest of the suggested dictionary word. + if let Some(word) = self.suggested_word.and_then(|w| w.get(text.len()..)) { + let word_baseline = text_baseline + Offset::new(width, 0); + let style = self.button_suggestion.style(); + shape::Text::new(word_baseline, word) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + } + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() { + render_pending_marker(target, text_baseline, text, style.font, style.text_color); + } + + // Paint the icon. + if let ButtonContent::Icon(icon) = self.button.content() { + // Icon is painted in the right-center point, of expected size 16x16 pixels, and + // 16px from the right edge. + let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); + shape::ToifImage::new(icon_center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(style.text_color) + .render(target); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.button.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/common.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/common.rs index 0220ad4f79..9868770bc4 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/common.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/common.rs @@ -4,6 +4,8 @@ use crate::{ component::{text::common::TextEdit, Event, EventCtx, TimerToken}, display::{self, Color, Font}, geometry::{Offset, Point, Rect}, + shape, + shape::Renderer, }, }; @@ -127,3 +129,24 @@ pub fn paint_pending_marker(text_baseline: Point, text: &str, font: Font, color: display::rect_fill(marker_rect, color); } } + +/// Create a visible "underscoring" of the last letter of a text. +pub fn render_pending_marker<'s>( + target: &mut impl Renderer<'s>, + text_baseline: Point, + text: &str, + font: Font, + color: Color, +) { + // Measure the width of the last character of input. + if let Some(last) = text.chars().last() { + let width = font.text_width(text); + let last_width = font.char_width(last); + // Draw the marker 2px under the start of the baseline of the last character. + let marker_origin = text_baseline + Offset::new(width - last_width, 2); + // Draw the marker 1px longer than the last character, and 3px thick. + let marker_rect = + Rect::from_top_left_and_size(marker_origin, Offset::new(last_width + 1, 3)); + shape::Bar::new(marker_rect).with_bg(color).render(target); + } +} diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs index 03f9c23155..6d70c89b9d 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs @@ -7,6 +7,7 @@ use crate::{ component::{Button, ButtonMsg, Swipe, SwipeDirection}, theme, }, + shape::Renderer, }, }; @@ -183,6 +184,19 @@ where } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + if self.input.inner().inner().is_empty() { + self.prompt.render(target); + } else { + self.input.render(target); + self.back.render(target); + } + + for btn in &self.keys { + btn.render(target); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.prompt.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs index 01e315a999..151272d67e 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs @@ -8,10 +8,12 @@ use crate::{ geometry::{Grid, Offset, Rect}, model_tt::component::{ button::{Button, ButtonContent, ButtonMsg}, - keyboard::common::{paint_pending_marker, MultiTapKeyboard}, + keyboard::common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, swipe::{Swipe, SwipeDirection}, theme, ScrollBar, }, + shape, + shape::Renderer, util::long_line_content_with_ellipsis, }, }; @@ -299,6 +301,20 @@ impl Component for PassphraseKeyboard { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.input.render(target); + self.scrollbar.render(target); + self.confirm.render(target); + self.back.render(target); + for btn in &self.keys { + btn.render(target); + } + if self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(theme::BACKLIGHT_NORMAL); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.input.bounds(sink); @@ -379,6 +395,40 @@ impl Component for Input { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let style = theme::label_keyboard(); + + let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) + - Offset::y(style.text_font.text_baseline()); + + let text = self.textbox.content(); + + shape::Bar::new(self.area).with_bg(theme::BG).render(target); + + // Find out how much text can fit into the textbox. + // Accounting for the pending marker, which draws itself one pixel longer than + // the last character + let available_area_width = self.area.width() - 1; + let text_to_display = + long_line_content_with_ellipsis(text, "...", style.text_font, available_area_width); + + shape::Text::new(text_baseline, &text_to_display) + .with_font(style.text_font) + .with_fg(style.text_color) + .render(target); + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() { + render_pending_marker( + target, + text_baseline, + &text_to_display, + style.text_font, + style.text_color, + ); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area) diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index 7c5a74c73a..e0a27a83a2 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -12,11 +12,13 @@ use crate::{ }, display::{self, Font}, event::TouchEvent, - geometry::{Alignment2D, Grid, Insets, Offset, Rect}, + geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, model_tt::component::{ button::{Button, ButtonContent, ButtonMsg, ButtonMsg::Clicked}, theme, }, + shape, + shape::Renderer, }, }; @@ -264,6 +266,26 @@ impl Component for PinKeyboard<'_> { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.erase_btn.render(target); + self.textbox_pad.render(target); + if self.textbox.inner().is_empty() { + if let Some(ref w) = self.major_warning { + w.render(target); + } else { + self.major_prompt.render(target); + } + self.minor_prompt.render(target); + self.cancel_btn.render(target); + } else { + self.textbox.render(target); + } + self.confirm_btn.render(target); + for btn in &self.digit_btns { + btn.render(target); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.major_prompt.bounds(sink); @@ -364,6 +386,27 @@ impl PinDots { } } + fn render_digits<'s>(&self, area: Rect, target: &mut impl Renderer<'s>) { + let center = area.center() + Offset::y(Font::MONO.text_height() / 2); + let right = center + Offset::x(Font::MONO.text_width("0") * (MAX_VISIBLE_DOTS as i16) / 2); + let digits = self.digits.len(); + + if digits <= MAX_VISIBLE_DOTS { + shape::Text::new(center, &self.digits) + .with_align(Alignment::Center) + .with_font(Font::MONO) + .with_fg(self.style.text_color) + .render(target); + } else { + let offset: usize = digits.saturating_sub(MAX_VISIBLE_DIGITS); + shape::Text::new(right, &self.digits[offset..]) + .with_align(Alignment::End) + .with_font(Font::MONO) + .with_fg(self.style.text_color) + .render(target); + } + } + fn paint_dots(&self, area: Rect) { let mut cursor = self.size().snap(area.center(), Alignment2D::CENTER); @@ -407,6 +450,44 @@ impl PinDots { cursor.x += step; } } + + fn render_dots<'s>(&self, area: Rect, target: &mut impl Renderer<'s>) { + let mut cursor = self.size().snap(area.center(), Alignment2D::CENTER); + + let digits = self.digits.len(); + let dots_visible = digits.min(MAX_VISIBLE_DOTS); + let step = Self::DOT + Self::PADDING; + + // Jiggle when overflowed. + if digits > dots_visible && digits % 2 == 0 { + cursor.x += Self::TWITCH + } + + // Small leftmost dot. + if digits > dots_visible + 1 { + shape::ToifImage::new(cursor - Offset::x(2 * step), theme::DOT_SMALL.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(self.style.text_color) + .render(target); + } + + // Greyed out dot. + if digits > dots_visible { + shape::ToifImage::new(cursor - Offset::x(step), theme::DOT_ACTIVE.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(theme::GREY_LIGHT) + .render(target); + } + + // Draw a dot for each PIN digit. + for _ in 0..dots_visible { + shape::ToifImage::new(cursor, theme::DOT_ACTIVE.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(self.style.text_color) + .render(target); + cursor.x += step; + } + } } impl Component for PinDots { @@ -449,6 +530,16 @@ impl Component for PinDots { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let dot_area = self.area.inset(HEADER_PADDING); + self.pad.render(target); + if self.display_digits { + self.render_digits(dot_area, target) + } else { + self.render_dots(dot_area, target) + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs index 54aa9a702b..0794d9c280 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs @@ -14,13 +14,15 @@ use crate::{ model_tt::{ component::{ keyboard::{ - common::{paint_pending_marker, MultiTapKeyboard}, + common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, mnemonic::{MnemonicInput, MnemonicInputMsg, MNEMONIC_KEY_COUNT}, }, Button, ButtonContent, ButtonMsg, }, theme, }, + shape, + shape::Renderer, util::ResultExt, }, }; @@ -185,6 +187,71 @@ impl Component for Slip39Input { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let area = self.button.area(); + let style = self.button.style(); + + // First, paint the button background. + self.button.render_background(target, style); + + // Content starts in the left-center point, offset by 16px to the right and 8px + // to the bottom. + let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); + + // To simplify things, we always copy the printed string here, even if it + // wouldn't be strictly necessary. + let mut text: String<MAX_LENGTH> = String::new(); + + if let Some(word) = self.final_word { + // We're done with input, paint the full word. + text.push_str(word) + .assert_if_debugging_ui("Text buffer is too small"); + } else { + // Paint an asterisk for each letter of input. + for ch in iter::repeat('*').take(self.textbox.content().len()) { + text.push(ch) + .assert_if_debugging_ui("Text buffer is too small"); + } + // If we're in the pending state, paint the pending character at the end. + if let (Some(key), Some(press)) = + (self.multi_tap.pending_key(), self.multi_tap.pending_press()) + { + assert!(!Self::keys()[key].is_empty()); + // Now we can be sure that the looped iterator will return a value. + let ch = unwrap!(Self::keys()[key].chars().cycle().nth(press)); + text.pop(); + text.push(ch) + .assert_if_debugging_ui("Text buffer is too small"); + } + } + shape::Text::new(text_baseline, text.as_str()) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() && self.final_word.is_none() { + render_pending_marker( + target, + text_baseline, + text.as_str(), + style.font, + style.text_color, + ); + } + + // Paint the icon. + if let ButtonContent::Icon(icon) = self.button.content() { + // Icon is painted in the right-center point, of expected size 16x16 pixels, and + // 16px from the right edge. + let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); + shape::ToifImage::new(icon_center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(style.text_color) + .render(target); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.button.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs index 453c809381..c6614293e3 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs @@ -5,6 +5,7 @@ use crate::ui::{ component::button::{Button, ButtonMsg}, theme, }, + shape::Renderer, }; const NUMBERS: [u32; 5] = [12, 18, 20, 24, 33]; @@ -57,6 +58,12 @@ impl Component for SelectWordCount { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + for btn in self.button.iter() { + btn.render(target) + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { for btn in self.button.iter() { diff --git a/core/embed/rust/src/ui/model_tt/component/loader.rs b/core/embed/rust/src/ui/model_tt/component/loader.rs index 3de7dac8e8..b876451ada 100644 --- a/core/embed/rust/src/ui/model_tt/component/loader.rs +++ b/core/embed/rust/src/ui/model_tt/component/loader.rs @@ -6,9 +6,10 @@ use crate::{ animation::Animation, component::{Component, Event, EventCtx, Pad}, display::{self, toif::Icon, Color}, - geometry::{Offset, Rect}, + geometry::{Alignment2D, Offset, Rect}, lerp::Lerp, model_tt::constant, + shape::{self, Renderer}, util::animation_disabled, }, }; @@ -220,6 +221,53 @@ impl Component for Loader { ); } } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // TODO: Consider passing the current instant along with the event -- that way, + // we could synchronize painting across the component tree. Also could be useful + // in automated tests. + // In practice, taking the current instant here is more precise in case some + // other component in the tree takes a long time to draw. + let now = Instant::now(); + + if let Some(progress) = self.progress(now) { + let style = if progress < display::LOADER_MAX { + self.styles.normal + } else { + self.styles.active + }; + + self.pad.render(target); + + let center = self.pad.area.center(); + + let inactive_color = Color::black().blend(style.loader_color, 85); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(style.loader_color) + .with_end_angle(((progress as i32 * shape::PI4 as i32 * 8) / 1000) as i16) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER + 2) + .with_bg(style.loader_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER) + .with_bg(style.background_color) + .render(target); + + if let Some((icon, color)) = style.icon { + shape::ToifImage::new(center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(color) + .render(target); + } + } + } } pub struct LoaderStyleSheet { diff --git a/core/embed/rust/src/ui/model_tt/component/number_input.rs b/core/embed/rust/src/ui/model_tt/component/number_input.rs index 2cf6c6cafc..07e855cfbe 100644 --- a/core/embed/rust/src/ui/model_tt/component/number_input.rs +++ b/core/embed/rust/src/ui/model_tt/component/number_input.rs @@ -10,7 +10,8 @@ use crate::{ Child, Component, Event, EventCtx, Pad, }, display::{self, Font}, - geometry::{Grid, Insets, Offset, Rect}, + geometry::{Alignment, Grid, Insets, Offset, Rect}, + shape::{self, Renderer}, }, }; @@ -120,6 +121,14 @@ where self.confirm_button.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.input.render(target); + self.paragraphs_pad.render(target); + self.paragraphs.render(target); + self.info_button.render(target); + self.confirm_button.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.area); @@ -227,6 +236,25 @@ impl Component for NumberInput { self.inc.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let mut buf = [0u8; 10]; + + if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { + let digit_font = Font::DEMIBOLD; + let y_offset = digit_font.text_height() / 2 + Button::BASELINE_OFFSET; + + shape::Bar::new(self.area).with_bg(theme::BG).render(target); + shape::Text::new(self.area.center() + Offset::y(y_offset), text) + .with_align(Alignment::Center) + .with_fg(theme::FG) + .with_font(digit_font) + .render(target); + } + + self.dec.render(target); + self.inc.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.dec.bounds(sink); diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index b8040ce5e1..17b45b4432 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -8,6 +8,7 @@ use crate::{ constant, display::{self, Color}, geometry::{Insets, Rect}, + shape::Renderer, util::animation_disabled, }, }; @@ -17,6 +18,8 @@ use super::{ SwipeDirection, }; +use core::cell::Cell; + /// Allows pagination of inner component. Shows scroll bar, confirm & cancel /// buttons. Optionally handles hold-to-confirm with loader. pub struct ButtonPage<T> { @@ -40,7 +43,7 @@ pub struct ButtonPage<T> { /// Whether to pass-through right swipe to parent component. swipe_right: bool, /// Fade to given backlight level on next paint(). - fade: Option<u16>, + fade: Cell<Option<u16>>, } impl<T> ButtonPage<T> @@ -76,7 +79,7 @@ where cancel_from_any_page: false, swipe_left: false, swipe_right: false, - fade: None, + fade: Cell::new(None), } } @@ -160,7 +163,7 @@ where // Swipe has dimmed the screen, so fade back to normal backlight after the next // paint. - self.fade = Some(theme::BACKLIGHT_NORMAL); + self.fade.set(Some(theme::BACKLIGHT_NORMAL)); } fn is_cancel_visible(&self) -> bool { @@ -415,6 +418,33 @@ where } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + match &self.loader { + Some(l) if l.is_animating() => self.loader.render(target), + _ => { + self.content.render(target); + if self.scrollbar.has_pages() { + self.scrollbar.render(target); + } + } + } + if self.button_cancel.is_some() && self.is_cancel_visible() { + self.button_cancel.render(target); + } else { + self.button_prev.render(target); + } + if self.scrollbar.has_next_page() { + self.button_next.render(target); + } else { + self.button_confirm.render(target); + } + if let Some(val) = self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(val); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.pad.area); diff --git a/core/embed/rust/src/ui/model_tt/component/progress.rs b/core/embed/rust/src/ui/model_tt/component/progress.rs index 048bbc40a0..bdb8f7fa70 100644 --- a/core/embed/rust/src/ui/model_tt/component/progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/progress.rs @@ -10,8 +10,10 @@ use crate::{ Child, Component, Event, EventCtx, Label, Never, Pad, }, display::{self, Font}, - geometry::{Insets, Rect}, + geometry::{Insets, Offset, Rect}, model_tt::constant, + shape, + shape::Renderer, util::animation_disabled, }, }; @@ -106,6 +108,47 @@ impl Component for Progress { self.description.paint(); } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.title.render(target); + + let center = constant::screen().center() + Offset::y(self.loader_y_offset); + let active_color = theme::FG; + let background_color = theme::BG; + let inactive_color = background_color.blend(active_color, 85); + + let (start, end) = if self.indeterminate { + let start = (self.value as i16 - 100) % 1000; + let end = (self.value as i16 + 100) % 1000; + let start = ((start as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let end = ((end as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + (start, end) + } else { + let end = ((self.value as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + (0, end) + }; + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(active_color) + .with_start_angle(start) + .with_end_angle(end) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER + 2) + .with_bg(active_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER) + .with_bg(background_color) + .render(target); + + self.description_pad.render(target); + self.description.render(target); + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(Self::AREA); diff --git a/core/embed/rust/src/ui/model_tt/component/result.rs b/core/embed/rust/src/ui/model_tt/component/result.rs index d276dc5ab7..e14d82c31e 100644 --- a/core/embed/rust/src/ui/model_tt/component/result.rs +++ b/core/embed/rust/src/ui/model_tt/component/result.rs @@ -6,6 +6,8 @@ use crate::{ display::{self, Color, Font, Icon}, geometry::{Alignment2D, Insets, Offset, Point, Rect}, model_tt::theme::FG, + shape, + shape::Renderer, }, }; @@ -95,6 +97,20 @@ impl Component for ResultFooter<'_> { // footer text self.text.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // divider line + let bar = Rect::from_center_and_size( + Point::new(self.area.center().x, self.area.y0), + Offset::new(self.area.width(), 1), + ); + shape::Bar::new(bar) + .with_fg(self.style.divider_color) + .render(target); + + // footer text + self.text.render(target); + } } pub struct ResultScreen<'a> { @@ -166,4 +182,21 @@ impl<'a> Component for ResultScreen<'a> { self.message.paint(); self.footer.paint(); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.bg.render(target); + self.footer_pad.render(target); + + shape::ToifImage::new( + Point::new(screen().center().x, ICON_CENTER_Y), + self.icon.toif, + ) + .with_align(Alignment2D::CENTER) + .with_fg(self.style.fg_color) + .with_bg(self.style.bg_color) + .render(target); + + self.message.render(target); + self.footer.render(target); + } } diff --git a/core/embed/rust/src/ui/model_tt/component/scroll.rs b/core/embed/rust/src/ui/model_tt/component/scroll.rs index b6267fcbf7..1ea96fd960 100644 --- a/core/embed/rust/src/ui/model_tt/component/scroll.rs +++ b/core/embed/rust/src/ui/model_tt/component/scroll.rs @@ -2,6 +2,8 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never}, display::toif::Icon, geometry::{Alignment2D, Axis, LinearPlacement, Offset, Rect}, + shape, + shape::Renderer, }; use super::theme; @@ -122,6 +124,49 @@ impl Component for ScrollBar { } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn dotsize(distance: usize, nhidden: usize) -> Icon { + match (nhidden.saturating_sub(distance)).min(2 - distance) { + 0 => theme::DOT_INACTIVE, + 1 => theme::DOT_INACTIVE_HALF, + _ => theme::DOT_INACTIVE_QUARTER, + } + } + + // Number of visible dots. + let num_shown = self.page_count.min(Self::MAX_DOTS); + // Page indices corresponding to the first (and last) dot. + let first_shown = self + .active_page + .saturating_sub(Self::MAX_DOTS / 2) + .min(self.page_count.saturating_sub(Self::MAX_DOTS)); + let last_shown = first_shown + num_shown - 1; + + let mut cursor = self.area.center() + - Offset::on_axis( + self.layout.axis, + Self::DOT_INTERVAL * (num_shown.saturating_sub(1) as i16) / 2, + ); + for i in first_shown..(last_shown + 1) { + let icon = if i == self.active_page { + theme::DOT_ACTIVE + } else if i <= first_shown + 1 { + let before_first_shown = first_shown; + dotsize(i - first_shown, before_first_shown) + } else if i >= last_shown - 1 { + let after_last_shown = self.page_count - 1 - last_shown; + dotsize(last_shown - i, after_last_shown) + } else { + theme::DOT_INACTIVE + }; + shape::ToifImage::new(cursor, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(theme::FG) + .render(target); + cursor = cursor + Offset::on_axis(self.layout.axis, Self::DOT_INTERVAL); + } + } + fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; bounds diff --git a/core/embed/rust/src/ui/model_tt/component/simple_page.rs b/core/embed/rust/src/ui/model_tt/component/simple_page.rs index 92bb4c53a3..160c049c54 100644 --- a/core/embed/rust/src/ui/model_tt/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_tt/component/simple_page.rs @@ -2,6 +2,7 @@ use crate::ui::{ component::{base::ComponentExt, Component, Event, EventCtx, Pad, PageMsg, Paginate}, display::{self, Color}, geometry::{Axis, Insets, Rect}, + shape::Renderer, }; use super::{theme, ScrollBar, Swipe, SwipeDirection}; @@ -165,6 +166,18 @@ where } } + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.pad.render(target); + self.content.render(target); + if self.scrollbar.has_pages() { + self.scrollbar.render(target); + } + if let Some(val) = self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(val); + } + } + #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { sink(self.pad.area); diff --git a/core/embed/rust/src/ui/model_tt/component/swipe.rs b/core/embed/rust/src/ui/model_tt/component/swipe.rs index b43a2fd22c..b4cab1d2ef 100644 --- a/core/embed/rust/src/ui/model_tt/component/swipe.rs +++ b/core/embed/rust/src/ui/model_tt/component/swipe.rs @@ -3,6 +3,7 @@ use crate::ui::{ display, event::TouchEvent, geometry::{Point, Rect}, + shape::Renderer, }; use super::theme; @@ -159,4 +160,6 @@ impl Component for Swipe { } fn paint(&mut self) {} + + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} } diff --git a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs b/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs index b0526f8aab..2a359ede10 100644 --- a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs @@ -2,16 +2,24 @@ use crate::ui::{ component::{Component, Event, EventCtx, Never}, geometry::{Alignment2D, Offset, Rect}, model_tt::theme, + shape, + shape::Renderer, }; #[cfg(feature = "bootloader")] -use crate::ui::{display::Icon, model_tt::theme::bootloader::DEVICE_NAME}; +use crate::ui::{ + display::{toif::Toif, Icon}, + model_tt::theme::bootloader::DEVICE_NAME, +}; const TEXT_BOTTOM_MARGIN: i16 = 24; // matching the homescreen label margin const ICON_TOP_MARGIN: i16 = 48; #[cfg(not(feature = "bootloader"))] const MODEL_NAME_FONT: display::Font = display::Font::DEMIBOLD; #[cfg(not(feature = "bootloader"))] -use crate::{trezorhal::model, ui::display}; +use crate::{ + trezorhal::model, + ui::{display, geometry::Alignment}, +}; pub struct WelcomeScreen { area: Rect, @@ -67,6 +75,41 @@ impl Component for WelcomeScreen { theme::BG, ); } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let logo = if self.empty_lock { + theme::ICON_LOGO_EMPTY + } else { + theme::ICON_LOGO + }; + shape::ToifImage::new( + self.area.top_center() + Offset::y(ICON_TOP_MARGIN), + logo.toif, + ) + .with_align(Alignment2D::TOP_CENTER) + .with_fg(theme::FG) + .with_bg(theme::BG) + .render(target); + + #[cfg(not(feature = "bootloader"))] + shape::Text::new( + self.area.bottom_center() - Offset::y(TEXT_BOTTOM_MARGIN), + model::FULL_NAME, + ) + .with_align(Alignment::Center) + .with_font(MODEL_NAME_FONT) + .with_fg(theme::FG) + .render(target); + + #[cfg(feature = "bootloader")] + shape::ToifImage::new( + self.area.bottom_center() - Offset::y(TEXT_BOTTOM_MARGIN), + unwrap!(Toif::new(DEVICE_NAME)), + ) + .with_align(Alignment2D::BOTTOM_CENTER) + .with_fg(theme::FG) + .render(target); + } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/constant.rs b/core/embed/rust/src/ui/model_tt/constant.rs index 3d4f7005bc..914a6ac425 100644 --- a/core/embed/rust/src/ui/model_tt/constant.rs +++ b/core/embed/rust/src/ui/model_tt/constant.rs @@ -7,8 +7,13 @@ pub const HEIGHT: i16 = DISPLAY_RESY as _; pub const LINE_SPACE: i16 = 4; pub const FONT_BPP: i16 = 4; +#[cfg(not(feature = "new_rendering"))] pub const LOADER_OUTER: i16 = 60; +#[cfg(feature = "new_rendering")] +pub const LOADER_OUTER: i16 = 59; + pub const LOADER_INNER: i16 = 42; + pub const LOADER_ICON_MAX_SIZE: i16 = 64; pub const fn size() -> Offset { diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 641b458390..3dc60a6e6d 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -2,9 +2,9 @@ use core::{cmp::Ordering, convert::TryInto}; use crate::{ error::Error, + io::BinaryData, micropython::{ - buffer::get_buffer, gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, - qstr::Qstr, util, + gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, qstr::Qstr, util, }, strutil::TString, translations::TR, @@ -14,8 +14,8 @@ use crate::{ base::ComponentExt, connect::Connect, image::BlendedImage, + jpeg::Jpeg, paginated::{PageMsg, Paginate}, - painter, placed::GridPlaced, text::{ op::OpTextLayout, @@ -27,7 +27,6 @@ use crate::{ }, Border, Component, Empty, FormattedText, Label, Never, Qr, Timeout, }, - display::tjpgd::jpeg_info, geometry, layout::{ obj::{ComponentMsgObj, LayoutObj}, @@ -196,10 +195,7 @@ where } } -impl<F> ComponentMsgObj for painter::Painter<F> -where - F: FnMut(geometry::Rect), -{ +impl ComponentMsgObj for Jpeg { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() } @@ -617,33 +613,25 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let data: Obj = kwargs.get(Qstr::MP_QSTR_image)?; - - // Layout needs to hold the Obj to play nice with GC. Obj is resolved to &[u8] - // in every paint pass. - let buffer_func = move || { - // SAFETY: We expect no existing mutable reference. Resulting reference is - // discarded before returning to micropython. - let buffer = unsafe { unwrap!(get_buffer(data)) }; - // Incoming data may be empty, meaning we should display default homescreen - // image. - if buffer.is_empty() { - theme::IMAGE_HOMESCREEN - } else { - buffer - } - }; + let image: Obj = kwargs.get(Qstr::MP_QSTR_image)?; - let size = match jpeg_info(buffer_func()) { - Some(info) => info.0, - _ => return Err(value_error!("Invalid image.")), + let mut jpeg: BinaryData = image.try_into()?; + + if jpeg.is_empty() { + // Incoming data may be empty, meaning we should + // display default homescreen image. + jpeg = theme::IMAGE_HOMESCREEN.into(); + } + + if !check_homescreen_format(jpeg, false) { + return Err(value_error!("Invalid image.")); }; let buttons = Button::cancel_confirm_text(None, Some(TR::buttons__change.into())); let obj = LayoutObj::new(Frame::centered( theme::label_title(), title, - Dialog::new(painter::jpeg_painter(buffer_func, size, 1), buttons), + Dialog::new(Jpeg::new(jpeg, 1), buttons), ))?; Ok(obj.into()) }; @@ -1585,9 +1573,8 @@ extern "C" fn new_show_lockscreen(n_args: usize, args: *const Obj, kwargs: *mut pub extern "C" fn upy_check_homescreen_format(data: Obj) -> Obj { let block = || { - let buffer = unsafe { get_buffer(data) }?; - - Ok(check_homescreen_format(buffer).into()) + let buffer = data.try_into()?; + Ok(check_homescreen_format(buffer, false).into()) }; unsafe { util::try_or_raise(block) } diff --git a/core/embed/rust/src/ui/model_tt/mod.rs b/core/embed/rust/src/ui/model_tt/mod.rs index a4f353e047..4e54439e7d 100644 --- a/core/embed/rust/src/ui/model_tt/mod.rs +++ b/core/embed/rust/src/ui/model_tt/mod.rs @@ -8,7 +8,11 @@ pub mod theme; #[cfg(feature = "micropython")] pub mod layout; -mod screens; + +use crate::ui::{ + layout::simplified::show, + model_tt::component::{ErrorScreen, WelcomeScreen}, +}; pub struct ModelTTFeatures; @@ -31,10 +35,12 @@ impl UIFeaturesCommon for ModelTTFeatures { const SCREEN: Rect = constant::SCREEN; fn screen_fatal_error(title: &str, msg: &str, footer: &str) { - screens::screen_fatal_error(title, msg, footer); + let mut frame = ErrorScreen::new(title.into(), msg.into(), footer.into()); + show(&mut frame, false); } fn screen_boot_stage_2() { - screens::screen_boot_stage_2(); + let mut frame = WelcomeScreen::new(false); + show(&mut frame, false); } } diff --git a/core/embed/rust/src/ui/model_tt/screens.rs b/core/embed/rust/src/ui/model_tt/screens.rs deleted file mode 100644 index b21d4d2bc7..0000000000 --- a/core/embed/rust/src/ui/model_tt/screens.rs +++ /dev/null @@ -1,24 +0,0 @@ -use crate::ui::{ - component::Component, - constant::screen, - display, - model_tt::{ - component::{ErrorScreen, WelcomeScreen}, - constant, - }, -}; - -pub fn screen_fatal_error(title: &str, msg: &str, footer: &str) { - let mut frame = ErrorScreen::new(title.into(), msg.into(), footer.into()); - frame.place(constant::screen()); - frame.paint(); - display::refresh(); -} - -pub fn screen_boot_stage_2() { - let mut frame = WelcomeScreen::new(false); - frame.place(screen()); - display::sync(); - frame.paint(); - display::refresh(); -} diff --git a/core/embed/rust/src/ui/ui_features.rs b/core/embed/rust/src/ui/ui_features.rs index 2089d05e69..6fe92bb6e5 100644 --- a/core/embed/rust/src/ui/ui_features.rs +++ b/core/embed/rust/src/ui/ui_features.rs @@ -1,6 +1,10 @@ use crate::ui::geometry::Rect; + #[cfg(feature = "bootloader")] -use crate::{trezorhal::secbool::secbool, ui::display::Color}; +use crate::trezorhal::secbool::secbool; + +#[cfg(not(feature = "new_rendering"))] +use crate::ui::display::Color; pub trait UIFeaturesCommon { fn fadein() {} @@ -18,6 +22,7 @@ pub trait UIFeaturesCommon { pub trait UIFeaturesBootloader { fn screen_welcome(); + #[cfg(not(feature = "new_rendering"))] fn bld_continue_label(bg_color: Color); fn screen_install_success(restart_seconds: u8, initial_setup: bool, complete_draw: bool); @@ -54,6 +59,15 @@ pub trait UIFeaturesBootloader { fn screen_wipe_success(); fn screen_wipe_fail(); + + #[cfg(feature = "new_rendering")] + fn screen_boot( + warning: bool, + vendor_str: Option<&str>, + version: [u8; 4], + vendor_img: &[u8], + wait: i32, + ); } #[cfg(all( From 2a123b3c5e8ebf0b57b35525ff6f90a0d777f11c Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 3 May 2024 13:49:53 +0200 Subject: [PATCH 057/626] feat(core): add alpha capabilities to 4-bit blending [no changelog] --- core/embed/lib/gfx_bitblt_mono8.c | 3 +- core/embed/lib/gfx_bitblt_rgb565.c | 3 +- core/embed/lib/gfx_bitblt_rgba8888.c | 3 +- core/embed/lib/gfx_color.h | 17 ++++++ core/embed/rust/src/trezorhal/bitblt.rs | 1 + core/embed/rust/src/ui/shape/bitmap.rs | 7 +++ core/embed/trezorhal/stm32f4/dma2d_bitblt.c | 61 ++++++++++++++------- 7 files changed, 71 insertions(+), 24 deletions(-) diff --git a/core/embed/lib/gfx_bitblt_mono8.c b/core/embed/lib/gfx_bitblt_mono8.c index 30966c6e08..c1cb85d660 100644 --- a/core/embed/lib/gfx_bitblt_mono8.c +++ b/core/embed/lib/gfx_bitblt_mono8.c @@ -102,7 +102,8 @@ void gfx_mono8_blend_mono4(const gfx_bitblt_t* bb) { for (int x = 0; x < bb->width; x++) { uint8_t src_data = src_row[(x + bb->src_x) / 2]; uint8_t src_alpha = (x + bb->src_x) & 1 ? src_data >> 4 : src_data & 0x0F; - dst_ptr[x] = (fg * src_alpha + dst_ptr[x] * (15 - src_alpha)) / 15; + src_alpha = src_alpha * bb->src_alpha / 15; + dst_ptr[x] = (fg * src_alpha + dst_ptr[x] * (255 - src_alpha)); } dst_ptr += bb->dst_stride / sizeof(*dst_ptr); src_row += bb->src_stride / sizeof(*src_row); diff --git a/core/embed/lib/gfx_bitblt_rgb565.c b/core/embed/lib/gfx_bitblt_rgb565.c index a881ca12ab..5ee3059d3e 100644 --- a/core/embed/lib/gfx_bitblt_rgb565.c +++ b/core/embed/lib/gfx_bitblt_rgb565.c @@ -126,7 +126,8 @@ void gfx_rgb565_blend_mono4(const gfx_bitblt_t* bb) { for (int x = 0; x < bb->width; x++) { uint8_t fg_data = src_row[(x + bb->src_x) / 2]; uint8_t fg_alpha = (x + bb->src_x) & 1 ? fg_data >> 4 : fg_data & 0x0F; - dst_ptr[x] = gfx_color16_blend_a4( + fg_alpha = fg_alpha * bb->src_alpha / 15; + dst_ptr[x] = gfx_color16_blend_a8( bb->src_fg, gfx_color16_to_color(dst_ptr[x]), fg_alpha); } dst_ptr += bb->dst_stride / sizeof(*dst_ptr); diff --git a/core/embed/lib/gfx_bitblt_rgba8888.c b/core/embed/lib/gfx_bitblt_rgba8888.c index 69a88bfde2..a7c50ddcc0 100644 --- a/core/embed/lib/gfx_bitblt_rgba8888.c +++ b/core/embed/lib/gfx_bitblt_rgba8888.c @@ -146,7 +146,8 @@ void gfx_rgba8888_blend_mono4(const gfx_bitblt_t* bb) { for (int x = 0; x < bb->width; x++) { uint8_t fg_data = src_row[(x + bb->src_x) / 2]; uint8_t fg_alpha = (x + bb->src_x) & 1 ? fg_data >> 4 : fg_data & 0x0F; - dst_ptr[x] = gfx_color32_blend_a4( + fg_alpha = fg_alpha * bb->src_alpha / 15; + dst_ptr[x] = gfx_color32_blend_a8( bb->src_fg, gfx_color32_to_color(dst_ptr[x]), fg_alpha); } dst_ptr += bb->dst_stride / sizeof(*dst_ptr); diff --git a/core/embed/lib/gfx_color.h b/core/embed/lib/gfx_color.h index 4aac35d982..2258980981 100644 --- a/core/embed/lib/gfx_color.h +++ b/core/embed/lib/gfx_color.h @@ -75,6 +75,8 @@ typedef uint32_t gfx_color32_t; #define gfx_color32_to_g(c) (((c) & 0x0000FF00) >> 8) // Extracts blue component from gfx_color32_t #define gfx_color32_to_b(c) (((c) & 0x000000FF) >> 0) +// Extracts alpha component from gfx_color32_t +#define gfx_color32_to_a(c) (((c) & 0xFF000000) >> 0) // 4-bit linear interpolation between `fg` and `bg` #define a4_lerp(fg, bg, alpha) (((fg) * (alpha) + ((bg) * (15 - (alpha)))) / 15) @@ -95,6 +97,13 @@ static inline gfx_color32_t gfx_color32_rgb(uint8_t r, uint8_t g, uint8_t b) { return (0xFFU << 24) | ((uint32_t)r << 16) | ((uint32_t)g << 8) | b; } +// Constructs a 32-bit color from the given red (r), +// green (g), blue (b) and alhpa (a) values in the range 0..255. +static inline gfx_color32_t gfx_color32_rgba(uint8_t r, uint8_t g, uint8_t b, + uint8_t a) { + return (a << 24) | ((uint32_t)r << 16) | ((uint32_t)g << 8) | b; +} + // Converts a 16-bit color to a 32-bit color; alpha is set to 255 static inline gfx_color32_t gfx_color16_to_color32(gfx_color16_t color) { uint32_t r = gfx_color16_to_r(color); @@ -342,4 +351,12 @@ const gfx_color16_t* gfx_color16_gradient_a4(gfx_color_t fg, gfx_color_t bg); // the background (`bg`) color and `retval[15]` the foreground (`fg`) color const gfx_color32_t* gfx_color32_gradient_a4(gfx_color_t fg, gfx_color_t bg); +// Returns a color with alpha channel set +// +// The original color is not modified +static inline gfx_color32_t gfx_color32_set_alpha(gfx_color32_t c, + uint8_t alpha) { + return (c & 0xFFFFFF) | (alpha << 24); +} + #endif // GFX_COLOR_H diff --git a/core/embed/rust/src/trezorhal/bitblt.rs b/core/embed/rust/src/trezorhal/bitblt.rs index f5b6a2dd9c..4803a76593 100644 --- a/core/embed/rust/src/trezorhal/bitblt.rs +++ b/core/embed/rust/src/trezorhal/bitblt.rs @@ -281,6 +281,7 @@ impl<'a> BitBltCopy<'a> { .with_src(src.bitmap, offset.x, offset.y) .with_bg(src.bg_color) .with_fg(src.fg_color) + .with_alpha(src.alpha) }, src, }) diff --git a/core/embed/rust/src/ui/shape/bitmap.rs b/core/embed/rust/src/ui/shape/bitmap.rs index 2143c8dcc1..7c760ec846 100644 --- a/core/embed/rust/src/ui/shape/bitmap.rs +++ b/core/embed/rust/src/ui/shape/bitmap.rs @@ -300,6 +300,7 @@ pub struct BitmapView<'a> { pub offset: Offset, pub fg_color: Color, pub bg_color: Color, + pub alpha: u8, } impl<'a> BitmapView<'a> { @@ -310,6 +311,7 @@ impl<'a> BitmapView<'a> { offset: Offset::zero(), fg_color: Color::black(), bg_color: Color::black(), + alpha: 255, } } @@ -331,6 +333,11 @@ impl<'a> BitmapView<'a> { Self { bg_color, ..self } } + /// Builds a new structure with alpha set to the specified value + pub fn with_alpha(self, alpha: u8) -> Self { + Self { alpha, ..self } + } + /// Returns the bitmap width and height in pixels pub fn size(&self) -> Offset { self.bitmap.size diff --git a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c index 8d43e5dbcc..36ec4762cb 100644 --- a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c +++ b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c @@ -97,13 +97,14 @@ bool dma2d_rgb565_fill(const gfx_bitblt_t* bb) { return true; } -static void dma2d_config_clut(uint32_t layer, gfx_color_t fg, gfx_color_t bg) { +static void dma2d_config_clut(uint32_t layer, gfx_color32_t fg, + gfx_color32_t bg) { #define LAYER_COUNT 2 #define GRADIENT_STEPS 16 static struct { - gfx_color_t c_fg; - gfx_color_t c_bg; + gfx_color32_t c_fg; + gfx_color32_t c_bg; } cache[LAYER_COUNT] = {0}; if (layer >= LAYER_COUNT) { @@ -118,15 +119,19 @@ static void dma2d_config_clut(uint32_t layer, gfx_color_t fg, gfx_color_t bg) { cache[layer].c_bg = bg; for (int step = 0; step < GRADIENT_STEPS; step++) { - clut[step] = gfx_color32_blend_a4(fg, bg, step); + clut[step] = gfx_color32_rgba( + a4_lerp(gfx_color32_to_r(fg), gfx_color32_to_r(bg), step), + a4_lerp(gfx_color32_to_g(fg), gfx_color32_to_g(bg), step), + a4_lerp(gfx_color32_to_b(fg), gfx_color32_to_b(bg), step), + a4_lerp(gfx_color32_to_a(fg), gfx_color32_to_a(bg), step)); } - DMA2D_CLUTCfgTypeDef clut; - clut.CLUTColorMode = DMA2D_CCM_ARGB8888; - clut.Size = GRADIENT_STEPS - 1; - clut.pCLUT = 0; // ??? + DMA2D_CLUTCfgTypeDef clut_def = {0}; + clut_def.CLUTColorMode = DMA2D_CCM_ARGB8888; + clut_def.Size = GRADIENT_STEPS - 1; + clut_def.pCLUT = 0; // ??? - HAL_DMA2D_ConfigCLUT(&dma2d_handle, clut, layer); + HAL_DMA2D_ConfigCLUT(&dma2d_handle, clut_def, layer); } } @@ -204,7 +209,8 @@ bool dma2d_rgb565_copy_mono4(const gfx_bitblt_t* params) { dma2d_handle.LayerCfg[1].InputAlpha = 0; HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); - dma2d_config_clut(1, bb->src_fg, bb->src_bg); + dma2d_config_clut(1, gfx_color_to_color32(bb->src_fg), + gfx_color_to_color32(bb->src_bg)); HAL_DMA2D_Start(&dma2d_handle, (uint32_t)bb->src_row + bb->src_x / 2, (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), @@ -247,7 +253,8 @@ static void dma2d_rgb565_blend_mono4_first_col(const gfx_bitblt_t* bb) { while (height-- > 0) { uint8_t fg_alpha = src_ptr[0] >> 4; - dst_ptr[0] = gfx_color16_blend_a4( + fg_alpha = (fg_alpha * bb->src_alpha) / 15; + dst_ptr[0] = gfx_color16_blend_a8( bb->src_fg, gfx_color16_to_color(dst_ptr[0]), fg_alpha); dst_ptr += bb->dst_stride / sizeof(*dst_ptr); src_ptr += bb->src_stride / sizeof(*src_ptr); @@ -262,7 +269,8 @@ static void dma2d_rgb565_blend_mono4_last_col(const gfx_bitblt_t* bb) { while (height-- > 0) { uint8_t fg_alpha = src_ptr[0] & 0x0F; - dst_ptr[0] = gfx_color16_blend_a4( + fg_alpha = (fg_alpha * bb->src_alpha) / 15; + dst_ptr[0] = gfx_color16_blend_a8( bb->src_fg, gfx_color16_to_color(dst_ptr[0]), fg_alpha); dst_ptr += bb->dst_stride / sizeof(*dst_ptr); src_ptr += bb->src_stride / sizeof(*src_ptr); @@ -302,12 +310,16 @@ bool dma2d_rgb565_blend_mono4(const gfx_bitblt_t* params) { bb->dst_stride / sizeof(uint16_t) - bb->width; HAL_DMA2D_Init(&dma2d_handle); - dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_A4; + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_L4; dma2d_handle.LayerCfg[1].InputOffset = bb->src_stride * 2 - bb->width; - dma2d_handle.LayerCfg[1].AlphaMode = 0; - dma2d_handle.LayerCfg[1].InputAlpha = gfx_color_to_color32(bb->src_fg); + dma2d_handle.LayerCfg[1].AlphaMode = DMA2D_COMBINE_ALPHA; + dma2d_handle.LayerCfg[1].InputAlpha = bb->src_alpha; HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + dma2d_config_clut( + 1, gfx_color_to_color32(bb->src_fg), + gfx_color32_set_alpha(gfx_color_to_color32(bb->src_fg), 0)); + dma2d_handle.LayerCfg[0].InputColorMode = DMA2D_INPUT_RGB565; dma2d_handle.LayerCfg[0].InputOffset = bb->dst_stride / sizeof(uint16_t) - bb->width; @@ -450,7 +462,8 @@ bool dma2d_rgba8888_copy_mono4(const gfx_bitblt_t* params) { dma2d_handle.LayerCfg[1].InputAlpha = 0; HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); - dma2d_config_clut(1, bb->src_fg, bb->src_bg); + dma2d_config_clut(1, gfx_color_to_color32(bb->src_fg), + gfx_color_to_color32(bb->src_bg)); HAL_DMA2D_Start(&dma2d_handle, (uint32_t)bb->src_row + bb->src_x / 2, (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), @@ -493,7 +506,8 @@ static void dma2d_rgba8888_blend_mono4_first_col(const gfx_bitblt_t* bb) { while (height-- > 0) { uint8_t fg_alpha = src_ptr[0] >> 4; - dst_ptr[0] = gfx_color32_blend_a4( + fg_alpha = (fg_alpha * bb->src_alpha) / 15; + dst_ptr[0] = gfx_color32_blend_a8( bb->src_fg, gfx_color32_to_color(dst_ptr[0]), fg_alpha); dst_ptr += bb->dst_stride / sizeof(*dst_ptr); src_ptr += bb->src_stride / sizeof(*src_ptr); @@ -508,7 +522,8 @@ static void dma2d_rgba8888_blend_mono4_last_col(const gfx_bitblt_t* bb) { while (height-- > 0) { uint8_t fg_alpha = src_ptr[0] & 0x0F; - dst_ptr[0] = gfx_color32_blend_a4( + fg_alpha = (fg_alpha * bb->src_alpha) / 15; + dst_ptr[0] = gfx_color32_blend_a8( bb->src_fg, gfx_color32_to_color(dst_ptr[0]), fg_alpha); dst_ptr += bb->dst_stride / sizeof(*dst_ptr); src_ptr += bb->src_stride / sizeof(*src_ptr); @@ -548,12 +563,16 @@ bool dma2d_rgba8888_blend_mono4(const gfx_bitblt_t* params) { bb->dst_stride / sizeof(uint32_t) - bb->width; HAL_DMA2D_Init(&dma2d_handle); - dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_A4; + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_L4; dma2d_handle.LayerCfg[1].InputOffset = bb->src_stride * 2 - bb->width; - dma2d_handle.LayerCfg[1].AlphaMode = 0; - dma2d_handle.LayerCfg[1].InputAlpha = gfx_color_to_color32(bb->src_fg); + dma2d_handle.LayerCfg[1].AlphaMode = DMA2D_COMBINE_ALPHA; + dma2d_handle.LayerCfg[1].InputAlpha = bb->src_alpha; HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + dma2d_config_clut( + 1, gfx_color_to_color32(bb->src_fg), + gfx_color32_set_alpha(gfx_color_to_color32(bb->src_fg), 0)); + dma2d_handle.LayerCfg[0].InputColorMode = DMA2D_INPUT_ARGB8888; dma2d_handle.LayerCfg[0].InputOffset = bb->dst_stride / sizeof(uint32_t) - bb->width; From 4f1d03fce86bc57391ddc316c0736ca389938981 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 5 May 2024 14:05:08 +0200 Subject: [PATCH 058/626] feat(core): add alpha capabilities to toif, text, circle [no changelog] --- core/embed/rust/src/ui/shape/canvas/common.rs | 26 +++++++++---------- core/embed/rust/src/ui/shape/circle.rs | 16 ++++++++---- core/embed/rust/src/ui/shape/text.rs | 8 ++++++ core/embed/rust/src/ui/shape/toif.rs | 11 +++++++- 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/core/embed/rust/src/ui/shape/canvas/common.rs b/core/embed/rust/src/ui/shape/canvas/common.rs index ceaff693c1..796b74d2f8 100644 --- a/core/embed/rust/src/ui/shape/canvas/common.rs +++ b/core/embed/rust/src/ui/shape/canvas/common.rs @@ -81,7 +81,7 @@ pub trait Canvas: BasicCanvas { /// Draws a single pixel and blends its color with the background. /// /// - If alpha == 255, the (foreground) pixel color is used. - /// - If 0 < alpha << 255, pixel and backround colors are blended. + /// - If 0 < alpha << 255, pixel and background colors are blended. /// - If alpha == 0, the background color is used. fn blend_pixel(&mut self, pt: Point, color: Color, alpha: u8); @@ -364,7 +364,7 @@ pub trait Canvas: BasicCanvas { // Draws circle with the specified center and the radius. #[cfg(not(feature = "ui_antialiasing"))] - fn draw_circle(&mut self, center: Point, radius: i16, color: Color) { + fn draw_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { let split = unwrap!(circle_points(radius).last()).v; let r = Rect::new( @@ -376,8 +376,8 @@ pub trait Canvas: BasicCanvas { for p in circle_points(radius) { let pt_l = Point::new(center.x - p.u, center.y - p.v); let pt_r = Point::new(center.x + p.u, center.y - p.v); - self.draw_pixel(pt_l, color); - self.draw_pixel(pt_r, color); + self.blend_pixel(pt_l, color, alpha); + self.blend_pixel(pt_r, color, alpha); } } @@ -390,8 +390,8 @@ pub trait Canvas: BasicCanvas { for p in circle_points(radius).take_while(|p| p.u < p.v) { let pt_l = Point::new(center.x - p.v, center.y - p.u); let pt_r = Point::new(center.x + p.v, center.y - p.u); - self.draw_pixel(pt_l, color); - self.draw_pixel(pt_r, color); + self.blend_pixel(pt_l, color, alpha); + self.blend_pixel(pt_r, color, alpha); } } @@ -404,8 +404,8 @@ pub trait Canvas: BasicCanvas { for p in circle_points(radius).skip(1).take_while(|p| p.u < p.v) { let pt_l = Point::new(center.x - p.v, center.y + p.u); let pt_r = Point::new(center.x + p.v, center.y + p.u); - self.draw_pixel(pt_l, color); - self.draw_pixel(pt_r, color); + self.blend_pixel(pt_l, color, alpha); + self.blend_pixel(pt_r, color, alpha); } } @@ -418,17 +418,16 @@ pub trait Canvas: BasicCanvas { for p in circle_points(radius) { let pt_l = Point::new(center.x - p.u, center.y + p.v); let pt_r = Point::new(center.x + p.u, center.y + p.v); - self.draw_pixel(pt_l, color); - self.draw_pixel(pt_r, color); + self.blend_pixel(pt_l, color, alpha); + self.blend_pixel(pt_r, color, alpha); } } } /// Draws filled circle with the specified center and the radius. #[cfg(not(feature = "ui_antialiasing"))] - fn fill_circle(&mut self, center: Point, radius: i16, color: Color) { + fn fill_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { let split = unwrap!(circle_points(radius).last()).v; - let alpha = 255; let r = Rect::new( Point::new(center.x - radius, center.y - radius), @@ -490,10 +489,9 @@ pub trait Canvas: BasicCanvas { /// Draws antialiased filled circle with the specified center and the /// radius. #[cfg(feature = "ui_antialiasing")] - fn fill_circle(&mut self, center: Point, radius: i16, color: Color) { + fn fill_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { let split = unwrap!(circle_points(radius).last()).v; - let alpha = 255; let alpha_mul = |a: u8| -> u8 { ((a as u16 * alpha as u16) / 255) as u8 }; let r = Rect::new( diff --git a/core/embed/rust/src/ui/shape/circle.rs b/core/embed/rust/src/ui/shape/circle.rs index 95296e0cba..40778838c6 100644 --- a/core/embed/rust/src/ui/shape/circle.rs +++ b/core/embed/rust/src/ui/shape/circle.rs @@ -14,6 +14,7 @@ pub struct Circle { fg_color: Option<Color>, bg_color: Option<Color>, thickness: i16, + alpha: u8, start_angle: Option<i16>, end_angle: Option<i16>, } @@ -26,6 +27,7 @@ impl Circle { fg_color: None, bg_color: None, thickness: 1, + alpha: 255, start_angle: None, end_angle: None, } @@ -49,6 +51,10 @@ impl Circle { Self { thickness, ..self } } + pub fn with_alpha(self, alpha: u8) -> Self { + Self { alpha, ..self } + } + pub fn with_start_angle(self, from_angle: i16) -> Self { Self { start_angle: Some(from_angle), @@ -94,22 +100,22 @@ impl Shape<'_> for Circle { if self.start_angle.is_none() && self.end_angle.is_none() { if th == 1 { if let Some(color) = self.bg_color { - canvas.fill_circle(self.center, self.radius, color); + canvas.fill_circle(self.center, self.radius, color, self.alpha); } if let Some(color) = self.fg_color { #[cfg(not(feature = "ui_antialiasing"))] - canvas.draw_circle(self.center, self.radius, color); + canvas.draw_circle(self.center, self.radius, color, self.alpha); #[cfg(feature = "ui_antialiasing")] - canvas.fill_circle(self.center, self.radius, color); + canvas.fill_circle(self.center, self.radius, color, self.alpha); } } else { if let Some(color) = self.fg_color { if th > 0 { - canvas.fill_circle(self.center, self.radius, color); + canvas.fill_circle(self.center, self.radius, color, self.alpha); } } if let Some(color) = self.bg_color { - canvas.fill_circle(self.center, self.radius - th, color); + canvas.fill_circle(self.center, self.radius - th, color, self.alpha); } } } else { diff --git a/core/embed/rust/src/ui/shape/text.rs b/core/embed/rust/src/ui/shape/text.rs index f0d80f123f..adcc820779 100644 --- a/core/embed/rust/src/ui/shape/text.rs +++ b/core/embed/rust/src/ui/shape/text.rs @@ -15,6 +15,8 @@ pub struct Text<'a> { text: &'a str, // Text color color: Color, + // Text alpha + alpha: u8, // Text font font: Font, // Horizontal alignment @@ -31,6 +33,7 @@ impl<'a> Text<'a> { pos, text, color: Color::white(), + alpha: 255, font: Font::NORMAL, align: Alignment::Start, bounds: Rect::zero(), @@ -49,6 +52,10 @@ impl<'a> Text<'a> { Self { align, ..self } } + pub fn with_alpha(self, alpha: u8) -> Self { + Self { alpha, ..self } + } + pub fn render<'r>(mut self, renderer: &mut impl Renderer<'r>) { self.bounds = self.calc_bounds(); renderer.render_shape(self); @@ -98,6 +105,7 @@ impl<'a> Shape<'_> for Text<'a> { let glyph = self.font.get_glyph(ch); let glyph_bitmap = glyph.bitmap(); let glyph_view = BitmapView::new(&glyph_bitmap) + .with_alpha(self.alpha) .with_fg(self.color) .with_offset(Offset::new( -glyph.bearing_x, diff --git a/core/embed/rust/src/ui/shape/toif.rs b/core/embed/rust/src/ui/shape/toif.rs index a4be22c0f9..6d3b655d11 100644 --- a/core/embed/rust/src/ui/shape/toif.rs +++ b/core/embed/rust/src/ui/shape/toif.rs @@ -22,6 +22,8 @@ pub struct ToifImage<'a> { fg_color: Color, // Optional background color bg_color: Option<Color>, + // Alpha value + alpha: u8, /// Final size calculated from TOIF data size: Offset, } @@ -34,6 +36,7 @@ impl<'a> ToifImage<'a> { toif, fg_color: Color::white(), bg_color: None, + alpha: 255, size: Offset::zero(), } } @@ -45,6 +48,7 @@ impl<'a> ToifImage<'a> { toif: toif.original_data().into(), fg_color: Color::white(), bg_color: None, + alpha: 255, size: Offset::zero(), } } @@ -64,6 +68,10 @@ impl<'a> ToifImage<'a> { } } + pub fn with_alpha(self, alpha: u8) -> Self { + Self { alpha, ..self } + } + pub fn render(mut self, renderer: &mut impl Renderer<'a>) { self.size = self.calc_size(); renderer.render_shape(self); @@ -106,7 +114,8 @@ impl<'a> ToifImage<'a> { let slice_view = slice .view() .with_fg(self.fg_color) - .with_offset(Offset::new(r.x0 - bounds.top_left().x, 0)); + .with_offset(Offset::new(r.x0 - bounds.top_left().x, 0)) + .with_alpha(self.alpha); match self.bg_color { Some(bg_color) => canvas.draw_bitmap(r, slice_view.with_bg(bg_color)), From a86f3604cac47c0b896fee39058c70730575ee03 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 17 Apr 2024 15:48:32 +0200 Subject: [PATCH 059/626] fix(core): fix TS3 bootloader crash when entering menu [no changelog] --- core/SConscript.bootloader | 2 +- core/SConscript.bootloader_ci | 2 +- core/SConscript.bootloader_emu | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 811c660e3a..709743fe5e 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -40,7 +40,7 @@ if TREZOR_MODEL in ('R', ): FONT_DEMIBOLD='Font_PixelOperator_Regular_8' FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO='Font_PixelOperator_Regular_8' - FONT_BIG=None + FONT_BIG='Font_PixelOperator_Regular_8' FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 7e962e72cc..63417a1172 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -35,7 +35,7 @@ if TREZOR_MODEL in ('1', 'R'): FONT_DEMIBOLD=None FONT_BOLD=None FONT_MONO='Font_PixelOperatorMono_Regular_8' - FONT_BIG=None + FONT_BIG='Font_PixelOperator_Regular_8' FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T',): diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 6e23f25271..a87339c728 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -37,7 +37,7 @@ if TREZOR_MODEL in ('1', 'R'): FONT_DEMIBOLD='Font_PixelOperator_Regular_8' FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO='Font_PixelOperator_Regular_8' - FONT_BIG=None + FONT_BIG='Font_PixelOperator_Regular_8' FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None elif TREZOR_MODEL in ('T', 'DISC2'): From 751390ec084dd60f84367ece055ce7977a608f08 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 6 May 2024 11:35:16 +0200 Subject: [PATCH 060/626] fix(core): fix old frame flicker when backlight is risen too soon [no changelog] --- .../stm32f4/xdisplay/st-7789/display_driver.c | 7 +++--- .../stm32f4/xdisplay/st-7789/display_fb.c | 24 +++++++++++++++---- .../stm32f4/xdisplay/st-7789/display_fb.h | 2 ++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c index 848843c2f1..83df221c28 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c @@ -89,10 +89,9 @@ void display_finish_actions(void) { int display_set_backlight(int level) { #ifdef XFRAMEBUFFER #ifndef BOARDLOADER - // wait for DMA transfer to finish before changing backlight - // so that we know that panel has current data - if (backlight_pwm_get() != level && !is_mode_handler()) { - bg_copy_wait(); + // if turning on the backlight, wait until the panel is refreshed + if (backlight_pwm_get() < level && !is_mode_handler()) { + display_ensure_refreshed(); } #endif #endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c index d9aab839c3..8c4400b0d3 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c @@ -63,7 +63,8 @@ void display_physical_fb_clear(void) { } #ifndef BOARDLOADER -static bool pending_fb_switch = false; +static volatile bool pending_fb_switch = false; +static volatile uint32_t last_fb_update_time = 0; #endif #ifndef BOARDLOADER @@ -82,6 +83,7 @@ void DISPLAY_TE_INTERRUPT_HANDLER(void) { } pending_fb_switch = false; + last_fb_update_time = HAL_GetTick(); __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); } @@ -93,7 +95,7 @@ static void wait_for_fb_switch(void) { } #endif -static void copy_fb_to_display(uint16_t *fb) { +static void copy_fb_to_display(const uint16_t *fb) { for (int i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { // 2 bytes per pixel because we're using RGB 5-6-5 format ISSUE_PIXEL_DATA(fb[i]); @@ -122,7 +124,7 @@ static void switch_fb_manually(void) { } #ifndef BOARDLOADER -static void switch_fb_in_backround(void) { +static void switch_fb_in_background(void) { if (current_frame_buffer == 0) { current_frame_buffer = 1; @@ -169,7 +171,7 @@ void display_refresh(void) { if (is_mode_handler()) { switch_fb_manually(); } else { - switch_fb_in_backround(); + switch_fb_in_background(); } #else display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); @@ -177,6 +179,20 @@ void display_refresh(void) { #endif } +void display_ensure_refreshed(void) { +#ifndef BOARDLOADER + if (!is_mode_handler()) { + wait_for_fb_switch(); + // the update time is collected after starting the BG copy, then we need to + // wait: for the bg copy to finish and for at least one full refresh cycle + // before we can consider the display fully redrawn + while (HAL_GetTick() - last_fb_update_time < 40) { + __WFI(); + } + } +#endif +} + void display_fill(const gfx_bitblt_t *bb) { display_fb_info_t fb = display_get_frame_buffer(); diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h index d216be9c46..0afa1de2d2 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h @@ -27,6 +27,8 @@ // Clears both physical frame buffers void display_physical_fb_clear(void); +void display_ensure_refreshed(void); + #endif // XFRAMEBUFFER #endif // TREZORHAL_DISPLAY_FB_H From cf58fdd31306f4560b357ec9980d61026d44d878 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 17 May 2024 12:12:35 +0200 Subject: [PATCH 061/626] build(core): move default values for bindgen macros (back) into build.rs --- core/Makefile | 6 ---- core/embed/rust/build.rs | 61 ++++++++++++++++++++++++++++++++-------- 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/core/Makefile b/core/Makefile index f591634a85..64ae432be5 100644 --- a/core/Makefile +++ b/core/Makefile @@ -43,8 +43,6 @@ OPENOCD_INTERFACE ?= stlink # OpenOCD transport default. Alternative: jtag OPENOCD_TRANSPORT ?= hla_swd -BINDGEN_MACROS_COMMON=-I../unix,-I../trezorhal/unix,-I../../build/unix,-I../../vendor/micropython/ports/unix,-I../../../crypto,-I../../../storage,-I../../vendor/micropython,-I../../vendor/micropython/lib/uzlib,-I../lib,-I../trezorhal,-I../trezorhal/unix,-I../models,-DTREZOR_EMULATOR,-DTREZOR_BOARD="boards/board-unix.h", - ifeq ($(TREZOR_MODEL), 1) MCU = STM32F2 LAYOUT_FILE = embed/models/model_T1B1.h @@ -53,13 +51,11 @@ else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T)) MCU = STM32F4 LAYOUT_FILE = embed/models/model_T2T1.h OPENOCD_TARGET = target/stm32f4x.cfg -BINDGEN_MACROS_MODEL = -DSTM32F427,-DTREZOR_MODEL_T,-DFLASH_BIT_ACCESS=1,-DFLASH_BLOCK_WORDS=1, MODEL_FEATURE = model_tt else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),R)) MCU = STM32F4 LAYOUT_FILE = embed/models/model_T2B1.h OPENOCD_TARGET = target/stm32f4x.cfg -BINDGEN_MACROS_MODEL =-DSTM32F427,-DTREZOR_MODEL_R,-DFLASH_BIT_ACCESS=1,-DFLASH_BLOCK_WORDS=1, MODEL_FEATURE = model_tr else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3T1)) MCU = STM32U5 @@ -144,7 +140,6 @@ emu: ## run emulator test: ## run unit tests cd tests ; ./run_tests.sh $(TESTOPTS) -test_rust: export BINDGEN_MACROS=$(BINDGEN_MACROS_COMMON)$(BINDGEN_MACROS_MODEL) test_rust: ## run rs unit tests cd embed/rust ; cargo test $(TESTOPTS) --target=$(RUST_TARGET) \ --no-default-features --features $(MODEL_FEATURE),test \ @@ -214,7 +209,6 @@ typecheck: pyright pyright: python ../tools/pyright_tool.py -clippy: export BINDGEN_MACROS:=$(BINDGEN_MACROS_COMMON)$(BINDGEN_MACROS_MODEL) clippy: cd embed/rust ; cargo clippy $(TESTOPTS) --all-features --target=$(RUST_TARGET) diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index dcbeccfa5d..8b19de12ed 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -14,12 +14,54 @@ fn main() { link_core_objects(); } -// fn block_words() -> String { -// match env::var("FLASH_BLOCK_WORDS") { -// Ok(model) => model, -// Err(_) => panic!("FLASH_BLOCK_WORDS not set") -// } -// } +const DEFAULT_BINDGEN_MACROS_COMMON: &[&str] = &[ + "-I../unix", + "-I../trezorhal/unix", + "-I../../build/unix", + "-I../../vendor/micropython/ports/unix", + "-I../../../crypto", + "-I../../../storage", + "-I../../vendor/micropython", + "-I../../vendor/micropython/lib/uzlib", + "-I../lib", + "-I../trezorhal", + "-I../trezorhal/unix", + "-I../models", + "-DTREZOR_EMULATOR", + "-DTREZOR_BOARD=\"boards/board-unix.h\"", +]; + +#[cfg(feature = "model_tt")] +const DEFAULT_BINDGEN_MACROS_T2T1: &[&str] = &[ + "-DSTM32F427", + "-DTREZOR_MODEL_T", + "-DFLASH_BIT_ACCESS=1", + "-DFLASH_BLOCK_WORDS=1", +]; +#[cfg(not(feature = "model_tt"))] +const DEFAULT_BINDGEN_MACROS_T2T1: &[&str] = &[]; + +#[cfg(feature = "model_tr")] +const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[ + "-DSTM32F427", + "-DTREZOR_MODEL_R", + "-DFLASH_BIT_ACCESS=1", + "-DFLASH_BLOCK_WORDS=1", +]; +#[cfg(not(feature = "model_tr"))] +const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[]; + +fn add_bindgen_macros<'a>(clang_args: &mut Vec<&'a str>, envvar: Option<&'a str>) { + let default_macros = DEFAULT_BINDGEN_MACROS_COMMON + .iter() + .chain(DEFAULT_BINDGEN_MACROS_T2T1) + .chain(DEFAULT_BINDGEN_MACROS_T2B1); + + match envvar { + Some(envvar) => clang_args.extend(envvar.split(',')), + None => clang_args.extend(default_macros), + } +} /// Generates Rust module that exports QSTR constants used in firmware. #[cfg(feature = "micropython")] @@ -70,12 +112,9 @@ fn prepare_bindings() -> bindgen::Builder { let mut bindings = bindgen::Builder::default(); let mut clang_args: Vec<&str> = Vec::new(); - let includes = env::var("BINDGEN_MACROS").unwrap(); - let args = includes.split(','); - for arg in args { - clang_args.push(arg); - } + let bindgen_macros_env = env::var("BINDGEN_MACROS").ok(); + add_bindgen_macros(&mut clang_args, bindgen_macros_env.as_deref()); #[cfg(feature = "xframebuffer")] { From c2c1591f5c92fa4adee5fe08ea7f1a6228deb33b Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Mon, 22 Apr 2024 10:32:23 +0200 Subject: [PATCH 062/626] chore(core): Improve VTRUST bits documentation and naming. [no changelog] --- core/embed/bootloader/bootui.c | 8 ++++---- core/embed/bootloader/main.c | 13 +++++++------ core/embed/bootloader/messages.c | 4 ++-- core/embed/lib/image.h | 21 +++++++++++++++------ docs/core/misc/boot.md | 10 +++++++++- 5 files changed, 37 insertions(+), 19 deletions(-) diff --git a/core/embed/bootloader/bootui.c b/core/embed/bootloader/bootui.c index ae570c84fc..f860c2296a 100644 --- a/core/embed/bootloader/bootui.c +++ b/core/embed/bootloader/bootui.c @@ -83,11 +83,11 @@ void ui_set_initial_setup(bool initial) { initial_setup = initial; } #ifndef NEW_RENDERING static void ui_screen_boot_old(const vendor_header *const vhdr, const image_header *const hdr) { - const int show_string = ((vhdr->vtrust & VTRUST_STRING) == 0); - if ((vhdr->vtrust & VTRUST_RED) == 0) { - boot_background = COLOR_BL_FAIL; - } else { + const int show_string = ((vhdr->vtrust & VTRUST_NO_STRING) == 0); + if ((vhdr->vtrust & VTRUST_NO_RED) != 0) { boot_background = COLOR_BLACK; + } else { + boot_background = COLOR_BL_FAIL; } const uint8_t *vimg = vhdr->vimg; diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 159b9661ba..042c795516 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -325,16 +325,17 @@ void real_jump_to_firmware(void) { "Firmware is corrupted"); secret_prepare_fw( - ((vhdr.vtrust & VTRUST_SECRET) == VTRUST_SECRET_ALLOW) * sectrue, - ((vhdr.vtrust & VTRUST_ALL) == VTRUST_ALL) * sectrue); + ((vhdr.vtrust & VTRUST_SECRET_MASK) == VTRUST_SECRET_ALLOW) * sectrue, + ((vhdr.vtrust & VTRUST_NO_WARNING) == VTRUST_NO_WARNING) * sectrue); - // if all VTRUST flags are unset = ultimate trust => skip the procedure - if ((vhdr.vtrust & VTRUST_ALL) != VTRUST_ALL) { + // if all warnings are disabled in VTRUST flags then skip the procedure + if ((vhdr.vtrust & VTRUST_NO_WARNING) != VTRUST_NO_WARNING) { ui_fadeout(); ui_screen_boot(&vhdr, hdr, 0); ui_fadein(); - int delay = (vhdr.vtrust & VTRUST_WAIT) ^ VTRUST_WAIT; + // The delay is encoded in bitwise complement form. + int delay = (vhdr.vtrust & VTRUST_WAIT_MASK) ^ VTRUST_WAIT_MASK; if (delay > 1) { while (delay > 0) { ui_screen_boot(&vhdr, hdr, delay); @@ -345,7 +346,7 @@ void real_jump_to_firmware(void) { hal_delay(1000); } - if ((vhdr.vtrust & VTRUST_CLICK) == 0) { + if ((vhdr.vtrust & VTRUST_NO_CLICK) == 0) { ui_screen_boot(&vhdr, hdr, -1); ui_click(); } diff --git a/core/embed/bootloader/messages.c b/core/embed/bootloader/messages.c index 5b36003a07..89bc4e365b 100644 --- a/core/embed/bootloader/messages.c +++ b/core/embed/bootloader/messages.c @@ -626,7 +626,7 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, return UPLOAD_ERR_NOT_FIRMWARE_UPGRADE; } - if ((vhdr.vtrust & VTRUST_ALL) != VTRUST_ALL) { + if ((vhdr.vtrust & VTRUST_NO_WARNING) != VTRUST_NO_WARNING) { MSG_SEND_INIT(Failure); MSG_SEND_ASSIGN_VALUE(code, FailureType_Failure_ProcessError); MSG_SEND_ASSIGN_STRING(message, "Not a full-trust image"); @@ -640,7 +640,7 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, #if defined USE_OPTIGA && !defined STM32U5 if (sectrue != secret_wiped() && - ((vhdr.vtrust & VTRUST_SECRET) != VTRUST_SECRET_ALLOW)) { + ((vhdr.vtrust & VTRUST_SECRET_MASK) != VTRUST_SECRET_ALLOW)) { MSG_SEND_INIT(Failure); MSG_SEND_ASSIGN_VALUE(code, FailureType_Failure_ProcessError); MSG_SEND_ASSIGN_STRING(message, "Install restricted"); diff --git a/core/embed/lib/image.h b/core/embed/lib/image.h index bd4fc3508b..a385b54ee8 100644 --- a/core/embed/lib/image.h +++ b/core/embed/lib/image.h @@ -54,19 +54,28 @@ typedef struct { #define MAX_VENDOR_PUBLIC_KEYS 8 -#define VTRUST_WAIT 0x000F -#define VTRUST_RED 0x0010 -#define VTRUST_CLICK 0x0020 -#define VTRUST_STRING 0x0040 +// The mask of the vendor screen wait time in seconds, encoded in bitwise +// complement form. +#define VTRUST_WAIT_MASK 0x000F + +// Use black background instead of red one in the vendor screen. +#define VTRUST_NO_RED 0x0010 + +// Do not require user click to leave the vendor screen. +#define VTRUST_NO_CLICK 0x0020 + +// Do not show vendor string in the vendor screen. +#define VTRUST_NO_STRING 0x0040 // Two bits for historical reasons. On T2B1, only the lower bit was used with // inverted logic (due to late inclusion of the secret handling during // development process). On T3T1, we decided to remedy the situation by // including the upper bit as well. -#define VTRUST_SECRET 0x0180 +#define VTRUST_SECRET_MASK 0x0180 #define VTRUST_SECRET_ALLOW 0x0100 -#define VTRUST_ALL (VTRUST_WAIT | VTRUST_RED | VTRUST_CLICK | VTRUST_STRING) +#define VTRUST_NO_WARNING \ + (VTRUST_WAIT_MASK | VTRUST_NO_RED | VTRUST_NO_CLICK | VTRUST_NO_STRING) typedef struct { uint32_t magic; diff --git a/docs/core/misc/boot.md b/docs/core/misc/boot.md index 7f4de34886..45e504463c 100644 --- a/docs/core/misc/boot.md +++ b/docs/core/misc/boot.md @@ -139,8 +139,16 @@ Vendor trust is stored as bitmap where unset bit means the feature is active. | 2 | 0x0004 | wait 4 seconds | | 3 | 0x0008 | wait 8 seconds | | 4 | 0x0010 | use red background instead of black one | -| 5 | 0x0020 | require user click | +| 5 | 0x0020 | require user click to continue | | 6 | 0x0040 | show vendor string (not just the logo) | +| 7 | 0x0080 | allow access to pairing secret | +| 8 | 0x0100 | disable access to pairing secret | + +Bits 0 to 6 represent vendor screen settings. The wait times are additive. + +Two bits are used for access to the pairing secret for historical reasons. +On T2B1 only bit 7 is evaluated. +On newer models, both bits 7 and 8 are evaluated. ### Firmware Header From 754b0a92b9bf3d49101aa785cfa472ed9f16a201 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 13 May 2024 16:40:11 +0200 Subject: [PATCH 063/626] refactor(core/ui): enable non-conflicting modules even if unused [no changelog] --- core/embed/rust/src/trezorhal/bitblt.rs | 4 ++-- core/embed/rust/src/ui/shape/display/mod.rs | 15 +++------------ 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/core/embed/rust/src/trezorhal/bitblt.rs b/core/embed/rust/src/trezorhal/bitblt.rs index 4803a76593..a234cd302b 100644 --- a/core/embed/rust/src/trezorhal/bitblt.rs +++ b/core/embed/rust/src/trezorhal/bitblt.rs @@ -205,7 +205,7 @@ impl BitBltFill { } /// Fills a rectangle on the display with the specified color. - #[cfg(all(not(feature = "xframebuffer"), feature = "new_rendering"))] + #[cfg(feature = "new_rendering")] pub fn display_fill(&self) { assert!(self.bitblt.dst_x + self.bitblt.width <= ffi::DISPLAY_RESX as u16); assert!(self.bitblt.dst_y + self.bitblt.height <= ffi::DISPLAY_RESY as u16); @@ -424,7 +424,7 @@ impl<'a> BitBltCopy<'a> { /// Copies a part of the source bitmap to the display. /// /// - The source bitmap uses the RGB565 format. - #[cfg(all(not(feature = "xframebuffer"), feature = "new_rendering"))] + #[cfg(feature = "new_rendering")] pub fn display_copy(&self) { assert!(self.bitblt.dst_x + self.bitblt.width <= ffi::DISPLAY_RESX as u16); assert!(self.bitblt.dst_y + self.bitblt.height <= ffi::DISPLAY_RESY as u16); diff --git a/core/embed/rust/src/ui/shape/display/mod.rs b/core/embed/rust/src/ui/shape/display/mod.rs index e4be78b5b5..784c1c53a7 100644 --- a/core/embed/rust/src/ui/shape/display/mod.rs +++ b/core/embed/rust/src/ui/shape/display/mod.rs @@ -3,16 +3,12 @@ pub mod fb_mono8; #[cfg(all(feature = "xframebuffer", feature = "display_mono"))] pub use fb_mono8::render_on_display; -#[cfg(all(not(feature = "xframebuffer"), feature = "display_rgb565"))] +#[cfg(feature = "display_rgb565")] pub mod nofb_rgb565; #[cfg(all(not(feature = "xframebuffer"), feature = "display_rgb565"))] pub use nofb_rgb565::render_on_display; -#[cfg(all( - feature = "xframebuffer", - feature = "display_rgb565", - not(feature = "display_rgba8888") -))] +#[cfg(all(feature = "xframebuffer", feature = "display_rgb565"))] pub mod fb_rgb565; #[cfg(all( feature = "xframebuffer", @@ -21,11 +17,7 @@ pub mod fb_rgb565; ))] pub use fb_rgb565::render_on_display; -#[cfg(all( - feature = "xframebuffer", - feature = "display_rgba8888", - not(feature = "display_rgb565") -))] +#[cfg(all(feature = "xframebuffer", feature = "display_rgba8888",))] pub mod fb_rgba8888; #[cfg(all( feature = "xframebuffer", @@ -34,7 +26,6 @@ pub mod fb_rgba8888; ))] pub use fb_rgba8888::render_on_display; -#[cfg(not(feature = "new_rendering"))] pub mod fake_display; #[cfg(not(feature = "new_rendering"))] pub use fake_display::render_on_display; From ad84f42b0bfa66820efdfd6140634025d597a17e Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 17 May 2024 12:18:34 +0200 Subject: [PATCH 064/626] style(core/rust): clippy hints applied [no changelog] --- core/embed/rust/src/trezorhal/bitblt.rs | 4 ++-- core/embed/rust/src/ui/model_tr/layout.rs | 14 +++++++------- .../rust/src/ui/model_tt/component/loader.rs | 3 ++- core/embed/rust/src/ui/model_tt/layout.rs | 18 +++++++++--------- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/core/embed/rust/src/trezorhal/bitblt.rs b/core/embed/rust/src/trezorhal/bitblt.rs index a234cd302b..e00cb114cc 100644 --- a/core/embed/rust/src/trezorhal/bitblt.rs +++ b/core/embed/rust/src/trezorhal/bitblt.rs @@ -66,8 +66,8 @@ impl ffi::gfx_bitblt_t { /// # SAFETY /// 1) Ensure that the rectangle is completely inside the destination /// bitmap. - /// 2) If the copy or blend operation is used, ensure that the rectangle - /// is completely filled with source bitmap or its part. + /// 2) If the copy or blend operation is used, ensure that the rectangle is + /// completely filled with source bitmap or its part. unsafe fn with_rect(self, r: Rect) -> Self { Self { width: r.width() as u16, diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 7342274bb6..36e2095237 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -512,7 +512,7 @@ extern "C" fn new_confirm_joint_total(n_args: usize, args: *const Obj, kwargs: * ]); content_in_button_page( - TR::joint__title.try_into()?, + TR::joint__title.into(), paragraphs, TR::buttons__hold_to_confirm.into(), Some("".into()), @@ -542,7 +542,7 @@ extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: ]); content_in_button_page( - TR::modify_amount__title.try_into()?, + TR::modify_amount__title.into(), paragraphs, TR::buttons__confirm.into(), Some("".into()), @@ -914,7 +914,7 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m } content_in_button_page( - TR::modify_fee__title.try_into()?, + TR::modify_fee__title.into(), paragraphs_vec.into_paragraphs(), TR::buttons__confirm.into(), Some("".into()), @@ -1099,7 +1099,7 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - extern "C" fn new_show_passphrase() -> Obj { let block = move || { - let text: TString = TR::passphrase__please_enter.try_into()?; + let text: TString = TR::passphrase__please_enter.into(); let paragraph = Paragraph::new(&theme::TEXT_NORMAL, text).centered(); let content = Paragraphs::new([paragraph]); let obj = LayoutObj::new(content)?; @@ -1223,7 +1223,7 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut ]); content_in_button_page( - TR::coinjoin__title.try_into()?, + TR::coinjoin__title.into(), paragraphs, TR::buttons__hold_to_confirm.into(), None, @@ -1418,7 +1418,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut }; content_in_button_page( - title.try_into()?, + title.into(), paragraphs.into_paragraphs(), button, Some("".into()), @@ -1430,7 +1430,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = |_args: &[Obj], _kwargs: &Map| { - let title: TString = TR::word_count__title.try_into()?; + let title: TString = TR::word_count__title.into(); let choices: Vec<TString<'static>, 5> = ["12", "18", "20", "24", "33"] .map(|num| num.into()) diff --git a/core/embed/rust/src/ui/model_tt/component/loader.rs b/core/embed/rust/src/ui/model_tt/component/loader.rs index b876451ada..22efb9abd4 100644 --- a/core/embed/rust/src/ui/model_tt/component/loader.rs +++ b/core/embed/rust/src/ui/model_tt/component/loader.rs @@ -7,7 +7,6 @@ use crate::{ component::{Component, Event, EventCtx, Pad}, display::{self, toif::Icon, Color}, geometry::{Alignment2D, Offset, Rect}, - lerp::Lerp, model_tt::constant, shape::{self, Renderer}, util::animation_disabled, @@ -180,6 +179,8 @@ impl Component for Loader { } else { #[cfg(feature = "haptic")] { + use crate::ui::lerp::Lerp; + if matches!(self.state, State::Growing(_)) { let progress = self.progress(now).unwrap() as f32 / display::LOADER_MAX as f32; diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 3dc60a6e6d..bf09daf3a1 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -549,7 +549,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let verb: TString = kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.try_into()?)?; + let verb: TString = kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.into())?; let extra: Option<TString> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; @@ -887,7 +887,7 @@ fn new_show_modal( let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; - let button: TString = kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.try_into()?)?; + let button: TString = kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.into())?; let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; let time_ms: u32 = kwargs.get_or(Qstr::MP_QSTR_time_ms, 0)?; @@ -1038,9 +1038,9 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let description: TString = TR::addr_mismatch__contact_support_at.try_into()?; - let url: TString = TR::addr_mismatch__support_url.try_into()?; - let button: TString = TR::buttons__quit.try_into()?; + let description: TString = TR::addr_mismatch__contact_support_at.into(); + let url: TString = TR::addr_mismatch__support_url.into(); + let button: TString = TR::buttons__quit.into(); let icon = BlendedImage::new( theme::IMAGE_BG_OCTAGON, @@ -1387,9 +1387,9 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut .with_spacing(theme::RECOVERY_SPACING); let notification: TString = if dry_run { - TR::recovery__title_dry_run.try_into()? + TR::recovery__title_dry_run.into() } else { - TR::recovery__title.try_into()? + TR::recovery__title.into() }; let obj = if info_button { @@ -1420,9 +1420,9 @@ extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mu let block = move |_args: &[Obj], kwargs: &Map| { let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; let title: TString = if dry_run { - TR::recovery__title_dry_run.try_into()? + TR::recovery__title_dry_run.into() } else { - TR::recovery__title.try_into()? + TR::recovery__title.into() }; let paragraphs = Paragraphs::new(Paragraph::new( From c9027b1a1a3d2cfe88363691dd586fe62d90fb83 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 17 May 2024 15:03:04 +0200 Subject: [PATCH 065/626] fix(core): fix alpha component extraction [no changelog] --- core/embed/lib/gfx_color.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/lib/gfx_color.h b/core/embed/lib/gfx_color.h index 2258980981..9df362c852 100644 --- a/core/embed/lib/gfx_color.h +++ b/core/embed/lib/gfx_color.h @@ -76,7 +76,7 @@ typedef uint32_t gfx_color32_t; // Extracts blue component from gfx_color32_t #define gfx_color32_to_b(c) (((c) & 0x000000FF) >> 0) // Extracts alpha component from gfx_color32_t -#define gfx_color32_to_a(c) (((c) & 0xFF000000) >> 0) +#define gfx_color32_to_a(c) (((c) & 0xFF000000) >> 24) // 4-bit linear interpolation between `fg` and `bg` #define a4_lerp(fg, bg, alpha) (((fg) * (alpha) + ((bg) * (15 - (alpha)))) / 15) From e6f2fa711ea5c013d963f183fea7cac8be7b0747 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 14 Apr 2024 12:28:57 +0200 Subject: [PATCH 066/626] refactor(core): reorganize model specific files in site-scons [no changelog] --- core/SConscript.boardloader | 7 +- core/SConscript.bootloader | 7 +- core/SConscript.bootloader_ci | 7 +- core/SConscript.bootloader_emu | 8 +-- core/SConscript.firmware | 9 +-- core/SConscript.prodtest | 9 +-- core/SConscript.reflash | 9 +-- core/SConscript.unix | 3 +- core/site_scons/boards/__init__.py | 2 - core/site_scons/models/D001/__init__.py | 16 +++++ .../{boards => models/D001}/discovery.py | 4 +- core/site_scons/models/D002/__init__.py | 16 +++++ .../{boards => models/D002}/discovery2.py | 4 +- core/site_scons/models/T1B1/__init__.py | 16 +++++ .../{boards => models/T1B1}/trezor_1.py | 4 +- core/site_scons/models/T2B1/__init__.py | 29 ++++++++ .../{boards => models/T2B1}/trezor_r_v10.py | 4 +- .../{boards => models/T2B1}/trezor_r_v3.py | 4 +- .../{boards => models/T2B1}/trezor_r_v4.py | 4 +- .../{boards => models/T2B1}/trezor_r_v6.py | 4 +- core/site_scons/models/T2T1/__init__.py | 16 +++++ .../{boards => models/T2T1}/trezor_t.py | 4 +- core/site_scons/models/T3T1/__init__.py | 23 ++++++ .../T3T1}/trezor_t3t1_revE.py | 4 +- .../{boards => models/T3T1}/trezor_t3t1_v4.py | 4 +- core/site_scons/models/__init__.py | 40 +++++++++++ .../{boards => models}/stm32f4_common.py | 0 .../{boards => models}/stm32u5_common.py | 0 core/site_scons/tools.py | 72 ------------------- 29 files changed, 209 insertions(+), 120 deletions(-) delete mode 100644 core/site_scons/boards/__init__.py create mode 100644 core/site_scons/models/D001/__init__.py rename core/site_scons/{boards => models/D001}/discovery.py (97%) create mode 100644 core/site_scons/models/D002/__init__.py rename core/site_scons/{boards => models/D002}/discovery2.py (97%) create mode 100644 core/site_scons/models/T1B1/__init__.py rename core/site_scons/{boards => models/T1B1}/trezor_1.py (94%) create mode 100644 core/site_scons/models/T2B1/__init__.py rename core/site_scons/{boards => models/T2B1}/trezor_r_v10.py (97%) rename core/site_scons/{boards => models/T2B1}/trezor_r_v3.py (96%) rename core/site_scons/{boards => models/T2B1}/trezor_r_v4.py (96%) rename core/site_scons/{boards => models/T2B1}/trezor_r_v6.py (96%) create mode 100644 core/site_scons/models/T2T1/__init__.py rename core/site_scons/{boards => models/T2T1}/trezor_t.py (97%) create mode 100644 core/site_scons/models/T3T1/__init__.py rename core/site_scons/{boards => models/T3T1}/trezor_t3t1_revE.py (98%) rename core/site_scons/{boards => models/T3T1}/trezor_t3t1_v4.py (98%) create mode 100644 core/site_scons/models/__init__.py rename core/site_scons/{boards => models}/stm32f4_common.py (100%) rename core/site_scons/{boards => models}/stm32u5_common.py (100%) diff --git a/core/SConscript.boardloader b/core/SConscript.boardloader index e5d898cd63..8739c28b14 100644 --- a/core/SConscript.boardloader +++ b/core/SConscript.boardloader @@ -1,10 +1,11 @@ # pylint: disable=E0602 import os -import tools +import tools, models TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +HW_REVISION = ARGUMENTS.get('HW_REVISION', None) NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' if TREZOR_MODEL in ('1', ): @@ -95,7 +96,7 @@ env = Environment(ENV=os.environ, CPPDEFINES_IMPLICIT=[] ) -FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) +FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) FILE_SUFFIX= env.get('ENV')['SUFFIX'] LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT'] @@ -177,7 +178,7 @@ program_elf = env.Command( '$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc', ) -BINARY_NAME = f"build/boardloader/boardloader-{tools.get_model_identifier(TREZOR_MODEL)}" +BINARY_NAME = f"build/boardloader/boardloader-{models.get_model_identifier(TREZOR_MODEL)}" BINARY_NAME += "-" + tools.get_version('embed/boardloader/version.h') BINARY_NAME += "-" + tools.get_git_revision_short_hash() BINARY_NAME += "-dirty" if tools.get_git_modified() else "" diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 709743fe5e..6c3452fabd 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -1,12 +1,13 @@ # pylint: disable=E0602 import os -import tools +import tools, models TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) BOOTLOADER_QA = ARGUMENTS.get('BOOTLOADER_QA', '0') == '1' PRODUCTION = 0 if BOOTLOADER_QA else ARGUMENTS.get('PRODUCTION', '0') == '1' +HW_REVISION = ARGUMENTS.get('HW_REVISION', None) NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' if TREZOR_MODEL in ('1', ): @@ -150,7 +151,7 @@ env = Environment( CPPDEFINES_IMPLICIT=[] ) -FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) +FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) FILE_SUFFIX= env.get('ENV')['SUFFIX'] LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT'] @@ -306,7 +307,7 @@ env.Depends(program_elf, rust) SUFFIX = '_qa' if BOOTLOADER_QA else '' -BINARY_NAME = f"build/bootloader/bootloader-{tools.get_model_identifier(TREZOR_MODEL)}{SUFFIX}" +BINARY_NAME = f"build/bootloader/bootloader-{models.get_model_identifier(TREZOR_MODEL)}{SUFFIX}" BINARY_NAME += "-" + tools.get_version('embed/bootloader/version.h') BINARY_NAME += "-" + tools.get_git_revision_short_hash() BINARY_NAME += "-dirty" if tools.get_git_modified() else "" diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 63417a1172..0dca24c0fb 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -1,10 +1,11 @@ # pylint: disable=E0602 import os -import tools +import tools, models TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +HW_REVISION = ARGUMENTS.get('HW_REVISION', None) NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' if TREZOR_MODEL in ('1', 'DISC1', 'DISC2'): @@ -124,7 +125,7 @@ env = Environment( CPPDEFINES_IMPLICIT=[] ) -FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) +FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) FILE_SUFFIX= env.get('ENV')['SUFFIX'] LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT'] @@ -220,7 +221,7 @@ program_elf = env.Command( '$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc', ) -BINARY_NAME = f"build/bootloader_ci/bootloader_ci-{tools.get_model_identifier(TREZOR_MODEL)}" +BINARY_NAME = f"build/bootloader_ci/bootloader_ci-{models.get_model_identifier(TREZOR_MODEL)}" BINARY_NAME += "-" + tools.get_version('embed/bootloader_ci/version.h') BINARY_NAME += "-" + tools.get_git_revision_short_hash() BINARY_NAME += "-dirty" if tools.get_git_modified() else "" diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index a87339c728..c290f72347 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -1,11 +1,11 @@ # pylint: disable=E0602 import os -import tools -import boards +import tools, models TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +HW_REVISION = 'emulator' NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' DMA2D = False @@ -237,8 +237,8 @@ elif TREZOR_MODEL in ('1',): else: raise ValueError('Unknown Trezor model') -MODEL_IDENTIFIER = tools.get_model_identifier(TREZOR_MODEL) -MODEL_AS_NUMBER = str(boards.get_hw_model_as_number(MODEL_IDENTIFIER)) +MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL) +MODEL_AS_NUMBER = str(models.get_hw_model_as_number(MODEL_IDENTIFIER)) ALLPATHS = ['embed/rust', 'embed/bootloader', diff --git a/core/SConscript.firmware b/core/SConscript.firmware index e47842a999..6a6afbc457 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -2,7 +2,7 @@ # fmt: off import os -import tools +import tools, models BITCOIN_ONLY = ARGUMENTS.get('BITCOIN_ONLY', '0') PRODUCTION = ARGUMENTS.get('PRODUCTION', '0') == '1' @@ -13,6 +13,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) PYOPT = ARGUMENTS.get('PYOPT', '1') DISABLE_OPTIGA = ARGUMENTS.get('DISABLE_OPTIGA', '0') == '1' +HW_REVISION = ARGUMENTS.get('HW_REVISION', None) THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' @@ -432,7 +433,7 @@ env = Environment( CPPDEFINES_IMPLICIT=[] ) -FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) +FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) FILE_SUFFIX= env.get('ENV')['SUFFIX'] @@ -848,7 +849,7 @@ env.Append(LINKFLAGS=f' -L{RUST_LIBDIR}') env.Append(LINKFLAGS=f' -l{RUST_LIB}') -MODEL_IDENTIFIER = tools.get_model_identifier(TREZOR_MODEL) +MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL) BOOTLOADER_SUFFIX = MODEL_IDENTIFIER if BOOTLOADER_QA: BOOTLOADER_SUFFIX += '_qa' @@ -901,7 +902,7 @@ if CMAKELISTS != 0: env.Depends(program_elf, cmake_gen) env.Depends(program_elf, rust) -BINARY_NAME = f"build/firmware/firmware-{tools.get_model_identifier(TREZOR_MODEL)}" +BINARY_NAME = f"build/firmware/firmware-{models.get_model_identifier(TREZOR_MODEL)}" if not EVERYTHING: BINARY_NAME += "-btconly" BINARY_NAME += "-" + tools.get_version('embed/firmware/version.h') diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index a12714e873..087de05319 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -1,12 +1,13 @@ # pylint: disable=E0602 import os -import tools +import tools, models TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) PRODUCTION = ARGUMENTS.get('PRODUCTION', '0') == '1' BOOTLOADER_DEVEL = ARGUMENTS.get('BOOTLOADER_DEVEL', '0') == '1' +HW_REVISION = ARGUMENTS.get('HW_REVISION', None) if TREZOR_MODEL in ('DISC1', 'DISC2'): # skip prodtest build @@ -115,7 +116,7 @@ env = Environment( CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')), CPPDEFINES_IMPLICIT=[]) -FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) +FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) FILE_SUFFIX= env.get('ENV')['SUFFIX'] LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT'] @@ -203,7 +204,7 @@ obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftriv obj_program.extend(env.Object(source=SOURCE_PRODTEST)) obj_program.extend(env.Object(source=SOURCE_HAL)) -MODEL_IDENTIFIER = tools.get_model_identifier(TREZOR_MODEL) +MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL) if (vh := ARGUMENTS.get("VENDOR_HEADER", None)): @@ -238,7 +239,7 @@ program_elf = env.Command( '$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc', ) -BINARY_NAME = f"build/prodtest/prodtest-{tools.get_model_identifier(TREZOR_MODEL)}" +BINARY_NAME = f"build/prodtest/prodtest-{models.get_model_identifier(TREZOR_MODEL)}" BINARY_NAME += "-" + tools.get_version('embed/prodtest/version.h') BINARY_NAME += "-" + tools.get_git_revision_short_hash() BINARY_NAME += "-dirty" if tools.get_git_modified() else "" diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 5312e6d1fc..8e739c14d1 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -1,10 +1,11 @@ # pylint: disable=E0602 import os -import tools +import tools, models TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +HW_REVISION = ARGUMENTS.get('HW_REVISION', None) if TREZOR_MODEL in ('DISC1', 'DISC2'): # skip reflash build @@ -89,7 +90,7 @@ env = Environment( CPPDEFINES_IMPLICIT=[] ) -FEATURES_AVAILABLE = tools.configure_board(TREZOR_MODEL, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) +FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_HAL, PATH_HAL) FILE_SUFFIX= env.get('ENV')['SUFFIX'] LINKER_SCRIPT_SUFFIX= env.get('ENV')['LINKER_SCRIPT'] @@ -166,7 +167,7 @@ obj_program += env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial- obj_program += env.Object(source=SOURCE_REFLASH) obj_program += env.Object(source=SOURCE_HAL) -MODEL_IDENTIFIER = tools.get_model_identifier(TREZOR_MODEL) +MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL) VENDORHEADER = f'embed/vendorheader/{MODEL_IDENTIFIER}/vendorheader_' + ('unsafe_signed_dev.bin' if ARGUMENTS.get('PRODUCTION', '0') == '0' else 'satoshilabs_signed_prod.bin') @@ -185,7 +186,7 @@ program_elf = env.Command( '$LINK -o $TARGET $CCFLAGS $CFLAGS $LINKFLAGS $SOURCES -lc_nano -lgcc', ) -BINARY_NAME = f"build/reflash/reflash-{tools.get_model_identifier(TREZOR_MODEL)}" +BINARY_NAME = f"build/reflash/reflash-{models.get_model_identifier(TREZOR_MODEL)}" BINARY_NAME += "-" + tools.get_version('embed/reflash/version.h') BINARY_NAME += "-" + tools.get_git_revision_short_hash() BINARY_NAME += "-dirty" if tools.get_git_modified() else "" diff --git a/core/SConscript.unix b/core/SConscript.unix index c2dfe80497..8924593e3c 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -2,7 +2,7 @@ # fmt: off import os -import tools +import tools, models BITCOIN_ONLY = ARGUMENTS.get('BITCOIN_ONLY', '0') EVERYTHING = BITCOIN_ONLY != '1' @@ -10,6 +10,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') DMA2D = TREZOR_MODEL in ('T', 'T3T1') OPTIGA = TREZOR_MODEL in ('R', 'T3T1') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) +HW_REVISION ='emulator' THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' diff --git a/core/site_scons/boards/__init__.py b/core/site_scons/boards/__init__.py deleted file mode 100644 index a4b4c81dd1..0000000000 --- a/core/site_scons/boards/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -def get_hw_model_as_number(hw_model: str) -> int: - return int.from_bytes(hw_model.encode(), "little") diff --git a/core/site_scons/models/D001/__init__.py b/core/site_scons/models/D001/__init__.py new file mode 100644 index 0000000000..8110fbd075 --- /dev/null +++ b/core/site_scons/models/D001/__init__.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +from typing import Optional + +from .discovery import configure + + +def configure_board( + revision: Optional[int | str], + features_wanted: list[str], + env: dict, # type: ignore + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +): + return configure(env, features_wanted, defines, sources, paths) diff --git a/core/site_scons/boards/discovery.py b/core/site_scons/models/D001/discovery.py similarity index 97% rename from core/site_scons/boards/discovery.py rename to core/site_scons/models/D001/discovery.py index f06b4126ed..d9e3a9331d 100644 --- a/core/site_scons/boards/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32f4_common import stm32f4_common_files +from .. import get_hw_model_as_number +from ..stm32f4_common import stm32f4_common_files def configure( diff --git a/core/site_scons/models/D002/__init__.py b/core/site_scons/models/D002/__init__.py new file mode 100644 index 0000000000..87d5cc5c50 --- /dev/null +++ b/core/site_scons/models/D002/__init__.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +from typing import Optional + +from .discovery2 import configure + + +def configure_board( + revision: Optional[int | str], + features_wanted: list[str], + env: dict, # type: ignore + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +): + return configure(env, features_wanted, defines, sources, paths) diff --git a/core/site_scons/boards/discovery2.py b/core/site_scons/models/D002/discovery2.py similarity index 97% rename from core/site_scons/boards/discovery2.py rename to core/site_scons/models/D002/discovery2.py index fa9edeb4b5..c50cc834e8 100644 --- a/core/site_scons/boards/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32u5_common import stm32u5_common_files +from .. import get_hw_model_as_number +from ..stm32u5_common import stm32u5_common_files def configure( diff --git a/core/site_scons/models/T1B1/__init__.py b/core/site_scons/models/T1B1/__init__.py new file mode 100644 index 0000000000..9bc4544bfb --- /dev/null +++ b/core/site_scons/models/T1B1/__init__.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +from typing import Optional + +from .trezor_1 import configure + + +def configure_board( + revision: Optional[int | str], + features_wanted: list[str], + env: dict, # type: ignore + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +): + return configure(env, features_wanted, defines, sources, paths) diff --git a/core/site_scons/boards/trezor_1.py b/core/site_scons/models/T1B1/trezor_1.py similarity index 94% rename from core/site_scons/boards/trezor_1.py rename to core/site_scons/models/T1B1/trezor_1.py index 8c565383f0..2fcdf6e284 100644 --- a/core/site_scons/boards/trezor_1.py +++ b/core/site_scons/models/T1B1/trezor_1.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32f4_common import stm32f4_common_files +from .. import get_hw_model_as_number +from ..stm32f4_common import stm32f4_common_files def configure( diff --git a/core/site_scons/models/T2B1/__init__.py b/core/site_scons/models/T2B1/__init__.py new file mode 100644 index 0000000000..675c9dbffa --- /dev/null +++ b/core/site_scons/models/T2B1/__init__.py @@ -0,0 +1,29 @@ +from __future__ import annotations + +from typing import Optional + +from .trezor_r_v3 import configure as configure_r3 +from .trezor_r_v4 import configure as configure_r4 +from .trezor_r_v6 import configure as configure_r6 +from .trezor_r_v10 import configure as configure_r10 + + +def configure_board( + revision: Optional[int | str], + features_wanted: list[str], + env: dict, # type: ignore + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +): + if revision is None: + revision = 10 + if revision == 3: + return configure_r3(env, features_wanted, defines, sources, paths) + elif revision == 4: + return configure_r4(env, features_wanted, defines, sources, paths) + elif revision == 6: + return configure_r6(env, features_wanted, defines, sources, paths) + elif revision == 10: + return configure_r10(env, features_wanted, defines, sources, paths) + raise Exception("Unknown model_r_version") diff --git a/core/site_scons/boards/trezor_r_v10.py b/core/site_scons/models/T2B1/trezor_r_v10.py similarity index 97% rename from core/site_scons/boards/trezor_r_v10.py rename to core/site_scons/models/T2B1/trezor_r_v10.py index 96be803d47..3327af4a26 100644 --- a/core/site_scons/boards/trezor_r_v10.py +++ b/core/site_scons/models/T2B1/trezor_r_v10.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32f4_common import stm32f4_common_files +from .. import get_hw_model_as_number +from ..stm32f4_common import stm32f4_common_files def configure( diff --git a/core/site_scons/boards/trezor_r_v3.py b/core/site_scons/models/T2B1/trezor_r_v3.py similarity index 96% rename from core/site_scons/boards/trezor_r_v3.py rename to core/site_scons/models/T2B1/trezor_r_v3.py index 15546db251..4cd7a6adfd 100644 --- a/core/site_scons/boards/trezor_r_v3.py +++ b/core/site_scons/models/T2B1/trezor_r_v3.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32f4_common import stm32f4_common_files +from .. import get_hw_model_as_number +from ..stm32f4_common import stm32f4_common_files def configure( diff --git a/core/site_scons/boards/trezor_r_v4.py b/core/site_scons/models/T2B1/trezor_r_v4.py similarity index 96% rename from core/site_scons/boards/trezor_r_v4.py rename to core/site_scons/models/T2B1/trezor_r_v4.py index 0df0131c63..90bf5d12dc 100644 --- a/core/site_scons/boards/trezor_r_v4.py +++ b/core/site_scons/models/T2B1/trezor_r_v4.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32f4_common import stm32f4_common_files +from .. import get_hw_model_as_number +from ..stm32f4_common import stm32f4_common_files def configure( diff --git a/core/site_scons/boards/trezor_r_v6.py b/core/site_scons/models/T2B1/trezor_r_v6.py similarity index 96% rename from core/site_scons/boards/trezor_r_v6.py rename to core/site_scons/models/T2B1/trezor_r_v6.py index 29a8f2af68..db2f8ff484 100644 --- a/core/site_scons/boards/trezor_r_v6.py +++ b/core/site_scons/models/T2B1/trezor_r_v6.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32f4_common import stm32f4_common_files +from .. import get_hw_model_as_number +from ..stm32f4_common import stm32f4_common_files def configure( diff --git a/core/site_scons/models/T2T1/__init__.py b/core/site_scons/models/T2T1/__init__.py new file mode 100644 index 0000000000..623b0651a7 --- /dev/null +++ b/core/site_scons/models/T2T1/__init__.py @@ -0,0 +1,16 @@ +from __future__ import annotations + +from typing import Optional + +from .trezor_t import configure + + +def configure_board( + revision: Optional[int | str], + features_wanted: list[str], + env: dict, # type: ignore + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +): + return configure(env, features_wanted, defines, sources, paths) diff --git a/core/site_scons/boards/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py similarity index 97% rename from core/site_scons/boards/trezor_t.py rename to core/site_scons/models/T2T1/trezor_t.py index b038cc356d..ef675f7e40 100644 --- a/core/site_scons/boards/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32f4_common import stm32f4_common_files +from .. import get_hw_model_as_number +from ..stm32f4_common import stm32f4_common_files def configure( diff --git a/core/site_scons/models/T3T1/__init__.py b/core/site_scons/models/T3T1/__init__.py new file mode 100644 index 0000000000..2b968aca04 --- /dev/null +++ b/core/site_scons/models/T3T1/__init__.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +from typing import Optional + +from .trezor_t3t1_revE import configure as configure_revE +from .trezor_t3t1_v4 import configure as configure_v4 + + +def configure_board( + revision: Optional[int | str], + features_wanted: list[str], + env: dict, # type: ignore + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +): + if revision is None: + revision = "E" + if revision == 4: + return configure_v4(env, features_wanted, defines, sources, paths) + elif revision == "E": + return configure_revE(env, features_wanted, defines, sources, paths) + raise Exception("Unknown model_t3t1_version") diff --git a/core/site_scons/boards/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py similarity index 98% rename from core/site_scons/boards/trezor_t3t1_revE.py rename to core/site_scons/models/T3T1/trezor_t3t1_revE.py index e422eac2df..f1a4beabcb 100644 --- a/core/site_scons/boards/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32u5_common import stm32u5_common_files +from .. import get_hw_model_as_number +from ..stm32u5_common import stm32u5_common_files def configure( diff --git a/core/site_scons/boards/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py similarity index 98% rename from core/site_scons/boards/trezor_t3t1_v4.py rename to core/site_scons/models/T3T1/trezor_t3t1_v4.py index e9e169cfa1..c40435b595 100644 --- a/core/site_scons/boards/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -1,7 +1,7 @@ from __future__ import annotations -from . import get_hw_model_as_number -from .stm32u5_common import stm32u5_common_files +from .. import get_hw_model_as_number +from ..stm32u5_common import stm32u5_common_files def configure( diff --git a/core/site_scons/models/__init__.py b/core/site_scons/models/__init__.py new file mode 100644 index 0000000000..1703168f67 --- /dev/null +++ b/core/site_scons/models/__init__.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +import importlib +from typing import Optional + + +def get_hw_model_as_number(hw_model: str) -> int: + return int.from_bytes(hw_model.encode(), "little") + + +def configure_board( + model: str, + revision: Optional[str | int], + features_wanted: list[str], + env: dict, # type: ignore + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +) -> list[str]: + imported_module = importlib.import_module("models." + get_model_identifier(model)) + return imported_module.configure_board( + revision, features_wanted, env, defines, sources, paths + ) + + +def get_model_identifier(model: str) -> str: + if model == "1": + return "T1B1" + elif model == "T": + return "T2T1" + elif model == "R": + return "T2B1" + elif model == "T3T1": + return "T3T1" + elif model == "DISC1": + return "D001" + elif model == "DISC2": + return "D002" + else: + raise Exception("Unknown model") diff --git a/core/site_scons/boards/stm32f4_common.py b/core/site_scons/models/stm32f4_common.py similarity index 100% rename from core/site_scons/boards/stm32f4_common.py rename to core/site_scons/models/stm32f4_common.py diff --git a/core/site_scons/boards/stm32u5_common.py b/core/site_scons/models/stm32u5_common.py similarity index 100% rename from core/site_scons/boards/stm32u5_common.py rename to core/site_scons/models/stm32u5_common.py diff --git a/core/site_scons/tools.py b/core/site_scons/tools.py index e069c20e5b..315ca5cef7 100644 --- a/core/site_scons/tools.py +++ b/core/site_scons/tools.py @@ -4,19 +4,6 @@ import zlib from pathlib import Path -from boards import ( - discovery, - discovery2, - trezor_1, - trezor_r_v3, - trezor_r_v4, - trezor_r_v6, - trezor_r_v10, - trezor_t, - trezor_t3t1_revE, - trezor_t3t1_v4, -) - HERE = Path(__file__).parent.resolve() # go up from site_scons to core/ @@ -37,65 +24,6 @@ def add_font( sources.append(sourcefile) -def configure_board( - model: str, - features_wanted: list[str], - env: dict, # type: ignore - defines: list[str | tuple[str, str]], - sources: list[str], - paths: list[str], -) -> list[str]: - model_r_version = 10 - model_t3t1_version = "E" - - if model in ("1",): - return trezor_1.configure(env, features_wanted, defines, sources, paths) - elif model in ("T",): - return trezor_t.configure(env, features_wanted, defines, sources, paths) - elif model in ("R",): - if model_r_version == 3: - return trezor_r_v3.configure(env, features_wanted, defines, sources, paths) - elif model_r_version == 4: - return trezor_r_v4.configure(env, features_wanted, defines, sources, paths) - elif model_r_version == 6: - return trezor_r_v6.configure(env, features_wanted, defines, sources, paths) - elif model_r_version == 10: - return trezor_r_v10.configure(env, features_wanted, defines, sources, paths) - raise Exception("Unknown model_r_version") - elif model in ("T3T1",): - if model_t3t1_version == 4: - return trezor_t3t1_v4.configure( - env, features_wanted, defines, sources, paths - ) - elif model_t3t1_version == "E": - return trezor_t3t1_revE.configure( - env, features_wanted, defines, sources, paths - ) - raise Exception("Unknown model_t3t1_version") - elif model in ("DISC1",): - return discovery.configure(env, features_wanted, defines, sources, paths) - elif model in ("DISC2",): - return discovery2.configure(env, features_wanted, defines, sources, paths) - raise Exception("Unknown model") - - -def get_model_identifier(model: str) -> str: - if model == "1": - return "T1B1" - elif model == "T": - return "T2T1" - elif model == "R": - return "T2B1" - elif model == "T3T1": - return "T3T1" - elif model == "DISC1": - return "D001" - elif model == "DISC2": - return "D002" - else: - raise Exception("Unknown model") - - def get_version(file: str) -> str: major = 0 minor = 0 From 0b5e8ed4804c82991cdaa43f9124835f325292d9 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 14 Apr 2024 21:16:50 +0200 Subject: [PATCH 067/626] refactor(core): introduce emulator boards [no changelog] --- core/SConscript.bootloader_emu | 80 ++------------- core/SConscript.unix | 114 ++++----------------- core/embed/rust/build.rs | 3 +- core/embed/trezorhal/boards/board-unix.h | 33 ------ core/embed/trezorhal/boards/t1b1-unix.h | 22 ++++ core/embed/trezorhal/boards/t2b1-unix.h | 24 +++++ core/embed/trezorhal/boards/t2t1-unix.h | 39 +++++++ core/embed/trezorhal/boards/t3t1-unix.h | 27 +++++ core/embed/trezorhal/unix/display-unix.c | 79 +++----------- core/embed/trezorhal/unix/display-unix.h | 41 -------- core/embed/trezorhal/unix/display_driver.c | 76 +++----------- core/site_scons/models/T1B1/__init__.py | 6 +- core/site_scons/models/T1B1/emulator.py | 38 +++++++ core/site_scons/models/T2B1/__init__.py | 32 +++--- core/site_scons/models/T2B1/emulator.py | 48 +++++++++ core/site_scons/models/T2T1/__init__.py | 6 +- core/site_scons/models/T2T1/emulator.py | 60 +++++++++++ core/site_scons/models/T3T1/__init__.py | 26 +++-- core/site_scons/models/T3T1/emulator.py | 68 ++++++++++++ 19 files changed, 427 insertions(+), 395 deletions(-) delete mode 100644 core/embed/trezorhal/boards/board-unix.h create mode 100644 core/embed/trezorhal/boards/t1b1-unix.h create mode 100644 core/embed/trezorhal/boards/t2b1-unix.h create mode 100644 core/embed/trezorhal/boards/t2t1-unix.h create mode 100644 core/embed/trezorhal/boards/t3t1-unix.h delete mode 100644 core/embed/trezorhal/unix/display-unix.h create mode 100644 core/site_scons/models/T1B1/emulator.py create mode 100644 core/site_scons/models/T2B1/emulator.py create mode 100644 core/site_scons/models/T2T1/emulator.py create mode 100644 core/site_scons/models/T3T1/emulator.py diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index c290f72347..d71fbc8811 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -7,7 +7,6 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) HW_REVISION = 'emulator' NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' -DMA2D = False if TREZOR_MODEL in ('1', 'DISC1'): # skip bootloader build @@ -21,13 +20,15 @@ if TREZOR_MODEL in ('1', 'DISC1'): ) Return() -FEATURES_WANTED = ["input", "rgb_led", "dma2d"] +FEATURES_WANTED = ["input", "rgb_led", "dma2d", "optiga_hal"] if NEW_RENDERING: FEATURES_WANTED.append("new_rendering") CCFLAGS_MOD = '' CPPPATH_MOD = [] +CPPDEFINES_HAL = [] +PATH_HAL = [] CPPDEFINES_MOD = [] SOURCE_MOD = [] SOURCE_MOD_CRYPTO = [] @@ -116,39 +117,14 @@ SOURCE_MOD += [ if NEW_RENDERING: CPPDEFINES_MOD += ['NEW_RENDERING'] - if TREZOR_MODEL in ('T',): - CPPDEFINES_MOD += ['DISPLAY_RGB565'] - elif TREZOR_MODEL in ('R', '1',): - CPPDEFINES_MOD += ['XFRAMEBUFFER', 'DISPLAY_MONO'] - elif TREZOR_MODEL in ('T3T1',): - CPPDEFINES_MOD += ['XFRAMEBUFFER', 'DISPLAY_RGB565'] SOURCE_MOD += [ 'embed/lib/gfx_draw.c', ] else: SOURCE_MOD += [ 'embed/lib/display_draw.c', - 'embed/lib/dma2d_emul.c', ] -if TREZOR_MODEL in ('1', ): - SOURCE_MOD += [ - 'embed/models/model_T1B1_layout.c', - ] -elif TREZOR_MODEL in ('T', ): - SOURCE_MOD += [ - 'embed/models/model_T2T1_layout.c', - ] -elif TREZOR_MODEL in ('R', ): - SOURCE_MOD += [ - 'embed/models/model_T2B1_layout.c', - ] -elif TREZOR_MODEL in ('T3T1',): - SOURCE_MOD += [ - 'embed/models/model_T3T1_layout.c', - ] - - SOURCE_NANOPB = [ 'vendor/nanopb/pb_common.c', 'vendor/nanopb/pb_decode.c', @@ -187,11 +163,6 @@ else: 'embed/trezorhal/unix/display-unix.c', ] -if TREZOR_MODEL in ('R', 'T3T1'): - SOURCE_TREZORHAL += [ - 'embed/trezorhal/unix/optiga_hal.c', - ] - SOURCE_UNIX = [ 'embed/unix/profile.c', ] @@ -209,6 +180,8 @@ tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) env = Environment(ENV=os.environ, CFLAGS='%s -DCONFIDENTIAL= -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0'))) +FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_UNIX, PATH_HAL) + env.Replace( CP='cp', AS='as', @@ -221,22 +194,6 @@ env.Replace( PYTHON='python', MAKECMAKELISTS='$PYTHON tools/make_cmakelists.py', ) -env.Replace( - TREZOR_MODEL=TREZOR_MODEL, ) - -if TREZOR_MODEL in ('T', 'R'): - CPU_MODEL = 'STM32F427xx' -elif TREZOR_MODEL in ('T3T1', ): - CPU_MODEL = 'STM32U585xx' -elif TREZOR_MODEL in ('DISC1', ): - CPU_MODEL = 'STM32F429xx' -elif TREZOR_MODEL in ('DISC2', ): - CPU_MODEL = 'STM32U5A9xx' -elif TREZOR_MODEL in ('1',): - CPU_MODEL = 'STM32F405xx' -else: - raise ValueError('Unknown Trezor model') - MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL) MODEL_AS_NUMBER = str(models.get_hw_model_as_number(MODEL_IDENTIFIER)) @@ -251,7 +208,7 @@ ALLPATHS = ['embed/rust', 'embed/unix', 'embed/extmod/modtrezorui', 'vendor/nanopb', - ] + CPPPATH_MOD + ] + CPPPATH_MOD + PATH_HAL env.Replace( COPT=env.get('ENV').get('OPTIMIZE', '-Os'), @@ -267,18 +224,11 @@ env.Replace( CPPDEFINES=[ 'BOOTLOADER', 'TREZOR_EMULATOR', - CPU_MODEL, - 'HW_MODEL=' + MODEL_AS_NUMBER, - 'HW_REVISION=' + ('10' if TREZOR_MODEL in ('R',) else '0'), 'TREZOR_MODEL_'+TREZOR_MODEL, - 'TREZOR_BOARD=\\"boards/board-unix.h\\"', - ('FLASH_BIT_ACCESS', '1'), - ('FLASH_BLOCK_WORDS', '1'), - 'MCU_TYPE='+CPU_MODEL, 'PB_FIELD_16BIT', 'PB_ENCODE_ARRAYS_UNPACKED', 'PB_VALIDATE_UTF8', - ] + CPPDEFINES_MOD, + ] + CPPDEFINES_MOD + CPPDEFINES_HAL, ASPPFLAGS='$CFLAGS $CCFLAGS', ) try: @@ -326,24 +276,10 @@ def cargo_build(): if NEW_RENDERING: features.append('new_rendering') - if TREZOR_MODEL in ('T',): - features.append('display_rgb565') - elif TREZOR_MODEL in ('R', '1',): - features.append('display_mono') - features.append('xframebuffer') - elif TREZOR_MODEL in ('T3T1',): - features.append('display_rgb565') - features.append('xframebuffer') - - if TREZOR_MODEL in ('T', 'T3T1'): - features.append('touch') - features.append('backlight') - features.append('dma2d') - if TREZOR_MODEL in ('R', '1'): - features.append('button') features.append("ui") features.append("bootloader") + features.extend(FEATURES_AVAILABLE) cargo_opts = [ diff --git a/core/SConscript.unix b/core/SConscript.unix index 8924593e3c..63cd46cf64 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -7,13 +7,16 @@ import tools, models BITCOIN_ONLY = ARGUMENTS.get('BITCOIN_ONLY', '0') EVERYTHING = BITCOIN_ONLY != '1' TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') -DMA2D = TREZOR_MODEL in ('T', 'T3T1') -OPTIGA = TREZOR_MODEL in ('R', 'T3T1') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) HW_REVISION ='emulator' THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' + +FEATURES_WANTED = ["input", "sd_card", "dma2d", "optiga", "sbu"] +if NEW_RENDERING: + FEATURES_WANTED.append("new_rendering") + if TREZOR_MODEL in ('DISC1', 'DISC2'): # skip unix build env = Environment() @@ -32,6 +35,8 @@ FEATURE_FLAGS = { CCFLAGS_MOD = '' CPPPATH_MOD = [] +CPPDEFINES_HAL = [] +PATH_HAL = [] CPPDEFINES_MOD = [] SOURCE_MOD = [ 'vendor/micropython/extmod/vfs_posix_file.c', @@ -206,11 +211,6 @@ if THP: SOURCE_MOD += [ 'embed/extmod/modtrezorio/modtrezorio.c', ] -if TREZOR_MODEL in ('T', 'T3T1'): - SOURCE_MOD += [ - 'embed/extmod/modtrezorio/ff.c', - 'embed/extmod/modtrezorio/ffunicode.c', - ] # modtrezorui CPPPATH_MOD += [ @@ -245,26 +245,6 @@ else: 'embed/lib/display_draw.c', ] - -if TREZOR_MODEL in ('1', ): - SOURCE_MOD += [ - 'embed/models/model_T1B1_layout.c', - ] -elif TREZOR_MODEL in ('T', ): - SOURCE_MOD += [ - 'embed/models/model_T2T1_layout.c', - ] -elif TREZOR_MODEL in ('R', ): - SOURCE_MOD += [ - 'embed/models/model_T2B1_layout.c', - ] -elif TREZOR_MODEL in ('T3T1', ): - SOURCE_MOD += [ - 'embed/models/model_T3T1_layout.c', - ] - - - CPPDEFINES_MOD += [ 'TREZOR_UI2', 'TRANSLATIONS', @@ -281,14 +261,6 @@ if RASPI: if NEW_RENDERING: CPPDEFINES_MOD += ['NEW_RENDERING'] - if TREZOR_MODEL in ('T',): - CPPDEFINES_MOD += ['DISPLAY_RGB565'] - elif TREZOR_MODEL in ('R', '1',): - CPPDEFINES_MOD += ['XFRAMEBUFFER', 'DISPLAY_MONO'] - elif TREZOR_MODEL in ('T3T1',): - CPPDEFINES_MOD += ['XFRAMEBUFFER', 'DISPLAY_RGB565'] - - # modtrezorutils SOURCE_MOD += [ @@ -453,32 +425,13 @@ SOURCE_UNIX = [ if NEW_RENDERING: SOURCE_MOD += [ 'embed/trezorhal/unix/display_driver.c', - 'embed/trezorhal/unix/dma2d_bitblt.c', 'embed/trezorhal/xdisplay_legacy.c', ] else: SOURCE_MOD += [ 'embed/trezorhal/unix/display-unix.c', - 'embed/lib/dma2d_emul.c', ] - -if TREZOR_MODEL in ('T', 'R', 'T3T1'): - SOURCE_UNIX += [ - 'embed/trezorhal/unix/sbu.c', - ] - -if OPTIGA: - SOURCE_UNIX += [ - 'embed/trezorhal/unix/optiga.c', - ] - -if DMA2D: - CPPDEFINES_MOD += [ - 'USE_DMA2D', - ] - - TRANSLATION_DATA = [ "translations/en.json", "translations/order.json", @@ -504,6 +457,7 @@ else: env = Environment(ENV=os.environ, CFLAGS='%s -DCONFIDENTIAL= -DPYOPT=%s -DBITCOIN_ONLY=%s %s' % (ARGUMENTS.get('CFLAGS', ''), PYOPT, BITCOIN_ONLY, STATIC)) +FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_UNIX, PATH_HAL) if TREZOR_MODEL in ('T', 'T3T1'): UI_LAYOUT = 'UI_LAYOUT_TT' @@ -514,14 +468,17 @@ elif TREZOR_MODEL in ('1', 'R'): else: raise ValueError('Unknown Trezor model') -if TREZOR_MODEL in ('T', 'T3T1'): + +if 'sd_card' in FEATURES_AVAILABLE: SDCARD = True - SOURCE_UNIX += [ - 'embed/trezorhal/unix/sdcard.c', - ] else: SDCARD = False +if 'optiga' in FEATURES_AVAILABLE: + OPTIGA = True +else: + OPTIGA = False + env.Tool('micropython') @@ -571,19 +528,6 @@ if ARGUMENTS.get('TREZOR_MEMPERF', '0') == '1': env.Replace( TREZOR_MODEL=TREZOR_MODEL, ) -if TREZOR_MODEL in ('T', 'R'): - CPU_MODEL = 'STM32F427xx' -elif TREZOR_MODEL in ('T3T1', ): - CPU_MODEL = 'STM32U585xx' -elif TREZOR_MODEL in ('DISC1', ): - CPU_MODEL = 'STM32F429xx' -elif TREZOR_MODEL in ('DISC2', ): - CPU_MODEL = 'STM32U5A9xx' -elif TREZOR_MODEL in ('1',): - CPU_MODEL = 'STM32F405xx' -else: - raise ValueError('Unknown Trezor model') - ALLPATHS=['.', 'embed/rust', 'embed/lib', @@ -595,7 +539,7 @@ ALLPATHS=['.', 'vendor/micropython', 'vendor/micropython/ports/unix', 'vendor/micropython/lib/mp-readline', - ] + CPPPATH_MOD + ] + CPPPATH_MOD + PATH_HAL env.Replace( CCFLAGS='$COPT ' @@ -606,16 +550,11 @@ env.Replace( LIBS=['m'], CPPPATH=ALLPATHS, CPPDEFINES=[ - CPU_MODEL, 'TREZOR_EMULATOR', 'TREZOR_MODEL_'+TREZOR_MODEL, - 'TREZOR_BOARD=\\"boards/board-unix.h\\"', - ('FLASH_BIT_ACCESS', '1'), - ('FLASH_BLOCK_WORDS', '1'), - 'MCU_TYPE='+CPU_MODEL, ('MP_CONFIGFILE', '\\"embed/unix/mpconfigport.h\\"'), UI_LAYOUT, - ] + CPPDEFINES_MOD, + ] + CPPDEFINES_MOD + CPPDEFINES_HAL, ASPPFLAGS='$CFLAGS $CCFLAGS', ) try: @@ -841,7 +780,7 @@ if FROZEN: source=SOURCE_PY, source_dir=SOURCE_PY_DIR, bitcoin_only=BITCOIN_ONLY, - backlight=TREZOR_MODEL in ('T', 'T3T1'), + backlight='backlight' in FEATURES_AVAILABLE, optiga=OPTIGA, ui_layout=UI_LAYOUT, thp=THP, @@ -917,27 +856,16 @@ def cargo_build(): if PYOPT == '0': features.append('debug') - if DMA2D: - features.append('dma2d') + + features.extend(FEATURES_AVAILABLE) if TREZOR_MODEL in ('T', 'T3T1'): - features.append('touch') - features.append('sd_card') features.append('ui_blurring') features.append('ui_jpeg_decoder') - if TREZOR_MODEL in ('R', '1'): - features.append('button') + if NEW_RENDERING: features.append('new_rendering') - if TREZOR_MODEL in ('T',): - features.append('display_rgb565') - elif TREZOR_MODEL in ('R', '1',): - features.append('display_mono') - features.append('xframebuffer') - elif TREZOR_MODEL in ('T3T1',): - features.append('display_rgb565') - features.append('xframebuffer') env.get('ENV')['TREZOR_MODEL'] = TREZOR_MODEL diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index 8b19de12ed..768241b4d8 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -28,7 +28,6 @@ const DEFAULT_BINDGEN_MACROS_COMMON: &[&str] = &[ "-I../trezorhal/unix", "-I../models", "-DTREZOR_EMULATOR", - "-DTREZOR_BOARD=\"boards/board-unix.h\"", ]; #[cfg(feature = "model_tt")] @@ -37,6 +36,7 @@ const DEFAULT_BINDGEN_MACROS_T2T1: &[&str] = &[ "-DTREZOR_MODEL_T", "-DFLASH_BIT_ACCESS=1", "-DFLASH_BLOCK_WORDS=1", + "-DTREZOR_BOARD=\"T2T1/boards/t2t1-unix.h\"", ]; #[cfg(not(feature = "model_tt"))] const DEFAULT_BINDGEN_MACROS_T2T1: &[&str] = &[]; @@ -47,6 +47,7 @@ const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[ "-DTREZOR_MODEL_R", "-DFLASH_BIT_ACCESS=1", "-DFLASH_BLOCK_WORDS=1", + "-DTREZOR_BOARD=\"T2B1/boards/t2b1-unix.h\"", ]; #[cfg(not(feature = "model_tr"))] const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[]; diff --git a/core/embed/trezorhal/boards/board-unix.h b/core/embed/trezorhal/boards/board-unix.h deleted file mode 100644 index c7270c7415..0000000000 --- a/core/embed/trezorhal/boards/board-unix.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _BOARD_UNIX_H -#define _BOARD_UNIX_H - -#ifdef TREZOR_MODEL_T -#define USE_TOUCH 1 -#define USE_SD_CARD 1 -#define USE_SBU 1 -#define USE_RGB_COLORS 1 -#define USE_BACKLIGHT 1 -#endif - -#ifdef TREZOR_MODEL_T3T1 -#define USE_TOUCH 1 -#define USE_SD_CARD 1 -#define USE_SBU 1 -#define USE_RGB_COLORS 1 -#define USE_BACKLIGHT 1 -#define USE_OPTIGA 1 -#endif - -#ifdef TREZOR_MODEL_1 -#define USE_BUTTON 1 -#endif - -#ifdef TREZOR_MODEL_R -#define USE_BUTTON 1 -#define USE_SBU 1 -#define USE_OPTIGA 1 -#endif - -#include "display-unix.h" - -#endif //_BOARD_UNIX_H diff --git a/core/embed/trezorhal/boards/t1b1-unix.h b/core/embed/trezorhal/boards/t1b1-unix.h new file mode 100644 index 0000000000..4337164b3c --- /dev/null +++ b/core/embed/trezorhal/boards/t1b1-unix.h @@ -0,0 +1,22 @@ +#ifndef BOARDS_T1B1_UNIX_H +#define BOARDS_T1B1_UNIX_H + +#define USE_BUTTON 1 + +#define MAX_DISPLAY_RESX 128 +#define MAX_DISPLAY_RESY 64 +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 64 +#define TREZOR_FONT_BPP 1 + +#define WINDOW_WIDTH 200 +#define WINDOW_HEIGHT 340 +#define TOUCH_OFFSET_X 36 +#define TOUCH_OFFSET_Y 92 + +#define ORIENTATION_NS 1 + +#define BACKGROUND_FILE "background_1.h" +#define BACKGROUND_NAME background_1_jpg + +#endif // BOARDS_T1B1_UNIX_H diff --git a/core/embed/trezorhal/boards/t2b1-unix.h b/core/embed/trezorhal/boards/t2b1-unix.h new file mode 100644 index 0000000000..284fad0828 --- /dev/null +++ b/core/embed/trezorhal/boards/t2b1-unix.h @@ -0,0 +1,24 @@ +#ifndef BOARDS_T2B1_UNIX_H +#define BOARDS_T2B1_UNIX_H + +#define USE_BUTTON 1 +#define USE_SBU 1 +#define USE_OPTIGA 1 + +#define MAX_DISPLAY_RESX 128 +#define MAX_DISPLAY_RESY 64 +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 64 +#define TREZOR_FONT_BPP 1 + +#define WINDOW_WIDTH 193 +#define WINDOW_HEIGHT 339 +#define TOUCH_OFFSET_X 32 +#define TOUCH_OFFSET_Y 84 + +#define ORIENTATION_NS 1 + +#define BACKGROUND_FILE "background_T2B1.h" +#define BACKGROUND_NAME background_T2B1_jpg + +#endif // BOARDS_T2B1_UNIX_H diff --git a/core/embed/trezorhal/boards/t2t1-unix.h b/core/embed/trezorhal/boards/t2t1-unix.h new file mode 100644 index 0000000000..c3aa23d2a3 --- /dev/null +++ b/core/embed/trezorhal/boards/t2t1-unix.h @@ -0,0 +1,39 @@ +#ifndef BOARDS_T2T1_UNIX_H +#define BOARDS_T2T1_UNIX_H + +#define USE_TOUCH 1 +#define USE_SD_CARD 1 +#define USE_SBU 1 +#define USE_RGB_COLORS 1 +#define USE_BACKLIGHT 1 + +// ILI9341V, GC9307 and ST7789V drivers support 240px x 320px display resolution +#define MAX_DISPLAY_RESX 240 +#define MAX_DISPLAY_RESY 320 +#define DISPLAY_RESX 240 +#define DISPLAY_RESY 240 +#define TREZOR_FONT_BPP 4 + +#define ORIENTATION_NSEW 1 + +#ifdef TREZOR_EMULATOR_RASPI +#define WINDOW_WIDTH 480 +#define WINDOW_HEIGHT 320 +#define TOUCH_OFFSET_X 110 +#define TOUCH_OFFSET_Y 40 + +#define BACKGROUND_FILE "background_raspi.h" +#define BACKGROUND_NAME background_raspi_jpg + +#else +#define WINDOW_WIDTH 400 +#define WINDOW_HEIGHT 600 +#define TOUCH_OFFSET_X 80 +#define TOUCH_OFFSET_Y 110 + +#define BACKGROUND_FILE "background_T.h" +#define BACKGROUND_NAME background_T_jpg + +#endif + +#endif // BOARDS_T2T1_UNIX_H diff --git a/core/embed/trezorhal/boards/t3t1-unix.h b/core/embed/trezorhal/boards/t3t1-unix.h new file mode 100644 index 0000000000..b7d4876f75 --- /dev/null +++ b/core/embed/trezorhal/boards/t3t1-unix.h @@ -0,0 +1,27 @@ +#ifndef BOARDS_T3T1_UNIX_H +#define BOARDS_T3T1_UNIX_H + +#define USE_TOUCH 1 +#define USE_SD_CARD 1 +#define USE_SBU 1 +#define USE_RGB_COLORS 1 +#define USE_BACKLIGHT 1 +#define USE_OPTIGA 1 + +#define MAX_DISPLAY_RESX 240 +#define MAX_DISPLAY_RESY 240 +#define DISPLAY_RESX 240 +#define DISPLAY_RESY 240 +#define TREZOR_FONT_BPP 4 + +#define WINDOW_WIDTH 400 +#define WINDOW_HEIGHT 600 +#define TOUCH_OFFSET_X 80 +#define TOUCH_OFFSET_Y 110 + +#define ORIENTATION_NSEW 1 + +#define BACKGROUND_FILE "background_T.h" +#define BACKGROUND_NAME background_T_jpg + +#endif // BOARDS_T3T1_UNIX_H diff --git a/core/embed/trezorhal/unix/display-unix.c b/core/embed/trezorhal/unix/display-unix.c index 51fe9cc8c3..0b7f8453df 100644 --- a/core/embed/trezorhal/unix/display-unix.c +++ b/core/embed/trezorhal/unix/display-unix.c @@ -30,50 +30,12 @@ #include <string.h> #include "common.h" -#include "display-unix.h" #include "display.h" #include "profile.h" -#define EMULATOR_BORDER 16 - -#if defined TREZOR_MODEL_T - -#ifdef TREZOR_EMULATOR_RASPI -#define WINDOW_WIDTH 480 -#define WINDOW_HEIGHT 320 -#define TOUCH_OFFSET_X 110 -#define TOUCH_OFFSET_Y 40 -#else -#define WINDOW_WIDTH 400 -#define WINDOW_HEIGHT 600 -#define TOUCH_OFFSET_X 80 -#define TOUCH_OFFSET_Y 110 -#endif - -#elif defined TREZOR_MODEL_1 - -#define WINDOW_WIDTH 200 -#define WINDOW_HEIGHT 340 -#define TOUCH_OFFSET_X 36 -#define TOUCH_OFFSET_Y 92 - -#elif defined TREZOR_MODEL_R - -#define WINDOW_WIDTH 193 -#define WINDOW_HEIGHT 339 -#define TOUCH_OFFSET_X 32 -#define TOUCH_OFFSET_Y 84 - -#elif defined TREZOR_MODEL_T3T1 +#include TREZOR_BOARD -#define WINDOW_WIDTH 400 -#define WINDOW_HEIGHT 600 -#define TOUCH_OFFSET_X 80 -#define TOUCH_OFFSET_Y 110 - -#else -#error Unknown Trezor model -#endif +#define EMULATOR_BORDER 16 static SDL_Window *WINDOW; static SDL_Renderer *RENDERER; @@ -107,7 +69,7 @@ static struct { } PIXELWINDOW; void display_pixeldata(pixel_color c) { -#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R +#if !defined USE_RGB_COLORS // set to white if highest bits of all R, G, B values are set to 1 // bin(10000 100000 10000) = hex(0x8410) // otherwise set to black @@ -202,26 +164,11 @@ void display_init(void) { SDL_PumpEvents(); SDL_SetWindowSize(WINDOW, WINDOW_WIDTH, WINDOW_HEIGHT); #endif -#ifdef TREZOR_EMULATOR_RASPI -#include "background_raspi.h" +#include BACKGROUND_FILE +#define CONCAT_LEN_HELPER(name) name##_len +#define CONCAT_LEN(name) CONCAT_LEN_HELPER(name) BACKGROUND = IMG_LoadTexture_RW( - RENDERER, SDL_RWFromMem(background_raspi_jpg, background_raspi_jpg_len), - 0); -#else -#if defined TREZOR_MODEL_T -#include "background_T.h" - BACKGROUND = IMG_LoadTexture_RW( - RENDERER, SDL_RWFromMem(background_T_jpg, background_T_jpg_len), 0); -#elif defined TREZOR_MODEL_1 -#include "background_1.h" - BACKGROUND = IMG_LoadTexture_RW( - RENDERER, SDL_RWFromMem(background_1_jpg, background_1_jpg_len), 0); -#elif defined TREZOR_MODEL_R -#include "background_T2B1.h" - BACKGROUND = IMG_LoadTexture_RW( - RENDERER, SDL_RWFromMem(background_T2B1_png, background_T2B1_png_len), 0); -#endif -#endif + RENDERER, SDL_RWFromMem(BACKGROUND_NAME, CONCAT_LEN(BACKGROUND_NAME)), 0); if (BACKGROUND) { SDL_SetTextureBlendMode(BACKGROUND, SDL_BLENDMODE_NONE); sdl_touch_offset_x = TOUCH_OFFSET_X; @@ -232,8 +179,8 @@ void display_init(void) { sdl_touch_offset_x = EMULATOR_BORDER; sdl_touch_offset_y = EMULATOR_BORDER; } -#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R - // T1 and TR do not have backlight capabilities in hardware, so +#if !USE_BACKLIGHT + // some models do not have backlight capabilities in hardware, so // setting its value here for emulator to avoid // calling any `set_backlight` functions DISPLAY_BACKLIGHT = 255; @@ -291,12 +238,12 @@ void display_refresh(void) { int display_orientation(int degrees) { if (degrees != DISPLAY_ORIENTATION) { -#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_T3T1 +#if defined ORIENTATION_NSEW if (degrees == 0 || degrees == 90 || degrees == 180 || degrees == 270) { -#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R +#elif defined ORIENTATION_NS if (degrees == 0 || degrees == 180) { #else -#error Unknown Trezor model + if (degrees == 0) { #endif DISPLAY_ORIENTATION = degrees; display_refresh(); @@ -308,7 +255,7 @@ int display_orientation(int degrees) { int display_get_orientation(void) { return DISPLAY_ORIENTATION; } int display_backlight(int val) { -#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R +#if !USE_BACKLIGHT val = 255; #endif if (DISPLAY_BACKLIGHT != val && val >= 0 && val <= 255) { diff --git a/core/embed/trezorhal/unix/display-unix.h b/core/embed/trezorhal/unix/display-unix.h deleted file mode 100644 index a514af0328..0000000000 --- a/core/embed/trezorhal/unix/display-unix.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef _DISPLAY_UNIX_H -#define _DISPLAY_UNIX_H - -#include <stdint.h> - -#ifdef TREZOR_MODEL_T -// ILI9341V, GC9307 and ST7789V drivers support 240px x 320px display resolution -#define MAX_DISPLAY_RESX 240 -#define MAX_DISPLAY_RESY 320 -#define DISPLAY_RESX 240 -#define DISPLAY_RESY 240 -#define TREZOR_FONT_BPP 4 -#endif - -#ifdef TREZOR_MODEL_R -#define MAX_DISPLAY_RESX 128 -#define MAX_DISPLAY_RESY 64 -#define DISPLAY_RESX 128 -#define DISPLAY_RESY 64 -#define TREZOR_FONT_BPP 1 -#endif - -#ifdef TREZOR_MODEL_T3T1 -#define MAX_DISPLAY_RESX 240 -#define MAX_DISPLAY_RESY 240 -#define DISPLAY_RESX 240 -#define DISPLAY_RESY 240 -#define TREZOR_FONT_BPP 4 -#endif - -#ifdef TREZOR_MODEL_1 -#define MAX_DISPLAY_RESX 128 -#define MAX_DISPLAY_RESY 64 -#define DISPLAY_RESX 128 -#define DISPLAY_RESY 64 -#define TREZOR_FONT_BPP 1 -#endif - -extern uint8_t *const DISPLAY_DATA_ADDRESS; - -#endif //_DISPLAY_UNIX_H diff --git a/core/embed/trezorhal/unix/display_driver.c b/core/embed/trezorhal/unix/display_driver.c index 8b51043bb8..3eedcb25ae 100644 --- a/core/embed/trezorhal/unix/display_driver.c +++ b/core/embed/trezorhal/unix/display_driver.c @@ -19,6 +19,8 @@ #define _GNU_SOURCE +#include TREZOR_BOARD + #include <xdisplay.h> #include <SDL.h> @@ -29,45 +31,6 @@ #define EMULATOR_BORDER 16 -#if defined TREZOR_MODEL_T - -#ifdef TREZOR_EMULATOR_RASPI -#define WINDOW_WIDTH 480 -#define WINDOW_HEIGHT 320 -#define TOUCH_OFFSET_X 110 -#define TOUCH_OFFSET_Y 40 -#else -#define WINDOW_WIDTH 400 -#define WINDOW_HEIGHT 600 -#define TOUCH_OFFSET_X 80 -#define TOUCH_OFFSET_Y 110 -#endif - -#elif defined TREZOR_MODEL_1 - -#define WINDOW_WIDTH 200 -#define WINDOW_HEIGHT 340 -#define TOUCH_OFFSET_X 36 -#define TOUCH_OFFSET_Y 92 - -#elif defined TREZOR_MODEL_R - -#define WINDOW_WIDTH 193 -#define WINDOW_HEIGHT 339 -#define TOUCH_OFFSET_X 32 -#define TOUCH_OFFSET_Y 84 - -#elif defined TREZOR_MODEL_T3T1 - -#define WINDOW_WIDTH 400 -#define WINDOW_HEIGHT 600 -#define TOUCH_OFFSET_X 80 -#define TOUCH_OFFSET_Y 110 - -#else -#error Unknown Trezor model -#endif - typedef struct { // Current display orientation (0 or 180) int orientation_angle; @@ -167,27 +130,12 @@ void display_init(void) { SDL_PumpEvents(); SDL_SetWindowSize(drv->window, WINDOW_WIDTH, WINDOW_HEIGHT); #endif -#ifdef TREZOR_EMULATOR_RASPI -#include "background_raspi.h" +#include BACKGROUND_FILE +#define CONCAT_LEN_HELPER(name) name##_len +#define CONCAT_LEN(name) CONCAT_LEN_HELPER(name) drv->background = IMG_LoadTexture_RW( drv->renderer, - SDL_RWFromMem(background_raspi_jpg, background_raspi_jpg_len), 0); -#else -#if defined TREZOR_MODEL_T -#include "background_T.h" - drv->background = IMG_LoadTexture_RW( - drv->renderer, SDL_RWFromMem(background_T_jpg, background_T_jpg_len), 0); -#elif defined TREZOR_MODEL_1 -#include "background_1.h" - drv->background = IMG_LoadTexture_RW( - drv->renderer, SDL_RWFromMem(background_1_jpg, background_1_jpg_len), 0); -#elif defined TREZOR_MODEL_R -#include "background_T2B1.h" - drv->background = IMG_LoadTexture_RW( - drv->renderer, - SDL_RWFromMem(background_T2B1_png, background_T2B1_png_len), 0); -#endif -#endif + SDL_RWFromMem(BACKGROUND_NAME, CONCAT_LEN(BACKGROUND_NAME)), 0); if (drv->background) { SDL_SetTextureBlendMode(drv->background, SDL_BLENDMODE_NONE); sdl_touch_offset_x = TOUCH_OFFSET_X; @@ -198,8 +146,8 @@ void display_init(void) { sdl_touch_offset_x = EMULATOR_BORDER; sdl_touch_offset_y = EMULATOR_BORDER; } -#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R - // T1 and TR do not have backlight capabilities in hardware, so +#if !USE_BACKLIGHT + // some models do not have backlight capabilities in hardware, so // setting its value here for emulator to avoid // calling any `set_backlight` functions drv->backlight_level = 255; @@ -225,7 +173,7 @@ void display_finish_actions(void) { int display_set_backlight(int level) { display_driver_t *drv = &g_display_driver; -#if defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R +#if !USE_BACKLIGHT level = 255; #endif @@ -245,12 +193,12 @@ int display_get_backlight(void) { int display_set_orientation(int angle) { display_driver_t *drv = &g_display_driver; if (angle != drv->orientation_angle) { -#if defined TREZOR_MODEL_T || defined TREZOR_MODEL_T3T1 +#if defined ORIENTATION_NSEW if (angle == 0 || angle == 90 || angle == 180 || angle == 270) { -#elif defined TREZOR_MODEL_1 || defined TREZOR_MODEL_R +#elif defined ORIENTATION_NS if (angle == 0 || angle == 180) { #else -#error Unknown Trezor model + if (angle == 0) { #endif drv->orientation_angle = angle; display_refresh(); diff --git a/core/site_scons/models/T1B1/__init__.py b/core/site_scons/models/T1B1/__init__.py index 9bc4544bfb..ad9d99a5a3 100644 --- a/core/site_scons/models/T1B1/__init__.py +++ b/core/site_scons/models/T1B1/__init__.py @@ -2,6 +2,7 @@ from typing import Optional +from .emulator import configure as emul from .trezor_1 import configure @@ -13,4 +14,7 @@ def configure_board( sources: list[str], paths: list[str], ): - return configure(env, features_wanted, defines, sources, paths) + if revision == "emulator": + return emul(env, features_wanted, defines, sources, paths) + else: + return configure(env, features_wanted, defines, sources, paths) diff --git a/core/site_scons/models/T1B1/emulator.py b/core/site_scons/models/T1B1/emulator.py new file mode 100644 index 0000000000..89e69daa93 --- /dev/null +++ b/core/site_scons/models/T1B1/emulator.py @@ -0,0 +1,38 @@ +from __future__ import annotations + +from .. import get_hw_model_as_number + + +def configure( + env: dict, + features_wanted: list[str], + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +) -> list[str]: + + features_available: list[str] = [] + board = "t1b1-unix.h" + hw_model = get_hw_model_as_number("T1B1") + hw_revision = 0 + mcu = "STM32F405xx" + + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER", "DISPLAY_MONO"] + features_available.append("xframebuffer") + features_available.append("display_mono") + + defines += [mcu] + defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f"HW_MODEL={hw_model}"] + defines += [f"HW_REVISION={hw_revision}"] + defines += [f"MCU_TYPE={mcu}"] + defines += ["FLASH_BIT_ACCESS=1"] + defines += ["FLASH_BLOCK_WORDS=1"] + + if "input" in features_wanted: + features_available.append("button") + + sources += ["embed/models/model_T1B1_layout.c"] + + return features_available diff --git a/core/site_scons/models/T2B1/__init__.py b/core/site_scons/models/T2B1/__init__.py index 675c9dbffa..352cc1961b 100644 --- a/core/site_scons/models/T2B1/__init__.py +++ b/core/site_scons/models/T2B1/__init__.py @@ -2,10 +2,7 @@ from typing import Optional -from .trezor_r_v3 import configure as configure_r3 -from .trezor_r_v4 import configure as configure_r4 -from .trezor_r_v6 import configure as configure_r6 -from .trezor_r_v10 import configure as configure_r10 +from . import emulator, trezor_r_v3, trezor_r_v4, trezor_r_v6, trezor_r_v10 def configure_board( @@ -16,14 +13,21 @@ def configure_board( sources: list[str], paths: list[str], ): - if revision is None: - revision = 10 - if revision == 3: - return configure_r3(env, features_wanted, defines, sources, paths) - elif revision == 4: - return configure_r4(env, features_wanted, defines, sources, paths) - elif revision == 6: - return configure_r6(env, features_wanted, defines, sources, paths) - elif revision == 10: - return configure_r10(env, features_wanted, defines, sources, paths) + # Set default revision if None + revision = revision or 10 + + # Mapping of revisions to their respective configurations + revision_map = { + "emulator": emulator, + 3: trezor_r_v3, + 4: trezor_r_v4, + 6: trezor_r_v6, + 10: trezor_r_v10, + } + + module = revision_map.get(revision) + + if module: + return module.configure(env, features_wanted, defines, sources, paths) + raise Exception("Unknown model_r_version") diff --git a/core/site_scons/models/T2B1/emulator.py b/core/site_scons/models/T2B1/emulator.py new file mode 100644 index 0000000000..c0a368279c --- /dev/null +++ b/core/site_scons/models/T2B1/emulator.py @@ -0,0 +1,48 @@ +from __future__ import annotations + +from .. import get_hw_model_as_number + + +def configure( + env: dict, + features_wanted: list[str], + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +) -> list[str]: + + features_available: list[str] = [] + board = "t2b1-unix.h" + hw_model = get_hw_model_as_number("T2B1") + hw_revision = 0 + mcu = "STM32F427xx" + + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER", "DISPLAY_MONO"] + features_available.append("xframebuffer") + features_available.append("display_mono") + + defines += [mcu] + defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f"HW_MODEL={hw_model}"] + defines += [f"HW_REVISION={hw_revision}"] + defines += [f"MCU_TYPE={mcu}"] + defines += ["FLASH_BIT_ACCESS=1"] + defines += ["FLASH_BLOCK_WORDS=1"] + + if "sbu" in features_wanted: + sources += ["embed/trezorhal/unix/sbu.c"] + + if "optiga_hal" in features_wanted: + sources += ["embed/trezorhal/unix/optiga_hal.c"] + + if "optiga" in features_wanted: + sources += ["embed/trezorhal/unix/optiga.c"] + features_available.append("optiga") + + if "input" in features_wanted: + features_available.append("button") + + sources += ["embed/models/model_T2B1_layout.c"] + + return features_available diff --git a/core/site_scons/models/T2T1/__init__.py b/core/site_scons/models/T2T1/__init__.py index 623b0651a7..ca5e0403eb 100644 --- a/core/site_scons/models/T2T1/__init__.py +++ b/core/site_scons/models/T2T1/__init__.py @@ -2,6 +2,7 @@ from typing import Optional +from .emulator import configure as emul from .trezor_t import configure @@ -13,4 +14,7 @@ def configure_board( sources: list[str], paths: list[str], ): - return configure(env, features_wanted, defines, sources, paths) + if revision == "emulator": + return emul(env, features_wanted, defines, sources, paths) + else: + return configure(env, features_wanted, defines, sources, paths) diff --git a/core/site_scons/models/T2T1/emulator.py b/core/site_scons/models/T2T1/emulator.py new file mode 100644 index 0000000000..7473e01e90 --- /dev/null +++ b/core/site_scons/models/T2T1/emulator.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from .. import get_hw_model_as_number + + +def configure( + env: dict, + features_wanted: list[str], + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +) -> list[str]: + + features_available: list[str] = [] + board = "t2t1-unix.h" + hw_model = get_hw_model_as_number("T2T1") + hw_revision = 0 + mcu = "STM32F427xx" + + if "new_rendering" in features_wanted: + defines += ["DISPLAY_RGB565"] + features_available.append("display_rgb565") + + defines += [mcu] + defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f"HW_MODEL={hw_model}"] + defines += [f"HW_REVISION={hw_revision}"] + defines += [f"MCU_TYPE={mcu}"] + defines += ["FLASH_BIT_ACCESS=1"] + defines += ["FLASH_BLOCK_WORDS=1"] + + if "dma2d" in features_wanted: + features_available.append("dma2d") + if "new_rendering" in features_wanted: + sources += [ + "embed/trezorhal/unix/dma2d_bitblt.c", + ] + else: + sources += ["embed/lib/dma2d_emul.c"] + defines += ["USE_DMA2D"] + + if "sd_card" in features_wanted: + features_available.append("sd_card") + sources += [ + "embed/trezorhal/unix/sdcard.c", + "embed/extmod/modtrezorio/ff.c", + "embed/extmod/modtrezorio/ffunicode.c", + ] + + if "sbu" in features_wanted: + sources += ["embed/trezorhal/unix/sbu.c"] + + if "input" in features_wanted: + features_available.append("touch") + + features_available.append("backlight") + + sources += ["embed/models/model_T2T1_layout.c"] + + return features_available diff --git a/core/site_scons/models/T3T1/__init__.py b/core/site_scons/models/T3T1/__init__.py index 2b968aca04..6e343c3c05 100644 --- a/core/site_scons/models/T3T1/__init__.py +++ b/core/site_scons/models/T3T1/__init__.py @@ -2,8 +2,7 @@ from typing import Optional -from .trezor_t3t1_revE import configure as configure_revE -from .trezor_t3t1_v4 import configure as configure_v4 +from . import emulator, trezor_t3t1_revE, trezor_t3t1_v4 def configure_board( @@ -14,10 +13,19 @@ def configure_board( sources: list[str], paths: list[str], ): - if revision is None: - revision = "E" - if revision == 4: - return configure_v4(env, features_wanted, defines, sources, paths) - elif revision == "E": - return configure_revE(env, features_wanted, defines, sources, paths) - raise Exception("Unknown model_t3t1_version") + # Set default revision if None + revision = revision or "E" + + # Mapping of revisions to their respective configurations + revision_map = { + "emulator": emulator, + 4: trezor_t3t1_v4, + "E": trezor_t3t1_revE, + } + + module = revision_map.get(revision) + + if module: + return module.configure(env, features_wanted, defines, sources, paths) + + raise Exception("Unknown model_r_version") diff --git a/core/site_scons/models/T3T1/emulator.py b/core/site_scons/models/T3T1/emulator.py new file mode 100644 index 0000000000..9a1ebf4249 --- /dev/null +++ b/core/site_scons/models/T3T1/emulator.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +from .. import get_hw_model_as_number + + +def configure( + env: dict, + features_wanted: list[str], + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +) -> list[str]: + + features_available: list[str] = [] + board = "t3t1-unix.h" + hw_model = get_hw_model_as_number("T3T1") + hw_revision = 0 + mcu = "STM32FU585xx" + + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER", "DISPLAY_RGB565"] + features_available.append("xframebuffer") + features_available.append("display_rgb565") + + defines += [mcu] + defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f"HW_MODEL={hw_model}"] + defines += [f"HW_REVISION={hw_revision}"] + defines += [f"MCU_TYPE={mcu}"] + # todo change to blockwise flash when implemented in unix + defines += ["FLASH_BIT_ACCESS=1"] + defines += ["FLASH_BLOCK_WORDS=1"] + + if "dma2d" in features_wanted: + features_available.append("dma2d") + if "new_rendering" in features_wanted: + sources += [ + "embed/trezorhal/unix/dma2d_bitblt.c", + ] + else: + sources += ["embed/lib/dma2d_emul.c"] + defines += ["USE_DMA2D"] + + if "sd_card" in features_wanted: + features_available.append("sd_card") + sources += [ + "embed/trezorhal/unix/sdcard.c", + "embed/extmod/modtrezorio/ff.c", + "embed/extmod/modtrezorio/ffunicode.c", + ] + + if "sbu" in features_wanted: + sources += ["embed/trezorhal/unix/sbu.c"] + + if "optiga_hal" in features_wanted: + sources += ["embed/trezorhal/unix/optiga_hal.c"] + + if "optiga" in features_wanted: + sources += ["embed/trezorhal/unix/optiga.c"] + + if "input" in features_wanted: + features_available.append("touch") + + features_available.append("backlight") + + sources += ["embed/models/model_T3T1_layout.c"] + + return features_available From 9166dc330efd368832d2f78f6dd21db78b7e0fca Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 15 Apr 2024 11:17:14 +0200 Subject: [PATCH 068/626] refactor(core): reorganize model-specific files in embed/models [no changelog] --- core/Makefile | 12 +- .../D001}/boards/stm32f429i-disc1.h | 0 core/embed/models/{ => D001}/model_D001.h | 0 core/embed/models/D001/model_D001_layout.c | 1 + .../D002}/boards/stm32u5a9j-dk.h | 0 core/embed/models/{ => D002}/model_D002.h | 0 .../models/{ => D002}/model_D002_layout.c | 0 .../unix => models/T1B1}/background_1.h | 0 .../unix => models/T1B1}/background_1.jpg | Bin .../T1B1}/boards/t1b1-unix.h | 2 +- .../T1B1}/boards/trezor_1.h | 0 core/embed/models/{ => T1B1}/model_T1B1.h | 0 .../models/{ => T1B1}/model_T1B1_layout.c | 0 .../unix => models/T2B1}/background_T2B1.h | 0 .../unix => models/T2B1}/background_T2B1.png | Bin .../T2B1}/boards/t2b1-unix.h | 4 +- .../T2B1}/boards/trezor_r_v10.h | 0 .../T2B1}/boards/trezor_r_v3.h | 0 .../T2B1}/boards/trezor_r_v4.h | 0 .../T2B1}/boards/trezor_r_v6.h | 0 core/embed/models/{ => T2B1}/model_T2B1.h | 0 .../models/{ => T2B1}/model_T2B1_layout.c | 0 .../unix => models/T2T1}/background_T.h | 0 .../unix => models/T2T1}/background_T.jpg | Bin .../unix => models/T2T1}/background_raspi.h | 0 .../unix => models/T2T1}/background_raspi.jpg | Bin .../T2T1}/boards/t2t1-unix.h | 2 +- .../T2T1}/boards/trezor_t.h | 0 core/embed/models/{ => T2T1}/model_T2T1.h | 0 .../models/{ => T2T1}/model_T2T1_layout.c | 0 .../T3T1}/Clocks_T3T1_revE.md | 0 core/embed/models/T3T1/background_T3T1.h | 3063 +++++++++++++++++ core/embed/models/T3T1/background_T3T1.jpg | Bin 0 -> 36707 bytes .../T3T1}/boards/t3t1-unix.h | 4 +- .../T3T1}/boards/trezor_t3t1_revE.h | 0 .../T3T1}/boards/trezor_t3t1_v4.h | 0 core/embed/models/{ => T3T1}/model_T3T1.h | 0 .../models/{ => T3T1}/model_T3T1_layout.c | 0 core/embed/models/model.h | 12 +- core/embed/models/model_D001_layout.c | 1 - core/site_scons/models/D001/discovery.py | 6 +- core/site_scons/models/D002/discovery2.py | 6 +- core/site_scons/models/T1B1/emulator.py | 6 +- core/site_scons/models/T1B1/trezor_1.py | 6 +- core/site_scons/models/T2B1/emulator.py | 6 +- core/site_scons/models/T2B1/trezor_r_v10.py | 6 +- core/site_scons/models/T2B1/trezor_r_v3.py | 6 +- core/site_scons/models/T2B1/trezor_r_v4.py | 6 +- core/site_scons/models/T2B1/trezor_r_v6.py | 6 +- core/site_scons/models/T2T1/emulator.py | 6 +- core/site_scons/models/T2T1/trezor_t.py | 6 +- core/site_scons/models/T3T1/emulator.py | 6 +- .../models/T3T1/trezor_t3t1_revE.py | 6 +- core/site_scons/models/T3T1/trezor_t3t1_v4.py | 6 +- 54 files changed, 3124 insertions(+), 61 deletions(-) rename core/embed/{trezorhal => models/D001}/boards/stm32f429i-disc1.h (100%) rename core/embed/models/{ => D001}/model_D001.h (100%) create mode 120000 core/embed/models/D001/model_D001_layout.c rename core/embed/{trezorhal => models/D002}/boards/stm32u5a9j-dk.h (100%) rename core/embed/models/{ => D002}/model_D002.h (100%) rename core/embed/models/{ => D002}/model_D002_layout.c (100%) rename core/embed/{trezorhal/unix => models/T1B1}/background_1.h (100%) rename core/embed/{trezorhal/unix => models/T1B1}/background_1.jpg (100%) rename core/embed/{trezorhal => models/T1B1}/boards/t1b1-unix.h (89%) rename core/embed/{trezorhal => models/T1B1}/boards/trezor_1.h (100%) rename core/embed/models/{ => T1B1}/model_T1B1.h (100%) rename core/embed/models/{ => T1B1}/model_T1B1_layout.c (100%) rename core/embed/{trezorhal/unix => models/T2B1}/background_T2B1.h (100%) rename core/embed/{trezorhal/unix => models/T2B1}/background_T2B1.png (100%) rename core/embed/{trezorhal => models/T2B1}/boards/t2b1-unix.h (81%) rename core/embed/{trezorhal => models/T2B1}/boards/trezor_r_v10.h (100%) rename core/embed/{trezorhal => models/T2B1}/boards/trezor_r_v3.h (100%) rename core/embed/{trezorhal => models/T2B1}/boards/trezor_r_v4.h (100%) rename core/embed/{trezorhal => models/T2B1}/boards/trezor_r_v6.h (100%) rename core/embed/models/{ => T2B1}/model_T2B1.h (100%) rename core/embed/models/{ => T2B1}/model_T2B1_layout.c (100%) rename core/embed/{trezorhal/unix => models/T2T1}/background_T.h (100%) rename core/embed/{trezorhal/unix => models/T2T1}/background_T.jpg (100%) rename core/embed/{trezorhal/unix => models/T2T1}/background_raspi.h (100%) rename core/embed/{trezorhal/unix => models/T2T1}/background_raspi.jpg (100%) rename core/embed/{trezorhal => models/T2T1}/boards/t2t1-unix.h (94%) rename core/embed/{trezorhal => models/T2T1}/boards/trezor_t.h (100%) rename core/embed/models/{ => T2T1}/model_T2T1.h (100%) rename core/embed/models/{ => T2T1}/model_T2T1_layout.c (100%) rename core/embed/{trezorhal/boards => models/T3T1}/Clocks_T3T1_revE.md (100%) create mode 100644 core/embed/models/T3T1/background_T3T1.h create mode 100644 core/embed/models/T3T1/background_T3T1.jpg rename core/embed/{trezorhal => models/T3T1}/boards/t3t1-unix.h (83%) rename core/embed/{trezorhal => models/T3T1}/boards/trezor_t3t1_revE.h (100%) rename core/embed/{trezorhal => models/T3T1}/boards/trezor_t3t1_v4.h (100%) rename core/embed/models/{ => T3T1}/model_T3T1.h (100%) rename core/embed/models/{ => T3T1}/model_T3T1_layout.c (100%) delete mode 120000 core/embed/models/model_D001_layout.c diff --git a/core/Makefile b/core/Makefile index 64ae432be5..1cdbfdd6bd 100644 --- a/core/Makefile +++ b/core/Makefile @@ -45,28 +45,28 @@ OPENOCD_TRANSPORT ?= hla_swd ifeq ($(TREZOR_MODEL), 1) MCU = STM32F2 -LAYOUT_FILE = embed/models/model_T1B1.h +LAYOUT_FILE = embed/models/T1B1/model_T1B1.h OPENOCD_TARGET = target/stm32f2x.cfg else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T)) MCU = STM32F4 -LAYOUT_FILE = embed/models/model_T2T1.h +LAYOUT_FILE = embed/models/T2T1/model_T2T1.h OPENOCD_TARGET = target/stm32f4x.cfg MODEL_FEATURE = model_tt else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),R)) MCU = STM32F4 -LAYOUT_FILE = embed/models/model_T2B1.h +LAYOUT_FILE = embed/models/T2B1/model_T2B1.h OPENOCD_TARGET = target/stm32f4x.cfg MODEL_FEATURE = model_tr else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3T1)) MCU = STM32U5 OPENOCD_TARGET = target/stm32u5x.cfg -LAYOUT_FILE = embed/models/model_T3T1.h +LAYOUT_FILE = embed/models/T3T1/model_T3T1.h else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC1)) MCU = STM32F4 -LAYOUT_FILE = embed/models/model_D001.h +LAYOUT_FILE = embed/models/D001/model_D001.h else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC2)) MCU = STM32U5 -LAYOUT_FILE = embed/models/model_D002.h +LAYOUT_FILE = embed/models/D002/model_D002.h OPENOCD_TARGET = target/stm32u5x.cfg else $(error Unknown TREZOR_MODEL: $(TREZOR_MODEL)) diff --git a/core/embed/trezorhal/boards/stm32f429i-disc1.h b/core/embed/models/D001/boards/stm32f429i-disc1.h similarity index 100% rename from core/embed/trezorhal/boards/stm32f429i-disc1.h rename to core/embed/models/D001/boards/stm32f429i-disc1.h diff --git a/core/embed/models/model_D001.h b/core/embed/models/D001/model_D001.h similarity index 100% rename from core/embed/models/model_D001.h rename to core/embed/models/D001/model_D001.h diff --git a/core/embed/models/D001/model_D001_layout.c b/core/embed/models/D001/model_D001_layout.c new file mode 120000 index 0000000000..6851dc987b --- /dev/null +++ b/core/embed/models/D001/model_D001_layout.c @@ -0,0 +1 @@ +../T2T1/model_T2T1_layout.c \ No newline at end of file diff --git a/core/embed/trezorhal/boards/stm32u5a9j-dk.h b/core/embed/models/D002/boards/stm32u5a9j-dk.h similarity index 100% rename from core/embed/trezorhal/boards/stm32u5a9j-dk.h rename to core/embed/models/D002/boards/stm32u5a9j-dk.h diff --git a/core/embed/models/model_D002.h b/core/embed/models/D002/model_D002.h similarity index 100% rename from core/embed/models/model_D002.h rename to core/embed/models/D002/model_D002.h diff --git a/core/embed/models/model_D002_layout.c b/core/embed/models/D002/model_D002_layout.c similarity index 100% rename from core/embed/models/model_D002_layout.c rename to core/embed/models/D002/model_D002_layout.c diff --git a/core/embed/trezorhal/unix/background_1.h b/core/embed/models/T1B1/background_1.h similarity index 100% rename from core/embed/trezorhal/unix/background_1.h rename to core/embed/models/T1B1/background_1.h diff --git a/core/embed/trezorhal/unix/background_1.jpg b/core/embed/models/T1B1/background_1.jpg similarity index 100% rename from core/embed/trezorhal/unix/background_1.jpg rename to core/embed/models/T1B1/background_1.jpg diff --git a/core/embed/trezorhal/boards/t1b1-unix.h b/core/embed/models/T1B1/boards/t1b1-unix.h similarity index 89% rename from core/embed/trezorhal/boards/t1b1-unix.h rename to core/embed/models/T1B1/boards/t1b1-unix.h index 4337164b3c..5570a6e96b 100644 --- a/core/embed/trezorhal/boards/t1b1-unix.h +++ b/core/embed/models/T1B1/boards/t1b1-unix.h @@ -16,7 +16,7 @@ #define ORIENTATION_NS 1 -#define BACKGROUND_FILE "background_1.h" +#define BACKGROUND_FILE "T1B1/background_1.h" #define BACKGROUND_NAME background_1_jpg #endif // BOARDS_T1B1_UNIX_H diff --git a/core/embed/trezorhal/boards/trezor_1.h b/core/embed/models/T1B1/boards/trezor_1.h similarity index 100% rename from core/embed/trezorhal/boards/trezor_1.h rename to core/embed/models/T1B1/boards/trezor_1.h diff --git a/core/embed/models/model_T1B1.h b/core/embed/models/T1B1/model_T1B1.h similarity index 100% rename from core/embed/models/model_T1B1.h rename to core/embed/models/T1B1/model_T1B1.h diff --git a/core/embed/models/model_T1B1_layout.c b/core/embed/models/T1B1/model_T1B1_layout.c similarity index 100% rename from core/embed/models/model_T1B1_layout.c rename to core/embed/models/T1B1/model_T1B1_layout.c diff --git a/core/embed/trezorhal/unix/background_T2B1.h b/core/embed/models/T2B1/background_T2B1.h similarity index 100% rename from core/embed/trezorhal/unix/background_T2B1.h rename to core/embed/models/T2B1/background_T2B1.h diff --git a/core/embed/trezorhal/unix/background_T2B1.png b/core/embed/models/T2B1/background_T2B1.png similarity index 100% rename from core/embed/trezorhal/unix/background_T2B1.png rename to core/embed/models/T2B1/background_T2B1.png diff --git a/core/embed/trezorhal/boards/t2b1-unix.h b/core/embed/models/T2B1/boards/t2b1-unix.h similarity index 81% rename from core/embed/trezorhal/boards/t2b1-unix.h rename to core/embed/models/T2B1/boards/t2b1-unix.h index 284fad0828..c1ae569781 100644 --- a/core/embed/trezorhal/boards/t2b1-unix.h +++ b/core/embed/models/T2B1/boards/t2b1-unix.h @@ -18,7 +18,7 @@ #define ORIENTATION_NS 1 -#define BACKGROUND_FILE "background_T2B1.h" -#define BACKGROUND_NAME background_T2B1_jpg +#define BACKGROUND_FILE "T2B1/background_T2B1.h" +#define BACKGROUND_NAME background_T2B1_png #endif // BOARDS_T2B1_UNIX_H diff --git a/core/embed/trezorhal/boards/trezor_r_v10.h b/core/embed/models/T2B1/boards/trezor_r_v10.h similarity index 100% rename from core/embed/trezorhal/boards/trezor_r_v10.h rename to core/embed/models/T2B1/boards/trezor_r_v10.h diff --git a/core/embed/trezorhal/boards/trezor_r_v3.h b/core/embed/models/T2B1/boards/trezor_r_v3.h similarity index 100% rename from core/embed/trezorhal/boards/trezor_r_v3.h rename to core/embed/models/T2B1/boards/trezor_r_v3.h diff --git a/core/embed/trezorhal/boards/trezor_r_v4.h b/core/embed/models/T2B1/boards/trezor_r_v4.h similarity index 100% rename from core/embed/trezorhal/boards/trezor_r_v4.h rename to core/embed/models/T2B1/boards/trezor_r_v4.h diff --git a/core/embed/trezorhal/boards/trezor_r_v6.h b/core/embed/models/T2B1/boards/trezor_r_v6.h similarity index 100% rename from core/embed/trezorhal/boards/trezor_r_v6.h rename to core/embed/models/T2B1/boards/trezor_r_v6.h diff --git a/core/embed/models/model_T2B1.h b/core/embed/models/T2B1/model_T2B1.h similarity index 100% rename from core/embed/models/model_T2B1.h rename to core/embed/models/T2B1/model_T2B1.h diff --git a/core/embed/models/model_T2B1_layout.c b/core/embed/models/T2B1/model_T2B1_layout.c similarity index 100% rename from core/embed/models/model_T2B1_layout.c rename to core/embed/models/T2B1/model_T2B1_layout.c diff --git a/core/embed/trezorhal/unix/background_T.h b/core/embed/models/T2T1/background_T.h similarity index 100% rename from core/embed/trezorhal/unix/background_T.h rename to core/embed/models/T2T1/background_T.h diff --git a/core/embed/trezorhal/unix/background_T.jpg b/core/embed/models/T2T1/background_T.jpg similarity index 100% rename from core/embed/trezorhal/unix/background_T.jpg rename to core/embed/models/T2T1/background_T.jpg diff --git a/core/embed/trezorhal/unix/background_raspi.h b/core/embed/models/T2T1/background_raspi.h similarity index 100% rename from core/embed/trezorhal/unix/background_raspi.h rename to core/embed/models/T2T1/background_raspi.h diff --git a/core/embed/trezorhal/unix/background_raspi.jpg b/core/embed/models/T2T1/background_raspi.jpg similarity index 100% rename from core/embed/trezorhal/unix/background_raspi.jpg rename to core/embed/models/T2T1/background_raspi.jpg diff --git a/core/embed/trezorhal/boards/t2t1-unix.h b/core/embed/models/T2T1/boards/t2t1-unix.h similarity index 94% rename from core/embed/trezorhal/boards/t2t1-unix.h rename to core/embed/models/T2T1/boards/t2t1-unix.h index c3aa23d2a3..6cc10c6713 100644 --- a/core/embed/trezorhal/boards/t2t1-unix.h +++ b/core/embed/models/T2T1/boards/t2t1-unix.h @@ -31,7 +31,7 @@ #define TOUCH_OFFSET_X 80 #define TOUCH_OFFSET_Y 110 -#define BACKGROUND_FILE "background_T.h" +#define BACKGROUND_FILE "T2T1/background_T.h" #define BACKGROUND_NAME background_T_jpg #endif diff --git a/core/embed/trezorhal/boards/trezor_t.h b/core/embed/models/T2T1/boards/trezor_t.h similarity index 100% rename from core/embed/trezorhal/boards/trezor_t.h rename to core/embed/models/T2T1/boards/trezor_t.h diff --git a/core/embed/models/model_T2T1.h b/core/embed/models/T2T1/model_T2T1.h similarity index 100% rename from core/embed/models/model_T2T1.h rename to core/embed/models/T2T1/model_T2T1.h diff --git a/core/embed/models/model_T2T1_layout.c b/core/embed/models/T2T1/model_T2T1_layout.c similarity index 100% rename from core/embed/models/model_T2T1_layout.c rename to core/embed/models/T2T1/model_T2T1_layout.c diff --git a/core/embed/trezorhal/boards/Clocks_T3T1_revE.md b/core/embed/models/T3T1/Clocks_T3T1_revE.md similarity index 100% rename from core/embed/trezorhal/boards/Clocks_T3T1_revE.md rename to core/embed/models/T3T1/Clocks_T3T1_revE.md diff --git a/core/embed/models/T3T1/background_T3T1.h b/core/embed/models/T3T1/background_T3T1.h new file mode 100644 index 0000000000..fd0cd644bf --- /dev/null +++ b/core/embed/models/T3T1/background_T3T1.h @@ -0,0 +1,3063 @@ +// clang-format off +unsigned char background_T3T1_jpg[] = { + 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x01, 0x02, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0xff, 0xe1, 0x11, 0xe6, + 0x45, 0x78, 0x69, 0x66, 0x00, 0x00, 0x49, 0x49, 0x2a, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x1a, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x28, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x31, 0x01, 0x02, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x32, 0x01, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x47, 0x49, 0x4d, 0x50, 0x20, 0x32, 0x2e, 0x31, 0x30, 0x2e, 0x34, 0x00, + 0x32, 0x30, 0x31, 0x38, 0x3a, 0x30, 0x39, 0x3a, 0x31, 0x31, 0x20, 0x31, + 0x36, 0x3a, 0x31, 0x38, 0x3a, 0x35, 0x31, 0x00, 0x08, 0x00, 0x00, 0x01, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x01, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x01, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x01, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x02, 0x02, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf7, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xff, 0xd8, 0xff, 0xe0, + 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x08, 0x06, 0x06, + 0x07, 0x06, 0x05, 0x08, 0x07, 0x07, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, + 0x14, 0x0d, 0x0c, 0x0b, 0x0b, 0x0c, 0x19, 0x12, 0x13, 0x0f, 0x14, 0x1d, + 0x1a, 0x1f, 0x1e, 0x1d, 0x1a, 0x1c, 0x1c, 0x20, 0x24, 0x2e, 0x27, 0x20, + 0x22, 0x2c, 0x23, 0x1c, 0x1c, 0x28, 0x37, 0x29, 0x2c, 0x30, 0x31, 0x34, + 0x34, 0x34, 0x1f, 0x27, 0x39, 0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, + 0x32, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x09, 0x09, 0x09, 0x0c, 0x0b, 0x0c, + 0x18, 0x0d, 0x0d, 0x18, 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0xff, 0xc0, + 0x00, 0x11, 0x08, 0x01, 0x00, 0x00, 0xaa, 0x03, 0x01, 0x22, 0x00, 0x02, + 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, 0x1f, 0x00, 0x00, 0x01, + 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, + 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, + 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, + 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, + 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, + 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, + 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, + 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, + 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, + 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, + 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, + 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, + 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 0x00, 0x1f, 0x01, 0x00, 0x03, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, + 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, + 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, + 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, + 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, + 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, + 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, + 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, + 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, + 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, + 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, + 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, + 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, + 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, 0xef, 0x28, 0xa2, 0xb8, 0xaf, + 0x1e, 0x78, 0x86, 0xf2, 0xc2, 0x25, 0xb1, 0xd3, 0x98, 0xa4, 0xae, 0xbb, + 0xa5, 0x94, 0x75, 0x51, 0xd8, 0x0f, 0x7a, 0x00, 0xec, 0x5a, 0x78, 0x90, + 0xe1, 0xa5, 0x45, 0x3e, 0xec, 0x29, 0xa6, 0xee, 0xd8, 0x75, 0x9e, 0x2f, + 0xfb, 0xec, 0x57, 0xcf, 0x6f, 0x77, 0x37, 0x98, 0x64, 0x9e, 0x57, 0x72, + 0x7a, 0xb3, 0xb6, 0x4d, 0x3c, 0x6a, 0xd0, 0x2f, 0x73, 0x4e, 0xc0, 0x7d, + 0x01, 0xf6, 0xcb, 0x6f, 0xf9, 0xf8, 0x8b, 0xfe, 0xfb, 0x14, 0x7d, 0xba, + 0xd3, 0xfe, 0x7e, 0x61, 0xff, 0x00, 0xbe, 0xc5, 0x78, 0x18, 0xd5, 0xed, + 0xba, 0x9d, 0xd4, 0xe5, 0xd5, 0xec, 0xcf, 0x56, 0x39, 0xfa, 0x51, 0x60, + 0x3d, 0xe7, 0xed, 0xd6, 0x9f, 0xf3, 0xf3, 0x0f, 0xfd, 0xf6, 0x28, 0xfb, + 0x7d, 0xa0, 0xff, 0x00, 0x97, 0xa8, 0x7f, 0xef, 0xb1, 0x5e, 0x0f, 0xfd, + 0xab, 0x66, 0x7a, 0x16, 0xfc, 0xa9, 0x3f, 0xb5, 0x6d, 0x7f, 0xbc, 0x68, + 0xb0, 0x8f, 0x78, 0xfe, 0xd1, 0xb2, 0xff, 0x00, 0x9f, 0xb8, 0x3f, 0xef, + 0xe0, 0xa4, 0x3a, 0x95, 0x88, 0xeb, 0x79, 0x6e, 0x3f, 0xed, 0xa0, 0xaf, + 0x08, 0xfe, 0xd6, 0xb5, 0x1d, 0x09, 0x34, 0xdf, 0xed, 0x9b, 0x71, 0xd9, + 0xa8, 0xb0, 0x1e, 0xf1, 0xfd, 0xa9, 0xa7, 0xff, 0x00, 0xcf, 0xf5, 0xb7, + 0xfd, 0xfd, 0x5f, 0xf1, 0xa3, 0xfb, 0x53, 0x4f, 0xff, 0x00, 0x9f, 0xeb, + 0x6f, 0xfb, 0xfa, 0xbf, 0xe3, 0x5e, 0x10, 0x35, 0xab, 0x7f, 0x46, 0xa5, + 0x1a, 0xd5, 0xb0, 0x3d, 0x1a, 0x8b, 0x01, 0xee, 0xdf, 0xda, 0xba, 0x77, + 0xfc, 0xff, 0x00, 0xdb, 0x7f, 0xdf, 0xd5, 0xff, 0x00, 0x1a, 0x4f, 0xed, + 0x5d, 0x3b, 0xfe, 0x7f, 0xed, 0x7f, 0xef, 0xea, 0xff, 0x00, 0x8d, 0x78, + 0x5f, 0xf6, 0xe5, 0xb8, 0xfe, 0x16, 0xa4, 0xfe, 0xdd, 0xb6, 0xfe, 0xeb, + 0x51, 0x60, 0x3d, 0xd7, 0xfb, 0x5b, 0x4d, 0xff, 0x00, 0x9f, 0xfb, 0x5f, + 0xfb, 0xfc, 0xbf, 0xe3, 0x49, 0xfd, 0xaf, 0xa6, 0xff, 0x00, 0xd0, 0x42, + 0xd7, 0xfe, 0xff, 0x00, 0x2f, 0xf8, 0xd7, 0x85, 0x7f, 0x6e, 0x5b, 0xff, + 0x00, 0xcf, 0x36, 0xa4, 0xfe, 0xdc, 0x83, 0xfe, 0x79, 0xb5, 0x16, 0x03, + 0xdd, 0xbf, 0xb6, 0x34, 0xcf, 0xfa, 0x08, 0x5a, 0xff, 0x00, 0xdf, 0xe5, + 0xff, 0x00, 0x1a, 0x3f, 0xb6, 0x34, 0xc1, 0xff, 0x00, 0x31, 0x1b, 0x4f, + 0xfb, 0xfc, 0xbf, 0xe3, 0x5e, 0x12, 0x75, 0xb8, 0x31, 0xf7, 0x18, 0x53, + 0x0e, 0xb5, 0x09, 0xe3, 0x63, 0x51, 0x60, 0x3d, 0xe9, 0x35, 0x6d, 0x36, + 0x46, 0x0a, 0x97, 0xf6, 0xac, 0xc7, 0xb0, 0x95, 0x49, 0xfe, 0x75, 0x6c, + 0x10, 0x46, 0x41, 0xc8, 0xf6, 0xaf, 0x9e, 0x23, 0x97, 0xed, 0x8f, 0xfb, + 0xb3, 0x9f, 0x6a, 0xf4, 0x2f, 0x04, 0x6a, 0x97, 0x96, 0x97, 0x31, 0xd8, + 0xdd, 0x48, 0xcf, 0x6f, 0x2f, 0xca, 0x81, 0xf9, 0xd8, 0xdd, 0xb1, 0xed, + 0xda, 0x8b, 0x0c, 0xf4, 0x6a, 0x28, 0xa2, 0x90, 0x05, 0x70, 0x9a, 0xfd, + 0xb0, 0xba, 0xd6, 0xee, 0x55, 0xbf, 0xd9, 0xfe, 0x42, 0xbb, 0xba, 0xe3, + 0x75, 0x4f, 0xf9, 0x0e, 0xdc, 0xfb, 0x10, 0x7f, 0x41, 0x4e, 0x22, 0x67, + 0x8d, 0xea, 0xb2, 0xf9, 0x9a, 0x9d, 0xc2, 0x20, 0xc4, 0x71, 0xb9, 0x55, + 0x1f, 0x43, 0x54, 0xf6, 0xd4, 0xf7, 0xc3, 0x1a, 0x9d, 0xd8, 0xff, 0x00, + 0xa6, 0xcf, 0xff, 0x00, 0xa1, 0x1a, 0x68, 0x5e, 0x05, 0x30, 0x22, 0x6f, + 0x95, 0x19, 0xbd, 0x06, 0x6a, 0x11, 0x0c, 0xc4, 0x06, 0xdd, 0xf3, 0x11, + 0x90, 0xbe, 0xd5, 0x62, 0x78, 0xc4, 0xad, 0x6f, 0x10, 0x25, 0x77, 0xc9, + 0xb4, 0x9f, 0xae, 0x29, 0x82, 0xd5, 0x73, 0xf3, 0x33, 0x9f, 0xa3, 0x52, + 0x02, 0x45, 0x40, 0xd1, 0xc6, 0xe3, 0xf8, 0xd7, 0x3f, 0xae, 0x3f, 0xa5, + 0x1b, 0x29, 0xf6, 0xd1, 0x88, 0x8d, 0xcc, 0x79, 0x2c, 0x15, 0x57, 0x6e, + 0x7b, 0x73, 0x4e, 0x78, 0x92, 0x65, 0x58, 0xdb, 0x20, 0xee, 0xfb, 0xca, + 0x69, 0x81, 0x18, 0x41, 0xeb, 0x49, 0xb4, 0x7b, 0x53, 0x6c, 0x22, 0xda, + 0x62, 0xb8, 0x24, 0xb1, 0xf3, 0x0a, 0xed, 0x3d, 0x3a, 0x0f, 0xf1, 0xaa, + 0xe5, 0x22, 0xde, 0xfe, 0x64, 0xac, 0xad, 0xe6, 0x63, 0x00, 0x67, 0x03, + 0xd6, 0x90, 0x16, 0xf6, 0xfd, 0x31, 0x40, 0x41, 0xed, 0x51, 0x48, 0x73, + 0xa4, 0x23, 0x1c, 0xef, 0xf3, 0x00, 0x3f, 0x4c, 0x1f, 0xf3, 0xf8, 0x51, + 0x64, 0x62, 0x17, 0xcb, 0xe5, 0x6e, 0x62, 0x03, 0x63, 0x7f, 0x43, 0xc1, + 0xa6, 0x04, 0xbb, 0x57, 0xd4, 0x50, 0x50, 0x76, 0xe9, 0x55, 0x6e, 0x23, + 0x45, 0x6f, 0x97, 0x76, 0xf6, 0x3c, 0x0c, 0xf4, 0xa9, 0xe4, 0x8d, 0xcc, + 0x76, 0xd6, 0xca, 0x40, 0x24, 0x1c, 0x9f, 0x6c, 0x93, 0xfe, 0x34, 0x00, + 0xe0, 0xa0, 0xf7, 0x1f, 0x5a, 0x08, 0x03, 0x8c, 0xd4, 0x2f, 0x07, 0x90, + 0x9e, 0x74, 0x6c, 0x7e, 0x52, 0x32, 0x09, 0xeb, 0x4f, 0xbe, 0x58, 0xfe, + 0xd6, 0xa2, 0x46, 0x2a, 0x9e, 0x50, 0x23, 0x1e, 0xb8, 0xe2, 0x90, 0x0f, + 0xda, 0x3f, 0x0a, 0x63, 0x0e, 0x69, 0x2c, 0xf6, 0x6e, 0x94, 0x29, 0x25, + 0x70, 0x36, 0x93, 0xeb, 0x52, 0xba, 0xf1, 0x40, 0x0b, 0x63, 0x70, 0xd6, + 0x97, 0x91, 0xca, 0xa4, 0xe0, 0x37, 0x3f, 0x4a, 0xf5, 0x4b, 0x01, 0xfe, + 0x9b, 0x62, 0xe3, 0x8d, 0xd2, 0xa1, 0xfd, 0x45, 0x79, 0x28, 0x1f, 0x38, + 0xfa, 0xd7, 0xaf, 0x5a, 0x26, 0xcb, 0x8d, 0x3c, 0x1e, 0x48, 0x68, 0xff, + 0x00, 0x98, 0xa6, 0x80, 0xf4, 0x5a, 0x28, 0xa2, 0xa4, 0x61, 0x5c, 0x6e, + 0xa8, 0xc3, 0xfb, 0x7a, 0xe4, 0x7b, 0x0f, 0xe4, 0x2b, 0xb2, 0xae, 0x27, + 0x56, 0xc8, 0xf1, 0x05, 0xd7, 0x3e, 0x9f, 0xca, 0x9c, 0x44, 0xcf, 0x1c, + 0xbd, 0xe3, 0x54, 0xba, 0xcf, 0xfc, 0xf5, 0x6f, 0xe6, 0x69, 0x82, 0xa4, + 0xbe, 0x18, 0xd5, 0x2e, 0x87, 0xfd, 0x35, 0x6f, 0xe7, 0x4d, 0x48, 0xde, + 0x46, 0xda, 0x8a, 0x59, 0xb0, 0x4e, 0x05, 0x30, 0x23, 0x99, 0x8a, 0x79, + 0x12, 0xaa, 0xee, 0x31, 0xc9, 0xb8, 0xaf, 0xb7, 0x1f, 0xe1, 0x50, 0x8b, + 0xc4, 0xdb, 0xf7, 0x4e, 0x7d, 0x2a, 0x23, 0xa8, 0x1c, 0xf1, 0x18, 0xc7, + 0xd6, 0x9b, 0xf6, 0xd1, 0xbb, 0x77, 0x92, 0xb9, 0xf5, 0xa4, 0x05, 0xeb, + 0x69, 0x0b, 0x0b, 0x89, 0x1d, 0x76, 0xef, 0x55, 0x0a, 0x3e, 0x86, 0xa5, + 0x46, 0x01, 0xd0, 0xb7, 0x40, 0x46, 0x6b, 0x38, 0x6a, 0x0d, 0xff, 0x00, + 0x3c, 0xc7, 0xe7, 0x47, 0xf6, 0x8b, 0x0e, 0x91, 0x8f, 0xce, 0x98, 0x17, + 0xad, 0xc7, 0x93, 0x0a, 0x23, 0x10, 0x48, 0x90, 0xb7, 0x1d, 0x87, 0x1f, + 0xe1, 0x4c, 0xf2, 0x21, 0x65, 0x98, 0x3e, 0xdd, 0xce, 0xe4, 0xab, 0x63, + 0xa0, 0xaa, 0x87, 0x50, 0x63, 0xfc, 0x03, 0xf3, 0xa4, 0xfe, 0xd0, 0x6c, + 0xff, 0x00, 0xab, 0x5a, 0x00, 0xb9, 0x2a, 0x19, 0x2c, 0x44, 0x79, 0x5f, + 0x30, 0x32, 0xe7, 0x1d, 0x30, 0x01, 0xe7, 0xf5, 0xa4, 0x84, 0x4a, 0x6e, + 0x37, 0x4c, 0xca, 0x13, 0x9c, 0xec, 0xe3, 0xb5, 0x54, 0x1a, 0x83, 0xff, + 0x00, 0x70, 0x7e, 0x74, 0x7f, 0x68, 0x3f, 0xf7, 0x05, 0x20, 0x26, 0x78, + 0x25, 0x13, 0xbb, 0xa3, 0x29, 0x04, 0x9d, 0xa4, 0xf6, 0x15, 0x3b, 0x21, + 0x7b, 0x78, 0x46, 0xfc, 0x4c, 0x99, 0x3b, 0xc7, 0xa9, 0x3d, 0x3f, 0x2c, + 0x7e, 0xb5, 0x4b, 0xfb, 0x41, 0xcf, 0xf0, 0x2d, 0x21, 0xd4, 0x1f, 0x18, + 0xd8, 0xb4, 0x01, 0x63, 0xc9, 0x99, 0x9b, 0x6c, 0xae, 0x36, 0xf7, 0x03, + 0xbd, 0x59, 0x75, 0x49, 0x2e, 0x56, 0x57, 0x0a, 0xca, 0x23, 0xdb, 0xb4, + 0xfa, 0xe2, 0xb3, 0xff, 0x00, 0xb4, 0x1f, 0xfb, 0x8b, 0x47, 0xf6, 0x8c, + 0x9f, 0xdc, 0x5a, 0x00, 0xbb, 0x1c, 0x62, 0x2d, 0xe8, 0x08, 0x28, 0x5b, + 0x72, 0xfa, 0x8f, 0x6a, 0x56, 0xe4, 0x56, 0x79, 0xbf, 0x90, 0x9f, 0xba, + 0xb5, 0xa6, 0x60, 0x95, 0x20, 0x82, 0x69, 0x17, 0x0b, 0x32, 0x6e, 0x43, + 0x9e, 0xa2, 0x98, 0x15, 0xf1, 0x89, 0x07, 0xd6, 0xbd, 0x82, 0x10, 0x4d, + 0xc5, 0x89, 0x3f, 0xde, 0x8f, 0xfa, 0x57, 0x90, 0x11, 0xf3, 0x8f, 0xad, + 0x7b, 0x04, 0x1f, 0xeb, 0x2c, 0x4f, 0xbc, 0x7f, 0xd2, 0x84, 0x07, 0xa0, + 0x51, 0x41, 0xea, 0x68, 0xa9, 0x18, 0x57, 0x15, 0xab, 0xae, 0xed, 0x7e, + 0xe7, 0xd8, 0x2f, 0xf2, 0x15, 0xda, 0xd7, 0x1f, 0xaa, 0x0f, 0xf8, 0x9e, + 0xdc, 0x9f, 0x61, 0xfc, 0xa9, 0xc4, 0x4c, 0xf1, 0x7b, 0xef, 0xf9, 0x0a, + 0xdd, 0x7f, 0xd7, 0x56, 0xfe, 0x75, 0x73, 0x4a, 0x19, 0xbc, 0x3f, 0xf5, + 0xc9, 0xff, 0x00, 0xf4, 0x13, 0x55, 0xb5, 0x01, 0xff, 0x00, 0x13, 0x6b, + 0xbf, 0xfa, 0xec, 0xdf, 0xce, 0xad, 0xe8, 0xff, 0x00, 0xf1, 0xfa, 0x3f, + 0xeb, 0x9b, 0xff, 0x00, 0xe8, 0x26, 0x98, 0x1c, 0x9d, 0x14, 0x77, 0xa2, + 0x90, 0xc2, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0xba, 0xab, + 0x83, 0x9d, 0x0f, 0x48, 0xf6, 0x89, 0xbf, 0xf4, 0x2a, 0xe5, 0x6b, 0xa8, + 0x9b, 0x9d, 0x0b, 0x49, 0xe3, 0xfe, 0x59, 0xbf, 0xfe, 0x85, 0x42, 0x03, + 0x35, 0xbe, 0xf0, 0xc7, 0x5c, 0xd7, 0xaf, 0xdb, 0x72, 0x2c, 0x4f, 0xfd, + 0x73, 0xfe, 0x95, 0xe4, 0x2f, 0x9d, 0xc3, 0x8a, 0xf6, 0x0b, 0x25, 0xcd, + 0xb5, 0x89, 0xf6, 0x4f, 0xe9, 0x4d, 0x08, 0xf4, 0x06, 0xfb, 0xc7, 0xeb, + 0x49, 0x4a, 0xdf, 0x78, 0xfd, 0x69, 0x2a, 0x46, 0x15, 0xc8, 0xea, 0x9f, + 0xf2, 0x1c, 0x9c, 0x7a, 0x85, 0xfe, 0x42, 0xba, 0xea, 0xe4, 0x75, 0x5f, + 0xf9, 0x0e, 0xcd, 0xf4, 0x5f, 0xe4, 0x29, 0xc4, 0x4c, 0xf1, 0x8d, 0x47, + 0x8d, 0x66, 0xf7, 0xfe, 0xbb, 0x3f, 0xf3, 0xab, 0x9a, 0x2f, 0x3a, 0x82, + 0x8f, 0xf6, 0x1f, 0xf9, 0x1a, 0xad, 0xab, 0x0d, 0xba, 0xed, 0xf0, 0xc7, + 0x49, 0xdb, 0xf9, 0xd5, 0xad, 0x0f, 0xfe, 0x42, 0x69, 0xfe, 0xe3, 0xff, + 0x00, 0xe8, 0x26, 0x98, 0x1c, 0x91, 0xea, 0x69, 0x29, 0x4f, 0xde, 0x3f, + 0x5a, 0x4a, 0x43, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, + 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, + 0xe9, 0xe4, 0x39, 0xd0, 0x74, 0xaf, 0xf7, 0x24, 0xff, 0x00, 0xd0, 0xab, + 0x98, 0xae, 0x9d, 0x8e, 0x74, 0x0d, 0x2b, 0xfd, 0xd9, 0x3f, 0xf4, 0x2a, + 0x00, 0xcf, 0x70, 0x37, 0x0f, 0x4a, 0xf6, 0x8d, 0x3a, 0x3c, 0xd9, 0xd9, + 0x7f, 0xba, 0x9f, 0xd2, 0xbc, 0x61, 0xc7, 0xcc, 0x3e, 0xb5, 0xee, 0x1a, + 0x6a, 0xe2, 0xd2, 0xd0, 0x7f, 0xb2, 0x9f, 0xd2, 0x98, 0x8e, 0xbc, 0xf5, + 0x34, 0x94, 0xa7, 0xa9, 0xa4, 0xa9, 0x18, 0x57, 0x25, 0xaa, 0xff, 0x00, + 0xc8, 0x76, 0x7f, 0xa2, 0xff, 0x00, 0x2a, 0xeb, 0x6b, 0x92, 0xd5, 0x73, + 0xfd, 0xb9, 0x37, 0xd1, 0x7f, 0x95, 0x38, 0x89, 0x9e, 0x3b, 0xae, 0xa6, + 0xcf, 0x10, 0xdf, 0x03, 0xff, 0x00, 0x3d, 0x98, 0xd4, 0xda, 0x1e, 0x0e, + 0xa7, 0x1f, 0xfb, 0x8d, 0xff, 0x00, 0xa0, 0x9a, 0x8f, 0xc4, 0x3f, 0xf2, + 0x32, 0x5f, 0x7f, 0xd7, 0x4a, 0x97, 0x42, 0x19, 0xd5, 0x23, 0x1d, 0x3e, + 0x56, 0xff, 0x00, 0xd0, 0x4d, 0x30, 0x39, 0x23, 0xf7, 0x8f, 0xd6, 0x92, + 0x95, 0xbe, 0xf1, 0xfa, 0xd2, 0x52, 0x18, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x57, 0x4c, 0x7f, 0xe4, 0x5f, 0xd2, 0x8f, 0xb4, 0xbf, + 0xfa, 0x15, 0x73, 0x35, 0xd2, 0x30, 0xff, 0x00, 0x8a, 0x7b, 0x4a, 0xfa, + 0x4b, 0xff, 0x00, 0xa1, 0xd0, 0x05, 0x33, 0xcb, 0x2f, 0xd6, 0xbd, 0xda, + 0xc0, 0x62, 0x0b, 0x5f, 0xf7, 0x57, 0xfa, 0x57, 0x84, 0x7f, 0xcb, 0x41, + 0xf5, 0x15, 0xee, 0xf6, 0x3f, 0xea, 0x6d, 0xbe, 0x8b, 0x4d, 0x08, 0xea, + 0x4f, 0x53, 0x49, 0x41, 0xeb, 0x45, 0x48, 0xc2, 0xb9, 0x4d, 0x58, 0x7f, + 0xc4, 0xfa, 0x5f, 0xf7, 0x57, 0xf9, 0x57, 0x57, 0x5c, 0xae, 0xaf, 0xff, + 0x00, 0x21, 0xc6, 0x3d, 0x32, 0x8b, 0x4d, 0x09, 0x9e, 0x3b, 0xe2, 0x31, + 0x8f, 0x12, 0xdf, 0x7f, 0xd7, 0x4a, 0x7e, 0x84, 0x71, 0xaa, 0xc3, 0xcf, + 0x18, 0x6f, 0xfd, 0x04, 0xd3, 0x3c, 0x48, 0x3f, 0xe2, 0xa5, 0xbe, 0xff, + 0x00, 0xae, 0x9f, 0xd0, 0x53, 0xf4, 0x21, 0x9d, 0x5a, 0x01, 0xec, 0xdf, + 0xfa, 0x09, 0xa6, 0x07, 0x26, 0xdf, 0x78, 0xfd, 0x69, 0x29, 0x5b, 0xef, + 0x1f, 0xad, 0x25, 0x21, 0x85, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, + 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, + 0x05, 0x74, 0x87, 0xfe, 0x45, 0xdd, 0x2b, 0xfe, 0xda, 0xff, 0x00, 0xe8, + 0x75, 0xcd, 0xd7, 0x48, 0x7f, 0xe4, 0x5d, 0xd2, 0xff, 0x00, 0xed, 0xaf, + 0xfe, 0x87, 0x40, 0x14, 0xba, 0x4a, 0xa7, 0xde, 0xbd, 0xd6, 0xc4, 0xfe, + 0xe6, 0xd7, 0xfd, 0xd5, 0xfe, 0x95, 0xe1, 0x24, 0xe5, 0xc6, 0x7d, 0x6b, + 0xdc, 0x2c, 0x5f, 0x09, 0x68, 0x3b, 0x90, 0x83, 0xf9, 0x53, 0x42, 0x3b, + 0x03, 0xd4, 0xd1, 0x41, 0xea, 0x68, 0xa9, 0x18, 0x57, 0x2b, 0xad, 0x0c, + 0x6b, 0x5d, 0x7f, 0xe5, 0x9a, 0xff, 0x00, 0x33, 0x5d, 0x55, 0x72, 0xda, + 0xf0, 0xc6, 0xb4, 0x0f, 0xfd, 0x32, 0x5f, 0xe6, 0x69, 0xa1, 0x33, 0xc7, + 0xbc, 0x50, 0x36, 0xf8, 0x9e, 0xf4, 0x7a, 0xb8, 0xfe, 0x42, 0x8d, 0x0f, + 0xfe, 0x42, 0xf0, 0x7f, 0xc0, 0xbf, 0xf4, 0x13, 0x4f, 0xf1, 0x68, 0xdb, + 0xe2, 0x8b, 0xa3, 0xeb, 0xb4, 0xfe, 0x82, 0x99, 0xa0, 0xff, 0x00, 0xc8, + 0x5a, 0x01, 0xd7, 0xef, 0x7f, 0xe8, 0x26, 0x98, 0x1c, 0xa3, 0x7d, 0xf3, + 0xf5, 0xa4, 0xa7, 0x3f, 0xdf, 0x6f, 0xa9, 0xa6, 0xd2, 0x18, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, + 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x57, 0x49, 0x8c, 0xf8, 0x73, 0x4c, + 0xe7, 0xa7, 0x9b, 0xff, 0x00, 0xa1, 0xd7, 0x37, 0x5d, 0x26, 0x3f, 0xe2, + 0x9b, 0xd2, 0xfe, 0xb2, 0xff, 0x00, 0xe8, 0x54, 0x01, 0x40, 0xff, 0x00, + 0xac, 0x51, 0xdb, 0x22, 0xbd, 0x9a, 0xd1, 0xc8, 0x92, 0xc8, 0x67, 0xf8, + 0xa3, 0x1f, 0xa8, 0xaf, 0x1a, 0x50, 0x0d, 0xc2, 0x0f, 0x56, 0x15, 0xec, + 0x30, 0x1d, 0xb7, 0x16, 0x63, 0x3f, 0xc7, 0x1f, 0xf3, 0x14, 0xd0, 0x8e, + 0xfc, 0x74, 0x14, 0x51, 0x45, 0x48, 0xc2, 0xb9, 0x8f, 0x10, 0x0c, 0x6a, + 0xd1, 0x1f, 0x58, 0x87, 0xf3, 0x35, 0xd3, 0xd7, 0x35, 0xe2, 0x31, 0x8b, + 0xeb, 0x76, 0xf5, 0x42, 0x3f, 0x5f, 0xfe, 0xbd, 0x35, 0xb8, 0x99, 0xe4, + 0x9e, 0x36, 0x4d, 0xbe, 0x24, 0x63, 0x8f, 0xbd, 0x1a, 0x9a, 0xa9, 0xa0, + 0xff, 0x00, 0xc8, 0x62, 0xdf, 0xfe, 0x05, 0xff, 0x00, 0xa0, 0x9a, 0xd5, + 0xf1, 0xf4, 0x61, 0x75, 0x7b, 0x69, 0x3f, 0xbf, 0x17, 0xf2, 0x35, 0x93, + 0xa1, 0x1c, 0x6b, 0x16, 0xdd, 0x3f, 0x8b, 0xff, 0x00, 0x41, 0x34, 0xc0, + 0xe5, 0xe4, 0xff, 0x00, 0x58, 0xdf, 0x53, 0x4d, 0xa7, 0x4b, 0xfe, 0xb5, + 0xff, 0x00, 0xde, 0x34, 0xda, 0x43, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, + 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, + 0xa2, 0x80, 0x0a, 0xe9, 0x3f, 0xe6, 0x5a, 0xd3, 0x3f, 0xde, 0x97, 0xff, + 0x00, 0x42, 0xae, 0x6e, 0xba, 0x30, 0x49, 0xf0, 0xde, 0x9d, 0xe8, 0x1a, + 0x5f, 0xfd, 0x0a, 0x80, 0x2b, 0x5b, 0x0d, 0xf7, 0xd0, 0x2f, 0xab, 0xa8, + 0xfd, 0x6b, 0xd7, 0x22, 0xe6, 0xfe, 0xd0, 0x7f, 0xd3, 0x54, 0xfe, 0x62, + 0xbc, 0xa3, 0x4d, 0x1b, 0xf5, 0x7b, 0x55, 0xff, 0x00, 0xa6, 0x83, 0xf9, + 0xd7, 0xab, 0x5a, 0x12, 0xda, 0xbd, 0x98, 0xff, 0x00, 0xa6, 0xcb, 0xc7, + 0xe3, 0x4d, 0x08, 0xf4, 0x1a, 0x28, 0xa2, 0xa4, 0x61, 0x5c, 0xe7, 0x89, + 0xc6, 0x27, 0xb4, 0x6f, 0x50, 0xc3, 0xf9, 0x57, 0x47, 0x5c, 0xf7, 0x8a, + 0x97, 0xf7, 0x56, 0x8f, 0x8e, 0x8e, 0x46, 0x7e, 0xa3, 0xff, 0x00, 0xad, + 0x4d, 0x6e, 0x0c, 0xf3, 0x6f, 0x88, 0x31, 0x66, 0x3b, 0x29, 0xfd, 0x09, + 0x5a, 0xe6, 0x34, 0x37, 0x03, 0x56, 0xb6, 0xc9, 0x0b, 0x96, 0xc6, 0x4f, + 0xb8, 0x22, 0xbb, 0x5f, 0x19, 0x40, 0x2e, 0x3c, 0x3a, 0xf2, 0x01, 0x93, + 0x0b, 0x87, 0xe9, 0xef, 0x8a, 0xf3, 0x65, 0x6e, 0x9c, 0xd3, 0x62, 0x29, + 0xdc, 0xa3, 0x47, 0x75, 0x2a, 0x30, 0xc3, 0x2b, 0x90, 0x7f, 0x3a, 0x8a, + 0xb5, 0xc4, 0xb2, 0x67, 0x3b, 0xc9, 0x3e, 0xa6, 0x8f, 0x3e, 0x40, 0x71, + 0xbb, 0xf4, 0xa4, 0x33, 0x22, 0x8a, 0xd7, 0xfb, 0x44, 0x9f, 0xde, 0xfd, + 0x29, 0x44, 0xf2, 0xff, 0x00, 0x7a, 0x80, 0x31, 0xe8, 0xad, 0x7f, 0x3e, + 0x4c, 0xfd, 0xe3, 0x4b, 0xe6, 0xca, 0x73, 0xf3, 0xb5, 0x00, 0x63, 0xd1, + 0x82, 0x7a, 0x0a, 0xd7, 0x13, 0x49, 0x8f, 0xbe, 0xd4, 0xbe, 0x6b, 0xf7, + 0x90, 0xd0, 0x06, 0x46, 0xd3, 0xe8, 0x68, 0xda, 0xdf, 0xdd, 0x3f, 0x95, + 0x6b, 0x89, 0x1c, 0xe0, 0x6e, 0x3f, 0x9d, 0x28, 0x91, 0x88, 0xea, 0x68, + 0x03, 0x1f, 0x63, 0x7f, 0x74, 0xfe, 0x54, 0xbb, 0x1b, 0xfb, 0xa7, 0xf2, + 0xad, 0x9d, 0xec, 0x3f, 0x88, 0xfe, 0x74, 0xbe, 0x63, 0x7f, 0x7b, 0xf5, + 0xa0, 0x0c, 0x5d, 0x8f, 0xfd, 0xd6, 0xfc, 0xab, 0xa0, 0xdc, 0xab, 0xa0, + 0xd8, 0xc2, 0x5b, 0xf7, 0x8a, 0xce, 0xc5, 0x7b, 0x80, 0x4f, 0x19, 0xa8, + 0x3c, 0xc2, 0x7f, 0x88, 0xfe, 0x75, 0x1b, 0x13, 0x4c, 0x45, 0xfd, 0x02, + 0x31, 0x26, 0xbb, 0x07, 0x19, 0x0a, 0x73, 0xcd, 0x7a, 0x7e, 0x93, 0x87, + 0xd7, 0xad, 0x00, 0xff, 0x00, 0x9e, 0x99, 0xfd, 0x0d, 0x79, 0xcf, 0x85, + 0xa3, 0x2d, 0x7f, 0x24, 0xbf, 0xdc, 0x5c, 0x67, 0xeb, 0x5e, 0x8b, 0xe1, + 0xaf, 0xde, 0xeb, 0xf6, 0xdf, 0xec, 0xee, 0x27, 0xfe, 0xf9, 0x34, 0x74, + 0x03, 0xd0, 0xa8, 0xa2, 0x8a, 0x91, 0x85, 0x61, 0xf8, 0xa6, 0x3d, 0xfa, + 0x5a, 0xbf, 0xfc, 0xf3, 0x90, 0x1f, 0xe9, 0xfd, 0x6b, 0x72, 0xa9, 0x6a, + 0xf0, 0x1b, 0x8d, 0x2a, 0xe1, 0x07, 0x5d, 0x99, 0x1f, 0x87, 0x34, 0xd0, + 0x1c, 0x34, 0xf1, 0x25, 0xee, 0x9f, 0x3d, 0xb3, 0x8c, 0x89, 0x10, 0xaf, + 0xe9, 0x5e, 0x41, 0x2c, 0x6f, 0x6f, 0x71, 0x24, 0x2e, 0x30, 0xc8, 0xc5, + 0x4f, 0xe1, 0x5e, 0xb5, 0x0c, 0xc4, 0x1c, 0x57, 0x07, 0xe3, 0x1b, 0x1f, + 0xb3, 0x6a, 0xdf, 0x69, 0x41, 0x88, 0xe7, 0x19, 0xcf, 0xfb, 0x5d, 0xea, + 0x99, 0x28, 0xc2, 0x0d, 0x46, 0x4d, 0x30, 0x7e, 0x74, 0xf1, 0x52, 0x31, + 0x7d, 0x29, 0x78, 0xa6, 0x82, 0x45, 0x2f, 0x6a, 0x00, 0x33, 0x4b, 0xbb, + 0xb5, 0x34, 0x76, 0xa5, 0xcf, 0xe7, 0x40, 0x0a, 0x4f, 0xa5, 0x25, 0x19, + 0xe3, 0x8a, 0x01, 0xf5, 0xfc, 0xe8, 0x01, 0x72, 0x69, 0x7a, 0x0c, 0x67, + 0xf5, 0xa6, 0x9e, 0xb4, 0xbd, 0xb3, 0x40, 0x0e, 0x03, 0xb6, 0x69, 0xff, + 0x00, 0xa8, 0xa6, 0x64, 0x1e, 0xd4, 0xe0, 0x7b, 0x53, 0x01, 0x47, 0x7a, + 0x69, 0x38, 0xcf, 0xe5, 0x41, 0x38, 0x18, 0xe3, 0x9e, 0x73, 0x4f, 0x8d, + 0x3c, 0xd9, 0x95, 0x57, 0x92, 0xc7, 0x14, 0x01, 0xd0, 0xf8, 0x7d, 0x04, + 0x16, 0x85, 0xff, 0x00, 0x89, 0xce, 0x6b, 0xbc, 0xf0, 0x42, 0xf9, 0xba, + 0xc4, 0x92, 0x63, 0xee, 0x44, 0x7f, 0x32, 0x45, 0x70, 0xf0, 0x37, 0x95, + 0x10, 0x40, 0x38, 0x03, 0x15, 0xe8, 0x9f, 0x0f, 0xe0, 0x3f, 0x65, 0xba, + 0xba, 0x23, 0xef, 0x30, 0x41, 0xf8, 0x50, 0xf6, 0x03, 0xb3, 0xa2, 0x8a, + 0x2a, 0x46, 0x14, 0x84, 0x02, 0x08, 0x23, 0x20, 0xf0, 0x69, 0x68, 0xa0, + 0x0f, 0x31, 0xd4, 0xa3, 0x6d, 0x3f, 0x51, 0x9e, 0x06, 0xfe, 0x07, 0x38, + 0xf7, 0x1d, 0xbf, 0x4a, 0xc9, 0xd6, 0x6d, 0x17, 0x54, 0xd2, 0x9e, 0x2f, + 0xf9, 0x68, 0xbf, 0x32, 0x7d, 0x6b, 0xb1, 0xf1, 0xd5, 0x81, 0xd9, 0x15, + 0xfc, 0x6b, 0xd3, 0xe4, 0x7f, 0xe8, 0x6b, 0x8e, 0xb6, 0x9f, 0x92, 0x0f, + 0xe5, 0x57, 0xb9, 0x27, 0x9d, 0x90, 0x51, 0x8a, 0x91, 0xca, 0x9c, 0x11, + 0x4e, 0x1e, 0xf5, 0xb3, 0xe2, 0x5d, 0x3c, 0x5b, 0x5d, 0xfd, 0xaa, 0x21, + 0xfb, 0xb9, 0x7a, 0xfb, 0x1a, 0xc2, 0xcd, 0x48, 0xc9, 0x49, 0xc8, 0xf4, + 0xa5, 0xe0, 0x63, 0x14, 0xc0, 0xde, 0xf4, 0x6e, 0xa0, 0x07, 0xe7, 0xae, + 0x28, 0xcf, 0x27, 0x8e, 0x69, 0x99, 0xc8, 0xa7, 0x0c, 0xf7, 0xa0, 0x07, + 0x11, 0x9a, 0x4e, 0x07, 0xad, 0x26, 0x79, 0x18, 0xa3, 0x3e, 0xfc, 0x76, + 0xa0, 0x05, 0xfa, 0x53, 0x81, 0xe3, 0xa7, 0x34, 0xc0, 0x79, 0xa5, 0xc9, + 0xcf, 0xa5, 0x00, 0x3f, 0xbf, 0xa5, 0x19, 0xc7, 0x19, 0xa6, 0x13, 0xcd, + 0x2f, 0x4a, 0x00, 0x71, 0x3d, 0xf3, 0x5a, 0x1a, 0x7c, 0x58, 0x06, 0x52, + 0x39, 0xed, 0x54, 0x62, 0x8f, 0xcc, 0x70, 0xbd, 0xbb, 0xd6, 0xb0, 0x5f, + 0x2d, 0x55, 0x47, 0x41, 0x4c, 0x0b, 0x3b, 0xf2, 0x7d, 0xf8, 0xe2, 0xbd, + 0xa3, 0xc2, 0xd6, 0x07, 0x4f, 0xf0, 0xed, 0xa4, 0x4e, 0x31, 0x23, 0x2f, + 0x98, 0xff, 0x00, 0x53, 0xcf, 0xf2, 0xc5, 0x79, 0x6f, 0x84, 0xb4, 0xa3, + 0xac, 0x6b, 0x90, 0xc4, 0xcb, 0x98, 0x63, 0x3e, 0x64, 0x87, 0xd8, 0x76, + 0xaf, 0x6a, 0x1c, 0x0c, 0x52, 0x63, 0x0a, 0x28, 0xa2, 0x90, 0x05, 0x14, + 0x51, 0x40, 0x10, 0x5e, 0x5a, 0xc5, 0x7d, 0x67, 0x2d, 0xb4, 0xc3, 0x29, + 0x22, 0xe0, 0xfb, 0x7b, 0xd7, 0x90, 0x6a, 0x56, 0x93, 0x69, 0x7a, 0x8c, + 0xb6, 0xd2, 0x83, 0xb9, 0x1b, 0xaf, 0xa8, 0xec, 0x6b, 0xd9, 0xab, 0x98, + 0xf1, 0x8f, 0x87, 0xff, 0x00, 0xb5, 0x2c, 0xbe, 0xd5, 0x02, 0xff, 0x00, + 0xa5, 0x42, 0x3a, 0x0f, 0xe3, 0x5f, 0x4f, 0xad, 0x34, 0xc4, 0xcf, 0x38, + 0xbc, 0x81, 0x35, 0x0d, 0x3d, 0xa2, 0x63, 0xdb, 0x22, 0xb8, 0x37, 0x46, + 0x89, 0xd9, 0x1c, 0x61, 0x81, 0xc1, 0x15, 0xdc, 0xc1, 0x21, 0x8d, 0x8a, + 0x1e, 0x30, 0x71, 0xcd, 0x73, 0x9e, 0x20, 0xb5, 0x10, 0xde, 0x79, 0xa9, + 0x8c, 0x3f, 0x3c, 0x53, 0x60, 0x8c, 0x90, 0x78, 0xa2, 0x90, 0x1a, 0x5f, + 0xc6, 0x90, 0xc5, 0xc9, 0x3d, 0xa8, 0xc8, 0xc5, 0x26, 0x45, 0x1e, 0x87, + 0x1f, 0x85, 0x00, 0x2e, 0x78, 0xa5, 0x07, 0x1e, 0x86, 0x9a, 0x49, 0x1c, + 0x52, 0x50, 0x03, 0xfe, 0x94, 0xe0, 0x71, 0x51, 0x8f, 0xf2, 0x29, 0xc3, + 0x8a, 0x00, 0x7f, 0x7e, 0xbf, 0x5a, 0x33, 0xef, 0x4d, 0x07, 0xaf, 0x24, + 0x53, 0xe3, 0x1b, 0x88, 0x19, 0xef, 0x40, 0x17, 0x6c, 0xe3, 0xda, 0xa5, + 0x98, 0x72, 0x4f, 0x19, 0xab, 0xbb, 0xcb, 0x1c, 0x01, 0xcf, 0xa0, 0xef, + 0x55, 0xd0, 0x6d, 0x50, 0x01, 0x15, 0xdb, 0xf8, 0x0b, 0xc3, 0x0d, 0xa9, + 0xde, 0x8d, 0x46, 0xe9, 0x7f, 0xd1, 0x20, 0x6f, 0x90, 0x1f, 0xf9, 0x68, + 0xdf, 0xe0, 0x29, 0x88, 0xed, 0x7c, 0x15, 0xa1, 0x0d, 0x1f, 0x47, 0x59, + 0x65, 0x5f, 0xf4, 0xab, 0x90, 0x1e, 0x4f, 0xf6, 0x47, 0x61, 0x5d, 0x35, + 0x00, 0x00, 0x30, 0x3a, 0x0a, 0x2a, 0x46, 0x14, 0x51, 0x45, 0x00, 0x14, + 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x79, 0xd7, 0x8d, 0x3c, 0x39, + 0xf6, 0x39, 0x5b, 0x54, 0xb2, 0x4c, 0x44, 0xe7, 0x32, 0xa0, 0xfe, 0x13, + 0xeb, 0xf4, 0xae, 0x0f, 0x56, 0x89, 0x6e, 0x2c, 0x0b, 0x05, 0xcb, 0x27, + 0x22, 0xbd, 0xfa, 0x58, 0x92, 0x78, 0x9e, 0x29, 0x50, 0x3c, 0x6e, 0x30, + 0xca, 0x7a, 0x11, 0x5e, 0x45, 0xe3, 0x1f, 0x0f, 0x3e, 0x89, 0x33, 0xec, + 0x05, 0xac, 0xa5, 0xe6, 0x33, 0xfd, 0xd3, 0xe8, 0x6a, 0x93, 0x11, 0xe6, + 0x98, 0xc1, 0xc5, 0x14, 0xf9, 0x54, 0xab, 0x11, 0xd2, 0xa3, 0xa4, 0x31, + 0x7b, 0x50, 0x4d, 0x25, 0x14, 0x00, 0xb9, 0xef, 0x49, 0xef, 0x46, 0x68, + 0xcd, 0x00, 0x2f, 0xd6, 0x9c, 0x38, 0x1c, 0x53, 0x78, 0xa5, 0x1d, 0x28, + 0x01, 0xdc, 0x1a, 0xb1, 0x6c, 0xb9, 0x6c, 0xd5, 0x71, 0xe8, 0x2b, 0x57, + 0x47, 0xb0, 0xb8, 0xd4, 0xaf, 0x62, 0xb4, 0xb5, 0x8c, 0xbc, 0xd2, 0x1c, + 0x01, 0xe9, 0xee, 0x68, 0x03, 0x63, 0xc3, 0x5e, 0x1f, 0x9f, 0xc4, 0x3a, + 0xa2, 0xda, 0xc6, 0x0a, 0x42, 0xbf, 0x34, 0xb2, 0x63, 0xee, 0xaf, 0xf8, + 0xd7, 0xba, 0x59, 0x59, 0xc1, 0xa7, 0xd9, 0xc5, 0x69, 0x6c, 0x81, 0x21, + 0x89, 0x42, 0xa8, 0x15, 0x9f, 0xe1, 0xdd, 0x02, 0xdf, 0xc3, 0xda, 0x62, + 0x5a, 0xc2, 0x03, 0x48, 0x7e, 0x69, 0x64, 0xee, 0xed, 0xfe, 0x15, 0xaf, + 0x48, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, + 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0xaa, 0x6a, 0x5a, 0x75, 0xbe, 0xab, + 0x61, 0x2d, 0x9d, 0xca, 0x6e, 0x8e, 0x41, 0x8f, 0x70, 0x7d, 0x47, 0xbd, + 0x5b, 0xa2, 0x80, 0x3e, 0x70, 0xf1, 0x4e, 0x83, 0x71, 0xa0, 0x6a, 0xf2, + 0x5a, 0x4e, 0x0e, 0x3e, 0xf4, 0x6f, 0x8e, 0x19, 0x7b, 0x11, 0x58, 0x55, + 0xf4, 0x57, 0x8c, 0x7c, 0x33, 0x17, 0x89, 0x74, 0x77, 0x87, 0x68, 0x17, + 0x71, 0x02, 0xd0, 0x3f, 0x70, 0x7d, 0x3e, 0x86, 0xbe, 0x7a, 0xb8, 0x82, + 0x4b, 0x6b, 0x89, 0x20, 0x99, 0x0a, 0x49, 0x1b, 0x15, 0x65, 0x23, 0x90, + 0x45, 0x30, 0x22, 0x34, 0x94, 0xb4, 0x94, 0x00, 0x51, 0x45, 0x2d, 0x00, + 0x02, 0x9c, 0x05, 0x20, 0xa5, 0xa0, 0x09, 0x23, 0x52, 0xee, 0x15, 0x41, + 0x24, 0x9c, 0x00, 0x3b, 0xd7, 0xba, 0xf8, 0x0b, 0xc2, 0x4b, 0xa0, 0xe9, + 0xe2, 0xee, 0xe5, 0x33, 0x7f, 0x3a, 0x82, 0x72, 0x3f, 0xd5, 0xaf, 0xf7, + 0x47, 0xf5, 0xae, 0x43, 0xe1, 0x8f, 0x85, 0x16, 0xf6, 0x7f, 0xed, 0x9b, + 0xc8, 0xf3, 0x0c, 0x4d, 0xfb, 0x85, 0x61, 0xc3, 0x37, 0xaf, 0xe1, 0x5e, + 0xc1, 0x40, 0x05, 0x14, 0x51, 0x48, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, + 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, + 0x28, 0xa0, 0x02, 0xbc, 0xa7, 0xe2, 0x7f, 0x84, 0xe5, 0x9a, 0xe5, 0x35, + 0x7b, 0x0b, 0x77, 0x91, 0x9f, 0xe5, 0x99, 0x22, 0x52, 0x49, 0x3d, 0x8e, + 0x05, 0x7a, 0xb5, 0x14, 0x01, 0xf3, 0x17, 0xf6, 0x2e, 0xa7, 0xff, 0x00, + 0x40, 0xeb, 0xbf, 0xfb, 0xf0, 0xdf, 0xe1, 0x4b, 0xfd, 0x87, 0xaa, 0x9e, + 0x9a, 0x6d, 0xe7, 0xfd, 0xf8, 0x6f, 0xf0, 0xaf, 0xa6, 0xf0, 0x3d, 0x05, + 0x18, 0x1e, 0x94, 0x01, 0xf3, 0x28, 0xd0, 0x75, 0x6f, 0xfa, 0x06, 0x5e, + 0xff, 0x00, 0xdf, 0x86, 0xff, 0x00, 0x0a, 0x5f, 0xf8, 0x47, 0xf5, 0x7f, + 0xfa, 0x05, 0xde, 0xff, 0x00, 0xe0, 0x3b, 0xff, 0x00, 0x85, 0x7d, 0x35, + 0x81, 0xe9, 0x46, 0x28, 0x03, 0xe6, 0x71, 0xe1, 0xed, 0x63, 0xfe, 0x81, + 0x57, 0xa7, 0xfe, 0xdd, 0xdf, 0xfc, 0x2a, 0xf6, 0x91, 0xe1, 0x0d, 0x5f, + 0x51, 0xd5, 0x20, 0xb6, 0x93, 0x4f, 0xba, 0x86, 0x26, 0x6f, 0x9e, 0x49, + 0x21, 0x65, 0x00, 0x77, 0xe4, 0x8a, 0xfa, 0x2a, 0x8a, 0x00, 0xab, 0xa7, + 0x58, 0xc3, 0xa6, 0xd8, 0x43, 0x69, 0x02, 0x05, 0x8e, 0x35, 0x0a, 0x00, + 0xab, 0x54, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, + 0x05, 0x14, 0x51, 0x40, 0x1f, 0xff, 0xd9, 0x00, 0xff, 0xdb, 0x00, 0x43, + 0x00, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, + 0x03, 0x03, 0x04, 0x05, 0x08, 0x05, 0x05, 0x04, 0x04, 0x05, 0x0a, 0x07, + 0x07, 0x06, 0x08, 0x0c, 0x0a, 0x0c, 0x0c, 0x0b, 0x0a, 0x0b, 0x0b, 0x0d, + 0x0e, 0x12, 0x10, 0x0d, 0x0e, 0x11, 0x0e, 0x0b, 0x0b, 0x10, 0x16, 0x10, + 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0x0c, 0x0f, 0x17, 0x18, 0x16, 0x14, + 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x03, 0x04, + 0x04, 0x05, 0x04, 0x05, 0x09, 0x05, 0x05, 0x09, 0x14, 0x0d, 0x0b, 0x0d, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0xff, 0xc2, 0x00, 0x11, 0x08, 0x02, 0x58, 0x01, 0x90, 0x03, + 0x01, 0x11, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, + 0x1c, 0x00, 0x01, 0x00, 0x02, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0xff, 0xc4, 0x00, 0x17, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x03, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, + 0x10, 0x03, 0x10, 0x00, 0x00, 0x01, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, + 0x20, 0x00, 0x00, 0x04, 0x00, 0x09, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, + 0x07, 0x44, 0xb3, 0xcf, 0x2b, 0x05, 0x5c, 0x94, 0x92, 0x02, 0xc2, 0x42, + 0xc2, 0x14, 0x90, 0x0a, 0x93, 0x42, 0x0a, 0x82, 0x00, 0x24, 0x90, 0x0a, + 0x90, 0x41, 0x50, 0x08, 0x2a, 0x41, 0x06, 0x03, 0x56, 0x39, 0x25, 0xf5, + 0x7c, 0xbb, 0xdc, 0xa0, 0x00, 0x07, 0x9c, 0xea, 0x78, 0x2d, 0x90, 0x6c, + 0x1b, 0xe5, 0x8b, 0xd5, 0x8b, 0x19, 0x0b, 0x12, 0x50, 0x10, 0x01, 0x52, + 0x84, 0x02, 0x4b, 0x12, 0x48, 0x20, 0x02, 0x08, 0x11, 0x50, 0x41, 0x15, + 0x11, 0x52, 0xa6, 0x33, 0x01, 0x63, 0x93, 0xaf, 0x78, 0xc5, 0xed, 0x32, + 0x80, 0x00, 0xf0, 0x4e, 0xb8, 0xea, 0x92, 0xf1, 0x71, 0xc5, 0xc6, 0xba, + 0xc1, 0x29, 0x65, 0xa9, 0x52, 0xe4, 0x92, 0x85, 0xba, 0x42, 0xc2, 0x0a, + 0xad, 0x50, 0xb6, 0x41, 0x00, 0x90, 0x42, 0xd4, 0x90, 0x80, 0xb2, 0x90, + 0x58, 0xa2, 0xc0, 0x49, 0x5e, 0x46, 0xce, 0xe3, 0x5c, 0xb5, 0x9d, 0xa6, + 0x5f, 0x56, 0xe7, 0xa0, 0x00, 0xd7, 0x4f, 0x1a, 0xed, 0x9d, 0x34, 0xf3, + 0x4c, 0x6b, 0x8b, 0x96, 0x0b, 0x02, 0x53, 0x12, 0xe8, 0x4b, 0x27, 0x27, + 0x64, 0x84, 0x02, 0xc0, 0x82, 0x09, 0x20, 0xb2, 0xc2, 0x49, 0x00, 0xb1, + 0x52, 0x01, 0x20, 0x10, 0x01, 0x0b, 0x8e, 0x20, 0xa1, 0xe8, 0x1b, 0x9d, + 0xd2, 0xcd, 0xf9, 0x7d, 0x6f, 0x9e, 0x80, 0x03, 0x55, 0x3c, 0x9b, 0xb6, + 0x73, 0xc7, 0xcf, 0xfc, 0xf5, 0x92, 0xac, 0x92, 0x01, 0xa7, 0x2e, 0xdd, + 0x0a, 0x1b, 0x09, 0x62, 0x85, 0x89, 0x04, 0x00, 0x49, 0x52, 0x49, 0x20, + 0x12, 0x0a, 0x90, 0x49, 0x25, 0x48, 0x04, 0x95, 0x28, 0xb4, 0x8a, 0x9c, + 0xee, 0xa7, 0xaf, 0x6a, 0x66, 0x97, 0xd6, 0xf9, 0xe8, 0x00, 0x35, 0x0f, + 0x2a, 0xed, 0x8b, 0xc7, 0xcf, 0xfc, 0xf5, 0x9a, 0xac, 0x96, 0x2e, 0x60, + 0x5e, 0x32, 0x5b, 0x90, 0x0e, 0x66, 0xcb, 0xa5, 0x17, 0x85, 0x96, 0x0e, + 0x4e, 0xcc, 0x31, 0xa3, 0x2d, 0xec, 0xec, 0x3a, 0x9d, 0x73, 0x3a, 0x1c, + 0x9d, 0x95, 0x38, 0xe9, 0x60, 0xec, 0x16, 0x70, 0xd1, 0x89, 0x72, 0x27, + 0x3d, 0xa9, 0xd7, 0x33, 0xaa, 0x99, 0x53, 0x9a, 0xb3, 0x01, 0x06, 0x29, + 0x6a, 0x72, 0xf6, 0x7b, 0x4e, 0xe5, 0xa5, 0xf5, 0xae, 0x7a, 0x00, 0x0d, + 0x53, 0xca, 0xfb, 0x62, 0xd1, 0xf3, 0xff, 0x00, 0x3d, 0x66, 0xb3, 0x21, + 0x62, 0x4c, 0x2b, 0x8c, 0xca, 0x67, 0x4c, 0x6b, 0x72, 0xc9, 0x6a, 0xc7, + 0x2e, 0x91, 0xb6, 0x9a, 0x8b, 0x90, 0xd3, 0x8e, 0x77, 0x53, 0xad, 0x67, + 0x5b, 0xe9, 0x9e, 0xb3, 0xa6, 0xa2, 0xea, 0x4b, 0xc8, 0xd9, 0xa8, 0x6f, + 0xa6, 0x94, 0xbc, 0x95, 0x75, 0xec, 0xde, 0x5f, 0x53, 0x8b, 0x8e, 0x7f, + 0x53, 0x0c, 0x63, 0x31, 0x98, 0xe5, 0xe7, 0x75, 0x3d, 0x9f, 0x52, 0x92, + 0xfa, 0xd7, 0x3d, 0x00, 0x06, 0xb1, 0xe5, 0x3d, 0xb1, 0x96, 0x3e, 0x7e, + 0xe7, 0xac, 0xb6, 0x65, 0x2c, 0x58, 0xd6, 0x5b, 0x99, 0x10, 0x55, 0x6c, + 0x64, 0x45, 0x56, 0x5d, 0x43, 0x69, 0x35, 0x97, 0x42, 0x58, 0x3b, 0x0e, + 0xb3, 0xd6, 0xf3, 0xad, 0xfb, 0x33, 0x12, 0x71, 0x52, 0xf2, 0xb6, 0x5c, + 0xd7, 0x36, 0x13, 0x59, 0x77, 0xeb, 0x81, 0xcd, 0xca, 0x97, 0x39, 0x4b, + 0x06, 0x33, 0x12, 0xd0, 0xe7, 0xac, 0xf6, 0x9a, 0xd6, 0x3d, 0x6f, 0x9e, + 0x80, 0x03, 0x01, 0xe4, 0xbd, 0xb1, 0x9a, 0x3c, 0x07, 0x1a, 0xcc, 0x97, + 0x05, 0x8c, 0x4b, 0xaa, 0x6d, 0xa1, 0x74, 0xe3, 0x91, 0xa8, 0x4b, 0x13, + 0x5a, 0x12, 0xee, 0x26, 0xba, 0xef, 0xd9, 0xc2, 0xe6, 0xf3, 0xba, 0x9d, + 0x67, 0x3a, 0x1c, 0x82, 0x0e, 0x3d, 0x6a, 0x76, 0x3b, 0x38, 0xa3, 0x56, + 0x5c, 0xa9, 0xce, 0xea, 0x75, 0xfc, 0xeb, 0xb2, 0x6b, 0x3d, 0x7b, 0x37, + 0x96, 0xb2, 0xa5, 0x4a, 0x18, 0x65, 0xe7, 0x6c, 0xf6, 0xad, 0xcd, 0x79, + 0x7d, 0x6f, 0x9e, 0x80, 0x03, 0x59, 0x3c, 0x8b, 0xb6, 0x76, 0x63, 0xc1, + 0x31, 0xab, 0x99, 0x12, 0x41, 0x63, 0x8d, 0x5d, 0x59, 0x46, 0xdd, 0x9c, + 0x80, 0x49, 0x2c, 0x5a, 0xb0, 0x46, 0x42, 0xa5, 0xc9, 0xa8, 0x81, 0x04, + 0x82, 0x00, 0x2c, 0x63, 0x2c, 0x64, 0xac, 0x71, 0x25, 0x4a, 0x90, 0x41, + 0x86, 0x5e, 0x6e, 0xcf, 0x6d, 0xd3, 0x01, 0xea, 0xfc, 0xf4, 0x00, 0x1a, + 0xa9, 0xe3, 0xfd, 0xb3, 0xb7, 0x1e, 0x11, 0x8d, 0x4a, 0x66, 0x20, 0x18, + 0x96, 0xc5, 0x09, 0x00, 0xc8, 0x54, 0x02, 0x84, 0x92, 0x41, 0x05, 0x8a, + 0x02, 0xc5, 0x41, 0x63, 0x19, 0x62, 0x09, 0x24, 0x18, 0xca, 0x9b, 0x49, + 0x62, 0xa6, 0x23, 0x99, 0xaf, 0x6f, 0xad, 0x73, 0xd6, 0x79, 0xea, 0xa0, + 0x03, 0x54, 0xf2, 0x2e, 0xd8, 0xcf, 0x1e, 0x13, 0x8d, 0x5d, 0x2c, 0x5c, + 0xe3, 0x57, 0x8d, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x6e, 0xd6, 0x75, 0x20, 0x60, 0x5e, 0x59, 0x3d, 0xcf, + 0x4d, 0x53, 0xd6, 0x79, 0xea, 0xa0, 0x03, 0x01, 0xe3, 0xdd, 0xb1, 0x9e, + 0x3c, 0x27, 0x1a, 0xc8, 0x99, 0x0e, 0x4a, 0xb8, 0x29, 0x78, 0x79, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xed, + 0x4e, 0x1a, 0x4a, 0x18, 0x57, 0x97, 0xb3, 0xdc, 0xab, 0x50, 0xf5, 0xbe, + 0x7a, 0xa0, 0x00, 0xc0, 0x79, 0x07, 0x6c, 0x6c, 0x47, 0x83, 0x63, 0x59, + 0x53, 0x21, 0xc9, 0xd7, 0x05, 0x2f, 0x0b, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf9, 0xac, 0xf0, 0xd1, 0x06, + 0x23, 0x92, 0x3d, 0xd3, 0x4d, 0x73, 0xd6, 0xb9, 0xea, 0x80, 0x03, 0x09, + 0xe4, 0x7d, 0x71, 0xb4, 0x78, 0x0e, 0x35, 0x64, 0xcc, 0x72, 0x55, 0xc4, + 0x4b, 0xc0, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xbd, 0xea, 0x71, 0x32, 0x50, 0xc2, 0xbc, 0x92, 0x7b, 0xbe, + 0x9a, 0xe7, 0xac, 0xf3, 0xd6, 0x30, 0x01, 0x81, 0x3c, 0xa7, 0xae, 0x76, + 0x0f, 0x9f, 0xf1, 0xab, 0x26, 0x73, 0x92, 0xae, 0x22, 0x5e, 0xbd, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf5, + 0xa9, 0xc5, 0x49, 0x53, 0x01, 0xc8, 0x1e, 0xf9, 0xa6, 0x03, 0xd5, 0x39, + 0xea, 0x80, 0x03, 0x5c, 0xf2, 0xee, 0xb8, 0xc8, 0x7c, 0xfd, 0x8d, 0x66, + 0x4c, 0xd5, 0xbc, 0x71, 0x72, 0xf5, 0xd9, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x8d, 0x4e, 0x32, 0x4a, 0x98, + 0x97, 0x79, 0x3d, 0xfb, 0x53, 0x0a, 0xfa, 0x97, 0x3d, 0x63, 0x00, 0x18, + 0x4f, 0x2d, 0xeb, 0x8c, 0xa7, 0xcf, 0x78, 0xd6, 0x64, 0xc8, 0x72, 0x35, + 0xc6, 0xcb, 0xd6, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xde, 0xb5, 0x38, 0x99, 0x20, 0xc2, 0x6f, 0x9f, 0x41, + 0xea, 0x55, 0x7d, 0x1f, 0x9e, 0xaa, 0x00, 0x31, 0x9e, 0x53, 0xd7, 0x1b, + 0x67, 0xcf, 0x18, 0xd6, 0x44, 0xcd, 0x5b, 0xe6, 0x94, 0xbd, 0x5e, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xdf, + 0x53, 0x8c, 0x92, 0x4c, 0x07, 0x22, 0x7d, 0x0d, 0xa4, 0x9d, 0xfb, 0x9e, + 0xaa, 0x00, 0x28, 0x79, 0x47, 0x5c, 0x6d, 0x9f, 0x3d, 0x63, 0x52, 0x99, + 0x8e, 0x42, 0xb5, 0x25, 0xea, 0xb2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xfa, 0x9c, 0x6c, 0x95, 0x31, 0x1c, + 0x89, 0xf4, 0x4e, 0x99, 0x4e, 0xef, 0xcf, 0x55, 0x00, 0x15, 0x3c, 0x9b, + 0xae, 0x37, 0xcf, 0x9e, 0x31, 0xa2, 0x67, 0xad, 0xf3, 0x56, 0x5e, 0xa9, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0xeb, 0x67, 0x1c, 0x92, 0x61, 0x39, 0x5a, 0xfa, 0x1e, 0xb3, 0x1d, 0xcf, + 0x9e, 0xaa, 0x00, 0x31, 0x9e, 0x53, 0xd7, 0x1c, 0x81, 0xf3, 0xc6, 0x2d, + 0x4c, 0xc6, 0xf5, 0x60, 0x97, 0xa9, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xba, 0xd9, 0xc7, 0xa0, 0xc2, 0x72, + 0xf5, 0xf4, 0x45, 0x64, 0x3b, 0x97, 0x3d, 0x54, 0x00, 0x54, 0xf2, 0x8e, + 0xb8, 0xe4, 0x0f, 0x9e, 0x71, 0x71, 0x2e, 0xca, 0x6e, 0x56, 0x09, 0x7a, + 0x9c, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0xa5, 0x9c, 0x7a, 0x54, 0xa2, 0xf3, 0x76, 0x7d, 0x0f, 0x59, 0x0e, + 0xdf, 0xcf, 0x55, 0x00, 0x15, 0x3c, 0x9f, 0xae, 0x39, 0x33, 0xe7, 0xdc, + 0x5d, 0x53, 0x29, 0xbb, 0x58, 0xe5, 0xea, 0x52, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x76, 0x68, 0xa5, 0x4c, + 0x47, 0x3b, 0x5f, 0x43, 0xd5, 0xce, 0xdd, 0xcf, 0x50, 0x00, 0x28, 0x79, + 0x57, 0x5c, 0x72, 0x47, 0xcf, 0xb8, 0xba, 0x6b, 0x99, 0x37, 0x6b, 0x1c, + 0xbd, 0x4a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0xca, 0xce, 0x3d, 0x2a, 0xb4, 0x39, 0xfb, 0x3e, 0x85, 0xac, + 0x87, 0x6e, 0xe7, 0xa8, 0x00, 0x18, 0xcf, 0x2c, 0xeb, 0x8e, 0x40, 0xf0, + 0x0c, 0xdd, 0x18, 0xca, 0x6f, 0x54, 0x4b, 0xd3, 0xe5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0xec, 0xe3, 0xd2, + 0xa6, 0x13, 0xb0, 0x57, 0xd0, 0xd5, 0x73, 0xb7, 0xf3, 0xd4, 0x00, 0x08, + 0x3c, 0x9f, 0xae, 0x39, 0x43, 0xe7, 0xcc, 0xdd, 0x38, 0xce, 0x6d, 0x54, + 0xcb, 0xd3, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xdc, 0xac, 0xd1, 0x4a, 0x18, 0x4e, 0xc5, 0x5f, 0x41, 0xd6, + 0x43, 0xb8, 0x73, 0xd5, 0x40, 0x04, 0x1e, 0x51, 0xd7, 0x1c, 0xa1, 0xf3, + 0xf6, 0x2e, 0x82, 0xe7, 0x4c, 0xe6, 0x55, 0xe9, 0xd2, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x16, 0x6a, 0x25, + 0x0c, 0x2b, 0xcf, 0x59, 0xf4, 0x2d, 0x5c, 0xee, 0x3c, 0xf5, 0x00, 0x02, + 0x0f, 0x2a, 0xeb, 0x8e, 0x48, 0xf9, 0xff, 0x00, 0x37, 0x8f, 0x97, 0x32, + 0x6c, 0xd5, 0xe5, 0xe9, 0xf2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xee, 0x16, 0x69, 0xa5, 0x0c, 0x6b, 0xcd, 0x27, + 0xd0, 0x9a, 0x66, 0x3b, 0x9f, 0x3d, 0x54, 0x00, 0x54, 0xf2, 0xfe, 0xb8, + 0xdd, 0x3c, 0x03, 0x17, 0x8e, 0x33, 0x1b, 0x35, 0x96, 0x5e, 0x9d, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xdf, + 0x66, 0xaa, 0x50, 0xd7, 0x5e, 0x72, 0xcf, 0xa0, 0x6a, 0xe7, 0x7a, 0xe7, + 0xaa, 0x80, 0x0c, 0x67, 0x99, 0xf5, 0xc6, 0xe1, 0xe0, 0x19, 0xbc, 0x74, + 0x66, 0x33, 0xd6, 0xcc, 0xbd, 0x2e, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xb6, 0xcc, 0x09, 0x80, 0xc4, 0xbc, + 0xf5, 0x9e, 0xf3, 0x65, 0xd7, 0xbf, 0xf3, 0xd4, 0x00, 0x0c, 0x67, 0x9a, + 0x75, 0xc6, 0xc1, 0xe0, 0xb9, 0xbc, 0x5c, 0x67, 0x32, 0x9b, 0x4b, 0xd3, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xdb, 0x2c, 0xc0, 0x98, 0x4c, 0x52, 0xf3, 0x76, 0x7b, 0xae, 0x92, 0x7a, + 0x2f, 0x3d, 0x58, 0x00, 0x41, 0xe6, 0x3d, 0x71, 0xb4, 0x78, 0x3e, 0x6f, + 0x0b, 0x1b, 0x06, 0x63, 0x71, 0x7a, 0x54, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x65, 0x98, 0xd3, 0x01, 0xaf, + 0x2f, 0x3d, 0xa9, 0xed, 0xb5, 0x27, 0xa5, 0x73, 0xd5, 0xc0, 0x04, 0x9e, + 0x5b, 0xd7, 0x1b, 0x27, 0x87, 0x66, 0xf0, 0x52, 0xe5, 0x4d, 0x83, 0x72, + 0xde, 0x95, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xb5, 0xd9, 0x89, 0x35, 0xcc, 0x32, 0xf3, 0xfa, 0x9e, 0xd9, + 0x55, 0x3d, 0x43, 0x9e, 0xa4, 0x00, 0x0f, 0x34, 0xeb, 0x89, 0x3c, 0x53, + 0x37, 0xae, 0xcb, 0x9d, 0x33, 0xd6, 0xec, 0xbd, 0x26, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xb2, 0xcc, 0x69, + 0xae, 0x60, 0x97, 0xb3, 0x6a, 0x7b, 0x0d, 0x41, 0xea, 0x1c, 0xf5, 0x70, + 0x00, 0x3c, 0xdb, 0xa6, 0x15, 0xe3, 0x59, 0xbd, 0x56, 0x5c, 0xe9, 0xb1, + 0x5b, 0xf2, 0xf4, 0x79, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x76, 0xbb, 0x2a, 0x9a, 0xeb, 0xaf, 0x1d, 0xa3, 0x53, + 0xd7, 0xab, 0x11, 0xeb, 0x3c, 0xf5, 0x00, 0x00, 0x79, 0xcf, 0x4c, 0xd2, + 0xcf, 0x25, 0xcd, 0xe9, 0x51, 0x98, 0xce, 0x72, 0x36, 0xf4, 0x7c, 0xd0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xae, + 0xc8, 0x4d, 0x55, 0xd7, 0x8e, 0xe1, 0xa9, 0xea, 0x9a, 0x44, 0x7a, 0xbf, + 0x3d, 0x00, 0x00, 0xf3, 0xde, 0x99, 0xd7, 0xb3, 0xcc, 0x33, 0x7a, 0x06, + 0x6e, 0x7b, 0x32, 0x9c, 0xa2, 0xf4, 0x59, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x9b, 0x2c, 0x9a, 0x4b, 0x86, + 0x3b, 0xce, 0xa7, 0xa5, 0x69, 0x78, 0xf5, 0x4e, 0x7a, 0x00, 0x01, 0xe7, + 0xfd, 0x33, 0xa3, 0x67, 0x44, 0x8f, 0x2f, 0xc6, 0xb3, 0xd9, 0x90, 0xe5, + 0x97, 0xa2, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xb4, 0x59, 0x91, 0x34, 0x57, 0x11, 0xdf, 0xec, 0xef, 0xda, + 0x9b, 0x12, 0xfa, 0xa7, 0x3d, 0x00, 0x00, 0xe8, 0x5b, 0xcf, 0x1f, 0xa9, + 0xd4, 0xe3, 0xc7, 0xf1, 0xac, 0xf6, 0x64, 0x39, 0x5b, 0x7a, 0x36, 0x68, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xcb, + 0x66, 0x64, 0xd2, 0x5c, 0x11, 0xe9, 0x3b, 0x9d, 0xbe, 0xce, 0x46, 0x5f, + 0x52, 0xe7, 0xa0, 0x00, 0x1d, 0x1f, 0x79, 0xe1, 0xf5, 0x38, 0x63, 0xc3, + 0x79, 0xeb, 0x35, 0x97, 0x39, 0x8b, 0x7a, 0x3e, 0x68, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xc5, 0x66, 0xe2, 0x71, + 0xc6, 0x09, 0x7d, 0x4b, 0x73, 0xb2, 0x59, 0xcc, 0x66, 0xfa, 0x76, 0x34, + 0x00, 0x03, 0xa4, 0xef, 0x3c, 0x1e, 0xa6, 0x03, 0xe7, 0xee, 0x7a, 0xbd, + 0x5c, 0xe6, 0xab, 0xa3, 0xe6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xec, 0x76, 0x6d, 0xa7, 0x1e, 0xb8, 0x23, 0xd7, + 0xb7, 0x9e, 0x56, 0xb9, 0xec, 0xdf, 0x4a, 0xc6, 0x80, 0x00, 0x74, 0xed, + 0xe7, 0xad, 0xee, 0x6c, 0xc9, 0xf3, 0xbe, 0x37, 0x84, 0xc8, 0x76, 0x2b, + 0x3a, 0x5e, 0x6d, 0xa8, 0x48, 0x00, 0x90, 0x08, 0x24, 0x02, 0x48, 0x24, + 0x92, 0x09, 0x20, 0x92, 0x40, 0x00, 0x92, 0x01, 0xcc, 0x56, 0xbc, 0x98, + 0x96, 0xa7, 0xb2, 0x6f, 0x39, 0x8e, 0xd3, 0x9b, 0xe8, 0xb8, 0xd0, 0x00, + 0x0e, 0xa9, 0xac, 0xf5, 0x0e, 0x99, 0xde, 0x97, 0xc3, 0xf3, 0x7a, 0xf6, + 0x6d, 0xc9, 0xac, 0xa4, 0xa4, 0x2c, 0xa4, 0x2d, 0xca, 0xa0, 0xb1, 0x55, + 0x84, 0x2d, 0x48, 0x24, 0xb1, 0x00, 0x16, 0x09, 0x25, 0x88, 0x24, 0x17, + 0x20, 0xb1, 0x45, 0xa2, 0x54, 0xc6, 0xbb, 0x67, 0xab, 0x6f, 0x39, 0x0e, + 0xe9, 0x9b, 0xdf, 0xf1, 0xa0, 0x00, 0x1d, 0x6b, 0x53, 0xa2, 0xf4, 0xc7, + 0x21, 0x2f, 0x99, 0xcb, 0xe7, 0x98, 0xb2, 0x5c, 0xb5, 0x59, 0x2b, 0x28, + 0x8a, 0xac, 0x58, 0x9a, 0xb1, 0x48, 0x55, 0x89, 0x04, 0x02, 0x4b, 0x15, + 0x09, 0x2b, 0x24, 0x96, 0x48, 0x2c, 0x41, 0x04, 0x92, 0xb4, 0x4a, 0xae, + 0x33, 0x9f, 0xb3, 0xd0, 0x75, 0x2a, 0x7a, 0x2e, 0x35, 0xdd, 0xb3, 0x40, + 0x00, 0x70, 0xb6, 0x79, 0xaf, 0x5c, 0x72, 0x51, 0xd6, 0x97, 0xc5, 0xb9, + 0xea, 0xe5, 0xc9, 0xa9, 0x04, 0x02, 0xb1, 0x62, 0xd5, 0x00, 0x82, 0xe4, + 0x95, 0x20, 0x10, 0x49, 0x60, 0x54, 0xb9, 0x42, 0xc5, 0x81, 0x74, 0x14, + 0x5b, 0x95, 0x20, 0xc6, 0x77, 0x1b, 0x3b, 0x4e, 0xa6, 0x33, 0xd6, 0x39, + 0xeb, 0xb5, 0x4a, 0x00, 0x03, 0x4d, 0x3c, 0x8f, 0xb6, 0x39, 0x02, 0xf2, + 0xfc, 0xfb, 0x8d, 0x6b, 0x45, 0xcb, 0x02, 0x01, 0x7a, 0x82, 0xc0, 0x10, + 0x44, 0x4d, 0x09, 0x24, 0xa4, 0x4d, 0x49, 0x00, 0x92, 0xc0, 0x92, 0xe0, + 0x10, 0x92, 0xb2, 0x94, 0x58, 0x2a, 0x7a, 0x06, 0xa6, 0xe5, 0x99, 0x0f, + 0x6e, 0xe7, 0xae, 0x66, 0x50, 0x00, 0x03, 0xc7, 0x3b, 0x62, 0xe9, 0xb9, + 0x1e, 0x51, 0x9d, 0x74, 0x9c, 0xdb, 0x02, 0xe4, 0x93, 0x48, 0xbd, 0x40, + 0x2a, 0x20, 0x5a, 0xab, 0x16, 0xa0, 0x00, 0x82, 0x41, 0x25, 0x82, 0x14, + 0x64, 0x48, 0x04, 0x95, 0x5a, 0x9b, 0xa7, 0x71, 0xd4, 0xd8, 0x32, 0x1f, + 0x42, 0x73, 0xd6, 0x70, 0x00, 0x00, 0xf2, 0xfe, 0xb8, 0xe1, 0xec, 0xd9, + 0x38, 0x99, 0x7c, 0x47, 0x9e, 0xee, 0x97, 0x05, 0xc9, 0xaa, 0xc4, 0xd2, + 0x26, 0xab, 0x02, 0x0b, 0x55, 0xca, 0x96, 0x2a, 0x22, 0xd4, 0x29, 0x13, + 0x56, 0x05, 0x81, 0x62, 0x12, 0xc5, 0x54, 0x96, 0x5a, 0x1d, 0x86, 0xce, + 0x66, 0xae, 0x73, 0x47, 0xbf, 0xf3, 0xd4, 0x00, 0x00, 0x07, 0x4a, 0xde, + 0x7a, 0x36, 0xf3, 0x98, 0xc9, 0x1e, 0x41, 0x8d, 0xf0, 0x31, 0x70, 0x58, + 0x91, 0x48, 0x12, 0x4d, 0x44, 0x4d, 0x40, 0x8b, 0x54, 0x44, 0x52, 0x20, + 0xc9, 0x55, 0x05, 0xca, 0x83, 0x21, 0x04, 0x96, 0x09, 0x8d, 0x46, 0xc1, + 0xd9, 0xf5, 0x32, 0x90, 0x7a, 0x2c, 0xbe, 0xbd, 0x8a, 0x00, 0x00, 0x0e, + 0x22, 0xcf, 0x24, 0xeb, 0x81, 0x90, 0xe0, 0x65, 0xf2, 0x8e, 0x7b, 0xba, + 0x49, 0x24, 0x99, 0x2a, 0xb1, 0x05, 0xa8, 0x09, 0x20, 0x98, 0x54, 0x94, + 0x26, 0x26, 0xa0, 0x42, 0xb2, 0x02, 0x4a, 0x82, 0xc1, 0x2a, 0xb2, 0x41, + 0xcd, 0xd9, 0xca, 0x18, 0xcb, 0x1e, 0xe9, 0x9b, 0xdd, 0xa5, 0x00, 0x00, + 0x04, 0x1e, 0x2b, 0xdb, 0x1c, 0x6a, 0x5c, 0xda, 0x3c, 0xa3, 0x1b, 0xe1, + 0x72, 0x92, 0x4c, 0x84, 0x12, 0x4d, 0x49, 0x58, 0x82, 0x40, 0x2d, 0x56, + 0x20, 0xa8, 0x04, 0x12, 0x49, 0x24, 0x82, 0x48, 0x05, 0x8a, 0x1b, 0x07, + 0x60, 0xb0, 0x49, 0xb6, 0x7d, 0x37, 0x8d, 0x6c, 0x80, 0x00, 0x00, 0x1d, + 0x07, 0x79, 0xf3, 0x5d, 0xc9, 0x37, 0x8e, 0x32, 0x3c, 0xa7, 0x9e, 0xe5, + 0x24, 0x16, 0x2c, 0x01, 0x24, 0x10, 0x48, 0x2d, 0x48, 0x0a, 0x14, 0x8b, + 0x93, 0x40, 0x58, 0xc7, 0x13, 0x53, 0x0a, 0x98, 0x9a, 0xe5, 0xec, 0xda, + 0x2e, 0x64, 0x3d, 0x0e, 0x5f, 0x6c, 0xcd, 0x00, 0x00, 0x00, 0x1a, 0x76, + 0x78, 0x17, 0x4c, 0xeb, 0x1b, 0xf5, 0xb5, 0x1e, 0x77, 0x9b, 0xd6, 0x73, + 0xa9, 0x41, 0x62, 0x4b, 0x15, 0x00, 0x92, 0x0c, 0x84, 0x12, 0x54, 0x82, + 0xf5, 0x58, 0x82, 0xe5, 0x0b, 0x16, 0x20, 0x90, 0x4d, 0x49, 0xb4, 0x73, + 0x16, 0x41, 0x26, 0x73, 0xe8, 0xec, 0xde, 0xc3, 0x28, 0x00, 0x00, 0x00, + 0x1e, 0x61, 0xbc, 0xf9, 0xc6, 0xa6, 0x53, 0x76, 0xb5, 0xe3, 0xca, 0xf9, + 0xea, 0x81, 0x65, 0x2c, 0x41, 0x24, 0x12, 0x58, 0x00, 0x49, 0x04, 0x12, + 0x0a, 0x97, 0x24, 0x92, 0x01, 0x72, 0xa0, 0xb5, 0x72, 0xf6, 0x6f, 0x10, + 0x54, 0xef, 0xf2, 0xfb, 0xc6, 0x68, 0x00, 0x00, 0x00, 0x03, 0x51, 0x3c, + 0x03, 0xae, 0x74, 0x4d, 0x83, 0x74, 0xe9, 0x19, 0xbd, 0x57, 0x3a, 0x94, + 0x2c, 0xa4, 0x90, 0x49, 0x04, 0x82, 0xc4, 0x02, 0x01, 0x72, 0xa0, 0x16, + 0x24, 0x00, 0x58, 0x1b, 0x35, 0xcc, 0x59, 0x90, 0xc6, 0x6c, 0x1f, 0x4b, + 0xe6, 0xf3, 0x72, 0x80, 0x00, 0x00, 0x00, 0x07, 0x44, 0xd4, 0xf1, 0xed, + 0xe6, 0xa7, 0x26, 0x6b, 0x1e, 0x69, 0xcf, 0x58, 0x56, 0x53, 0x29, 0x40, + 0x09, 0x04, 0x12, 0x42, 0xca, 0x00, 0x05, 0x88, 0x2c, 0x09, 0x2c, 0x54, + 0x19, 0x0e, 0x46, 0xb6, 0xec, 0x03, 0xd6, 0x25, 0xf6, 0x5c, 0xd0, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x78, 0x6f, 0x4c, 0xf5, 0x03, 0x7a, 0xcd, 0x93, + 0xa3, 0xe6, 0xf5, 0xdc, 0xea, 0xc8, 0x04, 0xa9, 0x24, 0x10, 0x41, 0x60, + 0x40, 0x20, 0x92, 0x41, 0x25, 0x81, 0x00, 0xb1, 0x9e, 0xb9, 0x2a, 0xc8, + 0x83, 0x9f, 0x97, 0xe9, 0x6c, 0xdd, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe3, 0x6c, 0xf9, 0xf7, 0x73, 0x4c, 0xdd, 0xb3, 0x46, 0x5f, 0x3e, 0xc5, + 0xaa, 0xc8, 0x25, 0x24, 0x15, 0x24, 0x00, 0x42, 0x92, 0x56, 0x12, 0xc4, + 0x82, 0x48, 0x2c, 0x0b, 0x9b, 0xd5, 0xb8, 0x2c, 0xcc, 0xbf, 0x4a, 0x65, + 0xd9, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xfa, 0x9e, 0x1d, + 0xa9, 0x9a, 0xcc, 0xa7, 0x42, 0xc6, 0xb8, 0xe9, 0x44, 0x90, 0x92, 0xa4, + 0x28, 0x24, 0x90, 0x49, 0x55, 0x92, 0x50, 0x42, 0xca, 0x64, 0x20, 0x82, + 0x4b, 0x9c, 0x95, 0x65, 0x24, 0xf7, 0x18, 0xf5, 0x39, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf2, 0xed, 0xcf, 0x2d, 0xb3, 0x6e, 0xce, 0xb9, + 0x9b, 0xd5, 0xf3, 0xa8, 0x24, 0x10, 0x4a, 0x42, 0xca, 0x16, 0x09, 0x42, + 0xc0, 0x09, 0x62, 0x49, 0x21, 0x6e, 0x82, 0x0d, 0x83, 0x90, 0xab, 0x9e, + 0x88, 0x7b, 0xfe, 0x6c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, + 0xf0, 0xed, 0xe7, 0xa8, 0xd6, 0x91, 0xd3, 0x71, 0x71, 0xa8, 0x82, 0x40, + 0x00, 0x82, 0x41, 0x24, 0x21, 0x6c, 0x82, 0x41, 0x25, 0x8b, 0x1b, 0x35, + 0xbe, 0x76, 0x03, 0xe9, 0xbc, 0xdd, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x35, 0x4f, 0x9f, 0xba, 0x67, 0xae, 0x9d, 0x47, 0x37, 0x5e, + 0x5a, 0x92, 0x01, 0x00, 0x90, 0x41, 0x20, 0x16, 0x20, 0x94, 0xb0, 0x00, + 0xc8, 0x6f, 0x57, 0x2c, 0x7d, 0x37, 0x97, 0x3a, 0xa0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x67, 0xce, 0x5a, 0x9d, 0x42, 0x5d, + 0x19, 0x60, 0x80, 0x08, 0x04, 0x95, 0x24, 0x12, 0x90, 0xb2, 0x48, 0x24, + 0x90, 0x96, 0x33, 0x1b, 0xf5, 0xf4, 0x8c, 0x77, 0x99, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x75, 0x9f, 0x33, 0xd7, 0x0f, + 0x2d, 0x01, 0x24, 0x10, 0x00, 0x20, 0x12, 0x49, 0x05, 0x89, 0x04, 0x92, + 0x96, 0x5c, 0xe9, 0xee, 0x67, 0xb2, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x92, 0xea, 0x7c, 0xfd, 0x1a, 0xeb, 0x04, + 0x12, 0x08, 0x20, 0x92, 0x00, 0x24, 0x90, 0x49, 0x62, 0x41, 0x63, 0xd1, + 0x93, 0xe9, 0x69, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x07, 0xce, 0x1a, 0x9e, 0x5d, 0x2d, 0x48, 0x20, 0x00, 0x40, + 0x24, 0x00, 0x58, 0x92, 0x41, 0x63, 0x9c, 0x4f, 0xac, 0xa5, 0xe4, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x3e, + 0x4d, 0xd4, 0xeb, 0x92, 0x88, 0x04, 0x10, 0x09, 0x00, 0x12, 0x48, 0x2c, + 0x0c, 0xc9, 0xf4, 0xf9, 0xdf, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x45, 0x9f, 0x2c, 0x18, 0x56, 0x00, + 0x04, 0x12, 0x49, 0x04, 0x82, 0x49, 0x04, 0x9e, 0xb5, 0x67, 0xd0, 0xd9, + 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xe7, 0x5d, 0x4f, 0x26, 0x94, 0x00, 0x00, 0x00, 0x49, 0x29, 0x24, + 0x2f, 0x2e, 0x9f, 0x58, 0x47, 0x34, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3a, 0x7c, 0xd3, 0x5a, 0x04, + 0x96, 0x2e, 0x5c, 0xb1, 0x72, 0xe4, 0x92, 0xb7, 0x41, 0x27, 0xab, 0x9e, + 0x9f, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc4, + 0x00, 0x34, 0x10, 0x00, 0x01, 0x02, 0x03, 0x05, 0x06, 0x04, 0x07, 0x01, + 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, + 0x11, 0x05, 0x06, 0x10, 0x12, 0x21, 0x13, 0x14, 0x20, 0x31, 0x35, 0x41, + 0x22, 0x32, 0x34, 0x40, 0x15, 0x16, 0x23, 0x24, 0x25, 0x30, 0x33, 0x42, + 0x36, 0x50, 0x60, 0x43, 0xff, 0xda, 0x00, 0x08, 0x01, 0x01, 0x00, 0x01, + 0x05, 0x02, 0xff, 0x00, 0xc4, 0xd1, 0x50, 0xac, 0xa5, 0x65, 0x2b, 0x29, + 0x59, 0x4a, 0xca, 0x56, 0x52, 0xb2, 0x95, 0x94, 0xac, 0xa5, 0x50, 0xaa, + 0x15, 0x42, 0xa8, 0xb2, 0x95, 0x94, 0xac, 0xa5, 0x50, 0xaa, 0x15, 0x43, + 0xfa, 0xed, 0x7b, 0xdb, 0x2b, 0x66, 0xba, 0x35, 0xf4, 0x9f, 0x8a, 0xef, + 0x99, 0xed, 0x17, 0x2f, 0x98, 0x6d, 0x02, 0xbe, 0x3b, 0x3e, 0x57, 0xc7, + 0x27, 0x97, 0xc6, 0xe7, 0xd7, 0xc6, 0x67, 0xd7, 0xc6, 0x27, 0x8a, 0xf8, + 0xbc, 0xf2, 0xf8, 0xc4, 0xf2, 0xf8, 0xc4, 0xf2, 0xf8, 0xbc, 0xf2, 0xf8, + 0xb4, 0xea, 0xf8, 0xac, 0xea, 0xf8, 0x9c, 0xda, 0xf8, 0x94, 0xda, 0xf8, + 0x8c, 0xda, 0xdf, 0xe6, 0x96, 0xfb, 0x30, 0xb7, 0xc8, 0xeb, 0x7b, 0x8e, + 0xb7, 0xb8, 0xcb, 0x7a, 0x8c, 0xb7, 0x98, 0xab, 0x78, 0x88, 0x8c, 0xcc, + 0x54, 0x26, 0x22, 0xad, 0xe2, 0x21, 0x46, 0x3c, 0x55, 0xb7, 0x88, 0xb6, + 0xf1, 0x16, 0xdd, 0xeb, 0x6c, 0xf5, 0xb5, 0x7a, 0xdb, 0x3d, 0x6d, 0xa2, + 0x2d, 0xab, 0xd3, 0xa6, 0x1e, 0x11, 0x9c, 0x8a, 0xd3, 0x2d, 0x78, 0xed, + 0x09, 0x57, 0x58, 0x97, 0xaa, 0x15, 0xa4, 0x78, 0xef, 0x6d, 0xb2, 0xf9, + 0x58, 0x44, 0x1a, 0xf2, 0x2c, 0x7a, 0x11, 0x5a, 0x06, 0xdd, 0xa1, 0x6f, + 0x2d, 0x42, 0x61, 0x8b, 0x6e, 0xc4, 0x23, 0x31, 0x6d, 0x58, 0xb6, 0xcc, + 0x46, 0x34, 0x3a, 0xed, 0x58, 0xb6, 0xcc, 0x5b, 0x66, 0x2d, 0xbb, 0x51, + 0x99, 0x86, 0x11, 0x9a, 0x86, 0x16, 0xf7, 0x0d, 0x6f, 0x70, 0xd6, 0xf7, + 0x0d, 0x6f, 0x50, 0xd6, 0xf5, 0x0d, 0x09, 0xb8, 0x61, 0x6f, 0x90, 0xd6, + 0xfb, 0x0d, 0x6f, 0xb0, 0xd6, 0xfb, 0x0d, 0x6f, 0xb0, 0xd6, 0xfc, 0xc0, + 0xb7, 0xe8, 0x6b, 0x7f, 0x62, 0xdf, 0xe1, 0xad, 0xfe, 0x1a, 0xdf, 0x98, + 0xb7, 0xd6, 0x15, 0xbe, 0xb1, 0x6f, 0xac, 0x46, 0x3b, 0x5c, 0x8e, 0xa8, + 0x31, 0x41, 0x84, 0x55, 0xdf, 0xb4, 0x1d, 0x3b, 0x29, 0xc5, 0x68, 0x56, + 0x72, 0x66, 0x3c, 0xad, 0x03, 0x9b, 0x44, 0xf8, 0xda, 0xe7, 0x71, 0x59, + 0x8a, 0xce, 0xe5, 0x9c, 0xa2, 0xf7, 0x2d, 0xab, 0xc2, 0xdb, 0x44, 0x5b, + 0x67, 0xad, 0xa3, 0x96, 0xd5, 0xeb, 0x6a, 0xe5, 0xb6, 0x7a, 0xda, 0xbd, + 0x6d, 0x1c, 0x56, 0x77, 0x2c, 0xce, 0x59, 0x9c, 0xb3, 0x15, 0x99, 0xcb, + 0x39, 0x59, 0xdc, 0xb3, 0x15, 0x98, 0xac, 0xee, 0x55, 0x2a, 0xa5, 0x54, + 0xaa, 0x95, 0x52, 0xb5, 0x55, 0x28, 0x55, 0x66, 0x2a, 0xa5, 0x66, 0x2b, + 0x68, 0x54, 0xac, 0xc0, 0xcd, 0x2d, 0x2d, 0xb4, 0x6b, 0x25, 0x95, 0xde, + 0x26, 0x05, 0xa5, 0xc3, 0x32, 0x72, 0xcb, 0x35, 0x95, 0x11, 0x25, 0xb4, + 0xb4, 0x63, 0xd2, 0x3f, 0x0c, 0x47, 0xe5, 0x69, 0x35, 0x40, 0xd1, 0x43, + 0xf1, 0xb2, 0x9a, 0x53, 0x1a, 0x2e, 0x42, 0x98, 0x53, 0x1a, 0x2c, 0xba, + 0x2a, 0x6b, 0x45, 0x45, 0x44, 0x11, 0xc6, 0x8a, 0x8b, 0x2d, 0x11, 0x54, + 0x4e, 0xc2, 0xc2, 0x8f, 0xb4, 0x14, 0x56, 0x51, 0x22, 0xd3, 0xe1, 0x9a, + 0xf4, 0xb0, 0xa8, 0xa6, 0xbc, 0x12, 0x87, 0xc6, 0xfe, 0x6a, 0x9c, 0x13, + 0x3f, 0xd1, 0xb0, 0x44, 0x26, 0x6c, 0x44, 0x45, 0x67, 0x9f, 0xb8, 0xe7, + 0x85, 0x31, 0xe4, 0xb4, 0x5a, 0x61, 0x4c, 0x7b, 0xd5, 0x76, 0xaa, 0xa6, + 0x15, 0x08, 0x61, 0x5a, 0x2a, 0x8c, 0x3b, 0x62, 0x55, 0x8e, 0xfa, 0x4d, + 0x53, 0x2b, 0x6c, 0xde, 0xa7, 0xc3, 0x37, 0xe9, 0x61, 0x82, 0xa7, 0xaa, + 0x6c, 0xf6, 0xe0, 0x11, 0x1a, 0x80, 0xa6, 0x46, 0x58, 0x44, 0x97, 0x23, + 0x11, 0xe5, 0x66, 0x72, 0x63, 0x8c, 0x37, 0x48, 0xb7, 0x69, 0x01, 0x46, + 0x67, 0xdb, 0x66, 0x70, 0x59, 0xdc, 0xac, 0xe1, 0xb4, 0x9d, 0x9c, 0xab, + 0x62, 0xe6, 0x29, 0xb1, 0x08, 0x50, 0x5b, 0xb4, 0x59, 0x8a, 0xd5, 0x59, + 0xad, 0xcd, 0x3b, 0x3a, 0x32, 0xc5, 0xd7, 0x06, 0x00, 0x24, 0x62, 0x45, + 0x2f, 0x34, 0x29, 0x91, 0x4b, 0x14, 0x16, 0xd6, 0x2b, 0xcd, 0x5e, 0xa1, + 0xbf, 0x2b, 0x9c, 0xcc, 0xa5, 0x1c, 0x6c, 0x93, 0xf7, 0xaf, 0x56, 0x6f, + 0x52, 0xe1, 0x9a, 0xf4, 0xb0, 0x35, 0x74, 0xf7, 0xa1, 0xe4, 0x50, 0x15, + 0x54, 0xc2, 0x68, 0xfd, 0xb4, 0xac, 0x36, 0xba, 0x0d, 0x00, 0x59, 0xdc, + 0x14, 0xc7, 0x8a, 0x0d, 0x9f, 0xfc, 0x28, 0x83, 0xcb, 0x44, 0x4f, 0x1c, + 0xbc, 0x83, 0x03, 0xa3, 0x87, 0x16, 0xa9, 0xef, 0xeb, 0x9e, 0x1b, 0x65, + 0xa3, 0x3d, 0x8e, 0x56, 0x71, 0xfa, 0x03, 0x9c, 0x49, 0xa0, 0x62, 0x4b, + 0x44, 0x31, 0xa2, 0x12, 0x54, 0x78, 0x94, 0x10, 0xa1, 0xed, 0x1d, 0x31, + 0xe1, 0x97, 0x97, 0x83, 0xb4, 0x40, 0xa9, 0xa8, 0x59, 0x45, 0x9a, 0x73, + 0xb1, 0xde, 0x78, 0xd3, 0x0c, 0x31, 0xa2, 0x16, 0xba, 0x23, 0xfc, 0x58, + 0x53, 0x43, 0xaa, 0x2a, 0xc5, 0x66, 0x79, 0xf8, 0x9a, 0x0b, 0x3f, 0xa8, + 0xf0, 0xcc, 0x8a, 0xcb, 0x41, 0x56, 0x87, 0xa3, 0xee, 0x06, 0x01, 0x15, + 0x35, 0xe9, 0xe4, 0xfd, 0x38, 0x5d, 0xa3, 0x7a, 0x4b, 0x3b, 0xf8, 0xd5, + 0x53, 0x47, 0x7f, 0x1b, 0x3f, 0xd4, 0x1d, 0x55, 0xa1, 0xfd, 0x36, 0x2e, + 0x2c, 0x85, 0x0f, 0x6b, 0x12, 0x54, 0x65, 0x8d, 0xdd, 0xf2, 0x7b, 0x37, + 0xcb, 0x30, 0x40, 0x8a, 0xf8, 0x99, 0x5b, 0xab, 0xdc, 0xc1, 0xb3, 0x11, + 0xc6, 0x79, 0x39, 0x38, 0xb9, 0x42, 0x98, 0x8a, 0x0c, 0x2b, 0x2c, 0x65, + 0x51, 0x3c, 0xf1, 0x65, 0xdf, 0x04, 0x4b, 0x42, 0x11, 0x30, 0x28, 0xa3, + 0x85, 0x85, 0xd4, 0xa3, 0x8f, 0x15, 0x9e, 0x7f, 0x21, 0xc3, 0x1f, 0xf8, + 0x40, 0xd4, 0xcf, 0x93, 0xb8, 0xd3, 0x51, 0x8f, 0x69, 0x91, 0xf6, 0xb0, + 0x26, 0x76, 0x30, 0xdb, 0x16, 0xa9, 0xd1, 0x43, 0x44, 0x49, 0x9c, 0xf0, + 0xec, 0xef, 0xe3, 0x55, 0xdf, 0xff, 0x00, 0x84, 0x87, 0xa8, 0xaa, 0xb4, + 0x07, 0x8a, 0x03, 0xb2, 0xca, 0x4c, 0x40, 0x30, 0x22, 0xca, 0xbb, 0x78, + 0x71, 0xe6, 0x5e, 0xe2, 0x6c, 0xe6, 0xe7, 0x9d, 0x9e, 0x68, 0x69, 0x6b, + 0x8b, 0x4e, 0xaa, 0x5c, 0x86, 0xc9, 0x46, 0x96, 0x30, 0xcd, 0x5c, 0xa1, + 0xc2, 0x2f, 0x52, 0xc2, 0x91, 0x5e, 0x3c, 0x73, 0x00, 0x44, 0x98, 0x6e, + 0xd2, 0x5a, 0x2e, 0x98, 0x15, 0x4c, 0x2c, 0x4e, 0xa3, 0x19, 0x48, 0x8f, + 0xc8, 0x70, 0xcc, 0xfa, 0x68, 0x0e, 0x39, 0xad, 0x0f, 0x46, 0x79, 0x8c, + 0x29, 0x83, 0xbc, 0x4d, 0x7c, 0xb9, 0x5a, 0x85, 0x42, 0x53, 0x25, 0xca, + 0x60, 0xd9, 0xb5, 0x00, 0x86, 0x60, 0xb3, 0x38, 0x2a, 0x22, 0xf7, 0xd0, + 0xbc, 0xb8, 0x67, 0x70, 0x0d, 0x73, 0xd7, 0x89, 0x6a, 0xb3, 0x90, 0xb3, + 0x15, 0x5d, 0x73, 0x22, 0x4b, 0x85, 0x72, 0x9c, 0xc7, 0x0a, 0x9a, 0xed, + 0x1e, 0xbb, 0x97, 0x3a, 0xb5, 0x27, 0x03, 0x8d, 0x89, 0xd4, 0xe3, 0xf3, + 0x93, 0xea, 0x1c, 0x33, 0x5e, 0x96, 0x01, 0x39, 0xa7, 0x89, 0xdd, 0x0f, + 0x99, 0x52, 0x98, 0x1f, 0x08, 0x31, 0x18, 0x16, 0xd6, 0x1a, 0x31, 0x18, + 0x56, 0xd6, 0x1b, 0x56, 0xdd, 0x88, 0xc7, 0x62, 0xda, 0xb1, 0x08, 0xcc, + 0x5b, 0x66, 0x53, 0x6b, 0x0d, 0x6d, 0x98, 0x16, 0xdd, 0x94, 0xde, 0x61, + 0xe6, 0x31, 0xd8, 0x84, 0x66, 0x2d, 0xb3, 0x16, 0xf0, 0xc5, 0xbc, 0x31, + 0x09, 0x96, 0x05, 0xbc, 0x30, 0xad, 0xbb, 0x28, 0x26, 0x18, 0x8c, 0xcb, + 0x2b, 0xbc, 0xb1, 0x6f, 0x2c, 0x0b, 0x7b, 0x6a, 0xde, 0xe1, 0xad, 0xe6, + 0x1a, 0xde, 0x58, 0x84, 0xcb, 0x53, 0x5c, 0x1c, 0x02, 0x38, 0x58, 0xdd, + 0x4a, 0x37, 0x39, 0x4d, 0x27, 0x9d, 0xe6, 0xe0, 0x9a, 0xf4, 0xb0, 0x74, + 0x33, 0x60, 0x6e, 0xce, 0xf3, 0x85, 0x44, 0xc6, 0x97, 0xba, 0xd0, 0x84, + 0x65, 0xe6, 0x7d, 0xf5, 0x91, 0x25, 0xbf, 0xcb, 0xa2, 0x8a, 0xb1, 0xcd, + 0x27, 0xe3, 0x73, 0x95, 0xf5, 0xce, 0xe7, 0xc1, 0x1b, 0xf8, 0xc1, 0xa9, + 0x33, 0x75, 0xdd, 0x1f, 0xe6, 0x0a, 0x95, 0x56, 0x60, 0xcd, 0x3f, 0x6b, + 0xd7, 0xe2, 0x7e, 0xfa, 0xe7, 0x9f, 0xbc, 0x28, 0xa2, 0xac, 0x83, 0x4b, + 0x42, 0x2a, 0x96, 0xf5, 0xaf, 0xf3, 0xf0, 0x47, 0xf4, 0xf2, 0xfe, 0x69, + 0xc6, 0xfd, 0xab, 0xb5, 0x78, 0x5d, 0xac, 0xe6, 0xfe, 0x46, 0xd9, 0xea, + 0x9e, 0xfa, 0xe7, 0x9a, 0x4f, 0x84, 0x51, 0x56, 0x56, 0x96, 0x83, 0xf9, + 0x4b, 0x7a, 0xc7, 0xf9, 0xb8, 0x23, 0x6b, 0x02, 0x5d, 0xb4, 0x74, 0xf3, + 0x7e, 0xd1, 0xde, 0x70, 0x10, 0x56, 0x77, 0x51, 0xb7, 0x45, 0x2d, 0x6f, + 0x7d, 0x73, 0xc7, 0xe4, 0x11, 0x44, 0x2b, 0x2f, 0x49, 0xe3, 0xe4, 0x85, + 0xea, 0xa2, 0x79, 0xf8, 0x23, 0xfa, 0x78, 0x4d, 0x00, 0xce, 0xfa, 0x53, + 0xe7, 0x08, 0x29, 0x1f, 0x5f, 0x6f, 0xf5, 0x7f, 0x7d, 0x73, 0xcf, 0xe5, + 0x15, 0x57, 0x25, 0x66, 0xeb, 0x3b, 0xfe, 0x61, 0x6b, 0x32, 0xff, 0x00, + 0x3f, 0x04, 0xc7, 0xa7, 0x82, 0x35, 0x9c, 0xa0, 0x96, 0x77, 0x99, 0xa8, + 0x05, 0x21, 0xa4, 0xf5, 0xe0, 0x14, 0xb6, 0x3d, 0xf5, 0xd0, 0xea, 0x83, + 0x92, 0x2a, 0xcd, 0xd2, 0x74, 0x0a, 0xb2, 0x1f, 0xa8, 0x89, 0xe7, 0xe0, + 0x8d, 0xfc, 0x60, 0xf9, 0xa6, 0xbc, 0x52, 0xae, 0xf3, 0x84, 0x14, 0x87, + 0xad, 0xbc, 0x3d, 0x63, 0xdf, 0x5c, 0xfa, 0x7c, 0x50, 0x22, 0x8a, 0xb3, + 0x87, 0xde, 0xb4, 0x78, 0x18, 0x3e, 0xe1, 0xde, 0x6e, 0x08, 0x9f, 0xc5, + 0x87, 0xc5, 0x33, 0xe9, 0x9d, 0xe7, 0x08, 0x73, 0x92, 0xf5, 0xb7, 0x97, + 0xac, 0xfb, 0xeb, 0xa1, 0xad, 0xae, 0xaa, 0x8a, 0xb3, 0x7d, 0x70, 0xd5, + 0xb0, 0x87, 0xd6, 0x77, 0x9b, 0x81, 0xfa, 0xc3, 0x67, 0x9a, 0x36, 0xb2, + 0xd1, 0x05, 0x22, 0x35, 0x05, 0x21, 0xeb, 0xaf, 0x3e, 0x96, 0xd7, 0xbe, + 0xb9, 0xfd, 0x63, 0x92, 0x28, 0xab, 0x2f, 0x49, 0xf6, 0xf9, 0x61, 0xff, + 0x00, 0x47, 0x79, 0xb8, 0x1d, 0xe4, 0x85, 0xce, 0x20, 0xfa, 0x51, 0x34, + 0x8c, 0x10, 0x52, 0x1e, 0xb6, 0xf4, 0x75, 0xbf, 0x7d, 0x74, 0x3a, 0xd6, + 0x05, 0x59, 0x3e, 0xbd, 0xbe, 0x58, 0x63, 0xea, 0x3b, 0x9f, 0x03, 0xfc, + 0x90, 0xfc, 0xce, 0x14, 0x85, 0x1b, 0xd4, 0x0c, 0x24, 0xbd, 0x75, 0xe8, + 0xeb, 0x5e, 0xfa, 0xe8, 0x75, 0xb0, 0x8a, 0x2a, 0xc5, 0x15, 0xb4, 0x9a, + 0x3c, 0x30, 0xbf, 0xa3, 0xbc, 0xdc, 0x07, 0x94, 0x21, 0xe2, 0xe5, 0x0a, + 0x64, 0x52, 0x64, 0x20, 0x2a, 0xa4, 0xfd, 0x6d, 0xe8, 0xeb, 0x7e, 0xfa, + 0xe8, 0x75, 0xc1, 0xa2, 0x25, 0x15, 0x61, 0x8f, 0xca, 0x05, 0x07, 0xfa, + 0xbb, 0xcd, 0xc0, 0xee, 0x50, 0xf4, 0x70, 0x1a, 0x4f, 0x8c, 0x93, 0x88, + 0x15, 0x27, 0xac, 0xe5, 0xe9, 0xeb, 0x7e, 0xfa, 0xe8, 0x75, 0xe4, 0x51, + 0xe5, 0x61, 0xf5, 0x30, 0xa1, 0x7f, 0x53, 0xcf, 0x81, 0xc6, 0x8d, 0x67, + 0x9f, 0xfc, 0xda, 0x5e, 0xb9, 0xa8, 0x29, 0x4f, 0x57, 0x7a, 0x7a, 0xdf, + 0xbe, 0xba, 0x3d, 0x78, 0xf9, 0xb0, 0xb0, 0x3a, 0x98, 0x3a, 0x42, 0xfe, + 0x87, 0x9f, 0x03, 0xfc, 0x8d, 0xf3, 0xff, 0x00, 0x9b, 0x4f, 0x59, 0xe1, + 0x84, 0x99, 0xfb, 0xcb, 0xd9, 0xd7, 0x7d, 0xf5, 0xd0, 0xeb, 0xc7, 0x9f, + 0x2c, 0x2c, 0x1e, 0xa9, 0xda, 0x1f, 0xf5, 0x3c, 0xf8, 0x0f, 0x21, 0xfd, + 0x40, 0xf0, 0xda, 0x3e, 0xb8, 0x26, 0xe8, 0x65, 0x7d, 0x4d, 0xec, 0xeb, + 0xbe, 0xfa, 0xe8, 0xf5, 0xf3, 0xe6, 0xc2, 0xc3, 0xea, 0x7d, 0xa1, 0x7f, + 0x43, 0xcf, 0x84, 0x0f, 0xab, 0xfe, 0x6d, 0x5f, 0x5e, 0x34, 0x4d, 0xa2, + 0x81, 0xea, 0x2f, 0x6f, 0x5d, 0xf7, 0xd7, 0x4b, 0xaf, 0x91, 0xe2, 0x4e, + 0x1a, 0xd8, 0x7d, 0x4c, 0x1d, 0x21, 0xff, 0x00, 0x53, 0xcf, 0x84, 0xe9, + 0x1f, 0x93, 0x2d, 0x47, 0x56, 0x7c, 0x26, 0xa8, 0x1a, 0x4c, 0x5e, 0xce, + 0xb9, 0xef, 0xae, 0x97, 0x5f, 0x77, 0x98, 0xa7, 0x2b, 0x0b, 0xa9, 0x55, + 0x41, 0x3f, 0x55, 0xde, 0x6e, 0x07, 0x72, 0x78, 0xfb, 0x96, 0x8f, 0x0d, + 0xa9, 0xac, 0xf8, 0x1a, 0x05, 0x0b, 0xfb, 0x5e, 0xde, 0xbb, 0xef, 0xae, + 0x9f, 0x5f, 0x77, 0x9e, 0xb9, 0x70, 0xb1, 0x34, 0xb4, 0x94, 0x13, 0xf5, + 0x9d, 0xe6, 0xe0, 0x89, 0xe4, 0x8d, 0xa4, 0xe3, 0x4d, 0x5b, 0x6a, 0xf5, + 0x00, 0x82, 0x81, 0xa4, 0x6b, 0xdd, 0xd7, 0x3d, 0xf5, 0xd5, 0xeb, 0xf1, + 0x07, 0xd4, 0x5d, 0xec, 0x4f, 0x15, 0xa9, 0x9b, 0x49, 0x63, 0x9a, 0x68, + 0xf3, 0xe0, 0x89, 0xfc, 0xe6, 0x4f, 0xdf, 0x37, 0x95, 0xb0, 0x3f, 0x24, + 0x0d, 0x55, 0x54, 0x2f, 0xeb, 0x7b, 0xba, 0xe7, 0xbe, 0xba, 0xbf, 0xf2, + 0x08, 0xbf, 0xd9, 0x12, 0xac, 0x3e, 0xa6, 0x4e, 0x92, 0x6e, 0xfb, 0xe6, + 0x9a, 0xb7, 0x80, 0xa9, 0x8f, 0x5a, 0xc5, 0x6e, 0x54, 0x5a, 0x63, 0x08, + 0x7f, 0xd2, 0xf7, 0x0f, 0xcc, 0xfb, 0xeb, 0xab, 0xd7, 0xe3, 0x0f, 0xaa, + 0x51, 0x56, 0x16, 0xb6, 0x89, 0x2a, 0x4b, 0xa8, 0x37, 0xcb, 0xc0, 0x39, + 0xcd, 0x7a, 0xe8, 0x6a, 0xdf, 0x14, 0xb5, 0x5b, 0xcc, 0x14, 0xc1, 0xf5, + 0x2f, 0x77, 0x59, 0xf7, 0xd7, 0x5b, 0xaf, 0xc6, 0x14, 0x8b, 0x85, 0x81, + 0xd4, 0x5e, 0xa4, 0x8f, 0xe4, 0x78, 0xa7, 0x45, 0x2d, 0x06, 0xab, 0xca, + 0x3f, 0x28, 0x10, 0x50, 0xcf, 0xd4, 0xbd, 0xfd, 0x6b, 0xdf, 0x5d, 0x5f, + 0xf9, 0x04, 0x71, 0x48, 0xfd, 0x8a, 0xbb, 0xc3, 0xf2, 0x0f, 0x0a, 0x4f, + 0xa8, 0x37, 0xcb, 0xc3, 0x3f, 0xeb, 0xe1, 0xea, 0xaf, 0x3b, 0x7f, 0x26, + 0x10, 0xd0, 0xc3, 0xfe, 0x97, 0xc3, 0xac, 0xfb, 0xeb, 0xad, 0xd7, 0xe6, + 0x3d, 0x41, 0x18, 0x5d, 0xd0, 0x4c, 0xfc, 0x52, 0xa4, 0xbd, 0x79, 0xe7, + 0xc3, 0x69, 0xe9, 0x3d, 0x0c, 0x2b, 0xdb, 0xeb, 0x46, 0x0d, 0x3e, 0x3b, + 0xe1, 0xd6, 0x7d, 0xf5, 0xd6, 0xeb, 0xf3, 0x5a, 0x4c, 0xa2, 0x15, 0xd8, + 0x1f, 0x79, 0x14, 0xa9, 0x0f, 0x5f, 0xc5, 0x6a, 0x8a, 0x4f, 0xc3, 0xe5, + 0x7c, 0x18, 0x44, 0x70, 0x82, 0x61, 0xa3, 0xef, 0x89, 0xfc, 0xc7, 0xbe, + 0xba, 0xfd, 0x7a, 0x6f, 0x49, 0xb3, 0x85, 0xd7, 0x6f, 0xd6, 0x88, 0x55, + 0x97, 0xa5, 0xa1, 0xc5, 0x6b, 0x8a, 0x4f, 0xc3, 0xd1, 0x5f, 0x18, 0x55, + 0x60, 0xaa, 0x08, 0x79, 0xef, 0x8f, 0x59, 0xf7, 0xd7, 0x67, 0xaf, 0x4d, + 0x9f, 0xbc, 0x27, 0x57, 0x2b, 0xaa, 0x35, 0x88, 0x6a, 0xac, 0x9d, 0x6d, + 0x1e, 0x2b, 0x6b, 0xd5, 0xc2, 0x57, 0xb9, 0x95, 0x90, 0x08, 0x21, 0xa3, + 0xaf, 0x87, 0x57, 0xf7, 0xd7, 0x6f, 0x4b, 0x72, 0x6b, 0xd5, 0xb9, 0x15, + 0x76, 0x1b, 0x96, 0x0b, 0xf9, 0x58, 0xa3, 0xf2, 0x7c, 0x56, 0xe6, 0x93, + 0x50, 0xb9, 0xde, 0x58, 0x41, 0xf6, 0x58, 0xd1, 0x0c, 0x2f, 0x7f, 0x56, + 0xf7, 0xd7, 0x78, 0xd2, 0xda, 0xb4, 0x34, 0x9f, 0x38, 0x5d, 0xc8, 0x46, + 0x14, 0xac, 0x45, 0x60, 0x0a, 0xda, 0x5c, 0x57, 0x80, 0x7d, 0x48, 0x6e, + 0xd6, 0xd4, 0x85, 0xb6, 0x91, 0x4d, 0x2a, 0xba, 0x5e, 0xe0, 0x45, 0xa7, + 0xef, 0xae, 0xf3, 0x0b, 0xed, 0xa9, 0xff, 0x00, 0x5c, 0x4e, 0x94, 0xd6, + 0xc6, 0xf0, 0x49, 0x3f, 0x9d, 0xdc, 0xd6, 0x77, 0x8a, 0xf0, 0x68, 0xa1, + 0x6a, 0x9f, 0xe2, 0x64, 0xcb, 0x76, 0x73, 0x20, 0xd1, 0x55, 0x5a, 0x91, + 0x5b, 0x6c, 0x4a, 0x99, 0x68, 0xa0, 0xee, 0x91, 0x56, 0xe9, 0x15, 0x6e, + 0x71, 0x96, 0xe9, 0x15, 0x6e, 0x71, 0x96, 0xe7, 0x19, 0x6e, 0x51, 0x96, + 0xe7, 0x19, 0x6e, 0x71, 0x96, 0xe7, 0x19, 0x6e, 0x51, 0x96, 0xe5, 0x19, + 0x6e, 0x51, 0x96, 0xe5, 0x1a, 0x9b, 0x94, 0x65, 0xb9, 0x46, 0x5b, 0x8c, + 0x55, 0xb9, 0x45, 0x5b, 0x94, 0x55, 0xb9, 0x45, 0x5b, 0x94, 0x45, 0xb8, + 0xc4, 0x5b, 0x8c, 0x45, 0xb8, 0xc4, 0x5b, 0x8c, 0x45, 0xb8, 0xc4, 0x5b, + 0x84, 0x45, 0xb8, 0xc4, 0x5b, 0x8c, 0x45, 0x22, 0xe3, 0x66, 0x3e, 0xa5, + 0x1e, 0x4c, 0x15, 0x7c, 0x98, 0xcb, 0x04, 0x9a, 0xab, 0xb4, 0x3e, 0xeb, + 0x8a, 0xf0, 0x8f, 0xb7, 0x82, 0x81, 0xd2, 0xdf, 0x81, 0xb1, 0xb4, 0xea, + 0xbb, 0x8a, 0x93, 0x9d, 0xe1, 0x6d, 0x1e, 0xb6, 0xae, 0x5b, 0x57, 0x2d, + 0xa3, 0xd6, 0xd5, 0xf4, 0xda, 0x3d, 0x6d, 0x5c, 0xb6, 0x8e, 0x5b, 0x47, + 0x2d, 0xa3, 0x91, 0x73, 0x95, 0x5c, 0xb3, 0x14, 0x1c, 0xe5, 0x98, 0xac, + 0xc5, 0x54, 0xa0, 0xe7, 0x56, 0xba, 0x57, 0x5c, 0xd8, 0xd7, 0x0a, 0xae, + 0xd5, 0x5a, 0x60, 0x4a, 0x2a, 0x46, 0x1e, 0xd6, 0x65, 0x95, 0x0d, 0xcc, + 0xae, 0xc3, 0x7c, 0x5c, 0x57, 0x81, 0xb5, 0xb3, 0xe1, 0x9a, 0x06, 0x3a, + 0xaa, 0xf7, 0x40, 0xcb, 0x12, 0xab, 0xba, 0xa2, 0xef, 0x80, 0x3a, 0x57, + 0x0e, 0xfc, 0xb1, 0xa5, 0x57, 0x34, 0x79, 0xf3, 0xc0, 0x15, 0x9b, 0x0a, + 0xa2, 0xaa, 0x69, 0xdc, 0xd3, 0x1d, 0x0a, 0xaa, 0xcc, 0xab, 0x5c, 0x08, + 0xaa, 0x3a, 0xab, 0x16, 0x16, 0x68, 0xc0, 0xe9, 0x9f, 0xc3, 0x75, 0xdb, + 0xf6, 0xfc, 0x56, 0xc3, 0x73, 0x59, 0xd0, 0x53, 0x39, 0xde, 0x49, 0x7d, + 0xb5, 0x9e, 0x87, 0x07, 0x3c, 0x00, 0xa6, 0x24, 0x70, 0xd5, 0x6b, 0x87, + 0x6a, 0x2e, 0x60, 0x1a, 0xaa, 0xe8, 0x4d, 0x00, 0xa8, 0x55, 0x28, 0x56, + 0xbe, 0x72, 0x39, 0x77, 0xa6, 0x15, 0xa2, 0x3a, 0x01, 0x42, 0x1c, 0xac, + 0x88, 0x59, 0x61, 0xe7, 0x5a, 0x2b, 0xb4, 0xcc, 0xb6, 0x67, 0x14, 0xdb, + 0x36, 0x92, 0xb0, 0xf4, 0x2d, 0x72, 0x8a, 0xdd, 0xe2, 0x5e, 0x72, 0x09, + 0x96, 0x9a, 0xad, 0x71, 0xae, 0x21, 0x56, 0xb8, 0x1a, 0x70, 0xf3, 0xc3, + 0x52, 0x86, 0x14, 0x5c, 0x95, 0x34, 0x08, 0x8c, 0xa7, 0x9e, 0x14, 0x42, + 0x80, 0x06, 0xaa, 0xe1, 0xa2, 0xaa, 0x02, 0x89, 0xad, 0xce, 0xe9, 0x6a, + 0x36, 0x19, 0x7a, 0xcd, 0x51, 0x63, 0x33, 0x67, 0x65, 0xf1, 0x73, 0x51, + 0x59, 0xb3, 0x8c, 0xd3, 0xe1, 0x0e, 0xd6, 0xf4, 0x4a, 0x6c, 0xa6, 0xb1, + 0xed, 0x81, 0xe4, 0x00, 0xaa, 0xd0, 0x02, 0xb9, 0xae, 0x7c, 0x14, 0xa6, + 0x1a, 0x2a, 0x54, 0x2a, 0x8a, 0x0e, 0x78, 0x15, 0xd8, 0x6a, 0xb4, 0x55, + 0x4d, 0xe6, 0x74, 0x4e, 0x5c, 0xd4, 0x9c, 0x3c, 0xd1, 0x1b, 0xa0, 0x2e, + 0xd4, 0x78, 0x9d, 0x01, 0x9b, 0x29, 0x7e, 0x3b, 0x6a, 0x16, 0xca, 0xd0, + 0x0e, 0xa2, 0x6b, 0xaa, 0x2d, 0xc9, 0x3d, 0xee, 0x49, 0x04, 0xda, 0x61, + 0x4c, 0x6a, 0xb9, 0x15, 0xdb, 0xb5, 0x17, 0x7e, 0xe3, 0x02, 0x82, 0xe6, + 0xbb, 0xad, 0x31, 0x26, 0x88, 0x1c, 0x79, 0xaa, 0xd1, 0x73, 0x54, 0x44, + 0x51, 0x4a, 0x33, 0x23, 0x18, 0x68, 0x83, 0x95, 0x91, 0x0b, 0x7a, 0xb4, + 0x4f, 0x3e, 0x3b, 0xc7, 0x06, 0xab, 0xcc, 0x83, 0xb4, 0xae, 0x66, 0xdb, + 0x52, 0x7b, 0xac, 0xed, 0x78, 0x01, 0xc3, 0xbf, 0x74, 0x50, 0x5c, 0xd1, + 0xc2, 0x98, 0x55, 0x77, 0x44, 0xa1, 0x80, 0xa2, 0xa2, 0xd1, 0x55, 0x77, + 0x55, 0xd1, 0xca, 0x8a, 0xb4, 0x50, 0x59, 0x9e, 0x23, 0x69, 0x91, 0xa9, + 0xae, 0xaa, 0xba, 0x12, 0xfb, 0x49, 0xef, 0xd1, 0x6b, 0x42, 0xdb, 0x48, + 0x21, 0x12, 0x89, 0xae, 0x56, 0xec, 0xa6, 0xf3, 0x2c, 0x30, 0xed, 0x80, + 0x34, 0xc0, 0x36, 0xae, 0x21, 0x72, 0x0e, 0xd4, 0xd6, 0x83, 0xb2, 0xd2, + 0x98, 0x01, 0xa0, 0x04, 0xbb, 0x9e, 0x15, 0x54, 0xd3, 0xbe, 0x94, 0x5d, + 0xb9, 0x61, 0xfe, 0x42, 0x25, 0x4b, 0x37, 0x22, 0x6b, 0x80, 0x76, 0x88, + 0x3b, 0x32, 0xba, 0x52, 0xbb, 0x1b, 0x37, 0xf4, 0x52, 0xaa, 0xd2, 0x81, + 0xba, 0xcc, 0x17, 0xe5, 0x0c, 0x7d, 0x4e, 0x6a, 0xb2, 0xd6, 0x95, 0xdd, + 0x66, 0x71, 0x05, 0x6b, 0x4e, 0xc8, 0xe2, 0x57, 0x6c, 0x34, 0x5d, 0xfb, + 0x6a, 0x15, 0x6a, 0xbb, 0xf2, 0x5d, 0xb9, 0xe1, 0xdf, 0x4a, 0x55, 0x55, + 0x15, 0x55, 0x01, 0xb5, 0x78, 0xd0, 0x20, 0x54, 0xb4, 0x3d, 0xbc, 0x79, + 0x78, 0x02, 0x56, 0x5f, 0xf4, 0xde, 0x69, 0x4d, 0x5c, 0xed, 0x43, 0x93, + 0x1f, 0xe1, 0xb5, 0x65, 0x77, 0xb8, 0x04, 0x50, 0xaa, 0xe0, 0x31, 0xaa, + 0x27, 0x0e, 0x46, 0xa8, 0x2e, 0xe5, 0x73, 0x5d, 0xce, 0x98, 0x85, 0xc8, + 0xd6, 0x86, 0xa4, 0x0a, 0x51, 0x52, 0xab, 0x92, 0x3c, 0x82, 0xa5, 0x54, + 0x06, 0x65, 0x15, 0x55, 0xd0, 0x6a, 0xae, 0x7d, 0x9f, 0xb6, 0x9d, 0xfd, + 0x53, 0x92, 0xc2, 0x72, 0x5a, 0x65, 0x86, 0x13, 0xf3, 0x1c, 0xac, 0x72, + 0x69, 0xa8, 0xb6, 0x64, 0xcc, 0x38, 0x95, 0xc7, 0xb7, 0x00, 0x18, 0xd3, + 0x4a, 0xa2, 0x82, 0x3a, 0xa1, 0xa6, 0x03, 0x44, 0x15, 0x57, 0x3e, 0x10, + 0xb9, 0x28, 0x10, 0xea, 0xec, 0xb4, 0x45, 0x56, 0xaa, 0x1b, 0x4b, 0x8d, + 0x85, 0x67, 0xfc, 0x3a, 0xce, 0xfd, 0x77, 0xa6, 0xcf, 0xcb, 0x10, 0xd1, + 0x36, 0x26, 0x51, 0x9b, 0x59, 0xf8, 0x22, 0x24, 0x28, 0x8c, 0x30, 0x9d, + 0xc7, 0x45, 0x5a, 0x2c, 0xcb, 0x92, 0xcd, 0xa7, 0x25, 0x55, 0x5c, 0x2a, + 0xaa, 0xbb, 0x68, 0x83, 0x42, 0xaa, 0x0a, 0xb4, 0x5f, 0xe5, 0x05, 0x08, + 0x50, 0x57, 0x2e, 0x1c, 0xd5, 0xd4, 0xb3, 0x37, 0xf9, 0xdf, 0xd9, 0x37, + 0x2c, 0xd9, 0xc9, 0x79, 0xd9, 0x77, 0x4a, 0x4c, 0x57, 0xc4, 0xc3, 0x55, + 0x51, 0x4b, 0x62, 0x5b, 0x2f, 0x0d, 0x70, 0xae, 0xbc, 0x1d, 0x82, 0xe6, + 0xb9, 0x20, 0xea, 0x63, 0xd8, 0x21, 0xa2, 0xed, 0x4a, 0xe3, 0xcd, 0x4b, + 0x8f, 0x15, 0x68, 0x83, 0xb4, 0x3a, 0x88, 0x2d, 0x31, 0xa2, 0x58, 0xf6, + 0x68, 0xb2, 0xe4, 0x7f, 0x6d, 0xe7, 0xb3, 0x36, 0xf0, 0xb2, 0xe5, 0x4d, + 0x29, 0x91, 0x8b, 0x4c, 0xf4, 0x1d, 0xb4, 0x18, 0x8d, 0xd9, 0xbf, 0x01, + 0xc1, 0x4c, 0x6b, 0x80, 0xc2, 0xab, 0x9e, 0x1d, 0xb0, 0x0b, 0x91, 0xa6, + 0xa5, 0x73, 0x4d, 0x15, 0x50, 0x9b, 0x95, 0x55, 0x52, 0xab, 0x36, 0x97, + 0x32, 0xc9, 0xfa, 0xbf, 0xb8, 0x8a, 0x8b, 0x7e, 0xc8, 0xdc, 0x26, 0xb5, + 0x71, 0x63, 0xcd, 0x0b, 0xf3, 0x2b, 0x4e, 0x5c, 0x36, 0x27, 0xe8, 0xe7, + 0xc1, 0x5d, 0x78, 0x29, 0x80, 0x5a, 0xe6, 0x55, 0xc1, 0x8c, 0xcc, 0x9b, + 0xa0, 0xcd, 0x55, 0xc9, 0x58, 0xb6, 0x6b, 0xad, 0x49, 0xe9, 0x59, 0x66, + 0xca, 0xc1, 0xfd, 0xf6, 0x84, 0x8b, 0x2d, 0x19, 0x59, 0xd9, 0x58, 0x92, + 0x51, 0xd9, 0x45, 0x0d, 0xca, 0xd1, 0x83, 0x9a, 0x1b, 0x86, 0xbc, 0x15, + 0x55, 0xa6, 0x34, 0xd3, 0x83, 0x5c, 0x3b, 0x2e, 0xe7, 0x5e, 0x01, 0xca, + 0x0b, 0x55, 0x50, 0x15, 0x50, 0xe1, 0x3a, 0x3c, 0x5b, 0x06, 0xc5, 0x6d, + 0x8f, 0x29, 0xec, 0x6f, 0x15, 0x8f, 0xf1, 0x19, 0x67, 0x34, 0xb1, 0xec, + 0x76, 0x91, 0x19, 0xb4, 0x64, 0xdc, 0x2c, 0x91, 0x30, 0xa7, 0x0d, 0x71, + 0xef, 0xcb, 0x8e, 0xb5, 0xc3, 0xbd, 0x10, 0x43, 0xcb, 0x97, 0x26, 0x17, + 0x3a, 0xc1, 0xdd, 0xa1, 0xfb, 0x3b, 0xd1, 0x61, 0xe8, 0xdd, 0x0d, 0x7c, + 0x16, 0x93, 0x6a, 0x78, 0x74, 0xaf, 0xeb, 0xae, 0x00, 0xd1, 0x73, 0xc1, + 0xa2, 0x88, 0x50, 0x1a, 0xeb, 0x75, 0x2e, 0xff, 0x00, 0xc4, 0x63, 0x72, + 0xf6, 0x84, 0x07, 0x0b, 0xc5, 0x62, 0x7c, 0x3e, 0x3c, 0x32, 0xa7, 0x68, + 0x41, 0xd7, 0x0a, 0xfe, 0xf1, 0xc0, 0xd1, 0xac, 0x3d, 0x15, 0x35, 0xb0, + 0xec, 0x77, 0xdb, 0x53, 0x72, 0xd2, 0xf0, 0xe5, 0x20, 0x7b, 0x59, 0x99, + 0x76, 0x4d, 0xc0, 0xb6, 0x2c, 0xc8, 0xb6, 0x64, 0xcc, 0x6a, 0x39, 0x8f, + 0x3f, 0xae, 0xbc, 0x41, 0x0c, 0x5a, 0xa1, 0x73, 0x92, 0x94, 0x7d, 0xa1, + 0x31, 0x63, 0xd9, 0x30, 0xec, 0x79, 0x3f, 0x6f, 0x6a, 0x59, 0xac, 0xb5, + 0x25, 0xad, 0x29, 0x58, 0x92, 0x51, 0x63, 0x8a, 0x39, 0xd8, 0x72, 0xf6, + 0x3d, 0xc7, 0x38, 0x4c, 0x31, 0x1f, 0x75, 0xac, 0x01, 0x64, 0x4b, 0x7b, + 0x9b, 0xc7, 0x62, 0x0b, 0x4e, 0x5e, 0x6e, 0x11, 0x80, 0xe3, 0x8d, 0x78, + 0x69, 0x5f, 0xd8, 0xd5, 0x72, 0xee, 0xed, 0x1b, 0xee, 0xef, 0x95, 0xde, + 0xdb, 0x32, 0x20, 0x39, 0xb1, 0xaf, 0xb0, 0xba, 0x37, 0x7c, 0xda, 0xb3, + 0x4d, 0x68, 0x63, 0x7d, 0xd9, 0x00, 0x8b, 0xe3, 0x77, 0x7e, 0x1b, 0x31, + 0xfb, 0x47, 0x0d, 0x91, 0x66, 0x44, 0xb5, 0x67, 0x2c, 0xf9, 0x18, 0x76, + 0x74, 0xa7, 0xbd, 0x9d, 0x93, 0x87, 0x68, 0x4a, 0xdb, 0x76, 0x54, 0x4b, + 0x26, 0x7b, 0xd8, 0x43, 0x69, 0x88, 0xeb, 0xa9, 0x60, 0xb6, 0xc9, 0x93, + 0xf7, 0xf7, 0xb2, 0xc3, 0x16, 0xc5, 0x9f, 0x11, 0x86, 0x1b, 0xff, 0x00, + 0x7d, 0xca, 0xb0, 0xf7, 0x88, 0xfc, 0xbf, 0xe8, 0x6f, 0xbd, 0x89, 0xbb, + 0xcc, 0x70, 0x53, 0x8a, 0x9c, 0x16, 0x4c, 0x83, 0xad, 0x29, 0xdb, 0x2e, + 0x4d, 0xb2, 0x92, 0xff, 0x00, 0xf4, 0x36, 0x9d, 0x9e, 0xcb, 0x42, 0x5a, + 0x72, 0xe9, 0x5a, 0x70, 0x23, 0xfc, 0xb7, 0x69, 0xaf, 0x97, 0x2d, 0x35, + 0xf2, 0xcd, 0xa8, 0xbe, 0x57, 0xb5, 0x57, 0xca, 0x96, 0xb2, 0xf9, 0x4e, + 0xd6, 0x5f, 0x28, 0x5a, 0xcb, 0xe4, 0xfb, 0x5d, 0x7c, 0x9d, 0x6b, 0xa1, + 0x73, 0xad, 0x75, 0xf2, 0x65, 0xae, 0xbe, 0x4b, 0xb5, 0xd7, 0xc9, 0x56, + 0xb9, 0x57, 0x56, 0xeb, 0x3e, 0xcb, 0x87, 0xff, 0x00, 0xb5, 0xff, 0xc4, + 0x00, 0x1d, 0x11, 0x01, 0x00, 0x03, 0x00, 0x02, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x40, 0x50, 0x60, + 0x70, 0x10, 0x30, 0x80, 0x90, 0xff, 0xda, 0x00, 0x08, 0x01, 0x03, 0x01, + 0x01, 0x3f, 0x01, 0xef, 0x63, 0xee, 0xe7, 0x49, 0xd2, 0x74, 0x9d, 0x27, + 0x49, 0xa6, 0x5f, 0x74, 0x9a, 0x65, 0xf6, 0x99, 0x7d, 0xd2, 0x69, 0x97, + 0xda, 0x65, 0xf6, 0x99, 0x7d, 0xa6, 0x5f, 0x74, 0x9a, 0x65, 0xf6, 0x99, + 0x7d, 0xe0, 0xa5, 0xf6, 0x99, 0xa4, 0x67, 0x1c, 0x90, 0x81, 0x98, 0xe2, + 0xbe, 0xd6, 0x46, 0x63, 0x22, 0xfb, 0xed, 0x64, 0x66, 0x32, 0x31, 0x49, + 0xb9, 0x64, 0xdf, 0x26, 0x41, 0x37, 0xc9, 0xd2, 0xe6, 0x7b, 0xa4, 0xf4, + 0xbb, 0xc9, 0x5f, 0xdb, 0x0f, 0xff, 0xc4, 0x00, 0x1f, 0x11, 0x01, 0x00, + 0x02, 0x03, 0x01, 0x00, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x20, 0x40, 0x10, 0x30, 0x50, 0x02, 0x00, 0x11, 0x60, + 0x70, 0x80, 0xff, 0xda, 0x00, 0x08, 0x01, 0x02, 0x01, 0x01, 0x3f, 0x01, + 0xfd, 0x47, 0xd7, 0x27, 0xeb, 0x40, 0x72, 0xde, 0x93, 0xa5, 0xe3, 0x98, + 0x69, 0x17, 0x8c, 0x36, 0x0f, 0x8c, 0x8a, 0x26, 0x1d, 0xcc, 0x48, 0x11, + 0x35, 0x9a, 0x4a, 0xa4, 0x0a, 0x06, 0x92, 0xa9, 0x26, 0x47, 0xc6, 0x81, + 0xd2, 0x3a, 0x47, 0x48, 0xde, 0xdf, 0x20, 0x6f, 0x6f, 0x90, 0x37, 0xb7, + 0xc8, 0x1b, 0xdb, 0xe4, 0x0d, 0xed, 0xf2, 0x06, 0xf6, 0xf9, 0x4d, 0xbe, + 0x53, 0x6f, 0x90, 0x37, 0xb7, 0xc8, 0x1b, 0xdb, 0xe4, 0x0d, 0xed, 0xf2, + 0x06, 0xf6, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, + 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, + 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, + 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, 0x49, 0x86, 0x0d, 0xf2, + 0x06, 0x93, 0x0c, 0x1b, 0xe4, 0x0c, 0x33, 0x30, 0xc1, 0xbe, 0x40, 0xc3, + 0x33, 0x0c, 0x1b, 0xe4, 0x0c, 0x33, 0x30, 0xc1, 0xbe, 0x40, 0xc3, 0x33, + 0x0c, 0x1b, 0xe4, 0x0c, 0x33, 0x24, 0xdf, 0x20, 0x61, 0x9f, 0x99, 0x37, + 0xc9, 0x33, 0xf3, 0xcb, 0x67, 0xe7, 0x2f, 0x21, 0x9f, 0x9c, 0xbc, 0x53, + 0x2c, 0xce, 0x41, 0x97, 0xa4, 0xeb, 0x79, 0xe7, 0x4b, 0xcc, 0x1e, 0x2b, + 0xa4, 0x83, 0xc5, 0x77, 0x3c, 0xef, 0x3c, 0x77, 0x59, 0x17, 0x84, 0xec, + 0x3a, 0xef, 0x38, 0x7a, 0x64, 0x1f, 0xd0, 0x9d, 0x33, 0x2f, 0xf4, 0x83, + 0xfd, 0x6b, 0xff, 0xc4, 0x00, 0x43, 0x10, 0x00, 0x00, 0x03, 0x05, 0x04, + 0x06, 0x07, 0x06, 0x03, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x03, 0x10, 0x11, 0x21, 0x31, 0x20, 0x51, 0x71, 0x72, 0x04, + 0x32, 0x40, 0x41, 0x61, 0xb1, 0x12, 0x22, 0x30, 0x34, 0x91, 0x92, 0xa1, + 0x33, 0x52, 0x62, 0x73, 0x81, 0xc1, 0x13, 0x42, 0xd1, 0x14, 0x23, 0x24, + 0x50, 0x82, 0xa2, 0x43, 0x60, 0x93, 0xb2, 0xe1, 0xf0, 0xf1, 0x83, 0xff, + 0xda, 0x00, 0x08, 0x01, 0x01, 0x00, 0x06, 0x3f, 0x02, 0xff, 0x00, 0x25, + 0x50, 0x50, 0xc5, 0x0c, 0x50, 0xc5, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x1f, 0x41, 0x41, 0x41, 0x41, 0x4e, 0xd0, 0xd9, 0xb3, 0xfe, 0x21, + 0xb1, 0x56, 0x07, 0xd5, 0x2f, 0xa8, 0xea, 0x29, 0x0c, 0x8a, 0xe4, 0xa4, + 0x77, 0x93, 0xf0, 0x21, 0xde, 0xda, 0x78, 0x8e, 0xf4, 0xd7, 0xcc, 0x3b, + 0xdb, 0x5f, 0x30, 0xef, 0x4d, 0x7c, 0xe6, 0x3b, 0xdb, 0x5f, 0x31, 0x8e, + 0xf4, 0xd7, 0xcc, 0x3b, 0xd3, 0x5f, 0x30, 0xef, 0x4d, 0x7c, 0xc3, 0xbc, + 0xb4, 0xf3, 0x0e, 0xf4, 0xd7, 0xcc, 0x63, 0xbd, 0x35, 0xf3, 0x98, 0xef, + 0x2d, 0x7c, 0xc6, 0x3b, 0xcb, 0x4f, 0x30, 0xef, 0x0d, 0x3c, 0xc3, 0xbc, + 0x34, 0xf3, 0x0f, 0x6e, 0xbf, 0x30, 0xf6, 0xcb, 0xf3, 0x0f, 0x6c, 0xbf, + 0x11, 0xed, 0x55, 0xe2, 0x3d, 0xa2, 0xfc, 0x44, 0xda, 0x2b, 0xc4, 0x7b, + 0x55, 0x1f, 0xd4, 0x7b, 0x45, 0x78, 0x8f, 0x68, 0xaf, 0x11, 0xed, 0x15, + 0xe2, 0x35, 0xd5, 0xe2, 0x3d, 0xa2, 0xbc, 0x46, 0xba, 0xbc, 0x46, 0xba, + 0xbc, 0x46, 0xb9, 0xf8, 0x8d, 0x73, 0x1a, 0xe6, 0x35, 0x95, 0xe2, 0x35, + 0xcf, 0xc4, 0x6b, 0x98, 0xd7, 0x50, 0x93, 0x45, 0x78, 0x8e, 0xae, 0x90, + 0xb5, 0x17, 0xba, 0xb9, 0x90, 0x26, 0x4d, 0x88, 0x98, 0xb7, 0xdd, 0xee, + 0xab, 0xb0, 0xfd, 0x95, 0x81, 0xc1, 0xa2, 0x8b, 0xae, 0xa2, 0xdc, 0x42, + 0x76, 0x2a, 0x35, 0x88, 0x54, 0x85, 0x46, 0xb1, 0x0a, 0x90, 0xa9, 0x0d, + 0x61, 0xac, 0x42, 0xa3, 0x58, 0x85, 0x48, 0x54, 0x6b, 0x0d, 0x61, 0x51, + 0x51, 0x51, 0x51, 0x51, 0x57, 0x54, 0x54, 0x54, 0x54, 0x56, 0xcd, 0x5f, + 0x23, 0x79, 0x19, 0x48, 0x74, 0x5a, 0x1c, 0x5a, 0xb3, 0x91, 0x9d, 0xe5, + 0x6d, 0xa3, 0x63, 0xfc, 0xc7, 0x11, 0x12, 0x11, 0x12, 0xb1, 0x51, 0x51, + 0x51, 0xac, 0x35, 0x86, 0xb0, 0xd6, 0xb3, 0x51, 0x51, 0x57, 0x54, 0x55, + 0xd5, 0x15, 0x31, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x57, 0x56, 0xc9, + 0x74, 0x81, 0x1c, 0x8d, 0xc9, 0x4e, 0xe5, 0x11, 0x95, 0xa6, 0xc7, 0x72, + 0x15, 0xc9, 0xc7, 0xb8, 0x74, 0x13, 0xb8, 0x46, 0xcf, 0x17, 0xf4, 0x8b, + 0xea, 0x5d, 0x9d, 0x36, 0x3e, 0x89, 0xb9, 0x86, 0x68, 0x5a, 0x6f, 0xf2, + 0xd5, 0xc9, 0xcd, 0x15, 0x0d, 0xc1, 0x47, 0xc6, 0xd4, 0x2e, 0x22, 0x09, + 0x33, 0xaa, 0x8a, 0x20, 0xf7, 0x1c, 0x22, 0x40, 0x91, 0xef, 0x97, 0x47, + 0x61, 0x8f, 0x6a, 0x92, 0xbd, 0xda, 0x36, 0x72, 0xb4, 0xdf, 0x22, 0xb9, + 0x3b, 0x48, 0xcb, 0x66, 0xe0, 0x85, 0x16, 0xf3, 0x32, 0x11, 0x33, 0x88, + 0xd6, 0x3b, 0x86, 0xb1, 0x82, 0x52, 0x4e, 0x06, 0x5b, 0xc6, 0x92, 0x6a, + 0x99, 0xa4, 0x8a, 0x1e, 0x2e, 0x52, 0xca, 0x46, 0x4a, 0x2f, 0xb8, 0xa9, + 0x8a, 0x98, 0x66, 0x95, 0x4c, 0x84, 0x0a, 0x90, 0x23, 0xf4, 0x7b, 0x33, + 0xaa, 0x54, 0x2a, 0x37, 0x86, 0x64, 0x73, 0x23, 0x8d, 0x70, 0x09, 0x84, + 0xa2, 0x82, 0x31, 0x57, 0x31, 0x56, 0xf8, 0xaa, 0x22, 0x52, 0x27, 0x56, + 0x41, 0x9e, 0xf2, 0x33, 0x20, 0x78, 0xb8, 0xa3, 0x40, 0x64, 0x76, 0x50, + 0xed, 0x1b, 0xe6, 0x15, 0xa6, 0xd9, 0x15, 0xc8, 0x10, 0x6d, 0xc5, 0x06, + 0xf9, 0x3d, 0x19, 0xcf, 0x91, 0x06, 0x86, 0x65, 0x13, 0x23, 0x28, 0x7a, + 0x8a, 0x17, 0x80, 0xa8, 0x49, 0x9d, 0x7a, 0x50, 0x88, 0xd2, 0xb0, 0x4f, + 0x37, 0x41, 0x2a, 0x84, 0x43, 0x58, 0xce, 0x52, 0xf1, 0x13, 0x28, 0xf5, + 0x14, 0x7e, 0x82, 0x24, 0x70, 0x09, 0xc8, 0x9e, 0x41, 0x94, 0x0c, 0xba, + 0x73, 0xe9, 0x04, 0x74, 0x4a, 0x70, 0xeb, 0x02, 0xf9, 0xc5, 0x0f, 0x0f, + 0xfc, 0x72, 0x8d, 0x29, 0xe8, 0xa4, 0xce, 0x44, 0x3a, 0x25, 0x23, 0x81, + 0x9c, 0x7e, 0x80, 0xa6, 0x2f, 0x33, 0x1c, 0x37, 0x89, 0x4a, 0x27, 0x02, + 0x0a, 0x56, 0xe4, 0xb9, 0x2d, 0x13, 0x22, 0x54, 0xbe, 0xa3, 0xa3, 0xee, + 0x2c, 0x8f, 0xe8, 0x60, 0xc2, 0xfa, 0x07, 0xd4, 0x8c, 0xa4, 0x14, 0x69, + 0x28, 0x26, 0x32, 0x20, 0xce, 0xfe, 0x81, 0x46, 0xcb, 0x32, 0x37, 0x68, + 0xd9, 0xca, 0xd3, 0x6c, 0x8a, 0xe4, 0x38, 0x06, 0x90, 0xa4, 0x2d, 0x23, + 0x31, 0x86, 0xd8, 0xa7, 0xee, 0xff, 0x00, 0xea, 0x1a, 0x4e, 0x52, 0xe6, + 0xe2, 0x0d, 0xb2, 0xfd, 0xc8, 0x7f, 0x42, 0xbf, 0xda, 0x6e, 0x65, 0xf2, + 0xd2, 0x3a, 0x7d, 0x1e, 0xad, 0xe1, 0x28, 0x89, 0x14, 0x4e, 0x13, 0x0c, + 0x91, 0x09, 0x11, 0xd1, 0xca, 0x49, 0xac, 0xa2, 0x93, 0x81, 0x8e, 0x9c, + 0x63, 0x23, 0x2f, 0x41, 0x11, 0x79, 0x98, 0x87, 0x88, 0x8f, 0xb8, 0xbe, + 0x7f, 0xf8, 0x1a, 0x33, 0x33, 0x87, 0x4a, 0x65, 0x89, 0x39, 0x28, 0xe3, + 0x10, 0x6a, 0xf7, 0x94, 0x94, 0xfa, 0x85, 0x62, 0x3a, 0xc5, 0x0d, 0xc1, + 0x47, 0xee, 0xcf, 0xa2, 0x27, 0x65, 0x96, 0x2e, 0xd1, 0xbe, 0x61, 0x5a, + 0x6b, 0x91, 0x5c, 0x9c, 0xa8, 0x5a, 0x41, 0xfc, 0x67, 0xc8, 0x34, 0x44, + 0x35, 0xe1, 0x37, 0xf4, 0x21, 0xbe, 0x31, 0x1a, 0x56, 0x52, 0xff, 0x00, + 0x71, 0x3d, 0xbe, 0x4f, 0xb9, 0x0f, 0xe9, 0x57, 0xfb, 0x4d, 0xcc, 0xbe, + 0x59, 0x06, 0x07, 0xba, 0x2a, 0x23, 0x2b, 0xc4, 0x37, 0x55, 0x27, 0xc0, + 0x32, 0x69, 0xf9, 0xba, 0x44, 0x4a, 0xc6, 0xf7, 0x19, 0x99, 0x99, 0x98, + 0x62, 0x95, 0x4d, 0x26, 0xa8, 0x40, 0x32, 0x86, 0xf4, 0x44, 0x44, 0x8c, + 0xc8, 0xef, 0x27, 0x33, 0x8a, 0x62, 0x4b, 0x52, 0xd2, 0xae, 0x34, 0x11, + 0x4f, 0x59, 0x17, 0xbd, 0x8a, 0x77, 0x12, 0x81, 0x86, 0xcc, 0xd5, 0x24, + 0xa9, 0x5e, 0x07, 0xb8, 0x47, 0xa3, 0x03, 0x2d, 0xc6, 0x22, 0x93, 0xea, + 0x9d, 0x2c, 0xb2, 0xc5, 0xda, 0x3e, 0x72, 0xb4, 0xdb, 0x22, 0xb9, 0x39, + 0xae, 0x50, 0x76, 0x7f, 0x0c, 0xe6, 0x9a, 0x8e, 0xac, 0xc5, 0xce, 0xeb, + 0x48, 0x19, 0x26, 0x87, 0x23, 0xe2, 0xe8, 0x09, 0x6f, 0x15, 0x83, 0x8a, + 0x26, 0xee, 0x8c, 0x70, 0x12, 0x31, 0x57, 0x54, 0x61, 0x41, 0x57, 0x4c, + 0x4a, 0xa3, 0xfe, 0x1d, 0x11, 0x53, 0x15, 0x15, 0x31, 0x18, 0xd9, 0x63, + 0x8b, 0xb4, 0x7c, 0xe5, 0x69, 0xb6, 0x43, 0xe4, 0x0c, 0xb7, 0x06, 0x98, + 0x59, 0x99, 0x8a, 0x90, 0xa8, 0x99, 0x91, 0x88, 0x11, 0x91, 0x0a, 0x8d, + 0x61, 0xae, 0x44, 0x35, 0x88, 0x6b, 0x8a, 0x90, 0xd6, 0x15, 0x1b, 0x86, + 0xb0, 0xd6, 0x21, 0xac, 0x2a, 0x2a, 0x2a, 0x2a, 0xea, 0xba, 0xa2, 0xb4, + 0x1c, 0x1d, 0x5f, 0x47, 0xca, 0xc3, 0x1c, 0x5c, 0xc3, 0x39, 0x03, 0xb2, + 0xdb, 0x22, 0xb9, 0x39, 0xa4, 0x6e, 0x06, 0xf2, 0x22, 0x9c, 0x64, 0x14, + 0xcc, 0xce, 0x3d, 0x1d, 0xbf, 0x49, 0x32, 0x5f, 0x5d, 0x8a, 0x7a, 0x7d, + 0x18, 0x56, 0xc3, 0x29, 0x6f, 0x73, 0x0c, 0xe4, 0x0e, 0xcb, 0x4c, 0xa6, + 0x20, 0x1a, 0x46, 0xe0, 0x6f, 0xd1, 0xca, 0xb1, 0x59, 0x48, 0x69, 0x31, + 0xf7, 0xcf, 0x6f, 0xd2, 0x8a, 0xfd, 0x1d, 0x56, 0x19, 0x13, 0x98, 0xe7, + 0x20, 0x78, 0xd9, 0x6b, 0x91, 0x5c, 0x9c, 0xbb, 0xe0, 0x0e, 0x37, 0xbf, + 0x46, 0xce, 0x43, 0x49, 0xce, 0x7b, 0x7e, 0x91, 0xf2, 0x15, 0x61, 0x96, + 0x20, 0x83, 0x1c, 0xe4, 0x0e, 0xcb, 0x5c, 0x87, 0xc8, 0x18, 0x6b, 0x2d, + 0xc0, 0xdf, 0xa2, 0xfc, 0xc2, 0xe6, 0x34, 0x9c, 0xe7, 0xb7, 0xb6, 0xf9, + 0x0b, 0xb0, 0xcf, 0x10, 0x41, 0x96, 0x62, 0x0a, 0xc6, 0xcb, 0x5c, 0x8a, + 0xe4, 0xe6, 0xb7, 0x74, 0x41, 0xbf, 0x46, 0xf9, 0x85, 0xcc, 0x69, 0x39, + 0xcf, 0x6f, 0x69, 0xc5, 0x8a, 0xec, 0x32, 0xc5, 0xcc, 0xb3, 0x10, 0x56, + 0x36, 0x5a, 0xe4, 0x3e, 0x4e, 0x5e, 0x00, 0xdf, 0xa3, 0x7c, 0xc4, 0xf3, + 0x1a, 0x56, 0x73, 0xdb, 0xd7, 0xf2, 0x57, 0x61, 0x96, 0x2e, 0x67, 0x98, + 0x2b, 0x1b, 0x2d, 0x72, 0x1f, 0x27, 0x35, 0xca, 0x0d, 0xfa, 0x37, 0xcc, + 0x4f, 0x31, 0xa4, 0xe6, 0xdb, 0xd4, 0x57, 0xb2, 0x57, 0x2b, 0x0c, 0xb1, + 0x04, 0x11, 0x88, 0x3b, 0x2d, 0x32, 0x2b, 0x93, 0x9a, 0x6f, 0x28, 0x05, + 0x62, 0xfd, 0x1b, 0xe6, 0x27, 0x98, 0xd2, 0x33, 0x6d, 0xff, 0x00, 0xfc, + 0x95, 0xca, 0xc3, 0x2c, 0xc0, 0x82, 0x31, 0x07, 0x65, 0x79, 0x4f, 0x93, + 0x9a, 0x17, 0x00, 0xbc, 0x5f, 0xa3, 0xfc, 0xc4, 0xf3, 0x1a, 0x4e, 0x3b, + 0x79, 0x7c, 0xb5, 0x72, 0xb0, 0xcb, 0x17, 0x16, 0x20, 0xec, 0xaf, 0x29, + 0xf2, 0x72, 0xcf, 0x80, 0x56, 0x2f, 0xd1, 0xfe, 0x62, 0x79, 0x8d, 0x23, + 0x1d, 0xbd, 0x39, 0x15, 0xca, 0xc3, 0x2c, 0x41, 0x04, 0xe2, 0x0e, 0xca, + 0xb0, 0x72, 0xf0, 0x0d, 0x31, 0x7e, 0x8f, 0xf3, 0x0b, 0x98, 0xd2, 0x31, + 0xdb, 0xd9, 0xe5, 0x57, 0x2b, 0x0c, 0x71, 0x04, 0x13, 0x88, 0x3b, 0x4a, + 0xbc, 0x1e, 0x01, 0xa9, 0x7c, 0x4f, 0x61, 0xf3, 0x0b, 0x98, 0xd2, 0x31, + 0xdb, 0xd9, 0x65, 0x57, 0x2b, 0x0c, 0x71, 0x72, 0x63, 0x78, 0x3b, 0x46, + 0x25, 0x70, 0x6c, 0x5f, 0x10, 0x8b, 0x98, 0x67, 0x2e, 0x63, 0x48, 0xdb, + 0xd8, 0x60, 0xae, 0x56, 0x18, 0xb9, 0x38, 0x83, 0xb4, 0xac, 0x41, 0xe0, + 0x1b, 0x62, 0xf6, 0x3b, 0xfa, 0xe5, 0xcc, 0x37, 0xdb, 0xd8, 0x7f, 0x57, + 0x20, 0x77, 0x3d, 0x93, 0x93, 0x8d, 0xa3, 0x0a, 0xc4, 0x18, 0x6b, 0x8b, + 0xf4, 0x7f, 0x98, 0x9e, 0x63, 0x48, 0xdb, 0xf4, 0x7f, 0xaf, 0x20, 0x6f, + 0x64, 0xe4, 0xe2, 0x0e, 0xc9, 0xe0, 0x15, 0x88, 0x30, 0xd7, 0x17, 0xb2, + 0xce, 0x46, 0x34, 0x8f, 0xa6, 0xdf, 0xa3, 0x7d, 0x79, 0x58, 0x65, 0x88, + 0x90, 0x48, 0x3b, 0x4b, 0xc4, 0x18, 0x6d, 0x8b, 0xd9, 0x67, 0x21, 0xa4, + 0x7d, 0x36, 0xfd, 0x1b, 0xeb, 0xc8, 0x2b, 0x17, 0xb2, 0xc5, 0xc9, 0x07, + 0x69, 0x79, 0x81, 0xdd, 0x00, 0xd8, 0xbe, 0x27, 0xb3, 0xcc, 0x41, 0xbf, + 0xd3, 0x6f, 0xd1, 0x7e, 0xbc, 0x82, 0xb1, 0x7b, 0x1c, 0x5c, 0x9c, 0x41, + 0xd9, 0x30, 0xd3, 0x31, 0x8a, 0x86, 0xd2, 0x87, 0x59, 0xec, 0xee, 0xe9, + 0x10, 0x6f, 0xf4, 0xe5, 0xb7, 0xe8, 0xb8, 0x9f, 0x20, 0xac, 0x5e, 0xca, + 0x37, 0xb9, 0x18, 0x83, 0xb2, 0xac, 0x03, 0x6c, 0xe6, 0xe6, 0xf9, 0x9e, + 0xcf, 0x31, 0x06, 0xdf, 0x4e, 0x5b, 0x7e, 0x89, 0x89, 0xf2, 0x30, 0xbc, + 0x4d, 0xd5, 0x0c, 0x71, 0x73, 0x22, 0xbd, 0x44, 0x56, 0x95, 0x80, 0x6f, + 0x9c, 0xdc, 0xdb, 0x33, 0xd1, 0x98, 0x83, 0x6f, 0xa7, 0x2d, 0xbf, 0x43, + 0xcc, 0x7c, 0x8c, 0x2f, 0x33, 0xd9, 0x62, 0xe6, 0x19, 0xc8, 0x11, 0xda, + 0x6d, 0x9c, 0xc1, 0x86, 0xbb, 0x9e, 0x8c, 0xc4, 0x1a, 0xe0, 0x5c, 0xb6, + 0xfd, 0x13, 0x37, 0xd8, 0x34, 0xbb, 0xa4, 0x6f, 0x66, 0xed, 0x1f, 0x39, + 0x02, 0xb2, 0x41, 0xae, 0x67, 0x35, 0x1c, 0x1c, 0xce, 0x17, 0x90, 0x69, + 0x81, 0x72, 0xdb, 0xf4, 0x3c, 0xdf, 0x60, 0xd0, 0xbe, 0x23, 0x7a, 0x1d, + 0xa3, 0xe6, 0xb6, 0xd7, 0x17, 0x2c, 0x13, 0x91, 0x88, 0x69, 0x81, 0x72, + 0xdb, 0xf4, 0x3c, 0xdf, 0x60, 0xd3, 0x31, 0xbd, 0x2e, 0x61, 0x98, 0x15, + 0xa5, 0xe0, 0x47, 0xe8, 0xe5, 0x60, 0xf4, 0x5f, 0x12, 0x0b, 0xc0, 0xb9, + 0x6d, 0xfa, 0x1e, 0x6f, 0xb0, 0x6b, 0x9c, 0xc5, 0xee, 0x27, 0x32, 0xc6, + 0xda, 0xb0, 0x2e, 0x43, 0x80, 0x4e, 0x0f, 0x46, 0x35, 0x0b, 0xc0, 0xb9, + 0x6d, 0xfa, 0x1e, 0x6f, 0xb0, 0x6b, 0x9c, 0xde, 0x6e, 0x67, 0x2b, 0xf9, + 0x5b, 0x69, 0x07, 0x31, 0x3e, 0x0f, 0x49, 0xd2, 0x06, 0x54, 0x0a, 0xc0, + 0xb9, 0x6d, 0xfa, 0x1e, 0x6f, 0xb0, 0x6e, 0x5f, 0x19, 0xbd, 0x66, 0xe4, + 0x60, 0xae, 0x56, 0xfe, 0x84, 0xe6, 0x2b, 0x2c, 0x1c, 0x40, 0xb1, 0x0a, + 0xca, 0x5b, 0x7e, 0x87, 0x9b, 0xec, 0x1b, 0x9f, 0xc6, 0xae, 0x6f, 0x59, + 0xef, 0x83, 0x8b, 0x2a, 0xb9, 0x5b, 0x41, 0xfc, 0x3f, 0x73, 0x72, 0x0e, + 0xe5, 0x3c, 0xb1, 0x07, 0x94, 0xb6, 0xfd, 0x13, 0x37, 0xd8, 0x37, 0xce, + 0x6f, 0x68, 0x62, 0xee, 0x01, 0x30, 0x9f, 0x54, 0xed, 0xb3, 0xca, 0xe5, + 0xc6, 0x27, 0x07, 0x90, 0xfe, 0x92, 0xdb, 0xf4, 0x4c, 0xe3, 0x49, 0xf9, + 0x8a, 0xe6, 0xf3, 0x57, 0xbc, 0xe8, 0xfc, 0x26, 0x76, 0xd8, 0x9f, 0x07, + 0x36, 0x4f, 0x08, 0x83, 0xdc, 0xf2, 0xe2, 0x82, 0x3d, 0xbf, 0x45, 0x22, + 0xf7, 0xa2, 0x34, 0xa9, 0xc7, 0xf7, 0x8a, 0xe6, 0xf4, 0x90, 0xe2, 0x17, + 0x93, 0xee, 0x56, 0xd8, 0x7d, 0x5c, 0xa2, 0xe0, 0x1a, 0x22, 0xe5, 0x3f, + 0x46, 0x5c, 0x61, 0xa4, 0xb2, 0x47, 0x41, 0x45, 0x78, 0xd4, 0x31, 0xa8, + 0x63, 0x50, 0x6a, 0x0d, 0x41, 0xa9, 0xea, 0x35, 0x3d, 0x46, 0xa7, 0xa8, + 0xd4, 0xf5, 0x1a, 0x9e, 0xa3, 0x53, 0xd4, 0x6a, 0x7a, 0x8d, 0x4f, 0x51, + 0xa9, 0xea, 0x35, 0x7d, 0x46, 0xa7, 0xa8, 0xd5, 0xf5, 0x14, 0x2f, 0x11, + 0x42, 0xf1, 0x14, 0x2f, 0x11, 0xb8, 0x6e, 0x1b, 0x86, 0xe1, 0xb8, 0x6e, + 0x1b, 0x86, 0xe1, 0xb8, 0x6e, 0x06, 0xd5, 0x07, 0x16, 0xb0, 0x81, 0x70, + 0x11, 0xde, 0xe2, 0x20, 0x92, 0xa4, 0x9c, 0xd8, 0xfe, 0x1b, 0x6c, 0x8e, + 0xe5, 0x38, 0xe4, 0x1a, 0x71, 0x9b, 0xe5, 0x21, 0x53, 0x1a, 0xe3, 0x58, + 0xc6, 0xb1, 0x8d, 0x63, 0xf1, 0x1a, 0xc3, 0x58, 0xc6, 0xb1, 0x8d, 0x63, + 0x15, 0x3f, 0x11, 0xac, 0x7e, 0x22, 0xa7, 0xe2, 0x35, 0x8c, 0x6b, 0x1f, + 0x88, 0xd6, 0x31, 0x53, 0xf1, 0x15, 0x31, 0x53, 0x15, 0x31, 0x53, 0x8e, + 0x22, 0xae, 0x8d, 0x92, 0xb4, 0x82, 0xb8, 0x4e, 0x63, 0x70, 0x6e, 0x78, + 0x5b, 0x8f, 0xba, 0xb2, 0x05, 0x7b, 0x99, 0x34, 0xbf, 0x63, 0x90, 0xc2, + 0xc4, 0x9f, 0x20, 0x76, 0xe5, 0x47, 0x1a, 0xae, 0x17, 0x83, 0xdf, 0xc0, + 0x35, 0x54, 0x2a, 0xab, 0x6d, 0xbf, 0xee, 0xf7, 0x54, 0x28, 0xff, 0x00, + 0x32, 0x66, 0x38, 0xd8, 0x90, 0xc3, 0xb1, 0xfb, 0x8b, 0xed, 0x4a, 0x4f, + 0x95, 0x44, 0x1c, 0x73, 0x98, 0x80, 0x23, 0x7c, 0x1c, 0x7b, 0xa0, 0xe8, + 0xc2, 0x66, 0x3e, 0xce, 0x8e, 0xf3, 0x59, 0xdb, 0x6a, 0x9b, 0xd2, 0x6e, + 0xa0, 0x52, 0x21, 0x52, 0x84, 0x0c, 0x34, 0x66, 0x7b, 0x8f, 0xb4, 0xe3, + 0x6e, 0x42, 0x82, 0x42, 0x2e, 0x32, 0xb1, 0xf7, 0x06, 0xe8, 0xbe, 0x20, + 0x92, 0x12, 0x54, 0x7e, 0x8e, 0x57, 0x94, 0x7b, 0x05, 0xa6, 0x3a, 0xaa, + 0x32, 0x79, 0x35, 0x22, 0x92, 0xa5, 0xd8, 0x4d, 0xfc, 0x2c, 0xd5, 0xd3, + 0x77, 0x0b, 0x45, 0x70, 0x93, 0xe7, 0x37, 0x41, 0xf4, 0x71, 0x40, 0x11, + 0x06, 0x48, 0xf7, 0x52, 0x45, 0xd8, 0x34, 0xf8, 0xba, 0xc2, 0xec, 0x01, + 0x70, 0x9c, 0x82, 0xb7, 0xaa, 0xa5, 0xd8, 0x4a, 0x42, 0x96, 0x78, 0x3e, + 0x10, 0x7c, 0xcc, 0x48, 0xe4, 0x2e, 0xb1, 0x79, 0xd9, 0x9d, 0x8f, 0x51, + 0x20, 0x57, 0x06, 0x28, 0xf7, 0x95, 0x3e, 0xc5, 0x9b, 0x5a, 0xfe, 0x57, + 0x19, 0x7a, 0x03, 0x23, 0x30, 0xa8, 0x14, 0x12, 0xa9, 0x94, 0x2d, 0xca, + 0xc4, 0x6c, 0xdc, 0x76, 0x2a, 0xfe, 0x20, 0xe0, 0xee, 0x16, 0x0c, 0xdd, + 0x70, 0xe0, 0x0b, 0x71, 0x70, 0x13, 0x13, 0x0a, 0x6a, 0x7f, 0xe1, 0xa4, + 0xfb, 0x16, 0x97, 0xa7, 0xac, 0x42, 0x02, 0x9c, 0x47, 0x00, 0xa3, 0x2d, + 0x64, 0xf5, 0x8b, 0xb0, 0x85, 0xa9, 0xd8, 0xbc, 0x40, 0x49, 0xfc, 0x45, + 0x1d, 0x7d, 0xa3, 0x04, 0x0a, 0x31, 0x83, 0xa2, 0x0d, 0xa1, 0xd5, 0xaa, + 0xbb, 0x18, 0x1d, 0x02, 0xd9, 0x1f, 0xe5, 0x54, 0x04, 0x39, 0x83, 0xeb, + 0x5e, 0x23, 0xe8, 0x24, 0x5f, 0xbb, 0x54, 0xc9, 0xd3, 0x7d, 0xdd, 0x96, + 0xf1, 0xc1, 0xc4, 0x7b, 0xdf, 0x27, 0x5e, 0x2f, 0xb0, 0x56, 0x2e, 0x06, + 0x0e, 0x5f, 0x50, 0x94, 0x94, 0xcc, 0xcc, 0x33, 0x64, 0x5f, 0x90, 0xa1, + 0xd9, 0x33, 0x6e, 0x45, 0x5e, 0xaa, 0xbf, 0xef, 0xfd, 0xa0, 0x8c, 0x04, + 0xcf, 0x80, 0xe0, 0x0e, 0xf1, 0x03, 0xae, 0xc1, 0x03, 0x17, 0x58, 0x9b, + 0xa0, 0xf2, 0x7c, 0x08, 0x50, 0x10, 0x2f, 0xb3, 0xbf, 0x1d, 0x45, 0xd5, + 0x65, 0x3f, 0xaf, 0x66, 0xd1, 0x8f, 0xbc, 0x52, 0xc4, 0x29, 0x26, 0x5c, + 0x20, 0x2e, 0x1e, 0xb2, 0x10, 0x85, 0x07, 0xe2, 0x11, 0x41, 0x27, 0x77, + 0x63, 0x7b, 0xe8, 0xfa, 0x83, 0x14, 0xb7, 0x3b, 0x04, 0xe8, 0x40, 0xfe, + 0xa3, 0x8d, 0xee, 0x22, 0xa8, 0x66, 0x88, 0x75, 0xd5, 0xd6, 0x57, 0x68, + 0x5a, 0x42, 0x68, 0xba, 0xe2, 0x38, 0x99, 0x78, 0x0b, 0xa3, 0x47, 0x2c, + 0x8e, 0x52, 0x06, 0x9e, 0xca, 0xfe, 0xca, 0x96, 0x0e, 0xc7, 0xe8, 0x23, + 0x0f, 0x41, 0x59, 0xf0, 0x1f, 0xf0, 0x09, 0xa2, 0xca, 0x2c, 0x99, 0x75, + 0xbf, 0xe3, 0xb5, 0x5b, 0x15, 0xd1, 0x5e, 0x86, 0x14, 0x85, 0x14, 0x0c, + 0x8e, 0x03, 0xe8, 0x38, 0xc6, 0x02, 0x63, 0xf1, 0x77, 0x9d, 0x89, 0x76, + 0x85, 0x49, 0x4e, 0xc5, 0x1d, 0x1d, 0xe2, 0x56, 0x23, 0xb8, 0x71, 0xa3, + 0xc9, 0x09, 0x99, 0xa8, 0x21, 0x97, 0xe7, 0xaa, 0xf1, 0xed, 0xbf, 0x69, + 0x41, 0x75, 0x92, 0x50, 0x5e, 0x02, 0x72, 0x80, 0x2b, 0x9c, 0xa2, 0x87, + 0x4b, 0x8f, 0xa8, 0x32, 0x7c, 0xb6, 0x0c, 0x5f, 0x27, 0xce, 0x42, 0x75, + 0x11, 0xad, 0xd3, 0x76, 0xf2, 0x3b, 0xc7, 0xed, 0x4d, 0x4a, 0x3d, 0x1d, + 0x4e, 0xdc, 0xc8, 0xe6, 0x46, 0x22, 0x9f, 0x64, 0xa9, 0xa4, 0xc4, 0x77, + 0x8d, 0xfc, 0x4c, 0x1c, 0x79, 0x08, 0x97, 0x54, 0x8f, 0x61, 0xbb, 0xb0, + 0x8d, 0x25, 0x78, 0x23, 0x1b, 0xc7, 0xea, 0x12, 0xcc, 0xb5, 0x0a, 0x6a, + 0x3b, 0x82, 0x59, 0xa0, 0xa0, 0x44, 0x50, 0xd8, 0x14, 0xc5, 0x7b, 0xe8, + 0x77, 0x18, 0x52, 0x14, 0x5d, 0x13, 0x4c, 0x81, 0x5d, 0x19, 0x0f, 0x86, + 0xf0, 0xa5, 0x4a, 0x30, 0xc3, 0x68, 0x80, 0xbe, 0x60, 0x85, 0xe1, 0x2c, + 0xd0, 0x51, 0x33, 0x91, 0x10, 0x24, 0x9c, 0xdb, 0x1c, 0xd4, 0x7b, 0x11, + 0xb4, 0x42, 0x62, 0xdd, 0x05, 0xe6, 0x21, 0x03, 0x99, 0xc6, 0x80, 0xe9, + 0x88, 0x84, 0xef, 0x07, 0x29, 0x76, 0x97, 0xdb, 0xa5, 0xa9, 0x8b, 0xc1, + 0x69, 0x8d, 0xcb, 0xae, 0x7e, 0xcc, 0xae, 0xe3, 0xb2, 0x1e, 0x94, 0xc4, + 0xa4, 0x7a, 0xe9, 0xb8, 0xef, 0x13, 0xff, 0x00, 0xd0, 0x64, 0x66, 0x09, + 0x54, 0x8d, 0xdd, 0xad, 0x2c, 0xd3, 0xb0, 0xfd, 0xa1, 0xb1, 0x7e, 0xe1, + 0x17, 0xfe, 0x6d, 0x94, 0xc8, 0xca, 0x24, 0x75, 0x21, 0xf8, 0x89, 0x9e, + 0x8e, 0xd0, 0xeb, 0x77, 0x00, 0x51, 0xac, 0x6e, 0xe0, 0x21, 0x08, 0xcb, + 0x58, 0xf6, 0x8b, 0xe0, 0x12, 0xcd, 0x32, 0x66, 0x53, 0x5a, 0xb7, 0x10, + 0x43, 0x16, 0x45, 0xd1, 0x42, 0x69, 0xb3, 0x29, 0x93, 0x42, 0x8a, 0x14, + 0x0d, 0x91, 0xd2, 0xa4, 0xb2, 0xde, 0x42, 0xbc, 0x45, 0x36, 0x74, 0x31, + 0x64, 0x5d, 0x25, 0xaa, 0x52, 0x09, 0x62, 0x89, 0xab, 0xf3, 0x2a, 0xf3, + 0xda, 0x0d, 0x9a, 0xa4, 0xb2, 0x9a, 0x15, 0x71, 0x86, 0x8c, 0xda, 0x24, + 0xd1, 0xd1, 0x28, 0x4f, 0x79, 0x8b, 0xb6, 0x4b, 0x9c, 0x49, 0x84, 0x4e, + 0xe1, 0xf8, 0x8d, 0x13, 0xfc, 0x4b, 0x42, 0x9f, 0xc2, 0x5b, 0x57, 0xe2, + 0x33, 0x2f, 0xe2, 0x51, 0x48, 0x7e, 0x62, 0xb8, 0x19, 0x1d, 0x77, 0xec, + 0xc9, 0xd3, 0xb4, 0x84, 0xfc, 0xb4, 0x9f, 0x3d, 0xb0, 0xf4, 0xd6, 0x09, + 0xeb, 0x7f, 0x88, 0x45, 0xcc, 0x1c, 0x6b, 0xb2, 0x7e, 0x23, 0x42, 0xfe, + 0x1d, 0x15, 0x30, 0x49, 0x49, 0x41, 0x25, 0x22, 0x2d, 0xb2, 0x06, 0x51, + 0x23, 0xdc, 0x3f, 0x1d, 0x97, 0x77, 0x69, 0x4e, 0x1c, 0x36, 0x34, 0x31, + 0x66, 0x55, 0xa9, 0xdc, 0x10, 0xc1, 0x99, 0x40, 0x93, 0xeb, 0xb7, 0x34, + 0xd1, 0xda, 0x94, 0x50, 0xbf, 0x40, 0xb6, 0x0b, 0x2a, 0x50, 0xef, 0xd8, + 0x49, 0x25, 0x33, 0x04, 0xb5, 0x17, 0xef, 0xd7, 0x5e, 0x1f, 0xc8, 0x0d, + 0x48, 0x2f, 0xe2, 0x19, 0x4c, 0xb8, 0x90, 0x34, 0x9d, 0x4b, 0x60, 0x2d, + 0x29, 0xa9, 0x48, 0xb5, 0x3f, 0x5f, 0xe4, 0x47, 0xa5, 0x32, 0x4f, 0x55, + 0x47, 0xd7, 0x22, 0xdd, 0xdb, 0xb3, 0x62, 0x9d, 0xf5, 0x3b, 0x82, 0x49, + 0x25, 0x04, 0xc2, 0x09, 0x2e, 0x1f, 0xc8, 0x96, 0xcd, 0x45, 0x1e, 0x91, + 0x40, 0x2d, 0x29, 0xd0, 0xda, 0xb4, 0x4c, 0x64, 0xa4, 0xa6, 0x31, 0x1d, + 0xc3, 0x48, 0xff, 0x00, 0x4c, 0xc7, 0x70, 0xd2, 0x3f, 0xd3, 0x31, 0xdc, + 0x1b, 0xf9, 0x0c, 0x77, 0x06, 0xfe, 0x41, 0xdc, 0x1b, 0x79, 0x47, 0x71, + 0x68, 0x3b, 0x92, 0xbc, 0x48, 0x77, 0x35, 0x79, 0x88, 0x77, 0x33, 0xf3, + 0x10, 0xee, 0x67, 0xe6, 0x4f, 0xea, 0x3b, 0xa7, 0xf7, 0xa7, 0xf5, 0x1d, + 0xd3, 0xfb, 0xd3, 0xfa, 0x8e, 0xeb, 0xfd, 0xe9, 0xfd, 0x41, 0xaf, 0x49, + 0x4a, 0x7f, 0x11, 0x5b, 0xab, 0x2f, 0xf3, 0xb7, 0xff, 0xc4, 0x00, 0x2b, + 0x10, 0x00, 0x02, 0x02, 0x01, 0x03, 0x02, 0x05, 0x05, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x21, 0x31, 0x41, 0x51, + 0x61, 0x71, 0xa1, 0x20, 0x81, 0x91, 0xb1, 0xf0, 0x10, 0x40, 0xc1, 0xd1, + 0xe1, 0xf1, 0x30, 0x50, 0x60, 0xff, 0xda, 0x00, 0x08, 0x01, 0x01, 0x00, + 0x01, 0x3f, 0x21, 0xff, 0x00, 0xe2, 0x11, 0x58, 0x8d, 0xb1, 0x9c, 0xc9, + 0xfe, 0x74, 0xff, 0x00, 0x3a, 0x7f, 0x9d, 0x39, 0x5e, 0x93, 0x95, 0xe9, + 0x39, 0x5e, 0x93, 0x95, 0xe9, 0x39, 0x5e, 0x93, 0x91, 0xe9, 0x39, 0x9e, + 0x93, 0x99, 0x38, 0x8c, 0x6d, 0x8c, 0xe4, 0x7a, 0x4e, 0x57, 0xa4, 0xe4, + 0x7a, 0x4e, 0x64, 0xe6, 0x7a, 0x4e, 0x23, 0xff, 0x00, 0x30, 0x9f, 0x8c, + 0x0a, 0x2f, 0x3f, 0x80, 0x9d, 0x3c, 0x36, 0x7b, 0x97, 0x00, 0x22, 0xbe, + 0x82, 0xfc, 0x45, 0xee, 0x25, 0x7d, 0xa3, 0x94, 0xb5, 0xf9, 0xc4, 0x1c, + 0x5c, 0x09, 0x2e, 0x31, 0xb8, 0x5f, 0xd7, 0x2e, 0xfc, 0x99, 0xcc, 0x79, + 0xe5, 0xd8, 0xcf, 0x5f, 0xd2, 0x6b, 0xf0, 0x41, 0x9a, 0xdc, 0x66, 0x9f, + 0xa9, 0x68, 0x0f, 0x7d, 0xfc, 0x26, 0xcf, 0xae, 0x8e, 0xb2, 0x7d, 0xed, + 0x1e, 0x1f, 0x71, 0x3a, 0xe7, 0x5c, 0x77, 0xef, 0xcc, 0x6b, 0xd6, 0xce, + 0xb1, 0xd4, 0x94, 0x2f, 0xb8, 0x01, 0xf5, 0xeb, 0xe5, 0x06, 0x7f, 0xa0, + 0x51, 0x6a, 0xb9, 0xdd, 0x06, 0x1b, 0x09, 0x3f, 0xec, 0x4f, 0xda, 0xb4, + 0xaf, 0xf3, 0xcc, 0x6f, 0xd6, 0x31, 0xfb, 0xd0, 0x49, 0x6d, 0x82, 0xeb, + 0x0f, 0x9c, 0x2d, 0xf9, 0x25, 0x20, 0x1e, 0x20, 0x64, 0xef, 0xb3, 0xb4, + 0x61, 0x2b, 0x2a, 0x27, 0xe8, 0x6c, 0x7f, 0xe1, 0x95, 0x7e, 0xc8, 0x36, + 0x83, 0x93, 0xed, 0xd6, 0x06, 0xfb, 0xbc, 0xdc, 0xe6, 0xd6, 0x24, 0xe6, + 0x38, 0x13, 0x7b, 0x99, 0x94, 0xaf, 0x93, 0x3f, 0xa9, 0x08, 0x37, 0x54, + 0xaf, 0x11, 0x37, 0xb4, 0x09, 0xfc, 0xd3, 0xfd, 0x29, 0xa2, 0x7f, 0x31, + 0x04, 0x7f, 0x09, 0xc1, 0xeb, 0xf4, 0x4e, 0x8d, 0xd6, 0x68, 0x1f, 0x39, + 0xa1, 0x20, 0xda, 0xbe, 0x91, 0xe7, 0x5c, 0x0c, 0xae, 0xd8, 0xed, 0x22, + 0x6e, 0x4e, 0x84, 0xf2, 0x84, 0x5f, 0xc4, 0x40, 0xcf, 0x68, 0x72, 0x7b, + 0x7e, 0x90, 0xf3, 0x39, 0x8f, 0x2f, 0x64, 0xbb, 0x96, 0xaa, 0x53, 0x9e, + 0xd1, 0x47, 0x63, 0xd2, 0x16, 0x65, 0xf9, 0x4d, 0x47, 0x2f, 0xec, 0xde, + 0x1d, 0xf3, 0x1e, 0x0c, 0xc2, 0x83, 0xce, 0x00, 0x3a, 0xcc, 0x23, 0xb2, + 0xa0, 0x44, 0xc6, 0x11, 0xa2, 0x26, 0x46, 0x74, 0x0f, 0x8a, 0x86, 0x68, + 0x4b, 0xbe, 0x5c, 0x23, 0x8d, 0x07, 0xe2, 0x10, 0x81, 0x60, 0x64, 0x91, + 0x2f, 0x90, 0xb7, 0x48, 0xe9, 0x14, 0xa2, 0x61, 0x21, 0x39, 0x7e, 0x5c, + 0x1b, 0xc6, 0xa1, 0xad, 0x67, 0x01, 0x4a, 0x0d, 0x78, 0x1b, 0x01, 0xf4, + 0x40, 0xf9, 0x48, 0xb1, 0xa8, 0x72, 0x20, 0x5b, 0x63, 0xd2, 0x72, 0x76, + 0xfa, 0x55, 0xed, 0xc2, 0xc5, 0x07, 0xa4, 0x9a, 0x6e, 0xba, 0xc3, 0x4a, + 0x27, 0xd6, 0x3b, 0x5a, 0x87, 0x74, 0xa2, 0x83, 0x65, 0x4d, 0x70, 0x5e, + 0xb2, 0x98, 0x59, 0x93, 0x8f, 0xd5, 0x0e, 0xfa, 0x3e, 0x99, 0xcd, 0x06, + 0x70, 0x13, 0x05, 0x03, 0x5f, 0xa2, 0x62, 0xb5, 0x0d, 0x32, 0x86, 0xd7, + 0x98, 0x57, 0x98, 0x8d, 0x62, 0x22, 0x15, 0x39, 0x81, 0x14, 0x85, 0x04, + 0x16, 0x80, 0x2c, 0x46, 0x91, 0x9e, 0xfb, 0xfe, 0x07, 0x89, 0x23, 0x92, + 0xbb, 0xa6, 0xa1, 0x98, 0x40, 0x50, 0x08, 0x2c, 0x83, 0x9f, 0xd4, 0x09, + 0x49, 0x54, 0x26, 0x32, 0xb5, 0x18, 0x03, 0x00, 0x89, 0xc9, 0x99, 0x06, + 0x10, 0xdb, 0xa3, 0xc4, 0x55, 0xe4, 0x84, 0xcc, 0xb8, 0x53, 0xa9, 0x6a, + 0xc5, 0x5b, 0x13, 0x9b, 0xd2, 0x0b, 0x44, 0xde, 0x22, 0xcf, 0xbc, 0xa5, + 0xb8, 0x01, 0x60, 0x33, 0xd4, 0x26, 0x97, 0x2c, 0x09, 0x18, 0x13, 0x44, + 0x33, 0x08, 0x01, 0x22, 0x7b, 0xc4, 0x2b, 0x79, 0xc0, 0x42, 0x80, 0x79, + 0x41, 0xe5, 0x44, 0x38, 0x06, 0x14, 0xd2, 0x61, 0xf8, 0x80, 0xee, 0x05, + 0x31, 0x97, 0xac, 0x5a, 0x9c, 0xf1, 0x32, 0x6e, 0xdf, 0xd0, 0xd0, 0x50, + 0x67, 0xc1, 0x99, 0x40, 0xb4, 0x44, 0x0c, 0x74, 0x87, 0x75, 0x60, 0x5b, + 0x39, 0x82, 0xf4, 0xc4, 0xe4, 0x3e, 0xe5, 0x78, 0xbe, 0x63, 0x74, 0x12, + 0x16, 0x70, 0x73, 0x29, 0x4c, 0xaa, 0x61, 0x12, 0xa5, 0x92, 0xce, 0x00, + 0x3a, 0xb9, 0x80, 0x0a, 0x7b, 0xc0, 0xba, 0x19, 0x9e, 0x60, 0xa3, 0x79, + 0x87, 0x4d, 0x1d, 0xd0, 0x7f, 0x99, 0x62, 0xbe, 0x56, 0x0e, 0x21, 0x0c, + 0x52, 0x48, 0x83, 0x80, 0xe1, 0x0e, 0x90, 0x85, 0xe6, 0x2b, 0xbc, 0xd9, + 0x0a, 0xe9, 0x05, 0xe2, 0x00, 0x7b, 0x42, 0x90, 0x80, 0xf5, 0x71, 0x17, + 0x44, 0x60, 0xc6, 0x46, 0x90, 0x22, 0x33, 0x14, 0x44, 0x1e, 0x62, 0x1f, + 0xd8, 0x16, 0x77, 0xc4, 0xd9, 0x50, 0xad, 0x48, 0xef, 0x05, 0x36, 0x3c, + 0x46, 0x56, 0xef, 0x12, 0x03, 0x79, 0xa2, 0xfd, 0x20, 0x22, 0xd5, 0x42, + 0x6a, 0x21, 0x39, 0xcb, 0x29, 0xd1, 0x7c, 0xcb, 0x29, 0xa4, 0x22, 0xb1, + 0xa4, 0x28, 0x9e, 0x26, 0xf0, 0x16, 0x90, 0xcd, 0x53, 0x42, 0x01, 0x1a, + 0xc1, 0x7f, 0x3a, 0xfc, 0x54, 0xf9, 0x56, 0x82, 0x05, 0x48, 0xe6, 0x50, + 0x0a, 0xb9, 0xbd, 0x26, 0xad, 0x0e, 0xb3, 0x16, 0xfc, 0xa0, 0x07, 0x8a, + 0x80, 0xa3, 0x84, 0x1a, 0xc1, 0x8e, 0x51, 0x28, 0xba, 0x0f, 0xdc, 0x20, + 0xd1, 0x61, 0x98, 0x44, 0x3a, 0x00, 0x0b, 0xd0, 0x40, 0x32, 0xc0, 0x3c, + 0xe1, 0x60, 0x1c, 0xc0, 0x64, 0x41, 0xd8, 0xb2, 0x44, 0xd8, 0x8a, 0xd7, + 0x58, 0xd2, 0x89, 0x2f, 0x14, 0x7f, 0x88, 0x72, 0xbd, 0x49, 0xfe, 0x94, + 0x33, 0xa9, 0xdb, 0x07, 0xa1, 0x84, 0x13, 0x01, 0x7a, 0xe0, 0x9c, 0xe6, + 0x17, 0xc9, 0x3c, 0x18, 0x32, 0xd4, 0x63, 0xcf, 0x68, 0x37, 0x11, 0x9e, + 0xb0, 0x81, 0xd0, 0x11, 0x86, 0x53, 0x39, 0x05, 0x04, 0x7b, 0x91, 0x9d, + 0xcc, 0xa3, 0x8c, 0xc7, 0xa7, 0xd1, 0x80, 0x8e, 0xf7, 0x87, 0x80, 0x24, + 0x76, 0xcb, 0x68, 0x05, 0x97, 0x82, 0x1c, 0x2a, 0x28, 0x06, 0xa1, 0x11, + 0xe6, 0x5e, 0x06, 0xf7, 0x28, 0xf9, 0x23, 0x04, 0x63, 0x83, 0x12, 0xde, + 0x5e, 0xf1, 0x08, 0xdc, 0xdc, 0x37, 0x66, 0xa5, 0xce, 0xc6, 0x09, 0x22, + 0xec, 0xa8, 0xcc, 0xf8, 0x3f, 0x10, 0xbf, 0x9d, 0x68, 0x18, 0x81, 0xe4, + 0x6f, 0x35, 0x0d, 0x81, 0x00, 0x08, 0x34, 0x45, 0x17, 0x2a, 0x18, 0x95, + 0x9e, 0xc2, 0x3e, 0x46, 0x23, 0xd6, 0x38, 0x69, 0x40, 0x0e, 0xe0, 0xb2, + 0x3a, 0x02, 0x1b, 0xd8, 0x41, 0x82, 0x3f, 0x24, 0x0a, 0x90, 0x9e, 0x51, + 0x6c, 0x5a, 0x07, 0x10, 0xc8, 0x57, 0xc8, 0x60, 0x02, 0x7f, 0x50, 0xf4, + 0x81, 0xc8, 0x6f, 0x1c, 0xb5, 0x30, 0x04, 0x8e, 0x94, 0x85, 0xc0, 0x40, + 0x2d, 0x6e, 0x0c, 0x8e, 0xf0, 0xd6, 0x0b, 0x04, 0x0b, 0x81, 0x9a, 0x00, + 0x14, 0x06, 0x16, 0xb9, 0xa8, 0x08, 0x94, 0x24, 0xda, 0x12, 0xff, 0x00, + 0x52, 0xbc, 0x8b, 0x67, 0xbd, 0x04, 0x81, 0xe0, 0x18, 0xef, 0x6a, 0x50, + 0x28, 0x6d, 0x07, 0x17, 0xb2, 0x14, 0x08, 0x9f, 0x68, 0x59, 0x06, 0x2a, + 0x83, 0x8d, 0xc6, 0x1a, 0xb0, 0xe1, 0x15, 0x80, 0xb2, 0xd8, 0x44, 0x1e, + 0xc7, 0x6c, 0x05, 0x9f, 0x71, 0x2f, 0xc2, 0xb6, 0x79, 0xd0, 0x42, 0x01, + 0xaa, 0xda, 0x0c, 0x32, 0xc1, 0x01, 0xa0, 0x7f, 0xa2, 0x1c, 0x59, 0x11, + 0xdd, 0x44, 0x7b, 0xa8, 0x24, 0x07, 0x63, 0x0f, 0x19, 0x95, 0xc1, 0x74, + 0x8f, 0x7d, 0x11, 0xd9, 0x12, 0x80, 0xd2, 0x3f, 0x4f, 0xe9, 0x43, 0x7f, + 0x88, 0x59, 0xd4, 0xa3, 0x1a, 0xca, 0x1a, 0x80, 0xc6, 0x1f, 0xa4, 0x10, + 0xa9, 0xf0, 0x5b, 0xf8, 0x90, 0x0f, 0xc8, 0xa0, 0x8a, 0x3e, 0xa8, 0x8c, + 0x24, 0xdf, 0x28, 0x80, 0xb4, 0x31, 0x31, 0x6d, 0x5c, 0x4d, 0xd2, 0xda, + 0x40, 0xd3, 0x5f, 0xa8, 0x4f, 0xcf, 0xa7, 0xa9, 0x99, 0x61, 0x86, 0x90, + 0xed, 0xd3, 0xed, 0x01, 0x83, 0xab, 0xe9, 0x82, 0xdb, 0x68, 0xd4, 0x25, + 0x83, 0xb4, 0xec, 0xd2, 0xb1, 0x44, 0x2d, 0x88, 0x41, 0xf8, 0x5a, 0x40, + 0x50, 0x08, 0xf0, 0x43, 0x0c, 0x25, 0x43, 0x84, 0x26, 0xc4, 0xda, 0x9e, + 0xa6, 0x2c, 0x39, 0x97, 0x0c, 0x88, 0x1a, 0x88, 0x0f, 0x4e, 0xb0, 0xe4, + 0x87, 0xe6, 0x01, 0xcd, 0x31, 0xcc, 0x25, 0xbc, 0xac, 0x41, 0xae, 0x89, + 0xee, 0x30, 0x40, 0x0c, 0xd9, 0xd0, 0x20, 0x14, 0xc2, 0x09, 0xd8, 0xf4, + 0x26, 0x3e, 0x73, 0x01, 0xd4, 0x48, 0x33, 0x5a, 0x62, 0xa1, 0x0c, 0x94, + 0x00, 0x73, 0x97, 0xe3, 0xbc, 0x08, 0x06, 0x89, 0xed, 0xea, 0xda, 0x18, + 0x39, 0x64, 0x47, 0x27, 0x31, 0xf9, 0x8d, 0xb8, 0x40, 0xa3, 0x61, 0x66, + 0x21, 0x78, 0xfd, 0xcf, 0x9a, 0xc4, 0xb1, 0xcf, 0x4f, 0xa3, 0x20, 0xbd, + 0xe1, 0x3e, 0x4e, 0x7c, 0x56, 0xf9, 0xd6, 0x88, 0x5a, 0x5a, 0x42, 0x03, + 0xb2, 0x14, 0x3d, 0x11, 0xd6, 0x17, 0xf5, 0x43, 0x81, 0x2e, 0x87, 0xac, + 0x20, 0x61, 0x71, 0xfc, 0x4b, 0xb2, 0x08, 0x83, 0x82, 0x2b, 0x61, 0x3f, + 0xdc, 0x0e, 0xa1, 0x11, 0xc9, 0xe7, 0x31, 0xf8, 0xd2, 0x0a, 0x9d, 0xd5, + 0xe2, 0x04, 0x08, 0xbb, 0xd2, 0x36, 0x44, 0x1e, 0xce, 0x56, 0xe5, 0x25, + 0xc1, 0x33, 0x5d, 0xce, 0x4e, 0x2c, 0x20, 0x0f, 0x15, 0x29, 0x88, 0x64, + 0x0c, 0x9f, 0x5b, 0xa0, 0xc0, 0x34, 0xa8, 0x3e, 0xaa, 0xf3, 0x7b, 0xb9, + 0x93, 0xac, 0x26, 0x11, 0x64, 0x93, 0x98, 0x4a, 0xa5, 0x91, 0x6b, 0x16, + 0xf3, 0x41, 0x75, 0x66, 0x03, 0x8c, 0xf0, 0x44, 0x44, 0xea, 0x31, 0x10, + 0x6f, 0x04, 0x11, 0x8f, 0x4c, 0xc2, 0xc6, 0x69, 0x0f, 0xe7, 0x68, 0xcd, + 0x4c, 0x2d, 0xc0, 0xc9, 0x30, 0x01, 0x0d, 0x45, 0xc9, 0x70, 0xb8, 0x75, + 0x87, 0xd2, 0xc8, 0x13, 0xe6, 0x3e, 0x6f, 0x04, 0x32, 0x22, 0xd1, 0x06, + 0x77, 0x10, 0x86, 0x0c, 0x05, 0xb6, 0x61, 0x34, 0xa0, 0xd6, 0x5f, 0x58, + 0x5a, 0xa1, 0x73, 0xf1, 0xdf, 0x41, 0x46, 0x97, 0xef, 0xf1, 0x57, 0xe7, + 0x5a, 0x1a, 0xb9, 0x46, 0xf8, 0x96, 0x01, 0x28, 0x34, 0x01, 0xd2, 0x3a, + 0xc6, 0x1c, 0x38, 0x05, 0x62, 0x06, 0xd4, 0x44, 0xa5, 0x3a, 0x42, 0x40, + 0x6c, 0x7e, 0x29, 0x94, 0x49, 0xb6, 0xb1, 0x17, 0x52, 0x80, 0x9d, 0x49, + 0x8d, 0x76, 0x75, 0x88, 0x3a, 0xd5, 0x19, 0xb3, 0xfc, 0x4d, 0xf5, 0x8c, + 0xfd, 0xa5, 0xba, 0x20, 0x47, 0x65, 0x36, 0xe6, 0x0a, 0x80, 0x15, 0x01, + 0x07, 0x59, 0x9b, 0x2d, 0x08, 0x31, 0x81, 0x01, 0x01, 0x2c, 0x0c, 0x0d, + 0x22, 0x42, 0x34, 0x30, 0xd0, 0x40, 0xcb, 0x28, 0x2c, 0x16, 0x37, 0x84, + 0x81, 0xb1, 0x3d, 0x04, 0x04, 0xad, 0xf5, 0x62, 0x05, 0x88, 0x30, 0x46, + 0x16, 0x91, 0xe0, 0x02, 0x49, 0x44, 0x07, 0x48, 0xce, 0x81, 0x73, 0x18, + 0x96, 0xfb, 0x40, 0x80, 0x45, 0x0c, 0x08, 0x3f, 0x10, 0xd2, 0x12, 0x1c, + 0x83, 0xc9, 0xb4, 0x64, 0x95, 0x9d, 0xa0, 0x00, 0x01, 0x45, 0xb1, 0x28, + 0x19, 0xfa, 0xcd, 0x4c, 0xb9, 0xe6, 0x34, 0x3d, 0xe9, 0x98, 0x65, 0xbc, + 0xda, 0x96, 0xe6, 0x60, 0xfb, 0xca, 0xfd, 0x42, 0x51, 0xde, 0x70, 0x6e, + 0x43, 0xa8, 0x28, 0x38, 0xfe, 0x67, 0xc4, 0x2f, 0xe3, 0xda, 0x69, 0x00, + 0x1d, 0x04, 0x2c, 0xf8, 0xe1, 0x15, 0xb4, 0x82, 0xef, 0xb4, 0x62, 0x49, + 0x9d, 0xa5, 0xe7, 0x78, 0xac, 0x0a, 0xe6, 0x65, 0xa4, 0x19, 0x88, 0x5b, + 0x99, 0x5f, 0xd6, 0x20, 0x03, 0xa8, 0x01, 0x10, 0x8c, 0xe0, 0xa5, 0x1a, + 0x29, 0x7d, 0x04, 0x35, 0x25, 0xc5, 0x5e, 0x8e, 0xb3, 0x39, 0x1c, 0xbb, + 0x37, 0x9c, 0x35, 0x91, 0x82, 0xa3, 0xb0, 0xed, 0x00, 0x89, 0xb0, 0x3c, + 0x54, 0x11, 0x84, 0x59, 0xbb, 0x85, 0x0f, 0x72, 0x34, 0x1a, 0xc2, 0xd5, + 0x5f, 0x28, 0x3f, 0xbe, 0x29, 0xe0, 0x7d, 0xa2, 0x7a, 0x7a, 0xca, 0x57, + 0x6b, 0x78, 0x19, 0x0d, 0xcc, 0x60, 0x8f, 0x68, 0xf1, 0x94, 0xdc, 0x0f, + 0x44, 0x29, 0x4c, 0x9c, 0xb1, 0x11, 0x59, 0xd1, 0xa8, 0x55, 0xd8, 0xa1, + 0x50, 0xb4, 0xc1, 0x1e, 0xd0, 0x48, 0xea, 0x94, 0x2e, 0xa5, 0xce, 0x63, + 0x0f, 0x10, 0xc8, 0xd9, 0x23, 0x07, 0x73, 0xa8, 0x0d, 0xfc, 0xdc, 0xee, + 0x3c, 0x3f, 0x2d, 0xba, 0x2a, 0x1b, 0x79, 0x9a, 0x8d, 0xcf, 0x4f, 0x95, + 0x01, 0xea, 0xde, 0xb0, 0x35, 0x4a, 0x58, 0xd6, 0x90, 0x28, 0x12, 0x20, + 0x03, 0x72, 0x63, 0x6f, 0xb4, 0x3c, 0x7d, 0xf9, 0xf0, 0x03, 0x69, 0x06, + 0x93, 0xcc, 0xc0, 0x63, 0x99, 0xd3, 0x35, 0x72, 0xb0, 0xc8, 0xd0, 0x2a, + 0x69, 0x8a, 0xfd, 0xf3, 0xba, 0xf0, 0xfc, 0xf6, 0xd0, 0x09, 0x22, 0x8b, + 0x74, 0x67, 0x39, 0x7b, 0x73, 0x55, 0xbc, 0x34, 0x25, 0x0b, 0xd2, 0x6a, + 0x28, 0x3f, 0x50, 0x8f, 0x3e, 0x7f, 0x9f, 0xef, 0xd7, 0x9b, 0x83, 0xe9, + 0x34, 0x22, 0x31, 0x00, 0xeb, 0x5f, 0x49, 0xb5, 0x02, 0x54, 0x42, 0x8a, + 0xa5, 0x01, 0xdb, 0xe6, 0x73, 0x3b, 0x97, 0x84, 0xd7, 0xc6, 0xb4, 0x4d, + 0x06, 0xb3, 0xbc, 0xc5, 0x9b, 0x47, 0xb1, 0x02, 0x29, 0x28, 0x41, 0xe6, + 0xe2, 0x3c, 0x94, 0x3f, 0x7c, 0x12, 0x19, 0xc7, 0xeb, 0xf7, 0xee, 0x59, + 0xd3, 0xf4, 0x9c, 0x21, 0xf1, 0x08, 0x6f, 0x70, 0xc6, 0xa0, 0x63, 0x34, + 0xd3, 0x61, 0xfe, 0x93, 0xbb, 0x3e, 0x11, 0x4b, 0xe2, 0xd3, 0x12, 0x0e, + 0x00, 0x8b, 0x75, 0x40, 0x49, 0x36, 0xce, 0x67, 0x99, 0x15, 0x6a, 0x63, + 0x23, 0x04, 0x69, 0xf0, 0x9d, 0x42, 0x4e, 0xff, 0x00, 0x7e, 0x42, 0xb5, + 0x8b, 0xb4, 0x60, 0x04, 0xae, 0x01, 0xca, 0x9e, 0xb6, 0xd2, 0xc4, 0xf7, + 0x40, 0x7b, 0xda, 0xc1, 0x45, 0xcf, 0xec, 0x9d, 0xd3, 0xc2, 0x6b, 0xe3, + 0x5a, 0x1c, 0x94, 0x8e, 0xe2, 0x1a, 0xcd, 0x64, 0xef, 0x71, 0x04, 0xbc, + 0xc7, 0xca, 0x80, 0x71, 0xea, 0xa3, 0x00, 0xbe, 0x65, 0xfd, 0xfa, 0x80, + 0x98, 0x0b, 0xb4, 0x02, 0xae, 0x14, 0xd2, 0x12, 0x6d, 0x0f, 0x23, 0xa6, + 0x26, 0x2f, 0x30, 0x0f, 0xc5, 0x5c, 0xef, 0x9e, 0x1e, 0x8f, 0xf6, 0xa1, + 0x4e, 0xac, 0xcc, 0x4c, 0x9b, 0x9b, 0x30, 0x90, 0xf9, 0xeb, 0x29, 0x1d, + 0x5f, 0x88, 0xc5, 0x8f, 0xfc, 0x00, 0x02, 0xc1, 0x3a, 0xfb, 0x51, 0x41, + 0x43, 0x8d, 0x22, 0xf9, 0x41, 0xa7, 0x9e, 0x51, 0x0c, 0x1d, 0x0b, 0x49, + 0xdd, 0x3c, 0x20, 0xee, 0x5f, 0xb5, 0x07, 0xac, 0x08, 0x48, 0x01, 0x6c, + 0x08, 0x86, 0xca, 0x30, 0xe6, 0x95, 0x28, 0x77, 0x99, 0x4d, 0x49, 0xdf, + 0xfd, 0xfe, 0xfd, 0xc7, 0x36, 0x9e, 0xd1, 0x8c, 0xb3, 0xf6, 0x99, 0x58, + 0x9c, 0x85, 0x72, 0x62, 0x1b, 0x1d, 0xd0, 0xcb, 0xf5, 0xcf, 0x87, 0xe5, + 0x37, 0x43, 0x26, 0x87, 0x79, 0x62, 0x90, 0xcb, 0x8c, 0x38, 0x5e, 0x66, + 0x52, 0xa2, 0xa5, 0x6d, 0xe9, 0x04, 0x48, 0x02, 0xeb, 0xbd, 0xfe, 0xfc, + 0x41, 0x06, 0xa6, 0x21, 0xb1, 0xae, 0xb0, 0x20, 0x54, 0x42, 0x86, 0xf1, + 0x50, 0xd8, 0x6b, 0x08, 0x38, 0x1a, 0x40, 0x9e, 0x92, 0x77, 0x9e, 0x11, + 0x47, 0xe6, 0xd0, 0xd2, 0x21, 0xd1, 0xe2, 0x3e, 0x30, 0xbd, 0xc2, 0x89, + 0x59, 0x89, 0xb8, 0xf6, 0x80, 0x1b, 0x7e, 0x40, 0x4b, 0x1a, 0xff, 0x00, + 0x82, 0x01, 0x6b, 0x7f, 0xdf, 0x87, 0xee, 0x63, 0x06, 0x05, 0x44, 0x10, + 0xaa, 0x1a, 0x5b, 0x88, 0xfc, 0x41, 0xa0, 0xe2, 0x0c, 0x5d, 0xc7, 0x84, + 0xd7, 0xc9, 0xb4, 0x0c, 0xdd, 0xc4, 0x09, 0xa9, 0xd1, 0x2a, 0x28, 0x3a, + 0x3c, 0x3e, 0x21, 0xe0, 0xb5, 0x36, 0x5c, 0x9e, 0x4f, 0xfc, 0x03, 0x6a, + 0x6c, 0xfe, 0x74, 0x15, 0x98, 0x7d, 0x4c, 0x45, 0x41, 0xc1, 0x1b, 0x4f, + 0x4f, 0xd3, 0x39, 0xd5, 0x49, 0xdd, 0x78, 0x45, 0x8b, 0x94, 0x47, 0x40, + 0xd5, 0xd4, 0x36, 0x30, 0x44, 0xb5, 0x10, 0xc9, 0x0e, 0xa0, 0xc7, 0x79, + 0x70, 0x2a, 0xe0, 0x67, 0x4f, 0xe4, 0x78, 0x2b, 0x19, 0x2f, 0xbf, 0x7c, + 0x5e, 0xf8, 0x34, 0x66, 0x36, 0x2f, 0x30, 0xf6, 0xc6, 0xf2, 0xcf, 0xce, + 0x18, 0x00, 0xdd, 0x0c, 0x40, 0xac, 0xdd, 0x27, 0x71, 0xe1, 0xb9, 0x40, + 0x55, 0xaa, 0x17, 0x40, 0x18, 0x08, 0x8d, 0xd7, 0x12, 0xa6, 0xd0, 0xde, + 0x14, 0xa9, 0xfa, 0x35, 0xff, 0x00, 0x80, 0x8a, 0x7c, 0xdb, 0xca, 0x09, + 0x96, 0x56, 0x65, 0xcc, 0x0e, 0xc4, 0x60, 0x27, 0x42, 0x59, 0xdc, 0x78, + 0x72, 0xbb, 0x13, 0x04, 0x35, 0xd6, 0x34, 0xc8, 0x67, 0xe0, 0xc1, 0x5a, + 0xa0, 0x6b, 0xd6, 0x03, 0x08, 0x38, 0x9c, 0x5f, 0xeb, 0x4e, 0xe8, 0x7d, + 0xff, 0x00, 0xa9, 0xf7, 0x11, 0xa2, 0x46, 0xa0, 0x99, 0xab, 0x13, 0x43, + 0xce, 0x2e, 0xe2, 0x3a, 0x4b, 0x0e, 0x20, 0x63, 0xd9, 0x3b, 0xef, 0x0b, + 0x83, 0x0c, 0x55, 0x0c, 0x83, 0x72, 0xf6, 0x99, 0x03, 0x04, 0xe6, 0x53, + 0x7e, 0xb1, 0x85, 0x27, 0xf4, 0x53, 0xb9, 0x1f, 0x7f, 0xa5, 0xca, 0xf7, + 0x60, 0xa1, 0xee, 0xd2, 0x1e, 0xb5, 0x0d, 0xe2, 0x5f, 0x44, 0xb9, 0x40, + 0x63, 0xac, 0xf7, 0x69, 0x9b, 0xaf, 0x84, 0x5f, 0x46, 0x63, 0x93, 0xaa, + 0x1b, 0xa8, 0xa0, 0x34, 0xd6, 0x15, 0x3b, 0x18, 0x98, 0x3e, 0x90, 0x30, + 0x36, 0x88, 0xd1, 0x5e, 0xc2, 0x77, 0x03, 0xdb, 0xef, 0xc9, 0x74, 0xbd, + 0xf9, 0x6d, 0xa6, 0x62, 0x8e, 0x4c, 0xc9, 0x35, 0x70, 0x62, 0x54, 0x1b, + 0x23, 0xbe, 0xf0, 0x92, 0x3f, 0x2f, 0x68, 0x68, 0x0f, 0x07, 0x89, 0x82, + 0x5e, 0x73, 0x58, 0x00, 0x3c, 0x25, 0xe1, 0xa8, 0xdc, 0x24, 0x71, 0x91, + 0xdd, 0x09, 0xe4, 0x30, 0xf4, 0xfb, 0xf2, 0xf3, 0x3f, 0x3c, 0xa9, 0x68, + 0x8d, 0xc7, 0xa3, 0xe6, 0x60, 0x98, 0xa3, 0x26, 0xad, 0xbe, 0x6b, 0x06, + 0x1a, 0x25, 0xdd, 0xb8, 0xc4, 0xef, 0xbc, 0x26, 0x01, 0x49, 0xb3, 0x71, + 0x68, 0x36, 0x23, 0x03, 0x2f, 0x3c, 0x5c, 0x20, 0x5b, 0x5d, 0xa3, 0xe4, + 0x3b, 0x9e, 0x62, 0x25, 0x18, 0xfd, 0x3e, 0xfc, 0x97, 0x57, 0xdf, 0x8e, + 0x26, 0x80, 0xa6, 0x52, 0xf6, 0x88, 0xcd, 0xce, 0x8c, 0xc2, 0x34, 0x4b, + 0x81, 0xa0, 0x4c, 0xef, 0xbc, 0x24, 0xa0, 0xe0, 0x10, 0x1e, 0xa1, 0x70, + 0x6a, 0x98, 0x43, 0xbb, 0x42, 0xe3, 0xca, 0x1a, 0xba, 0x84, 0x41, 0x85, + 0xc5, 0xfc, 0x93, 0xb0, 0xf6, 0x7d, 0xf8, 0x37, 0xef, 0xee, 0xc1, 0xda, + 0x05, 0xdc, 0x06, 0x86, 0xf0, 0x34, 0xaf, 0x21, 0x18, 0xab, 0xd4, 0x65, + 0x57, 0x48, 0x03, 0xdb, 0x4e, 0xe3, 0xc3, 0xaa, 0xc2, 0x82, 0xf9, 0xd9, + 0x86, 0x7b, 0x12, 0xa6, 0x6d, 0xac, 0xc0, 0xf5, 0x8a, 0x6b, 0xeb, 0xa4, + 0xe8, 0x70, 0x5e, 0x86, 0xa7, 0xac, 0xec, 0x7e, 0xfc, 0x60, 0xb0, 0xff, + 0x00, 0x62, 0x37, 0x3b, 0x0b, 0xeb, 0x34, 0xb9, 0x85, 0x9c, 0x0b, 0x8c, + 0xd9, 0x2c, 0x8c, 0x28, 0x23, 0x2b, 0xb0, 0x63, 0xb8, 0xf0, 0xf7, 0x49, + 0xed, 0x47, 0x9c, 0x01, 0x46, 0x61, 0xe6, 0x34, 0xd2, 0xa3, 0xf1, 0x19, + 0x57, 0xa1, 0x96, 0x57, 0x93, 0xbc, 0xf9, 0x5c, 0x3f, 0xf0, 0x3d, 0x2b, + 0x2a, 0xfc, 0xd0, 0x9a, 0x6d, 0x99, 0xba, 0x92, 0xe7, 0x4e, 0x70, 0xb8, + 0x41, 0x17, 0xc1, 0x4f, 0x58, 0xcc, 0xf3, 0xe1, 0x6a, 0x72, 0xd1, 0x16, + 0x67, 0xdf, 0x97, 0xa6, 0xd7, 0x2a, 0xd1, 0x8c, 0x08, 0x01, 0x23, 0x99, + 0x9d, 0xa0, 0x27, 0x78, 0x1d, 0x15, 0xed, 0x7d, 0xfe, 0xd1, 0xc2, 0x3b, + 0x46, 0x1a, 0xbc, 0xe6, 0x31, 0x1c, 0x08, 0x71, 0x38, 0x35, 0x41, 0x90, + 0xb7, 0x08, 0x47, 0xad, 0x3e, 0xb3, 0x92, 0x03, 0xf0, 0x83, 0x04, 0x27, + 0xc4, 0x1d, 0x2f, 0xf4, 0x82, 0xc3, 0x1d, 0x31, 0x00, 0x0a, 0xa1, 0xfc, + 0x47, 0x7a, 0x75, 0x80, 0x57, 0xea, 0x0d, 0x0b, 0x92, 0x28, 0xda, 0x9f, + 0x67, 0xf7, 0xfb, 0xb5, 0x6f, 0x74, 0xb0, 0x14, 0x00, 0x5e, 0x70, 0x10, + 0x1f, 0xb9, 0xab, 0x49, 0x93, 0xb0, 0x34, 0x7e, 0x71, 0xc3, 0x67, 0xbc, + 0x3a, 0x3e, 0x4e, 0x76, 0x9e, 0x1e, 0xfa, 0x1a, 0x0e, 0x2d, 0x0c, 0x1a, + 0x61, 0xef, 0x14, 0x08, 0xa0, 0x9f, 0xa4, 0x54, 0xcf, 0x21, 0xa4, 0x31, + 0x39, 0x67, 0x78, 0xec, 0x8f, 0x71, 0xca, 0x03, 0x97, 0xb3, 0xef, 0xfb, + 0x87, 0xba, 0x70, 0x5f, 0xb9, 0x33, 0xd6, 0x13, 0x70, 0x09, 0xd6, 0x17, + 0x53, 0x0c, 0xcd, 0x3e, 0x96, 0x00, 0x80, 0x1e, 0x20, 0xfc, 0xac, 0x4e, + 0x78, 0x51, 0x0f, 0x00, 0x13, 0x72, 0xa6, 0x9c, 0xa3, 0x2b, 0x6e, 0x18, + 0x11, 0xb0, 0xbe, 0xae, 0x67, 0xe9, 0xf8, 0x5f, 0x7f, 0xe8, 0x0b, 0xdd, + 0x00, 0x2e, 0xc2, 0xef, 0x3b, 0x39, 0x85, 0x77, 0x0e, 0x54, 0x55, 0x13, + 0x04, 0x96, 0x79, 0x87, 0xe9, 0x20, 0xa0, 0x71, 0xe2, 0x12, 0x1e, 0x6c, + 0xf6, 0x08, 0xd0, 0xa2, 0x8d, 0xad, 0xeb, 0x2d, 0x50, 0xc8, 0xb6, 0x86, + 0x86, 0x9d, 0x2f, 0x59, 0xf2, 0xfb, 0x3e, 0xff, 0x00, 0xbf, 0xfb, 0xa0, + 0xa1, 0x24, 0x11, 0xde, 0x30, 0x98, 0x23, 0x4f, 0xf2, 0x2d, 0x7a, 0x95, + 0x98, 0xca, 0xd7, 0x68, 0x87, 0xaa, 0x34, 0x6f, 0x10, 0x11, 0x0f, 0x13, + 0x38, 0x19, 0x5f, 0x6c, 0xd4, 0xea, 0x70, 0x03, 0x53, 0x24, 0x4b, 0xd7, + 0x26, 0x54, 0x38, 0x34, 0xdf, 0x99, 0x74, 0xf4, 0xf7, 0x41, 0x21, 0xff, + 0x00, 0x30, 0xfb, 0xf0, 0x7d, 0x4f, 0xba, 0x06, 0x4b, 0xfd, 0xb0, 0x90, + 0x28, 0xed, 0xac, 0x51, 0xb9, 0xa9, 0x5a, 0xa8, 0x0e, 0xb2, 0xc7, 0xe4, + 0xee, 0x84, 0xb2, 0xfc, 0x48, 0x14, 0x00, 0x05, 0x34, 0x32, 0xa6, 0x93, + 0x09, 0x07, 0x1c, 0xf9, 0x6d, 0x2b, 0x0c, 0xc8, 0x91, 0x43, 0x0d, 0x63, + 0x83, 0xf2, 0x4f, 0xbf, 0xee, 0xfe, 0xe8, 0x47, 0xe0, 0x6e, 0x50, 0x6d, + 0x0e, 0x0c, 0x20, 0x3b, 0x6d, 0x20, 0x88, 0xa5, 0x00, 0x33, 0x86, 0x77, + 0x78, 0xee, 0x37, 0xc1, 0x0e, 0xd8, 0x6e, 0xe6, 0xab, 0x32, 0xe9, 0x0f, + 0x61, 0x8b, 0x63, 0xa4, 0xae, 0xea, 0x4f, 0x91, 0xdb, 0xef, 0xcd, 0x13, + 0x63, 0xf7, 0x4a, 0x06, 0x0f, 0xbc, 0x8d, 0xc8, 0x9f, 0x28, 0x25, 0xb3, + 0xae, 0xb3, 0x0e, 0xdc, 0xf5, 0x80, 0x22, 0x08, 0x15, 0x14, 0x72, 0x1d, + 0x2b, 0xcf, 0xe3, 0x1c, 0x05, 0x01, 0x05, 0x4b, 0x2a, 0x18, 0xcc, 0xac, + 0x60, 0x04, 0xdb, 0x82, 0xdf, 0x05, 0x01, 0x51, 0xfe, 0x7f, 0x7e, 0x4c, + 0x1d, 0xfe, 0xe8, 0x0b, 0x4d, 0x05, 0x69, 0x98, 0x45, 0x32, 0x53, 0xd2, + 0x19, 0x25, 0x01, 0x5a, 0x44, 0x05, 0x3d, 0xe1, 0xab, 0x00, 0x4b, 0x01, + 0x37, 0x11, 0x1d, 0x97, 0x8d, 0x6c, 0x3f, 0xe8, 0xc4, 0x4c, 0x38, 0x8e, + 0x10, 0x81, 0x1f, 0x4c, 0xa1, 0x07, 0x83, 0x30, 0x51, 0x73, 0xf7, 0xf3, + 0x3f, 0xc5, 0x4d, 0x86, 0xbd, 0xe4, 0x3a, 0xcc, 0x3c, 0x08, 0x58, 0x11, + 0xa8, 0x2e, 0x91, 0xb6, 0x0c, 0x8c, 0xcb, 0x95, 0x20, 0x38, 0xf1, 0xe6, + 0x3a, 0x81, 0xe2, 0xff, 0x00, 0xb1, 0xa0, 0x33, 0xd2, 0x37, 0x0a, 0x2e, + 0x07, 0x98, 0x0a, 0x2c, 0xcb, 0x65, 0x0b, 0x8c, 0x08, 0xc5, 0x01, 0x87, + 0x33, 0x81, 0x9f, 0x7e, 0x25, 0x09, 0x58, 0xb8, 0x10, 0x85, 0x48, 0x37, + 0x0e, 0xa8, 0xf4, 0x77, 0x08, 0x50, 0xe9, 0x01, 0xd1, 0xb5, 0xac, 0xae, + 0xf0, 0x96, 0x60, 0x32, 0x3c, 0x73, 0x3b, 0x73, 0xf8, 0x7e, 0xa5, 0x03, + 0x67, 0x11, 0xe0, 0xb4, 0x24, 0xc5, 0xa5, 0x30, 0x03, 0x0a, 0xc8, 0x56, + 0x1c, 0xa8, 0x70, 0x7c, 0x06, 0x53, 0x48, 0xc1, 0x88, 0x05, 0xfd, 0x23, + 0x64, 0x0f, 0xab, 0xd4, 0x42, 0x0d, 0x7e, 0xa2, 0x73, 0xbd, 0x44, 0xf8, + 0x02, 0x7c, 0x81, 0x3e, 0x00, 0x9f, 0x20, 0x4f, 0x90, 0x27, 0xc0, 0x13, + 0xe0, 0x09, 0xf0, 0x04, 0xf8, 0x82, 0x5c, 0x3e, 0x94, 0x9f, 0x00, 0x41, + 0xb4, 0x1e, 0x4f, 0x00, 0x01, 0x0e, 0x2f, 0x54, 0xe3, 0xf5, 0x4f, 0x8c, + 0xcf, 0x9c, 0xcf, 0x8c, 0xcf, 0x8c, 0xcf, 0x9c, 0xcf, 0x8c, 0xcf, 0x8c, + 0xce, 0x41, 0xf3, 0x83, 0x18, 0xe1, 0x14, 0x3c, 0x97, 0x3a, 0xac, 0xe6, + 0x08, 0xd5, 0xac, 0x23, 0xec, 0x9c, 0x44, 0x6e, 0x21, 0xaf, 0x68, 0xa0, + 0x2f, 0x3d, 0xe3, 0xcc, 0xa0, 0x13, 0xc6, 0xfe, 0x1b, 0xea, 0x3f, 0x90, + 0xec, 0x6e, 0x62, 0xf2, 0x00, 0xa8, 0x4a, 0x95, 0xaf, 0x01, 0x8e, 0xb2, + 0xc2, 0x10, 0x8f, 0x30, 0xc0, 0x66, 0xdd, 0xa8, 0xb4, 0xac, 0xa2, 0xf5, + 0x96, 0x8f, 0x7a, 0x37, 0xf6, 0xc7, 0x62, 0x61, 0xac, 0xb1, 0xcc, 0xa1, + 0xf7, 0x60, 0x30, 0x1e, 0x9b, 0x98, 0x3d, 0xe8, 0x6a, 0x12, 0x51, 0x31, + 0xe0, 0x09, 0x81, 0x83, 0x5f, 0x9c, 0xd1, 0x8a, 0x87, 0xa0, 0xe2, 0x72, + 0x6e, 0xb0, 0x9f, 0xdb, 0x01, 0xff, 0x00, 0x64, 0x03, 0x45, 0xb9, 0x8c, + 0xa5, 0xdc, 0xa0, 0x12, 0x5d, 0x75, 0x80, 0xce, 0xb7, 0x34, 0xb6, 0xb8, + 0x88, 0xa6, 0x8c, 0x02, 0x28, 0x92, 0xa0, 0x29, 0x1b, 0xf3, 0xd6, 0x16, + 0x14, 0x6c, 0x03, 0x71, 0xb6, 0x59, 0xdd, 0xc0, 0x04, 0x60, 0x79, 0x44, + 0x43, 0xf1, 0x0a, 0x07, 0x6e, 0x91, 0x8b, 0x54, 0x33, 0xbc, 0x2a, 0xdc, + 0x46, 0x66, 0x09, 0xa5, 0x12, 0x0c, 0x25, 0x3d, 0x0c, 0x2c, 0x08, 0x01, + 0x39, 0xc4, 0x50, 0x76, 0x29, 0xef, 0xe3, 0x2a, 0xb5, 0x60, 0xf5, 0x72, + 0xa5, 0x58, 0x00, 0xaa, 0x50, 0xab, 0xca, 0xd2, 0x19, 0x1a, 0xb0, 0x3d, + 0xa0, 0xd5, 0x71, 0xff, 0x00, 0x10, 0x24, 0xca, 0x72, 0xc5, 0x1a, 0x30, + 0xac, 0xab, 0x7e, 0x21, 0x2f, 0x4a, 0x80, 0x5f, 0xbc, 0xb0, 0x25, 0xb8, + 0x81, 0x79, 0xcc, 0x85, 0xfa, 0xc3, 0xa1, 0x79, 0xcc, 0x8d, 0xa3, 0x23, + 0xf9, 0x09, 0x21, 0x7e, 0x5a, 0xcc, 0x25, 0x4d, 0x5a, 0x83, 0x56, 0x39, + 0x88, 0xe2, 0x14, 0x41, 0xdd, 0x4e, 0x50, 0x1e, 0x05, 0xa9, 0x45, 0xea, + 0xb0, 0x44, 0xc8, 0x75, 0x83, 0x41, 0x9b, 0x1b, 0x62, 0x36, 0x81, 0x11, + 0x4e, 0x60, 0xc1, 0x28, 0xea, 0x0c, 0x10, 0xc8, 0x93, 0xda, 0x13, 0xd0, + 0xe3, 0xa4, 0x10, 0x23, 0x45, 0x0d, 0x17, 0x11, 0x64, 0x3d, 0xa2, 0x03, + 0x8a, 0xda, 0x79, 0x1a, 0xc4, 0x2c, 0x3e, 0x5c, 0xb0, 0x6c, 0x1b, 0x4d, + 0x88, 0x65, 0xa5, 0x51, 0xcb, 0x20, 0x11, 0x91, 0x5c, 0x1f, 0xf2, 0x00, + 0x22, 0x3e, 0x4c, 0x18, 0xd3, 0x00, 0x0f, 0x97, 0x8e, 0xbd, 0x90, 0x01, + 0xec, 0x86, 0x46, 0x6f, 0xa1, 0xc4, 0xc0, 0x42, 0x2d, 0xa2, 0xd8, 0x0a, + 0xb9, 0x6f, 0x2c, 0x12, 0xe0, 0x88, 0xe6, 0x01, 0x4c, 0xd4, 0x06, 0xf3, + 0x7b, 0xcc, 0x1d, 0x5d, 0x61, 0x61, 0x60, 0x74, 0x45, 0x59, 0x11, 0x03, + 0xa8, 0x98, 0x38, 0x51, 0x7a, 0xed, 0x00, 0x01, 0xc1, 0x83, 0x0e, 0x1d, + 0x29, 0x46, 0xb2, 0xf3, 0x35, 0xe2, 0x29, 0x9b, 0x73, 0x32, 0x2f, 0xd0, + 0x62, 0x06, 0x01, 0x7b, 0x6b, 0x05, 0x91, 0xcc, 0x66, 0x48, 0xbe, 0x92, + 0x89, 0x4e, 0x16, 0x80, 0x10, 0x5d, 0xed, 0x01, 0x94, 0x28, 0xe9, 0x2a, + 0x1b, 0x72, 0x9e, 0x1b, 0xa1, 0x05, 0xcc, 0xf3, 0x90, 0x5a, 0x6d, 0xca, + 0x53, 0x61, 0xc5, 0x41, 0x08, 0x51, 0xef, 0xc4, 0x28, 0x97, 0xe9, 0x08, + 0x11, 0x00, 0xaa, 0x32, 0x28, 0x3d, 0x44, 0x06, 0x04, 0x00, 0x3b, 0xd6, + 0x02, 0x14, 0x5e, 0xb9, 0x9a, 0x89, 0xb1, 0x2f, 0x67, 0x1a, 0x65, 0xbc, + 0x05, 0xac, 0x85, 0xb0, 0x81, 0xeb, 0x13, 0xc8, 0x78, 0xf7, 0xe9, 0x2f, + 0x49, 0xe5, 0x75, 0xfd, 0xc3, 0xa0, 0x83, 0x88, 0xf2, 0xcd, 0xde, 0x40, + 0x07, 0x9c, 0x79, 0x41, 0x40, 0xd3, 0xac, 0x78, 0xb6, 0x36, 0xfa, 0x16, + 0x36, 0x5c, 0xc6, 0x3e, 0x94, 0x3b, 0xc3, 0xb0, 0xba, 0x40, 0x68, 0xc2, + 0x03, 0x1d, 0x58, 0x13, 0x4a, 0xa8, 0x7b, 0x95, 0xcc, 0x04, 0x82, 0xb2, + 0x65, 0xe6, 0x65, 0x86, 0xec, 0xc2, 0xab, 0xf4, 0x94, 0x27, 0x0e, 0x34, + 0x40, 0x2a, 0xdc, 0xca, 0x0f, 0xc2, 0x03, 0x4c, 0x82, 0xd6, 0x30, 0x44, + 0x00, 0xce, 0x07, 0x30, 0x85, 0x00, 0xad, 0x5b, 0xf4, 0x87, 0x16, 0x7a, + 0x14, 0xa1, 0x00, 0x01, 0x65, 0x73, 0x2c, 0x0e, 0x0f, 0x9c, 0x22, 0x01, + 0x01, 0xe9, 0x05, 0x25, 0x17, 0x31, 0x35, 0x66, 0xf4, 0xda, 0x30, 0x4b, + 0x37, 0x09, 0x66, 0xcb, 0xd2, 0x3f, 0xf2, 0x32, 0xc0, 0x17, 0x10, 0xd6, + 0x49, 0x58, 0x9a, 0x17, 0x14, 0x50, 0xc6, 0x6a, 0x09, 0x03, 0xea, 0xca, + 0x70, 0x21, 0xbe, 0xbf, 0x04, 0xd1, 0x42, 0x5f, 0x59, 0x3e, 0x34, 0x28, + 0x70, 0x68, 0xc2, 0x56, 0x03, 0x8e, 0x86, 0x3f, 0x23, 0x69, 0x0c, 0xcc, + 0x27, 0x79, 0x73, 0x70, 0xa0, 0x79, 0x58, 0x80, 0xa1, 0x87, 0x14, 0x60, + 0x41, 0x5b, 0x84, 0x09, 0xd0, 0x6f, 0x48, 0x41, 0x41, 0x7a, 0xca, 0x6a, + 0x30, 0x4c, 0xf8, 0xc2, 0x9d, 0x2b, 0x4b, 0x89, 0x17, 0x7d, 0x65, 0x85, + 0x15, 0x00, 0x36, 0xe0, 0x71, 0x0e, 0x48, 0xb3, 0xbc, 0x01, 0x02, 0x06, + 0x62, 0xbe, 0x86, 0x65, 0x0f, 0x38, 0x8c, 0x41, 0x51, 0x01, 0xb2, 0x21, + 0x08, 0x22, 0xb1, 0xac, 0x20, 0x86, 0x5d, 0x41, 0x74, 0x9a, 0x50, 0x99, + 0x09, 0xd6, 0xd1, 0x47, 0x4c, 0x83, 0xa4, 0x14, 0xc5, 0x3d, 0xe0, 0x5d, + 0x20, 0x00, 0xd3, 0x5d, 0x4c, 0x02, 0x8c, 0x6a, 0xc6, 0x61, 0x61, 0xbd, + 0x50, 0x85, 0xbd, 0x1c, 0x21, 0x8d, 0x11, 0xc4, 0x24, 0xda, 0x16, 0x0b, + 0xb9, 0xa5, 0x86, 0x72, 0x74, 0x70, 0x89, 0x10, 0x1f, 0xb1, 0x39, 0xba, + 0xd6, 0x20, 0xcc, 0xa9, 0x7a, 0x69, 0xe9, 0x04, 0x00, 0x97, 0x54, 0x0e, + 0x93, 0x6a, 0x8e, 0x15, 0x47, 0x1e, 0xec, 0xd1, 0x73, 0xe6, 0x48, 0x3f, + 0xe0, 0x43, 0x00, 0x43, 0xde, 0xcf, 0x70, 0x61, 0xdb, 0xcd, 0xf8, 0x7b, + 0x42, 0x98, 0x74, 0x79, 0x1c, 0xc5, 0x71, 0x40, 0x57, 0x49, 0x82, 0x41, + 0xcc, 0x06, 0x6c, 0xc0, 0x02, 0x18, 0xa8, 0xd0, 0xcb, 0x8c, 0x3a, 0xc0, + 0x7e, 0x18, 0xc0, 0x48, 0x31, 0x38, 0x22, 0x81, 0x18, 0xb1, 0x73, 0x76, + 0x90, 0x5a, 0x11, 0x50, 0x83, 0xac, 0x43, 0xd4, 0x21, 0x1b, 0x69, 0x9c, + 0xc0, 0xd3, 0x57, 0x09, 0x45, 0x29, 0x00, 0x82, 0x68, 0x88, 0x6b, 0x54, + 0x63, 0x5c, 0x6b, 0xad, 0xc0, 0x43, 0x06, 0x72, 0x88, 0xb2, 0x11, 0x2d, + 0x61, 0xb0, 0x4c, 0xfe, 0xe6, 0x6c, 0x8f, 0x4c, 0x42, 0x05, 0x63, 0xce, + 0x05, 0xd3, 0x4a, 0x24, 0x8c, 0x40, 0x66, 0x9c, 0x44, 0x82, 0x01, 0x04, + 0x68, 0x45, 0x38, 0xc2, 0x40, 0x0e, 0x0e, 0xb0, 0x84, 0xac, 0xb8, 0x09, + 0x86, 0x5b, 0x73, 0x0d, 0x8e, 0xe7, 0x57, 0x29, 0x94, 0x6e, 0x60, 0x02, + 0x09, 0x3b, 0xdc, 0x23, 0x70, 0x4e, 0x46, 0x6a, 0x44, 0x02, 0x72, 0x42, + 0xf9, 0x88, 0xda, 0x6c, 0x4b, 0xf5, 0x04, 0x10, 0x60, 0x65, 0x09, 0x91, + 0xff, 0x00, 0x81, 0x40, 0x40, 0x50, 0x97, 0xb8, 0xfc, 0xc0, 0xc1, 0x12, + 0x87, 0x4d, 0xa3, 0x8b, 0xf2, 0x28, 0x59, 0x76, 0x75, 0x1e, 0x4b, 0xe7, + 0x32, 0x8a, 0x50, 0xa0, 0x30, 0x50, 0x56, 0x8b, 0xac, 0x02, 0x9b, 0x0a, + 0x34, 0x6e, 0xc4, 0x2a, 0xce, 0x34, 0x8d, 0x01, 0x98, 0x3c, 0xeb, 0xc6, + 0x23, 0x07, 0x26, 0x21, 0x56, 0xa8, 0x1b, 0x10, 0x8e, 0x90, 0xd1, 0x42, + 0x8f, 0x10, 0x5b, 0x28, 0x6a, 0x60, 0x2c, 0x60, 0xf2, 0xe3, 0x29, 0x13, + 0x51, 0x98, 0x47, 0xbc, 0x69, 0x37, 0x0b, 0x03, 0x7c, 0x44, 0x4e, 0xce, + 0xb0, 0xd2, 0x4e, 0x21, 0x3c, 0x34, 0x94, 0xb5, 0x91, 0x11, 0x4d, 0x54, + 0x24, 0xc7, 0x54, 0xc5, 0x0d, 0x4a, 0x64, 0x23, 0x2d, 0x56, 0x76, 0x3c, + 0xca, 0x18, 0x91, 0xe7, 0x88, 0x51, 0xc4, 0x26, 0x43, 0x0f, 0xca, 0xa1, + 0x16, 0x44, 0xce, 0x61, 0x25, 0x8a, 0x11, 0x09, 0xe0, 0x60, 0x84, 0x15, + 0x4c, 0xdf, 0x00, 0x2c, 0x6e, 0x84, 0x1f, 0x74, 0x6b, 0x0c, 0xa3, 0x98, + 0xa2, 0x52, 0x5d, 0x4d, 0x7e, 0x7f, 0xe2, 0x96, 0x03, 0x4f, 0x95, 0xfc, + 0x87, 0x42, 0xc0, 0xd2, 0x36, 0x91, 0xe1, 0x9f, 0x9b, 0x40, 0x92, 0xc1, + 0xb8, 0x07, 0x95, 0x4b, 0xf1, 0xda, 0x14, 0x19, 0xbb, 0xe1, 0xcc, 0x07, + 0xe5, 0x1d, 0x67, 0xce, 0x03, 0x62, 0x87, 0x59, 0x9e, 0x25, 0x06, 0x01, + 0xf3, 0x88, 0x04, 0x01, 0x76, 0xe1, 0x00, 0xe0, 0x90, 0x39, 0x86, 0x16, + 0xa3, 0x88, 0xd0, 0x9e, 0x23, 0x48, 0x74, 0x38, 0x8c, 0x42, 0x97, 0x11, + 0x91, 0x47, 0x98, 0x09, 0xe8, 0x30, 0x2b, 0x3e, 0x81, 0x2c, 0xfc, 0xcd, + 0x00, 0xec, 0xa0, 0x09, 0x91, 0x08, 0x70, 0xf4, 0x5c, 0x00, 0x01, 0xae, + 0xb2, 0x83, 0x29, 0xb8, 0x53, 0x0d, 0xfc, 0xe0, 0x6c, 0x09, 0x7a, 0xba, + 0x50, 0xa0, 0x4f, 0xbb, 0x10, 0xe8, 0x66, 0x2c, 0x60, 0x33, 0x35, 0x26, + 0xb5, 0x98, 0x12, 0x04, 0x14, 0x41, 0xa7, 0xb0, 0x95, 0x95, 0x17, 0x52, + 0x85, 0x0b, 0x3c, 0xc2, 0x68, 0x89, 0x19, 0x16, 0x4e, 0x20, 0x38, 0xec, + 0x64, 0xea, 0x37, 0x57, 0x34, 0x12, 0x68, 0xd0, 0x66, 0x03, 0x4a, 0xf4, + 0xe6, 0x10, 0x4f, 0x33, 0xc8, 0x7f, 0xbd, 0xbf, 0xe2, 0x40, 0x08, 0x19, + 0x51, 0x1c, 0x42, 0xdb, 0x09, 0x00, 0xbe, 0xfe, 0x90, 0xf4, 0x01, 0x29, + 0x32, 0xc7, 0xcb, 0x9a, 0x90, 0x30, 0xdb, 0x6f, 0xcf, 0x68, 0xba, 0xa1, + 0x64, 0x85, 0xd2, 0xf9, 0xde, 0x0d, 0xc5, 0xff, 0x00, 0x50, 0x46, 0x0c, + 0x19, 0x09, 0x5b, 0x46, 0xb1, 0x0a, 0xce, 0xe6, 0x02, 0xc0, 0xd2, 0x3b, + 0x16, 0x5f, 0x58, 0x0e, 0x0c, 0x70, 0x59, 0x5f, 0xb8, 0x0d, 0xc1, 0xb2, + 0xbd, 0xe6, 0x8d, 0x21, 0x1e, 0xa8, 0x29, 0xde, 0x9a, 0x08, 0x00, 0x0e, + 0xc2, 0xd3, 0x58, 0x19, 0x65, 0x50, 0x51, 0xa7, 0xc2, 0x02, 0x89, 0x1e, + 0x21, 0x40, 0x8c, 0x12, 0x36, 0x85, 0x4c, 0x82, 0x29, 0xc4, 0xc4, 0x17, + 0x43, 0x07, 0x3f, 0x59, 0x64, 0x13, 0xae, 0x22, 0xaa, 0x2c, 0x0c, 0x60, + 0xb9, 0xc0, 0xda, 0x0d, 0x85, 0xce, 0xf2, 0x89, 0x7a, 0x42, 0xc5, 0x0d, + 0x74, 0x89, 0x96, 0xf8, 0x86, 0xb8, 0xa8, 0x61, 0x20, 0xed, 0x81, 0xbc, + 0x72, 0xab, 0x8c, 0xd3, 0x82, 0xb0, 0x15, 0xa6, 0xbd, 0x21, 0x6a, 0xb7, + 0x4c, 0x2e, 0xa1, 0x45, 0x88, 0x00, 0x80, 0xcc, 0xc6, 0x18, 0x7a, 0xce, + 0xbd, 0xff, 0x00, 0xe4, 0x62, 0xc4, 0x06, 0xad, 0xc6, 0x0f, 0xa4, 0x50, + 0xc9, 0xe5, 0x75, 0x36, 0x44, 0x5c, 0x62, 0xde, 0x83, 0x9f, 0x3f, 0x79, + 0x72, 0x0f, 0x48, 0xd5, 0xa7, 0xfc, 0x85, 0x38, 0x10, 0x64, 0x18, 0xf8, + 0x4a, 0x21, 0x18, 0x53, 0x02, 0x1a, 0xd5, 0xeb, 0x18, 0x55, 0x89, 0x8c, + 0x4a, 0x37, 0x88, 0x94, 0x89, 0x9a, 0x63, 0x33, 0x2b, 0xa1, 0x2e, 0x03, + 0xb8, 0x16, 0xd8, 0xe9, 0x32, 0xb9, 0xad, 0xa1, 0x91, 0x9a, 0xd6, 0x1a, + 0x51, 0xe4, 0xed, 0x01, 0xc0, 0x3d, 0x21, 0xb5, 0x50, 0xdc, 0x1c, 0x1a, + 0xed, 0x31, 0x62, 0xe6, 0x0f, 0x6a, 0x9b, 0xa2, 0xb6, 0x88, 0x27, 0x98, + 0x48, 0x19, 0x04, 0x29, 0x67, 0xbc, 0xb1, 0x38, 0x89, 0x10, 0xa5, 0x85, + 0x35, 0x3d, 0xe6, 0x8a, 0x80, 0x88, 0x32, 0xf4, 0x87, 0xd9, 0xc2, 0x41, + 0x33, 0xaf, 0x48, 0x1c, 0x84, 0x02, 0x0b, 0xb0, 0xa3, 0xc4, 0x16, 0xb2, + 0x6e, 0xcc, 0x77, 0x52, 0x00, 0xfd, 0x1f, 0x38, 0xff, 0x00, 0x99, 0x09, + 0x9b, 0x3b, 0x68, 0xf9, 0xcc, 0xbc, 0xa0, 0x36, 0x0e, 0x60, 0xa6, 0xac, + 0x46, 0x20, 0x2c, 0xef, 0x73, 0x4d, 0xff, 0x00, 0x71, 0x36, 0x06, 0xa5, + 0xe4, 0xa6, 0xfb, 0xe1, 0x3e, 0x6d, 0x34, 0x3b, 0xe2, 0x0e, 0x65, 0x6b, + 0xda, 0x05, 0x08, 0x5d, 0x97, 0x31, 0x82, 0xc2, 0x9e, 0xa4, 0x40, 0x57, + 0x06, 0x12, 0x30, 0x98, 0x7d, 0x3e, 0x8d, 0x70, 0xc3, 0x5b, 0x7f, 0x33, + 0x02, 0x04, 0x4b, 0xb8, 0x54, 0x83, 0x43, 0xde, 0x1e, 0x19, 0x05, 0xc3, + 0x97, 0x13, 0xd7, 0x10, 0xdd, 0x1b, 0x73, 0x09, 0x09, 0x2a, 0x84, 0xc1, + 0x67, 0x98, 0x4c, 0xa7, 0xac, 0xcb, 0xf3, 0x05, 0x91, 0x29, 0x60, 0x88, + 0x4e, 0x9d, 0xa1, 0x2b, 0x41, 0x88, 0x5b, 0x12, 0x9d, 0x0a, 0xe6, 0x21, + 0xa3, 0x98, 0x89, 0x53, 0x07, 0x5d, 0x78, 0x80, 0x01, 0xd3, 0x98, 0x01, + 0x18, 0x79, 0xf8, 0xe1, 0x6b, 0x1c, 0x96, 0x83, 0x68, 0x8d, 0xb4, 0xd2, + 0xc4, 0xb4, 0xa4, 0x74, 0x1f, 0x39, 0x80, 0x20, 0x82, 0x1d, 0x5d, 0x3f, + 0xe8, 0x9d, 0xda, 0x8f, 0x6f, 0xef, 0x3e, 0xb2, 0xaa, 0x2c, 0x8c, 0xfc, + 0x70, 0x62, 0x82, 0xc3, 0x1a, 0x01, 0x9e, 0x9e, 0xb0, 0x07, 0x13, 0x45, + 0x3c, 0x00, 0x14, 0x06, 0xcd, 0x4b, 0x0f, 0x45, 0xf3, 0xce, 0x18, 0xda, + 0x6f, 0x1b, 0x8e, 0xb1, 0x05, 0xa1, 0x0e, 0x77, 0x03, 0x89, 0xad, 0xcc, + 0x6a, 0x08, 0x8e, 0xf3, 0x02, 0x18, 0x68, 0xac, 0x0b, 0x83, 0x17, 0x6e, + 0x63, 0x5a, 0xae, 0x92, 0xc0, 0x0f, 0xa9, 0x80, 0x2d, 0xc0, 0x2b, 0x5e, + 0x20, 0x3c, 0x29, 0x7a, 0x21, 0x10, 0x0c, 0x41, 0x6c, 0xb7, 0xbc, 0x07, + 0x04, 0x38, 0x30, 0xdb, 0x01, 0x6e, 0xa0, 0x1a, 0x15, 0xc4, 0x71, 0x5a, + 0x89, 0x6c, 0x94, 0x20, 0x51, 0x79, 0x29, 0x7a, 0xb5, 0xc6, 0xd2, 0xc7, + 0xe6, 0x69, 0x17, 0x70, 0x2b, 0x16, 0xf4, 0x8c, 0x94, 0xd1, 0x6f, 0xd9, + 0x0e, 0x4d, 0xba, 0x0d, 0xcd, 0xc4, 0x67, 0x43, 0xa2, 0x0f, 0x27, 0x83, + 0xd4, 0xe9, 0x19, 0xff, 0x00, 0xa6, 0x1f, 0x2a, 0x3e, 0x81, 0x86, 0x06, + 0x78, 0x9e, 0x9b, 0xca, 0x54, 0x62, 0xc4, 0xe7, 0xe2, 0x30, 0xe0, 0x09, + 0x04, 0xa2, 0x9a, 0x71, 0xe7, 0x7e, 0x93, 0xd6, 0x2b, 0x52, 0xc0, 0xfe, + 0x77, 0x30, 0x06, 0x83, 0x44, 0x85, 0x43, 0x30, 0x0b, 0x8e, 0x96, 0x20, + 0xc4, 0x01, 0x9d, 0x10, 0xb4, 0x4f, 0x32, 0xac, 0x10, 0x3b, 0x47, 0x08, + 0x45, 0x0f, 0x53, 0x32, 0xf4, 0x3c, 0x42, 0xaf, 0x26, 0xe1, 0x44, 0x2e, + 0x12, 0x39, 0x5a, 0x47, 0xfc, 0x88, 0x5d, 0x23, 0x08, 0xda, 0x04, 0x3f, + 0x59, 0x48, 0xd1, 0x71, 0x90, 0x18, 0xc1, 0xd2, 0x0b, 0xd9, 0xb4, 0xca, + 0xda, 0xb5, 0x86, 0xdc, 0x88, 0x2e, 0xc0, 0x9a, 0x6f, 0x01, 0x9e, 0xaa, + 0x96, 0xee, 0xbc, 0xa6, 0x96, 0x80, 0xe0, 0xc0, 0x10, 0x97, 0x89, 0xd6, + 0x15, 0xe7, 0x05, 0x49, 0x9b, 0xa4, 0x29, 0xe6, 0x06, 0x57, 0xbe, 0xf0, + 0xb6, 0x55, 0x08, 0x3f, 0x5a, 0x15, 0xad, 0xfc, 0x10, 0x13, 0x16, 0x0e, + 0xe5, 0xa7, 0x97, 0xfd, 0x82, 0x5d, 0x2c, 0x35, 0xd0, 0x7e, 0x71, 0x2c, + 0x22, 0xc2, 0x6b, 0xce, 0x0e, 0x94, 0x69, 0xc7, 0xce, 0xb0, 0xa0, 0x82, + 0x11, 0x26, 0xb1, 0x59, 0x3e, 0xc4, 0x41, 0x53, 0xa0, 0xda, 0xe7, 0xe0, + 0xaf, 0x39, 0xae, 0x80, 0x1a, 0x2b, 0x33, 0x33, 0x10, 0x09, 0x62, 0x8b, + 0x37, 0x13, 0x26, 0x37, 0x2a, 0xbd, 0xe5, 0x01, 0x65, 0xe2, 0x01, 0x54, + 0xe1, 0x40, 0x24, 0xe7, 0xa4, 0xef, 0x01, 0xa8, 0x05, 0x39, 0xf9, 0x97, + 0x8d, 0x07, 0x26, 0x63, 0x10, 0xe0, 0xb1, 0xac, 0x25, 0xba, 0x02, 0x3c, + 0x81, 0xc2, 0xe1, 0x32, 0xa1, 0x20, 0xc8, 0x28, 0x08, 0xee, 0x67, 0xe1, + 0x85, 0x9d, 0xf6, 0x9c, 0x02, 0x13, 0x17, 0x95, 0x98, 0x1d, 0x96, 0xde, + 0x07, 0xe0, 0x2c, 0xbe, 0x38, 0x9a, 0x04, 0x1c, 0xac, 0xf4, 0x94, 0x42, + 0x35, 0x1b, 0x86, 0xb1, 0xd5, 0xac, 0x27, 0xdf, 0xfe, 0xe0, 0x10, 0x41, + 0x10, 0x75, 0x10, 0xe7, 0x09, 0xe7, 0xde, 0x5e, 0x50, 0x15, 0x43, 0x24, + 0x46, 0xdf, 0x14, 0xb1, 0x04, 0x85, 0x27, 0x6a, 0xdf, 0xce, 0x05, 0xa0, + 0xe9, 0x93, 0x4b, 0x17, 0x43, 0xe6, 0x92, 0x94, 0x18, 0x71, 0xae, 0x1c, + 0x64, 0x56, 0x93, 0xac, 0xc5, 0x2b, 0x8c, 0xe3, 0xce, 0x30, 0x90, 0x13, + 0x24, 0x3a, 0xde, 0x1d, 0x8d, 0xf4, 0x80, 0xf7, 0xd6, 0x0f, 0x26, 0xdc, + 0xfd, 0x10, 0x08, 0xd4, 0xce, 0x8f, 0xe9, 0x17, 0x44, 0xd4, 0x54, 0xe2, + 0x43, 0x73, 0x38, 0xf4, 0x45, 0xf3, 0x80, 0xc2, 0xb2, 0x50, 0x5a, 0x44, + 0x16, 0xd2, 0x25, 0x8c, 0x46, 0x1e, 0x70, 0x1e, 0x58, 0xe6, 0x1b, 0x69, + 0x94, 0x1d, 0x93, 0x26, 0x88, 0xc9, 0xe2, 0x03, 0x4d, 0xd4, 0x43, 0x8a, + 0xd5, 0x9f, 0x54, 0x1a, 0x64, 0x11, 0x1c, 0x04, 0x46, 0x06, 0x01, 0xb0, + 0x18, 0x1f, 0x61, 0x58, 0x99, 0x77, 0xe8, 0x71, 0x78, 0xfd, 0xb5, 0x7f, + 0xde, 0x21, 0x93, 0xd0, 0x50, 0x4c, 0x62, 0xc4, 0xa8, 0x30, 0x77, 0x6a, + 0x3f, 0xad, 0xe0, 0xdc, 0x35, 0xcd, 0x20, 0x2b, 0xd1, 0xe6, 0x28, 0xe9, + 0x4a, 0x53, 0xde, 0x7b, 0xeb, 0x0d, 0x63, 0xd6, 0x0e, 0x2f, 0x48, 0x34, + 0x4a, 0xa8, 0xdf, 0x26, 0x02, 0xb3, 0x2c, 0xd0, 0x0d, 0x4c, 0x30, 0x63, + 0x30, 0xd1, 0xde, 0x20, 0x80, 0x5f, 0x31, 0x8e, 0xb8, 0x70, 0x9c, 0xa4, + 0x5e, 0xd0, 0x89, 0xb3, 0xbe, 0x54, 0x27, 0x2e, 0x30, 0xad, 0xc4, 0x03, + 0x2d, 0x9d, 0x8c, 0x5a, 0x98, 0x1a, 0xc2, 0x12, 0x28, 0xf1, 0x6a, 0x7c, + 0xe0, 0xa1, 0x16, 0x6d, 0x59, 0x81, 0x20, 0x4d, 0x0e, 0x09, 0x1b, 0x4a, + 0x41, 0x70, 0x62, 0x02, 0xa2, 0xb7, 0xdb, 0xec, 0x84, 0x1a, 0xa0, 0x1d, + 0x88, 0x68, 0x22, 0x75, 0x80, 0x20, 0x31, 0xb1, 0xd4, 0xbd, 0xe0, 0xca, + 0x00, 0x90, 0x5d, 0x87, 0x20, 0x6d, 0xfa, 0x85, 0x1b, 0x01, 0x29, 0x6d, + 0x06, 0x67, 0xe2, 0x33, 0xfd, 0x19, 0x97, 0xa4, 0xc0, 0x37, 0x04, 0x27, + 0x7f, 0xa0, 0x96, 0x7a, 0x40, 0x48, 0x64, 0x29, 0x98, 0x43, 0xda, 0x8f, + 0x48, 0xee, 0xe5, 0x67, 0xb4, 0xab, 0xfa, 0x00, 0xf3, 0x0a, 0x00, 0xa1, + 0xbb, 0xd4, 0xc4, 0x45, 0x2b, 0xe6, 0x1d, 0xd8, 0x9a, 0x15, 0xc1, 0x26, + 0xb0, 0x20, 0xa4, 0x08, 0x91, 0x82, 0xab, 0x12, 0xc0, 0x41, 0x2e, 0xfc, + 0xc4, 0x08, 0xdf, 0xea, 0x49, 0x98, 0x4d, 0xed, 0xd1, 0xf6, 0x80, 0x9b, + 0x6d, 0x48, 0xaf, 0xc0, 0x86, 0x06, 0x70, 0xd8, 0x7c, 0x7c, 0x13, 0x70, + 0x05, 0xb1, 0xab, 0x18, 0xed, 0xdb, 0x88, 0x24, 0x80, 0x83, 0x31, 0x83, + 0x79, 0x8a, 0x81, 0xa8, 0x42, 0x31, 0x5c, 0x55, 0x29, 0xa8, 0x89, 0x42, + 0x3d, 0x34, 0x84, 0x94, 0xbe, 0x80, 0x59, 0x10, 0x15, 0x2d, 0x47, 0x5f, + 0xa0, 0xf7, 0x8b, 0x8c, 0x66, 0x52, 0x8e, 0x53, 0xcf, 0xd6, 0x15, 0x93, + 0xb0, 0x8a, 0x81, 0x4a, 0xbd, 0x79, 0x86, 0x2c, 0x85, 0x05, 0x26, 0xc6, + 0xb5, 0x2e, 0x6c, 0x94, 0xf7, 0xd6, 0x19, 0x8d, 0xc1, 0xee, 0x64, 0x08, + 0x00, 0x00, 0x00, 0x40, 0x50, 0x03, 0x4f, 0xb4, 0x1b, 0x60, 0x91, 0x30, + 0x44, 0x3a, 0x12, 0xe0, 0x11, 0xf3, 0x11, 0xf4, 0xf4, 0x10, 0x24, 0xd1, + 0xc1, 0x5f, 0x26, 0xbf, 0xc8, 0xef, 0x20, 0x2c, 0xc5, 0x7f, 0x93, 0x32, + 0x09, 0x07, 0x53, 0x49, 0xd1, 0xf4, 0xcc, 0xaf, 0xa0, 0xdb, 0x13, 0x48, + 0x22, 0xaf, 0xa6, 0x0c, 0xb7, 0x01, 0x99, 0x0f, 0x68, 0x8a, 0x27, 0xe1, + 0x96, 0xc8, 0x8e, 0xe0, 0x83, 0xaf, 0x94, 0x01, 0x6d, 0x26, 0x6d, 0xb1, + 0x03, 0x50, 0xd8, 0xab, 0x5e, 0x9b, 0xc0, 0x51, 0xb8, 0x48, 0xa8, 0x14, + 0x21, 0xa0, 0xfc, 0xfd, 0xb2, 0x67, 0x04, 0x77, 0x1c, 0x8e, 0x63, 0x50, + 0xd2, 0x99, 0xbd, 0xae, 0x0e, 0x88, 0xc7, 0x93, 0x37, 0xf3, 0x69, 0x61, + 0x54, 0x50, 0xf6, 0x8a, 0x39, 0xa4, 0xd3, 0xe9, 0x88, 0xaf, 0xac, 0xc6, + 0x91, 0xac, 0x4b, 0x64, 0xcc, 0x62, 0x60, 0xe6, 0xa1, 0x22, 0x91, 0xb7, + 0x88, 0x07, 0x30, 0x7a, 0x19, 0xb2, 0x03, 0x2b, 0x48, 0x07, 0xd3, 0x30, + 0xf5, 0x8e, 0x5a, 0xae, 0x1e, 0x91, 0x01, 0x06, 0x2a, 0xbc, 0x83, 0xf9, + 0x2f, 0xb8, 0x5d, 0x7f, 0x01, 0xb4, 0x86, 0xec, 0x10, 0x81, 0x33, 0xb9, + 0xd2, 0x04, 0x85, 0x64, 0x88, 0xd5, 0xcc, 0xbb, 0xc3, 0x89, 0x94, 0x20, + 0x8d, 0x3e, 0xb9, 0x80, 0xae, 0x3e, 0x82, 0x8f, 0xd3, 0x49, 0xcc, 0x05, + 0x4d, 0x23, 0x70, 0x55, 0x88, 0x6e, 0x62, 0x0a, 0xa4, 0x68, 0x04, 0xa0, + 0xb0, 0xce, 0x81, 0x98, 0x1a, 0x27, 0xf2, 0x0f, 0xba, 0x23, 0x48, 0x16, + 0xca, 0x00, 0x5a, 0x50, 0x90, 0xc3, 0x06, 0x0a, 0x8a, 0x28, 0x60, 0x96, + 0x4e, 0x9c, 0x7d, 0x34, 0x9b, 0x4b, 0x2a, 0x67, 0xeb, 0xc7, 0x81, 0x28, + 0x2e, 0x6b, 0xa4, 0x01, 0x98, 0x07, 0x44, 0x60, 0x4c, 0xaf, 0xd4, 0xfd, + 0xe0, 0x09, 0xe0, 0xc2, 0xd6, 0x02, 0x06, 0x2c, 0xb8, 0x45, 0xfd, 0x4b, + 0x0d, 0xbe, 0x87, 0xc0, 0x31, 0xf5, 0x75, 0x06, 0x90, 0x5c, 0x55, 0x16, + 0xe3, 0xe8, 0x07, 0xfb, 0x04, 0x4c, 0x05, 0x62, 0xd7, 0x88, 0x09, 0x02, + 0xa1, 0x80, 0x3e, 0xf0, 0x88, 0x01, 0x11, 0x2c, 0x11, 0x0e, 0xa4, 0x96, + 0x12, 0x59, 0xee, 0x86, 0x8f, 0xd3, 0x47, 0xe0, 0x39, 0xf1, 0xe5, 0x78, + 0x87, 0x3b, 0x7d, 0x46, 0x61, 0x32, 0x12, 0x58, 0x30, 0x82, 0x7c, 0x15, + 0x9d, 0xdb, 0xfd, 0xf2, 0xf9, 0x0f, 0x56, 0x84, 0x42, 0xa8, 0x47, 0xd1, + 0x68, 0x7e, 0x9a, 0x7d, 0x73, 0xe0, 0x30, 0x46, 0xcf, 0xd0, 0x41, 0x33, + 0x05, 0x40, 0xfe, 0xd2, 0x80, 0x95, 0x47, 0xc1, 0x3f, 0x67, 0xfe, 0x00, + 0x04, 0xa1, 0xba, 0xea, 0x08, 0x1d, 0xd1, 0x11, 0x1e, 0x05, 0x17, 0xd5, + 0x7d, 0x0c, 0x5f, 0x40, 0x3e, 0xa4, 0xbb, 0x7a, 0x11, 0x93, 0xf8, 0x0f, + 0xd6, 0xf0, 0x04, 0x43, 0xff, 0x00, 0x04, 0x2a, 0x75, 0x02, 0xcb, 0x43, + 0xd0, 0xfe, 0xc6, 0x9f, 0x45, 0x14, 0x5f, 0x42, 0x8b, 0xe8, 0xa2, 0xfa, + 0x95, 0xfd, 0x03, 0xd5, 0x17, 0x41, 0xa9, 0x95, 0x5b, 0x88, 0x25, 0xcc, + 0x6e, 0x72, 0x7c, 0x86, 0x9f, 0xf8, 0x40, 0x72, 0x59, 0x7f, 0x34, 0xf9, + 0x98, 0x08, 0x30, 0x99, 0x00, 0x79, 0x42, 0x13, 0xad, 0xf0, 0xd2, 0x03, + 0x95, 0x00, 0x17, 0x9e, 0x40, 0xeb, 0x5f, 0x94, 0x08, 0x6a, 0x1c, 0xc0, + 0x36, 0x87, 0x54, 0x3f, 0x30, 0x17, 0xe2, 0x77, 0x80, 0xdf, 0x27, 0xbc, + 0xf8, 0x7f, 0xe6, 0x15, 0x19, 0x72, 0x07, 0xf4, 0x1a, 0x3f, 0xa4, 0x6e, + 0x64, 0x01, 0xa6, 0x71, 0x20, 0xb8, 0x12, 0x3c, 0xbe, 0x1f, 0xfe, 0xdb, + 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x49, 0x20, 0x00, 0x09, 0x24, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x6f, 0xde, 0xfb, 0xa6, 0xdb, 0x34, + 0xd3, 0x49, 0x26, 0x9b, 0x49, 0xb6, 0xda, 0x6f, 0x0c, 0x00, 0x00, 0x02, + 0x96, 0xf9, 0x34, 0x93, 0x49, 0x34, 0xdb, 0x49, 0xb4, 0x9b, 0x6d, 0x7d, + 0xbb, 0xdb, 0x6d, 0xc6, 0x00, 0x00, 0x15, 0xfc, 0x04, 0x48, 0x21, 0x0c, + 0x52, 0x0c, 0x24, 0x9a, 0x44, 0x06, 0x83, 0x6c, 0x94, 0x54, 0xe0, 0x00, + 0x07, 0xa9, 0x80, 0x03, 0x32, 0x80, 0xda, 0xd9, 0xb6, 0xe7, 0x4d, 0xf4, + 0x93, 0x4d, 0x34, 0x25, 0xe7, 0x40, 0x00, 0x18, 0x5a, 0x52, 0x4b, 0x00, + 0xf7, 0xff, 0x00, 0xef, 0xb7, 0xdf, 0xfd, 0xb6, 0xfb, 0x77, 0xba, 0x36, + 0x27, 0x00, 0x00, 0xd3, 0x28, 0x7b, 0x03, 0x6d, 0xba, 0x00, 0xfd, 0x48, + 0x84, 0xc9, 0x9c, 0xe6, 0x03, 0xf9, 0x5b, 0xdc, 0x00, 0x01, 0x0d, 0x8b, + 0x6c, 0x4d, 0xf2, 0x77, 0x1e, 0x67, 0x31, 0x4f, 0x16, 0xad, 0xac, 0x09, + 0x6c, 0xe3, 0x50, 0x00, 0x0c, 0x36, 0x2d, 0xb8, 0x9f, 0xd9, 0x94, 0x3d, + 0x40, 0x89, 0x14, 0xc8, 0xba, 0x01, 0xaf, 0xf0, 0x2e, 0xc0, 0x00, 0x34, + 0x41, 0xbe, 0xf1, 0x7b, 0xaf, 0xcd, 0xf4, 0xb2, 0x07, 0xf2, 0x22, 0x99, + 0xc5, 0xff, 0x00, 0xce, 0xf5, 0x00, 0x00, 0x61, 0x08, 0xdb, 0x76, 0x0b, + 0xbf, 0x77, 0xf6, 0xef, 0x7d, 0xb7, 0xdf, 0xee, 0xbf, 0xff, 0x00, 0xf9, + 0xe4, 0x00, 0x01, 0xcc, 0x2b, 0xef, 0x65, 0x96, 0xdb, 0x2d, 0x96, 0xc9, + 0x65, 0xb2, 0x00, 0x24, 0x80, 0x6f, 0xd3, 0xb4, 0x00, 0x04, 0x30, 0x7f, + 0xdd, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xd8, + 0xbe, 0x3a, 0x40, 0x00, 0x30, 0x40, 0xfb, 0x76, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x60, 0xf8, 0x3b, 0x00, 0x00, 0x51, + 0x07, 0xcf, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xab, 0xe5, 0xec, 0x00, 0x01, 0x65, 0x2f, 0xaf, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x0f, 0xce, 0xb0, 0x00, + 0x06, 0x90, 0xfe, 0xbd, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xd8, 0x3f, 0x5e, 0x50, 0x00, 0x32, 0xd1, 0x9a, 0xf6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x60, 0xf8, 0xfe, + 0x80, 0x00, 0xcb, 0x4e, 0xea, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xa3, 0x65, 0xf9, 0x00, 0x01, 0x65, 0x3d, 0x2b, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x8f, + 0xd6, 0x84, 0x00, 0x05, 0xb0, 0xbc, 0xad, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xda, 0x3f, 0x7a, 0x80, 0x00, 0x16, 0x43, + 0x93, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x65, 0xdb, 0x3a, 0x00, 0x00, 0xc9, 0x3e, 0xca, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0x93, 0xec, 0xaa, 0x00, 0x03, + 0x35, 0xe3, 0x2b, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xcf, 0x8b, 0x80, 0x00, 0x04, 0xb3, 0xee, 0xad, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x37, 0x4a, 0x90, + 0x00, 0x12, 0x4c, 0x7a, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6c, 0xf4, 0xaa, 0x40, 0x00, 0x8f, 0x13, 0xea, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0x97, 0xf6, + 0xa9, 0x00, 0x02, 0x6d, 0x4b, 0xab, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x5f, 0xd2, 0xa0, 0x00, 0x09, 0x9b, 0xdf, + 0xad, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xd9, + 0x3e, 0x2a, 0x90, 0x00, 0x25, 0xd5, 0x73, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x64, 0xd8, 0xe8, 0x00, 0x00, 0x07, + 0x33, 0xce, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0x97, 0x72, 0xe8, 0x00, 0x00, 0x16, 0x6f, 0xab, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x4e, 0xc3, 0xc0, 0x00, + 0x01, 0x59, 0xad, 0xad, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x3b, 0xba, 0xa0, 0x00, 0x01, 0x66, 0xbe, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xda, 0x38, + 0xc0, 0x00, 0x97, 0xd8, 0xdc, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0x97, 0xea, 0xab, 0x00, 0x00, 0x57, 0x47, 0x3b, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x4f, + 0xa3, 0xa4, 0x00, 0x00, 0xde, 0x0e, 0xad, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, + 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xd9, 0xfd, 0xaa, 0x80, 0x00, 0x02, 0xca, + 0xff, 0x00, 0x36, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, + 0xdb, 0x66, 0xc6, 0xe2, 0x40, 0x00, 0x01, 0xe4, 0xde, 0xdb, 0x6d, 0xb6, + 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb3, 0x8b, 0x88, 0x00, + 0x00, 0x47, 0xd3, 0xeb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, + 0xdb, 0x6d, 0xb6, 0xec, 0x4e, 0x60, 0x00, 0x01, 0x93, 0xdd, 0x8d, 0xb6, + 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x79, 0x81, + 0x80, 0x00, 0x03, 0x45, 0x1f, 0x36, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, + 0xdb, 0x6d, 0xb6, 0xdb, 0x6e, 0xca, 0x5f, 0x80, 0x00, 0x1d, 0x6d, 0x30, + 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0x97, + 0x9b, 0xd6, 0x00, 0x00, 0x10, 0xe4, 0x05, 0x9b, 0x49, 0xa4, 0x9b, 0x4d, + 0x34, 0x9a, 0x6d, 0x24, 0x9a, 0x49, 0x0c, 0x0a, 0xe8, 0x00, 0x00, 0xee, + 0xb9, 0x49, 0x41, 0x88, 0xf6, 0xa8, 0x02, 0x01, 0x20, 0xbd, 0xb7, 0xdb, + 0x69, 0xd9, 0x3f, 0x20, 0x00, 0x04, 0xa8, 0x3d, 0x85, 0x4a, 0x64, 0x02, + 0x80, 0x40, 0x20, 0x86, 0x49, 0xfb, 0x7d, 0xaf, 0x25, 0xf5, 0x00, 0x00, + 0x0c, 0xf8, 0xd2, 0x92, 0x49, 0x90, 0x82, 0x01, 0x20, 0x92, 0x08, 0x20, + 0x11, 0xf8, 0x84, 0x1c, 0xde, 0x00, 0x00, 0x76, 0x71, 0x6b, 0x64, 0xa4, + 0x80, 0x04, 0x00, 0x0a, 0x41, 0x20, 0x91, 0x00, 0xd7, 0x92, 0x2a, 0x48, + 0x00, 0x00, 0x25, 0xeb, 0xbe, 0xb4, 0x42, 0x08, 0x90, 0x50, 0x00, 0x24, + 0x00, 0x11, 0x0f, 0x2e, 0x05, 0xb2, 0x40, 0x00, 0x00, 0x26, 0x84, 0xde, + 0xc1, 0x44, 0x36, 0x70, 0x40, 0x14, 0x1a, 0x41, 0x26, 0xa6, 0x14, 0x39, + 0x44, 0x00, 0x00, 0x03, 0xbb, 0xf3, 0x7b, 0x69, 0xb6, 0x08, 0x45, 0x10, + 0xd8, 0x01, 0x04, 0x12, 0x0b, 0x26, 0xb6, 0xc0, 0x00, 0x00, 0x04, 0xed, + 0x3b, 0xb7, 0x86, 0xe2, 0x41, 0x14, 0x11, 0x09, 0xa4, 0x00, 0x40, 0x64, + 0x95, 0xf6, 0xc0, 0x00, 0x00, 0x24, 0x36, 0xc7, 0xda, 0x4a, 0x05, 0x92, + 0x50, 0x00, 0x04, 0x12, 0x09, 0x20, 0x13, 0x7e, 0xde, 0x00, 0x00, 0x00, + 0x08, 0x48, 0x37, 0xfd, 0xa5, 0x92, 0xfb, 0x44, 0xa0, 0xd8, 0x09, 0x34, + 0xd3, 0x0b, 0xdb, 0xc0, 0x00, 0x00, 0x00, 0x15, 0x86, 0x2b, 0xf7, 0xd7, + 0x7d, 0xb6, 0x93, 0xe3, 0x7d, 0xfa, 0xcb, 0x49, 0xb9, 0x2e, 0x80, 0x00, + 0x00, 0x00, 0x3f, 0xd3, 0x7f, 0x9b, 0xed, 0xb6, 0xdb, 0x6d, 0xf7, 0xfe, + 0xdf, 0x2d, 0x81, 0xfe, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x64, 0xe4, 0xd7, + 0xdf, 0xbf, 0xff, 0x00, 0x6f, 0xf6, 0xfb, 0xff, 0x00, 0xf6, 0xf2, 0x86, + 0xda, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x75, 0xeb, 0xbe, 0xdb, 0x7d, + 0xa6, 0xfb, 0x7f, 0xb6, 0xf7, 0xef, 0x1b, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x34, 0xcf, 0xda, 0xfd, 0xff, 0x00, 0xdb, 0x6f, 0xb7, 0xdb, + 0xfd, 0xd1, 0x4e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x5c, 0xd6, + 0xdd, 0xbe, 0xdf, 0x7b, 0xae, 0xdf, 0xef, 0xb6, 0x15, 0x84, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4c, 0x19, 0x74, 0xf6, 0xff, 0x00, 0xfd, + 0xbf, 0x4d, 0xbe, 0xfa, 0x4b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xa5, 0x64, 0xb7, 0xcd, 0x26, 0xb2, 0xff, 0x00, 0xf4, 0xdb, 0xe9, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x4f, 0xb6, 0xd9, + 0x65, 0xb2, 0x5e, 0x37, 0xff, 0x00, 0x6c, 0x6c, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6b, 0x62, 0xc8, 0x2d, 0xb6, 0x80, 0x65, 0x9b, + 0x6f, 0xf0, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0x99, 0x60, 0x34, 0x10, 0x02, 0x12, 0xdb, 0x7e, 0xc9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x24, 0x90, 0x00, 0x49, 0x22, + 0x89, 0x6d, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd6, 0xd1, 0x08, 0x20, 0x80, 0x6d, 0x92, 0xde, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x41, 0x00, + 0x00, 0x09, 0x12, 0xcb, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0xa4, 0x90, 0x80, 0x01, 0x36, 0xcb, 0x76, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf6, + 0xd8, 0x40, 0x22, 0xc9, 0x64, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5b, 0x64, 0xb6, 0x59, 0x37, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0x00, 0xff, 0x00, 0xf6, 0x99, 0xfb, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc4, 0x00, 0x20, 0x11, 0x00, 0x01, + 0x04, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x11, 0x20, 0x31, 0x10, 0x30, 0x50, 0x40, 0x21, + 0x41, 0x60, 0x70, 0xff, 0xda, 0x00, 0x08, 0x01, 0x03, 0x01, 0x01, 0x3f, + 0x10, 0xfe, 0xa1, 0xd3, 0xf2, 0x1f, 0x41, 0x3c, 0xa7, 0x40, 0xbc, 0xdd, + 0x03, 0xc8, 0x7d, 0x03, 0x90, 0x3e, 0x71, 0xc8, 0xc0, 0xb9, 0x1d, 0x21, + 0x3a, 0x74, 0x6b, 0xdc, 0x70, 0x2e, 0x47, 0x40, 0x89, 0xc0, 0xc9, 0xa4, + 0x30, 0xd0, 0x34, 0x86, 0x7f, 0x53, 0x61, 0xb5, 0x1c, 0x0b, 0xdc, 0x11, + 0xc8, 0x47, 0x21, 0x1c, 0x0c, 0x9c, 0x32, 0x38, 0x18, 0x08, 0x9c, 0x02, + 0x8e, 0x1a, 0x67, 0x02, 0xf7, 0x04, 0x72, 0x11, 0x81, 0xac, 0x0c, 0x9c, + 0x3a, 0x3f, 0x60, 0x2d, 0x1c, 0x04, 0x70, 0xe8, 0xc8, 0xe0, 0x5e, 0xe0, + 0x88, 0x7c, 0xb2, 0x30, 0x35, 0x80, 0x8d, 0xab, 0x47, 0x26, 0x90, 0xc9, + 0xb4, 0xf9, 0x39, 0xb9, 0x1c, 0x0b, 0x91, 0xd2, 0xf9, 0x7f, 0x71, 0xc7, + 0xec, 0x8e, 0xc6, 0x4d, 0x36, 0x83, 0x26, 0x4c, 0x99, 0x32, 0x64, 0xc9, + 0x93, 0x26, 0x4c, 0x99, 0x32, 0x68, 0x9c, 0x09, 0x19, 0x8f, 0x79, 0xf9, + 0x03, 0x8f, 0xdd, 0xa2, 0xb8, 0x63, 0x81, 0xb4, 0x57, 0x0c, 0x70, 0x36, + 0x8a, 0xe1, 0x8e, 0x04, 0x8c, 0xc5, 0x7b, 0xe9, 0x03, 0xbc, 0x57, 0x48, + 0x2b, 0xdf, 0x49, 0x0d, 0xb4, 0xe1, 0x8e, 0xf1, 0x5e, 0xfa, 0x40, 0xef, + 0xa7, 0xbe, 0x90, 0x3b, 0xe9, 0xef, 0xa4, 0x0e, 0xf1, 0x5e, 0xfa, 0x40, + 0xeb, 0x10, 0xa7, 0xbe, 0x90, 0x3a, 0x8a, 0x15, 0x0a, 0x7b, 0xe9, 0x03, + 0xac, 0x54, 0x29, 0xef, 0xa4, 0x0e, 0xb1, 0x50, 0xa7, 0xbe, 0x90, 0x3a, + 0x7f, 0x70, 0x20, 0x2b, 0xdf, 0x48, 0x1d, 0x26, 0xf0, 0x2a, 0x14, 0xf7, + 0xd2, 0x07, 0x58, 0xa8, 0x53, 0xdf, 0x48, 0x1c, 0x09, 0x9c, 0x0a, 0x80, + 0xaf, 0x79, 0xa8, 0x1c, 0x09, 0x9c, 0x0a, 0x85, 0x3d, 0xf4, 0x81, 0xc0, + 0x99, 0xbc, 0x0a, 0x85, 0x3d, 0xe6, 0xa0, 0x70, 0x26, 0x6f, 0x02, 0xa1, + 0x4f, 0x79, 0xa8, 0x1a, 0xd2, 0x6f, 0x14, 0x80, 0xaf, 0x79, 0xa8, 0x1c, + 0x7e, 0xcc, 0xde, 0x04, 0x07, 0xbc, 0xd4, 0x0e, 0x05, 0xcc, 0xdf, 0x14, + 0x35, 0x03, 0x81, 0x73, 0xb6, 0x04, 0x07, 0xbe, 0x90, 0x38, 0x17, 0x3b, + 0x60, 0x5f, 0x0c, 0x6a, 0x07, 0x02, 0xf4, 0x85, 0xf0, 0xd4, 0x81, 0xc0, + 0xd2, 0x17, 0xc3, 0x1a, 0x81, 0xc0, 0xe6, 0x06, 0xa0, 0x76, 0x1f, 0x99, + 0x1f, 0x13, 0xa7, 0x4e, 0x9d, 0x3a, 0x74, 0xe9, 0xd3, 0xa7, 0x4e, 0x9d, + 0x3a, 0x74, 0xe9, 0xd3, 0xa7, 0x4e, 0x9d, 0x3a, 0x74, 0xe9, 0xd3, 0xa7, + 0x4e, 0x9d, 0x3a, 0x74, 0x7e, 0xf8, 0x0a, 0x71, 0x4e, 0xa5, 0x39, 0x03, + 0x91, 0x33, 0x59, 0x17, 0xc5, 0x39, 0x13, 0x30, 0x1f, 0x47, 0x1c, 0x68, + 0x39, 0x2f, 0xce, 0x7d, 0xb2, 0x0b, 0x1e, 0x30, 0xda, 0x07, 0xe7, 0x14, + 0x69, 0x3f, 0x44, 0x01, 0x63, 0xc5, 0x1a, 0x8d, 0xc0, 0x17, 0xe7, 0x04, + 0x01, 0x6e, 0x18, 0xd6, 0x43, 0xc4, 0x1e, 0x10, 0xd8, 0x10, 0x0a, 0xf8, + 0x03, 0x69, 0x0f, 0x10, 0x78, 0x03, 0x71, 0x1f, 0xb0, 0x1e, 0xf1, 0xe0, + 0x21, 0xa0, 0x0f, 0x38, 0xc0, 0x7b, 0x47, 0x88, 0x88, 0x0f, 0x58, 0xf2, + 0x11, 0x91, 0xd0, 0x21, 0xb0, 0x3f, 0xa3, 0x21, 0xf0, 0x3a, 0x27, 0xa6, + 0x7a, 0x75, 0xfd, 0x29, 0xe9, 0xd6, 0xf3, 0xfe, 0x51, 0xff, 0xc4, 0x00, + 0x20, 0x11, 0x00, 0x01, 0x05, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x11, 0x20, 0x31, + 0x21, 0x30, 0x40, 0x41, 0x50, 0x51, 0x60, 0xff, 0xda, 0x00, 0x08, 0x01, + 0x02, 0x01, 0x01, 0x3f, 0x10, 0xff, 0x00, 0x50, 0x3f, 0xa5, 0x01, 0x40, + 0x50, 0x14, 0x05, 0x01, 0x40, 0x50, 0x14, 0x05, 0x01, 0x40, 0x50, 0x14, + 0x05, 0x0a, 0x02, 0x8f, 0x4c, 0x02, 0x8f, 0xf1, 0xd1, 0xf4, 0xf5, 0x4b, + 0xca, 0x95, 0x2a, 0x54, 0xa9, 0x69, 0x52, 0xa6, 0x90, 0x82, 0x0d, 0xc0, + 0xe2, 0x11, 0x0d, 0x2f, 0x2a, 0x5a, 0x54, 0x95, 0x25, 0xa4, 0xa9, 0x52, + 0xa4, 0xa9, 0xbc, 0xf7, 0xca, 0x05, 0x00, 0xc3, 0xc5, 0x86, 0xb9, 0x73, + 0x63, 0xf8, 0x25, 0x2d, 0x8b, 0x0d, 0xe9, 0x2b, 0x1b, 0x5f, 0x80, 0xc5, + 0x86, 0xf4, 0x1a, 0x8f, 0xac, 0x71, 0x72, 0xa4, 0xae, 0x45, 0x69, 0xa5, + 0x07, 0xd2, 0x3a, 0xff, 0x00, 0x14, 0xcb, 0x4c, 0x20, 0xbe, 0xb0, 0x36, + 0xd3, 0x62, 0xc3, 0x7a, 0x30, 0x86, 0x39, 0xc5, 0x82, 0xe7, 0x10, 0x72, + 0xc7, 0x57, 0x10, 0x89, 0x58, 0x69, 0x40, 0xcb, 0x12, 0x87, 0x28, 0xe2, + 0x02, 0x58, 0x8f, 0xac, 0xfa, 0x89, 0xe7, 0x84, 0x79, 0x36, 0xd3, 0x1c, + 0xb0, 0xde, 0x83, 0x88, 0x63, 0x9c, 0x58, 0x7f, 0x8b, 0x4c, 0x54, 0x20, + 0x25, 0x0d, 0x68, 0x43, 0x83, 0x2f, 0x88, 0xe2, 0x05, 0x8e, 0x43, 0x88, + 0x84, 0x04, 0xdb, 0x4c, 0x72, 0xc3, 0x7a, 0x0e, 0x20, 0x61, 0x4a, 0x95, + 0x3f, 0x17, 0xd3, 0xfc, 0x28, 0x6b, 0x86, 0x04, 0x44, 0x21, 0xcf, 0x2d, + 0xca, 0xd5, 0x03, 0x11, 0x0d, 0x08, 0x31, 0xfe, 0x2c, 0xb6, 0x98, 0xe5, + 0x86, 0xf4, 0xc3, 0xc7, 0xbb, 0x4c, 0x72, 0xc3, 0x7b, 0x25, 0xe5, 0x4b, + 0x4a, 0x95, 0x2d, 0x2a, 0x54, 0xa9, 0x52, 0xa5, 0xa5, 0x4a, 0x95, 0x2a, + 0x54, 0xa9, 0x52, 0xa6, 0xba, 0x63, 0x96, 0x1a, 0xff, 0x00, 0x68, 0x78, + 0x3e, 0xf0, 0x24, 0x53, 0x4c, 0x72, 0xc3, 0x5c, 0xb8, 0xd5, 0xaf, 0xc3, + 0xe9, 0x8e, 0x58, 0x6d, 0x86, 0xad, 0x7e, 0x1f, 0x4c, 0x72, 0xc3, 0x6c, + 0x35, 0x6b, 0xdf, 0xba, 0x69, 0x8e, 0x58, 0x6d, 0x86, 0xad, 0x7b, 0xf7, + 0x4d, 0x31, 0xb0, 0xdb, 0x0d, 0x5a, 0xf7, 0xea, 0x9a, 0x63, 0x61, 0xb6, + 0x0b, 0x5e, 0xfd, 0xd0, 0x6b, 0x1c, 0xb0, 0xdb, 0x05, 0xaf, 0x7e, 0xe8, + 0x35, 0x8d, 0x86, 0xb9, 0x7f, 0xab, 0x5e, 0xfd, 0x53, 0x5d, 0x03, 0x5c, + 0xeb, 0x85, 0xaf, 0x7e, 0xa9, 0xae, 0x81, 0xae, 0x76, 0x9a, 0xf7, 0xea, + 0x9a, 0x63, 0x61, 0xae, 0x76, 0x9a, 0xf7, 0xea, 0x9a, 0xe8, 0x0e, 0x76, + 0x9a, 0xf7, 0xea, 0x9a, 0x63, 0x60, 0xfa, 0xa6, 0xbd, 0xfa, 0xa6, 0x98, + 0xf4, 0xea, 0x9a, 0xf7, 0xea, 0x9a, 0x63, 0xd3, 0xaa, 0x6b, 0xdf, 0xaa, + 0x69, 0x8f, 0x4e, 0xa9, 0xaf, 0x7e, 0xa9, 0xa6, 0x37, 0x0d, 0xaa, 0x6b, + 0xdf, 0xaa, 0x6b, 0xa4, 0x63, 0x6a, 0x9a, 0xf7, 0xea, 0x9a, 0x63, 0x71, + 0x8d, 0xaa, 0x6b, 0xdf, 0xaa, 0x69, 0x8e, 0x5c, 0x63, 0x6a, 0x9a, 0xf7, + 0xea, 0x9a, 0x63, 0x97, 0x18, 0xda, 0xa6, 0xbd, 0xfa, 0x45, 0xf4, 0xc7, + 0x2e, 0x31, 0xb7, 0x4d, 0x7b, 0xf5, 0x4d, 0x31, 0xcb, 0xe1, 0xb7, 0x4d, + 0x7b, 0xf5, 0x4d, 0x31, 0xcb, 0xe1, 0xb7, 0x4d, 0x7b, 0xf4, 0x8d, 0x58, + 0xbe, 0x2d, 0xd7, 0xbf, 0x48, 0xd5, 0x8b, 0xe7, 0xf1, 0x6d, 0x59, 0x8b, + 0xe5, 0xb1, 0x4d, 0x7b, 0xf4, 0x8e, 0xbe, 0x1b, 0x17, 0xcb, 0x62, 0x9b, + 0xf7, 0xe9, 0x7d, 0x7c, 0x36, 0x6f, 0x96, 0x39, 0xf8, 0x6d, 0x23, 0xae, + 0x1c, 0x36, 0x7f, 0x30, 0xd2, 0x3a, 0xe3, 0x1b, 0x3d, 0x43, 0xc1, 0x73, + 0xc8, 0x50, 0xa0, 0xa8, 0x2a, 0x0a, 0x82, 0xa0, 0xa8, 0x2a, 0x0a, 0x82, + 0xa0, 0xa8, 0x2a, 0x0a, 0x82, 0xa0, 0xa8, 0x2a, 0x0a, 0x82, 0xa1, 0x42, + 0x85, 0x0a, 0x14, 0x28, 0x50, 0xa1, 0x41, 0x50, 0xa1, 0x42, 0x1c, 0x38, + 0x7c, 0xdf, 0x48, 0xb6, 0xa9, 0x25, 0x49, 0x52, 0xa5, 0x49, 0x52, 0xb9, + 0x52, 0xa5, 0xa7, 0xce, 0x39, 0x3d, 0x5d, 0x3f, 0xf7, 0xf9, 0xee, 0xdc, + 0x89, 0x1e, 0xcd, 0xec, 0x6e, 0xe3, 0x68, 0x44, 0x1f, 0xc4, 0x0f, 0xae, + 0x81, 0xc8, 0x71, 0xfb, 0xf8, 0x62, 0x87, 0x7a, 0x0e, 0x43, 0x91, 0x22, + 0x3f, 0x0c, 0x39, 0x3d, 0x25, 0xf2, 0x81, 0x07, 0xf1, 0x71, 0xd2, 0x70, + 0x68, 0x12, 0x3f, 0x04, 0x77, 0x01, 0x91, 0x40, 0x83, 0xef, 0x15, 0x3c, + 0xf5, 0x17, 0xca, 0x11, 0x3e, 0xf1, 0x42, 0x81, 0xd6, 0x50, 0x66, 0xa1, + 0xf7, 0xda, 0x2a, 0x52, 0x7b, 0x0e, 0x44, 0x50, 0xf3, 0xed, 0x14, 0x26, + 0x07, 0x68, 0x30, 0x65, 0x4c, 0xd0, 0x3d, 0x62, 0xa4, 0xc9, 0xee, 0xf9, + 0x50, 0x89, 0x47, 0xdc, 0x4c, 0x0f, 0x01, 0x48, 0xa0, 0x7a, 0x76, 0xa4, + 0xcf, 0x80, 0x18, 0x34, 0x23, 0xd2, 0x28, 0x4c, 0xf8, 0x8a, 0x38, 0xa1, + 0x1e, 0xb2, 0x7e, 0x79, 0x0a, 0x78, 0xf6, 0x89, 0x8f, 0x30, 0x32, 0xc7, + 0xce, 0x1c, 0x99, 0xf3, 0x03, 0x08, 0x19, 0xcf, 0x40, 0x62, 0x67, 0xd0, + 0x0c, 0x31, 0xf3, 0x93, 0xea, 0x28, 0xe1, 0x1e, 0x3c, 0xc4, 0xc7, 0xb0, + 0x19, 0xe3, 0xcb, 0x9c, 0xfb, 0xb4, 0x4f, 0x90, 0x99, 0xf7, 0x03, 0x08, + 0xf8, 0x89, 0xf9, 0xf8, 0x00, 0xfc, 0xf0, 0xe0, 0xfc, 0x2d, 0x13, 0xde, + 0x11, 0x33, 0xf8, 0x40, 0xc2, 0x3d, 0xc4, 0xf1, 0xc7, 0xfb, 0x6f, 0xff, + 0xc4, 0x00, 0x2a, 0x10, 0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, + 0x04, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x21, + 0x31, 0x41, 0x51, 0x61, 0x71, 0x81, 0x91, 0xa1, 0xf0, 0x20, 0xb1, 0xc1, + 0xd1, 0x40, 0xe1, 0xf1, 0x30, 0x50, 0x60, 0xff, 0xda, 0x00, 0x08, 0x01, + 0x01, 0x00, 0x01, 0x3f, 0x10, 0xff, 0x00, 0xf1, 0x09, 0x06, 0xa3, 0xc3, + 0x39, 0xcd, 0x7e, 0xb4, 0xe3, 0xbc, 0x19, 0x9b, 0x3d, 0x9c, 0xbf, 0xf6, + 0x33, 0xfe, 0x83, 0x3f, 0xe8, 0x33, 0x74, 0xdf, 0xee, 0xcf, 0xde, 0xf9, + 0x62, 0x5c, 0x9f, 0xba, 0xc1, 0xb8, 0x7f, 0x96, 0x7f, 0xdb, 0x67, 0xfd, + 0x76, 0x4b, 0xfb, 0x19, 0xb2, 0x6c, 0xf6, 0x71, 0x09, 0x4a, 0xf1, 0xac, + 0x9b, 0x37, 0x7b, 0x66, 0x91, 0xd6, 0xfa, 0xb2, 0x45, 0xfb, 0xec, 0xff, + 0x00, 0xaa, 0xcb, 0x0f, 0x47, 0xa3, 0x9f, 0xf6, 0x19, 0xb2, 0x6e, 0xf1, + 0x3f, 0xf3, 0xb8, 0x50, 0xf9, 0xb1, 0x04, 0x35, 0x3c, 0x0f, 0x85, 0x12, + 0x63, 0xa5, 0x52, 0xa4, 0x17, 0xd5, 0x7d, 0xf1, 0x81, 0x67, 0x4b, 0x03, + 0xf0, 0x30, 0xda, 0x11, 0xef, 0x5f, 0xdb, 0x2c, 0x59, 0xde, 0x41, 0x95, + 0xf9, 0x0f, 0xf7, 0x30, 0x62, 0xfc, 0xcf, 0xb9, 0xbc, 0x8b, 0xc0, 0xe9, + 0xfe, 0xec, 0x7f, 0x81, 0x42, 0xff, 0x00, 0x7e, 0x2a, 0x03, 0x92, 0x6e, + 0x2f, 0xdf, 0x12, 0x8b, 0xd0, 0x0d, 0xa7, 0xef, 0x8c, 0x94, 0x0f, 0x1f, + 0xdf, 0x30, 0x71, 0xd5, 0xad, 0x1f, 0xd4, 0xeb, 0x05, 0x0b, 0x7f, 0x2a, + 0x81, 0xf7, 0xca, 0x9a, 0x57, 0x9d, 0xaf, 0x82, 0xe5, 0x65, 0xb7, 0x7e, + 0x0f, 0xa5, 0x2e, 0x68, 0xd3, 0xf5, 0x1b, 0xf7, 0xcb, 0xbb, 0x5c, 0x97, + 0x9f, 0xeb, 0x8a, 0x56, 0x8f, 0x4d, 0x9f, 0x7c, 0xd1, 0x22, 0x6a, 0xbc, + 0x1f, 0x5c, 0xbd, 0x50, 0xed, 0xcd, 0xf6, 0x70, 0xa3, 0xa7, 0xcc, 0x30, + 0xd2, 0xa8, 0xd0, 0xb6, 0x1f, 0x4b, 0x8d, 0x68, 0x85, 0xb0, 0xbe, 0xbb, + 0xc5, 0x0b, 0xdc, 0x73, 0x54, 0xf7, 0x1c, 0xe1, 0xe4, 0xe9, 0xe0, 0xf4, + 0x8f, 0xf5, 0x90, 0x21, 0x79, 0xda, 0x5f, 0xdf, 0x9c, 0x3b, 0x41, 0x1f, + 0x08, 0xd7, 0xd7, 0x8c, 0x59, 0x4d, 0x5b, 0xda, 0xe2, 0x9d, 0xf4, 0x82, + 0xef, 0xc9, 0x82, 0xae, 0xbe, 0xd5, 0x37, 0xc9, 0xfe, 0xb1, 0xfd, 0xcb, + 0xc7, 0x13, 0x8e, 0xb7, 0x94, 0xec, 0x7f, 0x38, 0xb8, 0x5d, 0xbe, 0x5e, + 0xbe, 0x3d, 0x32, 0xe4, 0x13, 0x9d, 0x37, 0xda, 0xe5, 0x0b, 0x6a, 0xd4, + 0x44, 0x7d, 0xb3, 0xca, 0x91, 0x5a, 0xe7, 0xf6, 0xce, 0x29, 0xfb, 0x6f, + 0xf9, 0x4c, 0xb2, 0xa7, 0x86, 0x83, 0xde, 0xe3, 0x89, 0xd6, 0xef, 0x13, + 0xd7, 0x9c, 0x3d, 0x41, 0x2d, 0x77, 0xd5, 0x3e, 0x9b, 0xf5, 0xc8, 0x29, + 0x10, 0x2a, 0x4e, 0x13, 0xbf, 0x41, 0x51, 0xf3, 0x75, 0xff, 0x00, 0x82, + 0x14, 0x53, 0xe4, 0xe1, 0x98, 0xe0, 0x36, 0xba, 0x91, 0x83, 0x64, 0x50, + 0x58, 0xa8, 0x46, 0x0b, 0xd0, 0x7c, 0xbf, 0x7f, 0xb6, 0x48, 0x58, 0xae, + 0xdc, 0x10, 0x31, 0x3a, 0x5d, 0xb9, 0x56, 0xc0, 0x26, 0x8d, 0x19, 0xe4, + 0x07, 0xd4, 0x62, 0x44, 0x0f, 0x04, 0x99, 0x5d, 0x2e, 0x36, 0x38, 0xe1, + 0x8e, 0x05, 0xe6, 0xcf, 0xa7, 0xed, 0x92, 0x02, 0x2f, 0x7b, 0x3f, 0xcf, + 0xdf, 0x02, 0xdc, 0xdf, 0x00, 0x3e, 0xf8, 0x77, 0xbb, 0xa5, 0x59, 0xf5, + 0x0b, 0xf7, 0xc9, 0x85, 0xc4, 0xa0, 0x2b, 0xc3, 0x8a, 0x70, 0xfe, 0x6b, + 0x3b, 0x66, 0x1e, 0x47, 0x38, 0xda, 0x29, 0x1b, 0xcd, 0xbf, 0xbe, 0x2c, + 0x91, 0x04, 0x96, 0x93, 0xdb, 0xf3, 0x58, 0x45, 0x6f, 0xb2, 0xab, 0x5f, + 0x36, 0xef, 0x26, 0x42, 0x38, 0xf4, 0xfe, 0xb3, 0x66, 0x72, 0x2c, 0xe9, + 0x85, 0x75, 0xc7, 0x2c, 0xe3, 0xfb, 0xc8, 0xce, 0xfe, 0x76, 0xcb, 0x8e, + 0x83, 0x2f, 0x8d, 0x8e, 0xb0, 0x87, 0x49, 0xaa, 0x6c, 0xfd, 0xb3, 0x4e, + 0x31, 0xe0, 0x38, 0xb3, 0x04, 0x7a, 0xbf, 0xcf, 0x18, 0xaf, 0xbd, 0x3a, + 0x6b, 0x7f, 0x9f, 0x19, 0xc3, 0x8a, 0x77, 0x65, 0xc1, 0xc9, 0x65, 0xe7, + 0x50, 0xf8, 0xc0, 0x24, 0xd5, 0xb2, 0x27, 0xed, 0xce, 0x5c, 0xe4, 0x5d, + 0x72, 0xce, 0x6a, 0x0f, 0x51, 0xaf, 0xa5, 0xfa, 0x62, 0xaa, 0x03, 0xcc, + 0x5b, 0xca, 0x00, 0xb0, 0xbc, 0x80, 0x7f, 0x7f, 0xb6, 0x00, 0x37, 0xe7, + 0x10, 0x99, 0x41, 0x49, 0x2e, 0xc0, 0xdb, 0xfd, 0x60, 0x08, 0x7a, 0x5d, + 0x27, 0x7e, 0xbc, 0xff, 0x00, 0xdc, 0x22, 0xf4, 0x16, 0xce, 0x7e, 0xd9, + 0x29, 0xa2, 0xee, 0xce, 0xf0, 0xa3, 0xe7, 0x47, 0xf7, 0x91, 0x4c, 0x06, + 0xef, 0x13, 0x5e, 0x3e, 0x1c, 0x94, 0x14, 0x8d, 0xf0, 0x71, 0x26, 0x2b, + 0x49, 0x1b, 0xdd, 0xaf, 0x6f, 0xf5, 0xb9, 0xe9, 0x8c, 0x6f, 0x40, 0xd5, + 0x73, 0x79, 0x48, 0x8f, 0xb0, 0xf2, 0xfe, 0xab, 0xb1, 0x43, 0x6b, 0xe0, + 0xc2, 0x1a, 0xaa, 0x3a, 0x44, 0xa2, 0xba, 0xd0, 0x11, 0xed, 0x35, 0x6e, + 0x30, 0xc2, 0x9a, 0x00, 0x2b, 0x57, 0x9f, 0xc9, 0x31, 0x9b, 0x90, 0xaa, + 0x9a, 0x6a, 0x57, 0xf3, 0x7f, 0x4a, 0xc4, 0x21, 0x36, 0xe4, 0x38, 0x5f, + 0x06, 0xdc, 0x6a, 0x8f, 0xe1, 0x9b, 0x1b, 0x9d, 0xb8, 0xc0, 0x2a, 0x01, + 0xf1, 0xc6, 0x00, 0x90, 0xf2, 0xe5, 0x14, 0x45, 0xf2, 0x71, 0x86, 0x0d, + 0x44, 0xda, 0x73, 0x86, 0xc2, 0x1a, 0xf6, 0x4f, 0xa6, 0x11, 0x55, 0x5e, + 0x67, 0x1e, 0xf8, 0x82, 0x96, 0x3d, 0x03, 0xf3, 0x95, 0xd3, 0x1f, 0x56, + 0x50, 0xb3, 0x3b, 0x5c, 0x3b, 0x0b, 0xc7, 0x73, 0x08, 0x12, 0x17, 0xc6, + 0x6d, 0xc3, 0x5e, 0x26, 0xf0, 0xcd, 0x13, 0xfb, 0x30, 0x0a, 0x6c, 0x62, + 0x1a, 0x5f, 0x3f, 0xbe, 0x0e, 0xbd, 0xb3, 0xcb, 0xcf, 0xed, 0x94, 0x76, + 0x17, 0x4a, 0xa9, 0x89, 0xe5, 0xb8, 0x51, 0xdb, 0x82, 0x01, 0xd3, 0x0a, + 0xe0, 0xc9, 0x30, 0x11, 0x6b, 0xbf, 0xe7, 0x2f, 0xcc, 0xf8, 0xb7, 0x10, + 0x30, 0x86, 0xe4, 0x9f, 0xbe, 0x3b, 0xb0, 0x6e, 0x3c, 0xe4, 0xe0, 0xb7, + 0xfb, 0xc7, 0x55, 0xb1, 0xa1, 0x77, 0x80, 0x2a, 0x80, 0xe2, 0xf7, 0x9b, + 0x6d, 0x21, 0x5d, 0xfe, 0x5c, 0x47, 0xb0, 0x0f, 0x2e, 0x7f, 0xde, 0x6c, + 0xb6, 0x2a, 0xdc, 0x5a, 0x40, 0x0e, 0xb8, 0xa7, 0x7b, 0xe3, 0x1c, 0x84, + 0xed, 0xa3, 0x19, 0x6b, 0x1b, 0xec, 0x60, 0x38, 0x7b, 0xdb, 0x70, 0xd0, + 0x1a, 0x3d, 0xe0, 0xd3, 0x0a, 0x68, 0x6d, 0x7e, 0x32, 0xe0, 0x86, 0x9b, + 0xdf, 0x1d, 0xf7, 0xd7, 0x3e, 0xb8, 0xc0, 0xd9, 0x53, 0xf0, 0xbb, 0xfd, + 0xbe, 0x3d, 0xb0, 0xd6, 0x61, 0xe2, 0x68, 0x13, 0xf7, 0xfa, 0x5f, 0xa9, + 0x6f, 0x21, 0x63, 0x1a, 0x31, 0x31, 0x95, 0x60, 0xd2, 0x1b, 0xa6, 0xde, + 0x7a, 0xef, 0x00, 0x14, 0x82, 0xe0, 0x4a, 0xa3, 0xd8, 0x47, 0xcf, 0x1e, + 0x99, 0x6d, 0xcf, 0xa1, 0x2a, 0x2e, 0xbe, 0x93, 0x07, 0x6c, 0x28, 0x83, + 0xfd, 0x65, 0xc1, 0x05, 0xe5, 0x7b, 0xc1, 0x20, 0x8a, 0xf2, 0x89, 0x31, + 0xef, 0x41, 0xdf, 0x1c, 0x7c, 0xe0, 0x20, 0x0a, 0x68, 0xa8, 0x62, 0x33, + 0x95, 0xa0, 0xfb, 0x7e, 0xdb, 0xc5, 0xeb, 0xf6, 0xdb, 0x84, 0x15, 0xc6, + 0xe6, 0x00, 0x5e, 0xdb, 0xb9, 0xbe, 0x1f, 0x67, 0xcf, 0xfa, 0xc5, 0x8c, + 0x7e, 0x03, 0x9f, 0x5c, 0x64, 0x3b, 0x80, 0x53, 0xd3, 0xd3, 0x0b, 0xa9, + 0x03, 0xbd, 0x6f, 0x34, 0x42, 0xd3, 0x81, 0x1c, 0x60, 0x54, 0x25, 0x0f, + 0x1a, 0xc6, 0x08, 0x03, 0x51, 0xd6, 0x3e, 0x7b, 0x35, 0xdc, 0xb9, 0x06, + 0x08, 0x9a, 0xac, 0xde, 0x0a, 0x93, 0x44, 0x1c, 0x9c, 0x94, 0xf5, 0x38, + 0x93, 0x00, 0x36, 0x9e, 0x5f, 0x4e, 0x26, 0x1a, 0x4a, 0x22, 0x3e, 0x0c, + 0xe4, 0x80, 0x5b, 0x6f, 0xf1, 0x8b, 0x10, 0x44, 0xc1, 0x2e, 0xf2, 0x80, + 0x29, 0xd1, 0x7b, 0xc7, 0x8c, 0x81, 0x79, 0x2e, 0x33, 0x01, 0xba, 0x8f, + 0xa6, 0x53, 0x14, 0xdf, 0x1e, 0x19, 0x45, 0x51, 0x5f, 0x19, 0x57, 0x43, + 0x47, 0x95, 0xc5, 0xbc, 0x01, 0x25, 0x18, 0xb7, 0x52, 0xb9, 0x6b, 0x07, + 0xb7, 0xec, 0xb9, 0x4a, 0x24, 0xf2, 0x68, 0xc5, 0xd0, 0x65, 0x82, 0xf3, + 0xef, 0x8c, 0xd2, 0x8d, 0x0d, 0x8e, 0xf7, 0x83, 0x9e, 0xa1, 0x77, 0xdb, + 0x9a, 0x00, 0xf7, 0x37, 0x86, 0x2a, 0x95, 0xbe, 0x66, 0x74, 0x83, 0x06, + 0x81, 0xf9, 0x33, 0x43, 0x48, 0x38, 0x4f, 0xcf, 0x19, 0x06, 0x5d, 0x22, + 0x1c, 0xc3, 0xfc, 0xbf, 0x57, 0x48, 0xac, 0x72, 0x0d, 0xa3, 0x83, 0xd5, + 0xbf, 0xae, 0x15, 0x72, 0xa5, 0x3a, 0x63, 0xff, 0x00, 0x3d, 0xae, 0x5a, + 0xb3, 0x2e, 0x1d, 0xe0, 0x1c, 0x9a, 0x2d, 0xfe, 0x98, 0x85, 0x34, 0x01, + 0x45, 0xdf, 0xdb, 0x59, 0xa0, 0x94, 0xb7, 0x12, 0x77, 0xc9, 0x85, 0x33, + 0x40, 0x6e, 0x8d, 0xff, 0x00, 0xbc, 0x05, 0xe9, 0x1c, 0x23, 0xce, 0x78, + 0x7a, 0x07, 0xaa, 0x0d, 0xfc, 0x75, 0x84, 0x00, 0x35, 0x91, 0x6c, 0x8f, + 0x92, 0x3f, 0x38, 0x15, 0x1a, 0xdd, 0x0a, 0x88, 0x7d, 0xc1, 0xf9, 0x98, + 0x0e, 0x61, 0xb7, 0xaa, 0x54, 0xf4, 0x03, 0xf1, 0x82, 0x6c, 0x5a, 0x33, + 0x7d, 0x7c, 0xf9, 0xc2, 0xf4, 0x11, 0xce, 0xbb, 0xcb, 0x70, 0x14, 0xef, + 0x8c, 0xd5, 0x2e, 0xdf, 0xc5, 0xfe, 0xb2, 0x05, 0x57, 0x72, 0x9c, 0x4f, + 0xa6, 0x01, 0xe7, 0x63, 0x36, 0x6d, 0xd8, 0xfa, 0x62, 0xd0, 0x4a, 0x4e, + 0x06, 0x07, 0x6d, 0x6e, 0xb7, 0xdf, 0xb4, 0xc0, 0x42, 0xd9, 0xc6, 0xdc, + 0x0d, 0x74, 0xdf, 0x1b, 0x9e, 0xf9, 0xbe, 0x08, 0xcd, 0xc7, 0xf4, 0x63, + 0xd8, 0x8d, 0x38, 0x53, 0x78, 0x88, 0x79, 0x2c, 0x16, 0x62, 0xa5, 0x50, + 0x0a, 0x78, 0xf4, 0xc1, 0x86, 0x91, 0x97, 0x4c, 0x38, 0x03, 0xbd, 0x2d, + 0x0e, 0x06, 0x9a, 0xa5, 0x77, 0xad, 0x7a, 0x38, 0xb2, 0x0d, 0xbb, 0x17, + 0xfc, 0xca, 0xe8, 0x20, 0xba, 0xef, 0xdf, 0x36, 0x9e, 0x15, 0x56, 0xf2, + 0x7c, 0xe0, 0xed, 0x0a, 0xf9, 0x47, 0xfe, 0xe4, 0x1b, 0x03, 0xd0, 0x61, + 0xe1, 0x3c, 0x1e, 0x4e, 0x50, 0x73, 0x15, 0x2a, 0x6b, 0xd7, 0xcf, 0x8c, + 0x21, 0x88, 0xd2, 0xeb, 0xe7, 0x08, 0x2e, 0xeb, 0x47, 0x83, 0x15, 0xa2, + 0x24, 0xda, 0xbd, 0x3f, 0xc6, 0x46, 0x50, 0x76, 0x6e, 0xf5, 0xfd, 0xe1, + 0x4d, 0x49, 0x53, 0xc6, 0xae, 0xb2, 0x6a, 0x18, 0x96, 0xf2, 0xe0, 0x3f, + 0x8e, 0x19, 0xbf, 0xd4, 0x55, 0x78, 0xca, 0xba, 0x0f, 0xb1, 0xcb, 0x0d, + 0xfd, 0xb1, 0x6e, 0x94, 0xbe, 0x43, 0xbb, 0x3a, 0x96, 0xe0, 0x2f, 0x76, + 0xc7, 0xcb, 0xac, 0x51, 0xc0, 0x14, 0x87, 0xa3, 0xdb, 0x14, 0x57, 0x63, + 0x28, 0x60, 0x90, 0x0d, 0xe5, 0xc5, 0x42, 0x83, 0xe7, 0x8f, 0x18, 0xeb, + 0x5d, 0x8f, 0x90, 0x53, 0xf7, 0x66, 0x86, 0x09, 0x45, 0x60, 0x01, 0xf6, + 0x03, 0x19, 0xdd, 0xe9, 0x80, 0x40, 0xf8, 0x0c, 0xba, 0x34, 0x4d, 0x2e, + 0x12, 0x3f, 0x6c, 0x0f, 0xae, 0x56, 0x27, 0x93, 0x0d, 0x45, 0x95, 0xa8, + 0x81, 0xef, 0xc3, 0xf9, 0xbc, 0x47, 0xad, 0x9d, 0x80, 0xeb, 0x29, 0xc0, + 0x68, 0x62, 0x14, 0x7d, 0x98, 0x36, 0xdf, 0xca, 0x60, 0xf2, 0xa7, 0x8d, + 0xb0, 0x70, 0x7f, 0x76, 0x88, 0x37, 0xf1, 0xf1, 0x8a, 0xa8, 0xf4, 0x17, + 0x94, 0x3f, 0x7b, 0x82, 0x9f, 0x7e, 0xe1, 0xf4, 0x07, 0x93, 0x00, 0x46, + 0xa9, 0x7a, 0x1a, 0x57, 0xa8, 0xcf, 0x84, 0x7b, 0xc8, 0xfb, 0xbd, 0xf0, + 0xd8, 0xfa, 0x4e, 0x05, 0xeb, 0x6c, 0x4b, 0x82, 0xdf, 0x59, 0x8e, 0xc3, + 0x0d, 0x68, 0x2c, 0x8b, 0xf3, 0x31, 0xdf, 0x7e, 0xae, 0x31, 0xfe, 0x6c, + 0x9d, 0x0b, 0x6f, 0x2c, 0x19, 0xbd, 0xeb, 0x7c, 0xf9, 0xc8, 0x95, 0x2d, + 0x01, 0xcb, 0xeb, 0x82, 0x5b, 0xc3, 0xd3, 0xf6, 0xc7, 0xec, 0x9d, 0xad, + 0xcc, 0x05, 0x1b, 0x0e, 0x4b, 0x8f, 0x9e, 0xcf, 0x8d, 0xe4, 0x8d, 0x40, + 0x0c, 0x0d, 0xf0, 0x62, 0xb1, 0x6b, 0x18, 0xd7, 0x41, 0x1b, 0x4f, 0x50, + 0xcd, 0x50, 0x03, 0xb0, 0x10, 0x41, 0xf0, 0x88, 0x9e, 0x8e, 0x6d, 0xd0, + 0x2b, 0x74, 0xcc, 0x42, 0x5b, 0x6b, 0x78, 0x03, 0xd7, 0x17, 0x7a, 0x56, + 0xeb, 0xdf, 0xa6, 0x6c, 0xd0, 0xbe, 0xb8, 0x77, 0xa0, 0x8d, 0xa0, 0xfd, + 0x3c, 0xe6, 0x80, 0x20, 0xdf, 0xc1, 0x9b, 0x06, 0xa0, 0xe9, 0x9d, 0x3f, + 0x50, 0x05, 0xe3, 0x28, 0x01, 0x50, 0x50, 0x74, 0xae, 0xf0, 0x00, 0x08, + 0x07, 0x71, 0x8b, 0xbd, 0xf9, 0xc5, 0x04, 0x21, 0x11, 0xb3, 0x78, 0x54, + 0x68, 0xa6, 0xb5, 0xe3, 0x09, 0xd9, 0x39, 0x2c, 0xbe, 0x30, 0x82, 0x47, + 0xa9, 0x47, 0xd7, 0x58, 0x41, 0xa0, 0x21, 0xbd, 0xfc, 0x61, 0xef, 0x41, + 0x7f, 0x0f, 0x63, 0x38, 0x5a, 0x9b, 0x28, 0x74, 0xc3, 0x78, 0xd4, 0xb5, + 0xc0, 0xc0, 0xa2, 0x49, 0x3b, 0xc1, 0x1a, 0xb9, 0x40, 0x63, 0x73, 0xeb, + 0x80, 0x54, 0x2e, 0xa3, 0x97, 0x09, 0xb5, 0xb4, 0x59, 0xca, 0xef, 0x9c, + 0x49, 0x00, 0x24, 0xa0, 0x8b, 0x3d, 0xf9, 0x7e, 0xae, 0x69, 0x28, 0xe5, + 0x17, 0x36, 0x7c, 0x33, 0xe7, 0x05, 0xe0, 0x93, 0x80, 0xb9, 0xf0, 0x07, + 0x12, 0xd9, 0x7c, 0x10, 0xfa, 0x71, 0x88, 0x73, 0xab, 0x1f, 0x46, 0x22, + 0x82, 0xa9, 0x5a, 0x8d, 0xfe, 0x31, 0x9d, 0x18, 0x94, 0xa2, 0x88, 0x7b, + 0x83, 0xe3, 0x35, 0x42, 0x10, 0x5f, 0x2b, 0x5f, 0xdd, 0xf1, 0x86, 0xa1, + 0x68, 0x4f, 0x25, 0xcb, 0xa7, 0x0f, 0xd9, 0xac, 0xf8, 0x10, 0xc1, 0x0d, + 0x63, 0x5a, 0x1c, 0x24, 0x5b, 0x14, 0xc8, 0x42, 0x10, 0x55, 0x66, 0xd0, + 0x3c, 0x7b, 0x62, 0xa2, 0x89, 0x20, 0xd0, 0x76, 0xd4, 0xd3, 0xf7, 0xc9, + 0xde, 0x86, 0x12, 0xa8, 0x44, 0x2f, 0x48, 0xd9, 0xdd, 0x7e, 0xe6, 0x3a, + 0xac, 0x72, 0xed, 0x28, 0x1f, 0x57, 0xe8, 0x38, 0x18, 0x61, 0x68, 0x10, + 0x3d, 0xa4, 0x98, 0x16, 0x54, 0x1a, 0x10, 0x59, 0xe8, 0x89, 0xf2, 0xe2, + 0xc8, 0xde, 0x7e, 0xa0, 0x7e, 0xef, 0xcb, 0x8a, 0xc2, 0x2b, 0x67, 0x5b, + 0xc3, 0x18, 0xb4, 0x08, 0xdb, 0xa2, 0xbd, 0x32, 0xe4, 0xec, 0xb7, 0x47, + 0x46, 0x43, 0x64, 0x50, 0xe0, 0x52, 0x8b, 0xec, 0x87, 0xc6, 0x10, 0xa5, + 0xb1, 0x8b, 0x97, 0x18, 0x12, 0x8d, 0xb3, 0x35, 0xb7, 0x3d, 0x99, 0x6d, + 0xa3, 0x18, 0xa7, 0x78, 0x80, 0x28, 0x5b, 0x37, 0xe4, 0x7d, 0xf1, 0xc0, + 0x43, 0xdf, 0x57, 0x0f, 0x8a, 0xc0, 0xeb, 0x91, 0xfa, 0x81, 0xf4, 0x12, + 0x5c, 0x84, 0xd0, 0x85, 0xa2, 0x50, 0xf5, 0xf9, 0xc6, 0x81, 0x00, 0x3c, + 0x3e, 0x14, 0xd6, 0x9e, 0x72, 0xd2, 0x2a, 0xd3, 0x4f, 0x3e, 0xf8, 0x6a, + 0x2f, 0xb5, 0xe3, 0xf8, 0xcf, 0x56, 0x1d, 0xd7, 0xe7, 0xbe, 0x22, 0x2b, + 0x93, 0xc1, 0xeb, 0x82, 0x0e, 0x13, 0x9a, 0xbb, 0xd6, 0xb0, 0x0d, 0x44, + 0xcb, 0xcb, 0xff, 0x00, 0x73, 0x2c, 0x90, 0x5e, 0x77, 0x44, 0xe9, 0x81, + 0x1a, 0x7a, 0x45, 0xd1, 0x82, 0x0a, 0x22, 0xe7, 0x9b, 0x9c, 0xc1, 0x79, + 0x1f, 0x9e, 0x3f, 0x5d, 0x4f, 0x40, 0x61, 0x25, 0xc8, 0x8c, 0x04, 0x9f, + 0xdc, 0xc2, 0x23, 0x60, 0xea, 0xf2, 0xde, 0x1a, 0x7b, 0x97, 0x37, 0x85, + 0x0c, 0x79, 0xd7, 0xe7, 0x04, 0xae, 0x09, 0x34, 0x69, 0x7a, 0xc8, 0x34, + 0x07, 0xa3, 0xbc, 0x16, 0x2b, 0x57, 0x82, 0x08, 0x3f, 0x74, 0xfa, 0xe1, + 0x9d, 0x12, 0x50, 0x2b, 0xab, 0x80, 0x64, 0xd6, 0x9e, 0x4a, 0x93, 0xbd, + 0x7d, 0x0c, 0x6d, 0x9e, 0x58, 0xfb, 0xe4, 0x3e, 0x50, 0x84, 0xa2, 0x31, + 0xf8, 0xcd, 0x47, 0x8b, 0x24, 0x5c, 0xd9, 0x75, 0xae, 0x9e, 0x4b, 0xa3, + 0x0a, 0xec, 0x00, 0x02, 0xed, 0xe0, 0x31, 0x7a, 0x72, 0x17, 0x3d, 0x1f, + 0x42, 0xeb, 0xd7, 0x2e, 0xfa, 0xd0, 0x85, 0xd1, 0x07, 0xea, 0xcf, 0x9c, + 0x1b, 0x56, 0xd7, 0x0a, 0x29, 0x5d, 0x5f, 0x93, 0x30, 0x10, 0x9a, 0x46, + 0x92, 0x77, 0x88, 0x7a, 0xd7, 0xe4, 0x01, 0x5f, 0x19, 0xa5, 0x8b, 0xaf, + 0x81, 0x6f, 0xc4, 0x98, 0x50, 0x8d, 0x6d, 0xaf, 0x9c, 0x0a, 0x82, 0xfc, + 0x80, 0xc5, 0x5e, 0xb1, 0x30, 0x53, 0xf3, 0x82, 0x9b, 0x1f, 0x61, 0xab, + 0xef, 0xef, 0x8a, 0x38, 0x54, 0xaa, 0xf2, 0x7d, 0xb0, 0x8d, 0x0f, 0x46, + 0xab, 0xfc, 0x63, 0x0d, 0x7e, 0x8f, 0xc5, 0xe3, 0x05, 0x15, 0x2f, 0x34, + 0xc0, 0x84, 0x6e, 0xc9, 0xb4, 0xd6, 0x50, 0x7b, 0xd4, 0x01, 0xdf, 0xbf, + 0x1e, 0x9f, 0x6c, 0x34, 0x51, 0xd0, 0x20, 0xe7, 0x5f, 0x4c, 0x03, 0x3c, + 0xa1, 0xc7, 0x1a, 0xfe, 0xa3, 0x1d, 0x97, 0x83, 0x27, 0xc8, 0x9c, 0xab, + 0xc9, 0xf9, 0xe7, 0xc7, 0xae, 0x3f, 0xb7, 0x9a, 0x90, 0x29, 0xd6, 0xde, + 0xf8, 0x57, 0x81, 0x5e, 0xb3, 0x8c, 0x4a, 0x33, 0x49, 0x86, 0x0e, 0xfa, + 0x2b, 0x08, 0xbf, 0x2c, 0x6d, 0x58, 0x65, 0x5a, 0x67, 0x26, 0x9a, 0xfc, + 0xfe, 0xb3, 0x8b, 0x45, 0xbb, 0x1f, 0xcf, 0xfb, 0x85, 0xb5, 0x53, 0x02, + 0x87, 0xa4, 0x48, 0x5b, 0xe9, 0xdd, 0xac, 0x05, 0x0b, 0x2d, 0x86, 0xe5, + 0xf1, 0x9a, 0x20, 0x56, 0x02, 0xbd, 0xb5, 0xfe, 0xfb, 0xc4, 0x8b, 0xb3, + 0x66, 0x3c, 0x4e, 0x31, 0xdf, 0x80, 0x49, 0xd8, 0xff, 0x00, 0x24, 0xc1, + 0x0e, 0x8e, 0x17, 0x14, 0xc2, 0x1d, 0x3b, 0x2f, 0x55, 0xcb, 0xd9, 0x48, + 0x5f, 0xbd, 0x81, 0x34, 0xa7, 0x89, 0xf7, 0x3f, 0x8c, 0x12, 0x90, 0x1a, + 0x85, 0xd4, 0xea, 0xe3, 0x24, 0x0d, 0x42, 0x76, 0x47, 0x21, 0x4a, 0x53, + 0xc3, 0xb6, 0x7b, 0x8e, 0x32, 0x61, 0x80, 0xee, 0xdf, 0xb9, 0xd3, 0xea, + 0x38, 0xaf, 0x04, 0xa7, 0x17, 0x67, 0xc1, 0x1b, 0xe8, 0xf2, 0x32, 0xf4, + 0xd3, 0x67, 0x5e, 0xf8, 0xd5, 0x25, 0x48, 0xa9, 0x6a, 0xaf, 0x79, 0x47, + 0x12, 0x2d, 0x03, 0xcd, 0xfa, 0xe1, 0xc0, 0x26, 0xed, 0x16, 0x6b, 0xf4, + 0x0c, 0xd9, 0xa9, 0x50, 0xf6, 0x09, 0x83, 0x5a, 0xfa, 0xf8, 0x48, 0x41, + 0x12, 0x07, 0x69, 0xe5, 0x28, 0xf0, 0xe3, 0x84, 0xba, 0x87, 0x67, 0xa0, + 0xed, 0x8f, 0x22, 0x3d, 0xe2, 0xf8, 0x23, 0x78, 0x46, 0x24, 0x01, 0xd1, + 0x36, 0x82, 0xbe, 0xfa, 0x3e, 0x03, 0x11, 0x04, 0xed, 0x88, 0x49, 0xad, + 0x27, 0x35, 0x4f, 0x1b, 0x47, 0xd1, 0x7a, 0x62, 0x3d, 0xba, 0x18, 0x38, + 0x4f, 0x22, 0x53, 0xd9, 0xcb, 0x8d, 0xa3, 0xba, 0x0a, 0x91, 0xf5, 0x11, + 0x3d, 0xcc, 0xd3, 0x08, 0x03, 0x4d, 0xef, 0xf3, 0xfa, 0xc2, 0x4c, 0xa7, + 0x6c, 0x66, 0xd0, 0x61, 0x3d, 0xf0, 0x02, 0xf2, 0x3b, 0x37, 0xce, 0x55, + 0x62, 0xe8, 0x85, 0xdb, 0xbe, 0xb0, 0xbd, 0x88, 0xbe, 0x1c, 0x4e, 0x2d, + 0x24, 0x91, 0xb3, 0xfa, 0x9d, 0x4b, 0x0e, 0x6c, 0xb5, 0x67, 0xd0, 0xbf, + 0x1e, 0x70, 0x80, 0x4f, 0x24, 0xe6, 0xc8, 0xfe, 0xff, 0x00, 0x7c, 0x74, + 0xf8, 0x4b, 0x12, 0xfc, 0x61, 0xb1, 0x2c, 0x7e, 0xfe, 0xd8, 0x94, 0x02, + 0xbd, 0xf5, 0x9d, 0xe0, 0x4d, 0xff, 0x00, 0xcc, 0x0d, 0x6d, 0x47, 0x7b, + 0xff, 0x00, 0x58, 0xe3, 0x36, 0xab, 0x2a, 0x02, 0x9f, 0x07, 0xd1, 0x80, + 0x1e, 0xc5, 0x5a, 0xff, 0x00, 0x6c, 0xb3, 0xb0, 0xf4, 0xeb, 0x20, 0xea, + 0xba, 0x36, 0xb9, 0x2d, 0x5e, 0x83, 0xb7, 0xf1, 0x8c, 0x50, 0x53, 0x84, + 0x00, 0x07, 0xd2, 0x87, 0x5e, 0x33, 0x8a, 0xd5, 0x08, 0xf9, 0xc8, 0x10, + 0x73, 0xf0, 0x35, 0xd6, 0x5a, 0xe3, 0x02, 0x85, 0x50, 0xc8, 0xf3, 0xb0, + 0x7e, 0x30, 0x1b, 0x2e, 0xd6, 0xc1, 0x69, 0x29, 0xef, 0x86, 0x68, 0xa3, + 0x4b, 0xbf, 0xa7, 0xdf, 0x0e, 0x14, 0x35, 0x7b, 0x0e, 0x0a, 0x9c, 0x65, + 0x10, 0xb5, 0x4d, 0x0b, 0x2e, 0x8d, 0x6e, 0x1b, 0xf4, 0xca, 0x73, 0xb9, + 0x41, 0xe4, 0x50, 0xbe, 0xb8, 0x06, 0x3c, 0x1a, 0x10, 0xd3, 0x67, 0xa9, + 0xf6, 0xc8, 0xb1, 0x38, 0x10, 0xe7, 0xb3, 0xf7, 0xcd, 0x19, 0x40, 0x54, + 0x07, 0x7d, 0x65, 0xbd, 0xb5, 0x5a, 0x57, 0xa3, 0xe7, 0x00, 0x1f, 0xa8, + 0x58, 0xb6, 0x03, 0x75, 0xb5, 0xf9, 0xca, 0x8a, 0x00, 0xa2, 0x02, 0xf7, + 0x8b, 0x10, 0x05, 0xb0, 0x1b, 0xfb, 0x65, 0x08, 0xb6, 0x8d, 0x0b, 0xcc, + 0x27, 0x2c, 0x36, 0x78, 0x31, 0x1d, 0x75, 0x00, 0x54, 0x55, 0x3c, 0x7b, + 0x3c, 0xf9, 0xc3, 0x0d, 0xbc, 0x22, 0x87, 0xd3, 0x7c, 0x73, 0xbc, 0x45, + 0x2d, 0x2c, 0x1e, 0xf8, 0xa4, 0xe2, 0x5b, 0x11, 0x3b, 0xf4, 0xd9, 0xce, + 0x22, 0x84, 0x0e, 0xe0, 0xfb, 0x1c, 0xfc, 0xe6, 0xc9, 0xaa, 0xdb, 0xe7, + 0xb5, 0xce, 0x1e, 0x87, 0x6e, 0xcb, 0xfb, 0xe5, 0x16, 0x21, 0xcf, 0xf1, + 0xc8, 0x2a, 0x20, 0xee, 0x15, 0xc4, 0x57, 0x27, 0x47, 0x87, 0xc9, 0x8d, + 0x1b, 0x26, 0xb8, 0x75, 0x93, 0x40, 0x13, 0xc8, 0x5a, 0x7b, 0xe0, 0x14, + 0xe0, 0x01, 0x5d, 0x1d, 0x7f, 0x38, 0x05, 0x8e, 0x84, 0xad, 0x5d, 0x62, + 0x29, 0x02, 0x68, 0x58, 0x71, 0xfd, 0x4c, 0x22, 0x57, 0x97, 0x00, 0x14, + 0x37, 0x46, 0xce, 0x9e, 0x7d, 0xbf, 0x7c, 0xe2, 0x11, 0x70, 0xab, 0x78, + 0x03, 0xc5, 0xd7, 0x1b, 0xde, 0x6e, 0x7c, 0x9a, 0x4f, 0x5c, 0x6b, 0x4a, + 0x1c, 0x08, 0xe4, 0xcd, 0xbd, 0x68, 0x10, 0x4f, 0x0f, 0x18, 0x45, 0x11, + 0xd0, 0x77, 0x1e, 0x4c, 0x43, 0x06, 0x6a, 0x29, 0x1f, 0x5b, 0x8e, 0x26, + 0xf1, 0xb8, 0xec, 0x7e, 0x3e, 0x31, 0xda, 0x08, 0x72, 0x2e, 0xdd, 0x5c, + 0x1c, 0x0f, 0xd0, 0x8d, 0x7e, 0x4c, 0x08, 0x29, 0xd3, 0x53, 0xeb, 0x92, + 0x3b, 0xc4, 0xd0, 0x3b, 0xf7, 0x7c, 0xf9, 0xc2, 0x8c, 0xe9, 0x93, 0x9f, + 0x90, 0x2e, 0x54, 0x40, 0x13, 0x44, 0xc2, 0xe8, 0x9d, 0xfb, 0x61, 0x90, + 0xb2, 0x80, 0x7c, 0x3d, 0xf3, 0xf9, 0xf4, 0xc2, 0x84, 0xf5, 0x12, 0xfa, + 0x7e, 0xdf, 0xd6, 0x0c, 0x90, 0x85, 0x9a, 0x0c, 0xf6, 0xc1, 0x14, 0x84, + 0xa1, 0xa6, 0xff, 0x00, 0x1a, 0xe3, 0x13, 0x5a, 0xd0, 0xb3, 0x8f, 0x1f, + 0x9d, 0xe0, 0xe2, 0x45, 0xbb, 0xf4, 0xe9, 0x36, 0x73, 0xfb, 0x64, 0x79, + 0x38, 0x8f, 0x02, 0xf8, 0xbe, 0x72, 0xde, 0x54, 0xe0, 0x4f, 0xf9, 0xce, + 0x04, 0xfc, 0x3d, 0xf3, 0x6f, 0xf3, 0x9c, 0x11, 0xae, 0xd2, 0xbf, 0x6f, + 0xcd, 0x63, 0xc0, 0xab, 0x50, 0x03, 0xaf, 0x5b, 0x83, 0x08, 0x02, 0xc1, + 0xbd, 0xf9, 0x71, 0x70, 0x82, 0x6c, 0xeb, 0xdd, 0x89, 0xa8, 0x76, 0x53, + 0x85, 0xd9, 0xaf, 0xb6, 0x31, 0x0d, 0x8b, 0x75, 0xaf, 0x46, 0x60, 0x42, + 0x02, 0xf3, 0x4f, 0xe7, 0x38, 0xad, 0x68, 0x12, 0x47, 0x7f, 0x6f, 0xc9, + 0x81, 0xbb, 0x8a, 0x4d, 0x97, 0xb9, 0xf4, 0x30, 0x7a, 0x79, 0x41, 0xc8, + 0xb2, 0xcf, 0x1c, 0x1c, 0x78, 0xcd, 0x10, 0x22, 0x72, 0x77, 0xbb, 0x5f, + 0xdb, 0x12, 0xac, 0x83, 0x2a, 0xbe, 0xfb, 0x38, 0xcb, 0x39, 0x55, 0xb5, + 0x06, 0x7e, 0xd7, 0x24, 0x28, 0xb1, 0x27, 0x0c, 0x45, 0xbc, 0x8d, 0xf9, + 0x32, 0xa0, 0x04, 0xf4, 0xdf, 0xe6, 0xf0, 0x29, 0x7f, 0x94, 0xc7, 0x8a, + 0x17, 0x88, 0xf3, 0x84, 0x46, 0x86, 0x0b, 0xa9, 0x4e, 0xfe, 0x6e, 0x2c, + 0xaa, 0x20, 0xab, 0xed, 0xff, 0x00, 0x73, 0x52, 0x50, 0x95, 0xe7, 0x87, + 0xf1, 0x8e, 0xbf, 0x97, 0xfb, 0xfe, 0x9a, 0xd6, 0xc7, 0x29, 0xe8, 0x83, + 0x91, 0x61, 0xea, 0x7e, 0x78, 0xc2, 0xb1, 0xec, 0x89, 0x6c, 0xf5, 0xfa, + 0xaf, 0xf5, 0x8e, 0xa4, 0x52, 0x9d, 0x23, 0xcf, 0x8e, 0xbd, 0xb0, 0x11, + 0x87, 0x0e, 0x0e, 0x78, 0xc0, 0x01, 0xa4, 0x55, 0x8d, 0x7e, 0x33, 0xb8, + 0x41, 0x09, 0x04, 0x0f, 0x9c, 0xaf, 0x7c, 0x08, 0xa1, 0xce, 0x3f, 0x3d, + 0x3f, 0xcf, 0x3a, 0xc2, 0x17, 0x4f, 0x30, 0x37, 0xc1, 0xad, 0x6d, 0xd6, + 0x11, 0xb2, 0x5a, 0x66, 0xf5, 0x96, 0x25, 0x47, 0x6b, 0xc7, 0xf3, 0x9b, + 0xbd, 0x75, 0xbd, 0xe2, 0xc6, 0x44, 0x9d, 0x34, 0xd9, 0x3d, 0x39, 0x26, + 0x6e, 0xb0, 0x8b, 0xeb, 0xed, 0xe9, 0x9c, 0x9e, 0xc0, 0xaf, 0xa7, 0x12, + 0xb2, 0x45, 0x5a, 0x7d, 0xff, 0x00, 0x4e, 0xad, 0x04, 0x15, 0xbc, 0x41, + 0xdf, 0xb6, 0x50, 0x81, 0x0e, 0x40, 0xd5, 0xdf, 0xd7, 0x01, 0x84, 0x10, + 0x44, 0x0d, 0x23, 0x3e, 0xab, 0x3d, 0x39, 0xcd, 0xae, 0x5a, 0xf7, 0xd2, + 0xff, 0x00, 0x58, 0xd0, 0x01, 0xb0, 0xf2, 0xfc, 0x60, 0x82, 0x2a, 0xb3, + 0x69, 0xf8, 0x62, 0x24, 0x30, 0x61, 0x57, 0xc5, 0xeb, 0x8e, 0x9a, 0xb9, + 0x29, 0xd0, 0xc2, 0x7b, 0x49, 0xf1, 0xfe, 0x7a, 0x86, 0x56, 0xf0, 0xa6, + 0xb9, 0x7d, 0xcc, 0x1c, 0x11, 0x76, 0x07, 0x1d, 0x34, 0x4f, 0x68, 0x1b, + 0xc4, 0x85, 0x15, 0x1d, 0x33, 0x0d, 0xda, 0x08, 0x43, 0x7c, 0xdd, 0x3f, + 0x09, 0x84, 0xc7, 0x71, 0xdc, 0xda, 0x4f, 0xf7, 0x97, 0x94, 0xc8, 0xce, + 0x1a, 0x7d, 0x32, 0x48, 0x90, 0xd0, 0x7c, 0xfe, 0x96, 0x78, 0x54, 0xd1, + 0x95, 0x12, 0xa1, 0x68, 0x2d, 0x5e, 0x27, 0xc1, 0x96, 0x64, 0xd2, 0x29, + 0x5e, 0x7c, 0x5f, 0x57, 0x41, 0x8a, 0xa0, 0x5a, 0x78, 0x6e, 0xf7, 0x32, + 0x10, 0xac, 0xeb, 0x9c, 0x88, 0x44, 0x2e, 0xa4, 0x9f, 0x9f, 0xeb, 0x11, + 0x18, 0x71, 0x72, 0x9a, 0xef, 0xf3, 0xc9, 0x83, 0xb7, 0xc9, 0x5e, 0x2e, + 0xfd, 0xef, 0xf9, 0xec, 0x11, 0x49, 0x95, 0xcb, 0x67, 0x5d, 0xe4, 0xa3, + 0xa0, 0x85, 0xdb, 0x2f, 0xb6, 0x2a, 0x95, 0x53, 0xae, 0x72, 0x22, 0xec, + 0xa2, 0xa6, 0x6e, 0x05, 0x01, 0x5f, 0x93, 0x0a, 0xd4, 0xec, 0x28, 0xe9, + 0x35, 0x85, 0x18, 0x30, 0x6d, 0x9e, 0x2f, 0x79, 0x5b, 0xed, 0xdd, 0x7d, + 0xff, 0x00, 0x4b, 0x85, 0xca, 0x66, 0x54, 0x66, 0xcf, 0x6d, 0x76, 0xbf, + 0xf2, 0xfa, 0x65, 0xd0, 0x14, 0x90, 0x86, 0xd2, 0x6d, 0xec, 0xde, 0xff, + 0x00, 0x9c, 0x24, 0x2a, 0xa8, 0x83, 0x9b, 0xfc, 0xe3, 0x21, 0xa6, 0xb8, + 0xb9, 0x00, 0x34, 0x3b, 0xe8, 0xfb, 0x63, 0x08, 0x78, 0x0b, 0x0f, 0xb1, + 0x9d, 0xfb, 0xb4, 0xf7, 0x1f, 0xc7, 0xf9, 0xeb, 0xe5, 0x3a, 0xb4, 0xb5, + 0x12, 0x1c, 0xf5, 0xc9, 0xfc, 0x98, 0x17, 0x17, 0xef, 0xeb, 0x7f, 0x6c, + 0xa1, 0x84, 0xe2, 0x5f, 0x38, 0x55, 0xdd, 0x7b, 0xf4, 0x63, 0xae, 0xd0, + 0x5e, 0x93, 0x7b, 0xfb, 0x5f, 0xbe, 0x6d, 0x11, 0x04, 0x53, 0x42, 0x12, + 0x65, 0xcb, 0x71, 0x2b, 0xd4, 0x19, 0xa6, 0xb9, 0xd4, 0x7b, 0xbf, 0xa5, + 0x1a, 0x6d, 0x21, 0x3c, 0xe4, 0x12, 0x5b, 0x19, 0x6d, 0xc0, 0x1a, 0xe9, + 0xd8, 0x70, 0x79, 0xf8, 0xe7, 0xe3, 0x00, 0x0a, 0x6d, 0xe2, 0xdb, 0x92, + 0x38, 0x76, 0x13, 0xbc, 0xdd, 0xa1, 0x9b, 0xd7, 0xfa, 0xc2, 0x85, 0x9d, + 0xab, 0x7a, 0x71, 0xdf, 0x58, 0x7e, 0x6a, 0xe8, 0xb6, 0x6f, 0xdf, 0xb4, + 0xff, 0x00, 0x3f, 0x9f, 0xc2, 0x96, 0x74, 0x7f, 0x8c, 0x54, 0x34, 0xc7, + 0x84, 0xdc, 0xf3, 0x84, 0x36, 0xa7, 0x91, 0x9f, 0x7f, 0xa6, 0x5c, 0x04, + 0x78, 0x93, 0xbc, 0x4a, 0xb6, 0x84, 0xf6, 0xbc, 0x18, 0xba, 0x96, 0x07, + 0x7c, 0x71, 0x82, 0x12, 0x1b, 0x83, 0x49, 0x46, 0x4e, 0x8e, 0x3f, 0x93, + 0xf4, 0xb9, 0xb6, 0xb9, 0xf0, 0x51, 0xa0, 0x14, 0xdd, 0x5e, 0xee, 0x10, + 0x3d, 0x66, 0x07, 0x5c, 0xfa, 0x9f, 0xf3, 0x19, 0xea, 0x0b, 0x78, 0xae, + 0x68, 0x63, 0x39, 0x5b, 0x25, 0xef, 0x3b, 0x09, 0x4b, 0xba, 0xae, 0x41, + 0x35, 0x95, 0x5b, 0xd3, 0x18, 0xcf, 0x69, 0x7c, 0xed, 0xfe, 0x6f, 0xf9, + 0xe0, 0x59, 0x01, 0xaf, 0x82, 0x72, 0x82, 0xa4, 0x7a, 0xfe, 0x30, 0xc1, + 0x18, 0x38, 0x42, 0x7f, 0xdc, 0xd2, 0xac, 0xd6, 0x71, 0x7e, 0x71, 0x60, + 0x70, 0xa0, 0xc5, 0xf1, 0x9a, 0xed, 0x69, 0x45, 0x31, 0x6b, 0xc0, 0xf3, + 0xd2, 0x99, 0xb7, 0xe7, 0x6d, 0xfd, 0x20, 0x65, 0x07, 0x69, 0xd6, 0x10, + 0xdd, 0x05, 0x11, 0xd5, 0x6f, 0x9f, 0x8c, 0x2e, 0xd0, 0xb7, 0xcd, 0x39, + 0xf9, 0x5c, 0xae, 0x11, 0xb0, 0x03, 0xd7, 0x1c, 0x37, 0x6b, 0xbe, 0xcc, + 0x15, 0xaa, 0x9d, 0x47, 0x73, 0xd7, 0x15, 0x42, 0x08, 0x87, 0x41, 0x37, + 0x2e, 0x6f, 0x9c, 0x7c, 0x8a, 0x7f, 0x9f, 0xf3, 0xd6, 0x96, 0x4c, 0x3c, + 0x2a, 0xd3, 0xcf, 0x13, 0xe7, 0x06, 0x80, 0x6b, 0x66, 0xbe, 0xbf, 0x38, + 0x68, 0x04, 0x1f, 0x27, 0x21, 0xe1, 0x17, 0x70, 0xeb, 0xd7, 0x05, 0x49, + 0x3e, 0x23, 0x4b, 0xf9, 0xf6, 0xcb, 0xf0, 0x8c, 0x35, 0x27, 0xd7, 0x19, + 0x20, 0x00, 0xfb, 0xef, 0x66, 0x35, 0x0b, 0x55, 0x9f, 0xaf, 0xe9, 0xee, + 0x8a, 0x24, 0xc2, 0xfa, 0xd8, 0x4d, 0x0a, 0xb6, 0x36, 0x7b, 0x7e, 0xd8, + 0x22, 0x88, 0x14, 0x62, 0x9b, 0x2f, 0xa9, 0xfb, 0xf3, 0xde, 0x20, 0x67, + 0x67, 0x2e, 0x1b, 0x81, 0x13, 0x87, 0x00, 0x7d, 0xf1, 0x1a, 0x04, 0x05, + 0x8f, 0xef, 0x29, 0x50, 0x1f, 0x26, 0x9d, 0x2f, 0xd7, 0x58, 0x32, 0xb6, + 0xa7, 0xdd, 0xfe, 0x7d, 0xc0, 0xc9, 0x00, 0xb7, 0x6f, 0xf5, 0x9a, 0x94, + 0x24, 0xb0, 0x72, 0xfb, 0xe3, 0x2d, 0x29, 0x50, 0x3d, 0x39, 0xd6, 0x02, + 0x0e, 0x92, 0xce, 0x1c, 0x04, 0x6a, 0xae, 0xf8, 0x9e, 0x32, 0x4a, 0x38, + 0x41, 0xeb, 0xd3, 0x10, 0xf9, 0x0d, 0xfd, 0x9b, 0x33, 0x6e, 0x7e, 0x7c, + 0xfb, 0xfe, 0x95, 0x19, 0x4a, 0x0a, 0x73, 0x36, 0x63, 0x00, 0x64, 0xd6, + 0x82, 0x3b, 0x41, 0xe7, 0xac, 0x6a, 0x78, 0x04, 0xb4, 0x08, 0xf5, 0xd9, + 0xde, 0x3b, 0x0a, 0x10, 0x8e, 0xed, 0x7a, 0xb8, 0xab, 0xcb, 0xae, 0x3f, + 0x66, 0x50, 0x1b, 0x47, 0xa8, 0x60, 0x0d, 0x5e, 0xed, 0x1c, 0xbc, 0x18, + 0x25, 0xca, 0xdf, 0x77, 0xfc, 0xfb, 0x35, 0x0d, 0x66, 0x96, 0xdf, 0x07, + 0x3d, 0x60, 0x4e, 0x5d, 0xa5, 0x18, 0xdb, 0xbd, 0xfb, 0x7d, 0xbd, 0xf0, + 0x81, 0x36, 0x7a, 0x96, 0xf8, 0xc3, 0x68, 0x95, 0x3c, 0x6f, 0x9c, 0xd9, + 0x44, 0x52, 0x6b, 0x9d, 0x8f, 0xa3, 0x3e, 0x71, 0x11, 0x2b, 0x00, 0xeb, + 0x87, 0x04, 0x75, 0xe9, 0x69, 0xeb, 0x30, 0x41, 0xf5, 0x73, 0xef, 0xfa, + 0x49, 0x6b, 0x09, 0x5f, 0x7c, 0x36, 0x92, 0xb6, 0x49, 0x75, 0xcc, 0x1f, + 0x5c, 0x88, 0x24, 0x4c, 0x8e, 0x1f, 0xa1, 0xeb, 0x80, 0x70, 0xb2, 0x84, + 0x93, 0x7c, 0x49, 0xa9, 0xc7, 0xc6, 0x68, 0xe0, 0x6d, 0x6f, 0x33, 0xcf, + 0xae, 0x01, 0x01, 0x44, 0xf2, 0x7c, 0xef, 0x08, 0x4a, 0x0d, 0xdd, 0x8e, + 0x8c, 0xf8, 0xfc, 0x3e, 0xaf, 0xf9, 0xfc, 0x0b, 0x83, 0x2f, 0x2e, 0x4d, + 0xd4, 0x2d, 0x1d, 0xf8, 0xd6, 0xb0, 0xac, 0x05, 0xe7, 0x6a, 0xcf, 0xf7, + 0x80, 0x23, 0xc0, 0x2e, 0xb1, 0xf3, 0x58, 0x36, 0xbd, 0x2b, 0xf6, 0xbf, + 0x4c, 0x3a, 0x17, 0xa9, 0x6d, 0x8f, 0xe1, 0x96, 0x3e, 0x43, 0x7d, 0x53, + 0x15, 0x6f, 0x57, 0xef, 0xfa, 0x79, 0x82, 0x20, 0xc7, 0xa9, 0xbf, 0xb6, + 0x26, 0x2a, 0x45, 0x27, 0xde, 0x6f, 0x12, 0x88, 0xa8, 0x30, 0xb5, 0xd9, + 0xaa, 0x5d, 0xf2, 0x63, 0x0a, 0x53, 0x57, 0xc4, 0x1f, 0xb6, 0x35, 0x05, + 0x2d, 0x41, 0xbf, 0xc6, 0x10, 0xd6, 0x93, 0xf1, 0xfb, 0xfd, 0x71, 0x25, + 0x53, 0x42, 0xab, 0xce, 0x9d, 0x63, 0xd8, 0x28, 0x31, 0xff, 0x00, 0x3d, + 0xcd, 0x37, 0xab, 0xce, 0x1b, 0x49, 0xef, 0xb6, 0x1d, 0x55, 0xcd, 0xa7, + 0x80, 0x50, 0x9e, 0x35, 0xc6, 0x49, 0x75, 0x34, 0x55, 0xe7, 0xf9, 0x32, + 0x79, 0x0c, 0x20, 0xe4, 0x51, 0xbf, 0xb9, 0x6f, 0xa6, 0x2f, 0x22, 0xf0, + 0x1c, 0x9b, 0x9e, 0x83, 0xdf, 0x3d, 0xee, 0xff, 0x00, 0xbf, 0xe9, 0x11, + 0x59, 0xae, 0x70, 0x04, 0x9a, 0x8d, 0xd4, 0xd7, 0x7f, 0x7c, 0x01, 0xa9, + 0x52, 0x1e, 0x68, 0xee, 0x7d, 0xf1, 0x74, 0x50, 0xe7, 0x31, 0xde, 0x00, + 0x85, 0x75, 0xdf, 0x02, 0xe5, 0x1b, 0x80, 0xbe, 0xa1, 0xcf, 0x39, 0xaa, + 0xcf, 0x0a, 0x0b, 0x1f, 0x4d, 0xe2, 0x18, 0x08, 0x44, 0xbe, 0x27, 0xf9, + 0xec, 0x43, 0x66, 0xe9, 0x85, 0x72, 0x00, 0xa3, 0xb7, 0xc6, 0x2c, 0xab, + 0xcc, 0x27, 0xde, 0x67, 0x60, 0x0b, 0xba, 0x3f, 0x39, 0x0a, 0xaa, 0x96, + 0x07, 0x30, 0xbf, 0x4d, 0x7d, 0xf2, 0xe3, 0xc3, 0x24, 0x39, 0x31, 0x1b, + 0x90, 0xd1, 0x0a, 0x85, 0x3e, 0xba, 0xc8, 0xd3, 0xc5, 0x7e, 0xff, 0x00, + 0xa5, 0x04, 0x5a, 0x36, 0x1d, 0x99, 0x51, 0x01, 0x55, 0x4c, 0xe5, 0xf4, + 0xe7, 0x39, 0xfc, 0xe1, 0xeb, 0x8f, 0x03, 0x6c, 0xc0, 0x80, 0x8d, 0x4f, + 0x10, 0x45, 0xfb, 0x60, 0x2d, 0x2b, 0x4e, 0x71, 0x0a, 0x22, 0x7d, 0xbe, + 0xf9, 0x31, 0xac, 0x73, 0xb2, 0xe1, 0x3a, 0x7f, 0x23, 0xfc, 0xf4, 0xc0, + 0xe8, 0x65, 0xc1, 0x81, 0x8d, 0x1b, 0xe7, 0xbc, 0x2a, 0x6d, 0x12, 0x8e, + 0x5a, 0xb9, 0xce, 0x51, 0xbd, 0x66, 0xf5, 0x23, 0x94, 0xd9, 0x75, 0x7d, + 0xb7, 0xf7, 0xcd, 0x7e, 0x54, 0x11, 0xf7, 0xe9, 0xca, 0x51, 0x35, 0x69, + 0xf5, 0xc7, 0x59, 0xe6, 0xbf, 0x7f, 0xd3, 0xed, 0x54, 0x27, 0x9e, 0xb2, + 0x44, 0x57, 0xaa, 0xf1, 0xb9, 0x7f, 0x7c, 0x43, 0x34, 0x1c, 0x87, 0x1f, + 0xcb, 0xfe, 0xe4, 0x5c, 0xa9, 0x54, 0xdc, 0x5d, 0x7a, 0x59, 0xe3, 0x02, + 0x30, 0x06, 0xf5, 0x78, 0xc5, 0xa0, 0x23, 0x5b, 0x67, 0xaf, 0x79, 0xb3, + 0xa1, 0x9b, 0xcd, 0xf0, 0x7d, 0xb3, 0xda, 0x2a, 0x27, 0x86, 0x71, 0xfe, + 0x7d, 0x6b, 0x54, 0x41, 0xe7, 0x18, 0x64, 0xa7, 0x3a, 0x73, 0x9a, 0x84, + 0x2f, 0x73, 0xa7, 0x1d, 0x86, 0xcf, 0x05, 0x7a, 0xf7, 0xc4, 0x6e, 0xf3, + 0x40, 0x2d, 0xfc, 0xfe, 0x32, 0x8c, 0xba, 0x5d, 0x13, 0x5f, 0x8e, 0x72, + 0xbd, 0x15, 0xf3, 0xd9, 0x9b, 0x7b, 0xef, 0xd3, 0x01, 0xab, 0x4e, 0xfd, + 0x32, 0xd9, 0x04, 0x03, 0xf3, 0xeb, 0x91, 0xc8, 0x2d, 0xea, 0x26, 0xc7, + 0xcf, 0xd3, 0xc6, 0x0a, 0xe9, 0x96, 0x86, 0x80, 0x1e, 0x77, 0xf1, 0xe9, + 0x89, 0x2c, 0x8b, 0x97, 0x7b, 0xf8, 0xc0, 0x8d, 0x50, 0xc2, 0x3f, 0x7c, + 0x58, 0xa4, 0x4d, 0x9b, 0xc0, 0x04, 0x7e, 0xad, 0xff, 0x00, 0x3d, 0xc0, + 0xee, 0x29, 0x60, 0x74, 0xd8, 0x1d, 0x57, 0xfb, 0xc4, 0x22, 0xd2, 0x25, + 0x0e, 0x5f, 0x33, 0x14, 0xf5, 0x07, 0x85, 0xf7, 0xe7, 0x01, 0xef, 0x1d, + 0xd6, 0xd2, 0x4c, 0x54, 0xf0, 0x79, 0xd5, 0xfc, 0xf4, 0xc9, 0x40, 0xf0, + 0x7c, 0xe7, 0xdc, 0x3f, 0x48, 0x31, 0xb9, 0xc3, 0xe6, 0xb3, 0x89, 0x8d, + 0x55, 0xb4, 0x16, 0x5b, 0x89, 0x1d, 0x2e, 0x95, 0x75, 0xdf, 0x1e, 0x98, + 0x56, 0x4a, 0x7a, 0xd1, 0x78, 0xd4, 0xfe, 0x71, 0x6d, 0xa9, 0x48, 0x81, + 0xb1, 0xc7, 0x73, 0x83, 0xbd, 0x18, 0x3b, 0xf7, 0x6e, 0xac, 0xd4, 0x7a, + 0xff, 0x00, 0x59, 0x0a, 0x96, 0x95, 0x5e, 0x26, 0x7f, 0x9f, 0x23, 0xb3, + 0x4d, 0xc4, 0xbb, 0x2a, 0x52, 0x3a, 0x77, 0xaf, 0xe3, 0x1e, 0x6f, 0x97, + 0x04, 0xc6, 0x89, 0xd5, 0xe0, 0x4e, 0xb1, 0x26, 0xec, 0xc1, 0xd6, 0xc7, + 0x2f, 0xd3, 0xf1, 0x32, 0x4e, 0x24, 0xd8, 0xf7, 0xde, 0x32, 0xff, 0x00, + 0xad, 0xb7, 0x67, 0xd3, 0xbf, 0xa6, 0x19, 0xcc, 0x6d, 0xcf, 0xbf, 0xe9, + 0x02, 0x23, 0xb3, 0xbc, 0x02, 0x82, 0xa5, 0x3c, 0x2f, 0x78, 0x01, 0x04, + 0x25, 0x1e, 0xf9, 0xfb, 0x57, 0x36, 0x3c, 0xe2, 0xbb, 0x6c, 0x83, 0x7d, + 0x7f, 0x37, 0xcb, 0xa0, 0x81, 0xae, 0xdd, 0x6b, 0x05, 0xaa, 0xe9, 0x69, + 0xf5, 0xdf, 0x7f, 0x6c, 0x09, 0x60, 0x4a, 0x0b, 0x1c, 0x92, 0x6f, 0x41, + 0xe9, 0xaf, 0xf9, 0xfa, 0x6e, 0x94, 0x0c, 0x4a, 0x41, 0xb0, 0x67, 0x2d, + 0x71, 0x89, 0x48, 0x2c, 0xa5, 0x37, 0xc7, 0xaf, 0x58, 0x13, 0xa4, 0xbc, + 0x22, 0x3f, 0x9f, 0xd6, 0x49, 0xcc, 0x55, 0x1a, 0xeb, 0x87, 0xec, 0xb9, + 0x10, 0x62, 0x10, 0xdf, 0x8c, 0x75, 0xa4, 0x49, 0xf3, 0x9f, 0x7c, 0xfd, + 0xff, 0x00, 0x4a, 0x30, 0x2a, 0x16, 0x66, 0x8b, 0x1f, 0x84, 0xaf, 0xf1, + 0x80, 0x0a, 0x18, 0x7b, 0xde, 0xbe, 0xf7, 0x28, 0x01, 0x41, 0x52, 0x8f, + 0xe1, 0xf5, 0xc9, 0x0b, 0x87, 0x4c, 0x8f, 0x8c, 0x00, 0x0c, 0x6e, 0x89, + 0xdb, 0x8a, 0xc2, 0x24, 0x9b, 0xb9, 0xa7, 0xa7, 0xce, 0x00, 0x87, 0x1f, + 0xc3, 0xff, 0x00, 0x3c, 0x34, 0x93, 0xbf, 0x11, 0x1d, 0x07, 0xb1, 0x61, + 0x57, 0xbf, 0x1f, 0xde, 0x28, 0x06, 0x09, 0x27, 0x57, 0xa3, 0x28, 0xd1, + 0x01, 0x78, 0xa7, 0x1a, 0xeb, 0x7f, 0xd3, 0x8a, 0x20, 0xbc, 0x79, 0x56, + 0x7d, 0xf1, 0xde, 0x53, 0xc1, 0xe7, 0xfe, 0xf1, 0x84, 0xf6, 0x13, 0xa7, + 0x3c, 0xe1, 0x87, 0xe1, 0xfe, 0xff, 0x00, 0xa5, 0x03, 0x29, 0x4a, 0xf8, + 0xd6, 0x00, 0xe6, 0xe9, 0xe7, 0xb6, 0x57, 0x6d, 0xb1, 0x87, 0x47, 0xa6, + 0x25, 0x60, 0xaa, 0xa9, 0x37, 0xa7, 0xde, 0x7b, 0x8e, 0x24, 0x27, 0x27, + 0x63, 0xa7, 0x8f, 0xae, 0x58, 0x4e, 0x17, 0x64, 0xa6, 0xb1, 0x8c, 0x0d, + 0x05, 0x0f, 0x86, 0xdf, 0xbe, 0x14, 0xa6, 0xfb, 0x7e, 0x1f, 0xe7, 0xb8, + 0x22, 0xe6, 0x4b, 0x3f, 0x39, 0xf3, 0x92, 0x24, 0xb7, 0xb9, 0x7d, 0x58, + 0xa6, 0x40, 0x3c, 0x14, 0xfd, 0xb3, 0x61, 0x08, 0x66, 0x50, 0x86, 0xe4, + 0x39, 0xb0, 0x03, 0xde, 0xcd, 0xf9, 0xc6, 0x35, 0x84, 0x28, 0xf8, 0xca, + 0xf5, 0x06, 0xcc, 0xfb, 0x97, 0xef, 0xfa, 0x45, 0x9f, 0x3f, 0xc4, 0xe0, + 0x46, 0x44, 0x07, 0x49, 0xdb, 0x77, 0x3b, 0x84, 0x24, 0x96, 0x3e, 0x71, + 0x6f, 0x65, 0x65, 0x6b, 0xd5, 0xf7, 0xf9, 0xc4, 0x17, 0x67, 0x55, 0xe2, + 0xe3, 0x57, 0x06, 0xdd, 0x9c, 0x7d, 0xf2, 0x92, 0x8f, 0x1b, 0x5c, 0x1b, + 0xf9, 0xe7, 0x00, 0x44, 0x68, 0x16, 0xb7, 0xfc, 0xfc, 0xd0, 0x74, 0x3b, + 0x70, 0x07, 0xe9, 0xa5, 0x0d, 0x5a, 0xd7, 0xd3, 0x2c, 0x74, 0x1d, 0x4d, + 0x98, 0xc3, 0xa5, 0x69, 0xbd, 0x93, 0xf3, 0x9c, 0x74, 0x0d, 0x29, 0x78, + 0x58, 0xfd, 0x7a, 0x65, 0xe9, 0xcb, 0x7b, 0x48, 0x22, 0x78, 0xc4, 0x36, + 0x4c, 0x39, 0x04, 0x6f, 0x00, 0x0e, 0xf6, 0xfb, 0xfe, 0x96, 0x12, 0x22, + 0x57, 0xcc, 0x72, 0x9f, 0x82, 0x03, 0xc9, 0x7f, 0xd9, 0x8a, 0xe1, 0xa3, + 0x01, 0x82, 0x6b, 0xd3, 0x2e, 0xee, 0x53, 0xa3, 0x71, 0xe1, 0x3e, 0x30, + 0x75, 0x05, 0x9b, 0x03, 0x57, 0x0d, 0xd5, 0x6b, 0x47, 0x07, 0xce, 0x41, + 0xbc, 0x24, 0x19, 0xc4, 0x62, 0x0b, 0x36, 0xd9, 0xeb, 0xfe, 0x78, 0x82, + 0x91, 0xe0, 0xc2, 0xe2, 0x6e, 0xe2, 0x23, 0x2b, 0xf3, 0x9c, 0x07, 0x62, + 0x8c, 0xac, 0xe3, 0xfd, 0xe6, 0xa0, 0x4e, 0x76, 0x71, 0x83, 0x56, 0xae, + 0x0e, 0x82, 0xff, 0x00, 0x1c, 0x7d, 0x72, 0x61, 0x43, 0x8a, 0xc7, 0x8c, + 0x21, 0x91, 0x59, 0x7d, 0x18, 0x89, 0x72, 0x1f, 0x51, 0xfa, 0x76, 0x62, + 0x84, 0x8e, 0x5c, 0x21, 0x84, 0xe8, 0xdf, 0x5b, 0x61, 0x50, 0x3c, 0x00, + 0x9c, 0xfd, 0x7c, 0x7e, 0xd8, 0xcc, 0x0b, 0x94, 0x0d, 0xb1, 0x77, 0xf3, + 0x87, 0xd4, 0x25, 0xa2, 0xfe, 0x7c, 0xe3, 0x36, 0x80, 0x85, 0x3d, 0x5f, + 0x8e, 0x58, 0xdb, 0x24, 0x33, 0x9d, 0xf1, 0xbe, 0x31, 0x14, 0xe4, 0x1d, + 0xff, 0x00, 0x9e, 0xb0, 0xac, 0x22, 0xdf, 0x19, 0xdc, 0x21, 0x92, 0x8b, + 0xc9, 0xe3, 0xe3, 0x9c, 0x07, 0x5a, 0xbd, 0xed, 0x86, 0x31, 0x61, 0x4b, + 0xc6, 0x9e, 0xb1, 0x86, 0x34, 0x28, 0x34, 0x43, 0x84, 0xef, 0x8c, 0x27, + 0x82, 0xc7, 0x03, 0x46, 0x32, 0x27, 0x6f, 0xba, 0x69, 0x82, 0x7b, 0x7f, + 0xdb, 0xf4, 0x9a, 0x16, 0x69, 0xbf, 0x9c, 0xb3, 0x31, 0x54, 0x38, 0x94, + 0x4c, 0x45, 0x36, 0xf5, 0xf7, 0xf9, 0xc0, 0xd9, 0x46, 0x85, 0x8b, 0x17, + 0x9f, 0xc5, 0xc5, 0xb5, 0x14, 0x10, 0xf2, 0xe8, 0xfa, 0xea, 0xe5, 0x5a, + 0x8b, 0x8e, 0x58, 0x9b, 0xd0, 0x93, 0x66, 0xe1, 0xd7, 0xce, 0x5a, 0xda, + 0xe2, 0x78, 0xbf, 0xe7, 0xef, 0x50, 0xc5, 0x31, 0x3a, 0xcd, 0xaf, 0x22, + 0x34, 0x94, 0x82, 0xec, 0xc7, 0x80, 0x41, 0x0c, 0xdf, 0xfb, 0x9e, 0x71, + 0x15, 0xae, 0x7e, 0x86, 0x40, 0x4e, 0xc7, 0xa1, 0x1e, 0x1b, 0xf8, 0xc3, + 0x10, 0x15, 0x49, 0xc0, 0xdf, 0x8c, 0x25, 0x04, 0x97, 0x9d, 0xbb, 0xe1, + 0x3e, 0x33, 0xd2, 0xc2, 0x7e, 0xa3, 0xc4, 0x75, 0x7a, 0x12, 0x50, 0xff, + 0x00, 0x38, 0x81, 0x74, 0x3b, 0x28, 0x13, 0xd5, 0xef, 0x8c, 0x24, 0x8a, + 0x14, 0x32, 0x8d, 0x78, 0x9e, 0xff, 0x00, 0xf7, 0x39, 0x7b, 0x89, 0x46, + 0x9c, 0x0c, 0x09, 0x42, 0x5e, 0x67, 0xa1, 0x31, 0xea, 0xc9, 0x60, 0x3e, + 0x87, 0xfd, 0xc2, 0xf9, 0xc9, 0x7f, 0x9f, 0x1a, 0xac, 0x8b, 0x45, 0x99, + 0xee, 0x4b, 0x43, 0x7d, 0x57, 0xd7, 0x20, 0x02, 0xec, 0x6c, 0x1a, 0xef, + 0x8f, 0x1d, 0xe1, 0xf3, 0x2e, 0xe6, 0xbf, 0x7c, 0xb6, 0xa2, 0x0a, 0x86, + 0xcd, 0x71, 0x7c, 0x2b, 0x92, 0x09, 0x41, 0x2f, 0x9c, 0xd5, 0xd2, 0x8d, + 0xaf, 0xb3, 0xf9, 0xe3, 0x11, 0xee, 0x42, 0x7d, 0xbf, 0x50, 0x0d, 0x1d, + 0x5e, 0xd5, 0xaf, 0xd5, 0x31, 0xa0, 0xac, 0x53, 0xcc, 0x98, 0xe2, 0x95, + 0x29, 0x5b, 0x53, 0xc7, 0xd3, 0x12, 0x8d, 0x10, 0xdd, 0x9e, 0x7c, 0xb8, + 0x48, 0x33, 0xd9, 0xf5, 0x70, 0xb5, 0x00, 0x2d, 0xed, 0xaf, 0x79, 0xb3, + 0x2b, 0x8a, 0x1a, 0xa7, 0xf9, 0xfa, 0x06, 0x76, 0x18, 0xe1, 0x7c, 0x6a, + 0x3e, 0x7f, 0xd6, 0x6a, 0xac, 0xbc, 0xa7, 0x3d, 0xf1, 0x8d, 0x3a, 0xba, + 0x9b, 0x36, 0xf7, 0xcd, 0x0c, 0x60, 0xf6, 0x1e, 0x40, 0x79, 0xf1, 0xf3, + 0x84, 0x6d, 0x10, 0x72, 0x74, 0xe1, 0x0e, 0xe8, 0x46, 0x8a, 0xa5, 0xdf, + 0xc6, 0x7a, 0x00, 0xa7, 0xea, 0x0e, 0xec, 0x50, 0x79, 0x29, 0xfb, 0x64, + 0x8a, 0x80, 0x63, 0xaa, 0x4e, 0x71, 0xa1, 0xdc, 0x0b, 0xc2, 0x3f, 0x7f, + 0xeb, 0x16, 0xa0, 0x0b, 0xc5, 0x2c, 0xc2, 0xa8, 0xd0, 0x1e, 0x46, 0x0a, + 0xf7, 0x48, 0xc3, 0xcf, 0xf0, 0xc2, 0x5d, 0x1a, 0x4e, 0x8f, 0xf3, 0xf2, + 0xad, 0x08, 0x9b, 0xfb, 0x19, 0xb8, 0x96, 0x58, 0x28, 0x9b, 0xf9, 0xc5, + 0x4a, 0x93, 0x40, 0x73, 0xad, 0x62, 0xa0, 0x18, 0xf2, 0x87, 0x38, 0x7a, + 0xd9, 0x03, 0x8a, 0x09, 0x57, 0x6f, 0xa4, 0xfa, 0x63, 0xb7, 0x2b, 0x85, + 0x1d, 0x7a, 0xff, 0x00, 0x38, 0x76, 0xc0, 0x06, 0x34, 0xf0, 0xdf, 0x9e, + 0xd8, 0x8c, 0x9a, 0xad, 0x5f, 0xd4, 0x4a, 0x62, 0x53, 0xcc, 0x00, 0x3e, + 0xc6, 0x31, 0x82, 0x43, 0x4f, 0x8e, 0xf2, 0x07, 0x36, 0xc3, 0x1b, 0x4e, + 0x7e, 0xf3, 0xe7, 0x0f, 0x14, 0xbb, 0x1c, 0xa7, 0xce, 0x5c, 0xb3, 0x6d, + 0x38, 0xe7, 0x9c, 0x13, 0x8b, 0x35, 0x6c, 0x08, 0x9e, 0x1c, 0xa0, 0x5a, + 0x2a, 0x3e, 0xcf, 0xf1, 0xfe, 0x7a, 0x49, 0x76, 0x5c, 0x5c, 0x58, 0xd5, + 0x62, 0x70, 0x9c, 0xf0, 0xbc, 0xaa, 0xd5, 0xbd, 0x62, 0x76, 0x15, 0x76, + 0x0f, 0x78, 0x41, 0x4d, 0x6b, 0xa4, 0xd6, 0xf7, 0xd7, 0x3c, 0xfa, 0x1e, + 0x72, 0x28, 0x72, 0x97, 0x84, 0xfa, 0xf3, 0xde, 0x28, 0x84, 0x29, 0x25, + 0x92, 0xda, 0xde, 0xbf, 0x8f, 0xd6, 0x4b, 0xd3, 0x7b, 0x4e, 0xdb, 0xfb, + 0x63, 0xb0, 0xd7, 0x20, 0x39, 0xf8, 0xc0, 0x09, 0x2a, 0x89, 0xc5, 0x33, + 0xd8, 0xab, 0xf9, 0x70, 0x88, 0x08, 0x79, 0x71, 0x50, 0x20, 0x38, 0xf3, + 0xbd, 0x66, 0xec, 0x01, 0x59, 0xe8, 0x2f, 0xaf, 0x5a, 0xc4, 0x44, 0x9c, + 0xcf, 0xba, 0x7f, 0xcf, 0x60, 0x3b, 0x18, 0x9a, 0x0e, 0xc1, 0x42, 0x0a, + 0xe8, 0xc0, 0x01, 0x05, 0xb0, 0xed, 0x3c, 0x3f, 0x39, 0x44, 0x55, 0xe4, + 0x94, 0xf6, 0xc1, 0xd6, 0x03, 0x67, 0xd9, 0x7d, 0x79, 0x7f, 0xee, 0x94, + 0x79, 0xf0, 0xb1, 0x37, 0x96, 0xa4, 0x0e, 0x0e, 0x97, 0x87, 0xf6, 0xfb, + 0x7e, 0xb4, 0x76, 0x01, 0xb1, 0xe5, 0x85, 0xf7, 0x37, 0xf3, 0x85, 0x56, + 0xad, 0x05, 0xef, 0xc1, 0xf9, 0xe7, 0x0d, 0x27, 0x9a, 0xce, 0x4d, 0x1f, + 0xcf, 0xef, 0x8e, 0xa5, 0x75, 0x22, 0x9b, 0xb8, 0xc1, 0xa0, 0xe9, 0x3c, + 0xfd, 0x30, 0x2a, 0xf3, 0x05, 0xdc, 0xa6, 0x75, 0xc3, 0x25, 0xf8, 0xfe, + 0x7c, 0xff, 0x00, 0x9e, 0x7b, 0x21, 0x04, 0x9c, 0xe0, 0xba, 0x3a, 0xa1, + 0xf5, 0x4f, 0x3f, 0x7c, 0xba, 0xd2, 0xaa, 0xb5, 0x5d, 0x66, 0xe5, 0x2a, + 0x01, 0xbf, 0x7e, 0xf1, 0xd3, 0x21, 0xc1, 0x1c, 0xe9, 0xa1, 0xdf, 0x67, + 0xb7, 0xac, 0xc8, 0x32, 0x14, 0x51, 0x4a, 0xf1, 0xf6, 0xfa, 0x62, 0x24, + 0x44, 0xf0, 0xaa, 0xaf, 0xe4, 0xfe, 0xb2, 0x90, 0xf8, 0x42, 0x6e, 0xd2, + 0x7d, 0xf0, 0xc2, 0xc7, 0x35, 0x3d, 0xbf, 0xee, 0x39, 0xc2, 0x44, 0x50, + 0xf0, 0xcf, 0x8e, 0x71, 0xa9, 0xbc, 0x70, 0x6b, 0xc6, 0x4a, 0x3a, 0x9d, + 0x71, 0xf7, 0xc2, 0x3b, 0x40, 0x1b, 0x47, 0xbd, 0xb7, 0xac, 0xb9, 0x0d, + 0x22, 0xf9, 0xd7, 0xf9, 0xe6, 0x87, 0x12, 0x3f, 0x28, 0xc4, 0x68, 0xf0, + 0x41, 0xa0, 0x3a, 0xa6, 0x03, 0xdb, 0x5e, 0xba, 0xfb, 0xe5, 0x14, 0x80, + 0x17, 0x47, 0xed, 0x90, 0x97, 0x45, 0x8d, 0x0e, 0xdf, 0x79, 0xf3, 0x8e, + 0x68, 0xba, 0x86, 0x4e, 0x2e, 0xbe, 0xdf, 0x6c, 0x26, 0x0a, 0xb0, 0x36, + 0xa9, 0x3e, 0xff, 0x00, 0xac, 0x81, 0x23, 0x6c, 0x1c, 0x80, 0xfe, 0xc1, + 0xf9, 0xc0, 0xa9, 0xb8, 0x4d, 0x93, 0x9e, 0x5e, 0x8e, 0x26, 0x6d, 0x52, + 0xdc, 0x23, 0x3a, 0xe3, 0xd0, 0xfb, 0xf7, 0x8c, 0x7e, 0x70, 0x39, 0x39, + 0x34, 0xfa, 0x73, 0x84, 0xab, 0x67, 0x3d, 0xe1, 0xc1, 0x15, 0xb0, 0xc5, + 0x4e, 0xa2, 0x4e, 0x4d, 0x9f, 0xc7, 0xf9, 0xea, 0xa0, 0x15, 0xe0, 0x22, + 0xbf, 0x6c, 0x84, 0x42, 0xc2, 0x69, 0x39, 0xb8, 0xd9, 0x9b, 0x21, 0x2a, + 0x0c, 0x2f, 0x7b, 0xf3, 0x81, 0x29, 0x1f, 0x56, 0x93, 0xc9, 0xeb, 0xce, + 0x6e, 0x5f, 0x70, 0x6c, 0x1c, 0xbf, 0xbf, 0xae, 0x11, 0xe9, 0x42, 0x83, + 0x4d, 0xde, 0x51, 0xe3, 0xb9, 0xe7, 0x36, 0x71, 0xad, 0x78, 0x10, 0x7e, + 0x97, 0xed, 0xfa, 0xc8, 0x2a, 0xed, 0xb3, 0x5b, 0xd7, 0x0e, 0x43, 0x5b, + 0xa9, 0xab, 0xb7, 0xfd, 0x61, 0x56, 0x43, 0x25, 0x53, 0x46, 0xb8, 0xe0, + 0xde, 0xef, 0x78, 0x7a, 0xb1, 0xb0, 0x45, 0x2e, 0xbb, 0x7c, 0x7f, 0xdc, + 0x6e, 0x07, 0xe8, 0x3d, 0xb7, 0x8b, 0x12, 0xa2, 0x30, 0x77, 0x72, 0x77, + 0xd0, 0x9e, 0x90, 0xe2, 0x5a, 0xbe, 0xea, 0x7b, 0xf8, 0x54, 0x35, 0x47, + 0xd4, 0xc0, 0x4a, 0x4c, 0xda, 0xeb, 0x13, 0x83, 0x3f, 0x87, 0x78, 0xac, + 0x41, 0xfc, 0xbb, 0xc4, 0xcb, 0xe9, 0x7e, 0x4e, 0x09, 0xc2, 0xfc, 0x3d, + 0x73, 0xd4, 0x7e, 0x3e, 0xb8, 0x89, 0x6f, 0xf1, 0xf5, 0xc1, 0xf8, 0x6f, + 0xe3, 0xe7, 0x13, 0xe6, 0x3f, 0x3f, 0x38, 0x32, 0x1c, 0x9f, 0xc7, 0x9c, + 0x4e, 0xf8, 0x7e, 0x3c, 0xe6, 0xd9, 0xf8, 0xfe, 0x71, 0x29, 0x64, 0x7b, + 0xff, 0x00, 0x7e, 0x09, 0x00, 0x44, 0x2a, 0x8f, 0xaf, 0x3f, 0x97, 0x05, + 0x53, 0x44, 0xf3, 0xfd, 0xb8, 0x8e, 0x49, 0xe5, 0xfe, 0xec, 0x44, 0xb6, + 0xf6, 0x18, 0x37, 0xf4, 0x30, 0x6e, 0x43, 0xdc, 0x6f, 0x04, 0xfe, 0xae, + 0x7a, 0x6f, 0xe7, 0xd3, 0x07, 0xeb, 0xd9, 0xff, 0x00, 0x38, 0x8a, 0x9b, + 0x27, 0x8f, 0xf5, 0xce, 0x6f, 0xe5, 0xfe, 0xb2, 0xe5, 0x05, 0xf9, 0xf4, + 0xcf, 0x3a, 0x7e, 0x7f, 0xd6, 0x0a, 0xc1, 0x5f, 0x3f, 0xeb, 0x37, 0x4b, + 0xf5, 0x7f, 0xac, 0x2b, 0x1f, 0x74, 0xff, 0x00, 0xac, 0x95, 0x0d, 0x3a, + 0x2c, 0xe4, 0xf5, 0xc6, 0x16, 0x26, 0xdd, 0x89, 0x76, 0xfb, 0xdc, 0x22, + 0x28, 0xe1, 0x16, 0x6f, 0x16, 0x61, 0x0c, 0x8e, 0xf7, 0xf9, 0xf4, 0xc3, + 0x38, 0x8e, 0x56, 0xda, 0x0b, 0x12, 0xe9, 0x5f, 0x3c, 0xfd, 0x0c, 0xc6, + 0x44, 0x04, 0xa7, 0xa9, 0x3f, 0x9f, 0x6f, 0x39, 0xb7, 0x11, 0x41, 0xd6, + 0xc8, 0x70, 0x76, 0x1f, 0xae, 0x18, 0x6d, 0x57, 0xb2, 0xff, 0x00, 0x6c, + 0x49, 0x51, 0x1d, 0x78, 0xff, 0x00, 0x96, 0xe5, 0x10, 0xa8, 0xbd, 0x73, + 0xd1, 0x3d, 0x7f, 0xac, 0x31, 0xec, 0x85, 0x11, 0xb4, 0x67, 0xc8, 0xfd, + 0x32, 0xcc, 0x8f, 0x4c, 0xa8, 0x7d, 0x62, 0x68, 0x8e, 0x40, 0x60, 0xd0, + 0x7f, 0x73, 0x24, 0x6b, 0xe3, 0x77, 0x5b, 0xdf, 0xf5, 0x9a, 0x82, 0x67, + 0x0e, 0x13, 0x08, 0x2b, 0xd3, 0x3f, 0xd6, 0x7a, 0xa7, 0xd1, 0xdc, 0x0a, + 0x2c, 0x6f, 0x94, 0x5f, 0xae, 0x01, 0x88, 0xd0, 0xde, 0x9f, 0xef, 0xdb, + 0x0b, 0x35, 0xb7, 0x41, 0xf1, 0xf1, 0x33, 0x52, 0x1e, 0x03, 0xfd, 0xf1, + 0x9f, 0x67, 0xc3, 0x87, 0xe7, 0xf5, 0x89, 0x02, 0xee, 0xf9, 0x5c, 0x0a, + 0x00, 0x7a, 0x55, 0x3d, 0xb2, 0x24, 0x93, 0x6b, 0x59, 0x68, 0xaa, 0x4d, + 0xf7, 0x88, 0xaa, 0x6a, 0x73, 0x59, 0xbe, 0xa3, 0xd0, 0x7b, 0x27, 0xbe, + 0x29, 0x3c, 0x4b, 0x4f, 0xef, 0xf2, 0x62, 0x97, 0x99, 0x28, 0x09, 0xd5, + 0xff, 0x00, 0x58, 0x1a, 0xb2, 0x34, 0xbd, 0x5b, 0xf6, 0xc7, 0x02, 0x53, + 0xc8, 0xc7, 0xb3, 0xce, 0x77, 0xc4, 0x74, 0x92, 0x7e, 0x5c, 0x06, 0x84, + 0x6e, 0x8b, 0x7f, 0x93, 0x1a, 0x15, 0x05, 0xa6, 0xf5, 0xf9, 0xce, 0x3b, + 0x4d, 0xee, 0xad, 0xe3, 0xe3, 0x06, 0x62, 0x0d, 0x09, 0xbc, 0x6f, 0x80, + 0x5d, 0x3c, 0xbe, 0xf8, 0xb1, 0x5b, 0xc9, 0xb4, 0x15, 0xc1, 0x10, 0x74, + 0x95, 0x2f, 0x8f, 0x5b, 0xa7, 0xed, 0x92, 0x85, 0x72, 0x3d, 0x1c, 0xf3, + 0x92, 0x1b, 0x3c, 0x97, 0x8e, 0xf2, 0x8e, 0xc1, 0x34, 0xab, 0xf8, 0xe4, + 0x50, 0x10, 0x6a, 0x8c, 0x01, 0xa0, 0xa0, 0xf9, 0x3d, 0x71, 0xa9, 0x4a, + 0x46, 0x1f, 0xbe, 0x28, 0x01, 0x73, 0xb7, 0x07, 0xfb, 0xc5, 0x67, 0x63, + 0x41, 0xe4, 0x66, 0xbd, 0x38, 0xdc, 0xf7, 0xf2, 0x6e, 0x43, 0xc3, 0x30, + 0x4e, 0xba, 0xd6, 0xb9, 0xeb, 0x0d, 0x43, 0x03, 0x7d, 0xeb, 0xe9, 0xa3, + 0x5e, 0xdf, 0xac, 0x74, 0xc2, 0x61, 0xc0, 0x01, 0x5f, 0xce, 0x5c, 0x31, + 0xad, 0xc0, 0x06, 0x9c, 0x6c, 0x1f, 0x7c, 0x56, 0x0b, 0x5c, 0x48, 0x2f, + 0x2b, 0xe3, 0xa7, 0xe7, 0x2d, 0x15, 0x17, 0x55, 0xa6, 0x9f, 0x5d, 0xbf, + 0x53, 0xc6, 0x13, 0xb3, 0x07, 0xa5, 0x70, 0x35, 0xa4, 0x53, 0x81, 0xc6, + 0x2d, 0xe2, 0xd3, 0xad, 0xe0, 0x98, 0x86, 0x61, 0x5e, 0x37, 0x81, 0xd4, + 0x74, 0xd3, 0x96, 0x3a, 0x13, 0xe4, 0x72, 0xd4, 0x20, 0x42, 0x8e, 0xb0, + 0x07, 0x73, 0x75, 0x1e, 0x3f, 0x26, 0x00, 0x6e, 0x69, 0xb4, 0xc3, 0xb4, + 0x60, 0xde, 0xae, 0x8f, 0x38, 0x33, 0x01, 0x16, 0x06, 0x87, 0xbb, 0x89, + 0x3a, 0xe0, 0xd0, 0xae, 0xe7, 0x8d, 0xc9, 0x80, 0xc2, 0x22, 0xc9, 0x79, + 0xc1, 0x04, 0x28, 0x3a, 0x8f, 0xcf, 0x39, 0xb0, 0x02, 0xf4, 0xd8, 0x31, + 0xd6, 0x9b, 0x07, 0x55, 0xda, 0x7b, 0x60, 0x6d, 0x30, 0x90, 0x26, 0x8f, + 0x3f, 0xef, 0x05, 0x54, 0x37, 0x54, 0xd7, 0x04, 0x18, 0xaf, 0x7e, 0x57, + 0xda, 0xe4, 0xae, 0x0e, 0xc0, 0xd5, 0x25, 0xf7, 0xf9, 0xc1, 0x80, 0x62, + 0x1d, 0x95, 0xbc, 0xf7, 0xf8, 0xe2, 0xc5, 0x18, 0x4d, 0xb3, 0x9e, 0x5f, + 0x4c, 0x42, 0x68, 0x11, 0x31, 0xe8, 0x7e, 0x70, 0xc8, 0x0e, 0x09, 0xbf, + 0x47, 0x9c, 0xdc, 0xe8, 0x8b, 0x97, 0x7e, 0x7a, 0xe5, 0xfa, 0x64, 0xb5, + 0x55, 0x95, 0xea, 0x2d, 0xf9, 0xeb, 0x2a, 0xb5, 0x02, 0xce, 0x5f, 0x1f, + 0x4f, 0xaf, 0x58, 0xbd, 0x21, 0x0a, 0x21, 0xaf, 0xe4, 0xfd, 0xbe, 0xd8, + 0x75, 0x4c, 0x0e, 0x8a, 0x79, 0xbd, 0xe2, 0x48, 0xe1, 0xa0, 0xe6, 0x69, + 0xd6, 0xb9, 0xde, 0x20, 0x18, 0x5d, 0x62, 0xdd, 0x7b, 0xf5, 0x90, 0x14, + 0x28, 0x9e, 0x06, 0x03, 0x95, 0x91, 0x86, 0xe9, 0xf4, 0xf5, 0xc2, 0x68, + 0x2e, 0xe1, 0xe6, 0x71, 0x71, 0x39, 0x41, 0x5e, 0x86, 0x25, 0xd4, 0x10, + 0xdd, 0xf0, 0x60, 0x61, 0x07, 0x83, 0x5b, 0xbc, 0xb1, 0xd7, 0xd2, 0xeb, + 0x78, 0x00, 0x44, 0xa0, 0xd5, 0x12, 0x1f, 0x1e, 0x5d, 0xfd, 0xb8, 0x18, + 0x86, 0xdd, 0x4d, 0xf0, 0xbc, 0xf3, 0xce, 0x49, 0x41, 0x0c, 0x35, 0xa5, + 0x7f, 0x7f, 0xd6, 0xd1, 0xaf, 0xc3, 0xc4, 0xc1, 0x1d, 0x36, 0x8b, 0xe2, + 0x68, 0xf4, 0x60, 0x77, 0xed, 0x84, 0x4a, 0x42, 0x69, 0x20, 0x27, 0x3e, + 0x7a, 0xd7, 0xbe, 0x69, 0xdc, 0x9c, 0x28, 0x0a, 0x8b, 0xcc, 0xd2, 0xfb, + 0x47, 0x05, 0x63, 0x07, 0x23, 0xc9, 0x9a, 0x60, 0x43, 0xbc, 0xbc, 0x41, + 0x9a, 0x3e, 0x32, 0x56, 0x90, 0x69, 0x85, 0xeb, 0x17, 0x72, 0xe9, 0xc2, + 0x17, 0xbc, 0x6e, 0xf0, 0x0e, 0x04, 0xc1, 0x43, 0x91, 0x74, 0xcf, 0x39, + 0x40, 0x96, 0x64, 0xd5, 0xf4, 0xdb, 0x88, 0x9b, 0xb7, 0xc3, 0x35, 0xaf, + 0x38, 0x24, 0x46, 0x46, 0x9f, 0x0f, 0x93, 0xf3, 0x9c, 0x41, 0x18, 0x41, + 0x2b, 0x7d, 0xfd, 0xb1, 0x16, 0x8a, 0x74, 0xa6, 0xb8, 0xd7, 0x79, 0x14, + 0x15, 0x0a, 0xaa, 0xde, 0x3a, 0xc8, 0x4a, 0xe9, 0xad, 0x76, 0xf9, 0xc5, + 0x86, 0x8d, 0xc5, 0x8b, 0x07, 0xdb, 0x2d, 0x5b, 0x20, 0xd3, 0x36, 0x74, + 0x7d, 0x8f, 0x8c, 0x0e, 0x12, 0x2e, 0xa0, 0x0f, 0x4c, 0x4b, 0x50, 0xd2, + 0x76, 0x7c, 0x66, 0xe0, 0x28, 0x0d, 0x9d, 0x7b, 0xdc, 0xd9, 0x48, 0x5d, + 0xfa, 0x2f, 0x19, 0x43, 0x29, 0xd9, 0x36, 0x3d, 0xb8, 0xd3, 0xbe, 0x30, + 0x8a, 0x0d, 0xfe, 0xd7, 0x0f, 0x9a, 0xba, 0x70, 0xb2, 0xdc, 0x5b, 0x53, + 0x02, 0xc6, 0x99, 0xa0, 0xa5, 0x2e, 0xa6, 0x89, 0xd7, 0x8d, 0x5d, 0xfe, + 0xd8, 0x8f, 0x01, 0xd5, 0x4d, 0x0d, 0xb3, 0xd3, 0xdf, 0x2a, 0x85, 0x69, + 0xdc, 0xad, 0x0e, 0xf0, 0xac, 0x04, 0x28, 0x07, 0xad, 0x79, 0xf7, 0xb8, + 0x9a, 0xd3, 0x42, 0xb7, 0xb9, 0xa5, 0xfc, 0xf3, 0x94, 0x90, 0x2c, 0x38, + 0xbe, 0x4b, 0xf9, 0xde, 0x5b, 0x3b, 0x9b, 0x34, 0x53, 0x7f, 0xc6, 0x04, + 0x18, 0x17, 0x45, 0xb7, 0x2e, 0x0f, 0xa7, 0x06, 0x9f, 0x7c, 0xa2, 0xce, + 0x84, 0x2d, 0xf7, 0xf1, 0xbe, 0xb2, 0x51, 0xc8, 0x01, 0x1d, 0x82, 0x13, + 0xde, 0xef, 0xa3, 0xd8, 0x78, 0x84, 0x5e, 0x1a, 0x71, 0x8a, 0xad, 0x70, + 0x51, 0xc7, 0x08, 0x1b, 0xd7, 0x5b, 0xd7, 0xda, 0xe2, 0x00, 0xe7, 0x02, + 0x0c, 0x74, 0xd5, 0xf8, 0x87, 0x83, 0x8e, 0x85, 0x08, 0xd1, 0x05, 0x01, + 0xde, 0xce, 0x3d, 0x39, 0xbc, 0x9e, 0xd8, 0x31, 0x9b, 0x4d, 0x39, 0x00, + 0xfc, 0xf9, 0xfd, 0x71, 0x91, 0x4b, 0x27, 0x6d, 0x86, 0x22, 0x0d, 0x01, + 0xcb, 0x84, 0xf4, 0x77, 0x17, 0xf6, 0xc9, 0xaa, 0x0a, 0x0d, 0x1c, 0x5e, + 0xae, 0xf6, 0x07, 0x5c, 0x99, 0x42, 0x45, 0x8d, 0x8c, 0x01, 0xf4, 0xd9, + 0xbe, 0x6f, 0x1d, 0x38, 0x86, 0x29, 0x1a, 0xf2, 0xd7, 0xdb, 0x1b, 0x67, + 0xdc, 0xe9, 0x82, 0x00, 0xc1, 0xa3, 0xc3, 0xe3, 0x04, 0x47, 0x65, 0x55, + 0x1f, 0xfb, 0xac, 0x46, 0x2c, 0xd3, 0xa7, 0x9c, 0xa0, 0x16, 0x8b, 0xbe, + 0x3b, 0xf1, 0x83, 0xa4, 0x10, 0xbc, 0xb8, 0x9e, 0x8d, 0x2c, 0x5b, 0xbf, + 0x6c, 0x15, 0x23, 0xc3, 0x86, 0x34, 0x0d, 0xfa, 0xde, 0x3f, 0x3c, 0xe0, + 0x90, 0xf0, 0x15, 0x46, 0x37, 0x8e, 0x78, 0xc4, 0xa0, 0x43, 0x38, 0xe8, + 0xf6, 0xf8, 0xc0, 0x10, 0xa4, 0x18, 0x1e, 0x75, 0xcd, 0xf3, 0x86, 0xdc, + 0x57, 0x6c, 0x2d, 0x7d, 0xb1, 0x02, 0x1f, 0x54, 0xea, 0x65, 0xd7, 0x4e, + 0xaf, 0x8d, 0x71, 0x8b, 0xa0, 0xa3, 0xcb, 0x36, 0x46, 0x7f, 0x58, 0xd1, + 0x36, 0x86, 0x8d, 0xf3, 0xb0, 0xf1, 0xac, 0xa1, 0x22, 0x2f, 0x6c, 0x34, + 0x78, 0x7b, 0xc6, 0x94, 0xa4, 0xdb, 0xcb, 0x97, 0x77, 0x41, 0x54, 0x5c, + 0xfa, 0x9e, 0xd8, 0x11, 0xad, 0x03, 0xbb, 0x74, 0xf1, 0x86, 0xb9, 0xbc, + 0x15, 0x1b, 0x7d, 0x33, 0x86, 0xa0, 0x75, 0x6b, 0xed, 0x7d, 0x9f, 0x18, + 0x84, 0xeb, 0x88, 0xea, 0xf2, 0x18, 0xf3, 0x8d, 0x92, 0x9d, 0x20, 0xd2, + 0xf7, 0x3b, 0xc5, 0x4a, 0x06, 0x1b, 0x7d, 0x9e, 0xfb, 0xcd, 0x22, 0x88, + 0xa7, 0x4d, 0x77, 0x0b, 0xeb, 0xc6, 0xb1, 0xa6, 0x21, 0x21, 0xeb, 0xd6, + 0xf5, 0xdf, 0x5d, 0xe3, 0x06, 0xad, 0xec, 0x8f, 0x17, 0x99, 0xc7, 0x09, + 0xf2, 0x61, 0x46, 0xd0, 0x1a, 0x7c, 0x76, 0x97, 0xd5, 0x26, 0x02, 0x0e, + 0xe8, 0xc0, 0x89, 0x32, 0x12, 0x09, 0x89, 0xec, 0x92, 0x9e, 0x9c, 0xe3, + 0xa0, 0xa2, 0x08, 0xa0, 0x9b, 0xf4, 0x77, 0x72, 0x00, 0x85, 0xaf, 0x08, + 0x1c, 0x7e, 0x79, 0x33, 0x68, 0x4b, 0x3a, 0x76, 0x99, 0xb4, 0xa0, 0x15, + 0xe6, 0x82, 0xae, 0xfc, 0xf9, 0xd0, 0x4b, 0xb3, 0x00, 0x4b, 0x65, 0x1c, + 0x27, 0x3a, 0x4e, 0x37, 0xaf, 0x8f, 0x88, 0x15, 0xb0, 0x28, 0x23, 0x7b, + 0x2a, 0xdb, 0x6e, 0xf4, 0x79, 0xf3, 0x8c, 0x91, 0x40, 0x3f, 0x17, 0x5f, + 0xae, 0x44, 0xd4, 0xa0, 0x73, 0x1f, 0x1e, 0xb9, 0xc9, 0xbc, 0x07, 0x52, + 0x1a, 0xf8, 0xfc, 0xde, 0x01, 0x28, 0xc0, 0xd2, 0x8f, 0x49, 0xfc, 0x7a, + 0x65, 0x94, 0x4d, 0x20, 0x75, 0xb3, 0xed, 0xf6, 0xd7, 0x93, 0x10, 0xf6, + 0x41, 0x9a, 0x04, 0x2f, 0xaa, 0x54, 0xbe, 0x98, 0x50, 0xe4, 0xef, 0x87, + 0x0d, 0x2c, 0x55, 0xf4, 0xc1, 0x04, 0x2d, 0xd5, 0xc6, 0xb5, 0x14, 0xee, + 0x71, 0x94, 0x7a, 0x9c, 0xa3, 0x8f, 0x4c, 0x70, 0x06, 0x1a, 0x8e, 0x26, + 0xf1, 0x42, 0xd1, 0x2d, 0xe3, 0x5f, 0xd6, 0x30, 0x40, 0x89, 0xe4, 0x56, + 0x33, 0x9f, 0x59, 0xf7, 0xca, 0x15, 0x01, 0x5f, 0x83, 0xd7, 0x1b, 0x26, + 0xa2, 0xa7, 0x09, 0xc7, 0x1f, 0x19, 0x01, 0x20, 0xd0, 0x7f, 0x7f, 0x5c, + 0xb2, 0x14, 0x4a, 0xbd, 0x3d, 0x71, 0x8b, 0x62, 0x22, 0xbf, 0xee, 0x41, + 0x08, 0x0a, 0xec, 0x42, 0xce, 0x3c, 0x7e, 0x71, 0x31, 0x60, 0x1e, 0x61, + 0xc1, 0xae, 0x71, 0x1a, 0x12, 0x3a, 0x05, 0xd7, 0x30, 0xe2, 0x3f, 0xef, + 0x15, 0x14, 0x23, 0x84, 0x2b, 0xe7, 0x0a, 0x22, 0xd5, 0xaa, 0x3d, 0x4f, + 0xf9, 0xe3, 0x0c, 0x16, 0x65, 0x8d, 0xd3, 0xe3, 0x78, 0x88, 0x4b, 0x21, + 0xcc, 0xe5, 0xf1, 0xe9, 0xe7, 0x16, 0x04, 0x05, 0x39, 0x02, 0xbd, 0xc7, + 0xef, 0x80, 0x57, 0x6c, 0x35, 0x9e, 0xa5, 0xf8, 0xcd, 0x03, 0x02, 0x87, + 0x9f, 0xae, 0x58, 0x11, 0xa2, 0x8f, 0x1c, 0x79, 0xfd, 0xf1, 0x55, 0x59, + 0x0d, 0xc0, 0xd7, 0x9e, 0xbc, 0xe5, 0x64, 0xef, 0x8d, 0xd3, 0x8b, 0x0f, + 0xa6, 0x17, 0x70, 0x77, 0xd8, 0xf5, 0x3c, 0x71, 0x89, 0x20, 0xaa, 0x0d, + 0x23, 0xc4, 0xd2, 0x6b, 0x8f, 0x38, 0x0d, 0xc4, 0xd7, 0xab, 0x5c, 0xf3, + 0x88, 0x4d, 0xa3, 0xc9, 0x40, 0xfa, 0x70, 0x4f, 0x8c, 0x6b, 0x18, 0x44, + 0xb4, 0x17, 0x2f, 0x4e, 0x32, 0xc4, 0x3d, 0x67, 0x07, 0xb1, 0xef, 0xf9, + 0x31, 0x29, 0x5a, 0x44, 0xad, 0xb0, 0xd4, 0x7c, 0x70, 0x13, 0xc6, 0x41, + 0x01, 0xfa, 0xeb, 0xa7, 0xf6, 0xc6, 0x37, 0x23, 0x82, 0x51, 0xc3, 0x7d, + 0x34, 0x9f, 0x5c, 0x6c, 0x34, 0x52, 0x9a, 0x1b, 0x65, 0x09, 0x3e, 0xaf, + 0x8c, 0xd4, 0x24, 0x6a, 0xc0, 0xa4, 0xff, 0x00, 0x9d, 0xa6, 0x8d, 0xe5, + 0xaa, 0xa2, 0x49, 0x56, 0xfd, 0xce, 0xa4, 0xfe, 0xf0, 0x85, 0x39, 0x6f, + 0x54, 0x37, 0xef, 0x7f, 0xf0, 0x1b, 0xf1, 0x05, 0xe1, 0x8a, 0xbd, 0xfa, + 0x1d, 0xfd, 0x70, 0xae, 0x01, 0x19, 0xde, 0x28, 0x69, 0xe7, 0x81, 0xe2, + 0x60, 0x30, 0x10, 0x06, 0xda, 0x93, 0xcb, 0xf9, 0xbc, 0xde, 0x61, 0x2f, + 0x56, 0xda, 0x41, 0x2a, 0xfd, 0x80, 0x3e, 0x70, 0xd0, 0x20, 0x78, 0x7c, + 0xe7, 0x4b, 0xcd, 0xce, 0xb3, 0x91, 0xa3, 0xbd, 0x75, 0xfb, 0xe0, 0x20, + 0x5f, 0x9e, 0x3d, 0x31, 0x6a, 0x4d, 0x4d, 0x8e, 0x90, 0x97, 0x20, 0x95, + 0x75, 0xad, 0xbd, 0xf3, 0x59, 0x01, 0xb3, 0x93, 0xeb, 0x8c, 0x0b, 0x10, + 0x36, 0xbb, 0xe7, 0xeb, 0x85, 0x24, 0x6b, 0x51, 0x2c, 0x9c, 0xe6, 0x84, + 0x63, 0xba, 0xed, 0x9d, 0x5f, 0x8c, 0x8c, 0xa7, 0xdd, 0xf1, 0xed, 0x96, + 0x14, 0x54, 0x17, 0xf3, 0x58, 0x04, 0x8b, 0xec, 0x93, 0x00, 0x53, 0x0f, + 0x4b, 0x3e, 0x98, 0x6c, 0x34, 0x94, 0x0c, 0x0a, 0x6d, 0xeb, 0xdb, 0x08, + 0x23, 0xc8, 0xdd, 0x1e, 0x27, 0xdf, 0x2f, 0x23, 0x98, 0x36, 0x2e, 0xf9, + 0x7d, 0x7e, 0xd9, 0x18, 0x55, 0xb6, 0xee, 0x7e, 0x38, 0x0c, 0x44, 0x16, + 0x3a, 0xe7, 0xdd, 0xc2, 0x9a, 0x68, 0x41, 0xaf, 0x67, 0x13, 0x55, 0x70, + 0x5b, 0x49, 0xa8, 0xdb, 0x7d, 0x32, 0xdc, 0xc0, 0xdb, 0x77, 0x7e, 0xde, + 0x9f, 0x6c, 0xd4, 0x92, 0x92, 0x0f, 0xb3, 0x01, 0xe3, 0x38, 0x02, 0x36, + 0xe7, 0xac, 0x26, 0x8d, 0x3c, 0x32, 0x6b, 0xac, 0x1a, 0x0a, 0x54, 0x42, + 0xbc, 0x9e, 0x09, 0x3a, 0xf3, 0xc6, 0x9c, 0x40, 0xb6, 0x5b, 0x1d, 0xd3, + 0xc5, 0xf1, 0xe8, 0xf7, 0x71, 0xdd, 0xca, 0x51, 0x1e, 0xad, 0x87, 0x30, + 0xc1, 0xa5, 0x15, 0x18, 0x3e, 0xed, 0x5d, 0xf9, 0xf3, 0xa3, 0x02, 0x61, + 0xa8, 0xf3, 0x35, 0xd6, 0xf3, 0x85, 0x2f, 0x4a, 0x02, 0x0f, 0xf7, 0x90, + 0xc8, 0xc6, 0xd5, 0x57, 0xbb, 0x79, 0xff, 0x00, 0x79, 0xbd, 0x59, 0x51, + 0x45, 0x6c, 0xf1, 0xdf, 0x78, 0x85, 0x24, 0x0e, 0xdb, 0x70, 0xeb, 0xd7, + 0xfa, 0xc3, 0x55, 0x0d, 0x6e, 0x21, 0x3e, 0x92, 0x1a, 0xfb, 0x71, 0x8f, + 0xd1, 0xc0, 0x51, 0xad, 0x8e, 0xf5, 0xc0, 0xbe, 0xfb, 0x5e, 0xc6, 0x02, + 0x25, 0x51, 0xa5, 0x9b, 0xd3, 0x7c, 0x7c, 0xc0, 0x86, 0x76, 0x8c, 0x6c, + 0xea, 0x94, 0x9d, 0x73, 0x7e, 0x79, 0xd6, 0x01, 0x04, 0x15, 0x43, 0xc7, + 0xfe, 0x08, 0x48, 0x4a, 0x69, 0x11, 0x2a, 0xfc, 0xfd, 0x18, 0xcf, 0xb5, + 0x30, 0x50, 0x86, 0xd7, 0x7c, 0x71, 0xcf, 0xfd, 0xc5, 0x52, 0x5a, 0x70, + 0x23, 0xa2, 0x5f, 0x13, 0x9d, 0x48, 0xfa, 0xe1, 0xd2, 0x58, 0x05, 0x20, + 0xc0, 0x3d, 0xc8, 0x3d, 0x6d, 0xf2, 0x44, 0xe5, 0x74, 0x42, 0x9c, 0x1e, + 0x9f, 0x5c, 0x92, 0x83, 0x47, 0x33, 0x78, 0x2e, 0x08, 0x05, 0xba, 0x65, + 0x02, 0xa1, 0x97, 0x63, 0xd6, 0x08, 0xe3, 0x46, 0xb5, 0x38, 0xf5, 0xc3, + 0x89, 0x65, 0x22, 0x61, 0xb3, 0x7f, 0xc6, 0x25, 0xbc, 0x9d, 0x6c, 0xd3, + 0xaf, 0x7f, 0xb7, 0x8c, 0x45, 0x00, 0x76, 0x2f, 0x57, 0xe7, 0xef, 0x8b, + 0x05, 0x53, 0x8b, 0xaf, 0x59, 0xf3, 0x96, 0x4f, 0xce, 0x17, 0x7d, 0x43, + 0x15, 0x50, 0x07, 0xa1, 0xfb, 0xf1, 0x7b, 0xc5, 0x55, 0x5b, 0xd1, 0x1f, + 0x4c, 0x94, 0xf7, 0xa3, 0xc6, 0x6a, 0x48, 0xe9, 0xa4, 0x23, 0xfc, 0xe2, + 0x94, 0x4a, 0xdb, 0xbd, 0xe6, 0xc8, 0x02, 0x91, 0x8f, 0x3e, 0xf8, 0x41, + 0x0a, 0x16, 0xa7, 0xaf, 0x37, 0x10, 0x54, 0x6d, 0x06, 0xdb, 0xf5, 0xc3, + 0x91, 0x6c, 0xd0, 0x9b, 0xcf, 0xb7, 0xdf, 0x12, 0xb9, 0x6f, 0x5c, 0xd7, + 0x3a, 0x03, 0x6d, 0x83, 0x8f, 0x0f, 0xdb, 0xac, 0xe7, 0xd0, 0x50, 0x07, + 0x49, 0xe3, 0x36, 0xdb, 0x41, 0x4e, 0x81, 0xb8, 0x01, 0xbd, 0x52, 0xb7, + 0xcb, 0x27, 0xe7, 0x8c, 0x6a, 0x0a, 0x51, 0x6d, 0xfc, 0xe3, 0x08, 0xf2, + 0xcc, 0xdf, 0x59, 0x4e, 0x80, 0x42, 0x28, 0x17, 0x67, 0xbe, 0xf3, 0x40, + 0xa0, 0x48, 0xa0, 0x8e, 0xcd, 0xe7, 0x38, 0x16, 0x06, 0x82, 0xfb, 0xe1, + 0x82, 0xd2, 0x10, 0x6b, 0xd1, 0xe9, 0xc7, 0xe5, 0x70, 0x1a, 0x29, 0x62, + 0x1b, 0x7b, 0x19, 0xdf, 0xa6, 0x01, 0x52, 0x85, 0x65, 0x67, 0x9d, 0xfc, + 0xe2, 0x0f, 0x01, 0x35, 0xd1, 0xf5, 0xc6, 0x30, 0x28, 0x7a, 0xdf, 0x87, + 0x65, 0xef, 0xbc, 0x61, 0x27, 0x2b, 0x85, 0xd0, 0x61, 0xed, 0x5f, 0x4f, + 0x69, 0x85, 0x0c, 0x30, 0xac, 0x01, 0x3d, 0x75, 0x7f, 0x76, 0x53, 0xba, + 0x60, 0x2f, 0xae, 0x81, 0x47, 0xcd, 0x5e, 0x3f, 0xbc, 0xe6, 0x27, 0x87, + 0x08, 0xf1, 0x66, 0x99, 0x7e, 0xba, 0x3b, 0xff, 0x00, 0xc6, 0x30, 0x18, + 0x4f, 0x97, 0xbf, 0xb9, 0xfa, 0x61, 0x89, 0xcd, 0x08, 0xde, 0x4a, 0xec, + 0xfc, 0x7f, 0x77, 0x3b, 0xd4, 0xd7, 0x51, 0x5a, 0x9b, 0xef, 0x8e, 0xdc, + 0x1a, 0xc2, 0x32, 0x80, 0x34, 0x94, 0xc1, 0xd9, 0xc0, 0xa8, 0x74, 0x57, + 0x58, 0xba, 0x28, 0x27, 0x29, 0x0d, 0x40, 0xb7, 0xf7, 0x06, 0xbc, 0x54, + 0x0f, 0x45, 0x44, 0x93, 0x07, 0x2a, 0xc5, 0xdd, 0x71, 0xf9, 0xac, 0x2d, + 0xc8, 0x91, 0x5c, 0xdb, 0x7c, 0xe0, 0x85, 0x1d, 0x9e, 0x6e, 0x4a, 0x8b, + 0x49, 0x0b, 0xbe, 0xf0, 0x08, 0x82, 0x12, 0xba, 0x37, 0x07, 0xf1, 0xc6, + 0x44, 0x00, 0x6d, 0x5d, 0xcd, 0xf1, 0xd5, 0xb8, 0x40, 0x63, 0x45, 0x23, + 0xe9, 0xfc, 0x63, 0x09, 0x34, 0x54, 0x2c, 0xfc, 0x71, 0xd0, 0x02, 0x44, + 0x05, 0x5f, 0x77, 0xac, 0xea, 0x80, 0x18, 0xdc, 0xc7, 0x7d, 0x0d, 0xa9, + 0x0f, 0x42, 0x5e, 0x66, 0x8d, 0x3e, 0xb9, 0x1e, 0x2d, 0x2a, 0x5d, 0x6b, + 0x0b, 0x22, 0x41, 0xa5, 0x27, 0xe7, 0xef, 0x82, 0x84, 0x2c, 0xa1, 0x34, + 0x5f, 0xcb, 0x96, 0x38, 0x80, 0x30, 0x0a, 0x13, 0x97, 0x36, 0x82, 0x75, + 0xa7, 0xcf, 0xb7, 0x19, 0xe0, 0xd3, 0x74, 0xa3, 0xce, 0xf2, 0x0c, 0xc2, + 0x03, 0x49, 0x7e, 0xc6, 0x44, 0x02, 0x17, 0x42, 0x15, 0xd6, 0x0e, 0xa1, + 0x4a, 0xa5, 0x2a, 0x1f, 0x9f, 0xb6, 0x28, 0xaa, 0x2d, 0x5f, 0x0d, 0x65, + 0xb1, 0x90, 0x53, 0x52, 0xba, 0xf2, 0xd6, 0x77, 0x8a, 0x10, 0x72, 0x11, + 0x43, 0xc5, 0xd7, 0x3e, 0x72, 0x29, 0x74, 0xee, 0xd6, 0xba, 0xd7, 0x7a, + 0xd8, 0xe1, 0xc3, 0xca, 0xae, 0xbe, 0x17, 0xc6, 0x2e, 0xd4, 0x86, 0xa1, + 0x67, 0xdb, 0xdb, 0xd3, 0x0d, 0x81, 0x42, 0xaa, 0x94, 0xdf, 0x78, 0x50, + 0xea, 0x29, 0xb1, 0x7d, 0xfd, 0x72, 0xec, 0x29, 0x0e, 0xd1, 0xf3, 0xde, + 0x15, 0x3c, 0x06, 0x9b, 0xf7, 0xe7, 0xd1, 0xc4, 0x22, 0x55, 0xdb, 0xa8, + 0xdc, 0x05, 0x6d, 0x9b, 0xd2, 0x29, 0x0a, 0xf8, 0x9d, 0x79, 0x5c, 0x29, + 0x40, 0x26, 0x50, 0x11, 0x05, 0x15, 0x0b, 0xd9, 0x5f, 0x87, 0x1d, 0x8a, + 0xe1, 0x29, 0xe7, 0xfa, 0x37, 0x27, 0x0e, 0x51, 0x54, 0xc4, 0xe0, 0x6d, + 0x3f, 0x3d, 0xcc, 0x81, 0x86, 0x1f, 0x32, 0xfe, 0x54, 0x7f, 0xe2, 0x87, + 0x26, 0xf9, 0xc8, 0x89, 0xf4, 0xc2, 0xb6, 0x03, 0x42, 0x8d, 0x81, 0xe8, + 0x61, 0xf8, 0x3b, 0xcb, 0x56, 0xc4, 0xd0, 0xd0, 0x2e, 0xfd, 0x2b, 0xc7, + 0xca, 0x60, 0xe8, 0x8b, 0x64, 0xe3, 0xc3, 0xbd, 0x94, 0x37, 0xc3, 0xde, + 0xf2, 0x43, 0xf3, 0xb9, 0x29, 0x30, 0x0f, 0x25, 0xff, 0x00, 0x67, 0x14, + 0x12, 0x55, 0x93, 0x6f, 0x67, 0x91, 0xc1, 0x3b, 0xa3, 0x38, 0x38, 0x70, + 0x0a, 0x26, 0x9d, 0x39, 0xc0, 0x02, 0x8a, 0xba, 0xbf, 0xb6, 0x25, 0x15, + 0x74, 0x54, 0xf5, 0xf5, 0xc7, 0x40, 0x46, 0x51, 0x97, 0x5e, 0x9f, 0x18, + 0x05, 0x96, 0x73, 0xa6, 0xee, 0x0d, 0x47, 0x8e, 0x14, 0x1d, 0xde, 0x5f, + 0xae, 0x32, 0x22, 0x2e, 0xb9, 0x7e, 0xe3, 0xf8, 0x31, 0x37, 0xba, 0x9c, + 0x81, 0x0c, 0xa3, 0x44, 0x95, 0x54, 0xf1, 0x39, 0x9e, 0x98, 0x04, 0x8d, + 0x79, 0x49, 0xfc, 0x7e, 0x73, 0x8a, 0x0d, 0x7a, 0x4b, 0xcb, 0xf1, 0x8d, + 0x01, 0xb7, 0xa4, 0x27, 0x59, 0x2a, 0x94, 0x51, 0xb5, 0x75, 0x9c, 0xf7, + 0x60, 0x84, 0x6d, 0x79, 0xf3, 0xac, 0x6b, 0x46, 0xc0, 0xe8, 0xbe, 0x63, + 0xf9, 0xce, 0x6d, 0x48, 0xec, 0x42, 0x6b, 0xd7, 0xce, 0x45, 0x50, 0x24, + 0x4d, 0xb7, 0xd7, 0xbe, 0xb2, 0x33, 0x21, 0x11, 0x22, 0x9e, 0xa1, 0xf1, + 0x8a, 0xba, 0x94, 0xb6, 0xae, 0xff, 0x00, 0xde, 0x41, 0xeb, 0x79, 0x34, + 0xbf, 0xd7, 0xb6, 0x01, 0x75, 0xde, 0xcf, 0xde, 0x4c, 0x12, 0x52, 0x40, + 0x0e, 0x57, 0xe9, 0x84, 0x1a, 0x4d, 0x77, 0xa9, 0xed, 0x3f, 0x7c, 0x04, + 0xda, 0x51, 0xa7, 0xe9, 0xbb, 0xfc, 0xe1, 0x5b, 0x05, 0xcc, 0x69, 0xfa, + 0xbf, 0x83, 0x16, 0x5d, 0x27, 0x2e, 0xb2, 0x61, 0x82, 0x97, 0xdc, 0x5c, + 0xf3, 0x41, 0xa5, 0x75, 0xae, 0xbe, 0x75, 0x85, 0x13, 0x62, 0xd9, 0xc9, + 0xe9, 0xce, 0x37, 0xb4, 0xc1, 0x15, 0x47, 0x3f, 0x9e, 0xb8, 0x45, 0xa7, + 0x50, 0xbd, 0x2f, 0x1e, 0x67, 0x5d, 0xb5, 0x3d, 0x51, 0x1c, 0x80, 0x53, + 0x68, 0x14, 0xec, 0xb2, 0x55, 0xf1, 0xf5, 0x0a, 0x0b, 0xab, 0x6f, 0x52, + 0xab, 0x4f, 0x1a, 0x66, 0xc7, 0x5d, 0x91, 0xc2, 0x3e, 0x1f, 0x94, 0x5d, + 0xa4, 0xb7, 0xe7, 0xef, 0x85, 0x30, 0x3c, 0x4e, 0x8e, 0x5f, 0x29, 0x7e, + 0x7f, 0xf2, 0x42, 0xf1, 0x8d, 0x69, 0x56, 0x7a, 0x5d, 0x31, 0x66, 0x12, + 0x81, 0x62, 0x34, 0xba, 0x3c, 0x76, 0xcf, 0x5f, 0x19, 0x34, 0xe9, 0x85, + 0xf2, 0x02, 0x83, 0xb6, 0xbc, 0x77, 0xa7, 0xd6, 0x15, 0x21, 0x09, 0xb2, + 0x1b, 0xc2, 0xbc, 0x1c, 0x29, 0xe0, 0x9d, 0x4d, 0x86, 0x28, 0x92, 0x20, + 0xbe, 0x1c, 0x0f, 0xa9, 0xe1, 0xe3, 0x79, 0x6c, 0x1d, 0x35, 0x91, 0xf0, + 0xe2, 0xc7, 0x55, 0xd8, 0x39, 0x9f, 0xeb, 0x26, 0x00, 0x8a, 0xdd, 0xd7, + 0x8d, 0x60, 0xc7, 0x85, 0xdb, 0x57, 0x78, 0xa0, 0xa3, 0xa0, 0xee, 0xfe, + 0x7e, 0xd8, 0x14, 0x20, 0x1b, 0x6a, 0x6c, 0xfc, 0x5c, 0x5a, 0x2a, 0xea, + 0x6d, 0x7e, 0x86, 0x51, 0x01, 0xd2, 0x15, 0xd7, 0xb6, 0x15, 0x64, 0x4d, + 0xa3, 0x2e, 0xfc, 0x60, 0xd6, 0xba, 0xc0, 0x37, 0x57, 0x1d, 0x02, 0x23, + 0xc5, 0xa1, 0xea, 0x6b, 0xfd, 0xe1, 0xd9, 0x85, 0x35, 0xad, 0x65, 0x5c, + 0x06, 0xb4, 0x7d, 0x67, 0xe5, 0xc8, 0x23, 0x8a, 0x34, 0x68, 0x71, 0xe3, + 0x00, 0x0e, 0x62, 0x34, 0xba, 0x71, 0x4b, 0x74, 0x36, 0x6b, 0xdc, 0xfd, + 0xb2, 0x28, 0x35, 0x00, 0x4f, 0x73, 0x4f, 0x1f, 0x38, 0xa7, 0x42, 0xa0, + 0xaf, 0xb3, 0x71, 0x14, 0x46, 0x9b, 0x1e, 0x1f, 0xce, 0x2a, 0xac, 0x3d, + 0xd9, 0xad, 0x60, 0x02, 0x6f, 0x60, 0x3b, 0x6f, 0xce, 0xed, 0x9c, 0x71, + 0x8b, 0xa1, 0x32, 0x09, 0x0b, 0xb9, 0x79, 0xfe, 0xba, 0xf4, 0xc2, 0x01, + 0x24, 0x00, 0x8b, 0xcf, 0xd3, 0xce, 0x07, 0x12, 0x2a, 0x3e, 0x77, 0xa4, + 0xc0, 0x11, 0x49, 0x2a, 0x4a, 0x1f, 0x97, 0x34, 0x84, 0x6a, 0xa0, 0xfe, + 0x73, 0x80, 0xaa, 0x57, 0x25, 0x7c, 0xff, 0x00, 0x3d, 0x64, 0x45, 0x2c, + 0xd2, 0x28, 0xae, 0x2d, 0xb0, 0x42, 0x2d, 0xef, 0xcf, 0x1b, 0xf3, 0x81, + 0x95, 0x42, 0x45, 0x1e, 0x29, 0xfe, 0xb2, 0x12, 0x88, 0x55, 0x2a, 0x8d, + 0x79, 0x9c, 0x33, 0xdf, 0xe9, 0x85, 0x33, 0x40, 0x89, 0x62, 0x3c, 0x0f, + 0x51, 0x19, 0xbf, 0xbe, 0x08, 0x21, 0xd4, 0x1e, 0xc2, 0x7b, 0x6f, 0xd7, + 0x15, 0x17, 0x56, 0xc7, 0x8d, 0xbc, 0xb7, 0xcf, 0x7e, 0xad, 0x77, 0x31, + 0xda, 0x91, 0x8b, 0xda, 0xe3, 0xbf, 0x09, 0x7d, 0xbf, 0xf3, 0x45, 0xd1, + 0x8a, 0x75, 0xed, 0xfa, 0x6f, 0x57, 0xc2, 0xc4, 0x82, 0x39, 0x02, 0xd0, + 0x0f, 0x7a, 0x4a, 0x9f, 0x1b, 0xc1, 0x07, 0x00, 0x51, 0xb1, 0x4d, 0xa6, + 0xec, 0xd3, 0xc2, 0x6e, 0x18, 0x96, 0x90, 0x40, 0x14, 0x6c, 0xa0, 0xe9, + 0x74, 0xb5, 0xc1, 0x6f, 0x2e, 0x10, 0xfa, 0xa9, 0x21, 0xab, 0x48, 0x50, + 0xd4, 0x5f, 0x80, 0xf2, 0xe1, 0x01, 0x84, 0x1e, 0x9a, 0x28, 0x2a, 0x69, + 0x52, 0xa9, 0xa6, 0x73, 0x68, 0x1a, 0x8e, 0x1f, 0x27, 0x58, 0xb6, 0x44, + 0x47, 0x53, 0x9c, 0x1e, 0x0e, 0x7a, 0xed, 0xfb, 0x61, 0x07, 0x92, 0xdd, + 0xbd, 0xfe, 0x6b, 0x08, 0x59, 0x78, 0x1b, 0x13, 0xd7, 0x1d, 0xa7, 0x14, + 0xae, 0x91, 0x4a, 0xf7, 0x89, 0x0d, 0x28, 0x36, 0xa7, 0x3b, 0xe3, 0x11, + 0x33, 0x8e, 0x49, 0x3e, 0x39, 0xc8, 0x05, 0x20, 0x1d, 0x06, 0x8b, 0xfe, + 0xf3, 0x94, 0x02, 0xf3, 0xe1, 0xe7, 0xfe, 0xe6, 0xc3, 0x48, 0x4e, 0x7c, + 0x73, 0xd6, 0x10, 0x30, 0x1d, 0xa0, 0x0e, 0xb6, 0x87, 0x1c, 0x39, 0xce, + 0x41, 0x8e, 0x1c, 0x97, 0xeb, 0x88, 0x9a, 0x13, 0x65, 0x20, 0x8e, 0x93, + 0xd8, 0xfa, 0x61, 0xc8, 0x15, 0x69, 0xfd, 0x98, 0x81, 0x5d, 0x53, 0xca, + 0xfd, 0xff, 0x00, 0x9c, 0xa0, 0x0e, 0x17, 0xd8, 0x3f, 0xf7, 0xe3, 0x06, + 0x95, 0x52, 0x82, 0x29, 0x5e, 0xcf, 0xce, 0xb1, 0x9a, 0xc2, 0x1b, 0xe8, + 0xf4, 0xb9, 0x28, 0x3b, 0x12, 0x6e, 0x1b, 0xfa, 0x75, 0x95, 0xab, 0x77, + 0xb2, 0x9b, 0xfd, 0xe4, 0xa0, 0xe0, 0xc0, 0x35, 0x38, 0xec, 0x97, 0xce, + 0x51, 0x45, 0x9e, 0xaf, 0x5e, 0x3e, 0xdf, 0x6c, 0xe3, 0x24, 0x2f, 0x3b, + 0x9a, 0xef, 0x7d, 0x5c, 0x24, 0xea, 0xcb, 0x4f, 0x1f, 0x93, 0x05, 0x4d, + 0x62, 0x94, 0xfd, 0x7d, 0xf0, 0x38, 0x48, 0x6e, 0xf9, 0xbb, 0xdf, 0x1e, + 0x98, 0x04, 0xad, 0xc4, 0xd6, 0x35, 0xfd, 0xb3, 0x40, 0xca, 0x4f, 0x08, + 0x2e, 0xd7, 0x44, 0xe3, 0xbc, 0x3c, 0x25, 0x22, 0x10, 0x19, 0xb9, 0x3d, + 0x03, 0x82, 0x46, 0xf1, 0x94, 0x12, 0xa5, 0xe3, 0x2e, 0xae, 0xe4, 0x6f, + 0xee, 0xcf, 0x4c, 0xd6, 0x6c, 0x76, 0x80, 0x10, 0xd7, 0x22, 0xd4, 0xd9, + 0x7d, 0xb7, 0xc6, 0x12, 0x44, 0x80, 0xac, 0x39, 0xf3, 0xf2, 0xb7, 0xb7, + 0x07, 0x63, 0xe2, 0x46, 0x8d, 0x3e, 0x07, 0xea, 0xbf, 0xfa, 0x57, 0x72, + 0x60, 0x50, 0xf9, 0xba, 0x78, 0x3f, 0x2e, 0x0c, 0x99, 0x7a, 0x5b, 0x10, + 0x45, 0x68, 0x05, 0x5f, 0x4e, 0x4e, 0xf6, 0x72, 0x64, 0x2a, 0xc2, 0x91, + 0xe4, 0x5a, 0x77, 0xba, 0xdf, 0x67, 0x22, 0x6b, 0x60, 0xa3, 0xc1, 0x27, + 0x52, 0xdd, 0x08, 0x50, 0xa8, 0x71, 0xda, 0x2b, 0x05, 0x40, 0xda, 0x85, + 0x55, 0xcb, 0x3a, 0x44, 0x06, 0x15, 0xaa, 0x22, 0x42, 0x2f, 0xa4, 0x7f, + 0x37, 0x84, 0x07, 0x98, 0x40, 0xc8, 0xf5, 0x12, 0x2f, 0x18, 0x15, 0x48, + 0x2c, 0xd0, 0xcc, 0x83, 0x95, 0x0a, 0x4e, 0x5f, 0x5c, 0xda, 0x98, 0xdd, + 0x79, 0x82, 0xfa, 0x67, 0x22, 0x00, 0x79, 0xfb, 0x64, 0x09, 0x10, 0xa4, + 0x6f, 0x38, 0x5b, 0x19, 0xcb, 0xab, 0xaf, 0xa6, 0x22, 0x71, 0x01, 0x13, + 0x9f, 0x7f, 0xb6, 0x5d, 0x54, 0x1b, 0x40, 0x02, 0x5b, 0x1c, 0xad, 0x30, + 0x25, 0x51, 0xd7, 0x18, 0xc8, 0x08, 0x58, 0x1b, 0x47, 0xcf, 0x99, 0x94, + 0x44, 0x87, 0x22, 0x70, 0xff, 0x00, 0x79, 0xa2, 0xa1, 0xa7, 0xa0, 0x6e, + 0xef, 0xc6, 0x40, 0x30, 0x7b, 0xf6, 0x3a, 0xc1, 0x5a, 0x51, 0x68, 0xe8, + 0xfb, 0xbe, 0xd9, 0x41, 0x77, 0xed, 0xf3, 0x7d, 0x3a, 0x9b, 0xfa, 0xe2, + 0x2d, 0xd8, 0x61, 0xd8, 0xde, 0x55, 0x02, 0x16, 0x27, 0x4d, 0xeb, 0xb7, + 0xdb, 0xd7, 0x35, 0x8e, 0xe9, 0xb2, 0x87, 0x8a, 0xae, 0x8e, 0xbd, 0xfb, + 0xc6, 0x43, 0x61, 0x41, 0xec, 0xf8, 0x3c, 0xe2, 0x9a, 0x25, 0x00, 0x6d, + 0xf6, 0xc6, 0x94, 0xde, 0xf1, 0xea, 0x70, 0xfd, 0x5c, 0x09, 0xc2, 0xa5, + 0xb5, 0xbe, 0xfa, 0xd7, 0x58, 0x50, 0x34, 0x45, 0xc6, 0x57, 0xaf, 0xd7, + 0x01, 0x10, 0xb2, 0x7f, 0xb6, 0xb1, 0x2a, 0x44, 0x23, 0x5a, 0x75, 0x79, + 0xf4, 0xc7, 0x16, 0xa3, 0xc8, 0xbe, 0x8b, 0xe4, 0xbf, 0x33, 0x9e, 0xb2, + 0xd2, 0x25, 0x45, 0x30, 0x5d, 0x0c, 0x68, 0x8e, 0xa1, 0xe3, 0xbc, 0x20, + 0x60, 0x73, 0xe1, 0x8e, 0x96, 0x4f, 0xbd, 0x9e, 0x8e, 0x47, 0x51, 0x74, + 0xde, 0x55, 0x3b, 0x19, 0xa3, 0xdb, 0x86, 0x73, 0x91, 0x06, 0x3b, 0x7d, + 0x08, 0xf7, 0x57, 0xcf, 0x15, 0xeb, 0x15, 0x4a, 0xf2, 0xef, 0xff, 0x00, + 0x43, 0xac, 0xe5, 0xa5, 0x86, 0xfe, 0x37, 0xec, 0xa7, 0x79, 0x2f, 0x5e, + 0xc9, 0x62, 0x72, 0xaf, 0xc2, 0xf3, 0xbf, 0x2e, 0x34, 0x08, 0x89, 0x17, + 0xbe, 0xc5, 0xd6, 0xcd, 0xa9, 0x31, 0xa4, 0x10, 0xd5, 0x0b, 0x16, 0x89, + 0x51, 0x03, 0x39, 0x0f, 0x19, 0x70, 0xc0, 0x12, 0xa0, 0x94, 0xa6, 0xc2, + 0x68, 0x26, 0x9d, 0x5b, 0xab, 0x54, 0x54, 0x1b, 0x51, 0x84, 0x1f, 0x40, + 0x39, 0xdf, 0xa6, 0xb4, 0x94, 0x1c, 0xf8, 0xc1, 0xf0, 0xb1, 0xb0, 0xb6, + 0x62, 0x40, 0x3a, 0xf5, 0x71, 0xa6, 0x9d, 0x38, 0x35, 0x70, 0x80, 0x22, + 0xaf, 0xaf, 0xe4, 0xc0, 0x2d, 0x18, 0x77, 0x77, 0x86, 0x97, 0x04, 0xa2, + 0xa6, 0x7a, 0xda, 0x7d, 0x26, 0x51, 0xa3, 0xbd, 0xe8, 0xd7, 0xae, 0x08, + 0x52, 0x34, 0x36, 0xa4, 0x3d, 0xb1, 0x21, 0x50, 0xd9, 0xad, 0x87, 0x6a, + 0xfe, 0x73, 0x8c, 0x04, 0x6d, 0x79, 0xe4, 0xff, 0x00, 0x58, 0x0b, 0x00, + 0x34, 0x7d, 0xf1, 0x41, 0x09, 0x14, 0x94, 0xc8, 0x16, 0x72, 0x94, 0x79, + 0xca, 0x2d, 0x88, 0x04, 0x17, 0x5a, 0x0f, 0x3c, 0x71, 0x85, 0x36, 0x8f, + 0x5c, 0xcf, 0xcd, 0x62, 0xca, 0x45, 0xdc, 0x69, 0xfc, 0x98, 0x6a, 0x59, + 0xba, 0x22, 0xd7, 0x10, 0x58, 0x50, 0xd2, 0x67, 0xdb, 0xbc, 0x8a, 0xa0, + 0x6c, 0xab, 0xcb, 0xd7, 0xc6, 0xb0, 0x90, 0x02, 0x20, 0x1a, 0xaf, 0xd8, + 0xd3, 0xf6, 0xc6, 0xb1, 0xaa, 0xb0, 0x78, 0x0f, 0x18, 0xda, 0xd3, 0xa0, + 0x00, 0xfb, 0x62, 0x8e, 0xb1, 0x70, 0xb7, 0x5f, 0xef, 0xbc, 0x65, 0xc9, + 0x46, 0x99, 0x77, 0xfb, 0xe2, 0xa7, 0x44, 0x23, 0x53, 0xd9, 0x7a, 0xdf, + 0x8c, 0x47, 0xa2, 0x20, 0xa9, 0x4d, 0x41, 0xe2, 0x34, 0xde, 0x8b, 0xa7, + 0x9e, 0x4c, 0xa9, 0x37, 0x98, 0x69, 0xc0, 0x0e, 0x93, 0x5d, 0x05, 0xfa, + 0xc8, 0x38, 0x0e, 0x5d, 0xdf, 0x6b, 0xc6, 0xb9, 0x13, 0x83, 0xce, 0x2f, + 0x12, 0x02, 0x2a, 0x74, 0x17, 0xbb, 0xb5, 0x7d, 0x7d, 0xb0, 0xfa, 0x86, + 0x0f, 0x29, 0x5a, 0xf9, 0x4f, 0x7b, 0xff, 0x00, 0xb5, 0x59, 0x08, 0x0e, + 0xc3, 0x5f, 0x0f, 0x0f, 0xa7, 0xa1, 0xc4, 0x73, 0x83, 0x2d, 0xbd, 0xa1, + 0xc6, 0xf8, 0x35, 0xe4, 0x98, 0xb3, 0x9c, 0x45, 0x60, 0x02, 0x30, 0x1f, + 0x54, 0x57, 0xdb, 0x14, 0x44, 0x6d, 0x1a, 0x52, 0x00, 0xf1, 0x0d, 0x26, + 0xd9, 0xa6, 0x64, 0x64, 0x80, 0x8d, 0x57, 0x08, 0x9b, 0x34, 0xbd, 0x0a, + 0xb3, 0x58, 0x45, 0xaa, 0xd6, 0x84, 0x72, 0x33, 0xaa, 0x6f, 0xd3, 0x05, + 0x5d, 0xb9, 0xb2, 0x79, 0xe9, 0xc1, 0xa1, 0x61, 0xad, 0x3f, 0x9c, 0xed, + 0xb6, 0x0f, 0x28, 0x71, 0x97, 0x49, 0xc4, 0xe2, 0x73, 0x89, 0xd0, 0x8b, + 0xa5, 0x23, 0xf6, 0x98, 0xe9, 0x01, 0x38, 0x1b, 0xd9, 0x75, 0x84, 0x21, + 0x70, 0xa2, 0xfb, 0x6f, 0x1c, 0x0a, 0xbb, 0xef, 0xe4, 0xc0, 0x04, 0x8d, + 0xa3, 0x7d, 0x76, 0x7e, 0xd9, 0x46, 0x5d, 0x04, 0x2f, 0x39, 0x44, 0x20, + 0x49, 0xa4, 0xe7, 0xdb, 0xe9, 0x8a, 0xca, 0x9b, 0x0b, 0x65, 0x7e, 0xb8, + 0xf1, 0xbc, 0x3b, 0x7e, 0x9c, 0x79, 0xeb, 0x39, 0x80, 0xec, 0x66, 0xdf, + 0x4c, 0x50, 0x72, 0xa3, 0x3d, 0xfc, 0xe5, 0x22, 0x2e, 0xd0, 0x37, 0x77, + 0xbf, 0x1d, 0x60, 0x37, 0x22, 0xd1, 0xde, 0x0d, 0xa2, 0xc1, 0x18, 0x04, + 0x02, 0xb3, 0x45, 0xf6, 0xe7, 0x15, 0xb7, 0x24, 0xdf, 0x7e, 0x4c, 0x1c, + 0xd1, 0xcc, 0x8e, 0xb9, 0xe5, 0xf0, 0xf5, 0xf7, 0xcd, 0xaa, 0xec, 0xcd, + 0x84, 0x0b, 0xfb, 0x65, 0xae, 0x4b, 0x9d, 0xe8, 0x3a, 0x30, 0x59, 0xa9, + 0x34, 0x92, 0xf8, 0xaf, 0xfa, 0xc1, 0x41, 0x5e, 0x07, 0x41, 0x26, 0xc4, + 0xe2, 0x9e, 0xf4, 0xa6, 0xb0, 0x93, 0xe4, 0x04, 0x2f, 0x1f, 0x1d, 0xa6, + 0x29, 0x8c, 0x79, 0x59, 0x4e, 0x9a, 0x37, 0xc4, 0xd9, 0xa9, 0xed, 0x82, + 0xf0, 0x90, 0x6f, 0x67, 0xaa, 0xfa, 0xf1, 0xfc, 0xe3, 0x84, 0xae, 0x6d, + 0x8e, 0xb4, 0xc7, 0xc3, 0xa3, 0xf9, 0x0c, 0x55, 0x55, 0x6a, 0xf7, 0xff, + 0x00, 0xb1, 0xf5, 0x50, 0xea, 0x21, 0x11, 0xf4, 0x47, 0x2a, 0x87, 0x20, + 0xd8, 0x02, 0xbe, 0x77, 0x87, 0xb3, 0x66, 0xcc, 0x76, 0x1d, 0xe1, 0x44, + 0x1e, 0x13, 0x64, 0xbb, 0x79, 0x9d, 0x62, 0xb5, 0x60, 0xec, 0x3b, 0xe9, + 0xca, 0x14, 0x7b, 0xf5, 0x69, 0x2e, 0x6e, 0xfc, 0x58, 0x01, 0x4e, 0x43, + 0xb7, 0x99, 0xed, 0xcb, 0x78, 0x1c, 0x8b, 0x88, 0x62, 0x3a, 0x3a, 0x97, + 0xd7, 0x89, 0xef, 0x06, 0xd2, 0xeb, 0x0c, 0x44, 0x43, 0xa6, 0xfe, 0x7c, + 0x67, 0x05, 0x72, 0x3a, 0xc7, 0x42, 0x44, 0x1e, 0x98, 0xa4, 0x0a, 0x4d, + 0xf6, 0xe0, 0x15, 0x15, 0x6a, 0xe6, 0x7c, 0x65, 0x1b, 0x3d, 0x0a, 0x1b, + 0x89, 0x39, 0x28, 0x82, 0xeb, 0x5c, 0x62, 0xd9, 0x53, 0x4d, 0x27, 0xb3, + 0xf3, 0xdb, 0x16, 0xcf, 0x26, 0xe6, 0x30, 0x14, 0x26, 0xc4, 0xd5, 0xbc, + 0x6b, 0xf7, 0xd6, 0x05, 0x12, 0x87, 0x47, 0x33, 0x2c, 0x28, 0xd4, 0xe1, + 0x9c, 0xe1, 0x5b, 0x0a, 0x6b, 0x5c, 0xfe, 0x6f, 0x09, 0xe4, 0x9e, 0x3e, + 0x71, 0x01, 0x39, 0x36, 0x43, 0x5e, 0x1c, 0x67, 0x80, 0x2e, 0x98, 0x20, + 0x2b, 0x10, 0xd2, 0x71, 0x3a, 0xc7, 0x0d, 0xa0, 0xc9, 0x03, 0x9e, 0x70, + 0x76, 0x2e, 0x00, 0xe2, 0xf5, 0x9a, 0x24, 0x5f, 0x2d, 0x9e, 0x71, 0x48, + 0x82, 0x0e, 0x44, 0xdf, 0xd3, 0x15, 0xb1, 0x2c, 0x2e, 0xef, 0xae, 0x28, + 0x28, 0x22, 0x50, 0xf9, 0x79, 0xfb, 0x7b, 0xe2, 0x88, 0x4a, 0x1f, 0x24, + 0xe4, 0xf7, 0xf4, 0xf5, 0xd6, 0x71, 0x58, 0x3b, 0x68, 0x3a, 0x11, 0xd4, + 0xf0, 0x8b, 0x27, 0x25, 0x31, 0x34, 0xec, 0xd1, 0x20, 0x45, 0x1e, 0x07, + 0xc2, 0xf9, 0xf8, 0xc1, 0x14, 0xe9, 0x43, 0xc2, 0x65, 0xfa, 0xeb, 0xaf, + 0xf9, 0xbb, 0xaa, 0x81, 0xa7, 0xad, 0xf7, 0x20, 0x79, 0x43, 0xc6, 0x04, + 0x00, 0x03, 0xa1, 0x3d, 0x83, 0x7e, 0xea, 0xb0, 0xaf, 0xf8, 0x10, 0xee, + 0x55, 0xf3, 0x0d, 0x69, 0xb9, 0xd3, 0xe9, 0xf1, 0x8b, 0x3e, 0xca, 0xd2, + 0xa8, 0x3c, 0x1e, 0x2c, 0x5e, 0x1e, 0x71, 0x0b, 0x90, 0x82, 0xaa, 0x2a, + 0x6e, 0x45, 0x59, 0xdc, 0x3a, 0xef, 0x66, 0x85, 0xca, 0x3b, 0x79, 0x28, + 0x6d, 0x36, 0xd3, 0xa9, 0x4c, 0x67, 0xd4, 0x23, 0x06, 0xc4, 0x38, 0x50, + 0x89, 0xbf, 0x3c, 0xc1, 0x50, 0x10, 0x1e, 0x2e, 0xbf, 0x35, 0x80, 0x15, + 0x77, 0x7a, 0xcb, 0x11, 0x24, 0x6c, 0xa6, 0xa7, 0x58, 0x35, 0x89, 0x3b, + 0x02, 0x06, 0x2d, 0x54, 0x43, 0x51, 0x7f, 0x9c, 0xe6, 0xd1, 0x27, 0x4b, + 0xaf, 0x38, 0xe9, 0x01, 0x3e, 0xcc, 0x84, 0xda, 0x8d, 0xd1, 0xab, 0x96, + 0x50, 0xa9, 0xbd, 0xf0, 0x93, 0xf7, 0xce, 0x80, 0xe7, 0x82, 0xd3, 0xeb, + 0x84, 0x8a, 0x47, 0xa9, 0x95, 0xa4, 0x01, 0x4a, 0x23, 0xc4, 0xc8, 0x3a, + 0x10, 0xb2, 0xf3, 0x8b, 0x44, 0x2b, 0x77, 0x9d, 0xe6, 0x87, 0x26, 0x88, + 0x3a, 0x83, 0xb3, 0xf3, 0xd7, 0x14, 0x85, 0xfa, 0xb1, 0x20, 0x4e, 0x4d, + 0xea, 0xeb, 0x01, 0xb9, 0x2a, 0x14, 0x92, 0x1e, 0x9f, 0x9d, 0xe2, 0x83, + 0x56, 0x46, 0x30, 0x3d, 0xfa, 0xdc, 0x82, 0x21, 0xb4, 0x47, 0x3e, 0x9d, + 0x66, 0xd2, 0x36, 0xbb, 0xe4, 0xca, 0x0a, 0x10, 0x8d, 0xe2, 0x74, 0x66, + 0x83, 0x0b, 0x21, 0xbe, 0x3f, 0xee, 0x24, 0xc0, 0x49, 0x55, 0xdb, 0x49, + 0xe9, 0xc5, 0xfc, 0xe4, 0x21, 0xb4, 0x4a, 0x94, 0x67, 0x4d, 0xaf, 0x8c, + 0x85, 0x44, 0x40, 0x91, 0x45, 0x48, 0x69, 0x3a, 0xbb, 0x7a, 0xdf, 0x58, + 0xd6, 0x47, 0xc0, 0x8e, 0xdf, 0xd4, 0xd5, 0x79, 0xc6, 0x92, 0xb0, 0x15, + 0x5e, 0x0d, 0x87, 0x31, 0xb7, 0xc6, 0x14, 0x84, 0x9d, 0x3c, 0xf7, 0xee, + 0x7d, 0x39, 0xf4, 0x9f, 0xe0, 0xae, 0x22, 0xb1, 0xe0, 0xdd, 0x6b, 0x93, + 0x93, 0xd2, 0x9e, 0x0c, 0xdb, 0x60, 0x74, 0x1a, 0xed, 0xea, 0x85, 0x26, + 0xf9, 0x9a, 0xe7, 0x17, 0xae, 0x0a, 0xb8, 0x5b, 0xd9, 0xcc, 0x45, 0x6f, + 0x7b, 0x92, 0x88, 0x0d, 0x55, 0x44, 0xd7, 0x69, 0x4f, 0xaa, 0xb3, 0x50, + 0xec, 0x4b, 0x5f, 0x11, 0x80, 0x54, 0x0b, 0xcf, 0x74, 0x8f, 0x3e, 0x1e, + 0xb1, 0x6b, 0xd3, 0xd6, 0x2d, 0xd9, 0xfc, 0x17, 0x2d, 0x1a, 0x40, 0xe8, + 0x98, 0xa2, 0x4d, 0x12, 0x4b, 0xde, 0x06, 0x90, 0x8e, 0xbd, 0x66, 0x1d, + 0x3c, 0x87, 0x3b, 0x71, 0xe8, 0x88, 0xce, 0xfb, 0xcd, 0xac, 0xef, 0x91, + 0xc5, 0x84, 0xe1, 0x0b, 0xa5, 0x3d, 0x71, 0x91, 0x2d, 0x40, 0x63, 0x0f, + 0x6c, 0x10, 0xa1, 0xae, 0xd5, 0xc4, 0x4d, 0x8b, 0x88, 0x75, 0xef, 0x8f, + 0x62, 0x9d, 0xbe, 0x3e, 0x98, 0x71, 0x28, 0x4d, 0x7b, 0xe4, 0xb6, 0x3e, + 0x0b, 0xc6, 0x69, 0xb7, 0x23, 0xd3, 0x97, 0x4d, 0x9a, 0xe0, 0x7f, 0x8c, + 0x28, 0x6a, 0x0f, 0x5c, 0xe1, 0xc2, 0x83, 0xa1, 0x5b, 0x68, 0x1d, 0xcd, + 0x4f, 0x07, 0x2f, 0x3a, 0xc3, 0x4e, 0xb9, 0x50, 0x71, 0xf0, 0xe3, 0x50, + 0x69, 0xa6, 0xce, 0xbd, 0x73, 0x5a, 0xa4, 0xd6, 0x13, 0x45, 0xc1, 0x69, + 0x79, 0xf4, 0x69, 0x63, 0x8c, 0x2c, 0x86, 0xd0, 0x09, 0xb1, 0x7e, 0xc7, + 0x1d, 0x6f, 0x9c, 0xd0, 0x66, 0x89, 0xb9, 0x17, 0x87, 0x9e, 0xcf, 0x1c, + 0x63, 0xbb, 0x28, 0x95, 0x86, 0xc3, 0xbf, 0x58, 0x9d, 0xf1, 0x8a, 0x3a, + 0x0d, 0x3e, 0xe1, 0x16, 0x74, 0xbd, 0x7d, 0x7a, 0x17, 0xfc, 0x21, 0x46, + 0x9a, 0x70, 0x87, 0xf0, 0x2a, 0x89, 0x27, 0x5b, 0x3c, 0xf4, 0x2f, 0xa9, + 0x09, 0x58, 0x15, 0xa2, 0x68, 0x3e, 0x9c, 0x14, 0xe3, 0x88, 0xf6, 0xc1, + 0xd5, 0xa0, 0x34, 0x89, 0x41, 0x1b, 0xe1, 0xd1, 0x0b, 0xc9, 0x2c, 0xe1, + 0x15, 0xde, 0xac, 0x22, 0xb2, 0xb3, 0x83, 0x88, 0xf8, 0x25, 0xda, 0xbb, + 0x9b, 0x56, 0xdc, 0x6d, 0x0c, 0x3b, 0x97, 0xf2, 0x64, 0x4d, 0x05, 0x3a, + 0x70, 0x08, 0xd6, 0x9f, 0x9c, 0x47, 0x2d, 0xce, 0x8e, 0xb2, 0x68, 0x00, + 0x3a, 0x63, 0x67, 0xf7, 0x88, 0x09, 0x12, 0xf0, 0xbc, 0x60, 0x45, 0x1b, + 0xf2, 0x7f, 0x7c, 0x27, 0x28, 0x1b, 0x8e, 0xaf, 0x8c, 0x53, 0xad, 0xbc, + 0x5c, 0x44, 0x88, 0x53, 0x91, 0xd3, 0x8b, 0xda, 0x92, 0xcf, 0x5c, 0x04, + 0x65, 0x16, 0x59, 0xdf, 0x8c, 0xd8, 0x94, 0xeb, 0x20, 0xab, 0x6d, 0x7b, + 0xc9, 0x5d, 0xc5, 0xe1, 0xb7, 0x1d, 0x08, 0x93, 0x82, 0x70, 0x59, 0x70, + 0x01, 0x02, 0x08, 0x29, 0xb0, 0xf2, 0x7a, 0xe0, 0xb7, 0x96, 0xd8, 0x38, + 0x27, 0x8b, 0xb1, 0x25, 0x29, 0xf6, 0xa1, 0x81, 0x1a, 0x32, 0x4b, 0xeb, + 0x80, 0x98, 0x00, 0x36, 0x77, 0xbf, 0x39, 0x00, 0x58, 0xef, 0x74, 0x48, + 0xf3, 0xf9, 0xde, 0x23, 0xa0, 0x1b, 0x6c, 0x7a, 0x8e, 0xc9, 0xd9, 0xfd, + 0xe9, 0xc5, 0x08, 0x0d, 0x14, 0x90, 0xa2, 0xb3, 0x5b, 0xd7, 0x04, 0xf7, + 0x86, 0x1f, 0xd0, 0x83, 0xa3, 0x01, 0x77, 0xd6, 0xd3, 0xaf, 0x72, 0x99, + 0x63, 0x81, 0x40, 0x04, 0x00, 0xe8, 0x0f, 0xf1, 0x1c, 0xe2, 0x89, 0xa8, + 0x22, 0x27, 0x8c, 0x4f, 0x58, 0x41, 0x75, 0xe0, 0x29, 0x0d, 0x3c, 0x9c, + 0x11, 0x32, 0x06, 0x50, 0x66, 0xd4, 0x84, 0x79, 0x0a, 0xc4, 0x39, 0xe4, + 0xef, 0x66, 0x57, 0x52, 0x1a, 0x44, 0xb3, 0x70, 0x53, 0x47, 0x67, 0x32, + 0xf2, 0x51, 0x23, 0x02, 0xa5, 0xa0, 0x4a, 0xfe, 0x79, 0xc4, 0x4e, 0x5a, + 0x77, 0xcf, 0x39, 0x1a, 0xd0, 0x3c, 0x18, 0x1b, 0xe3, 0xac, 0x00, 0xef, + 0x57, 0x44, 0xe2, 0xff, 0x00, 0x18, 0x69, 0xaf, 0x82, 0xfd, 0xf2, 0xf0, + 0xf3, 0xa8, 0xdc, 0x71, 0xf2, 0x1c, 0xe0, 0x8b, 0x9c, 0xdf, 0x19, 0xa3, + 0x5e, 0x4e, 0x30, 0xaf, 0xe5, 0xe5, 0xc0, 0xb1, 0xbe, 0xb9, 0xc7, 0xbd, + 0x1b, 0xd7, 0x4e, 0x5a, 0x82, 0xbe, 0x17, 0xb1, 0xee, 0x64, 0x84, 0x26, + 0xcd, 0xae, 0xf2, 0x8c, 0x34, 0xf2, 0xfe, 0xf2, 0x00, 0xd9, 0xe7, 0xf7, + 0x62, 0x46, 0x87, 0x63, 0x7c, 0x63, 0x0a, 0x1c, 0x2a, 0x8f, 0x03, 0x81, + 0xb5, 0x2e, 0xb9, 0xc3, 0x0d, 0x18, 0x78, 0xae, 0xf4, 0x60, 0x34, 0x88, + 0xbd, 0xf2, 0xfe, 0xf8, 0x9a, 0xd8, 0x8a, 0xab, 0xae, 0x34, 0xfc, 0x5f, + 0xbe, 0x10, 0x3e, 0x62, 0x69, 0x5b, 0x7d, 0x49, 0x78, 0xbc, 0x1e, 0x31, + 0xd9, 0xba, 0x11, 0x79, 0x2d, 0xf6, 0x3a, 0x34, 0xd7, 0xdb, 0x04, 0x8a, + 0x4a, 0x02, 0xf9, 0x53, 0xb5, 0xdb, 0xfc, 0x00, 0x7f, 0x8d, 0x5d, 0x37, + 0x2d, 0x27, 0x49, 0xd0, 0xe9, 0xcd, 0xcc, 0x94, 0x20, 0x44, 0x08, 0xba, + 0x51, 0xcf, 0x4f, 0x84, 0xb8, 0x25, 0x2e, 0x69, 0x4b, 0xcc, 0x22, 0x07, + 0x3c, 0xcf, 0x57, 0x10, 0x59, 0x84, 0x17, 0x0e, 0x64, 0xff, 0x00, 0x8f, + 0xd5, 0xc2, 0x90, 0xa9, 0xc8, 0x2d, 0xc6, 0x01, 0xfd, 0xcc, 0x68, 0x5d, + 0x7b, 0x06, 0x35, 0x42, 0xeb, 0xd4, 0xca, 0x1b, 0x5d, 0xf1, 0xef, 0x8a, + 0x3e, 0xf2, 0x5c, 0x14, 0x3b, 0x94, 0x98, 0xa8, 0x85, 0x38, 0x07, 0x79, + 0xbe, 0x7e, 0xa9, 0x2d, 0xc1, 0xa1, 0xa1, 0x37, 0xae, 0xb3, 0x6d, 0x23, + 0x83, 0x41, 0x7c, 0x65, 0xd9, 0x72, 0xea, 0x62, 0xd2, 0x56, 0x9c, 0x64, + 0x4b, 0x96, 0x10, 0x68, 0x35, 0x1b, 0xdd, 0xfe, 0x3d, 0x73, 0x6d, 0x44, + 0x29, 0x3c, 0xe0, 0x38, 0x3d, 0x45, 0xc8, 0xb4, 0x96, 0x6d, 0x0a, 0xe4, + 0xaa, 0x87, 0x6d, 0x43, 0x0b, 0x9e, 0x07, 0xa6, 0xe7, 0x6e, 0xc4, 0xf0, + 0xf5, 0x80, 0x48, 0x09, 0x46, 0xba, 0xf1, 0x90, 0x1c, 0x3d, 0x29, 0xb4, + 0x8b, 0xe9, 0xfe, 0xbe, 0x99, 0xa2, 0x25, 0x72, 0x02, 0xf3, 0xb7, 0x41, + 0xdf, 0x12, 0x76, 0x70, 0x48, 0x24, 0x0c, 0xe8, 0xeb, 0xc0, 0xe8, 0xf7, + 0x7b, 0xff, 0x00, 0x20, 0x28, 0xaa, 0x8a, 0x30, 0xed, 0x37, 0x5c, 0x3f, + 0x5e, 0xb3, 0x94, 0xa9, 0x89, 0x08, 0x34, 0x79, 0x37, 0x7a, 0x4e, 0x6e, + 0x56, 0xc2, 0x5b, 0x6f, 0x92, 0x79, 0x35, 0x87, 0x44, 0x54, 0x86, 0xde, + 0xb8, 0xa4, 0x20, 0xd3, 0xbe, 0x4d, 0xe1, 0xa1, 0x4b, 0xde, 0xce, 0x72, + 0x45, 0x45, 0x39, 0x7b, 0xc5, 0x04, 0x39, 0x9d, 0x99, 0x03, 0xb7, 0x2f, + 0x43, 0x8c, 0xa0, 0x78, 0x1e, 0xbb, 0xcd, 0x3d, 0xdf, 0x8c, 0x05, 0x9f, + 0xdb, 0x2c, 0x89, 0xbb, 0xbc, 0x6a, 0x10, 0x87, 0xa6, 0x2d, 0x7d, 0x59, + 0x01, 0x4b, 0x8a, 0xf0, 0x36, 0x7a, 0xf5, 0x90, 0x95, 0xe2, 0xf0, 0x71, + 0x8b, 0x5d, 0x98, 0x01, 0xea, 0xf7, 0xe3, 0x0d, 0x00, 0xdf, 0x5e, 0xf9, + 0x5b, 0x1e, 0xee, 0x30, 0xd9, 0x03, 0x02, 0x23, 0x1d, 0x7b, 0xf3, 0xf3, + 0xce, 0x28, 0xd9, 0xc3, 0x55, 0x71, 0x27, 0x9e, 0x3d, 0xb3, 0x65, 0xe1, + 0x69, 0x54, 0xdc, 0xfa, 0xba, 0xbf, 0x4f, 0x3f, 0xe5, 0x70, 0xaa, 0x90, + 0x41, 0xb7, 0x6e, 0xce, 0xbc, 0xf1, 0xe3, 0x06, 0x8b, 0xc8, 0x49, 0x5d, + 0xbb, 0xb5, 0xee, 0x77, 0x9b, 0x1d, 0x8f, 0x73, 0xdb, 0x0d, 0xb2, 0x85, + 0x12, 0x62, 0xb3, 0xa8, 0x68, 0x30, 0xd9, 0x21, 0x6e, 0xd6, 0x65, 0xd6, + 0x2f, 0xab, 0xce, 0x06, 0xf8, 0x73, 0xde, 0xf0, 0x50, 0x55, 0x5f, 0xae, + 0x02, 0x10, 0xeb, 0x7e, 0x30, 0xd8, 0xb2, 0xe2, 0xc3, 0x91, 0x7e, 0xf8, + 0xb0, 0x85, 0x90, 0xf6, 0xb9, 0xb3, 0x5c, 0x3e, 0x98, 0x21, 0x69, 0xf3, + 0x79, 0xc6, 0x88, 0x3b, 0x38, 0xc1, 0x20, 0x2a, 0x2f, 0xd7, 0x27, 0x06, + 0xe0, 0x23, 0xc3, 0x91, 0x45, 0xd3, 0xbb, 0xf7, 0xcd, 0xad, 0x8d, 0x68, + 0xd3, 0xce, 0xbf, 0x7c, 0x81, 0xe2, 0x6b, 0x6c, 0x76, 0x3b, 0x0d, 0x4e, + 0xaf, 0x99, 0x8a, 0xaa, 0xad, 0x5e, 0xff, 0x00, 0xca, 0x18, 0xd3, 0x4e, + 0x4e, 0x41, 0x50, 0xb4, 0x98, 0x13, 0xc5, 0x97, 0xd7, 0x7d, 0xcc, 0xbf, + 0xd4, 0xd8, 0x45, 0xe8, 0xd6, 0x21, 0xe1, 0x7d, 0x71, 0xf5, 0xdb, 0xde, + 0x24, 0x8f, 0xef, 0x8f, 0x00, 0x89, 0x21, 0x71, 0xd9, 0x09, 0xae, 0xd3, + 0x2a, 0x7f, 0x19, 0x03, 0x9e, 0x7b, 0x32, 0x90, 0xa1, 0xa7, 0x9d, 0xd7, + 0x1a, 0xf5, 0x30, 0x0a, 0xf3, 0x7a, 0xce, 0xa4, 0x8e, 0x40, 0x39, 0x37, + 0xd6, 0x68, 0x6e, 0xbd, 0xbc, 0xe4, 0x14, 0xba, 0x5e, 0xba, 0xc0, 0xc4, + 0x4d, 0x65, 0xd3, 0x27, 0x56, 0xf1, 0xed, 0x82, 0x76, 0x88, 0xee, 0xfd, + 0xb1, 0x8b, 0x7a, 0xeb, 0x19, 0x18, 0x6f, 0x9f, 0x66, 0x07, 0xed, 0x6a, + 0x2f, 0xaa, 0xee, 0xef, 0x00, 0x8a, 0x47, 0x82, 0xd0, 0x1f, 0xe6, 0x20, + 0xa2, 0x1b, 0x54, 0x44, 0x4f, 0x08, 0xa6, 0x0a, 0x41, 0x0d, 0xa7, 0x22, + 0x87, 0x62, 0xcf, 0x5a, 0x3a, 0xba, 0x34, 0x26, 0xf8, 0xcd, 0x17, 0x11, + 0xe4, 0xd7, 0x06, 0x6a, 0x17, 0x8f, 0x4c, 0xf9, 0xc5, 0xf2, 0xeb, 0x2b, + 0x6b, 0x50, 0xfa, 0x63, 0xdf, 0x5e, 0xae, 0x72, 0x75, 0x83, 0xd4, 0x3e, + 0x19, 0x89, 0x43, 0x50, 0xf3, 0x96, 0x90, 0x35, 0x9a, 0xd0, 0x6f, 0x08, + 0x14, 0x3b, 0x44, 0x39, 0x98, 0x94, 0xf7, 0x35, 0xeb, 0x7e, 0x98, 0x8e, + 0x97, 0x5d, 0x71, 0x86, 0xbc, 0xef, 0x9c, 0x0b, 0x44, 0xa7, 0x9e, 0x1c, + 0x3d, 0x28, 0x82, 0x4e, 0xd5, 0x9d, 0x60, 0xcb, 0x2c, 0x8d, 0xc7, 0x6b, + 0xfc, 0xe3, 0x87, 0x35, 0x66, 0xfe, 0xea, 0x3f, 0x65, 0xcd, 0x9e, 0xf1, + 0x0d, 0x26, 0xc1, 0xec, 0x49, 0x31, 0x37, 0xc6, 0x42, 0xbc, 0xf4, 0x26, + 0x5d, 0xec, 0xd6, 0x3a, 0x9b, 0xd3, 0x8e, 0xc0, 0x6f, 0x38, 0xa5, 0x4f, + 0x4c, 0x4d, 0x6f, 0x57, 0x8c, 0x81, 0x26, 0xf7, 0xbf, 0x5c, 0xd2, 0xf8, + 0xf4, 0xc1, 0x16, 0x97, 0x2a, 0x8e, 0xd4, 0x9c, 0x60, 0xb1, 0xf5, 0xc5, + 0x46, 0xbf, 0x5e, 0x73, 0x41, 0x0e, 0xf3, 0xa6, 0xdc, 0x5a, 0x23, 0xc9, + 0xbc, 0x56, 0x61, 0x0f, 0xca, 0xe0, 0x0f, 0xb5, 0x63, 0x33, 0x8b, 0xf7, + 0x7d, 0x7d, 0xbf, 0xf8, 0x15, 0xe4, 0xa7, 0x34, 0xca, 0xbe, 0x67, 0x27, + 0xcf, 0x83, 0x19, 0x9b, 0x8c, 0x23, 0x47, 0x2d, 0x23, 0x8a, 0x8f, 0xb6, + 0x37, 0x5d, 0xe7, 0xdd, 0x8a, 0xe3, 0x00, 0xee, 0xe0, 0xfa, 0x0e, 0x70, + 0xdf, 0x3e, 0x99, 0x35, 0x0d, 0x66, 0xc0, 0x6e, 0x1c, 0x66, 0x9d, 0x47, + 0x02, 0x13, 0x67, 0xae, 0x7a, 0x13, 0x5c, 0xdc, 0xfa, 0xe5, 0xe3, 0x2c, + 0xb9, 0xfb, 0xa0, 0xf9, 0x57, 0x9a, 0x5f, 0x0a, 0x8d, 0x46, 0x18, 0x70, + 0x1f, 0xfc, 0x01, 0x8d, 0x33, 0xa8, 0xa4, 0x41, 0x6a, 0x33, 0xa3, 0xe0, + 0x4e, 0xc6, 0x23, 0x51, 0xd3, 0xc6, 0x21, 0x0d, 0x7c, 0xe7, 0x00, 0x9a, + 0xf7, 0xcb, 0x0d, 0x1b, 0xf5, 0xc7, 0xb7, 0x78, 0x79, 0xdf, 0x5c, 0x19, + 0x63, 0xae, 0xcc, 0x9a, 0xd0, 0x61, 0xb9, 0x4c, 0xe7, 0x78, 0x1c, 0x7d, + 0xcf, 0xae, 0x06, 0xb8, 0xdf, 0x9c, 0x36, 0x1f, 0x4c, 0x74, 0x1d, 0xf7, + 0x8f, 0x8b, 0x6f, 0xa8, 0x76, 0x8f, 0x40, 0x72, 0xba, 0xcd, 0x94, 0x09, + 0x36, 0x7b, 0x14, 0x91, 0xd7, 0x50, 0x95, 0x2c, 0xbf, 0xfc, 0x25, 0x9f, + 0x5b, 0xec, 0x5a, 0x7c, 0xad, 0x9f, 0x25, 0x29, 0xc1, 0xc7, 0xe5, 0x36, + 0x31, 0x1a, 0xba, 0xc8, 0xe7, 0x6a, 0x43, 0x5e, 0x1d, 0x0b, 0x59, 0xbf, + 0xe9, 0xc4, 0x80, 0x57, 0x87, 0xfc, 0xb3, 0x41, 0xe6, 0x41, 0xfb, 0xfa, + 0xd6, 0x2e, 0xe2, 0x16, 0xc3, 0x5f, 0x38, 0x7d, 0xd2, 0xea, 0xef, 0xbe, + 0x12, 0x34, 0xdf, 0x39, 0xd4, 0x24, 0x1d, 0x6c, 0x73, 0x12, 0xf5, 0xd3, + 0x1c, 0x34, 0x33, 0xba, 0x5f, 0xbe, 0x15, 0x48, 0x9a, 0xda, 0x18, 0x00, + 0x6b, 0xb8, 0xaa, 0x87, 0x8c, 0x19, 0xf4, 0xdb, 0x17, 0xb7, 0x01, 0xeb, + 0x92, 0xc2, 0x45, 0x28, 0xbc, 0x08, 0x9f, 0xfe, 0xd9, 0xff, 0xd9 +}; +unsigned int background_T3T1_jpg_len = 36707; diff --git a/core/embed/models/T3T1/background_T3T1.jpg b/core/embed/models/T3T1/background_T3T1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..64a332b4b894e4282b2fc662baa1f27e5ca34b83 GIT binary patch literal 36707 zcmbTd1ymhNvnV_pcZcBat|7PtclY29L6cx1xVuYmcZUE$f@^RmxI=LFx5;<TJ?Gx{ z{<Yrwd++Y)>8UR3n(40UndiCZRRB#!LRta<fgk`v@DF%iL*Ev6wK4|)X=!=@4gdgX z03QSmfWS2wa3=Vxt^%&pf*}92LxSsUU<63uqYgN;gX>t}BNz$b4$j;Vz@PKKkCM{z zN~G+}Y^=<j06Qz&8(vl(UN$yTw%5GiIv3juRS?u4%q8I7pug%b4G>_8FVt4S8S*dc zFyK1Ozv|fk;tB-uA3WP&7>K{>*J$7qaDw~ud;Yf$z{FmtJTC%o0XP^KSQuzHSXfwi zcsK+kEMz1^L?k>6OjIl)d=g?Jd_qD}N@f~Taz+Y5LRxM*MpiaXPEHaU9)UOP{LCDj z>@P?_@bK_Rh)B4|$hhoegk<dh&*}LGfDQ-ds00#34nUxTAkjh3-2e%gPiWAe^dC{c z=Ma!k&@ixY@Cb-tfO@nSO+i9HK|(`AL4mJ&g0BNm=+GEsY$7n2%0{r{j#%tIG1+hw zqSYPPD&r@V9L7$*@CZ1saPjb|sA*{F=sCGwbHCx?eJds|At@y-qpGH^p{b><V`6G% zZeeL<?fl{6Cl^;YcR&Atz@Xre(Ac>6gv6xel+>Kuy!?W~qT-U8+PeCNZ;egOon75M zy?y-ygA<ce(=)Sk^9yV18=G6(JG*=Pr)TFEmsi&}w|6gcfxv_MclwWH|3fZxuv`#O zP>@itFLHq(TwVl6hk_<!gTW9{hBb1;Bxm=5!xD|juI_-R;7~ciHg+0Ez@g+^qdI*N z?T=*tcY^u;|B~##1p7y>1po;W1Rgv{bU+9=rp;-rBz6rv>!hllOwOzLo*(~Fc@EVb z_^sm_y_PR7_?xcaXzpVM%l&W7QF|BeWYY{yC->S0d4B6L7H5SYo}jBC``eqar+X~V z=E<ioM$bT7k1Ou<VRQP_*7WaD4W2t?LxG*cnauNZ)W<8@d(W(AAgRdfxLP0evDDlh z=b>1r{=HX=WmS~x(|FA@kl847yqd?G5PaZfCv=!q3HLNpPXy1oa`@G8zNm`$^s%_` z85q6%_V{RUntQLR2<~xUe}C7$p^wH@>LrnnKV2n&9|k&FS!i~7cm@`|R;Hf;e8t0e zd{177UdQ{-K!mHo)mGyZPTtc}!_xtnyV-kPc`%xLgZqc}4e7_qf@fe%boS{PV7ZwM z@Uqhd(|euw^vmzbtsVz*sl9=7^bStv8Ccl@BNl4l?05#)2ozuX>SKItWV^;yMX871 zFaaap<9h#E0wL+Dtgk9T`st%BnuJLIRb>W6(qYtnZKm}F3zT(IViMcjlGLa@%b?Hg z+*0-7LKxD8HEm8bv_tA+RrAb|di(s7==bK0kBYY_zwXhzL=?y^BKB);Q`0+1yB(X< zN#3emO<i~4r_VhD1*6YEHom1kG%LA%0$wYOH9Ar^%+fh}blbGCYj?Rl8kNgHU1kNH z@3iwdM`o@Hgt+i{@5arnP=!!F0o~PjaKx}1BetfUhqHofteMs#>Cye5l@G4SfpndR zsxA3~aU*5*Il`d;FY0N@7Wwj%X<7NU319&^6OD8A$R;dus4V52M?rXe4hYGSoZl#$ z8owIavNMJ>@p{`)0QFsSN=fO{p1K`{xP8*6D}JPl;?0QRPcwtUl!TeKaZjAUYSuN0 z4jg3o6bo#0#s}LkD(vtFifvj?GdU9U8A=qyjqA~<3qlAcC{~PDcJXvn4zJ@5RGLqP z5ltLsl41t)R=I^_E@eSaUyU~+CbA#J-DpYP+|5?%P!C1$6H8e>1IY#67do^#c}9A6 zMP2vqn;xi}3^f%r8vUoxvx1p}X=0;<ts831qYsz%+g84LZMf6SL62PaJMvP?5(}Z) zRSM9o6e*!@7$rw+1C5p6NY<3Xx)-k%Jn1Ql2v2eQX1-pHe|L#(y3B(<utG!(A^LQz zjvyGAF990+CM;p|#v1t<;P2a!yb42!i5f|MRo)keK!GL|{f#JyWKHgj%q&@OX=Jn1 zB&#Gy$>ag@Jnw1D_8BPE0h;LX7{%NSSlM@oSV23NdHynX+;W4MX}>q>)$skE0f#Ri zyex&Tp-HJ-sW89i(m|!?U19T)dALeE$ffZ06$=P4eyNwe7a2WaBAX(?ovQ<x45WOu zt$2M6*{c0fnpr~=VUS|6?ry#I8K@(<50ktK&-|qWd?z$!+J&Rlb-IhP*4Wf=Ymd%s zt}if5AoaC+g~)FAHX|n)`!oc0rqvfsz9&RzIqFU`8vQ(~+yjc_fKjo<Yr-EkOIc*! zvKUtryR_o)%g!9j8TP^~NeSvr#;;7HhvIIzQ;*|Yge9+8ji-;!GI%XQmjlnh1*UpE z=o!GYX}|luGE%<#44mEx9ejNTcBzvI)3ID~qB}!rvmpLwZZ7ppN0qt?X}_S~vMKtS zjwrqHq}~1$APULVcG9OeTe;}OsQBpol(5N?-W7U<NcFQm<VtZ*9_|9>zVAR<X2tc< zie3V{e?Rk#FwH&SNwj%?^P|Bn%FhdfO*$~A5t0$+*H7Pt&P!8SczvU;NN(}VOOcxo zPx_=6Z>P&qpG2*mHvYq8%)S+!;<AvA%v%K79Pj@v?``soeW<*q1V3j=lPl6AKOi$a z&I?`81EUVys4`a(y!`X?Ud@>kEk=FAg7ruE*6R~vUNxB$$&oFWobiRld0>T7l{^Fe zpS*IO0r~@**lFj-Chl>sgf}4>d=&+wXe*G<fI#xp0x?P<$$i8#kd+$MEp*0i;593g zB#JjpK_sXFCN9s)LvbB76PwU>dN-kht1ONM{Lic@=e21t5mncIhwaQY!TJn@ddS?# zf*&(u&>TZ7Gp!3hj1dj4HSaY2y@o_Cv5&5V_TRUK$;0g{s!EF-h)Z=g$!mFa-+@7H zH8u4rDxU$eUIF$ndH4*zb+#ys6);0z{2fcWMse*Qp(gpIgx2%ho`H(YG1UvQbRE#| zl{@$XSn8Ldq0>DkDW@U}z)}{5{-60n(3AKQ!_xv-`yYSKN_lO*n|KBeE1!adv6^KH zms@ALpSEWor=JqmD7Sh&ZGJHtz+3V~``xOF@<C3G|HncZ%8_i|d2OXW103(vofb}d z>rfxr4YsYaIr>_ZUf*O~xHmqDMu128#Op`<1*YPu<>Go+?m^v?Zwh!y>(>Fz9(%nQ zXs+k^WnQ7sihXgx#Q#~P(&0DGayx}!gU+7ien%~|{&nIBJoD|UfrOudGUY|`*3|L- z*nW$fT#}+nd?n;gR1NIktVG{%OoaMK&auWKA3k6yzo<3}4as_(L@Vf=YjT!roh|I( z)1|18!BZ<&W6Ea6Yxy=xlc-kw)Z!QRj8~qZU(8_o^up+)hm}zKt23^+Y(g8HC84lq zK!o$h*5)&ywW2CtDEn0Z3@mdl{C}9P(6-K`&~nl<AX;J9%qo4doW6^1@QC2epo@Gx z#!_1JXfsQ`{WRt^srF>tk}FSe>7fpunEY;MOLZ_7T9d)`p}r09J%|72F}xGfOH*gB z)OD*VsdpWkbgdB;87c84_ZcXcw?jI&4`wsxqkDwc+2-Vi)Myw$Ozc%`B>!%JC(O*x zdj^U_4B9&mJvXyUn>42Tl`Hv?p0$f1+KV@|zPrYPZ$PjhN>JGG`$ZlHdFbrDSmyF0 zo!Hqk;O@<~Tka(&_qZXuJ?MO1515Smx+BbDN=LO#wb@)pkHJVx?piLaED0spgb=RU z38mA<1n*lyl9+gXcvAaLa9?;<p8i`X_~}ENiI>M^7Sg+@$C-!HtY4*BbDg@^p(8yW z-imld{GDFGPag>|<-{K$*r>n5;vqQybpH|;G+Pcl0~slg$Zn$nxlCS^?Z5Oa4)nv; zDwhwgR(>DRJl%4BfE+8z35^Lbx+xI2(`kP=k0#lBv~eo7J|T#pUxR&@LK4I|M#y<e zb(ASk8y<pIxu-9}Xm9UG$;{f{qqwGDkJL@53A;f+Qfs|pB@(=YH+uhWKZUjvSwf!m z%ZF1HHcvX&0$*_!Yk))cdp+l;{Lvj@1jT$Ryp2%M<-;z>$;utc;<6y4uC-Pe1+u~F z87L|+C7xRKPz6c4TfG_G5_yBWk>RWu!9Sm%8QX^i8oTj?!U=c=LPl&_PDF2;yJJm` z#Jt$W9Zt9t(1hPWV((_6t_qnoH&Yz5irgq&LDuGk(o10ZL%>mxo>*CCp|VZoz86x? zfO&#_b4}DPGcfc1mD)rG%dKTQyQfX{>9o&0_Jhsjrq`}bWJ6{w>Xv2`O?tF)Xv|<5 zx&rZK?fN@@-FJ^AWcN+(_xPPZr3R$?FY;GSuzoCG*k!@)RM3vnL|Ucv7b0C}!J?-s zz?M_H;pPfHe9D5pQ}x*><ow~5KQNjP2({<q_2Cs@{$!B>90ksG@IPz8sPG)B8AlB} zw0@tdGGJ1d6p=&ZJM+9*Z_VwTfmJ*?%u`^aU;$gT>gZXIo4tQsZkbJV_fWElplQ(D zr%G!=Bo!0z<3IZ4iG`-G)8lEuRM$mEzIyL58*Qx-XXPH=FyYrkP+9cbX1+A}G%DyB zsAp`OhIj_@MR`#-3>3>byGP%&_;4W$<d`gyH*!ma%o7^<bYTDLAd3hkW_A4OoIzTT zw(M3MF2t{D7#{7K6OC`s8{IP?P}JW;ElwOn5&$r}=ED*Prb-j4C_z5OuR1D6ozZoL z0$yL*bvTaYVJj(BHwc39j)h;@ZY<;{J1OFoejg$Pjb<IIkG)p{VK3ewb|DupM@Z~> zjg#6(liXUatkMM^e#Xv5CXv)OGq@;?CRV(XG<wGc0Ia+S;DJ>Z2ma1(vl09}S3J6E zHF9D*>{(Bk2NxBn8X<O!h|ohc<gIsFv91|(O8j=LgYM}1;u|EWf*~Bgq092OIUXl> zt>e(QlRJ8_Zq-WBCvx-HJe1_Auz;px>0=4Yp8(5D+8aVu*L)&c&@cRI+a}v-$6W?Z z$*RVwO5?iv@RkWe(B6?Hq)C@PNoF^1&O$GOXgg<($x-FaY_qm@N8x;rm8}n1h-eXZ z=Gqd(O4ow1PA8<)7c0}F!zb)YssC+#QDUw0v8~jIDSgl`QY6a3Q?gYz$6L_hRKd?N z%lb@50Y&h_J`&FZT}%B!GyF5htB?;aL6)x^A;yFpJOu;W+#7vmZ9+&>5TpsP%_yS9 zS;;x$>*B!^E)xKe22Glu1y7-Jge^ju2Jp=`-yn9%X6>yXZE<+<`Z@_sS6)kAR=iz{ z3c$JYI{eyyjwF8{VARE3xu)OoG8_Ky%)Ts+S_;>_{I^oKxI7SDVluZ<$W^2TBB9;u zu|Vgqu9(4Yl<-0O{mIIj>|;<#M(X>W#~b^T%7POCXk6lW&^hhcNBcV%eXySs_zWNz z+(=$}-9axu1FL+`K!7Kg&z=M=<hJA5p~;hvX5rJ)$^-pX%o?(R@-%5foMLkzwS9&( znHk`+8G1(_3X~RVbrsCLwSs_-<U#;S)&Bb&PVzkepBM)u1jNf9oS?veXt<YX0W<<E zEDRhH0umA;0wN+Z3I-Z73OWiRA{q`FIwlr2HZ~IKD_k5bTnsF1tUoahNN^u0Xn1I7 zcr0W@WUT+^^xO%KaX@H+q9H+G_x|q~2O&5R17__d?DTi~I~D+r6ukOx!H+)x;H%Gn zx!P!u;1Cb!^6!5Cha(1v6ab(Ac)<H5!UZc<JIVm97at4JDcXq@jSwe_;0sVjBSecR z!O@GrKx*(%U4H)lD+_>4+jnJ(wk6mKn-0T6#85&5srW<4Vn~rfz@aONV56%PaDYtW zDqVXH*}Z`ig~t8ZQ^%g(<_<cuVwKI<fM(H7gmR?@5g=N0D%!gyS}W&=w7$g1hF*Po zfq}+O7BH)bf0)jBE@u;#hzOyIu`5eMW9kp_!xx^krc)ZIRsoTsfe<4}vvCw|^~ z+Glt}s`GzsaP9+pP_bpPphD&)1Oj;DfDkA^T1A=^10h<PN(w50wk|a7sIb!7JZa{3 z7vMsrKMZ^6ky@6>Y^cw!8;xQ<l>aIq5k+B`Etl!{Z{BogUc&T*H+zP^aU8}&oM;4! zXE{nzR8wm~Fm%>VR~`ym`Ii;$0J7@fz47=tc;#zeOJ*#`5I$%jXX7+r-Nzi$kQx>} z8R?>0ZlSxEQCpC+FWWy~WM2^9lJN2OvVm$?q?am^30v~k&PRbvmDsyk0RX0YOQ1SY z@XJnFgBhdNjBW~=x~-|W#=EyxTuGu@d?>Xu=jHbt7>+7u4SKV$F|}O|e0~ll@yNn( zV2tgQU8T+lyl4Zo*;<{-4~svX1RXA0@;>{+Mof_`rVhptb@TCj=k|GXx&<$xFN%Qm zC%!ki8hXVe`yU?;YHS2NxD#vgWpK@QY_H0Hy8ThCHh);dCzB4g(i994lZbcP5=&{` z(u_J)5~BG7MLtlz0HX<`X_+IHOteU#zTN2iNzneo1%O|?@mTwf7(GJ9oD?^)2Oj8G zgYb_PfewY}5i!9thNr|G{3>l+K#@{uU+z5Pwx0#5cE&t6N{kutj!|zzGa~*UV}-Sw z`ABN0uPrbtulffPw6Rp3!B2zVpMoOONayM%{12?lp#r`Pu4Yp0uTrJUHuo&xha0S| zt)!ocwkp}cEHn!u?LV+6w`C{eFch%@lk(0pP5a)E@SC2Fb*?B}ro&F^-LgMkqP%}4 z$ku&FcBRgiSdX^UowD;8R*(;WVZ|rZ%+pe8=hzBz{nmfuy)5pLRt5DF-xfel^MLW{ zogFpye}0TGmz!>Jbh?}u{u?a-xI`$h%Ooec3EZn9+$9N^0Jw@w2jPXIt}~|nPF%f1 zGh6?_f|l#wq>y&nXNv5rdy-_70Bjkmvji5SxHDoub+_YN^_BjCC0bDpkClTZ_e9Q1 zzXyZTx=HH2&lE6GNr@D#r`oUa{s;8vF3mQ9jWFawAw}VMR2{(P|60L4n!%Q1QGTwW zU;J;u4lD>`jd*nKh--;P|DsRmbKc7&*L!K0R6O_(PRQo@zN}8C%L{Q+z9a!PK<zBD zaT7Je(UE!3P6OUOE$bgpzWg+IwVd-$o~YU=D}TsmR`77_{CcNK_g!miU&Z?$(4$Y5 z`Ertc25+ZFmPVDpGHL2LNscx)+oW*Y5Vp$vTl~Qh0s1<gd%=LRAiJF+0C$w}AX4}Q zX$g1GUQKrL-%9=Udt;&ivr2Pp+WFi06adE$CjWM4c<If^d$pne4p}xXgR9VEATsl| z(Ro@JidcD;F#G(9*>^{7TYYch-;Cl|Qz0>oYF{wv9r0fR5UBJAky5wM0C!XpyY2MW z-r0YHwaQ1b`AIXDYR;GWM^#UaOZ<?pA~^`S67|#nt^O7B5~W#vr_n6y9rv9QZzPM9 z%igtByp|8<95chM%>S0ZVHn=KyX7+D+-$ZTEESSP>c`%W)ut9b3-+(FlT`oc6tu|r zBUw)6{F6sTtUHT<79g@M0KN$X?GXuJOdQ?Svi<?(GfSQXRk8>aAJ)_4J5T?B%Fvx9 zpb0WRQQ4CBb6QSF{Rb4Xem;b2nEm`NV_se0ZAKn|%6SmNugYC9l+H2pyOsLitkw)$ zRTw7KT6-Xi>=Rx(0Q`#u*c;ld8hU%xx@Q;vzPUerr%yeoB+6BtEk!>7>lJVtm75r) z`nji^JmU2F;`7))3=mcH%d5{ut`+a6in+H70KoZj%53d0hdYd&2YXu1g|_fNu%Es% zrpgBLjTGivxn3%`1E8Hpj$8||D3;#Z`RJ{roPXPOopubTCi=?n<AtvncZFcQySk$! z#Zw!7r)5{BJi6|$E&subGGuN#p@+W5m)<raVW0w@)`&>l)-K<ebh#aHCGmv03;r9p z$9&zf7v59Wxkh`~{O%Jc0GW5pPh0@GbL8Htw_TdM?fnnt-=E$W5;s!Je#_8k`n@94 z>kWK3+$le@9XM~}_V541z^nhhND7FCqlA#6jD;tS6$WBK!x}BgiG?-xJdu-McN@n5 zl;W~Wl$7P9u5<UR_XA~ld5n2XgIU$;{!CJo)c_7WRWRi%(rWP>wchU*rS?21dtX;h z!4lZ0=3MlVv7`*`B-iNGYctS>mT9F{OR0xILC9jmGf*Z<F^WLN*2z?GWY&&-q<3fL zTB;QW92(pz^_-Mvl6so<w+4!#AgYb00pHC8QZ#8pwI<OXpAT5N38cL)1bhkw95Xxz z^)djYJbzRJ55(ESeT0qp5Cq8G_XnDoJUnHdyfhH|BX$)nwkBSS-W{f3D+SeVr@~wb zfb8Ql-fJROPXCa$2(cL_)hbL+s#A)S1^9|k`C^%Z=YO5Ag^p8m>?ESjGY$Z7_SCrc zd;U$zXUUACB<O*X?g{Er2t@V4M0)ZmI!p~{A7hLjwL~4Fz!CEbXUUh_2!NGYc7J`I zJU}cGal+=H6(fZqFD5S>rY5FBI-m|c=tl;X2p=KQF@MP(?atWN8VUd?<fD`aKGCaY zXOSMw(v&Im)zC%oq{(XW)YMs`H4rks9rQIKKj#N=hluySF6Dz4W5f)Lgw}cs{J8{c zPO)<S81m9uzQRlzq(x8|(v-eZ(4hpdhE>uHp4<_(V3Qz%bvu7Iz#YlXUzo8)iNgq@ zM3Z8YLcj`(6V~d(R7FTm-TJ-2Y$||aVEYqnK=_|rU&$R1T-Fo2e4TMF7BQB^24a!? zG1Po7wS2b_aY&=(rR$t=M5vv2e=m2vJbZ|aT5fv_R6o^k4Bqbhm@$e_VrT)<P#6eF zl(8VEta_&_do;D<v-{o`V}?}bhphM@@AqL3uT_&bo-r?48p^jD0t|;k31|^;4QogD z+LFj_pF4qB2QN3LP7k*Wscnd@Mzu6l>4f2-FhmCd=wL>8Mm0PXiH6^hGgMc4e{O3u zS9`fjNcW#{x!ae&_WPlVDbYj>g-K&YsC<Cxj3)Yizs#gP+odWnS^(Ivy}fppTdI{X z5bP=Gr=rBB1Vm#sFuHxE7!kitH!=>l%b3moH3{t9We^po4i}2{HtvZ<$L7&eMoX*5 zDv1u7lKRS~C74lO<6iOz|3M3!9gZ^9+Kn`Qojxz3M3WI6#DN$60dFi#X6K9S7hReW z?D6z6CND|t<Z!2GCT7ynvB*~#Y=M+ywqP?1Bj9TL1i9C;6#WMX0Js!0n=LBRCAsx= zVnIN(2q_L}d==1dugU1ioy42<7Zfb2#fVP2=sP?^Z#bv~N{r|lDaz<X4uZ>zaF-O} zzkmSVkC_~^s7zoB07x;Up+lfz6ZQ6vENcE)$H2z!e}2S2fWm+yjRmjkrHw^Q#^d&^ zZ2!gpfM7@PGu|;tkpjZt@ro5ONmDG#-~2BM05C2nKXnir421>{U`R0{4P4x={A)4+ zc*QdraWw$2r9$~iLuJ%kjLp~l7jm$9?7UN?ep%T`(^0Z8XKG1uX8r3bA@Ao&9jHWR zy=te;*l!{<r5Two2KaxQyuj`dC)&$CC^QTd?8^@7OHZ)#1PR{ng+aq0!^9$G;}Rif z=M=`qp`fH<<q&<XWcU{BE5U)lyWP;>*hlxcQdzzk1D&?apoU6KLVQ`iQVF(b(ciVV zcZVK}4Cc*T7nz~QDTl9ElHWtL@d;}7(IoZm%=TK$_R@sjw4B{^|M`O}b^AAE`!{I| zH}MNM;R`F<iTAAE`VTxJzcmiIhkr{hbqx+5R-+~_Uni5`SN|5=aEh~ZV0&5bz9{fM zhpBY3fEYb3bdt&S5MEO&sRTRE_4s|wt(F-68KXP84$M-vJ(H+Wm|Zso+k35sVF^y& zL-0Y@oawuAN+5b_AkH<iy~7N+P@1_!hHo^okDj?lwy*k6@$lo@u8o)R%3Apo{z~$< z8SJ)d`!WeWy~rXq5r6fSIwC&09!m`;bN+J3uVOa~JC53+BU@=X*G#3Ii(<MK<++K| z2i98+?hCE&2{l|8N3_#wu~UY4w13rNCzl<m)90&|B&gJ@)2f@(=bJNFs+Ilt$;4D= zLzS>h4V~Y`?li=efKF9cXEGs#B)Mh9B|QH2v?f&*pIJ0n6`!%0-bP$p481orj0s&$ zp|dlp4ogFsd~z-IqN=E%1tX~U$vO>FXuL{{+Ez^5BC~NPfNir*$4Jg&`cp{(Hk^?T zeK?=7dgPtFDueBEVHfwFk#Av%?bRwezITCymRJ%6`j)wqNjSIEH!F~Y#iF@`_OG(F zy7aVC<88WXI3?XW?a*oM@}GRX>^-wE0Hv`w3nyKSEEdiT!%zL}c80X!d_vo}>q-rK zl^2${K3r#SDq*X2T0Yj5y>3PZw0~jsg(7D@(E1IDDH68$LFNYG6dxaC5SZl(L~1zR zL8eJ(8Ow^X<zT3}#-n8)60xl%CHd6}7Z+)Zr#e?JyG|mp<=`|^JZP!DEurr*ce_bN z6e>Cy4jmHF2+BQz0bz6PZ9cwvm+LOecQdUj=|vzkMWmkn_?nq90M!OV%`9T+%!7M~ zRXFq}MYr@<M=g4<8_%02(d1Ah21YYw{!_CRC|OZ-R@&TvfT`Rl><llmE|MGJsnNK` zN#!W3n5!!4PppeL#p7?qq|;7*A8)9yJOlngMJ08xp^!C$a>A_SgWp{pxAoU;w|CMr zEUj$96iW002P6_%f9hp-vZ!>%=<_=RV##(BI?Tz~a*PVOcv4aQ4#RhrC_Lq;5^mvi zel7B!n{)z1RjCFI=j(w$!`e6W<kw>@jTR2b&a)xbwb8ZM@0`hH1Dw+O5K<3`zbEn5 z(?CXqOl_RU?Gtk7CxUniLzYleRFX;H*l=-X@Y!%RW(YKvg8PgYs^P#lfvOGi`(&J@ z_+_JQwmE-urdphno)$LvMCcaQ^6#|NxZy(#E!Fmnh#uC<YvtSc%Ub?Js(OSFZ?u+V zxOwDh(zjQ^Bm05F&~D^BK&&^ZdCcEz+w(Gps(mOYwE8E_hI7K@$W8~rO-C`u$0d?& zgai%4pF%dX>tF76GFxbK%KT(S=@Tz2&rc*T&YrA#A4}_9-<54YNzCtO-0h?)`YUT_ zB>LUTy7%2SQrJMetNU>NWqjEIO~Xa`n>drbr*q#Xx)=kC^u}huevaD>#ht4>Fmk85 z14l<<V1Mc5={&lHtx08m!1rWi!~P5iLG=~-a;0S@x}+3AljU8mVl@a{j_v!!(*K<J zfKWqH6tc4#@nCpc(4tat?vE8z-XdVKqIdUMi9ED6Xt~Z6S8#3F4lc7NsE1=OeFx4t z_VQa&+5JIwc|}QRt*66uRnUyfSD(8si`3UO<Iv<>&}0Xdf{C+jO^+tAw52T4SGVBT zFC^U>i8cd9Nbi(6!_icT8!kS!dw$@Zfz}pmZPPN@=gWkAh<+Hs3Luz5qHO)Rd!T=} z`>`sNz6ZN5m7ldex8)aXJlXmdf~krrDSh7K``v>tV1SMsDr}>uL1@^!?>~PWDP1_= zD~87fW7Cvv?ftpFsk~)$$(rq@I_lFKVUhW;px;zPr>N=fzS7n#;CfqC#hc74`V<7F z9RZHdd{xw5^G~@SnxFN&96RXCWMm{RULd*Tzd<E?6h2uHY^2^b^OXO6&~~?bdA{A* zweOkj^>)-Bwe;z|fj*~vj?X@e{k!W~*~*x81^hWrIU=%`0KESmNgR`;#%Jmxd^!D* zrsIkv1DE7N2E<}@5h3+uJ6I>z`@|^Z;<6ijXvBN{<?qK8nFcNyO%BzZb@7;&U{ed( zjL6%N*R{R`e0}n4mSzPmrw>kHr{4Wm#4i3SZIWtvz8dndt+>LSP$fi(tggm#;L*I( z*4%yu*FKL?CRm^lYj?k$`pvsIN~gz8O~(YzYvLMp`2L`Db_2CUSp%mbgkH9Yd*}zx zPxoEx6|8#QVXTfz78mX7S>4KBtgrx|DgC^tP1izkCYaJeAzC!0(W%x)o0WG4w@{8! zkD=eY&QK8)!3es94%YT7`Mjvn#=4%8y1*7vKD#X-g8Obv?m;E5)orKCYEJ-(Vevo$ zS&(mS#`ALK;9N&82YZgh4XYT{pvO8?v1{uyu9$<bQSNcbLtk6-qr1IyZNRMkOt5-V zes+%y7+~B0SKY7#&h0n~%%4T2d}a%cCPN8VuytAbdtwHg=}yh2glIUj+{z%$>sfnQ zC!6Ue>`w%Vh__m~XP-5;<CL0~wM4G8#*tXOG_Ge|Cl=~BGvB=Hm%u6$H$+&_)AaU~ zvYVL-Xo!)gZ`NNGFFdX|M?5Tk2J{r-XL?Vhh0=e`xP+cqW?N^jn+|<)CLLGTiP5!{ zNwLg2iqY7^wsTDUQ|#c`DJOyp$CpAmaqCZk|25vMNkTVVy-8d*{!by^*sUA>UxojF zYUCT{g89U9*q@V!pi)cg1P?+_qQ3e1Osx1+*X@4~jZ0s9Pux(UtI3o*Gkvij@LsPW zQdg2GH^w<ZuNI4NE4i#kEo(=kSyOLr7NKHV$54h|f_TO(0eQHh>$9GwPkrrLDhzMQ zweS!|X>-o8H?JnjLv_9;r`!1t?5_wpC04&Ci4aPLOZDJNcuR3`EPw1}c70sDdeG={ z)*e&kS(f&!&j^C$2MQ=1rfq_(nGNwvcIAO0by|%!Cmxpq>>OT@C}CN!w$Y9bL)~zL z1=iy0*s2RAr_iN!eJA+D)N;oPGL1%jhx0C#KrFokPPp*G3@lM^n3A=e5{QuUkv;3z zc<w)yO*kyfPMwvtYr`kkP-ZS<YzwLneKvuTF^Hy$&sYWc^lJ2>D6ZIZ)^+Og+aDD4 zrqcMw39^`{T+=~c>Avt;;|z|W<k*xj4G0`bLoFD|SvO%X*1!6)0pYv-y_}6Yn9!|c z+*wUbS%!lG*U~Q`2GPAvQIM|>rgYe^uEKm##iQ)d71Y)KK}m1CGg;k5EZaLLXI$My zeS9#qPDwk1!YZb?qNEw)Uix_4Ms!h%3?rmM<9ES1BkQ3z=a1JFWKJkkGk!G_$)GH# z?-|%?lWp<unv9-AsbsmyZM;7P^RYLpd?(<(P$`-4X&!#Hh2*JVT{DxgWbO!UqtL&u zY0LTU-WuEb``NpuwG|n4b!>G|z3UjMTAe_Pn=6Ed!Nszbyx!s4IFhw`GnYmvrIJ;) z5*ieVBIYgUcO%IG{WF1i2+As@vHZUIYA|Nl>SNXwo|z5lkE*eqPC90RnCFCLPF6(? zro(R%`o00UlQKEJyx9eiV%VC3Xic<e`@ieNHA)C%BLXZQct;*x3Py*}#$Qt_f7QMr zr=$&MP45%eVH}G6SxBX>M_=;Y(oeJmq0V3n8cs=*nQ(flmiu;Po||!gz-`_|MozQ4 zOI=ykSeFIap`wMzce{yn-(-#~=TK(jr)(6qrC%LyFcVvj)|F+=rq}zO+SeyFTk>=< zVR9Elb+{4p?Vt`h8}H8245BK;n1Xy~d2FSx3F<1PuanpZ?%Eqe!@l(YqONx|`H6VW zprH4fW_PFKohzNU&bE3-`0&@PpXviz4L0S{d)nrM9gkQ3VN7`1^IEaW^Ww;Z<9?|G zfi2kT1)P(9dVI_~`k+BXbtP=2HC}#Qn4b4hbieJfqfYTGIIDkuiovTh{lyr=T8Qj; zJQP{q)r$6ZD2e(NZ^u&hJ>R&|?h^86oH%RO50wWMz_@cqPOuXG!AEAW(_rFs<qwP4 zWBgf=pS{phWESD+^v8Ia05(_EZ<j??r-_p-QV;EvPx3z+82iEFVa*dIRM8@Wq?7F& z8}FITW-`zE+fB&cTDz>Cs+<nYxJf9_oYR#+-y1nLl8<E|Q(2F%ea46i`gZ8v8xgKn z26NL+M~4JQ#|g`e?4&%^l~v8$pBHN7EloV<fv^piF9dA&lE^XUV)Yh`x454^6t<?v z1zE~0eo~XA_5g2%1s@a}HVnjFU)OZu^kkw35<CN*gH_kT5AD15ts&os9aKZpaOC{T z=@yygYhuA~MZHeX7!uWS+S75Mc=%>jnZ(3(_Oqx>vtDyBvF27`#(-95X!HKv=X9HF z=kkwdW)*F+^|J#SO_~}9f<rI+%3!~Y2p#N?fjzN*cCkRD!b*k?Xsq7Re;hFI>#jne zW0RvD>4^{NG|~kIA5zV(QamTDk``W$f1j`BU!~+(5JvkXueZ%en2_Henwqn-NjI6U zP>XO6Ol*7PU3?!fSVVn!hZaoog&-L7UmhfwBpRy{1b}Yn;Qfav#0$|!$yu5MVW;J| z{EcL*SK+Tw!$YZwhNaNCQf2ZGU}B4@C3}4)cqOHlS4i#cqq)EJ6D)2bAD+Qn-O9JA z{`Uq*U6|Ydt1KOed<GMTM6ij(!P?O#+{N)ftCTCGMwuzx103f=7CS6tnQ1Mmj3XjR zc?WJgvctp-d44@E{Kxz*+OPb7^B%u(HzgTM=U}<;d$a)y{uT}FXhTDRU)qL*0lUF} zoL~q@G;}gHQe{UcD0X2HqiPItR?e8%Yz`G;XP*vC(QzyaN+sW%w}x>wYbU3Ef4Rgk zLSUDeN=c~)NvQ|=KZ!&HoD|09YoExfHDIS%iuUP{LO1hV;!enx7hEGRW{3F}4Ooxm zKW~GNY=6!t|D1QV)SaV%FPpS-ohKhNeeUHOQe-_w=I?6ZJV&)_XT2IaN40H7KU7~A z$axT3VCeQxCz<jPca5^FL_fq{=b8q$w@5Vq`8VA}IOA_~C9HFecH1P+D#eMrMpi`E zziMuZrj`#*{<d^fTJ@OV(~%Qak@HLR6Fpb3T7X0~LUb{*QJHA2R)Cb64YHB)OVU&W zCyk#56mED@A9M(HYGcy3-shS;^r2&*V^o6y%D4inW@=vm)u*x9zzyJ}sWI@uhcIG5 zVGBK>pw9_=ps(=*W~0RDtBbJxcj>PMLz)6Db?nck2YzBBcS!b5F_Xh{l!TIA6Os$Z z94AQ{MOnwTF1&WCTOn`alNvH#4Zt~PN9PEh;R~$xRZ)P^?Txig$qOZBRvDC#VQDN5 zO*T)E^GArLxbWa8QKRP$G<BwkaDeyE@nzFw)3_-iSE11m$vER6b#2TQHvOb@NU)7v zFpu4j_Pz(^Rse4_1}4x9lY-Vg^p$s!bh^7z@I;j&w+OxeTdfh5Q%u@RtS`Ql4)FaM zBJoJg&U;WFWE>74ZhKHsADklScJoHWc&R9S(!O{Xuy7D^hse-CAZTnhF=3LcwdLj> zF-GkgcHY5Gh38>e(NeRMjy(BD46$=t&JRx7hHk!riOyr9U<;fpJbDK9@fB3I*O6-; z`@KZl7wpW=CU`xG%hzZ_uoN(nV&Kuo2c^q$;(Q|0Oek1H(A|=Qf}<MSyl(J0ID%x% zLU?F5(5$cH<L?5Dd3(TGJsQoSF-v3~Z!^-diP1|d(h+&E=;svUTI0STYh%OLP<aNw zNYkd+gu17BFF)L-4FlUuPr=a5txofU-RibkOs4l5FC`_}I6<DeNSHnFLQE{Y|Coj& z)L2$!qJk4$QTtVEs0)Tq;P5nMu|900WG*CAFL~U4I%7@Gf}m5~B6$-}h0-T4r0vwm zvYwFxDLm>RiuGN1du+c@>Z5Q63^q+QBN0tGncOELbX9C@Hr#oWu)5D%Rt;}Ak-ots zYo~-p7p24mqsJgb7*&XI1>1y1&tMaPZH=sq9-Q`@bLt3*3?v7;2=%&nAZuRe<=MfU zk*Aqr4UY&AwM(-bybE>r#MS7cvv)??L>ZDRAjOwhwI3g>)|RqjyB@Wl2z?~dz{5=5 zA$6U9QPKBR6z+D3k+;$#9$#Y4u#FN){RqMR^n&_vZJ2(n<UDk4bEfTlYq&+M8buRH zG)Cwh(hJ?({`NtnUE(%i*otS=-l`|`H+#=;Et<w_olQXnePAW`bN4yEhV$a=nWj-9 zvqdrk0h1F64c8#@9rv&zTi*8KlxB@415z~<dN3aoJ40NmJuS5HBf&OJ@&w2GXW$`W zu#54BFB`0xn_^t*E1<<7_W_JhfzR!8y;IfDD;(0_m2_uLquv@U<4?wJ5fntNJlNna zB2eongH=u^$ZTJt&JmL**cRuvz+@buFoXGIT8Kf#pB0V%YBzgncQSG1lb~|2H9!kX zwqQ1qTAVYi(7<ha<5yQEvPxil#do(g%)L10rAg`{5EmDbi_nd06L#U1oB;;C@Tw%W zH{D!E8Cb;*W}SUiGa|tmRj`ul>852C94*Bs+l~7^Y~F$_&-3*o!9hR6tD2qxSSvT5 zC19?Nrgm7QebRpXON(!{2cce?$UN<WH`!koNDRJv94^t#7-HnWSa<gWOHHel=x~ zw%gmc8KZ14D+;<_LPE}1TjZya9G%Hq#WWJU?bCiOa*QYY*%vakza9P@&cZQoyp7k7 zzVJS+Bk+4hcsKs4Uc)0M_Z;W<JbUv)5*~;ekqQegLc)<((N;cAix>PWhGT6M?nJrU z4YRKpF=K-NZk=RnWj0F2&R><>-7>r|z(D-b^!|?6zRD)8=ZJ>AccF^;t+xWI1lK?9 z%XStFx4KraY=WrL6EJEBe|4}kz-u+%1grMRf181kP`DalQ1?sF*WU!0y%qM_$9`e- zO}ZivLe5SoTm03q@qf7G9<jGHJ_503svXu2ZuQc@MnA<aUdU}o--d3VYqsn@P=A`s zgng|D=lAPu-B+Mpocub6v$*d%bo(ND{Z-tN#+;{K&MH3nmXL&=QC^Lth`8$%Tak&9 zHL^(YK9_(*VbRnjenzh9l(l<=qB6M26Wla?iN%60dI~NY?Fa(b{wiRmVR5Q_9MG57 zNn`WU=AH;_Be&jc;yZrbB2&fR(CV#@FgeBV`g6n<LNEJ5UbxN`ZbK40!=`$Q&87<e zN0L`W#Mb#XDwsIfx#~tW*FbxuaJHL7cXnrze%g}6uXyFR@`Fo_zVv<j(X|@wGr(^C zW-hv``abMXMlnH*&^g(g;xnN~)^4Y{;7H`T_M-LI3A-#6G8KO$PIHf_x(z!~Ur}cE z>T8(YHquxOwJ(vH@gC3xyd~^zT;#F&bMg<2(~~ZU;tp{;+#(l_!sswk*DB(3oHxy# zzd;UZzTZmn=VU|^T?NrT4@+$_SG&!pM=6tP!q8qP2=;u{dD6slhooRF!onzyXBzCb z{q>3diFEY{2WiP+717ZF6BEJOYc1~{C#kSZ6e3L$$YnCU466z#o@)`7eh??}%!NW= z^UFcbo-X;0O9U}bvZV&a<9DD>u}f+2U2R~}b1Ct(quXPJMxUihgBb?JKq)?cc$mY~ zAUb=V!%kekr2Y6YD;#RndllsrvZ4d>mDbm+v(Io!Xe_nuMB>wCLY3y@Q7tOnbkusJ z%)~Wl0kG@nA~Y^09=msbSl{@dc7>mEBaX<6%!5Bp&uCieh*~zUze#aL%#~z}RDsDD zd>Twd>D#41712H+If2g^WK8+kzEQ7>J+2>!6@Y~l3Ay{G7sBM!B|YR*fV4sn5z)E^ zMWbWx0DMXjS<+6)>0!H-$j4YEeF!IShP0d@*{CA+&kaZhG$W!P(aR@4o$>V@%F754 zDg5f+mLShGEzaw9iFlABbc0J$i!%CN6+z`nLD094F<g&e&F8C~l_jP$ht=b;>w>F- z^$t_c=N%qu;7Ps=YnP>Wn_<8j<Cro>3>szHBH@$=dY!2867)71WJ<61Ua<c$EZwK1 z#r)#14y%ZviZ8<z8#To7-FfbNjmMbam+MW<;ngCR${8oC9<!^zti5`AAKyPn`H}1< zBqMU{zy(k)vs)#D8`8Q8TgCXvZmz2H4ec$C__(N5EnS>wC>C<eL|)CZXp8vk4{WCI zs7h4ejYCS$>CYFCQ}b$4u^j`$7bwTaX%*eV8f4R?{T0@3A}}9hMKe2fHP<;<)|I8c z7&qb(x%?iOtn+`U%M_@(n1Mg=3KkzGw5j<*A^Jpw%_=P|LPgG01EWmwONc1R#Y%zj zH7A?7dhsu`juhdzgKwPU3-L<r!VQS@O2>23R2)$Cua0N+N&1ncSl0368lySWWeu6= zilyp>3^pb6*%j3#XUUfqYmL({`Fy3RpgQ51N%|9iiWA2OGtrGL)XACV6|fO?Nj(E{ zeGU^slWe~TZjoGIo<x2TxJf!%^2N4Dxp27!yKtPN9a(HE?(-F17hV!g-cQ~|9z5<n zid0I=c%kc-vYdYdudW%uUlf8rDTILj^WEW}#Wgwr{+LkN$T6GLC#L!YO}Jxx?UYr? z@b8T!A#jjz9bGG;I&I+T!!y9^mCmCdm$3JD5wpjW5ts5N{C)VQyMksOxG>#zSD<(X zSTn;BScJUO`Coe^0pxAI58_8up1JY$x7~z#@XTzD2D8i$DZ_4CbE5_mHYXyfzsxg> zEm1ums7EUzYdjB$NgR21^jwaIZDvNQr{Y-}L6-+xFkV^8)=f(=1n@$?6&LC%&xh@2 z*zU)q-}@e*rZL@8krI=d9@o|xG0@ZO+Ip=eeCdDf7k4-VbKml7dxmoR4W>s*d}W+a zF&wvAB|3K<{KMoUU5*zUlox!*!G%J^j3o(AHt9lJ%#I#X#oQseor3?Fzd^U~sHKy~ zm*{hzC>GQ2i6yET<B}#5IA*u<k}SWMiOz|UI{iif-eHQGEU{kn9BPRVsG)(DvTb@4 z5wPoMK8B_-EYaVj_ONn{$auc!5%gx4TYzMcT?s%J!nab@MNXu;CKFDd?$i%EdtmcY z?V7t}XlD3yf<EN<naMlo*CcDlMNOmJ38wsnalnLzG{`ZoM`jP4P1a0~Feb<5@xcm! z!trL5h{?Erf(@aF{a%orEUW~_=$APKFRez+UXKe2gbbv>pe^Qht8e-bH>ws}_vm7N zoj?>@CLe9dZv+`~Oi?E>!sB9!alnDdJ-Qj(eu#RziEN3zfx((Ey74}OW=ks5Njqh? zTNxWuvH;t7ofy)GppS;SJiZs*n}S=eZ6+Tua2%ZJ<VuV%@?*ieX!1tz_|c4)VVLU{ zBu_Nvm15kcfkK9)BIW13h7ujH&CoKBum`;kc!)-OUpl@LGwhX!Cg;EsBQ_?P!*S`J zS1Ok}hJMX2p>d1>>6Y_IN<J-WO~x}sH~x8uE|0uAk2Zt)1Sk5ZswfD*!;AMp?N-AV zT54Mfp{bR+9HkcLAqzItJJ%n-BT|{R8TA+GxKXkgFMv2E%>ILa&5-bismNT7*j(tW z)<g&kmRGP-tMpSmNAV(Twm&AweKl?S)c`*(`;^J3B{zCTmCqP@peheElt)bZaBg^C z;kb9?b&xmZry)z|Bws>$T9|C~ZGD()+FJ@J6F-b){ZqJKzqrlwM|$DOe-{nk2%)v7 zTjKg`+H)cM0C1e*ujp|TGCBn%C}!SR38Spm@InyGiTDapB1C5>+v>og^=tMULU<`% z`1IQo*0VxI#s~ZmX0k(yJefg+Li9-muwZbSis0fY7ciaym6kAzRw$oU++%Ac+V`-p zYOvrkEwy3j{UUnttJbi+Yv#m=`)r{z9a%aX+{Q#fB@0OG9iS|)971jMB{7d8N>~$A zyo8PqQJ(1Y7~T^?ihFOpg0-h|@dxp}dr9)picfTJqEY*^LIsP$DOYH{>)6=d>&Z_n z2u~UmDUKEvrx*oBA5I>E{7UzH7cHl#{OW#BREseMi`?jdP4MI`64hIO>h6V%0!E%B zq+tADRE4U|pl#4kwqdH4GLedqBUWLg`7u(gPWZVCYC&hvloW@KaW+ys;GDG40tXXv zxW9nQV=76*b{o+soNHuG=K46A+Fd=Wm`mEaCaCaP<8~%kM@JO021@{a=GEm}ALgJk zQX|I)*%~-MUj`$gUntq=13PRt6A0<k>rimtCtiyYk7#UBb#S~JQD7uR#ik23MatC8 z`oUQwSaR;s6jw%#ZW@;?lOJP)b1w4H95VbwOl+SG%^nIpO0Kil3U$ZwrySFd0ag&Q z_<%#>$DoOR%xyt?D0cF37#FlaB<Kbs&a4>&EpTY;bVWoW>G)K0M+d)2;wBM9%L$s` z?InBzZ45Idmd`6HZ2N^SUb><Bm5O(|bi}8R!MxLWwGZ-_;g9*vq>^T@w-LOtL9p6i znc&!bKp;jWWO7kX)-mBBT1Fghf1hdrD5&yFW9VR337nW!2x&1`sSzJ%+{AlfZ*e3z zA+!k$Lcf7J(}eUa03=>bi+A@^u4$W7U@zIMWg&6f@P6=7RC(FK?rjn6n<tBImW>4~ zfC!55W(~W}_qfhjIz4~KwG3g~EDtYOH^pFv6tW0}7QUK~Pv;56Mb)DpS<6HCojZ*y z#y7X>5D2N_S3~#L{vLqp#EIWIZ9ps3Mz`vj<L*AFY2%8AJZu<cc^dx<Rg6w9tr}f> zyhwd6TdA&tcuZ<Po;iQS1Qo4+o&wgn2>IdH5x)>qGd+P@YQ(5w0%(7^ic3aoCYlz5 z6w=AWzK-AX_5{)jCT{qLNy;RbQ&s;My;bPrdGpD`)fhZ^*ar(94`=ljPAbF+Yg!?t zC_%5x<Jqr%dz|EKz=45uJ%pNQXg+9h+nF!Pf3~+y9;UXX=c{Bj1Rbr&_BwyO&}R(1 zzJu!{?a7NYvQs#Fhu$m`&Pk)ExbK4Kvg?x=C_vapVd>W+7Ae@)CKOOsC+VUJ&%hVa z`mj1fs0z?vM#Dt+wXnxRhxq94^vO<}4IRSx$aVamrpJy@Eq#ODj{CVlo7v-?cQRrf zL<QCa#(PwX0%{gk)E>R#4C1J(Y=yF6xvyVYqi+xBhzx>zq8<Q<4&HlZk+%`#w<3iZ z%1A_r(o6iLM+Wt<WpGj;Te!eM*6jpZmlS#FmB**YzSkM!;k8#OT4@1J#soxTLzkmL zTikD{gWQaxhr-|Jo2%sHzu$wBf;eb>dJusrAgivZB2^O&JXM;rfqR25oDu7ifiAf{ zHbFMNF38&28KNE1c;!v-MOYU98Sn+!c&!8-nZQ7cp_Sn420w^ots}kb^Pe54Lt5&F zFCM3-<>eP7TdjYsm!bFoX>I%T0Xx}KPF$peKv8j$XIgs6RXi+SQh0jmHLF-X+5k#c zpPK{ys)gdFD+3-&`)B<dPV?6+tXI8fqa(P$5|VJ)5{=_pldyWpD`8x?h*^w+v1P2{ zJFaKIJM{D7Abg^R*)U4CA&sc^FIT7Um{43Zoc$K79XeSyGmvm^(hLq1c0Heg;%oFA ziL8`T%(o-V>%6ikq$cxx$B2GN>PUW0S1FKC+p1rx186Q(n@GI!2d@pYk0yxgk=G5x znuJZtuC2aS`Wr}?#FY>fWpU16^Wi27Mzg*S9@p=5fm}Qu_|SU$zQ8zAZh*_dSdD<9 z?Ic!+#nKWLHpExoSqtE&S}XcR=@_#FzsY)We|9d!Uu+rCm%DA4oJ(EaW&?vywba;s z+(HeKu64A0O##WmuScr;E_ahJ!<Y*9QSc#2b0w16yFleC_~%G?C#S4WmfUd*W!5Sh zakhhX^4ssC8-w`G{vrWA4{=pjo;TdbM;!~$zhDASI4j9;OQ*~<r63m-Ho8hWeQ)Oj zJunL1m;Ja5wK>S!b<htiEc^ZC!LaHXFy`h%Jm72!NJ9*tXAGyMV5l-_Jh_%WluQFj z7;SS-<euVbW+!UKwcP3nod__{Ka8cmPic<bQE+G!dDWq)HGIBi?KF;Kv656UOFteC z2ck$x&!TZ9!anqT8t>$jz;D@RBZPB&!zB{^4NkILur?O*#1D$5n~3GYw~L4kK*)ZO zbpPnBxsQw(OS_P1aeZHJ|Dg&C(04#1X)2YDtK$6P*k#eeE2!`(gZK^~g$W7Y=okww zD>F}Rlq`>p$HMh@l;a>|Qtk15P_u(U6UPju1N_V@RivMSiGVjT=|h=<t1>Ep=~R%G z%V39#Ue#7%v3FzOwTrj}Fn1pF@dUV_sHtN@CAtOek!CrrV-VY3!HwlalpioD^*00t zrn6|D-3vYg?e|&Pl<3Q>$rOrbOzsKEgR_=FC7kwX=%|=)@C<CH_8lNqDP?D=)!uNf zq<pxz76Gr9S?^Cg6`NsXAFHBi56hIBigk)mYWg;h{A(VhumEUI_JTNgSi;-)3`qSk zZ;?&>&J^2^o^~Zy?Udf5Ad&LDCk@UAI09W<kGMNf=Ipjh+4oS5!c6ii_7!6mkAGsC zT+6_qwnX%2(o)q{)S~>l^d^VH#&RNJ7~LR*20_cx;|`Y@LM{5PK!cQ@yuQd0J?$dO zLt7<_v#U<vQGs;Cpas@S0a*|?I#E)Dt<Y|_+?z-=9}>B2SU*-}=j(H!9{Ir5P2ORC zI4$%d@JAp>;X?_eZ%(&)eb%3W>MV{4ZUko7WCX?`GsJMX9#9a6Pv#dYc&$dX04Z*i zq6-%|r9IGieObjxq9HrKGoSO#mwZSI^wm1bo_tnFgnkXeB8Sf~s!|=n(2o?RsHIc? zi>|i-YpdznMt2~%1$Ql8w8h<BLV@C5thg12;BG~WQ>;*&7Aq1Q3PlSPDPAZAic7Gb zJkR@m|J!q}|0G;{n0wY<ne0rmXJ)N+FFCxBw_aTe*C;_@Qa}-db}Ad3cpd8)d>w8o zl~Dx9exTC^K={0RTNm1illha0$mhSu3E8s<iVYHpY_Xah%(<FJ2l)!FjP(x1ypmhv z#l%Ao)W4)t4_vKJfp=<|^`PXYK1d25-0u6k4>fNuvQh$sFNdwIY8uB&t}OZJ@^U19 zz9iD&U&jiIu*jc|k15{tbZsbF2K@nEpenW}mah~OnfbsbS_N9#Vk;6+*k2cOP@m0{ zkvOAzv>1JdgDw3P<WI0MT+<Tto_2DsDA{3^6XCK*;&NevL<gX+IF7bBKU!XRmKy@q z(D$EbD5)AGi|0K401)QSo`Y0;HSa?hdDUPRoeeB)VgBP$H~l64<4L8D5Lk>M#^WrS z#u3j&V>d};ziUD1(5e)FH7JbuM9Ah*TMLB|YFYNO|H6fgq%RRqZIwYDDdLe6zL0#2 z8o%UEHNYih+TcvB8EadvGsZxeW=ekwFiB}p%mM`2$z7?SgJ>nUk^#6J_uFsS?QUE| z>#;i^jj!luf#bAhR#ukYibjN}?{Y+R0uBLCZv;Lqhf>p-;3h|&*Aw0;YjjYc6I$B1 zol5uXI4v?5#Ox51!M?{y?O8}&f;N7ZYV7h^*J@A}Q|D-aJ$nz65U75_E~$VH2E^x4 zNX*-F;~IJGscbvZYN8s#_K8RQuJ(9UfB4+@7e~aNep!{l$oH3(nXU0_5xOB0G98l2 z5btm3ka6fkr8Oj0dl#5F4i0a!-LZ{6=zD*j!G<p&!@2UApbu3ee4bAMn84tR0%}dp zW5@zXN&t|p7Z*N3J`)JEhsHwAFKBnZ#HTKdWj8j14DW}NL*`WtbID1dLocyVe|>gm z?Ct?i%UKvn39!36^gTySj+TDph&#^a@8w?XZwM=iA+eM-iNu<6Q<0So`23Pj<GQcl zv3eYNux%76Ahhm*uhQHJLP59gj<zKbNtD$AH8El`HP$dho5_0TLf>G`Pb+Igl#vWd zuA4Ccvt}A7i7$t&th%64T{MhIgagb=WH{~R(VpJ!aS-}O(T;hB@u~pFJur~1hoAm3 znN*qXVA^X(MS5KxkYAm2w_5&k9VnOM?N2l4A!DE#E<29y3`e1OH#L?h1`nZttMH33 zg;6wmy-GDEghtfJe`Tb0%!kh!U@39{;SRA*dN!s`wQzZK&)6nHZmR~3haKk>4LLNM z3A9-?=0q90e1&ij*g;XGPX-^qA+n|oE84^hFL~F1Bg54a1xtM8k-L`CO9d29IYjJ| zv-$-XVrh$&_6G=)k%4Bn-NAc_Vl+z=PT7rK`OvBFK8c4G^Ff~{)S%>H3%Cw&P6#A{ zawPVL9$~ODK7U6INlu-XOM#fMzqI7CJl*0T*2z)sbQH!x4N}mWXqeGrln}`Hm`13n z$2_bzh^O}A5%=>~5}zs3c4Ku0Smg;mmyjt;Sh2(tVy#<7l4`60T&|Jy-cGosId7kt zX@-PuW}#|l-o?nlXN1x=it=P$_qJhVs-G;8P=4AN$M`{OKY?l;V^qk34myhkgI;X_ z>#3sAWTmlFg^yIcMH1z*3DcBwuzvDAmI~v#`vM#kW2IrbpPK@px~2$@HeI~Cb!V)A z4rsCVC&*7bF3YEatRHiTz$CJj4Vjtb&!TW7`W)gY$+Q?m4qp5cHV`0kn6g7vJKuq5 zKOG6}>e-aRq|~92TgC#qA5zaj98ZSFa#Q)1-6kD6N?t_GAXf1P{{T=WTuLkxq(N|E z2L(POPG(_<kLzw^(T3OC)U}huNcWCoH5U`W@0&HGw1w(a_MyblG0G$o2}Nmya|{fS z%VS6zy&$e*s^-GAY=<x5MNOQ>1;`EJdB<g4N4LGRVmJ)z^n9N<8{R-#(Z%?(RfDHQ zF&2Q04^ae6bo~Lgtq0I+hX~4`qd$Cv6ilsGBZ{Q`Jqc9iD(|91ATKDc)fg#sQK;tj zDfHtK)r4a+;&N@CJ}%)wZ6o`(_oThHBrSKIN@x2J1eav|2wkC}I^?(BA$Xbhwk4J= zM}-p1Vc*#(5(g=d5|rGDhs8cQk6G-KeOj+V6N!S;P&z=?<T~#A47jHk`2)Pc$`f}$ zjCU3b;agVJC^2vyd1)f;W<u!Y+ZDGPQZ54GoA|a)OK6y8+5F*sg=I1Z=tO)u!BR=? z{U)JLQNZeLdJ*!gbd+fQ*~ANw@6=vcSe%i)_Bk4rHDhOJX&jcZS_LJKWn)c<3b1z= zOLO9MG0gm6pxGP{h5z-26HQixL(+$tfe&Tg^rA3^a9T6zp9M=PZbwp0)m({p?$+V` zRG`Ab1`J|F3FNB%i#mbg*#yOs8+CFcS_!@{YFzF3OU&dm6bgqLoCtDP8{@jyaDplr zH~g_Vg9JwaBLr90xwR7mEW)=8axJDJ9q=%YbIxGU@#hHmI5ac7<4ErQnCv_;W7=&I zU$X=6%YeQ7TLQL-uX~h8t_XTgsjz5tzrwuFde#HGn|$k7;J3LRyCLcGkDtLGeEHBL z6r$w$aFVka20#Un586*^AmYlHiUhh(&L!mPSvM4Th(wK*?_$j!VJ?BCjZ~&RQYm_8 za27v&Uiuil63YY6bpsVvXZ`N1$bzlIA=z>Bq`PRUd1V|s=my=#E&7<!#-z1(5Mna? zAC=kn;bvTdQz0H)Onpuh_!*AF6Ai`TgshE5QUkKO#Y?;E^`dn!s>e^CLa?k8go#;& zIlF#<Y&SuA8#2thWk;ZQXrhShBn(y?$a-T9O9zTXSl`Bz5{40W%-{AKQ3aRzD8%HM zIkZ`;80%c!BDr9in)3`fLF(wnxf-^$hjoZ7#0RpAwYzE#C6#AZS|e!$N3p$Jn?Nhx zOIIhC-+7%u;ZaBP;(2<_;N!%t3BFWfX0cV;q;uHSJOS&<Jp}XXM9Lny!dJabc`uQ3 z#WPr66VzCNY=$LKiO!wQaEID4gEpNtc61X}^Q(OPT#+8t3ql&O5;~}Xg5JvTjqgtn zzx$7&tBmPWPz~#WcYMAtrEAw$1ivsmp59^KQ`21y+{d$-$LCcMP<yw=iqgzAg{Q%1 z!#BOk07Lp9w7KV(nNP(vck8k7@YN2Wau*~T=TP+#v7fvQS}!4UF$!bQ#K)pmlXbU7 zdE2^t5J^=`8|%R217qNC{Mxnt8AvsYVQ{&Lq6TrepxbXgy{F7BgA0S%LW{EkWK>>o z<j60jsQmt6|Ka@&aE1+(eEK?|_;`o*TP|rYYXd_WW?J}rBDgHi-2mp=FV!5)!|6*{ zo{LI7JR05oTTl?OJ6hv=io@ktW>^G&gnxY4J2`$+eU5i=a*_g(8Qm}=2r0L+Me$Wa zqTRD(-N|{<^oIB_wJ!f?t|&Ctp^rSy8CUa^Nxi>cU?R7oWuU0qAE+(U_!Pv5)(OuD z&(9&u)4dj~JtId9T!W$MPp~j_Rj1F#>x-9(Rha54a9crd2pr<sHnK*N*CXmPKrXB< zji}IX@6GezI&CWNNEnOn?wjnvzBI`;(3v+~b@;Kv>B47@R(jCOc+s-iz1aGip|l$H z7vt8JJ0(nMt+5z<0hCRsk5w>c`7V-;>*&%z=$xGq2;MfcP|%0y14!7@_8D;0i`cpG zPyKNj3`tV$usW&mlv&krG|flu`mwIo*kumj;)aQ^94fX`f{sTjWS;?JXlg$?c09Xf zmR5eSK%P3M{r+$mJC9QtC<jBqQltLs{W{iq-#iLBSDWI!I$n1Sod3cHJ=Ij7Z0je+ zEm#B1dLb4Ir35B*919}kBE&DtA~O0NoieMuE_(9AFGf6A$?6G_Azye9X~FXSDT3g6 zq})5@X@`*9V6SyPrO7GTr)V+{Gq6nMUTOOW09?}X3zK%5kPeM}E*RHBMyl*n0Aczy z!Td2;{tp1=^g$VupL!T7QY5jEOZfTrCi5P3j$F1X(<GK<+|@HEy69TQ(<oE`k%P(i z2Jn|7u05VX%>>8`W%eyHFkjNZg<|xi`N%hYVQXxi*P%P4l%5#pRMKUxFF+L@3~fXb z-SiL3NYlc<RC@nXKqB3J{(m1Rstf=YGobp9z)!c;+lpm@Syk3N)s`hUBu6Dm7D6Ch zRbW~5L!L|Ur)8HR03f{st04E8ahY=!&?B5P^wt54Dj4b$*wSLluI72VrU1*X3_xN0 zOdYuT101!k-M8HOb_lTnz$|+ps!IoOuM#<$zk`Y}Sph(J3C^0QzI68d+GMpgSk7Be z09S~+t!ObrQYMaMqytoc%mW7mWV=rS>%W{gVVp9(LEfDwkYSxxn9HwldVDXBf?L;q z_xu46+W=_%@sVxTGI!RfZ4<x@bDRADfcZkdw=BE-&)>IhF&ThQ=JwV9L6$AA#Q{JE zWAeX<%ljV($eAo}{r{eYY$BLw0MJt(y8conjf|vzGM#(*-xDpbA7H?k*028}E~T~z zq$<hBf2m5Dj|9*fI&1%{YDqc(29U|8{})-dT^0j?QK`>=sY*Yn22cgJ{#G@a00Y3y zzyDITEUcCa5NQPbrONrdS_ViV{<~M%msJ3Yi~9S&dSx+F3}EH0{iSMAiZc~pne+Nf z)r)UGk@0v>C;sYHwkHxIbNgGBRzDm78P)!!YFWGkxkYN%{g*12B@sA~{cYuMRlnW? zfPu33U%k>UEdzj6{J&H!-dDo_l+S+vq5qy~H?%1OfVNlvi?}o=!~%fw?EYW64zw%* zQ2O_zzdGR`1_MwP>HkvY`q=^o(7N#br7Amb9snTQXnCq-d71*bF3h>AxY)=y{kvUN zHumxz3W%Yrb=h%IngIa6lZ;Y(fdZ3Zh*rG~u4h3GQrzpA*Q%-EAcohN420K_G^+sc z%EReJ84L_y%QB<^3$Hm<0Dxt``-2>2DimM_2nl%5nq&ZgHFC9ALC9T(gi4mRf<#mS z>8<zaEYPt9QxWnF1SY~^ZGi&-_)xqxdQ+B!5UUK3d69XEgqVefm(<W+Ly^&SSPaA= z$kzifRfO-$U*9Sef5Q@(#aTuQ0i@B7uNHz^(zk+d##GyRU`R-MHZ<=Ld2Oy9*0{qS z-XRg-#rDD)@{8qmdHV;rJdIwG`3L0m+3#KsuDA_txjLe@{09M01SXg6kz|%`t;_e* zS~CA)qNelTyVnBi){a_8BmYGJ4Gl`~%Rj(<k7oCcI_y6fO8JY{FRV>S|Iy_=%>O_@ zigwGQZIik1AHdo9f5ZSM>k;l2m~Echaohh$0R(R>1t2Iy%ORuxivR@7semd|oXgev z|ABz{X-o!~%j<tG#Q#3jWdQ(-Xsq~u>&Qz~mI?z2jlKFW0-#@hlVKWtVfh!tX!4@P zNVw-O1fc(e<jcBzbNjd0-|hdm|D}-zVg^DaXYYU5TmMG{1Q0UtBRx-L7-cQp|FsJL z<LwH0D49K_mzAiL>HLm55{#NE<uL+pr)3oLc3N@gQI?5=kCyRG2}FnLT79I!Ss@%z zW~9N*e<DJGnU9i8Wsh<N_9P6e!Oa(ww&bP(yZ;<nH(!qpYT^@wCB0W>O&$G!5N)Ty zNt;20dJG>V4`~WTuxh+{@?tdopTZ#@i!#L@ftvFDZJSNl2LoJpq4<qtaN=O#9%`q7 z%HuUvybl}6C+0UYN0r^F;(JGB`2SS)A;_9oJSjF(tVWLmi8ez2K|<Xb9<Qm;vL17i zT+Lt@zSCV(p~1?>hSmGO`=^YOJP(7v=|q-0#qO+bC?(qd@2F<nNd9dP8D9lsbbiH0 z8($+4L=E$50b_Khija$2THwCKKsk>({u&0KA@8ROgYTdhzoLIbPh6>0Am+U{`+q4y zuCYC|%0*Gro*I!4iW2kDE7LfL@=gRd;n49dVeFDPN-KbD2C0(Z<hx*yE5*G003GBT z1p6A*kpSX{>OqgBd0l5LCJ=!KD#ykW7@iWQO))k|mogrUu~h{4+;i;BpFQaO&u5JG zk7x0JeTxAI@<V3ilaYn${KxYDk8?2ux!RO22gyK5(EfYCMoG~?NjaH5zfk|2$*EW6 z_^cu|91p%ph{wxmte44BR`sl`s`KhI8qhx&-R@;`&BC34xA&OZ0yY?ZPL)#Q;aOIv z=va<1BlZU%8Pj0sZV;Na?hoLL799-Vg?J7dK;jG?k+B~!?3*ZtDK$57yOI7vvosB> z5wSM;hM@@>dJHUh4)PJav72bg^0ATNWev~%0DJ~3wM=R9**kWpXs`m~B=_ezR6;yV z{s*p>oFCEW{llM-Qh_W#)YUS%k)3{4Uas~}=bu${*kmCs91ea`$IQA&5!1H0`u@FS zLzn2<5PD?YS<q>%!|~sG;FTtS!!n-n)vsI|s}>yd`za@yhGn$+ke`A{(e0t{&F^*1 zP)+xv>O-pP!s=e-{ww#N@+ba(s+KnuT{jgu=fD1KoUL|Rt9DG$szRPoA&mD=&8f`h z<-ctnN&hw`oBmHdn_>xhs^a-D4}Ys>;Dsjt*v4Pwd6Ho__d<`#T*B^&i&4UlM$N$U z<Zf#6G3&gmz2G1rw=B_Xmq&FpLZN&!Vq4Ub^1WUo(BgNT*x~=5Ly24zHVHelL>5{i zM<WunrqWWyqWY{{^;!F~^2!NONi*py#P5|jx-SQ=TMi2J0|a$pBObTc)-eJ2@@Y)c zxT2CQr(qZ;9y9I^MABeiP?}7{5vjxl`Da3@6S=T?s9nj`66do(d<E#)Aqgvn1D~zN zl%#dp=x+oxPI*Ox0HjhJ@TzPQMj`NMhF#-2UZjMsDa0S!?=mih@5%54&6_h+Ov*_a zYx^l&eq<;m`v#rFz;FZQ)>!`S2kq21SE!iRafoZ+?s)x<n|PJ*>9tIs<iN@Bts8RG zb3%~A{U7HSBuUnPMn33&U0;w4+Q$ryz0)%PZ_gLx_&>oyFYOoo67pfIlQK^-zvuGl zLxl9tr`~J7Csz^HrbQjSZJ}AA%l7xL)Nd)9oG(4F)J|&hgahr;=5Lx5Zx8+e)nf$8 zrA3#NO|B=>XKheKBUn&^Ad1MQ{8<@t27VG|ua0`mw?uekvCL((Dw~NQxZ<<En{4k) zfbTsVgoeo>t&E(guU&c9h!UpoDvuH~2<X@NJmzZYzwV>qgmQ*mea<x~s1N^P+ZsYp z&f_q9L47s$$uzrYKmK`&W>L^I)5}hJ(=O=YmrM83%5lD#cT+9&>PZe!4c(sxaaO$a zu4p#4_twu-E>ao&mn_!u#bxO+7ZwtYG)<N^3(mujM#Jm6=Y&Te8t=!3iIZD14njrR z%(~6HC7)~)7YHx?z<K#qA-MT-n(^-C1jnr#LZhiNI%0JzZvKdPAzxCK+jmYX?_z`l z!l^~vBdc@fgES|S=x%T1tP6FdMZAC-zEi@P3hD`MQ8BDrf$)o&wLgcmCQ)u<e6>~} z0KYNg5fa%*M%$UJJbaD98z?=whO)8-NL~AWDmS{oxf+ccD1O`@@BZK<Zbzpqvcy6C zrKg)K4V;y}d}gTV*7V*&=!jKL<ou!8&Xa2|%4e8s>vm+~;ni4j1aDGuLyT&*^L?`x z|GG#sIG|^eqP|PaDYS^PKi=22chq(ldJSiuYhpW`Fx@uuoOnr~Q(t~#U5z?!@)>C8 zgoTE-0K&VFH?pcc@a20;%m6dCkj_8A3e!2+M93n?+usw%rMt>kX&UH9#O6{o86-)^ z9;}a5slV5|U9|5dy2;FW`KzQfoIbp7ly_S1qpB8Dc-t{Wcqr(~*Ov=CHYgh9&r7Y& zeQ9tOsy4tVv@K$RzVb3<BagbE4bBNV83IyIe~>7idPL(XEO|xuQC(_R5bB%T(_M#W zNur)*&eA`JHjA5z;|zOY5|IzN^qaFDe<8l*!*;f&vXJh^?`j^KJj{4Su2vQIqfKWy z95jo)KFUYv)U(Swe%%V;i{38k7H@Es*j{hF9oBCw@r7~1Hm~wr7|k9`l^Y0nLRXzz zI9H5i@Y^Z_w`d{{ODUbG4=hCjm))nRB-dxL9b7`5tVidq(OxY`wZRv4k3ZdaOE%0~ zZ8{KN-B?t)G1^e^^JiMlP*<!5904TZ>uROnlqc!lxJ;IC@^q(TII~CG+xDXU2<&Bu zKaJx*l3k+-T4%s^cxU}Iv-mb-d2s)7Ig)f}2QXi5@20n(yctXkK`k<UAr8}>oyDm_ z?Q#>4n+>C})MFu_8p1@?nU@L_Txmzg%&l3)PFJAG&$tjt2ZRbOv{<Rsn51yGVJ2=T z2@r)|o>Lgdbl`Aem_N@`P)ACIF3B1lrJ{}nrGdP1=3pm?g`)LYyAww1LAx6Bsl(uu zZTQ(y;!F}=@>N7(iSKeQa3vhgnb~dU9f2N(cq*?VqCH88ZpK8@f7fH6QsaqN8Zp;X zN9tKFW`iVLt21uqp<SoR<$lPC5&$W#EgKbQv=aG_Mm?2rP5J|LqV3T<n(zz2sK&eV zi39}GoKs#)i;z-%$Bqr|MdaXHwN~q$qn?C28$S&WLiC*zPJ9}3Cpk)-<5?SgXhJja z%-5~}?b-;re7mupQqw}maB*#2`v8|)99qHiUZXBVbYp%QKDYUnB%<pV>(51IT@J<e zJMWE7%hnJ<?c&Bq&n@?@4G?L<`$T^C`6oli(V9>p>GRW|^+Rlg^20VY>Xg-n1f3St zi<Hx8VKR|1c4mJUlV@K!g7hu(QkV3Q67-ep#r=k+s_sx-(@To1({<@&%AT+KexExC z8prVN8(lNH<v)pKt@FMb9;?xTlf;xRlNi{rTc+au7?g|HO`+H~OG(wevWv!2v;<wE zQhwiq$z0=h2x#&UNjnqNJ!ebDQ_Or9cGQpPRIV+6?Q_5#tVx1%gw{S=o>nF`xQD)q z6+StMe|JuvAsrZA6tZ!Skq#(T1yC8hn~V$`x$QdscB6&1@2noaW|Z8I=fIV4#=jO) z$N%75faAtR*|i^p7|G-YjqQh<^v_-n9~9J%qfz6lrxZ>mZ70d#;vHKzI#DdhQfouM zKv5eYvd6K7$u3imy~pKDocvH1$OE45uT?ltb+`EzCl%jI?7$e-dh^hW_X?z;Xj|+c zDAc>|7{J8vNa#Wgf*A>${q!6vK5k(xigI=Hg)3JnFBr-eGj`os9m$3g*oYYCv3vLX zef<cBzf~3Qr9wI?c<saVcuKReK7KIze3Y*WFc&9CB0}mM*?*7=1wGwGTTh3zA7c<L z20?B-V!hteD=~#v87DpP7f@upjSY<05|o2jJhu3L5?$h;%`#R=uvl{q>BX}#reQWA z8IgnN+f7LXTEC5Bn0obf_G)xBn&_PZugc>0kR7oa&qH>4gP$T4Rt^x!vK%r!Du~g~ zxYNy%)sW(lqp|qD$Mz=u6dy2`-*!FOK4?`|l79hRf0l3%GXyDbOvt7nN@^Btm3-q; zN>S+tV>c1r4nBd)uNe@;!}rr}!p@0IBd4O?LN5?QVSt1b$$X*b4Ck!2)b&f=k6YK1 z&uJHSyO|!R_wI+|6Xzl+X7Lop#{K|aT&d>13VUHx0gBV%*i5^5`Mv)1h0<o)GFB`j ziQuA@zDJh7PFJY{vxTE@{TFt@byxz90V4t!rJZDt4Z<;{y>B)Oh@g+(!(Pl6s-<@Y z<GK_Y-fl}lBj560e^E|gHeK|oD^xGVJ^)Y-*ZBiH$tCIK_7`|=rlO`Xeof|6KVQJ+ zFtbSKgXAi`_Kgi#*alfpmM7GQxeeq%lU(ZavBU3RgXWEVx@X~e^j7bWj^ai1s!xL( zk_eRE-`U`WqzrDMk@5<_BV9*7%tHgeg4TNIikt;>rWkfDG*Bf<hN&J(X|p5PM)Kc} zB6f%Cq+4@SIp$Zd4Z_Tu6V;xoM&sW+#_Zv8F|;+dXU)BPXiiZ4L_c{O^-&ikrcA|T z?|Tgz4tMmAlU#=9C|w^PZU+*Y?Ig7L*I=s1EC|fK_{roXeYE1d`eTbK7F}Tim2p?n ziA1SXQD1*;G2_X-Qf5@s?QaQ8eqsgtz1BYaOQarLNp9au{qyw6`K-P9^&E>z)ysN+ zWg>3WFE<--)<ZI<bKJ!$=p|N!@y)f0ED?s|5BB4&$c`BM;=>ds$<6CWeoD-sX`%4$ z8!2S^kHc8iS~fv#YUSwwYsn4@5p5>j#j&K)4(zlGLdo%2OjOOIvztDRN@u$%E6HP& zQ*q%5ee0i5%iRrKvE4LU+{|gsHwEhW&Pd*#9y)iJHuKKN!yh2X`&ymo&Z?0s<l$Qe zO4mifI?_xuj_0Brh-B{G5_->xQiL%LqZ>3vF6)~c&i5I9bqKX{n@6;sBtmr~0gRa# z^QZB1n1~UG*RkNd@fJ!HbmXidgpZnMzSoiCDB7V^y{B>wpF}VaA3NU`@=+6qC&`ui z{IgfP>^8K!4PAl?GHYLTInpQs*=@f1LMfw%5p3J_(b%AL7odM<*n;Zw5%D=5c#CqC z06}Y@zO}_{Nx~Ut;}Y`Yr}Y8!^d$l%5dC<aOfj=TUY&~ETy)oEn<j+f=Zh0ek@)Mk zG<Q3r)yumdC+K2a$8LX+F;1S0a5DTR9WY>1ju}m&W^MCHmmwZ84qPW$2bs}^il8M& z)|y#!pg0(M+-ooyWCJ9^N)v^_Jwcm<?(h9j2N$SUU4wG9O`X(eFt@*SIY6`tC=>~& zeCagg(O+`Vn<TTIv>k*<@h@R|@_aX?A(%=E(ZJ-G)!lzBJ}@PIg}e_X?xh!{^61GB zEA;&=xV1`cf(1#QA<p|EFNkhJ*5+|jqjGUCdr2ZokQqa$wup_Vnp5Zt);ASDo$m>G z-M;V_NkO^p_FUCl*G5c$?<CLM&hiQCW_sMd*udXIQR_`2Fj0ED5FYN~&imiv-o4U| zTC8v3$4l_3SF)5tIn&-1sdXSy4s{z1`xLL4-G0s&;4eGUG)Y6__XWb_>HEoInW!d$ zv-?(LOjQ3PddLDZdm|gJVrLTKNiq0*ZReOHG-EiPJoYS7DH^9r>%o<)n&JH+^4H}V zG;=rRB)KR1_91tEnB!+en$@omzrMzUIOmI-`itbUX9bTYle-!SWAO3);Gi=7q>!g= zvRGh({Q4lwk_l-^=}ECZa&120-ddM=!X{(8i!2spr{S}_E}yQ=A%y~gMM+Us*M@}s z!@c}Mczq>NlcF)wk4>u<Oxh{C)&dQ~mzi5z07XI+@E%FMmlXX{XM8n-9K%zfhSNLC zaL#7OYinjcD}%xP<lJ_SslGtflZSxl=f@T8!Q(W9uP|r@v>m7iqDX0<;w@py2Yr{u ziX8S>S<=4B&KQ}X3Vx!JIu-Pg<)=5DNmSy%ZO+!4^<sv@JjlX8Hon-{&-LmFq-H-q zR)MFisA!*%!oxH7=xj8ib<~{a{s?hEsG2!uZ?;`p9JS2b!kMXC=gD;Nw!#$+WRZ^j z^?-d(Fp7fDrI6R(<nTN4J*h{1w$rnlba~ZtdSg39k{UhZa)9JW&S&O)7m;_j#aPkS z4hV?<ytTpf!y#xaxczWNKaAM_A@<=T5zWQuT@E?<(SE3NN#v%5i2nD$bDO#;^Yp-5 zi*6S}u&x}D?U={ouap(-Ujuu}sazN(wuwwAUEoxE-`xGLceem+m(AtZBCm)$znA1K z-1J2iybthLGYon8v&C)g1CouVs4vSqG*M4rICAAIQm8VmD73;9?3doD))INyNzsvo z5#$k0L>-~3q?Ih4e%{{FeymeW^4<J5MA8n!^rq;H@)wR@or8_23Coc<mU>5>tYD_e zEXAZ_(BXp{V%-Q-AMP1m7VyB=OCcf`x-wHU?-Al*>0Uf|l6&Z=$nOL{n|af^>vGRv zi{UsA`Hn_7=T?-+Gu8S<6k%FN*nqk~Bka^YPFh`{?6p8DhZ!R)%;T0H6dzi2HlL*- z!8togyo(NVvg_^<aRAe^F>a8%?=PUKN<C6XT#g+l3bHLwG61(nc7iziMfH2X<C*(z zzG-5&2nB|GV~QoQ&f~4RJzHh4x96b_BaQ)rPpH6XDMuVode#Eo1;ZyTmERwN;iEvS z+eK~$bA#vY7B>e}Qgj{#|Mdh7_+{O7;S)6x+5K4v0`ETWscT5k?L#J|8n%~^4e(+< zTwHdy=A|F_1LnozsyH?z`7ogE{aBr}9h6%6oh6?6Ax$R*%jY%UyIVm#yR0<~NlPuW za*E}y+u*L_Frk2~>wbq!3Ag-3g=bC$DWy^#gpYy!7_iTt<36A4h1b!IsuPw)kkIQE zRiANs(^zJWWcreQn0r%XdXQ?>@Q}m0i`&!5IuJ<VH0TIZ4ext$;`N<WJ>m{0f|p10 zD>v=+d_xV|?#sz5*dsVk<C&pQ*W=3`4Kea6mz0exDfwVsQa6L68~<>I;i{e%R!&8> zRX3v8cYGfgtIbYruyqXv=vxHQxMh2WAoJ-bxAz__x^nL)3T(cy^CM^aUxeRJP^%ub z(CUAwgh2}hhg5w8^mh?Y{Baq!b$Z&}DtMWWY4Qpq)+CY9#yxw4Ms@Ds+@!Ayp+TUk zXLJs~gHODnyZoy_l+PN<4{BI<$)srYBsLDc<|YNELN^=YK;CXI$`dGU9pZXF&bDfA ziPIr1id~(B!Plc1e7e=oEXq%vI*lDA)iE+V7=q-<2OA5~zR>~cYy3Fh6}{WoPeFBt z!;-Wiino^BkF`9onS#3!{54)p8)Bi4?#|&qZF|F#sCPR#U5Jv6+b49o>@FT<Ecyhu zUVRDCBfQ%CtRv`nF>JKc6FPgS$5z;+U{HP19vUPsKodhh_ONYQrMF@hV6=t8hkoHV zSp3MuzTUsNB=5^{aPtx;TeQbRu#=wbF2##VF|XW6Uav~p=t;DIs{z+D8ScA>Cy5<q z#1_e(U8HA=d4Wf>p!Zt$PZq(bXZvX*+`m|dCufJS_p+j4biOBhaa;-6f!FXPXrFYD zVVPzg92`=My!`Or9G2eSXbo-$m}Xe;EuNBGU_@Q*f{tkCXEgMV{paq^M`ezKc2}fT z_}lw;n&Xo6KaiQk(eh;atkLB>R|}Z-`}*MFQl%2sIP4YCMInCWTJtsF4`76ym1)iz zTJ)${bKn!_Gcn)#EjqVs@KD^`x>h6WLGS!9@9fDFE#_}mt51;0Ia=*!dnzc$T_$_> zP#!gRqJ)=A@cMzkEOdxl10jjcPtFm+p~7RuVRhe~(5m+wFV;exu`JbaXkNR??$sl1 zTr+UhWE<?cJ>pcj%7usP4T;M-nWT&6Rmb(I_G1p(A=Z$!M4vL%v!WoR)kBSslguuG zKC=D<hD{N;+I__il6{u4aWRS$qmhyb;JU^w$M-SkwO3Y705SCa$P`Ng={<zB7>!m2 zJ@l*W=vZt9rR>unze=k8(Aju~PXFh@C#$->yALOkm&BD48!;Qm$yGTjhuZZ#u(P+@ zV&Kvkqg=saSzRSuxf+<v%*JL@nNnw{MgF3qF%b`qAbPEvq~bP&ez%QjM_pR<>@{<1 zd$3`Jj0DMjvlXTtG<sXK0d@5YVn{HO{rd9-`uJ`3(T!q}^uW530*30cuXrSLmXwE^ zt*z7C6=HzgUVn4T0R4M@@agLmYEx>&E}-B*)_Qk0<t^@xu~&{~yfDk<O{<yHU+&nI zewOcz$KhvqA7HyT7O2AHHz1@T3U&kVFK-{Rh?oq<J&VFoM?)9mH%dX_PP06}bxS=q zr1*T$@=y)%=A4u<CS*IADF>`^gckQ7{KC`L`!-!SA3Z+H$FNSU*}C5;)_Ua;@w^T{ z{0~4A>}e$*Kb**zW)w^j=Si<~^U69h*_1Kz=bDKXR07Dq4+{A<j+24c=zA9PmF4Y2 z(3TJ^O41_PaGCjO!AUni$u=!A(MdxM(;DRp<LiXct*v|v<F3PKek=8%!p3L;b^-aw zqeQmwVN|6jY;GNn;enyc=ecB#J^9W2dLkJbib5Ax2>7B>R04U?;NV9R$m!3UUq6f! zk`42w((N`DCXAOh{d#tfpo9EkU+R&`6v7XNVY0Yuw}l?0bs^C*TEiuD)YttGQdRg` zA`3XX;M0cG)0w`I(gB|UBIqALB+Of!op|mjkvX2^Ns?dTAK*$fFit5S7fa6EzJ&kR zsHIfQeIH^pw1}!ELGjIRb@^a}1qPG@XR4zV+Kn@wot~hUx7g8NJc1s-#**dDpPNal zZ$@kp{+0{wf#T7c&(+WI7uV>H=WJ$jnCK4A5+y;t7Y4PdJYBqS{|Im&B7Zj?$5T}z zZqQ#*Yy`cO3Y~vh(^)Bbk|frVCv^1%*Yc81#{c9j(got_y@CHzDZYGdC;+JZg?|9` z=eT_l53{M(@+eus>5~rKCo9Go<m!7jMW=*)rP4on+-F9mm2!4ki<x&z*_LI<o`)Dz zOPBGgwJxSOjS&f0M2*KXa4Wm9X?+|;i~RPByn>?(9Iq9AOU$jc_^M{DI}S(<@rTQ6 zC!b;n^;2twob3{je4?qGFl}}b+07?T5Ol^Yq$xJ$l$u1&%v4{Qni|eoyXPNwR?l@= zzao7_;3uo;R5pLLAaO(I$?lmQd2_bP9?8M-dTF&MWnO(YP;2?treT3W^cs%E88`U! z+k1q2ET+E)ltJXI%kBVV^pm&Vct9b4vLkfTQk)_ezgG_XCme*<a3~=ys-VA}aoIbM zYQGrlANo7P|F}^&s|+7MJLd8><ijga<BzB-;j^gcwP;7Zh+RCk+zCzk$)n_QAEvyv z-r_xpdp^!Hw3P~<ewOQpAmjiIWCZ80cZii-XiEom%v66gv-`mb>IpfSW$dNdD_OH| ztr>YjqN8?ld1KA2a9mx#{m_(pE$2EDeB3uIDB1H{v`+zgJellK)#>guq$XD2an&a- zL#^D^TGNilgjhiA#1Kid4>%ml7K>G&E}M7U{vd&oD<7t2D<<Ku`JW{_bVO_MbgwzH zVmAm?Ng?w;g*|enfj#sh;8ks!>4oOWtS--19*J#D-CiYzxQmJk+;~O4x0l@LC2bhg zdaI>bG>rIFOuEk0;~Xj1=P25?n8(P8%NuwW#zFr)eRO}q)xzDGrl+Tla8E8mb5&=n zeOJh%)(;YreRwm%dDv{SfG=-S^}hAq>bX3Nu2S3j>XBbSV}l~kr=ZXkSB#&MtqDYL z`FuTnrwUUyjk|vZUh4@ee}$`QEbS9VNXPiq$liS#7~2cc!s@$|^!gei)fVS=a?yM3 zwzW&VBP}iRgr;aXU+X$VVrTLC!Gq%ka;+MI1t@T))Jtch=_;Jvw<W9ocsNjKxug(2 z=W~@`aRWcp1-R|bV(c#>2WEU8Tgt_R+mDB)A83g4NwJX7dF);b>3w1Ki_n_K^vF2g znoK+~uI-B<GS=^LuWnbE*f+@B$gFUauMp?`BFWE}aESISB<^vC6u^~L(nW5ft%S1k zBkr&0>nL0dnvg4HRUKNtKS0(G$h$7DY01zU{(~sO5B4MXPsUR;-UVAbB+FP%g?ceN zZTXt4UF3$_;}c^(o|T>tsGMHG=5ouhr~}1Ltri_E;|R9Oo}4^=Mu&QTQe@vBvwIPT z@*81_4Fu>*HZi9=897vIUd2|w^fKx$oeE^@=8#a=K039|e#4G6hg|zmH3@W?Tn?k? zjtn<X_zrl#4lzZKbWI3Nry@nGxIj#ZYyPg?+CsO+!|HT{nMrhCH=2xoAnk>CXY!_) zAZ-d!o{}_Yuc;-nlTVX-1>Rq8Lm@8{LB+)gNslTuCHii5kXI|l?V!Dl?6zH($ja5J zt9(D7R>yq%KAt>k@cv$@`C5&4pA{TrF=5JI3rEj)rVo0KW2(aYc&l=ko0MF?qR6aA zcZj$dqugDvOgC(ZdvmsSJtx}ATsZ8j_iUCJ@wVqz2D#)03@;x#X;#41@k9Ry%hkFR zk*6Rs^q5a^V(U|NyGf(4KBiIsUNE~@%A{xm%K10``8*8$r9ev;zEsu}=_52fVZ8+~ zMSY0D(sms_e2(P`(F?Pt&Fs9o-W;URY%a9WkaHm9{~6*wf{)dsoWJrjAv+}C$IXk6 z`kBAD5&N7UQ6?<twd)PL7_k}ax9_{Z`DozB`*&@sY!vS}&bO~JP?%YN54=bvVJ}2S z%}k5lJHP02;Mv&m@DP<Xk7oG_`F?C^g%M%W*|;#X?*}Lp&k@nnnccThM1R*j?mU}N zmBke-4-K84uJ0e{r4>rpbU3&4J&aV7b7WwX3RviNT*+t0P8grLRYtSHcr==8Dc{*C zn=AF?d8%X7KDp;!A9<(iF+R9gKFxblR3_`i-1%~BUTeQ#y$G|CQV{|21}{q?`#AW% zku2W3qHV#SgcQ4aRcu6Uul5yUFgj^40b`llgke_5J2)i~pNOZJKtmlm^D4-0ogJ?r zaAi@&?1q<8o?}r+vTe4TFCOn<fgrcTy=lcn7iH*8aXC*#+(MGs!?zUBoF-oL>>6j3 z<4P_5aSfOqqt^ebEq7L~wY~iAEF+amq+1=aY9gK|pc^^_rXW{r<sqm<FA91)5y^dZ z(%qyp0-_BkUOg)P<`-#B<q==&t}~2Dy<oDiv<d8@;Cjzp$3!GYVNRogRwpDyI}5+@ z=V^)pcZhqBG<7zYXeK<+Sme1c`Q>OeHXe<6-6e+U8#%?KM9}$Sw;QcUGzZn`!ZNk} z%3e6oTiU+`R<_lrzpYW?nyt()CQIlRKZz)VbhZ^HahdculRoN?7Qnk%m6ljfJtkEW zPWBrpmKXVXc@2k@QPBB(Ig4H~aOMtfM4{LFWxJqNpX8BHTskJC6lypv6rFU|a8gsk z#Oo~J7dVtrwmg>YE30REQ}~Ur7WI?&NpyQBDRuDE=wctI!{8!{$o<$~rxa&NuL~Gv zuEYn`(5Zt9Z@)0bR%-g<><=|oFf#7XU#yvJq1PUykiQwmI<-=oq6&JIJ;#cI{}Uef zga|9{;B{gCR`FZR;=FTTPavuulP1Lfse`)Mt2ZBtNq55Q?hsSz&49Ws4V##jaD7TF zX#@MCK+a{?bN{o%G#P1fi#mm`#a{Gu?W3I- NRzd9WnH1H#0NV^r2A}4`%Y}5v zrED&kw_2||2fBR}gU6+R-V5fQ8~RA{+an_&zcfX|9i0lf_a!&Yy=5`aClj~*{ArQV z)n`(WMZ^L%>)T4KVR}js!&GRfX%mTBm!wC6HB--TSxoE$xe1974}MEJtKK>fDk3qo z1-?z`BT|w_k&kz=ndYh`wGmsmWVT7OTYj<XjN?B}_IAm@Xrd@x!$&X!XTieq>o2G% zF-3KTgl|)5{O?cnjqu<Lg`GcM93{;r5LA%6`+mES@Q7om#(Oj{<CG$TH?Z*D^ek4h zbX4ZXT|3c<Lg52Buhx?RNqdaOBLqK(u|jRb*C2P|Az9GPe&ywm@S|{@{$PP3Q)hu^ zxzx5;QuT>nnP0-o{s09PNk6LJsy@G;D0?`L5_QuPJ_<diK0(`v@4BJAcdr9cuChDs zhHYB%LC}}d#}J*XR=m%bWI6AV>Aj{H{DOAXzf3fzm3H~ut}|E^O7g$d)J#szX2|rZ z?K(38HK*?<;y{Ex?e0f0JLz!c??l>k92Qt4CRTnwIm{x_BR?|)Cmf^$x&-P{InDwZ zxY#cH%b1TwzSFU-@jl8C;z0z5EK=yV{0<SpRUi}F{oa@BAX{%wtnY53`ffS+$qIbg zH)OTQ`RnV~1kIo=5fq`_8rCF<Cr&j~*m`oEg;-)|L-{f-CbYAICqJ(|zJJ!CtBv97 zEhnXrIy6I^m7-X^I}@Bgi{e#7A-GB%8JaWr<o^fo?=sR+bUs=0i(<xKM((WK^y}lf zGD^Lsy7fqzhU?TOU%<O>&4*A}bjtH)gM#4EuM(YqWfXXY_|JpDr1HZLm?~<Hgq(Nx z6q6tMpwSCK9+UTj&yd`NZ!L%mRBkqA4AB_ik|UBXrwTv3<?`u@OkYPRKlS6mMC-6c zDap2($J|o-D00ysXUk;O96H3(S>QZdAKIFz2)yDo*gZ->(@m&1I?K|YAP<%&g<_Q4 zo&*l+n@rPdWL%XFy;RvNdvv#%p|;$$GlG(qB6Tf`O;%Yi4AFBzU%u#1bDqkZY+WO2 zcQaiOLv@KrAy}^2oq}ShZV4^RYK66dx}LR;vF#?l#MW`S+rm5@Uo+Bz$+45$cb~}= zs}v`H*%cu}55L_ApMf|{?+yQOr{b`t4y0VG06mMcwJ*5aBmfCcUkvfF2du@|9(7u= zJ&u~PI<(MsjKbxs0ZICVzS8Zm<gE)+{$eiOxx*HNd1Ch_q(l4<FvLfpo!!%ZV-@!W zb5-r&F4R~2>w=DP-cj-jRo@esKt}H({GGRfVFx=K2cAsp6?&&0fuce>2It^+4@3?3 zNSf(#(0UYYp{rVgDo*z?W;juYFviJ{0^nly<z%i+#zyhc-klAWfF9SK#}tYJnuTx8 zFBrwja4=pKft<M=($AZYo72n*he@`aZTBcVlB-0(Vk}Dp#)nOuEfnrkIoV3NKI>gN zaf;iAsv0t+fI==uI*(tXR?bOZ)WTlPZGmUon5z4%;}prw3-KhBA6$^~<naDI-?0$z zZKMBlT{rm<&)4V@`{m_XyfC@yj5R;#FOJ6Gd(Q(7{OPk*QVI0DtKI1VCjI4iD`+lx zGaT601^%WSGOSQSG*X;Jix}GY4UXL#VK#gny@7QXY02@hX!<7)dZC*!tca1g^S%~T zxume4R@dTV&j+Tac<vt$f42OY@M5dKD?_+{^;G_>or8~n<qu#_LZqMWW}nt8UMeEu zj?G#i3P*|W=xJdg_13$%7?x4e$u=*dK+E!~_>HHWOhUVAQTK$2r#)ornqRmhKMc22 zAye-}v@i#p<ga=c;uVh<pgwkz1Zpi~Gvdt9`RJ2>Wf|$>e^%q91pnD>gP3qpIgoQ& zm{5c=Yql<QH$7z}WGXB<iSNj0sY51HmEHFj=vin1`K(T^Y7jk>!8h28q|)@QI+P9q zFX>e7eY)E)K^u3x>4_jSW8-PE3eR3KJ(Df>sq6NMBDP)}-J1~p&`YW;UD&2r3GL#g zvp4%FsY3(Pbs#xt(m%Pt#(D4d?7cRX-LP3&pA>zDSy}7uQ52tqR<Z?0Na(5DNs{C9 z05g6&qA+WL4vANj7L)>eQKu*oEuFrV^Q4SeP1JpzG#u*%n$hg98M<i*sy4R#ooNNr zjyH$(zlj#@vjXwo7m_T8qm~W)ic5=sKZJZEVW58Ld}nIR`O76FS_d>ky3j)ULbH_T z&T_s3E^I)H@@TN+m(%^mVw7O5tttA4VEZ2<kKzR!JhlLQWG6h-y@i}s?wi;J0c|gB zdXY-G;`(L}5~Vyk`U%b&$;Dbr6gNw8w~51ikA#vZSUBze4;|-yAZ8$8a&`iPh*Qe9 z3{I%ZsYahI5c#tB!3$Pxz=B-NNxo3znqjZwZjj?XnxsAp%al{3<9KKyiq+>#^3Q*| zwuf{_h_jX;(4p+<#$^0T*B9uvKuZ36IH|LBGNjg*e<>|tX{!e-xaUl9I^O5-#?7E_ zAY2q>iXcF(h`JX8&}r1HIGF8orN~N^A#pC=^ZwZD#sj&jVtlUx{b~U_-2g?><+5`+ zKC7zma-d44XESV3P}a?-!w)#TwZeG)z3agV)5wpSc!9Q(q%KYEDh`ibs8W23@M*HD zl;{W=11);O!&wH(*~ad}PQQv)kk>qfkG2@UC5A?HLN=Kudp|ap*p?wV{o9Sz2&v<J zPMDeQXXFN1elb4zH|eV_^vq}B9Ojb~jk$f)KhN9Q#fe<0Z+tS}`!?m>Zx^q_1w{_B zCv+4G>&>OsoVS>H#dD8>O__g<Y15~pX<BF82Oo>5xFS9wHwwYE1M`CS%`%_0F?kjg zwmKzPm>`txlBnTICmBTLTRe5!Zoelr=AB=`APY=i7lT`eh!kKoqGzYAtr#|&N=Z@} zzj|&AJT0M!4nJug+&2Lx5Jd+x3oWfn&ljA1Y1_uW9c%VXPL`#;Y|p-9Lf?5TJw}sR ziqanwQ$Q!JW|HGA3l)yU$dMVjAmXJURpFW%kI2N<vM^oB`R*TnW6uQm-@d?tl(~tR zP>#K?uVC^35f_EFnCVf=pqS9q^0DYFP>f(2QY%ls$xw)4a!20n-j-AryB-b6@C9Cq z^&0Cq{Jia6l=VG43l__}+2sCa^=(xjg^W#ezjb**FnO;jCcZAY>vl-qO7`GdVl$To zaJd}HSUvgWes7A^SN^g4X2B3Dpg3euzW{<Xg|;+uDm*gw@jo9XD;?=h*zS2+*fhhU z$Y+M@kX*9W$zbWVk({O7RhX=-<GrdcPFcDf?UjZu9*lWqFiE;ks&;zx2avD%Q6Bvu zd{F7nYd&i2S>Jco!y|whN8UX+|D}q*3^Ip97N>(MN<irjCo0aU=yPB#FnO=1N39b{ zFC)5E@galey7#!Tp~YH8?82j>Kt#|T##CRw4d<rt^^ML3zpV&Z3TD+Q?fSV;hxtrE zs7$hv5xQ6#^YXzf5$xjsPx5CRKp^-;7K<cfgv>L;|1)<inB15^!Xrv3#dPwE^=HKu z$Ge=DMjcEG5JTvU{c>k~vGe<}g`tL26b7pLZ?l&}jnxf)1QbiN#lWp~a-(~z#Zjm2 zsL~tX+s#UaN4kpvYl+Hl8LBj8Hw9J`DhoBLgmWC>_~~Y7HzOkWW@}DE?ZgoiyhJFR z-sGP?1_w9XL=$irBean_1|N+u@%t?Z2r5ekydt=}N`|flw{x2F6)jQt==BViNfcbD zo&hI#tcw*dUcizJF!Kbuu$v7PtLGy<pH{ogqM5Zf`S10XSk+4BAGQ#%dt|E)Y<k5_ zC6qt9%-I8pP%rvKGP=LLb)&)lbhHfzCzS@j3RzS#1M`Y1FsPR8F7L&E&cm?{X*=l@ z56So67lj?zt!Y3#OC|4qF!4+Y`}WXU3NuZw;=S#q0HZW3Uha~%GOvYb&`ggfxBoc4 zxcX9k@Ff!G*0xT);HMa$QI){!>-w8sS#u0o)`88!^NNP_Z7?rAZ3Rc7zmZn1@W5i# zVfb;Xn|<}o$=z0DolEkE;r>ztuD<?DWVBD?1@spq;khzr48u2+Zr_+@yYW}F8wzy9 zFFyGfSbwxU5a0Vu5_sXr<9cTZ(voj|b2#QllMrhyCYHSrcZ5E(kE<YG@epK><|#HT zr$CoehOK$IPD=W6C&-ps5}O*y@fyBwYQ3nd$<}<fOg727!$-n8FxTmHHIGIVqx_VM z{p&{lh6%Ql>4O{AcA=C9NK{DPoW>r;lf&>BGUFjOj8{C0TIl|Y2iUyGWwzih^iT=M zS6G`RZRFxPs$*wof+GBH12<#U=$W^#&M)RY48<M92)`aDu(9w9985DP(qZ%=u6s%L z<oj%I_UjR!s>3R4uNeI0hrj@8iDX2`uZH?-$Z!2KJjeFgy^{o~&ol2N=(x=3JaAIO zt2td2jaI~t?4mx4`?I?U%~omHe|>~LAOel+k?4g&=y-YrVWhqRV}#7k6_tj9apEZG z+<Njlq4_)0Z0hwQdmyRt$fcy|_gT=YuH*Ep3D|D<?0#gta#dy-NbS+Uh!~{lEJ5M1 zZ^2FsYphsA^VtGP)J-FUmgcX0P&+5dYr3L>&4}kpe3CaS;fx=Yr3&n3gg$M5#)c$q zdfP?dFm_A-W`?WkFRShi-fc5}P|L8_tWS(mkV#WiaTNO$ux2=~3{PJBI_E$1x`EUj zFNVK$h$ON=;_7#>=y}n49aH1_cc=99nL^xUOK+;fUs0@x++FfI>^76daYeVl*Rgo| z3JZ?f)y>cYbqhk69?qn9iWFU=)9gI=;vG3RmCVnax0*!itLUl8U3Rn*G2$LSV<&FE z)EuP^MsDDgOM0Yn%h(V&LrUuA1~e05eU4JB3%aFpJlHh@w_Bueh8$ZT&1P%nu7@VF zza%i-=!+;ZaiIO8jlnC{uhkCqINpLfR!nqx8JEoyEA~42pF7$laz#&JHHHk+y5&#V z#kG^i6i(9Ed}7ax?(Z=yIEfd-liDEj?g|bdzhhL&b&ombjAJvAIOnaxG9-QLAeB$D z6?@q`S1b@GOT96TGs?9=x?023)Ep6e&9d|<@A--gu6Xw83r#dJcg+7MB?a30)}Ne5 zEzXXzXaG86XZMH+67alWMH}*ed?zRyj<1YUt-M@Bh*Oc%i`tUUTm)qnS>KG<l<Od? zZF|XG#o@Od2$O<vS#SXY2r01gdf>N~*f=MPu_Y<?p@AAQOY4A`05*5OIRIGibV&30 z-XowJY<iB#+5PFo2n`gFqO)7q1ows?(1W7^ch=Lda+za+Km-8j5Ahu0iKrqcj89lW zb>JxtJe(0S22f_ygn0_YIpptVS5g{8vv5;KXEO3pBLbzMO8$AoPFi=*IU3MB7#riP z0Pj~s;{N~`X|IC)^6>Mh+;Q?8;ESB!8KYiKFt6q1z_Gr$$GscZPFjM#7qRYSgeJ|d z@{Ba{{_+6X=l5bphhuzW3LGkr1A(<Jxx)<@c&_wdG>E<O{`i{MimR?P{9nEhK4NKG zeMxw{9x>Uv5qT~4IyBeY1d2)m`BSyq`~ZKAT{kT!Nzm!d%#<KR2)a?vPlUK7E@?~5 zA_qLrR}fi*7Y=0q0FTwekg3Qm#sU4zXkB{-HA3su${Str?}|S1TogN$n5cy~2YJ4J zsV%{wp*OCxZ6kw0d}Y~k>SEGXoMcOu5NI_U-TpmuZA2+N;5a=+$h4Mi3goJXZ9@y5 z2d3w4#PIciNC`%|@sJ!nDYT2}{=S)_C2|7uw?W?$c5p}}4Cw2?==Xd703ax;iZJar zTt8m3l&OgbG<i3APHtAhTW^wiHHSo0hTgcOAk)50;h{_3&T>UXIeWzfIh~mUw=YAC zpm-j;%{||Y1)tk2iMzaN5QnBMeOUoZitsji^^ld~@NtV>m;vhd;|&1cUin)d?l9Q{ z0wW!J^YhLq*~3+FC!RgCW#MU5-1@q|Pe0{ws*pjqZqB^%;|7b!NnN|O?suCVk8|4% zvV{_2v#4k=*&%M$W!5jN&Ib5%-tbUWU#<cW>wYlUvf{&$e)zD3koLK=Tt1i~Y4dr; zh&wpJASy4{CkEgn!;wYPyZ6nljcC)(zkGq>YixEq4Nk9_imI(%{{YGu(@su7P_&p6 z#h2H8%)ivwMd;Qc;eB!S+ukIP?~ee9A#vFWuG1=i83UesGLWICo!1)mFbeZ}&ZLe& zIXBj5ZoRzZ6uMrzz{E{u(<fH(?SgiQ?)|Zgdg~b&Z=Yrd?P@Qo?(YDKM}p8F<{+XQ zR76h*rV2p~ry_@9&ssXVG$#1X7ZK#w25J|NO!>v~>nm$e`eWZ-u5xvQ)IJ%BLs0XU zkTsgnZwM4SL^+t0_ciN&n2wiSafZC_oC`#!o*X?Wf=<<)V9P9x$7}rKhc#yY>OW=8 zp79MP!R$#fH^xG|^d?>G);gQhj=*m?rB6&vZ&!?gCilNw()jej7MCiH)SO_k^~FZN zUUNYX^QPQdBgwp0VGqjS54B@6i}!tfzxWm8r!>mGXD82t8JmnFM=c|YkG3~m=iQ3q z0Pf)W4shQ-nKcb&z-}C7oks!_XRdk^T-^HQ<1D%Rp!rvtUkZ&z7;qo_0gW@Lq(N#k zqu@@)BT>`FAq{-z0Gjv94IA~xw|IHqTp44o%$m?)xlHGH9DUEO2DsmxHXlrM9rurm zZ>V;UKytdxlnFL_6p`0Zl`OyfC7)aDT70daB`Lwj<u)-Iy2$5hLtY&VS-<JTfLDk7 zvq9!T`})={;ugbSIDOLU@4gZ=-#OGI9c*(F_0t?QGrC{C6-b)e7yxUys)vjj^xGG= Q0qc^&MJT)opZ?kZ*{gpP?*IS* literal 0 HcmV?d00001 diff --git a/core/embed/trezorhal/boards/t3t1-unix.h b/core/embed/models/T3T1/boards/t3t1-unix.h similarity index 83% rename from core/embed/trezorhal/boards/t3t1-unix.h rename to core/embed/models/T3T1/boards/t3t1-unix.h index b7d4876f75..d94ce0b4ab 100644 --- a/core/embed/trezorhal/boards/t3t1-unix.h +++ b/core/embed/models/T3T1/boards/t3t1-unix.h @@ -21,7 +21,7 @@ #define ORIENTATION_NSEW 1 -#define BACKGROUND_FILE "background_T.h" -#define BACKGROUND_NAME background_T_jpg +#define BACKGROUND_FILE "T3T1/background_T3T1.h" +#define BACKGROUND_NAME background_T3T1_jpg #endif // BOARDS_T3T1_UNIX_H diff --git a/core/embed/trezorhal/boards/trezor_t3t1_revE.h b/core/embed/models/T3T1/boards/trezor_t3t1_revE.h similarity index 100% rename from core/embed/trezorhal/boards/trezor_t3t1_revE.h rename to core/embed/models/T3T1/boards/trezor_t3t1_revE.h diff --git a/core/embed/trezorhal/boards/trezor_t3t1_v4.h b/core/embed/models/T3T1/boards/trezor_t3t1_v4.h similarity index 100% rename from core/embed/trezorhal/boards/trezor_t3t1_v4.h rename to core/embed/models/T3T1/boards/trezor_t3t1_v4.h diff --git a/core/embed/models/model_T3T1.h b/core/embed/models/T3T1/model_T3T1.h similarity index 100% rename from core/embed/models/model_T3T1.h rename to core/embed/models/T3T1/model_T3T1.h diff --git a/core/embed/models/model_T3T1_layout.c b/core/embed/models/T3T1/model_T3T1_layout.c similarity index 100% rename from core/embed/models/model_T3T1_layout.c rename to core/embed/models/T3T1/model_T3T1_layout.c diff --git a/core/embed/models/model.h b/core/embed/models/model.h index 1b98b8a81c..69754ab5c1 100644 --- a/core/embed/models/model.h +++ b/core/embed/models/model.h @@ -4,17 +4,17 @@ #include "layout_common.h" #if defined TREZOR_MODEL_1 -#include "model_T1B1.h" +#include "T1B1/model_T1B1.h" #elif defined TREZOR_MODEL_T -#include "model_T2T1.h" +#include "T2T1/model_T2T1.h" #elif defined TREZOR_MODEL_R -#include "model_T2B1.h" +#include "T2B1/model_T2B1.h" #elif defined TREZOR_MODEL_T3T1 -#include "model_T3T1.h" +#include "T3T1/model_T3T1.h" #elif defined TREZOR_MODEL_DISC1 -#include "model_D001.h" +#include "D001/model_D001.h" #elif defined TREZOR_MODEL_DISC2 -#include "model_D002.h" +#include "D002/model_D002.h" #else #error Unknown Trezor model #endif diff --git a/core/embed/models/model_D001_layout.c b/core/embed/models/model_D001_layout.c deleted file mode 120000 index e68955d8d8..0000000000 --- a/core/embed/models/model_D001_layout.c +++ /dev/null @@ -1 +0,0 @@ -model_T2T1_layout.c \ No newline at end of file diff --git a/core/site_scons/models/D001/discovery.py b/core/site_scons/models/D001/discovery.py index d9e3a9331d..14b363f662 100644 --- a/core/site_scons/models/D001/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -12,7 +12,7 @@ def configure( paths: list[str], ) -> list[str]: features_available: list[str] = [] - board = "stm32f429i-disc1.h" + board = "D001/boards/stm32f429i-disc1.h" display = "ltdc.c" hw_model = get_hw_model_as_number("D001") hw_revision = 0 @@ -30,11 +30,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_D001_layout.c", + "embed/models/D001/model_D001_layout.c", ] if "new_rendering" in features_wanted: diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index c50cc834e8..5012021b09 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -12,7 +12,7 @@ def configure( paths: list[str], ) -> list[str]: features_available: list[str] = [] - board = "stm32u5a9j-dk.h" + board = "D002/boards/stm32u5a9j-dk.h" display = "dsi.c" hw_model = get_hw_model_as_number("D002") hw_revision = 0 @@ -32,7 +32,7 @@ def configure( defines += [mcu] defines += [ - f'TREZOR_BOARD=\\"boards/{board}\\"', + f'TREZOR_BOARD=\\"{board}\\"', ] defines += [ f"HW_MODEL={hw_model}", @@ -41,7 +41,7 @@ def configure( f"HW_REVISION={hw_revision}", ] sources += [ - "embed/models/model_D002_layout.c", + "embed/models/D002/model_D002_layout.c", ] if "new_rendering" in features_wanted: diff --git a/core/site_scons/models/T1B1/emulator.py b/core/site_scons/models/T1B1/emulator.py index 89e69daa93..e44f8d7f58 100644 --- a/core/site_scons/models/T1B1/emulator.py +++ b/core/site_scons/models/T1B1/emulator.py @@ -12,7 +12,7 @@ def configure( ) -> list[str]: features_available: list[str] = [] - board = "t1b1-unix.h" + board = "T1B1/boards/t1b1-unix.h" hw_model = get_hw_model_as_number("T1B1") hw_revision = 0 mcu = "STM32F405xx" @@ -23,7 +23,7 @@ def configure( features_available.append("display_mono") defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] defines += [f"MCU_TYPE={mcu}"] @@ -33,6 +33,6 @@ def configure( if "input" in features_wanted: features_available.append("button") - sources += ["embed/models/model_T1B1_layout.c"] + sources += ["embed/models/T1B1/model_T1B1_layout.c"] return features_available diff --git a/core/site_scons/models/T1B1/trezor_1.py b/core/site_scons/models/T1B1/trezor_1.py index 2fcdf6e284..a3814b05f6 100644 --- a/core/site_scons/models/T1B1/trezor_1.py +++ b/core/site_scons/models/T1B1/trezor_1.py @@ -12,7 +12,7 @@ def configure( paths: list[str], ) -> list[str]: features_available: list[str] = [] - board = "trezor_1.h" + board = "T1B1/boards/trezor_1.h" display = "vg-2864ksweg01.c" hw_model = get_hw_model_as_number("T1B1") hw_revision = 0 @@ -28,11 +28,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv7m-none-eabi" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_T1B1_layout.c", + "embed/models/T1B1/model_T1B1_layout.c", ] sources += [f"embed/trezorhal/stm32f4/displays/{display}"] diff --git a/core/site_scons/models/T2B1/emulator.py b/core/site_scons/models/T2B1/emulator.py index c0a368279c..f8e5da54f8 100644 --- a/core/site_scons/models/T2B1/emulator.py +++ b/core/site_scons/models/T2B1/emulator.py @@ -12,7 +12,7 @@ def configure( ) -> list[str]: features_available: list[str] = [] - board = "t2b1-unix.h" + board = "T2B1/boards/t2b1-unix.h" hw_model = get_hw_model_as_number("T2B1") hw_revision = 0 mcu = "STM32F427xx" @@ -23,7 +23,7 @@ def configure( features_available.append("display_mono") defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] defines += [f"MCU_TYPE={mcu}"] @@ -43,6 +43,6 @@ def configure( if "input" in features_wanted: features_available.append("button") - sources += ["embed/models/model_T2B1_layout.c"] + sources += ["embed/models/T2B1/model_T2B1_layout.c"] return features_available diff --git a/core/site_scons/models/T2B1/trezor_r_v10.py b/core/site_scons/models/T2B1/trezor_r_v10.py index 3327af4a26..b39bc7884f 100644 --- a/core/site_scons/models/T2B1/trezor_r_v10.py +++ b/core/site_scons/models/T2B1/trezor_r_v10.py @@ -14,7 +14,7 @@ def configure( features_available: list[str] = [] hw_model = get_hw_model_as_number("T2B1") hw_revision = 10 - board = "trezor_r_v10.h" + board = "T2B1/boards/trezor_r_v10.h" display = "vg-2864ksweg01.c" if "new_rendering" in features_wanted: @@ -35,11 +35,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_T2B1_layout.c", + "embed/models/T2B1/model_T2B1_layout.c", ] if "new_rendering" in features_wanted: diff --git a/core/site_scons/models/T2B1/trezor_r_v3.py b/core/site_scons/models/T2B1/trezor_r_v3.py index 4cd7a6adfd..d1a426f7e9 100644 --- a/core/site_scons/models/T2B1/trezor_r_v3.py +++ b/core/site_scons/models/T2B1/trezor_r_v3.py @@ -14,7 +14,7 @@ def configure( features_available: list[str] = [] hw_model = get_hw_model_as_number("T2B1") hw_revision = 3 - board = "trezor_r_v3.h" + board = "T2B1/boards/trezor_r_v3.h" display = "ug-2828tswig01.c" if "new_rendering" in features_wanted: @@ -35,11 +35,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_T2B1_layout.c", + "embed/models/T2B1/model_T2B1_layout.c", ] if "new_rendering" in features_wanted: diff --git a/core/site_scons/models/T2B1/trezor_r_v4.py b/core/site_scons/models/T2B1/trezor_r_v4.py index 90bf5d12dc..7654b83eb8 100644 --- a/core/site_scons/models/T2B1/trezor_r_v4.py +++ b/core/site_scons/models/T2B1/trezor_r_v4.py @@ -14,7 +14,7 @@ def configure( features_available: list[str] = [] hw_model = get_hw_model_as_number("T2B1") hw_revision = 4 - board = "trezor_r_v4.h" + board = "T2B1/boards/trezor_r_v4.h" display = "vg-2864ksweg01.c" if "new_rendering" in features_wanted: @@ -35,11 +35,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_T2B1_layout.c", + "embed/models/T2B1/model_T2B1_layout.c", ] if "new_rendering" in features_wanted: diff --git a/core/site_scons/models/T2B1/trezor_r_v6.py b/core/site_scons/models/T2B1/trezor_r_v6.py index db2f8ff484..1d02dc6295 100644 --- a/core/site_scons/models/T2B1/trezor_r_v6.py +++ b/core/site_scons/models/T2B1/trezor_r_v6.py @@ -14,7 +14,7 @@ def configure( features_available: list[str] = [] hw_model = get_hw_model_as_number("T2B1") hw_revision = 6 - board = "trezor_r_v6.h" + board = "T2B1/boards/trezor_r_v6.h" display = "vg-2864ksweg01.c" if "new_rendering" in features_wanted: @@ -35,11 +35,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_T2B1_layout.c", + "embed/models/T2B1/model_T2B1_layout.c", ] if "new_rendering" in features_wanted: diff --git a/core/site_scons/models/T2T1/emulator.py b/core/site_scons/models/T2T1/emulator.py index 7473e01e90..02102b316b 100644 --- a/core/site_scons/models/T2T1/emulator.py +++ b/core/site_scons/models/T2T1/emulator.py @@ -12,7 +12,7 @@ def configure( ) -> list[str]: features_available: list[str] = [] - board = "t2t1-unix.h" + board = "T2T1/boards/t2t1-unix.h" hw_model = get_hw_model_as_number("T2T1") hw_revision = 0 mcu = "STM32F427xx" @@ -22,7 +22,7 @@ def configure( features_available.append("display_rgb565") defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] defines += [f"MCU_TYPE={mcu}"] @@ -55,6 +55,6 @@ def configure( features_available.append("backlight") - sources += ["embed/models/model_T2T1_layout.c"] + sources += ["embed/models/T2T1/model_T2T1_layout.c"] return features_available diff --git a/core/site_scons/models/T2T1/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py index ef675f7e40..4155114fb8 100644 --- a/core/site_scons/models/T2T1/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -12,7 +12,7 @@ def configure( paths: list[str], ) -> list[str]: features_available: list[str] = [] - board = "trezor_t.h" + board = "T2T1/boards/trezor_t.h" display = "st7789v.c" hw_model = get_hw_model_as_number("T2T1") hw_revision = 0 @@ -34,11 +34,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv7em-none-eabihf" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_T2T1_layout.c", + "embed/models/T2T1/model_T2T1_layout.c", ] if "new_rendering" in features_wanted: sources += ["embed/trezorhal/xdisplay_legacy.c"] diff --git a/core/site_scons/models/T3T1/emulator.py b/core/site_scons/models/T3T1/emulator.py index 9a1ebf4249..61ad1ad67a 100644 --- a/core/site_scons/models/T3T1/emulator.py +++ b/core/site_scons/models/T3T1/emulator.py @@ -12,7 +12,7 @@ def configure( ) -> list[str]: features_available: list[str] = [] - board = "t3t1-unix.h" + board = "T3T1/boards/t3t1-unix.h" hw_model = get_hw_model_as_number("T3T1") hw_revision = 0 mcu = "STM32FU585xx" @@ -23,7 +23,7 @@ def configure( features_available.append("display_rgb565") defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] defines += [f"MCU_TYPE={mcu}"] @@ -63,6 +63,6 @@ def configure( features_available.append("backlight") - sources += ["embed/models/model_T3T1_layout.c"] + sources += ["embed/models/T3T1/model_T3T1_layout.c"] return features_available diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index f1a4beabcb..2be0e128fe 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -12,7 +12,7 @@ def configure( paths: list[str], ) -> list[str]: features_available: list[str] = [] - board = "trezor_t3t1_revE.h" + board = "T3T1/boards/trezor_t3t1_revE.h" display = "st7789v.c" hw_model = get_hw_model_as_number("T3T1") hw_revision = 0 @@ -39,11 +39,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv8m.main-none-eabihf" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_T3T1_layout.c", + "embed/models/T3T1/model_T3T1_layout.c", ] if "new_rendering" in features_wanted: diff --git a/core/site_scons/models/T3T1/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py index c40435b595..ea3cc449c9 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -12,7 +12,7 @@ def configure( paths: list[str], ) -> list[str]: features_available: list[str] = [] - board = "trezor_t3t1_v4.h" + board = "T3T1/boards/trezor_t3t1_v4.h" display = "st7789v.c" hw_model = get_hw_model_as_number("T3T1") hw_revision = 0 @@ -39,11 +39,11 @@ def configure( env.get("ENV")["RUST_TARGET"] = "thumbv8m.main-none-eabihf" defines += [mcu] - defines += [f'TREZOR_BOARD=\\"boards/{board}\\"'] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] defines += [f"HW_MODEL={hw_model}"] defines += [f"HW_REVISION={hw_revision}"] sources += [ - "embed/models/model_T3T1_layout.c", + "embed/models/T3T1/model_T3T1_layout.c", ] sources += [f"embed/trezorhal/stm32u5/displays/{display}"] From ffe1ac7d7ed9568e859a58ca61bd956132253549 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 19 May 2024 15:27:07 +0200 Subject: [PATCH 069/626] fix(core): use DISPLAY_RGB565 macro consistently [no changelog] --- core/site_scons/models/D001/discovery.py | 1 + core/site_scons/models/T2T1/trezor_t.py | 1 + core/site_scons/models/T3T1/trezor_t3t1_revE.py | 1 + core/site_scons/models/T3T1/trezor_t3t1_v4.py | 1 + 4 files changed, 4 insertions(+) diff --git a/core/site_scons/models/D001/discovery.py b/core/site_scons/models/D001/discovery.py index 14b363f662..d4b57c3626 100644 --- a/core/site_scons/models/D001/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -64,6 +64,7 @@ def configure( if "new_rendering" in features_wanted: defines += ["XFRAMEBUFFER"] + defines += ["DISPLAY_RGB565"] features_available.append("xframebuffer") features_available.append("display_rgb565") diff --git a/core/site_scons/models/T2T1/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py index 4155114fb8..8a96f78284 100644 --- a/core/site_scons/models/T2T1/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -19,6 +19,7 @@ def configure( features_available.append("disp_i8080_8bit_dw") if "new_rendering" in features_wanted: + defines += ["DISPLAY_RGB565"] features_available.append("display_rgb565") mcu = "STM32F427xx" diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index 2be0e128fe..a36c6a3813 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -23,6 +23,7 @@ def configure( if "new_rendering" in features_wanted: features_available.append("xframebuffer") features_available.append("display_rgb565") + defines += ["DISPLAY_RGB565"] defines += ["XFRAMEBUFFER"] mcu = "STM32U585xx" diff --git a/core/site_scons/models/T3T1/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py index ea3cc449c9..95cf4d5ee3 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -23,6 +23,7 @@ def configure( if "new_rendering" in features_wanted: features_available.append("xframebuffer") features_available.append("display_rgb565") + defines += ["DISPLAY_RGB565"] defines += ["XFRAMEBUFFER"] mcu = "STM32U585xx" From 76e98ecc3d81228d2220c521da691b2219e1cdfa Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 19 May 2024 15:26:36 +0200 Subject: [PATCH 070/626] fix(core): fix DISC2 build [no changelog] --- core/SConscript.bootloader_emu | 2 +- core/site_scons/models/D002/discovery2.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index d71fbc8811..fe152042c5 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -8,7 +8,7 @@ CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) HW_REVISION = 'emulator' NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' -if TREZOR_MODEL in ('1', 'DISC1'): +if TREZOR_MODEL in ('1', 'DISC1', 'DISC2'): # skip bootloader build env = Environment() def build_bootloader(target,source,env): diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index 5012021b09..0100883ad0 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -100,15 +100,15 @@ def configure( features_available.append("framebuffer") features_available.append("framebuffer32bit") + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER"] + defines += ["DISPLAY_RGBA8888"] + features_available.append("xframebuffer") + features_available.append("display_rgba8888") + env.get("ENV")["LINKER_SCRIPT"] = linker_script defs = env.get("CPPDEFINES_IMPLICIT") defs += ["__ARM_FEATURE_CMSE=3"] - rust_defs = env.get("ENV")["RUST_INCLUDES"] - rust_defs += "-DFRAMEBUFFER;" - if "new_rendering" in features_wanted: - rust_defs += "-DXFRAMEBUFFER;" - env.get("ENV")["RUST_INCLUDES"] = rust_defs - return features_available From 10e4352aad017df00a213e2bf9e1f3b09c3257f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Jas=CC=8Cko?= <peter.jasko@vacuumlabs.com> Date: Fri, 10 Nov 2023 15:18:57 +0100 Subject: [PATCH 071/626] feat(cardano): Add Conway certificates --- common/protob/messages-cardano.proto | 22 + common/tests/fixtures/cardano/sign_tx.json | 358 +++++++++++ core/embed/rust/librust_qstr.h | 6 + .../generated/translated_string.rs | 36 ++ core/mocks/trezortranslate_keys.pyi | 6 + core/src/all_modules.py | 2 + core/src/apps/cardano/certificates.py | 109 +++- core/src/apps/cardano/helpers/bech32.py | 2 + core/src/apps/cardano/layout.py | 42 +- core/src/apps/cardano/sign_tx/signer.py | 2 +- .../trezor/enums/CardanoCertificateType.py | 3 + core/src/trezor/enums/CardanoDRepType.py | 8 + core/src/trezor/enums/__init__.py | 9 + core/src/trezor/messages.py | 23 + core/tests/test_apps.cardano.certificate.py | 377 +++++++++++- core/translations/en.json | 6 + core/translations/order.json | 8 +- core/translations/signatures.json | 6 +- python/src/trezorlib/cardano.py | 48 ++ python/src/trezorlib/messages.py | 36 ++ .../src/protos/generated/messages_cardano.rs | 574 +++++++++++++++--- 21 files changed, 1595 insertions(+), 88 deletions(-) create mode 100644 core/src/trezor/enums/CardanoDRepType.py diff --git a/common/protob/messages-cardano.proto b/common/protob/messages-cardano.proto index b1331beee9..738fdba80b 100644 --- a/common/protob/messages-cardano.proto +++ b/common/protob/messages-cardano.proto @@ -56,6 +56,16 @@ enum CardanoCertificateType { STAKE_DEREGISTRATION = 1; STAKE_DELEGATION = 2; STAKE_POOL_REGISTRATION = 3; + STAKE_REGISTRATION_CONWAY = 7; + STAKE_DEREGISTRATION_CONWAY = 8; + VOTE_DELEGATION = 9; +} + +enum CardanoDRepType { + KEY_HASH = 0; + SCRIPT_HASH = 1; + ABSTAIN = 2; + NO_CONFIDENCE = 3; } enum CardanoPoolRelayType { @@ -335,6 +345,16 @@ message CardanoPoolParametersType { required uint32 relays_count = 12; // number of pool relays } +/** + * DRep delegation parameters + * @embed +*/ +message CardanoDRep { + required CardanoDRepType type = 1; // drep type + optional bytes key_hash = 2; // drep key hash + optional bytes script_hash = 3; // drep script hash +} + /** * Request: Transaction certificate data * @next CardanoTxItemAck @@ -346,6 +366,8 @@ message CardanoTxCertificate { optional CardanoPoolParametersType pool_parameters = 4; // used for stake pool registration certificate optional bytes script_hash = 5; // stake credential script hash optional bytes key_hash = 6; // stake credential key hash + optional uint64 deposit = 7; // used for stake key registration certificate + optional CardanoDRep drep = 8; // used for vote delegation certificate } /** diff --git a/common/tests/fixtures/cardano/sign_tx.json b/common/tests/fixtures/cardano/sign_tx.json index 52ebc5adab..69a99deaf2 100644 --- a/common/tests/fixtures/cardano/sign_tx.json +++ b/common/tests/fixtures/cardano/sign_tx.json @@ -662,6 +662,59 @@ ] } }, + { + "description": "transaction with conway stake registration certificate", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 7, + "path": "m/1852'/1815'/0'/2/0", + "deposit": 2000000 + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false + }, + "result": { + "tx_hash": "e200b2c91f3493a1f3b9cfc8b6c141f70181741025e53941e9d57d22b1470c5c", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "79a357517a08c7256b0fab1e93a92a477386f4c2d72cea7bc68527c0133c32472305f010350665d72e8017bb6c2080b5742680ce7700bbddda561c917f294a07", + "chain_code": null + } + ] + } + }, { "description": "transaction with stake registration certificate (no outputs)", "parameters": { @@ -830,6 +883,65 @@ ] } }, + { + "description": "transaction with conway stake deregistration certificate", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 8, + "path": "m/1852'/1815'/0'/2/0", + "deposit": 2000000 + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false + }, + "result": { + "tx_hash": "564ad55097101e1ca85629cffe839f43a19bf33aa1940c99a62eb8f14392eebb", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "a0fa6630498f57249b305824ad4d32157653820e7d651332a58af70a80364df882ee8b0471e76dd7a335eea84a18c52b12c02508779d46b193bc418c22e8a00f", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "5d282fcd2685ee47f3770f84b2badf4046e8e76bfdaa26f74e292ecd16bcf89fb330b99edff13bc9c81e8c6523864f69a3ac7cde29d5a648707724c5cb48730e", + "chain_code": null + } + ] + } + }, { "description": "transaction with stake deregistration and withdrawal", "parameters": { @@ -952,6 +1064,252 @@ ] } }, + { + "description": "transaction delegating vote to DRep by key hash", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 9, + "path": "m/1852'/1815'/0'/2/0", + "drep": { + "type": 0, + "key_hash": "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + } + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false + }, + "result": { + "tx_hash": "1669062fd6efc4f11ed8ae9511a9c9f4454fa4f64e2043483f99d7c711236664", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "b900968efd7cfed3666a63f11267bb4fdc08684788883b91cf690e37834263387b164d52c770d1bb91578ca0029a954c9ef787ab0d3b9f3f396dedf744baa80b", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "d4fb5ebae0a061afa784df1ecceda5c06955a59ebc1ca4f7c2457f7ba27eacca756b8be9d84584f1b2ea23ce7b8420c73fc447398cf6caa725cb0d5c9b9f700e", + "chain_code": null + } + ] + } + }, + { + "description": "transaction delegating vote to DRep by script hash", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 9, + "path": "m/1852'/1815'/0'/2/0", + "drep": { + "type": 1, + "script_hash": "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + } + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false + }, + "result": { + "tx_hash": "fccf753e4f96e20c880e5ea933041ed33509ec6c0dc1aee8b25a1fe3d562b7aa", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "bde0242fee0de5b862d2f02847d789ebe10e8f82bf15837370f115c89c1b413f1b0fa5a470210127af92059c4d3ebff297d39e93143667d3823476f12f0f6f07", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "cd8a2fca634c1aa2c88609042de7e4fce232bf233b1271612b5edc7b806e11ff44e6b6b15feb5b6e76b7e16a8d703e7653d860c00981edf6fe3b1e4cbeaba406", + "chain_code": null + } + ] + } + }, + { + "description": "transaction delegating vote to predefined DRep 'Abstain'", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 9, + "path": "m/1852'/1815'/0'/2/0", + "drep": { + "type": 2 + } + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false + }, + "result": { + "tx_hash": "01d0f76fadc899087c5352befac56cbfdc2e868ac715fbfe00230bab3f7fa751", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "52c57d9c0e06fc9883285db4eec1a1504e27726dc5afce943d6f54df22188f05c3eeee06d052375eceb55df83c314237b3718f07fccef6198bda8c20d794b102", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "6de4940ff99738aaf3659ffeb8e4f6f01ff88ddb65c24028d75a847ca684d07af000e32eaa4c915c8031f6d928b2bcbe8c6f57e389299d3eafe213bd0ab1190c", + "chain_code": null + } + ] + } + }, + { + "description": "transaction delegating vote to predefined DRep 'No Confidence'", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 9, + "path": "m/1852'/1815'/0'/2/0", + "drep": { + "type": 3 + } + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false + }, + "result": { + "tx_hash": "567e9bd00787190f1ab51879dcf834002b76007130c526b2e4d1bf9a996f5ad0", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "20e3f9ecc3a1b97cbda08cf610b2e72b45d0e0916af2be2ad472d4c8d2be4b13818497818961c8d27379754f0057b00fa286bce0d59f177f24eeee4e2b24940f", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "898fb2cef0c4b954f22c4218fc9a188a5da340ddb5c6d5bba01c67520bbf537f5743814b6d40dd7f299ece7e39d7efb16a1cb597e8d421649a9483f631371703", + "chain_code": null + } + ] + } + }, { "description": "transaction with auxiliary data hash", "parameters": { diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 86007084a7..2539e3565a 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -663,6 +663,8 @@ static void _librust_qstrs(void) { MP_QSTR_cardano__addr_pointer; MP_QSTR_cardano__addr_reward; MP_QSTR_cardano__address_no_staking; + MP_QSTR_cardano__always_abstain; + MP_QSTR_cardano__always_no_confidence; MP_QSTR_cardano__amount_burned_decimals_unknown; MP_QSTR_cardano__amount_minted_decimals_unknown; MP_QSTR_cardano__amount_sent_decimals_unknown; @@ -690,6 +692,9 @@ static void _librust_qstrs(void) { MP_QSTR_cardano__credential_mismatch; MP_QSTR_cardano__datum_hash; MP_QSTR_cardano__delegating_to; + MP_QSTR_cardano__delegating_to_key_hash; + MP_QSTR_cardano__delegating_to_script; + MP_QSTR_cardano__deposit; MP_QSTR_cardano__for_account_and_index_template; MP_QSTR_cardano__for_account_template; MP_QSTR_cardano__for_key_hash; @@ -759,6 +764,7 @@ static void _librust_qstrs(void) { MP_QSTR_cardano__unusual_path; MP_QSTR_cardano__valid_since; MP_QSTR_cardano__verify_script; + MP_QSTR_cardano__vote_delegation; MP_QSTR_cardano__vote_key_registration; MP_QSTR_cardano__vote_public_key; MP_QSTR_cardano__voting_purpose; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 1e8b72e94e..70f9baab90 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1239,6 +1239,18 @@ pub enum TranslatedString { storage_msg__wrong_pin = 844, // "Wrong PIN" reset__create_x_of_y_multi_share_backup_template = 845, // "Do you want to create a {0} of {1} multi-share backup?" reset__title_shamir_backup = 846, // "Multi-share backup" + #[cfg(feature = "universal_fw")] + cardano__always_abstain = 847, // "Always Abstain" + #[cfg(feature = "universal_fw")] + cardano__always_no_confidence = 848, // "Always No Confidence" + #[cfg(feature = "universal_fw")] + cardano__delegating_to_key_hash = 849, // "Delegating to key hash:" + #[cfg(feature = "universal_fw")] + cardano__delegating_to_script = 850, // "Delegating to script:" + #[cfg(feature = "universal_fw")] + cardano__deposit = 851, // "Deposit:" + #[cfg(feature = "universal_fw")] + cardano__vote_delegation = 852, // "Vote delegation" } impl TranslatedString { @@ -2473,6 +2485,18 @@ impl TranslatedString { Self::storage_msg__wrong_pin => "Wrong PIN", Self::reset__create_x_of_y_multi_share_backup_template => "Do you want to create a {0} of {1} multi-share backup?", Self::reset__title_shamir_backup => "Multi-share backup", + #[cfg(feature = "universal_fw")] + Self::cardano__always_abstain => "Always Abstain", + #[cfg(feature = "universal_fw")] + Self::cardano__always_no_confidence => "Always No Confidence", + #[cfg(feature = "universal_fw")] + Self::cardano__delegating_to_key_hash => "Delegating to key hash:", + #[cfg(feature = "universal_fw")] + Self::cardano__delegating_to_script => "Delegating to script:", + #[cfg(feature = "universal_fw")] + Self::cardano__deposit => "Deposit:", + #[cfg(feature = "universal_fw")] + Self::cardano__vote_delegation => "Vote delegation", } } @@ -3708,6 +3732,18 @@ impl TranslatedString { Qstr::MP_QSTR_storage_msg__wrong_pin => Some(Self::storage_msg__wrong_pin), Qstr::MP_QSTR_reset__create_x_of_y_multi_share_backup_template => Some(Self::reset__create_x_of_y_multi_share_backup_template), Qstr::MP_QSTR_reset__title_shamir_backup => Some(Self::reset__title_shamir_backup), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__always_abstain => Some(Self::cardano__always_abstain), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__always_no_confidence => Some(Self::cardano__always_no_confidence), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__delegating_to_key_hash => Some(Self::cardano__delegating_to_key_hash), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__delegating_to_script => Some(Self::cardano__delegating_to_script), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__deposit => Some(Self::cardano__deposit), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_cardano__vote_delegation => Some(Self::cardano__vote_delegation), _ => None, } } diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index eb15d7d813..81fd7e4b75 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -111,6 +111,8 @@ class TR: cardano__addr_pointer: str = "Pointer" cardano__addr_reward: str = "Reward" cardano__address_no_staking: str = "address - no staking rewards." + cardano__always_abstain: str = "Always Abstain" + cardano__always_no_confidence: str = "Always No Confidence" cardano__amount_burned_decimals_unknown: str = "Amount burned (decimals unknown):" cardano__amount_minted_decimals_unknown: str = "Amount minted (decimals unknown):" cardano__amount_sent_decimals_unknown: str = "Amount sent (decimals unknown):" @@ -138,6 +140,9 @@ class TR: cardano__credential_mismatch: str = "Credential doesn't match payment credential." cardano__datum_hash: str = "Datum hash:" cardano__delegating_to: str = "Delegating to:" + cardano__delegating_to_key_hash: str = "Delegating to key hash:" + cardano__delegating_to_script: str = "Delegating to script:" + cardano__deposit: str = "Deposit:" cardano__for_account_and_index_template: str = "for account {0} and index {1}:" cardano__for_account_template: str = "for account {0}:" cardano__for_key_hash: str = "for key hash:" @@ -207,6 +212,7 @@ class TR: cardano__unusual_path: str = "Path is unusual." cardano__valid_since: str = "Valid since:" cardano__verify_script: str = "Verify script" + cardano__vote_delegation: str = "Vote delegation" cardano__vote_key_registration: str = "Vote key registration (CIP-36)" cardano__vote_public_key: str = "Vote public key:" cardano__voting_purpose: str = "Voting purpose:" diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 571e7cda5e..55e81e360a 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -381,6 +381,8 @@ import trezor.enums.CardanoCVoteRegistrationFormat trezor.enums.CardanoCertificateType import trezor.enums.CardanoCertificateType + trezor.enums.CardanoDRepType + import trezor.enums.CardanoDRepType trezor.enums.CardanoDerivationType import trezor.enums.CardanoDerivationType trezor.enums.CardanoNativeScriptHashDisplayFormat diff --git a/core/src/apps/cardano/certificates.py b/core/src/apps/cardano/certificates.py index bd3a354310..fbbba09c7a 100644 --- a/core/src/apps/cardano/certificates.py +++ b/core/src/apps/cardano/certificates.py @@ -1,7 +1,7 @@ from micropython import const from typing import TYPE_CHECKING -from trezor.enums import CardanoCertificateType, CardanoPoolRelayType +from trezor.enums import CardanoCertificateType, CardanoDRepType, CardanoPoolRelayType from trezor.wire import ProcessError from . import addresses @@ -51,6 +51,19 @@ def validate( ProcessError("Invalid certificate"), ) + if certificate.type in ( + CCT.STAKE_REGISTRATION_CONWAY, + CCT.STAKE_DEREGISTRATION_CONWAY, + ): + if certificate.deposit is None: + raise ProcessError("Invalid certificate") + validate_stake_credential( + certificate.path, + certificate.script_hash, + certificate.key_hash, + ProcessError("Invalid certificate"), + ) + if certificate.type == CCT.STAKE_DELEGATION: if not certificate.pool or len(certificate.pool) != _POOL_HASH_SIZE: raise ProcessError("Invalid certificate") @@ -62,24 +75,45 @@ def validate( certificate.pool_parameters, protocol_magic, network_id ) + if certificate.type == CCT.VOTE_DELEGATION: + if certificate.drep is None: + raise ProcessError("Invalid certificate") + validate_drep( + certificate.drep, + ProcessError("Invalid certificate"), + ) + validate_stake_credential( + certificate.path, + certificate.script_hash, + certificate.key_hash, + ProcessError("Invalid certificate"), + ) + account_path_checker.add_certificate(certificate) def _validate_structure(certificate: messages.CardanoTxCertificate) -> None: pool = certificate.pool # local_cache_attribute pool_parameters = certificate.pool_parameters # local_cache_attribute + deposit = certificate.deposit + drep = certificate.drep CCT = CardanoCertificateType # local_cache_global fields_to_be_empty: dict[CardanoCertificateType, tuple[Any, ...]] = { - CCT.STAKE_REGISTRATION: (pool, pool_parameters), - CCT.STAKE_DELEGATION: (pool_parameters,), - CCT.STAKE_DEREGISTRATION: (pool, pool_parameters), + CCT.STAKE_REGISTRATION: (pool, pool_parameters, deposit, drep), + CCT.STAKE_REGISTRATION_CONWAY: (pool, pool_parameters, drep), + CCT.STAKE_DELEGATION: (pool_parameters, deposit, drep), + CCT.STAKE_DEREGISTRATION: (pool, pool_parameters, deposit, drep), + CCT.STAKE_DEREGISTRATION_CONWAY: (pool, pool_parameters, drep), CCT.STAKE_POOL_REGISTRATION: ( certificate.path, certificate.script_hash, certificate.key_hash, pool, + deposit, + drep, ), + CCT.VOTE_DELEGATION: (pool, pool_parameters, deposit), } if certificate.type not in fields_to_be_empty or any( @@ -106,6 +140,20 @@ def cborize( certificate.key_hash, ), ) + elif cert_type in ( + CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + ): + return ( + cert_type, + cborize_stake_credential( + keychain, + certificate.path, + certificate.script_hash, + certificate.key_hash, + ), + certificate.deposit, + ) elif cert_type == CardanoCertificateType.STAKE_DELEGATION: return ( cert_type, @@ -117,6 +165,18 @@ def cborize( ), certificate.pool, ) + elif cert_type == CardanoCertificateType.VOTE_DELEGATION: + assert certificate.drep is not None + return ( + cert_type, + cborize_stake_credential( + keychain, + certificate.path, + certificate.script_hash, + certificate.key_hash, + ), + cborize_drep(certificate.drep), + ) else: raise RuntimeError # should be unreachable @@ -198,6 +258,32 @@ def _validate_pool_parameters( assert_cond(all((32 <= ord(c) < 127) for c in pool_metadata.url)) +def validate_drep( + drep: messages.CardanoDRep, + error: ProcessError, +) -> None: + from .helpers import ADDRESS_KEY_HASH_SIZE, SCRIPT_HASH_SIZE + + drep_type = drep.type + script_hash = drep.script_hash + key_hash = drep.key_hash + + if drep_type == CardanoDRepType.KEY_HASH: + if script_hash or not key_hash or len(key_hash) != ADDRESS_KEY_HASH_SIZE: + raise error + elif drep_type == CardanoDRepType.SCRIPT_HASH: + if key_hash or not script_hash or len(script_hash) != SCRIPT_HASH_SIZE: + raise error + elif drep_type in ( + CardanoDRepType.ABSTAIN, + CardanoDRepType.NO_CONFIDENCE, + ): + if script_hash or key_hash: + raise error + else: + raise RuntimeError # should be unreachable + + def validate_pool_owner( owner: messages.CardanoPoolOwner, account_path_checker: AccountPathChecker ) -> None: @@ -237,6 +323,21 @@ def validate_pool_relay(pool_relay: messages.CardanoPoolRelayParameters) -> None raise RuntimeError # should be unreachable +def cborize_drep(drep: messages.CardanoDRep) -> tuple[int, bytes] | tuple[int]: + if drep.type == CardanoDRepType.KEY_HASH: + assert drep.key_hash is not None + return 0, drep.key_hash + elif drep.type == CardanoDRepType.SCRIPT_HASH: + assert drep.script_hash is not None + return 1, drep.script_hash + elif drep.type == CardanoDRepType.ABSTAIN: + return (2,) + elif drep.type == CardanoDRepType.NO_CONFIDENCE: + return (3,) + else: + raise RuntimeError # should be unreachable + + def cborize_pool_owner( keychain: seed.Keychain, pool_owner: messages.CardanoPoolOwner ) -> bytes: diff --git a/core/src/apps/cardano/helpers/bech32.py b/core/src/apps/cardano/helpers/bech32.py index b40d6067f9..6847764129 100644 --- a/core/src/apps/cardano/helpers/bech32.py +++ b/core/src/apps/cardano/helpers/bech32.py @@ -15,6 +15,8 @@ HRP_REQUIRED_SIGNER_KEY_HASH = "req_signer_vkh" HRP_OUTPUT_DATUM_HASH = "datum" HRP_SCRIPT_DATA_HASH = "script_data" +HRP_DREP_KEY_HASH = "drep" +HRP_DREP_SCRIPT_HASH = "drep_script" def encode(hrp: str, data: bytes) -> str: diff --git a/core/src/apps/cardano/layout.py b/core/src/apps/cardano/layout.py index 1651e0ee0a..a13dfa6204 100644 --- a/core/src/apps/cardano/layout.py +++ b/core/src/apps/cardano/layout.py @@ -5,6 +5,7 @@ ButtonRequestType, CardanoAddressType, CardanoCertificateType, + CardanoDRepType, CardanoNativeScriptType, ) from trezor.strings import format_amount @@ -58,9 +59,12 @@ CERTIFICATE_TYPE_NAMES = { CardanoCertificateType.STAKE_REGISTRATION: TR.cardano__stake_registration, + CardanoCertificateType.STAKE_REGISTRATION_CONWAY: TR.cardano__stake_registration, CardanoCertificateType.STAKE_DEREGISTRATION: TR.cardano__stake_deregistration, + CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY: TR.cardano__stake_deregistration, CardanoCertificateType.STAKE_DELEGATION: TR.cardano__stake_delegation, CardanoCertificateType.STAKE_POOL_REGISTRATION: TR.cardano__stake_pool_registration, + CardanoCertificateType.VOTE_DELEGATION: TR.cardano__vote_delegation, } BRT_Other = ButtonRequestType.Other # global_import_cache @@ -552,7 +556,9 @@ async def confirm_tx( ) -async def confirm_certificate(certificate: messages.CardanoTxCertificate) -> None: +async def confirm_certificate( + certificate: messages.CardanoTxCertificate, network_id: int +) -> None: # stake pool registration requires custom confirmation logic not covered # in this call assert certificate.type != CardanoCertificateType.STAKE_POOL_REGISTRATION @@ -567,6 +573,18 @@ async def confirm_certificate(certificate: messages.CardanoTxCertificate) -> Non if certificate.type == CardanoCertificateType.STAKE_DELEGATION: assert certificate.pool is not None # validate_certificate props.append((TR.cardano__to_pool, format_stake_pool_id(certificate.pool))) + elif certificate.type in ( + CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + ): + assert certificate.deposit is not None # validate_certificate + props.append( + (TR.cardano__deposit, format_coin_amount(certificate.deposit, network_id)) + ) + + elif certificate.type == CardanoCertificateType.VOTE_DELEGATION: + assert certificate.drep is not None # validate_certificate + props.append(_format_drep(certificate.drep)) await confirm_properties( "confirm_certificate", @@ -768,6 +786,28 @@ def _format_stake_credential( raise ValueError +def _format_drep(drep: messages.CardanoDRep) -> tuple[str, str]: + if drep.type == CardanoDRepType.KEY_HASH: + assert drep.key_hash is not None # validate_drep + return ( + TR.cardano__delegating_to_key_hash, + bech32.encode(bech32.HRP_DREP_KEY_HASH, drep.key_hash), + ) + elif drep.type == CardanoDRepType.SCRIPT_HASH: + assert drep.script_hash is not None # validate_drep + return ( + TR.cardano__delegating_to_script, + bech32.encode(bech32.HRP_DREP_SCRIPT_HASH, drep.script_hash), + ) + elif drep.type == CardanoDRepType.ABSTAIN: + return (TR.cardano__delegating_to, TR.cardano__always_abstain) + elif drep.type == CardanoDRepType.NO_CONFIDENCE: + return (TR.cardano__delegating_to, TR.cardano__always_no_confidence) + else: + # should be unreachable unless there's a bug in validation + raise ValueError + + async def confirm_cvote_registration_delegation( public_key: str, weight: int, diff --git a/core/src/apps/cardano/sign_tx/signer.py b/core/src/apps/cardano/sign_tx/signer.py index 602bdc200d..d2c66c09e9 100644 --- a/core/src/apps/cardano/sign_tx/signer.py +++ b/core/src/apps/cardano/sign_tx/signer.py @@ -728,7 +728,7 @@ async def _show_certificate( certificate.pool_parameters.metadata ) else: - await layout.confirm_certificate(certificate) + await layout.confirm_certificate(certificate, self.msg.network_id) # pool owners diff --git a/core/src/trezor/enums/CardanoCertificateType.py b/core/src/trezor/enums/CardanoCertificateType.py index 4b7d241202..bc4abf6f20 100644 --- a/core/src/trezor/enums/CardanoCertificateType.py +++ b/core/src/trezor/enums/CardanoCertificateType.py @@ -6,3 +6,6 @@ STAKE_DEREGISTRATION = 1 STAKE_DELEGATION = 2 STAKE_POOL_REGISTRATION = 3 +STAKE_REGISTRATION_CONWAY = 7 +STAKE_DEREGISTRATION_CONWAY = 8 +VOTE_DELEGATION = 9 diff --git a/core/src/trezor/enums/CardanoDRepType.py b/core/src/trezor/enums/CardanoDRepType.py new file mode 100644 index 0000000000..bae3fbe218 --- /dev/null +++ b/core/src/trezor/enums/CardanoDRepType.py @@ -0,0 +1,8 @@ +# Automatically generated by pb2py +# fmt: off +# isort:skip_file + +KEY_HASH = 0 +SCRIPT_HASH = 1 +ABSTAIN = 2 +NO_CONFIDENCE = 3 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 3335f1b27d..83e622fdd5 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -388,6 +388,15 @@ class CardanoCertificateType(IntEnum): STAKE_DEREGISTRATION = 1 STAKE_DELEGATION = 2 STAKE_POOL_REGISTRATION = 3 + STAKE_REGISTRATION_CONWAY = 7 + STAKE_DEREGISTRATION_CONWAY = 8 + VOTE_DELEGATION = 9 + + class CardanoDRepType(IntEnum): + KEY_HASH = 0 + SCRIPT_HASH = 1 + ABSTAIN = 2 + NO_CONFIDENCE = 3 class CardanoPoolRelayType(IntEnum): SINGLE_HOST_IP = 0 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index 0335bb53da..edf7133138 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -27,6 +27,7 @@ def __getattr__(name: str) -> Any: from trezor.enums import CardanoAddressType # noqa: F401 from trezor.enums import CardanoCVoteRegistrationFormat # noqa: F401 from trezor.enums import CardanoCertificateType # noqa: F401 + from trezor.enums import CardanoDRepType # noqa: F401 from trezor.enums import CardanoDerivationType # noqa: F401 from trezor.enums import CardanoNativeScriptHashDisplayFormat # noqa: F401 from trezor.enums import CardanoNativeScriptType # noqa: F401 @@ -1617,6 +1618,24 @@ def __init__( def is_type_of(cls, msg: Any) -> TypeGuard["CardanoPoolParametersType"]: return isinstance(msg, cls) + class CardanoDRep(protobuf.MessageType): + type: "CardanoDRepType" + key_hash: "bytes | None" + script_hash: "bytes | None" + + def __init__( + self, + *, + type: "CardanoDRepType", + key_hash: "bytes | None" = None, + script_hash: "bytes | None" = None, + ) -> None: + pass + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["CardanoDRep"]: + return isinstance(msg, cls) + class CardanoTxCertificate(protobuf.MessageType): type: "CardanoCertificateType" path: "list[int]" @@ -1624,6 +1643,8 @@ class CardanoTxCertificate(protobuf.MessageType): pool_parameters: "CardanoPoolParametersType | None" script_hash: "bytes | None" key_hash: "bytes | None" + deposit: "int | None" + drep: "CardanoDRep | None" def __init__( self, @@ -1634,6 +1655,8 @@ def __init__( pool_parameters: "CardanoPoolParametersType | None" = None, script_hash: "bytes | None" = None, key_hash: "bytes | None" = None, + deposit: "int | None" = None, + drep: "CardanoDRep | None" = None, ) -> None: pass diff --git a/core/tests/test_apps.cardano.certificate.py b/core/tests/test_apps.cardano.certificate.py index 6eb44ebdad..f4dc1379f3 100644 --- a/core/tests/test_apps.cardano.certificate.py +++ b/core/tests/test_apps.cardano.certificate.py @@ -1,8 +1,8 @@ from common import * # isort:skip from trezor import wire -from trezor.enums import CardanoCertificateType -from trezor.messages import CardanoPoolParametersType, CardanoTxCertificate +from trezor.enums import CardanoCertificateType, CardanoDRepType +from trezor.messages import CardanoDRep, CardanoPoolParametersType, CardanoTxCertificate from apps.common.paths import HARDENED @@ -32,6 +32,25 @@ def test_validate_certificate(self): "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" ), ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + deposit=2000000, + ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), CardanoTxCertificate( type=CardanoCertificateType.STAKE_DELEGATION, path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], @@ -73,6 +92,25 @@ def test_validate_certificate(self): "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" ), ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + deposit=2000000, + ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), CardanoTxCertificate( type=CardanoCertificateType.STAKE_POOL_REGISTRATION, pool_parameters=CardanoPoolParametersType( @@ -92,6 +130,44 @@ def test_validate_certificate(self): metadata=None, ), ), + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.KEY_HASH, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.SCRIPT_HASH, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep(type=CardanoDRepType.ABSTAIN), + ), + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep(type=CardanoDRepType.NO_CONFIDENCE), + ), ] invalid_test_vectors = [ @@ -125,6 +201,12 @@ def test_validate_certificate(self): "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" ), ), + # STAKE_REGISTRATION deposit is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + deposit=2000000, + ), # STAKE_REGISTRATION pool parameters are set CardanoTxCertificate( type=CardanoCertificateType.STAKE_REGISTRATION, @@ -145,6 +227,66 @@ def test_validate_certificate(self): relays_count=1, ), ), + # STAKE_REGISTRATION_CONWAY neither path or script_hash is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + deposit=2000000, + ), + # STAKE_REGISTRATION_CONWAY both path and script_hash are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + # STAKE_REGISTRATION_CONWAY both script_hash and key_hash are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + # STAKE_REGISTRATION_CONWAY pool is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + pool=unhexlify( + "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" + ), + deposit=2000000, + ), + # STAKE_REGISTRATION_CONWAY deposit not set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + ), + # STAKE_REGISTRATION_CONWAY pool parameters are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + pool_parameters=CardanoPoolParametersType( + pool_id=unhexlify( + "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" + ), + vrf_key_hash=unhexlify( + "198890ad6c92e80fbdab554dda02da9fb49d001bbd96181f3e07f7a6ab0d0640" + ), + pledge=500000000, + cost=340000000, + margin_numerator=1, + margin_denominator=2, + reward_account="stake1uya87zwnmax0v6nnn8ptqkl6ydx4522kpsc3l3wmf3yswygwx45el", + owners_count=1, + relays_count=1, + ), + deposit=2000000, + ), # STAKE_DELEGATION neither path or script_hash is set CardanoTxCertificate( type=CardanoCertificateType.STAKE_DELEGATION, @@ -229,6 +371,12 @@ def test_validate_certificate(self): "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" ), ), + # STAKE_DEREGISTRATION deposit is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + deposit=2000000, + ), # STAKE_DEREGISTRATION pool parameters are set CardanoTxCertificate( type=CardanoCertificateType.STAKE_DEREGISTRATION, @@ -249,6 +397,66 @@ def test_validate_certificate(self): relays_count=1, ), ), + # STAKE_DEREGISTRATION_CONWAY neither path or script_hash is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + deposit=2000000, + ), + # STAKE_DEREGISTRATION_CONWAY both path and script_hash are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + # STAKE_DEREGISTRATION_CONWAY both script_hash and key_hash are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + deposit=2000000, + ), + # STAKE_DEREGISTRATION_CONWAY pool is set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + pool=unhexlify( + "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" + ), + deposit=2000000, + ), + # STAKE_DEREGISTRATION_CONWAY deposit not set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + ), + # STAKE_DEREGISTRATION pool parameters are set + CardanoTxCertificate( + type=CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + path=[1852 | HARDENED, 1815 | HARDENED, 0 | HARDENED, 2, 0], + pool_parameters=CardanoPoolParametersType( + pool_id=unhexlify( + "f61c42cbf7c8c53af3f520508212ad3e72f674f957fe23ff0acb4973" + ), + vrf_key_hash=unhexlify( + "198890ad6c92e80fbdab554dda02da9fb49d001bbd96181f3e07f7a6ab0d0640" + ), + pledge=500000000, + cost=340000000, + margin_numerator=1, + margin_denominator=2, + reward_account="stake1uya87zwnmax0v6nnn8ptqkl6ydx4522kpsc3l3wmf3yswygwx45el", + owners_count=1, + relays_count=1, + ), + deposit=2000000, + ), # STAKE_POOL_REGISTRATION pool parameters are not set CardanoTxCertificate( type=CardanoCertificateType.STAKE_POOL_REGISTRATION, @@ -342,6 +550,171 @@ def test_validate_certificate(self): relays_count=1, ), ), + # VOTE_REGISTRATION missing drep + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + # VOTE_REGISTRATION missing key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep(type=CardanoDRepType.KEY_HASH), + ), + # VOTE_REGISTRATION missing script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep(type=CardanoDRepType.SCRIPT_HASH), + ), + # VOTE_REGISTRATION unexpected script hash set instead of key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.KEY_HASH, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected key hash set instead of script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.SCRIPT_HASH, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION key hash set but unexpected script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.KEY_HASH, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION script hash set but unexpected key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.SCRIPT_HASH, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.ABSTAIN, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.NO_CONFIDENCE, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.ABSTAIN, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected script hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.NO_CONFIDENCE, + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected script hash and key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.ABSTAIN, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), + # VOTE_REGISTRATION unexpected script hash and key hash + CardanoTxCertificate( + type=CardanoCertificateType.VOTE_DELEGATION, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + drep=CardanoDRep( + type=CardanoDRepType.NO_CONFIDENCE, + key_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + script_hash=unhexlify( + "29fb5fd4aa8cadd6705acc8263cee0fc62edca5ac38db593fec2f9fd" + ), + ), + ), ] for certificate in valid_test_vectors: diff --git a/core/translations/en.json b/core/translations/en.json index 51fae0ca8e..d7d2a5b260 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -113,6 +113,8 @@ "cardano__addr_pointer": "Pointer", "cardano__addr_reward": "Reward", "cardano__address_no_staking": "address - no staking rewards.", + "cardano__always_abstain": "Always Abstain", + "cardano__always_no_confidence": "Always No Confidence", "cardano__amount_burned_decimals_unknown": "Amount burned (decimals unknown):", "cardano__amount_minted_decimals_unknown": "Amount minted (decimals unknown):", "cardano__amount_sent_decimals_unknown": "Amount sent (decimals unknown):", @@ -140,6 +142,9 @@ "cardano__credential_mismatch": "Credential doesn't match payment credential.", "cardano__datum_hash": "Datum hash:", "cardano__delegating_to": "Delegating to:", + "cardano__delegating_to_key_hash": "Delegating to key hash:", + "cardano__delegating_to_script": "Delegating to script:", + "cardano__deposit": "Deposit:", "cardano__for_account_and_index_template": "for account {0} and index {1}:", "cardano__for_account_template": "for account {0}:", "cardano__for_key_hash": "for key hash:", @@ -209,6 +214,7 @@ "cardano__unusual_path": "Path is unusual.", "cardano__valid_since": "Valid since:", "cardano__verify_script": "Verify script", + "cardano__vote_delegation": "Vote delegation", "cardano__vote_key_registration": "Vote key registration (CIP-36)", "cardano__vote_public_key": "Vote public key:", "cardano__voting_purpose": "Voting purpose:", diff --git a/core/translations/order.json b/core/translations/order.json index 0b19414927..3a50bace48 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -845,5 +845,11 @@ "843": "storage_msg__verifying_pin", "844": "storage_msg__wrong_pin", "845": "reset__create_x_of_y_multi_share_backup_template", - "846": "reset__title_shamir_backup" + "846": "reset__title_shamir_backup", + "847": "cardano__always_abstain", + "848": "cardano__always_no_confidence", + "849": "cardano__delegating_to_key_hash", + "850": "cardano__delegating_to_script", + "851": "cardano__deposit", + "852": "cardano__vote_delegation" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index a8856a3dbb..6afc923916 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "84629035a4b41f95a6d058c3a4a67220ff3ed4aea61bb72bd0c266b51708bd09", - "datetime": "2024-05-13T15:44:26.979619", - "commit": "82e62cf41c1e0134d2d2ed824c3ad74ead01f10e" + "merkle_root": "1f974d2401250eb1b9ca75b0b8067d583c2a1520f87697f8f68f5bf2d66b44c2", + "datetime": "2024-05-16T21:16:11.144158", + "commit": "3d74e30fa7f27695813040baffb620461d5e0677" }, "history": [ { diff --git a/python/src/trezorlib/cardano.py b/python/src/trezorlib/cardano.py index 9e98699659..8685b77db4 100644 --- a/python/src/trezorlib/cardano.py +++ b/python/src/trezorlib/cardano.py @@ -420,6 +420,27 @@ def parse_certificate(certificate: dict) -> CertificateWithPoolOwnersAndRelays: ), None, ) + elif certificate_type in ( + messages.CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + messages.CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + ): + if "deposit" not in certificate: + raise CERTIFICATE_MISSING_FIELDS_ERROR + + path, script_hash, key_hash = _parse_credential( + certificate, CERTIFICATE_MISSING_FIELDS_ERROR + ) + + return ( + messages.CardanoTxCertificate( + type=certificate_type, + path=path, + script_hash=script_hash, + key_hash=key_hash, + deposit=int(certificate["deposit"]), + ), + None, + ) elif certificate_type == messages.CardanoCertificateType.STAKE_POOL_REGISTRATION: pool_parameters = certificate["pool_parameters"] @@ -465,6 +486,30 @@ def parse_certificate(certificate: dict) -> CertificateWithPoolOwnersAndRelays: ), (owners, relays), ) + if certificate_type == messages.CardanoCertificateType.VOTE_DELEGATION: + if "drep" not in certificate: + raise CERTIFICATE_MISSING_FIELDS_ERROR + + path, script_hash, key_hash = _parse_credential( + certificate, CERTIFICATE_MISSING_FIELDS_ERROR + ) + + return ( + messages.CardanoTxCertificate( + type=certificate_type, + path=path, + script_hash=script_hash, + key_hash=key_hash, + drep=messages.CardanoDRep( + type=messages.CardanoDRepType(certificate["drep"]["type"]), + key_hash=parse_optional_bytes(certificate["drep"].get("key_hash")), + script_hash=parse_optional_bytes( + certificate["drep"].get("script_hash") + ), + ), + ), + None, + ) else: raise ValueError("Unknown certificate type") @@ -686,6 +731,9 @@ def _get_witness_requests( in ( messages.CardanoCertificateType.STAKE_DEREGISTRATION, messages.CardanoCertificateType.STAKE_DELEGATION, + messages.CardanoCertificateType.STAKE_REGISTRATION_CONWAY, + messages.CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY, + messages.CardanoCertificateType.VOTE_DELEGATION, ) and certificate.path ): diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index b5f52bce1f..f50292123d 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -410,6 +410,16 @@ class CardanoCertificateType(IntEnum): STAKE_DEREGISTRATION = 1 STAKE_DELEGATION = 2 STAKE_POOL_REGISTRATION = 3 + STAKE_REGISTRATION_CONWAY = 7 + STAKE_DEREGISTRATION_CONWAY = 8 + VOTE_DELEGATION = 9 + + +class CardanoDRepType(IntEnum): + KEY_HASH = 0 + SCRIPT_HASH = 1 + ABSTAIN = 2 + NO_CONFIDENCE = 3 class CardanoPoolRelayType(IntEnum): @@ -2648,6 +2658,26 @@ def __init__( self.metadata = metadata +class CardanoDRep(protobuf.MessageType): + MESSAGE_WIRE_TYPE = None + FIELDS = { + 1: protobuf.Field("type", "CardanoDRepType", repeated=False, required=True), + 2: protobuf.Field("key_hash", "bytes", repeated=False, required=False, default=None), + 3: protobuf.Field("script_hash", "bytes", repeated=False, required=False, default=None), + } + + def __init__( + self, + *, + type: "CardanoDRepType", + key_hash: Optional["bytes"] = None, + script_hash: Optional["bytes"] = None, + ) -> None: + self.type = type + self.key_hash = key_hash + self.script_hash = script_hash + + class CardanoTxCertificate(protobuf.MessageType): MESSAGE_WIRE_TYPE = 325 FIELDS = { @@ -2657,6 +2687,8 @@ class CardanoTxCertificate(protobuf.MessageType): 4: protobuf.Field("pool_parameters", "CardanoPoolParametersType", repeated=False, required=False, default=None), 5: protobuf.Field("script_hash", "bytes", repeated=False, required=False, default=None), 6: protobuf.Field("key_hash", "bytes", repeated=False, required=False, default=None), + 7: protobuf.Field("deposit", "uint64", repeated=False, required=False, default=None), + 8: protobuf.Field("drep", "CardanoDRep", repeated=False, required=False, default=None), } def __init__( @@ -2668,6 +2700,8 @@ def __init__( pool_parameters: Optional["CardanoPoolParametersType"] = None, script_hash: Optional["bytes"] = None, key_hash: Optional["bytes"] = None, + deposit: Optional["int"] = None, + drep: Optional["CardanoDRep"] = None, ) -> None: self.path: Sequence["int"] = path if path is not None else [] self.type = type @@ -2675,6 +2709,8 @@ def __init__( self.pool_parameters = pool_parameters self.script_hash = script_hash self.key_hash = key_hash + self.deposit = deposit + self.drep = drep class CardanoTxWithdrawal(protobuf.MessageType): diff --git a/rust/trezor-client/src/protos/generated/messages_cardano.rs b/rust/trezor-client/src/protos/generated/messages_cardano.rs index da2d0c7e51..b7c5d8fd74 100644 --- a/rust/trezor-client/src/protos/generated/messages_cardano.rs +++ b/rust/trezor-client/src/protos/generated/messages_cardano.rs @@ -5895,6 +5895,261 @@ impl ::protobuf::reflect::ProtobufValue for CardanoPoolParametersType { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; } +// @@protoc_insertion_point(message:hw.trezor.messages.cardano.CardanoDRep) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct CardanoDRep { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoDRep.type) + pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<CardanoDRepType>>, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoDRep.key_hash) + pub key_hash: ::std::option::Option<::std::vec::Vec<u8>>, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoDRep.script_hash) + pub script_hash: ::std::option::Option<::std::vec::Vec<u8>>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.cardano.CardanoDRep.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a CardanoDRep { + fn default() -> &'a CardanoDRep { + <CardanoDRep as ::protobuf::Message>::default_instance() + } +} + +impl CardanoDRep { + pub fn new() -> CardanoDRep { + ::std::default::Default::default() + } + + // required .hw.trezor.messages.cardano.CardanoDRepType type = 1; + + pub fn type_(&self) -> CardanoDRepType { + match self.type_ { + Some(e) => e.enum_value_or(CardanoDRepType::KEY_HASH), + None => CardanoDRepType::KEY_HASH, + } + } + + pub fn clear_type_(&mut self) { + self.type_ = ::std::option::Option::None; + } + + pub fn has_type(&self) -> bool { + self.type_.is_some() + } + + // Param is passed by value, moved + pub fn set_type(&mut self, v: CardanoDRepType) { + self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); + } + + // optional bytes key_hash = 2; + + pub fn key_hash(&self) -> &[u8] { + match self.key_hash.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_key_hash(&mut self) { + self.key_hash = ::std::option::Option::None; + } + + pub fn has_key_hash(&self) -> bool { + self.key_hash.is_some() + } + + // Param is passed by value, moved + pub fn set_key_hash(&mut self, v: ::std::vec::Vec<u8>) { + self.key_hash = ::std::option::Option::Some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_key_hash(&mut self) -> &mut ::std::vec::Vec<u8> { + if self.key_hash.is_none() { + self.key_hash = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.key_hash.as_mut().unwrap() + } + + // Take field + pub fn take_key_hash(&mut self) -> ::std::vec::Vec<u8> { + self.key_hash.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + // optional bytes script_hash = 3; + + pub fn script_hash(&self) -> &[u8] { + match self.script_hash.as_ref() { + Some(v) => v, + None => &[], + } + } + + pub fn clear_script_hash(&mut self) { + self.script_hash = ::std::option::Option::None; + } + + pub fn has_script_hash(&self) -> bool { + self.script_hash.is_some() + } + + // Param is passed by value, moved + pub fn set_script_hash(&mut self, v: ::std::vec::Vec<u8>) { + self.script_hash = ::std::option::Option::Some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_script_hash(&mut self) -> &mut ::std::vec::Vec<u8> { + if self.script_hash.is_none() { + self.script_hash = ::std::option::Option::Some(::std::vec::Vec::new()); + } + self.script_hash.as_mut().unwrap() + } + + // Take field + pub fn take_script_hash(&mut self) -> ::std::vec::Vec<u8> { + self.script_hash.take().unwrap_or_else(|| ::std::vec::Vec::new()) + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(3); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "type", + |m: &CardanoDRep| { &m.type_ }, + |m: &mut CardanoDRep| { &mut m.type_ }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "key_hash", + |m: &CardanoDRep| { &m.key_hash }, + |m: &mut CardanoDRep| { &mut m.key_hash }, + )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "script_hash", + |m: &CardanoDRep| { &m.script_hash }, + |m: &mut CardanoDRep| { &mut m.script_hash }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CardanoDRep>( + "CardanoDRep", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for CardanoDRep { + const NAME: &'static str = "CardanoDRep"; + + fn is_initialized(&self) -> bool { + if self.type_.is_none() { + return false; + } + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { + while let Some(tag) = is.read_raw_tag_or_eof()? { + match tag { + 8 => { + self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?); + }, + 18 => { + self.key_hash = ::std::option::Option::Some(is.read_bytes()?); + }, + 26 => { + self.script_hash = ::std::option::Option::Some(is.read_bytes()?); + }, + tag => { + ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u64 { + let mut my_size = 0; + if let Some(v) = self.type_ { + my_size += ::protobuf::rt::int32_size(1, v.value()); + } + if let Some(v) = self.key_hash.as_ref() { + my_size += ::protobuf::rt::bytes_size(2, &v); + } + if let Some(v) = self.script_hash.as_ref() { + my_size += ::protobuf::rt::bytes_size(3, &v); + } + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + if let Some(v) = self.type_ { + os.write_enum(1, ::protobuf::EnumOrUnknown::value(&v))?; + } + if let Some(v) = self.key_hash.as_ref() { + os.write_bytes(2, v)?; + } + if let Some(v) = self.script_hash.as_ref() { + os.write_bytes(3, v)?; + } + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> CardanoDRep { + CardanoDRep::new() + } + + fn clear(&mut self) { + self.type_ = ::std::option::Option::None; + self.key_hash = ::std::option::Option::None; + self.script_hash = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static CardanoDRep { + static instance: CardanoDRep = CardanoDRep { + type_: ::std::option::Option::None, + key_hash: ::std::option::Option::None, + script_hash: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for CardanoDRep { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().message_by_package_relative_name("CardanoDRep").unwrap()).clone() + } +} + +impl ::std::fmt::Display for CardanoDRep { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for CardanoDRep { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; +} + // @@protoc_insertion_point(message:hw.trezor.messages.cardano.CardanoTxCertificate) #[derive(PartialEq,Clone,Default,Debug)] pub struct CardanoTxCertificate { @@ -5911,6 +6166,10 @@ pub struct CardanoTxCertificate { pub script_hash: ::std::option::Option<::std::vec::Vec<u8>>, // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoTxCertificate.key_hash) pub key_hash: ::std::option::Option<::std::vec::Vec<u8>>, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoTxCertificate.deposit) + pub deposit: ::std::option::Option<u64>, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoTxCertificate.drep) + pub drep: ::protobuf::MessageField<CardanoDRep>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.cardano.CardanoTxCertificate.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -6057,8 +6316,27 @@ impl CardanoTxCertificate { self.key_hash.take().unwrap_or_else(|| ::std::vec::Vec::new()) } + // optional uint64 deposit = 7; + + pub fn deposit(&self) -> u64 { + self.deposit.unwrap_or(0) + } + + pub fn clear_deposit(&mut self) { + self.deposit = ::std::option::Option::None; + } + + pub fn has_deposit(&self) -> bool { + self.deposit.is_some() + } + + // Param is passed by value, moved + pub fn set_deposit(&mut self, v: u64) { + self.deposit = ::std::option::Option::Some(v); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(6); + let mut fields = ::std::vec::Vec::with_capacity(8); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "type", @@ -6090,6 +6368,16 @@ impl CardanoTxCertificate { |m: &CardanoTxCertificate| { &m.key_hash }, |m: &mut CardanoTxCertificate| { &mut m.key_hash }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "deposit", + |m: &CardanoTxCertificate| { &m.deposit }, + |m: &mut CardanoTxCertificate| { &mut m.deposit }, + )); + fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, CardanoDRep>( + "drep", + |m: &CardanoTxCertificate| { &m.drep }, + |m: &mut CardanoTxCertificate| { &mut m.drep }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CardanoTxCertificate>( "CardanoTxCertificate", fields, @@ -6110,6 +6398,11 @@ impl ::protobuf::Message for CardanoTxCertificate { return false; } }; + for v in &self.drep { + if !v.is_initialized() { + return false; + } + }; true } @@ -6137,6 +6430,12 @@ impl ::protobuf::Message for CardanoTxCertificate { 50 => { self.key_hash = ::std::option::Option::Some(is.read_bytes()?); }, + 56 => { + self.deposit = ::std::option::Option::Some(is.read_uint64()?); + }, + 66 => { + ::protobuf::rt::read_singular_message_into_field(is, &mut self.drep)?; + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -6168,6 +6467,13 @@ impl ::protobuf::Message for CardanoTxCertificate { if let Some(v) = self.key_hash.as_ref() { my_size += ::protobuf::rt::bytes_size(6, &v); } + if let Some(v) = self.deposit { + my_size += ::protobuf::rt::uint64_size(7, v); + } + if let Some(v) = self.drep.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -6192,6 +6498,12 @@ impl ::protobuf::Message for CardanoTxCertificate { if let Some(v) = self.key_hash.as_ref() { os.write_bytes(6, v)?; } + if let Some(v) = self.deposit { + os.write_uint64(7, v)?; + } + if let Some(v) = self.drep.as_ref() { + ::protobuf::rt::write_message_field_with_cached_size(8, v, os)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -6215,6 +6527,8 @@ impl ::protobuf::Message for CardanoTxCertificate { self.pool_parameters.clear(); self.script_hash = ::std::option::Option::None; self.key_hash = ::std::option::Option::None; + self.deposit = ::std::option::Option::None; + self.drep.clear(); self.special_fields.clear(); } @@ -6226,6 +6540,8 @@ impl ::protobuf::Message for CardanoTxCertificate { pool_parameters: ::protobuf::MessageField::none(), script_hash: ::std::option::Option::None, key_hash: ::std::option::Option::None, + deposit: ::std::option::Option::None, + drep: ::protobuf::MessageField::none(), special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -9601,6 +9917,12 @@ pub enum CardanoCertificateType { STAKE_DELEGATION = 2, // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoCertificateType.STAKE_POOL_REGISTRATION) STAKE_POOL_REGISTRATION = 3, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoCertificateType.STAKE_REGISTRATION_CONWAY) + STAKE_REGISTRATION_CONWAY = 7, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoCertificateType.STAKE_DEREGISTRATION_CONWAY) + STAKE_DEREGISTRATION_CONWAY = 8, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoCertificateType.VOTE_DELEGATION) + VOTE_DELEGATION = 9, } impl ::protobuf::Enum for CardanoCertificateType { @@ -9616,6 +9938,9 @@ impl ::protobuf::Enum for CardanoCertificateType { 1 => ::std::option::Option::Some(CardanoCertificateType::STAKE_DEREGISTRATION), 2 => ::std::option::Option::Some(CardanoCertificateType::STAKE_DELEGATION), 3 => ::std::option::Option::Some(CardanoCertificateType::STAKE_POOL_REGISTRATION), + 7 => ::std::option::Option::Some(CardanoCertificateType::STAKE_REGISTRATION_CONWAY), + 8 => ::std::option::Option::Some(CardanoCertificateType::STAKE_DEREGISTRATION_CONWAY), + 9 => ::std::option::Option::Some(CardanoCertificateType::VOTE_DELEGATION), _ => ::std::option::Option::None } } @@ -9626,6 +9951,9 @@ impl ::protobuf::Enum for CardanoCertificateType { "STAKE_DEREGISTRATION" => ::std::option::Option::Some(CardanoCertificateType::STAKE_DEREGISTRATION), "STAKE_DELEGATION" => ::std::option::Option::Some(CardanoCertificateType::STAKE_DELEGATION), "STAKE_POOL_REGISTRATION" => ::std::option::Option::Some(CardanoCertificateType::STAKE_POOL_REGISTRATION), + "STAKE_REGISTRATION_CONWAY" => ::std::option::Option::Some(CardanoCertificateType::STAKE_REGISTRATION_CONWAY), + "STAKE_DEREGISTRATION_CONWAY" => ::std::option::Option::Some(CardanoCertificateType::STAKE_DEREGISTRATION_CONWAY), + "VOTE_DELEGATION" => ::std::option::Option::Some(CardanoCertificateType::VOTE_DELEGATION), _ => ::std::option::Option::None } } @@ -9635,6 +9963,9 @@ impl ::protobuf::Enum for CardanoCertificateType { CardanoCertificateType::STAKE_DEREGISTRATION, CardanoCertificateType::STAKE_DELEGATION, CardanoCertificateType::STAKE_POOL_REGISTRATION, + CardanoCertificateType::STAKE_REGISTRATION_CONWAY, + CardanoCertificateType::STAKE_DEREGISTRATION_CONWAY, + CardanoCertificateType::VOTE_DELEGATION, ]; } @@ -9645,7 +9976,15 @@ impl ::protobuf::EnumFull for CardanoCertificateType { } fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { - let index = *self as usize; + let index = match self { + CardanoCertificateType::STAKE_REGISTRATION => 0, + CardanoCertificateType::STAKE_DEREGISTRATION => 1, + CardanoCertificateType::STAKE_DELEGATION => 2, + CardanoCertificateType::STAKE_POOL_REGISTRATION => 3, + CardanoCertificateType::STAKE_REGISTRATION_CONWAY => 4, + CardanoCertificateType::STAKE_DEREGISTRATION_CONWAY => 5, + CardanoCertificateType::VOTE_DELEGATION => 6, + }; Self::enum_descriptor().value_by_index(index) } } @@ -9662,6 +10001,78 @@ impl CardanoCertificateType { } } +#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] +// @@protoc_insertion_point(enum:hw.trezor.messages.cardano.CardanoDRepType) +pub enum CardanoDRepType { + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoDRepType.KEY_HASH) + KEY_HASH = 0, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoDRepType.SCRIPT_HASH) + SCRIPT_HASH = 1, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoDRepType.ABSTAIN) + ABSTAIN = 2, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.cardano.CardanoDRepType.NO_CONFIDENCE) + NO_CONFIDENCE = 3, +} + +impl ::protobuf::Enum for CardanoDRepType { + const NAME: &'static str = "CardanoDRepType"; + + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option<CardanoDRepType> { + match value { + 0 => ::std::option::Option::Some(CardanoDRepType::KEY_HASH), + 1 => ::std::option::Option::Some(CardanoDRepType::SCRIPT_HASH), + 2 => ::std::option::Option::Some(CardanoDRepType::ABSTAIN), + 3 => ::std::option::Option::Some(CardanoDRepType::NO_CONFIDENCE), + _ => ::std::option::Option::None + } + } + + fn from_str(str: &str) -> ::std::option::Option<CardanoDRepType> { + match str { + "KEY_HASH" => ::std::option::Option::Some(CardanoDRepType::KEY_HASH), + "SCRIPT_HASH" => ::std::option::Option::Some(CardanoDRepType::SCRIPT_HASH), + "ABSTAIN" => ::std::option::Option::Some(CardanoDRepType::ABSTAIN), + "NO_CONFIDENCE" => ::std::option::Option::Some(CardanoDRepType::NO_CONFIDENCE), + _ => ::std::option::Option::None + } + } + + const VALUES: &'static [CardanoDRepType] = &[ + CardanoDRepType::KEY_HASH, + CardanoDRepType::SCRIPT_HASH, + CardanoDRepType::ABSTAIN, + CardanoDRepType::NO_CONFIDENCE, + ]; +} + +impl ::protobuf::EnumFull for CardanoDRepType { + fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().enum_by_package_relative_name("CardanoDRepType").unwrap()).clone() + } + + fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { + let index = *self as usize; + Self::enum_descriptor().value_by_index(index) + } +} + +impl ::std::default::Default for CardanoDRepType { + fn default() -> Self { + CardanoDRepType::KEY_HASH + } +} + +impl CardanoDRepType { + fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData { + ::protobuf::reflect::GeneratedEnumDescriptorData::new::<CardanoDRepType>("CardanoDRepType") + } +} + #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] // @@protoc_insertion_point(enum:hw.trezor.messages.cardano.CardanoPoolRelayType) pub enum CardanoPoolRelayType { @@ -10089,78 +10500,87 @@ static file_descriptor_proto_data: &'static [u8] = b"\ unt\x18\x07\x20\x02(\tR\rrewardAccount\x12O\n\x08metadata\x18\n\x20\x01(\ \x0b23.hw.trezor.messages.cardano.CardanoPoolMetadataTypeR\x08metadata\ \x12!\n\x0cowners_count\x18\x0b\x20\x02(\rR\x0bownersCount\x12!\n\x0crel\ - ays_count\x18\x0c\x20\x02(\rR\x0brelaysCount\"\xa2\x02\n\x14CardanoTxCer\ - tificate\x12F\n\x04type\x18\x01\x20\x02(\x0e22.hw.trezor.messages.cardan\ - o.CardanoCertificateTypeR\x04type\x12\x12\n\x04path\x18\x02\x20\x03(\rR\ - \x04path\x12\x12\n\x04pool\x18\x03\x20\x01(\x0cR\x04pool\x12^\n\x0fpool_\ - parameters\x18\x04\x20\x01(\x0b25.hw.trezor.messages.cardano.CardanoPool\ - ParametersTypeR\x0epoolParameters\x12\x1f\n\x0bscript_hash\x18\x05\x20\ - \x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\x18\x06\x20\x01(\x0cR\x07ke\ - yHash\"}\n\x13CardanoTxWithdrawal\x12\x12\n\x04path\x18\x01\x20\x03(\rR\ - \x04path\x12\x16\n\x06amount\x18\x02\x20\x02(\x04R\x06amount\x12\x1f\n\ - \x0bscript_hash\x18\x03\x20\x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\ - \x18\x04\x20\x01(\x0cR\x07keyHash\"d\n\"CardanoCVoteRegistrationDelegati\ - on\x12&\n\x0fvote_public_key\x18\x01\x20\x02(\x0cR\rvotePublicKey\x12\ - \x16\n\x06weight\x18\x02\x20\x02(\rR\x06weight\"\x8e\x04\n&CardanoCVoteR\ - egistrationParametersType\x12&\n\x0fvote_public_key\x18\x01\x20\x01(\x0c\ - R\rvotePublicKey\x12!\n\x0cstaking_path\x18\x02\x20\x03(\rR\x0bstakingPa\ - th\x12v\n\x1apayment_address_parameters\x18\x03\x20\x01(\x0b28.hw.trezor\ - .messages.cardano.CardanoAddressParametersTypeR\x18paymentAddressParamet\ - ers\x12\x14\n\x05nonce\x18\x04\x20\x02(\x04R\x05nonce\x12Y\n\x06format\ - \x18\x05\x20\x01(\x0e2:.hw.trezor.messages.cardano.CardanoCVoteRegistrat\ - ionFormat:\x05CIP15R\x06format\x12`\n\x0bdelegations\x18\x06\x20\x03(\ - \x0b2>.hw.trezor.messages.cardano.CardanoCVoteRegistrationDelegationR\ - \x0bdelegations\x12%\n\x0evoting_purpose\x18\x07\x20\x01(\x04R\rvotingPu\ - rpose\x12'\n\x0fpayment_address\x18\x08\x20\x01(\tR\x0epaymentAddress\"\ - \xb5\x01\n\x16CardanoTxAuxiliaryData\x12\x86\x01\n\x1dcvote_registration\ - _parameters\x18\x01\x20\x01(\x0b2B.hw.trezor.messages.cardano.CardanoCVo\ - teRegistrationParametersTypeR\x1bcvoteRegistrationParameters\x12\x12\n\ - \x04hash\x18\x02\x20\x01(\x0cR\x04hash\"=\n\rCardanoTxMint\x12,\n\x12ass\ - et_groups_count\x18\x01\x20\x02(\rR\x10assetGroupsCount\"V\n\x18CardanoT\ - xCollateralInput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\ - \x12\x1d\n\nprev_index\x18\x02\x20\x02(\rR\tprevIndex\"O\n\x17CardanoTxR\ - equiredSigner\x12\x19\n\x08key_hash\x18\x01\x20\x01(\x0cR\x07keyHash\x12\ - \x19\n\x08key_path\x18\x02\x20\x03(\rR\x07keyPath\"U\n\x17CardanoTxRefer\ - enceInput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\ - \n\nprev_index\x18\x02\x20\x02(\rR\tprevIndex\"\x12\n\x10CardanoTxItemAc\ - k\"\xea\x01\n\x20CardanoTxAuxiliaryDataSupplement\x12T\n\x04type\x18\x01\ - \x20\x02(\x0e2@.hw.trezor.messages.cardano.CardanoTxAuxiliaryDataSupplem\ - entTypeR\x04type\x12.\n\x13auxiliary_data_hash\x18\x02\x20\x01(\x0cR\x11\ - auxiliaryDataHash\x12@\n\x1ccvote_registration_signature\x18\x03\x20\x01\ - (\x0cR\x1acvoteRegistrationSignature\"-\n\x17CardanoTxWitnessRequest\x12\ - \x12\n\x04path\x18\x01\x20\x03(\rR\x04path\"\xb6\x01\n\x18CardanoTxWitne\ - ssResponse\x12D\n\x04type\x18\x01\x20\x02(\x0e20.hw.trezor.messages.card\ - ano.CardanoTxWitnessTypeR\x04type\x12\x17\n\x07pub_key\x18\x02\x20\x02(\ - \x0cR\x06pubKey\x12\x1c\n\tsignature\x18\x03\x20\x02(\x0cR\tsignature\ - \x12\x1d\n\nchain_code\x18\x04\x20\x01(\x0cR\tchainCode\"\x12\n\x10Carda\ - noTxHostAck\",\n\x11CardanoTxBodyHash\x12\x17\n\x07tx_hash\x18\x01\x20\ - \x02(\x0cR\x06txHash\"\x17\n\x15CardanoSignTxFinished*B\n\x15CardanoDeri\ - vationType\x12\n\n\x06LEDGER\x10\0\x12\n\n\x06ICARUS\x10\x01\x12\x11\n\r\ - ICARUS_TREZOR\x10\x02*\xd2\x01\n\x12CardanoAddressType\x12\x08\n\x04BASE\ - \x10\0\x12\x13\n\x0fBASE_SCRIPT_KEY\x10\x01\x12\x13\n\x0fBASE_KEY_SCRIPT\ - \x10\x02\x12\x16\n\x12BASE_SCRIPT_SCRIPT\x10\x03\x12\x0b\n\x07POINTER\ - \x10\x04\x12\x12\n\x0ePOINTER_SCRIPT\x10\x05\x12\x0e\n\nENTERPRISE\x10\ - \x06\x12\x15\n\x11ENTERPRISE_SCRIPT\x10\x07\x12\t\n\x05BYRON\x10\x08\x12\ - \n\n\x06REWARD\x10\x0e\x12\x11\n\rREWARD_SCRIPT\x10\x0f*o\n\x17CardanoNa\ - tiveScriptType\x12\x0b\n\x07PUB_KEY\x10\0\x12\x07\n\x03ALL\x10\x01\x12\ - \x07\n\x03ANY\x10\x02\x12\n\n\x06N_OF_K\x10\x03\x12\x12\n\x0eINVALID_BEF\ - ORE\x10\x04\x12\x15\n\x11INVALID_HEREAFTER\x10\x05*K\n$CardanoNativeScri\ - ptHashDisplayFormat\x12\x08\n\x04HIDE\x10\0\x12\n\n\x06BECH32\x10\x01\ - \x12\r\n\tPOLICY_ID\x10\x02*G\n\"CardanoTxOutputSerializationFormat\x12\ - \x10\n\x0cARRAY_LEGACY\x10\0\x12\x0f\n\x0bMAP_BABBAGE\x10\x01*}\n\x16Car\ - danoCertificateType\x12\x16\n\x12STAKE_REGISTRATION\x10\0\x12\x18\n\x14S\ - TAKE_DEREGISTRATION\x10\x01\x12\x14\n\x10STAKE_DELEGATION\x10\x02\x12\ - \x1b\n\x17STAKE_POOL_REGISTRATION\x10\x03*X\n\x14CardanoPoolRelayType\ - \x12\x12\n\x0eSINGLE_HOST_IP\x10\0\x12\x14\n\x10SINGLE_HOST_NAME\x10\x01\ - \x12\x16\n\x12MULTIPLE_HOST_NAME\x10\x02*R\n$CardanoTxAuxiliaryDataSuppl\ - ementType\x12\x08\n\x04NONE\x10\0\x12\x20\n\x1cCVOTE_REGISTRATION_SIGNAT\ - URE\x10\x01*6\n\x1eCardanoCVoteRegistrationFormat\x12\t\n\x05CIP15\x10\0\ - \x12\t\n\x05CIP36\x10\x01*\x82\x01\n\x14CardanoTxSigningMode\x12\x18\n\ - \x14ORDINARY_TRANSACTION\x10\0\x12\x1e\n\x1aPOOL_REGISTRATION_AS_OWNER\ - \x10\x01\x12\x18\n\x14MULTISIG_TRANSACTION\x10\x02\x12\x16\n\x12PLUTUS_T\ - RANSACTION\x10\x03*>\n\x14CardanoTxWitnessType\x12\x11\n\rBYRON_WITNESS\ - \x10\0\x12\x13\n\x0fSHELLEY_WITNESS\x10\x01B;\n#com.satoshilabs.trezor.l\ - ib.protobufB\x14TrezorMessageCardano\ + ays_count\x18\x0c\x20\x02(\rR\x0brelaysCount\"\x8a\x01\n\x0bCardanoDRep\ + \x12?\n\x04type\x18\x01\x20\x02(\x0e2+.hw.trezor.messages.cardano.Cardan\ + oDRepTypeR\x04type\x12\x19\n\x08key_hash\x18\x02\x20\x01(\x0cR\x07keyHas\ + h\x12\x1f\n\x0bscript_hash\x18\x03\x20\x01(\x0cR\nscriptHash\"\xf9\x02\n\ + \x14CardanoTxCertificate\x12F\n\x04type\x18\x01\x20\x02(\x0e22.hw.trezor\ + .messages.cardano.CardanoCertificateTypeR\x04type\x12\x12\n\x04path\x18\ + \x02\x20\x03(\rR\x04path\x12\x12\n\x04pool\x18\x03\x20\x01(\x0cR\x04pool\ + \x12^\n\x0fpool_parameters\x18\x04\x20\x01(\x0b25.hw.trezor.messages.car\ + dano.CardanoPoolParametersTypeR\x0epoolParameters\x12\x1f\n\x0bscript_ha\ + sh\x18\x05\x20\x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\x18\x06\x20\ + \x01(\x0cR\x07keyHash\x12\x18\n\x07deposit\x18\x07\x20\x01(\x04R\x07depo\ + sit\x12;\n\x04drep\x18\x08\x20\x01(\x0b2'.hw.trezor.messages.cardano.Car\ + danoDRepR\x04drep\"}\n\x13CardanoTxWithdrawal\x12\x12\n\x04path\x18\x01\ + \x20\x03(\rR\x04path\x12\x16\n\x06amount\x18\x02\x20\x02(\x04R\x06amount\ + \x12\x1f\n\x0bscript_hash\x18\x03\x20\x01(\x0cR\nscriptHash\x12\x19\n\ + \x08key_hash\x18\x04\x20\x01(\x0cR\x07keyHash\"d\n\"CardanoCVoteRegistra\ + tionDelegation\x12&\n\x0fvote_public_key\x18\x01\x20\x02(\x0cR\rvotePubl\ + icKey\x12\x16\n\x06weight\x18\x02\x20\x02(\rR\x06weight\"\x8e\x04\n&Card\ + anoCVoteRegistrationParametersType\x12&\n\x0fvote_public_key\x18\x01\x20\ + \x01(\x0cR\rvotePublicKey\x12!\n\x0cstaking_path\x18\x02\x20\x03(\rR\x0b\ + stakingPath\x12v\n\x1apayment_address_parameters\x18\x03\x20\x01(\x0b28.\ + hw.trezor.messages.cardano.CardanoAddressParametersTypeR\x18paymentAddre\ + ssParameters\x12\x14\n\x05nonce\x18\x04\x20\x02(\x04R\x05nonce\x12Y\n\ + \x06format\x18\x05\x20\x01(\x0e2:.hw.trezor.messages.cardano.CardanoCVot\ + eRegistrationFormat:\x05CIP15R\x06format\x12`\n\x0bdelegations\x18\x06\ + \x20\x03(\x0b2>.hw.trezor.messages.cardano.CardanoCVoteRegistrationDeleg\ + ationR\x0bdelegations\x12%\n\x0evoting_purpose\x18\x07\x20\x01(\x04R\rvo\ + tingPurpose\x12'\n\x0fpayment_address\x18\x08\x20\x01(\tR\x0epaymentAddr\ + ess\"\xb5\x01\n\x16CardanoTxAuxiliaryData\x12\x86\x01\n\x1dcvote_registr\ + ation_parameters\x18\x01\x20\x01(\x0b2B.hw.trezor.messages.cardano.Carda\ + noCVoteRegistrationParametersTypeR\x1bcvoteRegistrationParameters\x12\ + \x12\n\x04hash\x18\x02\x20\x01(\x0cR\x04hash\"=\n\rCardanoTxMint\x12,\n\ + \x12asset_groups_count\x18\x01\x20\x02(\rR\x10assetGroupsCount\"V\n\x18C\ + ardanoTxCollateralInput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08pr\ + evHash\x12\x1d\n\nprev_index\x18\x02\x20\x02(\rR\tprevIndex\"O\n\x17Card\ + anoTxRequiredSigner\x12\x19\n\x08key_hash\x18\x01\x20\x01(\x0cR\x07keyHa\ + sh\x12\x19\n\x08key_path\x18\x02\x20\x03(\rR\x07keyPath\"U\n\x17CardanoT\ + xReferenceInput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\ + \x12\x1d\n\nprev_index\x18\x02\x20\x02(\rR\tprevIndex\"\x12\n\x10Cardano\ + TxItemAck\"\xea\x01\n\x20CardanoTxAuxiliaryDataSupplement\x12T\n\x04type\ + \x18\x01\x20\x02(\x0e2@.hw.trezor.messages.cardano.CardanoTxAuxiliaryDat\ + aSupplementTypeR\x04type\x12.\n\x13auxiliary_data_hash\x18\x02\x20\x01(\ + \x0cR\x11auxiliaryDataHash\x12@\n\x1ccvote_registration_signature\x18\ + \x03\x20\x01(\x0cR\x1acvoteRegistrationSignature\"-\n\x17CardanoTxWitnes\ + sRequest\x12\x12\n\x04path\x18\x01\x20\x03(\rR\x04path\"\xb6\x01\n\x18Ca\ + rdanoTxWitnessResponse\x12D\n\x04type\x18\x01\x20\x02(\x0e20.hw.trezor.m\ + essages.cardano.CardanoTxWitnessTypeR\x04type\x12\x17\n\x07pub_key\x18\ + \x02\x20\x02(\x0cR\x06pubKey\x12\x1c\n\tsignature\x18\x03\x20\x02(\x0cR\ + \tsignature\x12\x1d\n\nchain_code\x18\x04\x20\x01(\x0cR\tchainCode\"\x12\ + \n\x10CardanoTxHostAck\",\n\x11CardanoTxBodyHash\x12\x17\n\x07tx_hash\ + \x18\x01\x20\x02(\x0cR\x06txHash\"\x17\n\x15CardanoSignTxFinished*B\n\ + \x15CardanoDerivationType\x12\n\n\x06LEDGER\x10\0\x12\n\n\x06ICARUS\x10\ + \x01\x12\x11\n\rICARUS_TREZOR\x10\x02*\xd2\x01\n\x12CardanoAddressType\ + \x12\x08\n\x04BASE\x10\0\x12\x13\n\x0fBASE_SCRIPT_KEY\x10\x01\x12\x13\n\ + \x0fBASE_KEY_SCRIPT\x10\x02\x12\x16\n\x12BASE_SCRIPT_SCRIPT\x10\x03\x12\ + \x0b\n\x07POINTER\x10\x04\x12\x12\n\x0ePOINTER_SCRIPT\x10\x05\x12\x0e\n\ + \nENTERPRISE\x10\x06\x12\x15\n\x11ENTERPRISE_SCRIPT\x10\x07\x12\t\n\x05B\ + YRON\x10\x08\x12\n\n\x06REWARD\x10\x0e\x12\x11\n\rREWARD_SCRIPT\x10\x0f*\ + o\n\x17CardanoNativeScriptType\x12\x0b\n\x07PUB_KEY\x10\0\x12\x07\n\x03A\ + LL\x10\x01\x12\x07\n\x03ANY\x10\x02\x12\n\n\x06N_OF_K\x10\x03\x12\x12\n\ + \x0eINVALID_BEFORE\x10\x04\x12\x15\n\x11INVALID_HEREAFTER\x10\x05*K\n$Ca\ + rdanoNativeScriptHashDisplayFormat\x12\x08\n\x04HIDE\x10\0\x12\n\n\x06BE\ + CH32\x10\x01\x12\r\n\tPOLICY_ID\x10\x02*G\n\"CardanoTxOutputSerializatio\ + nFormat\x12\x10\n\x0cARRAY_LEGACY\x10\0\x12\x0f\n\x0bMAP_BABBAGE\x10\x01\ + *\xd2\x01\n\x16CardanoCertificateType\x12\x16\n\x12STAKE_REGISTRATION\ + \x10\0\x12\x18\n\x14STAKE_DEREGISTRATION\x10\x01\x12\x14\n\x10STAKE_DELE\ + GATION\x10\x02\x12\x1b\n\x17STAKE_POOL_REGISTRATION\x10\x03\x12\x1d\n\ + \x19STAKE_REGISTRATION_CONWAY\x10\x07\x12\x1f\n\x1bSTAKE_DEREGISTRATION_\ + CONWAY\x10\x08\x12\x13\n\x0fVOTE_DELEGATION\x10\t*P\n\x0fCardanoDRepType\ + \x12\x0c\n\x08KEY_HASH\x10\0\x12\x0f\n\x0bSCRIPT_HASH\x10\x01\x12\x0b\n\ + \x07ABSTAIN\x10\x02\x12\x11\n\rNO_CONFIDENCE\x10\x03*X\n\x14CardanoPoolR\ + elayType\x12\x12\n\x0eSINGLE_HOST_IP\x10\0\x12\x14\n\x10SINGLE_HOST_NAME\ + \x10\x01\x12\x16\n\x12MULTIPLE_HOST_NAME\x10\x02*R\n$CardanoTxAuxiliaryD\ + ataSupplementType\x12\x08\n\x04NONE\x10\0\x12\x20\n\x1cCVOTE_REGISTRATIO\ + N_SIGNATURE\x10\x01*6\n\x1eCardanoCVoteRegistrationFormat\x12\t\n\x05CIP\ + 15\x10\0\x12\t\n\x05CIP36\x10\x01*\x82\x01\n\x14CardanoTxSigningMode\x12\ + \x18\n\x14ORDINARY_TRANSACTION\x10\0\x12\x1e\n\x1aPOOL_REGISTRATION_AS_O\ + WNER\x10\x01\x12\x18\n\x14MULTISIG_TRANSACTION\x10\x02\x12\x16\n\x12PLUT\ + US_TRANSACTION\x10\x03*>\n\x14CardanoTxWitnessType\x12\x11\n\rBYRON_WITN\ + ESS\x10\0\x12\x13\n\x0fSHELLEY_WITNESS\x10\x01B;\n#com.satoshilabs.trezo\ + r.lib.protobufB\x14TrezorMessageCardano\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -10179,7 +10599,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { let generated_file_descriptor = generated_file_descriptor_lazy.get(|| { let mut deps = ::std::vec::Vec::with_capacity(1); deps.push(super::messages_common::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(36); + let mut messages = ::std::vec::Vec::with_capacity(37); messages.push(CardanoBlockchainPointerType::generated_message_descriptor_data()); messages.push(CardanoNativeScript::generated_message_descriptor_data()); messages.push(CardanoGetNativeScriptHash::generated_message_descriptor_data()); @@ -10200,6 +10620,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(CardanoPoolRelayParameters::generated_message_descriptor_data()); messages.push(CardanoPoolMetadataType::generated_message_descriptor_data()); messages.push(CardanoPoolParametersType::generated_message_descriptor_data()); + messages.push(CardanoDRep::generated_message_descriptor_data()); messages.push(CardanoTxCertificate::generated_message_descriptor_data()); messages.push(CardanoTxWithdrawal::generated_message_descriptor_data()); messages.push(CardanoCVoteRegistrationDelegation::generated_message_descriptor_data()); @@ -10216,13 +10637,14 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(CardanoTxHostAck::generated_message_descriptor_data()); messages.push(CardanoTxBodyHash::generated_message_descriptor_data()); messages.push(CardanoSignTxFinished::generated_message_descriptor_data()); - let mut enums = ::std::vec::Vec::with_capacity(11); + let mut enums = ::std::vec::Vec::with_capacity(12); enums.push(CardanoDerivationType::generated_enum_descriptor_data()); enums.push(CardanoAddressType::generated_enum_descriptor_data()); enums.push(CardanoNativeScriptType::generated_enum_descriptor_data()); enums.push(CardanoNativeScriptHashDisplayFormat::generated_enum_descriptor_data()); enums.push(CardanoTxOutputSerializationFormat::generated_enum_descriptor_data()); enums.push(CardanoCertificateType::generated_enum_descriptor_data()); + enums.push(CardanoDRepType::generated_enum_descriptor_data()); enums.push(CardanoPoolRelayType::generated_enum_descriptor_data()); enums.push(CardanoTxAuxiliaryDataSupplementType::generated_enum_descriptor_data()); enums.push(CardanoCVoteRegistrationFormat::generated_enum_descriptor_data()); From 7eb6fcf43c7413d336dc194c7e64b1a221114675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Jas=CC=8Cko?= <peter.jasko@vacuumlabs.com> Date: Fri, 8 Dec 2023 13:48:53 +0100 Subject: [PATCH 072/626] feat(cardano): Tag sets --- common/protob/messages-cardano.proto | 1 + .../fixtures/cardano/sign_tx.failed.json | 210 ++++++++----- common/tests/fixtures/cardano/sign_tx.json | 222 ++++++++++---- .../cardano/sign_tx.multisig.failed.json | 54 ++-- .../fixtures/cardano/sign_tx.multisig.json | 27 +- .../cardano/sign_tx.plutus.failed.json | 15 +- .../fixtures/cardano/sign_tx.plutus.json | 158 ++++++++-- .../cardano/sign_tx.show_details.json | 27 +- .../fixtures/cardano/sign_tx.slip39.json | 9 +- ...ign_tx_stake_pool_registration.failed.json | 80 +++-- .../sign_tx_stake_pool_registration.json | 21 +- .../helpers/hash_builder_collection.py | 13 + core/src/apps/cardano/sign_tx/signer.py | 69 +++-- core/src/apps/common/cbor.py | 10 +- core/src/trezor/messages.py | 2 + core/tests/test_apps.common.cbor.py | 17 ++ python/src/trezorlib/cardano.py | 2 + python/src/trezorlib/cli/cardano.py | 3 + python/src/trezorlib/messages.py | 3 + .../src/protos/generated/messages_cardano.rs | 276 ++++++++++-------- tests/device_tests/cardano/test_sign_tx.py | 1 + 21 files changed, 847 insertions(+), 373 deletions(-) diff --git a/common/protob/messages-cardano.proto b/common/protob/messages-cardano.proto index 738fdba80b..0f259027a1 100644 --- a/common/protob/messages-cardano.proto +++ b/common/protob/messages-cardano.proto @@ -235,6 +235,7 @@ message CardanoSignTxInit { optional uint64 total_collateral = 20; optional uint32 reference_inputs_count = 21 [default=0]; optional bool chunkify = 22; // display the address in chunks of 4 characters + optional bool tag_cbor_sets = 23 [default=false]; // use tag 258 for sets in cbor } /** diff --git a/common/tests/fixtures/cardano/sign_tx.failed.json b/common/tests/fixtures/cardano/sign_tx.failed.json index 1a3911c26b..d993594a3c 100644 --- a/common/tests/fixtures/cardano/sign_tx.failed.json +++ b/common/tests/fixtures/cardano/sign_tx.failed.json @@ -37,7 +37,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid input" @@ -76,7 +77,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -115,7 +117,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -154,7 +157,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -193,7 +197,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -232,7 +237,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -271,7 +277,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Fee is out of range" @@ -315,7 +322,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Total transaction amount is out of range!" @@ -354,7 +362,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Output address network mismatch" @@ -393,7 +402,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Output address network mismatch" @@ -432,7 +442,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -471,7 +482,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -510,7 +522,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid network id/protocol magic combination!" @@ -549,7 +562,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid network id/protocol magic combination!" @@ -588,7 +602,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -630,7 +645,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -674,7 +690,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -718,7 +735,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -762,7 +780,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -806,7 +825,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -851,7 +871,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -896,7 +917,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -941,7 +963,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -985,7 +1008,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1029,7 +1053,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1073,7 +1098,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1117,7 +1143,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1161,7 +1188,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1206,7 +1234,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1251,7 +1280,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -1292,7 +1322,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid auxiliary data" @@ -1341,7 +1372,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address parameters" @@ -1392,7 +1424,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid auxiliary data" @@ -1449,7 +1482,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid auxiliary data" @@ -1489,7 +1523,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output datum hash" @@ -1528,7 +1563,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid script data hash" @@ -1573,7 +1609,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1615,7 +1652,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1654,7 +1692,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1698,7 +1737,8 @@ ], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1739,7 +1779,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -1781,7 +1822,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -1826,7 +1868,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid change output path" @@ -1871,7 +1914,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid change output staking path" @@ -1916,7 +1960,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address parameters" @@ -1955,7 +2000,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address" @@ -1999,7 +2045,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate path" @@ -2043,7 +2090,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -2097,7 +2145,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid token bundle in output" @@ -2156,7 +2205,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid token bundle in output" @@ -2209,7 +2259,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid mint token bundle" @@ -2267,7 +2318,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid mint token bundle" @@ -2325,7 +2377,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid token bundle in output" @@ -2393,7 +2446,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid token bundle in output" @@ -2450,7 +2504,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid mint token bundle" @@ -2517,7 +2572,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid mint token bundle" @@ -2560,7 +2616,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2603,7 +2660,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2644,7 +2702,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address parameters" @@ -2734,7 +2793,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2777,7 +2837,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2871,7 +2932,8 @@ "path": "m/1855'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2916,7 +2978,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -2960,7 +3023,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -3004,7 +3068,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -3054,7 +3119,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -3104,7 +3170,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -3153,7 +3220,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -3197,7 +3265,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -3238,7 +3307,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" diff --git a/common/tests/fixtures/cardano/sign_tx.json b/common/tests/fixtures/cardano/sign_tx.json index 69a99deaf2..102bc9fbed 100644 --- a/common/tests/fixtures/cardano/sign_tx.json +++ b/common/tests/fixtures/cardano/sign_tx.json @@ -37,7 +37,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "73e09bdebf98a9e0f17f86a2d11e0f14f4f8dae77cdf26ff1678e821f20c8db6", @@ -89,7 +90,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "81b14b7e62972127eb33c0b1198de6430540ad3a98eec621a3194f2baac43a43", @@ -142,7 +144,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "16fe72bb198be423677577e6326f1f648ec5fc11263b072006382d8125a6edda", @@ -204,7 +207,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "7e16a0b47bdfc37abf4ddd3143f7481af07ffe7abd68f752676f5b0b2890d05b", @@ -275,7 +279,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "5ddbb530b8a89e2b08fc91db03950c876c4a9c1c3fb6e628c4cab638b1c97648", @@ -329,7 +334,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1fc82ce2420c173a0947eaf49af76fcd6f4e400e2bfb5fa152a482ea12dde24b", @@ -383,7 +389,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "abd1b24ac0638251398444ee136110f952738df32a512ce35894f8453d0e8edf", @@ -436,7 +443,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "d1610bb89bece22ed3158738bc1fbb31c6af0685053e2993361e3380f49afad9", @@ -489,7 +497,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1d6fc2044d54d4af5b44e4be4c1ce3670fe4d2e37523a945d087252c27b215f2", @@ -544,7 +553,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "40535fa8f88515f1da008d3cdf544cf9dbf1675c3cb0adb13b74b9293f1b7096", @@ -596,7 +606,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "d3570557b197604109481a80aeb66cd2cfabc57f802ad593bacc12eb658e5d72", @@ -648,7 +659,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1a3a295908afd8b2afc368071272d6964be6ee0af062bb765aea65ca454dc0c9", @@ -701,7 +713,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "e200b2c91f3493a1f3b9cfc8b6c141f70181741025e53941e9d57d22b1470c5c", @@ -711,6 +724,72 @@ "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", "signature": "79a357517a08c7256b0fab1e93a92a477386f4c2d72cea7bc68527c0133c32472305f010350665d72e8017bb6c2080b5742680ce7700bbddda561c917f294a07", "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "dca542910d0362fc22744e7a24732343db4e013495a7d9b47562886f09af8eb56ecaa105e20a9df3e4248fdab61dd91b6fb2a3bfc15d0d9a0442671c07e1ba02", + "chain_code": null + } + ] + } + }, + { + "description": "transaction with conway stake registration certificate and 258-tagged sets", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [ + { + "type": 7, + "path": "m/1852'/1815'/0'/2/0", + "deposit": 2000000 + } + ], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "3b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b7", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": null, + "collateral_inputs": [], + "required_signers": [], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [], + "signing_mode": "ORDINARY_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": true + }, + "result": { + "tx_hash": "5e27f8fba938603411452a8cb373462fb64305539573b7a9edc9155be5cd6473", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "13c136487d8048ab7bbb081a324aa6b999e0b3237f956503b5446a4c409ec1062091b82e9e5459dee7ab0ba67ed874692d788872c8bbdb5ad4a3975c465fea09", + "chain_code": null + }, + { + "type": 1, + "pub_key": "bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e", + "signature": "f0674db7194d8e04d7df416af8ad9dcf1b1203ca4b78f14c1e394d47418c8f7e95fd41a8f01c43eeeb39df6264359c865a41621fc1e6b540819b25c7c4df5803", + "chain_code": null } ] } @@ -748,7 +827,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "03535791d04fc1b4457fada025f1c1f7778b5c2d7fa580bbac8abd53b85d3255", @@ -805,7 +885,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "439764b5f7e08839881536a3191faeaf111e75d9f00f83b102c5c1c6fa9fcaf9", @@ -863,7 +944,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "3aca1784d151dc75bdbb80fae71bda3f4b26af3f5fd71bd5e9e9bbcdd2b64ad1", @@ -922,7 +1004,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "564ad55097101e1ca85629cffe839f43a19bf33aa1940c99a62eb8f14392eebb", @@ -985,7 +1068,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "22c67f12e6f6aa0f2f09fd27d472b19c7208ccd7c3af4b09604fd5d462c1de2b", @@ -1044,7 +1128,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "cc068a25994ef6a90cdab8adfbe302d6f742de9901ba2495dd64a09f2ef951f5", @@ -1106,7 +1191,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1669062fd6efc4f11ed8ae9511a9c9f4454fa4f64e2043483f99d7c711236664", @@ -1168,7 +1254,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "fccf753e4f96e20c880e5ea933041ed33509ec6c0dc1aee8b25a1fe3d562b7aa", @@ -1229,7 +1316,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "01d0f76fadc899087c5352befac56cbfdc2e868ac715fbfe00230bab3f7fa751", @@ -1290,7 +1378,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "567e9bd00787190f1ab51879dcf834002b76007130c526b2e4d1bf9a996f5ad0", @@ -1345,7 +1434,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1875f1d59a53f1cb4c43949867d72bcfd857fa3b64feb88f41b78ddaa1a21cbf", @@ -1403,7 +1493,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "839a587109358e0aa81b8fb3d5fa74665fac303425ec544a4db7f6ba4e882dff", @@ -1476,7 +1567,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "15e4e382d913a743776b93d730fee3ca39bfa3ee203801205333bc9aad249612", @@ -1546,7 +1638,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "98357cec961c4c2bfef747bb204a06945ab55077166ec4367b644882136b8b39", @@ -1611,7 +1704,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "a5c5506777fb62aa98e6c45f1c85ab9ddf706a1f199e777c43f2288a6b4fdcab", @@ -1679,7 +1773,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c5b5f451fb5992e97ab50364467348c1899a2c8972d2d79ae5893bbac37eb51f", @@ -1744,7 +1839,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c5b5f451fb5992e97ab50364467348c1899a2c8972d2d79ae5893bbac37eb51f", @@ -1805,7 +1901,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "47cf79f20c6c62edb4162b3b232a57afc1bd0b57c7fd8389555276408a004776", @@ -1869,7 +1966,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b7269ddc59e4094a6581c653e0d5dc1e553e3a5fb6ffae47d3d094dff1cfe87b", @@ -1946,7 +2044,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "0b929def7bd9f44f5602f809bc0f9be30521f6b93d625525cf33b956993bfb22", @@ -1995,7 +2094,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b621e22f7cb9aac1a70a3362fde88bdfd31fc100e20f3f3c24a7b853536b4f50", @@ -2053,7 +2153,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "00d393f7fc9a8c17b3efccb44dad9d7e15fdaf2d942a3a455b52b5be016066dd", @@ -2112,7 +2213,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f4b7315ec080d05024d1f7bf6795dd234c6624970d8e272a245702de539feaa2", @@ -2165,7 +2267,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "cabc87a76ad8944e8a97a7cbf9c893a77ed7d1bd963c428c3786d663adb7f0dd", @@ -2317,7 +2420,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f98e1b5edfd376356eb211103bfae679380929bf7fbc40b3355a68e98111d091", @@ -2442,7 +2546,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "042c1d3a6eab693d2ea6b186a88aed038159e7eb581da80464bca7339fb9afe0", @@ -2495,7 +2600,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": true + "include_network_id": true, + "tag_cbor_sets": false }, "result": { "tx_hash": "4fcd4532bb0a9dfff2368e60be80d46819a92a9acfb2c64a7bf5975040789bac", @@ -2543,7 +2649,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8ea2765f1e46d84f02d8b25a5f0cf445aaeaadcab913e17e59388a4f898ca812", @@ -2593,7 +2700,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b90ad6dd0e1155559bd3e66f2fce91f4c85598d47c90922f01e121ea4f51f96e", @@ -2640,7 +2748,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "06d6587ddd79e000b6922c54069b78bb931b0cba06d97ba4171f3ce6590438d2", @@ -2687,7 +2796,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8606e5b69b5c40bd359d7bad6ed6f77810b8e8acba6cbca298c13f92b11178d4", @@ -2738,7 +2848,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8c328640f974f47cecbcaed56e46c3ba4f2ea6769e6e3528915deb3bb518aa06", @@ -2821,7 +2932,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b664d33bfcbfc1b54f34c813438ab4dac788ce715a3461f85142c4d19460e949", @@ -2871,7 +2983,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "719d33e1e2811f82046951dccee1a9af82d8fe1d8abc36d581a9eccc421c3204", @@ -2923,7 +3036,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "821e8163c5cf225c09f338f385c81e4326610f830e2abb89f9961e20741e6b70", @@ -3066,7 +3180,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f1bda77315626ce61c784f3e60a74128f29b7d00a0c8baca030464293da2d7c4", @@ -3119,7 +3234,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f2c5b7bd408add0234e2302d1b46cc72e0af8a88e6d12add95d230c51febdb04", @@ -3171,7 +3287,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "62baf68499258a35809faab713420d7d609dd0a1a3bbc5f6e3332917cf5ddece", @@ -3223,7 +3340,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ac4bdaaf2288a0108654919e7f89811b32274d54da834162e407635db39de4f4", diff --git a/common/tests/fixtures/cardano/sign_tx.multisig.failed.json b/common/tests/fixtures/cardano/sign_tx.multisig.failed.json index caf6fe7bc2..d6bcd7c370 100644 --- a/common/tests/fixtures/cardano/sign_tx.multisig.failed.json +++ b/common/tests/fixtures/cardano/sign_tx.multisig.failed.json @@ -45,7 +45,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -92,7 +93,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -142,7 +144,8 @@ "path": "m/1854'/1815'/2'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -192,7 +195,8 @@ "path": "m/1854'/1815'/2'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -240,7 +244,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -288,7 +293,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -335,7 +341,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -382,7 +389,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -433,7 +441,8 @@ "reference_inputs": [], "signing_mode": "MULTISIG_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -480,7 +489,8 @@ "reference_inputs": [], "signing_mode": "MULTISIG_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid withdrawal" @@ -522,7 +532,8 @@ "path": "m/1852'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -566,7 +577,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -608,7 +620,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -701,7 +714,8 @@ "path": "m/1855'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid witness request" @@ -748,7 +762,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -793,7 +808,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -835,7 +851,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -882,7 +899,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" diff --git a/common/tests/fixtures/cardano/sign_tx.multisig.json b/common/tests/fixtures/cardano/sign_tx.multisig.json index 44051c5004..a5e47f6749 100644 --- a/common/tests/fixtures/cardano/sign_tx.multisig.json +++ b/common/tests/fixtures/cardano/sign_tx.multisig.json @@ -94,7 +94,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "042c1d3a6eab693d2ea6b186a88aed038159e7eb581da80464bca7339fb9afe0", @@ -155,7 +156,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ed9fc2755091fa72b58e9dd06db05cce87c0c6f3962f587d5fc348fe478f0752", @@ -218,7 +220,8 @@ "path": "m/1854'/1815'/0'/2/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "26fb07b23368898665829283985ffe6c4cb2ec13758e83f467b78e5061f9619b", @@ -282,7 +285,8 @@ "path": "m/1854'/1815'/0'/2/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c4e70484c964eca910219047542632ac9a9ac81f11f5d5afd8bb1b0ef4366d69", @@ -351,7 +355,8 @@ "path": "m/1854'/1815'/0'/2/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "e02d252c5cad2a4d8f163069cd7f0822c7876d16af9ad8ac2d461655812b2d1b", @@ -464,7 +469,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": true + "include_network_id": true, + "tag_cbor_sets": false }, "result": { "tx_hash": "c3637e34529fae17dbbb90c58307df0cf3b818f4c034860fff362d1ea864cca4", @@ -527,7 +533,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8ea2765f1e46d84f02d8b25a5f0cf445aaeaadcab913e17e59388a4f898ca812", @@ -577,7 +584,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ee065ce429d8dbcc2432aa81706877f2eee4fc5031d1e1ae06fe993b9987b1be", @@ -631,7 +639,8 @@ "path": "m/1854'/1815'/0'/0/2" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "dae07f98f82878ecd1a6ad988c55f80870c2fb299705ed181458664906583e51", diff --git a/common/tests/fixtures/cardano/sign_tx.plutus.failed.json b/common/tests/fixtures/cardano/sign_tx.plutus.failed.json index 0f4e8065b2..973a528a5f 100644 --- a/common/tests/fixtures/cardano/sign_tx.plutus.failed.json +++ b/common/tests/fixtures/cardano/sign_tx.plutus.failed.json @@ -43,7 +43,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid collateral input" @@ -89,7 +90,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid address parameters" @@ -138,7 +140,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid required signer" @@ -185,7 +188,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid collateral return" @@ -233,7 +237,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid collateral return" diff --git a/common/tests/fixtures/cardano/sign_tx.plutus.json b/common/tests/fixtures/cardano/sign_tx.plutus.json index 8643c03915..b7fce3e634 100644 --- a/common/tests/fixtures/cardano/sign_tx.plutus.json +++ b/common/tests/fixtures/cardano/sign_tx.plutus.json @@ -42,7 +42,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "598dc85bc03cc682ee7ce8b4db798d836a0840429cae7fc62fe388e727a669a2", @@ -107,7 +108,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ff4a515636b38ed2b2b37f64501f75f04a25d05349b5b84c07f319b6f86372f4", @@ -139,6 +141,95 @@ ] } }, + { + "description": "Plutus transaction with required signers, reference input and 258-tagged sets", + "parameters": { + "protocol_magic": 764824073, + "network_id": 1, + "fee": 42, + "ttl": 10, + "validity_interval_start": null, + "certificates": [], + "withdrawals": [], + "auxiliary_data": null, + "inputs": [ + { + "prev_hash": "1af8fa0b754ff99253d983894e63a2b09cbb56c833ba18c3384210163f63dcfc", + "prev_index": 0 + } + ], + "outputs": [ + { + "address": "addr1q84sh2j72ux0l03fxndjnhctdg7hcppsaejafsa84vh7lwgmcs5wgus8qt4atk45lvt4xfxpjtwfhdmvchdf2m3u3hlsd5tq5r", + "amount": "1" + } + ], + "mint": [], + "script_data_hash": "d593fd793c377ac50a3169bb8378ffc257c944da31aa8f355dfa5a4f6ff89e02", + "collateral_inputs": [ + { + "path": "m/1852'/1815'/0'/0/0", + "prev_hash": "1af8fa0b754ff99253d983894e63a2b09cbb56c833ba18c3384210163f63dcfc", + "prev_index": 0 + } + ], + "required_signers": [ + { + "key_path": "m/1852'/1815'/0'/0/1" + }, + { + "key_path": "m/1854'/1815'/0'/0/0" + }, + { + "key_path": "m/1855'/1815'/0'" + }, + { + "key_hash": "3a7f09d3df4cf66a7399c2b05bfa234d5a29560c311fc5db4c490711" + } + ], + "collateral_return": null, + "total_collateral": null, + "reference_inputs": [ + { + "prev_hash": "1af8fa0b754ff99253d983894e63a2b09cbb56c833ba18c3384210163f63dcfc", + "prev_index": 0 + } + ], + "signing_mode": "PLUTUS_TRANSACTION", + "additional_witness_requests": [], + "include_network_id": false, + "tag_cbor_sets": true + }, + "result": { + "tx_hash": "9cb88fd25d43f4e8140be00dd9538c59b0e8fe1f3186890421d8820cf33e6be7", + "witnesses": [ + { + "type": 1, + "pub_key": "5d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c1", + "signature": "5f9426495c0fe515a2f933cb43a2d3f4de32b5102e32ce8d71e1d3718fda2b6a91c6845f9d612787096813c8be7aea4bc140c1288ac24f6bedf9d6c105ff7c05", + "chain_code": null + }, + { + "type": 1, + "pub_key": "36a8ef21d5b98fdf23a27325cf643deaac35e912c835e35037f23d1061ae5b16", + "signature": "a2251fc5daa777643db0c12becf35b8d75d14743888beb7f48da0a5c2428bfade90926b4df6f70a9d967b26d6a09208e6278d210fbfc84a5a01ad7d0fd04d90e", + "chain_code": null + }, + { + "type": 1, + "pub_key": "b10be5c0d11ad8292bbe69e220ca0cfbe154610b3041a8e72f9d515c226ab3b1", + "signature": "0a457eca4d1dac83f9f794f07215e625d4af4db361ce303f8744efc609714f4f075805e0ad81c9127bd0d8ad5f22a21b6d166c2d9cab2c8309d90c493956ca07", + "chain_code": null + }, + { + "type": 1, + "pub_key": "b75258e4f61eb7b313d8554c2fe10673cf214ca2d762bfd53ec3b7846e2ee872", + "signature": "f60e26cb4152179ebe9af3beae7c54abe04d4d195efe5cebde1d007084dcce3c664fc43629da524ae33ba9fe40bba8a8f36964845c196fafc182459ad8f7f60e", + "chain_code": null + } + ] + } + }, { "description": "Simple Plutus transaction with additional witness requests", "parameters": { @@ -187,7 +278,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "598dc85bc03cc682ee7ce8b4db798d836a0840429cae7fc62fe388e727a669a2", @@ -255,7 +347,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "3fbf931170d2ed6df95a35572d850b40bab4b350763872cb9110f93e9ce8668b", @@ -316,7 +409,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "08bd557131d89c5008cf79f7bdf9c47d27ad7c00b3a1a19dfecedd7c1f7508d8", @@ -439,7 +533,8 @@ "path": "m/1855'/1815'/0'" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f1ff85026488d1ea60950d9d1819ee00a012560074cd60435f2510e917d86a7f", @@ -512,7 +607,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "0c4a8ec4a0e6718d81a391d09bbc7d48e14f879c94b7e48a35092ef532ebf597", @@ -587,7 +683,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "53d7a7ee887178a08ac70ff2088f8bfbafc7b6bcd5a54e79a686b013455d5e25", @@ -663,7 +760,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c55ef20e0c8da066bab5221a5c010c32d90905753b0257576e34d7e639f65c9d", @@ -744,7 +842,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "b3ccc29173719973363988763826eb853cb314df8dde07fcf82dab9961d47c25", @@ -825,7 +924,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "717e9b63b08fda304bf7625d5df4149200b28b740db9b66082961a1d2f938ccd", @@ -912,7 +1012,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "baabb4e6dced60de330a089590ea38b7bbe505bbf9c785ef88078242f0ea9860", @@ -981,7 +1082,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "bb4d26c40c67d23ca74bb2e4ad28f586567b99907b86c0337fb7d8f4cde90100", @@ -1035,7 +1137,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "5581fb7a99b8e0ebaf552a5d7157cebb37c9624602d78d86337dfbf838fb2e13", @@ -1089,7 +1192,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "e5beff2153154ab3dba4ff5c638f40ae8c1594c67aee3310bd19997f5013e47b", @@ -1143,7 +1247,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "2399f1743e4074d3e18a742898c3e4d5eac66a7284a949ddcd1eac004498720f", @@ -1197,7 +1302,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8c131e38f378d141deb05d4bf2eb2d13bb75d6363dd470a1f524ba027eff566a", @@ -1263,7 +1369,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "6c5ccc9f6ec1b0b25ccb81ae533b9d46e545af4b745f7e287c967f13a152d537", @@ -1331,7 +1438,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c95a6f99f5763d89926b44b8a0f7fa12f14ee3978c120e42c581a3f47638d490", @@ -1383,7 +1491,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "3a2a702ed7a907323a7f6ef7bf5d5ad4685bd1a605a0594e535b93597a33b574", @@ -1449,7 +1558,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "6852e7285d0a187f692bdb2ea93451f96952303c54168d5bd7c428a78d0fac07", @@ -1517,7 +1627,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1bef5859c3e23fad63141b61e03aa45537c5ec10ad7c4780a4ed198c17bee165", @@ -1574,7 +1685,8 @@ ], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "98657251d3014dfd98e1eab94bf0a7f6252968d683df9bc8585bf431b4c72a51", diff --git a/common/tests/fixtures/cardano/sign_tx.show_details.json b/common/tests/fixtures/cardano/sign_tx.show_details.json index 7d89e6cedf..3bf0151414 100644 --- a/common/tests/fixtures/cardano/sign_tx.show_details.json +++ b/common/tests/fixtures/cardano/sign_tx.show_details.json @@ -37,7 +37,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "73e09bdebf98a9e0f17f86a2d11e0f14f4f8dae77cdf26ff1678e821f20c8db6", @@ -94,7 +95,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "22c67f12e6f6aa0f2f09fd27d472b19c7208ccd7c3af4b09604fd5d462c1de2b", @@ -148,7 +150,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8ea2765f1e46d84f02d8b25a5f0cf445aaeaadcab913e17e59388a4f898ca812", @@ -199,7 +202,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "8c328640f974f47cecbcaed56e46c3ba4f2ea6769e6e3528915deb3bb518aa06", @@ -257,7 +261,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "ea6d50d786a7c252451704379a05bb21d3f9ad47d043d90fcc88cad5b78ca3bc", @@ -311,7 +316,8 @@ "path": "m/1854'/1815'/0'/0/2" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "dae07f98f82878ecd1a6ad988c55f80870c2fb299705ed181458664906583e51", @@ -385,7 +391,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "1bef5859c3e23fad63141b61e03aa45537c5ec10ad7c4780a4ed198c17bee165", @@ -442,7 +449,8 @@ ], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "98657251d3014dfd98e1eab94bf0a7f6252968d683df9bc8585bf431b4c72a51", @@ -510,7 +518,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "15e4e382d913a743776b93d730fee3ca39bfa3ee203801205333bc9aad249612", diff --git a/common/tests/fixtures/cardano/sign_tx.slip39.json b/common/tests/fixtures/cardano/sign_tx.slip39.json index 3e0b89907c..a706a91cc1 100644 --- a/common/tests/fixtures/cardano/sign_tx.slip39.json +++ b/common/tests/fixtures/cardano/sign_tx.slip39.json @@ -41,7 +41,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "73e09bdebf98a9e0f17f86a2d11e0f14f4f8dae77cdf26ff1678e821f20c8db6", @@ -93,7 +94,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "4c43ce4c72f145b145ae7add414722735e250d048f61c4585a5becafcbffa6ae", @@ -145,7 +147,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "93a2c3cfb67ef1e4bae167b0f443c3370664bdb9171bc9cd41bad98e5cc049b2", diff --git a/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.failed.json b/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.failed.json index b13d4f77f0..8548de8c64 100644 --- a/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.failed.json +++ b/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.failed.json @@ -58,7 +58,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -121,7 +122,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -181,7 +183,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -241,7 +244,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -322,7 +326,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -365,7 +370,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -430,7 +436,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -490,7 +497,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Stakepool registration transaction can only contain the pool owner witness request" @@ -549,7 +557,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "ProcessError: Invalid address" @@ -608,7 +617,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "ProcessError: Invalid address" @@ -701,7 +711,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid pool owner staking path" @@ -794,7 +805,8 @@ "reference_inputs": [], "signing_mode": "ORDINARY_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -887,7 +899,8 @@ "reference_inputs": [], "signing_mode": "MULTISIG_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -980,7 +993,8 @@ "reference_inputs": [], "signing_mode": "PLUTUS_TRANSACTION", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid certificate" @@ -1077,7 +1091,8 @@ "path": "m/1854'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Stakepool registration transaction can only contain the pool owner witness request" @@ -1174,7 +1189,8 @@ "path": "m/1855'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Stakepool registration transaction can only contain the pool owner witness request" @@ -1298,7 +1314,8 @@ "path": "m/1855'/1815'/0'/0/0" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1377,7 +1394,7 @@ } ], "outputs": [ - { + { "addressType": 0, "path": "m/1852'/1815'/0'/0/0", "stakingPath": "m/1852'/1815'/0'/2/0", @@ -1393,7 +1410,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -1487,7 +1505,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid output" @@ -1580,7 +1599,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1679,7 +1699,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1775,7 +1796,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1868,7 +1890,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -1966,7 +1989,8 @@ ], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -2063,7 +2087,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Invalid tx signing request" @@ -2160,7 +2185,8 @@ "path": "m/1852'/1815'/0'/2/1" } ], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "error_message": "Stakepool registration transaction can only contain the pool owner witness request" diff --git a/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.json b/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.json index 033c577cc7..6c94b85033 100644 --- a/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.json +++ b/common/tests/fixtures/cardano/sign_tx_stake_pool_registration.json @@ -91,7 +91,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "e3b9a5657bf62609465a930c8359d774c73944973cfc5a104a0f0ed1e1e8db21", @@ -192,7 +193,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "c0d944db15446cf05e8db014685414c928d4d9a3e96aea229234be56eeae34c5", @@ -294,7 +296,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "f3d62758ff2f520e7256e65be9d8165da60c7979a97202c19d625709412411fd", @@ -362,7 +365,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "504f9214142996e0b7e315103b25d88a4afa3d01dd5be22376921b52b01483c3", @@ -430,7 +434,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "12921b4f8e77f815e0c8ed97c541fbd5ba38a6d3323f4ff1af0cb934b8ac6b39", @@ -533,7 +538,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "880fafab19a36407e9af300c2905e2f6bc8a8debd8b625005f56994d242ba460", @@ -634,7 +640,8 @@ "reference_inputs": [], "signing_mode": "POOL_REGISTRATION_AS_OWNER", "additional_witness_requests": [], - "include_network_id": false + "include_network_id": false, + "tag_cbor_sets": false }, "result": { "tx_hash": "36d7e5b9acc9487b9190c3bbe8fa0ec60a6fd66b3c0af7cfd8a015a18b00d765", diff --git a/core/src/apps/cardano/helpers/hash_builder_collection.py b/core/src/apps/cardano/helpers/hash_builder_collection.py index 430a7426bc..22b6d238e1 100644 --- a/core/src/apps/cardano/helpers/hash_builder_collection.py +++ b/core/src/apps/cardano/helpers/hash_builder_collection.py @@ -90,6 +90,19 @@ def _header_bytes(self) -> bytes: return cbor.create_array_header(self.size) +class HashBuilderSet(HashBuilderList, Generic[T]): + def __init__(self, size: int, *, tagged: bool) -> None: + super().__init__(size) + self.tagged = tagged + + def _header_bytes(self) -> bytes: + return ( + cbor.create_tagged_set_header(self.size) + if self.tagged + else cbor.create_array_header(self.size) + ) + + class HashBuilderDict(HashBuilderCollection, Generic[K, V]): key_order_error: wire.ProcessError previous_encoded_key: bytes diff --git a/core/src/apps/cardano/sign_tx/signer.py b/core/src/apps/cardano/sign_tx/signer.py index d2c66c09e9..7ef83a320a 100644 --- a/core/src/apps/cardano/sign_tx/signer.py +++ b/core/src/apps/cardano/sign_tx/signer.py @@ -16,7 +16,11 @@ from .. import addresses, certificates, layout, seed from ..helpers import INPUT_PREV_HASH_SIZE, LOVELACE_MAX_SUPPLY from ..helpers.credential import Credential -from ..helpers.hash_builder_collection import HashBuilderDict, HashBuilderList +from ..helpers.hash_builder_collection import ( + HashBuilderDict, + HashBuilderList, + HashBuilderSet, +) from ..helpers.paths import SCHEMA_STAKING from ..helpers.utils import derive_public_key @@ -140,10 +144,13 @@ async def _processs_tx_init(self) -> None: msg = self.msg # local_cache_attribute add = self.tx_dict.add # local_cache_attribute HBL = HashBuilderList # local_cache_global + HBS = HashBuilderSet # local_cache_global - inputs_list: HashBuilderList[tuple[bytes, int]] = HBL(msg.inputs_count) - with add(_TX_BODY_KEY_INPUTS, inputs_list): - await self._process_inputs(inputs_list) + inputs_set: HashBuilderSet[tuple[bytes, int]] = HBS( + msg.inputs_count, tagged=self.msg.tag_cbor_sets + ) + with add(_TX_BODY_KEY_INPUTS, inputs_set): + await self._process_inputs(inputs_set) outputs_list: HashBuilderList = HBL(msg.outputs_count) with add(_TX_BODY_KEY_OUTPUTS, outputs_list): @@ -155,9 +162,11 @@ async def _processs_tx_init(self) -> None: add(_TX_BODY_KEY_TTL, msg.ttl) if msg.certificates_count > 0: - certificates_list: HashBuilderList = HBL(msg.certificates_count) - with add(_TX_BODY_KEY_CERTIFICATES, certificates_list): - await self._process_certificates(certificates_list) + certificates_set: HashBuilderSet = HBS( + msg.certificates_count, tagged=self.msg.tag_cbor_sets + ) + with add(_TX_BODY_KEY_CERTIFICATES, certificates_set): + await self._process_certificates(certificates_set) if msg.withdrawals_count > 0: withdrawals_dict: HashBuilderDict[bytes, int] = HashBuilderDict( @@ -184,18 +193,18 @@ async def _processs_tx_init(self) -> None: await self._process_script_data_hash() if msg.collateral_inputs_count > 0: - collateral_inputs_list: HashBuilderList[tuple[bytes, int]] = HBL( - msg.collateral_inputs_count + collateral_inputs_set: HashBuilderSet[tuple[bytes, int]] = HBS( + msg.collateral_inputs_count, tagged=self.msg.tag_cbor_sets ) - with add(_TX_BODY_KEY_COLLATERAL_INPUTS, collateral_inputs_list): - await self._process_collateral_inputs(collateral_inputs_list) + with add(_TX_BODY_KEY_COLLATERAL_INPUTS, collateral_inputs_set): + await self._process_collateral_inputs(collateral_inputs_set) if msg.required_signers_count > 0: - required_signers_list: HashBuilderList[bytes] = HBL( - msg.required_signers_count + required_signers_set: HashBuilderSet[bytes] = HBS( + msg.required_signers_count, tagged=self.msg.tag_cbor_sets ) - with add(_TX_BODY_KEY_REQUIRED_SIGNERS, required_signers_list): - await self._process_required_signers(required_signers_list) + with add(_TX_BODY_KEY_REQUIRED_SIGNERS, required_signers_set): + await self._process_required_signers(required_signers_set) if msg.include_network_id: add(_TX_BODY_KEY_NETWORK_ID, msg.network_id) @@ -207,11 +216,11 @@ async def _processs_tx_init(self) -> None: add(_TX_BODY_KEY_TOTAL_COLLATERAL, msg.total_collateral) if msg.reference_inputs_count > 0: - reference_inputs_list: HashBuilderList[tuple[bytes, int]] = HBL( - msg.reference_inputs_count + reference_inputs_set: HashBuilderSet[tuple[bytes, int]] = HBS( + msg.reference_inputs_count, tagged=self.msg.tag_cbor_sets ) - with add(_TX_BODY_KEY_REFERENCE_INPUTS, reference_inputs_list): - await self._process_reference_inputs(reference_inputs_list) + with add(_TX_BODY_KEY_REFERENCE_INPUTS, reference_inputs_set): + await self._process_reference_inputs(reference_inputs_set) def _validate_tx_init(self) -> None: from ..helpers.utils import validate_network_info @@ -658,7 +667,7 @@ async def _process_reference_script( # certificates - async def _process_certificates(self, certificates_list: HashBuilderList) -> None: + async def _process_certificates(self, certificates_set: HashBuilderSet) -> None: for _ in range(self.msg.certificates_count): certificate: messages.CardanoTxCertificate = await ctx_call( CardanoTxItemAck(), messages.CardanoTxCertificate @@ -673,18 +682,18 @@ async def _process_certificates(self, certificates_list: HashBuilderList) -> Non pool_items_list: HashBuilderList = HashBuilderList( _POOL_REGISTRATION_CERTIFICATE_ITEMS_COUNT ) - with certificates_list.append(pool_items_list): + with certificates_set.append(pool_items_list): for item in certificates.cborize_pool_registration_init( certificate ): pool_items_list.append(item) - pool_owners_list: HashBuilderList[bytes] = HashBuilderList( - pool_parameters.owners_count + pool_owners_set: HashBuilderSet[bytes] = HashBuilderSet( + pool_parameters.owners_count, tagged=self.msg.tag_cbor_sets ) - with pool_items_list.append(pool_owners_list): + with pool_items_list.append(pool_owners_set): await self._process_pool_owners( - pool_owners_list, pool_parameters.owners_count + pool_owners_set, pool_parameters.owners_count ) relays_list: HashBuilderList[cbor.CborSequence] = HashBuilderList( @@ -699,7 +708,7 @@ async def _process_certificates(self, certificates_list: HashBuilderList) -> Non certificates.cborize_pool_metadata(pool_parameters.metadata) ) else: - certificates_list.append( + certificates_set.append( certificates.cborize(self.keychain, certificate) ) @@ -733,7 +742,7 @@ async def _show_certificate( # pool owners async def _process_pool_owners( - self, pool_owners_list: HashBuilderList[bytes], owners_count: int + self, pool_owners_set: HashBuilderSet[bytes], owners_count: int ) -> None: owners_as_path_count = 0 for _ in range(owners_count): @@ -742,7 +751,7 @@ async def _process_pool_owners( ) certificates.validate_pool_owner(owner, self.account_path_checker) await self._show_pool_owner(owner) - pool_owners_list.append( + pool_owners_set.append( certificates.cborize_pool_owner(self.keychain, owner) ) @@ -933,7 +942,7 @@ async def _show_collateral_input( # required signers async def _process_required_signers( - self, required_signers_list: HashBuilderList[bytes] + self, required_signers_set: HashBuilderSet[bytes] ) -> None: from ..helpers.utils import get_public_key_hash @@ -949,7 +958,7 @@ async def _process_required_signers( key_hash = required_signer.key_hash or get_public_key_hash( self.keychain, required_signer.key_path ) - required_signers_list.append(key_hash) + required_signers_set.append(key_hash) def _validate_required_signer( self, required_signer: messages.CardanoTxRequiredSigner diff --git a/core/src/apps/common/cbor.py b/core/src/apps/common/cbor.py index 7edaf9cac2..c3cb8c8ab7 100644 --- a/core/src/apps/common/cbor.py +++ b/core/src/apps/common/cbor.py @@ -43,7 +43,11 @@ _CBOR_TRUE = const(0x15) _CBOR_NULL = const(0x16) _CBOR_BREAK = const(0x1F) -_CBOR_RAW_TAG = const(0x18) + + +# See https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml +_CBOR_RAW_TAG = const(0x18) # Tag 24 +_CBOR_SET_TAG = const(0x102) # Tag 258 def _header(typ: int, l: int) -> bytes: @@ -302,6 +306,10 @@ def create_embedded_cbor_bytes_header(size: int) -> bytes: return _header(_CBOR_TAG, _CBOR_RAW_TAG) + _header(_CBOR_BYTE_STRING, size) +def create_tagged_set_header(size: int) -> bytes: + return _header(_CBOR_TAG, _CBOR_SET_TAG) + _header(_CBOR_ARRAY, size) + + def precedes(prev: bytes, curr: bytes) -> bool: """ Returns True if `prev` is smaller than `curr` with regards to diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index edf7133138..f778062021 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -1393,6 +1393,7 @@ class CardanoSignTxInit(protobuf.MessageType): total_collateral: "int | None" reference_inputs_count: "int" chunkify: "bool | None" + tag_cbor_sets: "bool" def __init__( self, @@ -1419,6 +1420,7 @@ def __init__( total_collateral: "int | None" = None, reference_inputs_count: "int | None" = None, chunkify: "bool | None" = None, + tag_cbor_sets: "bool | None" = None, ) -> None: pass diff --git a/core/tests/test_apps.common.cbor.py b/core/tests/test_apps.common.cbor.py index 07750d940a..0de5777f75 100644 --- a/core/tests/test_apps.common.cbor.py +++ b/core/tests/test_apps.common.cbor.py @@ -7,6 +7,7 @@ create_array_header, create_embedded_cbor_bytes_header, create_map_header, + create_tagged_set_header, decode, encode, encode_streamed, @@ -30,6 +31,22 @@ def test_create_array_header(self): with self.assertRaises(NotImplementedError): create_array_header(2**64) + def test_create_tagged_set_header(self): + test_vectors = [ + (0, 'd9010280'), + (23, 'd9010297'), + ((2 ** 8) - 1, 'd9010298ff'), + ((2 ** 16) - 1, 'd9010299ffff'), + ((2 ** 32) - 1, 'd901029affffffff'), + ((2 ** 64) - 1, 'd901029bffffffffffffffff'), + ] + for val, header_hex in test_vectors: + header = unhexlify(header_hex) + self.assertEqual(create_tagged_set_header(val), header) + + with self.assertRaises(NotImplementedError): + create_tagged_set_header(2 ** 64) + def test_create_map_header(self): test_vectors = [ (0, "a0"), diff --git a/python/src/trezorlib/cardano.py b/python/src/trezorlib/cardano.py index 8685b77db4..49d2c6463f 100644 --- a/python/src/trezorlib/cardano.py +++ b/python/src/trezorlib/cardano.py @@ -901,6 +901,7 @@ def sign_tx( derivation_type: messages.CardanoDerivationType = messages.CardanoDerivationType.ICARUS, include_network_id: bool = False, chunkify: bool = False, + tag_cbor_sets: bool = False, ) -> Dict[str, Any]: UNEXPECTED_RESPONSE_ERROR = exceptions.TrezorException("Unexpected response") @@ -938,6 +939,7 @@ def sign_tx( derivation_type=derivation_type, include_network_id=include_network_id, chunkify=chunkify, + tag_cbor_sets=tag_cbor_sets, ) ) if not isinstance(response, messages.CardanoTxItemAck): diff --git a/python/src/trezorlib/cli/cardano.py b/python/src/trezorlib/cli/cardano.py index 91e3a540af..23647ab8ea 100644 --- a/python/src/trezorlib/cli/cardano.py +++ b/python/src/trezorlib/cli/cardano.py @@ -61,6 +61,7 @@ def cli() -> None: ) @click.option("-i", "--include-network-id", is_flag=True) @click.option("-C", "chunkify", is_flag=True) +@click.option("-T", "--tag-cbor-sets", is_flag=True) @with_client def sign_tx( client: "TrezorClient", @@ -72,6 +73,7 @@ def sign_tx( derivation_type: messages.CardanoDerivationType, include_network_id: bool, chunkify: bool, + tag_cbor_sets: bool, ) -> cardano.SignTxResponse: """Sign Cardano transaction.""" transaction = json.load(file) @@ -146,6 +148,7 @@ def sign_tx( derivation_type=derivation_type, include_network_id=include_network_id, chunkify=chunkify, + tag_cbor_sets=tag_cbor_sets, ) sign_tx_response["tx_hash"] = sign_tx_response["tx_hash"].hex() diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index f50292123d..04aea96b16 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -2388,6 +2388,7 @@ class CardanoSignTxInit(protobuf.MessageType): 20: protobuf.Field("total_collateral", "uint64", repeated=False, required=False, default=None), 21: protobuf.Field("reference_inputs_count", "uint32", repeated=False, required=False, default=0), 22: protobuf.Field("chunkify", "bool", repeated=False, required=False, default=None), + 23: protobuf.Field("tag_cbor_sets", "bool", repeated=False, required=False, default=False), } def __init__( @@ -2415,6 +2416,7 @@ def __init__( total_collateral: Optional["int"] = None, reference_inputs_count: Optional["int"] = 0, chunkify: Optional["bool"] = None, + tag_cbor_sets: Optional["bool"] = False, ) -> None: self.signing_mode = signing_mode self.protocol_magic = protocol_magic @@ -2438,6 +2440,7 @@ def __init__( self.total_collateral = total_collateral self.reference_inputs_count = reference_inputs_count self.chunkify = chunkify + self.tag_cbor_sets = tag_cbor_sets class CardanoTxInput(protobuf.MessageType): diff --git a/rust/trezor-client/src/protos/generated/messages_cardano.rs b/rust/trezor-client/src/protos/generated/messages_cardano.rs index b7c5d8fd74..2443ce5f0b 100644 --- a/rust/trezor-client/src/protos/generated/messages_cardano.rs +++ b/rust/trezor-client/src/protos/generated/messages_cardano.rs @@ -2289,6 +2289,8 @@ pub struct CardanoSignTxInit { pub reference_inputs_count: ::std::option::Option<u32>, // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoSignTxInit.chunkify) pub chunkify: ::std::option::Option<bool>, + // @@protoc_insertion_point(field:hw.trezor.messages.cardano.CardanoSignTxInit.tag_cbor_sets) + pub tag_cbor_sets: ::std::option::Option<bool>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.cardano.CardanoSignTxInit.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -2746,8 +2748,27 @@ impl CardanoSignTxInit { self.chunkify = ::std::option::Option::Some(v); } + // optional bool tag_cbor_sets = 23; + + pub fn tag_cbor_sets(&self) -> bool { + self.tag_cbor_sets.unwrap_or(false) + } + + pub fn clear_tag_cbor_sets(&mut self) { + self.tag_cbor_sets = ::std::option::Option::None; + } + + pub fn has_tag_cbor_sets(&self) -> bool { + self.tag_cbor_sets.is_some() + } + + // Param is passed by value, moved + pub fn set_tag_cbor_sets(&mut self, v: bool) { + self.tag_cbor_sets = ::std::option::Option::Some(v); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(22); + let mut fields = ::std::vec::Vec::with_capacity(23); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "signing_mode", @@ -2859,6 +2880,11 @@ impl CardanoSignTxInit { |m: &CardanoSignTxInit| { &m.chunkify }, |m: &mut CardanoSignTxInit| { &mut m.chunkify }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "tag_cbor_sets", + |m: &CardanoSignTxInit| { &m.tag_cbor_sets }, + |m: &mut CardanoSignTxInit| { &mut m.tag_cbor_sets }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CardanoSignTxInit>( "CardanoSignTxInit", fields, @@ -2985,6 +3011,9 @@ impl ::protobuf::Message for CardanoSignTxInit { 176 => { self.chunkify = ::std::option::Option::Some(is.read_bool()?); }, + 184 => { + self.tag_cbor_sets = ::std::option::Option::Some(is.read_bool()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -3063,6 +3092,9 @@ impl ::protobuf::Message for CardanoSignTxInit { if let Some(v) = self.chunkify { my_size += 2 + 1; } + if let Some(v) = self.tag_cbor_sets { + my_size += 2 + 1; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -3135,6 +3167,9 @@ impl ::protobuf::Message for CardanoSignTxInit { if let Some(v) = self.chunkify { os.write_bool(22, v)?; } + if let Some(v) = self.tag_cbor_sets { + os.write_bool(23, v)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -3174,6 +3209,7 @@ impl ::protobuf::Message for CardanoSignTxInit { self.total_collateral = ::std::option::Option::None; self.reference_inputs_count = ::std::option::Option::None; self.chunkify = ::std::option::Option::None; + self.tag_cbor_sets = ::std::option::Option::None; self.special_fields.clear(); } @@ -3201,6 +3237,7 @@ impl ::protobuf::Message for CardanoSignTxInit { total_collateral: ::std::option::Option::None, reference_inputs_count: ::std::option::Option::None, chunkify: ::std::option::Option::None, + tag_cbor_sets: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -10440,7 +10477,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x12Z\n\x0fderivation_type\x18\x03\x20\x02(\x0e21.hw.trezor.messages.car\ dano.CardanoDerivationTypeR\x0ederivationType\"a\n\x10CardanoPublicKey\ \x12\x12\n\x04xpub\x18\x01\x20\x02(\tR\x04xpub\x129\n\x04node\x18\x02\ - \x20\x02(\x0b2%.hw.trezor.messages.common.HDNodeTypeR\x04node\"\xb3\x08\ + \x20\x02(\x0b2%.hw.trezor.messages.common.HDNodeTypeR\x04node\"\xde\x08\ \n\x11CardanoSignTxInit\x12S\n\x0csigning_mode\x18\x01\x20\x02(\x0e20.hw\ .trezor.messages.cardano.CardanoTxSigningModeR\x0bsigningMode\x12%\n\x0e\ protocol_magic\x18\x02\x20\x02(\rR\rprotocolMagic\x12\x1d\n\nnetwork_id\ @@ -10463,124 +10500,125 @@ static file_descriptor_proto_data: &'static [u8] = b"\ turn\x18\x13\x20\x01(\x08:\x05falseR\x13hasCollateralReturn\x12)\n\x10to\ tal_collateral\x18\x14\x20\x01(\x04R\x0ftotalCollateral\x127\n\x16refere\ nce_inputs_count\x18\x15\x20\x01(\r:\x010R\x14referenceInputsCount\x12\ - \x1a\n\x08chunkify\x18\x16\x20\x01(\x08R\x08chunkify\"L\n\x0eCardanoTxIn\ - put\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\n\npr\ - ev_index\x18\x02\x20\x02(\rR\tprevIndex\"\xc5\x03\n\x0fCardanoTxOutput\ - \x12\x18\n\x07address\x18\x01\x20\x01(\tR\x07address\x12g\n\x12address_p\ - arameters\x18\x02\x20\x01(\x0b28.hw.trezor.messages.cardano.CardanoAddre\ - ssParametersTypeR\x11addressParameters\x12\x16\n\x06amount\x18\x03\x20\ - \x02(\x04R\x06amount\x12,\n\x12asset_groups_count\x18\x04\x20\x02(\rR\ - \x10assetGroupsCount\x12\x1d\n\ndatum_hash\x18\x05\x20\x01(\x0cR\tdatumH\ - ash\x12d\n\x06format\x18\x06\x20\x01(\x0e2>.hw.trezor.messages.cardano.C\ - ardanoTxOutputSerializationFormat:\x0cARRAY_LEGACYR\x06format\x12-\n\x11\ - inline_datum_size\x18\x07\x20\x01(\r:\x010R\x0finlineDatumSize\x125\n\ - \x15reference_script_size\x18\x08\x20\x01(\r:\x010R\x13referenceScriptSi\ - ze\"S\n\x11CardanoAssetGroup\x12\x1b\n\tpolicy_id\x18\x01\x20\x02(\x0cR\ - \x08policyId\x12!\n\x0ctokens_count\x18\x02\x20\x02(\rR\x0btokensCount\"\ - q\n\x0cCardanoToken\x12(\n\x10asset_name_bytes\x18\x01\x20\x02(\x0cR\x0e\ - assetNameBytes\x12\x16\n\x06amount\x18\x02\x20\x01(\x04R\x06amount\x12\ - \x1f\n\x0bmint_amount\x18\x03\x20\x01(\x12R\nmintAmount\"/\n\x19CardanoT\ - xInlineDatumChunk\x12\x12\n\x04data\x18\x01\x20\x02(\x0cR\x04data\"3\n\ - \x1dCardanoTxReferenceScriptChunk\x12\x12\n\x04data\x18\x01\x20\x02(\x0c\ - R\x04data\"f\n\x10CardanoPoolOwner\x12(\n\x10staking_key_path\x18\x01\ - \x20\x03(\rR\x0estakingKeyPath\x12(\n\x10staking_key_hash\x18\x02\x20\ - \x01(\x0cR\x0estakingKeyHash\"\xd9\x01\n\x1aCardanoPoolRelayParameters\ + \x1a\n\x08chunkify\x18\x16\x20\x01(\x08R\x08chunkify\x12)\n\rtag_cbor_se\ + ts\x18\x17\x20\x01(\x08:\x05falseR\x0btagCborSets\"L\n\x0eCardanoTxInput\ + \x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\n\nprev_\ + index\x18\x02\x20\x02(\rR\tprevIndex\"\xc5\x03\n\x0fCardanoTxOutput\x12\ + \x18\n\x07address\x18\x01\x20\x01(\tR\x07address\x12g\n\x12address_param\ + eters\x18\x02\x20\x01(\x0b28.hw.trezor.messages.cardano.CardanoAddressPa\ + rametersTypeR\x11addressParameters\x12\x16\n\x06amount\x18\x03\x20\x02(\ + \x04R\x06amount\x12,\n\x12asset_groups_count\x18\x04\x20\x02(\rR\x10asse\ + tGroupsCount\x12\x1d\n\ndatum_hash\x18\x05\x20\x01(\x0cR\tdatumHash\x12d\ + \n\x06format\x18\x06\x20\x01(\x0e2>.hw.trezor.messages.cardano.CardanoTx\ + OutputSerializationFormat:\x0cARRAY_LEGACYR\x06format\x12-\n\x11inline_d\ + atum_size\x18\x07\x20\x01(\r:\x010R\x0finlineDatumSize\x125\n\x15referen\ + ce_script_size\x18\x08\x20\x01(\r:\x010R\x13referenceScriptSize\"S\n\x11\ + CardanoAssetGroup\x12\x1b\n\tpolicy_id\x18\x01\x20\x02(\x0cR\x08policyId\ + \x12!\n\x0ctokens_count\x18\x02\x20\x02(\rR\x0btokensCount\"q\n\x0cCarda\ + noToken\x12(\n\x10asset_name_bytes\x18\x01\x20\x02(\x0cR\x0eassetNameByt\ + es\x12\x16\n\x06amount\x18\x02\x20\x01(\x04R\x06amount\x12\x1f\n\x0bmint\ + _amount\x18\x03\x20\x01(\x12R\nmintAmount\"/\n\x19CardanoTxInlineDatumCh\ + unk\x12\x12\n\x04data\x18\x01\x20\x02(\x0cR\x04data\"3\n\x1dCardanoTxRef\ + erenceScriptChunk\x12\x12\n\x04data\x18\x01\x20\x02(\x0cR\x04data\"f\n\ + \x10CardanoPoolOwner\x12(\n\x10staking_key_path\x18\x01\x20\x03(\rR\x0es\ + takingKeyPath\x12(\n\x10staking_key_hash\x18\x02\x20\x01(\x0cR\x0estakin\ + gKeyHash\"\xd9\x01\n\x1aCardanoPoolRelayParameters\x12D\n\x04type\x18\ + \x01\x20\x02(\x0e20.hw.trezor.messages.cardano.CardanoPoolRelayTypeR\x04\ + type\x12!\n\x0cipv4_address\x18\x02\x20\x01(\x0cR\x0bipv4Address\x12!\n\ + \x0cipv6_address\x18\x03\x20\x01(\x0cR\x0bipv6Address\x12\x1b\n\thost_na\ + me\x18\x04\x20\x01(\tR\x08hostName\x12\x12\n\x04port\x18\x05\x20\x01(\rR\ + \x04port\"?\n\x17CardanoPoolMetadataType\x12\x10\n\x03url\x18\x01\x20\ + \x02(\tR\x03url\x12\x12\n\x04hash\x18\x02\x20\x02(\x0cR\x04hash\"\x9a\ + \x03\n\x19CardanoPoolParametersType\x12\x17\n\x07pool_id\x18\x01\x20\x02\ + (\x0cR\x06poolId\x12\x20\n\x0cvrf_key_hash\x18\x02\x20\x02(\x0cR\nvrfKey\ + Hash\x12\x16\n\x06pledge\x18\x03\x20\x02(\x04R\x06pledge\x12\x12\n\x04co\ + st\x18\x04\x20\x02(\x04R\x04cost\x12)\n\x10margin_numerator\x18\x05\x20\ + \x02(\x04R\x0fmarginNumerator\x12-\n\x12margin_denominator\x18\x06\x20\ + \x02(\x04R\x11marginDenominator\x12%\n\x0ereward_account\x18\x07\x20\x02\ + (\tR\rrewardAccount\x12O\n\x08metadata\x18\n\x20\x01(\x0b23.hw.trezor.me\ + ssages.cardano.CardanoPoolMetadataTypeR\x08metadata\x12!\n\x0cowners_cou\ + nt\x18\x0b\x20\x02(\rR\x0bownersCount\x12!\n\x0crelays_count\x18\x0c\x20\ + \x02(\rR\x0brelaysCount\"\x8a\x01\n\x0bCardanoDRep\x12?\n\x04type\x18\ + \x01\x20\x02(\x0e2+.hw.trezor.messages.cardano.CardanoDRepTypeR\x04type\ + \x12\x19\n\x08key_hash\x18\x02\x20\x01(\x0cR\x07keyHash\x12\x1f\n\x0bscr\ + ipt_hash\x18\x03\x20\x01(\x0cR\nscriptHash\"\xf9\x02\n\x14CardanoTxCerti\ + ficate\x12F\n\x04type\x18\x01\x20\x02(\x0e22.hw.trezor.messages.cardano.\ + CardanoCertificateTypeR\x04type\x12\x12\n\x04path\x18\x02\x20\x03(\rR\ + \x04path\x12\x12\n\x04pool\x18\x03\x20\x01(\x0cR\x04pool\x12^\n\x0fpool_\ + parameters\x18\x04\x20\x01(\x0b25.hw.trezor.messages.cardano.CardanoPool\ + ParametersTypeR\x0epoolParameters\x12\x1f\n\x0bscript_hash\x18\x05\x20\ + \x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\x18\x06\x20\x01(\x0cR\x07ke\ + yHash\x12\x18\n\x07deposit\x18\x07\x20\x01(\x04R\x07deposit\x12;\n\x04dr\ + ep\x18\x08\x20\x01(\x0b2'.hw.trezor.messages.cardano.CardanoDRepR\x04dre\ + p\"}\n\x13CardanoTxWithdrawal\x12\x12\n\x04path\x18\x01\x20\x03(\rR\x04p\ + ath\x12\x16\n\x06amount\x18\x02\x20\x02(\x04R\x06amount\x12\x1f\n\x0bscr\ + ipt_hash\x18\x03\x20\x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\x18\x04\ + \x20\x01(\x0cR\x07keyHash\"d\n\"CardanoCVoteRegistrationDelegation\x12&\ + \n\x0fvote_public_key\x18\x01\x20\x02(\x0cR\rvotePublicKey\x12\x16\n\x06\ + weight\x18\x02\x20\x02(\rR\x06weight\"\x8e\x04\n&CardanoCVoteRegistratio\ + nParametersType\x12&\n\x0fvote_public_key\x18\x01\x20\x01(\x0cR\rvotePub\ + licKey\x12!\n\x0cstaking_path\x18\x02\x20\x03(\rR\x0bstakingPath\x12v\n\ + \x1apayment_address_parameters\x18\x03\x20\x01(\x0b28.hw.trezor.messages\ + .cardano.CardanoAddressParametersTypeR\x18paymentAddressParameters\x12\ + \x14\n\x05nonce\x18\x04\x20\x02(\x04R\x05nonce\x12Y\n\x06format\x18\x05\ + \x20\x01(\x0e2:.hw.trezor.messages.cardano.CardanoCVoteRegistrationForma\ + t:\x05CIP15R\x06format\x12`\n\x0bdelegations\x18\x06\x20\x03(\x0b2>.hw.t\ + rezor.messages.cardano.CardanoCVoteRegistrationDelegationR\x0bdelegation\ + s\x12%\n\x0evoting_purpose\x18\x07\x20\x01(\x04R\rvotingPurpose\x12'\n\ + \x0fpayment_address\x18\x08\x20\x01(\tR\x0epaymentAddress\"\xb5\x01\n\ + \x16CardanoTxAuxiliaryData\x12\x86\x01\n\x1dcvote_registration_parameter\ + s\x18\x01\x20\x01(\x0b2B.hw.trezor.messages.cardano.CardanoCVoteRegistra\ + tionParametersTypeR\x1bcvoteRegistrationParameters\x12\x12\n\x04hash\x18\ + \x02\x20\x01(\x0cR\x04hash\"=\n\rCardanoTxMint\x12,\n\x12asset_groups_co\ + unt\x18\x01\x20\x02(\rR\x10assetGroupsCount\"V\n\x18CardanoTxCollateralI\ + nput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\n\np\ + rev_index\x18\x02\x20\x02(\rR\tprevIndex\"O\n\x17CardanoTxRequiredSigner\ + \x12\x19\n\x08key_hash\x18\x01\x20\x01(\x0cR\x07keyHash\x12\x19\n\x08key\ + _path\x18\x02\x20\x03(\rR\x07keyPath\"U\n\x17CardanoTxReferenceInput\x12\ + \x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\x12\x1d\n\nprev_inde\ + x\x18\x02\x20\x02(\rR\tprevIndex\"\x12\n\x10CardanoTxItemAck\"\xea\x01\n\ + \x20CardanoTxAuxiliaryDataSupplement\x12T\n\x04type\x18\x01\x20\x02(\x0e\ + 2@.hw.trezor.messages.cardano.CardanoTxAuxiliaryDataSupplementTypeR\x04t\ + ype\x12.\n\x13auxiliary_data_hash\x18\x02\x20\x01(\x0cR\x11auxiliaryData\ + Hash\x12@\n\x1ccvote_registration_signature\x18\x03\x20\x01(\x0cR\x1acvo\ + teRegistrationSignature\"-\n\x17CardanoTxWitnessRequest\x12\x12\n\x04pat\ + h\x18\x01\x20\x03(\rR\x04path\"\xb6\x01\n\x18CardanoTxWitnessResponse\ \x12D\n\x04type\x18\x01\x20\x02(\x0e20.hw.trezor.messages.cardano.Cardan\ - oPoolRelayTypeR\x04type\x12!\n\x0cipv4_address\x18\x02\x20\x01(\x0cR\x0b\ - ipv4Address\x12!\n\x0cipv6_address\x18\x03\x20\x01(\x0cR\x0bipv6Address\ - \x12\x1b\n\thost_name\x18\x04\x20\x01(\tR\x08hostName\x12\x12\n\x04port\ - \x18\x05\x20\x01(\rR\x04port\"?\n\x17CardanoPoolMetadataType\x12\x10\n\ - \x03url\x18\x01\x20\x02(\tR\x03url\x12\x12\n\x04hash\x18\x02\x20\x02(\ - \x0cR\x04hash\"\x9a\x03\n\x19CardanoPoolParametersType\x12\x17\n\x07pool\ - _id\x18\x01\x20\x02(\x0cR\x06poolId\x12\x20\n\x0cvrf_key_hash\x18\x02\ - \x20\x02(\x0cR\nvrfKeyHash\x12\x16\n\x06pledge\x18\x03\x20\x02(\x04R\x06\ - pledge\x12\x12\n\x04cost\x18\x04\x20\x02(\x04R\x04cost\x12)\n\x10margin_\ - numerator\x18\x05\x20\x02(\x04R\x0fmarginNumerator\x12-\n\x12margin_deno\ - minator\x18\x06\x20\x02(\x04R\x11marginDenominator\x12%\n\x0ereward_acco\ - unt\x18\x07\x20\x02(\tR\rrewardAccount\x12O\n\x08metadata\x18\n\x20\x01(\ - \x0b23.hw.trezor.messages.cardano.CardanoPoolMetadataTypeR\x08metadata\ - \x12!\n\x0cowners_count\x18\x0b\x20\x02(\rR\x0bownersCount\x12!\n\x0crel\ - ays_count\x18\x0c\x20\x02(\rR\x0brelaysCount\"\x8a\x01\n\x0bCardanoDRep\ - \x12?\n\x04type\x18\x01\x20\x02(\x0e2+.hw.trezor.messages.cardano.Cardan\ - oDRepTypeR\x04type\x12\x19\n\x08key_hash\x18\x02\x20\x01(\x0cR\x07keyHas\ - h\x12\x1f\n\x0bscript_hash\x18\x03\x20\x01(\x0cR\nscriptHash\"\xf9\x02\n\ - \x14CardanoTxCertificate\x12F\n\x04type\x18\x01\x20\x02(\x0e22.hw.trezor\ - .messages.cardano.CardanoCertificateTypeR\x04type\x12\x12\n\x04path\x18\ - \x02\x20\x03(\rR\x04path\x12\x12\n\x04pool\x18\x03\x20\x01(\x0cR\x04pool\ - \x12^\n\x0fpool_parameters\x18\x04\x20\x01(\x0b25.hw.trezor.messages.car\ - dano.CardanoPoolParametersTypeR\x0epoolParameters\x12\x1f\n\x0bscript_ha\ - sh\x18\x05\x20\x01(\x0cR\nscriptHash\x12\x19\n\x08key_hash\x18\x06\x20\ - \x01(\x0cR\x07keyHash\x12\x18\n\x07deposit\x18\x07\x20\x01(\x04R\x07depo\ - sit\x12;\n\x04drep\x18\x08\x20\x01(\x0b2'.hw.trezor.messages.cardano.Car\ - danoDRepR\x04drep\"}\n\x13CardanoTxWithdrawal\x12\x12\n\x04path\x18\x01\ - \x20\x03(\rR\x04path\x12\x16\n\x06amount\x18\x02\x20\x02(\x04R\x06amount\ - \x12\x1f\n\x0bscript_hash\x18\x03\x20\x01(\x0cR\nscriptHash\x12\x19\n\ - \x08key_hash\x18\x04\x20\x01(\x0cR\x07keyHash\"d\n\"CardanoCVoteRegistra\ - tionDelegation\x12&\n\x0fvote_public_key\x18\x01\x20\x02(\x0cR\rvotePubl\ - icKey\x12\x16\n\x06weight\x18\x02\x20\x02(\rR\x06weight\"\x8e\x04\n&Card\ - anoCVoteRegistrationParametersType\x12&\n\x0fvote_public_key\x18\x01\x20\ - \x01(\x0cR\rvotePublicKey\x12!\n\x0cstaking_path\x18\x02\x20\x03(\rR\x0b\ - stakingPath\x12v\n\x1apayment_address_parameters\x18\x03\x20\x01(\x0b28.\ - hw.trezor.messages.cardano.CardanoAddressParametersTypeR\x18paymentAddre\ - ssParameters\x12\x14\n\x05nonce\x18\x04\x20\x02(\x04R\x05nonce\x12Y\n\ - \x06format\x18\x05\x20\x01(\x0e2:.hw.trezor.messages.cardano.CardanoCVot\ - eRegistrationFormat:\x05CIP15R\x06format\x12`\n\x0bdelegations\x18\x06\ - \x20\x03(\x0b2>.hw.trezor.messages.cardano.CardanoCVoteRegistrationDeleg\ - ationR\x0bdelegations\x12%\n\x0evoting_purpose\x18\x07\x20\x01(\x04R\rvo\ - tingPurpose\x12'\n\x0fpayment_address\x18\x08\x20\x01(\tR\x0epaymentAddr\ - ess\"\xb5\x01\n\x16CardanoTxAuxiliaryData\x12\x86\x01\n\x1dcvote_registr\ - ation_parameters\x18\x01\x20\x01(\x0b2B.hw.trezor.messages.cardano.Carda\ - noCVoteRegistrationParametersTypeR\x1bcvoteRegistrationParameters\x12\ - \x12\n\x04hash\x18\x02\x20\x01(\x0cR\x04hash\"=\n\rCardanoTxMint\x12,\n\ - \x12asset_groups_count\x18\x01\x20\x02(\rR\x10assetGroupsCount\"V\n\x18C\ - ardanoTxCollateralInput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08pr\ - evHash\x12\x1d\n\nprev_index\x18\x02\x20\x02(\rR\tprevIndex\"O\n\x17Card\ - anoTxRequiredSigner\x12\x19\n\x08key_hash\x18\x01\x20\x01(\x0cR\x07keyHa\ - sh\x12\x19\n\x08key_path\x18\x02\x20\x03(\rR\x07keyPath\"U\n\x17CardanoT\ - xReferenceInput\x12\x1b\n\tprev_hash\x18\x01\x20\x02(\x0cR\x08prevHash\ - \x12\x1d\n\nprev_index\x18\x02\x20\x02(\rR\tprevIndex\"\x12\n\x10Cardano\ - TxItemAck\"\xea\x01\n\x20CardanoTxAuxiliaryDataSupplement\x12T\n\x04type\ - \x18\x01\x20\x02(\x0e2@.hw.trezor.messages.cardano.CardanoTxAuxiliaryDat\ - aSupplementTypeR\x04type\x12.\n\x13auxiliary_data_hash\x18\x02\x20\x01(\ - \x0cR\x11auxiliaryDataHash\x12@\n\x1ccvote_registration_signature\x18\ - \x03\x20\x01(\x0cR\x1acvoteRegistrationSignature\"-\n\x17CardanoTxWitnes\ - sRequest\x12\x12\n\x04path\x18\x01\x20\x03(\rR\x04path\"\xb6\x01\n\x18Ca\ - rdanoTxWitnessResponse\x12D\n\x04type\x18\x01\x20\x02(\x0e20.hw.trezor.m\ - essages.cardano.CardanoTxWitnessTypeR\x04type\x12\x17\n\x07pub_key\x18\ - \x02\x20\x02(\x0cR\x06pubKey\x12\x1c\n\tsignature\x18\x03\x20\x02(\x0cR\ - \tsignature\x12\x1d\n\nchain_code\x18\x04\x20\x01(\x0cR\tchainCode\"\x12\ - \n\x10CardanoTxHostAck\",\n\x11CardanoTxBodyHash\x12\x17\n\x07tx_hash\ - \x18\x01\x20\x02(\x0cR\x06txHash\"\x17\n\x15CardanoSignTxFinished*B\n\ - \x15CardanoDerivationType\x12\n\n\x06LEDGER\x10\0\x12\n\n\x06ICARUS\x10\ - \x01\x12\x11\n\rICARUS_TREZOR\x10\x02*\xd2\x01\n\x12CardanoAddressType\ - \x12\x08\n\x04BASE\x10\0\x12\x13\n\x0fBASE_SCRIPT_KEY\x10\x01\x12\x13\n\ - \x0fBASE_KEY_SCRIPT\x10\x02\x12\x16\n\x12BASE_SCRIPT_SCRIPT\x10\x03\x12\ - \x0b\n\x07POINTER\x10\x04\x12\x12\n\x0ePOINTER_SCRIPT\x10\x05\x12\x0e\n\ - \nENTERPRISE\x10\x06\x12\x15\n\x11ENTERPRISE_SCRIPT\x10\x07\x12\t\n\x05B\ - YRON\x10\x08\x12\n\n\x06REWARD\x10\x0e\x12\x11\n\rREWARD_SCRIPT\x10\x0f*\ - o\n\x17CardanoNativeScriptType\x12\x0b\n\x07PUB_KEY\x10\0\x12\x07\n\x03A\ - LL\x10\x01\x12\x07\n\x03ANY\x10\x02\x12\n\n\x06N_OF_K\x10\x03\x12\x12\n\ - \x0eINVALID_BEFORE\x10\x04\x12\x15\n\x11INVALID_HEREAFTER\x10\x05*K\n$Ca\ - rdanoNativeScriptHashDisplayFormat\x12\x08\n\x04HIDE\x10\0\x12\n\n\x06BE\ - CH32\x10\x01\x12\r\n\tPOLICY_ID\x10\x02*G\n\"CardanoTxOutputSerializatio\ - nFormat\x12\x10\n\x0cARRAY_LEGACY\x10\0\x12\x0f\n\x0bMAP_BABBAGE\x10\x01\ - *\xd2\x01\n\x16CardanoCertificateType\x12\x16\n\x12STAKE_REGISTRATION\ - \x10\0\x12\x18\n\x14STAKE_DEREGISTRATION\x10\x01\x12\x14\n\x10STAKE_DELE\ - GATION\x10\x02\x12\x1b\n\x17STAKE_POOL_REGISTRATION\x10\x03\x12\x1d\n\ - \x19STAKE_REGISTRATION_CONWAY\x10\x07\x12\x1f\n\x1bSTAKE_DEREGISTRATION_\ - CONWAY\x10\x08\x12\x13\n\x0fVOTE_DELEGATION\x10\t*P\n\x0fCardanoDRepType\ - \x12\x0c\n\x08KEY_HASH\x10\0\x12\x0f\n\x0bSCRIPT_HASH\x10\x01\x12\x0b\n\ - \x07ABSTAIN\x10\x02\x12\x11\n\rNO_CONFIDENCE\x10\x03*X\n\x14CardanoPoolR\ - elayType\x12\x12\n\x0eSINGLE_HOST_IP\x10\0\x12\x14\n\x10SINGLE_HOST_NAME\ - \x10\x01\x12\x16\n\x12MULTIPLE_HOST_NAME\x10\x02*R\n$CardanoTxAuxiliaryD\ - ataSupplementType\x12\x08\n\x04NONE\x10\0\x12\x20\n\x1cCVOTE_REGISTRATIO\ - N_SIGNATURE\x10\x01*6\n\x1eCardanoCVoteRegistrationFormat\x12\t\n\x05CIP\ - 15\x10\0\x12\t\n\x05CIP36\x10\x01*\x82\x01\n\x14CardanoTxSigningMode\x12\ - \x18\n\x14ORDINARY_TRANSACTION\x10\0\x12\x1e\n\x1aPOOL_REGISTRATION_AS_O\ - WNER\x10\x01\x12\x18\n\x14MULTISIG_TRANSACTION\x10\x02\x12\x16\n\x12PLUT\ - US_TRANSACTION\x10\x03*>\n\x14CardanoTxWitnessType\x12\x11\n\rBYRON_WITN\ - ESS\x10\0\x12\x13\n\x0fSHELLEY_WITNESS\x10\x01B;\n#com.satoshilabs.trezo\ - r.lib.protobufB\x14TrezorMessageCardano\ + oTxWitnessTypeR\x04type\x12\x17\n\x07pub_key\x18\x02\x20\x02(\x0cR\x06pu\ + bKey\x12\x1c\n\tsignature\x18\x03\x20\x02(\x0cR\tsignature\x12\x1d\n\nch\ + ain_code\x18\x04\x20\x01(\x0cR\tchainCode\"\x12\n\x10CardanoTxHostAck\",\ + \n\x11CardanoTxBodyHash\x12\x17\n\x07tx_hash\x18\x01\x20\x02(\x0cR\x06tx\ + Hash\"\x17\n\x15CardanoSignTxFinished*B\n\x15CardanoDerivationType\x12\n\ + \n\x06LEDGER\x10\0\x12\n\n\x06ICARUS\x10\x01\x12\x11\n\rICARUS_TREZOR\ + \x10\x02*\xd2\x01\n\x12CardanoAddressType\x12\x08\n\x04BASE\x10\0\x12\ + \x13\n\x0fBASE_SCRIPT_KEY\x10\x01\x12\x13\n\x0fBASE_KEY_SCRIPT\x10\x02\ + \x12\x16\n\x12BASE_SCRIPT_SCRIPT\x10\x03\x12\x0b\n\x07POINTER\x10\x04\ + \x12\x12\n\x0ePOINTER_SCRIPT\x10\x05\x12\x0e\n\nENTERPRISE\x10\x06\x12\ + \x15\n\x11ENTERPRISE_SCRIPT\x10\x07\x12\t\n\x05BYRON\x10\x08\x12\n\n\x06\ + REWARD\x10\x0e\x12\x11\n\rREWARD_SCRIPT\x10\x0f*o\n\x17CardanoNativeScri\ + ptType\x12\x0b\n\x07PUB_KEY\x10\0\x12\x07\n\x03ALL\x10\x01\x12\x07\n\x03\ + ANY\x10\x02\x12\n\n\x06N_OF_K\x10\x03\x12\x12\n\x0eINVALID_BEFORE\x10\ + \x04\x12\x15\n\x11INVALID_HEREAFTER\x10\x05*K\n$CardanoNativeScriptHashD\ + isplayFormat\x12\x08\n\x04HIDE\x10\0\x12\n\n\x06BECH32\x10\x01\x12\r\n\t\ + POLICY_ID\x10\x02*G\n\"CardanoTxOutputSerializationFormat\x12\x10\n\x0cA\ + RRAY_LEGACY\x10\0\x12\x0f\n\x0bMAP_BABBAGE\x10\x01*\xd2\x01\n\x16Cardano\ + CertificateType\x12\x16\n\x12STAKE_REGISTRATION\x10\0\x12\x18\n\x14STAKE\ + _DEREGISTRATION\x10\x01\x12\x14\n\x10STAKE_DELEGATION\x10\x02\x12\x1b\n\ + \x17STAKE_POOL_REGISTRATION\x10\x03\x12\x1d\n\x19STAKE_REGISTRATION_CONW\ + AY\x10\x07\x12\x1f\n\x1bSTAKE_DEREGISTRATION_CONWAY\x10\x08\x12\x13\n\ + \x0fVOTE_DELEGATION\x10\t*P\n\x0fCardanoDRepType\x12\x0c\n\x08KEY_HASH\ + \x10\0\x12\x0f\n\x0bSCRIPT_HASH\x10\x01\x12\x0b\n\x07ABSTAIN\x10\x02\x12\ + \x11\n\rNO_CONFIDENCE\x10\x03*X\n\x14CardanoPoolRelayType\x12\x12\n\x0eS\ + INGLE_HOST_IP\x10\0\x12\x14\n\x10SINGLE_HOST_NAME\x10\x01\x12\x16\n\x12M\ + ULTIPLE_HOST_NAME\x10\x02*R\n$CardanoTxAuxiliaryDataSupplementType\x12\ + \x08\n\x04NONE\x10\0\x12\x20\n\x1cCVOTE_REGISTRATION_SIGNATURE\x10\x01*6\ + \n\x1eCardanoCVoteRegistrationFormat\x12\t\n\x05CIP15\x10\0\x12\t\n\x05C\ + IP36\x10\x01*\x82\x01\n\x14CardanoTxSigningMode\x12\x18\n\x14ORDINARY_TR\ + ANSACTION\x10\0\x12\x1e\n\x1aPOOL_REGISTRATION_AS_OWNER\x10\x01\x12\x18\ + \n\x14MULTISIG_TRANSACTION\x10\x02\x12\x16\n\x12PLUTUS_TRANSACTION\x10\ + \x03*>\n\x14CardanoTxWitnessType\x12\x11\n\rBYRON_WITNESS\x10\0\x12\x13\ + \n\x0fSHELLEY_WITNESS\x10\x01B;\n#com.satoshilabs.trezor.lib.protobufB\ + \x14TrezorMessageCardano\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/tests/device_tests/cardano/test_sign_tx.py b/tests/device_tests/cardano/test_sign_tx.py index 4d72d0fc7f..2f54787dc1 100644 --- a/tests/device_tests/cardano/test_sign_tx.py +++ b/tests/device_tests/cardano/test_sign_tx.py @@ -139,6 +139,7 @@ def call_sign_tx(client: Client, parameters, input_flow=None, chunkify: bool = F additional_witness_requests=additional_witness_requests, include_network_id=parameters["include_network_id"], chunkify=chunkify, + tag_cbor_sets=parameters["tag_cbor_sets"], ) From d1311e786a19f12785203d8c45e2bf2f64cfc3e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Jas=CC=8Cko?= <peter.jasko@vacuumlabs.com> Date: Sat, 13 Jan 2024 23:42:16 +0100 Subject: [PATCH 073/626] chore(cardano): Update URL max length --- core/src/apps/cardano/certificates.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/apps/cardano/certificates.py b/core/src/apps/cardano/certificates.py index fbbba09c7a..762dea4329 100644 --- a/core/src/apps/cardano/certificates.py +++ b/core/src/apps/cardano/certificates.py @@ -23,7 +23,7 @@ _IPV4_ADDRESS_SIZE = const(4) _IPV6_ADDRESS_SIZE = const(16) -_MAX_URL_LENGTH = const(64) +_MAX_URL_LENGTH = const(128) _MAX_PORT_NUMBER = const(65535) From 56f963d332fb1985cef71b297da8285bb99e0b5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Jas=CC=8Cko?= <peter.jasko@vacuumlabs.com> Date: Sun, 14 Jan 2024 22:54:27 +0100 Subject: [PATCH 074/626] chore: Changelog --- core/.changelog.d/3496.added.1 | 1 + core/.changelog.d/3496.added.2 | 1 + core/.changelog.d/3496.changed.3 | 1 + python/.changelog.d/3496.added.1 | 1 + python/.changelog.d/3496.added.2 | 1 + 5 files changed, 5 insertions(+) create mode 100644 core/.changelog.d/3496.added.1 create mode 100644 core/.changelog.d/3496.added.2 create mode 100644 core/.changelog.d/3496.changed.3 create mode 100644 python/.changelog.d/3496.added.1 create mode 100644 python/.changelog.d/3496.added.2 diff --git a/core/.changelog.d/3496.added.1 b/core/.changelog.d/3496.added.1 new file mode 100644 index 0000000000..6e208d171f --- /dev/null +++ b/core/.changelog.d/3496.added.1 @@ -0,0 +1 @@ +Cardano: Added support for Conway certificates diff --git a/core/.changelog.d/3496.added.2 b/core/.changelog.d/3496.added.2 new file mode 100644 index 0000000000..509c632add --- /dev/null +++ b/core/.changelog.d/3496.added.2 @@ -0,0 +1 @@ +Cardano: Added support for tagged sets in CBOR (tag 258) diff --git a/core/.changelog.d/3496.changed.3 b/core/.changelog.d/3496.changed.3 new file mode 100644 index 0000000000..b7d9fb6727 --- /dev/null +++ b/core/.changelog.d/3496.changed.3 @@ -0,0 +1 @@ +Cardano: Increased max URL length to 128 bytes diff --git a/python/.changelog.d/3496.added.1 b/python/.changelog.d/3496.added.1 new file mode 100644 index 0000000000..6e208d171f --- /dev/null +++ b/python/.changelog.d/3496.added.1 @@ -0,0 +1 @@ +Cardano: Added support for Conway certificates diff --git a/python/.changelog.d/3496.added.2 b/python/.changelog.d/3496.added.2 new file mode 100644 index 0000000000..509c632add --- /dev/null +++ b/python/.changelog.d/3496.added.2 @@ -0,0 +1 @@ +Cardano: Added support for tagged sets in CBOR (tag 258) From 2b5458015717d76aae15847f77a3fbd508903191 Mon Sep 17 00:00:00 2001 From: David Misiak <david.misiak@vacuumlabs.com> Date: Thu, 16 May 2024 23:56:29 +0200 Subject: [PATCH 075/626] chore(cardano): update UI fixtures --- tests/ui_tests/fixtures.json | 88 ++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index b169beb839..c6a1fd0948 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -4329,6 +4329,7 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "003060a5f25b31b42ea1aafc3f8c8eb511a564ee1e645dd01048fe7586d226ef", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0ac6dabb1fcb6888db49464d4fdaa15d6231341ac4957352bdacb941f70f8512", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "1b192388b76c8da26faa1318376b08f11c47029792adaa7cf3601fc15a6a8d6e", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "f8589db625d88f5270c08d842b18ca9ab924da92dc634f95f733b66059f7d3ee", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "488cf1a6b968b5b77a7c2cee0ac407b5f05e05af6858c678c0d56c0def0780ea", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "475f1731c788eb6a55a2383ec8c4fbb23b44d182c7672ff06814bcb3c8403078", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "0877fef8cc21b0e3201857118f2c21abcfea34c918531dcdbd91c1e4ba1708f7", @@ -4358,6 +4359,10 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "bc34bd53f2f1dae3c391e5a5a12866c0cae82129c78bf084bce68418aafacae6", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0b84064d8397c8331112024747ac07c1ee98ce4f6611427e66c890be0cd4762c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e72dab3ff56d1f8669b23eaa591c642e9383b26acf32a0f98353dbc76e6921a7", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b1fa0c12a653e42a5bf09bd86f13605704cd1bfe25eb86b9849e316f96ccea5f", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "fa52a33cd2201fc5f9f21973cd54f3a4591ff6bb280c4c5e6a886a6025fa73db", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0bd7b51b49f660893e8778f47a987c9810771c5a945d5e924a5e240749f41e9b", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "6b4e60be5469a834cb90e7c9cdbf7734728c4f693a4912c30052ccea631569a4", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "02c9e2f58df10d287f445451bc604d7e7f9e3aee4d4a71600bc1c9c8f71565f6", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4d1765a5884c859931f9f9563ef18c96dea375ec9e9f35b57ef90e310a4854f9", @@ -4367,6 +4372,9 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bffb18ac0999fbb15efbcd92c092f64a8e511789749ade41625e1f65edc37061", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9faa1cfdec3253eabf3657e2038920e5e0af05087edd6fdb67dc380f6310275c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "eb9cfcd19b673900eb5324eae0a8ca49de353466f47ba5b78c46002c0a2f2fee", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4a43a109ecfd7d300a07b271a01f09d7b7da5a3efa75c8d5a4c8b704a41493cc", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d611c4247d38c0e9a1fac28c0eeee9cff1ae3ce2addee508e021b6fe9627288c", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d611c4247d38c0e9a1fac28c0eeee9cff1ae3ce2addee508e021b6fe9627288c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "e49a1b40da9c56628024752c7e5fea310c1de65e60e6bbd6c9c0d8a8e571f983", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", @@ -8742,6 +8750,7 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "43920e045bdbd0cc19970c6339c946e7ca5ce451cd7a832c47ede83ff13e5155", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "24d52a244d77254c5c4558beeeb710c4d2fccb216cc40c85be2a91e3894c0c3f", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c203f035a61bf7832ef1549e1f5483d89c9f3838a41cddb9f318ee817e36cfd4", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8d496f51e2d8d69074375dd76e0f90d7477373cb5d13affc38e3bde5dc300ad5", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "60fcc0e1bce9bd0d9677a1bf90d4372b619f60cd5674daa07fb00c75e6b7d342", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4ea136c7bbb94163065617d131153fc6c6e58a600d7b469464c867c3695a17db", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "d2ef0a4f0899560b048c83b713f5fbc189b0fc24db470821c5b6389194bd233f", @@ -8771,6 +8780,10 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fcc0172fece8a3d30ce3f76fe564e4cfa560db0785babd2e6228f445fd070bfd", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1a5d11217da86a13481168c2e92cfb4fef166b85e3258d0f2b38a70c6487984b", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "7b5f77b7b371b7e2a2c057362b05a38d153a7d0aaf9cb9a631bd1d7adedd670f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d4064e131e72967ce48b12767a3acbbfdeda21c9786fa493d5e63e07d478afd", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "45ee577b70c312633a00732f720f98474ce1361e1d85c672e91886dc5239ff61", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "371d13a75eebd3578bdbf89af63325dc432853cfebe4585edfdd21d32698d596", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3d2a1e54ce93f505a8671ab232772b7a696bad88cde38159f528b0c0e43c2698", @@ -8780,6 +8793,9 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "961dc7581378dc4a35d10cd27a51d7ee7892443ca892e801ed3f4e16e3272d0c", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9deb71c5bed9352a429568ee4be0c5454522786873d71ee12d6fa08d34b9916c", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "efa7fb9b031385ce06ff26df22187790b1d694503098dcd203ee88c0903d4ace", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4bf1ecc8f36058dba0a82c5268e54e9a389bee07cbb4f8f7caef81403ae4adb0", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ca8c279751c123558fd05fe350e16a57d7a1d91e8e6a91d367d579a282eda994", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", @@ -10199,6 +10215,7 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "e2ebed2c337a7fe0aab1c350510b172d635314fd0bbec52e7c168ae38d9431c0", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a4f4d0581f7ac773ea3a3d9e31760d3977d314f7a9921344be1d44c79a8c299b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "12c3e6bafb34b2480169a243082496b65fdfc5c1e44f32cb3dcf65aa05152e3f", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "05846b84e694732a18247c47f4b039e2cbda01752d0cce06cb91ef0f199412f1", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a9f2cb26fa79b92849df8707a9bb2503c835bf48bb5a8f3cd5ba947ed0014f30", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab47e2f22a59b5587507c4ad7934fa701dd1f60b429b3a9ee55a5d2daaecbfc", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "780cdf960ce08061c9e224b598ad0d6228d00dfcc4d814bcf1eb25ed95aa557f", @@ -10228,6 +10245,10 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6c29a9e0b33f14d8549d9635e38c8ff13b1cf4bae7bd36319d28bf0f28790954", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "12e4199c992ed2a334403814367b872be55986c98b5a9a94187376f3b9530e3c", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "62bb28cf7b173cd652fc4bbedcfeb8172e2735294d088e1841ae7bf9973eeda4", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e945588bcc167e340f87e5752b24c7c38af390135c0c640529fcd8c7d88b0860", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "fc862a70389bb4dc49628f34a5633327b47d2e8206c0c0a5ba506fe21606c6d5", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6a3dedfefa16c32ce6a1fe470d271645ba08e4e4ad8552857095fcfa5183283b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "1592544e84850950f1fe7ae4b073c682c63130d35ad6ed5bb879b4e972407ab3", @@ -10237,6 +10258,9 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "066507d14abd8f7b6cbffab1b6c3d0c60716887e47b4a1b2115b9a26c44ed08b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9f985619d4e544dc52b4af43a52fcc259b01235f44ddb1882731b993284a64b5", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b6fe22230ff6ee382ddbe8aeb2489c566db47b18082b46377f33e7d0aeaa8512", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "074e4b5735bdc9740dc6df06e74a45231a89ad76f5bd6f365b302c8b6109a409", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "63b341a969ee8579b716adc52b15c31c7fb200790a080eb6d8ed304a688ab417", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", @@ -11656,6 +11680,7 @@ "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "ca9b3f3653f972ac233c9e8c44d50b5a32397f1418d64dece3c1dd60b85930ce", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", @@ -11685,6 +11710,10 @@ "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b501c4b73b1a745c96b8c9706f28ec0bb06d5235e5739af83fa777aa2d0c7d41", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e4e1a5639f4f1c87505dc88a390e38c15f421ea962dc370f2df8aee075e7385", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ca56afd69ea46ac474132a124c7dd8e11857275f728c9a858f38bea64c9b9e4a", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "0b1e114acd865c585518eb4f2c1c919c4b1e083a978344181d75543380d5e366", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", @@ -11694,6 +11723,9 @@ "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "50436db43e95d93e7f6ea7dc0e7ca0e80dd15cfbe048db642c69397d06b1e115", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", @@ -13131,6 +13163,7 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a910885ed3480eaca4a2fe013acd6d9f3d1bbe6ea3a9622e7f02f4b2bf9879e5", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "77199b22cd5981363016b0ce404e42f660833b133cdc62b50b036fcbf5f43777", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d223c3e651e70fe78ec3e5b6b6d3c3fdd06fdd4cfbe761a1b578f270888015dd", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e1bb7a9ceb6fdb4193c74185cf3544f7cba084a67e083619657624689cfdb907", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5278b236aaa976482d2f5193209457abcdd51a0d472eb0896fa9665d7f2a9461", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "14bec6205be447427374351dd75836fa82a0183f820928b9c48bacb474ce9305", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "9e304a0c5000f07bc255d5d652081ada9804920ad5b2ca6445c4a6740a0ab348", @@ -13160,6 +13193,10 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "ca34e89ccd20410e1301f864c9371c9be3e63991cf9c299c441c83eb312498b9", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "489a7376b93d1caa83c889788a762f46c1f6ec4577d0e2753013f1162b9e8d2c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "321d00f3476599733b43b066c9ac38a3549400777bd5ef1555519d662fcd64e0", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7c0a59c98455d2f16e2f028a7636d76aad371036f6b8e5b0b5164c796296144c", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f8ca850fd8238d0797c56927710654a48b187ae0d630434fbcf437e51293927f", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7acac1fb4aea9ae638e70890863da73e371152253a22976a2b17ef88a274df0d", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e7b6abc9b166d7d586abe7f59a17d099fab1d55b5a2b916a8e1ad30e38cccbc1", @@ -13169,6 +13206,9 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bf84aedb1f4a63bde4bd13c45ed4645696563362c9b84a1fc8da535f1c02315f", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d91a813a0768d73f1d52029e99ed75987bc0cf744f1da3700f789f6202917666", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f7e6639d7d13d04596ca456f4b6df3937a3c9816f52ed78d27122b4488e54b", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "ffda6edfaa7af5e2de9095b4498ac493dfc1fdc02f1fd79c0d73cb3a2c22bfb4", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ea63a77b0b42d0491b6dfc49f78ca520abe3456a24c7161de3f32ccce06714fd", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", @@ -14588,6 +14628,7 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a7a6a539ac1a60d5d76464eb9dc814b5d4b97d7f3210fa550fb850ae7e7dcff5", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "095d29bff240700a7e6e26bb8bac4d168a7106af1b0f0d6b01ab981bd4365980", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "94c82af1cf2a0d1a964ab07ef5103e2e43e961495d302479cac15d98a89e7ba8", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "9ec8932f47e344d1e9ee1b18c9fd0cfa668fa0f49735bb9e8d0a7f7a821ab76d", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bfe7a99ed9fad6a84be970a9329c02ad021e0438206fa0f5bbb9b349996e7a19", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9e737a9e4063f5c28462df1843d2cefc7194e8ed81a5d6400e9d90792e2cff3c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "626b1964bd7dbdde2c4f73cb597462340909de35d1abe538aaf4f7140345da0c", @@ -14617,6 +14658,10 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "bc11f996c3df62edc0b4c890f8bc84f0255a7dabf43cf60f4261b620eedc02e4", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1cab6523a7a5b46631b08034b8b260910c808b0cbe73206657a4c8fade1f3973", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b5afcc4f7275aa41f2b59615f242eb5128102b9a4f2b17c272162d7b3a9df850", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "adf4203b973746c9cc0abd83d067df69b5cda20f9bbb58fedccc6c81727de659", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "844c73b7715c7dd0fe2f4d54e380c3abdc9ac0ecd1f84d101a027afa449c6307", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", @@ -14626,6 +14671,9 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d67317da8d8529f32f492c15a36a6f56ae3f224de46d957cfffb686cfd3843bb", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "dedd91139f4c90adcbb218c9cbc469a0c3a58b2d1d1a20c149d470d9572f9914", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "3b25f3a58e621fff908387ac16386cb852e14971cda033da7b65c101a0ab0325", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d22f5fc713c8928e8a86e4282624535c2fe722ae82207355f6ca8d81b8353c05", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c14cf088eccbabcaa50cf49ba0653bafbf1e01228bf87883b573ae72df926fb9", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", @@ -16296,6 +16344,7 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "43920e045bdbd0cc19970c6339c946e7ca5ce451cd7a832c47ede83ff13e5155", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "24d52a244d77254c5c4558beeeb710c4d2fccb216cc40c85be2a91e3894c0c3f", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c203f035a61bf7832ef1549e1f5483d89c9f3838a41cddb9f318ee817e36cfd4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8d496f51e2d8d69074375dd76e0f90d7477373cb5d13affc38e3bde5dc300ad5", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "60fcc0e1bce9bd0d9677a1bf90d4372b619f60cd5674daa07fb00c75e6b7d342", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4ea136c7bbb94163065617d131153fc6c6e58a600d7b469464c867c3695a17db", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "d2ef0a4f0899560b048c83b713f5fbc189b0fc24db470821c5b6389194bd233f", @@ -16325,6 +16374,10 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fcc0172fece8a3d30ce3f76fe564e4cfa560db0785babd2e6228f445fd070bfd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1a5d11217da86a13481168c2e92cfb4fef166b85e3258d0f2b38a70c6487984b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "7b5f77b7b371b7e2a2c057362b05a38d153a7d0aaf9cb9a631bd1d7adedd670f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d4064e131e72967ce48b12767a3acbbfdeda21c9786fa493d5e63e07d478afd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "45ee577b70c312633a00732f720f98474ce1361e1d85c672e91886dc5239ff61", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "371d13a75eebd3578bdbf89af63325dc432853cfebe4585edfdd21d32698d596", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3d2a1e54ce93f505a8671ab232772b7a696bad88cde38159f528b0c0e43c2698", @@ -16334,6 +16387,9 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "961dc7581378dc4a35d10cd27a51d7ee7892443ca892e801ed3f4e16e3272d0c", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9deb71c5bed9352a429568ee4be0c5454522786873d71ee12d6fa08d34b9916c", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "efa7fb9b031385ce06ff26df22187790b1d694503098dcd203ee88c0903d4ace", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4bf1ecc8f36058dba0a82c5268e54e9a389bee07cbb4f8f7caef81403ae4adb0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ca8c279751c123558fd05fe350e16a57d7a1d91e8e6a91d367d579a282eda994", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", @@ -17711,6 +17767,7 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "e2ebed2c337a7fe0aab1c350510b172d635314fd0bbec52e7c168ae38d9431c0", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a4f4d0581f7ac773ea3a3d9e31760d3977d314f7a9921344be1d44c79a8c299b", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "12c3e6bafb34b2480169a243082496b65fdfc5c1e44f32cb3dcf65aa05152e3f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "05846b84e694732a18247c47f4b039e2cbda01752d0cce06cb91ef0f199412f1", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a9f2cb26fa79b92849df8707a9bb2503c835bf48bb5a8f3cd5ba947ed0014f30", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab47e2f22a59b5587507c4ad7934fa701dd1f60b429b3a9ee55a5d2daaecbfc", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "780cdf960ce08061c9e224b598ad0d6228d00dfcc4d814bcf1eb25ed95aa557f", @@ -17740,6 +17797,10 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6c29a9e0b33f14d8549d9635e38c8ff13b1cf4bae7bd36319d28bf0f28790954", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "12e4199c992ed2a334403814367b872be55986c98b5a9a94187376f3b9530e3c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "62bb28cf7b173cd652fc4bbedcfeb8172e2735294d088e1841ae7bf9973eeda4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e945588bcc167e340f87e5752b24c7c38af390135c0c640529fcd8c7d88b0860", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "fc862a70389bb4dc49628f34a5633327b47d2e8206c0c0a5ba506fe21606c6d5", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6a3dedfefa16c32ce6a1fe470d271645ba08e4e4ad8552857095fcfa5183283b", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "1592544e84850950f1fe7ae4b073c682c63130d35ad6ed5bb879b4e972407ab3", @@ -17749,6 +17810,9 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "066507d14abd8f7b6cbffab1b6c3d0c60716887e47b4a1b2115b9a26c44ed08b", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9f985619d4e544dc52b4af43a52fcc259b01235f44ddb1882731b993284a64b5", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b6fe22230ff6ee382ddbe8aeb2489c566db47b18082b46377f33e7d0aeaa8512", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "074e4b5735bdc9740dc6df06e74a45231a89ad76f5bd6f365b302c8b6109a409", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "63b341a969ee8579b716adc52b15c31c7fb200790a080eb6d8ed304a688ab417", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", @@ -19126,6 +19190,7 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "ca9b3f3653f972ac233c9e8c44d50b5a32397f1418d64dece3c1dd60b85930ce", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", @@ -19155,6 +19220,10 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b501c4b73b1a745c96b8c9706f28ec0bb06d5235e5739af83fa777aa2d0c7d41", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e4e1a5639f4f1c87505dc88a390e38c15f421ea962dc370f2df8aee075e7385", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ca56afd69ea46ac474132a124c7dd8e11857275f728c9a858f38bea64c9b9e4a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "0b1e114acd865c585518eb4f2c1c919c4b1e083a978344181d75543380d5e366", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", @@ -19164,6 +19233,9 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "50436db43e95d93e7f6ea7dc0e7ca0e80dd15cfbe048db642c69397d06b1e115", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", @@ -20541,6 +20613,7 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a910885ed3480eaca4a2fe013acd6d9f3d1bbe6ea3a9622e7f02f4b2bf9879e5", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "77199b22cd5981363016b0ce404e42f660833b133cdc62b50b036fcbf5f43777", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d223c3e651e70fe78ec3e5b6b6d3c3fdd06fdd4cfbe761a1b578f270888015dd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e1bb7a9ceb6fdb4193c74185cf3544f7cba084a67e083619657624689cfdb907", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5278b236aaa976482d2f5193209457abcdd51a0d472eb0896fa9665d7f2a9461", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "14bec6205be447427374351dd75836fa82a0183f820928b9c48bacb474ce9305", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "9e304a0c5000f07bc255d5d652081ada9804920ad5b2ca6445c4a6740a0ab348", @@ -20570,6 +20643,10 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "ca34e89ccd20410e1301f864c9371c9be3e63991cf9c299c441c83eb312498b9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "489a7376b93d1caa83c889788a762f46c1f6ec4577d0e2753013f1162b9e8d2c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "321d00f3476599733b43b066c9ac38a3549400777bd5ef1555519d662fcd64e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7c0a59c98455d2f16e2f028a7636d76aad371036f6b8e5b0b5164c796296144c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f8ca850fd8238d0797c56927710654a48b187ae0d630434fbcf437e51293927f", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7acac1fb4aea9ae638e70890863da73e371152253a22976a2b17ef88a274df0d", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e7b6abc9b166d7d586abe7f59a17d099fab1d55b5a2b916a8e1ad30e38cccbc1", @@ -20579,6 +20656,9 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bf84aedb1f4a63bde4bd13c45ed4645696563362c9b84a1fc8da535f1c02315f", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d91a813a0768d73f1d52029e99ed75987bc0cf744f1da3700f789f6202917666", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f7e6639d7d13d04596ca456f4b6df3937a3c9816f52ed78d27122b4488e54b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "ffda6edfaa7af5e2de9095b4498ac493dfc1fdc02f1fd79c0d73cb3a2c22bfb4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ea63a77b0b42d0491b6dfc49f78ca520abe3456a24c7161de3f32ccce06714fd", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", @@ -21956,6 +22036,7 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a7a6a539ac1a60d5d76464eb9dc814b5d4b97d7f3210fa550fb850ae7e7dcff5", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "095d29bff240700a7e6e26bb8bac4d168a7106af1b0f0d6b01ab981bd4365980", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "94c82af1cf2a0d1a964ab07ef5103e2e43e961495d302479cac15d98a89e7ba8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "9ec8932f47e344d1e9ee1b18c9fd0cfa668fa0f49735bb9e8d0a7f7a821ab76d", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bfe7a99ed9fad6a84be970a9329c02ad021e0438206fa0f5bbb9b349996e7a19", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9e737a9e4063f5c28462df1843d2cefc7194e8ed81a5d6400e9d90792e2cff3c", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "626b1964bd7dbdde2c4f73cb597462340909de35d1abe538aaf4f7140345da0c", @@ -21985,6 +22066,10 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "bc11f996c3df62edc0b4c890f8bc84f0255a7dabf43cf60f4261b620eedc02e4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1cab6523a7a5b46631b08034b8b260910c808b0cbe73206657a4c8fade1f3973", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b5afcc4f7275aa41f2b59615f242eb5128102b9a4f2b17c272162d7b3a9df850", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "adf4203b973746c9cc0abd83d067df69b5cda20f9bbb58fedccc6c81727de659", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "844c73b7715c7dd0fe2f4d54e380c3abdc9ac0ecd1f84d101a027afa449c6307", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", @@ -21994,6 +22079,9 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d67317da8d8529f32f492c15a36a6f56ae3f224de46d957cfffb686cfd3843bb", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "dedd91139f4c90adcbb218c9cbc469a0c3a58b2d1d1a20c149d470d9572f9914", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "3b25f3a58e621fff908387ac16386cb852e14971cda033da7b65c101a0ab0325", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d22f5fc713c8928e8a86e4282624535c2fe722ae82207355f6ca8d81b8353c05", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c14cf088eccbabcaa50cf49ba0653bafbf1e01228bf87883b573ae72df926fb9", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", From 6f6b9fb11a60cf527540eaa1a8f0864f43b242c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 21:27:35 +0000 Subject: [PATCH 076/626] build(deps-dev): bump jinja2 from 3.1.3 to 3.1.4 Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4) --- updated-dependencies: - dependency-name: jinja2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8939c666a0..889fb5da00 100644 --- a/poetry.lock +++ b/poetry.lock @@ -661,13 +661,13 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] From 908e3cf9b0a901f794085eb9bba0d5700e2967e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 May 2024 05:31:04 +0000 Subject: [PATCH 077/626] --- updated-dependencies: - dependency-name: requests dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> --- poetry.lock | 10 +++++----- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 889fb5da00..a4ec6e36ab 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1358,13 +1358,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.0" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, + {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, ] [package.dependencies] @@ -1804,4 +1804,4 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "c1a5ee4dda4cbbfd897232da06ce54e8e9047669d23f825ade8fc395f68a10cd" +content-hash = "30cec0ead12f35e594f7f69e789e0183aeb74394ab81c5b4e2c84de9929fc4b0" diff --git a/pyproject.toml b/pyproject.toml index 642215eea1..728db6fd60 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,7 +50,7 @@ graphviz = "*" ## cointool click = "^8" -requests = "^2.31" +requests = "^2.32" termcolor = "*" Pillow = ">=10.0.1" From 87619c19eebdcd6bc87277888bb29558c9fe9f25 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak <pavol@rusnak.io> Date: Mon, 6 May 2024 12:54:48 +0200 Subject: [PATCH 078/626] chore(core/rust): bump buildgen to 0.62.0 this fixes build on macOS [no changelog] --- core/embed/rust/Cargo.lock | 23 ++++++++++++----------- core/embed/rust/Cargo.toml | 2 +- core/embed/rust/build.rs | 5 ++++- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/core/embed/rust/Cargo.lock b/core/embed/rust/Cargo.lock index c2149e641a..de76974f67 100644 --- a/core/embed/rust/Cargo.lock +++ b/core/embed/rust/Cargo.lock @@ -16,9 +16,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "bindgen" -version = "0.60.1" +version = "0.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6" +checksum = "c6720a8b7b2d39dd533285ed438d458f65b31b5c257e6ac7bb3d7e82844dd722" dependencies = [ "bitflags", "cexpr", @@ -31,6 +31,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", + "syn", ] [[package]] @@ -203,11 +204,11 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "proc-macro2" -version = "1.0.29" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -296,13 +297,13 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.80" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -360,10 +361,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e87a2ed6b42ec5e28cc3b94c09982969e9227600b2e3dcbc1db927a84c06bd69" [[package]] -name = "unicode-xid" -version = "0.2.2" +name = "unicode-ident" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unsize" diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 21a2f1038c..fafd9bf598 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -127,7 +127,7 @@ version = "1.1.0" # Build dependencies [build-dependencies.bindgen] -version = "0.60.1" +version = "0.62.0" default_features = false features = ["runtime"] diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index 768241b4d8..7277d94e43 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -77,7 +77,10 @@ fn generate_qstr_bindings() { bindgen::Builder::default() .header("qstr.h") // Build the Qstr enum as a newtype so we can define method on it. - .default_enum_style(bindgen::EnumVariation::NewType { is_bitfield: false }) + .default_enum_style(bindgen::EnumVariation::NewType { + is_bitfield: false, + is_global: false, + }) // Pass in correct include paths. .clang_args(&[ "-I", From 44a6696f24ea1ccd960fc49d8025f9271bda2ee4 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 24 May 2024 12:19:19 +0200 Subject: [PATCH 079/626] build(core): improve model detection instead of MODEL_IS_T2B1, we now catch INTERNAL_MODEL == Txyz this is still not perfect because it can't detect 'in'/'not in', which sucks but what can we do --- .../site_tools/micropython/__init__.py | 46 ++++++++++++------- core/src/apps/base.py | 4 +- core/src/trezor/utils.py | 4 -- core/tests/test_apps.bitcoin.signtx_decred.py | 4 +- core/tests/test_apps.common.coins.py | 2 +- 5 files changed, 34 insertions(+), 26 deletions(-) diff --git a/core/site_scons/site_tools/micropython/__init__.py b/core/site_scons/site_tools/micropython/__init__.py index d4f422ff61..2c074287f5 100644 --- a/core/site_scons/site_tools/micropython/__init__.py +++ b/core/site_scons/site_tools/micropython/__init__.py @@ -42,29 +42,41 @@ def generate_frozen_module(source, target, env, for_signature): # replace "utils.BITCOIN_ONLY" with literal constant (True/False) # so the compiler can optimize out the things we don't want btc_only = env["bitcoin_only"] == "1" - is_t2b1 = env["TREZOR_MODEL"] == "R" backlight = env["backlight"] optiga = env["optiga"] layout_tt = env["ui_layout"] == "UI_LAYOUT_TT" layout_tr = env["ui_layout"] == "UI_LAYOUT_TR" thp = env["thp"] interim = f"{target[:-4]}.i" # replace .mpy with .i - sed_scripts = " ".join( - [ - rf"-e 's/utils\.MODEL_IS_T2B1/{is_t2b1}/g'", - rf"-e 's/utils\.BITCOIN_ONLY/{btc_only}/g'", - rf"-e 's/utils\.USE_BACKLIGHT/{backlight}/g'", - rf"-e 's/utils\.USE_OPTIGA/{optiga}/g'", - rf"-e 's/utils\.UI_LAYOUT == \"TT\"/{layout_tt}/g'", - rf"-e 's/utils\.UI_LAYOUT == \"TR\"/{layout_tr}/g'", - rf"-e 's/utils\.USE_THP/{thp}/g'", - r"-e 's/if TYPE_CHECKING/if False/'", - r"-e 's/import typing/# \0/'", - r"-e '/from typing import (/,/^\s*)/ {s/^/# /; }'", - r"-e 's/from typing import/# \0/'", - ] - ) - return f"$SED {sed_scripts} {source} > {interim} && $MPY_CROSS -o {target} -s {source_name} {interim}" + sed_scripts = [ + rf"-e 's/utils\.BITCOIN_ONLY/{btc_only}/g'", + rf"-e 's/utils\.USE_BACKLIGHT/{backlight}/g'", + rf"-e 's/utils\.USE_OPTIGA/{optiga}/g'", + rf"-e 's/utils\.UI_LAYOUT == \"TT\"/{layout_tt}/g'", + rf"-e 's/utils\.UI_LAYOUT == \"TR\"/{layout_tr}/g'", + rf"-e 's/utils\.USE_THP/{thp}/g'", + r"-e 's/if TYPE_CHECKING/if False/'", + r"-e 's/import typing/# \0/'", + r"-e '/from typing import (/,/^\s*)/ {s/^/# /; }'", + r"-e 's/from typing import/# \0/'", + ] + + MODEL_SYMS = { + "T": "T2T1", + "R": "T2B1", + "T3T1": "T3T1", + } + + for model_sym, internal_model in MODEL_SYMS.items(): + model_matches = env["TREZOR_MODEL"] == model_sym + sed_scripts.extend( + ( + rf"-e 's/utils\.INTERNAL_MODEL == \"{internal_model}\"/{model_matches}/g'", + rf"-e 's/utils\.INTERNAL_MODEL != \"{internal_model}\"/{not model_matches}/g'", + ) + ) + + return f"$SED {' '.join(sed_scripts)} {source} > {interim} && $MPY_CROSS -o {target} -s {source_name} {interim}" env["BUILDERS"]["FrozenModule"] = SCons.Builder.Builder( generator=generate_frozen_module, diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 428d186b3c..4717eca9d3 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -126,8 +126,8 @@ def get_features() -> Features: Capability.Translations, ] - # We do not support some currencies on T2B1 - if not utils.MODEL_IS_T2B1: + # We don't support some currencies on later models (see #2793) + if utils.INTERNAL_MODEL == "T2T1": f.capabilities.extend( [ Capability.NEM, diff --git a/core/src/trezor/utils.py b/core/src/trezor/utils.py index 995af3198e..e580b7be12 100644 --- a/core/src/trezor/utils.py +++ b/core/src/trezor/utils.py @@ -30,10 +30,6 @@ ) from typing import TYPE_CHECKING -# Will get replaced by "True" / "False" in the build process -# However, needs to stay as an exported symbol for the unit tests -MODEL_IS_T2B1: bool = INTERNAL_MODEL == "T2B1" - DISABLE_ANIMATION = 0 if __debug__: diff --git a/core/tests/test_apps.bitcoin.signtx_decred.py b/core/tests/test_apps.bitcoin.signtx_decred.py index 001141b015..a8f4fc7e0d 100644 --- a/core/tests/test_apps.bitcoin.signtx_decred.py +++ b/core/tests/test_apps.bitcoin.signtx_decred.py @@ -1,6 +1,6 @@ from common import * # isort:skip -if not utils.MODEL_IS_T2B1: +if utils.INTERNAL_MODEL not in ("T2B1", "T3T1"): from trezor.crypto import bip39 from trezor.enums import AmountUnit, OutputScriptType from trezor.enums.RequestType import TXFINISHED, TXINPUT, TXMETA, TXOUTPUT @@ -405,5 +405,5 @@ def test_purchase_ticket(self): if __name__ == "__main__": - if not utils.MODEL_IS_T2B1: + if utils.INTERNAL_MODEL not in ("T2B1", "T3T1"): unittest.main() diff --git a/core/tests/test_apps.common.coins.py b/core/tests/test_apps.common.coins.py index 3c92b39c51..ba3008e824 100644 --- a/core/tests/test_apps.common.coins.py +++ b/core/tests/test_apps.common.coins.py @@ -22,7 +22,7 @@ def test_altcoins(self): ("ZEC", "Zcash", 7352), ("TAZ", "Zcash Testnet", 7461), ] - if not utils.MODEL_IS_T2B1: + if utils.INTERNAL_MODEL not in ("T2B1", "T3T1"): ref.extend( [ ("NMC", "Namecoin", 52), From 269adf4868ad9f2c4c4b6251cd28e0b7c08c566a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Fri, 10 May 2024 14:35:52 +0200 Subject: [PATCH 080/626] chore(core): add coin support info for T3T1 --- common/defs/support.json | 114 ++ common/tools/coin_info.py | 2 +- core/src/apps/common/coininfo.py | 1313 ++++++++++++++++- core/src/apps/common/coininfo.py.mako | 40 +- core/src/apps/ethereum/networks.py | 47 +- core/src/apps/ethereum/networks.py.mako | 13 +- core/src/apps/ethereum/tokens.py | 152 +- core/src/apps/ethereum/tokens.py.mako | 16 +- tests/device_tests/bitcoin/test_bgold.py | 2 +- tests/device_tests/bitcoin/test_dash.py | 2 +- .../device_tests/bitcoin/test_signmessage.py | 7 +- .../bitcoin/test_signtx_payreq.py | 9 +- tests/ui_tests/fixtures.json | 90 -- 13 files changed, 1654 insertions(+), 153 deletions(-) diff --git a/common/defs/support.json b/common/defs/support.json index ed46cc4ed3..8f0a77d12d 100644 --- a/common/defs/support.json +++ b/common/defs/support.json @@ -341,6 +341,120 @@ "misc:LSK": "Incompatible mainnet hard-fork" } }, + "T3T1": { + "supported": { + "bitcoin:ACM": "2.6.1", + "bitcoin:AXE": "2.6.1", + "bitcoin:BCH": "2.6.1", + "bitcoin:BTC": "2.6.1", + "bitcoin:BTCP": "2.6.1", + "bitcoin:BTX": "2.6.1", + "bitcoin:CPU": "2.6.1", + "bitcoin:CRW": "2.6.1", + "bitcoin:DOGE": "2.6.1", + "bitcoin:ELEMENTS": "2.6.1", + "bitcoin:FIRO": "2.6.1", + "bitcoin:FJC": "2.6.1", + "bitcoin:FLO": "2.6.1", + "bitcoin:FTC": "2.6.1", + "bitcoin:GRS": "2.6.1", + "bitcoin:KMD": "2.6.1", + "bitcoin:KOTO": "2.6.1", + "bitcoin:LTC": "2.6.1", + "bitcoin:MONA": "2.6.1", + "bitcoin:PPC": "2.6.1", + "bitcoin:QTUM": "2.6.1", + "bitcoin:REGTEST": "2.6.1", + "bitcoin:RITO": "2.6.1", + "bitcoin:RVN": "2.6.1", + "bitcoin:SMART": "2.6.1", + "bitcoin:SYS": "2.6.1", + "bitcoin:TAZ": "2.6.1", + "bitcoin:TBCH": "2.6.1", + "bitcoin:TEST": "2.6.1", + "bitcoin:UNO": "2.6.1", + "bitcoin:VIA": "2.6.1", + "bitcoin:VIPS": "2.6.1", + "bitcoin:XPM": "2.6.1", + "bitcoin:XRC": "2.6.1", + "bitcoin:XSN": "2.6.1", + "bitcoin:XVG": "2.6.1", + "bitcoin:ZCR": "2.6.1", + "bitcoin:ZEC": "2.6.1", + "bitcoin:tFIRO": "2.6.1", + "bitcoin:tGRS": "2.6.1", + "bitcoin:tLTC": "2.6.1", + "bitcoin:tPPC": "2.6.1", + "bitcoin:tQTUM": "2.6.1", + "bitcoin:tRVN": "2.6.1", + "bitcoin:tSMART": "2.6.1", + "erc20:bnb:ATOM": "2.6.1", + "erc20:eth:AAVE": "2.6.1", + "erc20:eth:APE": "2.6.1", + "erc20:eth:AXS": "2.6.1", + "erc20:eth:BUSD": "2.6.1", + "erc20:eth:CHZ": "2.6.1", + "erc20:eth:CRO": "2.6.1", + "erc20:eth:DAI": "2.6.1", + "erc20:eth:FRAX": "2.6.1", + "erc20:eth:LEO": "2.6.1", + "erc20:eth:LINK": "2.6.1", + "erc20:eth:MANA": "2.6.1", + "erc20:eth:MATIC": "2.6.1", + "erc20:eth:OKB": "2.6.1", + "erc20:eth:QNT": "2.6.1", + "erc20:eth:SAND": "2.6.1", + "erc20:eth:SHIB": "2.6.1", + "erc20:eth:STETH": "2.6.1", + "erc20:eth:UNI": "2.6.1", + "erc20:eth:USDC": "2.6.1", + "erc20:eth:USDT": "2.6.1", + "erc20:eth:WBTC": "2.6.1", + "erc20:eth:XCN": "2.6.1", + "erc20:matic:WAVAX": "2.6.1", + "eth:BNB:56": "2.6.1", + "eth:ETC:61": "2.6.1", + "eth:ETH:1": "2.6.1", + "eth:MATIC:137": "2.6.1", + "eth:tETH:3": "2.6.1", + "eth:tETH:4": "2.6.1", + "eth:tETH:5": "2.6.1", + "misc:ADA": "2.6.1", + "misc:BNB": "2.6.1", + "misc:MAID": "2.6.1", + "misc:OMNI": "2.6.1", + "misc:SOL": "2.6.4", + "misc:USDT": "2.6.1", + "misc:XLM": "2.6.1", + "misc:XMR": "2.6.1", + "misc:XRP": "2.6.1", + "misc:XTZ": "2.6.1", + "misc:tADA": "2.6.1", + "misc:tXRP": "2.6.1", + "nem:BREEZE": "2.6.1", + "nem:DIM": "2.6.1", + "nem:DIMTOK": "2.6.1", + "nem:PAC:CHS": "2.6.1", + "nem:PAC:HRT": "2.6.1" + }, + "unsupported": { + "bitcoin:BTG": "not for T3T1 (#2793)", + "bitcoin:DASH": "not for T3T1 (#2793)", + "bitcoin:DCR": "not for T3T1 (#2793)", + "bitcoin:DGB": "not for T3T1 (#2793)", + "bitcoin:NMC": "not for T3T1 (#2793)", + "bitcoin:PART": "incompatible fork", + "bitcoin:TBTG": "not for T3T1 (#2793)", + "bitcoin:TDCR": "not for T3T1 (#2793)", + "bitcoin:TRC": "address_type collides with Bitcoin", + "bitcoin:VTC": "not for T3T1 (#2793)", + "bitcoin:tDASH": "not for T3T1 (#2793)", + "bitcoin:tPART": "incompatible fork", + "misc:EOS": "not for T3T1 (#2793)", + "misc:LSK": "Incompatible mainnet hard-fork", + "nem:XEM": "not for T3T1 (#2793)" + } + }, "connect": { "supported": { "bitcoin:ACM": true, diff --git a/common/tools/coin_info.py b/common/tools/coin_info.py index a86b4bb129..26b2c663ad 100755 --- a/common/tools/coin_info.py +++ b/common/tools/coin_info.py @@ -450,7 +450,7 @@ def _load_fido_apps() -> FidoApps: RELEASES_URL = "https://data.trezor.io/firmware/{}/releases.json" MISSING_SUPPORT_MEANS_NO = ("connect", "suite") -VERSIONED_SUPPORT_INFO = ("T1B1", "T2T1", "T2B1") +VERSIONED_SUPPORT_INFO = ("T1B1", "T2T1", "T2B1", "T3T1") def get_support_data() -> SupportData: diff --git a/core/src/apps/common/coininfo.py b/core/src/apps/common/coininfo.py index 8fa146f6b8..0809349ad1 100644 --- a/core/src/apps/common/coininfo.py +++ b/core/src/apps/common/coininfo.py @@ -94,7 +94,7 @@ def __eq__(self, other: Any) -> bool: # fmt: off def by_name(name: str) -> CoinInfo: - if utils.MODEL_IS_T2B1: + if utils.INTERNAL_MODEL == "T2B1": if name == "Bitcoin": return CoinInfo( name, # coin_name @@ -1402,7 +1402,1315 @@ def by_name(name: str) -> CoinInfo: None, # confidential_assets ) raise ValueError # Unknown coin name - else: + if utils.INTERNAL_MODEL == "T3T1": + if name == "Bitcoin": + return CoinInfo( + name, # coin_name + "BTC", # coin_shortcut + 8, # decimals + 0, # address_type + 5, # address_type_p2sh + 2000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0295b43f, # xpub_magic_multisig_segwit_p2sh + 0x02aa7ed3, # xpub_magic_multisig_segwit_native + "bc", # bech32_prefix + None, # cashaddr_prefix + 0, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Regtest": + return CoinInfo( + name, # coin_name + "REGTEST", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x024289ef, # xpub_magic_multisig_segwit_p2sh + 0x02575483, # xpub_magic_multisig_segwit_native + "bcrt", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Testnet": + return CoinInfo( + name, # coin_name + "TEST", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x024289ef, # xpub_magic_multisig_segwit_p2sh + 0x02575483, # xpub_magic_multisig_segwit_native + "tb", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if not utils.BITCOIN_ONLY: + if name == "Actinium": + return CoinInfo( + name, # coin_name + "ACM", # coin_shortcut + 8, # decimals + 53, # address_type + 55, # address_type_p2sh + 320000000000, # maxfee_kb + "Actinium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "acm", # bech32_prefix + None, # cashaddr_prefix + 228, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Axe": + return CoinInfo( + name, # coin_name + "AXE", # coin_shortcut + 8, # decimals + 55, # address_type + 16, # address_type_p2sh + 21000000000, # maxfee_kb + "DarkCoin Signed Message:\n", # signed_message_header + 0x02fe52cc, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 4242, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bcash": + return CoinInfo( + name, # coin_name + "BCH", # coin_shortcut + 8, # decimals + 0, # address_type + 5, # address_type_p2sh + 14000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + "bitcoincash", # cashaddr_prefix + 145, # slip44 + False, # segwit + False, # taproot + 0, # fork_id + True, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bcash Testnet": + return CoinInfo( + name, # coin_name + "TBCH", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + "bchtest", # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + 0, # fork_id + True, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bprivate": + return CoinInfo( + name, # coin_name + "BTCP", # coin_shortcut + 8, # decimals + 4901, # address_type + 5039, # address_type_p2sh + 32000000000, # maxfee_kb + "BitcoinPrivate Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 183, # slip44 + False, # segwit + False, # taproot + 42, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bitcore": + return CoinInfo( + name, # coin_name + "BTX", # coin_shortcut + 8, # decimals + 3, # address_type + 125, # address_type_p2sh + 14000000000, # maxfee_kb + "BitCore Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "btx", # bech32_prefix + None, # cashaddr_prefix + 160, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "CPUchain": + return CoinInfo( + name, # coin_name + "CPU", # coin_shortcut + 8, # decimals + 28, # address_type + 30, # address_type_p2sh + 8700000000000, # maxfee_kb + "CPUchain Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "cpu", # bech32_prefix + None, # cashaddr_prefix + 363, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Crown": + return CoinInfo( + name, # coin_name + "CRW", # coin_shortcut + 8, # decimals + 95495, # address_type + 95473, # address_type_p2sh + 52000000000, # maxfee_kb + "Crown Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 72, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Dogecoin": + return CoinInfo( + name, # coin_name + "DOGE", # coin_shortcut + 8, # decimals + 30, # address_type + 22, # address_type_p2sh + 1200000000000, # maxfee_kb + "Dogecoin Signed Message:\n", # signed_message_header + 0x02facafd, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 3, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Elements": + return CoinInfo( + name, # coin_name + "ELEMENTS", # coin_shortcut + 8, # decimals + 235, # address_type + 75, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "ert", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + {'address_prefix': 4, 'blech32_prefix': 'el'}, # confidential_assets + ) + if name == "Feathercoin": + return CoinInfo( + name, # coin_name + "FTC", # coin_shortcut + 8, # decimals + 14, # address_type + 5, # address_type_p2sh + 390000000000, # maxfee_kb + "Feathercoin Signed Message:\n", # signed_message_header + 0x0488bc26, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488bc26, # xpub_magic_multisig_segwit_p2sh + 0x0488bc26, # xpub_magic_multisig_segwit_native + "fc", # bech32_prefix + None, # cashaddr_prefix + 8, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Firo": + return CoinInfo( + name, # coin_name + "FIRO", # coin_shortcut + 8, # decimals + 82, # address_type + 7, # address_type_p2sh + 640000000, # maxfee_kb + "Zcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 136, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Firo Testnet": + return CoinInfo( + name, # coin_name + "tFIRO", # coin_shortcut + 8, # decimals + 65, # address_type + 178, # address_type_p2sh + 1000000, # maxfee_kb + "Zcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Florincoin": + return CoinInfo( + name, # coin_name + "FLO", # coin_shortcut + 8, # decimals + 35, # address_type + 94, # address_type_p2sh + 78000000000, # maxfee_kb + "Florincoin Signed Message:\n", # signed_message_header + 0x00174921, # xpub_magic + 0x01b26ef6, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x00174921, # xpub_magic_multisig_segwit_p2sh + 0x00174921, # xpub_magic_multisig_segwit_native + "flo", # bech32_prefix + None, # cashaddr_prefix + 216, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Fujicoin": + return CoinInfo( + name, # coin_name + "FJC", # coin_shortcut + 8, # decimals + 36, # address_type + 16, # address_type_p2sh + 35000000000000, # maxfee_kb + "FujiCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0295b43f, # xpub_magic_multisig_segwit_p2sh + 0x02aa7ed3, # xpub_magic_multisig_segwit_native + "fc", # bech32_prefix + None, # cashaddr_prefix + 75, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Groestlcoin": + return CoinInfo( + name, # coin_name + "GRS", # coin_shortcut + 8, # decimals + 36, # address_type + 5, # address_type_p2sh + 16000000000, # maxfee_kb + "GroestlCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "grs", # bech32_prefix + None, # cashaddr_prefix + 17, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-groestl', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Groestlcoin Testnet": + return CoinInfo( + name, # coin_name + "tGRS", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 100000, # maxfee_kb + "GroestlCoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tgrs", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-groestl', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Komodo": + return CoinInfo( + name, # coin_name + "KMD", # coin_shortcut + 8, # decimals + 60, # address_type + 85, # address_type_p2sh + 4800000000, # maxfee_kb + "Komodo Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 141, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + True, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Koto": + return CoinInfo( + name, # coin_name + "KOTO", # coin_shortcut + 8, # decimals + 6198, # address_type + 6203, # address_type_p2sh + 1000000, # maxfee_kb + "Koto Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 510, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Litecoin": + return CoinInfo( + name, # coin_name + "LTC", # coin_shortcut + 8, # decimals + 48, # address_type + 50, # address_type_p2sh + 67000000, # maxfee_kb + "Litecoin Signed Message:\n", # signed_message_header + 0x019da462, # xpub_magic + 0x01b26ef6, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x019da462, # xpub_magic_multisig_segwit_p2sh + 0x019da462, # xpub_magic_multisig_segwit_native + "ltc", # bech32_prefix + None, # cashaddr_prefix + 2, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Litecoin Testnet": + return CoinInfo( + name, # coin_name + "tLTC", # coin_shortcut + 8, # decimals + 111, # address_type + 58, # address_type_p2sh + 40000000, # maxfee_kb + "Litecoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tltc", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Monacoin": + return CoinInfo( + name, # coin_name + "MONA", # coin_shortcut + 8, # decimals + 50, # address_type + 55, # address_type_p2sh + 2100000000, # maxfee_kb + "Monacoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "mona", # bech32_prefix + None, # cashaddr_prefix + 22, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Peercoin": + return CoinInfo( + name, # coin_name + "PPC", # coin_shortcut + 6, # decimals + 55, # address_type + 117, # address_type_p2sh + 13000000000, # maxfee_kb + "Peercoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "pc", # bech32_prefix + None, # cashaddr_prefix + 6, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Peercoin Testnet": + return CoinInfo( + name, # coin_name + "tPPC", # coin_shortcut + 6, # decimals + 111, # address_type + 196, # address_type_p2sh + 2000000, # maxfee_kb + "Peercoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tpc", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Primecoin": + return CoinInfo( + name, # coin_name + "XPM", # coin_shortcut + 8, # decimals + 23, # address_type + 83, # address_type_p2sh + 89000000000, # maxfee_kb + "Primecoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 24, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Qtum": + return CoinInfo( + name, # coin_name + "QTUM", # coin_shortcut + 8, # decimals + 58, # address_type + 50, # address_type_p2sh + 1000000000, # maxfee_kb + "Qtum Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "qc", # bech32_prefix + None, # cashaddr_prefix + 2301, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Qtum Testnet": + return CoinInfo( + name, # coin_name + "tQTUM", # coin_shortcut + 8, # decimals + 120, # address_type + 110, # address_type_p2sh + 40000000, # maxfee_kb + "Qtum Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tq", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ravencoin": + return CoinInfo( + name, # coin_name + "RVN", # coin_shortcut + 8, # decimals + 60, # address_type + 122, # address_type_p2sh + 170000000000, # maxfee_kb + "Raven Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 175, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ravencoin Testnet": + return CoinInfo( + name, # coin_name + "tRVN", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 170000000000, # maxfee_kb + "Raven Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ritocoin": + return CoinInfo( + name, # coin_name + "RITO", # coin_shortcut + 8, # decimals + 25, # address_type + 105, # address_type_p2sh + 39000000000000, # maxfee_kb + "Rito Signed Message:\n", # signed_message_header + 0x0534e7ca, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 19169, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "SmartCash": + return CoinInfo( + name, # coin_name + "SMART", # coin_shortcut + 8, # decimals + 63, # address_type + 18, # address_type_p2sh + 780000000000, # maxfee_kb + "SmartCash Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 224, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-smart', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "SmartCash Testnet": + return CoinInfo( + name, # coin_name + "tSMART", # coin_shortcut + 8, # decimals + 65, # address_type + 21, # address_type_p2sh + 1000000, # maxfee_kb + "SmartCash Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-smart', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Stakenet": + return CoinInfo( + name, # coin_name + "XSN", # coin_shortcut + 8, # decimals + 76, # address_type + 16, # address_type_p2sh + 11000000000, # maxfee_kb + "DarkCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "xc", # bech32_prefix + None, # cashaddr_prefix + 199, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Syscoin": + return CoinInfo( + name, # coin_name + "SYS", # coin_shortcut + 8, # decimals + 63, # address_type + 5, # address_type_p2sh + 42000000000, # maxfee_kb + "Syscoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "sys", # bech32_prefix + None, # cashaddr_prefix + 57, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Unobtanium": + return CoinInfo( + name, # coin_name + "UNO", # coin_shortcut + 8, # decimals + 130, # address_type + 30, # address_type_p2sh + 53000000, # maxfee_kb + "Unobtanium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 92, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "VIPSTARCOIN": + return CoinInfo( + name, # coin_name + "VIPS", # coin_shortcut + 8, # decimals + 70, # address_type + 50, # address_type_p2sh + 140000000000000, # maxfee_kb + "VIPSTARCOIN Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "vips", # bech32_prefix + None, # cashaddr_prefix + 1919, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Verge": + return CoinInfo( + name, # coin_name + "XVG", # coin_shortcut + 6, # decimals + 30, # address_type + 33, # address_type_p2sh + 550000000000, # maxfee_kb + "Name: Dogecoin Dark\n", # signed_message_header + 0x022d2533, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 77, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Viacoin": + return CoinInfo( + name, # coin_name + "VIA", # coin_shortcut + 8, # decimals + 71, # address_type + 33, # address_type_p2sh + 14000000000, # maxfee_kb + "Viacoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "via", # bech32_prefix + None, # cashaddr_prefix + 14, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "ZCore": + return CoinInfo( + name, # coin_name + "ZCR", # coin_shortcut + 8, # decimals + 142, # address_type + 145, # address_type_p2sh + 170000000000, # maxfee_kb + "DarkNet Signed Message:\n", # signed_message_header + 0x04b24746, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 428, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Zcash": + return CoinInfo( + name, # coin_name + "ZEC", # coin_shortcut + 8, # decimals + 7352, # address_type + 7357, # address_type_p2sh + 51000000, # maxfee_kb + "Zcash Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 133, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Zcash Testnet": + return CoinInfo( + name, # coin_name + "TAZ", # coin_shortcut + 8, # decimals + 7461, # address_type + 7354, # address_type_p2sh + 10000000, # maxfee_kb + "Zcash Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Brhodium": + return CoinInfo( + name, # coin_name + "XRC", # coin_shortcut + 8, # decimals + 61, # address_type + 123, # address_type_p2sh + 1000000000, # maxfee_kb + "BitCoin Rhodium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 10291, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + raise ValueError # Unknown coin name + if utils.INTERNAL_MODEL == "T2T1": if name == "Bitcoin": return CoinInfo( name, # coin_name @@ -2971,3 +4279,4 @@ def by_name(name: str) -> CoinInfo: None, # confidential_assets ) raise ValueError # Unknown coin name + raise ValueError # Unknown model diff --git a/core/src/apps/common/coininfo.py.mako b/core/src/apps/common/coininfo.py.mako index 38e3716bbe..23dc0efd91 100644 --- a/core/src/apps/common/coininfo.py.mako +++ b/core/src/apps/common/coininfo.py.mako @@ -134,20 +134,19 @@ ATTRIBUTES = ( ("confidential_assets", optional_dict), ) -btc_names = ["Bitcoin", "Testnet", "Regtest"] - -# TODO: make this easily extendable for more models - -coins_btc_t2t1 = [c for c in supported_on("T2T1", bitcoin) if c.name in btc_names] -coins_alt_t2t1 = [c for c in supported_on("T2T1", bitcoin) if c.name not in btc_names] +models = ["T2B1", "T3T1", "T2T1"] -coins_btc_t2b1 = [c for c in supported_on("T2B1", bitcoin) if c.name in btc_names] -coins_alt_t2b1 = [c for c in supported_on("T2B1", bitcoin) if c.name not in btc_names] +btc_names = ["Bitcoin", "Testnet", "Regtest"] +coins = {} +for model in models: + coins.setdefault('btc', {})[model] = [c for c in supported_on(model, bitcoin) if c.name in btc_names] + coins.setdefault('alt', {})[model] = [c for c in supported_on(model, bitcoin) if c.name not in btc_names] %>\ def by_name(name: str) -> CoinInfo: - if utils.MODEL_IS_T2B1: -% for coin in coins_btc_t2b1: +% for model in models: + if utils.INTERNAL_MODEL == "${model}": +% for coin in coins['btc'][model]: if name == ${black_repr(coin["coin_name"])}: return CoinInfo( % for attr, func in ATTRIBUTES: @@ -156,7 +155,7 @@ def by_name(name: str) -> CoinInfo: ) % endfor if not utils.BITCOIN_ONLY: -% for coin in coins_alt_t2b1: +% for coin in coins['alt'][model]: if name == ${black_repr(coin["coin_name"])}: return CoinInfo( % for attr, func in ATTRIBUTES: @@ -165,22 +164,5 @@ def by_name(name: str) -> CoinInfo: ) % endfor raise ValueError # Unknown coin name - else: -% for coin in coins_btc_t2t1: - if name == ${black_repr(coin["coin_name"])}: - return CoinInfo( - % for attr, func in ATTRIBUTES: - ${func(coin[attr])}, # ${attr} - % endfor - ) -% endfor - if not utils.BITCOIN_ONLY: -% for coin in coins_alt_t2t1: - if name == ${black_repr(coin["coin_name"])}: - return CoinInfo( - % for attr, func in ATTRIBUTES: - ${func(coin[attr])}, # ${attr} - % endfor - ) % endfor - raise ValueError # Unknown coin name + raise ValueError # Unknown model diff --git a/core/src/apps/ethereum/networks.py b/core/src/apps/ethereum/networks.py index 12a7420264..a30ef72309 100644 --- a/core/src/apps/ethereum/networks.py +++ b/core/src/apps/ethereum/networks.py @@ -59,7 +59,7 @@ def by_slip44(slip44: int) -> EthereumNetworkInfo: # fmt: off def _networks_iterator() -> Iterator[NetworkInfoTuple]: - if utils.MODEL_IS_T2B1: + if utils.INTERNAL_MODEL == "T2B1": yield ( 1, # chain_id 60, # slip44 @@ -102,7 +102,50 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: "MATIC", # symbol "Polygon", # name ) - else: + if utils.INTERNAL_MODEL == "T3T1": + yield ( + 1, # chain_id + 60, # slip44 + "ETH", # symbol + "Ethereum", # name + ) + yield ( + 3, # chain_id + 1, # slip44 + "tETH", # symbol + "Ropsten", # name + ) + yield ( + 4, # chain_id + 1, # slip44 + "tETH", # symbol + "Rinkeby", # name + ) + yield ( + 5, # chain_id + 1, # slip44 + "tETH", # symbol + "Görli", # name + ) + yield ( + 56, # chain_id + 714, # slip44 + "BNB", # symbol + "Binance Smart Chain", # name + ) + yield ( + 61, # chain_id + 61, # slip44 + "ETC", # symbol + "Ethereum Classic", # name + ) + yield ( + 137, # chain_id + 966, # slip44 + "MATIC", # symbol + "Polygon", # name + ) + if utils.INTERNAL_MODEL == "T2T1": yield ( 1, # chain_id 60, # slip44 diff --git a/core/src/apps/ethereum/networks.py.mako b/core/src/apps/ethereum/networks.py.mako index e310600cfd..62dee5d61f 100644 --- a/core/src/apps/ethereum/networks.py.mako +++ b/core/src/apps/ethereum/networks.py.mako @@ -59,8 +59,9 @@ def by_slip44(slip44: int) -> EthereumNetworkInfo: # fmt: off def _networks_iterator() -> Iterator[NetworkInfoTuple]: - if utils.MODEL_IS_T2B1: -% for n in sorted(supported_on("T2B1", eth), key=lambda network: (int(network.chain_id), network.name)): +% for model in ["T2B1", "T3T1", "T2T1"]: + if utils.INTERNAL_MODEL == "${model}": +% for n in sorted(supported_on(model, eth), key=lambda network: (int(network.chain_id), network.name)): yield ( ${n.chain_id}, # chain_id ${n.slip44}, # slip44 @@ -68,12 +69,4 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: "${n.name}", # name ) % endfor - else: -% for n in sorted(supported_on("T2T1", eth), key=lambda network: (int(network.chain_id), network.name)): - yield ( - ${n.chain_id}, # chain_id - ${n.slip44}, # slip44 - "${n.shortcut}", # symbol - "${n.name}", # name - ) % endfor diff --git a/core/src/apps/ethereum/tokens.py b/core/src/apps/ethereum/tokens.py index eeb61cf861..186eeb2a9c 100644 --- a/core/src/apps/ethereum/tokens.py +++ b/core/src/apps/ethereum/tokens.py @@ -42,7 +42,7 @@ def token_by_chain_address(chain_id: int, address: bytes) -> EthereumTokenInfo | def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]: - if utils.MODEL_IS_T2B1: + if utils.INTERNAL_MODEL == "T2B1": if chain_id == 1: # eth yield ( # address, symbol, decimals, name b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9", @@ -190,7 +190,155 @@ def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]: 18, "Wrapped AVAX", ) - else: + if utils.INTERNAL_MODEL == "T3T1": + if chain_id == 1: # eth + yield ( # address, symbol, decimals, name + b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9", + "AAVE", + 18, + "Aave", + ) + yield ( # address, symbol, decimals, name + b"\x4d\x22\x44\x52\x80\x1a\xce\xd8\xb2\xf0\xae\xbe\x15\x53\x79\xbb\x5d\x59\x43\x81", + "APE", + 18, + "ApeCoin", + ) + yield ( # address, symbol, decimals, name + b"\xbb\x0e\x17\xef\x65\xf8\x2a\xb0\x18\xd8\xed\xd7\x76\xe8\xdd\x94\x03\x27\xb2\x8b", + "AXS", + 18, + "Axie Infinity", + ) + yield ( # address, symbol, decimals, name + b"\x4f\xab\xb1\x45\xd6\x46\x52\xa9\x48\xd7\x25\x33\x02\x3f\x6e\x7a\x62\x3c\x7c\x53", + "BUSD", + 18, + "Binance USD", + ) + yield ( # address, symbol, decimals, name + b"\x35\x06\x42\x4f\x91\xfd\x33\x08\x44\x66\xf4\x02\xd5\xd9\x7f\x05\xf8\xe3\xb4\xaf", + "CHZ", + 18, + "Chiliz", + ) + yield ( # address, symbol, decimals, name + b"\xa0\xb7\x3e\x1f\xf0\xb8\x09\x14\xab\x6f\xe0\x44\x4e\x65\x84\x8c\x4c\x34\x45\x0b", + "CRO", + 8, + "Cronos", + ) + yield ( # address, symbol, decimals, name + b"\x6b\x17\x54\x74\xe8\x90\x94\xc4\x4d\xa9\x8b\x95\x4e\xed\xea\xc4\x95\x27\x1d\x0f", + "DAI", + 18, + "Dai", + ) + yield ( # address, symbol, decimals, name + b"\x85\x3d\x95\x5a\xce\xf8\x22\xdb\x05\x8e\xb8\x50\x59\x11\xed\x77\xf1\x75\xb9\x9e", + "FRAX", + 18, + "Frax", + ) + yield ( # address, symbol, decimals, name + b"\x2a\xf5\xd2\xad\x76\x74\x11\x91\xd1\x5d\xfe\x7b\xf6\xac\x92\xd4\xbd\x91\x2c\xa3", + "LEO", + 18, + "LEO Token", + ) + yield ( # address, symbol, decimals, name + b"\x51\x49\x10\x77\x1a\xf9\xca\x65\x6a\xf8\x40\xdf\xf8\x3e\x82\x64\xec\xf9\x86\xca", + "LINK", + 18, + "Chainlink", + ) + yield ( # address, symbol, decimals, name + b"\x0f\x5d\x2f\xb2\x9f\xb7\xd3\xcf\xee\x44\x4a\x20\x02\x98\xf4\x68\x90\x8c\xc9\x42", + "MANA", + 18, + "Decentraland", + ) + yield ( # address, symbol, decimals, name + b"\x7d\x1a\xfa\x7b\x71\x8f\xb8\x93\xdb\x30\xa3\xab\xc0\xcf\xc6\x08\xaa\xcf\xeb\xb0", + "MATIC", + 18, + "Polygon", + ) + yield ( # address, symbol, decimals, name + b"\x75\x23\x1f\x58\xb4\x32\x40\xc9\x71\x8d\xd5\x8b\x49\x67\xc5\x11\x43\x42\xa8\x6c", + "OKB", + 18, + "OKB", + ) + yield ( # address, symbol, decimals, name + b"\x4a\x22\x0e\x60\x96\xb2\x5e\xad\xb8\x83\x58\xcb\x44\x06\x8a\x32\x48\x25\x46\x75", + "QNT", + 18, + "Quant", + ) + yield ( # address, symbol, decimals, name + b"\x38\x45\xba\xda\xde\x8e\x6d\xff\x04\x98\x20\x68\x0d\x1f\x14\xbd\x39\x03\xa5\xd0", + "SAND", + 18, + "The Sandbox", + ) + yield ( # address, symbol, decimals, name + b"\x95\xad\x61\xb0\xa1\x50\xd7\x92\x19\xdc\xf6\x4e\x1e\x6c\xc0\x1f\x0b\x64\xc4\xce", + "SHIB", + 18, + "Shiba Inu", + ) + yield ( # address, symbol, decimals, name + b"\xae\x7a\xb9\x65\x20\xde\x3a\x18\xe5\xe1\x11\xb5\xea\xab\x09\x53\x12\xd7\xfe\x84", + "STETH", + 18, + "Lido Staked Ether", + ) + yield ( # address, symbol, decimals, name + b"\x1f\x98\x40\xa8\x5d\x5a\xf5\xbf\x1d\x17\x62\xf9\x25\xbd\xad\xdc\x42\x01\xf9\x84", + "UNI", + 18, + "Uniswap", + ) + yield ( # address, symbol, decimals, name + b"\xa0\xb8\x69\x91\xc6\x21\x8b\x36\xc1\xd1\x9d\x4a\x2e\x9e\xb0\xce\x36\x06\xeb\x48", + "USDC", + 6, + "USD Coin", + ) + yield ( # address, symbol, decimals, name + b"\xda\xc1\x7f\x95\x8d\x2e\xe5\x23\xa2\x20\x62\x06\x99\x45\x97\xc1\x3d\x83\x1e\xc7", + "USDT", + 6, + "Tether", + ) + yield ( # address, symbol, decimals, name + b"\x22\x60\xfa\xc5\xe5\x54\x2a\x77\x3a\xa4\x4f\xbc\xfe\xdf\x7c\x19\x3b\xc2\xc5\x99", + "WBTC", + 8, + "Wrapped Bitcoin", + ) + yield ( # address, symbol, decimals, name + b"\xa2\xcd\x3d\x43\xc7\x75\x97\x8a\x96\xbd\xbf\x12\xd7\x33\xd5\xa1\xed\x94\xfb\x18", + "XCN", + 18, + "Chain", + ) + if chain_id == 56: # bnb + yield ( # address, symbol, decimals, name + b"\x0e\xb3\xa7\x05\xfc\x54\x72\x50\x37\xcc\x9e\x00\x8b\xde\xde\x69\x7f\x62\xf3\x35", + "ATOM", + 18, + "Cosmos Hub", + ) + if chain_id == 137: # matic + yield ( # address, symbol, decimals, name + b"\x2c\x89\xbb\xc9\x2b\xd8\x6f\x80\x75\xd1\xde\xcc\x58\xc7\xf4\xe0\x10\x7f\x28\x6b", + "WAVAX", + 18, + "Wrapped AVAX", + ) + if utils.INTERNAL_MODEL == "T2T1": if chain_id == 1: # eth yield ( # address, symbol, decimals, name b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9", diff --git a/core/src/apps/ethereum/tokens.py.mako b/core/src/apps/ethereum/tokens.py.mako index afb60851d1..b116bc6928 100644 --- a/core/src/apps/ethereum/tokens.py.mako +++ b/core/src/apps/ethereum/tokens.py.mako @@ -51,8 +51,9 @@ def token_by_chain_address(chain_id: int, address: bytes) -> EthereumTokenInfo | def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]: - if utils.MODEL_IS_T2B1: -% for token_chain_id, tokens in group_tokens(supported_on("T2B1", erc20)).items(): +% for model in ["T2B1", "T3T1", "T2T1"]: + if utils.INTERNAL_MODEL == "${model}": +% for token_chain_id, tokens in group_tokens(supported_on(model, erc20)).items(): if chain_id == ${token_chain_id}: # ${tokens[0].chain} % for t in tokens: yield ( # address, symbol, decimals, name @@ -63,15 +64,4 @@ def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]: ) % endfor % endfor - else: -% for token_chain_id, tokens in group_tokens(supported_on("T2T1", erc20)).items(): - if chain_id == ${token_chain_id}: # ${tokens[0].chain} - % for t in tokens: - yield ( # address, symbol, decimals, name - ${black_repr(t.address_bytes)}, - ${black_repr(t.symbol)}, - ${t.decimals}, - ${black_repr(t.name.strip())}, - ) - % endfor % endfor diff --git a/tests/device_tests/bitcoin/test_bgold.py b/tests/device_tests/bitcoin/test_bgold.py index d19c22caf5..eae573dbe5 100644 --- a/tests/device_tests/bitcoin/test_bgold.py +++ b/tests/device_tests/bitcoin/test_bgold.py @@ -47,7 +47,7 @@ "a63dbedd8cd284bf0d3c468e84b9b0eeb14c3a08824eab8f80e7723a299f30db" ) -pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1] +pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] # All data taken from T1 diff --git a/tests/device_tests/bitcoin/test_dash.py b/tests/device_tests/bitcoin/test_dash.py index 92d472c813..1c48f09b7a 100644 --- a/tests/device_tests/bitcoin/test_dash.py +++ b/tests/device_tests/bitcoin/test_dash.py @@ -40,7 +40,7 @@ "15575a1c874bd60a819884e116c42e6791c8283ce1fc3b79f0d18531a61bbb8a" ) -pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1] +pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] def test_send_dash(client: Client): diff --git a/tests/device_tests/bitcoin/test_signmessage.py b/tests/device_tests/bitcoin/test_signmessage.py index 90f2fde4a0..64354759ce 100644 --- a/tests/device_tests/bitcoin/test_signmessage.py +++ b/tests/device_tests/bitcoin/test_signmessage.py @@ -34,7 +34,8 @@ def case( *args: Any, altcoin: bool = False, skip_t1b1: bool = False, - skip_t2b1: bool = False + skip_t2b1: bool = False, + skip_t3t1: bool = False ): marks = [] if altcoin: @@ -43,6 +44,8 @@ def case( marks.append(pytest.mark.skip_t1b1) if skip_t2b1: marks.append(pytest.mark.skip_t2b1) + if skip_t3t1: + marks.append(pytest.mark.skip_t3t1) return pytest.param(*args, id=id, marks=marks) @@ -263,6 +266,7 @@ def case( "206b1f8ba47ef9eaf87aa900e41ab1e97f67e8c09292faa4acf825228d074c4b774484046dcb1d9bbf0603045dbfb328c3e1b0c09c5ae133e89e604a67a1fc6cca", altcoin=True, skip_t2b1=True, + skip_t3t1=True, ), case( "decred-empty", @@ -275,6 +279,7 @@ def case( "1fd2d57490b44a0361c7809768cad032d41ba1d4b7a297f935fc65ae05f71de7ea0c6c6fd265cc5154f1fa4acd7006b6a00ddd67fb7333c1594aff9120b3ba8024", altcoin=True, skip_t2b1=True, + skip_t3t1=True, ), ) diff --git a/tests/device_tests/bitcoin/test_signtx_payreq.py b/tests/device_tests/bitcoin/test_signtx_payreq.py index a1142defc9..72e3c9637f 100644 --- a/tests/device_tests/bitcoin/test_signtx_payreq.py +++ b/tests/device_tests/bitcoin/test_signtx_payreq.py @@ -36,12 +36,16 @@ pytestmark = [pytest.mark.skip_t1b1, pytest.mark.experimental] -def case(id, *args, altcoin: bool = False, skip_t2b1: bool = False): +def case( + id, *args, altcoin: bool = False, skip_t2b1: bool = False, skip_t3t1: bool = False +): marks = [] if altcoin: marks.append(pytest.mark.altcoin) if skip_t2b1: marks.append(pytest.mark.skip_t2b1) + if skip_t3t1: + marks.append(pytest.mark.skip_t3t1) return pytest.param(*args, id=id, marks=marks) @@ -115,12 +119,14 @@ def case(id, *args, altcoin: bool = False, skip_t2b1: bool = False): (PaymentRequestParams([0], memos1, get_nonce=True),), altcoin=True, skip_t2b1=True, + skip_t3t1=True, ), case( "out1", (PaymentRequestParams([1], memos2, get_nonce=True),), altcoin=True, skip_t2b1=True, + skip_t3t1=True, ), case("out2", (PaymentRequestParams([2], [], get_nonce=True),)), case( @@ -276,6 +282,7 @@ def test_payment_req_wrong_mac_refund(client: Client): @pytest.mark.altcoin @pytest.mark.skip_t2b1 +@pytest.mark.skip_t3t1 def test_payment_req_wrong_mac_purchase(client: Client): # Test wrong MAC in payment request memo. memo = CoinPurchaseMemo( diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index c6a1fd0948..8f9bc57d0f 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15724,17 +15724,6 @@ "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "13e14f251e58551ed1ec72882dec53bf786d42a572fd1d83873e7b92b37f33af", "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "ef2c0fa7a21272bb89f4d28f5e1577b54e55d89ac5e1f5c2aad33a8cdb2c4fa2", "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "f99dfbebba944f95f1f30a77c47f9dbdcea6e761cfdd0c420dd1835f05b9c081", -"T3T1_cs_bitcoin-test_bgold.py::test_attack_change_input": "25d8d3c633b4723500c0d08a691885129aabc8b5ab2d381ec1305b42a81c3440", -"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "25d8d3c633b4723500c0d08a691885129aabc8b5ab2d381ec1305b42a81c3440", -"T3T1_cs_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "d343fb6fa999aff949eba343168358b99db6f534647688ba5277a86b43f79a62", -"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_external_presigned": "71d21978e9f03d96868803f023f2d340132dd99e9dca9ae7d5f68da3055067c9", -"T3T1_cs_bitcoin-test_bgold.py::test_send_btg_multisig_change": "c64c6c574325f2be07d21b40d08f7fd104fc076c410ca08358ffd2cfe45c5db6", -"T3T1_cs_bitcoin-test_bgold.py::test_send_mixed_inputs": "3f0ef9378880369022d5eadbe2a2f748b9e2a78a82a87e5450106b86e4406a85", -"T3T1_cs_bitcoin-test_bgold.py::test_send_multisig_1": "d9f642e7f0bd4dd60ec00da2dc3eaba4efec8c9f1c6245b4a3cc27ea50386cac", -"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh": "4dea10f47de539102752a449d6bad5a6186eabfafb9350e0e1879e0e69a49544", -"T3T1_cs_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "0098c8b33b3058b3a5f610b8ed67605e355022613ce7f4f16216b5a8716c85c9", -"T3T1_cs_bitcoin-test_dash.py::test_send_dash": "335f7e6a2848b085002b697246f75643c8fc880547c588b455198eb5453f253f", -"T3T1_cs_bitcoin-test_dash.py::test_send_dash_dip2_input": "a41668351634e0edf22939bce11f223528316432d247c7982a2e2b526f0d1342", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", @@ -15972,8 +15961,6 @@ "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dba56c6086b06373ae3b2a73ff3cda693f982ad74ff54cb80a652e2d2096b2e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "41f5daa53c7b5ced79b626022b50ac050e0ebcf2f32d8a243a7fe1364ae030bc", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[decred]": "51e38efe9dc235c6685da45b3a4b71edcb58dc7564627f1b80bdd6b5fcb6c7ee", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "a58d3d6778193f6fcfad0ded221b771e12ebb1718b2b3e4bf8e7f4d214c17e35", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "7edbcf556534ebf6ae26350bb4a427067c35a3debeb039a2fbd225c00b39f889", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "94cc6185107ccfc1f42e0e7e987cad2ee734030531076d232ed0ea006abfce61", @@ -15993,8 +15980,6 @@ "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "8dcaf9b2f38e4d419090d4b067c4962b0e6a7af5b2a5e33b164c95e97fb537ff", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "c7c3b4178d5f0dc62094b35aa6f2339a7a6017442f122dd5a5509f50319925e0", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "63268e589d336c72a83b33986fcf295a6cbde09857bc09172f276b259f327d4d", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1e6a092053fba32fe77283283bdb62424ecbc6239184a22926e841a7d9a2cfd0", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "1a50cbf61828158fb092d31dc65ca3643604f935c5937ce8ea68e5437281eb26", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "ff85589955299d71075223bd8bce9756a798b1722946d02137434d11a872eae7", @@ -16097,15 +16082,12 @@ "T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3384acf255eb2c6c358aa82365bdd130069ce2cc13b48e9fd7ed6b7bee781bb2", "T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "7e0130bf9c752a1b2db395610a73b6afbb36d48f35bdf0296744ae9583d962eb", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c52186d8fedb3f710b8219f3ab2d57597c82a728f44496ca69569c184d3ae77f", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "1483bcf92bc1ed3c68a0bbc668257869c0a2265e1833798fafda202eabf7979d", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ce102efd7c5e9602a572ea437e0b4e34e08601bcca9b654b0f85f05a2d3b847d", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "74402c765f5dc15da422f747ad60ffac9e490eb78ee8080b3773074494b79f34", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "15f4895b6988d8ea0d8eca7fd794ba389e119b837e5e153454d9b772b6572d07", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "0304602342139735c7aa19e7ff75cce4643a9a6f330c130cf3a31cfaec5c0315", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b6374aa097b07421411e9d3917b34ac906a1560f61ba99bf6d261a0c09a1712e", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "a863aaac02bc102dffdbe1fd0bb16b61a0aedf7c92a2c873eba618422b7e1157", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "485a9c12d08b6044b71e8cdcfee42889abab2c2606ee53d9700288f1be918fcf", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "28f78742e4c34c8a55e3684bcbf4c79713ea53279536dec00b16bac9313d8ab0", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", @@ -17147,17 +17129,6 @@ "T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "a546916f892916d48fa253755740151a3a02731444cf8b390b1aaf3a3bbcbf6f", "T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "60503baf1c396d3b5fd275b89b5a0b4a8f877bab02868712a5fdbe5b5c45195c", "T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "bba776e12005c44b42750132ce34b2168cd020ff9908094c6ecdac9b3be3e753", -"T3T1_de_bitcoin-test_bgold.py::test_attack_change_input": "fedb5cdbd0c20d19e209816aa6f1140abe2746bdb50fe703a030ab72a98d7554", -"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "fedb5cdbd0c20d19e209816aa6f1140abe2746bdb50fe703a030ab72a98d7554", -"T3T1_de_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "d4ce1182a6875f21eb6cfc445ffc684575616473448076b99d36a0b4d4d54dc2", -"T3T1_de_bitcoin-test_bgold.py::test_send_btg_external_presigned": "10eea7b1988ea19534d01b3fe2db662b368d9e0670cbf06ceba8db099b19801b", -"T3T1_de_bitcoin-test_bgold.py::test_send_btg_multisig_change": "bef164479dbbecd892aeeea432489e2b7641586ee6ddf8a0814eaf6bd9e180f4", -"T3T1_de_bitcoin-test_bgold.py::test_send_mixed_inputs": "48a5bbf15f7f5a2bf7be487742c3829d81dd6871e3081b88515b31b47259b254", -"T3T1_de_bitcoin-test_bgold.py::test_send_multisig_1": "b52e9527d9e19ce9b040888bbc22f49b522b6848aaace3760ecd4c4bb16d9789", -"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh": "6cbe3eb5586c855c9abebd354e33c2c756967f583b20df71ec0764577d340781", -"T3T1_de_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "35c931ae56cc886089b0525d6d452cb0cea89248cd8503251c6cc865bafb2b11", -"T3T1_de_bitcoin-test_dash.py::test_send_dash": "8ef8313daf9b5ada908d1c0807b5950679769d45a975fea58d0a2a722682ea49", -"T3T1_de_bitcoin-test_dash.py::test_send_dash_dip2_input": "28a6bf66401c4ba2a14df3dcb550d6b061c4906d00499b5c3402891e5ba4d2a5", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", @@ -17395,8 +17366,6 @@ "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "208dd4db2f811fcc7bf39284784e6635fd06373281cbb38a02ef5d0e4372b0d9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "22124d4223cc9b020a8b7416b113935a459af564e90fd540fe42bf29118e70c2", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[decred]": "8952995825f122f9d1245d2b82359a809181c8fbb4626de9fe9f54a0d6a095d1", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "0f6be42afd5263571cac87e9c4f0153a7a2d3331a419e148ec0b142ddcffd468", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "f1706849538ac0b3d530c637a0f375ac8e911151410d1c5fc660cf9e6c970334", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "17a2cbc0d38e313552d9d29da3898f64a3f7402415e0e57fa317949499ca8348", @@ -17416,8 +17385,6 @@ "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "1f1e553cfae6c8c4aa1d991ec5e6aa72c2ec526b50d8672cec106861d4944067", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "aad36aa5771b97315adc9fd78ea87e0217b7b390747cf72918ef07d20b3fe14f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "cbfa937d264107c606088d07d9384d0f91a76628b66d8beb617d1859de19ad8a", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "13ed7efd7f1dee255bb3f3162eaa0f1145623783797d4fe67dbbc63185f6e86f", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "4f6008a3c77222f52a9ea5a32e6c21c349921e7d69ccdea30df7f2d58841e8a7", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "55756d77cf568f1ac44ad0d9cdd164eb942d66971aec9190b8f274bca1bbdab5", @@ -17520,15 +17487,12 @@ "T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d570a20acdef9b5a5c2aaacd02b0ecf81b4d7a3b35c3ea998f5fe074b89598b5", "T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e2a0389e4edbe48e0bb5d445d35484ca804ef4b48a95ed095c7c181bca574213", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "051bf0943867b221785de1c7a6638f5681d47b1d8117eaddff407b94c0273e60", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "64a5423955ac886b03d90784cf0f736a020f0fa5d07eb4fcf4f1861742149891", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "1746070960750d3d11f75f5c6002657f52f07fce1184b007868e343885bbc599", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d27a750f1a1589df35f62057225cb9681c955fd57905fe5e761a9582ecc58fec", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8f09be162718b6551814c8d77623a1684e911148a4b207bdafae9b57e970e424", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "ba9adc6602d7ef0342480818e0d81b90b3082dd457819c02700e8c8936c3677e", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "81e2a9f2c3a86a000401dbf4ff30ff06ef147e1aa2f09faa14a9d1257e9905ac", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "6570eff2b07eb013b695a2ba0edbe6aa77ca7aa0dc947ffb38c9efb49267efd8", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "6b2ecc6f92ec11bcade86f2d9dce0701d390b3f27bc135a5bc149aae7d68ba88", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d4805952d5c2451847b74cda9a01c3607cf7a22cbe3cd6e338d2cd86a4a13e66", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", @@ -18570,17 +18534,6 @@ "T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3350934f73adc12375536ecc125f42631d0f17f37d5a72c3a6a1a062e9e9e565", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1b7584ac7451c9449962322655770d6d46eb8bd073e13b3aa605b4da5bae2327", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c7102bac98a0a09a46bbbeac4c980b4219bb63ac8ad6b1d80797bf9cd991cfd", -"T3T1_en_bitcoin-test_bgold.py::test_attack_change_input": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", -"T3T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "5969da300e12710b02231cebc1aa57ba60d8ca72338ff976c637de228dd743f0", -"T3T1_en_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "8cbb24c33d0801c03ae2b009cca0b6ade37c5ff437eaa64d8ba640a3da8a3002", -"T3T1_en_bitcoin-test_bgold.py::test_send_btg_external_presigned": "22a3e3baf7afcecc5b457ec9f9063e4d729879f79151bc43e1f0738595207b35", -"T3T1_en_bitcoin-test_bgold.py::test_send_btg_multisig_change": "f3e442202d95479ca14b053ab801b8002f752be016aba1a6057201d74503b9a3", -"T3T1_en_bitcoin-test_bgold.py::test_send_mixed_inputs": "8e93f1dc099203ca34177de6bf7370faa7e846ecedc630b8a16194fe7819d4c8", -"T3T1_en_bitcoin-test_bgold.py::test_send_multisig_1": "8066b6a823c1d5e646934754e74ac85652285ad9fdb23a74bd34c9597f6e5618", -"T3T1_en_bitcoin-test_bgold.py::test_send_p2sh": "f4b11a171cf48210e50e7e45acf9020a92cec3ac854921de0c133f60e3d0a5a0", -"T3T1_en_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "9360c9e41a40282f5ecf6d2ee91fad8e2c10ee3be6634a7eead946eed23f94c7", -"T3T1_en_bitcoin-test_dash.py::test_send_dash": "557a45f80747ccb6622001a7540273589a9cfcbbea18ba4a23fb92e94346ccf3", -"T3T1_en_bitcoin-test_dash.py::test_send_dash_dip2_input": "a0b3ed97530eb7d1a0af8fb7069deeaf73bc5624dee58be0c1ddddbac85e04d8", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", @@ -18818,8 +18771,6 @@ "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3c538fad2bd6a1fd6eb3c088d9571142e194e25c53b7f19abff1ef7e03040bb3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "bec877a114f2b28638caf4993e6ac8f83a19ec523b09a210dc0b817b1acf1a26", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[decred]": "f5d7fddf8c0dfc802b58e565e826cde2d9dcf035c5d07539d16dc01e2c9732c6", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d9e1788e58374fdd27b7fbfc014b8dee59948938dcfed47169a5b2acbe380e02", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "55f230ea818b01962d5f545f49e893776fa5d6c6b2bb95c78dec22b7e040b4ee", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "103ebfb2f9506a61f3ee1f25de8345048318af26666c0cfd98b25898efe6125d", @@ -18839,8 +18790,6 @@ "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "933d9466accabf431929e82499f29c29b37eb39b0cccd1b6a4a9b022ed6328ba", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "3961de777b7578dfd5e500285177284462b03c260f2a46f5827bbad906880b5a", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "2b83146021fc6d4e870ecba9b79eeff057e51f1b92e8f6119afef4c7f1a090b4", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "863ed334a92063c27233556e2ebe71c658d99d4a454ea2a7328d97200b4b65af", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b25d95a6546962059efc4b3f7749546a1b938c6084bd52a2a62322cfb4e522cf", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "382511a667f1cb2695c1fd140c3e1960f64d034c2cf94f39c017627bfc2d12ff", @@ -18943,15 +18892,12 @@ "T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", "T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3278de4acec9009035c80f1a9cc4dad11570582fa2eaab30aa7c034d4f8d4371", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9b9fb6db5b35261355f3e335057b7086dae18adb09d94c446294004bc4016876", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "da892ff4e7de75f6b3c1fde48c915b4cfd9da2c3f0052552ce0b873c85a539e7", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "768b6294843581c691d590202a8ef11c0040fff3189a9b0cde91b1a49d6df87e", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "23e3f995af215af80d9dcdb00189a0545a77a40bfe55e195566ccfe41f78d2e1", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "da48ca03cffd80b81d5d17cc8f967af2ea82784357ea894f20bf49d559916feb", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "21aac16e5415731c271adb2e145ec9cf6313bb1205612b74f885a839fdb26c74", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "de1b8868c3ef6abd31805540f4bb73b3693bc2ded0acea39ee2e9aa44c131a82", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "66e15e830579ed547e8c28908fcdbcb2483658fbb22ae138764a594c82f60053", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "fb9f7cd2571c2c72c56968c57fd0ec16b83d3ab9f0f5be9548d055f37e3f2bb0", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", @@ -19993,17 +19939,6 @@ "T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "076054bed839f3babd158fbe2e31b3450440b384404826f4acdfa47d27ad97cc", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "760956919718a2db556a03fa4f56d319652f97b4ea2ae120e7f2f8e50dc0e4e1", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "22977c30f679b8e4e32d6df32d7ad03b1ea88f89507831f29db3d0dae36ec00b", -"T3T1_es_bitcoin-test_bgold.py::test_attack_change_input": "8b01437a2c0f48439411680165ad9e17d0192e82fa7e8bd661c93b25c399cda6", -"T3T1_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "8b01437a2c0f48439411680165ad9e17d0192e82fa7e8bd661c93b25c399cda6", -"T3T1_es_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "e278d0bdbb636e1ac4c0104e22406bac34bb306a55a4632a6d8ac85a7fd065e4", -"T3T1_es_bitcoin-test_bgold.py::test_send_btg_external_presigned": "76bd5e516b65847c293d393ee7c2cb041c1c6130e509df3050c9466dad72fa23", -"T3T1_es_bitcoin-test_bgold.py::test_send_btg_multisig_change": "d5bb12a0c3ee8c066ac2b536c2a53c04d08f28876c2b520c5e4b96a0618d33dd", -"T3T1_es_bitcoin-test_bgold.py::test_send_mixed_inputs": "ffc78dd3979a5880647e4c8f2579915dab175cc4e8f6da0befa960b16cb30020", -"T3T1_es_bitcoin-test_bgold.py::test_send_multisig_1": "ea427fc37728bb7451c1a8b73f7b6300ceb5ec33b6fd5917630a4871bd75661c", -"T3T1_es_bitcoin-test_bgold.py::test_send_p2sh": "774d689147130c4653a7bddfb4cffd35c4188d432fa755241cfa61c50ce194f2", -"T3T1_es_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "5dc24209a2e87b65a38cd18fa0f01685aded24e04be57c0e0355284f5609f5a5", -"T3T1_es_bitcoin-test_dash.py::test_send_dash": "ed3fcc4d9598ec2042ff11a68e6dc90e310c31b74c5e33c221b7e0122f6b85d8", -"T3T1_es_bitcoin-test_dash.py::test_send_dash_dip2_input": "a40dc3ba3c50655eb4e732e065a17a143e2f36549588f9a4acd96de4cadeab07", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "faf69144e29bfec469439bc4012b692183d152bc6b9fc22a7a2dece1716e98e7", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5", @@ -20241,8 +20176,6 @@ "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "0f4cf24d270f7ca35f92532b581e16e78a98cb23afcb334a3fd64ab8308ee93a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "7d62569e13f7fde475f9dcf4e972966d302def211afc34fa4395e9aa519f9723", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[decred]": "0333348f49379671a6746124d8b41b91b7f451da99f4373cfe61edd1fa8ca5fd", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "fdc905fc6d6bb771080835bc4eb949a9d05f270f195e65ea3569ce6ae8f8c74a", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5931b76ca29d80fc6bd9d562ef8d0cedc346f57215d823f6a70aaacb9619761e", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d3d696582c0163c7108cd38d3fc73796b77e7f383715cf3c5e3a848a75deaac2", @@ -20262,8 +20195,6 @@ "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "74636f72ed305683e9c3526942871a24e5946a85360c552421db5f103d67c75a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "c7fc248d0d7780d68d3ba254e4afbbc4d40feeba3d3c5d26c189d75b97e264b3", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "cb08dddacd3cfe048c82d80adfe68fa7ce97afe03c9f171985416b99dc8b8195", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1d19df4518b618aee1f104f47ae851dacbf5d91f833fd1cb89e33e38d9aa8b06", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b8dfa8d662bffb376830bd476e57e3f7a3e39a2f7bdad18156f45100651ea522", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "f0a6c76719fd40d063398e19674f7f5da9a178ba5e218fb681a84ed0d431d329", @@ -20366,15 +20297,12 @@ "T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "532ddfa2a37b83af770deb0f376bd86a9dc6f2304781dff220208ebc3e5735b0", "T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "9f4fb4ca24e451a38196b521b89ea034fad9c8065c40b762f40eec287f947af1", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "9e748b0ba4eeadfad730263b30515ae61708e21e920724e91ff3305ab37f3b14", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "d7a5283fb30d76c4e19cc9aebd8a386a89bd540cdcbefe1e8342bb5ceda64143", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3792fc93cba778f943cc912d21bc38cf57811cbb4c9e24dba30e34f7f6f4bae5", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "45e143a0db817ad229123ddab3cb63d53f25650ed45a430552573d02fec12a57", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a238c7077b7ac501b8fcae467010ab55dfaac2a2bd2f6a3c9dbea4dd71bf771b", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "06c7c1104cc6a641c62a7dc29ec587fe346a7718514ae51b5acd89c169e4d092", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "eab039db5f270e1dcde3c6ecb3810d6f20d79bb819e510ba24a5492326e60659", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "309e036bab23c44a687b36b274e08515de4a8b4dd160b23a51b58de06e58845f", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1060c9b344a4292fd30185cf067114f73331d4846905bafa5b16ef8246aa3e9a", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "2bcabd059f2058c42fcb7d175bc334067b9b498e1473e2a27c97a39f0b20f436", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", @@ -21416,17 +21344,6 @@ "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "dd2221808f1902b45b724ffe21ffb0142d71bff83d691f924334b43fedec8341", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "6c94e1fc6a28506199c4ae9c939a900310706f8c28ed70e094b55952b1f0b8b6", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c84232179cdb951ff8a03e92b172e11ea624f7d19c90f9f46ae0da274310ec5", -"T3T1_fr_bitcoin-test_bgold.py::test_attack_change_input": "66ef2ca61c8c8a74420e711a9aebd287dc1ab3382dab28279e398cec92691290", -"T3T1_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "66ef2ca61c8c8a74420e711a9aebd287dc1ab3382dab28279e398cec92691290", -"T3T1_fr_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "f3cdd5bc58a64d16043a952a1f5d73ecf4631d40ec9c6241311d396f0d86e96a", -"T3T1_fr_bitcoin-test_bgold.py::test_send_btg_external_presigned": "922922a85e0a62e902e5384269c42665e1965338c58e201bd1d4859a57e8561a", -"T3T1_fr_bitcoin-test_bgold.py::test_send_btg_multisig_change": "caec88ade3b6a4b9cea523674c975b006428566e04da154514108bb467a9a3c1", -"T3T1_fr_bitcoin-test_bgold.py::test_send_mixed_inputs": "1a90274f3b3512d2b7586dbb33fc8d6f507a5acb2bda504c345b239f4af4f811", -"T3T1_fr_bitcoin-test_bgold.py::test_send_multisig_1": "7865240bfbbdea7a6776d10b23ca5ba413264b67b752df1e16b7d9ca83e2d0f3", -"T3T1_fr_bitcoin-test_bgold.py::test_send_p2sh": "a76d1bf35f9d7a14a84285a49c033e70a2461d53648b85cd543bb0db22a4454d", -"T3T1_fr_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "be144179df24ade3ee49bf03f8e1a0763146cc7ffa40844a03842cfc6eead134", -"T3T1_fr_bitcoin-test_dash.py::test_send_dash": "356d06db25278b9221a08e1a413a599ddb63d8cf0da84b9aef77f3354c8c0094", -"T3T1_fr_bitcoin-test_dash.py::test_send_dash_dip2_input": "e3e432acaba01dd2873c0ec5164f717bc75bc64177f6629d64ba3123d164147d", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "fffd40e65d50d0e2b0a7fc9adca24ce57f761fe1dd770613b3781508b5efb5c1", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "140368bad3e036123a498e7b466ed1242de98d81bd7159c4bd74d9944c8762eb", @@ -21664,8 +21581,6 @@ "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "2d88ec77eae7b5c70461779f63a7e2158e1ecfa70d90e993976c68127c860626", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "ca47f1e152ea9aff2238782fa963249307f184dce3c62a908bb2f81e5b3fcb66", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[decred]": "0adcb2ce7ef3b40f59eef4710b3ec02be14c28b1d3b53bb8918dcaa4d6474f2c", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "9c3fa3efbf2e18aea8a5bd46988faba64bdb3a029d3285d07ebfbfd6f5cf3476", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "c49fa73d7893ed6d5cf3f292f227ebe53b74d96747c85ecc50992d8f5f23268c", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6d3f14cd30ba8bc15a35e70c5a354b763c8f0240f09e2e0cc949fe29a814e6ba", @@ -21685,8 +21600,6 @@ "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "3dc9a0cba65c6e5f8e6aef9134cc84f1deb6f6ef1cf153be3036549fe200258f", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "328eb62c44d57907c787b4eda347a0dfaefffdf0ab79154fd52ea617fa69e11b", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "8666a062ebcf221897981aa0cbea2d55e4cf12c3564e8d3c36f619e48aa88875", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "8718ea206a27babb2a716640e274aa53ff5f4beae2fce1ecbfbd8311752073d0", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "f4299a9a91b7f346e2096811576f01ad576e67cf6e8c6b72884cedb709aaaa77", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "6b8613dd47a39b04617d7f3dc0de01aaca2473da798523438ceeb00b16f044e6", @@ -21789,15 +21702,12 @@ "T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "aa3b0c52904df02464f9fb84464615c9d35358a2346ac559b9880d283c175f7c", "T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "32fbb5c64e81b24b52f670bd09e606387ba1aad8ded56434f03e51232c68517d", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "589e68ec22c683a51099fc3c3253927ab2775492edfd3d23f829fdd4fb8a7931", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "5b7b68478a9f04493f74fd489ab61e17940563b1782f1dcb5212f4fa98774500", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5604efb8e7b5ad8957ef5e8cd29888ac8d708dea2555779efe5006bf194491f6", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4438d00be13195b83dccfc6acec4203dedea6b470434f084e38f6a447203f13e", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "3c6c0c9dfa1a8a3cd37ebf3a91f1dac88574e742fcadc333e657a4872f726e2a", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "9456ff82d2e3559cb3e66d0c34e04f9e44a7d5cace587addb698586ff9bdc8e3", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "4c1c07c7d569f9ab198a119d3d7750a086ce495114bab94d05a4cc585dc96612", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "3a6160bb576e590b3f290b0dc1da58c98f40e1e50204a86a0bab7777ceb051eb", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a76f6d07808ab5f7c7839c2f838578ffbaa5966c483b371871cb2a4b3bd4f10f", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "24763707be8b2c53bbe42307ea51dd51914c58cd4cd3e2b145dbc89e36560f15", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", From e3a383526bf5d53ac8ead1d4f4bf2027a573b73e Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Sat, 11 May 2024 11:10:26 +0200 Subject: [PATCH 081/626] feat(core): introduce mono8 bitmap blending [no changelog] --- core/embed/lib/gfx_bitblt.h | 6 ++ core/embed/lib/gfx_bitblt_rgb565.c | 21 +++++++ core/embed/lib/gfx_bitblt_rgba8888.c | 21 +++++++ core/embed/rust/build.rs | 2 + core/embed/rust/src/trezorhal/bitblt.rs | 2 + core/embed/trezorhal/dma2d_bitblt.h | 2 + core/embed/trezorhal/stm32f4/dma2d_bitblt.c | 68 +++++++++++++++++++++ 7 files changed, 122 insertions(+) diff --git a/core/embed/lib/gfx_bitblt.h b/core/embed/lib/gfx_bitblt.h index bb0af66abe..f897d933b5 100644 --- a/core/embed/lib/gfx_bitblt.h +++ b/core/embed/lib/gfx_bitblt.h @@ -89,6 +89,9 @@ void gfx_rgb565_copy_rgb565(const gfx_bitblt_t* bb); // Blends a mono bitmap (with 4-bit alpha channel) // with the destination bitmap void gfx_rgb565_blend_mono4(const gfx_bitblt_t* bb); +// Blends a mono bitmap (with 8-bit alpha channel) +// with the destination bitmap +void gfx_rgb565_blend_mono8(const gfx_bitblt_t* bb); // Functions for RGBA8888 bitmap/framebuffer void gfx_rgba8888_fill(const gfx_bitblt_t* bb); @@ -103,6 +106,9 @@ void gfx_rgba8888_copy_rgba8888(const gfx_bitblt_t* bb); // Blends a mono bitmap (with 4-bit alpha channel) // with the destination bitmap void gfx_rgba8888_blend_mono4(const gfx_bitblt_t* bb); +// Blends a mono bitmap (with 8-bit alpha channel) +// with the destination bitmap +void gfx_rgba8888_blend_mono8(const gfx_bitblt_t* bb); // Functions for Mono8 bitmap/framebuffer void gfx_mono8_fill(const gfx_bitblt_t* bb); diff --git a/core/embed/lib/gfx_bitblt_rgb565.c b/core/embed/lib/gfx_bitblt_rgb565.c index 5ee3059d3e..8648f5267a 100644 --- a/core/embed/lib/gfx_bitblt_rgb565.c +++ b/core/embed/lib/gfx_bitblt_rgb565.c @@ -135,3 +135,24 @@ void gfx_rgb565_blend_mono4(const gfx_bitblt_t* bb) { } } } + +void gfx_rgb565_blend_mono8(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgb565_blend_mono8(bb)) +#endif + { + uint16_t* dst_ptr = (uint16_t*)bb->dst_row + bb->dst_x; + uint8_t* src_ptr = (uint8_t*)bb->src_row + bb->src_x; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t fg_alpha = src_ptr[x]; + dst_ptr[x] = gfx_color16_blend_a8( + bb->src_fg, gfx_color16_to_color(dst_ptr[x]), fg_alpha); + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } + } +} diff --git a/core/embed/lib/gfx_bitblt_rgba8888.c b/core/embed/lib/gfx_bitblt_rgba8888.c index a7c50ddcc0..1eab15525c 100644 --- a/core/embed/lib/gfx_bitblt_rgba8888.c +++ b/core/embed/lib/gfx_bitblt_rgba8888.c @@ -155,3 +155,24 @@ void gfx_rgba8888_blend_mono4(const gfx_bitblt_t* bb) { } } } + +void gfx_rgba8888_blend_mono8(const gfx_bitblt_t* bb) { +#if defined(USE_DMA2D) && !defined(TREZOR_EMULATOR) + if (!dma2d_rgba8888_blend_mono8(bb)) +#endif + { + uint32_t* dst_ptr = (uint32_t*)bb->dst_row + bb->dst_x; + uint8_t* src_ptr = (uint8_t*)bb->src_row + bb->src_x; + uint16_t height = bb->height; + + while (height-- > 0) { + for (int x = 0; x < bb->width; x++) { + uint8_t fg_alpha = src_ptr[x]; + dst_ptr[x] = gfx_color32_blend_a8( + bb->src_fg, gfx_color32_to_color(dst_ptr[x]), fg_alpha); + } + dst_ptr += bb->dst_stride / sizeof(*dst_ptr); + src_ptr += bb->src_stride / sizeof(*src_ptr); + } + } +} diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index 7277d94e43..e95c9678c6 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -352,11 +352,13 @@ fn generate_trezorhal_bindings() { .allowlist_function("gfx_rgb565_copy_mono4") .allowlist_function("gfx_rgb565_copy_rgb565") .allowlist_function("gfx_rgb565_blend_mono4") + .allowlist_function("gfx_rgb565_blend_mono8") .allowlist_function("gfx_rgba8888_fill") .allowlist_function("gfx_rgba8888_copy_mono4") .allowlist_function("gfx_rgba8888_copy_rgb565") .allowlist_function("gfx_rgba8888_copy_rgba8888") .allowlist_function("gfx_rgba8888_blend_mono4") + .allowlist_function("gfx_rgba8888_blend_mono8") .allowlist_function("gfx_mono8_fill") .allowlist_function("gfx_mono8_copy_mono1p") .allowlist_function("gfx_mono8_copy_mono4") diff --git a/core/embed/rust/src/trezorhal/bitblt.rs b/core/embed/rust/src/trezorhal/bitblt.rs index e00cb114cc..dea82a0ea6 100644 --- a/core/embed/rust/src/trezorhal/bitblt.rs +++ b/core/embed/rust/src/trezorhal/bitblt.rs @@ -325,6 +325,7 @@ impl<'a> BitBltCopy<'a> { let bitblt = self.bitblt.with_dst(dst); match self.src.format() { BitmapFormat::MONO4 => ffi::gfx_rgb565_blend_mono4(&bitblt), + BitmapFormat::MONO8 => ffi::gfx_rgb565_blend_mono8(&bitblt), _ => unimplemented!(), } } @@ -369,6 +370,7 @@ impl<'a> BitBltCopy<'a> { let bitblt = self.bitblt.with_dst(dst); match self.src.format() { BitmapFormat::MONO4 => ffi::gfx_rgba8888_blend_mono4(&bitblt), + BitmapFormat::MONO8 => ffi::gfx_rgba8888_blend_mono8(&bitblt), _ => unimplemented!(), } } diff --git a/core/embed/trezorhal/dma2d_bitblt.h b/core/embed/trezorhal/dma2d_bitblt.h index a000a7008f..0f3aa26bb1 100644 --- a/core/embed/trezorhal/dma2d_bitblt.h +++ b/core/embed/trezorhal/dma2d_bitblt.h @@ -35,11 +35,13 @@ bool dma2d_rgb565_fill(const gfx_bitblt_t* bb); bool dma2d_rgb565_copy_mono4(const gfx_bitblt_t* bb); bool dma2d_rgb565_copy_rgb565(const gfx_bitblt_t* bb); bool dma2d_rgb565_blend_mono4(const gfx_bitblt_t* bb); +bool dma2d_rgb565_blend_mono8(const gfx_bitblt_t* bb); bool dma2d_rgba8888_fill(const gfx_bitblt_t* bb); bool dma2d_rgba8888_copy_mono4(const gfx_bitblt_t* bb); bool dma2d_rgba8888_copy_rgb565(const gfx_bitblt_t* bb); bool dma2d_rgba8888_copy_rgba8888(const gfx_bitblt_t* bb); bool dma2d_rgba8888_blend_mono4(const gfx_bitblt_t* bb); +bool dma2d_rgba8888_blend_mono8(const gfx_bitblt_t* bb); #endif // TREZORHAL_DMA2D_BITBLT_H diff --git a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c index 36ec4762cb..65ab14f7bd 100644 --- a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c +++ b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c @@ -337,6 +337,40 @@ bool dma2d_rgb565_blend_mono4(const gfx_bitblt_t* params) { return true; } +bool dma2d_rgb565_blend_mono8(const gfx_bitblt_t* bb) { + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_RGB565; + dma2d_handle.Init.Mode = DMA2D_M2M_BLEND; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_A8; + dma2d_handle.LayerCfg[1].InputOffset = bb->src_stride - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = gfx_color_to_color32(bb->src_fg); + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + dma2d_handle.LayerCfg[0].InputColorMode = DMA2D_INPUT_RGB565; + dma2d_handle.LayerCfg[0].InputOffset = + bb->dst_stride / sizeof(uint16_t) - bb->width; + dma2d_handle.LayerCfg[0].AlphaMode = 0; + dma2d_handle.LayerCfg[0].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 0); + + HAL_DMA2D_BlendingStart(&dma2d_handle, (uint32_t)bb->src_row + bb->src_x, + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint16_t), + bb->width, bb->height); + + return true; +} + bool dma2d_rgba8888_fill(const gfx_bitblt_t* bb) { dma2d_wait(); @@ -590,6 +624,40 @@ bool dma2d_rgba8888_blend_mono4(const gfx_bitblt_t* params) { return true; } +bool dma2d_rgb8888_blend_mono8(const gfx_bitblt_t* bb) { + dma2d_wait(); + + if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { + return false; + } + + dma2d_handle.Init.ColorMode = DMA2D_OUTPUT_ARGB8888; + dma2d_handle.Init.Mode = DMA2D_M2M_BLEND; + dma2d_handle.Init.OutputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + HAL_DMA2D_Init(&dma2d_handle); + + dma2d_handle.LayerCfg[1].InputColorMode = DMA2D_INPUT_A8; + dma2d_handle.LayerCfg[1].InputOffset = bb->src_stride - bb->width; + dma2d_handle.LayerCfg[1].AlphaMode = 0; + dma2d_handle.LayerCfg[1].InputAlpha = gfx_color_to_color32(bb->src_fg); + HAL_DMA2D_ConfigLayer(&dma2d_handle, 1); + + dma2d_handle.LayerCfg[0].InputColorMode = DMA2D_INPUT_ARGB8888; + dma2d_handle.LayerCfg[0].InputOffset = + bb->dst_stride / sizeof(uint32_t) - bb->width; + dma2d_handle.LayerCfg[0].AlphaMode = 0; + dma2d_handle.LayerCfg[0].InputAlpha = 0; + HAL_DMA2D_ConfigLayer(&dma2d_handle, 0); + + HAL_DMA2D_BlendingStart(&dma2d_handle, (uint32_t)bb->src_row + bb->src_x, + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), + (uint32_t)bb->dst_row + bb->dst_x * sizeof(uint32_t), + bb->width, bb->height); + + return true; +} + bool dma2d_rgba8888_copy_rgba8888(const gfx_bitblt_t* bb) { dma2d_wait(); From f03e4c8d9cdd37ab2f51cb6cbc38ab1940e5434f Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 16 May 2024 16:12:03 +0200 Subject: [PATCH 082/626] feat(core/rust): introduce f32 angles for sector drawing [no changelog] --- core/embed/rust/src/ui/shape/canvas/common.rs | 20 ++++++------ core/embed/rust/src/ui/shape/circle.rs | 12 +++---- core/embed/rust/src/ui/shape/utils/mod.rs | 2 +- core/embed/rust/src/ui/shape/utils/trigo.rs | 31 +++++-------------- 4 files changed, 25 insertions(+), 40 deletions(-) diff --git a/core/embed/rust/src/ui/shape/canvas/common.rs b/core/embed/rust/src/ui/shape/canvas/common.rs index 796b74d2f8..ea24983902 100644 --- a/core/embed/rust/src/ui/shape/canvas/common.rs +++ b/core/embed/rust/src/ui/shape/canvas/common.rs @@ -4,7 +4,7 @@ use crate::ui::{ }; use super::super::{ - utils::{circle_points, line_points, sin_i16, PI4}, + utils::{circle_points, line_points, sin_f32}, BitmapView, Viewport, }; @@ -576,12 +576,12 @@ pub trait Canvas: BasicCanvas { &mut self, center: Point, radius: i16, - mut start: i16, - mut end: i16, + mut start: f32, + mut end: f32, color: Color, ) { - start = (PI4 * 8 + start % (PI4 * 8)) % (PI4 * 8); - end = (PI4 * 8 + end % (PI4 * 8)) % (PI4 * 8); + start = (360.0 + start % 360.0) % 360.0; + end = (360.0 + end % 360.0) % 360.0; let alpha = 255; let alpha_mul = |a: u8| -> u8 { ((a as u16 * alpha as u16) / 255) as u8 }; @@ -591,12 +591,14 @@ pub trait Canvas: BasicCanvas { self.draw_pixel(center, color); } + const PI4: f32 = 45.0; + for octant in 0..8 { - let angle = octant * PI4; + let angle = PI4 * octant as f32; // Function for calculation of 'u' coordinate inside the circle octant // radius * sin(angle) - let sin = |angle: i16| -> i16 { sin_i16(angle, radius) }; + let sin = |angle: f32| -> i16 { (sin_f32(angle) * radius as f32 + 0.5) as i16 }; // Calculate the octant's bounding rectangle let p = Point::new(sin(PI4) + 1, -radius - 1).rot(octant); @@ -660,7 +662,7 @@ pub trait Canvas: BasicCanvas { } else { // Partial fill let u1 = if start <= angle { - sin(corr(0)) + sin(corr(0.0)) } else { sin(corr(start - angle)) }; @@ -682,7 +684,7 @@ pub trait Canvas: BasicCanvas { // Partial fill if (end > angle) && (end < angle + PI4) { // Fill up to `end` - fill_octant(radius, sin(corr(0)), sin(corr(end - angle)), filler); + fill_octant(radius, sin(corr(0.0)), sin(corr(end - angle)), filler); } if start < angle + PI4 { // Fill all from `start` diff --git a/core/embed/rust/src/ui/shape/circle.rs b/core/embed/rust/src/ui/shape/circle.rs index 40778838c6..af2558466f 100644 --- a/core/embed/rust/src/ui/shape/circle.rs +++ b/core/embed/rust/src/ui/shape/circle.rs @@ -15,8 +15,8 @@ pub struct Circle { bg_color: Option<Color>, thickness: i16, alpha: u8, - start_angle: Option<i16>, - end_angle: Option<i16>, + start_angle: Option<f32>, + end_angle: Option<f32>, } impl Circle { @@ -55,14 +55,14 @@ impl Circle { Self { alpha, ..self } } - pub fn with_start_angle(self, from_angle: i16) -> Self { + pub fn with_start_angle(self, from_angle: f32) -> Self { Self { start_angle: Some(from_angle), ..self } } - pub fn with_end_angle(self, to_angle: i16) -> Self { + pub fn with_end_angle(self, to_angle: f32) -> Self { Self { end_angle: Some(to_angle), ..self @@ -119,8 +119,8 @@ impl Shape<'_> for Circle { } } } else { - let start = self.start_angle.unwrap_or(0); - let end = self.end_angle.unwrap_or(360); + let start = self.start_angle.unwrap_or(0.0); + let end = self.end_angle.unwrap_or(360.0); if let Some(color) = self.fg_color { if th > 0 { diff --git a/core/embed/rust/src/ui/shape/utils/mod.rs b/core/embed/rust/src/ui/shape/utils/mod.rs index d9e23288c1..0b9c296cdc 100644 --- a/core/embed/rust/src/ui/shape/utils/mod.rs +++ b/core/embed/rust/src/ui/shape/utils/mod.rs @@ -6,4 +6,4 @@ mod trigo; pub use blur::{BlurAlgorithm, BlurBuff}; pub use circle::circle_points; pub use line::line_points; -pub use trigo::{sin_i16, PI4}; +pub use trigo::sin_f32; diff --git a/core/embed/rust/src/ui/shape/utils/trigo.rs b/core/embed/rust/src/ui/shape/utils/trigo.rs index a18a7bf791..c9db25a17f 100644 --- a/core/embed/rust/src/ui/shape/utils/trigo.rs +++ b/core/embed/rust/src/ui/shape/utils/trigo.rs @@ -1,29 +1,12 @@ -/// Integer representing an angle of 45 degress (PI/4). -// -// Changing this constant requires revisiting isin() algorithm -// (for higher values consider changing T type to i64 or f32) -pub const PI4: i16 = 45; - /// Fast sine approximation. /// -/// Returns mult * sin(angle). +/// Returns sin(angle). /// -/// Angle must be in range <0..PI4>. -/// This function provides an error within +-1 for multiplier up to 500 -pub fn sin_i16(angle: i16, mult: i16) -> i16 { - assert!((0..=PI4).contains(&angle)); - assert!(mult <= 2500); - - type T = i32; - - // Based on polynomial x - x^3 / 6 - let x = angle as T; - - // Constants for the approximation - const K: f32 = (PI4 as f32) * 4.0 / core::f32::consts::PI; - const M: T = (6.0 * K * K + 0.5) as T; - const N: T = (6.0 * K * K * K + 0.5) as T; +/// Angle must be in range <0..45>. +pub fn sin_f32(angle: f32) -> f32 { + assert!((0.0..=45.0).contains(&angle)); - // Applying the approximation - (((M * x - x * x * x) * mult as T + N / 2) / N) as i16 + // Applying the approximation x - x^3 / 6 + let x = (angle / 180.0) * core::f32::consts::PI; + x - x * x * x / 6.0 } From 001acc770c85f2e1348e49c7959f6f35467f8e16 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 16 May 2024 16:12:44 +0200 Subject: [PATCH 083/626] feat(core/rust): use f32 angles in ui components [no changelog] --- core/embed/rust/src/ui/model_mercury/bootloader/mod.rs | 2 +- core/embed/rust/src/ui/model_mercury/component/loader.rs | 2 +- core/embed/rust/src/ui/model_tt/bootloader/mod.rs | 2 +- .../rust/src/ui/model_tt/component/coinjoin_progress.rs | 4 ++-- core/embed/rust/src/ui/model_tt/component/loader.rs | 2 +- core/embed/rust/src/ui/model_tt/component/progress.rs | 8 ++++---- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 50184934ee..78d3d95c12 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -129,7 +129,7 @@ impl ModelMercuryFeatures { shape::Circle::new(center, constant::LOADER_OUTER) .with_bg(fg_color) - .with_end_angle(((progress as i32 * shape::PI4 as i32 * 8) / 1000) as i16) + .with_end_angle(360.0 * progress as f32 / 1000.0) .render(target); shape::Circle::new(center, constant::LOADER_INNER + 2) diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index 68ac609336..8531f2a631 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -234,7 +234,7 @@ impl Component for Loader { shape::Circle::new(center, constant::LOADER_OUTER) .with_bg(style.loader_color) - .with_end_angle(((progress as i32 * shape::PI4 as i32 * 8) / 1000) as i16) + .with_end_angle(360.0 * progress as f32 / 1000.0) .render(target); shape::Circle::new(center, constant::LOADER_INNER) diff --git a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs index de6bbf49d6..1c248531f9 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs @@ -121,7 +121,7 @@ impl ModelTTFeatures { shape::Circle::new(center, constant::LOADER_OUTER) .with_bg(fg_color) - .with_end_angle(((progress as i32 * shape::PI4 as i32 * 8) / 1000) as i16) + .with_end_angle(360.0 * progress as f32 / 1000.0) .render(target); shape::Circle::new(center, constant::LOADER_INNER + 2) diff --git a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs index d53d075b1a..411c91d355 100644 --- a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs @@ -135,8 +135,8 @@ where let start = (self.value as i16 - 100) % 1000; let end = (self.value as i16 + 100) % 1000; - let start = ((start as i32 * 8 * shape::PI4 as i32) / 1000) as i16; - let end = ((end as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let start = 360.0 * start as f32 / 1000.0; + let end = 360.0 * end as f32 / 1000.0; shape::Circle::new(center, LOADER_OUTER) .with_bg(inactive_color) diff --git a/core/embed/rust/src/ui/model_tt/component/loader.rs b/core/embed/rust/src/ui/model_tt/component/loader.rs index 22efb9abd4..11429ec61d 100644 --- a/core/embed/rust/src/ui/model_tt/component/loader.rs +++ b/core/embed/rust/src/ui/model_tt/component/loader.rs @@ -250,7 +250,7 @@ impl Component for Loader { shape::Circle::new(center, constant::LOADER_OUTER) .with_bg(style.loader_color) - .with_end_angle(((progress as i32 * shape::PI4 as i32 * 8) / 1000) as i16) + .with_end_angle(360.0 * progress as f32 / 1000.0) .render(target); shape::Circle::new(center, constant::LOADER_INNER + 2) diff --git a/core/embed/rust/src/ui/model_tt/component/progress.rs b/core/embed/rust/src/ui/model_tt/component/progress.rs index bdb8f7fa70..1d4f133279 100644 --- a/core/embed/rust/src/ui/model_tt/component/progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/progress.rs @@ -119,12 +119,12 @@ impl Component for Progress { let (start, end) = if self.indeterminate { let start = (self.value as i16 - 100) % 1000; let end = (self.value as i16 + 100) % 1000; - let start = ((start as i32 * 8 * shape::PI4 as i32) / 1000) as i16; - let end = ((end as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let start = 360.0 * start as f32 / 1000.0; + let end = 360.0 * end as f32 / 1000.0; (start, end) } else { - let end = ((self.value as i32 * 8 * shape::PI4 as i32) / 1000) as i16; - (0, end) + let end = 360.0 * self.value as f32 / 1000.0; + (0.0, end) }; shape::Circle::new(center, constant::LOADER_OUTER) From 89ae44ebfaa74f4cbb470b79c1edfae60ffa549a Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 16 May 2024 15:59:21 +0200 Subject: [PATCH 084/626] feat(core/rust): introduce ImageBuffer for advanced drawing [no changelog] --- core/embed/rust/src/ui/shape/canvas/common.rs | 12 ++- core/embed/rust/src/ui/shape/canvas/mod.rs | 2 +- core/embed/rust/src/ui/shape/canvas/mono8.rs | 14 +++- core/embed/rust/src/ui/shape/canvas/rgb565.rs | 14 +++- .../rust/src/ui/shape/canvas/rgba8888.rs | 14 +++- core/embed/rust/src/ui/shape/mod.rs | 6 +- .../embed/rust/src/ui/shape/utils/imagebuf.rs | 83 +++++++++++++++++++ core/embed/rust/src/ui/shape/utils/mod.rs | 2 + 8 files changed, 140 insertions(+), 7 deletions(-) create mode 100644 core/embed/rust/src/ui/shape/utils/imagebuf.rs diff --git a/core/embed/rust/src/ui/shape/canvas/common.rs b/core/embed/rust/src/ui/shape/canvas/common.rs index ea24983902..66f41441bf 100644 --- a/core/embed/rust/src/ui/shape/canvas/common.rs +++ b/core/embed/rust/src/ui/shape/canvas/common.rs @@ -5,7 +5,7 @@ use crate::ui::{ use super::super::{ utils::{circle_points, line_points, sin_f32}, - BitmapView, Viewport, + Bitmap, BitmapFormat, BitmapView, Viewport, }; #[cfg(feature = "ui_blurring")] @@ -71,6 +71,16 @@ pub trait BasicCanvas { fn draw_bitmap(&mut self, r: Rect, bitmap: BitmapView); } +pub trait CanvasBuilder<'a> { + /// Returns a format of the underlying bitmap. + fn format() -> BitmapFormat; + + /// Creates a new canvas from the specified bitmap. + /// + /// The bitmap must be mutable and have the same format as the canvas. + fn from_bitmap(bitmap: Bitmap<'a>) -> Self; +} + pub trait Canvas: BasicCanvas { /// Returns a non-mutable view of the underlying bitmap. fn view(&self) -> BitmapView; diff --git a/core/embed/rust/src/ui/shape/canvas/mod.rs b/core/embed/rust/src/ui/shape/canvas/mod.rs index 9e4507d6e8..60820b5bce 100644 --- a/core/embed/rust/src/ui/shape/canvas/mod.rs +++ b/core/embed/rust/src/ui/shape/canvas/mod.rs @@ -4,7 +4,7 @@ mod rgb565; mod rgba8888; mod viewport; -pub use common::{BasicCanvas, Canvas}; +pub use common::{BasicCanvas, Canvas, CanvasBuilder}; pub use mono8::Mono8Canvas; pub use rgb565::Rgb565Canvas; pub use rgba8888::Rgba8888Canvas; diff --git a/core/embed/rust/src/ui/shape/canvas/mono8.rs b/core/embed/rust/src/ui/shape/canvas/mono8.rs index 429c288696..01e4085e21 100644 --- a/core/embed/rust/src/ui/shape/canvas/mono8.rs +++ b/core/embed/rust/src/ui/shape/canvas/mono8.rs @@ -8,7 +8,7 @@ use crate::{ use super::{ super::{Bitmap, BitmapFormat, BitmapView}, - BasicCanvas, Canvas, Viewport, + BasicCanvas, Canvas, CanvasBuilder, Viewport, }; #[cfg(feature = "ui_blurring")] @@ -74,6 +74,18 @@ impl<'a> BasicCanvas for Mono8Canvas<'a> { } } +impl<'a> CanvasBuilder<'a> for Mono8Canvas<'a> { + fn format() -> BitmapFormat { + BitmapFormat::MONO8 + } + + fn from_bitmap(bitmap: Bitmap<'a>) -> Self { + assert!(bitmap.format() == Self::format()); + let viewport = Viewport::from_size(bitmap.size()); + Self { bitmap, viewport } + } +} + impl<'a> Canvas for Mono8Canvas<'a> { fn view(&self) -> BitmapView { BitmapView::new(&self.bitmap) diff --git a/core/embed/rust/src/ui/shape/canvas/rgb565.rs b/core/embed/rust/src/ui/shape/canvas/rgb565.rs index db0b0ae0aa..e5f1892496 100644 --- a/core/embed/rust/src/ui/shape/canvas/rgb565.rs +++ b/core/embed/rust/src/ui/shape/canvas/rgb565.rs @@ -8,7 +8,7 @@ use crate::{ use super::{ super::{Bitmap, BitmapFormat, BitmapView}, - BasicCanvas, Canvas, Viewport, + BasicCanvas, Canvas, CanvasBuilder, Viewport, }; #[cfg(feature = "ui_blurring")] @@ -74,6 +74,18 @@ impl<'a> BasicCanvas for Rgb565Canvas<'a> { } } +impl<'a> CanvasBuilder<'a> for Rgb565Canvas<'a> { + fn format() -> BitmapFormat { + BitmapFormat::RGB565 + } + + fn from_bitmap(bitmap: Bitmap<'a>) -> Self { + assert!(bitmap.format() == Self::format()); + let viewport = Viewport::from_size(bitmap.size()); + Self { bitmap, viewport } + } +} + impl<'a> Canvas for Rgb565Canvas<'a> { fn view(&self) -> BitmapView { BitmapView::new(&self.bitmap) diff --git a/core/embed/rust/src/ui/shape/canvas/rgba8888.rs b/core/embed/rust/src/ui/shape/canvas/rgba8888.rs index f58be3c846..46189c7be1 100644 --- a/core/embed/rust/src/ui/shape/canvas/rgba8888.rs +++ b/core/embed/rust/src/ui/shape/canvas/rgba8888.rs @@ -8,7 +8,7 @@ use crate::{ use super::{ super::{Bitmap, BitmapFormat, BitmapView}, - BasicCanvas, Canvas, Viewport, + BasicCanvas, Canvas, CanvasBuilder, Viewport, }; #[cfg(feature = "ui_blurring")] @@ -74,6 +74,18 @@ impl<'a> BasicCanvas for Rgba8888Canvas<'a> { } } +impl<'a> CanvasBuilder<'a> for Rgba8888Canvas<'a> { + fn format() -> BitmapFormat { + BitmapFormat::RGBA8888 + } + + fn from_bitmap(bitmap: Bitmap<'a>) -> Self { + assert!(bitmap.format() == Self::format()); + let viewport = Viewport::from_size(bitmap.size()); + Self { bitmap, viewport } + } +} + impl<'a> Canvas for Rgba8888Canvas<'a> { fn view(&self) -> BitmapView { BitmapView::new(&self.bitmap) diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index b42be4cc1e..001971637f 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -21,7 +21,9 @@ pub use bitmap::{Bitmap, BitmapFormat, BitmapView}; #[cfg(feature = "ui_blurring")] pub use blur::Blurring; pub use cache::drawing_cache::DrawingCache; -pub use canvas::{BasicCanvas, Canvas, Mono8Canvas, Rgb565Canvas, Rgba8888Canvas, Viewport}; +pub use canvas::{ + BasicCanvas, Canvas, CanvasBuilder, Mono8Canvas, Rgb565Canvas, Rgba8888Canvas, Viewport, +}; pub use circle::Circle; pub use display::render_on_display; #[cfg(feature = "ui_jpeg_decoder")] @@ -30,4 +32,4 @@ pub use qrcode::QrImage; pub use render::{DirectRenderer, ProgressiveRenderer, Renderer}; pub use text::Text; pub use toif::ToifImage; -pub use utils::PI4; +pub use utils::ImageBuffer; diff --git a/core/embed/rust/src/ui/shape/utils/imagebuf.rs b/core/embed/rust/src/ui/shape/utils/imagebuf.rs new file mode 100644 index 0000000000..f8f7678c36 --- /dev/null +++ b/core/embed/rust/src/ui/shape/utils/imagebuf.rs @@ -0,0 +1,83 @@ +use crate::ui::{ + geometry::Offset, + shape::{Bitmap, BitmapView, Canvas, CanvasBuilder}, +}; + +/// Size of image buffer in bytes +const IMAGE_BUFFER_SIZE: usize = 64 * 1024; + +#[repr(align(16))] +struct AlignedBuffer { + bytes: [u8; IMAGE_BUFFER_SIZE], +} + +/// Raw image buffer used by `ImageBuffer` instances. + +static mut IMAGE_BUFFER: AlignedBuffer = AlignedBuffer { + bytes: [0; IMAGE_BUFFER_SIZE], +}; + +/// Set to `true` if the `IMAGE_BUFFER` is locked +/// (in use by some instance of `ImageBuffer`) +static mut IMAGE_BUFFER_LOCKED: bool = false; + +/// A struct representing an image buffer - generic buffer for mutable images. +pub struct ImageBuffer<T: Canvas + CanvasBuilder<'static>> { + canvas: T, +} + +impl<T> Drop for ImageBuffer<T> +where + T: Canvas + CanvasBuilder<'static>, +{ + fn drop(&mut self) { + // It's safe to modify static variable as whole app + // is single-threaded. + unsafe { + IMAGE_BUFFER_LOCKED = false; + } + } +} + +impl<T> ImageBuffer<T> +where + T: Canvas + CanvasBuilder<'static>, +{ + /// Creates a new image buffer with the specified format and size. + /// + /// Returns `None` if the buffer is already in use or the + /// buffer is not big enough to hold the image. + pub fn new(size: Offset) -> Option<Self> { + // SAFETY: + // It's safe to read/modify mutable static variable as + // whole app is single-threaded. + // + // We can be sure that `IMAGE_BUFFER` is not shared between + // multiple instances of `ImageBuffer` as we have `IMAGE_BUFFER_LOCKED` + // to prevent that. + unsafe { + if IMAGE_BUFFER_LOCKED { + return None; + } + + let bitmap = + Bitmap::new_mut(T::format(), None, size, None, &mut IMAGE_BUFFER.bytes[..])?; + + IMAGE_BUFFER_LOCKED = true; + + Some(Self { + canvas: T::from_bitmap(bitmap), + }) + } + } + + /// Returns the canvas for the bitmap in the image buffer. + pub fn canvas(&mut self) -> &mut T { + &mut self.canvas + } + + /// Returns the immutable view of the bitmap in the image buffer. + pub fn view(&self) -> BitmapView { + self.canvas.view() + } +} diff --git a/core/embed/rust/src/ui/shape/utils/mod.rs b/core/embed/rust/src/ui/shape/utils/mod.rs index 0b9c296cdc..d637054d07 100644 --- a/core/embed/rust/src/ui/shape/utils/mod.rs +++ b/core/embed/rust/src/ui/shape/utils/mod.rs @@ -1,9 +1,11 @@ mod blur; mod circle; +mod imagebuf; mod line; mod trigo; pub use blur::{BlurAlgorithm, BlurBuff}; pub use circle::circle_points; +pub use imagebuf::ImageBuffer; pub use line::line_points; pub use trigo::sin_f32; From e579254f7a6af092c0bf9bf012a8c3cc215737c5 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 16 May 2024 16:02:14 +0200 Subject: [PATCH 085/626] feat(core/rust): introduce RawImage shape [no changelog] --- core/embed/rust/src/ui/shape/bitmap.rs | 1 + core/embed/rust/src/ui/shape/mod.rs | 2 ++ core/embed/rust/src/ui/shape/rawimage.rs | 45 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 core/embed/rust/src/ui/shape/rawimage.rs diff --git a/core/embed/rust/src/ui/shape/bitmap.rs b/core/embed/rust/src/ui/shape/bitmap.rs index 7c760ec846..067d704c59 100644 --- a/core/embed/rust/src/ui/shape/bitmap.rs +++ b/core/embed/rust/src/ui/shape/bitmap.rs @@ -295,6 +295,7 @@ impl<'a> Drop for Bitmap<'a> { } } +#[derive(Copy, Clone)] pub struct BitmapView<'a> { pub bitmap: &'a Bitmap<'a>, pub offset: Offset, diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index 001971637f..2e17cc38df 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -10,6 +10,7 @@ mod display; #[cfg(feature = "ui_jpeg_decoder")] mod jpeg; mod qrcode; +mod rawimage; mod render; mod text; mod toif; @@ -29,6 +30,7 @@ pub use display::render_on_display; #[cfg(feature = "ui_jpeg_decoder")] pub use jpeg::JpegImage; pub use qrcode::QrImage; +pub use rawimage::RawImage; pub use render::{DirectRenderer, ProgressiveRenderer, Renderer}; pub use text::Text; pub use toif::ToifImage; diff --git a/core/embed/rust/src/ui/shape/rawimage.rs b/core/embed/rust/src/ui/shape/rawimage.rs new file mode 100644 index 0000000000..41ba382f4c --- /dev/null +++ b/core/embed/rust/src/ui/shape/rawimage.rs @@ -0,0 +1,45 @@ +use crate::ui::geometry::Rect; + +use super::{BitmapView, Canvas, DrawingCache, Renderer, Shape, ShapeClone}; + +use without_alloc::alloc::LocalAllocLeakExt; + +/// A shape for rendering compressed TOIF images. +pub struct RawImage<'a> { + /// Destination area + area: Rect, + // Bitmap reference + bitmap: BitmapView<'a>, +} + +impl<'a> RawImage<'a> { + pub fn new(area: Rect, bitmap: BitmapView<'a>) -> Self { + Self { area, bitmap } + } + + pub fn render(self, renderer: &mut impl Renderer<'a>) { + renderer.render_shape(self); + } +} + +impl<'a> Shape<'a> for RawImage<'a> { + fn bounds(&self) -> Rect { + self.area + } + + fn cleanup(&mut self, _cache: &DrawingCache<'a>) {} + + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache<'a>) { + canvas.draw_bitmap(self.area, self.bitmap); + } +} + +impl<'a> ShapeClone<'a> for RawImage<'a> { + fn clone_at_bump<T>(self, bump: &'a T) -> Option<&'a mut dyn Shape<'a>> + where + T: LocalAllocLeakExt<'a>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(RawImage { ..self })) + } +} From 321e4be8196aa76facb0f41208f0916b829a3d38 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 16 May 2024 16:03:50 +0200 Subject: [PATCH 086/626] feat(core/rust): introduce render_on_canvas functionality [no changelog] --- core/embed/rust/src/ui/component/bar.rs | 2 +- core/embed/rust/src/ui/component/base.rs | 12 ++-- core/embed/rust/src/ui/component/border.rs | 2 +- core/embed/rust/src/ui/component/connect.rs | 2 +- core/embed/rust/src/ui/component/empty.rs | 2 +- core/embed/rust/src/ui/component/image.rs | 4 +- core/embed/rust/src/ui/component/jpeg.rs | 2 +- core/embed/rust/src/ui/component/label.rs | 2 +- core/embed/rust/src/ui/component/map.rs | 2 +- core/embed/rust/src/ui/component/marquee.rs | 4 +- core/embed/rust/src/ui/component/maybe.rs | 2 +- core/embed/rust/src/ui/component/pad.rs | 2 +- core/embed/rust/src/ui/component/placed.rs | 8 +-- core/embed/rust/src/ui/component/qr_code.rs | 2 +- .../rust/src/ui/component/text/formatted.rs | 2 +- .../rust/src/ui/component/text/paragraphs.rs | 4 +- core/embed/rust/src/ui/component/timeout.rs | 2 +- .../src/ui/model_mercury/bootloader/intro.rs | 2 +- .../src/ui/model_mercury/bootloader/menu.rs | 2 +- .../src/ui/model_mercury/bootloader/mod.rs | 2 +- .../ui/model_mercury/bootloader/welcome.rs | 2 +- .../ui/model_mercury/component/bl_confirm.rs | 2 +- .../src/ui/model_mercury/component/button.rs | 2 +- .../src/ui/model_mercury/component/error.rs | 2 +- .../src/ui/model_mercury/component/frame.rs | 2 +- .../src/ui/model_mercury/component/loader.rs | 2 +- .../src/ui/model_mercury/component/result.rs | 4 +- .../model_mercury/component/welcome_screen.rs | 2 +- .../rust/src/ui/model_tr/bootloader/intro.rs | 2 +- .../rust/src/ui/model_tr/bootloader/menu.rs | 2 +- .../rust/src/ui/model_tr/bootloader/mod.rs | 2 +- .../src/ui/model_tr/bootloader/welcome.rs | 2 +- .../ui/model_tr/component/address_details.rs | 2 +- .../src/ui/model_tr/component/bl_confirm.rs | 2 +- .../rust/src/ui/model_tr/component/button.rs | 2 +- .../model_tr/component/button_controller.rs | 8 +-- .../ui/model_tr/component/changing_text.rs | 8 +-- .../model_tr/component/coinjoin_progress.rs | 2 +- .../rust/src/ui/model_tr/component/error.rs | 2 +- .../rust/src/ui/model_tr/component/flow.rs | 2 +- .../src/ui/model_tr/component/flow_pages.rs | 2 +- .../rust/src/ui/model_tr/component/frame.rs | 4 +- .../ui/model_tr/component/hold_to_confirm.rs | 2 +- .../src/ui/model_tr/component/homescreen.rs | 24 +++---- .../component/input_methods/choice.rs | 10 +-- .../component/input_methods/number_input.rs | 2 +- .../component/input_methods/passphrase.rs | 2 +- .../model_tr/component/input_methods/pin.rs | 2 +- .../component/input_methods/simple_choice.rs | 2 +- .../component/input_methods/wordlist.rs | 2 +- .../rust/src/ui/model_tr/component/loader.rs | 6 +- .../rust/src/ui/model_tr/component/page.rs | 2 +- .../src/ui/model_tr/component/progress.rs | 2 +- .../rust/src/ui/model_tr/component/result.rs | 2 +- .../src/ui/model_tr/component/scrollbar.rs | 4 +- .../src/ui/model_tr/component/share_words.rs | 6 +- .../src/ui/model_tr/component/show_more.rs | 2 +- .../rust/src/ui/model_tr/component/title.rs | 2 +- .../ui/model_tr/component/welcome_screen.rs | 2 +- core/embed/rust/src/ui/model_tr/layout.rs | 2 +- .../rust/src/ui/model_tt/bootloader/intro.rs | 2 +- .../rust/src/ui/model_tt/bootloader/menu.rs | 2 +- .../rust/src/ui/model_tt/bootloader/mod.rs | 2 +- .../src/ui/model_tt/bootloader/welcome.rs | 2 +- .../ui/model_tt/component/address_details.rs | 2 +- .../src/ui/model_tt/component/bl_confirm.rs | 2 +- .../rust/src/ui/model_tt/component/button.rs | 2 +- .../model_tt/component/coinjoin_progress.rs | 2 +- .../rust/src/ui/model_tt/component/dialog.rs | 4 +- .../rust/src/ui/model_tt/component/error.rs | 2 +- .../rust/src/ui/model_tt/component/fido.rs | 2 +- .../rust/src/ui/model_tt/component/frame.rs | 2 +- .../ui/model_tt/component/homescreen/mod.rs | 20 +++--- .../ui/model_tt/component/keyboard/bip39.rs | 2 +- .../model_tt/component/keyboard/mnemonic.rs | 2 +- .../model_tt/component/keyboard/passphrase.rs | 4 +- .../src/ui/model_tt/component/keyboard/pin.rs | 4 +- .../ui/model_tt/component/keyboard/slip39.rs | 2 +- .../model_tt/component/keyboard/word_count.rs | 2 +- .../rust/src/ui/model_tt/component/loader.rs | 2 +- .../src/ui/model_tt/component/number_input.rs | 4 +- .../rust/src/ui/model_tt/component/page.rs | 2 +- .../src/ui/model_tt/component/progress.rs | 2 +- .../rust/src/ui/model_tt/component/result.rs | 4 +- .../rust/src/ui/model_tt/component/scroll.rs | 2 +- .../src/ui/model_tt/component/simple_page.rs | 2 +- .../rust/src/ui/model_tt/component/swipe.rs | 2 +- .../ui/model_tt/component/welcome_screen.rs | 2 +- core/embed/rust/src/ui/model_tt/layout.rs | 2 +- core/embed/rust/src/ui/shape/display/bumps.rs | 66 +++++++++++++++++++ .../src/ui/shape/display/direct_canvas.rs | 24 +++++++ .../rust/src/ui/shape/display/fake_display.rs | 4 +- .../rust/src/ui/shape/display/fb_mono8.rs | 4 +- .../rust/src/ui/shape/display/fb_rgb565.rs | 26 ++------ .../rust/src/ui/shape/display/fb_rgba8888.rs | 24 ++----- core/embed/rust/src/ui/shape/display/mod.rs | 5 ++ .../rust/src/ui/shape/display/nofb_rgb565.rs | 41 +++++------- core/embed/rust/src/ui/shape/mod.rs | 2 +- core/embed/rust/src/ui/ui_features.rs | 2 +- 99 files changed, 269 insertions(+), 213 deletions(-) create mode 100644 core/embed/rust/src/ui/shape/display/bumps.rs create mode 100644 core/embed/rust/src/ui/shape/display/direct_canvas.rs diff --git a/core/embed/rust/src/ui/component/bar.rs b/core/embed/rust/src/ui/component/bar.rs index 604d382cab..a8127a19d7 100644 --- a/core/embed/rust/src/ui/component/bar.rs +++ b/core/embed/rust/src/ui/component/bar.rs @@ -41,7 +41,7 @@ impl Component for Bar { display::rect_fill_rounded(self.area, self.color, self.bg_color, self.radius as u8); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::Bar::new(self.area) .with_bg(self.color) .with_radius(self.radius) diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index ab8a38fc4d..75fbb0be42 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -62,7 +62,7 @@ pub trait Component { /// the `Child` wrapper. fn paint(&mut self); - fn render<'s>(&'s self, _target: &mut impl Renderer<'s>); + fn render<'s>(&self, _target: &mut impl Renderer<'s>); #[cfg(feature = "ui_bounds")] /// Report current paint bounds of this component. Used for debugging. @@ -157,7 +157,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.component.render(target); } @@ -261,7 +261,7 @@ where self.inner.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.inner.render(target); } @@ -303,7 +303,7 @@ where self.1.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.0.render(target); self.1.render(target); } @@ -357,7 +357,7 @@ where self.2.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.0.render(target); self.1.render(target); self.2.render(target); @@ -390,7 +390,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { if let Some(ref c) = self { c.render(target) } diff --git a/core/embed/rust/src/ui/component/border.rs b/core/embed/rust/src/ui/component/border.rs index 47941ae629..39248cfa94 100644 --- a/core/embed/rust/src/ui/component/border.rs +++ b/core/embed/rust/src/ui/component/border.rs @@ -42,7 +42,7 @@ where self.inner.paint() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.inner.render(target); } diff --git a/core/embed/rust/src/ui/component/connect.rs b/core/embed/rust/src/ui/component/connect.rs index 3d7897bdf0..9c5fc8ea31 100644 --- a/core/embed/rust/src/ui/component/connect.rs +++ b/core/embed/rust/src/ui/component/connect.rs @@ -57,7 +57,7 @@ impl Component for Connect { }); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let font = Font::NORMAL; self.bg.render(target); diff --git a/core/embed/rust/src/ui/component/empty.rs b/core/embed/rust/src/ui/component/empty.rs index 15fb017dc0..258f201d53 100644 --- a/core/embed/rust/src/ui/component/empty.rs +++ b/core/embed/rust/src/ui/component/empty.rs @@ -16,7 +16,7 @@ impl Component for Empty { fn paint(&mut self) {} - fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/image.rs b/core/embed/rust/src/ui/component/image.rs index 959ccf2c49..300933b219 100644 --- a/core/embed/rust/src/ui/component/image.rs +++ b/core/embed/rust/src/ui/component/image.rs @@ -50,7 +50,7 @@ impl Component for Image { self.draw(self.area.center(), Alignment2D::CENTER); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::ToifImage::new(self.area.center(), self.toif) .with_align(Alignment2D::CENTER) .render(target); @@ -138,7 +138,7 @@ impl Component for BlendedImage { self.paint_image(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::ToifImage::new(self.bg_top_left, self.bg.toif) .with_fg(self.bg_color) .render(target); diff --git a/core/embed/rust/src/ui/component/jpeg.rs b/core/embed/rust/src/ui/component/jpeg.rs index b9e85c688c..aa2810775f 100644 --- a/core/embed/rust/src/ui/component/jpeg.rs +++ b/core/embed/rust/src/ui/component/jpeg.rs @@ -48,7 +48,7 @@ impl Component for Jpeg { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::JpegImage::new_image(self.area.center(), self.image) .with_align(Alignment2D::CENTER) .with_scale(self.scale) diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 4618e21d3e..33c0d4f613 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -115,7 +115,7 @@ impl Component for Label<'_> { self.text.map(|c| self.layout.render_text(c)); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.text.map(|c| self.layout.render_text2(c, target)); } diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 76100cbf5a..218fdb5e00 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -31,7 +31,7 @@ where self.inner.paint() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.inner.render(target); } diff --git a/core/embed/rust/src/ui/component/marquee.rs b/core/embed/rust/src/ui/component/marquee.rs index d6a91386c8..ed07bb74cf 100644 --- a/core/embed/rust/src/ui/component/marquee.rs +++ b/core/embed/rust/src/ui/component/marquee.rs @@ -124,7 +124,7 @@ impl Marquee { .map(|t| display::marquee(self.area, t, offset, self.font, self.fg, self.bg)); } - pub fn render_anim<'s>(&'s self, target: &mut impl Renderer<'s>, offset: i16) { + pub fn render_anim<'s>(&self, target: &mut impl Renderer<'s>, offset: i16) { target.in_window(self.area, &|target| { let text_height = self.font.text_height(); let pos = self.area.top_left() + Offset::new(offset, text_height - 1); @@ -228,7 +228,7 @@ impl Component for Marquee { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let now = Instant::now(); match self.state { diff --git a/core/embed/rust/src/ui/component/maybe.rs b/core/embed/rust/src/ui/component/maybe.rs index bbc843bca1..d5a21b7f69 100644 --- a/core/embed/rust/src/ui/component/maybe.rs +++ b/core/embed/rust/src/ui/component/maybe.rs @@ -95,7 +95,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); if self.visible { self.inner.render(target); diff --git a/core/embed/rust/src/ui/component/pad.rs b/core/embed/rust/src/ui/component/pad.rs index fa6b5b065b..5e8371b1ff 100644 --- a/core/embed/rust/src/ui/component/pad.rs +++ b/core/embed/rust/src/ui/component/pad.rs @@ -55,7 +55,7 @@ impl Pad { } } - pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + pub fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::Bar::new(self.area) .with_bg(self.color) .render(target); diff --git a/core/embed/rust/src/ui/component/placed.rs b/core/embed/rust/src/ui/component/placed.rs index 18fcc1e186..bc2af8ffa6 100644 --- a/core/embed/rust/src/ui/component/placed.rs +++ b/core/embed/rust/src/ui/component/placed.rs @@ -65,7 +65,7 @@ where self.inner.paint() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.inner.render(target); } } @@ -112,7 +112,7 @@ where self.inner.paint() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.inner.render(target); } } @@ -188,7 +188,7 @@ where self.inner.paint() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.inner.render(target); } } @@ -283,7 +283,7 @@ where self.second.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.first.render(target); self.second.render(target); } diff --git a/core/embed/rust/src/ui/component/qr_code.rs b/core/embed/rust/src/ui/component/qr_code.rs index 6b13e116d8..a5ea3db96c 100644 --- a/core/embed/rust/src/ui/component/qr_code.rs +++ b/core/embed/rust/src/ui/component/qr_code.rs @@ -143,7 +143,7 @@ impl Component for Qr { Self::draw(&qr, area, self.border, scale); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let mut outbuffer = [0u8; QR_MAX_VERSION.buffer_len()]; let mut tempbuffer = [0u8; QR_MAX_VERSION.buffer_len()]; diff --git a/core/embed/rust/src/ui/component/text/formatted.rs b/core/embed/rust/src/ui/component/text/formatted.rs index 52e1803c38..ceeb899335 100644 --- a/core/embed/rust/src/ui/component/text/formatted.rs +++ b/core/embed/rust/src/ui/component/text/formatted.rs @@ -134,7 +134,7 @@ impl Component for FormattedText { self.layout_content(&mut TextRenderer); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.layout_content(&mut TextRenderer2::new(target)); } diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index 698bc1dfd9..b9cc667b4b 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -187,7 +187,7 @@ where ) } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { Self::foreach_visible( &self.source, &self.visible, @@ -658,7 +658,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.paragraphs.render(target); let current_visible = self.current.saturating_sub(self.paragraphs.offset.par); diff --git a/core/embed/rust/src/ui/component/timeout.rs b/core/embed/rust/src/ui/component/timeout.rs index 6da62e7255..aed7f508f0 100644 --- a/core/embed/rust/src/ui/component/timeout.rs +++ b/core/embed/rust/src/ui/component/timeout.rs @@ -46,7 +46,7 @@ impl Component for Timeout { fn paint(&mut self) {} - fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs index 1057a732ef..7b7c065130 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs @@ -107,7 +107,7 @@ impl<'a> Component for Intro<'a> { self.menu.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); self.text.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs b/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs index 9ffccbc566..962f6a6c50 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs @@ -109,7 +109,7 @@ impl Component for Menu { self.reset.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); self.close.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 78d3d95c12..9d056a441e 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -410,7 +410,7 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { warning: bool, vendor_str: Option<&str>, version: [u8; 4], - vendor_img: &[u8], + vendor_img: &'static [u8], wait: i32, ) { let bg_color = if warning { BLD_WARN_COLOR } else { BLD_BG }; diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs b/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs index 3900459163..2a347ac9a4 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs @@ -64,7 +64,7 @@ impl Component for Welcome { ); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); shape::Text::new(TEXT_ORIGIN, "Get started") diff --git a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs index 75ab740980..8fe2897c39 100644 --- a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs @@ -241,7 +241,7 @@ impl Component for Confirm<'_> { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.content_pad.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index fa77f19090..7f8d8a5cf9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -364,7 +364,7 @@ impl Component for Button { self.paint_content(style); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let style = self.style(); self.render_background(target, style); self.render_content(target, style); diff --git a/core/embed/rust/src/ui/model_mercury/component/error.rs b/core/embed/rust/src/ui/model_mercury/component/error.rs index 0999a06541..664a2576f9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/error.rs +++ b/core/embed/rust/src/ui/model_mercury/component/error.rs @@ -92,7 +92,7 @@ impl<'a> Component for ErrorScreen<'a> { self.footer.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); let icon = ICON_WARNING40; diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index e5c549101e..34cbc3feec 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -176,7 +176,7 @@ where self.button.paint(); self.content.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); self.subtitle.render(target); self.button.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index 8531f2a631..ed564bdb1e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -207,7 +207,7 @@ impl Component for Loader { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // TODO: Consider passing the current instant along with the event -- that way, // we could synchronize painting across the component tree. Also could be useful // in automated tests. diff --git a/core/embed/rust/src/ui/model_mercury/component/result.rs b/core/embed/rust/src/ui/model_mercury/component/result.rs index f5e619f18c..3eb7e0a5d9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/result.rs +++ b/core/embed/rust/src/ui/model_mercury/component/result.rs @@ -97,7 +97,7 @@ impl Component for ResultFooter<'_> { self.text.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // divider line let bar = Rect::from_center_and_size( Point::new(self.area.center().x, self.area.y0), @@ -182,7 +182,7 @@ impl<'a> Component for ResultScreen<'a> { self.footer.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.footer_pad.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs b/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs index 35c0ef6589..6317b34137 100644 --- a/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs @@ -54,7 +54,7 @@ impl Component for WelcomeScreen { ); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::ToifImage::new( self.area.top_center() + Offset::y(ICON_TOP_MARGIN), theme::ICON_LOGO.toif, diff --git a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs index cf323dac41..cbe3eda167 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs @@ -106,7 +106,7 @@ impl<'a> Component for Intro<'a> { self.buttons.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); diff --git a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs index 6ba41fb6ea..16dfdbd732 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs @@ -184,7 +184,7 @@ impl Component for Menu { self.choice_page.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.choice_page.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs b/core/embed/rust/src/ui/model_tr/bootloader/mod.rs index 64f4a547a1..0b0307ca7a 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/mod.rs @@ -379,7 +379,7 @@ impl UIFeaturesBootloader for ModelTRFeatures { _warning: bool, vendor_str: Option<&str>, version: [u8; 4], - vendor_img: &[u8], + vendor_img: &'static [u8], wait: i32, ) { display::sync(); diff --git a/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs b/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs index ad261e3b17..206312233c 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs @@ -60,7 +60,7 @@ impl Component for Welcome { ); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); let top_center = self.bg.area.top_center(); diff --git a/core/embed/rust/src/ui/model_tr/component/address_details.rs b/core/embed/rust/src/ui/model_tr/component/address_details.rs index 0165bb9a78..128742bfb4 100644 --- a/core/embed/rust/src/ui/model_tr/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tr/component/address_details.rs @@ -260,7 +260,7 @@ impl Component for AddressDetails { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.buttons.render(target); match self.current_page { diff --git a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs index 842c2ce224..8ac444980e 100644 --- a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs @@ -218,7 +218,7 @@ impl Component for Confirm<'_> { self.buttons.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); let mut display_top_left = |text: TString| { diff --git a/core/embed/rust/src/ui/model_tr/component/button.rs b/core/embed/rust/src/ui/model_tr/component/button.rs index 7e630d5d21..ffa82a8f16 100644 --- a/core/embed/rust/src/ui/model_tr/component/button.rs +++ b/core/embed/rust/src/ui/model_tr/component/button.rs @@ -263,7 +263,7 @@ impl Component for Button { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let style = self.style(); let fg_color = style.text_color; let bg_color = fg_color.negate(); diff --git a/core/embed/rust/src/ui/model_tr/component/button_controller.rs b/core/embed/rust/src/ui/model_tr/component/button_controller.rs index 2809388790..63d46eea41 100644 --- a/core/embed/rust/src/ui/model_tr/component/button_controller.rs +++ b/core/embed/rust/src/ui/model_tr/component/button_controller.rs @@ -95,7 +95,7 @@ impl ButtonType { } } - pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + pub fn render<'s>(&self, target: &mut impl Renderer<'s>) { match self { Self::Button(button) => { button.render(target); @@ -167,7 +167,7 @@ impl ButtonContainer { self.button_type.paint(); } - pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + pub fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.button_type.render(target); } @@ -592,7 +592,7 @@ impl Component for ButtonController { self.right_btn.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.left_btn.render(target); self.middle_btn.render(target); @@ -778,7 +778,7 @@ impl Component for AutomaticMover { fn paint(&mut self) {} - fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { // Moving automatically only when we receive a TimerToken that we have diff --git a/core/embed/rust/src/ui/model_tr/component/changing_text.rs b/core/embed/rust/src/ui/model_tr/component/changing_text.rs index 089566d10e..302f2ced99 100644 --- a/core/embed/rust/src/ui/model_tr/component/changing_text.rs +++ b/core/embed/rust/src/ui/model_tr/component/changing_text.rs @@ -111,7 +111,7 @@ where common::display_left(baseline, &self.text, self.font); } - fn render_left<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_left<'s>(&self, target: &mut impl Renderer<'s>) { let baseline = Point::new(self.pad.area.x0, self.y_baseline()); shape::Text::new(baseline, self.text.as_ref()) .with_font(self.font) @@ -123,7 +123,7 @@ where common::display_center(baseline, &self.text, self.font); } - fn render_center<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_center<'s>(&self, target: &mut impl Renderer<'s>) { let baseline = Point::new(self.pad.area.bottom_center().x, self.y_baseline()); shape::Text::new(baseline, self.text.as_ref()) .with_align(Alignment::Center) @@ -136,7 +136,7 @@ where common::display_right(baseline, &self.text, self.font); } - fn render_right<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_right<'s>(&self, target: &mut impl Renderer<'s>) { let baseline = Point::new(self.pad.area.x1, self.y_baseline()); shape::Text::new(baseline, self.text.as_ref()) .with_align(Alignment::End) @@ -201,7 +201,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); if self.show_content { // In the case text cannot fit, show ellipsis and its right part diff --git a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs index 53e5892bd1..af79043e7b 100644 --- a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs @@ -130,7 +130,7 @@ impl Component for CoinJoinProgress { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // TOP let center = self.area.center() + Offset::y(self.loader_y_offset); diff --git a/core/embed/rust/src/ui/model_tr/component/error.rs b/core/embed/rust/src/ui/model_tr/component/error.rs index 9772bc9d81..6678c4f8d5 100644 --- a/core/embed/rust/src/ui/model_tr/component/error.rs +++ b/core/embed/rust/src/ui/model_tr/component/error.rs @@ -102,7 +102,7 @@ impl Component for ErrorScreen<'_> { self.footer.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); if self.show_icons { diff --git a/core/embed/rust/src/ui/model_tr/component/flow.rs b/core/embed/rust/src/ui/model_tr/component/flow.rs index eb4841673e..2fccd204ab 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow.rs @@ -315,7 +315,7 @@ where self.current_page.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); // Scrollbars are painted only with a title and when requested if self.title.is_some() { diff --git a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs b/core/embed/rust/src/ui/model_tr/component/flow_pages.rs index c143c74232..1ae5e85cc6 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow_pages.rs @@ -122,7 +122,7 @@ impl Page { self.formatted.paint(); } - pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + pub fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.formatted.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/component/frame.rs b/core/embed/rust/src/ui/model_tr/component/frame.rs index f47158d9e3..66c7bc7e7e 100644 --- a/core/embed/rust/src/ui/model_tr/component/frame.rs +++ b/core/embed/rust/src/ui/model_tr/component/frame.rs @@ -82,7 +82,7 @@ where self.content.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); self.content.render(target); } @@ -204,7 +204,7 @@ where self.content.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); self.scrollbar.render(target); self.content.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs index d0afb1e2cf..1e1a18e76b 100644 --- a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs @@ -124,7 +124,7 @@ impl Component for HoldToConfirm { self.loader.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.loader.render(target); } } diff --git a/core/embed/rust/src/ui/model_tr/component/homescreen.rs b/core/embed/rust/src/ui/model_tr/component/homescreen.rs index a8a5048697..5a9cb4b09e 100644 --- a/core/embed/rust/src/ui/model_tr/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_tr/component/homescreen.rs @@ -117,7 +117,7 @@ impl Homescreen { } } - fn render_homescreen_image<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_homescreen_image<'s>(&self, target: &mut impl Renderer<'s>) { if let Some(image) = self.custom_image { shape::ToifImage::new_image(TOP_CENTER, image) .with_align(Alignment2D::TOP_CENTER) @@ -159,7 +159,7 @@ impl Homescreen { } } - fn render_notification<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_notification<'s>(&self, target: &mut impl Renderer<'s>) { let baseline = TOP_CENTER + Offset::y(NOTIFICATION_FONT.line_height()); if !usb_configured() { shape::Bar::new(AREA.split_top(NOTIFICATION_HEIGHT).0) @@ -214,7 +214,7 @@ impl Homescreen { self.label.paint(); } - fn render_label<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_label<'s>(&self, target: &mut impl Renderer<'s>) { // paint black background to place the label let mut outset = Insets::uniform(LABEL_OUTSET); // the margin at top is bigger (caused by text-height vs line-height?) @@ -315,7 +315,7 @@ impl Component for Homescreen { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // Redraw the whole screen when the screen changes (loader vs homescreen) if self.show_loader { self.loader.render(target); @@ -329,8 +329,8 @@ impl Component for Homescreen { } } -pub struct Lockscreen<'a> { - label: Child<Label<'a>>, +pub struct Lockscreen { + label: Child<Label<'static>>, instruction: Child<Label<'static>>, /// Used for unlocking the device from lockscreen invisible_buttons: Child<ButtonController>, @@ -340,8 +340,8 @@ pub struct Lockscreen<'a> { screensaver: bool, } -impl<'a> Lockscreen<'a> { - pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { +impl Lockscreen { + pub fn new(label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool) -> Self { // Buttons will not be visible, we only need all three of them to be present, // so that even middle-click triggers the event. let invisible_btn_layout = ButtonLayout::arrow_armed_arrow("".into()); @@ -360,7 +360,7 @@ impl<'a> Lockscreen<'a> { } } -impl Component for Lockscreen<'_> { +impl Component for Lockscreen { type Msg = (); fn place(&mut self, bounds: Rect) -> Rect { @@ -400,7 +400,7 @@ impl Component for Lockscreen<'_> { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { if self.screensaver { // keep screen blank return; @@ -484,7 +484,7 @@ impl Component for ConfirmHomescreen { self.buttons.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { if self.image.is_empty() { render_default_image(target); } else { @@ -537,7 +537,7 @@ impl crate::trace::Trace for Homescreen { } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Lockscreen<'_> { +impl crate::trace::Trace for Lockscreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Lockscreen"); t.child("label", &self.label); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs index 4cd681b775..c1d2e8d2b5 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs @@ -257,7 +257,7 @@ where /// Display current, previous and next choices according to /// the current ChoiceItem. - fn render_choices<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_choices<'s>(&self, target: &mut impl Renderer<'s>) { // Getting the row area for the choices - so that displaying // items in the used font will show them in the middle vertically. let area_height_half = self.pad.area.height() / 2; @@ -341,7 +341,7 @@ where } /// Display the current choice in the middle. - fn show_current_choice2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { + fn show_current_choice2<'s>(&self, target: &mut impl Renderer<'s>, area: Rect) { self.get_current_item() .render_center(target, area, self.inverse_selected_item); } @@ -390,7 +390,7 @@ where /// Display all the choices fitting on the left side. /// Going as far as possible. - fn show_left_choices2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { + fn show_left_choices2<'s>(&self, target: &mut impl Renderer<'s>, area: Rect) { // NOTE: page index can get negative here, so having it as i16 instead of usize let mut page_index = self.page_counter as i16 - 1; let mut current_area = area.split_right(self.items_distance).0; @@ -473,7 +473,7 @@ where /// Display all the choices fitting on the right side. /// Going as far as possible. - fn show_right_choices2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { + fn show_right_choices2<'s>(&self, target: &mut impl Renderer<'s>, area: Rect) { let mut page_index = self.page_counter + 1; let mut current_area = area.split_left(self.items_distance).1; while current_area.width() > 0 { @@ -720,7 +720,7 @@ where self.paint_choices(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.buttons.render(target); self.render_choices(target); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs index 9d25e5db81..3be90401b9 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs @@ -83,7 +83,7 @@ impl Component for NumberInput { self.choice_page.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.choice_page.render(target); } } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs index d3f422a6ee..e818ee943d 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs @@ -450,7 +450,7 @@ impl Component for PassphraseEntry { self.choice_page.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.passphrase_dots.render(target); self.choice_page.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs index e977e4ea37..b6e8fff18b 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs @@ -325,7 +325,7 @@ impl Component for PinEntry<'_> { self.choice_page.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.header_line.render(target); self.pin_line.render(target); self.choice_page.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs index f322c8cf17..262268a587 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs @@ -117,7 +117,7 @@ impl Component for SimpleChoice { self.choice_page.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.choice_page.render(target); } } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs index 27bfd4fffe..c6bf18da0f 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs @@ -316,7 +316,7 @@ impl Component for WordlistEntry { self.choice_page.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.chosen_letters.render(target); self.choice_page.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/component/loader.rs b/core/embed/rust/src/ui/model_tr/component/loader.rs index 799bfb19a9..d0abd03093 100644 --- a/core/embed/rust/src/ui/model_tr/component/loader.rs +++ b/core/embed/rust/src/ui/model_tr/component/loader.rs @@ -168,7 +168,7 @@ impl Loader { } pub fn render_loader<'s>( - &'s self, + &self, target: &mut impl Renderer<'s>, style: &LoaderStyle, done: i32, @@ -271,7 +271,7 @@ impl Component for Loader { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // TODO: Consider passing the current instant along with the event -- that way, // we could synchronize painting across the component tree. Also could be useful // in automated tests. @@ -393,7 +393,7 @@ impl Component for ProgressLoader { self.loader.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.loader.render(target); } } diff --git a/core/embed/rust/src/ui/model_tr/component/page.rs b/core/embed/rust/src/ui/model_tr/component/page.rs index 935f184c88..6b82d1d785 100644 --- a/core/embed/rust/src/ui/model_tr/component/page.rs +++ b/core/embed/rust/src/ui/model_tr/component/page.rs @@ -217,7 +217,7 @@ where self.buttons.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.content.render(target); self.buttons.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/progress.rs b/core/embed/rust/src/ui/model_tr/component/progress.rs index e44e39ed0e..c3906c4fd2 100644 --- a/core/embed/rust/src/ui/model_tr/component/progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/progress.rs @@ -154,7 +154,7 @@ impl Component for Progress { self.description.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); let area = constant::screen(); diff --git a/core/embed/rust/src/ui/model_tr/component/result.rs b/core/embed/rust/src/ui/model_tr/component/result.rs index 32f20f418b..c8aa604b0b 100644 --- a/core/embed/rust/src/ui/model_tr/component/result.rs +++ b/core/embed/rust/src/ui/model_tr/component/result.rs @@ -110,7 +110,7 @@ impl Component for ResultScreen<'_> { self.message_bottom.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.small_pad.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/scrollbar.rs b/core/embed/rust/src/ui/model_tr/component/scrollbar.rs index 3e812ee91a..d5b11f8514 100644 --- a/core/embed/rust/src/ui/model_tr/component/scrollbar.rs +++ b/core/embed/rust/src/ui/model_tr/component/scrollbar.rs @@ -234,7 +234,7 @@ impl ScrollBar { } } - fn render_horizontal<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_horizontal<'s>(&self, target: &mut impl Renderer<'s>) { let mut top_right = self.pad.area.top_right(); for dot in self.get_drawable_dots().iter().rev() { self.render_dot(target, dot, top_right); @@ -274,7 +274,7 @@ impl Component for ScrollBar { } /// Displaying one dot for each page. - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // Not showing the scrollbar dot when there is only one page if self.page_count <= 1 { return; diff --git a/core/embed/rust/src/ui/model_tr/component/share_words.rs b/core/embed/rust/src/ui/model_tr/component/share_words.rs index c9ca066675..48a86c6043 100644 --- a/core/embed/rust/src/ui/model_tr/component/share_words.rs +++ b/core/embed/rust/src/ui/model_tr/component/share_words.rs @@ -99,7 +99,7 @@ where } /// Display the final page with user confirmation. - fn render_final_page<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_final_page<'s>(&self, target: &mut impl Renderer<'s>) { let final_text = self.get_final_text(); text_multiline2( target, @@ -131,7 +131,7 @@ where } /// Display current set of recovery words. - fn render_words<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_words<'s>(&self, target: &mut impl Renderer<'s>) { let mut y_offset = 0; // Showing the word index and the words itself for i in 0..WORDS_PER_PAGE { @@ -191,7 +191,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // Showing scrollbar in all cases // Individual pages are responsible for not colliding with it self.scrollbar.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/show_more.rs b/core/embed/rust/src/ui/model_tr/component/show_more.rs index c2a10e1b55..60f1396715 100644 --- a/core/embed/rust/src/ui/model_tr/component/show_more.rs +++ b/core/embed/rust/src/ui/model_tr/component/show_more.rs @@ -79,7 +79,7 @@ where self.buttons.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.content.render(target); self.buttons.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/component/title.rs b/core/embed/rust/src/ui/model_tr/component/title.rs index a34e4a288d..7b23e92164 100644 --- a/core/embed/rust/src/ui/model_tr/component/title.rs +++ b/core/embed/rust/src/ui/model_tr/component/title.rs @@ -135,7 +135,7 @@ impl Component for Title { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { if self.needs_marquee { self.marquee.render(target); } else if self.centered { diff --git a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs b/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs index a824d85e77..c97c74d79d 100644 --- a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs @@ -55,7 +55,7 @@ impl Component for WelcomeScreen { ); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::ToifImage::new( self.area.bottom_center() - Offset::y(5), theme::ICON_DEVICE_NAME.toif, diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 36e2095237..4749e61a3f 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -203,7 +203,7 @@ impl ComponentMsgObj for Homescreen { } } -impl<'a> ComponentMsgObj for Lockscreen<'a> { +impl ComponentMsgObj for Lockscreen { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { Ok(CANCELLED.as_obj()) } diff --git a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs b/core/embed/rust/src/ui/model_tt/bootloader/intro.rs index c52d8a6804..97c4d32444 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/intro.rs @@ -106,7 +106,7 @@ impl<'a> Component for Intro<'a> { self.menu.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); self.text.render(target); diff --git a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs b/core/embed/rust/src/ui/model_tt/bootloader/menu.rs index f542dea4b0..e97c4ebe9c 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/menu.rs @@ -109,7 +109,7 @@ impl Component for Menu { self.reset.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); self.close.render(target); diff --git a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs index 1c248531f9..64b0f20429 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs @@ -399,7 +399,7 @@ impl UIFeaturesBootloader for ModelTTFeatures { warning: bool, vendor_str: Option<&str>, version: [u8; 4], - vendor_img: &[u8], + vendor_img: &'static [u8], wait: i32, ) { let bg_color = if warning { BLD_WARN_COLOR } else { BLD_BG }; diff --git a/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs b/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs index 0e2e3302fb..7ccf6b241a 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs @@ -59,7 +59,7 @@ impl Component for Welcome { ); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); shape::Text::new(screen().top_center() + Offset::y(102), "Get started with") diff --git a/core/embed/rust/src/ui/model_tt/component/address_details.rs b/core/embed/rust/src/ui/model_tt/component/address_details.rs index 851ac55252..ebcf2d40de 100644 --- a/core/embed/rust/src/ui/model_tt/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tt/component/address_details.rs @@ -177,7 +177,7 @@ impl Component for AddressDetails { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { match self.current_page { 0 => self.qr_code.render(target), 1 => self.details.render(target), diff --git a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs index 3bd1de1616..1684f63f51 100644 --- a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs @@ -239,7 +239,7 @@ impl Component for Confirm<'_> { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.content_pad.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/button.rs b/core/embed/rust/src/ui/model_tt/component/button.rs index 46a11a2ae9..b3467cb589 100644 --- a/core/embed/rust/src/ui/model_tt/component/button.rs +++ b/core/embed/rust/src/ui/model_tt/component/button.rs @@ -377,7 +377,7 @@ impl Component for Button { self.paint_content(style); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let style = self.style(); self.render_background(target, style); self.render_content(target, style); diff --git a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs index 411c91d355..79653855cd 100644 --- a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs @@ -125,7 +125,7 @@ where self.label.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.content.render(target); let center = constant::screen().center() + Offset::y(LOADER_OFFSET); diff --git a/core/embed/rust/src/ui/model_tt/component/dialog.rs b/core/embed/rust/src/ui/model_tt/component/dialog.rs index c66d37a91f..a3523af626 100644 --- a/core/embed/rust/src/ui/model_tt/component/dialog.rs +++ b/core/embed/rust/src/ui/model_tt/component/dialog.rs @@ -72,7 +72,7 @@ where self.controls.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.content.render(target); self.controls.render(target); } @@ -202,7 +202,7 @@ where self.controls.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.image.render(target); self.paragraphs.render(target); self.controls.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/error.rs b/core/embed/rust/src/ui/model_tt/component/error.rs index 12d2bf064b..0437d57e74 100644 --- a/core/embed/rust/src/ui/model_tt/component/error.rs +++ b/core/embed/rust/src/ui/model_tt/component/error.rs @@ -92,7 +92,7 @@ impl<'a> Component for ErrorScreen<'a> { self.footer.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); let icon = ICON_WARNING40; diff --git a/core/embed/rust/src/ui/model_tt/component/fido.rs b/core/embed/rust/src/ui/model_tt/component/fido.rs index a1fe452fec..96aa3687e1 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido.rs +++ b/core/embed/rust/src/ui/model_tt/component/fido.rs @@ -213,7 +213,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.icon.render(target); self.controls.render(target); self.app_name.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/frame.rs b/core/embed/rust/src/ui/model_tt/component/frame.rs index a8e847f712..4832a76cc5 100644 --- a/core/embed/rust/src/ui/model_tt/component/frame.rs +++ b/core/embed/rust/src/ui/model_tt/component/frame.rs @@ -176,7 +176,7 @@ where self.content.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); self.subtitle.render(target); self.button.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs index 4874580bdf..ed6c125bf8 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs @@ -125,7 +125,7 @@ impl Homescreen { self.loader.paint() } - fn render_loader<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_loader<'s>(&self, target: &mut impl Renderer<'s>) { TR::progress__locking_device.map_translated(|t| { shape::Text::new(TOP_CENTER + Offset::y(HOLD_Y), t) .with_align(Alignment::Center) @@ -259,7 +259,7 @@ impl Component for Homescreen { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); @@ -353,15 +353,15 @@ impl crate::trace::Trace for Homescreen { } } -pub struct Lockscreen<'a> { - label: TString<'a>, - image: BinaryData<'a>, +pub struct Lockscreen { + label: TString<'static>, + image: BinaryData<'static>, bootscreen: bool, coinjoin_authorized: bool, } -impl<'a> Lockscreen<'a> { - pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { +impl Lockscreen { + pub fn new(label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool) -> Self { Lockscreen { label, image: get_homescreen_image(), @@ -371,7 +371,7 @@ impl<'a> Lockscreen<'a> { } } -impl Component for Lockscreen<'_> { +impl Component for Lockscreen { type Msg = HomescreenMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -451,7 +451,7 @@ impl Component for Lockscreen<'_> { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let center = constant::screen().center(); match ImageInfo::parse(self.image) { @@ -572,7 +572,7 @@ fn get_homescreen_image() -> BinaryData<'static> { } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Lockscreen<'_> { +impl crate::trace::Trace for Lockscreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Lockscreen"); } diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs index 2f29ae6525..7a92bc4f96 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs @@ -156,7 +156,7 @@ impl Component for Bip39Input { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs index 6d70c89b9d..92e954f328 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs @@ -184,7 +184,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { if self.input.inner().inner().is_empty() { self.prompt.render(target); } else { diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs index 151272d67e..abcd00baac 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs @@ -301,7 +301,7 @@ impl Component for PassphraseKeyboard { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.input.render(target); self.scrollbar.render(target); self.confirm.render(target); @@ -395,7 +395,7 @@ impl Component for Input { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let style = theme::label_keyboard(); let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index e0a27a83a2..1a5270cfb9 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -266,7 +266,7 @@ impl Component for PinKeyboard<'_> { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.erase_btn.render(target); self.textbox_pad.render(target); if self.textbox.inner().is_empty() { @@ -530,7 +530,7 @@ impl Component for PinDots { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let dot_area = self.area.inset(HEADER_PADDING); self.pad.render(target); if self.display_digits { diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs index 0794d9c280..55bf5972b4 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs @@ -187,7 +187,7 @@ impl Component for Slip39Input { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs index c6614293e3..5cb2fabc9d 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs @@ -58,7 +58,7 @@ impl Component for SelectWordCount { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { for btn in self.button.iter() { btn.render(target) } diff --git a/core/embed/rust/src/ui/model_tt/component/loader.rs b/core/embed/rust/src/ui/model_tt/component/loader.rs index 11429ec61d..39933e7b95 100644 --- a/core/embed/rust/src/ui/model_tt/component/loader.rs +++ b/core/embed/rust/src/ui/model_tt/component/loader.rs @@ -223,7 +223,7 @@ impl Component for Loader { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // TODO: Consider passing the current instant along with the event -- that way, // we could synchronize painting across the component tree. Also could be useful // in automated tests. diff --git a/core/embed/rust/src/ui/model_tt/component/number_input.rs b/core/embed/rust/src/ui/model_tt/component/number_input.rs index 07e855cfbe..2954c201ed 100644 --- a/core/embed/rust/src/ui/model_tt/component/number_input.rs +++ b/core/embed/rust/src/ui/model_tt/component/number_input.rs @@ -121,7 +121,7 @@ where self.confirm_button.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.input.render(target); self.paragraphs_pad.render(target); self.paragraphs.render(target); @@ -236,7 +236,7 @@ impl Component for NumberInput { self.inc.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let mut buf = [0u8; 10]; if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index 17b45b4432..3cf8212638 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -418,7 +418,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); match &self.loader { Some(l) if l.is_animating() => self.loader.render(target), diff --git a/core/embed/rust/src/ui/model_tt/component/progress.rs b/core/embed/rust/src/ui/model_tt/component/progress.rs index 1d4f133279..2cc2ab1578 100644 --- a/core/embed/rust/src/ui/model_tt/component/progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/progress.rs @@ -108,7 +108,7 @@ impl Component for Progress { self.description.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); let center = constant::screen().center() + Offset::y(self.loader_y_offset); diff --git a/core/embed/rust/src/ui/model_tt/component/result.rs b/core/embed/rust/src/ui/model_tt/component/result.rs index e14d82c31e..8eb5456a7e 100644 --- a/core/embed/rust/src/ui/model_tt/component/result.rs +++ b/core/embed/rust/src/ui/model_tt/component/result.rs @@ -98,7 +98,7 @@ impl Component for ResultFooter<'_> { self.text.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // divider line let bar = Rect::from_center_and_size( Point::new(self.area.center().x, self.area.y0), @@ -183,7 +183,7 @@ impl<'a> Component for ResultScreen<'a> { self.footer.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.footer_pad.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/scroll.rs b/core/embed/rust/src/ui/model_tt/component/scroll.rs index 1ea96fd960..d091082b57 100644 --- a/core/embed/rust/src/ui/model_tt/component/scroll.rs +++ b/core/embed/rust/src/ui/model_tt/component/scroll.rs @@ -124,7 +124,7 @@ impl Component for ScrollBar { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { fn dotsize(distance: usize, nhidden: usize) -> Icon { match (nhidden.saturating_sub(distance)).min(2 - distance) { 0 => theme::DOT_INACTIVE, diff --git a/core/embed/rust/src/ui/model_tt/component/simple_page.rs b/core/embed/rust/src/ui/model_tt/component/simple_page.rs index 160c049c54..0eaad57150 100644 --- a/core/embed/rust/src/ui/model_tt/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_tt/component/simple_page.rs @@ -166,7 +166,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.content.render(target); if self.scrollbar.has_pages() { diff --git a/core/embed/rust/src/ui/model_tt/component/swipe.rs b/core/embed/rust/src/ui/model_tt/component/swipe.rs index b4cab1d2ef..ec86d517f1 100644 --- a/core/embed/rust/src/ui/model_tt/component/swipe.rs +++ b/core/embed/rust/src/ui/model_tt/component/swipe.rs @@ -161,5 +161,5 @@ impl Component for Swipe { fn paint(&mut self) {} - fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} } diff --git a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs b/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs index 2a359ede10..5e1cbfad75 100644 --- a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs @@ -76,7 +76,7 @@ impl Component for WelcomeScreen { ); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let logo = if self.empty_lock { theme::ICON_LOGO_EMPTY } else { diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index bf09daf3a1..35bfccb995 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -264,7 +264,7 @@ impl ComponentMsgObj for Homescreen { } } -impl ComponentMsgObj for Lockscreen<'_> { +impl ComponentMsgObj for Lockscreen { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { HomescreenMsg::Dismissed => Ok(CANCELLED.as_obj()), diff --git a/core/embed/rust/src/ui/shape/display/bumps.rs b/core/embed/rust/src/ui/shape/display/bumps.rs new file mode 100644 index 0000000000..98d0901a72 --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/bumps.rs @@ -0,0 +1,66 @@ +use crate::ui::shape::DrawingCache; + +use static_alloc::Bump; + +/// Memory reserved for `ProgressiveRenderer`s shape storage. +/// ProgressiveRenderer is used if framebuffer is not available. +#[cfg(not(feature = "xframebuffer"))] +pub const SHAPE_MEM_SIZE: usize = 5 * 1024; +#[cfg(feature = "xframebuffer")] +pub const SHAPE_MEM_SIZE: usize = 0; + +/// Maximum number of shapes on a single screen +/// (if you change it, you will probably need to change +/// the memory size above) +#[cfg(not(feature = "xframebuffer"))] +pub const SHAPE_MAX_COUNT: usize = 45; +#[cfg(feature = "xframebuffer")] +pub const SHAPE_MAX_COUNT: usize = 0; + +/// Size of `bump_a` memory that might not be accessible by DMA +pub const BUMP_A_SIZE: usize = DrawingCache::get_bump_a_size() + SHAPE_MEM_SIZE; +/// Size of `bump_b` memory that must be accessible by DMA +pub const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); + +/// Runs a user-defined function with two bump allocators. +/// +/// The function is passed two bump allocators, `bump_a` and `bump_b`, which +/// can be used to allocate memory for temporary objects. +/// +/// The function calls cannot be nested. The function panics if that happens. +pub fn run_with_bumps<F>(func: F) +where + F: for<'a> FnOnce(&'a mut Bump<[u8; BUMP_A_SIZE]>, &'a mut Bump<[u8; BUMP_B_SIZE]>), +{ + static mut LOCKED: bool = false; + + // SAFETY: + // The application is single-threaded, so we can safely use a + // static variable as a lock against nested calls. + ensure!(unsafe { !LOCKED }, "nested run_with_bumps!"); + + unsafe { + LOCKED = true; + }; + + #[cfg_attr(not(target_os = "macos"), link_section = ".no_dma_buffers")] + static mut BUMP_A: Bump<[u8; BUMP_A_SIZE]> = Bump::uninit(); + + #[cfg_attr(not(target_os = "macos"), link_section = ".buf")] + static mut BUMP_B: Bump<[u8; BUMP_B_SIZE]> = Bump::uninit(); + + // SAFETY: + // The function cannot be nested, so we can safely + // use the static bump allocators. + let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; + let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; + + bump_a.reset(); + bump_b.reset(); + + func(bump_a, bump_b); + + unsafe { + LOCKED = false; + }; +} diff --git a/core/embed/rust/src/ui/shape/display/direct_canvas.rs b/core/embed/rust/src/ui/shape/display/direct_canvas.rs new file mode 100644 index 0000000000..b59b5e2e6a --- /dev/null +++ b/core/embed/rust/src/ui/shape/display/direct_canvas.rs @@ -0,0 +1,24 @@ +use crate::ui::{ + display::Color, + shape::{Canvas, DirectRenderer, DrawingCache}, +}; + +use super::bumps::run_with_bumps; + +/// Creates the `Renderer` object for drawing on a specified canvas and invokes +/// a user-defined function that takes a single argument `target`. The user's +/// function can utilize the `target` for drawing on the canvas. +/// +/// `bg_color` specifies a background color with which the canvas is filled +/// before the drawing starts. If the background color is None, the background +/// is undefined, and the user has to fill it themselves. +pub fn render_on_canvas<C: Canvas, F>(canvas: &mut C, bg_color: Option<Color>, func: F) +where + F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, C>), +{ + run_with_bumps(|bump_a, bump_b| { + let cache = DrawingCache::new(bump_a, bump_b); + let mut target = DirectRenderer::new(canvas, bg_color, &cache); + func(&mut target); + }); +} diff --git a/core/embed/rust/src/ui/shape/display/fake_display.rs b/core/embed/rust/src/ui/shape/display/fake_display.rs index 43d6cac828..f7309b0f78 100644 --- a/core/embed/rust/src/ui/shape/display/fake_display.rs +++ b/core/embed/rust/src/ui/shape/display/fake_display.rs @@ -3,9 +3,9 @@ use crate::ui::{ shape::{DirectRenderer, Mono8Canvas, Viewport}, }; -pub fn render_on_display<'a, F>(_viewport: Option<Viewport>, _bg_color: Option<Color>, _func: F) +pub fn render_on_display<F>(_viewport: Option<Viewport>, _bg_color: Option<Color>, _func: F) where - F: FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>), + F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>), { unimplemented!(); } diff --git a/core/embed/rust/src/ui/shape/display/fb_mono8.rs b/core/embed/rust/src/ui/shape/display/fb_mono8.rs index aa0a454d49..de638ef2af 100644 --- a/core/embed/rust/src/ui/shape/display/fb_mono8.rs +++ b/core/embed/rust/src/ui/shape/display/fb_mono8.rs @@ -18,9 +18,9 @@ use static_alloc::Bump; /// `bg_color` specifies a background color with which the clip is filled before /// the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +pub fn render_on_display<F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) where - F: FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>), + F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>), { const BUMP_SIZE: usize = DrawingCache::get_bump_a_size() + DrawingCache::get_bump_b_size(); diff --git a/core/embed/rust/src/ui/shape/display/fb_rgb565.rs b/core/embed/rust/src/ui/shape/display/fb_rgb565.rs index c229d980ac..f6756e4af5 100644 --- a/core/embed/rust/src/ui/shape/display/fb_rgb565.rs +++ b/core/embed/rust/src/ui/shape/display/fb_rgb565.rs @@ -4,9 +4,9 @@ use crate::ui::{ shape::{BasicCanvas, DirectRenderer, DrawingCache, Rgb565Canvas, Viewport}, }; -use crate::trezorhal::display; +use super::bumps; -use static_alloc::Bump; +use crate::trezorhal::display; /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's @@ -18,28 +18,14 @@ use static_alloc::Bump; /// `bg_color` specifies a background color with which the clip is filled before /// the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +pub fn render_on_display<F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) where - F: FnOnce(&mut DirectRenderer<'_, 'a, Rgb565Canvas<'a>>), + F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, Rgb565Canvas<'a>>), { - const BUMP_A_SIZE: usize = DrawingCache::get_bump_a_size(); - const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); - - #[cfg_attr(not(target_os = "macos"), link_section = ".no_dma_buffers")] - static mut BUMP_A: Bump<[u8; BUMP_A_SIZE]> = Bump::uninit(); - - #[cfg_attr(not(target_os = "macos"), link_section = ".buf")] - static mut BUMP_B: Bump<[u8; BUMP_B_SIZE]> = Bump::uninit(); - - let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; - let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; - { + bumps::run_with_bumps(|bump_a, bump_b| { let width = display::DISPLAY_RESX as i16; let height = display::DISPLAY_RESY as i16; - bump_a.reset(); - bump_b.reset(); - let cache = DrawingCache::new(bump_a, bump_b); let (fb, fb_stride) = display::get_frame_buffer(); @@ -58,5 +44,5 @@ where let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache); func(&mut target); - } + }); } diff --git a/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs b/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs index d1e732fa9e..e54afe5475 100644 --- a/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs +++ b/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs @@ -4,7 +4,7 @@ use crate::ui::{ shape::{BasicCanvas, DirectRenderer, DrawingCache, Rgba8888Canvas, Viewport}, }; -use static_alloc::Bump; +use super::bumps; use crate::trezorhal::display; @@ -18,28 +18,14 @@ use crate::trezorhal::display; /// `bg_color` specifies a background color with which the clip is filled before /// the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +pub fn render_on_display<F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) where - F: FnOnce(&mut DirectRenderer<'_, 'a, Rgba8888Canvas<'a>>), + F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, Rgba8888Canvas<'a>>), { - const BUMP_A_SIZE: usize = DrawingCache::get_bump_a_size(); - const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); - - #[cfg_attr(not(target_os = "macos"), link_section = ".no_dma_buffers")] - static mut BUMP_A: Bump<[u8; BUMP_A_SIZE]> = Bump::uninit(); - - #[cfg_attr(not(target_os = "macos"), link_section = ".buf")] - static mut BUMP_B: Bump<[u8; BUMP_B_SIZE]> = Bump::uninit(); - - let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; - let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; - { + bumps::run_with_bumps(|bump_a, bump_b| { let width = display::DISPLAY_RESX as i16; let height = display::DISPLAY_RESY as i16; - bump_a.reset(); - bump_b.reset(); - let cache = DrawingCache::new(bump_a, bump_b); let (fb, fb_stride) = display::get_frame_buffer(); @@ -58,5 +44,5 @@ where let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache); func(&mut target); - } + }); } diff --git a/core/embed/rust/src/ui/shape/display/mod.rs b/core/embed/rust/src/ui/shape/display/mod.rs index 784c1c53a7..6d10a941de 100644 --- a/core/embed/rust/src/ui/shape/display/mod.rs +++ b/core/embed/rust/src/ui/shape/display/mod.rs @@ -1,3 +1,8 @@ +mod bumps; +mod direct_canvas; + +pub use direct_canvas::render_on_canvas; + #[cfg(all(feature = "xframebuffer", feature = "display_mono"))] pub mod fb_mono8; #[cfg(all(feature = "xframebuffer", feature = "display_mono"))] diff --git a/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs b/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs index 885b978329..4ac7f7360b 100644 --- a/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs +++ b/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs @@ -10,16 +10,9 @@ use crate::ui::{ use super::super::{BasicCanvas, BitmapView, DrawingCache, ProgressiveRenderer, Viewport}; -use static_alloc::Bump; +use super::bumps; -// Maximum number of shapes on a single screen -const SHAPE_MAX_COUNT: usize = 45; -// Memory reserved for ProgressiveRenderes shape storage -const SHAPE_MEM_SIZE: usize = 5 * 1024; -// Memory not accessible by DMA -const BUMP_A_SIZE: usize = DrawingCache::get_bump_a_size() + SHAPE_MEM_SIZE; -// Memory accessible by DMA -const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); +use static_alloc::Bump; /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's @@ -31,22 +24,13 @@ const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); /// `bg_color` specifies a background color with which the clip is filled before /// the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_display<'a, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +pub fn render_on_display<F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) where - F: FnOnce(&mut ProgressiveRenderer<'_, 'a, Bump<[u8; BUMP_A_SIZE]>, DisplayCanvas>), + F: for<'a> FnOnce( + &mut ProgressiveRenderer<'_, 'a, Bump<[u8; bumps::BUMP_A_SIZE]>, DisplayCanvas>, + ), { - #[cfg_attr(not(target_os = "macos"), link_section = ".no_dma_buffers")] - static mut BUMP_A: Bump<[u8; BUMP_A_SIZE]> = Bump::uninit(); - - #[cfg_attr(not(target_os = "macos"), link_section = ".buf")] - static mut BUMP_B: Bump<[u8; BUMP_B_SIZE]> = Bump::uninit(); - - let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; - let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; - { - bump_a.reset(); - bump_b.reset(); - + bumps::run_with_bumps(|bump_a, bump_b| { let cache = DrawingCache::new(bump_a, bump_b); let mut canvas = DisplayCanvas::new(); @@ -54,13 +38,18 @@ where canvas.set_viewport(viewport); } - let mut target = - ProgressiveRenderer::new(&mut canvas, bg_color, &cache, bump_a, SHAPE_MAX_COUNT); + let mut target = ProgressiveRenderer::new( + &mut canvas, + bg_color, + &cache, + bump_a, + bumps::SHAPE_MAX_COUNT, + ); func(&mut target); target.render(16); - } + }); } /// A simple display canvas allowing just two bitblt operations: diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index 2e17cc38df..c3bb827bd1 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -26,7 +26,7 @@ pub use canvas::{ BasicCanvas, Canvas, CanvasBuilder, Mono8Canvas, Rgb565Canvas, Rgba8888Canvas, Viewport, }; pub use circle::Circle; -pub use display::render_on_display; +pub use display::{render_on_canvas, render_on_display}; #[cfg(feature = "ui_jpeg_decoder")] pub use jpeg::JpegImage; pub use qrcode::QrImage; diff --git a/core/embed/rust/src/ui/ui_features.rs b/core/embed/rust/src/ui/ui_features.rs index 6fe92bb6e5..528981faab 100644 --- a/core/embed/rust/src/ui/ui_features.rs +++ b/core/embed/rust/src/ui/ui_features.rs @@ -65,7 +65,7 @@ pub trait UIFeaturesBootloader { warning: bool, vendor_str: Option<&str>, version: [u8; 4], - vendor_img: &[u8], + vendor_img: &'static [u8], wait: i32, ); } From c0b3a2c26b934830be3aed53c0059696e015553b Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 16 May 2024 16:04:34 +0200 Subject: [PATCH 087/626] feat(core/rust): introduce unlock-screen animated overlay [no changelog] --- .../rust/src/ui/model_mercury/cshape/mod.rs | 3 + .../ui/model_mercury/cshape/unlock_overlay.rs | 115 ++++++++++++++++++ .../rust/src/ui/shape/cache/drawing_cache.rs | 4 + core/embed/rust/src/ui/shape/mod.rs | 1 + .../embed/rust/src/ui/shape/utils/imagebuf.rs | 1 + core/embed/rust/src/ui/shape/utils/mod.rs | 3 + 6 files changed, 127 insertions(+) create mode 100644 core/embed/rust/src/ui/model_mercury/cshape/mod.rs create mode 100644 core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs diff --git a/core/embed/rust/src/ui/model_mercury/cshape/mod.rs b/core/embed/rust/src/ui/model_mercury/cshape/mod.rs new file mode 100644 index 0000000000..0154be1fb7 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/cshape/mod.rs @@ -0,0 +1,3 @@ +mod unlock_overlay; + +pub use unlock_overlay::UnlockOverlay; diff --git a/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs b/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs new file mode 100644 index 0000000000..36dbfde060 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs @@ -0,0 +1,115 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + shape::{Canvas, DrawingCache, Mono8Canvas, Renderer, Shape, ShapeClone}, +}; + +use without_alloc::alloc::LocalAllocLeakExt; + +/// A special shape for rendering 7 differently rotated circular +/// sectors on 5 concentric circles, used as an overlay on the background +/// image on the lock screen. +/// +/// The overlay covers area of 170x170 pixels (centered at `pos`). +pub struct UnlockOverlay { + /// Center of the overlay + pos: Point, + // Angle of the rotation (in degrees) + angle: f32, +} + +impl UnlockOverlay { + /// Outer radius + pub const RADIUS: i16 = 85; + /// Distance between the circles + pub const SPAN: i16 = 10; + /// Thickness of the circles + pub const THICKNESS: i16 = 4; + + /// Create a new overlay with the given center and rotation angle. + pub fn new(pos: Point, angle: f32) -> Self { + Self { pos, angle } + } + + pub fn render<'a>(self, renderer: &mut impl Renderer<'a>) { + renderer.render_shape(self); + } + + fn prepare_overlay(&self, canvas: &mut dyn Canvas) { + let center = canvas.bounds().center(); + + let transp = Color::black(); + let opaque = Color::white(); + + canvas.fill_background(opaque); + + // The most outer circle (with two sectors) + let angle = self.angle; + let r = Self::RADIUS; + canvas.fill_sector(center, r, 0.0 + angle, 140.0 + angle, transp); + canvas.fill_sector(center, r, 235.0 + angle, 270.0 + angle, transp); + canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); + + // The second circle (with one sector) + let angle = -self.angle - 20.0; + let r = Self::RADIUS - Self::SPAN; + canvas.fill_sector(center, r, 0.0 + angle, 135.0 + angle, transp); + canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); + + // The third circle (with one sector) + let angle = self.angle / 2.0 + 90.0; + let r = Self::RADIUS - 2 * Self::SPAN; + canvas.fill_sector(center, r, 0.0 + angle, 270.0 + angle, transp); + canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); + + // The fourth circle (with two sectors) + let angle = -self.angle / 2.0 + 60.0; + let r = Self::RADIUS - 3 * Self::SPAN; + canvas.fill_sector(center, r, 0.0 + angle, 110.0 + angle, transp); + canvas.fill_sector(center, r, 180.0 + angle, 280.0 + angle, transp); + canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); + + // Innner fixed circle + let r = Self::RADIUS - (9 * Self::SPAN) / 2; + canvas.fill_circle(center, r, transp, 255); + canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); + } +} + +impl<'a> Shape<'a> for UnlockOverlay { + fn bounds(&self) -> Rect { + Rect::new( + self.pos - Offset::uniform(Self::RADIUS), + self.pos + Offset::uniform(Self::RADIUS + 1), + ) + } + + fn cleanup(&mut self, _cache: &DrawingCache<'a>) { + // TODO: inform the cache that we won't use the zlib slot anymore + } + + fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache<'a>) { + let bounds = self.bounds(); + + let overlay_buff = &mut unwrap!(cache.image_buff(), "No image buffer"); + + let mut overlay_canvas = unwrap!( + Mono8Canvas::new(bounds.size(), None, None, &mut overlay_buff[..]), + "Too small buffer" + ); + + self.prepare_overlay(&mut overlay_canvas); + + canvas.blend_bitmap(bounds, overlay_canvas.view().with_fg(Color::black())); + } +} + +impl<'a> ShapeClone<'a> for UnlockOverlay { + fn clone_at_bump<T>(self, bump: &'a T) -> Option<&'a mut dyn Shape<'a>> + where + T: LocalAllocLeakExt<'a>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(UnlockOverlay { ..self })) + } +} diff --git a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs index 1ac40bcd6d..7b4d01780b 100644 --- a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs +++ b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs @@ -17,6 +17,10 @@ const ZLIB_CACHE_SLOTS: usize = 1; const ZLIB_CACHE_SLOTS: usize = 3; const RENDER_BUFF_SIZE: usize = (240 * 2 * 16) + ALIGN_PAD; + +#[cfg(feature = "model_mercury")] +const IMAGE_BUFF_SIZE: usize = 32768 + ALIGN_PAD; +#[cfg(not(feature = "model_mercury"))] const IMAGE_BUFF_SIZE: usize = 2048 + ALIGN_PAD; pub type ImageBuff = [u8; IMAGE_BUFF_SIZE]; diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index c3bb827bd1..15aff83193 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -34,4 +34,5 @@ pub use rawimage::RawImage; pub use render::{DirectRenderer, ProgressiveRenderer, Renderer}; pub use text::Text; pub use toif::ToifImage; +#[cfg(feature = "model_mercury")] pub use utils::ImageBuffer; diff --git a/core/embed/rust/src/ui/shape/utils/imagebuf.rs b/core/embed/rust/src/ui/shape/utils/imagebuf.rs index f8f7678c36..ee93865475 100644 --- a/core/embed/rust/src/ui/shape/utils/imagebuf.rs +++ b/core/embed/rust/src/ui/shape/utils/imagebuf.rs @@ -4,6 +4,7 @@ use crate::ui::{ }; /// Size of image buffer in bytes +/// (up to 180x180 pixel, 16-bit RGB565 image) const IMAGE_BUFFER_SIZE: usize = 64 * 1024; #[repr(align(16))] diff --git a/core/embed/rust/src/ui/shape/utils/mod.rs b/core/embed/rust/src/ui/shape/utils/mod.rs index d637054d07..1d374a7fbe 100644 --- a/core/embed/rust/src/ui/shape/utils/mod.rs +++ b/core/embed/rust/src/ui/shape/utils/mod.rs @@ -6,6 +6,9 @@ mod trigo; pub use blur::{BlurAlgorithm, BlurBuff}; pub use circle::circle_points; + +#[cfg(feature = "model_mercury")] pub use imagebuf::ImageBuffer; + pub use line::line_points; pub use trigo::sin_f32; From 9d0d1b3402bffc9f65a74de7fdb24d8862d9a652 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 30 Apr 2024 20:26:46 +0200 Subject: [PATCH 088/626] feat(core): Support extendable backup flag in SLIP-39. --- core/.changelog.d/+slip39.added | 1 + core/embed/rust/src/storage/mod.rs | 1 + core/src/apps/common/mnemonic.py | 2 + core/src/apps/debug/load_device.py | 5 +- .../management/recovery_device/homescreen.py | 13 +- .../management/recovery_device/recover.py | 5 +- .../apps/management/reset_device/__init__.py | 3 + core/src/storage/device.py | 17 +- core/src/storage/recovery.py | 11 + core/src/trezor/crypto/slip39.py | 102 ++++++--- core/tests/slip39_vectors.py | 34 +++ core/tests/test_apps.cardano.address.py | 8 +- .../tests/test_apps.cardano.get_public_key.py | 8 +- .../test_apps.management.recovery_device.py | 5 + core/tests/test_trezor.crypto.slip39.py | 202 +++++++++--------- docs/core/misc/slip0039.md | 27 +-- poetry.lock | 111 ++++++++-- pyproject.toml | 2 +- 18 files changed, 394 insertions(+), 163 deletions(-) create mode 100644 core/.changelog.d/+slip39.added diff --git a/core/.changelog.d/+slip39.added b/core/.changelog.d/+slip39.added new file mode 100644 index 0000000000..0ed8594913 --- /dev/null +++ b/core/.changelog.d/+slip39.added @@ -0,0 +1 @@ +Support extendable backup flag in SLIP-39. diff --git a/core/embed/rust/src/storage/mod.rs b/core/embed/rust/src/storage/mod.rs index 96eab3df72..3358a03d3f 100644 --- a/core/embed/rust/src/storage/mod.rs +++ b/core/embed/rust/src/storage/mod.rs @@ -36,6 +36,7 @@ const INITIALIZED: u16 = FLAG_PUBLIC | APP_DEVICE | 0x0013; const SAFETY_CHECK_LEVEL: u16 = APP_DEVICE | 0x0014; const EXPERIMENTAL_FEATURES: u16 = APP_DEVICE | 0x0015; const HIDE_PASSPHRASE_FROM_HOST: u16 = APP_DEVICE | 0x0016; +const SLIP39_EXTENDABLE: u16 = APP_DEVICE | 0x0017; pub fn get_avatar_len() -> StorageResult<usize> { get_length(HOMESCREEN) diff --git a/core/src/apps/common/mnemonic.py b/core/src/apps/common/mnemonic.py index 9e6c037813..58239deff5 100644 --- a/core/src/apps/common/mnemonic.py +++ b/core/src/apps/common/mnemonic.py @@ -49,6 +49,7 @@ def get_seed(passphrase: str = "", progress_bar: bool = True) -> bytes: from trezor.crypto import slip39 identifier = storage_device.get_slip39_identifier() + extendable = storage_device.get_slip39_extendable() iteration_exponent = storage_device.get_slip39_iteration_exponent() if identifier is None or iteration_exponent is None: # Identifier or exponent expected but not found @@ -58,6 +59,7 @@ def get_seed(passphrase: str = "", progress_bar: bool = True) -> bytes: passphrase.encode(), iteration_exponent, identifier, + extendable, render_func, ) diff --git a/core/src/apps/debug/load_device.py b/core/src/apps/debug/load_device.py index 6f95575eca..c1e02ed11d 100644 --- a/core/src/apps/debug/load_device.py +++ b/core/src/apps/debug/load_device.py @@ -49,7 +49,9 @@ async def load_device(msg: LoadDevice) -> Success: secret = msg.mnemonics[0].encode() backup_type = BackupType.Bip39 else: - identifier, iteration_exponent, secret = slip39.recover_ems(mnemonics) + identifier, extendable, iteration_exponent, secret = slip39.recover_ems( + mnemonics + ) # this must succeed if the recover_ems call succeeded share = slip39.decode_mnemonic(mnemonics[0]) @@ -61,6 +63,7 @@ async def load_device(msg: LoadDevice) -> Success: raise ProcessError("Invalid group count") storage_device.set_slip39_identifier(identifier) + storage_device.set_slip39_extendable(extendable) storage_device.set_slip39_iteration_exponent(iteration_exponent) storage_device.store_mnemonic_secret( diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 2691c6cbb0..478d895bee 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -118,9 +118,14 @@ async def _finish_recovery_dry_run(secret: bytes, backup_type: BackupType) -> Su is_slip39 = backup_types.is_slip39_backup_type(backup_type) # Check that the identifier and iteration exponent match as well if is_slip39: + if not backup_types.is_extendable_backup_type(backup_type): + result &= ( + storage_device.get_slip39_identifier() + == storage_recovery.get_slip39_identifier() + ) result &= ( - storage_device.get_slip39_identifier() - == storage_recovery.get_slip39_identifier() + storage_device.get_slip39_extendable() + == storage_recovery.get_slip39_extendable() ) result &= ( storage_device.get_slip39_iteration_exponent() @@ -149,11 +154,13 @@ async def _finish_recovery(secret: bytes, backup_type: BackupType) -> Success: ) if backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced): identifier = storage_recovery.get_slip39_identifier() + extendable = storage_recovery.get_slip39_extendable() exponent = storage_recovery.get_slip39_iteration_exponent() - if identifier is None or exponent is None: + if identifier is None or extendable is None or exponent is None: # Identifier and exponent need to be stored in storage at this point raise RuntimeError storage_device.set_slip39_identifier(identifier) + storage_device.set_slip39_extendable(extendable) storage_device.set_slip39_iteration_exponent(exponent) storage_recovery.end_progress() diff --git a/core/src/apps/management/recovery_device/recover.py b/core/src/apps/management/recovery_device/recover.py index 7e43cb1ad4..e60d484cf6 100644 --- a/core/src/apps/management/recovery_device/recover.py +++ b/core/src/apps/management/recovery_device/recover.py @@ -41,13 +41,14 @@ def process_slip39(words: str) -> tuple[bytes | None, slip39.Share]: storage_recovery.set_slip39_group_count(share.group_count) storage_recovery.set_slip39_iteration_exponent(share.iteration_exponent) storage_recovery.set_slip39_identifier(share.identifier) + storage_recovery.set_slip39_extendable(share.extendable) storage_recovery.set_slip39_remaining_shares(share.threshold - 1, group_index) storage_recovery_shares.set(share.index, group_index, words) # if share threshold and group threshold are 1 # we can calculate the secret right away if share.threshold == 1 and share.group_threshold == 1: - _, _, secret = slip39.recover_ems([words]) + _, _, _, secret = slip39.recover_ems([words]) return secret, share else: # we need more shares @@ -85,7 +86,7 @@ def process_slip39(words: str) -> tuple[bytes | None, slip39.Share]: # in case of slip39 basic we only need the first and only group mnemonics = storage_recovery_shares.fetch_group(0) - _, _, secret = slip39.recover_ems(mnemonics) + _, _, _, secret = slip39.recover_ems(mnemonics) return secret, share diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index 49f9fcfdfd..3502dd3928 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -73,6 +73,7 @@ async def reset_device(msg: ResetDevice) -> Success: elif backup_type in (BAK_T_SLIP39_BASIC, BAK_T_SLIP39_ADVANCED): # generate and set SLIP39 parameters storage_device.set_slip39_identifier(slip39.generate_random_identifier()) + storage_device.set_slip39_extendable(slip39.DEFAULT_EXTENDABLE_FLAG) storage_device.set_slip39_iteration_exponent(slip39.DEFAULT_ITERATION_EXPONENT) else: # Unknown backup type. @@ -183,6 +184,7 @@ def _get_slip39_mnemonics( groups: Sequence[tuple[int, int]], ): identifier = storage_device.get_slip39_identifier() + extendable = storage_device.get_slip39_extendable() iteration_exponent = storage_device.get_slip39_iteration_exponent() if identifier is None or iteration_exponent is None: raise ValueError @@ -192,6 +194,7 @@ def _get_slip39_mnemonics( group_threshold, groups, identifier, + extendable, iteration_exponent, encrypted_master_secret, ) diff --git a/core/src/storage/device.py b/core/src/storage/device.py index 215acc39c8..0c55347601 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -35,6 +35,7 @@ _SAFETY_CHECK_LEVEL = const(0x14) # int _EXPERIMENTAL_FEATURES = const(0x15) # bool (0x01 or empty) _HIDE_PASSPHRASE_FROM_HOST = const(0x16) # bool (0x01 or empty) +_SLIP39_EXTENDABLE = const(0x17) # bool (0x01 or empty) SAFETY_CHECK_LEVEL_STRICT : Literal[0] = const(0) SAFETY_CHECK_LEVEL_PROMPT : Literal[1] = const(1) @@ -256,10 +257,24 @@ def set_slip39_identifier(identifier: int) -> None: def get_slip39_identifier() -> int | None: - """The device's actual SLIP-39 identifier used in passphrase derivation.""" + """The device's actual SLIP-39 identifier used in legacy passphrase derivation.""" return common.get_uint16(_NAMESPACE, _SLIP39_IDENTIFIER) +def set_slip39_extendable(extendable: bool) -> None: + """ + The device's actual SLIP-39 extendable backup flag. + Not to be confused with recovery.extendable, which is stored only during + the recovery process and it is copied here upon success. + """ + common.set_bool(_NAMESPACE, _SLIP39_EXTENDABLE, extendable) + + +def get_slip39_extendable() -> bool: + """The device's actual SLIP-39 extendable backup flag.""" + return common.get_bool(_NAMESPACE, _SLIP39_EXTENDABLE) + + def set_slip39_iteration_exponent(exponent: int) -> None: """ The device's actual SLIP-39 iteration exponent used in passphrase derivation. diff --git a/core/src/storage/recovery.py b/core/src/storage/recovery.py index 5e7324aa26..dfdfe1421a 100644 --- a/core/src/storage/recovery.py +++ b/core/src/storage/recovery.py @@ -13,6 +13,7 @@ _REMAINING = const(0x05) # int _SLIP39_ITERATION_EXPONENT = const(0x06) # int _SLIP39_GROUP_COUNT = const(0x07) # int +_SLIP39_EXTENDABLE = const(0x08) # bool # Deprecated Keys: # _WORD_COUNT = const(0x02) # int @@ -56,6 +57,16 @@ def get_slip39_identifier() -> int | None: return common.get_uint16(_NAMESPACE, _SLIP39_IDENTIFIER) +def set_slip39_extendable(extendable: bool) -> None: + _require_progress() + common.set_bool(_NAMESPACE, _SLIP39_EXTENDABLE, extendable) + + +def get_slip39_extendable() -> bool: + _require_progress() + return common.get_bool(_NAMESPACE, _SLIP39_EXTENDABLE) + + def set_slip39_iteration_exponent(exponent: int) -> None: _require_progress() common.set_uint8(_NAMESPACE, _SLIP39_ITERATION_EXPONENT, exponent) diff --git a/core/src/trezor/crypto/slip39.py b/core/src/trezor/crypto/slip39.py index b2ee985979..8d6570d92b 100644 --- a/core/src/trezor/crypto/slip39.py +++ b/core/src/trezor/crypto/slip39.py @@ -67,10 +67,15 @@ def _xor(a: bytes, b: bytes) -> bytes: _ID_LENGTH_BITS = const(15) """The length of the random identifier in bits.""" -_ITERATION_EXP_LENGTH_BITS = const(5) +_EXTENDABLE_FLAG_LENGTH_BITS = const(1) +"""The length of the extendable backup flag in bits.""" + +_ITERATION_EXP_LENGTH_BITS = const(4) """The length of the iteration exponent in bits.""" -_ID_EXP_LENGTH_WORDS = _bits_to_words(_ID_LENGTH_BITS + _ITERATION_EXP_LENGTH_BITS) +_ID_EXP_LENGTH_WORDS = _bits_to_words( + _ID_LENGTH_BITS + _EXTENDABLE_FLAG_LENGTH_BITS + _ITERATION_EXP_LENGTH_BITS +) """The length of the random identifier and iteration exponent in words.""" _CHECKSUM_LENGTH_WORDS = const(3) @@ -79,8 +84,13 @@ def _xor(a: bytes, b: bytes) -> bytes: _DIGEST_LENGTH_BYTES = const(4) """The length of the digest of the shared secret in bytes.""" -_CUSTOMIZATION_STRING = b"shamir" -"""The customization string used in the RS1024 checksum and in the PBKDF2 salt.""" +_CUSTOMIZATION_STRING_ORIG = b"shamir" +"""The customization string used in the RS1024 checksum and in the PBKDF2 salt for shares +_without_ the extendable backup flag.""" + +_CUSTOMIZATION_STRING_EXTENDABLE = b"shamir_extendable" +"""The customization string used in the RS1024 checksum for shares _with_ the extendable +backup flag.""" _METADATA_LENGTH_WORDS = _ID_EXP_LENGTH_WORDS + 2 + _CHECKSUM_LENGTH_WORDS """The length of the mnemonic in words without the share value.""" @@ -111,6 +121,7 @@ def _xor(a: bytes, b: bytes) -> bytes: """The maximum number of groups that can be created.""" DEFAULT_ITERATION_EXPONENT = const(1) +DEFAULT_EXTENDABLE_FLAG = True class Share: @@ -121,6 +132,7 @@ class Share: def __init__( self, identifier: int, + extendable: bool, iteration_exponent: int, group_index: int, group_threshold: int, @@ -130,6 +142,7 @@ def __init__( share_value: bytes, ): self.identifier = identifier + self.extendable = extendable self.iteration_exponent = iteration_exponent self.group_index = group_index self.group_threshold = group_threshold @@ -144,6 +157,7 @@ def decrypt( passphrase: bytes, iteration_exponent: int, identifier: int, + extendable: bool, progress_callback: Callable[[int, int], None] | None = None, ) -> bytes: """ @@ -154,7 +168,7 @@ def decrypt( """ l = encrypted_master_secret[: len(encrypted_master_secret) // 2] r = encrypted_master_secret[len(encrypted_master_secret) // 2 :] - salt = _get_salt(identifier) + salt = _get_salt(identifier, extendable) for i in reversed(range(_ROUND_COUNT)): (l, r) = ( r, @@ -178,6 +192,7 @@ def split_ems( tuple[int, int] ], # A collection of (member_threshold, member_count). identifier: int, + extendable: bool, iteration_exponent: int, encrypted_master_secret: bytes, # The encrypted master secret to split. ) -> list[list[str]]: @@ -218,6 +233,7 @@ def split_ems( group_mnemonics.append( _encode_mnemonic( identifier, + extendable, iteration_exponent, group_index, group_threshold, @@ -231,11 +247,11 @@ def split_ems( return mnemonics -def recover_ems(mnemonics: list[str]) -> tuple[int, int, bytes]: +def recover_ems(mnemonics: list[str]) -> tuple[int, bool, int, bytes]: """ Combines mnemonic shares to obtain the encrypted master secret which was previously split using Shamir's secret sharing scheme. - Returns identifier, iteration exponent and the encrypted master secret. + Returns identifier, extendable backup flag, iteration exponent and the encrypted master secret. """ if not mnemonics: @@ -243,6 +259,7 @@ def recover_ems(mnemonics: list[str]) -> tuple[int, int, bytes]: ( identifier, + extendable, iteration_exponent, group_threshold, _group_count, @@ -266,7 +283,7 @@ def recover_ems(mnemonics: list[str]) -> tuple[int, int, bytes]: ] encrypted_master_secret = _recover_secret(group_threshold, group_shares) - return identifier, iteration_exponent, encrypted_master_secret + return identifier, extendable, iteration_exponent, encrypted_master_secret def decode_mnemonic(mnemonic: str) -> Share: @@ -283,12 +300,16 @@ def decode_mnemonic(mnemonic: str) -> Share: if padding_len > 8: raise MnemonicError("Invalid mnemonic length.") - if not _rs1024_verify_checksum(mnemonic_data): - raise MnemonicError("Invalid mnemonic checksum.") - id_exp_int = _int_from_indices(mnemonic_data[:_ID_EXP_LENGTH_WORDS]) - identifier = id_exp_int >> _ITERATION_EXP_LENGTH_BITS + identifier = id_exp_int >> ( + _EXTENDABLE_FLAG_LENGTH_BITS + _ITERATION_EXP_LENGTH_BITS + ) + extendable = bool((id_exp_int >> _ITERATION_EXP_LENGTH_BITS) & 1) iteration_exponent = id_exp_int & ((1 << _ITERATION_EXP_LENGTH_BITS) - 1) + + if not _rs1024_verify_checksum(mnemonic_data, extendable): + raise MnemonicError("Invalid mnemonic checksum.") + tmp = _int_from_indices( mnemonic_data[_ID_EXP_LENGTH_WORDS : _ID_EXP_LENGTH_WORDS + 2] ) @@ -314,6 +335,7 @@ def decode_mnemonic(mnemonic: str) -> Share: return Share( identifier, + extendable, iteration_exponent, group_index, group_threshold + 1, @@ -352,13 +374,22 @@ def _mnemonic_to_indices(mnemonic: str) -> Iterable[int]: # === Checksum functions === -def _rs1024_create_checksum(data: Indices) -> Indices: +def _customization_string(extendable: bool) -> bytes: + if extendable: + return _CUSTOMIZATION_STRING_EXTENDABLE + else: + return _CUSTOMIZATION_STRING_ORIG + + +def _rs1024_create_checksum(data: Indices, extendable: bool) -> Indices: """ This implements the checksum - a Reed-Solomon code over GF(1024) that guarantees detection of any error affecting at most 3 words and has less than a 1 in 10^9 chance of failing to detect more errors. """ - values = tuple(_CUSTOMIZATION_STRING) + data + _CHECKSUM_LENGTH_WORDS * (0,) + values = ( + tuple(_customization_string(extendable)) + data + _CHECKSUM_LENGTH_WORDS * (0,) + ) polymod = _rs1024_polymod(values) ^ 1 return tuple( (polymod >> 10 * i) & 1023 for i in reversed(range(_CHECKSUM_LENGTH_WORDS)) @@ -387,11 +418,11 @@ def _rs1024_polymod(values: Indices) -> int: return chk -def _rs1024_verify_checksum(data: Indices) -> bool: +def _rs1024_verify_checksum(data: Indices, extendable: bool) -> bool: """ Verifies a checksum of the given mnemonic, which was already parsed into Indices. """ - return _rs1024_polymod(tuple(_CUSTOMIZATION_STRING) + data) == 1 + return _rs1024_polymod(tuple(_customization_string(extendable)) + data) == 1 # === Internal functions === @@ -409,10 +440,13 @@ def _round_function(i: int, passphrase: bytes, e: int, salt: bytes, r: bytes) -> ).key()[: len(r)] -def _get_salt(identifier: int) -> bytes: - return _CUSTOMIZATION_STRING + identifier.to_bytes( - _bits_to_bytes(_ID_LENGTH_BITS), "big" - ) +def _get_salt(identifier: int, extendable: bool) -> bytes: + if extendable: + return bytes() + else: + return _CUSTOMIZATION_STRING_ORIG + identifier.to_bytes( + _bits_to_bytes(_ID_LENGTH_BITS), "big" + ) def _create_digest(random_data: bytes, shared_secret: bytes) -> bytes: @@ -481,12 +515,17 @@ def _recover_secret(threshold: int, shares: list[tuple[int, bytes]]) -> bytes: def _group_prefix( identifier: int, + extendable: bool, iteration_exponent: int, group_index: int, group_threshold: int, group_count: int, ) -> Indices: - id_exp_int = (identifier << _ITERATION_EXP_LENGTH_BITS) + iteration_exponent + id_exp_int = ( + (identifier << (_EXTENDABLE_FLAG_LENGTH_BITS + _ITERATION_EXP_LENGTH_BITS)) + + (int(extendable) << _ITERATION_EXP_LENGTH_BITS) + + iteration_exponent + ) return tuple(_int_to_indices(id_exp_int, _ID_EXP_LENGTH_WORDS, _RADIX_BITS)) + ( (group_index << 6) + ((group_threshold - 1) << 2) + ((group_count - 1) >> 2), ) @@ -494,6 +533,7 @@ def _group_prefix( def _encode_mnemonic( identifier: int, + extendable: bool, iteration_exponent: int, group_index: int, # The x coordinate of the group share. group_threshold: int, # The number of group shares needed to reconstruct the encrypted master secret. @@ -513,7 +553,12 @@ def _encode_mnemonic( share_data = ( _group_prefix( - identifier, iteration_exponent, group_index, group_threshold, group_count + identifier, + extendable, + iteration_exponent, + group_index, + group_threshold, + group_count, ) + ( (((group_count - 1) & 3) << 8) @@ -522,15 +567,16 @@ def _encode_mnemonic( ) + tuple(_int_to_indices(value_int, value_word_count, _RADIX_BITS)) ) - checksum = _rs1024_create_checksum(share_data) + checksum = _rs1024_create_checksum(share_data, extendable) return _mnemonic_from_indices(share_data + checksum) def _decode_mnemonics( mnemonics: list[str], -) -> tuple[int, int, int, int, MnemonicGroups]: +) -> tuple[int, bool, int, int, int, MnemonicGroups]: identifiers = set() + extendable_flags = set() iteration_exponents = set() group_thresholds = set() group_counts = set() @@ -540,6 +586,7 @@ def _decode_mnemonics( for mnemonic in mnemonics: share = decode_mnemonic(mnemonic) identifiers.add(share.identifier) + extendable_flags.add(share.extendable) iteration_exponents.add(share.iteration_exponent) group_thresholds.add(share.group_threshold) group_counts.add(share.group_count) @@ -550,7 +597,11 @@ def _decode_mnemonics( ) group[1].add((share.index, share.share_value)) - if len(identifiers) != 1 or len(iteration_exponents) != 1: + if ( + len(identifiers) != 1 + or len(extendable_flags) != 1 + or len(iteration_exponents) != 1 + ): raise MnemonicError( f"Invalid set of mnemonics. All mnemonics must begin with the same {_ID_EXP_LENGTH_WORDS} words." ) @@ -573,6 +624,7 @@ def _decode_mnemonics( return ( identifiers.pop(), + extendable_flags.pop(), iteration_exponents.pop(), group_thresholds.pop(), group_counts.pop(), diff --git a/core/tests/slip39_vectors.py b/core/tests/slip39_vectors.py index b92a5be3ec..bd89c0c05c 100644 --- a/core/tests/slip39_vectors.py +++ b/core/tests/slip39_vectors.py @@ -279,4 +279,38 @@ ], "", ], + [ + [ + "herald flea academic cage avoid space trend estate dryer hairy evoke eyebrow improve airline artwork garlic premium duration prevent oven", + "herald flea academic client blue skunk class goat luxury deny presence impulse graduate clay join blanket bulge survive dish necklace", + "herald flea academic acne advance fused brother frozen broken game ranked ajar already believe check install theory angry exercise adult" + ], + "ad6f2ad8b59bbbaa01369b9006208d9a", + ], + [ + [ + "testify swimming academic academic column loyalty smear include exotic bedroom exotic wrist lobe cover grief golden smart junior estimate learn" + ], + "1679b4516e0ee5954351d288a838f45e", + ], + [ + [ + "enemy favorite academic acid cowboy phrase havoc level response walnut budget painting inside trash adjust froth kitchen learn tidy punish", + "enemy favorite academic always academic sniff script carpet romp kind promise scatter center unfair training emphasis evening belong fake enforce" + ], + "48b1a4b80b8c209ad42c33672bdaa428", + ], + [ + [ + "impulse calcium academic academic alcohol sugar lyrics pajamas column facility finance tension extend space birthday rainbow swimming purple syndrome facility trial warn duration snapshot shadow hormone rhyme public spine counter easy hawk album" + ], + "8340611602fe91af634a5f4608377b5235fa2d757c51d720c0c7656249a3035f", + ], + [ + [ + "western apart academic always artist resident briefing sugar woman oven coding club ajar merit pecan answer prisoner artist fraction amount desktop mild false necklace muscle photo wealthy alpha category unwrap spew losing making", + "western apart academic acid answer ancient auction flip image penalty oasis beaver multiple thunder problem switch alive heat inherit superior teaspoon explain blanket pencil numb lend punish endless aunt garlic humidity kidney observe" + ], + "8dc652d6d6cd370d8c963141f6d79ba440300f25c467302c1d966bff8f62300d", + ], ] diff --git a/core/tests/test_apps.cardano.address.py b/core/tests/test_apps.cardano.address.py index 77a295fbc9..140992bc13 100644 --- a/core/tests/test_apps.cardano.address.py +++ b/core/tests/test_apps.cardano.address.py @@ -190,8 +190,8 @@ def test_slip39_128(self): "talent drug much home firefly toxic analysis idea umbrella slice", ] passphrase = b"TREZOR" - identifier, exponent, ems = slip39.recover_ems(mnemonics) - master_secret = slip39.decrypt(ems, passphrase, exponent, identifier) + identifier, extendable, exponent, ems = slip39.recover_ems(mnemonics) + master_secret = slip39.decrypt(ems, passphrase, exponent, identifier, extendable) node = cardano.from_seed_slip23(master_secret) @@ -264,8 +264,8 @@ def test_slip39_256(self): "quick silent downtown oral critical step remove says rhythm venture aunt", ] passphrase = b"TREZOR" - identifier, exponent, ems = slip39.recover_ems(mnemonics) - master_secret = slip39.decrypt(ems, passphrase, exponent, identifier) + identifier, extendable, exponent, ems = slip39.recover_ems(mnemonics) + master_secret = slip39.decrypt(ems, passphrase, exponent, identifier, extendable) node = cardano.from_seed_slip23(master_secret) diff --git a/core/tests/test_apps.cardano.get_public_key.py b/core/tests/test_apps.cardano.get_public_key.py index 4d8635b0cb..846219bbae 100644 --- a/core/tests/test_apps.cardano.get_public_key.py +++ b/core/tests/test_apps.cardano.get_public_key.py @@ -144,8 +144,8 @@ def test_slip39_128(self): "talent drug much home firefly toxic analysis idea umbrella slice", ] passphrase = b"TREZOR" - identifier, exponent, ems = slip39.recover_ems(mnemonics) - master_secret = slip39.decrypt(ems, passphrase, exponent, identifier) + identifier, extendable, exponent, ems = slip39.recover_ems(mnemonics) + master_secret = slip39.decrypt(ems, passphrase, exponent, identifier, extendable) node = cardano.from_seed_slip23(master_secret) @@ -193,8 +193,8 @@ def test_slip39_256(self): "quick silent downtown oral critical step remove says rhythm venture aunt", ] passphrase = b"TREZOR" - identifier, exponent, ems = slip39.recover_ems(mnemonics) - master_secret = slip39.decrypt(ems, passphrase, exponent, identifier) + identifier, extendable, exponent, ems = slip39.recover_ems(mnemonics) + master_secret = slip39.decrypt(ems, passphrase, exponent, identifier, extendable) node = cardano.from_seed_slip23(master_secret) diff --git a/core/tests/test_apps.management.recovery_device.py b/core/tests/test_apps.management.recovery_device.py index ebfd4d7127..a1809d2d13 100644 --- a/core/tests/test_apps.management.recovery_device.py +++ b/core/tests/test_apps.management.recovery_device.py @@ -41,6 +41,7 @@ def test_process_slip39_basic(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) + self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) self.assertEqual(storage.recovery.get_slip39_remaining_shares(0), 2) self.assertEqual( storage.recovery_shares.get(share.index, share.group_index), first @@ -84,6 +85,7 @@ def test_process_slip39_advanced(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) + self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) self.assertEqual( storage.recovery.fetch_slip39_remaining_shares(), [16, 0, 16, 16] ) @@ -100,6 +102,7 @@ def test_process_slip39_advanced(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) + self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) self.assertEqual( storage.recovery_shares.get(share.index, share.group_index), words ) @@ -122,6 +125,7 @@ def test_process_slip39_advanced(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) + self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) self.assertEqual( storage.recovery_shares.get(share.index, share.group_index), words ) @@ -146,6 +150,7 @@ def test_process_slip39_advanced(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) + self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) self.assertEqual( storage.recovery_shares.get(share.index, share.group_index), words ) diff --git a/core/tests/test_trezor.crypto.slip39.py b/core/tests/test_trezor.crypto.slip39.py index c04c88520f..7b99184ae7 100644 --- a/core/tests/test_trezor.crypto.slip39.py +++ b/core/tests/test_trezor.crypto.slip39.py @@ -30,139 +30,149 @@ class TestCryptoSlip39(unittest.TestCase): def test_basic_sharing_random(self): ems = random.bytes(32) identifier = slip39.generate_random_identifier() - mnemonics = slip39.split_ems(1, [(3, 5)], identifier, 1, ems) - mnemonics = mnemonics[0] - self.assertEqual( - slip39.recover_ems(mnemonics[:3]), slip39.recover_ems(mnemonics[2:]) - ) + for extendable in (False, True): + mnemonics = slip39.split_ems(1, [(3, 5)], identifier, extendable, 1, ems) + mnemonics = mnemonics[0] + self.assertEqual( + slip39.recover_ems(mnemonics[:3]), slip39.recover_ems(mnemonics[2:]) + ) def test_basic_sharing_fixed(self): - generated_identifier = slip39.generate_random_identifier() - mnemonics = slip39.split_ems(1, [(3, 5)], generated_identifier, 1, self.EMS) - mnemonics = mnemonics[0] - identifier, exponent, ems = slip39.recover_ems(mnemonics[:3]) - self.assertEqual(ems, self.EMS) - self.assertEqual(generated_identifier, identifier) - self.assertEqual(slip39.recover_ems(mnemonics[1:4])[2], ems) - with self.assertRaises(slip39.MnemonicError): - slip39.recover_ems(mnemonics[1:3]) + for extendable in (False, True): + generated_identifier = slip39.generate_random_identifier() + mnemonics = slip39.split_ems(1, [(3, 5)], generated_identifier, extendable, 1, self.EMS) + mnemonics = mnemonics[0] + identifier, _, _, ems = slip39.recover_ems(mnemonics[:3]) + self.assertEqual(ems, self.EMS) + self.assertEqual(generated_identifier, identifier) + self.assertEqual(slip39.recover_ems(mnemonics[1:4])[3], ems) + with self.assertRaises(slip39.MnemonicError): + slip39.recover_ems(mnemonics[1:3]) def test_iteration_exponent(self): - identifier = slip39.generate_random_identifier() - mnemonics = slip39.split_ems(1, [(3, 5)], identifier, 1, self.EMS) - mnemonics = mnemonics[0] - identifier, exponent, ems = slip39.recover_ems(mnemonics[1:4]) - self.assertEqual(ems, self.EMS) + for extendable in (False, True): + identifier = slip39.generate_random_identifier() + mnemonics = slip39.split_ems(1, [(3, 5)], identifier, extendable, 1, self.EMS) + mnemonics = mnemonics[0] + identifier, extendable, exponent, ems = slip39.recover_ems(mnemonics[1:4]) + self.assertEqual(ems, self.EMS) - identifier = slip39.generate_random_identifier() - mnemonics = slip39.split_ems(1, [(3, 5)], identifier, 2, self.EMS) - mnemonics = mnemonics[0] - identifier, exponent, ems = slip39.recover_ems(mnemonics[1:4]) - self.assertEqual(ems, self.EMS) + identifier = slip39.generate_random_identifier() + mnemonics = slip39.split_ems(1, [(3, 5)], identifier, extendable, 2, self.EMS) + mnemonics = mnemonics[0] + identifier, extendable, exponent, ems = slip39.recover_ems(mnemonics[1:4]) + self.assertEqual(ems, self.EMS) def test_group_sharing(self): group_threshold = 2 group_sizes = (5, 3, 5, 1) member_thresholds = (3, 2, 2, 1) - identifier = slip39.generate_random_identifier() - mnemonics = slip39.split_ems( - group_threshold, - list(zip(member_thresholds, group_sizes)), - identifier, - 1, - self.EMS, - ) - - # Test all valid combinations of mnemonics. - for groups in combinations(zip(mnemonics, member_thresholds), group_threshold): - for group1_subset in combinations(groups[0][0], groups[0][1]): - for group2_subset in combinations(groups[1][0], groups[1][1]): - mnemonic_subset = list(group1_subset + group2_subset) - random.shuffle(mnemonic_subset) - identifier, exponent, ems = slip39.recover_ems(mnemonic_subset) - self.assertEqual(ems, self.EMS) + for extendable in (False, True): + identifier = slip39.generate_random_identifier() + mnemonics = slip39.split_ems( + group_threshold, + list(zip(member_thresholds, group_sizes)), + identifier, + extendable, + 1, + self.EMS, + ) - # Minimal sets of mnemonics. - identifier, exponent, ems = slip39.recover_ems( - [mnemonics[2][0], mnemonics[2][2], mnemonics[3][0]] - ) - self.assertEqual(ems, self.EMS) - self.assertEqual( - slip39.recover_ems([mnemonics[2][3], mnemonics[3][0], mnemonics[2][4]])[2], - ems, - ) + # Test all valid combinations of mnemonics. + for groups in combinations(zip(mnemonics, member_thresholds), group_threshold): + for group1_subset in combinations(groups[0][0], groups[0][1]): + for group2_subset in combinations(groups[1][0], groups[1][1]): + mnemonic_subset = list(group1_subset + group2_subset) + random.shuffle(mnemonic_subset) + identifier, _, _, ems = slip39.recover_ems(mnemonic_subset) + self.assertEqual(ems, self.EMS) + + # Minimal sets of mnemonics. + identifier, _, _, ems = slip39.recover_ems( + [mnemonics[2][0], mnemonics[2][2], mnemonics[3][0]] + ) + self.assertEqual(ems, self.EMS) + self.assertEqual( + slip39.recover_ems([mnemonics[2][3], mnemonics[3][0], mnemonics[2][4]])[3], + ems, + ) - # One complete group and one incomplete group out of two groups required. - with self.assertRaises(slip39.MnemonicError): - slip39.recover_ems(mnemonics[0][2:] + [mnemonics[1][0]]) + # One complete group and one incomplete group out of two groups required. + with self.assertRaises(slip39.MnemonicError): + slip39.recover_ems(mnemonics[0][2:] + [mnemonics[1][0]]) - # One group of two required. - with self.assertRaises(slip39.MnemonicError): - slip39.recover_ems(mnemonics[0][1:4]) + # One group of two required. + with self.assertRaises(slip39.MnemonicError): + slip39.recover_ems(mnemonics[0][1:4]) def test_group_sharing_threshold_1(self): group_threshold = 1 group_sizes = (5, 3, 5, 1) member_thresholds = (3, 2, 2, 1) - identifier = slip39.generate_random_identifier() - mnemonics = slip39.split_ems( - group_threshold, - list(zip(member_thresholds, group_sizes)), - identifier, - 1, - self.EMS, - ) - - # Test all valid combinations of mnemonics. - for group, threshold in zip(mnemonics, member_thresholds): - for group_subset in combinations(group, threshold): - mnemonic_subset = list(group_subset) - random.shuffle(mnemonic_subset) - identifier, exponent, ems = slip39.recover_ems(mnemonic_subset) - self.assertEqual(ems, self.EMS) - - def test_all_groups_exist(self): - for group_threshold in (1, 2, 5): + for extendable in (False, True): identifier = slip39.generate_random_identifier() mnemonics = slip39.split_ems( group_threshold, - [(3, 5), (1, 1), (2, 3), (2, 5), (3, 5)], + list(zip(member_thresholds, group_sizes)), identifier, + extendable, 1, self.EMS, ) - self.assertEqual(len(mnemonics), 5) - self.assertEqual(len(sum(mnemonics, [])), 19) + + # Test all valid combinations of mnemonics. + for group, threshold in zip(mnemonics, member_thresholds): + for group_subset in combinations(group, threshold): + mnemonic_subset = list(group_subset) + random.shuffle(mnemonic_subset) + identifier, _, _, ems = slip39.recover_ems(mnemonic_subset) + self.assertEqual(ems, self.EMS) + + def test_all_groups_exist(self): + for extendable in (False, True): + for group_threshold in (1, 2, 5): + identifier = slip39.generate_random_identifier() + mnemonics = slip39.split_ems( + group_threshold, + [(3, 5), (1, 1), (2, 3), (2, 5), (3, 5)], + identifier, + extendable, + 1, + self.EMS, + ) + self.assertEqual(len(mnemonics), 5) + self.assertEqual(len(sum(mnemonics, [])), 19) def test_invalid_sharing(self): - identifier = slip39.generate_random_identifier() + for extendable in (False, True): + identifier = slip39.generate_random_identifier() - # Group threshold exceeds number of groups. - with self.assertRaises(ValueError): - slip39.split_ems(3, [(3, 5), (2, 5)], identifier, 1, self.EMS) + # Group threshold exceeds number of groups. + with self.assertRaises(ValueError): + slip39.split_ems(3, [(3, 5), (2, 5)], identifier, extendable, 1, self.EMS) - # Invalid group threshold. - with self.assertRaises(ValueError): - slip39.split_ems(0, [(3, 5), (2, 5)], identifier, 1, self.EMS) + # Invalid group threshold. + with self.assertRaises(ValueError): + slip39.split_ems(0, [(3, 5), (2, 5)], identifier, extendable, 1, self.EMS) - # Member threshold exceeds number of members. - with self.assertRaises(ValueError): - slip39.split_ems(2, [(3, 2), (2, 5)], identifier, 1, self.EMS) + # Member threshold exceeds number of members. + with self.assertRaises(ValueError): + slip39.split_ems(2, [(3, 2), (2, 5)], identifier, extendable, 1, self.EMS) - # Invalid member threshold. - with self.assertRaises(ValueError): - slip39.split_ems(2, [(0, 2), (2, 5)], identifier, 1, self.EMS) + # Invalid member threshold. + with self.assertRaises(ValueError): + slip39.split_ems(2, [(0, 2), (2, 5)], identifier, extendable, 1, self.EMS) - # Group with multiple members and threshold 1. - with self.assertRaises(ValueError): - slip39.split_ems(2, [(3, 5), (1, 3), (2, 5)], identifier, 1, self.EMS) + # Group with multiple members and threshold 1. + with self.assertRaises(ValueError): + slip39.split_ems(2, [(3, 5), (1, 3), (2, 5)], identifier, extendable, 1, self.EMS) def test_vectors(self): for mnemonics, secret in vectors: if secret: - identifier, exponent, ems = slip39.recover_ems(mnemonics) + identifier, extendable, exponent, ems = slip39.recover_ems(mnemonics) self.assertEqual( - slip39.decrypt(ems, b"TREZOR", exponent, identifier), + slip39.decrypt(ems, b"TREZOR", exponent, identifier, extendable), unhexlify(secret), ) else: diff --git a/docs/core/misc/slip0039.md b/docs/core/misc/slip0039.md index 7c81fd96e2..be4507e10c 100644 --- a/docs/core/misc/slip0039.md +++ b/docs/core/misc/slip0039.md @@ -31,10 +31,10 @@ applying PBKDF2 to the mnemonic secret plus passphrase. For SLIP-39 it is not practical to store the raw data of the recovery shares. During device initialization, a random Encrypted Master Secret is generated and stored as -`_MNEMONIC_SECRET`. SLIP-39 encryption parameters (a random identifier and an iteration -exponent) are stored alongside the mnemonic secret in their own storage fields. Whenever -the root node is required, it is derived by "decrypting" the stored mnemonic secret with -the provided passphrase. +`_MNEMONIC_SECRET`. SLIP-39 encryption parameters (a random identifier, extendable backup +flag and an iteration exponent) are stored alongside the mnemonic secret in their own +storage fields. Whenever the root node is required, it is derived by "decrypting" the +stored mnemonic secret with the provided passphrase. ## SLIP-39 implementation @@ -46,17 +46,17 @@ SLIP-39 provides the following high-level API: Secret with the provided passphrase, and split into a number of shares defined via the group parameters. Implemented using the following: - - `encrypt(master_secret, passphrase, iteration_exponent, identifier)`: Encrypt the - Master Secret with the given passphrase and parameters. - - **`split_ems(group parameters, identifier, iteration_exponent, encrypted_master_secret)`**: + - `encrypt(master_secret, passphrase, iteration_exponent, identifier, extendable)`: + Encrypt the Master Secret with the given passphrase and parameters. + - **`split_ems(group parameters, identifier, extendable, iteration_exponent, encrypted_master_secret)`**: Split the encrypted secret and encode the metadata into a set of shares defined via the group parameters. * `combine_mnemonics(set of shares, passphrase)`: Combine the given set of shares to reconstruct the secret, then decrypt it with the provided passphrase. Implemented using the following: - **`recover_ems(set of shares)`**: Combine the given set of shares to obtain the - encrypted master secret, identifier and iteration exponent. - - **`decrypt(encrypted_master_secret, passphrase, iteration_exponent, identifier)`**: + encrypted master secret, identifier, extendable backup flag and iteration exponent. + - **`decrypt(encrypted_master_secret, passphrase, iteration_exponent, identifier, extendable)`**: Decrypt the secret with the given passphrase and parameters, to obtain the original Master Secret. @@ -74,7 +74,7 @@ This process does not use passphrase. 1. Generate the required number of random bits (128 or 256), and store as `_MNEMONIC_SECRET`. -2. Generate a random identifier and store as `_SLIP39_IDENTIFIER`. +2. Translate the host-specified backup type to an extendable backup type and store it as `_BACKUP_TYPE`. 3. Store the default iteration exponent `1` as `_SLIP39_ITERATION_EXPONENT`. 4. The storage now contains all parameters required for seed derivation. @@ -100,6 +100,7 @@ This process does not use passphrase. 1. Prompt the user to enter enough shares. 2. Use `slip39.recover_ems(shares)` to combine the shares and get metadata. 3. Store the Encrypted Master Secret as `_MNEMONIC_SECRET`. -4. Store the identifier as `_SLIP39_IDENTIFIER`. -5. Store the iteration exponent as `_SLIP39_ITERATION_EXPONENT`. -6. The storage now contains all parameters required for seed derivation. +4. Infer the backup type and store it as `_BACKUP_TYPE`. +5. If the backup type is not extendable, then store the identifier as `_SLIP39_IDENTIFIER`. +6. Store the iteration exponent as `_SLIP39_ITERATION_EXPONENT`. +7. The storage now contains all parameters required for seed derivation. diff --git a/poetry.lock b/poetry.lock index a4ec6e36ab..d8b22b8ba4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "astroid" version = "2.15.8" description = "An abstract syntax tree for Python with inference support." +category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -23,6 +24,7 @@ wrapt = [ name = "atomicwrites" version = "1.4.0" description = "Atomic file writes." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -34,6 +36,7 @@ files = [ name = "attrs" version = "21.4.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -51,6 +54,7 @@ tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy" name = "autoflake" version = "1.4" description = "Removes unused imports and unused variables" +category = "main" optional = false python-versions = "*" files = [ @@ -64,6 +68,7 @@ pyflakes = ">=1.1.0" name = "binsize" version = "0.1.3" description = "Tool to analyze the size of a binary from .elf file" +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -81,6 +86,7 @@ typing-extensions = "*" name = "black" version = "24.3.0" description = "The uncompromising code formatter." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -127,6 +133,7 @@ uvloop = ["uvloop (>=0.15.2)"] name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -138,6 +145,7 @@ files = [ name = "cffi" version = "1.15.0" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = "*" files = [ @@ -200,6 +208,7 @@ pycparser = "*" name = "charset-normalizer" version = "2.0.11" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -214,6 +223,7 @@ unicode-backport = ["unicodedata2"] name = "click" version = "8.1.3" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -228,6 +238,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "click-default-group" version = "1.2.2" description = "Extends click.Group to invoke a command without explicit subcommand name" +category = "dev" optional = false python-versions = "*" files = [ @@ -241,6 +252,7 @@ click = "*" name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -252,6 +264,7 @@ files = [ name = "construct" version = "2.10.67" description = "A powerful declarative symmetric parser/builder for binary data" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -265,6 +278,7 @@ extras = ["arrow", "cloudpickle", "enum34", "lz4", "numpy", "ruamel.yaml"] name = "construct-classes" version = "0.1.2" description = "Parse your binary structs into dataclasses" +category = "main" optional = false python-versions = ">=3.6.2,<4.0" files = [ @@ -279,6 +293,7 @@ construct = ">=2.10,<3.0" name = "coverage" version = "4.5.4" description = "Code coverage measurement for Python" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" files = [ @@ -320,6 +335,7 @@ files = [ name = "cryptography" version = "42.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -374,6 +390,7 @@ test-randomorder = ["pytest-randomly"] name = "demjson3" version = "3.0.5" description = "encoder, decoder, and lint/validator for JSON (JavaScript Object Notation) compliant with RFC 7159" +category = "main" optional = false python-versions = "*" files = [ @@ -384,6 +401,7 @@ files = [ name = "dill" version = "0.3.8" description = "serialize all of Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -399,6 +417,7 @@ profile = ["gprof2dot (>=2022.7.29)"] name = "distlib" version = "0.3.4" description = "Distribution utilities" +category = "main" optional = false python-versions = "*" files = [ @@ -410,6 +429,7 @@ files = [ name = "dominate" version = "2.6.0" description = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -421,6 +441,7 @@ files = [ name = "ecdsa" version = "0.16.1" description = "ECDSA cryptographic signature library (pure python)" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -439,6 +460,7 @@ gmpy2 = ["gmpy2"] name = "execnet" version = "1.9.0" description = "execnet: rapid multi-Python deployment" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -453,6 +475,7 @@ testing = ["pre-commit"] name = "fido2" version = "0.8.1" description = "Python based FIDO 2.0 library" +category = "main" optional = false python-versions = ">=2.7.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" files = [ @@ -471,6 +494,7 @@ pcsc = ["pyscard"] name = "filelock" version = "3.4.2" description = "A platform independent file lock." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -486,6 +510,7 @@ testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-co name = "flake8" version = "7.0.0" description = "the modular source code checker: pep8 pyflakes and co" +category = "main" optional = false python-versions = ">=3.8.1" files = [ @@ -502,6 +527,7 @@ pyflakes = ">=3.2.0,<3.3.0" name = "flake8-requirements" version = "2.1.0" description = "Package requirements checker, plugin for flake8" +category = "main" optional = false python-versions = "*" files = [ @@ -520,6 +546,7 @@ pyproject = ["Flake8-pyproject"] name = "flaky" version = "3.7.0" description = "Plugin for nose or pytest that automatically reruns flaky tests." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -531,6 +558,7 @@ files = [ name = "graphviz" version = "0.19.1" description = "Simple Python interface for Graphviz" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -547,6 +575,7 @@ test = ["coverage", "mock (>=4)", "pytest (>=6)", "pytest-cov", "pytest-mock (>= name = "hypothesis" version = "6.36.1" description = "A library for property-based testing" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -578,6 +607,7 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] name = "idna" version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -589,6 +619,7 @@ files = [ name = "importlib-resources" version = "5.12.0" description = "Read resources from Python packages" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -607,6 +638,7 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec name = "incremental" version = "21.3.0" description = "A small library that versions your Python projects." +category = "dev" optional = false python-versions = "*" files = [ @@ -621,6 +653,7 @@ scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] name = "iniconfig" version = "1.1.1" description = "iniconfig: brain-dead simple config-ini parsing" +category = "main" optional = false python-versions = "*" files = [ @@ -632,6 +665,7 @@ files = [ name = "inotify" version = "0.2.10" description = "An adapter to Linux kernel support for inotify directory-watching." +category = "main" optional = false python-versions = "*" files = [ @@ -646,6 +680,7 @@ nose = "*" name = "isort" version = "5.11.5" description = "A Python utility / library to sort Python imports." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -663,6 +698,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jinja2" version = "3.1.4" description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -680,6 +716,7 @@ i18n = ["Babel (>=2.7)"] name = "lazy-object-proxy" version = "1.7.1" description = "A fast and thorough lazy object proxy." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -726,6 +763,7 @@ files = [ name = "libusb1" version = "3.0.0" description = "Pure-python wrapper for libusb-1.0" +category = "main" optional = false python-versions = "*" files = [ @@ -739,6 +777,7 @@ files = [ name = "mako" version = "1.1.6" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -757,6 +796,7 @@ lingua = ["lingua"] name = "markupsafe" version = "2.0.1" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -835,6 +875,7 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -846,6 +887,7 @@ files = [ name = "mnemonic" version = "0.20" description = "Implementation of Bitcoin BIP-0039" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -857,6 +899,7 @@ files = [ name = "munch" version = "2.5.0" description = "A dot-accessible dictionary (a la JavaScript objects)" +category = "main" optional = false python-versions = "*" files = [ @@ -875,6 +918,7 @@ yaml = ["PyYAML (>=5.1.0)"] name = "mypy-extensions" version = "0.4.3" description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "main" optional = false python-versions = "*" files = [ @@ -886,6 +930,7 @@ files = [ name = "nanopb" version = "0.4.5.post1" description = "Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system." +category = "main" optional = false python-versions = ">=2.7" files = [ @@ -903,6 +948,7 @@ grpcio-tools = ["grpcio-tools (>=1.26.0rc1)"] name = "nose" version = "1.3.7" description = "nose extends unittest to make testing easier" +category = "main" optional = false python-versions = "*" files = [ @@ -915,6 +961,7 @@ files = [ name = "packaging" version = "23.2" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -926,6 +973,7 @@ files = [ name = "pathspec" version = "0.9.0" description = "Utility library for gitignore style pattern matching of file paths." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -937,6 +985,7 @@ files = [ name = "pillow" version = "10.3.0" description = "Python Imaging Library (Fork)" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1023,6 +1072,7 @@ xmp = ["defusedxml"] name = "platformdirs" version = "2.6.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1038,6 +1088,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest- name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1053,6 +1104,7 @@ testing = ["pytest", "pytest-benchmark"] name = "protobuf" version = "3.19.4" description = "Protocol Buffers" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1088,6 +1140,7 @@ files = [ name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1099,6 +1152,7 @@ files = [ name = "pyasn1" version = "0.4.8" description = "ASN.1 types and codecs" +category = "main" optional = false python-versions = "*" files = [ @@ -1110,6 +1164,7 @@ files = [ name = "pycodestyle" version = "2.11.1" description = "Python style guide checker" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1121,6 +1176,7 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1132,6 +1188,7 @@ files = [ name = "pyflakes" version = "3.2.0" description = "passive checker of Python programs" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1143,6 +1200,7 @@ files = [ name = "pylint" version = "2.17.7" description = "python code static checker" +category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -1172,6 +1230,7 @@ testutils = ["gitpython (>3)"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" +category = "main" optional = false python-versions = "*" files = [ @@ -1186,6 +1245,7 @@ cp2110 = ["hidapi"] name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1210,6 +1270,7 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-forked" version = "1.4.0" description = "run tests in isolated forked subprocesses" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1225,6 +1286,7 @@ pytest = ">=3.10" name = "pytest-ordering" version = "0.6" description = "pytest plugin to run your tests in a specific order" +category = "main" optional = false python-versions = "*" files = [ @@ -1240,6 +1302,7 @@ pytest = "*" name = "pytest-random-order" version = "1.0.4" description = "Randomise the order in which pytest tests are run with some control over the randomness" +category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -1254,6 +1317,7 @@ pytest = ">=3.0.0" name = "pytest-timeout" version = "2.1.0" description = "pytest plugin to abort hanging tests" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1268,6 +1332,7 @@ pytest = ">=5.0.0" name = "pytest-xdist" version = "2.5.0" description = "pytest xdist plugin for distributed testing and loop-on-failing modes" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1289,6 +1354,7 @@ testing = ["filelock"] name = "python-bitcoinlib" version = "0.11.0" description = "The Swiss Army Knife of the Bitcoin protocol." +category = "main" optional = false python-versions = "*" files = [ @@ -1300,6 +1366,7 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1360,6 +1427,7 @@ files = [ name = "requests" version = "2.32.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1381,6 +1449,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "scan-build" version = "2.0.20" description = "static code analyzer wrapper for Clang." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1392,6 +1461,7 @@ files = [ name = "scons" version = "4.3.0" description = "Open Source next-generation build tool." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1406,6 +1476,7 @@ setuptools = "*" name = "setuptools" version = "67.6.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1420,28 +1491,24 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( [[package]] name = "shamir-mnemonic" -version = "0.2.2" +version = "0.3.0" description = "SLIP-39 Shamir Mnemonics" +category = "main" optional = false -python-versions = ">=3.6" +python-versions = "<4.0,>=3.6" files = [ - {file = "shamir-mnemonic-0.2.2.tar.gz", hash = "sha256:7fb9b592e5c518192c0b0caa2c2d82e342fddd186693bc64be9647eace1b9182"}, - {file = "shamir_mnemonic-0.2.2-py3-none-any.whl", hash = "sha256:7d9facea70379cad02bab18d4572c0fcd033c9d7effe5da095b9e0944bf5fbbf"}, + {file = "shamir_mnemonic-0.3.0-py3-none-any.whl", hash = "sha256:188c6b5bd00d5e756e12e2b186c3cb7c98ff7ff44df608d4c1d2077f6b6e730f"}, + {file = "shamir_mnemonic-0.3.0.tar.gz", hash = "sha256:bc04886a1ddfe2a64d8a3ec51abf0f664d98d5b557cc7e78a8ad2d10a1d87438"}, ] -[package.dependencies] -attrs = "*" -click = ">=7,<9" -colorama = "*" - [package.extras] -dev = ["black", "flake8", "isort"] -tests = ["pytest"] +cli = ["click (>=7,<9)"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1453,6 +1520,7 @@ files = [ name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "main" optional = false python-versions = "*" files = [ @@ -1464,6 +1532,7 @@ files = [ name = "termcolor" version = "2.3.0" description = "ANSI color formatting for output in terminal" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1478,6 +1547,7 @@ tests = ["pytest", "pytest-cov"] name = "toiftool" version = "0.1.0" description = "" +category = "main" optional = false python-versions = ">=3.8" files = [] @@ -1496,6 +1566,7 @@ url = "python/tools/toiftool" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1507,6 +1578,7 @@ files = [ name = "tomli" version = "1.2.3" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1518,6 +1590,7 @@ files = [ name = "tomlkit" version = "0.12.4" description = "Style preserving TOML library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1529,6 +1602,7 @@ files = [ name = "towncrier" version = "23.6.0" description = "Building newsfiles for your project." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1551,6 +1625,7 @@ dev = ["furo", "packaging", "sphinx (>=5)", "twisted"] name = "tox" version = "3.24.5" description = "tox is a generic virtualenv management and test command line tool" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1576,6 +1651,7 @@ testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psu name = "trezor" version = "0.13.9" description = "Python library for communicating with Trezor Hardware Wallet" +category = "main" optional = false python-versions = ">=3.6" files = [] @@ -1607,6 +1683,7 @@ url = "python" name = "trezor-pylint-plugin" version = "0.1.0" description = "" +category = "main" optional = false python-versions = "^3.8" files = [] @@ -1624,6 +1701,7 @@ url = "tools/trezor-pylint-plugin" name = "typing-extensions" version = "4.0.1" description = "Backported and Experimental Type Hints for Python 3.6+" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1635,6 +1713,7 @@ files = [ name = "uhid-freebsd" version = "1.2.2" description = "Get information on FreeBSD uhid devices." +category = "main" optional = false python-versions = "*" files = [ @@ -1645,6 +1724,7 @@ files = [ name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -1661,6 +1741,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "virtualenv" version = "20.13.1" description = "Virtual Python Environment builder" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1682,6 +1763,7 @@ testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", name = "vulture" version = "2.6" description = "Find dead code" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1696,6 +1778,7 @@ toml = "*" name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1775,6 +1858,7 @@ files = [ name = "yamllint" version = "1.26.3" description = "A linter for YAML files." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1790,6 +1874,7 @@ setuptools = "*" name = "zipp" version = "3.7.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1804,4 +1889,4 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "30cec0ead12f35e594f7f69e789e0183aeb74394ab81c5b4e2c84de9929fc4b0" +content-hash = "089373acc7cc350a441e8a935c011b76c1b31202a8972a42dc80bb8e2562c0e9" diff --git a/pyproject.toml b/pyproject.toml index 728db6fd60..e4e7dfd448 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,7 @@ dominate = "*" pyserial = "*" ## test requirements -shamir-mnemonic = "^0.2.1" +shamir-mnemonic = "^0.3.0" fido2 = "^0.8.0" python-bitcoinlib = "^0.11.0" From b14b557efcdab1ae9ad7c8019bff0fe3c4c3bf83 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Fri, 17 May 2024 16:14:23 +0200 Subject: [PATCH 089/626] refactor(core): Clean up BackupType usage. --- .../management/recovery_device/homescreen.py | 2 +- .../apps/management/reset_device/__init__.py | 26 +++++++++---------- core/src/trezor/ui/layouts/tr/reset.py | 15 +++-------- core/src/trezor/ui/layouts/tt/reset.py | 16 +++--------- 4 files changed, 19 insertions(+), 40 deletions(-) diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 478d895bee..70e94e0b49 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -152,7 +152,7 @@ async def _finish_recovery(secret: bytes, backup_type: BackupType) -> Success: storage_device.store_mnemonic_secret( secret, backup_type, needs_backup=False, no_backup=False ) - if backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced): + if backup_types.is_slip39_backup_type(backup_type): identifier = storage_recovery.get_slip39_identifier() extendable = storage_recovery.get_slip39_extendable() exponent = storage_recovery.get_slip39_iteration_exponent() diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index 3502dd3928..4306dcc8e0 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -8,6 +8,7 @@ from trezor.ui.layouts import confirm_action from trezor.wire import ProcessError +from .. import backup_types from . import layout if __debug__: @@ -70,7 +71,7 @@ async def reset_device(msg: ResetDevice) -> Success: if backup_type == BAK_T_BIP39: # in BIP-39 we store mnemonic string instead of the secret secret = bip39.from_data(secret).encode() - elif backup_type in (BAK_T_SLIP39_BASIC, BAK_T_SLIP39_ADVANCED): + elif backup_types.is_slip39_backup_type(backup_type): # generate and set SLIP39 parameters storage_device.set_slip39_identifier(slip39.generate_random_identifier()) storage_device.set_slip39_extendable(slip39.DEFAULT_EXTENDABLE_FLAG) @@ -113,11 +114,11 @@ async def _backup_slip39_basic(encrypted_master_secret: bytes) -> None: group_threshold = 1 # get number of shares - await layout.slip39_show_checklist(0, BAK_T_SLIP39_BASIC) + await layout.slip39_show_checklist(0, advanced=False) share_count = await layout.slip39_prompt_number_of_shares() # get threshold - await layout.slip39_show_checklist(1, BAK_T_SLIP39_BASIC) + await layout.slip39_show_checklist(1, advanced=False) share_threshold = await layout.slip39_prompt_threshold(share_count) mnemonics = _get_slip39_mnemonics( @@ -125,21 +126,21 @@ async def _backup_slip39_basic(encrypted_master_secret: bytes) -> None: ) # show and confirm individual shares - await layout.slip39_show_checklist(2, BAK_T_SLIP39_BASIC) + await layout.slip39_show_checklist(2, advanced=False) await layout.slip39_basic_show_and_confirm_shares(mnemonics[0]) async def _backup_slip39_advanced(encrypted_master_secret: bytes) -> None: # get number of groups - await layout.slip39_show_checklist(0, BAK_T_SLIP39_ADVANCED) + await layout.slip39_show_checklist(0, advanced=True) groups_count = await layout.slip39_advanced_prompt_number_of_groups() # get group threshold - await layout.slip39_show_checklist(1, BAK_T_SLIP39_ADVANCED) + await layout.slip39_show_checklist(1, advanced=True) group_threshold = await layout.slip39_advanced_prompt_group_threshold(groups_count) # get shares and thresholds - await layout.slip39_show_checklist(2, BAK_T_SLIP39_ADVANCED) + await layout.slip39_show_checklist(2, advanced=True) groups = [] for i in range(groups_count): share_count = await layout.slip39_prompt_number_of_shares(i) @@ -206,18 +207,15 @@ def _validate_reset_device(msg: ResetDevice) -> None: from .. import backup_types backup_type = msg.backup_type or _DEFAULT_BACKUP_TYPE - if backup_type not in ( - BAK_T_BIP39, - BAK_T_SLIP39_BASIC, - BAK_T_SLIP39_ADVANCED, - ): - raise ProcessError("Backup type not implemented") if backup_types.is_slip39_backup_type(backup_type): if msg.strength not in (128, 256): raise ProcessError("Invalid strength (has to be 128 or 256 bits)") - else: # BIP-39 + elif backup_type == BAK_T_BIP39: if msg.strength not in (128, 192, 256): raise ProcessError("Invalid strength (has to be 128, 192 or 256 bits)") + else: + raise ProcessError("Backup type not implemented") + if msg.display_random and (msg.skip_backup or msg.no_backup): raise ProcessError("Can't show internal entropy when backup is skipped") if storage_device.is_initialized(): diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index d86d974dfd..d75378222c 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING +from typing import Sequence import trezorui2 from trezor import TR @@ -10,11 +10,6 @@ CONFIRMED = trezorui2.CONFIRMED # global_import_cache -if TYPE_CHECKING: - from typing import Sequence - - from trezor.enums import BackupType - async def show_share_words( share_words: Sequence[str], @@ -104,18 +99,14 @@ async def select_word( return words[result] -async def slip39_show_checklist(step: int, backup_type: BackupType) -> None: - from trezor.enums import BackupType - - assert backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced) - +async def slip39_show_checklist(step: int, advanced: bool) -> None: items = ( ( TR.reset__slip39_checklist_num_shares, TR.reset__slip39_checklist_set_threshold, TR.reset__slip39_checklist_write_down, ) - if backup_type == BackupType.Slip39_Basic + if not advanced else ( TR.reset__slip39_checklist_num_groups, TR.reset__slip39_checklist_num_shares, diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index c5a08d10f6..ebc2bff0dd 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -1,4 +1,4 @@ -from typing import TYPE_CHECKING +from typing import Callable, Sequence import trezorui2 from trezor import TR @@ -9,12 +9,6 @@ from ..common import interact from . import RustLayout, raise_if_not_confirmed -if TYPE_CHECKING: - from typing import Callable, Sequence - - from trezor.enums import BackupType - - CONFIRMED = trezorui2.CONFIRMED # global_import_cache @@ -112,18 +106,14 @@ async def select_word( return words[result] -async def slip39_show_checklist(step: int, backup_type: BackupType) -> None: - from trezor.enums import BackupType - - assert backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced) - +async def slip39_show_checklist(step: int, advanced: bool) -> None: items = ( ( TR.reset__slip39_checklist_set_num_shares, TR.reset__slip39_checklist_set_threshold, TR.reset__slip39_checklist_write_down_recovery, ) - if backup_type == BackupType.Slip39_Basic + if not advanced else ( TR.reset__slip39_checklist_set_num_groups, TR.reset__slip39_checklist_set_num_shares, From f24c48ef1e64a5c55d3a44bf2f8dbec029de8161 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Fri, 17 May 2024 21:26:21 +0200 Subject: [PATCH 090/626] feat(core): Add extendable BackupTypes. --- common/protob/messages-management.proto | 9 ++- core/src/all_modules.py | 4 +- core/src/apps/common/backup_types.py | 67 +++++++++++++++++++ core/src/apps/common/mnemonic.py | 4 +- core/src/apps/debug/load_device.py | 11 +-- core/src/apps/management/backup_device.py | 5 +- core/src/apps/management/backup_types.py | 37 ---------- .../management/recovery_device/homescreen.py | 17 ++--- .../apps/management/recovery_device/layout.py | 2 +- .../management/recovery_device/recover.py | 3 +- .../recovery_device/word_validity.py | 11 +-- .../apps/management/reset_device/__init__.py | 65 +++++++++++++----- core/src/storage/device.py | 18 +---- core/src/storage/recovery.py | 10 --- core/src/trezor/enums/BackupType.py | 3 + core/src/trezor/enums/__init__.py | 3 + .../test_apps.management.recovery_device.py | 10 +-- python/src/trezorlib/messages.py | 3 + .../protos/generated/messages_management.rs | 31 +++++++-- 19 files changed, 188 insertions(+), 125 deletions(-) create mode 100644 core/src/apps/common/backup_types.py delete mode 100644 core/src/apps/management/backup_types.py diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index 4c5c8f6003..553951a95d 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -13,9 +13,12 @@ import "messages.proto"; * Type of the mnemonic backup given/received by the device during reset/recovery. */ enum BackupType { - Bip39 = 0; // also called "Single Backup", see BIP-0039 - Slip39_Basic = 1; // also called "Shamir Backup", see SLIP-0039 - Slip39_Advanced = 2; // also called "Super Shamir" or "Shamir with Groups", see SLIP-0039#two-level-scheme + Bip39 = 0; // also called "Single Backup", see BIP-0039 + Slip39_Basic = 1; // also called "Shamir Backup", see SLIP-0039 + Slip39_Advanced = 2; // also called "Super Shamir" or "Shamir with Groups", see SLIP-0039#two-level-scheme + Slip39_Single_Extendable = 3; // extendable single-share Shamir backup + Slip39_Basic_Extendable = 4; // extendable multi-share Shamir backup + Slip39_Advanced_Extendable = 5; // extendable multi-share Shamir backup with groups } /** diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 55e81e360a..2f51c20a0d 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -275,6 +275,8 @@ import apps.common.address_type apps.common.authorization import apps.common.authorization +apps.common.backup_types +import apps.common.backup_types apps.common.cbor import apps.common.cbor apps.common.coininfo @@ -315,8 +317,6 @@ import apps.management.authenticate_device apps.management.backup_device import apps.management.backup_device -apps.management.backup_types -import apps.management.backup_types apps.management.change_language import apps.management.change_language apps.management.change_pin diff --git a/core/src/apps/common/backup_types.py b/core/src/apps/common/backup_types.py new file mode 100644 index 0000000000..32dd223bd5 --- /dev/null +++ b/core/src/apps/common/backup_types.py @@ -0,0 +1,67 @@ +from typing import TYPE_CHECKING + +from trezor.enums import BackupType + +if TYPE_CHECKING: + from trezor.crypto.slip39 import Share + +_BIP39_WORD_COUNTS = (12, 18, 24) +_SLIP39_WORD_COUNTS = (20, 33) + + +def is_slip39_word_count(word_count: int) -> bool: + """ + Returns True for SLIP-39 and False for BIP-39. + Raise RuntimeError otherwise. + """ + if word_count in _SLIP39_WORD_COUNTS: + return True + elif word_count in _BIP39_WORD_COUNTS: + return False + # Unknown word count. + raise RuntimeError + + +def is_slip39_backup_type(backup_type: BackupType) -> bool: + return backup_type in ( + BackupType.Slip39_Basic, + BackupType.Slip39_Advanced, + BackupType.Slip39_Single_Extendable, + BackupType.Slip39_Basic_Extendable, + BackupType.Slip39_Advanced_Extendable, + ) + + +def is_slip39_advanced_backup_type(backup_type: BackupType) -> bool: + return backup_type in ( + BackupType.Slip39_Advanced, + BackupType.Slip39_Advanced_Extendable, + ) + + +def is_extendable_backup_type(backup_type: BackupType) -> bool: + return backup_type in ( + BackupType.Slip39_Single_Extendable, + BackupType.Slip39_Basic_Extendable, + BackupType.Slip39_Advanced_Extendable, + ) + + +def infer_backup_type(is_slip39: bool, share: Share | None = None) -> BackupType: + if not is_slip39: # BIP-39 + return BackupType.Bip39 + elif not share or share.group_count < 1: # invalid parameters + raise RuntimeError + elif share.group_count == 1: + if share.extendable: + if share.threshold == 1: + return BackupType.Slip39_Single_Extendable + else: + return BackupType.Slip39_Basic_Extendable + else: + return BackupType.Slip39_Basic + else: + if share.extendable: + return BackupType.Slip39_Advanced_Extendable + else: + return BackupType.Slip39_Advanced diff --git a/core/src/apps/common/mnemonic.py b/core/src/apps/common/mnemonic.py index 58239deff5..2b17363d89 100644 --- a/core/src/apps/common/mnemonic.py +++ b/core/src/apps/common/mnemonic.py @@ -3,6 +3,8 @@ import storage.device as storage_device from trezor import utils +from . import backup_types + if TYPE_CHECKING: from trezor.enums import BackupType from trezor.ui.layouts.common import ProgressLayout @@ -49,7 +51,7 @@ def get_seed(passphrase: str = "", progress_bar: bool = True) -> bytes: from trezor.crypto import slip39 identifier = storage_device.get_slip39_identifier() - extendable = storage_device.get_slip39_extendable() + extendable = backup_types.is_extendable_backup_type(get_type()) iteration_exponent = storage_device.get_slip39_iteration_exponent() if identifier is None or iteration_exponent is None: # Identifier or exponent expected but not found diff --git a/core/src/apps/debug/load_device.py b/core/src/apps/debug/load_device.py index c1e02ed11d..5468703cbb 100644 --- a/core/src/apps/debug/load_device.py +++ b/core/src/apps/debug/load_device.py @@ -13,7 +13,7 @@ async def load_device(msg: LoadDevice) -> Success: from trezor.ui.layouts import confirm_action from trezor.wire import ProcessError, UnexpectedMessage - from apps.management import backup_types + from apps.common import backup_types mnemonics = msg.mnemonics # local_cache_attribute @@ -55,15 +55,8 @@ async def load_device(msg: LoadDevice) -> Success: # this must succeed if the recover_ems call succeeded share = slip39.decode_mnemonic(mnemonics[0]) - if share.group_count == 1: - backup_type = BackupType.Slip39_Basic - elif share.group_count > 1: - backup_type = BackupType.Slip39_Advanced - else: - raise ProcessError("Invalid group count") - + backup_type = backup_types.infer_backup_type(is_slip39, share) storage_device.set_slip39_identifier(identifier) - storage_device.set_slip39_extendable(extendable) storage_device.set_slip39_iteration_exponent(iteration_exponent) storage_device.store_mnemonic_secret( diff --git a/core/src/apps/management/backup_device.py b/core/src/apps/management/backup_device.py index 95a60eb9ec..6bbe866d19 100644 --- a/core/src/apps/management/backup_device.py +++ b/core/src/apps/management/backup_device.py @@ -14,7 +14,7 @@ async def backup_device(msg: BackupDevice) -> Success: from trezor import wire from trezor.messages import Success - from apps.common import mnemonic + from apps.common import backup_types, mnemonic from .reset_device import backup_seed, backup_slip39_custom, layout @@ -44,7 +44,8 @@ async def backup_device(msg: BackupDevice) -> Success: storage_device.set_backed_up() if group_threshold is not None: - await backup_slip39_custom(mnemonic_secret, group_threshold, groups) + extendable = backup_types.is_extendable_backup_type(backup_type) + await backup_slip39_custom(mnemonic_secret, group_threshold, groups, extendable) else: await backup_seed(backup_type, mnemonic_secret) diff --git a/core/src/apps/management/backup_types.py b/core/src/apps/management/backup_types.py deleted file mode 100644 index ba901a2ea9..0000000000 --- a/core/src/apps/management/backup_types.py +++ /dev/null @@ -1,37 +0,0 @@ -from typing import TYPE_CHECKING - -from trezor.enums import BackupType - -if TYPE_CHECKING: - from trezor.crypto.slip39 import Share - -_BIP39_WORD_COUNTS = (12, 18, 24) -_SLIP39_WORD_COUNTS = (20, 33) - - -def is_slip39_word_count(word_count: int) -> bool: - """ - Returns True for SLIP-39 and False for BIP-39. - Raise RuntimeError otherwise. - """ - if word_count in _SLIP39_WORD_COUNTS: - return True - elif word_count in _BIP39_WORD_COUNTS: - return False - # Unknown word count. - raise RuntimeError - - -def is_slip39_backup_type(backup_type: BackupType) -> bool: - return backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced) - - -def infer_backup_type(is_slip39: bool, share: Share | None = None) -> BackupType: - if not is_slip39: # BIP-39 - return BackupType.Bip39 - elif not share or share.group_count < 1: # invalid parameters - raise RuntimeError - elif share.group_count == 1: - return BackupType.Slip39_Basic - else: - return BackupType.Slip39_Advanced diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 70e94e0b49..de655e7fd9 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -6,7 +6,8 @@ from trezor import TR, wire from trezor.messages import Success -from .. import backup_types +from apps.common import backup_types + from . import layout, recover if TYPE_CHECKING: @@ -116,17 +117,16 @@ async def _finish_recovery_dry_run(secret: bytes, backup_type: BackupType) -> Su result = utils.consteq(digest_stored, digest_input) is_slip39 = backup_types.is_slip39_backup_type(backup_type) - # Check that the identifier and iteration exponent match as well + # Check that the identifier, extendable backup flag and iteration exponent match as well if is_slip39: if not backup_types.is_extendable_backup_type(backup_type): result &= ( storage_device.get_slip39_identifier() == storage_recovery.get_slip39_identifier() ) - result &= ( - storage_device.get_slip39_extendable() - == storage_recovery.get_slip39_extendable() - ) + result &= backup_types.is_extendable_backup_type( + storage_device.get_backup_type() + ) == backup_types.is_extendable_backup_type(backup_type) result &= ( storage_device.get_slip39_iteration_exponent() == storage_recovery.get_slip39_iteration_exponent() @@ -143,7 +143,6 @@ async def _finish_recovery_dry_run(secret: bytes, backup_type: BackupType) -> Su async def _finish_recovery(secret: bytes, backup_type: BackupType) -> Success: - from trezor.enums import BackupType from trezor.ui.layouts import show_success if backup_type is None: @@ -154,13 +153,11 @@ async def _finish_recovery(secret: bytes, backup_type: BackupType) -> Success: ) if backup_types.is_slip39_backup_type(backup_type): identifier = storage_recovery.get_slip39_identifier() - extendable = storage_recovery.get_slip39_extendable() exponent = storage_recovery.get_slip39_iteration_exponent() - if identifier is None or extendable is None or exponent is None: + if identifier is None or exponent is None: # Identifier and exponent need to be stored in storage at this point raise RuntimeError storage_device.set_slip39_identifier(identifier) - storage_device.set_slip39_extendable(extendable) storage_device.set_slip39_iteration_exponent(exponent) storage_recovery.end_progress() diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index 3bdf544200..747726e392 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -10,7 +10,7 @@ show_remaining_shares, ) -from .. import backup_types +from apps.common import backup_types if TYPE_CHECKING: from typing import Callable diff --git a/core/src/apps/management/recovery_device/recover.py b/core/src/apps/management/recovery_device/recover.py index e60d484cf6..97b647a6e9 100644 --- a/core/src/apps/management/recovery_device/recover.py +++ b/core/src/apps/management/recovery_device/recover.py @@ -41,7 +41,6 @@ def process_slip39(words: str) -> tuple[bytes | None, slip39.Share]: storage_recovery.set_slip39_group_count(share.group_count) storage_recovery.set_slip39_iteration_exponent(share.iteration_exponent) storage_recovery.set_slip39_identifier(share.identifier) - storage_recovery.set_slip39_extendable(share.extendable) storage_recovery.set_slip39_remaining_shares(share.threshold - 1, group_index) storage_recovery_shares.set(share.index, group_index, words) @@ -95,7 +94,7 @@ def process_slip39(words: str) -> tuple[bytes | None, slip39.Share]: def load_slip39_state() -> Slip39State: - from .. import backup_types + from apps.common import backup_types previous_mnemonics = fetch_previous_mnemonics() if not previous_mnemonics: diff --git a/core/src/apps/management/recovery_device/word_validity.py b/core/src/apps/management/recovery_device/word_validity.py index 5989b045fa..68fc9c70b2 100644 --- a/core/src/apps/management/recovery_device/word_validity.py +++ b/core/src/apps/management/recovery_device/word_validity.py @@ -23,6 +23,8 @@ class ThresholdReached(WordValidityResult): def check(backup_type: BackupType | None, partial_mnemonic: list[str]) -> None: from trezor.enums import BackupType + from apps.common import backup_types + from . import recover # we can't perform any checks if the backup type was not yet decided @@ -37,10 +39,11 @@ def check(backup_type: BackupType | None, partial_mnemonic: list[str]) -> None: # this should not happen if backup_type is set raise RuntimeError - if backup_type == BackupType.Slip39_Basic: - _check_slip39_basic(partial_mnemonic, previous_mnemonics) - elif backup_type == BackupType.Slip39_Advanced: - _check_slip39_advanced(partial_mnemonic, previous_mnemonics) + if backup_types.is_slip39_backup_type(backup_type): + if backup_types.is_slip39_advanced_backup_type(backup_type): + _check_slip39_advanced(partial_mnemonic, previous_mnemonics) + else: + _check_slip39_basic(partial_mnemonic, previous_mnemonics) else: # there are no other backup types raise RuntimeError diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index 4306dcc8e0..ac172ede1f 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -8,7 +8,8 @@ from trezor.ui.layouts import confirm_action from trezor.wire import ProcessError -from .. import backup_types +from apps.common import backup_types + from . import layout if __debug__: @@ -21,6 +22,9 @@ BAK_T_BIP39 = BackupType.Bip39 # global_import_cache BAK_T_SLIP39_BASIC = BackupType.Slip39_Basic # global_import_cache BAK_T_SLIP39_ADVANCED = BackupType.Slip39_Advanced # global_import_cache +BAK_T_SLIP39_SINGLE_EXT = BackupType.Slip39_Single_Extendable # global_import_cache +BAK_T_SLIP39_BASIC_EXT = BackupType.Slip39_Basic_Extendable # global_import_cache +BAK_T_SLIP39_ADVANCED_EXT = BackupType.Slip39_Advanced_Extendable # global_import_cache _DEFAULT_BACKUP_TYPE = BAK_T_BIP39 @@ -36,6 +40,13 @@ async def reset_device(msg: ResetDevice) -> Success: backup_type = msg.backup_type # local_cache_attribute + # Force extendable backup. + if backup_type == BAK_T_SLIP39_BASIC: + backup_type = BAK_T_SLIP39_BASIC_EXT + + if backup_type == BAK_T_SLIP39_ADVANCED: + backup_type = BAK_T_SLIP39_ADVANCED_EXT + # validate parameters and device state _validate_reset_device(msg) @@ -74,7 +85,6 @@ async def reset_device(msg: ResetDevice) -> Success: elif backup_types.is_slip39_backup_type(backup_type): # generate and set SLIP39 parameters storage_device.set_slip39_identifier(slip39.generate_random_identifier()) - storage_device.set_slip39_extendable(slip39.DEFAULT_EXTENDABLE_FLAG) storage_device.set_slip39_iteration_exponent(slip39.DEFAULT_ITERATION_EXPONENT) else: # Unknown backup type. @@ -110,7 +120,18 @@ async def reset_device(msg: ResetDevice) -> Success: return Success(message="Initialized") -async def _backup_slip39_basic(encrypted_master_secret: bytes) -> None: +async def _backup_slip39_single( + encrypted_master_secret: bytes, extendable: bool +) -> None: + mnemonics = _get_slip39_mnemonics(encrypted_master_secret, 1, ((1, 1),), extendable) + + # for a single 1-of-1 group, we use the same layouts as for BIP39 + await layout.show_and_confirm_mnemonic(mnemonics[0][0]) + + +async def _backup_slip39_basic( + encrypted_master_secret: bytes, extendable: bool +) -> None: group_threshold = 1 # get number of shares @@ -122,7 +143,10 @@ async def _backup_slip39_basic(encrypted_master_secret: bytes) -> None: share_threshold = await layout.slip39_prompt_threshold(share_count) mnemonics = _get_slip39_mnemonics( - encrypted_master_secret, group_threshold, ((share_threshold, share_count),) + encrypted_master_secret, + group_threshold, + ((share_threshold, share_count),), + extendable, ) # show and confirm individual shares @@ -130,7 +154,9 @@ async def _backup_slip39_basic(encrypted_master_secret: bytes) -> None: await layout.slip39_basic_show_and_confirm_shares(mnemonics[0]) -async def _backup_slip39_advanced(encrypted_master_secret: bytes) -> None: +async def _backup_slip39_advanced( + encrypted_master_secret: bytes, extendable: bool +) -> None: # get number of groups await layout.slip39_show_checklist(0, advanced=True) groups_count = await layout.slip39_advanced_prompt_number_of_groups() @@ -147,7 +173,9 @@ async def _backup_slip39_advanced(encrypted_master_secret: bytes) -> None: share_threshold = await layout.slip39_prompt_threshold(share_count, i) groups.append((share_threshold, share_count)) - mnemonics = _get_slip39_mnemonics(encrypted_master_secret, group_threshold, groups) + mnemonics = _get_slip39_mnemonics( + encrypted_master_secret, group_threshold, groups, extendable + ) # show and confirm individual shares await layout.slip39_advanced_show_and_confirm_shares(mnemonics) @@ -157,14 +185,15 @@ async def backup_slip39_custom( encrypted_master_secret: bytes, group_threshold: int, groups: Sequence[tuple[int, int]], + extendable: bool, ) -> None: - mnemonics = _get_slip39_mnemonics(encrypted_master_secret, group_threshold, groups) - # show and confirm individual shares if len(groups) == 1 and groups[0][0] == 1 and groups[0][1] == 1: - # for a single 1-of-1 group, we use the same layouts as for BIP39 - await layout.show_and_confirm_mnemonic(mnemonics[0][0]) + await _backup_slip39_single(encrypted_master_secret, extendable) else: + mnemonics = _get_slip39_mnemonics( + encrypted_master_secret, group_threshold, groups, extendable + ) await confirm_action( "warning_shamir_backup", TR.reset__title_shamir_backup, @@ -183,9 +212,9 @@ def _get_slip39_mnemonics( encrypted_master_secret: bytes, group_threshold: int, groups: Sequence[tuple[int, int]], + extendable: bool, ): identifier = storage_device.get_slip39_identifier() - extendable = storage_device.get_slip39_extendable() iteration_exponent = storage_device.get_slip39_iteration_exponent() if identifier is None or iteration_exponent is None: raise ValueError @@ -204,8 +233,6 @@ def _get_slip39_mnemonics( def _validate_reset_device(msg: ResetDevice) -> None: from trezor.wire import UnexpectedMessage - from .. import backup_types - backup_type = msg.backup_type or _DEFAULT_BACKUP_TYPE if backup_types.is_slip39_backup_type(backup_type): if msg.strength not in (128, 256): @@ -239,9 +266,13 @@ def _compute_secret_from_entropy( async def backup_seed(backup_type: BackupType, mnemonic_secret: bytes) -> None: - if backup_type == BAK_T_SLIP39_BASIC: - await _backup_slip39_basic(mnemonic_secret) - elif backup_type == BAK_T_SLIP39_ADVANCED: - await _backup_slip39_advanced(mnemonic_secret) + if backup_types.is_slip39_backup_type(backup_type): + extendable = backup_types.is_extendable_backup_type(backup_type) + if backup_types.is_slip39_advanced_backup_type(backup_type): + await _backup_slip39_advanced(mnemonic_secret, extendable) + elif backup_type == BAK_T_SLIP39_SINGLE_EXT: + await _backup_slip39_single(mnemonic_secret, extendable) + else: + await _backup_slip39_basic(mnemonic_secret, extendable) else: await layout.show_and_confirm_mnemonic(mnemonic_secret.decode()) diff --git a/core/src/storage/device.py b/core/src/storage/device.py index 0c55347601..483efdffeb 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -35,7 +35,6 @@ _SAFETY_CHECK_LEVEL = const(0x14) # int _EXPERIMENTAL_FEATURES = const(0x15) # bool (0x01 or empty) _HIDE_PASSPHRASE_FROM_HOST = const(0x16) # bool (0x01 or empty) -_SLIP39_EXTENDABLE = const(0x17) # bool (0x01 or empty) SAFETY_CHECK_LEVEL_STRICT : Literal[0] = const(0) SAFETY_CHECK_LEVEL_PROMPT : Literal[1] = const(1) @@ -130,6 +129,9 @@ def get_backup_type() -> BackupType: BackupType.Bip39, BackupType.Slip39_Basic, BackupType.Slip39_Advanced, + BackupType.Slip39_Single_Extendable, + BackupType.Slip39_Basic_Extendable, + BackupType.Slip39_Advanced_Extendable, ): # Invalid backup type raise RuntimeError @@ -261,20 +263,6 @@ def get_slip39_identifier() -> int | None: return common.get_uint16(_NAMESPACE, _SLIP39_IDENTIFIER) -def set_slip39_extendable(extendable: bool) -> None: - """ - The device's actual SLIP-39 extendable backup flag. - Not to be confused with recovery.extendable, which is stored only during - the recovery process and it is copied here upon success. - """ - common.set_bool(_NAMESPACE, _SLIP39_EXTENDABLE, extendable) - - -def get_slip39_extendable() -> bool: - """The device's actual SLIP-39 extendable backup flag.""" - return common.get_bool(_NAMESPACE, _SLIP39_EXTENDABLE) - - def set_slip39_iteration_exponent(exponent: int) -> None: """ The device's actual SLIP-39 iteration exponent used in passphrase derivation. diff --git a/core/src/storage/recovery.py b/core/src/storage/recovery.py index dfdfe1421a..6816209fc6 100644 --- a/core/src/storage/recovery.py +++ b/core/src/storage/recovery.py @@ -57,16 +57,6 @@ def get_slip39_identifier() -> int | None: return common.get_uint16(_NAMESPACE, _SLIP39_IDENTIFIER) -def set_slip39_extendable(extendable: bool) -> None: - _require_progress() - common.set_bool(_NAMESPACE, _SLIP39_EXTENDABLE, extendable) - - -def get_slip39_extendable() -> bool: - _require_progress() - return common.get_bool(_NAMESPACE, _SLIP39_EXTENDABLE) - - def set_slip39_iteration_exponent(exponent: int) -> None: _require_progress() common.set_uint8(_NAMESPACE, _SLIP39_ITERATION_EXPONENT, exponent) diff --git a/core/src/trezor/enums/BackupType.py b/core/src/trezor/enums/BackupType.py index 80a3646ed3..a5b1406874 100644 --- a/core/src/trezor/enums/BackupType.py +++ b/core/src/trezor/enums/BackupType.py @@ -5,3 +5,6 @@ Bip39 = 0 Slip39_Basic = 1 Slip39_Advanced = 2 +Slip39_Single_Extendable = 3 +Slip39_Basic_Extendable = 4 +Slip39_Advanced_Extendable = 5 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 83e622fdd5..21da810ade 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -425,6 +425,9 @@ class BackupType(IntEnum): Bip39 = 0 Slip39_Basic = 1 Slip39_Advanced = 2 + Slip39_Single_Extendable = 3 + Slip39_Basic_Extendable = 4 + Slip39_Advanced_Extendable = 5 class SafetyCheckLevel(IntEnum): Strict = 0 diff --git a/core/tests/test_apps.management.recovery_device.py b/core/tests/test_apps.management.recovery_device.py index a1809d2d13..f1d876afae 100644 --- a/core/tests/test_apps.management.recovery_device.py +++ b/core/tests/test_apps.management.recovery_device.py @@ -41,7 +41,7 @@ def test_process_slip39_basic(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) - self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) + self.assertEqual(share.extendable, False) self.assertEqual(storage.recovery.get_slip39_remaining_shares(0), 2) self.assertEqual( storage.recovery_shares.get(share.index, share.group_index), first @@ -85,7 +85,7 @@ def test_process_slip39_advanced(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) - self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) + self.assertEqual(share.extendable, False) self.assertEqual( storage.recovery.fetch_slip39_remaining_shares(), [16, 0, 16, 16] ) @@ -102,7 +102,7 @@ def test_process_slip39_advanced(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) - self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) + self.assertEqual(share.extendable, False) self.assertEqual( storage.recovery_shares.get(share.index, share.group_index), words ) @@ -125,7 +125,7 @@ def test_process_slip39_advanced(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) - self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) + self.assertEqual(share.extendable, False) self.assertEqual( storage.recovery_shares.get(share.index, share.group_index), words ) @@ -150,7 +150,7 @@ def test_process_slip39_advanced(self): share.iteration_exponent, storage.recovery.get_slip39_iteration_exponent() ) self.assertEqual(share.identifier, storage.recovery.get_slip39_identifier()) - self.assertEqual(share.extendable, storage.recovery.get_slip39_extendable()) + self.assertEqual(share.extendable, False) self.assertEqual( storage.recovery_shares.get(share.index, share.group_index), words ) diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 04aea96b16..21f008c34e 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -454,6 +454,9 @@ class BackupType(IntEnum): Bip39 = 0 Slip39_Basic = 1 Slip39_Advanced = 2 + Slip39_Single_Extendable = 3 + Slip39_Basic_Extendable = 4 + Slip39_Advanced_Extendable = 5 class SafetyCheckLevel(IntEnum): diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index 799111f5a8..31aa95a640 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -10395,6 +10395,12 @@ pub enum BackupType { Slip39_Basic = 1, // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.BackupType.Slip39_Advanced) Slip39_Advanced = 2, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.BackupType.Slip39_Single_Extendable) + Slip39_Single_Extendable = 3, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.BackupType.Slip39_Basic_Extendable) + Slip39_Basic_Extendable = 4, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.BackupType.Slip39_Advanced_Extendable) + Slip39_Advanced_Extendable = 5, } impl ::protobuf::Enum for BackupType { @@ -10409,6 +10415,9 @@ impl ::protobuf::Enum for BackupType { 0 => ::std::option::Option::Some(BackupType::Bip39), 1 => ::std::option::Option::Some(BackupType::Slip39_Basic), 2 => ::std::option::Option::Some(BackupType::Slip39_Advanced), + 3 => ::std::option::Option::Some(BackupType::Slip39_Single_Extendable), + 4 => ::std::option::Option::Some(BackupType::Slip39_Basic_Extendable), + 5 => ::std::option::Option::Some(BackupType::Slip39_Advanced_Extendable), _ => ::std::option::Option::None } } @@ -10418,6 +10427,9 @@ impl ::protobuf::Enum for BackupType { "Bip39" => ::std::option::Option::Some(BackupType::Bip39), "Slip39_Basic" => ::std::option::Option::Some(BackupType::Slip39_Basic), "Slip39_Advanced" => ::std::option::Option::Some(BackupType::Slip39_Advanced), + "Slip39_Single_Extendable" => ::std::option::Option::Some(BackupType::Slip39_Single_Extendable), + "Slip39_Basic_Extendable" => ::std::option::Option::Some(BackupType::Slip39_Basic_Extendable), + "Slip39_Advanced_Extendable" => ::std::option::Option::Some(BackupType::Slip39_Advanced_Extendable), _ => ::std::option::Option::None } } @@ -10426,6 +10438,9 @@ impl ::protobuf::Enum for BackupType { BackupType::Bip39, BackupType::Slip39_Basic, BackupType::Slip39_Advanced, + BackupType::Slip39_Single_Extendable, + BackupType::Slip39_Basic_Extendable, + BackupType::Slip39_Advanced_Extendable, ]; } @@ -10744,13 +10759,15 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\ \x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\ \x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10U\ - nlockBootloader*>\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0cSlip\ - 39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02*G\n\x10SafetyCheck\ - Level\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\ - \n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toi\ - f\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.sa\ - toshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\ - \x01\ + nlockBootloader*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\ + \x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\ + \x18Slip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendabl\ + e\x10\x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyC\ + heckLevel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\ + \x15\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\ + \x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n\ + #com.satoshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\ + \x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file From 040c1f5f8cec55df0fd8bae7075016ba84ec1d7b Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Fri, 17 May 2024 23:08:23 +0200 Subject: [PATCH 091/626] feat(tests): Extendable SLIP-39 device tests. --- .../click_tests/test_backup_slip39_custom.py | 2 +- .../click_tests/test_reset_slip39_advanced.py | 2 +- tests/click_tests/test_reset_slip39_basic.py | 2 +- tests/common.py | 5 + .../test_recovery_slip39_basic.py | 22 +- .../reset_recovery/test_reset_backup.py | 4 +- .../test_reset_recovery_slip39_advanced.py | 2 + .../test_reset_recovery_slip39_basic.py | 2 + .../test_reset_slip39_advanced.py | 2 +- .../reset_recovery/test_reset_slip39_basic.py | 2 +- .../test_passphrase_slip39_basic.py | 20 +- tests/ui_tests/fixtures.json | 480 +++++++++--------- 12 files changed, 288 insertions(+), 257 deletions(-) diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index 8779865812..7aaff04d2e 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -112,4 +112,4 @@ def test_backup_slip39_custom( assert features.needs_backup is False assert features.pin_protection is False assert features.passphrase_protection is False - assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index 12500dc933..0d1f4e1c06 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -142,4 +142,4 @@ def test_reset_slip39_advanced( assert features.needs_backup is False assert features.pin_protection is False assert features.passphrase_protection is False - assert features.backup_type is messages.BackupType.Slip39_Advanced + assert features.backup_type is messages.BackupType.Slip39_Advanced_Extendable diff --git a/tests/click_tests/test_reset_slip39_basic.py b/tests/click_tests/test_reset_slip39_basic.py index cdb7f56544..af85d43783 100644 --- a/tests/click_tests/test_reset_slip39_basic.py +++ b/tests/click_tests/test_reset_slip39_basic.py @@ -118,4 +118,4 @@ def test_reset_slip39_basic( assert features.needs_backup is False assert features.pin_protection is False assert features.passphrase_protection is False - assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable diff --git a/tests/common.py b/tests/common.py index be00dff91c..2dedf2e4de 100644 --- a/tests/common.py +++ b/tests/common.py @@ -46,6 +46,11 @@ "extra extend academic arcade born dive legal hush gross briefing talent drug much home firefly toxic analysis idea umbrella slice", ] MNEMONIC_SLIP39_BASIC_20_3of6_SECRET = "491b795b80fc21ccdf466c0fbc98c8fc" +MNEMONIC_SLIP39_BASIC_EXT_20_2of3 = [ + "enemy favorite academic acid cowboy phrase havoc level response walnut budget painting inside trash adjust froth kitchen learn tidy punish", + "enemy favorite academic always academic sniff script carpet romp kind promise scatter center unfair training emphasis evening belong fake enforce", +] +MNEMONIC_SLIP39_BASIC_EXT_20_2of3_SECRET = "644c905b0c4da21692f06fff3ed8b3e1" # Shamir shares (128 bits, 2 groups from 1 of 1, 1 of 1, 3 of 5, 2 of 6) MNEMONIC_SLIP39_ADVANCED_20 = [ "eraser senior beard romp adorn nuclear spill corner cradle style ancient family general leader ambition exchange unusual garlic promise voice", diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py b/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py index bd4668b348..40f324e544 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py @@ -22,6 +22,8 @@ from ...common import ( MNEMONIC_SLIP39_BASIC_20_3of6, MNEMONIC_SLIP39_BASIC_20_3of6_SECRET, + MNEMONIC_SLIP39_BASIC_EXT_20_2of3, + MNEMONIC_SLIP39_BASIC_EXT_20_2of3_SECRET, ) from ...input_flows import ( InputFlowSlip39BasicRecovery, @@ -46,17 +48,29 @@ ] VECTORS = ( - (MNEMONIC_SLIP39_BASIC_20_3of6, MNEMONIC_SLIP39_BASIC_20_3of6_SECRET), + ( + MNEMONIC_SLIP39_BASIC_20_3of6, + MNEMONIC_SLIP39_BASIC_20_3of6_SECRET, + messages.BackupType.Slip39_Basic, + ), + ( + MNEMONIC_SLIP39_BASIC_EXT_20_2of3, + MNEMONIC_SLIP39_BASIC_EXT_20_2of3_SECRET, + messages.BackupType.Slip39_Basic_Extendable, + ), ( MNEMONIC_SLIP39_BASIC_33_2of5, "b770e0da1363247652de97a39bdbf2463be087848d709ecbf28e84508e31202a", + messages.BackupType.Slip39_Basic, ), ) @pytest.mark.setup_client(uninitialized=True) -@pytest.mark.parametrize("shares, secret", VECTORS) -def test_secret(client: Client, shares: list[str], secret: str): +@pytest.mark.parametrize("shares, secret, backup_type", VECTORS) +def test_secret( + client: Client, shares: list[str], secret: str, backup_type: messages.BackupType +): with client: IF = InputFlowSlip39BasicRecovery(client, shares) client.set_input_flow(IF.get()) @@ -66,7 +80,7 @@ def test_secret(client: Client, shares: list[str], secret: str): assert ret == messages.Success(message="Device recovered") assert client.features.pin_protection is False assert client.features.passphrase_protection is False - assert client.features.backup_type is messages.BackupType.Slip39_Basic + assert client.features.backup_type is backup_type # Check mnemonic assert client.debug.state().mnemonic_secret.hex() == secret diff --git a/tests/device_tests/reset_recovery/test_reset_backup.py b/tests/device_tests/reset_recovery/test_reset_backup.py index 4b8d03a515..680b84d8d0 100644 --- a/tests/device_tests/reset_recovery/test_reset_backup.py +++ b/tests/device_tests/reset_recovery/test_reset_backup.py @@ -66,8 +66,8 @@ def backup_flow_slip39_advanced(client: Client): VECTORS = [ (BackupType.Bip39, backup_flow_bip39), - (BackupType.Slip39_Basic, backup_flow_slip39_basic), - (BackupType.Slip39_Advanced, backup_flow_slip39_advanced), + (BackupType.Slip39_Basic_Extendable, backup_flow_slip39_basic), + (BackupType.Slip39_Advanced_Extendable, backup_flow_slip39_advanced), ] diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py index 1945ba485c..1a0dfec671 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py @@ -78,6 +78,7 @@ def reset(client: Client, strength: int = 128) -> list[str]: assert client.features.needs_backup is False assert client.features.pin_protection is False assert client.features.passphrase_protection is False + assert client.features.backup_type is BackupType.Slip39_Advanced_Extendable return IF.mnemonics @@ -92,3 +93,4 @@ def recover(client: Client, shares: list[str]): assert ret == messages.Success(message="Device recovered") assert client.features.pin_protection is False assert client.features.passphrase_protection is False + assert client.features.backup_type is BackupType.Slip39_Advanced_Extendable diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py index 9d3b45275c..885a4aab0c 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py @@ -68,6 +68,7 @@ def reset(client: Client, strength: int = 128) -> list[str]: assert client.features.needs_backup is False assert client.features.pin_protection is False assert client.features.passphrase_protection is False + assert client.features.backup_type is BackupType.Slip39_Basic_Extendable return IF.mnemonics @@ -82,3 +83,4 @@ def recover(client: Client, shares: list[str]): assert ret == messages.Success(message="Device recovered") assert client.features.pin_protection is False assert client.features.passphrase_protection is False + assert client.features.backup_type is BackupType.Slip39_Basic_Extendable diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py index b1e8aa6f9e..9855381483 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py @@ -61,7 +61,7 @@ def test_reset_device_slip39_advanced(client: Client): assert client.features.needs_backup is False assert client.features.pin_protection is False assert client.features.passphrase_protection is False - assert client.features.backup_type is BackupType.Slip39_Advanced + assert client.features.backup_type is BackupType.Slip39_Advanced_Extendable # backup attempt fails because backup was done in reset with pytest.raises(TrezorFailure, match="ProcessError: Seed already backed up"): diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py index 20c0086317..e2db24ab76 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py @@ -60,7 +60,7 @@ def reset_device(client: Client, strength: int): assert client.features.needs_backup is False assert client.features.pin_protection is False assert client.features.passphrase_protection is False - assert client.features.backup_type is BackupType.Slip39_Basic + assert client.features.backup_type is BackupType.Slip39_Basic_Extendable # backup attempt fails because backup was done in reset with pytest.raises(TrezorFailure, match="ProcessError: Seed already backed up"): diff --git a/tests/device_tests/test_passphrase_slip39_basic.py b/tests/device_tests/test_passphrase_slip39_basic.py index df0977da83..8883150c8e 100644 --- a/tests/device_tests/test_passphrase_slip39_basic.py +++ b/tests/device_tests/test_passphrase_slip39_basic.py @@ -18,7 +18,11 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client -from ..common import MNEMONIC_SLIP39_BASIC_20_3of6, get_test_address +from ..common import ( + MNEMONIC_SLIP39_BASIC_20_3of6, + MNEMONIC_SLIP39_BASIC_EXT_20_2of3, + get_test_address, +) @pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6, passphrase="TREZOR") @@ -51,3 +55,17 @@ def test_2of5_passphrase(client: Client): assert client.features.passphrase_protection is True address = get_test_address(client) assert address == "mjXH4pN7TtbHp3tWLqVKktKuaQeByHMoBZ" + + +@pytest.mark.setup_client( + mnemonic=MNEMONIC_SLIP39_BASIC_EXT_20_2of3, passphrase="TREZOR" +) +@pytest.mark.skip_t1b1 +def test_2of3_ext_passphrase(client: Client): + """ + BIP32 Root Key for passphrase TREZOR: + xprv9s21ZrQH143K4FS1qQdXYAFVAHiSAnjj21YAKGh2CqUPJ2yQhMmYGT4e5a2tyGLiVsRgTEvajXkxhg92zJ8zmWZas9LguQWz7WZShfJg6RS + """ + assert client.features.passphrase_protection is True + address = get_test_address(client) + assert address == "moELJhDbGK41k6J2ePYh2U8uc5qskC663C" diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 8f9bc57d0f..bdd272a883 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -745,9 +745,9 @@ "T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "c272f39acc61f4b107c4f22ced26a358a1ab1a8fe84ddbe5d5eb55d21846a32e", "T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "cf159a4d1b3eefa80fe2d3034db7e136c757de4eb8c3ac087e63114f6ad1c551", "T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "39e858a1d9879f999b19d9555fb57efcab53fea56b9f161c94e5f38f13f3d658", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "588a2ab40c7ef589137a9139c8152a08687196c8fe8029b0aaf8f1cbfabb4fcb", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ef0198542294db61369de3ffbaeebd5159f1a78a40071e35d00bf951c340f3c0", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1359808af337de40b5f0e1ca0673f06e8d62d15c8117ddafe3647c9aa5d60080", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2726fe7656568e91ca2a40b1c7b4644393c1ee1696488e0170544c8c0b850911", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a88ccf6d14dc40a6f62e35be9fc81a0d15378e081b9f9aab4819f5638c5896d3", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0509d5c6331d39830d35f48f3f38690eaf34ba06cb07c337c0e62b387afb79a2", "T2B1_cs_test_lock.py::test_hold_to_lock": "c0fa643e8fec7a18e7046e06b605e1eb1fc4673983c33b966858e7a061c08581", "T2B1_cs_test_passphrase_tr.py::test_cancel": "3f02823f2de1e46c30dadc9aef8d1c1fe2cdd2ecff0d1ec9aeb770793ff482f2", "T2B1_cs_test_passphrase_tr.py::test_passphrase_delete": "1e464363ef619f450d2c0c9f82d5336e666ee3ded7107ce1079267dd75a3cdb3", @@ -775,10 +775,10 @@ "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "48dde6e5b926c445947b344bef1fff91f4016f4033a5b5693837d8e5757cd1a1", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "78a2ce9924b7758a97853d1ab27bbbc2f8be1dfe9f2d14014de803aa0bb62d30", "T2B1_cs_test_reset_bip39.py::test_reset_bip39": "e6ab28c1220196c73e1b73d59545788da3b71deea10189e31b3e2359d22017d5", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b9b62889effd0ffcca628464ace1f1bfb6d3a678f8d52b63b83332723bb9c03e", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1600d3627999ce31b467f4e9d9606a8836b40d81d5db8e975f7d6c3fcecec476", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "af6e7d3bb98a37bcb3fc0b0ff4f3b628ed257a3942f22d29426d4de228633150", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d14054b3bf4d24a8c0c9b93ca0503fdd0d497646c9191780f7b922bf4b06506a", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b385569c40eca2a1aa8538d03cdc9d639f98fbab78cf92aadb3ea6d2a6545eca", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b74fd6a67276594a8cd46fe94e9bd42913850dc90969977586d4f380587ebd0c", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "fb719ddc4ed73ca8e3d5d68182841858931abf40e8dc6eb9b6483950006db5f9", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d4b15cdcb01d7e32e16c8a150f78671ad4bb60652030a4b5fb13096c7578bf3d", "T2B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", "T2B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", "T2B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", @@ -790,9 +790,9 @@ "T2B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "f365e2ed0d3ec8c2b49c602df1649bd0b339ef325623250339ea443e39dd52f2", "T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "c48381a4420c0a6c9892ed24a4c2863dc2ef6492422335af7c1fc15957f15893", "T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "2614cc40069651512c393206d3a7302eba83f52d47b0d4b38688952fe09c46d5", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b84cd72caae6b987a808510a5b036923ba2720f39aa0547d821f81c53b5aa8d8", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7f047ea9bcb24cc1d5b617453e960b5a8c4f5fd3ddc928f7306d511788d3875d", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "4388de3ef38492bd8adf4c835bad2e328dca6b21ccf7b5fb111b98ff2bea1949", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5081a50f54266bc44a6ca2a95a9b8c35f603d2eb4f314ac20678042d7eac158c", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "0b3a202dd833bd698f067e770596751913626a4f6a7d12dfa053143f43a4bd53", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "85b26079e619f97dd4dd7dc1b640cafcccb4241a82b39bf4db9a8a188b3259f0", "T2B1_de_test_lock.py::test_hold_to_lock": "fcc639edde3349bb64883e5119289d94ff26c0225b84c987fe3afa4c9ff49380", "T2B1_de_test_passphrase_tr.py::test_cancel": "260dfca06b933d88120da15c6a981c9e2bf136a1bb148cbaf0244a85c80c6767", "T2B1_de_test_passphrase_tr.py::test_passphrase_delete": "18f04b5c66ea5d1ede7e616f03e1a937dc57a0a2bc55bdf8c9d1aa917194e6ed", @@ -820,10 +820,10 @@ "T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "ae7d2ea0bf92eb7da2a2604f285687995849b267318ac5229f663784c448fcf1", "T2B1_de_test_recovery.py::test_recovery_slip39_basic": "26f47dfda39e927f17ded8054a2e892a24d56d0c04fead1e0ac30160c20d5f66", "T2B1_de_test_reset_bip39.py::test_reset_bip39": "21b8c8ac69aaca28bbc7a8e64f2fa412be949dd61581567c9c9217400fe87392", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0386f30183ea86262b67b4702da6c8f954e6418390c8d758b4e0e0aa624d1d91", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f35bd8f479cb0532a359d9d8c77dbd3ac29d564f70725cd91e17485c4a3b9107", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f7a62b618402d8028ecc867b8792a5cff03fddb257559101dd41404d31a522e1", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a770f6b9f3b086fb871e7ebd55eb200f3698e6814272c9c7711ee15e9026ed8e", +"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "8b7ae72358d1329f82ccaaa9a81b1c83ffa0585a2f345661b7b9299130a709e3", +"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "45a70b97b6285db99a3e826c2f243126c06ed04d1a544f48ee41275352291368", +"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "67bb57d76806dcbbd0469d1a048481ce883a9ec876702ee3e1bdb3d1d647cf9f", +"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a1a42cfecdc6e4cc3f6710497f98f8ef1f6db023f429e38ed79af443d2d04645", "T2B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", "T2B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", "T2B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", @@ -835,9 +835,9 @@ "T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f35d159c13b36c428e68969bbeb87fb4bdbfa6c21eb98985b5832849938d6934", "T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "df7a17ab9cd2c617ce22a615e1da9bedee41f978459cbe103f2eecb8dfe8db12", "T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "53b39b3ff0548a91e87ac3391462850e4f6060fa1a19ae873eca6fc5cce8dbb2", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8d5199ed1e2b0f03c37e3ddd1ee0388d772737c2f426dcb8e9e70647228ee132", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "0febcfe0ea43da4855ca6b78b701b48ed8ac301777984cf2e798abdacbddc46b", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9b36b1f4de0d891a88530997d28de77936545e30269e4e26fb2ade405538ff8f", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "c87112a7182ce9d228bc5a42804817cc75f7c2427522468be0c56254bece89cf", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3f592583a7b834e67f28d085b21d93fb399ecc3ee3909a2a71306768766d9b74", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "78798921c30cba91c8ddf4258dbf6c177c550b9df48fb1e2a49985d9d39fb450", "T2B1_en_test_lock.py::test_hold_to_lock": "83e2d055215b03150069d9fcb3aee6dc3f78a0d2bc43d8133425bf6b000c191d", "T2B1_en_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", "T2B1_en_test_passphrase_tr.py::test_passphrase_delete": "28468562292a54f2d8cc954129c6b1859c267bc5a9b94f9b406352e71a4c8036", @@ -865,10 +865,10 @@ "T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "6689558320ffceecb9c8a5eccaf1f83ab1e63f01d3387a580ec2c412f047286e", "T2B1_en_test_recovery.py::test_recovery_slip39_basic": "5f3c58aea5c8ad3c1c32c2fe303a0aa91b0805cce5d4dcd23473f72120109458", "T2B1_en_test_reset_bip39.py::test_reset_bip39": "818f7de91f7d73b4e287c9f6bd205c95c3b568d0a269e1084ec976a1885d7037", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4e761e2dda932f2c51a40243f458791399ec8b94978e5ae73e809a35d39a8b8a", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "765a641e087cc3327262dfdbd09f82957e83470bb37b97950398ef5267f8c1af", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7d07f9313dc14e5f6111eefb1c9f93a17f2a048f81e3c883a68d1495e8a7b8bd", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "45293b3bef2d475cc85b6da0ac59ebda350efe63257524015b99174f0b6cc546", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a2d1554ac43a794654cd80d339b7ff1e119fe22b10d63445e0345575e628e42d", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4202617c8e27ebc43f4972c924523d5f5f23eaa634b3fe17972841021fe77ab9", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f2ff5bc0106aaf62a0a664497426277b90041b5b172ce1b8d186c37d493ee4e1", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8a482fce2020e1a8e3fd5a831d0e1802aae3003e42cc205a08d7c917dd1b8eb5", "T2B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", "T2B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", "T2B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", @@ -880,9 +880,9 @@ "T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "1f1b83d430f4662b25854c6d0135375c8286c8feebe39f4ee69df5538c69de34", "T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "5590f60c28de6bedcf1bafadcf103b81a3a418f4f7ea31b8c3585f06e48ce391", "T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "09e18b001bb66c7ea14b489b50e05fb55a48fa67f841f3259b5f751b7901f1e0", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d86b06d7236c64eebde39a4d3acb9599815d59d8934921342be243ee33fed99c", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "70b57a73effc809557d36edfc0c0d2617df1b9b946a56a522fa0f0f572a6cd26", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c41d9f401554cf21e2ee8effaf766b9ae149889536942bfcbdac6d9cec359e28", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4ac6429524a78b8e8f6dddd1b0cd974be56eb2afa4bd11d52f4f5489690e8679", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ff646c36107969dc5c73d82cf80c87f1332600dcc9826f96fc8a45257747cd2c", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "09bf8db4118f9c1b4335e728893916a10bfbc0ac46c78e8b7dd22914876d758b", "T2B1_es_test_lock.py::test_hold_to_lock": "8b56379898b0f83deb893fbf6892242c3014bf896782854e7538d685fd6749b2", "T2B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", "T2B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", @@ -910,10 +910,10 @@ "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "fb6366eb8f5862120aaecae5567e934546bf06bce43fce91305f4130b3e47640", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "40d49a424c770eae159c3ffa8d22709f014caf940e6600861c18e78538f5edb6", "T2B1_es_test_reset_bip39.py::test_reset_bip39": "4c7a5cc6b7a02d600995bd5f4e0adf2fd2668eefcfb95bba353b693c9dbecf76", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b3e71ded5e7f85591cdccddf54c335614cb2c28f49a52da6d21c233c88f65577", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "32aa036ddc5d8ae46fb3993f5e242ef532c13f95dabdf0c31abefac4b00d1b2b", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "a70c76b8d36d5a725aba7f368485829e9901afe5d45f3efe27031a8193508683", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "ad90b323d4cf2bdcf40bfb7c30f4bf13a4d4385a36143c172488246ab6321c1e", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "eaf165395e06b064f0a7c04443b94d1cf3c820ce2cdb84af79572765d06ff701", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a6a4f83b123f5c17374408570b224661c6d9475973d6fe9e650f9a0f4bcc4417", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f3e5f3f8730b1d413d8ecfdba8e0d6af3fe54532d29769fe7fb30ef9398ed057", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c5dca33f54d176b54cf53d60223cb2b126e1ab45bc3bad266a345c9a550dcb69", "T2B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", "T2B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", "T2B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", @@ -925,9 +925,9 @@ "T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "752f8b27476baef0e9038e52ce39eb432ea62779849b2c129654e5d0e9b516e9", "T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "3a33032c5e477c1cc6b676cb51ee387ac9b18094ffcfbf454f2b1ef1db12e925", "T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "73c463e67621607963ab83270ca726709b1d1e151393918da4c07a3fabb46d7b", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "31aaafd45d40f194fe3b7765a365fd23329c815ef3aff4b6baaf5ac98a81de0a", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7245a0e8832d67c5b3c2b8d3a47ad4887583cbc15a1306a483eb16a7e1a67ed0", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2af3b65a7837f467dd27d97938391b0139e227797b4b3fb671c2a05d0ecd955f", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "c74a2a8870a5009ba61ea8e07af61b049e0a6bafffae7a5bc1183489fba00bd2", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7056eaf38a80e1699d4143703dd83d00fd1445dfbf71a7e33d50736fcfb0f0c7", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "712e4bc0a363e5cbcc1a75efb2004366b0cd6b4184b9444dea1852fcb0815fcb", "T2B1_fr_test_lock.py::test_hold_to_lock": "120c4051eca095f220eebb6b54122b6a72da41c5ee67f1215a5c964e6b76d3a6", "T2B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", "T2B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", @@ -955,10 +955,10 @@ "T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "2293f0baf03ca5850988b736c0e6e684c116291a54108a77134a3e1dc16405f7", "T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "af734abbec86878d07875a03fd264547e00ad61d11999d4f1ab5582ff46b2e15", "T2B1_fr_test_reset_bip39.py::test_reset_bip39": "ad5080eb9cd9d9b3ca2b3b6f966963836d0771eea4f747c443965b6dd3a55b8b", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "098ef9f7bafee2f777d384c23bc433018a09fa35a5e422720bbc3c571f5bcba6", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3c8df7a319891fd60f0d5f9f01ba79f4fc1d7f304e0f8e65b47ae74133d6f059", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e11b7bee599f9c08db5cbc4ded8644e5d5e0f8b33bf268e822ae1db154ffac35", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1579cd88f7b17e7aafa3e65ec4a91241539649fd6b892337ab12b291a52ba716", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "7b5796f5dbaea0517898616bc3a273b658e8b22cbd381bc6d63192eda5445da3", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "08a6bd98addc455004a97f148f85f22868640279ab222c9f65755f950be8108e", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5e589a4efc8d409e81aa3b02f7bb699715d9a1fad7984d14e58eddd977dd3283", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5dc4db33d433f937e96e5eeb257cdc7b3800b2676a7388ff3e1932b642b03ad5", "T2B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", "T2B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", "T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" @@ -2009,19 +2009,13 @@ "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "76bd7a5a65da432e4fbee1206016d2bee65413ff26710c8c11543bcd0d46b625", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "08de7670f18acec9253066980ee19d5a71e76eeb32986d73aa16019c964c7e37", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a70b2808912753c5aed47d3fbbe0174c225ff4c6c4ac8a53ba6f11701d5ff158", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "b78da55edb1ed1c184377d63df2ab06b5c56eef4edf1e0cd53fde07c3521de66", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "32db976ceddabb3c9631cb68ed3125dfc688dfc3e6095ea15a2f75629c2e3f85", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e8dee00273427ccc871dc79e55ebe0354b12e1b6bc18610bf7064a2c8063f608", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "60a98eb38fb81605f3a843f2d95ee7d55e643a232d2410106446ce5008f66db6", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "6cd3a36de98e8baac832278cf9341d741b343ab98ab7d4f57d0323bc87274f2d", "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2c92c69358fe2b30ab5196beaaa45344092d95e57de0214eb11013a5990cc397", "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "256bf6cfb44e0f1199d3e06d60e4d6d66bdb5fe2fea4440953279f36143d15c1", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "af55a065996c9f442fb1c4ad331c1c2f70e757038135634d427d8f84dcc348c6", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "55cc26da09ee80c2c70b66529fe2a2ca44e42fc5ab951f3a4747c50226454d39", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "b195e04fe8239f1fc73ecb71f3224ce5917067655be7cf161310147ae0cb891a", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "84a1e92f603a878b45f5565f729e0feb620df4b66273960360daef0208b8387f", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0f15671cbcc2c5b288b10c4b38a17890beebdeacb8015e08b8575cedfe22402d", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "b78b498a78beb7314f596b46ea59a4a97988b2588d2d4e666e98fd25261e4683", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6a6d57d7b4d1d5179264eef1ed3b57b5f6d095c9f8e108e1049a0512f8811103", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "0f25df5a45c217f284f7c873668793b8af2c42f1b6c7058e846c06f96ba97716", @@ -3386,19 +3380,13 @@ "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "6b5e849108cd9dc4c6dc9317f5ef850caa9de2b5269c7003a613fce20909c194", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "667b4c449a7530c0e30b5d52d9849bd0bc25dad6e6facd843d22a436c72bd6cd", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d87e15e862a403953fa95152adf31f3293b1b5a26a8492faee847d86017b472c", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "2c1d59bb0c00a9b9d6c221d75b20d1da68ae44d95df3b88f7519c08fefbe4f82", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9526bda931f043d7bd7bb8245fcb69c104a6c33e114c76f229f2130681d56dfb", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "da96726067ace03d9fc65b85ad1b4c4525fcecaea373e4e80f3fd7324c44baa8", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "a9edd95ba75804fcc3b080f993787c5fadfb6f955301d432391f9e3410ba9cc4", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2e89f062073f520ebff605456c02fddf403dfc9cecdcd4713ab9d764c2c14976", "T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e26b841f9f697bc1c981dad7c83ed8d1a33c02be9754edf1cc23bf48b6477d8", "T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "828c14baafb6b05762ecee30b860d5d06d8882747174e050f0baecef347a80c6", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5a5b56dda1730ca30af147c8e5f31c8f8c237b2fd2d57346efb86930a3f82fa", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "3448c150ed1882d622b6b14c061f4c1f55e857cd0342f87da0ae3b5e2fe9330c", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "d233aaed20e872ea427db762bb0810079afb07764a4b9fffad7c389f55bf2b0b", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "3fc47cc1b2b0dc68b2e5fb44b5f4294fac8e7a0acf651446bd1af680f0bb772f", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0c74a358f517f0469491dacb4d685cb9817f5f93f17b3b835e7a99e513c3b69b", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "5f0cb2e4bf2d598b4b283554fc87fabbfddfc35560a14a078654a1753b7e7bbe", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "16d383f7ce236bc1eb209f276ce2244e3793dc6a7219d7154bbe187b44465203", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1cd0a339ebac22a15a297785beddec0bcd9c344fc445c756d50ac5fc5f648186", @@ -4771,19 +4759,13 @@ "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f0937944d0c41f5898ce5d557b7306909b946f55fc7f3c8c1c3b4fb9a67d9b99", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3c493e217277214e62c01e13ec7ddb444a4f7a66a8f466f8be8ced290caeccb2", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d94aa28e5b33d1e214b421073808148a3f40fad4186c5aca6cd6dd42b53210f0", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "14beab9f30a452ef2e733d6b9c0dadf5b51d9a0795f51ee10a533dbb78ecfd69", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "f4a8fcbfaebff01cdc33e9bf2cb26b8e9d14ca86f8b4da2d5dd53712f5a3249f", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3e02af6c1f85c6a03cb01445f109141c98b9ed39ea4769d7f9d922ff1843c9ec", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3fc2d8b18aebf5e92a09d9c576d4e185a2726bf5c0e1e50ce79a71328ee264be", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a62af119e91f7f6aaf6a71efc5ed99099eabbdeacfbe9108359db7f3e7efff5a", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "9af97c3b64680f33197e76237a6121d24b72ef72ce007787a63a85c60368e2d5", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "590aa68e3990a7d44d46bb2766cea6ee4c2aa8b8a969689dd6d3228cbe9df875", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "df20c07c51b91122e5915590868b9c46448bad977e01b03f2f6ff3f3de73caef", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "8138bce15c39910a39f3760fe264e9875760173bb6fbf57d8a42a25046cf5508", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "619bc317cb746bf5cb23a139c7384aeceec1425e7623c3252b8445317fdc6ac6", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "659273d8773032d841b7aa3dcfdead53f4f9b3c4c58c4c253f1851e37d798a44", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "e0769be7ac6efea202bac79321d3221119aec13a33ade1e7b10af9e3ba75d6d5", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "e6ae9824aad7716151f06dffe5671b52e1b10734446ee294834a5d6a5932deeb", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ed4662a5df961dcdde60d11bdda2e8984f49de7be79b7dd5e7c184de265fc219", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6339554affe43322167bfe89d126f3d4e1f8c2b906e31bae2a443bd2e067c859", @@ -6148,19 +6130,13 @@ "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3f3d85234d9b9c55237d9dd450f0a63b0c908f1af2a515ac382e7b0d07c7f4af", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2c29e63e0fb6d5015987ce3608c3862ecca723571c8fb64418aca1eab9270fb6", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5d1d67cc619831a6f8699e595e72310865b64ec08855f48e754f213518207d9a", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "04b8ec9efef5fcf094eaed0c10fb9ac03fff9449ee44755176d06c8c1596d5cd", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "d0ece4825fc36c249a79fd1f9e5f24cd2e20d0af34ecec740a71302738e75ac6", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "9b427305ad6aecf86f6dd1379a0809e54a77ad91996fe39d001cf6fc7f8b0e71", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5a8861473daeef4f53fab1e20b2c2feefb72dafa204eaef147fb0a22c90590be", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d41591aee123f241193c0bbf4e1404bea6ea9bf80b725879e28dc45d5239f07d", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e6b54280c068caefcf17a1f28174b3f5a9f49c597f6d0f4f84553f5da7048df1", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "da2aa458a81d36d6ef00585ebbea3ffa4f011631d67d73bde0356da99c58425e", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7673dd1da89ff6519ec7daa8a6af3b2919dcaa06dd132284654fba0ac1b656a5", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "286bacf6924cc1cd71b599840a1cd7c77ac71e75e9798631c7b83d911cd39931", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "f1791cfb0091f111ca3a0c1c2a4d30ae797654f65acbee98c3d8b44ddc85efe7", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7f349fd79c14b8ac84c619473648bbca04f4959c9774f9cb664ff9442c19eded", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5f34730bdd362ac1637e5824f18e7fca1194a5d2fc7c1202cb2b43b82a8d21fa", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "6b001d3e176f7aa6c67d5ed874ad41a07c43b5116195a3cd552a0be4ed348a9b", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0b3762e61964f9ab527ca5b7193fbbba493f74944391f7f764e83803f7e98e4d", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "174af19811d766d269d10c62bbe0c8e4e6911dfe3516c38a64b68856625a5f64", @@ -7518,19 +7494,13 @@ "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f19d4f7b8adfe75b8d4925f19fea9652f6ad0226ce85aeb2fcfa6e0c4f4a120f", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b0f9ce8e4aa6515cd9fb549090c03e66dfdb27fea2ccdd4423e1a9e7f609937f", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b3dda4d10e5f4284a002f9ba581aa88a237de6ec284a9383b69e0ee765a3b983", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "f6fd96a5fc27ec5f125eff2dbef1e7da4563acab333f5899e0b9af8fe42cbaab", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "adc84514ded91e1816a828d25904243a0a35fc994a1e55a59e0988a5f2d49c44", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0daa7a91930cb04fd3dddf1bba9ddf7cacae6f9297f60967d098fc00bbf63c71", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8bb26aae8e6fd9401e78d154d8b359b68f2714b0e66b1fa3b4a53320c1eea747", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "bfa11994a944d76ccdef5d0217d39856f69f0c88da67d1037d4a84edde6c48a5", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "1fa59516ab6437f0eb6a0c6e724c0bd214e91079a5bb548d1fd1987825957e99", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a87d04a296a08b073a8859dcd7e68819c40e15463e093ff7d19576ec7aaf9d02", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7fd0ca1272b6b64ab587edb3b661347605d78da004c80cca86fa57071ba97e7b", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "7416c19cceee64367f1f7d6d5078e52fb17248527fba0751f538aecbb04bc977", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "411e6000a2672cdec47c5c12df25211fe6d5534ca4cee1961e0ec3834dc1cc4f", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "4dbe63ec8f03ea0bebb24e68cb5958dbd6f5e7f46e8aed3a694dbb11b30472a4", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5c658c5642657914030d8a7dd4a23c44e8b239bd1c1d565e2470251c4f16a429", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "a1ade95b976a6e28deb91c7abe226ee384dc58776a0c53d1c2d970bce5bda75b", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dca0b979475234a86f863ff4c1a13b2f1232a8f1937a83443d0331e087359f63", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "867351ec7280a04ad469c95cc0b994fb51dacc107198f28e76bcd25d9b870155", @@ -7862,9 +7832,9 @@ "T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "a49f1063caaecd342dd10a75e19c7ef351fb2dbc78cb4289c67ef70f51b12d73", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "14425620334e05b9f93534c9bbabf2a3d5300801085438c84a7f793727ecee65", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "368df46fec1dee22dfbdc3975478143c805638c37c02ce62348759e0c3e61155", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f41af8c56b49aa12eb6170c6f5526a67cefe19591953481ebba7be1a413d735a", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b9ec1b7ce589bafa64a708d6dc4fe90725e8998b1424c632523b2c755230ae26", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "a4bd64cc39717bd6eddc5c1abcaf1fcdae83a7449753e119026c73e1233a31ed", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "868b066749ab4e93523507be0d67d7501d9cd8ae8ec4628525aa6f07623186b4", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c3d79640ab704ce2c4e348a6beb7b4d291603fd0dfae91143d96719d5452b985", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "df144f6b1912a3de13d678a6f5e3f370a0ffcb5487fa459ba714c4ffe6f9183f", "T2T1_cs_test_lock.py::test_hold_to_lock": "cae9be494e1bf8cbc1b0a37835e6b4892cec88757ad2b0e4e68f89f3f1f97e1b", "T2T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T2T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", @@ -7898,10 +7868,10 @@ "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9fce49fe5cd46312732a8643f9f0dd2694b376722b344d7106d3f4ee57f30a57", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "c5e7eb0fb076bc6f1122a463c3b05c058dc3d59fed14d36e97b81b8bc34ccd15", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "537205ff560808738cb7f92a975db4f901822513dc6e04765644119009b53983", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "150808fe83f8c00e16aa664fa52f5bda82a6f40517e47b6bd851ad17a3334c7d", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "64e981437043f321afb3c33392e05042710f52c2b3f2b15bde27aa240b55eccf", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "98b25e2d7c68f1c6c5f646695d2ca06ce2134aa3315b4dd02269d2586f237c4d", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "276fde46af4b1c41605db2f08b55c6cffcf0889e635ca08029bb157d7455ec72", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "10a2069bf16df7a0c32b5a5bd06a5c18ddb2c8e0fa537bc4323dd996fe863147", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7acbdf0286d917ead84b51545a6aaeee1cef56aa7d04599313860f2cb54b3c4b", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "360334f3cc6cf67eead9a073ad7cf4c1c912c39697983a940d335db3dc675ef6", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e1299d59ea64caf5a8c5244fb0e9d13bcd18f92a8e0aac28e9052f0479c2abfe", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e91bb83330840e2691d3faeeade1b43621f3cb144aa8f38aa425f8e00f7d928", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8078df18e03affdd08dcba3798b2f81c4e339d096562023b75fa1436b2fa483", "T2T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7ca31effe094026c9e00a78e2e5117e199e5ce5ddf4a4a869899a17193706ef3", @@ -7910,9 +7880,9 @@ "T2T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "0e58a536d8d369fc270d3136647158221256c7bc529d49ff86b1596232952453", "T2T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "4e99f4dffe668064111f70fecba063895cd23f9923e6f164eb00f648fe396c83", "T2T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "900cbf60bb283d843b99efaee0e6eab9030ebbbd6fc474fbb6dc2b8cc5cf70e8", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "29d5f2a80119aadee3e7c0b4dfdae5da48c5514c65c02684a51f199559ee6119", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4ad97bfef72c1d047f1575fc6c66e2d836c1058d212b9850e4b06ff3fdb05be9", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c573afe919684581d61e6fe1c2b3417dd135714f10ce002cc7c69f62b692c145", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7aa3751b7e91c4e33de266419a712422edd15c5784ed9e562fee1ba3f7338255", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "346ee2f6d71ce8ef7d32c3f9b2850d4d91dec3dfb6092542484ae3dad59840f6", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c85d110951c2aaf83bdbcbd2efa549c07d01564f810db5ad4a620cc456e01c5c", "T2T1_de_test_lock.py::test_hold_to_lock": "4254a324366ca37a8e3cbf7f4aa1b7bcb02f4d631ac9e4fbca50a2ed60131858", "T2T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", "T2T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", @@ -7946,10 +7916,10 @@ "T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "385fd9b6db99191f374ef6bf1885769270b04ed4c83b898410a820f5c1bfe795", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "44fa35cc2ffa836301818fa5c9fe5823e485da113a3329e878715bafb51ec154", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "f8f3be3e3f9a4aae2d38861d9a97ab186f65d8acb266074743a24c17e92898a2", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "422770a2603705f1de74c92fd97ca7c2a6963265b1346b3b5e6391fe9a554751", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a54ac17e101731386e6530db774443841e50cc745039dd163935ffb2ee656ebb", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5122549259f0dba4ad3b8e608de024f37c598820a09fec13ffcc611298435492", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "60dd23fa69540bcff63db1b270b8fe9be9ce7e98729c95b1ad8925db420a3dfa", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "6da2196b020cb7e6f05c32e11a0e9e2da6e501bb0ecfffe5974919158ba36444", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f85bf415b444eacb4ae61ca3168dda8a11ba5b368171ca0df49888caff436680", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "159f0aa3be6c698d2c70bfbfcb548dd0829502ea8fdb70b2b517c8194810e2a0", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a68473dce9648a36ef3e898ef904720c8db4f99b1ef940e39d44ca0c1a449b00", "T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "521b6ce07207c262b832fb4e78477f89211dc02a4b6e02a6fe8d389a2be909cf", "T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8ff223f44e97a98fbef62c2ed314bdc2d3a2f160d0396d09733847ce103494d", "T2T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "15ce8ca8c46be745296ad39b2df4e4503f1b3208c3f5b3e3f48d7bd172779605", @@ -7958,9 +7928,9 @@ "T2T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "140ff1c01d0d27ade29e88af481a9a24385fbe01058bdbf35f2fa20c19e0c386", "T2T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "f9a5c8f92ca3b0b9545a9a5b3cf8df4de9943fbe45de113aa6f970d60b3b9b49", "T2T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "2ea54adc6df443f758a6395b6b443fbfe5931cbd62a321504de9ae453aff8ca8", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b25bf7604a7b71bd9949f5fb281aaf3cb4fcf94f528ec39b25ab85d0a2002086", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a1d6959ae545a62b3218c6ab12ec5d0f4e4d7facbfee9101ba771e8efae3a110", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "24be30b9b530e5f8c0f8bdf1a8de80cba73dd6da1ed42d45fce36e0c9f65dd23", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7a74d982bd708ffc5358a306f12c196d6246789d52cc286d80abafdb69f807ac", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3a70638102ccc3ceb6f4687bff159063977edf9da94449b81e3ae970ee81644b", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "4bfbc0237fa9c549711e06889f28b2a490282047c9906065c7a3539dc9d81f26", "T2T1_en_test_lock.py::test_hold_to_lock": "a5739f92ae28fc57769e444408ce5b58223d0d33b368022ef78ea68e0f8c9b80", "T2T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", "T2T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", @@ -7994,10 +7964,10 @@ "T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "a009899ccd3305cb6737c8fa645cc9eedf4e46d6669a621a07d8cd9447d80f2f", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "9b0f5a7b8d2ab0fed1e5389076bc035e24dce377d275824220f1aa61e9bb4810", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "1feb3fcae2c593ea9193bcab23d8e64accd6fdbd2b05e2d2403ff89f8f94e4d8", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "321bb1ca828fbfe706976a725c7609a152ac97c675c26480eac5bc3c1aa6bfe0", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5d5a3feaafb41d2490261bfb839e09fe23cf444931a07bf07cc6751803b8c80a", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eae324bf985156be4de01bacd26e6351d44a0766a69c148e06ca846b1be14f4d", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6a45df5a9b902a648ec35e604a285682254be90e1a720ace4db7ebd14cd94f8c", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d1759a29778ca741843817ac5401e09816ec39cbfeea9f3e9e98660777f0ed40", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "80956a3a8979a123fb576ac1cbd50a533f31569811afc06eb506e19289b6ef94", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "be7d49b8c1f6e08205fffb59cbbb7adc05d83a0ce720b29e45f7a370c7ef116d", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "803fdb1fd03c09b6d3de4035d63f5f16cbc572a82879d87d8d8e6fc23e0e1106", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a6c27b94205c9dd53a817612fe0abd85743079be6ea00206626be171e1aec455", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e32e681c59dddd9e0b52d559d2f843dad022662fc56507c1ef76c1491aa8728d", "T2T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "d3a25e5f32fff10662159ae1d42a057db28ebf7c331d8b1910ae8e0e4e74f29f", @@ -8006,9 +7976,9 @@ "T2T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "9fd091e3fa094c27590e10ae9644ebaac8fc32502bb070981f007e1da3c41b10", "T2T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2ab38b584b868bbf22501c70c13bc4fec9c376b65cac52cfec63836a98f2b703", "T2T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "37a764a71200043f47213df663875e9a445b989460df834c4d08b0b3862f5a6b", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ea68c57d578aa68e2d19c7b42ba2cd3a6829679f5048e8372018402ae8153876", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "393a3b383f42fdde0b373c1b25fa90436e12163ac21c7e4de80f013a006ea9da", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "8f4cda4156849d31ae69259d18e0e8a9a11865024e5f8532d58c7ecc047f219c", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5073473cdcb4a10452e87b8b877d8b135c85ee942f440474d83a33414fc4cc21", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "291bb30f0285ac0c6d94c47829a4eeae1085c0ccb239fea798cac1790c15b4b2", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "353e2547c0d3b9e50635735f4cb614a5115d9cee46d5a992d6a053d843aa8fa1", "T2T1_es_test_lock.py::test_hold_to_lock": "11c1e5e33d8e6046326c9c30f61216130a83ca9916172fef6808080bc9c67216", "T2T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T2T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", @@ -8042,10 +8012,10 @@ "T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "0e74c799e720952caf98271764e8151da2f3f79a5456a1b8fdd4bea13ea780bc", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "db5ec08707ea408f9d08a8f0cfc42aba44358ee6ce94ff73af542ef8ca5993ec", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "644226a8736f10de7878950e41d189b207474a40022365b87ea1ea24912c1eb3", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0451a11abf5629f3189638e06769ac4fb590c60e1748cac3229070e0599ee693", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0c12fb9d20269eeb2c1b336d39d101f7252c5bb3686a7a098b86e0eb707e3100", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4d757ddf5c0c17a2edede82ac1c417f006e67b47cc32d1a6834ee0853b5160ae", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d4390871ea4e209cd8a2973eb40cf26f09970b01577f3a90f8f09d22ce0b62f3", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4688e4198ef55ff8253965b16a612845cc9c29ae3dc9911723ac9c3d170738ef", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0af93fcceb4cbc33d6a3bd9022bc3bc774cfca36a23bf05d6d181846fb3631d3", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "16a06dba793165eec458d5d2e9e99596cd4c9b4ea9cb6d792bd96dc3209907e9", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f367935a27c6d4b77249b49a746bed74b68fe76a2357dfdab41987f8b27badf2", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b5d12766c3d49c8bfd80548dc1b18eda5a88e7799fc7002c1aa17bd29fb1b3c9", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "4b7b8f476fcaa0d38bd1621a4eb50ed3c92f2bb65be12b012a9e91dca2ee0a61", "T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "b93dbd30a75a6aa4ba3d6c695e04baa811c01d55700b386fe446b03cddcefb86", @@ -8054,9 +8024,9 @@ "T2T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "6341145caa8a438f9c4813d20f4fa14ae692dc927cd1e6418fd242fd089b7330", "T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "12e5ab29c4e6a7acb823f50c8094476731e1a8325414107d29cf1e2294d40b4c", "T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "8ad2b77fa910ef4b5a950a3b306be275f0fbd99cda6705b8e08c7381abd4784c", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "dcd56041f3a4064e7b4d0eab1ca1754aefb79826e4c20e7c0d806ac020f63053", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "dbfd08a6a656241c1a2efcca19688a39524087c63233f421de9c70f9427ed1f4", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "30e81db65a068e2902a84d7c3b4b4d2ef11dcca2be5b7d95f93eb6d297590b52", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1cbceb9786a48f6d9caea54b2c2d8d623e01eebaeb26d9bcb432086d1bd0b849", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9870f6d27f02ac02769400aeb358b9485c7d16f3781a74c614cb9980f31be8ed", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "e6cbceefda2771cf2db7ab5e48c92e1e853eabd388760b5d2a90cfce16536851", "T2T1_fr_test_lock.py::test_hold_to_lock": "9806bca2f87c93ad68284e812c702177535768017bccce6e6264ca4dc63b7c30", "T2T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", "T2T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", @@ -8090,10 +8060,10 @@ "T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "5bcecb9c0d7ff67fd388e13aa5daf4bf849a886efe7b9ae64a4579b15202be23", "T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "676c1eaf8983dd9d07e476303f2c0370006740a4c2a34a11ae68735fdfdd3ee7", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "5d9a35bf67c9520002ee41abac5c556f1932b9fc2073a259c3a8acf4443fc64d", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "de5e884ee18c51ed5e12290cbe2faa06fea1792d75cc3814db9bedf151a5c578", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "897fed170f4f7dce854af3af52ed3cc0e270f0b634ed80edc6b92815b7132046", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "96fe29d165264d24365c7d62cc45bb4627133afda5bef9b6903fe8f5019cd2c0", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3b0b8b3feeb590ddd6adb8c5729688f051a1ff61f16bcd80c8baf81213f09c1b" +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d1e765a363f3e24219cef132d94ecc48d27a5564ca90b69a2231f7ec0a6ce89a", +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c68e1a6538bf2b96293b23c4482f50f9a6de907ca3f0744bb88a74618ad9d306", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c341b0ade2777d0d5cca5f242bd96daef261a6b7d3e3a746f5ecf8c0594efec4", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "fe56876094b0f9244174bd1d485db64cf611a412c76058f3353eeda1c09749d9" }, "device_tests": { "T2T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", @@ -9229,19 +9199,20 @@ "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "be084493431aab50cf76dd2c34d4af188d4f40d18b950ae1adf1ac811bde7de7", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "fd689f2c88a44f83de5a9443d97d73d28f14817cb4e030121998ceb6ed2e8a05", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "e3f558c1852b5031204544186946b1fc9dc6942eb0440f515d1b2cbb9ff734ae", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "87d21a96f2a50abad9a75cbce923d50e9513ff7173fbe50f679ac1aae9e10406", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "01d97c9e5a671eeb8b56c7ac8b25ec82e2dac5904fdf052e797ae6c054453372", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "87d21a96f2a50abad9a75cbce923d50e9513ff7173fbe50f679ac1aae9e10406", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e4ac680898a749c2749f828a7b3e1611b1413778c2a1d6c6c9317180e655051f", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "01d97c9e5a671eeb8b56c7ac8b25ec82e2dac5904fdf052e797ae6c054453372", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "bc8a7d98375d46bd676b8b39ef36ae20a12dfa712420bd971fad3f8cb21f1095", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ce0bebb96e5ce058cd142b95d9f97994bce2678a339ec5b4bf4576f20005a752", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ddf1bcc7cee67e2bc38dda78543c9d04d6c6429a6540423042117cfe6e707fab", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2db3e3119116de9b001a288f040d92e4b90ae4c6178ec94f7b44d23f247e2a73", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fce31a993c026c2ab3a2b381c712b6069cda27bd66b084c35005bdca81afb048", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "29956f95d176dba8da7eebf385ef404749d99c8a92e030e29a197846880da228", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "48ec6d308aedbf549028d4fce9845608b32ce772a716d839d1f924f4ee45f9c9", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "07259c6f4f25881c1586a1db82817fa8baafa20c2dbbc446762dfacf8279f657", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "35a44c8f0706daa18eda1dee8cce5b30db2e1e520a47730599b7390f0f752f9b", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "fc365a116d172fc09a7757e52da1f1020923441d8f156c0bb0d6d9d84aea07b8", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "41a6afce45815e1e9605cd275f6a531a17e8e527e1ff85e0a8282f2e2bf1a30b", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0c60daec705b1ec0a6e788ee9d93b917e8a1acff7aff8268c4fbdef0d3d01462", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "61752a247a074657a56c71bf2a0a8557880d6841b72acd78405c9ba5f518871b", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "0994e43f436b87e648b386b037c6c99e3a8e179f1f43a033baab73ebcf0d75a7", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8cb9b8ec34ba7f0bcfba2fe793ccc29f972e5ef50fffc29941e43115231cc0b0", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c8caf6c0d9650720a6e966d874694610f8f048750f8119b8b1867d016eb2368e", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5d2af81b8ae45704c40aa97d9ed9cf87b56c6aa9c30c556eb1a350172d26c764", @@ -9249,11 +9220,11 @@ "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "52ffea964d3a3c1f7736c6f15fc99ca10bc1cd07903c3594aa46b184bb369cfb", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "70340e4bb88712feada3d6b0dd238b211c543dc1209359d3c53318955d54adf5", "T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "6fc675c8d68cad7ebd1692deecbc618f5e11a4779d7a146794e911dc88c72e04", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ae16e1e1a1ccabfb25b540ee4f9597425b48c71817f4807537aec60bac358e7e", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8a3b2d45e638b1d4434b3100bedefa9b8ee0c5ddfabe2c742930e7325e66cc3d", -"T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d0455a26cfff4eb405b9cb72624fa17ff4cea4cfda5cf05d436bd598e405f503", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f60b155963d34b4abb13c127d9f88e34fddd81cfe430cf10397a077ed88eeac2", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "3a7d0697f28120f4d99e982331217fd94e732763493de8efe8927485a4e21f6b", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "82cf3b4756830e6023d0aa57c58dfd68e23d5eb1f9841c00f035feaa944ba8a4", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a089c568c2983767667736d81481c5fa96e646cef8a590d810c7bdafa6c1a2a4", +"T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8d51919e05a841522cb8ad40becc660eead752927a78a6574f8f23efcd78c92b", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d35c3f2ad6443cc20106bffa34ddac0a28092beab0a962ad51590ae4c6eba0cc", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2b10985c26cf70d4da447b481e36b2cd9b41dfb00cd52adfa0af2e8b4f3f0665", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", @@ -9488,6 +9459,7 @@ "T2T1_cs_test_msg_wipedevice.py::test_wipe_device": "c3dbf3ed1bd619e77173d6b8e80335f8e5397627adc00ae16f9bd0f8074529aa", "T2T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", "T2T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", +"T2T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T2T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T2T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T2T1_cs_test_pin.py::test_correct_pin": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", @@ -10694,19 +10666,20 @@ "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "85e29b77ef87355218645a113a9d1bd8df7a8850f236cefac9eb84f9b75e2ea2", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f881175d64809ef465fff40bb4039d159b36f9aeb33f4b0dccfe4347fa9dd8ec", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "80602dd55133f67f580ab3dfd73b6401074cdd677d34f37f75781a2a3c037a30", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "4a8daae73ff52d016d529efb7e32df4073c5426def3a790806c0438c4ce67c92", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "d52a8fcfe810c2b15a83ae9a1a4e82310a38768daa9a4612e693caad09328b23", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4a8daae73ff52d016d529efb7e32df4073c5426def3a790806c0438c4ce67c92", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9aa47aaaecbfb76f29abec5a89a746af3e54b2bbb8621544492757d3e28b9f0f", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "d52a8fcfe810c2b15a83ae9a1a4e82310a38768daa9a4612e693caad09328b23", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "33c17d161982e254eb831ad5659ebb9f8aa2478ffa7d6cd4025dbc0e8773d4fd", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "7f32fe7e694ad2112b1cdbd0f0704660dc1050a6bf67c6f01650d8d002115363", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3171aae7e67c53d2d82db5bb5b7b5f369c9873b6acf97b83e4aa03b4452f1279", "T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a41c082f40c0cf424064179da18c8a28c25aea8da7aa8d97b49397b33a72fa03", "T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "24f8115deb03abf6624975d228cde64253d5f6a822f216e1671ed28c45d12221", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "03c67a21b9c0e19b7da02d4cbf7f380a2a411215abd9004d0ce9e3062e2437a3", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "948fd6c1249c82020c197747de2889e9f5f59edfe3b1249e9c55e65147525ed6", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "057c638028c831dc6580454212e5960b0876555cc5e91c644c1c62d9015ea9d2", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "1084f641eef7dc5498fdfe6099cd722d297ea7a2bd42d1726117ad124ec18c6a", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "bd2222ab868219142a0968593a93bd8db61eb4e284d2959f81b417e50290b4ac", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9a58e8bb4c31f9736258d3b721faa6e03ade25c8b43bd57143c553fedf7e5b35", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "57d57f99e14f7f0ac715e2d54684eba86d8d3ad3be994a1681a0de3a4bb11cf5", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "38c0a7b97bc1791a41bcb1584c8127cfe19863c03420b29ce239a4f16da5e5d2", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "e8c5dffd5b6714f29821126ba0ec4a9f2d07551416e7ad77c48f9d0eb386a905", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "37c008997aeea945aaf794a0cfb1759df762bbea395bf24e7b5ac02cacaef8c0", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "41b97d6c80896a11d1954b49b67160a4edfa61880f21d15bfed5e7b1bbc6ed95", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1ed4bea3143debd0a2eb9053a8d51a916fddc8788c4c1936da8f0eba6efa6ec8", @@ -10714,11 +10687,11 @@ "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7109155049cf3fe9bb431db8f29b2d217c2d355da403d391b559815c4236e35", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c2150b826dd599d7f39cf0b68e2e6fae1fffcf2068d420a667ee8e5ed6a92fcd", "T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c78bb5763a46b10e170923fd43a108a068d160b418f5b6d8af6c89ba5f000a0c", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "23780088b74778d56230e7ed0c77c19b11df2546428c8da6b1595e97f050b681", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "29da774492d39dc1bd20f9d87b98ced8cfbeb5d176151428f1bfab5544caf5a0", -"T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "dba5669fc3fe0c1628d825ecbb286e913f35e34d2501467a1e19d92bbcf29588", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6b411a234d80ca1403fc386d92f274042532bd860de65222666c3d6abda9cbfa", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "62b90e9ba8e1cb2e8316689e3e8b50d21d8deb16fbdae523321c41470ed9d84e", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "dc933cfd3a18b72310394e73586af653e0447fc3727ff223038bf7f76756b366", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a9783c71c4c87b6c7bbeb9432b2f3f6ec3d035b2e056042b6c9494f58101bc8d", +"T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8d50eb3aa7198f6a5bdab84cfbd0c1d9e63fd3f13cb29559dbec8c483bddefd1", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0fdaf5cbb4d2517993b7dd934448f4731e837924dc4431f5f7b574e09dcf98ed", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7fcf55c3c09e93415a47c6ce97970b97f82a3dbb645c0ddf34ccf4e869dfc11a", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", @@ -10953,6 +10926,7 @@ "T2T1_de_test_msg_wipedevice.py::test_wipe_device": "ef6f7a625bca26467147e4541e23b286c59ecc52f0b43d4e7526b16915de091c", "T2T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", "T2T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", +"T2T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", "T2T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", "T2T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", "T2T1_de_test_pin.py::test_correct_pin": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", @@ -12159,19 +12133,20 @@ "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "12ea0985454ab09cbec3d1f9e4246f0e6c098cc8ea69774ea253a473065e6938", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "66c45751002ae4d84e0ffb3a80349585604b5f19f87d08368e806ff0ac0d6cd5", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7d6b8c0008568f8a9fac9e6bb543b3b60845eb6aa5cc715efc5ed75f95aa27cb", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "443ab1ba8f9bc006865e978418b4ccdf931f88ad5c13397467cfc01ed3b3e406", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "a16d8e9838b762534c0a2d8c82c277ba81e49f018506dc26624a4a0d8cce97c6", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "443ab1ba8f9bc006865e978418b4ccdf931f88ad5c13397467cfc01ed3b3e406", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7a6eda20f828b170eaf90a58813a5569ae7af9d0f49e41c4d84227e64107733c", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "a16d8e9838b762534c0a2d8c82c277ba81e49f018506dc26624a4a0d8cce97c6", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c8f48570ea01b8046ac1deb84f3a12d1b02718ef28fcb47402e9f98745769d3e", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d31779beb275065c26d2ad3fab64682b4c55c9c0bee2e2ddab6c607762d1e551", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "35b9bc382e6e0c8778be8456f7dda77ea693ed5e8bc1168213c9ca5b1b1d5720", "T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "5f3413af77cc76413fe1ec3e00e17850f8de504499b5bf9d753ed4d9351931e5", "T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2b866e19489d98b9924398080478e2126fe9769b057ea725e7ba795584adb1ad", "T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e5468c5e24463f2e7f0bd7eec981bb7e942cce7dbadcdbd7c5cf3bd1df229a4f", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "b400fc538b0190f08a1f4e5896c1383d22add069018330f31e535e8b64b8799a", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "45e091601218e22ccab8c9d5037c16d76473d446568f10ae641848f931238194", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ace23b7da1d9c8c5166ef4730cfb8dfbf23f185da5c34d620cf95a2827856e30", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e9c59501e2d5022ddff0235552c5bfdd91de253b343682287b9bd117dbd05de3", "T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7846f566faafc178e190e2bf320b4028847ca58993c80fe4865dab6efd453f17", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ffd36a3fd421250666a83637ed4327c614d84e56a0e38c2e5f3cf13a46497732", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "f2d65c79da5d03603c63a0cf3e36efdf5f6c3dad6934bbb9897e02ee6ce93202", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "4bb136bb437fef98ee10aaf45c58febbc56a546c3615c77008426be88962a54e", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "e4f3dfbc35bf21259126b22941e91553fccbab26f38ba1600a68527abf747e3a", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "550ef3ed1a280dfee383119ee41329956c47ae38162721cd3ad53f00d8423937", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "adfc882ee9368382c280d2d80a358e362d555f6dd72e645dcc6cb7bcb1a5bf56", @@ -12179,11 +12154,11 @@ "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9a091e24dd9e1a4f000f7b457c6c868d5a839ae5da56022c94dc8ad90900ee13", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "426b7fea50e15767f8038324ff1e6aac01f8cab1cf57a998b5c65951daa74ef6", "T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "13c73bb3ea55849f7aa918f142942265ece4863f9f9645ffcdfb93fca5ab26f7", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9c5c06e1db268e0d0e9afdeaf66d73da2e57e9962886d554b7b5ffb0ffb63f61", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "eadbaf081948d78f6d1c39659de2f08291ba1c35598533b9ba635c7f8795f619", -"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f8ff23130c6e58403d22a0e1624f15f7450a9d3335c1f97e1e0162957c8f54f8", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "48517a6cc89d824bce17ec80fde1e71dc65ff4bf83dba813df9af596477f806a", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1a75791efd3d9f1d5ba49a5a15807d923728dd3a4fdd4a2fb87126bc133a2276", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b813ccd546705af63bb008b45f6c4eb68e3fe9f9612ca73fc9810f49d8fc5653", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "27992dd4817418121b86884da6a56c6cc0a212e0020ff2e2521ebe97f673fcd9", +"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "81629279d111b49272fa901ab4159580db5a9bc49aef74ec21d37292ed47767f", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c77f60956576fbb3970b0ca8afd06158040b2d450608f46cadb23c79c82bcb2a", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ce41425e83fd6b6497c77c2998b6c8727ba730daf22f166f2534880e17d936be", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", @@ -12418,6 +12393,7 @@ "T2T1_en_test_msg_wipedevice.py::test_wipe_device": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", "T2T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", "T2T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", +"T2T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", "T2T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", "T2T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", "T2T1_en_test_pin.py::test_correct_pin": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", @@ -13642,19 +13618,20 @@ "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0e8e437276ab32efc4d3c961ec4f3e1ba8ba4e03eec5d640b52a38822d037df7", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a6d9c431ee736c40d7600e824321077794e207d7088b713f96ebca875e9a8f38", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ef5542a30ed086d193a3bb2ef3025c1190e3f7372216e2c70a8464a4066194ea", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "f638a59f17d88b973dd0ac432ed78e3d411fe4a56229ac29c845e019bef5de16", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "0a8fd0daaa315189ef7e063736fdf0301bd4ddb36ec31e2250a4f66408b1dc7c", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f638a59f17d88b973dd0ac432ed78e3d411fe4a56229ac29c845e019bef5de16", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "cc18812d2f5b7ef5c23555ebcad59a28e82c01d06f2c5907b952156c44045ff2", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "0a8fd0daaa315189ef7e063736fdf0301bd4ddb36ec31e2250a4f66408b1dc7c", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c43145b81703108d19c39a9043136c7eb94c62ede3668890a226ed5a87ba709a", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3224baf58710455f51d287069bd69865436b16182aa9d6ee9e5f6ea4e502567c", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "985a80b7cc665ddb740fd8b49fc21fff87c06a3cd42d297d9f72d41771f98bc4", "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d405d791a687be77da11e1c7b37eb49feaa5dd74b5746fac42c5916385c8b63a", "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "611d56d305fa5d605b191b866822428e99ab605e7634190e70d60070ed8f3195", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d224c8e21874c5a238a21cab83dc0b7ea8cf6b02f05df42b6a4cb2f3f380deb7", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "11584d7536395af694a2b5bc4ba741e21820041acadf5f907e5c08147d0a383c", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "fe2351955e520cfd4d67cdf932462c3fd69d7a4373afd73a72ab71afe597017b", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ce28932ea3ad73e477b3d803d3e931705f7277f3b41be8b2de5f47d7137ae8ce", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "4b3e407baf258e9ea25afed08afe25544be9d0c4432551408e88cf201ca34df1", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e92fb0bc5645bd6bef799b291db6df29f43f72a25f323f8551838109ac6c7e6d", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "e618936f8ab537e1d2d8562283901deea6a288485363dfcda171741c3b65d97b", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "5b2fc9377ea69b697ecc06da294f71ae0ed27ca1430a62e75125d6ed3b192809", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "60e586ca000d39348f3081e31e1343d6940b583e52558298e6a9828dec1c6f0e", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9d230c629378a5bcbc95e49211701eaea051c9a4296cc3a3331dfdea9560da08", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3feef5d60a1a5f6ab43f2033ef4b0a266c70223ebbec77b67bcc14ddc9a50e40", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "faa3527677ffafb45b176cda3164dd7d88f37d541c8dd9bcbd62b447483b8ddc", @@ -13662,11 +13639,11 @@ "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "215421830b8cbde327892fce38c042d95db05a321a9979d206b99a4e59ce4fd6", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a3bd99f3660d1a3cda56e9739bbefc724deb8eeb4b73246e84503bfe789bde37", "T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b8111873f3f468d5bc9aa2b1201dcffe108d65915009233381c611db0f4a0701", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "50a8af6c86f80ea782dc50fdcce297c26a243a92f09fce52a5584b5397e3f468", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "44992a718d0e5f42d96a758a3cc3e2f85530abb6eee9e5318c0c090fa4a666b7", -"T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e7c45fa0dd43261daac14cc2e0bd1e70edcf5e6e01cf44449369fca970025127", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cfd7023dcd4aca013ca5accdb090d0881ba1b543208416d6badbcfe41e54fcc7", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1478855266a762ae5d630e4cdc0e1fe8c8c00e3b6cf84d2cc3d621c08a994608", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f8eda21a5c8b07c28f352399b823ce46754c531c1cab4fc0a0515ed120600f99", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f3ed387809301e5d496f9d85d31fa2d042fcdca306fd49cca8392c88fca4844c", +"T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5595c2a1a2a3f549afd11d840a57664550b771a3eb0bdf98c19727bdae0704d6", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "eddfc055236a75dcbc0f593594678523a39e730482284ebe8e617331a0bbc212", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "47f6a0be563cf8d4b37558768a50eb22d40082689c0c9ce110b52a77a493323a", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -13901,6 +13878,7 @@ "T2T1_es_test_msg_wipedevice.py::test_wipe_device": "30cfa8e213523185556b09a6e71c27099434484689103e88b5885f9616a29cd9", "T2T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", "T2T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", +"T2T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", "T2T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", "T2T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", "T2T1_es_test_pin.py::test_correct_pin": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", @@ -15107,19 +15085,20 @@ "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "142b8458dba27108711b54b500d399a8f6b186d277e5c0704d82219fb70b76c9", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1261f7b79a1cb4a110f50cb00cae5cdc590768989b69c98b542386ead92de8c6", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "cc8d63461af6e282b7fc4afcd6e418ce487cba3cf95c4b1eb9990cec648c61c8", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "2618492c26098f91ea57e82feb5850d076fa707e7b0c195bb7a5760b1c47e8e3", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "4618d385c51aed62a5edfa7063f61d4c5e1a2d9f4422658f2d3471b293b88d4e", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2618492c26098f91ea57e82feb5850d076fa707e7b0c195bb7a5760b1c47e8e3", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "1cd921e884adbf2453e120ceae4bb61ccbd5fcfc3280eb1576e88786e006e0e2", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "4618d385c51aed62a5edfa7063f61d4c5e1a2d9f4422658f2d3471b293b88d4e", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f074b5739f3bec0e444926534fbb6be4f1269d5567e2ea6ec4a7d29315a3da8d", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ec1610029c2085be5d2f59f55873d3104bbcdf719cbe90b99ab91098424d2a7b", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a6370ff212817bdf354d6b12c9bd4ea9da883c5f1b28bf746d2b7745f81ace0b", "T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "461178dd45fc130048749dd679ae202547e64c3311e07ff9ea27a593c7cbe51d", "T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6904de14224eb55d657747ccbc0b73a093406d2910665c69dbfc65df949b1d3a", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e18f67ec58ea71bbd9d8dbc83a36846b5ef494cf4653e64b93c6f858a1834dd8", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "1e8696b66f1656ee9964494a6bf1ed1499c55510c535a36fccf3339491014a30", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5bf03c89fa3bc3ad58c7d6f82066ec1e7fd755443a11ec25d6ae532ac1ffafee", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ea1bbf0f0e4252474e2712921ed0714aaf4deb7fa2474e71189c70402c26cf85", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6a57b1e06196590b853ea89be9fbcea918b031e8ac8203d24dc7507047357a8f", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "647986a83c9c0de60df929cf2b2f2a9a05a679bf08292f2c3d140b422e96fbbd", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "bdab5b37a4aaa4dd904d7a86b2133b4b97924487025662850eb35287c4cafe29", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "93d9d8fdffdf2cfaf90d035034e522a0c011831f5f6126d32e07afee7431b55b", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "76c335f0724eef90678f8fbd7574ac3d8eb032f12990d7598d747388671a6bd4", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "42738caf00be9dfed9672705a4302b0422223b888f562556abef63e72e476e26", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "978fcc41f8e83b9111f2733a1325a0b52c0aac5f7e5367783ad4a16fe0190587", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "03445a15416218d18604e3d229eb93e866227dc39e1f49a0f874cc9efb743e2f", @@ -15127,11 +15106,11 @@ "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ac31713136ca74bef0d54440a062758acf2c55dbf58f784896d7edf9318bbf3d", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2100cc09016c1f1886c846b3540f46874fd32e1ee41550f5acf97c0d233d3d05", "T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1a561435908f4823b0f9ff21e7cbf723156cad8a47fcea8c971d6da3b478fb75", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a78f558fae7199de5e0b672dcd028deded7ff862e5fd9d4817286b437df402ec", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4615bfdccaa7d8d08ef6370a6ce7f386f8b4b5ae34d52deb64c319d317191dbf", -"T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1d903da547400aec99d91203de1b643f6faf37ed2296cbe58639edd36ad0f78e", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "787a22d99069ef0c4177adb03c4e191b46d6b59c52cfb27337f101467cdbc045", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d79584560bd4c18ccea7ce2f714982df982fd5f5bb0a130611359721a9ed46a4", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7ad537e761521280f5eec3971d83f1ea1e8f94db4b7650809c06864b712d023f", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4011b8b029d74dfd7f9fdda77921c20cc036addc39bc7bdefa145e663d4cc454", +"T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2d4b40db5f46e4e8a4622bc46b4ecdf332c8c5103a229103ec6f794013d8924a", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "62847884f118fe529b68a45ec73673b5acbbd43b06566fed22debbbbef6f55a8", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d3aaa8ae01814399ea4fca753975e7348a8ed8965d97784ce02f08eadddce137", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", @@ -15366,6 +15345,7 @@ "T2T1_fr_test_msg_wipedevice.py::test_wipe_device": "361842715b5f7636f577c8c9bc8bc69548474cd26c26fd1b5fbcd850656f7753", "T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", "T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", +"T2T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T2T1_fr_test_pin.py::test_correct_pin": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", @@ -15461,9 +15441,9 @@ "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "143f81514b342874f528182b55e53bc632924f3fd7f44967dd2a171e07f8fd70", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "c3a3ef8291fec640a93ab37ccc08bac97de5380e8c7b5105ba34243e89fc7be1", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "5ab884e92ab8105925457a3fc6f4fca866749f2eacbd1817b9c196375c4961f3", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8e0188d169ac286182eb3c3ec4fb6c2af3ff8d5d809fb500cfb07b7289415149", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "32d36fb566d5f6df163f63238086f9f5554527e2fe962dd705a69e219e6a00d2", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f842d19441e64e1db2f9454971611c84b4a30c71ed9554632cf158a2cea72cf8", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5c51a2fe18b1595a975c0f7169413dc9761fa8bcf119dcb83dad1a44d23c9e34", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "93009c0d3def240f722bb94fb90d205b46e39a9c75d3a6de089fd21e3cde15bd", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3a03c5101dfcc644feea1ea6a7d26afc30e2687a790fc21a22d7bc7973b29ed0", "T3T1_cs_test_lock.py::test_hold_to_lock": "ec202e9df1622e2f189652e7929db202d6017ef6df2a235ed0035cea032bdd05", "T3T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T3T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", @@ -15497,10 +15477,10 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8766eab82a293be974c517d14c569429187f081d56df48359ab3088fd6f25be6", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "20fa687cca06770b862cf90db02429d24fea3469d2b9a931b828093555307d5d", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e653fdcab4edec38ccf0634288e7d618bc8dd73eb2f22529cf9827898f56da17", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9d7d1fe39d0aa6946e00d83cb840a016d526ad0f3ed149ce93bd4660d9f0bf44", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "fb8aa1472a60d91feaab767617767667f6029845f65f0391d698771dc26d69ec", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eec3afc1c62a0b3956b3014fe628c2b5b04633be69ef09eeca546f4538b816b2", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d6811ae96881fdd4dcd372716f895b1c8a51c4f1cfdabb10b50ed0b5e5935eda", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e92e2da82d9059394e1a920faac80dac711baf0c861a39178eda359b5e6c1d5c", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f3a392008691b8f34c37b8ec7e5bf3a0a0478b1518da906feb364680f40ff1c5", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "680e1d5bb5f07e0f4bf243369f4b44204dcddb50f4074497c7178a901f24b9e2", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "21ebaf87846a17908714c87aca596e0e00e3cbf5fcbab910c88d6642dd8e7534", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e69f1d962aa09b907c6ef4886604321584507031ca81194ae31ee359d3b18311", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "113199817596637d5eb61d6ff2e5d331651ae1bc2e2c41b018acc1e723fdc3ce", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a0aea17ae65b3e5769509207b64d2b13622fd9b6b05df8d4fa99fd7f6cceedbe", @@ -15509,9 +15489,9 @@ "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ae09966cbfee6e5e1a55231aa5386e0c9235c411aa1560d30adb674078188590", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "fa40cfa1d84b174d4c191ba9e93e489cbf4398232f6f4a08b7591520336d5ec8", "T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "c8c5159b86ab463d1ace5ce25744b83dae647e1ef730dd27a1db0a74a6186ab5", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f182f932f5534d5fdb4de7e7533799417964703a01367a52d2a998733abebcad", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "97d76578f007661448365df2d882f285bd68d5e1ddc739e07a5d5d42c618849e", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "818ea348aa945af5483879922f2fa42890e69d18b3b7f5c042794fd8f6ecc8a8", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "0d488f7ebbfcbf9d0bd377d51cee7940b694edefbf31419a56e1d95e9d407c68", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "43e8b6b652177a58fe415dd17509f08475a4cfd32f6017774a245b8cb8d81eb6", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "37139e3f439c1c0516b55720e0c2830a7db9bb73434438093f746a2fc2df6228", "T3T1_de_test_lock.py::test_hold_to_lock": "116a1bcf9e0d900a21815703564e58c8dfde980ce502d4fa57cd28b4ff68e7d4", "T3T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", "T3T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", @@ -15545,10 +15525,10 @@ "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "393af9be535289774f4c7f69a31127c89497ae6b0a9c251dc5b97c847aa11b7d", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "37a9d5d636a53d6a7876f12b0bfdeb8861e23fb81559d65309bb005a755bb0ae", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "f9db3934ee7fe0b69525bbc642e2af061aa0010b937518940cce94f182f5db15", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3c60a0801b42adfe6d0ba9d9975e5256c18c8904da358f3d61574ae038fb39e5", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "43648276c221cf6db6b5e580edf0f0c0efd99a13e7217931e60003b89804879f", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c24a3cdbf7ce6e260cc8505045e4e92b996a931c5394230625c808aa46296eb6", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9f0e9c887affd0e28f1e0e1dba66e3505edb1e3ee18e78f6a19d3a8402f03d5b", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c16a906a9cdf5312a1f139bc3e12b4f9df7200ea0530e0e30019196f767dd175", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2d237340b90cc6321e57f2a069a4446eb0652abd12fe80f392babbc5785643c7", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "92556fe19045d0db1867e8411278207f031a9c2782a51cc369a9ef575e842271", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "123b870c9d58865f2ae726e19dd464669d1a7c9098c714e40ce7d71b38f7542b", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "86415194d0a822709e64ad765a93c64967ace2adf61b4e7c4f3353e4486a4fbf", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a2e5ede5cca634d93f3a4a5bb4a8323b0ae5576652c4183233bba42152480c64", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "d7b8c8cb51eee2f131a74577e8beeb8209c93d4bcf12a52fcba461d8c37270b3", @@ -15557,9 +15537,9 @@ "T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "be557c3e4e0492d0b884d4ed549d3ae18e6175b74b5945e7ab6f2f96aab58748", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "700aa42142055535b4123d84f6d307a0589b43600c2dec525312d06c2af9aa18", "T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "736652b5298a7a4ee2e51282323d1150c9844b6f7b738f421ac4ad3a83d0788d", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "dcf3611b9ccbd6665c79e71ac6dd2d88e8882bce8674dabb553dd8bce1637de7", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "673a8a2ef9dee025e855287b657a0de5c2eb058b2b4f85e6c97eae0d99b8acd8", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3e8113c8341fddf928e5fffbda56e399ef5b7a379821d092786d08034a736eeb", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5477bdefcafb60f529b1ba179d732e60608168464237f648b56f4a403a8bc3d9", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1d5c186e3bc5455a4d30a63c88da91b1c32ac8611f7bb39b171f77e206f9e34e", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "aec92d5ee0e1f6422a3b554464e1bea3a401a65777969fd9572a6d57ffbc50a5", "T3T1_en_test_lock.py::test_hold_to_lock": "9d60d7aa2fbe6a0de14379e02ea825fbf9e21471596498f7be686f2538391f1d", "T3T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", "T3T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", @@ -15593,10 +15573,10 @@ "T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "35c67f93da34ba0f3c72a09076391bbc1ef24661d7ff8102f0394ee50250b29b", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "a9f1ab4971b614ec67fdaa9602f72ba5eebe54204b3735f8aa2b91ddeee41a19", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "beab50474b19fedaf4487c64071529e4217288942e4695ed795632559835b20b", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9dec43731d5e2124dfec89fd0bbcdc55e0fb2e74dee36392220ef72c0e1f4157", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3e9790ca009520cfa5394d089716fcfe26ad1bc17a5e06dfe3bb8cfb2fd068d7", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "96a1ede33efa68859e5f9e762aa8b93a9ede823c1873e633f169e2b303729c7c", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b8f9fbc1cc0e41864fa3f91e82735394d0b5c2746cc60c291a167761972970ff", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "483e5a827bb0c2db205e07614cc7cfa52c9e06e4d901f8b5895504b3b739c883", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "797c7b4fe2a4f4aa6c0b45f711ed8d1ecf9c49368b6acd9f48f6b747b1a7b2a1", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bf485914bdae5700176c2e420543996c2fa8d672c5065a9ffa1cd93a6069ba25", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2abb8f1c3ef0ff50ddd87b599b5887b18677844086fa747de58983592a5b9eec", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f5dd586173207ad0c2ca10288d9b0459bcd9c47b322a762bf69a48152a8d6884", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "31873e72e779156bc1ef9045b2ac30ba25568692032850f71d1a16dae9e93a7f", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "a2da4e7cd30e51e3a8587286660adfce5d6ca3dd0528a6c75c3f1c321ea6586c", @@ -15605,9 +15585,9 @@ "T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "43e9a64487eb5dd479c81e9f2fec09d9688832c5fffb1ab2acdd158a28572b9a", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "210a7bae28c84565bf5fc748583449bc71b5de5f3ae4b64bf8923cdb35b35ea6", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "40e03c97e2ef2887fcb8431d6e18eea96e4e50f75cb5936d1873248b96648bc2", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8773cbce2d6f57a8ad93e8f43b541c150538c89718479cc22a9eb2b8c5498141", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "5ead8f4f3113cf03672e45e0241f512505202f185b6e8d42f6eea7bf72615ecf", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "23b0040e453ecd96592f648c9b611dbebd7f28d44b62c9604127a1715f2ffdba", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "84e827a499d351b95b85610135fe1982784461e1d0c844ba6500ae1589fed331", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "aa33c4552c5b86dffd3660249cac9f10ad471dbc562884d0998ab9c9c3dfb1a9", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "753ba5089987774778c8b50a1b1b17db750d085667b7bbc76a7b78ac406094de", "T3T1_es_test_lock.py::test_hold_to_lock": "8692abc2f68ad3577824088bbb1898cbe7574f3730083224601d9fd6ca847252", "T3T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T3T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", @@ -15641,10 +15621,10 @@ "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "1b15cdc0e1d8b2087d71a43ed131b9c21efd339a7ffb71f1c7330c180bd3275d", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "796fa6b469663f333d82bb296dc286d0c36be1cea4bcf5b7efd4371871d782aa", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "c1387c1c2fb4286512d93824a12f953f16b51295cc8d558cae6fd1e310eaa090", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "836a27888695290186b0cdbd9303288b7c06587b2186048b781f6d1837965ab0", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "29fb1827361db1ff7ae63145c7be5849724ae33c64893f77e0e599fcebf32248", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "40d963b286a7b1bcb9199f5666d564cd9383043a94e35a5c4f5831a3539f36a4", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "66d5998cff4cfbb7af455a83fb290b99ba9eca98c16255a7c615d02e2761d67c", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f7bb76360e3a220397b1bda5b22db52892f0d3bd8eab972a54d8275512df465d", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "34b4d79679b131418c5abf52c77e37b56040ca1061fffe40d88cf3f16ddcbacd", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d8e59e0ab7f56274f6f40c10407c8d7edf43f83a3dad40b1e7a5476afded6322", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "fde2cd2b6fc6a0a622464fe5b1f2a59eeb511f75e0e43af0ab52400084d110bd", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2cfdef780039ba2a24fd93545148696f6f8b5f7ee3049c3e005be03020655bc5", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "57aa1b6bcd629465c3f0716d0be70861c124264d601cbefdeda7c3a8498afab0", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "1f7c2890d794cd107243e4d7892a9beb209d98437ff7ff67eb3a4a85bdbce4fe", @@ -15653,9 +15633,9 @@ "T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "6e5ffef280c38a6271cba4221ab7e686c6918e20faf1db24e1ae06736ecf8bda", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "70c84970b185ed2864c3f90eb98a3db5baf1872911dd87021e41531e93553d3d", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "6d4aa4011816184fe5dd277e931d370d666e0da7f332b74d21c4906a9fdd2bed", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f27f6bae13acba729e1df0604d5154e32356bb78fa7fa4be93c51490190cea83", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "facd536c5be690ac35643f664e715b0f6365e8f5035c7f3864df4c7f98c621c0", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1409a2e645642daa31c9b9e7f6d62cfb7c435639427a343bc8f2f9eb64e551a7", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5d981c3d2867e2397f98c4d4c86e1d63b2c2c72359a61826884cc17a6640eb78", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "dc863629743d58a7c936f7d6937a834e4fcbce89a0457eb57048dba6d34d6822", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "daa82f01abac86d9ab279a55153fcde0a3e17dc557457f230e8a7929413ad53d", "T3T1_fr_test_lock.py::test_hold_to_lock": "1b0ac32693b45bd3f93826006a3a33efb2619b7d9698ca35be742c59f6f1411d", "T3T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", "T3T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", @@ -15689,10 +15669,10 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "7259f03479342329ad3e17880bbc6fd198eee09d0884df8c97d225747fbf8841", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "a5169417e155f73ecb329c2573e79e37f30eac2f1f4ba7d4a7dc60f0131ad1a5", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "95957ef5e91b9e091145be5b2ae87d6708a4cd273ff44cc726a16d153beb04dd", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f359aea23a319d57fa6658525f75c0b2caef6c022467e4babb5ce5ab8d4071a6", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ff52600e707f07c40ffda40d4fea68b1fd6ac20656b83341d973ad0df8dc21f3", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f0469a1ff22b294f3f4fd7f8fb934f80bf11b1132c0b0b7932075b366cfdb145", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8567c5a1dca48172b1143d5cd52ce40bad0012a4680c9a516ef1fe4d73da2668" +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ad5bb88c49d8fe2bcb597cdb069784e978f27dc6e07392ea824c4e5cd2413de8", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aaf4035b2a8844d087e8d086da206c746ab539018bce4c6c62b22873259b2ca8", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6c41941944005875ee69916658d60bef9f020054b049da4b2a35141f6b4d7ec8", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4485e68569087b764f50ef7e86fa47fc4fb049e7bf01982ba7c6bac960502434" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", @@ -16768,19 +16748,20 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d3687f2ad206424a8824c026cc23b8c2efcc207cf5666a83b10b447828aa0f32", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "666a315e37b89fd2d614e579b9dbae14e32c39359ab1790450345f0d32c89f8d", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "14b116ab0973cee00da7f207cd041cab67012d2fa902ae457d44737976a6fc10", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "20bd63e82f4a56754df3ee96dc5571a81295f41ab067b35be9a965baf9594e3e", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9f116fe69f56453062534cde498c32debfab02d82ff685cf497777aeb536d747", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "20bd63e82f4a56754df3ee96dc5571a81295f41ab067b35be9a965baf9594e3e", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4ef4f4b9fac2056860fd5253317b41ec99b729e1be892b249690efc1d31f305d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9f116fe69f56453062534cde498c32debfab02d82ff685cf497777aeb536d747", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3d31b330afcec7290165371e4946b5cd239eb36674927535f065d724eaf4bcdb", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "236a020544ecd081cb8854d5e02ffb74b0961bb33f13c8eeab0b1fb323b7c0bb", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0b587dfaedf22a648a277a6a4569a0aea575c2f81b92dc5d1c636c8e112d3ca2", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e30344a76f7988bc928b86abafdb032b78a48607ef16cffc66d58473a7c8a13", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1e7110cdc5c51a73279fccfff529d9c905203299f9de5d834aba262e5f0194a5", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "443583bdf27b893b6dd4b56bd5ed31f66a33e11d622a8ef2013c6e36f9b4f39a", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "df424e9237f18aa36ae46bf629420d24da3cb0c60508e729091ae87b27def85f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "8ef3db66b9a6a1124838b7f33ede4e9943becd36f2e2b9950ce0288a33f8e0da", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "be5bf33d424fd0874dcbc1d36ca4a0492e185b42e0ee13078082ef3b648e8919", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "cedf5ced575187abc950365142057d4d06ddc259f8647531dc39f3a25aade3df", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "78672ba722e1cb276ff48a2bea40a9026e9e2582ac1cb5db849fba1a360047e4", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "739555ab45c0b5da06a1b9d7a6d6e2cbe4366e15662098d4f17a6f3a4716e092", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "481fb734de51e33a92e0824e0a614c200a127b8b2556c85e4dc1bcc436bd199c", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "cac7b4b544191fb4e462fffea2991ce0db78d6d20fc56cee418186edae0bd0a3", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2a428a25c24448b6912201a351c96ba4a2a865c762f48b903f10fe371f062180", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f4807908daebd239b4f5606c91f06be35c93e9bb7071e92f1c2459edb548a6e6", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "321b05495d37f1f95a09fc450601ee2e3f370aa4af9a7543e63be13e97c33995", @@ -16788,11 +16769,11 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75659956ae467175de9c7a8bb61d9d7321efc91f8f87816a17f18463cf6cff41", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1f02eb23ba80694ef0fbbe4f19614f84ff52c9342a0be48f90a6f02efa816dce", "T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a400a0b33482bdfd4470e82c96dab21f08652d6436c8273d820eca0c369e39d7", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b70e2f842cd752e1033aa4d0c8ae38e450ca311e38479581340d95b5bf0b308f", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "84e24c4eee88de04c9148ee1b6bdd5ec6d23880d37597d0159b385f3edc21a60", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a8bd97bd243145e64f7b776a631d7d1bf404558bf19ffd9085f90e1aad027f6f", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "fd8513f476006d88649573009d065e72a47bcad35614e33c7167bb2aaa442042", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "c39ec56bfb5288e57daecccbf52780c1e21ab177b9bba8d908febe94b62f0b85", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c58cafcd1abdbe89105ed4c693980b91b93bb2d273dfe27bdad1db033ca3796d", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c2be4d8a3c8e98c1306e7f025c6faf3222f95ccb37a7ac82c7e3e32d34929c97", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b94c601e163e1e8c0e47b0f2ab2f2cf6dc3c7b337e015611be11aaa82f9b1fcc", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c94c8930707cffab1f17b97bd3b30c98e9928ce5208c9fb6c29ad816cb9939c2", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d3850326dfec0f6dfb8468da7659efa08c7ac36e6c0542fe6ad3e4ca8d604397", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", @@ -17027,6 +17008,7 @@ "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T3T1_cs_test_pin.py::test_correct_pin": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", @@ -18173,19 +18155,20 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7dca8aee178b0f410cf37e9fa09ffeeb93b01ffc238d286d564cbc98c9a2517e", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "11a3ac4ed9f8b9ecf389f673e0007dec579099b5b1a297dedbc0c9a5bd766fca", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "009e13b39f0b8a858b3ee9f597d626b7e5773713a7431d5c97a6d525ca6744c5", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "d86ed6bc3c866c8259173961ef12a981138d865de4ce9b9ac70854b158ba9981", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9482b15d527ee4c850c3edc14eadf42284e5db401f3ee42855624383761c425e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d86ed6bc3c866c8259173961ef12a981138d865de4ce9b9ac70854b158ba9981", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "c4775909de03bb73ada542a4ff4938eabbc479068f95a22a76547f3cae7cf615", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9482b15d527ee4c850c3edc14eadf42284e5db401f3ee42855624383761c425e", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e1fbbf789f5daca5f4bf5f8c44c25b32cfa324c40e19746177808f075279bd61", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ed90c16baf66e6665f1dda17265c72c3cbdd772bb7571bfc90a60a578a8d85f4", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3b565b07969ae6804beb55ad8179b2d84b99831a82ffd238b0be53b40615c25e", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8f11d9988ab51214ab59e3ecdea10bf810259b69f3e5c6774d6af3a8266af3e8", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7edd741620c6d5c96e7229e11d215ff1114630b64b814c022467c6c0a72fe740", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "adda197012484eeba7d8a6379ced43ecbae120f985f2d4f347b4ad4afb05d6ef", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "52c8b5d6da874d9f9e4e32d9d349463a4d90319761a4b303d3b10281d1bcb550", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "f0de0ec63553997de72a46b10d994f70f3085aa8b26e5fa1fa7cba32e142b17c", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "d860e811fd64a4dd4d6d21a2de910aec24a5cd6facd22a0b84002b8da33eeabc", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "609f2e81cb52fa9ab8849925ce71be8c2c0dc2ee16223d829be45b952cb919b1", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "334168e5731e1d7ba6986e4cad01f9548c50e305f74871939638dd5188c2cdb3", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "2c185dbf16adac3d5b5799cfe36784c6971e23ea39e8ebfd82b2c6afbe4c0d64", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "998fb6e92a968fe8cd965c9f7567e07a7fa78c23940d99d303130e5f144130d6", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a81b9d2690ac14b2bdf8f5dd1003e80cb2f24ac025a2773deead41b43069a5d9", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "c0c481f4cfed4068ece7f74dc9e1267fd7059dd084cfc373793f8fa4df51c8a3", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e3eb4429c50959404a72ffc87db52b944c0b95f0784ae2fa5ebbb155a636752a", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9594468af5fc3b3345774bd205361a51b7647452b5f2bf68e40250518aa0121a", @@ -18193,11 +18176,11 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "191f367d9f35a8cdb4c8ca69de36049eb5e989f3258f42c94f2525e7445eeb66", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fc441a7efedfb9dee0afddd6b5df987b69208ca4f8543313694a095d0a193685", "T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "388a92c622ea26c7f5af76b9cab819040b3f5c3032f3abfa8b452341bb6caaad", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "154fe61ccca911c0549a42e035ea1e28b3c76fba31999211a76e2c18fc2c8128", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1bd99f00e95a8a48513ad0d4678675aea499d0e7105d205fff799753c40d9d73", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1eb4dc094c30cc0298e1d14165592d54469d4dc5b0212422dd60ca57c24977f2", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4b3cdbd39b8e618701c692fa5e3ff7380141003e050408f0266f51a70b47325f", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b0eefc56e10aac1a7a490b31bcee3df17b9150498f8289345b37371ab141e743", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "270284ad3aa319b4b72f7ec6ed493d6a0233206838e7b4c03afd03c2bc56ae65", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "643ef432fc30e98e7f5703cad2ab1cceaea484e83434d95c4aa47526ce11460a", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9cec4fea3fcfd4a1d968104cb652eb1bffc5af00353fb27309b9576713ac590c", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2461713fbf56e05120bf801533267d8c9270e1bd163d63c8c153c55546b18169", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4aa87cc7c89f221fc57aaa8334282c1bb14eb32809d606df7674fe6ba5520363", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", @@ -18432,6 +18415,7 @@ "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "f4ae036fdaa2a2a208543340c19c1a18b7c134256140e93ab4655e11f2438191", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", "T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", "T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", "T3T1_de_test_pin.py::test_correct_pin": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", @@ -19578,19 +19562,20 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0aee3f3ac01e30b4a56e2053d8e2a6f434bd672c6a07f4434c57826e55e9d555", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1d2a0ec3ca058c2c52f9b093b42976ba377bb634fb3483766003ad561f34c89c", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "e31d8c1996f0bc22f64c6b45f79ce6c653fad3e28f210d7dff118adde1e28d6b", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "1d93919e23c2053dafe725495349ef934afd54cae89555614c7d3d169edac8d6", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "13d1bf36c203d6d3652becdc4b4f27207ed910db99f29c0b0ad3aac8c9d3aeee", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "1d93919e23c2053dafe725495349ef934afd54cae89555614c7d3d169edac8d6", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fb3a81295319b448ce4d8540767432317cb82100538cba3161d5b65b3b1e158e", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "13d1bf36c203d6d3652becdc4b4f27207ed910db99f29c0b0ad3aac8c9d3aeee", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "1ccebb6bdbd12ec5e9efca2202f20ebfd9696306ce6646598c3f3440f339ebfa", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5e13b86617820a9ff1b5a9ac5d21092743f6c89bb523e9f17e4f88ba1e91da08", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "21558d4237f3e390b757cd01bf68ec7b00734803e8ca7237410db4bd12985924", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28398ee2bfc0e8774613a51155d78039657531b4a34209c457bf364c11e7a13d", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7a2afcb4d00fab2004cdec95f2bc3d6c5a37c2f2e9b1749982b1571b265b51a2", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "64626ac12c65af4f17b3654ea2cb3fd487ccf62855792c5a7cf43709996024b7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "31c11bf7bf2ce98cd19750eaf307b5cc156cec0a6aef7c133457199f874fe8a5", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "0a69649b2a30cfed3df06d745e69ef5b5d7f1365e85f4242f76bd8a906e427d2", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "44a2bf9c29c63a34a435944386db33c6fd5be9529cfca95a0f332ef944402d02", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1b6ceef625c31354318818f97234cfd6b23bfed3807420a8680d448ec5195b33", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6c0f3ab10c3a403526b39326834ba7059d7053eb22cd9403a0cc760e2b62c0e5", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "ba11fbe65ba3995251087c289a48672a5a1ec2d31b82a458b3f2694a2e608500", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "6ba43aaf7cc698b708b4a64677207f26b6610ca0fba420588291c7660dad0feb", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "be27580208975d81113ab2acdf1cb05b48e8e86b0c4f780d62913ba63c5284b9", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "4b9d7aee73c2ef68f7d3e895bb9e5b990a6ce5faf93160109bbde0f4d67c2cba", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "87bcddf21ffbf1a850b9c4480329498c4148fc7457144959214e037e6b137f87", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2164a72e04396209768bfcb81d77e842863f801600db3a6cceebada0c9834d24", @@ -19598,11 +19583,11 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d7596291af2da445c465c00e4810302b8b7ab67743efed9d69d790947f894a85", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "18b4e40f7e3581e3cdbc959f2a9f666064b435a3af8da5ef30d40634ecb169eb", "T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f6f62e8228d3fbae8b64bce061dd77e49fa6c5c40e0b499bdcc01eb2a9603a59", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "538f44e6bf070aeb7814bc1f35a2e28aea41d7a3f80e59200a616188ac755350", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d69ec7495b983b635fe407b3a2d176a89ae7eb9ca791822715693fa8b4778ab5", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d579f6a90f9f21d3098224a4fe503a0f1b42ca3bbaf057bc821d23c105909633", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cf7084f6229703081ad653308ca561c59f54dbcf919ae1f4b4437c42be1672dd", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "33ec5f4b06a0de5a7326c4576c441e8fcbb6308315efaa77ad05f61a7f2ac63f", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "505e4eab024f54645d6d89bd8b89ced2dc0cbd7104af285b818b3ad7832c57de", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "835f83037ebbb9567d75acc9db953ec2c876d442d0dfa7409f5aac0b441c5a50", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "91af8277739de92bf68d468d76c2b91fa52014b5885a652bdadd738ac2146b84", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "451cf2b9fbbe14d439b888640c5ed0acf40b99cff7544b3aa133b4fb22b32956", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "66b17244763e044358afa725229a3a33417544e7faa5a80dff4da4f5804c663c", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", @@ -19837,6 +19822,7 @@ "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "033ebf59123903b6fbb34d44fbb74c8873e83605e7b6f5e8b50078ee6589e268", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", "T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", "T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", "T3T1_en_test_pin.py::test_correct_pin": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", @@ -20983,19 +20969,20 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3a67bc3443050f96d0c4c8a75fd530a56e10ac3475b2e0091edbf23206902e63", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0f1c26001259b5ad5c7d76c829f98840ef44ffe2983d5421e921b4cfbd262984", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "882411d64d76e6278a6d2fff2d7aacad8cef900fc262bdf08377072a653106f2", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "3b3aa844adabee59c61bfe02dd1da657d6158f6b72fe67453acf8078ed047af6", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "12dc603108d008cfa24a397f94f0843fd749b47cc0eaa3efeb3e70a9cdcefbfc", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3b3aa844adabee59c61bfe02dd1da657d6158f6b72fe67453acf8078ed047af6", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "92fe7a3e8d794033bc5f58551c31a1d2c5ba32ce67be30916160c49d2926043f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "12dc603108d008cfa24a397f94f0843fd749b47cc0eaa3efeb3e70a9cdcefbfc", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "985ac0579e31affe6132031a379da9f04c1800e955fffd568c5d95e9205eecff", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c186283f2b9fd19bda632ade2c582b069b45612a074b0299a35e112e996f988a", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "089c3f2a77b2ccc054a7dd6b1ba6bb75a172a78c720c8909c9ab78652b310063", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7aa840499711432e69917f40c1d0681b5c2a0510098a5b155f110cb1608f4c41", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8ee942007e5ef72baab7fb67a4eaade25e48da2aa92ebfeda28fda4177572467", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5657e597cae4958fc657bd768d179af28f3469600be95af950697f06ab83c7d", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "a48c9f4df31a98517888832ab0eeceb23beaadcb4d950efe56ba934bd7428a1a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "6031958a84b5e85acf04d39e5db1e9071d8e78130cd770fd592988bea73c8c79", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f4a1cd106407949bd322400a79fd9d24a474aca5748998aab0cd234a43e080aa", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c113f809161456e421022adac7cdc775f89d4e340451faf4caa0be5bbf55ed55", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "613c89d30a66f5b3974ca7287577724c1ca62d7fd7f3f32b2ed3dc2fa0ac9793", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "329fb150c7b119353b22074016499e6af381e5e47a74517d2f33384e8e095a0c", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "1f9cb8a79235d40efca0da2be90a4d8f7dc44ec4b305cf9ce954a3a8ecc540fa", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d557b3e896db5c64b32e08d290accffd3c8c47500a737c1003c768ceb941272c", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9604849a998bfcc56da3afacbf0a1a52b110d117c586e9cf7b42e7b4a6adbf3a", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66f0483d3a21a3ca9c76b5bc8cd15ca8591b03470d4fefb85e385c2abfaee53a", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dd8d37b2e9072f6a94985ed1fc055f82c41f0387e30aa9e515e7a3ea17ff0172", @@ -21003,11 +20990,11 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "352a542ff97ef2c58424990a1ce65e6218d714255f0c4c66b2e71d126c347494", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e642ce06e0dfc36df4cdb5123f3f57c279ffea64b99dc542dd33b32760ed831", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "edab79cd58b78252329e58f2e9121d76d75fdb1f2ed7f28f026d11e98155ee55", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "969b56334d86a40675d8d3f7e0049fa68aae3d1b0c877dc5137fc463d2255858", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "70e9c5de6f2a25683ac628aaa427a405bb3f2a74e357c237f0dff53d351ec30a", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "25f047d84d37a1e25d67af102de9dd0227e101f2ae62f7d419645b0d270305c9", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a5319877b666c440493c15e135ccada146e965e9b2717b4b4798eedd9642fa1b", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0ed9fdedd27bbc958b71363f33cbd4474799b7e6c1ad12296b037d261ce00906", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9778e3df0d995cf3294ca833685f7897ffc427d40b64f09de7eee441c75f3ffe", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f8e5e95bc029fdce7d2b24c1e02be768b205082d1cef6000a23dc349b4970dca", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "cead191c9d7a89514f371e4fada5d9276b23a88b0794b9e4e934fc238b7e8f35", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ad8ce439861095ec200e7dd1945d5df9555ea5425060a23454a81435d2b6d472", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9fc765e0849ed9d4accc8ef4bc1afad4f505bf11ee6e8c2719d2b01d6862a6c2", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -21242,6 +21229,7 @@ "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "66c1837c51814d93d1bae35d7ccf70eefc047f004d8908499d24e1da94e53ecf", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", "T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", "T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", "T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", "T3T1_es_test_pin.py::test_correct_pin": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", @@ -22388,19 +22376,20 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "434257550a35df97886608c509a1f932fa53eb6afc33df03ce4c0bd7a2c29387", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "60330f58f8bea3ec4a300574b7e3ef4989d18af978c23f846765824f649caf26", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0a6cbd84a805de18273596f5daeed2e3b207f65841a679570ac99f497786b8a0", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "efc2f67b938680b0be58849b77752ca483893e7c42d099d7d547813dd33220ed", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "2aa810576ef39cb32ff6837c29b8335e84eff606055bda54c98a6303abd5f86e", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "efc2f67b938680b0be58849b77752ca483893e7c42d099d7d547813dd33220ed", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "dd62e134242bec58ca7b52af08bcd57db546c111a965f92db1bad489b7ae7c93", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "2aa810576ef39cb32ff6837c29b8335e84eff606055bda54c98a6303abd5f86e", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c1695da4dd9d771c78b41f264ea13604a951c177b293e69282ddd12ee7277031", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8c0c32f4052d35675d16e68bc2482b3f7466928cbdf22557e6adfe68fad47f5b", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3dd8afa6b064886ca518a853d2896c42a13b8f3dcb1888772cccd6eeeef45402", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "69855dee7d227ed8014c64961595f76f395e1d2ff1e7eaefea672ccc448415d4", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "02b3a838e4b2a18991816b36778684755999f546fcce32646d8b78d0a8cbf36c", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7ac21681f55e71eb1c04394f3250b4ff4b392abd8c94bb851341436eaafc4bc3", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "81a4a78cd520ee1761db0b1a827516a03f34d09574fe303d8324380968034900", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "5bc1668de9d7c6d6417d0957514924278e667634134d05534ab865558a6f436e", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "90d893b38e720bd695b4794d333bf2ace96d187cddbe68bebf74b34d1676f605", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a9022ac13b14f44d1a377e46d201f3ac3748a875fa84850297d980bea4d74077", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "95d98a880b628b9a72426bf6f751b23221f5bbf2b639f6211eaa84d61f7519bf", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5ed6f0745bb8d7096b91cdd5554e266b123238b26a3fec081c0a24f247de6d65", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "14a29b446c946f8d014360eea54e6ebdf3fb7c91a1d67c12d053c5a43b9af5b4", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "add29e56f08d25a98b7738eedfc62fb5f11ccff23ffc3bf4dd4bbcfef456cf94", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "10ec6346e07253ccaa573eb06e94cff147b3ff4d17333539d4ab694978ef21e7", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "88771b035ed19bb793166d10c67c0cc99f17d022a26014e210a3c9be87c6a3c7", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a91e3be0a097d23c99a7d6fac54dc358d18830862a21b87f2d3dad3f3c4adfd6", @@ -22408,11 +22397,11 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7424163883d2144864cfd39b1baea93a9b922f6bb0b712754ae0bb4be4b9865", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "068fe486ce73c3fe25a8af66e6c553ade886df17073731dbd49ff36bca8b9653", "T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "53a695b0e9aca1e1629a0a39a1eb97e3b95363766c65315085e5642d2ab3e70e", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "32e011242ebcbdc61ffc762ffc4db4ae73fc80bf65290d43f1f4c1a79bbee033", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9529ca418fff2095e284eb9a08346edc8a8b2885604a91ecca92ecb9b2c74ad6", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "047f07608080d760bb763356585b7744c98f1b3e206c1347b98006a064711e2e", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c1837b210fff67ffd96182b59f8e735d70b0e4e9f018b7432dbd06e584fa74e2", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eccbfba5184fca9449a6dca0faf34661c31a399ca1bc9fa1b4ae9493ba9ba2e5", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8521cbf01929e1dd31e515fa326a507e497d7d73952d53a239e8d21d0c70016b", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0a9f36df72aa7f6b4c4b392fb26ddc73c57ea334f1cdb719ba5008e8c6c9150a", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9b78dd9610f10169a7327ea6978ce1aca839cf5249fe9d3c0f97e67d79209503", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5ec5d850c9ebd4a804cc20632804715cc0083eec9d66337e42fc945db0a0a66d", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "71000871d1a3e05ef5b50544b4954825220863c81371668061d0e76c97101189", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", @@ -22647,6 +22636,7 @@ "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "ab4acdd890a084e6041b9c385d4b4f4c331f29eec77bbcb69b4e99b3f8d554c8", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", "T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T3T1_fr_test_pin.py::test_correct_pin": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", From d4953e4af30e2a50e7d117b6cf3b641a2dd471d1 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Thu, 23 May 2024 18:19:11 +0200 Subject: [PATCH 092/626] feat(core): Do not store identifier for SLIP-39 extendable shares. --- core/src/apps/common/mnemonic.py | 4 ++-- core/src/apps/debug/load_device.py | 3 ++- .../apps/management/recovery_device/homescreen.py | 13 +++++++++---- core/src/apps/management/reset_device/__init__.py | 7 +++++-- core/src/trezor/crypto/slip39.py | 6 ++++-- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/core/src/apps/common/mnemonic.py b/core/src/apps/common/mnemonic.py index 2b17363d89..e9d9d0ad0c 100644 --- a/core/src/apps/common/mnemonic.py +++ b/core/src/apps/common/mnemonic.py @@ -53,8 +53,8 @@ def get_seed(passphrase: str = "", progress_bar: bool = True) -> bytes: identifier = storage_device.get_slip39_identifier() extendable = backup_types.is_extendable_backup_type(get_type()) iteration_exponent = storage_device.get_slip39_iteration_exponent() - if identifier is None or iteration_exponent is None: - # Identifier or exponent expected but not found + if iteration_exponent is None: + # Exponent expected but not found raise RuntimeError seed = slip39.decrypt( mnemonic_secret, diff --git a/core/src/apps/debug/load_device.py b/core/src/apps/debug/load_device.py index 5468703cbb..7f7012c0b1 100644 --- a/core/src/apps/debug/load_device.py +++ b/core/src/apps/debug/load_device.py @@ -56,7 +56,8 @@ async def load_device(msg: LoadDevice) -> Success: # this must succeed if the recover_ems call succeeded share = slip39.decode_mnemonic(mnemonics[0]) backup_type = backup_types.infer_backup_type(is_slip39, share) - storage_device.set_slip39_identifier(identifier) + if not extendable: + storage_device.set_slip39_identifier(identifier) storage_device.set_slip39_iteration_exponent(iteration_exponent) storage_device.store_mnemonic_secret( diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index de655e7fd9..774876e59f 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -152,12 +152,17 @@ async def _finish_recovery(secret: bytes, backup_type: BackupType) -> Success: secret, backup_type, needs_backup=False, no_backup=False ) if backup_types.is_slip39_backup_type(backup_type): - identifier = storage_recovery.get_slip39_identifier() + if not backup_types.is_extendable_backup_type(backup_type): + identifier = storage_recovery.get_slip39_identifier() + if identifier is None: + # The identifier needs to be stored in storage at this point + raise RuntimeError + storage_device.set_slip39_identifier(identifier) + exponent = storage_recovery.get_slip39_iteration_exponent() - if identifier is None or exponent is None: - # Identifier and exponent need to be stored in storage at this point + if exponent is None: + # The iteration exponent needs to be stored in storage at this point raise RuntimeError - storage_device.set_slip39_identifier(identifier) storage_device.set_slip39_iteration_exponent(exponent) storage_recovery.end_progress() diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index ac172ede1f..9abb77a4c7 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -84,7 +84,6 @@ async def reset_device(msg: ResetDevice) -> Success: secret = bip39.from_data(secret).encode() elif backup_types.is_slip39_backup_type(backup_type): # generate and set SLIP39 parameters - storage_device.set_slip39_identifier(slip39.generate_random_identifier()) storage_device.set_slip39_iteration_exponent(slip39.DEFAULT_ITERATION_EXPONENT) else: # Unknown backup type. @@ -214,7 +213,11 @@ def _get_slip39_mnemonics( groups: Sequence[tuple[int, int]], extendable: bool, ): - identifier = storage_device.get_slip39_identifier() + if extendable: + identifier = slip39.generate_random_identifier() + else: + identifier = storage_device.get_slip39_identifier() + iteration_exponent = storage_device.get_slip39_iteration_exponent() if identifier is None or iteration_exponent is None: raise ValueError diff --git a/core/src/trezor/crypto/slip39.py b/core/src/trezor/crypto/slip39.py index 8d6570d92b..3197f11285 100644 --- a/core/src/trezor/crypto/slip39.py +++ b/core/src/trezor/crypto/slip39.py @@ -156,7 +156,7 @@ def decrypt( encrypted_master_secret: bytes, passphrase: bytes, iteration_exponent: int, - identifier: int, + identifier: int | None, extendable: bool, progress_callback: Callable[[int, int], None] | None = None, ) -> bytes: @@ -440,10 +440,12 @@ def _round_function(i: int, passphrase: bytes, e: int, salt: bytes, r: bytes) -> ).key()[: len(r)] -def _get_salt(identifier: int, extendable: bool) -> bytes: +def _get_salt(identifier: int | None, extendable: bool) -> bytes: if extendable: return bytes() else: + if identifier is None: + raise RuntimeError return _CUSTOMIZATION_STRING_ORIG + identifier.to_bytes( _bits_to_bytes(_ID_LENGTH_BITS), "big" ) From 162649aec77e258da57f8cb0f70670b8b74f55a0 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Fri, 24 May 2024 17:03:08 +0200 Subject: [PATCH 093/626] feat(tests): Add SLIP-39 reset-upgrade-backup test. --- tests/upgrade_tests/__init__.py | 21 ++++-- tests/upgrade_tests/test_firmware_upgrades.py | 74 +++++++++++++++++-- 2 files changed, 83 insertions(+), 12 deletions(-) diff --git a/tests/upgrade_tests/__init__.py b/tests/upgrade_tests/__init__.py index 49844ce0c3..be9fb9fe6b 100644 --- a/tests/upgrade_tests/__init__.py +++ b/tests/upgrade_tests/__init__.py @@ -46,6 +46,17 @@ ) +def version_from_tag(tag: str | None) -> tuple | None: + if tag is None or not tag.startswith("v"): + return None + + # Strip initial "v" and optional revision from the tag string. + tag_version = tag[1:].partition("-")[0] + + # Translate string to an integer tuple. + return tuple(int(n) for n in tag_version.split(".")) + + def for_all( *args: str, legacy_minimum_version: Tuple[int, int, int] = (1, 0, 0), @@ -84,13 +95,9 @@ def for_all( continue try: for tag in ALL_TAGS[gen]: - if tag.startswith("v"): - tag_version = tag[1:] - if "-" in tag: # contains revision - tag_version = tag[1:-9] - tag_version = tuple(int(n) for n in tag_version.split(".")) - if tag_version < minimum_version: - continue + tag_version = version_from_tag(tag) + if tag_version is not None and tag_version < minimum_version: + continue all_params.append((gen, tag)) # at end, add None tag, which is the current master diff --git a/tests/upgrade_tests/test_firmware_upgrades.py b/tests/upgrade_tests/test_firmware_upgrades.py index 7c138f2be5..c536296f56 100644 --- a/tests/upgrade_tests/test_firmware_upgrades.py +++ b/tests/upgrade_tests/test_firmware_upgrades.py @@ -18,22 +18,26 @@ from typing import TYPE_CHECKING, List, Optional import pytest +from shamir_mnemonic import shamir from trezorlib import btc, debuglink, device, exceptions, fido, models -from trezorlib.messages import BackupType +from trezorlib.messages import ApplySettings, BackupType, Success from trezorlib.tools import H_ from ..common import MNEMONIC_SLIP39_BASIC_20_3of6, MNEMONIC_SLIP39_BASIC_20_3of6_SECRET from ..device_handler import BackgroundDeviceHandler from ..emulators import ALL_TAGS, EmulatorWrapper -from . import for_all, for_tags, recovery_old +from ..input_flows import InputFlowSlip39BasicBackup +from . import for_all, for_tags, recovery_old, version_from_tag if TYPE_CHECKING: from trezorlib.debuglink import TrezorClientDebugLink as Client -models.TREZOR_ONE = dataclasses.replace(models.TREZOR_ONE, minimum_version=(1, 0, 0)) -models.TREZOR_T = dataclasses.replace(models.TREZOR_T, minimum_version=(2, 0, 0)) -models.TREZORS = {models.TREZOR_ONE, models.TREZOR_T} +models.T1B1 = dataclasses.replace(models.T1B1, minimum_version=(1, 0, 0)) +models.T2T1 = dataclasses.replace(models.T2T1, minimum_version=(2, 0, 0)) +models.TREZOR_ONE = models.T1B1 +models.TREZOR_T = models.T2T1 +models.TREZORS = {models.T1B1, models.T2T1} # **** COMMON DEFINITIONS **** @@ -333,6 +337,66 @@ def test_upgrade_shamir_recovery(gen: str, tag: Optional[str]): assert state.mnemonic_type == BackupType.Slip39_Basic +@for_all("core", core_minimum_version=(2, 1, 9)) +def test_upgrade_shamir_backup(gen: str, tag: Optional[str]): + with EmulatorWrapper(gen, tag) as emu: + # Generate a new encrypted master secret and record it. + device.reset( + emu.client, + pin_protection=False, + skip_backup=True, + backup_type=BackupType.Slip39_Basic, + ) + device_id = emu.client.features.device_id + backup_type = emu.client.features.backup_type + mnemonic_secret = emu.client.debug.state().mnemonic_secret + + # Set passphrase_source = HOST. + resp = emu.client.call(ApplySettings(_passphrase_source=2, use_passphrase=True)) + assert isinstance(resp, Success) + + # Get a passphrase-less and a passphrased address. + address = btc.get_address(emu.client, "Bitcoin", PATH) + emu.client.init_device(new_session=True) + emu.client.use_passphrase("TREZOR") + address_passphrase = btc.get_address(emu.client, "Bitcoin", PATH) + + assert emu.client.features.needs_backup + storage = emu.get_storage() + + with EmulatorWrapper(gen, storage=storage) as emu: + assert emu.client.features.device_id == device_id + + # Create a backup of the encrypted master secret. + assert emu.client.features.needs_backup + with emu.client: + IF = InputFlowSlip39BasicBackup(emu.client, False) + emu.client.set_input_flow(IF.get()) + device.backup(emu.client) + assert not emu.client.features.needs_backup + + # Check the backup type. + assert emu.client.features.backup_type == backup_type + tag_version = version_from_tag(tag) + if tag_version is not None: + assert ( + backup_type == BackupType.Slip39_Basic + if tag_version < (2, 7, 1) + else BackupType.Slip39_Basic_Extendable + ) + + # Check that the backup contains the originally generated encrypted master secret. + groups = shamir.decode_mnemonics(IF.mnemonics[:3]) + ems = shamir.recover_ems(groups) + assert ems.ciphertext == mnemonic_secret + + # Check that addresses are the same after firmware upgrade and backup. + assert btc.get_address(emu.client, "Bitcoin", PATH) == address + emu.client.init_device(new_session=True) + emu.client.use_passphrase("TREZOR") + assert btc.get_address(emu.client, "Bitcoin", PATH) == address_passphrase + + @for_all(legacy_minimum_version=(1, 8, 4), core_minimum_version=(2, 1, 9)) def test_upgrade_u2f(gen: str, tag: str): """Check U2F counter stayed the same after an upgrade.""" From fe829a5d5977d170d6953bb0a3e5d8c692ddee91 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 28 May 2024 13:04:03 +0200 Subject: [PATCH 094/626] fix(core): fix clearing st7789's internal framebuffer when changing display orientation [no changelog] --- .../stm32f4/xdisplay/st-7789/display_driver.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c index 83df221c28..44246ecafd 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c @@ -32,7 +32,10 @@ #include "bg_copy.h" #endif -#if (DISPLAY_RESX != 240) || (DISPLAY_RESY != 240) +#define INTERNAL_FB_WIDTH 240 +#define INTERNAL_FB_HEIGHT 320 + +#if (DISPLAY_RESX > INTERNAL_FB_WIDTH) || (DISPLAY_RESY > INTERNAL_FB_HEIGHT) #error "Incompatible display resolution" #endif @@ -112,8 +115,9 @@ int display_set_orientation(int angle) { display_physical_fb_clear(); #endif - display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); - for (uint32_t i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { + display_panel_set_window(0, 0, INTERNAL_FB_WIDTH - 1, + INTERNAL_FB_HEIGHT - 1); + for (uint32_t i = 0; i < INTERNAL_FB_WIDTH * INTERNAL_FB_HEIGHT; i++) { // 2 bytes per pixel because we're using RGB 5-6-5 format ISSUE_PIXEL_DATA(0x0000); } From 3efa0f6bbd7193d0d73984888106b97ddb3af121 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 24 Apr 2024 23:09:00 +0200 Subject: [PATCH 095/626] feat(core/ui): sending button requests from rust [no changelog] --- core/embed/rust/librust_qstr.h | 1 + core/embed/rust/src/ui/button_request.rs | 58 ++++ core/embed/rust/src/ui/component/base.rs | 16 ++ .../rust/src/ui/component/button_request.rs | 65 +++++ core/embed/rust/src/ui/component/mod.rs | 2 + core/embed/rust/src/ui/layout/obj.rs | 21 ++ core/embed/rust/src/ui/mod.rs | 1 + core/embed/rust/src/ui/model_tt/layout.rs | 3 + core/mocks/generated/trezorui2.pyi | 2 + core/src/trezor/ui/layouts/common.py | 2 +- core/src/trezor/ui/layouts/tr/__init__.py | 127 ++++++--- core/src/trezor/ui/layouts/tt/__init__.py | 101 ++++--- core/src/trezor/ui/layouts/tt/recovery.py | 7 +- core/src/trezor/ui/layouts/tt/reset.py | 29 +- core/src/trezor/wire/context.py | 17 +- .../test_apps.ethereum.sign_typed_data.py | 11 + tests/ui_tests/fixtures.json | 260 +++++++++--------- 17 files changed, 489 insertions(+), 234 deletions(-) create mode 100644 core/embed/rust/src/ui/button_request.rs create mode 100644 core/embed/rust/src/ui/component/button_request.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 2539e3565a..83824a3014 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -93,6 +93,7 @@ static void _librust_qstrs(void) { MP_QSTR_bounds; MP_QSTR_button; MP_QSTR_button_event; + MP_QSTR_button_request; MP_QSTR_buttons__abort; MP_QSTR_buttons__access; MP_QSTR_buttons__again; diff --git a/core/embed/rust/src/ui/button_request.rs b/core/embed/rust/src/ui/button_request.rs new file mode 100644 index 0000000000..8a3056fbe4 --- /dev/null +++ b/core/embed/rust/src/ui/button_request.rs @@ -0,0 +1,58 @@ +use crate::strutil::TString; +use num_traits::FromPrimitive; + +// ButtonRequestType from messages-common.proto +// Eventually this should be generated +#[derive(Clone, Copy, FromPrimitive)] +#[repr(u16)] +pub enum ButtonRequestCode { + Other = 1, + FeeOverThreshold = 2, + ConfirmOutput = 3, + ResetDevice = 4, + ConfirmWord = 5, + WipeDevice = 6, + ProtectCall = 7, + SignTx = 8, + FirmwareCheck = 9, + Address = 10, + PublicKey = 11, + MnemonicWordCount = 12, + MnemonicInput = 13, + UnknownDerivationPath = 15, + RecoveryHomepage = 16, + Success = 17, + Warning = 18, + PassphraseEntry = 19, + PinEntry = 20, +} + +impl ButtonRequestCode { + pub fn num(&self) -> u16 { + *self as u16 + } + + pub fn with_type(self, br_type: &'static str) -> ButtonRequest { + ButtonRequest::new(self, br_type.into()) + } + + pub fn from(i: u16) -> Self { + unwrap!(Self::from_u16(i)) + } +} + +#[derive(Clone)] +pub struct ButtonRequest { + pub code: ButtonRequestCode, + pub br_type: TString<'static>, +} + +impl ButtonRequest { + pub fn new(code: ButtonRequestCode, br_type: TString<'static>) -> Self { + ButtonRequest { code, br_type } + } + + pub fn from_num(code: u16, br_type: TString<'static>) -> Self { + ButtonRequest::new(ButtonRequestCode::from(code), br_type) + } +} diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 75fbb0be42..77f0ce8652 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -6,6 +6,7 @@ use crate::{ strutil::TString, time::Duration, ui::{ + button_request::{ButtonRequest, ButtonRequestCode}, component::{maybe::PaintOverlapping, MsgMap}, display::{self, Color}, geometry::{Offset, Rect}, @@ -486,6 +487,7 @@ pub struct EventCtx { paint_requested: bool, anim_frame_scheduled: bool, page_count: Option<usize>, + button_request: Option<ButtonRequest>, root_repaint_requested: bool, } @@ -512,6 +514,7 @@ impl EventCtx { * `Child::marked_for_paint` being true. */ anim_frame_scheduled: false, page_count: None, + button_request: None, root_repaint_requested: false, } } @@ -569,6 +572,16 @@ impl EventCtx { self.page_count } + pub fn send_button_request(&mut self, code: ButtonRequestCode, br_type: TString<'static>) { + #[cfg(feature = "ui_debug")] + assert!(self.button_request.is_none()); + self.button_request = Some(ButtonRequest::new(code, br_type)); + } + + pub fn button_request(&mut self) -> Option<ButtonRequest> { + self.button_request.take() + } + pub fn pop_timer(&mut self) -> Option<(TimerToken, Duration)> { self.timers.pop() } @@ -578,6 +591,9 @@ impl EventCtx { self.paint_requested = false; self.anim_frame_scheduled = false; self.page_count = None; + #[cfg(feature = "ui_debug")] + assert!(self.button_request.is_none()); + self.button_request = None; self.root_repaint_requested = false; } diff --git a/core/embed/rust/src/ui/component/button_request.rs b/core/embed/rust/src/ui/component/button_request.rs new file mode 100644 index 0000000000..8abb392f39 --- /dev/null +++ b/core/embed/rust/src/ui/component/button_request.rs @@ -0,0 +1,65 @@ +use crate::ui::{ + button_request::ButtonRequest, + component::{Component, Event, EventCtx}, + geometry::Rect, +}; + +/// Component that sends a ButtonRequest after receiving Event::Attach. The +/// request is only sent once. +#[derive(Clone)] +pub struct OneButtonRequest<T> { + button_request: Option<ButtonRequest>, + pub inner: T, +} + +impl<T> OneButtonRequest<T> { + pub fn new(button_request: ButtonRequest, inner: T) -> Self { + Self { + button_request: Some(button_request), + inner, + } + } +} + +impl<T: Component> Component for OneButtonRequest<T> { + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.inner.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if matches!(event, Event::Attach) { + if let Some(button_request) = self.button_request.take() { + ctx.send_button_request(button_request.code, button_request.br_type) + } + } + self.inner.event(ctx, event) + } + + fn paint(&mut self) { + self.inner.paint() + } + + fn render<'s>(&self, target: &mut impl crate::ui::shape::Renderer<'s>) { + self.inner.render(target) + } +} + +#[cfg(feature = "ui_debug")] +impl<T: crate::trace::Trace> crate::trace::Trace for OneButtonRequest<T> { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.inner.trace(t) + } +} + +pub trait ButtonRequestExt { + fn one_button_request(self, br: ButtonRequest) -> OneButtonRequest<Self> + where + Self: Sized, + { + OneButtonRequest::new(br, self) + } +} + +impl<T: Component> ButtonRequestExt for T {} diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index 0859d68585..3240e80bc8 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -3,6 +3,7 @@ pub mod bar; pub mod base; pub mod border; +pub mod button_request; pub mod connect; pub mod empty; pub mod image; @@ -22,6 +23,7 @@ pub mod timeout; pub use bar::Bar; pub use base::{Child, Component, ComponentExt, Event, EventCtx, Never, Root, TimerToken}; pub use border::Border; +pub use button_request::{ButtonRequestExt, OneButtonRequest}; pub use empty::Empty; #[cfg(all(feature = "jpeg", feature = "micropython"))] pub use jpeg::Jpeg; diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index b7c15eb6f5..01130a3ccc 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -17,6 +17,7 @@ use crate::{ }, time::Duration, ui::{ + button_request::ButtonRequest, component::{Component, Event, EventCtx, Never, Root, TimerToken}, constant, display::sync, @@ -248,6 +249,17 @@ impl LayoutObj { self.inner.borrow().page_count.into() } + fn obj_button_request(&self) -> Result<Obj, Error> { + let inner = &mut *self.inner.borrow_mut(); + + match inner.event_ctx.button_request() { + None => Ok(Obj::const_none()), + Some(ButtonRequest { code, br_type }) => { + (code.num().into(), br_type.try_into()?).try_into() + } + } + } + #[cfg(feature = "ui_debug")] fn obj_bounds(&self) { use crate::ui::display; @@ -280,6 +292,7 @@ impl LayoutObj { Qstr::MP_QSTR_trace => obj_fn_2!(ui_layout_trace).as_obj(), Qstr::MP_QSTR_bounds => obj_fn_1!(ui_layout_bounds).as_obj(), Qstr::MP_QSTR_page_count => obj_fn_1!(ui_layout_page_count).as_obj(), + Qstr::MP_QSTR_button_request => obj_fn_1!(ui_layout_button_request).as_obj(), }), }; &TYPE @@ -470,6 +483,14 @@ extern "C" fn ui_layout_page_count(this: Obj) -> Obj { unsafe { util::try_or_raise(block) } } +extern "C" fn ui_layout_button_request(this: Obj) -> Obj { + let block = || { + let this: Gc<LayoutObj> = this.try_into()?; + this.obj_button_request() + }; + unsafe { util::try_or_raise(block) } +} + #[cfg(feature = "ui_debug")] #[no_mangle] pub extern "C" fn ui_debug_layout_type() -> &'static Type { diff --git a/core/embed/rust/src/ui/mod.rs b/core/embed/rust/src/ui/mod.rs index b08f77789c..029c136584 100644 --- a/core/embed/rust/src/ui/mod.rs +++ b/core/embed/rust/src/ui/mod.rs @@ -2,6 +2,7 @@ pub mod macros; pub mod animation; +pub mod button_request; pub mod component; pub mod constant; pub mod display; diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 35bfccb995..ec5681c771 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1688,6 +1688,9 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def page_count(self) -> int: /// """Return the number of pages in the layout object.""" /// + /// def button_request(self) -> tuple[int, str] | None: + /// """Return (code, type) of button request made during the last event or timer pass.""" + /// /// class UiResult: /// """Result of a UI operation.""" /// pass diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index a7b1afc352..e02bb65d42 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -505,6 +505,8 @@ class LayoutObj(Generic[T]): """Paint bounds of individual components on screen.""" def page_count(self) -> int: """Return the number of pages in the layout object.""" + def button_request(self) -> tuple[int, str] | None: + """Return (code, type) of button request made during the last event or timer pass.""" # rust/src/ui/model_tt/layout.rs diff --git a/core/src/trezor/ui/layouts/common.py b/core/src/trezor/ui/layouts/common.py index f16dcc16e8..86ce7a47fb 100644 --- a/core/src/trezor/ui/layouts/common.py +++ b/core/src/trezor/ui/layouts/common.py @@ -39,4 +39,4 @@ async def interact( # We know for certain how many pages the layout will have pages = layout.page_count() # type: ignore [Cannot access attribute "page_count" for class "LayoutType"] await button_request(br_type, br_code, pages) - return await context.wait(layout) + return await layout diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index ae54d338fd..0fa4a02a8c 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -1,10 +1,10 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import TR, io, loop, ui, utils +from trezor import TR, io, log, loop, ui, utils from trezor.enums import ButtonRequestType -from trezor.wire import ActionCancelled -from trezor.wire.context import wait as ctx_wait +from trezor.messages import ButtonAck, ButtonRequest +from trezor.wire import ActionCancelled, context from ..common import button_request, interact @@ -38,9 +38,11 @@ class RustLayout(LayoutParentType[T]): # pylint: disable=super-init-not-called def __init__(self, layout: trezorui2.LayoutObj[T]): + self.br_chan = loop.chan() self.layout = layout self.timer = loop.Timer() self.layout.attach_timer_fn(self.set_timer) + self._send_button_request() def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) @@ -62,13 +64,23 @@ def _paint(self) -> None: from trezor.enums import DebugPhysicalButton def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: - return ( - self.handle_input_and_rendering(), - self.handle_timers(), - self.handle_swipe_signal(), - self.handle_button_signal(), - self.handle_result_signal(), - ) + if context.CURRENT_CONTEXT: + return ( + self.handle_input_and_rendering(), + self.handle_timers(), + self.handle_swipe_signal(), + self.handle_button_signal(), + self.handle_result_signal(), + self.handle_usb(context.get_context()), + ) + else: + return ( + self.handle_input_and_rendering(), + self.handle_timers(), + self.handle_swipe_signal(), + self.handle_button_signal(), + self.handle_result_signal(), + ) async def handle_result_signal(self) -> None: """Enables sending arbitrary input - ui.Result. @@ -98,30 +110,41 @@ def callback(*args: Any) -> None: async def _press_left(self, hold_ms: int | None) -> Any: """Triggers left button press.""" self.layout.button_event(io.BUTTON_PRESSED, io.BUTTON_LEFT) + self._send_button_request() self._paint() if hold_ms is not None: await loop.sleep(hold_ms) - return self.layout.button_event(io.BUTTON_RELEASED, io.BUTTON_LEFT) + r = self.layout.button_event(io.BUTTON_RELEASED, io.BUTTON_LEFT) + self._send_button_request() + return r async def _press_right(self, hold_ms: int | None) -> Any: """Triggers right button press.""" self.layout.button_event(io.BUTTON_PRESSED, io.BUTTON_RIGHT) + self._send_button_request() self._paint() if hold_ms is not None: await loop.sleep(hold_ms) - return self.layout.button_event(io.BUTTON_RELEASED, io.BUTTON_RIGHT) + r = self.layout.button_event(io.BUTTON_RELEASED, io.BUTTON_RIGHT) + self._send_button_request() + return r async def _press_middle(self, hold_ms: int | None) -> Any: """Triggers middle button press.""" self.layout.button_event(io.BUTTON_PRESSED, io.BUTTON_LEFT) + self._send_button_request() self._paint() self.layout.button_event(io.BUTTON_PRESSED, io.BUTTON_RIGHT) + self._send_button_request() self._paint() if hold_ms is not None: await loop.sleep(hold_ms) self.layout.button_event(io.BUTTON_RELEASED, io.BUTTON_LEFT) + self._send_button_request() self._paint() - return self.layout.button_event(io.BUTTON_RELEASED, io.BUTTON_RIGHT) + r = self.layout.button_event(io.BUTTON_RELEASED, io.BUTTON_RIGHT) + self._send_button_request() + return r async def _press_button( self, @@ -197,7 +220,11 @@ async def handle_button_signal(self) -> None: else: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: - return self.handle_timers(), self.handle_input_and_rendering() + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_usb(context.get_context()), + ) def _first_paint(self) -> None: self._paint() @@ -233,6 +260,7 @@ def handle_input_and_rendering(self) -> loop.Task: msg = None if event in (io.BUTTON_PRESSED, io.BUTTON_RELEASED): msg = self.layout.button_event(event, button_num) + self._send_button_request() if msg is not None: raise ui.Result(msg) self._paint() @@ -242,6 +270,7 @@ def handle_timers(self) -> loop.Task: # Using `yield` instead of `await` to avoid allocations. token = yield self.timer msg = self.layout.timer(token) + self._send_button_request() if msg is not None: raise ui.Result(msg) self._paint() @@ -250,6 +279,20 @@ def page_count(self) -> int: """How many paginated pages current screen has.""" return self.layout.page_count() + async def handle_usb(self, ctx: context.Context): + while True: + br_code, br_type, page_count = await loop.race( + ctx.read(()), self.br_chan.take() + ) + log.debug(__name__, "ButtonRequest.type=%s", br_type) + await ctx.call(ButtonRequest(code=br_code, pages=page_count), ButtonAck) + + def _send_button_request(self): + res = self.layout.button_request() + if res is not None: + br_code, br_type = res + self.br_chan.publish((br_code, br_type, self.layout.page_count())) + def draw_simple(layout: trezorui2.LayoutObj[Any]) -> None: # Simple drawing not supported for layouts that set timers. @@ -505,7 +548,7 @@ async def show_address( pages=layout.page_count(), ) layout.request_complete_repaint() - result = await ctx_wait(layout) + result = await layout # User confirmed with middle button. if result is CONFIRMED: @@ -524,27 +567,23 @@ def xpub_title(i: int) -> str: ) return result - result = await ctx_wait( - RustLayout( - trezorui2.show_address_details( - qr_title="", # unused on this model - address=address if address_qr is None else address_qr, - case_sensitive=case_sensitive, - details_title="", # unused on this model - account=account, - path=path, - xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], - ) - ), + result = await RustLayout( + trezorui2.show_address_details( + qr_title="", # unused on this model + address=address if address_qr is None else address_qr, + case_sensitive=case_sensitive, + details_title="", # unused on this model + account=account, + path=path, + xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], + ) ) # Can only go back from the address details. assert result is CANCELLED # User pressed left cancel button, show mismatch dialogue. else: - result = await ctx_wait( - RustLayout(trezorui2.show_mismatch(title=mismatch_title)) - ) + result = await RustLayout(trezorui2.show_mismatch(title=mismatch_title)) assert result in (CONFIRMED, CANCELLED) # Right button aborts action, left goes back to showing address. if result is CONFIRMED: @@ -1019,24 +1058,22 @@ async def confirm_value( should_show_more_layout.page_count(), ) - result = await ctx_wait(should_show_more_layout) + result = await should_show_more_layout if result is CONFIRMED: return elif result is INFO: info_title, info_value = info_items_list[0] - await ctx_wait( - RustLayout( - trezorui2.confirm_blob( - title=info_title, - data=info_value, - description=description, - extra=None, - verb="", - verb_cancel="<", - hold=False, - chunkify=chunkify_info, - ) + await RustLayout( + trezorui2.confirm_blob( + title=info_title, + data=info_value, + description=description, + extra=None, + verb="", + verb_cancel="<", + hold=False, + chunkify=chunkify_info, ) ) else: @@ -1276,7 +1313,7 @@ async def confirm_modify_output( address_layout.page_count(), ) address_layout.request_complete_repaint() - await raise_if_not_confirmed(ctx_wait(address_layout)) + await raise_if_not_confirmed(address_layout) if send_button_request: send_button_request = False @@ -1286,7 +1323,7 @@ async def confirm_modify_output( modify_layout.page_count(), ) modify_layout.request_complete_repaint() - result = await ctx_wait(modify_layout) + result = await modify_layout if result is CONFIRMED: break diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 6dd82ff8f3..72b69cf65e 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -1,10 +1,10 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import TR, io, loop, ui, utils +from trezor import TR, io, log, loop, ui, utils from trezor.enums import ButtonRequestType -from trezor.wire import ActionCancelled -from trezor.wire.context import wait as ctx_wait +from trezor.messages import ButtonAck, ButtonRequest +from trezor.wire import ActionCancelled, context from ..common import button_request, interact @@ -40,9 +40,11 @@ class RustLayout(LayoutParentType[T]): # pylint: disable=super-init-not-called def __init__(self, layout: trezorui2.LayoutObj[T]): + self.br_chan = loop.chan() self.layout = layout self.timer = loop.Timer() self.layout.attach_timer_fn(self.set_timer) + self._send_button_request() def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) @@ -63,13 +65,23 @@ def _paint(self) -> None: if __debug__: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: - return ( - self.handle_timers(), - self.handle_input_and_rendering(), - self.handle_swipe(), - self.handle_click_signal(), - self.handle_result_signal(), - ) + if context.CURRENT_CONTEXT: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_swipe(), + self.handle_click_signal(), + self.handle_result_signal(), + self.handle_usb(context.get_context()), + ) + else: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_swipe(), + self.handle_click_signal(), + self.handle_result_signal(), + ) async def handle_result_signal(self) -> None: """Enables sending arbitrary input - ui.Result. @@ -116,6 +128,7 @@ async def handle_swipe(self): (io.TOUCH_END, orig_x + 2 * off_x, orig_y + 2 * off_y), ): msg = self.layout.touch_event(event, x, y) + self._send_button_request() self._paint() if msg is not None: raise ui.Result(msg) @@ -135,10 +148,12 @@ async def _click( from apps.debug import notify_layout_change self.layout.touch_event(io.TOUCH_START, x, y) + self._send_button_request() self._paint() if hold_ms is not None: await loop.sleep(hold_ms) msg = self.layout.touch_event(io.TOUCH_END, x, y) + self._send_button_request() if msg is not None: debug_storage.new_layout_event_id = event_id @@ -165,7 +180,17 @@ async def handle_click_signal(self) -> None: else: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: - return self.handle_timers(), self.handle_input_and_rendering() + if context.CURRENT_CONTEXT: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_usb(context.get_context()), + ) + else: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + ) def _first_paint(self) -> None: ui.backlight_fade(ui.style.BACKLIGHT_NONE) @@ -205,6 +230,7 @@ def handle_input_and_rendering(self) -> loop.Task: msg = None if event in (io.TOUCH_START, io.TOUCH_MOVE, io.TOUCH_END): msg = self.layout.touch_event(event, x, y) + self._send_button_request() if msg is not None: raise ui.Result(msg) self._paint() @@ -214,6 +240,7 @@ def handle_timers(self) -> loop.Task: # Using `yield` instead of `await` to avoid allocations. token = yield self.timer msg = self.layout.timer(token) + self._send_button_request() if msg is not None: raise ui.Result(msg) self._paint() @@ -221,6 +248,20 @@ def handle_timers(self) -> loop.Task: def page_count(self) -> int: return self.layout.page_count() + async def handle_usb(self, ctx: context.Context): + while True: + br_code, br_type, page_count = await loop.race( + ctx.read(()), self.br_chan.take() + ) + log.debug(__name__, "ButtonRequest.type=%s", br_type) + await ctx.call(ButtonRequest(code=br_code, pages=page_count), ButtonAck) + + def _send_button_request(self): + res = self.layout.button_request() + if res is not None: + br_code, br_type = res + self.br_chan.publish((br_code, br_type, self.layout.page_count())) + def draw_simple(layout: trezorui2.LayoutObj[Any]) -> None: # Simple drawing not supported for layouts that set timers. @@ -452,7 +493,7 @@ async def show_address( pages=layout.page_count(), ) layout.request_complete_repaint() - result = await ctx_wait(layout) + result = await layout # User pressed right button. if result is CONFIRMED: @@ -470,25 +511,21 @@ def xpub_title(i: int) -> str: ) return result - result = await ctx_wait( - RustLayout( - trezorui2.show_address_details( - qr_title=title, - address=address if address_qr is None else address_qr, - case_sensitive=case_sensitive, - details_title=details_title, - account=account, - path=path, - xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], - ) + result = await RustLayout( + trezorui2.show_address_details( + qr_title=title, + address=address if address_qr is None else address_qr, + case_sensitive=case_sensitive, + details_title=details_title, + account=account, + path=path, + xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], ) ) assert result is CANCELLED else: - result = await ctx_wait( - RustLayout(trezorui2.show_mismatch(title=mismatch_title)) - ) + result = await RustLayout(trezorui2.show_mismatch(title=mismatch_title)) assert result in (CONFIRMED, CANCELLED) # Right button aborts action, left goes back to showing address. if result is CONFIRMED: @@ -1187,7 +1224,7 @@ async def confirm_modify_output( address_layout.page_count(), ) address_layout.request_complete_repaint() - await raise_if_not_confirmed(ctx_wait(address_layout)) + await raise_if_not_confirmed(address_layout) if send_button_request: send_button_request = False @@ -1197,7 +1234,7 @@ async def confirm_modify_output( modify_layout.page_count(), ) modify_layout.request_complete_repaint() - result = await ctx_wait(modify_layout) + result = await modify_layout if result is CONFIRMED: break @@ -1212,11 +1249,11 @@ async def with_info( await button_request(br_type, br_code, pages=main_layout.page_count()) while True: - result = await ctx_wait(main_layout) + result = await main_layout if result is INFO: info_layout.request_complete_repaint() - result = await ctx_wait(info_layout) + result = await info_layout assert result is CANCELLED main_layout.request_complete_repaint() continue @@ -1344,8 +1381,8 @@ async def confirm_signverify( address_layout, info_layout, br_type, br_code=BR_TYPE_OTHER ) if result is not CONFIRMED: - result = await ctx_wait( - RustLayout(trezorui2.show_mismatch(title=TR.addr_mismatch__mismatch)) + result = await RustLayout( + trezorui2.show_mismatch(title=TR.addr_mismatch__mismatch) ) assert result in (CONFIRMED, CANCELLED) # Right button aborts action, left goes back to showing address. diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index a3c99e4fc8..82310480a9 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -3,7 +3,6 @@ import trezorui2 from trezor import TR from trezor.enums import ButtonRequestType -from trezor.wire.context import wait as ctx_wait from ..common import interact from . import RustLayout, raise_if_not_confirmed @@ -17,7 +16,7 @@ async def _is_confirmed_info( info_func: Callable, ) -> bool: while True: - result = await ctx_wait(dialog) + result = await dialog if result is trezorui2.INFO: await info_func() @@ -50,7 +49,7 @@ async def request_word( ) ) - word: str = await ctx_wait(keyboard) + word: str = await keyboard return word @@ -143,7 +142,7 @@ async def continue_recovery( if info_func is not None: return await _is_confirmed_info(homepage, info_func) else: - result = await ctx_wait(homepage) + result = await homepage return result is CONFIRMED diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index ebc2bff0dd..4ac805594e 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -4,7 +4,6 @@ from trezor import TR from trezor.enums import ButtonRequestType from trezor.wire import ActionCancelled -from trezor.wire.context import wait as ctx_wait from ..common import interact from . import RustLayout, raise_if_not_confirmed @@ -89,15 +88,13 @@ async def select_word( while len(words) < 3: words.append(words[-1]) - result = await ctx_wait( - RustLayout( - trezorui2.select_word( - title=title, - description=TR.reset__select_word_x_of_y_template.format( - checked_index + 1, count - ), - words=(words[0], words[1], words[2]), - ) + result = await RustLayout( + trezorui2.select_word( + title=title, + description=TR.reset__select_word_x_of_y_template.format( + checked_index + 1, count + ), + words=(words[0], words[1], words[2]), ) ) if __debug__ and isinstance(result, str): @@ -173,13 +170,11 @@ async def _prompt_number( assert isinstance(value, int) return value - await ctx_wait( - RustLayout( - trezorui2.show_simple( - title=None, - description=info(value), - button=TR.buttons__ok_i_understand, - ) + await RustLayout( + trezorui2.show_simple( + title=None, + description=info(value), + button=TR.buttons__ok_i_understand, ) ) num_input.request_complete_repaint() diff --git a/core/src/trezor/wire/context.py b/core/src/trezor/wire/context.py index 08eaab3474..b2f9afa5e4 100644 --- a/core/src/trezor/wire/context.py +++ b/core/src/trezor/wire/context.py @@ -157,6 +157,17 @@ async def write(self, msg: protobuf.MessageType) -> None: memoryview(buffer)[:msg_size], ) + async def call( + self, + msg: protobuf.MessageType, + expected_type: type[LoadedMessageType], + ) -> LoadedMessageType: + assert expected_type.MESSAGE_WIRE_TYPE is not None + + await self.write(msg) + del msg + return await self.read((expected_type.MESSAGE_WIRE_TYPE,), expected_type) + CURRENT_CONTEXT: Context | None = None @@ -186,11 +197,7 @@ async def call( if CURRENT_CONTEXT is None: raise RuntimeError("No wire context") - assert expected_type.MESSAGE_WIRE_TYPE is not None - - await CURRENT_CONTEXT.write(msg) - del msg - return await CURRENT_CONTEXT.read((expected_type.MESSAGE_WIRE_TYPE,), expected_type) + return await CURRENT_CONTEXT.call(msg, expected_type) async def call_any( diff --git a/core/tests/test_apps.ethereum.sign_typed_data.py b/core/tests/test_apps.ethereum.sign_typed_data.py index bf6f3772c9..e8a261886a 100644 --- a/core/tests/test_apps.ethereum.sign_typed_data.py +++ b/core/tests/test_apps.ethereum.sign_typed_data.py @@ -41,6 +41,17 @@ async def write(self, request) -> None: async def read(self, _resp_types, _resp_type): return EthereumTypedDataValueAck(value=self.next_response) + async def call( + self, + msg: protobuf.MessageType, + expected_type: type[LoadedMessageType], + ) -> LoadedMessageType: + assert expected_type.MESSAGE_WIRE_TYPE is not None + + await self.write(msg) + del msg + return await self.read((expected_type.MESSAGE_WIRE_TYPE,), expected_type) + # Helper functions from trezorctl to build expected type data structures # TODO: it could be better to group these functions into a class, to visibly differentiate it diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index bdd272a883..1a2dac17f1 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -9183,9 +9183,9 @@ "T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8e8b2479b6006c1b829346d4e8625a782a6f7ac6346e24e52f82dcb946c0fe43", "T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "2f89aad6748f21cffc13fc6054174ae1a58b02acb1867942229f48b8b88ae84d", "T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "93f34d7ae28e05b2804057e2b5844e2ac80b992b0141befdecb9f6bd533e1d90", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "f04dd2dcaf04b8bab5221a32bf4026a96b352f88d4d09fb0c5fa5af4e908eb27", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "1283119ffe9877dc24cf54c2d17c86c1bea3bbe3bd88fab61a78351ece37574b", "T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "6966b39783763d03f78da209a871f37e7abf81e25bbeaa61ef3aa23b55336e14", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "a6590a72349b73e7870cc029b2a20e1c9750f2270520e8e2e33ac87d460cc55b", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "816dc97287a08a952baa0a5a6051a13c2bda981e08184c2502a9582c4c847ac2", "T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "74d94117100e2a85c7341466cf671343f4257df72c1aa78539e6fc19d5d55727", "T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "3c881c6e70b7656ec061d86d7aa454e12d6428b7c8bb1b40d3e596016284bb44", "T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4eea02a651a4da7b45e25da9850e1b65beaada45ee6d3d655490521dafa897f7", @@ -9195,16 +9195,16 @@ "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "06f4b7012e441435326d930378208705e53278de984b829f65710ee01414325b", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "2f89aad6748f21cffc13fc6054174ae1a58b02acb1867942229f48b8b88ae84d", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e80c2d4b8c5ebeb70a1b550686000f381c115b3f1a91282572cc28df6ace5ea6", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fb99ffda1ecdecf2e75f61c13d1deecc9e0612a04d33fcfb5c0c61e244cd6bf0", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d0ac4405cb7c9c192af8654a8cb11a450d05dea809dd794963cbc21c5b29ab74", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "be084493431aab50cf76dd2c34d4af188d4f40d18b950ae1adf1ac811bde7de7", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "fd689f2c88a44f83de5a9443d97d73d28f14817cb4e030121998ceb6ed2e8a05", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "e3f558c1852b5031204544186946b1fc9dc6942eb0440f515d1b2cbb9ff734ae", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "330b30519e08bbb16abde05166478b0e3c6ced442fb2706b3286b267e5cd6448", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "87d21a96f2a50abad9a75cbce923d50e9513ff7173fbe50f679ac1aae9e10406", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e4ac680898a749c2749f828a7b3e1611b1413778c2a1d6c6c9317180e655051f", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "01d97c9e5a671eeb8b56c7ac8b25ec82e2dac5904fdf052e797ae6c054453372", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "bc8a7d98375d46bd676b8b39ef36ae20a12dfa712420bd971fad3f8cb21f1095", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ce0bebb96e5ce058cd142b95d9f97994bce2678a339ec5b4bf4576f20005a752", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ddf1bcc7cee67e2bc38dda78543c9d04d6c6429a6540423042117cfe6e707fab", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0b8ba4a3d38e2ae12f87f06a21bfeec30fa892fb628b869206d2875f0aa8ce8d", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ea13220d030b0b2531ceddfe1af6bf8b8d6a13d103c449944d9a119217270f0", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4d5a7fc576810fd8a1fb7504dd83d9cce623432dc897e3f871a960d35bc48fe6", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2db3e3119116de9b001a288f040d92e4b90ae4c6178ec94f7b44d23f247e2a73", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fce31a993c026c2ab3a2b381c712b6069cda27bd66b084c35005bdca81afb048", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "29956f95d176dba8da7eebf385ef404749d99c8a92e030e29a197846880da228", @@ -9384,11 +9384,11 @@ "T2T1_cs_test_basic.py::test_ping": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_busy_state.py::test_busy_expiry": "5807370e36255f64722c9b70002daad3b718387eaa41102561ec6a0dcbeed20a", "T2T1_cs_test_busy_state.py::test_busy_state": "491481abc34b5ebe614e45edb1a5831cffb87b9acd28b5bb596d8e61c0b29147", -"T2T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T2T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T2T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T2T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T2T1_cs_test_cancel.py::test_cancel_on_paginated": "59a00b375bf2e60cc0e624626aaf4b651cc24200be29e41e912fbc9358f7168e", +"T2T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", +"T2T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "2e607dedaaff54ba045743b6cf77f83eb81608d7e5ab22c3aaadbc13bfba9cb1", +"T2T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", +"T2T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "2e607dedaaff54ba045743b6cf77f83eb81608d7e5ab22c3aaadbc13bfba9cb1", +"T2T1_cs_test_cancel.py::test_cancel_on_paginated": "19cd5133ca91858fe667cdb4cd38de92ab01eba5a232eff23ba6591f59e7f26d", "T2T1_cs_test_debuglink.py::test_softlock_instability": "5ace49e9f6465d2a6fe19c0ccccfa5604f103b7ceb02a20a917647f09c374802", "T2T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "bf3b0b0bfc905aa8b9cb991baffb7c523f4f185f0a6531081c2e09fee5964108", "T2T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -9440,7 +9440,7 @@ "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "be92f86f750cb31cf1f105413e2ad00053cbb8080b3c52c43b0682c8e2beae9c", "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "3e893170b1e80dc53617b5707b94f9a486f9fbf6f7d42fe05dd7d6c1d0c3d497", "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e474c3b7ee87123456263add1b6a793a0478e4a5eb3887e8d8794f7890b0d4f8", -"T2T1_cs_test_msg_changepin_t2.py::test_change_failed": "3ae8aaa54debbeda6d7e2a9d4d178003b0f5c49e95478728b6c9965324eb7889", +"T2T1_cs_test_msg_changepin_t2.py::test_change_failed": "eda917e9a4b55412c89628aa1414cc5cc1c7aefccf4cd452447f9ae188d49162", "T2T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "08ac3c286ca2a906945aa3a64f65cdaccfc9fee97c52a696be5fddb6fa350d54", "T2T1_cs_test_msg_changepin_t2.py::test_change_pin": "1016d5ded51408eed07b9d048f8f51eceec1df950c215615670d8799a9020e83", "T2T1_cs_test_msg_changepin_t2.py::test_remove_pin": "6b81f8e410e9eb6f12e00b96085ce069b998645b5c92100da6aad4230b9fa306", @@ -10650,9 +10650,9 @@ "T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "532d10d1d33670a6355c5a66eaa91cc48d88f1cac8dc9be6b156a8ea5e28677a", "T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "a6031e2fc7555aa12fca1573e4d4c1b242fc9e5aee3e6f5ba7a0a0c446248243", "T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "08f68408b7970643c752646103a0c2b87b939fdbf3fefc4baef358547159f473", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "4dff74af975048a9d9bb3f157ee35a83548879c913440aaccef8d119063903a3", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "f1c91a2ab5a56bfbc85413d61711296ca739a14c129eff64fd8dc0a02c1ae8e0", "T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e8c0a2c6e23ec2a6fcc2f0572c0e3ac1e6af4bf697789a0cace07a5b0ced6e05", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7308412ff00cdc11e543ed5b447f60fbe26b31514b6e63b973e1ff7020601bec", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fdda959fde60b0e9ffcabfc7bb0c992c4e3c59a207103158e5f6cdab97d9ff3c", "T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e8ea4f59030b9ed7a43ac1ad2cb7614fa0dc23aefbb84d661be366425d888b08", "T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "9ac53a165c84a7169b1516a31c3a322c259e2e0f5d327e2be93605a01d4dd524", "T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f3a8b2faac72a00121576d82d9f8d6924318a7c9d06c30c8f4974f88bc373e8d", @@ -10662,16 +10662,16 @@ "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cfb205a8c4b04bcb0cd58feaa772994dfab3c026ef0b4524f363278b47acd913", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "a6031e2fc7555aa12fca1573e4d4c1b242fc9e5aee3e6f5ba7a0a0c446248243", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8803ff610d055436af3c65e62f5095d5ac4270ff510963264dcf401c555b79c5", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2afff9b5465911d33953eef488bcc483bb56f592ebb28f1a8150b1082dddac7b", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "9c321d3c97a8a334790e71c112c90ddb30f003373e7d1c64a00feeecb9f5bc44", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "85e29b77ef87355218645a113a9d1bd8df7a8850f236cefac9eb84f9b75e2ea2", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f881175d64809ef465fff40bb4039d159b36f9aeb33f4b0dccfe4347fa9dd8ec", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "80602dd55133f67f580ab3dfd73b6401074cdd677d34f37f75781a2a3c037a30", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "46d44f853f15c05ac3fa45af7a5d7e1c063b3d8999d5affd15d0aec723ca7d63", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4a8daae73ff52d016d529efb7e32df4073c5426def3a790806c0438c4ce67c92", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9aa47aaaecbfb76f29abec5a89a746af3e54b2bbb8621544492757d3e28b9f0f", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "d52a8fcfe810c2b15a83ae9a1a4e82310a38768daa9a4612e693caad09328b23", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "33c17d161982e254eb831ad5659ebb9f8aa2478ffa7d6cd4025dbc0e8773d4fd", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "7f32fe7e694ad2112b1cdbd0f0704660dc1050a6bf67c6f01650d8d002115363", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3171aae7e67c53d2d82db5bb5b7b5f369c9873b6acf97b83e4aa03b4452f1279", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "ebbaf18cd0de3c80f7a8a3111870a7835fdb84377c5f5814ebf62bb54c254cfd", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ed7fbb11d4ef801c17550f7167b85a059a827ba2e9f743dc7be4737ee5ed680", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "357db16be36a5a0ed19dd981b084f46d1bd874db05f2622dc5ea06237ae7490a", "T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a41c082f40c0cf424064179da18c8a28c25aea8da7aa8d97b49397b33a72fa03", "T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "24f8115deb03abf6624975d228cde64253d5f6a822f216e1671ed28c45d12221", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "03c67a21b9c0e19b7da02d4cbf7f380a2a411215abd9004d0ce9e3062e2437a3", @@ -10851,11 +10851,11 @@ "T2T1_de_test_basic.py::test_ping": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_busy_state.py::test_busy_expiry": "d00c19e4be337da53afb665aa2c38784a51a91989ba65bb77aaadc8605994395", "T2T1_de_test_busy_state.py::test_busy_state": "2e3c5140f572097a5abf9134ec2324f1d0fcafb91a73bf754672db1868a004d1", -"T2T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T2T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T2T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T2T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T2T1_de_test_cancel.py::test_cancel_on_paginated": "1aaaa6973bbea8cdf9378cd8b9abe61c3339039b5f5481735e0c5c4f3fa92e91", +"T2T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", +"T2T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f74eaf21eeb33f4926152e82f47d0c9bc62e5e6002aecb6da2f3ebd126b1f31", +"T2T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", +"T2T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "0f74eaf21eeb33f4926152e82f47d0c9bc62e5e6002aecb6da2f3ebd126b1f31", +"T2T1_de_test_cancel.py::test_cancel_on_paginated": "581f308ac81b24a6380967324898b9691c030661ffdd706d8159649bf0b2e557", "T2T1_de_test_debuglink.py::test_softlock_instability": "b1f71b2ccea57e0375d465b3c0bc5a4fbcfab66ce4eb9701fa91fc4808e1359d", "T2T1_de_test_firmware_hash.py::test_firmware_hash_emu": "5f74c8e2421c3e3af6f8c3fed431fe795b8a8db7b83a95a5d48ef779df916363", "T2T1_de_test_firmware_hash.py::test_firmware_hash_hw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -10907,7 +10907,7 @@ "T2T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "fc90ebd4d7a642a0a09596c52b690a9e867245fe475f1f2ec1b404776b24d3a9", "T2T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "294aca06fb27eccda67897470412979142bde2e7bf363f19035c20c31277e486", "T2T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "236fd39a8761eb753a8ba6bb411c3ea596ca0578443bbaf7d73af3c779200c3e", -"T2T1_de_test_msg_changepin_t2.py::test_change_failed": "101e76a2de2aca0e1cb8f47b79a226624fa45c092c5ba40f52dc564d59b7c025", +"T2T1_de_test_msg_changepin_t2.py::test_change_failed": "21d332ede2903b750cc7c3ad3164e1fce27765e9da37eb7261b5ffd856213035", "T2T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "291d3fa301b49446735db5c367d1e4d561b53783eaf312037b24488458ff65dd", "T2T1_de_test_msg_changepin_t2.py::test_change_pin": "546c92a1ae7c89c2ded37d4b1e111cd62924580340db46ff269608c8ea88e1c4", "T2T1_de_test_msg_changepin_t2.py::test_remove_pin": "cd257f3a7c48f0d4f550cbddef61a46401a1cd706dc788cdb56b574247bf0585", @@ -12117,9 +12117,9 @@ "T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9d161076574c957b3708ec34771026a970b1ad90ac7bbf5b1492ded0de1f5ba4", "T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", "T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7d0f0cac581360c5a8b64e229171f0c6a92972adff3c3ed334c483076021a041", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "2561ac9a4a209c181d8cf35579db0fa36f752cb628067d59d3456d64f82f93cc", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "980c374bd173485c06ffc3ad2f3874762ef065762ce063440791383f1bb01b08", "T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "2c4f3600b0f26c4da64add476618ce5bb9d759d914afe89c5a75eec3cd7ebeac", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b86d2d1c561fac4055ed1c437bcdd69d2dd7f43553af6bb5630259430983f55a", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "a1ad9e10356bd6223b37949538fbb560a4487aa9463d19a9001ad35c4834d8fd", "T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9271c61c3740658029b0fe3b375377233aaad70a97d929d984f6b1a16b3c1ef7", "T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c0886a9bef6b448d193ddf032c14b614069c5f742aacdfab0d4d21c53a5dd331", "T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4f90f47e88cca3af88975a817baa01937b21647c19d7799acea6795309bba28b", @@ -12129,16 +12129,16 @@ "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "73de5bb9f1528b81396ebfd321df67f773f925d6cbd7e616a58ce30eaea27ef0", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "59786fd2798a68e0546515ccd7ec0d7e4c3276098545615850911899953681e1", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bcab24b36d8ac28c76f6ebcf54f416024d3b32ef03862234a88d9128d1e16548", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "703ed967f59738cf2a41aa6780656d1a8c77ab3c2cc558820981421a9e6475df", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "12ea0985454ab09cbec3d1f9e4246f0e6c098cc8ea69774ea253a473065e6938", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "66c45751002ae4d84e0ffb3a80349585604b5f19f87d08368e806ff0ac0d6cd5", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7d6b8c0008568f8a9fac9e6bb543b3b60845eb6aa5cc715efc5ed75f95aa27cb", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b5d6d520a1fa9d7c8e1d074dbb9646c62f0f5ff8c4fc192f5547b671d6bf7913", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "443ab1ba8f9bc006865e978418b4ccdf931f88ad5c13397467cfc01ed3b3e406", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7a6eda20f828b170eaf90a58813a5569ae7af9d0f49e41c4d84227e64107733c", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "a16d8e9838b762534c0a2d8c82c277ba81e49f018506dc26624a4a0d8cce97c6", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c8f48570ea01b8046ac1deb84f3a12d1b02718ef28fcb47402e9f98745769d3e", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d31779beb275065c26d2ad3fab64682b4c55c9c0bee2e2ddab6c607762d1e551", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "35b9bc382e6e0c8778be8456f7dda77ea693ed5e8bc1168213c9ca5b1b1d5720", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f9e8df5075762c89e5f9eacc171ecb1592c9e905ee87d07066f8d2863f7c8598", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "041e5ffdafb2812db3c37a6bcd89f50fb1906563aecffd95dbc02bceb8084172", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4b32bef901796d64fe03b215688da4af7c24d013b67ecd5b0d561043fa47dc44", "T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "5f3413af77cc76413fe1ec3e00e17850f8de504499b5bf9d753ed4d9351931e5", "T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2b866e19489d98b9924398080478e2126fe9769b057ea725e7ba795584adb1ad", "T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e5468c5e24463f2e7f0bd7eec981bb7e942cce7dbadcdbd7c5cf3bd1df229a4f", @@ -12318,11 +12318,11 @@ "T2T1_en_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_busy_state.py::test_busy_expiry": "6509e7c943f2d09e3a5a7c69faee74c75b321ed1614d881d1ebdb57693c7f69a", "T2T1_en_test_busy_state.py::test_busy_state": "13fce27fd795f6f622614fde678ba3f717129a27ecc6d0c2cbd389ede4a2798f", -"T2T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T2T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T2T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T2T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T2T1_en_test_cancel.py::test_cancel_on_paginated": "498ffee2ea02e2783466cbb993f0cd83eedd3b67afde37b5d1f713fc996c1455", +"T2T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T2T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "3ed24b99952d25fcf0d9bd6d307c576862fe870ddb98288fa89b227f0e192073", +"T2T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T2T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "3ed24b99952d25fcf0d9bd6d307c576862fe870ddb98288fa89b227f0e192073", +"T2T1_en_test_cancel.py::test_cancel_on_paginated": "5c198919403dab5ba394a87544aaa95bdafe82959fbabdbe918c81e2d226b051", "T2T1_en_test_debuglink.py::test_softlock_instability": "55cb4cbeec68bd8ccee460034677cf8053f8f688d5c3559f360c38a205b34e37", "T2T1_en_test_firmware_hash.py::test_firmware_hash_emu": "2a63f0bd10ba99e223f571482d4af635653bb8a3bddc1d8400777ee5519bc605", "T2T1_en_test_firmware_hash.py::test_firmware_hash_hw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", @@ -12374,7 +12374,7 @@ "T2T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "db9ffa189464d1c0ba7d3ea2533306e25e6895355083066c2b6f9b19efb54406", "T2T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "96a18ef7ba92b18fd9d6d3856f737e8b1418df79221d6750723109c90b2d5807", "T2T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "f478a15ed2dfde070953b1f14c6054452b0ac27ef8ab5cf9c1ea233a43676a32", -"T2T1_en_test_msg_changepin_t2.py::test_change_failed": "1526ada2ec21dc5219ac42698a1d6a9314b11f79adf37465d226ffb37b603124", +"T2T1_en_test_msg_changepin_t2.py::test_change_failed": "72e36642bd0b8832bec9e3b171da5a7fe5e2a1b44282c521a69d4fc0b5254828", "T2T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "e9925836465ef35c3d5364e90780626274a92a1123451b572b9ea11a9cd2180a", "T2T1_en_test_msg_changepin_t2.py::test_change_pin": "256483cab21191ee110281e9f547c3fa08968f4d49fa38896f8141f5b8eb4701", "T2T1_en_test_msg_changepin_t2.py::test_remove_pin": "6a606987a97b9d50d991288f1222adf2c819846076b2014e91909c9907a0e427", @@ -13602,9 +13602,9 @@ "T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f924ac5735b5d1c42ff10bb5d74ca08b22468a4d8dd1d6b9fbe7a191d5272c76", "T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "aeb20740f1aed49544823071d0fb58e942aa39ecea8dee58f4ccd872801ce798", "T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7a010cdd6866e367b0c0790d7ab31e0705a81dbe3c49b5b679d895fb5a97e4fb", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ee3da185b3b56bf08a4742e4bec131ed82b61db1a45070f2c74dbfe13df43978", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "2c6502d7676bfb4f7b0cb3e93be9fd11bfa655a7115a5e1bb712eacbee0cc6f7", "T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8f1970fc42bbffbd429bed2d6ed19b2df86f82264db6711e043d493d2c893d00", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "39accd1ed5c5575cfd9603eef34926c524c6dabd6f2aa4a7f9927609b4800ac2", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "cae7cb874a05c6f12958687e45bcc7f8009a5d98aa757e0aa266aaf521e9fef5", "T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "1b0d315dcce62c807d740072da246ef399eb4c031ca06a20be9b43c0efb8b619", "T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4783ef6eb4517eb96c57295ef5a7cf0faa7e8ccc344cafbe16b68af12dbea83f", "T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "859c80626b65a088763d6c29d0200c35c65e6e24da9dd7173f2c251efb8a5699", @@ -13614,16 +13614,16 @@ "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "dc511287d381e40164fb32fe409906f4042e17367ba35c7d282e281707639e30", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "aeb20740f1aed49544823071d0fb58e942aa39ecea8dee58f4ccd872801ce798", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "02de62b333ee9f4f510977e95385a06c97dc66e4d700458dc8b73c16dbf80306", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "dbea283e09e907b3f8405ff71de5b828b67be49e478a73a7f97700176ed62371", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "75082ea23878210f06b2782e3e241886df201e688b54b74f55ece47cb9a5cdf0", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0e8e437276ab32efc4d3c961ec4f3e1ba8ba4e03eec5d640b52a38822d037df7", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a6d9c431ee736c40d7600e824321077794e207d7088b713f96ebca875e9a8f38", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ef5542a30ed086d193a3bb2ef3025c1190e3f7372216e2c70a8464a4066194ea", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "1a41ba9855f21bcad666b9e6e7077aee2cc770edb38b2d632a0210d5611b2c2e", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f638a59f17d88b973dd0ac432ed78e3d411fe4a56229ac29c845e019bef5de16", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "cc18812d2f5b7ef5c23555ebcad59a28e82c01d06f2c5907b952156c44045ff2", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "0a8fd0daaa315189ef7e063736fdf0301bd4ddb36ec31e2250a4f66408b1dc7c", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c43145b81703108d19c39a9043136c7eb94c62ede3668890a226ed5a87ba709a", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3224baf58710455f51d287069bd69865436b16182aa9d6ee9e5f6ea4e502567c", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "985a80b7cc665ddb740fd8b49fc21fff87c06a3cd42d297d9f72d41771f98bc4", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "2495dc14e3f0175f3b9c6850455dc12523a65ceaa76022ba7502a6dbd4e4f60d", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "105c981ef63c444c26e4280340e476a29ebee11015c079ec31ec3960229c154a", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5ade258d2f37bc47b0ce25f1478e669743e7d500a6e00f6d65b82c0367fb78c9", "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d405d791a687be77da11e1c7b37eb49feaa5dd74b5746fac42c5916385c8b63a", "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "611d56d305fa5d605b191b866822428e99ab605e7634190e70d60070ed8f3195", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d224c8e21874c5a238a21cab83dc0b7ea8cf6b02f05df42b6a4cb2f3f380deb7", @@ -13803,11 +13803,11 @@ "T2T1_es_test_basic.py::test_ping": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_busy_state.py::test_busy_expiry": "da280d408675fbdbaddefe467ce32f0fbd64726f8935dc5d49b9d2fe969f7585", "T2T1_es_test_busy_state.py::test_busy_state": "1f9f7512198e2a8b471738fb5192fd39dac29f0ae800a128a586a79ef5f57ebb", -"T2T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T2T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T2T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T2T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T2T1_es_test_cancel.py::test_cancel_on_paginated": "e7867645a35ee40b80f8a3eeaa122571367a3d3a1f850f89f5f7b14ce28522d7", +"T2T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", +"T2T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", +"T2T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", +"T2T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", +"T2T1_es_test_cancel.py::test_cancel_on_paginated": "d842630d249b84c0582c95187ad93a13bdd42c7320407a1ed552920b281f6f9a", "T2T1_es_test_debuglink.py::test_softlock_instability": "073cd4ce53bde3d39a8ba0cf1cb0faeead2ab1b3b4d666c7c60aab1e813c1dd1", "T2T1_es_test_firmware_hash.py::test_firmware_hash_emu": "6f9a2eb356b7054881d6b60116f6f54e4884835b3b3881c151ba6ab5f32f8560", "T2T1_es_test_firmware_hash.py::test_firmware_hash_hw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -13859,7 +13859,7 @@ "T2T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9bc3b09fc66b9faa15ec07cfb47ad6dc10e6965833822e9ddbeb56fe55f546e8", "T2T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "6b9bce5a9ffc79f57f0d9f2856c65c708a0f82ddc6ffbfa84b6746421788a00d", "T2T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0a483f3f2c218e4141ab45e93074c062e81cdded4c27ff54d52a4d02b037670b", -"T2T1_es_test_msg_changepin_t2.py::test_change_failed": "b1e04819151d46cb2dfd1e32aaf1f6cc593fd9a422f2a93d1c18ffbde05a191c", +"T2T1_es_test_msg_changepin_t2.py::test_change_failed": "b9f80c0be3b257a0c53a16815c27ae6f3a2ba1e9ef5f7ad296c9c228acd524d9", "T2T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "8631c5489ab6371809d83c57763a62356fc8d6e392bda073f78c0e4a623af491", "T2T1_es_test_msg_changepin_t2.py::test_change_pin": "b904e3b1e59a41b45a3b7b8de590e4d848c7225c7a9aeef3d35839f29671bc60", "T2T1_es_test_msg_changepin_t2.py::test_remove_pin": "a7627e527f283d7a42caed5ca29b3271120cff3daf755d877d19e000745a6b02", @@ -15069,9 +15069,9 @@ "T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "974d8435badcf1dd4cec0c9df6fffacc46336b769641e752e6f6f449a46773f7", "T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4d0ebbf93a6212f2a655ccb2707e8da7e8798d6e95e5786810d6484f98bd5aad", "T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "fc9a5ac9b017e3b3b52c7c407d880c3d78842da4a103afa55842c09eaad1c52b", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "617d68b91757d66a187d4171792ccbe32b75a46275d9aac439d84e88c01e3fdc", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b78289d8e69db34f4590d209534ff7537566adedeba3ee4958c278a82e09f15c", "T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "294ebf84ed042c3614cb4d440ed2c219ec176c8235154070c727daee69caed7b", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "15a367a52163e65271307a7b106306bdcc35334d5b95723e1a5ae621c2beba52", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "32857469ef5cf8cf3cc347736b2f0265c0683adbce86cbf22e46b14866e0b565", "T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "8d614efdd82ac142fdbe0736c5a374bcc12cb7b1545f78f40fdddfeb132da7c9", "T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "99ebcfb43037d4c901d40f6b22cdad95ac8ca3d7c0b43cd281691244ef197567", "T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "d5b21612ac87850a91b28c8a1f07fd7dc7f4142990bf9868126473a088a80e96", @@ -15081,16 +15081,16 @@ "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e31f44d338bd64d8a3d8d8db82d0403b2d3314a999ce0b172c044ad1ec0890f1", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4d0ebbf93a6212f2a655ccb2707e8da7e8798d6e95e5786810d6484f98bd5aad", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "ec024a426936d65d84d7198ff2bf44a8ffa1f24e60afc00ebc0ca090937d56d6", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4707f43e73d9d5537a8a16d3a83b3fb274c10e74fbc0d9025b445e7b89efdadf", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e80d8bfe48bb0f2a025664197e0b8273e93977950b9e24bab3ecbcad11e2aa75", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "142b8458dba27108711b54b500d399a8f6b186d277e5c0704d82219fb70b76c9", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1261f7b79a1cb4a110f50cb00cae5cdc590768989b69c98b542386ead92de8c6", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "cc8d63461af6e282b7fc4afcd6e418ce487cba3cf95c4b1eb9990cec648c61c8", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2f251ec4904901641728864098844c56c3efe1e868f2f92903915ac162e3ce8f", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2618492c26098f91ea57e82feb5850d076fa707e7b0c195bb7a5760b1c47e8e3", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "1cd921e884adbf2453e120ceae4bb61ccbd5fcfc3280eb1576e88786e006e0e2", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "4618d385c51aed62a5edfa7063f61d4c5e1a2d9f4422658f2d3471b293b88d4e", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f074b5739f3bec0e444926534fbb6be4f1269d5567e2ea6ec4a7d29315a3da8d", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ec1610029c2085be5d2f59f55873d3104bbcdf719cbe90b99ab91098424d2a7b", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a6370ff212817bdf354d6b12c9bd4ea9da883c5f1b28bf746d2b7745f81ace0b", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "42a66f1495a3ebeb3134c3be93ed6f4bfe8c4f9315522302192aeebe1a853edd", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "4452014cfbf7501ebadbb7d6c0954a67e9fb0d00e2ad2f9dcddbea8daf46d6fd", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b3a5868738d31a49d3ad3a97dc5145c9f0e0cef977bb895730d981155fe758af", "T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "461178dd45fc130048749dd679ae202547e64c3311e07ff9ea27a593c7cbe51d", "T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6904de14224eb55d657747ccbc0b73a093406d2910665c69dbfc65df949b1d3a", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e18f67ec58ea71bbd9d8dbc83a36846b5ef494cf4653e64b93c6f858a1834dd8", @@ -15270,11 +15270,11 @@ "T2T1_fr_test_basic.py::test_ping": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_busy_state.py::test_busy_expiry": "0b142663642a8981e8fb85cf0eda771d72c9d2206cd224d170b588f32da4d8cd", "T2T1_fr_test_busy_state.py::test_busy_state": "315b1d0679a565a8a65804592914e4e8ffb3010d73795e0164b327d1776d5dda", -"T2T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T2T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T2T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T2T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T2T1_fr_test_cancel.py::test_cancel_on_paginated": "3547888bf963a9e458d362f218df5770e81b53ad850c462f98c00ea772ab42dd", +"T2T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", +"T2T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "722d1df17cd5650880e8a634038c1f582229258661a26ee307a9a8d8737dc178", +"T2T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", +"T2T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "722d1df17cd5650880e8a634038c1f582229258661a26ee307a9a8d8737dc178", +"T2T1_fr_test_cancel.py::test_cancel_on_paginated": "33d4d29b50e577aa96fdbdac167a6bd9f50351fa6cf3e1367291596051f74146", "T2T1_fr_test_debuglink.py::test_softlock_instability": "8788c9a37a7e20aa1fcecdb0c8b781b9146868a5d89223f90613a4a5d5fbb22f", "T2T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "a1d024203379022355feb1ecbe72d16ded27a7060cba89469b82d14e84d8eabc", "T2T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -15326,7 +15326,7 @@ "T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e5fa81d7e17a26c8906151ccfee94221ae7be518cb3d34565a64d5e3bd89d184", "T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c7c79c893280efdcfa43925b3e559eb5e00bc7615817ecc08920bb60f0096b6c", "T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "fd8da1b96ce39c633caac4c7bc48165bd3b8f07bc06d311deeaf050666635bd7", -"T2T1_fr_test_msg_changepin_t2.py::test_change_failed": "124e530e51e0f35f68a11cea194515f4947947a8fd094353644186c531547042", +"T2T1_fr_test_msg_changepin_t2.py::test_change_failed": "89f34ff69cde4cbe1322313ce004575fa1c58d4fc2898421887ece256984dee9", "T2T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "018f43d9235fa8e37ed0c7dc6251d9eb1eba2e219f2b2f4fc28c55338913303b", "T2T1_fr_test_msg_changepin_t2.py::test_change_pin": "610f987ce40ceb7c7ab6d5c4dbaf22518b33219118baf2bd161343324d93c0a9", "T2T1_fr_test_msg_changepin_t2.py::test_remove_pin": "1bda09d5cd9f99f25778f3e104356a895f33b3b98990c508f89ee213afcf90a2", @@ -16732,9 +16732,9 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "3c6ac4165c200aff2e4100493b1f61f07666bee1980296efc4dff745dee45075", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1e590c419465f8e57df6e0f9e85bda9d71751da84497a68958c046dcc6270ab1", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "eb334c59e145d62a9f68d251d0b8ab52dbda32d3768bf4fe79f0e73fd5e21abe", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "15bd361e29b05f96f88dec6f987d38c798cb6093536fa0018553b4e65915c72b", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d4a17de10a15cb113a0fe80fcff712bf4155cef906529d1b45cfedeae21a1209", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "537c0de7f1b15b90c20daac7eb952ac75c25eda0522d1e084a27207bc9b51cfe", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7b8ae474e0b552e733aaf7212fff42ab04f1a40a90bd4a24d2e6ec0339c95781", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "dbf54ffb031915f5daf4314715535eec3077c057504c894f6171b741059fbb03", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "da2e9ef780a1838e3c4605c4928ae780eadc6a3d712be1fed620eda22349aa5a", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "62090cd2fbb8fa4439cf115749a6093849ce984bda63a8fc4cfa6523ff90cd11", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f6f2893420b12f51159c6343d2e12aa561eb07cdd2af554e4e6b2a72253abc19", @@ -16744,16 +16744,16 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3c2bcdaf8606bac2d56748fd6944ac4cdc38542fa8c1c84268910ff09b24a26e", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1e590c419465f8e57df6e0f9e85bda9d71751da84497a68958c046dcc6270ab1", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0af7a7a73de53629bf1ed8ed77f34a1c0010a15310c8a3081ee89fb6d6c2c4a0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a8e6d613fb0085004901775bb95071b472b719f1669e69341c1f4dca7c49631c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "f07044323bdc4eb3e297fff70814493f63071f701fb95e949bdd9466b9eb2514", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d3687f2ad206424a8824c026cc23b8c2efcc207cf5666a83b10b447828aa0f32", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "666a315e37b89fd2d614e579b9dbae14e32c39359ab1790450345f0d32c89f8d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "14b116ab0973cee00da7f207cd041cab67012d2fa902ae457d44737976a6fc10", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "feb1871fa09e7a12a1586669b056276f3a259d190fa4bdc396f4ba26fa07d851", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "20bd63e82f4a56754df3ee96dc5571a81295f41ab067b35be9a965baf9594e3e", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4ef4f4b9fac2056860fd5253317b41ec99b729e1be892b249690efc1d31f305d", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9f116fe69f56453062534cde498c32debfab02d82ff685cf497777aeb536d747", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3d31b330afcec7290165371e4946b5cd239eb36674927535f065d724eaf4bcdb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "236a020544ecd081cb8854d5e02ffb74b0961bb33f13c8eeab0b1fb323b7c0bb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0b587dfaedf22a648a277a6a4569a0aea575c2f81b92dc5d1c636c8e112d3ca2", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "39e016c5a3d17f3cad668e6d4c7ead2cbd7db3f322f3a8eab3ddd10d0030c0e6", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "45b27f60f4d25f70bf7113af1eec6fe214f5fe5a2bb9a8279da4111209d72ee1", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a78f85f7055be2063d01ec475356e0e7c3d9c4985fd302e42236eb03c88ca953", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e30344a76f7988bc928b86abafdb032b78a48607ef16cffc66d58473a7c8a13", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1e7110cdc5c51a73279fccfff529d9c905203299f9de5d834aba262e5f0194a5", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "443583bdf27b893b6dd4b56bd5ed31f66a33e11d622a8ef2013c6e36f9b4f39a", @@ -16933,11 +16933,11 @@ "T3T1_cs_test_basic.py::test_ping": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T3T1_cs_test_busy_state.py::test_busy_expiry": "5807370e36255f64722c9b70002daad3b718387eaa41102561ec6a0dcbeed20a", "T3T1_cs_test_busy_state.py::test_busy_state": "9a846017e3ac79ae304490124caaf70eef76b60d0372c48e3cb8cfc2b334b2b0", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "b51e0d1d0e72a525724163cceef0426977dd3bb36bc0df5a0d96979cd0ebd011", -"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "59a00b375bf2e60cc0e624626aaf4b651cc24200be29e41e912fbc9358f7168e", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "2e607dedaaff54ba045743b6cf77f83eb81608d7e5ab22c3aaadbc13bfba9cb1", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "2e607dedaaff54ba045743b6cf77f83eb81608d7e5ab22c3aaadbc13bfba9cb1", +"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "19cd5133ca91858fe667cdb4cd38de92ab01eba5a232eff23ba6591f59e7f26d", "T3T1_cs_test_debuglink.py::test_softlock_instability": "c6d1589a2a6f53a752806e4aa4e2b03f68685ca7213c5dd4af5c82eafa6d014a", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "bf3b0b0bfc905aa8b9cb991baffb7c523f4f185f0a6531081c2e09fee5964108", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -16989,7 +16989,7 @@ "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "8f7a0b93fd9602605aaaaca55b409468e09715f425611bfd98519eee9f059e38", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c1febab3a5f19fb7f5d52a7f8aa0b61ec00bcbbd21e8fd4df641ef7f7e737826", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0151cccb0237921183ac7036f9ba711f0beaae379191bb2bc64b9830f3f971e0", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "76ec57af41088bd292ff93475169dd125c1992da8a1bcb29625d13bd088f960c", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "b0e1f29128f59d355bee664cad0eb02fcae4bfef3cf06d5196fb316af89bd858", "T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "21248c1c66a4ff82086d023306e0ff4968841a9264f600190a32dfdc046bcafe", "T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "49d87a7062641b69719b84a1e5c18dd444f231a1796bca763317daffb921c25d", "T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "98f5e95a8394a34a221a92b62d00fffd7d4c47c6252bca1c3f2d1f426e3a97c5", @@ -18139,9 +18139,9 @@ "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bedfc358a7a465f6eb9bc6366623b85eeeec83ccda92af2495041b25d4b78115", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "696ace0f4b428b30472057e2ad641519a3750781777f4820c970fe502cd9f77d", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7f4161c22319a1a29f96da0f44e4e4686fbecab5c905894ddd940fd4874a0ce1", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e218f9ce906f50e3addbc8bdb01bfbbefdb42b0e023c57031a2b5902d8b5fb61", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "5f90813b92b3aece66d008454c6f516fc278b500d54281a1c33b51be0eaa82cf", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "91f03f4ec9c34a0278ca8aade6287a10ca8460ef9c41240d89ef39b5fad29b17", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4befb3acfff8dca6c4a95de63a7ddab93065de9c4823ba1ff640aa8799088431", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0725e1dec4ed68391b8a6b2ee6a24b715c4e4eb54d3b43cb655858b092be096d", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f9f199713e65ddd3c0de87c38c6200feeb437bb621e7b9cd2dffb426fe08a919", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8ad558621d0da6618b8fef7b84622fbe5002d9ac293592eb4274d65f12a40828", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f689f408d545a39929e410a9a80c2fefaed8d3016b4981ba6b11e512b4e1b52d", @@ -18151,16 +18151,16 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2a2785d202cf020f0aa5e62840146377d16ebe336811cd2f7b0af64456536b2e", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "696ace0f4b428b30472057e2ad641519a3750781777f4820c970fe502cd9f77d", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "97d02aaf682c6c7de7032b4636dfe88b3811be15e19b00c282ad0e795b996afb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "84adc6852f32637d784d3b6659a5478bfcaf46c384128f478b0b67d02a94fc23", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "abc8b384279bf2a7352d692b9854d1335212f3f31a98bc0da817d2340eec00ef", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7dca8aee178b0f410cf37e9fa09ffeeb93b01ffc238d286d564cbc98c9a2517e", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "11a3ac4ed9f8b9ecf389f673e0007dec579099b5b1a297dedbc0c9a5bd766fca", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "009e13b39f0b8a858b3ee9f597d626b7e5773713a7431d5c97a6d525ca6744c5", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2bc4583abf984773ab36dd000a75aa446430d7aaa6d596867946e841d38e7d2e", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d86ed6bc3c866c8259173961ef12a981138d865de4ce9b9ac70854b158ba9981", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "c4775909de03bb73ada542a4ff4938eabbc479068f95a22a76547f3cae7cf615", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9482b15d527ee4c850c3edc14eadf42284e5db401f3ee42855624383761c425e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e1fbbf789f5daca5f4bf5f8c44c25b32cfa324c40e19746177808f075279bd61", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ed90c16baf66e6665f1dda17265c72c3cbdd772bb7571bfc90a60a578a8d85f4", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3b565b07969ae6804beb55ad8179b2d84b99831a82ffd238b0be53b40615c25e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "053a693f265775f7c7228b8d05ccaab4ab3b962f5b38749add483d3870e1be28", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "aa471a5ab69cb05d4b1d37a9cde66455040ec98a40bb592ecf7723186629dd59", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d12de58352a65e7132fbcbdb588509d14952a05702d6873d0461935f4fe00b9c", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8f11d9988ab51214ab59e3ecdea10bf810259b69f3e5c6774d6af3a8266af3e8", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7edd741620c6d5c96e7229e11d215ff1114630b64b814c022467c6c0a72fe740", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "adda197012484eeba7d8a6379ced43ecbae120f985f2d4f347b4ad4afb05d6ef", @@ -18340,11 +18340,11 @@ "T3T1_de_test_basic.py::test_ping": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T3T1_de_test_busy_state.py::test_busy_expiry": "d00c19e4be337da53afb665aa2c38784a51a91989ba65bb77aaadc8605994395", "T3T1_de_test_busy_state.py::test_busy_state": "f305a101d05f33d6f0fa3d4e002fcc37a569bb3e89690dc74ad058899085aedf", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "c07eceb7d7f8ecd914ceac903e30121d3a8d2a4a8e1b3597852188b9e393495e", -"T3T1_de_test_cancel.py::test_cancel_on_paginated": "1aaaa6973bbea8cdf9378cd8b9abe61c3339039b5f5481735e0c5c4f3fa92e91", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f74eaf21eeb33f4926152e82f47d0c9bc62e5e6002aecb6da2f3ebd126b1f31", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "0f74eaf21eeb33f4926152e82f47d0c9bc62e5e6002aecb6da2f3ebd126b1f31", +"T3T1_de_test_cancel.py::test_cancel_on_paginated": "581f308ac81b24a6380967324898b9691c030661ffdd706d8159649bf0b2e557", "T3T1_de_test_debuglink.py::test_softlock_instability": "f533b6840f7f5b94c5baf11d12ae6b2e04a68efb292a67f8a7307f23366758d6", "T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "5f74c8e2421c3e3af6f8c3fed431fe795b8a8db7b83a95a5d48ef779df916363", "T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -18396,7 +18396,7 @@ "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "f21c1007eaea59c50a6cb7c63c6f4b4db6c6f211b78b4c5bda8f336ba1bcfb67", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a10ab0a73f43177fe38832332963d3966f52f0e42059df190aa6ca8e6453faff", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e64a6ddd81183c32612970a8f9526e013a7d53136cf61732714991bda7be054a", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "6bd169a4c415d9cc065dff40e3177e90a10a74e7dbc4e7d72a600aad736708c2", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "9ccf32e673ca1a85b5cee9c589b24df6b7792144e0c0936840d5945510a329c6", "T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "1ade4c776ac6f77b5226d92249521185465184f6329825353e34b03ecdf178a4", "T3T1_de_test_msg_changepin_t2.py::test_change_pin": "2639b62eb8538e260aef167bad24e84209958952517d093f2e3d5e602e166d46", "T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "9e389b85510bdfce0b71dc8c0beda8ead9107360b430d241de1b76835d147618", @@ -19546,9 +19546,9 @@ "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "6a57b810b4be43a92d396dfc3d605c211b6f1aa6787dc46d1187ab9ea1733798", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4e265c664333863752796376367463d27e0bd27cec4b769c10d008f043f4952d", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "42eb8eedc199d864ea39e8dbd22ef1e9e2160e6a82967e73860210bedc7365b8", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "629658dc4feb14309037583c186a7e3bb97b3c39adb33cd66a731c85be6ea913", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "812f9e504c5dec3e077d86596c11966eb0e7278ce85e809a3a2871e9933e667f", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "cb0a3043c74558979bf602a5b2333af7e87aadb789e78ad7fcd85e2ea2f90ea9", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb62f4781906e3c9cb856c19203018554af912ca5fb75192d6d2551a6385246c", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb7a9389d4873ae48773caaee6406ff570e5f15676767391384e422e8275034c", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "0807d127aaa86576c6bf3bd1de2b81931ee6e266e99f04b7c628752c69df7c72", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b6ae624dacb8f665e4f03484486dc6b79fc8f5257ae49e91e62b656575486066", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4e24347e5228591d498da9357d57d5a01b5445d0943c21c8512505b5652406db", @@ -19558,16 +19558,16 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "19838c4a131f4d62c7dd2443562f2b8f29f94f74253b2e4edeb96ef2e5d6501d", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4e265c664333863752796376367463d27e0bd27cec4b769c10d008f043f4952d", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3b546816ab0eabecfa5362ce145c0d98348dfc524a70005f38ea0fb586d7e008", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "b49ed8c62af3d83fb3826f84bdfda00621b9030856b385951cc5238c59d9a7d0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "971db3604d75697f6112cb359804a9d372a080e6085c3321d5207ba420832c6b", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0aee3f3ac01e30b4a56e2053d8e2a6f434bd672c6a07f4434c57826e55e9d555", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1d2a0ec3ca058c2c52f9b093b42976ba377bb634fb3483766003ad561f34c89c", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "e31d8c1996f0bc22f64c6b45f79ce6c653fad3e28f210d7dff118adde1e28d6b", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "3eb4d5b1f25458ccf003fa726efcc5be3882e04c90d67ed4266fe257e5ac5cac", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "1d93919e23c2053dafe725495349ef934afd54cae89555614c7d3d169edac8d6", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fb3a81295319b448ce4d8540767432317cb82100538cba3161d5b65b3b1e158e", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "13d1bf36c203d6d3652becdc4b4f27207ed910db99f29c0b0ad3aac8c9d3aeee", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "1ccebb6bdbd12ec5e9efca2202f20ebfd9696306ce6646598c3f3440f339ebfa", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5e13b86617820a9ff1b5a9ac5d21092743f6c89bb523e9f17e4f88ba1e91da08", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "21558d4237f3e390b757cd01bf68ec7b00734803e8ca7237410db4bd12985924", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "d7b20289cbdf4a283f956638088899542d4232b40cf840c209454b3e11d23320", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9593b38f658c9e26deaf140e020ef7f52febee75958193a9b0bf25a4e896ff5c", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "912ef70c6dee6d43d75302faaffaf6953066e79ded2d41ad0c9523d1ec2a1a1f", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28398ee2bfc0e8774613a51155d78039657531b4a34209c457bf364c11e7a13d", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7a2afcb4d00fab2004cdec95f2bc3d6c5a37c2f2e9b1749982b1571b265b51a2", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "64626ac12c65af4f17b3654ea2cb3fd487ccf62855792c5a7cf43709996024b7", @@ -19747,11 +19747,11 @@ "T3T1_en_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T3T1_en_test_busy_state.py::test_busy_expiry": "6509e7c943f2d09e3a5a7c69faee74c75b321ed1614d881d1ebdb57693c7f69a", "T3T1_en_test_busy_state.py::test_busy_state": "738e905dfe55634972474416817c53f0a22a9ebec487d9046be867ab3f2576dd", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "1bd3157d54327e33542f89dcac6c7cd23808f7c9aa1b0adb390e5fcc1fd858a5", -"T3T1_en_test_cancel.py::test_cancel_on_paginated": "498ffee2ea02e2783466cbb993f0cd83eedd3b67afde37b5d1f713fc996c1455", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "3ed24b99952d25fcf0d9bd6d307c576862fe870ddb98288fa89b227f0e192073", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "3ed24b99952d25fcf0d9bd6d307c576862fe870ddb98288fa89b227f0e192073", +"T3T1_en_test_cancel.py::test_cancel_on_paginated": "5c198919403dab5ba394a87544aaa95bdafe82959fbabdbe918c81e2d226b051", "T3T1_en_test_debuglink.py::test_softlock_instability": "3609018ae27ce0ab9eb091384029089ad01bb097d80d9afceb7341548b935ecb", "T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "2a63f0bd10ba99e223f571482d4af635653bb8a3bddc1d8400777ee5519bc605", "T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", @@ -19803,7 +19803,7 @@ "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9c861a52adb748eb9ced78260726583889dabf286377b030031471b18c4fade9", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "6e974727f6611b6d20f08fb0e3394b9457545bfef0d9c60c86655003a3fde410", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ac44babb407ef9d30cc1301b9a1a7c02c92e3ff2f555f4b21909814636cfe1f7", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "5fc1a4fa6b5074dfdf76cb081c35555fd432c62237fc77179ba49595779406d2", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "342a87f544728c242efb04e8c0e1f97ba1c55cf52299018a1928056fc37fe5ad", "T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "7d4521ca4be8f334a262f3bfe4b3d2eb38ba13f55a4adf75c1d6a97c04fc0090", "T3T1_en_test_msg_changepin_t2.py::test_change_pin": "cfe12091650149ae4310c39903c67725e9983c50ae33727add8cf5476c4ad266", "T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "2ec521e63d280bd2a551b3cd01c01d58ac79cd59d14c1c6bd7a04c3040ac715c", @@ -20953,9 +20953,9 @@ "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f63d0dd2f531b73b30882b719af8f1ab7a73a2cd1cc4e2d266a7b7c44835582b", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0b5ee74ba3c3fb18fff92165224915df64758dcba5328c34ec45dfe83a17b2bf", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "09ebd80dcc9d7a83ae61aba89cd6d765a49d695354eaa8de10176bb38c25e8ea", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "44ba7cbdbb2d00f1669f37391f06c6257d72ce3c5a609ecfab561f177fe617a9", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b391bdf02a4a45be41d985fc4697cabbd9bd34d3119f8f798417467ed462d63c", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a5487ceec2a9ce0b770043324dcffa1e3939bed1f170582a81fd4f782341d85b", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4552050122b494d538e57bc62640480169ac23eb5bd51f9c536ede3208105f6e", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3b4d5727853dba24e52bcaf136b53c644b31541042cf4078233befb5474057e0", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9cfd571774ffe61fa707d42d29b419992ff2c1a531b5cc8b217055c9bd1c9e24", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c9261f4860afebaa6db020c511407422d11ed08af50082c5a3fd9cb53d610734", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "479c5e6b88126d8fb9238f93132688d8e8433b1c2bc6e46e79554cd4bcf3f58a", @@ -20965,16 +20965,16 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2d341da46fa9a3400aecefe493183c4666f292503c1c06944f6cdad4bdb5018f", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0b5ee74ba3c3fb18fff92165224915df64758dcba5328c34ec45dfe83a17b2bf", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "959e031abbfabd4ae6a0eb293da80b761568564d8dbb4dd2d765d03fe56c0967", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "551d3f62b3f454aa22b96e6fc0067a1c4d9dd1e8f773214d7f7452afa385620f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a9ae7d17cdcd24989af6bcca343dca556969abdcb6ae9c71f9f4f5fd6ce0a19c", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3a67bc3443050f96d0c4c8a75fd530a56e10ac3475b2e0091edbf23206902e63", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0f1c26001259b5ad5c7d76c829f98840ef44ffe2983d5421e921b4cfbd262984", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "882411d64d76e6278a6d2fff2d7aacad8cef900fc262bdf08377072a653106f2", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "94b4ea3565ba024c632f4ee9d4bf76a605090c69537844feaa3e677d79f2231b", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3b3aa844adabee59c61bfe02dd1da657d6158f6b72fe67453acf8078ed047af6", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "92fe7a3e8d794033bc5f58551c31a1d2c5ba32ce67be30916160c49d2926043f", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "12dc603108d008cfa24a397f94f0843fd749b47cc0eaa3efeb3e70a9cdcefbfc", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "985ac0579e31affe6132031a379da9f04c1800e955fffd568c5d95e9205eecff", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c186283f2b9fd19bda632ade2c582b069b45612a074b0299a35e112e996f988a", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "089c3f2a77b2ccc054a7dd6b1ba6bb75a172a78c720c8909c9ab78652b310063", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "a8d339776a14a549cbb6db5f5dd83c8086c7ebae973e828d370cac42bdd5cab6", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "de4c354453bf85f76b439961e74e30df10302df5c7a4d6faa7fb250a0a71518d", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ea8998b0ab48d3886780747b949133542d4115ca9b391947e21c6e3e3462ff57", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7aa840499711432e69917f40c1d0681b5c2a0510098a5b155f110cb1608f4c41", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8ee942007e5ef72baab7fb67a4eaade25e48da2aa92ebfeda28fda4177572467", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5657e597cae4958fc657bd768d179af28f3469600be95af950697f06ab83c7d", @@ -21154,11 +21154,11 @@ "T3T1_es_test_basic.py::test_ping": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T3T1_es_test_busy_state.py::test_busy_expiry": "da280d408675fbdbaddefe467ce32f0fbd64726f8935dc5d49b9d2fe969f7585", "T3T1_es_test_busy_state.py::test_busy_state": "cba9b124a66e083ae97eb0588259aaa7567a8fd03303d42645d9f51ce4a6a2d0", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "38fcd1064e016bef25510a8a5d6a9dbb4bed8ef7d9d482a59291f3769a1a621d", -"T3T1_es_test_cancel.py::test_cancel_on_paginated": "e7867645a35ee40b80f8a3eeaa122571367a3d3a1f850f89f5f7b14ce28522d7", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", +"T3T1_es_test_cancel.py::test_cancel_on_paginated": "d842630d249b84c0582c95187ad93a13bdd42c7320407a1ed552920b281f6f9a", "T3T1_es_test_debuglink.py::test_softlock_instability": "feba60e1880714c37e5d961dbdd5f5aeaf7b283d946be44d8309daad7fee1c98", "T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "6f9a2eb356b7054881d6b60116f6f54e4884835b3b3881c151ba6ab5f32f8560", "T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -21210,7 +21210,7 @@ "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c122f12ce28406bc09fba1e25368fe9e204a52d77d94843a885d9f2b4a97811e", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "9367f80f31160a72981279b6642f552419bc78e5bcbfaf0cd84b4c3d2cd1fdc8", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "73b403297a2160cc9a477626cf4170f4a8879ee35a8bfd4f5cb14037a6ee7ea9", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "101d4a36a62dd78ae91293d802bc0ad405d65e52f50792452968fc6d7fd2039a", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "78f4c7b8d604e4e35b316152c77a790eaa8ea04273782e493d5e4033402d5b0a", "T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "65051eba72b59178e2235b6fa874fcfbeb880e74e69898cd6e33a05de7ff99d4", "T3T1_es_test_msg_changepin_t2.py::test_change_pin": "026a511c9a7eb63f41c16c69c628a07cc46040bf62fd34de5b1973b75e459e9c", "T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "e8e63e04a31f8717f2969428315c072e4881dc7faa8870966926a2c6c07c15f4", @@ -22360,9 +22360,9 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "b2f1b602b48bf3bcbbb12369a66ee0e0879d7a26c399c542671e9b8871f3032c", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "85feeb0f3d4cf30430c35fd38ddfc77cfe5a14193f324ee834dc6fd1dcdee0ad", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e44d77327cec2941c462cbad4db480757a6aa4b0a6f4e19f7a53ab119b172be7", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "6960c07e518d614f09549d6ea79aab05fab24f09159bcf61f664c9fbcae33265", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "14fed7b4c7883807c1b5a21afcaa2750fc91cf4659968715dbb0251ff026f3cc", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ffbb0fc217ea369ddf8f48e7996acb244723b3d90f1a236995991126e9e4e248", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "80ed26de1c7113c0d6d924fc364169a297404ce533c8a182f42d711b06a5b1ae", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "c4570091395a64c40b46acea1bbaba73c2eeef503b061dc2053036b0adce7b46", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "615a79f6753c275585c170398c6bb00c534d593c5aed5d7b1b27b15490c82ac0", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "eb16a5b7da1ed8b24be1db79231008fa3d4b64d308b30854fe64cb6a28102b97", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "164a4c03716896d3db6700cf919dcde4c715ee761070e0e2cfb014f7fd516864", @@ -22372,16 +22372,16 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8497cb8859b51d23da7237480044c6e9c7b60e87a3cb3428d57d529733767ae4", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "85feeb0f3d4cf30430c35fd38ddfc77cfe5a14193f324ee834dc6fd1dcdee0ad", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9f4fcd77dad26b98f5d7b0c3e29e960f8a3daaf3fb05471c5d5178547a55f3f3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6ab08347663a1513cf81c006d7711cc3ef25a4b8b444adb2cd1566f5c0779f33", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "22fc081333652c2121954d8b97568817d30ea26b3abce510321c50acc48f9ebd", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "434257550a35df97886608c509a1f932fa53eb6afc33df03ce4c0bd7a2c29387", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "60330f58f8bea3ec4a300574b7e3ef4989d18af978c23f846765824f649caf26", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0a6cbd84a805de18273596f5daeed2e3b207f65841a679570ac99f497786b8a0", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ad8acb8aa44ed8b27d876e403bddfc046253549c452471dab1ee2158a28d42e0", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "efc2f67b938680b0be58849b77752ca483893e7c42d099d7d547813dd33220ed", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "dd62e134242bec58ca7b52af08bcd57db546c111a965f92db1bad489b7ae7c93", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "2aa810576ef39cb32ff6837c29b8335e84eff606055bda54c98a6303abd5f86e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c1695da4dd9d771c78b41f264ea13604a951c177b293e69282ddd12ee7277031", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8c0c32f4052d35675d16e68bc2482b3f7466928cbdf22557e6adfe68fad47f5b", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3dd8afa6b064886ca518a853d2896c42a13b8f3dcb1888772cccd6eeeef45402", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0d71010feb919e13db7b21f9e3eca29e9b5d3247d7e506977e1dff17d63b3356", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c86df7925da65b59a895f5fbdee03c346cc8f17e259df889c78bda69bf33b164", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "16154185227dd5e2dc40396740ec0b222624b81d1501a5684d0356232e495a68", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "69855dee7d227ed8014c64961595f76f395e1d2ff1e7eaefea672ccc448415d4", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "02b3a838e4b2a18991816b36778684755999f546fcce32646d8b78d0a8cbf36c", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7ac21681f55e71eb1c04394f3250b4ff4b392abd8c94bb851341436eaafc4bc3", @@ -22561,11 +22561,11 @@ "T3T1_fr_test_basic.py::test_ping": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T3T1_fr_test_busy_state.py::test_busy_expiry": "0b142663642a8981e8fb85cf0eda771d72c9d2206cd224d170b588f32da4d8cd", "T3T1_fr_test_busy_state.py::test_busy_state": "251609abd57665b7882e24583141737c9b6c1ca43ff75ab8bec2181e4fa3f044", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "469c355dcabfba4a0f56eeb89834dfa595fcec58989f8c17e5db9a8a268a9b7f", -"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "3547888bf963a9e458d362f218df5770e81b53ad850c462f98c00ea772ab42dd", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "722d1df17cd5650880e8a634038c1f582229258661a26ee307a9a8d8737dc178", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "722d1df17cd5650880e8a634038c1f582229258661a26ee307a9a8d8737dc178", +"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "33d4d29b50e577aa96fdbdac167a6bd9f50351fa6cf3e1367291596051f74146", "T3T1_fr_test_debuglink.py::test_softlock_instability": "11479b768ca4b58acf621101c18d681126bbf66581184489922df2eea1357ba5", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "a1d024203379022355feb1ecbe72d16ded27a7060cba89469b82d14e84d8eabc", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -22617,7 +22617,7 @@ "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "143d20c7d11e9b3246e30c2d75de7c22e658ecbd4bfb7781a6fc98c3fe2b4e1d", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "67d680e6ae25fd4e1d2107aea8e7e8a48ec2d25c435ce4edb8eaa2fb4150498a", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "9d6002b5b1f5547d0be0e83651385d800f1b27d276c1838a846002198c974798", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "2f36b9bc6a3103f84647c887086ccf78b468950df0709e38b3f32955756b1549", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "5927032c252eac56fd04ac378d7688f837fde76be4c8b296dd134dd0d00ac7f7", "T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "a7a672e01a6b436411df8bd10ced9fc6d93912ce5e7e67d290a5508f6aeb5f04", "T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "db874cb9046bc9e902fe76b69d74ab3711d7b36ca83f8b077d45f11149d8ec0a", "T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "d2e0316c1ce92ccec54631e6385c89e2d60e9e65cc1c4913e5809b3de0c1536b", From 8a5d3c839870267b96d4d22653b6def59eba6824 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 23 May 2024 15:25:31 +0200 Subject: [PATCH 096/626] docs(core/bootloader): add missing changelog entry --- core/embed/bootloader/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/embed/bootloader/CHANGELOG.md b/core/embed/bootloader/CHANGELOG.md index 3520043b96..17a0f6a8db 100644 --- a/core/embed/bootloader/CHANGELOG.md +++ b/core/embed/bootloader/CHANGELOG.md @@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## 2.1.6 [May 2024] +### Added +- Added `unit_packaging` field to `Features`. [#3711] + ### Changed - [T3T1] Changed USB manufacturer string to "Trezor Company" and product string to "Trezor Safe 5" in the USB descriptor strings. [#3770] @@ -135,4 +138,5 @@ Internal only release for Model R prototypes. [#3303]: https://github.com/trezor/trezor-firmware/pull/3303 [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3429]: https://github.com/trezor/trezor-firmware/pull/3429 +[#3711]: https://github.com/trezor/trezor-firmware/pull/3711 [#3770]: https://github.com/trezor/trezor-firmware/pull/3770 From cd319fec1fce9146522b859e4fa3c0e7154cbee9 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 23 May 2024 15:29:56 +0200 Subject: [PATCH 097/626] chore(core): add signed T3T1 bootloader 2.1.6 --- core/.changelog.d/3855.changed | 1 + core/embed/firmware/bl_check.c | 12 ++++++------ .../firmware/bootloaders/bootloader_T3T1.bin | Bin 110080 -> 109568 bytes .../bootloaders/bootloader_T3T1_qa.bin | Bin 109056 -> 109056 bytes 4 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 core/.changelog.d/3855.changed diff --git a/core/.changelog.d/3855.changed b/core/.changelog.d/3855.changed new file mode 100644 index 0000000000..a186a1d039 --- /dev/null +++ b/core/.changelog.d/3855.changed @@ -0,0 +1 @@ +[T3T1] Upgrade to bootloader 2.1.6. diff --git a/core/embed/firmware/bl_check.c b/core/embed/firmware/bl_check.c index 94bef3853c..ae8ba6f24c 100644 --- a/core/embed/firmware/bl_check.c +++ b/core/embed/firmware/bl_check.c @@ -84,12 +84,12 @@ static secbool known_bootloader(const uint8_t *hash, int len) { // bootloader_T2T1_qa.bin version 2.1.4.0 #define BOOTLOADER_T2T1_QA_00 {0xff, 0xda, 0xfd, 0x0f, 0xe1, 0x89, 0x56, 0xb6, 0x0b, 0x6e, 0x2d, 0x67, 0xf1, 0x63, 0x8c, 0x4c, 0x4d, 0x6f, 0x97, 0xe7, 0xe0, 0xa4, 0xce, 0x76, 0xc9, 0x49, 0x0a, 0x34, 0x3e, 0xd8, 0xcb, 0x1f} #define BOOTLOADER_T2T1_QA_FF {0xbe, 0x31, 0x71, 0x7b, 0x8b, 0x31, 0x12, 0xbd, 0x58, 0xc4, 0x81, 0x09, 0x8d, 0xd9, 0x07, 0x51, 0x5c, 0xb6, 0x3d, 0x07, 0x82, 0x00, 0x30, 0x4a, 0xeb, 0x26, 0xf0, 0xe4, 0x00, 0xd4, 0xf2, 0x9c} -// bootloader_T3T1.bin version 2.1.5.0 -#define BOOTLOADER_T3T1_00 {0xc4, 0x9f, 0xfc, 0x91, 0xab, 0x6a, 0x2c, 0x85, 0x01, 0xac, 0x98, 0x2a, 0x0a, 0x4b, 0x62, 0x2a, 0xa0, 0x70, 0x81, 0xa3, 0xaa, 0x49, 0x6b, 0x79, 0x3a, 0x0a, 0x37, 0x66, 0xbc, 0x09, 0x7c, 0x9e} -#define BOOTLOADER_T3T1_FF {0x93, 0x79, 0x40, 0xdf, 0x9f, 0xf4, 0xfe, 0xe9, 0x77, 0xb7, 0x38, 0x3a, 0x07, 0x16, 0xe5, 0xca, 0xdd, 0xcb, 0xbf, 0xd5, 0x00, 0x5a, 0x93, 0x61, 0x05, 0x71, 0xa8, 0x76, 0x86, 0x61, 0xf2, 0x3b} -// bootloader_T3T1_qa.bin version 2.1.5.0 -#define BOOTLOADER_T3T1_QA_00 {0xad, 0x43, 0x20, 0x2a, 0xf9, 0xdc, 0xce, 0x01, 0x45, 0x63, 0x22, 0x98, 0xe0, 0xfa, 0x13, 0x1e, 0x4e, 0xfb, 0xf7, 0x06, 0x81, 0x1d, 0xf0, 0x0f, 0x2d, 0xed, 0x6a, 0x26, 0x25, 0x1f, 0xbb, 0x9f} -#define BOOTLOADER_T3T1_QA_FF {0x04, 0x16, 0x00, 0x16, 0x5e, 0x22, 0x76, 0x2f, 0x60, 0x01, 0x18, 0x36, 0x7c, 0xaa, 0x32, 0x60, 0x8d, 0x98, 0x89, 0x2f, 0x41, 0x10, 0x82, 0xdf, 0x02, 0xca, 0x28, 0x85, 0xcc, 0xd1, 0xae, 0x15} +// bootloader_T3T1.bin version 2.1.6.0 +#define BOOTLOADER_T3T1_00 {0x4a, 0x07, 0x5c, 0x74, 0x0f, 0x9a, 0x84, 0x61, 0xaf, 0x10, 0x34, 0x9c, 0x24, 0x3d, 0x79, 0x5b, 0xc6, 0x12, 0x5e, 0xec, 0x51, 0xb3, 0x91, 0x4b, 0x65, 0xf9, 0x79, 0x17, 0x98, 0xc2, 0x4f, 0xcb} +#define BOOTLOADER_T3T1_FF {0xd8, 0xee, 0x0d, 0xd8, 0x87, 0x0b, 0xf4, 0x38, 0x73, 0x52, 0x83, 0x5e, 0xa9, 0xef, 0x3e, 0x5a, 0x3e, 0x59, 0xc2, 0x12, 0x5b, 0x24, 0xc9, 0x2d, 0xd4, 0xc5, 0xf5, 0x57, 0x15, 0x8a, 0x34, 0x78} +// bootloader_T3T1_qa.bin version 2.1.6.0 +#define BOOTLOADER_T3T1_QA_00 {0x53, 0x5f, 0xf9, 0xa8, 0x21, 0x7d, 0xb5, 0x39, 0xe4, 0xfa, 0xf8, 0x3d, 0x0d, 0xe6, 0xf3, 0x65, 0x21, 0x30, 0x46, 0x9e, 0x40, 0x85, 0xd4, 0xd8, 0x49, 0x00, 0xb0, 0xb5, 0x58, 0x39, 0xe3, 0xd4} +#define BOOTLOADER_T3T1_QA_FF {0x1e, 0x03, 0x50, 0x25, 0xa1, 0xc7, 0x20, 0xe2, 0x04, 0x62, 0x24, 0xa1, 0x31, 0xc2, 0xf5, 0x7b, 0x35, 0xe9, 0x22, 0x42, 0x36, 0x2d, 0xab, 0xcc, 0xb6, 0x3b, 0xfe, 0x88, 0x53, 0x2f, 0x49, 0xa7} // --- END GENERATED BOOTLOADER SECTION --- diff --git a/core/embed/firmware/bootloaders/bootloader_T3T1.bin b/core/embed/firmware/bootloaders/bootloader_T3T1.bin index 75d2060f63d4782232408e5c1d4b2f31c6f32dbe..79eed959095eeed2d0d46721f86faf6bc1c07f34 100644 GIT binary patch delta 13421 zcmc(ld0bT0|M2g*v%?)$5e7tN0RfR5Ktx<(SiCZfNT!ubsE8V7DvFwG;FgHtcGPkG zrkM$v1x$#Vgq50=8e>}8qL|u<*0&3ScZS)1pL-e2zR&agp5H&u>*4i!bGFa<oO3>B zKX=N05tm&T>&Ct~A%hSS1R~(C3K1j{6C`-YCXG$tBB#Dx+aY<k^#%Q3fgdIQPR3bh zbuRrqU41EIL65(Vv?;4=)87)55`u+)96kBI*feuYn80#!==?GJe;x7oy(Np?VO_cM z&=2=dEWY*Xj4vkNcwGEP(K?}Pmvm@nd-kc>gD#IgeQxd#k1t3Goj`l?6-32;fvD}D zBdQu`1k3<}xM7$7&+IDwwmb3Hul^QVdFgLImpSPFqU66Tpz-^E>Utu3;K%Ox(kBuB zpWM>_);!NvYV9BY`<6T_^TdDe?Eh4@^nWV&|42^z-wci?t@($GXNn`xF}z+p9F4-? ziDOYGwuv=zBAujO26_UiI93uJsCOh9RCJM=tcp5@Fp3OhbhuEGg6`uzlJSA8J-nK% z5-@sec(tE8h7M#t#S&>MGUIe<3R;4fNb^L?K-VmMNt%gfn*3!ag{ax|t=!~?7U9y~ zx!xPBF=|4kr309^@sGXtAv<0ekrEX4G`1)2Q$o5w{ygF}bO6UHF?t0zD)Uhc4pXJ3 zjBxJ<4KcJoli?n!PN0jc=I-!khPorc|5BAdlfwHZfiKbB3*w5ZUW4?0c!Me&-Nx0b z4VoWaoQ7DCxWfBJgYS|H^%I+w>R4I}nlXMwtwD=T%hbsTox!!5@Sa{SuHxPxD&l=X z;3Hi4u4Xw}iwh$AE2^Ctbhp6!PVqyjj0<r>`*3w+Eh%;3SEKqMEnXd^LU-_?sOWTW z=M#-$-p2_e-WLHrhl5MyD#`M`B=EI6L~St=E`At<9%6Z)+uqMR^)*c60x_XIgKd4n zRWo>LuAT+FkJI|9gHZKSE2|>5_%ko#l;~Xa2(OKf9TVz^r6ZxM{h1&K(!|oe)N~cX zZ0Ydr{tN|aF=|eag!gfJNZ!ZQ&S~dTx!PIn;L=G|!nPQZKhtJHF)HL6>B#d`ih<Fv z87IW*hYheh)GAv3I9oShia!%?&+FJfRYh~QkM{WG?OBkbwC@Kw1o2_Kk1M1nZixLh zVgVEyTjgfAId<6y?ZMjE>KNM1j^siF7zZEd+aLXe&3)65(&Qg^NF3DDodE5VR{1gh z?pRu~+aG*4Oy4FPLdc2dCE3wkJbS=3bQWhOCq)UIIu$g6aI?4EgqqNtZIx>L8moqr zlwZA&)~O|WKc)@uNmjsIs85b1NvEkLc^l$Ja7vs=NR!kBd?+OWeUE=k$&Y>CezjGa z__IRP@+aZP?Bhcd6&Y;=33?M7?^{>v)H>Ra*^KiCokQ_hlbVER(<`ZsNVGqbq+(2p zAqPlw9e+A(1KNW}Jih|HiqAc-LI!MkJ^>|SMVcGcVTCR^TxMI7;eSO%XVX%~%T{G2 zi2V;`#L7A@Y{#>73Wd#D({?0{Y$hU=v|pnV;-xkr{CDGhx@dG6pVP&nllU*40=<i6 z>8XJ|tZJIv)o2wH!kWhWemW_04<Acc;5q620`I&3Gwt7yrVl*zzr;VrvWzik9nQ}f zE#K{mtX0zq(5t>o0sb^&h<wpAF~hJR(+N`pWu>DEQ)bpO6im8ww1nB?L__nkI?OS2 z<9%j?lwt9;;jw|<P7zez=vKl!K$~TtvK9N&D*}U^eGQ>S{(C0q@)$yp(=1`8;{)_T z*+h5aeJM2J1kN2%7_`Af^!X%1@C#^6molZNV?fvErgI|#k$9V)q^Q^N&Ftqyn~O*) z1pDh-ksRCgQRom><qQv6WiQWobRDTHbZD^P0V&qfzRYuYSxy|9g%9T(7_M-}(z^Dh zL{ueVf}QD6)F=cC5Et@uqG47uH>@Shi%t>LQ{bs5f_ip#32TZQi6(9qkHnRR(dazB zW$2F@u<yvAi67bui%gwmX&u*vYEhdM3EQNEFLS{5K@suX12YM66gq2N^MbIAg81z= z1Tj7!<pZIOHes8egp2Wo7+;84YZJBkAyPdE>RyUVN5-Qfd~9TY{}*fpMKB~&W3z;9 z=^&Sl{~T#ZRdflU#=RX=i>_MN_@xi#LSc?PFx@TdxXnndr@5E_$B8y1WzC{$L6y91 zfK<Ya#`AKA_>UYxQUWyzqt?w<HxW%b+?cBva>c&QIzV|~7H5lQdk?jjp7VVRlbdsW z9sg;aI-96Q%dc=3u>UAk!gXr`9Ydod5@x(z$uAYY%uTDrK*aQDB9wW|5p8IZ>>2B> zF%^zVCDChm-wUQv2}4;0FsijWvZi=Mx5>5jkp^57R^*SlfkUX28gxXclrYcRh^St$ zxCv>mD%o})CeE#dMKXq#LD5<pH>Z@%pTPef=6zP767}^1SL7F9P!#X8inZf=8!`;( zzIyLsU&B7D#7|M|V+f^-WzURJuVyiG&b`kXsddNw)T~s=s(hFN_ccqPr@h`Jp_Kt% zfD}N6ki}f3y|HujGBn$?<i+n1T8(qZjzFVK+s8g6<yNrxX<#bwFI@Rb^yE}~Xm+Sx z!X$g#1dki<abrDh6z_)R_%Kc23)6GHQ+5e+s4G-2of4XjihwC0*<d1srW70}7_CFX zY`}rz2Ft5Ria$cbk(M}uCyeVyWjO>j`BtHwXcCv<t>dywpK}xa^B5@^L#y;uQy$Y> zmd6a0`7q1v+LK3%`qFxOsFF&em^seBPUbQ0<h;l3H<QXQwGyw87>0}Xq-wG9y;&~y zRX4Y8imKi0yY8g&E2>MasARD+jwZH?j=0!dw}h#&OTffIPX~aQaoK}=K$kO_5@xt( zmQi3$C7wM#-2V%^rkqj#s3MdER%l%8WxQv+LLUf<7D4NS`MLV{Xc9AD*u84}_|eGe z@GT=LX}y$bv=K3Ovy?e$`vTdoNtt?EChyi_=Xix`vrAb{G5#(IlL0#KI7oh3b+gx- zI2{yIhf^k`WUB4l$Pas_;xp~No~{erHAT)`JjvAi(BX6sT0*~D6J*eWDZ+}v`GM<Z zlX2~Y{-sM?oSyJ!^l0r7p6!@4AZTgmVmWi=G~9W#q=8U{E+*>a%r|^k&YV8MNywSq zr}H|NmW<2XY;R)-6(_L;Bm@Sp-XTp$tyoMk8^D&F4mmUKG{yYV2=eoHsEFs3E;gW1 zTA$a^HJ?!JfRMM7TYz2ckBtN&tta(lwwT${MKr~N@e*<6#PF0b2REC9w4^x@Dn#JG z9ET<lq;y?Mb%0&~)55oFTx|^P4gG%Ks#JT!LgT}T@a>7grN_FIbdYDl#I7N!bkI5; zI12dH&o+EeQw|%2pen2=iZ_!F(`+ls7F4^~pWIxj(&ib4894;jwf7I4uAc#=I&1<s zWgO&pO-b`4!(>REtk3J%RWdpIFAJBph0iHze#J1Z6cQ&w;_i|O*|#miop~M20YsZ_ z$~ZmIxt}wITewF^3)*yrg3kS#of(qm9D@P!7$DESlDzD%EH1W}M_ra7i%-$Drv)0a zPg#`oK5LkApEcA^dep@lJW_)VLqKYXUe}%;n2{ZI*dpAeq)}&CfiB0*9_DL}z>*1u z1Q1JrV%{qmg2VFRJd4xvQ%aB9WGzZKH(8y~VZ~zRBO4k@^y@S?T6<~th|yITMlM1L zgA;~pqC?EI*u;#NQ@AHMJ0wfO=&an}ih5>nowxPzObCJyQ5l{dxCqw&4G3RJQp13k z0l0b7i?rbR4!8^00b(;r4P6DUPy{nc!r1IE{k0P2E87L=HWyoq!zba){`MK!aBSg+ ziL7}VKS&C5$~1-0T@BVy`Ui`Y`4f(jT_rj-jNWP~^Vp$_d2ALQk;7gnuOgVs_|c^J z(gyo=3oI5&;Vxo_{0PCgoy`_5#QBH2zOlgYa-tZ@OenMT1asUuO(|x+v`U#;yOgQ4 z>#_q{-0Tf!cMil1v=cD_KgpTJc24eNklP1xOYDS_JBd7*fd*LRZ&>AwyX#@;)52bJ zZF}nf&L!+E`{_>jg=Vh-q*=^FIDdkQoN@kWS!L$>$j$C>!nT$mgkGt3s%QbYhdjNv z(5j+I2=DWRXG0i4c)KS&9V#^jD%IZ}ko}1z?b)_hImcLfKV4sB0cXangMQcnybm-2 zA<&sJPlsNH@I#zGCA`$?6f@^-66SSS{|DP-%-b$EJHaYpwmRMHX=_ofgps?riRIP2 z&9EJYU|z>}CEN7dvPI07u&TPjdTurgbo{$Z%#5-UnoZgAY7z^u5R0%FORyBnuorf* zZ#l`$<Q@}f5}4&xE_ReluvxIj6yu3-vl&j|X5n6L2OeYgc{=fydnVr3SXB^#uHp0o zMYNYwvRT5bl9_#WY3Z3c+<bAdZ@8qJrF&#p#>m_vCK|6Sh(jWLtRNk!@LvTg{V;oX zF0Knp?F1ZUblEO;5kJQ!G$$Ik#`%`OeKu!EcB%y$=kSV_FmJ#CRl=-wiZWyQ{u437 z@%X9w@J}_XE&b^mmO7~MZ{`mzUVM#0n>mC0j+>^&jkdZ(QTHvvsNXHzQ83bD`Ytei zpVcr$V199Ph?_DyCVc5z`D#v=5cb?8NDF|trQrU0@zW#aZ_aq>VD9^)-0WgJq%g|+ z*DkK+yRx0^RXnRO&%1^XuY&Mle6BDdEZcq}<BHjPH??PXh74L-!KcrK^p)6uTKf2Z zccGZ0&HLL(pPOxjX!t`P(J`W1nqW4TiJ7sy{8*6hUZMzQb=erOjjp{~bLIDuhMgJj zJfnRWFRcgZ0r=>&IKwY?6qD95^J6mRhS|+3?1-7i+m~vVGpDRbIS8gwf6sbDFssT$ zjLIcvMp)Y{UOV@<9U1yd8$swEQUt~PiB;28-hbG*)+#~&9h^ITqA;%`t^|KLT^Y`q zC@V?r&zY4oFSk*g;>-#rjK!_f<3zEO5EYLVGZKQ=I}R>3WF0I<O75`8tp2i1N6MME zaKVhAlsua*2GL&T!o@loB^4GspxJ4fJH<$Iu=rbxfM1&gIRzR4jQER=*mWc|jw=x# zn=u46;?@~qa*b048&>z>b0+qGEjavpt1d>|EIo;aJ~ESfE@z#CyAf=MoagcI*Ajvr z*`L&iyF7lu*QXV4crBCcvg7901_YPdjugevb)7_BOjBM5ks*61M2I<p!-|$Dmcc@m z)-2kS!QH^y5{QUXl~(O$IUL`P6~&j1v)`}XXH6v1V#L?wZApSNZ8{W^<zRcdx);=a zRxJVX2o_+drlgtTo9LbMrp6m8y2UPjX0b!fBF4|rn={(F?gkE<fvAutMu6tTw=(G{ z(ovIRki#K{Q1u)H=l;Boj`?9l%lHji&h)dZRPr_vQE3(G9PIZ_rCO)w!g6MToz&>s zQOKoMuK{AbWoBUiMyH>8Afz6E)Jb-KmAvy_ai#U^bO&1lDG7QmEN4dBiTJ!`;<;S> z{mg{YO6PXCfmF|uw|xz{;_WWhVK1vik(Jh;(_QRcd!_Ym`kR|w>^<<cq%Q^E@8G+Q zkfzf5TY`uYxMAQWjmsF9?weC-y@SwEf7Kw^QUz}A=()@@ScPDUIrd}Lf9Wn;mU9MK z$&I?^HKaGS4`%dFV2dg1amDL7Nf}+xrp#kjIN@vZI?CqB+XT>dQVU(+bi)ON3(J{? zu35BKjzGn2-XCJgtZ?xFFl$RW?mH{e`y*!}9ZPdbop}7LFqDmBXGO)7KaKs4KNS9b z=@c;+x<sBsVN3=7V%DJC-)v!q!Ei}e(wD46nVWr~yX?;OU{C)oaALH1YS-@XS84T2 zaIkMW+-iB79LXU@&IET+Iax<x>OmzaJmL+NS8uq53|bGzu=RNU8`@N%Q?vNt$)qW| zc0oX-UR)(-UbN{RqrhX<kf#j~gNBDf!~1~hUeK*!(D1MD&u=87!`OdzT)^palH!_u z3#``y{%z%W)a)Fz9`BkRjV|KPXDbx@?QZoNy}Z2;>XdF%(gM}WoN-6p>_Gfzc1qB7 zes5AYbCvj@bL+fuP>o71Uups5o9W3%^7*Fn`B=wX1`$n`9#u|u9e)P<XYOfS?%{(V z_sgE#H>_N#xqR-+keeiSSc3QsYLq@E%gO%X4BE4jj?3Da@lQ?3oTd~RXoB(1*Z&Bw zX&|rZUC<;TUb8san@(<j{byb|-}c*GZgspT?<zj8n$P<to;Norq@B+vqV><To?>pg zv2IRCX&qz@_GBHyXZ7N<W<#+e!q3t@n+Ji-zkUr-)4&}E!<p-gN1ncz2H~*)(~r=K z*OF8(fZMNzg3BHG#)A6-q)!20m`~NyjoB2l-F-THV6~HEui%v8@cejZ${xux=VcvJ zQ8o}Pzlra+h2}xDlTG2<F&F&%tQI&Q|L!;BsFR(;$BOAf^R8;HuikPUsOEAmbt%;c zs&`dUj1kus2g(~@F&zD~j!vEFhSR0FczD1xw_wkH6E`B(=*NMag13m`Pn%o4oVN(Y zY;<#7x|FxbYCL{k8rkCF%%=DRgr<6gUgCxFd7&Kq?YwaE1TQq~9T3X%2*vY4dR|Cv zpUY6hgM0PRojsa|<)+Szfl48J672D@G`YJ69D5>h+WesCTu1j&C;%3fiTp_<HQUL) z$nTWW<`jNK*0sNfm(5Q@SMaCv6#=a-A|}VoH7ba2)Zp&=`ao4eJyrSG#WkwCo8QO5 zCE=-Dcg}@w;-=P0aCZV91Ki%}e7k!m<Bl0cp03^oa@=v`8$7!t0wv(elGq+&yXG50 zihAASik`<8eZk3_YOnRl1f!T?e9<#_D<oojNjSQN6$`?APkSyoFY)IG3(j1S6x*&b zWFw0{Otj^JB@<RTa`*6T2b=1VOyk?0mZNKbgx_7DK#%ds1u1@$_*7YQAO4J%Ub1!J zNLVCt7b;5oITPp}Q0_yEyfbbEEX$jU;SvrX1hrgaxQ1~?_}OEGCyo9$gt>->gAodW z#lYvlt02!UbAGVQJsJB5ZnzHi;b-X+5%tX`lG4`qF??AgqQi>PaUQ<6Fc^J=oeLF; zRc^OB1lBkKoLw}|7<v|TMiAWLLU8{@{rlB8xEN9;g_tgwkGCzEo?9+gzpGF-*Gb)F z<BCOz{YSwY{@=R?q2+cEI~xgw_<0IB=a@zNzz)Jao1elD7b!wTRy5EIiW$#ogj4;1 zS8eM3rVgPR)8xg;q`0_(q~5B)yO&-j*Hz%xmu>W#xfD^JSaSJRE_TQAcG6gZD^^S* zt1C<oRvZziKZk6005i}D2sgl|CLjt(1~N9_<15#oFYu66v0f7)g4-ZhY`}9?y@BSN zeqMD6rLKV3cY)0Sm;E@f4pedF8^JBE&oykV5z>C1JAU^Yo;NesbbE~ep+E7xwGr?k zO7!*!GJw-_9{3Kp4Uq4cCY8@XXc<1YK25B6hijwBtKw}$LLIhl(2<XA`09q8d`i?i zrupw2L7`kzQb95o;F>T6+zfD6Y%mSnNFy&2!V7@a@8GvL?I6F~VCud3r$BP=JEpFK zIRdoSH2m;iq-gC2h$=Cq9=Rb7S33lnHP*%f4`)TubLha1vdovPe%{iiJ5z+r54eAA z1nP<NY89vn&#cWv;rLjs3Jt~I)#k~6aENFk=8+lZFuX#?)x}AM+LT2?#)9+fqI~=D z{#y<|6&E)iZ>dX0@8PfN@=*YeGUX#RUTt~_9mF?GBTy+;eUj-r*&csVwG5=&&t?dj z!MNm;Stu9Z`XpUdeUc#H*p??QS`Vhy(n99EU9g#m(J}K^a@x1x^!i}<3^u+#484gL z)~6vOuCLbw54R%$(U#21q}ekB@@t$ljsF6<e%SkXf-2BXh`g>HExI8guW{{|)TJ&O zGgHt(6pkt2WCb|?coJ>aE{!JbdVQ?%XbqMA?{biJGo;!k)a|U%R**epY2cbP>S} zwX2sSdJyQG&Mh^}Et^NPC*QU%LL%YIyxg6_NCn***LA^DTU*d7PTNXc(4awc@!E#z z@k6`PiS8V`JvquUyL0sK%8+<n(-h?w&GNLP5(l4%P`qr5)Cla75kFctCti5u6_T0N z_&cZ72j`v8APSe9m<}WK#))LObo!nw3_4{Kwp_KAt3$KS!vFDb5)&|c@w$^kq8D3l z7opg7X2{L=PK9lyMY!i@iLPx=+2pQ@M+#bmh0FxpdNNHm8O|=ET>|C>oNy{3xY%j5 zrfE@}*i2}+_;nBxFk|tOQ>CQag}Y8^WslsY_mngV9~6^5{ZYQxK`7T)PYeAT1<Ywv z@acJoTwaMQ8vBx`D^156KO!d_b0^W<LL<$Ip$Vgn9bqN<^=MMT$}Gwe!Gp{~o16XI z?Kv-0!Z`p)gv*wYmebODLW!86R_?4S$PqJ>ZEgrJu)5hQcdttP*_obXS|$GB%v)5h zCl@?;6L`w!z2aZ=M07tPy5THFG`;d4aVsG1RW1%!e;%Ds;7OeU?vq>-L1NZ_<Qffe z#e6RGMVM$I=QF9k7$Sf@DgRs)dWcuU|C6}-TsZm~e|2uS?+wRTtI+#Qn-D3p9<yaQ z?0k6OJoq3bsMf;Ge}h8_?~RYyB9r0#VT2~&M_)xf_ixw;r1c_LrX<-ct8*x8MQRbe z%l~MX))Go-Blq3H4u>pG?qVgTFZ7EKbs(7F9nF1V%E7CGow0C<M16!|Lk<7&3*Izk z{FO-p-x1%vFa#;_&lg6+@(};^5EO@JejVmrZx_*id~MF-O<#`={{=K$-Uv%FH1ZX2 z=K|b*wgueJvGeO-d6g%1JGhBh_03D@ef;J(d8n`Ht8ao)I%7*zk<hrkusxC08ah!; zY<tA6cXr2aa_C@73(kJTzUmxW)H7SiqzOg&$}BVhsW|^*_AMN7G1)5|s&N+zpf=%2 z7b7G7<xvXHzMzoGCaXE6wH~FzOb0FwL4!YlJRbq4fH)u#NCnb?T;LU88ZZ}F29yKa zf!&)-Jug2m@V;Zq>$siZll_>zi6@(vp?3VUSp`1{aGDk9swwzNIEl96<g5MBQat@? z1bW@H_G&)z-OGPH<Z_bPo$Pi~+cgOi4~3J!pv@-N54#ac#k;N_mM?=C9WV(vZ_2&V zAoTsyO2k}jmcW%e945s<9C)*ulx)SH-Apvx+{*1-M4!Ns=}ehun^mVJ<Gh*$aXp(+ zoZP(4ny5UIAv3SBCTqnlF7^kPX4%mUWJVgzLNrkNoUkoRco&{1iyK|+1)O#(C@yiN z80J<ULr4$O-P(GCwo#xh60{|0k7g*%+%FplW)5C`OB3~yO9pzes}S@GJt;4`S{6v* zGv0|dsV`T;xA@yz!%GWXg-egZ>ri)YrAt|I(Q?L{(8jk~Gkq6R^b#@m)-{D3c}>?h z)Evx2Ncx+X8^VgXXS)D+B0+JX=7Z&AoUggC9K}&)7dy!HTlqqLK;M|A0Qdz7Vn)~q zCHJJ^V&h!!bqHdDZKSf(qKa!b9}F!Qg5zR)L#CPf7|0Z(zH34K@0km6bxZhoF~m>O zZ-w}+>WlCI7Xj5rzTcP+luKg2xt_;l$z*oa_VTEb5X>9dAIw59>&j5vr)Fi}<K`ja z-^xp_6)slAy>6C(7KwVKz8YTSf5OqX`#v|dusm=9S4U)%v}CD}8rcN}ehFO6Wh<dP zQ@6&Fr6%nHkPGt~gG+Ds4}aTADu1=e?1I9n<+~Sr%lk6mIun2{TV(j#+fk(h6Qod( zRGpAD%tG`{>lpU2v@dEKh`Qqtv&EVO6_^Tl<v?bN?+50oiw~B2^%XaJ_iZ$H>-}l| zCQffb2JM}IEjwj|_9Bd@_kjR_>m6@!;a3X=;Ycs~dJ$*SWH>?kHMYnJT=JWLL<}Dy zni#p~^y-n_$;&Em({DkNalGFf{9y_w+*$bCS}q5C@H)vYSt4dVe)QXLui%l~m_u<v zW=!81fLct;?jUk>1Ak%TzC&<dbY9nJa}wajGRdig8%{N!CT{M_r}fR5rHRXCEK?w5 zuO}svPtoMOp^3`AW7!WWoA9N3rOz|avPzg^M}aFq2heK^oQ0uYGEzqD1#2wuA++#I zzOrI)2Vs(OK%S!@quYWjes`e_ruCMYNcNt+jDIhgfzw+9u}>?7HsY|>a5xO5wnoDT z{esqs@Cw}6nuNyVw$@Da9Zr6b=D*NBMJ+X~w(2#%TlC5<R%KfI0HL6>U1jj@;biAq zTkEuH_#Bh$WOMPJhl=oI_!=OE&tc70CFx)@{}CF8%?|@pS3{iNQ;AQWk#MpIhS}e_ zgJEm_JCu#X|42w0{EWPVz50*PVLsGda?__|wxGzn*1_hRR{k+rh|)~AVL?V)u&Of} ztuX0371H3J>=Lj^2m6Dah%BRjt4oIiR0n$>FL6eo61>YfQQm29nWBWBWBBQ8EQ66N z7=Fy8aD|s%gF{E-{bC(b+1Sgc_V(a!_(^{CULy;qIN5V{LPM&#oM&7863?~<B-z;0 zd=5W8NBt?HsXGsm#Jvv&joeK8(r}fBywHd!FHOr79hY~^p=llLV7pY4#~|t1R<AK` zO<y{dZo%~~-=K}Qbf~?JUEjr>F5qUDZev&D8?Fdci*2qbUq_dQMsy;4D;8$kSR;;i z$D`eNqB~5{0KbPJVytG#C`qoiJg(f&E?~;)oNNc)<Q|jcV^hP~#wWXr4e#<&I@q_Y z+*_L$goC<zKzI@VO-%Cio0x+=R3C)m5SnL9M<`mH4`Xl~HqJqa&Xd@0HI~)SrM;mh zesm~USL`4<iS%0dfk#Z!h{x{Yvc{Tv@?$tFLHTdn5VWK(w53MpX5ajbsTX{lYZW$9 zw21Br>5Gg45{>qaKFO){$~x034(Mc`YbYd<N-Q!CC8_F$^-?q!k^8Z+ONNHZLfzc? z{Sg~!O!GqX$mO`9&I>IS`J9C+E(Q?cPh=c24)#NH$aC0u#1GNrVr*>pL!-jE^fPsV zbVi1hR=^E1=>%8mnL1s@BX&tczCX$pM$B;g?u>x9PQn+=uWM%~HIdAFcGpd!X&mIP zHhvw1Mu>j~?|IzNvnQHHCWkqMJKNbLmk9oAUGm3~;aqN}(RI^xv#id}ZamGIBmPhE z1|hw+j{7!fXV(}%4ndj7WqcHZmZ3Aoxe64Hwi+uH=tor0Fg+B-k;u=ur56hHVxX)> zFa)u!;iF#YE{R?+;s_Lt%8Z{zpaW=KL%tGCL@2^|QiZO0Z-jLbF==)?`>}DC8m0Rd z@e#M}jrW^%c6ObyRgKo7EaO}aS||=za^2eSK!bK8`3|RaXB)f7Erb6h#w}53OUwh8 zl(U34X9>j2f+7CxZa91a<`M9nVJAu50RPXsjX8Z#Z}P!z<LiCU?w(6reYso`?nds0 zboCxs%J&#UqfuSJPVj%Rm!#b8PGT$gckgYu8I4{Rmga-9Um@Y&z%cN)gDc+$-3jyp ziXm<VxB-VqN(^+p->rBfxT}CgKry5*0?Y?M4}^aMegNKtN^k|jFQ&<_ApKQ<8;9|& zgzvHTj@-j-LmN!}P%cWm1}PWbB`HqpH^65Ar?n2;4}jf3B&3%E(}4DWH6%WV$`R^q z{Iox+e7V*pgb%el>|N{?+ewQeTi6nuO}6yRCfc&J%W4Ql-9$7AcafB_CrQ<S%hl}J znjVC>XInT0(r52(_?H$Hk!Z0|l7u!*>tbcr5m3q%TNm5cdd7m3L<^~ucfPcOU{*9b z*z+!Ku&zKPbqQ+t#HIw;@7a>VA^dDfoP9YPodvgMr?D#uO_d#UHQxUPR>`l8(+41f z_&TV|-Dx~N0KF*wVLwTIx!>rMj5Y?uyZKQf;YJC;d~_=2fbpYbbi8K<bVGMv7qk?# zxZOh`yz78*=|EK1^Y3x+cUs*6V@3*k9nCZzOF;&7ufdjr5DIzAd7_Q*4QV3a3?qL$ zAisNZS+Ox76`cp+8>uMCYak4XzCiCo#-4-G1I4S*QANNGrIY>YGZFkh``Heqjm>LN z3_(NCXtRCn(=p1`&FwB|;p!(QXyO5}fcWq|lH%3|Ldmc{!`vx@uQ*FjaWM#Du6SbR zJ&i#PhlV2fjIyO+{qu+=1u)hcO4CuTNcJmDQZ69Em^uP|SGu7HDhA{MS6(BjY~b_^ zk{Si10S~6bksl}oqJcobJq=C?zy=^3_@xl$0?-?1nhGyC00Q1CAgN5??i6_82KE6n zfK-444o)UZDaRy|Dg~6l!F+fE0)BWEh9b~4k)+-MW&$z5sR<-C5%_LANfiKh$C1=p zfB?3>0#gAv_cGjDfS+E1XF|X<mZSy(KaK(G1M$EgFG7WY`WH*#ln0)Cz%`nr8h~+t zKhXRFNzDTSfWPwK$6r7i&<ki91&ce709?r>sS+Rq5Ci8%!mAgM0(@tHxe3Gqf9AmB zFE9(}2|R+|MtV1_)gycFQd9<wfx3JTECqsq({I7W3z!PT1J)JL2;c~?2dDr_fx*C^ z%Sq}iuo}n!5O8K0qyx_b&ZVFaI0RGx`G5`x1g<QBUdUepj|sq+i($zEVuAZ_lGI^f z0w4#NMI`kpFb9YSt}cX!L*O~!&joOZ1a!co5?G*s=|Bi@cs>j#pmQEceF7{8QUG@` zN&OC7DTdab1<zJsG!OyYoJ&$40wq8^@W&ijKY;DPSRe&>G#hT%z$QQs2!K0pkW?+O z9LNDefUC1$q60J#4qSa5p5TEQKrSF_aLz<aLwb#!KYi)k`O3_>vx^JnEFnC>F$FWG zE0Y`6uR<jV5k~uJ^ku`jHE1H)fYzh_NL~hS#>)YiV#G4zunMFR*Ff;Ya^s8&q!wQX z|J8Ei#tPKi%K?5XP*h<&UV-{}^@Atw7~qWxqt6CN9}E5${tgE%2mfM#Q_cMa!EY&( zjOiQD;U1R)knS#mH+J~TssO_SThc?M)4-k5?QiJ!4%#LiKl(1BYVROwcnf-}NO22M z^MK(H&#Qoc_iiHU30zz!gf9U%fM0(@)aSq<U_CG!@HZ;9qv+wuM0foVWSQ*;L-rZw zfxiTJR%RiDw*w~u<PTE}+>(a1+tEWGa_63g`R}8T5P9Og2K5K%J;4V@5Q(-opbwE7 F{TC>mvU&gj delta 13426 zcmc(Fc~}%j*Kb$P3iQALqAWpX5g9~f5ET&<hQ*d)RHDW`sE7-05x2xO;FjQmVoDsB zm}ra&7>zm-)JQOHF)`+4j3&mYL5<>)ylE8e8D{%VHKQ@_z4yD{Kliyj&yT7)b<U|% zr>agZJ;hh0#n+{VHwKSNr^FP6DEO;F6pbVl4cRvm-$)?DAb#m#&BwoP_l*2gzPNis zcGA>zc1ot-(W~|EtX+2f<EBGt?}~~jQ9J3X^?kNXe)#yiPlilXnQLe7+5O(&bmO)1 z0b^Ee^9<<f==V-!LrKaL<$)RJ=X?5Je~`2Fql^PPl!Xze{ZGEO&zCZY^gD+mMsf-< zv%W^mO28Jte!vYt*bo0_%qzOkT6yf7znO9`{+%bnP5&1q|6K!He*CAd=e$dPZlxDJ zC;Wd(i~d{pylm8hKmPYUd70;V{_8XUQ{JNgDdYbmKK*|)IiC0CA1R(9jY50zDrsNT z2mebNi|$~%RI6w<&`fq3&G-Vk;8<BqaE7y+NzE2$=!)q52%`?cTyLB&OF}>4ZL*QU zO^(P)x<bSmZIP8qjgAfGs<BL-j4t3bc@mn87szuYGeOr_d{Lf(@-2Zr$HeF>%LRo+ zi6-Ep_5=J@+H@L9t!IO{V*GRa?dSoX7nKwe@`9=qaw@3z!(T^DM(c5`3ZuTbR+Wp| z;s|weQkrK6Xwb2NTpv##O#)k3F>_NO*VEGh@<S^Exdb6M26CM}uK=x}Vlvcs#B0=% z=wG-}y+&(w6AiJz@x7261i5eAsI%0n(!{cQ&|Hd#YqV&RWs#-_LI?37ZDd=qn;7l~ ztR5H1g+Q*wg@4yBMssjphxo8vu5`AQ;Ukyyk=%!r2$LCCb~r>obKy6mJEBf_d9)f? z@$TrDG>M>xXrx|fbU2CbD4;zPa>U3cA(sfbKb(>#os4k23Z=VP(eajFXP5CHS36fq z=?`Li$4K=!ftzR@E#!y^!<>}*6^*JQYC|CRI!=lifNtTHF|kA1IAhrkFw}uufD>tB z*;h1d1;Tt$-||3C3UxXS(Sw8>(c^Rw8nKQSa>TmF4jnixu|nLWlLT^)EJ&wD0YT0j zuTc#!8;Ws4tnt;Z4yQ)VDxPH-x{nLwVjMZmJI1S7;(N6>uXvmZHQ|mOz=wbyBIHOT zN?a3rA!<A{8e8GvH#)c2DgCZPv6VX3!}lj83Y>#?c8W)rv9(hwQd$Dzc1uH)o&@Nh zyh6$Od16`F)<DSpXt|KE8=*&dR-yyAXLP@UzQP$j5~E#CgBm(PdHCNvl!nrtc_7y+ zYd80$8D+JYHE3i;CHDw#>k)>o;_4o;w9{#6=&=!z8JrX+X$HQdcz03)x`=;H%8mWV zaruF~+pl4ghCeAKXBJAM!_u258uWIny>DA?&=^=Hw;Jd6I*VekHaQU)EW?v)k)$kx zW<o7tDLZL&4uART8dQ$^y|x4m!)ISp!%Ap;Edh1LVW}SU84fe_h~#Z6(gQE4*(_Gh z*=!XyirVqWhgy1=lpo+}hOn?k+rg%)RJxw(pkkG^Dxg2JiQ)gBc)KA6oxo=eu@D>n zGK8U0?30!pOxrXpy`|PBrNjqo?<);*?nk^oEeyYv);ahm&wtikhdN_$#s5P89s8sY zLGy5K`XI$dcZWk7HUUO8fE$g!Oixi1zC=mFq6`;mk5OhCns3R-T!h+jE(0s$R=H50 zoXlpcj;+1V^^?PlztT50SmKg^@hd$lSO=)g2UOm{f$S2XcQS<+1a2E;$l)kacD;-n zf_JjJe2kvj`*P^S9z395e#inh)$vHW=sIXjlXEjp=s?%!mb3kWk#vQTW}H*-&8)7H z;sTnH<3QsBB*PA4G{RV&-8ZDrQIh`TD$=Yrpx&Z~v{cUqa5}swI}T06d$V`;mAPVB z!{fScs6xg`TxrqFKm-AZl-y4As?AEKwTv^kBw(k=YbOFb@3e>y7S>XAWEJ<prKUmX z2>#6!j}GC0{vo6H*z*f4Pm5EVuZlI2COHx}$*BNtn|)6K)%Bs31{#CT*jBtQZeoDG z-j0Cc4_y9GDzS^3lrlmI07?K*itLgmC89OG!1e{WsDBqU9`ElTADC^=D}X7P9GfX_ zN&~)h{AYhtvaCe}7BkNA1($6rlxe+5$;X)kuKUe4q6}$_ETK@&qfJQ8TP2mE3Pn?Q zxr|H2vj(ID_UT76A`PuZCJ$d(N7d<Z?SQb9la7tH?y8;Bh%df!w9)t)N$wadZj!nj z|LL6_cF94#5aEvEz=7(7OSS}7$D%43*UzC6LPY>~)h07hx;Ax`Du=7mhZp#~<lWhp z{DH|d8j82SZYh#-EglifYQ2FzSlF-C<@#!k2_K9o2*hOKP->MHRf$zHuCtwreg%S? znDwpjDfj21Jt_#2I@Sl8Zf_@R>XrH<@Ly@&ZWF6eCk9f9QfUe++-{TVN47Vmo6;0U zze0s6ywIn0YIYUorf<EJtMP2Nb<lg_Zq}>RJ{A7lSkEtw!QOuQ(v;o@Ajctt7oo|P z4TFC~XbGP9MnCkLW&azGXvKZ->}P<%fOUBH@R+njM|f7aQO3o4(>QM$<4v{RG)hP# zvi-TUkc%*q+)0Ow`xq-mgh@I(W!y>}H=?(qie`jkF&tB=&+zOKotf92qJz0Mv4g66 zR)niYWX1OOQ1LmOoYt{wBU6{dwfD*4`uO;B%N+V+`wBX-Mz)WNNo2UWIAUZJD!?ft zBa23QWL%X)2HpsHF+@_%=4c0F!ezk3@h$@fy00uIu{Sh(^}*2oA~vYN=K~lYTB#1n zmcTCXgF{=wX?|8yDhh{b-TXDTwj}47XEqI^=t+E}zW9LZHeV&Fa`REpW+8Mj&?PB? zhX0-$QtpJq_n=akTcklx5v=-ZIagz+bPlVWv)E4|#}$YV_6#B2*GjJquJ-NEX|yHK zIHpvj@ekdq5{7H%mT`Tcp&L$G2%H}NY8}zba7SwktNqy!77rVxkJbrOJmRJP=R00` z5dg@2M8RFc`$k2gH2m$T_@W{=SrU;i@pp1WdG}Y^gunyg^A+6H6L5*q(<VwCKA$?Q z;Od34f;)ATa45JPCvut>&KZ$W=4j$5HQ_J=hsfmHKC}*L!savF2Jk)6q2R`xV7S}0 zz(0GFnkrJc`S!K)>YV15*_3({l-jvSM0N9bYAH%yO&jSfDYvGDstbbw(*X3<5vFoj zP{G22lCUZ*rKVM)Dk&G@B+Ew3%Ibr`PzncUJGH?e-MdAl2{MXc9fY)uIHY6!Dm{F& zO{MXJh*IRw`L$5G&^oFE@k8)Se%RZhVne)(MzMls5}<J-U>iVLJ>9hDU<qszqKb%u zXu%YJ?kD@?EK#MKzvm%_$m=JXCT3IE@Hjqrf^i}k^2{!Rx%IiQW6J7tO=GgDB0R>J z)4XNQn5@4VN#zDXR8~LCG#o@nLEY9lBeQNbiZ|yp*9TEehH=A<)YBcrYaa17F)L~^ z<cpr}&~8qb)f-LOAd?L;+vg0-`liv%>%7`BOc_Fr;c;qkcGmGm6}#OQq1tW>SEkDM zx%uH<wq#RpVC!u(JWdNv%i7y0-lAgB)8f3;Y!7b{tVZBmy-5#TdT8d8IlXaWt`^P4 z!*i1Y588biRB&dpxnOJyrCbI6I5!Mp;&r=}le)y)+GT}i!W6a<KS#gh=Tr8M-ep2j z5~icq(<i{omjH^TaC-o-0JvSVlOU}FTn0P>oY_D#otHs85ldis!Rpk@xU=^2Ffwlb zYsYMyI%Y#gvSU(~oC^}Bhfn<kVRGbW7i;rjOsZ|+>`#qyICR1koMX_yY_62Uq1m8& zW))W{V6#(HP~7)8cx;!VYRA>aIF?e0w@{lDRTSrP)i;t7$!EB~YxMAcxR8#qQmRZN z#T{`?P)WJ3ZF25Qha666hOD3l4}ZheDuKA}4oVkvO#u;&@a+e_y}-BJL8-`5<N1m- zK{)@}rr>-WkBVM2HqpKDMgF2&+}`Kfoyha`zTIi7l#6s-14GWZer{Z5B?IB%x4K~8 zN)W3&{C=036+v3*9illlHA_Qzr?)%}$_UC^yybi_Di@4Ob_8V|X-s{&?|WQB8r#2! zD?ULdhr9!$upF=&unXW^PBVW2$htWKWh-7XF0$yEOUj+G%eVsA40_ppxH7kgpK6nF zWiAhY(pGRt#`(F)>hZ1LXex(!mec&hoQ=kfSrYDRh_o*7o`=r@9e=b)x&AgvyFN=% zNn;TfV+odG8J1%o?2Fy}Iu~6=Z?k|VkyTOQ=Et~2Wuk2sotNO@S(ms>{2|$5hgkhz ztggl0)%6Qb%ZoyHab8|nOt?!{CKFWoSpB!?*(up%QMmcVZh4t}n-BKkf;|#08t=@D zLn3@JFAYWEfbnW$nxj>U4B-+71!omQmYaW1SV*JlyO~I6=nc_JpPiDG+z6d>`o_q( zsc-_7am!tjj96j(BwPkwFy0t>OuM`>p8ciqFj#!s`dOo|U{QEIamYjb+xWOa&)kye z`;Fr0dyV9*C-*L-25>zC!$1}nSwLjLY#Mbsp!Ch`7BOtVVNmxI(8fV}<NGhGO5T|? zbk~4S2YUF$cyxZW->)si@-0~|{&&14KgaKYP+kV*8hkfDA)>$IX!<3q-&SVZ)^s1} zX^Buj6Y4kMgb8UQAGaXgzWN<awExW}O49d{zhpnv%1v?Wily9Of&UHQA1#C-id$Yh zMDWdC?WKGDO`Fr#zN9@x;5GtxCcZEs&UDX#bg9i#KBslRSUr5C193A2|1$Lo?u-qo zdcjhP_XZn^TUIRLqTC8@kgciFck_;>sy^47D9Z4Np%{+GX%p3c5ACG4D$xG~&zLw` zY<OIy#otd<MG_ZfCTaqSTZwzgtlmM~3NBP&pGk2N#Tdkd;N(dO?XYv#d{gGGLZl+6 zL2mi!CIhYDO7PN2AxR_c1|4F3t@-l}EK1BTbV9dNwRZ}Uc30trMv)MkMA>;-5zP4S zoNeBxnLg0s2z+r;3i=ZJOpZ{fT|TfYwVp1GIAL<T$Qw3;PFgQNhWb3Q(ncbA&`FN` z3qZ08Pn?_(;&ME<h};fO3HCg}`zB}5VkhP%cW<}cUR9uD4?m@Hbagq+RJzY2F+vc+ zQwkP@Er39kS})m_POjKZ2~^baQk%X^!Ik5S1zn1UIqo0YZtF&+>ZDf{O^KqDO$HR2 z>Et`QTLbELo1OwXf&dI=%IX=Ri+<VfX#K#@^$zJv!4B0+IDcn*;<Wc$I~X|$F{0;A zfbMj8z@?!MEeEqq3RcEu8Qb=PgMCgjH#?$Wfv^iJIFUoGRy0YdQk&S|<nOptnp7hx zE4X(ZwASz#g<gE%+g*YWO$m;_=u&EWK<!SbEpP;?6;JOLmfF5ebMhylMsFl#1vlD3 zb;+)$x@O@gQxb}{yUO8;Q8`V~^espwIov$u9B~MBD7F2X=H~zHD77`Dy;J7q|AO2t zgtVo$+X)g*>VfH&I3j&Snlii8b_bz-f$CncTgpA;yt=?UMaAHNS&sd-j|@LHE+lSP z+Uf=sxZntM|Em?Wj5!OL&TH_2so9AGTcAG~`)!mSX>*#3XDOOQ&~IAr<aI6&+%8C2 z!JTfI#`<Q9)MR%)fa9h`N~u+F#9xgEPV3-z(AABNWl0r}mrRSGnY99W^$W5Ue+%S4 z*5G^7dJXuuJ;Kx*F54>hqKzu{@Pk{MdAbVR7Pvvd-L!iRc^s%LwJ8&v{3@qMqi9kf z1yB^6wuQ;g+y^TR+VjWLrmKDZ;g%s@Lo?S`<4x1`$x@eg{-a}w;|z~QK^=_J3OFy? z4bM>Uep~2^K1M(v!=aD8K=msydJ)jaAF*e84^)YJ%!msrSq<wFdiWhU>NCiXTa9PW z$VO{$?Ti@usttcND>Uq|!=qVYR6NcHqXyVjtVq2yd&E8u-wU^UE2-^6VGq*O6D#&S z{b1Gzuw#oL7(E9Br+5YZ1;O!xpxrr>LsVU3n+g}d1@C+-m@X6q*lZ9O<`uYWBP|UO z1nNP6rZzQ(2%FD9qb}3MyImpMma=h~o74Z<cAB87R|KdscvXENsOl-G+6k&e)Z|7N z&$-Cv`A^|6LAdXe7LTTjS9qNutPzA4fUuZKZOnp0;aE5nj!}l~bMa!q0}|Hwk`EZ} zA^v)1SkW2K)XuAEtf0wP(3B0DB$TqTb<T>x^Ochkqla_^L`*UwH@zb=0m^RxxXzTm z323sFt*5&fNXh9g71GzCejEVi^>`y&o5gTDJtwkyR=Q}|iAEPj7Nxq9w#i;P0UNm0 z#XZ6MI|b9{S$nZA-YEEECgiu<8liLdlqt};Vu31U^Q~Jd$#|8ycUBU~wQiMWXXTa( zhTG+lu#|4Nb&F}ilpk%%Vgt<AV-N=i{c2#7r@(R8L1DfyBe2jT+P1?&rpXH92#|{= z4hr+wJ(|UWgBWhBhYa~b!9gqWl3A(f4_rGdEbJWcjQ8^72|T$1Pk;Q^tVnc5;Q0u6 za=bjr0*_JP>3~ybhnPf;M3yRxW$CSL;DFP~iFEMD%o>ayz9$TXl)7}+%@1+59)f}( zus|4ty)8M*#ZM6SNO^sd5Q`0ucjAv{r^18fZ?nS!9d1gOZ6!Sl5qiW5mZ-pzaIYm_ zx=D{(hkOrCnG=~zhISMT8Ch)8AzcpG3Lu;2{r6h8Fmk>q@DBSp;3MadYP?}i6w1Jd z=ESxc)-u}^TJXwU((){!<;yN%r5><7UvLa(6q=qSIH5a^nj493;#cQJ1pMH=!3-4+ z4)^fnxrrG~T2mHkG)71^JZ#K>5JzwAo8{z9Ud~jZ>#5m>$B(t?S%2OWbN7X5Bdbpq zYI;G<Q+#7?lCn^c@Tu=8=oTg74)gj$ESWVg4E4fm=7kL-y&*j#UO4CV!t-AL0%g)u zIe1|pARq7<;7#Bsk?%UlK3@n3?z&Fi^;PU>#H`zZTjq5{$FchDu&|9Dk0uo2oCuC7 z@h%-Z4cs3Bcd~Fi<n8#*C!B;rtK~p(!fL$LnBl#(5`*eUgV0E8WB9<^-Owm}>+O)R zo}g6eRcdukWBp-+AWz;WaKJlZ;W8WQX$3``_n<*kT@h4S(%&&4bi%THeh*sOeJ#zT zuf<<2{DC&D#p@QW^X<D3F<xrN#UBvr@x_nn(QEO6C1dCrYc2loR*5t#L2NIe9B>S9 z9&iot0AL45OYya(E6@*k?6O$jsM6LGS6V6lVA*u^uEn$LB5I!o)O^4j03yB+QWK=4 zeQ53Big2{ZB3UUy$c}y9i$Z-ZvG4VxgNVp#00!&^oGY~~E187QaQt9Zs`Lg>($`wL zu6_^E(A*bm3^d(>ZEH3QH4jQHo7PsLaALI!I0M(UTH66qDU{PnEu+@4$oCxNdjYNA zI$X7W6OBtP>1Ee~>2d2U?LW;Hp*+i!y?@b?ygi7?vE)|$A|2k<DblX6)pmb0Et-9c z4Q?*Z7;01c$?NWn6LYui0T%<#5tQE-QPJ#s@INM!)SK`7Q({hIm$Ldpv>=b7;c)|o z46&*LF?Ru%9?C$m*m_8f;N)^BM{(Opg4z=Z5+eBWmUB2xmSrcLPw>*i(E+`L{3EAQ zO=uHw_2C}q0Dg2h7hcbemR!^o@3jm?pJSJ$A58zgM=}DYIl3HEF9PnzXVS$Si_J%- zp^;crot9jEjH2MEmLn}#bx;gny~Nxlhp3Fw8MxU?iT3RfN-1vo(w}VdUaErAPZZiS zHfMJ+w*fDyjzG)tmg-cr3;$BBO&sJvBC4r}AZ2o-ixgLg{9s263-5Kl;xg$|<uvg& zRRI-e;O+}ty>R>&3F;^ZCGowouizIMeTDRQYKx{|$P`gCl|LkpXb8Ydzeo&u+HzW) zcx76FQmy5XXxcbcfe5}KeEY?KBB`U5zj#P1|B06O#chSQAG8qpS8S@hm;wr(<TQ&B z+Y4HlMPd{8$nI^&E4QPClF0-MuC>;1a#5>B+=8T3Q^+!+t+eG7tgjs`ijh7Inv!4e zB`&WCMvHJ|&BQKQEooG%hCN;l#Tl&{Qd-hwzE`vbxdqd_z1)IRjz)!zw|CHr9I}2t z+se9~f8raOky(3>v=WZz9Mz&wY(6>>R)y<m4-|+KkL8D)vx^%p+e$RynP=etNI2Yy z;OM{aSW3(a+pPi=`@R*Vg)!b_U)m_%_N&a$w5@n-%jzd#tOSd>Nmy|_)n^(Uh9p}= z+?#ml@q~7ZU1nRV9>qzml$OxnhmwdJhqoUuqWwI${g-+lkEiIailyP^HT=t;6%|fO zwZe8ntgIDr=PfBGW+B?J9v`UfL>I5OT&q1m_c-QBWXT~{o~>gkvz;GlqdK>#Q$uK% zWJ};FXQ|!8f9+{Kd^lnKH2^fY_GG(`)9fA<;^x{se1(Tl;f=65l%+oKV>K*-{n7$b zqV>4t<hw%y*S9`1B5vSuI(x{}jOLTtA>-jS|4*u+^*NF}(ouD7y?oDU?*lF3KWIyU zrXn<a@#~mD(caolkUp0h4IJ_RAvFkS-CxkerqMG-OGH;haIf?586J5p#n8i&Nxh}- zsT2`v!b{IaBOdRC{}=GZvytcuess2Pz+LAXHnHEyCNWZFKI1>Yspletm&120QKcT< z7tBr-JY7EH7g}bX+l$b2-0pmI*TZC^s+PdpnJkOv2Rl`VBpL}k``>ZM4^b+4E&2T6 zfYTk}D_f7Jp6}eHvlBr`X|C@Ci(JOdcW{lQlB$j}tvM)sLxbm0AK_vq<37Zv&!?bn z*mHgm8i)sdn}U*X>9-Mn-#8?!Qn2PKwtPD%atCPmpbT~g=wt+>i2$;94u$kHtp2W@ zV!F3>B%~VL_q(C+9evw(IjE22(Rb}on$zA*O+)7nz|KflYT0fYYU2}ro2!+&(`kU+ zv|ZK{{w-IZg0@*=E>$eaRb`^?NKNw3_%fXFeGlJTpu7T5Uxt@`-yy2XtMpALQOIP` zl|<=juhJaL+3!<O@2Oz=Y{0vKzd-gGzy**%IS>#5&;b$wset}~k$^E9EWLktP2~5~ zp3{6Q!9VL6&*A0PMaYdkRyFz)t1pG2220ANNE&^FM_!Ic@8MOKqtM%y%FDSZ;DGQE zl1S27Px-x;ke_4_T0Vd$xD6J~&sz}+!L?WSDpG+W2510ZSZ4iFBMz|JDBbt<GPu}B z!UFmnC*7>1FJOH8X1APAHqwl(nu=-DKaDGvY_u81(OsE(QP<FV)HT5B=5M$++PdlY zrTbV{*m{hUHn{oAZtbFd>Bx$-+Ic8R9xran6yJu&P+P5=KZnQu780M>U&<;-;Fj-V zL8G3IQ`L*&Uav=S9YNz~pfM3Ns;uOP5)}6~{`fa-bgtV6bgy^kgKn|6W|X^Ot{lD! z9&M5bkXF9MjlcEnk?YQ1xDVc<TBUVv)tv7ePx?`M@@C*WpJ4|{CG5Z}G&fFUhzqv{ zaZz-<wFu`mL>6^--!7SN4C<t-3xXe>ATGyFsmSHq&BwUm0~AoA?6m4>qdM-fbytZP z{=4~bkeP1Ofs9V`dn4*}*E-1*Q9vFX8{lzA9d`pbCFK8nD()Ka)4-o+`~dhr(0t!W zb5SxBe*t)8aTnODIb5cE^gy{ol#d0sv;((L-1=e^R|}$d;ZD4>1fnOc>U7u|A-!EP z_X=rZs#ON+WSRlSPvNou5>C0*scZiDlJL2t4-&hqAybVs$RWy8CJ@Rc8>KpVxVSM> zLqkL3OM-kyVSFn-a<z?C-Do6@k1yFe_kxh?4fm=b^h2W@|8^_7NbW#+a%f7f>6wt! zNOekW?)CZKG#%SB0dd&Y1&kO0rUrB40zS2lpTDcbx0AHquhW;-R^8WTmlEB1y;;A6 z4UL<9D18~su>!zPm}baG{R>j~L4--%-<Q2wK>VHr2U;aAx*ZbLiR9ok$|+h;&d>Qa z3w#myU$;YKBZRyH@)2PkxGyPd8-SZgz?ZjUB!o%0HCS|~uYYKNGXGFqJ8<u5CmwvK zJGyCk{|=&)s=e2M1mPMmRjbcVfE&|bmkMrudxbh_eJ7!=Q}#4%To%_j4r;dIy1V2j z4!_(jYI_8FGziw%Ou#0<Q9#27_^o^4{!XYm3782T6=S^Vo*NZe${VL3v<Z9e$Dn06 z=0PO<=BMw27&I2ocrY54?zayT(E#jvkbzF)w1=sIQyk+oa?^5~QG2h^sA}OuEE^so zRCKhZ7+zIe{3P3h!+H&Txar~I(`@1{JgmT8wIu;?KcU2f<<<2z7476>;WL9AzPq)S zlKxTZFO-zkZCFwp&T3gF{|?ZUFZe6|!T;0)x<X%6`oTv2x9UDP_K$?buKy4?|Buo( zq10-K<x4tCRN!~W$q%xW{xMdJ5-op1NJcAhm!~mkmSyPEFnPNMhYXG=&HQx-)uEWZ zeK-w{U(Ni#@k&<|{7h`OYqa8lqhXv1e%GNi*x{`};coZp&kjl}hu=$_d7$jpFb=^g zKl30c(ZiR*EV1+7!qKJnexU)W?fj|ZAGQ%59TJuBB{qMYi$8|*+`)>20*_MQsl-d& z5y4=1w6C^doPlT^vU@@^Z@{0s)gjC5X<(n7U(!O})gX?f+4*<yU3V1PjU}Gw0NSBt z5!;QW%EeiBehp6cbm_6qE`m$jW@vd6fLKsi?K{91Ze(_TpIr=ltj#JLC>x+Ji7Qb$ zL|pM<7k?jb^9)I(?HV`%`DeB8fi1o&CqLUp-t&B+?9<W)%2S08Zn762+?@QDYBh>O zXrg%lg7c=joMv7rH!nnpjaN8+t1Ygc$@+nPN;Vw4$~dW~RN5i<g@~@M-!o5PaqYos z`g1X>fc6)f|3WAVO*IG5Xi$Lq7?JeNJo!Kx^pw}t%%qW8Dp}KqX13Rq%h60kPbfD_ zeNi7Dm4{pjp75Q_CSNp*Hk8+V<%<?d{7b-+J^(}oQqsL<R*BxCSCyN;P$HJ@Q*L%E z(Lj<83`F6msAfta8X%6E?g`i&1rMcE0QlMPn4eHbbDuceH>tW;K+|^fl@QcV`Y~iz zm)B_8q6u`50H=8KV?Nm}f&V?-if0`ni8NR1zUjVMeAvM+J3)Hb<xlAvF}w0G`Jm|F z=bOI_MH%R^*%OKup(Ex+VJH&4XWkNqenvxUW`(0Ty1lri&B59~#A}dXO{=~m(C{Jf zz?t%z<FBCKX*A6IaTJO{bIspGp`B<^%@h?HjZm=ptQuYMTLuvhaj6amzstN^gVF-t z6bQE*wfE}{4t|mOsRpe?z08ZWXr44sMTV{BnHFtDiq$Up<|clz#|Qo|FmI1W8+13_ za$<-daSP(69jEHne+b7afVCg|es>Ev2l5|(Xdc!PwWkk!XnwmR+S+!8yAzR;k!$~H zsJ{oe{GqvH3_2Y2=60HS?<1P=c%D+jAV21#nujrHn7By2m1cHA#bE$~{1=c~0cQaX zfbKv``xv799(a-kd<7ti2SdsNdIP#ceQ!YdF3<zzJ%Fu%6yPHb!cVH{HBhetaMhyE zyF8!*_CIbOu(zpCO<iX+0Cn2}HEVaaYF!7C%K${{+mKELi~-!=0Y@(2(E+~LQS(|? zRDw{D`I~rD>bKi2h7Y})94-7g^H@C!>vkT@Uegxd9=5fb@v>Qyf%bBDI)Ir8AJ$aq zQ2~vnn}ZY4dWD^LdHR9MOZFDNz4`M*6!se2X_yVr_H%EYfnj)A?JX$3td@9=^u7er zxm(TB?r6NvPIvA7>k!v!&9k~Alk`JS7r51YsyiAi-TDd5y#I+gya!qrr1l8oFC*hm zaR-k7@rn6(5A;P_DLA-w6!RML8ay5f%DKDD@AX87+x|Vmf7iXe%RDd%O+~rpV@b$_ z9@R*CA%sF_yN)(d0r0a44%rpYy63j8p%dli_Q~iRFyBo^iM}o1@_z$v?=fq7qlaNC z$ae;8Qn~nVzLLQIGhb~|+4+o`=oFNK&{=a{9~As5F-c0X)I(}6Rro3V#1rBQrQ&$9 z5Q^cG&cfq_f`D?>OPTe8BC9#n2f^2sl{MwBA)c-&OG5`GJ{MUq1Q1|0_Cx<FS_D79 z8v#fKoSF=eHGt11(adXrc)+!ZG_w*g1kes30{k_BW_|}O0w@6A=hMs#fIr~#@$gy= zXv%{X21o>49tTfbfKtFPKrG<#Sa^6EOBXSJjDaHnKncLPG!qRt_a@Cu20R>1Gm8Nu z0il4ZQSh(@s2d5V3c%$NG&2vt4Tm`nXalGo2Cq$k?}ow(0qlB%W;z1C83Kb1hy+|8 z3<d#q4=$pajgT1t`1c@qhy!E+5a8tNG?NFQ0l($I&%Xfi00!{+Ksc-c)PPe1;PnmA z4e+c#7yx(+5Cf<)(ad~67~n=W&6EH}1EhdEMw;=fDK{cV`=TbW<1*khU@AZY`0QQy zeK%k*AQEtY33LLm6|e@d5HJ(a32<XEd=mrA0dxa2Euxu&fSG`<fIk<4K0rBOAz%PN z4-f%PEr3xNuz+To=hKV@FbNO_xcUywm;u=U*V_=k0Q&%A0Fi(*^JwNBKzqQAxiqr` zpa<NULo=TMh63aO^K6(-fV;D3=2O6QKn&ooLRjH|Q-#pmBam4JNCN}_ewax!9|H0L zk$~%O(M&C1B_I<J1GqB-wiG}SAQ|vvI?enD*a?^p=naqq&P=13Re+uV1>nq7i1vVC zfL8%NHHxWdVQA2hyty;y6in%#H+~NF#^AoAat7DzT88EzbLa|mN;)KO(nM8{nqO9+ zH|awex6q~vBsQxmkWbBDyWwh~=)W4~4glgaHQYR_1Zky<p*VlFd20#Mbo~_aJG|9| z1$ja8;vjJ*NzX(589?W?=7%MyqpuC}%>eycbNDLM-dD8-HadW}9Fhh3OaPH3e{JAb zl?mo~tI%G7Bwq_BYruxIP`M7$4z2l`g4JlFd}QC>5wrUaVqzQ63k6SaB4*HUi0J|J zR+SX>HPD`e(5z6d1XKeq-bTzJKsjImAQynlLotf!8%wp?Mf#bign@hs6Cpnt@G{R7 zD6azS2RsD`JT+fq^vIunb9>E!PtXBGFaES<%%|uR(T3Oi?5RLBT2h0mkO%!2Pi2$H diff --git a/core/embed/firmware/bootloaders/bootloader_T3T1_qa.bin b/core/embed/firmware/bootloaders/bootloader_T3T1_qa.bin index ee0716ef1a8f41a6730b3ebe44292f04fdbe959e..a40c63494aa7e57a7b949e8bb1a7f4d516e60a34 100755 GIT binary patch delta 50442 zcmc$`X?Rpc)&P9>zP+T=S;<D|B?%pZnuS$BI-SnV(t&`0f}oQSkPe`RMMP!nW>HYV z3EY55IspV10xkiE8F6G_6dfIx=@y+qfmf7)Hn-Ke&DJ-$N%wc^c0k6NdB6A1_k4Mt zo2oi>>eQ)Ir>ah!s%p;{jOPo+HuKJV>==b%I0k<&;~0T67y;3lB{Pc<@YT1<m(0Ac z_>D^}HvIV7Vb0&L{#*0GAD*>R@6#9OEIxhoVCfU28zT=~n4HEw{LMM{m5*=Tv~=%p z=A3Wc^U>cYy%%@E^F!x*?|pbKut1-gotg1<?v7OIPWE^D@VA<QJGOWFe)IBOiN$x} zn2jtvayPEae;3zn{}Zn3g6}ANe)w>JP5SJ=e{JrMW0`0F{4>(pPk)Z1!YThRME<u5 zj-LEiTGw%3_<IcQz7F{RDRlp@;<=frCx7_QEx8%zdi=tP|0}Nh|BCqk5nj>%q8!&- z^RFSln8_xBGXD%yoLm}Zof)n;?>)9!5hGPTtvGdn_c2!DYCqq{nB7Y!6S{ZdTL<4u z@ZHiQR$w`Yy4$#MPKJx;nmH3U(ww(1(^bSH3b`#w;zqgHY2sXFVqflSIFIKfiBHJ; zIb!4%iL|AD<uVcb2=PK>I#<X=!;eG@P186+JR89+B?~OTOVJ=N6M>iS-Teqz8^z6W zAreRNfhYxp<AMZEh~cQ68_yx=rDzp*dpnB#810nELZU$J%ZD6NoFf@W1H^`p`p2Q8 z0nC(T&fYh4Ymzux9@>TStE8b_2D6n*5_|iMrlCNgHF7af+<o+WapOvc&tUV2c$v4e zV~9ul`N!C)OaP?t_sRTctX=&|pT>(7VB$1BUHyYW&j#<P+$7+*Dp+*)M&S-VMRRn# zIyj*b3qD+@?W`5XE%pebmkjHCS}2)82PahO0Jf}tlko6^Sn!T%9$|vBR+z9*yFIRx z4Nl;-+8M)`?K2$eP8CmihdR{Tv%K2Qp$_f#p<Wh3+#ARLTAPbA{9f&?RV?oHE?zHa zwYc~6;w3hQ$Gxh~%q2@~Du}5&=R%Byn6}dkF*U^EI!{AvC`Wto5}Id^QQi#_cAPrK zr|Bx)!<XePH?G(q8P1s=Hm_=Uq*lmUS}SCfP1cXmWBOVl`$4rnQNKaT+Py&{j|Y}r zTz(F)lg@qn@OP{B0(QD(gJdd%uxx{5hA<7%xhRBm9)y{Y&PO4nM-(zpwXu1FG_o*L zvq8G0kZ}Vb$CIhsAl<5DTDvo$vfBz(USMMJ2B}a%EK<_xjR>z;iKn>`UP&Pfc$rH! zNTU?I(U9IC4cm?IEKtpG&jzWWdxJDaflr)<%8V^k1I{=Fe|#Z7KhElYNSsV)yqY$A zf>%w*WMXEUZ3G^|@pK2{!z}0K={vuliI=q7d(RMFsy)5oo(9cL+N%cb_4Sfo+bG)v z62xsQ!TFOHN|0Lp20ONr!3vYO!ry8*EO%bo9y{qTd`E*u!%;%Q=UxkFT_ms4Kjki` z>+W(nT_p}O*wSDTpKv(pcDOdXMmeb9j0HL3nzHqEe{+3&Q~rs%)J9$7&-rBiU5(Dh zo66VkXxw~L{`&gAHGX_k{)zh3#k$4U%k#SU%-OT(x~8MiaM!UUSK(ou>mM0Z2wRXh z5!FuC%>wS`W|ARK12F-31fHHKE34b?dRBpA3UuZmr(Xi6H{tT`_*7y6#Xlc^&-HeC zffCk0-9%{zP(o183<SMS3AOo`xbH#BwT-{TjkW)mxMd)PXK%vI86>O-<Cn<qfk?EA zy_tNA;THFxFrGbzVOm#Sb<^R`GtA-|j;X70S)5s!RB#&-f!$uW#bvCXl}QI@F3c6z zI5yOM;zGIGQEvJBb#aY9=TY@FjX&p=*KfHgZ$tejH|4!w&)X6#?)w?&kguarRU{fE z;Zwn!T${`#x%PHr{O3KmMZ<s5L$1)mf0~cu&o`=@^$=%A#kc5OcuS3oXxZ!{TRw47 zExJa!rKXW-+1#jV`J~a`!@kb8?2$FeSSP#lf~-$gb!uA!GM%jHydX2lbf*@eZgn!F zB*{)aB$;HYGfoNd&UhsxAeT)3v?ncjI%e4VD3-jnR;a>Lw(8qdoi&)I?FE@m#Q;Z> zO2dCFm28dcJO?nmbryC`CR5o~lww+c4JkU6YE4mc34l_mNjaaodoofrZIn!2t1pZ9 zrfwZBVx<XNA>E(gjcaWvt1BCVCb~9Vv%YnYOpc~xTr!H7Eg$eG8Iu#YCN<ZWVXZ_5 z5FAam>LApOrhq&%nn9I}Mhvi{Q(J$MvC%ZdwWC$=A0IuWRRD-PYx@wM^kRtkC<^g5 z3UAdws2YWMq({-MI!Nh8A!5uZr8T2|lG#y+h;~#iCjhBWdxnmtV>F5w#7Gg@s)0~d zgczZU@K!CP)J00Gi%>~j5u(Ht>D-8~B0<&`ecCguNae-afRPDo>$fsCfo==P_ykQG zqol|-J%s8BR9mf>r~X!^Cg5!d>sK7n7Kbp#3bJnOPckz$sm;VEc-1m4t7Y;^d|M)l zhai4gEfc+DI{}SlMuH4Rp6zjCG_-PLtd;agRVxXtWk;qW;f(xAR*yt2(2hi{Cr2Wl zsgasi{WiRPkBsGGkf!sARs)h-KElNFk%*aml_E7dUy#{+R92gh%98m%$yC0kHGUh} zPImwWE9M3;WsM1lvQn)EBt9$AnyiFOs|rHgibTd(1(~)YGFt0TGHKO#b=&B6taYzU z6hoO}QV}v$jJL+2vc*h{RxuT$RZO&|C~!mpFBW8`_-s!GXZcCSxu0Zh@m@~fmeyJ; zY<+M@+f-q5c6JcgXSJ0EI~K<C+7wf6HpJT&=-O(9S&db~iS+a!uC5HubPWSY+X9EM zDS1Jfk*`fjcbj0nYMpNv)+T<QRuSB~XokK__;XTHP)l;byYFw)mkLiMsMFG+uIY<x z!5#POTPuVQh8V>)&Lrb2GWOVzpjM@B9S##wbqLcO(^m-341tNp!PG5s+zQb5>m2p@ z;+k?ROhsmxo-8nTo5UwdE9#!Aqw6=g>))*>=a<g6D612iP5eE?3V#na^Z9NSuWI-A zQ0wo+NZ#MW?4@|^Vtm_U7|m<9ITw@dYW_~F0VB5Ul{F@;nF1Ee)jcw1!dsufzK4)R z{b2gEC(cB*)2(-6EMO8QgmJb9XTFzN(>dAAm{!AB*8p0)iEdZ70ZLwvjOQVB)#TwE zg_JdqX!{;upY|l=<>e7vl4*Gv1Ko+sn*Ql!>UKsZBDF##p#e?Nv@S2x0h4=Vyx_d7 zFSsDn1^044$XG7369+kAPGBlmw^Ly*SLfc=B~$aEOXuULr{|+Vr<>2T0{`=qcDyK) zT#u~c@YdvQ=VU#nLCnA))^TQzXjKMp-YYU$qiWS`gLc(?FY9X%1-ynqL!zcusKy8= zozk*b#+*Ge>kP;$CzRX;)STbSgwsv6YTIG#J1Ib6SCXwjW+hT!Vx=JKSF-Kj$@og5 zoqQhTGL`^lG-L7B?_l_9+rI}0%GZyj5!TqVJ#hv|8Px6g*0tQ(o_HKm_*0w?WKt_^ zb0xJ`3Qwk`1qn8}-5%UN-wMl7ty`GwsubP@FvfDhJLjhWYU}-+ur75>T1{}<eAKIV zEv*sW&B_X5IwxR|0O?p<Ev(DP2x1xsta`P=J)poR6a}8S2yf*<g*PT;rZsU@!RH(2 z=^esH$vJ7I!8!E_t*?NBt{pNtEfJ{P-DnH`YHNL!@Tc@7Q<seI)V1b`PjE=L(}P+y z)(U!CIyHpp@j4hajiAA$Rl;-WYwJcrY>ES~hvnBk0(2RyqcX5b9K*#YD$46Vs4J~s zSN~o;HNRs1kT=h!rQ+_26qtiRUKKDYR3K^TD?rC8Fo-b~czY@=d}KBQvkc&5{~*)Z zD2K}Kk(ulvTS2`uzn68Hcss0R)ORwGiE`;oM2E^G5sgd|uymyas-yI550eM5(jJ*E zrFUu|-_4X_?F4i%G3t9+J&FO4W|XS^2S}rAdK86-jB0~U(>Fl6;Sj_O^D&<Fo|ozQ zI&U-AsgLu<wU-O)Q<A;Zjvv!fVA_~<e_3$b(p(tSNx7+BPWUACT3Q|q?~35OML7RE z{Sbg{L@+nVXKL{IMGU`6PXh4I0CWcLUPO2Sz2<lN7+NV{fc(o=LHf_BsX;a4035)m zieaP%H4MRHQ09qJs-rCUd;__48O%@bC8*O)ApOeVj0URZX?<cxsjwbkNga+L-vD!s z<CZD~4Ho|-wnf*0x=Nj17Q#p<#yt&r>l3uznQ8b0E$_baJN~uI7u;wjsuh#iE!}NS z7(uYd)GB+-X!v^xW{)It7a82Tl-j9+w$dF;@cH|hRw{Vc0#zsL#eyw$ba2{2GPwOg zwHN9rC4=`hYP=)GCu+!G+hWky2395$VA8D60To08DITJNcmq1_1xE1+8zKZITsb0k ztN6rJJrD$)tWpCx(7S345JTh<!BPhziK;*(5$XRx_Wwi`QFJ5Hc*s)^q?aU(XJu`| zL*f&a55dqtRh$4-kMaI12P3cys)}<^f|i29WvCsPz~b{zOBPgDmO5xbOXI<o`g<LE zfz@jSR)Yzfb#!q0!VercV7}|96_Tt;P3t7wGr1Dt?#db=so`W3Z2l~m@Ml%hvIzjr zDx0xv0u<#8CznmoB`qg4{Blxva`}nN&yzD&luSKw`8O7Rg<8<6wVD|#zjA1Gj8Lw< zRgoLN682>lM)-_LdbmQ_Qf8LfgdvNpQ!qV}XTr)E58H$dh7yfaNT_$8xV+K9!A6c2 z)G6yE!n00dj^Dl9u;Pmq{*~WIP3P80sof_ZF3}~eLXs-b=!Ivp`BeqFldE8dYMBB1 z(Co5uA@zR#k*Pw;LN)BJvmd-`Rmvmlq+#bWT-rfD1Mbs^t9s*Z+L`r(O)W*E{9m)j zyFZFr&6uf>OAt>)X>&ejgk9Q?{UgBZVTG8ZS2GAZufUK;<M!TUbCH7gRev$yp%R6F z7mNM%M%ldH;=!`--zb~ayI`>FA7W(-pl~7}#tI+2QJC$eVY8WjQxjx~KQwHNd(I7h zXDTrxa9#`Ulkp0_tNRJ46LGns|8_3M<zJ-ht$AO<2Xhznn+J3MAR+$mgto_6xLaYt z2C&y9#6s>(EW9A)@r#Tl?pvXjBBj23s3j&dkA!4_YJMDQiRETMEwS8XN-b=Z7_21@ z%9%J+%YuKa<!&ht_0?LmhZYaVbE(`=j^cjbo#=FNnXb`%tsC4>xR}>(ghsnKT-+Wp zLWL;S9GTdjuf(2>fP)GkMN!m<(Kj{1Dvj+Hk0RoVt1B;yd+jRr>$uPmI#-OR$2jTG zZgwsA3^#<sOuNlCsM4)WN(thVk=>vwR&HE^=!r~(Dx3B_v?D=$ERqB9S^E;ihn3iU z5NnELA(r+ng8api7HM+fuma6jyw8+e^=%Y&6(;_(53~N{b8<)!5AFL@!gfc)Yoj*v zLtV4>Vd8hu`}R>GBaVxH>AroqIHDJ`{@r)qfm!?WL2Q`#s$9z7Vjjw1zeav6ewx{s zlcKPf549VV*mQ_#Blt+hZ&Z3cLG%ysEoL*ZI?BIg9!F@S{3Y|eVTI9RjtW_EI%LHn z;ru948#*)%JNmt3i-b-51D14G@*osp=oOzF!ia=fC~E@j)qpLQM#9*!ro%L+<M5D` z(Ey!D_{#yLXffJT2dL0As0WoSf%s~Ouf~Y#qu)0{P2c^o(8m8{$#Pc?pb@DB?#q-| z3dHUh01`|-tP#=hfK<e3A?%fa6rKXHD^kk-1kM1}H4hXk8W#!cpaLrs)9HUmP%&M| z;rq2+k#Mx%Iv9H#un|Ti{Mo<=E~N`t!Xhc*4+oIW47;H-YUp`>XHJHDclUUw9n=D? zRKo_9BG8W@h}-Y_nINl1Da7&V{wl5*_>F|`7(g*C#NO)1yXfGP1k0&{?-EanxF!;w z9?=A!A&d$HaaRS3i|?m`EC^|LKjIGG9|>n6am`n&LaPY|<dy=&Mn@_+RcIQdr{R(C zt&wW3imQaC&`=#T7m6?K@5*9jyfkG$%V|OcRJOXGl{HE_629Ee{Gyd?#K^bh<`NI~ z^T%_I?(+i$-GxVEzAW)@9E?MX`>1=W6ZH;~K*gX0s`{_@mqUr6)=ySq!ytCM5<^-! zT8WiFtgs(?Q-w-Rf>b`tIO7#bZB}APQcOSY?keV3XwQoSOvp-TyM_UH=K#KcSXVy8 zuF1o?SVc6;`#~ZEXp$n8Er2}@Qq%BBfc4bCq(Q~_A30_Jq^=Txk^PgPqpdW{rGQ`$ zfHF)1nvrnRfRQWNpAWGmNZ5>f(*6=aM1pJ>$lqVcA*A~TOdP6ykBsJ2q&X%1`7oUG zfz)d<TU`V*U?l8R6sY1R1p*xyoOB9pgs$+g#o5(OadF&rSq>kR<%{xlS?+QxQ6$WE z*i2=ajr)deO%Pk;>q<WiDo)vt6fAilWj_cMM}pHsE3{qF@Vq`8Bo+<N?(3A+7|*-c z3-2bKe+23E@SE7W+@F6_7h}19?Ox!dI6apI69#`~xZXWm&gXK#9iJf1ka0^sWN`a% zKI|^vo*-63p4E&rzg&qSR&7cQ_4@=RhWdRBG$fxZf$7XjCy2MnXl($wGSTpdy)Y(0 zs^PwT4t4LvNLh8PdtdHH-COJiVOIC&4{AbhUw#*A<H<-q3}n=od_VLV5cmrW8l%z) z&-4%5AM2PWmBAAYe=DPO33Sk!8+ngF9-{PmL<`lR&U+B@v|VUiCHALum4oDd-wW%@ zBqf?U(0T+R4g<t7vQ~lZgX~zYYCt@Qsz|AZo(ICHa2s#RPbu5bhdLt?{)dca7Njwe zaB)9wMBOmurf$gTuN~BmI?xUbKEvVNCJLr`oPRVw$32$j;;vN|X1YF=9Fx!?Ox!gG zH?b~3T;A6Y3o7K<MnP&xU+tCM^GzI@_!kbw<1RTM=f1w(fQJKojuJ!NGP7^DDIZpv z;{&vLIyVj~n*p&ZP+$y>h)R{I_5%o~@8h#Z%ydt<xA@+qGTe_(?ESn}+^u1P6srnS z>V~XzKN>b@DvyLW%e7ZL%Mh^#22czUa}DG{d(Q&vu`?)}Pc5zl?Z^i?we+|3VugDT z=64}$s|Ka81ku{pCSiqG(AQ))Oz+ajMB-_;I#%FRe=8I?Fj!y|N<jfbU+awm(BgWf z$Y6<MFv9a;M9}^CL^c#1rw&EOzZd|S-HTSv*!0$n#O`XUKpPU$WuIcN8tN!>*{jnX z>s=>Y84jD1f3P6vX6~~w^J&G9Od6><|NM&Ied8^D$~Svc>4&J~L!zzf<HoJsB>!yV zr#(0UE|f-cC(An<zmZzktN3SK-$*TQs`<ULx|rcVc4@b1c&&?WAIAON>6fT;us<#T zvihP-l(Rd(fRHU$?L;YN=Zopuom|jO)0&+_f_mLWSz8Wjz`QD}|FWu7Ei?O*gF31@ zNNeI2zh6adCp)Q~FUjP*i!we>)%Ifiw=z4AZgU9FP~eT2$AZ&EJMU-}coOHG?NQe+ zOGC6)l_muBI2Xd0vD^!?I#n&J?r%)vf;w8AULI@*!+xuKjiyuAQX_28u^rUT1?f<X zE{95Al+`oUvc~bUOy17yBzJj%+do~V>p9p<24rH4YS*6XfUF%u?+VE5n4bVLH{B6r zn53YN)a|Mj)@SJiwT=ruzp7NwshH=<UE8Z)k=bkt^7u7CAzQU;8&Ghov*}$m!c#gR zmaX3P-etN0WljNNdMX7ttreb3zy&p424{4@9O($|SgG1Y?^JKSmj1G={(#z579?@- zeBKY_(^w$C{fU6AP9t|s6*lOBYMN%(`<Lm3Ks7BPsKdD+%Oa^%23uBd#woX;rpg6M zLv~QRpv_aEz*KhEmUuv)S}ts&Q73RgJp+;vHl)C&hDK5-6=*FNY+ZG>hrIj8bYMW0 z#Jwb|-v<HTt?GOs{w0~Xk8TGKAb4`r_n~G~1oip{(okbgT&5SG20757<5u_7;EpFi zNm5^pcL>i>h{K8?qf$e4Ym*V*RE$B2ZUGkCkzWf)auvayk8FuA7dF!W$`}%Oe%VWq z^At^PP2e)P0`7O9E5w*K994=chl&Z!4r<$|sZ9GfZt0w7kIW3$Zrd8q0LL5gWAWd~ z><|sd@@g;Bb{_I{+eTFDI$w~9<nuC{3<6$LBW%<mRvp3T!P~_o$8G&hJUB_dHBDi> z6~YD;I6uAxpYXRqnfW$5s3L2{WWAn8J<oVcgDuPUf`?4)tr6Dh+<*!sh?PNbqN%`Z z!mJzuDs&qcub`{Fj^NgnfDXQMx+o|UMQ|Je%6dU&i|EdzbDMXp7?TO(_KEglCK`>$ zemr?KYvHGl-nQ?NKaREEy$Lr3qmvsqR~g~RqX?-cs(e5A`hv2mMg=Fiy!+7$GEqZ! zRtam>K(vPJRP6%fn&hCGstImgb3oRo&ze#zv^)k!D(UpDYGJbmbR(VIWf5&<p!@06 zF19luGwGULx9H0SRc=C1gTEv*FI5FQ9)$r0vU*xqD-3C5b}_R0uHk)pxmHk(SM9P* z3CMb{o8FZXRBO1P7KRo5@+^+rl_T05P{mzTyGgW_LTB8iZAU6(7HyS8d#>m%PjwOP zF9%tsR`}a$Cb(%80|$;e1%hx;P8_(r{`M#ne0o)^6bDC;A3F5^QVMdW67Ke=;50HG zGW5(K$tRfLbEsGa(f$FP&k^m{GEr_go(XPT#lYF*<&4vr{}WFJpIT8?Pk6nJnVH_q zGmze}Vm+i!H_pjWXMPe-c=6zdWq+#ATs${3GxKZ6CmP84(eOw8323&hjfPLWv+oi2 zAIG9;7R!s{_I9rVL#2pQZA;uY(VXcr#q6gY261Mj2rL$MpFymR<a4U_1c(iZB*0qp zLjQU$5yH;?bzBl!qx;u#$q;Vu_i$(zv9%v>PK9twKhZn{!l(Pm<}?VO>?gQ%2-mv% zNiG8-zwW1+Ga-DmpKi{A@Zo+HHx$BU{S224;RF3Nm^0CEV?Wbugm7VhfoQ8a0jKY^ z!ZW%W!MkRplBOW7&Z-eI2GcC0H)Y{%HA36c7={iY_{bU|Z7I<<QgkCC1^}%ciIBF= zBLRqD$p~#C0kDL52tu}<kkSCQZX#gSAczVeSpXqxYJ^09xNC;xpOB2lCw&Dls337Z zbfTTzMzynD+X%bB&p;}x=4m+j&Lqo(M3i=y(d`=k50KnehO)JM2~{QxQQ|uO0K|8c zAb1?lc$xN0x=ct>(t3V9#J5>64azk%o55I$=cBMcL57g&h9Sg?1CiJf#r54e2|Ivj z_yc(z#}18#-S5h4VQa}^(eP2(12G-M-a?-HkO5+E$_&JkA@;gVLo5wq;P;1E7Q|kZ z32p?8k@UJ+;c2{7XkUg#%p6Fu38g~1l4`3v0y(YqDCeuXBBE3nqQukdyCA+}>~y6_ zy@xcBr9#Sdo6urI5Tj_bCF<JhPt|A4S8NJP2G?|0SA&Ie@R<^IFTZ<~HF;*Ka<`@y z&m%ef_8m6hissLZ%E0&Y;ZZ}~n1$emakV1Oeh|X-iM@E{k%P$`ZhG&k=h3S2gs)Zk zxA|InvEz_4PuGX{(Ls&&zH;qZxK8lS@Fu(n9~BJXC2wB!xX<~4hu^#u)X)!?C!U7< zdAZz6;MRX96pa_oYzG?egs^zR|D=R@z6;P2{`fxw@3;YU#)p@@8!(7{??{KS92IN> zjNEVSm|r@YERr<t$HZmPA2DMeeRa|-d{iiaVTQvLXEZZa2C=l?W&-;j<orz(Gh>z$ zJ*>rWG|ho5S&FlnRe*C_zXx!p0nVp`IEjE~0KD0yZbHW%jE4VyEM|jITwC`_=QFV7 z#7s~aHk(6~0d5d&{c!Ys&f@yEk%S{}{5>2Ug1-qKYs)v%zO7^@2EJ>o{T|8UQ5`6g z%$_+C^?0oyT8Q@bLU&SyW4+MSFu{QdTGlLJs*M7x!rLb}v~Gt^AlS_Uf!7KTkHy+I z3WrtsHu!%xUc453r{f)l5qem<v29uhc&5L#i5oprs;O;fCG6aC4ll;G5n?>959!&o z{X}pr&WiEubji^{1UIpIF`m$e)Ovaw#Pn(VYlS1FMDRKNeUjscwL)*gTH!0)z09$L zquXaoj#u@;b?P~iV`Qz+2bYZ=gRkA1;3x&>ZP-e+ZxVi=Rv@VKDgo1M5*~3qCusB^ zIPR3F-&9GCtPdR2HlqDG$8w-nE36oYw?8T9@J+&-Y`TpWbZUsrUhY^6i+ib~nZw#Y z?ZH2`jacT$cl+T`%~4!8AB^4Qb$eX}jyLPhyBZvq>nx3Bj*|L@#tDuU^?Msh$D8%% z8|OMM*T=!o9Wpp{6MU>F_kSv}-JeR-@%7xRu$>snO$c0%Rd8BvaUfkWoYBx;33@RO zzFT^vGPK=H;oR7WDL!&>(v^Pqdzar==lDJf*;H7_%D!!9gKBK_$=f-Dm>|O?hvHsr zZklDjg|mk+!ZxW)%DHWd;|>QET7b`xsM`|XZnJ09_4>_RDX4EW{B`6uaQV|}P)>I8 zZCybXo_Q)ooUBUq<%*N(+qq@wirTs{gZNz^B7ZuaKKCP}PAjRo>8Kje=3;P%t+#<Y z&>()+M}>08pDTR!Un<-aK~$2iVk@qfv`v0DAi*ez=dgT-&toPRL&F$oCOJE6ob}R7 zphn-F^wsf@4KH*=!}dr4Y>)r7HAXm!EP~doj9|v&p>Yb{tqR_}!B)qZKvfrUCwkH> zs04Tc_y@)hagPJ0m%vsOdGuVSXqf#Y8f&-wF*ep#I)C4dH9yVqFxEWgWEgAUVg=*b zAa3Zxyx&Ogtj%=Ag{J8fU}Vj8CBlENi-G^AT`KsW*{DJAMlFIj>JYp!9>Eu*Q>3|z zNgi{<#WfZZXQj&Brx&YH=8`y+xkL~Dy-N%zZ;3kOA(P;a0?yBo*vH9M7`RzaX+M)F z1JOowJgqGiJf%eIsUFP22_8`H<{Gl~^Yj|QGZEr8I8-QnO28PhbuB1-t#EvrO_*t{ z6;8|}JKP?D!D@t=BY|WM$}S61<TGiuAW6ox5v`v|Sd$6n0(~3V%632uBihtEO*XRQ zQCpsEdYYjfl`jio<kM+*JKg~|)Zq9bv56CiR9MfK+l3aQ9BAETdr1XH!Ei|WMPj+o zPTK^H!DYM4w$RNm?V65q;p>!j0;N;6Ydc&vh{438>3~^B$F!>ijmm6Ob!a<b1|o88 zzqV~m)3tL!nx2*x-_C|u)*d8@k6`malQggK>N|D3)~gS(`glIhOKmmqN#3?{n>cqZ z>5S(M79CHYL*vX~Cv>f7Zq@A^^J)o)m*{vBrl~Op$l#yw={@E<YK0l<VVVj-zo<(1 z?9rzMm6{3Zp%wRm2(xolV!WzcAQw`>Kdayba9N}6?jG~JTHzDQA<SB7XsH#xto#9U z2=i7}3N_<42^3o^oT)H$R0!o`7uim$88Mzxk1@Dg%7m#6V_t<MLj^xzo)$=Qt?)nD zclDT4=cY{!GI$<m=y*-d1W&-6xM}I@p-q&brCiv&aDmI4zDc0z(jbLz6gq~?O)rH3 z%t9A5kK3rL5Y~;Y6xP86sbX^kO#NqC4OQPc9Hn<?a|A-QT}Oc2-Ja1%WgfI)ApS3D z5<t^(AGAF!=yZfY(P=@Q?nyyKgSeUa&Z*L-iL)fuO?AX?f54R$RH+a=nr48#2*b>& zi}UK+P6HbZL$$@l({1Gfo}!K~6{rNd;}sPJ477m!HmspRduoIh-6Do^cfce}R|sDW zsTCYcV;Ns$F}rXDz5%#Zbvz?bda8p35z-xch~pi@K_8$cDh)8L>39y9{Sm6w;mJW# zuZ2TbM#pr_P1m%jI=CQ?Yg^ckxE6JX9!_4TjeO9b&~ZL35wLLlW4O;#gn6kBuM2C- zO#jG54}uAR0;Cb|sA|kiuU1egfH583Mg_A`HHgW?Fc()XP73PD8U>S8VBW<aEzV4{ z2XW%#9!)XkCE7BVVC{3$?p#8)l?Dlb>WVRUJLdH-@h)N8y=iK=lz@2B7iGZuas5~( zAJ&gky)4{!ReSY3;br0a)u%lKp$0=z!>hbnxbO984|6*Ob4c=ToDW?fI#}4_DmX28 zM-vCR)l>({oey!iUe&Vk;#g(9!H)5jcNp-w{G2;7*;-gf;>E9`{F*zgZqKCH!chrx z`G?pHiM?%(EAegh+pYHZda%T6H<pmvfiAR!uwc8Wj)dIt`+{n`2o@2yDj60L_uwJ| zb`2IUwnx9{F~AyfC#)JUiQ?8{xCv~W;-`<G_2Wmtcv``jn|>#lTnGgN6eB{xtUvm` z=t(TbOJWO0V)2E5$2<=BZHiK%UoyG=29x8Jb#4IcA_FWto(5DJ?7)W*&E*hhKL1y$ zT_KO!3k#AvwjxbOE7DR7{ITy{{s2~_CS^scq*K01$Uw`{mwjkC`cLw?z9=2<M~hOE zvMBvg!G7x|X<la(n1Ds;L{Fgw7`4D6#r70i&>HmuUtk-SfZ8cWVr!HS)~GG~T-)$_ zSW(@(!JhEB2~IXxQPaCm!m!<753D_e(z0aC7*|&-?k_}EcTNUA`b+?so2=L?b%*v( zCVW_qkuw}M0)*{F@Tda6?7tk~zqVyjtoWJ4_u2B?tawD)VAp*<+_BM4e1#cNXJN3| zCqS89lF@N3fT*7j3_G0cOokIdQduG6LJUD1fc;<;)fVS8_%mGOO}m+72`&(|9hDf2 z0#!8FSn<MJKV$sl$Bb0B0i8s;3;#3W>Hm?iO8h?hOTs_>XTm@?^(Kb3s&qeb0I?kn zTNK&}em#ss_s?9b#JB&A__eptKJ7ZrkAr;2Jf~<wzPCGzyJgozrw1ex+lZG6Dl$`r zj*L2`?%ir1W*h|+uJ82j^Qpv*(O2x3PvSw9IvUP)N7t7BcxuQI)RjU2MwZs<r$J4R zl;@mskJNvK&h*e(@dFCar~EI5JX+6~d7NkR6z)6>lIh^Aju%f2<Qzn15{mB{Kqc_~ z(eMnV%=f;df%uVeHz=)Cpl|vO6AfeNP=!HlnEX}1Fi7aPHxYXL2BEo1k#;|pb1@Lx zrN$(X1e+zC$6BJ{$M^|llcv7QeOPY&dT$n%hx4iDMoD?tY=`GiG`uE)v}A~16T&qq z2gh^MxP2Ac5DxeGOQbyGJ>@-T@G+J(Z`#Q-YzSu)N1YD9?4ad8C^Nd_xvku8F1Zd1 z5!#Y9d+m8=-YQS@4>>nR%9)0nW;tFvWaU(1Vf3wXgCB23p7e1_Ww@6F(UZzN_z^hB zk$l4ej{~tVLCPtdQGWIeKI%(Uk>*-}6`y&h>9D@0McO@U^uZSCh0)K#|2?DE=N}<* zYp;mQaM)HG4x%Ie#S(5A>DVCc9$m;a9mRA18Nl*-12x0>ZH`;rHN&yO7#-JiM5nQ6 zJ^Wu>^f-`NZTgu=$siF|QH+SF5W$X}%f$*;AJjNo?QuR5j`o`ES_nl5DL-LOa$x55 zlFQUoftjTMZoU>k__j-AqU}<=>G<VxchZb9OdLj3mzhe26noX%)OLY1zo&7Q4Jq-W zxXlKhl%@)}T9Es0D4zM#WtC%P+40M&GD0RDkg}{O`{>Xz1Q|}qs*>Y}2pLOwQ@(on zxAN612j#1wOrlJn%D~BtAxh#=7y}gxau_(y+a_O;_`j4J+(g6%J>ng}C)PTy_^n`i zixsRGK8j&z!0_F$a^XX`S=B?c6I}`0K>oy0X=U9}X|;{~8cl^&;6h@>=c7h+*4nHF zjUL`#E5@q<6C8wpv!1wIp75P!U+@d-2basUDRCIZh{MR&;eu*r=DR_{o%p99o^T>a zC9C%xlzXool6(7B;hgZ7yx&4h7s7R%pkdw#8RCr+vBd6J=E!mgpxFg*8zHNWfm5Nh zUb=<uLb3ARX-8Ob$iN5~!3l%2TQ!W}g#+}?lGQsTVmDS`^X-uE<|E)lnBYS!y3cWB zd*P!yB=VdggJ{P~NHIe0a41UDt`AZ)F2l1LGky*)#z*t^jI;l=_MZCZE#Xr{5Dox> zi}0#PRU)oBhK(=9!C*~%LlrE=i=><^yqLEaNGS$7gwq$5f%2#F4hI&(G2fY)j+X;T zu{EDl9$>JCS#fUk==Utlyl=guh`w}a%~2_BTApixtI%N-&aE~%3=Wg<?IUl6#Q1a| z6dl6}7gy~&Rx65Z4gX}tZK=;ju)N>GsDv&oWkvTpR_K^N4e)=d$eVWckJvGIPN-ZY zNroM7yz{JN^klex<$5YD-hs~hY}`>Pr}?O4-3?bdBy^%x02{OMV56wpKLy;EgLUZY zL`5|GSD?jDtQ_GcX;MXEDMnCm_!8iw3n?pe>YMK|aKqf3mk4=fLsdTZG`xqhZa#(? zaia%os-OUl${G$I2Sa9kodMMDmo$jV7!D30RY~a9xCotb{4<B{<G-yO?#31ox=kFR zli)Uoo_p1WjhuIOu`6Nq6ZzUx&}9>?uJ?QJ954=|g>~o_3vQH-;v*}3xOk2{UJ&P> zv6>W*V;<`r{-<&Lid0XElgaclqL`TYZGaeA0(c^Mt{}xfZ8e-flAeMQejb%jd2Y+~ z1FoC&pfj8j?8=%tvaIb8SxioRKR}Kg0tF>fEJ%t~00s52f)G>tPa+Z!qx@7cHL>>E zz_J4Y#B6T>Grj@ds=~ubPMX`;ZOGQaLPaY}IPo<Lqs`d|<8daILp9?qI6NA2N5ku* zwj(OgczRIdY0&tWWO#$MI?M560IqAmxjEWmq2c^wH}=L>?(HRU++%g-YKlvA^?_9a zigB>&2xiO%DzYnf^jQd0*2$afmrvp5XKeWGq(Cr*z`%mO-F6T6y?-%B9@-Nuo0!ze zVL1Y~m*e`VOD9$Amzto{U^LH>at!feSFf^cjC#rb&og#zI=9+203J`w`jH>a?|<g~ z)k%g_f0+vzfr<Y0F1#TA6o0KcCwsjMZdHporuA)Yq@8Vc#-HTI3Ur|B`wKB6f4ei= zosO2fOUH`weJU98rMbGP=q?vZ83yo4k{=x+tHe8%`wiC(0vsB3wU6p<8oVpgQLcD8 zOVLH3RB&pxbPsWoU2&n2Y^Ezok$N=zrzl)_@)%*dDdM(E$4X$uLd&arGR1+lkfQ~e zB@Iem3*<lOvvWoheYI%?xo;rsg_~19_<w+2NJhh5xhN(b)^U^>=V;_x7OzTX*Cc1V z9f##lI!c+l(srlCi-OdEgfjWcDauTTSeyb^a=iGB^s)=PRe+_14)N7Bn)~9#lW>EL z4(S0w4+x*Y?ID8-LE-@t50LlZ=8*v>6yyA;^zGwp{)eYZ;F6OOYqM*(!ZTplg_22j zM4{i9mn!4+aO(~nRHLBe%W#RWW~4h_d`_x&fjenD$|!}5rzF%1+X5956_1w~3qJ^e z_Y%X4KMY{U;1Tm(pl4;nxLoJ+-N>rSbfqYQq`1l>Sne>8R?48XMuD`_`$*`d?Ed+# zFQg5I(%Vrg6PAxs_8Vz-Gj6VOa|o2!{}vb;VL#nP?u!eJVpZaF@ZrIzReGgGvK7Mh z5yg(6xljD41AtYMh7NciE~CBYe=lI=hM*2uj|Kwjb<#|ja3^|7h8=5$bRihyaom&L z1}C~N6f>Gt;^*@1Ez&6C3rmnH`Q&7?rV7PAhAROmj8{$tZdR^Cz4YK{8&}R}Ow9)I zrNSLBbc;(R&XJAE)rNR6OHw&8YcfoONR$~a^`J<Qes1X1fPM}R*b1bVi7+&Q_l@tl zu#i!O2T9gZ&YncZjTW{XDlYpZqVi+l#AO5h{#9)BK5!a!+O5Ziawa!7Lb>Ru>BTwB zdfHc~8v)n1Y=&s~CB;Vk+&|KB3QUvOb;z*PEMd)X>!9THp@D)EUxAN*94o7(>x3s{ z#>mnlsksxD48#Jsm9201u%L!qZ%_8mbRZ~r^ucWRNhCN+tuMgNlOzZSZ`b%CMvrv7 zV*lHzmjea~FQ_j6hi_{DoS~Ve<v;m02gJi56}W3o=ic&l!yoWGn;jdO41>N@S1Z=* zlDJnx8l8&kmO~;g8=m-8-*Z>~7*fZ#94j2P!10emzp;}N?)>TV!klUL^t3JZxKpX_ zgSVIfn2DKMGt!%g;52-zo%V}IvAoX%2ss!?UY#W2_oAncSxsW#449sV!)JPMJ3b*X z)0^?Ez2(@uY4)^c`x%KXB>b2;qsee|PSz(9Yk&r1rZ<I983U9kKAC}+JZo2dJ_F?z z8k#Wk87ZDE%xHq;3u`)@!rfl|9A7&v#XVy6*&ZrscE-C0$+ohrXYI+K=Z>I!_-F$c z7t-mbpIf}Ta6}Tk>m)`m7-99LpPD^lysu$IsSg|Rqdyl0(DfJ6rJyZ~qyww5g3G?b z38xQf3WU|xW0-{+{axVU5nA8s5kq||Mx69xCOF#Bmd%^+2SnfCKDQ_IFa}R#%s8)l zz08j7C@Vz>(eU^v4!wtv;8Je%KwwX3HePL4y^izMrMSgl!gdIOWWbDJtckV<@S>9e z{f+5V_uH|DnFG+B1=^Y%c-{vq3x&by*`rakKH-B(o{6+vCm~xOZkTn0bQBY)@NkZk z=hse8a^KO5<)Uj{6sOsz-mVuLBSyH-W#!Z`h6;Pp*2L)hE&NaRcS@8IA7OxyHY7UJ zn>r<?a89<<?ktV3(l*6AJ0+DNy$SY>O=@7^x=E<<G2;91G&`p-TJW{cXj1Rfi_b^C z1dB{rDDNoLf}x~_PXiwdAMQ+Bjo3u+>v5EKJ&tg%$60>-op%!tMEPxZPIKoQ%|}`* zFe`rg_@OHS+=3a=TjPHQ&}jk<*LHQ>_=9*JmQyQ&JF^d$xN_p;xOB9oU($F__TqZW z5wt`4YxMmdN?p)+4|`fwdF;jX5%sIEo&aV+#ykza`b}Im9LK3Ncqm&v54)+PJA4Qg z)r@HTu)J2dlO#l(D5y6(biQ#CF}W@MWCs0Zs>3j5tdxpOyN!D8o4`XNfk|M3AZwx2 z`DHi0Z4)fBcp`1ebj?s^at2u11=qM~lS-KZ+Ta!ZTJS%h*?^B?7IHrY$0X_C!*wSW zz`)AvgVi3>f_r}V-trWG67($EArFhf$z4#bomZX;uC5p?C5pFJb3N(Nupx>W)6ZdM z67IW4!>(us%ofO&*f;Y`pj4^K6UD6T=>%(zFVQ;OXRv1ZXC6V!Cqqxqh^d;J%!aOB zA3>9SK{|}{R}nFL)SL!;*i$1N)`OIUAHc`;1?Fd2XC-q-0;D+sM2TsHfYz)s^#*3e zjC4gokHIp5Sqz73#ptNxJ@JVi=*qHsvf;%1vIS)ghNI}<<ox1$vg|&rV2lr+fETzI zooZNu9_4TMoL9n6JTENyu5nt{x%#>DlA2<$A3XDyzOZCkR^5U*^V()2j}vdFU=%kj z*t-NTf!F@WF!SDq#AD|h&o}OAn7;(SeSU*^al8GaQ^;VrFdw_cCVuW&v;@12^Zhz| zVZ)Puuq@FYL}qS-yKzo-eLZ5}4Uf5zm@tb)8qiRmTW@Z_@@?X4VAe##dm<_`&CRcO zvD33p^iVi0;xsk_6Zd$^SOeH#mikY8#AxCcs7gHTQS<}+RMGHLk@JoBWPMkk1`U~T zaQ@QiS@jEAQ3HzG?Z5J!Z+tc2MrbP{$k2&~ABvC=(m^s8t{X%c1-3B41TmxMireN9 zqu7&npMO#PPB50hiHO532e^%%Z^TBt?~ht1ob84K<88i&u6S0YIkK#OICHmic6Iu^ zV##1c)aL+o>gtGP4Gk!@GBVUka$W8-)2gRe6-!CRkLDq8MI<KjCq3q+&35e4GoJdT z>J0451jh>vqXOp}cQ479m(g^-5idDk?+jq(^NsTtR0I6@p*dOKD(%Dycwha}DOn2_ z%tkFOYO|kjbYB_&h5$@Q!;t~T0v91c!sV>FA%k<@6)-Oys$_)*RF;PNy92dXjwjSY z8%9>2=t;!(EHo~pLiZE(3+H5+VMsoE=*_E}-I5>X@X!tdLGY61f<C{w+FWU=I??kW zL4>Hp6Fp6d)YbFLe=g%eWlXhKFoPESmirT^OCOj|NZsy15=J2L&P5RG)e*~MqD_uq zR`-?fUO&J1z{M|m7)yIbvwiZlq&IB#-3`BnIe@|>Fp*ubuNn#8=b-s|2wSlxECbKP z)9`dW3m=MSRbp_R!E;%&3C0YOQJGPt635H2a5RKt5TIxfaLZtrKN#jJVP>^n9O%oa z%&bB&sSma;ef%A>)0o13mH6x*_<6IJ>m2=L_q`Ilmp-=Y3I6NZBNl<-WU0Nfy6pWW ze#zh|@n9y57cCTA3q!ZCZ;fKN)ru@(<xEv*$B+%Kh>2>w_;z36kpr#~aQA$oQCFf9 zcMSX!+<4K^wb!DLlx+I62fLf#!P+Z4Vp?t7vm^p1l1t_cbx(<^#BO*G`Lo@M!<-V4 z6?3voC6*6vC3LU`G(UkZ5u{Z=)16jB!rn@)xJwMClxiC8*1RiQHi_oHn=m8Br(576 zf5fs0>RwL3tQsu|!i!U^c(sv+i@Qls=PDU(YiKuA{Ihk)i0{gpm?O3jRp^Eak?Y_n zSh=zvT*JNZ;_{cQc(}Jr2@l5LN0Sa~YDBYT6I9N_yb6^!M~s_vVo5|L+M%NJ{RB*O z23s_I>KLM{6TdhLeleKFaf;t~k7*XR9ofO!11~HA101eNBQI;_4WpG28|ADURsj0p zqB!x&5fKOs<&rrSx2rqFS;)~{nXaMA3K9*EmTcxie&C)=H@+Qfp%29Ee_k48cx#DH z^hOZvp*PVkl!pyoIVPMqNH1e`oOlg<Bv>Kg#7r5hu|sj<Pf9vY{Ks1eBToF|JGECH zTQR$=8B9gc4!}4J7^G8^opua2r?1wDuR*^74R>LjxaJ+57&!_BmhXVVaIN|%d${&W z-*U{f15(-n<d%tq{|>GR_ApUJR5Ie$KI~W<$bJueg@-ep+q<vt7h$fmU?##y?q^^l zgKQOwQ~8pBQH)Qj?zbdCX<MJsoLEJI)iI^lJ^P?lxds2dWHf7Gd!rZ2pwrThVL3<+ z*LRjk=U#(z@sz>cMcX<;cMvN72);}>H8mW5!1;3bCUC)#uzkr@q^uY9y{<|UE_Hvc z*!ryRe&_ww7;n3DThhX+`+<@EUeXPUxmP)AQ2Fk2{tB{xRaJYXZN;xD{}~`5Z>v&N z<wLVA#?OVk_7(S3ej9*yxL16MSjbj4y9&Fy8%Zrnc`1$z*&4{JyDhDDm9N_AgfdPj z)48Iy^3MTy8!|}E;dCfDwoA2>lbn@r!xY&mWg0uB3<G-ruBH#7-R_(KXcMYzmr9fD zm9GS-Hh5xk)l+Y)j)q@Rn8rc4Mb09?DuQbEteC(z+-o6LNBB+mj!FDoulgLCmL<5~ z{a6ztzTV6G?oD&6#NvKNJlD&JngPl?q%zH+5^cYD+Qo<;^yUo?H1J624h_nCBFOqq z__o0J8hjtX2YX)bB7~DY5QlFGd`-_0x>q5@C>jQ+O6-+kj2EiJKlgsfKqp1Q2l<8f z&1I91Wq`S{znK5<zQVHG<ohe(^hZ$|wQqr<G7Z%pO9S-O@1+dxZ{YU+5iYIwt+1Iv z$GceZTEESD%}?!*0|!9dK1}?KpYW?&+`pGk1qwLW*tcOj;`U==bifC0B{&0yczNV6 z0eG@HfLnENHsYwl#NQ1pFf!mKV8w$nD{hf(m5Jw~;jac_C2$z)m^Jb1IB|oF@ZJEt zPQZIq#*E0zdVQQaK|jBe;>27z=)O_eqDae)_+KMbw)*SyLqGIsMiGAS01tc(j2s{M zdtjX(^-eUrV*n&kL>XaE4lh?o2wxiPw}&MYM?kuBF#Q0eaY%0;OfLkcW&l&S$%&P} z4Y+S^`@Vr0f$SSIlREMEj4<>HvzE{$!*>gOo1kYO9qipZAUzks9=U(k*-!qkA8g># z7o6QNxNnPDzM?dMG(#mWhSllzUbXmCBpSX)Qi<CJqTzQW*FlvS=T`g>8efZZJE&#t zmA|fNscNaD#rI%RkAhg?r6v&hsgDt-N|@z0m2q7JPx2H`^9--z;d(N!;UnQE28d?D z`zFjEq(2UxdQ6Rw&E$<V7_kFXGu451K{NdN8)I<|j72pXj34#uy$t_A{SY^L<ntxm z?qrn0tiKROS{aNqyCD%qnr1-NtWt8+etlaZ*I13l7re)cu+6Mj&8tOqlop3a7r+rm zwyy#Hr}!{4<h0h;49j@jZgM?d>MTQSCi-SN(cD7A^mk|V+{$0W5y?9N)~yh~;Mefy z;p}FA@wWk1f#`jRh{-iHV~KsqAc;C(nL@&3IU6_xB+Y)dP3<+iW@nVy%SvY`)%@s3 zJwHi~F^$yDEn{Hb+bSdBRmzlbkFOZ0)Lw~S0dHli-4iOu2SD)sn&B#O=>QE!9ZwF> zW%-KI(PDWNpM1#=thAY3b28AzF;>mne(bit035aK1HVQI-$g9{0uK}StxZ*!{)1(G z;5P0nh4JtFuLfdeGTh+Si-s@uVY%N(OFikem_^IOotIm%OZTk(=KB=!ci0vzg3ShV z>Q)Sm16q_Kbnf>7D)(Xl`G8smRdX?@<qr7JWP~OhG{Nk+=e_tX^Q!wO_{qM#khczC z0)$9)kqYmf^5RtR53iOn6S|xF+`v9N<LkED#FHNAiW0<#wq56Kx1$a5**+x3w#tF< z7s~8w6QA~Iy*g;`-XPANg2(Y?L6(e3$0o9CwTetI(Xckwq`w571?^Y?GSkA<i0hQq zZXn&QkX{F*Ur|WU^T!C^EO49n4OEB3jfnwIj3nC{4Ohx<*+2Kk*i-|pXB1iw0j;$P ztuceNfJy!TC`{^aF!?*6=#G*6<8_klMI3fJvH{{?ar>zcw;u5A4iTs*ybsaSuVJyO zF!4DL1MiNIOlCr5u@wmu*L!9tz1?N`{9+BXck@lGO;WI{0DF|eS`T8)4FbGbf0qIf zvGg$bcTflDM5-URPQKFk24Vfm9}TC=xVTKwW1TNf{6NBu<6xS-ZO|OT#C0B8G)3aX z2c%Fy)4Dsff8v=ChS`ETFu4-I(}<eo?YEUrzH<K?Z`pHv;D9^p`&oQH^r99SfyeX8 zG}ZdE_;f%B`dBw8zO+F`O@oYnh=#ACGk*_|xl04FF1)#EDxXeSv*N02uN17%ReCN! zQ}2hiy02_}UE|bLXVleS#ExB`T#>dqO3VpJ!;z*Vb7lm@(GO7O--qjBgHPq8{i^D8 z*H(MhF$O4Py1<`ed^k{uHs))u<KDs_Sx_|O&+^{YPRHIRJa&$}{=JZmh!fx8@r5a6 zwY@eg&T0G&tKqD@q@k%Fx^%MTd=qZj+w^gOR2V0#>n$YA)SvXXJxS<31YZ6DAN<f5 zI5Se5PxEsY=DKz53{UREErfVfV!?;2yWzuC-7r~c(K4V0LoMdlYFvct&{JbQr_G5i z-pC)!g6H05Wqj-reBxz4QHAO~)Q`?3==Fqd41CB(gkF?mx#+63!*$qh_<RpPurNKf z=tet{r|4a!mBVFz<o(vHWLMTy5^jYQ)}gGCM_@}>95tm?#);!(zUlr{T;Mm}KeX80 zyWeHy4qe4+t;Ybxu7+D{xVRq-&rf{RRm^b)T=}!1PsEW};Q|QZ7UkdWzXQLGPgyjq z;&HGDCi`fw9lXYIp(1S9+gqf<<~Z@AzOrlT6|YIfh4xF9lGk7-mF+C%RD3?CJD}S4 zX%Bn*r#%|S7HO<U|2!ei=C>{y;!cgkMA9i0VsW7oxQxt#Sgvc5w)zo^76h|ZM(=;G z+Zwo!77hK`NC7s+L_Fz!T({|_E<@`!p3~o5?Tmxn2WCnIZ+-2RE6X!ok1OkVoVd8p zWQq&X^RX=wW$O>0959+~RRDldw7-wAfWs>dm>tDf5&-Q5OvgiWJX@sQfO~YnU>*aw zF92>!ALL)X(6mMRsI))a4LL<sC><wm?89!U^<lS8;WxU9+*<~=!}h6bNnGe7DAmvx z3HQsMgLuvs=`=h=|A)Lq`bX&_&5`g0h@C5a3}P1{_AQQEwn*O<fxA5lBfVs{eRgSl z^%m(ojvq)cje{wjR2-|14{9C-f_YGWP1<SuEU-oyA81_J))Q`B94rgfpj5t%aP+Zy za)H5Lw%P)xpX=ej#@`LUQaSf+t;Z+P%EgP!x0C8(XRd{Z)1B{iqbm#Oc*Mn}R%N<M z2W9B#1u>Pq1|D-9cH^F9@T-_0PNJ|soH`H%Cm%}3i9hx(;oO>P(u6GWSC!3O=}jYL zh+KAKq`U}SI1LyS52N$xC&BEBox^}PgwyQYf*kM%FkS<vHm?u9osWjEDinV{f}z2( zq6fE&Z*3Z+RsO#c+jN82U;mBRhc}3|ZsMO=Y<6SKs9`!5Om1kbZrT<p4piURo9T@G zh6Os6iiW4f1aS3f(2RtwaiXDjP(+s!3|k~aQGfW6{wVy6XdE5~kT}=}>Z%<FU}6Rt z=^{wkpS(#%kMzY|RiPhGSdY0CPh=SgY99#7qX=uH^CJ*d?1?*O$*&nP)lxU2W<;%} zj(D}CZbF@<siDs5gk3ferv@ymgGWm0P><$RF|e0!mTcGXq}Qah8@-qb4a<OD%mWs) zK+!Xy7Y8KLlu^wbNJ=`_;JPRK&{f~ClDadWC&9_iSNyRhnX_K`#XE9ZOzgY<jyyJl zV1@HQ8|&a332dXjt_6ie{Y}A#+|93DE%>$ijY-^QZU^}OJDr_;(b5!moAVo~V~?8u z8Wiox?^PK5#tT;u-oq9r_B?v|g!b4P|2NW_Lx5pC4Oq`jNpg&E@%9lu)XdFQv!R)q z!DiMKUGIqo=!yBz6T9W8c|%p)r3UDSN8q<VNYmQt*>F{E4D3gug^wTyOxIv%VB&Ar z)8fwF$7;vBkpFb<x<{RvF1S5jU=wGodt^#7JPjTQpHfy<vr_rXSGO&jy-z289F0l& z->a{O>Kg~EAE#75U#ULa{}A|Ij|JSx`v$@r6@%hmN$&ZtB*y{Cy9P<dD<r2VBtHX^ z1hyjpzo`X#_o-D@$3XapffVmruE5c1|5xfOu2Xmao50jS9wti=m`*$wMFJb6klzL5 zNo-MIApAcAs8jxxpz}Jxf1~$pU(|fdAicK~dS->*BS4SB+>-;9ux0rbY+3Fzq#qav zUs8zET-Cn_IP1TXKLq5543d9ZA+J%$R|0t&Gr&rRX32d|fineG>MtNfD<9I&2Be>E zP)?-4GvPza;VJ-bh7TFxuR@4+{U;D2<Rj&VnQ(p;ceGL`o{YRxIi_nM{JFxghqH-o zp0PK!YQIz5CIjJH2F7|-H@Qu0;xnEx(B;2TwCG_!Jc$?xk5x!K<R1r;2!JFm8YX}w z9#o(V*WhpKLR#`f<b^I&^s$K1{6be7sNI*~d&jJI``et4Hl74msST!p-^21f{j`l6 z-xv)aggCL|6LhVj1hd@A!9G-65#3td44Z^@k7^$+7Q6dW+P;EgHq}0jV{;WP-rDy< z7s^=PM~MsI($@=JI&n{g^zMEW4Ymz1*mUCEk^iRcKlVn=YX&>x1l*w|O^+#^v0i>i z)L_nwSRQ66=l+1M`LVr$ecY`aU(>|855j2|@Hje~do`dK^nSfkolB`M`@dHATc~dS zV0F(b)!nO9R}Ix^vBZl<rMf~=bd&Ca@rpLhROnqB_yzlJ(Dm44u^9-~4iaoo2v#Ws z%|K9x2^S87-Y5GeO&Q;41@Yo?35OO8qCFY5@Ht@U!w=kWwknuhK=~N#^9zyil>XQ@ zKM@x1xyn{{eC0s+PGt+g`o=1TsoQpGk7acAm`Y0gI+EfYJ!Nz?3D>8S>Iz(-ZuU2? zVv`j+u4M03PuZtEG~8bP3(SQd!(7Ok=mQ1dF8jRC>OwQ<@eFI-^A{l3fSL0utEm2P z4;%$l`%&kmD6L=p%hq3Na1XX#53SD_Z2blJ^$yY$8%i(sJtV5Ir5CVc)4+LreT#~= zrf9^Vq4W(JAuy6c5V9Kx-7xsj2H*k6Lxwimwz>vK8Cnj|_V#wb`9`YQGs5Kt&J7db zCkY(ueqDKI1{N$cl)~Iqr0D+`-=oz@F08<C7N3w*H^F7(=2A3|)&bVU@GGimn9FDO zEqA85vM!)jE>l{`{Cg`08`&XUpOAIp3Z;?vyOlmJhE}pz-#>13O>&jM%Zc*xM}755 z|I}66E`4LEt1MLX_A6laQz_ZgWzRb`uae&1AAU!fzE!?i%HA;m9+H{WcU7hb0JD&8 zPja9OueA3~xUx~gwQ`gg9&{m9Db%Z~q5m&goRxT>DwEzS1j^vFlxQ!n?1uw;G|{Sj zlNH3tz{X{Zz4FJ4l=!_uLggE;<cx!yYnDls=PnZMR*@t#9OVvT8+sUx-TIP$<P?yW zvB2fcD5yJqgx&!swVslxHm=Bpn7{A;q3ccHqAK_Q@$;NB8#BX>$|5=oATXdT?pneO zjx3UUrDhGFHUn0;RHoUCTcKu>#~RnNyp?IG;3Y*PaA~=%GcJW%iJ4A9*&yf)3^Kp> zGXv(m|L-4OpEKt?`@VfXpZDWEWJV+bwgjYpQhWB|-HyxdLzPgWvotv}fe8_wlWAa* z9bj6q320bpV~l<ClZ+&DjG?b#T~$?Y<4m6|K+{Y|qYRNKgHSDWv9qot(Kz+@r~<Dl zW@+H<s`8C)L+D0#QMw!_Z0Y(4lzWRK@U~e)S3jG|(YSCyLK<x#w6V~JRe(l98&+>a zdK}-h@odEJS<oM#bhx8y54vokOQznToZu|K%hmE(_G}^_4L@l$30Uk3A+qFO;^Kh7 zSH4MR-{7FgGwS8eKRy1z;eS`X9@i=_7|U2Mag5wK6G$Fq=pTL1^&&gyLLwOJh~9;7 zUz@<W@-7n><jXhRMX^|Ok+h9&CQI(T>7jmEr38LEF@0ZgMAJ1gouz1wb3io5{@m~{ zJsW8jT^OelXCC(4YG)GO*T(xgb3b2dUj-D-KWlRaF|cVKR~%9r(vwn;r%WG&<vA5J zIEF3lKdBTWmGO7|U~SO79d38%u(0+|moy=>dJ^Kytq~g8b(;0twNIW&HfFEez)W>3 zLx__TLqs`_3|aH+iMF+(0XB9>qKz4n0cijtKhegOz;=Q(Si4GV+zq{O(W+Ve^UuYa zqjRPjPqfJ<h6n4LSNFA6%Ysj~$+VXp(NHT5od`_n5m8co^UBc8>t3s#U40hj)zCDj z=C>T9b5<1zoDD=>bvD|P#1#kFgPR1-G?8Mk%RVke(8xg6jVnG`)Znlrb=v)3;l@)% zM{!Pl!ojU0M#6K?&kVi^R?F!d%sdMB1>Q1W_I$cI%d1$&jKtBAg0lL#^#c6{ZJ-_~ zGvKs~jMeMcYsndK<Q*Hd74@0x#p^2Sxs|kuZ}Aqd%QQ{{_WasrC<}>1HubvW+Ez>i zURPi5HJpNnd)4drYuoI5RzT&AlWK0-&N)WbtX=_bitoFhO}I|M$1IJN-TF+uZol?V zoD=<ZShqBmm>FiZk?N6*sXb*3$Y(T?`f!~5UxgekQE@mb38}qm6y)D>>@kutdkk$@ z>@;ChbQ6?%qb)nFpn~qwhzMM|7-Su@F6VXq=oRZNwTF!bRm`A7w1-}~ogB1>(ZE%1 zvk|o#vQoRiJxarM29p_0`bBY^5c)+_c!&e%z6P=xO*VS@!N3&EuWa0f2UA3i`>L2! z=|!(bViym+;V8xzcadlaY9`dyW(?{{ew*QxV_eD|d$dT<Di)kSr%qw*;m-2lzwBSR znaQ6x-p%Txb2>)qDaX=`BOu@M&4nDL)hG*I0aR75z-%8qlbmV0Qp+0qL%uT77Lpp+ zn2e1B`OxdS;q8l@^-9dDkhAYQLsWjdOGy0RwvY#|qty08p6jYH@V=7$%|XLZ`^z@j zD9&$%v)M6w3`B9>K}Bu-2{J7s^4_9mR9;seAFy1_#dszBkmV2N`|7F9z$oZeueW>& zQeo(%*}6YhBOo{yjqNZM1oqbuqYf{Zm7DY$gV%M7KeBwFd1NQoGeCsbBm!)r*QGFN z9AvT45&I5$@WEk3WkSlmu1s%a)h-|tF`C<#`rjA7#Lj}_6?vZtO_8)y0)~~sSKO3A z98qsV7;}6TOckq<`k`60;oPt@+nXJ90O`$8lU<;?;y8r{=x>;(kl`<S*4tu!<%|9D z(!C<Rp=!$?!OU6^vu(XL7{x8`aevjoB-|gK2+29t@ga1+XGiZbv^vs|D8Hm+6o2K# zfuxEjE24;#k697RuI}JRujo&H<R4j)%FgNFUtTdF`iX8y6|+Napp4btG}0_)ckrLB z7(jIVFDqiq>JF;u<gdi?n%xBz*jtNzJ%jJ*kbU$r4RdQ7j_<><=1cJXzs($GzGT`U zQl}zTvY3!j|Ea#4Bx<~Bth|?*X-%&p;(v|_1<t?RH%t=LHyvaO>V1C9N!Kp0nvr%E zjWi2VGECw~TiJREq{n}O9!84^`hH~jeZl+;hK>ZKAkfI|?2cwrxPehom#;%^Xsh;y z?W%EM{$~yrlIA{J%Z}=s4x$nIzsfnMm%Hw`YBc44<lw03hu{~)d&_H?gl`?Rp24t6 zblZM`WP)kEBq_4~Vn2wVXV3(R?n@9!sBs8zj^t0k#eV-Jpx*BEMPAn-Nkif+PDK8t zz1g%2-{Ivq9Kc_<d6UfT3l8f2nUee3lDU1+L52PXztY^tJodian%f_z=JyIsTF=6> z{va)_w~*8wHg<b8#HQJ^SB)9@V;uWeyx!k0Y0uiP8VBcRILg*<(>fb(m=X%4mPk~_ zqdoCu9Awj>eAiPMDRng5XoP#yYyw&ef*#lY^g(v}wEi@p*!&;_J*6k;GpL|#(8arI zjLc`TQK3+#ho^hNTcf_F9i%d6;lNv=5;rjiuNp)0|GrLxZ#h7dEynVDTzl5RveM%i ztEKr@a70e0`t)_Id>Y7{jmJFD641+_H$d-!szLjGGe&?$YTLhJoMzw!M%`>Om9k(3 zM|a{zoTlVbCb`u%)h!vzX#T<_G=kCW-mMb^J4AX}6_fZo<{+AcJ4mRx{rdxVuXD~c zPB8{^ocf}JCUN@#)(i)?e5oJTe)9mktqR3k-#+DF>H4VJKTI+w(_M9ay_Q8o6X&nF zE-r{dq0a0n)O81Lm}X!A;PRhGuD(HnY0mz_ue0XWf=%dIfjvD-h^ekYoHZl}GZEwb z&|(?FIQLkdsKw-w1~?E!@Fbh0k%EB?u~Ai^VYU|Iiu{F5pSGq2cR&pzh?8hSOT*S@ zIoDcb6}*;luC$EO7q4$Z0uS9SD&1hz)P7@(sVy+ZV5hLiX4L<NYW*0(`3vyQIDdCD ziBH;F&<`dw%`fN=3ERhfSqQdqW@le-cqs(xAo=?Qnqsf;?JX$X(u4e9I$opyUaRX@ zTI~*N7*(;^#11ANx$3u~kw{uFC)5mWq<tyku1HUNmbwYLq)H=9zPY=%YD@)I%9i5w zS54tLSAjDWQ#HC`50+AYo@ICFs#=WZ@jU}bi{Xkxq;E&Jq)W8{sIv>UG4~~CA4Y;; zEYJ%2kFo4ozd?KD!Uqo3dUa{EWe=)gSpFqPxbc#4cJ1K%{8ZX|lVAQRn-pcI$vn}; zBz|O58&x<sH|j5$jqF==9noTp&p+m1cgU*VLI?6E;%BsrItNKo+Js4iY(>YV2gz{R zU={@#lm9PBmHXF@>u|`h#@4TcjA1l4F9CA2073K8{Xp~>t~MeHBlr5&2^Sm^l@x7l zkw=oiB(~Vg90K3Bxzr;_xPu%7<S*};J7@z6UJp(Yi1vyE{L%#gopZ(bF0Uyp*o=ih zNRK#7sIQU9oF8{#i^6Y&jIi3c!>BvX#QRoUtTZ{#e$_MpsudV_ckHiHt>?92s9s1D zhj4?zP}|=fayYP6%(0NP5D_XC^NHuHDs?GW6<bbc)Q`b9xqyXWNK+dBz?vxYF68(N z$X6twsC$KubvDj<<1S#J;CpFDV%4z4^ldlh(PrBx#v_h#nxsZ_KQ<&e+O8^PtNLJY zrp-FiPMfb9%{ScFd{<ZfW}-ePAkMdJ^z9{tvCaOaW4q|ud39;5g@*)&(%<$qT^k+f zSga*^o&8<Y4pAS&+Vg)o!tMz~&=R93uRHXw6}*k^=oinT=k1hX6O;L|yDu~=!VuL^ zZ0{hf_QG~($q;@IdeLY*z87yBFSOOc71_??%;>a5ykqwIK3A)<G>P?DYDP6PAZG6y z)gMCE@-knvHr{;3LKHDgF-{WvrJbfd6lp(+5%tM?v!o0nJAtizIMF^KTEmUb^4eYQ zK3J<9MS0FadG>OFs7x#8Ouze!JJNC#1B1{W;}itHhp=YkH$p_1hJMzaShWlMDD*;9 z@?`rab1gOQa3|ItgBLk=BHj_=rl1{X0clK4?jSEI<wwV7oSmWH1Mb5vcSIVC+;ZE8 z9p0`rw=X%U!3Z)yudCAfuzT4ZhalZuZTr~xrz1&Ek-J`W(<S%te5<3*Jw0vf_*Q!u zuI0LkB{Rm_ZD!5l(0yK@w*Ky*!4+aMLln@)*p8vd+&=ywtu73~nmBv#cKQD8+9*4e z^3n>%huNs4;OpbXw6GNf3ne<@#^%q3l<GD;s!37jPE(N0fvtVHVBR097%>gMd&a?N z?jV%Jv~ikS{NFDRO6Z3<NSr_1F_4a2Jr_XH?lc@U4m1U{Xgxpmm7z(qy2L%hTg_*5 z*}SCl(JD2Dz0qK((QZLL6!=D?t^C1P2AW3|Y(yLK<KnMgLG<G^lN!UFX-t2cB9XPr zN+T;oO=*dpkkuC1rKPH>kfnz@EzYa}d6U#wX*`6%KA06IM>Kw8%3mK1eUSiksW?=5 zFFN`I=t6=nh;hd-Nq<AG!s!qt6Z<!&GY)YwYyZY<id_1mLk6SV_0aC{^`6W2uT5lc zUMVD6(9(Xg`I3#dvv})vt?{<^bPr;0FdcPdC7<(+*isFGGesH?Iyj>+ztLE!-Dkh! z2<#C;rE}Qw7YH;Cshs;M<Mt|%@wKY6ks0inSB!6C!=N@vdYUt%P#3xD4q^CIn*{mo zSZNW3Cg-Z5-LVdZe6xaQ*Cj@L?Ttkyd-o#g$mB{7|KPe(^X5p30lBLA>Y|m+R~JJb z3IdDb8d-q=D02R-fXryZQ0jF(=YtOaXHCmFQ$2o}S(?~^HKAZr_<3o#NkvUIM@u)l z0~FD6%2V6umMUU`Br5XZMz;*TeX=hsaMaAcDUcvNVvo?5cN$o@KD+rOJ3H9xdc1!9 z3K_1;3ua}>q1b1zPC5R9L{j{PNQp9fJtWQQS!E}NBez4SyyM_ZTu;GpMO5pP4&>!E zbhx3KVvq{;rd9btvFVx^OHo;UIaOKC4uY=4%ZHK+A~2#0z=rJI;>nytJ1F0c&f(`f zLTUv&)J2je>_#NqE*(^#=-@2#Lh(!yb6*i_kfpael}2T)-$i5h->8{)fh5Iig%{MO zP=6xL`bI~IakQR!-H0eKTj8c8u7YvCgG-368uw{2UmM7d5`$m|v8#)|cL?&YIz+U) z^z2D#6~6)c##HW8E@L2v|Fs1eduV@*v(B=21p|d)SrT*WQw!ati9$m|Cro%^@%HV< zj<lGfmxlTURTzvM{w=}>{FM!P<Q%VgHPd|hGYQt~bS><+`|&fiDYK_=)kQO!ZkUp4 zrO3bEwom=IL}`Vnv1~m%hS#!ap-K6FIN0=?4k)!kjjn9{O;e~X9IZ4i|7QmobD)Ze z-=$qNM{dinr2=HmyXCMOkpDdnIK7#FLsxa!-wwL8RGXsnPdkR`|HQ61UH_${tds`Q z7b}H;B#}*_r^``)5`O2SHpYxVt=E;VzhU~oK|9G#2T|O?q)wN(AEKn{Ky+zq!!KRl z()N*h!=-zOH*Jg$R~^S-5*%dLm~=fE)$s3Z>|>^jpx&lG&+dZ|SUpbjOCyzeio`Oh z(e|gWmuDr*?P@H67|riC3ii(^sA|ry2rmU0^N+g^+SR3p!NR38irr>O7TWf#*Ntb- zXizYpI+#Ip!SFrzvL@bs-K5n22yMAUvmSVbK85l~oXhm@megJ^f;KO%ainJ<xM#A` z>ngl^y@*NN4W)?U^<)HH=pC=tjc+`=8>c^SbUPjX8yqUT|NO80Gwpg#$T}wKeVNh$ zRuG!kv=c5u0sRhY1DPpAw-w7Bs<`Oawd{5^Vi7kC2QblT{v)JB$YsSEV{7TC_f(hD zp)n@uXB*X33jNjzk5+wbY;{nK>H4mvsJ)PT&4^LRQMSGMnpg}wKg4+?#q5stUWLpq zof0DZ(c#p716BElqu;&rk8$hyS)0Zsa`CYOECmE=Q7T%_uq_a4=Ee#;xi%$`mEOxz zH4E82SxlmiKd~uwwD=NHX9r-2a1LZvXKCHaG^%vPTw$6ZXLE@Fy-ycF?N((eGPB)k zMSa_(P4#WhY$~6?r&P{1kJlL?Tdg0aJA6B9+`PHJm899%8e^+SDrZ+Z&Drmil-IGT zq}|Mcvc9es+b_s1(*FQ0F$<`QXUI(lmrCGHYQH3JknR9*LRPr0`3(1;U|sWx^vjNz zKt@L46d0I>g$KZtq@Qy@Nq306zNqMmffv1g(mct@3S)sQK!PmpnUifdnDI4mU~xa% zB(p1vA$tav^#rIksf{`(;nW5W3-+4ZyAj0u#q*08>)%jRZO0yRaSaY4jr1fZP=84r zc}`_KYnoabu6s))I`4ID#le8uILmlOH12$uN^N8m+YJQQSk8=3WAO868a)>Q8fcHR z&Em`FW*G^t913$PgClHw)8_u^O4W9QKuw^KHZ!f!Vd{U`=5-ZyTVnQVNh6c`ll|&b zoI>YRa98JXG~~1|_|G?wGJg%1yWldz=kg3(zG45tQC?F?Bh?cP^3SB(R=H;~kqW50 zd5B^aY*v@qZpg+{lue;d4XurUu~}s#Mb|uj+V*+|xD*@^DwvW!4}}=tsm(4WDWq9M zmFhWNF<-j6h-;iyrgoZjtBZ*l8gvLe4S_P{b)TC^im+KkgXK;YO>#zZoQEhklyXIH z)ff1@aK+agPVcvj83V9jFLNV^8KB=nld2#Z$u_d957uR2gq9ex$f%97Ty3*RRa6^W zGP9IqNp-V|{W^OyVgD#2IHWGG`=$7TiCSGO0<2{H-;CEg5`lYN`ygA&q%h7``GH#o znisB|Wm1-^+I1`fDY{}RHXX~A>XfF{S}kCT-!aiA+*&@#+knk#g@v@1XIs+g`zpL! zrfkrzu=ScP#TzwQa?j+M9+R?rCi8ntiv1>L1U09}Xy!df(|b%N-!m!bF`01BMB8KX z;60O3Jto8MnWXiYq}($Z)MKLVF_CP5v@lIIKlY6rbExjO(okJ-DH$C`*!C9}Np(>R zOoha0QA%~ubCqT98l}1-Bl;eZ>aG}Z!0=3#Gk@i36vp_KkNXN}+{)g<V4NfHPK$$a zrrl?nc+XUMpJ@~|HTxWk?=x=iDdR*e8~(hn?0@euXPm#>XL|mg>G$`UesRyV{yx(q z_e>AnGc`j<_@41Q_ly~c1N7$Pm3yY<o|1gJrzAIMpX@Oyx@R)0$As3Wzu6S_n9#cN zn`HEuC~Y&%3zBG4p3A7V&t(*iPnMMJo~NEi$BXG{vL?VQb!Ei}6U}$l90*bG@%8rU zX%IWDo6N9Tpvji>hOv(oo_9xt(sr+fe8cDN2xt#~?v7LjHa$|<>X-rBEg}EdZc$L% zt$5Cww|$=ZwBw<|o1kAnmmCud{{USF{og@;?9d~~od2I7-*SwD?YP1w(65dM3R^%o zK#iau9b*cwg06sUpzj@{5Z@?st_`W9WkA#3;HIf-K<Zv_WWpvQ^dB3Vs|Mt1fn#uP zt0N`%H&7F(1$4uaoO=<}=m1C4Jad7hUfa$r`ln>$@_FqmHn!C=mDjGuZ@Jb20GM&@ zFC8@d4ac>=aPS}F#dxPqeaDLT92@VMmK;pR@WP1M$)GGogkKSUh4>ZXSAbsuemVSd z_+|0S;+No;;1|^f%9;#6<s#qsl)<mI9(iofJj^}wXw9#2PfU}d_P^`2p!VOsaDUxX zF;wa`4eI#AZI$kcStMnsjl@~-R_UIOFD$VI@pd-e;+{Tv%{+l|NA-IP_&2xeNEUx_ zYhqkw7NF$W5cJWbmT1#tVZixWrYS<v`AMjNi-vcf(n3k{aNM?HTq&<O)g}{69(%g& zbOgV7`_QquqJZ<nnZxEJM=y}mGS;d<(Q~CDa*hG(EqVcQR*;G$*g0Vbik^E5iw_F& zyLm^lc?h;T{>>4G6W6IW?K4dBB;;Xwh`>ma45sg@IUAdrZ9l<{JI}+EBz;$%V&~lx zLog{MrPvtdYWH+zwR_^^kj2~Pg%%Z=vfGbk7ZuHXI;x7kGYgA~VxEbqDlzHWnQ0|O zeXs>fETt@-kG&e`VhJe5f!dHNV0NU+V|CY_WE60U$-boMeqM&e#yWR&WU02#qZm;W z6+{7js~#o}ML~e<XcBt0T54nsZ{T|Ify~J^CWq@}+6JEoHe-Kz>qq)cM$v7_@L@); zcw&95ZkKMDq5mX4ZD)TH$`|e&D10Mpm`=zq-kHh*u4nhozQXY4IBq0=d}mU>6a_mu zQNd;b2(BhDf2T39Agno#9m#ukrb?(ewdd1zEi%WstBp|w6QUxTRf3WA{jur@Z_gSR zZts()GRjI>XD7>{6vB03wnfHh-6F$w0i+I5&CE1hV5yKbnfhPDYJs?qYOkE-6ci2l zl9<*bFnH8z19pb>&}c|gAj&vI$$;o~uV0}+uUQ(bCuU8hJ^`hmDW?jb%gW0PkXiB` zsttK4wBRGd@a8yCV*LPpoRi5RDcL~s4a5pu<Mrzk?eb<C)y)Df)4;$#-IhUb#0z!= zc(gRq-ZGFC$n&=u<ptr*N^T_BrzgbO_0dKQ6&YG5zx%Do$-NGPP*_1ItRR13L3JzK z_#YI#x}7OOTYxxDxKZ7{GE?1tcd@RyfyrvOq-9|}6asE6jqqN<O5Q$XUI~#@uDMdp z@s<LJ<l}^r3*z)IO$ss&?_}FqyU=$yL*fLTY*+tgk$`NWDhba|EHv)c#ydkKSy(&- zCkTvC*5=}x<pMrStz&m`hPg)E0PYk6dFxfVs8il4OTe>>O^7j0YCadhwX6%c;8q;c zn46{2iOo{^f82@&9DY@zNy&rYJgHd<AOd;UMBH+5%FQ&;TSx%C5}b8wm4!<!w4HU! zEw35pGC`e!u0#NRiaG`DIf(ve!=KE9=YtbePEL-dIgxd80{Lyp*x#9--G)lIa&vDb zHA^JaJ$Wmq*(?!!>o#OP(=3wTWOM7uTVstA>xb&(%>uz#!vXe1V?NC2*HGPyh6CJB z?loEen0$$^zhGveX1l1X6y2BjVt0}Z$xwF79LJ<)Z9q_GKszL-<wslD;Ah}Q-WkyK zpglNYQu7%JYX;x~1HfwltOqo@6}v^90iGaJa<fbd=vSExUj@xl*;gnkl#WG!l;<Ls z{S6WN?@^FBlAumWhp1EHCJATVl7<wN7VIU^qO+WJ3oOVbEgi|{ZA^bT-X}IoP?~~< z#~rk+>D3pZw9sg9lh6gsW(_3F-+KqQra(*Jb$x&AxVPTD?0(E5*4JVqs<1WU5O6ql zObUBRf48mMweD_1%x<l;kx6N_i<^r32gA(lGh-Sj))F<RSnD2!y}(*`3bPi1_`;^% z5dOe1Dpd`@+#--qrJHNY{AUK?+7}Bs9K0uhkfD6kzchG`|JM-nfP8j7`&5`{@OkYs z(!)TDs_I*%h5(Tu^W+USJ+dIY$m<&8Ia(!Ft#J>72$9Yy;WP&NegfwMwRYg1rwbM8 z;x+D6=8ECnlJ6X1tUHFK^}1wzU;7=sp>mLUsp|OAK@+$3eZv3!uR`-03#l56Oi_O% zK2h(kqgvWT^E?KIEeLlFzP4%~va^Fm=fX|75FDuZ_NMrFXO1vdH{K}_3Jt)MqQf$P z=XA}VbE}cURNu*c6$B*LppclvGxjYAU!qB{B~D`X$BnE~2Q~fU28CHK+TnGTfK8We zAA{kqVaN#E7$eu-pr(7j%zN(*Ln7)!lnNhSMe|*MauE$`fhKT|gH7zy6Gd!&NFkEL z>^G`P2h{r$)xhmHVDrRD>aQ4SMh`jYllmP$G;NI|LV4EFUuk!+@n&e>K)23UeRSth z=^n<sA#SLa*hwO>NfO7{NtLR%w6KapSurFrjeqw2fn+fM#`}rp!bGE@y-A^P<}i`E zEQr`98fZ17rd`6=_+?Mf^vH?^O%gw^MzE=+_M|Emun|+4@dHSz-~#b&9fzfr(+DP$ zRIEwk*#zWtGKz6B(rzHBNrj`3D5?Fw<KrLvKx{Vbrxn8dllLnIRk5Nhwt$--Td;b* z#(1iYQ|~F^o{AAgo!31hI~-&5RJ|$gU$1g<tRUmm4OSVEAC1O$tfRLnZLLM@OpW6T zO7((+zvnhwFGZuuaW~`8!{0m^bzfQ~V)agBcvo**lP~^&|Mi13GMW$G8!!8(E*to9 zdq+e)+)afefZm{nHs5DnmlJw3^gV^&wD$?~0sw)9sCMfw7HN#zO`AoAbMyddu#G5k zoC3jM<6%>HyT#05^@Hhh@gp{@gBIpE0nt^&Bu}w3numeA=ye_RF2?z=+UZ@aZr^}u z1iu*F7aPhJsC8v?73j^`zCNu@TMNXioTg>{h4$^HH$`0$=M}1pMPEU|IsvP>qjU#9 z<QTv9L$x^=Y+wlXnYM}coWmW6u#HN*b3p;X86w&4pox6TZpTT^TaM%^x;V>mN(8rx zK5%I8#VpQovVyjvcO5voqBk|H^q*t)#VTNjX@{7cXA}dQ{O7e^*L-h7ZE62j3`FNU zdQTCW`QUwOw!DrXx-XgC+rb<5O$>{@=R<;tyxa8xgfI4`P)C36iwwTfopxM}BCHg} zo!@Sn!iVpFU@+|jS=f;@A%98t!u}j*c{@zA#3#;`ETHEUB`BaZC?Ni&{TJE&ZhqEB zSs|*mkXUqD7W*$3?YPVD`{+T@=4xup-~4E55MC<xJBl~@j4JtuJ|0f`@M}NL4*qYC zCH(o1$MyP)J}}+qZ{I)uUObR6K-EQ$N$Q5Sl*Q|x)}yv{Gu$CEN&QuW!1-eb-*8}n zxo?L^pH@Y?THR1Oj>&NLL-Y!xz**ms4mEHR6qg{;pTj)yb@i6<q?M3Cjf^rbL8||% zdX4WpwK4d+r}e>K1b-L&#T$Qc%*!B!(fUUaBXGucQc>?8>~!E6i7~NmXh|snA47pX zZsA?TGR8Uf?r8_ECfA+15sC%w15K;lV-<Vc4=Yx?vzW%Y)Q*AOJ6Mmd0KLerc3V`Z z+^?$Y9sFAd`v(39pid^T4Iy&Q!TgDX8p+rWntDeU-+nMIIK}sIxeH?;3}^C#4h<vk z@^cQ&Az}P+JXL&D)eN$Sf2L{zG4n^N5(HUe(=Gg!s;J;6JgK$H<?wdvv=%aEd_Z*> zDdeB6&K~n&tsjX<WL$?6&NRrze&OLNnZzvTqLnn7*THFJoC{X|=$4FBV9*FupLTZ* z6*$*=Ug7_)j^dv8H1M*+u_TvIIy{hA`Mkqw^LP*8nATxF|KmJbF7P}JN$(ltL;ev| zif)IL33e!OPMqcZ!{;gmv4meNGt%x@X4v9xA4*`iY891>TH|hyV4Q<JD&sU0=VWx# zifCxz9!4lVzu$O4%$}#^^?0Yx9;?J@BA)|}|NC&iX^*WUN*ciIrxf~AZL7J{ZVX{g zZzm1nM&~I(=J_&Xh|(Xe!pPxvp-Fel=}2Hnv60)l3T)MJt6J#pBD|$Y?L!!v&d>a} z#@yKxon@LoIfpu55%l$C^A}&(A#O#{AS2@(>ruT(ux{p@^QbVp^KwT|GJE`O>14!W zUk1MS+hBV4hxke-5izZOR?(EM>^#ZJ&+pcgL89AXrV``v2qa9o${&;^-0$HTzF&<p zYQQQc*>Wpp)j4<95*ABrF`!eAfpHwhPpJtvOIDQ`v65a~X6Q*qkKeJK*^ECK+k28> z=_%(Som#Q<yxKU&Sk_b08>tJUMmNn6;9EkAH0Jgn4oFmJJGV|}3!D#k#Hl%tc*0Na z%8aktq>;Luy6ZF(L7nd=V;w}RKh5Z`{&DS}9T4oeBrZPxMCU7>nP`0SP5>eWuhhrz zfuF?WEVYNCbgJ`S9WS{MBA~llM$0z6F3QDlyxkDxlmrLcB<iogV^bSH%!^#W-A*gv zS|)^7Xtx`mZlvY?mz&@G$xtHXzx*UUbb}+znHXGSe+2=O3t@r}`G6xz^RW&=(>ZsA zDmv#ho-@JH;ha0&TO3Q_N@NceRGh06wfQ0hDDjY+_H*u6GZ;;?eH6{F_E$%!AlIkj zsnF-vZ#QtxrS2=(2ft!Ro_)P-eaA`%&16>V4$Bjr>)WFALMVaE>Yy35=m+9FN?BGW z1(T0-vbWUDELT?Y4Z!bcAc6LuZiK4CbB@oYymOKL>H>9bZ?I2v0PATR=bY@0L^<@Y zm#E<@Ez%i+_mH0VEWBs+ytBcfwkhb~oU{C{6?YI52$)gMmsz;&6?}5e>2B8NRBeoO zT7pG<j_s!#;Xs<oYTVPpN|rC!IzF*}E0$`KR!+j9gK#bR;gg!TO2h!=-)5q2*Hvea zA9R-20vA>ZuzqJSbJjgHaV3}#ggu3~m?nf2uzZ1V`!<BNO|M=q+R9AeYZnacT-OFk zx$ff&0uXos@;l}!8gxO<n0Yn_ul?zQU<bvio-GmZaU*1{3R&qjaQmHYUbFAF#k=ns z-*_}_;JeqPY11c3)2B}=^PL{(oEomI2>dLkjMEhD;|JD8_4)N<+_u*i3DH@i;V{;A z0FV0vzOYu^_l+(xLed&1320RWoW4fV<AA++?iycFJHWgXxb|z@p9(_iIOnHbZY*m$ z9GtPd=F!qHK~ycP+g?l=Z#zpL8o;zfWHE97)(X##OJ{Xl%SvvR!RZjRW(m2LwZf;2 zWGK_pCkwm~FcoGNmro!{*4W@?`rt4H^F+IVM`D>0zG&K0I;Ult4qJg~^UBQ=$|tb- z;jpqy3oioGM#4TkGC!o|tm*Yq$VhS;n_Po+sgollDISdbv!?X?%YUWMdcBk{-BL=I zdL&bHvvM?FcDjv;IMwzoSE3W+oBCjrj^1=EbKksPdgLZks<LrO3LEUC?we08i*0({ z7{E@iH=l90D>fSk<V~+X*~Vpr1y2DWX-Sn_^9>@CG@UVlHO&f=<82a6-&{cJ;27!h zUwxKMD|_YU`?F59NjMsr8__s!#xIi=Jb&}$WwXnkyt#JSsWwpw$rRrVf$f*2aJ{VS z=9kO*A^Kk&T<#?YBWE9G7$$7gpBo^K6xYr$aZ3s$HMoF{FFYPYQh3wxwSh0WlYk5N zuF-%2cMtD5KJ<yXlOYYh(KnrB;jO^<0|u-yx?mH`8^-7+na1cgfqno5m*N|=3G@Rf zQ};ue8g4h0jnVa=B*(2AV|4GeO2jL)E3$RXYr{XeZ5hb#`?NT+yk?s5dy~vqXv)+* zWF!yhnnmHS8B>IOT-~SSHh-lqmORgU>y+jv-ChN8{>#lMyHwoAg1y}9VrNTtrk<`* zCHXiaw|2NDxG4@N?i1Dv^M!z;+0{XDas9l=y~z5jAc}=V8TpbL2H}lGrZH6Ii=3}? z(D0YIy{^4p>JG9+HIaJUP6c#nlIP{${!A!82=gx2-g;<b*7Juxix|}fvH3>mk{tHj zY5zSYc+z2y3z+6@?O3AVqKEn3mHIB=9>ayA+H<F^+T*&lrzL=c1_XcivqAE@p5&k< zGJINn|G_7F4E*>_Ug%RY^<Vyv*$S9_>oen*)hA4~_gMdk-(GLC;pEc)c$)&Vrh8_B zg4s{a7INn~DD-<>I<KUTHj!&Sd;V7aaI%(9YEToNFKn0wIPrHHULY^=F(=BfKzZc^ zPcHH?C$p6??weRx+;xTGj%lHCy5jo0F4s?Yrz@yvcsVrC3BTfGzZlJNrv63nf>(>_ zF5Zt|oMw-mblJUxKX@|U{C8&-&Jjj*ki<^=zoF?bxFEdEjQ<z3`>#5VLvL)^A{{ok z>A+$<Zs>OX+*z3OFI*032SVMl#lWi4OZ7z0=61V|cLLZK+wpe9B~jjSU4|5jAHR|@ zQgKapRYR*lY=!btKi~=r0!Hg|0jQLe(*@ypjLb({1;L-=3`J_s(`)q+2yj;?qt4dn zLVo>@tJeEq&hIgo-D4}`pe`c7snLYmlq#QOWvtkVduUI^kY)S_r;?`h>!KK?hzfhE zJ1z@7<U=x(jerW;AB<3EB2<A=V^HYtxE4Y$k^3+WSTFzaD1eA{2LO^(=(|^th~P}} zSzdWsM@I4UPG4a^`IOK7JVSQiQ=G&V%qn4=2l%z0r<-SWl~*xp?SO%4VQw<en<S|x znX9yJy8=Mee&k+MZ~f!Y9Fo)sA(<l1b-A*-6jef%5V&`JJdie5Na~=snC8K*nz|eN zDzu*QO&g}W1`@guAo9AJd|E~VJ?py!#9cQEk}JYoS07h&7e(!Dw<Tj@6a$#R>3IA# z{-G}-W#0oqECe^3L&S|=_(giSqFajW_2R_IkiAsC=8IHwTEV(QjB-eBuL!%#HP)vy zC$?z{Qh-jxt2KEkXsF9PfOGU|Qj2Wy1@W+n&)cF-0273XQ%v&9QHq@=pxAH+80VD^ zGE9)FM|Dt?ZEoL4y~|ZYFI?~y^%r-k5~Ku}XW?c96rQ(B-6!`uM@Sro%M=fiHn%4t zS%D1pvb?v|LAiAfT0j5D#(Q10o`8GWMiWtV4{l`T*(km*L6<>Pxr@MzDtC!%1O-qs z;01Z@Y5}r?)pva)?4;C#5HIh(#9#k%diZZ0SfWk#y8i7`j-#z$0$=#m18nkL{?)HW z$DRb3lcAepDuopEwf%Q_M(|g^`p`V0Grmx>;PCBb=7<Y}0e`{mWw(f(gF7;mEE?HP zD1EUXs`VKvW=k8+==`Rey0V}a)-Sis_1N99#=f}%=Qx3Ijv|K)B})2!$MsUzSe#LR z@dxB3^i&}vxJTWbLjqs!v?$sgp(qN-eMG0dD8_{oAPZ<CGBzFbB4`aC|Fv?$&u)K| zz?nlL<hksJG$B<z33&jx+WRuVgzzaq^hQEULEjmI!wo7}vWAAuZ~Qu`xKAyCX5Sty zu|Z0ygV_Oydt7Y<R8#(%gC2!245tsN5l$?|L5`Ru$({Dy#(=8T+B-I?J;6xiQ%BZ_ z3&j&PMul;;mIXW|4o<v8nTR9&-@FRL$U46NH@N|l`Y3$}s%$y`)HfqW^+iPw040NV z(0T)X2&w|rfxZNt16>BSfZQM<+)5As^354y4hdg+sd}SZoCe(Aw6LWy>>2t6eQ7ZR zaRObW&WAS45X0&LVyIs?r7^d?<>792h_pPqVzm}mrKzOlckHxx62r)vpu(Vunx(QT zg>hsZ#U=a9D=SbKwrXXzyj$W-ig0%priZ<Gx3cjisSj2dD67JO&VCN%XydcLR}&dO z@B8$EccUgb8^$NcrId$G#BCi34b=(dit>|fV#S$iMY*b6qY}4BNOCy<aXF~PsZ{0v zsXm3@OVvu)s>@S+EDU;V`y+ql`*HHCXvtU7gL3b<e(m5>euyNm@Z*0_5Bd?&QgtxK znFE-9k?rp`;cB|Rk<~H~;-k`FAz6%b0Ke&nek6_m;0I;i!0uo*8%KrPWNO;a1NU+~ zZm7x;Im5aIYTW%WObDDJP93n1d>Fb{4!fY7ZlDIx?mFlmMnyLkJfSvS_*EZ(#y{P- z+x0O2r0oUFcUNo!iG(NiEbuPVn3KY^pOMsypeE4opkG11foS3PQ%Gt&t~a{_3Xsc; z7^5VQV91r^N^%)zD8JIKF1rqw;1)exUXxs?S(<sAao+6c&Ft*M2@|n+nL?*f;wI2v zQT2RxxjG=M<hD^1`bD)wH6S+{t?@Qs<Pb|<OfH>XMNZqNY4ztISKH5Ldz}wHqa;W9 z^fLnk_IA<w{mXHkpLr&;kfxfZnC5_{zBfmbf&c&(1r#utFv9hcJW0N!!l?|aARd<C zTCy1Au%1~X_LTyI((w7?FPs@ce&<8ahMRj!!d=5+a`@dFo)>}3Ao^FxDy~P1az3ek zQ_Ecl&)HfnvAF9t$85&_;8$<8=XMtuS(64-jHwWM`m0Fhj_MsTB{{su*&XBw$=n?| zAm>4grTTZYO&VWs+G!2Y^=g&30YI6SYD{P`K)IxiOPG7xwbOSc3H@U6^+r8^?ChK7 zku}5Pq6_|=7;TIOzD|rWqCDPq==Lk-1luei_b_q&%YRpfmd8S0LaGusEm4xVsCy<9 zKRp!9EV}$}wFG)?7!$gg6ilb;$!d*-QI}ap)}2!_@Nvzt+vl^<@ew-sUJzFRwNS$G zKb(7;-Q2~OpWhwzKsQ|}b-6M-=}IY9;c<0(=yMRC^y3KgsGoe&?b-47DRE85=AUr^ zQN$wGKk616BrRegGdRT_22PypMFW72HmqZT$oJh1!Tc`FiRu@3!|bZhtP3MG7@+yN z7+t#6xK>0>)QS4fZ*apuzagIgbkSYc;?9v(a_|!wUY<99gj$Yu$wnV`(fwUQ-bK}n zdZk2X%{-IVg4`VfeGeLL;lqA<j4b7!`DqH7#Gm--5u)a!8Xt%k99tq`(ng?nPmjmO zv{IZa^az-{uGc!*6rrBAX8`suf?wXKRAQs35&)39KeU_Q=wh%^h{0PW-V}g>>T+%1 z>l*uwF7qhVCXBrd-{qR;G3n*G%o|-UgGY+;Gk1Q3A$u0ymUYse-Yc9;aJ=j7<by6e zOwRK2E~J_jUDUY-Yp;+v5)b*<%&-EJJ}j3GD9n~FS6639L9+g5gF@NAC=gLgx*&<& zDKCgL2;ndI{}cF@&feQfAl@*QVM0T&mz+v_dSw6|+C&q(T@yRi#)jxaw|AHs`B^Bs zBA}LzHb*5Ndohnp<)6Gbg1pSXeQ^*@9KXDnZT_Ys3%s(SSg}!|7KU-w+z$ujbzSmm zCkpl2hb%aZuIb1$Dh&Ip#ua2JBaOJ+z`L~Sfr4R%NMn}MVvsgv8aLEtC>5}=c@0%q z%62HA)0mDD>O~-$i4yv%1NgcfBp!Bg8neC}O_X_q-3MXoEP72vVioICy`l<!O^!hm z#kgCpT*<rvm;x}FezJGF7Ih3P5UU~$O1%P`EsdMPa*46rhy@nb6>rJX_m(yR^#7#2 z<b`)$P`v;VUU3Y|fD>O{!nBtgqI4k;6)o-(I)jBl1-$g<AoGU~%aHf&Sx%<>Uk)bq z9edW0x9!6Wm5yGdq*qb66`(aB3+Q=JIS6(C0?CM8IIAKA7lS=&!7a(Cy7CE2f?y8{ zQ<Geo1>eEY%I|r9zLJ$=6<xtvBK35rgInJEbF6tQ!h7g-pTKuQ_{40dMM&@MV4=Il zY5Lj-z^JykGZgzE^-nopqNZ-wkKO9!`?b)pR;!;S!zF_StvQ0<!M`l8Lm79gm+jXI zps7}}*y(7H(d%tolQJgKtF0zM{(BGP{AlO{5c)$1J?>EipP9B_tFR|wHO)Am?w;h# z30Q?AzW|S<7UE~4j*Txa?GGg?%3Xxp5XL#9I{?YxyGxJ^L65(w-AzmAt!GDDCBZa7 z-|)MBi8Wtv%M}-Jz;!0N#JF86v6YnmW^A0JHc7L#PKVHc=2Zh3aT5HCqV5tT`%F(* zif+Z?Z+j9Cu(zdh{R<+BP-$Q%p3j0FP(SBD@euoqkZ7TxCt(1uBbsRYo(fhIY%i(6 zoQSqEvirA+XU%zG$%*x0kU1t!C<ggByxlHMHz2TK(yxP6+;%86x8PNPXSZtrJel$m z;U`h`yMqk5W-sZ9qzREIHNU{6kUr7OF2cPC?jO(F4ELK=-#Wz3fyh1y{@VUdg*fT! z#z{_dPC$T%v_AaM;z-_C?4c-j1{Y5g&2hUT`4jsX(Qg%t&(okw?P3HYR!z+N5an_4 zu4?I?iZJ9j)uu>}u@^68M+YPi^=T6*f--%7QNkP*?mH_ksR&;}Ge|nbO*u*^+IqO6 zkaTMDy%`4q4b^KLy$)lf)0W(Dz!97fRcQL3j^d@#<OrKAInX9b7TSv|!lcUNFq<kl z%H}Vlm))%57e|1HD=DtnzT_L<n-;J<VdQ)I-u7EX>!Sfkcz`M({d0djC08mgE?<v* zuT*cIX*}*2o-Tm{i7Gwk0r0-ZwLfrBl1y5M<6=!}Mx3v^Gm+zBAaI2{4Z-gtuX`$_ z$s#1G&hC%+;-XD7vLdZsmd-n9hZ&0w69HO<PDLB}a{OX}S0I=u)i+}AOPs?XksV^L zYYGHB5eSyB668{=L~4b_I5nqe5xpL_`aDMYZ13~u3-nQ+o$UX#i-aBHybBDakbCg~ zeH_{qVUjwb^UJ#r;%YRyy>&To?(%z+(yWfuQyCwclP#bMNWtL3_V|9dxDOmX+^R)+ z?mT3v(C0!P9l)sHEhVG2X+s)yRg5y2a`QuWRAX2`UtHKlhDlOsk88pZ;I4C+-Zvf5 zHrw7e4Js97eKzOE>F)!#pA3J$=vQBl+KKr1kFF@pQC+k%Q&G<dyruizg7KE&d*kle zc6+F;yh*v7y6yH9`F=Y+{_nqgzFR!KBheSWkx03Wx^{Sqe7{#c{_jS7(`^8%j4${t zbKpS_tLhzAsQV8*5;X@Ce`<E~yM9ZG-{9d?dzSlSUF+Gi{9R+w@`NSxm%P8^`jR#7 zh)U|Oo^SbWpu*%Ct>3fEA7hDU&$41;(X#7{5*Dv<2UgO|^T}7E18{8)WYs3&#J2G2 zh}a`Na4_jUIG9p(T7EiEh91AGFad6vf9Glx*~uTra}$65sxEMhN1%VSHaaf?>+Q$* z_}|sjdTWpl^aixYyI85jY+~hF&|J`~Alj4y*Z_u>Je?pI!dU1eu@~+afMU>g55b+J zMuu>M`5nI}nW<aat_e&6aiB%N>ASq=9S2R5*cZgf^BQvoJ)#?0@JrMi?koc{c#b_I zFR!9sx;JS?V_IGS(AcKiDm#RbP81$uQVK3sc8KsU+Rdblza+q&a1(6n%O^Pl<g98X zq?)7)CpiUjuWF^)O&Y#0&tG`*1>Bz^U%!xD205&NuNMm8ETBQUX#Jv<ZrP!gZh2*; zTWWd79cal~wi0L~UoEb9Hh)P!#Y%VB?v?KF%69<w<8^KD$O~>Rx-bQskHzQ)!@;Gm zTwqv>yXM!r19q=P2>Vy2VGris#3Xb&67*CKjW!WqX_W`@C$Fjc_Fi#@nG*_9e(Rk9 zeCIWl?=Ay+``Le6F=-=fIK5aS(Z@FCD8mZ57A`{AvPOWRZwAULjnhQf)ysM9FV*2d zzbJyh*hzlg^+7{vytK5%iRJK55Aymn=BNS-nHDBQ*kWNY;`aClQn*^Tm@LcC^9|P{ zBYQnkK|KLH_5;X&r|Vr0@4TMCzUJX09sOCehac`pAZ7d<$81*F#UFEIkeU2n4juV{ zPyb_F=(8S!N>Z@eou|I;$WwH>l>Ev+rkFLglr={<n_D703uYJNG~H*ieF5Wqy_VXc zsT`xbTw?Nlje@?ql5w_noP(Wzhx=`hyXKzXzk7bYJ-;3Q^Xmeec_csOM!NZQr^R>n zy2yQ_I*kH?47=+pbPG~l=<OrxD$x9~Wt%FgvAGp&munbc&?UGn!2hNDudhdaUm-OS zdTJZ3SJNYFn1$SP|L^<U)2%APGT*c82bRu1LFf9u;#8sFeIdAvn0hKM&w5BECEooY zBdO=zFR|qldJ_Yrmizpl`>(GLd|&=V*B@tdIiswq%QfdyDAHJ(D~4oN`A~L!ST|XW zq>fc|IcTsE8M6U<LW3Py!`x<{rMjPtvzE_nc?1Wk8(QLVx?R<hN{;ZCTVjC5;b|Ec zxTJFows}$D1$bQn{DeP;kcau_|5TEv_-%g<3Vpd7VC^be;-}pqQ=rPs+y7kq*fj8> zef5YVqr%S?*HqpIX;QE>NFM<BjV%@mztO^o$!5mGY-ZLmQamp)2bsJInUstPf}2%v z!#U#zkF{7z7Fhg$eDz-=G0L_4wKDuH8bL$`#a^0Swsk_igL`oUZ@$?_lUe&sg}S!V z-IZQg!TES_Ue{D_U=sznNzz-~-AL$30E02O9ku>ulzAL3hrQ)kw=|=WBqf#q(nx)> z8aY-#KiR8lS#`F-0uv}AB3q18)A6f=N$LPwmFuygMdQ57CjM=&cVvUD+G6_;_Vn#{ zla>~NHTQJ|Nj_}%hshz#kL@IOq66o`>TI`U+yqBuER7DA4ZYK7a|<$H;lpp3&9JI$ zw|pGG<Zl(K#rpRH<TQW&?;+;VHV)T<G0Asmm`XM|8{aX|dNm7~7Ga+ZQIvjSeZ(-~ z?N!er4PAb~BUY7YpzIvRS>nFv@cWC0KMopxIJ)b$Ir1x1wX;O5EehY?be%)FQujO1 zT&S-_?)n~I(ud&fcYA&XgGJ%vIBTIEj&)sk%oH8)y?@-b&mmjNl@~14l^0a#EE_6T zTfV6{g*^uC@fNg*on8O5jyL%m&QX)X^{k3sAS%jiaJMU^z%9US0_ZTbr%^rz{eI2Y zfx`8i&!zT0mlglx(!wun?bGjRpL?9^s}W{8qo!>bmkIN`TCWOI>P2cXzxI~ZEZ3hh zgyS;WQ;;lUrkyenMThJ4yJaRa6oMb;GJs-~5%;gw42~lAj;u2QqzNoio!{LGpSz3V zo9C&!W(QIH1;sB`zv@s(E}=)Qne@3@+ov(y1QqU!jCvi(b}9(rLyN?DKKn=DV1riJ z7-9->Dwx~A?<t?aDLhzsWCe1JKd|7ue*)W}4Zjx{;X~Atyzrvlh<d{bK{))aw!um3 zkmFz66D_#WgC&`QmQ`%9W{SaO2R`(ZRB)`sz8tw>x#j%$_V`D>@<Q$hCA18PKJ<5| zH%-@2ofSjzvXZeQtIWo(Y(At{#y(Ia0DFE#(cPlL@xyVU9_+^ZF5U9k3LqnqKYomT zj7g1IbPRu@J*w}3f^glQqF_K{>;a2e!tE)dyAS?m`vCL%RHC-&GbAVA;;`BQhUg+P z3{toaip*L^l)>eQHr&3?MFw0%6_E_Ti+?*};UWqyn2}?FeJmLn4opUYE!@clN7S>5 zV9c~c1^Dl!%x$JbfZg=Itiq*COHK$$jk5n@O4eO`u*l|SMnwxk&aF4%ZRW`~DJOkF z19i4lpf%u+gGb)Z=)gfA1yJs~pG`T<to9=HH6})IoB!_iK=zvBu=Dm~q+dV16x%zw z>9YHy6QC<hi?$DhjQAp#LNG-B!UTS;YrJ`b@mTF1?Z|prQ6`ljP-hm&OhZkl+QK-s z4(~4z%~$qJliJyUFStOXtatR!A!8};^nrpOv2@{@Pa|n^?uz3)5(O<hr$7h(+$fnz zW@9v`AyaE}4~?W+-F%h|2_HK0m;+^#yQ4ay-O}F-PgscLIGO1=PRn$7%ww$o!Fk9W z?+1LDJ1TngaY2==NLHNTOH{Z&8AvFw!{2fbpSB1*phjD7ivCp%K7T$<72A9onsIU# z9*cUtev5VtHrYV0SKNeOFBL&3uh|0W4$BM(kFvY9A-I)&4L_(uEx^fp8vjs7WAN8q ziM9UmAq2gC7eB1?4S~%alE~XSBSqo5$SllpH#-ygNKf&|iykrBYP;)44-;q6|5i;k z2-;nLc*eWq7&0^@<u+O;j<i(4D&|e$W^RAbH-g*_*J2M}?U_|{+tUPIBb}x?T+Ujo zTqAtgubJgFfjCYI(w7*3vF~Bj*!uxWE+nJLK(IZ>rC+!}b|bb>9gvfx{>!t7vcvWL zv0ncnxT=Zz{hVLe6>k32=O)DGrsi00EKDX{eD#@F2?iqIU*Q@vdc0KKWXPg%O?z){ zyK6MI7*xvh^bP4WuR0kQIXBHsgROiu_&vV(U+c(5_B&kbI_X%A6Upoj*Xo`)!u8_( z@S5;&3sH$Csw~WA$_=Kuuj=5#?#9jP>QuuZ1Ls=Q(Aq&2PO;BJ8N3Oic^Oe7o+vI< zTS#1r1vgs_^)r;I>+Ky>(dB-(<u%emDG&%dTt_<i%Da6@JO9DmX_-MCR82c5x6>8d zDOKR~)lG#>rTFgC8G-NTe3$n8bF|v!dhc**_aH(R^E13^(RbK$eDym2k~b?n$aA^Q zQuB;nhD3*8J<{$9wAKZaD8AV%CF}Ux-ht$WH~J9uWTRe^CWq+5?xI*A5^&DK?%h$O z(x_*)#8xFyk%(f_gsYrXw_Pb6Ca}&YwZBu0B}RAP?RTES6=fTs){khUISn_&VYgk0 z9q&~Tmb`Lg9ZRa%*Z}~cx8Q<ln<sp$EHUfWkCw1)yIbXK;O$L@0oF%^#6(Qi6GHMF zcY9Nbb+m{a?I%9OIfowW{*|d8F_x9*fo|sz`Pw4^V)7&*A=ZTwqEk4!C*1Ka*{#L% zxuf+WeF(Vyll4dI>316r*sbRz<T3Wo*N<cbkf((~LpK8!6J<k~Q0A>Y)&oK0X?ECV z>wsYJ`~P^|IzO0<9zg9Is>AhKt;9F+NsiKdVL;cmxn_8dd=^Z;AjsF+P_lzn-Es~0 z25nX1P@4%xGs?Q<8eGrfUa_wbh(F0zZ3NMZh9lyF&DQl1<P(x|B)bnLrr1u8VCyYc zSho<*;O@XXDX}yZ6eDChp0T#}C4I<TtGFN0kzcI^{m62%+xlfcTs^nQdaWP1K(db1 zN0Mo5$fa6ZMg~MM2W3>g`G_ipG_&l$E^E*Ll0YU|hYdh%bB_FH04X7))tagxr(`Ca zauDa8PLFH7)uSLs1Rhta+xm%;B!=8V4<XJmp1MD5SsqvDQR_`5c|3ffg0?7%Ud0_u zy}<;3eCM$vPk`4#$b2iWCeuO}-j!@^bxrXG;Q5d@@Xljamzuni_*FMO@n>YTaELPs zeN3~Bl@A8lClL9rH(B{8ypP#teLs#2VDq<GzlbB-`##d0Onr%+=vhs$UkG|)oAtSP zQXSTc_m~~5-0Qu~499QV_9LScNU31{SbP+MK1QHZ@H+=&0xbpEVD>G3pWegDi$M>A zXrRsSvhrU+XFz>-vhx0*)ZMr+0QL`pGC)6V^+%?L-O(LKq#E)#8J><0%Pv3>fa2cr z2b2KE(I6U75Pn(E9Rys|<n=bd-9x*Myp=*$5#q8c2NTouogKMYAujfGy6QT<azy3| zn)>FlO?`5i)||BEhZyIy&*oae?ClHw50Vf9Y5>vX+@HMrv-I88BfkzN|7OX9Rz97~ zn{&;Zg&1~sbh<=t8<ts26RQZkHNB8=zWpf#j=EP8R-S~^_ZD3_is}BaH{$#L@M$r| zAx*UGL##70$ddu<y6gV<856;K*3UCYfoLc~t9#ShH<L^iX1oowW9w5`%!P@)zGfh% z&46(}dTh<x*07;uRbMNd_$#xhNrG~xMRoIS>%O7nr9S^u^gnh%)(3`>vY3T}`&;7J zIX~UtW>;e7S*aITPYolfL!7R5prW6fEUC=8^Y~;jo`cgwc%D`WD|fgh3=7>1MlnSn zP#Lh7sT5iV4ktq*=|@6SU~8Nd=SM}8QF7Uyz&k^Q*7?IpLVThm@J<}_u{&++$L_%u zAG=d>zjMb?&wG>gnc%lx>3Y#5uvQHxu@SrP230Y*-aPQm*f|IUjo!G~`rB}FfL$oC zZXQ80q?^$+UIs1OWBq;vX^uLIW^x+zrsA%vU%e2|i266NqBb9~kA&dCRMIv5UWcG% zM9a$SEou@mdZw9K!bsjhbHp$OWFVKUtL_gAWToCdMokDz*dCKN@0p}`Ssx!w&XL?B znPbRVVwFBX9uzQ6=BPFI0rGBi`ta1^7naOZl+9aOUi9=_MP^3NH)EBIBWV(*=g)fR zL1M6mJcyxb<Tz;TQR6qE346qlMRv0vJT{IHYnF~YDt~J{`X=aUkkzUq>hO@zFh+u_ zf2Bg1K+XlSK_uAvvyRNNj?5vCnLYDac_XMEqy-(FhwC^&pUq|E2SKwyLeSX~ga=v; zdImHX<S7OQGH4>`uOe3d8fXZ}W<Z|@g@Fz~0Ra-wC{Q5i$HyUU0a^qKe;l`lESST} z|9*^>SAxPp@6BfAdXQrlD=!6g&1B^lKwCk{pl==pf)vR92m%J(ei&mhhy`t#!ODk$ zzMPKU1=>B0m8(JTPi5s3KqAntDFA8)jRM6_G2`ePFW*f@iGc=zzM90!SAw!YS02K# zIOqvb5a?hbjv+xqKz~eR<?n#BpsNJ{lL0*k8V0(V&&odljRU#!Sot>49FPQbDHkmg zR05J&56mTxTdN9*+WJ@_nPDALNYbpoOe9mSZ%rg)t>Y$=C#>!QGQnC|K#bNrya{Ep zKq9lI=aB){fdxcl)fC|EL_W#3uFZ#+>G>qxdOHvP-poUjnVd)TR>(F?u<p+#bA*Cm z5vu?7ToN7N9_St@3zp%tXaWhh4xEdyCgdWR#tCGKwPpfQ3uVE9|7E>o0<2wng#C%0 zXszW~=~zSbq|CZ#E*T?~|Cj3t)`k)?Azma9F(GKIcJM~MLZ*FylnY>(J6^B%ZQrAK z{`~oR>(UYwz=#rr`9m>+t1QO2I=C3|R27jG)}i#V-armo!wh7p_3bCf)7GpfNRjp2 z<79z#?&J8pJcq2cTILV~(tBkNdB{3#4oS7X@ffTE9wV<JCvw=Fm`z4ln`V<Rt9v#H zwT_()YtJl_-BT=AW|3&Yok@2lSxaZZ=C7HE_O+Qv#Sr>9@hHr49);PpM-X@EBV@Vt z#KYtRYw^Rd)jW)#yJwIL>$mi=V+KjFT4s<Kt8xZxPfo|9WICB=l};x!t?y04WL`K8 zHUHOCSiCkBW)r5OY%fef9OYApNhaWgglie>8R8jYoic?)gbRg2hCAeC8!j_VZ{t{q zu?N06g*;&WVKSmyHW_Uv9uFWv3Q4d>>i@qOVBI?jA@-j{UbSw1h^)8vc?jw6DkM?X z3utp@!00o~!k5sKKsr$K3Rb=rlmfc^BBpE5E|3v40Td0AfjXC?*Mjze=75HR+Loac zfEI$%K!3l$$`62^0;PcZfI63=vw;qQRxd^G(^7-yfw2h61YLg)y#@3rs2}L-XIc3Q zkO8Ct{kjAR0_A{Qi&^<wpgEwsix4QN1f&9;Ux+IfLH$6Vl>^-r6bJhA8T3rhGoXjf zcxXXGK`iLR)2w_G=pj&l(AB398R#+410W&j^a2C`DgmW~yk)Gs7PJ^N4WtD9S<1?f zfhs^bpa9S(CJdIK9MC|}k4A_o*WqE!ei1dFy#RIME+ctDE<_B&rZN&~b(WDp>!vc2 zV=XEpN!Fk;GR=Cnl#H=%DuvmcQq;VLKJJ*%_`Wb<==hh3D6Eg0&@UrR=<^OE27`Ya z;iTM1a$-5TkjT5G|M$N&%!qVce3Fc`9)FSy<O1YUt9>~}hRP?2#ya##gz1@2Mq9t0 zk1#9dBlJEmqLF{U9KLogCmAXshpVj?^<xelWSG0c01lJa)EP5oK>p3^CBBEXXgPA3 zw498xUR#D7e6$Ral`TU6Vaw13YG1%3_XV=h>RCz(tq17isij0`RV^h2*0ax(LN+ka zdg(dD|Nisn-Wkthz_|DvdDQyqb8wpZ9GNLZs)^i6o+EKq#dAbRAK}*bo`rS!vt*dc zR{~u@|M$O4E{EUHXW?T299wIbz}wO#NZttgXkLuZUG(wTVtjIok=oZ5k!P)ii}0yf zgcNa$h{}3tAxX3zUr1v5aREXS;FWvj-%9=S__tE}Wi43<4=Vb&QjT(bzZ_Ni|C+kG zkf?$vJm0;yb=_9c)uj#AQj!RYti-n<C5=Gx2aV`y-9U3;cW>$TU{wAPx(ls~R!l+< z{isO~l@Q#gNTi2)5ECLQvdk<b3bY^UrR*DTnrH9Fo-=dqnK|d&J2ULhoq*yBPoPxJ znsn=i$+A|HS>I~1#dlFuY}eJ8V4Fx|bRA!pmewmYG&LFg1G3N;CKpnR)!#OM&ya~I zyVD#+fh>;Fl|K=bWax$g_mW}1<Y0t$D<gE`W0(U|GK{0y4#P=}OAl8M83-efV+0SY z>kK+Ie|<~iX|pANzZv0zrA_=3>w-;<`6ZUOozJEA2$89_=;(wHC>4=lC@QDUGVwzl z*dQNwpv$W5#1>7S@8M;u4Z%NJlZ%{%Zr(VAij;cvp(Y@I#*ydE=SBp6!VaMj{27YS z<Ww9vdk?a>d`%Tw<Trvg86Kltabeas6EEVn35{h6a;yhF*HzYBAzsI2cLJMSkI0Yx zm%X3K&lAd$BCpUzvHa45Te%Y+l+Iy!DJJgI_&uVp%;$W@_op_$&dJ`mtOp5X>2mr4 z_Nl3GnV{*0Bh8s^`I87hrh3tqzDFFcs;sI$QYC-)(r=%bU(vQtp=*#uDdu!XigQ>^ ziWm8{K^P7+P@zE<B;m70Qn(9FAL)h|SD|pqSAFQ0=lZd&-J>J6oW7kQv#2!|Y>9dF zL!ypL+j_B^8QaB=9Zt0#3xuMfm};_i4(`$Sa97M=H2@pm!hMpcV7by!^x+NMD^T(e z$`iy(VtSSvF%Uzu$Z#jfM2KvjEJylLc%Vesu~l7tlEvlS8cdL%B-ZLoQC=jx*&O!? qTgUQT#PdvTalra?9e03SYv3l1Ykf5{!^6;=m$~`IZPIAjFZ=~qUai#t delta 49986 zcmc$`dwdgR_AoxzWO8kKzfy9c5GZ0VTq>ZXNjkJmrCb#d-Ik)Jz^(;EQPGr(3MyJU zT-t;}rRcVxy9LD+l?4@cb(P&laYd1}iV`|ecf!R?J8ANsXHt;e{eJg-|M`7>{d^|# zT+VZz^PF>@^E~G~&$RKhqVcrCHh1<yJ4Rs`j=|r{I7Z+!MnH0I@!UdGIPBwRqOYG? zoPEb%_IxmZ>Y=KSZ4XJA%F~XwKRNu{`frw*4wgPadN8seu<6&CSMNL_j>ri8N%P5p zI~p!!Zhqi9g(|zV?BS8YA68XP`1WMN9{#}IoZFY;dvgC=HT&JAIoah)mp%CC>9#jX z%tjXU-HB^IJBDjZ;h6_dJv@)Y^C~>weDuFRw|G8`S3Z977ofa<Yw+&>1<8Nw;9mbP zcyEL&`z&7Wxv}v7hqULvvgbyER`dV!NN$9=mfrf_|0}HL{}u56Be=qUll8R`{O@mW zsUnvM4RFsWic*%x7+02C=UZs27BEuTqY*|#xE_U-_(<Xg6lTwwTM6x7;dvgOgYewc zCrnRZG1H;$R(6t0!8WlYJI9){-Gv-#pSLwxcz&SB<u+p`q7&!xUQHIB8o(|4*)1Yj zKy(s9bqqJ_LL^RflEQS6G83J;Ac2!Ysc2_!VNvN+v4WlKMX5<*n+G+^xAcsbt2#yF zgf@}1;p4wMM2rQLw$HwBLq~+r7oEixu(9yWSb=FKO9<aYaZB-%1Q=T3(9lw0Xgej$ zlw;2A90p`g85q`uI(b4I)@3kT*<>NsZ!`@9T<=Fe4it4Cy(m2Wpn}U{MiQw5oSm6S zR7>2W%nZeO;KJowxxX@Y)vNt#AC`{^v$#yv4+aeroKn7t$8lw_@Xn|CDO{@h=q=TJ z$x<x1x<=Ec3QnnS<R`d?w{7N&=g`3tm$t2%Us3xkzxp>=@V1$ad`US#->ccKYtsZv zIE`k`aOL(nPF0(ZqkO}hs_i*GP1`W1X8SN718>}y%RR2i!<AfzX54gA!QsA7MQh{P zrJHySv&^Q1ysj;K*)kggDNWm_;`nZr?^&MI;65Les-QHt?JT5*v9u2_ra9sm<>Run z<(|5StNAR)MiDzcYQ@Nv##I|dL$7JI`Js(sPJ0K`<t(q}GcD8f6ZM$Bn$P`>N}mMp ztfd=8@_1myg_XU~BDwdQ)!#yk;q4nmW79^_Q~+%Nr@27k+X!TC6h{<ft2c^ya(;Yw zwsxa964C(Wsn6DL6h}dW49iAwG<rkBF$GGf%y4fM$I1<Fg8W9&(u5k0lhgT)sNKy4 z43rnhFolpt^+o6nb;W=y8*olQZwEZfHi{DqHj0ygGaJRJGdGGQ(2iTA8|zW~)U6A1 z9}uRI%_>qNlCxWF`FIG&)lNkZW~y1FZ*$MZ3!k<3e?|DR>L~BRI@JxzrUGSqNhE!? z@wO=>Fxpm(bDw-)jFjqy2NhUB!Rs0p%bT0gVW<2B?<BKoP~C@*k|KWB)quuL*0?y8 zexrv~)ZFf#<IZ=I!EJRG;R&a+W{Z29d#sZR&RH@-SnJqObISec4fQ8#boD9qztoep zx7W|9zoC8Ymilcs)NiOgRsZP?^(Sgmmg<&XYtLyDvgg;4H4R5&;jUxJ?t;TQ_m5e0 z2)lRWt$ENpSu@97<^C><3N_XdQ^?@<d-H@R9FCgj+?@M-78%0i(s@vdDE-v^@r|&Y zCn1ffBe|Uk3(+{|xNnc+uA>0cHW(ekv;{B)0aN1~R66&DF{4uK2H5vu<jM8_4jUi; zzr#9!3)~H`BZd&m%=mZU_iK}ZCBZCio8czU5Hp@VhG80a!{NN!f6Rix0r^#Kiz_Fa z3T{V)+wDNOv2tEE9h{2>@7!4Pv0JW1404{R(blH`>^wA_G8#m5H$ZNa>zuXE#p~kj zYCo>Oj<xJ$EoV!##A*047E?xJF%ljnSmf$tcSrXp;)o`U`=k$lUjx77DlPod=k@Tb z+@N-=oABmJH_`lzn{57zn`&0q)6JFjisonPmCb*tXPVVZ{o;srRr4znVZvINUA>ap zq-+U*!PK<$N|cFi(L$Nt<Wb03vPBPB#ze_E9DY?M0)9zobgD1Iq-m|@tB4mR><z3{ z)soQs4W#H+ZOfw=N|CJzE#FAg8+dC9)R1p506l|1HHy|XGDK=K)tcH;&6mri$ws2} z8;N*B<IVQ$ushP4M+ulcv03ZIB=Tpw!_Yhq@|Z+~lA6tIqR;MdIMQL(>0mVE1S`}L zyH1Jj?&M~GkuXVh2}5L0AX{`W2x0;ngkpj`unA0y0m`TeX)WoycnO<8L!D-V5`OUs zD){wK6Vf@-hqVCe@j2V6wqA)IkGE*xtsIXyK#!+ebdV#)BZP|aj9g}DQM3WN@d%M- zJVJzzAI8yfJcZDzkc{IfM8wdAc#9Tr=nG|xg{T!#h%hNUg}N3%RESV$3QzUr7Ak#M zD-bh<0hVG@=+=OQPtmk0<Q&<mhqrzT1?;1z;PA^#`4x+piA_?ql2AuXn#}T&qUcng zv1p_v(VN@~)=o_Fk`gX0bdZuNL`vGr?ULdLL<;_c=Ug8~1BE}tM@j#nY%w4n{Ge({ zli$2V{y_OOE$1c84+`ITiTL4RmVr037WZ{XSRdvip$_XKd<pWKf;zm9_URy}=u`UW zHdJe9Q9(J@r-)<fLl}s@RV?q3m|F}WfNFl{Zvb5h)-r>CE*A(WiL;C@p;{6UAtgjh ziu_i{;=oG~6BQ+hZ*&RMqJ%n42`>>Pv{%PzKoA`gQ3Q2Gq|AD{NZ*Fknl4hr@fA@r zzMJVHq9qj}E<*Caix5IZ(Yd}X1ux->^j2Qd6y*kSeNJm>aM!&CE|y~QID@TAbfDw& z>MQsYnVCUcRUVw{&V`cJB~E@*%94!Xtza6;N`o!6)%;v{Isa}(Mv!Fe!C8=RsWW;V z{JLachRF-&#c2<2tzD?M^Y11l1u+c^Fc~mYe2eY;x}>Cx%$8ALl57BzY`jxHoqsp| zw;l<5RNZnc6Dmq8Lzo(`IifG+pGmBBme!1evUN4ExHv{b3a@>?)(Y=@Fxh6XWG8E! zwd-oh#rDM(dF?{B#@~n4wRWpHe;=`mfnRC^#XVckcyaEd`q>!GX_gYrk75c=*X&wK zc{SW@3>H(e8Ta0W0gFvEY<gJzPZDh++Ny<->Wh#{VX3x9vF|0Kl=dcWosFrQ5u{<8 z0$|Iv2=-hbG4~?aoA1FC;caWN@1X2dUy@1T)wBX^-cJ&qcdidF1*?)r?|KAm2$e^+ zUWC$Q(<x71N*?a5bZDE^5_L)0tng}g&2nhG$~Lt`^iy8=9e5PmE8+R)B~|_fNs)gK z`<<j6N$dhU<ASb6QoFQm-%09`r~33G)m~!P?<8VxpQPFQorLctcLBs+<*thowKu)_ zlsLZ~Almjy<i4LI<-YGF)jrQRl6D{7ru8a!!x;CGZQo0ZeZQ5+Ma=F~qP6`eNwMgn zq*_Goz98X?#<2KqCE}6#f<%uc+Q{7<5`EWC5_4BTQr>kzQr-29q`r&Zt=yw+z5pfk z_6~_zP3_is0ncg%a1g6;@3)d_wF-Xm)ufm5>;x9A!U2F-Rm2jzzm*iLbl!`QLm;YE z3Iw?7T%REga%pd{_||iMNwpeOSF87Sv(<d_(gbh9?n-`rR+={}NT}1jV}vIv?7<z2 ztNDdX)ll<ZR#s4<b_QoJ*6yz6y`a|XQ}$(61)G=Or}xlamj5{IjSN?C(K5<g&F@%V z#Xp;q6C|`{LEo}!ei7*IM@gS#I)ZmC+o{KW)A?u9rHmP<PDs}O3bgp6^z<OZltMks zhx=1n5yayesc25!UkY#t;<u9i34JS?Atq4aM>61d`iu~!-&_LP{(NGEQ&}@scw%~K z%}AIaV*q4&tyx%WN4gI>KOIfLbu}ky6t(MN7AO~&EzW%H4;g8==MVTUdN)Y-54=SG zf!>wc{GFu#L!X5ILA475OG^C#Z&mDiQ6h5zCie%4&c$H0ncw}Lq{vn6!gu#UY5LX< zNu7OB(q@BpWn;jh3JS!VO@p|oY;u=sH$Z2T0HrM@pf5$~xjw~W5M^nf<e^LH-D(hq zqLkQ%c|nv8&=v<0n%bfC{s4JYOFJk8<9Lxh*QaM8&oUr7Y#WGm3FMY&y*kjU=H)u? zA-0NNpOfN6{7?1TgWK;*YXipEK@K37KY?6m?eyRs_m2fOrMKap9o77<`&j<zw1+Zh z1b5y~wv7~?sCr1x@_&XBSMbjJiMCT>#&O_k)f-TX;6QA2DZm0`X&f>ws8Top7N9CH zUmWh|jPf{);~I=wL2>}$a0c&OLUC{ClYA_H>&CR7Gm?G8RtM}00ig_hBJE{~u4Oo_ z&jR3=GfG1k4k^~BN0#z*hQ<erAm_RAJMQ7^7d;q;43~}tvQ%5TTU``u1qT)H%yw&J zw>421jE!dT&RF=Q2v#JS3~v1m>7(|L!F!g|ZOY)T`xPy8@XmXcyBQxA++L#y&b*Hd z?r^JoYA+d_zmy1i7thfnty4*4;yB@n8G66~{HxLehEX2SI)nuFf@KJeQFy|J&>%fT zsI0;h<qV($ovc&?I%IhP<uX7BLb<E1(g|qIakS09p#4v*rFd|AZ5->Y8?bufX!C_9 zTu9+HfSL$3E`9*WK<JYv1A5B?AQ;pI&SS(=&e;`+dVP@l&BsnO2Bi(>pV!}Bp>)!` zibjLE-HG!bYbz_zfC#68S1E9QdO8u@zL>3;;beG>Q3Pk-*XV?SdE9DVrN((yVXN>v zRl)i78XnW&{0Gdf6@+a*AW|h_!PfdI<w%$qzd18QZE2`!$k5K<lk3hmfRAahtbkuf z9sK54&ZA$4W#trg$I2<%^D9qY-bvQ2I(hj8OUJ5Yb=`x>+KvZ{)m7k`T2@a7Z`D(* zod!1K$#nCBb*ouE35-^TrJPT@@8spD%f5ZEy<wxM=-nu)j*nXP{i>H&pI?nUPRm0Y zb;m;*?fHk0vx{8fOh+mBpB)cZ@QJl57v$?VikXe3hr!8h%5rOl;tY6?S{Ntl<mD1O zhMc_!w<UL)=U^1+TmhRXyb`6&qgf-keBVaKuqM_DsgeEap|Ue_8H#1(^rx5$Ww^ga ziU1C^NCLQc>csW7On=c(+qbT_jfzW#+IGj==0oEvV$o3Jm#;VGMH>9p%<IIfgx6x+ zL&GO}O0Uy9RZba!@<~zLe2Yx)uOkHXiKui(CbMxWUlFg3=C>j~RJ$Nz9;$5<5&g4c z^biSEG6^;)Ym!OGyMcrSv5{Q9vDjmQUJB*@a-o+v&lZb_7pUjEp_h1V0`wBEog??c z#E79@2xw<wQ7`O&^pX%8iKMg+$*AFQ8as@o*f+bAUHDc4EW;$O+5-_ST$mCun(<bM zW(ixPM(7Zwo{LWPqL36WJRLR3?{P82$4NH~qBmO7-Eb5k2jk;-^(y|jE|gB^2?=x# zONZK(6J3q$W;P9CY3=3`HrwqPGDW``YzIZL0=qr+gP3WmxuNrct%*Y2;0P$5*O@5X zBd6|x)B>o_F}pkOhx$2#+r()F$wF^}x~E!*732aro*{CIdQ?Jd6!8iZ{yBhIf9i3t zh>H(&o)WR9Sa@B`W`3Y+UMD7qv3okHkP*j)uf==PV0@GNG3)0&_Z*nFe>7VH&0mpj z;X<Zi3jA?k-3BhjY#cEdK?IKmdPF%j3sRRO_*jMCC~HBYa3sRbH=BuqD7V&JLi`xz z-Y_p3o)jx$sgM<?Lsl#r*2It+(V>~x(Tk!j8Ya0yOQz@NXuK3b2vHOvL=e$1A4TNT zp)~+4lt#nf{&CV_Elaaz)>?>fjfUSGG_!bX9CP6y6`BdXpmu44R3#N!1GzOA3BoUc zo=*I+`!+(`a99W8Z|@%Cy0$b7k1If;P!K^y8W>f+oJxh%$Os@;#Mg}P#6ngBYe%mL zo#3gEIxD8`Ph<^jG`w=KNY>0~_@@XARuP}OABjK`UBKe|HC@s0HxcVl>TZBW5Yce= z;21Ww%LB9m)%ypLZVkUdw{9IYf^Nml3uxE$YQf6rL4ng@412q8aoItuNKj(akWT$g zLM1vN{4a7U9a1MHMUcUZSh5pw%m`iMt-8)=*c&0c=-`tC!zw+&_lPG2TpbM;N7cb+ z2qUY65*^T-4{A^Dr-BTSw?2YsCih3fQ5fSIl`^!3PymzD0a<#qoK=QqLVhM54I84B zYz12m;|oM8K=?=`Ga_9%jD(k_?`NQVQA8ag@N4<>X!x^;0>*B-VeH2vX7291JmL<C z+n8tc_#*k;1w*VrLQDe|{H1$_EJnnFiXj#hN=S-`1!LtDV!<dmWrCDhPUS;tn4Fpb zsSG(a4N}PxNE;tB#H!zb<%+ZFqC|SSidaPWQ-g|-6<A|}K{pPP`%PW>kUArox)_-? zb0feK0`yL1%L4#C6LK^0X#nLOoHnE`$EEcB)4C==+4s`4E>IYnVbg)JTR=so0nTW6 z_MnlSus<JCw}W1<QOuvVe*yp^PL>Vk?=N5xkZsV!qV6|J$RZ<sN{x($*`E)nUXYl| zLa?9F@J+H>RouYZpQXwnlhu72H!w11)^h{bRR3u?g;an205Uqp&f#Em)(%`#`Qgw( z>V6zL{W+4lAF)dVX(3`{HC?gr!U4Q%I82N?xcf&9BMwO1Q=_aN+rVgc1RMY)LM$G) zjAnDpEF2kxJ!RVyg(9f4n$euQNlu}Tt#WEOq%3j@S)5!TYcyL7Hp@yU3h4vL#sN1J zu#@YD`31cA0$_&&DW{^2%Hdt3A+;$o9E4Kj0Tzsnj2@ET*@4krh~l@RqhV4OLuxh9 zUJM8hf~p(Y(ZIUpk>UH}?7UxA`B?ZH3FV8S?w;#)3!n~R+8)(FH>llAsMB<%LfI85 zwW|#HaJb)S_S`Bb(*|3PAi&`Om?3H8vX`McUaK4w4x%nnD?wg>7&YG6-zKIMk^)Y? z7W{m;(jV{cz5&GQX!uVOG8#zk(QrxxHzLz<`wcSwYM{DXK+956K`+=n!!&pfx0@)i z?RxIk(IY$)X;$}hc|o@Ol<2$_9qQ<Qc1|B(lPE0gkHD%5b+)OHo6}!?rG2r9Mb`fI zp|tLj6KdH0c7Vg7yi`shIZf?vhZO=7P7Ts#bW(%CdPbWo<R#^v!BTne{U><O>g0My z&-E1DJ>~9X2MY^XyIL8fREi+QjAlo};15Mw`mutJgQL69wrMHKVTr=H{uU7{z=Ayu zcEhYL@aL1xs^aiJM_K{?z!3awlmqy*{?_a8Ky>YmEzU)(9(HsWJ~b9LN9uA^q1Y`< zC{}XJkN4tJ4}DU+e{>gGKBD29rRpn<E6`Y`45AcT9w!bef#2tVbMXT;99G^R`+;Y7 z!$S3R++Z7k?U=h^I`T<Kx8rt4#W1JC?WoLjZg8J)XE{q<Tv2||!))S7g<>&1w3AF8 zt3JPT)f->?ik|A3zp3;C)cOIzHshoEt=%L9U{3Yn1O#8|zZTcLrsSS=pPr%OIwZYC z!+qpdH!~dVg}@D`;Qr?Fiz$r|o+u-|%${#0O_>t;jb(qSgn&Sq+Pg1913n>5d;VM* zfC9yy%%D;YYM|UN>Hp#>)l16#DM2k&8Kl*^rAI5M?PMFZ=OqYc1SAcFF%*mFJ^K<M z2DwPN=gkVhun0WmMd$jM^hYufmgzyIMzP1qKSO<(`J$xHbcHaDUefsLAvmDbsKB4} zu0GeNd@$VuVuuD)m!v;J?QsSvtzOc$LeylcdQW@R*-XtI?bhi*t(x4k8M>n;1ND>X zJw6~>F<G&vlz$S3&L<}aHDpCltzM9!^;HJ9Kl=V<ddagm$?HjrLjhq#YEK7*exIv+ z4sZ|?E=u|d^q$R?h&&G}Q0;lT^4-gHElL9_O$9I}J4k8DfXZtA*(^06D&<Kv?Njba z4l)!FOzxBP+wKBBkxt6@a3!Fh7?AW6$vqIFTLE|`GJ9554v{x8IjAC?L51S33^uqO z9E}Y*WSf@PYd^Y7dzQI)E&h_EKS}Mmx02ZkO;0NKEU9col%6c*pTcv3Dy<U;$_e7y zYW}%Q6|Yyp`0C1nJ05cID)L+(nVJ}+5f||kwls(<ftOoBfa#qQv5xjCxo;)?I&kh+ zIryi@jG&5{9>j4JcdX_&C3`-;OfN@_s^Uqq6i}+Ty%JRj;g_|D>MH&z2om6Ua!{*9 zwLm~3&g=0HF4GXc#7UYXy`xxYQ96eGUecFd>n0^g>f`XcA9V6hQHK-0m6T=G5T8N) znFL#D6|^R~4iEm<%k*z7g3U1l2+(Y&xRJLjd|!+Ex*;AmRm)ZL+!G2P1b^Y^ao1WD zZHDMD)Z|v`IE7D#qJrlk7JGhkLMi_ojv}&5t0TB;6$HZ1pAt)YtNGn)_DjSCMeA_3 zoZrACy42g?EaC#wn!|o0X)bt_C}w^kH^}I#g%n27$_96?dQoClB=_3y+=M^3W7Whb zyhRFAFg7g~OTd2o^lHw%ryjYv^Wi^E%7(dG|6GNUm#7uYF6iiy?<8V{a#sbvLG_)a zS)tlB4kj){4OgTGRm##J_t1Wcnab>1UI9^UfW@aOTPr;LQz{70PgS*!5^U3fqNy|@ zXsXQo;EomhBxZR6S5pOictq)|;Mb|nOVn}{H7AzS@T*x)!Y{pC=|iEHs^HeO5GTx3 zLEwDHqX3yn`zrb8)Bv4H`bG*i7FuMYSUjDX7*xZY@$7m;iI}`r?W^K9YjgA(Us;8d zCr9j)=xx<}@=}G5meggI0cIeFMBOr#v@bJAQDs3j4I%w9)ICu~`3NtdF4Ovu)c|q2 z2;T_7Q#H&@_+AQX=xYA6HFR*(YP#lbxP|aikf8yl9Nr#U546TB%OF5)D<gcJ&NjIj zbG_M<HRt3KJq=Aj6aKMA56Di|469G@{g{o={WF0MKE0Z*omY=^DVTLO`&<GUd~%he zmH^Ux^}Dkl%2xWWCMbeWJ_Hb@gzu@^v-JzIJQdj=CE&pgE8c}e(S1PscUk8Xs35t7 zS{w_%9!W%IxjGj9{X5t(By(hrb+E^7VqffD0Rg6|W&><K!G{2gkg(MtjFO!;MW;b9 z4~}N-YyzbCNCK>A&qX${26%6ZtY;J9y)m+mP3nw!!i^DvO@@NC5v(Z%-fJRw6Y?$| zj1Wy}@NS6UY&yJ`M@TjU-tGw5lnL)85vnN*-Zc@rDI4C4B1$#~-t!|0b{M?pMrbw{ z-ZLZlg01QV9P?N6&uFW7-(ycfs8^MPwN&w0k9w*hNLa<U)>re`*eVE`m<5~NT#I|5 zk*k@o^G&l+$>LhVi?<|^cHSW8iI%;!&p@upj%vTH&7$mlqJ4~Ds~j!ZD$Ih%{$^-+ z!U>V;J|QygCq!+NdGT#uWC6a!TGET=Kf=w;v3NjQO1Stydb3FfpEL(a4^}ZB<@G_n z*@5!3SH(@CpjOVQxz`}Qb5cI-;L|38Ntpv7Bcp@go~PJ~<`B~IJkTS3lNokYiZ0Dg z?GD}cSh!YpF@ABc7@>2})a?QJzVM5OMZzvW7JgG&&oaY6{?a-Y4>1_XUuuMu7E=2m z<cfz3ka|g?Ae92Cc1a1T3`qGT1*CEywL>Bx`fLM>xLKQ7Q_VBERlIiv8u<)9bL|3% zQKPyi@62hfsp4B|QN<TECZd#2g+pOm*|6H9L>a$r?g+u=TvR)rbn@x55KL?BI#`N! z*o=bBmZUvXo3&WpabTDwi)}cpt-?Yh@VO$jfOC$wrp$+3AMzXVJd(vHZ?^$u3a)W{ z7Ji8HjUVPA+3G8e4`HLK1zdG9gfq$gcz*NS_-zAzgmY^@b{tBov;#zx3hLGK%2emz z>cT4t4R{e=c*xFwsT}izKM>d#)Kku~q_a?0rDgX8G3`5{Si%oqZG-mjgs=p{4_8c@ zz6($y{@6bQsN^3#9|tm7+++SKU=ZGTTRe=7P_lXu*6Vi6FCI-1NE-KJf-CkTW*nfe z-Z~E-9|{-_Q>@Xfs4#%*W;1~!06gxEVP?#7qK~l{j`rHo4wqtWW+lLAq(*?52{3;h zf=L261HfSpLdzVCg+D*$iSNxQ*4O>8OZEF_<RFbr4$@@G6WSnTOQ-wDMvMEKdWt*U zho8scmwt`lFw58C>szTdj3akqUTn`o(R`frE)c0Hc5xKUGhx)ze0O@C^J%`}{^3r- zhw&P%g@-VccLT2_r#LlEJx_SF&+`Oc&99z>d7tJFD@WVb!Bzk-g7lpUPQw@`NNTa> zDNYDgud@lyHda^C&F4g{(az#USTi9c;92{L;5vMk=v>Q$^r~w952fq)aFU`~B_ya& z-DcGS(K(h864cfFr3$inGrzKe_A((AGh3vxJy5~W%?R)rH4)szD7?z8>-o>|g@BOs z-r}4O@6CMk=mcjqAF)<DH}UUe<O7LX9#bj3oA|Zvb-W5MbtXD*aaIB>u?P1iIG^P8 z(A}!Sb^L3%8f}_*Ju}()49_r7GON_t#A069#RhGjF$vDme#$%9SyZ#wo$Opy(*c)U zUaL9pUgf-8W2tvIi)-uZ>zu1<JL*a2YqjU=?{Z$Q)xpO5S{yU6hY?<sPKiwSDUs^k z!2XV{f#}Gjz_ru~b_#o6AY0yAqX^wDm=BBOIUzbI)}v=rS!~Rl9&%~&m5As4%O_Qq zo)1GdB^I(WZ`qlk3Y+rjWY!=A`cL;UMg7=a8TJrHfVveqSlg|)J8yGRAvd1oPI}8B zQu(d+e!rP51vQR^Ka1WBA%B_yHC0W!xihH5&1cXhqy4HpVH!?K#Joc1QP06KC^Clq zh`}sCU0CL2Izku;9n4YnqS6DXwD7J>bnF48g%C5_U^ABkNxS=9(Ds+k;f4})ULkkB zGm6MfzKX57My_qzJAnq68+sNSZSQF`lS^TUG#W8EKc~dX&rSZ~c*urZow4xbX#T$- zMx!!9z-=^)YFQLB9uJksa3f{7n(L!S1fXt5vnTp8ET}~+JSS=yPK9#tIU;p)(p#<e ztQx=tK4Sq4;I@9Fhdp|+!R9u_!q^|tj2!XDhUxJm9Ev^Cz1+2l<zS_4G^fSGw6MY& zggbyE`W+T`B3I{5;yT<kciyewEcGg`u3pV`)F*J~>kXV`DbCd`CAf~IO78qphO;cw za&^me+<cdwOFN+9m{22`%y|-h=fv`MjMKNy7n#SHLcMRk2>!=bP3xz9m?fd6yoM>% zY=xk3%Vtd}-#7zreNt1#udCXueNqc~xV=GgWqf17b38^9Ex7MEZR6({tNHgA5k9xA zik~x<Yy*r_pNGqWpJbxRT^1zC%^5cM)p~JH3(;nVV;EhFa*vUxF}#iDm3n3m(YBt~ z6SvwnXEZ{oBM29jeThMp3iGl-Op%#@!8L#^*vu2ju%NGmHJE5r+ITNk%BvGgZCJ}3 zTQy&~*v|JP*%UVZOTz}9(3aX@5p7ZJSr4Qtyy_OUZ>G%ymWx+osZcf9rr5I-I#lwc zGQr!(E3v8|MkWPSv;n+C1qOE+2o|WOI2D}nCva-txjyX<1DEV;DYFUH>nLEX0en!p z7frJo8=>um=bSjUcNL2lYdBI!AW9C95LKMrXP)>gCR06~|C8t8l}stGsIBJHVCO+D zf5c|z-(Q&kCP+)@LwelMjDw9U0rT`OKC91c^#jw(Z>i?r12^bQX(?|ntm5adP1(Ac z*D8~DR`Va=Dc}&!Uh#-czef)iaGF~mQt4B6$~nEqeO8qUX$Q~NF_ZK=OMdTB20v6O zgMZZ~>}gg#W;5)u^P3hw&Hp`Zfw*z)I=&?_VdnyI)7ol&`)y}46ZXsi4Pb*x<)S|G za$jchZtzN#D{a1vYQAYIJa#+(WKk9WWYu%P?rQ${Y&$>CjM7RkI8e$it(m7`xQ&I3 z_a_=OLeF~mnIkLu%#)ty6?)JE9QP8t$AHK-@dUBLma;oHNDx)vdo^dK?q=cr2{^aN z7yC3r%jtaN9tSvtq>pUPN}znyZaYsVWhXdzJeg|UtSses;>VQJ`5j7^ZH0o|{iv;! z|9j%Y3Tn5@Hl6=_I@U_>_B;v;jsjesXMh^AmEm!QYSlv;Yb~@XcB3n<YF?q7o$)-V zr53y@y<X*8kO5aFcQ}GtmDcCYpnX-SlvDb&9OFY5Y-Z;F%Ae>XcY8CEe9(gY2xijh zKBCB%Nx>ip;v-07yHEE~MLthvrCdN2(NLfO5XBIPq6nFiyD}=|dIoapqPsF}a!y@@ zx1R3PT4rYuaP@|S4zv~}l<1*^87k3RvS5|Cc1klER*7xmH4<^3k|TVu0L`3+_L(a1 zBGnuQ1@vSR?12I7!NB*w05MRfV}GeFhcr13<G2gAaJt*lN8H^*E>FJl1lZC)sfuCs zXoS^c=FsXf3s#Q=;bfF6zs>4#u#H1YMh^z&#iW8ogUL>MtHlnB$JndamyY_uYfHyW zl}BDW#>3L#A$eFjJVQ&z7J22E2`fi}uo0}i0alJVuyUXffb|$|f}PHs%}3B`fgn~P zh-6qsX2CK7AQ*rc0i=+N-j+6|97tRkMXSlb(zW3_UGY^Vb&$JlTDpf+d~&)ksR%EQ zuPsSMjnll>*OpmmZCMTspn)B*v^2odlJ-Sn7Ft*W188CS*FLU|{n`TaWdtoS4e|o> zHyQr;zwl~<eN>!TKmx2WC;AFNw+s+dKG9cXK`YK%k$oYCq(UW}X<9O8uu+KxFub!6 zOh-#i4=gopT%K)|M=6|$ZL}wTVuDi&rEoIVDPmYVtoQ2<q5K;$V^&E`wXnYc?Sn^T z;S*q^3d^Tbcs<q~+CPnf6;UbtDTYdp$|YD2Hp0jnj-stB&5mTB&dFcfVaLBJV8x@8 z#1V!G;s{JBJQKsmE1aRgP24Hla7rnxj&Xu54T!lbW_11>KpmYA3_omerNB8MDQ`h_ zAq7Dkh=re!yU~M|5Uoc=1t5DhhE7b#p^z`xqZIxE%kz~0)oqYZBmZYS3;zSpA3gtp z=;ePwRB$-i^<;OVkU*tgCoA1g96+SS!bLJdg@4R-!afGR{5xrnN3juC0!EgGGaR%+ zAUC?BJBPh#&#f+e9am^i^K=ss2F93)y}z{&e2NE^Oe{Pl)>wAsO!^U!M9G-mRKdd( z_~}ri`mM6DXFOx|U!XI$a*+CZnTD_Z`$COO<3uOhIBgz#KG0}h0P*Go;hV^agXnY` zr90vHq8v`)z>AjKT<pmNCZc1fUqk2QNZ_I|nlM&(9rYtJ*df1Rs$n7>GN=vH`~kxd z;=?x}UV9yJjohNukBztxu(9#`baDSO8I%L(ux;Stb2mF~o$)^VL7DZ-jvQ<x&ZYH^ z7e`_<osEZL;jK}mWa)lQ2-l<@yoH_5c1~A^a5e5L7DpOqm-T&xPc*MRWGBC3z-dbw ze>MQLtGTxvM$aZV8hnvWslh^orWiCZ@2hvqQv67hlX@qLBWB{JdCpf4SwU~3gYTB< z{CE=zue;<9aUa=(8PRd6@WPaufxtQ^>U0WR;Ga|0`xQR^?{YUk2N+?_+ZZ<Ka6%Qy zZWG(*O*ptsd@-*Xe)ry#_skI@ulkCx0+(o8_CXvDou3!+7Thw{xlwGNK!W)3yq^M? zu|E(=;nq9Hc_JxT0pPlwV7H6f>EjP>7j=_3_|;E(_6RXzjY(CGOB9wRqndjim3ESh zYQ!~ESV4OhR?v7*<7%;YT-rBV+q0&)#jfcgE^Vu8fy?)VCCiCf){ELnu*I~90o?L) z06PY4JO#E(WRmStg6a6>vgA1qQ?XZt3ByU3<G8xqkzVXmr5C_X%hITF@R-decx(;R z1uz8(Bi{=pVDDa5!X4xjmz8CNL>Ip%{d^TlEDpzqhe}cDC_+*e!zU~fWq`WN-O|rO zHsRoDM}`Ao5{}-~$L%f4@q7@mfkf&e_|$6W6~7g1l`x$Vj=mG$3~yz(cF(NDn}+3X zVw2nn%^+;zsJOi0sMug5zeMJ{6x{+7?uKg%m<elAf}RhTs=?{QU@!XlxD%Jl(!N#y zE_iy}pD&l?Py(_%!^u~I3T<}wdqE=UPoAJ6?L?4DQFgr{4TKL#1Cj@ai*}=4hZJ5g zo!2N0R+C6Pw$gc@GspP@Xm%xBu@Y4IY*s4;hdru(avRx&QWN`U9$|!kNO>@+5{4|3 z4d&Fi2)Vm(%?^?1RULWIc`>j<#O2U{*n{Qag`OQE*}elpMYs^fu~Ft;+$UvNoO7K2 z%+Ef<1Zl9$8tk9e)HAe%uT)7`u_Cw_vpqrxIMIyR28c`G3KND-ENCZ+#1Uh$7NeMK z#3voGfB6+Y;gzz_zB(C@!+7#18O&iu$d4Yq$k-U+8PH>}MB_?_RUZ{IX5Qvr>n?Db zoJPKP4dFEL-#n~wz8M1Cq1Z&0zwl7!F&H(oh+8-P=Cr#9v5~LC3<Ob?GQzC4tsnp{ z!u@Ib$SV98b_~8Q1REE2q_7E<>OE=hqvF`cCo}JGm#|r^-f3cwiUmzz3WV=P*)qXx zvz~^Rf;HHwKFwzJPI(SGV&Sj;$W1LDGgV0|NhOwO1l5Hn6&|{PvMSDeeGwDlbxAkW z*@w|RinH(Mj6FsfF(dbKxiKRSM3l!7;P5V8OK4wR!u_LsoJV^vq21;rv?6G=j%{~i z*2U-Q+?i{h7_B{n7jHgPSA&<d*BITg@adSf2DARygB!)8xYgBz3%$hgF?#>PHH2_n z(Kv3Te>09>5o-xy8bK5%I_heOl5YZpbs|6tMDLh1|2=CI!f~Q;%uRkTYNKqt*?Ny3 zf!le!=pZy+TdQ`E#ap3MvgAa7v}T^e1rZlUr^Y*hriOS^NNN0EA|#Mf_^IN$8mgrF z=fM^2HC+K5a(GD?%*=l7T*WZY?fs|VUNJU;YQneS@HJR0{CLcE1fAf~LrO}6l0G~D zUrepZasCMFl=6mk>dEe{Y+fbydmYTa0oWB_L?ipTSkm6`TK#LA?D=PK^D{PlGQpFS z5$0k;zpYHc8vRRQieMV@(B7cKlibFhVVwiarB9UV&&Z(5U^Fift%k>H5`@>q$K1%y zBTHUZ_QO|2Y$iLC9Sr|XDnE!B(KmaNJATAS0f{3AkSV_$NSSmL8Hu5|CFy?Fp6++J zU%T4)K(c>>yI8>S1poW)y;mC-b9VI^?owrz5yLjPA<it|n5JiIJ?(0>EBwhGEI;KK zSP4MNjdA6A&P$_N+ofYgc&AeMMk>wI&OleMQ0_|!zg2`IXq3*1pu^^CI}aS_dcU8# zeotj5#MgwwG^>Sh+D<sKOmWd&y5DEJQ|0|kEc|}V2#fJ{@mMkG#dgNRljQXhwo?Ad z9@c20uQsfrI|svm9Ka63UJ5!&9g-31=!JeGn;t*cE)d}=5M{>UI*^go3;i*(`&O6N zj>8%z9;M7(8SNQ*;ip&~V#~BEXDBlrVsHwAxq9Jz>}5ALj`tH#ro~T)8)s4w+SLn- zK8LRsY4AL$5Pb3`^vJmc$R$AT!x*gpIANwB_Ny1(i+%GLGy20bR47IH4qFU&l#JN3 zb~QWhEM{TG6!?uJ(<HnWuE#-$Xgt90k8!`N8tc&u&9Pdy&1|~`Rg^--Gcm;d=0KH5 zY4BoW!3Tlq@bMg8^Z~3-@Y(VmV4obr*^#cD-RRECH8#RAzIAdB3Bm{uEOwt3HyTPO zqudoxkW%Jrad{ICr|zgEIPfN@R@hH>k)68w(0E2ESRrDDHCkD8=W3g1D~N^b<P87~ zGO&XPfG`q?fbRzp<e_PDO$2C{`L;;2R{~ZL18Cre_|68&oHP?A+!YJ|7R=u}4(^Y) zXL#BNwu$47FD^q$vwI-Ltgb+*R=BBw-e(8?U5z%1*Y<}tKp4N}gTa-BXSx$zIdFp{ z+pUt72;Zs~GGgcs2)<t_<PV^j65gp7a$`ytX4Qh3-d}(jvpjHd_uBEiQn*7@|8h@n zI?_&T%&&XicVi)=5{JW3XPN3#bluR>ztP^v4*wJ(fe}7^;<AB0c@>+`8Kj8qcI&ZJ zxN<Q@zL;q0$3YCPo;vLqxG?1~#KJGjx@`B4b$%Ye&7S!EMSXu0#J}NwLGjr`gZbmX zfU}qB(|OhX@PLD^8g)Yl_!j6u$I=3+o(<g~a{eivIf%hY-3EKIe=e*X1?)>fHSD|3 zizM4{Fi#)}!s)eZ{E(u@I@`-WKeIPr5b^xVvhO`G6?O+8_?CUd{$r0A_^J;t`bxwM zpJw63&)TOQo0Idg$P^eFF!Qa)zJe5P%xXX@48Rl^4g<6upOTdA%W4IpGFf{@lN~{k ze$1TJz<{%}2(`CCXRe$EAs`&atmpdZvT<K7dmA5VvtwgCDIkebZM9IVwXm;*)LJFm zErkSJGCc9Cf#)y%F{Db^cC4UivGbEdFWBMqApfUN3XHY(g&EuJ`ZH+<Z!)7Y)R~#h zfDh?r;#=*sUpR`5^ar3u!v|8<B#Zdn1bj}32q-w5%1*9)p*zW~llMsQJqT&YVUrFh zIJ(KY=3F0D_+i$Y2T89hhqEVtl4m7*@Cmw*Ry(WLy{5pL+=E$&2}`Wjp3F1zttCBm zR$C8Tq4bXg{lE6zbZL)57#};Z2Ft(PQ!wT1A$9)6HP&O8g_`hfV6|1#v&Nd!v&wqf zkD1^IM&ofTn({X4AfXpCt4*s*a87vu;~aKJDXNZz?~kEcoK?b##Kv9?w1?*7mG(GP zWhrhknD_vKL{P`UF)+q_0le_j0K+C+zYC{*U3r)~07B0HS}ZsYqB{<u@Z+%dXfY2L z3qK?~clh;rpb$QblHGTURFLRyn2uaA!(p?lxjP#os?dnUOhya7pE4>1Mnw0&C|2F6 zg6XyduAmw%46E9&5F}a4b9!C}FU8<*6DcD;MhkD+U~pwNw26v>1-UM}tMoQ~g{DF8 z%4$#p3loP(Py-9MMccruh~@vI$7oW)ylol$B9H`bYuuQqVDH4h!x?AisBl-t8rZfR zQ**b>zLRi7x#rn3J$Xj+k(TLXE`IjRp)0VL$BgI$<9`Nj>JuF_ctBqq#7ANyss*J= zF@TF~8S!aJCJKh+*DuT+Q)@Ybe4d`z$v#pQbT4GiD$9@U%j9bw!ukSQwl9EL(2*I< zCa}4%hAY*0h+y!LQMCvgYVVN|bRz`np!);3)i8%Z*R=SW9H+LYL?otoGtXzypN)4K z#!nJc(B0Li)7Y;A4+sP%2I8A~yX&*=O>8qun{1cxq-^&bnfnSLtPQO?CZ#<2cg865 zIyO;GZ;fFVxQYo!79Kb|D^AV_z0V#1-wx9hxH`&G{mF1c4&8vxjlpqRP^DQ^mI3jn zcv(tpCR@q&WyZn@G0d0^`bfeZbsQArz8HKp4jT}dN%@^~zYLVhojno5tjyU&>&TuY zm=FeQu7B<kM1Cqra?Z8u#=}9BcMKxCpPvcMr^XT97BgooEW3CH_l<R055l3}6ue|0 zusFv$FNHlEAkB#^X6XxP%u3ThV4m!3#>M^tn0(A)I1HDX#~<(0CpCgd$=df9Z(K|+ zA?pm_D+$vn_R#HzW_Vt!?pV4or>+OfFX;jF`Rp0XGW31^-o_63eWtN?+1~n@IqkJ~ zElO^Pm-RQAm)9<vnPXhCU{UMb(|rjR&Q8J9wJfPyh8M$!|Hm+MU0u?#j{1)J#dYRo z_+)e4xAk88hi5QjM(+vul>JROxwHxA8c%z~g7&u{Q{AJ63u7n50=bIupI`dvLEMO> zjaY@==qPA+w4;7u&feM#AjEOdynI%UX-NwrpvY^-;8d@p{-c1UenGCO77bxn<F{^N zilufAgWQ{M7oV>geFR~7EUL6vYDv~yKcDe{vN3aVduuGU*ceQBq0zw@1ROhG^GXjB zB1j^?V=*S2ZzL@%U?&?3-xF<=kA)USnIL9GCG(=|<dRuYRS+{aUhz0K2r;sytiyi- z;-5R96%}&guuG0^10i7fJN+^1<a6Cu8$DZk9=OuzS(V|;v2OWlj;mNS7-zdO7a^q1 zD9KV+N3SrlmO8kU5FKWn7GC@NDjCK#1XC16!g#dj+ht95?9%Q=({fc7_F1B{w$2*p zsIOU;wJ58hqaH8rsGSzT%pLXSCAS6k)*nAKE9b>pL&M%>*qCWo+`spjmcu9d+7qJf z_)Nq|(^in4WyxLgXfF;bfKeDs$McIFj63k{GJ{<H)gWTv(m?f<<B8Q*8dq5>YnCj& zw|z<P5-PNqFx_hwiD`JT@6c;kpYw=*FzKOYB3{;%Kj0r$c|v@B)(P>r>4f;Er}l*S z&I;=4H!Bz9AdqLFQKQ_b`U;kGLflt$LVU%1LhLM}F1=@tBQXM!-(7&iV~aPd$v*98 z;deHBP2JOh3_KIh!n5%ld>CE=Uf6^1d<8Qh1KurI1D1;q$3YxdN3V>F<oiL)dY|XY zr@!l1y8glg0)?HrfE~*z$6!<1cv-y(tO1c#o>id~F89aZ{~US;hu(pq_xYjs*YZ2N zQZFEg><W~+&<`QWeoj9>Loqg@6w2P>#?D`<ofwf94hcK9el53u{+Rn=qjhDC1GAi5 z<`)f(#f=br-~<Z=E-tz$oe{%st`-==%9<+BmMj-8s7+Prh0gwhBM01L;H+}0QCqAP zHb(vl0lwIT>Yrl|7jHUZT4UV1jNnf7VRypju^<{|xhV^Vc_zh_!t#L|_o6shpLYi2 zU8qAT;BY?&t!7$SICg<^YdD-y`Al~Pgs76-DtS9#Fr`+~u+Y9PSvCpg&rO&S<1#Jq z4MEhh3Hn}1fCY{f2jO#5tZ0pqhHJWmQ6*eZRtld=v<K|oFPlk)&^VwT3bUdPpM?%l zTw%3{StUOstPtPBrOz1Q*P=sy*T>6`CLdN;31-VC=$ylhsPjjo#!XtmGzjrH;Q1bj z0E1|-#lmNfA-r1Qy>}W8>*1z5p32?1&@>Nir!@y&T!w9j&Ac!|-au#Hu(ppH$hq!^ zq5pBD6TW>@IGg}y;wh|x-P4`wDq-oaZ1*sEwTXrEM7Zw2om!afp%3Wx?-0iux|iYG zv29vmvwUfM*bTUU>K{Jjco8lfxR<p?CwvD16s&-7VWzA#*dd+pm7LcKpTHReX4DC< zyj^|e(N*&uO|b0)?Er`lfFND!+>B$mIdhFx@PXU_ho?X%EPY!m{O}GmSh)ilN5jlf z=5Y0uft8qP2juWU6tjtj-#v<9%weK}C|3y8{n)XWfcL+Hr{Hk5YddUXlI5X+PiTRE zO=BcsyYj^V3a5gD*^>-}Vq9`%#F7lHqoUEAR6)Z2V~XgRf6yx5U_T9o8gP~LLLmq( z<5=7UO}>E-%fJOq9SRR@X(Y5qq4Uq+8TB~Qy5+8yyEj1?4t<i4CzGNRBC-3+Nw~6o zLf$tqJ@>lqt;9InrJIwNRNM=Myd{zzP|O!ZM5nUnZr43feNRR8mDW}Fl>ak8Lfuxm zsj}w|*PT$e5bC_E7L<PzpjxW0^dw;+Tg{yn*wuF66BdKRK$Z;I>d33@mKM9Rr@~bU zZ7QKn+o~Dme-1>$+97NXmqV_xU8<gzTv`4W7|J#=+t?;%8JGi62*1Y(y2Ujaz$RDN zE|n&imj5<DwHjIcYGduR%2=3_iH0p~Pl2ldpbDUyy{jg3#dlkXf<bQn-4l}@6ji-w zfe_*L^rH<5VY$e)-<{!62<@UmI3ZEK^zsa+LWo3>JNV1zVG7|Xapce>!!TO=@({1f zfzS8A(+bZKcs_v#9A)+ryj@Qa+8THshG*;xg!WB%V-yXO6MZVB6rL780NF&t2c(tU zw0jmXva48>#d7WU6gV;m?ki`6OR~18dX~t#Qdik%sVk?2M`Bs*-y!n-`2c9-Dw`RU zyNiLKh|T)5pW3g3kbw@up9GiutD8I;=}aJ>#f(%dwnMic6K);sfk+h9iqabf{}PCW ze;CBAT0drVR$#)F$PyzhJQ-sI-v9$KC|h|_Z!COnFx~<eHo<pXNnh%OhXxSb3V?eW z;OYi2;}~GqwF&C#p#@(|2VX`6J=Z&XX>i;1bV8KMRegDW*ato8@q}L?oRz)=LQV{R z9$4>3Vu^*lgW&NNQpQ;LRrsuggm;%LFj|-tgKys;|Kd>oX2|1^Zym~y0-|mOqA~}P z%3lw7ZXElC$ecj#b(5q@IzET=5ZVNI(%`uno_9d3j}3{|2Kl?;+4S&z^Ui(z_I?!m z*ylP3v-)OvDk+55BMM=Y2!Sw3Aq>P+!kR(&))4YDBC&9%=su_vKJ-M8)~b7Ux>`UV ztFQcZ)y|5YAi^iXn!gR_i?ML|phDQ+PYVXvQ8$<Cx(JTsD2|3p^Gc54RGgZFZ$Ji# zCc^g`U?TnKYpL6!WD|Kk5ANC^)kN(=9uVu-U!Q~?n1miQ3*V0Dee?~p5cAX9=%MCT zSR6l$D4G;<o`HCOo9KW^XE!9lq>DzBO-i{&<=3}b+2xgJs=*giQKpH3(`uC<4bnp2 z;QesYq3O8~ekngA!()Cp#~wv`da=9@;izW+Bmi&y)r^iH&YXd>;Uc#q$dGd!XiUnU znJ#33NHCJsm3Njm1mY-?AYy=86}h36{vXf^9pT5@Wc4`YHp4C71^xgy`XCl`296oj z5K(eQ&{62!5u@X4zXz!kEm)!`?iBL>Juv?W0%v;ST~L0tOs!4$p%E!jo)jN#`cQd3 zkPr)JN!W<u>aWGqjqo&KaI-|q(POboha11XND0MDHofK>rVvyE7&sqe%A?`&L$)*9 z1zxZ1(qtG{W@TPE4ck3L%ol_7h|dGmh|fUhkHY`DVZa>yZSYNdd5^6O6P^Y_v@n@& z9<uV7@J=Hwga;Y#Xcn7{Rw^Bs;0_75I(i7}YB=g0+Z*3)Y#LJB<)E}J@E|+oLB<Ff zpB)R|PuQ}kasd6;zn6xzdM1?r0BNM%&SG;S(}ED&%0BBUFH7%v6Jk8X2#ptRR@j}e zz47*=@l7os44;%u@#LP#vIu@_c_Dz0;6Z2_xR0adz7J>xFOYWy$oq%K9}B-H;euOc z3DKhy?iODN=mfp^TtMB@9@;<ks}P3Sf?7-~9D>i`(by`17u$dr1VlWJ`PU%rflE7| z1jrF@0@vOMXnb1GiTPP5ba73CGGqgpUTM3u-;!QF>w-oWtLMsHV}76FT2&KQqXk(g z5D;%d^=M@3k68Y6A+8IwU+r4y_S$ofsi4Iwcgu9lI3-Xh2Nn^huCaG4uzB7+xb|-D zmir3Rw@4jpT+WULJbqTW;r)<}&<X3gb@!z@l>Ig<&Z_-&Yi!^n*EI}=CyLW7=NoWK zN5e+}QYM+KthJC}5Ee(epC+^)0PgSLF+emqlTCGP;=Z^q&!hIjS0kOcg@6+p24adR zk|oC!-OB4*0UEw{Wv)jp`tHRcVoAdlJI#pr8iC@IjPR^zvnqO+Bly(Iexd^PTOMhE zNC&-+&`yL0#Vis~FftEr;WAG5VY}gzz1-vXXQqV*u8kALF5Z(z`Qrfh%Kg@yoEhX7 zn6aP+RiwDb9s$3jC}zqi*9p-9PPjh}@8gv2VMTWi>~~w)LszkCD{R#<yDCV*7r&pt zr@kNcP**YMS185|`%GahR<H=(H3WBu`!;+$x7|J5^JfXOR`zHQI3T#1!P0wlLi2#i zyhSWBPJ`cKqXmA)8@GrPjFa_S#1i9V?H2JC<7D*~ak4SDax`3%Q5uUNv~{XawQma? zcWn_THEt27G-$RFLaTJ~V4GNkO@mV`U8tBumk%?Xk?_yaIP2QP0uKfixKcPAvsvNa z70Qy+R6cCc00(m<v{ksa_TgyllX8*Pz<=_?3XU$pwR>)mEUY4>_=th-a+i)(vgH+N z5G#fw>Xq5<M}{_Nm-|g7U5LiEh?Ff7ejUzHr&T1Q0-fL<AS@7}$vD-g9#3-z>yvNZ z9W|IIROmu4LhbB<M3e67_YGUb4@)C(Zf`IbRG_?0C>y|Ts_enWm2;Qt3q8MyZU<g< zEz^ZQgjS}3D16^G{~$hMi+C2kYHp8g5qnD?Zi<Fqgw!`UZrLJ!TSyDfM`5-W&$rJn zHB@d9&*S)kL{kY^u4okbL5~b6A_c>b4ZJGuwtX6S6ft34+%`S9fzaAO!7A6mMdMkJ zXxW6coLn<4Kf~`>W64kTZ-Cz<|A{r^BV>@WXc{*>Qu;_XMF#P@ccBEg;Ey7$*Eo}F zAU0==K<KLAaHi}1ZgfzHj?L36+;AdMI>g2C{kVlPgKxb8{_!L55-Zpu67b+gPbB=) zU<|@js6r>~?O(>KDoGRC6t>E{zS0{em3P1~w7Z`BB%wV6g7h37#wNhG7T4~?zzNIl zEf9$&4q%)bP8`~XKE95Hf0D8Naxz5=s|Mg?YTi&}aqi~-JF<tbBm3Y#kll`u4dEKU znY*ye>^a|zMx|w73kXBj&fFsEnsmZxG20dYcM0gEB^JIdKKiShK~oa9>Vy*_Zjl*v zDbcV+G!#a{GXX*u(&0KN(FtU~w$gckkU2Ckh%VDSc>{-}e%)22{9Qigk)2*7>a{So zeeei}Z*qMIJErNfR4~h!s{9$2n*6H#YD*3Ailw2hrnqKG4YtkdqJjOFB9=9mj}+G+ zY35ZZz^QZsX{sS9X2Xy&K!REDWEvx|H;I{ZK=rdhh=)YdlvSCkIFQ_1=U$k5=xWdK z;+nIcB*THk87}kJ*`95(2RZ!)y0`aNfCm}Z&bYb33g&~^nF-H3pqxnFcYvZInSTd) zn7GxiUd?}8_4`}d=hz+K2DiJ~XJos(<e??}HQ^+Bc3f0qyIfz3uk2NEUxLy-33)ZQ z(!<t5jBBS09Wkz!w}dZWqFBbyxd6zR?QXt3**V6|+4FnQ*qbWmcWQ-qV%NuhsSX5F zQ@BN33{R~o5`GBA{&a;7%5}mR`0o>>>B-9Za52jS+vZroqadQLp`l{J@eQ=#8Q%Xy z^(}5}v`wg7zt;7sh;_d$2M|lwKYDu#eAPM_-Y75X7MTFWRbd4p;j#Zh!UP~;xlDpq z=z~*K(zHY-p*QjXg#V5PQedAN-v|Lt4~*&>(pmonsRoeFA3}OeMp`W+eFKmZ7#D#5 z&Icam%nGY>Fzk({`qr`e&KCQ>5^ee)@O!Q??yM9u+lM-MLGECZ+`&`O0g2TG2E$wA z)5m{BDZ)Q?9a6*p5XB+DIBp2zeKJOijPY*3NMVx$<*=dtl?Qgz_ZTt{42Ii>4mT_Q zh0!1Umk!oL2kAo{Oq4s&$Q|4S9nhFMfL59LprjS|;o20Kb4Y>FI*Jr{>5u|@kcKY- zK(x3%4uu>%XlwWyypf;!5xm_{4|ZU21$(GmD|n&@%O`dXLQn{KFpaED@HS4m?pqv? z9sI%Y7lV_0${Sn@^kv9IIIX=!)~1L2C7@Z~4|aP1MFV8o!~k&Of?*19B1cB7V3+t? zyHcQuHTGf`YC0ljG{4x@3hK8mO2d)neE;*VN9sR?pq>qEL>p`bW}mgOx75Qo>5zVn zJq>Ylv_%}pg5xCoGx}6zlienaTd(Y-!Ldqh{Q{1JJjzbBb6o{3yxjj{7pl0}PYJ!S zw7%G-6=p<9U*~IR;yofyJo3K?<LE%lykbZgE22p2e<KUSEj=Kpv9b%;NX$~kzJ)HQ zG5vu~b{q>=yDYgLb~xJ&37~UAE_)z=+#bxICU?3>?)1aK|6Rp4K&N*MbvjAzbe7!d zIOtS^X)YWUYYIrXl<Ubi%UV?~V{E?x<GufGKo$bZYx6)aqr6o{NdrnP_U-rRe{;MI zL?*#{-X}XYC9v^N=|{T2^h}gDK(<RSTE<sSD5r$wFcrt&KAwAZWxD6)ijJ#|4!ELh z(bO2(zkqq84=|>Dh|c_V!0JXe@pzWCrt^EKF<|DA<rP#Ud<+hFD*Z?TsWR!4Zy^2O zDZc`DD>8?e(Fs>+Nt0Tpe9yoGf)ZQn`F;tgI&yuGdLxeqsXUqs7eK|4F&E*TupZ_K z?CCc`9__i27gRGeMbP{~1|NA%r2yCD8spA%e=R<DXo~y!^4VD!9Ih__`*V2^F=JBC zGnL71EZ=YrpORcN#qBY&cTqI=l#4NCyPv9r(_S#kvj;Z1GTb+Rk4Csb9^qdi|GT(1 z!U!K78exe%!Zq>;Z-x;vnD+b6U=_dBogpM7RP$wJkM*pOrLh8hpMO{yJmohd<x_tF z>^&u>w0GG@o>^W_?;i|5KIE0&C;L4Yz$sl)d4G9E03Zu!Z?f}4^!7Q*tj8SxhpjIG zh^qSjfA_uF7zP*?l|^M1P+(k!Ma3;)28T^^!OEp&0PQ;iR-{(AHRJXTu?2nAsAO8U zTPhe|BO^$yY@cx{)cT59O=9XG=nM=n|IZ!3?EC+r=goWf-goZ3=iTMpbI&=~u+t!L zRrvd-)V|P<egV+8sqfEWoVhW=t*y=i!$R!l-J8?x?&=rJVG$2`reziq-cT3h{Pl;x zwbGA*3jJtQE@Ez~XXae^Bgw^a_heOPy>mq>p&MCmIi}8>l&3L;nX02T#`by?982x) zstcZ>>v9aus0yvXu>K05^-*a->Z?wg=D$wF`zvq)zl<g65A2u3<t3Wv*NDp_sgsTD z$RWnfH8nTE;nS5zvLbJh01Y%b)F@F7&lB#Wtl#?11e5W%mpzwK!1~;*DZ_jlin%sf z=1T0IXi(w<TyfUndr#{q-5)!1qB#NM&)m*b15-umKqtGISo2ysEcfqM7$S3h?(O(m zB4)yGLEss{2SYoGj=vkxxZwKV&t=d?MjIV%oO998XyY7ckW27P8{muhJqNfBNC#s@ znJU`AN8p(@Y|60^h@ZRNTN)o<L}V*Ocu89~lJ`9^$dcqA4V2)EWv*wvw;SC5@Wb8k zQiWYoa8eu=;a%PYLn%7dAavL^59KE0;3fuG;vsf{%hk=qh2;BGJZJ^a9BnN4G6J5A z$)LH=w^^kGZ=Z|>W76WhlYh=f4QMSXi}=Q7e*cq^LGjJBQ$+jAn9N^%a**Yk&!-CS zFU{-TQbQ=1bGk>q!$ZX)10@MYNp^NmixWf9wWEU>@s{r7IqD^>*Zqr+jCUj30p^a9 zx3E8BsDhc;&6>)cx}_&Irp(QiOo2x!CoWD5RoOT)cH<MDWwdV+1=-oLiFRh}cn47< zB74Jn(fZHYx#ED3%=JMn;aLk!pS1_-H>?j2F|=+NY^y!m9;g$o4-C<**O_$ub59Mk zglC<)Oh%sa$eO~XG);hP9dH!X?(u{*wK)4@FLU9*;g6?r$DNb1))(g2oQmd(1g<8| zs*%D0_EGqS{KhG8X*q>P;3yWcr<t}0?kXmeE0Cvt<>WRK6G@d;R@d&-VL`QyYi86< z{KWFykZ0hW<@jZ02{kr=0XDz2Jh^nTPqCRvhZIR6Z(u9S>MC_~`9vH<QP#kjc2vHr z8*=JBT}5L|rD$_SBe#xrjhB6DQ_*H<1wa*SQ!D&eh{SgF=0iFc3=iNO4qNywkYok> z)Rp^mHynG{!n}%;YOeC5S0)Eu{ZzeqpYAV6f&M&XUO9|dHkhdG!sPm+rodb#Nzy1a z95qHleTS$xNL;k_Frdq0G?K<}!zE+8bFYa^-fO%L$v_ht{`Y{<m)kQ(!59y%l?bts z6k{TO1|03pCo)*EnHN~YjNn?BQC>SytIL#VGXn}I6YK&D1lzkhIW2YQ&uB)S6OR<Q zEP@0-I-k1+^H7T&aoX6im{8f!v(v_=HTsl98C}DS;?C{R5y!N#lCxJ#LH&iiVm#se zI3q$IEfTkh#ph0|$Fh!aS6Rqa2S%feCa2awH_--G!9Q)rJR_}PT--+>cs5<ZD)XPg z3YOY32>tcASkIb<L31$DE*~A#oP<>afh(imeM3->0sYW;wEgrhxvDSj7Zm!sT|V^> zP-~w~eDabhI1k&2{WSd5NpYzAX)76Zo47wZUpLK-dEI!@IiOyuUrA&GWM))Q#OFt^ zQFBo~IbX2muDpJX?MAu)9H1ycNltYBvx=;20(753@?_ZTB>v4#sx>7oOEQ|V84HJi z{P{JpBldJsoq5W;hS!boFQ@yyqcCv_REg0e2alXQIfYlOjj&Mbseue74i-YL!FPnv zA}s5aU?)Z4r#0QMjA%3?qX+z7lZG=peQts8oRey>4q&?E5U7509y1C0DRRt6dlM~? z6U}US-5>~P%vj~c@JH4L<c>q*GS$5JX9%+i!0f2hg@DkqJn(z{guWBE2xS`4`7SJo z7e((iw)tB@nZL4~e9+Ue<N!bV=_t~{XFokG_PU4GsBaw_TNj!yL#_j|1)uvIzv1c8 z%C9`sj;1e7c%2Ms1S*<ppy?O$j;DvPA9(oIr-zelKEM)VdEt&%%IaRtufQrCt~H=k z#jnMV9J=UWL!gGa@xr<be};qQQ~CexW)3l5GFO;bZ1g`z$_SbGRc%iq+kDCNeBQrX zo(1{-mN*I^%55`C(7fsJGOMvK?d7wqW|V`qpwZ^|+4nsA@=A#&$ngtI?b^(rVLuyp zP@a=CZr4q*Uox%CTi7DN$i`ORFozo%)paL3@MNv7z2zjDoW8g+4r(FSoSa7JV1a#{ zudJSlk7=P_I=q)j@YvxbJmv99Nn&K<xgi$lSf|j82mPNJA9IlS1$WeD2lhQAkf!`y zkaI(v{(>}gO0+1Ll@>(cxMALf=kT)Y&P%2lx4Y62r!bMV`w}f3OAloAVYOsXQd>G6 zJ)kiBO(eFF^e3EuVA37gTRIm0Bb~I71v0|{TF=*e=pyJHJG-+Ms>AH5OQx}TN1cb( zZXL?`=Lptu$uugj-nqPThtAd9W`=EqMq#k{+-Z36IVVM=0-~E{XwX1iV_L_<2iWR` zL+NX=d9ONa*De^^r?-CIzN~Vqjy-$H6rHyX3NNkmsCP>iT_?o<UfuyZ3lD=I4+eZr z;eku0(AyMP;LqpUep+BDKE^alN9utmO6oA22ju<b?^U6dtSl9v1WX6a13V0P0<a0N z4RFXmcLZnx?T6NeyP85`?Tq?{`SB7K+nK|<paj>FQo<y;>~lSmDU9YXd$K_=iG61~ z)Z^qe0vw8R2{RHcLT8VKmQjAd^#?~M&dHeY)aU$V+~qH0r@t1{I(+-t9W@|pW5+!Q zmQ_a8yUc;E-97DpfDUMyg1iu?6rXQCh6y$=0JG3O6!JR&mEvy8e;$1*sJ~B%(5IRN z8KXj|6~F64i`6=caqYL>UylO71%)DHo?X&R-A$y~KWUSPOtQC|Hsq~p`J_!7(&^w_ z!JI^s;o4>mFNv<8><Qy~)~Ym=RQ`zq-PdC-*<#Yve`AWN&o{+jv9Z=}GPL4@9>I3( zQ@CebZ62zG{kWsu^qBvnSi%kM#`!HJ`9q;DdcVIhhS)jq^x-9eH3Z{vF`D0iBIym- z%T0u)T`--hGJWnV4QD(GtGV(cOkvy1g?e_ZG^@363W^!R2{q}>w97^H2r%0+aU)ui z3_hg^A@-i88oZ$;sqc88LQztA#T=e>1rBf2G+40@wYq$Yt=8AHo3i^GPP_5HP670{ z&3-jM1)AB9_NjLi>@9pxf1%bD4+T=~zRJD23uj+*CRJ)mqOH5|S;ps`b%vYHn-<lN zz2m(~hh?BHD?VWpV;r=^pJ7{&N%+C8fw~Wa5}!A*ySGD$PhQ_{iqBi(WUB*fcI&RA zc2v{(98%XiNutUwOiZwwk4WDq69O^0x0_<}_CTGwPak><BoNa&)*guHB$FA<)$@#U zP(HBp(uMnA(>p<9qS<g;w`VsyB`PUe=5nuOB$IH(QS21>pG&=hk+)C}N#2wGUP2q! zbwCS%_7Kq)R`wI-BRV(Jd8w>!27i6yAWL>P^n>~5pxvrARhuRsVMh4*E>@Z}&2h;* z%(UqUTfMJFRmtnZV5JEySUFYPz;3~zpf)kbLP<bGXh^;HM2)(Hs~KKKdAS4Fj5!Bh z@UE7zc{Bx#iy^Y`rLynAv(`KGP3m2SN%+zNeSuLeiGE$-^__~EG0Ume@Vh?wp$|-- zInj05WV9A7kteDg$`Vo|#o$ewxWZA0rmRL&4)-_ZV>Q2;>6>$q@mqF!_Y5ZO*BtZ= zr2!q?L1?!ldUl9@Iito$=benQsM6Ace({C(Ij1#gi{o{3wP>(0t5IDt+`18}yL~e) zr5Kgj?uOOJvwjAnPtS-^(_NsL)DJv^VQVm`v+4+3&fM~q*Bgj!FZ!0wfv4r$rwi;2 zNO1(Bq$5^w^`gp4H5r<O#tb#1S`ZK;dFQ3t=X6c3Gd%zAc*_ZF*#@<6)n~<Dou+jd zj5-|0_-eX6J}yRm26l)TSEH44?T4espteDr=sh8tg|jQ6ewSwuv>OkCvQDRHM{Yef z4#e-CzGQ-qO+Sm#=A_uqdJ^b%m6m!jkS66gh^2Z%J&ou^L@<tHVya-^r6qhlMjKKs z!DgWkCjtH9iQGe~cTRum)J(%(6P!67Wck<O#)=tTYTv1|bSyiNWC}M8H|T2?8RlY1 zt1ukQW)eQKe_*=eO!WJRvUube&&TB*b~bqCDYi{-bA;_=lCIf}*em1~;04X{(D$I> z*>lP1A9Xb<N61duzMU`!YJi5de!ARFRokkjizsOoAN$8xRbCb5n(fpEtqh+;5!5!A z3*o8iPlQ|yY!iCoTKJ@jlqpI~I6-;EPFhwGW=opD=U#vj(9+Sn|88e29lZQTb+rEs zM!$&#Bm?Gd;n!EBC7$q#X%g@%hd-q}^^;xmYt%40nS>oUsG0PVcj2KOonR+_p(56j zp1*$Wa~R+Ie6@#Rs=eD0hPfost^fnVl|)t??6SHt0wP+p8n<1p;Sd&B6ItHw<j^4x z)l-K!!o-N?V`g1tbQZ4*K(|t(6%2Uno`P1r%nL>37$)&Lv<zHMQ6h01GlLzczZUaZ zXCQ7eD!*~Eu3%P@bk%XxoLNGBoi0Q3YPQotzmL1qxa)OS`Z}Ce4RJJ?4>>b5Kf#QR zHVzgDBTet2NW#4H*j{kk4|Q#Dz2OX^I`>}6>)umN{I+(33`c83rvKC&Go6ZLPd;NB zzZ)wFwOM+5C7~|#G#teGOl=-mpQ#IPI)610MN-zUMwinJLVv%RA5)nS@r7>~Dmt)O zNk&DnQCw14Vv&D1)UYj5e}yB=s6fLfjVJZr=ur@Cn(b*6!_a(yp$#-)rGTwln1Em# z*S~Y8hzS;8i<d)}UF>&yJ;25jpx@Hfrwd9e6k9hKc>2uM;d@dY3OoYEb1(-8waCJ- zH!N0A)B%3fB5bQjAi9tOy+lRcea;hz4AT4={Jn3-xfXQ^Z&NJXklA{aT@(VXo5squ zfjIUpgbhpz#iE6E$?zu%mf}w?6)K}EvFdGPp;^u-VdSgiU*8gDp#%JcI%xEQPas>t zPx;c}J^?Ga9n{WJi`IGVQ@S#u97YHZy8HLRg!~9BZUhFpyV<u!40Qd+e{db0_<!k? z*9)rEg+WlX;a=6i!!{krZ}cYAC{2a+eNUhF-d;Ugz?H^<WPf#DGQDm}MZ*-IRh#Ag zLrj7}U3l49Y|<H+ttPMpn8U_n4!DPbAf4NJ$yBQg&$?tJ)i7_Y{@gCeyW|wnF6DP- zP8+}zfN#vyw-3D1L4W*vD>W;T)H8}TE&C{MM>K(n%#9{1UEzsBLqoH(A1dFy`_m&= z%+ck2$}J2$DfF!<w(=LB%_X1mn&(n2wVz7R>lB8|=DxV^KUJH@^%q)Q__Fh|Ik8@f zn)k&HX~Yb~NGqg{(n@wRuM?pqC*4k6*1#rT#t20PEa7%jr5tTKF7LWiKm3|`KTOPa z>6Sepv**=QZ^g|$Wr!U%C9efSRbT2gCmDC$$t1Pe)#j+YM&~%gUszrz8;&|nB^1q| zyl<TWi6XlK+?lzguP~SRkmqB@O>&l0UN-NAZoMRLyOSttz)Vt3crz%r3qU#GgZQOf za36!|*3ab&pO3dB9SO&<6YNMbXZH(Ck_s7xxJ90H-61V0sR@VuPb&tOY3OqUo#Ii4 z-)MIO<)MFeNYEg>-PEJ{6<TdJ17@pg@J!&B?bMYLqkyVQ!Y>Yu89I~xsYX-yQ~waI zvpCcxu@%hN@9oy40Q=s`BcP_nJo0wJdS@T&@jdr%%}B>-&rq<f5Xi!k|F~yp6`g{j zAp8mIO$XQ6CuTt}uJXAPd!QB1AdQttu-Pw}iz>-@G_Jx!wYzmcHrpUjs_4D$R2nRF zNZ!!<my>E44AhTy`iUNTh=ISJFiu|fDee4oLBZpIQvhw98fJ=6R)+3tpS5SNyB<^+ z5BW~Cma?)^O(K-lhM9)d(-HLUZkJPIN;E7oscRI5?b#>LY6DsVXCZ1&H*Ez2odkUi zMHw(c47Iba4(!TNhtq?7zd1iJ{RG8TI={fSCE=vwXMF5GoJ0C$9kE+@UDdP%p?a8L zbV8#bUZkPT>P0B_a#J`sms7S1$=(cAE62W;!6anz?^cbzOLCs5b<_<2!*zjX`Ff9v zf$Zoa)50VKohK^2KaNG5AWxC1^Qf7|_E|49wm<d)HC5u}TNhdMB6uN8)fX?;n|>`m zbTea`*70xC@ES6Pb0}Sw%-4$1C&rKt3kR5fqE_rUFMC&d9?k(W!}YCpf<^Zj0w;=6 z$647`>1KEZoF1Bq@Kf+|dMx>ZGb(6wU;sje2$hG1Ba}-%?SvV^SXpCX;YB0gy7j0< z0P`hQI2>*@NU+tjV7ApWzr}u;dGJ%3%#m1>Y@nOt21pZC;6wCaDZ-5$gt(vH+ygZG ziykdxY}a7v*#XJt@;btECaQxGWH>J#a$03NWu99Su76b|I^%P{*eim-YoY0+NPi|w zr8Y5&oklW3z0otD+2~oIg{c|N7F^$-Xq&j@^g_s~$j&gAGGqupi&u}MsTehZ9oKwq zv(r5EXS>h6sMi|vj*c`lqfa|7J;EvUE(LdK2?MMPfOWq1IKPXZX!#tecOZ3=KeZjH zw>rLqLz*h2Ao$iSmu!!WBPxNH2tWiahyVkF)0YG94Tt|ok^a|Gjb7iXD+ricR7ytg zY-B<8aD=eMgYITc@7B*NA)^JYB6yq>a0NvhO87#qSzoGlS@e7nQN!$m792>mk%qE{ z)8@YupDLW?isW#<8rf13UifNbzW=50qTie@-?xmVPVm0qaxgR0Knp6_K{R9+E$kpW z84*TkL3OPH2xtRm0JqUxKdg8`i84c~Uq~~(BTqHeNcpActeHlhD|9)pGd>@k4*JCy zSQ5X*yI+j8Y+1L^tSnJ==vg2syl5^mADk)GE6w}hw~DZ@nfK?=U#blGe(n}5hBsJA zTUn+RM_;bBlQ!#|ExMKX?F(7aA5wNZq_jWeU$;Yw`a>S<3$Xyvg8ra;ZYP@EA2Q>1 zNOpgS{&vV+{UMWXhm7kFNxmI2sy`&*c8Iz^B-Xw`H_UEL=7+wVWs&MHmW1kyO30)z z!gj1#Ce=qReb_`?R;5%Qy;xcLx=G}+h@^U5tBCw+g7D`tYVWlV)Of~vUmowL3foqu zv!?K%3eMJ<%Y!NdAuIYr%5I00_J{ndFT{e^iu!{dyq#!4f5<(zLuU7f%(xwr-5&z| z)Bf!5>JOQ8J7ipcNb>EFQT-ta{UKpI^fvlR-A|SjK4NG3{lt;kVJ%#^bOU_3>UF9P zOPH$TUqvc#S+q$kTnxDyyL0gfdmu<a5%dvYct5J>+aZJO;+EMAn=xAiVA$FCoz181 zR7_(O&HpMc-Lpi!grN7%)6&s^bZ5i}6D+q%_RH0KmvH`YqG)qMThStE%<Nzuf5-1u z3fl7gg&l_z7{y+^Pv73?nc>IqjMoYbyU*VF{tYMp>CVB!t32~C+Rey#Q-`t(<Dpb* z^~}o<m^LkWb7^%ge`BYf%;v{eC#V>B4@uNZ@nsKNqs{jSC1)0z=Lm&oW<e?AobmNX zSpA{()kQ>htUZvKo!-=bJc1~A*DGn0@<ah=h%1ZDN{U`8Yt%uxQU!=!9O|+%QY<c_ zmqK-)R3st}=TfQw(TlO=0wp@$xGTw$e24s<Nx0XpdyM*_M6u<Zi6qW9e^<-d+0oM- zpK<y#FCvsAepfrz@uFvjoK=uSt({SV5*P(%%$6^IZAob10&`}^$C(QX3m=WDq4&(= z3ksEw_217~P#6yWo>4`XVAbU-eoSeBOe<Oz20zUlCpE?hn4K}QaQ!#`qBB8(na%_S zg?CEVC75z|b!Om0(cyQ7mMCDB(m%mcyYJa{Ch=}NQA<s%@g>4y;yl{UWMT4bAA4q2 zYt~R%+xvzWOro2T@#9QB@r*{^`f3~r<KKKWRxHF9NYS(WSFeta5h&Put$>XHSw1v! z^IkE@@>5&mxCB0YcOq}yEe(>_1tByjKczK}P2dZ5kLIWBmhzRm%Pc>8YE4o3*->e& zDnUZyP)tbS9U0TY9fNXJCP@kF>SCD=W;Ux2voAM=>z5mOfy&6@OEU$5MMM$YQZn>+ z%p>)lk8~GLaSBn3!bGhqSyW4IP#Zni41j*OHcr9LRw&pE2EXpQ$e99zraZ)e;d}75 z5lE^jgUShX&P$Cr!@zg2K9t|OCwxpgJxByh*(hJ1t;MUpRFk?@AV@PZc!SQl&=K^x zoU8)&!Hv9qPlPbFRf$?(-ZOG`0&*LL+=4-oou=R!!TEpJ@M{oL-N6*=0cxY#r0!Uk zs_y84bI2wpqr<AraIuU6+MBfG6bHq{8(%wUSqYb3Tx%61TIKnSitcJ~ft=yVyP2)b zjv&*xF1C$z2>t7Oq9k3cduj&b+G}NY%rHHg8|RYCDj=oVV?|@#p>7q61!ysR#$-Kb zbifa5h%(qE7B@1aOWYZVx5aK&N#NxBzY;7H;bykkqp<8rY7Gd;h6jWb9z_`hC{~;d zD-Og939SJV`bu`IL>z0BwfUxe(ndm}n|GTSoC0{aB(O`;J+f6M`@uw%;w}l&$;7*j z51B|;us{5GJ2OPw73>dx$jFV#v0pIZJ@_;X>`(E6N!(=#?!6l?UNAbD^fMt!m5Y<1 zjm}`PEiJn#nc`!9_86@wMlZV~p*1+TuRy`#Z#~Ac$6AH538steyha&nK2|@$_>}3j z+fPp!fAnlDdyN~2{Q^%vdaPv^?+CG$5z8wiMUqBd%yrIc)dizuZh?!FeA32-JO-qa zuHfEi$E?<q5~hz_au&Ai+}02!oJj|eu7ECXhq6^F#hJTi>LL>%ow=>j0MN3E(oziC zWw!={elHsybXqJL<}a}4XtDP)40|tUj?(d?-uM~(VX$E<Yy*2?t$V?9zg29YiwC8> z8KR@{aK^86ln(XSd);$-o4|-k!CJLB#ONk+gk}4~nC5%xVScZoM{Uy~JWUa4pa*vg zTLy4AAzY(c>Wn}(mpVieVFQ^NdBL;YN)A2qW&nZd_13pEWDMW%)>zB1JoaJskuXux z8Qo*&YQjuk*9@+qLzE!(=w&u}NPc*s&z<e9su3fraoXS(CaDoVXGyY9p)T6!8O>ZY zzFvIFDfasV7^l^MrIm0R<NW^g2b=@g1bJ{n(}~>)^$jO2SkN0pCJ@N@$KKAhth17u z5%nY<Im}Lg_daTbN;FT{N&JhR(U^PEX7AI@fYm*eLuMgO(^Txw#doyC$GftG!}QZ# z0^wBSM<z5RPJv-CqxBef#E7yrQ5nG@Y|nu_43pr%SUyfG(PY|3%wi2kOsrB5o8%)# z_{0@e``k;gp>vmGG6t}wv1#_nCa$ANO__V`?fWKh=nADAM*MzrGCx6(jW()<#Rgm- z@?ni|tA>KSV^Wn2ZyYGjJ_rw4PSSW0N34(29&*x((osE4`;0R}Ir&HDP~~YS8^6xU z#lw^g)S<lexY+_jmH2AyT@Esu*d?Q<I7m%&J>}QOF=doS@H?5pd*6vA<M^0&6D)UY zO^S{dg~FA^P+w;PYFmIjMr+SwarPy~xzGKm4}wtza=iR`Ek(Q3kyxXu0il`c!@)_P zC2HE9#%T}IEM}9@_v16LBk4y#4QC^!jEqj2sdJD7sUzWz9Qmeq11x3l{Npq1GhQ^R ziWH^8^SOtI=WlpeV>;H(srMFhkHm;nXY`L19EvgN581>+8!;NNf|O&IS*YYhqse{S zNfM~b%%<9bCe=qTCgGsHuPMIoya*cGo&4>$!wu0Qw6a;Ai>UA=RJi(fOLM=$Klq-O z+{M4}UVPx+U-3BK_}+x5`Mq>+8b<1BpZm8@eQp=jr|5kWAF}TuOBrmB<f=V}bA=ky zPV+WV(P^s71^-%#ESEq)!+sQI;tlKLL~*t-%S8lp`ko7E3W?xs;WpuHI^`|Pa<PJQ zg><F=jxPx!#R8Ms<y)@q*n;T;zmx+omM$HtSE!dR-sH*DGU`npU8Hss+y$kytQy*c zA;8sTjroYK&&GblllRrhXS+lOjj7taL-g9|UiV4FMkU-jtAHO4BH8Yw1%1V#P@OB> zfz|p>CzDXaKl1*N!DS89izDqFWxl5RlA&$DyswMj`Ti*O7bkz>{UrA3F23Xa8DW1X z48y$I>z>uc&;4K&d%?+DKZp#u(wlHZjrwmDsn6^*&*k6#VCtBSC@fK2guyF=!t^aA zzknR3+8pi@aGyDfmg-yzwrH^e<5#AF58Ho^UDwH9+n*t4c-5v^F6;8X0}r`g{;mUe zi5Pxct!fj${=nQwrb@MGpR?#WriuoAkI(xYG=mr`-?V=)&mJ61uJBO@GeiD~<`Ld} zaM}Qt{Rig-Q!MY@#=^^MMpzbi(_yqB?Mi99;ZZ|)hgE-%M;<6?ykr!(R9zw8g?vHb zr9U|)-tcc+M-HR$wm*Xzfvcz!e#dHPH)}{E@$*`UL17ZOg1WR21CZdj5yWuXBWOBW z`{Hz_jW9!@v=lcY%FtZ9aXQyVI8}4VcaK^Oe`i3^Q^XWWDGu%u8eBCjDAf>WcZ$5M z{@CTv&<&ocEgL*j6nj1QDmHjB<YyQEfH+2X^zv(=>pg43)_c~l>pj-6qn>BOzQ#zC z4wkhct+<3}Scn!G7j!Lw{m~xSUV{fpuY=50j<Gkvklw&yncI-YAX@3)j&H{coa+&O zR;@;|sgu5z(!;N>jSG3g|B%!pSJJ@O`MTP1<SKuq_5rep&pq@2DdpcjbPxH9?>UrB zPVmz|93jw6NnX!C_F+`Wd*0FY%GG%7#&Mm%^$c(Ou#{})xw_1WH|ps|mdLaj;w&vR zGsAJ_29uECdVC$t<QHtnF|N{eKYAqT3JfDb>f@g7G=a<EUB_GMqPSz;qkMJUFzAKU z*Ts@c{MkBn@>Va$F>Pu7_qTYnIoTPCX`6Q>z77*0s1n_jm(UIM3|Ff^%}Rdke+Et6 zw4N%{Z1i+QFs?K&WzIPlqc13=?;5>~P<m#c>8zMNLus?S%O4L;urGc#zwSRn3LaWd zuvX}ZSoDa(aIAd;cie-)+9mW-4CB4W1gU3AO>!me@TEqDiF57r&AMetMrn$ROx*VM zaMO{!{t8_ZgkLFC`@O5o=db)nW6A9+O^3ChFSnkqX9R=&b<+58FY+h~N17PdOs{GU z!TDdD>mXHnb}0r*+5g_fE=DZ&mp`O026J{F#?xIy#I!}NrzQQq>nN=3_ZY}X(akV( zvFS(z3KqY<ufo>wz85~>-#x6fsMa${)*G?wPkXvoupQPE_=XUF3~qJs`VF4FM{CVG zmzAw8TxK2u<g)dpCa})SOO5@c>&LXYE0gIf)cMXnqFeikzNSkDAAV}n1E$h`vVTug zm^AtVV*urs?|ng}v2@t?OH^n#H;!itTzfm?)SOqG{gbCE<wUzQQlItdAGA)3x?Tq> zM8CY&M8EvBj;8&B>SpniXCCT$#*5uOq*>5~HAu)h!%%+rM=>Q-)jt%}dOP>o>5{W@ zfrt*}I<{r2XyF-!YNs*EB?0>;QJ=sTi`w*RPV`dlrnZ>7k{!NYx5Fej8z9J{+PIlJ zpe8Qd#<@mzzLYQAxf2@_7qRLTIFO^iC+NHQ-jCA2nx)n!hn73TTnQn29m|m^IU6Rh z@lVt%Ew?%aEvG#ds_?Aio{AK@70J22_N;d<Mk=u*R50!4lLx9qH~htd{C@0J2&$h= zVKkQ=6De7Azc>Ze=fxRquUH@I+T35+H#=!%;jG3^l%=IO!-B=i<A%DG<w}bKq1P^v zUo`E|1v!4Y9BNUAXB}Bg*;SF_(o%K(K*{%Y_7&xMPb6qDv{9nQYuZSc9QX46`wZM? z^xv}~VfI|~aL)Bnj}7Ol5{;O8RPyhwK7(h@wbjG+r?rMmxBqlG9Bz9un=RGRtClLU zzn1{DNiMZoBH{_U40k0rT)0&Xcj%(+JIplk=Gt|-gi||pvQs#suNrkCr#xv1Oc!ZW zLAG)X_c1MdudtHUOBWipLlJztLDI%?6rXyva67}-FOBW0Xy;sd-;t$yRC)3v`mD)I zzE8%c?2jh})d6iJV39<?$4!v7DWs;~>1RmxtnvRQdfxsWj<dA$W=WIh&Egjx(N5p_ zd#M@iy+H5MaHWMBbn8G)Q~1{JWaKPYT)-i-;D#kZ?Xq%*3em-MmRsjO2=I#ABe4lc zu-&RKbixVQoBU5l)RBBQnILJ4lLWvqR@3h!IS#H1?Z}Roe=^+iE6nUSdOi`z8#ou+ z<H7XU>BLERbzy?6lBjx>eti+#%r$H%nK@i=B^-Wv9~^qVc9%}rJS|zJXRfScbjEAW zj8x{z25ymwrbsnh#fB=QSWpD{x)N5oCM!m?CJ!@?H%kn97gNj^7CfSNSy3^LE3hmn z%SJ+m%?n2jtp(wQc#^R9-j%1VJ7wNl0_8hSXqQ3n07{R9B;MuNY6`##?xd$fvCT9- zcV6Ssb}l6>WDdmsjAoIYQOPum9Ak42Ut>z1E!k4?TnXhINvil-)uhT&&oyVs(e`h- z&)b=>0zD10U@a$LM|EAhylR-88x>>EFFn>S;l$VElRmok<*KKyja-F$=~LJKz3QWD z*(H%JC(YQ%WCckAyF?R@>=?xt&Ov!z=l}m6eP{PodC9-8jaU_!|F3J$tXc%zqGDQ@ zKI~s!dnT!*``RC?hFq(XY8wPO-A=gy`=O1DjJ@~gXR!>7>tL9;75S1npZh7kp&^ER z&7W=96!feo(Qv8cb(0Z;b`4+pX_{r;Y^Wd40%J(H4BTxo;kikoku_$FU`9;V|6r=S zX^qvlin$Ooz0UGqU+`al@Lxkp{NeuV3;yd5{wrJ{b3c?)i8_sc0e509Y8G8i(>qAz z{rT~1<Aad}rhM#fes6wYc%W&NFjarI3DM!toA~m^Pq?-&37`336vw!h^94;x%My=I zL0qrHab35H`#|sxw^i(l@ukvJjvklfC1AUw)4jTr85Pl}1kWkV6T<n*cb(8v^7Sct zR)9Q90o0!i92(Ry3bGYPBSWcPkVkfiT!%X;{$(D@G}Cl6O{9U@7KqbMNUrZe_aPv9 z0TDg!2S4g@-}_OYLppfxqH>=nFL>r*jostU^I*G9UgN!W<5Wz@tQxPo?U1*v9eh(7 zb;q_2DJI@dL1SOXIebXL&-rZRy}SC0M_hRyvv~z2daMo#Xt%h^wDh^fq0VBM#@GAP z4TM3-r}6Fo30sS>_x)k~_n(cJThkx?AN&rywg^d%{LgE15Y}`%Opw3mkwrr83<ukG zpIh&fG|-0jxj&va934+K@N18%$yWZgqXn2zZXR7p*6@!VD<ua0{4pLJ*<;5um1jNI zz~=P0WjJzIsGO(xV@Wrx0_Q2HnsXUUvJdl)<3nOb9$^~SV9#-bm`W1*Jj`kwF>n*H zl;=K=x18<DfGk6e)moS1Lm0gWG#@d6?#t-XIvK9<ju?C0-*nB)dgDrf0M5+enF!8+ z3{nFza5*@Ax$8UHOR(VWKpqmM+nrudef3e7f{ZB`a*ID}n%V@CDvZ)q@b@YR&>3>F zsMm|JCPP+smLPrXSmPTw98&7Yg@#KwP;TjB)DsOk2942;6WuR(rc}j2z(hxf?D|oD zpY#dC#IC9QmCs{H2`~O4an8(c>hBTRV7=zX`O>tINhT%q+vGVMyo2Ndqd=*_{Oxvs z3s*(lyIMHj@Oc$*IOKL8^Phb_pzlH;&0Ni|`$A9L{O4a>WLGrs?|hjOxU_*$vH1&& z8P`Gn_b-zzZ}h;^uv#}fR=XbVH5KUIeGY*o4PhP<>r0e0lGHZmT`+Qy)Cr*$A<l8T zD|-|*LX{A1#`3+A8b%>$poZdJ(2u4Y`Wy~G!809$C%`2FJZdR@II9cV!b)nu1!ZXe zaS2p{ES!?VY;(JddZ;Va4m<kjPO<C1T`qryOkHgLmV*jpO1G5ze7}latXH9uBgE%+ z@ZX(C4qxe`{v`*za|NQ-$$aQnqb+0eHy>n_V{!(xu-)#me&eX5d<|T~@am*o4chF} zUZ1<tZy_wQ$K}T%CNB3yb$m{nlZlI+B}eYmkM6E6XnX9Z+8<<`V6*{WiMm7P-b=@q z=z(sl9I0-(V|~<ONn{Vp53>MKSne)$M9z0kd75I>Immy_{n<$K0}&gTyIUQc^Qn_M zGx%G{+von&8-Udi-Cd6cHHSYB4PH?6Z9pS{+9qAZFSSjA>(6{>)ANGd4z&PPiGp)B z58`Ng(eJqIU&9-|o);bow?)is_&)O!fHsU={)4ZlvYUGOzrLO{?0ByaB0#@8&-}sm zf6_9V*MIY_WolRaOwH0mH&<CA&W?d5Cif2eqS&>#Geyaw)^04|*mu>26czJgySu)( zFSNBM12#@Wa@yU`_D(Sk&Jnn#34{+QvPc?H()(L5Wt{>6_!ob^FfGA<V#I*Ucn$@8 zw#$mcEJFJT5v@HgX0+viCcq=0NE+aNz#4wjx616W{(`*OLkl6xVc(?%x!7Nj?LBCX zDcH|2Qc4eGLa8vLOAcuZrSuw#o4@*P;=@Dg2~6{Fc!!;Fg?2L4B$eSwHQY?X&5GY{ zfDz^uV4)=D2z>hSrhuC5x?6Va{({Gl%}uWhm=Q2jVbYkkLjjGp`#*gOBT-WS>6hR? zJ-tC~gk$nXzWlqKfJnI2mE*Hn_^-a3FtHcac?KZGM}GmoF9UV~-UQSDjsQ*oP5~|e z{sMFYRv()9{YheBLd(CZg|d}=mq)A(E01AM(kGmY$mkIQF&uUH$}q&ZVYmdQ#4TFp zrmrm3!;U>!D=mwz*r1!$8m5w#-E<&TBTbiH7d$g~hNe8QMqx^CppKzF@df59jMVQ? z?hP@{R}kAzA+*Mqdm}TI|F=C@_%o>3%<r(P$uYjco}8ZqUDl@QnzFF`w5+Cf@rb6{ z;boC!I2l0^S*B5laW4IDwL{C`tdvbCgVmSftJ=u2sIsH&V&%!&sIus?QP>^vOOG4v z{6xpJ_(?d5`C@W#&Mo&i+`T*wtU4Q*Po_pAtrz@hKrZ9j#P4#br`b^wYWBpqbX|LN zBK!4r;Rect1=jl)zffC}V@G4?$J89?-Gj5y$-^<kjP$FPi(Ey#&!Hr9c;(3`lEqIx z857>(_hvBiwl{-b_Xgg4QXgLJ*IfI%_x8Hy^NlB0V!oSrDwag@3r=NZ92IIAMxZ^7 zBK-(x0sI&68{k&}{VGEgk~**ZZeKt?Dwq;ulH?K$#F89I4&w^p&z@3SenCnq!7r;z znyD#IJ;FetY@kw$4vm-r9%qii(Cu#X5g2BuZa-g!PK?JMi-y0fo~VZBL}O#B9ge$@ zOKwaKonA#Qwn5u?8akmv{IS3JV<U3I;d?GLFMLL*X<a?xSDy|dt^DTGu>t2`NUJHk z>imVTIh{I_)`ZrA){53>pq7&SfE<h@xdHjq=8Q8)DqKo&URVY3vJ7`6gX+^XG8@HO z2GpVNPzwFXC!d*Mp%}UR$O<l>Xk#jxqOG-M*#orl)Ul8h{^lbFjIc9@RwPu6hz`#B zPwmUFqL61LKxDKnW*ZhM7kstew(h|Ez*)m9CL_<GD(c&_I;J>__quw6z4FwEtkkT@ z)=}2qoismM0$K}vACZ=F#)tT}GvQ&k+&4Yc?I3M+ELz>QkNCkqzHIq0f%+zow;#Ou zj3wT_Fkz%)g^I)xXrli%BGNQo&6Pz!BQm;dm`a3(d9j9CV}+uLMVDPyOZ*mD*Lo=z zI$MqHKP#gywL*17#l-#M+ygv}@*KWJ1l<1q=#;81Vz8*di0~|c%ZCvpcG@&Q?Ph26 z@ZbKlC(74LIj3%SN*CpvhAF%_vzA^j@|&6`sD3%^*T~MCH!@p~BbBYH{P`ZSvErZ% zdOZE6NiEI8Et|X5Yxdw6y-S-}I791puj^Ku!t!!3j`XTOzYISx>I4Iv9gqL~viRXg z3wzx2yV7ye3QVzhxIj?L!0BxBd*r#Z8-&6)(tx7k!UZR_-=O?efc*d++#jrvFj{S0 z#*8foPxF?uv&bs`hqH5NmpgYKiRV|In;PF*Pt#05C!QBC+KzKga)e$1)8k&z#f}mh zSVs!{tVQ$Z&ncCgyP@9$dJTn9?&fX=+(8WPHsVeJr%2rxUx%F^GU+j|LT$!)%b<p4 zuh}5WVP5KXFZN17uF2l_b*y6{?#BCTGN4LJAdMD!`A5&+OV0A2pC4_B=%&e?V8i5b zBp#ZYsbTqMLs$;<Hpek9cDos`9Oei=8x_i-g+a)=+Y9aCE?Iu0QHb}x@q6sN6Zy`r z0b4*uz|O^)^>VCK=hBW|5kN;U(TrZ$va3x^(Fbo<TNv3Xszl&*zundDtl-!FoJ;2O zU;aFSRPw%`N0J17<S&^PM`uRN9$gyPIHE|0w@g=^0h_%88oECBd7mD;*801fAw)mY znQBTf=0ow08i5Qb;69F8|JFG<KSdddY3me5kZbmd`Dw;TQ-;fGyzERfW!0xB6A<^g zFS4fBy}dKR_zT4BIPo<u!D1xwWl9YsLd;9-d(igH@VW1Wax9zhEk<bUbN8Nbj+`OJ zab0Cf<|UYPW3Q{x(d&M)Gd5qWiZm(>3M|VWg7?i2?P9PR!|*i7Qw*KU_Z=<e#VcQ1 zsagpaE8-ZIVY!a7Vy2_a7^Ro%-z@jJi@Jp_zUaSUmaR_f*ykM?E~e~RCo_7pBV+6{ zj&a5vPGLV|RR-cd3s?cD0$2d$05AwENlNtN3oGO}iiyjcZ{@PWjb+)dAg&{r(T1r> zPM{UfQW%x@-yh$~%D_-puvR}4(1^4atq21EbvYq)TubB}VQ@GWj@KCMXLUJW1hS>u z`b?Vqhwn-T&B%0Fg*c1B$c~ZOxiL|8GA0BxX@&#l6zx8664>i9iduTzKlG|s?}JV3 zMo)wl5}2{@3M}~5zsCyS9qy)H^{Rca^RsO91X-^;Ps{wL(99A+IT%x=WR@!{P&<Pj z`2d48JExgtCz=t+=1pXiifj~)M99M6l)9H0xz12*;@W(Z;_?H%lH~g7MI}QWS{xUV zrbSvg<671mfZ|m27Na<V{`Vg1ZCODNGWkf-CJCV>`-*p77-sp}w8eBXx)_e$0_?>l zznYpKfSNnbINUz(66~m<-8|tK8qa;b#VGr!epGk$DwcoOUxD^aX*o<=T^Zsz&_gkD z85)6|8JTYAGlC6s#fp<075((S;m9v1nsCRK3KpVtuQk7dSa9REGF83q5xu`wSaQRX z5*ou)%y#1XSLe@8rRFRW3y|h_f0_uSc`7#nX%bX_Imy_s9gp{;{v4>4nxjZ9MC$LY zFO)N5GhAQ$-|Fo7wW1_<8{XQca=?5bmL*9aAf*`go|bwm2rpTDx5Ud8^M2yTfcT7S zo0S03dwv9Gd(`Ee%g8E{w!xa&8uD7juNBPp74~9eS>g}_u~;=P_f03(Qf#mLXb;v> zY<&4^6@y$x;V8RebcSoAwYZ#}9H2>oUOeX-9+K?;8zRiIK>ADyiz@<G5LZ+uqxiD6 z$eE>v^*2K0$pjwmI`G_=CPtdS;!6J$QH3U7cNUjRp|c&Rk=aGi2QRLOkt#JIc9mwZ z9Zo>u!j)CPFRCB^mKERo@4}#oijcNnD;}R8fPz~BQ~}A~^dr4g@%8Fl$W7B5qYa<= zlS`09q8gu^4lVC#9fJ-~WCLNu^}a{eU+3JO_;OlXIm}BLwitDnYD6g55l3J4-z<B< zk1sI!C1<(;-5wu&EIgSq7JTWM9(LrP@RUuv-U;;Ar_ue+;g|LhBYwdu<_l&>4b50< z6IUiAKJte05Ju}kpGO>G1UWP&%^!nB7Q*we02_F3yZ^oT|9#JoQ#;=uIpqJ0jP%C^ z{3DK+Us75W5;|V^3%nhLu7CoMq%N{X=xXe_D}kK7W6cd21<rhlXGTWPfF#69yEoAc zMz`MEP4xh_V0DjfD>s^7FCi02`VL)4^W>TgbmbIzbuHaPXIzhVlc}`7w!kQtPTHqE zBZfA;W&Ut_tNkrA(<+jUC>iXL8GoGj7M!z_@oyFW?C+WfrTqR&s#)R4CsmH6yDJ!X z$^N?l+@<*Mdb|U%9^56%Wi86pG_A*5=>P5T_B~(jfBv11{cTY6MQ`CMn(7y?(*JuB z&rYyHr)B)zzoo^#>t$5~V-ZdEnpdLc5Ym_VPX4vu65}^{Io00PeVJIidsn}1DqKBc z#ltJ!TJgsU44+l>y?XxoZ?TGE?<B+CRec#g;N82b$W*xMk7Xm4V-$t66J$B&_virX z?OgCU*3tZ&-zQA?s$Z0l?Dw-$qSodm!&}ez9)%e;qW(CMJ;@)Jlvk?O<hYzh#O&uA ze~%)s@n?V62aUt&@$>7Wb0fgw-^(Zdp)R0}lYVPDx!i|F`3qPjFF;kr%CZ1U0klyD zumQ|Lq@j}%Ll`TanBG8o6Tpi!RRBp{An*q8yZ=bE(6qFn6NHE%L!;01Uete2WnA1! z2s1SgHD`@{2%O@Hs(>qE;Y*m0m@)S_M&-?|7?R>kn%k_&3x!9s8Ft;us!k!)SaQ$3 z*ePOO^oXDsuRpKA*<n-cTgn0ytXfhQ_&An~>YTFgEoJ$SUs{QiG-O*ISFeJindF<t zh3a*lfTqA@Tb6yjY@J7D-LvX7PY_eIDt|@A`mdJ{QLOXGo7Q>4TGn~Ot(8x}0?Dg3 z<zj6M{R3;Mu^8Ci(`uIOU0J$p@2YFd_ASHeXZgN${-vVA3*-Mz=fI4OuXoa^8XVCt z)k2?A(0)bff#xgyQ<eLFM={#;Iu0a}7=|@xDZ^%RSGWk`<qGHkF1)f)z-b~J>eamN zm)danj3_h-U3UJ7KS!qZA!f8<tPwaUSVb5HHD{@Ua`65j=E^1^>*bg#;NUdy0Ie=v z4(*3ky#3F}$blDWZ>E}AL!g<}<sRR??eYj#)y*ed9?FJy^M=bKh>w5d@*=j!%YS`2 zg~akbm-S>fpV>Msw7_drN%A*%a@Bu0a}{0gI(}>G97|$7-G3yU-6Ij6!j>K5`qv#H zJD1`FiFz8xxB@?>OJ-vBKTU)Mw~}#P?>vpTzUA`Q{ptSf|GnD(+tdH+{-58Q5TK^> zg;$a->$|Le0q+FQ<ytNEqA{+=9qJK`c7t_EZ>T_{#`<rrq|WY9uy6wk@7C1&d*745 zd*>5GT!@p`MHpyov_Xx<PZq-Dx6?oIkMy7Wklu1TviTp80obULG{mW(wHpF-DKU*O zx*)8VBvaVxxr>oBZuLCPmSqnV#`}+=z4Q-kCjV1kp{+;Q9BA*?bi0RrQkKnE{Z$bX zSkEG}82ANY61wajUUM~ue8Oj6y^l=hcVCT%$l&v<qlX<s24xL)Pee+LSzS}*=~i+{ zjAMH?RhMYsL#|B=vUW|z8ZyeSGZV-!x;B;+@msDb$x8l%Ya>G|a4tKeqSVG&9&>zd zEC2hoP50k}y?6gNgg|Q6r_1ZA?$AHZFAp{ZfKTCJBNpzu!idRM#tS{r&5RV+^UMJz zw<1tVCI=(UI;7!T@nfb~EX7MLeSiEH*V9Qg@4LRv@(mh5L<)6Kw5W7@cB7M9v*C6~ z3_`@vB587NseomDMNB;^m(2P16>(I&FSuo91>7bI6Ae~RFA9Dfez+JML-BxLrKLN0 z0v0F()<{e2J?>aIs=VRcT%IzMBqo;q+zf1%WEOl1r}@!QQ_re1jaFpfa|fdCjB7&Y zf1ONXC$^Tk{usa2UJsja-SMe26Z_v+>|a50(9x4vUI^>TuPaDWt%DYk)o{T1zJm;# z;e?c0o#~NG%Xa!>aQ4g|=+PWA+C74lz#1uwTY5sAjPMn0DzcH^*EW^d`O9r%EmQ4W zlETg;-J&>^Y*H4UhdTsHc|3J{GZ+mpqLHM?QwDk2K~V-F4oq(E?sFT&suGM;LyCdt z{GVvPcsm|%b1-_tQL???IrA!1^$&_zdla6(?mmrAK+{*FrO~%mdp>biS^Td_@!D^W zyb31ikYj<!<$s~R`w!<r(LVqE``vFl1IxLx{BnKS*X3Kvxht$%Z_Qg72zRiodV}@r zm0SFG$H1G=p~8yhv<+s}15NAMPqcLvIJS?Zs|_Sg_y9Ay%W=Mzq%LCk-Wv*wypD|v zH#A)qshT_;nNs)!fSeaykoH}=5ksG`YWMeV&Yx0uN6M%FC*_m=l#)7u8rYH<HSH6a zDf&Z&{|GhGP<~hY1z}pFSS{k$b=WM&j3GG6^cb{6nSx_RqUeNw#8NX!J1dSjoigf{ z!@qh?^g3h)n#QW{OC$BCIS1trn&vO(8*M2Zb<z7LjHK2dl;;sDEQawndW3FpGiPQr zx6U!@%_P&MAOSSCus{AjBoHA%ILw-EIwB2JJj-G7Vj44oIEEq%`3JIy+sFtnS4;A^ z0Yta)$o+WuYd6QlSAZ7byKxExOHu__*0Uj+IYzewKA#_E#uho2qdqLRoS%Lx{=Tn$ zP@DqY)<C94e_!=U^i8!HG1OsI5>|~>nOHe4g-+02;|c{(ad@KeX5sYd;~b0%annQT zy3!vjfToFV`ea9{S&g|kmH+HkR77lkxPEV8NOerjUTnlmxV?pBEbqEC-14@Q+RRh+ z4e7b5^~Z2%S#%*8cg!PcQKZ&8qaY!VHr~7=%_M)Cs6vv`m*$Xj7}7)`4TOm4Q>>V< z(!=5VO<)gqvFJ#wA_TL%wvNOFl`}V)A|Y%KU&+WXXRb__6U`}|Inpsyf4b1_VJ1ck z<fki5xXV4-F6E>v)v*0q57-1<0_YQTFnZ`2OoX%T2JBa7`QMowBe=zX<Bk>l;bfRY zf4T1`gF>+Al$kGhKKu-Dk-3sRC<B7%hdLF4B-zSbenaQ<nGTPn>C5_5^BdFC8$Sbk z1Jvr&!a#GH`B-}xr`F?sCDD9A3FvCVQz}Tt6f`&&XB7`W<n8XbEB{B2yoGB$j=}}= zp<P1;9fb#e=*Wz;d(zTv8L=p6TKPx()UM%Ew|!-rgm1aX_lEO~M?P72Q~NO28q86o zT&oPfTTIiA2x<Zg1B?F79vPxYB#D2yYka|DPG(fIeP|Y$@}alA<Bi&4y?7S#ZxXj2 z&&q0*3Gia!z^mWVufTX>eLisuetn#w3@2SzNw}NVd!T>JZq&(fptqHe^{NGNMz|L@ zc$-5`bSL0oD>`t<(d(=E(cLe_$uZ;0b7*y#E1B>S7ec<tU~bBd=ZV#HzE-V|%#b(m zzjY_D3?z>|MUlUDi_vB~-2a7tJgec?+Dzz~b+}#K{J(pKv!t7Ut7qYo&%7<zEv5N% zy30Ri8ehSA)8H0UC)5Sc5W*h3*x2Jf;Dt+R71?q8vOJ~5NMJR4{Bl^T&;1;%Ogr5V zbP@EBK3nll_aZRO132V3&xgMM0$<o0ZqdQ{8_kC(JKdSLQ!%OTx<NCBASaQ5rd{S` z;-%^qV><GX7reQ+!=2eJQInC!FG~x2>LeJ7v@F&lPPUwyX43ozcTGesJKaNYIBQ=y zT&Rou2rY#;KfEs5O4OnmObD;G_U&d1ays1;yLgc=PA=%iKnx3Y<|P^!+r>}v4V?}d zLfSyeQPxhk3da1}hV4N2GJv8jtCP-@!UZ5I(nVdkcpT!p#WS@PnhLp>b6IP9+)!}z z6{P-*<BJmw!8u*-^PN&Sh`!rHm3gIjKGhk4XM=x3`fsstxBH1YB^gPG-j)kD=b{g= z41Z^vZ5bgM5z_7p4c5BH41p-H91Ko}JFv(01tBVOpY1Y%cdTq%087+q<Q<7t2KVFL znZw{VpL5OZ-4jJ#WUI(K!)g+#sz(uNVU&#OraP&NyqkfPg1I&$O9qQXVK?0)y53&H z5|(T_yjDPJSQ2X+D<+YG8*4IRZTVtiCZ)DIF?o`^u|{tjBOxCR5gz1RX&?9gmub{b z!YKrRpy@>R(%~Kn`4^n&+m=X)p1tU^y(c9@*%qJegp}ORe!K1Ph(PkFFgSw8o*gPl zm{8{FH*BxV$)oHb-WC>04D5+*wuPZ&(r_BzR2y#4=_LLcO!5&W1IA!oyL(pm;o49F zDr`QyGMrSis&;p}CwRLOqID(&EA@<axAr5}rSrZ6Bz=XmjUP;OBB&wDG`#KU!Q?+A z?(n!Fn0Qi8cm>;U;9M>tu7i9*x8jCTEUpG?t=Byjhm9YsV-JkJD%v72Y^sHkwASlR zv3Vnjp6s_xiz2JZqqZYaIHoMab~cKfCBcUeMUw(n{%$=bP6qNbgE+JK!-Izr2=}6T zY%o<DL5A59707(#;RXdMCZy4(RFPwW6Cm&)u3KGR_k7!R6*(;Ea(h8THA#>+q0tl9 zWN*Wt_KYs~g+|-2YVu(C+TpaNQ1|BCfzg+lkPmLnJ6sTliI$jb&%~30&}lsqRI9)f zfa`2e(5-p4EAix+gqM5iHUtw$X$A2Y27thwtSlICCY#9C+E`f>?qhb^c8(y!*`%Ge zk4KQ5gX4RX=v!jy(6R~fa{$wJ+Db-}+As(1z16JD=ex-aeg)gH)rZF<kP^YeL-8;g z@EnjP<98|`7cd`i5Ml4*_wF~a`vDjaph&;o%gR0l)B<iHz8etq8Y@de{BS@R;P8&V z%(z|f;s46v-cjU1GCmX!##do`4-o9`LnK1tu6{(<@cS#^M?hhV&$kEZ#=LrX+ZeK* zkk4&{w8T8Gq%#NX;c}e$zNPboGcrfeGB}5A8I;4cWocI*WLyQGW^HF>?g&<P3BNAD z9u$QZ=g#8YS)~tl96qTfAF@PddnT1EdEk&Q13B#J?8MpOb|+CVEvzEw#=Mz~YxgJJ zaLoOjkH`X0`T^3-2AS@}{Rp1##81g6KshMwUAEjb@~?pVaF+Ye7!Q}*>eEQRC<54a z*=*8rWUer54^r9+#}Pj4OkXn)(`LZ9=6}3+k4-e5tRMUolJtGd!j?aAPf7Lt9^0$q z$<u@W{?LENU9%-mAf+*D**jZe+5<mb<`z|9&A!gS*$z)2qsO+nU7n0vr)P_+GHyLM zTZHQvtq|Aa3PDx1N5Zf$SYZ@%3^>#09i~cP3r{CwBk9A4mLMo{LdsM)8<flR2HoVA z*cPUf5%<PPf^M?L4?Lr`f8a@~_`s8p^PNXQUw$VE=TG;zFLtjnbFbcCBgJ;yr{0`f z%XGt%G1A9FH4O*NJ>l(iKiU%vN0>L!Ino{gZuEs5-u7cU+0U+JZU3G~Ql!h!f*uAe ze8YBhB594<j@I)A;AKURdq|@Y*NDcK6`k&xhd-YLjflBFc<0^jCzN!Qgg#$ki-<8W zt;`DMPc&sZm@x_$M)QV0t<dG#{V@$82x0p}UcMcY+GCqLg`6gX509KmP7wiIFnna| zx{KUpn=*~OK0GyLbkWKcOBAI`%F7BLU93nR-~Y_eKU+lxdB>*BAjX$7NP<m^LqFb5 z&mzErzr))z$sX1=KNG`O`gAhiwre_3LA`T_9^)q9Nq{^wjFI5XSg9~jAmf7AU=qUE zPEIEa!Ee|`8OZ&X(=%DwSwJ@c?g3=m07GYCWC9GH&C22ds{lU$$Q%p-fH{CAfHJ^Y zK=xc5Yy)rt3<Xf{00`!>vSPqdfbt&D3{VaD63`3K+{?;}?!`GCpW()IA1nJEkTsu` zeFhl2fR#NDxC$s)2zS2#FJQ_dR`wns;C@#25`cREhyfP>iyy?nX@HD}SlMnskdc*D z0@4bhYXTTkgmDb;JzzpH#EyXKVhbxffSV?OcrjWEKyF}Vj{*Jza0BkmW@UANW<X*N zY6{o~kmN!q4Dd4GCSYD3Jg@*h1F-oRC;?Rf4`A91R`x339AGRceLtWEAhUfni<H=& zn?)wuGG-B-?bo|86b9NJn~hm!&)p=`_R!r#Z417e%&{GqNglF2I}?v%XOahOf6f5= z@EX17W)P$8w|w%Ttu~(|+n&rPQ*7h%@$R)e#J){0)ABH>cye*KBNtd6$VCz;WZYvr zpF^~^%{gSQtvCk;F>rZ~hSB^mGHHC6MA>u?leM;wmXJ!@s3qiC+oy}kqwwA*Bq3gD z-@kJKwuOs<M@TQHib;yiR!pX(3WY+3JLqGZE-)>-8P_bv5yS*=0gS}>@WT%?E}zdw z{1*WyB;1uT-m%`XHg6Fz+ny`JoIIllg}+*ef<9kJme|J8yC03HWVsQ|Jj{r&`iIB@ z+q{PmG4UZ1V+(qSjI#asAemr$_d%55DS8Qi5V1=iAaC2Q-;Y{U-A@W_gYGA*ZEr3@ z9)?ATbuPrEWFca^7l5}BgosFptz`ijD!w&K5)#0K*j`&el5AftAYry7nj$bnh7{`- zk#O7f`G~<qW{X-tLT%ILgFcS?fO+11z<2Xr6!-Ca$wnJ{FT!5D2bXd8kU}m5?_Zop z;%u&YWV$VH9@6e9AO~y-1*F{e)?7Sh&qbj`b3uY#bI4NLLvzS9+oU-}6)yz=nOmUU zZvUkSq%?>GB1VqEzyV>fPsnr(w|zGoU-{A5z%i2E33A9omW4}M*+YOefad^z0P-Kf zKnQ39^a4^JMLz^=2K)!`Ip9aYMZk#1;LH~A3g8#O@G{^7>;YT^s2)dW2fP6|0{9WY zEn{U0z|3Xn<j>=VTaI=Q*ac_>Ojv<V2&e~$o?vAKfHJ_FfE$3+C!rz&I15O53Izb1 z0w~H^*&~4c052eCC2#=3R<W{D!25vT0Ew$H`2kj~MkjwBH?IJ`2ZXFaCw`cfeFg9W z(*A`+fFpo&fG`sZ11JN02>1gKX~q$afHwfg0k;5}5}fS^cmZ$<5L}830hNGL01qG& zl$P3NJxUBV)uU*mmmVRLY_C3oPk;X-_`*{k0lO}IgrwV!FD02mP9{WqI=GZX*qW9S zfvtEc$+9IcMPv4r;!<CV54xh1Ojn2k#3aCXZa3P3Z})g#Amfw#<G)Qw)Bjb14)I9| zdU!<%9<xe-EuaKL&40|K!1kP(B-*mfB-a*eMpHg-LTrPHM5X!%0Rb&aSM0z)Pl!AC zrc6#w_`^g336c3;Y`p#7*18t`anoA#%u)32!WuF&h!Y5qO3?SuwrdR;XEV`D_8OwJ zMXw>FH3B+JxPEZG&^D_*wj)T)Nf^-$pD&OCMhXE(hlg*aKABHudv7&}_P}Z~)0Vax z1#e#k^3|>aL7rNL32@vh44yYvqHg<FB5XOm8?};T4&efXpcD{%E2Wbr!}O!;D#x(# zT{#(TJ6KLswu*Ahuex&J{O&38gl)xBs6^^hc>Lo@<hX-g=0ExWn!4JMrlK%>-n-2< zo6F{C_M_C;4<V>2MHKyTW=W(|v>^qhQ!EGN-FEN#Az3)7Y1wKbof7(v2|?)~xJ2Jk zWc`VtPs-3his+XJDP{JYJB*$2ocliSdCz-3?%CmNyE_NeDWaDV&`uFGMKDjVj-XLr zRL~15QY%#C{iT3jR3Pn9sGM^6Wd&2STM^}jk<=ohRbkp<u;Px7hcFCgLugh{2zqCT zLi|AxnOjBV3c~A88G~d<MjyyBZQNwS84m3CC6+rs&w{V!OpoN5?5TpO0t>p3)%kor zJPL_PR*y^u9Qze^vXNoN=1g3YF%}-T!{_OCNQc|Vqa8XzU6Q@tugXeWpvvE@u$^^V zch}Tud0nIsABfVr#WtK0z`BSrbocWpb!XN4_q7(T*S2?)OG=eb(Agx0Y+;ft+<l#F zsal7`4<4fprDo*OJKtodT*A+L7ANK6`#`7}dm6*K6SxZqj)e)6_+*TRS_GYjdZZ_v zB)EeaScwo2jQI17xZXzkn+zM_SNAP!BvxjYjAann2iW|{u*1_f{M&I_QOtUAP68l| z#9oFHvWt2w1UJ&EfP^RCT#M@gU3M%pp&cklFDnS$0PrxzPsC{D@^g^y={)WCf2Fjs z9<)A3_f3+)n6=1k;Xh7Nxwg5F8Y$1?^;FeV7B*B=mNK7rhqtD|%Lh+U2QQA39h)8! z_s8-6*$c*_adH{**>|40Mh;UGs?x+geUz__#%Y+2MwI5pKzl%C?1?De%&NbV_2vXw zXU9lytf<8O&txqEFM(cg5qhCpfZ*rBLqI3+VjMnz1P}ps0h55yU@@Y8YPhvS4zCHw zYZasF534+ShWeM<4b`k3E9jlLd2YOlcwPd#SYxd*njqIU&);;}qLy!MlJ$KCK0^Kk zWZH~@&jCeC@DUwI+i0cz^v))|9@Mh0&@G~A?ao!&FC~*CnQtIG!_gKg&kX$oR(6BD From 45d06f13eb02ba8a5b29ecb9b807bf93611a93f5 Mon Sep 17 00:00:00 2001 From: M1nd3r <petrsedlacek.km@seznam.cz> Date: Fri, 24 May 2024 17:29:55 +0200 Subject: [PATCH 098/626] feat(core): add device_secret and cred_auth_key_counter [no changelog] --- core/src/storage/device.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/core/src/storage/device.py b/core/src/storage/device.py index 483efdffeb..ff658105fe 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -3,6 +3,7 @@ import storage.cache as storage_cache from storage import common +from trezor import utils if TYPE_CHECKING: from trezor.enums import BackupType @@ -36,6 +37,10 @@ _EXPERIMENTAL_FEATURES = const(0x15) # bool (0x01 or empty) _HIDE_PASSPHRASE_FROM_HOST = const(0x16) # bool (0x01 or empty) +if utils.USE_THP: + _DEVICE_SECRET = const(0x17) # bytes + _CRED_AUTH_KEY_COUNTER = const(0x18) # bytes + SAFETY_CHECK_LEVEL_STRICT : Literal[0] = const(0) SAFETY_CHECK_LEVEL_PROMPT : Literal[1] = const(1) _DEFAULT_SAFETY_CHECK_LEVEL = SAFETY_CHECK_LEVEL_STRICT @@ -347,3 +352,26 @@ def get_hide_passphrase_from_host() -> bool: Whether we should hide the passphrase from the host. """ return common.get_bool(_NAMESPACE, _HIDE_PASSPHRASE_FROM_HOST) + + +if utils.USE_THP: + + def get_device_secret() -> bytes: + """ + Device secret is used to derive keys that are independent of the seed. + """ + device_secret = common.get(_NAMESPACE, _DEVICE_SECRET) + if not device_secret: + from trezor.crypto import random + + device_secret = random.bytes(16, True) + common.set(_NAMESPACE, _DEVICE_SECRET, device_secret) + return device_secret + + def get_cred_auth_key_counter() -> bytes: + return common.get(_NAMESPACE, _CRED_AUTH_KEY_COUNTER) or bytes(4) + + def increment_cred_auth_key_counter() -> None: + counter = int.from_bytes(get_cred_auth_key_counter(), "big") + utils.ensure(counter < 0xFFFFFFFF, "Overflow of cred_auth_key_counter") + common.set(_NAMESPACE, _CRED_AUTH_KEY_COUNTER, (counter + 1).to_bytes(4, "big")) From 5c6af8332ae9309c16ffb70013b0173ca806e09f Mon Sep 17 00:00:00 2001 From: M1nd3r <petrsedlacek.km@seznam.cz> Date: Fri, 24 May 2024 17:32:04 +0200 Subject: [PATCH 099/626] test(core): add tests for device_secret and cred_auth_key_counter [no changelog] --- core/tests/test_storage.py | 47 +++++++++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/core/tests/test_storage.py b/core/tests/test_storage.py index dfe14b6f29..062ed8f74b 100644 --- a/core/tests/test_storage.py +++ b/core/tests/test_storage.py @@ -1,13 +1,15 @@ from common import * # isort:skip from storage import device -from trezor import config - +from trezor import config, utils class TestConfig(unittest.TestCase): - def test_counter(self): + + def setUp(self): config.init() config.wipe() + + def test_u2f_counter(self): for i in range(150): self.assertEqual(device.next_u2f_counter(), i) device.set_u2f_counter(350) @@ -16,6 +18,45 @@ def test_counter(self): device.set_u2f_counter(0) self.assertEqual(device.next_u2f_counter(), 1) + if utils.USE_THP: + + def test_cred_auth_key_counter(self): + rounds = 200 + for i in range(rounds): + self.assertEqual( + device.get_cred_auth_key_counter(), i.to_bytes(4, "big") + ) + device.increment_cred_auth_key_counter() + + # Test get_cred_auth_key_counter does not change the counter value + self.assertEqual( + device.get_cred_auth_key_counter(), rounds.to_bytes(4, "big") + ) + self.assertEqual( + device.get_cred_auth_key_counter(), rounds.to_bytes(4, "big") + ) + + def test_cred_auth_key_counter_overflow(self): + from storage import common + from storage.device import _NAMESPACE, _CRED_AUTH_KEY_COUNTER + + common.set(_NAMESPACE, _CRED_AUTH_KEY_COUNTER, b"\xff\xff\xff\xfe") + device.increment_cred_auth_key_counter() + self.assertEqual(device.get_cred_auth_key_counter(), b"\xff\xff\xff\xff") + with self.assertRaises(AssertionError) as e: + device.increment_cred_auth_key_counter() + self.assertEqual(e.value.value, "Overflow of cred_auth_key_counter") + + def test_device_secret(self): + secret1 = device.get_device_secret() + self.assertEqual(len(secret1), 16) + secret2 = device.get_device_secret() + self.assertEqual(secret1, secret2) + config.wipe() + secret3 = device.get_device_secret() + self.assertEqual(len(secret3), 16) + self.assertNotEqual(secret1, secret3) + if __name__ == "__main__": unittest.main() From 1d747d3b7feeeb0a568ff81b89c2d2250ef29166 Mon Sep 17 00:00:00 2001 From: M1nd3r <petrsedlacek.km@seznam.cz> Date: Thu, 30 May 2024 11:55:56 +0200 Subject: [PATCH 100/626] docs(core): improve documentation of `crc32` function [no changelog] --- .../extmod/modtrezorcrypto/modtrezorcrypto-crc.h | 14 +++++++++++--- core/mocks/generated/trezorcrypto/crc.pyi | 12 +++++++++--- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-crc.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-crc.h index 2cf8d7b97b..77a2e264b0 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-crc.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-crc.h @@ -26,9 +26,17 @@ /// package: trezorcrypto.crc /// def crc32(data: bytes, crc: int = 0) -> int: -/// """ -/// Computes a CRC32 checksum of `data`. -/// """ +/// """ +/// Computes a CRC32 checksum of `data`. +/// +/// Args: +/// `data` (`bytes`): Input data. +/// `crc` (`int`, `optional`): Initial CRC value for chaining +/// computations over multiple data segments. Defaults to 0. +/// +/// Returns: +/// `int`: Computed CRC32 checksum. +/// """ mp_obj_t mod_trezorcrypto_crc_crc32(size_t n_args, const mp_obj_t *args) { mp_buffer_info_t bufinfo = {0}; mp_get_buffer_raise(args[0], &bufinfo, MP_BUFFER_READ); diff --git a/core/mocks/generated/trezorcrypto/crc.pyi b/core/mocks/generated/trezorcrypto/crc.pyi index f7243114cf..48b595faa3 100644 --- a/core/mocks/generated/trezorcrypto/crc.pyi +++ b/core/mocks/generated/trezorcrypto/crc.pyi @@ -3,6 +3,12 @@ from typing import * # extmod/modtrezorcrypto/modtrezorcrypto-crc.h def crc32(data: bytes, crc: int = 0) -> int: - """ - Computes a CRC32 checksum of `data`. - """ + """ + Computes a CRC32 checksum of `data`. + Args: + `data` (`bytes`): Input data. + `crc` (`int`, `optional`): Initial CRC value for chaining + computations over multiple data segments. Defaults to 0. + Returns: + `int`: Computed CRC32 checksum. + """ From 8bf84c2907b3d5ea1663ded1eb1007c58f9bde1c Mon Sep 17 00:00:00 2001 From: M1nd3r <petrsedlacek.km@seznam.cz> Date: Thu, 30 May 2024 21:31:41 +0200 Subject: [PATCH 101/626] chore(core): change build_mocks to include empty lines [no changelog] --- .../modtrezorcrypto/modtrezorcrypto-monero.h | 18 ++++++++---------- .../extmod/modtrezorio/modtrezorio-poll.h | 6 +++--- .../extmod/modtrezorui/modtrezorui-display.h | 3 +-- .../extmod/modtrezorutils/modtrezorutils.c | 6 +++--- core/mocks/generated/trezorcrypto/crc.pyi | 2 ++ core/mocks/generated/trezorio/__init__.pyi | 8 ++++++-- core/tools/build_mocks | 15 +++++++++------ 7 files changed, 32 insertions(+), 26 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-monero.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-monero.h index 0518294657..a28d1bd523 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-monero.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-monero.h @@ -140,7 +140,7 @@ STATIC void mp_unpack_scalar(bignum256modm r, const mp_obj_t arg, /// """ /// EC point on ED25519 /// """ -/// + /// def __init__(self, x: Point | bytes | None = None): /// """ /// Constructor @@ -179,13 +179,12 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_monero_ge25519___del___obj, /// """ /// EC scalar on SC25519 /// """ -/// + /// def __init__(self, x: Scalar | bytes | int | None = None): /// """ /// Constructor /// """ -/// -/// + STATIC mp_obj_t mod_trezorcrypto_monero_bignum256modm_make_new( const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { @@ -223,28 +222,27 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1( /// """ /// XMR hasher /// """ -/// + /// def __init__(self, x: bytes | None = None): /// """ /// Constructor /// """ -/// + /// def update(self, buffer: bytes) -> None: /// """ /// Update hasher /// """ -/// + /// def digest(self) -> bytes: /// """ /// Computes digest /// """ -/// + /// def copy(self) -> Hasher: /// """ /// Creates copy of the hasher, preserving the state /// """ -/// -/// + STATIC mp_obj_t mod_trezorcrypto_monero_hasher_make_new( const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) { diff --git a/core/embed/extmod/modtrezorio/modtrezorio-poll.h b/core/embed/extmod/modtrezorio/modtrezorio-poll.h index da5b122477..7f1feb54ec 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio-poll.h +++ b/core/embed/extmod/modtrezorio/modtrezorio-poll.h @@ -37,11 +37,11 @@ extern bool usb_connected_previously; /// def poll(ifaces: Iterable[int], list_ref: list, timeout_ms: int) -> bool: /// """ /// Wait until one of `ifaces` is ready to read or write (using masks -// `io.POLL_READ` and `io.POLL_WRITE`) and assign the result into +/// `io.POLL_READ` and `io.POLL_WRITE`) and assign the result into /// `list_ref`: /// -/// `list_ref[0]` - the interface number, including the mask -/// `list_ref[1]` - for touch event, tuple of: +/// - `list_ref[0]` - the interface number, including the mask +/// - `list_ref[1]` - for touch event, tuple of: /// (event_type, x_position, y_position) /// - for button event (T1), tuple of: /// (event type, button number) diff --git a/core/embed/extmod/modtrezorui/modtrezorui-display.h b/core/embed/extmod/modtrezorui/modtrezorui-display.h index 69e37d0152..2b49e38249 100644 --- a/core/embed/extmod/modtrezorui/modtrezorui-display.h +++ b/core/embed/extmod/modtrezorui/modtrezorui-display.h @@ -25,14 +25,13 @@ /// """ /// Provide access to device display. /// """ -/// /// WIDTH: int # display width in pixels /// HEIGHT: int # display height in pixels /// FONT_MONO: int # id of monospace font /// FONT_NORMAL: int # id of normal-width font /// FONT_DEMIBOLD: int # id of demibold font /// FONT_BOLD_UPPER: int # id of bold-width-uppercased font -/// + typedef struct _mp_obj_Display_t { mp_obj_base_t base; } mp_obj_Display_t; diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index 309e4684bf..5549995376 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -320,15 +320,15 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN( mod_trezorutils_reboot_to_bootloader); /// VersionTuple = Tuple[int, int, int, int] -/// + /// class FirmwareHeaderInfo(NamedTuple): /// version: VersionTuple /// vendor: str /// fingerprint: bytes /// hash: bytes -/// + /// mock:global -/// + /// def check_firmware_header(header : bytes) -> FirmwareHeaderInfo: /// """Parses incoming firmware header and returns information about it.""" STATIC mp_obj_t mod_trezorutils_check_firmware_header(mp_obj_t header) { diff --git a/core/mocks/generated/trezorcrypto/crc.pyi b/core/mocks/generated/trezorcrypto/crc.pyi index 48b595faa3..248d69dc38 100644 --- a/core/mocks/generated/trezorcrypto/crc.pyi +++ b/core/mocks/generated/trezorcrypto/crc.pyi @@ -5,10 +5,12 @@ from typing import * def crc32(data: bytes, crc: int = 0) -> int: """ Computes a CRC32 checksum of `data`. + Args: `data` (`bytes`): Input data. `crc` (`int`, `optional`): Initial CRC value for chaining computations over multiple data segments. Defaults to 0. + Returns: `int`: Computed CRC32 checksum. """ diff --git a/core/mocks/generated/trezorio/__init__.pyi b/core/mocks/generated/trezorio/__init__.pyi index e84de507c0..4798c4c4dc 100644 --- a/core/mocks/generated/trezorio/__init__.pyi +++ b/core/mocks/generated/trezorio/__init__.pyi @@ -72,13 +72,16 @@ class HID: def poll(ifaces: Iterable[int], list_ref: list, timeout_ms: int) -> bool: """ Wait until one of `ifaces` is ready to read or write (using masks + `io.POLL_READ` and `io.POLL_WRITE`) and assign the result into `list_ref`: - `list_ref[0]` - the interface number, including the mask - `list_ref[1]` - for touch event, tuple of: + + - `list_ref[0]` - the interface number, including the mask + - `list_ref[1]` - for touch event, tuple of: (event_type, x_position, y_position) - for button event (T1), tuple of: (event type, button number) - for USB read event, received bytes + If timeout occurs, False is returned, True otherwise. """ @@ -193,6 +196,7 @@ class WebUSB: from . import fatfs, sdcard POLL_READ: int # wait until interface is readable and return read data POLL_WRITE: int # wait until interface is writable + TOUCH: int # interface id of the touch events TOUCH_START: int # event id of touch start event TOUCH_MOVE: int # event id of touch move event diff --git a/core/tools/build_mocks b/core/tools/build_mocks index 29d27f5bae..f5dbdf4c52 100755 --- a/core/tools/build_mocks +++ b/core/tools/build_mocks @@ -11,7 +11,8 @@ EXTMOD_PATH = CORE_DIR / "embed" / "extmod" RUSTMOD_PATH = CORE_DIR / "embed" / "rust" / "src" MOCKS_PATH = CORE_DIR / "mocks" / "generated" -COMMENT_PREFIX = "/// " +COMMENT_PREFIX_SHORT = "///" +COMMENT_PREFIX = COMMENT_PREFIX_SHORT + " " current_indent = 0 current_class = None @@ -61,9 +62,11 @@ def split_to_parts(line, mod_desc=None): yield (current_package, current_indent * " " + "@overload\n") current_method_is_overload = False - line = current_indent * " " + line - - yield (current_package, line) + if not line.strip(): + yield (current_package, "\n") + else: + line = current_indent * " " + line + yield (current_package, line) def store_to_file(dest, parts): @@ -105,10 +108,10 @@ def build_module(mod_file, dest): mod_desc = str(mod_file.relative_to(CORE_DIR / "embed")) for l in open(mod_file): - if not l.startswith(COMMENT_PREFIX): + if not l.startswith(COMMENT_PREFIX_SHORT): continue - l = l[len(COMMENT_PREFIX) :] # .strip() + store_to_file(dest, split_to_parts(l, mod_desc)) From d6c502f27e4796ad9e3739f353448c53697fd7e5 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 4 Mar 2024 11:20:22 +0100 Subject: [PATCH 102/626] feat(core): add fonts for T3T1 --- core/SConscript.bootloader | 6 +++++- core/SConscript.bootloader_ci | 4 ++++ core/SConscript.bootloader_emu | 4 ++++ core/SConscript.firmware | 14 +++++++++++++- core/SConscript.prodtest | 14 +++++++++++++- core/SConscript.reflash | 14 +++++++++++++- core/SConscript.unix | 14 +++++++++++++- core/embed/lib/fonts/fonts.c | 20 ++++++++++++++++++++ core/embed/lib/fonts/fonts.h | 19 +++++++++++++++++-- core/embed/rust/src/ui/display/font.rs | 1 + core/translations/cs.json | 19 +++++++++++-------- core/translations/de.json | 19 +++++++++++-------- core/translations/es.json | 19 +++++++++++-------- core/translations/fr.json | 19 +++++++++++-------- 14 files changed, 147 insertions(+), 39 deletions(-) diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 6c3452fabd..5f20c9e5c1 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -44,6 +44,7 @@ if TREZOR_MODEL in ('R', ): FONT_BIG='Font_PixelOperator_Regular_8' FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None + FONT_SUB=None elif TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): FONT_NORMAL='Font_TTHoves_Regular_21' FONT_DEMIBOLD='Font_TTHoves_Regular_21' @@ -52,14 +53,16 @@ elif TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' + FONT_SUB=None elif TREZOR_MODEL in ('T3T1',): FONT_NORMAL='Font_TTSatoshi_DemiBold_21' FONT_DEMIBOLD='Font_TTSatoshi_DemiBold_21' - FONT_BOLD=None + FONT_BOLD='Font_TTHoves_Bold_17_upper' FONT_MONO='Font_TTSatoshi_DemiBold_21' FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' + FONT_SUB=None # modtrezorcrypto CCFLAGS_MOD += '-Wno-sequence-point ' @@ -144,6 +147,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('SUB', FONT_SUB, CPPDEFINES_MOD, SOURCE_MOD) env = Environment( ENV=os.environ, diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 0dca24c0fb..87d707c392 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -39,6 +39,7 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BIG='Font_PixelOperator_Regular_8' FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None + FONT_SUB=None elif TREZOR_MODEL in ('T',): FONT_NORMAL='Font_Roboto_Regular_20' FONT_DEMIBOLD=None @@ -47,6 +48,7 @@ elif TREZOR_MODEL in ('T',): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None + FONT_SUB=None elif TREZOR_MODEL in ('T3T1',): FONT_NORMAL='Font_TTSatoshi_DemiBold_21' FONT_DEMIBOLD=None @@ -55,6 +57,7 @@ elif TREZOR_MODEL in ('T3T1',): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None + FONT_SUB=None # modtrezorcrypto CCFLAGS_MOD += '-Wno-sequence-point ' @@ -119,6 +122,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('SUB', FONT_SUB, CPPDEFINES_MOD, SOURCE_MOD) env = Environment( ENV=os.environ, CFLAGS='%s -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0')), diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index fe152042c5..7ec0641d12 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -41,6 +41,7 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BIG='Font_PixelOperator_Regular_8' FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None + FONT_SUB=None elif TREZOR_MODEL in ('T', 'DISC2'): FONT_NORMAL='Font_TTHoves_Regular_21' FONT_DEMIBOLD=None @@ -49,6 +50,7 @@ elif TREZOR_MODEL in ('T', 'DISC2'): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' + FONT_SUB=None elif TREZOR_MODEL in ('T3T1',): FONT_NORMAL='Font_TTSatoshi_DemiBold_21' FONT_DEMIBOLD='Font_TTSatoshi_DemiBold_21' @@ -57,6 +59,7 @@ elif TREZOR_MODEL in ('T3T1',): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' + FONT_SUB=None # modtrezorcrypto CCFLAGS_MOD += '-Wno-sequence-point ' @@ -177,6 +180,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('SUB', FONT_SUB, CPPDEFINES_MOD, SOURCE_MOD) env = Environment(ENV=os.environ, CFLAGS='%s -DCONFIDENTIAL= -DPRODUCTION=%s' % (ARGUMENTS.get('CFLAGS', ''), ARGUMENTS.get('PRODUCTION', '0'))) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 6a6afbc457..36e68e63fe 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -50,7 +50,8 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BIG='Font_Unifont_Regular_16' FONT_NORMAL_UPPER='Font_PixelOperator_Regular_8_upper' FONT_BOLD_UPPER='Font_PixelOperator_Bold_8_upper' -elif TREZOR_MODEL in ('T', 'T3T1', 'DISC1', 'DISC2'): + FONT_SUB=None +elif TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): FONT_NORMAL='Font_TTHoves_Regular_21' FONT_DEMIBOLD='Font_TTHoves_DemiBold_21' FONT_BOLD=None @@ -58,6 +59,16 @@ elif TREZOR_MODEL in ('T', 'T3T1', 'DISC1', 'DISC2'): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' + FONT_SUB=None +elif TREZOR_MODEL in ('T3T1',): + FONT_NORMAL='Font_TTSatoshi_DemiBold_21' + FONT_DEMIBOLD='Font_TTSatoshi_DemiBold_21' + FONT_BOLD='Font_TTSatoshi_DemiBold_21' + FONT_MONO='Font_RobotoMono_Medium_21' + FONT_BIG='Font_TTSatoshi_DemiBold_42' + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None + FONT_SUB='Font_TTSatoshi_DemiBold_18' # modtrezorconfig CPPPATH_MOD += [ @@ -424,6 +435,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('SUB', FONT_SUB, CPPDEFINES_MOD, SOURCE_MOD) SOURCE_QSTR = SOURCE_MOD + SOURCE_MICROPYTHON + SOURCE_MICROPYTHON_SPEED diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 087de05319..e31d941896 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -42,7 +42,8 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None -elif TREZOR_MODEL in ('T', 'T3T1'): + FONT_SUB=None +elif TREZOR_MODEL in ('T',): FONT_NORMAL=None FONT_DEMIBOLD=None FONT_BOLD='Font_Roboto_Bold_20' @@ -50,6 +51,16 @@ elif TREZOR_MODEL in ('T', 'T3T1'): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None + FONT_SUB=None +elif TREZOR_MODEL in ('T3T1',): + FONT_NORMAL='Font_TTSatoshi_DemiBold_21' + FONT_DEMIBOLD=None + FONT_BOLD='Font_TTSatoshi_DemiBold_21' + FONT_MONO='Font_RobotoMono_Medium_21' + FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None + FONT_SUB=None # modtrezorcrypto CPPPATH_MOD += [ @@ -110,6 +121,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('SUB', FONT_SUB, CPPDEFINES_MOD, SOURCE_MOD) env = Environment( ENV=os.environ, diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 8e739c14d1..1a9a313f57 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -37,7 +37,8 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None -elif TREZOR_MODEL in ('T', 'T3T1'): + FONT_SUB=None +elif TREZOR_MODEL in ('T',): FONT_NORMAL=None FONT_DEMIBOLD=None FONT_BOLD='Font_Roboto_Bold_20' @@ -45,6 +46,16 @@ elif TREZOR_MODEL in ('T', 'T3T1'): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER=None + FONT_SUB=None +elif TREZOR_MODEL in ('T3T1',): + FONT_NORMAL=None + FONT_DEMIBOLD=None + FONT_BOLD='Font_TTSatoshi_DemiBold_21' + FONT_MONO=None + FONT_BIG=None + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None + FONT_SUB=None # modtrezorcrypto CPPPATH_MOD += [ @@ -82,6 +93,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('SUB', FONT_SUB, CPPDEFINES_MOD, SOURCE_MOD) env = Environment( ENV=os.environ, diff --git a/core/SConscript.unix b/core/SConscript.unix index 63cd46cf64..55161b281a 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -55,7 +55,8 @@ if TREZOR_MODEL in ('1', 'R'): FONT_BIG='Font_Unifont_Regular_16' FONT_NORMAL_UPPER='Font_PixelOperator_Regular_8_upper' FONT_BOLD_UPPER='Font_PixelOperator_Bold_8_upper' -elif TREZOR_MODEL in ('T', 'T3T1'): + FONT_SUB=None +elif TREZOR_MODEL in ('T',): FONT_NORMAL='Font_TTHoves_Regular_21' FONT_DEMIBOLD='Font_TTHoves_DemiBold_21' FONT_BOLD=None @@ -63,6 +64,16 @@ elif TREZOR_MODEL in ('T', 'T3T1'): FONT_BIG=None FONT_NORMAL_UPPER=None FONT_BOLD_UPPER='Font_TTHoves_Bold_17_upper' + FONT_SUB=None +elif TREZOR_MODEL in ('T3T1',): + FONT_NORMAL='Font_TTSatoshi_DemiBold_21' + FONT_DEMIBOLD='Font_TTSatoshi_DemiBold_21' + FONT_BOLD='Font_TTSatoshi_DemiBold_21' + FONT_MONO='Font_RobotoMono_Medium_21' + FONT_BIG='Font_TTSatoshi_DemiBold_42' + FONT_NORMAL_UPPER=None + FONT_BOLD_UPPER=None + FONT_SUB='Font_TTSatoshi_DemiBold_18' # modtrezorconfig CPPPATH_MOD += [ @@ -446,6 +457,7 @@ tools.add_font('MONO', FONT_MONO, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BIG', FONT_BIG, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('NORMAL_UPPER', FONT_NORMAL_UPPER, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BOLD_UPPER', FONT_BOLD_UPPER, CPPDEFINES_MOD, SOURCE_MOD) +tools.add_font('SUB', FONT_SUB, CPPDEFINES_MOD, SOURCE_MOD) SOURCE_QSTR = SOURCE_MOD + SOURCE_MICROPYTHON + SOURCE_UNIX diff --git a/core/embed/lib/fonts/fonts.c b/core/embed/lib/fonts/fonts.c index 7bb2350a38..d2e6a73962 100644 --- a/core/embed/lib/fonts/fonts.c +++ b/core/embed/lib/fonts/fonts.c @@ -57,6 +57,10 @@ int font_height(int font) { #ifdef TREZOR_FONT_BIG_ENABLE case FONT_BIG: return FONT_BIG_HEIGHT; +#endif +#ifdef TREZOR_FONT_SUB_ENABLE + case FONT_SUB: + return FONT_SUB_HEIGHT; #endif } return 0; @@ -91,6 +95,10 @@ int font_max_height(int font) { #ifdef TREZOR_FONT_BIG_ENABLE case FONT_BIG: return FONT_BIG_MAX_HEIGHT; +#endif +#ifdef TREZOR_FONT_SUB_ENABLE + case FONT_SUB: + return FONT_SUB_MAX_HEIGHT; #endif } return 0; @@ -125,6 +133,10 @@ int font_baseline(int font) { #ifdef TREZOR_FONT_BIG_ENABLE case FONT_BIG: return FONT_BIG_BASELINE; +#endif +#ifdef TREZOR_FONT_SUB_ENABLE + case FONT_SUB: + return FONT_SUB_BASELINE; #endif } return 0; @@ -231,6 +243,10 @@ const uint8_t *font_nonprintable_glyph(int font) { #ifdef TREZOR_FONT_BIG_ENABLE case FONT_BIG: return NONPRINTABLE_GLYPH(FONT_BIG_DATA); +#endif +#ifdef TREZOR_FONT_SUB_ENABLE + case FONT_SUB: + return NONPRINTABLE_GLYPH(FONT_SUB_DATA); #endif default: return NULL; @@ -280,6 +296,10 @@ const uint8_t *font_get_glyph(int font, uint16_t c) { #ifdef TREZOR_FONT_BIG_ENABLE case FONT_BIG: return FONT_BIG_DATA[c - ' ']; +#endif +#ifdef TREZOR_FONT_SUB_ENABLE + case FONT_SUB: + return FONT_SUB_DATA[c - ' ']; #endif } return 0; diff --git a/core/embed/lib/fonts/fonts.h b/core/embed/lib/fonts/fonts.h index 2b897c7517..2e4405e903 100644 --- a/core/embed/lib/fonts/fonts.h +++ b/core/embed/lib/fonts/fonts.h @@ -64,6 +64,15 @@ FONT_DEFINE(TREZOR_FONT_DEMIBOLD_ENABLE, _BASELINE) #endif +#ifdef TREZOR_FONT_SUB_ENABLE +#include TREZOR_FONT_SUB_INCLUDE +#define FONT_SUB (-8) +#define FONT_SUB_DATA TREZOR_FONT_SUB_ENABLE +#define FONT_SUB_HEIGHT FONT_DEFINE(TREZOR_FONT_SUB_ENABLE, _HEIGHT) +#define FONT_SUB_MAX_HEIGHT FONT_DEFINE(TREZOR_FONT_SUB_ENABLE, _MAX_HEIGHT) +#define FONT_SUB_BASELINE FONT_DEFINE(TREZOR_FONT_SUB_ENABLE, _BASELINE) +#endif + #ifdef TREZOR_FONT_MONO_ENABLE #include TREZOR_FONT_MONO_INCLUDE #define FONT_MONO (-3) @@ -148,10 +157,16 @@ #define FONT_MAX_HEIGHT_7 FONT_MAX_HEIGHT_6 #endif +#ifdef TREZOR_FONT_SUB_ENABLE +#define FONT_MAX_HEIGHT_8 MAX_FONT_H(FONT_SUB_MAX_HEIGHT, FONT_MAX_HEIGHT_7) +#else +#define FONT_MAX_HEIGHT_8 FONT_MAX_HEIGHT_7 +#endif + #ifdef TREZOR_FONT_MONO_ENABLE -#define FONT_MAX_HEIGHT MAX_FONT_H(FONT_MONO_MAX_HEIGHT, FONT_MAX_HEIGHT_7) +#define FONT_MAX_HEIGHT MAX_FONT_H(FONT_MONO_MAX_HEIGHT, FONT_MAX_HEIGHT_8) #else -#define FONT_MAX_HEIGHT FONT_MAX_HEIGHT_7 +#define FONT_MAX_HEIGHT FONT_MAX_HEIGHT_8 #endif int font_height(int font); diff --git a/core/embed/rust/src/ui/display/font.rs b/core/embed/rust/src/ui/display/font.rs index ad94ac9ce7..638b522612 100644 --- a/core/embed/rust/src/ui/display/font.rs +++ b/core/embed/rust/src/ui/display/font.rs @@ -155,6 +155,7 @@ pub enum Font { DEMIBOLD = 5, NORMAL_UPPER = 6, BOLD_UPPER = 7, + SUB = 8, } impl From<Font> for i32 { diff --git a/core/translations/cs.json b/core/translations/cs.json index f8a45debd8..91e348db5f 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -7,7 +7,8 @@ "4_FONT_BIG": "font_unifont_regular_16_cs.json", "5_FONT_DEMIBOLD": "font_unifont_bold_16_cs.json", "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_cs.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_cs.json" + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_cs.json", + "8_FONT_SUB": null }, "T2T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_cs.json", @@ -16,16 +17,18 @@ "4_FONT_BIG": null, "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_cs.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_cs.json" + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_cs.json", + "8_FONT_SUB": null }, "T3T1": { - "1_FONT_NORMAL": "font_tthoves_regular_21_cs.json", - "2_FONT_BOLD": null, - "3_FONT_MONO": "font_robotomono_medium_20_cs.json", - "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_cs.json", + "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_cs.json", + "2_FONT_BOLD": "font_ttsatoshi_demibold_21_cs.json", + "3_FONT_MONO": "font_robotomono_medium_21_cs.json", + "4_FONT_BIG": "font_ttsatoshi_demibold_42_cs.json", + "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_cs.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_cs.json" + "7_FONT_BOLD_UPPER":null, + "8_FONT_SUB": "font_ttsatoshi_demibold_18_cs.json" } }, "header": { diff --git a/core/translations/de.json b/core/translations/de.json index 0a5f593b83..220da14ae7 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -7,7 +7,8 @@ "4_FONT_BIG": "font_unifont_regular_16_de.json", "5_FONT_DEMIBOLD": "font_unifont_bold_16_de.json", "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_de.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_de.json" + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_de.json", + "8_FONT_SUB": null }, "T2T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_de.json", @@ -16,16 +17,18 @@ "4_FONT_BIG": null, "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_de.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_de.json" + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_de.json", + "8_FONT_SUB": null }, "T3T1": { - "1_FONT_NORMAL": "font_tthoves_regular_21_de.json", - "2_FONT_BOLD": null, - "3_FONT_MONO": "font_robotomono_medium_20_de.json", - "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_de.json", + "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_de.json", + "2_FONT_BOLD": "font_ttsatoshi_demibold_21_de.json", + "3_FONT_MONO": "font_robotomono_medium_21_de.json", + "4_FONT_BIG": "font_ttsatoshi_demibold_42_de.json", + "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_de.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_de.json" + "7_FONT_BOLD_UPPER": null, + "8_FONT_SUB": "font_ttsatoshi_demibold_18_de.json" } }, "header": { diff --git a/core/translations/es.json b/core/translations/es.json index c5b3d90ace..d799251414 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -7,7 +7,8 @@ "4_FONT_BIG": "font_unifont_regular_16_es.json", "5_FONT_DEMIBOLD": "font_unifont_bold_16_es.json", "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_es.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_es.json" + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_es.json", + "8_FONT_SUB": null }, "T2T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_es.json", @@ -16,16 +17,18 @@ "4_FONT_BIG": null, "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_es.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_es.json" + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_es.json", + "8_FONT_SUB": null }, "T3T1": { - "1_FONT_NORMAL": "font_tthoves_regular_21_es.json", - "2_FONT_BOLD": null, - "3_FONT_MONO": "font_robotomono_medium_20_es.json", - "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_es.json", + "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_es.json", + "2_FONT_BOLD": "font_ttsatoshi_demibold_21_es.json", + "3_FONT_MONO": "font_robotomono_medium_21_es.json", + "4_FONT_BIG": "font_ttsatoshi_demibold_42_es.json", + "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_es.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_es.json" + "7_FONT_BOLD_UPPER": null, + "8_FONT_SUB": "font_ttsatoshi_demibold_18_es.json" } }, "header": { diff --git a/core/translations/fr.json b/core/translations/fr.json index 32d20d0fbf..a8380bac47 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -7,7 +7,8 @@ "4_FONT_BIG": "font_unifont_regular_16_fr.json", "5_FONT_DEMIBOLD": "font_unifont_bold_16_fr.json", "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_fr.json", - "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_fr.json" + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_fr.json", + "8_FONT_SUB": null }, "T2T1": { "1_FONT_NORMAL": "font_tthoves_regular_21_fr.json", @@ -16,16 +17,18 @@ "4_FONT_BIG": null, "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_fr.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_fr.json" + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_fr.json", + "8_FONT_SUB": null }, "T3T1": { - "1_FONT_NORMAL": "font_tthoves_regular_21_fr.json", - "2_FONT_BOLD": null, - "3_FONT_MONO": "font_robotomono_medium_20_fr.json", - "4_FONT_BIG": null, - "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_fr.json", + "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_fr.json", + "2_FONT_BOLD": "font_ttsatoshi_demibold_21_fr.json", + "3_FONT_MONO": "font_robotomono_medium_21_fr.json", + "4_FONT_BIG": "font_ttsatoshi_demibold_42_fr.json", + "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_fr.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_fr.json" + "7_FONT_BOLD_UPPER": null, + "8_FONT_SUB": "font_ttsatoshi_demibold_18_fr.json" } }, "header": { From 2ba42d716e872dfb1bf8cbe40f723998c362aa68 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 4 Mar 2024 12:05:19 +0100 Subject: [PATCH 103/626] feat(core): init T3T1 UI layouts: meta --- core/SConscript.firmware | 11 ++++++++++- core/SConscript.unix | 11 ++++++++++- core/embed/extmod/modtrezorutils/modtrezorutils.c | 2 ++ core/embed/rust/src/ui/constant.rs | 2 +- core/embed/rust/src/ui/display/loader/mod.rs | 2 +- core/site_scons/site_tools/micropython/__init__.py | 2 ++ core/src/all_modules.py | 12 ++++++++++++ core/src/trezor/ui/layouts/__init__.py | 2 ++ core/src/trezor/ui/layouts/fido.py | 2 ++ core/src/trezor/ui/layouts/homescreen.py | 2 ++ core/src/trezor/ui/layouts/recovery.py | 2 ++ core/src/trezor/ui/layouts/reset.py | 2 ++ 12 files changed, 48 insertions(+), 4 deletions(-) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 36e68e63fe..2a8dc5849c 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -460,12 +460,15 @@ SOURCE_FIRMWARE = [ ] -if TREZOR_MODEL in ('T', 'T3T1', 'DISC1', 'DISC2'): +if TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): UI_LAYOUT = 'UI_LAYOUT_TT' ui_layout_feature = 'model_tt' elif TREZOR_MODEL in ('1', 'R'): UI_LAYOUT = 'UI_LAYOUT_TR' ui_layout_feature = 'model_tr' +elif TREZOR_MODEL in ('T3T1',): + UI_LAYOUT = 'UI_LAYOUT_MERCURY' + ui_layout_feature = 'model_mercury' else: raise ValueError('Unknown Trezor model') @@ -640,6 +643,12 @@ if FROZEN: SOURCE_PY_DIR + 'trezor/ui/layouts/tr/fido.py', ] if not EVERYTHING else [] )) + elif UI_LAYOUT == 'UI_LAYOUT_MERCURY': + SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/mercury/*.py', + exclude=[ + SOURCE_PY_DIR + 'trezor/ui/layouts/mercury/fido.py', + ] if not EVERYTHING else [] + )) else: raise ValueError('Unknown layout') diff --git a/core/SConscript.unix b/core/SConscript.unix index 55161b281a..4013453aa1 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -471,12 +471,15 @@ env = Environment(ENV=os.environ, CFLAGS='%s -DCONFIDENTIAL= -DPYOPT=%s -DBITCOI FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_WANTED, env, CPPDEFINES_HAL, SOURCE_UNIX, PATH_HAL) -if TREZOR_MODEL in ('T', 'T3T1'): +if TREZOR_MODEL in ('T',): UI_LAYOUT = 'UI_LAYOUT_TT' ui_layout_feature = 'model_tt' elif TREZOR_MODEL in ('1', 'R'): UI_LAYOUT = 'UI_LAYOUT_TR' ui_layout_feature = 'model_tr' +elif TREZOR_MODEL in ('T3T1',): + UI_LAYOUT = 'UI_LAYOUT_MERCURY' + ui_layout_feature = 'model_mercury' else: raise ValueError('Unknown Trezor model') @@ -682,6 +685,12 @@ if FROZEN: SOURCE_PY_DIR + 'trezor/ui/layouts/tr/fido.py', ] if not EVERYTHING else [] )) + elif UI_LAYOUT == 'UI_LAYOUT_MERCURY': + SOURCE_PY.extend(Glob(SOURCE_PY_DIR + 'trezor/ui/layouts/mercury/*.py', + exclude=[ + SOURCE_PY_DIR + 'trezor/ui/layouts/mercury/fido.py', + ] if not EVERYTHING else [] + )) else: raise ValueError('Unknown layout') diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index 5549995376..5652c951c9 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -508,6 +508,8 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_TT)}, #elif UI_LAYOUT_TR {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_TR)}, +#elif UI_LAYOUT_MERCURY + {MP_ROM_QSTR(MP_QSTR_UI_LAYOUT), MP_ROM_QSTR(MP_QSTR_MERCURY)}, #else #error Unknown layout #endif diff --git a/core/embed/rust/src/ui/constant.rs b/core/embed/rust/src/ui/constant.rs index 3237db67aa..c47ea35064 100644 --- a/core/embed/rust/src/ui/constant.rs +++ b/core/embed/rust/src/ui/constant.rs @@ -9,5 +9,5 @@ pub use super::model_mercury::constant::*; #[cfg(all(feature = "model_tr", not(feature = "model_tt")))] pub use super::model_tr::constant::*; -#[cfg(feature = "model_tt")] +#[cfg(all(feature = "model_tt", not(feature = "model_mercury")))] pub use super::model_tt::constant::*; diff --git a/core/embed/rust/src/ui/display/loader/mod.rs b/core/embed/rust/src/ui/display/loader/mod.rs index 5d41532c04..691770a4a3 100644 --- a/core/embed/rust/src/ui/display/loader/mod.rs +++ b/core/embed/rust/src/ui/display/loader/mod.rs @@ -7,7 +7,7 @@ mod starry; use crate::ui::display::{Color, Icon}; -#[cfg(feature = "model_tt")] +#[cfg(any(feature = "model_tt", feature = "model_mercury"))] use crate::ui::display::loader::circular::{ loader_circular as determinate, loader_circular_indeterminate as indeterminate, }; diff --git a/core/site_scons/site_tools/micropython/__init__.py b/core/site_scons/site_tools/micropython/__init__.py index 2c074287f5..22e9feac91 100644 --- a/core/site_scons/site_tools/micropython/__init__.py +++ b/core/site_scons/site_tools/micropython/__init__.py @@ -46,6 +46,7 @@ def generate_frozen_module(source, target, env, for_signature): optiga = env["optiga"] layout_tt = env["ui_layout"] == "UI_LAYOUT_TT" layout_tr = env["ui_layout"] == "UI_LAYOUT_TR" + layout_mercury = env["ui_layout"] == "UI_LAYOUT_MERCURY" thp = env["thp"] interim = f"{target[:-4]}.i" # replace .mpy with .i sed_scripts = [ @@ -54,6 +55,7 @@ def generate_frozen_module(source, target, env, for_signature): rf"-e 's/utils\.USE_OPTIGA/{optiga}/g'", rf"-e 's/utils\.UI_LAYOUT == \"TT\"/{layout_tt}/g'", rf"-e 's/utils\.UI_LAYOUT == \"TR\"/{layout_tr}/g'", + rf"-e 's/utils\.UI_LAYOUT == \"MERCURY\"/{layout_mercury}/g'", rf"-e 's/utils\.USE_THP/{thp}/g'", r"-e 's/if TYPE_CHECKING/if False/'", r"-e 's/import typing/# \0/'", diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 2f51c20a0d..8a10b98bfc 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -157,6 +157,18 @@ import trezor.ui.layouts.fido trezor.ui.layouts.homescreen import trezor.ui.layouts.homescreen +trezor.ui.layouts.mercury +import trezor.ui.layouts.mercury +trezor.ui.layouts.mercury.fido +import trezor.ui.layouts.mercury.fido +trezor.ui.layouts.mercury.homescreen +import trezor.ui.layouts.mercury.homescreen +trezor.ui.layouts.mercury.progress +import trezor.ui.layouts.mercury.progress +trezor.ui.layouts.mercury.recovery +import trezor.ui.layouts.mercury.recovery +trezor.ui.layouts.mercury.reset +import trezor.ui.layouts.mercury.reset trezor.ui.layouts.progress import trezor.ui.layouts.progress trezor.ui.layouts.recovery diff --git a/core/src/trezor/ui/layouts/__init__.py b/core/src/trezor/ui/layouts/__init__.py index a29e2e2cfd..b477332f45 100644 --- a/core/src/trezor/ui/layouts/__init__.py +++ b/core/src/trezor/ui/layouts/__init__.py @@ -8,5 +8,7 @@ from .tr import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TT": from .tt import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury import * # noqa: F401,F403 else: raise ValueError("Unknown layout") diff --git a/core/src/trezor/ui/layouts/fido.py b/core/src/trezor/ui/layouts/fido.py index 6b3cb944e3..e7447b1a62 100644 --- a/core/src/trezor/ui/layouts/fido.py +++ b/core/src/trezor/ui/layouts/fido.py @@ -4,3 +4,5 @@ from .tt.fido import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TR": from .tr.fido import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury.fido import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/homescreen.py b/core/src/trezor/ui/layouts/homescreen.py index fe31124a26..ef13c57a4d 100644 --- a/core/src/trezor/ui/layouts/homescreen.py +++ b/core/src/trezor/ui/layouts/homescreen.py @@ -4,3 +4,5 @@ from .tt.homescreen import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TR": from .tr.homescreen import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury.homescreen import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/recovery.py b/core/src/trezor/ui/layouts/recovery.py index f41f1ae8b2..12a0b33540 100644 --- a/core/src/trezor/ui/layouts/recovery.py +++ b/core/src/trezor/ui/layouts/recovery.py @@ -4,3 +4,5 @@ from .tt.recovery import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TR": from .tr.recovery import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury.recovery import * # noqa: F401,F403 diff --git a/core/src/trezor/ui/layouts/reset.py b/core/src/trezor/ui/layouts/reset.py index d0cf6b1c9f..d180953509 100644 --- a/core/src/trezor/ui/layouts/reset.py +++ b/core/src/trezor/ui/layouts/reset.py @@ -4,3 +4,5 @@ from .tt.reset import * # noqa: F401,F403 elif utils.UI_LAYOUT == "TR": from .tr.reset import * # noqa: F401,F403 +elif utils.UI_LAYOUT == "MERCURY": + from .mercury.reset import * # noqa: F401,F403 From 8d4472a68e6308755718637fedc1a17cdcc8339a Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 4 Mar 2024 12:08:57 +0100 Subject: [PATCH 104/626] feat(core): init T3T1 UI layouts Start with copy of components and layouts from T2T1. --- .../component/address_details.rs | 222 ++ .../component/coinjoin_progress.rs | 183 ++ .../src/ui/model_mercury/component/dialog.rs | 233 ++ .../src/ui/model_mercury/component/fido.rs | 246 ++ .../ui/model_mercury/component/fido_icons.rs | 80 + .../component/fido_icons.rs.mako | 35 + .../model_mercury/component/homescreen/mod.rs | 598 +++++ .../component/homescreen/render.rs | 768 ++++++ .../model_mercury/component/keyboard/bip39.rs | 326 +++ .../component/keyboard/common.rs | 152 ++ .../component/keyboard/mnemonic.rs | 234 ++ .../model_mercury/component/keyboard/mod.rs | 8 + .../component/keyboard/passphrase.rs | 441 ++++ .../model_mercury/component/keyboard/pin.rs | 572 +++++ .../component/keyboard/slip39.rs | 399 +++ .../component/keyboard/word_count.rs | 80 + .../model_mercury/component/number_input.rs | 276 +++ .../src/ui/model_mercury/component/page.rs | 851 +++++++ .../ui/model_mercury/component/progress.rs | 183 ++ .../src/ui/model_mercury/component/scroll.rs | 179 ++ .../ui/model_mercury/component/simple_page.rs | 199 ++ .../src/ui/model_mercury/component/swipe.rs | 165 ++ .../embed/rust/src/ui/model_mercury/layout.rs | 2167 +++++++++++++++++ .../ui/model_mercury/res/fido/icon_apple.toif | Bin 0 -> 697 bytes .../ui/model_mercury/res/fido/icon_aws.toif | Bin 0 -> 1264 bytes .../model_mercury/res/fido/icon_binance.toif | Bin 0 -> 555 bytes .../res/fido/icon_bitbucket.toif | Bin 0 -> 865 bytes .../model_mercury/res/fido/icon_bitfinex.toif | Bin 0 -> 1151 bytes .../res/fido/icon_bitwarden.toif | Bin 0 -> 617 bytes .../res/fido/icon_cloudflare.toif | Bin 0 -> 615 bytes .../model_mercury/res/fido/icon_coinbase.toif | Bin 0 -> 568 bytes .../model_mercury/res/fido/icon_dashlane.toif | Bin 0 -> 2158 bytes .../model_mercury/res/fido/icon_dropbox.toif | Bin 0 -> 852 bytes .../ui/model_mercury/res/fido/icon_duo.toif | Bin 0 -> 463 bytes .../model_mercury/res/fido/icon_facebook.toif | Bin 0 -> 747 bytes .../model_mercury/res/fido/icon_fastmail.toif | Bin 0 -> 1185 bytes .../model_mercury/res/fido/icon_fedora.toif | Bin 0 -> 1185 bytes .../ui/model_mercury/res/fido/icon_gandi.toif | Bin 0 -> 1237 bytes .../model_mercury/res/fido/icon_gemini.toif | Bin 0 -> 1042 bytes .../model_mercury/res/fido/icon_github.toif | Bin 0 -> 1092 bytes .../model_mercury/res/fido/icon_gitlab.toif | Bin 0 -> 952 bytes .../model_mercury/res/fido/icon_google.toif | Bin 0 -> 1071 bytes .../model_mercury/res/fido/icon_invity.toif | Bin 0 -> 136 bytes .../model_mercury/res/fido/icon_keeper.toif | Bin 0 -> 1507 bytes .../model_mercury/res/fido/icon_kraken.toif | Bin 0 -> 654 bytes .../res/fido/icon_login.gov.toif | Bin 0 -> 651 bytes .../res/fido/icon_microsoft.toif | Bin 0 -> 165 bytes .../model_mercury/res/fido/icon_mojeid.toif | Bin 0 -> 1330 bytes .../res/fido/icon_namecheap.toif | Bin 0 -> 867 bytes .../model_mercury/res/fido/icon_proton.toif | Bin 0 -> 587 bytes .../res/fido/icon_slushpool.toif | Bin 0 -> 1021 bytes .../model_mercury/res/fido/icon_stripe.toif | Bin 0 -> 668 bytes .../model_mercury/res/fido/icon_tutanota.toif | Bin 0 -> 646 bytes .../model_mercury/res/fido/icon_webauthn.toif | Bin 0 -> 1135 bytes .../rust/src/ui/shape/model/model_mercury.rs | 77 + core/mocks/generated/trezorui2.pyi | 462 ++++ .../src/trezor/ui/layouts/mercury/__init__.py | 1524 ++++++++++++ core/src/trezor/ui/layouts/mercury/fido.py | 89 + .../trezor/ui/layouts/mercury/homescreen.py | 143 ++ .../src/trezor/ui/layouts/mercury/progress.py | 72 + .../src/trezor/ui/layouts/mercury/recovery.py | 171 ++ core/src/trezor/ui/layouts/mercury/reset.py | 369 +++ 62 files changed, 11504 insertions(+) create mode 100644 core/embed/rust/src/ui/model_mercury/component/address_details.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/dialog.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/fido.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/fido_icons.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako create mode 100644 core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/keyboard/mod.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/number_input.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/page.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/progress.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/scroll.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/simple_page.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/swipe.rs create mode 100644 core/embed/rust/src/ui/model_mercury/layout.rs create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_apple.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_aws.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_binance.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_bitbucket.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_bitfinex.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_bitwarden.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_cloudflare.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_coinbase.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_dashlane.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_dropbox.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_duo.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_facebook.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_fastmail.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_fedora.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_gandi.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_gemini.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_github.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_gitlab.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_google.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_invity.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_keeper.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_kraken.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_login.gov.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_microsoft.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_mojeid.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_namecheap.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_proton.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_slushpool.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_stripe.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_tutanota.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fido/icon_webauthn.toif create mode 100644 core/embed/rust/src/ui/shape/model/model_mercury.rs create mode 100644 core/src/trezor/ui/layouts/mercury/__init__.py create mode 100644 core/src/trezor/ui/layouts/mercury/fido.py create mode 100644 core/src/trezor/ui/layouts/mercury/homescreen.py create mode 100644 core/src/trezor/ui/layouts/mercury/progress.py create mode 100644 core/src/trezor/ui/layouts/mercury/recovery.py create mode 100644 core/src/trezor/ui/layouts/mercury/reset.py diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs new file mode 100644 index 0000000000..76dd85b139 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -0,0 +1,222 @@ +use heapless::Vec; + +use crate::{ + error::Error, + micropython::buffer::StrBuffer, + strutil::StringType, + translations::TR, + ui::{ + component::{ + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, + Component, Event, EventCtx, Paginate, Qr, + }, + geometry::Rect, + shape::Renderer, + }, +}; + +use super::{theme, Frame, FrameMsg}; + +const MAX_XPUBS: usize = 16; + +pub struct AddressDetails<T> { + qr_code: Frame<Qr, T>, + details: Frame<Paragraphs<ParagraphVecShort<StrBuffer>>, T>, + xpub_view: Frame<Paragraphs<Paragraph<T>>, T>, + xpubs: Vec<(T, T), MAX_XPUBS>, + xpub_page_count: Vec<u8, MAX_XPUBS>, + current_page: usize, +} + +impl<T> AddressDetails<T> +where + T: StringType, +{ + pub fn new( + qr_title: T, + qr_address: T, + case_sensitive: bool, + details_title: T, + account: Option<StrBuffer>, + path: Option<StrBuffer>, + ) -> Result<Self, Error> + where + T: From<&'static str>, + { + let mut para = ParagraphVecShort::new(); + if let Some(a) = account { + para.add(Paragraph::new( + &theme::TEXT_NORMAL, + TR::words__account_colon.try_into()?, + )); + para.add(Paragraph::new(&theme::TEXT_MONO, a)); + } + if let Some(p) = path { + para.add(Paragraph::new( + &theme::TEXT_NORMAL, + TR::address_details__derivation_path.try_into()?, + )); + para.add(Paragraph::new(&theme::TEXT_MONO, p)); + } + let result = Self { + qr_code: Frame::left_aligned( + theme::label_title(), + qr_title, + Qr::new(qr_address, case_sensitive)?.with_border(7), + ) + .with_cancel_button() + .with_border(theme::borders_horizontal_scroll()), + details: Frame::left_aligned( + theme::label_title(), + details_title, + para.into_paragraphs(), + ) + .with_cancel_button() + .with_border(theme::borders_horizontal_scroll()), + xpub_view: Frame::left_aligned( + theme::label_title(), + " \n ".into(), + Paragraph::new(&theme::TEXT_MONO, "".into()).into_paragraphs(), + ) + .with_cancel_button() + .with_border(theme::borders_horizontal_scroll()), + xpubs: Vec::new(), + xpub_page_count: Vec::new(), + current_page: 0, + }; + Ok(result) + } + + pub fn add_xpub(&mut self, title: T, xpub: T) -> Result<(), Error> { + self.xpubs + .push((title, xpub)) + .map_err(|_| Error::OutOfRange) + } + + fn switch_xpub(&mut self, i: usize, page: usize) -> usize + where + T: Clone, + { + // Context is needed for updating child so that it can request repaint. In this + // case the parent component that handles paging always requests complete + // repaint after page change so we can use a dummy context here. + let mut dummy_ctx = EventCtx::new(); + self.xpub_view + .update_title(&mut dummy_ctx, self.xpubs[i].0.clone()); + self.xpub_view.update_content(&mut dummy_ctx, |p| { + p.inner_mut().update(self.xpubs[i].1.clone()); + let npages = p.page_count(); + p.change_page(page); + npages + }) + } + + fn lookup(&self, scrollbar_page: usize) -> (usize, usize) { + let mut xpub_index = 0; + let mut xpub_page = scrollbar_page; + for page_count in self.xpub_page_count.iter().map(|pc| { + let upc: usize = (*pc).into(); + upc + }) { + if page_count <= xpub_page { + xpub_page -= page_count; + xpub_index += 1; + } else { + break; + } + } + (xpub_index, xpub_page) + } +} + +impl<T> Paginate for AddressDetails<T> +where + T: StringType + Clone, +{ + fn page_count(&mut self) -> usize { + let total_xpub_pages: u8 = self.xpub_page_count.iter().copied().sum(); + 2usize.saturating_add(total_xpub_pages.into()) + } + + fn change_page(&mut self, to_page: usize) { + self.current_page = to_page; + if to_page > 1 { + let i = to_page - 2; + let (xpub_index, xpub_page) = self.lookup(i); + self.switch_xpub(xpub_index, xpub_page); + } + } +} + +impl<T> Component for AddressDetails<T> +where + T: StringType + Clone, +{ + type Msg = (); + + fn place(&mut self, bounds: Rect) -> Rect { + self.qr_code.place(bounds); + self.details.place(bounds); + self.xpub_view.place(bounds); + + self.xpub_page_count.clear(); + for i in 0..self.xpubs.len() { + let npages = self.switch_xpub(i, 0) as u8; + unwrap!(self.xpub_page_count.push(npages)); + } + + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let msg = match self.current_page { + 0 => self.qr_code.event(ctx, event), + 1 => self.details.event(ctx, event), + _ => self.xpub_view.event(ctx, event), + }; + match msg { + Some(FrameMsg::Button(_)) => Some(()), + _ => None, + } + } + + fn paint(&mut self) { + match self.current_page { + 0 => self.qr_code.paint(), + 1 => self.details.paint(), + _ => self.xpub_view.paint(), + } + } + + fn render(&mut self, target: &mut impl Renderer) { + match self.current_page { + 0 => self.qr_code.render(target), + 1 => self.details.render(target), + _ => self.xpub_view.render(target), + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + match self.current_page { + 0 => self.qr_code.bounds(sink), + 1 => self.details.bounds(sink), + _ => self.xpub_view.bounds(sink), + } + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for AddressDetails<T> +where + T: StringType, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("AddressDetails"); + match self.current_page { + 0 => t.child("qr_code", &self.qr_code), + 1 => t.child("details", &self.details), + _ => t.child("xpub_view", &self.xpub_view), + } + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs new file mode 100644 index 0000000000..9b6b194947 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -0,0 +1,183 @@ +use core::mem; + +use crate::{ + error::Error, + maybe_trace::MaybeTrace, + micropython::buffer::StrBuffer, + translations::TR, + ui::{ + canvas::algo::PI4, + component::{ + base::Never, painter, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, + Split, + }, + constant, + display::loader::{loader_circular_uncompress, LoaderDimensions}, + geometry::{Insets, Offset, Rect}, + shape, + shape::Renderer, + util::animation_disabled, + }, +}; + +use super::{theme, Frame}; + +const RECTANGLE_HEIGHT: i16 = 56; +const LABEL_TOP: i16 = 135; +const LOADER_OUTER: i16 = 39; +const LOADER_INNER: i16 = 28; +const LOADER_OFFSET: i16 = -34; +const LOADER_SPEED: u16 = 5; + +pub struct CoinJoinProgress<T, U> { + value: u16, + indeterminate: bool, + content: Child<Frame<Split<Empty, U>, StrBuffer>>, + // Label is not a child since circular loader paints large black rectangle which overlaps it. + // To work around this, draw label every time loader is drawn. + label: Label<T>, +} + +impl<T, U> CoinJoinProgress<T, U> +where + T: AsRef<str>, +{ + pub fn new( + text: T, + indeterminate: bool, + ) -> Result<CoinJoinProgress<T, impl Component<Msg = Never> + MaybeTrace>, Error> + where + T: AsRef<str>, + { + let style = theme::label_coinjoin_progress(); + let label = Label::centered( + TryInto::<StrBuffer>::try_into(TR::coinjoin__title_do_not_disconnect)?, + style, + ) + .vertically_centered(); + let bg = painter::rect_painter(style.background_color, theme::BG); + let inner = (bg, label); + CoinJoinProgress::with_background(text, inner, indeterminate) + } +} + +impl<T, U> CoinJoinProgress<T, U> +where + T: AsRef<str>, + U: Component<Msg = Never>, +{ + pub fn with_background(text: T, inner: U, indeterminate: bool) -> Result<Self, Error> { + Ok(Self { + value: 0, + indeterminate, + content: Frame::centered( + theme::label_title(), + TR::coinjoin__title_progress.try_into()?, + Split::bottom(RECTANGLE_HEIGHT, 0, Empty, inner), + ) + .into_child(), + label: Label::centered(text, theme::TEXT_NORMAL), + }) + } +} + +impl<T, U> Component for CoinJoinProgress<T, U> +where + T: AsRef<str>, + U: Component<Msg = Never>, +{ + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.content.place(bounds); + let label_bounds = bounds.inset(Insets::top(LABEL_TOP)); + self.label.place(label_bounds); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.content.event(ctx, event); + self.label.event(ctx, event); + match event { + _ if animation_disabled() => { + return None; + } + Event::Attach if self.indeterminate => { + ctx.request_anim_frame(); + } + Event::Timer(EventCtx::ANIM_FRAME_TIMER) => { + self.value = (self.value + LOADER_SPEED) % 1000; + ctx.request_anim_frame(); + ctx.request_paint(); + } + Event::Progress(new_value, _new_description) => { + if mem::replace(&mut self.value, new_value) != new_value { + ctx.request_paint(); + } + } + _ => {} + } + None + } + + fn paint(&mut self) { + self.content.paint(); + loader_circular_uncompress( + LoaderDimensions::new(LOADER_OUTER, LOADER_INNER), + LOADER_OFFSET, + theme::FG, + theme::BG, + self.value, + self.indeterminate, + None, + ); + self.label.paint(); + } + + fn render(&mut self, target: &mut impl Renderer) { + self.content.render(target); + + let center = constant::screen().center() + Offset::y(LOADER_OFFSET); + let active_color = theme::FG; + let background_color = theme::BG; + let inactive_color = background_color.blend(active_color, 85); + + let start = (self.value - 100) % 1000; + let end = (self.value + 100) % 1000; + let start = ((start as i32 * 8 * PI4 as i32) / 1000) as i16; + let end = ((end as i32 * 8 * PI4 as i32) / 1000) as i16; + + shape::Circle::new(center, LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + shape::Circle::new(center, LOADER_OUTER) + .with_bg(active_color) + .with_start_angle(start) + .with_end_angle(end) + .render(target); + + shape::Circle::new(center, LOADER_INNER + 2) + .with_bg(active_color) + .render(target); + + shape::Circle::new(center, LOADER_INNER) + .with_bg(background_color) + .render(target); + + self.label.render(target); + } +} + +#[cfg(feature = "ui_debug")] +impl<T, U> crate::trace::Trace for CoinJoinProgress<T, U> +where + T: AsRef<str>, + U: Component + crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("CoinJoinProgress"); + t.child("label", &self.label); + t.child("content", &self.content); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs new file mode 100644 index 0000000000..6f7fda94b2 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -0,0 +1,233 @@ +use crate::{ + strutil::StringType, + ui::{ + component::{ + image::BlendedImage, + text::{ + paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, + TextStyle, + }, + Child, Component, Event, EventCtx, Never, + }, + geometry::{Insets, LinearPlacement, Rect}, + shape::Renderer, + }, +}; + +use super::theme; + +pub enum DialogMsg<T, U> { + Content(T), + Controls(U), +} + +pub struct Dialog<T, U> { + content: Child<T>, + controls: Child<U>, +} + +impl<T, U> Dialog<T, U> +where + T: Component, + U: Component, +{ + pub fn new(content: T, controls: U) -> Self { + Self { + content: Child::new(content), + controls: Child::new(controls), + } + } + + pub fn inner(&self) -> &T { + self.content.inner() + } +} + +impl<T, U> Component for Dialog<T, U> +where + T: Component, + U: Component, +{ + type Msg = DialogMsg<T::Msg, U::Msg>; + + fn place(&mut self, bounds: Rect) -> Rect { + let controls_area = self.controls.place(bounds); + let content_area = bounds + .inset(Insets::bottom(controls_area.height())) + .inset(Insets::bottom(theme::BUTTON_SPACING)) + .inset(Insets::left(theme::CONTENT_BORDER)); + self.content.place(content_area); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.content + .event(ctx, event) + .map(Self::Msg::Content) + .or_else(|| self.controls.event(ctx, event).map(Self::Msg::Controls)) + } + + fn paint(&mut self) { + self.content.paint(); + self.controls.paint(); + } + + fn render(&mut self, target: &mut impl Renderer) { + self.content.render(target); + self.controls.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.content.bounds(sink); + self.controls.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<T, U> crate::trace::Trace for Dialog<T, U> +where + T: crate::trace::Trace, + U: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Dialog"); + t.child("content", &self.content); + t.child("controls", &self.controls); + } +} + +pub struct IconDialog<T, U> { + image: Child<BlendedImage>, + paragraphs: Paragraphs<ParagraphVecShort<T>>, + controls: Child<U>, +} + +impl<T, U> IconDialog<T, U> +where + T: StringType, + U: Component, +{ + pub fn new(icon: BlendedImage, title: T, controls: U) -> Self { + Self { + image: Child::new(icon), + paragraphs: Paragraphs::new(ParagraphVecShort::from_iter([Paragraph::new( + &theme::TEXT_DEMIBOLD, + title, + ) + .centered()])) + .with_placement( + LinearPlacement::vertical() + .align_at_center() + .with_spacing(Self::VALUE_SPACE), + ), + controls: Child::new(controls), + } + } + + pub fn with_paragraph(mut self, para: Paragraph<T>) -> Self { + if !para.content().as_ref().is_empty() { + self.paragraphs.inner_mut().add(para); + } + self + } + + pub fn with_text(self, style: &'static TextStyle, text: T) -> Self { + self.with_paragraph(Paragraph::new(style, text).centered()) + } + + pub fn with_description(self, description: T) -> Self { + self.with_text(&theme::TEXT_NORMAL_OFF_WHITE, description) + } + + pub fn with_value(self, value: T) -> Self { + self.with_text(&theme::TEXT_MONO, value) + } + + pub fn new_shares(lines: [T; 4], controls: U) -> Self { + let [l0, l1, l2, l3] = lines; + Self { + image: Child::new(BlendedImage::new( + theme::IMAGE_BG_CIRCLE, + theme::IMAGE_FG_SUCCESS, + theme::SUCCESS_COLOR, + theme::FG, + theme::BG, + )), + paragraphs: ParagraphVecShort::from_iter([ + Paragraph::new(&theme::TEXT_NORMAL_OFF_WHITE, l0).centered(), + Paragraph::new(&theme::TEXT_DEMIBOLD, l1).centered(), + Paragraph::new(&theme::TEXT_NORMAL_OFF_WHITE, l2).centered(), + Paragraph::new(&theme::TEXT_DEMIBOLD, l3).centered(), + ]) + .into_paragraphs() + .with_placement(LinearPlacement::vertical().align_at_center()), + controls: Child::new(controls), + } + } + + pub const ICON_AREA_PADDING: i16 = 2; + pub const ICON_AREA_HEIGHT: i16 = 60; + pub const VALUE_SPACE: i16 = 5; +} + +impl<T, U> Component for IconDialog<T, U> +where + T: StringType, + U: Component, +{ + type Msg = DialogMsg<Never, U::Msg>; + + fn place(&mut self, bounds: Rect) -> Rect { + let bounds = bounds + .inset(theme::borders()) + .inset(Insets::top(Self::ICON_AREA_PADDING)); + + let controls_area = self.controls.place(bounds); + let content_area = bounds.inset(Insets::bottom(controls_area.height())); + + let (image_area, content_area) = content_area.split_top(Self::ICON_AREA_HEIGHT); + + self.image.place(image_area); + self.paragraphs.place(content_area); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.paragraphs.event(ctx, event); + self.controls.event(ctx, event).map(Self::Msg::Controls) + } + + fn paint(&mut self) { + self.image.paint(); + self.paragraphs.paint(); + self.controls.paint(); + } + + fn render(&mut self, target: &mut impl Renderer) { + self.image.render(target); + self.paragraphs.render(target); + self.controls.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.image.bounds(sink); + self.paragraphs.bounds(sink); + self.controls.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<T, U> crate::trace::Trace for IconDialog<T, U> +where + T: StringType, + U: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("IconDialog"); + t.child("image", &self.image); + t.child("content", &self.paragraphs); + t.child("controls", &self.controls); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs new file mode 100644 index 0000000000..0f9755ea2a --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -0,0 +1,246 @@ +use crate::ui::{ + component::{image::Image, Child, Component, Event, EventCtx, Label}, + display, + geometry::{Insets, Rect}, + model_mercury::component::{ + fido_icons::get_fido_icon_data, + swipe::{Swipe, SwipeDirection}, + theme, ScrollBar, + }, + shape, + shape::Renderer, +}; + +use super::CancelConfirmMsg; + +const ICON_HEIGHT: i16 = 70; +const SCROLLBAR_INSET_TOP: i16 = 5; +const SCROLLBAR_HEIGHT: i16 = 10; +const APP_NAME_PADDING: i16 = 12; +const APP_NAME_HEIGHT: i16 = 30; + +pub enum FidoMsg { + Confirmed(usize), + Cancelled, +} + +pub struct FidoConfirm<F: Fn(usize) -> T, T, U> { + page_swipe: Swipe, + app_name: Label<T>, + account_name: Label<T>, + icon: Child<Image>, + /// Function/closure that will return appropriate page on demand. + get_account: F, + scrollbar: ScrollBar, + fade: bool, + controls: U, +} + +impl<F, T, U> FidoConfirm<F, T, U> +where + F: Fn(usize) -> T, + T: AsRef<str> + From<&'static str>, + U: Component<Msg = CancelConfirmMsg>, +{ + pub fn new( + app_name: T, + get_account: F, + page_count: usize, + icon_name: Option<T>, + controls: U, + ) -> Self { + let icon_data = get_fido_icon_data(icon_name.as_ref()); + + // Preparing scrollbar and setting its page-count. + let mut scrollbar = ScrollBar::horizontal(); + scrollbar.set_count_and_active_page(page_count, 0); + + // Preparing swipe component and setting possible initial + // swipe directions according to number of pages. + let mut page_swipe = Swipe::horizontal(); + page_swipe.allow_right = scrollbar.has_previous_page(); + page_swipe.allow_left = scrollbar.has_next_page(); + + Self { + app_name: Label::centered(app_name, theme::TEXT_DEMIBOLD), + account_name: Label::centered("".into(), theme::TEXT_DEMIBOLD), + page_swipe, + icon: Child::new(Image::new(icon_data)), + get_account, + scrollbar, + fade: false, + controls, + } + } + + fn on_page_swipe(&mut self, ctx: &mut EventCtx, swipe: SwipeDirection) { + // Change the page number. + match swipe { + SwipeDirection::Left if self.scrollbar.has_next_page() => { + self.scrollbar.go_to_next_page(); + } + SwipeDirection::Right if self.scrollbar.has_previous_page() => { + self.scrollbar.go_to_previous_page(); + } + _ => {} // page did not change + }; + + // Disable swipes on the boundaries. Not allowing carousel effect. + self.page_swipe.allow_right = self.scrollbar.has_previous_page(); + self.page_swipe.allow_left = self.scrollbar.has_next_page(); + + // Redraw the page. + ctx.request_paint(); + + // Reset backlight to normal level on next paint. + self.fade = true; + } + + fn active_page(&self) -> usize { + self.scrollbar.active_page + } +} + +impl<F, T, U> Component for FidoConfirm<F, T, U> +where + F: Fn(usize) -> T, + T: AsRef<str> + From<&'static str>, + U: Component<Msg = CancelConfirmMsg>, +{ + type Msg = FidoMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.page_swipe.place(bounds); + + // Place the control buttons. + let controls_area = self.controls.place(bounds); + + // Get the image and content areas. + let content_area = bounds.inset(Insets::bottom(controls_area.height())); + let (image_area, content_area) = content_area.split_top(ICON_HEIGHT); + + // In case of showing a scrollbar, getting its area and placing it. + let remaining_area = if self.scrollbar.page_count > 1 { + let (scrollbar_area, remaining_area) = content_area + .inset(Insets::top(SCROLLBAR_INSET_TOP)) + .split_top(SCROLLBAR_HEIGHT); + self.scrollbar.place(scrollbar_area); + remaining_area + } else { + content_area + }; + + // Place the icon image. + self.icon.place(image_area); + + // Place the text labels. + let (app_name_area, account_name_area) = remaining_area + .inset(Insets::top(APP_NAME_PADDING)) + .split_top(APP_NAME_HEIGHT); + + self.app_name.place(app_name_area); + self.account_name.place(account_name_area); + + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Some(swipe) = self.page_swipe.event(ctx, event) { + // Swipe encountered, update the page. + self.on_page_swipe(ctx, swipe); + } + if let Some(msg) = self.controls.event(ctx, event) { + // Some button was clicked, send results. + match msg { + CancelConfirmMsg::Confirmed => return Some(FidoMsg::Confirmed(self.active_page())), + CancelConfirmMsg::Cancelled => return Some(FidoMsg::Cancelled), + } + } + None + } + + fn paint(&mut self) { + self.icon.paint(); + self.controls.paint(); + self.app_name.paint(); + + if self.scrollbar.page_count > 1 { + self.scrollbar.paint(); + } + + let current_account = (self.get_account)(self.active_page()); + + // Erasing the old text content before writing the new one. + let account_name_area = self.account_name.area(); + let real_area = account_name_area + .with_height(account_name_area.height() + self.account_name.font().text_baseline() + 1); + display::rect_fill(real_area, theme::BG); + + // Account name is optional. + // Showing it only if it differs from app name. + // (Dummy requests usually have some text as both app_name and account_name.) + if !current_account.as_ref().is_empty() + && current_account.as_ref() != self.app_name.text().as_ref() + { + self.account_name.set_text(current_account); + self.account_name.paint(); + } + + if self.fade { + self.fade = false; + // Note that this is blocking and takes some time. + display::fade_backlight(theme::BACKLIGHT_NORMAL); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + self.icon.render(target); + self.controls.render(target); + self.app_name.render(target); + + if self.scrollbar.page_count > 1 { + self.scrollbar.render(target); + } + + let current_account = (self.get_account)(self.active_page()); + + // Erasing the old text content before writing the new one. + let account_name_area = self.account_name.area(); + let real_area = account_name_area + .with_height(account_name_area.height() + self.account_name.font().text_baseline() + 1); + shape::Bar::new(real_area).with_bg(theme::BG).render(target); + + // Account name is optional. + // Showing it only if it differs from app name. + // (Dummy requests usually have some text as both app_name and account_name.) + if !current_account.as_ref().is_empty() + && current_account.as_ref() != self.app_name.text().as_ref() + { + self.account_name.set_text(current_account); + self.account_name.render(target); + } + + if self.fade { + self.fade = false; + // Note that this is blocking and takes some time. + display::fade_backlight(theme::BACKLIGHT_NORMAL); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.icon.bounds(sink); + self.app_name.bounds(sink); + self.account_name.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<F, T, U> crate::trace::Trace for FidoConfirm<F, T, U> +where + F: Fn(usize) -> T, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("FidoConfirm"); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs new file mode 100644 index 0000000000..5a3d675757 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs @@ -0,0 +1,80 @@ +//! generated from webauthn_icons.rs.mako +//! (by running `make templates` in `core`) +//! do not edit manually! + + +const ICON_APPLE: &[u8] = include_res!("model_mercury/res/fido/icon_apple.toif"); +const ICON_AWS: &[u8] = include_res!("model_mercury/res/fido/icon_aws.toif"); +const ICON_BINANCE: &[u8] = include_res!("model_mercury/res/fido/icon_binance.toif"); +const ICON_BITBUCKET: &[u8] = include_res!("model_mercury/res/fido/icon_bitbucket.toif"); +const ICON_BITFINEX: &[u8] = include_res!("model_mercury/res/fido/icon_bitfinex.toif"); +const ICON_BITWARDEN: &[u8] = include_res!("model_mercury/res/fido/icon_bitwarden.toif"); +const ICON_CLOUDFLARE: &[u8] = include_res!("model_mercury/res/fido/icon_cloudflare.toif"); +const ICON_COINBASE: &[u8] = include_res!("model_mercury/res/fido/icon_coinbase.toif"); +const ICON_DASHLANE: &[u8] = include_res!("model_mercury/res/fido/icon_dashlane.toif"); +const ICON_DROPBOX: &[u8] = include_res!("model_mercury/res/fido/icon_dropbox.toif"); +const ICON_DUO: &[u8] = include_res!("model_mercury/res/fido/icon_duo.toif"); +const ICON_FACEBOOK: &[u8] = include_res!("model_mercury/res/fido/icon_facebook.toif"); +const ICON_FASTMAIL: &[u8] = include_res!("model_mercury/res/fido/icon_fastmail.toif"); +const ICON_FEDORA: &[u8] = include_res!("model_mercury/res/fido/icon_fedora.toif"); +const ICON_GANDI: &[u8] = include_res!("model_mercury/res/fido/icon_gandi.toif"); +const ICON_GEMINI: &[u8] = include_res!("model_mercury/res/fido/icon_gemini.toif"); +const ICON_GITHUB: &[u8] = include_res!("model_mercury/res/fido/icon_github.toif"); +const ICON_GITLAB: &[u8] = include_res!("model_mercury/res/fido/icon_gitlab.toif"); +const ICON_GOOGLE: &[u8] = include_res!("model_mercury/res/fido/icon_google.toif"); +const ICON_INVITY: &[u8] = include_res!("model_mercury/res/fido/icon_invity.toif"); +const ICON_KEEPER: &[u8] = include_res!("model_mercury/res/fido/icon_keeper.toif"); +const ICON_KRAKEN: &[u8] = include_res!("model_mercury/res/fido/icon_kraken.toif"); +const ICON_LOGIN_GOV: &[u8] = include_res!("model_mercury/res/fido/icon_login.gov.toif"); +const ICON_MICROSOFT: &[u8] = include_res!("model_mercury/res/fido/icon_microsoft.toif"); +const ICON_MOJEID: &[u8] = include_res!("model_mercury/res/fido/icon_mojeid.toif"); +const ICON_NAMECHEAP: &[u8] = include_res!("model_mercury/res/fido/icon_namecheap.toif"); +const ICON_PROTON: &[u8] = include_res!("model_mercury/res/fido/icon_proton.toif"); +const ICON_SLUSHPOOL: &[u8] = include_res!("model_mercury/res/fido/icon_slushpool.toif"); +const ICON_STRIPE: &[u8] = include_res!("model_mercury/res/fido/icon_stripe.toif"); +const ICON_TUTANOTA: &[u8] = include_res!("model_mercury/res/fido/icon_tutanota.toif"); +/// Default icon when app does not have its own +const ICON_WEBAUTHN: &[u8] = include_res!("model_mercury/res/fido/icon_webauthn.toif"); + +/// Translates icon name into its data. +/// Returns default `ICON_WEBAUTHN` when the icon is not found or name not +/// supplied. +pub fn get_fido_icon_data<T: AsRef<str>>(icon_name: Option<T>) -> &'static [u8] { + if let Some(icon_name) = icon_name { + match icon_name.as_ref() { + "apple" => ICON_APPLE, + "aws" => ICON_AWS, + "binance" => ICON_BINANCE, + "bitbucket" => ICON_BITBUCKET, + "bitfinex" => ICON_BITFINEX, + "bitwarden" => ICON_BITWARDEN, + "cloudflare" => ICON_CLOUDFLARE, + "coinbase" => ICON_COINBASE, + "dashlane" => ICON_DASHLANE, + "dropbox" => ICON_DROPBOX, + "duo" => ICON_DUO, + "facebook" => ICON_FACEBOOK, + "fastmail" => ICON_FASTMAIL, + "fedora" => ICON_FEDORA, + "gandi" => ICON_GANDI, + "gemini" => ICON_GEMINI, + "github" => ICON_GITHUB, + "gitlab" => ICON_GITLAB, + "google" => ICON_GOOGLE, + "invity" => ICON_INVITY, + "keeper" => ICON_KEEPER, + "kraken" => ICON_KRAKEN, + "login.gov" => ICON_LOGIN_GOV, + "microsoft" => ICON_MICROSOFT, + "mojeid" => ICON_MOJEID, + "namecheap" => ICON_NAMECHEAP, + "proton" => ICON_PROTON, + "slushpool" => ICON_SLUSHPOOL, + "stripe" => ICON_STRIPE, + "tutanota" => ICON_TUTANOTA, + _ => ICON_WEBAUTHN, + } + } else { + ICON_WEBAUTHN + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako new file mode 100644 index 0000000000..068360df56 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako @@ -0,0 +1,35 @@ +//! generated from webauthn_icons.rs.mako +//! (by running `make templates` in `core`) +//! do not edit manually! + +<% +icons: list[tuple[str, str]] = [] +for app in fido: + if app.icon is not None: + # Variable names cannot have a dot in themselves + icon_name = app.key + var_name = icon_name.replace(".", "_").upper() + icons.append((icon_name, var_name)) +%>\ + +% for icon_name, var_name in icons: +const ICON_${var_name}: &[u8] = include_res!("model_mercury/res/fido/icon_${icon_name}.toif"); +% endfor +/// Default icon when app does not have its own +const ICON_WEBAUTHN: &[u8] = include_res!("model_mercury/res/fido/icon_webauthn.toif"); + +/// Translates icon name into its data. +/// Returns default `ICON_WEBAUTHN` when the icon is not found or name not +/// supplied. +pub fn get_fido_icon_data<T: AsRef<str>>(icon_name: Option<T>) -> &'static [u8] { + if let Some(icon_name) = icon_name { + match icon_name.as_ref() { +% for icon_name, var_name in icons: + "${icon_name}" => ICON_${var_name}, +% endfor + _ => ICON_WEBAUTHN, + } + } else { + ICON_WEBAUTHN + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs new file mode 100644 index 0000000000..51b9947cba --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -0,0 +1,598 @@ +mod render; + +use crate::{ + micropython::gc::Gc, + strutil::TString, + time::{Duration, Instant}, + translations::TR, + trezorhal::usb::usb_configured, + ui::{ + component::{Component, Event, EventCtx, Pad, TimerToken}, + display::{self, tjpgd::jpeg_info, toif::Icon, Color, Font}, + event::{TouchEvent, USBEvent}, + geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, + layout::util::get_user_custom_image, + model_mercury::{constant, theme::IMAGE_HOMESCREEN}, + shape::{self, Renderer}, + }, +}; + +use crate::{ + trezorhal::{buffers::BufferJpegWork, uzlib::UZLIB_WINDOW_SIZE}, + ui::{ + constant::HEIGHT, + display::{ + tjpgd::{jpeg_test, BufferInput}, + toif::{Toif, ToifFormat}, + }, + model_mercury::component::homescreen::render::{ + HomescreenJpeg, HomescreenToif, HOMESCREEN_TOIF_SIZE, + }, + }, +}; +use render::{ + homescreen, homescreen_blurred, HomescreenNotification, HomescreenText, + HOMESCREEN_IMAGE_HEIGHT, HOMESCREEN_IMAGE_WIDTH, +}; + +use super::{theme, Loader, LoaderMsg}; + +const AREA: Rect = constant::screen(); +const TOP_CENTER: Point = AREA.top_center(); +const LABEL_Y: i16 = HEIGHT - 18; +const LOCKED_Y: i16 = HEIGHT / 2 - 13; +const TAP_Y: i16 = HEIGHT / 2 + 14; +const HOLD_Y: i16 = 200; +const COINJOIN_Y: i16 = 30; +const LOADER_OFFSET: Offset = Offset::y(-10); +const LOADER_DELAY: Duration = Duration::from_millis(500); +const LOADER_DURATION: Duration = Duration::from_millis(2000); + +pub struct Homescreen { + label: TString<'static>, + notification: Option<(TString<'static>, u8)>, + custom_image: Option<Gc<[u8]>>, + hold_to_lock: bool, + loader: Loader, + pad: Pad, + paint_notification_only: bool, + delay: Option<TimerToken>, +} + +pub enum HomescreenMsg { + Dismissed, +} + +impl Homescreen { + pub fn new( + label: TString<'static>, + notification: Option<(TString<'static>, u8)>, + hold_to_lock: bool, + ) -> Self { + Self { + label, + notification, + custom_image: get_user_custom_image().ok(), + hold_to_lock, + loader: Loader::with_lock_icon().with_durations(LOADER_DURATION, LOADER_DURATION / 3), + pad: Pad::with_background(theme::BG), + paint_notification_only: false, + delay: None, + } + } + + fn level_to_style(level: u8) -> (Color, Icon) { + match level { + 3 => (theme::YELLOW, theme::ICON_COINJOIN), + 2 => (theme::VIOLET, theme::ICON_MAGIC), + 1 => (theme::YELLOW, theme::ICON_WARN), + _ => (theme::RED, theme::ICON_WARN), + } + } + + fn get_notification(&self) -> Option<HomescreenNotification> { + if !usb_configured() { + let (color, icon) = Self::level_to_style(0); + Some(HomescreenNotification { + text: TR::homescreen__title_no_usb_connection.into(), + icon, + color, + }) + } else if let Some((notification, level)) = self.notification { + let (color, icon) = Self::level_to_style(level); + Some(HomescreenNotification { + text: notification, + icon, + color, + }) + } else { + None + } + } + + fn paint_loader(&mut self) { + TR::progress__locking_device.map_translated(|t| { + display::text_center( + TOP_CENTER + Offset::y(HOLD_Y), + t, + Font::NORMAL, + theme::FG, + theme::BG, + ) + }); + self.loader.paint() + } + + fn render_loader(&mut self, target: &mut impl Renderer) { + TR::progress__locking_device.map_translated(|t| { + shape::Text::new(TOP_CENTER + Offset::y(HOLD_Y), t) + .with_align(Alignment::Center) + .with_font(Font::NORMAL) + .with_fg(theme::FG); + }); + self.loader.render(target) + } + + pub fn set_paint_notification(&mut self) { + self.paint_notification_only = true; + } + + fn event_usb(&mut self, ctx: &mut EventCtx, event: Event) { + if let Event::USB(USBEvent::Connected(_)) = event { + self.paint_notification_only = true; + ctx.request_paint(); + } + } + + fn event_hold(&mut self, ctx: &mut EventCtx, event: Event) -> bool { + match event { + Event::Touch(TouchEvent::TouchStart(_)) => { + if self.loader.is_animating() { + self.loader.start_growing(ctx, Instant::now()); + } else { + self.delay = Some(ctx.request_timer(LOADER_DELAY)); + } + } + Event::Touch(TouchEvent::TouchEnd(_)) => { + self.delay = None; + let now = Instant::now(); + if self.loader.is_completely_grown(now) { + return true; + } + if self.loader.is_animating() { + self.loader.start_shrinking(ctx, now); + } + } + Event::Timer(token) if Some(token) == self.delay => { + self.delay = None; + self.pad.clear(); + self.paint_notification_only = false; + self.loader.start_growing(ctx, Instant::now()); + } + _ => {} + } + + match self.loader.event(ctx, event) { + Some(LoaderMsg::GrownCompletely) => { + // Wait for TouchEnd before returning. + } + Some(LoaderMsg::ShrunkCompletely) => { + self.loader.reset(); + self.pad.clear(); + self.paint_notification_only = false; + ctx.request_paint() + } + None => {} + } + + false + } +} + +impl Component for Homescreen { + type Msg = HomescreenMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.pad.place(AREA); + self.loader.place(AREA.translate(LOADER_OFFSET)); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + Self::event_usb(self, ctx, event); + if self.hold_to_lock { + Self::event_hold(self, ctx, event).then_some(HomescreenMsg::Dismissed) + } else { + None + } + } + + fn paint(&mut self) { + self.pad.paint(); + if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { + self.paint_loader(); + } else { + let mut label_style = theme::TEXT_DEMIBOLD; + label_style.text_color = theme::FG; + + let text = HomescreenText { + text: self.label, + style: label_style, + offset: Offset::y(LABEL_Y), + icon: None, + }; + + let notification = self.get_notification(); + + let mut show_default = true; + + if let Some(ref data) = self.custom_image { + if is_image_jpeg(data.as_ref()) { + let input = BufferInput(data.as_ref()); + let mut pool = BufferJpegWork::get_cleared(); + let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); + homescreen( + &mut hs_img, + &[text], + notification, + self.paint_notification_only, + ); + show_default = false; + } else if is_image_toif(data.as_ref()) { + let input = unwrap!(Toif::new(data.as_ref())); + let mut window = [0; UZLIB_WINDOW_SIZE]; + let mut hs_img = + HomescreenToif::new(input.decompression_context(Some(&mut window))); + homescreen( + &mut hs_img, + &[text], + notification, + self.paint_notification_only, + ); + show_default = false; + } + } + + if show_default { + let input = BufferInput(IMAGE_HOMESCREEN); + let mut pool = BufferJpegWork::get_cleared(); + let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); + homescreen( + &mut hs_img, + &[text], + notification, + self.paint_notification_only, + ); + } + } + } + + fn render(&mut self, target: &mut impl Renderer) { + self.pad.render(target); + if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { + self.render_loader(target); + } else { + let img_data = match self.custom_image { + Some(ref img) => IMAGE_HOMESCREEN, //img.as_ref(), !@# solve lifetime problem + None => IMAGE_HOMESCREEN, + }; + + if is_image_jpeg(img_data) { + shape::JpegImage::new(self.pad.area.center(), img_data) + .with_align(Alignment2D::CENTER) + .render(target); + } else if is_image_toif(img_data) { + shape::ToifImage::new(self.pad.area.center(), unwrap!(Toif::new(img_data))) + .with_align(Alignment2D::CENTER) + .render(target); + } + + self.label.map(|t| { + let style = theme::TEXT_DEMIBOLD; + let pos = Point::new(self.pad.area.center().x, LABEL_Y); + shape::Text::new(pos, t) + .with_align(Alignment::Center) + .with_font(style.text_font) + .with_fg(theme::FG) + .render(target); + }); + + if let Some(notif) = self.get_notification() { + const NOTIFICATION_HEIGHT: i16 = 36; + const NOTIFICATION_BORDER: i16 = 6; + const TEXT_ICON_SPACE: i16 = 8; + + let banner = self + .pad + .area + .inset(Insets::sides(NOTIFICATION_BORDER)) + .with_height(NOTIFICATION_HEIGHT) + .translate(Offset::y(NOTIFICATION_BORDER)); + + shape::Bar::new(banner) + .with_radius(2) + .with_bg(notif.color) + .render(target); + + notif.text.map(|t| { + let style = theme::TEXT_BOLD; + let icon_width = notif.icon.toif.width() + TEXT_ICON_SPACE; + let text_pos = Point::new( + style + .text_font + .horz_center(banner.x0 + icon_width, banner.x1, t), + style.text_font.vert_center(banner.y0, banner.y1, "A"), + ); + + shape::Text::new(text_pos, t) + .with_font(style.text_font) + .with_fg(style.text_color) + .render(target); + + let icon_pos = Point::new(text_pos.x - icon_width, banner.center().y); + + shape::ToifImage::new(icon_pos, notif.icon.toif) + .with_fg(style.text_color) + .with_align(Alignment2D::CENTER_LEFT) + .render(target); + }); + } + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.loader.bounds(sink); + sink(self.pad.area); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Homescreen { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Homescreen"); + t.string("label", self.label); + } +} + +pub struct Lockscreen { + label: TString<'static>, + custom_image: Option<Gc<[u8]>>, + bootscreen: bool, + coinjoin_authorized: bool, +} + +impl Lockscreen { + pub fn new(label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool) -> Self { + Lockscreen { + label, + custom_image: get_user_custom_image().ok(), + bootscreen, + coinjoin_authorized, + } + } +} + +impl Component for Lockscreen { + type Msg = HomescreenMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + bounds + } + + fn event(&mut self, _ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Event::Touch(TouchEvent::TouchEnd(_)) = event { + return Some(HomescreenMsg::Dismissed); + } + None + } + + fn paint(&mut self) { + let (locked, tap) = if self.bootscreen { + ( + TR::lockscreen__title_not_connected, + TR::lockscreen__tap_to_connect, + ) + } else { + (TR::lockscreen__title_locked, TR::lockscreen__tap_to_unlock) + }; + + let mut label_style = theme::TEXT_DEMIBOLD; + label_style.text_color = theme::GREY_LIGHT; + + let mut texts: &[HomescreenText] = &[ + HomescreenText { + text: "".into(), + style: theme::TEXT_NORMAL, + offset: Offset::new(2, COINJOIN_Y), + icon: Some(theme::ICON_COINJOIN), + }, + HomescreenText { + text: locked.into(), + style: theme::TEXT_BOLD, + offset: Offset::y(LOCKED_Y), + icon: Some(theme::ICON_LOCK), + }, + HomescreenText { + text: tap.into(), + style: theme::TEXT_NORMAL, + offset: Offset::y(TAP_Y), + icon: None, + }, + HomescreenText { + text: self.label, + style: label_style, + offset: Offset::y(LABEL_Y), + icon: None, + }, + ]; + + if !self.coinjoin_authorized { + texts = &texts[1..]; + } + + let mut show_default = true; + + if let Some(ref data) = self.custom_image { + if is_image_jpeg(data.as_ref()) { + let input = BufferInput(data.as_ref()); + let mut pool = BufferJpegWork::get_cleared(); + let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); + homescreen_blurred(&mut hs_img, texts); + show_default = false; + } else if is_image_toif(data.as_ref()) { + let input = unwrap!(Toif::new(data.as_ref())); + let mut window = [0; UZLIB_WINDOW_SIZE]; + let mut hs_img = + HomescreenToif::new(input.decompression_context(Some(&mut window))); + homescreen_blurred(&mut hs_img, texts); + show_default = false; + } + } + + if show_default { + let input = BufferInput(IMAGE_HOMESCREEN); + let mut pool = BufferJpegWork::get_cleared(); + let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); + homescreen_blurred(&mut hs_img, texts); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + let img_data = match self.custom_image { + Some(ref img) => IMAGE_HOMESCREEN, //img.as_ref(), !@# solve lifetime problem + None => IMAGE_HOMESCREEN, + }; + + let center = constant::screen().center(); + + if is_image_jpeg(img_data) { + shape::JpegImage::new(center, img_data) + .with_align(Alignment2D::CENTER) + .with_blur(4) + .with_dim(130) + .render(target); + } else if is_image_toif(img_data) { + shape::ToifImage::new(center, unwrap!(Toif::new(img_data))) + .with_align(Alignment2D::CENTER) + //.with_blur(5) + .render(target); + } + + let (locked, tap) = if self.bootscreen { + ( + TR::lockscreen__title_not_connected, + TR::lockscreen__tap_to_connect, + ) + } else { + (TR::lockscreen__title_locked, TR::lockscreen__tap_to_unlock) + }; + + let mut label_style = theme::TEXT_DEMIBOLD; + label_style.text_color = theme::GREY_LIGHT; + + let mut texts: &[HomescreenText] = &[ + HomescreenText { + text: "".into(), + style: theme::TEXT_NORMAL, + offset: Offset::new(2, COINJOIN_Y), + icon: Some(theme::ICON_COINJOIN), + }, + HomescreenText { + text: locked.into(), + style: theme::TEXT_BOLD, + offset: Offset::y(LOCKED_Y), + icon: Some(theme::ICON_LOCK), + }, + HomescreenText { + text: tap.into(), + style: theme::TEXT_NORMAL, + offset: Offset::y(TAP_Y), + icon: None, + }, + HomescreenText { + text: self.label, + style: label_style, + offset: Offset::y(LABEL_Y), + icon: None, + }, + ]; + + if !self.coinjoin_authorized { + texts = &texts[1..]; + } + + for item in texts.iter() { + item.text.map(|t| { + const TEXT_ICON_SPACE: i16 = 2; + + let icon_width = match item.icon { + Some(icon) => icon.toif.width() + TEXT_ICON_SPACE, + None => 0, + }; + + let area = constant::screen(); + + let text_pos = Point::new( + item.style + .text_font + .horz_center(area.x0 + icon_width, area.x1, t), + 0, + ) + item.offset; + + shape::Text::new(text_pos, t) + .with_font(item.style.text_font) + .with_fg(item.style.text_color) + .render(target); + + if let Some(icon) = item.icon { + let icon_pos = Point::new(text_pos.x - icon_width, text_pos.y); + shape::ToifImage::new(icon_pos, icon.toif) + .with_align(Alignment2D::BOTTOM_LEFT) + .with_fg(item.style.text_color) + .render(target); + } + }); + } + } +} + +pub fn check_homescreen_format(buffer: &[u8]) -> bool { + #[cfg(not(feature = "new_rendering"))] + let result = is_image_jpeg(buffer) && jpeg_test(buffer); + #[cfg(feature = "new_rendering")] + let result = is_image_jpeg(buffer); // !@# TODO: test like if `new_rendering` is off + + result +} + +fn is_image_jpeg(buffer: &[u8]) -> bool { + let jpeg = jpeg_info(buffer); + if let Some((size, mcu_height)) = jpeg { + if size.x == HOMESCREEN_IMAGE_WIDTH && size.y == HOMESCREEN_IMAGE_HEIGHT && mcu_height <= 16 + { + return true; + } + } + false +} + +fn is_image_toif(buffer: &[u8]) -> bool { + let toif = Toif::new(buffer); + if let Ok(toif) = toif { + if toif.size().x == HOMESCREEN_TOIF_SIZE + && toif.size().y == HOMESCREEN_TOIF_SIZE + && toif.format() == ToifFormat::FullColorBE + { + return true; + } + } + false +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Lockscreen { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Lockscreen"); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs new file mode 100644 index 0000000000..9480b4c15f --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs @@ -0,0 +1,768 @@ +use crate::{ + strutil::TString, + trezorhal::{ + buffers::{ + BufferBlurring, BufferBlurringTotals, BufferJpeg, BufferLine16bpp, BufferLine4bpp, + BufferText, + }, + display, + dma2d::{dma2d_setup_4bpp_over_16bpp, dma2d_start_blend, dma2d_wait_for_transfer}, + uzlib::UzlibContext, + }, + ui::{ + component::text::TextStyle, + constant::{screen, HEIGHT, WIDTH}, + display::{ + position_buffer, rect_fill_rounded_buffer, set_window, + tjpgd::{BufferInput, BufferOutput, JDEC}, + Color, Icon, + }, + geometry::{Offset, Point, Rect}, + model_mercury::theme, + util::icon_text_center, + }, +}; + +#[derive(Clone, Copy)] +pub struct HomescreenText<'a> { + pub text: TString<'a>, + pub style: TextStyle, + pub offset: Offset, + pub icon: Option<Icon>, +} + +#[derive(Clone, Copy)] +pub struct HomescreenNotification { + pub text: TString<'static>, + pub icon: Icon, + pub color: Color, +} + +#[derive(Clone, Copy)] +struct HomescreenTextInfo { + pub text_area: Rect, + pub text_width: i16, + pub text_color: Color, + pub icon_area: Option<Rect>, +} + +pub const HOMESCREEN_IMAGE_WIDTH: i16 = WIDTH; +pub const HOMESCREEN_IMAGE_HEIGHT: i16 = HEIGHT; +pub const HOMESCREEN_TOIF_SIZE: i16 = 144; +pub const HOMESCREEN_TOIF_Y_OFFSET: i16 = 27; +pub const HOMESCREEN_TOIF_X_OFFSET: usize = + ((WIDTH.saturating_sub(HOMESCREEN_TOIF_SIZE)) / 2) as usize; + +const HOMESCREEN_MAX_ICON_SIZE: i16 = 20; +const NOTIFICATION_HEIGHT: i16 = 36; +const NOTIFICATION_BORDER: i16 = 6; +const TEXT_ICON_SPACE: i16 = 2; + +const HOMESCREEN_DIM_HEIGHT: i16 = 35; +const HOMESCREEN_DIM_START: i16 = HOMESCREEN_IMAGE_HEIGHT - 42; +const HOMESCREEN_DIM: f32 = 0.65; +const HOMESCREEN_DIM_BORDER: i16 = theme::BUTTON_SPACING; + +const LOCKSCREEN_DIM: f32 = 0.55; +const LOCKSCREEN_DIM_BG: f32 = 0.0; +const LOCKSCREEN_DIM_ALL: bool = true; + +const BLUR_SIZE: usize = 9; +const BLUR_DIV: u32 = + ((65536_f32 * (1_f32 - LOCKSCREEN_DIM_BG)) as u32) / ((BLUR_SIZE * BLUR_SIZE) as u32); +const DECOMP_LINES: usize = BLUR_SIZE + 1; +const BLUR_RADIUS: i16 = (BLUR_SIZE / 2) as i16; + +const COLORS: usize = 3; +const RED_IDX: usize = 0; +const GREEN_IDX: usize = 1; +const BLUE_IDX: usize = 2; + +pub trait HomescreenDecompressor { + fn get_height(&self) -> i16; + fn decompress(&mut self); + fn get_data(&mut self) -> &mut BufferJpeg; +} + +pub struct HomescreenJpeg<'i> { + pub output: BufferOutput, + pub input: BufferInput<'i>, + pub jdec: Option<JDEC<'i>>, +} + +impl<'i> HomescreenJpeg<'i> { + pub fn new(mut input: BufferInput<'i>, pool: &'i mut [u8]) -> Self { + Self { + output: BufferOutput::new(WIDTH, 16), + jdec: JDEC::new(&mut input, pool).ok(), + input, + } + } +} + +impl<'i> HomescreenDecompressor for HomescreenJpeg<'i> { + fn get_height(&self) -> i16 { + if let Some(dec) = self.jdec.as_ref() { + return dec.mcu_height(); + } + 1 + } + + fn decompress(&mut self) { + self.jdec + .as_mut() + .map(|dec| dec.decomp(&mut self.input, &mut self.output)); + } + + fn get_data(&mut self) -> &mut BufferJpeg { + self.output.buffer() + } +} + +pub struct HomescreenToif<'i> { + pub output: BufferOutput, + pub decomp_context: UzlibContext<'i>, + line: i16, +} + +impl<'i> HomescreenToif<'i> { + pub fn new(context: UzlibContext<'i>) -> Self { + Self { + output: BufferOutput::new(WIDTH, 16), + decomp_context: context, + line: 0, + } + } +} + +impl<'i> HomescreenDecompressor for HomescreenToif<'i> { + fn get_height(&self) -> i16 { + 1 + } + + fn decompress(&mut self) { + // SAFETY: Aligning to u8 slice is safe, because the original slice is aligned + // to 16 bits, therefore there are also no residuals (prefix/suffix). + // The data in the slices are integers, so these are valid for both u16 + // and u8. + if self.line >= HOMESCREEN_TOIF_Y_OFFSET + && self.line < HOMESCREEN_TOIF_Y_OFFSET + HOMESCREEN_TOIF_SIZE + { + let (_, workbuf, _) = unsafe { self.output.buffer().buffer.align_to_mut::<u8>() }; + let result = self.decomp_context.uncompress( + &mut workbuf[2 * HOMESCREEN_TOIF_X_OFFSET + ..2 * HOMESCREEN_TOIF_X_OFFSET + 2 * HOMESCREEN_TOIF_SIZE as usize], + ); + + if result.is_err() { + self.output.buffer().buffer.fill(0); + } else { + for i in 0..HOMESCREEN_TOIF_SIZE as usize { + workbuf.swap( + 2 * HOMESCREEN_TOIF_X_OFFSET + 2 * i, + 2 * HOMESCREEN_TOIF_X_OFFSET + 2 * i + 1, + ); + } + } + } else { + self.output.buffer().buffer.fill(0); + } + self.line += 1; + } + + fn get_data(&mut self) -> &mut BufferJpeg { + self.output.buffer() + } +} + +fn homescreen_get_fg_text( + y_tmp: i16, + text_info: HomescreenTextInfo, + text_buffer: &BufferText, + fg_buffer: &mut BufferLine4bpp, +) -> bool { + if y_tmp >= text_info.text_area.y0 && y_tmp < text_info.text_area.y1 { + let y_pos = y_tmp - text_info.text_area.y0; + position_buffer( + &mut fg_buffer.buffer, + &text_buffer.buffer[(y_pos * WIDTH / 2) as usize..((y_pos + 1) * WIDTH / 2) as usize], + 4, + text_info.text_area.x0, + text_info.text_width, + ); + } + + y_tmp == (text_info.text_area.y1 - 1) +} + +fn homescreen_get_fg_icon( + y_tmp: i16, + text_info: HomescreenTextInfo, + icon_data: &[u8], + fg_buffer: &mut BufferLine4bpp, +) { + if let Some(icon_area) = text_info.icon_area { + let icon_size = icon_area.size(); + if y_tmp >= icon_area.y0 && y_tmp < icon_area.y1 { + let y_pos = y_tmp - icon_area.y0; + position_buffer( + &mut fg_buffer.buffer, + &icon_data + [(y_pos * icon_size.x / 2) as usize..((y_pos + 1) * icon_size.x / 2) as usize], + 4, + icon_area.x0, + icon_size.x, + ); + } + } +} + +fn homescreen_position_text( + text: &HomescreenText, + buffer: &mut BufferText, + icon_buffer: &mut [u8], +) -> HomescreenTextInfo { + let text_width = text + .text + .map(|t| display::text_width(t, text.style.text_font.into())); + let font_max_height = display::text_max_height(text.style.text_font.into()); + let font_baseline = display::text_baseline(text.style.text_font.into()); + let text_width_clamped = text_width.clamp(0, screen().width()); + + let icon_size = if let Some(icon) = text.icon { + let size = icon.toif.size(); + assert!(size.x <= HOMESCREEN_MAX_ICON_SIZE); + assert!(size.y <= HOMESCREEN_MAX_ICON_SIZE); + icon.toif.uncompress(icon_buffer); + size + } else { + Offset::zero() + }; + + let text_top = screen().y0 + text.offset.y - font_max_height + font_baseline; + let text_bottom = screen().y0 + text.offset.y + font_baseline; + + let total_width = text_width_clamped + icon_size.x + TEXT_ICON_SPACE; + let icon_left = screen().center().x + text.offset.x - total_width / 2; + let text_left = icon_left + icon_size.x + TEXT_ICON_SPACE; + let text_right = screen().center().x + text.offset.x + total_width / 2; + + let text_area = Rect::new( + Point::new(text_left, text_top), + Point::new(text_right, text_bottom), + ); + + let icon_area = if text.icon.is_some() { + Some(Rect::from_top_left_and_size( + Point::new(icon_left, text_bottom - icon_size.y - font_baseline), + icon_size, + )) + } else { + None + }; + + text.text + .map(|t| display::text_into_buffer(t, text.style.text_font.into(), buffer, 0)); + + HomescreenTextInfo { + text_area, + text_width, + text_color: text.style.text_color, + icon_area, + } +} + +#[inline(always)] +fn homescreen_dim_area(x: i16, y: i16) -> bool { + y >= HOMESCREEN_DIM_START + && (y > HOMESCREEN_DIM_START + 1 + && y < (HOMESCREEN_DIM_START + HOMESCREEN_DIM_HEIGHT - 1) + && x > HOMESCREEN_DIM_BORDER + && x < WIDTH - HOMESCREEN_DIM_BORDER) + || (y > HOMESCREEN_DIM_START + && y < (HOMESCREEN_DIM_START + HOMESCREEN_DIM_HEIGHT) + && x > HOMESCREEN_DIM_BORDER + 1 + && x < WIDTH - (HOMESCREEN_DIM_BORDER + 1)) + || ((HOMESCREEN_DIM_START..=(HOMESCREEN_DIM_START + HOMESCREEN_DIM_HEIGHT)).contains(&y) + && x > HOMESCREEN_DIM_BORDER + 2 + && x < WIDTH - (HOMESCREEN_DIM_BORDER + 2)) +} + +fn homescreen_line_blurred( + icon_data: &[u8], + text_buffer: &mut BufferText, + fg_buffer: &mut BufferLine4bpp, + img_buffer: &mut BufferLine16bpp, + text_info: HomescreenTextInfo, + blurring: &BlurringContext, + y: i16, +) -> bool { + fg_buffer.buffer.fill(0); + for x in 0..HOMESCREEN_IMAGE_WIDTH { + let c = if LOCKSCREEN_DIM_ALL { + let x = x as usize; + + let coef = (65536_f32 * LOCKSCREEN_DIM) as u32; + + let r = (blurring.totals.buffer[RED_IDX][x] as u32 * BLUR_DIV) >> 16; + let g = (blurring.totals.buffer[GREEN_IDX][x] as u32 * BLUR_DIV) >> 16; + let b = (blurring.totals.buffer[BLUE_IDX][x] as u32 * BLUR_DIV) >> 16; + + let r = (((coef * r) >> 8) & 0xF800) as u16; + let g = (((coef * g) >> 13) & 0x07E0) as u16; + let b = (((coef * b) >> 19) & 0x001F) as u16; + + r | g | b + } else { + let x = x as usize; + + let r = (((blurring.totals.buffer[RED_IDX][x] as u32 * BLUR_DIV) >> 8) & 0xF800) as u16; + let g = + (((blurring.totals.buffer[GREEN_IDX][x] as u32 * BLUR_DIV) >> 13) & 0x07E0) as u16; + let b = + (((blurring.totals.buffer[BLUE_IDX][x] as u32 * BLUR_DIV) >> 19) & 0x001F) as u16; + r | g | b + }; + + let j = (2 * x) as usize; + img_buffer.buffer[j + 1] = (c >> 8) as u8; + img_buffer.buffer[j] = (c & 0xFF) as u8; + } + + let done = homescreen_get_fg_text(y, text_info, text_buffer, fg_buffer); + homescreen_get_fg_icon(y, text_info, icon_data, fg_buffer); + + dma2d_wait_for_transfer(); + dma2d_setup_4bpp_over_16bpp(text_info.text_color.into()); + unsafe { + dma2d_start_blend(&fg_buffer.buffer, &img_buffer.buffer, WIDTH); + } + + done +} + +#[allow(clippy::too_many_arguments)] +fn homescreen_line( + icon_data: &[u8], + text_buffer: &mut BufferText, + text_info: HomescreenTextInfo, + data_buffer: &mut BufferJpeg, + fg_buffer: &mut BufferLine4bpp, + img_buffer: &mut BufferLine16bpp, + mcu_height: i16, + y: i16, +) -> bool { + let image_data = get_data(data_buffer, y, mcu_height); + fg_buffer.buffer.fill(0); + + for x in 0..HOMESCREEN_IMAGE_WIDTH { + let d = image_data[x as usize]; + + let c = if homescreen_dim_area(x, y) { + let coef = (65536_f32 * HOMESCREEN_DIM) as u32; + + let r = (d & 0xF800) >> 8; + let g = (d & 0x07E0) >> 3; + let b = (d & 0x001F) << 3; + + let r = (((coef * r as u32) >> 8) & 0xF800) as u16; + let g = (((coef * g as u32) >> 13) & 0x07E0) as u16; + let b = (((coef * b as u32) >> 19) & 0x001F) as u16; + r | g | b + } else { + d + }; + + let j = 2 * x as usize; + img_buffer.buffer[j + 1] = (c >> 8) as u8; + img_buffer.buffer[j] = (c & 0xFF) as u8; + } + + let done = homescreen_get_fg_text(y, text_info, text_buffer, fg_buffer); + homescreen_get_fg_icon(y, text_info, icon_data, fg_buffer); + + dma2d_wait_for_transfer(); + dma2d_setup_4bpp_over_16bpp(text_info.text_color.into()); + unsafe { + dma2d_start_blend(&fg_buffer.buffer, &img_buffer.buffer, WIDTH); + } + + done +} + +fn homescreen_next_text( + texts: &[HomescreenText], + text_buffer: &mut BufferText, + icon_data: &mut [u8], + text_info: HomescreenTextInfo, + text_idx: usize, +) -> (HomescreenTextInfo, usize) { + let mut next_text_idx = text_idx; + let mut next_text_info = text_info; + + if next_text_idx < texts.len() { + if let Some(txt) = texts.get(next_text_idx) { + text_buffer.buffer.fill(0); + next_text_info = homescreen_position_text(txt, text_buffer, icon_data); + next_text_idx += 1; + } + } + + (next_text_info, next_text_idx) +} + +#[inline(always)] +fn update_accs_add(data: &[u16], idx: usize, acc_r: &mut u16, acc_g: &mut u16, acc_b: &mut u16) { + let d = data[idx]; + let r = (d & 0xF800) >> 8; + let g = (d & 0x07E0) >> 3; + let b = (d & 0x001F) << 3; + *acc_r += r; + *acc_g += g; + *acc_b += b; +} + +#[inline(always)] +fn update_accs_sub(data: &[u16], idx: usize, acc_r: &mut u16, acc_g: &mut u16, acc_b: &mut u16) { + let d = data[idx]; + let r = (d & 0xF800) >> 8; + let g = (d & 0x07E0) >> 3; + let b = (d & 0x001F) << 3; + *acc_r -= r; + *acc_g -= g; + *acc_b -= b; +} + +struct BlurringContext { + mem: BufferBlurring, + pub totals: BufferBlurringTotals, + line_num: i16, + add_idx: usize, + rem_idx: usize, +} + +impl BlurringContext { + pub fn new() -> Self { + Self { + mem: BufferBlurring::get_cleared(), + totals: BufferBlurringTotals::get_cleared(), + line_num: 0, + add_idx: 0, + rem_idx: 0, + } + } + + fn clear(&mut self) { + let lines = &mut self.mem.buffer[0..DECOMP_LINES]; + for (i, total) in self.totals.buffer.iter_mut().enumerate() { + for line in lines.iter_mut() { + line[i].fill(0); + } + total.fill(0); + } + } + + // computes color averages for one line of image data + fn compute_line_avgs(&mut self, buffer: &mut BufferJpeg, mcu_height: i16) { + let lines = &mut self.mem.buffer[0..DECOMP_LINES]; + let mut acc_r = 0; + let mut acc_g = 0; + let mut acc_b = 0; + let data = get_data(buffer, self.line_num, mcu_height); + + for i in -BLUR_RADIUS..=BLUR_RADIUS { + let ic = i.clamp(0, HOMESCREEN_IMAGE_WIDTH - 1) as usize; + update_accs_add(data, ic, &mut acc_r, &mut acc_g, &mut acc_b); + } + + for i in 0..HOMESCREEN_IMAGE_WIDTH { + lines[self.add_idx][RED_IDX][i as usize] = acc_r; + lines[self.add_idx][GREEN_IDX][i as usize] = acc_g; + lines[self.add_idx][BLUE_IDX][i as usize] = acc_b; + + // clamping handles left and right edges + let ic = (i - BLUR_RADIUS).clamp(0, HOMESCREEN_IMAGE_WIDTH - 1) as usize; + let ic2 = + (i + BLUR_SIZE as i16 - BLUR_RADIUS).clamp(0, HOMESCREEN_IMAGE_WIDTH - 1) as usize; + update_accs_add(data, ic2, &mut acc_r, &mut acc_g, &mut acc_b); + update_accs_sub(data, ic, &mut acc_r, &mut acc_g, &mut acc_b); + } + self.line_num += 1; + } + + // adds one line of averages to sliding total averages + fn vertical_avg_add(&mut self) { + let lines = &mut self.mem.buffer[0..DECOMP_LINES]; + for i in 0..HOMESCREEN_IMAGE_WIDTH as usize { + self.totals.buffer[RED_IDX][i] += lines[self.add_idx][RED_IDX][i]; + self.totals.buffer[GREEN_IDX][i] += lines[self.add_idx][GREEN_IDX][i]; + self.totals.buffer[BLUE_IDX][i] += lines[self.add_idx][BLUE_IDX][i]; + } + } + + // adds one line and removes one line of averages to/from sliding total averages + fn vertical_avg(&mut self) { + let lines = &mut self.mem.buffer[0..DECOMP_LINES]; + for i in 0..HOMESCREEN_IMAGE_WIDTH as usize { + self.totals.buffer[RED_IDX][i] += + lines[self.add_idx][RED_IDX][i] - lines[self.rem_idx][RED_IDX][i]; + self.totals.buffer[GREEN_IDX][i] += + lines[self.add_idx][GREEN_IDX][i] - lines[self.rem_idx][GREEN_IDX][i]; + self.totals.buffer[BLUE_IDX][i] += + lines[self.add_idx][BLUE_IDX][i] - lines[self.rem_idx][BLUE_IDX][i]; + } + } + + fn inc_add(&mut self) { + self.add_idx += 1; + if self.add_idx >= DECOMP_LINES { + self.add_idx = 0; + } + } + + fn inc_rem(&mut self) { + self.rem_idx += 1; + if self.rem_idx >= DECOMP_LINES { + self.rem_idx = 0; + } + } + + fn get_line_num(&self) -> i16 { + self.line_num + } +} + +#[inline(always)] +fn get_data(buffer: &mut BufferJpeg, line_num: i16, mcu_height: i16) -> &mut [u16] { + let data_start = ((line_num % mcu_height) * WIDTH) as usize; + let data_end = (((line_num % mcu_height) + 1) * WIDTH) as usize; + &mut buffer.buffer[data_start..data_end] +} + +pub fn homescreen_blurred(data: &mut dyn HomescreenDecompressor, texts: &[HomescreenText]) { + let mut icon_data = [0_u8; (HOMESCREEN_MAX_ICON_SIZE * HOMESCREEN_MAX_ICON_SIZE / 2) as usize]; + + let mut text_buffer = BufferText::get_cleared(); + let mut fg_buffer_0 = BufferLine4bpp::get_cleared(); + let mut img_buffer_0 = BufferLine16bpp::get_cleared(); + let mut fg_buffer_1 = BufferLine4bpp::get_cleared(); + let mut img_buffer_1 = BufferLine16bpp::get_cleared(); + + let mut next_text_idx = 1; + let mut text_info = + homescreen_position_text(unwrap!(texts.first()), &mut text_buffer, &mut icon_data); + + let mcu_height = data.get_height(); + data.decompress(); + + set_window(screen()); + + let mut blurring = BlurringContext::new(); + + // handling top edge case: preload the edge value N+1 times + blurring.compute_line_avgs(data.get_data(), mcu_height); + + for _ in 0..=BLUR_RADIUS { + blurring.vertical_avg_add(); + } + blurring.inc_add(); + + // load enough values to be able to compute first line averages + for _ in 0..BLUR_RADIUS { + blurring.compute_line_avgs(data.get_data(), mcu_height); + blurring.vertical_avg_add(); + blurring.inc_add(); + + if (blurring.get_line_num() % mcu_height) == 0 { + data.decompress(); + } + } + + for y in 0..HEIGHT { + // several lines have been already decompressed before this loop, adjust for + // that + if y < HOMESCREEN_IMAGE_HEIGHT - (BLUR_RADIUS + 1) { + blurring.compute_line_avgs(data.get_data(), mcu_height); + } + + let done = if y % 2 == 0 { + homescreen_line_blurred( + &icon_data, + &mut text_buffer, + &mut fg_buffer_0, + &mut img_buffer_0, + text_info, + &blurring, + y, + ) + } else { + homescreen_line_blurred( + &icon_data, + &mut text_buffer, + &mut fg_buffer_1, + &mut img_buffer_1, + text_info, + &blurring, + y, + ) + }; + + if done { + (text_info, next_text_idx) = homescreen_next_text( + texts, + &mut text_buffer, + &mut icon_data, + text_info, + next_text_idx, + ); + } + + blurring.vertical_avg(); + + // handling bottom edge case: stop incrementing counter, adding the edge value + // for the rest of image + // the extra -1 is to indicate that this was the last decompressed line, + // in the next pass the docompression and compute_line_avgs won't happen + if y < HOMESCREEN_IMAGE_HEIGHT - (BLUR_RADIUS + 1) - 1 { + blurring.inc_add(); + } + + if y == HOMESCREEN_IMAGE_HEIGHT { + // reached end of image, clear avgs (display black) + blurring.clear(); + } + + // only start incrementing remove index when enough lines have been loaded + if y >= (BLUR_RADIUS) { + blurring.inc_rem(); + } + + if (blurring.get_line_num() % mcu_height) == 0 && (blurring.get_line_num() < HEIGHT) { + data.decompress(); + } + } + dma2d_wait_for_transfer(); +} + +pub fn homescreen( + data: &mut dyn HomescreenDecompressor, + texts: &[HomescreenText], + notification: Option<HomescreenNotification>, + notification_only: bool, +) { + let mut icon_data = [0_u8; (HOMESCREEN_MAX_ICON_SIZE * HOMESCREEN_MAX_ICON_SIZE / 2) as usize]; + + let mut text_buffer = BufferText::get_cleared(); + let mut fg_buffer_0 = BufferLine4bpp::get_cleared(); + let mut img_buffer_0 = BufferLine16bpp::get_cleared(); + let mut fg_buffer_1 = BufferLine4bpp::get_cleared(); + let mut img_buffer_1 = BufferLine16bpp::get_cleared(); + + let mut next_text_idx = 0; + let mut text_info = if let Some(notification) = notification { + rect_fill_rounded_buffer( + Rect::from_top_left_and_size( + Point::new(NOTIFICATION_BORDER, 0), + Offset::new(WIDTH - NOTIFICATION_BORDER * 2, NOTIFICATION_HEIGHT), + ), + 2, + &mut text_buffer, + ); + let area = Rect::new( + Point::new(0, NOTIFICATION_BORDER), + Point::new(WIDTH, NOTIFICATION_HEIGHT + NOTIFICATION_BORDER), + ); + HomescreenTextInfo { + text_area: area, + text_width: WIDTH, + text_color: notification.color, + icon_area: None, + } + } else { + next_text_idx += 1; + homescreen_position_text(unwrap!(texts.first()), &mut text_buffer, &mut icon_data) + }; + + set_window(screen()); + + let mcu_height = data.get_height(); + + for y in 0..HEIGHT { + if (y % mcu_height) == 0 { + data.decompress(); + } + + let done = if y % 2 == 0 { + homescreen_line( + &icon_data, + &mut text_buffer, + text_info, + data.get_data(), + &mut fg_buffer_0, + &mut img_buffer_0, + mcu_height, + y, + ) + } else { + homescreen_line( + &icon_data, + &mut text_buffer, + text_info, + data.get_data(), + &mut fg_buffer_1, + &mut img_buffer_1, + mcu_height, + y, + ) + }; + + if done { + if notification.is_some() && next_text_idx == 0 { + //finished notification area, let interrupt and draw the text + let notification = unwrap!(notification); + + let style = TextStyle { + background_color: notification.color, + ..theme::TEXT_BOLD + }; + + dma2d_wait_for_transfer(); + + drop(fg_buffer_0); + drop(fg_buffer_1); + + icon_text_center( + text_info.text_area.center(), + notification.icon, + 8, + notification.text, + style, + Offset::new(1, -2), + ); + + fg_buffer_0 = BufferLine4bpp::get_cleared(); + fg_buffer_1 = BufferLine4bpp::get_cleared(); + + set_window( + screen() + .split_top(NOTIFICATION_HEIGHT + NOTIFICATION_BORDER) + .1, + ); + } + + if notification_only && next_text_idx == 0 { + dma2d_wait_for_transfer(); + return; + } + + (text_info, next_text_idx) = homescreen_next_text( + texts, + &mut text_buffer, + &mut icon_data, + text_info, + next_text_idx, + ); + } + } + dma2d_wait_for_transfer(); +} diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs new file mode 100644 index 0000000000..e36db3c1bb --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -0,0 +1,326 @@ +use crate::{ + trezorhal::bip39, + ui::{ + component::{text::common::TextBox, Component, Event, EventCtx}, + display, + geometry::{Alignment2D, Offset, Rect}, + model_mercury::{ + component::{ + keyboard::{ + common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, + mnemonic::{MnemonicInput, MnemonicInputMsg, MNEMONIC_KEY_COUNT}, + }, + Button, ButtonContent, ButtonMsg, + }, + theme, + }, + shape, + shape::Renderer, + }, +}; +use heapless::String; + +const MAX_LENGTH: usize = 8; + +pub struct Bip39Input { + button: Button<&'static str>, + // used only to keep track of suggestion text color + button_suggestion: Button<&'static str>, + textbox: TextBox<MAX_LENGTH>, + multi_tap: MultiTapKeyboard, + options_num: Option<usize>, + suggested_word: Option<&'static str>, +} + +impl MnemonicInput for Bip39Input { + /// Return the key set. Keys are further specified as indices into this + /// array. + fn keys() -> [&'static str; MNEMONIC_KEY_COUNT] { + ["abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz"] + } + + /// Returns `true` if given key index can continue towards a valid mnemonic + /// word, `false` otherwise. + fn can_key_press_lead_to_a_valid_word(&self, key: usize) -> bool { + // Currently pending key is always enabled. + let key_is_pending = self.multi_tap.pending_key() == Some(key); + // Keys that contain letters from the completion mask are enabled as well. + let key_matches_mask = + bip39::word_completion_mask(self.textbox.content()) & Self::key_mask(key) != 0; + key_is_pending || key_matches_mask + } + + /// Key button was clicked. If this button is pending, let's cycle the + /// pending character in textbox. If not, let's just append the first + /// character. + fn on_key_click(&mut self, ctx: &mut EventCtx, key: usize) { + let edit = self.multi_tap.click_key(ctx, key, Self::keys()[key]); + self.textbox.apply(ctx, edit); + self.complete_word_from_dictionary(ctx); + } + + /// Backspace button was clicked, let's delete the last character of input + /// and clear the pending marker. + fn on_backspace_click(&mut self, ctx: &mut EventCtx) { + self.multi_tap.clear_pending_state(ctx); + self.textbox.delete_last(ctx); + self.complete_word_from_dictionary(ctx); + } + + /// Backspace button was long pressed, let's delete all characters of input + /// and clear the pending marker. + fn on_backspace_long_press(&mut self, ctx: &mut EventCtx) { + self.multi_tap.clear_pending_state(ctx); + self.textbox.clear(ctx); + self.complete_word_from_dictionary(ctx); + } + + fn is_empty(&self) -> bool { + self.textbox.is_empty() + } + + fn mnemonic(&self) -> Option<&'static str> { + self.suggested_word + } +} + +impl Component for Bip39Input { + type Msg = MnemonicInputMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.button.place(bounds); + self.button_suggestion.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.button_suggestion.event(ctx, event); + if self.multi_tap.is_timeout_event(event) { + self.on_timeout(ctx) + } else if let Some(ButtonMsg::Clicked) = self.button.event(ctx, event) { + self.on_input_click(ctx) + } else { + None + } + } + + fn paint(&mut self) { + let area = self.button.area(); + let style = self.button.style(); + + // First, paint the button background. + self.button.paint_background(style); + + // Paint the entered content (the prefix of the suggested word). + let text = self.textbox.content(); + let width = style.font.text_width(text); + // Content starts in the left-center point, offset by 16px to the right and 8px + // to the bottom. + let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); + display::text_left( + text_baseline, + text, + style.font, + style.text_color, + style.button_color, + ); + + // Paint the rest of the suggested dictionary word. + if let Some(word) = self.suggested_word.and_then(|w| w.get(text.len()..)) { + let word_baseline = text_baseline + Offset::new(width, 0); + let style = self.button_suggestion.style(); + display::text_left( + word_baseline, + word, + style.font, + style.text_color, + style.button_color, + ); + } + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() { + paint_pending_marker(text_baseline, text, style.font, style.text_color); + } + + // Paint the icon. + if let ButtonContent::Icon(icon) = self.button.content() { + // Icon is painted in the right-center point, of expected size 16x16 pixels, and + // 16px from the right edge. + let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); + icon.draw( + icon_center, + Alignment2D::CENTER, + style.text_color, + style.button_color, + ); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + let area = self.button.area(); + let style = self.button.style(); + + // First, paint the button background. + self.button.render_background(target, style); + + // Paint the entered content (the prefix of the suggested word). + let text = self.textbox.content(); + let width = style.font.text_width(text); + // Content starts in the left-center point, offset by 16px to the right and 8px + // to the bottom. + let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); + shape::Text::new(text_baseline, text) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + + // Paint the rest of the suggested dictionary word. + if let Some(word) = self.suggested_word.and_then(|w| w.get(text.len()..)) { + let word_baseline = text_baseline + Offset::new(width, 0); + let style = self.button_suggestion.style(); + shape::Text::new(word_baseline, word) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + } + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() { + render_pending_marker(target, text_baseline, text, style.font, style.text_color); + } + + // Paint the icon. + if let ButtonContent::Icon(icon) = self.button.content() { + // Icon is painted in the right-center point, of expected size 16x16 pixels, and + // 16px from the right edge. + let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); + shape::ToifImage::new(icon_center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(style.text_color) + .render(target); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.button.bounds(sink); + } +} + +impl Bip39Input { + pub fn new() -> Self { + Self { + button: Button::empty(), + textbox: TextBox::empty(), + multi_tap: MultiTapKeyboard::new(), + options_num: None, + suggested_word: None, + button_suggestion: Button::empty(), + } + } + + pub fn prefilled_word(word: &str) -> Self { + // Word may be empty string, fallback to normal input + if word.is_empty() { + return Self::new(); + } + + // Styling the input to reflect already filled word + Self { + button: Button::with_icon(theme::ICON_LIST_CHECK).styled(theme::button_pin_confirm()), + textbox: TextBox::new(String::from(word)), + multi_tap: MultiTapKeyboard::new(), + options_num: bip39::options_num(word), + suggested_word: bip39::complete_word(word), + button_suggestion: Button::empty().styled(theme::button_suggestion_confirm()), + } + } + + /// Compute a bitmask of all letters contained in given key text. Lowest bit + /// is 'a', second lowest 'b', etc. + fn key_mask(key: usize) -> u32 { + let mut mask = 0; + for ch in Self::keys()[key].as_bytes() { + // We assume the key text is lower-case alphabetic ASCII, making the subtraction + // and the shift panic-free. + mask |= 1 << (ch - b'a'); + } + mask + } + + /// Input button was clicked. If the content matches the suggested word, + /// let's confirm it, otherwise just auto-complete. + fn on_input_click(&mut self, ctx: &mut EventCtx) -> Option<MnemonicInputMsg> { + if let (Some(word), Some(num)) = (self.suggested_word, self.options_num) { + return if num == 1 && word.starts_with(self.textbox.content()) + || num > 1 && word.eq(self.textbox.content()) + { + // Confirm button. + self.textbox.clear(ctx); + Some(MnemonicInputMsg::Confirmed) + } else { + // Auto-complete button. + self.textbox.replace(ctx, word); + self.complete_word_from_dictionary(ctx); + Some(MnemonicInputMsg::Completed) + }; + } + None + } + + /// Timeout occurred. If we can auto-complete current input, let's just + /// reset the pending marker. If not, input is invalid, let's backspace the + /// last character. + fn on_timeout(&mut self, ctx: &mut EventCtx) -> Option<MnemonicInputMsg> { + self.multi_tap.clear_pending_state(ctx); + if self.suggested_word.is_none() { + self.textbox.delete_last(ctx); + self.complete_word_from_dictionary(ctx); + } + Some(MnemonicInputMsg::TimedOut) + } + + fn complete_word_from_dictionary(&mut self, ctx: &mut EventCtx) { + self.options_num = bip39::options_num(self.textbox.content()); + self.suggested_word = bip39::complete_word(self.textbox.content()); + + // Change the style of the button depending on the completed word. + if let (Some(word), Some(num)) = (self.suggested_word, self.options_num) { + if num == 1 && word.starts_with(self.textbox.content()) + || num > 1 && word.eq(self.textbox.content()) + { + // Confirm button. + self.button.enable(ctx); + self.button.set_stylesheet(ctx, theme::button_pin_confirm()); + self.button + .set_content(ctx, ButtonContent::Icon(theme::ICON_LIST_CHECK)); + self.button_suggestion + .set_stylesheet(ctx, theme::button_suggestion_confirm()); + } else { + // Auto-complete button. + self.button.enable(ctx); + self.button + .set_stylesheet(ctx, theme::button_pin_autocomplete()); + self.button + .set_content(ctx, ButtonContent::Icon(theme::ICON_CLICK)); + self.button_suggestion + .set_stylesheet(ctx, theme::button_suggestion_autocomplete()); + } + } else { + // Disabled button. + self.button.disable(ctx); + self.button.set_stylesheet(ctx, theme::button_pin()); + self.button.set_content(ctx, ButtonContent::Text("")); + } + } +} + +// DEBUG-ONLY SECTION BELOW + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Bip39Input { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Bip39Input"); + t.child("textbox", &self.textbox); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs new file mode 100644 index 0000000000..619f9120b2 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs @@ -0,0 +1,152 @@ +use crate::{ + time::Duration, + ui::{ + component::{text::common::TextEdit, Event, EventCtx, TimerToken}, + display::{self, Color, Font}, + geometry::{Offset, Point, Rect}, + shape, + shape::Renderer, + }, +}; + +/// Contains state commonly used in implementations multi-tap keyboards. +pub struct MultiTapKeyboard { + /// Configured timeout after which we cancel currently pending key. + timeout: Duration, + /// The currently pending state. + pending: Option<Pending>, +} + +struct Pending { + /// Index of the pending key. + key: usize, + /// Index of the key press (how many times the `key` was pressed, minus + /// one). + press: usize, + /// Timer for clearing the pending state. + timer: TimerToken, +} + +impl MultiTapKeyboard { + /// Create a new, empty, multi-tap state. + pub fn new() -> Self { + Self { + timeout: Duration::from_secs(1), + pending: None, + } + } + + /// Return the index of the currently pending key, if any. + pub fn pending_key(&self) -> Option<usize> { + self.pending.as_ref().map(|p| p.key) + } + + /// Return the index of the pending key press. + pub fn pending_press(&self) -> Option<usize> { + self.pending.as_ref().map(|p| p.press) + } + + /// Return the token for the currently pending timer. + pub fn pending_timer(&self) -> Option<TimerToken> { + self.pending.as_ref().map(|p| p.timer) + } + + /// Returns `true` if `event` is an `Event::Timer` for the currently pending + /// timer. + pub fn is_timeout_event(&self, event: Event) -> bool { + matches!((event, self.pending_timer()), (Event::Timer(t), Some(pt)) if pt == t) + } + + /// Reset to the empty state. Takes `EventCtx` to request a paint pass (to + /// either hide or show any pending marker our caller might want to draw + /// later). + pub fn clear_pending_state(&mut self, ctx: &mut EventCtx) { + if self.pending.is_some() { + self.pending = None; + ctx.request_paint(); + } + } + + /// Register a click to a key. `MultiTapKeyboard` itself does not have any + /// concept of the key set, so both the key index and the key content is + /// taken here. Returns a text editing operation the caller should apply on + /// the output buffer. Takes `EventCtx` to request a timeout for cancelling + /// the pending state. Caller is required to handle the timer event and + /// call `Self::clear_pending_state` when the timer hits. + pub fn click_key(&mut self, ctx: &mut EventCtx, key: usize, key_text: &str) -> TextEdit { + let (is_pending, press) = match &self.pending { + Some(pending) if pending.key == key => { + // This key is pending. Cycle the last inserted character through the + // key content. + (true, pending.press.wrapping_add(1)) + } + _ => { + // This key is not pending. Append the first character in the key. + (false, 0) + } + }; + + // If the key has more then one character, we need to set it as pending, so we + // can cycle through on the repeated clicks. We also request a timer so we can + // reset the pending state after a deadline. + // + // Note: It might seem that we should make sure to `request_paint` in case we + // progress into a pending state (to display the pending marker), but such + // transition only happens as a result of an append op, so the painting should + // be requested by handling the `TextEdit`. + self.pending = if key_text.len() > 1 { + Some(Pending { + key, + press, + timer: ctx.request_timer(self.timeout), + }) + } else { + None + }; + + assert!(!key_text.is_empty()); + // Now we can be sure that a looped iterator will return a value + let ch = unwrap!(key_text.chars().cycle().nth(press)); + if is_pending { + TextEdit::ReplaceLast(ch) + } else { + TextEdit::Append(ch) + } + } +} + +/// Create a visible "underscoring" of the last letter of a text. +pub fn paint_pending_marker(text_baseline: Point, text: &str, font: Font, color: Color) { + // Measure the width of the last character of input. + if let Some(last) = text.chars().last() { + let width = font.text_width(text); + let last_width = font.char_width(last); + // Draw the marker 2px under the start of the baseline of the last character. + let marker_origin = text_baseline + Offset::new(width - last_width, 2); + // Draw the marker 1px longer than the last character, and 3px thick. + let marker_rect = + Rect::from_top_left_and_size(marker_origin, Offset::new(last_width + 1, 3)); + display::rect_fill(marker_rect, color); + } +} + +/// Create a visible "underscoring" of the last letter of a text. +pub fn render_pending_marker( + target: &mut impl Renderer, + text_baseline: Point, + text: &str, + font: Font, + color: Color, +) { + // Measure the width of the last character of input. + if let Some(last) = text.chars().last() { + let width = font.text_width(text); + let last_width = font.char_width(last); + // Draw the marker 2px under the start of the baseline of the last character. + let marker_origin = text_baseline + Offset::new(width - last_width, 2); + // Draw the marker 1px longer than the last character, and 3px thick. + let marker_rect = + Rect::from_top_left_and_size(marker_origin, Offset::new(last_width + 1, 3)); + shape::Bar::new(marker_rect).with_bg(color).render(target); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs new file mode 100644 index 0000000000..d31a6b990b --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -0,0 +1,234 @@ +use crate::ui::{ + component::{maybe::paint_overlapping, Child, Component, Event, EventCtx, Label, Maybe}, + geometry::{Alignment2D, Grid, Offset, Rect}, + model_mercury::{ + component::{Button, ButtonMsg, Swipe, SwipeDirection}, + theme, + }, + shape::Renderer, +}; + +pub const MNEMONIC_KEY_COUNT: usize = 9; + +pub enum MnemonicKeyboardMsg { + Confirmed, + Previous, +} + +pub struct MnemonicKeyboard<T, U> { + /// Initial prompt, displayed on empty input. + prompt: Child<Maybe<Label<U>>>, + /// Backspace button. + back: Child<Maybe<Button<&'static str>>>, + /// Input area, acting as the auto-complete and confirm button. + input: Child<Maybe<T>>, + /// Key buttons. + keys: [Child<Button<&'static str>>; MNEMONIC_KEY_COUNT], + /// Swipe controller - allowing for going to the previous word. + swipe: Swipe, + /// Whether going back is allowed (is not on the very first word). + can_go_back: bool, +} + +impl<T, U> MnemonicKeyboard<T, U> +where + T: MnemonicInput, + U: AsRef<str>, +{ + pub fn new(input: T, prompt: U, can_go_back: bool) -> Self { + // Input might be already pre-filled + let prompt_visible = input.is_empty(); + + Self { + prompt: Child::new(Maybe::new( + theme::BG, + Label::centered(prompt, theme::label_keyboard_prompt()), + prompt_visible, + )), + back: Child::new(Maybe::new( + theme::BG, + Button::with_icon_blend( + theme::IMAGE_BG_BACK_BTN_TALL, + theme::ICON_BACK, + Offset::new(30, 17), + ) + .styled(theme::button_reset()) + .with_long_press(theme::ERASE_HOLD_DURATION), + !prompt_visible, + )), + input: Child::new(Maybe::new(theme::BG, input, !prompt_visible)), + keys: T::keys() + .map(|t| Button::with_text(t).styled(theme::button_pin())) + .map(Child::new), + swipe: Swipe::new().right(), + can_go_back, + } + } + + fn on_input_change(&mut self, ctx: &mut EventCtx) { + self.toggle_key_buttons(ctx); + self.toggle_prompt_or_input(ctx); + } + + /// Either enable or disable the key buttons, depending on the dictionary + /// completion mask and the pending key. + fn toggle_key_buttons(&mut self, ctx: &mut EventCtx) { + for (key, btn) in self.keys.iter_mut().enumerate() { + let enabled = self + .input + .inner() + .inner() + .can_key_press_lead_to_a_valid_word(key); + btn.mutate(ctx, |ctx, b| b.enable_if(ctx, enabled)); + } + } + + /// After edit operations, we need to either show or hide the prompt, the + /// input, and the back button. + fn toggle_prompt_or_input(&mut self, ctx: &mut EventCtx) { + let prompt_visible = self.input.inner().inner().is_empty(); + self.prompt + .mutate(ctx, |ctx, p| p.show_if(ctx, prompt_visible)); + self.input + .mutate(ctx, |ctx, i| i.show_if(ctx, !prompt_visible)); + self.back + .mutate(ctx, |ctx, b| b.show_if(ctx, !prompt_visible)); + } + + pub fn mnemonic(&self) -> Option<&'static str> { + self.input.inner().inner().mnemonic() + } +} + +impl<T, U> Component for MnemonicKeyboard<T, U> +where + T: MnemonicInput, + U: AsRef<str>, +{ + type Msg = MnemonicKeyboardMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + let (_, bounds) = bounds + .inset(theme::borders()) + .split_bottom(4 * theme::MNEMONIC_BUTTON_HEIGHT + 3 * theme::KEYBOARD_SPACING); + let grid = Grid::new(bounds, 4, 3).with_spacing(theme::KEYBOARD_SPACING); + let back_area = grid.row_col(0, 0); + let input_area = grid.row_col(0, 1).union(grid.row_col(0, 3)); + + let prompt_center = grid.row_col(0, 0).union(grid.row_col(0, 3)).center(); + let prompt_size = self.prompt.inner().inner().max_size(); + let prompt_area = Rect::snap(prompt_center, prompt_size, Alignment2D::CENTER); + + self.swipe.place(bounds); + self.prompt.place(prompt_area); + self.back.place(back_area); + self.input.place(input_area); + for (key, btn) in self.keys.iter_mut().enumerate() { + btn.place(grid.cell(key + grid.cols)); // Start in the second row. + } + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + // Swipe will cause going back to the previous word when allowed. + if self.can_go_back { + if let Some(SwipeDirection::Right) = self.swipe.event(ctx, event) { + return Some(MnemonicKeyboardMsg::Previous); + } + } + + match self.input.event(ctx, event) { + Some(MnemonicInputMsg::Confirmed) => { + // Confirmed, bubble up. + return Some(MnemonicKeyboardMsg::Confirmed); + } + Some(_) => { + // Either a timeout or a completion. + self.on_input_change(ctx); + return None; + } + _ => {} + } + + match self.back.event(ctx, event) { + Some(ButtonMsg::Clicked) => { + self.input + .mutate(ctx, |ctx, i| i.inner_mut().on_backspace_click(ctx)); + self.on_input_change(ctx); + return None; + } + Some(ButtonMsg::LongPressed) => { + self.input + .mutate(ctx, |ctx, i| i.inner_mut().on_backspace_long_press(ctx)); + self.on_input_change(ctx); + return None; + } + _ => {} + } + for (key, btn) in self.keys.iter_mut().enumerate() { + if let Some(ButtonMsg::Clicked) = btn.event(ctx, event) { + self.input + .mutate(ctx, |ctx, i| i.inner_mut().on_key_click(ctx, key)); + self.on_input_change(ctx); + return None; + } + } + None + } + + fn paint(&mut self) { + paint_overlapping(&mut [&mut self.prompt, &mut self.input, &mut self.back]); + for btn in &mut self.keys { + btn.paint(); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + self.prompt.render(target); + self.input.render(target); + self.back.render(target); + + for btn in &mut self.keys { + btn.render(target); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.prompt.bounds(sink); + self.input.bounds(sink); + self.back.bounds(sink); + for btn in &self.keys { + btn.bounds(sink) + } + } +} + +pub trait MnemonicInput: Component<Msg = MnemonicInputMsg> { + fn keys() -> [&'static str; MNEMONIC_KEY_COUNT]; + fn can_key_press_lead_to_a_valid_word(&self, key: usize) -> bool; + fn on_key_click(&mut self, ctx: &mut EventCtx, key: usize); + fn on_backspace_click(&mut self, ctx: &mut EventCtx); + fn on_backspace_long_press(&mut self, ctx: &mut EventCtx); + fn is_empty(&self) -> bool; + fn mnemonic(&self) -> Option<&'static str>; +} + +pub enum MnemonicInputMsg { + Confirmed, + Completed, + TimedOut, +} + +#[cfg(feature = "ui_debug")] +impl<T, U> crate::trace::Trace for MnemonicKeyboard<T, U> +where + T: MnemonicInput + crate::trace::Trace, + U: AsRef<str>, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("MnemonicKeyboard"); + t.child("prompt", &self.prompt); + t.child("input", &self.input); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mod.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mod.rs new file mode 100644 index 0000000000..1b4b6c4426 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mod.rs @@ -0,0 +1,8 @@ +pub mod bip39; +pub mod mnemonic; +pub mod passphrase; +pub mod pin; +pub mod slip39; +pub mod word_count; + +mod common; diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs new file mode 100644 index 0000000000..71f1ecb39f --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -0,0 +1,441 @@ +use crate::ui::{ + component::{ + base::ComponentExt, text::common::TextBox, Child, Component, Event, EventCtx, Never, + }, + display, + geometry::{Grid, Offset, Rect}, + model_mercury::component::{ + button::{Button, ButtonContent, ButtonMsg}, + keyboard::common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, + swipe::{Swipe, SwipeDirection}, + theme, ScrollBar, + }, + shape, + shape::Renderer, + util::long_line_content_with_ellipsis, +}; + +pub enum PassphraseKeyboardMsg { + Confirmed, + Cancelled, +} + +pub struct PassphraseKeyboard { + page_swipe: Swipe, + input: Child<Input>, + back: Child<Button<&'static str>>, + confirm: Child<Button<&'static str>>, + keys: [Child<Button<&'static str>>; KEY_COUNT], + scrollbar: ScrollBar, + fade: bool, +} + +const STARTING_PAGE: usize = 1; +const PAGE_COUNT: usize = 4; +const KEY_COUNT: usize = 10; +#[rustfmt::skip] +const KEYBOARD: [[&str; KEY_COUNT]; PAGE_COUNT] = [ + ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"], + [" ", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz", "*#"], + [" ", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ", "*#"], + ["_<>", ".:@", "/|\\", "!()", "+%&", "-[]", "?{}", ",'`", ";\"~", "$^="], + ]; + +const MAX_LENGTH: usize = 50; +const INPUT_AREA_HEIGHT: i16 = ScrollBar::DOT_SIZE + 9; + +impl PassphraseKeyboard { + pub fn new() -> Self { + Self { + page_swipe: Swipe::horizontal(), + input: Input::new().into_child(), + confirm: Button::with_icon(theme::ICON_CONFIRM) + .styled(theme::button_confirm()) + .into_child(), + back: Button::with_icon_blend( + theme::IMAGE_BG_BACK_BTN, + theme::ICON_BACK, + Offset::new(30, 12), + ) + .styled(theme::button_reset()) + .initially_enabled(false) + .with_long_press(theme::ERASE_HOLD_DURATION) + .into_child(), + keys: KEYBOARD[STARTING_PAGE].map(|text| { + Child::new(Button::new(Self::key_content(text)).styled(theme::button_pin())) + }), + scrollbar: ScrollBar::horizontal(), + fade: false, + } + } + + fn key_text(content: &ButtonContent<&'static str>) -> &'static str { + match content { + ButtonContent::Text(text) => text, + ButtonContent::Icon(_) => " ", + ButtonContent::IconAndText(_) => " ", + ButtonContent::Empty => "", + ButtonContent::IconBlend(_, _, _) => "", + } + } + + fn key_content(text: &'static str) -> ButtonContent<&'static str> { + match text { + " " => ButtonContent::Icon(theme::ICON_SPACE), + t => ButtonContent::Text(t), + } + } + + fn on_page_swipe(&mut self, ctx: &mut EventCtx, swipe: SwipeDirection) { + // Change the page number. + let key_page = self.scrollbar.active_page; + let key_page = match swipe { + SwipeDirection::Left => (key_page as isize + 1) as usize % PAGE_COUNT, + SwipeDirection::Right => (key_page as isize - 1) as usize % PAGE_COUNT, + _ => key_page, + }; + self.scrollbar.go_to(key_page); + // Clear the pending state. + self.input + .mutate(ctx, |ctx, i| i.multi_tap.clear_pending_state(ctx)); + // Update buttons. + self.replace_button_content(ctx, key_page); + // Reset backlight to normal level on next paint. + self.fade = true; + // So that swipe does not visually enable the input buttons when max length + // reached + self.update_input_btns_state(ctx); + } + + fn replace_button_content(&mut self, ctx: &mut EventCtx, page: usize) { + for (i, btn) in self.keys.iter_mut().enumerate() { + let text = KEYBOARD[page][i]; + let content = Self::key_content(text); + btn.mutate(ctx, |ctx, b| b.set_content(ctx, content)); + btn.request_complete_repaint(ctx); + } + } + + /// Possibly changing the buttons' state after change of the input. + fn after_edit(&mut self, ctx: &mut EventCtx) { + self.update_back_btn_state(ctx); + self.update_input_btns_state(ctx); + } + + /// When the input is empty, disable the back button. + fn update_back_btn_state(&mut self, ctx: &mut EventCtx) { + if self.input.inner().textbox.is_empty() { + self.back.mutate(ctx, |ctx, b| b.disable(ctx)); + } else { + self.back.mutate(ctx, |ctx, b| b.enable(ctx)); + } + } + + /// When the input has reached max length, disable all the input buttons. + fn update_input_btns_state(&mut self, ctx: &mut EventCtx) { + let active_states = self.get_buttons_active_states(); + for (key, btn) in self.keys.iter_mut().enumerate() { + btn.mutate(ctx, |ctx, b| { + if active_states[key] { + b.enable(ctx); + } else { + b.disable(ctx); + } + }); + } + } + + /// Precomputing the active states not to overlap borrows in + /// `self.keys.iter_mut` loop. + fn get_buttons_active_states(&self) -> [bool; KEY_COUNT] { + let mut active_states: [bool; KEY_COUNT] = [false; KEY_COUNT]; + for (key, state) in active_states.iter_mut().enumerate() { + *state = self.is_button_active(key); + } + active_states + } + + /// We should disable the input when the passphrase has reached maximum + /// length and we are not cycling through the characters. + fn is_button_active(&self, key: usize) -> bool { + let textbox_not_full = !self.input.inner().textbox.is_full(); + let key_is_pending = { + if let Some(pending) = self.input.inner().multi_tap.pending_key() { + pending == key + } else { + false + } + }; + textbox_not_full || key_is_pending + } + + pub fn passphrase(&self) -> &str { + self.input.inner().textbox.content() + } +} + +impl Component for PassphraseKeyboard { + type Msg = PassphraseKeyboardMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + let bounds = bounds.inset(theme::borders()); + + let (input_area, key_grid_area) = + bounds.split_bottom(4 * theme::PIN_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); + + let (input_area, scroll_area) = input_area.split_bottom(INPUT_AREA_HEIGHT); + let (scroll_area, _) = scroll_area.split_top(ScrollBar::DOT_SIZE); + + let key_grid = Grid::new(key_grid_area, 4, 3).with_spacing(theme::BUTTON_SPACING); + let confirm_btn_area = key_grid.cell(11); + let back_btn_area = key_grid.cell(9); + + self.page_swipe.place(bounds); + self.input.place(input_area); + self.confirm.place(confirm_btn_area); + self.back.place(back_btn_area); + self.scrollbar.place(scroll_area); + self.scrollbar + .set_count_and_active_page(PAGE_COUNT, STARTING_PAGE); + + // Place all the character buttons. + for (key, btn) in &mut self.keys.iter_mut().enumerate() { + // Assign the keys in each page to buttons on a 5x3 grid, starting + // from the second row. + let area = key_grid.cell(if key < 9 { + // The grid has 3 columns, and we skip the first row. + key + } else { + // For the last key (the "0" position) we skip one cell. + key + 1 + }); + btn.place(area); + } + + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if self.input.inner().multi_tap.is_timeout_event(event) { + self.input + .mutate(ctx, |ctx, i| i.multi_tap.clear_pending_state(ctx)); + return None; + } + if let Some(swipe) = self.page_swipe.event(ctx, event) { + // We have detected a horizontal swipe. Change the keyboard page. + self.on_page_swipe(ctx, swipe); + return None; + } + if let Some(ButtonMsg::Clicked) = self.confirm.event(ctx, event) { + // Confirm button was clicked, we're done. + return Some(PassphraseKeyboardMsg::Confirmed); + } + + match self.back.event(ctx, event) { + Some(ButtonMsg::Clicked) => { + // Backspace button was clicked. If we have any content in the textbox, let's + // delete the last character. Otherwise cancel. + return if self.input.inner().textbox.is_empty() { + Some(PassphraseKeyboardMsg::Cancelled) + } else { + self.input.mutate(ctx, |ctx, i| { + i.multi_tap.clear_pending_state(ctx); + i.textbox.delete_last(ctx); + }); + self.after_edit(ctx); + None + }; + } + Some(ButtonMsg::LongPressed) => { + self.input.mutate(ctx, |ctx, i| { + i.multi_tap.clear_pending_state(ctx); + i.textbox.clear(ctx); + }); + self.after_edit(ctx); + return None; + } + _ => {} + } + + // Process key button events in case we did not reach maximum passphrase length. + // (All input buttons should be disallowed in that case, this is just a safety + // measure.) + // Also we need to allow for cycling through the last character. + let active_states = self.get_buttons_active_states(); + for (key, btn) in self.keys.iter_mut().enumerate() { + if !active_states[key] { + // Button is not active + continue; + } + if let Some(ButtonMsg::Clicked) = btn.event(ctx, event) { + // Key button was clicked. If this button is pending, let's cycle the pending + // character in textbox. If not, let's just append the first character. + let text = Self::key_text(btn.inner().content()); + self.input.mutate(ctx, |ctx, i| { + let edit = i.multi_tap.click_key(ctx, key, text); + i.textbox.apply(ctx, edit); + }); + self.after_edit(ctx); + return None; + } + } + None + } + + fn paint(&mut self) { + self.input.paint(); + self.scrollbar.paint(); + self.confirm.paint(); + self.back.paint(); + for btn in &mut self.keys { + btn.paint(); + } + if self.fade { + self.fade = false; + // Note that this is blocking and takes some time. + display::fade_backlight(theme::BACKLIGHT_NORMAL); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + self.input.render(target); + self.scrollbar.render(target); + self.confirm.render(target); + self.back.render(target); + for btn in &mut self.keys { + btn.render(target); + } + if self.fade { + self.fade = false; + // Note that this is blocking and takes some time. + display::fade_backlight(theme::BACKLIGHT_NORMAL); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.input.bounds(sink); + self.scrollbar.bounds(sink); + self.confirm.bounds(sink); + self.back.bounds(sink); + for btn in &self.keys { + btn.bounds(sink) + } + } +} + +struct Input { + area: Rect, + textbox: TextBox<MAX_LENGTH>, + multi_tap: MultiTapKeyboard, +} + +impl Input { + fn new() -> Self { + Self { + area: Rect::zero(), + textbox: TextBox::empty(), + multi_tap: MultiTapKeyboard::new(), + } + } +} + +impl Component for Input { + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.area + } + + fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { + None + } + + fn paint(&mut self) { + let style = theme::label_keyboard(); + + let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) + - Offset::y(style.text_font.text_baseline()); + + let text = self.textbox.content(); + + // Preparing the new text to be displayed. + // Possible optimization is to redraw the background only when pending character + // is replaced, or only draw rectangle over the pending character and + // marker. + display::rect_fill(self.area, theme::BG); + + // Find out how much text can fit into the textbox. + // Accounting for the pending marker, which draws itself one pixel longer than + // the last character + let available_area_width = self.area.width() - 1; + let text_to_display = + long_line_content_with_ellipsis(text, "...", style.text_font, available_area_width); + + display::text_left( + text_baseline, + &text_to_display, + style.text_font, + style.text_color, + style.background_color, + ); + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() { + paint_pending_marker( + text_baseline, + &text_to_display, + style.text_font, + style.text_color, + ); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + let style = theme::label_keyboard(); + + let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) + - Offset::y(style.text_font.text_baseline()); + + let text = self.textbox.content(); + + shape::Bar::new(self.area).with_bg(theme::BG).render(target); + + // Find out how much text can fit into the textbox. + // Accounting for the pending marker, which draws itself one pixel longer than + // the last character + let available_area_width = self.area.width() - 1; + let text_to_display = + long_line_content_with_ellipsis(text, "...", style.text_font, available_area_width); + + shape::Text::new(text_baseline, &text_to_display) + .with_font(style.text_font) + .with_fg(style.text_color) + .render(target); + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() { + render_pending_marker( + target, + text_baseline, + &text_to_display, + style.text_font, + style.text_color, + ); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for PassphraseKeyboard { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("PassphraseKeyboard"); + t.string("passphrase", self.passphrase().into()); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs new file mode 100644 index 0000000000..933e71adc7 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -0,0 +1,572 @@ +use core::mem; +use heapless::String; + +use crate::{ + time::Duration, + trezorhal::random, + ui::{ + component::{ + base::ComponentExt, text::TextStyle, Child, Component, Event, EventCtx, Label, Maybe, + Never, Pad, TimerToken, + }, + display::{self, Font}, + event::TouchEvent, + geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, + model_mercury::component::{ + button::{Button, ButtonContent, ButtonMsg, ButtonMsg::Clicked}, + theme, + }, + shape, + shape::Renderer, + }, +}; + +pub enum PinKeyboardMsg { + Confirmed, + Cancelled, +} + +const MAX_LENGTH: usize = 50; +const MAX_VISIBLE_DOTS: usize = 14; +const MAX_VISIBLE_DIGITS: usize = 16; +const DIGIT_COUNT: usize = 10; // 0..10 + +const HEADER_PADDING_SIDE: i16 = 5; +const HEADER_PADDING_BOTTOM: i16 = 12; + +const HEADER_PADDING: Insets = Insets::new( + theme::borders().top, + HEADER_PADDING_SIDE, + HEADER_PADDING_BOTTOM, + HEADER_PADDING_SIDE, +); + +pub struct PinKeyboard<T> { + allow_cancel: bool, + major_prompt: Child<Label<T>>, + minor_prompt: Child<Label<T>>, + major_warning: Option<Child<Label<T>>>, + textbox: Child<PinDots>, + textbox_pad: Pad, + erase_btn: Child<Maybe<Button<&'static str>>>, + cancel_btn: Child<Maybe<Button<&'static str>>>, + confirm_btn: Child<Button<&'static str>>, + digit_btns: [Child<Button<&'static str>>; DIGIT_COUNT], + warning_timer: Option<TimerToken>, +} + +impl<T> PinKeyboard<T> +where + T: AsRef<str>, +{ + // Label position fine-tuning. + const MAJOR_OFF: Offset = Offset::y(11); + const MINOR_OFF: Offset = Offset::y(11); + + pub fn new( + major_prompt: T, + minor_prompt: T, + major_warning: Option<T>, + allow_cancel: bool, + ) -> Self { + // Control buttons. + let erase_btn = Button::with_icon_blend( + theme::IMAGE_BG_BACK_BTN, + theme::ICON_BACK, + Offset::new(30, 12), + ) + .styled(theme::button_reset()) + .with_long_press(theme::ERASE_HOLD_DURATION) + .initially_enabled(false); + let erase_btn = Maybe::hidden(theme::BG, erase_btn).into_child(); + + let cancel_btn = Button::with_icon(theme::ICON_CANCEL).styled(theme::button_cancel()); + let cancel_btn = Maybe::new(theme::BG, cancel_btn, allow_cancel).into_child(); + + Self { + allow_cancel, + major_prompt: Label::left_aligned(major_prompt, theme::label_keyboard()).into_child(), + minor_prompt: Label::right_aligned(minor_prompt, theme::label_keyboard_minor()) + .into_child(), + major_warning: major_warning.map(|text| { + Label::left_aligned(text, theme::label_keyboard_warning()).into_child() + }), + textbox: PinDots::new(theme::label_default()).into_child(), + textbox_pad: Pad::with_background(theme::label_default().background_color), + erase_btn, + cancel_btn, + confirm_btn: Button::with_icon(theme::ICON_CONFIRM) + .styled(theme::button_confirm()) + .initially_enabled(false) + .into_child(), + digit_btns: Self::generate_digit_buttons(), + warning_timer: None, + } + } + + fn generate_digit_buttons() -> [Child<Button<&'static str>>; DIGIT_COUNT] { + // Generate a random sequence of digits from 0 to 9. + let mut digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; + random::shuffle(&mut digits); + digits + .map(Button::with_text) + .map(|b| b.styled(theme::button_pin())) + .map(Child::new) + } + + fn pin_modified(&mut self, ctx: &mut EventCtx) { + let is_full = self.textbox.inner().is_full(); + let is_empty = self.textbox.inner().is_empty(); + + self.textbox_pad.clear(); + self.textbox.request_complete_repaint(ctx); + + if is_empty { + self.major_prompt.request_complete_repaint(ctx); + self.minor_prompt.request_complete_repaint(ctx); + self.major_warning.request_complete_repaint(ctx); + } + + let cancel_enabled = is_empty && self.allow_cancel; + for btn in &mut self.digit_btns { + btn.mutate(ctx, |ctx, btn| btn.enable_if(ctx, !is_full)); + } + self.erase_btn.mutate(ctx, |ctx, btn| { + btn.show_if(ctx, !is_empty); + btn.inner_mut().enable_if(ctx, !is_empty); + }); + self.cancel_btn.mutate(ctx, |ctx, btn| { + btn.show_if(ctx, cancel_enabled); + btn.inner_mut().enable_if(ctx, is_empty); + }); + self.confirm_btn + .mutate(ctx, |ctx, btn| btn.enable_if(ctx, !is_empty)); + } + + pub fn pin(&self) -> &str { + self.textbox.inner().pin() + } +} + +impl<T> Component for PinKeyboard<T> +where + T: AsRef<str>, +{ + type Msg = PinKeyboardMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + // Ignore the top padding for now, we need it to reliably register textbox touch + // events. + let borders_no_top = Insets { + top: 0, + ..theme::borders() + }; + // Prompts and PIN dots display. + let (header, keypad) = bounds + .inset(borders_no_top) + .split_bottom(4 * theme::PIN_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); + let prompt = header.inset(HEADER_PADDING); + // the inset -3 is a workaround for long text in "re-enter wipe code" + let major_area = prompt.translate(Self::MAJOR_OFF).inset(Insets::right(-3)); + let minor_area = prompt.translate(Self::MINOR_OFF); + + // Control buttons. + let grid = Grid::new(keypad, 4, 3).with_spacing(theme::BUTTON_SPACING); + + // Prompts and PIN dots display. + self.textbox_pad.place(header); + self.textbox.place(header); + self.major_prompt.place(major_area); + self.minor_prompt.place(minor_area); + self.major_warning.as_mut().map(|c| c.place(major_area)); + + // Control buttons. + let erase_cancel_area = grid.row_col(3, 0); + self.erase_btn.place(erase_cancel_area); + self.cancel_btn.place(erase_cancel_area); + self.confirm_btn.place(grid.row_col(3, 2)); + + // Digit buttons. + for (i, btn) in self.digit_btns.iter_mut().enumerate() { + // Assign the digits to buttons on a 4x3 grid, starting from the first row. + let area = grid.cell(if i < 9 { + i + } else { + // For the last key (the "0" position) we skip one cell. + i + 1 + }); + btn.place(area); + } + + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + match event { + // Set up timer to switch off warning prompt. + Event::Attach if self.major_warning.is_some() => { + self.warning_timer = Some(ctx.request_timer(Duration::from_secs(2))); + } + // Hide warning, show major prompt. + Event::Timer(token) if Some(token) == self.warning_timer => { + self.major_warning = None; + self.textbox_pad.clear(); + self.minor_prompt.request_complete_repaint(ctx); + ctx.request_paint(); + } + _ => {} + } + + self.textbox.event(ctx, event); + if let Some(Clicked) = self.confirm_btn.event(ctx, event) { + return Some(PinKeyboardMsg::Confirmed); + } + if let Some(Clicked) = self.cancel_btn.event(ctx, event) { + return Some(PinKeyboardMsg::Cancelled); + } + match self.erase_btn.event(ctx, event) { + Some(ButtonMsg::Clicked) => { + self.textbox.mutate(ctx, |ctx, t| t.pop(ctx)); + self.pin_modified(ctx); + return None; + } + Some(ButtonMsg::LongPressed) => { + self.textbox.mutate(ctx, |ctx, t| t.clear(ctx)); + self.pin_modified(ctx); + return None; + } + _ => {} + } + for btn in &mut self.digit_btns { + if let Some(Clicked) = btn.event(ctx, event) { + if let ButtonContent::Text(text) = btn.inner().content() { + self.textbox.mutate(ctx, |ctx, t| t.push(ctx, text)); + self.pin_modified(ctx); + return None; + } + } + } + None + } + + fn paint(&mut self) { + self.erase_btn.paint(); + self.textbox_pad.paint(); + if self.textbox.inner().is_empty() { + if let Some(ref mut w) = self.major_warning { + w.paint(); + } else { + self.major_prompt.paint(); + } + self.minor_prompt.paint(); + self.cancel_btn.paint(); + } else { + self.textbox.paint(); + } + self.confirm_btn.paint(); + for btn in &mut self.digit_btns { + btn.paint(); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + self.erase_btn.render(target); + self.textbox_pad.render(target); + if self.textbox.inner().is_empty() { + if let Some(ref mut w) = self.major_warning { + w.render(target); + } else { + self.major_prompt.render(target); + } + self.minor_prompt.render(target); + self.cancel_btn.render(target); + } else { + self.textbox.render(target); + } + self.confirm_btn.render(target); + for btn in &mut self.digit_btns { + btn.render(target); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.major_prompt.bounds(sink); + self.minor_prompt.bounds(sink); + self.erase_btn.bounds(sink); + self.cancel_btn.bounds(sink); + self.confirm_btn.bounds(sink); + self.textbox.bounds(sink); + for b in &self.digit_btns { + b.bounds(sink) + } + } +} + +struct PinDots { + area: Rect, + pad: Pad, + style: TextStyle, + digits: String<MAX_LENGTH>, + display_digits: bool, +} + +impl PinDots { + const DOT: i16 = 6; + const PADDING: i16 = 6; + const TWITCH: i16 = 4; + + fn new(style: TextStyle) -> Self { + Self { + area: Rect::zero(), + pad: Pad::with_background(style.background_color), + style, + digits: String::new(), + display_digits: false, + } + } + + fn size(&self) -> Offset { + let ndots = self.digits.len().min(MAX_VISIBLE_DOTS); + let mut width = Self::DOT * (ndots as i16); + width += Self::PADDING * (ndots.saturating_sub(1) as i16); + Offset::new(width, Self::DOT) + } + + fn is_empty(&self) -> bool { + self.digits.is_empty() + } + + fn is_full(&self) -> bool { + self.digits.len() == self.digits.capacity() + } + + fn clear(&mut self, ctx: &mut EventCtx) { + self.digits.clear(); + ctx.request_paint() + } + + fn push(&mut self, ctx: &mut EventCtx, text: &str) { + if self.digits.push_str(text).is_err() { + // `self.pin` is full and wasn't able to accept all of + // `text`. Should not happen. + }; + ctx.request_paint() + } + + fn pop(&mut self, ctx: &mut EventCtx) { + if self.digits.pop().is_some() { + ctx.request_paint() + } + } + + fn pin(&self) -> &str { + &self.digits + } + + fn paint_digits(&self, area: Rect) { + let center = area.center() + Offset::y(Font::MONO.text_height() / 2); + let right = center + Offset::x(Font::MONO.text_width("0") * (MAX_VISIBLE_DOTS as i16) / 2); + let digits = self.digits.len(); + + if digits <= MAX_VISIBLE_DOTS { + display::text_center( + center, + &self.digits, + Font::MONO, + self.style.text_color, + self.style.background_color, + ); + } else { + let offset: usize = digits.saturating_sub(MAX_VISIBLE_DIGITS); + display::text_right( + right, + &self.digits[offset..], + Font::MONO, + self.style.text_color, + self.style.background_color, + ); + } + } + + fn render_digits(&self, area: Rect, target: &mut impl Renderer) { + let center = area.center() + Offset::y(Font::MONO.text_height() / 2); + let right = center + Offset::x(Font::MONO.text_width("0") * (MAX_VISIBLE_DOTS as i16) / 2); + let digits = self.digits.len(); + + if digits <= MAX_VISIBLE_DOTS { + shape::Text::new(center, &self.digits) + .with_align(Alignment::Center) + .with_font(Font::MONO) + .with_fg(self.style.text_color) + .render(target); + } else { + let offset: usize = digits.saturating_sub(MAX_VISIBLE_DIGITS); + shape::Text::new(right, &self.digits[offset..]) + .with_align(Alignment::End) + .with_font(Font::MONO) + .with_fg(self.style.text_color) + .render(target); + } + } + + fn paint_dots(&self, area: Rect) { + let mut cursor = self.size().snap(area.center(), Alignment2D::CENTER); + + let digits = self.digits.len(); + let dots_visible = digits.min(MAX_VISIBLE_DOTS); + let step = Self::DOT + Self::PADDING; + + // Jiggle when overflowed. + if digits > dots_visible && digits % 2 == 0 { + cursor.x += Self::TWITCH + } + + // Small leftmost dot. + if digits > dots_visible + 1 { + theme::DOT_SMALL.draw( + cursor - Offset::x(2 * step), + Alignment2D::TOP_LEFT, + self.style.text_color, + self.style.background_color, + ); + } + + // Greyed out dot. + if digits > dots_visible { + theme::DOT_ACTIVE.draw( + cursor - Offset::x(step), + Alignment2D::TOP_LEFT, + theme::GREY_LIGHT, + self.style.background_color, + ); + } + + // Draw a dot for each PIN digit. + for _ in 0..dots_visible { + theme::DOT_ACTIVE.draw( + cursor, + Alignment2D::TOP_LEFT, + self.style.text_color, + self.style.background_color, + ); + cursor.x += step; + } + } + + fn render_dots(&self, area: Rect, target: &mut impl Renderer) { + let mut cursor = self.size().snap(area.center(), Alignment2D::CENTER); + + let digits = self.digits.len(); + let dots_visible = digits.min(MAX_VISIBLE_DOTS); + let step = Self::DOT + Self::PADDING; + + // Jiggle when overflowed. + if digits > dots_visible && digits % 2 == 0 { + cursor.x += Self::TWITCH + } + + // Small leftmost dot. + if digits > dots_visible + 1 { + shape::ToifImage::new(cursor - Offset::x(2 * step), theme::DOT_SMALL.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(self.style.text_color) + .render(target); + } + + // Greyed out dot. + if digits > dots_visible { + shape::ToifImage::new(cursor - Offset::x(step), theme::DOT_ACTIVE.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(theme::GREY_LIGHT) + .render(target); + } + + // Draw a dot for each PIN digit. + for _ in 0..dots_visible { + shape::ToifImage::new(cursor, theme::DOT_ACTIVE.toif) + .with_align(Alignment2D::TOP_LEFT) + .with_fg(self.style.text_color) + .render(target); + cursor.x += step; + } + } +} + +impl Component for PinDots { + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.pad.place(bounds); + self.area = bounds; + self.area + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + match event { + Event::Touch(TouchEvent::TouchStart(pos)) => { + if self.area.contains(pos) { + self.display_digits = true; + self.pad.clear(); + ctx.request_paint(); + }; + None + } + Event::Touch(TouchEvent::TouchEnd(_)) => { + if mem::replace(&mut self.display_digits, false) { + self.pad.clear(); + ctx.request_paint(); + }; + None + } + _ => None, + } + } + + fn paint(&mut self) { + let dot_area = self.area.inset(HEADER_PADDING); + self.pad.paint(); + if self.display_digits { + self.paint_digits(dot_area) + } else { + self.paint_dots(dot_area) + } + } + + fn render(&mut self, target: &mut impl Renderer) { + let dot_area = self.area.inset(HEADER_PADDING); + self.pad.render(target); + if self.display_digits { + self.render_digits(dot_area, target) + } else { + self.render_dots(dot_area, target) + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + sink(self.area.inset(HEADER_PADDING)); + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for PinKeyboard<T> +where + T: AsRef<str>, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("PinKeyboard"); + // So that debuglink knows the locations of the buttons + let mut digits_order: String<10> = String::new(); + for btn in self.digit_btns.iter() { + let btn_content = btn.inner().content(); + if let ButtonContent::Text(text) = btn_content { + unwrap!(digits_order.push_str(text)); + } + } + t.string("digits_order", digits_order.as_str().into()); + t.string("pin", self.textbox.inner().pin().into()); + t.bool("display_digits", self.textbox.inner().display_digits); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs new file mode 100644 index 0000000000..48fa4303ce --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -0,0 +1,399 @@ +use core::iter; + +use heapless::String; + +use crate::{ + trezorhal::slip39, + ui::{ + component::{ + text::common::{TextBox, TextEdit}, + Component, Event, EventCtx, + }, + display, + geometry::{Alignment2D, Offset, Rect}, + model_mercury::{ + component::{ + keyboard::{ + common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, + mnemonic::{MnemonicInput, MnemonicInputMsg, MNEMONIC_KEY_COUNT}, + }, + Button, ButtonContent, ButtonMsg, + }, + theme, + }, + shape, + shape::Renderer, + util::ResultExt, + }, +}; + +const MAX_LENGTH: usize = 8; + +pub struct Slip39Input { + button: Button<&'static str>, + textbox: TextBox<MAX_LENGTH>, + multi_tap: MultiTapKeyboard, + final_word: Option<&'static str>, + input_mask: Slip39Mask, +} + +impl MnemonicInput for Slip39Input { + /// Return the key set. Keys are further specified as indices into this + /// array. + fn keys() -> [&'static str; MNEMONIC_KEY_COUNT] { + ["ab", "cd", "ef", "ghij", "klm", "nopq", "rs", "tuv", "wxyz"] + } + + /// Returns `true` if given key index can continue towards a valid mnemonic + /// word, `false` otherwise. + fn can_key_press_lead_to_a_valid_word(&self, key: usize) -> bool { + if self.input_mask.is_final() { + false + } else { + // Currently pending key is always enabled. + // Keys that mach the completion mask are enabled as well. + self.multi_tap.pending_key() == Some(key) || self.input_mask.contains_key(key) + } + } + + /// Key button was clicked. If this button is pending, let's cycle the + /// pending character in textbox. If not, let's just append the first + /// character. + fn on_key_click(&mut self, ctx: &mut EventCtx, key: usize) { + let edit = self.multi_tap.click_key(ctx, key, Self::keys()[key]); + if let TextEdit::Append(_) = edit { + // This key press wasn't just a pending key rotation, so let's push the key + // digit to the buffer. + self.textbox.append(ctx, Self::key_digit(key)); + } else { + // Ignore the pending char rotation. We use the pending key to paint + // the last character, but the mnemonic word computation depends + // only on the pressed key, not on the specific character inside it. + // Request paint of pending char. + ctx.request_paint(); + } + self.complete_word_from_dictionary(ctx); + } + + /// Backspace button was clicked, let's delete the last character of input + /// and clear the pending marker. + fn on_backspace_click(&mut self, ctx: &mut EventCtx) { + self.multi_tap.clear_pending_state(ctx); + self.textbox.delete_last(ctx); + self.complete_word_from_dictionary(ctx); + } + + /// Backspace button was long pressed, let's delete all characters of input + /// and clear the pending marker. + fn on_backspace_long_press(&mut self, ctx: &mut EventCtx) { + self.multi_tap.clear_pending_state(ctx); + self.textbox.clear(ctx); + self.complete_word_from_dictionary(ctx); + } + + fn is_empty(&self) -> bool { + self.textbox.is_empty() + } + + fn mnemonic(&self) -> Option<&'static str> { + self.final_word + } +} + +impl Component for Slip39Input { + type Msg = MnemonicInputMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.button.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if self.multi_tap.is_timeout_event(event) { + // Timeout occurred. Reset the pending key. + self.multi_tap.clear_pending_state(ctx); + return Some(MnemonicInputMsg::TimedOut); + } + if let Some(ButtonMsg::Clicked) = self.button.event(ctx, event) { + // Input button was clicked. If the whole word is totally identified, let's + // confirm it, otherwise don't do anything. + if self.input_mask.is_final() { + return Some(MnemonicInputMsg::Confirmed); + } + } + None + } + + fn paint(&mut self) { + let area = self.button.area(); + let style = self.button.style(); + + // First, paint the button background. + self.button.paint_background(style); + + // Content starts in the left-center point, offset by 16px to the right and 8px + // to the bottom. + let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); + + // To simplify things, we always copy the printed string here, even if it + // wouldn't be strictly necessary. + let mut text: String<MAX_LENGTH> = String::new(); + + if let Some(word) = self.final_word { + // We're done with input, paint the full word. + text.push_str(word) + .assert_if_debugging_ui("Text buffer is too small"); + } else { + // Paint an asterisk for each letter of input. + for ch in iter::repeat('*').take(self.textbox.content().len()) { + text.push(ch) + .assert_if_debugging_ui("Text buffer is too small"); + } + // If we're in the pending state, paint the pending character at the end. + if let (Some(key), Some(press)) = + (self.multi_tap.pending_key(), self.multi_tap.pending_press()) + { + assert!(!Self::keys()[key].is_empty()); + // Now we can be sure that the looped iterator will return a value. + let ch = unwrap!(Self::keys()[key].chars().cycle().nth(press)); + text.pop(); + text.push(ch) + .assert_if_debugging_ui("Text buffer is too small"); + } + } + display::text_left( + text_baseline, + text.as_str(), + style.font, + style.text_color, + style.button_color, + ); + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() && self.final_word.is_none() { + paint_pending_marker(text_baseline, text.as_str(), style.font, style.text_color); + } + + // Paint the icon. + if let ButtonContent::Icon(icon) = self.button.content() { + // Icon is painted in the right-center point, of expected size 16x16 pixels, and + // 16px from the right edge. + let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); + icon.draw( + icon_center, + Alignment2D::CENTER, + style.text_color, + style.button_color, + ); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + let area = self.button.area(); + let style = self.button.style(); + + // First, paint the button background. + self.button.render_background(target, style); + + // Content starts in the left-center point, offset by 16px to the right and 8px + // to the bottom. + let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); + + // To simplify things, we always copy the printed string here, even if it + // wouldn't be strictly necessary. + let mut text: String<MAX_LENGTH> = String::new(); + + if let Some(word) = self.final_word { + // We're done with input, paint the full word. + text.push_str(word) + .assert_if_debugging_ui("Text buffer is too small"); + } else { + // Paint an asterisk for each letter of input. + for ch in iter::repeat('*').take(self.textbox.content().len()) { + text.push(ch) + .assert_if_debugging_ui("Text buffer is too small"); + } + // If we're in the pending state, paint the pending character at the end. + if let (Some(key), Some(press)) = + (self.multi_tap.pending_key(), self.multi_tap.pending_press()) + { + assert!(!Self::keys()[key].is_empty()); + // Now we can be sure that the looped iterator will return a value. + let ch = unwrap!(Self::keys()[key].chars().cycle().nth(press)); + text.pop(); + text.push(ch) + .assert_if_debugging_ui("Text buffer is too small"); + } + } + shape::Text::new(text_baseline, text.as_str()) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + + // Paint the pending marker. + if self.multi_tap.pending_key().is_some() && self.final_word.is_none() { + render_pending_marker( + target, + text_baseline, + text.as_str(), + style.font, + style.text_color, + ); + } + + // Paint the icon. + if let ButtonContent::Icon(icon) = self.button.content() { + // Icon is painted in the right-center point, of expected size 16x16 pixels, and + // 16px from the right edge. + let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); + shape::ToifImage::new(icon_center, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(style.text_color) + .render(target); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.button.bounds(sink); + } +} + +impl Slip39Input { + pub fn new() -> Self { + Self { + // Button has the same style the whole time + button: Button::empty().styled(theme::button_pin_confirm()), + textbox: TextBox::empty(), + multi_tap: MultiTapKeyboard::new(), + final_word: None, + input_mask: Slip39Mask::full(), + } + } + + pub fn prefilled_word(word: &str) -> Self { + // Word may be empty string, fallback to normal input + if word.is_empty() { + return Self::new(); + } + + let (buff, input_mask, final_word) = Self::setup_from_prefilled_word(word); + + Self { + // Button has the same style the whole time + button: Button::empty().styled(theme::button_pin_confirm()), + textbox: TextBox::new(buff), + multi_tap: MultiTapKeyboard::new(), + final_word, + input_mask, + } + } + + fn setup_from_prefilled_word( + word: &str, + ) -> (String<MAX_LENGTH>, Slip39Mask, Option<&'static str>) { + let mut buff: String<MAX_LENGTH> = String::new(); + + // Gradually appending encoded key digits to the buffer and checking if + // have not already formed a final word. + for ch in word.chars() { + let mut index = 0; + for (i, key) in Self::keys().iter().enumerate() { + if key.contains(ch) { + index = i; + break; + } + } + buff.push(Self::key_digit(index)) + .assert_if_debugging_ui("Text buffer is too small"); + + let sequence: Option<u16> = buff.parse().ok(); + let input_mask = sequence + .and_then(slip39::word_completion_mask) + .map(Slip39Mask) + .unwrap_or_else(Slip39Mask::full); + let final_word = if input_mask.is_final() { + sequence.and_then(slip39::button_sequence_to_word) + } else { + None + }; + + // As soon as we have a final word, we can stop. + if final_word.is_some() { + return (buff, input_mask, final_word); + } + } + (buff, Slip39Mask::full(), None) + } + + /// Convert a key index into the key digit. This is what we push into the + /// input buffer. + /// + /// # Examples + /// + /// ``` + /// Self::key_digit(0) == '1'; + /// Self::key_digit(1) == '2'; + /// ``` + fn key_digit(key: usize) -> char { + let index = key + 1; + unwrap!(char::from_digit(index as u32, 10)) + } + + fn complete_word_from_dictionary(&mut self, ctx: &mut EventCtx) { + let sequence = self.input_sequence(); + self.input_mask = sequence + .and_then(slip39::word_completion_mask) + .map(Slip39Mask) + .unwrap_or_else(Slip39Mask::full); + self.final_word = if self.input_mask.is_final() { + sequence.and_then(slip39::button_sequence_to_word) + } else { + None + }; + + // Change the style of the button depending on the input. + if self.final_word.is_some() { + // Confirm button. + self.button.enable(ctx); + self.button + .set_content(ctx, ButtonContent::Icon(theme::ICON_LIST_CHECK)); + } else { + // Disabled button. + self.button.disable(ctx); + self.button.set_content(ctx, ButtonContent::Text("")); + } + } + + fn input_sequence(&self) -> Option<u16> { + self.textbox.content().parse().ok() + } +} + +struct Slip39Mask(u16); + +impl Slip39Mask { + /// Return a mask with all keys allowed. + fn full() -> Self { + Self(0x1FF) // All buttons are allowed. 9-bit bitmap all set to 1. + } + + /// Returns `true` if `key` can lead to a valid SLIP39 word with this mask. + fn contains_key(&self, key: usize) -> bool { + self.0 & (1 << key) != 0 + } + + /// Returns `true` if mask has exactly one bit set to 1, or is equal to 0. + fn is_final(&self) -> bool { + self.0.count_ones() <= 1 + } +} + +// DEBUG-ONLY SECTION BELOW + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Slip39Input { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Slip39Input"); + t.child("textbox", &self.textbox); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs new file mode 100644 index 0000000000..778fcda99b --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -0,0 +1,80 @@ +use crate::ui::{ + component::{Component, Event, EventCtx}, + geometry::{Grid, GridCellSpan, Rect}, + model_mercury::{ + component::button::{Button, ButtonMsg}, + theme, + }, + shape::Renderer, +}; + +const NUMBERS: [u32; 5] = [12, 18, 20, 24, 33]; +const LABELS: [&str; 5] = ["12", "18", "20", "24", "33"]; +const CELLS: [(usize, usize); 5] = [(0, 0), (0, 2), (0, 4), (1, 0), (1, 2)]; + +pub struct SelectWordCount { + button: [Button<&'static str>; NUMBERS.len()], +} + +pub enum SelectWordCountMsg { + Selected(u32), +} + +impl SelectWordCount { + pub fn new() -> Self { + SelectWordCount { + button: LABELS.map(|t| Button::with_text(t).styled(theme::button_pin())), + } + } +} + +impl Component for SelectWordCount { + type Msg = SelectWordCountMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + let (_, bounds) = bounds.split_bottom(2 * theme::BUTTON_HEIGHT + theme::BUTTON_SPACING); + let grid = Grid::new(bounds, 2, 6).with_spacing(theme::BUTTON_SPACING); + for (btn, (x, y)) in self.button.iter_mut().zip(CELLS) { + btn.place(grid.cells(GridCellSpan { + from: (x, y), + to: (x, y + 1), + })); + } + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + for (i, btn) in self.button.iter_mut().enumerate() { + if let Some(ButtonMsg::Clicked) = btn.event(ctx, event) { + return Some(SelectWordCountMsg::Selected(NUMBERS[i])); + } + } + None + } + + fn paint(&mut self) { + for btn in self.button.iter_mut() { + btn.paint() + } + } + + fn render(&mut self, target: &mut impl Renderer) { + for btn in self.button.iter_mut() { + btn.render(target) + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + for btn in self.button.iter() { + btn.bounds(sink) + } + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for SelectWordCount { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("SelectWordCount"); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs new file mode 100644 index 0000000000..25ea93e7e4 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -0,0 +1,276 @@ +use crate::{ + error::Error, + micropython::buffer::StrBuffer, + strutil::{self, StringType}, + translations::TR, + ui::{ + component::{ + base::ComponentExt, + paginated::Paginate, + text::paragraphs::{Paragraph, Paragraphs}, + Child, Component, Event, EventCtx, Pad, + }, + display::{self, Font}, + geometry::{Alignment, Grid, Insets, Offset, Rect}, + shape::{self, Renderer}, + }, +}; + +use super::{theme, Button, ButtonMsg}; + +pub enum NumberInputDialogMsg { + Selected, + InfoRequested, +} + +pub struct NumberInputDialog<T, F> +where + F: Fn(u32) -> T, +{ + area: Rect, + description_func: F, + input: Child<NumberInput>, + paragraphs: Child<Paragraphs<Paragraph<T>>>, + paragraphs_pad: Pad, + info_button: Child<Button<StrBuffer>>, + confirm_button: Child<Button<StrBuffer>>, +} + +impl<T, F> NumberInputDialog<T, F> +where + F: Fn(u32) -> T, + T: StringType, +{ + pub fn new(min: u32, max: u32, init_value: u32, description_func: F) -> Result<Self, Error> { + let text = description_func(init_value); + Ok(Self { + area: Rect::zero(), + description_func, + input: NumberInput::new(min, max, init_value).into_child(), + paragraphs: Paragraphs::new(Paragraph::new(&theme::TEXT_NORMAL, text)).into_child(), + paragraphs_pad: Pad::with_background(theme::BG), + info_button: Button::with_text(TR::buttons__info.try_into()?).into_child(), + confirm_button: Button::with_text(TR::buttons__continue.try_into()?) + .styled(theme::button_confirm()) + .into_child(), + }) + } + + fn update_text(&mut self, ctx: &mut EventCtx, value: u32) { + let text = (self.description_func)(value); + self.paragraphs.mutate(ctx, move |ctx, para| { + para.inner_mut().update(text); + // Recompute bounding box. + para.change_page(0); + ctx.request_paint() + }); + self.paragraphs_pad.clear(); + ctx.request_paint(); + } + + pub fn value(&self) -> u32 { + self.input.inner().value + } +} + +impl<T, F> Component for NumberInputDialog<T, F> +where + T: StringType, + F: Fn(u32) -> T, +{ + type Msg = NumberInputDialogMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + let button_height = theme::BUTTON_HEIGHT; + let content_area = self.area.inset(Insets::top(2 * theme::BUTTON_SPACING)); + let (input_area, content_area) = content_area.split_top(button_height); + let (content_area, button_area) = content_area.split_bottom(button_height); + let content_area = content_area.inset(Insets::new( + theme::BUTTON_SPACING, + 0, + theme::BUTTON_SPACING, + theme::CONTENT_BORDER, + )); + + let grid = Grid::new(button_area, 1, 2).with_spacing(theme::KEYBOARD_SPACING); + self.input.place(input_area); + self.paragraphs.place(content_area); + self.paragraphs_pad.place(content_area); + self.info_button.place(grid.row_col(0, 0)); + self.confirm_button.place(grid.row_col(0, 1)); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Some(NumberInputMsg::Changed(i)) = self.input.event(ctx, event) { + self.update_text(ctx, i); + } + self.paragraphs.event(ctx, event); + if let Some(ButtonMsg::Clicked) = self.info_button.event(ctx, event) { + return Some(Self::Msg::InfoRequested); + } + if let Some(ButtonMsg::Clicked) = self.confirm_button.event(ctx, event) { + return Some(Self::Msg::Selected); + }; + None + } + + fn paint(&mut self) { + self.input.paint(); + self.paragraphs_pad.paint(); + self.paragraphs.paint(); + self.info_button.paint(); + self.confirm_button.paint(); + } + + fn render(&mut self, target: &mut impl Renderer) { + self.input.render(target); + self.paragraphs_pad.render(target); + self.paragraphs.render(target); + self.info_button.render(target); + self.confirm_button.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + self.input.bounds(sink); + self.paragraphs.bounds(sink); + self.info_button.bounds(sink); + self.confirm_button.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<T, F> crate::trace::Trace for NumberInputDialog<T, F> +where + T: StringType, + F: Fn(u32) -> T, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("NumberInputDialog"); + t.child("input", &self.input); + t.child("paragraphs", &self.paragraphs); + t.child("info_button", &self.info_button); + t.child("confirm_button", &self.confirm_button); + } +} + +pub enum NumberInputMsg { + Changed(u32), +} + +pub struct NumberInput { + area: Rect, + dec: Child<Button<&'static str>>, + inc: Child<Button<&'static str>>, + min: u32, + max: u32, + value: u32, +} + +impl NumberInput { + pub fn new(min: u32, max: u32, value: u32) -> Self { + let dec = Button::with_text("-") + .styled(theme::button_counter()) + .into_child(); + let inc = Button::with_text("+") + .styled(theme::button_counter()) + .into_child(); + let value = value.clamp(min, max); + Self { + area: Rect::zero(), + dec, + inc, + min, + max, + value, + } + } +} + +impl Component for NumberInput { + type Msg = NumberInputMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + let grid = Grid::new(bounds, 1, 3).with_spacing(theme::KEYBOARD_SPACING); + self.dec.place(grid.row_col(0, 0)); + self.inc.place(grid.row_col(0, 2)); + self.area = grid.row_col(0, 1); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let mut changed = false; + if let Some(ButtonMsg::Clicked) = self.dec.event(ctx, event) { + self.value = self.min.max(self.value.saturating_sub(1)); + changed = true; + }; + if let Some(ButtonMsg::Clicked) = self.inc.event(ctx, event) { + self.value = self.max.min(self.value.saturating_add(1)); + changed = true; + }; + if changed { + self.dec + .mutate(ctx, |ctx, btn| btn.enable_if(ctx, self.value > self.min)); + self.inc + .mutate(ctx, |ctx, btn| btn.enable_if(ctx, self.value < self.max)); + ctx.request_paint(); + return Some(NumberInputMsg::Changed(self.value)); + } + None + } + + fn paint(&mut self) { + let mut buf = [0u8; 10]; + if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { + let digit_font = Font::DEMIBOLD; + let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET; + display::rect_fill(self.area, theme::BG); + display::text_center( + self.area.center() + Offset::y(y_offset), + text, + digit_font, + theme::FG, + theme::BG, + ); + } + self.dec.paint(); + self.inc.paint(); + } + + fn render(&mut self, target: &mut impl Renderer) { + let mut buf = [0u8; 10]; + + if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { + let digit_font = Font::DEMIBOLD; + let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET; + + shape::Bar::new(self.area).with_bg(theme::BG).render(target); + shape::Text::new(self.area.center() + Offset::y(y_offset), text) + .with_align(Alignment::Center) + .with_fg(theme::FG) + .with_font(digit_font) + .render(target); + } + + self.dec.render(target); + self.inc.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.dec.bounds(sink); + self.inc.bounds(sink); + sink(self.area) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for NumberInput { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("NumberInput"); + t.int("value", self.value as i64); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs new file mode 100644 index 0000000000..30ab3758f8 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -0,0 +1,851 @@ +use crate::{ + error::Error, + micropython::buffer::StrBuffer, + time::Instant, + translations::TR, + ui::{ + component::{paginated::PageMsg, Component, ComponentExt, Event, EventCtx, Pad, Paginate}, + constant, + display::{self, Color}, + geometry::{Insets, Rect}, + shape::Renderer, + util::animation_disabled, + }, +}; + +use super::{ + theme, Button, ButtonContent, ButtonMsg, ButtonStyleSheet, Loader, LoaderMsg, ScrollBar, Swipe, + SwipeDirection, +}; + +/// Allows pagination of inner component. Shows scroll bar, confirm & cancel +/// buttons. Optionally handles hold-to-confirm with loader. +pub struct ButtonPage<T, U> { + /// Inner component. + content: T, + /// Cleared when page changes. + pad: Pad, + /// Swipe controller. + swipe: Swipe, + scrollbar: ScrollBar, + /// Hold-to-confirm mode whenever this is `Some(loader)`. + loader: Option<Loader>, + button_cancel: Option<Button<U>>, + button_confirm: Button<U>, + button_prev: Button<&'static str>, + button_next: Button<&'static str>, + /// Show cancel button instead of back button. + cancel_from_any_page: bool, + /// Whether to pass-through left swipe to parent component. + swipe_left: bool, + /// Whether to pass-through right swipe to parent component. + swipe_right: bool, + /// Fade to given backlight level on next paint(). + fade: Option<u16>, +} + +impl<T> ButtonPage<T, StrBuffer> +where + T: Paginate, + T: Component, +{ + pub fn with_hold(mut self) -> Result<Self, Error> { + self.button_confirm = Button::with_text(TR::buttons__hold_to_confirm.try_into()?) + .styled(theme::button_confirm()); + self.loader = Some(Loader::new()); + Ok(self) + } +} + +impl<T, U> ButtonPage<T, U> +where + T: Paginate, + T: Component, + U: AsRef<str> + From<&'static str>, +{ + pub fn new(content: T, background: Color) -> Self { + Self { + content, + pad: Pad::with_background(background), + swipe: Swipe::new(), + scrollbar: ScrollBar::vertical(), + loader: None, + button_cancel: Some(Button::with_icon(theme::ICON_CANCEL)), + button_confirm: Button::with_icon(theme::ICON_CONFIRM).styled(theme::button_confirm()), + button_prev: Button::with_icon(theme::ICON_UP).initially_enabled(false), + button_next: Button::with_icon(theme::ICON_DOWN), + cancel_from_any_page: false, + swipe_left: false, + swipe_right: false, + fade: None, + } + } + + pub fn without_cancel(mut self) -> Self { + self.button_cancel = None; + self + } + + pub fn with_cancel_confirm(mut self, left: Option<U>, right: Option<U>) -> Self { + let cancel = match left { + Some(verb) => match verb.as_ref() { + "^" => Button::with_icon(theme::ICON_UP), + "<" => Button::with_icon(theme::ICON_BACK), + _ => Button::with_text(verb), + }, + _ => Button::with_icon(theme::ICON_CANCEL), + }; + let confirm = match right { + Some(verb) => Button::with_text(verb).styled(theme::button_confirm()), + _ => Button::with_icon(theme::ICON_CONFIRM).styled(theme::button_confirm()), + }; + self.button_cancel = Some(cancel); + self.button_confirm = confirm; + self + } + + pub fn with_back_button(mut self) -> Self { + self.cancel_from_any_page = true; + self.button_prev = Button::with_icon(theme::ICON_BACK).initially_enabled(false); + self.button_cancel = Some(Button::with_icon(theme::ICON_BACK)); + self + } + + pub fn with_cancel_arrow(mut self) -> Self { + self.button_cancel = Some(Button::with_icon(theme::ICON_UP)); + self + } + + pub fn with_confirm_style(mut self, style: ButtonStyleSheet) -> Self { + self.button_confirm = self.button_confirm.styled(style); + self + } + + pub fn with_swipe_left(mut self) -> Self { + self.swipe_left = true; + self + } + + pub fn with_swipe_right(mut self) -> Self { + self.swipe_right = true; + self + } + + fn setup_swipe(&mut self) { + self.swipe.allow_up = self.scrollbar.has_next_page(); + self.swipe.allow_down = self.scrollbar.has_previous_page(); + self.swipe.allow_left = self.swipe_left; + self.swipe.allow_right = self.swipe_right; + } + + fn change_page(&mut self, ctx: &mut EventCtx, step: isize) { + // Advance scrollbar. + self.scrollbar.go_to_relative(step); + + // Adjust the swipe parameters according to the scrollbar. + self.setup_swipe(); + + // Enable/disable prev button. + self.button_prev + .enable_if(ctx, self.scrollbar.has_previous_page()); + + // Change the page in the content, make sure it gets completely repainted and + // clear the background under it. + self.content.change_page(self.scrollbar.active_page); + self.content.request_complete_repaint(ctx); + self.pad.clear(); + + // Swipe has dimmed the screen, so fade back to normal backlight after the next + // paint. + self.fade = Some(theme::BACKLIGHT_NORMAL); + } + + fn is_cancel_visible(&self) -> bool { + self.cancel_from_any_page || !self.scrollbar.has_previous_page() + } + + /// Area for drawing loader (and black rectangle behind it). Can be outside + /// bounds as we repaint entire UI tree after hiding the loader. + const fn loader_area() -> Rect { + constant::screen() + .inset(theme::borders()) + .inset(Insets::bottom(theme::BUTTON_HEIGHT + theme::BUTTON_SPACING)) + } + + fn handle_swipe( + &mut self, + ctx: &mut EventCtx, + event: Event, + ) -> HandleResult<<Self as Component>::Msg> { + if let Some(swipe) = self.swipe.event(ctx, event) { + match swipe { + SwipeDirection::Up => { + // Scroll down, if possible. + return HandleResult::NextPage; + } + SwipeDirection::Down => { + // Scroll up, if possible. + return HandleResult::PrevPage; + } + SwipeDirection::Left if self.swipe_left => { + return HandleResult::Return(PageMsg::SwipeLeft); + } + SwipeDirection::Right if self.swipe_right => { + return HandleResult::Return(PageMsg::SwipeRight); + } + _ => { + // Ignore other directions. + } + } + } + + HandleResult::Continue + } + + fn handle_button( + &mut self, + ctx: &mut EventCtx, + event: Event, + ) -> HandleResult<(Option<<Self as Component>::Msg>, Option<ButtonMsg>)> { + if self.scrollbar.has_next_page() { + if let Some(ButtonMsg::Clicked) = self.button_next.event(ctx, event) { + return HandleResult::NextPage; + } + } else { + let result = self.button_confirm.event(ctx, event); + match result { + Some(ButtonMsg::Clicked) => { + return HandleResult::Return((Some(PageMsg::Confirmed), result)) + } + Some(_) => return HandleResult::Return((None, result)), + None => {} + } + } + if self.is_cancel_visible() { + if let Some(ButtonMsg::Clicked) = self.button_cancel.event(ctx, event) { + return HandleResult::Return((Some(PageMsg::Cancelled), None)); + } + } else if let Some(ButtonMsg::Clicked) = self.button_prev.event(ctx, event) { + return HandleResult::PrevPage; + } + + HandleResult::Continue + } + + fn handle_hold( + &mut self, + ctx: &mut EventCtx, + event: Event, + button_msg: &Option<ButtonMsg>, + ) -> HandleResult<<Self as Component>::Msg> { + let Some(loader) = &mut self.loader else { + return HandleResult::Continue; + }; + let now = Instant::now(); + + if let Some(LoaderMsg::ShrunkCompletely) = loader.event(ctx, event) { + // Switch it to the initial state, so we stop painting it. + loader.reset(); + // Re-draw the whole content tree. + self.content.request_complete_repaint(ctx); + // Loader overpainted our bounds, repaint entire screen from scratch. + ctx.request_repaint_root() + // This can be a result of an animation frame event, we should take + // care to not short-circuit here and deliver the event to the + // content as well. + } + match button_msg { + Some(ButtonMsg::Pressed) => { + loader.start_growing(ctx, now); + loader.pad.clear(); // Clear the remnants of the content. + } + Some(ButtonMsg::Released) => { + loader.start_shrinking(ctx, now); + } + Some(ButtonMsg::Clicked) => { + if loader.is_completely_grown(now) || animation_disabled() { + return HandleResult::Return(PageMsg::Confirmed); + } else { + loader.start_shrinking(ctx, now); + } + } + _ => {} + } + + HandleResult::Continue + } +} + +enum HandleResult<T> { + Return(T), + PrevPage, + NextPage, + Continue, +} + +impl<T, U> Component for ButtonPage<T, U> +where + T: Paginate, + T: Component, + U: AsRef<str> + From<&'static str>, +{ + type Msg = PageMsg<T::Msg>; + + fn place(&mut self, bounds: Rect) -> Rect { + let small_left_button = match (&self.button_cancel, &self.button_confirm) { + (None, _) => true, + (Some(cancel), confirm) => match (cancel.content(), confirm.content()) { + (ButtonContent::Text(t), _) => t.as_ref().len() <= 4, + (ButtonContent::Icon(_), ButtonContent::Icon(_)) => false, + _ => true, + }, + }; + let layout = PageLayout::new(bounds, small_left_button); + self.pad.place(bounds); + self.swipe.place(bounds); + self.button_cancel.place(layout.button_left); + self.button_confirm.place(layout.button_right); + self.button_prev.place(layout.button_left); + self.button_next.place(layout.button_right); + self.scrollbar.place(layout.scrollbar); + + // Layout the content. Try to fit it on a single page first, and reduce the area + // to make space for a scrollbar if it doesn't fit. + self.content.place(layout.content_single_page); + let page_count = { + let count = self.content.page_count(); + if count > 1 { + self.content.place(layout.content); + self.content.page_count() // Make sure to re-count it with the + // new size. + } else { + count // Content fits on a single page. + } + }; + + if page_count == 1 && self.button_cancel.is_none() { + self.button_confirm.place(layout.button_both); + } + + // Now that we finally have the page count, we can setup the scrollbar and the + // swiper. + self.scrollbar.set_count_and_active_page(page_count, 0); + self.setup_swipe(); + + self.loader.place(Self::loader_area()); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + ctx.set_page_count(self.scrollbar.page_count); + + match self.handle_swipe(ctx, event) { + HandleResult::Return(r) => return Some(r), + HandleResult::PrevPage => { + self.change_page(ctx, -1); + return None; + } + HandleResult::NextPage => { + self.change_page(ctx, 1); + return None; + } + HandleResult::Continue => {} + } + + if let Some(msg) = self.content.event(ctx, event) { + return Some(PageMsg::Content(msg)); + } + + let mut confirm_button_msg = None; + let mut button_result = None; + + match self.handle_button(ctx, event) { + HandleResult::Return((Some(r), None)) => return Some(r), + HandleResult::Return((r, m)) => { + button_result = r; + confirm_button_msg = m; + } + HandleResult::PrevPage => { + self.change_page(ctx, -1); + return None; + } + HandleResult::NextPage => { + self.change_page(ctx, 1); + return None; + } + HandleResult::Continue => {} + } + + if self.loader.is_some() { + return match self.handle_hold(ctx, event, &confirm_button_msg) { + HandleResult::Return(r) => Some(r), + HandleResult::Continue => None, + _ => unreachable!(), + }; + } + button_result + } + + fn paint(&mut self) { + self.pad.paint(); + match &self.loader { + Some(l) if l.is_animating() => self.loader.paint(), + _ => { + self.content.paint(); + if self.scrollbar.has_pages() { + self.scrollbar.paint(); + } + } + } + if self.button_cancel.is_some() && self.is_cancel_visible() { + self.button_cancel.paint(); + } else { + self.button_prev.paint(); + } + if self.scrollbar.has_next_page() { + self.button_next.paint(); + } else { + self.button_confirm.paint(); + } + if let Some(val) = self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(val); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + self.pad.render(target); + match &self.loader { + Some(l) if l.is_animating() => self.loader.render(target), + _ => { + self.content.render(target); + if self.scrollbar.has_pages() { + self.scrollbar.render(target); + } + } + } + if self.button_cancel.is_some() && self.is_cancel_visible() { + self.button_cancel.render(target); + } else { + self.button_prev.render(target); + } + if self.scrollbar.has_next_page() { + self.button_next.render(target); + } else { + self.button_confirm.render(target); + } + if let Some(val) = self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(val); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.pad.area); + self.scrollbar.bounds(sink); + self.content.bounds(sink); + self.button_cancel.bounds(sink); + self.button_confirm.bounds(sink); + self.button_prev.bounds(sink); + self.button_next.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<T, U> crate::trace::Trace for ButtonPage<T, U> +where + T: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("ButtonPage"); + t.int("active_page", self.scrollbar.active_page as i64); + t.int("page_count", self.scrollbar.page_count as i64); + t.bool("hold", self.loader.is_some()); + t.child("content", &self.content); + } +} + +pub struct PageLayout { + /// Content when it fits on single page (no scrollbar). + pub content_single_page: Rect, + /// Content when multiple pages. + pub content: Rect, + /// Scroll bar when multiple pages. + pub scrollbar: Rect, + /// Controls displayed on last page. + pub button_left: Rect, + pub button_right: Rect, + pub button_both: Rect, +} + +impl PageLayout { + const SCROLLBAR_WIDTH: i16 = 8; + const SCROLLBAR_SPACE: i16 = 5; + + pub fn new(area: Rect, small_left_button: bool) -> Self { + let (area, button_both) = area.split_bottom(theme::BUTTON_HEIGHT); + let area = area.inset(Insets::bottom(theme::BUTTON_SPACING)); + let (_space, content) = area.split_left(theme::CONTENT_BORDER); + let (content_single_page, _space) = content.split_right(theme::CONTENT_BORDER); + let (content, scrollbar) = + content.split_right(Self::SCROLLBAR_SPACE + Self::SCROLLBAR_WIDTH); + let (_space, scrollbar) = scrollbar.split_left(Self::SCROLLBAR_SPACE); + + let width = if small_left_button { + theme::BUTTON_WIDTH + } else { + (button_both.width() - theme::BUTTON_SPACING) / 2 + }; + let (button_left, button_right) = button_both.split_left(width); + let button_right = button_right.inset(Insets::left(theme::BUTTON_SPACING)); + + Self { + content_single_page, + content, + scrollbar, + button_left, + button_right, + button_both, + } + } +} + +#[cfg(test)] +mod tests { + use serde_json; + + use crate::{ + strutil::SkipPrefix, + trace::tests::trace, + ui::{ + component::text::paragraphs::{Paragraph, Paragraphs}, + event::TouchEvent, + geometry::Point, + model_mercury::{constant, theme}, + }, + }; + + use super::*; + + const SCREEN: Rect = constant::screen().inset(theme::borders()); + + impl SkipPrefix for &str { + fn skip_prefix(&self, chars: usize) -> Self { + &self[chars..] + } + } + + fn swipe(component: &mut impl Component, points: &[(i16, i16)]) { + let last = points.len().saturating_sub(1); + let mut first = true; + let mut ctx = EventCtx::new(); + for (i, &(x, y)) in points.iter().enumerate() { + let p = Point::new(x, y); + let ev = if first { + TouchEvent::TouchStart(p) + } else if i == last { + TouchEvent::TouchEnd(p) + } else { + TouchEvent::TouchMove(p) + }; + component.event(&mut ctx, Event::Touch(ev)); + ctx.clear(); + first = false; + } + } + + fn swipe_up(component: &mut impl Component) { + swipe(component, &[(20, 100), (20, 60), (20, 20)]) + } + + fn swipe_down(component: &mut impl Component) { + swipe(component, &[(20, 20), (20, 60), (20, 100)]) + } + + #[test] + fn paragraphs_empty() { + let mut page = ButtonPage::<_, &'static str>::new( + Paragraphs::<[Paragraph<&'static str>; 0]>::new([]), + theme::BG, + ); + page.place(SCREEN); + + let expected = serde_json::json!({ + "component": "ButtonPage", + "active_page": 0, + "page_count": 1, + "content": { + "component": "Paragraphs", + "paragraphs": [], + }, + "hold": false, + }); + + assert_eq!(trace(&page), expected); + swipe_up(&mut page); + assert_eq!(trace(&page), expected); + swipe_down(&mut page); + assert_eq!(trace(&page), expected); + } + + #[test] + fn paragraphs_single() { + let mut page = ButtonPage::<_, &'static str>::new( + Paragraphs::new([ + Paragraph::new( + &theme::TEXT_NORMAL, + "This is the first paragraph and it should fit on the screen entirely.", + ), + Paragraph::new( + &theme::TEXT_BOLD, + "Second, bold, paragraph should also fit on the screen whole I think.", + ), + ]), + theme::BG, + ); + page.place(SCREEN); + + let expected = serde_json::json!({ + "component": "ButtonPage", + "active_page": 0, + "page_count": 1, + "content": { + "component": "Paragraphs", + "paragraphs": [ + ["This is the first", "\n", "paragraph and it should", "\n", "fit on the screen", "\n", "entirely."], + ["Second, bold, paragraph", "\n", "should also fit on the", "\n", "screen whole I think."], + ], + }, + "hold": false, + }); + + assert_eq!(trace(&page), expected); + swipe_up(&mut page); + assert_eq!(trace(&page), expected); + swipe_down(&mut page); + assert_eq!(trace(&page), expected); + } + + #[test] + fn paragraphs_one_long() { + let mut page = ButtonPage::<_, &'static str>::new( + Paragraphs::new( + Paragraph::new( + &theme::TEXT_BOLD, + "This is somewhat long paragraph that goes on and on and on and on and on and will definitely not fit on just a single screen. You have to swipe a bit to see all the text it contains I guess. There's just so much letters in it.", + ) + ), + theme::BG, + ); + page.place(SCREEN); + + let first_page = serde_json::json!({ + "component": "ButtonPage", + "active_page": 0, + "page_count": 2, + "content": { + "component": "Paragraphs", + "paragraphs": [ + [ + "This is somewhat long", "\n", + "paragraph that goes on", "\n", + "and on and on and on and", "\n", + "on and will definitely not", "\n", + "fit on just a single", "\n", + "screen. You have to", "\n", + "swipe a bit to see all the", "\n", + "text it contains I guess.", "...", + ], + ], + }, + "hold": false, + }); + let second_page = serde_json::json!({ + "component": "ButtonPage", + "active_page": 1, + "page_count": 2, + "content": { + "component": "Paragraphs", + "paragraphs": [ + ["There's just so much", "\n", "letters in it."], + ], + }, + "hold": false, + }); + + assert_eq!(trace(&page), first_page); + swipe_down(&mut page); + assert_eq!(trace(&page), first_page); + swipe_up(&mut page); + assert_eq!(trace(&page), second_page); + swipe_up(&mut page); + assert_eq!(trace(&page), second_page); + swipe_down(&mut page); + assert_eq!(trace(&page), first_page); + } + + #[test] + fn paragraphs_three_long() { + let mut page = ButtonPage::<_, &'static str>::new( + Paragraphs::new([ + Paragraph::new( + &theme::TEXT_BOLD, + "This paragraph is using a bold font. It doesn't need to be all that long.", + ), + Paragraph::new( + &theme::TEXT_MONO, + "And this one is using MONO. Monospace is nice for numbers, they have the same width and can be scanned quickly. Even if they span several pages or something.", + ), + Paragraph::new( + &theme::TEXT_BOLD, + "Let's add another one for a good measure. This one should overflow all the way to the third page with a bit of luck.", + ), + ]), + theme::BG, + ); + page.place(SCREEN); + + let first_page = serde_json::json!({ + "component": "ButtonPage", + "active_page": 0, + "page_count": 3, + "content": { + "component": "Paragraphs", + "paragraphs": [ + [ + "This paragraph is using a", "\n", + "bold font. It doesn't need", "\n", + "to be all that long.", + ], + [ + "And this one is u", "\n", + "sing MONO. Monosp", "\n", + "ace is nice for n", "\n", + "umbers, they", "...", + ], + ], + }, + "hold": false, + }); + let second_page = serde_json::json!({ + "component": "ButtonPage", + "active_page": 1, + "page_count": 3, + "content": { + "component": "Paragraphs", + "paragraphs": [ + [ + "...", "have the same", "\n", + "width and can be", "\n", + "scanned quickly.", "\n", + "Even if they span", "\n", + "several pages or", "\n", + "something.", + ], + [ + "Let's add another one", "...", + ], + ], + }, + "hold": false, + }); + let third_page = serde_json::json!({ + "component": "ButtonPage", + "active_page": 2, + "page_count": 3, + "content": { + "component": "Paragraphs", + "paragraphs": [ + [ + "for a good measure. This", "\n", + "one should overflow all", "\n", + "the way to the third page", "\n", + "with a bit of luck.", + ], + ], + }, + "hold": false, + }); + + assert_eq!(trace(&page), first_page); + swipe_down(&mut page); + assert_eq!(trace(&page), first_page); + swipe_up(&mut page); + assert_eq!(trace(&page), second_page); + swipe_up(&mut page); + assert_eq!(trace(&page), third_page); + swipe_up(&mut page); + assert_eq!(trace(&page), third_page); + swipe_down(&mut page); + assert_eq!(trace(&page), second_page); + swipe_down(&mut page); + assert_eq!(trace(&page), first_page); + swipe_down(&mut page); + assert_eq!(trace(&page), first_page); + } + + #[test] + fn paragraphs_hard_break() { + let mut page = ButtonPage::<_, &'static str>::new( + Paragraphs::new([ + Paragraph::new(&theme::TEXT_NORMAL, "Short one.").break_after(), + Paragraph::new(&theme::TEXT_NORMAL, "Short two.").break_after(), + Paragraph::new(&theme::TEXT_NORMAL, "Short three.").break_after(), + ]), + theme::BG, + ); + page.place(SCREEN); + + let first_page = serde_json::json!({ + "component": "ButtonPage", + "active_page": 0, + "page_count": 3, + "content": { + "component": "Paragraphs", + "paragraphs": [ + [ + "Short one.", + ], + ], + }, + "hold": false, + }); + let second_page = serde_json::json!({ + "component": "ButtonPage", + "active_page": 1, + "page_count": 3, + "content": { + "component": "Paragraphs", + "paragraphs": [ + [ + "Short two.", + ], + ], + }, + "hold": false, + }); + let third_page = serde_json::json!({ + "component": "ButtonPage", + "active_page": 2, + "page_count": 3, + "content": { + "component": "Paragraphs", + "paragraphs": [ + [ + "Short three.", + ], + ], + }, + "hold": false, + }); + + assert_eq!(trace(&page), first_page); + swipe_up(&mut page); + assert_eq!(trace(&page), second_page); + swipe_up(&mut page); + assert_eq!(trace(&page), third_page); + swipe_up(&mut page); + assert_eq!(trace(&page), third_page); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs new file mode 100644 index 0000000000..8b7f64c19a --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -0,0 +1,183 @@ +use core::mem; + +use crate::{ + error::Error, + strutil::StringType, + ui::{ + canvas::algo::PI4, + component::{ + base::ComponentExt, + paginated::Paginate, + text::paragraphs::{Paragraph, Paragraphs}, + Child, Component, Event, EventCtx, Label, Never, Pad, + }, + display::{self, Font}, + geometry::{Insets, Offset, Rect}, + model_mercury::constant, + shape, + shape::Renderer, + util::animation_disabled, + }, +}; + +use super::theme; + +pub struct Progress<T> { + title: Child<Label<T>>, + value: u16, + loader_y_offset: i16, + indeterminate: bool, + description: Child<Paragraphs<Paragraph<T>>>, + description_pad: Pad, + update_description: fn(&str) -> Result<T, Error>, +} + +impl<T> Progress<T> +where + T: StringType, +{ + const AREA: Rect = constant::screen().inset(theme::borders()); + + pub fn new( + title: T, + indeterminate: bool, + description: T, + update_description: fn(&str) -> Result<T, Error>, + ) -> Self { + Self { + title: Label::centered(title, theme::label_progress()).into_child(), + value: 0, + loader_y_offset: 0, + indeterminate, + description: Paragraphs::new( + Paragraph::new(&theme::TEXT_NORMAL, description).centered(), + ) + .into_child(), + description_pad: Pad::with_background(theme::BG), + update_description, + } + } +} + +impl<T> Component for Progress<T> +where + T: StringType, +{ + type Msg = Never; + + fn place(&mut self, _bounds: Rect) -> Rect { + let description_lines = 1 + self + .description + .inner() + .inner() + .content() + .as_ref() + .chars() + .filter(|c| *c == '\n') + .count() as i16; + let (title, rest) = Self::AREA.split_top(self.title.inner().max_size().y); + let (loader, description) = + rest.split_bottom(Font::NORMAL.line_height() * description_lines); + let loader = loader.inset(Insets::top(theme::CONTENT_BORDER)); + self.title.place(title); + self.loader_y_offset = loader.center().y - constant::screen().center().y; + self.description.place(description); + self.description_pad.place(description); + Self::AREA + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Event::Progress(new_value, new_description) = event { + if mem::replace(&mut self.value, new_value) != new_value { + if !animation_disabled() { + ctx.request_paint(); + } + self.description.mutate(ctx, |ctx, para| { + if para.inner_mut().content().as_ref() != new_description { + let new_description = unwrap!((self.update_description)(new_description)); + para.inner_mut().update(new_description); + para.change_page(0); // Recompute bounding box. + ctx.request_paint(); + self.description_pad.clear(); + } + }); + } + } + None + } + + fn paint(&mut self) { + self.title.paint(); + if self.indeterminate { + display::loader_indeterminate( + self.value, + self.loader_y_offset, + theme::FG, + theme::BG, + None, + ); + } else { + display::loader(self.value, self.loader_y_offset, theme::FG, theme::BG, None); + } + self.description_pad.paint(); + self.description.paint(); + } + + fn render(&mut self, target: &mut impl Renderer) { + self.title.render(target); + + let center = constant::screen().center() + Offset::y(self.loader_y_offset); + let active_color = theme::FG; + let background_color = theme::BG; + let inactive_color = background_color.blend(active_color, 85); + + let (start, end) = if self.indeterminate { + let start = (self.value - 100) % 1000; + let end = (self.value + 100) % 1000; + let start = ((start as i32 * 8 * PI4 as i32) / 1000) as i16; + let end = ((end as i32 * 8 * PI4 as i32) / 1000) as i16; + (start, end) + } else { + let end = ((self.value as i32 * 8 * PI4 as i32) / 1000) as i16; + (0, end) + }; + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(active_color) + .with_start_angle(start) + .with_end_angle(end) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER + 2) + .with_bg(active_color) + .render(target); + + shape::Circle::new(center, constant::LOADER_INNER) + .with_bg(background_color) + .render(target); + + self.description_pad.render(target); + self.description.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(Self::AREA); + self.title.bounds(sink); + self.description.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for Progress<T> +where + T: StringType, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Progress"); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/scroll.rs b/core/embed/rust/src/ui/model_mercury/component/scroll.rs new file mode 100644 index 0000000000..fd1c641b0f --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/scroll.rs @@ -0,0 +1,179 @@ +use crate::ui::{ + component::{Component, Event, EventCtx, Never}, + display::toif::Icon, + geometry::{Alignment2D, Axis, LinearPlacement, Offset, Rect}, + shape, + shape::Renderer, +}; + +use super::theme; + +pub struct ScrollBar { + area: Rect, + layout: LinearPlacement, + pub page_count: usize, + pub active_page: usize, +} + +impl ScrollBar { + pub const DOT_SIZE: i16 = 8; + /// If there's more pages than this value then smaller dots are used at the + /// beginning/end of the scrollbar to denote the fact. + const MAX_DOTS: usize = 7; + /// Center to center. + const DOT_INTERVAL: i16 = 18; + + pub fn new(axis: Axis) -> Self { + let layout = LinearPlacement::new(axis); + Self { + area: Rect::zero(), + layout: layout.align_at_center().with_spacing(Self::DOT_INTERVAL), + page_count: 0, + active_page: 0, + } + } + + pub fn vertical() -> Self { + Self::new(Axis::Vertical) + } + + pub fn horizontal() -> Self { + Self::new(Axis::Horizontal) + } + + pub fn set_count_and_active_page(&mut self, page_count: usize, active_page: usize) { + self.page_count = page_count; + self.active_page = active_page; + } + + pub fn has_pages(&self) -> bool { + self.page_count > 1 + } + + pub fn has_next_page(&self) -> bool { + self.active_page < self.page_count - 1 + } + + pub fn has_previous_page(&self) -> bool { + self.active_page > 0 + } + + pub fn go_to_next_page(&mut self) { + self.go_to_relative(1) + } + + pub fn go_to_previous_page(&mut self) { + self.go_to_relative(-1) + } + + pub fn go_to_relative(&mut self, step: isize) { + self.go_to( + (self.active_page as isize + step).clamp(0, self.page_count as isize - 1) as usize, + ); + } + + pub fn go_to(&mut self, active_page: usize) { + self.active_page = active_page; + } +} + +impl Component for ScrollBar { + type Msg = Never; + + fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { + None + } + + fn paint(&mut self) { + fn dotsize(distance: usize, nhidden: usize) -> Icon { + match (nhidden.saturating_sub(distance)).min(2 - distance) { + 0 => theme::DOT_INACTIVE, + 1 => theme::DOT_INACTIVE_HALF, + _ => theme::DOT_INACTIVE_QUARTER, + } + } + + // Number of visible dots. + let num_shown = self.page_count.min(Self::MAX_DOTS); + // Page indices corresponding to the first (and last) dot. + let first_shown = self + .active_page + .saturating_sub(Self::MAX_DOTS / 2) + .min(self.page_count.saturating_sub(Self::MAX_DOTS)); + let last_shown = first_shown + num_shown - 1; + + let mut cursor = self.area.center() + - Offset::on_axis( + self.layout.axis, + Self::DOT_INTERVAL * (num_shown.saturating_sub(1) as i16) / 2, + ); + for i in first_shown..(last_shown + 1) { + let icon = if i == self.active_page { + theme::DOT_ACTIVE + } else if i <= first_shown + 1 { + let before_first_shown = first_shown; + dotsize(i - first_shown, before_first_shown) + } else if i >= last_shown - 1 { + let after_last_shown = self.page_count - 1 - last_shown; + dotsize(last_shown - i, after_last_shown) + } else { + theme::DOT_INACTIVE + }; + icon.draw(cursor, Alignment2D::CENTER, theme::FG, theme::BG); + cursor = cursor + Offset::on_axis(self.layout.axis, Self::DOT_INTERVAL); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + fn dotsize(distance: usize, nhidden: usize) -> Icon { + match (nhidden.saturating_sub(distance)).min(2 - distance) { + 0 => theme::DOT_INACTIVE, + 1 => theme::DOT_INACTIVE_HALF, + _ => theme::DOT_INACTIVE_QUARTER, + } + } + + // Number of visible dots. + let num_shown = self.page_count.min(Self::MAX_DOTS); + // Page indices corresponding to the first (and last) dot. + let first_shown = self + .active_page + .saturating_sub(Self::MAX_DOTS / 2) + .min(self.page_count.saturating_sub(Self::MAX_DOTS)); + let last_shown = first_shown + num_shown - 1; + + let mut cursor = self.area.center() + - Offset::on_axis( + self.layout.axis, + Self::DOT_INTERVAL * (num_shown.saturating_sub(1) as i16) / 2, + ); + for i in first_shown..(last_shown + 1) { + let icon = if i == self.active_page { + theme::DOT_ACTIVE + } else if i <= first_shown + 1 { + let before_first_shown = first_shown; + dotsize(i - first_shown, before_first_shown) + } else if i >= last_shown - 1 { + let after_last_shown = self.page_count - 1 - last_shown; + dotsize(last_shown - i, after_last_shown) + } else { + theme::DOT_INACTIVE + }; + shape::ToifImage::new(cursor, icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(theme::FG) + .render(target); + cursor = cursor + Offset::on_axis(self.layout.axis, Self::DOT_INTERVAL); + } + } + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + bounds + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs new file mode 100644 index 0000000000..556ec0deef --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs @@ -0,0 +1,199 @@ +use crate::ui::{ + component::{base::ComponentExt, Component, Event, EventCtx, Pad, PageMsg, Paginate}, + display::{self, Color}, + geometry::{Axis, Insets, Rect}, + shape::Renderer, +}; + +use super::{theme, ScrollBar, Swipe, SwipeDirection}; + +const SCROLLBAR_HEIGHT: i16 = 18; +const SCROLLBAR_BORDER: i16 = 4; + +pub struct SimplePage<T> { + content: T, + pad: Pad, + swipe: Swipe, + scrollbar: ScrollBar, + axis: Axis, + swipe_right_to_go_back: bool, + fade: Option<u16>, +} + +impl<T> SimplePage<T> +where + T: Paginate, + T: Component, +{ + pub fn new(content: T, axis: Axis, background: Color) -> Self { + Self { + content, + swipe: Swipe::new(), + pad: Pad::with_background(background), + scrollbar: ScrollBar::new(axis), + axis, + swipe_right_to_go_back: false, + fade: None, + } + } + + pub fn horizontal(content: T, background: Color) -> Self { + Self::new(content, Axis::Horizontal, background) + } + + pub fn vertical(content: T, background: Color) -> Self { + Self::new(content, Axis::Vertical, background) + } + + pub fn with_swipe_right_to_go_back(mut self) -> Self { + self.swipe_right_to_go_back = true; + self + } + + pub fn inner(&self) -> &T { + &self.content + } + + fn setup_swipe(&mut self) { + if self.is_horizontal() { + self.swipe.allow_left = self.scrollbar.has_next_page(); + self.swipe.allow_right = + self.scrollbar.has_previous_page() || self.swipe_right_to_go_back; + } else { + self.swipe.allow_up = self.scrollbar.has_next_page(); + self.swipe.allow_down = self.scrollbar.has_previous_page(); + self.swipe.allow_right = self.swipe_right_to_go_back; + } + } + + fn change_page(&mut self, ctx: &mut EventCtx, step: isize) { + // Advance scrollbar. + self.scrollbar.go_to_relative(step); + // Adjust the swipe parameters according to the scrollbar. + self.setup_swipe(); + + // Change the page in the content, make sure it gets completely repainted and + // clear the background under it. + self.content.change_page(self.scrollbar.active_page); + self.content.request_complete_repaint(ctx); + self.pad.clear(); + + // Swipe has dimmed the screen, so fade back to normal backlight after the next + // paint. + self.fade = Some(theme::BACKLIGHT_NORMAL); + } + + fn is_horizontal(&self) -> bool { + matches!(self.axis, Axis::Horizontal) + } +} + +impl<T> Component for SimplePage<T> +where + T: Paginate, + T: Component, +{ + type Msg = PageMsg<T::Msg>; + + fn place(&mut self, bounds: Rect) -> Rect { + self.swipe.place(bounds); + + let (content, scrollbar) = if self.is_horizontal() { + bounds.split_bottom(SCROLLBAR_HEIGHT + SCROLLBAR_BORDER) + } else { + bounds.split_right(SCROLLBAR_HEIGHT + SCROLLBAR_BORDER) + }; + + self.content.place(bounds); + if self.content.page_count() > 1 { + self.pad.place(content); + self.content.place(content); + } else { + self.pad.place(bounds); + } + + if self.is_horizontal() { + self.scrollbar + .place(scrollbar.inset(Insets::bottom(SCROLLBAR_BORDER))); + } else { + self.scrollbar + .place(scrollbar.inset(Insets::right(SCROLLBAR_BORDER))); + } + + self.scrollbar + .set_count_and_active_page(self.content.page_count(), 0); + self.setup_swipe(); + + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + ctx.set_page_count(self.scrollbar.page_count); + if let Some(swipe) = self.swipe.event(ctx, event) { + match (swipe, self.axis) { + (SwipeDirection::Left, Axis::Horizontal) | (SwipeDirection::Up, Axis::Vertical) => { + self.change_page(ctx, 1); + return None; + } + (SwipeDirection::Right, _) + if self.swipe_right_to_go_back && self.scrollbar.active_page == 0 => + { + return Some(PageMsg::Cancelled); + } + (SwipeDirection::Right, Axis::Horizontal) + | (SwipeDirection::Down, Axis::Vertical) => { + self.change_page(ctx, -1); + return None; + } + _ => { + // Ignore other directions. + } + } + } + self.content.event(ctx, event).map(PageMsg::Content) + } + + fn paint(&mut self) { + self.pad.paint(); + self.content.paint(); + if self.scrollbar.has_pages() { + self.scrollbar.paint(); + } + if let Some(val) = self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(val); + } + } + + fn render(&mut self, target: &mut impl Renderer) { + self.pad.render(target); + self.content.render(target); + if self.scrollbar.has_pages() { + self.scrollbar.render(target); + } + if let Some(val) = self.fade.take() { + // Note that this is blocking and takes some time. + display::fade_backlight(val); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.pad.area); + self.scrollbar.bounds(sink); + self.content.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for SimplePage<T> +where + T: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("SimplePage"); + t.int("active_page", self.scrollbar.active_page as i64); + t.int("page_count", self.scrollbar.page_count as i64); + t.child("content", &self.content); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe.rs b/core/embed/rust/src/ui/model_mercury/component/swipe.rs new file mode 100644 index 0000000000..d8217a1b96 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/swipe.rs @@ -0,0 +1,165 @@ +use crate::ui::{ + component::{Component, Event, EventCtx}, + display, + event::TouchEvent, + geometry::{Point, Rect}, + shape::Renderer, +}; + +use super::theme; + +pub enum SwipeDirection { + Up, + Down, + Left, + Right, +} + +pub struct Swipe { + pub area: Rect, + pub allow_up: bool, + pub allow_down: bool, + pub allow_left: bool, + pub allow_right: bool, + backlight_start: u16, + backlight_end: u16, + origin: Option<Point>, +} + +impl Swipe { + const DISTANCE: i32 = 120; + const THRESHOLD: f32 = 0.3; + + pub fn new() -> Self { + Self { + area: Rect::zero(), + allow_up: false, + allow_down: false, + allow_left: false, + allow_right: false, + backlight_start: theme::BACKLIGHT_NORMAL, + backlight_end: theme::BACKLIGHT_NONE, + origin: None, + } + } + + pub fn vertical() -> Self { + Self::new().up().down() + } + + pub fn horizontal() -> Self { + Self::new().left().right() + } + + pub fn up(mut self) -> Self { + self.allow_up = true; + self + } + + pub fn down(mut self) -> Self { + self.allow_down = true; + self + } + + pub fn left(mut self) -> Self { + self.allow_left = true; + self + } + + pub fn right(mut self) -> Self { + self.allow_right = true; + self + } + + fn is_active(&self) -> bool { + self.allow_up || self.allow_down || self.allow_left || self.allow_right + } + + fn ratio(&self, dist: i16) -> f32 { + (dist as f32 / Self::DISTANCE as f32).min(1.0) + } + + fn backlight(&self, ratio: f32) { + let start = self.backlight_start as f32; + let end = self.backlight_end as f32; + let value = start + ratio * (end - start); + display::set_backlight(value as u16); + } +} + +impl Component for Swipe { + type Msg = SwipeDirection; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.area + } + + fn event(&mut self, _ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if !self.is_active() { + return None; + } + match (event, self.origin) { + (Event::Touch(TouchEvent::TouchStart(pos)), _) if self.area.contains(pos) => { + // Mark the starting position of this touch. + self.origin.replace(pos); + } + (Event::Touch(TouchEvent::TouchMove(pos)), Some(origin)) => { + // Consider our allowed directions and the touch distance and modify the display + // backlight accordingly. + let ofs = pos - origin; + let abs = ofs.abs(); + if abs.x > abs.y && (self.allow_left || self.allow_right) { + // Horizontal direction. + if (ofs.x < 0 && self.allow_left) || (ofs.x > 0 && self.allow_right) { + self.backlight(self.ratio(abs.x)); + } + } else if abs.x < abs.y && (self.allow_up || self.allow_down) { + // Vertical direction. + if (ofs.y < 0 && self.allow_up) || (ofs.y > 0 && self.allow_down) { + self.backlight(self.ratio(abs.y)); + } + }; + } + (Event::Touch(TouchEvent::TouchEnd(pos)), Some(origin)) => { + // Touch interaction is over, reset the position. + self.origin.take(); + + // Compare the touch distance with our allowed directions and determine if it + // constitutes a valid swipe. + let ofs = pos - origin; + let abs = ofs.abs(); + if abs.x > abs.y && (self.allow_left || self.allow_right) { + // Horizontal direction. + if self.ratio(abs.x) >= Self::THRESHOLD { + if ofs.x < 0 && self.allow_left { + return Some(SwipeDirection::Left); + } else if ofs.x > 0 && self.allow_right { + return Some(SwipeDirection::Right); + } + } + } else if abs.x < abs.y && (self.allow_up || self.allow_down) { + // Vertical direction. + if self.ratio(abs.y) >= Self::THRESHOLD { + if ofs.y < 0 && self.allow_up { + return Some(SwipeDirection::Up); + } else if ofs.y > 0 && self.allow_down { + return Some(SwipeDirection::Down); + } + } + }; + + // Swipe did not happen, reset the backlight. + self.backlight(0.0); + } + _ => { + // Do nothing. + } + } + None + } + + fn paint(&mut self) {} + + fn render(&mut self, _target: &mut impl Renderer) {} +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs new file mode 100644 index 0000000000..2d18aa1cde --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -0,0 +1,2167 @@ +use core::{cmp::Ordering, convert::TryInto}; + +use crate::{ + error::Error, + micropython::{ + buffer::{get_buffer, StrBuffer}, + gc::Gc, + iter::IterBuf, + list::List, + map::Map, + module::Module, + obj::Obj, + qstr::Qstr, + util, + }, + strutil::{StringType, TString}, + translations::TR, + trezorhal::model, + ui::{ + component::{ + base::ComponentExt, + connect::Connect, + image::BlendedImage, + paginated::{PageMsg, Paginate}, + painter, + placed::GridPlaced, + text::{ + op::OpTextLayout, + paragraphs::{ + Checklist, Paragraph, ParagraphSource, ParagraphVecLong, ParagraphVecShort, + Paragraphs, VecExt, + }, + TextStyle, + }, + Border, Component, Empty, FormattedText, Label, Never, Qr, Timeout, + }, + display::tjpgd::jpeg_info, + geometry, + layout::{ + obj::{ComponentMsgObj, LayoutObj}, + result::{CANCELLED, CONFIRMED, INFO}, + util::{upy_disable_animation, ConfirmBlob, PropsList}, + }, + model_mercury::component::check_homescreen_format, + }, +}; + +use super::{ + component::{ + AddressDetails, Bip39Input, Button, ButtonMsg, ButtonPage, ButtonStyleSheet, + CancelConfirmMsg, CancelInfoConfirmMsg, CoinJoinProgress, Dialog, DialogMsg, FidoConfirm, + FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, + MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, + PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, + SelectWordCount, SelectWordCountMsg, SelectWordMsg, SimplePage, Slip39Input, + }, + theme, +}; + +impl TryFrom<CancelConfirmMsg> for Obj { + type Error = Error; + + fn try_from(value: CancelConfirmMsg) -> Result<Self, Self::Error> { + match value { + CancelConfirmMsg::Cancelled => Ok(CANCELLED.as_obj()), + CancelConfirmMsg::Confirmed => Ok(CONFIRMED.as_obj()), + } + } +} + +impl TryFrom<CancelInfoConfirmMsg> for Obj { + type Error = Error; + + fn try_from(value: CancelInfoConfirmMsg) -> Result<Self, Self::Error> { + match value { + CancelInfoConfirmMsg::Cancelled => Ok(CANCELLED.as_obj()), + CancelInfoConfirmMsg::Info => Ok(INFO.as_obj()), + CancelInfoConfirmMsg::Confirmed => Ok(CONFIRMED.as_obj()), + } + } +} + +impl TryFrom<SelectWordMsg> for Obj { + type Error = Error; + + fn try_from(value: SelectWordMsg) -> Result<Self, Self::Error> { + match value { + SelectWordMsg::Selected(i) => i.try_into(), + } + } +} + +impl TryFrom<SelectWordCountMsg> for Obj { + type Error = Error; + + fn try_from(value: SelectWordCountMsg) -> Result<Self, Self::Error> { + match value { + SelectWordCountMsg::Selected(i) => i.try_into(), + } + } +} + +impl<F, T, U> ComponentMsgObj for FidoConfirm<F, T, U> +where + F: Fn(usize) -> T, + T: StringType, + U: Component<Msg = CancelConfirmMsg>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + FidoMsg::Confirmed(page) => Ok((page as u8).into()), + FidoMsg::Cancelled => Ok(CANCELLED.as_obj()), + } + } +} + +impl<T, U> ComponentMsgObj for Dialog<T, U> +where + T: ComponentMsgObj, + U: Component, + <U as Component>::Msg: TryInto<Obj, Error = Error>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + DialogMsg::Content(c) => Ok(self.inner().msg_try_into_obj(c)?), + DialogMsg::Controls(msg) => msg.try_into(), + } + } +} + +impl<T, U> ComponentMsgObj for IconDialog<T, U> +where + T: StringType, + U: Component, + <U as Component>::Msg: TryInto<Obj, Error = Error>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + DialogMsg::Controls(msg) => msg.try_into(), + _ => unreachable!(), + } + } +} + +impl<T> ComponentMsgObj for PinKeyboard<T> +where + T: AsRef<str>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + PinKeyboardMsg::Confirmed => self.pin().try_into(), + PinKeyboardMsg::Cancelled => Ok(CANCELLED.as_obj()), + } + } +} + +impl ComponentMsgObj for PassphraseKeyboard { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + PassphraseKeyboardMsg::Confirmed => self.passphrase().try_into(), + PassphraseKeyboardMsg::Cancelled => Ok(CANCELLED.as_obj()), + } + } +} + +impl<T, U> ComponentMsgObj for MnemonicKeyboard<T, U> +where + T: MnemonicInput, + U: AsRef<str>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + MnemonicKeyboardMsg::Confirmed => { + if let Some(word) = self.mnemonic() { + word.try_into() + } else { + panic!("invalid mnemonic") + } + } + MnemonicKeyboardMsg::Previous => "".try_into(), + } + } +} + +impl<T, U> ComponentMsgObj for Frame<T, U> +where + T: ComponentMsgObj, + U: AsRef<str>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + FrameMsg::Content(c) => self.inner().msg_try_into_obj(c), + FrameMsg::Button(b) => b.try_into(), + } + } +} + +impl<T, U> ComponentMsgObj for ButtonPage<T, U> +where + T: Component + Paginate, + U: AsRef<str> + From<&'static str>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + PageMsg::Content(_) => Err(Error::TypeError), + PageMsg::Confirmed => Ok(CONFIRMED.as_obj()), + PageMsg::Cancelled => Ok(CANCELLED.as_obj()), + PageMsg::SwipeLeft => Ok(INFO.as_obj()), + PageMsg::SwipeRight => Ok(CANCELLED.as_obj()), + } + } +} + +impl<F> ComponentMsgObj for painter::Painter<F> +where + F: FnMut(geometry::Rect), +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!() + } +} + +// Clippy/compiler complains about conflicting implementations +// TODO move the common impls to a common module +#[cfg(not(feature = "clippy"))] +impl<T> ComponentMsgObj for Paragraphs<T> +where + T: ParagraphSource, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!() + } +} + +impl<T> ComponentMsgObj for FormattedText<T> +where + T: StringType + Clone, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!() + } +} + +impl<T> ComponentMsgObj for Checklist<T> +where + T: ParagraphSource, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!() + } +} + +impl<T, F> ComponentMsgObj for NumberInputDialog<T, F> +where + T: StringType, + F: Fn(u32) -> T, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + let value = self.value().try_into()?; + match msg { + NumberInputDialogMsg::Selected => Ok((CONFIRMED.as_obj(), value).try_into()?), + NumberInputDialogMsg::InfoRequested => Ok((CANCELLED.as_obj(), value).try_into()?), + } + } +} + +impl<T> ComponentMsgObj for Border<T> +where + T: ComponentMsgObj, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + self.inner().msg_try_into_obj(msg) + } +} + +impl<T> ComponentMsgObj for Progress<T> +where + T: StringType, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!() + } +} + +impl ComponentMsgObj for Homescreen { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + HomescreenMsg::Dismissed => Ok(CANCELLED.as_obj()), + } + } +} + +impl ComponentMsgObj for Lockscreen { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + HomescreenMsg::Dismissed => Ok(CANCELLED.as_obj()), + } + } +} + +impl<T, S> ComponentMsgObj for (GridPlaced<Paragraphs<T>>, GridPlaced<FormattedText<S>>) +where + T: ParagraphSource, + S: StringType + Clone, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!() + } +} + +// Clippy/compiler complains about conflicting implementations +#[cfg(not(feature = "clippy"))] +impl<T> ComponentMsgObj for (Timeout, T) +where + T: Component<Msg = ()>, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + Ok(CANCELLED.as_obj()) + } +} + +impl ComponentMsgObj for Qr { + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!(); + } +} + +impl<T> ComponentMsgObj for SimplePage<T> +where + T: ComponentMsgObj + Paginate, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + PageMsg::Content(inner_msg) => Ok(self.inner().msg_try_into_obj(inner_msg)?), + PageMsg::Cancelled => Ok(CANCELLED.as_obj()), + _ => Err(Error::TypeError), + } + } +} + +impl<T> ComponentMsgObj for AddressDetails<T> +where + T: StringType + Clone, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + Ok(CANCELLED.as_obj()) + } +} + +impl<T, U> ComponentMsgObj for CoinJoinProgress<T, U> +where + T: AsRef<str>, + U: Component<Msg = Never>, +{ + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!(); + } +} + +impl<T> ComponentMsgObj for super::component::bl_confirm::Confirm<T> +where + T: AsRef<str>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + super::component::bl_confirm::ConfirmMsg::Cancel => Ok(CANCELLED.as_obj()), + super::component::bl_confirm::ConfirmMsg::Confirm => Ok(CONFIRMED.as_obj()), + } + } +} + +extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let action: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_action)?.try_into_option()?; + let description: Option<StrBuffer> = + kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; + let verb: Option<StrBuffer> = kwargs + .get(Qstr::MP_QSTR_verb) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; + let verb_cancel: Option<StrBuffer> = kwargs + .get(Qstr::MP_QSTR_verb_cancel) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; + let reverse: bool = kwargs.get_or(Qstr::MP_QSTR_reverse, false)?; + let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; + let hold_danger: bool = kwargs.get_or(Qstr::MP_QSTR_hold_danger, false)?; + + let paragraphs = { + let action = action.unwrap_or_default(); + let description = description.unwrap_or_default(); + let mut paragraphs = ParagraphVecShort::new(); + if !reverse { + paragraphs + .add(Paragraph::new(&theme::TEXT_DEMIBOLD, action)) + .add(Paragraph::new(&theme::TEXT_NORMAL, description)); + } else { + paragraphs + .add(Paragraph::new(&theme::TEXT_NORMAL, description)) + .add(Paragraph::new(&theme::TEXT_DEMIBOLD, action)); + } + paragraphs.into_paragraphs() + }; + + let mut page = if hold { + ButtonPage::new(paragraphs, theme::BG).with_hold()? + } else { + ButtonPage::new(paragraphs, theme::BG).with_cancel_confirm(verb_cancel, verb) + }; + if hold && hold_danger { + page = page.with_confirm_style(theme::button_danger()) + } + let obj = LayoutObj::new(Frame::left_aligned(theme::label_title(), title, page))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let verb: Option<StrBuffer> = kwargs + .get(Qstr::MP_QSTR_verb) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; + + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + let mut ops = OpTextLayout::new(theme::TEXT_NORMAL); + for item in IterBuf::new().try_iterate(items)? { + if item.is_str() { + ops = ops.text_normal(item.try_into()?) + } else { + let [emphasis, text]: [Obj; 2] = util::iter_into_array(item)?; + let text: StrBuffer = text.try_into()?; + if emphasis.try_into()? { + ops = ops.text_demibold(text); + } else { + ops = ops.text_normal(text); + } + } + } + + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + ButtonPage::new(FormattedText::new(ops).vertically_centered(), theme::BG) + .with_cancel_confirm(None, verb), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +struct ConfirmBlobParams { + title: StrBuffer, + subtitle: Option<StrBuffer>, + data: Obj, + description: Option<StrBuffer>, + extra: Option<StrBuffer>, + verb: Option<StrBuffer>, + verb_cancel: Option<StrBuffer>, + info_button: bool, + hold: bool, + chunkify: bool, + text_mono: bool, +} + +impl ConfirmBlobParams { + fn new( + title: StrBuffer, + data: Obj, + description: Option<StrBuffer>, + verb: Option<StrBuffer>, + verb_cancel: Option<StrBuffer>, + hold: bool, + ) -> Self { + Self { + title, + subtitle: None, + data, + description, + extra: None, + verb, + verb_cancel, + info_button: false, + hold, + chunkify: false, + text_mono: true, + } + } + + fn with_extra(mut self, extra: Option<StrBuffer>) -> Self { + self.extra = extra; + self + } + + fn with_subtitle(mut self, subtitle: Option<StrBuffer>) -> Self { + self.subtitle = subtitle; + self + } + + fn with_info_button(mut self, info_button: bool) -> Self { + self.info_button = info_button; + self + } + + fn with_chunkify(mut self, chunkify: bool) -> Self { + self.chunkify = chunkify; + self + } + + fn with_text_mono(mut self, text_mono: bool) -> Self { + self.text_mono = text_mono; + self + } + + fn into_layout(self) -> Result<Obj, Error> { + let paragraphs = ConfirmBlob { + description: self.description.unwrap_or_else(StrBuffer::empty), + extra: self.extra.unwrap_or_else(StrBuffer::empty), + data: self.data.try_into()?, + description_font: &theme::TEXT_NORMAL, + extra_font: &theme::TEXT_DEMIBOLD, + data_font: if self.chunkify { + let data: StrBuffer = self.data.try_into()?; + theme::get_chunkified_text_style(data.len()) + } else if self.text_mono { + &theme::TEXT_MONO + } else { + &theme::TEXT_NORMAL + }, + } + .into_paragraphs(); + + let mut page = ButtonPage::new(paragraphs, theme::BG); + if let Some(verb) = self.verb { + page = page.with_cancel_confirm(self.verb_cancel, Some(verb)) + } + if self.hold { + page = page.with_hold()? + } + let mut frame = Frame::left_aligned(theme::label_title(), self.title, page); + if let Some(subtitle) = self.subtitle { + frame = frame.with_subtitle(theme::label_subtitle(), subtitle); + } + if self.info_button { + frame = frame.with_info_button(); + } + let obj = LayoutObj::new(frame)?; + Ok(obj.into()) + } +} + +extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; + let description: Option<StrBuffer> = + kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; + let extra: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; + let verb: Option<StrBuffer> = kwargs + .get(Qstr::MP_QSTR_verb) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; + let verb_cancel: Option<StrBuffer> = kwargs + .get(Qstr::MP_QSTR_verb_cancel) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; + let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + + ConfirmBlobParams::new(title, data, description, verb, verb_cancel, hold) + .with_extra(extra) + .with_chunkify(chunkify) + .into_layout() + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: Option<StrBuffer> = + kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; + let verb: StrBuffer = + kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.try_into()?)?; + let extra: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; + let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + + let data_style = if chunkify { + let address: StrBuffer = data.try_into()?; + theme::get_chunkified_text_style(address.len()) + } else { + &theme::TEXT_MONO + }; + + let paragraphs = ConfirmBlob { + description: description.unwrap_or_else(StrBuffer::empty), + extra: extra.unwrap_or_else(StrBuffer::empty), + data: data.try_into()?, + description_font: &theme::TEXT_NORMAL, + extra_font: &theme::TEXT_DEMIBOLD, + data_font: data_style, + } + .into_paragraphs(); + + let obj = LayoutObj::new( + Frame::left_aligned( + theme::label_title(), + title, + ButtonPage::new(paragraphs, theme::BG) + .with_swipe_left() + .with_cancel_confirm(None, Some(verb)), + ) + .with_info_button(), + )?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + + let paragraphs = PropsList::new( + items, + &theme::TEXT_NORMAL, + &theme::TEXT_MONO, + &theme::TEXT_MONO, + )?; + let page: ButtonPage<_, StrBuffer> = if hold { + ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()? + } else { + ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) + .with_cancel_confirm(None, Some(TR::buttons__confirm.try_into()?)) + }; + let obj = LayoutObj::new(Frame::left_aligned(theme::label_title(), title, page))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let data: Obj = kwargs.get(Qstr::MP_QSTR_image)?; + + // Layout needs to hold the Obj to play nice with GC. Obj is resolved to &[u8] + // in every paint pass. + let buffer_func = move || { + // SAFETY: We expect no existing mutable reference. Resulting reference is + // discarded before returning to micropython. + let buffer = unsafe { unwrap!(get_buffer(data)) }; + // Incoming data may be empty, meaning we should display default homescreen + // image. + if buffer.is_empty() { + theme::IMAGE_HOMESCREEN + } else { + buffer + } + }; + + let size = match jpeg_info(buffer_func()) { + Some(info) => info.0, + _ => return Err(value_error!("Invalid image.")), + }; + + let tr_change: StrBuffer = TR::buttons__change.try_into()?; + let buttons = Button::cancel_confirm_text(None, Some(tr_change)); + let obj = LayoutObj::new(Frame::centered( + theme::label_title(), + title, + Dialog::new(painter::jpeg_painter(buffer_func, size, 1), buttons), + ))?; + Ok(obj.into()) + }; + + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_reset_device(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + + let par_array: [Paragraph<StrBuffer>; 3] = [ + Paragraph::new(&theme::TEXT_NORMAL, TR::reset__by_continuing.try_into()?) + .with_bottom_padding(17), // simulating a carriage return + Paragraph::new(&theme::TEXT_NORMAL, TR::reset__more_info_at.try_into()?), + Paragraph::new(&theme::TEXT_DEMIBOLD, TR::reset__tos_link.try_into()?), + ]; + let paragraphs = Paragraphs::new(par_array); + let buttons = Button::cancel_confirm( + Button::with_icon(theme::ICON_CANCEL), + Button::with_text(button).styled(theme::button_confirm()), + true, + ); + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + Dialog::new(paragraphs, buttons), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_address_details(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let qr_title: StrBuffer = kwargs.get(Qstr::MP_QSTR_qr_title)?.try_into()?; + let details_title: StrBuffer = kwargs.get(Qstr::MP_QSTR_details_title)?.try_into()?; + let address: StrBuffer = kwargs.get(Qstr::MP_QSTR_address)?.try_into()?; + let case_sensitive: bool = kwargs.get(Qstr::MP_QSTR_case_sensitive)?.try_into()?; + let account: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; + let path: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_path)?.try_into_option()?; + + let xpubs: Obj = kwargs.get(Qstr::MP_QSTR_xpubs)?; + + let mut ad = AddressDetails::new( + qr_title, + address, + case_sensitive, + details_title, + account, + path, + )?; + + for i in IterBuf::new().try_iterate(xpubs)? { + let [xtitle, text]: [StrBuffer; 2] = util::iter_into_array(i)?; + ad.add_xpub(xtitle, text)?; + } + + let obj = + LayoutObj::new(SimplePage::horizontal(ad, theme::BG).with_swipe_right_to_go_back())?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + let horizontal: bool = kwargs.get_or(Qstr::MP_QSTR_horizontal, false)?; + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + + let mut paragraphs = ParagraphVecShort::new(); + + for para in IterBuf::new().try_iterate(items)? { + let [key, value]: [Obj; 2] = util::iter_into_array(para)?; + let key: StrBuffer = key.try_into()?; + let value: StrBuffer = value.try_into()?; + paragraphs.add(Paragraph::new(&theme::TEXT_NORMAL, key).no_break()); + if chunkify { + paragraphs.add(Paragraph::new( + theme::get_chunkified_text_style(value.len()), + value, + )); + } else { + paragraphs.add(Paragraph::new(&theme::TEXT_MONO, value)); + } + } + + let axis = match horizontal { + true => geometry::Axis::Horizontal, + _ => geometry::Axis::Vertical, + }; + + let obj = LayoutObj::new( + Frame::left_aligned( + theme::label_title(), + title, + SimplePage::new(paragraphs.into_paragraphs(), axis, theme::BG) + .with_swipe_right_to_go_back(), + ) + .with_cancel_button(), + )?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let subtitle: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_subtitle)?.try_into_option()?; + let description: Option<StrBuffer> = + kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; + let value: Obj = kwargs.get(Qstr::MP_QSTR_value)?; + let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; + + let verb: Option<StrBuffer> = kwargs + .get(Qstr::MP_QSTR_verb) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; + let verb_cancel: Option<StrBuffer> = kwargs + .get(Qstr::MP_QSTR_verb_cancel) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; + let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + let text_mono: bool = kwargs.get_or(Qstr::MP_QSTR_text_mono, true)?; + + ConfirmBlobParams::new(title, value, description, verb, verb_cancel, hold) + .with_subtitle(subtitle) + .with_info_button(info_button) + .with_chunkify(chunkify) + .with_text_mono(text_mono) + .into_layout() + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; + let cancel_arrow: bool = kwargs.get_or(Qstr::MP_QSTR_cancel_arrow, false)?; + + let mut paragraphs = ParagraphVecShort::new(); + + for pair in IterBuf::new().try_iterate(items)? { + let [label, value]: [StrBuffer; 2] = util::iter_into_array(pair)?; + paragraphs.add(Paragraph::new(&theme::TEXT_NORMAL, label).no_break()); + paragraphs.add(Paragraph::new(&theme::TEXT_MONO, value)); + } + let mut page: ButtonPage<_, StrBuffer> = + ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()?; + if cancel_arrow { + page = page.with_cancel_arrow() + } + if info_button { + page = page.with_swipe_left(); + } + let mut frame = Frame::left_aligned(theme::label_title(), title, page); + if info_button { + frame = frame.with_info_button(); + } + let obj = LayoutObj::new(frame)?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let sign: i32 = kwargs.get(Qstr::MP_QSTR_sign)?.try_into()?; + let amount_change: StrBuffer = kwargs.get(Qstr::MP_QSTR_amount_change)?.try_into()?; + let amount_new: StrBuffer = kwargs.get(Qstr::MP_QSTR_amount_new)?.try_into()?; + + let description = if sign < 0 { + TR::modify_amount__decrease_amount.try_into()? + } else { + TR::modify_amount__increase_amount.try_into()? + }; + + let paragraphs = Paragraphs::new([ + Paragraph::new(&theme::TEXT_NORMAL, description), + Paragraph::new(&theme::TEXT_MONO, amount_change), + Paragraph::new( + &theme::TEXT_NORMAL, + TR::modify_amount__new_amount.try_into()?, + ), + Paragraph::new(&theme::TEXT_MONO, amount_new), + ]); + + let tr_title: StrBuffer = TR::modify_amount__title.try_into()?; + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + tr_title, + ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG) + .with_cancel_confirm(Some("^".into()), Some(TR::buttons__continue.try_into()?)), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let sign: i32 = kwargs.get(Qstr::MP_QSTR_sign)?.try_into()?; + let user_fee_change: StrBuffer = kwargs.get(Qstr::MP_QSTR_user_fee_change)?.try_into()?; + let total_fee_new: StrBuffer = kwargs.get(Qstr::MP_QSTR_total_fee_new)?.try_into()?; + + let (description, change, total_label) = match sign { + s if s < 0 => ( + TR::modify_fee__decrease_fee.try_into()?, + user_fee_change, + TR::modify_fee__new_transaction_fee.try_into()?, + ), + s if s > 0 => ( + TR::modify_fee__increase_fee.try_into()?, + user_fee_change, + TR::modify_fee__new_transaction_fee.try_into()?, + ), + _ => ( + TR::modify_fee__no_change.try_into()?, + StrBuffer::empty(), + TR::modify_fee__transaction_fee.try_into()?, + ), + }; + + let paragraphs = Paragraphs::new([ + Paragraph::new(&theme::TEXT_NORMAL, description), + Paragraph::new(&theme::TEXT_MONO, change), + Paragraph::new(&theme::TEXT_NORMAL, total_label), + Paragraph::new(&theme::TEXT_MONO, total_fee_new), + ]); + + let obj = LayoutObj::new( + Frame::left_aligned( + theme::label_title(), + title, + ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG) + .with_hold()? + .with_swipe_left(), + ) + .with_info_button(), + )?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +fn new_show_modal( + kwargs: &Map, + icon: BlendedImage, + button_style: ButtonStyleSheet, +) -> Result<Obj, Error> { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let value: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_value, StrBuffer::empty())?; + let description: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_description, StrBuffer::empty())?; + let button: StrBuffer = + kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.try_into()?)?; + let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; + let time_ms: u32 = kwargs.get_or(Qstr::MP_QSTR_time_ms, 0)?; + + let no_buttons = button.as_ref().is_empty(); + let obj = if no_buttons && time_ms == 0 { + // No buttons and no timer, used when we only want to draw the dialog once and + // then throw away the layout object. + LayoutObj::new( + IconDialog::new(icon, title, Empty) + .with_value(value) + .with_description(description), + )? + .into() + } else if no_buttons && time_ms > 0 { + // Timeout, no buttons. + LayoutObj::new( + IconDialog::new( + icon, + title, + Timeout::new(time_ms).map(|_| Some(CancelConfirmMsg::Confirmed)), + ) + .with_value(value) + .with_description(description), + )? + .into() + } else if allow_cancel { + // Two buttons. + LayoutObj::new( + IconDialog::new( + icon, + title, + Button::cancel_confirm( + Button::with_icon(theme::ICON_CANCEL), + Button::with_text(button).styled(button_style), + false, + ), + ) + .with_value(value) + .with_description(description), + )? + .into() + } else { + // Single button. + LayoutObj::new( + IconDialog::new( + icon, + title, + theme::button_bar(Button::with_text(button).styled(button_style).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + })), + ) + .with_value(value) + .with_description(description), + )? + .into() + }; + + Ok(obj) +} + +extern "C" fn new_show_error(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let icon = BlendedImage::new( + theme::IMAGE_BG_CIRCLE, + theme::IMAGE_FG_ERROR, + theme::ERROR_COLOR, + theme::FG, + theme::BG, + ); + new_show_modal(kwargs, icon, theme::button_default()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let app_name: StrBuffer = kwargs.get(Qstr::MP_QSTR_app_name)?.try_into()?; + let icon: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_icon_name)?.try_into_option()?; + let accounts: Gc<List> = kwargs.get(Qstr::MP_QSTR_accounts)?.try_into()?; + + // Cache the page count so that we can move `accounts` into the closure. + let page_count = accounts.len(); + // Closure to lazy-load the information on given page index. + // Done like this to allow arbitrarily many pages without + // the need of any allocation here in Rust. + let get_page = move |page_index| { + let account = unwrap!(accounts.get(page_index)); + account.try_into().unwrap_or_else(|_| "".into()) + }; + + let controls = Button::cancel_confirm( + Button::with_icon(theme::ICON_CANCEL), + Button::<StrBuffer>::with_text(TR::buttons__confirm.try_into()?) + .styled(theme::button_confirm()), + true, + ); + + let fido_page = FidoConfirm::new(app_name, get_page, page_count, icon, controls); + + let obj = LayoutObj::new(Frame::centered(theme::label_title(), title, fido_page))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let icon = BlendedImage::new( + theme::IMAGE_BG_OCTAGON, + theme::IMAGE_FG_WARN, + theme::WARN_COLOR, + theme::FG, + theme::BG, + ); + new_show_modal(kwargs, icon, theme::button_reset()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_success(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let icon = BlendedImage::new( + theme::IMAGE_BG_CIRCLE, + theme::IMAGE_FG_SUCCESS, + theme::SUCCESS_COLOR, + theme::FG, + theme::BG, + ); + new_show_modal(kwargs, icon, theme::button_confirm()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let icon = BlendedImage::new( + theme::IMAGE_BG_CIRCLE, + theme::IMAGE_FG_INFO, + theme::INFO_COLOR, + theme::FG, + theme::BG, + ); + new_show_modal(kwargs, icon, theme::button_info()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: StrBuffer = TR::addr_mismatch__contact_support_at.try_into()?; + let url: StrBuffer = TR::addr_mismatch__support_url.try_into()?; + let button: StrBuffer = TR::buttons__quit.try_into()?; + + let icon = BlendedImage::new( + theme::IMAGE_BG_OCTAGON, + theme::IMAGE_FG_WARN, + theme::WARN_COLOR, + theme::FG, + theme::BG, + ); + let obj = LayoutObj::new( + IconDialog::new( + icon, + title, + Button::cancel_confirm( + Button::with_icon(theme::ICON_BACK), + Button::with_text(button).styled(theme::button_reset()), + true, + ), + ) + .with_paragraph( + Paragraph::new(&theme::TEXT_NORMAL, description) + .centered() + .with_bottom_padding( + theme::TEXT_NORMAL.text_font.text_height() + - theme::TEXT_DEMIBOLD.text_font.text_height(), + ), + ) + .with_text(&theme::TEXT_DEMIBOLD, url), + )?; + + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_simple(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; + let description: StrBuffer = + kwargs.get_or(Qstr::MP_QSTR_description, StrBuffer::empty())?; + let button: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_button, StrBuffer::empty())?; + + let obj = if let Some(t) = title { + LayoutObj::new(Frame::left_aligned( + theme::label_title(), + t, + Dialog::new( + Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]), + theme::button_bar(Button::with_text(button).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + })), + ), + ))? + .into() + } else if !button.is_empty() { + LayoutObj::new(Border::new( + theme::borders(), + Dialog::new( + Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]), + theme::button_bar(Button::with_text(button).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + })), + ), + ))? + .into() + } else { + LayoutObj::new(Border::new( + theme::borders(), + Dialog::new( + Paragraphs::new( + [Paragraph::new(&theme::TEXT_DEMIBOLD, description).centered()], + ), + Empty, + ), + ))? + .into() + }; + + Ok(obj) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let info_button: StrBuffer = kwargs.get(Qstr::MP_QSTR_info_button)?.try_into()?; + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + + let mut paragraphs = ParagraphVecShort::new(); + + for para in IterBuf::new().try_iterate(items)? { + let [font, text]: [Obj; 2] = util::iter_into_array(para)?; + let style: &TextStyle = theme::textstyle_number(font.try_into()?); + let text: StrBuffer = text.try_into()?; + paragraphs.add(Paragraph::new(style, text)); + if paragraphs.is_full() { + break; + } + } + + let buttons = Button::cancel_info_confirm(button, info_button); + + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + Dialog::new(paragraphs.into_paragraphs(), buttons), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_more(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + + let mut paragraphs = ParagraphVecLong::new(); + + for para in IterBuf::new().try_iterate(items)? { + let [font, text]: [Obj; 2] = util::iter_into_array(para)?; + let style: &TextStyle = theme::textstyle_number(font.try_into()?); + let text: StrBuffer = text.try_into()?; + paragraphs.add(Paragraph::new(style, text)); + } + + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) + .with_cancel_confirm(None, Some(button)) + .with_confirm_style(theme::button_default()) + .with_back_button(), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let max_rounds: StrBuffer = kwargs.get(Qstr::MP_QSTR_max_rounds)?.try_into()?; + let max_feerate: StrBuffer = kwargs.get(Qstr::MP_QSTR_max_feerate)?.try_into()?; + + let paragraphs = Paragraphs::new([ + Paragraph::new(&theme::TEXT_NORMAL, TR::coinjoin__max_rounds.try_into()?), + Paragraph::new(&theme::TEXT_MONO, max_rounds), + Paragraph::new( + &theme::TEXT_NORMAL, + TR::coinjoin__max_mining_fee.try_into()?, + ), + Paragraph::new(&theme::TEXT_MONO, max_feerate), + ]); + + let tr_title: StrBuffer = TR::coinjoin__title.try_into()?; + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + tr_title, + ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG).with_hold()?, + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_request_pin(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let subprompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_subprompt)?.try_into()?; + let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; + let warning: bool = kwargs.get_or(Qstr::MP_QSTR_wrong_pin, false)?; + let warning = if warning { + Some(TR::pin__wrong_pin.try_into()?) + } else { + None + }; + let obj = LayoutObj::new(PinKeyboard::new(prompt, subprompt, warning, allow_cancel))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_request_passphrase(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let _prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let _max_len: u32 = kwargs.get(Qstr::MP_QSTR_max_len)?.try_into()?; + let obj = LayoutObj::new(PassphraseKeyboard::new())?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_request_bip39(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let prefill_word: StrBuffer = kwargs.get(Qstr::MP_QSTR_prefill_word)?.try_into()?; + let can_go_back: bool = kwargs.get(Qstr::MP_QSTR_can_go_back)?.try_into()?; + let obj = LayoutObj::new(MnemonicKeyboard::new( + Bip39Input::prefilled_word(prefill_word.as_ref()), + prompt, + can_go_back, + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_request_slip39(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let prefill_word: StrBuffer = kwargs.get(Qstr::MP_QSTR_prefill_word)?.try_into()?; + let can_go_back: bool = kwargs.get(Qstr::MP_QSTR_can_go_back)?.try_into()?; + let obj = LayoutObj::new(MnemonicKeyboard::new( + Slip39Input::prefilled_word(prefill_word.as_ref()), + prompt, + can_go_back, + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let words_iterable: Obj = kwargs.get(Qstr::MP_QSTR_words)?; + let words: [StrBuffer; 3] = util::iter_into_array(words_iterable)?; + + let paragraphs = Paragraphs::new([Paragraph::new(&theme::TEXT_DEMIBOLD, description)]); + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + Dialog::new(paragraphs, Button::select_word(words)), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let pages: Obj = kwargs.get(Qstr::MP_QSTR_pages)?; + + let mut paragraphs = ParagraphVecLong::new(); + for page in IterBuf::new().try_iterate(pages)? { + let text: StrBuffer = page.try_into()?; + paragraphs.add(Paragraph::new(&theme::TEXT_MONO, text).break_after()); + } + + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + ButtonPage::<_, StrBuffer>::new(paragraphs.into_paragraphs(), theme::BG) + .with_hold()? + .without_cancel(), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let min_count: u32 = kwargs.get(Qstr::MP_QSTR_min_count)?.try_into()?; + let max_count: u32 = kwargs.get(Qstr::MP_QSTR_max_count)?.try_into()?; + let count: u32 = kwargs.get(Qstr::MP_QSTR_count)?.try_into()?; + let description_callback: Obj = kwargs.get(Qstr::MP_QSTR_description)?; + assert!(description_callback != Obj::const_none()); + + let callback = move |i: u32| { + StrBuffer::try_from( + description_callback + .call_with_n_args(&[i.try_into().unwrap()]) + .unwrap(), + ) + .unwrap() + }; + + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + NumberInputDialog::new(min_count, max_count, count, callback)?, + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let active: usize = kwargs.get(Qstr::MP_QSTR_active)?.try_into()?; + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + + let mut paragraphs = ParagraphVecLong::new(); + for (i, item) in IterBuf::new().try_iterate(items)?.enumerate() { + let style = match i.cmp(&active) { + Ordering::Less => &theme::TEXT_CHECKLIST_DONE, + Ordering::Equal => &theme::TEXT_CHECKLIST_SELECTED, + Ordering::Greater => &theme::TEXT_CHECKLIST_DEFAULT, + }; + let text: StrBuffer = item.try_into()?; + paragraphs.add(Paragraph::new(style, text)); + } + + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + Dialog::new( + Checklist::from_paragraphs( + theme::ICON_LIST_CURRENT, + theme::ICON_LIST_CHECK, + active, + paragraphs + .into_paragraphs() + .with_spacing(theme::CHECKLIST_SPACING), + ) + .with_check_width(theme::CHECKLIST_CHECK_WIDTH) + .with_current_offset(theme::CHECKLIST_CURRENT_OFFSET) + .with_done_offset(theme::CHECKLIST_DONE_OFFSET), + theme::button_bar(Button::with_text(button).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + })), + ), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; + let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; + + let paragraphs = Paragraphs::new([ + Paragraph::new(&theme::TEXT_DEMIBOLD, title), + Paragraph::new(&theme::TEXT_NORMAL, description), + ]) + .with_spacing(theme::RECOVERY_SPACING); + + let notification: StrBuffer = if dry_run { + TR::recovery__title_dry_run.try_into()? + } else { + TR::recovery__title.try_into()? + }; + + let obj = if info_button { + LayoutObj::new(Frame::left_aligned( + theme::label_title(), + notification, + Dialog::new( + paragraphs, + Button::<StrBuffer>::cancel_info_confirm( + TR::buttons__continue.try_into()?, + TR::buttons__more_info.try_into()?, + ), + ), + ))? + } else { + LayoutObj::new(Frame::left_aligned( + theme::label_title(), + notification, + Dialog::new(paragraphs, Button::cancel_confirm_text(None, Some(button))), + ))? + }; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; + let title: StrBuffer = if dry_run { + TR::recovery__title_dry_run.try_into()? + } else { + TR::recovery__title.try_into()? + }; + + let paragraphs = Paragraphs::new(Paragraph::<StrBuffer>::new( + &theme::TEXT_DEMIBOLD, + TR::recovery__select_num_of_words.try_into()?, + )); + + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + title, + Dialog::new(paragraphs, SelectWordCount::new()), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_group_share_success( + n_args: usize, + args: *const Obj, + kwargs: *mut Map, +) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let lines_iterable: Obj = kwargs.get(Qstr::MP_QSTR_lines)?; + let lines: [StrBuffer; 4] = util::iter_into_array(lines_iterable)?; + + let obj = LayoutObj::new(IconDialog::new_shares( + lines, + theme::button_bar( + Button::<StrBuffer>::with_text(TR::buttons__continue.try_into()?).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + }), + ), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_remaining_shares(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let pages_iterable: Obj = kwargs.get(Qstr::MP_QSTR_pages)?; + + let mut paragraphs = ParagraphVecLong::new(); + for page in IterBuf::new().try_iterate(pages_iterable)? { + let [title, description]: [StrBuffer; 2] = util::iter_into_array(page)?; + paragraphs + .add(Paragraph::new(&theme::TEXT_DEMIBOLD, title)) + .add(Paragraph::new(&theme::TEXT_NORMAL, description).break_after()); + } + + let tr_title: StrBuffer = TR::recovery__title_remaining_shares.try_into()?; + let obj = LayoutObj::new(Frame::left_aligned( + theme::label_title(), + tr_title, + ButtonPage::<_, StrBuffer>::new(paragraphs.into_paragraphs(), theme::BG) + .with_cancel_confirm(None, Some(TR::buttons__continue.try_into()?)) + .with_confirm_style(theme::button_default()) + .without_cancel(), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_progress(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let indeterminate: bool = kwargs.get_or(Qstr::MP_QSTR_indeterminate, false)?; + let description: StrBuffer = + kwargs.get_or(Qstr::MP_QSTR_description, StrBuffer::empty())?; + + // Description updates are received as &str and we need to provide a way to + // convert them to StrBuffer. + let obj = LayoutObj::new(Progress::new( + title, + indeterminate, + description, + StrBuffer::alloc, + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_progress_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let indeterminate: bool = kwargs.get_or(Qstr::MP_QSTR_indeterminate, false)?; + let time_ms: u32 = kwargs.get_or(Qstr::MP_QSTR_time_ms, 0)?; + let skip_first_paint: bool = kwargs.get_or(Qstr::MP_QSTR_skip_first_paint, false)?; + + // The second type parameter is actually not used in `new()` but we need to + // provide it. + let progress = CoinJoinProgress::<_, Never>::new(title, indeterminate)?; + let obj = if time_ms > 0 && indeterminate { + let timeout = Timeout::new(time_ms); + LayoutObj::new((timeout, progress.map(|_msg| None)))? + } else { + LayoutObj::new(progress)? + }; + if skip_first_paint { + obj.skip_first_paint(); + } + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_homescreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let label: TString<'static> = kwargs + .get(Qstr::MP_QSTR_label)? + .try_into_option()? + .unwrap_or_else(|| model::FULL_NAME.into()); + let notification: Option<TString<'static>> = + kwargs.get(Qstr::MP_QSTR_notification)?.try_into_option()?; + let notification_level: u8 = kwargs.get_or(Qstr::MP_QSTR_notification_level, 0)?; + let hold: bool = kwargs.get(Qstr::MP_QSTR_hold)?.try_into()?; + let skip_first_paint: bool = kwargs.get(Qstr::MP_QSTR_skip_first_paint)?.try_into()?; + + let notification = notification.map(|w| (w, notification_level)); + let obj = LayoutObj::new(Homescreen::new(label, notification, hold))?; + if skip_first_paint { + obj.skip_first_paint(); + } + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_lockscreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let label: TString<'static> = kwargs + .get(Qstr::MP_QSTR_label)? + .try_into_option()? + .unwrap_or_else(|| model::FULL_NAME.into()); + let bootscreen: bool = kwargs.get(Qstr::MP_QSTR_bootscreen)?.try_into()?; + let coinjoin_authorized: bool = kwargs.get_or(Qstr::MP_QSTR_coinjoin_authorized, false)?; + let skip_first_paint: bool = kwargs.get(Qstr::MP_QSTR_skip_first_paint)?.try_into()?; + + let obj = LayoutObj::new(Lockscreen::new(label, bootscreen, coinjoin_authorized))?; + if skip_first_paint { + obj.skip_first_paint(); + } + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +pub extern "C" fn upy_check_homescreen_format(data: Obj) -> Obj { + let block = || { + let buffer = unsafe { get_buffer(data) }?; + + Ok(check_homescreen_format(buffer).into()) + }; + + unsafe { util::try_or_raise(block) } +} + +#[no_mangle] +extern "C" fn new_confirm_firmware_update( + n_args: usize, + args: *const Obj, + kwargs: *mut Map, +) -> Obj { + use super::component::bl_confirm::{Confirm, ConfirmTitle}; + let block = move |_args: &[Obj], kwargs: &Map| { + let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let fingerprint: StrBuffer = kwargs.get(Qstr::MP_QSTR_fingerprint)?.try_into()?; + + let title_str = TR::firmware_update__title.try_into()?; + let title = Label::left_aligned(title_str, theme::TEXT_BOLD).vertically_centered(); + let msg = Label::left_aligned(description, theme::TEXT_NORMAL); + + let left = + Button::with_text(TR::buttons__cancel.try_into()?).styled(theme::button_default()); + let right = + Button::with_text(TR::buttons__install.try_into()?).styled(theme::button_confirm()); + + let obj = LayoutObj::new( + Confirm::new(theme::BG, left, right, ConfirmTitle::Text(title), msg).with_info( + TR::firmware_update__title_fingerprint.try_into()?, + fingerprint, + theme::button_moreinfo(), + ), + )?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_wait_text(message: Obj) -> Obj { + let block = || { + let message: TString<'static> = message.try_into()?; + let obj = LayoutObj::new(Connect::new(message, theme::FG, theme::BG))?; + Ok(obj.into()) + }; + + unsafe { util::try_or_raise(block) } +} + +#[no_mangle] +pub static mp_module_trezorui2: Module = obj_module! { + Qstr::MP_QSTR___name__ => Qstr::MP_QSTR_trezorui2.to_obj(), + + /// CONFIRMED: object + Qstr::MP_QSTR_CONFIRMED => CONFIRMED.as_obj(), + + /// CANCELLED: object + Qstr::MP_QSTR_CANCELLED => CANCELLED.as_obj(), + + /// INFO: object + Qstr::MP_QSTR_INFO => INFO.as_obj(), + + /// def disable_animation(disable: bool) -> None: + /// """Disable animations, debug builds only.""" + Qstr::MP_QSTR_disable_animation => obj_fn_1!(upy_disable_animation).as_obj(), + + /// def check_homescreen_format(data: bytes) -> bool: + /// """Check homescreen format and dimensions.""" + Qstr::MP_QSTR_check_homescreen_format => obj_fn_1!(upy_check_homescreen_format).as_obj(), + + /// def confirm_action( + /// *, + /// title: str, + /// action: str | None, + /// description: str | None, + /// verb: str | None = None, + /// verb_cancel: str | None = None, + /// hold: bool = False, + /// hold_danger: bool = False, + /// reverse: bool = False, + /// ) -> object: + /// """Confirm action.""" + Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(), + + /// def confirm_emphasized( + /// *, + /// title: str, + /// items: Iterable[str | tuple[bool, str]], + /// verb: str | None = None, + /// ) -> object: + /// """Confirm formatted text that has been pre-split in python. For tuples + /// the first component is a bool indicating whether this part is emphasized.""" + Qstr::MP_QSTR_confirm_emphasized => obj_fn_kw!(0, new_confirm_emphasized).as_obj(), + + /// def confirm_homescreen( + /// *, + /// title: str, + /// image: bytes, + /// ) -> object: + /// """Confirm homescreen.""" + Qstr::MP_QSTR_confirm_homescreen => obj_fn_kw!(0, new_confirm_homescreen).as_obj(), + + /// def confirm_blob( + /// *, + /// title: str, + /// data: str | bytes, + /// description: str | None, + /// extra: str | None, + /// verb: str | None = None, + /// verb_cancel: str | None = None, + /// hold: bool = False, + /// chunkify: bool = False, + /// ) -> object: + /// """Confirm byte sequence data.""" + Qstr::MP_QSTR_confirm_blob => obj_fn_kw!(0, new_confirm_blob).as_obj(), + + /// def confirm_address( + /// *, + /// title: str, + /// data: str | bytes, + /// description: str | None, + /// verb: str | None = "CONFIRM", + /// extra: str | None, + /// chunkify: bool = False, + /// ) -> object: + /// """Confirm address. Similar to `confirm_blob` but has corner info button + /// and allows left swipe which does the same thing as the button.""" + Qstr::MP_QSTR_confirm_address => obj_fn_kw!(0, new_confirm_address).as_obj(), + + /// def confirm_properties( + /// *, + /// title: str, + /// items: list[tuple[str | None, str | bytes | None, bool]], + /// hold: bool = False, + /// ) -> object: + /// """Confirm list of key-value pairs. The third component in the tuple should be True if + /// the value is to be rendered as binary with monospace font, False otherwise.""" + Qstr::MP_QSTR_confirm_properties => obj_fn_kw!(0, new_confirm_properties).as_obj(), + + /// def confirm_reset_device( + /// *, + /// title: str, + /// button: str, + /// ) -> object: + /// """Confirm TOS before device setup.""" + Qstr::MP_QSTR_confirm_reset_device => obj_fn_kw!(0, new_confirm_reset_device).as_obj(), + + /// def show_address_details( + /// *, + /// qr_title: str, + /// address: str, + /// case_sensitive: bool, + /// details_title: str, + /// account: str | None, + /// path: str | None, + /// xpubs: list[tuple[str, str]], + /// ) -> object: + /// """Show address details - QR code, account, path, cosigner xpubs.""" + Qstr::MP_QSTR_show_address_details => obj_fn_kw!(0, new_show_address_details).as_obj(), + + /// def show_info_with_cancel( + /// *, + /// title: str, + /// items: Iterable[Tuple[str, str]], + /// horizontal: bool = False, + /// chunkify: bool = False, + /// ) -> object: + /// """Show metadata for outgoing transaction.""" + Qstr::MP_QSTR_show_info_with_cancel => obj_fn_kw!(0, new_show_info_with_cancel).as_obj(), + + /// def confirm_value( + /// *, + /// title: str, + /// value: str, + /// description: str | None, + /// subtitle: str | None, + /// verb: str | None = None, + /// verb_cancel: str | None = None, + /// info_button: bool = False, + /// hold: bool = False, + /// chunkify: bool = False, + /// text_mono: bool = True, + /// ) -> object: + /// """Confirm value. Merge of confirm_total and confirm_output.""" + Qstr::MP_QSTR_confirm_value => obj_fn_kw!(0, new_confirm_value).as_obj(), + + /// def confirm_total( + /// *, + /// title: str, + /// items: Iterable[tuple[str, str]], + /// info_button: bool = False, + /// cancel_arrow: bool = False, + /// ) -> object: + /// """Transaction summary. Always hold to confirm.""" + Qstr::MP_QSTR_confirm_total => obj_fn_kw!(0, new_confirm_total).as_obj(), + + /// def confirm_modify_output( + /// *, + /// sign: int, + /// amount_change: str, + /// amount_new: str, + /// ) -> object: + /// """Decrease or increase output amount.""" + Qstr::MP_QSTR_confirm_modify_output => obj_fn_kw!(0, new_confirm_modify_output).as_obj(), + + /// def confirm_modify_fee( + /// *, + /// title: str, + /// sign: int, + /// user_fee_change: str, + /// total_fee_new: str, + /// fee_rate_amount: str | None, # ignored + /// ) -> object: + /// """Decrease or increase transaction fee.""" + Qstr::MP_QSTR_confirm_modify_fee => obj_fn_kw!(0, new_confirm_modify_fee).as_obj(), + + /// def confirm_fido( + /// *, + /// title: str, + /// app_name: str, + /// icon_name: str | None, + /// accounts: list[str | None], + /// ) -> int | object: + /// """FIDO confirmation. + /// + /// Returns page index in case of confirmation and CANCELLED otherwise. + /// """ + Qstr::MP_QSTR_confirm_fido => obj_fn_kw!(0, new_confirm_fido).as_obj(), + + /// def show_error( + /// *, + /// title: str, + /// button: str = "CONTINUE", + /// description: str = "", + /// allow_cancel: bool = False, + /// time_ms: int = 0, + /// ) -> object: + /// """Error modal. No buttons shown when `button` is empty string.""" + Qstr::MP_QSTR_show_error => obj_fn_kw!(0, new_show_error).as_obj(), + + /// def show_warning( + /// *, + /// title: str, + /// button: str = "CONTINUE", + /// value: str = "", + /// description: str = "", + /// allow_cancel: bool = False, + /// time_ms: int = 0, + /// ) -> object: + /// """Warning modal. No buttons shown when `button` is empty string.""" + Qstr::MP_QSTR_show_warning => obj_fn_kw!(0, new_show_warning).as_obj(), + + /// def show_success( + /// *, + /// title: str, + /// button: str = "CONTINUE", + /// description: str = "", + /// allow_cancel: bool = False, + /// time_ms: int = 0, + /// ) -> object: + /// """Success modal. No buttons shown when `button` is empty string.""" + Qstr::MP_QSTR_show_success => obj_fn_kw!(0, new_show_success).as_obj(), + + /// def show_info( + /// *, + /// title: str, + /// button: str = "CONTINUE", + /// description: str = "", + /// allow_cancel: bool = False, + /// time_ms: int = 0, + /// ) -> object: + /// """Info modal. No buttons shown when `button` is empty string.""" + Qstr::MP_QSTR_show_info => obj_fn_kw!(0, new_show_info).as_obj(), + + /// def show_mismatch(*, title: str) -> object: + /// """Warning modal, receiving address mismatch.""" + Qstr::MP_QSTR_show_mismatch => obj_fn_kw!(0, new_show_mismatch).as_obj(), + + /// def show_simple( + /// *, + /// title: str | None, + /// description: str = "", + /// button: str = "", + /// ) -> object: + /// """Simple dialog with text and one button.""" + Qstr::MP_QSTR_show_simple => obj_fn_kw!(0, new_show_simple).as_obj(), + + /// def confirm_with_info( + /// *, + /// title: str, + /// button: str, + /// info_button: str, + /// items: Iterable[tuple[int, str]], + /// ) -> object: + /// """Confirm given items but with third button. Always single page + /// without scrolling.""" + Qstr::MP_QSTR_confirm_with_info => obj_fn_kw!(0, new_confirm_with_info).as_obj(), + + /// def confirm_more( + /// *, + /// title: str, + /// button: str, + /// items: Iterable[tuple[int, str]], + /// ) -> object: + /// """Confirm long content with the possibility to go back from any page. + /// Meant to be used with confirm_with_info.""" + Qstr::MP_QSTR_confirm_more => obj_fn_kw!(0, new_confirm_more).as_obj(), + + /// def confirm_coinjoin( + /// *, + /// max_rounds: str, + /// max_feerate: str, + /// ) -> object: + /// """Confirm coinjoin authorization.""" + Qstr::MP_QSTR_confirm_coinjoin => obj_fn_kw!(0, new_confirm_coinjoin).as_obj(), + + /// def request_pin( + /// *, + /// prompt: str, + /// subprompt: str, + /// allow_cancel: bool = True, + /// wrong_pin: bool = False, + /// ) -> str | object: + /// """Request pin on device.""" + Qstr::MP_QSTR_request_pin => obj_fn_kw!(0, new_request_pin).as_obj(), + + /// def request_passphrase( + /// *, + /// prompt: str, + /// max_len: int, + /// ) -> str | object: + /// """Passphrase input keyboard.""" + Qstr::MP_QSTR_request_passphrase => obj_fn_kw!(0, new_request_passphrase).as_obj(), + + /// def request_bip39( + /// *, + /// prompt: str, + /// prefill_word: str, + /// can_go_back: bool, + /// ) -> str: + /// """BIP39 word input keyboard.""" + Qstr::MP_QSTR_request_bip39 => obj_fn_kw!(0, new_request_bip39).as_obj(), + + /// def request_slip39( + /// *, + /// prompt: str, + /// prefill_word: str, + /// can_go_back: bool, + /// ) -> str: + /// """SLIP39 word input keyboard.""" + Qstr::MP_QSTR_request_slip39 => obj_fn_kw!(0, new_request_slip39).as_obj(), + + /// def select_word( + /// *, + /// title: str, + /// description: str, + /// words: Iterable[str], + /// ) -> int: + /// """Select mnemonic word from three possibilities - seed check after backup. The + /// iterable must be of exact size. Returns index in range `0..3`.""" + Qstr::MP_QSTR_select_word => obj_fn_kw!(0, new_select_word).as_obj(), + + /// def show_share_words( + /// *, + /// title: str, + /// pages: Iterable[str], + /// ) -> object: + /// """Show mnemonic for backup. Expects the words pre-divided into individual pages.""" + Qstr::MP_QSTR_show_share_words => obj_fn_kw!(0, new_show_share_words).as_obj(), + + /// def request_number( + /// *, + /// title: str, + /// count: int, + /// min_count: int, + /// max_count: int, + /// description: Callable[[int], str] | None = None, + /// ) -> object: + /// """Number input with + and - buttons, description, and info button.""" + Qstr::MP_QSTR_request_number => obj_fn_kw!(0, new_request_number).as_obj(), + + /// def show_checklist( + /// *, + /// title: str, + /// items: Iterable[str], + /// active: int, + /// button: str, + /// ) -> object: + /// """Checklist of backup steps. Active index is highlighted, previous items have check + /// mark next to them.""" + Qstr::MP_QSTR_show_checklist => obj_fn_kw!(0, new_show_checklist).as_obj(), + + /// def confirm_recovery( + /// *, + /// title: str, + /// description: str, + /// button: str, + /// dry_run: bool, + /// info_button: bool = False, + /// ) -> object: + /// """Device recovery homescreen.""" + Qstr::MP_QSTR_confirm_recovery => obj_fn_kw!(0, new_confirm_recovery).as_obj(), + + /// def select_word_count( + /// *, + /// dry_run: bool, + /// ) -> int | str: # TT returns int + /// """Select mnemonic word count from (12, 18, 20, 24, 33).""" + Qstr::MP_QSTR_select_word_count => obj_fn_kw!(0, new_select_word_count).as_obj(), + + /// def show_group_share_success( + /// *, + /// lines: Iterable[str] + /// ) -> int: + /// """Shown after successfully finishing a group.""" + Qstr::MP_QSTR_show_group_share_success => obj_fn_kw!(0, new_show_group_share_success).as_obj(), + + /// def show_remaining_shares( + /// *, + /// pages: Iterable[tuple[str, str]], + /// ) -> int: + /// """Shows SLIP39 state after info button is pressed on `confirm_recovery`.""" + Qstr::MP_QSTR_show_remaining_shares => obj_fn_kw!(0, new_show_remaining_shares).as_obj(), + + /// def show_progress( + /// *, + /// title: str, + /// indeterminate: bool = False, + /// description: str = "", + /// ) -> object: + /// """Show progress loader. Please note that the number of lines reserved on screen for + /// description is determined at construction time. If you want multiline descriptions + /// make sure the initial description has at least that amount of lines.""" + Qstr::MP_QSTR_show_progress => obj_fn_kw!(0, new_show_progress).as_obj(), + + /// def show_progress_coinjoin( + /// *, + /// title: str, + /// indeterminate: bool = False, + /// time_ms: int = 0, + /// skip_first_paint: bool = False, + /// ) -> object: + /// """Show progress loader for coinjoin. Returns CANCELLED after a specified time when + /// time_ms timeout is passed.""" + Qstr::MP_QSTR_show_progress_coinjoin => obj_fn_kw!(0, new_show_progress_coinjoin).as_obj(), + + /// def show_homescreen( + /// *, + /// label: str | None, + /// hold: bool, + /// notification: str | None, + /// notification_level: int = 0, + /// skip_first_paint: bool, + /// ) -> CANCELLED: + /// """Idle homescreen.""" + Qstr::MP_QSTR_show_homescreen => obj_fn_kw!(0, new_show_homescreen).as_obj(), + + /// def show_lockscreen( + /// *, + /// label: str | None, + /// bootscreen: bool, + /// skip_first_paint: bool, + /// coinjoin_authorized: bool = False, + /// ) -> CANCELLED: + /// """Homescreen for locked device.""" + Qstr::MP_QSTR_show_lockscreen => obj_fn_kw!(0, new_show_lockscreen).as_obj(), + + /// def confirm_firmware_update( + /// *, + /// description: str, + /// fingerprint: str, + /// ) -> None: + /// """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" + Qstr::MP_QSTR_confirm_firmware_update => obj_fn_kw!(0, new_confirm_firmware_update).as_obj(), + + /// def show_wait_text(/, message: str) -> None: + /// """Show single-line text in the middle of the screen.""" + Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), +}; + +#[cfg(test)] +mod tests { + use serde_json; + + use crate::{ + trace::tests::trace, + ui::{component::text::op::OpTextLayout, geometry::Rect, model_mercury::constant}, + }; + + use super::*; + + const SCREEN: Rect = constant::screen().inset(theme::borders()); + + #[test] + fn trace_example_layout() { + let buttons = + Button::cancel_confirm(Button::with_text("Left"), Button::with_text("Right"), false); + + let ops = OpTextLayout::new(theme::TEXT_NORMAL) + .text_normal("Testing text layout, with some text, and some more text. And ") + .text_bold("parameters!"); + let formatted = FormattedText::new(ops); + let mut layout = Dialog::new(formatted, buttons); + layout.place(SCREEN); + + let expected = serde_json::json!({ + "component": "Dialog", + "content": { + "component": "FormattedText", + "text": ["Testing text layout, with", "\n", "some text, and some", "\n", + "more text. And ", "paramet", "-", "\n", "ers!"], + "fits": true, + }, + "controls": { + "component": "FixedHeightBar", + "inner": { + "component": "Split", + "first": { + "component": "Button", + "text": "Left", + }, + "second": { + "component": "Button", + "text": "Right", + }, + }, + }, + }); + + assert_eq!(trace(&layout), expected); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_apple.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_apple.toif new file mode 100644 index 0000000000000000000000000000000000000000..d6c97f897e8e8eeb119cc65065b6955ad799fc6a GIT binary patch literal 697 zcmV;q0!IB*Pf12V06+k(0ssKT(xI;MFcb&yiiwIVDkoWjU<sm=lPsB_$;2k-$bwj! zsmVIhAjrZ)AP@*%0)as6Atn%ry~3A;eBlo6Wd(M6|FzBeot_?q`p(c=MHxTE=nt}W z_IX$|C*Zp6gPHNG-JGvPuRgblyy;<)GM)O;p)EZumX1E%u<ms#Cs>z0!KG;HVR4D| zy?)B>bt)@Ump;Qp-ut^q-|Nrry<Q4^e~(bc+d9!WdxQpvwx(YT!$KN!Fu&^=-w>oV zhIRY(ql>g>K>|KbQZ@vh`V1SEZ~Jy-4mxl8_R+;2_O{N@n&8hTyoyS3`(r8tes*U+ z)ZLJgm+|lW(A>^A_Gb89JGiTNt9yxk`~STG+B(18yxvaPtCJX@UG#g!>#4;hUPWIC zm0dTR{WPps{yXE{HD5ba&TUnFpZBd_JMe9l$p;)lZw`?Q(&bMXluqT@?b0h#Wt-l6 zyUGTR6DYkhyY<S1n*Cg1^AOraF#0Y+N~s0R>?c@7H!PUfPnp{5u?ORCh?;+jA@oup z#bg}9KgFtk39@}7Pt_+9!auvJKK)}K=KbpPuf^Z)-#&-%_qnP+P9XfS*bp^;7s2>b zrsiW0#;?T$tN23;#t(~Cq~cF7l`uY)zOB;1I)|D7k(Jr)PZ^ZobkIEm!-DghUl@5^ z9h3sHgRofV&!><wSikAunSU^$ecbT}0f*gz8Gi21ZAkwVqt5JeIR9XF`*0JuD7+qS z2dLZ-HUD5z*}tDMq?{@1TQ9``y^@UgJNu#a5|0*y^!NuO551hZ-IpG4^j7-Wf>O*d zdNZf^Q@s`k6Mc~1Iw-|1I=f3}=^WjZ1)R#CZ&e@ZO|aLlP30*ztjB#Fd8KIUm-zk3 fw`-?to!4TYe<ervSxw(wMdM_hXM7bs_V}28Hz;eg literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_aws.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_aws.toif new file mode 100644 index 0000000000000000000000000000000000000000..898afe3e0353d7ddfdb56562013ca69735431427 GIT binary patch literal 1264 zcmV<M1P}XEPf12V06+lb1ONc-Qa?x|OB~+fiY;ETg~b*YD_A6OMFJKI7Mp-Y0u~8e zkp*EzEWBW$!9s%&La>l<MF<ulghj~}1}zM^;vNZsfEIyR<e`P43m&A1km7_bUSQwO z{&sFA$?B=-HE+L#Wac+BzdzsiF^mHT4jede;9#F?N}kkMajJNd{SsStlao33vU|=w ze0$l5`dB(9FeujG@jl6YTx#bxjy@f&rMnV|kAn4URecDT)jJ-t!v5nDxu4`}8j5Wk z(OKGgcn7=V7~CQFnSZQ)LDOw;b+c&BH+_nBdlhnjB?vbP8l7dfgJS1#w9aJhGJcq_ zuV2%)dq4As;mL_4*Wg+I#u40yT*ooA-tLk6p)}4&beeNR1Sxek1M7AkbW3uqKa*YP zJ*L6g%%GAC^R0s3Z?@>nJ6?Q>7`ZiL^HCgIjRI$Ay=L||efoMgHYJqdR)^iy4cZ;Y zVCQ3RO*PT)R1v=b&O&Llo+_gCr=!=`-|@oC-~gECo8^Fx$!=3ZER1*Xi|rnYp3R`O zCk5`9bHB9iA}g5x%Wk?pR4iz4b{<E&1`jR(PeH#6mPhdGns$=?>U~b#4-=Uzu#B>3 z)v+R7U$CZwT*w>$8afApDAtvTN85Rvk4q8P&vs6-tpBO%U8$z&wpg@$3H_YMG1Fs3 z#1*Lteq9NYob%Cz9-S$70osg$^}~(v4wpI%uLPUYd3>)jSpP7Lc9&Jm?O#hMy4lk8 z?-z)lf`-`kv2<P^dl;T77Jf}u)9gDyKGOB8n<PhKlM{pW7fsLC3<u0dQGC)=J(ET2 zBzI=|W5d?(f}s<hX8P35ad5U8rK8{{QlDWitKjdcBJmlpvJ&jYi4*MMvHU>Kh@A%~ zhhaJjQ|kI1k0YyQq!%CWkV*GB6bq#_qqkd|+ytN+oo{%4E=6JuezpTqqSze|Dh+al z_M0uFjaH>OA4XHsE&WD;T%_v-jrBu6T?tp$^|ds)m%G5x9WRcx^EgK9m%E6x=A+;d z<in=4-9vZAigw)WhH;LC-ndn{od>;XPji-r1&zGzO870!?Dq@o_}LDbWxUhi?bSJs z=@bguml(s$xog_(fGSwSy$XqeD!LwN(fPX8yfpaJJN|KhOip-GdzH)TSaCjzeYE3U zb`ReA>J0>4{(WvZ76=Yc=3@iFP<pQtX>GPHtD!XUk%RvmWL}BLNj1kDs5x;<^ifAM zg71B63%<nPO20nv3G2T)3n+cLTz9=!^?F3<3qR^jxh$5%vf76FN`~AJee%80QAu_E z2_@<gRA1bpV~PNM$z?h4ZYr>h7xXqO1%^-6oTbdQxRv1FcxIQfi#Se%jP;_yeqUs5 zJQ@&xSnBkZ2J`tXx~RLvEv&gv5>V9xgZ;AoZIM+nv{Ti#(RV=PUS3z`5}|rVxW<{p zdnII@+>f$9)N#4qr$437{KFgw>vBL5p0270Mz`z20dq~iPdp@cG2e2aj=22|RF7C1 z?16lSMoqaalnlRQ(5L2v1G!vpV(kXM#DlU+>nM~G4|Ugb7*vFW>6zDmYMWUf)Xq@l z;VJIzJgMeh-i6vuBvsF7Hi3QK>?80B>te~CVcI8Z+fXG!^Zm9k*ql)!;+C>&s9rKU aDj^>vlFVnr?Jj|F;J|?c2M!$k9{&N%8GAwi literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_binance.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_binance.toif new file mode 100644 index 0000000000000000000000000000000000000000..8d9ba3649866cd8f60d22e8faed3ad2af8f68c40 GIT binary patch literal 555 zcmV+`0@VFfPf12V06+jA0ssKT(yeX+K@^7Jg&<ZUE1|SWkw_e(2y7(^NVoxH6$#-g zDxnV93n&yEvXzLYU5UguTe{iK&UfaIJ+lYL&%6(_CkWhUP`!Vtw}OIZP+e|!r*Tw_ z;9QSiMF`S*5dyL9TOikc3UJ+*fUf%xsO#JUeVtQaR_79!*Es}s^}Gf4^*jaYdS&^1 z<P@mujad+^dwc?YJsvKBS)EH@Ugr^1R_1k`pc{2U+y3WW_h4RE3(5~JPXG(3IxTRk zV}YuU1@3iOpsULQ+xoOh3sAk(R0&XBE~GPT&yS-K7En7+y^rgg$vCRF=z6S1g0DyV ze_{cy$KS_-q>csZ=WMbUNgWIR*G&Z3J=Y7;x-7`nb%JbNFA(dZ0M%6jR96e+dMcpm zlz^(!0$l$SG+%4CANbSxaoCnmD>b_Z>b&c|&3)}o(SCXr1XzIUDnYq#voA?K9$7%w zDFI!_g0wCR)O93K*JXiN7X|uyR-mto0=b?FP<`F2tZE@8K=sX}F{1>yeilS~RF8jk zLkMs^c45JGOVxF^h6J6Es#5~H5w`{j==$XXv2G#|>z4`Sx=tY1-37R=65zV4VDUtq zh6QweclzFULVLlRg+N`OR^2whRKQa=74X$f1ibZM!9r1Z=dSDSfWPh{$hU4Q$iHqQ t;HjGm`06GC-nve}UsnnI)G2|#IuiJ;X9fQ2{{_X=6G3tHcp9@y>pvn~2H^kz literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitbucket.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitbucket.toif new file mode 100644 index 0000000000000000000000000000000000000000..61c4b67f2fca6df9086f4415bfb37d1933dda611 GIT binary patch literal 865 zcmV-n1D^a;Pf12V06+j$0{{T+(mzZSQ5*;GU%SwEUFf@^=H76*+zpBg=wbp%V@H`F zI*@b%Ct(5;5`@WaNF0nNrs)V1>H>)n$_7lvI20lgM_@7}CMA{x?e!mby?5{Z+Ny8i z_gnkR=i7H*fa_5?Sy(fYOwFztSr}s}N8OGw(^2W0&YZ2%pR<dGO226IQk8x$eL__F zlVllG`a58OsZ2K=3jpS9ResK{@K7{V`6a{k`>85_fV%!9QROcZ*WUqE{%*|mEijen zrgI-^^UPM^=j=KUMMH&OG8%qARpF1&hQCNu_^YJh@5V5{KeDGOW@l)D6<FTC`a)p$ z8a!BFBK*r{U&ONl7utnZ*2>Yt>TXtcBl<S5Y0pj0#=O8X%I}M?crC$UGr>k6!EDrf zQ!+6AB*FNf35)v^Y;qF(jCgMbXnTzn%|p%g-2`Ppf|ovjkzo8J!}wpDzNiJaeg1I_ z;~ya!n1;dlVBDMFkegt|cV&U;U=lo+`g<_c^hG^Px7_7yjQ>E|z$r4Mhb6db!EChk zu4G{RUTFi*NJjT2sJEacfgbQjD8}D6Wd3U{qgN8d0||UB_z-EmdqFV%mb8I}UiGUl zFc{i`;edY}!}z8%F4QMrzUuqGL9hjTfy*?Q4kp1(VFOQ_elUTz1rwaxEgR$iNQnF; zvY_)5cw6u>%DX)`F#ejbfp@e8{VG9N3m$R(5sLA1!Ui5t*Ow*u65-vhCU6b31b#-( z*L_hBr?~z}EQM;|Ni0myLY`ID_X4~YoN}+zV50nc>=ku)rn#f_U8hw)m>}*?@Hiy@ zmW_J>_ba&j+jjTT{?6Rpu56+1=LIb&Yhmw~WLV#upyB%y@OoJD--P<3v|ZnyU^|e2 z*FzfWuO{$5K0#{_mm*>QNvs`T+5*OJ0SWcfU^<;Az_uU@;q%Sz#FzEZ+X5E11b&jG zobD5dT5zBVc$lW``l1%_65JK~?-K3%(jMyG1n-H+?;)M|DO3w;3Hl-;e;mv%e0dAz z^<@yxk)8U72{O7R@o%usd}#}+34T!t57V?$zoiA-9zK=&pAwz>@*bWMncqXY_rqH- rEcF4#*xz}9))o}l0?W#INLM<LWZmw$QQHH$U*C0l3-Rx-=l{+hdVjU} literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitfinex.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitfinex.toif new file mode 100644 index 0000000000000000000000000000000000000000..9fe4a9a3c78fb095f369f9c5135bd1a04dee0d60 GIT binary patch literal 1151 zcmV-_1c3WgPf12V06+k91ONcN(mikDNEiq35kk3<HHFL2*=QAEx}<bvO*R|WDJk6q zIf&!p(xn>&BZMNCltw~`i4dQH)!ycE*-wEY4mdu<G3#)=tO37F_Ic#ao}Zt2{s8=n zl7I$oVORVjj+akYEI|!Q@91e@EY_8e>O`*?zugtAmi_GPcGdp7(G~elnaZRuPHx~` zkhk44=MPsPJ%x`v7C)#Jqk2?bx9(mS7aqY$C&u!hIA?`-{mzr7F}+9hte9Zt(>^Xl zmRSp=Wnan*578$xUb<e-pUgP2zj=Xl#e#(>qR@(J*C4^a+i`8C>uxI3Q&5Nbxk!Fj zoaloDwx9Z*B7u2>>4>)M@N*}%{nWF>6YT4V&KlwNT~=F(?WImw-fQroz4GTF{GJjo z<-46HO@p1+G*&vIdH2}HD@7hQ)1ORfc_Nk<-r5()Aw7M;<JMUVq+m0BoxEfF*Wf2k zlQX?)Yml8f(KmHOTTZY(65$;`z2%gC=&8)+-LuYFK{}SJHa~sf)PCp^7&zNHqR<M` zTkoI)@J-*<5q&b>S8v%XJ(YR!e)gNj?%sLoRlD@22i-mEiN2}d!kooVFIXB}oqSdd z(h)7=P5)Dom!2nonbQB~)|G`9?Dv$l{(8<&uNZ5+E8e@oI_iv1S8vrIug&YEzp+&b zRP8-F{nuM>=;VfnJzLJ6zS!RBJ{{4#yLxMU%156!F6B-AgNi!){hY-!c><~0U2#*# z@{6}$NA#@dzc&(jWUgswoA@$!H|`-F(bseT%|1@P^(%D?2O4~K4(q5h68(f0tYrGY z$!4~73FNFJI=y*IUpABY-XYkjrg2P1bb6ok_F3N37vQHlD<0PoEo1-fsTnu#Q*%4- zew~EUSKHU%z>YP!lU6}MO?1==<Ifv$w?A7>-ZW}3NdFd6NA#@df04e3dg}$-lmSRG zJG=d?96fzAXW)ELrC>Z{>iibS`m3<^vqP{3gKY^kjqp066Mgk%(+D?rf3M9lT(F|( z3$H7#zWv8MY|ovleWmWV0T_w%Mid=UXsy47*8Zty&ZALRBygxq`Jo+6NAyxY>@yi! zS85G{BSrASi>kMr%@elopKbclxKc+VI9eq*y^m@yyVFy4eU|NlRWZscmNgKr>Wc2h z(CKG;`<!g1uB0+02qKgQuZ`&U&U)cxGazBr6@kRDSyzl?c2}I5s1sMuySFgDt-*;t zY{#|P-Pe`aHX!)Mjc>C)DaNx)u#feGHp{&f!%k(cjfZwp8&QFjVAQFv)Rq%JYn!dR zBQd-@63h6r{oUgs`}!9#OuDmj89$nNvfw7Oo;SkG{`LHYtGZ6zZOFZs@q+Uo481;% zlDMA2Bk6D5$yre{w@ThJ@f>u4d_4!TN&<a6Y$r>58A~8Zb;Tz$UKRvW#v0&J<I|=w zjPMUH9<+Lj1b9{nmT}eoe&jEP?VR;dEkW>3Rf0X`q?oe=^3eAGW#J9my4!LdO@gzs R27XmZK!c@aYmnzX{|7MWRww`f literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitwarden.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitwarden.toif new file mode 100644 index 0000000000000000000000000000000000000000..6779de1d2fd2b12359641d0d91fbbc4addbe5aa1 GIT binary patch literal 617 zcmV-v0+#($Pf12V06+j;0ssK*(lKb;KokaGErpa!9x_<LV6<vfFc=?(f=CxF1`#9T zdh=#2hH$jR*)n=;453(CXcsM6Oon<hbn;S=C<HAj8MP$XP>gC3WXbMHx|0-n=>2b# z?%pTeJ%*w2^N#6qJ^tVbf~>0vo`nX#&z2)}iLC(m%Jn3CEui%V4?#YqbGy{t8gSbu zpQrBD`$BN)Dj;wFN$@AJ%R!KT9j{NIC!pRh<kOp022~r4B~<_JdIk=T5bs6Jb}~xc zK>4?V=Oh2V<zyJt37ml4`jGk=_=*}<Z7UBSwfCh;GwM^H`qZaB^{G$&|I4o%X?#;o z>t9&@s-Z~gLtxF*_+!yuquJ;+(SF-X<JU(1nsYsg|3y#ZUp)G2uKP)Rya|l|dn;u6 z;(Q27vt)j?6P%seD6D^+uc%3UQ`YR@3R6z%L$I8Z`eP}0^Nw?P72ZAGH>HV9;xFV) zy>1M}G=BUYY_8q>T5G<Lqk7}`5d6Bt^AE3rQ|G3tMt8>Z-Oh2oDVJv3Z$6&I^~Lp9 zXE2EJ|9qazx1TF&d{=xQg6qCDNBN)5+Q#;?iCygA^d#{isCG2l!ARXOWxS4L{_2*c z<upz|*M}l*KT_YVyG!&vxY6wRnM3(aK(fn}@4ut;*3DQV>2tF7p9KiWN>STZ&|Xf9 zA4q%j1kZ2qq<bM4ig*3dqidIDWT);G&wBnon`FQH4T@UrB-;zYo41}{PH+QhtH(2e zd@JPb|K4LZqH}rbKZ?vh8F0JQ-5eKw3a@|f4|_~#%Bycsxm%%`xm#JuJnPRq%}f3Q DT1Z5r literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_cloudflare.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_cloudflare.toif new file mode 100644 index 0000000000000000000000000000000000000000..5c5f803e5b698f5718824375b4dba60a06120adf GIT binary patch literal 615 zcmV-t0+{_&Pf12V06+j+0ssK*l0Rq@Q5=AeBw#?HL6^8)Qk4vX8M;IrdJ%*;6ap^6 z42^+$S(G})4Cx6SZgdP4@`nzlOEHQ<B&27HgAtSzK`NzfIvJ|VU4p{BpZD$x`C~3= z!n=a-zHdG5`~BW~3`3z%C=?2X@;{MgJ={_x7h8&WxU~B;%X|L&&k8$sx!b4ppjh=; z->&*?rQUM4QZdU~S+^z4+lGziM#7pl>y(P4>V`tbivGa~>()#V6i;5q?k|$8d${rH z*s7mgKVBcdKV6=@H}6`Ccm=PJi=|nHiABb*V?Eqt?>s0rnw`JoGq>JP)|c{=)a~WT zYX913vd(e)LWWcw`{OY;)&yA}$@&8s;MdWaqYvM&ygL-R!05hLAld(-RDf4IF4Xej z;eDw{uI`Yd;O^;TSJ&oU=KX`0<oah7fH3Os^Xl?;&ONx!I;A|h?f)QvPb#ktnxOv- zvTRU{e<XSL7h0h4b6{V)g+lk%L6KzHE?<&o5a_%{yvYPY$f(b{rpqMT4*9Bb13H9F zCb+$+@6OnV)?dhT%EM#VmCq{nJko6$&gkB4y+PRD=sEPW0s;7nUZE0NL{qKK1p7XQ zu_cFZ^GJP*bX(YO$6g2QJxJ+BA=<{K+9?>!iuTnLZHkLM_fbgBx*AQAC-0Ci%j?Q+ zS2+MvrY~T1Z6iVU-5Jg)Mtc{onYOVDHK}Mt-y!2SP=T7t4|RDvUbmuemv6RV$hmj+ zFYH*ee?`0ZQFUJ3Dp|AtIqm-aXmtNj*z<EC@@|C^cQ!-$k)~Y?g+ifFC=|*m^A}}M BKNkQ1 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_coinbase.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_coinbase.toif new file mode 100644 index 0000000000000000000000000000000000000000..5550238a1fe71557876172700a2e28e00787ee8b GIT binary patch literal 568 zcmV-80>}MSPf12V06+jN0ssK*lA(^=Fc5~Ng@J}WV30>BEHGGT8otEvpbJ-iir{&R zrDlP7g@J*7gsFRxR;}tu?AUj!N|~V^fB*dR!v)Sh`|Pv-qedYIFl6Oj-pPWI1Bovp zYZw($q7=eN`t!)XLz^c5rD8$ryY_TvT%gQy0ZdD_>fJ<z1(WI<UHl4x4pf}dEqq5h zT1f7_mQIybqX4g1i;o^0y+X`SpauouSQ5)K&nlQc=khK{l;|>C0#io!om;m4^D`Lv zbXC5A@$<G)-xVd#@_(r%ohZ_3Bd%zRvd8{(d!S%d3-#bt7i_P2y5GLrg;$VvEt$QM z+kxNx4-c5+z?jRIShE2!?kUW4U$B|a)bD3Tzo^j<CObhU{ev8;ru*#s^)(xiP0ohw z?SCiuyZiBP)3+@3KWoxc->>Gs+W(j5PuEOuZZPCbqexHtIhXI}^baI5{X=G6*Z5bE z;F0-ZL9y?iTA2HdxqM_cAi6#Lw)2<UgPYBBZ*7IV0^WnTJ4;tfK0W?q*)8Hv=}k!U zs)^8+@O^h%XrufLM)uFVzJXyg|4}aZu7nR4XK1%vkSNiG{g+_M=pPCuYE&?l(_;pE z2u<ig^+)(Ig;%Vm#~<`DdTt7KGV*?$zAC_q-D~OV6^`W~PU(93nnX91XZ~pFxI4IP z7hC|-lD)R?(5hvRtroPtYfpcsLBlAMkyHp{tBdcd5OM%RR^H{EEEqYE_!{!rXP<p` GtNsO3&L~s> literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_dashlane.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_dashlane.toif new file mode 100644 index 0000000000000000000000000000000000000000..02d618c4068e8d4ba68f6b8af34e395fd775bd6c GIT binary patch literal 2158 zcmV-!2$A<xPf12V06+j@2mk=R(tl7BXBr3aO*WhaRt2&ugtddRxq@A&*2J?KI?@3Y z4W+bz70gVJDL*;~cI*+jA~2(;h&^HIXd@?(n--6PATt$3FkYA%%CA_tIa-0nGvlCT z0BZ_(rlC4}@4Fj>#1Ke8pYLCp+0EzK=XnsswYrO}<Hn-janm{B$crsE&MxkLbo^=l zgZ|9@ij(r(-2g<y$>g3uCuZ0)vkdLz9C|MD8YGQV&%FTTsf^E>SJ7ck)uPGa$WhJ> z?gT2}O`z5pM+Ml*m~6^^7qMtC_wIt^6r_{092htZPrzi#-iYs(mp2$pG^nsX^N~|x z`(1p7?&R_~&dOEDF#l~&F~$bB>L8x@OX^jPfwnEV!LRfO>1<v6i7Vm+%tLNNUhy~~ zNWht35~~grWV7ONJMFMkLt9k;lZ|`Yb})u|^Zt$2aZ_jQ!i|&Z(JROya_}5Hk@azj zrGqB%K*8!Bdfufm=2fpu@WG~a=(G6+9px5r!maFdzL+=-q9j;9$Kog8H>JW-c^~ak z8BFC3iSpO*F)M!qZ#@R%={fE1^0`c2w&`G1OtP}jKrgrqw7Mxb^&P_6e;a!hv+>E( zmJZ%aIG|D)=|!&J+Ak|UCcSy<?fT6moIoE{(a`FId`nX}<Xjg-PlDXO4?FOUbnf4h zR1@eWsb8twi9P+j8tSoFsFmMO!VaAE4fN;K1asl1sQx2i^SaYd?D(%({9mQc-*}Sh z6g7^r$tIf>k8jNF$6_B@`5wTB9sDYG?Y3@d9?7P97)ReFa<lZB*`9q*70dWbXZR!D ztluwo{l3HccBfAFFowRawEx`ZQt0o)FnrqY;t#Ms<(f_Om`hg1Y{aK^AFOc5{<EtJ zp}r5-c~1Mq`~ixcfWd{?3-IahhL`xdQr|S2PScMH-U5CJeoip$Z-45y8lC@oIQLUj znPQV1`bpJ}pT4AkUtfZMIKy}2n<;h!v-j<&RG{lt)4K%p3+DKTlc`WYj|a{0tB@)G zjUHF;FV}K?b8Yaom=fUE<3k?PemL|&2hHRYjca;d_0;95=GdTD7}T#5MKgQ^X=eO> zvZBEi{c*bwHsvR&96#GY9%p=!l`kRT1_nrJsq^|Rjo_(1hW?psH92~^(#Yn+oiqK$ zK-T|F;jEsdn($<G)*nM3$~4Bg-z(ZM(_ik-UO--gb9es-`2;$STKi*Y9HGqGto)?< zOv9BXm>-!;Hkq5u8W_J;zgCg3im&B=WAQV6%oLn}Svp_4)nqOa<M#Alm@MbPgz`eM zP%H){3p<X(&DY^NVwCV$y-u`K6df|iXZ;%fB*ku^)i|GfE6aj5%zX9Cr@D?9Av{Fu zM8Uwn<IehR?u-vQc&WoyGnj5QRWwvI9BA08Y*DO=kq{5jhv)=q-`{}uN|jl@$}3I& zJq1G=lfmj5V`CV7b(8?HsTPZ$ud?;u=sQhq!XzLouoXO<2X$M241I@4Ox;s0H#nZ0 zj_hW>KElV=|2~l2fIiFKu6<(|{TUzH*;M}#Y2SQqCb<uO{RrtHdXsPK-w?9CUzpu% zGv<)b`U1QxYjqDj?^3F|8GV@CX3HZr-jmcMvw=dpGZdCu&tE}pQCaVH?)o~F^@E6K zcq9dZKAb>BwY_(*Hck7VQwJJo7wSGWLPGyrAH+_rAX)#6{Mk2ELw!=#Pau+2v`Z!I z=q4FIB!zF!FA)kum<>>^M(a19w4Ww7VG@v*f>smlVhIX?PkDrNQ33XN<gPpP;RGtJ zHsD{Hh;PC+VSUoDK6(K)D($95D1Jy(ATmoyNcIMkVy52thjCBBZhSYMi2qn%SO`w{ zH$i=v;!CQ$XY*w~QxkZpgPnUnm5b-%m#HW1^a5+29Qfj4aq%qEhn0euDP{s>Ik-V- zX&G5Y<Pv$Qw)fz|?e%nvyMR6{{-+ReP|N)-H%M-YX#sjOnO{vWLVc9l1$}9k^q?ai zsX`_#6Br;{Ko5n6#nAgTwLtEY4olqvkvYn1Y66tBlwOp&ZNd_uKOE61{leX`-sUc$ zgpx^WOC)=Ni%|k)ZA5KESHy6{*|m=K5pT12t3)VytY9xrZd|zT*HbG4zN|~OBVwBa zI~<7%Ob$y96H0aoP5**#ZoU~>@#wpS>6J#^-eWS*fvi(@$j{NYpI@6FnH-iQz6Ul$ zu8|uze!J}K()yq4T7Gg}H_#!9WAVr0Ye3vKI-Y$v(l1>fxW@A9r|4xDmtMTzc)t<5 z=<o6tJ}b$HF9xZJUn1K!*Wn{6R=;ZU?yK*sN7cGU?CMsNEBe=!8GAGK7K3E$z2k*A zSpn|B<)d1iwp-n;#;!U)gA<iIKF9zm2063_aiRX`72VjaJEsK!b7*-mfBQBaTe%~1 zM`i{SbRFVi9rTS>pVQUqYPB#c=6Q+v#_Pv}vUe~^&yLuFET9hh2B~X%kLix-igm?W zuOBpX>diN!55Jrbvps)%cHn|^W(&SU7m9nCfF3-q4>;I^hTeZ^$?+wJmmGc>CSSV& zS%eC3KXN8RpRP~uP47LbJF4~iZ>3%R^zG=1p_4;@108_0|MksaWYJ2yf4ilFbX~fx zM%Q@HdK2ac^%pzJJIaU3K?fj_2fpw{7Pand{+%vLpQcai1<|GHIzbQY9LgTlw^i4H zRJFsDx0gpG1t5!G0baaMqXwh&AiYsc4@KJZ-}Bpw)J2U&jn$1z4|SrGoM7a+)i;|D zU->=gAyOaN3j%sb(}Jke)Ub=xy1_jG?#OelwQ*;!i3UY_5T*wv+DJ9}@%vuL3o1_B k2N&E1-Sli1_pWL8zwe8@;5r!e<-x<(&@b1<Eo|oh2QmXqy8r+H literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_dropbox.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_dropbox.toif new file mode 100644 index 0000000000000000000000000000000000000000..f82ac61738676502498bf81444be67da17db761a GIT binary patch literal 852 zcmV-a1FQU0Pf12V06+jp0{{T+(k*o2KokYw`|dhwo7z3W7Tx;9mbFm5(O^q`YKsOB zcBusq8f=4JYKsm_fKYz&Gc(ZLv*+|a3E#|Q<^o^&N?PpY{5$^}eGd3$>}MD({mjTZ zn9KKX>#^t>c#E;0i=(NpCD`g{ro0m!UpnvsOUmBE?VgRNN?*}e5`Bf9g04xJsH0i% zSx)gG>zV!ujZ_;?i`|oagPlZcqbGSbp0U`8enB<gJMts6sk(bK1I|wJ{T=UME;=?I zi|)!7@owbj;w<%r1T@jn1T0BGUQh7XGD6?jN3SqM%h>n%d)1s@%FRh`VbjR(w$R7D z)(S0l_xk6fs^uH(;4o#GDy^~LvmhZQ#U_QUC3?VxmAgWfKGNbS_zFE_<qZR-_w`PY zlUb%O<@%_PV@c8$U8uxHFVSDpfoi&F?R~|7Gw9?AjXmGj^ik>(Zq^u!4gJ)%zGvhC z4;8l9g=sw8@R1#3U&KUS49~u9!i)4o4E5Wl$!(5|{A}xo+SY}&*PppKTHe9so}Wlj zLziW`r=tmYp?r}g36A_L3rgNc^~lC^OHZk@Y5t0Cj((O!s*WaPE%PgC5@z}-%c;JL zR;G=o!KXyu!K0FYpnqg-j77z+XThG>2fnA}o3eWiGYqJ%*VE@{$M>~;o5PiLVQJfV z=HkG?Tul8$iuh%$qj{IS#%9lW`3ys}jaCSFAv(Q1oB<1)5(t{wUol_a-ADBO<e<Sm z8dUF2+&vFJxBgz)w>I57OijYvH5Tk`PhMaCKV(^A|3k?)1*!3Ho4G=RPn&;sc3%CS zzM`*g|Cyd^2@=-``D1f(8!rd%9eq`NE2UIl7AVDmb+p0_z0I#P44B;tH^E=gg-&*N z33ws#$u2YR_g#t`|F+{_SrBN)##kaf7boXtcjsfTA|@+8*`7&1U5vKPs^sqd@mBF& zk1)hJQj<`5_h_cdUCU1gk6L@j^FaR$yZ6Lo@AWKLKlv7XJkWIi3ca(uKv|~RX9!q2 zTLS<WS6U~yq=R#(Ag@Yi7;uKqNfDFWHol0B&&&wz)LUq=gU^qkDT|{sgscnxT72B^ eouEPwe>-KFuFep!B={%!i5psU@s+RqulWOXAG?bH literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_duo.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_duo.toif new file mode 100644 index 0000000000000000000000000000000000000000..173f1d0372d78c29fcfd69d09cce3412d1b777e0 GIT binary patch literal 463 zcmV;=0WkhlPf12V06+l40RRB)lEG@iKoEu}6v|$6+}p;Wls)b>7jaQM<d|z9M1nqs z6`{UHLd54#)INyPzDCtnj4>t?3+-jT|G2aNmt+D!5ClOG1VIpgN2-dVWynQta>;Jz zLT;E^=CfqiHwA=T%T!I}${Od+M$zm}`hMiZndyYz&a9Q)Sa|s){BkR1U8nD7@3h?P z`F;QC8KQywjo+5n?sK*}K>3epI*<DI>VE6O``$#ge-@?k5&uAzw+=ml^p7ILtm|L0 z>gK(|`Df9GuIry`%zKR)&OeJ@Ssj0X?43%i-)_|L?<`zv%f<SeP91;QpP$W(Z#Qg- zNyzK?I~><)%T%pVSy_`B{)FRNQ+0d0I8$kuc>h4+T6-?mpKt+vAL|b}uC?pn=H9$E z0L(SkFJOr3-B~#QULEw%;aEQaX0t<A0LDIa#|%zvG}a$L^=@|-p!^dKKLqU4!}*V2 ztGu=89H%flf(%Rc?&16ZNy!sLj(}=^%k7wuBVd;;l=}fJ^SN*f19_gf@80UChJa#1 zzR`WZ+7BRLXU+BHtmmdGW|wozEQ(<UP=x@)jM<po-VRuPwtbjAp2Q3Yf*=TjAPC|g F`2x~e@s$7o literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_facebook.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_facebook.toif new file mode 100644 index 0000000000000000000000000000000000000000..78542cbdde5d47107ebd878fc0cea5d165f8affe GIT binary patch literal 747 zcmV<H0u=pJPf12V06+lW0ssKT(k*Y}KoADtp}WZ0A&D%d3T}yi!AVw;RTLev+LV+Y zEQ&5AF7v?_RCbGe%w>jk|AAqSCD1VNg5rxC<=V9Ccz6Agcc?v&Ju?7ualj%PjaU!I z_@c+_deO(&!-#3rA`Uc{6bx!(tnV)y4Vu<0n~;!ldG{+4V%B7Ls4r!2%f}9_`VArR zl<aMJ7!p-GfNmvwTU`tkbeH(G=$lQrl2aJcy6kNYsi-}Gh}Es<6|sSkK5azLYbx*s zQDgdM25s+M<_=t<+I4a|x_-T#|H|v>c67bEnw-rFo^=Ud55PxxxqmXhyGb){R#&_? zd<?k$QepF>pRa$j!t{Ue-&%66AXJ$B(POqZMSiS@pLSq^Cq4VuyDU@nJv4Xxj`ZC> zo@JT3AL||Z@$cm?Z=O{1{SOmJq<23#&9Z8KtSA3(z?R?rZFS$qjh=$6UOfHF=h=Dx zWG2`pee(?}?>{Yg`szxqi$T?<zy5!Y{_VGHmwW?`!t`f4@9$^l@|_&8i2PeI*IymW z_pyjZ>+)6lXf$Gn^dr{8L;5`&AJiY?i+)I7O|Q=vtI79FAvbAV6HxQ#iHI(8e`<bq zCvtzi#{9{3dFLKRtSNtXUfwxk8g0t&pOkmjs70FbpBAyeWn097X8fZ+BEACvHa6j3 zK9}n@u6Zy@FJN`t|FK)#eeXOmIxY7Nn)@k;Olr4yzI>MyHYwjg6aHrUc@lC6KOtM+ z1RvY>eKg@c9on|vp&$751Uzih_jdk1Pe|JILjqs2WNrCN2Al*ES6IdOF#vvC(uVI6 zD9n&H?GGvJO~jh?BL*cIz?3!RPuT#<GZ2`8iXRE-Vs{|#m+k#?T;gM0zK{EEz9<27 zu@1kB0jMS<9#-)^3<*?<2^#&n2@&5%jhawLOh|~0GQN!osmFd#3I^SNMX_(AK~rch d4p>B^_tC@jVljVn=h?;LVR|2F)FO^_zkf~wb~gY3 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_fastmail.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_fastmail.toif new file mode 100644 index 0000000000000000000000000000000000000000..859d3b6f609a31a78921c933e90d0c21200c7a2d GIT binary patch literal 1185 zcmV;S1YY}8Pf12V06+kh1ONcll0Rr7SscfI^M+i8G%*J*%x$Bo+!4;K2QFl`SQQRD z8*>cV!m&|ib4V<<*@eR*B+Fgks<jaoyDb$C&f+Y#x+HLcBaIf;hX`AE7H0~Z<s6OY zdvE5=A7@hR?^ij#_ddVx_xA<(yeb8oT$78T8k(R7{F7Nf;3u<RG1TNXxzs(9&!ENC z&=cOeYpBJY`Oc0wAd^!>IKS8#uIGxq>>kQ^p5Y4GYq6KzMptXILonjJu$MjJLTjbX zN_mifi?-2-YtDMaZKJm+Xz7C6L=M6Hy#$||ZS{;XafZvG1Y_QztF$Lf^Hk=Nws(_I zHqC2-k8n=u#@n|pvz*~>(RvdMAz_lBu<QJUP12jN-NKn+@9s87YoT2T@>WR<88Y8R zCGb)u=u$7XQHXh(cC3a{;I&dvL-aPyPhJ77-8+3T0q#Nnp<Fl;&CZeD2l*2CRi(Qe zJm=p%ZB!bS-xcGT4CVb0{H!4?l<Rc8vl4xxhn(za{rYux$<}+Sk|~T3>L)1dHy)Dk zRRN!1i*SI<XvTN-dSxY?{|d{%8^Gy31ou)Qn5y^$gTV5i7U6!GQh!oD39QGvpza+L z4*U~0b3eh;yMOlKWCY*4rN0mS`RE1pR8gpED}McM11ZA&oWcEPAK=rhTh3hw!MEX$ zk3T+sVTkc0i#u>C=-)Ou>+Id}KRI<lSFY2|_+$pJ=l?eeehFB7CoU|Nv-p<*V*+B> z_JcfF^DSLiDQEEk@>l}eX*zu`ksY7q0;!zMKUC-hPB4DV8Q<Unt(?vOExqE41^r6` z+y01i#>ZVSQ_kk+<Q2cF>0j{lHQn&%E|@E4^KasK0=@D7xc%uD7TY<0UH=Dv{qUU? z-Kqb0{<a<F&rZ3U{M9i2OGkWr<!t_;vf|ej{Ywnv2YEZbGv#c4UR&|oY5hx!!xLDt z<U3W);$I4Q`o?kn+a|%!a4fzX<t%<w!ui+p|5JeT_mDZ?opKg`lEwL_!s2TiOF)7T z8~E;(oAZlM)#&sY6Hul$@b`~jq<((1PG1DbmyRXl_Vs#0Y@mnWo@%P%{EeN}KQ&~X zK|hMj-pYNwBE$wJDC|2u31R`~M<ptmgacoH={G+o<MgQ-qW;hP@4$2Z-P1<pT=bKE zF5>h?B`X=vwC4`=AIfu|_O%PaFZzYBui^BLYIf=h7Rs01SBt((P!#$qss4!J?cO)! zxz~#K35vpNg?#luW@ofRP1;wzZQ;E^dq+)LoF4@88hL(STR(~C;y(3SUK<4L?o_Ee zjY>{Vx@IRKC)4j#9ckIxZ5SpH3sK1pJt~O>`i+LRwd?Hm)~?ZmMrEoVOGW#<!Lc+| zjkl|g>5DDoO(xJ^`8OMtE=@CeDMY1iwrYAW?>a?;Ku0xuY0<KFsMOMX@=g3Ez9-kx zhl;GRPj?i%)R`yfKxV(`ybsn$@3M}>j^c&gQI16LSXt9N+4oe<N+Iy0LJ*beu6(E~ zQJ>hW+SnP#?Wd?K<M_r7+*_Rr*Wq!zo31Njp*qieRTB$!rJEkdufwMTd}j3@e7bNR literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_fedora.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_fedora.toif new file mode 100644 index 0000000000000000000000000000000000000000..7b64093043673d19b5ad7c8575577d11e35ce648 GIT binary patch literal 1185 zcmV;S1YY}8Pf12V06+kh1ONcN(lKZoR~QHIH{Nu}Ns4(X9bP7JgG|mc0UcT7CB%bl z6hpAmsa~WQD%?Z}EV7&@=?ZbMiXkLf<VmE(q6(C@@+3`X4GLT_*wuC(U8)kH(r}fd zobKMccPG7*?C;xjPyF8dzCQr0C3AWp2ve|()X!Z;DHw!$K<2<DRut%g0^$Yl&iC&T zow{8gL$-GT)dSPA^?=G`o2?>!;yaW$f3|gplJ86)kc5-iW+x%?q01A#9G`;BvF_ZD z^HXFq5q|O@_s@5?<00Z3OBRC6bDxQ4_wSw=wmR(oTfMe8XFC&w<LUPp^_iu$hC!`o zXMZfUL~9cF;Pl_FDQ&~OzWgyGtxD;!XTY}ikkI?x@T}8jM!M(&ahx2;9GiZ#W{jvu zwSjNHfy~i$1XRT0-+47kZyOKSO+Pc-f{GB;Pcm(OGeH%*C)!ryM0<UH*gb7#H!S@k z2WAqJloXUWw%q;qCuzTIzJF|GJuNIq8KPUm9h4k9V4HpCF{xJ-=c$%R-XJvG!6doo zg{=mzKi#IEBX3X{PCyU%fBm-+T!%IHv-lRm5>J^xo$>YWiRu4!-~H@!0iS^Nr9PZM z0kQd-V%LAuyienPZ1{Wr^8})RP3MKZw{}0f?|nLq`DxpisITntLa%D~KkRy+zA<n2 zcSP&UAcL&aCw)yB;Y)6Q9$xsYI;+2m`ODZh0A%iR{WOuk5cXB(*tgH-<J(`5@UMCx z2rtv$5%JfzMErXYrY_MZ^^6oFPNZNNP3q4UX=mnyjzjN=<f$@JJ^h&QTsRP~Ek51W z6su1(yZ`K5Q>xo$hoAf%X^HsO-CoZNs;eLC-+%Sfzk0d0!BVf!v+FedK;$X@5u(}F z{kuzS`d}hIERLSNn_t297Wv-rQQ3`gbed15X3dwshxrxJEnj8AcV>3>0lR+KeK(wc zn36iHQ_${LL|Sgvifnq@=;a3gygr}yurE4j^J4-{U+C}d=frF=yKnY!757fGU*1}M zr??w$i3j2+dC+>m@^47a%+hBUso8x^;RU}fbEd!Sc>RuRYI@Zv`L_TteKL9O`t<xf zw0v^%UjLhxuLn$@%w9~m3O@==e+Qd>SmLk1&m%DOE8_UmpO#<e-2B!R`0A(E`+I++ zVfWuDezOOB?*Hp^yC2T^f4%9)1iPP+<~;tpnJ}=r9cTAT9Paak@3nz7Z2Gk>yPkvq zkbXzRZ;*ERZ*d!c{c)95KSBsN{WLKF`VC0kFkU2BeVGFkpBKUsd4rB<&%sIppZrC= zZ2HZ;(_bbg@NoT6?W4BU=v9xaH*0s#3`((PFE|5$o6id^TL$(v+Qz8*u*;}J0K9x& zxIS<Cr_E71tWElMr*GZhO?Q+YnrQE4sfau|*uqE6OP?*W*hdJ@yuFgpd45?4_xJB+ z|Jqz(N?j5n;9ez;{;#y~#rju71P{Bt>Wgn!Y!#I_Fro^`{r@vd;hd&)cQs`-w-RUD zxQg6%j#reDfl0f7>KqumqMkEg>Rb8#tD}IuN?a1E=!m)1ewR@S2B991Id=DdeG_vt literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gandi.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_gandi.toif new file mode 100644 index 0000000000000000000000000000000000000000..19c8063166b2d24d58caa0dcde3e01b37a83fcbb GIT binary patch literal 1237 zcmV;`1S<PfPf12V06+lA1ONcNk}+uVP8h~-aLCZ%h7K7V66m1d@Ch9%xF~d};85W| zG~giOP=Z4V-%uorh(i&F4{;E25OgTCgAfP7EP@>b9fWi!n4v=khZ{QF;E;cdwaIC$ zwMqPqckkWvzR&vr@H-gLgdX<X?_u*09GD2@i@w!sN)m}EtX+*SOT{2_F!cfbR&QXP zAgoPtDe4gFCoJyk7N~ls;(iBtSe5iGs5&gTy@fch>f1@8r;xkTUyaviCYjdVbl@pu z&RtCzaqVE14{OHR%d83A(+{N0UblnG)1$QELIW3r?&&`YhW^=bmG*Og60J^UOhw(( z&+=xc2lVn(Gi{}T-Av$hOf@C%vebkO@UUIUyp>nlJ$(=BHDyhGPheMC%ybja{Rrir zJ_9-x{Toz$&N-=83{G;LN}M-5&G^ZANxD)Vt}2^w&i$*vf)-+asXphzpKjldi^0|T zh!c^udQUN`Ug@s1%!-I6x!-hfLhSl%xblDjcL^&GuEy;z^%Qm7GHx2!7u{b!kS6~> zZW-R5`=|A=rheYYxTj2VgRdP$C|FR5w>PEz^~=I~wx)HX0|t25`^2O0r%)DrQA7Jf z{ZWuH`F2|0e*?Z~1Fv^*+<K+If7OJSC3)jrAie+m5n_kNmhTb~YFlEp&~snictZ~d z^e+PV?(o%kvjZ7-r4jc^o4a7ZfWD5MwnVg9znB@h+?S`2Rnk8k^=i-kPUTUE^JU?t zRFxJp)v8bz(TD>!xQKZ*{ns>bmS=!Hd{Ju;b|a#=ZT00Ata7l6#q2KOg!(dx(|QB{ zTwBI}A2NR6AQ9?1Mi1p5_0Us}(kTi!P9EMT{yu!~gNXiBJS=bt=G!#NxGHHO2Dqnw zln!gw+Nypwyh}tV*TmlwFv(eauj(}=kj_H@+*P+upI1Y<0S#OxkhYq=fsb1mKX4r_ zWVQF2;_k**G$B3Q-1%|K!-9j5<<$+}VIf5wM!gAZ%DQ@-XEy3mR1-F#^IeTNb<O!l zfmF}K>)5n@HtZ=qg&uY)zNm9uFyORBPXFJ7`F93TQQViYxkAQW=_$lG<o?Ud{I`gn zLT1lVPDHu|VQtPi(Lp=dAZF`Ik+10^)MZK4w;`et=lu33IpZ$QlfJLBn4SCW>SuW} zd)F}|bu~rbL8oGO2a_DB-wv*BPS_;cr61PpI)Jw74`{DOrv7YrJ6_L2oVTZ67Pk4% zfN9;Fwxe{4%EOxyssC1YHh;*JKM&iLmbYGQ&M}{7<W`>h5z3B!G1wq7P7hP2|MKuI zfpT%)*m55Bl<oEV(_H(nfql{M>eo|YcYboq%OCS_d;NTEU#Bg`UI4&FOvYpe{}i^( zl<|{p>H4E!Q~rIU^pN~h#(xT%TV;S2x*e014cra_+l)BUfe#O=Qaflk8=*4(o05q1 zHL8-m?Jr4DRY~7KL{$mp0_n1FQ+n<v(PqW2tp1#0a52;Orc-fZ`X%=X5$&hml?F6$ z3<d<!`*eW&9u_zX1Lj;<`-!%ypSE6U-~w6*_thQhi&>UWQNSgduq^Zxb<5l@Ggxri z_e}=$oI7p3%#ujP>bt6p!&*&wtB<$=&49zefIQ6jspv(_7u7;1Y>GORveWzzxBq(+ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gemini.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_gemini.toif new file mode 100644 index 0000000000000000000000000000000000000000..10e81eab143d6600e33be76b28efe226609ea274 GIT binary patch literal 1042 zcmV+t1nv7&Pf12V06+i+1ONctk}GiINDzkGaHdK`<H~^@RXIRiWpcm)1~C!vf`D5P zDq;hJ954-#iGTwP9B?2DL}CzdB)|b7rWcq4A_l@Ch9}^wTAjDDni)BM=y_nfnKa#B z_uoIj&k#L$BU3i#cgEW6;3xcQ`23MIsrx^$n{>_>812je+s1@8Dq~ORr#)mfJNPRr ze+IMm)rc@{F3lHGCS7B}PR;^HxY%=xM^+BI0hfHc_dk544@gh=aX?mj$hT+oxm5yv zo}fE8WcPdCy6_ttB_?PaMJG6`%WmJWRqr2p-v_;}>Jai`cbA<;NNBpMCiRpF^84U3 zk(+d|TT5TrCAOm43(3d7GvXc|nzd}T-I~<kU-L8v{ZA_Wo>uwf732-H95+~-akXC0 zr(a8W*Fh`y^bYoO`p1QlP+*c#L7&H!Uvm2wV94SwZ6iya1%bG|n;#GNIs3ekc<zux zp$LVJR~ara6}qkTVth?>`a8oN=VIzHDaOAMN}i-}K!4-=NA|=$;aeL!h0+$Cp3Ot# z22ALQ5s262r;YpB8auC${GQGp{tH=}5mukO_n)#ung=*KkU@%9(n-%B{AYpBw|OUq z#>T`sqS<?Nj$RgEOyb@l-=?<>mF?k_&3^o|OXF)S?*Gb?f0Daja##6R9zPV63#xv< zW$Nb1f93IKAU&e)_ZN|_b8tYm>&oI!#g=WweW$QC<?bKpW$|6`#Fi7f%M;ND<;&z> zird?0DZaNA*X^z>gMUHgmKu}aCsb<hLRI_$k=ifKQ{_+Fh`&!6RKy<;N6-U&AgU(< z@qGr>@Gq#`eS6C*p?=7r0=}!b?tA)MlvlRP6Xoz{FlFlI5w;C$t0olF-H@{Q4vvY& zPK+SIj_`?FA8MY3`#c=&P3e(QidVZbz*}}`=4x|kK9Ix8R+pWPvl>TlRz(IF@+;an zWEtiD_GZ!|DV6ka&Tko^JvbgAkE?D76pAs4JI#6es#g|QX{;E3rN^D789H6ixGLnu z_)^KY3`)8X2)Eo9px-NftW1?{;lN>m3k<~_{fs(J#04De=cM<+!MID4W~)5~ThzAd z`S`7R++l5IuhxWi*{A;=O)BdrIqDm*Hsg8^Ka*_L-I^!p*G4}59!Ma1*x1c5L6^wu z1(_<7ajV?GOMQhVmAgl%F(?o|mz}=hS-pSM^R0TI(9h~nC@lEJh?IUK9J1M-w=R5P zBUE3{c>{`u1y4LmbPX`%D}6wEKVI};KvsIl15Ca<D}nwVQ?}jvJr^527JL4zbSN=y z$kL23ZC)GQ8k8IjSn1~}*h_Olp`vKO@6_kP9`XWx-mHu*qYs2WvN^vq*5>(U-)rL! MK4dS%f}bP)1HK0b^#A|> literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_github.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_github.toif new file mode 100644 index 0000000000000000000000000000000000000000..7092c7eaf0fc64b8365a1985ab1ae8b52375aa66 GIT binary patch literal 1092 zcmV-K1iSlGPf12V06+jZ1ONc-k|BsHYZS*PY?xq}V3=@&f?)>?3L6~QqF}fK6V|3+ zxQIapgUAaaQ$#k17>416MGOmWSa=(R-5_WYG%U;wf`$bRh6x+K@WK~1d~fCAb(}fQ zI{FDO+<!gi{D0>=-=AUr$g2WOUMNVi^0Ug-x%$tltQ4fY5I8$G&VH9Py<#j0q$Q~s zn*Lpiv*%!&qQBe0<N$TBziWy#*^N}%ARd)A8Yvp=iRhiZ-C-i0_TN37oT#3DY##E$ z+k#Ng+afP`r$45Km{8IXKYGkUQ6ZF7R1T-N%H#}cl@Fu)a^y_%<-Vq~iRHQQWJ%bB zJAK7x(e8|jI!EWQgH@Yb7Oi+UJ|5UNzUS6k$x6lWLarFHvL@Yg_G{w7etOvP^Za;Q zy-XaoL&dnXT$vx+>)|~qsB!jd5mIW}H&jvD(DZPQO@x9qF3!f;8W#$(iEvKS(}s#< zWp|>~w0o+k#zA~dcfQ5$=3Pa_>8k0@z7anJa^}mO%J=1*u0uR>q%cy4{<3(M_Y)GS z?{)>4EQ0!=OL-IYtAu1xV5h4f!CCIlPUZJ!uyaAOc3pMhuBY;;{HHSPeATsfso?eJ z1BQa;1ISxN+m72Pykk<J!A}aX`)zd7A%huxd1ff-<r(sql}&xxhU)JbTKxA6<Ueh1 z>KOc?6;F%5;vs+hJ6#_OXLX1fiW*`k;bXC>c7W=&Nt1tVItiWMFNCghem)^?d==5; zLl<`E6B1`>(c>&kaNjNzq{UAPkpK4oKNe8^HA9R4nt}X37MnUAK=qzZi{H~Be>~XK zr){WyZPMajn~?vsy{XFzoR3C|2ECDj-DPFdaT|p@?q-3L=>g_$2D{%zw_PfNdr<XM zKB~gbDzbL@yJU}EGpEqu<gexLTKftT*{fFhSbD3x-?bp^{!$k0@5O_>;FX;h@L<1V z7TJ>(satbD5nJVNrgh@w`7!l_J%n82UNdtS_F9p;eQLxH@utdsR!z|quWYGUlGs?& zW#u9WaYMmYdD^ZROY)V5c*HyBOU-QuKdx~X!ASkDf1K0(8GMHy?AwAIq*4>Un`+5G zY`p%VM#`Cs-Q*ma;;mFv<KX#l&f15n40F@GOe}55ar=9>6mJyH?Vq>iW{B@U_mq{V zoh16ZZv4NWzoO3vZu2AF`hxWZl0sfE#iue?ziAeg_sqWA{ZdbNr)LqAJgZD`d+!eZ zmGsL*Beml1W`WO)CIz?Yo2DCmN!SGQrF@nYye&dO#)I7XzT9ChMa7zeNd3aHL%?-X zbGd&}Is6^6vOD|DjE(1mw2?(O&Exp8!gx|6)xnUDrhDfPaU;ceR#NECXz=^9yuci# zI9qC-%GdNb%bcKxXl#5eKQ?}dG89yhwmZ1<xA%&T3lc+757B8`MJk$zZe0^`-ScnT Kz3Y$uKl%?h_dc)y literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gitlab.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_gitlab.toif new file mode 100644 index 0000000000000000000000000000000000000000..a7eeab8f667664a4b2991e0700dfb5e137efb443 GIT binary patch literal 952 zcmV;p14sN+Pf12V06+k&0{{T+l0Q@8Kp4h%B+OW*w9Jq&LrE!J7_p$ErPDDsbhdOM zvGBfuLxVG+xS_JXM!DGWAuz)=43#Of%$&;_@@M~$O`<lwTU~B>p7r;80r(km=Dm6E z`|`}ws#o<c8)da$Hc*~<n)UwK9lEcYW%a8j$~(Kudf$CU_uc2R`o;1vt?~?r=3!dp z84%6Gw8}FemKV_~$AD;FL<=47qG<ooO+4?gfru75&STMj=P{ml$Uu@7I{HbGcKsxs z$2X9qRosAgk<L51$xf@d0kJ%iR@JK)Frc5*Ju;D<N75>0Ks1k}Rm^}`9-UTx1EP6! zTIkGsdHUx)Rvz5|ofbM*_j&rS?pb*>11wsYm~t%It{n67NCRwI`3&&$NCRwI`3#8V z@o42SAe#5k@Aw+`NOS9V_9M;tX&wKeAMdwj4m1MZk^HKc{YXAP&4Jb|YS(3HD{YMf zFQ{j3uY3F?1EM}%4*OsG=-=;$`-0nb*8bZymn6h(ul<PrNB`F0{O;dd*8YEQ9P&Zf z6&k?w@o}Ne{ADMjfx6dWX4ruXqc&{7>_%UttqqGB;L*2XyvyvOesvuGCT%rX%mACd z29r(d81=iG<kxo#1q`t1y8+R&Nz=z?#oU7Hg9fhGEb}W!HksWteS934*8q#Y18F_# zn52)70rMDO(uedGcf;y`KTzBNoxTKF9qy(!VD@hvVFNV!PQY%c4bTR%7`T)@<QbsR zw*!~S-t2<iOq9xke#eF)259tcMtfy3Q9x`)L;5|9c)<(PzzacNW3-QkfS7iR?!nDy zfTX_)=-k^aKpkDSX5{@9u?5$3`d-@nit^W6GhGIpsSU{AI53NWG=19Mp?yCz%ce?f zqmg)l7SQ^&BqgF<T`Zd*)9A7~Cf=TS!8y@>o}e$0?PEUo^qAfBHac+wYl8kd`d=qV zZ=Bf$!ZT4S2@h^;4@m<WbMGpPi2`!YXc$kjA<ICVzMW_v4MCx4x8feO{R^fE1JgZy z4aT{*TcGghvNek`S7DEzpzq_atC)FfCbn_BsSWo1`z<&p=*P|12B6egHq}MAhiL;L zeHVrsw`_vaN0-$x&NpDvfQ0FPw5#LtxToi}|FMm`7u0v{^&Nc);*B%A;8SO!RCXSm zy#Yku2{8AG0={78zwjPPKBkZNZZrg6Htm+Xu^}>m=-bfUv|HdyN0<Np(cpAFU2D*q aecs0LrZzBq!><j%x6M=IsR4eb!2Ac@r15V6 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_google.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_google.toif new file mode 100644 index 0000000000000000000000000000000000000000..5c628be2926a8cbbabf693e23a2d89ad9ab9b843 GIT binary patch literal 1071 zcmV+~1kn3bPf12V06+jE1ONcV(m!Y$XA}VN2TtWr9$HC5kYx-Xx*&vl#WvEl33AQZ zT#9l~P=-<u4akZ~Lm-0#g@`UbET>fhg%(OlC&{)3ftL;)6f#Ikj-sJMN;{~uAS=}w zCCyNX#)I5hIJP2vy8qRC<9+x2-uK=EFd8hbC8^B%{bE_HOAXhbQbT$oR<k88_cSHU zgM(3Extv&cJsX*=Y^jyP9(!fhPi3Sh8ggG1>ji<e$6m(Vx2~1}`*jw}I|*wxMwDRA zKF;mZTG*^Eu$t4>HH(Q2GrIEfXLe<=%=!)W-IFcZr>iM7g!B5hU98%xt5c{Yb?f!< z>DV*Qw*wS^8mG?X#;MnmdT$l0T&}h%oL|PQe;KdM?<6KRvL#o`ijF-}LtB;_l&}^i z+<<DU#j-gaVEw*!FDEh>Y2CAv5bMTuVO~owmY1>4%Mc|P(*gE0_MXdup<w++PNyye zyLU$DR0f=l{iZC)7oQXKoU?e|U+FewHK~6?1A4aP@Y^AOtEa2kdf7h*sbOrAW@7X4 ziLcC|`_`#Bv{H`io{HS;%ZmKZ^WGf9IyfH9%T0MOYcH?;FRur{_lEgRd95q9Fmm2! z9}f4MGVE*rEuq^{vpE+$dVibbr_$Q~q<4uko2yYphf0^^;{|8^Sq>oYC+QWLMb7$5 z+*N3XiQRvpXM3#qBEk#A?*Hw)Kj|H}Ki>YkyyM+JW&Tj<5+|_Ww0~8(0k?@0NIUD# za#*>6eMs_Q-&y}bT)hF`8?M*d;VZ1BpGEV*(fM73<e!bIH#9E~)AvOFBF~)jf#tY6 zP4bgL_4}r$@`imN-}#<r)cl&Z?*C4F{|#^N#OCAEdi6!(W=~hsY6n(emN@_8_0Hcq z(RY8n^zn(#Go6@V$)5|7^xM(nGkJfd+tas;{D-G?H4iEC`WBMoB>$b@se}7!-#`E2 zO}m$_8MFS`=n}E}d+6j`>cZ|Hmp&P;t0@M|=o>+@{z0_=>?BRr)eOyGgL-m=zQo<| z_MZ;ANBcYzrmIM=orZ2?l>TFU@SkgxRs~ba99T^o!x`T<vCp_s{@v-p{{-m7v?}14 zPOKd`AoigE*+A)Nk~EW9B<Y_<hyVS^tL^vlIvt|U_*UEpsGyiFly;x<xn>e{r0>+v zLo1l&L}L9RN^b@F^1sC^1O8la)a(##Zw2o$U-s$mM@Mf@3a;B+!Mn^4ujlX}p4Qyo z0_1G2fM<R?s^G8q9s(U9*xm!4d7GJD6m{vnDID6oi8;EeTkl0X5V1`^q*7o!((aNC zbC_bb17I>(r3+J*^hx>vfu*RTk0^7KNYJ}puq6s02I?{Wa)kMX+Oo+$4h&oF5T&&d pQ_8M!J^`GI0zC4Hfv>1Aoulh?C)SD8=>&a9g=RS4iW?ie?G^eaGtdA4 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_invity.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_invity.toif new file mode 100644 index 0000000000000000000000000000000000000000..d13db26677984936a8e50c9699d1325b8392d4c3 GIT binary patch literal 136 zcmV;30C)dXPf12V06+kI0002((#Z{gAP_)N81P89)<6ZeITd*EC@u-IsEPhRSD9x} zV~B`|S_*C+&L=p0eEj;-Z7QX2@-08V4IdxB-dEY4&rNTCe;)r|{@edww84%3s(#$w q>K`lHhL4Ybm#>n0TBWx?`E^^g&--QdzkmFa`2P6ms2Cz5qD>17q(kZe literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_keeper.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_keeper.toif new file mode 100644 index 0000000000000000000000000000000000000000..e15958b4f9fc97579dea8a9ec1474a59682eeeff GIT binary patch literal 1507 zcmV<91swWRPf12V06+lO1polul0Rr0NfgGXIJhlRY>`6c7;@n4PUUthaVb`i!dq@N z-oyt|D$As?njs1*ER*6C+$hDIt+)uA6hZE`7>K}yEv`6J3I>ACg%K$Zr8GCQf25VP zD~%la%-u{ivv2nI-uHa~tiC>HiiMARyN93N{PyPOS5KaA=8skIFRdL-ef8qQ(b>`2 z!*{!fU#nj$TfC1y-@e}alDTX4w({h8z}`K)c8Z1Ry;<1Na?0J&k5%<mF!zI}#lm~* z!oIdI_&%^EJzVK`<-|+%kBXpwdUL?Z51z)kr`dCTGaspN7d}96ZAbKL=fYO<KWuC( zkl(*lA8qVtr`a0s!Sp*Y3!m5C!A|z!yQ8ze-yT>Gp1!vpZOp4v%bxNbsIZyeUaJc^ z<@Mgt*^3VszTav3KH50fPqRus$N^j<|FKpqy!h~OugIr=tfkj|fue&zgL#c^zpnUS zcMpq&3%gi=OF9)UgdQmCp>Hcn{z@0@#nT7tT(5-+EU%SYUoz*q|3{wu+|rqj)pPwy z7kniT*W~_b*5v;?unsJl`da9KSvXeL#V`7NvmmEeP`|DWPWVMBKI9n)_~-h4@Pz{b ze=~m{`U7x!C;a#S8Gh}a`8!&~hyMfqj#kT>EAbzPe6x^KZqGFo!vQVY%)7t1KeYyp zzZ$<*unsh=8p>VsvC7J@hX>#WCT{SJf9nzty0{K1xWr7PQwWuH@R4d%Q6CS)hBvEi zI^tb>+wL=W(5zK|eEz$7i`jDl`!@W9j)tIXv{9XuNY0Q_gRGSw-$<9?Q&XPLMx=uq zY@e2C8CKZ|=z;~+c&&Ww0c&1So*tWaQeNa__)Lc1oBWGpsA<^9fi~8W8qHwz=U)*i zKCqVYK`WRWscawiW*oUBCGpizpgWgEQw9&0@M$xs!wwy$=sW<HuR?RCH#xq&h>zNS zjRM>yS+DadfW0Z*EE&Gxr1SAWI1B-5Pbo4a9`;awz5|kBqgDB60U!E*ATeFh0NOB0 zVos!vbVxH$hi&o8O6;{Q!^fqFPG<P@GRSt^jUe%mPs%+3IAipM%P{MI?Q;iIFs?SF z_#~C@&jTij=kEG1SXm^IjX;IFm*qsR;UsaB3?N5_Ps_=CeiAHmk_GI~P8zX%ltK-| zJMIL4)z$bcjo<V?yVGiN_own1{-YB**5QiSv)wJ>?<ezv^pasn@B4IRHlqxR+i~i9 z@w^ZzKBy$~#h)o0cT<_4-tQ~RueEViH|`iM%iv)(;>Ty>DHi$8jlI<U;?^u5Xk2k; ze0KSp(s+V>8NQLoCqv(xtuf!v9_-D~zxiD@;*Qhiv}Q~B^(6g~?>Dd_HNu?FxQ{(? zOT+ZB5mu*asxo{u;SXc;`^lbU2`2JIMj?pOhw4)=ZVV|tZY1%!vLK!;<{z;)mC#EN zujv`w3w9af*Jb!5k<Zhc;j<~xY{FUYl^y#&40?k8ozW+mc=jSamM_{&<_m4PJMHk) z4a-~MY<-vwZ!~s^8zP@b=c>ii(U9S@6h3WErt{C`uwRpw*%nmz@U1BwbCFi#3`y}p zD}_H4enP+}jr4S4v<wkhu*RoGs7sqR(I7s-(&Z-eqlvK|Q`9pYtTPigqFHIja6vcj zI8VjRDtwsEABs%PrYe04KOmr;=*&)J_(m$9JJ^AW-=j6_?HoH)i#DhGS-wy^ozMMr zgAOQ+lApu|Ev`DBot;d5ab@_}Tf`R*b9R_AS{B`ckjh4&$4-!gRq>U<iSkkJtMTbD zc|JB`WkZQ2M!_mp<2NM3llN^-yS5CUEaeAT#0`>*GyP5g(6EErAn^^7;?s@{KXMxO zum@c3vx`00TbxQ>DY4k4Jb#sq2DE%1d@?lJoU8%KMM`K5d^|v&QHK_TVD+V;_Ue2x zq#e+LRl`O)QowgE>=^w;d^`YM)TT{XMGnmY&G>HO?4lXaLVegH9iz=oa2-@|30Q=) JunN~k`3E)f1?vC+ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_kraken.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_kraken.toif new file mode 100644 index 0000000000000000000000000000000000000000..9aaacd6e1f6b48b0acc45421a0dd50b0abb07a7f GIT binary patch literal 654 zcmV;90&)FRPf12V06+kO0ssK*k}<ZTFcgMkmqt&@9IHSj%|ObO3^wVEYk1lZ?m-ry z?g17s%o=3+!9C~#lxil=<0wf`-&5ht8UEYBpZneXxd60k^)D%aG2RV48nUG?YvG5? zrCSnV8@`g;0WtPy&imu)O1VoT^nCUNdGsKzkuPh*drt7QET(A2?j@hA5P}Wi<8S@# z6YTR0F0~$@|0MTkUR61d@n_gJ2-&0TQ@OPBLHZl|!JkE!wesx`?7|#9p1b}I_ikf^ zpHG*yxod(~-2I$EaASfY+`o)2E9LeTx&>1HO1i8WtL6*(YPzi5z)VkY9rXUV5EEp| ze#7hG_s1(==ex8nx~z<p=>aT6o%{{AN_?-@+pAj`z=NoppYzUNe%Gm+E-S$&e$JcV zFZ?5Yj+&s$vZ3U=v?+c@BtPX%@k0i{SJ)K2Ki+TvV%!|RKOVxa(<DE^f|>uMJY-A1 z5ZCjYu^BsD^&G^4g)Fbwv97c7^{+XPFnCu0Lsr#yOO753^eQuSsdY4gH8IU8s6N?2 z3?aDC!Z&qZlS_~J6<vDiiLjogDZQQpN}3?O^U?>3O!u%AkDlds!`-IncJJLl^>|dj zo9fAkzGXVUoW9gjn=&J+N8f=FRXq{bH%;dUcktI5U*7<)<+uEn-|}02%Wr@`x`Y3V z@0AG(VXMbL$kcNYRy|vydU}rPnIP4(^hZ?vqTxZN^gakn^9-Tddye!@YTmm+05{^Y z^TcopfK}-Qw#4LdOE(eB<VkQjed|4yl%KXi&-Ex9&e&-}GhONnEyU^VI~AUc?8PbR o^QKMFn#>WnsyCS67~5ApHjHtC^$ot1^=A(gJh?$@)#`uHZ|QzkPyhe` literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_login.gov.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_login.gov.toif new file mode 100644 index 0000000000000000000000000000000000000000..fc02cd70d467b85c2adf9a3c3d3f5f64c1e6e36a GIT binary patch literal 651 zcmV;60(AXUPf12V06+kL0ssK*(!XmHVHm*iXFPDZK{tn-Ae>tkAq9sdf@DmGN^ok7 zln7Ni2zF6I2%-TcgBZc(Xt<EgD_t6dQj(GjE~y+sih<;$;UK|Ixpolxn&OXE@80CS z+`aFC^!xk)pZD&00IUgtT&A(9?iy34vAwSlOr>7PCV&T`QfZ@Y^vFitCGvm0A`+Ue z=T=E=$NqSxy&xKLqC5BZE0eb%S19|+_zv*#&h%OQdI8T1LHho91K6&F82HM$|Nr>0 zy>s7B|Aqdn>W{xXD4I{vNl(y1pR2L-IsNkp{Z$vWG<N<a6WR1$W8)tTkZoH?t+Md% z93xCxhrWMbN7%j}()S+>(1hswFMam&KL3BC_s-Y*GkWo%y}pIiDhuD}6-_(8rIF}f z_@X{%*}+DKO!vY!dXFuCV4kV}!SelY`s{p8?^?G1<&d3!;j8ufy6EaUD?dI&HeIW+ z@?Vea{D&GVzirz28y!~uWjh`nePiQ`x-E}x9I^422ME)xDhq#oi1YI`7QQ*c`7Mow zKX;7tFZNmZAN7O5r{SZKIl65Y&4vE;zSf!VywdWuC71gb0wn&~N$-)}{OQysm{3`v z?Pn8{{Ah@>F98P=lM6KcWEiH!t4(r0=EyH)fS_oY+;23=^&JU#AnM)<4L>3Raq?TQ z{bUTB#FZ;v`q@Qr8rM*~^0R4}C9bS^;m`2xe_kL<ZvAWmT$Ow7#!rU9b*V+8J&V61 zMMUtVNU*W()GuX#2k+wLf)oF496T=?Q=24yy$}cho%nyR(c)KVeEHdgU|GTWYb&1a l9KVV9?|VG;OBo>m3`-?W-tf~eWg;T@(9O6kl~x5;_7A&cR+#_* literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_microsoft.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_microsoft.toif new file mode 100644 index 0000000000000000000000000000000000000000..fd54d3ec5c1eacafb994f32ae0c9b66bbf11a0af GIT binary patch literal 165 zcmWIX_jGe$aA26pz`*eKk|Eb21BteWOB5{9dZKS1G``X_!Dp|VU%-mR4-_gUOo>xT zFA~2Z^Dz2%-Frs4A3vkF^JN{JeSeep+&hJ`ars;8R{o2S%UXH(I1;$uE?={Mg>CzO zdB4<<)92pQ%$_N|b@STq`={)V%2ThlU2)d;@BZkYE0%WjBZ2+=_Oni|%3b!$&eife FD*y@aRto?C literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_mojeid.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_mojeid.toif new file mode 100644 index 0000000000000000000000000000000000000000..f08b3544ccb0c70639fa99bef039035431d0771f GIT binary patch literal 1330 zcmV-21<m?YPf12V06+jH1pol;(mzZaR~!fMXA7ww+R6h`J!E)i7(lA3SjvDUSMpiP z5F`dHWxx`WO_Twc05K2?>G&fmC8z_S3>cv^gboNYR8EI9K{illptu9V8H|mAq8q@u zAv!#y`0D5Laev;kITF(@{{F`Mz5BdBKLF~fr=I^e5U?}|!XWhet^d95cQWZffi9Kl zg6$*qd|c?}jn+tFc%2VgJha7#&eGHcT~I1e071NKcwM}4HuCS^u6nP#c_yvarGl-s z@TIu8pNFd4gcsN8LNru6ALUb~(mnW}k$m@lZGDu7>*IvkW@kx0ldipwZs9TZu52I4 z_eXBS7sbWA#iR3W6s89XZr|<rqPUUgoZ3Ibpx)1J<L^`}Uld3A`<hpPni&Wbb=GFo zKg7yNQkj57_X;$4;okSB{Ski;1f-DsGauf!WPRM)+kSU)K3Q!Cdkf%(G3qO^c;3IQ zyn`0cZTl#z-fo`k&nLgsKNNR-*RN}!QW^3N<lSeX->EIP<2oNr+D6`pk0ye=gONnJ z;RTv|b+M<_d}J@?7x__s)obkTnyJM+X$S9|H}%n}CA*t<aZjuGtc`IpJ#d1ZWs1u8 zk4XN^oN@o*y2|EU+#T+p4DP!vES(*6N1{3E>TgU0eHlsMekx<!zqf+yZpl9Ulu2cN zPxiK}8d}*t=8fq>`zN>$gHeb+@AybJ&_I#=Fu`wJ8RdU0o?5o&lTQ*4N`4e(2dRBZ z_Yc!<bTA8*^$?8mxL=xJL;lAFbmPc=U9!6p&UkNowllm<VXNH}ptafrE4e#~`&40! z;P1_)GO46ue;5BDb0T0n-*)?8g^7GQg!}ha^gdNE6#@i*W)9gSW&4|qz1T@<*102o zC#aI%cHDpdO6^l6o$L=xBfG6=e_OWIzCYr2fNR1zao-kKd|5xbqzQiKbX(jOw<en| zr~;+&O}mT}7)W(r(Km^{byE1_s}E`$RV>H!0E2nzt$hD#ee=>z@PAsf7xX%{##n*j z@Il;fEX|)}%leXFPHR_2VR&0_hjYLSZj|3%;XWS(;AmO0Wqn-dXFFp#y*~ElCMQRs zEsJ^FU-e49S|1mV50rIq!i3#BoPfpu?Jey1jQbt^A|YEg0AkB!yR7#Jn`Pf^p(A?x zNXT{q&`iBfisG4JAA(c{*XNVyTWndY%RXa`{fXWCDRcnP;*svsxc^s>bo$O|*<TW5 z-BYZk12l7V8k_fY6aw(|qr>ugqyCiRki?6RThZ5WNI5yu?ZWs$wk2??*G;=j@wIr> zNsRf;l#3(jwz%{?98z?<&?K01$A6P_zXbs6r1}p={3!=n7scLosbegp)$PL3B{uW> zj8%JfWB$vbjXYUzi_1M@A+=sSeNor?fm8JE9sT-$RP!M?^UWv4iuuJMcLqYzt0UW- z+brp7KPJH9oN!KjhWOx=122oGqrY*bn-{C(?xeC)<jeZFAnA&4DnuWkuHkjDW@(Gl z7R9GSO=aD4r7M1PQ0l6k@8V8u>X)KJrB^>U=M??QkH}rM@?BgrrJWQ{2<a#1^2;lJ z;M8xet?%OQx9TU=9y&hXI`0wGx~cT?j8o~Vh2NEEpa2#sw57Xy$qzhJcYV1(Fs+_C zCFa>J-QA<2({4-c{E@^vC#VqftX<ISrUFZAyFT9^N$mJQm6&Ibu+y8?^j)9h-{F3p ot9))bu_xheeX%xu*Ua4Oq_OHsJbyJXedcSXKt1);Q%{xr3u+R*K>z>% literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_namecheap.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_namecheap.toif new file mode 100644 index 0000000000000000000000000000000000000000..23de6ffcbf2173c9910a090ae3a17bfca2aeede4 GIT binary patch literal 867 zcmV-p1DyO+Pf12V06+j&0{{T+lD|*eKpe#n8YISy9j`zo#*FP2go@IQ{s&G|C>^_% zEpC2PUD?d!1Q4Pd?L@mcA#EjhDokdIuSiJ8cIjkgs4s5F`TRZG39H{*&-Xs>oe|2E zDO09QnKFg7^!$5!`&U!)#(90uEzEG;A}U*_$hOXkdJ!ib#`)Yy!}&1S8A2`%8++4* zYpeL8>W!^2^d_FQa$0w`d><<ac7{j$>C=n(BAKKIMrHN+`M1|@&pmYN&can`s3KTe zOPgOc<aE9P&a1Y6aJ52mBw%=btIFRvPq{sgrjHg-yusRTg|5?e5->a__g#RuHz5K8 zZvT?hXpN2-=(5ky9NcGtBIfCV!}(?lI$z#xvo<@R6NXp!TEH|+Pqgp{=urDM>9Q^p z87g%41vG53aK1oLh@RJX2_vlg-(!YDI_m;*`!Rv(_0NE}%6BNwk21`*0B>)3ChRA` zpQ^i_%Ul*^sMw{y(=T8emKRt~SGD)^J&3{GtnW>`fQBtL&W|vt+D|MnytMs4<KeUm zScaG`G9<JQQSf~9f}e<4;2Ye&@AW;9A-TQavK^e5ZUM{S>4C%faC?jLlTd!po~x01 z0S$MU>-9Z|0d7Az3AYaxSRJYe=GVgQ$KT5g=quFTq@!iLD8;0G`UN!X|Gh#7kpONl zyiSNgv%@FTE#Ml_R}5}MpTYJ_`a>q(lusuwAh#D8p!S+>c~SFpxqZ3?ItF1bgBalU zRc3nJ0K+B%6u*FmyOc2QC<EC3V~`$YDB1{A>;g|aMwf9DCR03$Z69TT+m9C5SLHV^ z+qBKP3}9f%?L`Jv`_Teey+H2vz$b_@%z^DSR`nDFB^0A0<pMW@8m&>ELE6DA0PXdv z7g$cmHj0&wOUea$wBnmnOc>@qLAT(malXtD-#&hUpMzzxe#a2JMzsLlA*PEIN$rys zI3g=VWFRN-9sKp7{N(mY3tYQ7lDlJo+auKPKnoxnrBd7iTcqcX8Q!;4H}o|qKVAEz z1?tYB({rwU3ay~Np??<HzlBmu%isJ_5&R%q4riFx<8Hu<)~S@fh^9~rA78@xC7<Bg tZ}Kkr4y)v+ULf0SnME|UFghqNd}&@DOWr<j?6nFgQ>ILrGG)pn=^rnXtwI0* literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_proton.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_proton.toif new file mode 100644 index 0000000000000000000000000000000000000000..478a38a570fc20aacb10a25c17151e0b35fd3006 GIT binary patch literal 587 zcmV-R0<`^9Pf12V06+jg0ssK*(y?ySKp4RBFPj&L)h;L1kxaUnskZ21iJWA?;_)Op zxC1AhaDjV(K0+LJB6x)O1se4g(uFb2Go%t7Nf;oiP#SXA>Kyw!3Gw}R|Lo5nz<TBZ zm(`=v6Jy5WiT@0$&2IkvhUtjd^jH1JN@CN$+e6o}>2ui;17g!(brsn4xts@feJ)4D zuHO@{9h*LvQ)btH{0ek_=|BGOx=umD*b@)=o@h1Z|Cy%|t-OIce1P25Z()%&?*qJZ zd)hb1-R6COiLdk95rz*iX6k2+Qyjn4Y@j1>{1#BnALu$5KEO3Iy}*gT$W#qT75^et z`+XNsM&}m<$2Z@9ozsH1#`jm}OnkLY1<v-Tn(a@S&9CP&jGNbUw<mOdL7LXjTu-Ze zqUoz|N4mRTbrdz_9y%k!;+KLypi|Lx%%A<rxd}cei;POXW9DC9kc*VddOA358QF)< zur_;@+2xN&N7Si5d2XU#1$Ek7ve-nQ_%`+2r4~02aGlj>FS9-|({F0~^Hdx~EifIg zmfatmwxh0NjPHDTJuzlsTo9-@!&LX&8GDn=gM##3UAbH3i#JDg`Il@z{uX{9(D>x; zw!IhMhPUBI1RbE<`1>7kob1J`zK4J^^I)wnvlq#JeAg!*+h1nK$+|Na*Z0Ipaz9+3 z%JcMOBV7NIou`{&`W^8l{k!)B&!4fcTNP+N{k{F|@O)3qvh4<F{xVaA=l{%94G{OQ ZYJ}$ZgsKwFr&3kvWBFXF`tSd{{x5TSH@E-* literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_slushpool.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_slushpool.toif new file mode 100644 index 0000000000000000000000000000000000000000..27bd873d7832f69c1185ea09d2a035efeceefbc4 GIT binary patch literal 1021 zcmV<Z0|NY1Pf12V06+lo0{{T+l09fDOBBbaNU=o<3yUdID7?Z2i!0nBf=w1IcEKVG zDHJS%qzH>ekQ5SZB%~0r2$CX*ML-L|S6t9Sh>froflU$c76C0REK+P?u|<mWJkHze ztQucFz*l7dr<px-c7ErJ5Ld2TxpL*|d#a$`w5U#XZw<c=i&U?N@HD3AomTMNP^n%} z@e~!W%jl<iR3xMxqWW18{Q-&UG412@U<zOaRjX?4>-c@s0+1EP?+gI42A<OzKrlr} zk47dikItD_A*2GdTNv?>05~juoNwI&u*#Sgd_s2oUCYTw%2D$`u%o}uKWYNR4bNpk zWv_1L%L+i!e5wRfJARwr8I&@mjJNhVepKuXMu3VN$HIT{eZ*VqS{Plm0utjd^cg<t zDpXLj20%k~^2gNXmokix>QPxaD+2t!XZ(F#R%GSJ<>&Z<G_8!OkDSlu@Q`5q-BeVJ zipPSFB+Z<Or*?~Fm-iesg<0JNb;1Ao{&i>j4DdS4dl-K-H_T>Qv2P<2ynRXFZO+7d z%;)R;yr-0*dfYfGvW>z`V%856ax6Sv?9XnWDp8Te%gT8(YuvQhj84R#wZAiX>W95G z%-GdO``@G6H7Eb5S+%xlNfY;YA>8+Es%m|2e%HEl@PF1|%Q{tf{!3!p{HF@fAJeY2 zI-{IvTXpGnZ;~}`2i28-B5VBJ`8&&zuS4Qc+*po~xeoPcTC-oZ?gfc??>wc<;^lok zAo=G0yeFn5O=qR68Pr2O|M6lI9~DfY_on4@c%x!uf_|zW2)zF<|Lbrw|M7y4uZKo! z_@_!_f|k|@@e!=)c0kCEe_DAS#*LVUe+m-**%{yzf0dtyStG4sj{Pv3>0A7`;jC|O zvdV9$cF!@QGr(yEq{yGh>oWS=Er8K1-mVy6I%l3YH}SjHj-TiMD!<M5)-Zy-&*wRU z6VaZGGyi^=kcY%3KEO+Y=btL8{2rARSqVsa&$<brc2k7N%Bnv&^H0K?`R7fZpZ7Rp zoclMXw}Ul!XsD~1+qDIx&HSY4+*zEXlYbSOR?yn5s<n<DncU4fV_q!#b7qeclGZl! zmuuWjy)}QQ>|B!O=`7|zcplmtWz(@MKEgV-iO=?T(c{s(_^-o&6w`K7SR)}nE*ISp z=6<%<kN<Xs@nc#k!>r47@_Fdv6ChdRJ$!(An8o{Mz2|eD{PCAEwx97A;yW>d6Oq63 zTrTcBmksr>xSoGqJ`wxjV2aO|v93b(&`ToD`G4OxRNkDMRLb!Dei+`V(Fgr+iRwJx rNA@PLRdp@4MYf(Quw?}#o*&a({{P9Bm3C{pb`>J7T)A@P>Raj`oFNvc literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_stripe.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_stripe.toif new file mode 100644 index 0000000000000000000000000000000000000000..a198d7a381dfdbaf898a6f95ae2ce5258b673af2 GIT binary patch literal 668 zcmV;N0%QGDPf12V06+kc0ssK*lA&VTFc5~1O;BtKtDvBu%_=rQ1ubF|YuE}?XjVhR zz=drveFQ_Zx^J*R4=shWW1p>LUe>hBLi8VqqO<Nh>3)EqprD|jprD|jQ^aAz$mBBY zN^Z^4EuB&4x?9dx^w0U0eja`y%U$(CUWSjgkMT?MWMq899k~quU&)a|t~Il4S{kV| z=N`W_G^TOW#auKi8atwSrZcU`H`(rJK4cU6oqbl%W?NS}^o}D{R2pWRnqT_dTrAvj zFH!;UZ2X<b0%W>fKX$*4`18l?cJJI*G0^W1IO#68VN16>iH|YPKaA#W+FOq2*805s zndQ5e$Gb1;i7vbxu5T5GD@f>EthLWKDra?2pHP}qq~aRJ_zQP09Led=zW;e$t%}+; zvyK2L@_vdr{A!I4)d~5H^I8oP#+@<#TDQ4R{f)Ca%k0ogBh9;8>!Ht?lktZAosWd$ zd;p_xc8VaQl5^2SB{4_%{=BxP?cweGRNzEbble+F00=&_`+I`Fp8wcS2WNZd@}qnJ z4)>z;{2tq3VyE&SdVV3%<p~{T99cgmc5vK^4n5?QO>ttc<zuzdaJcL09+<oqjmZSp zWP<z+Lw=@D<FoEYH@&ZD4DevkU48=zX=}{vttw<8S?`0ydy7odc-&!Q{H6mL5C7`7 zWP=wP$5(PLQc*<>LG?BK*w$}YNq;A@FX!(Eem%w+=g-`V0x0s)zMUUgN7`>4VRnq4 z3crIpcdL@_L_(kX%(Hp%{HH@FnMQge4nLyBUT;O`ZACUrbImvG`oNtls=44fZO>y2 z72CKvaA&eR<+D*&kkbz}iA<7_>|6Bv>-=8@{-S1A(YwiI_>MqOP*6}%P*70N3-k-) CW>+Wx literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_tutanota.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_tutanota.toif new file mode 100644 index 0000000000000000000000000000000000000000..80edb2ca31226a61fd63b70c4c4dfbbe027d1309 GIT binary patch literal 646 zcmV;10(t#ZPf12V06+kG0ssK*(y@!$PyomAq#)Gc;0_!doE(HJWDr_#uy9<#vCxAK zHv|qG?yw+-kWvaM89GFSD{(k5!yClOH{6h|mob7v9~2Jb5O6bE5T4M3S8!>gw6?w4 zOJZKKB;P;a^UHgWVVsXWV9y^&;l-Y_2h2le_3eghuQxEe%YQ$MLSHU8`@t8Y(w&$B zdlIG3p0IBs^&{2e;^N}s;)3XzG?t@Xkd-PbY)8A{O5<RZ{*nH&7lm7v_f-yl8x(QB zMOVtz8*L6&wfXgpF+>GZ9a(k}iv*AiPW4I(J$YaKYAkF(R`J-fkIf;vHRjh<ZPuMC zH2=CI3+UZ1Ij<+xY^e8piGKb!AXi%W?~BK4e__wMhavkH@b?9P6tRGI;HeVcg1#~w zhy?tVWeeyz{L%_%LsAuxhyl4<29rTmORDrYl$4rY{O5+%j!VSBM4j#iL!N7y$)*i} zi1>K)K`T*x9Ub|F&g0D+oE2$v)-6-Li-P&T1<M<m<n^9RYr&y(W8Aj@kRs0O9cmkH zT`T}(VK>@z{P(hDyICOOrcP(UXU&c8Bp@2^vC($x1M(UL@4xck15yk87OI*TU&KMb zM0MoF2V`M)<N*I3defbb0=t7#<tg^=^LQM{36zwD?Ok`;3*ZF$t<1!q4v1xMt6xAK z`_-K)s(*Vd3uqhLscHDtIq3h~*M0PL1JhR8+}?H)u~$2%q<SI_MtAaJC+bau5774F zC+amlXxpuyQ#6By?Z)pbk9)N2`}~SJ9EcR{&3;+hfp152<xT!r-qSOaFzmbjw3VWI g+nfEY^r@XTMFK)@b>ef)vH^*rN9q$4?uq}|cZS+Vng9R* literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_webauthn.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_webauthn.toif new file mode 100644 index 0000000000000000000000000000000000000000..58817cf1dc458c9b51f7eaf32e2aed084547244a GIT binary patch literal 1135 zcmV-#1d#hwPf12V06+j^1ONcFQX!1$N))ZAK#Zt(q5@M_Q9+XxkL0PkPJ;MN5Hvwm zHDpzTAY>gukRQa$=8KmNf@Bd*K>TD^kbp$?i%nQT0s>J{QSn6uVm?E6|FZjNdk5&b z24-&WxpU6pI5zN-U)Hf}1SYbSw?bB6x`vMZGB0ttVWiqPFcmAk0@KDL^}5VkQP#4V zKW`yxTk#s)yrg4fDQ6V2bbP5FvUVQ##}2Y~E_YXT4aK^=T%&tN9tsz}{Id!LCKZN) zjTP&<W#gd$O<d2oHao4J0ZC(C?63`nLVoP=2I($b-}m2hke2zp*=ZHD)9hUpF-}5O zU<M}pS6%fKzsul!rBNMEm-TQS&7*oaT~^1H2K;N+_?=zW;M~z{L%w1|q8WS#`HKg< z1XWS!)Weu>wSJvd$JO!cY_*Q}sfR)b>H#ku^XnMOK8Pq&&6_yK=M$&q(eptB-9X15 z>{}7``o2TiH{|8v)a}c|=CDEEfhn*RS-o$0l>O&@(*4hSx<Sih%|Kv6`b!<E@artC z=XFMVN+1scGiD#DuzkNTsJiJHuQaGb-xsinBbD;o!0gf7i<y(f{g(9*Hqpj#^(PKh zHre}+4A8!b19gCxV7m$(n!T`{)fcvD289l6DlhqESZC?LpZ%_hvjHbivHY?QbU$pv zl1=v{0G;B}v1`COZyWP{vTq)<`feTxnMbz`*i_emrBAVtwObRiTBD4v)xK+&(RG|a zXs2Q|$0RdZ!a@D!7&;TqP8}HR9Vq%~Jw>080a$(3qTUix^OEjs9=*@b$hn2y7*^}P z^YyOpQ0M7($Wn5w)?tHrBrd}C`&rl)7xRdow><VYvGzYdZAgqkRP>AfAd3HO$nz8X zw7_Kh;<oYpbQh8nsE5sQg)w=7=^8Bk&GG#0wex7Vu6g1@T-3bX`u+4S{Kk|%*U&Mv zx9?1svChAif8V1c=jgAOhxnH4Z{aHF*e}C6|7q6`s!x|f2PJq}>J)w2Q}p`|Y^q=8 zC7A0mdv?O2S-b&E176}dNCIPRZypgK(SJSB-j)YRAGe2{nSh(e`0X%F(VGVUK4f*; znDUR*^sY){uuu1HjTmxGb8r`Cb&XW+fOH3%WBQs>M`7Uq<ImWyZ1pK*E$c1QCClrn z2dgzrVOo!@z4LFy<mnR!=H=J=cF0WMN#1ZPa{oh5%wTn|{)Vu!(@J+h$J`NkDM<lw zLC6muF|#A<$KJPSmUPQY+$SVuV7jF4pYwkD<*#Ly_aAVL(^EF2<(<Rd@-_*Zy9Rdx zUG<d8ff<;{I)@(}zCCr`Rk@QWXo{786*MjpHqM*f##{=9LeI#Py=M#sE)~3#-v&K{ zm$*#iwE>JhcH#OtuyL01pHa}z)woe==9AD>-K+TE8eNq;6Y_;BAWPP`i@-}dMrU&C z7@D|rY(-fMOcw6Il(ntMT@@qM#@Sm0rj17`mm7G=FYDMf0uvo69hk16W53L<_kX8I BN^}4K literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/shape/model/model_mercury.rs b/core/embed/rust/src/ui/shape/model/model_mercury.rs new file mode 100644 index 0000000000..02841b8dd7 --- /dev/null +++ b/core/embed/rust/src/ui/shape/model/model_mercury.rs @@ -0,0 +1,77 @@ +use crate::ui::{ + canvas::{BasicCanvas, Viewport}, + display::Color, + geometry::{Offset, Rect}, + shape::{DrawingCache, ProgressiveRenderer}, +}; + +use crate::trezorhal::bitmap::{BitmapView, Dma2d}; + +use static_alloc::Bump; + +pub fn render_on_display<F>(clip: Option<Rect>, bg_color: Option<Color>, mut func: F) +where + F: FnMut(&mut ProgressiveRenderer<Bump<[u8; 40 * 1024]>, DisplayModelMercury>), +{ + #[link_section = ".no_dma_buffers"] + static mut BUMP_A: Bump<[u8; 40 * 1024]> = Bump::uninit(); + + #[link_section = ".buf"] + static mut BUMP_B: Bump<[u8; 16 * 1024]> = Bump::uninit(); + + let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; + let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; + { + let cache = DrawingCache::new(bump_a, bump_b); + let mut canvas = DisplayModelMercury::acquire().unwrap(); + + if let Some(clip) = clip { + canvas.set_viewport(Viewport::new(clip)); + } + + let mut target = ProgressiveRenderer::new(&mut canvas, bg_color, &cache, bump_a, 30); + + func(&mut target); + + target.render(16); + } + bump_a.reset(); + bump_b.reset(); +} + +pub struct DisplayModelMercury { + size: Offset, + viewport: Viewport, +} + +impl DisplayModelMercury { + pub fn acquire() -> Option<Self> { + let size = Offset::new(240, 240); // TODO + let viewport = Viewport::from_size(size); + Some(Self { size, viewport }) + } +} + +impl BasicCanvas for DisplayModelMercury { + fn viewport(&self) -> Viewport { + self.viewport + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.viewport = viewport.absolute_clip(self.bounds()); + } + + fn size(&self) -> Offset { + self.size + } + + fn fill_rect(&mut self, r: Rect, color: Color) { + let r = r.translate(self.viewport.origin); + Dma2d::wnd565_fill(r, self.viewport.clip, color); + } + + fn draw_bitmap(&mut self, r: Rect, bitmap: BitmapView) { + let r = r.translate(self.viewport.origin); + Dma2d::wnd565_copy(r, self.viewport.clip, &bitmap); + } +} diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index e02bb65d42..8a0cd98d8f 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -4,6 +4,468 @@ CANCELLED: UiResult INFO: UiResult +# rust/src/ui/model_mercury/layout.rs +def disable_animation(disable: bool) -> None: + """Disable animations, debug builds only.""" + + +# rust/src/ui/model_mercury/layout.rs +def check_homescreen_format(data: bytes) -> bool: + """Check homescreen format and dimensions.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_action( + *, + title: str, + action: str | None, + description: str | None, + verb: str | None = None, + verb_cancel: str | None = None, + hold: bool = False, + hold_danger: bool = False, + reverse: bool = False, +) -> object: + """Confirm action.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_emphasized( + *, + title: str, + items: Iterable[str | tuple[bool, str]], + verb: str | None = None, +) -> object: + """Confirm formatted text that has been pre-split in python. For tuples + the first component is a bool indicating whether this part is emphasized.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_homescreen( + *, + title: str, + image: bytes, +) -> object: + """Confirm homescreen.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_blob( + *, + title: str, + data: str | bytes, + description: str | None, + extra: str | None, + verb: str | None = None, + verb_cancel: str | None = None, + hold: bool = False, + chunkify: bool = False, +) -> object: + """Confirm byte sequence data.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_address( + *, + title: str, + data: str | bytes, + description: str | None, + verb: str | None = "CONFIRM", + extra: str | None, + chunkify: bool = False, +) -> object: + """Confirm address. Similar to `confirm_blob` but has corner info button + and allows left swipe which does the same thing as the button.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_properties( + *, + title: str, + items: list[tuple[str | None, str | bytes | None, bool]], + hold: bool = False, +) -> object: + """Confirm list of key-value pairs. The third component in the tuple should be True if + the value is to be rendered as binary with monospace font, False otherwise.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_reset_device( + *, + title: str, + button: str, +) -> object: + """Confirm TOS before device setup.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_address_details( + *, + qr_title: str, + address: str, + case_sensitive: bool, + details_title: str, + account: str | None, + path: str | None, + xpubs: list[tuple[str, str]], +) -> object: + """Show address details - QR code, account, path, cosigner xpubs.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_info_with_cancel( + *, + title: str, + items: Iterable[Tuple[str, str]], + horizontal: bool = False, + chunkify: bool = False, +) -> object: + """Show metadata for outgoing transaction.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_value( + *, + title: str, + value: str, + description: str | None, + subtitle: str | None, + verb: str | None = None, + verb_cancel: str | None = None, + info_button: bool = False, + hold: bool = False, + chunkify: bool = False, + text_mono: bool = True, +) -> object: + """Confirm value. Merge of confirm_total and confirm_output.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_total( + *, + title: str, + items: Iterable[tuple[str, str]], + info_button: bool = False, + cancel_arrow: bool = False, +) -> object: + """Transaction summary. Always hold to confirm.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_modify_output( + *, + sign: int, + amount_change: str, + amount_new: str, +) -> object: + """Decrease or increase output amount.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_modify_fee( + *, + title: str, + sign: int, + user_fee_change: str, + total_fee_new: str, + fee_rate_amount: str | None, # ignored +) -> object: + """Decrease or increase transaction fee.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_fido( + *, + title: str, + app_name: str, + icon_name: str | None, + accounts: list[str | None], +) -> int | object: + """FIDO confirmation. + Returns page index in case of confirmation and CANCELLED otherwise. + """ + + +# rust/src/ui/model_mercury/layout.rs +def show_error( + *, + title: str, + button: str = "CONTINUE", + description: str = "", + allow_cancel: bool = False, + time_ms: int = 0, +) -> object: + """Error modal. No buttons shown when `button` is empty string.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_warning( + *, + title: str, + button: str = "CONTINUE", + value: str = "", + description: str = "", + allow_cancel: bool = False, + time_ms: int = 0, +) -> object: + """Warning modal. No buttons shown when `button` is empty string.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_success( + *, + title: str, + button: str = "CONTINUE", + description: str = "", + allow_cancel: bool = False, + time_ms: int = 0, +) -> object: + """Success modal. No buttons shown when `button` is empty string.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_info( + *, + title: str, + button: str = "CONTINUE", + description: str = "", + allow_cancel: bool = False, + time_ms: int = 0, +) -> object: + """Info modal. No buttons shown when `button` is empty string.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_mismatch(*, title: str) -> object: + """Warning modal, receiving address mismatch.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_simple( + *, + title: str | None, + description: str = "", + button: str = "", +) -> object: + """Simple dialog with text and one button.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_with_info( + *, + title: str, + button: str, + info_button: str, + items: Iterable[tuple[int, str]], +) -> object: + """Confirm given items but with third button. Always single page + without scrolling.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_more( + *, + title: str, + button: str, + items: Iterable[tuple[int, str]], +) -> object: + """Confirm long content with the possibility to go back from any page. + Meant to be used with confirm_with_info.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_coinjoin( + *, + max_rounds: str, + max_feerate: str, +) -> object: + """Confirm coinjoin authorization.""" + + +# rust/src/ui/model_mercury/layout.rs +def request_pin( + *, + prompt: str, + subprompt: str, + allow_cancel: bool = True, + wrong_pin: bool = False, +) -> str | object: + """Request pin on device.""" + + +# rust/src/ui/model_mercury/layout.rs +def request_passphrase( + *, + prompt: str, + max_len: int, +) -> str | object: + """Passphrase input keyboard.""" + + +# rust/src/ui/model_mercury/layout.rs +def request_bip39( + *, + prompt: str, + prefill_word: str, + can_go_back: bool, +) -> str: + """BIP39 word input keyboard.""" + + +# rust/src/ui/model_mercury/layout.rs +def request_slip39( + *, + prompt: str, + prefill_word: str, + can_go_back: bool, +) -> str: + """SLIP39 word input keyboard.""" + + +# rust/src/ui/model_mercury/layout.rs +def select_word( + *, + title: str, + description: str, + words: Iterable[str], +) -> int: + """Select mnemonic word from three possibilities - seed check after backup. The + iterable must be of exact size. Returns index in range `0..3`.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_share_words( + *, + title: str, + pages: Iterable[str], +) -> object: + """Show mnemonic for backup. Expects the words pre-divided into individual pages.""" + + +# rust/src/ui/model_mercury/layout.rs +def request_number( + *, + title: str, + count: int, + min_count: int, + max_count: int, + description: Callable[[int], str] | None = None, +) -> object: + """Number input with + and - buttons, description, and info button.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_checklist( + *, + title: str, + items: Iterable[str], + active: int, + button: str, +) -> object: + """Checklist of backup steps. Active index is highlighted, previous items have check + mark next to them.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_recovery( + *, + title: str, + description: str, + button: str, + dry_run: bool, + info_button: bool = False, +) -> object: + """Device recovery homescreen.""" + + +# rust/src/ui/model_mercury/layout.rs +def select_word_count( + *, + dry_run: bool, +) -> int | str: # TT returns int + """Select mnemonic word count from (12, 18, 20, 24, 33).""" + + +# rust/src/ui/model_mercury/layout.rs +def show_group_share_success( + *, + lines: Iterable[str] +) -> int: + """Shown after successfully finishing a group.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_remaining_shares( + *, + pages: Iterable[tuple[str, str]], +) -> int: + """Shows SLIP39 state after info button is pressed on `confirm_recovery`.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_progress( + *, + title: str, + indeterminate: bool = False, + description: str = "", +) -> object: + """Show progress loader. Please note that the number of lines reserved on screen for + description is determined at construction time. If you want multiline descriptions + make sure the initial description has at least that amount of lines.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_progress_coinjoin( + *, + title: str, + indeterminate: bool = False, + time_ms: int = 0, + skip_first_paint: bool = False, +) -> object: + """Show progress loader for coinjoin. Returns CANCELLED after a specified time when + time_ms timeout is passed.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_homescreen( + *, + label: str | None, + hold: bool, + notification: str | None, + notification_level: int = 0, + skip_first_paint: bool, +) -> CANCELLED: + """Idle homescreen.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_lockscreen( + *, + label: str | None, + bootscreen: bool, + skip_first_paint: bool, + coinjoin_authorized: bool = False, +) -> CANCELLED: + """Homescreen for locked device.""" + + +# rust/src/ui/model_mercury/layout.rs +def confirm_firmware_update( + *, + description: str, + fingerprint: str, +) -> None: + """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" + + +# rust/src/ui/model_mercury/layout.rs +def show_wait_text(/, message: str) -> None: + """Show single-line text in the middle of the screen.""" +CONFIRMED: object +CANCELLED: object +INFO: object + + # rust/src/ui/model_tr/layout.rs def disable_animation(disable: bool) -> None: """Disable animations, debug builds only.""" diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py new file mode 100644 index 0000000000..134d1d0ea0 --- /dev/null +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -0,0 +1,1524 @@ +from typing import TYPE_CHECKING + +import trezorui2 +from trezor import TR, io, loop, ui +from trezor.enums import ButtonRequestType +from trezor.wire import ActionCancelled +from trezor.wire.context import wait as ctx_wait + +from ..common import button_request, interact + +if TYPE_CHECKING: + from typing import Any, Awaitable, Iterable, NoReturn, Sequence, TypeVar + + from ..common import ExceptionType, PropertyType + + T = TypeVar("T") + + +BR_TYPE_OTHER = ButtonRequestType.Other # global_import_cache + +CONFIRMED = trezorui2.CONFIRMED +CANCELLED = trezorui2.CANCELLED +INFO = trezorui2.INFO + + +if __debug__: + from trezor.utils import DISABLE_ANIMATION + + trezorui2.disable_animation(bool(DISABLE_ANIMATION)) + + +class RustLayout(ui.Layout): + BACKLIGHT_LEVEL = ui.style.BACKLIGHT_NORMAL + + # pylint: disable=super-init-not-called + def __init__(self, layout: Any): + self.layout = layout + self.timer = loop.Timer() + self.layout.attach_timer_fn(self.set_timer) + + def set_timer(self, token: int, deadline: int) -> None: + self.timer.schedule(deadline, token) + + def request_complete_repaint(self) -> None: + msg = self.layout.request_complete_repaint() + assert msg is None + + def _paint(self) -> None: + import storage.cache as storage_cache + + painted = self.layout.paint() + + ui.refresh() + if storage_cache.homescreen_shown is not None and painted: + storage_cache.homescreen_shown = None + + if __debug__: + + def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_swipe(), + self.handle_click_signal(), + self.handle_result_signal(), + ) + + async def handle_result_signal(self) -> None: + """Enables sending arbitrary input - ui.Result. + + Waits for `result_signal` and carries it out. + """ + from storage import debug as debug_storage + + from apps.debug import result_signal + + while True: + event_id, result = await result_signal() + debug_storage.new_layout_event_id = event_id + raise ui.Result(result) + + def read_content_into(self, content_store: list[str]) -> None: + """Reads all the strings/tokens received from Rust into given list.""" + + def callback(*args: Any) -> None: + for arg in args: + content_store.append(str(arg)) + + content_store.clear() + self.layout.trace(callback) + + async def handle_swipe(self): + from trezor.enums import DebugSwipeDirection + + from apps.debug import notify_layout_change, swipe_signal + + while True: + event_id, direction = await swipe_signal() + orig_x = orig_y = 120 + off_x, off_y = { + DebugSwipeDirection.UP: (0, -30), + DebugSwipeDirection.DOWN: (0, 30), + DebugSwipeDirection.LEFT: (-30, 0), + DebugSwipeDirection.RIGHT: (30, 0), + }[direction] + + for event, x, y in ( + (io.TOUCH_START, orig_x, orig_y), + (io.TOUCH_MOVE, orig_x + 1 * off_x, orig_y + 1 * off_y), + (io.TOUCH_END, orig_x + 2 * off_x, orig_y + 2 * off_y), + ): + msg = self.layout.touch_event(event, x, y) + self._paint() + if msg is not None: + raise ui.Result(msg) + + notify_layout_change(self, event_id) + + async def _click( + self, + event_id: int | None, + x: int, + y: int, + hold_ms: int | None, + ) -> Any: + from storage import debug as debug_storage + from trezor import workflow + + from apps.debug import notify_layout_change + + self.layout.touch_event(io.TOUCH_START, x, y) + self._paint() + if hold_ms is not None: + await loop.sleep(hold_ms) + msg = self.layout.touch_event(io.TOUCH_END, x, y) + + if msg is not None: + debug_storage.new_layout_event_id = event_id + raise ui.Result(msg) + + # So that these presses will keep trezor awake + # (it will not be locked after auto_lock_delay_ms) + workflow.idle_timer.touch() + + self._paint() + notify_layout_change(self, event_id) + + async def handle_click_signal(self) -> None: + """Enables clicking somewhere on the screen. + + Waits for `click_signal` and carries it out. + """ + from apps.debug import click_signal + + while True: + event_id, x, y, hold_ms = await click_signal() + await self._click(event_id, x, y, hold_ms) + + else: + + def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: + return self.handle_timers(), self.handle_input_and_rendering() + + def _first_paint(self) -> None: + ui.backlight_fade(ui.style.BACKLIGHT_NONE) + self._paint() + + if __debug__ and self.should_notify_layout_change: + from storage import debug as debug_storage + + from apps.debug import notify_layout_change + + # notify about change and do not notify again until next await. + # (handle_rendering might be called multiple times in a single await, + # because of the endless loop in __iter__) + self.should_notify_layout_change = False + + # Possibly there is an event ID that caused the layout change, + # so notifying with this ID. + event_id = None + if debug_storage.new_layout_event_id is not None: + event_id = debug_storage.new_layout_event_id + debug_storage.new_layout_event_id = None + + notify_layout_change(self, event_id) + + # Turn the brightness on again. + ui.backlight_fade(self.BACKLIGHT_LEVEL) + + def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is-generator] + from trezor import workflow + + touch = loop.wait(io.TOUCH) + self._first_paint() + while True: + # Using `yield` instead of `await` to avoid allocations. + event, x, y = yield touch + workflow.idle_timer.touch() + msg = None + if event in (io.TOUCH_START, io.TOUCH_MOVE, io.TOUCH_END): + msg = self.layout.touch_event(event, x, y) + if msg is not None: + raise ui.Result(msg) + self._paint() + + def handle_timers(self) -> loop.Task: # type: ignore [awaitable-is-generator] + while True: + # Using `yield` instead of `await` to avoid allocations. + token = yield self.timer + msg = self.layout.timer(token) + if msg is not None: + raise ui.Result(msg) + self._paint() + + def page_count(self) -> int: + return self.layout.page_count() + + +def draw_simple(layout: Any) -> None: + # Simple drawing not supported for layouts that set timers. + def dummy_set_timer(token: int, deadline: int) -> None: + raise RuntimeError + + layout.attach_timer_fn(dummy_set_timer) + ui.backlight_fade(ui.style.BACKLIGHT_DIM) + layout.paint() + ui.refresh() + ui.backlight_fade(ui.style.BACKLIGHT_NORMAL) + + +async def raise_if_not_confirmed(a: Awaitable[T], exc: Any = ActionCancelled) -> T: + result = await a + if result is not CONFIRMED: + raise exc + return result + + +async def confirm_action( + br_type: str, + title: str, + action: str | None = None, + description: str | None = None, + description_param: str | None = None, + verb: str | None = None, + verb_cancel: str | None = None, + hold: bool = False, + hold_danger: bool = False, + reverse: bool = False, + exc: ExceptionType = ActionCancelled, + br_code: ButtonRequestType = BR_TYPE_OTHER, +) -> None: + if verb is not None: + verb = verb.upper() + if verb_cancel is not None: + verb_cancel = verb_cancel.upper() + + if description is not None and description_param is not None: + description = description.format(description_param) + + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_action( + title=title.upper(), + action=action, + description=description, + verb=verb, + verb_cancel=verb_cancel, + hold=hold, + hold_danger=hold_danger, + reverse=reverse, + ) + ), + br_type, + br_code, + ), + exc, + ) + + +async def confirm_single( + br_type: str, + title: str, + description: str, + description_param: str | None = None, + verb: str | None = None, +) -> None: + if verb is not None: + verb = verb.upper() + description_param = description_param or "" + + # Placeholders are coming from translations in form of {0} + template_str = "{0}" + if template_str not in description: + template_str = "{}" + + begin, _separator, end = description.partition(template_str) + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_emphasized( + title=title.upper(), + items=(begin, (True, description_param), end), + verb=verb, + ) + ), + br_type, + ButtonRequestType.ProtectCall, + ) + ) + + +async def confirm_reset_device(title: str, recovery: bool = False) -> None: + if recovery: + button = TR.reset__button_recover + else: + button = TR.reset__button_create + + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_reset_device( + title=title.upper(), + button=button, + ) + ), + "recover_device" if recovery else "setup_device", + ( + ButtonRequestType.ProtectCall + if recovery + else ButtonRequestType.ResetDevice + ), + ) + ) + + +# TODO cleanup @ redesign +async def prompt_backup() -> bool: + result = await interact( + RustLayout( + trezorui2.confirm_action( + title=TR.words__title_success, + action=TR.backup__new_wallet_successfully_created, + description=TR.backup__it_should_be_backed_up, + verb=TR.buttons__back_up, + verb_cancel=TR.buttons__skip, + ) + ), + "backup_device", + ButtonRequestType.ResetDevice, + ) + if result is CONFIRMED: + return True + + result = await interact( + RustLayout( + trezorui2.confirm_action( + title=TR.words__warning.upper(), + action=TR.backup__want_to_skip, + description=TR.backup__can_back_up_anytime, + verb=TR.buttons__back_up, + verb_cancel=TR.buttons__skip, + ) + ), + "backup_device", + ButtonRequestType.ResetDevice, + ) + return result is CONFIRMED + + +async def confirm_path_warning( + path: str, + path_type: str | None = None, +) -> None: + title = ( + TR.addr_mismatch__wrong_derivation_path + if not path_type + else f"{TR.words__unknown} {path_type.lower()}." + ) + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.show_warning( + title=title, + value=path, + description=TR.words__continue_anyway, + button=TR.buttons__continue, + ) + ), + "path_warning", + br_code=ButtonRequestType.UnknownDerivationPath, + ) + ) + + +async def confirm_homescreen( + image: bytes, +) -> None: + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_homescreen( + title=TR.homescreen__title_set, + image=image, + ) + ), + "set_homesreen", + ButtonRequestType.ProtectCall, + ) + ) + + +async def show_address( + address: str, + *, + title: str | None = None, + address_qr: str | None = None, + case_sensitive: bool = True, + path: str | None = None, + account: str | None = None, + network: str | None = None, + multisig_index: int | None = None, + xpubs: Sequence[str] = (), + mismatch_title: str | None = None, + details_title: str | None = None, + br_type: str = "show_address", + br_code: ButtonRequestType = ButtonRequestType.Address, + chunkify: bool = False, +) -> None: + mismatch_title = mismatch_title or TR.addr_mismatch__mismatch # def_arg + send_button_request = True + + if title is None: + title = TR.address__title_receive_address + if multisig_index is not None: + title = f"{title}\n(MULTISIG)" + details_title = TR.send__title_receiving_to + elif details_title is None: + details_title = title + + layout = RustLayout( + trezorui2.confirm_address( + title=title, + data=address, + description=network or "", + extra=None, + chunkify=chunkify, + ) + ) + + while True: + if send_button_request: + send_button_request = False + await button_request( + br_type, + br_code, + pages=layout.page_count(), + ) + layout.request_complete_repaint() + result = await ctx_wait(layout) + + # User pressed right button. + if result is CONFIRMED: + break + + # User pressed corner button or swiped left, go to address details. + elif result is INFO: + + def xpub_title(i: int) -> str: + result = f"MULTISIG XPUB #{i + 1}\n" + result += ( + f"({TR.address__title_yours})" + if i == multisig_index + else f"({TR.address__title_cosigner})" + ) + return result + + result = await ctx_wait( + RustLayout( + trezorui2.show_address_details( + qr_title=title, + address=address if address_qr is None else address_qr, + case_sensitive=case_sensitive, + details_title=details_title, + account=account, + path=path, + xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], + ) + ) + ) + assert result is CANCELLED + + else: + result = await ctx_wait( + RustLayout(trezorui2.show_mismatch(title=mismatch_title)) + ) + assert result in (CONFIRMED, CANCELLED) + # Right button aborts action, left goes back to showing address. + if result is CONFIRMED: + raise ActionCancelled + + +def show_pubkey( + pubkey: str, + title: str | None = None, + *, + account: str | None = None, + path: str | None = None, + mismatch_title: str | None = None, + br_type: str = "show_pubkey", +) -> Awaitable[None]: + title = title or TR.address__public_key # def_arg + mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg + return show_address( + address=pubkey, + title=title.upper(), + account=account, + path=path, + br_type=br_type, + br_code=ButtonRequestType.PublicKey, + mismatch_title=mismatch_title, + chunkify=False, + ) + + +async def show_error_and_raise( + br_type: str, + content: str, + subheader: str | None = None, + button: str | None = None, + exc: ExceptionType = ActionCancelled, +) -> NoReturn: + button = button or TR.buttons__try_again # def_arg + await interact( + RustLayout( + trezorui2.show_error( + title=subheader or "", + description=content, + button=button.upper(), + allow_cancel=False, + ) + ), + br_type, + BR_TYPE_OTHER, + ) + raise exc + + +async def show_warning( + br_type: str, + content: str, + subheader: str | None = None, + button: str | None = None, + br_code: ButtonRequestType = ButtonRequestType.Warning, +) -> None: + button = button or TR.buttons__continue # def_arg + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.show_warning( + title=content, + description=subheader or "", + button=button.upper(), + ) + ), + br_type, + br_code, + ) + ) + + +async def show_success( + br_type: str, + content: str, + subheader: str | None = None, + button: str | None = None, +) -> None: + button = button or TR.buttons__continue # def_arg + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.show_success( + title=content, + description=subheader or "", + button=button.upper(), + allow_cancel=False, + ) + ), + br_type, + ButtonRequestType.Success, + ) + ) + + +async def confirm_output( + address: str, + amount: str, + title: str | None = None, + hold: bool = False, + br_code: ButtonRequestType = ButtonRequestType.ConfirmOutput, + address_label: str | None = None, + output_index: int | None = None, + chunkify: bool = False, +) -> None: + if title is not None: + # TODO: handle translation + if title.upper().startswith("CONFIRM "): + title = title[len("CONFIRM ") :] + amount_title = title + recipient_title = title + elif output_index is not None: + amount_title = f"{TR.words__amount} #{output_index + 1}" + recipient_title = f"{TR.words__recipient} #{output_index + 1}" + else: + amount_title = TR.send__confirm_sending + recipient_title = TR.send__title_sending_to + + while True: + result = await interact( + RustLayout( + trezorui2.confirm_value( + title=recipient_title.upper(), + subtitle=address_label, + description=None, + value=address, + verb=TR.buttons__continue, + hold=False, + info_button=False, + chunkify=chunkify, + ) + ), + "confirm_output", + br_code, + ) + if result is not CONFIRMED: + raise ActionCancelled + + result = await interact( + RustLayout( + trezorui2.confirm_value( + title=amount_title.upper(), + subtitle=None, + description=None, + value=amount, + verb=None if hold else TR.buttons__confirm, + verb_cancel="^", + hold=hold, + info_button=False, + ) + ), + "confirm_output", + br_code, + ) + if result is CONFIRMED: + return + + +async def confirm_payment_request( + recipient_name: str, + amount: str, + memos: list[str], +) -> bool: + result = await interact( + RustLayout( + trezorui2.confirm_with_info( + title=TR.send__title_sending, + items=[(ui.NORMAL, f"{amount} to\n{recipient_name}")] + + [(ui.NORMAL, memo) for memo in memos], + button=TR.buttons__confirm, + info_button=TR.buttons__details, + ) + ), + "confirm_payment_request", + ButtonRequestType.ConfirmOutput, + ) + + # When user pressed INFO, returning False, which gets processed in higher function + # to differentiate it from CONFIRMED. Raising otherwise. + if result is CONFIRMED: + return True + elif result is INFO: + return False + else: + raise ActionCancelled + + +async def should_show_more( + title: str, + para: Iterable[tuple[int, str]], + button_text: str | None = None, + br_type: str = "should_show_more", + br_code: ButtonRequestType = BR_TYPE_OTHER, + confirm: str | bytes | None = None, +) -> bool: + """Return True if the user wants to show more (they click a special button) + and False when the user wants to continue without showing details. + + Raises ActionCancelled if the user cancels. + """ + button_text = button_text or TR.buttons__show_all # def_arg + if confirm is None or not isinstance(confirm, str): + confirm = TR.buttons__confirm + + result = await interact( + RustLayout( + trezorui2.confirm_with_info( + title=title.upper(), + items=para, + button=confirm.upper(), + info_button=button_text.upper(), + ) + ), + br_type, + br_code, + ) + + if result is CONFIRMED: + return False + elif result is INFO: + return True + else: + assert result is CANCELLED + raise ActionCancelled + + +async def _confirm_ask_pagination( + br_type: str, + title: str, + data: bytes | str, + description: str, + br_code: ButtonRequestType, +) -> None: + paginated: ui.Layout | None = None + # TODO: make should_show_more/confirm_more accept bytes directly + if isinstance(data, bytes): + from ubinascii import hexlify + + data = hexlify(data).decode() + while True: + if not await should_show_more( + title, + para=[(ui.NORMAL, description), (ui.MONO, data)], + br_type=br_type, + br_code=br_code, + ): + return + + if paginated is None: + paginated = RustLayout( + trezorui2.confirm_more( + title=title, + button=TR.buttons__close, + items=[(ui.MONO, data)], + ) + ) + else: + paginated.request_complete_repaint() + + result = await interact(paginated, br_type, br_code) + assert result in (CONFIRMED, CANCELLED) + + assert False + + +async def confirm_blob( + br_type: str, + title: str, + data: bytes | str, + description: str | None = None, + verb: str | None = None, + verb_cancel: str | None = None, + hold: bool = False, + br_code: ButtonRequestType = BR_TYPE_OTHER, + ask_pagination: bool = False, + chunkify: bool = False, +) -> None: + verb = verb or TR.buttons__confirm # def_arg + title = title.upper() + layout = RustLayout( + trezorui2.confirm_blob( + title=title, + description=description, + data=data, + extra=None, + hold=hold, + verb=verb, + verb_cancel=verb_cancel, + chunkify=chunkify, + ) + ) + + if ask_pagination and layout.page_count() > 1: + assert not hold + await _confirm_ask_pagination(br_type, title, data, description or "", br_code) + + else: + await raise_if_not_confirmed( + interact( + layout, + br_type, + br_code, + ) + ) + + +async def confirm_address( + title: str, + address: str, + description: str | None = None, + br_type: str = "confirm_address", + br_code: ButtonRequestType = BR_TYPE_OTHER, +) -> None: + return await confirm_value( + title, + address, + description or "", + br_type, + br_code, + verb=TR.buttons__confirm, + ) + + +async def confirm_text( + br_type: str, + title: str, + data: str, + description: str | None = None, + br_code: ButtonRequestType = BR_TYPE_OTHER, +) -> None: + return await confirm_value( + title, + data, + description or "", + br_type, + br_code, + verb=TR.buttons__confirm, + ) + + +def confirm_amount( + title: str, + amount: str, + description: str | None = None, + br_type: str = "confirm_amount", + br_code: ButtonRequestType = BR_TYPE_OTHER, +) -> Awaitable[None]: + description = description or f"{TR.words__amount}:" # def_arg + return confirm_value( + title, + amount, + description, + br_type, + br_code, + verb=TR.buttons__confirm, + ) + + +def confirm_value( + title: str, + value: str, + description: str, + br_type: str, + br_code: ButtonRequestType = BR_TYPE_OTHER, + *, + verb: str | None = None, + subtitle: str | None = None, + hold: bool = False, + value_text_mono: bool = True, + info_items: Iterable[tuple[str, str]] | None = None, + info_title: str | None = None, + chunkify_info: bool = False, +) -> Awaitable[None]: + """General confirmation dialog, used by many other confirm_* functions.""" + + if not verb and not hold: + raise ValueError("Either verb or hold=True must be set") + + if verb: + verb = verb.upper() + + info_items = info_items or [] + info_layout = RustLayout( + trezorui2.show_info_with_cancel( + title=info_title if info_title else TR.words__title_information, + items=info_items, + chunkify=chunkify_info, + ) + ) + + return raise_if_not_confirmed( + with_info( + RustLayout( + trezorui2.confirm_value( + title=title.upper(), + subtitle=subtitle, + description=description, + value=value, + verb=verb, + hold=hold, + info_button=bool(info_items), + text_mono=value_text_mono, + ) + ), + info_layout, + br_type, + br_code, + ) + ) + + +async def confirm_properties( + br_type: str, + title: str, + props: Iterable[PropertyType], + hold: bool = False, + br_code: ButtonRequestType = ButtonRequestType.ConfirmOutput, +) -> None: + # Monospace flag for values that are bytes. + items = [(prop[0], prop[1], isinstance(prop[1], bytes)) for prop in props] + + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_properties( + title=title.upper(), + items=items, + hold=hold, + ) + ), + br_type, + br_code, + ) + ) + + +async def confirm_total( + total_amount: str, + fee_amount: str, + title: str | None = None, + total_label: str | None = None, + fee_label: str | None = None, + account_label: str | None = None, + fee_rate_amount: str | None = None, + br_type: str = "confirm_total", + br_code: ButtonRequestType = ButtonRequestType.SignTx, +) -> None: + title = title or TR.words__title_summary # def_arg + total_label = total_label or TR.send__total_amount # def_arg + fee_label = fee_label or TR.send__including_fee # def_arg + + items = [ + (total_label, total_amount), + (fee_label, fee_amount), + ] + info_items = [] + if account_label: + info_items.append((TR.confirm_total__sending_from_account, account_label)) + if fee_rate_amount: + info_items.append((TR.confirm_total__fee_rate, fee_rate_amount)) + + await confirm_summary( + items, + TR.words__title_summary, + info_items=info_items, + br_type=br_type, + br_code=br_code, + ) + + +async def confirm_summary( + items: Iterable[tuple[str, str]], + title: str | None = None, + info_items: Iterable[tuple[str, str]] | None = None, + info_title: str | None = None, + br_type: str = "confirm_total", + br_code: ButtonRequestType = ButtonRequestType.SignTx, +) -> None: + title = title or TR.words__title_summary # def_arg + + total_layout = RustLayout( + trezorui2.confirm_total( + title=title.upper(), + items=items, + info_button=bool(info_items), + ) + ) + info_items = info_items or [] + info_layout = RustLayout( + trezorui2.show_info_with_cancel( + title=info_title.upper() if info_title else TR.words__title_information, + items=info_items, + ) + ) + await raise_if_not_confirmed(with_info(total_layout, info_layout, br_type, br_code)) + + +async def confirm_ethereum_tx( + recipient: str, + total_amount: str, + maximum_fee: str, + items: Iterable[tuple[str, str]], + br_type: str = "confirm_ethereum_tx", + br_code: ButtonRequestType = ButtonRequestType.SignTx, + chunkify: bool = False, +) -> None: + total_layout = RustLayout( + trezorui2.confirm_total( + title=TR.words__title_summary, + items=[ + (f"{TR.words__amount}:", total_amount), + (TR.send__maximum_fee, maximum_fee), + ], + info_button=True, + cancel_arrow=True, + ) + ) + info_layout = RustLayout( + trezorui2.show_info_with_cancel( + title=TR.confirm_total__title_fee, + items=items, + ) + ) + + while True: + # Allowing going back and forth between recipient and summary/details + await confirm_blob( + br_type, + TR.words__recipient.upper(), + recipient, + verb=TR.buttons__continue, + chunkify=chunkify, + ) + + try: + total_layout.request_complete_repaint() + await raise_if_not_confirmed( + with_info(total_layout, info_layout, br_type, br_code) + ) + break + except ActionCancelled: + continue + + +async def confirm_ethereum_staking_tx( + title: str, + intro_question: str, + verb: str, + total_amount: str, + maximum_fee: str, + address: str, + address_title: str, + info_items: Iterable[tuple[str, str]], + chunkify: bool = False, + br_type: str = "confirm_ethereum_staking_tx", + br_code: ButtonRequestType = ButtonRequestType.SignTx, +) -> None: + + # intro + await confirm_value( + title, + intro_question, + "", + br_type, + br_code, + verb=verb, + value_text_mono=False, + info_items=(("", address),), + info_title=address_title, + chunkify_info=chunkify, + ) + + # confirmation + if verb == TR.ethereum__staking_claim: + items = ((TR.send__maximum_fee, maximum_fee),) + else: + items = ( + (TR.words__amount + ":", total_amount), + (TR.send__maximum_fee, maximum_fee), + ) + await confirm_summary( + items, # items + title=title, + info_title=TR.confirm_total__title_fee, + info_items=info_items, + br_type=br_type, + br_code=br_code, + ) + + +async def confirm_solana_tx( + amount: str, + fee: str, + items: Iterable[tuple[str, str]], + amount_title: str | None = None, + fee_title: str | None = None, + br_type: str = "confirm_solana_tx", + br_code: ButtonRequestType = ButtonRequestType.SignTx, +): + amount_title = ( + amount_title if amount_title is not None else f"{TR.words__amount}:" + ) # def_arg + fee_title = fee_title or TR.words__fee # def_arg + await confirm_summary( + ((amount_title, amount), (fee_title, fee)), + info_items=items, + br_type=br_type, + br_code=br_code, + ) + + +async def confirm_joint_total(spending_amount: str, total_amount: str) -> None: + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_total( + title=TR.send__title_joint_transaction, + items=[ + (TR.send__you_are_contributing, spending_amount), + (TR.send__to_the_total_amount, total_amount), + ], + ) + ), + "confirm_joint_total", + ButtonRequestType.SignTx, + ) + ) + + +async def confirm_metadata( + br_type: str, + title: str, + content: str, + param: str | None = None, + br_code: ButtonRequestType = ButtonRequestType.SignTx, + hold: bool = False, + verb: str | None = None, +) -> None: + verb = verb or TR.buttons__continue # def_arg + await confirm_action( + br_type, + title=title.upper(), + action="", + description=content, + description_param=param, + verb=verb.upper(), + hold=hold, + br_code=br_code, + ) + + +async def confirm_replacement(title: str, txid: str) -> None: + await confirm_blob( + "confirm_replacement", + title.upper(), + txid, + TR.send__transaction_id, + TR.buttons__continue, + br_code=ButtonRequestType.SignTx, + ) + + +async def confirm_modify_output( + address: str, + sign: int, + amount_change: str, + amount_new: str, +) -> None: + address_layout = RustLayout( + trezorui2.confirm_blob( + title=TR.modify_amount__title, + data=address, + verb=TR.buttons__continue, + verb_cancel=None, + description=f"{TR.words__address}:", + extra=None, + ) + ) + modify_layout = RustLayout( + trezorui2.confirm_modify_output( + sign=sign, + amount_change=amount_change, + amount_new=amount_new, + ) + ) + + send_button_request = True + while True: + if send_button_request: + await button_request( + "modify_output", + ButtonRequestType.ConfirmOutput, + address_layout.page_count(), + ) + address_layout.request_complete_repaint() + await raise_if_not_confirmed(ctx_wait(address_layout)) + + if send_button_request: + send_button_request = False + await button_request( + "modify_output", + ButtonRequestType.ConfirmOutput, + modify_layout.page_count(), + ) + modify_layout.request_complete_repaint() + result = await ctx_wait(modify_layout) + + if result is CONFIRMED: + break + + +async def with_info( + main_layout: RustLayout, + info_layout: RustLayout, + br_type: str, + br_code: ButtonRequestType, +) -> Any: + await button_request(br_type, br_code, pages=main_layout.page_count()) + + while True: + result = await ctx_wait(main_layout) + + if result is INFO: + info_layout.request_complete_repaint() + result = await ctx_wait(info_layout) + assert result is CANCELLED + main_layout.request_complete_repaint() + continue + else: + return result + + +async def confirm_modify_fee( + title: str, + sign: int, + user_fee_change: str, + total_fee_new: str, + fee_rate_amount: str | None = None, +) -> None: + fee_layout = RustLayout( + trezorui2.confirm_modify_fee( + title=title.upper(), + sign=sign, + user_fee_change=user_fee_change, + total_fee_new=total_fee_new, + fee_rate_amount=fee_rate_amount, + ) + ) + items: list[tuple[str, str]] = [] + if fee_rate_amount: + items.append((TR.bitcoin__new_fee_rate, fee_rate_amount)) + info_layout = RustLayout( + trezorui2.show_info_with_cancel( + title=TR.confirm_total__title_fee, + items=items, + ) + ) + await raise_if_not_confirmed( + with_info(fee_layout, info_layout, "modify_fee", ButtonRequestType.SignTx) + ) + + +async def confirm_coinjoin(max_rounds: int, max_fee_per_vbyte: str) -> None: + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_coinjoin( + max_rounds=str(max_rounds), + max_feerate=max_fee_per_vbyte, + ) + ), + "coinjoin_final", + BR_TYPE_OTHER, + ) + ) + + +# TODO cleanup @ redesign +async def confirm_sign_identity( + proto: str, identity: str, challenge_visual: str | None +) -> None: + await confirm_blob( + "sign_identity", + f"{TR.words__sign} {proto}", + identity, + challenge_visual + "\n" if challenge_visual else "", + br_code=BR_TYPE_OTHER, + ) + + +async def confirm_signverify( + message: str, + address: str, + verify: bool, + path: str | None = None, + account: str | None = None, + chunkify: bool = False, +) -> None: + if verify: + address_title = TR.sign_message__verify_address + br_type = "verify_message" + else: + address_title = TR.sign_message__confirm_address + br_type = "sign_message" + + address_layout = RustLayout( + trezorui2.confirm_address( + title=address_title, + data=address, + description="", + verb=TR.buttons__continue, + extra=None, + chunkify=chunkify, + ) + ) + + items: list[tuple[str, str]] = [] + if account is not None: + items.append((f"{TR.words__account}:", account)) + if path is not None: + items.append((TR.address_details__derivation_path, path)) + items.append( + ( + TR.sign_message__message_size, + TR.sign_message__bytes_template.format(len(message)), + ) + ) + + info_layout = RustLayout( + trezorui2.show_info_with_cancel( + title=TR.words__title_information, + items=items, + horizontal=True, + ) + ) + + message_layout = RustLayout( + trezorui2.confirm_blob( + title=TR.sign_message__confirm_message, + description=None, + data=message, + extra=None, + hold=not verify, + verb=TR.buttons__confirm if verify else None, + ) + ) + + while True: + result = await with_info( + address_layout, info_layout, br_type, br_code=BR_TYPE_OTHER + ) + if result is not CONFIRMED: + result = await ctx_wait( + RustLayout(trezorui2.show_mismatch(title=TR.addr_mismatch__mismatch)) + ) + assert result in (CONFIRMED, CANCELLED) + # Right button aborts action, left goes back to showing address. + if result is CONFIRMED: + raise ActionCancelled + else: + address_layout.request_complete_repaint() + continue + + message_layout.request_complete_repaint() + result = await interact(message_layout, br_type, BR_TYPE_OTHER) + if result is CONFIRMED: + break + + address_layout.request_complete_repaint() + + +async def show_error_popup( + title: str, + description: str, + subtitle: str | None = None, + description_param: str = "", + *, + button: str = "", + timeout_ms: int = 0, +) -> None: + if not button and not timeout_ms: + raise ValueError("Either button or timeout_ms must be set") + + if subtitle: + title += f"\n{subtitle}" + await RustLayout( + trezorui2.show_error( + title=title, + description=description.format(description_param), + button=button, + time_ms=timeout_ms, + allow_cancel=False, + ) + ) + + +def request_passphrase_on_host() -> None: + draw_simple( + trezorui2.show_simple( + title=None, + description=TR.passphrase__please_enter, + ) + ) + + +def show_wait_text(message: str) -> None: + draw_simple(trezorui2.show_wait_text(message)) + + +async def request_passphrase_on_device(max_len: int) -> str: + result = await interact( + RustLayout( + trezorui2.request_passphrase( + prompt=TR.passphrase__title_enter, max_len=max_len + ) + ), + "passphrase_device", + ButtonRequestType.PassphraseEntry, + ) + if result is CANCELLED: + raise ActionCancelled("Passphrase entry cancelled") + + assert isinstance(result, str) + return result + + +async def request_pin_on_device( + prompt: str, + attempts_remaining: int | None, + allow_cancel: bool, + wrong_pin: bool = False, +) -> str: + from trezor.wire import PinCancelled + + if attempts_remaining is None: + subprompt = "" + elif attempts_remaining == 1: + subprompt = TR.pin__last_attempt + else: + subprompt = f"{attempts_remaining} {TR.pin__tries_left}" + + result = await interact( + RustLayout( + trezorui2.request_pin( + prompt=prompt, + subprompt=subprompt, + allow_cancel=allow_cancel, + wrong_pin=wrong_pin, + ) + ), + "pin_device", + ButtonRequestType.PinEntry, + ) + if result is CANCELLED: + raise PinCancelled + assert isinstance(result, str) + return result + + +async def confirm_reenter_pin( + is_wipe_code: bool = False, +) -> None: + """Not supported for TT.""" + pass + + +async def pin_mismatch_popup( + is_wipe_code: bool = False, +) -> None: + await button_request("pin_mismatch", code=BR_TYPE_OTHER) + title = TR.wipe_code__wipe_code_mismatch if is_wipe_code else TR.pin__pin_mismatch + description = TR.wipe_code__mismatch if is_wipe_code else TR.pin__mismatch + return await show_error_popup( + title, + description, + button=TR.buttons__try_again, + ) + + +async def wipe_code_same_as_pin_popup() -> None: + await button_request("wipe_code_same_as_pin", code=BR_TYPE_OTHER) + return await show_error_popup( + TR.wipe_code__invalid, + TR.wipe_code__diff_from_pin, + button=TR.buttons__try_again, + ) + + +async def confirm_set_new_pin( + br_type: str, + title: str, + description: str, + information: str, + br_code: ButtonRequestType = BR_TYPE_OTHER, +) -> None: + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_emphasized( + title=title.upper(), + items=( + (True, description + "\n\n"), + information, + ), + verb=TR.buttons__turn_on, + ) + ), + br_type, + br_code, + ) + ) + + +async def confirm_firmware_update(description: str, fingerprint: str) -> None: + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_firmware_update( + description=description, fingerprint=fingerprint + ) + ), + "firmware_update", + BR_TYPE_OTHER, + ) + ) diff --git a/core/src/trezor/ui/layouts/mercury/fido.py b/core/src/trezor/ui/layouts/mercury/fido.py new file mode 100644 index 0000000000..9dc42c152f --- /dev/null +++ b/core/src/trezor/ui/layouts/mercury/fido.py @@ -0,0 +1,89 @@ +from typing import TYPE_CHECKING + +import trezorui2 +from trezor.enums import ButtonRequestType + +from ..common import interact +from . import RustLayout + +if TYPE_CHECKING: + from trezor.loop import AwaitableTask + + +if __debug__: + from trezor import io, ui + + from ... import Result + + class _RustFidoLayoutImpl(RustLayout): + def create_tasks(self) -> tuple[AwaitableTask, ...]: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_swipe(), + self.handle_debug_confirm(), + ) + + async def handle_debug_confirm(self) -> None: + from apps.debug import result_signal + + _event_id, result = await result_signal() + if result is not trezorui2.CONFIRMED: + raise Result(result) + + for event, x, y in ( + (io.TOUCH_START, 220, 220), + (io.TOUCH_END, 220, 220), + ): + msg = self.layout.touch_event(event, x, y) + self.layout.paint() + ui.refresh() + if msg is not None: + raise Result(msg) + + _RustFidoLayout = _RustFidoLayoutImpl + +else: + _RustFidoLayout = RustLayout + + +async def confirm_fido( + header: str, + app_name: str, + icon_name: str | None, + accounts: list[str | None], +) -> int: + """Webauthn confirmation for one or more credentials.""" + confirm = _RustFidoLayout( + trezorui2.confirm_fido( + title=header.upper(), + app_name=app_name, + icon_name=icon_name, + accounts=accounts, + ) + ) + result = await interact(confirm, "confirm_fido", ButtonRequestType.Other) + + # The Rust side returns either an int or `CANCELLED`. We detect the int situation + # and assume cancellation otherwise. + if isinstance(result, int): + return result + + # Late import won't get executed on the happy path. + from trezor.wire import ActionCancelled + + raise ActionCancelled + + +async def confirm_fido_reset() -> bool: + from trezor import TR + + confirm = RustLayout( + trezorui2.confirm_action( + title=TR.fido__title_reset, + action=TR.fido__erase_credentials, + description=TR.words__really_wanna, + reverse=True, + ) + ) + return (await confirm) is trezorui2.CONFIRMED diff --git a/core/src/trezor/ui/layouts/mercury/homescreen.py b/core/src/trezor/ui/layouts/mercury/homescreen.py new file mode 100644 index 0000000000..c59abf1f1d --- /dev/null +++ b/core/src/trezor/ui/layouts/mercury/homescreen.py @@ -0,0 +1,143 @@ +from typing import TYPE_CHECKING + +import storage.cache as storage_cache +import trezorui2 +from trezor import TR, ui + +from . import RustLayout + +if TYPE_CHECKING: + from typing import Any, Tuple + + from trezor import loop + + +class HomescreenBase(RustLayout): + RENDER_INDICATOR: object | None = None + + def __init__(self, layout: Any) -> None: + super().__init__(layout=layout) + + def _paint(self) -> None: + self.layout.paint() + ui.refresh() + + def _first_paint(self) -> None: + if storage_cache.homescreen_shown is not self.RENDER_INDICATOR: + super()._first_paint() + storage_cache.homescreen_shown = self.RENDER_INDICATOR + else: + self._paint() + + if __debug__: + # In __debug__ mode, ignore {confirm,swipe,input}_signal. + def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_click_signal(), # so we can receive debug events + ) + + +class Homescreen(HomescreenBase): + RENDER_INDICATOR = storage_cache.HOMESCREEN_ON + + def __init__( + self, + label: str | None, + notification: str | None, + notification_is_error: bool, + hold_to_lock: bool, + ) -> None: + level = 1 + if notification is not None: + if notification == TR.homescreen__title_coinjoin_authorized: + level = 3 + elif notification == TR.homescreen__title_experimental_mode: + level = 2 + elif notification_is_error: + level = 0 + + skip = storage_cache.homescreen_shown is self.RENDER_INDICATOR + super().__init__( + layout=trezorui2.show_homescreen( + label=label, + notification=notification, + notification_level=level, + hold=hold_to_lock, + skip_first_paint=skip, + ), + ) + + async def usb_checker_task(self) -> None: + from trezor import io, loop + + usbcheck = loop.wait(io.USB_CHECK) + while True: + is_connected = await usbcheck + self.layout.usb_event(is_connected) + self.layout.paint() + ui.refresh() + + def create_tasks(self) -> Tuple[loop.AwaitableTask, ...]: + return super().create_tasks() + (self.usb_checker_task(),) + + +class Lockscreen(HomescreenBase): + RENDER_INDICATOR = storage_cache.LOCKSCREEN_ON + BACKLIGHT_LEVEL = ui.style.BACKLIGHT_LOW + + def __init__( + self, + label: str | None, + bootscreen: bool = False, + coinjoin_authorized: bool = False, + ) -> None: + self.bootscreen = bootscreen + if bootscreen: + self.BACKLIGHT_LEVEL = ui.style.BACKLIGHT_NORMAL + + skip = ( + not bootscreen and storage_cache.homescreen_shown is self.RENDER_INDICATOR + ) + super().__init__( + layout=trezorui2.show_lockscreen( + label=label, + bootscreen=bootscreen, + skip_first_paint=skip, + coinjoin_authorized=coinjoin_authorized, + ), + ) + + async def __iter__(self) -> Any: + result = await super().__iter__() + if self.bootscreen: + self.request_complete_repaint() + return result + + +class Busyscreen(HomescreenBase): + RENDER_INDICATOR = storage_cache.BUSYSCREEN_ON + + def __init__(self, delay_ms: int) -> None: + from trezor import TR + + skip = storage_cache.homescreen_shown is self.RENDER_INDICATOR + super().__init__( + layout=trezorui2.show_progress_coinjoin( + title=TR.coinjoin__waiting_for_others, + indeterminate=True, + time_ms=delay_ms, + skip_first_paint=skip, + ) + ) + + async def __iter__(self) -> Any: + from apps.base import set_homescreen + + # Handle timeout. + result = await super().__iter__() + assert result == trezorui2.CANCELLED + storage_cache.delete(storage_cache.APP_COMMON_BUSY_DEADLINE_MS) + set_homescreen() + return result diff --git a/core/src/trezor/ui/layouts/mercury/progress.py b/core/src/trezor/ui/layouts/mercury/progress.py new file mode 100644 index 0000000000..5997d247f5 --- /dev/null +++ b/core/src/trezor/ui/layouts/mercury/progress.py @@ -0,0 +1,72 @@ +from typing import TYPE_CHECKING + +import trezorui2 +from trezor import TR, ui + +if TYPE_CHECKING: + from typing import Any + + from ..common import ProgressLayout + + +class RustProgress: + def __init__( + self, + layout: Any, + ): + self.layout = layout + ui.backlight_fade(ui.style.BACKLIGHT_DIM) + self.layout.attach_timer_fn(self.set_timer) + self.layout.paint() + ui.refresh() + ui.backlight_fade(ui.style.BACKLIGHT_NORMAL) + + def set_timer(self, token: int, deadline: int) -> None: + raise RuntimeError # progress layouts should not set timers + + def report(self, value: int, description: str | None = None): + msg = self.layout.progress_event(value, description or "") + assert msg is None + self.layout.paint() + ui.refresh() + + +def progress( + message: str | None = None, + description: str | None = None, + indeterminate: bool = False, +) -> ProgressLayout: + message = message or TR.progress__please_wait # def_arg + return RustProgress( + layout=trezorui2.show_progress( + title=message.upper(), + indeterminate=indeterminate, + description=description or "", + ) + ) + + +def bitcoin_progress(message: str) -> ProgressLayout: + return progress(message) + + +def coinjoin_progress(message: str) -> ProgressLayout: + return RustProgress( + layout=trezorui2.show_progress_coinjoin(title=message, indeterminate=False) + ) + + +def pin_progress(message: str, description: str) -> ProgressLayout: + return progress(message, description=description) + + +def monero_keyimage_sync_progress() -> ProgressLayout: + return progress("", TR.progress__syncing) + + +def monero_live_refresh_progress() -> ProgressLayout: + return progress("", TR.progress__refreshing, indeterminate=True) + + +def monero_transaction_progress_inner() -> ProgressLayout: + return progress("", TR.progress__signing_transaction) diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py new file mode 100644 index 0000000000..10c8f3aa5f --- /dev/null +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -0,0 +1,171 @@ +from typing import Callable, Iterable + +import trezorui2 +from trezor import TR +from trezor.enums import ButtonRequestType +from trezor.wire.context import wait as ctx_wait + +from ..common import interact +from . import RustLayout, raise_if_not_confirmed + +CONFIRMED = trezorui2.CONFIRMED # global_import_cache +INFO = trezorui2.INFO # global_import_cache + + +async def _is_confirmed_info( + dialog: RustLayout, + info_func: Callable, +) -> bool: + while True: + result = await ctx_wait(dialog) + + if result is trezorui2.INFO: + await info_func() + dialog.request_complete_repaint() + else: + return result is CONFIRMED + + +async def request_word_count(dry_run: bool) -> int: + selector = RustLayout(trezorui2.select_word_count(dry_run=dry_run)) + count = await interact(selector, "word_count", ButtonRequestType.MnemonicWordCount) + return int(count) + + +async def request_word( + word_index: int, word_count: int, is_slip39: bool, prefill_word: str = "" +) -> str: + prompt = TR.recovery__type_word_x_of_y_template.format(word_index + 1, word_count) + can_go_back = word_index > 0 + if is_slip39: + keyboard = RustLayout( + trezorui2.request_slip39( + prompt=prompt, prefill_word=prefill_word, can_go_back=can_go_back + ) + ) + else: + keyboard = RustLayout( + trezorui2.request_bip39( + prompt=prompt, prefill_word=prefill_word, can_go_back=can_go_back + ) + ) + + word: str = await ctx_wait(keyboard) + return word + + +async def show_remaining_shares( + groups: Iterable[tuple[int, tuple[str, ...]]], # remaining + list 3 words + shares_remaining: list[int], + group_threshold: int, +) -> None: + from trezor import strings + from trezor.crypto.slip39 import MAX_SHARE_COUNT + + pages: list[tuple[str, str]] = [] + for remaining, group in groups: + if 0 < remaining < MAX_SHARE_COUNT: + title = strings.format_plural( + TR.recovery__x_more_items_starting_template_plural, + remaining, + TR.plurals__x_shares_needed, + ) + words = "\n".join(group) + pages.append((title, words)) + elif ( + remaining == MAX_SHARE_COUNT and shares_remaining.count(0) < group_threshold + ): + groups_remaining = group_threshold - shares_remaining.count(0) + title = strings.format_plural( + TR.recovery__x_more_items_starting_template_plural, + groups_remaining, + TR.plurals__x_groups_needed, + ) + words = "\n".join(group) + pages.append((title, words)) + + await raise_if_not_confirmed( + interact( + RustLayout(trezorui2.show_remaining_shares(pages=pages)), + "show_shares", + ButtonRequestType.Other, + ) + ) + + +async def show_group_share_success(share_index: int, group_index: int) -> None: + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.show_group_share_success( + lines=[ + TR.recovery__you_have_entered, + TR.recovery__share_num_template.format(share_index + 1), + TR.words__from, + TR.recovery__group_num_template.format(group_index + 1), + ], + ) + ), + "share_success", + ButtonRequestType.Other, + ) + ) + + +async def continue_recovery( + button_label: str, + text: str, + subtext: str | None, + info_func: Callable | None, + dry_run: bool, + show_info: bool = False, # unused on TT +) -> bool: + from ..common import button_request + + if show_info: + # Show this just one-time + description = TR.recovery__only_first_n_letters + else: + description = subtext or "" + + homepage = RustLayout( + trezorui2.confirm_recovery( + title=text, + description=description, + button=button_label.upper(), + info_button=info_func is not None, + dry_run=dry_run, + ) + ) + + await button_request("recovery", ButtonRequestType.RecoveryHomepage) + + if info_func is not None: + return await _is_confirmed_info(homepage, info_func) + else: + result = await ctx_wait(homepage) + return result is CONFIRMED + + +async def show_recovery_warning( + br_type: str, + content: str, + subheader: str | None = None, + button: str | None = None, + br_code: ButtonRequestType = ButtonRequestType.Warning, +) -> None: + button = button or TR.buttons__try_again # def_arg + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.show_warning( + title=content, + description=subheader or "", + button=button.upper(), + allow_cancel=False, + ) + ), + br_type, + br_code, + ) + ) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py new file mode 100644 index 0000000000..0dd51dc963 --- /dev/null +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -0,0 +1,369 @@ +from typing import TYPE_CHECKING + +import trezorui2 +from trezor import TR +from trezor.enums import ButtonRequestType +from trezor.wire import ActionCancelled +from trezor.wire.context import wait as ctx_wait + +from ..common import interact +from . import RustLayout, raise_if_not_confirmed + +if TYPE_CHECKING: + from typing import Callable, Sequence + + from trezor.enums import BackupType + + +CONFIRMED = trezorui2.CONFIRMED # global_import_cache + + +def _split_share_into_pages(share_words: Sequence[str], per_page: int = 4) -> list[str]: + pages: list[str] = [] + current = "" + fill = 2 + + for i, word in enumerate(share_words): + if i % per_page == 0: + if i != 0: + pages.append(current) + current = "" + + # Align numbers to the right. + lastnum = i + per_page + 1 + fill = 1 if lastnum < 10 else 2 + else: + current += "\n" + current += f"{i + 1:>{fill}}. {word}" + + if current: + pages.append(current) + + return pages + + +async def show_share_words( + share_words: Sequence[str], + share_index: int | None = None, + group_index: int | None = None, +) -> None: + if share_index is None: + title = TR.reset__recovery_seed_title + elif group_index is None: + title = TR.reset__recovery_share_title_template.format(share_index + 1) + else: + title = TR.reset__group_share_title_template.format( + group_index + 1, share_index + 1 + ) + + pages = _split_share_into_pages(share_words) + + result = await interact( + RustLayout( + trezorui2.show_share_words( + title=title, + pages=pages, + ), + ), + "backup_words", + ButtonRequestType.ResetDevice, + ) + if result != CONFIRMED: + raise ActionCancelled + + +async def select_word( + words: Sequence[str], + share_index: int | None, + checked_index: int, + count: int, + group_index: int | None = None, +) -> str: + if share_index is None: + title: str = TR.reset__check_seed_title + elif group_index is None: + title = TR.reset__check_share_title_template.format(share_index + 1) + else: + title = TR.reset__check_group_share_title_template.format( + group_index + 1, share_index + 1 + ) + + # It may happen (with a very low probability) + # that there will be less than three unique words to choose from. + # In that case, duplicating the last word to make it three. + words = list(words) + while len(words) < 3: + words.append(words[-1]) + + result = await ctx_wait( + RustLayout( + trezorui2.select_word( + title=title, + description=TR.reset__select_word_x_of_y_template.format( + checked_index + 1, count + ), + words=(words[0], words[1], words[2]), + ) + ) + ) + if __debug__ and isinstance(result, str): + return result + assert isinstance(result, int) and 0 <= result <= 2 + return words[result] + + +async def slip39_show_checklist(step: int, backup_type: BackupType) -> None: + from trezor.enums import BackupType + + assert backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced) + + items = ( + ( + TR.reset__slip39_checklist_set_num_shares, + TR.reset__slip39_checklist_set_threshold, + TR.reset__slip39_checklist_write_down_recovery, + ) + if backup_type == BackupType.Slip39_Basic + else ( + TR.reset__slip39_checklist_set_num_groups, + TR.reset__slip39_checklist_set_num_shares, + TR.reset__slip39_checklist_set_sizes_longer, + ) + ) + + result = await interact( + RustLayout( + trezorui2.show_checklist( + title=TR.reset__slip39_checklist_title, + button=TR.buttons__continue, + active=step, + items=items, + ) + ), + "slip39_checklist", + ButtonRequestType.ResetDevice, + ) + if result != CONFIRMED: + raise ActionCancelled + + +async def _prompt_number( + title: str, + description: Callable[[int], str], + info: Callable[[int], str], + count: int, + min_count: int, + max_count: int, + br_name: str, +) -> int: + num_input = RustLayout( + trezorui2.request_number( + title=title.upper(), + description=description, + count=count, + min_count=min_count, + max_count=max_count, + ) + ) + + while True: + result = await interact( + num_input, + br_name, + ButtonRequestType.ResetDevice, + ) + if __debug__: + if not isinstance(result, tuple): + # DebugLink currently can't send number of shares and it doesn't + # change the counter either so just use the initial value. + result = (result, count) + status, value = result + + if status == CONFIRMED: + assert isinstance(value, int) + return value + + await ctx_wait( + RustLayout( + trezorui2.show_simple( + title=None, + description=info(value), + button=TR.buttons__ok_i_understand, + ) + ) + ) + num_input.request_complete_repaint() + + +async def slip39_prompt_threshold( + num_of_shares: int, group_id: int | None = None +) -> int: + count = num_of_shares // 2 + 1 + # min value of share threshold is 2 unless the number of shares is 1 + # number of shares 1 is possible in advanced slip39 + min_count = min(2, num_of_shares) + max_count = num_of_shares + + def description(count: int) -> str: + if group_id is None: + if count == 1: + return TR.reset__you_need_one_share + elif count == max_count: + return TR.reset__need_all_share_template.format(count) + else: + return TR.reset__need_any_share_template.format(count) + else: + return TR.reset__num_shares_for_group_template.format(group_id + 1) + + def info(count: int) -> str: + # TODO: this is madness... + text = TR.reset__the_threshold_sets_the_number_of_shares + if group_id is None: + text += TR.reset__needed_to_recover_your_wallet + text += TR.reset__set_it_to_count_template.format(count) + if num_of_shares == 1: + text += TR.reset__one_share + elif num_of_shares == count: + text += TR.reset__all_x_of_y_template.format(count, num_of_shares) + else: + text += TR.reset__any_x_of_y_template.format(count, num_of_shares) + text += "." + else: + text += TR.reset__needed_to_form_a_group + text += TR.reset__set_it_to_count_template.format(count) + if num_of_shares == 1: + text += TR.reset__one_share + " " + elif num_of_shares == count: + text += TR.reset__all_x_of_y_template.format(count, num_of_shares) + else: + text += TR.reset__any_x_of_y_template.format(count, num_of_shares) + text += " " + TR.reset__to_form_group_template.format(group_id + 1) + return text + + return await _prompt_number( + TR.reset__title_set_threshold, + description, + info, + count, + min_count, + max_count, + "slip39_threshold", + ) + + +async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: + count = 5 + min_count = 1 + max_count = 16 + + def description(i: int): + if group_id is None: + if i == 1: + return TR.reset__only_one_share_will_be_created + else: + return TR.reset__num_of_share_holders_template.format(i) + else: + return TR.reset__total_number_of_shares_in_group_template.format( + group_id + 1 + ) + + if group_id is None: + info = TR.reset__num_of_shares_basic_info + else: + info = TR.reset__num_of_shares_advanced_info_template.format(group_id + 1) + + return await _prompt_number( + TR.reset__title_set_number_of_shares, + description, + lambda i: info, + count, + min_count, + max_count, + "slip39_shares", + ) + + +async def slip39_advanced_prompt_number_of_groups() -> int: + count = 5 + min_count = 2 + max_count = 16 + description = TR.reset__group_description + info = TR.reset__group_info + + return await _prompt_number( + TR.reset__title_set_number_of_groups, + lambda i: description, + lambda i: info, + count, + min_count, + max_count, + "slip39_groups", + ) + + +async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: + count = num_of_groups // 2 + 1 + min_count = 1 + max_count = num_of_groups + description = TR.reset__required_number_of_groups + info = TR.reset__advanced_group_threshold_info + + return await _prompt_number( + TR.reset__title_set_group_threshold, + lambda i: description, + lambda i: info, + count, + min_count, + max_count, + "slip39_group_threshold", + ) + + +async def show_warning_backup(slip39: bool) -> None: + result = await interact( + RustLayout( + trezorui2.show_info( + title=TR.reset__never_make_digital_copy, + button=TR.buttons__ok_i_understand, + allow_cancel=False, + ) + ), + "backup_warning", + ButtonRequestType.ResetDevice, + ) + if result != CONFIRMED: + raise ActionCancelled + + +async def show_success_backup() -> None: + from . import show_success + + await show_success( + "success_backup", + TR.reset__use_your_backup, + TR.reset__your_backup_is_done, + ) + + +async def show_reset_warning( + br_type: str, + content: str, + subheader: str | None = None, + button: str | None = None, + br_code: ButtonRequestType = ButtonRequestType.Warning, +) -> None: + button = button or TR.buttons__try_again # def_arg + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.show_warning( + title=subheader or "", + description=content, + button=button.upper(), + allow_cancel=False, + ) + ), + br_type, + br_code, + ) + ) From 67de10e96f7923d8177129a050fc7562c6fee6dc Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 6 Mar 2024 11:00:21 +0100 Subject: [PATCH 105/626] feat(core): add colors for T3T1 --- core/embed/rust/src/ui/model_mercury/theme/mod.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 1a61eeef4a..a1116acca6 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -28,6 +28,18 @@ pub const GREEN_LIME: Color = Color::rgb(0x9B, 0xE8, 0x87); pub const ORANGE_DIMMED: Color = Color::rgb(0x9E, 0x57, 0x42); pub const ORANGE_LIGHT: Color = Color::rgb(0xFF, 0x8D, 0x6A); // cancel button +// TODO: delete colors below when ui-t3t1 done +pub const RED: Color = Color::rgb(0xE7, 0x0E, 0x0E); // button +pub const RED_DARK: Color = Color::rgb(0xAE, 0x09, 0x09); // button pressed +pub const YELLOW: Color = Color::rgb(0xD9, 0x9E, 0x00); // button +pub const YELLOW_DARK: Color = Color::rgb(0x7A, 0x58, 0x00); // button pressed +pub const GREEN_DARK: Color = Color::rgb(0x00, 0x55, 0x1D); // button pressed +pub const BLUE: Color = Color::rgb(0x06, 0x1E, 0xAD); // button +pub const BLUE_DARK: Color = Color::rgb(0x04, 0x10, 0x58); // button pressed +pub const OFF_WHITE: Color = Color::rgb(0xDE, 0xDE, 0xDE); // very light grey +pub const GREY_MEDIUM: Color = Color::rgb(0x4F, 0x4F, 0x4F); // button pressed +pub const VIOLET: Color = Color::rgb(0x95, 0x00, 0xCA); + pub const FATAL_ERROR_COLOR: Color = Color::rgb(0xE7, 0x0E, 0x0E); pub const FATAL_ERROR_HIGHLIGHT_COLOR: Color = Color::rgb(0xFF, 0x41, 0x41); From d6e5800413e9761a3e709b24d5ab9689bc28bb45 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 7 Mar 2024 00:40:58 +0100 Subject: [PATCH 106/626] feat(core): add icons for T3T1 --- .../src/ui/model_mercury/res/autofill30.png | Bin 0 -> 542 bytes .../src/ui/model_mercury/res/autofill30.toif | Bin 0 -> 150 bytes .../model_mercury/res/bullet_checkmark20.png | Bin 0 -> 433 bytes .../model_mercury/res/bullet_checkmark20.toif | Bin 0 -> 107 bytes .../src/ui/model_mercury/res/cancel24.png | Bin 0 -> 409 bytes .../src/ui/model_mercury/res/cancel24.toif | Bin 0 -> 101 bytes .../ui/model_mercury/res/chevron_right24.png | Bin 0 -> 320 bytes .../ui/model_mercury/res/chevron_right24.toif | Bin 0 -> 44 bytes .../rust/src/ui/model_mercury/res/close30.png | Bin 0 -> 367 bytes .../src/ui/model_mercury/res/close30.toif | Bin 0 -> 76 bytes .../src/ui/model_mercury/res/delete30.png | Bin 0 -> 484 bytes .../src/ui/model_mercury/res/delete30.toif | Bin 0 -> 139 bytes .../src/ui/model_mercury/res/download24.png | Bin 0 -> 390 bytes .../model_mercury/res/exclamation_mark24.png | Bin 0 -> 502 bytes .../model_mercury/res/exclamation_mark24.toif | Bin 0 -> 153 bytes .../rust/src/ui/model_mercury/res/fire24.png | Bin 0 -> 472 bytes .../rust/src/ui/model_mercury/res/menu30.png | Bin 0 -> 324 bytes .../rust/src/ui/model_mercury/res/menu30.toif | Bin 0 -> 57 bytes .../rust/src/ui/model_mercury/res/minus40.png | Bin 0 -> 275 bytes .../src/ui/model_mercury/res/minus40.toif | Bin 0 -> 33 bytes .../src/ui/model_mercury/res/page_down20.png | Bin 0 -> 379 bytes .../src/ui/model_mercury/res/page_down20.toif | Bin 0 -> 79 bytes .../src/ui/model_mercury/res/page_up20.png | Bin 0 -> 368 bytes .../src/ui/model_mercury/res/page_up20.toif | Bin 0 -> 79 bytes .../rust/src/ui/model_mercury/res/plus40.png | Bin 0 -> 333 bytes .../rust/src/ui/model_mercury/res/plus40.toif | Bin 0 -> 52 bytes .../src/ui/model_mercury/res/qr_code24.png | Bin 0 -> 476 bytes .../src/ui/model_mercury/res/qr_code24.toif | Bin 0 -> 152 bytes .../src/ui/model_mercury/res/reboot24.png | Bin 0 -> 430 bytes .../src/ui/model_mercury/res/reboot24.toif | Bin 0 -> 96 bytes .../model_mercury/res/simple_checkmark30.png | Bin 0 -> 397 bytes .../model_mercury/res/simple_checkmark30.toif | Bin 0 -> 78 bytes .../rust/src/ui/model_mercury/theme/mod.rs | 37 ++++++++++++++++++ python/src/trezorlib/toif.py | 4 +- 34 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/res/autofill30.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/autofill30.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/cancel24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/cancel24.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/chevron_right24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/close30.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/close30.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/delete30.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/delete30.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/download24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/fire24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/menu30.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/menu30.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/minus40.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/minus40.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/page_down20.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/page_down20.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/page_up20.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/page_up20.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/plus40.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/plus40.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/qr_code24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/qr_code24.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/reboot24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/reboot24.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/autofill30.png b/core/embed/rust/src/ui/model_mercury/res/autofill30.png new file mode 100644 index 0000000000000000000000000000000000000000..16cd93f3aad96f9335cac1ec45721598e13f22e5 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^QXtF$Bp7-Wg@u3=Q<As43&a2R{xkc5JoXY#Usv`Q z%xq%%T>G*lJ~1#b>Up|2hG?8`owTs{kby|M{iP!Jqb|zZcKiA?I5Zr&Ce}DNA+PL@ zZNwRt$+I0w$~zRpIg^^WTqdmaIa)S5!`tXa-uWl7`=<Y?J6Zi9-Q<-@hn3NifY-hM zI-l&QUEwGEc0tCCqCBIMTnCst-1li;dNV0hLrT{A#SB@F35SErH?lBpyn0i;@@Y8_ zljVk^n^U4TmNhJRp0yxb?4jW#v9Cp`W`7wLO#BtYB(f@ndFhuDAts^u3<=w|x_|v6 z$04}?&+G7=Kb|NSY+t`^zQ`xB0}mEEE3Byd9;m3UctEak@uAPrz7fh1mM4VFDr!pJ z9M(IRr!{F=#RT42rdIFSQiE(HYz*e#75?A-eN+5yx8EImbYAP_cfVf7+;#NQIX0th zYfnCVcY|Tm{oPp;U%$EfA-{%sesr*-($15~z`#^3ag8WRNi0dVN-jzTQVd20Mkcxj z#<~V(Ax1`4#)eiV#@Yr3Rt5%-yowl6H00)|WTsW()-YN8)Lx(l4Y&;@nYpROC5gEO dXnIV{tqctymdw<j6%W+I;OXk;vd$@?2>`FU(5V0b literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/autofill30.toif b/core/embed/rust/src/ui/model_mercury/res/autofill30.toif new file mode 100644 index 0000000000000000000000000000000000000000..5551d07fe6bcd8545ed1882ac51ff61596a80bc0 GIT binary patch literal 150 zcmV;H0BQeJPf14_02%;_0001EU_b*7WgQv9P<CPm2#A8&1|1N<4C1svIUYz7V5vqp zM}mQ&6+~B*0Er9+0f?YLJCKBGv0x|!k}L^O%^)eZ2B6xsv@|i06g!Z^1h!kDqk{v5 zQ-Gw51H}LbB%_%bz#I;+rHl-1AWlXxkcdEYD2f+QJcsIShCnb|3>rL!Z5`<>=;6lz E073jTQvd(} literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.png b/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.png new file mode 100644 index 0000000000000000000000000000000000000000..0681bec6f3baae3e304d32f96b9a5405178d770b GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^LLkfmBp8a9UhD=^OiAAEE)4(M`_JqL^4Lo}eO=jK zFtds2bM4EL_yiO>=;`7ZB5^tQf@0Aj1_8H+{VZuxffGFhIFy7tdwW;DWUXRccThAd z`lhzZiAPxiAt6_UW}c96VO1$v_V@0-o3*<)|2fIB=9A5}Ij_nb0wZIj@4cSKc`?n7 z&-DD>3GHv5?VMlBsd6;Gd?MGB<ej&bgd=+9Wwpj66qM_qR8C^N@ovTKv$8W@C0(2P zVsXzx!%`iM&`qc3O}<ds8}ePG@w(j=H}54!Ti@_Ay?R!b87x?2cV=4nrux_I&sCl# zt+TGH`)zN3afkle%4H4zfu2z<ag8WRNi0dVN-jzTQVd20Mkcxj#<~V(Ax1`4#+Fv5 z7TN{|Rt5(425A#fH00)|WTsW(*5H?WPZy{`18ze}W^QV6Nn&mRnjRB#D?<Z_B{TJB R#RK&)c)I$ztaD0e0ssa>ofiNA literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.toif b/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.toif new file mode 100644 index 0000000000000000000000000000000000000000..3544814d6880a963d12627974ca85e66870af109 GIT binary patch literal 107 zcmV-x0F?h!Pf14-01^OS0001EV1NUK(vEOO5TmuDqay-H7j%FCJ465^B+vl?OaUO$ zqp^b(tc1O}gS`PrR|s}=a5QvCv{(RzISM*F99Ua`vOvWw3P5RAAmLF6WH7=FL|6g0 NltBRK3?_uD7yu@3BPIX< literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/cancel24.png b/core/embed/rust/src/ui/model_mercury/res/cancel24.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab5220ca04cb63946432a44829491d77366d76b GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^A|T8GBp6maa=Hkln3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+rj($mE;MB;L8zoJmHfryKIrmHV&gb%;K>{GWQRAQEH`@Z5O=c`E` zDkqY(Cd}wkatsMEFqrIf?a$BrwDNStMJ#KXQ`Rb^WVoEslW;bfG+`yfw)-<?w`{m~ zYi&l{rE5wI^TOHRmBsJ-Tf`?}kRo>_IoUyU-dv;hJ)evVnR(8&Z*`n&xOMu?#abD0 z(?$Ip7OG4!VpkKm;5WgGVdkMb2l?vWUoMosX>WJrD|^8Q&H5{TXS9KiRxNRjC`m~y zNwrEYN(E93Mg~SEx(3F&24*2fMpniaRwky}1_o9J2DSY;A5k>q=BH$)RpQpbbLomN rP=f~ChLX(O)Z&uF+yXQ`CgxU#1`tbT>d%S?>S6G7^>bP0l+XkKBI$`# literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/cancel24.toif b/core/embed/rust/src/ui/model_mercury/res/cancel24.toif new file mode 100644 index 0000000000000000000000000000000000000000..5344dea592b8419e8d09300eb3852ba95f10003d GIT binary patch literal 101 zcmV-r0Gj_)Pf14<02BaO0001EV1NOK4k%!0fU!6btO6K|UBCqj7#R?t1tRGIWwk?C z%q<=Y5EhFAivfgX!NAZARmUg*)qx;b4VVKUET(1)u-@j5^p1`)kT$4eBp4V3+ChvA HWCs8M@4z5y literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_right24.png b/core/embed/rust/src/ui/model_mercury/res/chevron_right24.png new file mode 100644 index 0000000000000000000000000000000000000000..5dea415fff50d75ed4edcc235f81e7b80ca32894 GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRS0VEi1{Ld@_QcOwS?k)`f+xyS#2lCiUJbhi+ zUof+Y>2vMNlK2D^3h;Ds4B@yQdS;>E0RtYEgPV^WN|_~f$Gxi1cAZv8>5Tvrg`%{g zjOPar`@Njb-Vm_%dim$Hv&>UGv}SvKn)cqc;Z|<1MyKaZ2ag4Fj?eg0#gNJ__xyQb zfH%-=)e_f;l9a@fRIB8oR3OD*WME{XYhbKvU>0IzWMyn*Wn`{xU|?lnU>*Bp8j6P8 z{FKbJO57T}7-F=58Z_WGlw{_n7MCRE7NF@dF}E@_fLJn9e^xwD4}+(xpUXO@geCw# CvtzRW literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif b/core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif new file mode 100644 index 0000000000000000000000000000000000000000..32666c3ecde88932b44b0501f851b3c7b756da19 GIT binary patch literal 44 zcmWIX_jKoE;A2o=U|>j2U}!ROV{2>TQV8tuGce%TvYC0Kg^Y1SL4yS|3j+fH*To7z literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/close30.png b/core/embed/rust/src/ui/model_mercury/res/close30.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5b188bf9bffa062bcc2ceaa0d1a39695947a3e GIT binary patch literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAn3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+qY@9E+gB5~QZUs3Fk0gpqyG|x2cHAQAyEv!19E?b)S{f1tH!(#^( zNx_r9D=U9;t|&UPX3m#`PhZ}VdeVROfy#Q5z#DUqYvtU_<aKlZ;Ag1DsAGOWf^l}C z8uJI+Nxn0##|Z7a`}WbD!+H<<t6ko2toIgvI`{m+3+yT@zW%S<`-yqSWo@n1)1Jly zouXRe8c~vxSdwa$T$Bo=7>o>zOmq#5bq&lyjEt;|4XliewG9lc3=B>`7ubQKAvZrI zGp!O$gOP=mDO5v}nw=(4g9hA&lFZ!H;*!MN0yI4)=2nIV5KCt2&jPuM!PC{xWt~$( F699VqeG~uy literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/close30.toif b/core/embed/rust/src/ui/model_mercury/res/close30.toif new file mode 100644 index 0000000000000000000000000000000000000000..b9e2f3c4fb429603a96d086e374f0b100f3cc2be GIT binary patch literal 76 zcmV-S0JHy8Pf14*01yB`0000pU}gXU1?FZC5Zz+Y)WO2Q;Lu^=&;b-^0djyC%mxx5 iE=aHgtk$6e%!SiXahN)&KA1VpP;+7S7=Z0HU<Ls9)Ezhg literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/delete30.png b/core/embed/rust/src/ui/model_mercury/res/delete30.png new file mode 100644 index 0000000000000000000000000000000000000000..3366c070489fadaec7c25bc7e67fc68886c7f3c6 GIT binary patch literal 484 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W20VEhAUrNRRDW)WEcNd2L?fqx=19|Kvp1!W^ zFPPcH^ttwBNqhndeera04AD4WI!WLEu!BVV{BLP~J^{{$Iy*xhnr2#@4VP$YxfN-5 z{>!A!G@)kIgMF$UVLn?v2~60+H?6_pOIhvlP4g=zpPu~v`@h{CdyjGMoh8-r$NBs* zkFEWzrxv$gWOVX><yKj8uzu<KkD5nj1~R>!XXozlGsmPsx?{~(?sxNi&t2zn;BQ&j zXqw4aC#9OD>e;D%;2vYZ@!*SXXMb@ViTWni%CKNt_~8aK%ZBXr*8X3AizV!2sSbWr zHa*sM-}CqLLKBQ<J3h5lOqpjsSySS3u{Fzz#gna*1(^?p#jSktPC<$*s`kfk*@I;p z-?FRP{ty=Zz`onaO)=uXS`X0wswJ)wB`Jv|saDBFsX&Us$iT=%*T7iUz%0bb$jaEz z%D__Fz`)AD;820`Rum1n`6-!cmAEx*)}74>)Sv;kp(HamwYVfPw*XC#iMf@b0mPD- T`m^GJdKf%i{an^LB{Ts5DgUyS literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/delete30.toif b/core/embed/rust/src/ui/model_mercury/res/delete30.toif new file mode 100644 index 0000000000000000000000000000000000000000..925396407b17a55886b1f3c832d5b2c3ae9b92d5 GIT binary patch literal 139 zcmV;60CfLUPf14`02Ba!0000@&#?*uF%SgMAtu`T34)-OK^tqU^jf5}yi%}9?V&fH z?ad}=rdb}dfh+)QP8J8{&YHdOXyBm-S3T$q=QoGvJPa9Q#*6f}w!{^YO!ZBGz#E%{ t^f6>$oQIzpqy%X|43al3BEwphR4(LhQf1x$zdsf9a-B-O`DpiVfiKp*K9>Lh literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/download24.png b/core/embed/rust/src/ui/model_mercury/res/download24.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9233e4d68173662d4bc8e18ad03940480889f8 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#=`Bp4pvH+~MJn3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+q2&C|s(MB?(<2@8dq0t8&oGaX$qm1F;go5yaQsNvav;J(G@XJ;kW zeBu^scIg%3UBK@qv)cTwZL#?s?)@Rx52_zrr#>;`=jZzy%*^Iod%?n;#*oIrV8{@D zvZ%=5PvIHfTcQjV$7fvI!hCMh-j&N@om{yeXvE#@GShjHH)mQKuYi)=i#=UM?l-2% z%kJ&oc_PiU`R~62;<k*fEpqH!&yv;xU8q{(8c~vxSdwa$T$Bo=7>o>zOmq#5bq&ly zjEt;I46RIzv<(cb3=DGFa?DUP<mRVjrd8tBAQOG13#dT@ZbM0CZfbE!Vr~Jt9&;;0 X1BfLv^=HKc^)Pt4`njxgN@xNA8o`6x literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.png b/core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.png new file mode 100644 index 0000000000000000000000000000000000000000..5627767ba8a59f77024ec72b887cfd82acea5324 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^5<o1*0VEjyi!p})DW)WEcNd2L?fqx=19|Kvp1!W^ zFPPcH^ttwBNqk~pU}W=jaSYKoUpjGN&|wFGw*AWl=bYhWF;nlhad8#sSbgN0!Um5G zwLEc+3eoP5gjkGO4)UCEaam$yc;<+U!X=eltJux|@0oA^e@}N#$4iB;N$0k$e-kIk zypCtrrB^K`IdO)sR$Sd%Q?DIhBzgBjo~UEY?kpBD7S$_?-h~W3!L>{-GatWYuI%Ms zEy_}n#6M%R3hVJk6XEU56K2)b?Z38)oxdfO{glLI#<w9CKNuIjef6#JkzY;`!^gSI zXYc#en)p0S3;W6NB$YQ{#b>p{PEzx3tNHim@_kSdo0anXkMK52-<D%;L2q)d&#hm` zYPSDY$Kj`)+S_~*R`!4U_4N?Tjy)1{(>0ermapvfDA*@{{VOn#R7+eVN>UO_QmvAU zQh^kMk%5tku7R<xfmw)=k(G(5m7#&Qfq|8Q!R|?y8BsLk=BH$)RpQog>U{QIpau=N j4JDbmsl_FUxdrHY%;A>I)Snd()WhKE>gTe~DWM4fr+v5x literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.toif b/core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.toif new file mode 100644 index 0000000000000000000000000000000000000000..8e9f4603692a0e114606309f51bcdf81147978fc GIT binary patch literal 153 zcmV;K0A~MGPf14@02Tm^00018k0B4jFc3zsrOPHKk(J0PQdu#9teBW2!5}LqS<1%! zY_4}L$@t9oa=E@-0siv1{?H?u%BxG4%6sFV1&2ieYT@VrQY-wXzTX&o)Umb59A<cR z^q!69%qv?zCNo=y1u_Gk#2BbkCq__g?U6dt%%bu$$PR2KxO!n~ERK?iL>rdSvMuvb HAHMwsmKsO0 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fire24.png b/core/embed/rust/src/ui/model_mercury/res/fire24.png new file mode 100644 index 0000000000000000000000000000000000000000..c075d37fbaf2895a37609fdec2de7f850a054631 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz00VEinYCXOMq?nSt-CY>|xA&jf59G0zc>21s zzhGt))92ckCGiO;^up7{F+}2W?Zx$ehYJJ_d^~?k_n~_9&WR3(j<8I1<~#0TU~{;F zHLlV9f#kBn1dk1?@4R7YIu)kSCBeDq?hTeXJ9od2eW(Bb)EC9Ovp)9uR^MD@*YdK* zz_Ytb{#=km%Drd{$+hg}zB)Z?UK;JQeG#s6^bYIc$M5>)J)3>P;^4*nEF-a<H>y^z zx;S%P-RVy|Uu(bUZV}t}VNctF+z(gyRmIX5to91n*C@m_F*TT-=Yewy>tvBjr<YZ% z@nQe6Y1gZ{cT`Ul%O0xTv_0)>MAywVn+gsbS@HROnn?Wm&;BL1r1{S`Z;H55zyCG+ zeP_$K*h;m7KtHRNxJHzuB$lLFB^RXvDF!10BNJT%V_gHY5F;Zi6B8?A3vB}fD+2@7 zSsztVH00)|WTsW()(~>sb0$!O2Hb{{%-q!ClEmBsbUo%)h6WHzX6nz12kK$)boFyt I=akR{0Q}*&Jpcdz literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/menu30.png b/core/embed/rust/src/ui/model_mercury/res/menu30.png new file mode 100644 index 0000000000000000000000000000000000000000..8c48673a9cdde9ee8188a2da080cfc5ee51453f7 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^5<o1%0VEhU-CGn7q?nSt-CY>|xA&jf59G0zc>21s zzhGt))92ckCGiO;6yoXP7$R{wIVC_W=>SXl{f!){#tF<<eda_Qm9&tQT(Wdy$Nt@i z9oP?a+?78+@6jiBZsEMeY}e$q0-k->em_CACF{YP?`J)PeC`)Ysj?V%Jv7>+#L##{ zNTPYcmFGb7RZCnWN>UO_QmvAUQh^kMk%5tku7R<xfmw)=k(IH5m7$rofq|8Qfp~z$ z9~2F_`6-!cm1r7_EUb)-AsR9sn;QT%XuxeK$;?eHE=kNSK+|JlZe?fy(KAzj7ARO4 NJYD@<);T3K0RV0QW48bR literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/menu30.toif b/core/embed/rust/src/ui/model_mercury/res/menu30.toif new file mode 100644 index 0000000000000000000000000000000000000000..48c9706ec77fc0343b110e58df1a94d7db161bfb GIT binary patch literal 57 zcmWIX_jH$F5Mj_|U|<L~Xk$KhjL+hMLy|X#!W9F<2^=CDX6rkeevWN$kT}FPJCZTc NTw&wEXU5Jq7y!=B5_A9n literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/minus40.png b/core/embed/rust/src/ui/model_mercury/res/minus40.png new file mode 100644 index 0000000000000000000000000000000000000000..d17c01f1e298907353078c3194cfa3ef5d1f3a6b GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5ec0VEiHm|pw@q?nSt-CY>|xA&jf59G0zc>21s zzhGt))92ckB>_^P?CIhd!f`!0;Q*(EWQ)&6uQ_$cPXuUpgubdZ7LH_lbnOTO!&Nml zwtTPo6+q>xC9V-ADTyViR>?)FK#IZ0z{o_`z*yJ7EX2sj$^?Y84GgRd4B8B@o1$pQ z%}>cptHiD0drp2QP=f~ChLX(O)Z&uF+yZnx=2nIV5KCt2&x!}?VeoYIb6Mw<&;$Tq COiS$m literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/minus40.toif b/core/embed/rust/src/ui/model_mercury/res/minus40.toif new file mode 100644 index 0000000000000000000000000000000000000000..b284565c85a0914102cd4be309bdf0f3590bf1ce GIT binary patch literal 33 ocmWIX_jH$HU}F$vU|>j2aA0E6<2Vp;p^@Q@hKxw+iC>Zo0CeC8lK=n! literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/page_down20.png b/core/embed/rust/src/ui/model_mercury/res/page_down20.png new file mode 100644 index 0000000000000000000000000000000000000000..740ce632c57546da56680a7a35e6a94663ce0f25 GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO0VEi_4kcUwQcOwS?k)`f+xyS#2lCiUJbhi+ zUof+Y>2vMNlK2D^>h^ST4B@z5du}1$Ap;S&hnGz|6uVs<f>PA2J5}~DBnj#0@Ax7( z!?jGTQG%&ZU7(|{t)*r0yYzoCKfIFv1RLE+%>H$~B~YyFuJ43@yCQkFvrO1Mznp>9 z;mCxKFZs``^qOuzy|wVT)B*FdmF%f^5BFXY(Bt}MJz>&?MT%OddoC>FU$m*kEdQFQ z{a!|+WlF4@{fyj!&QdLLjVMV;EJ?LWE=mPb3`Pb<Cb|a3x&~$;Mn+a9hE@jV+6D$z z1_rxJe6vwB<mRVjrd8tBa7y#*b)W_fxD6$lxv9k^iMa*ndd#g14Iq}x)Snd()WhKE L>gTe~DWM4fUd4Rj literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/page_down20.toif b/core/embed/rust/src/ui/model_mercury/res/page_down20.toif new file mode 100644 index 0000000000000000000000000000000000000000..4beae7db0b8f3e7da0008c80083e1d5e667cfa26 GIT binary patch literal 79 zcmV-V0I>g5Pf14%01^O00001EU;qIDVGwE1!3tuRWPpX*nL$(&8;ERR$3`YHHLx47 lHCZ&UH)}X_G@Ey@Ftl`ZcrY+HbO4zQ3@sjDQ<)f`006Nh7}fv) literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/page_up20.png b/core/embed/rust/src/ui/model_mercury/res/page_up20.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b1695bf8086d574874ec3220170c46143e92ce GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO0VEi_4kcUwQcOwS?k)`f+xyS#2lCiUJbhi+ zUof+Y>2vMNlK2D^YVdS%4B@!m+OI8k$UwwJKT|-$MThC4diNT)b6hu_w;d2`(qR(5 zc}l6-<xBAc1qsveGkeTGEMCTXfZ3x(JHS^?*_l-+wR>Wr#}RQs&hYLT3a%-2C$_Up z@Us3@H1qXtzVDUq<a;DOvv0`c>)+&%fBf>hNVNz1)~}VnR$$ToJ~H31NWoiA&?X+} z7S$5hh?11Vl2ohYqEsNoU}RuqqHAERYhV^)WMpMxU}a>fZD3$!VBoeUsuV>-ZhlH; yS|x4`<{uxO1ZvQL+fb63n_66wm|K9Z$K1-$0Ak5Z{aGMaF?hQAxvX<aXaWFh`*Usp literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/page_up20.toif b/core/embed/rust/src/ui/model_mercury/res/page_up20.toif new file mode 100644 index 0000000000000000000000000000000000000000..8b48f18f1e07c908ae9efed6d1cd7612173aab67 GIT binary patch literal 79 zcmV-V0I>g5Pf14%01^O00001EV1NJxW)Rup0VEtcI#__rjt&nXv)H18rOBdzqgf+? lxqw4KjDewm1Edm@Owa(41{I7Ts?8ll1$2N-HDrX?0RaB#8_@s& literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/plus40.png b/core/embed/rust/src/ui/model_mercury/res/plus40.png new file mode 100644 index 0000000000000000000000000000000000000000..78d98a494668080c7c7facc83a52887ce06f0c9e GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^QXtF$Bp7-Wg@u3=Q<As43&a2R{xkc5JoXY#Usv`Q z%xq%%T>G*lJ^_VdJzX3_G|nd{9N?6gc*E%?Pw;)k9X=jG%bJ>&@!VK?;lPAxNr?hY z)xoWej;wlxzhsr2*D8eBzMuV3;zUQz0;9ustvQ$@CGNd#Ssk3Vqxk{Pv<nMXUU~Wb zy}z*lD}y4F;LUT6vr2##sg}4#l%yn<q*^5xr2;7iBLgE7T?1oX1G5k#BP$alD?<}) z0|P4qgSCurvQaeT=BH$)RpQogCnn@NP=f~ChLX(O)Z&uF+yZnx=2nIV5KCt2&x!}? OVeoYIb6Mw<&;$VMTW6U7 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/plus40.toif b/core/embed/rust/src/ui/model_mercury/res/plus40.toif new file mode 100644 index 0000000000000000000000000000000000000000..098b5a73d517230a4cf1aedd60ff29e072383a98 GIT binary patch literal 52 zcmWIX_jH$HkYdnaU|>j2aA0S8+QZT3%+4Ka$)x8n;nG94MH1Xr0u8dQ&5LpzWV$3n H3>X*yOS27( literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/qr_code24.png b/core/embed/rust/src/ui/model_mercury/res/qr_code24.png new file mode 100644 index 0000000000000000000000000000000000000000..44e5c765c1d90575c29bf545aa73a09af4fe5a6f GIT binary patch literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^A|T8GBp6maa=Hkln3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+sO#?!?yMB;Mp1>NZ800!0v;&Mz!1oaEuR=a7rt-8A7jlaSAohv53 zQZn1RbA{mS^1|*lXB+e?FL6G%jQ`W@QYyQl{{7W(%WwRKrNRl<L{euTeiN0JCL6h; zZw*K81SPJ+DP}B!nju%?T|^a{rw8Yy_nnE*Inbf{X6Zcjv(Y{4g>QRkc=rf~Hd>sL z=(kvOg1sehQRacy!IiVirE~w5&fhg>&Z|`?RHt~&oO$&?kfF`A_g{aA*e{<~di7v? z_qEvn(RH)u*jfM4<@#97cQ$f+*Hhm&#<wpt-Q81oG5h)R+Eup?C+@wS$1iQipa1VD ze`v4oqGjJRl7aqKEpd$~Nl7e8wMs5Z1yT$~21X{j2FAJuW+6sKR>qcAhNjvE237_J zx7Kp5M$wR)pOTqYiCe?!4;#gS8Z_WGlw{_n7MCRE7NF@dF}E@_fLJn9e^xwD4}+(x KpUXO@geCw5;IgX# literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/qr_code24.toif b/core/embed/rust/src/ui/model_mercury/res/qr_code24.toif new file mode 100644 index 0000000000000000000000000000000000000000..bbb31eedbb00328eb04cdf4d9c8f98eb2717d1b2 GIT binary patch literal 152 zcmV;J0B8SHPf14<02Ba>0000zj<F8HFbqU5X-YFz45(vCmy8t%DP!3fk@y1sAY;cg z6~&*89RwauPqOcPz;D_&&1NK;RU{(2urw*S?6Y^PP5zX8wnJum2wj9A1SUT2ih~2F zzOxt{-5x9&=!G;|OtM`9Ub|Qv0b5g2`s#dDB^e_rly6^>2Gc=5O>yKKHp@+^iXGPa GUmhRe*gLrZ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/reboot24.png b/core/embed/rust/src/ui/model_mercury/res/reboot24.png new file mode 100644 index 0000000000000000000000000000000000000000..0532dcc52f8c3bd7c41c807c89e6e68f49e85767 GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#=`Bp4pvH+~MJn3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+rj&(p;*MB;Mk#Pvc=4l*tF2b>IK&PkX!sm{B);{74x88vM84rZuk z6|!juHZwkowP8B=VBw$Q(`RcoZ?4{KKV!=0%BGfN@!iw9_TAnZvV8Fb1wpG&XB)>t zHBG+uxaiO{t`9eU#oEN5erC$ox#Y=|$BA7LM_M;Vi26y~lj>)DE~q<u`SFhIojZ0h zXkAtMxosN9?oO|-?~U1J++239PH}4K_bm(O9I%c|&-Ku*-^zb7q*``?>~g#3Ja=FG zKKda%UxveJ_x2xR8-PAhEpd$~Nl7e8wMs5Z1yT$~21X{j2FAJuW+6sKRwl+)hL+j} z237_J$|BFEqG-s?PsvQH#H}I7GfoqzK?80>NoH<paY<rs0lFS@D?<Z_B{TJB#RK&) Nc)I$ztaD0e0sz@rnK%Fd literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/reboot24.toif b/core/embed/rust/src/ui/model_mercury/res/reboot24.toif new file mode 100644 index 0000000000000000000000000000000000000000..feeb9c49c1744c97c4383bd4e99644ec3c61caa5 GIT binary patch literal 96 zcmV-m0H6O<Pf14>02TmL0001EU_b_i>@b!<JDgcq!3Y-=$17OS0R|PKaArpbGfaU( zs|8$}LkB`%8w*^xi5+fn0|(qWU?v1K!5ziW$_isSbikaV&}IQ)w1X{%GAme6{0IPl Coge%F literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.png b/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.png new file mode 100644 index 0000000000000000000000000000000000000000..50ff2f99dca54e366e510cb2434b969011cd5969 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz60VEi<J}=4yQcOwS?k)`f+xyS#2lCiUJbhi+ zUof+Y>2vMNlK2D^n(OJ}7$R}G_JX3&Ap-%ohwj`-sYR?4T#~xiJZ0g?(Q$vk)Dd;= z;1@2BB<&pz%E^Mh3-2aI{5-oy)c((oAm`F2p&FanH@h!xZ$EZR;5}C^FE5wvmc54* z=Oy<obSNv6J3Q&KmDyhtxuVB!P1+`%>)bKHg8Oap5s^6^+*hYnoIWq!@U<=D!6pAN zuY;W*IzN|aTKqirc%EiX*!3g#tC{nab%dJw&8mS8RV{IiC`m~yNwrEYN(E93Mg~SE zx(3F&24*2fMpniKRt6^820+rlCsorMMMG|WN@iLmZVk2;6TbsBXuxeK$;?eHE=kNS dK+|JlZe?fyv1F$HtazXv22WQ%mvv4FO#qf|hW7vf literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.toif b/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.toif new file mode 100644 index 0000000000000000000000000000000000000000..1e4001c284b94df88849bbb42864a02d9dbd4caf GIT binary patch literal 78 zcmV-U0I~m6Pf14<022U00001EU_b}O%ut3v2RoEi(7^&_wN$_*B?w6h!z2?b7@?90 k9pX?)f%XbUsLsL;ai~t9Ak5gp4w$h(L73ADCD7ao0O08yu>b%7 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index a1116acca6..56fd5f5607 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -47,6 +47,43 @@ pub const FATAL_ERROR_HIGHLIGHT_COLOR: Color = Color::rgb(0xFF, 0x41, 0x41); pub const RADIUS: u8 = 2; // UI icons (greyscale). + +// 20x20 +include_icon!( + ICON_BULLET_CHECKMARK, + "model_mercury/res/bullet_checkmark20.toif" +); +include_icon!(ICON_PAGE_DOWN, "model_mercury/res/page_down20.toif"); +include_icon!(ICON_PAGE_UP, "model_mercury/res/page_up20.toif"); + +// 24x24 +include_icon!(ICON_CANCEL, "model_mercury/res/cancel24.toif"); +include_icon!(ICON_CHEVRON_RIGHT, "model_mercury/res/chevron_right24.toif"); +include_icon!(ICON_DOWNLOAD, "model_mercury/res/download24.toif"); +include_icon!( + ICON_EXCLAMATION_MARK, + "model_mercury/res/exclamation_mark24.toif" +); +include_icon!(ICON_FIRE, "model_mercury/res/fire24.toif"); +include_icon!(ICON_QR_CODE, "model_mercury/res/qr_code24.toif"); +include_icon!(ICON_REBOOT, "model_mercury/res/reboot24.toif"); + +// 30x30 +include_icon!(ICON_AUTOFILL, "model_mercury/res/autofill30.toif"); +include_icon!(ICON_CLOSE, "model_mercury/res/close30.toif"); +include_icon!(ICON_DELETE, "model_mercury/res/delete30.toif"); +include_icon!(ICON_MENU, "model_mercury/res/menu30.toif"); +include_icon!( + ICON_SIMPLE_CHECKMARK, + "model_mercury/res/simple_checkmark30.toif" +); + +// 40x40 +include_icon!(ICON_MINUS, "model_mercury/res/minus40.toif"); +include_icon!(ICON_PLUS, "model_mercury/res/plus40.toif"); + +// TODO remove TT icons: + // Button icons. include_icon!(ICON_CANCEL, "model_mercury/res/x24.toif"); include_icon!(ICON_CONFIRM, "model_mercury/res/check24.toif"); diff --git a/python/src/trezorlib/toif.py b/python/src/trezorlib/toif.py index 9382c5d3ab..138a9bdbad 100644 --- a/python/src/trezorlib/toif.py +++ b/python/src/trezorlib/toif.py @@ -215,8 +215,8 @@ def from_image( image = image.convert("L") if image.mode == "L": - if image.size[0] % 2 != 0: - raise ValueError("Only even-width grayscale images are supported") + # if image.size[0] % 2 != 0: + # raise ValueError("Only even-width grayscale images are supported") if not legacy_format: toif_mode = ToifMode.grayscale_eh toif_data = _from_pil_grayscale(image.getdata(), right_hi=True) From 940f31c3fb7dd08c2e5bcb204915634afce6d776 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 7 Mar 2024 00:49:49 +0100 Subject: [PATCH 107/626] feat(core/ui): T3T1 frame --- core/embed/rust/src/ui/component/label.rs | 10 +++ .../component/address_details.rs | 12 +--- .../component/coinjoin_progress.rs | 1 - .../src/ui/model_mercury/component/frame.rs | 61 +++++++------------ .../embed/rust/src/ui/model_mercury/layout.rs | 36 +++-------- .../rust/src/ui/model_mercury/theme/mod.rs | 14 ++--- 6 files changed, 50 insertions(+), 84 deletions(-) diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 33c0d4f613..2faac8a2a5 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -37,11 +37,21 @@ impl<'a> Label<'a> { Self::new(text, Alignment::Center, style) } + pub fn top_aligned(mut self) -> Self { + self.vertical = Alignment::Start; + self + } + pub fn vertically_centered(mut self) -> Self { self.vertical = Alignment::Center; self } + pub fn bottom_aligned(mut self) -> Self { + self.vertical = Alignment::End; + self + } + pub fn text(&self) -> &TString<'a> { &self.text } diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index 76dd85b139..cd2a661bd2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -60,21 +60,15 @@ where } let result = Self { qr_code: Frame::left_aligned( - theme::label_title(), qr_title, Qr::new(qr_address, case_sensitive)?.with_border(7), ) .with_cancel_button() .with_border(theme::borders_horizontal_scroll()), - details: Frame::left_aligned( - theme::label_title(), - details_title, - para.into_paragraphs(), - ) - .with_cancel_button() - .with_border(theme::borders_horizontal_scroll()), + details: Frame::left_aligned(details_title, para.into_paragraphs()) + .with_cancel_button() + .with_border(theme::borders_horizontal_scroll()), xpub_view: Frame::left_aligned( - theme::label_title(), " \n ".into(), Paragraph::new(&theme::TEXT_MONO, "".into()).into_paragraphs(), ) diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs index 9b6b194947..91e3778cfd 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -71,7 +71,6 @@ where value: 0, indeterminate, content: Frame::centered( - theme::label_title(), TR::coinjoin__title_progress.try_into()?, Split::bottom(RECTANGLE_HEIGHT, 0, Empty, inner), ) diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 34cbc3feec..0e33d24f98 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -13,6 +13,8 @@ use crate::{ use super::{Button, ButtonMsg, CancelInfoConfirmMsg}; +const TITLE_HEIGHT: i16 = 42; + pub struct Frame<T> { border: Insets, title: Child<Label<'static>>, @@ -31,14 +33,10 @@ impl<T> Frame<T> where T: Component, { - pub fn new( - style: TextStyle, - alignment: Alignment, - title: TString<'static>, - content: T, - ) -> Self { + pub fn new(alignment: Alignment, title: TString<'static>, content: T) -> Self { + let style: TextStyle = theme::label_title_main(); Self { - title: Child::new(Label::new(title, alignment, style)), + title: Child::new(Label::new(title, alignment, style).vertically_centered()), subtitle: None, border: theme::borders(), button: None, @@ -48,15 +46,15 @@ where } pub fn left_aligned(style: TextStyle, title: TString<'static>, content: T) -> Self { - Self::new(style, Alignment::Start, title, content) + Self::new(Alignment::Start, title, content) } pub fn right_aligned(style: TextStyle, title: TString<'static>, content: T) -> Self { - Self::new(style, Alignment::End, title, content) + Self::new(Alignment::End, title, content) } pub fn centered(style: TextStyle, title: TString<'static>, content: T) -> Self { - Self::new(style, Alignment::Center, title, content) + Self::new(Alignment::Center, title, content) } pub fn with_border(mut self, border: Insets) -> Self { @@ -64,7 +62,9 @@ where self } - pub fn with_subtitle(mut self, style: TextStyle, subtitle: TString<'static>) -> Self { + pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { + let style = theme::label_title_sub(); + self.title = Child::new(self.title.into_inner().top_aligned()); self.subtitle = Some(Child::new(Label::new( subtitle, self.title.inner().alignment(), @@ -93,7 +93,7 @@ where } pub fn with_info_button(self) -> Self { - self.with_button(theme::ICON_CORNER_INFO, CancelInfoConfirmMsg::Info) + self.with_button(theme::ICON_MENU, CancelInfoConfirmMsg::Info) } pub fn inner(&self) -> &T { @@ -126,38 +126,23 @@ where type Msg = FrameMsg<T::Msg>; fn place(&mut self, bounds: Rect) -> Rect { - const TITLE_SPACE: i16 = theme::BUTTON_SPACING; + let (mut header_area, content_area) = bounds.split_top(TITLE_HEIGHT); + let content_area = content_area.inset(Insets::right(TITLE_SPACE)); - let bounds = bounds.inset(self.border); - // Allowing for little longer titles to fit in - const TITLE_EXTRA_SPACE: Insets = Insets::right(2); if let Some(b) = &mut self.button { - let button_side = theme::CORNER_BUTTON_SIDE; - let (header_area, button_area) = bounds.split_right(button_side); - let (button_area, _) = button_area.split_top(button_side); + let (rest, button_area) = header_area.split_right(TITLE_HEIGHT); + header_area = rest; b.place(button_area); - let title_area = self.title.place(header_area.outset(TITLE_EXTRA_SPACE)); + } + + if self.subtitle.is_some() { + let title_area = self.title.place(header_area); let remaining = header_area.inset(Insets::top(title_area.height())); - let subtitle_area = self.subtitle.place(remaining); - - let title_height = title_area.height() + subtitle_area.height(); - let header_height = title_height.max(button_side); - if title_height < button_side { - self.title - .place(title_area.translate(Offset::y((button_side - title_height) / 2))); - self.subtitle - .place(subtitle_area.translate(Offset::y((button_side - title_height) / 2))); - } - let content_area = bounds.inset(Insets::top(header_height + TITLE_SPACE)); - self.content.place(content_area); + let _subtitle_area = self.subtitle.place(remaining); } else { - let title_area = self.title.place(bounds.outset(TITLE_EXTRA_SPACE)); - let remaining = bounds.inset(Insets::top(title_area.height())); - let subtitle_area = self.subtitle.place(remaining); - let remaining = remaining.inset(Insets::top(subtitle_area.height())); - let content_area = remaining.inset(Insets::top(TITLE_SPACE)); - self.content.place(content_area); + self.title.place(header_area); } + self.content.place(content_area); bounds } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 2d18aa1cde..4dc112d6f5 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -411,7 +411,7 @@ extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut M if hold && hold_danger { page = page.with_confirm_style(theme::button_danger()) } - let obj = LayoutObj::new(Frame::left_aligned(theme::label_title(), title, page))?; + let obj = LayoutObj::new(Frame::left_aligned(title, page))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -442,7 +442,6 @@ extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *m } let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), title, ButtonPage::new(FormattedText::new(ops).vertically_centered(), theme::BG) .with_cancel_confirm(None, verb), @@ -540,9 +539,9 @@ impl ConfirmBlobParams { if self.hold { page = page.with_hold()? } - let mut frame = Frame::left_aligned(theme::label_title(), self.title, page); + let mut frame = Frame::left_aligned(self.title, page); if let Some(subtitle) = self.subtitle { - frame = frame.with_subtitle(theme::label_subtitle(), subtitle); + frame = frame.with_subtitle(subtitle); } if self.info_button { frame = frame.with_info_button(); @@ -608,7 +607,6 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut let obj = LayoutObj::new( Frame::left_aligned( - theme::label_title(), title, ButtonPage::new(paragraphs, theme::BG) .with_swipe_left() @@ -639,7 +637,7 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) .with_cancel_confirm(None, Some(TR::buttons__confirm.try_into()?)) }; - let obj = LayoutObj::new(Frame::left_aligned(theme::label_title(), title, page))?; + let obj = LayoutObj::new(Frame::left_aligned(title, page))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -673,7 +671,6 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m let tr_change: StrBuffer = TR::buttons__change.try_into()?; let buttons = Button::cancel_confirm_text(None, Some(tr_change)); let obj = LayoutObj::new(Frame::centered( - theme::label_title(), title, Dialog::new(painter::jpeg_painter(buffer_func, size, 1), buttons), ))?; @@ -700,11 +697,7 @@ extern "C" fn new_confirm_reset_device(n_args: usize, args: *const Obj, kwargs: Button::with_text(button).styled(theme::button_confirm()), true, ); - let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), - title, - Dialog::new(paragraphs, buttons), - ))?; + let obj = LayoutObj::new(Frame::left_aligned(title, Dialog::new(paragraphs, buttons)))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -773,7 +766,6 @@ extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: let obj = LayoutObj::new( Frame::left_aligned( - theme::label_title(), title, SimplePage::new(paragraphs.into_paragraphs(), axis, theme::BG) .with_swipe_right_to_go_back(), @@ -838,7 +830,7 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma if info_button { page = page.with_swipe_left(); } - let mut frame = Frame::left_aligned(theme::label_title(), title, page); + let mut frame = Frame::left_aligned(title, page); if info_button { frame = frame.with_info_button(); } @@ -872,7 +864,6 @@ extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: let tr_title: StrBuffer = TR::modify_amount__title.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), tr_title, ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG) .with_cancel_confirm(Some("^".into()), Some(TR::buttons__continue.try_into()?)), @@ -916,7 +907,6 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m let obj = LayoutObj::new( Frame::left_aligned( - theme::label_title(), title, ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG) .with_hold()? @@ -1039,7 +1029,7 @@ extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map let fido_page = FidoConfirm::new(app_name, get_page, page_count, icon, controls); - let obj = LayoutObj::new(Frame::centered(theme::label_title(), title, fido_page))?; + let obj = LayoutObj::new(Frame::centered(title, fido_page))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1136,7 +1126,6 @@ extern "C" fn new_show_simple(n_args: usize, args: *const Obj, kwargs: *mut Map) let obj = if let Some(t) = title { LayoutObj::new(Frame::left_aligned( - theme::label_title(), t, Dialog::new( Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]), @@ -1197,7 +1186,6 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu let buttons = Button::cancel_info_confirm(button, info_button); let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), title, Dialog::new(paragraphs.into_paragraphs(), buttons), ))?; @@ -1222,7 +1210,6 @@ extern "C" fn new_confirm_more(n_args: usize, args: *const Obj, kwargs: *mut Map } let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), title, ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) .with_cancel_confirm(None, Some(button)) @@ -1251,7 +1238,6 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut let tr_title: StrBuffer = TR::coinjoin__title.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), tr_title, ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG).with_hold()?, ))?; @@ -1326,7 +1312,6 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) let paragraphs = Paragraphs::new([Paragraph::new(&theme::TEXT_DEMIBOLD, description)]); let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), title, Dialog::new(paragraphs, Button::select_word(words)), ))?; @@ -1347,7 +1332,6 @@ extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut } let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), title, ButtonPage::<_, StrBuffer>::new(paragraphs.into_paragraphs(), theme::BG) .with_hold()? @@ -1377,7 +1361,6 @@ extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut M }; let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), title, NumberInputDialog::new(min_count, max_count, count, callback)?, ))?; @@ -1405,7 +1388,6 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M } let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), title, Dialog::new( Checklist::from_paragraphs( @@ -1451,7 +1433,6 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let obj = if info_button { LayoutObj::new(Frame::left_aligned( - theme::label_title(), notification, Dialog::new( paragraphs, @@ -1463,7 +1444,6 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut ))? } else { LayoutObj::new(Frame::left_aligned( - theme::label_title(), notification, Dialog::new(paragraphs, Button::cancel_confirm_text(None, Some(button))), ))? @@ -1488,7 +1468,6 @@ extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mu )); let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), title, Dialog::new(paragraphs, SelectWordCount::new()), ))?; @@ -1533,7 +1512,6 @@ extern "C" fn new_show_remaining_shares(n_args: usize, args: *const Obj, kwargs: let tr_title: StrBuffer = TR::recovery__title_remaining_shares.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( - theme::label_title(), tr_title, ButtonPage::<_, StrBuffer>::new(paragraphs.into_paragraphs(), theme::BG) .with_cancel_confirm(None, Some(TR::buttons__continue.try_into()?)) diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 56fd5f5607..557d4aa418 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -154,9 +154,9 @@ pub const fn button_moreinfo() -> ButtonStyleSheet { text_color: FG, button_color: BG, background_color: BG, - border_color: GREY_DARK, - border_radius: RADIUS, - border_width: 2, + border_color: BG, + border_radius: 0, + border_width: 1, }, active: &ButtonStyle { font: Font::BOLD, @@ -172,9 +172,9 @@ pub const fn button_moreinfo() -> ButtonStyleSheet { text_color: GREY_LIGHT, button_color: BG, background_color: BG, - border_color: GREY_DARK, - border_radius: RADIUS, - border_width: 2, + border_color: BG, + border_radius: 0, + border_width: 1, }, } } @@ -231,5 +231,5 @@ pub const RESULT_FOOTER_START: i16 = 171; /// | 6 | /// +----------+ pub const fn borders() -> Insets { - Insets::new(6, 6, 6, 6) + Insets::new(0, 0, 0, 0) } From fa4de43368f1e29adf2eaf0b62e4901c9f21aab7 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 7 Mar 2024 10:56:49 +0100 Subject: [PATCH 108/626] feat(core): add rough TextStyles for T3T1 --- .../rust/src/ui/model_mercury/theme/mod.rs | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 557d4aa418..fd6e556ffc 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -209,15 +209,55 @@ pub const fn loader_lock_icon() -> LoaderStyleSheet { } } -pub const TEXT_NORMAL: TextStyle = TextStyle::new(Font::NORMAL, FG, BG, GREY_LIGHT, GREY_LIGHT); -pub const TEXT_DEMIBOLD: TextStyle = TextStyle::new(Font::DEMIBOLD, FG, BG, GREY_LIGHT, GREY_LIGHT); -pub const TEXT_BOLD: TextStyle = TextStyle::new(Font::BOLD, FG, BG, GREY_LIGHT, GREY_LIGHT); -pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, FG, BG, GREY_LIGHT, GREY_LIGHT) +pub const TEXT_SUPER: TextStyle = TextStyle::new(Font::BIG, GREY_EXTRA_LIGHT, BG, GREY, GREY); +pub const TEXT_MAIN: TextStyle = TextStyle::new(Font::NORMAL, GREY_EXTRA_LIGHT, BG, GREY, GREY); +pub const TEXT_SUB: TextStyle = TextStyle::new(Font::SUB, GREY, BG, GREY, GREY); +pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, GREY_EXTRA_LIGHT, BG, GREY, GREY) .with_line_breaking(LineBreaking::BreakWordsNoHyphen) .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) .with_ellipsis_icon(ICON_PAGE_NEXT, 0) .with_prev_page_icon(ICON_PAGE_PREV, 0); +// TODO: remove TextStyles below when ui-t3t1 done +pub const TEXT_NORMAL: TextStyle = TextStyle::new(Font::NORMAL, FG, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_DEMIBOLD: TextStyle = TextStyle::new(Font::DEMIBOLD, FG, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_BOLD: TextStyle = TextStyle::new(Font::BOLD, FG, BG, GREY_LIGHT, GREY_LIGHT); + +/// Decide the text style of chunkified text according to its length. +pub fn get_chunkified_text_style(character_length: usize) -> &'static TextStyle { + // Longer addresses have smaller x_offset so they fit even with scrollbar + // (as they will be shown on more than one page) + const FITS_ON_ONE_PAGE: usize = 16 * 4; + if character_length <= FITS_ON_ONE_PAGE { + &TEXT_MONO_ADDRESS_CHUNKS + } else { + &TEXT_MONO_ADDRESS_CHUNKS_SMALLER_X_OFFSET + } +} + +/// Convert Python-side numeric id to a `TextStyle`. +pub fn textstyle_number(num: i32) -> &'static TextStyle { + let font = Font::from_i32(-num); + match font { + Some(Font::DEMIBOLD) => &TEXT_DEMIBOLD, + Some(Font::BOLD) => &TEXT_BOLD, + Some(Font::MONO) => &TEXT_MONO, + _ => &TEXT_NORMAL, + } +} + +pub const TEXT_NORMAL_OFF_WHITE: TextStyle = + TextStyle::new(Font::NORMAL, OFF_WHITE, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_CHECKLIST_DEFAULT: TextStyle = + TextStyle::new(Font::NORMAL, GREY_LIGHT, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_CHECKLIST_SELECTED: TextStyle = + TextStyle::new(Font::NORMAL, FG, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_CHECKLIST_DONE: TextStyle = + TextStyle::new(Font::NORMAL, GREEN_DARK, BG, GREY_LIGHT, GREY_LIGHT); + +pub const CONTENT_BORDER: i16 = 0; +pub const BUTTON_HEIGHT: i16 = 50; +pub const BUTTON_WIDTH: i16 = 56; pub const BUTTON_SPACING: i16 = 6; pub const CORNER_BUTTON_SIDE: i16 = 44; pub const RESULT_PADDING: i16 = 6; From 55067a6d4085aab449c56d969810604780364125 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 12 Mar 2024 20:15:20 +0100 Subject: [PATCH 109/626] fix(core): rebase on current drawlib Port new render function signature to model_mercury. Fix some rebase errors. Also port recent changes from mp <-> rust iface. [no changelog] --- .../component/address_details.rs | 2 +- .../component/coinjoin_progress.rs | 15 +- .../src/ui/model_mercury/component/dialog.rs | 4 +- .../src/ui/model_mercury/component/fido.rs | 57 +++-- .../model_mercury/component/homescreen/mod.rs | 10 +- .../component/homescreen/render.rs | 12 +- .../model_mercury/component/keyboard/bip39.rs | 2 +- .../component/keyboard/common.rs | 4 +- .../component/keyboard/mnemonic.rs | 4 +- .../component/keyboard/passphrase.rs | 20 +- .../model_mercury/component/keyboard/pin.rs | 12 +- .../component/keyboard/slip39.rs | 2 +- .../component/keyboard/word_count.rs | 4 +- .../model_mercury/component/number_input.rs | 4 +- .../src/ui/model_mercury/component/page.rs | 10 +- .../ui/model_mercury/component/progress.rs | 2 +- .../src/ui/model_mercury/component/scroll.rs | 2 +- .../ui/model_mercury/component/simple_page.rs | 9 +- .../src/ui/model_mercury/component/swipe.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 198 ++++++++++++------ .../rust/src/ui/shape/model/model_mercury.rs | 13 +- core/mocks/generated/trezorui2.pyi | 144 +++++++++---- .../src/trezor/ui/layouts/mercury/__init__.py | 13 +- .../device_tests/bitcoin/test_signmessage.py | 1 + tests/input_flows.py | 2 +- 25 files changed, 343 insertions(+), 205 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index cd2a661bd2..01c08df034 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -182,7 +182,7 @@ where } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { match self.current_page { 0 => self.qr_code.render(target), 1 => self.details.render(target), diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs index 91e3778cfd..99bf914ce7 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -8,8 +8,7 @@ use crate::{ ui::{ canvas::algo::PI4, component::{ - base::Never, painter, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, - Split, + base::Never, Bar, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, Split, }, constant, display::loader::{loader_circular_uncompress, LoaderDimensions}, @@ -55,7 +54,7 @@ where style, ) .vertically_centered(); - let bg = painter::rect_painter(style.background_color, theme::BG); + let bg = Bar::new(style.background_color, theme::BG, 2); let inner = (bg, label); CoinJoinProgress::with_background(text, inner, indeterminate) } @@ -133,7 +132,7 @@ where self.label.paint(); } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); let center = constant::screen().center() + Offset::y(LOADER_OFFSET); @@ -141,10 +140,10 @@ where let background_color = theme::BG; let inactive_color = background_color.blend(active_color, 85); - let start = (self.value - 100) % 1000; - let end = (self.value + 100) % 1000; - let start = ((start as i32 * 8 * PI4 as i32) / 1000) as i16; - let end = ((end as i32 * 8 * PI4 as i32) / 1000) as i16; + let start = (self.value as i32 - 100) % 1000; + let end = (self.value as i32 + 100) % 1000; + let start = ((start * 8 * PI4 as i32) / 1000) as i16; + let end = ((end * 8 * PI4 as i32) / 1000) as i16; shape::Circle::new(center, LOADER_OUTER) .with_bg(inactive_color) diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index 6f7fda94b2..49c344ca85 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -72,7 +72,7 @@ where self.controls.paint(); } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); self.controls.render(target); } @@ -204,7 +204,7 @@ where self.controls.paint(); } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.image.render(target); self.paragraphs.render(target); self.controls.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index 0f9755ea2a..77450e9b78 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -12,6 +12,7 @@ use crate::ui::{ }; use super::CancelConfirmMsg; +use core::cell::Cell; const ICON_HEIGHT: i16 = 70; const SCROLLBAR_INSET_TOP: i16 = 5; @@ -32,7 +33,7 @@ pub struct FidoConfirm<F: Fn(usize) -> T, T, U> { /// Function/closure that will return appropriate page on demand. get_account: F, scrollbar: ScrollBar, - fade: bool, + fade: Cell<bool>, controls: U, } @@ -61,14 +62,28 @@ where page_swipe.allow_right = scrollbar.has_previous_page(); page_swipe.allow_left = scrollbar.has_next_page(); + // NOTE: This is an ugly hotfix for the erroneous behavior of + // TextLayout used in the account_name Label. In this + // particular case, TextLayout calculates the wrong height of + // fitted text that's higher than the TextLayout bound itself. + // + // The following two lines should be swapped when the problem with + // TextLayout is fixed. + // + // See also, continuation of this hotfix in the place() function. + + // let current_account = get_account(scrollbar.active_page); + let current_account = "".into(); + + Self { app_name: Label::centered(app_name, theme::TEXT_DEMIBOLD), - account_name: Label::centered("".into(), theme::TEXT_DEMIBOLD), + account_name: Label::centered(current_account, theme::TEXT_DEMIBOLD), page_swipe, icon: Child::new(Image::new(icon_data)), get_account, scrollbar, - fade: false, + fade: Cell::new(false), controls, } } @@ -89,11 +104,14 @@ where self.page_swipe.allow_right = self.scrollbar.has_previous_page(); self.page_swipe.allow_left = self.scrollbar.has_next_page(); + let current_account = (self.get_account)(self.active_page()); + self.account_name.set_text(current_account); + // Redraw the page. ctx.request_paint(); // Reset backlight to normal level on next paint. - self.fade = true; + self.fade.set(true); } fn active_page(&self) -> usize { @@ -141,6 +159,11 @@ where self.app_name.place(app_name_area); self.account_name.place(account_name_area); + // NOTE: This is a hotfix used due to the erroneous behavior of TextLayout. + // This line should be removed when the problem with TextLayout is fixed. + // See also the code for FidoConfirm::new(). + self.account_name.set_text((self.get_account)(self.scrollbar.active_page)); + bounds } @@ -168,8 +191,6 @@ where self.scrollbar.paint(); } - let current_account = (self.get_account)(self.active_page()); - // Erasing the old text content before writing the new one. let account_name_area = self.account_name.area(); let real_area = account_name_area @@ -179,21 +200,19 @@ where // Account name is optional. // Showing it only if it differs from app name. // (Dummy requests usually have some text as both app_name and account_name.) - if !current_account.as_ref().is_empty() - && current_account.as_ref() != self.app_name.text().as_ref() - { - self.account_name.set_text(current_account); + let account_name = self.account_name.text().as_ref(); + let app_name = self.app_name.text().as_ref(); + if !account_name.is_empty() && account_name != app_name { self.account_name.paint(); } - if self.fade { - self.fade = false; + if self.fade.take() { // Note that this is blocking and takes some time. display::fade_backlight(theme::BACKLIGHT_NORMAL); } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.icon.render(target); self.controls.render(target); self.app_name.render(target); @@ -202,8 +221,6 @@ where self.scrollbar.render(target); } - let current_account = (self.get_account)(self.active_page()); - // Erasing the old text content before writing the new one. let account_name_area = self.account_name.area(); let real_area = account_name_area @@ -213,15 +230,13 @@ where // Account name is optional. // Showing it only if it differs from app name. // (Dummy requests usually have some text as both app_name and account_name.) - if !current_account.as_ref().is_empty() - && current_account.as_ref() != self.app_name.text().as_ref() - { - self.account_name.set_text(current_account); + let account_name = self.account_name.text().as_ref(); + let app_name = self.app_name.text().as_ref(); + if !account_name.is_empty() && account_name != app_name { self.account_name.render(target); } - if self.fade { - self.fade = false; + if self.fade.take() { // Note that this is blocking and takes some time. display::fade_backlight(theme::BACKLIGHT_NORMAL); } diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index 51b9947cba..13765bba2d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -123,7 +123,7 @@ impl Homescreen { self.loader.paint() } - fn render_loader(&mut self, target: &mut impl Renderer) { + fn render_loader<'s>(&'s self, target: &mut impl Renderer<'s>) { TR::progress__locking_device.map_translated(|t| { shape::Text::new(TOP_CENTER + Offset::y(HOLD_Y), t) .with_align(Alignment::Center) @@ -267,13 +267,13 @@ impl Component for Homescreen { } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { let img_data = match self.custom_image { - Some(ref img) => IMAGE_HOMESCREEN, //img.as_ref(), !@# solve lifetime problem + Some(ref img) => img.as_ref(), None => IMAGE_HOMESCREEN, }; @@ -458,9 +458,9 @@ impl Component for Lockscreen { } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let img_data = match self.custom_image { - Some(ref img) => IMAGE_HOMESCREEN, //img.as_ref(), !@# solve lifetime problem + Some(ref img) => img.as_ref(), None => IMAGE_HOMESCREEN, }; diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs index 9480b4c15f..897c9cd9e4 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs @@ -504,12 +504,12 @@ impl BlurringContext { fn vertical_avg(&mut self) { let lines = &mut self.mem.buffer[0..DECOMP_LINES]; for i in 0..HOMESCREEN_IMAGE_WIDTH as usize { - self.totals.buffer[RED_IDX][i] += - lines[self.add_idx][RED_IDX][i] - lines[self.rem_idx][RED_IDX][i]; - self.totals.buffer[GREEN_IDX][i] += - lines[self.add_idx][GREEN_IDX][i] - lines[self.rem_idx][GREEN_IDX][i]; - self.totals.buffer[BLUE_IDX][i] += - lines[self.add_idx][BLUE_IDX][i] - lines[self.rem_idx][BLUE_IDX][i]; + self.totals.buffer[RED_IDX][i] += lines[self.add_idx][RED_IDX][i]; + self.totals.buffer[GREEN_IDX][i] += lines[self.add_idx][GREEN_IDX][i]; + self.totals.buffer[BLUE_IDX][i] += lines[self.add_idx][BLUE_IDX][i]; + self.totals.buffer[RED_IDX][i] -= lines[self.rem_idx][RED_IDX][i]; + self.totals.buffer[GREEN_IDX][i] -= lines[self.rem_idx][GREEN_IDX][i]; + self.totals.buffer[BLUE_IDX][i] -= lines[self.rem_idx][BLUE_IDX][i]; } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index e36db3c1bb..d4716494c7 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -156,7 +156,7 @@ impl Component for Bip39Input { } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs index 619f9120b2..9868770bc4 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs @@ -131,8 +131,8 @@ pub fn paint_pending_marker(text_baseline: Point, text: &str, font: Font, color: } /// Create a visible "underscoring" of the last letter of a text. -pub fn render_pending_marker( - target: &mut impl Renderer, +pub fn render_pending_marker<'s>( + target: &mut impl Renderer<'s>, text_baseline: Point, text: &str, font: Font, diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index d31a6b990b..ed8bd2c84c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -183,12 +183,12 @@ where } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.prompt.render(target); self.input.render(target); self.back.render(target); - for btn in &mut self.keys { + for btn in &self.keys { btn.render(target); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 71f1ecb39f..bbb9f55b3f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -15,6 +15,8 @@ use crate::ui::{ util::long_line_content_with_ellipsis, }; +use core::cell::Cell; + pub enum PassphraseKeyboardMsg { Confirmed, Cancelled, @@ -27,7 +29,7 @@ pub struct PassphraseKeyboard { confirm: Child<Button<&'static str>>, keys: [Child<Button<&'static str>>; KEY_COUNT], scrollbar: ScrollBar, - fade: bool, + fade: Cell<bool>, } const STARTING_PAGE: usize = 1; @@ -65,7 +67,7 @@ impl PassphraseKeyboard { Child::new(Button::new(Self::key_content(text)).styled(theme::button_pin())) }), scrollbar: ScrollBar::horizontal(), - fade: false, + fade: Cell::new(false), } } @@ -101,7 +103,7 @@ impl PassphraseKeyboard { // Update buttons. self.replace_button_content(ctx, key_page); // Reset backlight to normal level on next paint. - self.fade = true; + self.fade.set(true); // So that swipe does not visually enable the input buttons when max length // reached self.update_input_btns_state(ctx); @@ -290,23 +292,21 @@ impl Component for PassphraseKeyboard { for btn in &mut self.keys { btn.paint(); } - if self.fade { - self.fade = false; + if self.fade.take() { // Note that this is blocking and takes some time. display::fade_backlight(theme::BACKLIGHT_NORMAL); } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.scrollbar.render(target); self.confirm.render(target); self.back.render(target); - for btn in &mut self.keys { + for btn in &self.keys { btn.render(target); } - if self.fade { - self.fade = false; + if self.fade.take() { // Note that this is blocking and takes some time. display::fade_backlight(theme::BACKLIGHT_NORMAL); } @@ -392,7 +392,7 @@ impl Component for Input { } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let style = theme::label_keyboard(); let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index 933e71adc7..d8846a28e0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -269,11 +269,11 @@ where } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.erase_btn.render(target); self.textbox_pad.render(target); if self.textbox.inner().is_empty() { - if let Some(ref mut w) = self.major_warning { + if let Some(ref w) = self.major_warning { w.render(target); } else { self.major_prompt.render(target); @@ -284,7 +284,7 @@ where self.textbox.render(target); } self.confirm_btn.render(target); - for btn in &mut self.digit_btns { + for btn in &self.digit_btns { btn.render(target); } } @@ -389,7 +389,7 @@ impl PinDots { } } - fn render_digits(&self, area: Rect, target: &mut impl Renderer) { + fn render_digits<'s>(&self, area: Rect, target: &mut impl Renderer<'s>) { let center = area.center() + Offset::y(Font::MONO.text_height() / 2); let right = center + Offset::x(Font::MONO.text_width("0") * (MAX_VISIBLE_DOTS as i16) / 2); let digits = self.digits.len(); @@ -454,7 +454,7 @@ impl PinDots { } } - fn render_dots(&self, area: Rect, target: &mut impl Renderer) { + fn render_dots<'s>(&self, area: Rect, target: &mut impl Renderer<'s>) { let mut cursor = self.size().snap(area.center(), Alignment2D::CENTER); let digits = self.digits.len(); @@ -533,7 +533,7 @@ impl Component for PinDots { } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let dot_area = self.area.inset(HEADER_PADDING); self.pad.render(target); if self.display_digits { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index 48fa4303ce..d4d14bfb92 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -187,7 +187,7 @@ impl Component for Slip39Input { } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs index 778fcda99b..a2af6c54ef 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -58,8 +58,8 @@ impl Component for SelectWordCount { } } - fn render(&mut self, target: &mut impl Renderer) { - for btn in self.button.iter_mut() { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + for btn in self.button.iter() { btn.render(target) } } diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index 25ea93e7e4..43aab67cb7 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -124,7 +124,7 @@ where self.confirm_button.paint(); } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.paragraphs_pad.render(target); self.paragraphs.render(target); @@ -240,7 +240,7 @@ impl Component for NumberInput { self.inc.paint(); } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let mut buf = [0u8; 10]; if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs index 30ab3758f8..5fda83a5f2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -18,6 +18,8 @@ use super::{ SwipeDirection, }; +use core::cell::Cell; + /// Allows pagination of inner component. Shows scroll bar, confirm & cancel /// buttons. Optionally handles hold-to-confirm with loader. pub struct ButtonPage<T, U> { @@ -41,7 +43,7 @@ pub struct ButtonPage<T, U> { /// Whether to pass-through right swipe to parent component. swipe_right: bool, /// Fade to given backlight level on next paint(). - fade: Option<u16>, + fade: Cell<Option<u16>>, } impl<T> ButtonPage<T, StrBuffer> @@ -77,7 +79,7 @@ where cancel_from_any_page: false, swipe_left: false, swipe_right: false, - fade: None, + fade: Cell::new(None), } } @@ -157,7 +159,7 @@ where // Swipe has dimmed the screen, so fade back to normal backlight after the next // paint. - self.fade = Some(theme::BACKLIGHT_NORMAL); + self.fade.set(Some(theme::BACKLIGHT_NORMAL)); } fn is_cancel_visible(&self) -> bool { @@ -413,7 +415,7 @@ where } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); match &self.loader { Some(l) if l.is_animating() => self.loader.render(target), diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index 8b7f64c19a..2cf5d92093 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -123,7 +123,7 @@ where self.description.paint(); } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.title.render(target); let center = constant::screen().center() + Offset::y(self.loader_y_offset); diff --git a/core/embed/rust/src/ui/model_mercury/component/scroll.rs b/core/embed/rust/src/ui/model_mercury/component/scroll.rs index fd1c641b0f..1ea96fd960 100644 --- a/core/embed/rust/src/ui/model_mercury/component/scroll.rs +++ b/core/embed/rust/src/ui/model_mercury/component/scroll.rs @@ -124,7 +124,7 @@ impl Component for ScrollBar { } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { fn dotsize(distance: usize, nhidden: usize) -> Icon { match (nhidden.saturating_sub(distance)).min(2 - distance) { 0 => theme::DOT_INACTIVE, diff --git a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs index 556ec0deef..160c049c54 100644 --- a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs @@ -6,6 +6,7 @@ use crate::ui::{ }; use super::{theme, ScrollBar, Swipe, SwipeDirection}; +use core::cell::Cell; const SCROLLBAR_HEIGHT: i16 = 18; const SCROLLBAR_BORDER: i16 = 4; @@ -17,7 +18,7 @@ pub struct SimplePage<T> { scrollbar: ScrollBar, axis: Axis, swipe_right_to_go_back: bool, - fade: Option<u16>, + fade: Cell<Option<u16>>, } impl<T> SimplePage<T> @@ -33,7 +34,7 @@ where scrollbar: ScrollBar::new(axis), axis, swipe_right_to_go_back: false, - fade: None, + fade: Cell::new(None), } } @@ -80,7 +81,7 @@ where // Swipe has dimmed the screen, so fade back to normal backlight after the next // paint. - self.fade = Some(theme::BACKLIGHT_NORMAL); + self.fade.set(Some(theme::BACKLIGHT_NORMAL)); } fn is_horizontal(&self) -> bool { @@ -165,7 +166,7 @@ where } } - fn render(&mut self, target: &mut impl Renderer) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.content.render(target); if self.scrollbar.has_pages() { diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe.rs b/core/embed/rust/src/ui/model_mercury/component/swipe.rs index d8217a1b96..b4cab1d2ef 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe.rs @@ -161,5 +161,5 @@ impl Component for Swipe { fn paint(&mut self) {} - fn render(&mut self, _target: &mut impl Renderer) {} + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 4dc112d6f5..a2733bb83c 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -21,8 +21,8 @@ use crate::{ base::ComponentExt, connect::Connect, image::BlendedImage, + jpeg::{ImageBuffer, Jpeg}, paginated::{PageMsg, Paginate}, - painter, placed::GridPlaced, text::{ op::OpTextLayout, @@ -211,10 +211,7 @@ where } } -impl<F> ComponentMsgObj for painter::Painter<F> -where - F: FnMut(geometry::Rect), -{ +impl ComponentMsgObj for Jpeg { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() } @@ -646,33 +643,25 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let data: Obj = kwargs.get(Qstr::MP_QSTR_image)?; - - // Layout needs to hold the Obj to play nice with GC. Obj is resolved to &[u8] - // in every paint pass. - let buffer_func = move || { - // SAFETY: We expect no existing mutable reference. Resulting reference is - // discarded before returning to micropython. - let buffer = unsafe { unwrap!(get_buffer(data)) }; - // Incoming data may be empty, meaning we should display default homescreen - // image. - if buffer.is_empty() { - theme::IMAGE_HOMESCREEN - } else { - buffer - } - }; + let image: Obj = kwargs.get(Qstr::MP_QSTR_image)?; + + let mut jpeg = unwrap!(ImageBuffer::from_object(image)); + + if jpeg.is_empty() { + // Incoming data may be empty, meaning we should + // display default homescreen image. + jpeg = ImageBuffer::from_slice(theme::IMAGE_HOMESCREEN); + } - let size = match jpeg_info(buffer_func()) { - Some(info) => info.0, - _ => return Err(value_error!("Invalid image.")), + if let None = jpeg_info(jpeg.data()) { + return Err(value_error!("Invalid image.")); }; let tr_change: StrBuffer = TR::buttons__change.try_into()?; let buttons = Button::cancel_confirm_text(None, Some(tr_change)); let obj = LayoutObj::new(Frame::centered( title, - Dialog::new(painter::jpeg_painter(buffer_func, size, 1), buttons), + Dialog::new(Jpeg::new(jpeg, 1), buttons), ))?; Ok(obj.into()) }; @@ -1662,15 +1651,86 @@ extern "C" fn new_show_wait_text(message: Obj) -> Obj { #[no_mangle] pub static mp_module_trezorui2: Module = obj_module! { + /// from trezor import utils + /// + /// T = TypeVar("T") + /// + /// class LayoutObj(Generic[T]): + /// """Representation of a Rust-based layout object. + /// see `trezor::ui::layout::obj::LayoutObj`. + /// """ + /// + /// def attach_timer_fn(self, fn: Callable[[int, int], None]) -> None: + /// """Attach a timer setter function. + /// + /// The layout object can call the timer setter with two arguments, + /// `token` and `deadline`. When `deadline` is reached, the layout object + /// expects a callback to `self.timer(token)`. + /// """ + /// + /// if utils.USE_TOUCH: + /// def touch_event(self, event: int, x: int, y: int) -> T | None: + /// """Receive a touch event `event` at coordinates `x`, `y`.""" + /// + /// if utils.USE_BUTTON: + /// def button_event(self, event: int, button: int) -> T | None: + /// """Receive a button event `event` for button `button`.""" + /// + /// def progress_event(self, value: int, description: str) -> T | None: + /// """Receive a progress event.""" + /// + /// def usb_event(self, connected: bool) -> T | None: + /// """Receive a USB connect/disconnect event.""" + /// + /// def timer(self, token: int) -> T | None: + /// """Callback for the timer set by `attach_timer_fn`. + /// + /// This function should be called by the executor after the corresponding + /// deadline is reached. + /// """ + /// + /// def paint(self) -> bool: + /// """Paint the layout object on screen. + /// + /// Will only paint updated parts of the layout as required. + /// Returns True if any painting actually happened. + /// """ + /// + /// def request_complete_repaint(self) -> None: + /// """Request a complete repaint of the screen. + /// + /// Does not repaint the screen, a subsequent call to `paint()` is required. + /// """ + /// + /// if __debug__: + /// def trace(self, tracer: Callable[[str], None]) -> None: + /// """Generate a JSON trace of the layout object. + /// + /// The JSON can be emitted as a sequence of calls to `tracer`, each of + /// which is not necessarily a valid JSON chunk. The caller must + /// reassemble the chunks to get a sensible result. + /// """ + /// + /// def bounds(self) -> None: + /// """Paint bounds of individual components on screen.""" + /// + /// def page_count(self) -> int: + /// """Return the number of pages in the layout object.""" + /// + /// class UiResult: + /// """Result of a UI operation.""" + /// pass + /// + /// mock:global Qstr::MP_QSTR___name__ => Qstr::MP_QSTR_trezorui2.to_obj(), - /// CONFIRMED: object + /// CONFIRMED: UiResult Qstr::MP_QSTR_CONFIRMED => CONFIRMED.as_obj(), - /// CANCELLED: object + /// CANCELLED: UiResult Qstr::MP_QSTR_CANCELLED => CANCELLED.as_obj(), - /// INFO: object + /// INFO: UiResult Qstr::MP_QSTR_INFO => INFO.as_obj(), /// def disable_animation(disable: bool) -> None: @@ -1691,7 +1751,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// hold: bool = False, /// hold_danger: bool = False, /// reverse: bool = False, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm action.""" Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(), @@ -1700,7 +1760,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// items: Iterable[str | tuple[bool, str]], /// verb: str | None = None, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm formatted text that has been pre-split in python. For tuples /// the first component is a bool indicating whether this part is emphasized.""" Qstr::MP_QSTR_confirm_emphasized => obj_fn_kw!(0, new_confirm_emphasized).as_obj(), @@ -1709,7 +1769,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// title: str, /// image: bytes, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm homescreen.""" Qstr::MP_QSTR_confirm_homescreen => obj_fn_kw!(0, new_confirm_homescreen).as_obj(), @@ -1723,7 +1783,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// verb_cancel: str | None = None, /// hold: bool = False, /// chunkify: bool = False, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm byte sequence data.""" Qstr::MP_QSTR_confirm_blob => obj_fn_kw!(0, new_confirm_blob).as_obj(), @@ -1735,7 +1795,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// verb: str | None = "CONFIRM", /// extra: str | None, /// chunkify: bool = False, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm address. Similar to `confirm_blob` but has corner info button /// and allows left swipe which does the same thing as the button.""" Qstr::MP_QSTR_confirm_address => obj_fn_kw!(0, new_confirm_address).as_obj(), @@ -1745,7 +1805,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// items: list[tuple[str | None, str | bytes | None, bool]], /// hold: bool = False, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm list of key-value pairs. The third component in the tuple should be True if /// the value is to be rendered as binary with monospace font, False otherwise.""" Qstr::MP_QSTR_confirm_properties => obj_fn_kw!(0, new_confirm_properties).as_obj(), @@ -1754,7 +1814,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// title: str, /// button: str, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm TOS before device setup.""" Qstr::MP_QSTR_confirm_reset_device => obj_fn_kw!(0, new_confirm_reset_device).as_obj(), @@ -1767,7 +1827,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// account: str | None, /// path: str | None, /// xpubs: list[tuple[str, str]], - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Show address details - QR code, account, path, cosigner xpubs.""" Qstr::MP_QSTR_show_address_details => obj_fn_kw!(0, new_show_address_details).as_obj(), @@ -1777,7 +1837,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// items: Iterable[Tuple[str, str]], /// horizontal: bool = False, /// chunkify: bool = False, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Show metadata for outgoing transaction.""" Qstr::MP_QSTR_show_info_with_cancel => obj_fn_kw!(0, new_show_info_with_cancel).as_obj(), @@ -1793,7 +1853,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// hold: bool = False, /// chunkify: bool = False, /// text_mono: bool = True, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm value. Merge of confirm_total and confirm_output.""" Qstr::MP_QSTR_confirm_value => obj_fn_kw!(0, new_confirm_value).as_obj(), @@ -1803,7 +1863,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// items: Iterable[tuple[str, str]], /// info_button: bool = False, /// cancel_arrow: bool = False, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Transaction summary. Always hold to confirm.""" Qstr::MP_QSTR_confirm_total => obj_fn_kw!(0, new_confirm_total).as_obj(), @@ -1812,7 +1872,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// sign: int, /// amount_change: str, /// amount_new: str, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Decrease or increase output amount.""" Qstr::MP_QSTR_confirm_modify_output => obj_fn_kw!(0, new_confirm_modify_output).as_obj(), @@ -1823,7 +1883,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// user_fee_change: str, /// total_fee_new: str, /// fee_rate_amount: str | None, # ignored - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Decrease or increase transaction fee.""" Qstr::MP_QSTR_confirm_modify_fee => obj_fn_kw!(0, new_confirm_modify_fee).as_obj(), @@ -1833,7 +1893,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// app_name: str, /// icon_name: str | None, /// accounts: list[str | None], - /// ) -> int | object: + /// ) -> LayoutObj[int | UiResult]: /// """FIDO confirmation. /// /// Returns page index in case of confirmation and CANCELLED otherwise. @@ -1847,7 +1907,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: str = "", /// allow_cancel: bool = False, /// time_ms: int = 0, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Error modal. No buttons shown when `button` is empty string.""" Qstr::MP_QSTR_show_error => obj_fn_kw!(0, new_show_error).as_obj(), @@ -1859,7 +1919,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: str = "", /// allow_cancel: bool = False, /// time_ms: int = 0, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Warning modal. No buttons shown when `button` is empty string.""" Qstr::MP_QSTR_show_warning => obj_fn_kw!(0, new_show_warning).as_obj(), @@ -1870,7 +1930,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: str = "", /// allow_cancel: bool = False, /// time_ms: int = 0, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Success modal. No buttons shown when `button` is empty string.""" Qstr::MP_QSTR_show_success => obj_fn_kw!(0, new_show_success).as_obj(), @@ -1881,11 +1941,11 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: str = "", /// allow_cancel: bool = False, /// time_ms: int = 0, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Info modal. No buttons shown when `button` is empty string.""" Qstr::MP_QSTR_show_info => obj_fn_kw!(0, new_show_info).as_obj(), - /// def show_mismatch(*, title: str) -> object: + /// def show_mismatch(*, title: str) -> LayoutObj[UiResult]: /// """Warning modal, receiving address mismatch.""" Qstr::MP_QSTR_show_mismatch => obj_fn_kw!(0, new_show_mismatch).as_obj(), @@ -1894,7 +1954,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str | None, /// description: str = "", /// button: str = "", - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Simple dialog with text and one button.""" Qstr::MP_QSTR_show_simple => obj_fn_kw!(0, new_show_simple).as_obj(), @@ -1904,7 +1964,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// button: str, /// info_button: str, /// items: Iterable[tuple[int, str]], - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm given items but with third button. Always single page /// without scrolling.""" Qstr::MP_QSTR_confirm_with_info => obj_fn_kw!(0, new_confirm_with_info).as_obj(), @@ -1914,7 +1974,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// button: str, /// items: Iterable[tuple[int, str]], - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm long content with the possibility to go back from any page. /// Meant to be used with confirm_with_info.""" Qstr::MP_QSTR_confirm_more => obj_fn_kw!(0, new_confirm_more).as_obj(), @@ -1923,7 +1983,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// max_rounds: str, /// max_feerate: str, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Confirm coinjoin authorization.""" Qstr::MP_QSTR_confirm_coinjoin => obj_fn_kw!(0, new_confirm_coinjoin).as_obj(), @@ -1933,7 +1993,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// subprompt: str, /// allow_cancel: bool = True, /// wrong_pin: bool = False, - /// ) -> str | object: + /// ) -> LayoutObj[str | UiResult]: /// """Request pin on device.""" Qstr::MP_QSTR_request_pin => obj_fn_kw!(0, new_request_pin).as_obj(), @@ -1941,7 +2001,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// prompt: str, /// max_len: int, - /// ) -> str | object: + /// ) -> LayoutObj[str | UiResult]: /// """Passphrase input keyboard.""" Qstr::MP_QSTR_request_passphrase => obj_fn_kw!(0, new_request_passphrase).as_obj(), @@ -1950,7 +2010,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// prompt: str, /// prefill_word: str, /// can_go_back: bool, - /// ) -> str: + /// ) -> LayoutObj[str]: /// """BIP39 word input keyboard.""" Qstr::MP_QSTR_request_bip39 => obj_fn_kw!(0, new_request_bip39).as_obj(), @@ -1959,7 +2019,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// prompt: str, /// prefill_word: str, /// can_go_back: bool, - /// ) -> str: + /// ) -> LayoutObj[str]: /// """SLIP39 word input keyboard.""" Qstr::MP_QSTR_request_slip39 => obj_fn_kw!(0, new_request_slip39).as_obj(), @@ -1968,7 +2028,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// description: str, /// words: Iterable[str], - /// ) -> int: + /// ) -> LayoutObj[int]: /// """Select mnemonic word from three possibilities - seed check after backup. The /// iterable must be of exact size. Returns index in range `0..3`.""" Qstr::MP_QSTR_select_word => obj_fn_kw!(0, new_select_word).as_obj(), @@ -1977,7 +2037,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// title: str, /// pages: Iterable[str], - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Show mnemonic for backup. Expects the words pre-divided into individual pages.""" Qstr::MP_QSTR_show_share_words => obj_fn_kw!(0, new_show_share_words).as_obj(), @@ -1988,7 +2048,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// min_count: int, /// max_count: int, /// description: Callable[[int], str] | None = None, - /// ) -> object: + /// ) -> LayoutObj[tuple[UiResult, int]]: /// """Number input with + and - buttons, description, and info button.""" Qstr::MP_QSTR_request_number => obj_fn_kw!(0, new_request_number).as_obj(), @@ -1998,7 +2058,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// items: Iterable[str], /// active: int, /// button: str, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Checklist of backup steps. Active index is highlighted, previous items have check /// mark next to them.""" Qstr::MP_QSTR_show_checklist => obj_fn_kw!(0, new_show_checklist).as_obj(), @@ -2010,28 +2070,28 @@ pub static mp_module_trezorui2: Module = obj_module! { /// button: str, /// dry_run: bool, /// info_button: bool = False, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Device recovery homescreen.""" Qstr::MP_QSTR_confirm_recovery => obj_fn_kw!(0, new_confirm_recovery).as_obj(), /// def select_word_count( /// *, /// dry_run: bool, - /// ) -> int | str: # TT returns int + /// ) -> LayoutObj[int | str]: # TT returns int /// """Select mnemonic word count from (12, 18, 20, 24, 33).""" Qstr::MP_QSTR_select_word_count => obj_fn_kw!(0, new_select_word_count).as_obj(), /// def show_group_share_success( /// *, /// lines: Iterable[str] - /// ) -> int: + /// ) -> LayoutObj[UiResult]: /// """Shown after successfully finishing a group.""" Qstr::MP_QSTR_show_group_share_success => obj_fn_kw!(0, new_show_group_share_success).as_obj(), /// def show_remaining_shares( /// *, /// pages: Iterable[tuple[str, str]], - /// ) -> int: + /// ) -> LayoutObj[UiResult]: /// """Shows SLIP39 state after info button is pressed on `confirm_recovery`.""" Qstr::MP_QSTR_show_remaining_shares => obj_fn_kw!(0, new_show_remaining_shares).as_obj(), @@ -2040,7 +2100,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// indeterminate: bool = False, /// description: str = "", - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Show progress loader. Please note that the number of lines reserved on screen for /// description is determined at construction time. If you want multiline descriptions /// make sure the initial description has at least that amount of lines.""" @@ -2052,7 +2112,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// indeterminate: bool = False, /// time_ms: int = 0, /// skip_first_paint: bool = False, - /// ) -> object: + /// ) -> LayoutObj[UiResult]: /// """Show progress loader for coinjoin. Returns CANCELLED after a specified time when /// time_ms timeout is passed.""" Qstr::MP_QSTR_show_progress_coinjoin => obj_fn_kw!(0, new_show_progress_coinjoin).as_obj(), @@ -2064,7 +2124,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// notification: str | None, /// notification_level: int = 0, /// skip_first_paint: bool, - /// ) -> CANCELLED: + /// ) -> LayoutObj[UiResult]: /// """Idle homescreen.""" Qstr::MP_QSTR_show_homescreen => obj_fn_kw!(0, new_show_homescreen).as_obj(), @@ -2074,7 +2134,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// bootscreen: bool, /// skip_first_paint: bool, /// coinjoin_authorized: bool = False, - /// ) -> CANCELLED: + /// ) -> LayoutObj[UiResult]: /// """Homescreen for locked device.""" Qstr::MP_QSTR_show_lockscreen => obj_fn_kw!(0, new_show_lockscreen).as_obj(), @@ -2082,11 +2142,11 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// description: str, /// fingerprint: str, - /// ) -> None: + /// ) -> LayoutObj[UiResult]: /// """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" Qstr::MP_QSTR_confirm_firmware_update => obj_fn_kw!(0, new_confirm_firmware_update).as_obj(), - /// def show_wait_text(/, message: str) -> None: + /// def show_wait_text(message: str, /) -> LayoutObj[None]: /// """Show single-line text in the middle of the screen.""" Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), }; diff --git a/core/embed/rust/src/ui/shape/model/model_mercury.rs b/core/embed/rust/src/ui/shape/model/model_mercury.rs index 02841b8dd7..bf43291bf3 100644 --- a/core/embed/rust/src/ui/shape/model/model_mercury.rs +++ b/core/embed/rust/src/ui/shape/model/model_mercury.rs @@ -9,9 +9,9 @@ use crate::trezorhal::bitmap::{BitmapView, Dma2d}; use static_alloc::Bump; -pub fn render_on_display<F>(clip: Option<Rect>, bg_color: Option<Color>, mut func: F) +pub fn render_on_display<'a, F>(clip: Option<Rect>, bg_color: Option<Color>, func: F) where - F: FnMut(&mut ProgressiveRenderer<Bump<[u8; 40 * 1024]>, DisplayModelMercury>), + F: FnOnce(&mut ProgressiveRenderer<'_, 'a, Bump<[u8; 40 * 1024]>, DisplayModelMercury>), { #[link_section = ".no_dma_buffers"] static mut BUMP_A: Bump<[u8; 40 * 1024]> = Bump::uninit(); @@ -22,6 +22,9 @@ where let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; { + bump_a.reset(); + bump_b.reset(); + let cache = DrawingCache::new(bump_a, bump_b); let mut canvas = DisplayModelMercury::acquire().unwrap(); @@ -29,14 +32,12 @@ where canvas.set_viewport(Viewport::new(clip)); } - let mut target = ProgressiveRenderer::new(&mut canvas, bg_color, &cache, bump_a, 30); + let mut target = ProgressiveRenderer::new(&mut canvas, bg_color, &cache, bump_a, 45); func(&mut target); target.render(16); } - bump_a.reset(); - bump_b.reset(); } pub struct DisplayModelMercury { @@ -65,7 +66,7 @@ impl BasicCanvas for DisplayModelMercury { self.size } - fn fill_rect(&mut self, r: Rect, color: Color) { + fn fill_rect(&mut self, r: Rect, color: Color, _alpha: u8) { let r = r.translate(self.viewport.origin); Dma2d::wnd565_fill(r, self.viewport.clip, color); } diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 8a0cd98d8f..e2c36a0d1f 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -1,4 +1,60 @@ from typing import * +from trezor import utils +T = TypeVar("T") + + +# rust/src/ui/model_mercury/layout.rs +class LayoutObj(Generic[T]): + """Representation of a Rust-based layout object. + see `trezor::ui::layout::obj::LayoutObj`. + """ + def attach_timer_fn(self, fn: Callable[[int, int], None]) -> None: + """Attach a timer setter function. + The layout object can call the timer setter with two arguments, + `token` and `deadline`. When `deadline` is reached, the layout object + expects a callback to `self.timer(token)`. + """ + if utils.USE_TOUCH: + def touch_event(self, event: int, x: int, y: int) -> T | None: + """Receive a touch event `event` at coordinates `x`, `y`.""" + if utils.USE_BUTTON: + def button_event(self, event: int, button: int) -> T | None: + """Receive a button event `event` for button `button`.""" + def progress_event(self, value: int, description: str) -> T | None: + """Receive a progress event.""" + def usb_event(self, connected: bool) -> T | None: + """Receive a USB connect/disconnect event.""" + def timer(self, token: int) -> T | None: + """Callback for the timer set by `attach_timer_fn`. + This function should be called by the executor after the corresponding + deadline is reached. + """ + def paint(self) -> bool: + """Paint the layout object on screen. + Will only paint updated parts of the layout as required. + Returns True if any painting actually happened. + """ + def request_complete_repaint(self) -> None: + """Request a complete repaint of the screen. + Does not repaint the screen, a subsequent call to `paint()` is required. + """ + if __debug__: + def trace(self, tracer: Callable[[str], None]) -> None: + """Generate a JSON trace of the layout object. + The JSON can be emitted as a sequence of calls to `tracer`, each of + which is not necessarily a valid JSON chunk. The caller must + reassemble the chunks to get a sensible result. + """ + def bounds(self) -> None: + """Paint bounds of individual components on screen.""" + def page_count(self) -> int: + """Return the number of pages in the layout object.""" + + +# rust/src/ui/model_mercury/layout.rs +class UiResult: + """Result of a UI operation.""" + pass CONFIRMED: UiResult CANCELLED: UiResult INFO: UiResult @@ -25,7 +81,7 @@ def confirm_action( hold: bool = False, hold_danger: bool = False, reverse: bool = False, -) -> object: +) -> LayoutObj[UiResult]: """Confirm action.""" @@ -35,7 +91,7 @@ def confirm_emphasized( title: str, items: Iterable[str | tuple[bool, str]], verb: str | None = None, -) -> object: +) -> LayoutObj[UiResult]: """Confirm formatted text that has been pre-split in python. For tuples the first component is a bool indicating whether this part is emphasized.""" @@ -45,7 +101,7 @@ def confirm_homescreen( *, title: str, image: bytes, -) -> object: +) -> LayoutObj[UiResult]: """Confirm homescreen.""" @@ -60,7 +116,7 @@ def confirm_blob( verb_cancel: str | None = None, hold: bool = False, chunkify: bool = False, -) -> object: +) -> LayoutObj[UiResult]: """Confirm byte sequence data.""" @@ -73,7 +129,7 @@ def confirm_address( verb: str | None = "CONFIRM", extra: str | None, chunkify: bool = False, -) -> object: +) -> LayoutObj[UiResult]: """Confirm address. Similar to `confirm_blob` but has corner info button and allows left swipe which does the same thing as the button.""" @@ -84,7 +140,7 @@ def confirm_properties( title: str, items: list[tuple[str | None, str | bytes | None, bool]], hold: bool = False, -) -> object: +) -> LayoutObj[UiResult]: """Confirm list of key-value pairs. The third component in the tuple should be True if the value is to be rendered as binary with monospace font, False otherwise.""" @@ -94,7 +150,7 @@ def confirm_reset_device( *, title: str, button: str, -) -> object: +) -> LayoutObj[UiResult]: """Confirm TOS before device setup.""" @@ -108,7 +164,7 @@ def show_address_details( account: str | None, path: str | None, xpubs: list[tuple[str, str]], -) -> object: +) -> LayoutObj[UiResult]: """Show address details - QR code, account, path, cosigner xpubs.""" @@ -119,7 +175,7 @@ def show_info_with_cancel( items: Iterable[Tuple[str, str]], horizontal: bool = False, chunkify: bool = False, -) -> object: +) -> LayoutObj[UiResult]: """Show metadata for outgoing transaction.""" @@ -136,7 +192,7 @@ def confirm_value( hold: bool = False, chunkify: bool = False, text_mono: bool = True, -) -> object: +) -> LayoutObj[UiResult]: """Confirm value. Merge of confirm_total and confirm_output.""" @@ -147,7 +203,7 @@ def confirm_total( items: Iterable[tuple[str, str]], info_button: bool = False, cancel_arrow: bool = False, -) -> object: +) -> LayoutObj[UiResult]: """Transaction summary. Always hold to confirm.""" @@ -157,7 +213,7 @@ def confirm_modify_output( sign: int, amount_change: str, amount_new: str, -) -> object: +) -> LayoutObj[UiResult]: """Decrease or increase output amount.""" @@ -169,7 +225,7 @@ def confirm_modify_fee( user_fee_change: str, total_fee_new: str, fee_rate_amount: str | None, # ignored -) -> object: +) -> LayoutObj[UiResult]: """Decrease or increase transaction fee.""" @@ -180,7 +236,7 @@ def confirm_fido( app_name: str, icon_name: str | None, accounts: list[str | None], -) -> int | object: +) -> LayoutObj[int | UiResult]: """FIDO confirmation. Returns page index in case of confirmation and CANCELLED otherwise. """ @@ -194,7 +250,7 @@ def show_error( description: str = "", allow_cancel: bool = False, time_ms: int = 0, -) -> object: +) -> LayoutObj[UiResult]: """Error modal. No buttons shown when `button` is empty string.""" @@ -207,7 +263,7 @@ def show_warning( description: str = "", allow_cancel: bool = False, time_ms: int = 0, -) -> object: +) -> LayoutObj[UiResult]: """Warning modal. No buttons shown when `button` is empty string.""" @@ -219,7 +275,7 @@ def show_success( description: str = "", allow_cancel: bool = False, time_ms: int = 0, -) -> object: +) -> LayoutObj[UiResult]: """Success modal. No buttons shown when `button` is empty string.""" @@ -231,12 +287,12 @@ def show_info( description: str = "", allow_cancel: bool = False, time_ms: int = 0, -) -> object: +) -> LayoutObj[UiResult]: """Info modal. No buttons shown when `button` is empty string.""" # rust/src/ui/model_mercury/layout.rs -def show_mismatch(*, title: str) -> object: +def show_mismatch(*, title: str) -> LayoutObj[UiResult]: """Warning modal, receiving address mismatch.""" @@ -246,7 +302,7 @@ def show_simple( title: str | None, description: str = "", button: str = "", -) -> object: +) -> LayoutObj[UiResult]: """Simple dialog with text and one button.""" @@ -257,7 +313,7 @@ def confirm_with_info( button: str, info_button: str, items: Iterable[tuple[int, str]], -) -> object: +) -> LayoutObj[UiResult]: """Confirm given items but with third button. Always single page without scrolling.""" @@ -268,7 +324,7 @@ def confirm_more( title: str, button: str, items: Iterable[tuple[int, str]], -) -> object: +) -> LayoutObj[UiResult]: """Confirm long content with the possibility to go back from any page. Meant to be used with confirm_with_info.""" @@ -278,7 +334,7 @@ def confirm_coinjoin( *, max_rounds: str, max_feerate: str, -) -> object: +) -> LayoutObj[UiResult]: """Confirm coinjoin authorization.""" @@ -289,7 +345,7 @@ def request_pin( subprompt: str, allow_cancel: bool = True, wrong_pin: bool = False, -) -> str | object: +) -> LayoutObj[str | UiResult]: """Request pin on device.""" @@ -298,7 +354,7 @@ def request_passphrase( *, prompt: str, max_len: int, -) -> str | object: +) -> LayoutObj[str | UiResult]: """Passphrase input keyboard.""" @@ -308,7 +364,7 @@ def request_bip39( prompt: str, prefill_word: str, can_go_back: bool, -) -> str: +) -> LayoutObj[str]: """BIP39 word input keyboard.""" @@ -318,7 +374,7 @@ def request_slip39( prompt: str, prefill_word: str, can_go_back: bool, -) -> str: +) -> LayoutObj[str]: """SLIP39 word input keyboard.""" @@ -328,7 +384,7 @@ def select_word( title: str, description: str, words: Iterable[str], -) -> int: +) -> LayoutObj[int]: """Select mnemonic word from three possibilities - seed check after backup. The iterable must be of exact size. Returns index in range `0..3`.""" @@ -338,7 +394,7 @@ def show_share_words( *, title: str, pages: Iterable[str], -) -> object: +) -> LayoutObj[UiResult]: """Show mnemonic for backup. Expects the words pre-divided into individual pages.""" @@ -350,7 +406,7 @@ def request_number( min_count: int, max_count: int, description: Callable[[int], str] | None = None, -) -> object: +) -> LayoutObj[tuple[UiResult, int]]: """Number input with + and - buttons, description, and info button.""" @@ -361,7 +417,7 @@ def show_checklist( items: Iterable[str], active: int, button: str, -) -> object: +) -> LayoutObj[UiResult]: """Checklist of backup steps. Active index is highlighted, previous items have check mark next to them.""" @@ -374,7 +430,7 @@ def confirm_recovery( button: str, dry_run: bool, info_button: bool = False, -) -> object: +) -> LayoutObj[UiResult]: """Device recovery homescreen.""" @@ -382,7 +438,7 @@ def confirm_recovery( def select_word_count( *, dry_run: bool, -) -> int | str: # TT returns int +) -> LayoutObj[int | str]: # TT returns int """Select mnemonic word count from (12, 18, 20, 24, 33).""" @@ -390,7 +446,7 @@ def select_word_count( def show_group_share_success( *, lines: Iterable[str] -) -> int: +) -> LayoutObj[UiResult]: """Shown after successfully finishing a group.""" @@ -398,7 +454,7 @@ def show_group_share_success( def show_remaining_shares( *, pages: Iterable[tuple[str, str]], -) -> int: +) -> LayoutObj[UiResult]: """Shows SLIP39 state after info button is pressed on `confirm_recovery`.""" @@ -408,7 +464,7 @@ def show_progress( title: str, indeterminate: bool = False, description: str = "", -) -> object: +) -> LayoutObj[UiResult]: """Show progress loader. Please note that the number of lines reserved on screen for description is determined at construction time. If you want multiline descriptions make sure the initial description has at least that amount of lines.""" @@ -421,7 +477,7 @@ def show_progress_coinjoin( indeterminate: bool = False, time_ms: int = 0, skip_first_paint: bool = False, -) -> object: +) -> LayoutObj[UiResult]: """Show progress loader for coinjoin. Returns CANCELLED after a specified time when time_ms timeout is passed.""" @@ -434,7 +490,7 @@ def show_homescreen( notification: str | None, notification_level: int = 0, skip_first_paint: bool, -) -> CANCELLED: +) -> LayoutObj[UiResult]: """Idle homescreen.""" @@ -445,7 +501,7 @@ def show_lockscreen( bootscreen: bool, skip_first_paint: bool, coinjoin_authorized: bool = False, -) -> CANCELLED: +) -> LayoutObj[UiResult]: """Homescreen for locked device.""" @@ -454,16 +510,16 @@ def confirm_firmware_update( *, description: str, fingerprint: str, -) -> None: +) -> LayoutObj[UiResult]: """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" # rust/src/ui/model_mercury/layout.rs -def show_wait_text(/, message: str) -> None: +def show_wait_text(message: str, /) -> LayoutObj[None]: """Show single-line text in the middle of the screen.""" -CONFIRMED: object -CANCELLED: object -INFO: object +CONFIRMED: UiResult +CANCELLED: UiResult +INFO: UiResult # rust/src/ui/model_tr/layout.rs diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 134d1d0ea0..636481ea65 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -655,11 +655,16 @@ async def confirm_output( return -async def confirm_payment_request( +async def should_show_payment_request_details( recipient_name: str, amount: str, memos: list[str], ) -> bool: + """Return True if the user wants to show payment request details (they click a + special button) and False when the user wants to continue without showing details. + + Raises ActionCancelled if the user cancels. + """ result = await interact( RustLayout( trezorui2.confirm_with_info( @@ -674,12 +679,10 @@ async def confirm_payment_request( ButtonRequestType.ConfirmOutput, ) - # When user pressed INFO, returning False, which gets processed in higher function - # to differentiate it from CONFIRMED. Raising otherwise. if result is CONFIRMED: - return True - elif result is INFO: return False + elif result is INFO: + return True else: raise ActionCancelled diff --git a/tests/device_tests/bitcoin/test_signmessage.py b/tests/device_tests/bitcoin/test_signmessage.py index 64354759ce..cc8ee41a3c 100644 --- a/tests/device_tests/bitcoin/test_signmessage.py +++ b/tests/device_tests/bitcoin/test_signmessage.py @@ -376,6 +376,7 @@ def test_signmessage_pagination(client: Client, message: str): @pytest.mark.skip_t1b1 @pytest.mark.skip_t2b1(reason="Different screen size") +@pytest.mark.skip_t3t1(reason="Different fonts") def test_signmessage_pagination_trailing_newline(client: Client): message = "THIS\nMUST\nNOT\nBE\nPAGINATED\n" # The trailing newline must not cause a new paginated screen to appear. diff --git a/tests/input_flows.py b/tests/input_flows.py index 29710910c3..08a862a1ba 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -950,7 +950,7 @@ def __init__(self, client: Client, lock_time_str: str): def assert_func(self, debug: DebugLink, br: messages.ButtonRequest) -> None: layout_text = get_text_possible_pagination(debug, br) TR.assert_in(layout_text, "bitcoin__locktime_set_to") - assert self.lock_time_str in layout_text + assert self.lock_time_str.replace(' ', '') in layout_text.replace(' ', '') def input_flow_tt(self) -> BRGeneratorType: yield from lock_time_input_flow_tt(self.debug, self.assert_func) From 80462282dc8dfc8b05b61523f902ea79bb657481 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 6 Mar 2024 10:48:02 +0100 Subject: [PATCH 110/626] feat(core): T3T1 vertical menu --- .../src/ui/model_mercury/component/button.rs | 204 ++++++++---- .../src/ui/model_mercury/component/frame.rs | 6 +- .../model_mercury/component/homescreen/mod.rs | 2 +- .../src/ui/model_mercury/component/mod.rs | 11 + .../model_mercury/component/number_input.rs | 4 +- .../model_mercury/component/vertical_menu.rs | 156 ++++++++++ .../embed/rust/src/ui/model_mercury/layout.rs | 60 +++- .../ui/model_mercury/res/chevron_right24.png | Bin 320 -> 226 bytes .../ui/model_mercury/res/chevron_right24.toif | Bin 44 -> 49 bytes .../rust/src/ui/model_mercury/theme/mod.rs | 294 +++++++++++++++++- core/mocks/generated/trezorui2.pyi | 6 + 11 files changed, 675 insertions(+), 68 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 7f8d8a5cf9..0a44545735 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -32,10 +32,11 @@ pub struct Button { long_timer: Option<TimerToken>, } -impl Button { - /// Offsets the baseline of the button text either up (negative) or down - /// (positive). - pub const BASELINE_OFFSET: i16 = -2; +impl<T> Button<T> { + /// Offsets the baseline of the button text + /// -x/+x => left/right + /// -y/+y => up/down + pub const BASELINE_OFFSET: Offset = Offset::new(2, 6); pub const fn new(content: ButtonContent) -> Self { Self { @@ -57,8 +58,8 @@ impl Button { Self::new(ButtonContent::Icon(icon)) } - pub const fn with_icon_and_text(content: IconText) -> Self { - Self::new(ButtonContent::IconAndText(content)) + pub const fn with_icon_and_text(content: IconText<T>) -> Self { + Self::new(ButtonContent::IconAndText::<T>(content)) } pub const fn with_icon_blend(bg: Icon, fg: Icon, fg_offset: Offset) -> Self { @@ -203,20 +204,15 @@ impl Button { match &self.content { ButtonContent::Empty => {} ButtonContent::Text(text) => { - let width = text.map(|c| style.font.text_width(c)); - let height = style.font.text_height(); - let start_of_baseline = self.area.center() - + Offset::new(-width / 2, height / 2) - + Offset::y(Self::BASELINE_OFFSET); - text.map(|text| { - display::text_left( - start_of_baseline, - text, - style.font, - style.text_color, - style.button_color, - ); - }); + let text = text.as_ref(); + let start_of_baseline = self.area.center() + Self::BASELINE_OFFSET; + display::text_left( + start_of_baseline, + text, + style.font, + style.text_color, + style.button_color, + ); } ButtonContent::Icon(icon) => { icon.draw( @@ -242,17 +238,12 @@ impl Button { match &self.content { ButtonContent::Empty => {} ButtonContent::Text(text) => { - let width = text.map(|c| style.font.text_width(c)); - let height = style.font.text_height(); - let start_of_baseline = self.area.center() - + Offset::new(-width / 2, height / 2) - + Offset::y(Self::BASELINE_OFFSET); - text.map(|text| { - shape::Text::new(start_of_baseline, text) - .with_font(style.font) - .with_fg(style.text_color) - .render(target); - }); + let text = text.as_ref(); + let start_of_baseline = self.area.left_center() + Self::BASELINE_OFFSET; + shape::Text::new(start_of_baseline, text) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); } ButtonContent::Icon(icon) => { shape::ToifImage::new(self.area.center(), icon.toif) @@ -261,7 +252,7 @@ impl Button { .render(target); } ButtonContent::IconAndText(child) => { - child.render(target, self.area, self.style(), Self::BASELINE_OFFSET); + child.render(target, self.area, style, Self::BASELINE_OFFSET); } ButtonContent::IconBlend(bg, fg, offset) => { shape::Bar::new(self.area) @@ -385,7 +376,7 @@ impl crate::trace::Trace for Button { ButtonContent::Text(text) => t.string("text", *text), ButtonContent::Icon(_) => t.bool("icon", true), ButtonContent::IconAndText(content) => { - t.string("text", content.text.into()); + t.string("text", content.text.as_ref().into()); t.bool("icon", true); } ButtonContent::IconBlend(_, _, _) => t.bool("icon", true), @@ -406,7 +397,7 @@ pub enum ButtonContent { Empty, Text(TString<'static>), Icon(Icon), - IconAndText(IconText), + IconAndText(IconText<T>), IconBlend(Icon, Icon, Offset), } @@ -428,6 +419,115 @@ pub struct ButtonStyle { pub border_width: i16, } +impl<T> Button<T> { + pub fn cancel_confirm( + left: Button<T>, + right: Button<T>, + left_is_small: bool, + ) -> CancelConfirm< + T, + impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, + impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, + > + where + T: AsRef<str>, + { + let width = if left_is_small { + theme::BUTTON_WIDTH + } else { + 0 + }; + theme::button_bar(Split::left( + width, + theme::BUTTON_SPACING, + left.map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Cancelled) + }), + right.map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + }), + )) + } + + pub fn cancel_confirm_text( + left: Option<T>, + right: Option<T>, + ) -> CancelConfirm< + T, + impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, + impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, + > + where + T: AsRef<str>, + { + let left_is_small: bool; + + let left = if let Some(verb) = left { + left_is_small = verb.as_ref().len() <= 4; + if verb.as_ref() == "^" { + Button::with_icon(theme::ICON_UP) + } else { + Button::with_text(verb) + } + } else { + left_is_small = right.is_some(); + Button::with_icon(theme::ICON_CANCEL) + }; + let right = if let Some(verb) = right { + Button::with_text(verb).styled(theme::button_confirm()) + } else { + Button::with_icon(theme::ICON_CONFIRM).styled(theme::button_confirm()) + }; + Self::cancel_confirm(left, right, left_is_small) + } + + pub fn cancel_info_confirm( + confirm: T, + info: T, + ) -> CancelInfoConfirm< + T, + impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, + impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, + impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, + > + where + T: AsRef<str>, + { + let right = Button::with_text(confirm) + .styled(theme::button_confirm()) + .map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Confirmed) + }); + let top = Button::with_text(info) + .styled(theme::button_moreinfo()) + .map(|msg| (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Info)); + let left = Button::with_icon(theme::ICON_CANCEL).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Cancelled) + }); + let total_height = theme::BUTTON_HEIGHT + theme::BUTTON_SPACING + theme::INFO_BUTTON_HEIGHT; + FixedHeightBar::bottom( + Split::top( + theme::INFO_BUTTON_HEIGHT, + theme::BUTTON_SPACING, + top, + Split::left(theme::BUTTON_WIDTH, theme::BUTTON_SPACING, left, right), + ), + total_height, + ) + } +} + +pub enum CancelConfirmMsg { + Cancelled, + Confirmed, +} + +type CancelInfoConfirm<T, F0, F1, F2> = FixedHeightBar< + Split<MsgMap<Button<T>, F0>, Split<MsgMap<Button<T>, F1>, MsgMap<Button<T>, F2>>>, +>; + +type CancelConfirm<T, F0, F1> = FixedHeightBar<Split<MsgMap<Button<T>, F0>, MsgMap<Button<T>, F1>>>; + #[derive(Clone, Copy)] pub enum CancelInfoConfirmMsg { Cancelled, @@ -436,23 +536,25 @@ pub enum CancelInfoConfirmMsg { } #[derive(PartialEq, Eq)] -pub struct IconText { - text: &'static str, +pub struct IconText<T> { + text: T, icon: Icon, } -impl IconText { +impl<T> IconText<T> +where + T: AsRef<str>, +{ const ICON_SPACE: i16 = 46; const ICON_MARGIN: i16 = 4; const TEXT_MARGIN: i16 = 6; - pub fn new(text: &'static str, icon: Icon) -> Self { + pub fn new(text: T, icon: Icon) -> Self { Self { text, icon } } - pub fn paint(&self, area: Rect, style: &ButtonStyle, baseline_offset: i16) { - let width = style.font.text_width(self.text); - let height = style.font.text_height(); + pub fn paint(&self, area: Rect, style: &ButtonStyle, baseline_offset: Offset) { + let width = style.font.text_width(self.text.as_ref()); let mut use_icon = false; let mut use_text = false; @@ -461,8 +563,7 @@ impl IconText { area.top_left().x + ((Self::ICON_SPACE + Self::ICON_MARGIN) / 2), area.center().y, ); - let mut text_pos = - area.center() + Offset::new(-width / 2, height / 2) + Offset::y(baseline_offset); + let mut text_pos = area.left_center() + baseline_offset; if area.width() > (Self::ICON_SPACE + Self::TEXT_MARGIN + width) { //display both icon and text @@ -480,7 +581,7 @@ impl IconText { if use_text { display::text_left( text_pos, - self.text, + self.text.as_ref(), style.font, style.text_color, style.button_color, @@ -496,16 +597,14 @@ impl IconText { ); } } - pub fn render<'s>( - &self, + & self, target: &mut impl Renderer<'s>, area: Rect, style: &ButtonStyle, - baseline_offset: i16, + baseline_offset: Offset, ) { - let width = style.font.text_width(self.text); - let height = style.font.text_height(); + let width = style.font.text_width(self.text.as_ref()); let mut use_icon = false; let mut use_text = false; @@ -514,8 +613,7 @@ impl IconText { area.top_left().x + ((Self::ICON_SPACE + Self::ICON_MARGIN) / 2), area.center().y, ); - let mut text_pos = - area.center() + Offset::new(-width / 2, height / 2) + Offset::y(baseline_offset); + let mut text_pos = area.left_center() + baseline_offset; if area.width() > (Self::ICON_SPACE + Self::TEXT_MARGIN + width) { //display both icon and text @@ -531,12 +629,10 @@ impl IconText { } if use_text { - shape::Text::new(text_pos, self.text) - .with_font(style.font) + shape::Text::new(text_pos, self.text.as_ref()) .with_fg(style.text_color) .render(target); } - if use_icon { shape::ToifImage::new(icon_pos, self.icon.toif) .with_align(Alignment2D::CENTER) diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 0e33d24f98..47f4d7de28 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -62,8 +62,8 @@ where self } - pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { - let style = theme::label_title_sub(); + pub fn with_subtitle(mut self, subtitle: U) -> Self { + let style = theme::TEXT_SUB; self.title = Child::new(self.title.into_inner().top_aligned()); self.subtitle = Some(Child::new(Label::new( subtitle, @@ -127,7 +127,7 @@ where fn place(&mut self, bounds: Rect) -> Rect { let (mut header_area, content_area) = bounds.split_top(TITLE_HEIGHT); - let content_area = content_area.inset(Insets::right(TITLE_SPACE)); + let content_area = content_area.inset(Insets::top(TITLE_SPACE)); if let Some(b) = &mut self.button { let (rest, button_area) = header_area.split_right(TITLE_HEIGHT); diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index 13765bba2d..1d85c744cf 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -22,7 +22,7 @@ use crate::{ ui::{ constant::HEIGHT, display::{ - tjpgd::{jpeg_test, BufferInput}, + tjpgd::BufferInput, toif::{Toif, ToifFormat}, }, model_mercury::component::homescreen::render::{ diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 75d516194c..598c01ce5d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -1,5 +1,12 @@ pub mod bl_confirm; mod button; +#[cfg(feature = "translations")] +mod coinjoin_progress; +mod dialog; +mod fido; +mod vertical_menu; +#[rustfmt::skip] +mod fido_icons; mod error; mod frame; mod loader; @@ -13,6 +20,10 @@ pub use error::ErrorScreen; pub use frame::{Frame, FrameMsg}; pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; pub use result::{ResultFooter, ResultScreen, ResultStyle}; +pub use scroll::ScrollBar; +pub use simple_page::SimplePage; +pub use swipe::{Swipe, SwipeDirection}; +pub use vertical_menu::{VerticalMenu, VerticalMenuChoiceMsg}; pub use welcome_screen::WelcomeScreen; use super::{constant, theme}; diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index 43aab67cb7..891bb8ab2b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -226,7 +226,7 @@ impl Component for NumberInput { let mut buf = [0u8; 10]; if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { let digit_font = Font::DEMIBOLD; - let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET; + let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET.y; display::rect_fill(self.area, theme::BG); display::text_center( self.area.center() + Offset::y(y_offset), @@ -245,7 +245,7 @@ impl Component for NumberInput { if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { let digit_font = Font::DEMIBOLD; - let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET; + let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET.y; shape::Bar::new(self.area).with_bg(theme::BG).render(target); shape::Text::new(self.area.center() + Offset::y(y_offset), text) diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs new file mode 100644 index 0000000000..575819b702 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -0,0 +1,156 @@ +use heapless::Vec; + +use super::theme; +use crate::ui::{ + component::{base::Component, Event, EventCtx}, + display::Icon, + geometry::Rect, + model_mercury::component::button::{Button, ButtonMsg, IconText}, + shape::{Bar, Renderer}, +}; + +pub enum VerticalMenuChoiceMsg { + Selected(usize), +} + +/// Number of buttons. +/// Presently, VerticalMenu holds only fixed number of buttons. +/// TODO: for scrollable menu, the implementation must change. +const N_ITEMS: usize = 3; + +/// Number of visual separators between buttons. +const N_SEPS: usize = N_ITEMS - 1; + +/// Fixed height of each menu button. +const MENU_BUTTON_HEIGHT: i16 = 64; + +/// Fixed height of a separator. +const MENU_SEP_HEIGHT: i16 = 2; + +type VerticalMenuButtons<T> = Vec<Button<T>, N_ITEMS>; +type AreasForSeparators = Vec<Rect, N_SEPS>; + +pub struct VerticalMenu<T> { + area: Rect, + /// buttons placed vertically from top to bottom + buttons: VerticalMenuButtons<T>, + /// areas for visual separators between buttons + areas_sep: AreasForSeparators, +} + +impl<T> VerticalMenu<T> +where + T: AsRef<str>, +{ + fn new(buttons: VerticalMenuButtons<T>) -> Self { + Self { + area: Rect::zero(), + buttons, + areas_sep: AreasForSeparators::new(), + } + } + pub fn select_word(words: [T; 3]) -> Self { + let mut buttons_vec = VerticalMenuButtons::new(); + for word in words { + let button = Button::with_text(word).styled(theme::button_vertical_menu()); + unwrap!(buttons_vec.push(button)); + } + Self::new(buttons_vec) + } + + pub fn context_menu(options: [(T, Icon); 3]) -> Self { + // TODO: this is just POC + let mut buttons_vec = VerticalMenuButtons::new(); + for opt in options { + let button_theme; + match opt.1 { + theme::ICON_CANCEL => { + button_theme = theme::button_vertical_menu_orange(); + } + _ => { + button_theme = theme::button_vertical_menu(); + } + } + unwrap!(buttons_vec.push( + Button::with_icon_and_text(IconText::new(opt.0, opt.1)).styled(button_theme) + )); + } + Self::new(buttons_vec) + } +} + +impl<T> Component for VerticalMenu<T> +where + T: AsRef<str>, +{ + type Msg = VerticalMenuChoiceMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + // VerticalMenu is supposed to be used in Frame, the remaining space is just + // enought to fit 3 buttons separated by thin bars + let height_bounds_expected = 3 * MENU_BUTTON_HEIGHT + 2 * MENU_SEP_HEIGHT; + assert!(bounds.height() == height_bounds_expected); + + self.area = bounds; + self.areas_sep.clear(); + let mut remaining = bounds; + for i in 0..N_ITEMS { + let (area_button, new_remaining) = remaining.split_top(MENU_BUTTON_HEIGHT); + self.buttons[i].place(area_button); + remaining = new_remaining; + if i < N_SEPS { + let (area_sep, new_remaining) = remaining.split_top(MENU_SEP_HEIGHT); + unwrap!(self.areas_sep.push(area_sep)); + remaining = new_remaining; + } + } + + self.area + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + for (i, button) in self.buttons.iter_mut().enumerate() { + if let Some(ButtonMsg::Clicked) = button.event(ctx, event) { + return Some(VerticalMenuChoiceMsg::Selected(i)); + } + } + None + } + + fn paint(&mut self) { + // TODO remove when ui-t3t1 done + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // render buttons separated by thin bars + for button in &self.buttons { + button.render(target); + } + for area in self.areas_sep.iter() { + Bar::new(*area) + .with_thickness(MENU_SEP_HEIGHT) + .with_fg(theme::GREY_EXTRA_DARK) + .render(target); + } + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for VerticalMenu<T> +where + T: AsRef<str>, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("VerticalMenu"); + t.in_list("buttons", &|button_list| { + for button in &self.buttons { + button_list.child(button); + } + }); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index a2733bb83c..d217ca171a 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -34,7 +34,7 @@ use crate::{ }, Border, Component, Empty, FormattedText, Label, Never, Qr, Timeout, }, - display::tjpgd::jpeg_info, + display::{tjpgd::jpeg_info, Icon}, geometry, layout::{ obj::{ComponentMsgObj, LayoutObj}, @@ -52,7 +52,8 @@ use super::{ FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, - SelectWordCount, SelectWordCountMsg, SelectWordMsg, SimplePage, Slip39Input, + SelectWordCount, SelectWordCountMsg, SelectWordMsg, SimplePage, Slip39Input, VerticalMenu, + VerticalMenuChoiceMsg, }, theme, }; @@ -100,6 +101,16 @@ impl TryFrom<SelectWordCountMsg> for Obj { } } +impl TryFrom<VerticalMenuChoiceMsg> for Obj { + type Error = Error; + + fn try_from(value: VerticalMenuChoiceMsg) -> Result<Self, Self::Error> { + match value { + VerticalMenuChoiceMsg::Selected(i) => i.try_into(), + } + } +} + impl<F, T, U> ComponentMsgObj for FidoConfirm<F, T, U> where F: Fn(usize) -> T, @@ -195,6 +206,17 @@ where } } +impl<T> ComponentMsgObj for VerticalMenu<T> +where + T: AsRef<str>, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + VerticalMenuChoiceMsg::Selected(i) => i.try_into(), + } + } +} + impl<T, U> ComponentMsgObj for ButtonPage<T, U> where T: Component + Paginate, @@ -1299,11 +1321,30 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) let words_iterable: Obj = kwargs.get(Qstr::MP_QSTR_words)?; let words: [StrBuffer; 3] = util::iter_into_array(words_iterable)?; - let paragraphs = Paragraphs::new([Paragraph::new(&theme::TEXT_DEMIBOLD, description)]); - let obj = LayoutObj::new(Frame::left_aligned( - title, - Dialog::new(paragraphs, Button::select_word(words)), - ))?; + let content = VerticalMenu::select_word(words); + let frame_with_menu = Frame::left_aligned(title, content).with_subtitle(description); + let obj = LayoutObj::new(frame_with_menu)?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + +extern "C" fn new_show_tx_context_menu(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], _kwargs: &Map| { + // TODO: this is just POC + let title: StrBuffer = StrBuffer::from(""); + + let options: [(StrBuffer, Icon); 3] = [ + (StrBuffer::from("Address QR code"), theme::ICON_QR_CODE), + ( + StrBuffer::from("Fee info"), + theme::ICON_CHEVRON_RIGHT, + ), + (StrBuffer::from("Cancel transaction"), theme::ICON_CANCEL), + ]; + let content = VerticalMenu::context_menu(options); + let frame_with_menu = Frame::left_aligned(title, content).with_cancel_button(); + let obj = LayoutObj::new(frame_with_menu)?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -2033,6 +2074,11 @@ pub static mp_module_trezorui2: Module = obj_module! { /// iterable must be of exact size. Returns index in range `0..3`.""" Qstr::MP_QSTR_select_word => obj_fn_kw!(0, new_select_word).as_obj(), + /// def show_tx_context_menu() -> LayoutObj[int]: + /// """Show transaction context menu with the options for 1) Address QR code, 2) Fee + /// information, 3) Cancel transaction""" + Qstr::MP_QSTR_show_tx_context_menu => obj_fn_kw!(0, new_show_tx_context_menu).as_obj(), + /// def show_share_words( /// *, /// title: str, diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_right24.png b/core/embed/rust/src/ui/model_mercury/res/chevron_right24.png index 5dea415fff50d75ed4edcc235f81e7b80ca32894..efe01e11606b2a13ae6c95db70506dc90d62c1b2 100644 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{KvmqrAk4@xYYs?%nWu|mh{fr*69ai040u@AvnXzDXz^5fA>k2K zV8p4BQ1gMYrOb!n{pU~XGJ}77maSZDxlq;TrkGW;rj};bW`)K#+DQjpy`4^8OIj8X zEb}lZMPmE<#f&#(-*E&!og+W*^W3R<U#Bh3F8$3v)#^)rNZ7&E|1(cBu34$8#*nvf Q0nh~up00i_>zopr08|1^pa1{> literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^oIuRS0VEi1{Ld@_QcOwS?k)`f+xyS#2lCiUJbhi+ zUof+Y>2vMNlK2D^3h;Ds4B@yQdS;>E0RtYEgPV^WN|_~f$Gxi1cAZv8>5Tvrg`%{g zjOPar`@Njb-Vm_%dim$Hv&>UGv}SvKn)cqc;Z|<1MyKaZ2ag4Fj?eg0#gNJ__xyQb zfH%-=)e_f;l9a@fRIB8oR3OD*WME{XYhbKvU>0IzWMyn*Wn`{xU|?lnU>*Bp8j6P8 z{FKbJO57T}7-F=58Z_WGlw{_n7MCRE7NF@dF}E@_fLJn9e^xwD4}+(xpUXO@geCw# CvtzRW diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif b/core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif index 32666c3ecde88932b44b0501f851b3c7b756da19..8333079d6fae4bf0396a50e960a2503004299ce8 100644 GIT binary patch literal 49 zcmWIX_jH$FkYG?{U|>j2SRm&i;J$%dOX6WpW0^{)(;cCRn<ug+d{N?7zAdV7&LNb6 F0RU7j4{-nh literal 44 zcmWIX_jKoE;A2o=U|>j2U}!ROV{2>TQV8tuGce%TvYC0Kg^Y1SL4yS|3j+fH*To7z diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index fd6e556ffc..1b0f116cb2 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -44,7 +44,7 @@ pub const FATAL_ERROR_COLOR: Color = Color::rgb(0xE7, 0x0E, 0x0E); pub const FATAL_ERROR_HIGHLIGHT_COLOR: Color = Color::rgb(0xFF, 0x41, 0x41); // Commonly used corner radius (i.e. for buttons). -pub const RADIUS: u8 = 2; +pub const RADIUS: u8 = 0; // UI icons (greyscale). @@ -179,6 +179,298 @@ pub const fn button_moreinfo() -> ButtonStyleSheet { } } +pub const fn button_info() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: BLUE, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: BLUE_DARK, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::BOLD, + text_color: GREY_LIGHT, + button_color: BLUE, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_vertical_menu() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::NORMAL, + text_color: GREY_EXTRA_LIGHT, + button_color: BG, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + // TODO: change when figma done + active: &ButtonStyle { + font: Font::NORMAL, + text_color: FG, + button_color: GREEN_LIME, + background_color: GREY_EXTRA_DARK, + border_color: GREEN_LIME, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::NORMAL, + text_color: GREY_LIGHT, + button_color: GREEN_LIME, + background_color: GREY_EXTRA_DARK, + border_color: GREEN_LIME, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_vertical_menu_orange() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::NORMAL, + text_color: ORANGE_LIGHT, + button_color: BG, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::NORMAL, + text_color: FG, + button_color: GREEN_LIME, + background_color: GREY_EXTRA_DARK, + border_color: GREEN_LIME, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::NORMAL, + text_color: GREY_LIGHT, + button_color: GREEN_LIME, + background_color: GREY_EXTRA_DARK, + border_color: GREEN_LIME, + border_radius: RADIUS, + border_width: 0, + }, + } +} +pub const fn button_pin() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREY_DARK, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREY_MEDIUM, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::MONO, + text_color: GREY_LIGHT, + button_color: BG, // so there is no "button" itself, just the text + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_pin_confirm() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREEN, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREEN_DARK, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::MONO, + text_color: GREY_LIGHT, + button_color: GREY_DARK, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_pin_autocomplete() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREY_DARK, // same as PIN buttons + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREEN_DARK, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::MONO, + text_color: GREY_LIGHT, + button_color: BG, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_suggestion_confirm() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::MONO, + text_color: GREEN_DARK, + button_color: GREEN, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREEN_DARK, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::MONO, + text_color: GREY_LIGHT, + button_color: GREY_DARK, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_suggestion_autocomplete() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::MONO, + text_color: GREY_LIGHT, + button_color: GREY_DARK, // same as PIN buttons + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREEN_DARK, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::MONO, + text_color: GREY_LIGHT, + button_color: BG, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_counter() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: FG, + button_color: GREY_DARK, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: FG, + button_color: GREY_MEDIUM, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, + button_color: GREY_DARK, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_clear() -> ButtonStyleSheet { + button_default() +} + pub const fn loader_default() -> LoaderStyleSheet { LoaderStyleSheet { normal: &LoaderStyle { diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index e2c36a0d1f..a4530c4174 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -389,6 +389,12 @@ def select_word( iterable must be of exact size. Returns index in range `0..3`.""" +# rust/src/ui/model_mercury/layout.rs +def show_tx_context_menu() -> LayoutObj[int]: + """Show transaction context menu with the options for 1) Address QR code, 2) Fee + information, 3) Cancel transaction""" + + # rust/src/ui/model_mercury/layout.rs def show_share_words( *, From befaf87f2dd33cd0847781ef11159e03a11cf6c8 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 25 Mar 2024 10:26:27 +0100 Subject: [PATCH 111/626] feat(core): T3T1 Footer component --- core/embed/rust/src/ui/display/font.rs | 10 ++ .../src/ui/model_mercury/component/footer.rs | 128 +++++++++++++++ .../src/ui/model_mercury/component/mod.rs | 12 ++ .../ui/model_mercury/component/share_words.rs | 153 ++++++++++++++++++ core/embed/rust/src/ui/shape/text.rs | 12 -- 5 files changed, 303 insertions(+), 12 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/component/footer.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/share_words.rs diff --git a/core/embed/rust/src/ui/display/font.rs b/core/embed/rust/src/ui/display/font.rs index 638b522612..5c65d93854 100644 --- a/core/embed/rust/src/ui/display/font.rs +++ b/core/embed/rust/src/ui/display/font.rs @@ -317,6 +317,16 @@ impl Font { text.len() // it fits in its entirety } + + pub fn visible_text_height_ex(&self, text: &str) -> (i16, i16) { + let (mut ascent, mut descent) = (0, 0); + for c in text.chars() { + let glyph = self.get_glyph(c); + ascent = ascent.max(glyph.bearing_y); + descent = descent.max(glyph.height - glyph.bearing_y); + } + (ascent, descent) + } } pub trait GlyphMetrics { diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs new file mode 100644 index 0000000000..d99491c4d5 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -0,0 +1,128 @@ +use crate::{ + strutil::TString, + ui::{ + component::{text::TextStyle, Component, Event, EventCtx, Never}, + constant::WIDTH, + geometry::{Alignment, Offset, Rect}, + model_mercury::theme, + shape::{Renderer, Text}, + }, +}; + +/// Component showing a task instruction (e.g. "Swipe up") and optionally task +/// description (e.g. "Confirm transaction") to a user. The component +/// is typically placed at the bottom of the screen. The height of the provided +/// area must be 18px (only instruction) or 37px (both description and +/// instruction). The content and style of both description and instruction is +/// configurable separatedly. +pub struct Footer<'a> { + area: Rect, + text_instruction: TString<'a>, + text_description: Option<TString<'a>>, + style_instruction: &'static TextStyle, + style_description: &'static TextStyle, +} + +impl<'a> Footer<'a> { + /// height of the component with only instruction [px] + pub const HEIGHT_SIMPLE: i16 = 18; + /// height for component with both description and instruction [px] + pub const HEIGHT_DEFAULT: i16 = 37; + + pub fn new<T: Into<TString<'a>>>(instruction: T) -> Self { + Self { + area: Rect::zero(), + text_instruction: instruction.into(), + text_description: None, + style_instruction: &theme::TEXT_SUB, + style_description: &theme::TEXT_SUB, + } + } + + pub fn with_description<T: Into<TString<'a>>>(self, description: T) -> Self { + Self { + text_description: Some(description.into()), + ..self + } + } + + pub fn update_instruction<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { + self.text_instruction = s.into(); + ctx.request_paint(); + } + + pub fn update_description<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { + self.text_description = Some(s.into()); + ctx.request_paint(); + } + + pub fn update_instruction_style(&mut self, ctx: &mut EventCtx, style: &'static TextStyle) { + self.style_instruction = style; + ctx.request_paint(); + } + + pub fn update_description_style(&mut self, ctx: &mut EventCtx, style: &'static TextStyle) { + self.style_description = style; + ctx.request_paint(); + } +} + +impl<'a> Component for Footer<'a> { + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + let h = bounds.height(); + assert!(h == Footer::HEIGHT_SIMPLE || h == Footer::HEIGHT_DEFAULT); + self.area = bounds; + bounds + } + + fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { + None + } + + fn paint(&mut self) { + // TODO: remove when ui-t3t1 done + todo!() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // show description only if there is space for it + if self.area.height() == Footer::HEIGHT_DEFAULT { + if let Some(description) = self.text_description { + let area_description = self.area.split_top(Footer::HEIGHT_SIMPLE).0; + let text_description_font_descent = self + .style_description + .text_font + .visible_text_height_ex("Ay") + .1; + let text_description_baseline = + area_description.bottom_center() - Offset::y(text_description_font_descent); + + description.map(|t| { + Text::new(text_description_baseline, t) + .with_font(self.style_description.text_font) + .with_fg(self.style_description.text_color) + .with_align(Alignment::Center) + .render(target); + }); + } + } + + let area_instruction = self.area.split_bottom(Footer::HEIGHT_SIMPLE).1; + let text_instruction_font_descent = self + .style_instruction + .text_font + .visible_text_height_ex("Ay") + .1; + let text_instruction_baseline = + area_instruction.bottom_center() - Offset::y(text_instruction_font_descent); + self.text_instruction.map(|t| { + Text::new(text_instruction_baseline, t) + .with_font(self.style_instruction.text_font) + .with_fg(self.style_instruction.text_color) + .with_align(Alignment::Center) + .render(target); + }); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 598c01ce5d..c9a95b3bae 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -4,6 +4,7 @@ mod button; mod coinjoin_progress; mod dialog; mod fido; +mod footer; mod vertical_menu; #[rustfmt::skip] mod fido_icons; @@ -18,6 +19,17 @@ pub use button::{ }; pub use error::ErrorScreen; pub use frame::{Frame, FrameMsg}; +#[cfg(feature = "micropython")] +pub use homescreen::{check_homescreen_format, Homescreen, HomescreenMsg, Lockscreen}; +pub use footer::Footer; +pub use keyboard::{ + bip39::Bip39Input, + mnemonic::{MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg}, + passphrase::{PassphraseKeyboard, PassphraseKeyboardMsg}, + pin::{PinKeyboard, PinKeyboardMsg}, + slip39::Slip39Input, + word_count::{SelectWordCount, SelectWordCountMsg}, +}; pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs new file mode 100644 index 0000000000..5d3cfb9dc0 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -0,0 +1,153 @@ +use super::theme; +use crate::{ + strutil::TString, + ui::{ + component::{Component, Event, EventCtx, PageMsg, Paginate}, + constant::SPACING, + geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, + model_mercury::component::{Footer, Swipe, SwipeDirection}, + shape, + shape::Renderer, + }, +}; +use heapless::{String, Vec}; + +const MAX_WORDS: usize = 33; // super-shamir has 33 words, all other have less + +/// Component showing mnemonic/share words during backup procedure. Model T3T1 +/// contains one word per screen. A user is instructed to swipe up/down to see +/// next/previous word. +pub struct ShareWords<'a> { + area: Rect, + share_words: Vec<TString<'a>, MAX_WORDS>, + page_index: usize, + /// Area reserved for a shown word from mnemonic/share + area_word: Rect, + /// TODO: review when swipe concept done for T3T1 + swipe: Swipe, + /// Footer component for instructions and word counting + footer: Footer<'static>, +} + +impl<'a> ShareWords<'a> { + const AREA_WORD_HEIGHT: i16 = 91; + + pub fn new(share_words: Vec<TString<'a>, MAX_WORDS>) -> Self { + Self { + area: Rect::zero(), + share_words, + page_index: 0, + area_word: Rect::zero(), + swipe: Swipe::new().up().down(), + footer: Footer::new("Swipe up"), + } + } + + fn is_final_page(&self) -> bool { + self.page_index == self.share_words.len() - 1 + } +} + +impl<'a> Component for ShareWords<'a> { + type Msg = PageMsg<()>; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + let used_area = bounds + .inset(Insets::sides(SPACING)) + .inset(Insets::bottom(SPACING)); + + self.area_word = Rect::snap( + used_area.center(), + Offset::new(used_area.width(), ShareWords::AREA_WORD_HEIGHT), + Alignment2D::CENTER, + ); + + self.footer + .place(used_area.split_bottom(Footer::HEIGHT_SIMPLE).1); + + self.swipe.place(bounds); // Swipe possible on the whole screen area + self.area + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + ctx.set_page_count(self.share_words.len()); + let swipe = self.swipe.event(ctx, event); + match swipe { + Some(SwipeDirection::Up) => { + if self.is_final_page() { + return Some(PageMsg::Confirmed); + } + self.change_page(self.page_index + 1); + ctx.request_paint(); + } + Some(SwipeDirection::Down) => { + self.change_page(self.page_index.saturating_sub(1)); + ctx.request_paint(); + } + _ => (), + } + None + } + + fn paint(&mut self) { + // TODO: remove when ui-t3t1 done + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + // corner highlights + let (_, top_right_shape, bot_left_shape, bot_right_shape) = + shape::CornerHighlight::from_rect(self.area_word, theme::GREY_DARK, theme::BG); + top_right_shape.render(target); + bot_left_shape.render(target); + bot_right_shape.render(target); + + // the ordinal number of the current word + let ordinal_val = self.page_index as u8 + 1; + let ordinal_pos = self.area_word.top_left() + + Offset::y(theme::TEXT_SUB.text_font.visible_text_height("1")); + let ordinal = build_string!(3, inttostr!(ordinal_val), "."); + shape::Text::new(ordinal_pos, &ordinal) + .with_font(theme::TEXT_SUB.text_font) + .with_fg(theme::GREY) + .render(target); + + // the share word + let word = self.share_words[self.page_index]; + let word_baseline = self.area_word.center() + + Offset::y(theme::TEXT_SUPER.text_font.visible_text_height("A") / 2); + word.map(|w| { + shape::Text::new(word_baseline, w) + .with_font(theme::TEXT_SUPER.text_font) + .with_align(Alignment::Center) + .render(target); + }); + + // footer with instructions + self.footer.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} +} + +impl<'a> Paginate for ShareWords<'a> { + fn page_count(&mut self) -> usize { + self.share_words.len() + } + + fn change_page(&mut self, active_page: usize) { + self.page_index = active_page; + } +} + +#[cfg(feature = "ui_debug")] +impl<'a> crate::trace::Trace for ShareWords<'a> { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("ShareWords"); + let word = &self.share_words[self.page_index]; + let content = + word.map(|w| build_string!(50, inttostr!(self.page_index as u8 + 1), ". ", w, "\n")); + t.string("screen_content", content.as_str().into()); + } +} diff --git a/core/embed/rust/src/ui/shape/text.rs b/core/embed/rust/src/ui/shape/text.rs index adcc820779..3ecf64e7b1 100644 --- a/core/embed/rust/src/ui/shape/text.rs +++ b/core/embed/rust/src/ui/shape/text.rs @@ -128,15 +128,3 @@ impl<'a, 's> ShapeClone<'s> for Text<'a> { Some(clone.uninit.init(Text { text, ..self })) } } - -impl Font { - fn visible_text_height_ex(&self, text: &str) -> (i16, i16) { - let (mut ascent, mut descent) = (0, 0); - for c in text.chars() { - let glyph = self.get_glyph(c); - ascent = ascent.max(glyph.bearing_y); - descent = descent.max(glyph.height - glyph.bearing_y); - } - (ascent, descent) - } -} From 9b98c8af11611d6afe30a6c58d50c4158287ccb2 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 25 Mar 2024 10:45:04 +0100 Subject: [PATCH 112/626] feat(core): T3T1 corner highlight shape Adds a new shape which serves to highlight information within a rectangle. --- core/embed/rust/src/ui/geometry.rs | 2 +- .../rust/src/ui/shape/corner_highlight.rs | 218 ++++++++++++++++++ core/embed/rust/src/ui/shape/mod.rs | 2 + 3 files changed, 221 insertions(+), 1 deletion(-) create mode 100644 core/embed/rust/src/ui/shape/corner_highlight.rs diff --git a/core/embed/rust/src/ui/geometry.rs b/core/embed/rust/src/ui/geometry.rs index a5a7d8a2bb..ec2be3ba3d 100644 --- a/core/embed/rust/src/ui/geometry.rs +++ b/core/embed/rust/src/ui/geometry.rs @@ -545,7 +545,7 @@ pub enum Alignment { End, } -#[derive(Copy, Clone)] +#[derive(Copy, Clone, PartialEq, Eq)] pub struct Alignment2D(pub Alignment, pub Alignment); impl Alignment2D { diff --git a/core/embed/rust/src/ui/shape/corner_highlight.rs b/core/embed/rust/src/ui/shape/corner_highlight.rs new file mode 100644 index 0000000000..fe1ed55a88 --- /dev/null +++ b/core/embed/rust/src/ui/shape/corner_highlight.rs @@ -0,0 +1,218 @@ +use crate::ui::{ + canvas::Canvas, + display::Color, + geometry::{Alignment2D, Offset, Point, Rect}, + shape::{DrawingCache, Renderer, Shape, ShapeClone}, +}; +use without_alloc::alloc::LocalAllocLeakExt; + +#[derive(Clone, Copy)] +pub enum CornerPosition { + TopLeft, + TopRight, + BotLeft, + BotRight, +} + +/// The shape placed in the corners highlihting important information within. +pub struct CornerHighlight { + /// Base point, horizontal and vertical lines crossing `pos` create tangents + /// to the shape + pos: Point, + /// Where is shape located, determines orientation of the shape + corner: CornerPosition, + /// Color of the shape - uniform and filled + color: Color, + /// Background color + bg_color: Color, + /// Outer radius + r_outer: i16, + /// Tail-end radius + r_tail: i16, + /// Inner radius + r_inner: i16, + /// Total lengths of the shape from the base point to the end of any tail + length: i16, + /// Thickness (default 3) + thickness: i16, + /// Alpha (default 255) + alpha: u8, + /// Helper point for working with rectangles, offset of `pos` + pos_rect: Point, +} + +impl CornerHighlight { + pub fn new(pos: Point, corner: CornerPosition, color: Color, bg_color: Color) -> Self { + Self { + pos, + corner, + color, + bg_color, + r_outer: 3, + r_tail: 1, + r_inner: 1, + length: 8, + thickness: 3, + alpha: 255, + pos_rect: pos + Offset::rect_offset(corner), + } + } + + pub fn from_rect(rect: Rect, color: Color, bg_color: Color) -> (Self, Self, Self, Self) { + let [top_left_corner, top_right_corner, bot_right_corner, bot_left_corner] = + rect.corner_points(); + let top_left = + CornerHighlight::new(top_left_corner, CornerPosition::TopLeft, color, bg_color); + let top_right = + CornerHighlight::new(top_right_corner, CornerPosition::TopRight, color, bg_color); + let bot_left = + CornerHighlight::new(bot_left_corner, CornerPosition::BotLeft, color, bg_color); + let bot_right = + CornerHighlight::new(bot_right_corner, CornerPosition::BotRight, color, bg_color); + (top_left, top_right, bot_left, bot_right) + } + + pub fn render<'s>(self, renderer: &mut impl Renderer<'s>) { + renderer.render_shape(self); + } + + fn rect_visible_part_base(&self, p: Point) -> (Point, Point) { + let (horizontal, vertical) = match self.corner { + CornerPosition::TopLeft => (p + Offset::x(self.r_outer), p + Offset::y(self.r_outer)), + CornerPosition::TopRight => (p - Offset::x(self.r_outer), p + Offset::y(self.r_outer)), + CornerPosition::BotLeft => (p + Offset::x(self.r_outer), p - Offset::y(self.r_outer)), + CornerPosition::BotRight => (p - Offset::x(self.r_outer), p - Offset::y(self.r_outer)), + }; + (horizontal, vertical) + } +} + +impl Shape<'_> for CornerHighlight { + fn bounds(&self, _cache: &DrawingCache) -> Rect { + Rect::snap( + self.pos_rect, + Offset::uniform(self.length), + self.corner.into(), + ) + } + + fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache<'_>) { + let align: Alignment2D = self.corner.into(); + + // base circle + let circle_center = self.pos + Offset::uniform(self.r_outer).rotate(self.corner); + let circle_visible_part = Rect::snap(self.pos_rect, Offset::uniform(self.r_outer), align); + in_clip(canvas, circle_visible_part, &|can| { + can.fill_circle(circle_center, self.r_outer, self.color); + }); + + // rectangles (rounded) tailing from a corner + let (rect_horz_base, rect_vert_base) = self.rect_visible_part_base(self.pos_rect); + + // vertical tail + let rect_tail_vert = Rect::snap( + self.pos_rect, + Offset::new(self.thickness, self.length), + align, + ); + let rect_vert_visible_part = Rect::snap( + rect_vert_base, + Offset::new(self.thickness, self.length - self.r_outer), + align, + ); + in_clip(canvas, rect_vert_visible_part, &|can| { + can.fill_round_rect(rect_tail_vert, self.r_tail, self.color, self.alpha) + }); + + // horizontal tail + let rect_tail_horz = Rect::snap( + self.pos_rect, + Offset::new(self.length, self.thickness), + align, + ); + let rect_horz_visible_part = Rect::snap( + rect_horz_base, + Offset::new(self.length - self.r_outer, self.thickness), + align, + ); + in_clip(canvas, rect_horz_visible_part, &|can| { + can.fill_round_rect(rect_tail_horz, self.r_tail, self.color, self.alpha) + }); + + // inner radius by a rectangle (shape color) and a circle (background color) + let rect_outer_base = self.pos_rect + Offset::uniform(self.thickness).rotate(self.corner); + let rect_outer_fill = Rect::snap(rect_outer_base, Offset::uniform(self.r_inner), align); + let circle_cover_center = + self.pos + Offset::uniform(self.thickness + self.r_inner).rotate(self.corner); + in_clip(canvas, rect_outer_fill, &|can| { + can.fill_rect(rect_outer_fill, self.color, self.alpha); + can.fill_circle(circle_cover_center, self.r_inner, self.bg_color); + }); + } + + fn cleanup(&mut self, cache: &super::DrawingCache<'_>) {} +} + +impl<'s> ShapeClone<'s> for CornerHighlight { + fn clone_at_bump<'alloc, T>(self, bump: &'alloc T) -> Option<&'alloc mut dyn Shape<'s>> + where + T: LocalAllocLeakExt<'alloc>, + { + let clone = bump.alloc_t::<CornerHighlight>()?; + Some(clone.uninit.init(CornerHighlight { ..self })) + } +} + +// Helper functions + +fn in_clip(canvas: &mut dyn Canvas, r: Rect, inner: &dyn Fn(&mut dyn Canvas)) { + // TODO: like Renderer::in_clip, replace by Canvas::in_clip when done + let original = canvas.set_clip(r); + inner(canvas); + canvas.set_viewport(original); +} + +impl From<CornerPosition> for Alignment2D { + fn from(corner: CornerPosition) -> Self { + match corner { + CornerPosition::TopLeft => Alignment2D::TOP_LEFT, + CornerPosition::TopRight => Alignment2D::TOP_RIGHT, + CornerPosition::BotLeft => Alignment2D::BOTTOM_LEFT, + CornerPosition::BotRight => Alignment2D::BOTTOM_RIGHT, + } + } +} + +impl Offset { + fn rect_offset(corner: CornerPosition) -> Offset { + match corner { + CornerPosition::TopLeft => Offset::zero(), + CornerPosition::TopRight => Offset::x(1), + CornerPosition::BotLeft => Offset::y(1), + CornerPosition::BotRight => Offset::uniform(1), + } + } + + /// If Offset `self` is calculated for TopLeft (x,y positive) then this + /// function rotates the offset for other corners. + fn rotate(&self, corner: CornerPosition) -> Offset { + match corner { + CornerPosition::TopLeft => Offset { + x: self.x, + y: self.y, + }, + CornerPosition::TopRight => Offset { + x: -self.x, + y: self.y, + }, + CornerPosition::BotLeft => Offset { + x: self.x, + y: -self.y, + }, + CornerPosition::BotRight => Offset { + x: -self.x, + y: -self.y, + }, + } + } +} diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index 15aff83193..38da6434ef 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -12,6 +12,7 @@ mod jpeg; mod qrcode; mod rawimage; mod render; +mod corner_highlight; mod text; mod toif; mod utils; @@ -32,6 +33,7 @@ pub use jpeg::JpegImage; pub use qrcode::QrImage; pub use rawimage::RawImage; pub use render::{DirectRenderer, ProgressiveRenderer, Renderer}; +pub use corner_highlight::CornerHighlight; pub use text::Text; pub use toif::ToifImage; #[cfg(feature = "model_mercury")] From 7ce980ca9812dfd64c9d8bc02217af4f1a6f3ebf Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 29 Mar 2024 00:14:15 +0100 Subject: [PATCH 113/626] fix(core): port changes from drawlib to mercury Again rebase on current drawlib Move of canvas/Canvas to shape/Canvas. Get rid of ui/shape/model. A few other minor changes. [no changelog] --- .../component/coinjoin_progress.rs | 5 +- .../model_mercury/component/homescreen/mod.rs | 2 +- .../ui/model_mercury/component/progress.rs | 7 +- .../rust/src/ui/shape/corner_highlight.rs | 4 +- .../rust/src/ui/shape/model/model_mercury.rs | 78 ------------------- 5 files changed, 8 insertions(+), 88 deletions(-) delete mode 100644 core/embed/rust/src/ui/shape/model/model_mercury.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs index 99bf914ce7..506b3d5633 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -6,7 +6,6 @@ use crate::{ micropython::buffer::StrBuffer, translations::TR, ui::{ - canvas::algo::PI4, component::{ base::Never, Bar, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, Split, }, @@ -142,8 +141,8 @@ where let start = (self.value as i32 - 100) % 1000; let end = (self.value as i32 + 100) % 1000; - let start = ((start * 8 * PI4 as i32) / 1000) as i16; - let end = ((end * 8 * PI4 as i32) / 1000) as i16; + let start = ((start * 8 * shape::PI4 as i32) / 1000) as i16; + let end = ((end * 8 * shape::PI4 as i32) / 1000) as i16; shape::Circle::new(center, LOADER_OUTER) .with_bg(inactive_color) diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index 1d85c744cf..da7418633a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -559,7 +559,7 @@ impl Component for Lockscreen { pub fn check_homescreen_format(buffer: &[u8]) -> bool { #[cfg(not(feature = "new_rendering"))] - let result = is_image_jpeg(buffer) && jpeg_test(buffer); + let result = is_image_jpeg(buffer) && crate::ui::display::tjpgd::jpeg_test(buffer); #[cfg(feature = "new_rendering")] let result = is_image_jpeg(buffer); // !@# TODO: test like if `new_rendering` is off diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index 2cf5d92093..91e27b2383 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -4,7 +4,6 @@ use crate::{ error::Error, strutil::StringType, ui::{ - canvas::algo::PI4, component::{ base::ComponentExt, paginated::Paginate, @@ -134,11 +133,11 @@ where let (start, end) = if self.indeterminate { let start = (self.value - 100) % 1000; let end = (self.value + 100) % 1000; - let start = ((start as i32 * 8 * PI4 as i32) / 1000) as i16; - let end = ((end as i32 * 8 * PI4 as i32) / 1000) as i16; + let start = ((start as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let end = ((end as i32 * 8 * shape::PI4 as i32) / 1000) as i16; (start, end) } else { - let end = ((self.value as i32 * 8 * PI4 as i32) / 1000) as i16; + let end = ((self.value as i32 * 8 * shape::PI4 as i32) / 1000) as i16; (0, end) }; diff --git a/core/embed/rust/src/ui/shape/corner_highlight.rs b/core/embed/rust/src/ui/shape/corner_highlight.rs index fe1ed55a88..619a5169bc 100644 --- a/core/embed/rust/src/ui/shape/corner_highlight.rs +++ b/core/embed/rust/src/ui/shape/corner_highlight.rs @@ -1,9 +1,9 @@ use crate::ui::{ - canvas::Canvas, display::Color, geometry::{Alignment2D, Offset, Point, Rect}, - shape::{DrawingCache, Renderer, Shape, ShapeClone}, + shape::{Canvas, DrawingCache, Renderer, Shape, ShapeClone}, }; + use without_alloc::alloc::LocalAllocLeakExt; #[derive(Clone, Copy)] diff --git a/core/embed/rust/src/ui/shape/model/model_mercury.rs b/core/embed/rust/src/ui/shape/model/model_mercury.rs deleted file mode 100644 index bf43291bf3..0000000000 --- a/core/embed/rust/src/ui/shape/model/model_mercury.rs +++ /dev/null @@ -1,78 +0,0 @@ -use crate::ui::{ - canvas::{BasicCanvas, Viewport}, - display::Color, - geometry::{Offset, Rect}, - shape::{DrawingCache, ProgressiveRenderer}, -}; - -use crate::trezorhal::bitmap::{BitmapView, Dma2d}; - -use static_alloc::Bump; - -pub fn render_on_display<'a, F>(clip: Option<Rect>, bg_color: Option<Color>, func: F) -where - F: FnOnce(&mut ProgressiveRenderer<'_, 'a, Bump<[u8; 40 * 1024]>, DisplayModelMercury>), -{ - #[link_section = ".no_dma_buffers"] - static mut BUMP_A: Bump<[u8; 40 * 1024]> = Bump::uninit(); - - #[link_section = ".buf"] - static mut BUMP_B: Bump<[u8; 16 * 1024]> = Bump::uninit(); - - let bump_a = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_A) }; - let bump_b = unsafe { &mut *core::ptr::addr_of_mut!(BUMP_B) }; - { - bump_a.reset(); - bump_b.reset(); - - let cache = DrawingCache::new(bump_a, bump_b); - let mut canvas = DisplayModelMercury::acquire().unwrap(); - - if let Some(clip) = clip { - canvas.set_viewport(Viewport::new(clip)); - } - - let mut target = ProgressiveRenderer::new(&mut canvas, bg_color, &cache, bump_a, 45); - - func(&mut target); - - target.render(16); - } -} - -pub struct DisplayModelMercury { - size: Offset, - viewport: Viewport, -} - -impl DisplayModelMercury { - pub fn acquire() -> Option<Self> { - let size = Offset::new(240, 240); // TODO - let viewport = Viewport::from_size(size); - Some(Self { size, viewport }) - } -} - -impl BasicCanvas for DisplayModelMercury { - fn viewport(&self) -> Viewport { - self.viewport - } - - fn set_viewport(&mut self, viewport: Viewport) { - self.viewport = viewport.absolute_clip(self.bounds()); - } - - fn size(&self) -> Offset { - self.size - } - - fn fill_rect(&mut self, r: Rect, color: Color, _alpha: u8) { - let r = r.translate(self.viewport.origin); - Dma2d::wnd565_fill(r, self.viewport.clip, color); - } - - fn draw_bitmap(&mut self, r: Rect, bitmap: BitmapView) { - let r = r.translate(self.viewport.origin); - Dma2d::wnd565_copy(r, self.viewport.clip, &bitmap); - } -} From 8a5afbe5854b87a369d408b5e59ffde433f9a1f0 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Sat, 30 Mar 2024 19:31:47 +0100 Subject: [PATCH 114/626] style(core): fix formatting [no changelog] --- core/embed/rust/src/ui/model_mercury/component/button.rs | 2 +- core/embed/rust/src/ui/model_mercury/component/fido.rs | 4 ++-- core/embed/rust/src/ui/model_mercury/layout.rs | 5 +---- core/embed/rust/src/ui/shape/mod.rs | 4 ++-- tests/input_flows.py | 2 +- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 0a44545735..dbb513aa0a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -598,7 +598,7 @@ where } } pub fn render<'s>( - & self, + &self, target: &mut impl Renderer<'s>, area: Rect, style: &ButtonStyle, diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index 77450e9b78..4da615068e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -75,7 +75,6 @@ where // let current_account = get_account(scrollbar.active_page); let current_account = "".into(); - Self { app_name: Label::centered(app_name, theme::TEXT_DEMIBOLD), account_name: Label::centered(current_account, theme::TEXT_DEMIBOLD), @@ -162,7 +161,8 @@ where // NOTE: This is a hotfix used due to the erroneous behavior of TextLayout. // This line should be removed when the problem with TextLayout is fixed. // See also the code for FidoConfirm::new(). - self.account_name.set_text((self.get_account)(self.scrollbar.active_page)); + self.account_name + .set_text((self.get_account)(self.scrollbar.active_page)); bounds } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index d217ca171a..63075a631a 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1336,10 +1336,7 @@ extern "C" fn new_show_tx_context_menu(n_args: usize, args: *const Obj, kwargs: let options: [(StrBuffer, Icon); 3] = [ (StrBuffer::from("Address QR code"), theme::ICON_QR_CODE), - ( - StrBuffer::from("Fee info"), - theme::ICON_CHEVRON_RIGHT, - ), + (StrBuffer::from("Fee info"), theme::ICON_CHEVRON_RIGHT), (StrBuffer::from("Cancel transaction"), theme::ICON_CANCEL), ]; let content = VerticalMenu::context_menu(options); diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index 38da6434ef..e448f4577f 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -6,13 +6,13 @@ mod blur; mod cache; mod canvas; mod circle; +mod corner_highlight; mod display; #[cfg(feature = "ui_jpeg_decoder")] mod jpeg; mod qrcode; mod rawimage; mod render; -mod corner_highlight; mod text; mod toif; mod utils; @@ -27,13 +27,13 @@ pub use canvas::{ BasicCanvas, Canvas, CanvasBuilder, Mono8Canvas, Rgb565Canvas, Rgba8888Canvas, Viewport, }; pub use circle::Circle; +pub use corner_highlight::CornerHighlight; pub use display::{render_on_canvas, render_on_display}; #[cfg(feature = "ui_jpeg_decoder")] pub use jpeg::JpegImage; pub use qrcode::QrImage; pub use rawimage::RawImage; pub use render::{DirectRenderer, ProgressiveRenderer, Renderer}; -pub use corner_highlight::CornerHighlight; pub use text::Text; pub use toif::ToifImage; #[cfg(feature = "model_mercury")] diff --git a/tests/input_flows.py b/tests/input_flows.py index 08a862a1ba..828c145e4f 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -950,7 +950,7 @@ def __init__(self, client: Client, lock_time_str: str): def assert_func(self, debug: DebugLink, br: messages.ButtonRequest) -> None: layout_text = get_text_possible_pagination(debug, br) TR.assert_in(layout_text, "bitcoin__locktime_set_to") - assert self.lock_time_str.replace(' ', '') in layout_text.replace(' ', '') + assert self.lock_time_str.replace(" ", "") in layout_text.replace(" ", "") def input_flow_tt(self) -> BRGeneratorType: yield from lock_time_input_flow_tt(self.debug, self.assert_func) From 8978f36096e40a1cb2e3f5be152dbbeaa8f0fc74 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 27 Mar 2024 11:09:03 +0100 Subject: [PATCH 115/626] feat(core): T3T1 ShareWords component --- .../src/ui/model_mercury/component/footer.rs | 9 +- .../src/ui/model_mercury/component/frame.rs | 3 +- .../src/ui/model_mercury/component/mod.rs | 5 + .../rust/src/ui/model_mercury/constant.rs | 5 + .../embed/rust/src/ui/model_mercury/layout.rs | 34 +++---- .../rust/src/ui/shape/corner_highlight.rs | 4 +- core/mocks/generated/trezorui2.pyi | 2 +- core/src/trezor/ui/layouts/mercury/reset.py | 38 ++------ tests/common.py | 96 +++++++++++-------- 9 files changed, 98 insertions(+), 98 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index d99491c4d5..18d557a595 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -2,7 +2,6 @@ use crate::{ strutil::TString, ui::{ component::{text::TextStyle, Component, Event, EventCtx, Never}, - constant::WIDTH, geometry::{Alignment, Offset, Rect}, model_mercury::theme, shape::{Renderer, Text}, @@ -10,9 +9,9 @@ use crate::{ }; /// Component showing a task instruction (e.g. "Swipe up") and optionally task -/// description (e.g. "Confirm transaction") to a user. The component -/// is typically placed at the bottom of the screen. The height of the provided -/// area must be 18px (only instruction) or 37px (both description and +/// description (e.g. "Confirm transaction") to a user. A host of this component +/// is responsible of providing the exact area considering also the spacing. The +/// height must be 18px (only instruction) or 37px (both description and /// instruction). The content and style of both description and instruction is /// configurable separatedly. pub struct Footer<'a> { @@ -26,7 +25,7 @@ pub struct Footer<'a> { impl<'a> Footer<'a> { /// height of the component with only instruction [px] pub const HEIGHT_SIMPLE: i16 = 18; - /// height for component with both description and instruction [px] + /// height of the component with both description and instruction [px] pub const HEIGHT_DEFAULT: i16 = 37; pub fn new<T: Into<TString<'a>>>(instruction: T) -> Self { diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 47f4d7de28..aa8adf7062 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -127,8 +127,9 @@ where fn place(&mut self, bounds: Rect) -> Rect { let (mut header_area, content_area) = bounds.split_top(TITLE_HEIGHT); - let content_area = content_area.inset(Insets::top(TITLE_SPACE)); + let content_area = content_area.inset(Insets::top(SPACING)); + header_area = header_area.inset(Insets::sides(SPACING)); if let Some(b) = &mut self.button { let (rest, button_area) = header_area.split_right(TITLE_HEIGHT); header_area = rest; diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index c9a95b3bae..a6da95bc1c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -12,6 +12,10 @@ mod error; mod frame; mod loader; mod result; +mod scroll; +mod share_words; +mod simple_page; +mod swipe; mod welcome_screen; pub use button::{ @@ -33,6 +37,7 @@ pub use keyboard::{ pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; +pub use share_words::ShareWords; pub use simple_page::SimplePage; pub use swipe::{Swipe, SwipeDirection}; pub use vertical_menu::{VerticalMenu, VerticalMenuChoiceMsg}; diff --git a/core/embed/rust/src/ui/model_mercury/constant.rs b/core/embed/rust/src/ui/model_mercury/constant.rs index ba2c4a345b..9f0d9e3d57 100644 --- a/core/embed/rust/src/ui/model_mercury/constant.rs +++ b/core/embed/rust/src/ui/model_mercury/constant.rs @@ -20,3 +20,8 @@ pub const fn screen() -> Rect { Rect::from_top_left_and_size(Point::zero(), SIZE) } pub const SCREEN: Rect = screen(); + +/// Spacing between components (e.g. header and main content) and offsets from +/// the side of the screen. Generally applied everywhere except the top side of +/// the header. [px] +pub const SPACING: i16 = 2; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 63075a631a..3f34816dc4 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1,4 +1,5 @@ use core::{cmp::Ordering, convert::TryInto}; +use heapless::Vec; use crate::{ error::Error, @@ -52,8 +53,8 @@ use super::{ FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, - SelectWordCount, SelectWordCountMsg, SelectWordMsg, SimplePage, Slip39Input, VerticalMenu, - VerticalMenuChoiceMsg, + SelectWordCount, SelectWordCountMsg, SelectWordMsg, ShareWords, SimplePage, Slip39Input, + VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -206,6 +207,15 @@ where } } +impl ComponentMsgObj for ShareWords<'_> { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + PageMsg::Confirmed => Ok(CONFIRMED.as_obj()), + _ => Err(Error::TypeError), + } + } +} + impl<T> ComponentMsgObj for VerticalMenu<T> where T: AsRef<str>, @@ -1350,20 +1360,12 @@ extern "C" fn new_show_tx_context_menu(n_args: usize, args: *const Obj, kwargs: extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let pages: Obj = kwargs.get(Qstr::MP_QSTR_pages)?; + let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_pages)?; + let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; - let mut paragraphs = ParagraphVecLong::new(); - for page in IterBuf::new().try_iterate(pages)? { - let text: StrBuffer = page.try_into()?; - paragraphs.add(Paragraph::new(&theme::TEXT_MONO, text).break_after()); - } - - let obj = LayoutObj::new(Frame::left_aligned( - title, - ButtonPage::<_, StrBuffer>::new(paragraphs.into_paragraphs(), theme::BG) - .with_hold()? - .without_cancel(), - ))?; + let share_words = ShareWords::new(share_words_vec); + let frame_with_share_words = Frame::left_aligned(title, share_words).with_info_button(); + let obj = LayoutObj::new(frame_with_share_words)?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -2081,7 +2083,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// pages: Iterable[str], /// ) -> LayoutObj[UiResult]: - /// """Show mnemonic for backup. Expects the words pre-divided into individual pages.""" + /// """Show mnemonic for backup.""" Qstr::MP_QSTR_show_share_words => obj_fn_kw!(0, new_show_share_words).as_obj(), /// def request_number( diff --git a/core/embed/rust/src/ui/shape/corner_highlight.rs b/core/embed/rust/src/ui/shape/corner_highlight.rs index 619a5169bc..f25f4ff872 100644 --- a/core/embed/rust/src/ui/shape/corner_highlight.rs +++ b/core/embed/rust/src/ui/shape/corner_highlight.rs @@ -96,7 +96,7 @@ impl Shape<'_> for CornerHighlight { ) } - fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache<'_>) { + fn draw(&mut self, canvas: &mut dyn Canvas, _cache: &DrawingCache<'_>) { let align: Alignment2D = self.corner.into(); // base circle @@ -150,7 +150,7 @@ impl Shape<'_> for CornerHighlight { }); } - fn cleanup(&mut self, cache: &super::DrawingCache<'_>) {} + fn cleanup(&mut self, _cache: &super::DrawingCache<'_>) {} } impl<'s> ShapeClone<'s> for CornerHighlight { diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index a4530c4174..efbb8e289a 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -401,7 +401,7 @@ def show_share_words( title: str, pages: Iterable[str], ) -> LayoutObj[UiResult]: - """Show mnemonic for backup. Expects the words pre-divided into individual pages.""" + """Show mnemonic for backup.""" # rust/src/ui/model_mercury/layout.rs diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 0dd51dc963..c0d9dd46ed 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -18,30 +18,6 @@ CONFIRMED = trezorui2.CONFIRMED # global_import_cache -def _split_share_into_pages(share_words: Sequence[str], per_page: int = 4) -> list[str]: - pages: list[str] = [] - current = "" - fill = 2 - - for i, word in enumerate(share_words): - if i % per_page == 0: - if i != 0: - pages.append(current) - current = "" - - # Align numbers to the right. - lastnum = i + per_page + 1 - fill = 1 if lastnum < 10 else 2 - else: - current += "\n" - current += f"{i + 1:>{fill}}. {word}" - - if current: - pages.append(current) - - return pages - - async def show_share_words( share_words: Sequence[str], share_index: int | None = None, @@ -56,13 +32,11 @@ async def show_share_words( group_index + 1, share_index + 1 ) - pages = _split_share_into_pages(share_words) - result = await interact( RustLayout( trezorui2.show_share_words( title=title, - pages=pages, + pages=share_words, ), ), "backup_words", @@ -80,11 +54,11 @@ async def select_word( group_index: int | None = None, ) -> str: if share_index is None: - title: str = TR.reset__check_seed_title + description: str = TR.reset__check_seed_title elif group_index is None: - title = TR.reset__check_share_title_template.format(share_index + 1) + description: str = TR.reset__check_share_title_template.format(share_index + 1) else: - title = TR.reset__check_group_share_title_template.format( + description: str = TR.reset__check_group_share_title_template.format( group_index + 1, share_index + 1 ) @@ -98,10 +72,10 @@ async def select_word( result = await ctx_wait( RustLayout( trezorui2.select_word( - title=title, - description=TR.reset__select_word_x_of_y_template.format( + title=TR.reset__select_word_x_of_y_template.format( checked_index + 1, count ), + description=description, words=(words[0], words[1], words[2]), ) ) diff --git a/tests/common.py b/tests/common.py index 2dedf2e4de..1725b41ef1 100644 --- a/tests/common.py +++ b/tests/common.py @@ -181,24 +181,9 @@ def input_flow(): def read_and_confirm_mnemonic( debug: "DebugLink", choose_wrong: bool = False ) -> Generator[None, "ButtonRequest", Optional[str]]: - # TODO: these are very similar, reuse some code - if debug.model is models.T2T1: - mnemonic = yield from read_and_confirm_mnemonic_tt(debug, choose_wrong) - elif debug.model is models.T2B1: - mnemonic = yield from read_and_confirm_mnemonic_tr(debug, choose_wrong) - elif debug.model is models.T3T1: - mnemonic = yield from read_and_confirm_mnemonic_tt(debug, choose_wrong) - else: - raise ValueError(f"Unknown model: {debug.model}") - - return mnemonic - - -def read_and_confirm_mnemonic_tt( - debug: "DebugLink", choose_wrong: bool = False -) -> Generator[None, "ButtonRequest", Optional[str]]: - """Read a given number of mnemonic words from Trezor T screen and correctly - answer confirmation questions. Return the full mnemonic. + """Read a given number of mnemonic words from the screen and answer + confirmation questions. + Return the full mnemonic or None if `choose_wrong` is True. For use in an input flow function. Example: @@ -208,6 +193,23 @@ def input_flow(): mnemonic = yield from read_and_confirm_mnemonic(client.debug) """ + if debug.model is models.T2T1: + mnemonic = yield from read_mnemonic_from_screen_tt(debug) + elif debug.model is models.T2B1: + mnemonic = yield from read_mnemonic_from_screen_tr(debug) + elif debug.model is models.T3T1: + mnemonic = yield from read_mnemonic_from_screen_mercury(debug) + else: + raise ValueError(f"Unknown model: {debug.model}") + + if not check_share(debug, mnemonic, choose_wrong): + return None + return " ".join(mnemonic) + + +def read_mnemonic_from_screen_tt( + debug: "DebugLink", +) -> Generator[None, "ButtonRequest", list[str]]: mnemonic: list[str] = [] br = yield assert br.pages is not None @@ -222,27 +224,12 @@ def input_flow(): debug.swipe_up() debug.press_yes() - - # check share - for _ in range(3): - # Word position is the first number in the text - word_pos_match = re.search(r"\d+", debug.wait_layout().text_content()) - assert word_pos_match is not None - word_pos = int(word_pos_match.group(0)) - - index = word_pos - 1 - if choose_wrong: - debug.input(mnemonic[(index + 1) % len(mnemonic)]) - return None - else: - debug.input(mnemonic[index]) - - return " ".join(mnemonic) + return mnemonic -def read_and_confirm_mnemonic_tr( - debug: "DebugLink", choose_wrong: bool = False -) -> Generator[None, "ButtonRequest", Optional[str]]: +def read_mnemonic_from_screen_tr( + debug: "DebugLink", +) -> Generator[None, "ButtonRequest", list[str]]: mnemonic: list[str] = [] yield # write down all 12 words in order debug.press_yes() @@ -257,20 +244,47 @@ def read_and_confirm_mnemonic_tr( yield # Select correct words... debug.press_right() + return mnemonic + - # check share +def read_mnemonic_from_screen_mercury( + debug: "DebugLink", +) -> Generator[None, "ButtonRequest", list[str]]: + mnemonic: list[str] = [] + br = yield + assert br.pages is not None + + debug.wait_layout() + + for i in range(br.pages): + words = debug.wait_layout().seed_words() + mnemonic.extend(words) + debug.swipe_up() + + return mnemonic + + +def check_share( + debug: "DebugLink", mnemonic: list[str], choose_wrong: bool = False +) -> bool: + """ + Given the mnemonic word list, proceed with the backup check: + three rounds of `Select word X of Y` choices. + """ for _ in range(3): - word_pos_match = re.search(r"\d+", debug.wait_layout().title()) + # Word position is the first number in the text + word_pos_match = re.search(r"\d+", debug.wait_layout().text_content()) assert word_pos_match is not None word_pos = int(word_pos_match.group(0)) + index = word_pos - 1 if choose_wrong: debug.input(mnemonic[(index + 1) % len(mnemonic)]) - return None + return False else: debug.input(mnemonic[index]) - return " ".join(mnemonic) + return True def click_info_button_tt(debug: "DebugLink"): From ac39b026cfa1972c904f9814911b6a7af34b9a72 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 11 Apr 2024 15:10:30 +0200 Subject: [PATCH 116/626] fix(core): rebase on drawlib and TStringificaton [no changelog] --- core/embed/rust/src/ui/constant.rs | 2 +- .../component/address_details.rs | 83 ++-- .../src/ui/model_mercury/component/button.rs | 93 ++-- .../component/coinjoin_progress.rs | 46 +- .../src/ui/model_mercury/component/dialog.rs | 29 +- .../src/ui/model_mercury/component/fido.rs | 57 +-- .../ui/model_mercury/component/fido_icons.rs | 9 +- .../component/fido_icons.rs.mako | 9 +- .../src/ui/model_mercury/component/frame.rs | 2 +- .../model_mercury/component/homescreen/mod.rs | 21 +- .../model_mercury/component/keyboard/bip39.rs | 8 +- .../component/keyboard/mnemonic.rs | 38 +- .../component/keyboard/passphrase.rs | 55 +-- .../model_mercury/component/keyboard/pin.rs | 50 +- .../component/keyboard/slip39.rs | 4 +- .../component/keyboard/word_count.rs | 4 +- .../model_mercury/component/number_input.rs | 44 +- .../src/ui/model_mercury/component/page.rs | 57 +-- .../ui/model_mercury/component/progress.rs | 39 +- .../model_mercury/component/vertical_menu.rs | 46 +- .../embed/rust/src/ui/model_mercury/layout.rs | 440 ++++++++---------- 21 files changed, 522 insertions(+), 614 deletions(-) diff --git a/core/embed/rust/src/ui/constant.rs b/core/embed/rust/src/ui/constant.rs index c47ea35064..3237db67aa 100644 --- a/core/embed/rust/src/ui/constant.rs +++ b/core/embed/rust/src/ui/constant.rs @@ -9,5 +9,5 @@ pub use super::model_mercury::constant::*; #[cfg(all(feature = "model_tr", not(feature = "model_tt")))] pub use super::model_tr::constant::*; -#[cfg(all(feature = "model_tt", not(feature = "model_mercury")))] +#[cfg(feature = "model_tt")] pub use super::model_tt::constant::*; diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index 01c08df034..f79276dfd6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -2,8 +2,7 @@ use heapless::Vec; use crate::{ error::Error, - micropython::buffer::StrBuffer, - strutil::StringType, + strutil::TString, translations::TR, ui::{ component::{ @@ -19,58 +18,57 @@ use super::{theme, Frame, FrameMsg}; const MAX_XPUBS: usize = 16; -pub struct AddressDetails<T> { - qr_code: Frame<Qr, T>, - details: Frame<Paragraphs<ParagraphVecShort<StrBuffer>>, T>, - xpub_view: Frame<Paragraphs<Paragraph<T>>, T>, - xpubs: Vec<(T, T), MAX_XPUBS>, +pub struct AddressDetails { + qr_code: Frame<Qr>, + details: Frame<Paragraphs<ParagraphVecShort<'static>>>, + xpub_view: Frame<Paragraphs<Paragraph<'static>>>, + xpubs: Vec<(TString<'static>, TString<'static>), MAX_XPUBS>, xpub_page_count: Vec<u8, MAX_XPUBS>, current_page: usize, } -impl<T> AddressDetails<T> -where - T: StringType, -{ +impl AddressDetails { pub fn new( - qr_title: T, - qr_address: T, + qr_title: TString<'static>, + qr_address: TString<'static>, case_sensitive: bool, - details_title: T, - account: Option<StrBuffer>, - path: Option<StrBuffer>, - ) -> Result<Self, Error> - where - T: From<&'static str>, - { + details_title: TString<'static>, + account: Option<TString<'static>>, + path: Option<TString<'static>>, + ) -> Result<Self, Error> { let mut para = ParagraphVecShort::new(); if let Some(a) = account { para.add(Paragraph::new( &theme::TEXT_NORMAL, - TR::words__account_colon.try_into()?, + TR::words__account_colon, )); para.add(Paragraph::new(&theme::TEXT_MONO, a)); } if let Some(p) = path { para.add(Paragraph::new( &theme::TEXT_NORMAL, - TR::address_details__derivation_path.try_into()?, + TR::address_details__derivation_path, )); para.add(Paragraph::new(&theme::TEXT_MONO, p)); } let result = Self { qr_code: Frame::left_aligned( qr_title, - Qr::new(qr_address, case_sensitive)?.with_border(7), + qr_address + .map(|s| Qr::new(s, case_sensitive))? + .with_border(7), + ) + .with_cancel_button() + .with_border(theme::borders_horizontal_scroll()), + details: Frame::left_aligned( + details_title, + para.into_paragraphs(), ) .with_cancel_button() .with_border(theme::borders_horizontal_scroll()), - details: Frame::left_aligned(details_title, para.into_paragraphs()) - .with_cancel_button() - .with_border(theme::borders_horizontal_scroll()), xpub_view: Frame::left_aligned( " \n ".into(), - Paragraph::new(&theme::TEXT_MONO, "".into()).into_paragraphs(), + Paragraph::new(&theme::TEXT_MONO, "").into_paragraphs(), ) .with_cancel_button() .with_border(theme::borders_horizontal_scroll()), @@ -81,24 +79,24 @@ where Ok(result) } - pub fn add_xpub(&mut self, title: T, xpub: T) -> Result<(), Error> { + pub fn add_xpub( + &mut self, + title: TString<'static>, + xpub: TString<'static>, + ) -> Result<(), Error> { self.xpubs .push((title, xpub)) .map_err(|_| Error::OutOfRange) } - fn switch_xpub(&mut self, i: usize, page: usize) -> usize - where - T: Clone, - { + fn switch_xpub(&mut self, i: usize, page: usize) -> usize { // Context is needed for updating child so that it can request repaint. In this // case the parent component that handles paging always requests complete // repaint after page change so we can use a dummy context here. let mut dummy_ctx = EventCtx::new(); - self.xpub_view - .update_title(&mut dummy_ctx, self.xpubs[i].0.clone()); + self.xpub_view.update_title(&mut dummy_ctx, self.xpubs[i].0); self.xpub_view.update_content(&mut dummy_ctx, |p| { - p.inner_mut().update(self.xpubs[i].1.clone()); + p.inner_mut().update(self.xpubs[i].1); let npages = p.page_count(); p.change_page(page); npages @@ -123,10 +121,7 @@ where } } -impl<T> Paginate for AddressDetails<T> -where - T: StringType + Clone, -{ +impl Paginate for AddressDetails { fn page_count(&mut self) -> usize { let total_xpub_pages: u8 = self.xpub_page_count.iter().copied().sum(); 2usize.saturating_add(total_xpub_pages.into()) @@ -142,10 +137,7 @@ where } } -impl<T> Component for AddressDetails<T> -where - T: StringType + Clone, -{ +impl Component for AddressDetails { type Msg = (); fn place(&mut self, bounds: Rect) -> Rect { @@ -201,10 +193,7 @@ where } #[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for AddressDetails<T> -where - T: StringType, -{ +impl crate::trace::Trace for AddressDetails { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("AddressDetails"); match self.current_page { diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index dbb513aa0a..037aa38294 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -32,7 +32,7 @@ pub struct Button { long_timer: Option<TimerToken>, } -impl<T> Button<T> { +impl Button { /// Offsets the baseline of the button text /// -x/+x => left/right /// -y/+y => up/down @@ -58,8 +58,8 @@ impl<T> Button<T> { Self::new(ButtonContent::Icon(icon)) } - pub const fn with_icon_and_text(content: IconText<T>) -> Self { - Self::new(ButtonContent::IconAndText::<T>(content)) + pub const fn with_icon_and_text(content: IconText) -> Self { + Self::new(ButtonContent::IconAndText(content)) } pub const fn with_icon_blend(bg: Icon, fg: Icon, fg_offset: Offset) -> Self { @@ -204,15 +204,16 @@ impl<T> Button<T> { match &self.content { ButtonContent::Empty => {} ButtonContent::Text(text) => { - let text = text.as_ref(); let start_of_baseline = self.area.center() + Self::BASELINE_OFFSET; - display::text_left( - start_of_baseline, - text, - style.font, - style.text_color, - style.button_color, - ); + text.map(|text| { + display::text_left( + start_of_baseline, + text, + style.font, + style.text_color, + style.button_color, + ); + }); } ButtonContent::Icon(icon) => { icon.draw( @@ -238,12 +239,13 @@ impl<T> Button<T> { match &self.content { ButtonContent::Empty => {} ButtonContent::Text(text) => { - let text = text.as_ref(); let start_of_baseline = self.area.left_center() + Self::BASELINE_OFFSET; - shape::Text::new(start_of_baseline, text) - .with_font(style.font) - .with_fg(style.text_color) - .render(target); + text.map(|text| { + shape::Text::new(start_of_baseline, text) + .with_font(style.font) + .with_fg(style.text_color) + .render(target); + }); } ButtonContent::Icon(icon) => { shape::ToifImage::new(self.area.center(), icon.toif) @@ -376,7 +378,7 @@ impl crate::trace::Trace for Button { ButtonContent::Text(text) => t.string("text", *text), ButtonContent::Icon(_) => t.bool("icon", true), ButtonContent::IconAndText(content) => { - t.string("text", content.text.as_ref().into()); + t.string("text", content.text.into()); t.bool("icon", true); } ButtonContent::IconBlend(_, _, _) => t.bool("icon", true), @@ -397,7 +399,7 @@ pub enum ButtonContent { Empty, Text(TString<'static>), Icon(Icon), - IconAndText(IconText<T>), + IconAndText(IconText), IconBlend(Icon, Icon, Offset), } @@ -419,18 +421,15 @@ pub struct ButtonStyle { pub border_width: i16, } -impl<T> Button<T> { +impl Button { pub fn cancel_confirm( - left: Button<T>, - right: Button<T>, + left: Button, + right: Button, left_is_small: bool, ) -> CancelConfirm< - T, impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, > - where - T: AsRef<str>, { let width = if left_is_small { theme::BUTTON_WIDTH @@ -450,21 +449,18 @@ impl<T> Button<T> { } pub fn cancel_confirm_text( - left: Option<T>, - right: Option<T>, + left: Option<TString<'static>>, + right: Option<TString<'static>>, ) -> CancelConfirm< - T, impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, > - where - T: AsRef<str>, { let left_is_small: bool; let left = if let Some(verb) = left { - left_is_small = verb.as_ref().len() <= 4; - if verb.as_ref() == "^" { + left_is_small = verb.len() <= 4; + if verb == "^".into() { Button::with_icon(theme::ICON_UP) } else { Button::with_text(verb) @@ -482,16 +478,13 @@ impl<T> Button<T> { } pub fn cancel_info_confirm( - confirm: T, - info: T, + confirm: TString<'static>, + info: TString<'static>, ) -> CancelInfoConfirm< - T, impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, > - where - T: AsRef<str>, { let right = Button::with_text(confirm) .styled(theme::button_confirm()) @@ -522,11 +515,10 @@ pub enum CancelConfirmMsg { Confirmed, } -type CancelInfoConfirm<T, F0, F1, F2> = FixedHeightBar< - Split<MsgMap<Button<T>, F0>, Split<MsgMap<Button<T>, F1>, MsgMap<Button<T>, F2>>>, ->; +type CancelInfoConfirm<F0, F1, F2> = + FixedHeightBar<Split<MsgMap<Button, F0>, Split<MsgMap<Button, F1>, MsgMap<Button, F2>>>>; -type CancelConfirm<T, F0, F1> = FixedHeightBar<Split<MsgMap<Button<T>, F0>, MsgMap<Button<T>, F1>>>; +type CancelConfirm<F0, F1> = FixedHeightBar<Split<MsgMap<Button, F0>, MsgMap<Button, F1>>>; #[derive(Clone, Copy)] pub enum CancelInfoConfirmMsg { @@ -536,25 +528,23 @@ pub enum CancelInfoConfirmMsg { } #[derive(PartialEq, Eq)] -pub struct IconText<T> { - text: T, +pub struct IconText { + text: &'static str, icon: Icon, } -impl<T> IconText<T> -where - T: AsRef<str>, -{ +impl IconText { const ICON_SPACE: i16 = 46; const ICON_MARGIN: i16 = 4; const TEXT_MARGIN: i16 = 6; - pub fn new(text: T, icon: Icon) -> Self { + pub fn new(text: &'static str, icon: Icon) -> Self { Self { text, icon } } pub fn paint(&self, area: Rect, style: &ButtonStyle, baseline_offset: Offset) { - let width = style.font.text_width(self.text.as_ref()); + let width = style.font.text_width(self.text); + let height = style.font.text_height(); let mut use_icon = false; let mut use_text = false; @@ -563,7 +553,8 @@ where area.top_left().x + ((Self::ICON_SPACE + Self::ICON_MARGIN) / 2), area.center().y, ); - let mut text_pos = area.left_center() + baseline_offset; + let mut text_pos = + area.center() + Offset::new(-width / 2, height / 2) + baseline_offset; if area.width() > (Self::ICON_SPACE + Self::TEXT_MARGIN + width) { //display both icon and text @@ -581,7 +572,7 @@ where if use_text { display::text_left( text_pos, - self.text.as_ref(), + self.text, style.font, style.text_color, style.button_color, @@ -629,7 +620,7 @@ where } if use_text { - shape::Text::new(text_pos, self.text.as_ref()) + shape::Text::new(text_pos, self.text) .with_fg(style.text_color) .render(target); } diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs index 506b3d5633..eabb074037 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -3,15 +3,15 @@ use core::mem; use crate::{ error::Error, maybe_trace::MaybeTrace, - micropython::buffer::StrBuffer, + strutil::TString, translations::TR, ui::{ component::{ base::Never, Bar, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, Split, }, - constant, display::loader::{loader_circular_uncompress, LoaderDimensions}, geometry::{Insets, Offset, Rect}, + model_mercury::constant, shape, shape::Renderer, util::animation_disabled, @@ -27,49 +27,43 @@ const LOADER_INNER: i16 = 28; const LOADER_OFFSET: i16 = -34; const LOADER_SPEED: u16 = 5; -pub struct CoinJoinProgress<T, U> { +pub struct CoinJoinProgress<U> { value: u16, indeterminate: bool, - content: Child<Frame<Split<Empty, U>, StrBuffer>>, + content: Child<Frame<Split<Empty, U>>>, // Label is not a child since circular loader paints large black rectangle which overlaps it. // To work around this, draw label every time loader is drawn. - label: Label<T>, + label: Label<'static>, } -impl<T, U> CoinJoinProgress<T, U> -where - T: AsRef<str>, -{ +impl<U> CoinJoinProgress<U> { pub fn new( - text: T, + text: TString<'static>, indeterminate: bool, - ) -> Result<CoinJoinProgress<T, impl Component<Msg = Never> + MaybeTrace>, Error> - where - T: AsRef<str>, - { + ) -> Result<CoinJoinProgress<impl Component<Msg = Never> + MaybeTrace>, Error> { let style = theme::label_coinjoin_progress(); - let label = Label::centered( - TryInto::<StrBuffer>::try_into(TR::coinjoin__title_do_not_disconnect)?, - style, - ) - .vertically_centered(); + let label = Label::centered(TR::coinjoin__title_do_not_disconnect.into(), style) + .vertically_centered(); let bg = Bar::new(style.background_color, theme::BG, 2); let inner = (bg, label); CoinJoinProgress::with_background(text, inner, indeterminate) } } -impl<T, U> CoinJoinProgress<T, U> +impl<U> CoinJoinProgress<U> where - T: AsRef<str>, U: Component<Msg = Never>, { - pub fn with_background(text: T, inner: U, indeterminate: bool) -> Result<Self, Error> { + pub fn with_background( + text: TString<'static>, + inner: U, + indeterminate: bool, + ) -> Result<Self, Error> { Ok(Self { value: 0, indeterminate, content: Frame::centered( - TR::coinjoin__title_progress.try_into()?, + TR::coinjoin__title_progress.into(), Split::bottom(RECTANGLE_HEIGHT, 0, Empty, inner), ) .into_child(), @@ -78,9 +72,8 @@ where } } -impl<T, U> Component for CoinJoinProgress<T, U> +impl<U> Component for CoinJoinProgress<U> where - T: AsRef<str>, U: Component<Msg = Never>, { type Msg = Never; @@ -167,9 +160,8 @@ where } #[cfg(feature = "ui_debug")] -impl<T, U> crate::trace::Trace for CoinJoinProgress<T, U> +impl<U> crate::trace::Trace for CoinJoinProgress<U> where - T: AsRef<str>, U: Component + crate::trace::Trace, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index 49c344ca85..c66d37a91f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + strutil::TString, ui::{ component::{ image::BlendedImage, @@ -97,18 +97,17 @@ where } } -pub struct IconDialog<T, U> { +pub struct IconDialog<U> { image: Child<BlendedImage>, - paragraphs: Paragraphs<ParagraphVecShort<T>>, + paragraphs: Paragraphs<ParagraphVecShort<'static>>, controls: Child<U>, } -impl<T, U> IconDialog<T, U> +impl<U> IconDialog<U> where - T: StringType, U: Component, { - pub fn new(icon: BlendedImage, title: T, controls: U) -> Self { + pub fn new(icon: BlendedImage, title: impl Into<TString<'static>>, controls: U) -> Self { Self { image: Child::new(icon), paragraphs: Paragraphs::new(ParagraphVecShort::from_iter([Paragraph::new( @@ -125,26 +124,26 @@ where } } - pub fn with_paragraph(mut self, para: Paragraph<T>) -> Self { - if !para.content().as_ref().is_empty() { + pub fn with_paragraph(mut self, para: Paragraph<'static>) -> Self { + if !para.content().is_empty() { self.paragraphs.inner_mut().add(para); } self } - pub fn with_text(self, style: &'static TextStyle, text: T) -> Self { + pub fn with_text(self, style: &'static TextStyle, text: impl Into<TString<'static>>) -> Self { self.with_paragraph(Paragraph::new(style, text).centered()) } - pub fn with_description(self, description: T) -> Self { + pub fn with_description(self, description: impl Into<TString<'static>>) -> Self { self.with_text(&theme::TEXT_NORMAL_OFF_WHITE, description) } - pub fn with_value(self, value: T) -> Self { + pub fn with_value(self, value: impl Into<TString<'static>>) -> Self { self.with_text(&theme::TEXT_MONO, value) } - pub fn new_shares(lines: [T; 4], controls: U) -> Self { + pub fn new_shares(lines: [impl Into<TString<'static>>; 4], controls: U) -> Self { let [l0, l1, l2, l3] = lines; Self { image: Child::new(BlendedImage::new( @@ -171,9 +170,8 @@ where pub const VALUE_SPACE: i16 = 5; } -impl<T, U> Component for IconDialog<T, U> +impl<U> Component for IconDialog<U> where - T: StringType, U: Component, { type Msg = DialogMsg<Never, U::Msg>; @@ -219,9 +217,8 @@ where } #[cfg(feature = "ui_debug")] -impl<T, U> crate::trace::Trace for IconDialog<T, U> +impl<U> crate::trace::Trace for IconDialog<U> where - T: StringType, U: crate::trace::Trace, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index 4da615068e..93c279ec9b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -1,14 +1,17 @@ -use crate::ui::{ - component::{image::Image, Child, Component, Event, EventCtx, Label}, - display, - geometry::{Insets, Rect}, - model_mercury::component::{ - fido_icons::get_fido_icon_data, - swipe::{Swipe, SwipeDirection}, - theme, ScrollBar, +use crate::{ + strutil::TString, + ui::{ + component::{image::Image, Child, Component, Event, EventCtx, Label}, + display, + geometry::{Insets, Rect}, + model_mercury::component::{ + fido_icons::get_fido_icon_data, + swipe::{Swipe, SwipeDirection}, + theme, ScrollBar, + }, + shape, + shape::Renderer, }, - shape, - shape::Renderer, }; use super::CancelConfirmMsg; @@ -25,10 +28,10 @@ pub enum FidoMsg { Cancelled, } -pub struct FidoConfirm<F: Fn(usize) -> T, T, U> { +pub struct FidoConfirm<F: Fn(usize) -> TString<'static>, U> { page_swipe: Swipe, - app_name: Label<T>, - account_name: Label<T>, + app_name: Label<'static>, + account_name: Label<'static>, icon: Child<Image>, /// Function/closure that will return appropriate page on demand. get_account: F, @@ -37,20 +40,19 @@ pub struct FidoConfirm<F: Fn(usize) -> T, T, U> { controls: U, } -impl<F, T, U> FidoConfirm<F, T, U> +impl<F, U> FidoConfirm<F, U> where - F: Fn(usize) -> T, - T: AsRef<str> + From<&'static str>, + F: Fn(usize) -> TString<'static>, U: Component<Msg = CancelConfirmMsg>, { pub fn new( - app_name: T, + app_name: TString<'static>, get_account: F, page_count: usize, - icon_name: Option<T>, + icon_name: Option<TString<'static>>, controls: U, ) -> Self { - let icon_data = get_fido_icon_data(icon_name.as_ref()); + let icon_data = get_fido_icon_data(icon_name); // Preparing scrollbar and setting its page-count. let mut scrollbar = ScrollBar::horizontal(); @@ -118,10 +120,9 @@ where } } -impl<F, T, U> Component for FidoConfirm<F, T, U> +impl<F, U> Component for FidoConfirm<F, U> where - F: Fn(usize) -> T, - T: AsRef<str> + From<&'static str>, + F: Fn(usize) -> TString<'static>, U: Component<Msg = CancelConfirmMsg>, { type Msg = FidoMsg; @@ -200,8 +201,8 @@ where // Account name is optional. // Showing it only if it differs from app name. // (Dummy requests usually have some text as both app_name and account_name.) - let account_name = self.account_name.text().as_ref(); - let app_name = self.app_name.text().as_ref(); + let account_name = self.account_name.text(); + let app_name = self.app_name.text(); if !account_name.is_empty() && account_name != app_name { self.account_name.paint(); } @@ -230,8 +231,8 @@ where // Account name is optional. // Showing it only if it differs from app name. // (Dummy requests usually have some text as both app_name and account_name.) - let account_name = self.account_name.text().as_ref(); - let app_name = self.app_name.text().as_ref(); + let account_name = self.account_name.text(); + let app_name = self.app_name.text(); if !account_name.is_empty() && account_name != app_name { self.account_name.render(target); } @@ -251,9 +252,9 @@ where } #[cfg(feature = "ui_debug")] -impl<F, T, U> crate::trace::Trace for FidoConfirm<F, T, U> +impl<F, T> crate::trace::Trace for FidoConfirm<F, T> where - F: Fn(usize) -> T, + F: Fn(usize) -> TString<'static>, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("FidoConfirm"); diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs index 5a3d675757..730232cf4d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs @@ -3,6 +3,9 @@ //! do not edit manually! +use crate::strutil::TString; + + const ICON_APPLE: &[u8] = include_res!("model_mercury/res/fido/icon_apple.toif"); const ICON_AWS: &[u8] = include_res!("model_mercury/res/fido/icon_aws.toif"); const ICON_BINANCE: &[u8] = include_res!("model_mercury/res/fido/icon_binance.toif"); @@ -39,9 +42,9 @@ const ICON_WEBAUTHN: &[u8] = include_res!("model_mercury/res/fido/icon_webauthn. /// Translates icon name into its data. /// Returns default `ICON_WEBAUTHN` when the icon is not found or name not /// supplied. -pub fn get_fido_icon_data<T: AsRef<str>>(icon_name: Option<T>) -> &'static [u8] { +pub fn get_fido_icon_data(icon_name: Option<TString<'static>>) -> &'static [u8] { if let Some(icon_name) = icon_name { - match icon_name.as_ref() { + icon_name.map(|c| match c { "apple" => ICON_APPLE, "aws" => ICON_AWS, "binance" => ICON_BINANCE, @@ -73,7 +76,7 @@ pub fn get_fido_icon_data<T: AsRef<str>>(icon_name: Option<T>) -> &'static [u8] "stripe" => ICON_STRIPE, "tutanota" => ICON_TUTANOTA, _ => ICON_WEBAUTHN, - } + }) } else { ICON_WEBAUTHN } diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako index 068360df56..5b832e9a27 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako +++ b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako @@ -2,6 +2,9 @@ //! (by running `make templates` in `core`) //! do not edit manually! + +use crate::strutil::TString; + <% icons: list[tuple[str, str]] = [] for app in fido: @@ -21,14 +24,14 @@ const ICON_WEBAUTHN: &[u8] = include_res!("model_mercury/res/fido/icon_webauthn. /// Translates icon name into its data. /// Returns default `ICON_WEBAUTHN` when the icon is not found or name not /// supplied. -pub fn get_fido_icon_data<T: AsRef<str>>(icon_name: Option<T>) -> &'static [u8] { +pub fn get_fido_icon_data(icon_name: Option<TString<'static>>) -> &'static [u8] { if let Some(icon_name) = icon_name { - match icon_name.as_ref() { + icon_name.map(|c| match c { % for icon_name, var_name in icons: "${icon_name}" => ICON_${var_name}, % endfor _ => ICON_WEBAUTHN, - } + }) } else { ICON_WEBAUTHN } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index aa8adf7062..bd74351e01 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -62,7 +62,7 @@ where self } - pub fn with_subtitle(mut self, subtitle: U) -> Self { + pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { let style = theme::TEXT_SUB; self.title = Child::new(self.title.into_inner().top_aligned()); self.subtitle = Some(Child::new(Label::new( diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index da7418633a..62e95cc0f2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -288,6 +288,13 @@ impl Component for Homescreen { } self.label.map(|t| { + let r = Rect::new(Point::new(6, 198), Point::new(234, 233)); + shape::Bar::new(r) + .with_bg(Color::black()) + .with_alpha(89) + .with_radius(3) + .render(target); + let style = theme::TEXT_DEMIBOLD; let pos = Point::new(self.pad.area.center().x, LABEL_Y); shape::Text::new(pos, t) @@ -355,15 +362,15 @@ impl crate::trace::Trace for Homescreen { } } -pub struct Lockscreen { - label: TString<'static>, +pub struct Lockscreen<'a> { + label: TString<'a>, custom_image: Option<Gc<[u8]>>, bootscreen: bool, coinjoin_authorized: bool, } -impl Lockscreen { - pub fn new(label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool) -> Self { +impl<'a> Lockscreen<'a> { + pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { Lockscreen { label, custom_image: get_user_custom_image().ok(), @@ -373,7 +380,7 @@ impl Lockscreen { } } -impl Component for Lockscreen { +impl Component for Lockscreen<'_> { type Msg = HomescreenMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -470,7 +477,7 @@ impl Component for Lockscreen { shape::JpegImage::new(center, img_data) .with_align(Alignment2D::CENTER) .with_blur(4) - .with_dim(130) + .with_dim(140) .render(target); } else if is_image_toif(img_data) { shape::ToifImage::new(center, unwrap!(Toif::new(img_data))) @@ -591,7 +598,7 @@ fn is_image_toif(buffer: &[u8]) -> bool { } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Lockscreen { +impl crate::trace::Trace for Lockscreen<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Lockscreen"); } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index d4716494c7..8697af3683 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -23,9 +23,9 @@ use heapless::String; const MAX_LENGTH: usize = 8; pub struct Bip39Input { - button: Button<&'static str>, + button: Button<>, // used only to keep track of suggestion text color - button_suggestion: Button<&'static str>, + button_suggestion: Button<>, textbox: TextBox<MAX_LENGTH>, multi_tap: MultiTapKeyboard, options_num: Option<usize>, @@ -228,7 +228,7 @@ impl Bip39Input { // Styling the input to reflect already filled word Self { button: Button::with_icon(theme::ICON_LIST_CHECK).styled(theme::button_pin_confirm()), - textbox: TextBox::new(String::from(word)), + textbox: TextBox::new(unwrap!(String::try_from(word))), multi_tap: MultiTapKeyboard::new(), options_num: bip39::options_num(word), suggested_word: bip39::complete_word(word), @@ -310,7 +310,7 @@ impl Bip39Input { // Disabled button. self.button.disable(ctx); self.button.set_stylesheet(ctx, theme::button_pin()); - self.button.set_content(ctx, ButtonContent::Text("")); + self.button.set_content(ctx, ButtonContent::Text("".into())); } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index ed8bd2c84c..def0f6897b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -1,11 +1,14 @@ -use crate::ui::{ - component::{maybe::paint_overlapping, Child, Component, Event, EventCtx, Label, Maybe}, - geometry::{Alignment2D, Grid, Offset, Rect}, - model_mercury::{ - component::{Button, ButtonMsg, Swipe, SwipeDirection}, - theme, +use crate::{ + strutil::TString, + ui::{ + component::{maybe::paint_overlapping, Child, Component, Event, EventCtx, Label, Maybe}, + geometry::{Alignment2D, Grid, Offset, Rect}, + model_mercury::{ + component::{Button, ButtonMsg, Swipe, SwipeDirection}, + theme, + }, + shape::Renderer, }, - shape::Renderer, }; pub const MNEMONIC_KEY_COUNT: usize = 9; @@ -15,27 +18,26 @@ pub enum MnemonicKeyboardMsg { Previous, } -pub struct MnemonicKeyboard<T, U> { +pub struct MnemonicKeyboard<T> { /// Initial prompt, displayed on empty input. - prompt: Child<Maybe<Label<U>>>, + prompt: Child<Maybe<Label<'static>>>, /// Backspace button. - back: Child<Maybe<Button<&'static str>>>, + back: Child<Maybe<Button>>, /// Input area, acting as the auto-complete and confirm button. input: Child<Maybe<T>>, /// Key buttons. - keys: [Child<Button<&'static str>>; MNEMONIC_KEY_COUNT], + keys: [Child<Button>; MNEMONIC_KEY_COUNT], /// Swipe controller - allowing for going to the previous word. swipe: Swipe, /// Whether going back is allowed (is not on the very first word). can_go_back: bool, } -impl<T, U> MnemonicKeyboard<T, U> +impl<T> MnemonicKeyboard<T> where T: MnemonicInput, - U: AsRef<str>, { - pub fn new(input: T, prompt: U, can_go_back: bool) -> Self { + pub fn new(input: T, prompt: TString<'static>, can_go_back: bool) -> Self { // Input might be already pre-filled let prompt_visible = input.is_empty(); @@ -58,7 +60,7 @@ where )), input: Child::new(Maybe::new(theme::BG, input, !prompt_visible)), keys: T::keys() - .map(|t| Button::with_text(t).styled(theme::button_pin())) + .map(|t| Button::with_text(t.into()).styled(theme::button_pin())) .map(Child::new), swipe: Swipe::new().right(), can_go_back, @@ -100,10 +102,9 @@ where } } -impl<T, U> Component for MnemonicKeyboard<T, U> +impl<T> Component for MnemonicKeyboard<T> where T: MnemonicInput, - U: AsRef<str>, { type Msg = MnemonicKeyboardMsg; @@ -221,10 +222,9 @@ pub enum MnemonicInputMsg { } #[cfg(feature = "ui_debug")] -impl<T, U> crate::trace::Trace for MnemonicKeyboard<T, U> +impl<T> crate::trace::Trace for MnemonicKeyboard<T> where T: MnemonicInput + crate::trace::Trace, - U: AsRef<str>, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("MnemonicKeyboard"); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index bbb9f55b3f..304f13339b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -1,18 +1,21 @@ -use crate::ui::{ - component::{ - base::ComponentExt, text::common::TextBox, Child, Component, Event, EventCtx, Never, +use crate::{ + strutil::TString, + ui::{ + component::{ + base::ComponentExt, text::common::TextBox, Child, Component, Event, EventCtx, Never, + }, + display, + geometry::{Grid, Offset, Rect}, + model_mercury::component::{ + button::{Button, ButtonContent, ButtonMsg}, + keyboard::common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, + swipe::{Swipe, SwipeDirection}, + theme, ScrollBar, + }, + shape, + shape::Renderer, + util::long_line_content_with_ellipsis, }, - display, - geometry::{Grid, Offset, Rect}, - model_mercury::component::{ - button::{Button, ButtonContent, ButtonMsg}, - keyboard::common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, - swipe::{Swipe, SwipeDirection}, - theme, ScrollBar, - }, - shape, - shape::Renderer, - util::long_line_content_with_ellipsis, }; use core::cell::Cell; @@ -25,9 +28,9 @@ pub enum PassphraseKeyboardMsg { pub struct PassphraseKeyboard { page_swipe: Swipe, input: Child<Input>, - back: Child<Button<&'static str>>, - confirm: Child<Button<&'static str>>, - keys: [Child<Button<&'static str>>; KEY_COUNT], + back: Child<Button>, + confirm: Child<Button>, + keys: [Child<Button>; KEY_COUNT], scrollbar: ScrollBar, fade: Cell<bool>, } @@ -71,20 +74,20 @@ impl PassphraseKeyboard { } } - fn key_text(content: &ButtonContent<&'static str>) -> &'static str { + fn key_text(content: &ButtonContent) -> TString<'static> { match content { - ButtonContent::Text(text) => text, - ButtonContent::Icon(_) => " ", - ButtonContent::IconAndText(_) => " ", - ButtonContent::Empty => "", - ButtonContent::IconBlend(_, _, _) => "", + ButtonContent::Text(text) => *text, + ButtonContent::Icon(_) => " ".into(), + ButtonContent::IconAndText(_) => " ".into(), + ButtonContent::Empty => "".into(), + ButtonContent::IconBlend(_, _, _) => "".into(), } } - fn key_content(text: &'static str) -> ButtonContent<&'static str> { + fn key_content(text: &'static str) -> ButtonContent { match text { " " => ButtonContent::Icon(theme::ICON_SPACE), - t => ButtonContent::Text(t), + t => ButtonContent::Text(t.into()), } } @@ -274,7 +277,7 @@ impl Component for PassphraseKeyboard { // character in textbox. If not, let's just append the first character. let text = Self::key_text(btn.inner().content()); self.input.mutate(ctx, |ctx, i| { - let edit = i.multi_tap.click_key(ctx, key, text); + let edit = text.map(|c| i.multi_tap.click_key(ctx, key, c)); i.textbox.apply(ctx, edit); }); self.after_edit(ctx); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index d8846a28e0..b3be2deb62 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -2,6 +2,7 @@ use core::mem; use heapless::String; use crate::{ + strutil::TString, time::Duration, trezorhal::random, ui::{ @@ -41,32 +42,29 @@ const HEADER_PADDING: Insets = Insets::new( HEADER_PADDING_SIDE, ); -pub struct PinKeyboard<T> { +pub struct PinKeyboard<'a> { allow_cancel: bool, - major_prompt: Child<Label<T>>, - minor_prompt: Child<Label<T>>, - major_warning: Option<Child<Label<T>>>, + major_prompt: Child<Label<'a>>, + minor_prompt: Child<Label<'a>>, + major_warning: Option<Child<Label<'a>>>, textbox: Child<PinDots>, textbox_pad: Pad, - erase_btn: Child<Maybe<Button<&'static str>>>, - cancel_btn: Child<Maybe<Button<&'static str>>>, - confirm_btn: Child<Button<&'static str>>, - digit_btns: [Child<Button<&'static str>>; DIGIT_COUNT], + erase_btn: Child<Maybe<Button>>, + cancel_btn: Child<Maybe<Button>>, + confirm_btn: Child<Button>, + digit_btns: [Child<Button>; DIGIT_COUNT], warning_timer: Option<TimerToken>, } -impl<T> PinKeyboard<T> -where - T: AsRef<str>, -{ +impl<'a> PinKeyboard<'a> { // Label position fine-tuning. const MAJOR_OFF: Offset = Offset::y(11); const MINOR_OFF: Offset = Offset::y(11); pub fn new( - major_prompt: T, - minor_prompt: T, - major_warning: Option<T>, + major_prompt: TString<'a>, + minor_prompt: TString<'a>, + major_warning: Option<TString<'a>>, allow_cancel: bool, ) -> Self { // Control buttons. @@ -104,12 +102,12 @@ where } } - fn generate_digit_buttons() -> [Child<Button<&'static str>>; DIGIT_COUNT] { + fn generate_digit_buttons() -> [Child<Button>; DIGIT_COUNT] { // Generate a random sequence of digits from 0 to 9. let mut digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; random::shuffle(&mut digits); digits - .map(Button::with_text) + .map(|c| Button::with_text(c.into())) .map(|b| b.styled(theme::button_pin())) .map(Child::new) } @@ -148,10 +146,7 @@ where } } -impl<T> Component for PinKeyboard<T> -where - T: AsRef<str>, -{ +impl Component for PinKeyboard<'_> { type Msg = PinKeyboardMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -240,7 +235,9 @@ where for btn in &mut self.digit_btns { if let Some(Clicked) = btn.event(ctx, event) { if let ButtonContent::Text(text) = btn.inner().content() { - self.textbox.mutate(ctx, |ctx, t| t.push(ctx, text)); + text.map(|text| { + self.textbox.mutate(ctx, |ctx, t| t.push(ctx, text)); + }); self.pin_modified(ctx); return None; } @@ -551,10 +548,7 @@ impl Component for PinDots { } #[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for PinKeyboard<T> -where - T: AsRef<str>, -{ +impl crate::trace::Trace for PinKeyboard<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("PinKeyboard"); // So that debuglink knows the locations of the buttons @@ -562,7 +556,9 @@ where for btn in self.digit_btns.iter() { let btn_content = btn.inner().content(); if let ButtonContent::Text(text) = btn_content { - unwrap!(digits_order.push_str(text)); + text.map(|text| { + unwrap!(digits_order.push_str(text)); + }); } } t.string("digits_order", digits_order.as_str().into()); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index d4d14bfb92..2aba48275a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -30,7 +30,7 @@ use crate::{ const MAX_LENGTH: usize = 8; pub struct Slip39Input { - button: Button<&'static str>, + button: Button, textbox: TextBox<MAX_LENGTH>, multi_tap: MultiTapKeyboard, final_word: Option<&'static str>, @@ -360,7 +360,7 @@ impl Slip39Input { } else { // Disabled button. self.button.disable(ctx); - self.button.set_content(ctx, ButtonContent::Text("")); + self.button.set_content(ctx, ButtonContent::Text("".into())); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs index a2af6c54ef..bdccf58bf9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -13,7 +13,7 @@ const LABELS: [&str; 5] = ["12", "18", "20", "24", "33"]; const CELLS: [(usize, usize); 5] = [(0, 0), (0, 2), (0, 4), (1, 0), (1, 2)]; pub struct SelectWordCount { - button: [Button<&'static str>; NUMBERS.len()], + button: [Button; NUMBERS.len()], } pub enum SelectWordCountMsg { @@ -23,7 +23,7 @@ pub enum SelectWordCountMsg { impl SelectWordCount { pub fn new() -> Self { SelectWordCount { - button: LABELS.map(|t| Button::with_text(t).styled(theme::button_pin())), + button: LABELS.map(|t| Button::with_text(t.into()).styled(theme::button_pin())), } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index 891bb8ab2b..c39ac6ba2e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -1,7 +1,6 @@ use crate::{ error::Error, - micropython::buffer::StrBuffer, - strutil::{self, StringType}, + strutil::{self, StringType, TString}, translations::TR, ui::{ component::{ @@ -23,23 +22,22 @@ pub enum NumberInputDialogMsg { InfoRequested, } -pub struct NumberInputDialog<T, F> +pub struct NumberInputDialog<F> where - F: Fn(u32) -> T, + F: Fn(u32) -> TString<'static>, { area: Rect, description_func: F, input: Child<NumberInput>, - paragraphs: Child<Paragraphs<Paragraph<T>>>, + paragraphs: Child<Paragraphs<Paragraph<'static>>>, paragraphs_pad: Pad, - info_button: Child<Button<StrBuffer>>, - confirm_button: Child<Button<StrBuffer>>, + info_button: Child<Button>, + confirm_button: Child<Button>, } -impl<T, F> NumberInputDialog<T, F> +impl<F> NumberInputDialog<F> where - F: Fn(u32) -> T, - T: StringType, + F: Fn(u32) -> TString<'static>, { pub fn new(min: u32, max: u32, init_value: u32, description_func: F) -> Result<Self, Error> { let text = description_func(init_value); @@ -49,8 +47,8 @@ where input: NumberInput::new(min, max, init_value).into_child(), paragraphs: Paragraphs::new(Paragraph::new(&theme::TEXT_NORMAL, text)).into_child(), paragraphs_pad: Pad::with_background(theme::BG), - info_button: Button::with_text(TR::buttons__info.try_into()?).into_child(), - confirm_button: Button::with_text(TR::buttons__continue.try_into()?) + info_button: Button::with_text(TR::buttons__info.into()).into_child(), + confirm_button: Button::with_text(TR::buttons__continue.into()) .styled(theme::button_confirm()) .into_child(), }) @@ -73,10 +71,9 @@ where } } -impl<T, F> Component for NumberInputDialog<T, F> +impl<F> Component for NumberInputDialog<F> where - T: StringType, - F: Fn(u32) -> T, + F: Fn(u32) -> TString<'static>, { type Msg = NumberInputDialogMsg; @@ -143,10 +140,9 @@ where } #[cfg(feature = "ui_debug")] -impl<T, F> crate::trace::Trace for NumberInputDialog<T, F> +impl<F> crate::trace::Trace for NumberInputDialog<F> where - T: StringType, - F: Fn(u32) -> T, + F: Fn(u32) -> TString<'static>, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("NumberInputDialog"); @@ -163,8 +159,8 @@ pub enum NumberInputMsg { pub struct NumberInput { area: Rect, - dec: Child<Button<&'static str>>, - inc: Child<Button<&'static str>>, + dec: Child<Button>, + inc: Child<Button>, min: u32, max: u32, value: u32, @@ -172,10 +168,10 @@ pub struct NumberInput { impl NumberInput { pub fn new(min: u32, max: u32, value: u32) -> Self { - let dec = Button::with_text("-") + let dec = Button::with_text("-".into()) .styled(theme::button_counter()) .into_child(); - let inc = Button::with_text("+") + let inc = Button::with_text("+".into()) .styled(theme::button_counter()) .into_child(); let value = value.clamp(min, max); @@ -226,7 +222,7 @@ impl Component for NumberInput { let mut buf = [0u8; 10]; if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { let digit_font = Font::DEMIBOLD; - let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET.y; + let y_offset = digit_font.text_height() / 2 + Button::BASELINE_OFFSET.y; display::rect_fill(self.area, theme::BG); display::text_center( self.area.center() + Offset::y(y_offset), @@ -245,7 +241,7 @@ impl Component for NumberInput { if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { let digit_font = Font::DEMIBOLD; - let y_offset = digit_font.text_height() / 2 + Button::<&str>::BASELINE_OFFSET.y; + let y_offset = digit_font.text_height() / 2 + Button::BASELINE_OFFSET.y; shape::Bar::new(self.area).with_bg(theme::BG).render(target); shape::Text::new(self.area.center() + Offset::y(y_offset), text) diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs index 5fda83a5f2..e6dfec4706 100644 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -1,6 +1,6 @@ use crate::{ error::Error, - micropython::buffer::StrBuffer, + strutil::TString, time::Instant, translations::TR, ui::{ @@ -22,7 +22,7 @@ use core::cell::Cell; /// Allows pagination of inner component. Shows scroll bar, confirm & cancel /// buttons. Optionally handles hold-to-confirm with loader. -pub struct ButtonPage<T, U> { +pub struct ButtonPage<T> { /// Inner component. content: T, /// Cleared when page changes. @@ -32,10 +32,10 @@ pub struct ButtonPage<T, U> { scrollbar: ScrollBar, /// Hold-to-confirm mode whenever this is `Some(loader)`. loader: Option<Loader>, - button_cancel: Option<Button<U>>, - button_confirm: Button<U>, - button_prev: Button<&'static str>, - button_next: Button<&'static str>, + button_cancel: Option<Button>, + button_confirm: Button, + button_prev: Button, + button_next: Button, /// Show cancel button instead of back button. cancel_from_any_page: bool, /// Whether to pass-through left swipe to parent component. @@ -46,24 +46,23 @@ pub struct ButtonPage<T, U> { fade: Cell<Option<u16>>, } -impl<T> ButtonPage<T, StrBuffer> +impl<T> ButtonPage<T> where T: Paginate, T: Component, { pub fn with_hold(mut self) -> Result<Self, Error> { - self.button_confirm = Button::with_text(TR::buttons__hold_to_confirm.try_into()?) - .styled(theme::button_confirm()); + self.button_confirm = + Button::with_text(TR::buttons__hold_to_confirm.into()).styled(theme::button_confirm()); self.loader = Some(Loader::new()); Ok(self) } } -impl<T, U> ButtonPage<T, U> +impl<T> ButtonPage<T> where T: Paginate, T: Component, - U: AsRef<str> + From<&'static str>, { pub fn new(content: T, background: Color) -> Self { Self { @@ -88,13 +87,17 @@ where self } - pub fn with_cancel_confirm(mut self, left: Option<U>, right: Option<U>) -> Self { + pub fn with_cancel_confirm( + mut self, + left: Option<TString<'static>>, + right: Option<TString<'static>>, + ) -> Self { let cancel = match left { - Some(verb) => match verb.as_ref() { + Some(verb) => verb.map(|s| match s { "^" => Button::with_icon(theme::ICON_UP), "<" => Button::with_icon(theme::ICON_BACK), _ => Button::with_text(verb), - }, + }), _ => Button::with_icon(theme::ICON_CANCEL), }; let confirm = match right { @@ -285,11 +288,10 @@ enum HandleResult<T> { Continue, } -impl<T, U> Component for ButtonPage<T, U> +impl<T> Component for ButtonPage<T> where T: Paginate, T: Component, - U: AsRef<str> + From<&'static str>, { type Msg = PageMsg<T::Msg>; @@ -297,7 +299,7 @@ where let small_left_button = match (&self.button_cancel, &self.button_confirm) { (None, _) => true, (Some(cancel), confirm) => match (cancel.content(), confirm.content()) { - (ButtonContent::Text(t), _) => t.as_ref().len() <= 4, + (ButtonContent::Text(t), _) => t.len() <= 4, (ButtonContent::Icon(_), ButtonContent::Icon(_)) => false, _ => true, }, @@ -455,7 +457,7 @@ where } #[cfg(feature = "ui_debug")] -impl<T, U> crate::trace::Trace for ButtonPage<T, U> +impl<T> crate::trace::Trace for ButtonPage<T> where T: crate::trace::Trace, { @@ -532,12 +534,6 @@ mod tests { const SCREEN: Rect = constant::screen().inset(theme::borders()); - impl SkipPrefix for &str { - fn skip_prefix(&self, chars: usize) -> Self { - &self[chars..] - } - } - fn swipe(component: &mut impl Component, points: &[(i16, i16)]) { let last = points.len().saturating_sub(1); let mut first = true; @@ -567,10 +563,7 @@ mod tests { #[test] fn paragraphs_empty() { - let mut page = ButtonPage::<_, &'static str>::new( - Paragraphs::<[Paragraph<&'static str>; 0]>::new([]), - theme::BG, - ); + let mut page = ButtonPage::new(Paragraphs::<[Paragraph<'static>; 0]>::new([]), theme::BG); page.place(SCREEN); let expected = serde_json::json!({ @@ -593,7 +586,7 @@ mod tests { #[test] fn paragraphs_single() { - let mut page = ButtonPage::<_, &'static str>::new( + let mut page = ButtonPage::new( Paragraphs::new([ Paragraph::new( &theme::TEXT_NORMAL, @@ -631,7 +624,7 @@ mod tests { #[test] fn paragraphs_one_long() { - let mut page = ButtonPage::<_, &'static str>::new( + let mut page = ButtonPage::new( Paragraphs::new( Paragraph::new( &theme::TEXT_BOLD, @@ -689,7 +682,7 @@ mod tests { #[test] fn paragraphs_three_long() { - let mut page = ButtonPage::<_, &'static str>::new( + let mut page = ButtonPage::new( Paragraphs::new([ Paragraph::new( &theme::TEXT_BOLD, @@ -789,7 +782,7 @@ mod tests { #[test] fn paragraphs_hard_break() { - let mut page = ButtonPage::<_, &'static str>::new( + let mut page = ButtonPage::new( Paragraphs::new([ Paragraph::new(&theme::TEXT_NORMAL, "Short one.").break_after(), Paragraph::new(&theme::TEXT_NORMAL, "Short two.").break_after(), diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index 91e27b2383..6943792738 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -1,8 +1,7 @@ use core::mem; use crate::{ - error::Error, - strutil::StringType, + strutil::TString, ui::{ component::{ base::ComponentExt, @@ -21,27 +20,22 @@ use crate::{ use super::theme; -pub struct Progress<T> { - title: Child<Label<T>>, +pub struct Progress { + title: Child<Label<'static>>, value: u16, loader_y_offset: i16, indeterminate: bool, - description: Child<Paragraphs<Paragraph<T>>>, + description: Child<Paragraphs<Paragraph<'static>>>, description_pad: Pad, - update_description: fn(&str) -> Result<T, Error>, } -impl<T> Progress<T> -where - T: StringType, -{ +impl Progress { const AREA: Rect = constant::screen().inset(theme::borders()); pub fn new( - title: T, + title: TString<'static>, indeterminate: bool, - description: T, - update_description: fn(&str) -> Result<T, Error>, + description: TString<'static>, ) -> Self { Self { title: Label::centered(title, theme::label_progress()).into_child(), @@ -53,15 +47,11 @@ where ) .into_child(), description_pad: Pad::with_background(theme::BG), - update_description, } } } -impl<T> Component for Progress<T> -where - T: StringType, -{ +impl Component for Progress { type Msg = Never; fn place(&mut self, _bounds: Rect) -> Rect { @@ -70,10 +60,7 @@ where .inner() .inner() .content() - .as_ref() - .chars() - .filter(|c| *c == '\n') - .count() as i16; + .map(|t| t.chars().filter(|c| *c == '\n').count() as i16); let (title, rest) = Self::AREA.split_top(self.title.inner().max_size().y); let (loader, description) = rest.split_bottom(Font::NORMAL.line_height() * description_lines); @@ -92,8 +79,7 @@ where ctx.request_paint(); } self.description.mutate(ctx, |ctx, para| { - if para.inner_mut().content().as_ref() != new_description { - let new_description = unwrap!((self.update_description)(new_description)); + if para.inner_mut().content() != &new_description { para.inner_mut().update(new_description); para.change_page(0); // Recompute bounding box. ctx.request_paint(); @@ -172,10 +158,7 @@ where } #[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for Progress<T> -where - T: StringType, -{ +impl crate::trace::Trace for Progress { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Progress"); } diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 575819b702..5045f3187c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -1,12 +1,16 @@ use heapless::Vec; use super::theme; -use crate::ui::{ - component::{base::Component, Event, EventCtx}, - display::Icon, - geometry::Rect, - model_mercury::component::button::{Button, ButtonMsg, IconText}, - shape::{Bar, Renderer}, +use crate::{ + micropython::buffer::StrBuffer, + strutil::TString, + ui::{ + component::{base::Component, Event, EventCtx}, + display::Icon, + geometry::Rect, + model_mercury::component::button::{Button, ButtonMsg, IconText}, + shape::{Bar, Renderer}, + }, }; pub enum VerticalMenuChoiceMsg { @@ -27,39 +31,37 @@ const MENU_BUTTON_HEIGHT: i16 = 64; /// Fixed height of a separator. const MENU_SEP_HEIGHT: i16 = 2; -type VerticalMenuButtons<T> = Vec<Button<T>, N_ITEMS>; +type VerticalMenuButtons = Vec<Button, N_ITEMS>; type AreasForSeparators = Vec<Rect, N_SEPS>; -pub struct VerticalMenu<T> { +pub struct VerticalMenu { area: Rect, /// buttons placed vertically from top to bottom - buttons: VerticalMenuButtons<T>, + buttons: VerticalMenuButtons, /// areas for visual separators between buttons areas_sep: AreasForSeparators, } -impl<T> VerticalMenu<T> -where - T: AsRef<str>, -{ - fn new(buttons: VerticalMenuButtons<T>) -> Self { +impl VerticalMenu { + fn new(buttons: VerticalMenuButtons) -> Self { Self { area: Rect::zero(), buttons, areas_sep: AreasForSeparators::new(), } } - pub fn select_word(words: [T; 3]) -> Self { + pub fn select_word(words: [StrBuffer; 3]) -> Self { let mut buttons_vec = VerticalMenuButtons::new(); for word in words { - let button = Button::with_text(word).styled(theme::button_vertical_menu()); + let button = Button::with_text(word.into()).styled(theme::button_vertical_menu()); unwrap!(buttons_vec.push(button)); } Self::new(buttons_vec) } - pub fn context_menu(options: [(T, Icon); 3]) -> Self { + pub fn context_menu(options: [(&'static str, Icon); 3]) -> Self { // TODO: this is just POC + // FIXME: args should be TString when IconText has TString let mut buttons_vec = VerticalMenuButtons::new(); for opt in options { let button_theme; @@ -79,10 +81,7 @@ where } } -impl<T> Component for VerticalMenu<T> -where - T: AsRef<str>, -{ +impl Component for VerticalMenu { type Msg = VerticalMenuChoiceMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -141,10 +140,7 @@ where } #[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for VerticalMenu<T> -where - T: AsRef<str>, -{ +impl crate::trace::Trace for VerticalMenu { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("VerticalMenu"); t.in_list("buttons", &|button_list| { diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 3f34816dc4..1012d24b3b 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -14,7 +14,7 @@ use crate::{ qstr::Qstr, util, }, - strutil::{StringType, TString}, + strutil::TString, translations::TR, trezorhal::model, ui::{ @@ -112,10 +112,9 @@ impl TryFrom<VerticalMenuChoiceMsg> for Obj { } } -impl<F, T, U> ComponentMsgObj for FidoConfirm<F, T, U> +impl<F, U> ComponentMsgObj for FidoConfirm<F, U> where - F: Fn(usize) -> T, - T: StringType, + F: Fn(usize) -> TString<'static>, U: Component<Msg = CancelConfirmMsg>, { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { @@ -140,9 +139,8 @@ where } } -impl<T, U> ComponentMsgObj for IconDialog<T, U> +impl<U> ComponentMsgObj for IconDialog<U> where - T: StringType, U: Component, <U as Component>::Msg: TryInto<Obj, Error = Error>, { @@ -154,10 +152,7 @@ where } } -impl<T> ComponentMsgObj for PinKeyboard<T> -where - T: AsRef<str>, -{ +impl ComponentMsgObj for PinKeyboard<'_> { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { PinKeyboardMsg::Confirmed => self.pin().try_into(), @@ -175,10 +170,9 @@ impl ComponentMsgObj for PassphraseKeyboard { } } -impl<T, U> ComponentMsgObj for MnemonicKeyboard<T, U> +impl<T> ComponentMsgObj for MnemonicKeyboard<T> where T: MnemonicInput, - U: AsRef<str>, { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { @@ -194,10 +188,9 @@ where } } -impl<T, U> ComponentMsgObj for Frame<T, U> +impl<T> ComponentMsgObj for Frame<T> where T: ComponentMsgObj, - U: AsRef<str>, { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { @@ -216,10 +209,7 @@ impl ComponentMsgObj for ShareWords<'_> { } } -impl<T> ComponentMsgObj for VerticalMenu<T> -where - T: AsRef<str>, -{ +impl ComponentMsgObj for VerticalMenu { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { VerticalMenuChoiceMsg::Selected(i) => i.try_into(), @@ -227,10 +217,9 @@ where } } -impl<T, U> ComponentMsgObj for ButtonPage<T, U> +impl<T> ComponentMsgObj for ButtonPage<T> where T: Component + Paginate, - U: AsRef<str> + From<&'static str>, { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { @@ -252,37 +241,33 @@ impl ComponentMsgObj for Jpeg { // Clippy/compiler complains about conflicting implementations // TODO move the common impls to a common module #[cfg(not(feature = "clippy"))] -impl<T> ComponentMsgObj for Paragraphs<T> +impl<'a, T> ComponentMsgObj for Paragraphs<T> where - T: ParagraphSource, + T: ParagraphSource<'a>, { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() } } -impl<T> ComponentMsgObj for FormattedText<T> -where - T: StringType + Clone, -{ +impl ComponentMsgObj for FormattedText { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() } } -impl<T> ComponentMsgObj for Checklist<T> +impl<'a, T> ComponentMsgObj for Checklist<T> where - T: ParagraphSource, + T: ParagraphSource<'a>, { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() } } -impl<T, F> ComponentMsgObj for NumberInputDialog<T, F> +impl<F> ComponentMsgObj for NumberInputDialog<F> where - T: StringType, - F: Fn(u32) -> T, + F: Fn(u32) -> TString<'static>, { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { let value = self.value().try_into()?; @@ -302,10 +287,7 @@ where } } -impl<T> ComponentMsgObj for Progress<T> -where - T: StringType, -{ +impl ComponentMsgObj for Progress { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() } @@ -319,7 +301,7 @@ impl ComponentMsgObj for Homescreen { } } -impl ComponentMsgObj for Lockscreen { +impl ComponentMsgObj for Lockscreen<'_> { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { HomescreenMsg::Dismissed => Ok(CANCELLED.as_obj()), @@ -327,10 +309,9 @@ impl ComponentMsgObj for Lockscreen { } } -impl<T, S> ComponentMsgObj for (GridPlaced<Paragraphs<T>>, GridPlaced<FormattedText<S>>) +impl<'a, T> ComponentMsgObj for (GridPlaced<Paragraphs<T>>, GridPlaced<FormattedText>) where - T: ParagraphSource, - S: StringType + Clone, + T: ParagraphSource<'a>, { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() @@ -367,18 +348,14 @@ where } } -impl<T> ComponentMsgObj for AddressDetails<T> -where - T: StringType + Clone, -{ +impl ComponentMsgObj for AddressDetails { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { Ok(CANCELLED.as_obj()) } } -impl<T, U> ComponentMsgObj for CoinJoinProgress<T, U> +impl<U> ComponentMsgObj for CoinJoinProgress<U> where - T: AsRef<str>, U: Component<Msg = Never>, { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { @@ -386,10 +363,7 @@ where } } -impl<T> ComponentMsgObj for super::component::bl_confirm::Confirm<T> -where - T: AsRef<str>, -{ +impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { super::component::bl_confirm::ConfirmMsg::Cancel => Ok(CANCELLED.as_obj()), @@ -400,15 +374,15 @@ where extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let action: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_action)?.try_into_option()?; - let description: Option<StrBuffer> = + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let action: Option<TString> = kwargs.get(Qstr::MP_QSTR_action)?.try_into_option()?; + let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let verb: Option<StrBuffer> = kwargs + let verb: Option<TString> = kwargs .get(Qstr::MP_QSTR_verb) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; - let verb_cancel: Option<StrBuffer> = kwargs + let verb_cancel: Option<TString> = kwargs .get(Qstr::MP_QSTR_verb_cancel) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; @@ -417,8 +391,8 @@ extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut M let hold_danger: bool = kwargs.get_or(Qstr::MP_QSTR_hold_danger, false)?; let paragraphs = { - let action = action.unwrap_or_default(); - let description = description.unwrap_or_default(); + let action = action.unwrap_or("".into()); + let description = description.unwrap_or("".into()); let mut paragraphs = ParagraphVecShort::new(); if !reverse { paragraphs @@ -448,8 +422,8 @@ extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut M extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let verb: Option<StrBuffer> = kwargs + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let verb: Option<TString> = kwargs .get(Qstr::MP_QSTR_verb) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; @@ -458,10 +432,10 @@ extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *m let mut ops = OpTextLayout::new(theme::TEXT_NORMAL); for item in IterBuf::new().try_iterate(items)? { if item.is_str() { - ops = ops.text_normal(item.try_into()?) + ops = ops.text_normal(TString::try_from(item)?) } else { let [emphasis, text]: [Obj; 2] = util::iter_into_array(item)?; - let text: StrBuffer = text.try_into()?; + let text: TString = text.try_into()?; if emphasis.try_into()? { ops = ops.text_demibold(text); } else { @@ -481,13 +455,13 @@ extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *m } struct ConfirmBlobParams { - title: StrBuffer, - subtitle: Option<StrBuffer>, + title: TString<'static>, + subtitle: Option<TString<'static>>, data: Obj, - description: Option<StrBuffer>, - extra: Option<StrBuffer>, - verb: Option<StrBuffer>, - verb_cancel: Option<StrBuffer>, + description: Option<TString<'static>>, + extra: Option<TString<'static>>, + verb: Option<TString<'static>>, + verb_cancel: Option<TString<'static>>, info_button: bool, hold: bool, chunkify: bool, @@ -496,11 +470,11 @@ struct ConfirmBlobParams { impl ConfirmBlobParams { fn new( - title: StrBuffer, + title: TString<'static>, data: Obj, - description: Option<StrBuffer>, - verb: Option<StrBuffer>, - verb_cancel: Option<StrBuffer>, + description: Option<TString<'static>>, + verb: Option<TString<'static>>, + verb_cancel: Option<TString<'static>>, hold: bool, ) -> Self { Self { @@ -518,12 +492,12 @@ impl ConfirmBlobParams { } } - fn with_extra(mut self, extra: Option<StrBuffer>) -> Self { + fn with_extra(mut self, extra: Option<TString<'static>>) -> Self { self.extra = extra; self } - fn with_subtitle(mut self, subtitle: Option<StrBuffer>) -> Self { + fn with_subtitle(mut self, subtitle: Option<TString<'static>>) -> Self { self.subtitle = subtitle; self } @@ -545,13 +519,13 @@ impl ConfirmBlobParams { fn into_layout(self) -> Result<Obj, Error> { let paragraphs = ConfirmBlob { - description: self.description.unwrap_or_else(StrBuffer::empty), - extra: self.extra.unwrap_or_else(StrBuffer::empty), + description: self.description.unwrap_or("".into()), + extra: self.extra.unwrap_or("".into()), data: self.data.try_into()?, description_font: &theme::TEXT_NORMAL, extra_font: &theme::TEXT_DEMIBOLD, data_font: if self.chunkify { - let data: StrBuffer = self.data.try_into()?; + let data: TString = self.data.try_into()?; theme::get_chunkified_text_style(data.len()) } else if self.text_mono { &theme::TEXT_MONO @@ -582,16 +556,16 @@ impl ConfirmBlobParams { extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; - let description: Option<StrBuffer> = + let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let extra: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; - let verb: Option<StrBuffer> = kwargs + let extra: Option<TString> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; + let verb: Option<TString> = kwargs .get(Qstr::MP_QSTR_verb) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; - let verb_cancel: Option<StrBuffer> = kwargs + let verb_cancel: Option<TString> = kwargs .get(Qstr::MP_QSTR_verb_cancel) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; @@ -608,25 +582,24 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let description: Option<StrBuffer> = + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let verb: StrBuffer = - kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.try_into()?)?; - let extra: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; + let verb: TString = kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.try_into()?)?; + let extra: Option<TString> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; let data_style = if chunkify { - let address: StrBuffer = data.try_into()?; + let address: TString = data.try_into()?; theme::get_chunkified_text_style(address.len()) } else { &theme::TEXT_MONO }; let paragraphs = ConfirmBlob { - description: description.unwrap_or_else(StrBuffer::empty), - extra: extra.unwrap_or_else(StrBuffer::empty), + description: description.unwrap_or("".into()), + extra: extra.unwrap_or("".into()), data: data.try_into()?, description_font: &theme::TEXT_NORMAL, extra_font: &theme::TEXT_DEMIBOLD, @@ -650,7 +623,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; @@ -660,11 +633,11 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m &theme::TEXT_MONO, &theme::TEXT_MONO, )?; - let page: ButtonPage<_, StrBuffer> = if hold { + let page = if hold { ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()? } else { ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) - .with_cancel_confirm(None, Some(TR::buttons__confirm.try_into()?)) + .with_cancel_confirm(None, Some(TR::buttons__confirm.into())) }; let obj = LayoutObj::new(Frame::left_aligned(title, page))?; Ok(obj.into()) @@ -674,7 +647,7 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let image: Obj = kwargs.get(Qstr::MP_QSTR_image)?; let mut jpeg = unwrap!(ImageBuffer::from_object(image)); @@ -689,8 +662,7 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m return Err(value_error!("Invalid image.")); }; - let tr_change: StrBuffer = TR::buttons__change.try_into()?; - let buttons = Button::cancel_confirm_text(None, Some(tr_change)); + let buttons = Button::cancel_confirm_text(None, Some(TR::buttons__change.into())); let obj = LayoutObj::new(Frame::centered( title, Dialog::new(Jpeg::new(jpeg, 1), buttons), @@ -703,14 +675,13 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m extern "C" fn new_confirm_reset_device(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - - let par_array: [Paragraph<StrBuffer>; 3] = [ - Paragraph::new(&theme::TEXT_NORMAL, TR::reset__by_continuing.try_into()?) - .with_bottom_padding(17), // simulating a carriage return - Paragraph::new(&theme::TEXT_NORMAL, TR::reset__more_info_at.try_into()?), - Paragraph::new(&theme::TEXT_DEMIBOLD, TR::reset__tos_link.try_into()?), + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + + let par_array: [Paragraph<'static>; 3] = [ + Paragraph::new(&theme::TEXT_NORMAL, TR::reset__by_continuing).with_bottom_padding(17), /* simulating a carriage return */ + Paragraph::new(&theme::TEXT_NORMAL, TR::reset__more_info_at), + Paragraph::new(&theme::TEXT_DEMIBOLD, TR::reset__tos_link), ]; let paragraphs = Paragraphs::new(par_array); let buttons = Button::cancel_confirm( @@ -726,12 +697,12 @@ extern "C" fn new_confirm_reset_device(n_args: usize, args: *const Obj, kwargs: extern "C" fn new_show_address_details(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let qr_title: StrBuffer = kwargs.get(Qstr::MP_QSTR_qr_title)?.try_into()?; - let details_title: StrBuffer = kwargs.get(Qstr::MP_QSTR_details_title)?.try_into()?; - let address: StrBuffer = kwargs.get(Qstr::MP_QSTR_address)?.try_into()?; + let qr_title: TString = kwargs.get(Qstr::MP_QSTR_qr_title)?.try_into()?; + let details_title: TString = kwargs.get(Qstr::MP_QSTR_details_title)?.try_into()?; + let address: TString = kwargs.get(Qstr::MP_QSTR_address)?.try_into()?; let case_sensitive: bool = kwargs.get(Qstr::MP_QSTR_case_sensitive)?.try_into()?; - let account: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; - let path: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_path)?.try_into_option()?; + let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; + let path: Option<TString> = kwargs.get(Qstr::MP_QSTR_path)?.try_into_option()?; let xpubs: Obj = kwargs.get(Qstr::MP_QSTR_xpubs)?; @@ -745,7 +716,7 @@ extern "C" fn new_show_address_details(n_args: usize, args: *const Obj, kwargs: )?; for i in IterBuf::new().try_iterate(xpubs)? { - let [xtitle, text]: [StrBuffer; 2] = util::iter_into_array(i)?; + let [xtitle, text]: [TString; 2] = util::iter_into_array(i)?; ad.add_xpub(xtitle, text)?; } @@ -758,7 +729,7 @@ extern "C" fn new_show_address_details(n_args: usize, args: *const Obj, kwargs: extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let horizontal: bool = kwargs.get_or(Qstr::MP_QSTR_horizontal, false)?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; @@ -767,8 +738,8 @@ extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: for para in IterBuf::new().try_iterate(items)? { let [key, value]: [Obj; 2] = util::iter_into_array(para)?; - let key: StrBuffer = key.try_into()?; - let value: StrBuffer = value.try_into()?; + let key: TString = key.try_into()?; + let value: TString = value.try_into()?; paragraphs.add(Paragraph::new(&theme::TEXT_NORMAL, key).no_break()); if chunkify { paragraphs.add(Paragraph::new( @@ -800,18 +771,18 @@ extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let subtitle: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_subtitle)?.try_into_option()?; - let description: Option<StrBuffer> = + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let subtitle: Option<TString> = kwargs.get(Qstr::MP_QSTR_subtitle)?.try_into_option()?; + let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; let value: Obj = kwargs.get(Qstr::MP_QSTR_value)?; let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; - let verb: Option<StrBuffer> = kwargs + let verb: Option<TString> = kwargs .get(Qstr::MP_QSTR_verb) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; - let verb_cancel: Option<StrBuffer> = kwargs + let verb_cancel: Option<TString> = kwargs .get(Qstr::MP_QSTR_verb_cancel) .unwrap_or_else(|_| Obj::const_none()) .try_into_option()?; @@ -831,7 +802,7 @@ extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Ma extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; let cancel_arrow: bool = kwargs.get_or(Qstr::MP_QSTR_cancel_arrow, false)?; @@ -839,12 +810,11 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma let mut paragraphs = ParagraphVecShort::new(); for pair in IterBuf::new().try_iterate(items)? { - let [label, value]: [StrBuffer; 2] = util::iter_into_array(pair)?; + let [label, value]: [TString; 2] = util::iter_into_array(pair)?; paragraphs.add(Paragraph::new(&theme::TEXT_NORMAL, label).no_break()); paragraphs.add(Paragraph::new(&theme::TEXT_MONO, value)); } - let mut page: ButtonPage<_, StrBuffer> = - ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()?; + let mut page = ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()?; if cancel_arrow { page = page.with_cancel_arrow() } @@ -864,30 +834,26 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let sign: i32 = kwargs.get(Qstr::MP_QSTR_sign)?.try_into()?; - let amount_change: StrBuffer = kwargs.get(Qstr::MP_QSTR_amount_change)?.try_into()?; - let amount_new: StrBuffer = kwargs.get(Qstr::MP_QSTR_amount_new)?.try_into()?; + let amount_change: TString = kwargs.get(Qstr::MP_QSTR_amount_change)?.try_into()?; + let amount_new: TString = kwargs.get(Qstr::MP_QSTR_amount_new)?.try_into()?; let description = if sign < 0 { - TR::modify_amount__decrease_amount.try_into()? + TR::modify_amount__decrease_amount } else { - TR::modify_amount__increase_amount.try_into()? + TR::modify_amount__increase_amount }; let paragraphs = Paragraphs::new([ Paragraph::new(&theme::TEXT_NORMAL, description), Paragraph::new(&theme::TEXT_MONO, amount_change), - Paragraph::new( - &theme::TEXT_NORMAL, - TR::modify_amount__new_amount.try_into()?, - ), + Paragraph::new(&theme::TEXT_NORMAL, TR::modify_amount__new_amount), Paragraph::new(&theme::TEXT_MONO, amount_new), ]); - let tr_title: StrBuffer = TR::modify_amount__title.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( - tr_title, - ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG) - .with_cancel_confirm(Some("^".into()), Some(TR::buttons__continue.try_into()?)), + TR::modify_amount__title.into(), + ButtonPage::new(paragraphs, theme::BG) + .with_cancel_confirm(Some("^".into()), Some(TR::buttons__continue.into())), ))?; Ok(obj.into()) }; @@ -896,26 +862,26 @@ extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let sign: i32 = kwargs.get(Qstr::MP_QSTR_sign)?.try_into()?; - let user_fee_change: StrBuffer = kwargs.get(Qstr::MP_QSTR_user_fee_change)?.try_into()?; - let total_fee_new: StrBuffer = kwargs.get(Qstr::MP_QSTR_total_fee_new)?.try_into()?; + let user_fee_change: TString = kwargs.get(Qstr::MP_QSTR_user_fee_change)?.try_into()?; + let total_fee_new: TString = kwargs.get(Qstr::MP_QSTR_total_fee_new)?.try_into()?; let (description, change, total_label) = match sign { s if s < 0 => ( - TR::modify_fee__decrease_fee.try_into()?, + TR::modify_fee__decrease_fee, user_fee_change, - TR::modify_fee__new_transaction_fee.try_into()?, + TR::modify_fee__new_transaction_fee, ), s if s > 0 => ( - TR::modify_fee__increase_fee.try_into()?, + TR::modify_fee__increase_fee, user_fee_change, - TR::modify_fee__new_transaction_fee.try_into()?, + TR::modify_fee__new_transaction_fee, ), _ => ( - TR::modify_fee__no_change.try_into()?, - StrBuffer::empty(), - TR::modify_fee__transaction_fee.try_into()?, + TR::modify_fee__no_change, + "".into(), + TR::modify_fee__transaction_fee, ), }; @@ -929,7 +895,7 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m let obj = LayoutObj::new( Frame::left_aligned( title, - ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG) + ButtonPage::new(paragraphs, theme::BG) .with_hold()? .with_swipe_left(), ) @@ -945,15 +911,14 @@ fn new_show_modal( icon: BlendedImage, button_style: ButtonStyleSheet, ) -> Result<Obj, Error> { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let value: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_value, StrBuffer::empty())?; - let description: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_description, StrBuffer::empty())?; - let button: StrBuffer = - kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.try_into()?)?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; + let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; + let button: TString = kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.try_into()?)?; let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; let time_ms: u32 = kwargs.get_or(Qstr::MP_QSTR_time_ms, 0)?; - let no_buttons = button.as_ref().is_empty(); + let no_buttons = button.is_empty(); let obj = if no_buttons && time_ms == 0 { // No buttons and no timer, used when we only want to draw the dialog once and // then throw away the layout object. @@ -1026,9 +991,9 @@ extern "C" fn new_show_error(n_args: usize, args: *const Obj, kwargs: *mut Map) extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let app_name: StrBuffer = kwargs.get(Qstr::MP_QSTR_app_name)?.try_into()?; - let icon: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_icon_name)?.try_into_option()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let app_name: TString = kwargs.get(Qstr::MP_QSTR_app_name)?.try_into()?; + let icon: Option<TString> = kwargs.get(Qstr::MP_QSTR_icon_name)?.try_into_option()?; let accounts: Gc<List> = kwargs.get(Qstr::MP_QSTR_accounts)?.try_into()?; // Cache the page count so that we can move `accounts` into the closure. @@ -1043,8 +1008,7 @@ extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map let controls = Button::cancel_confirm( Button::with_icon(theme::ICON_CANCEL), - Button::<StrBuffer>::with_text(TR::buttons__confirm.try_into()?) - .styled(theme::button_confirm()), + Button::with_text(TR::buttons__confirm.try_into()?).styled(theme::button_confirm()), true, ); @@ -1100,10 +1064,10 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let description: StrBuffer = TR::addr_mismatch__contact_support_at.try_into()?; - let url: StrBuffer = TR::addr_mismatch__support_url.try_into()?; - let button: StrBuffer = TR::buttons__quit.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: TString = TR::addr_mismatch__contact_support_at.try_into()?; + let url: TString = TR::addr_mismatch__support_url.try_into()?; + let button: TString = TR::buttons__quit.try_into()?; let icon = BlendedImage::new( theme::IMAGE_BG_OCTAGON, @@ -1140,10 +1104,9 @@ extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Ma extern "C" fn new_show_simple(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: Option<StrBuffer> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; - let description: StrBuffer = - kwargs.get_or(Qstr::MP_QSTR_description, StrBuffer::empty())?; - let button: StrBuffer = kwargs.get_or(Qstr::MP_QSTR_button, StrBuffer::empty())?; + let title: Option<TString> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; + let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; + let button: TString = kwargs.get_or(Qstr::MP_QSTR_button, "".into())?; let obj = if let Some(t) = title { LayoutObj::new(Frame::left_aligned( @@ -1187,9 +1150,9 @@ extern "C" fn new_show_simple(n_args: usize, args: *const Obj, kwargs: *mut Map) extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let info_button: StrBuffer = kwargs.get(Qstr::MP_QSTR_info_button)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let info_button: TString = kwargs.get(Qstr::MP_QSTR_info_button)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let mut paragraphs = ParagraphVecShort::new(); @@ -1197,7 +1160,7 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu for para in IterBuf::new().try_iterate(items)? { let [font, text]: [Obj; 2] = util::iter_into_array(para)?; let style: &TextStyle = theme::textstyle_number(font.try_into()?); - let text: StrBuffer = text.try_into()?; + let text: TString = text.try_into()?; paragraphs.add(Paragraph::new(style, text)); if paragraphs.is_full() { break; @@ -1217,8 +1180,8 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu extern "C" fn new_confirm_more(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let mut paragraphs = ParagraphVecLong::new(); @@ -1226,7 +1189,7 @@ extern "C" fn new_confirm_more(n_args: usize, args: *const Obj, kwargs: *mut Map for para in IterBuf::new().try_iterate(items)? { let [font, text]: [Obj; 2] = util::iter_into_array(para)?; let style: &TextStyle = theme::textstyle_number(font.try_into()?); - let text: StrBuffer = text.try_into()?; + let text: TString = text.try_into()?; paragraphs.add(Paragraph::new(style, text)); } @@ -1244,23 +1207,22 @@ extern "C" fn new_confirm_more(n_args: usize, args: *const Obj, kwargs: *mut Map extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let max_rounds: StrBuffer = kwargs.get(Qstr::MP_QSTR_max_rounds)?.try_into()?; - let max_feerate: StrBuffer = kwargs.get(Qstr::MP_QSTR_max_feerate)?.try_into()?; + let max_rounds: TString = kwargs.get(Qstr::MP_QSTR_max_rounds)?.try_into()?; + let max_feerate: TString = kwargs.get(Qstr::MP_QSTR_max_feerate)?.try_into()?; let paragraphs = Paragraphs::new([ - Paragraph::new(&theme::TEXT_NORMAL, TR::coinjoin__max_rounds.try_into()?), + Paragraph::new(&theme::TEXT_NORMAL, TR::coinjoin__max_rounds), Paragraph::new(&theme::TEXT_MONO, max_rounds), Paragraph::new( &theme::TEXT_NORMAL, - TR::coinjoin__max_mining_fee.try_into()?, + TR::coinjoin__max_mining_fee, ), Paragraph::new(&theme::TEXT_MONO, max_feerate), ]); - let tr_title: StrBuffer = TR::coinjoin__title.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( - tr_title, - ButtonPage::<_, StrBuffer>::new(paragraphs, theme::BG).with_hold()?, + TR::coinjoin__title.into(), + ButtonPage::new(paragraphs, theme::BG).with_hold()?, ))?; Ok(obj.into()) }; @@ -1269,12 +1231,12 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_request_pin(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; - let subprompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_subprompt)?.try_into()?; + let prompt: TString = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let subprompt: TString = kwargs.get(Qstr::MP_QSTR_subprompt)?.try_into()?; let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; let warning: bool = kwargs.get_or(Qstr::MP_QSTR_wrong_pin, false)?; let warning = if warning { - Some(TR::pin__wrong_pin.try_into()?) + Some(TR::pin__wrong_pin.into()) } else { None }; @@ -1286,7 +1248,7 @@ extern "C" fn new_request_pin(n_args: usize, args: *const Obj, kwargs: *mut Map) extern "C" fn new_request_passphrase(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let _prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let _prompt: TString = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; let _max_len: u32 = kwargs.get(Qstr::MP_QSTR_max_len)?.try_into()?; let obj = LayoutObj::new(PassphraseKeyboard::new())?; Ok(obj.into()) @@ -1296,11 +1258,11 @@ extern "C" fn new_request_passphrase(n_args: usize, args: *const Obj, kwargs: *m extern "C" fn new_request_bip39(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; - let prefill_word: StrBuffer = kwargs.get(Qstr::MP_QSTR_prefill_word)?.try_into()?; + let prompt: TString = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let prefill_word: TString = kwargs.get(Qstr::MP_QSTR_prefill_word)?.try_into()?; let can_go_back: bool = kwargs.get(Qstr::MP_QSTR_can_go_back)?.try_into()?; let obj = LayoutObj::new(MnemonicKeyboard::new( - Bip39Input::prefilled_word(prefill_word.as_ref()), + prefill_word.map(Bip39Input::prefilled_word), prompt, can_go_back, ))?; @@ -1311,11 +1273,11 @@ extern "C" fn new_request_bip39(n_args: usize, args: *const Obj, kwargs: *mut Ma extern "C" fn new_request_slip39(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let prompt: StrBuffer = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; - let prefill_word: StrBuffer = kwargs.get(Qstr::MP_QSTR_prefill_word)?.try_into()?; + let prompt: TString = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let prefill_word: TString = kwargs.get(Qstr::MP_QSTR_prefill_word)?.try_into()?; let can_go_back: bool = kwargs.get(Qstr::MP_QSTR_can_go_back)?.try_into()?; let obj = LayoutObj::new(MnemonicKeyboard::new( - Slip39Input::prefilled_word(prefill_word.as_ref()), + prefill_word.map(Slip39Input::prefilled_word), prompt, can_go_back, ))?; @@ -1326,8 +1288,8 @@ extern "C" fn new_request_slip39(n_args: usize, args: *const Obj, kwargs: *mut M extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let words_iterable: Obj = kwargs.get(Qstr::MP_QSTR_words)?; let words: [StrBuffer; 3] = util::iter_into_array(words_iterable)?; @@ -1342,12 +1304,12 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) extern "C" fn new_show_tx_context_menu(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], _kwargs: &Map| { // TODO: this is just POC - let title: StrBuffer = StrBuffer::from(""); + let title: TString = "".into(); - let options: [(StrBuffer, Icon); 3] = [ - (StrBuffer::from("Address QR code"), theme::ICON_QR_CODE), - (StrBuffer::from("Fee info"), theme::ICON_CHEVRON_RIGHT), - (StrBuffer::from("Cancel transaction"), theme::ICON_CANCEL), + let options: [(&'static str, Icon); 3] = [ + ("Address QR code", theme::ICON_QR_CODE), + ("Fee info", theme::ICON_CHEVRON_RIGHT), + ("Cancel transaction", theme::ICON_CANCEL), ]; let content = VerticalMenu::context_menu(options); let frame_with_menu = Frame::left_aligned(title, content).with_cancel_button(); @@ -1359,7 +1321,7 @@ extern "C" fn new_show_tx_context_menu(n_args: usize, args: *const Obj, kwargs: extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_pages)?; let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; @@ -1373,7 +1335,7 @@ extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let min_count: u32 = kwargs.get(Qstr::MP_QSTR_min_count)?.try_into()?; let max_count: u32 = kwargs.get(Qstr::MP_QSTR_max_count)?.try_into()?; let count: u32 = kwargs.get(Qstr::MP_QSTR_count)?.try_into()?; @@ -1381,7 +1343,7 @@ extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut M assert!(description_callback != Obj::const_none()); let callback = move |i: u32| { - StrBuffer::try_from( + TString::try_from( description_callback .call_with_n_args(&[i.try_into().unwrap()]) .unwrap(), @@ -1400,8 +1362,8 @@ extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut M extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let active: usize = kwargs.get(Qstr::MP_QSTR_active)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; @@ -1412,7 +1374,7 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M Ordering::Equal => &theme::TEXT_CHECKLIST_SELECTED, Ordering::Greater => &theme::TEXT_CHECKLIST_DEFAULT, }; - let text: StrBuffer = item.try_into()?; + let text: TString = item.try_into()?; paragraphs.add(Paragraph::new(style, text)); } @@ -1442,9 +1404,9 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let button: StrBuffer = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; @@ -1454,7 +1416,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut ]) .with_spacing(theme::RECOVERY_SPACING); - let notification: StrBuffer = if dry_run { + let notification: TString = if dry_run { TR::recovery__title_dry_run.try_into()? } else { TR::recovery__title.try_into()? @@ -1465,9 +1427,9 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut notification, Dialog::new( paragraphs, - Button::<StrBuffer>::cancel_info_confirm( - TR::buttons__continue.try_into()?, - TR::buttons__more_info.try_into()?, + Button::cancel_info_confirm( + TR::buttons__continue.into(), + TR::buttons__more_info.into(), ), ), ))? @@ -1485,15 +1447,15 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; - let title: StrBuffer = if dry_run { + let title: TString = if dry_run { TR::recovery__title_dry_run.try_into()? } else { TR::recovery__title.try_into()? }; - let paragraphs = Paragraphs::new(Paragraph::<StrBuffer>::new( + let paragraphs = Paragraphs::new(Paragraph::new( &theme::TEXT_DEMIBOLD, - TR::recovery__select_num_of_words.try_into()?, + TR::recovery__select_num_of_words, )); let obj = LayoutObj::new(Frame::left_aligned( @@ -1512,15 +1474,13 @@ extern "C" fn new_show_group_share_success( ) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let lines_iterable: Obj = kwargs.get(Qstr::MP_QSTR_lines)?; - let lines: [StrBuffer; 4] = util::iter_into_array(lines_iterable)?; + let lines: [TString; 4] = util::iter_into_array(lines_iterable)?; let obj = LayoutObj::new(IconDialog::new_shares( lines, - theme::button_bar( - Button::<StrBuffer>::with_text(TR::buttons__continue.try_into()?).map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) - }), - ), + theme::button_bar(Button::with_text(TR::buttons__continue.into()).map(|msg| { + (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) + })), ))?; Ok(obj.into()) }; @@ -1533,17 +1493,16 @@ extern "C" fn new_show_remaining_shares(n_args: usize, args: *const Obj, kwargs: let mut paragraphs = ParagraphVecLong::new(); for page in IterBuf::new().try_iterate(pages_iterable)? { - let [title, description]: [StrBuffer; 2] = util::iter_into_array(page)?; + let [title, description]: [TString; 2] = util::iter_into_array(page)?; paragraphs .add(Paragraph::new(&theme::TEXT_DEMIBOLD, title)) .add(Paragraph::new(&theme::TEXT_NORMAL, description).break_after()); } - let tr_title: StrBuffer = TR::recovery__title_remaining_shares.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( - tr_title, - ButtonPage::<_, StrBuffer>::new(paragraphs.into_paragraphs(), theme::BG) - .with_cancel_confirm(None, Some(TR::buttons__continue.try_into()?)) + TR::recovery__title_remaining_shares.into(), + ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) + .with_cancel_confirm(None, Some(TR::buttons__continue.into())) .with_confirm_style(theme::button_default()) .without_cancel(), ))?; @@ -1554,19 +1513,20 @@ extern "C" fn new_show_remaining_shares(n_args: usize, args: *const Obj, kwargs: extern "C" fn new_show_progress(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let indeterminate: bool = kwargs.get_or(Qstr::MP_QSTR_indeterminate, false)?; - let description: StrBuffer = - kwargs.get_or(Qstr::MP_QSTR_description, StrBuffer::empty())?; + let title: Option<TString> = kwargs + .get(Qstr::MP_QSTR_title) + .and_then(Obj::try_into_option) + .unwrap_or(None); - // Description updates are received as &str and we need to provide a way to - // convert them to StrBuffer. - let obj = LayoutObj::new(Progress::new( - title, - indeterminate, - description, - StrBuffer::alloc, - ))?; + let (title, description) = if let Some(title) = title { + (title, description) + } else { + (description, "".into()) + }; + + let obj = LayoutObj::new(Progress::new(title, indeterminate, description))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1574,14 +1534,14 @@ extern "C" fn new_show_progress(n_args: usize, args: *const Obj, kwargs: *mut Ma extern "C" fn new_show_progress_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: StrBuffer = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let indeterminate: bool = kwargs.get_or(Qstr::MP_QSTR_indeterminate, false)?; let time_ms: u32 = kwargs.get_or(Qstr::MP_QSTR_time_ms, 0)?; let skip_first_paint: bool = kwargs.get_or(Qstr::MP_QSTR_skip_first_paint, false)?; // The second type parameter is actually not used in `new()` but we need to // provide it. - let progress = CoinJoinProgress::<_, Never>::new(title, indeterminate)?; + let progress = CoinJoinProgress::<Never>::new(title, indeterminate)?; let obj = if time_ms > 0 && indeterminate { let timeout = Timeout::new(time_ms); LayoutObj::new((timeout, progress.map(|_msg| None)))? @@ -1655,21 +1615,19 @@ extern "C" fn new_confirm_firmware_update( ) -> Obj { use super::component::bl_confirm::{Confirm, ConfirmTitle}; let block = move |_args: &[Obj], kwargs: &Map| { - let description: StrBuffer = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let fingerprint: StrBuffer = kwargs.get(Qstr::MP_QSTR_fingerprint)?.try_into()?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let fingerprint: TString = kwargs.get(Qstr::MP_QSTR_fingerprint)?.try_into()?; - let title_str = TR::firmware_update__title.try_into()?; + let title_str = TR::firmware_update__title.into(); let title = Label::left_aligned(title_str, theme::TEXT_BOLD).vertically_centered(); let msg = Label::left_aligned(description, theme::TEXT_NORMAL); - let left = - Button::with_text(TR::buttons__cancel.try_into()?).styled(theme::button_default()); - let right = - Button::with_text(TR::buttons__install.try_into()?).styled(theme::button_confirm()); + let left = Button::with_text(TR::buttons__cancel.into()).styled(theme::button_default()); + let right = Button::with_text(TR::buttons__install.into()).styled(theme::button_confirm()); let obj = LayoutObj::new( Confirm::new(theme::BG, left, right, ConfirmTitle::Text(title), msg).with_info( - TR::firmware_update__title_fingerprint.try_into()?, + TR::firmware_update__title_fingerprint.into(), fingerprint, theme::button_moreinfo(), ), From 10234787a4cc3e9a846602c9e6fda272759a2048 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Fri, 12 Apr 2024 00:19:20 +0200 Subject: [PATCH 117/626] feat(core/ui): rust-based UI flows [no changelog] --- ci/shell.nix | 8 +- core/embed/rust/src/ui/animation.rs | 4 + core/embed/rust/src/ui/flow/base.rs | 95 ++++++++ core/embed/rust/src/ui/flow/flow.rs | 202 ++++++++++++++++ core/embed/rust/src/ui/flow/mod.rs | 10 + core/embed/rust/src/ui/flow/page.rs | 132 +++++++++++ core/embed/rust/src/ui/flow/store.rs | 219 ++++++++++++++++++ core/embed/rust/src/ui/flow/swipe.rs | 144 ++++++++++++ core/embed/rust/src/ui/geometry.rs | 6 + core/embed/rust/src/ui/mod.rs | 2 + .../src/ui/model_mercury/component/swipe.rs | 7 +- core/embed/rust/src/ui/model_mercury/mod.rs | 5 +- 12 files changed, 823 insertions(+), 11 deletions(-) create mode 100644 core/embed/rust/src/ui/flow/base.rs create mode 100644 core/embed/rust/src/ui/flow/flow.rs create mode 100644 core/embed/rust/src/ui/flow/mod.rs create mode 100644 core/embed/rust/src/ui/flow/page.rs create mode 100644 core/embed/rust/src/ui/flow/store.rs create mode 100644 core/embed/rust/src/ui/flow/swipe.rs diff --git a/ci/shell.nix b/ci/shell.nix index f8ad4b3c64..f90b29130b 100644 --- a/ci/shell.nix +++ b/ci/shell.nix @@ -4,10 +4,10 @@ }: let - # the last commit from master as of 2023-04-14 + # the last commit from master as of 2024-01-22 rustOverlay = import (builtins.fetchTarball { - url = "https://github.com/oxalica/rust-overlay/archive/db7bf4a2dd295adeeaa809d36387098926a15487.tar.gz"; - sha256 = "0gk6kag09w8lyn9was8dpjgslxw5p81bx04379m9v6ky09kw482d"; + url = "https://github.com/oxalica/rust-overlay/archive/e36f66bb10b09f5189dc3b1706948eaeb9a1c555.tar.gz"; + sha256 = "1vivsmqmqajbvv7181y7mfl48fxmm75hq2c8rj6h1l2ymq28zcpg"; }); # define this variable and devTools if you want nrf{util,connect} acceptJlink = builtins.getEnv "TREZOR_FIRMWARE_ACCEPT_JLINK_LICENSE" == "yes"; @@ -60,7 +60,7 @@ let done ''; # NOTE: don't forget to update Minimum Supported Rust Version in docs/core/build/emulator.md - rustProfiles = nixpkgs.rust-bin.nightly."2023-04-14"; + rustProfiles = nixpkgs.rust-bin.nightly."2024-01-21"; rustNightly = rustProfiles.minimal.override { targets = [ "thumbv7em-none-eabihf" # TT diff --git a/core/embed/rust/src/ui/animation.rs b/core/embed/rust/src/ui/animation.rs index 7469491398..66039faba8 100644 --- a/core/embed/rust/src/ui/animation.rs +++ b/core/embed/rust/src/ui/animation.rs @@ -59,4 +59,8 @@ impl<T> Animation<T> { panic!("offset is too large"); } } + + pub fn finished(&self, now: Instant) -> bool { + self.elapsed(now) >= self.duration + } } diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs new file mode 100644 index 0000000000..a01f8f0bc0 --- /dev/null +++ b/core/embed/rust/src/ui/flow/base.rs @@ -0,0 +1,95 @@ +use crate::ui::{component::EventCtx, geometry::Offset}; +use num_traits::ToPrimitive; + +#[derive(Copy, Clone)] +pub enum SwipeDirection { + Up, + Down, + Left, + Right, +} + +impl SwipeDirection { + pub fn as_offset(self, size: Offset) -> Offset { + match self { + SwipeDirection::Up => Offset::y(-size.y), + SwipeDirection::Down => Offset::y(size.y), + SwipeDirection::Left => Offset::x(-size.x), + SwipeDirection::Right => Offset::x(size.x), + } + } +} + +/// Component must implement this trait in order to be part of swipe-based flow. +/// The process of receiving a swipe is two-step, because in order to render the +/// transition animation Flow makes a copy of the pre-swipe state of the +/// component to render it along with the post-swipe state. +pub trait Swipable { + /// Return true if component can handle swipe in a given direction. + fn can_swipe(&self, _direction: SwipeDirection) -> bool { + false + } + + /// Make component react to swipe event. Only called if component returned + /// true in the previous function. + fn swiped(&mut self, _ctx: &mut EventCtx, _direction: SwipeDirection) {} +} + +/// Component::Msg for component parts of a flow. Converting results of +/// different screens to a shared type makes things easier to work with. +/// +/// Also currently the type for message emitted by Flow::event to +/// micropython. They don't need to be the same. +#[derive(Copy, Clone)] +pub enum FlowMsg { + Confirmed, + Cancelled, + Info, + Choice(usize), +} + +/// Composable event handler result. +#[derive(Copy, Clone)] +pub enum Decision<Q> { + /// Do nothing, continue with processing next handler. + Nothing, + + /// Initiate transition to another state, end event processing. + /// NOTE: it might make sense to include Option<ButtonRequest> here + Goto(Q, SwipeDirection), + + /// Yield a message to the caller of the flow (i.e. micropython), end event + /// processing. + Return(FlowMsg), +} + +impl<Q> Decision<Q> { + pub fn or_else(self, func: impl FnOnce() -> Self) -> Self { + match self { + Decision::Nothing => func(), + _ => self, + } + } +} + +/// Encodes the flow logic as a set of states, and transitions between them +/// triggered by events and swipes. +pub trait FlowState +where + Self: Sized + Copy + PartialEq + Eq + ToPrimitive, +{ + /// There needs to be a mapping from states to indices of the FlowStore + /// array. Default implementation works for states that are enums, the + /// FlowStore has to have number of elements equal to number of states. + fn index(&self) -> usize { + unwrap!(self.to_usize()) + } + + /// What to do when user swipes on screen and current component doesn't + /// respond to swipe of that direction. + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self>; + + /// What to do when the current component emits a message in response to an + /// event. + fn handle_event(&self, msg: FlowMsg) -> Decision<Self>; +} diff --git a/core/embed/rust/src/ui/flow/flow.rs b/core/embed/rust/src/ui/flow/flow.rs new file mode 100644 index 0000000000..2bb6227863 --- /dev/null +++ b/core/embed/rust/src/ui/flow/flow.rs @@ -0,0 +1,202 @@ +use crate::{ + error, + time::{Duration, Instant}, + ui::{ + animation::Animation, + component::{Component, Event, EventCtx}, + flow::{base::Decision, swipe::Swipe, FlowMsg, FlowState, FlowStore, SwipeDirection}, + geometry::{Offset, Rect}, + shape::Renderer, + }, +}; + +const ANIMATION_DURATION: Duration = Duration::from_millis(333); + +/// Given a state enum and a corresponding FlowStore, create a Component that +/// implements a swipe navigation between the states with animated transitions. +/// +/// If a swipe is detected: +/// - currently active component is asked to handle the event, +/// - if it can't then FlowState::handle_swipe is consulted. +pub struct SwipeFlow<Q, S> { + /// Current state. + state: Q, + /// FlowStore with all screens/components. + store: S, + /// `Some` when state transition animation is in progress. + transition: Option<Transition<Q>>, + /// Swipe detector. + swipe: Swipe, + /// Animation parameter. + anim_offset: Offset, +} + +struct Transition<Q> { + prev_state: Q, + animation: Animation<Offset>, + direction: SwipeDirection, +} + +impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { + pub fn new(init: Q, store: S) -> Result<Self, error::Error> { + Ok(Self { + state: init, + store, + transition: None, + swipe: Swipe::new().down().up().left().right(), + anim_offset: Offset::zero(), + }) + } + + fn goto(&mut self, ctx: &mut EventCtx, direction: SwipeDirection, state: Q) { + self.transition = Some(Transition { + prev_state: self.state, + animation: Animation::new( + Offset::zero(), + direction.as_offset(self.anim_offset), + ANIMATION_DURATION, + Instant::now(), + ), + direction, + }); + self.state = state; + ctx.request_anim_frame(); + ctx.request_paint() + } + + fn render_state<'s>(&'s self, state: Q, target: &mut impl Renderer<'s>) { + self.store.render(state.index(), target) + } + + fn render_transition<'s>(&'s self, transition: &Transition<Q>, target: &mut impl Renderer<'s>) { + let off = transition.animation.value(Instant::now()); + + if self.state == transition.prev_state { + target.with_origin(off, &|target| { + self.store.render_cloned(target); + }); + } else { + target.with_origin(off, &|target| { + self.render_state(transition.prev_state, target); + }); + } + target.with_origin( + off - transition.direction.as_offset(self.anim_offset), + &|target| { + self.render_state(self.state, target); + }, + ); + } + + fn handle_transition(&mut self, ctx: &mut EventCtx) { + if let Some(transition) = &self.transition { + if transition.animation.finished(Instant::now()) { + self.transition = None; + unwrap!(self.store.clone(None)); // Free the clone. + + let msg = self.store.event(self.state.index(), ctx, Event::Attach); + assert!(msg.is_none()) + } else { + ctx.request_anim_frame(); + } + ctx.request_paint(); + } + } + + fn handle_swipe_child(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> Decision<Q> { + let i = self.state.index(); + if self.store.map_swipable(i, |s| s.can_swipe(direction)) { + // Before handling the swipe we make a copy of the original state so that we + // can render both states in the transition animation. + unwrap!(self.store.clone(Some(i))); + self.store.map_swipable(i, |s| s.swiped(ctx, direction)); + Decision::Goto(self.state, direction) + } else { + Decision::Nothing + } + } + + fn handle_event_child(&mut self, ctx: &mut EventCtx, event: Event) -> Decision<Q> { + let msg = self.store.event(self.state.index(), ctx, event); + if let Some(msg) = msg { + self.state.handle_event(msg) + } else { + Decision::Nothing + } + } +} + +impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { + type Msg = FlowMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + // Save screen size for slide animation. Once we have reasonable constants trait + // this can be set in the constructor. + self.anim_offset = bounds.size(); + + self.swipe.place(bounds); + self.store.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + // TODO: are there any events we want to send to all? timers perhaps? + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + self.handle_transition(ctx); + } + // Ignore events while transition is running. + if self.transition.is_some() { + return None; + } + + let mut decision = Decision::Nothing; + if let Some(direction) = self.swipe.event(ctx, event) { + decision = self + .handle_swipe_child(ctx, direction) + .or_else(|| self.state.handle_swipe(direction)); + } + decision = decision.or_else(|| self.handle_event_child(ctx, event)); + + match decision { + Decision::Nothing => None, + Decision::Goto(next_state, direction) => { + self.goto(ctx, direction, next_state); + None + } + Decision::Return(msg) => Some(msg), + } + } + + fn paint(&mut self) {} + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + if let Some(transition) = &self.transition { + self.render_transition(transition, target) + } else { + self.render_state(self.state, target) + } + } +} + +#[cfg(feature = "ui_debug")] +impl<Q: FlowState, S: FlowStore> crate::trace::Trace for SwipeFlow<Q, S> { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.store.trace(self.state.index(), t) + } +} + +#[cfg(feature = "micropython")] +impl<Q: FlowState, S: FlowStore> crate::ui::layout::obj::ComponentMsgObj for SwipeFlow<Q, S> { + fn msg_try_into_obj( + &self, + msg: Self::Msg, + ) -> Result<crate::micropython::obj::Obj, error::Error> { + match msg { + FlowMsg::Confirmed => Ok(crate::ui::layout::result::CONFIRMED.as_obj()), + FlowMsg::Cancelled => Ok(crate::ui::layout::result::CANCELLED.as_obj()), + FlowMsg::Info => Ok(crate::ui::layout::result::INFO.as_obj()), + FlowMsg::Choice(i) => { + Ok((crate::ui::layout::result::CONFIRMED.as_obj(), i.try_into()?).try_into()?) + } + } + } +} diff --git a/core/embed/rust/src/ui/flow/mod.rs b/core/embed/rust/src/ui/flow/mod.rs new file mode 100644 index 0000000000..6f3d1f45aa --- /dev/null +++ b/core/embed/rust/src/ui/flow/mod.rs @@ -0,0 +1,10 @@ +pub mod base; +mod flow; +pub mod page; +mod store; +mod swipe; + +pub use base::{FlowMsg, FlowState, Swipable, SwipeDirection}; +pub use flow::SwipeFlow; +pub use page::{IgnoreSwipe, SwipePage}; +pub use store::{flow_store, FlowStore}; diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs new file mode 100644 index 0000000000..8d5ac35985 --- /dev/null +++ b/core/embed/rust/src/ui/flow/page.rs @@ -0,0 +1,132 @@ +use crate::ui::{ + component::{Component, Event, EventCtx, Paginate}, + flow::base::{Swipable, SwipeDirection}, + geometry::{Axis, Rect}, + shape::Renderer, +}; + +/// Allows any implementor of `Paginate` to be part of `Swipable` UI flow. +#[derive(Clone)] +pub struct SwipePage<T> { + inner: T, + axis: Axis, + pages: usize, + current: usize, +} + +impl<T> SwipePage<T> { + pub fn vertical(inner: T) -> Self { + Self { + inner, + axis: Axis::Vertical, + pages: 1, + current: 0, + } + } +} + +impl<T: Component + Paginate> Component for SwipePage<T> { + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + let result = self.inner.place(bounds); + self.pages = self.inner.page_count(); + result + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let msg = self.inner.event(ctx, event); + msg + } + + fn paint(&mut self) { + self.inner.paint() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target) + } +} + +impl<T: Component + Paginate> Swipable for SwipePage<T> { + fn can_swipe(&self, direction: SwipeDirection) -> bool { + match (self.axis, direction) { + (Axis::Horizontal, SwipeDirection::Up | SwipeDirection::Down) => false, + (Axis::Vertical, SwipeDirection::Left | SwipeDirection::Right) => false, + (_, SwipeDirection::Left | SwipeDirection::Up) => self.current + 1 < self.pages, + (_, SwipeDirection::Right | SwipeDirection::Down) => self.current > 0, + } + } + + fn swiped(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) { + match (self.axis, direction) { + (Axis::Horizontal, SwipeDirection::Up | SwipeDirection::Down) => return, + (Axis::Vertical, SwipeDirection::Left | SwipeDirection::Right) => return, + (_, SwipeDirection::Left | SwipeDirection::Up) => { + self.current = (self.current + 1).min(self.pages - 1); + } + (_, SwipeDirection::Right | SwipeDirection::Down) => { + self.current = self.current.saturating_sub(1); + } + } + self.inner.change_page(self.current); + ctx.request_paint(); + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for SwipePage<T> +where + T: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.inner.trace(t) + } +} + +/// Make any component swipable by ignoring all swipe events. +#[derive(Clone)] +pub struct IgnoreSwipe<T>(T); + +impl<T> IgnoreSwipe<T> { + pub fn new(inner: T) -> Self { + IgnoreSwipe(inner) + } +} + +impl<T: Component> Component for IgnoreSwipe<T> { + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.0.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.0.event(ctx, event) + } + + fn paint(&mut self) { + self.0.paint() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.0.render(target) + } +} + +impl<T> Swipable for IgnoreSwipe<T> { + fn can_swipe(&self, _direction: SwipeDirection) -> bool { + false + } + fn swiped(&mut self, _ctx: &mut EventCtx, _direction: SwipeDirection) {} +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for IgnoreSwipe<T> +where + T: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.0.trace(t) + } +} diff --git a/core/embed/rust/src/ui/flow/store.rs b/core/embed/rust/src/ui/flow/store.rs new file mode 100644 index 0000000000..993170154b --- /dev/null +++ b/core/embed/rust/src/ui/flow/store.rs @@ -0,0 +1,219 @@ +use crate::{ + error, + maybe_trace::MaybeTrace, + ui::{ + component::{Component, Event, EventCtx}, + flow::base::{FlowMsg, Swipable}, + geometry::Rect, + shape::Renderer, + }, +}; + +use crate::micropython::gc::Gc; + +/// `FlowStore` is essentially `Vec<Gc<dyn Component + Swipable>>` except that +/// `trait Component` is not object-safe so it ends up being a kind of +/// recursively-defined tuple. +/// +/// Additionally the store makes it possible to make a clone of one of its +/// items, in order to make it possible to render transition animations. +pub trait FlowStore { + /// Call `Component::place` on all elements. + fn place(&mut self, bounds: Rect) -> Rect; + + /// Call `Component::event` on i-th element, if it emits a message it is + /// converted to `FlowMsg` using a function. + fn event(&mut self, i: usize, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg>; + + /// Call `Component::render` on i-th element. + fn render<'s>(&'s self, i: usize, target: &mut impl Renderer<'s>); + + #[cfg(feature = "ui_debug")] + /// Call `Trace::trace` on i-th element. + fn trace(&self, i: usize, t: &mut dyn crate::trace::Tracer); + + /// Forward `Swipable` methods to i-th element. + fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T; + + /// Make a clone of i-th element, or free all clones if None is given. + fn clone(&mut self, i: Option<usize>) -> Result<(), error::Error>; + + /// Call `Component::render` on the cloned element. + fn render_cloned<'s>(&'s self, target: &mut impl Renderer<'s>); + + /// Add a Component to the end of a `FlowStore`. + fn add<E: Component + MaybeTrace + Swipable + Clone>( + self, + elem: E, + func: fn(E::Msg) -> Option<FlowMsg>, + ) -> Result<impl FlowStore, error::Error> + where + Self: Sized; +} + +/// Create new empty flow store. +pub fn flow_store() -> impl FlowStore { + FlowEmpty {} +} + +/// Terminating element of a recursive structure. +struct FlowEmpty; + +// Methods that take an index panic because it's always out of bounds. +impl FlowStore for FlowEmpty { + fn place(&mut self, bounds: Rect) -> Rect { + bounds + } + + fn event(&mut self, _i: usize, _ctx: &mut EventCtx, _event: Event) -> Option<FlowMsg> { + panic!() + } + + fn render<'s>(&'s self, _i: usize, _target: &mut impl Renderer<'s>) { + panic!() + } + + #[cfg(feature = "ui_debug")] + fn trace(&self, _i: usize, _t: &mut dyn crate::trace::Tracer) { + panic!() + } + + fn map_swipable<T>(&mut self, _i: usize, _func: impl FnOnce(&mut dyn Swipable) -> T) -> T { + panic!() + } + + fn clone(&mut self, _i: Option<usize>) -> Result<(), error::Error> { + Ok(()) + } + fn render_cloned<'s>(&'s self, _target: &mut impl Renderer<'s>) {} + + fn add<E: Component + MaybeTrace + Swipable + Clone>( + self, + elem: E, + func: fn(E::Msg) -> Option<FlowMsg>, + ) -> Result<impl FlowStore, error::Error> + where + Self: Sized, + { + Ok(FlowComponent { + elem: Gc::new(elem)?, + func, + cloned: None, + next: Self, + }) + } +} + +struct FlowComponent<E: Component, P> { + /// Component allocated on micropython heap. + pub elem: Gc<E>, + + /// Clone. + pub cloned: Option<Gc<E>>, + + /// Function to convert message to `FlowMsg`. + pub func: fn(E::Msg) -> Option<FlowMsg>, + + /// Nested FlowStore. + pub next: P, +} + +impl<E: Component, P> FlowComponent<E, P> { + fn as_ref(&self) -> &E { + &self.elem + } + + fn as_mut(&mut self) -> &mut E { + // SAFETY: micropython can only access this object through LayoutObj which wraps + // us in a RefCell which guarantees uniqueness + unsafe { Gc::as_mut(&mut self.elem) } + } +} + +impl<E, P> FlowStore for FlowComponent<E, P> +where + E: Component + MaybeTrace + Swipable + Clone, + P: FlowStore, +{ + fn place(&mut self, bounds: Rect) -> Rect { + self.as_mut().place(bounds); + self.next.place(bounds); + bounds + } + + fn event(&mut self, i: usize, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg> { + if i == 0 { + let msg = self.as_mut().event(ctx, event); + msg.and_then(self.func) + } else { + self.next.event(i - 1, ctx, event) + } + } + + fn render<'s>(&'s self, i: usize, target: &mut impl Renderer<'s>) { + if i == 0 { + self.as_ref().render(target) + } else { + self.next.render(i - 1, target) + } + } + + #[cfg(feature = "ui_debug")] + fn trace(&self, i: usize, t: &mut dyn crate::trace::Tracer) { + if i == 0 { + self.as_ref().trace(t) + } else { + self.next.trace(i - 1, t) + } + } + + fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T { + if i == 0 { + func(self.as_mut()) + } else { + self.next.map_swipable(i - 1, func) + } + } + + fn clone(&mut self, i: Option<usize>) -> Result<(), error::Error> { + match i { + None => { + // FIXME: how to ensure the allocation is returned? + self.cloned = None; + self.next.clone(None)? + } + Some(0) => { + self.cloned = Some(Gc::new(self.as_ref().clone())?); + self.next.clone(None)? + } + Some(i) => { + self.cloned = None; + self.next.clone(Some(i - 1))? + } + } + Ok(()) + } + + fn render_cloned<'s>(&'s self, target: &mut impl Renderer<'s>) { + if let Some(cloned) = &self.cloned { + cloned.render(target) + } + self.next.render_cloned(target); + } + + fn add<F: Component + MaybeTrace + Swipable + Clone>( + self, + elem: F, + func: fn(F::Msg) -> Option<FlowMsg>, + ) -> Result<impl FlowStore, error::Error> + where + Self: Sized, + { + Ok(FlowComponent { + elem: self.elem, + func: self.func, + cloned: None, + next: self.next.add(elem, func)?, + }) + } +} diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs new file mode 100644 index 0000000000..1d4d6989c5 --- /dev/null +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -0,0 +1,144 @@ +use crate::ui::{ + component::{Component, Event, EventCtx}, + event::TouchEvent, + flow::base::SwipeDirection, + geometry::{Point, Rect}, + shape::Renderer, +}; + +/// Copy of `model_tt/component/swipe.rs` but without the backlight handling. +pub struct Swipe { + pub area: Rect, + pub allow_up: bool, + pub allow_down: bool, + pub allow_left: bool, + pub allow_right: bool, + + origin: Option<Point>, +} + +impl Swipe { + const DISTANCE: i32 = 120; + const THRESHOLD: f32 = 0.2; + + pub fn new() -> Self { + Self { + area: Rect::zero(), + allow_up: false, + allow_down: false, + allow_left: false, + allow_right: false, + origin: None, + } + } + + pub fn vertical() -> Self { + Self::new().up().down() + } + + pub fn horizontal() -> Self { + Self::new().left().right() + } + + pub fn up(mut self) -> Self { + self.allow_up = true; + self + } + + pub fn down(mut self) -> Self { + self.allow_down = true; + self + } + + pub fn left(mut self) -> Self { + self.allow_left = true; + self + } + + pub fn right(mut self) -> Self { + self.allow_right = true; + self + } + + fn is_active(&self) -> bool { + self.allow_up || self.allow_down || self.allow_left || self.allow_right + } + + fn ratio(&self, dist: i16) -> f32 { + (dist as f32 / Self::DISTANCE as f32).min(1.0) + } +} + +impl Component for Swipe { + type Msg = SwipeDirection; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.area + } + + fn event(&mut self, _ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if !self.is_active() { + return None; + } + match (event, self.origin) { + (Event::Touch(TouchEvent::TouchStart(pos)), _) if self.area.contains(pos) => { + // Mark the starting position of this touch. + self.origin.replace(pos); + } + (Event::Touch(TouchEvent::TouchMove(pos)), Some(origin)) => { + // Consider our allowed directions and the touch distance and modify the display + // backlight accordingly. + let ofs = pos - origin; + let abs = ofs.abs(); + if abs.x > abs.y && (self.allow_left || self.allow_right) { + // Horizontal direction. + if (ofs.x < 0 && self.allow_left) || (ofs.x > 0 && self.allow_right) { + // self.backlight(self.ratio(abs.x)); + } + } else if abs.x < abs.y && (self.allow_up || self.allow_down) { + // Vertical direction. + if (ofs.y < 0 && self.allow_up) || (ofs.y > 0 && self.allow_down) { + // self.backlight(self.ratio(abs.y)); + } + }; + } + (Event::Touch(TouchEvent::TouchEnd(pos)), Some(origin)) => { + // Touch interaction is over, reset the position. + self.origin.take(); + + // Compare the touch distance with our allowed directions and determine if it + // constitutes a valid swipe. + let ofs = pos - origin; + let abs = ofs.abs(); + if abs.x > abs.y && (self.allow_left || self.allow_right) { + // Horizontal direction. + if self.ratio(abs.x) >= Self::THRESHOLD { + if ofs.x < 0 && self.allow_left { + return Some(SwipeDirection::Left); + } else if ofs.x > 0 && self.allow_right { + return Some(SwipeDirection::Right); + } + } + } else if abs.x < abs.y && (self.allow_up || self.allow_down) { + // Vertical direction. + if self.ratio(abs.y) >= Self::THRESHOLD { + if ofs.y < 0 && self.allow_up { + return Some(SwipeDirection::Up); + } else if ofs.y > 0 && self.allow_down { + return Some(SwipeDirection::Down); + } + } + }; + } + _ => { + // Do nothing. + } + } + None + } + + fn paint(&mut self) {} + + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} +} diff --git a/core/embed/rust/src/ui/geometry.rs b/core/embed/rust/src/ui/geometry.rs index ec2be3ba3d..bca2e523c0 100644 --- a/core/embed/rust/src/ui/geometry.rs +++ b/core/embed/rust/src/ui/geometry.rs @@ -134,6 +134,12 @@ impl From<Point> for Offset { } } +impl Lerp for Offset { + fn lerp(a: Self, b: Self, t: f32) -> Self { + Offset::new(i16::lerp(a.x, b.x, t), i16::lerp(a.y, b.y, t)) + } +} + /// A point in 2D space defined by the the `x` and `y` coordinate. Relative /// coordinates, vectors, and offsets are represented by the `Offset` type. #[derive(Copy, Clone, PartialEq, Eq)] diff --git a/core/embed/rust/src/ui/mod.rs b/core/embed/rust/src/ui/mod.rs index 029c136584..eb10f84bc9 100644 --- a/core/embed/rust/src/ui/mod.rs +++ b/core/embed/rust/src/ui/mod.rs @@ -7,6 +7,8 @@ pub mod component; pub mod constant; pub mod display; pub mod event; +#[cfg(all(feature = "micropython", feature = "model_mercury"))] +pub mod flow; pub mod geometry; pub mod lerp; pub mod shape; diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe.rs b/core/embed/rust/src/ui/model_mercury/component/swipe.rs index b4cab1d2ef..b4244e38c3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe.rs @@ -8,12 +8,7 @@ use crate::ui::{ use super::theme; -pub enum SwipeDirection { - Up, - Down, - Left, - Right, -} +pub use crate::ui::flow::SwipeDirection; pub struct Swipe { pub area: Rect, diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/model_mercury/mod.rs index 78d03001e8..bb3c85347b 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/mod.rs @@ -6,7 +6,10 @@ pub mod component; pub mod constant; pub mod theme; -mod screens; +pub mod flow; +#[cfg(feature = "micropython")] +pub mod layout; +pub mod screens; pub struct ModelMercuryFeatures; From 13634951652efc89ac2b2a8ccafe3ce79bc83bc7 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Fri, 12 Apr 2024 00:21:05 +0200 Subject: [PATCH 118/626] feat(core/ui): GetAddress flow demo --- core/embed/rust/src/ui/component/base.rs | 1 + core/embed/rust/src/ui/component/image.rs | 1 + core/embed/rust/src/ui/component/label.rs | 1 + core/embed/rust/src/ui/component/qr_code.rs | 1 + .../rust/src/ui/component/text/paragraphs.rs | 2 + core/embed/rust/src/ui/component/timeout.rs | 1 + .../component/address_details.rs | 2 +- .../src/ui/model_mercury/component/button.rs | 6 +- .../src/ui/model_mercury/component/dialog.rs | 3 + .../src/ui/model_mercury/component/frame.rs | 18 +- .../model_mercury/component/vertical_menu.rs | 3 + .../src/ui/model_mercury/flow/get_address.rs | 187 ++++++++++++++++++ .../rust/src/ui/model_mercury/flow/mod.rs | 3 + .../embed/rust/src/ui/model_mercury/layout.rs | 6 +- core/mocks/generated/trezorui2.pyi | 5 + .../src/trezor/ui/layouts/mercury/__init__.py | 11 ++ 16 files changed, 245 insertions(+), 6 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/get_address.rs create mode 100644 core/embed/rust/src/ui/model_mercury/flow/mod.rs diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 77f0ce8652..ab62262b53 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -75,6 +75,7 @@ pub trait Component { /// dirty flag for it. Any mutation of `T` has to happen through the `mutate` /// accessor, `T` can then request a paint call to be scheduled later by calling /// `EventCtx::request_paint` in its `event` pass. +#[derive(Clone)] pub struct Child<T> { component: T, marked_for_paint: bool, diff --git a/core/embed/rust/src/ui/component/image.rs b/core/embed/rust/src/ui/component/image.rs index 300933b219..1cae0794f8 100644 --- a/core/embed/rust/src/ui/component/image.rs +++ b/core/embed/rust/src/ui/component/image.rs @@ -72,6 +72,7 @@ impl crate::trace::Trace for Image { } } +#[derive(Clone)] pub struct BlendedImage { bg: Icon, fg: Icon, diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 2faac8a2a5..6efd6f7475 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -10,6 +10,7 @@ use crate::{ use super::{text::TextStyle, TextLayout}; +#[derive(Clone)] pub struct Label<'a> { text: TString<'a>, layout: TextLayout, diff --git a/core/embed/rust/src/ui/component/qr_code.rs b/core/embed/rust/src/ui/component/qr_code.rs index a5ea3db96c..affe9320a1 100644 --- a/core/embed/rust/src/ui/component/qr_code.rs +++ b/core/embed/rust/src/ui/component/qr_code.rs @@ -25,6 +25,7 @@ const CORNER_RADIUS: u8 = 4; const DARK: Color = Color::rgb(0, 0, 0); const LIGHT: Color = Color::rgb(0xff, 0xff, 0xff); +#[derive(Clone)] pub struct Qr { text: String<MAX_DATA>, border: i16, diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index b9cc667b4b..eb33aef3f9 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -47,6 +47,7 @@ pub trait ParagraphSource<'a> { } } +#[derive(Clone)] pub struct Paragraphs<T> { area: Rect, placement: LinearPlacement, @@ -335,6 +336,7 @@ impl<'a> Paragraph<'a> { } } +#[derive(Clone)] struct TextLayoutProxy { offset: PageOffset, bounds: Rect, diff --git a/core/embed/rust/src/ui/component/timeout.rs b/core/embed/rust/src/ui/component/timeout.rs index aed7f508f0..708a106aa6 100644 --- a/core/embed/rust/src/ui/component/timeout.rs +++ b/core/embed/rust/src/ui/component/timeout.rs @@ -7,6 +7,7 @@ use crate::{ }, }; +#[derive(Clone)] pub struct Timeout { time_ms: u32, timer: Option<TimerToken>, diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index f79276dfd6..c3e7ca7dd8 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -95,7 +95,7 @@ impl AddressDetails { // repaint after page change so we can use a dummy context here. let mut dummy_ctx = EventCtx::new(); self.xpub_view.update_title(&mut dummy_ctx, self.xpubs[i].0); - self.xpub_view.update_content(&mut dummy_ctx, |p| { + self.xpub_view.update_content(&mut dummy_ctx, |_ctx, p| { p.inner_mut().update(self.xpubs[i].1); let npages = p.page_count(); p.change_page(page); diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 037aa38294..257a3fb921 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -22,6 +22,7 @@ pub enum ButtonMsg { LongPressed, } +#[derive(Clone)] pub struct Button { area: Rect, touch_expand: Option<Insets>, @@ -386,7 +387,7 @@ impl crate::trace::Trace for Button { } } -#[derive(PartialEq, Eq)] +#[derive(PartialEq, Eq, Clone)] enum State { Initial, Pressed, @@ -394,7 +395,7 @@ enum State { Disabled, } -#[derive(PartialEq, Eq)] +#[derive(PartialEq, Eq, Clone)] pub enum ButtonContent { Empty, Text(TString<'static>), @@ -510,6 +511,7 @@ impl Button { } } +#[derive(Copy, Clone)] pub enum CancelConfirmMsg { Cancelled, Confirmed, diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index c66d37a91f..3766da6c40 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -97,6 +97,7 @@ where } } +#[derive(Clone)] pub struct IconDialog<U> { image: Child<BlendedImage>, paragraphs: Paragraphs<ParagraphVecShort<'static>>, @@ -228,3 +229,5 @@ where t.child("controls", &self.controls); } } + +impl<U> crate::ui::flow::Swipable for IconDialog<U> {} diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index bd74351e01..62a697adba 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -15,6 +15,7 @@ use super::{Button, ButtonMsg, CancelInfoConfirmMsg}; const TITLE_HEIGHT: i16 = 42; +#[derive(Clone)] pub struct Frame<T> { border: Insets, title: Child<Label<'static>>, @@ -109,10 +110,10 @@ where pub fn update_content<F, R>(&mut self, ctx: &mut EventCtx, update_fn: F) -> R where - F: Fn(&mut T) -> R, + F: Fn(&mut EventCtx, &mut T) -> R, { self.content.mutate(ctx, |ctx, c| { - let res = update_fn(c); + let res = update_fn(ctx, c); c.request_complete_repaint(ctx); res }) @@ -195,3 +196,16 @@ where } } } + +impl<T> crate::ui::flow::Swipable for Frame<T> +where + T: Component + crate::ui::flow::Swipable, +{ + fn can_swipe(&self, direction: crate::ui::flow::SwipeDirection) -> bool { + self.inner().can_swipe(direction) + } + + fn swiped(&mut self, ctx: &mut EventCtx, direction: crate::ui::flow::SwipeDirection) { + self.update_content(ctx, |ctx, inner| inner.swiped(ctx, direction)) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 5045f3187c..c403f6b244 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -34,6 +34,7 @@ const MENU_SEP_HEIGHT: i16 = 2; type VerticalMenuButtons = Vec<Button, N_ITEMS>; type AreasForSeparators = Vec<Rect, N_SEPS>; +#[derive(Clone)] pub struct VerticalMenu { area: Rect, /// buttons placed vertically from top to bottom @@ -150,3 +151,5 @@ impl crate::trace::Trace for VerticalMenu { }); } } + +impl crate::ui::flow::Swipable for VerticalMenu {} diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs new file mode 100644 index 0000000000..c56037f4fc --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -0,0 +1,187 @@ +use crate::{ + error, + ui::{ + component::{ + image::BlendedImage, + text::paragraphs::{Paragraph, Paragraphs}, + Qr, Timeout, + }, + flow::{ + base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeDirection, + SwipeFlow, SwipePage, + }, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, IconDialog, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +const LONGSTRING: &'static str = "https://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKohttps://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKohttps://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKohttps://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKohttps://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKo"; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum GetAddress { + Address, + Menu, + QrCode, + AccountInfo, + Cancel, + Success, +} + +impl FlowState for GetAddress { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (GetAddress::Address, SwipeDirection::Left) => { + Decision::Goto(GetAddress::Menu, direction) + } + (GetAddress::Address, SwipeDirection::Up) => { + Decision::Goto(GetAddress::Success, direction) + } + (GetAddress::Menu, SwipeDirection::Right) => { + Decision::Goto(GetAddress::Address, direction) + } + (GetAddress::QrCode, SwipeDirection::Right) => { + Decision::Goto(GetAddress::Menu, direction) + } + (GetAddress::AccountInfo, SwipeDirection::Right) => { + Decision::Goto(GetAddress::Menu, direction) + } + (GetAddress::Cancel, SwipeDirection::Up) => Decision::Return(FlowMsg::Cancelled), + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (GetAddress::Address, FlowMsg::Info) => { + Decision::Goto(GetAddress::Menu, SwipeDirection::Left) + } + + (GetAddress::Menu, FlowMsg::Choice(0)) => { + Decision::Goto(GetAddress::QrCode, SwipeDirection::Left) + } + + (GetAddress::Menu, FlowMsg::Choice(1)) => { + Decision::Goto(GetAddress::AccountInfo, SwipeDirection::Left) + } + + (GetAddress::Menu, FlowMsg::Choice(2)) => { + Decision::Goto(GetAddress::Cancel, SwipeDirection::Left) + } + + (GetAddress::Menu, FlowMsg::Cancelled) => { + Decision::Goto(GetAddress::Address, SwipeDirection::Right) + } + + (GetAddress::QrCode, FlowMsg::Cancelled) => { + Decision::Goto(GetAddress::Menu, SwipeDirection::Right) + } + + (GetAddress::AccountInfo, FlowMsg::Cancelled) => { + Decision::Goto(GetAddress::Menu, SwipeDirection::Right) + } + + (GetAddress::Cancel, FlowMsg::Cancelled) => { + Decision::Goto(GetAddress::Menu, SwipeDirection::Right) + } + + (GetAddress::Success, _) => Decision::Return(FlowMsg::Confirmed), + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{buffer::StrBuffer, map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +pub extern "C" fn new_get_address(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, GetAddress::new) } +} + +impl GetAddress { + fn new(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { + let store = flow_store() + .add( + Frame::left_aligned( + "Receive".into(), + SwipePage::vertical(Paragraphs::new(Paragraph::new( + &theme::TEXT_MONO, + StrBuffer::from(LONGSTRING), + ))), + ) + .with_subtitle("address".into()) + .with_info_button(), + |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info), + )? + .add( + Frame::left_aligned( + "".into(), + VerticalMenu::context_menu([ + ("Address QR code", theme::ICON_QR_CODE), + ("Account info", theme::ICON_CHEVRON_RIGHT), + ("Cancel trans.", theme::ICON_CANCEL), + ]), + ) + .with_cancel_button(), + |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { + Some(FlowMsg::Choice(i)) + } + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }, + )? + .add( + Frame::left_aligned( + "Receive address".into(), + IgnoreSwipe::new(Qr::new( + "https://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKo", + true, + )?), + ) + .with_cancel_button(), + |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled), + )? + .add( + Frame::left_aligned( + "Account info".into(), + SwipePage::vertical(Paragraphs::new(Paragraph::new( + &theme::TEXT_NORMAL, + StrBuffer::from("taproot xp"), + ))), + ) + .with_cancel_button(), + |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled), + )? + .add( + Frame::left_aligned( + "Cancel receive".into(), + SwipePage::vertical(Paragraphs::new(Paragraph::new( + &theme::TEXT_NORMAL, + StrBuffer::from("O rly?"), + ))), + ) + .with_cancel_button(), + |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled), + )? + .add( + IconDialog::new( + BlendedImage::new( + theme::IMAGE_BG_CIRCLE, + theme::IMAGE_FG_WARN, + theme::SUCCESS_COLOR, + theme::FG, + theme::BG, + ), + StrBuffer::from("Confirmed"), + Timeout::new(100), + ), + |_| Some(FlowMsg::Confirmed), + )?; + let res = SwipeFlow::new(GetAddress::Address, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs new file mode 100644 index 0000000000..be27c0c4c1 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -0,0 +1,3 @@ +pub mod get_address; + +pub use get_address::GetAddress; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 1012d24b3b..0afce326ce 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -56,7 +56,7 @@ use super::{ SelectWordCount, SelectWordCountMsg, SelectWordMsg, ShareWords, SimplePage, Slip39Input, VerticalMenu, VerticalMenuChoiceMsg, }, - theme, + flow, theme, }; impl TryFrom<CancelConfirmMsg> for Obj { @@ -2152,6 +2152,10 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def show_wait_text(message: str, /) -> LayoutObj[None]: /// """Show single-line text in the middle of the screen.""" Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), + + /// def flow_get_address() -> LayoutObj[UiResult]: + /// """Get address / receive funds.""" + Qstr::MP_QSTR_flow_get_address => obj_fn_kw!(0, flow::get_address::new_get_address).as_obj(), }; #[cfg(test)] diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index efbb8e289a..f4fb27f2d6 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -523,6 +523,11 @@ def confirm_firmware_update( # rust/src/ui/model_mercury/layout.rs def show_wait_text(message: str, /) -> LayoutObj[None]: """Show single-line text in the middle of the screen.""" + + +# rust/src/ui/model_mercury/layout.rs +def flow_get_address() -> LayoutObj[UiResult]: + """Get address / receive funds.""" CONFIRMED: UiResult CANCELLED: UiResult INFO: UiResult diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 636481ea65..2550c6b9cc 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -278,6 +278,17 @@ async def confirm_action( ) +async def flow_demo() -> None: + await raise_if_not_confirmed( + interact( + RustLayout(trezorui2.flow_get_address()), + "get_address", + BR_TYPE_OTHER, + ), + ActionCancelled, + ) + + async def confirm_single( br_type: str, title: str, From 683ea6ed26de7404827a567da4766b3926f17b92 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 16 Apr 2024 23:22:15 +0200 Subject: [PATCH 119/626] fix(core): rebase on drawlib mercury theme.rs needs some cleanup after this action --- core/embed/rust/src/ui/display/loader/mod.rs | 2 +- .../src/ui/model_mercury/component/button.rs | 22 +- .../src/ui/model_mercury/component/frame.rs | 10 +- .../src/ui/model_mercury/component/mod.rs | 26 +- .../model_mercury/component/number_input.rs | 2 +- .../model_mercury/component/vertical_menu.rs | 1 - .../embed/rust/src/ui/model_mercury/layout.rs | 19 +- .../rust/src/ui/model_mercury/theme/mod.rs | 297 ++++++++++++++++-- 8 files changed, 316 insertions(+), 63 deletions(-) diff --git a/core/embed/rust/src/ui/display/loader/mod.rs b/core/embed/rust/src/ui/display/loader/mod.rs index 691770a4a3..5d41532c04 100644 --- a/core/embed/rust/src/ui/display/loader/mod.rs +++ b/core/embed/rust/src/ui/display/loader/mod.rs @@ -7,7 +7,7 @@ mod starry; use crate::ui::display::{Color, Icon}; -#[cfg(any(feature = "model_tt", feature = "model_mercury"))] +#[cfg(feature = "model_tt")] use crate::ui::display::loader::circular::{ loader_circular as determinate, loader_circular_indeterminate as indeterminate, }; diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 257a3fb921..3b34a3d5e0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -4,7 +4,9 @@ use crate::{ strutil::TString, time::Duration, ui::{ - component::{Component, Event, EventCtx, TimerToken}, + component::{ + Component, ComponentExt, Event, EventCtx, FixedHeightBar, MsgMap, Split, TimerToken, + }, display::{self, toif::Icon, Color, Font}, event::TouchEvent, geometry::{Alignment2D, Insets, Offset, Point, Rect}, @@ -255,7 +257,7 @@ impl Button { .render(target); } ButtonContent::IconAndText(child) => { - child.render(target, self.area, style, Self::BASELINE_OFFSET); + child.render(target, self.area, self.style(), Self::BASELINE_OFFSET); } ButtonContent::IconBlend(bg, fg, offset) => { shape::Bar::new(self.area) @@ -430,8 +432,7 @@ impl Button { ) -> CancelConfirm< impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, - > - { + > { let width = if left_is_small { theme::BUTTON_WIDTH } else { @@ -455,8 +456,7 @@ impl Button { ) -> CancelConfirm< impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, - > - { + > { let left_is_small: bool; let left = if let Some(verb) = left { @@ -485,8 +485,7 @@ impl Button { impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, - > - { + > { let right = Button::with_text(confirm) .styled(theme::button_confirm()) .map(|msg| { @@ -529,7 +528,7 @@ pub enum CancelInfoConfirmMsg { Confirmed, } -#[derive(PartialEq, Eq)] +#[derive(PartialEq, Eq, Clone)] pub struct IconText { text: &'static str, icon: Icon, @@ -555,8 +554,7 @@ impl IconText { area.top_left().x + ((Self::ICON_SPACE + Self::ICON_MARGIN) / 2), area.center().y, ); - let mut text_pos = - area.center() + Offset::new(-width / 2, height / 2) + baseline_offset; + let mut text_pos = area.center() + Offset::new(-width / 2, height / 2) + baseline_offset; if area.width() > (Self::ICON_SPACE + Self::TEXT_MARGIN + width) { //display both icon and text @@ -623,9 +621,11 @@ impl IconText { if use_text { shape::Text::new(text_pos, self.text) + .with_font(style.font) .with_fg(style.text_color) .render(target); } + if use_icon { shape::ToifImage::new(icon_pos, self.icon.toif) .with_align(Alignment2D::CENTER) diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 62a697adba..ba0b14d661 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -6,12 +6,12 @@ use crate::{ base::ComponentExt, label::Label, text::TextStyle, Child, Component, Event, EventCtx, }, display::Icon, - geometry::{Alignment, Insets, Offset, Rect}, + geometry::{Alignment, Insets, Rect}, shape::Renderer, }, }; -use super::{Button, ButtonMsg, CancelInfoConfirmMsg}; +use super::{constant::SPACING, Button, ButtonMsg, CancelInfoConfirmMsg}; const TITLE_HEIGHT: i16 = 42; @@ -46,15 +46,15 @@ where } } - pub fn left_aligned(style: TextStyle, title: TString<'static>, content: T) -> Self { + pub fn left_aligned(title: TString<'static>, content: T) -> Self { Self::new(Alignment::Start, title, content) } - pub fn right_aligned(style: TextStyle, title: TString<'static>, content: T) -> Self { + pub fn right_aligned(title: TString<'static>, content: T) -> Self { Self::new(Alignment::End, title, content) } - pub fn centered(style: TextStyle, title: TString<'static>, content: T) -> Self { + pub fn centered(title: TString<'static>, content: T) -> Self { Self::new(Alignment::Center, title, content) } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index a6da95bc1c..68bd86ce98 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -1,3 +1,5 @@ +#[cfg(feature = "translations")] +mod address_details; pub mod bl_confirm; mod button; #[cfg(feature = "translations")] @@ -10,7 +12,15 @@ mod vertical_menu; mod fido_icons; mod error; mod frame; +#[cfg(feature = "micropython")] +mod homescreen; +mod keyboard; mod loader; +#[cfg(feature = "translations")] +mod number_input; +#[cfg(feature = "translations")] +mod page; +mod progress; mod result; mod scroll; mod share_words; @@ -18,14 +28,21 @@ mod simple_page; mod swipe; mod welcome_screen; +#[cfg(feature = "translations")] +pub use address_details::AddressDetails; pub use button::{ - Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, CancelInfoConfirmMsg, IconText, + Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, CancelConfirmMsg, + CancelInfoConfirmMsg, IconText, }; +#[cfg(feature = "translations")] +pub use coinjoin_progress::CoinJoinProgress; +pub use dialog::{Dialog, DialogMsg, IconDialog}; pub use error::ErrorScreen; +pub use fido::{FidoConfirm, FidoMsg}; +pub use footer::Footer; pub use frame::{Frame, FrameMsg}; #[cfg(feature = "micropython")] pub use homescreen::{check_homescreen_format, Homescreen, HomescreenMsg, Lockscreen}; -pub use footer::Footer; pub use keyboard::{ bip39::Bip39Input, mnemonic::{MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg}, @@ -35,6 +52,11 @@ pub use keyboard::{ word_count::{SelectWordCount, SelectWordCountMsg}, }; pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; +#[cfg(feature = "translations")] +pub use number_input::{NumberInputDialog, NumberInputDialogMsg}; +#[cfg(feature = "translations")] +pub use page::ButtonPage; +pub use progress::Progress; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; pub use share_words::ShareWords; diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index c39ac6ba2e..215483fe4c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -1,6 +1,6 @@ use crate::{ error::Error, - strutil::{self, StringType, TString}, + strutil::{self, TString}, translations::TR, ui::{ component::{ diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index c403f6b244..84b89b2360 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -3,7 +3,6 @@ use heapless::Vec; use super::theme; use crate::{ micropython::buffer::StrBuffer, - strutil::TString, ui::{ component::{base::Component, Event, EventCtx}, display::Icon, diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 0afce326ce..d61cc7ef69 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -53,8 +53,8 @@ use super::{ FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, - SelectWordCount, SelectWordCountMsg, SelectWordMsg, ShareWords, SimplePage, Slip39Input, - VerticalMenu, VerticalMenuChoiceMsg, + SelectWordCount, SelectWordCountMsg, ShareWords, SimplePage, Slip39Input, VerticalMenu, + VerticalMenuChoiceMsg, }, flow, theme, }; @@ -82,16 +82,6 @@ impl TryFrom<CancelInfoConfirmMsg> for Obj { } } -impl TryFrom<SelectWordMsg> for Obj { - type Error = Error; - - fn try_from(value: SelectWordMsg) -> Result<Self, Self::Error> { - match value { - SelectWordMsg::Selected(i) => i.try_into(), - } - } -} - impl TryFrom<SelectWordCountMsg> for Obj { type Error = Error; @@ -1213,10 +1203,7 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut let paragraphs = Paragraphs::new([ Paragraph::new(&theme::TEXT_NORMAL, TR::coinjoin__max_rounds), Paragraph::new(&theme::TEXT_MONO, max_rounds), - Paragraph::new( - &theme::TEXT_NORMAL, - TR::coinjoin__max_mining_fee, - ), + Paragraph::new(&theme::TEXT_NORMAL, TR::coinjoin__max_mining_fee), Paragraph::new(&theme::TEXT_MONO, max_feerate), ]); diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 1b0f116cb2..f33f0b7540 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -1,16 +1,29 @@ pub mod bootloader; -use crate::ui::{ - component::text::{LineBreaking, PageBreaking, TextStyle}, - display::{Color, Font, Icon}, - geometry::Insets, +use crate::{ + time::Duration, + ui::{ + component::{ + text::{layout::Chunks, LineBreaking, PageBreaking, TextStyle}, + FixedHeightBar, + }, + display::{Color, Font, Icon}, + geometry::{Insets, Offset}, + }, }; -use super::component::{ButtonStyle, ButtonStyleSheet, LoaderStyle, LoaderStyleSheet}; +use super::component::{ButtonStyle, ButtonStyleSheet, LoaderStyle, LoaderStyleSheet, ResultStyle}; + +use num_traits::FromPrimitive; + +pub const ERASE_HOLD_DURATION: Duration = Duration::from_millis(1500); // Typical backlight values. pub const BACKLIGHT_NORMAL: u16 = 150; +pub const BACKLIGHT_LOW: u16 = 45; pub const BACKLIGHT_DIM: u16 = 5; +pub const BACKLIGHT_NONE: u16 = 2; +pub const BACKLIGHT_MAX: u16 = 255; // Color palette. pub const WHITE: Color = Color::rgb(0xFF, 0xFF, 0xFF); @@ -46,6 +59,9 @@ pub const FATAL_ERROR_HIGHLIGHT_COLOR: Color = Color::rgb(0xFF, 0x41, 0x41); // Commonly used corner radius (i.e. for buttons). pub const RADIUS: u8 = 0; +// Full-size QR code. +pub const QR_SIDE_MAX: u32 = 140; + // UI icons (greyscale). // 20x20 @@ -85,35 +101,124 @@ include_icon!(ICON_PLUS, "model_mercury/res/plus40.toif"); // TODO remove TT icons: // Button icons. -include_icon!(ICON_CANCEL, "model_mercury/res/x24.toif"); -include_icon!(ICON_CONFIRM, "model_mercury/res/check24.toif"); -include_icon!(ICON_UP, "model_mercury/res/caret-up24.toif"); +include_icon!(ICON_CONFIRM, "model_tt/res/check24.toif"); +include_icon!(ICON_SPACE, "model_tt/res/space.toif"); +include_icon!(ICON_BACK, "model_tt/res/caret-left24.toif"); +include_icon!(ICON_FORWARD, "model_tt/res/caret-right24.toif"); +include_icon!(ICON_UP, "model_tt/res/caret-up24.toif"); +include_icon!(ICON_DOWN, "model_tt/res/caret-down24.toif"); +include_icon!(ICON_CLICK, "model_tt/res/finger24.toif"); -include_icon!(ICON_CORNER_CANCEL, "model_mercury/res/x32.toif"); -include_icon!(ICON_CORNER_INFO, "model_mercury/res/info32.toif"); +include_icon!(ICON_CORNER_CANCEL, "model_tt/res/x32.toif"); +include_icon!(ICON_CORNER_INFO, "model_tt/res/info32.toif"); // Checklist symbols. -include_icon!(ICON_LIST_CURRENT, "model_mercury/res/arrow-right16.toif"); -include_icon!(ICON_LIST_CHECK, "model_mercury/res/check16.toif"); +include_icon!(ICON_LIST_CURRENT, "model_tt/res/arrow-right16.toif"); +include_icon!(ICON_LIST_CHECK, "model_tt/res/check16.toif"); // Homescreen notifications. -include_icon!(ICON_WARNING40, "model_mercury/res/warning40.toif"); -include_icon!(ICON_LOCK_BIG, "model_mercury/res/lock24.toif"); +include_icon!(ICON_WARN, "model_tt/res/warning16.toif"); +include_icon!(ICON_WARNING40, "model_tt/res/warning40.toif"); +include_icon!(ICON_LOCK, "model_tt/res/lock16.toif"); +include_icon!(ICON_LOCK_BIG, "model_tt/res/lock24.toif"); +include_icon!(ICON_COINJOIN, "model_tt/res/coinjoin16.toif"); +include_icon!(ICON_MAGIC, "model_tt/res/magic.toif"); // Text arrows. -include_icon!(ICON_PAGE_NEXT, "model_mercury/res/page-next.toif"); -include_icon!(ICON_PAGE_PREV, "model_mercury/res/page-prev.toif"); +include_icon!(ICON_PAGE_NEXT, "model_tt/res/page-next.toif"); +include_icon!(ICON_PAGE_PREV, "model_tt/res/page-prev.toif"); // Large, three-color icons. -pub const WARN_COLOR: Color = ORANGE_LIGHT; -pub const INFO_COLOR: Color = GREY_LIGHT; +pub const WARN_COLOR: Color = YELLOW; +pub const INFO_COLOR: Color = BLUE; pub const SUCCESS_COLOR: Color = GREEN; -pub const ERROR_COLOR: Color = ORANGE_DIMMED; -include_icon!(IMAGE_FG_SUCCESS, "model_mercury/res/fg-check48.toif"); -include_icon!(IMAGE_BG_CIRCLE, "model_mercury/res/circle48.toif"); +pub const ERROR_COLOR: Color = RED; +include_icon!(IMAGE_FG_WARN, "model_tt/res/fg-warning48.toif"); +include_icon!(IMAGE_FG_SUCCESS, "model_tt/res/fg-check48.toif"); +include_icon!(IMAGE_FG_ERROR, "model_tt/res/fg-error48.toif"); +include_icon!(IMAGE_FG_INFO, "model_tt/res/fg-info48.toif"); +include_icon!(IMAGE_FG_USER, "model_tt/res/fg-user48.toif"); +include_icon!(IMAGE_BG_CIRCLE, "model_tt/res/circle48.toif"); +include_icon!(IMAGE_BG_OCTAGON, "model_tt/res/octagon48.toif"); + +// Non-square button backgrounds. +include_icon!(IMAGE_BG_BACK_BTN, "model_tt/res/bg-back40.toif"); +include_icon!(IMAGE_BG_BACK_BTN_TALL, "model_tt/res/bg-back52.toif"); // Welcome screen. -include_icon!(ICON_LOGO, "model_mercury/res/lock_full.toif"); +include_icon!(ICON_LOGO, "model_tt/res/lock_full.toif"); +include_icon!(ICON_LOGO_EMPTY, "model_tt/res/lock_empty.toif"); + +// Default homescreen +pub const IMAGE_HOMESCREEN: &[u8] = include_res!("model_tt/res/bg.jpg"); + +// Scrollbar/PIN dots. +include_icon!(DOT_ACTIVE, "model_tt/res/scroll-active.toif"); +include_icon!(DOT_INACTIVE, "model_tt/res/scroll-inactive.toif"); +include_icon!(DOT_INACTIVE_HALF, "model_tt/res/scroll-inactive-half.toif"); +include_icon!( + DOT_INACTIVE_QUARTER, + "model_tt/res/scroll-inactive-quarter.toif" +); +include_icon!(DOT_SMALL, "model_tt/res/scroll-small.toif"); + +pub const fn label_default() -> TextStyle { + TEXT_NORMAL +} + +pub const fn label_keyboard() -> TextStyle { + TextStyle::new(Font::DEMIBOLD, OFF_WHITE, BG, GREY_LIGHT, GREY_LIGHT) +} + +pub const fn label_keyboard_prompt() -> TextStyle { + TextStyle::new(Font::DEMIBOLD, GREY_LIGHT, BG, GREY_LIGHT, GREY_LIGHT) +} + +pub const fn label_keyboard_warning() -> TextStyle { + TextStyle::new(Font::DEMIBOLD, RED, BG, GREY_LIGHT, GREY_LIGHT) +} + +pub const fn label_keyboard_minor() -> TextStyle { + TEXT_NORMAL_OFF_WHITE +} + +pub const fn label_warning() -> TextStyle { + TEXT_DEMIBOLD +} + +pub const fn label_warning_value() -> TextStyle { + TEXT_NORMAL_OFF_WHITE +} + +pub const fn label_recovery_title() -> TextStyle { + TEXT_BOLD +} + +pub const fn label_recovery_description() -> TextStyle { + TEXT_NORMAL_OFF_WHITE +} + +pub const fn label_progress() -> TextStyle { + TEXT_BOLD +} + +pub const fn label_title_main() -> TextStyle { + TextStyle::new( + Font::NORMAL, + GREY_EXTRA_LIGHT, + GREY_DARK, + GREY_LIGHT, + GREY_LIGHT, + ) +} + +pub const fn label_title_sub() -> TextStyle { + TextStyle::new(Font::SUB, GREY, GREY_DARK, GREY_LIGHT, GREY_LIGHT) +} + +pub const fn label_coinjoin_progress() -> TextStyle { + TextStyle::new(Font::BOLD, FG, YELLOW, FG, FG) +} pub const fn button_default() -> ButtonStyleSheet { ButtonStyleSheet { @@ -129,7 +234,7 @@ pub const fn button_default() -> ButtonStyleSheet { active: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: GREY, + button_color: GREY_MEDIUM, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -147,6 +252,106 @@ pub const fn button_default() -> ButtonStyleSheet { } } +pub const fn button_confirm() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: GREEN, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: GREEN_DARK, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::BOLD, + text_color: GREY_LIGHT, + button_color: GREEN_DARK, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_cancel() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: RED, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: RED_DARK, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::BOLD, + text_color: GREY_LIGHT, + button_color: RED, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + +pub const fn button_danger() -> ButtonStyleSheet { + button_cancel() +} + +pub const fn button_reset() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: YELLOW, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: YELLOW_DARK, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::BOLD, + text_color: FG, + button_color: YELLOW, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + pub const fn button_moreinfo() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { @@ -163,9 +368,9 @@ pub const fn button_moreinfo() -> ButtonStyleSheet { text_color: FG, button_color: BG, background_color: BG, - border_color: GREY, - border_radius: RADIUS, - border_width: 2, + border_color: GREY_DARK, + border_radius: 0, + border_width: 1, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -509,6 +714,18 @@ pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, GREY_EXTRA_LIGHT, BG .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) .with_ellipsis_icon(ICON_PAGE_NEXT, 0) .with_prev_page_icon(ICON_PAGE_PREV, 0); +/// Makes sure that the displayed text (usually address) will get divided into +/// smaller chunks. +pub const TEXT_MONO_ADDRESS_CHUNKS: TextStyle = TEXT_MONO + .with_chunks(Chunks::new(4, 9)) + .with_line_spacing(5); +/// Smaller horizontal chunk offset, used e.g. for long Cardano addresses. +/// Also moving the next page ellipsis to the left (as there is a space on the +/// left). Last but not least, maximum number of rows is 4 in this case. +pub const TEXT_MONO_ADDRESS_CHUNKS_SMALLER_X_OFFSET: TextStyle = TEXT_MONO + .with_chunks(Chunks::new(4, 7).with_max_rows(4)) + .with_line_spacing(5) + .with_ellipsis_icon(ICON_PAGE_NEXT, -12); // TODO: remove TextStyles below when ui-t3t1 done pub const TEXT_NORMAL: TextStyle = TextStyle::new(Font::NORMAL, FG, BG, GREY_LIGHT, GREY_LIGHT); @@ -551,9 +768,26 @@ pub const CONTENT_BORDER: i16 = 0; pub const BUTTON_HEIGHT: i16 = 50; pub const BUTTON_WIDTH: i16 = 56; pub const BUTTON_SPACING: i16 = 6; +pub const KEYBOARD_SPACING: i16 = BUTTON_SPACING; +pub const CHECKLIST_SPACING: i16 = 10; +pub const RECOVERY_SPACING: i16 = 18; pub const CORNER_BUTTON_SIDE: i16 = 44; +pub const CORNER_BUTTON_SPACING: i16 = BUTTON_SPACING; +pub const INFO_BUTTON_HEIGHT: i16 = 44; +pub const PIN_BUTTON_HEIGHT: i16 = 40; +pub const MNEMONIC_BUTTON_HEIGHT: i16 = 52; pub const RESULT_PADDING: i16 = 6; pub const RESULT_FOOTER_START: i16 = 171; +pub const RESULT_FOOTER_HEIGHT: i16 = 62; + +// checklist settings +pub const CHECKLIST_CHECK_WIDTH: i16 = 16; +pub const CHECKLIST_DONE_OFFSET: Offset = Offset::new(-2, 6); +pub const CHECKLIST_CURRENT_OFFSET: Offset = Offset::new(2, 3); + +pub const fn button_bar<T>(inner: T) -> FixedHeightBar<T> { + FixedHeightBar::bottom(inner, BUTTON_HEIGHT) +} /// +----------+ /// | 6 | @@ -565,3 +799,14 @@ pub const RESULT_FOOTER_START: i16 = 171; pub const fn borders() -> Insets { Insets::new(0, 0, 0, 0) } + +pub const fn borders_horizontal_scroll() -> Insets { + Insets::new(0, 0, 0, 0) +} + +pub const fn borders_notification() -> Insets { + Insets::new(42, 0, 0, 0) +} + +pub const RESULT_ERROR: ResultStyle = + ResultStyle::new(FG, FATAL_ERROR_COLOR, FATAL_ERROR_HIGHLIGHT_COLOR); From b87048e2657b7669dd55c4eef4859a737d745e3a Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 16 Apr 2024 15:37:51 +0200 Subject: [PATCH 120/626] feat(core/ui): add Footer to T3T1 Frame --- .../src/ui/model_mercury/component/footer.rs | 13 +++++++ .../src/ui/model_mercury/component/frame.rs | 38 +++++++++++++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index 18d557a595..91038a1cd6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -64,6 +64,14 @@ impl<'a> Footer<'a> { self.style_description = style; ctx.request_paint(); } + + pub fn height(&self) -> i16 { + if self.text_description.is_some() { + Footer::HEIGHT_DEFAULT + } else { + Footer::HEIGHT_SIMPLE + } + } } impl<'a> Component for Footer<'a> { @@ -124,4 +132,9 @@ impl<'a> Component for Footer<'a> { .render(target); }); } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index ba0b14d661..608a78d1f8 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -11,7 +11,7 @@ use crate::{ }, }; -use super::{constant::SPACING, Button, ButtonMsg, CancelInfoConfirmMsg}; +use super::{constant::SPACING, Button, ButtonMsg, CancelInfoConfirmMsg, Footer}; const TITLE_HEIGHT: i16 = 42; @@ -23,6 +23,7 @@ pub struct Frame<T> { button: Option<Child<Button>>, button_msg: CancelInfoConfirmMsg, content: Child<T>, + footer: Option<Footer<'static>>, } pub enum FrameMsg<T> { @@ -43,6 +44,7 @@ where button: None, button_msg: CancelInfoConfirmMsg::Cancelled, content: Child::new(content), + footer: None, } } @@ -97,6 +99,19 @@ where self.with_button(theme::ICON_MENU, CancelInfoConfirmMsg::Info) } + pub fn with_footer( + mut self, + instruction: TString<'static>, + description: Option<TString<'static>>, + ) -> Self { + let mut footer = Footer::new(instruction); + if let Some(description_text) = description { + footer = footer.with_description(description_text); + } + self.footer = Some(footer); + self + } + pub fn inner(&self) -> &T { self.content.inner() } @@ -127,10 +142,10 @@ where type Msg = FrameMsg<T::Msg>; fn place(&mut self, bounds: Rect) -> Rect { - let (mut header_area, content_area) = bounds.split_top(TITLE_HEIGHT); - let content_area = content_area.inset(Insets::top(SPACING)); - + let (mut header_area, mut content_area) = bounds.split_top(TITLE_HEIGHT); + content_area = content_area.inset(Insets::top(SPACING)); header_area = header_area.inset(Insets::sides(SPACING)); + if let Some(b) = &mut self.button { let (rest, button_area) = header_area.split_right(TITLE_HEIGHT); header_area = rest; @@ -144,6 +159,15 @@ where } else { self.title.place(header_area); } + + if let Some(footer) = &mut self.footer { + // FIXME: spacer at the bottom might be applied also for usage without footer + // but not for VerticalMenu + content_area = content_area.inset(Insets::bottom(SPACING)); + let (remaining, footer_area) = content_area.split_bottom(footer.height()); + footer.place(footer_area); + content_area = remaining; + } self.content.place(content_area); bounds } @@ -162,12 +186,14 @@ where self.subtitle.paint(); self.button.paint(); self.content.paint(); + self.footer.paint(); } fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); self.subtitle.render(target); self.button.render(target); self.content.render(target); + self.footer.render(target); } #[cfg(feature = "ui_bounds")] @@ -176,6 +202,7 @@ where self.subtitle.bounds(sink); self.button.bounds(sink); self.content.bounds(sink); + self.footer.bounds(sink); } } @@ -194,6 +221,9 @@ where if let Some(button) = &self.button { t.child("button", button); } + if let Some(footer) = &self.footer { + t.child("footer", footer); + } } } From 8a56c393e2f5072fdd3840a5e50a799dbac5d029 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 16 Apr 2024 15:40:01 +0200 Subject: [PATCH 121/626] feat(core/ui): T3T1 reset wallet screen The first screen in wallet reset (onboarding or recovery) implemented as a simple SwipeFlow to handle moving between Menu and back. --- core/embed/rust/librust_qstr.h | 1 + .../src/ui/model_mercury/component/footer.rs | 16 ++- .../src/ui/model_mercury/component/frame.rs | 2 +- .../ui/model_mercury/component/share_words.rs | 4 +- .../model_mercury/component/vertical_menu.rs | 11 +- .../flow/confirm_reset_device.rs | 126 ++++++++++++++++++ .../src/ui/model_mercury/flow/get_address.rs | 5 +- .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../embed/rust/src/ui/model_mercury/layout.rs | 29 +--- .../rust/src/ui/model_mercury/theme/mod.rs | 8 +- core/mocks/trezortranslate_keys.pyi | 3 +- .../src/trezor/ui/layouts/mercury/__init__.py | 9 +- core/translations/cs.json | 1 + core/translations/de.json | 1 + core/translations/en.json | 1 + core/translations/es.json | 1 + core/translations/fr.json | 1 + core/translations/order.json | 3 +- core/translations/signatures.json | 6 +- 19 files changed, 178 insertions(+), 52 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 83824a3014..612c5a869e 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -231,6 +231,7 @@ static void _librust_qstrs(void) { MP_QSTR_inputs__return; MP_QSTR_inputs__show; MP_QSTR_inputs__space; + MP_QSTR_instructions__swipe_up; MP_QSTR_is_type_of; MP_QSTR_items; MP_QSTR_joint__title; diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index 91038a1cd6..4161b2ba87 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -14,6 +14,7 @@ use crate::{ /// height must be 18px (only instruction) or 37px (both description and /// instruction). The content and style of both description and instruction is /// configurable separatedly. +#[derive(Clone)] pub struct Footer<'a> { area: Rect, text_instruction: TString<'a>, @@ -33,8 +34,8 @@ impl<'a> Footer<'a> { area: Rect::zero(), text_instruction: instruction.into(), text_description: None, - style_instruction: &theme::TEXT_SUB, - style_description: &theme::TEXT_SUB, + style_instruction: &theme::TEXT_SUB_GREY, + style_description: &theme::TEXT_SUB_GREY_LIGHT, } } @@ -138,3 +139,14 @@ impl<'a> Component for Footer<'a> { sink(self.area); } } + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Footer<'_> { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Footer"); + if let Some(description) = self.text_description { + t.string("description", description); + } + t.string("instruction", self.text_instruction); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 608a78d1f8..09269b577b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -66,7 +66,7 @@ where } pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { - let style = theme::TEXT_SUB; + let style = theme::TEXT_SUB_GREY_LIGHT; self.title = Child::new(self.title.into_inner().top_aligned()); self.subtitle = Some(Child::new(Label::new( subtitle, diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 5d3cfb9dc0..564d3173da 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -105,10 +105,10 @@ impl<'a> Component for ShareWords<'a> { // the ordinal number of the current word let ordinal_val = self.page_index as u8 + 1; let ordinal_pos = self.area_word.top_left() - + Offset::y(theme::TEXT_SUB.text_font.visible_text_height("1")); + + Offset::y(theme::TEXT_SUB_GREY_LIGHT.text_font.visible_text_height("1")); let ordinal = build_string!(3, inttostr!(ordinal_val), "."); shape::Text::new(ordinal_pos, &ordinal) - .with_font(theme::TEXT_SUB.text_font) + .with_font(theme::TEXT_SUB_GREY_LIGHT.text_font) .with_fg(theme::GREY) .render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 84b89b2360..13edb43818 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -59,13 +59,13 @@ impl VerticalMenu { Self::new(buttons_vec) } - pub fn context_menu(options: [(&'static str, Icon); 3]) -> Self { - // TODO: this is just POC + pub fn context_menu(options: Vec<(&'static str, Icon), N_ITEMS>) -> Self { // FIXME: args should be TString when IconText has TString let mut buttons_vec = VerticalMenuButtons::new(); for opt in options { let button_theme; match opt.1 { + // FIXME: might not be applicable everywhere theme::ICON_CANCEL => { button_theme = theme::button_vertical_menu_orange(); } @@ -93,11 +93,12 @@ impl Component for VerticalMenu { self.area = bounds; self.areas_sep.clear(); let mut remaining = bounds; - for i in 0..N_ITEMS { + let n_seps = self.buttons.len() - 1; + for (i, button) in self.buttons.iter_mut().enumerate() { let (area_button, new_remaining) = remaining.split_top(MENU_BUTTON_HEIGHT); - self.buttons[i].place(area_button); + button.place(area_button); remaining = new_remaining; - if i < N_SEPS { + if i < n_seps { let (area_sep, new_remaining) = remaining.split_top(MENU_SEP_HEIGHT); unwrap!(self.areas_sep.push(area_sep)); remaining = new_remaining; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs new file mode 100644 index 0000000000..32475935af --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs @@ -0,0 +1,126 @@ +use crate::{ + error, + micropython::qstr::Qstr, + strutil::TString, + translations::TR, + ui::{ + component::text::paragraphs::{Paragraph, Paragraphs}, + flow::{ + base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeDirection, SwipeFlow, + SwipePage, + }, + }, +}; +use heapless::Vec; + +use super::super::{ + component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum ConfirmResetDevice { + Intro, + Menu, +} + +impl FlowState for ConfirmResetDevice { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (ConfirmResetDevice::Intro, SwipeDirection::Left) => { + Decision::Goto(ConfirmResetDevice::Menu, direction) + } + (ConfirmResetDevice::Menu, SwipeDirection::Right) => { + Decision::Goto(ConfirmResetDevice::Intro, direction) + } + (ConfirmResetDevice::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (ConfirmResetDevice::Intro, FlowMsg::Info) => { + Decision::Goto(ConfirmResetDevice::Menu, SwipeDirection::Left) + } + (ConfirmResetDevice::Menu, FlowMsg::Cancelled) => { + Decision::Goto(ConfirmResetDevice::Intro, SwipeDirection::Right) + } + (ConfirmResetDevice::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{buffer::StrBuffer, map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +pub extern "C" fn new_confirm_reset_device( + n_args: usize, + args: *const Obj, + kwargs: *mut Map, +) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetDevice::new) } +} + +impl ConfirmResetDevice { + fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let par_array: [Paragraph<'static>; 3] = [ + Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::reset__by_continuing) + .with_bottom_padding(17), + Paragraph::new(&theme::TEXT_SUB_GREY, TR::reset__more_info_at), + Paragraph::new(&theme::TEXT_SUB_GREY_LIGHT, TR::reset__tos_link), + ]; + let paragraphs = Paragraphs::new(par_array); + let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None); + + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::context_menu(unwrap!(Vec::from_slice(&[( + "Cancel", // FIXME: use TString + theme::ICON_CANCEL + )]))), + ) + .with_cancel_button(); + + let content_confirm = Frame::left_aligned( + TR::reset__title_create_wallet.into(), + PromptScreen::new_hold_to_confirm(), + ) + .with_footer(TR::instructions__hold_to_confirm.into(), None); + + let store = flow_store() + // Intro, + .add( + Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + .with_info_button() + .with_footer(TR::instructions__swipe_up.into(), None), + |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info), + )? + // Menu, + .add( + Frame::left_aligned( + "".into(), + VerticalMenu::context_menu(unwrap!(Vec::from_slice(&[( + "Cancel", // FIXME: use TString + theme::ICON_CANCEL + )]))), + ) + .with_cancel_button(), + |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { + Some(FlowMsg::Choice(i)) + } + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }, + )?; + + let res = SwipeFlow::new(ConfirmResetDevice::Intro, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index c56037f4fc..13065dd9e7 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -12,6 +12,7 @@ use crate::{ }, }, }; +use heapless::Vec; use super::super::{ component::{Frame, FrameMsg, IconDialog, VerticalMenu, VerticalMenuChoiceMsg}, @@ -120,11 +121,11 @@ impl GetAddress { .add( Frame::left_aligned( "".into(), - VerticalMenu::context_menu([ + VerticalMenu::context_menu(unwrap!(Vec::from_slice(&[ ("Address QR code", theme::ICON_QR_CODE), ("Account info", theme::ICON_CHEVRON_RIGHT), ("Cancel trans.", theme::ICON_CANCEL), - ]), + ]))), ) .with_cancel_button(), |msg| match msg { diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index be27c0c4c1..6cd147fa8f 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,3 +1,5 @@ pub mod get_address; +pub mod confirm_reset_device; pub use get_address::GetAddress; +pub use confirm_reset_device::ConfirmResetDevice; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index d61cc7ef69..0e1c65967f 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -663,28 +663,6 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_confirm_reset_device(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - - let par_array: [Paragraph<'static>; 3] = [ - Paragraph::new(&theme::TEXT_NORMAL, TR::reset__by_continuing).with_bottom_padding(17), /* simulating a carriage return */ - Paragraph::new(&theme::TEXT_NORMAL, TR::reset__more_info_at), - Paragraph::new(&theme::TEXT_DEMIBOLD, TR::reset__tos_link), - ]; - let paragraphs = Paragraphs::new(par_array); - let buttons = Button::cancel_confirm( - Button::with_icon(theme::ICON_CANCEL), - Button::with_text(button).styled(theme::button_confirm()), - true, - ); - let obj = LayoutObj::new(Frame::left_aligned(title, Dialog::new(paragraphs, buttons)))?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_show_address_details(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let qr_title: TString = kwargs.get(Qstr::MP_QSTR_qr_title)?.try_into()?; @@ -1292,12 +1270,11 @@ extern "C" fn new_show_tx_context_menu(n_args: usize, args: *const Obj, kwargs: let block = move |_args: &[Obj], _kwargs: &Map| { // TODO: this is just POC let title: TString = "".into(); - - let options: [(&'static str, Icon); 3] = [ + let options = unwrap!(Vec::from_slice(&[ ("Address QR code", theme::ICON_QR_CODE), ("Fee info", theme::ICON_CHEVRON_RIGHT), ("Cancel transaction", theme::ICON_CANCEL), - ]; + ])); let content = VerticalMenu::context_menu(options); let frame_with_menu = Frame::left_aligned(title, content).with_cancel_button(); let obj = LayoutObj::new(frame_with_menu)?; @@ -1801,7 +1778,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// button: str, /// ) -> LayoutObj[UiResult]: /// """Confirm TOS before device setup.""" - Qstr::MP_QSTR_confirm_reset_device => obj_fn_kw!(0, new_confirm_reset_device).as_obj(), + Qstr::MP_QSTR_confirm_reset_device => obj_fn_kw!(0, flow::confirm_reset_device::new_confirm_reset_device).as_obj(), /// def show_address_details( /// *, diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index f33f0b7540..41f884e700 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -707,8 +707,12 @@ pub const fn loader_lock_icon() -> LoaderStyleSheet { } pub const TEXT_SUPER: TextStyle = TextStyle::new(Font::BIG, GREY_EXTRA_LIGHT, BG, GREY, GREY); -pub const TEXT_MAIN: TextStyle = TextStyle::new(Font::NORMAL, GREY_EXTRA_LIGHT, BG, GREY, GREY); -pub const TEXT_SUB: TextStyle = TextStyle::new(Font::SUB, GREY, BG, GREY, GREY); +pub const TEXT_MAIN_GREY_EXTRA_LIGHT: TextStyle = + TextStyle::new(Font::NORMAL, GREY_EXTRA_LIGHT, BG, GREY, GREY); +pub const TEXT_MAIN_GREY_LIGHT: TextStyle = + TextStyle::new(Font::NORMAL, GREY_LIGHT, BG, GREY, GREY); +pub const TEXT_SUB_GREY_LIGHT: TextStyle = TextStyle::new(Font::SUB, GREY_LIGHT, BG, GREY, GREY); +pub const TEXT_SUB_GREY: TextStyle = TextStyle::new(Font::SUB, GREY, BG, GREY, GREY); pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, GREY_EXTRA_LIGHT, BG, GREY, GREY) .with_line_breaking(LineBreaking::BreakWordsNoHyphen) .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 81fd7e4b75..f2cfe8838a 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -355,7 +355,8 @@ class TR: inputs__return: str = "RETURN" inputs__show: str = "SHOW" inputs__space: str = "SPACE" - joint__title: str = "Joint transaction" + instructions__swipe_up: str = "Swipe up" + joint__title: str = "JOINT TRANSACTION" joint__to_the_total_amount: str = "To the total amount:" joint__you_are_contributing: str = "You are contributing:" language__change_to_template: str = "Change language to {0}?" diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 2550c6b9cc..f946047b48 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -322,17 +322,12 @@ async def confirm_single( async def confirm_reset_device(title: str, recovery: bool = False) -> None: - if recovery: - button = TR.reset__button_recover - else: - button = TR.reset__button_create - await raise_if_not_confirmed( interact( RustLayout( trezorui2.confirm_reset_device( - title=title.upper(), - button=button, + title=title, + button="", # not used ) ), "recover_device" if recovery else "setup_device", diff --git a/core/translations/cs.json b/core/translations/cs.json index 91e348db5f..ed18e1b322 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -383,6 +383,7 @@ "inputs__previous": "PŘEDCHOZÍ", "inputs__show": "ZOBRAZIT", "inputs__space": "ROZDĚLENÍ", + "instructions__swipe_up": "Swipe up", "joint__title": "Společná transakce", "joint__to_the_total_amount": "Do celkové částky:", "joint__you_are_contributing": "Přispíváte:", diff --git a/core/translations/de.json b/core/translations/de.json index 220da14ae7..691ad4fba3 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -383,6 +383,7 @@ "inputs__return": "ZURÜCK", "inputs__show": "ANZEIGEN", "inputs__space": "LEER", + "instructions__swipe_up": "Swipe up", "joint__title": "Gemeins. transakt.", "joint__to_the_total_amount": "Gesamtbetrag:", "joint__you_are_contributing": "Dein Anteil:", diff --git a/core/translations/en.json b/core/translations/en.json index d7d2a5b260..05645cc3f4 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -357,6 +357,7 @@ "inputs__previous": "PREVIOUS", "inputs__show": "SHOW", "inputs__space": "SPACE", + "instructions__swipe_up": "Swipe up", "joint__title": "Joint transaction", "joint__to_the_total_amount": "To the total amount:", "joint__you_are_contributing": "You are contributing:", diff --git a/core/translations/es.json b/core/translations/es.json index d799251414..8ab1f422ea 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -383,6 +383,7 @@ "inputs__return": "VOLVER", "inputs__show": "MOSTRAR", "inputs__space": "ESPACIO", + "instructions__swipe_up": "Swipe up", "joint__title": "Transacc. conjunta", "joint__to_the_total_amount": "Al importe total:", "joint__you_are_contributing": "Estás aportando:", diff --git a/core/translations/fr.json b/core/translations/fr.json index a8380bac47..e4acd9b3fc 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -383,6 +383,7 @@ "inputs__return": "RETOUR", "inputs__show": "AFFICHER", "inputs__space": "ESPACE", + "instructions__swipe_up": "Swipe up", "joint__title": "Trans. commune", "joint__to_the_total_amount": "Au montant total :", "joint__you_are_contributing": "Votre contribution :", diff --git a/core/translations/order.json b/core/translations/order.json index 3a50bace48..97c9086a63 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -851,5 +851,6 @@ "849": "cardano__delegating_to_key_hash", "850": "cardano__delegating_to_script", "851": "cardano__deposit", - "852": "cardano__vote_delegation" + "852": "cardano__vote_delegation", + "853": "instructions__swipe_up" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 6afc923916..6e303bad2e 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "1f974d2401250eb1b9ca75b0b8067d583c2a1520f87697f8f68f5bf2d66b44c2", - "datetime": "2024-05-16T21:16:11.144158", - "commit": "3d74e30fa7f27695813040baffb620461d5e0677" + "merkle_root": "4b19a878ad4d4daf9941ca0a7e024bcb5aa7e456c292821ef9ed5144c72e2531", + "datetime": "2024-05-17T10:01:56.790696", + "commit": "93fca0189d3622a316657465d1b96b642e8665a1" }, "history": [ { From b8fd987dd873c44d17eebda517ebbc8739272f6e Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sat, 20 Apr 2024 17:35:03 +0200 Subject: [PATCH 122/626] feat(core/ui): add two more T3T1 icons Icon named sign used in hold to confirm prompt screens. --- .../rust/src/ui/model_mercury/res/sign30.png | Bin 0 -> 522 bytes .../rust/src/ui/model_mercury/res/sign30.toif | Bin 0 -> 173 bytes .../rust/src/ui/model_mercury/res/warning24.png | Bin 0 -> 403 bytes .../rust/src/ui/model_mercury/res/warning24.toif | Bin 0 -> 130 bytes core/embed/rust/src/ui/model_mercury/theme/mod.rs | 2 ++ 5 files changed, 2 insertions(+) create mode 100644 core/embed/rust/src/ui/model_mercury/res/sign30.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/sign30.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/warning24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/warning24.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/sign30.png b/core/embed/rust/src/ui/model_mercury/res/sign30.png new file mode 100644 index 0000000000000000000000000000000000000000..bfdeb622afc354ad3d2aaaf14a341f61baa55248 GIT binary patch literal 522 zcmV+l0`>igP)<h;3K|Lk000e1NJLTq0015U0015c1ONa4kvV2500004XF*Lt006O% z3;baP00002VoOIv0RM-N%)bBt010qNS#tmY3ljhU3ljkVnw%H_00Ev!L_t(I%k5Ol zb=xoyoCRC}OMp6%DllC^s0xe@#E<SKuaQV96$Gh3as^^4kUI#{0UDq-2T3NZ2l&05 zlRe;ZIWySBa6#bT3yMRVO!mOJS)0EUw~D?ay(X5QDjQ;n$fh+?0ET}6P{_lihx>}G z$y8R<qZLCr0DV1bX(lAn_9l@l<Vg6n$^r*5^bEjoGi~5imM16xR@6arc6fw>rWCW# znbl<-(~x*nNIX{1Fb9wdiA8o5M+|dFcu9#IfL2j|eq9@2tHl>I<(tU)0EZ)NP)rL} z)o^)cO_|8L7g(eK|3+Ro9Dr^~o;Wfjy*k(Qd`-TII(I=65shw+6M#ke7GrpZwewBp zL+qyY7GKjg>^AM?zMFfHgM$;Ec#}RH=@b-00qlK_!qGy^iu==gjJw(96oV(XA5r-j zHLUw}8BZ)j7PWKQU+^+Cp7eCRfUDb^ZNAm-a18~AMl6Dr0iai-mZq?+Vl4(70oFVt zQ`s95Y5PNyJ6cWIxmnjCR^(42cGC>=Piexe&n8Uc1wc_A@IT(;4}&$3l*1LJdjJ3c M07*qoM6N<$f({eXF#rGn literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/sign30.toif b/core/embed/rust/src/ui/model_mercury/res/sign30.toif new file mode 100644 index 0000000000000000000000000000000000000000..96ab6097b7ea51858aaffcb5a5a73a94a0304e81 GIT binary patch literal 173 zcmV;e08;-{Pf14}03HCL0001EV4xHzlrtmo1ll?(7!llnj?fMkxSWW93WFn~BUHX6 z15C9>fcXU-;$UuJ2Rn#r=&%5Dn>sikTn~t1C|83?z>Fc8QK1Q}Sb&Map(7n=kpj$W zf!2-)WJd~gz#Rot4B<i)7f1k!4v<YylYs;yg6jd*)xv?rkpitiON<#9+B^^*>~MyA bkOAnb4utoC^6ecNNP)v(P|ieg@G}4aW?(}a literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/warning24.png b/core/embed/rust/src/ui/model_mercury/res/warning24.png new file mode 100644 index 0000000000000000000000000000000000000000..2283b0d71863f6aba5acf004160e0505a0d752f4 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{KvmqrAk4@xYYtF9qq?VyV~EA+y^{|H9ySng{jVjmK*)!cQ&vNi zL39S+qYlY+E!y)smM{k~zEjXUD7zq}A(%mk-TK@qqmP{5lFt9yfA?>c<d4@2EWWNf z;^V_uUhp)yQt-snlt!LOOLgvjJ*|JhYN73<M$I+z?Qd~#JlT5R@lx*fZbjJyyU4HA zu?%jB_3xa_PfIblXxBeG{DO(W#C%Ro`dM%82Z?Vijy5swlroWSi&@R5V5-IbAU!={ zj~#>IQ@N&$S<lOz@2_Jx5I*ITO6`n8vaV8IcNe}^Se0>4`D9(6*MjIdKe_S(_E;Qv zmHq5sZspp>ql~++Rehe3lb}CqTh&#*vQv9h=f&EYEb~u}nx&u1|3cAbhRv_XXSgyM vuHNYK4colAi(Bfch$=(qimGG(RqGf8U&S=%iTs-l3`Yh}S3j3^P6<r_e^j1S literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/warning24.toif b/core/embed/rust/src/ui/model_mercury/res/warning24.toif new file mode 100644 index 0000000000000000000000000000000000000000..e3f78be046bc2a6e0919e9c01ab3cf93e454b0e8 GIT binary patch literal 130 zcmV-|0Db>dPf14@02lyv0001EV89I&f?b)QOoxt+jtUkqQ=q*A#9;)n3p+YIT01(# zL2RHflLAlzs+xfTNC0&dz}OrN3{5b$1_MJ2jBUZd&<bNmK-eI2K<s7^1ybk%(F?K* kq_+X4h8@)|WH*4^2GT2z?q&vucBpEwA45!;@B{$^02(qbJOBUy literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 41f884e700..1f526d94ba 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -83,6 +83,7 @@ include_icon!( include_icon!(ICON_FIRE, "model_mercury/res/fire24.toif"); include_icon!(ICON_QR_CODE, "model_mercury/res/qr_code24.toif"); include_icon!(ICON_REBOOT, "model_mercury/res/reboot24.toif"); +include_icon!(ICON_WARNING, "model_mercury/res/warning24.toif"); // 30x30 include_icon!(ICON_AUTOFILL, "model_mercury/res/autofill30.toif"); @@ -93,6 +94,7 @@ include_icon!( ICON_SIMPLE_CHECKMARK, "model_mercury/res/simple_checkmark30.toif" ); +include_icon!(ICON_SIGN, "model_mercury/res/sign30.toif"); // 40x40 include_icon!(ICON_MINUS, "model_mercury/res/minus40.toif"); From fd96ae5548a702498767f14dc956d29b87c66634 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sat, 20 Apr 2024 17:36:18 +0200 Subject: [PATCH 123/626] feat(core/emu): move btn swipe to middle Swipe action initiated by arrow button press now starts in the middle of the screen which should always be in the swipe area. --- core/embed/trezorhal/unix/touch/touch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/trezorhal/unix/touch/touch.c b/core/embed/trezorhal/unix/touch/touch.c index be60d8690a..f0fc83072b 100644 --- a/core/embed/trezorhal/unix/touch/touch.c +++ b/core/embed/trezorhal/unix/touch/touch.c @@ -35,7 +35,7 @@ static int _touch_x = 0; static int _touch_y = 0; // distance from the edge where arrow button swipe starts [px] -static const int _btn_swipe_begin = 20; +static const int _btn_swipe_begin = 120; // length of the arrow button swipe [px] static const int _btn_swipe_length = 60; From 1882cc3a803b959642434f15b13e9d5008643f7c Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sat, 20 Apr 2024 21:27:37 +0200 Subject: [PATCH 124/626] feat(core/ui): T3T1 Frame additions This commit allows all combinations of Frame designs from Figma. This includes adding icon_color to ButtonStyle and a small cleanup of ButtonStyleSheets. --- core/embed/rust/src/ui/component/label.rs | 5 + .../src/ui/model_mercury/component/button.rs | 14 +- .../src/ui/model_mercury/component/frame.rs | 34 ++- .../ui/model_mercury/component/share_words.rs | 9 +- .../model_mercury/component/vertical_menu.rs | 6 +- .../src/ui/model_mercury/flow/get_address.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 12 +- .../src/ui/model_mercury/theme/bootloader.rs | 15 ++ .../rust/src/ui/model_mercury/theme/mod.rs | 203 +++++++----------- 9 files changed, 143 insertions(+), 157 deletions(-) diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 6efd6f7475..a3cf62fbc4 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -53,6 +53,11 @@ impl<'a> Label<'a> { self } + pub fn styled(mut self, style: TextStyle) -> Self { + self.layout.style = style; + self + } + pub fn text(&self) -> &TString<'a> { &self.text } diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 3b34a3d5e0..4f418cfc26 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -222,7 +222,7 @@ impl Button { icon.draw( self.area.center(), Alignment2D::CENTER, - style.text_color, + style.icon_color, style.button_color, ); } @@ -253,7 +253,7 @@ impl Button { ButtonContent::Icon(icon) => { shape::ToifImage::new(self.area.center(), icon.toif) .with_align(Alignment2D::CENTER) - .with_fg(style.text_color) + .with_fg(style.icon_color) .render(target); } ButtonContent::IconAndText(child) => { @@ -267,7 +267,7 @@ impl Button { .with_fg(style.button_color) .render(target); shape::ToifImage::new(self.area.top_left() + *offset, fg.toif) - .with_fg(style.text_color) + .with_fg(style.icon_color) .render(target); } } @@ -413,11 +413,13 @@ pub struct ButtonStyleSheet { pub disabled: &'static ButtonStyle, } +// TODO: radius and borders not needed in T3T1 - sync with BL #[derive(PartialEq, Eq)] pub struct ButtonStyle { pub font: Font, pub text_color: Color, pub button_color: Color, + pub icon_color: Color, pub background_color: Color, pub border_color: Color, pub border_radius: u8, @@ -492,7 +494,7 @@ impl Button { (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Confirmed) }); let top = Button::with_text(info) - .styled(theme::button_moreinfo()) + .styled(theme::button_default()) .map(|msg| (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Info)); let left = Button::with_icon(theme::ICON_CANCEL).map(|msg| { (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Cancelled) @@ -583,7 +585,7 @@ impl IconText { self.icon.draw( icon_pos, Alignment2D::CENTER, - style.text_color, + style.icon_color, style.button_color, ); } @@ -629,7 +631,7 @@ impl IconText { if use_icon { shape::ToifImage::new(icon_pos, self.icon.toif) .with_align(Alignment2D::CENTER) - .with_fg(style.text_color) + .with_fg(style.icon_color) .render(target); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 09269b577b..776e8c5a48 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -11,7 +11,7 @@ use crate::{ }, }; -use super::{constant::SPACING, Button, ButtonMsg, CancelInfoConfirmMsg, Footer}; +use super::{constant::SPACING, Button, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer}; const TITLE_HEIGHT: i16 = 42; @@ -36,9 +36,10 @@ where T: Component, { pub fn new(alignment: Alignment, title: TString<'static>, content: T) -> Self { - let style: TextStyle = theme::label_title_main(); Self { - title: Child::new(Label::new(title, alignment, style).vertically_centered()), + title: Child::new( + Label::new(title, alignment, theme::label_title_main()).vertically_centered(), + ), subtitle: None, border: theme::borders(), button: None, @@ -65,6 +66,11 @@ where self } + pub fn title_styled(mut self, style: TextStyle) -> Self { + self.title = Child::new(self.title.into_inner().styled(style)); + self + } + pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { let style = theme::TEXT_SUB_GREY_LIGHT; self.title = Child::new(self.title.into_inner().top_aligned()); @@ -76,7 +82,7 @@ where self } - fn with_button(mut self, icon: Icon, msg: CancelInfoConfirmMsg) -> Self { + fn with_button(mut self, icon: Icon, msg: CancelInfoConfirmMsg, enabled: bool) -> Self { let touch_area = Insets { left: self.border.left * 4, bottom: self.border.bottom * 4, @@ -85,18 +91,30 @@ where self.button = Some(Child::new( Button::with_icon(icon) .with_expanded_touch_area(touch_area) - .styled(theme::button_moreinfo()), + .initially_enabled(enabled) + .styled(theme::button_default()), )); self.button_msg = msg; self } pub fn with_cancel_button(self) -> Self { - self.with_button(theme::ICON_CORNER_CANCEL, CancelInfoConfirmMsg::Cancelled) + self.with_button(theme::ICON_CLOSE, CancelInfoConfirmMsg::Cancelled, true) + } + + pub fn with_menu_button(self) -> Self { + self.with_button(theme::ICON_MENU, CancelInfoConfirmMsg::Info, true) } - pub fn with_info_button(self) -> Self { - self.with_button(theme::ICON_MENU, CancelInfoConfirmMsg::Info) + pub fn with_warning_button(self) -> Self { + self.with_button(theme::ICON_WARNING, CancelInfoConfirmMsg::Info, false) + } + + pub fn button_styled(mut self, style: ButtonStyleSheet) -> Self { + if self.button.is_some() { + self.button = Some(Child::new(self.button.unwrap().into_inner().styled(style))); + } + self } pub fn with_footer( diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 564d3173da..aa888fce60 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -1,6 +1,7 @@ use super::theme; use crate::{ strutil::TString, + translations::TR, ui::{ component::{Component, Event, EventCtx, PageMsg, Paginate}, constant::SPACING, @@ -39,7 +40,7 @@ impl<'a> ShareWords<'a> { page_index: 0, area_word: Rect::zero(), swipe: Swipe::new().up().down(), - footer: Footer::new("Swipe up"), + footer: Footer::new(TR::instructions__swipe_up), } } @@ -105,7 +106,11 @@ impl<'a> Component for ShareWords<'a> { // the ordinal number of the current word let ordinal_val = self.page_index as u8 + 1; let ordinal_pos = self.area_word.top_left() - + Offset::y(theme::TEXT_SUB_GREY_LIGHT.text_font.visible_text_height("1")); + + Offset::y( + theme::TEXT_SUB_GREY_LIGHT + .text_font + .visible_text_height("1"), + ); let ordinal = build_string!(3, inttostr!(ordinal_val), "."); shape::Text::new(ordinal_pos, &ordinal) .with_font(theme::TEXT_SUB_GREY_LIGHT.text_font) diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 13edb43818..127d758891 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -53,7 +53,7 @@ impl VerticalMenu { pub fn select_word(words: [StrBuffer; 3]) -> Self { let mut buttons_vec = VerticalMenuButtons::new(); for word in words { - let button = Button::with_text(word.into()).styled(theme::button_vertical_menu()); + let button = Button::with_text(word.into()).styled(theme::button_default()); unwrap!(buttons_vec.push(button)); } Self::new(buttons_vec) @@ -67,10 +67,10 @@ impl VerticalMenu { match opt.1 { // FIXME: might not be applicable everywhere theme::ICON_CANCEL => { - button_theme = theme::button_vertical_menu_orange(); + button_theme = theme::button_warning_high(); } _ => { - button_theme = theme::button_vertical_menu(); + button_theme = theme::button_default(); } } unwrap!(buttons_vec.push( diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 13065dd9e7..716a0c231a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -115,7 +115,7 @@ impl GetAddress { ))), ) .with_subtitle("address".into()) - .with_info_button(), + .with_menu_button(), |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info), )? .add( diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 0e1c65967f..7b0eb7bf61 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -537,7 +537,7 @@ impl ConfirmBlobParams { frame = frame.with_subtitle(subtitle); } if self.info_button { - frame = frame.with_info_button(); + frame = frame.with_menu_button(); } let obj = LayoutObj::new(frame)?; Ok(obj.into()) @@ -604,7 +604,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut .with_swipe_left() .with_cancel_confirm(None, Some(verb)), ) - .with_info_button(), + .with_menu_button(), )?; Ok(obj.into()) }; @@ -791,7 +791,7 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma } let mut frame = Frame::left_aligned(title, page); if info_button { - frame = frame.with_info_button(); + frame = frame.with_menu_button(); } let obj = LayoutObj::new(frame)?; Ok(obj.into()) @@ -867,7 +867,7 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m .with_hold()? .with_swipe_left(), ) - .with_info_button(), + .with_menu_button(), )?; Ok(obj.into()) }; @@ -1290,7 +1290,7 @@ extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; let share_words = ShareWords::new(share_words_vec); - let frame_with_share_words = Frame::left_aligned(title, share_words).with_info_button(); + let frame_with_share_words = Frame::left_aligned(title, share_words); let obj = LayoutObj::new(frame_with_share_words)?; Ok(obj.into()) }; @@ -1593,7 +1593,7 @@ extern "C" fn new_confirm_firmware_update( Confirm::new(theme::BG, left, right, ConfirmTitle::Text(title), msg).with_info( TR::firmware_update__title_fingerprint.into(), fingerprint, - theme::button_moreinfo(), + theme::button_default(), ), )?; Ok(obj.into()) diff --git a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs b/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs index 854c18397a..57a9271aa5 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs @@ -75,6 +75,7 @@ pub fn button_confirm() -> ButtonStyleSheet { font: Font::BOLD, text_color: BLD_BG, button_color: WHITE, + icon_color: BLD_BG, background_color: BLD_BG, border_color: BLD_BG, border_radius: RADIUS, @@ -84,6 +85,7 @@ pub fn button_confirm() -> ButtonStyleSheet { font: Font::BOLD, text_color: BLD_BG, button_color: BLD_INSTALL_BTN_COLOR_ACTIVE, + icon_color: BLD_BG, background_color: BLD_BG, border_color: BLD_BG, border_radius: RADIUS, @@ -93,6 +95,7 @@ pub fn button_confirm() -> ButtonStyleSheet { font: Font::BOLD, text_color: FG, button_color: GREY_DARK, + icon_color: BLD_BG, background_color: FG, border_color: FG, border_radius: RADIUS, @@ -107,6 +110,7 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { font: Font::BOLD, text_color: WHITE, button_color: BLD_WIPE_CANCEL_BTN_COLOR, + icon_color: WHITE, background_color: BLD_WIPE_COLOR, border_color: BLD_WIPE_COLOR, border_radius: RADIUS, @@ -116,6 +120,7 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { font: Font::BOLD, text_color: WHITE, button_color: BLD_WIPE_CANCEL_BTN_COLOR_ACTIVE, + icon_color: WHITE, background_color: BLD_WIPE_COLOR, border_color: BLD_WIPE_COLOR, border_radius: RADIUS, @@ -125,6 +130,7 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { font: Font::BOLD, text_color: GREY_LIGHT, button_color: GREY_DARK, + icon_color: GREY_LIGHT, background_color: WHITE, border_color: WHITE, border_radius: RADIUS, @@ -139,6 +145,7 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { font: Font::BOLD, text_color: BLD_WIPE_COLOR, button_color: BLD_WIPE_BTN_COLOR, + icon_color: BLD_WIPE_COLOR, background_color: BLD_WIPE_COLOR, border_color: BLD_WIPE_COLOR, border_radius: RADIUS, @@ -148,6 +155,7 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { font: Font::BOLD, text_color: BLD_WIPE_COLOR, button_color: BLD_WIPE_BTN_COLOR_ACTIVE, + icon_color: BLD_WIPE_COLOR, background_color: BLD_WIPE_COLOR, border_color: BLD_WIPE_COLOR, border_radius: RADIUS, @@ -157,6 +165,7 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { font: Font::BOLD, text_color: FG, button_color: GREY_DARK, + icon_color: FG, background_color: FG, border_color: FG, border_radius: RADIUS, @@ -171,6 +180,7 @@ pub fn button_bld_menu() -> ButtonStyleSheet { font: Font::BOLD, text_color: BLD_FG, button_color: BLD_BG, + icon_color: BLD_FG, background_color: BLD_BG, border_color: BLD_BTN_COLOR, border_radius: 2, @@ -180,6 +190,7 @@ pub fn button_bld_menu() -> ButtonStyleSheet { font: Font::BOLD, text_color: BLD_FG, button_color: BLD_BG, + icon_color: BLD_FG, background_color: BLD_BG, border_color: BLD_BTN_COLOR_ACTIVE, border_radius: 2, @@ -189,6 +200,7 @@ pub fn button_bld_menu() -> ButtonStyleSheet { font: Font::BOLD, text_color: GREY_LIGHT, button_color: BLD_BG, + icon_color: GREY_LIGHT, background_color: BLD_BG, border_color: BLD_BG, border_radius: 2, @@ -203,6 +215,7 @@ pub fn button_bld() -> ButtonStyleSheet { font: Font::BOLD, text_color: BLD_FG, button_color: BLD_BTN_COLOR, + icon_color: BLD_FG, background_color: BLD_BG, border_color: BLD_BG, border_radius: 4, @@ -212,6 +225,7 @@ pub fn button_bld() -> ButtonStyleSheet { font: Font::BOLD, text_color: BLD_FG, button_color: BLD_BTN_COLOR_ACTIVE, + icon_color: BLD_FG, background_color: BLD_BG, border_color: BLD_BG, border_radius: 4, @@ -221,6 +235,7 @@ pub fn button_bld() -> ButtonStyleSheet { font: Font::BOLD, text_color: GREY_LIGHT, button_color: BLD_BTN_COLOR, + icon_color: GREY_LIGHT, background_color: BLD_BG, border_color: BLD_BG, border_radius: 4, diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 1f526d94ba..a1325449cb 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -225,27 +225,30 @@ pub const fn label_coinjoin_progress() -> TextStyle { pub const fn button_default() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: GREY_DARK, + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, + button_color: BG, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: GREY_MEDIUM, + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, + button_color: BG, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, + font: Font::DEMIBOLD, text_color: GREY_LIGHT, - button_color: GREY_DARK, + button_color: BG, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -254,30 +257,33 @@ pub const fn button_default() -> ButtonStyleSheet { } } -pub const fn button_confirm() -> ButtonStyleSheet { +pub const fn button_warning_high() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: GREEN, + font: Font::DEMIBOLD, + text_color: ORANGE_LIGHT, + button_color: BG, + icon_color: ORANGE_DIMMED, background_color: BG, border_color: BG, border_radius: RADIUS, border_width: 0, }, active: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: GREEN_DARK, + font: Font::DEMIBOLD, + text_color: ORANGE_LIGHT, + button_color: BG, + icon_color: ORANGE_DIMMED, background_color: BG, - border_color: FG, + border_color: BG, border_radius: RADIUS, border_width: 0, }, disabled: &ButtonStyle { - font: Font::BOLD, - text_color: GREY_LIGHT, - button_color: GREEN_DARK, + font: Font::DEMIBOLD, + text_color: ORANGE_LIGHT, + button_color: BG, + icon_color: ORANGE_DIMMED, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -286,12 +292,14 @@ pub const fn button_confirm() -> ButtonStyleSheet { } } -pub const fn button_cancel() -> ButtonStyleSheet { +// TODO: delete +pub const fn button_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: RED, + button_color: GREEN, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -300,7 +308,8 @@ pub const fn button_cancel() -> ButtonStyleSheet { active: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: RED_DARK, + button_color: GREEN_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -309,7 +318,8 @@ pub const fn button_cancel() -> ButtonStyleSheet { disabled: &ButtonStyle { font: Font::BOLD, text_color: GREY_LIGHT, - button_color: RED, + button_color: GREEN_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -318,16 +328,14 @@ pub const fn button_cancel() -> ButtonStyleSheet { } } -pub const fn button_danger() -> ButtonStyleSheet { - button_cancel() -} - -pub const fn button_reset() -> ButtonStyleSheet { +// TODO: delete +pub const fn button_cancel() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: YELLOW, + button_color: RED, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -336,7 +344,8 @@ pub const fn button_reset() -> ButtonStyleSheet { active: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: YELLOW_DARK, + button_color: RED_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -344,8 +353,9 @@ pub const fn button_reset() -> ButtonStyleSheet { }, disabled: &ButtonStyle { font: Font::BOLD, - text_color: FG, - button_color: YELLOW, + text_color: GREY_LIGHT, + button_color: RED, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -354,44 +364,18 @@ pub const fn button_reset() -> ButtonStyleSheet { } } -pub const fn button_moreinfo() -> ButtonStyleSheet { - ButtonStyleSheet { - normal: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: BG, - background_color: BG, - border_color: BG, - border_radius: 0, - border_width: 1, - }, - active: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: BG, - background_color: BG, - border_color: GREY_DARK, - border_radius: 0, - border_width: 1, - }, - disabled: &ButtonStyle { - font: Font::BOLD, - text_color: GREY_LIGHT, - button_color: BG, - background_color: BG, - border_color: BG, - border_radius: 0, - border_width: 1, - }, - } +// TODO: delete +pub const fn button_danger() -> ButtonStyleSheet { + button_cancel() } -pub const fn button_info() -> ButtonStyleSheet { +pub const fn button_reset() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: BLUE, + button_color: YELLOW, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -400,7 +384,8 @@ pub const fn button_info() -> ButtonStyleSheet { active: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: BLUE_DARK, + button_color: YELLOW_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -408,86 +393,24 @@ pub const fn button_info() -> ButtonStyleSheet { }, disabled: &ButtonStyle { font: Font::BOLD, - text_color: GREY_LIGHT, - button_color: BLUE, - background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, - }, - } -} - -pub const fn button_vertical_menu() -> ButtonStyleSheet { - ButtonStyleSheet { - normal: &ButtonStyle { - font: Font::NORMAL, - text_color: GREY_EXTRA_LIGHT, - button_color: BG, - background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, - }, - // TODO: change when figma done - active: &ButtonStyle { - font: Font::NORMAL, text_color: FG, - button_color: GREEN_LIME, - background_color: GREY_EXTRA_DARK, - border_color: GREEN_LIME, - border_radius: RADIUS, - border_width: 0, - }, - disabled: &ButtonStyle { - font: Font::NORMAL, - text_color: GREY_LIGHT, - button_color: GREEN_LIME, - background_color: GREY_EXTRA_DARK, - border_color: GREEN_LIME, - border_radius: RADIUS, - border_width: 0, - }, - } -} - -pub const fn button_vertical_menu_orange() -> ButtonStyleSheet { - ButtonStyleSheet { - normal: &ButtonStyle { - font: Font::NORMAL, - text_color: ORANGE_LIGHT, - button_color: BG, + button_color: YELLOW, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, border_width: 0, }, - active: &ButtonStyle { - font: Font::NORMAL, - text_color: FG, - button_color: GREEN_LIME, - background_color: GREY_EXTRA_DARK, - border_color: GREEN_LIME, - border_radius: RADIUS, - border_width: 0, - }, - disabled: &ButtonStyle { - font: Font::NORMAL, - text_color: GREY_LIGHT, - button_color: GREEN_LIME, - background_color: GREY_EXTRA_DARK, - border_color: GREEN_LIME, - border_radius: RADIUS, - border_width: 0, - }, } } + pub const fn button_pin() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, text_color: FG, button_color: GREY_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -497,6 +420,7 @@ pub const fn button_pin() -> ButtonStyleSheet { font: Font::MONO, text_color: FG, button_color: GREY_MEDIUM, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -506,6 +430,7 @@ pub const fn button_pin() -> ButtonStyleSheet { font: Font::MONO, text_color: GREY_LIGHT, button_color: BG, // so there is no "button" itself, just the text + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -520,6 +445,7 @@ pub const fn button_pin_confirm() -> ButtonStyleSheet { font: Font::MONO, text_color: FG, button_color: GREEN, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -529,6 +455,7 @@ pub const fn button_pin_confirm() -> ButtonStyleSheet { font: Font::MONO, text_color: FG, button_color: GREEN_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -538,6 +465,7 @@ pub const fn button_pin_confirm() -> ButtonStyleSheet { font: Font::MONO, text_color: GREY_LIGHT, button_color: GREY_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -552,6 +480,7 @@ pub const fn button_pin_autocomplete() -> ButtonStyleSheet { font: Font::MONO, text_color: FG, button_color: GREY_DARK, // same as PIN buttons + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -561,6 +490,7 @@ pub const fn button_pin_autocomplete() -> ButtonStyleSheet { font: Font::MONO, text_color: FG, button_color: GREEN_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -570,6 +500,7 @@ pub const fn button_pin_autocomplete() -> ButtonStyleSheet { font: Font::MONO, text_color: GREY_LIGHT, button_color: BG, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -584,6 +515,7 @@ pub const fn button_suggestion_confirm() -> ButtonStyleSheet { font: Font::MONO, text_color: GREEN_DARK, button_color: GREEN, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -593,6 +525,7 @@ pub const fn button_suggestion_confirm() -> ButtonStyleSheet { font: Font::MONO, text_color: FG, button_color: GREEN_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -602,6 +535,7 @@ pub const fn button_suggestion_confirm() -> ButtonStyleSheet { font: Font::MONO, text_color: GREY_LIGHT, button_color: GREY_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -616,6 +550,7 @@ pub const fn button_suggestion_autocomplete() -> ButtonStyleSheet { font: Font::MONO, text_color: GREY_LIGHT, button_color: GREY_DARK, // same as PIN buttons + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -625,6 +560,7 @@ pub const fn button_suggestion_autocomplete() -> ButtonStyleSheet { font: Font::MONO, text_color: FG, button_color: GREEN_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -634,6 +570,7 @@ pub const fn button_suggestion_autocomplete() -> ButtonStyleSheet { font: Font::MONO, text_color: GREY_LIGHT, button_color: BG, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -648,6 +585,7 @@ pub const fn button_counter() -> ButtonStyleSheet { font: Font::DEMIBOLD, text_color: FG, button_color: GREY_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -657,6 +595,7 @@ pub const fn button_counter() -> ButtonStyleSheet { font: Font::DEMIBOLD, text_color: FG, button_color: GREY_MEDIUM, + icon_color: GREY_LIGHT, background_color: BG, border_color: FG, border_radius: RADIUS, @@ -666,6 +605,7 @@ pub const fn button_counter() -> ButtonStyleSheet { font: Font::DEMIBOLD, text_color: GREY_LIGHT, button_color: GREY_DARK, + icon_color: GREY_LIGHT, background_color: BG, border_color: BG, border_radius: RADIUS, @@ -715,6 +655,7 @@ pub const TEXT_MAIN_GREY_LIGHT: TextStyle = TextStyle::new(Font::NORMAL, GREY_LIGHT, BG, GREY, GREY); pub const TEXT_SUB_GREY_LIGHT: TextStyle = TextStyle::new(Font::SUB, GREY_LIGHT, BG, GREY, GREY); pub const TEXT_SUB_GREY: TextStyle = TextStyle::new(Font::SUB, GREY, BG, GREY, GREY); +pub const TEXT_WARNING: TextStyle = TextStyle::new(Font::NORMAL, ORANGE_LIGHT, BG, GREY, GREY); pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, GREY_EXTRA_LIGHT, BG, GREY, GREY) .with_line_breaking(LineBreaking::BreakWordsNoHyphen) .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) From 6b76ec0413542b02e30e16a075fbd61a40f83257 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 21 Apr 2024 01:49:45 +0200 Subject: [PATCH 125/626] feat(core/ui): add T3T1 Status/PromptScreen StatusScreen serves to show a result of operation, typically a checkmark with a circle around dismissed by swipe up gesture. PromptScreen serves to confirm action, typically by holding a button. Designs based on Figma. So far without animation. --- core/embed/rust/librust_qstr.h | 3 +- .../generated/translated_string.rs | 9 ++ .../src/ui/model_mercury/component/mod.rs | 4 + .../model_mercury/component/prompt_screen.rs | 141 +++++++++++++++++ .../model_mercury/component/status_screen.rs | 119 ++++++++++++++ .../flow/confirm_reset_device.rs | 51 +++--- .../ui/model_mercury/flow/create_backup.rs | 147 ++++++++++++++++++ .../embed/rust/src/ui/model_mercury/layout.rs | 50 +++++- core/mocks/trezortranslate_keys.pyi | 4 +- core/translations/en.json | 2 + core/translations/order.json | 4 +- core/translations/signatures.json | 6 +- 12 files changed, 505 insertions(+), 35 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/status_screen.rs create mode 100644 core/embed/rust/src/ui/model_mercury/flow/create_backup.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 612c5a869e..e4b40810d1 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -204,6 +204,7 @@ static void _librust_qstrs(void) { MP_QSTR_fingerprint; MP_QSTR_firmware_update__title; MP_QSTR_firmware_update__title_fingerprint; + MP_QSTR_flow_get_address; MP_QSTR_get_language; MP_QSTR_hold; MP_QSTR_hold_danger; @@ -231,7 +232,6 @@ static void _librust_qstrs(void) { MP_QSTR_inputs__return; MP_QSTR_inputs__show; MP_QSTR_inputs__space; - MP_QSTR_instructions__swipe_up; MP_QSTR_is_type_of; MP_QSTR_items; MP_QSTR_joint__title; @@ -531,6 +531,7 @@ static void _librust_qstrs(void) { MP_QSTR_show_share_words; MP_QSTR_show_simple; MP_QSTR_show_success; + MP_QSTR_show_tx_context_menu; MP_QSTR_show_wait_text; MP_QSTR_show_warning; MP_QSTR_sign; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 70f9baab90..7e774c70f4 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1251,6 +1251,9 @@ pub enum TranslatedString { cardano__deposit = 851, // "Deposit:" #[cfg(feature = "universal_fw")] cardano__vote_delegation = 852, // "Vote delegation" + instructions__swipe_up = 853, // "Swipe up" + instructions__tap_to_confirm = 854, // "Tap to confirm" + instructions__hold_to_confirm = 855, // "Hold to confirm" } impl TranslatedString { @@ -2497,6 +2500,9 @@ impl TranslatedString { Self::cardano__deposit => "Deposit:", #[cfg(feature = "universal_fw")] Self::cardano__vote_delegation => "Vote delegation", + Self::instructions__swipe_up => "Swipe up", + Self::instructions__tap_to_confirm => "Tap to confirm", + Self::instructions__hold_to_confirm => "Hold to confirm", } } @@ -3744,6 +3750,9 @@ impl TranslatedString { Qstr::MP_QSTR_cardano__deposit => Some(Self::cardano__deposit), #[cfg(feature = "universal_fw")] Qstr::MP_QSTR_cardano__vote_delegation => Some(Self::cardano__vote_delegation), + Qstr::MP_QSTR_instructions__swipe_up => Some(Self::instructions__swipe_up), + Qstr::MP_QSTR_instructions__tap_to_confirm => Some(Self::instructions__tap_to_confirm), + Qstr::MP_QSTR_instructions__hold_to_confirm => Some(Self::instructions__hold_to_confirm), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 68bd86ce98..fd9053a01a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -21,10 +21,12 @@ mod number_input; #[cfg(feature = "translations")] mod page; mod progress; +mod prompt_screen; mod result; mod scroll; mod share_words; mod simple_page; +mod status_screen; mod swipe; mod welcome_screen; @@ -57,10 +59,12 @@ pub use number_input::{NumberInputDialog, NumberInputDialogMsg}; #[cfg(feature = "translations")] pub use page::ButtonPage; pub use progress::Progress; +pub use prompt_screen::PromptScreen; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; pub use share_words::ShareWords; pub use simple_page::SimplePage; +pub use status_screen::StatusScreen; pub use swipe::{Swipe, SwipeDirection}; pub use vertical_menu::{VerticalMenu, VerticalMenuChoiceMsg}; pub use welcome_screen::WelcomeScreen; diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs new file mode 100644 index 0000000000..73f0370a5f --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -0,0 +1,141 @@ +use crate::{ + time::Duration, + ui::{ + component::{Component, Event, EventCtx}, + display::Color, + geometry::{Alignment2D, Offset, Rect}, + shape, + shape::Renderer, + }, +}; + +use super::{theme, Button, ButtonContent, ButtonMsg}; + +/// Component requesting an action from a user. Most typically embedded as a +/// content of a Frame and promptin "Tap to confirm" or "Hold to XYZ". +#[derive(Clone)] +pub struct PromptScreen { + area: Rect, + button: Button, + circle_color: Color, + circle_pad_color: Color, + circle_inner_color: Color, + dismiss_type: DismissType, +} + +#[derive(Clone)] +enum DismissType { + Tap, + Hold, +} + +impl PromptScreen { + pub fn new_hold_to_confirm() -> Self { + let icon = theme::ICON_SIGN; + let button = Button::new(ButtonContent::Icon(icon)) + .styled(theme::button_default()) + .with_long_press(Duration::from_secs(2)); + Self { + area: Rect::zero(), + circle_color: theme::GREEN, + circle_pad_color: theme::GREY_EXTRA_DARK, + circle_inner_color: theme::GREEN_LIGHT, + dismiss_type: DismissType::Hold, + button, + } + } + + pub fn new_tap_to_confirm() -> Self { + let icon = theme::ICON_SIMPLE_CHECKMARK; + let button = Button::new(ButtonContent::Icon(icon)).styled(theme::button_default()); + Self { + area: Rect::zero(), + circle_color: theme::GREEN, + circle_inner_color: theme::GREEN, + circle_pad_color: theme::GREY_EXTRA_DARK, + dismiss_type: DismissType::Tap, + button, + } + } + + pub fn new_tap_to_cancel() -> Self { + let icon = theme::ICON_SIMPLE_CHECKMARK; + let button = Button::new(ButtonContent::Icon(icon)).styled(theme::button_default()); + Self { + area: Rect::zero(), + circle_color: theme::ORANGE_LIGHT, + circle_inner_color: theme::ORANGE_LIGHT, + circle_pad_color: theme::GREY_EXTRA_DARK, + dismiss_type: DismissType::Tap, + button, + } + } +} + +impl Component for PromptScreen { + type Msg = (); + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.button.place(Rect::snap( + self.area.center(), + Offset::uniform(55), + Alignment2D::CENTER, + )); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let btn_msg = self.button.event(ctx, event); + match (&self.dismiss_type, btn_msg) { + (DismissType::Tap, Some(ButtonMsg::Clicked)) => { + return Some(()); + } + (DismissType::Hold, Some(ButtonMsg::LongPressed)) => { + return Some(()); + } + _ => (), + } + None + } + + fn paint(&mut self) { + todo!() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::Circle::new(self.area.center(), 70) + .with_fg(self.circle_pad_color) + .with_bg(theme::BLACK) + .with_thickness(20) + .render(target); + shape::Circle::new(self.area.center(), 50) + .with_fg(self.circle_color) + .with_bg(theme::BLACK) + .with_thickness(2) + .render(target); + shape::Circle::new(self.area.center(), 48) + .with_fg(self.circle_pad_color) + .with_bg(theme::BLACK) + .with_thickness(8) + .render(target); + matches!(self.dismiss_type, DismissType::Hold).then(|| { + shape::Circle::new(self.area.center(), 40) + .with_fg(self.circle_inner_color) + .with_bg(theme::BLACK) + .with_thickness(2) + .render(target); + }); + self.button.render(target); + } +} + +impl crate::ui::flow::Swipable for PromptScreen {} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for PromptScreen { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("StatusScreen"); + t.child("button", &self.button); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs new file mode 100644 index 0000000000..a4d0554acf --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -0,0 +1,119 @@ +use crate::ui::{ + component::{Component, Event, EventCtx, Timeout}, + display::{Color, Icon}, + geometry::{Alignment2D, Rect}, + shape, + shape::Renderer, +}; + +use super::{theme, Swipe, SwipeDirection}; + +/// Component showing status of an operation. Most typically embedded as a +/// content of a Frame and showing success (checkmark with a circle around). +pub struct StatusScreen { + area: Rect, + icon: Icon, + icon_color: Color, + circle_color: Color, + dismiss_type: DismissType, +} + +enum DismissType { + SwipeUp(Swipe), + Timeout(Timeout), +} + +const TIMEOUT_MS: u32 = 2000; + +impl StatusScreen { + fn new(icon: Icon, icon_color: Color, circle_color: Color, dismiss_style: DismissType) -> Self { + Self { + area: Rect::zero(), + icon, + icon_color, + circle_color, + dismiss_type: dismiss_style, + } + } + + pub fn new_success() -> Self { + Self::new( + theme::ICON_SIMPLE_CHECKMARK, + theme::GREEN_LIME, + theme::GREEN_LIGHT, + DismissType::SwipeUp(Swipe::new().up()), + ) + } + + pub fn new_success_timeout() -> Self { + Self::new( + theme::ICON_SIMPLE_CHECKMARK, + theme::GREEN_LIME, + theme::GREEN_LIGHT, + DismissType::Timeout(Timeout::new(TIMEOUT_MS)), + ) + } + + pub fn new_neutral() -> Self { + Self::new( + theme::ICON_SIMPLE_CHECKMARK, + theme::GREY_EXTRA_LIGHT, + theme::GREY_DARK, + DismissType::SwipeUp(Swipe::new().up()), + ) + } +} + +impl Component for StatusScreen { + type Msg = (); + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + if let DismissType::SwipeUp(swipe) = &mut self.dismiss_type { + swipe.place(bounds); + } + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + match self.dismiss_type { + DismissType::SwipeUp(ref mut swipe) => { + let swipe_dir = swipe.event(ctx, event); + match swipe_dir { + Some(SwipeDirection::Up) => return Some(()), + _ => (), + } + } + DismissType::Timeout(ref mut timeout) => { + if let Some(_) = timeout.event(ctx, event) { + return Some(()); + } + } + } + + None + } + + fn paint(&mut self) { + todo!() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + shape::Circle::new(self.area.center(), 40) + .with_fg(self.circle_color) + .with_bg(theme::BLACK) + .with_thickness(2) + .render(target); + shape::ToifImage::new(self.area.center(), self.icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(self.icon_color) + .render(target); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for StatusScreen { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("StatusScreen"); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs index 32475935af..227eb8dc35 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs @@ -14,7 +14,7 @@ use crate::{ use heapless::Vec; use super::super::{ - component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, + component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, theme, }; @@ -22,6 +22,7 @@ use super::super::{ pub enum ConfirmResetDevice { Intro, Menu, + Confirm, } impl FlowState for ConfirmResetDevice { @@ -33,7 +34,12 @@ impl FlowState for ConfirmResetDevice { (ConfirmResetDevice::Menu, SwipeDirection::Right) => { Decision::Goto(ConfirmResetDevice::Intro, direction) } - (ConfirmResetDevice::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + (ConfirmResetDevice::Intro, SwipeDirection::Up) => { + Decision::Goto(ConfirmResetDevice::Confirm, direction) + } + (ConfirmResetDevice::Confirm, SwipeDirection::Down) => { + Decision::Goto(ConfirmResetDevice::Intro, direction) + } _ => Decision::Nothing, } } @@ -47,13 +53,16 @@ impl FlowState for ConfirmResetDevice { Decision::Goto(ConfirmResetDevice::Intro, SwipeDirection::Right) } (ConfirmResetDevice::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + (ConfirmResetDevice::Confirm, FlowMsg::Confirmed) => { + Decision::Return(FlowMsg::Confirmed) + } _ => Decision::Nothing, } } } use crate::{ - micropython::{buffer::StrBuffer, map::Map, obj::Obj, util}, + micropython::{map::Map, obj::Obj, util}, ui::layout::obj::LayoutObj, }; @@ -96,29 +105,19 @@ impl ConfirmResetDevice { let store = flow_store() // Intro, - .add( - Frame::left_aligned(title, SwipePage::vertical(paragraphs)) - .with_info_button() - .with_footer(TR::instructions__swipe_up.into(), None), - |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info), - )? - // Menu, - .add( - Frame::left_aligned( - "".into(), - VerticalMenu::context_menu(unwrap!(Vec::from_slice(&[( - "Cancel", // FIXME: use TString - theme::ICON_CANCEL - )]))), - ) - .with_cancel_button(), - |msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { - Some(FlowMsg::Choice(i)) - } - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }, - )?; + .add(content_intro, |msg| { + matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info) + })? + // Context Menu, + .add(content_menu, |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + })? + // Confirm prompt + .add(content_confirm, |msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + _ => Some(FlowMsg::Cancelled), + })?; let res = SwipeFlow::new(ConfirmResetDevice::Intro, store)?; Ok(LayoutObj::new(res)?.into()) diff --git a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs new file mode 100644 index 0000000000..95504a2ae7 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs @@ -0,0 +1,147 @@ +use crate::{ + error, + strutil::TString, + translations::TR, + ui::{ + component::text::paragraphs::{Paragraph, Paragraphs}, + flow::{ + base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeDirection, SwipeFlow, + SwipePage, + }, + }, +}; +use heapless::Vec; + +use super::super::{ + component::{ + CancelInfoConfirmMsg, Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + }, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum CreateBackup { + Intro, + Menu, + SkipBackupIntro, + SkipBackupConfirm, +} + +impl FlowState for CreateBackup { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (CreateBackup::Intro, SwipeDirection::Left) => { + Decision::Goto(CreateBackup::Menu, direction) + } + (CreateBackup::SkipBackupIntro, SwipeDirection::Up) => { + Decision::Goto(CreateBackup::SkipBackupConfirm, direction) + } + (CreateBackup::SkipBackupConfirm, SwipeDirection::Down) => { + Decision::Goto(CreateBackup::SkipBackupIntro, direction) + } + (CreateBackup::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (CreateBackup::Intro, FlowMsg::Info) => { + Decision::Goto(CreateBackup::Menu, SwipeDirection::Left) + } + (CreateBackup::Menu, FlowMsg::Choice(0)) => { + Decision::Goto(CreateBackup::SkipBackupIntro, SwipeDirection::Left) + } + (CreateBackup::Menu, FlowMsg::Cancelled) => { + Decision::Goto(CreateBackup::Intro, SwipeDirection::Right) + } + (CreateBackup::SkipBackupIntro, FlowMsg::Cancelled) => { + Decision::Goto(CreateBackup::Menu, SwipeDirection::Right) + } + (CreateBackup::SkipBackupConfirm, FlowMsg::Cancelled) => { + Decision::Goto(CreateBackup::SkipBackupIntro, SwipeDirection::Right) + } + (CreateBackup::SkipBackupConfirm, FlowMsg::Confirmed) => { + Decision::Return(FlowMsg::Cancelled) + } + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +pub extern "C" fn new_create_backup(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, CreateBackup::new) } +} + +impl CreateBackup { + fn new(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = TR::backup__title_backup_wallet.into(); + let par_array: [Paragraph<'static>; 1] = [Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TString::from_str("Your wallet backup contains X words in a specific order."), + )]; + let paragraphs = Paragraphs::new(par_array); + let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None); + + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::context_menu(unwrap!(Vec::from_slice(&[( + "Skip backup", // FIXME: use TString + theme::ICON_CANCEL + )]))), + ) + .with_cancel_button(); + + let par_array_skip_intro: [Paragraph<'static>; 2] = [ + Paragraph::new(&theme::TEXT_WARNING, TString::from_str("Not recommended!")), + Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TString::from_str("Create a backup to avoid losing access to your funds"), + ), + ]; + let paragraphs_skip_intro = Paragraphs::new(par_array_skip_intro); + let content_skip_intro = Frame::left_aligned( + TR::backup__title_skip.into(), + SwipePage::vertical(paragraphs_skip_intro), + ) + .with_cancel_button() + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::words__continue_anyway.into()), + ); + + let content_skip_confirm = Frame::left_aligned( + TR::backup__title_skip.into(), + PromptScreen::new_tap_to_cancel(), + ) + .with_footer(TR::instructions__tap_to_confirm.into(), None); + + let store = flow_store() + .add(content_intro, |msg| { + matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) + })? + .add(content_menu, |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(_) => None, + })? + .add(content_skip_intro, |msg| match msg { + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + })? + .add(content_skip_confirm, |msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + })?; + let res = SwipeFlow::new(CreateBackup::Intro, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 7b0eb7bf61..cbdb00622c 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -35,7 +35,7 @@ use crate::{ }, Border, Component, Empty, FormattedText, Label, Never, Qr, Timeout, }, - display::{tjpgd::jpeg_info, Icon}, + display::tjpgd::jpeg_info, geometry, layout::{ obj::{ComponentMsgObj, LayoutObj}, @@ -53,8 +53,8 @@ use super::{ FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, - SelectWordCount, SelectWordCountMsg, ShareWords, SimplePage, Slip39Input, VerticalMenu, - VerticalMenuChoiceMsg, + PromptScreen, SelectWordCount, SelectWordCountMsg, ShareWords, SimplePage, Slip39Input, + StatusScreen, VerticalMenu, VerticalMenuChoiceMsg, }, flow, theme, }; @@ -207,6 +207,34 @@ impl ComponentMsgObj for VerticalMenu { } } +impl ComponentMsgObj for StatusScreen { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + () => Ok(CONFIRMED.as_obj()), + } + } +} + +impl ComponentMsgObj for PromptScreen { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + () => Ok(CONFIRMED.as_obj()), + } + } +} + +impl<T> ComponentMsgObj for SwipeUpScreen<T> +where + T: Component, +{ + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + SwipeUpScreenMsg::Content(_) => Err(Error::TypeError), + SwipeUpScreenMsg::Swiped => Ok(CONFIRMED.as_obj()), + } + } +} + impl<T> ComponentMsgObj for ButtonPage<T> where T: Component + Paginate, @@ -1297,6 +1325,22 @@ extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } +extern "C" fn new_confirm_backup_written_down( + n_args: usize, + args: *const Obj, + kwargs: *mut Map, +) -> Obj { + let block = move |_args: &[Obj], _kwargs: &Map| { + let content = PromptScreen::new_hold_to_confirm(); + let frame_with_hold_to_confirm = + Frame::left_aligned("I wrote down all words in order.".into(), content) + .with_footer(TR::instructions__hold_to_confirm.into(), None); + let obj = LayoutObj::new(frame_with_hold_to_confirm)?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index f2cfe8838a..f43c313da5 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -355,8 +355,10 @@ class TR: inputs__return: str = "RETURN" inputs__show: str = "SHOW" inputs__space: str = "SPACE" + instructions__hold_to_confirm: str = "Hold to confirm" instructions__swipe_up: str = "Swipe up" - joint__title: str = "JOINT TRANSACTION" + instructions__tap_to_confirm: str = "Tap to confirm" + joint__title: str = "Joint transaction" joint__to_the_total_amount: str = "To the total amount:" joint__you_are_contributing: str = "You are contributing:" language__change_to_template: str = "Change language to {0}?" diff --git a/core/translations/en.json b/core/translations/en.json index 05645cc3f4..bcd31e85e2 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -358,6 +358,8 @@ "inputs__show": "SHOW", "inputs__space": "SPACE", "instructions__swipe_up": "Swipe up", + "instructions__tap_to_confirm": "Tap to confirm", + "instructions__hold_to_confirm": "Hold to confirm", "joint__title": "Joint transaction", "joint__to_the_total_amount": "To the total amount:", "joint__you_are_contributing": "You are contributing:", diff --git a/core/translations/order.json b/core/translations/order.json index 97c9086a63..444bcec4f5 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -852,5 +852,7 @@ "850": "cardano__delegating_to_script", "851": "cardano__deposit", "852": "cardano__vote_delegation", - "853": "instructions__swipe_up" + "853": "instructions__swipe_up", + "854": "instructions__tap_to_confirm", + "855": "instructions__hold_to_confirm" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 6e303bad2e..566126774e 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "4b19a878ad4d4daf9941ca0a7e024bcb5aa7e456c292821ef9ed5144c72e2531", - "datetime": "2024-05-17T10:01:56.790696", - "commit": "93fca0189d3622a316657465d1b96b642e8665a1" + "merkle_root": "ba39f116679b466d0b1192964d3037d54f5e2486c1ba6e2fc6de522f984f6f0c", + "datetime": "2024-05-17T10:09:38.714090", + "commit": "e797e871c50530f1c1058e588e3ec0ead9f5b13f" }, "history": [ { From 7905770e7e62fa1a9aef06e5b28b8bbce78050f1 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 21 Apr 2024 22:38:00 +0200 Subject: [PATCH 126/626] feat(core/ui/): introduce SwipeUpScreen A simple wrapper of a component which supports returning PageMsg::Confirmed if swipe up action was detected. --- .../src/ui/model_mercury/component/mod.rs | 2 + .../component/swipe_up_screen.rs | 76 +++++++++++++++++++ .../rust/src/ui/model_mercury/constant.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 2 +- 4 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index fd9053a01a..71fc053955 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -28,6 +28,7 @@ mod share_words; mod simple_page; mod status_screen; mod swipe; +mod swipe_up_screen; mod welcome_screen; #[cfg(feature = "translations")] @@ -66,6 +67,7 @@ pub use share_words::ShareWords; pub use simple_page::SimplePage; pub use status_screen::StatusScreen; pub use swipe::{Swipe, SwipeDirection}; +pub use swipe_up_screen::{SwipeUpScreen, SwipeUpScreenMsg}; pub use vertical_menu::{VerticalMenu, VerticalMenuChoiceMsg}; pub use welcome_screen::WelcomeScreen; diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs new file mode 100644 index 0000000000..8e8c854118 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -0,0 +1,76 @@ +use crate::ui::{ + component::{Component, Event, EventCtx}, + geometry::Rect, + shape::Renderer, +}; + +use super::{Swipe, SwipeDirection}; + +/// Wrapper component adding "swipe up" handling to `content`. +pub struct SwipeUpScreen<T> { + content: T, + swipe: Swipe, +} + +pub enum SwipeUpScreenMsg<T> { + Swiped, + Content(T), +} + +impl<T> SwipeUpScreen<T> +where + T: Component, +{ + pub fn new(content: T) -> Self { + Self { + content, + swipe: Swipe::new().up(), + } + } +} + +impl<T> Component for SwipeUpScreen<T> +where + T: Component, +{ + type Msg = SwipeUpScreenMsg<T::Msg>; + + fn place(&mut self, bounds: Rect) -> Rect { + self.swipe.place(bounds); + self.content.place(bounds); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Some(SwipeDirection::Up) = self.swipe.event(ctx, event) { + return Some(SwipeUpScreenMsg::Swiped); + } + self.content + .event(ctx, event) + .map(SwipeUpScreenMsg::Content) + } + + fn paint(&mut self) { + todo!() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.content.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.content.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for SwipeUpScreen<T> +where + T: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("SwipeUpScreen"); + t.child("content", &self.content); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/constant.rs b/core/embed/rust/src/ui/model_mercury/constant.rs index 9f0d9e3d57..dbf3ea9cb7 100644 --- a/core/embed/rust/src/ui/model_mercury/constant.rs +++ b/core/embed/rust/src/ui/model_mercury/constant.rs @@ -24,4 +24,4 @@ pub const SCREEN: Rect = screen(); /// Spacing between components (e.g. header and main content) and offsets from /// the side of the screen. Generally applied everywhere except the top side of /// the header. [px] -pub const SPACING: i16 = 2; +pub const SPACING: i16 = 2; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index cbdb00622c..76b30e6bf2 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -54,7 +54,7 @@ use super::{ MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, SelectWordCount, SelectWordCountMsg, ShareWords, SimplePage, Slip39Input, - StatusScreen, VerticalMenu, VerticalMenuChoiceMsg, + StatusScreen, SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, }, flow, theme, }; From 0615b1bbc2a75deda0a019ea9f1401b160b91135 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 21 Apr 2024 22:43:12 +0200 Subject: [PATCH 127/626] feat(core/ui): T3T1 confirm backup flow --- core/embed/rust/librust_qstr.h | 6 ++ .../generated/translated_string.rs | 3 + .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../embed/rust/src/ui/model_mercury/layout.rs | 68 ++++++++++++------- .../rust/src/ui/model_mercury/theme/mod.rs | 35 ++++++++++ core/mocks/generated/trezorui2.pyi | 10 +++ core/mocks/trezortranslate_keys.pyi | 1 + .../src/trezor/ui/layouts/mercury/__init__.py | 32 +++------ core/src/trezor/ui/layouts/mercury/reset.py | 34 ++++++++-- core/translations/en.json | 1 + core/translations/order.json | 3 +- core/translations/signatures.json | 6 +- 12 files changed, 142 insertions(+), 59 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index e4b40810d1..47e9d42acc 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -150,6 +150,7 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_action; MP_QSTR_confirm_address; MP_QSTR_confirm_backup; + MP_QSTR_confirm_backup_written_down; MP_QSTR_confirm_blob; MP_QSTR_confirm_coinjoin; MP_QSTR_confirm_emphasized; @@ -173,6 +174,7 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_value; MP_QSTR_confirm_with_info; MP_QSTR_count; + MP_QSTR_create_backup_flow; MP_QSTR_data; MP_QSTR_data_hash; MP_QSTR_data_len; @@ -232,6 +234,9 @@ static void _librust_qstrs(void) { MP_QSTR_inputs__return; MP_QSTR_inputs__show; MP_QSTR_inputs__space; + MP_QSTR_instructions__hold_to_confirm; + MP_QSTR_instructions__swipe_up; + MP_QSTR_instructions__tap_to_confirm; MP_QSTR_is_type_of; MP_QSTR_items; MP_QSTR_joint__title; @@ -620,6 +625,7 @@ static void _librust_qstrs(void) { MP_QSTR_words__error; MP_QSTR_words__fee; MP_QSTR_words__from; + MP_QSTR_words__important; MP_QSTR_words__keep_it_safe; MP_QSTR_words__know_what_your_doing; MP_QSTR_words__my_trezor; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 7e774c70f4..44acb3d31a 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1254,6 +1254,7 @@ pub enum TranslatedString { instructions__swipe_up = 853, // "Swipe up" instructions__tap_to_confirm = 854, // "Tap to confirm" instructions__hold_to_confirm = 855, // "Hold to confirm" + words__important = 856, // "Important" } impl TranslatedString { @@ -2503,6 +2504,7 @@ impl TranslatedString { Self::instructions__swipe_up => "Swipe up", Self::instructions__tap_to_confirm => "Tap to confirm", Self::instructions__hold_to_confirm => "Hold to confirm", + Self::words__important => "Important", } } @@ -3753,6 +3755,7 @@ impl TranslatedString { Qstr::MP_QSTR_instructions__swipe_up => Some(Self::instructions__swipe_up), Qstr::MP_QSTR_instructions__tap_to_confirm => Some(Self::instructions__tap_to_confirm), Qstr::MP_QSTR_instructions__hold_to_confirm => Some(Self::instructions__hold_to_confirm), + Qstr::MP_QSTR_words__important => Some(Self::words__important), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 6cd147fa8f..1bffe2ea15 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,5 +1,7 @@ pub mod get_address; pub mod confirm_reset_device; +pub mod create_backup; pub use get_address::GetAddress; pub use confirm_reset_device::ConfirmResetDevice; +pub use create_backup::CreateBackup; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 76b30e6bf2..2378150b11 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1018,42 +1018,50 @@ extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let icon = BlendedImage::new( - theme::IMAGE_BG_OCTAGON, - theme::IMAGE_FG_WARN, - theme::WARN_COLOR, - theme::FG, - theme::BG, - ); - new_show_modal(kwargs, icon, theme::button_reset()) + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; + + let content = SwipeUpScreen::new(Paragraphs::new([Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + value, + )])); + let obj = LayoutObj::new( + Frame::left_aligned(title, content) + .with_warning_button() + .button_styled(theme::button_warning_low()) + .with_footer(TR::instructions__swipe_up.into(), None), + )?; + Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } extern "C" fn new_show_success(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let icon = BlendedImage::new( - theme::IMAGE_BG_CIRCLE, - theme::IMAGE_FG_SUCCESS, - theme::SUCCESS_COLOR, - theme::FG, - theme::BG, - ); - new_show_modal(kwargs, icon, theme::button_confirm()) + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let content = StatusScreen::new_success(); + let obj = LayoutObj::new( + Frame::left_aligned(title, content) + .with_footer(TR::instructions__swipe_up.into(), None), + )?; + Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let icon = BlendedImage::new( - theme::IMAGE_BG_CIRCLE, - theme::IMAGE_FG_INFO, - theme::INFO_COLOR, - theme::FG, - theme::BG, - ); - new_show_modal(kwargs, icon, theme::button_info()) + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let content = SwipeUpScreen::new(Paragraphs::new([Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + description, + )])); + let obj = LayoutObj::new( + Frame::left_aligned(title, content) + .with_footer(TR::instructions__swipe_up.into(), None), + )?; + Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -1330,7 +1338,7 @@ extern "C" fn new_confirm_backup_written_down( args: *const Obj, kwargs: *mut Map, ) -> Obj { - let block = move |_args: &[Obj], _kwargs: &Map| { + let block = move |_args: &[Obj], kwargs: &Map| { let content = PromptScreen::new_hold_to_confirm(); let frame_with_hold_to_confirm = Frame::left_aligned("I wrote down all words in order.".into(), content) @@ -2044,6 +2052,11 @@ pub static mp_module_trezorui2: Module = obj_module! { /// information, 3) Cancel transaction""" Qstr::MP_QSTR_show_tx_context_menu => obj_fn_kw!(0, new_show_tx_context_menu).as_obj(), + // TODO: This is just POC + /// def create_backup_flow() -> LayoutObj[UiResult] + /// """Start create backup or skip flow.""" + Qstr::MP_QSTR_create_backup_flow => obj_fn_kw!(0, flow::create_backup::new_create_backup).as_obj(), + /// def show_share_words( /// *, /// title: str, @@ -2052,6 +2065,11 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Show mnemonic for backup.""" Qstr::MP_QSTR_show_share_words => obj_fn_kw!(0, new_show_share_words).as_obj(), + // TODO: This is just POC + /// def confirm_backup_written_down() -> LayoutObj[UiResult] + /// """Confirm with the user that backup words are written down.""" + Qstr::MP_QSTR_confirm_backup_written_down => obj_fn_kw!(0, new_confirm_backup_written_down).as_obj(), + /// def request_number( /// *, /// title: str, diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index a1325449cb..10e1700b41 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -292,6 +292,41 @@ pub const fn button_warning_high() -> ButtonStyleSheet { } } +pub const fn button_warning_low() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, + button_color: BG, + icon_color: GREEN_LIME, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + active: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, + button_color: BG, + icon_color: GREEN_LIME, + background_color: BG, + border_color: FG, + border_radius: RADIUS, + border_width: 0, + }, + disabled: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, + button_color: BG, + icon_color: GREEN_LIME, + background_color: BG, + border_color: BG, + border_radius: RADIUS, + border_width: 0, + }, + } +} + // TODO: delete pub const fn button_confirm() -> ButtonStyleSheet { ButtonStyleSheet { diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index f4fb27f2d6..9f5a2de495 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -395,6 +395,11 @@ def show_tx_context_menu() -> LayoutObj[int]: information, 3) Cancel transaction""" +# rust/src/ui/model_mercury/layout.rs +def create_backup_flow() -> LayoutObj[UiResult] +"""Start create backup or skip flow.""" + + # rust/src/ui/model_mercury/layout.rs def show_share_words( *, @@ -404,6 +409,11 @@ def show_share_words( """Show mnemonic for backup.""" +# rust/src/ui/model_mercury/layout.rs +def confirm_backup_written_down() -> LayoutObj[UiResult] +"""Confirm with the user that backup words are written down.""" + + # rust/src/ui/model_mercury/layout.rs def request_number( *, diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index f43c313da5..ee0fc0c0c9 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -833,6 +833,7 @@ class TR: words__error: str = "Error" words__fee: str = "Fee" words__from: str = "from" + words__important: str = "Important" words__keep_it_safe: str = "Keep it safe!" words__know_what_your_doing: str = "Continue only if you know what you are doing!" words__my_trezor: str = "My Trezor" diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index f946047b48..af012cfefe 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -340,37 +340,21 @@ async def confirm_reset_device(title: str, recovery: bool = False) -> None: ) -# TODO cleanup @ redesign async def prompt_backup() -> bool: - result = await interact( - RustLayout( - trezorui2.confirm_action( - title=TR.words__title_success, - action=TR.backup__new_wallet_successfully_created, - description=TR.backup__it_should_be_backed_up, - verb=TR.buttons__back_up, - verb_cancel=TR.buttons__skip, - ) - ), + # result = await interact(RustLayout(trezorui2.)) + await interact( + RustLayout(trezorui2.show_success(title=TR.backup__new_wallet_created)), "backup_device", ButtonRequestType.ResetDevice, ) - if result is CONFIRMED: - return True result = await interact( - RustLayout( - trezorui2.confirm_action( - title=TR.words__warning.upper(), - action=TR.backup__want_to_skip, - description=TR.backup__can_back_up_anytime, - verb=TR.buttons__back_up, - verb_cancel=TR.buttons__skip, - ) - ), + # TODO: this is just POC + RustLayout(trezorui2.create_backup_flow()), "backup_device", ButtonRequestType.ResetDevice, ) + return result is CONFIRMED @@ -586,8 +570,8 @@ async def show_success( interact( RustLayout( trezorui2.show_success( - title=content, - description=subheader or "", + title=subheader or "", + description="", button=button.upper(), allow_cancel=False, ) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index c0d9dd46ed..337ab74d4e 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -32,9 +32,16 @@ async def show_share_words( group_index + 1, share_index + 1 ) + await RustLayout( + trezorui2.show_share_words( + title=title, + pages=share_words, + ), + ) + result = await interact( RustLayout( - trezorui2.show_share_words( + trezorui2.confirm_backup_written_down( title=title, pages=share_words, ), @@ -42,6 +49,13 @@ async def show_share_words( "backup_words", ButtonRequestType.ResetDevice, ) + + result = await RustLayout( + trezorui2.show_info( + title="Check wallet backup", + description="Let's do a quick check of your backup.", + ) + ) if result != CONFIRMED: raise ActionCancelled @@ -296,15 +310,22 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: async def show_warning_backup(slip39: bool) -> None: result = await interact( RustLayout( - trezorui2.show_info( - title=TR.reset__never_make_digital_copy, - button=TR.buttons__ok_i_understand, + trezorui2.show_warning( + title=TR.words__important, + value=TR.reset__never_make_digital_copy, + button="", allow_cancel=False, ) ), "backup_warning", ButtonRequestType.ResetDevice, ) + result = await RustLayout( + trezorui2.show_info( + title="Wallet backup", + description="Write the following words in order on your wallet backup card.", + ) + ) if result != CONFIRMED: raise ActionCancelled @@ -332,8 +353,9 @@ async def show_reset_warning( RustLayout( trezorui2.show_warning( title=subheader or "", - description=content, - button=button.upper(), + description="", + value=content, + button="", allow_cancel=False, ) ), diff --git a/core/translations/en.json b/core/translations/en.json index bcd31e85e2..720415ac12 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -835,6 +835,7 @@ "words__error": "Error", "words__fee": "Fee", "words__from": "from", + "words__important": "Important", "words__keep_it_safe": "Keep it safe!", "words__know_what_your_doing": "Continue only if you know what you are doing!", "words__my_trezor": "My Trezor", diff --git a/core/translations/order.json b/core/translations/order.json index 444bcec4f5..49b154e5f0 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -854,5 +854,6 @@ "852": "cardano__vote_delegation", "853": "instructions__swipe_up", "854": "instructions__tap_to_confirm", - "855": "instructions__hold_to_confirm" + "855": "instructions__hold_to_confirm", + "856": "words__important" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 566126774e..394ade0b70 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "ba39f116679b466d0b1192964d3037d54f5e2486c1ba6e2fc6de522f984f6f0c", - "datetime": "2024-05-17T10:09:38.714090", - "commit": "e797e871c50530f1c1058e588e3ec0ead9f5b13f" + "merkle_root": "04a116dbd20d79235dd81e26fa428eb7c5f4971e76f08a47cde1ec98c959e586", + "datetime": "2024-05-17T10:12:24.161735", + "commit": "aea8bdbe8f9cc2fe629e624a06f4f1b1af6e0a8f" }, "history": [ { From 23021c5152b7158d4a30c9bc966194905491a699 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 23 Apr 2024 12:29:09 +0200 Subject: [PATCH 128/626] fix(core/ui): remove border from T3T1 buttons According to Figma designs, there will be no rounded buttons in T3T1, so the ButtonStyle does not need these fields. [no changelog] --- .../src/ui/model_mercury/component/button.rs | 33 +----- .../src/ui/model_mercury/theme/bootloader.rs | 45 -------- .../rust/src/ui/model_mercury/theme/mod.rs | 108 ------------------ 3 files changed, 2 insertions(+), 184 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 4f418cfc26..8daa7129cb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -163,30 +163,7 @@ impl Button { match &self.content { ButtonContent::IconBlend(_, _, _) => {} _ => { - if style.border_width > 0 { - // Paint the border and a smaller background on top of it. - display::rect_fill_rounded( - self.area, - style.border_color, - style.background_color, - style.border_radius, - ); - display::rect_fill_rounded( - self.area.inset(Insets::uniform(style.border_width)), - style.button_color, - style.border_color, - style.border_radius, - ); - } else { - // We do not need to draw an explicit border in this case, just a - // bigger background. - display::rect_fill_rounded( - self.area, - style.button_color, - style.background_color, - style.border_radius, - ); - } + display::rect_fill(self.area, style.button_color); } } } @@ -196,9 +173,7 @@ impl Button { ButtonContent::IconBlend(_, _, _) => {} _ => shape::Bar::new(self.area) .with_bg(style.button_color) - .with_fg(style.border_color) - .with_thickness(style.border_width) - .with_radius(style.border_radius as i16) + .with_fg(style.button_color) .render(target), } } @@ -413,7 +388,6 @@ pub struct ButtonStyleSheet { pub disabled: &'static ButtonStyle, } -// TODO: radius and borders not needed in T3T1 - sync with BL #[derive(PartialEq, Eq)] pub struct ButtonStyle { pub font: Font, @@ -421,9 +395,6 @@ pub struct ButtonStyle { pub button_color: Color, pub icon_color: Color, pub background_color: Color, - pub border_color: Color, - pub border_radius: u8, - pub border_width: i16, } impl Button { diff --git a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs b/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs index 57a9271aa5..ce35b3fdb1 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs @@ -77,9 +77,6 @@ pub fn button_confirm() -> ButtonStyleSheet { button_color: WHITE, icon_color: BLD_BG, background_color: BLD_BG, - border_color: BLD_BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::BOLD, @@ -87,9 +84,6 @@ pub fn button_confirm() -> ButtonStyleSheet { button_color: BLD_INSTALL_BTN_COLOR_ACTIVE, icon_color: BLD_BG, background_color: BLD_BG, - border_color: BLD_BG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -97,9 +91,6 @@ pub fn button_confirm() -> ButtonStyleSheet { button_color: GREY_DARK, icon_color: BLD_BG, background_color: FG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -112,9 +103,6 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { button_color: BLD_WIPE_CANCEL_BTN_COLOR, icon_color: WHITE, background_color: BLD_WIPE_COLOR, - border_color: BLD_WIPE_COLOR, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::BOLD, @@ -122,9 +110,6 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { button_color: BLD_WIPE_CANCEL_BTN_COLOR_ACTIVE, icon_color: WHITE, background_color: BLD_WIPE_COLOR, - border_color: BLD_WIPE_COLOR, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -132,9 +117,6 @@ pub fn button_wipe_cancel() -> ButtonStyleSheet { button_color: GREY_DARK, icon_color: GREY_LIGHT, background_color: WHITE, - border_color: WHITE, - border_radius: RADIUS, - border_width: 0, }, } } @@ -147,9 +129,6 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { button_color: BLD_WIPE_BTN_COLOR, icon_color: BLD_WIPE_COLOR, background_color: BLD_WIPE_COLOR, - border_color: BLD_WIPE_COLOR, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::BOLD, @@ -157,9 +136,6 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { button_color: BLD_WIPE_BTN_COLOR_ACTIVE, icon_color: BLD_WIPE_COLOR, background_color: BLD_WIPE_COLOR, - border_color: BLD_WIPE_COLOR, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -167,9 +143,6 @@ pub fn button_wipe_confirm() -> ButtonStyleSheet { button_color: GREY_DARK, icon_color: FG, background_color: FG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -182,9 +155,6 @@ pub fn button_bld_menu() -> ButtonStyleSheet { button_color: BLD_BG, icon_color: BLD_FG, background_color: BLD_BG, - border_color: BLD_BTN_COLOR, - border_radius: 2, - border_width: 2, }, active: &ButtonStyle { font: Font::BOLD, @@ -192,9 +162,6 @@ pub fn button_bld_menu() -> ButtonStyleSheet { button_color: BLD_BG, icon_color: BLD_FG, background_color: BLD_BG, - border_color: BLD_BTN_COLOR_ACTIVE, - border_radius: 2, - border_width: 2, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -202,9 +169,6 @@ pub fn button_bld_menu() -> ButtonStyleSheet { button_color: BLD_BG, icon_color: GREY_LIGHT, background_color: BLD_BG, - border_color: BLD_BG, - border_radius: 2, - border_width: 2, }, } } @@ -217,9 +181,6 @@ pub fn button_bld() -> ButtonStyleSheet { button_color: BLD_BTN_COLOR, icon_color: BLD_FG, background_color: BLD_BG, - border_color: BLD_BG, - border_radius: 4, - border_width: 0, }, active: &ButtonStyle { font: Font::BOLD, @@ -227,9 +188,6 @@ pub fn button_bld() -> ButtonStyleSheet { button_color: BLD_BTN_COLOR_ACTIVE, icon_color: BLD_FG, background_color: BLD_BG, - border_color: BLD_BG, - border_radius: 4, - border_width: 0, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -237,9 +195,6 @@ pub fn button_bld() -> ButtonStyleSheet { button_color: BLD_BTN_COLOR, icon_color: GREY_LIGHT, background_color: BLD_BG, - border_color: BLD_BG, - border_radius: 4, - border_width: 0, }, } } diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 10e1700b41..93afbb9215 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -230,9 +230,6 @@ pub const fn button_default() -> ButtonStyleSheet { button_color: BG, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::DEMIBOLD, @@ -240,9 +237,6 @@ pub const fn button_default() -> ButtonStyleSheet { button_color: BG, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::DEMIBOLD, @@ -250,9 +244,6 @@ pub const fn button_default() -> ButtonStyleSheet { button_color: BG, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -265,9 +256,6 @@ pub const fn button_warning_high() -> ButtonStyleSheet { button_color: BG, icon_color: ORANGE_DIMMED, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::DEMIBOLD, @@ -275,9 +263,6 @@ pub const fn button_warning_high() -> ButtonStyleSheet { button_color: BG, icon_color: ORANGE_DIMMED, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::DEMIBOLD, @@ -285,9 +270,6 @@ pub const fn button_warning_high() -> ButtonStyleSheet { button_color: BG, icon_color: ORANGE_DIMMED, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -300,9 +282,6 @@ pub const fn button_warning_low() -> ButtonStyleSheet { button_color: BG, icon_color: GREEN_LIME, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::DEMIBOLD, @@ -310,9 +289,6 @@ pub const fn button_warning_low() -> ButtonStyleSheet { button_color: BG, icon_color: GREEN_LIME, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::DEMIBOLD, @@ -320,9 +296,6 @@ pub const fn button_warning_low() -> ButtonStyleSheet { button_color: BG, icon_color: GREEN_LIME, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -336,9 +309,6 @@ pub const fn button_confirm() -> ButtonStyleSheet { button_color: GREEN, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::BOLD, @@ -346,9 +316,6 @@ pub const fn button_confirm() -> ButtonStyleSheet { button_color: GREEN_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -356,9 +323,6 @@ pub const fn button_confirm() -> ButtonStyleSheet { button_color: GREEN_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -372,9 +336,6 @@ pub const fn button_cancel() -> ButtonStyleSheet { button_color: RED, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::BOLD, @@ -382,9 +343,6 @@ pub const fn button_cancel() -> ButtonStyleSheet { button_color: RED_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -392,9 +350,6 @@ pub const fn button_cancel() -> ButtonStyleSheet { button_color: RED, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -412,9 +367,6 @@ pub const fn button_reset() -> ButtonStyleSheet { button_color: YELLOW, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::BOLD, @@ -422,9 +374,6 @@ pub const fn button_reset() -> ButtonStyleSheet { button_color: YELLOW_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::BOLD, @@ -432,9 +381,6 @@ pub const fn button_reset() -> ButtonStyleSheet { button_color: YELLOW, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -447,9 +393,6 @@ pub const fn button_pin() -> ButtonStyleSheet { button_color: GREY_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::MONO, @@ -457,9 +400,6 @@ pub const fn button_pin() -> ButtonStyleSheet { button_color: GREY_MEDIUM, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::MONO, @@ -467,9 +407,6 @@ pub const fn button_pin() -> ButtonStyleSheet { button_color: BG, // so there is no "button" itself, just the text icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -482,9 +419,6 @@ pub const fn button_pin_confirm() -> ButtonStyleSheet { button_color: GREEN, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::MONO, @@ -492,9 +426,6 @@ pub const fn button_pin_confirm() -> ButtonStyleSheet { button_color: GREEN_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::MONO, @@ -502,9 +433,6 @@ pub const fn button_pin_confirm() -> ButtonStyleSheet { button_color: GREY_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -517,9 +445,6 @@ pub const fn button_pin_autocomplete() -> ButtonStyleSheet { button_color: GREY_DARK, // same as PIN buttons icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::MONO, @@ -527,9 +452,6 @@ pub const fn button_pin_autocomplete() -> ButtonStyleSheet { button_color: GREEN_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::MONO, @@ -537,9 +459,6 @@ pub const fn button_pin_autocomplete() -> ButtonStyleSheet { button_color: BG, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -552,9 +471,6 @@ pub const fn button_suggestion_confirm() -> ButtonStyleSheet { button_color: GREEN, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::MONO, @@ -562,9 +478,6 @@ pub const fn button_suggestion_confirm() -> ButtonStyleSheet { button_color: GREEN_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::MONO, @@ -572,9 +485,6 @@ pub const fn button_suggestion_confirm() -> ButtonStyleSheet { button_color: GREY_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -587,9 +497,6 @@ pub const fn button_suggestion_autocomplete() -> ButtonStyleSheet { button_color: GREY_DARK, // same as PIN buttons icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::MONO, @@ -597,9 +504,6 @@ pub const fn button_suggestion_autocomplete() -> ButtonStyleSheet { button_color: GREEN_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::MONO, @@ -607,9 +511,6 @@ pub const fn button_suggestion_autocomplete() -> ButtonStyleSheet { button_color: BG, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } @@ -622,9 +523,6 @@ pub const fn button_counter() -> ButtonStyleSheet { button_color: GREY_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, active: &ButtonStyle { font: Font::DEMIBOLD, @@ -632,9 +530,6 @@ pub const fn button_counter() -> ButtonStyleSheet { button_color: GREY_MEDIUM, icon_color: GREY_LIGHT, background_color: BG, - border_color: FG, - border_radius: RADIUS, - border_width: 0, }, disabled: &ButtonStyle { font: Font::DEMIBOLD, @@ -642,9 +537,6 @@ pub const fn button_counter() -> ButtonStyleSheet { button_color: GREY_DARK, icon_color: GREY_LIGHT, background_color: BG, - border_color: BG, - border_radius: RADIUS, - border_width: 0, }, } } From 908f123dbf51e12db53491fb709cce84738ef391 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 23 Apr 2024 23:47:18 +0200 Subject: [PATCH 129/626] refactor(core/ui): fix bootloader build failure --- core/embed/rust/src/ui/component/mod.rs | 4 ++++ core/embed/rust/src/ui/{flow => component}/swipe.rs | 9 ++++++++- core/embed/rust/src/ui/flow/base.rs | 13 ++++--------- core/embed/rust/src/ui/flow/flow.rs | 4 ++-- core/embed/rust/src/ui/flow/mod.rs | 3 +-- core/embed/rust/src/ui/flow/page.rs | 4 ++-- core/embed/rust/src/ui/mod.rs | 2 +- .../rust/src/ui/model_mercury/component/dialog.rs | 1 + .../rust/src/ui/model_mercury/component/frame.rs | 5 +++-- .../rust/src/ui/model_mercury/component/mod.rs | 2 ++ .../src/ui/model_mercury/component/prompt_screen.rs | 1 + .../rust/src/ui/model_mercury/component/swipe.rs | 2 +- .../src/ui/model_mercury/component/vertical_menu.rs | 5 +++-- .../ui/model_mercury/flow/confirm_reset_device.rs | 8 ++++---- .../rust/src/ui/model_mercury/flow/create_backup.rs | 8 ++++---- .../rust/src/ui/model_mercury/flow/get_address.rs | 6 +++--- core/embed/rust/src/ui/model_mercury/flow/mod.rs | 4 ++-- core/embed/rust/src/ui/model_mercury/layout.rs | 13 +++---------- core/embed/rust/src/ui/model_mercury/mod.rs | 1 + 19 files changed, 50 insertions(+), 45 deletions(-) rename core/embed/rust/src/ui/{flow => component}/swipe.rs (98%) diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index 3240e80bc8..3d891580f2 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -17,6 +17,8 @@ pub mod pad; pub mod paginated; pub mod placed; pub mod qr_code; +#[cfg(feature = "touch")] +pub mod swipe; pub mod text; pub mod timeout; @@ -35,6 +37,8 @@ pub use pad::Pad; pub use paginated::{PageMsg, Paginate}; pub use placed::{FixedHeightBar, Floating, GridPlaced, Split}; pub use qr_code::Qr; +#[cfg(feature = "touch")] +pub use swipe::{Swipe, SwipeDirection}; pub use text::{ formatted::FormattedText, layout::{LineBreaking, PageBreaking, TextLayout}, diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs similarity index 98% rename from core/embed/rust/src/ui/flow/swipe.rs rename to core/embed/rust/src/ui/component/swipe.rs index 1d4d6989c5..876d6209ec 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -1,11 +1,18 @@ use crate::ui::{ component::{Component, Event, EventCtx}, event::TouchEvent, - flow::base::SwipeDirection, geometry::{Point, Rect}, shape::Renderer, }; +#[derive(Copy, Clone)] +pub enum SwipeDirection { + Up, + Down, + Left, + Right, +} + /// Copy of `model_tt/component/swipe.rs` but without the backlight handling. pub struct Swipe { pub area: Rect, diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index a01f8f0bc0..c7c827d5dc 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -1,14 +1,9 @@ -use crate::ui::{component::EventCtx, geometry::Offset}; +use crate::ui::{ + component::{EventCtx, SwipeDirection}, + geometry::Offset, +}; use num_traits::ToPrimitive; -#[derive(Copy, Clone)] -pub enum SwipeDirection { - Up, - Down, - Left, - Right, -} - impl SwipeDirection { pub fn as_offset(self, size: Offset) -> Offset { match self { diff --git a/core/embed/rust/src/ui/flow/flow.rs b/core/embed/rust/src/ui/flow/flow.rs index 2bb6227863..7553771b20 100644 --- a/core/embed/rust/src/ui/flow/flow.rs +++ b/core/embed/rust/src/ui/flow/flow.rs @@ -3,8 +3,8 @@ use crate::{ time::{Duration, Instant}, ui::{ animation::Animation, - component::{Component, Event, EventCtx}, - flow::{base::Decision, swipe::Swipe, FlowMsg, FlowState, FlowStore, SwipeDirection}, + component::{Component, Event, EventCtx, Swipe, SwipeDirection}, + flow::{base::Decision, FlowMsg, FlowState, FlowStore}, geometry::{Offset, Rect}, shape::Renderer, }, diff --git a/core/embed/rust/src/ui/flow/mod.rs b/core/embed/rust/src/ui/flow/mod.rs index 6f3d1f45aa..4c4ddcb5b1 100644 --- a/core/embed/rust/src/ui/flow/mod.rs +++ b/core/embed/rust/src/ui/flow/mod.rs @@ -2,9 +2,8 @@ pub mod base; mod flow; pub mod page; mod store; -mod swipe; -pub use base::{FlowMsg, FlowState, Swipable, SwipeDirection}; +pub use base::{FlowMsg, FlowState, Swipable}; pub use flow::SwipeFlow; pub use page::{IgnoreSwipe, SwipePage}; pub use store::{flow_store, FlowStore}; diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 8d5ac35985..8c986975b7 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -1,6 +1,6 @@ use crate::ui::{ - component::{Component, Event, EventCtx, Paginate}, - flow::base::{Swipable, SwipeDirection}, + component::{Component, Event, EventCtx, Paginate, SwipeDirection}, + flow::base::Swipable, geometry::{Axis, Rect}, shape::Renderer, }; diff --git a/core/embed/rust/src/ui/mod.rs b/core/embed/rust/src/ui/mod.rs index eb10f84bc9..9e1518c8a0 100644 --- a/core/embed/rust/src/ui/mod.rs +++ b/core/embed/rust/src/ui/mod.rs @@ -7,7 +7,7 @@ pub mod component; pub mod constant; pub mod display; pub mod event; -#[cfg(all(feature = "micropython", feature = "model_mercury"))] +#[cfg(all(feature = "micropython", feature = "touch"))] pub mod flow; pub mod geometry; pub mod lerp; diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index 3766da6c40..68cee9a3a2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -230,4 +230,5 @@ where } } +#[cfg(feature = "micropython")] impl<U> crate::ui::flow::Swipable for IconDialog<U> {} diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 776e8c5a48..c42c9352b3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -245,15 +245,16 @@ where } } +#[cfg(feature = "micropython")] impl<T> crate::ui::flow::Swipable for Frame<T> where T: Component + crate::ui::flow::Swipable, { - fn can_swipe(&self, direction: crate::ui::flow::SwipeDirection) -> bool { + fn can_swipe(&self, direction: crate::ui::component::SwipeDirection) -> bool { self.inner().can_swipe(direction) } - fn swiped(&mut self, ctx: &mut EventCtx, direction: crate::ui::flow::SwipeDirection) { + fn swiped(&mut self, ctx: &mut EventCtx, direction: crate::ui::component::SwipeDirection) { self.update_content(ctx, |ctx, inner| inner.swiped(ctx, direction)) } } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 71fc053955..43d1f4c436 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -24,6 +24,7 @@ mod progress; mod prompt_screen; mod result; mod scroll; +#[cfg(feature = "translations")] mod share_words; mod simple_page; mod status_screen; @@ -63,6 +64,7 @@ pub use progress::Progress; pub use prompt_screen::PromptScreen; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; +#[cfg(feature = "translations")] pub use share_words::ShareWords; pub use simple_page::SimplePage; pub use status_screen::StatusScreen; diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 73f0370a5f..28cf5ad873 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -130,6 +130,7 @@ impl Component for PromptScreen { } } +#[cfg(feature = "micropython")] impl crate::ui::flow::Swipable for PromptScreen {} #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe.rs b/core/embed/rust/src/ui/model_mercury/component/swipe.rs index b4244e38c3..0a67a3b6f6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe.rs @@ -8,7 +8,7 @@ use crate::ui::{ use super::theme; -pub use crate::ui::flow::SwipeDirection; +pub use crate::ui::component::SwipeDirection; pub struct Swipe { pub area: Rect, diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 127d758891..cd9c4fa54d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -2,7 +2,7 @@ use heapless::Vec; use super::theme; use crate::{ - micropython::buffer::StrBuffer, + strutil::TString, ui::{ component::{base::Component, Event, EventCtx}, display::Icon, @@ -50,7 +50,7 @@ impl VerticalMenu { areas_sep: AreasForSeparators::new(), } } - pub fn select_word(words: [StrBuffer; 3]) -> Self { + pub fn select_word(words: [TString<'static>; 3]) -> Self { let mut buttons_vec = VerticalMenuButtons::new(); for word in words { let button = Button::with_text(word.into()).styled(theme::button_default()); @@ -152,4 +152,5 @@ impl crate::trace::Trace for VerticalMenu { } } +#[cfg(feature = "micropython")] impl crate::ui::flow::Swipable for VerticalMenu {} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs index 227eb8dc35..40afe365a8 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs @@ -4,11 +4,11 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::text::paragraphs::{Paragraph, Paragraphs}, - flow::{ - base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeDirection, SwipeFlow, - SwipePage, + component::{ + text::paragraphs::{Paragraph, Paragraphs}, + SwipeDirection, }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, }; use heapless::Vec; diff --git a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs index 95504a2ae7..e3fc8b8b3f 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs @@ -3,11 +3,11 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::text::paragraphs::{Paragraph, Paragraphs}, - flow::{ - base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeDirection, SwipeFlow, - SwipePage, + component::{ + text::paragraphs::{Paragraph, Paragraphs}, + SwipeDirection, }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, }; use heapless::Vec; diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 716a0c231a..1169400755 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -4,11 +4,11 @@ use crate::{ component::{ image::BlendedImage, text::paragraphs::{Paragraph, Paragraphs}, - Qr, Timeout, + Qr, SwipeDirection, Timeout, }, flow::{ - base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeDirection, - SwipeFlow, SwipePage, + base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, + SwipePage, }, }, }; diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 1bffe2ea15..555d3bc63e 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,7 +1,7 @@ -pub mod get_address; pub mod confirm_reset_device; pub mod create_backup; +pub mod get_address; -pub use get_address::GetAddress; pub use confirm_reset_device::ConfirmResetDevice; pub use create_backup::CreateBackup; +pub use get_address::GetAddress; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 2378150b11..145798bbcf 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -4,15 +4,8 @@ use heapless::Vec; use crate::{ error::Error, micropython::{ - buffer::{get_buffer, StrBuffer}, - gc::Gc, - iter::IterBuf, - list::List, - map::Map, - module::Module, - obj::Obj, - qstr::Qstr, - util, + buffer::get_buffer, gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, + qstr::Qstr, util, }, strutil::TString, translations::TR, @@ -1292,7 +1285,7 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let words_iterable: Obj = kwargs.get(Qstr::MP_QSTR_words)?; - let words: [StrBuffer; 3] = util::iter_into_array(words_iterable)?; + let words: [TString; 3] = util::iter_into_array(words_iterable)?; let content = VerticalMenu::select_word(words); let frame_with_menu = Frame::left_aligned(title, content).with_subtitle(description); diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/model_mercury/mod.rs index bb3c85347b..dcb0009305 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/mod.rs @@ -6,6 +6,7 @@ pub mod component; pub mod constant; pub mod theme; +#[cfg(feature = "micropython")] pub mod flow; #[cfg(feature = "micropython")] pub mod layout; From 1b6b2d2b9f380290dd16c1d9e1d1179455168ed2 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 24 Apr 2024 17:35:55 +0200 Subject: [PATCH 130/626] chore(core/rust): fix formatting --- .../src/ui/model_mercury/component/address_details.rs | 9 +++------ .../src/ui/model_mercury/component/keyboard/bip39.rs | 4 ++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index c3e7ca7dd8..2d80a05173 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -60,12 +60,9 @@ impl AddressDetails { ) .with_cancel_button() .with_border(theme::borders_horizontal_scroll()), - details: Frame::left_aligned( - details_title, - para.into_paragraphs(), - ) - .with_cancel_button() - .with_border(theme::borders_horizontal_scroll()), + details: Frame::left_aligned(details_title, para.into_paragraphs()) + .with_cancel_button() + .with_border(theme::borders_horizontal_scroll()), xpub_view: Frame::left_aligned( " \n ".into(), Paragraph::new(&theme::TEXT_MONO, "").into_paragraphs(), diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index 8697af3683..8aba67d343 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -23,9 +23,9 @@ use heapless::String; const MAX_LENGTH: usize = 8; pub struct Bip39Input { - button: Button<>, + button: Button, // used only to keep track of suggestion text color - button_suggestion: Button<>, + button_suggestion: Button, textbox: TextBox<MAX_LENGTH>, multi_tap: MultiTapKeyboard, options_num: Option<usize>, From cf53876292a5ce0e507cc93c4e6664c0fc2302f1 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 24 Apr 2024 21:16:29 +0200 Subject: [PATCH 131/626] refactor(core/ui): rust UI flow simplification --- core/embed/rust/src/ui/component/map.rs | 15 ++++++ core/embed/rust/src/ui/flow/base.rs | 2 +- core/embed/rust/src/ui/flow/flow.rs | 4 ++ core/embed/rust/src/ui/flow/store.rs | 28 ++++------- .../flow/confirm_reset_device.rs | 31 ++++++------ .../ui/model_mercury/flow/create_backup.rs | 48 ++++++++++--------- .../src/ui/model_mercury/flow/get_address.rs | 28 +++++------ 7 files changed, 85 insertions(+), 71 deletions(-) diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 218fdb5e00..76aef9d928 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -1,6 +1,7 @@ use super::{Component, Event, EventCtx}; use crate::ui::{geometry::Rect, shape::Renderer}; +#[derive(Clone)] pub struct MsgMap<T, F> { inner: T, func: F, @@ -50,3 +51,17 @@ where self.inner.trace(t) } } + +#[cfg(all(feature = "micropython", feature = "touch"))] +impl<T, F> crate::ui::flow::Swipable for MsgMap<T, F> +where + T: Component + crate::ui::flow::Swipable, +{ + fn can_swipe(&self, direction: crate::ui::component::SwipeDirection) -> bool { + self.inner.can_swipe(direction) + } + + fn swiped(&mut self, ctx: &mut EventCtx, direction: crate::ui::component::SwipeDirection) { + self.inner.swiped(ctx, direction) + } +} diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index c7c827d5dc..061f0ac85d 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -71,7 +71,7 @@ impl<Q> Decision<Q> { /// triggered by events and swipes. pub trait FlowState where - Self: Sized + Copy + PartialEq + Eq + ToPrimitive, + Self: Sized + Copy + Eq + ToPrimitive, { /// There needs to be a mapping from states to indices of the FlowStore /// array. Default implementation works for states that are enums, the diff --git a/core/embed/rust/src/ui/flow/flow.rs b/core/embed/rust/src/ui/flow/flow.rs index 7553771b20..29c9c178ea 100644 --- a/core/embed/rust/src/ui/flow/flow.rs +++ b/core/embed/rust/src/ui/flow/flow.rs @@ -32,8 +32,11 @@ pub struct SwipeFlow<Q, S> { } struct Transition<Q> { + /// State we are transitioning _from_. prev_state: Q, + /// Animation progress. animation: Animation<Offset>, + /// Direction of the slide animation. direction: SwipeDirection, } @@ -142,6 +145,7 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { // TODO: are there any events we want to send to all? timers perhaps? if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { self.handle_transition(ctx); + return None; } // Ignore events while transition is running. if self.transition.is_some() { diff --git a/core/embed/rust/src/ui/flow/store.rs b/core/embed/rust/src/ui/flow/store.rs index 993170154b..cc116f7f9b 100644 --- a/core/embed/rust/src/ui/flow/store.rs +++ b/core/embed/rust/src/ui/flow/store.rs @@ -21,8 +21,7 @@ pub trait FlowStore { /// Call `Component::place` on all elements. fn place(&mut self, bounds: Rect) -> Rect; - /// Call `Component::event` on i-th element, if it emits a message it is - /// converted to `FlowMsg` using a function. + /// Call `Component::event` on i-th element. fn event(&mut self, i: usize, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg>; /// Call `Component::render` on i-th element. @@ -42,10 +41,9 @@ pub trait FlowStore { fn render_cloned<'s>(&'s self, target: &mut impl Renderer<'s>); /// Add a Component to the end of a `FlowStore`. - fn add<E: Component + MaybeTrace + Swipable + Clone>( + fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable + Clone>( self, elem: E, - func: fn(E::Msg) -> Option<FlowMsg>, ) -> Result<impl FlowStore, error::Error> where Self: Sized; @@ -87,38 +85,33 @@ impl FlowStore for FlowEmpty { } fn render_cloned<'s>(&'s self, _target: &mut impl Renderer<'s>) {} - fn add<E: Component + MaybeTrace + Swipable + Clone>( + fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable + Clone>( self, elem: E, - func: fn(E::Msg) -> Option<FlowMsg>, ) -> Result<impl FlowStore, error::Error> where Self: Sized, { Ok(FlowComponent { elem: Gc::new(elem)?, - func, cloned: None, next: Self, }) } } -struct FlowComponent<E: Component, P> { +struct FlowComponent<E: Component<Msg = FlowMsg>, P> { /// Component allocated on micropython heap. pub elem: Gc<E>, /// Clone. pub cloned: Option<Gc<E>>, - /// Function to convert message to `FlowMsg`. - pub func: fn(E::Msg) -> Option<FlowMsg>, - /// Nested FlowStore. pub next: P, } -impl<E: Component, P> FlowComponent<E, P> { +impl<E: Component<Msg = FlowMsg>, P> FlowComponent<E, P> { fn as_ref(&self) -> &E { &self.elem } @@ -132,7 +125,7 @@ impl<E: Component, P> FlowComponent<E, P> { impl<E, P> FlowStore for FlowComponent<E, P> where - E: Component + MaybeTrace + Swipable + Clone, + E: Component<Msg = FlowMsg> + MaybeTrace + Swipable + Clone, P: FlowStore, { fn place(&mut self, bounds: Rect) -> Rect { @@ -143,8 +136,7 @@ where fn event(&mut self, i: usize, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg> { if i == 0 { - let msg = self.as_mut().event(ctx, event); - msg.and_then(self.func) + self.as_mut().event(ctx, event) } else { self.next.event(i - 1, ctx, event) } @@ -201,19 +193,17 @@ where self.next.render_cloned(target); } - fn add<F: Component + MaybeTrace + Swipable + Clone>( + fn add<F: Component<Msg = FlowMsg> + MaybeTrace + Swipable + Clone>( self, elem: F, - func: fn(F::Msg) -> Option<FlowMsg>, ) -> Result<impl FlowStore, error::Error> where Self: Sized, { Ok(FlowComponent { elem: self.elem, - func: self.func, cloned: None, - next: self.next.add(elem, func)?, + next: self.next.add(elem)?, }) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs index 40afe365a8..66381204ee 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs @@ -6,7 +6,7 @@ use crate::{ ui::{ component::{ text::paragraphs::{Paragraph, Paragraphs}, - SwipeDirection, + ComponentExt, SwipeDirection, }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, @@ -86,7 +86,8 @@ impl ConfirmResetDevice { let paragraphs = Paragraphs::new(par_array); let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None); + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); let content_menu = Frame::left_aligned( "".into(), @@ -95,29 +96,29 @@ impl ConfirmResetDevice { theme::ICON_CANCEL )]))), ) - .with_cancel_button(); + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); let content_confirm = Frame::left_aligned( TR::reset__title_create_wallet.into(), PromptScreen::new_hold_to_confirm(), ) - .with_footer(TR::instructions__hold_to_confirm.into(), None); + .with_footer(TR::instructions__hold_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + _ => Some(FlowMsg::Cancelled), + }); let store = flow_store() // Intro, - .add(content_intro, |msg| { - matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info) - })? + .add(content_intro)? // Context Menu, - .add(content_menu, |msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - })? + .add(content_menu)? // Confirm prompt - .add(content_confirm, |msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), - _ => Some(FlowMsg::Cancelled), - })?; + .add(content_confirm)?; let res = SwipeFlow::new(ConfirmResetDevice::Intro, store)?; Ok(LayoutObj::new(res)?.into()) diff --git a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs index e3fc8b8b3f..43608ec2f0 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs @@ -5,7 +5,7 @@ use crate::{ ui::{ component::{ text::paragraphs::{Paragraph, Paragraphs}, - SwipeDirection, + ComponentExt, SwipeDirection, }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, @@ -88,7 +88,10 @@ impl CreateBackup { let paragraphs = Paragraphs::new(par_array); let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None); + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| { + matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) + }); let content_menu = Frame::left_aligned( "".into(), @@ -97,7 +100,12 @@ impl CreateBackup { theme::ICON_CANCEL )]))), ) - .with_cancel_button(); + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(_) => None, + }); let par_array_skip_intro: [Paragraph<'static>; 2] = [ Paragraph::new(&theme::TEXT_WARNING, TString::from_str("Not recommended!")), @@ -115,32 +123,28 @@ impl CreateBackup { .with_footer( TR::instructions__swipe_up.into(), Some(TR::words__continue_anyway.into()), - ); + ) + .map(|msg| match msg { + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); let content_skip_confirm = Frame::left_aligned( TR::backup__title_skip.into(), PromptScreen::new_tap_to_cancel(), ) - .with_footer(TR::instructions__tap_to_confirm.into(), None); + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); let store = flow_store() - .add(content_intro, |msg| { - matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) - })? - .add(content_menu, |msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), - FrameMsg::Button(_) => None, - })? - .add(content_skip_intro, |msg| match msg { - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), - _ => None, - })? - .add(content_skip_confirm, |msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), - _ => None, - })?; + .add(content_intro)? + .add(content_menu)? + .add(content_skip_intro)? + .add(content_skip_confirm)?; let res = SwipeFlow::new(CreateBackup::Intro, store)?; Ok(LayoutObj::new(res)?.into()) } diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 1169400755..2feeffa3b7 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -4,7 +4,7 @@ use crate::{ component::{ image::BlendedImage, text::paragraphs::{Paragraph, Paragraphs}, - Qr, SwipeDirection, Timeout, + ComponentExt, Qr, SwipeDirection, Timeout, }, flow::{ base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, @@ -115,8 +115,8 @@ impl GetAddress { ))), ) .with_subtitle("address".into()) - .with_menu_button(), - |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info), + .with_menu_button() + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)), )? .add( Frame::left_aligned( @@ -127,13 +127,13 @@ impl GetAddress { ("Cancel trans.", theme::ICON_CANCEL), ]))), ) - .with_cancel_button(), - |msg| match msg { + .with_cancel_button() + .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { Some(FlowMsg::Choice(i)) } FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }, + }), )? .add( Frame::left_aligned( @@ -143,8 +143,8 @@ impl GetAddress { true, )?), ) - .with_cancel_button(), - |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled), + .with_cancel_button() + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)), )? .add( Frame::left_aligned( @@ -154,8 +154,8 @@ impl GetAddress { StrBuffer::from("taproot xp"), ))), ) - .with_cancel_button(), - |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled), + .with_cancel_button() + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)), )? .add( Frame::left_aligned( @@ -165,8 +165,8 @@ impl GetAddress { StrBuffer::from("O rly?"), ))), ) - .with_cancel_button(), - |msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled), + .with_cancel_button() + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)), )? .add( IconDialog::new( @@ -179,8 +179,8 @@ impl GetAddress { ), StrBuffer::from("Confirmed"), Timeout::new(100), - ), - |_| Some(FlowMsg::Confirmed), + ) + .map(|_| Some(FlowMsg::Confirmed)), )?; let res = SwipeFlow::new(GetAddress::Address, store)?; Ok(LayoutObj::new(res)?.into()) From b05b54dfd81dff02e2e8a5393f17521e9004d718 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 30 Apr 2024 10:49:32 +0200 Subject: [PATCH 132/626] refactor(core/ui): VerticalMenu flexibility --- core/embed/rust/librust_qstr.h | 1 - .../src/ui/model_mercury/component/button.rs | 39 +++++++++++-------- .../model_mercury/component/vertical_menu.rs | 36 ++++++++--------- .../flow/confirm_reset_device.rs | 6 +-- .../ui/model_mercury/flow/create_backup.rs | 6 +-- .../src/ui/model_mercury/flow/get_address.rs | 10 ++--- .../embed/rust/src/ui/model_mercury/layout.rs | 22 ----------- core/mocks/generated/trezorui2.pyi | 6 --- 8 files changed, 46 insertions(+), 80 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 47e9d42acc..92dfe91e1e 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -536,7 +536,6 @@ static void _librust_qstrs(void) { MP_QSTR_show_share_words; MP_QSTR_show_simple; MP_QSTR_show_success; - MP_QSTR_show_tx_context_menu; MP_QSTR_show_wait_text; MP_QSTR_show_warning; MP_QSTR_sign; diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 8daa7129cb..9f66063666 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -503,7 +503,7 @@ pub enum CancelInfoConfirmMsg { #[derive(PartialEq, Eq, Clone)] pub struct IconText { - text: &'static str, + text: TString<'static>, icon: Icon, } @@ -512,12 +512,15 @@ impl IconText { const ICON_MARGIN: i16 = 4; const TEXT_MARGIN: i16 = 6; - pub fn new(text: &'static str, icon: Icon) -> Self { - Self { text, icon } + pub fn new(text: impl Into<TString<'static>>, icon: Icon) -> Self { + Self { + text: text.into(), + icon, + } } pub fn paint(&self, area: Rect, style: &ButtonStyle, baseline_offset: Offset) { - let width = style.font.text_width(self.text); + let width = self.text.map(|t| style.font.text_width(t)); let height = style.font.text_height(); let mut use_icon = false; @@ -543,13 +546,15 @@ impl IconText { } if use_text { - display::text_left( - text_pos, - self.text, - style.font, - style.text_color, - style.button_color, - ); + self.text.map(|t| { + display::text_left( + text_pos, + t, + style.font, + style.text_color, + style.button_color, + ) + }); } if use_icon { @@ -568,7 +573,7 @@ impl IconText { style: &ButtonStyle, baseline_offset: Offset, ) { - let width = style.font.text_width(self.text.as_ref()); + let width = self.text.map(|t| style.font.text_width(t)); let mut use_icon = false; let mut use_text = false; @@ -593,10 +598,12 @@ impl IconText { } if use_text { - shape::Text::new(text_pos, self.text) - .with_font(style.font) - .with_fg(style.text_color) - .render(target); + self.text.map(|t| { + shape::Text::new(text_pos, t) + .with_font(style.font) + .with_fg(style.text_color) + .render(target) + }); } if use_icon { diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index cd9c4fa54d..c75f36b2b0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -59,25 +59,23 @@ impl VerticalMenu { Self::new(buttons_vec) } - pub fn context_menu(options: Vec<(&'static str, Icon), N_ITEMS>) -> Self { - // FIXME: args should be TString when IconText has TString - let mut buttons_vec = VerticalMenuButtons::new(); - for opt in options { - let button_theme; - match opt.1 { - // FIXME: might not be applicable everywhere - theme::ICON_CANCEL => { - button_theme = theme::button_warning_high(); - } - _ => { - button_theme = theme::button_default(); - } - } - unwrap!(buttons_vec.push( - Button::with_icon_and_text(IconText::new(opt.0, opt.1)).styled(button_theme) - )); - } - Self::new(buttons_vec) + pub fn empty() -> Self { + Self::new(VerticalMenuButtons::new()) + } + + pub fn item(mut self, icon: Icon, text: TString<'static>) -> Self { + unwrap!(self.buttons.push( + Button::with_icon_and_text(IconText::new(text, icon)).styled(theme::button_default()) + )); + self + } + + pub fn danger(mut self, icon: Icon, text: TString<'static>) -> Self { + unwrap!(self.buttons.push( + Button::with_icon_and_text(IconText::new(text, icon)) + .styled(theme::button_warning_high()) + )); + self } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs index 66381204ee..9b84184fb9 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs @@ -11,7 +11,6 @@ use crate::{ flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, }; -use heapless::Vec; use super::super::{ component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, @@ -91,10 +90,7 @@ impl ConfirmResetDevice { let content_menu = Frame::left_aligned( "".into(), - VerticalMenu::context_menu(unwrap!(Vec::from_slice(&[( - "Cancel", // FIXME: use TString - theme::ICON_CANCEL - )]))), + VerticalMenu::empty().danger(theme::ICON_CANCEL, "Cancel".into()), ) .with_cancel_button() .map(|msg| match msg { diff --git a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs index 43608ec2f0..e15201deb8 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs @@ -10,7 +10,6 @@ use crate::{ flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, }; -use heapless::Vec; use super::super::{ component::{ @@ -95,10 +94,7 @@ impl CreateBackup { let content_menu = Frame::left_aligned( "".into(), - VerticalMenu::context_menu(unwrap!(Vec::from_slice(&[( - "Skip backup", // FIXME: use TString - theme::ICON_CANCEL - )]))), + VerticalMenu::empty().danger(theme::ICON_CANCEL, "Skip backup".into()), ) .with_cancel_button() .map(|msg| match msg { diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 2feeffa3b7..477d458c2d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -12,7 +12,6 @@ use crate::{ }, }, }; -use heapless::Vec; use super::super::{ component::{Frame, FrameMsg, IconDialog, VerticalMenu, VerticalMenuChoiceMsg}, @@ -121,11 +120,10 @@ impl GetAddress { .add( Frame::left_aligned( "".into(), - VerticalMenu::context_menu(unwrap!(Vec::from_slice(&[ - ("Address QR code", theme::ICON_QR_CODE), - ("Account info", theme::ICON_CHEVRON_RIGHT), - ("Cancel trans.", theme::ICON_CANCEL), - ]))), + VerticalMenu::empty() + .item(theme::ICON_QR_CODE, "Address QR code".into()) + .item(theme::ICON_CHEVRON_RIGHT, "Account info".into()) + .danger(theme::ICON_CANCEL, "Cancel operation".into()), ) .with_cancel_button() .map(|msg| match msg { diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 145798bbcf..db626dbef0 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1295,23 +1295,6 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_show_tx_context_menu(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], _kwargs: &Map| { - // TODO: this is just POC - let title: TString = "".into(); - let options = unwrap!(Vec::from_slice(&[ - ("Address QR code", theme::ICON_QR_CODE), - ("Fee info", theme::ICON_CHEVRON_RIGHT), - ("Cancel transaction", theme::ICON_CANCEL), - ])); - let content = VerticalMenu::context_menu(options); - let frame_with_menu = Frame::left_aligned(title, content).with_cancel_button(); - let obj = LayoutObj::new(frame_with_menu)?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -2040,11 +2023,6 @@ pub static mp_module_trezorui2: Module = obj_module! { /// iterable must be of exact size. Returns index in range `0..3`.""" Qstr::MP_QSTR_select_word => obj_fn_kw!(0, new_select_word).as_obj(), - /// def show_tx_context_menu() -> LayoutObj[int]: - /// """Show transaction context menu with the options for 1) Address QR code, 2) Fee - /// information, 3) Cancel transaction""" - Qstr::MP_QSTR_show_tx_context_menu => obj_fn_kw!(0, new_show_tx_context_menu).as_obj(), - // TODO: This is just POC /// def create_backup_flow() -> LayoutObj[UiResult] /// """Start create backup or skip flow.""" diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 9f5a2de495..e76fdea233 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -389,12 +389,6 @@ def select_word( iterable must be of exact size. Returns index in range `0..3`.""" -# rust/src/ui/model_mercury/layout.rs -def show_tx_context_menu() -> LayoutObj[int]: - """Show transaction context menu with the options for 1) Address QR code, 2) Fee - information, 3) Cancel transaction""" - - # rust/src/ui/model_mercury/layout.rs def create_backup_flow() -> LayoutObj[UiResult] """Start create backup or skip flow.""" From dc2525196b25d144ccc4877f23868d82a9caa7e5 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 30 Apr 2024 22:27:47 +0200 Subject: [PATCH 133/626] refactor(core/ui): T3T1 flow animation [no changelog] --- core/embed/rust/src/ui/component/image.rs | 1 - core/embed/rust/src/ui/component/map.rs | 9 +- core/embed/rust/src/ui/component/qr_code.rs | 1 - core/embed/rust/src/ui/component/timeout.rs | 1 - core/embed/rust/src/ui/flow/base.rs | 19 ++- core/embed/rust/src/ui/flow/flow.rs | 139 ++++++++++------- core/embed/rust/src/ui/flow/page.rs | 145 +++++++++++++----- core/embed/rust/src/ui/flow/store.rs | 53 +------ .../src/ui/model_mercury/component/dialog.rs | 1 - .../src/ui/model_mercury/component/frame.rs | 12 +- 10 files changed, 214 insertions(+), 167 deletions(-) diff --git a/core/embed/rust/src/ui/component/image.rs b/core/embed/rust/src/ui/component/image.rs index 1cae0794f8..300933b219 100644 --- a/core/embed/rust/src/ui/component/image.rs +++ b/core/embed/rust/src/ui/component/image.rs @@ -72,7 +72,6 @@ impl crate::trace::Trace for Image { } } -#[derive(Clone)] pub struct BlendedImage { bg: Icon, fg: Icon, diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 76aef9d928..7499b92465 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -1,7 +1,6 @@ use super::{Component, Event, EventCtx}; use crate::ui::{geometry::Rect, shape::Renderer}; -#[derive(Clone)] pub struct MsgMap<T, F> { inner: T, func: F, @@ -57,11 +56,11 @@ impl<T, F> crate::ui::flow::Swipable for MsgMap<T, F> where T: Component + crate::ui::flow::Swipable, { - fn can_swipe(&self, direction: crate::ui::component::SwipeDirection) -> bool { - self.inner.can_swipe(direction) + fn swipe_start(&mut self, ctx: &mut EventCtx, direction: super::SwipeDirection) -> bool { + self.inner.swipe_start(ctx, direction) } - fn swiped(&mut self, ctx: &mut EventCtx, direction: crate::ui::component::SwipeDirection) { - self.inner.swiped(ctx, direction) + fn swipe_finished(&self) -> bool { + self.inner.swipe_finished() } } diff --git a/core/embed/rust/src/ui/component/qr_code.rs b/core/embed/rust/src/ui/component/qr_code.rs index affe9320a1..a5ea3db96c 100644 --- a/core/embed/rust/src/ui/component/qr_code.rs +++ b/core/embed/rust/src/ui/component/qr_code.rs @@ -25,7 +25,6 @@ const CORNER_RADIUS: u8 = 4; const DARK: Color = Color::rgb(0, 0, 0); const LIGHT: Color = Color::rgb(0xff, 0xff, 0xff); -#[derive(Clone)] pub struct Qr { text: String<MAX_DATA>, border: i16, diff --git a/core/embed/rust/src/ui/component/timeout.rs b/core/embed/rust/src/ui/component/timeout.rs index 708a106aa6..aed7f508f0 100644 --- a/core/embed/rust/src/ui/component/timeout.rs +++ b/core/embed/rust/src/ui/component/timeout.rs @@ -7,7 +7,6 @@ use crate::{ }, }; -#[derive(Clone)] pub struct Timeout { time_ms: u32, timer: Option<TimerToken>, diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index 061f0ac85d..171e985aa2 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -16,18 +16,21 @@ impl SwipeDirection { } /// Component must implement this trait in order to be part of swipe-based flow. -/// The process of receiving a swipe is two-step, because in order to render the -/// transition animation Flow makes a copy of the pre-swipe state of the -/// component to render it along with the post-swipe state. +/// +/// Default implementation ignores every swipe. pub trait Swipable { - /// Return true if component can handle swipe in a given direction. - fn can_swipe(&self, _direction: SwipeDirection) -> bool { + /// Attempt a swipe. Return false if component in its current state doesn't + /// accept a swipe in the given direction. Start a transition animation + /// if true is returned. + fn swipe_start(&mut self, _ctx: &mut EventCtx, _direction: SwipeDirection) -> bool { false } - /// Make component react to swipe event. Only called if component returned - /// true in the previous function. - fn swiped(&mut self, _ctx: &mut EventCtx, _direction: SwipeDirection) {} + /// Return true when transition animation is finished. SwipeFlow needs to + /// know this in order to resume normal input processing. + fn swipe_finished(&self) -> bool { + true + } } /// Component::Msg for component parts of a flow. Converting results of diff --git a/core/embed/rust/src/ui/flow/flow.rs b/core/embed/rust/src/ui/flow/flow.rs index 29c9c178ea..e832b67d71 100644 --- a/core/embed/rust/src/ui/flow/flow.rs +++ b/core/embed/rust/src/ui/flow/flow.rs @@ -23,21 +23,28 @@ pub struct SwipeFlow<Q, S> { state: Q, /// FlowStore with all screens/components. store: S, - /// `Some` when state transition animation is in progress. - transition: Option<Transition<Q>>, + /// `Transition::None` when state transition animation is in not progress. + transition: Transition<Q>, /// Swipe detector. swipe: Swipe, /// Animation parameter. anim_offset: Offset, } -struct Transition<Q> { - /// State we are transitioning _from_. - prev_state: Q, - /// Animation progress. - animation: Animation<Offset>, - /// Direction of the slide animation. - direction: SwipeDirection, +enum Transition<Q> { + /// SwipeFlow is performing transition between different states. + External { + /// State we are transitioning _from_. + prev_state: Q, + /// Animation progress. + animation: Animation<Offset>, + /// Direction of the slide animation. + direction: SwipeDirection, + }, + /// Transition runs in child component, we forward events and wait. + Internal, + /// No transition. + None, } impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { @@ -45,14 +52,18 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { Ok(Self { state: init, store, - transition: None, + transition: Transition::None, swipe: Swipe::new().down().up().left().right(), anim_offset: Offset::zero(), }) } fn goto(&mut self, ctx: &mut EventCtx, direction: SwipeDirection, state: Q) { - self.transition = Some(Transition { + if state == self.state { + self.transition = Transition::Internal; + return; + } + self.transition = Transition::External { prev_state: self.state, animation: Animation::new( Offset::zero(), @@ -61,58 +72,71 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { Instant::now(), ), direction, - }); + }; self.state = state; ctx.request_anim_frame(); - ctx.request_paint() + ctx.request_paint(); } fn render_state<'s>(&'s self, state: Q, target: &mut impl Renderer<'s>) { self.store.render(state.index(), target) } - fn render_transition<'s>(&'s self, transition: &Transition<Q>, target: &mut impl Renderer<'s>) { - let off = transition.animation.value(Instant::now()); - - if self.state == transition.prev_state { - target.with_origin(off, &|target| { - self.store.render_cloned(target); - }); - } else { - target.with_origin(off, &|target| { - self.render_state(transition.prev_state, target); - }); - } - target.with_origin( - off - transition.direction.as_offset(self.anim_offset), - &|target| { - self.render_state(self.state, target); - }, - ); + fn render_transition<'s>( + &'s self, + prev_state: &Q, + animation: &Animation<Offset>, + direction: &SwipeDirection, + target: &mut impl Renderer<'s>, + ) { + let off = animation.value(Instant::now()); + target.with_origin(off, &|target| { + self.render_state(*prev_state, target); + }); + target.with_origin(off - direction.as_offset(self.anim_offset), &|target| { + self.render_state(self.state, target); + }); } - fn handle_transition(&mut self, ctx: &mut EventCtx) { - if let Some(transition) = &self.transition { - if transition.animation.finished(Instant::now()) { - self.transition = None; - unwrap!(self.store.clone(None)); // Free the clone. - - let msg = self.store.event(self.state.index(), ctx, Event::Attach); - assert!(msg.is_none()) - } else { - ctx.request_anim_frame(); + fn handle_transition(&mut self, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg> { + let i = self.state.index(); + let mut finished = false; + let result = match &self.transition { + Transition::External { animation, .. } + if matches!(event, Event::Timer(EventCtx::ANIM_FRAME_TIMER)) => + { + if animation.finished(Instant::now()) { + finished = true; + ctx.request_paint(); + self.store.event(i, ctx, Event::Attach) + } else { + ctx.request_anim_frame(); + ctx.request_paint(); + None + } } - ctx.request_paint(); + Transition::External { .. } => None, // ignore all events until animation finishes + Transition::Internal => { + let msg = self.store.event(i, ctx, event); + if self.store.map_swipable(i, |s| s.swipe_finished()) { + finished = true; + }; + msg + } + Transition::None => unreachable!(), + }; + if finished { + self.transition = Transition::None; } + return result; } fn handle_swipe_child(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> Decision<Q> { let i = self.state.index(); - if self.store.map_swipable(i, |s| s.can_swipe(direction)) { - // Before handling the swipe we make a copy of the original state so that we - // can render both states in the transition animation. - unwrap!(self.store.clone(Some(i))); - self.store.map_swipable(i, |s| s.swiped(ctx, direction)); + if self + .store + .map_swipable(i, |s| s.swipe_start(ctx, direction)) + { Decision::Goto(self.state, direction) } else { Decision::Nothing @@ -142,14 +166,8 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - // TODO: are there any events we want to send to all? timers perhaps? - if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { - self.handle_transition(ctx); - return None; - } - // Ignore events while transition is running. - if self.transition.is_some() { - return None; + if !matches!(self.transition, Transition::None) { + return self.handle_transition(ctx, event); } let mut decision = Decision::Nothing; @@ -173,10 +191,13 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { fn paint(&mut self) {} fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - if let Some(transition) = &self.transition { - self.render_transition(transition, target) - } else { - self.render_state(self.state, target) + match &self.transition { + Transition::None | Transition::Internal => self.render_state(self.state, target), + Transition::External { + prev_state, + animation, + direction, + } => self.render_transition(prev_state, animation, direction, target), } } } diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 8c986975b7..81bf465214 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -1,42 +1,101 @@ -use crate::ui::{ - component::{Component, Event, EventCtx, Paginate, SwipeDirection}, - flow::base::Swipable, - geometry::{Axis, Rect}, - shape::Renderer, +use crate::{ + micropython::gc::Gc, + time::{Duration, Instant}, + ui::{ + animation::Animation, + component::{Component, Event, EventCtx, Paginate, SwipeDirection}, + flow::base::Swipable, + geometry::{Axis, Offset, Rect}, + shape::Renderer, + }, }; +pub struct Transition<T> { + /// Clone of the component before page change. + cloned: Gc<T>, + /// Animation progress. + animation: Animation<Offset>, + /// Direction of the slide animation. + direction: SwipeDirection, +} + +const ANIMATION_DURATION: Duration = Duration::from_millis(333); + /// Allows any implementor of `Paginate` to be part of `Swipable` UI flow. -#[derive(Clone)] +/// Renders sliding animation when changing pages. pub struct SwipePage<T> { inner: T, + bounds: Rect, axis: Axis, pages: usize, current: usize, + transition: Option<Transition<T>>, } -impl<T> SwipePage<T> { +impl<T: Component + Paginate + Clone> SwipePage<T> { pub fn vertical(inner: T) -> Self { Self { inner, + bounds: Rect::zero(), axis: Axis::Vertical, pages: 1, current: 0, + transition: None, } } + + fn handle_transition(ctx: &mut EventCtx, event: Event, transition: &mut Transition<T>) -> bool { + let mut finished = false; + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if transition.animation.finished(Instant::now()) { + finished = true; + } else { + ctx.request_anim_frame(); + } + ctx.request_paint() + } + finished + } + + fn render_transition<'s>( + &'s self, + transition: &'s Transition<T>, + target: &mut impl Renderer<'s>, + ) { + let off = transition.animation.value(Instant::now()); + target.in_clip(self.bounds, &|target| { + target.with_origin(off, &|target| { + transition.cloned.render(target); + }); + target.with_origin( + off - transition.direction.as_offset(self.bounds.size()), + &|target| { + self.inner.render(target); + }, + ); + }); + } } -impl<T: Component + Paginate> Component for SwipePage<T> { +impl<T: Component + Paginate + Clone> Component for SwipePage<T> { type Msg = T::Msg; fn place(&mut self, bounds: Rect) -> Rect { - let result = self.inner.place(bounds); + self.bounds = self.inner.place(bounds); self.pages = self.inner.page_count(); - result + self.bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - let msg = self.inner.event(ctx, event); - msg + if let Some(t) = &mut self.transition { + let finished = Self::handle_transition(ctx, event, t); + if finished { + // FIXME: how to ensure the Gc allocation is returned? + self.transition = None + } + return None; + } + self.inner.event(ctx, event) } fn paint(&mut self) { @@ -44,33 +103,49 @@ impl<T: Component + Paginate> Component for SwipePage<T> { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + if let Some(t) = &self.transition { + return self.render_transition(t, target); + } self.inner.render(target) } } -impl<T: Component + Paginate> Swipable for SwipePage<T> { - fn can_swipe(&self, direction: SwipeDirection) -> bool { - match (self.axis, direction) { - (Axis::Horizontal, SwipeDirection::Up | SwipeDirection::Down) => false, - (Axis::Vertical, SwipeDirection::Left | SwipeDirection::Right) => false, - (_, SwipeDirection::Left | SwipeDirection::Up) => self.current + 1 < self.pages, - (_, SwipeDirection::Right | SwipeDirection::Down) => self.current > 0, - } - } - - fn swiped(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) { +impl<T: Component + Paginate + Clone> Swipable for SwipePage<T> { + fn swipe_start(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> bool { match (self.axis, direction) { - (Axis::Horizontal, SwipeDirection::Up | SwipeDirection::Down) => return, - (Axis::Vertical, SwipeDirection::Left | SwipeDirection::Right) => return, - (_, SwipeDirection::Left | SwipeDirection::Up) => { - self.current = (self.current + 1).min(self.pages - 1); - } - (_, SwipeDirection::Right | SwipeDirection::Down) => { - self.current = self.current.saturating_sub(1); + // Wrong direction + (Axis::Horizontal, SwipeDirection::Up | SwipeDirection::Down) => return false, + (Axis::Vertical, SwipeDirection::Left | SwipeDirection::Right) => return false, + // Begin + (_, SwipeDirection::Right | SwipeDirection::Down) if self.current == 0 => return false, + // End + (_, SwipeDirection::Left | SwipeDirection::Up) if self.current + 1 >= self.pages => { + return false } - } + _ => {} + }; + self.transition = Some(Transition { + cloned: unwrap!(Gc::new(self.inner.clone())), + animation: Animation::new( + Offset::zero(), + direction.as_offset(self.bounds.size()), + ANIMATION_DURATION, + Instant::now(), + ), + direction, + }); + self.current = match direction { + SwipeDirection::Left | SwipeDirection::Up => (self.current + 1).min(self.pages - 1), + SwipeDirection::Right | SwipeDirection::Down => self.current.saturating_sub(1), + }; self.inner.change_page(self.current); + ctx.request_anim_frame(); ctx.request_paint(); + true + } + + fn swipe_finished(&self) -> bool { + self.transition.is_none() } } @@ -85,7 +160,6 @@ where } /// Make any component swipable by ignoring all swipe events. -#[derive(Clone)] pub struct IgnoreSwipe<T>(T); impl<T> IgnoreSwipe<T> { @@ -114,12 +188,7 @@ impl<T: Component> Component for IgnoreSwipe<T> { } } -impl<T> Swipable for IgnoreSwipe<T> { - fn can_swipe(&self, _direction: SwipeDirection) -> bool { - false - } - fn swiped(&mut self, _ctx: &mut EventCtx, _direction: SwipeDirection) {} -} +impl<T> Swipable for IgnoreSwipe<T> {} #[cfg(feature = "ui_debug")] impl<T> crate::trace::Trace for IgnoreSwipe<T> diff --git a/core/embed/rust/src/ui/flow/store.rs b/core/embed/rust/src/ui/flow/store.rs index cc116f7f9b..fef7e58a0a 100644 --- a/core/embed/rust/src/ui/flow/store.rs +++ b/core/embed/rust/src/ui/flow/store.rs @@ -14,9 +14,6 @@ use crate::micropython::gc::Gc; /// `FlowStore` is essentially `Vec<Gc<dyn Component + Swipable>>` except that /// `trait Component` is not object-safe so it ends up being a kind of /// recursively-defined tuple. -/// -/// Additionally the store makes it possible to make a clone of one of its -/// items, in order to make it possible to render transition animations. pub trait FlowStore { /// Call `Component::place` on all elements. fn place(&mut self, bounds: Rect) -> Rect; @@ -34,14 +31,8 @@ pub trait FlowStore { /// Forward `Swipable` methods to i-th element. fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T; - /// Make a clone of i-th element, or free all clones if None is given. - fn clone(&mut self, i: Option<usize>) -> Result<(), error::Error>; - - /// Call `Component::render` on the cloned element. - fn render_cloned<'s>(&'s self, target: &mut impl Renderer<'s>); - /// Add a Component to the end of a `FlowStore`. - fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable + Clone>( + fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( self, elem: E, ) -> Result<impl FlowStore, error::Error> @@ -80,12 +71,7 @@ impl FlowStore for FlowEmpty { panic!() } - fn clone(&mut self, _i: Option<usize>) -> Result<(), error::Error> { - Ok(()) - } - fn render_cloned<'s>(&'s self, _target: &mut impl Renderer<'s>) {} - - fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable + Clone>( + fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( self, elem: E, ) -> Result<impl FlowStore, error::Error> @@ -94,7 +80,6 @@ impl FlowStore for FlowEmpty { { Ok(FlowComponent { elem: Gc::new(elem)?, - cloned: None, next: Self, }) } @@ -104,9 +89,6 @@ struct FlowComponent<E: Component<Msg = FlowMsg>, P> { /// Component allocated on micropython heap. pub elem: Gc<E>, - /// Clone. - pub cloned: Option<Gc<E>>, - /// Nested FlowStore. pub next: P, } @@ -125,7 +107,7 @@ impl<E: Component<Msg = FlowMsg>, P> FlowComponent<E, P> { impl<E, P> FlowStore for FlowComponent<E, P> where - E: Component<Msg = FlowMsg> + MaybeTrace + Swipable + Clone, + E: Component<Msg = FlowMsg> + MaybeTrace + Swipable, P: FlowStore, { fn place(&mut self, bounds: Rect) -> Rect { @@ -167,33 +149,7 @@ where } } - fn clone(&mut self, i: Option<usize>) -> Result<(), error::Error> { - match i { - None => { - // FIXME: how to ensure the allocation is returned? - self.cloned = None; - self.next.clone(None)? - } - Some(0) => { - self.cloned = Some(Gc::new(self.as_ref().clone())?); - self.next.clone(None)? - } - Some(i) => { - self.cloned = None; - self.next.clone(Some(i - 1))? - } - } - Ok(()) - } - - fn render_cloned<'s>(&'s self, target: &mut impl Renderer<'s>) { - if let Some(cloned) = &self.cloned { - cloned.render(target) - } - self.next.render_cloned(target); - } - - fn add<F: Component<Msg = FlowMsg> + MaybeTrace + Swipable + Clone>( + fn add<F: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( self, elem: F, ) -> Result<impl FlowStore, error::Error> @@ -202,7 +158,6 @@ where { Ok(FlowComponent { elem: self.elem, - cloned: None, next: self.next.add(elem)?, }) } diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index 68cee9a3a2..55947f4abc 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -97,7 +97,6 @@ where } } -#[derive(Clone)] pub struct IconDialog<U> { image: Child<BlendedImage>, paragraphs: Paragraphs<ParagraphVecShort<'static>>, diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index c42c9352b3..0da98964fb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -250,11 +250,15 @@ impl<T> crate::ui::flow::Swipable for Frame<T> where T: Component + crate::ui::flow::Swipable, { - fn can_swipe(&self, direction: crate::ui::component::SwipeDirection) -> bool { - self.inner().can_swipe(direction) + fn swipe_start( + &mut self, + ctx: &mut EventCtx, + direction: crate::ui::component::SwipeDirection, + ) -> bool { + self.update_content(ctx, |ctx, inner| inner.swipe_start(ctx, direction)) } - fn swiped(&mut self, ctx: &mut EventCtx, direction: crate::ui::component::SwipeDirection) { - self.update_content(ctx, |ctx, inner| inner.swiped(ctx, direction)) + fn swipe_finished(&self) -> bool { + self.inner().swipe_finished() } } From 8f4e0cc8855a8e812bd22a8fa45a62b56503e011 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 24 Apr 2024 23:45:11 +0200 Subject: [PATCH 134/626] feat(core/ui): add text align to T3T1 button --- .../src/ui/model_mercury/component/button.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 9f66063666..70ff0ae38c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -9,7 +9,7 @@ use crate::{ }, display::{self, toif::Icon, Color, Font}, event::TouchEvent, - geometry::{Alignment2D, Insets, Offset, Point, Rect}, + geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, shape, shape::Renderer, }, @@ -30,6 +30,7 @@ pub struct Button { touch_expand: Option<Insets>, content: ButtonContent, styles: ButtonStyleSheet, + text_align: Alignment, state: State, long_press: Option<Duration>, long_timer: Option<TimerToken>, @@ -47,6 +48,7 @@ impl Button { area: Rect::zero(), touch_expand: None, styles: theme::button_default(), + text_align: Alignment::Start, state: State::Initial, long_press: None, long_timer: None, @@ -78,6 +80,11 @@ impl Button { self } + pub const fn with_text_align(mut self, align: Alignment) -> Self { + self.text_align = align; + self + } + pub const fn with_expanded_touch_area(mut self, expand: Insets) -> Self { self.touch_expand = Some(expand); self @@ -217,11 +224,19 @@ impl Button { match &self.content { ButtonContent::Empty => {} ButtonContent::Text(text) => { - let start_of_baseline = self.area.left_center() + Self::BASELINE_OFFSET; + let y_offset = Offset::y(self.style().font.allcase_text_height() / 2); + let start_of_baseline = match self.text_align { + Alignment::Start => { + self.area.left_center() + Offset::x(Self::BASELINE_OFFSET.x) + } + Alignment::Center => self.area.center(), + Alignment::End => self.area.right_center() - Offset::x(Self::BASELINE_OFFSET.x), + } + y_offset; text.map(|text| { shape::Text::new(start_of_baseline, text) .with_font(style.font) .with_fg(style.text_color) + .with_align(self.text_align) .render(target); }); } From 0566f0b7c3ec423e307cb42629b000cffc3da594 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 24 Apr 2024 23:46:02 +0200 Subject: [PATCH 135/626] feat(core/ui): T3T1 word count choice --- .../component/keyboard/word_count.rs | 19 +++++++++++----- .../rust/src/ui/model_mercury/theme/mod.rs | 22 +++++++++---------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs index bdccf58bf9..fbda9ca84e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -1,6 +1,6 @@ use crate::ui::{ component::{Component, Event, EventCtx}, - geometry::{Grid, GridCellSpan, Rect}, + geometry::{Alignment, Grid, GridCellSpan, Rect}, model_mercury::{ component::button::{Button, ButtonMsg}, theme, @@ -10,7 +10,7 @@ use crate::ui::{ const NUMBERS: [u32; 5] = [12, 18, 20, 24, 33]; const LABELS: [&str; 5] = ["12", "18", "20", "24", "33"]; -const CELLS: [(usize, usize); 5] = [(0, 0), (0, 2), (0, 4), (1, 0), (1, 2)]; +const CELLS: [(usize, usize); 5] = [(0, 0), (0, 2), (1, 0), (1, 2), (2, 1)]; pub struct SelectWordCount { button: [Button; NUMBERS.len()], @@ -23,7 +23,11 @@ pub enum SelectWordCountMsg { impl SelectWordCount { pub fn new() -> Self { SelectWordCount { - button: LABELS.map(|t| Button::with_text(t.into()).styled(theme::button_pin())), + button: LABELS.map(|t| { + Button::with_text(t.into()) + .styled(theme::button_pin()) + .with_text_align(Alignment::Center) + }), } } } @@ -32,8 +36,13 @@ impl Component for SelectWordCount { type Msg = SelectWordCountMsg; fn place(&mut self, bounds: Rect) -> Rect { - let (_, bounds) = bounds.split_bottom(2 * theme::BUTTON_HEIGHT + theme::BUTTON_SPACING); - let grid = Grid::new(bounds, 2, 6).with_spacing(theme::BUTTON_SPACING); + let n_rows: usize = 3; + let n_cols: usize = 4; + + let (_, bounds) = bounds.split_bottom( + n_rows as i16 * theme::BUTTON_HEIGHT + (n_rows as i16 - 1) * theme::BUTTON_SPACING, + ); + let grid = Grid::new(bounds, n_rows, n_cols).with_spacing(theme::BUTTON_SPACING); for (btn, (x, y)) in self.button.iter_mut().zip(CELLS) { btn.place(grid.cells(GridCellSpan { from: (x, y), diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 93afbb9215..48f28f81b2 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -388,22 +388,22 @@ pub const fn button_reset() -> ButtonStyleSheet { pub const fn button_pin() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::MONO, - text_color: FG, - button_color: GREY_DARK, + font: Font::NORMAL, + text_color: GREY_LIGHT, + button_color: GREY_EXTRA_DARK, icon_color: GREY_LIGHT, background_color: BG, }, active: &ButtonStyle { - font: Font::MONO, - text_color: FG, - button_color: GREY_MEDIUM, + font: Font::NORMAL, + text_color: GREY_LIGHT, + button_color: GREY_EXTRA_DARK, icon_color: GREY_LIGHT, background_color: BG, }, disabled: &ButtonStyle { - font: Font::MONO, - text_color: GREY_LIGHT, + font: Font::NORMAL, + text_color: GREY_DARK, button_color: BG, // so there is no "button" itself, just the text icon_color: GREY_LIGHT, background_color: BG, @@ -639,9 +639,9 @@ pub const TEXT_CHECKLIST_DONE: TextStyle = TextStyle::new(Font::NORMAL, GREEN_DARK, BG, GREY_LIGHT, GREY_LIGHT); pub const CONTENT_BORDER: i16 = 0; -pub const BUTTON_HEIGHT: i16 = 50; -pub const BUTTON_WIDTH: i16 = 56; -pub const BUTTON_SPACING: i16 = 6; +pub const BUTTON_HEIGHT: i16 = 62; +pub const BUTTON_WIDTH: i16 = 78; +pub const BUTTON_SPACING: i16 = 2; pub const KEYBOARD_SPACING: i16 = BUTTON_SPACING; pub const CHECKLIST_SPACING: i16 = 10; pub const RECOVERY_SPACING: i16 = 18; From 6486b0324853a17d2178eece78051fd93bdfb64c Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 25 Apr 2024 15:26:58 +0200 Subject: [PATCH 136/626] feat(core/ui): T3T1 mnemonic keyboard These are initial changes to the mnemonic keyboard designs. The designs themselves from Figma are still WIP. --- .../model_mercury/component/keyboard/bip39.rs | 9 +-- .../component/keyboard/mnemonic.rs | 57 ++++++++++-------- .../component/keyboard/slip39.rs | 6 +- .../src/ui/model_mercury/res/autofill30.png | Bin 542 -> 534 bytes .../src/ui/model_mercury/res/autofill30.toif | Bin 150 -> 158 bytes .../ui/model_mercury/res/confirm_input30.png | Bin 0 -> 526 bytes .../ui/model_mercury/res/confirm_input30.toif | Bin 0 -> 169 bytes .../src/ui/model_mercury/res/delete30.png | Bin 484 -> 389 bytes .../src/ui/model_mercury/res/delete30.toif | Bin 139 -> 117 bytes .../rust/src/ui/model_mercury/theme/mod.rs | 25 ++++---- 10 files changed, 54 insertions(+), 43 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/res/confirm_input30.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/confirm_input30.toif diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index 8aba67d343..81e01c2fc7 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -196,7 +196,7 @@ impl Component for Bip39Input { let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); shape::ToifImage::new(icon_center, icon.toif) .with_align(Alignment2D::CENTER) - .with_fg(style.text_color) + .with_fg(style.icon_color) .render(target); } } @@ -227,7 +227,8 @@ impl Bip39Input { // Styling the input to reflect already filled word Self { - button: Button::with_icon(theme::ICON_LIST_CHECK).styled(theme::button_pin_confirm()), + button: Button::with_icon(theme::ICON_CONFIRM_INPUT) + .styled(theme::button_pin_confirm()), textbox: TextBox::new(unwrap!(String::try_from(word))), multi_tap: MultiTapKeyboard::new(), options_num: bip39::options_num(word), @@ -293,7 +294,7 @@ impl Bip39Input { self.button.enable(ctx); self.button.set_stylesheet(ctx, theme::button_pin_confirm()); self.button - .set_content(ctx, ButtonContent::Icon(theme::ICON_LIST_CHECK)); + .set_content(ctx, ButtonContent::Icon(theme::ICON_CONFIRM_INPUT)); self.button_suggestion .set_stylesheet(ctx, theme::button_suggestion_confirm()); } else { @@ -302,7 +303,7 @@ impl Bip39Input { self.button .set_stylesheet(ctx, theme::button_pin_autocomplete()); self.button - .set_content(ctx, ButtonContent::Icon(theme::ICON_CLICK)); + .set_content(ctx, ButtonContent::Icon(theme::ICON_AUTOFILL)); self.button_suggestion .set_stylesheet(ctx, theme::button_suggestion_autocomplete()); } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index def0f6897b..839dbbcd91 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -2,7 +2,7 @@ use crate::{ strutil::TString, ui::{ component::{maybe::paint_overlapping, Child, Component, Event, EventCtx, Label, Maybe}, - geometry::{Alignment2D, Grid, Offset, Rect}, + geometry::{Alignment, Grid, Rect}, model_mercury::{ component::{Button, ButtonMsg, Swipe, SwipeDirection}, theme, @@ -44,23 +44,23 @@ where Self { prompt: Child::new(Maybe::new( theme::BG, - Label::centered(prompt, theme::label_keyboard_prompt()), + Label::centered(prompt, theme::TEXT_MAIN_GREY_LIGHT), prompt_visible, )), back: Child::new(Maybe::new( theme::BG, - Button::with_icon_blend( - theme::IMAGE_BG_BACK_BTN_TALL, - theme::ICON_BACK, - Offset::new(30, 17), - ) - .styled(theme::button_reset()) - .with_long_press(theme::ERASE_HOLD_DURATION), + Button::with_icon(theme::ICON_DELETE) + .styled(theme::button_default()) + .with_long_press(theme::ERASE_HOLD_DURATION), !prompt_visible, )), input: Child::new(Maybe::new(theme::BG, input, !prompt_visible)), keys: T::keys() - .map(|t| Button::with_text(t.into()).styled(theme::button_pin())) + .map(|t| { + Button::with_text(t.into()) + .styled(theme::button_pin()) + .with_text_align(Alignment::Center) + }) .map(Child::new), swipe: Swipe::new().right(), can_go_back, @@ -109,23 +109,27 @@ where type Msg = MnemonicKeyboardMsg; fn place(&mut self, bounds: Rect) -> Rect { - let (_, bounds) = bounds - .inset(theme::borders()) - .split_bottom(4 * theme::MNEMONIC_BUTTON_HEIGHT + 3 * theme::KEYBOARD_SPACING); - let grid = Grid::new(bounds, 4, 3).with_spacing(theme::KEYBOARD_SPACING); - let back_area = grid.row_col(0, 0); - let input_area = grid.row_col(0, 1).union(grid.row_col(0, 3)); - - let prompt_center = grid.row_col(0, 0).union(grid.row_col(0, 3)).center(); - let prompt_size = self.prompt.inner().inner().max_size(); - let prompt_area = Rect::snap(prompt_center, prompt_size, Alignment2D::CENTER); + let height_input_area: i16 = 30; + let space_top: i16 = 8; + let (remaining, keyboard_area) = + bounds.split_bottom(3 * theme::BUTTON_HEIGHT + 2 * theme::KEYBOARD_SPACING); + let prompt_area = remaining + .split_top(space_top) + .1 + .split_top(height_input_area) + .0; + assert!(prompt_area.height() == height_input_area); + + let (back_btn_area, input_area) = prompt_area.split_left(30); + let keyboard_grid = Grid::new(keyboard_area, 3, 3).with_spacing(theme::KEYBOARD_SPACING); self.swipe.place(bounds); self.prompt.place(prompt_area); - self.back.place(back_area); + self.back.place(back_btn_area); self.input.place(input_area); + for (key, btn) in self.keys.iter_mut().enumerate() { - btn.place(grid.cell(key + grid.cols)); // Start in the second row. + btn.place(keyboard_grid.cell(key)); } bounds } @@ -185,9 +189,12 @@ where } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.prompt.render(target); - self.input.render(target); - self.back.render(target); + if self.input.inner().inner().is_empty() { + self.prompt.render(target); + } else { + self.input.render(target); + self.back.render(target); + } for btn in &self.keys { btn.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index 2aba48275a..5160e7ddc8 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -181,7 +181,7 @@ impl Component for Slip39Input { icon.draw( icon_center, Alignment2D::CENTER, - style.text_color, + style.icon_color, style.button_color, ); } @@ -247,7 +247,7 @@ impl Component for Slip39Input { let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); shape::ToifImage::new(icon_center, icon.toif) .with_align(Alignment2D::CENTER) - .with_fg(style.text_color) + .with_fg(style.icon_color) .render(target); } } @@ -356,7 +356,7 @@ impl Slip39Input { // Confirm button. self.button.enable(ctx); self.button - .set_content(ctx, ButtonContent::Icon(theme::ICON_LIST_CHECK)); + .set_content(ctx, ButtonContent::Icon(theme::ICON_CONFIRM_INPUT)); } else { // Disabled button. self.button.disable(ctx); diff --git a/core/embed/rust/src/ui/model_mercury/res/autofill30.png b/core/embed/rust/src/ui/model_mercury/res/autofill30.png index 16cd93f3aad96f9335cac1ec45721598e13f22e5..67c67a7b7a1c218a560dfda11de97da751390b86 100644 GIT binary patch literal 534 zcmV+x0_pvUP)<h;3K|Lk000e1NJLTq0015U0015c1ONa4kvV2500004XF*Lt006O% z3;baP00002VoOIv0RM-N%)bBt010qNS#tmY3ljhU3ljkVnw%H_00F8=L_t(I%hi-I zR>D9KhX2`EP=*t@bar58CloyF<OaeCB+<qS=y(qZ+yJO7#S$B!qcfa<Z~~Un!mLda zvdQL2%T&p{_sz`z@9qE>8Kg`0P2(A5aBu(uuK!8%7w-&s$Z3MIrs7m~lLZX*chF+* zxY5p7qDJ-SYm*5(ZR#PHDKSS6H7wRzc+jHWzaEvV$5Z!6^N`aw%rh(&@;21YqGU&d zdMr-`xJu5XNuu+R(=Oe_w_eA<$dpTz;(5wjBGy^fbrZ5809b-5YWLrkGB$hE>T5V{ z9nS8Rv7JMt*z;#f_qpu?iQzrF5Qk-?r(k({n@6TRgx@x)ZiglzEBw@HTm^>h={o4V z94KQObIS#QzDXZZQYbL(5WwK99b;!9YQ&C9ZWXuvHFPnx8)+1fa|JfWT9sQJ3K#(# z-EC*7dBvWr_#%m7YBv?l05xU$VQ|_R$%2Bq;b(MImWM9RiSFqh#0oDqHPS911+`;u zUYTmKsvU8cxl07zY-L@f7T}2c9ePTWa?Kjai>qC|BQEQ*PDPl2+{2?48@I$+j$A_g Y0S!urym_a7t^fc407*qoM6N<$f<IK|h5!Hn literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^QXtF$Bp7-Wg@u3=Q<As43&a2R{xkc5JoXY#Usv`Q z%xq%%T>G*lJ~1#b>Up|2hG?8`owTs{kby|M{iP!Jqb|zZcKiA?I5Zr&Ce}DNA+PL@ zZNwRt$+I0w$~zRpIg^^WTqdmaIa)S5!`tXa-uWl7`=<Y?J6Zi9-Q<-@hn3NifY-hM zI-l&QUEwGEc0tCCqCBIMTnCst-1li;dNV0hLrT{A#SB@F35SErH?lBpyn0i;@@Y8_ zljVk^n^U4TmNhJRp0yxb?4jW#v9Cp`W`7wLO#BtYB(f@ndFhuDAts^u3<=w|x_|v6 z$04}?&+G7=Kb|NSY+t`^zQ`xB0}mEEE3Byd9;m3UctEak@uAPrz7fh1mM4VFDr!pJ z9M(IRr!{F=#RT42rdIFSQiE(HYz*e#75?A-eN+5yx8EImbYAP_cfVf7+;#NQIX0th zYfnCVcY|Tm{oPp;U%$EfA-{%sesr*-($15~z`#^3ag8WRNi0dVN-jzTQVd20Mkcxj z#<~V(Ax1`4#)eiV#@Yr3Rt5%-yowl6H00)|WTsW()-YN8)Lx(l4Y&;@nYpROC5gEO dXnIV{tqctymdw<j6%W+I;OXk;vd$@?2>`FU(5V0b diff --git a/core/embed/rust/src/ui/model_mercury/res/autofill30.toif b/core/embed/rust/src/ui/model_mercury/res/autofill30.toif index 5551d07fe6bcd8545ed1882ac51ff61596a80bc0..712fb68e25660d9a15a1ab494adf9a493f1151c4 100644 GIT binary patch literal 158 zcmV;P0Ac@BPf14}03HC60001EU?3GZlyzhX!+D7vARr3m8FWAZGlbg$<$9n<LZutw zTnP}j6~tmM1QHoQo&Z!`JCKBHWo0M;k}M1i2{2QE(rgS24ILfsE-o&NAZd0mml0xr zM+XNIR{+c{KvK*BGb#dRlmn7Q%wQAX&Hx$G2I7hrKy+Yu0nLMG-bW7{hCnb+3?7t* MZ5`<>Bu57W0Pd|ZTL1t6 literal 150 zcmV;H0BQeJPf14_02%;_0001EU_b*7WgQv9P<CPm2#A8&1|1N<4C1svIUYz7V5vqp zM}mQ&6+~B*0Er9+0f?YLJCKBGv0x|!k}L^O%^)eZ2B6xsv@|i06g!Z^1h!kDqk{v5 zQ-Gw51H}LbB%_%bz#I;+rHl-1AWlXxkcdEYD2f+QJcsIShCnb|3>rL!Z5`<>=;6lz E073jTQvd(} diff --git a/core/embed/rust/src/ui/model_mercury/res/confirm_input30.png b/core/embed/rust/src/ui/model_mercury/res/confirm_input30.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7148c8c6447b2897a02379ed7ea884ccc10c4e GIT binary patch literal 526 zcmV+p0`dKcP)<h;3K|Lk000e1NJLTq0015U0015c1ONa4kvV2500004XF*Lt006O% z3;baP00002VoOIv0RM-N%)bBt010qNS#tmY3ljhU3ljkVnw%H_00E*&L_t(I%hgn? zcEUgqy|Yvx^9K#CuHfoQ1c$ov2Zb+y1XV@iIEP322jFU{qz2+}g)ivx1r4&IY(<_M zHW160-JPAgbLXC&0j|<W<s50HF6z*s1Msmue$b-N3xFp&%}`goI2TU#fs%Y2_t-n` zlpL$nZv1|3a>3I94N=Z5u}n`*EIlQ7+@s+|jp~g<l0B|@qSF_&0uuY87S+yTr(FmN zXf%tqEYACqp9_XXa1!dSCV@rkOfJ(}1D2gQ{(2IaJ?BClYaYm%xY(myb2S|=cJRZU z7i661Y>*1jWpG+7qhF;OH~`Mtp&~0OA_GntZ2^;$0ZxX=0f5{nT(+B#-kxq_(p@-! z$x#W;(*d$_`ch{4PF>m4RDGis><koQCxMTibQ{AbddWSdD;8nOU~x6^lZluM2cVUz zTB?LvM2_i7*~KcGTb+#B)QM!cU_QkkH3pkJ^?T2m6Ho@EeqL^xbdkDarFvePB+GU4 zfQQ^!;^Wnl#>L41boHaHYER*@c0xD@96TUeqDA-60I>(BHGAt7lk*zvA0sAtTZE{B Q2LJ#707*qoM6N<$f}eWceE<Le literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/confirm_input30.toif b/core/embed/rust/src/ui/model_mercury/res/confirm_input30.toif new file mode 100644 index 0000000000000000000000000000000000000000..a34c5e9522cd84e8941ef9341ed9a5122ca010cb GIT binary patch literal 169 zcmV;a09OB0Pf14}03HCH0001$(LEEwAPffJx60Ly+<AWd1V_7d?AX=Ku}*fB#aXLD zezuSxo}5cF@q`N`08EYcO2abgL?KpDdy<$7pOM|qX579fZUbM5gO`r$nLpxN+Tcc{ zfL^HZASw}(<a}8uS}=FoZD2erW(8Bg3NO-5OTwPd!5COdx`TF~E_pb^w-uf?HF^9q XLN;JFe*QQ(u-54*YfEP}`8)6iXyr|K literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/delete30.png b/core/embed/rust/src/ui/model_mercury/res/delete30.png index 3366c070489fadaec7c25bc7e67fc68886c7f3c6..9e30374a889911268ec1d631ab0fc6c615e68537 100644 GIT binary patch literal 389 zcmV;00eb$4P)<h;3K|Lk000e1NJLTq0015U0015c1ONa4kvV2500004XF*Lt006O% z3;baP00002VoOIv0RM-N%)bBt010qNS#tmY3ljhU3ljkVnw%H_009|EL_t(I%k7lS zaf2`rMxUSoN}z<40F_{O0CMh_vjMw<$Q7gn+ZDv=z$Lf>l!Guoo+T!kOite0uJp8@ zzSRhx@qeMDVx5x`i2JXcoBgYqfH#5vPV}JVS{DMm3H$>uj|JO!bp-D>D5xApa25I= zBec+ptjjX3D7q{f$*w|mARL~q6+pe<4OnUeP}||EH-$o(0%*hXhPui?{1gh{Ez*6T z)d^;-%L9;6Xv{8=(f07~U2XbN3eU-Pj=6|zd)Myn5}aK`JZl|JoOo>pgBy$4hE^U` zg6XXjM<sQyb0|}1Q)9~1Rm9E!+rZ9zp7ykg?%d9<D&{-~R;DxT$9Una6hDJ%r;@49 jz<#Q=KF(41jK7U9t4vygLJ!oB00000NkvXXu0mjf#QdY& literal 484 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W20VEhAUrNRRDW)WEcNd2L?fqx=19|Kvp1!W^ zFPPcH^ttwBNqhndeera04AD4WI!WLEu!BVV{BLP~J^{{$Iy*xhnr2#@4VP$YxfN-5 z{>!A!G@)kIgMF$UVLn?v2~60+H?6_pOIhvlP4g=zpPu~v`@h{CdyjGMoh8-r$NBs* zkFEWzrxv$gWOVX><yKj8uzu<KkD5nj1~R>!XXozlGsmPsx?{~(?sxNi&t2zn;BQ&j zXqw4aC#9OD>e;D%;2vYZ@!*SXXMb@ViTWni%CKNt_~8aK%ZBXr*8X3AizV!2sSbWr zHa*sM-}CqLLKBQ<J3h5lOqpjsSySS3u{Fzz#gna*1(^?p#jSktPC<$*s`kfk*@I;p z-?FRP{ty=Zz`onaO)=uXS`X0wswJ)wB`Jv|saDBFsX&Us$iT=%*T7iUz%0bb$jaEz z%D__Fz`)AD;820`Rum1n`6-!cmAEx*)}74>)Sv;kp(HamwYVfPw*XC#iMf@b0mPD- T`m^GJdKf%i{an^LB{Ts5DgUyS diff --git a/core/embed/rust/src/ui/model_mercury/res/delete30.toif b/core/embed/rust/src/ui/model_mercury/res/delete30.toif index 925396407b17a55886b1f3c832d5b2c3ae9b92d5..eea1cf0df2d0ae34ab434f6ce7ced7b2d81a6d42 100644 GIT binary patch literal 117 zcmV-*0E+)qPf14}03HBo0001EV4x{z=>P*W2rr=n3RuA0b{JO!#4CXDIx>Jf0idLZ zK}QEO&;%g25Gc&S&}_lb0OEoqJ1iIsm>HTu+(NJ}W(EeJ`VN?}77QRsOfH&YG^5Zg XLU#t5Baysd!GI#og5rHOS_Uxy^(-mU literal 139 zcmV;60CfLUPf14`02Ba!0000@&#?*uF%SgMAtu`T34)-OK^tqU^jf5}yi%}9?V&fH z?ad}=rdb}dfh+)QP8J8{&YHdOXyBm-S3T$q=QoGvJPa9Q#*6f}w!{^YO!ZBGz#E%{ t^f6>$oQIzpqy%X|43al3BEwphR4(LhQf1x$zdsf9a-B-O`DpiVfiKp*K9>Lh diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 48f28f81b2..1aeb18bc67 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -88,6 +88,7 @@ include_icon!(ICON_WARNING, "model_mercury/res/warning24.toif"); // 30x30 include_icon!(ICON_AUTOFILL, "model_mercury/res/autofill30.toif"); include_icon!(ICON_CLOSE, "model_mercury/res/close30.toif"); +include_icon!(ICON_CONFIRM_INPUT, "model_mercury/res/confirm_input30.toif"); include_icon!(ICON_DELETE, "model_mercury/res/delete30.toif"); include_icon!(ICON_MENU, "model_mercury/res/menu30.toif"); include_icon!( @@ -411,27 +412,29 @@ pub const fn button_pin() -> ButtonStyleSheet { } } +// TODO: will button_pin_xyz styles be the same for PIN and Mnemonic keyboard? +// Wait for Figma pub const fn button_pin_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: GREEN, - icon_color: GREY_LIGHT, + button_color: BG, + icon_color: GREEN_LIGHT, background_color: BG, }, active: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: GREEN_DARK, - icon_color: GREY_LIGHT, + button_color: GREY_DARK, + icon_color: GREEN_LIGHT, background_color: BG, }, disabled: &ButtonStyle { font: Font::MONO, - text_color: GREY_LIGHT, - button_color: GREY_DARK, - icon_color: GREY_LIGHT, + text_color: FG, + button_color: BG, + icon_color: GREEN_LIGHT, background_color: BG, }, } @@ -442,20 +445,20 @@ pub const fn button_pin_autocomplete() -> ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: GREY_DARK, // same as PIN buttons + button_color: BG, icon_color: GREY_LIGHT, background_color: BG, }, active: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: GREEN_DARK, + button_color: BG, icon_color: GREY_LIGHT, background_color: BG, }, disabled: &ButtonStyle { font: Font::MONO, - text_color: GREY_LIGHT, + text_color: FG, button_color: BG, icon_color: GREY_LIGHT, background_color: BG, @@ -467,7 +470,7 @@ pub const fn button_suggestion_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, - text_color: GREEN_DARK, + text_color: GREY_LIGHT, button_color: GREEN, icon_color: GREY_LIGHT, background_color: BG, From 4471281adc7059262b21dea76177a17f854bda05 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 25 Apr 2024 23:41:16 +0200 Subject: [PATCH 137/626] feat(core/ui): improve T3T1 recovery --- core/embed/rust/librust_qstr.h | 1 + .../flow/confirm_reset_device.rs | 11 +-- .../embed/rust/src/ui/model_mercury/layout.rs | 79 ++++++++++--------- core/mocks/generated/trezorui2.pyi | 5 ++ .../src/trezor/ui/layouts/mercury/__init__.py | 42 ++++++---- .../src/trezor/ui/layouts/mercury/recovery.py | 4 +- core/src/trezor/ui/layouts/mercury/reset.py | 5 +- 7 files changed, 76 insertions(+), 71 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 92dfe91e1e..081cb3fa23 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -153,6 +153,7 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_backup_written_down; MP_QSTR_confirm_blob; MP_QSTR_confirm_coinjoin; + MP_QSTR_confirm_create_wallet; MP_QSTR_confirm_emphasized; MP_QSTR_confirm_fido; MP_QSTR_confirm_firmware_update; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs index 9b84184fb9..751123e80b 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs @@ -21,7 +21,6 @@ use super::super::{ pub enum ConfirmResetDevice { Intro, Menu, - Confirm, } impl FlowState for ConfirmResetDevice { @@ -33,12 +32,7 @@ impl FlowState for ConfirmResetDevice { (ConfirmResetDevice::Menu, SwipeDirection::Right) => { Decision::Goto(ConfirmResetDevice::Intro, direction) } - (ConfirmResetDevice::Intro, SwipeDirection::Up) => { - Decision::Goto(ConfirmResetDevice::Confirm, direction) - } - (ConfirmResetDevice::Confirm, SwipeDirection::Down) => { - Decision::Goto(ConfirmResetDevice::Intro, direction) - } + (ConfirmResetDevice::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), _ => Decision::Nothing, } } @@ -52,9 +46,6 @@ impl FlowState for ConfirmResetDevice { Decision::Goto(ConfirmResetDevice::Intro, SwipeDirection::Right) } (ConfirmResetDevice::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), - (ConfirmResetDevice::Confirm, FlowMsg::Confirmed) => { - Decision::Return(FlowMsg::Confirmed) - } _ => Decision::Nothing, } } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index db626dbef0..ba436433e9 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -192,6 +192,15 @@ impl ComponentMsgObj for ShareWords<'_> { } } +impl ComponentMsgObj for SelectWordCount { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + SelectWordCountMsg::Selected(n) => n.try_into(), + _ => Err(Error::TypeError), + } + } +} + impl ComponentMsgObj for VerticalMenu { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { @@ -758,6 +767,18 @@ extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } +extern "C" fn new_confirm_create_wallet(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], _kwargs: &Map| { + let content = PromptScreen::new_hold_to_confirm(); + let obj = LayoutObj::new( + Frame::left_aligned(TR::reset__title_create_wallet.into(), content) + .with_footer(TR::instructions__hold_to_confirm.into(), None), + )?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1314,8 +1335,9 @@ extern "C" fn new_confirm_backup_written_down( args: *const Obj, kwargs: *mut Map, ) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { + let block = move |_args: &[Obj], _kwargs: &Map| { let content = PromptScreen::new_hold_to_confirm(); + // TODO: use TR let frame_with_hold_to_confirm = Frame::left_aligned("I wrote down all words in order.".into(), content) .with_footer(TR::instructions__hold_to_confirm.into(), None); @@ -1396,17 +1418,13 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let _title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let _button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; - let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; + let _info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; - let paragraphs = Paragraphs::new([ - Paragraph::new(&theme::TEXT_DEMIBOLD, title), - Paragraph::new(&theme::TEXT_NORMAL, description), - ]) - .with_spacing(theme::RECOVERY_SPACING); + let paragraphs = Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]); let notification: TString = if dry_run { TR::recovery__title_dry_run.try_into()? @@ -1414,23 +1432,12 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut TR::recovery__title.try_into()? }; - let obj = if info_button { - LayoutObj::new(Frame::left_aligned( - notification, - Dialog::new( - paragraphs, - Button::cancel_info_confirm( - TR::buttons__continue.into(), - TR::buttons__more_info.into(), - ), - ), - ))? - } else { - LayoutObj::new(Frame::left_aligned( - notification, - Dialog::new(paragraphs, Button::cancel_confirm_text(None, Some(button))), - ))? - }; + let content = SwipeUpScreen::new(paragraphs); + let obj = LayoutObj::new( + Frame::left_aligned(notification, content) + .with_footer(TR::instructions__swipe_up.into(), None) + .with_subtitle("Instructions".into()), // FIXME: use TR + )?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1438,21 +1445,11 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; - let title: TString = if dry_run { - TR::recovery__title_dry_run.try_into()? - } else { - TR::recovery__title.try_into()? - }; - - let paragraphs = Paragraphs::new(Paragraph::new( - &theme::TEXT_DEMIBOLD, - TR::recovery__select_num_of_words, - )); + let _dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; let obj = LayoutObj::new(Frame::left_aligned( - title, - Dialog::new(paragraphs, SelectWordCount::new()), + TR::recovery__select_num_of_words.into(), + SelectWordCount::new(), ))?; Ok(obj.into()) }; @@ -1808,6 +1805,10 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Confirm TOS before device setup.""" Qstr::MP_QSTR_confirm_reset_device => obj_fn_kw!(0, flow::confirm_reset_device::new_confirm_reset_device).as_obj(), + /// def confirm_create_wallet() -> LayoutObj[UiResult]: + /// """Confirm creating wallet""" + Qstr::MP_QSTR_confirm_create_wallet => obj_fn_kw!(0, new_confirm_create_wallet).as_obj(), + /// def show_address_details( /// *, /// qr_title: str, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index e76fdea233..d53028d3c5 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -154,6 +154,11 @@ def confirm_reset_device( """Confirm TOS before device setup.""" +# rust/src/ui/model_mercury/layout.rs +def confirm_create_wallet() -> LayoutObj[UiResult]: + """Confirm creating wallet""" + + # rust/src/ui/model_mercury/layout.rs def show_address_details( *, diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index af012cfefe..d33eda0cf1 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -228,11 +228,12 @@ def dummy_set_timer(token: int, deadline: int) -> None: ui.backlight_fade(ui.style.BACKLIGHT_NORMAL) -async def raise_if_not_confirmed(a: Awaitable[T], exc: Any = ActionCancelled) -> T: +async def raise_if_not_confirmed( + a: Awaitable[ui.UiResult], exc: Any = ActionCancelled +) -> None: result = await a if result is not CONFIRMED: raise exc - return result async def confirm_action( @@ -322,22 +323,36 @@ async def confirm_single( async def confirm_reset_device(title: str, recovery: bool = False) -> None: - await raise_if_not_confirmed( - interact( + if recovery: + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.confirm_reset_device( + title=title, + button="", # not used + ) + ), + "recover_device", + ButtonRequestType.ProtectCall, + ) + ) + else: + # creating wallet shows TOS first and then an extra screen confirms + await raise_if_not_confirmed( RustLayout( trezorui2.confirm_reset_device( title=title, button="", # not used ) ), - "recover_device" if recovery else "setup_device", - ( - ButtonRequestType.ProtectCall - if recovery - else ButtonRequestType.ResetDevice - ), ) - ) + await raise_if_not_confirmed( + interact( + RustLayout(trezorui2.confirm_create_wallet()), + "setup_device", + ButtonRequestType.ResetDevice, + ) + ) async def prompt_backup() -> bool: @@ -565,15 +580,12 @@ async def show_success( subheader: str | None = None, button: str | None = None, ) -> None: - button = button or TR.buttons__continue # def_arg await raise_if_not_confirmed( interact( RustLayout( trezorui2.show_success( - title=subheader or "", + title=content, description="", - button=button.upper(), - allow_cancel=False, ) ), br_type, diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index 10c8f3aa5f..410434d107 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -160,9 +160,7 @@ async def show_recovery_warning( RustLayout( trezorui2.show_warning( title=content, - description=subheader or "", - button=button.upper(), - allow_cancel=False, + value="Try again", # TODO: use TR ) ), br_type, diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 337ab74d4e..a6025edc22 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -41,10 +41,7 @@ async def show_share_words( result = await interact( RustLayout( - trezorui2.confirm_backup_written_down( - title=title, - pages=share_words, - ), + trezorui2.confirm_backup_written_down(), ), "backup_words", ButtonRequestType.ResetDevice, From 1028c3500f79082524ac6fb88aee8e71137d8380 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 28 Apr 2024 13:46:39 +0200 Subject: [PATCH 138/626] feat(core/ui): T3T1 separate reset flows Create separate flows for wallet creating, prompt of backup and recovery. Put more strings to copy. Change style of Frame subheader. --- core/embed/rust/librust_qstr.h | 14 +- .../generated/translated_string.rs | 15 +++ .../src/ui/model_mercury/component/frame.rs | 2 +- .../src/ui/model_mercury/component/mod.rs | 2 +- .../ui/model_mercury/component/share_words.rs | 23 +++- ...eset_device.rs => confirm_reset_create.rs} | 48 ++++--- .../flow/confirm_reset_recover.rs | 115 +++++++++++++++++ .../rust/src/ui/model_mercury/flow/mod.rs | 12 +- .../{create_backup.rs => prompt_backup.rs} | 58 +++++---- .../ui/model_mercury/flow/show_share_words.rs | 120 ++++++++++++++++++ .../embed/rust/src/ui/model_mercury/layout.rs | 97 +++----------- core/mocks/generated/trezorui2.pyi | 30 ++--- core/mocks/trezortranslate_keys.pyi | 5 + .../src/trezor/ui/layouts/mercury/__init__.py | 25 +--- core/src/trezor/ui/layouts/mercury/reset.py | 31 ++--- core/translations/en.json | 5 + core/translations/order.json | 7 +- core/translations/signatures.json | 6 +- tests/common.py | 2 +- 19 files changed, 414 insertions(+), 203 deletions(-) rename core/embed/rust/src/ui/model_mercury/flow/{confirm_reset_device.rs => confirm_reset_create.rs} (68%) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs rename core/embed/rust/src/ui/model_mercury/flow/{create_backup.rs => prompt_backup.rs} (67%) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 081cb3fa23..225c165646 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -54,6 +54,7 @@ static void _librust_qstrs(void) { MP_QSTR_auto_lock__change_template; MP_QSTR_auto_lock__title; MP_QSTR_backup__can_back_up_anytime; + MP_QSTR_backup__create_backup_to_prevent_loss; MP_QSTR_backup__it_should_be_backed_up; MP_QSTR_backup__it_should_be_backed_up_now; MP_QSTR_backup__new_wallet_created; @@ -150,10 +151,8 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_action; MP_QSTR_confirm_address; MP_QSTR_confirm_backup; - MP_QSTR_confirm_backup_written_down; MP_QSTR_confirm_blob; MP_QSTR_confirm_coinjoin; - MP_QSTR_confirm_create_wallet; MP_QSTR_confirm_emphasized; MP_QSTR_confirm_fido; MP_QSTR_confirm_firmware_update; @@ -175,7 +174,6 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_value; MP_QSTR_confirm_with_info; MP_QSTR_count; - MP_QSTR_create_backup_flow; MP_QSTR_data; MP_QSTR_data_hash; MP_QSTR_data_len; @@ -207,7 +205,11 @@ static void _librust_qstrs(void) { MP_QSTR_fingerprint; MP_QSTR_firmware_update__title; MP_QSTR_firmware_update__title_fingerprint; + MP_QSTR_flow_confirm_reset_create; + MP_QSTR_flow_confirm_reset_recover; MP_QSTR_flow_get_address; + MP_QSTR_flow_prompt_backup; + MP_QSTR_flow_show_share_words; MP_QSTR_get_language; MP_QSTR_hold; MP_QSTR_hold_danger; @@ -399,6 +401,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__button_create; MP_QSTR_reset__button_recover; MP_QSTR_reset__by_continuing; + MP_QSTR_reset__check_backup_instructions; MP_QSTR_reset__check_backup_title; MP_QSTR_reset__check_group_share_title_template; MP_QSTR_reset__check_share_title_template; @@ -462,6 +465,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__tos_link; MP_QSTR_reset__total_number_of_shares_in_group_template; MP_QSTR_reset__use_your_backup; + MP_QSTR_reset__words_written_down_template; MP_QSTR_reset__write_down_words_template; MP_QSTR_reset__wrong_word_selected; MP_QSTR_reset__you_need_one_share; @@ -553,6 +557,8 @@ static void _librust_qstrs(void) { MP_QSTR_storage_msg__wrong_pin; MP_QSTR_subprompt; MP_QSTR_subtitle; + MP_QSTR_text_confirm; + MP_QSTR_text_info; MP_QSTR_text_mono; MP_QSTR_time_ms; MP_QSTR_timer; @@ -626,10 +632,12 @@ static void _librust_qstrs(void) { MP_QSTR_words__fee; MP_QSTR_words__from; MP_QSTR_words__important; + MP_QSTR_words__instructions; MP_QSTR_words__keep_it_safe; MP_QSTR_words__know_what_your_doing; MP_QSTR_words__my_trezor; MP_QSTR_words__no; + MP_QSTR_words__not_recommended; MP_QSTR_words__outputs; MP_QSTR_words__please_check_again; MP_QSTR_words__please_try_again; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 44acb3d31a..fb704f8d98 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1255,6 +1255,11 @@ pub enum TranslatedString { instructions__tap_to_confirm = 854, // "Tap to confirm" instructions__hold_to_confirm = 855, // "Hold to confirm" words__important = 856, // "Important" + reset__words_written_down_template = 857, // "I wrote down all {0} words in order." + backup__create_backup_to_prevent_loss = 858, // "Create a backup to avoid losing access to your funds" + reset__check_backup_instructions = 859, // "Let's do a quick check of your backup." + words__instructions = 860, // "Instructions" + words__not_recommended = 861, // "Not recommended!" } impl TranslatedString { @@ -2505,6 +2510,11 @@ impl TranslatedString { Self::instructions__tap_to_confirm => "Tap to confirm", Self::instructions__hold_to_confirm => "Hold to confirm", Self::words__important => "Important", + Self::reset__words_written_down_template => "I wrote down all {0} words in order.", + Self::backup__create_backup_to_prevent_loss => "Create a backup to avoid losing access to your funds", + Self::reset__check_backup_instructions => "Let's do a quick check of your backup.", + Self::words__instructions => "Instructions", + Self::words__not_recommended => "Not recommended!", } } @@ -3756,6 +3766,11 @@ impl TranslatedString { Qstr::MP_QSTR_instructions__tap_to_confirm => Some(Self::instructions__tap_to_confirm), Qstr::MP_QSTR_instructions__hold_to_confirm => Some(Self::instructions__hold_to_confirm), Qstr::MP_QSTR_words__important => Some(Self::words__important), + Qstr::MP_QSTR_reset__words_written_down_template => Some(Self::reset__words_written_down_template), + Qstr::MP_QSTR_backup__create_backup_to_prevent_loss => Some(Self::backup__create_backup_to_prevent_loss), + Qstr::MP_QSTR_reset__check_backup_instructions => Some(Self::reset__check_backup_instructions), + Qstr::MP_QSTR_words__instructions => Some(Self::words__instructions), + Qstr::MP_QSTR_words__not_recommended => Some(Self::words__not_recommended), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 0da98964fb..499b0407c1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -72,7 +72,7 @@ where } pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { - let style = theme::TEXT_SUB_GREY_LIGHT; + let style = theme::TEXT_SUB_GREY; self.title = Child::new(self.title.into_inner().top_aligned()); self.subtitle = Some(Child::new(Label::new( subtitle, diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 43d1f4c436..ce87cba00c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -65,7 +65,7 @@ pub use prompt_screen::PromptScreen; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; #[cfg(feature = "translations")] -pub use share_words::ShareWords; +pub use share_words::{ShareWords, ShareWordsMsg}; pub use simple_page::SimplePage; pub use status_screen::StatusScreen; pub use swipe::{Swipe, SwipeDirection}; diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index aa888fce60..8ffcceb37f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -3,8 +3,9 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::{Component, Event, EventCtx, PageMsg, Paginate}, + component::{Component, Event, EventCtx, Paginate}, constant::SPACING, + flow::Swipable, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, model_mercury::component::{Footer, Swipe, SwipeDirection}, shape, @@ -30,6 +31,11 @@ pub struct ShareWords<'a> { footer: Footer<'static>, } +pub enum ShareWordsMsg { + GoPrevScreen, + WordsSeen, +} + impl<'a> ShareWords<'a> { const AREA_WORD_HEIGHT: i16 = 91; @@ -44,13 +50,17 @@ impl<'a> ShareWords<'a> { } } + fn is_first_page(&self) -> bool { + self.page_index == 0 + } + fn is_final_page(&self) -> bool { self.page_index == self.share_words.len() - 1 } } impl<'a> Component for ShareWords<'a> { - type Msg = PageMsg<()>; + type Msg = ShareWordsMsg; fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; @@ -72,17 +82,20 @@ impl<'a> Component for ShareWords<'a> { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - ctx.set_page_count(self.share_words.len()); + // ctx.set_page_count(self.share_words.len()); let swipe = self.swipe.event(ctx, event); match swipe { Some(SwipeDirection::Up) => { if self.is_final_page() { - return Some(PageMsg::Confirmed); + return Some(ShareWordsMsg::WordsSeen); } self.change_page(self.page_index + 1); ctx.request_paint(); } Some(SwipeDirection::Down) => { + if self.is_first_page() { + return Some(ShareWordsMsg::GoPrevScreen); + } self.change_page(self.page_index.saturating_sub(1)); ctx.request_paint(); } @@ -136,6 +149,8 @@ impl<'a> Component for ShareWords<'a> { fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} } +impl<'a> Swipable for ShareWords<'a> {} + impl<'a> Paginate for ShareWords<'a> { fn page_count(&mut self) -> usize { self.share_words.len() diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs similarity index 68% rename from core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs rename to core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index 751123e80b..c59d46b5c9 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_device.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -18,34 +18,43 @@ use super::super::{ }; #[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] -pub enum ConfirmResetDevice { +pub enum ConfirmResetCreate { Intro, Menu, + Confirm, } -impl FlowState for ConfirmResetDevice { +impl FlowState for ConfirmResetCreate { fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { match (self, direction) { - (ConfirmResetDevice::Intro, SwipeDirection::Left) => { - Decision::Goto(ConfirmResetDevice::Menu, direction) + (ConfirmResetCreate::Intro, SwipeDirection::Left) => { + Decision::Goto(ConfirmResetCreate::Menu, direction) } - (ConfirmResetDevice::Menu, SwipeDirection::Right) => { - Decision::Goto(ConfirmResetDevice::Intro, direction) + (ConfirmResetCreate::Menu, SwipeDirection::Right) => { + Decision::Goto(ConfirmResetCreate::Intro, direction) + } + (ConfirmResetCreate::Intro, SwipeDirection::Up) => { + Decision::Goto(ConfirmResetCreate::Confirm, direction) + } + (ConfirmResetCreate::Confirm, SwipeDirection::Down) => { + Decision::Goto(ConfirmResetCreate::Intro, direction) } - (ConfirmResetDevice::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), _ => Decision::Nothing, } } fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { match (self, msg) { - (ConfirmResetDevice::Intro, FlowMsg::Info) => { - Decision::Goto(ConfirmResetDevice::Menu, SwipeDirection::Left) + (ConfirmResetCreate::Intro, FlowMsg::Info) => { + Decision::Goto(ConfirmResetCreate::Menu, SwipeDirection::Left) + } + (ConfirmResetCreate::Menu, FlowMsg::Cancelled) => { + Decision::Goto(ConfirmResetCreate::Intro, SwipeDirection::Right) } - (ConfirmResetDevice::Menu, FlowMsg::Cancelled) => { - Decision::Goto(ConfirmResetDevice::Intro, SwipeDirection::Right) + (ConfirmResetCreate::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + (ConfirmResetCreate::Confirm, FlowMsg::Confirmed) => { + Decision::Return(FlowMsg::Confirmed) } - (ConfirmResetDevice::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), _ => Decision::Nothing, } } @@ -56,17 +65,17 @@ use crate::{ ui::layout::obj::LayoutObj, }; -pub extern "C" fn new_confirm_reset_device( +pub extern "C" fn new_confirm_reset_create( n_args: usize, args: *const Obj, kwargs: *mut Map, ) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetDevice::new) } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetCreate::new) } } -impl ConfirmResetDevice { +impl ConfirmResetCreate { fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { - let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let title: TString = TR::reset__title_create_wallet.into(); let par_array: [Paragraph<'static>; 3] = [ Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::reset__by_continuing) .with_bottom_padding(17), @@ -81,7 +90,7 @@ impl ConfirmResetDevice { let content_menu = Frame::left_aligned( "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, "Cancel".into()), + VerticalMenu::empty().danger(theme::ICON_CANCEL, "Cancel".into()), // TODO: use TR ) .with_cancel_button() .map(|msg| match msg { @@ -100,14 +109,11 @@ impl ConfirmResetDevice { }); let store = flow_store() - // Intro, .add(content_intro)? - // Context Menu, .add(content_menu)? - // Confirm prompt .add(content_confirm)?; - let res = SwipeFlow::new(ConfirmResetDevice::Intro, store)?; + let res = SwipeFlow::new(ConfirmResetCreate::Intro, store)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs new file mode 100644 index 0000000000..54dc32a8e4 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs @@ -0,0 +1,115 @@ +use crate::{ + error, + translations::TR, + ui::{ + component::{ + text::paragraphs::{Paragraph, Paragraphs}, + ComponentExt, SwipeDirection, + }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum ConfirmResetRecover { + Intro, + Menu, +} + +impl FlowState for ConfirmResetRecover { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (ConfirmResetRecover::Intro, SwipeDirection::Left) => { + Decision::Goto(ConfirmResetRecover::Menu, direction) + } + (ConfirmResetRecover::Menu, SwipeDirection::Right) => { + Decision::Goto(ConfirmResetRecover::Intro, direction) + } + (ConfirmResetRecover::Intro, SwipeDirection::Up) => { + Decision::Return(FlowMsg::Confirmed) + } + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (ConfirmResetRecover::Intro, FlowMsg::Info) => { + Decision::Goto(ConfirmResetRecover::Menu, SwipeDirection::Left) + } + (ConfirmResetRecover::Menu, FlowMsg::Cancelled) => { + Decision::Goto(ConfirmResetRecover::Intro, SwipeDirection::Right) + } + (ConfirmResetRecover::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +pub extern "C" fn new_confirm_reset_recover( + n_args: usize, + args: *const Obj, + kwargs: *mut Map, +) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetRecover::new) } +} + +impl ConfirmResetRecover { + fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let par_array: [Paragraph<'static>; 3] = [ + Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::reset__by_continuing) + .with_bottom_padding(17), + Paragraph::new(&theme::TEXT_SUB_GREY, TR::reset__more_info_at), + Paragraph::new(&theme::TEXT_SUB_GREY_LIGHT, TR::reset__tos_link), + ]; + let paragraphs = Paragraphs::new(par_array); + let content_intro = Frame::left_aligned( + TR::recovery__title_recover.into(), + SwipePage::vertical(paragraphs), + ) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty().danger( + theme::ICON_CANCEL, + TR::recovery__title_cancel_recovery.into(), + ), + ) + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let content_confirm = Frame::left_aligned( + TR::reset__title_create_wallet.into(), + PromptScreen::new_hold_to_confirm(), + ) + .with_footer(TR::instructions__hold_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + _ => Some(FlowMsg::Cancelled), + }); + + let store = flow_store() + .add(content_intro)? + .add(content_menu)? + .add(content_confirm)?; + + let res = SwipeFlow::new(ConfirmResetRecover::Intro, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 555d3bc63e..c9a14f6e58 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,7 +1,11 @@ -pub mod confirm_reset_device; -pub mod create_backup; +pub mod confirm_reset_create; +pub mod confirm_reset_recover; pub mod get_address; +pub mod prompt_backup; +pub mod show_share_words; -pub use confirm_reset_device::ConfirmResetDevice; -pub use create_backup::CreateBackup; +pub use confirm_reset_create::ConfirmResetCreate; +pub use confirm_reset_recover::ConfirmResetRecover; pub use get_address::GetAddress; +pub use prompt_backup::PromptBackup; +pub use show_share_words::ShowShareWords; diff --git a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs similarity index 67% rename from core/embed/rust/src/ui/model_mercury/flow/create_backup.rs rename to core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index e15201deb8..e7ceeba10e 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/create_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -19,48 +19,48 @@ use super::super::{ }; #[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] -pub enum CreateBackup { +pub enum PromptBackup { Intro, Menu, SkipBackupIntro, SkipBackupConfirm, } -impl FlowState for CreateBackup { +impl FlowState for PromptBackup { fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { match (self, direction) { - (CreateBackup::Intro, SwipeDirection::Left) => { - Decision::Goto(CreateBackup::Menu, direction) + (PromptBackup::Intro, SwipeDirection::Left) => { + Decision::Goto(PromptBackup::Menu, direction) } - (CreateBackup::SkipBackupIntro, SwipeDirection::Up) => { - Decision::Goto(CreateBackup::SkipBackupConfirm, direction) + (PromptBackup::SkipBackupIntro, SwipeDirection::Up) => { + Decision::Goto(PromptBackup::SkipBackupConfirm, direction) } - (CreateBackup::SkipBackupConfirm, SwipeDirection::Down) => { - Decision::Goto(CreateBackup::SkipBackupIntro, direction) + (PromptBackup::SkipBackupConfirm, SwipeDirection::Down) => { + Decision::Goto(PromptBackup::SkipBackupIntro, direction) } - (CreateBackup::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + (PromptBackup::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), _ => Decision::Nothing, } } fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { match (self, msg) { - (CreateBackup::Intro, FlowMsg::Info) => { - Decision::Goto(CreateBackup::Menu, SwipeDirection::Left) + (PromptBackup::Intro, FlowMsg::Info) => { + Decision::Goto(PromptBackup::Menu, SwipeDirection::Left) } - (CreateBackup::Menu, FlowMsg::Choice(0)) => { - Decision::Goto(CreateBackup::SkipBackupIntro, SwipeDirection::Left) + (PromptBackup::Menu, FlowMsg::Choice(0)) => { + Decision::Goto(PromptBackup::SkipBackupIntro, SwipeDirection::Left) } - (CreateBackup::Menu, FlowMsg::Cancelled) => { - Decision::Goto(CreateBackup::Intro, SwipeDirection::Right) + (PromptBackup::Menu, FlowMsg::Cancelled) => { + Decision::Goto(PromptBackup::Intro, SwipeDirection::Right) } - (CreateBackup::SkipBackupIntro, FlowMsg::Cancelled) => { - Decision::Goto(CreateBackup::Menu, SwipeDirection::Right) + (PromptBackup::SkipBackupIntro, FlowMsg::Cancelled) => { + Decision::Goto(PromptBackup::Menu, SwipeDirection::Right) } - (CreateBackup::SkipBackupConfirm, FlowMsg::Cancelled) => { - Decision::Goto(CreateBackup::SkipBackupIntro, SwipeDirection::Right) + (PromptBackup::SkipBackupConfirm, FlowMsg::Cancelled) => { + Decision::Goto(PromptBackup::SkipBackupIntro, SwipeDirection::Right) } - (CreateBackup::SkipBackupConfirm, FlowMsg::Confirmed) => { + (PromptBackup::SkipBackupConfirm, FlowMsg::Confirmed) => { Decision::Return(FlowMsg::Cancelled) } _ => Decision::Nothing, @@ -73,16 +73,18 @@ use crate::{ ui::layout::obj::LayoutObj, }; -pub extern "C" fn new_create_backup(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, CreateBackup::new) } +pub extern "C" fn new_prompt_backup(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, PromptBackup::new) } } -impl CreateBackup { +impl PromptBackup { fn new(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { let title: TString = TR::backup__title_backup_wallet.into(); let par_array: [Paragraph<'static>; 1] = [Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, - TString::from_str("Your wallet backup contains X words in a specific order."), + // FIXME: should be "contains X words" but the mnemonic/shares are not yet generated at + // this point. We might need to merge the PromptBackup and ShowShareWords flows + TString::from_str("Your wallet backup contains words in a specific order."), )]; let paragraphs = Paragraphs::new(par_array); let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) @@ -94,7 +96,7 @@ impl CreateBackup { let content_menu = Frame::left_aligned( "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, "Skip backup".into()), + VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::backup__title_skip.into()), ) .with_cancel_button() .map(|msg| match msg { @@ -104,10 +106,10 @@ impl CreateBackup { }); let par_array_skip_intro: [Paragraph<'static>; 2] = [ - Paragraph::new(&theme::TEXT_WARNING, TString::from_str("Not recommended!")), + Paragraph::new(&theme::TEXT_WARNING, TR::words__not_recommended), Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, - TString::from_str("Create a backup to avoid losing access to your funds"), + TR::backup__create_backup_to_prevent_loss, ), ]; let paragraphs_skip_intro = Paragraphs::new(par_array_skip_intro); @@ -141,7 +143,7 @@ impl CreateBackup { .add(content_menu)? .add(content_skip_intro)? .add(content_skip_confirm)?; - let res = SwipeFlow::new(CreateBackup::Intro, store)?; + let res = SwipeFlow::new(PromptBackup::Intro, store)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs new file mode 100644 index 0000000000..8b88ffbe22 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -0,0 +1,120 @@ +use crate::{ + error, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + strutil::TString, + translations::TR, + ui::{ + component::{ + text::paragraphs::{Paragraph, Paragraphs}, + ComponentExt, + }, + flow::{ + base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, + SwipePage, + }, + layout::obj::LayoutObj, + }, +}; +use heapless::Vec; + +use super::super::{ + component::{Frame, FrameMsg, PromptScreen, ShareWords, ShareWordsMsg, SwipeDirection}, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum ShowShareWords { + // TODO: potentially also add there the 'never put anywhere digital' warning? + Instruction, + Words, + Confirm, + CheckBackupIntro, +} + +impl FlowState for ShowShareWords { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (ShowShareWords::Instruction, SwipeDirection::Up) => { + Decision::Goto(ShowShareWords::Words, direction) + } + (ShowShareWords::Confirm, SwipeDirection::Down) => { + Decision::Goto(ShowShareWords::Words, direction) + } + (ShowShareWords::CheckBackupIntro, SwipeDirection::Up) => { + Decision::Return(FlowMsg::Confirmed) + } + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (ShowShareWords::Words, FlowMsg::Cancelled) => { + Decision::Goto(ShowShareWords::Instruction, SwipeDirection::Down) + } + (ShowShareWords::Words, FlowMsg::Confirmed) => { + Decision::Goto(ShowShareWords::Confirm, SwipeDirection::Up) + } + (ShowShareWords::Confirm, FlowMsg::Confirmed) => { + Decision::Goto(ShowShareWords::CheckBackupIntro, SwipeDirection::Up) + } + _ => Decision::Nothing, + } + } +} + +pub extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ShowShareWords::new) } +} + +impl ShowShareWords { + fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_words)?; + let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; + let text_info: TString = kwargs.get(Qstr::MP_QSTR_text_info)?.try_into()?; + let text_confirm: TString = kwargs.get(Qstr::MP_QSTR_text_confirm)?.try_into()?; + + let content_instruction = Frame::left_aligned( + title, + SwipePage::vertical(Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + text_info, + ))), + ) + .with_subtitle(TR::words__instructions.into()) + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| matches!(msg, FrameMsg::Content(_)).then_some(FlowMsg::Confirmed)); + + let content_words = + Frame::left_aligned(title, ShareWords::new(share_words_vec)).map(|msg| match msg { + FrameMsg::Content(ShareWordsMsg::GoPrevScreen) => Some(FlowMsg::Cancelled), + FrameMsg::Content(ShareWordsMsg::WordsSeen) => Some(FlowMsg::Confirmed), + _ => None, + }); + + let content_confirm = + Frame::left_aligned(text_confirm, PromptScreen::new_hold_to_confirm()) + .with_footer(TR::instructions__hold_to_confirm.into(), None) + .map(|_| Some(FlowMsg::Confirmed)); + + let content_check_backup_intro = Frame::left_aligned( + TR::reset__check_backup_title.into(), + SwipePage::vertical(Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TR::reset__check_backup_instructions, + ))), + ) + .with_subtitle(TR::words__instructions.into()) + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|_| Some(FlowMsg::Confirmed)); + + let store = flow_store() + .add(content_instruction)? + .add(content_words)? + .add(content_confirm)? + .add(content_check_backup_intro)?; + let res = SwipeFlow::new(ShowShareWords::Instruction, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index ba436433e9..14c3a4a081 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -46,8 +46,8 @@ use super::{ FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, - PromptScreen, SelectWordCount, SelectWordCountMsg, ShareWords, SimplePage, Slip39Input, - StatusScreen, SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, + PromptScreen, SelectWordCount, SelectWordCountMsg, SimplePage, Slip39Input, StatusScreen, + SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, }, flow, theme, }; @@ -183,15 +183,6 @@ where } } -impl ComponentMsgObj for ShareWords<'_> { - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - PageMsg::Confirmed => Ok(CONFIRMED.as_obj()), - _ => Err(Error::TypeError), - } - } -} - impl ComponentMsgObj for SelectWordCount { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { @@ -767,18 +758,6 @@ extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_confirm_create_wallet(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], _kwargs: &Map| { - let content = PromptScreen::new_hold_to_confirm(); - let obj = LayoutObj::new( - Frame::left_aligned(TR::reset__title_create_wallet.into(), content) - .with_footer(TR::instructions__hold_to_confirm.into(), None), - )?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1316,37 +1295,6 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_pages)?; - let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; - - let share_words = ShareWords::new(share_words_vec); - let frame_with_share_words = Frame::left_aligned(title, share_words); - let obj = LayoutObj::new(frame_with_share_words)?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - -extern "C" fn new_confirm_backup_written_down( - n_args: usize, - args: *const Obj, - kwargs: *mut Map, -) -> Obj { - let block = move |_args: &[Obj], _kwargs: &Map| { - let content = PromptScreen::new_hold_to_confirm(); - // TODO: use TR - let frame_with_hold_to_confirm = - Frame::left_aligned("I wrote down all words in order.".into(), content) - .with_footer(TR::instructions__hold_to_confirm.into(), None); - let obj = LayoutObj::new(frame_with_hold_to_confirm)?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1436,7 +1384,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let obj = LayoutObj::new( Frame::left_aligned(notification, content) .with_footer(TR::instructions__swipe_up.into(), None) - .with_subtitle("Instructions".into()), // FIXME: use TR + .with_subtitle(TR::words__instructions.into()), )?; Ok(obj.into()) }; @@ -1797,17 +1745,13 @@ pub static mp_module_trezorui2: Module = obj_module! { /// the value is to be rendered as binary with monospace font, False otherwise.""" Qstr::MP_QSTR_confirm_properties => obj_fn_kw!(0, new_confirm_properties).as_obj(), - /// def confirm_reset_device( - /// *, - /// title: str, - /// button: str, - /// ) -> LayoutObj[UiResult]: - /// """Confirm TOS before device setup.""" - Qstr::MP_QSTR_confirm_reset_device => obj_fn_kw!(0, flow::confirm_reset_device::new_confirm_reset_device).as_obj(), + /// def flow_confirm_reset_recover() -> LayoutObj[UiResult]: + /// """Confirm TOS before recovery process.""" + Qstr::MP_QSTR_flow_confirm_reset_recover => obj_fn_kw!(0, flow::confirm_reset_recover::new_confirm_reset_recover).as_obj(), - /// def confirm_create_wallet() -> LayoutObj[UiResult]: - /// """Confirm creating wallet""" - Qstr::MP_QSTR_confirm_create_wallet => obj_fn_kw!(0, new_confirm_create_wallet).as_obj(), + /// def flow_confirm_reset_create() -> LayoutObj[UiResult]: + /// """Confirm TOS before creating a wallet and have a user hold to confirm creation.""" + Qstr::MP_QSTR_flow_confirm_reset_create => obj_fn_kw!(0, flow::confirm_reset_create::new_confirm_reset_create).as_obj(), /// def show_address_details( /// *, @@ -2024,23 +1968,20 @@ pub static mp_module_trezorui2: Module = obj_module! { /// iterable must be of exact size. Returns index in range `0..3`.""" Qstr::MP_QSTR_select_word => obj_fn_kw!(0, new_select_word).as_obj(), - // TODO: This is just POC - /// def create_backup_flow() -> LayoutObj[UiResult] - /// """Start create backup or skip flow.""" - Qstr::MP_QSTR_create_backup_flow => obj_fn_kw!(0, flow::create_backup::new_create_backup).as_obj(), + /// def flow_prompt_backup() -> LayoutObj[UiResult] + /// """Prompt a user to create backup with an option to skip.""" + Qstr::MP_QSTR_flow_prompt_backup => obj_fn_kw!(0, flow::prompt_backup::new_prompt_backup).as_obj(), - /// def show_share_words( + /// def flow_show_share_words( /// *, /// title: str, - /// pages: Iterable[str], + /// words: Iterable[str], + /// text_info: str, + /// text_confirm: str, /// ) -> LayoutObj[UiResult]: - /// """Show mnemonic for backup.""" - Qstr::MP_QSTR_show_share_words => obj_fn_kw!(0, new_show_share_words).as_obj(), - - // TODO: This is just POC - /// def confirm_backup_written_down() -> LayoutObj[UiResult] - /// """Confirm with the user that backup words are written down.""" - Qstr::MP_QSTR_confirm_backup_written_down => obj_fn_kw!(0, new_confirm_backup_written_down).as_obj(), + /// """Show wallet backup words preceded by an instruction screen and followed by + /// confirmation.""" + Qstr::MP_QSTR_flow_show_share_words => obj_fn_kw!(0, flow::show_share_words::new_show_share_words).as_obj(), /// def request_number( /// *, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index d53028d3c5..34658d8417 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -146,17 +146,13 @@ def confirm_properties( # rust/src/ui/model_mercury/layout.rs -def confirm_reset_device( - *, - title: str, - button: str, -) -> LayoutObj[UiResult]: - """Confirm TOS before device setup.""" +def flow_confirm_reset_recover() -> LayoutObj[UiResult]: + """Confirm TOS before recovery process.""" # rust/src/ui/model_mercury/layout.rs -def confirm_create_wallet() -> LayoutObj[UiResult]: - """Confirm creating wallet""" +def flow_confirm_reset_create() -> LayoutObj[UiResult]: + """Confirm TOS before creating a wallet and have a user hold to confirm creation.""" # rust/src/ui/model_mercury/layout.rs @@ -395,22 +391,20 @@ def select_word( # rust/src/ui/model_mercury/layout.rs -def create_backup_flow() -> LayoutObj[UiResult] -"""Start create backup or skip flow.""" +def flow_prompt_backup() -> LayoutObj[UiResult] +"""Prompt a user to create backup with an option to skip.""" # rust/src/ui/model_mercury/layout.rs -def show_share_words( +def flow_show_share_words( *, title: str, - pages: Iterable[str], + words: Iterable[str], + text_info: str, + text_confirm: str, ) -> LayoutObj[UiResult]: - """Show mnemonic for backup.""" - - -# rust/src/ui/model_mercury/layout.rs -def confirm_backup_written_down() -> LayoutObj[UiResult] -"""Confirm with the user that backup words are written down.""" + """Show wallet backup words preceded by an instruction screen and followed by + confirmation.""" # rust/src/ui/model_mercury/layout.rs diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index ee0fc0c0c9..117056ca29 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -20,6 +20,7 @@ class TR: auto_lock__change_template: str = "Auto-lock your Trezor after {0} of inactivity?" auto_lock__title: str = "Auto-lock delay" backup__can_back_up_anytime: str = "You can back up your Trezor once, at any time." + backup__create_backup_to_prevent_loss: str = "Create a backup to avoid losing access to your funds" backup__it_should_be_backed_up: str = "You should back up your new wallet right now." backup__it_should_be_backed_up_now: str = "It should be backed up now!" backup__new_wallet_created: str = "New wallet created.\n" @@ -560,6 +561,7 @@ class TR: reset__button_create: str = "Create wallet" reset__button_recover: str = "Recover wallet" reset__by_continuing: str = "By continuing you agree to Trezor Company's terms and conditions." + reset__check_backup_instructions: str = "Let's do a quick check of your backup." reset__check_backup_title: str = "Check backup" reset__check_group_share_title_template: str = "Check g{0} - share {1}" reset__check_share_title_template: str = "Check share #{0}" @@ -622,6 +624,7 @@ class TR: reset__tos_link: str = "trezor.io/tos" reset__total_number_of_shares_in_group_template: str = "Set the total number of shares in Group {0}." reset__use_your_backup: str = "Use your backup when you need to recover your wallet." + reset__words_written_down_template: str = "I wrote down all {0} words in order." reset__write_down_words_template: str = "Write down all {0} words in order." reset__wrong_word_selected: str = "Wrong word selected!" reset__you_need_one_share: str = "For recovery you need 1 share." @@ -834,10 +837,12 @@ class TR: words__fee: str = "Fee" words__from: str = "from" words__important: str = "Important" + words__instructions: str = "Instructions" words__keep_it_safe: str = "Keep it safe!" words__know_what_your_doing: str = "Continue only if you know what you are doing!" words__my_trezor: str = "My Trezor" words__no: str = "No" + words__not_recommended: str = "Not recommended!" words__outputs: str = "outputs" words__please_check_again: str = "Please check again" words__please_try_again: str = "Please try again" diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index d33eda0cf1..f1a3d1cc46 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -322,33 +322,19 @@ async def confirm_single( ) -async def confirm_reset_device(title: str, recovery: bool = False) -> None: +async def confirm_reset_device(_title: str, recovery: bool = False) -> None: if recovery: await raise_if_not_confirmed( interact( - RustLayout( - trezorui2.confirm_reset_device( - title=title, - button="", # not used - ) - ), + RustLayout(trezorui2.flow_confirm_reset_recover()), "recover_device", ButtonRequestType.ProtectCall, ) ) else: - # creating wallet shows TOS first and then an extra screen confirms - await raise_if_not_confirmed( - RustLayout( - trezorui2.confirm_reset_device( - title=title, - button="", # not used - ) - ), - ) await raise_if_not_confirmed( interact( - RustLayout(trezorui2.confirm_create_wallet()), + RustLayout(trezorui2.flow_confirm_reset_create()), "setup_device", ButtonRequestType.ResetDevice, ) @@ -356,7 +342,7 @@ async def confirm_reset_device(title: str, recovery: bool = False) -> None: async def prompt_backup() -> bool: - # result = await interact(RustLayout(trezorui2.)) + # TODO: should we move this to `flow_prompt_backup`? await interact( RustLayout(trezorui2.show_success(title=TR.backup__new_wallet_created)), "backup_device", @@ -364,8 +350,7 @@ async def prompt_backup() -> bool: ) result = await interact( - # TODO: this is just POC - RustLayout(trezorui2.create_backup_flow()), + RustLayout(trezorui2.flow_prompt_backup()), "backup_device", ButtonRequestType.ResetDevice, ) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index a6025edc22..19dd964f8f 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -23,7 +23,9 @@ async def show_share_words( share_index: int | None = None, group_index: int | None = None, ) -> None: + if share_index is None: + # FIXME use TR.reset__recovery_wallet_backup_title after #3710 merged title = TR.reset__recovery_seed_title elif group_index is None: title = TR.reset__recovery_share_title_template.format(share_index + 1) @@ -31,28 +33,23 @@ async def show_share_words( title = TR.reset__group_share_title_template.format( group_index + 1, share_index + 1 ) - - await RustLayout( - trezorui2.show_share_words( - title=title, - pages=share_words, - ), - ) + words_count = len(share_words) + text_info = TR.reset__write_down_words_template.format(words_count) + text_confirm = TR.reset__words_written_down_template.format(words_count) result = await interact( RustLayout( - trezorui2.confirm_backup_written_down(), + trezorui2.flow_show_share_words( + title=title, + words=share_words, + text_info=text_info, + text_confirm=text_confirm, + ) ), "backup_words", ButtonRequestType.ResetDevice, ) - result = await RustLayout( - trezorui2.show_info( - title="Check wallet backup", - description="Let's do a quick check of your backup.", - ) - ) if result != CONFIRMED: raise ActionCancelled @@ -317,12 +314,6 @@ async def show_warning_backup(slip39: bool) -> None: "backup_warning", ButtonRequestType.ResetDevice, ) - result = await RustLayout( - trezorui2.show_info( - title="Wallet backup", - description="Write the following words in order on your wallet backup card.", - ) - ) if result != CONFIRMED: raise ActionCancelled diff --git a/core/translations/en.json b/core/translations/en.json index 720415ac12..cd3723fba5 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -22,6 +22,7 @@ "auto_lock__change_template": "Auto-lock your Trezor after {0} of inactivity?", "auto_lock__title": "Auto-lock delay", "backup__can_back_up_anytime": "You can back up your Trezor once, at any time.", + "backup__create_backup_to_prevent_loss": "Create a backup to avoid losing access to your funds", "backup__it_should_be_backed_up": "You should back up your new wallet right now.", "backup__it_should_be_backed_up_now": "It should be backed up now!", "backup__new_wallet_created": "New wallet created.\n", @@ -566,6 +567,7 @@ "reset__check_group_share_title_template": "Check g{0} - share {1}", "reset__check_wallet_backup_title": "Check wallet backup", "reset__check_share_title_template": "Check share #{0}", + "reset__check_backup_instructions": "Let's do a quick check of your backup.", "reset__continue_with_next_share": "Continue with the next share.", "reset__continue_with_share_template": "Continue with share #{0}.", "reset__create_x_of_y_multi_share_backup_template": "Do you want to create a {0} of {1} multi-share backup?", @@ -624,6 +626,7 @@ "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Set the total number of shares in Group {0}.", "reset__use_your_backup": "Use your backup when you need to recover your wallet.", + "reset__words_written_down_template": "I wrote down all {0} words in order.", "reset__write_down_words_template": "Write down all {0} words in order.", "reset__wrong_word_selected": "Wrong word selected!", "reset__you_need_one_share": "For recovery you need 1 share.", @@ -836,10 +839,12 @@ "words__fee": "Fee", "words__from": "from", "words__important": "Important", + "words__instructions": "Instructions", "words__keep_it_safe": "Keep it safe!", "words__know_what_your_doing": "Continue only if you know what you are doing!", "words__my_trezor": "My Trezor", "words__no": "No", + "words__not_recommended": "Not recommended!", "words__outputs": "outputs", "words__please_check_again": "Please check again", "words__please_try_again": "Please try again", diff --git a/core/translations/order.json b/core/translations/order.json index 49b154e5f0..95885a2668 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -855,5 +855,10 @@ "853": "instructions__swipe_up", "854": "instructions__tap_to_confirm", "855": "instructions__hold_to_confirm", - "856": "words__important" + "856": "words__important", + "857": "reset__words_written_down_template", + "858": "backup__create_backup_to_prevent_loss", + "859": "reset__check_backup_instructions", + "860": "words__instructions", + "861": "words__not_recommended" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 394ade0b70..84db9e0693 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "04a116dbd20d79235dd81e26fa428eb7c5f4971e76f08a47cde1ec98c959e586", - "datetime": "2024-05-17T10:12:24.161735", - "commit": "aea8bdbe8f9cc2fe629e624a06f4f1b1af6e0a8f" + "merkle_root": "5261bdad43d4e3cda9263ec6ce080218a0d897e02307ca8cafa2525d6a8d3d6b", + "datetime": "2024-05-17T10:18:14.246905", + "commit": "58db509b926fd99b3a36eb3bd550945bf1a139c4" }, "history": [ { diff --git a/tests/common.py b/tests/common.py index 1725b41ef1..35d6905c8a 100644 --- a/tests/common.py +++ b/tests/common.py @@ -256,7 +256,7 @@ def read_mnemonic_from_screen_mercury( debug.wait_layout() - for i in range(br.pages): + for _ in range(br.pages): words = debug.wait_layout().seed_words() mnemonic.extend(words) debug.swipe_up() From 5020868c2ce3c762532f50c0d3375b7eb4db1239 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 30 Apr 2024 13:32:48 +0200 Subject: [PATCH 139/626] feat(core/ui): T3T1 receive flow [no changelog] --- core/embed/rust/librust_qstr.h | 10 + .../generated/translated_string.rs | 30 ++- core/embed/rust/src/ui/component/base.rs | 2 +- core/embed/rust/src/ui/component/empty.rs | 1 + core/embed/rust/src/ui/component/label.rs | 18 +- .../rust/src/ui/component/text/layout.rs | 6 +- core/embed/rust/src/ui/layout/util.rs | 2 + .../component/address_details.rs | 59 ++-- .../src/ui/model_mercury/component/frame.rs | 15 +- .../model_mercury/component/status_screen.rs | 11 + .../src/ui/model_mercury/component/swipe.rs | 1 + .../src/ui/model_mercury/flow/get_address.rs | 251 ++++++++++++------ .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../ui/model_mercury/flow/warning_hi_prio.rs | 125 +++++++++ .../embed/rust/src/ui/model_mercury/layout.rs | 76 ++---- .../rust/src/ui/model_mercury/theme/mod.rs | 40 ++- .../ui/model_tr/component/address_details.rs | 2 +- .../ui/model_tt/component/address_details.rs | 2 +- core/mocks/generated/trezorui2.pyi | 37 +-- core/mocks/trezortranslate_keys.pyi | 10 +- core/src/apps/bitcoin/get_address.py | 9 +- .../src/trezor/ui/layouts/mercury/__init__.py | 130 +++------ core/src/trezor/ui/layouts/tr/__init__.py | 8 + core/src/trezor/ui/layouts/tt/__init__.py | 10 +- core/translations/cs.json | 3 +- core/translations/de.json | 3 +- core/translations/en.json | 10 +- core/translations/es.json | 3 +- core/translations/fr.json | 3 +- core/translations/order.json | 12 +- core/translations/signatures.json | 6 +- tests/input_flows.py | 4 +- 32 files changed, 582 insertions(+), 319 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 225c165646..5474b349a9 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -30,14 +30,21 @@ static void _librust_qstrs(void) { MP_QSTR_addr_mismatch__wrong_derivation_path; MP_QSTR_addr_mismatch__xpub_mismatch; MP_QSTR_address; + MP_QSTR_address__cancel_contact_support; + MP_QSTR_address__cancel_receive; + MP_QSTR_address__confirmed; MP_QSTR_address__public_key; + MP_QSTR_address__qr_code; MP_QSTR_address__title_cosigner; MP_QSTR_address__title_receive_address; MP_QSTR_address__title_yours; + MP_QSTR_address_details__account_info; MP_QSTR_address_details__derivation_path; + MP_QSTR_address_details__derivation_path_colon; MP_QSTR_address_details__title_receive_address; MP_QSTR_address_details__title_receiving_to; MP_QSTR_address_label; + MP_QSTR_address_qr; MP_QSTR_address_title; MP_QSTR_allow_cancel; MP_QSTR_altcoin_tx_summary; @@ -210,6 +217,7 @@ static void _librust_qstrs(void) { MP_QSTR_flow_get_address; MP_QSTR_flow_prompt_backup; MP_QSTR_flow_show_share_words; + MP_QSTR_flow_warning_hi_prio; MP_QSTR_get_language; MP_QSTR_hold; MP_QSTR_hold_danger; @@ -237,6 +245,7 @@ static void _librust_qstrs(void) { MP_QSTR_inputs__return; MP_QSTR_inputs__show; MP_QSTR_inputs__space; + MP_QSTR_instructions__continue_in_app; MP_QSTR_instructions__hold_to_confirm; MP_QSTR_instructions__swipe_up; MP_QSTR_instructions__tap_to_confirm; @@ -623,6 +632,7 @@ static void _librust_qstrs(void) { MP_QSTR_words__array_of; MP_QSTR_words__blockhash; MP_QSTR_words__buying; + MP_QSTR_words__cancel_and_exit; MP_QSTR_words__confirm; MP_QSTR_words__confirm_fee; MP_QSTR_words__contains; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index fb704f8d98..0c8bd01f3c 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -20,7 +20,7 @@ pub enum TranslatedString { address__title_cosigner = 7, // "Cosigner" address__title_receive_address = 8, // "Receive address" address__title_yours = 9, // "Yours" - address_details__derivation_path = 10, // "Derivation path:" + address_details__derivation_path_colon = 10, // "Derivation path:" address_details__title_receive_address = 11, // "Receive address" address_details__title_receiving_to = 12, // "Receiving to" authenticate__confirm_template = 13, // "Allow connected computer to confirm your {0} is genuine?" @@ -1260,6 +1260,14 @@ pub enum TranslatedString { reset__check_backup_instructions = 859, // "Let's do a quick check of your backup." words__instructions = 860, // "Instructions" words__not_recommended = 861, // "Not recommended!" + address_details__account_info = 862, // "Account info" + address__cancel_contact_support = 863, // "If receive address doesn't match, contact Trezor Support at trezor.io/support." + address__cancel_receive = 864, // "Cancel receive" + address__qr_code = 865, // "QR code" + address_details__derivation_path = 866, // "Derivation path" + instructions__continue_in_app = 867, // "Continue in the app" + words__cancel_and_exit = 868, // "Cancel and exit" + address__confirmed = 869, // "Receive address confirmed" } impl TranslatedString { @@ -1275,7 +1283,7 @@ impl TranslatedString { Self::address__title_cosigner => "Cosigner", Self::address__title_receive_address => "Receive address", Self::address__title_yours => "Yours", - Self::address_details__derivation_path => "Derivation path:", + Self::address_details__derivation_path_colon => "Derivation path:", Self::address_details__title_receive_address => "Receive address", Self::address_details__title_receiving_to => "Receiving to", Self::authenticate__confirm_template => "Allow connected computer to confirm your {0} is genuine?", @@ -2515,6 +2523,14 @@ impl TranslatedString { Self::reset__check_backup_instructions => "Let's do a quick check of your backup.", Self::words__instructions => "Instructions", Self::words__not_recommended => "Not recommended!", + Self::address_details__account_info => "Account info", + Self::address__cancel_contact_support => "If receive address doesn't match, contact Trezor Support at trezor.io/support.", + Self::address__cancel_receive => "Cancel receive", + Self::address__qr_code => "QR code", + Self::address_details__derivation_path => "Derivation path", + Self::instructions__continue_in_app => "Continue in the app", + Self::words__cancel_and_exit => "Cancel and exit", + Self::address__confirmed => "Receive address confirmed", } } @@ -2531,7 +2547,7 @@ impl TranslatedString { Qstr::MP_QSTR_address__title_cosigner => Some(Self::address__title_cosigner), Qstr::MP_QSTR_address__title_receive_address => Some(Self::address__title_receive_address), Qstr::MP_QSTR_address__title_yours => Some(Self::address__title_yours), - Qstr::MP_QSTR_address_details__derivation_path => Some(Self::address_details__derivation_path), + Qstr::MP_QSTR_address_details__derivation_path_colon => Some(Self::address_details__derivation_path_colon), Qstr::MP_QSTR_address_details__title_receive_address => Some(Self::address_details__title_receive_address), Qstr::MP_QSTR_address_details__title_receiving_to => Some(Self::address_details__title_receiving_to), Qstr::MP_QSTR_authenticate__confirm_template => Some(Self::authenticate__confirm_template), @@ -3771,6 +3787,14 @@ impl TranslatedString { Qstr::MP_QSTR_reset__check_backup_instructions => Some(Self::reset__check_backup_instructions), Qstr::MP_QSTR_words__instructions => Some(Self::words__instructions), Qstr::MP_QSTR_words__not_recommended => Some(Self::words__not_recommended), + Qstr::MP_QSTR_address_details__account_info => Some(Self::address_details__account_info), + Qstr::MP_QSTR_address__cancel_contact_support => Some(Self::address__cancel_contact_support), + Qstr::MP_QSTR_address__cancel_receive => Some(Self::address__cancel_receive), + Qstr::MP_QSTR_address__qr_code => Some(Self::address__qr_code), + Qstr::MP_QSTR_address_details__derivation_path => Some(Self::address_details__derivation_path), + Qstr::MP_QSTR_instructions__continue_in_app => Some(Self::instructions__continue_in_app), + Qstr::MP_QSTR_words__cancel_and_exit => Some(Self::words__cancel_and_exit), + Qstr::MP_QSTR_address__confirmed => Some(Self::address__confirmed), _ => None, } } diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index ab62262b53..91a7d53dff 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -82,7 +82,7 @@ pub struct Child<T> { } impl<T> Child<T> { - pub fn new(component: T) -> Self { + pub const fn new(component: T) -> Self { Self { component, marked_for_paint: true, diff --git a/core/embed/rust/src/ui/component/empty.rs b/core/embed/rust/src/ui/component/empty.rs index 258f201d53..2d5f92cd16 100644 --- a/core/embed/rust/src/ui/component/empty.rs +++ b/core/embed/rust/src/ui/component/empty.rs @@ -1,6 +1,7 @@ use super::{Component, Event, EventCtx, Never}; use crate::ui::{geometry::Rect, shape::Renderer}; +#[derive(Clone)] pub struct Empty; impl Component for Empty { diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index a3cf62fbc4..869f254dab 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -18,7 +18,7 @@ pub struct Label<'a> { } impl<'a> Label<'a> { - pub fn new(text: TString<'a>, align: Alignment, style: TextStyle) -> Self { + pub const fn new(text: TString<'a>, align: Alignment, style: TextStyle) -> Self { Self { text, layout: TextLayout::new(style).with_align(align), @@ -26,34 +26,34 @@ impl<'a> Label<'a> { } } - pub fn left_aligned(text: TString<'a>, style: TextStyle) -> Self { + pub const fn left_aligned(text: TString<'a>, style: TextStyle) -> Self { Self::new(text, Alignment::Start, style) } - pub fn right_aligned(text: TString<'a>, style: TextStyle) -> Self { + pub const fn right_aligned(text: TString<'a>, style: TextStyle) -> Self { Self::new(text, Alignment::End, style) } - pub fn centered(text: TString<'a>, style: TextStyle) -> Self { + pub const fn centered(text: TString<'a>, style: TextStyle) -> Self { Self::new(text, Alignment::Center, style) } - pub fn top_aligned(mut self) -> Self { + pub const fn top_aligned(mut self) -> Self { self.vertical = Alignment::Start; self } - pub fn vertically_centered(mut self) -> Self { + pub const fn vertically_centered(mut self) -> Self { self.vertical = Alignment::Center; self } - pub fn bottom_aligned(mut self) -> Self { + pub const fn bottom_aligned(mut self) -> Self { self.vertical = Alignment::End; self } - pub fn styled(mut self, style: TextStyle) -> Self { + pub const fn styled(mut self, style: TextStyle) -> Self { self.layout.style = style; self } @@ -74,7 +74,7 @@ impl<'a> Label<'a> { self.layout.bounds } - pub fn alignment(&self) -> Alignment { + pub const fn alignment(&self) -> Alignment { self.layout.align } diff --git a/core/embed/rust/src/ui/component/text/layout.rs b/core/embed/rust/src/ui/component/text/layout.rs index 682d414251..3655696b83 100644 --- a/core/embed/rust/src/ui/component/text/layout.rs +++ b/core/embed/rust/src/ui/component/text/layout.rs @@ -199,7 +199,7 @@ impl TextStyle { impl TextLayout { /// Create a new text layout, with empty size and default text parameters /// filled from `T`. - pub fn new(style: TextStyle) -> Self { + pub const fn new(style: TextStyle) -> Self { Self { bounds: Rect::zero(), padding_top: 0, @@ -210,12 +210,12 @@ impl TextLayout { } } - pub fn with_bounds(mut self, bounds: Rect) -> Self { + pub const fn with_bounds(mut self, bounds: Rect) -> Self { self.bounds = bounds; self } - pub fn with_align(mut self, align: Alignment) -> Self { + pub const fn with_align(mut self, align: Alignment) -> Self { self.align = align; self } diff --git a/core/embed/rust/src/ui/layout/util.rs b/core/embed/rust/src/ui/layout/util.rs index ef2355b64c..60604d7301 100644 --- a/core/embed/rust/src/ui/layout/util.rs +++ b/core/embed/rust/src/ui/layout/util.rs @@ -25,6 +25,7 @@ use crate::{ /// consumption and conversion time. pub const MAX_HEX_CHARS_ON_SCREEN: usize = 256; +#[derive(Clone)] pub enum StrOrBytes { Str(TString<'static>), Bytes(Obj), @@ -55,6 +56,7 @@ impl TryFrom<Obj> for StrOrBytes { } } +#[derive(Clone)] pub struct ConfirmBlob { pub description: TString<'static>, pub extra: TString<'static>, diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index 2d80a05173..0ecb87a4e2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -7,7 +7,7 @@ use crate::{ ui::{ component::{ text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, - Component, Event, EventCtx, Paginate, Qr, + Component, Event, EventCtx, Paginate, }, geometry::Rect, shape::Renderer, @@ -18,8 +18,8 @@ use super::{theme, Frame, FrameMsg}; const MAX_XPUBS: usize = 16; +#[derive(Clone)] pub struct AddressDetails { - qr_code: Frame<Qr>, details: Frame<Paragraphs<ParagraphVecShort<'static>>>, xpub_view: Frame<Paragraphs<Paragraph<'static>>>, xpubs: Vec<(TString<'static>, TString<'static>), MAX_XPUBS>, @@ -29,43 +29,38 @@ pub struct AddressDetails { impl AddressDetails { pub fn new( - qr_title: TString<'static>, - qr_address: TString<'static>, - case_sensitive: bool, details_title: TString<'static>, account: Option<TString<'static>>, path: Option<TString<'static>>, ) -> Result<Self, Error> { let mut para = ParagraphVecShort::new(); if let Some(a) = account { + para.add(Paragraph::new::<TString>( + &theme::TEXT_SUB_GREY, + TR::words__account.into(), + )); + para.add(Paragraph::new(&theme::TEXT_MONO_GREY_LIGHT, a)); + } + if account.is_some() & path.is_some() { para.add(Paragraph::new( - &theme::TEXT_NORMAL, - TR::words__account_colon, + &theme::TEXT_SUB_GREY, + TString::from_str(" "), )); - para.add(Paragraph::new(&theme::TEXT_MONO, a)); } if let Some(p) = path { - para.add(Paragraph::new( - &theme::TEXT_NORMAL, - TR::address_details__derivation_path, + para.add(Paragraph::new::<TString>( + &theme::TEXT_SUB_GREY, + TR::address_details__derivation_path.into(), )); - para.add(Paragraph::new(&theme::TEXT_MONO, p)); + para.add(Paragraph::new(&theme::TEXT_MONO_GREY_LIGHT, p)); } let result = Self { - qr_code: Frame::left_aligned( - qr_title, - qr_address - .map(|s| Qr::new(s, case_sensitive))? - .with_border(7), - ) - .with_cancel_button() - .with_border(theme::borders_horizontal_scroll()), details: Frame::left_aligned(details_title, para.into_paragraphs()) .with_cancel_button() .with_border(theme::borders_horizontal_scroll()), xpub_view: Frame::left_aligned( " \n ".into(), - Paragraph::new(&theme::TEXT_MONO, "").into_paragraphs(), + Paragraph::new(&theme::TEXT_MONO_GREY_LIGHT, "").into_paragraphs(), ) .with_cancel_button() .with_border(theme::borders_horizontal_scroll()), @@ -121,13 +116,13 @@ impl AddressDetails { impl Paginate for AddressDetails { fn page_count(&mut self) -> usize { let total_xpub_pages: u8 = self.xpub_page_count.iter().copied().sum(); - 2usize.saturating_add(total_xpub_pages.into()) + 1usize.saturating_add(total_xpub_pages.into()) } fn change_page(&mut self, to_page: usize) { self.current_page = to_page; - if to_page > 1 { - let i = to_page - 2; + if to_page > 0 { + let i = to_page - 1; let (xpub_index, xpub_page) = self.lookup(i); self.switch_xpub(xpub_index, xpub_page); } @@ -138,7 +133,6 @@ impl Component for AddressDetails { type Msg = (); fn place(&mut self, bounds: Rect) -> Rect { - self.qr_code.place(bounds); self.details.place(bounds); self.xpub_view.place(bounds); @@ -153,8 +147,7 @@ impl Component for AddressDetails { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { let msg = match self.current_page { - 0 => self.qr_code.event(ctx, event), - 1 => self.details.event(ctx, event), + 0 => self.details.event(ctx, event), _ => self.xpub_view.event(ctx, event), }; match msg { @@ -165,16 +158,14 @@ impl Component for AddressDetails { fn paint(&mut self) { match self.current_page { - 0 => self.qr_code.paint(), - 1 => self.details.paint(), + 0 => self.details.paint(), _ => self.xpub_view.paint(), } } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { match self.current_page { - 0 => self.qr_code.render(target), - 1 => self.details.render(target), + 0 => self.details.render(target), _ => self.xpub_view.render(target), } } @@ -182,8 +173,7 @@ impl Component for AddressDetails { #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { match self.current_page { - 0 => self.qr_code.bounds(sink), - 1 => self.details.bounds(sink), + 0 => self.details.bounds(sink), _ => self.xpub_view.bounds(sink), } } @@ -194,8 +184,7 @@ impl crate::trace::Trace for AddressDetails { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("AddressDetails"); match self.current_page { - 0 => t.child("qr_code", &self.qr_code), - 1 => t.child("details", &self.details), + 0 => t.child("details", &self.details), _ => t.child("xpub_view", &self.xpub_view), } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 499b0407c1..3d6961786d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -35,7 +35,7 @@ impl<T> Frame<T> where T: Component, { - pub fn new(alignment: Alignment, title: TString<'static>, content: T) -> Self { + pub const fn new(alignment: Alignment, title: TString<'static>, content: T) -> Self { Self { title: Child::new( Label::new(title, alignment, theme::label_title_main()).vertically_centered(), @@ -49,19 +49,19 @@ where } } - pub fn left_aligned(title: TString<'static>, content: T) -> Self { + pub const fn left_aligned(title: TString<'static>, content: T) -> Self { Self::new(Alignment::Start, title, content) } - pub fn right_aligned(title: TString<'static>, content: T) -> Self { + pub const fn right_aligned(title: TString<'static>, content: T) -> Self { Self::new(Alignment::End, title, content) } - pub fn centered(title: TString<'static>, content: T) -> Self { + pub const fn centered(title: TString<'static>, content: T) -> Self { Self::new(Alignment::Center, title, content) } - pub fn with_border(mut self, border: Insets) -> Self { + pub const fn with_border(mut self, border: Insets) -> Self { self.border = border; self } @@ -130,6 +130,11 @@ where self } + pub fn with_danger(self) -> Self { + self.button_styled(theme::button_danger()) + .title_styled(theme::label_title_danger()) + } + pub fn inner(&self) -> &T { self.content.inner() } diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index a4d0554acf..b32fa790d4 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -10,6 +10,7 @@ use super::{theme, Swipe, SwipeDirection}; /// Component showing status of an operation. Most typically embedded as a /// content of a Frame and showing success (checkmark with a circle around). +#[derive(Clone)] pub struct StatusScreen { area: Rect, icon: Icon, @@ -18,6 +19,7 @@ pub struct StatusScreen { dismiss_type: DismissType, } +#[derive(Clone)] enum DismissType { SwipeUp(Swipe), Timeout(Timeout), @@ -62,6 +64,15 @@ impl StatusScreen { DismissType::SwipeUp(Swipe::new().up()), ) } + + pub fn new_neutral_timeout() -> Self { + Self::new( + theme::ICON_SIMPLE_CHECKMARK, + theme::GREY_EXTRA_LIGHT, + theme::GREY_DARK, + DismissType::Timeout(Timeout::new(TIMEOUT_MS)), + ) + } } impl Component for StatusScreen { diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe.rs b/core/embed/rust/src/ui/model_mercury/component/swipe.rs index 0a67a3b6f6..8f14783532 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe.rs @@ -10,6 +10,7 @@ use super::theme; pub use crate::ui::component::SwipeDirection; +#[derive(Clone)] pub struct Swipe { pub area: Rect, pub allow_up: bool, diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 477d458c2d..1d928e555a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -1,33 +1,41 @@ use crate::{ error, + micropython::{iter::IterBuf, qstr::Qstr}, + strutil::TString, + translations::TR, ui::{ component::{ - image::BlendedImage, - text::paragraphs::{Paragraph, Paragraphs}, - ComponentExt, Qr, SwipeDirection, Timeout, + text::paragraphs::{Paragraph, ParagraphSource, Paragraphs}, + ComponentExt, Qr, SwipeDirection, }, flow::{ base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, SwipePage, }, + layout::util::ConfirmBlob, }, }; use super::super::{ - component::{Frame, FrameMsg, IconDialog, VerticalMenu, VerticalMenuChoiceMsg}, + component::{ + AddressDetails, CancelInfoConfirmMsg, Frame, FrameMsg, PromptScreen, StatusScreen, + VerticalMenu, VerticalMenuChoiceMsg, + }, theme, }; -const LONGSTRING: &'static str = "https://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKohttps://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKohttps://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKohttps://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKohttps://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKo"; +const QR_BORDER: i16 = 4; #[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] pub enum GetAddress { Address, + Tap, + Confirmed, Menu, QrCode, AccountInfo, Cancel, - Success, + CancelTap, } impl FlowState for GetAddress { @@ -36,8 +44,9 @@ impl FlowState for GetAddress { (GetAddress::Address, SwipeDirection::Left) => { Decision::Goto(GetAddress::Menu, direction) } - (GetAddress::Address, SwipeDirection::Up) => { - Decision::Goto(GetAddress::Success, direction) + (GetAddress::Address, SwipeDirection::Up) => Decision::Goto(GetAddress::Tap, direction), + (GetAddress::Tap, SwipeDirection::Down) => { + Decision::Goto(GetAddress::Address, direction) } (GetAddress::Menu, SwipeDirection::Right) => { Decision::Goto(GetAddress::Address, direction) @@ -48,7 +57,15 @@ impl FlowState for GetAddress { (GetAddress::AccountInfo, SwipeDirection::Right) => { Decision::Goto(GetAddress::Menu, direction) } - (GetAddress::Cancel, SwipeDirection::Up) => Decision::Return(FlowMsg::Cancelled), + (GetAddress::Cancel, SwipeDirection::Up) => { + Decision::Goto(GetAddress::CancelTap, direction) + } + (GetAddress::Cancel, SwipeDirection::Right) => { + Decision::Goto(GetAddress::Menu, direction) + } + (GetAddress::CancelTap, SwipeDirection::Down) => { + Decision::Goto(GetAddress::Cancel, direction) + } _ => Decision::Nothing, } } @@ -59,6 +76,12 @@ impl FlowState for GetAddress { Decision::Goto(GetAddress::Menu, SwipeDirection::Left) } + (GetAddress::Tap, FlowMsg::Confirmed) => { + Decision::Goto(GetAddress::Confirmed, SwipeDirection::Up) + } + + (GetAddress::Confirmed, _) => Decision::Return(FlowMsg::Confirmed), + (GetAddress::Menu, FlowMsg::Choice(0)) => { Decision::Goto(GetAddress::QrCode, SwipeDirection::Left) } @@ -87,14 +110,19 @@ impl FlowState for GetAddress { Decision::Goto(GetAddress::Menu, SwipeDirection::Right) } - (GetAddress::Success, _) => Decision::Return(FlowMsg::Confirmed), + (GetAddress::CancelTap, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Cancelled), + + (GetAddress::CancelTap, FlowMsg::Cancelled) => { + Decision::Goto(GetAddress::Menu, SwipeDirection::Right) + } + _ => Decision::Nothing, } } } use crate::{ - micropython::{buffer::StrBuffer, map::Map, obj::Obj, util}, + micropython::{map::Map, obj::Obj, util}, ui::layout::obj::LayoutObj, }; @@ -103,83 +131,132 @@ pub extern "C" fn new_get_address(n_args: usize, args: *const Obj, kwargs: *mut } impl GetAddress { - fn new(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { - let store = flow_store() - .add( - Frame::left_aligned( - "Receive".into(), - SwipePage::vertical(Paragraphs::new(Paragraph::new( - &theme::TEXT_MONO, - StrBuffer::from(LONGSTRING), - ))), - ) - .with_subtitle("address".into()) - .with_menu_button() - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)), - )? - .add( - Frame::left_aligned( - "".into(), - VerticalMenu::empty() - .item(theme::ICON_QR_CODE, "Address QR code".into()) - .item(theme::ICON_CHEVRON_RIGHT, "Account info".into()) - .danger(theme::ICON_CANCEL, "Cancel operation".into()), - ) - .with_cancel_button() - .map(|msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { - Some(FlowMsg::Choice(i)) - } - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }), - )? - .add( - Frame::left_aligned( - "Receive address".into(), - IgnoreSwipe::new(Qr::new( - "https://youtu.be/iFkEs4GNgfc?si=Jl4UZSIAYGVcLQKo", - true, - )?), - ) - .with_cancel_button() - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)), - )? - .add( - Frame::left_aligned( - "Account info".into(), - SwipePage::vertical(Paragraphs::new(Paragraph::new( - &theme::TEXT_NORMAL, - StrBuffer::from("taproot xp"), - ))), - ) - .with_cancel_button() - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)), - )? - .add( - Frame::left_aligned( - "Cancel receive".into(), - SwipePage::vertical(Paragraphs::new(Paragraph::new( - &theme::TEXT_NORMAL, - StrBuffer::from("O rly?"), - ))), - ) - .with_cancel_button() - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)), - )? - .add( - IconDialog::new( - BlendedImage::new( - theme::IMAGE_BG_CIRCLE, - theme::IMAGE_FG_WARN, - theme::SUCCESS_COLOR, - theme::FG, - theme::BG, - ), - StrBuffer::from("Confirmed"), - Timeout::new(100), + fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = "Receive address".into(); // TODO: address__title_receive_address w/o uppercase + let description: Option<TString> = + kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; + let extra: Option<TString> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; + let address: Obj = kwargs.get(Qstr::MP_QSTR_address)?; + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + + let address_qr: TString = kwargs.get(Qstr::MP_QSTR_address_qr)?.try_into()?; + let case_sensitive: bool = kwargs.get(Qstr::MP_QSTR_case_sensitive)?.try_into()?; + + let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; + let path: Option<TString> = kwargs.get(Qstr::MP_QSTR_path)?.try_into_option()?; + let xpubs: Obj = kwargs.get(Qstr::MP_QSTR_xpubs)?; + + // Address + let data_style = if chunkify { + let address: TString = address.try_into()?; + theme::get_chunkified_text_style(address.len()) + } else { + &theme::TEXT_MONO + }; + let paragraphs = ConfirmBlob { + description: description.unwrap_or("".into()), + extra: extra.unwrap_or("".into()), + data: address.try_into()?, + description_font: &theme::TEXT_NORMAL, + extra_font: &theme::TEXT_DEMIBOLD, + data_font: data_style, + } + .into_paragraphs(); + let content_address = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + // .one_button_request(ButtonRequestCode::Address, "show_address"); + + // Tap + let content_tap = Frame::left_aligned(title, PromptScreen::new_tap_to_confirm()) + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let content_confirmed = IgnoreSwipe::new( + Frame::left_aligned( + TR::address__confirmed.into(), + StatusScreen::new_success_timeout(), + ) + .with_footer(TR::instructions__continue_in_app.into(), None), + ) + .map(|_| Some(FlowMsg::Confirmed)); + + // Menu + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty() + .item(theme::ICON_QR_CODE, TR::address__qr_code.into()) + .item( + theme::ICON_CHEVRON_RIGHT, + TR::address_details__account_info.into(), ) - .map(|_| Some(FlowMsg::Confirmed)), - )?; + .danger(theme::ICON_CANCEL, TR::address__cancel_receive.into()), + ) + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + // QrCode + let content_qr = Frame::left_aligned( + title, + IgnoreSwipe::new( + address_qr + .map(|s| Qr::new(s, case_sensitive))? + .with_border(QR_BORDER), + ), + ) + .with_cancel_button() + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)); + + // AccountInfo + let mut ad = AddressDetails::new(TR::address_details__account_info.into(), account, path)?; + for i in IterBuf::new().try_iterate(xpubs)? { + let [xtitle, text]: [TString; 2] = util::iter_into_array(i)?; + ad.add_xpub(xtitle, text)?; + } + let content_account = SwipePage::vertical(ad).map(|_| Some(FlowMsg::Cancelled)); + + // Cancel + let content_cancel_info = Frame::left_aligned( + TR::address__cancel_receive.into(), + SwipePage::vertical(Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TR::address__cancel_contact_support, + ))), + ) + .with_cancel_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)); + + // CancelTap + let content_cancel_tap = Frame::left_aligned( + TR::address__cancel_receive.into(), + PromptScreen::new_tap_to_cancel(), + ) + .with_cancel_button() + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let store = flow_store() + .add(content_address)? + .add(content_tap)? + .add(content_confirmed)? + .add(content_menu)? + .add(content_qr)? + .add(content_account)? + .add(content_cancel_info)? + .add(content_cancel_tap)?; let res = SwipeFlow::new(GetAddress::Address, store)?; Ok(LayoutObj::new(res)?.into()) } diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index c9a14f6e58..9796605970 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -3,9 +3,11 @@ pub mod confirm_reset_recover; pub mod get_address; pub mod prompt_backup; pub mod show_share_words; +pub mod warning_hi_prio; pub use confirm_reset_create::ConfirmResetCreate; pub use confirm_reset_recover::ConfirmResetRecover; pub use get_address::GetAddress; pub use prompt_backup::PromptBackup; pub use show_share_words::ShowShareWords; +pub use warning_hi_prio::WarningHiPrio; diff --git a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs new file mode 100644 index 0000000000..68f60c91a9 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs @@ -0,0 +1,125 @@ +use crate::{ + error, + micropython::qstr::Qstr, + strutil::TString, + translations::TR, + ui::{ + component::{ + text::paragraphs::{Paragraph, ParagraphSource}, + ComponentExt, SwipeDirection, + }, + flow::{ + base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, + SwipePage, + }, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, StatusScreen, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum WarningHiPrio { + Message, + Menu, + Cancelled, +} + +impl FlowState for WarningHiPrio { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (WarningHiPrio::Message, SwipeDirection::Left) => { + Decision::Goto(WarningHiPrio::Menu, direction) + } + (WarningHiPrio::Message, SwipeDirection::Up) => { + Decision::Goto(WarningHiPrio::Cancelled, direction) + } + (WarningHiPrio::Menu, SwipeDirection::Right) => { + Decision::Goto(WarningHiPrio::Message, direction) + } + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (WarningHiPrio::Message, FlowMsg::Info) => { + Decision::Goto(WarningHiPrio::Menu, SwipeDirection::Left) + } + (WarningHiPrio::Menu, FlowMsg::Choice(1)) => Decision::Return(FlowMsg::Confirmed), + (WarningHiPrio::Menu, FlowMsg::Choice(_)) => { + Decision::Goto(WarningHiPrio::Cancelled, SwipeDirection::Up) + } + (WarningHiPrio::Menu, FlowMsg::Cancelled) => { + Decision::Goto(WarningHiPrio::Message, SwipeDirection::Right) + } + (WarningHiPrio::Cancelled, _) => Decision::Return(FlowMsg::Cancelled), + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +pub extern "C" fn new_warning_hi_prio(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, WarningHiPrio::new) } +} + +impl WarningHiPrio { + const EXTRA_PADDING: i16 = 6; + + fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = kwargs.get_or(Qstr::MP_QSTR_title, TR::words__warning.try_into()?)?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; + let cancel: TString = TR::words__cancel_and_exit.into(); + let confirm: TString = "Continue anyway".into(); // FIXME: en.json has punctuation + let done_title: TString = "Operation cancelled".into(); + + // Message + let paragraphs = [ + Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description), + Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, value) + .with_top_padding(Self::EXTRA_PADDING), + ] + .into_paragraphs(); + let content_message = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), Some(cancel)) + .with_danger() + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + // .one_button_request(ButtonRequestCode::Warning, br_type); + + // Menu + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty() + .item(theme::ICON_CANCEL, "Cancel".into()) // TODO: button__cancel after it's lowercase + .danger(theme::ICON_CHEVRON_RIGHT, confirm), + ) + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + // Cancelled + let content_cancelled = IgnoreSwipe::new( + Frame::left_aligned(done_title, StatusScreen::new_neutral_timeout()) + .with_footer(TR::instructions__continue_in_app.into(), None), + ) + .map(|_| Some(FlowMsg::Cancelled)); + + let store = flow_store() + .add(content_message)? + .add(content_menu)? + .add(content_cancelled)?; + let res = SwipeFlow::new(WarningHiPrio::Message, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 14c3a4a081..3d491ba33d 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -684,38 +684,6 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_show_address_details(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let qr_title: TString = kwargs.get(Qstr::MP_QSTR_qr_title)?.try_into()?; - let details_title: TString = kwargs.get(Qstr::MP_QSTR_details_title)?.try_into()?; - let address: TString = kwargs.get(Qstr::MP_QSTR_address)?.try_into()?; - let case_sensitive: bool = kwargs.get(Qstr::MP_QSTR_case_sensitive)?.try_into()?; - let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; - let path: Option<TString> = kwargs.get(Qstr::MP_QSTR_path)?.try_into_option()?; - - let xpubs: Obj = kwargs.get(Qstr::MP_QSTR_xpubs)?; - - let mut ad = AddressDetails::new( - qr_title, - address, - case_sensitive, - details_title, - account, - path, - )?; - - for i in IterBuf::new().try_iterate(xpubs)? { - let [xtitle, text]: [TString; 2] = util::iter_into_array(i)?; - ad.add_xpub(xtitle, text)?; - } - - let obj = - LayoutObj::new(SimplePage::horizontal(ad, theme::BG).with_swipe_right_to_go_back())?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1012,12 +980,13 @@ extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; - let content = SwipeUpScreen::new(Paragraphs::new([Paragraph::new( - &theme::TEXT_MAIN_GREY_LIGHT, - value, - )])); + let content = SwipeUpScreen::new(Paragraphs::new([ + Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description), + Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, value), + ])); let obj = LayoutObj::new( Frame::left_aligned(title, content) .with_warning_button() @@ -1753,19 +1722,6 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Confirm TOS before creating a wallet and have a user hold to confirm creation.""" Qstr::MP_QSTR_flow_confirm_reset_create => obj_fn_kw!(0, flow::confirm_reset_create::new_confirm_reset_create).as_obj(), - /// def show_address_details( - /// *, - /// qr_title: str, - /// address: str, - /// case_sensitive: bool, - /// details_title: str, - /// account: str | None, - /// path: str | None, - /// xpubs: list[tuple[str, str]], - /// ) -> LayoutObj[UiResult]: - /// """Show address details - QR code, account, path, cosigner xpubs.""" - Qstr::MP_QSTR_show_address_details => obj_fn_kw!(0, new_show_address_details).as_obj(), - /// def show_info_with_cancel( /// *, /// title: str, @@ -2092,9 +2048,29 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Show single-line text in the middle of the screen.""" Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), - /// def flow_get_address() -> LayoutObj[UiResult]: + /// def flow_get_address( + /// *, + /// address: str | bytes, + /// description: str | None, + /// extra: str | None, + /// chunkify: bool, + /// address_qr: str | None, + /// case_sensitive: bool, + /// account: str | None, + /// path: str | None, + /// xpubs: list[tuple[str, str]], + /// ) -> LayoutObj[UiResult]: /// """Get address / receive funds.""" Qstr::MP_QSTR_flow_get_address => obj_fn_kw!(0, flow::get_address::new_get_address).as_obj(), + + /// def flow_warning_hi_prio( + /// *, + /// title: str, + /// description: str, + /// value: str = "", + /// ) -> LayoutObj[UiResult]: + /// """Warning modal with multiple steps to confirm.""" + Qstr::MP_QSTR_flow_warning_hi_prio => obj_fn_kw!(0, flow::warning_hi_prio::new_warning_hi_prio).as_obj(), }; #[cfg(test)] diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 1aeb18bc67..efec7cf409 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -215,6 +215,16 @@ pub const fn label_title_main() -> TextStyle { ) } +pub const fn label_title_danger() -> TextStyle { + TextStyle::new( + Font::NORMAL, + ORANGE_LIGHT, + GREY_DARK, + GREY_LIGHT, + GREY_LIGHT, + ) +} + pub const fn label_title_sub() -> TextStyle { TextStyle::new(Font::SUB, GREY, GREY_DARK, GREY_LIGHT, GREY_LIGHT) } @@ -355,9 +365,30 @@ pub const fn button_cancel() -> ButtonStyleSheet { } } -// TODO: delete pub const fn button_danger() -> ButtonStyleSheet { - button_cancel() + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: ORANGE_LIGHT, + button_color: BG, + icon_color: ORANGE_LIGHT, + background_color: BG, + }, + active: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: ORANGE_LIGHT, + button_color: BG, + icon_color: ORANGE_LIGHT, + background_color: BG, + }, + disabled: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: ORANGE_LIGHT, + button_color: BG, + icon_color: ORANGE_LIGHT, + background_color: BG, + }, + } } pub const fn button_reset() -> ButtonStyleSheet { @@ -591,6 +622,10 @@ pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, GREY_EXTRA_LIGHT, BG .with_page_breaking(PageBreaking::CutAndInsertEllipsisBoth) .with_ellipsis_icon(ICON_PAGE_NEXT, 0) .with_prev_page_icon(ICON_PAGE_PREV, 0); +pub const TEXT_MONO_GREY_LIGHT: TextStyle = TextStyle { + text_color: GREY_LIGHT, + ..TEXT_MONO +}; /// Makes sure that the displayed text (usually address) will get divided into /// smaller chunks. pub const TEXT_MONO_ADDRESS_CHUNKS: TextStyle = TEXT_MONO @@ -656,6 +691,7 @@ pub const MNEMONIC_BUTTON_HEIGHT: i16 = 52; pub const RESULT_PADDING: i16 = 6; pub const RESULT_FOOTER_START: i16 = 171; pub const RESULT_FOOTER_HEIGHT: i16 = 62; +pub const DETAILS_SPACING: i16 = 8; // checklist settings pub const CHECKLIST_CHECK_WIDTH: i16 = 16; diff --git a/core/embed/rust/src/ui/model_tr/component/address_details.rs b/core/embed/rust/src/ui/model_tr/component/address_details.rs index 128742bfb4..e6714e36f7 100644 --- a/core/embed/rust/src/ui/model_tr/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tr/component/address_details.rs @@ -52,7 +52,7 @@ impl AddressDetails { if let Some(path) = path { para.add(Paragraph::new( &theme::TEXT_BOLD, - TR::address_details__derivation_path, + TR::address_details__derivation_path_colon, )); para.add(Paragraph::new(&theme::TEXT_MONO, path)); } diff --git a/core/embed/rust/src/ui/model_tt/component/address_details.rs b/core/embed/rust/src/ui/model_tt/component/address_details.rs index ebcf2d40de..a6bc1bc57d 100644 --- a/core/embed/rust/src/ui/model_tt/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tt/component/address_details.rs @@ -47,7 +47,7 @@ impl AddressDetails { if let Some(p) = path { para.add(Paragraph::new( &theme::TEXT_NORMAL, - TR::address_details__derivation_path, + TR::address_details__derivation_path_colon, )); para.add(Paragraph::new(&theme::TEXT_MONO, p)); } diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 34658d8417..bee6c6aeb1 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -155,20 +155,6 @@ def flow_confirm_reset_create() -> LayoutObj[UiResult]: """Confirm TOS before creating a wallet and have a user hold to confirm creation.""" -# rust/src/ui/model_mercury/layout.rs -def show_address_details( - *, - qr_title: str, - address: str, - case_sensitive: bool, - details_title: str, - account: str | None, - path: str | None, - xpubs: list[tuple[str, str]], -) -> LayoutObj[UiResult]: - """Show address details - QR code, account, path, cosigner xpubs.""" - - # rust/src/ui/model_mercury/layout.rs def show_info_with_cancel( *, @@ -529,8 +515,29 @@ def show_wait_text(message: str, /) -> LayoutObj[None]: # rust/src/ui/model_mercury/layout.rs -def flow_get_address() -> LayoutObj[UiResult]: +def flow_get_address( + *, + address: str | bytes, + description: str | None, + extra: str | None, + chunkify: bool, + address_qr: str | None, + case_sensitive: bool, + account: str | None, + path: str | None, + xpubs: list[tuple[str, str]], +) -> LayoutObj[UiResult]: """Get address / receive funds.""" + + +# rust/src/ui/model_mercury/layout.rs +def flow_warning_hi_prio( + *, + title: str, + description: str, + value: str = "", +) -> LayoutObj[UiResult]: + """Warning modal with multiple steps to confirm.""" CONFIRMED: UiResult CANCELLED: UiResult INFO: UiResult diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 117056ca29..a17c68fd63 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -8,11 +8,17 @@ class TR: addr_mismatch__support_url: str = "trezor.io/support" addr_mismatch__wrong_derivation_path: str = "Wrong derivation path for selected account." addr_mismatch__xpub_mismatch: str = "XPUB mismatch?" + address__cancel_contact_support: str = "If receive address doesn't match, contact Trezor Support at trezor.io/support." + address__cancel_receive: str = "Cancel receive" + address__confirmed: str = "Receive address confirmed" address__public_key: str = "Public key" + address__qr_code: str = "QR code" address__title_cosigner: str = "Cosigner" address__title_receive_address: str = "Receive address" address__title_yours: str = "Yours" - address_details__derivation_path: str = "Derivation path:" + address_details__account_info: str = "Account info" + address_details__derivation_path: str = "Derivation path" + address_details__derivation_path_colon: str = "Derivation path:" address_details__title_receive_address: str = "Receive address" address_details__title_receiving_to: str = "Receiving to" authenticate__confirm_template: str = "Allow connected computer to confirm your {0} is genuine?" @@ -356,6 +362,7 @@ class TR: inputs__return: str = "RETURN" inputs__show: str = "SHOW" inputs__space: str = "SPACE" + instructions__continue_in_app: str = "Continue in the app" instructions__hold_to_confirm: str = "Hold to confirm" instructions__swipe_up: str = "Swipe up" instructions__tap_to_confirm: str = "Tap to confirm" @@ -828,6 +835,7 @@ class TR: words__array_of: str = "Array of" words__blockhash: str = "Blockhash" words__buying: str = "Buying" + words__cancel_and_exit: str = "Cancel and exit" words__confirm: str = "Confirm" words__confirm_fee: str = "Confirm fee" words__contains: str = "Contains" diff --git a/core/src/apps/bitcoin/get_address.py b/core/src/apps/bitcoin/get_address.py index 51faec4376..9bbd8e845e 100644 --- a/core/src/apps/bitcoin/get_address.py +++ b/core/src/apps/bitcoin/get_address.py @@ -31,10 +31,9 @@ def _get_xpubs( @with_keychain async def get_address(msg: GetAddress, keychain: Keychain, coin: CoinInfo) -> Address: - from trezor import TR from trezor.enums import InputScriptType from trezor.messages import Address - from trezor.ui.layouts import show_address, show_warning + from trezor.ui.layouts import confirm_multisig_warning, show_address from apps.common.address_mac import get_address_mac from apps.common.paths import address_n_to_str, validate_path @@ -104,11 +103,7 @@ async def get_address(msg: GetAddress, keychain: Keychain, coin: CoinInfo) -> Ad pubnodes = [hd.node for hd in multisig.pubkeys] multisig_index = multisig_pubkey_index(multisig, node.public_key()) - await show_warning( - "warning_multisig", - TR.send__receiving_to_multisig, - TR.words__continue_anyway, - ) + await confirm_multisig_warning() await show_address( address_short, diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index f1a3d1cc46..57e799f7cc 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -279,17 +279,6 @@ async def confirm_action( ) -async def flow_demo() -> None: - await raise_if_not_confirmed( - interact( - RustLayout(trezorui2.flow_get_address()), - "get_address", - BR_TYPE_OTHER, - ), - ActionCancelled, - ) - - async def confirm_single( br_type: str, title: str, @@ -362,7 +351,7 @@ async def confirm_path_warning( path: str, path_type: str | None = None, ) -> None: - title = ( + description = ( TR.addr_mismatch__wrong_derivation_path if not path_type else f"{TR.words__unknown} {path_type.lower()}." @@ -370,11 +359,8 @@ async def confirm_path_warning( await raise_if_not_confirmed( interact( RustLayout( - trezorui2.show_warning( - title=title, - value=path, - description=TR.words__continue_anyway, - button=TR.buttons__continue, + trezorui2.flow_warning_hi_prio( + title=f"{TR.words__warning}!", description=description, value=path ) ), "path_warning", @@ -383,6 +369,21 @@ async def confirm_path_warning( ) +async def confirm_multisig_warning() -> None: + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.flow_warning_hi_prio( + title=f"{TR.words__important}!", + description=TR.send__receiving_to_multisig, + ) + ), + "warning_multisig", + br_code=ButtonRequestType.Warning, + ) + ) + + async def confirm_homescreen( image: bytes, ) -> None: @@ -417,77 +418,34 @@ async def show_address( br_code: ButtonRequestType = ButtonRequestType.Address, chunkify: bool = False, ) -> None: - mismatch_title = mismatch_title or TR.addr_mismatch__mismatch # def_arg - send_button_request = True - - if title is None: - title = TR.address__title_receive_address - if multisig_index is not None: - title = f"{title}\n(MULTISIG)" - details_title = TR.send__title_receiving_to - elif details_title is None: - details_title = title - - layout = RustLayout( - trezorui2.confirm_address( - title=title, - data=address, - description=network or "", - extra=None, - chunkify=chunkify, + def xpub_title(i: int) -> str: + result = f"Multisig XPUB #{i + 1}\n" + result += ( + f"({TR.address__title_yours.lower()})" + if i == multisig_index + else f"({TR.address__title_cosigner.lower()})" ) - ) - - while True: - if send_button_request: - send_button_request = False - await button_request( - br_type, - br_code, - pages=layout.page_count(), - ) - layout.request_complete_repaint() - result = await ctx_wait(layout) - - # User pressed right button. - if result is CONFIRMED: - break + return result - # User pressed corner button or swiped left, go to address details. - elif result is INFO: - - def xpub_title(i: int) -> str: - result = f"MULTISIG XPUB #{i + 1}\n" - result += ( - f"({TR.address__title_yours})" - if i == multisig_index - else f"({TR.address__title_cosigner})" - ) - return result - - result = await ctx_wait( - RustLayout( - trezorui2.show_address_details( - qr_title=title, - address=address if address_qr is None else address_qr, - case_sensitive=case_sensitive, - details_title=details_title, - account=account, - path=path, - xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], - ) + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.flow_get_address( + address=address, + description=network or "", + extra=None, + chunkify=chunkify, + address_qr=address if address_qr is None else address_qr, + case_sensitive=case_sensitive, + account=account, + path=path, + xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], ) - ) - assert result is CANCELLED - - else: - result = await ctx_wait( - RustLayout(trezorui2.show_mismatch(title=mismatch_title)) - ) - assert result in (CONFIRMED, CANCELLED) - # Right button aborts action, left goes back to showing address. - if result is CONFIRMED: - raise ActionCancelled + ), + br_type, + br_code, + ) + ) def show_pubkey( @@ -1305,7 +1263,7 @@ async def confirm_signverify( items: list[tuple[str, str]] = [] if account is not None: - items.append((f"{TR.words__account}:", account)) + items.append((TR.words__account, account)) if path is not None: items.append((TR.address_details__derivation_path, path)) items.append( diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 0fa4a02a8c..c3de1166d1 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -492,6 +492,14 @@ def confirm_path_warning( ) +def confirm_multisig_warning() -> Awaitable[None]: + return show_warning( + "warning_multisig", + TR.send__receiving_to_multisig, + TR.words__continue_anyway, + ) + + def confirm_homescreen(image: bytes) -> Awaitable[None]: return raise_if_not_confirmed( interact( diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 72b69cf65e..0735cffcd9 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -431,6 +431,14 @@ def confirm_path_warning(path: str, path_type: str | None = None) -> Awaitable[N ) +def confirm_multisig_warning() -> Awaitable[None]: + return show_warning( + "warning_multisig", + TR.send__receiving_to_multisig, + TR.words__continue_anyway, + ) + + def confirm_homescreen(image: bytes) -> Awaitable[None]: return raise_if_not_confirmed( interact( @@ -1349,7 +1357,7 @@ async def confirm_signverify( if account is not None: items.append((f"{TR.words__account}:", account)) if path is not None: - items.append((TR.address_details__derivation_path, path)) + items.append((TR.address_details__derivation_path_colon, path)) items.append( ( TR.sign_message__message_size, diff --git a/core/translations/cs.json b/core/translations/cs.json index ed18e1b322..5e0605513b 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -46,7 +46,8 @@ "address__title_cosigner": "Další podepisující", "address__title_receive_address": "Přijímací adresa", "address__title_yours": "Vaše", - "address_details__derivation_path": "Derivační cesta:", + "address_details__derivation_path": "Derivační cesta", + "address_details__derivation_path_colon": "Derivační cesta:", "address_details__title_receive_address": "Přijímací adresa", "address_details__title_receiving_to": "Příjem", "authenticate__confirm_template": "Povolit připojenému počítači potvrdit pravost vašeho {0}?", diff --git a/core/translations/de.json b/core/translations/de.json index 691ad4fba3..6fca28d28f 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -46,7 +46,8 @@ "address__title_cosigner": "Mitunterzeich.", "address__title_receive_address": "Empfäng-adresse", "address__title_yours": "Deiner", - "address_details__derivation_path": "Ableitungspfad:", + "address_details__derivation_path": "Ableitungspfad", + "address_details__derivation_path_colon": "Ableitungspfad:", "address_details__title_receive_address": "Empfäng-adresse", "address_details__title_receiving_to": "Empfänger", "authenticate__confirm_template": "Darf verbundener Computer bestätigen, dass {0} echt ist?", diff --git a/core/translations/en.json b/core/translations/en.json index cd3723fba5..789a97606b 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -10,11 +10,17 @@ "addr_mismatch__support_url": "trezor.io/support", "addr_mismatch__wrong_derivation_path": "Wrong derivation path for selected account.", "addr_mismatch__xpub_mismatch": "XPUB mismatch?", + "address__cancel_contact_support": "If receive address doesn't match, contact Trezor Support at trezor.io/support.", + "address__cancel_receive": "Cancel receive", + "address__confirmed": "Receive address confirmed", "address__public_key": "Public key", + "address__qr_code": "QR code", "address__title_cosigner": "Cosigner", "address__title_receive_address": "Receive address", "address__title_yours": "Yours", - "address_details__derivation_path": "Derivation path:", + "address_details__derivation_path": "Derivation path", + "address_details__derivation_path_colon": "Derivation path:", + "address_details__account_info": "Account info", "address_details__title_receive_address": "Receive address", "address_details__title_receiving_to": "Receiving to", "authenticate__confirm_template": "Allow connected computer to confirm your {0} is genuine?", @@ -358,6 +364,7 @@ "inputs__previous": "PREVIOUS", "inputs__show": "SHOW", "inputs__space": "SPACE", + "instructions__continue_in_app": "Continue in the app", "instructions__swipe_up": "Swipe up", "instructions__tap_to_confirm": "Tap to confirm", "instructions__hold_to_confirm": "Hold to confirm", @@ -830,6 +837,7 @@ "words__array_of": "Array of", "words__blockhash": "Blockhash", "words__buying": "Buying", + "words__cancel_and_exit": "Cancel and exit", "words__confirm": "Confirm", "words__confirm_fee": "Confirm fee", "words__contains": "Contains", diff --git a/core/translations/es.json b/core/translations/es.json index 8ab1f422ea..4f57043244 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -46,7 +46,8 @@ "address__title_cosigner": "Cofirmante", "address__title_receive_address": "Dirección destino", "address__title_yours": "Tuyo", - "address_details__derivation_path": "Ruta de derivación:", + "address_details__derivation_path": "Ruta de derivación", + "address_details__derivation_path_colon": "Ruta de derivación:", "address_details__title_receive_address": "Dirección destino", "address_details__title_receiving_to": "Recibir en", "authenticate__confirm_template": "¿Confirmar con el ordenador conectado que tu {0} es original?", diff --git a/core/translations/fr.json b/core/translations/fr.json index e4acd9b3fc..2a33588dfc 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -46,7 +46,8 @@ "address__title_cosigner": "Cosignataire", "address__title_receive_address": "Adr. de récep.", "address__title_yours": "La vôtre", - "address_details__derivation_path": "Chemin de dérivation :", + "address_details__derivation_path": "Chemin de dérivation", + "address_details__derivation_path_colon": "Chemin de dérivation :", "address_details__title_receive_address": "Adr. de récep.", "address_details__title_receiving_to": "Récep. sur", "authenticate__confirm_template": "Autoriser l'ord. connecté à conf. que votre {0} est auth. ?", diff --git a/core/translations/order.json b/core/translations/order.json index 95885a2668..107719622e 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -9,7 +9,7 @@ "7": "address__title_cosigner", "8": "address__title_receive_address", "9": "address__title_yours", - "10": "address_details__derivation_path", + "10": "address_details__derivation_path_colon", "11": "address_details__title_receive_address", "12": "address_details__title_receiving_to", "13": "authenticate__confirm_template", @@ -860,5 +860,13 @@ "858": "backup__create_backup_to_prevent_loss", "859": "reset__check_backup_instructions", "860": "words__instructions", - "861": "words__not_recommended" + "861": "words__not_recommended", + "862": "address_details__account_info", + "863": "address__cancel_contact_support", + "864": "address__cancel_receive", + "865": "address__qr_code", + "866": "address_details__derivation_path", + "867": "instructions__continue_in_app", + "868": "words__cancel_and_exit", + "869": "address__confirmed" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 84db9e0693..ea42b34d37 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "5261bdad43d4e3cda9263ec6ce080218a0d897e02307ca8cafa2525d6a8d3d6b", - "datetime": "2024-05-17T10:18:14.246905", - "commit": "58db509b926fd99b3a36eb3bd550945bf1a139c4" + "merkle_root": "d2a00bb90ebc87448eb0786432129db7c4e67316de7c491bf854d8429d2db9b8", + "datetime": "2024-05-17T10:29:37.039056", + "commit": "b3379e14e0658ab2327bffdfff5227f6079c8f74" }, "history": [ { diff --git a/tests/input_flows.py b/tests/input_flows.py index 828c145e4f..d683d25223 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -434,7 +434,7 @@ def input_flow_tt(self) -> BRGeneratorType: layout = self.debug.swipe_left(wait=True) # address details assert "Multisig 2 of 3" in layout.screen_content() - TR.assert_in(layout.screen_content(), "address_details__derivation_path") + TR.assert_in(layout.screen_content(), "address_details__derivation_path_colon") # Three xpub pages with the same testing logic for xpub_num in range(3): @@ -508,7 +508,7 @@ def input_flow_t3t1(self) -> BRGeneratorType: layout = self.debug.swipe_left(wait=True) # address details assert "Multisig 2 of 3" in layout.screen_content() - TR.assert_in(layout.screen_content(), "address_details__derivation_path") + TR.assert_in(layout.screen_content(), "address_details__derivation_path_colon") # Three xpub pages with the same testing logic for xpub_num in range(3): From 091b51c9c46876de4300984915db4c945cb6b2a1 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 2 May 2024 23:07:08 +0200 Subject: [PATCH 140/626] fix(core/ui): T3T1 lints [no changelog] --- core/embed/rust/src/ui/component/border.rs | 10 + core/embed/rust/src/ui/component/jpeg.rs | 10 + core/embed/rust/src/ui/component/qr_code.rs | 10 + .../rust/src/ui/component/text/formatted.rs | 10 + .../rust/src/ui/component/text/paragraphs.rs | 10 + core/embed/rust/src/ui/component/timeout.rs | 1 + core/embed/rust/src/ui/flow/mod.rs | 4 +- .../rust/src/ui/flow/{flow.rs => swipe.rs} | 2 +- .../src/ui/model_mercury/component/button.rs | 2 +- .../src/ui/model_mercury/component/frame.rs | 14 +- .../model_mercury/component/prompt_screen.rs | 9 +- .../ui/model_mercury/component/share_words.rs | 9 +- .../model_mercury/component/status_screen.rs | 7 +- .../model_mercury/component/vertical_menu.rs | 2 +- .../rust/src/ui/model_mercury/constant.rs | 5 - .../flow/confirm_reset_create.rs | 6 +- .../flow/confirm_reset_recover.rs | 5 +- .../src/ui/model_mercury/flow/get_address.rs | 5 +- .../ui/model_mercury/flow/prompt_backup.rs | 5 +- .../ui/model_mercury/flow/show_share_words.rs | 10 +- .../ui/model_mercury/flow/warning_hi_prio.rs | 7 +- .../embed/rust/src/ui/model_mercury/layout.rs | 80 ++----- .../rust/src/ui/model_mercury/theme/mod.rs | 7 +- core/embed/rust/src/ui/model_tt/layout.rs | 38 +--- .../src/trezor/ui/layouts/mercury/__init__.py | 208 +++++++++--------- .../src/trezor/ui/layouts/mercury/progress.py | 16 +- 26 files changed, 229 insertions(+), 263 deletions(-) rename core/embed/rust/src/ui/flow/{flow.rs => swipe.rs} (99%) diff --git a/core/embed/rust/src/ui/component/border.rs b/core/embed/rust/src/ui/component/border.rs index 39248cfa94..35bc3a390e 100644 --- a/core/embed/rust/src/ui/component/border.rs +++ b/core/embed/rust/src/ui/component/border.rs @@ -61,3 +61,13 @@ where self.inner.trace(t) } } + +#[cfg(feature = "micropython")] +mod micropython { + use crate::{error::Error, micropython::obj::Obj, ui::layout::obj::ComponentMsgObj}; + impl<T: ComponentMsgObj> ComponentMsgObj for super::Border<T> { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + self.inner().msg_try_into_obj(msg) + } + } +} diff --git a/core/embed/rust/src/ui/component/jpeg.rs b/core/embed/rust/src/ui/component/jpeg.rs index aa2810775f..23f73bf3f4 100644 --- a/core/embed/rust/src/ui/component/jpeg.rs +++ b/core/embed/rust/src/ui/component/jpeg.rs @@ -67,3 +67,13 @@ impl crate::trace::Trace for Jpeg { t.component("Jpeg"); } } + +#[cfg(feature = "micropython")] +mod micropython { + use crate::{error::Error, micropython::obj::Obj, ui::layout::obj::ComponentMsgObj}; + impl ComponentMsgObj for super::Jpeg { + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!(); + } + } +} diff --git a/core/embed/rust/src/ui/component/qr_code.rs b/core/embed/rust/src/ui/component/qr_code.rs index a5ea3db96c..7b930f3996 100644 --- a/core/embed/rust/src/ui/component/qr_code.rs +++ b/core/embed/rust/src/ui/component/qr_code.rs @@ -189,3 +189,13 @@ impl crate::trace::Trace for Qr { t.string("text", self.text.as_str().into()); } } + +#[cfg(feature = "micropython")] +mod micropython { + use crate::{error::Error, micropython::obj::Obj, ui::layout::obj::ComponentMsgObj}; + impl ComponentMsgObj for super::Qr { + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!(); + } + } +} diff --git a/core/embed/rust/src/ui/component/text/formatted.rs b/core/embed/rust/src/ui/component/text/formatted.rs index ceeb899335..080b4fa8a1 100644 --- a/core/embed/rust/src/ui/component/text/formatted.rs +++ b/core/embed/rust/src/ui/component/text/formatted.rs @@ -160,3 +160,13 @@ impl crate::trace::Trace for FormattedText { t.bool("fits", matches!(fit.get(), Some(LayoutFit::Fitting { .. }))); } } + +#[cfg(feature = "micropython")] +mod micropython { + use crate::{error::Error, micropython::obj::Obj, ui::layout::obj::ComponentMsgObj}; + impl ComponentMsgObj for super::FormattedText { + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!(); + } + } +} diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index eb33aef3f9..f2b59d3a47 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -709,6 +709,16 @@ impl<'a, T: ParagraphSource<'a>> crate::trace::Trace for Checklist<T> { } } +#[cfg(feature = "micropython")] +mod micropython { + use crate::{error::Error, micropython::obj::Obj, ui::layout::obj::ComponentMsgObj}; + impl<'a, T: super::ParagraphSource<'a>> ComponentMsgObj for super::Checklist<T> { + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!(); + } + } +} + pub trait VecExt<'a> { fn add(&mut self, paragraph: Paragraph<'a>) -> &mut Self; } diff --git a/core/embed/rust/src/ui/component/timeout.rs b/core/embed/rust/src/ui/component/timeout.rs index aed7f508f0..708a106aa6 100644 --- a/core/embed/rust/src/ui/component/timeout.rs +++ b/core/embed/rust/src/ui/component/timeout.rs @@ -7,6 +7,7 @@ use crate::{ }, }; +#[derive(Clone)] pub struct Timeout { time_ms: u32, timer: Option<TimerToken>, diff --git a/core/embed/rust/src/ui/flow/mod.rs b/core/embed/rust/src/ui/flow/mod.rs index 4c4ddcb5b1..1de1888d6a 100644 --- a/core/embed/rust/src/ui/flow/mod.rs +++ b/core/embed/rust/src/ui/flow/mod.rs @@ -1,9 +1,9 @@ pub mod base; -mod flow; pub mod page; mod store; +mod swipe; pub use base::{FlowMsg, FlowState, Swipable}; -pub use flow::SwipeFlow; pub use page::{IgnoreSwipe, SwipePage}; pub use store::{flow_store, FlowStore}; +pub use swipe::SwipeFlow; diff --git a/core/embed/rust/src/ui/flow/flow.rs b/core/embed/rust/src/ui/flow/swipe.rs similarity index 99% rename from core/embed/rust/src/ui/flow/flow.rs rename to core/embed/rust/src/ui/flow/swipe.rs index e832b67d71..95c946d5dc 100644 --- a/core/embed/rust/src/ui/flow/flow.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -128,7 +128,7 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { if finished { self.transition = Transition::None; } - return result; + result } fn handle_swipe_child(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> Decision<Q> { diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 70ff0ae38c..1ff580f750 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -371,7 +371,7 @@ impl crate::trace::Trace for Button { ButtonContent::Text(text) => t.string("text", *text), ButtonContent::Icon(_) => t.bool("icon", true), ButtonContent::IconAndText(content) => { - t.string("text", content.text.into()); + t.string("text", content.text); t.bool("icon", true); } ButtonContent::IconBlend(_, _, _) => t.bool("icon", true), diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 3d6961786d..a8aec4e166 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -1,4 +1,3 @@ -use super::theme; use crate::{ strutil::TString, ui::{ @@ -11,9 +10,10 @@ use crate::{ }, }; -use super::{constant::SPACING, Button, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer}; +use super::{theme, Button, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer}; const TITLE_HEIGHT: i16 = 42; +const BUTTON_EXPAND_BORDER: i16 = 16; #[derive(Clone)] pub struct Frame<T> { @@ -84,8 +84,8 @@ where fn with_button(mut self, icon: Icon, msg: CancelInfoConfirmMsg, enabled: bool) -> Self { let touch_area = Insets { - left: self.border.left * 4, - bottom: self.border.bottom * 4, + left: BUTTON_EXPAND_BORDER, + bottom: BUTTON_EXPAND_BORDER, ..self.border }; self.button = Some(Child::new( @@ -166,8 +166,8 @@ where fn place(&mut self, bounds: Rect) -> Rect { let (mut header_area, mut content_area) = bounds.split_top(TITLE_HEIGHT); - content_area = content_area.inset(Insets::top(SPACING)); - header_area = header_area.inset(Insets::sides(SPACING)); + content_area = content_area.inset(Insets::top(theme::SPACING)); + header_area = header_area.inset(Insets::sides(theme::SPACING)); if let Some(b) = &mut self.button { let (rest, button_area) = header_area.split_right(TITLE_HEIGHT); @@ -186,7 +186,7 @@ where if let Some(footer) = &mut self.footer { // FIXME: spacer at the bottom might be applied also for usage without footer // but not for VerticalMenu - content_area = content_area.inset(Insets::bottom(SPACING)); + content_area = content_area.inset(Insets::bottom(theme::SPACING)); let (remaining, footer_area) = content_area.split_bottom(footer.height()); footer.place(footer_area); content_area = remaining; diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 28cf5ad873..d9c61466d0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -11,6 +11,9 @@ use crate::{ use super::{theme, Button, ButtonContent, ButtonMsg}; +const HOLD_DURATION_MS: u32 = 1000; +const BUTTON_SIZE: i16 = 110; + /// Component requesting an action from a user. Most typically embedded as a /// content of a Frame and promptin "Tap to confirm" or "Hold to XYZ". #[derive(Clone)] @@ -34,7 +37,7 @@ impl PromptScreen { let icon = theme::ICON_SIGN; let button = Button::new(ButtonContent::Icon(icon)) .styled(theme::button_default()) - .with_long_press(Duration::from_secs(2)); + .with_long_press(Duration::from_millis(HOLD_DURATION_MS)); Self { area: Rect::zero(), circle_color: theme::GREEN, @@ -79,7 +82,7 @@ impl Component for PromptScreen { self.area = bounds; self.button.place(Rect::snap( self.area.center(), - Offset::uniform(55), + Offset::uniform(BUTTON_SIZE), Alignment2D::CENTER, )); bounds @@ -126,7 +129,7 @@ impl Component for PromptScreen { .with_thickness(2) .render(target); }); - self.button.render(target); + self.button.render_content(target, self.button.style()); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 8ffcceb37f..f16f3a930e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -3,11 +3,10 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::{Component, Event, EventCtx, Paginate}, - constant::SPACING, + component::{Component, Event, EventCtx, Paginate, Swipe}, flow::Swipable, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, - model_mercury::component::{Footer, Swipe, SwipeDirection}, + model_mercury::component::{Footer, SwipeDirection}, shape, shape::Renderer, }, @@ -65,8 +64,8 @@ impl<'a> Component for ShareWords<'a> { fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; let used_area = bounds - .inset(Insets::sides(SPACING)) - .inset(Insets::bottom(SPACING)); + .inset(Insets::sides(theme::SPACING)) + .inset(Insets::bottom(theme::SPACING)); self.area_word = Rect::snap( used_area.center(), diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index b32fa790d4..dfd789dbeb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -90,13 +90,12 @@ impl Component for StatusScreen { match self.dismiss_type { DismissType::SwipeUp(ref mut swipe) => { let swipe_dir = swipe.event(ctx, event); - match swipe_dir { - Some(SwipeDirection::Up) => return Some(()), - _ => (), + if let Some(SwipeDirection::Up) = swipe_dir { + return Some(()); } } DismissType::Timeout(ref mut timeout) => { - if let Some(_) = timeout.event(ctx, event) { + if timeout.event(ctx, event).is_some() { return Some(()); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index c75f36b2b0..ac2b605f66 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -53,7 +53,7 @@ impl VerticalMenu { pub fn select_word(words: [TString<'static>; 3]) -> Self { let mut buttons_vec = VerticalMenuButtons::new(); for word in words { - let button = Button::with_text(word.into()).styled(theme::button_default()); + let button = Button::with_text(word).styled(theme::button_default()); unwrap!(buttons_vec.push(button)); } Self::new(buttons_vec) diff --git a/core/embed/rust/src/ui/model_mercury/constant.rs b/core/embed/rust/src/ui/model_mercury/constant.rs index dbf3ea9cb7..ba2c4a345b 100644 --- a/core/embed/rust/src/ui/model_mercury/constant.rs +++ b/core/embed/rust/src/ui/model_mercury/constant.rs @@ -20,8 +20,3 @@ pub const fn screen() -> Rect { Rect::from_top_left_and_size(Point::zero(), SIZE) } pub const SCREEN: Rect = screen(); - -/// Spacing between components (e.g. header and main content) and offsets from -/// the side of the screen. Generally applied everywhere except the top side of -/// the header. [px] -pub const SPACING: i16 = 2; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index c59d46b5c9..f115d7596f 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -1,6 +1,5 @@ use crate::{ error, - micropython::qstr::Qstr, strutil::TString, translations::TR, ui::{ @@ -65,16 +64,17 @@ use crate::{ ui::layout::obj::LayoutObj, }; +#[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_reset_create( n_args: usize, args: *const Obj, kwargs: *mut Map, ) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetCreate::new) } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetCreate::new_obj) } } impl ConfirmResetCreate { - fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + fn new_obj(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { let title: TString = TR::reset__title_create_wallet.into(); let par_array: [Paragraph<'static>; 3] = [ Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::reset__by_continuing) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs index 54dc32a8e4..6ca4ecbcf4 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs @@ -56,16 +56,17 @@ use crate::{ ui::layout::obj::LayoutObj, }; +#[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_reset_recover( n_args: usize, args: *const Obj, kwargs: *mut Map, ) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetRecover::new) } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetRecover::new_obj) } } impl ConfirmResetRecover { - fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + fn new_obj(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { let par_array: [Paragraph<'static>; 3] = [ Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::reset__by_continuing) .with_bottom_padding(17), diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 1d928e555a..8fc055cbbe 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -126,12 +126,13 @@ use crate::{ ui::layout::obj::LayoutObj, }; +#[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_get_address(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, GetAddress::new) } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, GetAddress::new_obj) } } impl GetAddress { - fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { let title: TString = "Receive address".into(); // TODO: address__title_receive_address w/o uppercase let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index e7ceeba10e..e13aa2c686 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -73,12 +73,13 @@ use crate::{ ui::layout::obj::LayoutObj, }; +#[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_prompt_backup(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, PromptBackup::new) } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, PromptBackup::new_obj) } } impl PromptBackup { - fn new(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { + fn new_obj(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { let title: TString = TR::backup__title_backup_wallet.into(); let par_array: [Paragraph<'static>; 1] = [Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index 8b88ffbe22..764b0efb89 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -8,10 +8,7 @@ use crate::{ text::paragraphs::{Paragraph, Paragraphs}, ComponentExt, }, - flow::{ - base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, - SwipePage, - }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, layout::obj::LayoutObj, }, }; @@ -63,12 +60,13 @@ impl FlowState for ShowShareWords { } } +#[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ShowShareWords::new) } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ShowShareWords::new_obj) } } impl ShowShareWords { - fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_words)?; let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; diff --git a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs index 68f60c91a9..2b94ddc880 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs @@ -66,15 +66,16 @@ use crate::{ ui::layout::obj::LayoutObj, }; +#[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_warning_hi_prio(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, WarningHiPrio::new) } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, WarningHiPrio::new_obj) } } impl WarningHiPrio { const EXTRA_PADDING: i16 = 6; - fn new(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { - let title: TString = kwargs.get_or(Qstr::MP_QSTR_title, TR::words__warning.try_into()?)?; + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = kwargs.get_or(Qstr::MP_QSTR_title, TR::words__warning.into())?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; let cancel: TString = TR::words__cancel_and_exit.into(); diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 3d491ba33d..fa4a8da1f9 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1,5 +1,4 @@ use core::{cmp::Ordering, convert::TryInto}; -use heapless::Vec; use crate::{ error::Error, @@ -17,7 +16,6 @@ use crate::{ image::BlendedImage, jpeg::{ImageBuffer, Jpeg}, paginated::{PageMsg, Paginate}, - placed::GridPlaced, text::{ op::OpTextLayout, paragraphs::{ @@ -26,7 +24,7 @@ use crate::{ }, TextStyle, }, - Border, Component, Empty, FormattedText, Label, Never, Qr, Timeout, + Border, Component, Empty, FormattedText, Label, Never, Timeout, }, display::tjpgd::jpeg_info, geometry, @@ -187,7 +185,6 @@ impl ComponentMsgObj for SelectWordCount { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { SelectWordCountMsg::Selected(n) => n.try_into(), - _ => Err(Error::TypeError), } } } @@ -201,18 +198,14 @@ impl ComponentMsgObj for VerticalMenu { } impl ComponentMsgObj for StatusScreen { - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - () => Ok(CONFIRMED.as_obj()), - } + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + Ok(CONFIRMED.as_obj()) } } impl ComponentMsgObj for PromptScreen { - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - () => Ok(CONFIRMED.as_obj()), - } + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + Ok(CONFIRMED.as_obj()) } } @@ -243,12 +236,6 @@ where } } -impl ComponentMsgObj for Jpeg { - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!() - } -} - // Clippy/compiler complains about conflicting implementations // TODO move the common impls to a common module #[cfg(not(feature = "clippy"))] @@ -261,21 +248,6 @@ where } } -impl ComponentMsgObj for FormattedText { - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!() - } -} - -impl<'a, T> ComponentMsgObj for Checklist<T> -where - T: ParagraphSource<'a>, -{ - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!() - } -} - impl<F> ComponentMsgObj for NumberInputDialog<F> where F: Fn(u32) -> TString<'static>, @@ -289,15 +261,6 @@ where } } -impl<T> ComponentMsgObj for Border<T> -where - T: ComponentMsgObj, -{ - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - self.inner().msg_try_into_obj(msg) - } -} - impl ComponentMsgObj for Progress { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() @@ -320,15 +283,6 @@ impl ComponentMsgObj for Lockscreen<'_> { } } -impl<'a, T> ComponentMsgObj for (GridPlaced<Paragraphs<T>>, GridPlaced<FormattedText>) -where - T: ParagraphSource<'a>, -{ - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!() - } -} - // Clippy/compiler complains about conflicting implementations #[cfg(not(feature = "clippy"))] impl<T> ComponentMsgObj for (Timeout, T) @@ -340,12 +294,6 @@ where } } -impl ComponentMsgObj for Qr { - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!(); - } -} - impl<T> ComponentMsgObj for SimplePage<T> where T: ComponentMsgObj + Paginate, @@ -596,7 +544,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let verb: TString = kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.try_into()?)?; + let verb: TString = kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.into())?; let extra: Option<TString> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; @@ -669,7 +617,7 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m jpeg = ImageBuffer::from_slice(theme::IMAGE_HOMESCREEN); } - if let None = jpeg_info(jpeg.data()) { + if jpeg_info(jpeg.data()).is_none() { return Err(value_error!("Invalid image.")); }; @@ -871,7 +819,7 @@ fn new_show_modal( let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; - let button: TString = kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.try_into()?)?; + let button: TString = kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.into())?; let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; let time_ms: u32 = kwargs.get_or(Qstr::MP_QSTR_time_ms, 0)?; @@ -965,7 +913,7 @@ extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map let controls = Button::cancel_confirm( Button::with_icon(theme::ICON_CANCEL), - Button::with_text(TR::buttons__confirm.try_into()?).styled(theme::button_confirm()), + Button::with_text(TR::buttons__confirm.into()).styled(theme::button_confirm()), true, ); @@ -1031,9 +979,9 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let description: TString = TR::addr_mismatch__contact_support_at.try_into()?; - let url: TString = TR::addr_mismatch__support_url.try_into()?; - let button: TString = TR::buttons__quit.try_into()?; + let description: TString = TR::addr_mismatch__contact_support_at.into(); + let url: TString = TR::addr_mismatch__support_url.into(); + let button: TString = TR::buttons__quit.into(); let icon = BlendedImage::new( theme::IMAGE_BG_OCTAGON, @@ -1344,9 +1292,9 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let paragraphs = Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]); let notification: TString = if dry_run { - TR::recovery__title_dry_run.try_into()? + TR::recovery__title_dry_run.into() } else { - TR::recovery__title.try_into()? + TR::recovery__title.into() }; let content = SwipeUpScreen::new(paragraphs); diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index efec7cf409..b8546870c5 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -676,10 +676,15 @@ pub const TEXT_CHECKLIST_SELECTED: TextStyle = pub const TEXT_CHECKLIST_DONE: TextStyle = TextStyle::new(Font::NORMAL, GREEN_DARK, BG, GREY_LIGHT, GREY_LIGHT); +/// Spacing between components (e.g. header and main content) and offsets from +/// the side of the screen. Generally applied everywhere except the top side of +/// the header. [px] +pub const SPACING: i16 = 2; + pub const CONTENT_BORDER: i16 = 0; pub const BUTTON_HEIGHT: i16 = 62; pub const BUTTON_WIDTH: i16 = 78; -pub const BUTTON_SPACING: i16 = 2; +pub const BUTTON_SPACING: i16 = SPACING; pub const KEYBOARD_SPACING: i16 = BUTTON_SPACING; pub const CHECKLIST_SPACING: i16 = 10; pub const RECOVERY_SPACING: i16 = 18; diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index ec5681c771..cf50c034b2 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -25,7 +25,7 @@ use crate::{ }, TextStyle, }, - Border, Component, Empty, FormattedText, Label, Never, Qr, Timeout, + Border, Component, Empty, FormattedText, Label, Never, Timeout, }, geometry, layout::{ @@ -195,12 +195,6 @@ where } } -impl ComponentMsgObj for Jpeg { - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!() - } -} - // Clippy/compiler complains about conflicting implementations // TODO move the common impls to a common module #[cfg(not(feature = "clippy"))] @@ -213,21 +207,6 @@ where } } -impl ComponentMsgObj for FormattedText { - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!() - } -} - -impl<'a, T> ComponentMsgObj for Checklist<T> -where - T: ParagraphSource<'a>, -{ - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!() - } -} - impl<F> ComponentMsgObj for NumberInputDialog<F> where F: Fn(u32) -> TString<'static>, @@ -241,15 +220,6 @@ where } } -impl<T> ComponentMsgObj for Border<T> -where - T: ComponentMsgObj, -{ - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - self.inner().msg_try_into_obj(msg) - } -} - impl ComponentMsgObj for Progress { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() @@ -292,12 +262,6 @@ where } } -impl ComponentMsgObj for Qr { - fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { - unreachable!(); - } -} - impl<T> ComponentMsgObj for SimplePage<T> where T: ComponentMsgObj + Paginate, diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 57e799f7cc..71675f7a35 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import TR, io, loop, ui +from trezor import TR, io, loop, ui, utils from trezor.enums import ButtonRequestType from trezor.wire import ActionCancelled from trezor.wire.context import wait as ctx_wait @@ -942,118 +942,118 @@ async def confirm_summary( await raise_if_not_confirmed(with_info(total_layout, info_layout, br_type, br_code)) -async def confirm_ethereum_tx( - recipient: str, - total_amount: str, - maximum_fee: str, - items: Iterable[tuple[str, str]], - br_type: str = "confirm_ethereum_tx", - br_code: ButtonRequestType = ButtonRequestType.SignTx, - chunkify: bool = False, -) -> None: - total_layout = RustLayout( - trezorui2.confirm_total( - title=TR.words__title_summary, - items=[ - (f"{TR.words__amount}:", total_amount), - (TR.send__maximum_fee, maximum_fee), - ], - info_button=True, - cancel_arrow=True, - ) - ) - info_layout = RustLayout( - trezorui2.show_info_with_cancel( - title=TR.confirm_total__title_fee, - items=items, +if not utils.BITCOIN_ONLY: + + async def confirm_ethereum_tx( + recipient: str, + total_amount: str, + maximum_fee: str, + items: Iterable[tuple[str, str]], + br_type: str = "confirm_ethereum_tx", + br_code: ButtonRequestType = ButtonRequestType.SignTx, + chunkify: bool = False, + ) -> None: + total_layout = RustLayout( + trezorui2.confirm_total( + title=TR.words__title_summary, + items=[ + (f"{TR.words__amount}:", total_amount), + (TR.send__maximum_fee, maximum_fee), + ], + info_button=True, + cancel_arrow=True, + ) ) - ) - - while True: - # Allowing going back and forth between recipient and summary/details - await confirm_blob( - br_type, - TR.words__recipient.upper(), - recipient, - verb=TR.buttons__continue, - chunkify=chunkify, + info_layout = RustLayout( + trezorui2.show_info_with_cancel( + title=TR.confirm_total__title_fee, + items=items, + ) ) - try: - total_layout.request_complete_repaint() - await raise_if_not_confirmed( - with_info(total_layout, info_layout, br_type, br_code) + while True: + # Allowing going back and forth between recipient and summary/details + await confirm_blob( + br_type, + TR.words__recipient.upper(), + recipient, + verb=TR.buttons__continue, + chunkify=chunkify, ) - break - except ActionCancelled: - continue - - -async def confirm_ethereum_staking_tx( - title: str, - intro_question: str, - verb: str, - total_amount: str, - maximum_fee: str, - address: str, - address_title: str, - info_items: Iterable[tuple[str, str]], - chunkify: bool = False, - br_type: str = "confirm_ethereum_staking_tx", - br_code: ButtonRequestType = ButtonRequestType.SignTx, -) -> None: - # intro - await confirm_value( - title, - intro_question, - "", - br_type, - br_code, - verb=verb, - value_text_mono=False, - info_items=(("", address),), - info_title=address_title, - chunkify_info=chunkify, - ) + try: + total_layout.request_complete_repaint() + await raise_if_not_confirmed( + with_info(total_layout, info_layout, br_type, br_code) + ) + break + except ActionCancelled: + continue - # confirmation - if verb == TR.ethereum__staking_claim: - items = ((TR.send__maximum_fee, maximum_fee),) - else: - items = ( - (TR.words__amount + ":", total_amount), - (TR.send__maximum_fee, maximum_fee), + async def confirm_ethereum_staking_tx( + title: str, + intro_question: str, + verb: str, + total_amount: str, + maximum_fee: str, + address: str, + address_title: str, + info_items: Iterable[tuple[str, str]], + chunkify: bool = False, + br_type: str = "confirm_ethereum_staking_tx", + br_code: ButtonRequestType = ButtonRequestType.SignTx, + ) -> None: + + # intro + await confirm_value( + title, + intro_question, + "", + br_type, + br_code, + verb=verb, + value_text_mono=False, + info_items=(("", address),), + info_title=address_title, + chunkify_info=chunkify, ) - await confirm_summary( - items, # items - title=title, - info_title=TR.confirm_total__title_fee, - info_items=info_items, - br_type=br_type, - br_code=br_code, - ) + # confirmation + if verb == TR.ethereum__staking_claim: + items = ((TR.send__maximum_fee, maximum_fee),) + else: + items = ( + (TR.words__amount + ":", total_amount), + (TR.send__maximum_fee, maximum_fee), + ) + await confirm_summary( + items, # items + title=title, + info_title=TR.confirm_total__title_fee, + info_items=info_items, + br_type=br_type, + br_code=br_code, + ) -async def confirm_solana_tx( - amount: str, - fee: str, - items: Iterable[tuple[str, str]], - amount_title: str | None = None, - fee_title: str | None = None, - br_type: str = "confirm_solana_tx", - br_code: ButtonRequestType = ButtonRequestType.SignTx, -): - amount_title = ( - amount_title if amount_title is not None else f"{TR.words__amount}:" - ) # def_arg - fee_title = fee_title or TR.words__fee # def_arg - await confirm_summary( - ((amount_title, amount), (fee_title, fee)), - info_items=items, - br_type=br_type, - br_code=br_code, - ) + async def confirm_solana_tx( + amount: str, + fee: str, + items: Iterable[tuple[str, str]], + amount_title: str | None = None, + fee_title: str | None = None, + br_type: str = "confirm_solana_tx", + br_code: ButtonRequestType = ButtonRequestType.SignTx, + ): + amount_title = ( + amount_title if amount_title is not None else f"{TR.words__amount}:" + ) # def_arg + fee_title = fee_title or TR.words__fee # def_arg + await confirm_summary( + ((amount_title, amount), (fee_title, fee)), + info_items=items, + br_type=br_type, + br_code=br_code, + ) async def confirm_joint_total(spending_amount: str, total_amount: str) -> None: diff --git a/core/src/trezor/ui/layouts/mercury/progress.py b/core/src/trezor/ui/layouts/mercury/progress.py index 5997d247f5..472e6d30ee 100644 --- a/core/src/trezor/ui/layouts/mercury/progress.py +++ b/core/src/trezor/ui/layouts/mercury/progress.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import TR, ui +from trezor import TR, ui, utils if TYPE_CHECKING: from typing import Any @@ -60,13 +60,13 @@ def pin_progress(message: str, description: str) -> ProgressLayout: return progress(message, description=description) -def monero_keyimage_sync_progress() -> ProgressLayout: - return progress("", TR.progress__syncing) +if not utils.BITCOIN_ONLY: + def monero_keyimage_sync_progress() -> ProgressLayout: + return progress("", TR.progress__syncing) -def monero_live_refresh_progress() -> ProgressLayout: - return progress("", TR.progress__refreshing, indeterminate=True) + def monero_live_refresh_progress() -> ProgressLayout: + return progress("", TR.progress__refreshing, indeterminate=True) - -def monero_transaction_progress_inner() -> ProgressLayout: - return progress("", TR.progress__signing_transaction) + def monero_transaction_progress_inner() -> ProgressLayout: + return progress("", TR.progress__signing_transaction) From 687d773547bd5e0ed80874b3c4048038a668fe6d Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 2 May 2024 23:12:50 +0200 Subject: [PATCH 141/626] build(core/firmware): TREZOR_MODEL=T3T1 implies NEW_RENDERING=1 [no changelog] --- core/SConscript.firmware | 2 +- core/SConscript.unix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 2a8dc5849c..32e006a9b1 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -15,7 +15,7 @@ PYOPT = ARGUMENTS.get('PYOPT', '1') DISABLE_OPTIGA = ARGUMENTS.get('DISABLE_OPTIGA', '0') == '1' HW_REVISION = ARGUMENTS.get('HW_REVISION', None) THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol -NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' or TREZOR_MODEL in ('T3T1',) FEATURE_FLAGS = { diff --git a/core/SConscript.unix b/core/SConscript.unix index 4013453aa1..e4736c0d85 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -10,7 +10,7 @@ TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) HW_REVISION ='emulator' THP = ARGUMENTS.get('THP', '0') == '1' # Trezor-Host Protocol -NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' or TREZOR_MODEL in ('T3T1',) FEATURES_WANTED = ["input", "sd_card", "dma2d", "optiga", "sbu"] From 6ddf1c849a675714c624f579665df0e538d520b6 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Fri, 3 May 2024 00:42:51 +0200 Subject: [PATCH 142/626] fix(core/ui): respect animation_disabled() on T3T1 --- core/embed/rust/src/ui/flow/page.rs | 14 ++++++++++---- core/embed/rust/src/ui/flow/swipe.rs | 7 +++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 81bf465214..06b8ba437f 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -7,6 +7,7 @@ use crate::{ flow::base::Swipable, geometry::{Axis, Offset, Rect}, shape::Renderer, + util, }, }; @@ -124,6 +125,15 @@ impl<T: Component + Paginate + Clone> Swipable for SwipePage<T> { } _ => {} }; + self.current = match direction { + SwipeDirection::Left | SwipeDirection::Up => (self.current + 1).min(self.pages - 1), + SwipeDirection::Right | SwipeDirection::Down => self.current.saturating_sub(1), + }; + if util::animation_disabled() { + self.inner.change_page(self.current); + ctx.request_paint(); + return true; + } self.transition = Some(Transition { cloned: unwrap!(Gc::new(self.inner.clone())), animation: Animation::new( @@ -134,10 +144,6 @@ impl<T: Component + Paginate + Clone> Swipable for SwipePage<T> { ), direction, }); - self.current = match direction { - SwipeDirection::Left | SwipeDirection::Up => (self.current + 1).min(self.pages - 1), - SwipeDirection::Right | SwipeDirection::Down => self.current.saturating_sub(1), - }; self.inner.change_page(self.current); ctx.request_anim_frame(); ctx.request_paint(); diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 95c946d5dc..599026f899 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -7,6 +7,7 @@ use crate::{ flow::{base::Decision, FlowMsg, FlowState, FlowStore}, geometry::{Offset, Rect}, shape::Renderer, + util, }, }; @@ -63,6 +64,12 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { self.transition = Transition::Internal; return; } + if util::animation_disabled() { + self.state = state; + self.store.event(state.index(), ctx, Event::Attach); + ctx.request_paint(); + return; + } self.transition = Transition::External { prev_state: self.state, animation: Animation::new( From e0fece20501dcb683adff2ae5043afd1f952a0c8 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 7 May 2024 00:06:32 +0200 Subject: [PATCH 143/626] fix(core/ui): T3T1 UI tests: GetAddress [no changelog] --- core/embed/rust/src/ui/flow/page.rs | 11 ++ .../component/address_details.rs | 6 +- .../model_mercury/component/prompt_screen.rs | 2 +- .../src/ui/model_mercury/flow/get_address.rs | 2 +- tests/buttons.py | 8 + tests/input_flows.py | 164 +++++++++++++----- 6 files changed, 147 insertions(+), 46 deletions(-) diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 06b8ba437f..e34ce9196a 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -45,6 +45,17 @@ impl<T: Component + Paginate + Clone> SwipePage<T> { } } + pub fn horizontal(inner: T) -> Self { + Self { + inner, + bounds: Rect::zero(), + axis: Axis::Horizontal, + pages: 1, + current: 0, + transition: None, + } + } + fn handle_transition(ctx: &mut EventCtx, event: Event, transition: &mut Transition<T>) -> bool { let mut finished = false; if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index 0ecb87a4e2..79cde1c1f1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -56,14 +56,12 @@ impl AddressDetails { } let result = Self { details: Frame::left_aligned(details_title, para.into_paragraphs()) - .with_cancel_button() - .with_border(theme::borders_horizontal_scroll()), + .with_cancel_button(), xpub_view: Frame::left_aligned( " \n ".into(), Paragraph::new(&theme::TEXT_MONO_GREY_LIGHT, "").into_paragraphs(), ) - .with_cancel_button() - .with_border(theme::borders_horizontal_scroll()), + .with_cancel_button(), xpubs: Vec::new(), xpub_page_count: Vec::new(), current_page: 0, diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index d9c61466d0..1f9a99be3f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -139,7 +139,7 @@ impl crate::ui::flow::Swipable for PromptScreen {} #[cfg(feature = "ui_debug")] impl crate::trace::Trace for PromptScreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("StatusScreen"); + t.component("PromptScreen"); t.child("button", &self.button); } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 8fc055cbbe..d598cd378a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -222,7 +222,7 @@ impl GetAddress { let [xtitle, text]: [TString; 2] = util::iter_into_array(i)?; ad.add_xpub(xtitle, text)?; } - let content_account = SwipePage::vertical(ad).map(|_| Some(FlowMsg::Cancelled)); + let content_account = SwipePage::horizontal(ad).map(|_| Some(FlowMsg::Cancelled)); // Cancel let content_cancel_info = Frame::left_aligned( diff --git a/tests/buttons.py b/tests/buttons.py index 40a5ee6958..84f71fac7d 100644 --- a/tests/buttons.py +++ b/tests/buttons.py @@ -40,6 +40,14 @@ def grid(dim: int, grid_cells: int, cell: int) -> int: (MID, grid(DISPLAY_HEIGHT, 5, 4)), ] +VERTICAL_MENU = [ + (MID, grid(DISPLAY_HEIGHT, 4, 1)), + (MID, grid(DISPLAY_HEIGHT, 4, 2)), + (MID, grid(DISPLAY_HEIGHT, 4, 3)), +] + +TAP_TO_CONFIRM = VERTICAL_MENU[1] + BUTTON_LETTERS_BIP39 = ("abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "yz") BUTTON_LETTERS_SLIP39 = ("ab", "cd", "ef", "ghij", "klm", "nopq", "rs", "tuv", "wxyz") diff --git a/tests/input_flows.py b/tests/input_flows.py index d683d25223..c3abebdf82 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -358,15 +358,30 @@ def input_flow_t3t1(self) -> BRGeneratorType: yield self.debug.click(buttons.CORNER_BUTTON, wait=True) # synchronize; TODO get rid of this once we have single-global-layout - self.debug.synchronize_at("SimplePage") - - self.debug.swipe_left(wait=True) - self.debug.swipe_right(wait=True) - self.debug.swipe_left(wait=True) + self.debug.synchronize_at("VerticalMenu") + # menu + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + self.debug.synchronize_at("Qr") + # qr code self.debug.click(buttons.CORNER_BUTTON, wait=True) - self.debug.press_no(wait=True) - self.debug.press_no(wait=True) - self.debug.press_yes() + # menu + self.debug.click(buttons.VERTICAL_MENU[1], wait=True) + # address details + self.debug.click(buttons.CORNER_BUTTON, wait=True) + # menu + self.debug.click(buttons.VERTICAL_MENU[2], wait=True) + # cancel + self.debug.swipe_up(wait=True) + # really cancel + self.debug.click(buttons.CORNER_BUTTON, wait=True) + # menu + layout = self.debug.click(buttons.CORNER_BUTTON, wait=True) + + while "PromptScreen" not in layout.all_components(): + layout = self.debug.swipe_up(wait=True) + self.debug.synchronize_at("PromptScreen") + # tap to confirm + self.debug.click(buttons.TAP_TO_CONFIRM) class InputFlowShowAddressQRCodeCancel(InputFlowBase): @@ -403,12 +418,23 @@ def input_flow_t3t1(self) -> BRGeneratorType: yield self.debug.click(buttons.CORNER_BUTTON, wait=True) # synchronize; TODO get rid of this once we have single-global-layout - self.debug.synchronize_at("SimplePage") - - self.debug.swipe_left(wait=True) + self.debug.synchronize_at("VerticalMenu") + # menu + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + self.debug.synchronize_at("Qr") + # qr code self.debug.click(buttons.CORNER_BUTTON, wait=True) - self.debug.press_no(wait=True) - self.debug.press_yes() + # menu + self.debug.click(buttons.VERTICAL_MENU[1], wait=True) + # address details + self.debug.click(buttons.CORNER_BUTTON, wait=True) + # menu + self.debug.click(buttons.VERTICAL_MENU[2], wait=True) + # cancel + self.debug.swipe_up(wait=True) + self.debug.synchronize_at("PromptScreen") + # really cancel + self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) class InputFlowShowMultisigXPUBs(InputFlowBase): @@ -494,36 +520,53 @@ def input_flow_tr(self) -> BRGeneratorType: def input_flow_t3t1(self) -> BRGeneratorType: yield # multisig address warning - self.debug.press_yes() + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.synchronize_at("VerticalMenu") + self.debug.click(buttons.VERTICAL_MENU[1]) yield # show address layout = self.debug.wait_layout() TR.assert_in(layout.title(), "address__title_receive_address") - assert "(MULTISIG)" in layout.title() assert layout.text_content().replace(" ", "") == self.address - self.debug.click(buttons.CORNER_BUTTON) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + assert "VerticalMenu" in self.all_components() + # menu + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + self.debug.synchronize_at("Qr") + # qr code assert "Qr" in self.all_components() - - layout = self.debug.swipe_left(wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + # menu + assert "VerticalMenu" in self.all_components() + self.debug.click(buttons.VERTICAL_MENU[1], wait=True) + layout = self.debug.synchronize_at("AddressDetails") # address details assert "Multisig 2 of 3" in layout.screen_content() - TR.assert_in(layout.screen_content(), "address_details__derivation_path_colon") + TR.assert_in(layout.screen_content(), "address_details__derivation_path") - # Three xpub pages with the same testing logic - for xpub_num in range(3): - expected_title = f"MULTISIG XPUB #{xpub_num + 1}" + # three xpub pages with the same testing logic + for _xpub_num in range(3): + layout = self.debug.swipe_left(wait=True) layout = self.debug.swipe_left(wait=True) - assert expected_title in layout.title() - content = layout.text_content().replace(" ", "") - assert self.xpubs[xpub_num] in content self.debug.click(buttons.CORNER_BUTTON, wait=True) - # show address - self.debug.press_no(wait=True) - # address mismatch - self.debug.press_no(wait=True) - # show address + layout = self.debug.synchronize_at("VerticalMenu") + # menu + self.debug.click(buttons.VERTICAL_MENU[2], wait=True) + # cancel + self.debug.swipe_up(wait=True) + # really cancel + self.debug.click(buttons.CORNER_BUTTON, wait=True) + layout = self.debug.synchronize_at("VerticalMenu") + # menu + self.debug.click(buttons.CORNER_BUTTON, wait=True) + layout = self.debug.synchronize_at("Paragraphs") + # address + while "PromptScreen" not in layout.all_components(): + layout = self.debug.swipe_up(wait=True) + self.debug.synchronize_at("PromptScreen") + # tap to confirm self.debug.press_yes() @@ -598,19 +641,42 @@ def input_flow_t3t1(self) -> BRGeneratorType: if "coinjoin" in layout.title().lower() or br.code == B.UnknownDerivationPath: self.debug.press_yes() br = yield + layout = self.debug.wait_layout() + + TR.assert_in(layout.title(), "address__title_receive_address") self.debug.click(buttons.CORNER_BUTTON, wait=True) - # synchronize; TODO get rid of this once we have single-global-layout - self.debug.synchronize_at("SimplePage") + assert "VerticalMenu" in self.all_components() + # menu + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + self.debug.synchronize_at("Qr") + # qr code + assert "Qr" in self.all_components() + self.debug.click(buttons.CORNER_BUTTON, wait=True) + # menu + assert "VerticalMenu" in self.all_components() + self.debug.click(buttons.VERTICAL_MENU[1], wait=True) + layout = self.debug.synchronize_at("AddressDetails") + # address details + TR.assert_in(layout.screen_content(), "address_details__derivation_path") - self.debug.swipe_left(wait=True) - self.debug.swipe_right(wait=True) - self.debug.swipe_left(wait=True) self.debug.click(buttons.CORNER_BUTTON, wait=True) - self.debug.press_no(wait=True) - self.debug.press_no(wait=True) - for _ in range(br.pages - 1): - self.debug.swipe_up(wait=True) + layout = self.debug.synchronize_at("VerticalMenu") + # menu + self.debug.click(buttons.VERTICAL_MENU[2], wait=True) + # cancel + self.debug.swipe_up(wait=True) + # really cancel + self.debug.click(buttons.CORNER_BUTTON, wait=True) + layout = self.debug.synchronize_at("VerticalMenu") + # menu + self.debug.click(buttons.CORNER_BUTTON, wait=True) + layout = self.debug.synchronize_at("Paragraphs") + # address + while "PromptScreen" not in layout.all_components(): + layout = self.debug.swipe_up(wait=True) + self.debug.synchronize_at("PromptScreen") + # tap to confirm self.debug.press_yes() @@ -1133,7 +1199,7 @@ def __init__(self, client: Client): self.mnemonic = None # NOTE: same as above, just two more YES - def input_flow_common(self) -> BRGeneratorType: + def input_flow_tt(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed # 3. Confirm warning @@ -1142,6 +1208,24 @@ def input_flow_common(self) -> BRGeneratorType: # mnemonic phrases and rest self.mnemonic = yield from get_mnemonic_and_confirm_success(self.debug) + def input_flow_tr(self) -> BRGeneratorType: + # 1. Confirm Reset + # 2. Backup your seed + # 3. Confirm warning + yield from click_through(self.debug, screens=3, code=B.ResetDevice) + + # mnemonic phrases and rest + self.mnemonic = yield from get_mnemonic_and_confirm_success(self.debug) + + def input_flow_t3t1(self) -> BRGeneratorType: + # 1. Confirm Reset x3 + # 2. Backup your seed + # 3. Confirm warning + yield from click_through(self.debug, screens=3, code=B.ResetDevice) + + # mnemonic phrases and rest + self.mnemonic = yield from get_mnemonic_and_confirm_success(self.debug) + class InputFlowBip39ResetPIN(InputFlowBase): def __init__(self, client: Client): From f3ced5e831ec0c43986640b394300623900030c6 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 9 May 2024 11:54:27 +0200 Subject: [PATCH 144/626] feat(core): expand menu button touch area a bit more [no changelog] --- core/embed/rust/src/ui/model_mercury/component/frame.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index a8aec4e166..26c50e9d56 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -13,7 +13,7 @@ use crate::{ use super::{theme, Button, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer}; const TITLE_HEIGHT: i16 = 42; -const BUTTON_EXPAND_BORDER: i16 = 16; +const BUTTON_EXPAND_BORDER: i16 = 32; #[derive(Clone)] pub struct Frame<T> { @@ -83,11 +83,7 @@ where } fn with_button(mut self, icon: Icon, msg: CancelInfoConfirmMsg, enabled: bool) -> Self { - let touch_area = Insets { - left: BUTTON_EXPAND_BORDER, - bottom: BUTTON_EXPAND_BORDER, - ..self.border - }; + let touch_area = Insets::uniform(BUTTON_EXPAND_BORDER); self.button = Some(Child::new( Button::with_icon(icon) .with_expanded_touch_area(touch_area) From 14c81f68607f1c5e21af9cb56e61242f388d37c0 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 6 May 2024 11:35:16 +0200 Subject: [PATCH 145/626] feat(core): T3T1 loaders improvement [no changelog] --- .../src/ui/model_mercury/bootloader/mod.rs | 26 ++++----- .../src/ui/model_mercury/component/loader.rs | 54 +++++++++---------- .../ui/model_mercury/component/progress.rs | 35 +++++------- core/embed/rust/src/ui/model_mercury/mod.rs | 1 + .../embed/rust/src/ui/model_mercury/shapes.rs | 32 +++++++++++ .../rust/src/ui/model_mercury/theme/mod.rs | 16 ++---- 6 files changed, 89 insertions(+), 75 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/shapes.rs diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 9d056a441e..5fce9d5e2d 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -36,8 +36,9 @@ use super::theme::BLACK; #[cfg(feature = "new_rendering")] use crate::ui::{ constant, - display::toif::Toif, + display::{toif::Toif, LOADER_MAX}, geometry::{Alignment, Alignment2D}, + model_mercury::shapes::render_loader, shape, shape::render_on_display, }; @@ -122,19 +123,18 @@ impl ModelMercuryFeatures { let center_text_offset: i16 = 10; let center = SCREEN.center() + Offset::y(loader_offset); let inactive_color = bg_color.blend(fg_color, 85); + let end = ((progress as i32 * 8 * shape::PI4 as i32) / 1000) as i16; - shape::Circle::new(center, constant::LOADER_OUTER) - .with_bg(inactive_color) - .render(target); - - shape::Circle::new(center, constant::LOADER_OUTER) - .with_bg(fg_color) - .with_end_angle(360.0 * progress as f32 / 1000.0) - .render(target); - - shape::Circle::new(center, constant::LOADER_INNER + 2) - .with_bg(bg_color) - .render(target); + render_loader( + center, + inactive_color, + fg_color, + bg_color, + 0, + end, + progress >= LOADER_MAX, + target, + ); if let Some((icon, color)) = icon { shape::ToifImage::new(center, icon.toif) diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index ed564bdb1e..f12e8e3087 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -5,8 +5,9 @@ use crate::{ ui::{ animation::Animation, component::{Component, Event, EventCtx, Pad}, - display::{self, toif::Icon, Color}, + display::{self, toif::Icon, Color, LOADER_MAX}, geometry::{Alignment2D, Offset, Rect}, + model_mercury::shapes::render_loader, shape::{self, Renderer}, util::animation_disabled, }, @@ -52,7 +53,7 @@ impl Loader { pub fn with_styles(styles: LoaderStyleSheet) -> Self { Self { - pad: Pad::with_background(styles.normal.background_color), + pad: Pad::with_background(styles.active.background_color), state: State::Initial, growing_duration: Duration::from_millis(GROWING_DURATION_MS), shrinking_duration: Duration::from_millis(SHRINKING_DURATION_MS), @@ -190,17 +191,13 @@ impl Component for Loader { let now = Instant::now(); if let Some(progress) = self.progress(now) { - let style = if progress < display::LOADER_MAX { - self.styles.normal - } else { - self.styles.active - }; + let style = self.styles.active; self.pad.paint(); display::loader( progress, self.offset_y, - style.loader_color, + style.active, style.background_color, style.icon, ); @@ -216,30 +213,29 @@ impl Component for Loader { let now = Instant::now(); if let Some(progress) = self.progress(now) { - let style = if progress < display::LOADER_MAX { - self.styles.normal - } else { - self.styles.active - }; + let style = self.styles.active; self.pad.render(target); let center = self.pad.area.center(); - let inactive_color = Color::black().blend(style.loader_color, 85); - - shape::Circle::new(center, constant::LOADER_OUTER) - .with_bg(inactive_color) - .render(target); - - shape::Circle::new(center, constant::LOADER_OUTER) - .with_bg(style.loader_color) - .with_end_angle(360.0 * progress as f32 / 1000.0) - .render(target); - - shape::Circle::new(center, constant::LOADER_INNER) - .with_bg(style.background_color) - .render(target); + let inactive_color = style.inactive; + let active_color = style.active; + let background_color = style.background_color; + + let end = ((progress as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let start = 0; + + render_loader( + center, + inactive_color, + active_color, + background_color, + start, + end, + progress >= LOADER_MAX, + target, + ); if let Some((icon, color)) = style.icon { shape::ToifImage::new(center, icon.toif) @@ -252,13 +248,13 @@ impl Component for Loader { } pub struct LoaderStyleSheet { - pub normal: &'static LoaderStyle, pub active: &'static LoaderStyle, } pub struct LoaderStyle { pub icon: Option<(Icon, Color)>, - pub loader_color: Color, + pub active: Color, + pub inactive: Color, pub background_color: Color, } diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index 6943792738..aaa1cd6bd4 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -9,9 +9,9 @@ use crate::{ text::paragraphs::{Paragraph, Paragraphs}, Child, Component, Event, EventCtx, Label, Never, Pad, }, - display::{self, Font}, + display::{self, Font, LOADER_MAX}, geometry::{Insets, Offset, Rect}, - model_mercury::constant, + model_mercury::{constant, shapes::render_loader}, shape, shape::Renderer, util::animation_disabled, @@ -112,9 +112,9 @@ impl Component for Progress { self.title.render(target); let center = constant::screen().center() + Offset::y(self.loader_y_offset); - let active_color = theme::FG; + let active_color = theme::GREEN_LIGHT; let background_color = theme::BG; - let inactive_color = background_color.blend(active_color, 85); + let inactive_color = theme::GREY_EXTRA_DARK; let (start, end) = if self.indeterminate { let start = (self.value - 100) % 1000; @@ -127,23 +127,16 @@ impl Component for Progress { (0, end) }; - shape::Circle::new(center, constant::LOADER_OUTER) - .with_bg(inactive_color) - .render(target); - - shape::Circle::new(center, constant::LOADER_OUTER) - .with_bg(active_color) - .with_start_angle(start) - .with_end_angle(end) - .render(target); - - shape::Circle::new(center, constant::LOADER_INNER + 2) - .with_bg(active_color) - .render(target); - - shape::Circle::new(center, constant::LOADER_INNER) - .with_bg(background_color) - .render(target); + render_loader( + center, + inactive_color, + active_color, + background_color, + start, + end, + !self.indeterminate && self.value >= LOADER_MAX, + target, + ); self.description_pad.render(target); self.description.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/model_mercury/mod.rs index dcb0009305..cb3336af4b 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/mod.rs @@ -11,6 +11,7 @@ pub mod flow; #[cfg(feature = "micropython")] pub mod layout; pub mod screens; +pub mod shapes; pub struct ModelMercuryFeatures; diff --git a/core/embed/rust/src/ui/model_mercury/shapes.rs b/core/embed/rust/src/ui/model_mercury/shapes.rs new file mode 100644 index 0000000000..8d1770c7ba --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/shapes.rs @@ -0,0 +1,32 @@ +use crate::ui::{display::Color, geometry::Point, model_mercury::constant, shape, shape::Renderer}; + +pub fn render_loader<'s>( + center: Point, + inactive_color: Color, + active_color: Color, + background_color: Color, + start: i16, + end: i16, + full: bool, + target: &mut impl Renderer<'s>, +) { + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(inactive_color) + .render(target); + + if full { + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(active_color) + .render(target); + } else { + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(active_color) + .with_start_angle(start) + .with_end_angle(end) + .render(target); + } + + shape::Circle::new(center, constant::LOADER_INNER + 2) + .with_bg(background_color) + .render(target); +} diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index b8546870c5..27b5af85a2 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -581,14 +581,10 @@ pub const fn button_clear() -> ButtonStyleSheet { pub const fn loader_default() -> LoaderStyleSheet { LoaderStyleSheet { - normal: &LoaderStyle { - icon: None, - loader_color: FG, - background_color: BG, - }, active: &LoaderStyle { icon: None, - loader_color: GREEN, + active: GREEN_LIGHT, + inactive: GREY_EXTRA_DARK, background_color: BG, }, } @@ -596,14 +592,10 @@ pub const fn loader_default() -> LoaderStyleSheet { pub const fn loader_lock_icon() -> LoaderStyleSheet { LoaderStyleSheet { - normal: &LoaderStyle { - icon: Some((ICON_LOCK_BIG, FG)), - loader_color: FG, - background_color: BG, - }, active: &LoaderStyle { icon: Some((ICON_LOCK_BIG, FG)), - loader_color: GREEN, + active: GREEN_LIGHT, + inactive: GREY_EXTRA_DARK, background_color: BG, }, } From 0993ca04345878d2d6ced5fc9e9f39f7b3bcff93 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 1 May 2024 15:21:09 +0200 Subject: [PATCH 146/626] feat(core): lockscreen for mercury_ui [no changelog] --- .../model_mercury/component/homescreen/mod.rs | 152 ++++++++---------- .../ui/model_mercury/res/central_circle.png | Bin 0 -> 5670 bytes .../ui/model_mercury/res/central_circle.toif | Bin 0 -> 854 bytes .../rust/src/ui/model_mercury/res/key30.png | Bin 0 -> 4716 bytes .../rust/src/ui/model_mercury/res/key30.toif | Bin 0 -> 122 bytes .../model_mercury/res/lockscreen_filter.png | Bin 0 -> 16683 bytes .../model_mercury/res/lockscreen_filter.toif | Bin 0 -> 3673 bytes .../rust/src/ui/model_mercury/theme/mod.rs | 8 + 8 files changed, 72 insertions(+), 88 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/res/central_circle.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/central_circle.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/key30.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/key30.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.toif diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index 62e95cc0f2..fe6bb95e3f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -7,8 +7,8 @@ use crate::{ translations::TR, trezorhal::usb::usb_configured, ui::{ - component::{Component, Event, EventCtx, Pad, TimerToken}, - display::{self, tjpgd::jpeg_info, toif::Icon, Color, Font}, + component::{Component, Event, EventCtx, TimerToken}, + display::{tjpgd::jpeg_info, toif::Icon, Color, Font}, event::{TouchEvent, USBEvent}, geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, layout::util::get_user_custom_image, @@ -20,13 +20,16 @@ use crate::{ use crate::{ trezorhal::{buffers::BufferJpegWork, uzlib::UZLIB_WINDOW_SIZE}, ui::{ - constant::HEIGHT, + constant::{screen, HEIGHT}, display::{ tjpgd::BufferInput, toif::{Toif, ToifFormat}, }, - model_mercury::component::homescreen::render::{ - HomescreenJpeg, HomescreenToif, HOMESCREEN_TOIF_SIZE, + model_mercury::{ + component::homescreen::render::{HomescreenJpeg, HomescreenToif, HOMESCREEN_TOIF_SIZE}, + theme::{ + GREEN_LIGHT, GREY_LIGHT, ICON_CENTRAL_CIRCLE, ICON_KEY, ICON_LOCKSCREEN_FILTER, + }, }, }, }; @@ -54,8 +57,6 @@ pub struct Homescreen { custom_image: Option<Gc<[u8]>>, hold_to_lock: bool, loader: Loader, - pad: Pad, - paint_notification_only: bool, delay: Option<TimerToken>, } @@ -75,8 +76,6 @@ impl Homescreen { custom_image: get_user_custom_image().ok(), hold_to_lock, loader: Loader::with_lock_icon().with_durations(LOADER_DURATION, LOADER_DURATION / 3), - pad: Pad::with_background(theme::BG), - paint_notification_only: false, delay: None, } } @@ -133,13 +132,8 @@ impl Homescreen { self.loader.render(target) } - pub fn set_paint_notification(&mut self) { - self.paint_notification_only = true; - } - fn event_usb(&mut self, ctx: &mut EventCtx, event: Event) { if let Event::USB(USBEvent::Connected(_)) = event { - self.paint_notification_only = true; ctx.request_paint(); } } @@ -165,8 +159,6 @@ impl Homescreen { } Event::Timer(token) if Some(token) == self.delay => { self.delay = None; - self.pad.clear(); - self.paint_notification_only = false; self.loader.start_growing(ctx, Instant::now()); } _ => {} @@ -178,8 +170,6 @@ impl Homescreen { } Some(LoaderMsg::ShrunkCompletely) => { self.loader.reset(); - self.pad.clear(); - self.paint_notification_only = false; ctx.request_paint() } None => {} @@ -193,7 +183,6 @@ impl Component for Homescreen { type Msg = HomescreenMsg; fn place(&mut self, bounds: Rect) -> Rect { - self.pad.place(AREA); self.loader.place(AREA.translate(LOADER_OFFSET)); bounds } @@ -268,7 +257,6 @@ impl Component for Homescreen { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.pad.render(target); if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { @@ -278,7 +266,7 @@ impl Component for Homescreen { }; if is_image_jpeg(img_data) { - shape::JpegImage::new(self.pad.area.center(), img_data) + shape::JpegImage::new(AREA.center(), img_data) .with_align(Alignment2D::CENTER) .render(target); } else if is_image_toif(img_data) { @@ -296,7 +284,7 @@ impl Component for Homescreen { .render(target); let style = theme::TEXT_DEMIBOLD; - let pos = Point::new(self.pad.area.center().x, LABEL_Y); + let pos = Point::new(AREA.center().x, LABEL_Y); shape::Text::new(pos, t) .with_align(Alignment::Center) .with_font(style.text_font) @@ -309,9 +297,7 @@ impl Component for Homescreen { const NOTIFICATION_BORDER: i16 = 6; const TEXT_ICON_SPACE: i16 = 8; - let banner = self - .pad - .area + let banner = AREA .inset(Insets::sides(NOTIFICATION_BORDER)) .with_height(NOTIFICATION_HEIGHT) .translate(Offset::y(NOTIFICATION_BORDER)); @@ -350,7 +336,7 @@ impl Component for Homescreen { #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.loader.bounds(sink); - sink(self.pad.area); + sink(AREA); } } @@ -477,15 +463,25 @@ impl Component for Lockscreen<'_> { shape::JpegImage::new(center, img_data) .with_align(Alignment2D::CENTER) .with_blur(4) - .with_dim(140) - .render(target); - } else if is_image_toif(img_data) { - shape::ToifImage::new(center, unwrap!(Toif::new(img_data))) - .with_align(Alignment2D::CENTER) - //.with_blur(5) + .with_dim(102) .render(target); } + shape::ToifImage::new(center, ICON_LOCKSCREEN_FILTER.toif) + .with_align(Alignment2D::CENTER) + .with_fg(Color::black()) + .render(target); + + shape::ToifImage::new(center + Offset::y(12), ICON_CENTRAL_CIRCLE.toif) + .with_align(Alignment2D::CENTER) + .with_fg(GREEN_LIGHT) + .render(target); + + shape::ToifImage::new(center + Offset::y(12), ICON_KEY.toif) + .with_align(Alignment2D::CENTER) + .with_fg(GREY_LIGHT) + .render(target); + let (locked, tap) = if self.bootscreen { ( TR::lockscreen__title_not_connected, @@ -498,69 +494,49 @@ impl Component for Lockscreen<'_> { let mut label_style = theme::TEXT_DEMIBOLD; label_style.text_color = theme::GREY_LIGHT; - let mut texts: &[HomescreenText] = &[ - HomescreenText { - text: "".into(), - style: theme::TEXT_NORMAL, - offset: Offset::new(2, COINJOIN_Y), - icon: Some(theme::ICON_COINJOIN), - }, - HomescreenText { - text: locked.into(), - style: theme::TEXT_BOLD, - offset: Offset::y(LOCKED_Y), - icon: Some(theme::ICON_LOCK), - }, - HomescreenText { - text: tap.into(), - style: theme::TEXT_NORMAL, - offset: Offset::y(TAP_Y), - icon: None, - }, - HomescreenText { - text: self.label, - style: label_style, - offset: Offset::y(LABEL_Y), - icon: None, - }, - ]; + let mut offset = 0; - if !self.coinjoin_authorized { - texts = &texts[1..]; - } + self.label.map(|t| { + offset = theme::TEXT_DEMIBOLD.text_font.visible_text_height(t); + + let text_pos = Point::new(0, offset); + + shape::Text::new(text_pos, t) + .with_font(theme::TEXT_DEMIBOLD.text_font) + .with_fg(theme::GREY_LIGHT) + .render(target); + }); - for item in texts.iter() { - item.text.map(|t| { - const TEXT_ICON_SPACE: i16 = 2; + offset += 6; - let icon_width = match item.icon { - Some(icon) => icon.toif.width() + TEXT_ICON_SPACE, - None => 0, - }; + locked.map_translated(|t| { + offset += theme::TEXT_SUB_GREY.text_font.visible_text_height(t); - let area = constant::screen(); + let text_pos = Point::new(0, offset); - let text_pos = Point::new( - item.style - .text_font - .horz_center(area.x0 + icon_width, area.x1, t), - 0, - ) + item.offset; + shape::Text::new(text_pos, t) + .with_font(theme::TEXT_SUB_GREY.text_font) + .with_fg(theme::TEXT_SUB_GREY.text_color) + .render(target); + }); - shape::Text::new(text_pos, t) - .with_font(item.style.text_font) - .with_fg(item.style.text_color) - .render(target); + tap.map_translated(|t| { + offset = theme::TEXT_SUB_GREY.text_font.text_baseline(); - if let Some(icon) = item.icon { - let icon_pos = Point::new(text_pos.x - icon_width, text_pos.y); - shape::ToifImage::new(icon_pos, icon.toif) - .with_align(Alignment2D::BOTTOM_LEFT) - .with_fg(item.style.text_color) - .render(target); - } - }); - } + let text_pos = Point::new( + theme::TEXT_SUB_GREY + .text_font + .horz_center(screen().x0, screen().x1, t), + screen().y1 - offset, + ); + + shape::Text::new(text_pos, t) + .with_font(theme::TEXT_SUB_GREY.text_font) + .with_fg(theme::GREY_DARK) + .render(target); + }); + + // TODO coinjoin authorized text } } diff --git a/core/embed/rust/src/ui/model_mercury/res/central_circle.png b/core/embed/rust/src/ui/model_mercury/res/central_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..d52ede6ec2fc03ecff0be95083d3eee1307b557d GIT binary patch literal 5670 zcmeHLX;c$g8jZ*<$Zm@Zgt&o_eSxHjvdS7jh%}o(rBVq2vX~URpdbR;s2EWZ!BKET zQD_weu~h^S7zJ7sTw4)EL1k%iK|ygUL2W%Ve>`XApE;*eRqx&JzVEy5)^}3b<mcn2 zt35{>g+l3ixV!ixXRhMVR7Jk;JYU^|LaF?f%npM6fdsTfD&`4dAvByMfzVK*fQLdQ z-Wl4xQvPVEj_b$ZOEwL1eZwmak>xy%s`qt~51$?+n<tILl<Nr5=!ndjd9YpDhrwPA zL&(>nJn6EP(4E-Qrl#A|!RC2{7CrX1sw5^4>)k|^dih;>*LnTqx>wg1NdncdA25A! zx`TgAPhwq|#8fYq_ZpOT?(z$FYV1d0)BSJwpS*i>(O^sPZ)1ND9%z;7@4d6T^?83( zPIv&U{nBFLT+i)~*XJ%#w~89DF_<~qwK{Is!fJa*hx?bFdYYQO?u}j>^UCFMbmzq6 zU!K;Zr0u)WWk=KQn!EP|>^bm}Bzx8Uus>}_z|vTJr@8M)`$QNya3#m-@b!=`(5g!9 z_xS<2N0<(HVV0W(K<0B>Dl7Njs5vv#x|2kd#BJ_6>{kZf*ts+;cdaUoQeb^$5GHnn zJ?_i)E@qvitZ}F`N-;ja_5fXYKf0ib&J(EyEY2|qe`lBN8!?bNPpzc=x1a|66NA{( z#MUi_JhW4)+A98f^LJF;N|g*oiTzgh6_H~BoL|OeMy;w?0=uh!jYW(X%A&DLn=etp zq|e#pU(#N%MKc{nEtSmI$Vt#guM$b*rS2+o`-#+WV&S1<xx?$z!g%Nd@}>)my`~+T zZ8FhP0_vHVY$-47>Y~PY$T`>Y<^Nn`HOuJNhA#P@I>;JlwwhU2m-0qVpMhhwTZO(U zl35j0In+HEQrX}ie;?ZRdlqx3W@6u%|B2M-V<7>jo>6aJJMD4tL#Kb$6Kt*YYI+6S z<h%{O)$6v*vnBAkVe;UefZAc^m~>@mQ2k@Q!<{9~JGuzfzs^Z+H#4ME8qIG*<vK6a zuT4kIE!3!Lw_0J=r(T66`)ni?bu}F8M5|}KK;Q7ui%<70+3@GbhqG*!t$Fm(6Q={4 z%O^U9=AWXS&w92neqW<O7fUi88F1@G_DK0i+}pbs%3fpP8TXuOuPRR;x8}j`6K8)^ zn^d>`SDCQh_WW}cY8po1?Cj^^?EKmLh~tZj^UirT`RQ-0Z;Ien7|%H24uB^j9|h8m zI_Vp8!WyD>vQC~ZXv*UTubtlGV$Pf4_?PK1lVeQVkf4I*bYNN59@&%d<HeNA<?mLv zj-G)(q)AM}=w4!*$j%1dlHBr=k)$Qn&HYDtCivB*-OI-KHq9O;M>_J8*!k3;iHG;A zaXQw)_4D6mKh!v3#80wGGZeQ3$KDzo4`ysiqqI|t7uMU^raqp9YbkozOW-yZ<QG;( zS9TaM->_GEIt?GmVFwt#K2&(5&R~_ll&-Jqa^}z_an*~LeWd*6ppfR?t=@&rdN1pH zV$AvNhfWc#8%ePtGS3uB#+X}>Zsd?@U}fmpUF+&AphGv?-oM-uaX8n{H7q0f5Yj>B z2#`(@#PVi<Vj<ia8K2Q7Az=2?}MuJW&FGF%XRAKzxCSi5dC59)lKenV4UwECNg7 z3`Ggtlci8VvJV?fjsfXh%<^U0_K6IHKnTGAI#C!ak}(pQ7$q+QxmFD0F=!<Oj$vYg zSbk_{u@pj6a1<N?>zXKtCt;RpqwS?!9>d>d#U~2nj){qaVF?3|Pe@3>C6IAqDIZUy z)9H8u2~Q$n5d>D2B!YoNtVp&%K{3VQ0?9zBKmrTIBD8`N;E3a3CI*Adqd(^-l(1M| z=tZ(mDj<5`69EaHh$G;ILj2beGT1d9A^DWhe~pl_k%o)+hh*Y7DG0g7Ln3&=*A!gv zOS~jb8mlaa3*w<zNQgjX$g0F|mUQ!A`F)8{NWd2eCCVs7>~D~;fcLjp-{hv4QI_*{ zB1rfb-fz&KYgd916pO`h5rc7x^gLXc7{&Swt{4<>8Olo<jl|;u01azLB5|=45=6$@ z@n{q*nL?z2wh)m^0SI4Fd5B~%AOax;6+(^^AUqU1fXAb8saPV>))q?vKpqw#gA^=a zOXC4Nh)w|kyRRsGr2@p2K<w99DX6#z72S@*Apukf3(^538=9>h7NFCpSQ>!`l4)dH z4w1}NQgK1X3b9lOAloSr0(=NB5%HB13c(qUejZE=2{)Cva>OqdfO$v&6XPuq#U=g? zWebE*01PP9B-#=wRGJ-uN+ObpR092PP#`3gAx>0q5(zl+6t7}i7)UXQuz<p+2!S#J zsfFPzg#cJAWsAkJOpGD{v?5YzZ?yf?rnn1a2qH=0_)ne>fYwaiO+5m!0_7AMt+Xuz z0H+p_0rAk321wl06c`1F_z?1Ze=^kPalwDtEHZ}xfm8w+OQTUa$Y$Acv33v$VnL8c z<B_Qlg$t3CWqe_miFt4WAcY+HNTo<Mh=G*Vpe>bBT78R7h=LS45l9p)fr=#%*+dG1 zN?{O5)&vrRK)~QX6^vIr)t@W2$Nz^W_DaB4Z2*az8bjI((yj1c+SMn`6f*uFKcDvE z|F{A|{bP~u()Wj4Kjiu@1-=XX!(Bh*`Yr{&3;e@f|1-I?|9;_tM98n81mtxF(;b?G zyb5Va+=FE()C?oVF%4B%G#eSzfIV2Q8Ut$6bZ9z%;6Fy9P^xhrE{<&E50;{#)V&1# zX7ehCom%BSkwQOOj;-a~d|k;B3GF!9u}I5%31JV)KK-fcv+VT??{oA|mddPCTk&ZP z?~{go(8VH)-qXa)2M^wA&s0|rJQrT#GVOt`8i{LpZ*s8FRI^3fEAzpE<q_zM)+Fxa z`plr-H57-REH9C--R4{L!;6iQ@^K-!1^?<V`t=+}#URa6?`lQUk<oOWMV^mm=;+MT znKw_RCuLjRMZ9q>JM)Tjf8jo8DQLCAd_n#R@09A>cdS6rXRlf2PVTPeI(f=Zgn)H+ zyZUztf5RFSYP*p}-nMl++)>|oSwhRWeV34Jb>>#|_Mfu`vgucDVcoCeJEW;5Ig?&B zYcv|?g02kw{cV(otDRGaRWj#teDm%c!7cE^&G+&Cxd>d{=4JV0eZg$}%*Mf2E1y6% zmxFR&w_7|rZ<al}{rIxT>XmQV`q!5&|EY8nX`swG;<Z-kCh6c<_vCLv`-@Q}vCSDx zD-LG3t#&(}sFM>v`rb%oxTV3)Jbrw*MQ`_lrn0!y?RvW%O1AaA+~4BdZ)*(KhI1&` zEZq%*_OzpwNy03L)BU_|-KMkV+_DlA`;nxZk0)N`oYm0kuG@^$oX_;$y)Jr#-?fWf zE|)6bymfTeyY72~l~<H+#v5c5qJap9muJb;eVK-a(@^MgUUfu8f1|j^^OQ^VwW=4V zfQr_EX<Bup596uw1EO5x92#y?6jCA|sC}+>Idsl1`(t%(Z3s!Jn8fus?&_{LrRTA+ zEgTEej@R1wfm5<mo8RfrHgh`BebM!>BT0@H$DMK7KWlu39KA<9SgvkGb)Q&NxOuJa zUqd)!VA}b-K$mozgA469pY3_Af>Qa@V?yttc}_=J$t`v>cm47)73pGK|DMQVl_GYu zIpnH;*r2!uGsQ&FWL@{)_H=w@ZPWC7bB*m)Ev*yys#LA+;uKR#KPHEIz&vsKqu##l z^W0OLQ!a${(Rb`6QD;3+L2VqB=N-=GzP=}B29NJBc4vQJ9evwfi*eike3dVFU`fTi zeHM$Og0e8lu3PVOqPoI#gcYqxJ*98T%hH|;ER8P5Fl+9$X>`J7A<2{-(KGwx(KWlT z72OC2n~+oWKd!pl-<`?7dZM?_O*~$?d`SvCTAIK!x#xB!c3f`}p@-#JXL|0S_t^&b zE;@5dPsN4YRM95>?79yt3Yx5QH_ZhKLw6YZ5^QP~pR)aRQFvsKaMtgoLn#T>2S&Hn zoUU1U%*)iftMO0zI=JfTX{Jkf#O{M9bl(e##CJS|D=$aF9TTf;pNwe@n=Ky9=M+RX zT{oYQ)ou(fC+w}>`t$9z!g*_MT77&$I$G3vVAXA~I-+g5X~y<Z^dqeR52t3P=8b>O z9`qWP9D7kZR%|S`^xN;!xwP&g`oi%{)Cl&*%iQ8P`9ND@&l}Ub@kODQ&8*;Z&7O)Y z{>8^z($a#LCTwg}RSgW<s?M-*%{q59?D8cO&sr@_i6&}ZMD8`=I=_;`$<G+sqxg%G WlCkp8mu*N-LV39QxKuhtX8araWW_H4 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/central_circle.toif b/core/embed/rust/src/ui/model_mercury/res/central_circle.toif new file mode 100644 index 0000000000000000000000000000000000000000..9bb17b9a5579e1af2772eda33fac3281a177fabc GIT binary patch literal 854 zcmV-c1F8H}Pf15)0Av740{{TclFLsMQ542+OKE{pZHOjF3=A6#36HKYZlErVOE7U| zOl;r}pr{*MQ2YxZanY4h*lP$0D`SdVV;sUxO&A^v7AhkTEilY{-rGq#kIv)Xo!_RN zGxs;=`_4UtH0nX|(=TBA{p>ZurKev}*V~cs^I6+@rq{6$VCE7oDSd&!D}x={elgNP zNbkd<iT4KpYwW<6+g9QEWiaxRzEvMb?4|U25R#{slumbbQm56pCm?Bn>@k@fMaoex z;(&h3bCe93^A4f5_}guKCDEx2_>E+Rwr}vY<=xqGJm@NA43Dqa9OzJ+oTYuBD`**( zfl+shh2Vudb2ZuX8iqsjz>w2sNDJ1)9&|IbMYYLIJ0IG@c_<IGg%c$pVdYjL;Y3=u zvTKep_-YU3+HTs~1u0)Yw}mCbB@Nx?p9?-y%$7MViPKc|N}}e}6v8PTN%nJ$X<p(K zV`hvLFR@yk5seY&C9+T>>^8V#upljLZ>RZ*Gqkfb!~Dc9##!(rKT(aYqnV$WprJEB zgr7(oh~^*@0cl9Aq98(4(7MUe^XmkuBU}|BcF=Rm?u1_(ctVYd5G54Okq{yBSkgo; zknL?*LrjFoK&F={LP$^yktLyP0u>-a0{%}zJh}LEFVQ4IWFc#aix3l##WzuK+ZR#z zgLV;O72`*^B0~H|&kn{!h*P9WD2NahB=abX5cD!6s1cDRp%-qTS>ys0Le7yC8SWBG z-_1`PW1Nr;EbtS5ks@TCS>u(?_BL%G#tY<tC=rUj$$}Gd!qV`@7&a%S@W*InKN8Tw z2jtBdEXWWav1i60WS4gtFEChdmf$oMudnbBpDEe;t8i?5TDLw-+qH!gCA;}^6vBy0 zZBk4hIkHnDDeFnn!<$r~L>*%YYeHK%2AVO#npB`RISTtgR}ioaj5;f{iNmH#G^ncu zAzQ$lKXHKCN;$rQem`IhkQ*H=0;<ov@&<6jyR#Da0<yY~V@dNyvYMwSrX2m2(&w(u z=>B%e3aB1A7C*gCGkAuuA?5p4;n@#X83?%ADuVLty$(Wpr;0z>lX@p`eI|9dBzJ}^ gb@rPRcoQR`n)+^?e|L*;>2C4!A#nI%_PW>Ge-5{fvj6}9 literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/key30.png b/core/embed/rust/src/ui/model_mercury/res/key30.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd4b5ae83e42a20a09aaf14075f46692c8cda20 GIT binary patch literal 4716 zcmeHKX;c$g7LF_Xu(;4JjF~_S2$fVq7RV5gO%f#-F)D}%m8wdJWHVKmgb^BXq3HuI zG`4`Cv~UnnQN#^V5kZ*7z140;9UX8(TN_te)SjM~fC{JkkLOJPBj;4A>b>uN_ulW` zx~D2f5*_JaJK2^(p*V<y;W6O+SMy;#8vJhxkb6@oBcG;8W62oAK-KBBa-|BVk|rHa z#f?fig<`z^WXrt#J2UJfev3Qf+m!F*a<(a{T5eVMu0E;jVTIo`Q%_2@>iRnCJ{p-> z(fsTug=4U8UhnuF#XC#BU*~hbu)eJGhG}zO1$5y-UuSIkOO@jyt7ea?d+)lHeZh}O zo00_~a~iEp32twR$n|q>C$9NnCW|IxUw3JrBYge1>~qNlrP{k8z4Y`+`TkqMS2F*e zo858sWcbqH$gtkx(_ZJYH>!+Z?V(^dnZl5;2jd=Q&JU08<U&3!9(NPA)%dvY2nx;9 zmTs$B0;Opk_Z_4$TumbVu}4RGXTI6i9`);%P38M02Hy}z@7jL?`{L#aUJr4hFe1lh zS9D6uhF#|-zFT3>T-QrEad47m?V9uX^QP`TmbLiCqr>IW_LfuEykp8kOV`IOs<vi6 zckZ~9RO5T4TUJuv{+;7m{#H!cmAS;T*K6gOP@?1bH8_&Uy=h$&<>Y?+`Er}>CojG2 zunpguSRcCNocq75(T!8)9$jVqYO}P|CZpiT6x{@;tDElCMzCBOw!1WZzy0f()00<~ z?+7|#7Z*QL=)7*>=&+F^%VzB;NcNMvhtk|KZA06}cDaofZl02L*DL>2tI0lZQEsJ= zPxI8IHe{^J43WL+!1z;N&8yAu<^Ld=ce$!sBu=RN#>0EM*gI}=wv1W(Srk-M6o0s@ z>+-d)w>BskMRotVbhYFFelcK67Spc4?iO9=g+EB>J(|*SMbpq@VoW%@v$dMDVE0l2 z%G=5=nFeuEZs~oj++t@(2EG(#yJg%hCw&jmziq1#r2ce^V7MMy`zpRKb279nP~;HV zP}Q`ocVpS|lJ2CjNmFU7jyjBvy%boej%Gfm@(R^OwLS&T6@QWEjb%FJTGg&d+i$nh z#qI8YU5_L^%bD`qB0W;}cH>Qhrl;!AGmg}=mT+BPp~?EU)%MftgI6v}-`9MbAGBBd zZG88{V{0|$(;LH@iaTx1uNhBy+Q~bcAH_~{rBFuDlwn~KQCQgf-Ul6DQo8ZP>=udB z+QybdZ0~rxS|NhgCf!-c-5u&QUbdtud9(Py(ZZIESlr4{x5KB&?LwYT+B0E~fVVid zuyqv@w62J_zjS{oyS=(E;h)csk-ui>CM^k=qxDU?+$8tRt=`dN@;uo3V7Gh%Bcc3S z&@T$#R?&oA7Ya<$0#5APu3HD`_C9fqZm+YutZK(8OuiW|+O{}V$Ky9~{G1H-c}}TE zqdzbG-b8v^NmnO~oh~dWu31)d!CBBNO_&|}^R6$Y^Icw57VoNeUJ#=XaB>JgR(VES z_w2=8RzYj*;?~afQN^u}FB)&BOjDe%JjC=l%~CBUX8(ho^-E-|L(-E;3v1$!fAdA- zUcB<hbMIc{C06B1B9>&ORe}jJSqUaZtT>8~YSnZE)5>tVQLO`$ghB}nHtG;G1t+O8 zT%ptmXgv*$G^!F4&=zsTuviy{Co6?%dVGFbv=mKCK?5*aaFA`Fkq-#eIEhe=YL$lI z8wE5AFCSc+ml-sw1wy6>Xt81mHB76=scbr%4nq+}<q8%p$d($Y$K?E&@L2;C;7&kG zCP^Ki!7vyMbb}vVt5-0X0RaIFn8jeRAb@}flZHf$kcMzKQ}lC$;{>W#>PV$lLp5_E zGHog;pwYlS^?iJ5oml*VUPBD10Q6uO5gmg`hZ$-$W3UB5MyvoN0|EV^1tA3kml1;# z+EhJ?N36g#r2AkB4E<oQOVz6^>0l@WSK(>^C4g7v5SNi6vE+k=SptPpt+QAGv4<c@ zrTn8<Lt-=USkf6B2r&P^I|ThccMBMx#A1H97ELvWCkhwP%>Mb97FA+=%OwiSSr`-L zK>iq;4Y5%f50b%h7-Dk#5DqHi_+v775S2(nkcbAw%~XJ#t^_=|zZ~ZAFn@@}WAY$2 z(;o*E>;Q->lLxR-6vO;E$RLWjdL`&eL^U`nGZhA?xERX8<QNKZQP3D{Ob(*qvbYda z&S5ig4$AdsaV=CB%Acjxs}WF6r5aJ-44p<{*)R*v50QujG#0%-aLbBBg^+S!AfQDl zHL1prP^nUl&nFSHnoJ&(&EfI_{8>C6%=2e|1TDn%1n5LFCljXo_4As`!UxF!VG(nm z0s@N#$b}!K#}QJimuj^t0nHo$)of{LZ)#wFQG`kYAWY_tAL#k{`11a{{zpKiv}{qS zmbT?1XulHzS%G5~N5HOs3r$8e3LHG&0}b_lUHJ#af>{U)R2qhO92h9f=5QbcR0(3i zG8vc0<gj^6d?-7im6HZUkB2BgrXU;8K$dK%UKT06hoTM1xLGHd#fD%G1T&>fHlO3i zhgm)_ix0yz#z4Xh^Hcpk<3PsmGzqi-28{t=*S`kF3z$}n594Y;Gqa3;;%}f9f1(FK zJ?!L@^c|LKSgub};FG|^-8C%NCn@kr;NkB2zsY6$@q-7~fVUt6_?-DJ*(3v>LN+>K z96_PjjWZu3D8(h8fki7)B#yA^9y7w8Gji0iRTW^VK@=V$^*{UMYLoM7s?(TDbEl7y zjC`2u@|a4>`LJ7(RY%jsko>ZvnUg#{x2*PhJ2urIY3W(sl;hYk+3?buI<_M(wY~Y0 zpTpd`b6%aFm)2{Vd&BHG4gLnT@ymyQ`}w{wKYdDc;$ioyI|=#aEw`dwr{65=96@>X z_Vo<OY8$?H(S|z3390<f+>1!cZQuEcyNR5I#U49XdGwXVbA{`P;wRJZB#?QAc{UBK ov<;&iS1(W9yM}-9NpP3z{dC9fl@716K^hcMM09vfXj0by0AND(KmY&$ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/key30.toif b/core/embed/rust/src/ui/model_mercury/res/key30.toif new file mode 100644 index 0000000000000000000000000000000000000000..24c033a8548b0734b33c48791dbf783b91db79b5 GIT binary patch literal 122 zcmV-=0EPclPf14}03HBt0001EV4yK5e0`n`!BhDA|Nng^IQPPTAdrP~zx~%Q{NE4f z{`oJ*@MAxm3)IQ}@jnvxzuYG{SK;6P|L^~uhjA}~4E~>wWGfKxqDaD=0hauCUIIxH c$%P<ET?S-JktBg!4rITgasU2jW1u|%07?Ek<NyEw literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.png b/core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba004a59cee3ce4551dffab9710bf65a7d46ea1 GIT binary patch literal 16683 zcmeIZWl&tt_AWfQyF+jZ?mD=;yX)ZY9^BnExI?fY2{yO{*Wm6!g9Qj&@;mZBr{4SF zJ$3K>cBX32%<g{Hv(|cg^{(Budq=A%NuwYVA_4#a6j>PwwYT5PKL`BV7l25pRS5u~ zDDl<MaaS|-B6D_ivb3=Wk-7UggUCSMHkJT@_sUtGZiYddtK=&iA{s;h$2$N-?LL9` z!v>u09u}P(``NvXngwo+;|3BLg%Xy?SpMtd)ags8v0&nft4&veo?y@Q2&Gc@(aTS} z?w-)8i;Mfyz~50HUM~agf5Rm^Q5(%27IXy~zMeg8KcNV*q}Gp-I?mrOp)Do~<NrE+ z`CUOYI3+(Db<+~CZtcHLJ2-{bw}f(FrPrOX@xmMKAyj|oK=b?O@Nxaxhj(`cFY7vj z3<B>5z13ts_NYG+ip&=LnB9xLezD|hr|qeS`!I~%<2V%ZY@6TxN~mX#!u5JxOj>;X zyXNxrqNAWBeRqlaxI*&Nrtybg0eEA|!ZMo$Sg#LzYdzgD!hx@0&cc+BHn+EjMyK}^ z*}CHfx+jlZRZi+Y#xCnS7{2aa$aRlH1$|5_Pl6BYqbG{=S(|}Zevudy+h57ykT}+y zH%?J=$q&2@?ENuz6OIF#D{!UPj<JLTBZ-LEKF>$*1e#9K1(M2pClUvC+<%@-WpcJb zUSp)a?0H)KeNJ?)Nf);Dbl+lTz-HS>5J6GV^Cd3If9KMc<$3#lst0>X0y<VpmzrJY z`|X!O`fX#GB%?wsJX|ATF8rK;^&sk<neg5)3Fs(28S42h{WvCQ+$OBT(P_HE_9zir zYQoSszA`y`-}w?Bd8CV39g0m)e^ORTOzMUCC=^Yp23O`i<!?d8AF0y~<f_Wjjij=< z77XO;S~P=q?5jXaay4}=8&bJ~w`=nCUAG(31(XTU))}hOL;-PZ@2B$Ce6G(&Vcb5o z&yLl!YijEU#B=c+H~(brIB$I-@zeWku@$Llx9IR)U^_|feSzzVO+|sr0ri5TE6=9u zsYBbQ%i(=xK=`e4&j(7|Z3f#bNjbdM3)S6@x_}Nz^gQgrxFE?)C=4e=2n1prj!p4N z)nxVY=O_)yXyhhZOI&O=iY(=*{RpQ<w<|1F$@5oio~3Ivm)O_U5x($q9?JW}_TTij zG=wWGW(D-~#g7uVE)#M2uUpl^JzsksdoQ|QUgKW^crd}Cl>`aE=1&3V%=ZzEo}G~j zJ)bsAI@W=R%jinXZc&lvhRfq^xsKH2%$o&m!HIh=?+Ikf3HjRvXPeHH-R+)|Jh|W* zh)u92W$m~f6}d`9kI%nI9pRm?&>=VUq;;H}k&g#xtud?%<*sJKK~%k0uB;neW{gjD z^xxGfgyaPN@D5$cAg#$86wD09;-CL!uF<)kywk0s*}XAG8@F1$tmBo2%&7hoDW$Hf zBEWY(%w&aKsi@t_$tQ=Yx|qt#8y<a**}$%4FsGf|pVYDfD8+BXV>#oq#&mG;Ib8s! zedi1*U^=r1>BM!ysoZt0K~-<OZ3)~ZZLOKQa~@9ELvOXWNF&!a?CNjspr{>YjZ=!? z*p_TI(vhDMP}uzhBKe{(H0nql1=?>$)hP;o7iM6<ue=@>bd&z|ET96(DqibE=J%(T z$FgZ%$r?U1vo?l4U@14OOn+x9O4>-y7d9xgZq7b1Kh5LOq{xaP<kr1l>0~YF(8aD> z<$V@s%^3o!W`u!GQwMOjgR;SB{PD8HRKh_I=9$p64S9Ca4U-`|c#j0$@jhARkYf4S ztNy%z*}Gn$VX6gznoT(q$I!CuqZsZQMv2pKOYfcu{AZFlXS3?DZu_gD)aHrq3M)bn zKkUrL>Oi9bln+p2T8ob3^=CUHJ7xPuQ70`(U(CO@zKbDehLkmIX{wUZ`l#T<K+sfA z=&yXVoz$?C=ln{T>7pY2dvdniNsxyfVM<~_REJ=?-fF@|0_vQ>kHj6TcT0D7o(rh@ z#ZjH#;|g^{N^<S1m0kckn8S?v9xLTi<q(?Cbp%n9c!{*TQ^n4y`kGsZ@`ie$<gtpU z*MK8(gM2#RdcsxOrm-5mG)^f`P(~tDJ_rE|mWxmpYYo}zhq;HMQ*3EANWBx=WtEXl zgS&n6{jm;1U$6wM`echa2f;$4Xjv<<q&xX{&&oySpRTJq>xd!CV)$g=<GbBd*<u0T z5nHOGlrE79br7UJrInh$M7YvM&N^Cc8lp}2K8AlYQK}tx(J082{#2VWQUyzj#AkWh zYFR)3s`shQwTwGWhQ6Q01O^tCwE@l&3KNb4K@zpe!fnCTtaTcG1CY$YAa42LBnM>F z$%na{ItCD`@^Lmz@1i8!DVLpp3^mlx+5G`?zG*ei38v4iPj^em$7IfdZSx)>5(71( z%b%dd>d3RBg}`CMxi^R|&=v~4(1b@kG)i$m&kxX<moE01cF{%<c@>GsLDk1`(jp=C z(-Y+oNa2ST3mp}V`=9p-eu;F|!)u4wBERx1-h+So<TjDx1HS-n8I-ahPj;7!`ix{3 zU`ZYwJq^CE_xX_$*PSUZ*zl>_k-}rvM4)y7d=aH@!iyit!(B)QrM(QxZoO|CM+@-6 z&IJ@D-#F|M;YG98sh4WDcA{u#n=#t4Ep@v<KB?$L9F%ak`3#iDVl%<;(o$|IA<Pnm z)>vr3;>r0evgpJgH|Zg>rQjo3gaP}2VNv|`$L-}{!&2@`8A9CzJzM%rn7V_XAPp;I z2&6(+d-xwQKosH5uLV6<hf7WTCF1z_;}TpK7U-Dc&;n<o?Rd+5W-P8pkkTXS>`620 z3tK(*BkED0BwZ4+TA6*h<dlxxkasjmaHj)C78C9fBjH<k$%sf}Qoh_9`rq=87Cd`N zE$3-x`<=`CJ`NBw3Nb)7?EA8xo?T<zt`~IQdeUOfM((m0Ak{Er!d0;W0%njPiKN8g zS<A#8m8jvJLngTax-c<)It{rh!F^666&m%)%C!PhAV{K8yh^BpZis#2Q2kDk{-uK? z{A>Mmilb^^Ap=8W<y?yzuYL+jTEQMv244HXacSrMjuFwp8Y89uj*JNN{;!m?CrBn@ zYca<K<*U3<w1y6^IXP#|kTr_iRNQGP-fdcOm@!aIU(l&xtz-<vI|}$p)=QXm=o2ik z!4|+JOLcsaiUi*y|M`qbT^_Y%UlhZBn5@3&Y+PTj*@fyut&IUAoHC`cDmximY)}-E z6qtu07!|tl9eYI0HoM;!>19Na>DNW&?@2gi1Tunw&6VB+^LU7`td2Xq$egM<Y`hPh zE=;m=EwF`fOH!&R*Zthz!)K{)r{h{e?z+_6%ao<CF{Ek{5>{$P4<CS-Xdf^>#d(1- zSaC8TDW~Tpsa5O5S))-~%3L`U`|JTS<oek#-bSV?e)O2{$PU&?5I0m};1K8TlFFP( zm$AyS`;0J7t*B&&3z{CXbY7Cszp+i+Dt2l_JvT%_3)?w9;W~~`{6JlafFG>uS2%n} zmKOmzzqMEex}dkjxSYzMFIz^7_*@Q#tdnd=)WR-Li5Z2Iu5vUNOCo2cz@==4g-#{5 zkoHi!g64;Jj>(saSIL%unpsAeNj8X!k`aLpA7dc{6hWn9cGHjazsn_oF0-mc(ucTm zIEWc*L!A7nfh=V@IHA8gF$*AGM1bfDx+B5N-f4-88dV{eTUFuE9#L#8Nr0A*`H*BG z)`6}Q1aAxRTfc5E+aH<^!kcqRuTg0|q>G}Ao=Y62#8U?cK<b5ti1skfJso#Yq#>v> zoo%pWumyuVRHfmCt`1|twc;2%(PCmzi&$8{)4_^78j=v3W}^cU?4oRCT9yO>$(s8p zZUhD!W&`{nm>YJ@Mx&;1^84HOg3zGxMRNvG@CA6`sy<U2vSB+$n|?cX(}L#GiS^Y? z`NkNuOo<)(BRq?~Qz9D5$tAgaAo=?ZC1~Ljf2J!AQtOA(RN>A(i%shgc4LbeN@k6t zI$SlQ`DcmxAlj)NYk;UA>U6db$?29bHc788O@?aq0Mgt@aR<yK*f+H{Ry*goI$l0U zY*Z9KjvM?cBKGCN-7!65NHy7CdIt2O5u};D`{_p+D%lo79CM2}Wb7K7IN+nTnV?`r z0bGLwTez9XE(B@ON5-V2?-paZRh8JIc`>+MwVfi#JmV`+RB+roF~O!06SkO$bi$7A z`%)1DM^dVJNSfrEJ}3QC@)CZU`tMVKu`I3b<_s8!WLRH5!6f4K8-Sy}k8O#lJTqQM zX+ZOl$U)JE`EE}j4m%eZVVui+g<cDmJzGg9hkT)Jnlu|;yZT)Vr#pV4DkRFSmeY2K zNDdo^E;kW6D^2oitllJ?pk5EdL5x&a?W?%7WD3CwSPrYQOIBh$Oj+=t4P07cAS6$< zBui}GPUaXo#^%h6`-An@h1?+|u6aI0K%;j9?l(ErpSaU$?EvL14iaGsY9iKPi7>6` z58}N^%C_D7C($e>;4pKTqz=8`tW=Xx@3dlF2cElA$Evopd~d1m7M<}t+95&5aa0tp zf~4*jIDv!IVU;O?T7#u<%O!0d$F=eHA?W-I=vhL|cQvgz7<#Z&Meo52?B=J`QaC%= zjfK64qj8N10nI63>g7S1EBlj26|W$o@5YxDI<j$mi$MnDaPR^m)i?InT1Q*6RUwev zIMDoo-VpvL`Hb+UF<TZiVbb6@Jf7`c5gA;4*b*6~<QCOqO-(qw!NE1%HHi@uw+uO4 zvF^I1=!k)rr|)J8m|EKl*b&h)*n%!GT*(B^#5yAQZps7-yf~s#X{xg^L|dd~-Vm03 zA|645X6X^?kO&XD8g5piiW}TeeTkw^nakAT$q3gu{*E@hGPFGo3P2=5)vilFh-@Hc zbLx|jPZd0?@$Q&y7cPo-dbvqbrvq`|o_FHC+4s=j6s}IT0#G({^W6{`+cqO8)5-5E z>9HPKcI+5#HX4jQSlo~z0edM2&U_iJDTMRH!Q)xK_5C7tqS-Ik1%5%X-0b*R6w>%0 zJJqN>d2BO5HlM}ns2J0}`$0FN@2!m^St#0>$8?iSI{(feZVT#|iGba7T*68|s-8(_ zh$O{TO<3GdshOeEtUtHnt5tPysr!lvp_$nz>)Cv`8>*k~LSR3}4zuH^@&u%4v{%2K zAl5zQezaZxngad6^h~Y?X%d2FpYyP1ttr&?^es=58iZjkoT)??Y8ZF4GO?Kl23#TK zb(IMuh!X}&tVGg*T~<1v?_lJFQ?q59L;_+*LDTB`vEC#&WnJ<^gc!MEWmnx<*mRM; z1m1!7Vz#l69~n2M^_iVBwI*b+EF+@Q`H}KG1u->ABU*;YhjLvlT#qktbrK6W1pcmw zzRC?~*<5Ut@2d);1df_wDl1@W=9{m-)D{B$C~a9VL?J;ngQ?+Y2Qw^d%|s+apEaWz zEM(btNOY;BOS@<B<!4p96vIUnAU7cGMSP%#f*~_-SA+7=c$N1WqT^n_NC$8^ddV=+ zhXBC8L-kmgc50^|74IA_%{^R`oY}S(5c(tvSbvOJ>n&JB=W$8PKEmOcQr4yFX^v4+ z&5x14$8Rk(o}crMs}BD<qQH2RZ~}qbNw4mBPR>XlN+?diNo9oNiiIib!j(P3+%-tU zYXtjDQ=ZyGc5X|-B1<9O$VOG^9a=z{tBi=7M>uAtr%GfS&@;*SJ!i!nt(`qZJshHO z4<}Kiu9u>`FDQJJZ7%LgFUeLe%q{*m#xV)Ewug4hkvH~q2uWOd(0noOsZ>cNZ*XIc z5{0tpD5ZA-rvqvMPR$DGk0;c5>{QsGX5oiUQL;)?Xa>f<hidjjI61(05HV9S^@$25 zK0@=8S<@#7f=qm0KU`76sY;rS^m}(G3E0~O&0D?^bq1?_jNC_wTAe;#L6mVQ#xbfA z>l(`lw2(4;uDqI1dA0!cfTes2dx(#{_*gwb<;&iEmGOdmKfNKdS}=g~s=$6T6da=3 z)X=;Qk;qOaS}EM>u8RvxQ^--^e8F~WU2rO7>MuRmxo-_26D<8MNi0(plac;ilY{KN zM1_6T!2+Lif6L&1K!=!aHEhoLATnV-k0QD~vz}Z(g2MFmK54%jjL4A!hh9*9(R|p9 zFQKmXLBS;a2UV+B>xh2Hg_0H)Gt!acu_7HcGaNjZ?s*&KS4Be?kCy-qx94{d<&8p7 z=Kiw+Rm6C(B4L?oa*=JK5FTV0ImJ;Gi?=E|F%(>gkabill3DoJm<1Gxm1Nf=r9L(O zl(2c*>4gAsgH`qscPfd?q_yldk+`yy(iXuNuMkYy%vdp3qdKV6reLjRz19Y{o2h{< zPycUK@W?H|wgTJlzL*BL2ZwR4wRA<L7cLm#W3JMy>O{j?^k|0aWZNaTbaSG?a&AuB zB659*$e&<p&o=BZkren<7|x&zcY@yoK(;2<-`ay#`F-ZKDZr&q#083EuiH2+SxEtI zTe4li9}6_%NbO(e+3N6?WpOa!G}KVl7H%6nKN`TQqm!#dBt#ZU@KaYhm}1+BT6wK8 za^0Bgz4V_3C>ndCsmd=maC++%=W)n#%{SWq9)&(>Et1$WG{YZ|)roH+VE<9x%D_wZ zrEGP+{9}v0$0Z=^unsWQyo60X*m7~hh?p>b38hIyC-3mmDv-^x2hFfLboe&Zdc$k@ zpwvw8`3(Sf%M9$B6zpq>Jt%#)+*>TdKWfSZg;aXk7mD(!0F{Z6Kk{@%4Ghqfw>ZOo zNUBucBto|4+6qUpjizFPL7qlIiIlkHVg{4e;C1>sZNY!E4u_ysyIQ&E-6{?CfPi%n zSwI?#w=or_)x}ne)HNmAB4k4>FU-1BkQCIqeNMJjQ@j+J(x58B2*L8*ijho}-y^Vv zN^V?;M9njOj`_-;&q>$dkaN+X>+i>9e2#qf>weX;R!6ik9K%<V5!wTLtU`F)cLdO@ zFy9m%f9Y*>NQS>G3S-I`a_5gUP}?<eQtrE6Q+Oikd<JdbQ2KT|S5V4yfB;){t6<Qm zEjh8wYuX?D1C>VUL-ygM(HCZ}fOIRZh0N_))9kDq)3j2nIqLXSPw{<E1wUd&v3d9{ zH7Zw6ni=mo3IR1gj*|Z7-oti`FwYdHrH`6w>rmV~LY<tva8I&ywHS^F+YVMH#+N$E z3s7xqyynts!UFI}iXmI{TPzYq-nr<7Lciyy)lmv*ZyZsjQ;R(f6TLMSpy?U|?`*C( z22;$)wqVy)4@*>-gE8t6<6aot&kI^5LUj_3tV__nT0VF2xX9&}1ybnxQEEUe)QdxF z_(~Mpd<cny=74gmf!$&4tID6XB93ZJZ-YRF{NS0oU?c8|s{Ig|1EE(%XFKGfeS`W< zBAgnMl!H%xz4)bFTua+Q>K#g>WgR~0V*`^H<T(8Sxf!zjbQ8t^Xv%AV+|CaP6)}lc znUc6jc!0hnFLr*NS5!jcoSBTK7+82EGgJ)Cjc5k%M92QUVI&Clb{8Mf=N1^!gb(GM zRF0r|x-GJP=3?uO*oZf)POnA4yQNUOaF-0dD*OFKuMD&xR({=`Gop7wb1z3?gLm_I z>9xxD>I>uBRP|043s-iQXO!vF5#iV5@DAN>IccG&$?2Dlt^{PIF#pJ33o4{O&3BND zdv}9~l?2_~+{=_w!_Z#YHY%xj#+k`_`cLdDWgkn-qk>Bzo+>D7iR6hH22On*JHi%_ zwB~R;o`GB=Xf?j4@(!W^(x9fojJ>L?`ULH4nQd0s&0~DUYKg%jhhFh@-m{(4N~{g* zw&5aJ=ZgFEBvI_*P;K=mOB{uGHtwL>VodxA$aIM6n>$H`_aBwQIMuJ})r+v`Mvxs^ zE~w-0?}Fs$NOQ+h8%oa1oxMzdoh&Bf<3v%B<FYBvWI0ly3OcBKVJwosZ$d;#>X$<s znfF-wsG!ZI;^jC|`%~`(tX1F4H6m@G+jVyZRL>5E$pzjcj(^xBf2bN-H^%u*^V+!C zK2^592X#pU8*y~LP3#z)C<{<vUb($H+8faga1cVSUSQoLszap{Ovg>;hq+!5y08<3 z)J?jb$$&JuT7IE?XB%%L4u8f|B-%m~e*=fawzkqKJ@aEJ;|l|cq_))RuJ2vmg=05v z7*vR%G%J@=b~6+R*+Va=>C;c~24mUp&3*J<`ZW|>5u6v^G#0W|pPyH_m~AbGYIU^$ z0I=APV7d`Rbe#E2$A#Y5$j~^|DtvcRY@6K#Yc_{q;77VB-K3V|2jcEL27ubxB0Tcu z9k&+UcA)G5*ON*j^!w3pYrJX8{t>ED36=VkS6f_2*Aw49P8q^>LO&dgJ~=aoo6b5~ z_=26(EjSC6b(gr^PE;wEk}7pF9X0ILD}gdvVWPh7%u-ZUjWH_+O@$^vKyV>%W~Uu_ zu_^NYtEZvy&l6=n7&>2vV5j^;=uT>J%l897L9vMa;E#cd_xm|o&^Us71cwsn$5}Z| zsy8b!lck~-8j_?dSMgD+QPV3c)|2oxj3nLY7GD&Oj)!YfIlsdlpCx*R#fdUlxY|Uu zBQu+rTQLE7*WoW=RSTUXyz&t>hqrW~$g;vjI3@>AM9rpkjzTPMN#~t&LP9Xgw<D6v zfHlSh<@r$ai*0k?CIEGl<`H2^i?m|LE6Tx2n4J+y6cmaH@b7-8qFBnX9l<Bl`cXbH zFpQ=FdYfXJ@WR08jyJ5x+Ki;V%W1+IOO)(Pqpr4PWWh$OG+&%(emg+5#<2^mOtr?J z$zY34cgo;!Ra7et^tKQe;KNr<=Im5xUXGf^%fKk4wZ@D%1_ds9ZN`{n^FC^PZiFI! zcLQN6<LsUYu_tM-KB?RBYXiavb0}&XWhk~?kqAFiEX;o_v!;}FUY5o>OP2U0nIF4l z6tybTGk=oe*k6?@*h@0yuEzB!#HE)(c=nU=tPLV@cdw64MG0w?Eo0#QCng(%)&$2Y z?T@zX$;|F(yD<6C&oTr8@l&8m#s+nLL3d=*n%cUNwzgQbtn;=toX_;~YR3GafGttD zW|faChAgy$^X8=d`@v%zTAc4j2@nmXtGDXz1cFebl88KNZxVi>I4D^VEFRmcci@%8 zEuarMJOTGy$c!6)7Fvyp%&<U`OFfs+o3aQ9BYyAkq=Q@&<X2|4_FI)_<@B&B$$?tQ zRrLzr`myw>gHoTKX3zVK4xb3khd?@;u{ABlHj?lw^k8j}Z?XarcIUNz1$62WDnZbJ zI!0#+Fbhg!6Y=CA`?Q^Ppu=-2SE*<OnmB*j52|ME%dy5ggA$r^`(~xmoXsRwYK@kK zF#XMtmGQ5;3Ypg^;EoIQ3eOnzZf~bFDD()qm#pQ|76$8Lfogv%4SYfcJDLeSF4t=e zXt6ZXUS5q5pcHCTRx%Lw?p`hQ=X`@lq4fL62AN$hmr|)|S<#Flkp~fq1h}zAX}rTK z=rYjbXF<h|<op<Dmt-TdK>^#P{N08uSh|Es-eS+?FV!g~C;d>FHlOFk)S_t|zKOz- zVK;*t@@dPE*NY&-my>_k#+iR>unmRa)9y^T{@jKUx_bsZvLl(II1G@ISb~7p*|j=R zi&6FdY;;eX0xBGuOK!j`J1+Wo<^~sQw0McWY;x8gw=}bUGJEo%lmjfCYs`3YKvj02 z)R(n8qCMy%Hu(xto<X~~>F1x|T5#26V1KUWX1y+lY@v?S-p{gPLRj7}SmN$X06MCQ zwRin24!|ScUqUzx?svejrqsnHh%?OGS--cjaiE4$3k{iDCh*@O?;$f$S4P4_H#!k0 zRZ?ahWSEDDM%bK2P|UacmDdx5*Fx~l`Nk!0O?6r|LxEHTKt&sP_C46*;vsx;E|8c( z3ckGxOL>nDCM+Af_u6)zu!%?h)78bVqS3Y<88th<@HMm*SQRy%5r2MuGNxC>vykrY zmiRX1NJYf@(CESlA(5tPp#(_*qVsfrqTbK<QWRZxrn3<+>^-g0Yum&zTwxm)pzOnW zHd9-Bv<yd7oJ1)tk7_g}EmQTa*|)oW9k{GX(r9J55o5BDE6O^e%anZ#s^iRr{38h( zF3hyr2CvBzZIt&@w5a>tOqT;UeAC6v6t@m^!%Uf<y3lJSWQ^E<k+rL^n1m{6;XLz; z$!jH7h(Mdxba+F4Hs1D63iIkpq8CoCbdIXxYLk&(B-PcM-`@2^x7cCe?c^!|yu8jN z9~gIkHGVBL&0D}fcLihOr6XI~>-xea)^+jCeMG+w6&U&kJd+j3;Fu?fk&Z^uJ(;6x zsU$`_SKq1Jx+5cMu4f0eczExfwG-o0c5TQ|aIGBj)=uvAKnVmzdDbM{A*(h&L?Zse z^2{%9KfKkVq7sfg2o-Qp!4f(u{N<A<{tNZpb45OWh#4<pamo&^7n81#YNsAR$AQiy z20KjQIN#Db%OcOXo^~=r9U6L`h*p_k?QRmyE1I%!#$3+bTdAPHe_~r}J%43<WQ7)e zx^IHqQLW+FJyRCiv-5D;2V$WsVeLdkGa|G%3^EJivLP|YV|v$7QK41}2&$MUj8L8a zK|dd3GB=qt$z5k78}IZHQ<pi0=F;Igx}W~|Xy9ix5-W7IkUm&<#|rs#s-6{wWc;`5 z+<7>H;OdQTbhl7Y8ShRN2d7S&VxHRcIil)`n%uTSQKd1%MAhyETyoh@|4RWJ%rRyS zjP6P}X*u)fcAay(4UNL+%Svmd0DH&@y1;q1_YQ*MQI+D}!^Mx8f&Qo>uu|@-k5{*F z{Oma3kRB>%30OEo5nmn;lu|15NLnZU6=USHGqIx*T9pA8#ls&9P~+DN0?`tFk;OCO zo<I2|I2Ue)qeq%y;|3;Zglna0-W$F>IAPWoj2`%Dy;p2qL+k|f>CYLn2H1$QW||}m z&G(69jj_NGH=`es5U)Z$Z^}-WhbkA6q-iz6K3V%2^0R!0{Dp-3NE}}~B~xG03@zbM z*#V9_cNM!5#pv9XOM3ift`H?;P}iOByZW<*ricm#iwyO|&d$va$KU1_$gp1?Lxh&$ z9&{b|TPx;W29MZ~>Ofs}zebuac?G(k=p|f0XA6jQlP>vT_4=XS=+G4?tQO%LzXjzc z&GF8mrby_Jzt9E7u0T9fwBYvCR+Ws%6lZ{d2UE2^#`tvIE;b1{3xKVMMa|N~s>Y}) zrk@>$nK>)jZ%KRzZ3$Tn-w*3@+?o8vbfu%;VrZRcE3tk>Fu)ftpypTp4FY5-8$GFU z*L&~aWZI?A1{VTwrKO4LJo&3fs=0|#-bsbkD3wzpW?LJ4MD@xs_7XjY10*-@zKN7F z9Vxhv61Js}6|D~<F61RuJ2`}zNq|}CDDUu04>^2P9$D}`fqOVxOyv1uAh4-CUDaK| z-uCszTE6szF_BwSv8;;ZR0Ou)7ig6dRtY2czIstBy)#pEG$C4jslT*V#Y;1wo^}q+ z#+512`|$V7%2cSi`l%F#hzy<FOrYnsnA;S#H0Rsn^>%^n#nMpzu-L4qzPg?4lZE$V zm9F{ev*fg~{geFY(W+wOz%+g%fjl4}bq0fLARU@s^o&TOjZ^JlF*3JGF;pz7WVEGg zt{<QKY{wpsuhR{Eg%RGC%<lAve!s9IYyQ3=%6ZsIUV4#me$;Ox&?z5rQS__Z6-5TM zNU_jU*XWFtX_EoWTtI?QWpZ%m+(Hby1`bpXJ#W_#f%&G3(r;s=JWr9A$YJ)^yM^ET z!_f1`deu<WHX!7FG_J)CC5~M^^K{4?ZBmnTzQFf`VWKNF2Ug<1oq^Hn_rx1tqC5x& zi<yKgt4Vm1M-#Y|zvu=q_>YG@)hik0hT(e2KThZ0je2mq4~xV*=B<fPeWO)k>so;r zc8659_h~tdSaaDDFi`eoiR(g@l4L}t+_<*wxw=xgclzaj*t0J+pLYB@cDb2O|6(4S zKBfl%Kv39-i>t_ri~nQ0%G)NDy!@mtxd9dQ@SXu<i#lwiMj2D{Mw4AF?iw+4Y%_yi z>vYAY_N;*<3tfMxO$ky<B+*NPTAW%z9zC6`p<q*?h-|k5qlSFWvFcxjBiCQue+N1f z81TtEF`CTuTE35~F23-2|9R-J#uA6cuw+5#-imQZ7N=@5%||1ROXq24<1;fdgKiJ; zL*x!zBbJp9V<4u}u&(|0ACJ1g=s?a1u6(K<UY>w`T;}1too!Z&zO1yIPqv>XF$C{4 z4CTbmtD-d2F>lLrs=i=os=4x^qey%$A9QNI`nkuRHl(9Bw4I=kGlcfDXVZ?<YNEV_ zjiHa-Ue8U=k2B<6S_j4Cj6my?erLvqo;pzZ()jbwc;m`A6-k2--}1LjKZG`Kn|pK= z6@cbW4$P(&PG%rxZwKc;yMF)z!rsoN=5`==GBc2sjiVsNMMn<>nT>@Yg*KNWtD>_w z$l6B6*A=AhtE6G>YiG`9K_M)JDBulzBX9t@o054u*gLuby#*=$;sw6_|I^GuLG~BK z-A<4~M^S}L+{qP0#>vdd%*rI`ZR5#KA%sXK;A&wBRFjbUJH^|XAceKNyEBl5#mmc! z*^7hO$<>O5jgOCyg_WI!ot^0o!Q|%S=x*xG<mg8EhvIJ>5+FBoR~u({8z)DyKb)p! zP9E-p6clg$WdDfI!C6u9pY)Dye^=p64;F7zXBIYQRu%^bmVdQybC>jdBl&wk|62<; zjki5gENUP(Cl6P1kfbNb(Vg;NDJ;zYY47aeYX4U{7UnD<dyvB$)a}hH+rPP#mQ_^w zr^O!$tZW>d|FU`$``?i6HkSV**1yH}r{}M9{xy&{^MCUG8~Pu){{?<SDJlXboXkD` zgeNN@Nb$!%(89^w#sc`)UoH+FP7YoRQzkBUPCh11ZVM2T88?WF$->-{+my}JoQn^{ z_b*hkj&AOzj^?00RBz<WHg7!U?Cc;O3r=n(kfj+16Q?ByCzF|(DF+h=HwVaq&w`zU z$AbM|D3o1o-m22n{$Hc|LuK(sWy%KPX0znuW8&cB=3(Llaq=?pv9a?q@$#{nnsZuO zSnyf0{zYYB4wQ0obufJ!P8$bPD-esbqt#y>e*_1Ls>ljburvP+`d5pJy{Wt9n}HyO zf{mkx_y0gOY#c!9?xug#WaDAu<l^Sy<ly1vc=P(VnE$fY0=c@qRpK8`Hdbbizw!PV z7T{YlZ^D}Xsna)te`E<1cLkZcJGp8&IoS(R{GlNGWBFHklL`E7P-JY}-Vi>2D*o>^ zuMTqg+u7fyfW6IMU1Vf`l`YWJ{BKU&Og%vse>r-y`&*Z}wW*^O=xu)gy`cWlZu7qx zED$FLD;v8dACozcDJK)BnWY7jDF-hr6Avf1IUk3a1(yYg^WWLsoGjhFOkF{uR&SZU zW%E`*e`P~P`<Ik-|Bm*u2K~{Am7SA`m5Yg$O@oaS$i@of;9+282ePtKu>3t?mOr!l z9~ld<{C_kN_zUnamw`9CzqP$xUf!-&EdRV*{av#^GX6jO{CzC`A9{GB{;!k&NZ<d; z^<TOEBL)5=@PDi8zjFOY3j9al|5n%kHMtP~XTbw<e7g(sdRxx$MGmaKErk%AWpv#D z03@tG2LvD|5C5$Z&Rtef67C2F0vVC|#gXJE0Dv|uD<P`!_D)3pYJM&+9(d}Y?Lrl< z1a(|n^fL~!esDgbGh74CmIl}!Mu{G*4xt2NMjxaBzAs$GfS)2`-W`==*-$j=H$E(P zOG5qNez{3lKn8%@0=x@?at5G+A$b1}PA;9;Ue>P79Q^7|jXhSyPym21bTJYc35up= z!RN*qjG#L;VdK-89-0~EnBq;C_TMl5RhyR=GB@~*XlVXE-3BzzZe!g8d%KXv-LI>9 zycj-(VVH%p<*TiAr<q?{Uo@Y+ACkalJdCSH^4K$~%Z8_?KNnO|y{Ci-FZYilVNHy` z>px%KKJFIxh|i@Dtktp0S%ztHs&{9p#OGb%oFgv|f(|XO+iJQjg)S2TwJs%}uYN~& zi5VG;H4rj096lp!o0Sh5Lh(qK#qIytq{qJg6&S2+p}ML*BA;`e0?uP98efz-p7lkE zjm^xEKSADPVcZ)G%GC*5ceh~~IWErVoR>SjZh-}uz;ykZI<Yf+t+un)2LKSUkNRtl zo$u;k03);fdN%oC-aqwI=u=c1XeYldg}=M<Q$3bq^viB14>Sq5wVRG{;Uuyg<V`|n z-oJ+!_W}Tt@HZtdF>C0)>vOEpl8RT;0suZ=;fOxHRzn0~vjIeY-$DXZB+t{brmdxE zVZ;Cc+sf6ifmQWKOW!y0sYgjaI*l|}D2#W_a}(s4b-A0!fKq>EJ&y@+(<@7hC5cRI z=$A1-0>C++PQOOzcGrx4rk^YIXG*Sg<=}JNdj|j{Tp%%eV^P^f<&rSVZnooYOOfY| z?3hK~L*uq3?Mzc?2V0$t<>XY$pfy(BTJSVey>E(Aj=YB&>Xc^SWTQ54gfaUTaH-u? zYKF3-3tqb%Q(+WWFLx%AK0e?w2^*J=YQBfS#l!35FP%(}`j*6*vxpJp#QY80wUw8R zv5(;;Rcj<8-PKDmf#DOUQjFW6asBVofyeY0P{9U-_tNgV3wDl%Yp57j!{<Dey_D!} zR(Z?_4F^>Jd2R+DBJ7+LQEQ+=y|G-^WZtJ)FT*nwe@MW055pxcY=Ft8yWx@`1_0pN z${+-mtAC`%<GX8o-G>B_*>b}i48@)U0Cyw&@*NDzU~OfVtM;FL^B+d{5!O@yWSys9 z&rNWr2oM#k1CJwfF%WF(<|m@Mh%?_`k^l;)lllT->Z7=+^C{P7zcYJbmLP0Gw@;@C zKmb(w<>lVx_{%%t%vx;UJq_SM09tWaD*z%MQRqCW*(!`kzUrr$?+I(1s2<?%n0MB! z=N`d+Ev(q6gjcQ_A##Lh!j)<$3{+*zW(O7XTQ$>FG*f<^O@!)?$Bpbz1S#k)ET}HR zWp@yZhz<(B?7gQ37(2@2CDK7e*eR$|6=soYctijzxp=>F#+y@warOa%>B(Q@<zfi5 zv2z@Hl+_ibvz}A5n~B7B%&=Xq+d%M|nzh*<qB)H3J0ga+%Ld{#0>D$N9!1W$&b&Bd zThXnq81ZoKt*!`x#Gl-UL{A#leP=N41AYT*7(VJ~JupU)%=5&o#O_$?5H8C&lR0bR znioU_DfHt0^FmC7%)+P)P#mB(Aa}Hmy<<JT;_ZNE2bHi}W9imD-{7t8uL(??b=B?y zG`#7-8wnSBX9R$XUb%vUx{{O3l5Sm{1On-x-n*3cD>Oe32fxSVYVadsBj%}W?)A)s zA5FcM9g$%{x+*@-x+1i7rO}YyPvbiH@dc{Pm9*%l60GVSa$Gv0oJ~}+g^iV&WTG9l zdf?c0TvL@6@|+>3y6^bsxdWj1xq7<OW^*C3pt$dq1(6fG^EYaMNHZa;_MN*HNzJU| zSaw4`4Ry4urvyY1dl`d6=Y%t#?E9e|8?ZE}T`%><jKPi1I+<Kq$8zToZ284Dt_}a8 z&VR?%j*vB7r3|wn0cq`40!%;I!xk#?E6|kaV&*u5s5tKd5p2aZlR-!N76hshy9)<m zBC?Au0gDDNqn=!^7Gz+W_lh=NMk$gsai&r|>HCQ9`1PJCP#D^CYq$y?y6Jfuwg_3M z&28g;+ETVeEH(`mkrbAxO#^gbn1gpY?4*xYQ?@?UnG*}s-f$GmG$3^Kplk!Rbla7C z9dKmh*Op-!PAg#257z6CbGA4{2Xb*ws_I6Cakd9q4;%3H&Yz>yFN`B>2#Mcj6UKn- zI;4>AB6cK}<zj=auN#0&A0RxI<x9c^^6SlX=ZL7{ANFqS*Vtp?0cb6$5*prWuBjgU zB>j>eiTm9<m9K-O9Kx<Q<N9l&&XPUa#396LI_x)Z`GTGNL=<&3nO@A=8A;>3yvYrN zQf%5YB9_6gt?aC`Ez+HR1kf+`*#U*on0w}%-l+s6X28pmy>I&tm%%Tyx-R`nNUrvs zIu*y3V2MvG3+$!Nwf?xvN2_J@s5|niTsZ!eCJudw&yA!m$ImFqY6D~5nqu>`ATuE} zU4h`K>m8`e_hJP=D~&r6dVagdbBf#hn5|towJM{;?;k7kg1Vk#VImTQ1EvY21ipOh zR|Z4@wqk_50EK8>!cbtb_of68*7bl($rom*pxDlafDzxWR$OgBA*O+0!Km;nBw&d! zXaFhyb{z`bgQ_A1QMdu!?%;<Rm|TG8Zfu+ZTzdxv_5wt~ix@&B!7HE9fLr$L^wHt) zu-j7}(0mGF<Dvkc@!ccc?TNN<0WwozRh>-o*RjaO?p8~=dWe7?ZV0WpRY<VaFWH&( z`MS;t(9kC<0c-#vXUnS0Ls5k`_HUoA(xCl!ckYK38cm++=|csd5OmNVDt1$dd~Jp` zZ7yC(GoXetD;LUE`6xaj)*>I5@tk=$QDj`}nWuITG<fjLYE~=9&{(jUIhh+mc*lxL zJx4s&zTOWDztU~hYmb~T1qsV9{O)W(^dol4zfKI$AIJ}EMUX78L!q7+j9_8izk8qI z-vQ}-7Nz>&#+6P2<$DxfUKWh^G@<-aX^+c>anR4MNZeoJCH1g&QxCI?@idVl^V%L( z!3pr1lU|tsnM&flhko-F%tBf7jPx}(9Ck8Xc=OWqbj8_CzD$$NB)jN@mREA^cJ|7H zy7s!IS3*U@;jtT^buu^|b4GW$GBND5ab*Bzp(SJH2scR0f{CTe418nn&VH$LGLZyn zlo^wwY$8{b1{@O<evhX^6G=@ioB63G#<nA^AP_c4y1@?o2suMTFG%Qx4`Izh7IXN@ zSUS_fc=DPwxgEllQ%L_S25fGGL{b)IZsUh!<Bklt)s%Z!hM1&zIhv1DeJ90@f^))x z&v-4+*@ia$tDQ4^R3GA*B<g1)++Eo)>Ot=6h0O;Z+4;A524@`bO+4__TSPnqqp{04 zx+LH1(S{DZCq46$tCy$jR+Jpm8WhzMR9BaP^9WTiJTMnr!$!F{w2H1{G8f7R8L8;g zp#Gx)c=^Cg=g{ek^dnESF^H>TW1@!p<Hsd9l67iOTxQ6w#MI|xUC362Wwoo@#JL;< z&vOoTeUrpyoX0Ir5W_nKA&PSdf$rQEax!H|DgXx|bXD{BPI0)BwQ>V{z}lH~f0vLJ z)g8a~2Dq{B9UI7w=i&s+<Jrs(>TD*2E*g@`MwE0^|JW@&R#OK<pzlYvJJDOf3zZZf z|E_!-K>V4u6{6dPdko*{L^1E!iF+k2)<t~-&`yxpeB?g7k@{fL-PWeCEOaW`Yxh)S z%tFG=Y-ZXS-@RTXedT<bKh6yzz8pi%cUp&T?`%vP6W!+w@z(1Xaw*ojjA=GnNyCz# z9ajc-pOraA>117r5<OA12o<x$kyO+j{8+w)?xx;hKEdkI9615ImpGJonXKfMU*a@) z#kT8H;I5MloQ;$RIRP<QV!6x|e_H5;SOD6WlRa1b<+pMvaO-F#yr?{yUb*(vxTMjA z=_h9^9@R8nwSoPTQvmMan4##hvy-8k$eFTon>)H(XHdk_O)1+%g5|roYgo_ES@@W- zNdq2BPC2}3A&29iLnVr284n)g<-K_>OwvA3PVHH`(kQhuIECxY0pzcnb_|z1P*`H2 zyT}zi<WuWx5c_j&8*SA$I+LxIrdJQ8u^6bbyJyVBx5r+R+JC83n>QZoANaX@C~<7u zJfFl6sT}t2NR8&5D3NNhp!If;a_q+k8?)TsimSPKjuP;oGt^Coc}rF@FsgU+n^?)% zjy;1ZOv^ZdR4|Sh!?n{Im=g^2kb>&n!X|TcAG<eZ=iD{qU94Afk?C6%e=!H&5~Tth zyRxBq2r}#ZLDq7r5o_+}N-p;>apJQw(heU<qxd;xjr}=aK0<ht@~^?SpYm?R6AT`I z!DgBxGRpr6-7`{#mt(;(EzTmY)WHuINKIwqRJZDq=ltP8R8j=HgCb>}!+GiI`5@KT z3^#vFyCM|yYjiT{mm!pw;c#phRu1cpFI{*C0~}7$`)O2$h(rKmzcVJsRgRvRjsM6M zgRi@_TD=jL?#|?8OiU1+=epqK#OU-HnI@cBFw4_fsONMALF2>6pnE}MrYG@onMKK^ zQ7gt(EBS9|mfLbyW7BB_M%zQJ9~uX*DW#n*R8N?e42Om4z06DeAkW(aS0fEVzu|qq z%x|W+yb69QlI<cF-_u&a?DT@KeVVVn$I4eZh6auFAT%H-HU-iJWYSJf9d@yp+}M_9 z>3=)1P{C-oGnp)2+T@+MvIFE79Yg>0X@l7K_W0v_EJ-dRXrSD~iG{Oh=Q*x%{?ywk zL8kzL3?ra04gHpWs`b-pCc}p56ba5#TP@DBG$82i0tq0JGtrgJL}k$BF$d&uLeW68 z{xPjF-ks@?m(d}_FN68z%BcFmt5r;WApqT^F-}g(_?tZ1L-;o!C!L*EQ8bG)QSNtE zVC1~fX=ba#0>j&Tt!NsZ%j(4Roi8PmNmQ5ygl?{Sd${Lz%cj*W5}Hl&44eUE>4D-4 z-zqy16t5TTYL5foZ<UXm8`MqsC1>r$8lEV7537pnx82Gc?usbfH5$0KY%1;Wsu(bS zhu!MB;qk50s|ny@%Iti5Wu$pEQPIU(@2>BnY_`Bpnzw{loV}-VS|Wu~_pXm<*wnoH z!vX*szNmmMz83U-UpMC*vHb#0z_<JQS5?HV^KYWeT8i5X;hwhs+T%9pPxZGPz!Y1t zxeJ)JR+S}(->0@7<kT}lG&P1lyMj)8)+<J2pFxr<UhaAy_!1UUkJ!xYj30z{Sd*;r zBxi8(0+)Cd;8hU2!X9{F0^6<-ApifYqB~a}gipu4jJAGWeR*5u17szYBtD6mg#0h~ Cl&m%Y literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.toif b/core/embed/rust/src/ui/model_mercury/res/lockscreen_filter.toif new file mode 100644 index 0000000000000000000000000000000000000000..a1374b69a458b70ed416831b5e153574187110b5 GIT binary patch literal 3673 zcmV-f4yN%`Pf17c0Pp}!4gdh{l51>R<sHWVKJg{ar9E1KwG2{I)<S_?nApBeq_8nc z)g~Jff<dt<v<j=XxD!KS(uhG_rL}^D3c;6w+X@Y)0ZIFzhzW4jF9W9GG@xA=<&?5A zp-wVQTjyf?ynFudImbTE#rAP*^W{9!NqjEv`+J|~{|MpAl`B`ST)A@P%9Sfuu3Wit z<;s;SSFT*S`g-)~-W@lsA)>2p-Tv~~MnO}1*OFZup363Z`mjQCrS8tu8@ta-3n}!R zUQcS`G841?`S(xqoZs4e*9zlN|4jX`Pa9?*e6Psdt3UF{u#eUYd#~L8k@*Eq-Xq`a zuMc(;@BQO17aqVme)(jsUf7owt<Qa2^GL2P*q;BE>YNW>#Bz1O_GU_cqOGm{j34I^ zGv&TokFO5Z5*znaHaiCYy>?j5TQ+1<*ARtfYQ|lK-7=M(&{xA!-%q4YRT_;_vk@n- z)kkxly*6;$8q9pn4<7xqUi@YVkEd(G4H7+3?CIeZR8Y@vi$~CjN3}@$7w8oB`T0xc zeQKvd#ZsRw;sl5$YS3j+(n7>NsuAdmm(YCm{L{7~sgOFmWG-Sm2)dUj%eOl{5_IF9 zH&5amC;v3?U4#6rZOLY$*ix}Ld<ZG7BI@VcjWXAVKDO8HZkhYGTv5_Xt=1Jp{}Eyf zVAv_OQWDP2J=^X4I8p!)6GfM3*FzC$n$DP5^^FBSd%;@_zCw0lX?CZC2ogPmo9nQ7 zZ$>`<;IX@|_SnMI))s+L#>f)wBCsLga<VS8OK$zb_lz=)+df^7`~CJdF2(SbY&YeX zn+!8n=OV2mn$MNs37g?1R2r*cw@aqXGmbEJr^mvo#ieENw9Rn!mF{G_fQPbj#vFD^ zc9%li|M-bM_w#QWpIApeP&HTD?UeCt0c+N*H1)orFBp%H=#Xth*($L^JXf}>%ap$` zvFac6MHa-BLb|BrM3vkih2(V42yr>lK|EQ-X3s9ZVk=Qp&#&&$t80}ESfPH|WuDw7 ztI~@qK=ffDt*NTGU8Ls3Akjr3nmKXtcxmj)4`u5^R<(RpHp@pNOvH3yHzq_vDTz(U z*%~b@oZGqL>=A!XGhEH^z$j8;qa;yJPNckf!)VrpD!858sw;UH*gY=9{Y0V6B1ilQ zzwi?s5h7eL+{`Ie5%ai6Dfq)#=Y)oozgXnccIpK<uE?YVdBc6x1Rdu(hIyx9>EH&U z!;5{}W=vqKtO0ubx$#)5Cg^UCIY<#9TG+s-r%=>+Lg^`{vsJFWkNWdLk2vNwBVlAa z$)`TSa5`gu{rbRKh16Sq^}f8jm*i}5xQH-9vVztfVl^XX45*7}R*VuwZEs&(N0v6c z%MUh_gmtpvR1+P@2R-GG8>Wzsm}4AURN5`<kh+8H+Q#{>C+d;qi!j~lQ-Gs#q;`x3 zyIkOYrA5+Xn^bBg6{~j^5B)^PrQs=&Bsy<=+Qr9kBrhh5LFL4i+%If5lb?W(SvT(a zI44qX|9UOogzz$fanJHmW84jMC^&T15jH`TfoCjN5LHSkOjo)M9nJUU_k0Yl`c`6O zC$}NYtIgwIaK!DSUY_hEpLkjf*`|9rFuO9gPg5K5B$DG{;!{*fp7XTvvXzcG9Pb!= zo<Yo*P_Qtj`vG}UFaG#GJUb-Bur%CCJv#nGt@Aq@un+lk8=fbGM%M9pinM>;*N7Na zIf_}PPl-XR(Kx&A0ITs1Ei}&6oWTLiUD!G8T41B=QR*DG{urNhOr$*4T$RFvD$o#@ z*h^_3LtM`h^ZBq*q4~mWCj?H4w_Oy{alSF*MKgWofZGicBFbU?F*ctzpZg0xi<MLu zi4uO!>!yrevO4I118xfj8s?=6IN`j<L860;toXh(9N<3raaO=HW^%m_xEwK8I&OF# z$)_30F1EzarwcQ#i&0*4z)2^?Lb6#vCXsi9JzvaEccMfk@G_-foYHHnHDE7_S*haO zCIt&xQEBPfEc3#pvcl*QqK$)QulWH7)m+8gK8oSgsxEx8(vf@$6D1Z6a-W7QuL&#P z(Z5ta-gejw1E=vWLEK1nQR$<5xw=j88a4(zC7dcq=f!GStB_G?GssxURq|Y|D4{%V zGo5qH<vO>>T8(gEhD-cNmt2+fNUtGdz#Uex9LR(7@@U)4yrsH%$C7FW3SPO6r!ek_ zbFPdxBm6jbyLImToJ-UZ>wL1zQKOd*wf-5AB$e4Sz)c!$R?5VTpt;d}&S5?Phvr<v z=p^>hF{>H#K`2*lk)J+;*ItqG$gt8?aQjdxW@}chx{+Nub)fMH<FHd0@?;g<)pQK( zn23XIj(4K$q9N+xGEd9lbd>GGLTaOPdA5`S3+0p|<QqV-mVwEMIado-TkO%RW;woG z`Bh%bbQztJ%pr<Y!S%yl5Nw`OH~3*I?~-bj#WI))F12HMX;!kECHoxM2P$gCSe}{U zf;pClvS4RqOPbBh%WKfiRIr6pVIi}1(PU$nSAtZL@}LR4%ttehxk>5)TNT1OxVNHB zB$G$v!%+h$nNuZDBfgSGXh!Z8)ndl1MH;nq&K<^}Moo4C-Zl1Kf&3<~MONaxW9|?| zWijpiN)$AC?KCMbry8Ufu4oaz61ADUWpqv~r>`7y!!(k=tTR-iWne9r*D0|Yms9o8 z7_I~6W$-Hzv$|<Ke^tjVzABNO*+}lqbgbyonx-4Voxg6p3huahErmPgn5%tbN?uNL zUMhEPx2x$@x8s}(oG^{Zs}ilIQ@E<<+Bsp0i9w21v~C%FC6=3)afVY4xv~83A&Q7$ zT$QMe&Wm<BSHyRsA)CKAn4{EF(YhA8AX;%5{7LZ7IpW4`{*n|D8mSen^HW+hn{12k zM5EN3|D7Td!b7=A)_G|b>?yF*dGAi7!DC(uWwGIOCF}Tj%;wJn(tFwwS9&a%n3my{ zSAvgAU^h_)%Vwl^M^bFL@}b-4vkF#)Q45o;o9tO<Tt2L&R+Mrzja9I!n+}K}$?oCE zbmX3O#`W6<!^}Zj(H0k<@MapZvz=i@&^AvaJ)FL*d^l}8jf=iKyVoJN9VfRGCzXRQ z-w=&3Qa<rA8{3&yV`aYF9&FcKL9xPIDFw|4(s{AmWIIzI#q9B25FHe)Afyo<NDkqo zG3!amcBWzbWLoJIB2)G9<DHacK;Bt7Yi2uBl4n{lALX#8%8z#jp2tuKnRiC`!FDK~ zX~8_a2C!jibu*4VcVkEiK6n$&I_27rD!pRYGC?<EywY<k#%kuRJLR_0xx!6=PH<tS z%Eg>ED$S$qKs-eysZbsESUaen6F5+EMJI)FqRsG}5kZ;vh+{72lvkX0>LN8;y3Hfp zrb)xI0?%#8+o=-VrM$d!S|mL*QDVUm$2?4wMWsi0Dmk3wf@3ZUJ#C+MlzW39OSB3u z+c_n!bRYjv&@smf*bh5MG|P?_H$2QQQwsjXxzg>ZN1RXMSj+6i!iFc<$l`|m{4UJM zZf-G0+-<K&#p>hbd0jyvowq%>$k$tB7R^j*Mw=2`#Fi>*C5)x^7|*i{`_SzlD{L1D zPYR9uB|UrbqY8P8+URF1nDD|$2c+E=e%r;#1nHPj=_=G}AF#NYZSelF1wOr=s8<(B z4`|3_OlS%|?yG9Na|euOVVk5vw13{0n@Jw(a&8p{GQ~y6!Si@k+~NU?PNL6+*h=%k z_u|<R!PAX$N+JG(UrKf3<pEFH?lf5)u^y0ZS$hz-<4Hv49>XcVI>CP?`53wCxboCR zh7SRc5mV@B{^?Vf;Jz2ZY>}hKN3%xEomGxkh{2)(3$2N08vlI6q&<JliPYN<UrHu6 zp^!SmPI1;C|M79dt5Qmd%{hlmT3buSVr&XA9G7;HH5oBaSIHH>nJvD@-VvVJ#v<%5 zF<Wsx@Hw{I&v2Dv4vAVRshDMcy<mC6yZm4iex;?|i-?IvIOg%1am7|L!Q!2Pn=sJt z?08RD*dv&+hwX+r>p1_Zovs65TW)R-?!eP1(r#wE!q4#b8ph1JhI{m{qDP6#NDfzQ zA@1=o(P<v^iJEdX9}o4BvxNr(9<$O3MOHY#rSBt}5w!)clXbfD<$voU^|!sZF;!wy zX!~Iy28kv(@u;Y^Hqu<}%Hr`V8FtFcc9Hd@&{j;>7W`CG5mh~ERT>TMly-v*@1pS< zJJ#+gkk#E83wuP)7{pQHR{3hq#W45X^=%KSYqr0Vlec$p+JcR;-4>!OXPp-HRca-$ z5u9K%QNPZ1M`YG@#)`06=~0iIF-*^hq;y_i^%+>rOLSOpz$3C?*?Mz_X;;ojyBGfh zY*$k#ChD%&bo{vv<(`&CpOJs3L_@R*L;gsJghFbT?M53yO>G4B2_Z{0A?;pl2o|%Y z2-4n+8S8AfzY*A{(PZjJr{W%>v=HB_gWb&!X68K6ZYOq&#~S#DL8m&{^$|VvvF-kY z0S{w$=|<YUaNS&wGIOM~;n6og0qEqb18YfYH}1qLB6V7bEmV&(-$3)#`wxDz9=|>k zBB78vQ-|vQRGC9ncjx%|wfK1mKY~QZ>(XBBXP4Nhp*^x^JX<;B&Bl!Dqqhcrcs1&@ z=FUgo)8&JAc<d4Uj^lA!G)SqP-025kGXehLMq!_lxpT;=08-W)<8|Mqa?ZPTW60`s z{h23Uee5=)-Re=RTW9JG)tU;WejsCEkJR04U!J<*U14E&iAHhN2PIWDS$3=LIV-g0 z)*Y|pjJtiF24RboxR$;KtTw=AX?J6>uiY)F>e0p_KYjamJ64#T{<2}|Hc?*cbB)Wm ruRz_MY2aKf?uO^Gjcu_)SKYGX`Tq%5u3Wit<;s;SSFT*Ss-^x9D>+de literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 27b5af85a2..0cb5244d1f 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -91,6 +91,7 @@ include_icon!(ICON_CLOSE, "model_mercury/res/close30.toif"); include_icon!(ICON_CONFIRM_INPUT, "model_mercury/res/confirm_input30.toif"); include_icon!(ICON_DELETE, "model_mercury/res/delete30.toif"); include_icon!(ICON_MENU, "model_mercury/res/menu30.toif"); +include_icon!(ICON_KEY, "model_mercury/res/key30.toif"); include_icon!( ICON_SIMPLE_CHECKMARK, "model_mercury/res/simple_checkmark30.toif" @@ -101,6 +102,13 @@ include_icon!(ICON_SIGN, "model_mercury/res/sign30.toif"); include_icon!(ICON_MINUS, "model_mercury/res/minus40.toif"); include_icon!(ICON_PLUS, "model_mercury/res/plus40.toif"); +// Homescreen +include_icon!( + ICON_LOCKSCREEN_FILTER, + "model_mercury/res/lockscreen_filter.toif" +); +include_icon!(ICON_CENTRAL_CIRCLE, "model_mercury/res/central_circle.toif"); + // TODO remove TT icons: // Button icons. From 3109001fa08593930c8e5bb2933316761eb16030 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 8 May 2024 15:20:00 +0200 Subject: [PATCH 147/626] refactor(core): remove old homescreen rendering from mercury UI [no changelog] --- .../model_mercury/component/homescreen/mod.rs | 191 +---- .../component/homescreen/render.rs | 768 ------------------ 2 files changed, 16 insertions(+), 943 deletions(-) delete mode 100644 core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index fe6bb95e3f..33d8e79cf3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -1,5 +1,3 @@ -mod render; - use crate::{ micropython::gc::Gc, strutil::TString, @@ -17,26 +15,12 @@ use crate::{ }, }; -use crate::{ - trezorhal::{buffers::BufferJpegWork, uzlib::UZLIB_WINDOW_SIZE}, - ui::{ - constant::{screen, HEIGHT}, - display::{ - tjpgd::BufferInput, - toif::{Toif, ToifFormat}, - }, - model_mercury::{ - component::homescreen::render::{HomescreenJpeg, HomescreenToif, HOMESCREEN_TOIF_SIZE}, - theme::{ - GREEN_LIGHT, GREY_LIGHT, ICON_CENTRAL_CIRCLE, ICON_KEY, ICON_LOCKSCREEN_FILTER, - }, - }, +use crate::ui::{ + constant::{screen, HEIGHT, WIDTH}, + model_mercury::theme::{ + GREEN_LIGHT, GREY_LIGHT, ICON_CENTRAL_CIRCLE, ICON_KEY, ICON_LOCKSCREEN_FILTER, }, }; -use render::{ - homescreen, homescreen_blurred, HomescreenNotification, HomescreenText, - HOMESCREEN_IMAGE_HEIGHT, HOMESCREEN_IMAGE_WIDTH, -}; use super::{theme, Loader, LoaderMsg}; @@ -51,6 +35,16 @@ const LOADER_OFFSET: Offset = Offset::y(-10); const LOADER_DELAY: Duration = Duration::from_millis(500); const LOADER_DURATION: Duration = Duration::from_millis(2000); +pub const HOMESCREEN_IMAGE_WIDTH: i16 = WIDTH; +pub const HOMESCREEN_IMAGE_HEIGHT: i16 = HEIGHT; + +#[derive(Clone, Copy)] +pub struct HomescreenNotification { + pub text: TString<'static>, + pub icon: Icon, + pub color: Color, +} + pub struct Homescreen { label: TString<'static>, notification: Option<(TString<'static>, u8)>, @@ -109,19 +103,6 @@ impl Homescreen { } } - fn paint_loader(&mut self) { - TR::progress__locking_device.map_translated(|t| { - display::text_center( - TOP_CENTER + Offset::y(HOLD_Y), - t, - Font::NORMAL, - theme::FG, - theme::BG, - ) - }); - self.loader.paint() - } - fn render_loader<'s>(&'s self, target: &mut impl Renderer<'s>) { TR::progress__locking_device.map_translated(|t| { shape::Text::new(TOP_CENTER + Offset::y(HOLD_Y), t) @@ -197,63 +178,7 @@ impl Component for Homescreen { } fn paint(&mut self) { - self.pad.paint(); - if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { - self.paint_loader(); - } else { - let mut label_style = theme::TEXT_DEMIBOLD; - label_style.text_color = theme::FG; - - let text = HomescreenText { - text: self.label, - style: label_style, - offset: Offset::y(LABEL_Y), - icon: None, - }; - - let notification = self.get_notification(); - - let mut show_default = true; - - if let Some(ref data) = self.custom_image { - if is_image_jpeg(data.as_ref()) { - let input = BufferInput(data.as_ref()); - let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); - homescreen( - &mut hs_img, - &[text], - notification, - self.paint_notification_only, - ); - show_default = false; - } else if is_image_toif(data.as_ref()) { - let input = unwrap!(Toif::new(data.as_ref())); - let mut window = [0; UZLIB_WINDOW_SIZE]; - let mut hs_img = - HomescreenToif::new(input.decompression_context(Some(&mut window))); - homescreen( - &mut hs_img, - &[text], - notification, - self.paint_notification_only, - ); - show_default = false; - } - } - - if show_default { - let input = BufferInput(IMAGE_HOMESCREEN); - let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); - homescreen( - &mut hs_img, - &[text], - notification, - self.paint_notification_only, - ); - } - } + todo!() } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { @@ -269,10 +194,6 @@ impl Component for Homescreen { shape::JpegImage::new(AREA.center(), img_data) .with_align(Alignment2D::CENTER) .render(target); - } else if is_image_toif(img_data) { - shape::ToifImage::new(self.pad.area.center(), unwrap!(Toif::new(img_data))) - .with_align(Alignment2D::CENTER) - .render(target); } self.label.map(|t| { @@ -381,74 +302,7 @@ impl Component for Lockscreen<'_> { } fn paint(&mut self) { - let (locked, tap) = if self.bootscreen { - ( - TR::lockscreen__title_not_connected, - TR::lockscreen__tap_to_connect, - ) - } else { - (TR::lockscreen__title_locked, TR::lockscreen__tap_to_unlock) - }; - - let mut label_style = theme::TEXT_DEMIBOLD; - label_style.text_color = theme::GREY_LIGHT; - - let mut texts: &[HomescreenText] = &[ - HomescreenText { - text: "".into(), - style: theme::TEXT_NORMAL, - offset: Offset::new(2, COINJOIN_Y), - icon: Some(theme::ICON_COINJOIN), - }, - HomescreenText { - text: locked.into(), - style: theme::TEXT_BOLD, - offset: Offset::y(LOCKED_Y), - icon: Some(theme::ICON_LOCK), - }, - HomescreenText { - text: tap.into(), - style: theme::TEXT_NORMAL, - offset: Offset::y(TAP_Y), - icon: None, - }, - HomescreenText { - text: self.label, - style: label_style, - offset: Offset::y(LABEL_Y), - icon: None, - }, - ]; - - if !self.coinjoin_authorized { - texts = &texts[1..]; - } - - let mut show_default = true; - - if let Some(ref data) = self.custom_image { - if is_image_jpeg(data.as_ref()) { - let input = BufferInput(data.as_ref()); - let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); - homescreen_blurred(&mut hs_img, texts); - show_default = false; - } else if is_image_toif(data.as_ref()) { - let input = unwrap!(Toif::new(data.as_ref())); - let mut window = [0; UZLIB_WINDOW_SIZE]; - let mut hs_img = - HomescreenToif::new(input.decompression_context(Some(&mut window))); - homescreen_blurred(&mut hs_img, texts); - show_default = false; - } - } - - if show_default { - let input = BufferInput(IMAGE_HOMESCREEN); - let mut pool = BufferJpegWork::get_cleared(); - let mut hs_img = HomescreenJpeg::new(input, pool.buffer.as_mut_slice()); - homescreen_blurred(&mut hs_img, texts); - } + todo!() } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { @@ -560,19 +414,6 @@ fn is_image_jpeg(buffer: &[u8]) -> bool { false } -fn is_image_toif(buffer: &[u8]) -> bool { - let toif = Toif::new(buffer); - if let Ok(toif) = toif { - if toif.size().x == HOMESCREEN_TOIF_SIZE - && toif.size().y == HOMESCREEN_TOIF_SIZE - && toif.format() == ToifFormat::FullColorBE - { - return true; - } - } - false -} - #[cfg(feature = "ui_debug")] impl crate::trace::Trace for Lockscreen<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs deleted file mode 100644 index 897c9cd9e4..0000000000 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/render.rs +++ /dev/null @@ -1,768 +0,0 @@ -use crate::{ - strutil::TString, - trezorhal::{ - buffers::{ - BufferBlurring, BufferBlurringTotals, BufferJpeg, BufferLine16bpp, BufferLine4bpp, - BufferText, - }, - display, - dma2d::{dma2d_setup_4bpp_over_16bpp, dma2d_start_blend, dma2d_wait_for_transfer}, - uzlib::UzlibContext, - }, - ui::{ - component::text::TextStyle, - constant::{screen, HEIGHT, WIDTH}, - display::{ - position_buffer, rect_fill_rounded_buffer, set_window, - tjpgd::{BufferInput, BufferOutput, JDEC}, - Color, Icon, - }, - geometry::{Offset, Point, Rect}, - model_mercury::theme, - util::icon_text_center, - }, -}; - -#[derive(Clone, Copy)] -pub struct HomescreenText<'a> { - pub text: TString<'a>, - pub style: TextStyle, - pub offset: Offset, - pub icon: Option<Icon>, -} - -#[derive(Clone, Copy)] -pub struct HomescreenNotification { - pub text: TString<'static>, - pub icon: Icon, - pub color: Color, -} - -#[derive(Clone, Copy)] -struct HomescreenTextInfo { - pub text_area: Rect, - pub text_width: i16, - pub text_color: Color, - pub icon_area: Option<Rect>, -} - -pub const HOMESCREEN_IMAGE_WIDTH: i16 = WIDTH; -pub const HOMESCREEN_IMAGE_HEIGHT: i16 = HEIGHT; -pub const HOMESCREEN_TOIF_SIZE: i16 = 144; -pub const HOMESCREEN_TOIF_Y_OFFSET: i16 = 27; -pub const HOMESCREEN_TOIF_X_OFFSET: usize = - ((WIDTH.saturating_sub(HOMESCREEN_TOIF_SIZE)) / 2) as usize; - -const HOMESCREEN_MAX_ICON_SIZE: i16 = 20; -const NOTIFICATION_HEIGHT: i16 = 36; -const NOTIFICATION_BORDER: i16 = 6; -const TEXT_ICON_SPACE: i16 = 2; - -const HOMESCREEN_DIM_HEIGHT: i16 = 35; -const HOMESCREEN_DIM_START: i16 = HOMESCREEN_IMAGE_HEIGHT - 42; -const HOMESCREEN_DIM: f32 = 0.65; -const HOMESCREEN_DIM_BORDER: i16 = theme::BUTTON_SPACING; - -const LOCKSCREEN_DIM: f32 = 0.55; -const LOCKSCREEN_DIM_BG: f32 = 0.0; -const LOCKSCREEN_DIM_ALL: bool = true; - -const BLUR_SIZE: usize = 9; -const BLUR_DIV: u32 = - ((65536_f32 * (1_f32 - LOCKSCREEN_DIM_BG)) as u32) / ((BLUR_SIZE * BLUR_SIZE) as u32); -const DECOMP_LINES: usize = BLUR_SIZE + 1; -const BLUR_RADIUS: i16 = (BLUR_SIZE / 2) as i16; - -const COLORS: usize = 3; -const RED_IDX: usize = 0; -const GREEN_IDX: usize = 1; -const BLUE_IDX: usize = 2; - -pub trait HomescreenDecompressor { - fn get_height(&self) -> i16; - fn decompress(&mut self); - fn get_data(&mut self) -> &mut BufferJpeg; -} - -pub struct HomescreenJpeg<'i> { - pub output: BufferOutput, - pub input: BufferInput<'i>, - pub jdec: Option<JDEC<'i>>, -} - -impl<'i> HomescreenJpeg<'i> { - pub fn new(mut input: BufferInput<'i>, pool: &'i mut [u8]) -> Self { - Self { - output: BufferOutput::new(WIDTH, 16), - jdec: JDEC::new(&mut input, pool).ok(), - input, - } - } -} - -impl<'i> HomescreenDecompressor for HomescreenJpeg<'i> { - fn get_height(&self) -> i16 { - if let Some(dec) = self.jdec.as_ref() { - return dec.mcu_height(); - } - 1 - } - - fn decompress(&mut self) { - self.jdec - .as_mut() - .map(|dec| dec.decomp(&mut self.input, &mut self.output)); - } - - fn get_data(&mut self) -> &mut BufferJpeg { - self.output.buffer() - } -} - -pub struct HomescreenToif<'i> { - pub output: BufferOutput, - pub decomp_context: UzlibContext<'i>, - line: i16, -} - -impl<'i> HomescreenToif<'i> { - pub fn new(context: UzlibContext<'i>) -> Self { - Self { - output: BufferOutput::new(WIDTH, 16), - decomp_context: context, - line: 0, - } - } -} - -impl<'i> HomescreenDecompressor for HomescreenToif<'i> { - fn get_height(&self) -> i16 { - 1 - } - - fn decompress(&mut self) { - // SAFETY: Aligning to u8 slice is safe, because the original slice is aligned - // to 16 bits, therefore there are also no residuals (prefix/suffix). - // The data in the slices are integers, so these are valid for both u16 - // and u8. - if self.line >= HOMESCREEN_TOIF_Y_OFFSET - && self.line < HOMESCREEN_TOIF_Y_OFFSET + HOMESCREEN_TOIF_SIZE - { - let (_, workbuf, _) = unsafe { self.output.buffer().buffer.align_to_mut::<u8>() }; - let result = self.decomp_context.uncompress( - &mut workbuf[2 * HOMESCREEN_TOIF_X_OFFSET - ..2 * HOMESCREEN_TOIF_X_OFFSET + 2 * HOMESCREEN_TOIF_SIZE as usize], - ); - - if result.is_err() { - self.output.buffer().buffer.fill(0); - } else { - for i in 0..HOMESCREEN_TOIF_SIZE as usize { - workbuf.swap( - 2 * HOMESCREEN_TOIF_X_OFFSET + 2 * i, - 2 * HOMESCREEN_TOIF_X_OFFSET + 2 * i + 1, - ); - } - } - } else { - self.output.buffer().buffer.fill(0); - } - self.line += 1; - } - - fn get_data(&mut self) -> &mut BufferJpeg { - self.output.buffer() - } -} - -fn homescreen_get_fg_text( - y_tmp: i16, - text_info: HomescreenTextInfo, - text_buffer: &BufferText, - fg_buffer: &mut BufferLine4bpp, -) -> bool { - if y_tmp >= text_info.text_area.y0 && y_tmp < text_info.text_area.y1 { - let y_pos = y_tmp - text_info.text_area.y0; - position_buffer( - &mut fg_buffer.buffer, - &text_buffer.buffer[(y_pos * WIDTH / 2) as usize..((y_pos + 1) * WIDTH / 2) as usize], - 4, - text_info.text_area.x0, - text_info.text_width, - ); - } - - y_tmp == (text_info.text_area.y1 - 1) -} - -fn homescreen_get_fg_icon( - y_tmp: i16, - text_info: HomescreenTextInfo, - icon_data: &[u8], - fg_buffer: &mut BufferLine4bpp, -) { - if let Some(icon_area) = text_info.icon_area { - let icon_size = icon_area.size(); - if y_tmp >= icon_area.y0 && y_tmp < icon_area.y1 { - let y_pos = y_tmp - icon_area.y0; - position_buffer( - &mut fg_buffer.buffer, - &icon_data - [(y_pos * icon_size.x / 2) as usize..((y_pos + 1) * icon_size.x / 2) as usize], - 4, - icon_area.x0, - icon_size.x, - ); - } - } -} - -fn homescreen_position_text( - text: &HomescreenText, - buffer: &mut BufferText, - icon_buffer: &mut [u8], -) -> HomescreenTextInfo { - let text_width = text - .text - .map(|t| display::text_width(t, text.style.text_font.into())); - let font_max_height = display::text_max_height(text.style.text_font.into()); - let font_baseline = display::text_baseline(text.style.text_font.into()); - let text_width_clamped = text_width.clamp(0, screen().width()); - - let icon_size = if let Some(icon) = text.icon { - let size = icon.toif.size(); - assert!(size.x <= HOMESCREEN_MAX_ICON_SIZE); - assert!(size.y <= HOMESCREEN_MAX_ICON_SIZE); - icon.toif.uncompress(icon_buffer); - size - } else { - Offset::zero() - }; - - let text_top = screen().y0 + text.offset.y - font_max_height + font_baseline; - let text_bottom = screen().y0 + text.offset.y + font_baseline; - - let total_width = text_width_clamped + icon_size.x + TEXT_ICON_SPACE; - let icon_left = screen().center().x + text.offset.x - total_width / 2; - let text_left = icon_left + icon_size.x + TEXT_ICON_SPACE; - let text_right = screen().center().x + text.offset.x + total_width / 2; - - let text_area = Rect::new( - Point::new(text_left, text_top), - Point::new(text_right, text_bottom), - ); - - let icon_area = if text.icon.is_some() { - Some(Rect::from_top_left_and_size( - Point::new(icon_left, text_bottom - icon_size.y - font_baseline), - icon_size, - )) - } else { - None - }; - - text.text - .map(|t| display::text_into_buffer(t, text.style.text_font.into(), buffer, 0)); - - HomescreenTextInfo { - text_area, - text_width, - text_color: text.style.text_color, - icon_area, - } -} - -#[inline(always)] -fn homescreen_dim_area(x: i16, y: i16) -> bool { - y >= HOMESCREEN_DIM_START - && (y > HOMESCREEN_DIM_START + 1 - && y < (HOMESCREEN_DIM_START + HOMESCREEN_DIM_HEIGHT - 1) - && x > HOMESCREEN_DIM_BORDER - && x < WIDTH - HOMESCREEN_DIM_BORDER) - || (y > HOMESCREEN_DIM_START - && y < (HOMESCREEN_DIM_START + HOMESCREEN_DIM_HEIGHT) - && x > HOMESCREEN_DIM_BORDER + 1 - && x < WIDTH - (HOMESCREEN_DIM_BORDER + 1)) - || ((HOMESCREEN_DIM_START..=(HOMESCREEN_DIM_START + HOMESCREEN_DIM_HEIGHT)).contains(&y) - && x > HOMESCREEN_DIM_BORDER + 2 - && x < WIDTH - (HOMESCREEN_DIM_BORDER + 2)) -} - -fn homescreen_line_blurred( - icon_data: &[u8], - text_buffer: &mut BufferText, - fg_buffer: &mut BufferLine4bpp, - img_buffer: &mut BufferLine16bpp, - text_info: HomescreenTextInfo, - blurring: &BlurringContext, - y: i16, -) -> bool { - fg_buffer.buffer.fill(0); - for x in 0..HOMESCREEN_IMAGE_WIDTH { - let c = if LOCKSCREEN_DIM_ALL { - let x = x as usize; - - let coef = (65536_f32 * LOCKSCREEN_DIM) as u32; - - let r = (blurring.totals.buffer[RED_IDX][x] as u32 * BLUR_DIV) >> 16; - let g = (blurring.totals.buffer[GREEN_IDX][x] as u32 * BLUR_DIV) >> 16; - let b = (blurring.totals.buffer[BLUE_IDX][x] as u32 * BLUR_DIV) >> 16; - - let r = (((coef * r) >> 8) & 0xF800) as u16; - let g = (((coef * g) >> 13) & 0x07E0) as u16; - let b = (((coef * b) >> 19) & 0x001F) as u16; - - r | g | b - } else { - let x = x as usize; - - let r = (((blurring.totals.buffer[RED_IDX][x] as u32 * BLUR_DIV) >> 8) & 0xF800) as u16; - let g = - (((blurring.totals.buffer[GREEN_IDX][x] as u32 * BLUR_DIV) >> 13) & 0x07E0) as u16; - let b = - (((blurring.totals.buffer[BLUE_IDX][x] as u32 * BLUR_DIV) >> 19) & 0x001F) as u16; - r | g | b - }; - - let j = (2 * x) as usize; - img_buffer.buffer[j + 1] = (c >> 8) as u8; - img_buffer.buffer[j] = (c & 0xFF) as u8; - } - - let done = homescreen_get_fg_text(y, text_info, text_buffer, fg_buffer); - homescreen_get_fg_icon(y, text_info, icon_data, fg_buffer); - - dma2d_wait_for_transfer(); - dma2d_setup_4bpp_over_16bpp(text_info.text_color.into()); - unsafe { - dma2d_start_blend(&fg_buffer.buffer, &img_buffer.buffer, WIDTH); - } - - done -} - -#[allow(clippy::too_many_arguments)] -fn homescreen_line( - icon_data: &[u8], - text_buffer: &mut BufferText, - text_info: HomescreenTextInfo, - data_buffer: &mut BufferJpeg, - fg_buffer: &mut BufferLine4bpp, - img_buffer: &mut BufferLine16bpp, - mcu_height: i16, - y: i16, -) -> bool { - let image_data = get_data(data_buffer, y, mcu_height); - fg_buffer.buffer.fill(0); - - for x in 0..HOMESCREEN_IMAGE_WIDTH { - let d = image_data[x as usize]; - - let c = if homescreen_dim_area(x, y) { - let coef = (65536_f32 * HOMESCREEN_DIM) as u32; - - let r = (d & 0xF800) >> 8; - let g = (d & 0x07E0) >> 3; - let b = (d & 0x001F) << 3; - - let r = (((coef * r as u32) >> 8) & 0xF800) as u16; - let g = (((coef * g as u32) >> 13) & 0x07E0) as u16; - let b = (((coef * b as u32) >> 19) & 0x001F) as u16; - r | g | b - } else { - d - }; - - let j = 2 * x as usize; - img_buffer.buffer[j + 1] = (c >> 8) as u8; - img_buffer.buffer[j] = (c & 0xFF) as u8; - } - - let done = homescreen_get_fg_text(y, text_info, text_buffer, fg_buffer); - homescreen_get_fg_icon(y, text_info, icon_data, fg_buffer); - - dma2d_wait_for_transfer(); - dma2d_setup_4bpp_over_16bpp(text_info.text_color.into()); - unsafe { - dma2d_start_blend(&fg_buffer.buffer, &img_buffer.buffer, WIDTH); - } - - done -} - -fn homescreen_next_text( - texts: &[HomescreenText], - text_buffer: &mut BufferText, - icon_data: &mut [u8], - text_info: HomescreenTextInfo, - text_idx: usize, -) -> (HomescreenTextInfo, usize) { - let mut next_text_idx = text_idx; - let mut next_text_info = text_info; - - if next_text_idx < texts.len() { - if let Some(txt) = texts.get(next_text_idx) { - text_buffer.buffer.fill(0); - next_text_info = homescreen_position_text(txt, text_buffer, icon_data); - next_text_idx += 1; - } - } - - (next_text_info, next_text_idx) -} - -#[inline(always)] -fn update_accs_add(data: &[u16], idx: usize, acc_r: &mut u16, acc_g: &mut u16, acc_b: &mut u16) { - let d = data[idx]; - let r = (d & 0xF800) >> 8; - let g = (d & 0x07E0) >> 3; - let b = (d & 0x001F) << 3; - *acc_r += r; - *acc_g += g; - *acc_b += b; -} - -#[inline(always)] -fn update_accs_sub(data: &[u16], idx: usize, acc_r: &mut u16, acc_g: &mut u16, acc_b: &mut u16) { - let d = data[idx]; - let r = (d & 0xF800) >> 8; - let g = (d & 0x07E0) >> 3; - let b = (d & 0x001F) << 3; - *acc_r -= r; - *acc_g -= g; - *acc_b -= b; -} - -struct BlurringContext { - mem: BufferBlurring, - pub totals: BufferBlurringTotals, - line_num: i16, - add_idx: usize, - rem_idx: usize, -} - -impl BlurringContext { - pub fn new() -> Self { - Self { - mem: BufferBlurring::get_cleared(), - totals: BufferBlurringTotals::get_cleared(), - line_num: 0, - add_idx: 0, - rem_idx: 0, - } - } - - fn clear(&mut self) { - let lines = &mut self.mem.buffer[0..DECOMP_LINES]; - for (i, total) in self.totals.buffer.iter_mut().enumerate() { - for line in lines.iter_mut() { - line[i].fill(0); - } - total.fill(0); - } - } - - // computes color averages for one line of image data - fn compute_line_avgs(&mut self, buffer: &mut BufferJpeg, mcu_height: i16) { - let lines = &mut self.mem.buffer[0..DECOMP_LINES]; - let mut acc_r = 0; - let mut acc_g = 0; - let mut acc_b = 0; - let data = get_data(buffer, self.line_num, mcu_height); - - for i in -BLUR_RADIUS..=BLUR_RADIUS { - let ic = i.clamp(0, HOMESCREEN_IMAGE_WIDTH - 1) as usize; - update_accs_add(data, ic, &mut acc_r, &mut acc_g, &mut acc_b); - } - - for i in 0..HOMESCREEN_IMAGE_WIDTH { - lines[self.add_idx][RED_IDX][i as usize] = acc_r; - lines[self.add_idx][GREEN_IDX][i as usize] = acc_g; - lines[self.add_idx][BLUE_IDX][i as usize] = acc_b; - - // clamping handles left and right edges - let ic = (i - BLUR_RADIUS).clamp(0, HOMESCREEN_IMAGE_WIDTH - 1) as usize; - let ic2 = - (i + BLUR_SIZE as i16 - BLUR_RADIUS).clamp(0, HOMESCREEN_IMAGE_WIDTH - 1) as usize; - update_accs_add(data, ic2, &mut acc_r, &mut acc_g, &mut acc_b); - update_accs_sub(data, ic, &mut acc_r, &mut acc_g, &mut acc_b); - } - self.line_num += 1; - } - - // adds one line of averages to sliding total averages - fn vertical_avg_add(&mut self) { - let lines = &mut self.mem.buffer[0..DECOMP_LINES]; - for i in 0..HOMESCREEN_IMAGE_WIDTH as usize { - self.totals.buffer[RED_IDX][i] += lines[self.add_idx][RED_IDX][i]; - self.totals.buffer[GREEN_IDX][i] += lines[self.add_idx][GREEN_IDX][i]; - self.totals.buffer[BLUE_IDX][i] += lines[self.add_idx][BLUE_IDX][i]; - } - } - - // adds one line and removes one line of averages to/from sliding total averages - fn vertical_avg(&mut self) { - let lines = &mut self.mem.buffer[0..DECOMP_LINES]; - for i in 0..HOMESCREEN_IMAGE_WIDTH as usize { - self.totals.buffer[RED_IDX][i] += lines[self.add_idx][RED_IDX][i]; - self.totals.buffer[GREEN_IDX][i] += lines[self.add_idx][GREEN_IDX][i]; - self.totals.buffer[BLUE_IDX][i] += lines[self.add_idx][BLUE_IDX][i]; - self.totals.buffer[RED_IDX][i] -= lines[self.rem_idx][RED_IDX][i]; - self.totals.buffer[GREEN_IDX][i] -= lines[self.rem_idx][GREEN_IDX][i]; - self.totals.buffer[BLUE_IDX][i] -= lines[self.rem_idx][BLUE_IDX][i]; - } - } - - fn inc_add(&mut self) { - self.add_idx += 1; - if self.add_idx >= DECOMP_LINES { - self.add_idx = 0; - } - } - - fn inc_rem(&mut self) { - self.rem_idx += 1; - if self.rem_idx >= DECOMP_LINES { - self.rem_idx = 0; - } - } - - fn get_line_num(&self) -> i16 { - self.line_num - } -} - -#[inline(always)] -fn get_data(buffer: &mut BufferJpeg, line_num: i16, mcu_height: i16) -> &mut [u16] { - let data_start = ((line_num % mcu_height) * WIDTH) as usize; - let data_end = (((line_num % mcu_height) + 1) * WIDTH) as usize; - &mut buffer.buffer[data_start..data_end] -} - -pub fn homescreen_blurred(data: &mut dyn HomescreenDecompressor, texts: &[HomescreenText]) { - let mut icon_data = [0_u8; (HOMESCREEN_MAX_ICON_SIZE * HOMESCREEN_MAX_ICON_SIZE / 2) as usize]; - - let mut text_buffer = BufferText::get_cleared(); - let mut fg_buffer_0 = BufferLine4bpp::get_cleared(); - let mut img_buffer_0 = BufferLine16bpp::get_cleared(); - let mut fg_buffer_1 = BufferLine4bpp::get_cleared(); - let mut img_buffer_1 = BufferLine16bpp::get_cleared(); - - let mut next_text_idx = 1; - let mut text_info = - homescreen_position_text(unwrap!(texts.first()), &mut text_buffer, &mut icon_data); - - let mcu_height = data.get_height(); - data.decompress(); - - set_window(screen()); - - let mut blurring = BlurringContext::new(); - - // handling top edge case: preload the edge value N+1 times - blurring.compute_line_avgs(data.get_data(), mcu_height); - - for _ in 0..=BLUR_RADIUS { - blurring.vertical_avg_add(); - } - blurring.inc_add(); - - // load enough values to be able to compute first line averages - for _ in 0..BLUR_RADIUS { - blurring.compute_line_avgs(data.get_data(), mcu_height); - blurring.vertical_avg_add(); - blurring.inc_add(); - - if (blurring.get_line_num() % mcu_height) == 0 { - data.decompress(); - } - } - - for y in 0..HEIGHT { - // several lines have been already decompressed before this loop, adjust for - // that - if y < HOMESCREEN_IMAGE_HEIGHT - (BLUR_RADIUS + 1) { - blurring.compute_line_avgs(data.get_data(), mcu_height); - } - - let done = if y % 2 == 0 { - homescreen_line_blurred( - &icon_data, - &mut text_buffer, - &mut fg_buffer_0, - &mut img_buffer_0, - text_info, - &blurring, - y, - ) - } else { - homescreen_line_blurred( - &icon_data, - &mut text_buffer, - &mut fg_buffer_1, - &mut img_buffer_1, - text_info, - &blurring, - y, - ) - }; - - if done { - (text_info, next_text_idx) = homescreen_next_text( - texts, - &mut text_buffer, - &mut icon_data, - text_info, - next_text_idx, - ); - } - - blurring.vertical_avg(); - - // handling bottom edge case: stop incrementing counter, adding the edge value - // for the rest of image - // the extra -1 is to indicate that this was the last decompressed line, - // in the next pass the docompression and compute_line_avgs won't happen - if y < HOMESCREEN_IMAGE_HEIGHT - (BLUR_RADIUS + 1) - 1 { - blurring.inc_add(); - } - - if y == HOMESCREEN_IMAGE_HEIGHT { - // reached end of image, clear avgs (display black) - blurring.clear(); - } - - // only start incrementing remove index when enough lines have been loaded - if y >= (BLUR_RADIUS) { - blurring.inc_rem(); - } - - if (blurring.get_line_num() % mcu_height) == 0 && (blurring.get_line_num() < HEIGHT) { - data.decompress(); - } - } - dma2d_wait_for_transfer(); -} - -pub fn homescreen( - data: &mut dyn HomescreenDecompressor, - texts: &[HomescreenText], - notification: Option<HomescreenNotification>, - notification_only: bool, -) { - let mut icon_data = [0_u8; (HOMESCREEN_MAX_ICON_SIZE * HOMESCREEN_MAX_ICON_SIZE / 2) as usize]; - - let mut text_buffer = BufferText::get_cleared(); - let mut fg_buffer_0 = BufferLine4bpp::get_cleared(); - let mut img_buffer_0 = BufferLine16bpp::get_cleared(); - let mut fg_buffer_1 = BufferLine4bpp::get_cleared(); - let mut img_buffer_1 = BufferLine16bpp::get_cleared(); - - let mut next_text_idx = 0; - let mut text_info = if let Some(notification) = notification { - rect_fill_rounded_buffer( - Rect::from_top_left_and_size( - Point::new(NOTIFICATION_BORDER, 0), - Offset::new(WIDTH - NOTIFICATION_BORDER * 2, NOTIFICATION_HEIGHT), - ), - 2, - &mut text_buffer, - ); - let area = Rect::new( - Point::new(0, NOTIFICATION_BORDER), - Point::new(WIDTH, NOTIFICATION_HEIGHT + NOTIFICATION_BORDER), - ); - HomescreenTextInfo { - text_area: area, - text_width: WIDTH, - text_color: notification.color, - icon_area: None, - } - } else { - next_text_idx += 1; - homescreen_position_text(unwrap!(texts.first()), &mut text_buffer, &mut icon_data) - }; - - set_window(screen()); - - let mcu_height = data.get_height(); - - for y in 0..HEIGHT { - if (y % mcu_height) == 0 { - data.decompress(); - } - - let done = if y % 2 == 0 { - homescreen_line( - &icon_data, - &mut text_buffer, - text_info, - data.get_data(), - &mut fg_buffer_0, - &mut img_buffer_0, - mcu_height, - y, - ) - } else { - homescreen_line( - &icon_data, - &mut text_buffer, - text_info, - data.get_data(), - &mut fg_buffer_1, - &mut img_buffer_1, - mcu_height, - y, - ) - }; - - if done { - if notification.is_some() && next_text_idx == 0 { - //finished notification area, let interrupt and draw the text - let notification = unwrap!(notification); - - let style = TextStyle { - background_color: notification.color, - ..theme::TEXT_BOLD - }; - - dma2d_wait_for_transfer(); - - drop(fg_buffer_0); - drop(fg_buffer_1); - - icon_text_center( - text_info.text_area.center(), - notification.icon, - 8, - notification.text, - style, - Offset::new(1, -2), - ); - - fg_buffer_0 = BufferLine4bpp::get_cleared(); - fg_buffer_1 = BufferLine4bpp::get_cleared(); - - set_window( - screen() - .split_top(NOTIFICATION_HEIGHT + NOTIFICATION_BORDER) - .1, - ); - } - - if notification_only && next_text_idx == 0 { - dma2d_wait_for_transfer(); - return; - } - - (text_info, next_text_idx) = homescreen_next_text( - texts, - &mut text_buffer, - &mut icon_data, - text_info, - next_text_idx, - ); - } - } - dma2d_wait_for_transfer(); -} From 03cd4fe36356de265bf0991cf4fc28321660fd6f Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 14 May 2024 00:16:31 +0200 Subject: [PATCH 148/626] refactor(core): mercury - seed to wallet backup Applying change of string names from cherry-picked commit. [no changelog] --- core/src/trezor/ui/layouts/mercury/reset.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 19dd964f8f..0ad630ecad 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -25,8 +25,7 @@ async def show_share_words( ) -> None: if share_index is None: - # FIXME use TR.reset__recovery_wallet_backup_title after #3710 merged - title = TR.reset__recovery_seed_title + title = TR.reset__recovery_wallet_backup_title elif group_index is None: title = TR.reset__recovery_share_title_template.format(share_index + 1) else: @@ -62,7 +61,7 @@ async def select_word( group_index: int | None = None, ) -> str: if share_index is None: - description: str = TR.reset__check_seed_title + description: str = TR.reset__check_wallet_backup_title elif group_index is None: description: str = TR.reset__check_share_title_template.format(share_index + 1) else: From 63945ab86f1bf7b4ca44916cc596459e3d6149c2 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 14 May 2024 00:17:12 +0200 Subject: [PATCH 149/626] refactor(core): remove upper() calls in mercury [no changelog] --- .../src/trezor/ui/layouts/mercury/__init__.py | 51 ++++++++----------- core/src/trezor/ui/layouts/mercury/fido.py | 2 +- .../src/trezor/ui/layouts/mercury/progress.py | 2 +- .../src/trezor/ui/layouts/mercury/recovery.py | 2 +- core/src/trezor/ui/layouts/mercury/reset.py | 2 +- 5 files changed, 24 insertions(+), 35 deletions(-) diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 71675f7a35..7b013089fc 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -250,11 +250,6 @@ async def confirm_action( exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, ) -> None: - if verb is not None: - verb = verb.upper() - if verb_cancel is not None: - verb_cancel = verb_cancel.upper() - if description is not None and description_param is not None: description = description.format(description_param) @@ -262,7 +257,7 @@ async def confirm_action( interact( RustLayout( trezorui2.confirm_action( - title=title.upper(), + title=title, action=action, description=description, verb=verb, @@ -286,8 +281,6 @@ async def confirm_single( description_param: str | None = None, verb: str | None = None, ) -> None: - if verb is not None: - verb = verb.upper() description_param = description_param or "" # Placeholders are coming from translations in form of {0} @@ -300,7 +293,7 @@ async def confirm_single( interact( RustLayout( trezorui2.confirm_emphasized( - title=title.upper(), + title=title, items=(begin, (True, description_param), end), verb=verb, ) @@ -461,7 +454,7 @@ def show_pubkey( mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg return show_address( address=pubkey, - title=title.upper(), + title=title, account=account, path=path, br_type=br_type, @@ -484,7 +477,7 @@ async def show_error_and_raise( trezorui2.show_error( title=subheader or "", description=content, - button=button.upper(), + button=button, allow_cancel=False, ) ), @@ -508,7 +501,7 @@ async def show_warning( trezorui2.show_warning( title=content, description=subheader or "", - button=button.upper(), + button=button, ) ), br_type, @@ -564,7 +557,7 @@ async def confirm_output( result = await interact( RustLayout( trezorui2.confirm_value( - title=recipient_title.upper(), + title=recipient_title, subtitle=address_label, description=None, value=address, @@ -583,7 +576,7 @@ async def confirm_output( result = await interact( RustLayout( trezorui2.confirm_value( - title=amount_title.upper(), + title=amount_title, subtitle=None, description=None, value=amount, @@ -652,10 +645,10 @@ async def should_show_more( result = await interact( RustLayout( trezorui2.confirm_with_info( - title=title.upper(), + title=title, items=para, - button=confirm.upper(), - info_button=button_text.upper(), + button=confirm, + info_button=button_text, ) ), br_type, @@ -723,7 +716,6 @@ async def confirm_blob( chunkify: bool = False, ) -> None: verb = verb or TR.buttons__confirm # def_arg - title = title.upper() layout = RustLayout( trezorui2.confirm_blob( title=title, @@ -823,9 +815,6 @@ def confirm_value( if not verb and not hold: raise ValueError("Either verb or hold=True must be set") - if verb: - verb = verb.upper() - info_items = info_items or [] info_layout = RustLayout( trezorui2.show_info_with_cancel( @@ -839,7 +828,7 @@ def confirm_value( with_info( RustLayout( trezorui2.confirm_value( - title=title.upper(), + title=title, subtitle=subtitle, description=description, value=value, @@ -870,7 +859,7 @@ async def confirm_properties( interact( RustLayout( trezorui2.confirm_properties( - title=title.upper(), + title=title, items=items, hold=hold, ) @@ -927,7 +916,7 @@ async def confirm_summary( total_layout = RustLayout( trezorui2.confirm_total( - title=title.upper(), + title=title, items=items, info_button=bool(info_items), ) @@ -935,7 +924,7 @@ async def confirm_summary( info_items = info_items or [] info_layout = RustLayout( trezorui2.show_info_with_cancel( - title=info_title.upper() if info_title else TR.words__title_information, + title=info_title if info_title else TR.words__title_information, items=info_items, ) ) @@ -975,7 +964,7 @@ async def confirm_ethereum_tx( # Allowing going back and forth between recipient and summary/details await confirm_blob( br_type, - TR.words__recipient.upper(), + TR.words__recipient, recipient, verb=TR.buttons__continue, chunkify=chunkify, @@ -1086,11 +1075,11 @@ async def confirm_metadata( verb = verb or TR.buttons__continue # def_arg await confirm_action( br_type, - title=title.upper(), + title=title, action="", description=content, description_param=param, - verb=verb.upper(), + verb=verb, hold=hold, br_code=br_code, ) @@ -1099,7 +1088,7 @@ async def confirm_metadata( async def confirm_replacement(title: str, txid: str) -> None: await confirm_blob( "confirm_replacement", - title.upper(), + title, txid, TR.send__transaction_id, TR.buttons__continue, @@ -1186,7 +1175,7 @@ async def confirm_modify_fee( ) -> None: fee_layout = RustLayout( trezorui2.confirm_modify_fee( - title=title.upper(), + title=title, sign=sign, user_fee_change=user_fee_change, total_fee_new=total_fee_new, @@ -1444,7 +1433,7 @@ async def confirm_set_new_pin( interact( RustLayout( trezorui2.confirm_emphasized( - title=title.upper(), + title=title, items=( (True, description + "\n\n"), information, diff --git a/core/src/trezor/ui/layouts/mercury/fido.py b/core/src/trezor/ui/layouts/mercury/fido.py index 9dc42c152f..f4f628e469 100644 --- a/core/src/trezor/ui/layouts/mercury/fido.py +++ b/core/src/trezor/ui/layouts/mercury/fido.py @@ -56,7 +56,7 @@ async def confirm_fido( """Webauthn confirmation for one or more credentials.""" confirm = _RustFidoLayout( trezorui2.confirm_fido( - title=header.upper(), + title=header, app_name=app_name, icon_name=icon_name, accounts=accounts, diff --git a/core/src/trezor/ui/layouts/mercury/progress.py b/core/src/trezor/ui/layouts/mercury/progress.py index 472e6d30ee..63e6acc25c 100644 --- a/core/src/trezor/ui/layouts/mercury/progress.py +++ b/core/src/trezor/ui/layouts/mercury/progress.py @@ -39,7 +39,7 @@ def progress( message = message or TR.progress__please_wait # def_arg return RustProgress( layout=trezorui2.show_progress( - title=message.upper(), + title=message, indeterminate=indeterminate, description=description or "", ) diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index 410434d107..fd61afaecc 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -132,7 +132,7 @@ async def continue_recovery( trezorui2.confirm_recovery( title=text, description=description, - button=button_label.upper(), + button=button_label, info_button=info_func is not None, dry_run=dry_run, ) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 0ad630ecad..a614ddc8b4 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -139,7 +139,7 @@ async def _prompt_number( ) -> int: num_input = RustLayout( trezorui2.request_number( - title=title.upper(), + title=title, description=description, count=count, min_count=min_count, From 51a78dddee620cf80723ba7e38a6ed3714f6e498 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 5 May 2024 18:32:42 +0200 Subject: [PATCH 150/626] feat(core/ui): T3T1 PIN keyboard [no changelog] --- .../model_mercury/component/keyboard/bip39.rs | 4 +- .../component/keyboard/mnemonic.rs | 2 +- .../component/keyboard/passphrase.rs | 2 +- .../model_mercury/component/keyboard/pin.rs | 183 +++++------------- .../component/keyboard/word_count.rs | 2 +- .../ui/model_mercury/res/scroll-active.toif | Bin 0 -> 43 bytes .../res/scroll-inactive-half.toif | Bin 0 -> 40 bytes .../res/scroll-inactive-quarter.toif | Bin 0 -> 22 bytes .../ui/model_mercury/res/scroll-inactive.toif | Bin 0 -> 44 bytes .../ui/model_mercury/res/scroll-small.toif | Bin 0 -> 30 bytes .../rust/src/ui/model_mercury/theme/mod.rs | 101 ++++++++-- 11 files changed, 135 insertions(+), 159 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/res/scroll-active.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/scroll-inactive-half.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/scroll-inactive-quarter.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/scroll-inactive.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/scroll-small.toif diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index 81e01c2fc7..f1459d71b1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -301,7 +301,7 @@ impl Bip39Input { // Auto-complete button. self.button.enable(ctx); self.button - .set_stylesheet(ctx, theme::button_pin_autocomplete()); + .set_stylesheet(ctx, theme::button_bip39_autocomplete()); self.button .set_content(ctx, ButtonContent::Icon(theme::ICON_AUTOFILL)); self.button_suggestion @@ -310,7 +310,7 @@ impl Bip39Input { } else { // Disabled button. self.button.disable(ctx); - self.button.set_stylesheet(ctx, theme::button_pin()); + self.button.set_stylesheet(ctx, theme::button_keyboard()); self.button.set_content(ctx, ButtonContent::Text("".into())); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 839dbbcd91..2a5ad0829a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -58,7 +58,7 @@ where keys: T::keys() .map(|t| { Button::with_text(t.into()) - .styled(theme::button_pin()) + .styled(theme::button_keyboard()) .with_text_align(Alignment::Center) }) .map(Child::new), diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 304f13339b..ed7aa26c35 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -67,7 +67,7 @@ impl PassphraseKeyboard { .with_long_press(theme::ERASE_HOLD_DURATION) .into_child(), keys: KEYBOARD[STARTING_PAGE].map(|text| { - Child::new(Button::new(Self::key_content(text)).styled(theme::button_pin())) + Child::new(Button::new(Self::key_content(text)).styled(theme::button_keyboard())) }), scrollbar: ScrollBar::horizontal(), fade: Cell::new(false), diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index b3be2deb62..f85ced9732 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -10,7 +10,7 @@ use crate::{ base::ComponentExt, text::TextStyle, Child, Component, Event, EventCtx, Label, Maybe, Never, Pad, TimerToken, }, - display::{self, Font}, + display::Font, event::TouchEvent, geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, model_mercury::component::{ @@ -28,15 +28,15 @@ pub enum PinKeyboardMsg { } const MAX_LENGTH: usize = 50; -const MAX_VISIBLE_DOTS: usize = 14; -const MAX_VISIBLE_DIGITS: usize = 16; +const MAX_VISIBLE_DOTS: usize = 18; +const MAX_VISIBLE_DIGITS: usize = 18; const DIGIT_COUNT: usize = 10; // 0..10 -const HEADER_PADDING_SIDE: i16 = 5; -const HEADER_PADDING_BOTTOM: i16 = 12; +const HEADER_PADDING_SIDE: i16 = 2; +const HEADER_PADDING_BOTTOM: i16 = 2; const HEADER_PADDING: Insets = Insets::new( - theme::borders().top, + 0, HEADER_PADDING_SIDE, HEADER_PADDING_BOTTOM, HEADER_PADDING_SIDE, @@ -57,10 +57,6 @@ pub struct PinKeyboard<'a> { } impl<'a> PinKeyboard<'a> { - // Label position fine-tuning. - const MAJOR_OFF: Offset = Offset::y(11); - const MINOR_OFF: Offset = Offset::y(11); - pub fn new( major_prompt: TString<'a>, minor_prompt: TString<'a>, @@ -68,17 +64,13 @@ impl<'a> PinKeyboard<'a> { allow_cancel: bool, ) -> Self { // Control buttons. - let erase_btn = Button::with_icon_blend( - theme::IMAGE_BG_BACK_BTN, - theme::ICON_BACK, - Offset::new(30, 12), - ) - .styled(theme::button_reset()) - .with_long_press(theme::ERASE_HOLD_DURATION) - .initially_enabled(false); + let erase_btn = Button::with_icon(theme::ICON_DELETE) + .styled(theme::button_pin_erase()) + .with_long_press(theme::ERASE_HOLD_DURATION) + .initially_enabled(false); let erase_btn = Maybe::hidden(theme::BG, erase_btn).into_child(); - let cancel_btn = Button::with_icon(theme::ICON_CANCEL).styled(theme::button_cancel()); + let cancel_btn = Button::with_icon(theme::ICON_CLOSE).styled(theme::button_pin_cancel()); let cancel_btn = Maybe::new(theme::BG, cancel_btn, allow_cancel).into_child(); Self { @@ -94,7 +86,7 @@ impl<'a> PinKeyboard<'a> { erase_btn, cancel_btn, confirm_btn: Button::with_icon(theme::ICON_CONFIRM) - .styled(theme::button_confirm()) + .styled(theme::button_pin_confirm()) .initially_enabled(false) .into_child(), digit_btns: Self::generate_digit_buttons(), @@ -108,7 +100,10 @@ impl<'a> PinKeyboard<'a> { random::shuffle(&mut digits); digits .map(|c| Button::with_text(c.into())) - .map(|b| b.styled(theme::button_pin())) + .map(|b| { + b.styled(theme::button_keyboard()) + .with_text_align(Alignment::Center) + }) .map(Child::new) } @@ -150,20 +145,10 @@ impl Component for PinKeyboard<'_> { type Msg = PinKeyboardMsg; fn place(&mut self, bounds: Rect) -> Rect { - // Ignore the top padding for now, we need it to reliably register textbox touch - // events. - let borders_no_top = Insets { - top: 0, - ..theme::borders() - }; // Prompts and PIN dots display. - let (header, keypad) = bounds - .inset(borders_no_top) - .split_bottom(4 * theme::PIN_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); + let (header, keypad) = + bounds.split_bottom(4 * theme::PIN_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); let prompt = header.inset(HEADER_PADDING); - // the inset -3 is a workaround for long text in "re-enter wipe code" - let major_area = prompt.translate(Self::MAJOR_OFF).inset(Insets::right(-3)); - let minor_area = prompt.translate(Self::MINOR_OFF); // Control buttons. let grid = Grid::new(keypad, 4, 3).with_spacing(theme::BUTTON_SPACING); @@ -171,9 +156,9 @@ impl Component for PinKeyboard<'_> { // Prompts and PIN dots display. self.textbox_pad.place(header); self.textbox.place(header); - self.major_prompt.place(major_area); - self.minor_prompt.place(minor_area); - self.major_warning.as_mut().map(|c| c.place(major_area)); + self.major_prompt.place(prompt); + self.minor_prompt.place(prompt); + self.major_warning.as_mut().map(|c| c.place(prompt)); // Control buttons. let erase_cancel_area = grid.row_col(3, 0); @@ -269,6 +254,7 @@ impl Component for PinKeyboard<'_> { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.erase_btn.render(target); self.textbox_pad.render(target); + if self.textbox.inner().is_empty() { if let Some(ref w) = self.major_warning { w.render(target); @@ -280,7 +266,9 @@ impl Component for PinKeyboard<'_> { } else { self.textbox.render(target); } + self.confirm_btn.render(target); + for btn in &self.digit_btns { btn.render(target); } @@ -310,7 +298,7 @@ struct PinDots { impl PinDots { const DOT: i16 = 6; - const PADDING: i16 = 6; + const PADDING: i16 = 7; const TWITCH: i16 = 4; fn new(style: TextStyle) -> Self { @@ -361,128 +349,63 @@ impl PinDots { &self.digits } - fn paint_digits(&self, area: Rect) { - let center = area.center() + Offset::y(Font::MONO.text_height() / 2); - let right = center + Offset::x(Font::MONO.text_width("0") * (MAX_VISIBLE_DOTS as i16) / 2); - let digits = self.digits.len(); - - if digits <= MAX_VISIBLE_DOTS { - display::text_center( - center, - &self.digits, - Font::MONO, - self.style.text_color, - self.style.background_color, - ); - } else { - let offset: usize = digits.saturating_sub(MAX_VISIBLE_DIGITS); - display::text_right( - right, - &self.digits[offset..], - Font::MONO, - self.style.text_color, - self.style.background_color, - ); - } - } - fn render_digits<'s>(&self, area: Rect, target: &mut impl Renderer<'s>) { - let center = area.center() + Offset::y(Font::MONO.text_height() / 2); - let right = center + Offset::x(Font::MONO.text_width("0") * (MAX_VISIBLE_DOTS as i16) / 2); + let left = area.left_center() + Offset::y(Font::MONO.visible_text_height("1") / 2); let digits = self.digits.len(); - if digits <= MAX_VISIBLE_DOTS { - shape::Text::new(center, &self.digits) - .with_align(Alignment::Center) + if digits <= MAX_VISIBLE_DIGITS { + shape::Text::new(left, &self.digits) + .with_align(Alignment::Start) .with_font(Font::MONO) .with_fg(self.style.text_color) .render(target); } else { let offset: usize = digits.saturating_sub(MAX_VISIBLE_DIGITS); - shape::Text::new(right, &self.digits[offset..]) - .with_align(Alignment::End) + shape::Text::new(left, &self.digits[offset..]) + .with_align(Alignment::Start) .with_font(Font::MONO) .with_fg(self.style.text_color) .render(target); } } - fn paint_dots(&self, area: Rect) { - let mut cursor = self.size().snap(area.center(), Alignment2D::CENTER); - - let digits = self.digits.len(); - let dots_visible = digits.min(MAX_VISIBLE_DOTS); - let step = Self::DOT + Self::PADDING; - - // Jiggle when overflowed. - if digits > dots_visible && digits % 2 == 0 { - cursor.x += Self::TWITCH - } - - // Small leftmost dot. - if digits > dots_visible + 1 { - theme::DOT_SMALL.draw( - cursor - Offset::x(2 * step), - Alignment2D::TOP_LEFT, - self.style.text_color, - self.style.background_color, - ); - } - - // Greyed out dot. - if digits > dots_visible { - theme::DOT_ACTIVE.draw( - cursor - Offset::x(step), - Alignment2D::TOP_LEFT, - theme::GREY_LIGHT, - self.style.background_color, - ); - } - - // Draw a dot for each PIN digit. - for _ in 0..dots_visible { - theme::DOT_ACTIVE.draw( - cursor, - Alignment2D::TOP_LEFT, - self.style.text_color, - self.style.background_color, - ); - cursor.x += step; - } - } - fn render_dots<'s>(&self, area: Rect, target: &mut impl Renderer<'s>) { - let mut cursor = self.size().snap(area.center(), Alignment2D::CENTER); + let mut cursor = area.left_center(); let digits = self.digits.len(); let dots_visible = digits.min(MAX_VISIBLE_DOTS); let step = Self::DOT + Self::PADDING; // Jiggle when overflowed. - if digits > dots_visible && digits % 2 == 0 { + if digits > MAX_VISIBLE_DOTS + 1 && (digits + 1) % 2 == 0 { cursor.x += Self::TWITCH } + let mut digit_idx = 0; // Small leftmost dot. - if digits > dots_visible + 1 { - shape::ToifImage::new(cursor - Offset::x(2 * step), theme::DOT_SMALL.toif) - .with_align(Alignment2D::TOP_LEFT) - .with_fg(self.style.text_color) + if digits > MAX_VISIBLE_DOTS + 1 { + shape::ToifImage::new(cursor, theme::DOT_SMALL.toif) + .with_align(Alignment2D::CENTER_LEFT) + .with_fg(theme::GREY) .render(target); + cursor.x += step; + digit_idx += 1; } // Greyed out dot. - if digits > dots_visible { - shape::ToifImage::new(cursor - Offset::x(step), theme::DOT_ACTIVE.toif) - .with_align(Alignment2D::TOP_LEFT) - .with_fg(theme::GREY_LIGHT) + if digits > MAX_VISIBLE_DOTS { + shape::ToifImage::new(cursor, theme::DOT_SMALL.toif) + .with_align(Alignment2D::CENTER_LEFT) + .with_fg(self.style.text_color) .render(target); + cursor.x += step; + digit_idx += 1; } // Draw a dot for each PIN digit. - for _ in 0..dots_visible { - shape::ToifImage::new(cursor, theme::DOT_ACTIVE.toif) - .with_align(Alignment2D::TOP_LEFT) + for _ in digit_idx..dots_visible { + shape::ToifImage::new(cursor, theme::ICON_PIN_BULLET.toif) + .with_align(Alignment2D::CENTER_LEFT) .with_fg(self.style.text_color) .render(target); cursor.x += step; @@ -521,13 +444,7 @@ impl Component for PinDots { } fn paint(&mut self) { - let dot_area = self.area.inset(HEADER_PADDING); - self.pad.paint(); - if self.display_digits { - self.paint_digits(dot_area) - } else { - self.paint_dots(dot_area) - } + // TODO: remove when ui-t3t1 done } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs index fbda9ca84e..720336473f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -25,7 +25,7 @@ impl SelectWordCount { SelectWordCount { button: LABELS.map(|t| { Button::with_text(t.into()) - .styled(theme::button_pin()) + .styled(theme::button_keyboard()) .with_text_align(Alignment::Center) }), } diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-active.toif b/core/embed/rust/src/ui/model_mercury/res/scroll-active.toif new file mode 100644 index 0000000000000000000000000000000000000000..60e142c77f226c1511c6de5bc68bc6f6f453e88b GIT binary patch literal 43 ycmWIX_jKoA;9!tvU|<NY*gNm##sB}S_W%2T|346X|KD&VUqM=B*@tX-VFm!FcNL8Q literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-inactive-half.toif b/core/embed/rust/src/ui/model_mercury/res/scroll-inactive-half.toif new file mode 100644 index 0000000000000000000000000000000000000000..41a181f87ba860ff0470a09c2e2b42448c4bb611 GIT binary patch literal 40 ucmWIX_jKoA;9!tpU|>j2U}&1g(bh22I8rL@+!Kbxb|6bK%GSY%hXDY~zY5y` literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-inactive-quarter.toif b/core/embed/rust/src/ui/model_mercury/res/scroll-inactive-quarter.toif new file mode 100644 index 0000000000000000000000000000000000000000..379b3b0502d14a876e61bc1bf0cae6aab830445d GIT binary patch literal 22 dcmWIX_jG4rU}4~5U|`7JHshk@;>|ai7yvlI208!$ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-inactive.toif b/core/embed/rust/src/ui/model_mercury/res/scroll-inactive.toif new file mode 100644 index 0000000000000000000000000000000000000000..a81c1f9369fba9f216f01a633a56e3f16ac39684 GIT binary patch literal 44 zcmV+{0Mq|ePf14z00;me0000JXwPJ9oH<is+RT}iGiT21oB<@J&zzYF5)+tK!3Y2| C>kohc literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/scroll-small.toif b/core/embed/rust/src/ui/model_mercury/res/scroll-small.toif new file mode 100644 index 0000000000000000000000000000000000000000..45cdd20fb050bc3378f64a4aa7e9536f97886e4d GIT binary patch literal 30 lcmWIX_jG4tU}F$sU|>j2NC@Ca<?=}8_DE(ml8}&K002>E1snhX literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 0cb5244d1f..38ae732175 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -35,9 +35,11 @@ pub const GREY_DARK: Color = Color::rgb(0x46, 0x48, 0x4A); pub const GREY: Color = Color::rgb(0x8B, 0x8F, 0x93); // secondary text, subtitle, instructions pub const GREY_LIGHT: Color = Color::rgb(0xC7, 0xCD, 0xD3); // content pub const GREY_EXTRA_LIGHT: Color = Color::rgb(0xF0, 0xF0, 0xF0); // primary text, header +pub const GREEN_DARK: Color = Color::rgb(0x06, 0x1E, 0x19); pub const GREEN: Color = Color::rgb(0x08, 0x74, 0x48); pub const GREEN_LIGHT: Color = Color::rgb(0x0B, 0xA5, 0x67); pub const GREEN_LIME: Color = Color::rgb(0x9B, 0xE8, 0x87); +pub const ORANGE_DARK: Color = Color::rgb(0x18, 0x0C, 0x0A); pub const ORANGE_DIMMED: Color = Color::rgb(0x9E, 0x57, 0x42); pub const ORANGE_LIGHT: Color = Color::rgb(0xFF, 0x8D, 0x6A); // cancel button @@ -46,7 +48,6 @@ pub const RED: Color = Color::rgb(0xE7, 0x0E, 0x0E); // button pub const RED_DARK: Color = Color::rgb(0xAE, 0x09, 0x09); // button pressed pub const YELLOW: Color = Color::rgb(0xD9, 0x9E, 0x00); // button pub const YELLOW_DARK: Color = Color::rgb(0x7A, 0x58, 0x00); // button pressed -pub const GREEN_DARK: Color = Color::rgb(0x00, 0x55, 0x1D); // button pressed pub const BLUE: Color = Color::rgb(0x06, 0x1E, 0xAD); // button pub const BLUE_DARK: Color = Color::rgb(0x04, 0x10, 0x58); // button pressed pub const OFF_WHITE: Color = Color::rgb(0xDE, 0xDE, 0xDE); // very light grey @@ -109,6 +110,20 @@ include_icon!( ); include_icon!(ICON_CENTRAL_CIRCLE, "model_mercury/res/central_circle.toif"); +// Scrollbar/PIN dots - taken from model T +include_icon!(DOT_ACTIVE, "model_mercury/res/scroll-active.toif"); +include_icon!(DOT_INACTIVE, "model_mercury/res/scroll-inactive.toif"); +include_icon!( + DOT_INACTIVE_HALF, + "model_mercury/res/scroll-inactive-half.toif" +); +include_icon!( + DOT_INACTIVE_QUARTER, + "model_mercury/res/scroll-inactive-quarter.toif" +); +include_icon!(DOT_SMALL, "model_mercury/res/scroll-small.toif"); +include_icon!(ICON_PIN_BULLET, "model_mercury/res/pin_bullet6.toif"); + // TODO remove TT icons: // Button icons. @@ -163,16 +178,6 @@ include_icon!(ICON_LOGO_EMPTY, "model_tt/res/lock_empty.toif"); // Default homescreen pub const IMAGE_HOMESCREEN: &[u8] = include_res!("model_tt/res/bg.jpg"); -// Scrollbar/PIN dots. -include_icon!(DOT_ACTIVE, "model_tt/res/scroll-active.toif"); -include_icon!(DOT_INACTIVE, "model_tt/res/scroll-inactive.toif"); -include_icon!(DOT_INACTIVE_HALF, "model_tt/res/scroll-inactive-half.toif"); -include_icon!( - DOT_INACTIVE_QUARTER, - "model_tt/res/scroll-inactive-quarter.toif" -); -include_icon!(DOT_SMALL, "model_tt/res/scroll-small.toif"); - pub const fn label_default() -> TextStyle { TEXT_NORMAL } @@ -399,6 +404,7 @@ pub const fn button_danger() -> ButtonStyleSheet { } } +// TODO: delete pub const fn button_reset() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { @@ -425,7 +431,8 @@ pub const fn button_reset() -> ButtonStyleSheet { } } -pub const fn button_pin() -> ButtonStyleSheet { +// used for PIN digit keys and passphrase/recovery letter keys +pub const fn button_keyboard() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::NORMAL, @@ -436,9 +443,9 @@ pub const fn button_pin() -> ButtonStyleSheet { }, active: &ButtonStyle { font: Font::NORMAL, - text_color: GREY_LIGHT, - button_color: GREY_EXTRA_DARK, - icon_color: GREY_LIGHT, + text_color: BG, + button_color: GREY_LIGHT, + icon_color: BG, background_color: BG, }, disabled: &ButtonStyle { @@ -451,24 +458,76 @@ pub const fn button_pin() -> ButtonStyleSheet { } } -// TODO: will button_pin_xyz styles be the same for PIN and Mnemonic keyboard? -// Wait for Figma pub const fn button_pin_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, text_color: FG, + button_color: GREEN_DARK, + icon_color: GREEN_LIME, + background_color: BG, + }, + active: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREEN_LIGHT, + icon_color: GREEN_DARK, + background_color: BG, + }, + disabled: &ButtonStyle { + font: Font::MONO, + text_color: GREY_DARK, button_color: BG, - icon_color: GREEN_LIGHT, + icon_color: GREY_DARK, + background_color: BG, + }, + } +} + +pub const fn button_pin_cancel() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: BG, // TODO: gradient + icon_color: ORANGE_LIGHT, background_color: BG, }, active: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: GREY_DARK, + button_color: ORANGE_LIGHT, + icon_color: BG, + background_color: BG, + }, + // not used + disabled: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: BG, icon_color: GREEN_LIGHT, background_color: BG, }, + } +} + +pub const fn button_pin_erase() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: BG, // TODO: gradient + icon_color: GREY, + background_color: BG, + }, + active: &ButtonStyle { + font: Font::MONO, + text_color: FG, + button_color: GREY_LIGHT, + icon_color: BG, + background_color: BG, + }, + // not used disabled: &ButtonStyle { font: Font::MONO, text_color: FG, @@ -479,7 +538,7 @@ pub const fn button_pin_confirm() -> ButtonStyleSheet { } } -pub const fn button_pin_autocomplete() -> ButtonStyleSheet { +pub const fn button_bip39_autocomplete() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, @@ -691,7 +750,7 @@ pub const RECOVERY_SPACING: i16 = 18; pub const CORNER_BUTTON_SIDE: i16 = 44; pub const CORNER_BUTTON_SPACING: i16 = BUTTON_SPACING; pub const INFO_BUTTON_HEIGHT: i16 = 44; -pub const PIN_BUTTON_HEIGHT: i16 = 40; +pub const PIN_BUTTON_HEIGHT: i16 = 52; pub const MNEMONIC_BUTTON_HEIGHT: i16 = 52; pub const RESULT_PADDING: i16 = 6; pub const RESULT_FOOTER_START: i16 = 171; From d8f20616bee763814cc30e1d067326667ab4c694 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 9 May 2024 18:01:51 +0200 Subject: [PATCH 151/626] feat(core/ui): T3T1 set new PIN flow [no changelog] --- core/embed/rust/librust_qstr.h | 4 + .../generated/translated_string.rs | 12 ++ .../model_mercury/component/keyboard/pin.rs | 23 +-- .../model_mercury/flow/confirm_set_new_pin.rs | 145 ++++++++++++++++++ .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../embed/rust/src/ui/model_mercury/layout.rs | 37 ++++- core/mocks/generated/trezorui2.pyi | 9 ++ core/mocks/trezortranslate_keys.pyi | 3 + .../src/trezor/ui/layouts/mercury/__init__.py | 14 +- core/translations/en.json | 3 + core/translations/order.json | 6 +- core/translations/signatures.json | 6 +- tests/buttons.py | 4 +- tests/click_tests/common.py | 15 +- tests/click_tests/recovery.py | 16 +- tests/click_tests/test_autolock.py | 7 +- tests/click_tests/test_pin.py | 9 +- tests/conftest.py | 5 +- tests/device_tests/test_msg_changepin_t2.py | 25 +++ 19 files changed, 292 insertions(+), 53 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 5474b349a9..a6c8e52b72 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -214,6 +214,7 @@ static void _librust_qstrs(void) { MP_QSTR_firmware_update__title_fingerprint; MP_QSTR_flow_confirm_reset_create; MP_QSTR_flow_confirm_reset_recover; + MP_QSTR_flow_confirm_set_new_pin; MP_QSTR_flow_get_address; MP_QSTR_flow_prompt_backup; MP_QSTR_flow_show_share_words; @@ -307,6 +308,9 @@ static void _librust_qstrs(void) { MP_QSTR_passphrase__turn_off; MP_QSTR_passphrase__turn_on; MP_QSTR_path; + MP_QSTR_pin__cancel_description; + MP_QSTR_pin__cancel_info; + MP_QSTR_pin__cancel_setup; MP_QSTR_pin__change; MP_QSTR_pin__changed; MP_QSTR_pin__cursor_will_change; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 0c8bd01f3c..0b9e9695c9 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1268,6 +1268,10 @@ pub enum TranslatedString { instructions__continue_in_app = 867, // "Continue in the app" words__cancel_and_exit = 868, // "Cancel and exit" address__confirmed = 869, // "Receive address confirmed" + reset__title_shamir_backup = 870, // "Multi-share backup" + pin__cancel_description = 871, // "Continue without PIN" + pin__cancel_info = 872, // "Without a PIN, anyone can access this device." + pin__cancel_setup = 873, // "Cancel PIN setup" } impl TranslatedString { @@ -2531,6 +2535,10 @@ impl TranslatedString { Self::instructions__continue_in_app => "Continue in the app", Self::words__cancel_and_exit => "Cancel and exit", Self::address__confirmed => "Receive address confirmed", + Self::reset__title_shamir_backup => "Multi-share backup", + Self::pin__cancel_description => "Continue without PIN", + Self::pin__cancel_info => "Without a PIN, anyone can access this device.", + Self::pin__cancel_setup => "Cancel PIN setup", } } @@ -3795,6 +3803,10 @@ impl TranslatedString { Qstr::MP_QSTR_instructions__continue_in_app => Some(Self::instructions__continue_in_app), Qstr::MP_QSTR_words__cancel_and_exit => Some(Self::words__cancel_and_exit), Qstr::MP_QSTR_address__confirmed => Some(Self::address__confirmed), + Qstr::MP_QSTR_reset__title_shamir_backup => Some(Self::reset__title_shamir_backup), + Qstr::MP_QSTR_pin__cancel_description => Some(Self::pin__cancel_description), + Qstr::MP_QSTR_pin__cancel_info => Some(Self::pin__cancel_info), + Qstr::MP_QSTR_pin__cancel_setup => Some(Self::pin__cancel_setup), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index f85ced9732..54c4c85f4c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -32,11 +32,12 @@ const MAX_VISIBLE_DOTS: usize = 18; const MAX_VISIBLE_DIGITS: usize = 18; const DIGIT_COUNT: usize = 10; // 0..10 +const HEADER_PADDING_TOP: i16 = 4; const HEADER_PADDING_SIDE: i16 = 2; -const HEADER_PADDING_BOTTOM: i16 = 2; +const HEADER_PADDING_BOTTOM: i16 = 4; const HEADER_PADDING: Insets = Insets::new( - 0, + HEADER_PADDING_TOP, HEADER_PADDING_SIDE, HEADER_PADDING_BOTTOM, HEADER_PADDING_SIDE, @@ -232,23 +233,7 @@ impl Component for PinKeyboard<'_> { } fn paint(&mut self) { - self.erase_btn.paint(); - self.textbox_pad.paint(); - if self.textbox.inner().is_empty() { - if let Some(ref mut w) = self.major_warning { - w.paint(); - } else { - self.major_prompt.paint(); - } - self.minor_prompt.paint(); - self.cancel_btn.paint(); - } else { - self.textbox.paint(); - } - self.confirm_btn.paint(); - for btn in &mut self.digit_btns { - btn.paint(); - } + todo!("remove when ui-t3t1 done"); } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs new file mode 100644 index 0000000000..2fe3ee9ce9 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs @@ -0,0 +1,145 @@ +use crate::{ + error, + micropython::qstr::Qstr, + strutil::TString, + translations::TR, + ui::{ + component::{ + text::paragraphs::{Paragraph, Paragraphs}, + ComponentExt, SwipeDirection, + }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + }, +}; + +use super::super::{ + component::{ + CancelInfoConfirmMsg, Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + }, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum SetNewPin { + Intro, + Menu, + CancelPinIntro, + CancelPinConfirm, +} + +impl FlowState for SetNewPin { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (SetNewPin::Intro, SwipeDirection::Left) => Decision::Goto(SetNewPin::Menu, direction), + (SetNewPin::CancelPinIntro, SwipeDirection::Up) => { + Decision::Goto(SetNewPin::CancelPinConfirm, direction) + } + (SetNewPin::CancelPinConfirm, SwipeDirection::Down) => { + Decision::Goto(SetNewPin::CancelPinIntro, direction) + } + (SetNewPin::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (SetNewPin::Intro, FlowMsg::Info) => { + Decision::Goto(SetNewPin::Menu, SwipeDirection::Left) + } + (SetNewPin::Menu, FlowMsg::Choice(0)) => { + Decision::Goto(SetNewPin::CancelPinIntro, SwipeDirection::Left) + } + (SetNewPin::Menu, FlowMsg::Cancelled) => { + Decision::Goto(SetNewPin::Intro, SwipeDirection::Right) + } + (SetNewPin::CancelPinIntro, FlowMsg::Cancelled) => { + Decision::Goto(SetNewPin::Menu, SwipeDirection::Right) + } + (SetNewPin::CancelPinConfirm, FlowMsg::Cancelled) => { + Decision::Goto(SetNewPin::CancelPinIntro, SwipeDirection::Right) + } + (SetNewPin::CancelPinConfirm, FlowMsg::Confirmed) => { + Decision::Return(FlowMsg::Cancelled) + } + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_set_new_pin(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, SetNewPin::new_obj) } +} + +impl SetNewPin { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + // TODO: supply more arguments for Wipe code setting when figma done + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + + let par_array: [Paragraph<'static>; 1] = + [Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)]; + let paragraphs = Paragraphs::new(par_array); + let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| { + matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) + }); + + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::pin__cancel_setup.into()), + ) + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(_) => None, + }); + + let par_array_cancel_intro: [Paragraph<'static>; 2] = [ + Paragraph::new(&theme::TEXT_WARNING, TR::words__not_recommended), + Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::pin__cancel_info), + ]; + let paragraphs_cancel_intro = Paragraphs::new(par_array_cancel_intro); + let content_cancel_intro = Frame::left_aligned( + TR::pin__cancel_setup.into(), + SwipePage::vertical(paragraphs_cancel_intro), + ) + .with_cancel_button() + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::pin__cancel_description.into()), + ) + .map(|msg| match msg { + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let content_cancel_confirm = Frame::left_aligned( + TR::pin__cancel_setup.into(), + PromptScreen::new_tap_to_cancel(), + ) + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let store = flow_store() + .add(content_intro)? + .add(content_menu)? + .add(content_cancel_intro)? + .add(content_cancel_confirm)?; + let res = SwipeFlow::new(SetNewPin::Intro, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 9796605970..af52f0367d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,5 +1,6 @@ pub mod confirm_reset_create; pub mod confirm_reset_recover; +pub mod confirm_set_new_pin; pub mod get_address; pub mod prompt_backup; pub mod show_share_words; @@ -7,6 +8,7 @@ pub mod warning_hi_prio; pub use confirm_reset_create::ConfirmResetCreate; pub use confirm_reset_recover::ConfirmResetRecover; +pub use confirm_set_new_pin::SetNewPin; pub use get_address::GetAddress; pub use prompt_backup::PromptBackup; pub use show_share_words::ShowShareWords; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index fa4a8da1f9..2f14470e05 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -882,14 +882,26 @@ fn new_show_modal( extern "C" fn new_show_error(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let icon = BlendedImage::new( - theme::IMAGE_BG_CIRCLE, - theme::IMAGE_FG_ERROR, - theme::ERROR_COLOR, - theme::FG, - theme::BG, - ); - new_show_modal(kwargs, icon, theme::button_default()) + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let allow_cancel: bool = kwargs.get(Qstr::MP_QSTR_allow_cancel)?.try_into()?; + + let content = SwipeUpScreen::new(Paragraphs::new([Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + description, + )])); + let frame = if allow_cancel { + Frame::left_aligned(title, content) + .with_cancel_button() + .with_danger() + .with_footer(TR::instructions__swipe_up.into(), None) + } else { + Frame::left_aligned(title, content) + .with_danger() + .with_footer(TR::instructions__swipe_up.into(), None) + }; + let obj = LayoutObj::new(frame)?; + Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -1670,6 +1682,15 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Confirm TOS before creating a wallet and have a user hold to confirm creation.""" Qstr::MP_QSTR_flow_confirm_reset_create => obj_fn_kw!(0, flow::confirm_reset_create::new_confirm_reset_create).as_obj(), + // TODO: supply more arguments for Wipe code setting when figma done + /// def flow_confirm_set_new_pin( + /// *, + /// title: str, + /// description: str, + /// ) -> LayoutObj[UiResult]: + /// """Confirm new PIN setup with an option to cancel action.""" + Qstr::MP_QSTR_flow_confirm_set_new_pin => obj_fn_kw!(0, flow::confirm_set_new_pin::new_set_new_pin).as_obj(), + /// def show_info_with_cancel( /// *, /// title: str, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index bee6c6aeb1..a18d10966c 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -155,6 +155,15 @@ def flow_confirm_reset_create() -> LayoutObj[UiResult]: """Confirm TOS before creating a wallet and have a user hold to confirm creation.""" +# rust/src/ui/model_mercury/layout.rs +def flow_confirm_set_new_pin( + *, + title: str, + description: str, +) -> LayoutObj[UiResult]: + """Confirm new PIN setup with an option to cancel action.""" + + # rust/src/ui/model_mercury/layout.rs def show_info_with_cancel( *, diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index a17c68fd63..f0c83db410 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -475,6 +475,9 @@ class TR: passphrase__title_source: str = "Passphrase source" passphrase__turn_off: str = "Turn off passphrase protection?" passphrase__turn_on: str = "Turn on passphrase protection?" + pin__cancel_description: str = "Continue without PIN" + pin__cancel_info: str = "Without a PIN, anyone can access this device." + pin__cancel_setup: str = "Cancel PIN setup" pin__change: str = "Change PIN?" pin__changed: str = "PIN changed." pin__cursor_will_change: str = "Position of the cursor will change between entries for enhanced security." diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 7b013089fc..fc6c3f6e44 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -1404,8 +1404,9 @@ async def pin_mismatch_popup( is_wipe_code: bool = False, ) -> None: await button_request("pin_mismatch", code=BR_TYPE_OTHER) - title = TR.wipe_code__wipe_code_mismatch if is_wipe_code else TR.pin__pin_mismatch - description = TR.wipe_code__mismatch if is_wipe_code else TR.pin__mismatch + title = TR.wipe_code__mismatch if is_wipe_code else TR.pin__mismatch + description = TR.wipe_code__enter_new if is_wipe_code else TR.pin__reenter_new + return await show_error_popup( title, description, @@ -1432,14 +1433,7 @@ async def confirm_set_new_pin( await raise_if_not_confirmed( interact( RustLayout( - trezorui2.confirm_emphasized( - title=title, - items=( - (True, description + "\n\n"), - information, - ), - verb=TR.buttons__turn_on, - ) + trezorui2.flow_confirm_set_new_pin(title=title, description=description) ), br_type, br_code, diff --git a/core/translations/en.json b/core/translations/en.json index 789a97606b..adca071828 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -477,8 +477,11 @@ "passphrase__title_source": "Passphrase source", "passphrase__turn_off": "Turn off passphrase protection?", "passphrase__turn_on": "Turn on passphrase protection?", + "pin__cancel_info": "Without a PIN, anyone can access this device.", + "pin__cancel_setup": "Cancel PIN setup", "pin__change": "Change PIN?", "pin__changed": "PIN changed.", + "pin__cancel_description": "Continue without PIN", "pin__cursor_will_change": "Position of the cursor will change between entries for enhanced security.", "pin__diff_from_wipe_code": "The new PIN must be different from your wipe code.", "pin__disabled": "PIN protection\nturned off.", diff --git a/core/translations/order.json b/core/translations/order.json index 107719622e..d0bceef212 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -868,5 +868,9 @@ "866": "address_details__derivation_path", "867": "instructions__continue_in_app", "868": "words__cancel_and_exit", - "869": "address__confirmed" + "869": "address__confirmed", + "870": "reset__title_shamir_backup", + "871": "pin__cancel_description", + "872": "pin__cancel_info", + "873": "pin__cancel_setup" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index ea42b34d37..eb1a5e8182 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "d2a00bb90ebc87448eb0786432129db7c4e67316de7c491bf854d8429d2db9b8", - "datetime": "2024-05-17T10:29:37.039056", - "commit": "b3379e14e0658ab2327bffdfff5227f6079c8f74" + "merkle_root": "9c620dab3212f47d952020e2badc61a9443778fbca180208db622f3d0ebcbe5c", + "datetime": "2024-05-17T10:46:08.576451", + "commit": "cce30d1364fb62e3ed51509fefe7d48c86b45a5c" }, "history": [ { diff --git a/tests/buttons.py b/tests/buttons.py index 84f71fac7d..8cec76919b 100644 --- a/tests/buttons.py +++ b/tests/buttons.py @@ -17,8 +17,8 @@ def grid(dim: int, grid_cells: int, cell: int) -> int: MID = grid(DISPLAY_WIDTH, 3, 1) RIGHT = grid(DISPLAY_WIDTH, 3, 2) -TOP = grid(DISPLAY_HEIGHT, 4, 0) -BOTTOM = grid(DISPLAY_HEIGHT, 4, 3) +TOP = grid(DISPLAY_HEIGHT, 6, 0) +BOTTOM = grid(DISPLAY_HEIGHT, 6, 5) OK = (RIGHT, BOTTOM) CANCEL = (LEFT, BOTTOM) diff --git a/tests/click_tests/common.py b/tests/click_tests/common.py index 2635469036..781cfb47bf 100644 --- a/tests/click_tests/common.py +++ b/tests/click_tests/common.py @@ -46,10 +46,12 @@ def get_char_category(char: str) -> PassphraseCategory: def go_next(debug: "DebugLink", wait: bool = False) -> "LayoutContent" | None: - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): return debug.click(buttons.OK, wait=wait) # type: ignore elif debug.model in (models.T2B1,): return debug.press_right(wait=wait) # type: ignore + elif debug.model in (models.T3T1,): + return debug.swipe_up(wait=wait) else: raise RuntimeError("Unknown model") @@ -111,6 +113,17 @@ def current_is_wanted(wanted_action: str) -> bool: debug.press_middle(wait=True) +def unlock_gesture(debug: "DebugLink", wait: bool = False) -> "LayoutContent" | None: + if debug.model in (models.T2T1,): + return debug.click(buttons.OK, wait=wait) # type: ignore + elif debug.model in (models.T2B1,): + return debug.press_right(wait=wait) # type: ignore + elif debug.model in (models.T3T1,): + return debug.click(buttons.TAP_TO_CONFIRM, wait=wait) # type: ignore + else: + raise RuntimeError("Unknown model") + + def _get_action_index(wanted_action: str, all_actions: list[str]) -> int: """Get index of the action in the list of all actions""" if wanted_action in all_actions: diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index c6def77f27..26e131944c 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -62,7 +62,7 @@ def select_number_of_words( if wait: debug.wait_layout() TR.assert_equals(debug.read_layout().text_content(), "recovery__num_of_words") - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): # click the number word_option_offset = 6 word_options = (12, 18, 20, 24, 33) @@ -81,6 +81,20 @@ def select_number_of_words( for _ in range(index): debug.press_right(wait=True) layout = debug.press_middle(wait=True) + elif debug.model in (models.T3T1,): + if num_of_words == 12: + coords = buttons.grid34(0, 1) + elif num_of_words == 18: + coords = buttons.grid34(2, 1) + elif num_of_words == 20: + coords = buttons.grid34(0, 2) + elif num_of_words == 24: + coords = buttons.grid34(2, 2) + elif num_of_words == 33: + coords = buttons.grid34(1, 3) + else: + raise ValueError("Invalid num_of_words") + layout = debug.click(coords, wait=True) else: raise ValueError("Unknown model") diff --git a/tests/click_tests/test_autolock.py b/tests/click_tests/test_autolock.py index 7f6d2a5619..dca2a7926b 100644 --- a/tests/click_tests/test_autolock.py +++ b/tests/click_tests/test_autolock.py @@ -29,7 +29,7 @@ from ..device_tests.bitcoin.payment_req import make_coinjoin_request from ..tx_cache import TxCache from . import recovery -from .common import go_next +from .common import go_next, unlock_gesture if TYPE_CHECKING: from trezorlib.debuglink import DebugLink, LayoutContent @@ -279,7 +279,8 @@ def test_dryrun_locks_at_number_of_words(device_handler: "BackgroundDeviceHandle # unlock # lockscreen triggered automatically debug.wait_layout(wait_for_external_change=True) - layout = go_next(debug, wait=True) + layout = unlock_gesture(debug, wait=True) + assert "PinKeyboard" in layout.all_components() layout = debug.input(PIN4, wait=True) assert layout is not None @@ -301,7 +302,7 @@ def test_dryrun_locks_at_word_entry(device_handler: "BackgroundDeviceHandler"): recovery.select_number_of_words(debug, 20) if debug.model in (models.T2T1, models.T3T1): - layout = debug.click(buttons.OK, wait=True) + layout = go_next(debug, wait=True) assert layout.main_component() == "MnemonicKeyboard" elif debug.model in (models.T2B1,): layout = debug.press_right(wait=True) diff --git a/tests/click_tests/test_pin.py b/tests/click_tests/test_pin.py index 444066247e..48845c50fc 100644 --- a/tests/click_tests/test_pin.py +++ b/tests/click_tests/test_pin.py @@ -95,7 +95,9 @@ def prepare( elif situation == Situation.PIN_SETUP: # Set new PIN device_handler.run(device.change_pin) # type: ignore - TR.assert_in(debug.wait_layout().text_content(), "pin__turn_on") + TR.assert_in_multiple( + debug.wait_layout().text_content(), ["pin__turn_on", "pin__info"] + ) if debug.model in (models.T2T1, models.T3T1): go_next(debug) elif debug.model in (models.T2B1,): @@ -306,12 +308,15 @@ def test_pin_setup(device_handler: "BackgroundDeviceHandler"): def test_pin_setup_mismatch(device_handler: "BackgroundDeviceHandler"): with PIN_CANCELLED, prepare(device_handler, Situation.PIN_SETUP) as debug: _enter_two_times(debug, "1", "2") - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): go_next(debug) _cancel_pin(debug) elif debug.model in (models.T2B1,): debug.press_middle() debug.press_no() + elif debug.model in (models.T3T1,): + go_next(debug, wait=True) + _cancel_pin(debug) @pytest.mark.setup_client(pin="1") diff --git a/tests/conftest.py b/tests/conftest.py index a30ff3e7bd..42ec1e969f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -421,12 +421,11 @@ def pytest_configure(config: "Config") -> None: def pytest_runtest_setup(item: pytest.Item) -> None: """Called for each test item (class, individual tests). - Ensures that altcoin tests are skipped, and that no test is skipped on - both T1 and TT. + Ensures that altcoin tests are skipped, and that no test is skipped for all models. """ if all( item.get_closest_marker(marker) - for marker in ("skip_t1b1", "skip_t2t1", "skip_t2b1") + for marker in ("skip_t1b1", "skip_t2t1", "skip_t2b1", "skip_t3t1") ): raise RuntimeError("Don't skip tests for all trezor models!") diff --git a/tests/device_tests/test_msg_changepin_t2.py b/tests/device_tests/test_msg_changepin_t2.py index 301425e982..0ce9fdc2f6 100644 --- a/tests/device_tests/test_msg_changepin_t2.py +++ b/tests/device_tests/test_msg_changepin_t2.py @@ -21,6 +21,7 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import Cancelled, TrezorFailure +from .. import buttons from ..input_flows import ( InputFlowCodeChangeFail, InputFlowNewCodeMismatch, @@ -180,3 +181,27 @@ def test_change_invalid_current(client: Client): client.init_device() assert client.features.pin_protection is True _check_pin(client, PIN4) + + +@pytest.mark.skip_t2b1() +@pytest.mark.skip_t2t1() +@pytest.mark.setup_client(pin=None) +def test_pin_menu_cancel_setup(client: Client): + def cancel_pin_setup_input_flow(): + yield + # enter context menu + client.debug.click(buttons.CORNER_BUTTON) + client.debug.synchronize_at("VerticalMenu") + # click "Cancel PIN setup" + client.debug.click(buttons.VERTICAL_MENU[0]) + client.debug.synchronize_at("Paragraphs") + # swipe through info screen + client.debug.swipe_up() + client.debug.synchronize_at("PromptScreen") + # tap to confirm + client.debug.click(buttons.TAP_TO_CONFIRM) + + with client, pytest.raises(Cancelled): + client.set_input_flow(cancel_pin_setup_input_flow) + client.call(messages.ChangePin()) + _check_no_pin(client) From 1ee36baea865109a19e77f19a9a830389f6f6a6a Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 9 May 2024 23:54:33 +0200 Subject: [PATCH 152/626] feat(core/ui): T3T1 confirm_action Adds SwipeFlow for ConfirmAction or ConfirmActionSimple. Without animation as of now. [no changelog] --- core/embed/rust/librust_qstr.h | 1 + .../ui/model_mercury/flow/confirm_action.rs | 210 ++++++++++++++++++ .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../embed/rust/src/ui/model_mercury/layout.rs | 52 +---- core/mocks/generated/trezorui2.pyi | 2 + 5 files changed, 218 insertions(+), 49 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index a6c8e52b72..639ec4d910 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -358,6 +358,7 @@ static void _librust_qstrs(void) { MP_QSTR_progress__x_seconds_left_template; MP_QSTR_progress_event; MP_QSTR_prompt; + MP_QSTR_prompt_screen; MP_QSTR_qr_title; MP_QSTR_reboot_to_bootloader__just_a_moment; MP_QSTR_reboot_to_bootloader__restart; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs new file mode 100644 index 0000000000..64f956b963 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -0,0 +1,210 @@ +use crate::{ + error, + strutil::TString, + translations::TR, + ui::{ + component::{text::paragraphs::Paragraph, ComponentExt, SwipeDirection}, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +// TODO: merge with code from https://github.com/trezor/trezor-firmware/pull/3805 +// when ready + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum ConfirmAction { + Intro, + Menu, + Confirm, +} + +/// ConfirmAction flow without a separate "Tap to confirm" or "Hold to confirm" +/// screen. Swiping up directly from the intro screen confirms action. +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum ConfirmActionSimple { + Intro, + Menu, +} + +impl FlowState for ConfirmAction { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (ConfirmAction::Intro, SwipeDirection::Left) => { + Decision::Goto(ConfirmAction::Menu, direction) + } + (ConfirmAction::Menu, SwipeDirection::Right) => { + Decision::Goto(ConfirmAction::Intro, direction) + } + (ConfirmAction::Intro, SwipeDirection::Up) => { + Decision::Goto(ConfirmAction::Confirm, direction) + } + (ConfirmAction::Confirm, SwipeDirection::Down) => { + Decision::Goto(ConfirmAction::Intro, direction) + } + (ConfirmAction::Confirm, SwipeDirection::Left) => { + Decision::Goto(ConfirmAction::Menu, direction) + } + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (ConfirmAction::Intro, FlowMsg::Info) => { + Decision::Goto(ConfirmAction::Menu, SwipeDirection::Left) + } + (ConfirmAction::Menu, FlowMsg::Cancelled) => { + Decision::Goto(ConfirmAction::Intro, SwipeDirection::Right) + } + (ConfirmAction::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + (ConfirmAction::Confirm, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Confirmed), + (ConfirmAction::Confirm, FlowMsg::Info) => { + Decision::Goto(ConfirmAction::Menu, SwipeDirection::Left) + } + _ => Decision::Nothing, + } + } +} + +impl FlowState for ConfirmActionSimple { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (ConfirmActionSimple::Intro, SwipeDirection::Left) => { + Decision::Goto(ConfirmActionSimple::Menu, direction) + } + (ConfirmActionSimple::Menu, SwipeDirection::Right) => { + Decision::Goto(ConfirmActionSimple::Intro, direction) + } + (ConfirmActionSimple::Intro, SwipeDirection::Up) => { + Decision::Return(FlowMsg::Confirmed) + } + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (ConfirmActionSimple::Intro, FlowMsg::Info) => { + Decision::Goto(ConfirmActionSimple::Menu, SwipeDirection::Left) + } + (ConfirmActionSimple::Menu, FlowMsg::Cancelled) => { + Decision::Goto(ConfirmActionSimple::Intro, SwipeDirection::Right) + } + (ConfirmActionSimple::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + ui::{ + component::text::paragraphs::{ParagraphSource, ParagraphVecShort, VecExt}, + layout::obj::LayoutObj, + }, +}; + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, new_confirm_action_obj) } +} + +fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let action: Option<TString> = kwargs.get(Qstr::MP_QSTR_action)?.try_into_option()?; + let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; + // let verb: Option<TString> = kwargs + // .get(Qstr::MP_QSTR_verb) + // .unwrap_or_else(|_| Obj::const_none()) + // .try_into_option()?; + let verb_cancel: Option<TString> = kwargs + .get(Qstr::MP_QSTR_verb_cancel) + .unwrap_or_else(|_| Obj::const_none()) + .try_into_option()?; + let reverse: bool = kwargs.get_or(Qstr::MP_QSTR_reverse, false)?; + let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; + // let hold_danger: bool = kwargs.get_or(Qstr::MP_QSTR_hold_danger, false)?; + let prompt_screen: bool = kwargs.get_or(Qstr::MP_QSTR_prompt_screen, false)?; + + let paragraphs = { + let action = action.unwrap_or("".into()); + let description = description.unwrap_or("".into()); + let mut paragraphs = ParagraphVecShort::new(); + if !reverse { + paragraphs + .add(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, action)) + .add(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)); + } else { + paragraphs + .add(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)) + .add(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, action)); + } + paragraphs.into_paragraphs() + }; + + let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + + let content_menu = if let Some(verb_cancel) = verb_cancel { + Frame::left_aligned( + "".into(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, verb_cancel.into()), + ) + } else { + Frame::left_aligned( + "".into(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), + ) + } + .with_cancel_button() + .map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(_)) => Some(FlowMsg::Choice(0)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + if !prompt_screen { + let store = flow_store().add(content_intro)?.add(content_menu)?; + let res = SwipeFlow::new(ConfirmActionSimple::Intro, store)?; + return Ok(LayoutObj::new(res)?.into()); + } else { + let (prompt, prompt_action) = if hold { + ( + PromptScreen::new_hold_to_confirm(), + TR::instructions__hold_to_confirm.into(), + ) + } else { + ( + PromptScreen::new_tap_to_confirm(), + TR::instructions__tap_to_confirm.into(), + ) + }; + + let content_confirm = Frame::left_aligned(title, prompt) + .with_footer(prompt_action, None) + .with_menu_button(); + // .with_overlapping_content(); + + // if let Some(subtitle) = subtitle { + // content_confirm = content_confirm.with_subtitle(subtitle); + // } + + let content_confirm = content_confirm.map(move |msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Info), + }); + + let store = flow_store() + .add(content_intro)? + .add(content_menu)? + .add(content_confirm)?; + let res = SwipeFlow::new(ConfirmAction::Intro, store)?; + return Ok(LayoutObj::new(res)?.into()); + }; +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index af52f0367d..cf7533821b 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,3 +1,4 @@ +pub mod confirm_action; pub mod confirm_reset_create; pub mod confirm_reset_recover; pub mod confirm_set_new_pin; @@ -6,6 +7,7 @@ pub mod prompt_backup; pub mod show_share_words; pub mod warning_hi_prio; +pub use confirm_action::new_confirm_action; pub use confirm_reset_create::ConfirmResetCreate; pub use confirm_reset_recover::ConfirmResetRecover; pub use confirm_set_new_pin::SetNewPin; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 2f14470e05..df100680ab 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -331,54 +331,6 @@ impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { } } -extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let action: Option<TString> = kwargs.get(Qstr::MP_QSTR_action)?.try_into_option()?; - let description: Option<TString> = - kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let verb: Option<TString> = kwargs - .get(Qstr::MP_QSTR_verb) - .unwrap_or_else(|_| Obj::const_none()) - .try_into_option()?; - let verb_cancel: Option<TString> = kwargs - .get(Qstr::MP_QSTR_verb_cancel) - .unwrap_or_else(|_| Obj::const_none()) - .try_into_option()?; - let reverse: bool = kwargs.get_or(Qstr::MP_QSTR_reverse, false)?; - let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; - let hold_danger: bool = kwargs.get_or(Qstr::MP_QSTR_hold_danger, false)?; - - let paragraphs = { - let action = action.unwrap_or("".into()); - let description = description.unwrap_or("".into()); - let mut paragraphs = ParagraphVecShort::new(); - if !reverse { - paragraphs - .add(Paragraph::new(&theme::TEXT_DEMIBOLD, action)) - .add(Paragraph::new(&theme::TEXT_NORMAL, description)); - } else { - paragraphs - .add(Paragraph::new(&theme::TEXT_NORMAL, description)) - .add(Paragraph::new(&theme::TEXT_DEMIBOLD, action)); - } - paragraphs.into_paragraphs() - }; - - let mut page = if hold { - ButtonPage::new(paragraphs, theme::BG).with_hold()? - } else { - ButtonPage::new(paragraphs, theme::BG).with_cancel_confirm(verb_cancel, verb) - }; - if hold && hold_danger { - page = page.with_confirm_style(theme::button_danger()) - } - let obj = LayoutObj::new(Frame::left_aligned(title, page))?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1610,14 +1562,16 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// action: str | None, /// description: str | None, + /// subtitle: str | None = None, /// verb: str | None = None, /// verb_cancel: str | None = None, /// hold: bool = False, /// hold_danger: bool = False, /// reverse: bool = False, + /// prompt_screen: bool = False, /// ) -> LayoutObj[UiResult]: /// """Confirm action.""" - Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(), + Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, flow::confirm_action::new_confirm_action).as_obj(), /// def confirm_emphasized( /// *, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index a18d10966c..97f0eef915 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -76,11 +76,13 @@ def confirm_action( title: str, action: str | None, description: str | None, + subtitle: str | None = None, verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, hold_danger: bool = False, reverse: bool = False, + prompt_screen: bool = False, ) -> LayoutObj[UiResult]: """Confirm action.""" From 11808a6f14b52d7dcb88099cd4772be5795b96ce Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 15 May 2024 21:42:01 +0200 Subject: [PATCH 153/626] fix(core): rebase on drawlib --- .../extmod/modtrezorui/modtrezorui-display.h | 4 + .../generated/translated_string.rs | 9 +- .../model_mercury/component/homescreen/mod.rs | 86 +++++++++++-------- .../embed/rust/src/ui/model_mercury/layout.rs | 18 ++-- .../rust/src/ui/shape/corner_highlight.rs | 10 +-- core/src/trezor/ui/layouts/mercury/reset.py | 2 +- core/translations/order.json | 7 +- core/translations/signatures.json | 6 +- 8 files changed, 76 insertions(+), 66 deletions(-) diff --git a/core/embed/extmod/modtrezorui/modtrezorui-display.h b/core/embed/extmod/modtrezorui/modtrezorui-display.h index 2b49e38249..ee7bc030e5 100644 --- a/core/embed/extmod/modtrezorui/modtrezorui-display.h +++ b/core/embed/extmod/modtrezorui/modtrezorui-display.h @@ -170,7 +170,11 @@ STATIC const mp_rom_map_elem_t mod_trezorui_Display_locals_dict_table[] = { {MP_ROM_QSTR(MP_QSTR_FONT_NORMAL), MP_ROM_INT(FONT_NORMAL)}, {MP_ROM_QSTR(MP_QSTR_FONT_DEMIBOLD), MP_ROM_INT(FONT_DEMIBOLD)}, {MP_ROM_QSTR(MP_QSTR_FONT_MONO), MP_ROM_INT(FONT_MONO)}, +#ifdef FONT_BOLD_UPPER {MP_ROM_QSTR(MP_QSTR_FONT_BOLD_UPPER), MP_ROM_INT(FONT_BOLD_UPPER)}, +#else + {MP_ROM_QSTR(MP_QSTR_FONT_BOLD_UPPER), MP_ROM_INT(FONT_BOLD)}, +#endif }; STATIC MP_DEFINE_CONST_DICT(mod_trezorui_Display_locals_dict, mod_trezorui_Display_locals_dict_table); diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 0b9e9695c9..a79e554bda 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1268,10 +1268,9 @@ pub enum TranslatedString { instructions__continue_in_app = 867, // "Continue in the app" words__cancel_and_exit = 868, // "Cancel and exit" address__confirmed = 869, // "Receive address confirmed" - reset__title_shamir_backup = 870, // "Multi-share backup" - pin__cancel_description = 871, // "Continue without PIN" - pin__cancel_info = 872, // "Without a PIN, anyone can access this device." - pin__cancel_setup = 873, // "Cancel PIN setup" + pin__cancel_description = 870, // "Continue without PIN" + pin__cancel_info = 871, // "Without a PIN, anyone can access this device." + pin__cancel_setup = 872, // "Cancel PIN setup" } impl TranslatedString { @@ -2535,7 +2534,6 @@ impl TranslatedString { Self::instructions__continue_in_app => "Continue in the app", Self::words__cancel_and_exit => "Cancel and exit", Self::address__confirmed => "Receive address confirmed", - Self::reset__title_shamir_backup => "Multi-share backup", Self::pin__cancel_description => "Continue without PIN", Self::pin__cancel_info => "Without a PIN, anyone can access this device.", Self::pin__cancel_setup => "Cancel PIN setup", @@ -3803,7 +3801,6 @@ impl TranslatedString { Qstr::MP_QSTR_instructions__continue_in_app => Some(Self::instructions__continue_in_app), Qstr::MP_QSTR_words__cancel_and_exit => Some(Self::words__cancel_and_exit), Qstr::MP_QSTR_address__confirmed => Some(Self::address__confirmed), - Qstr::MP_QSTR_reset__title_shamir_backup => Some(Self::reset__title_shamir_backup), Qstr::MP_QSTR_pin__cancel_description => Some(Self::pin__cancel_description), Qstr::MP_QSTR_pin__cancel_info => Some(Self::pin__cancel_info), Qstr::MP_QSTR_pin__cancel_setup => Some(Self::pin__cancel_setup), diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index 33d8e79cf3..69737881ea 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -1,12 +1,18 @@ use crate::{ - micropython::gc::Gc, + io::BinaryData, strutil::TString, time::{Duration, Instant}, translations::TR, trezorhal::usb::usb_configured, ui::{ component::{Component, Event, EventCtx, TimerToken}, - display::{tjpgd::jpeg_info, toif::Icon, Color, Font}, + display::{ + self, + image::{ImageInfo, ToifFormat}, + tjpgd::jpeg_info, + toif::{Icon, Toif}, + Color, Font, + }, event::{TouchEvent, USBEvent}, geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, layout::util::get_user_custom_image, @@ -37,6 +43,7 @@ const LOADER_DURATION: Duration = Duration::from_millis(2000); pub const HOMESCREEN_IMAGE_WIDTH: i16 = WIDTH; pub const HOMESCREEN_IMAGE_HEIGHT: i16 = HEIGHT; +pub const HOMESCREEN_TOIF_SIZE: i16 = 144; #[derive(Clone, Copy)] pub struct HomescreenNotification { @@ -48,7 +55,7 @@ pub struct HomescreenNotification { pub struct Homescreen { label: TString<'static>, notification: Option<(TString<'static>, u8)>, - custom_image: Option<Gc<[u8]>>, + image: BinaryData<'static>, hold_to_lock: bool, loader: Loader, delay: Option<TimerToken>, @@ -67,7 +74,7 @@ impl Homescreen { Self { label, notification, - custom_image: get_user_custom_image().ok(), + image: get_homescreen_image(), hold_to_lock, loader: Loader::with_lock_icon().with_durations(LOADER_DURATION, LOADER_DURATION / 3), delay: None, @@ -185,15 +192,14 @@ impl Component for Homescreen { if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { - let img_data = match self.custom_image { - Some(ref img) => img.as_ref(), - None => IMAGE_HOMESCREEN, - }; - - if is_image_jpeg(img_data) { - shape::JpegImage::new(AREA.center(), img_data) + match ImageInfo::parse(self.image) { + ImageInfo::Jpeg(_) => shape::JpegImage::new_image(AREA.center(), self.image) .with_align(Alignment2D::CENTER) - .render(target); + .render(target), + ImageInfo::Toif(_) => shape::ToifImage::new_image(AREA.center(), self.image) + .with_align(Alignment2D::CENTER) + .render(target), + _ => {} } self.label.map(|t| { @@ -271,7 +277,7 @@ impl crate::trace::Trace for Homescreen { pub struct Lockscreen<'a> { label: TString<'a>, - custom_image: Option<Gc<[u8]>>, + image: BinaryData<'static>, bootscreen: bool, coinjoin_authorized: bool, } @@ -280,7 +286,7 @@ impl<'a> Lockscreen<'a> { pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { Lockscreen { label, - custom_image: get_user_custom_image().ok(), + image: get_homescreen_image(), bootscreen, coinjoin_authorized, } @@ -306,19 +312,19 @@ impl Component for Lockscreen<'_> { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - let img_data = match self.custom_image { - Some(ref img) => img.as_ref(), - None => IMAGE_HOMESCREEN, - }; - - let center = constant::screen().center(); + let center = AREA.center(); - if is_image_jpeg(img_data) { - shape::JpegImage::new(center, img_data) + match ImageInfo::parse(self.image) { + ImageInfo::Jpeg(_) => shape::JpegImage::new_image(center, self.image) .with_align(Alignment2D::CENTER) .with_blur(4) .with_dim(102) - .render(target); + .render(target), + ImageInfo::Toif(_) => shape::ToifImage::new_image(center, self.image) + .with_align(Alignment2D::CENTER) + //.with_blur(5) + .render(target), + _ => {} } shape::ToifImage::new(center, ICON_LOCKSCREEN_FILTER.toif) @@ -394,24 +400,30 @@ impl Component for Lockscreen<'_> { } } -pub fn check_homescreen_format(buffer: &[u8]) -> bool { - #[cfg(not(feature = "new_rendering"))] - let result = is_image_jpeg(buffer) && crate::ui::display::tjpgd::jpeg_test(buffer); - #[cfg(feature = "new_rendering")] - let result = is_image_jpeg(buffer); // !@# TODO: test like if `new_rendering` is off - - result +pub fn check_homescreen_format(image: BinaryData, accept_toif: bool) -> bool { + match ImageInfo::parse(image) { + ImageInfo::Jpeg(info) => { + info.width() == HOMESCREEN_IMAGE_WIDTH + && info.height() == HOMESCREEN_IMAGE_HEIGHT + && info.mcu_height() <= 16 + } + ImageInfo::Toif(info) => { + accept_toif + && info.width() == HOMESCREEN_TOIF_SIZE + && info.height() == HOMESCREEN_TOIF_SIZE + && info.format() == ToifFormat::FullColorBE + } + _ => false, + } } -fn is_image_jpeg(buffer: &[u8]) -> bool { - let jpeg = jpeg_info(buffer); - if let Some((size, mcu_height)) = jpeg { - if size.x == HOMESCREEN_IMAGE_WIDTH && size.y == HOMESCREEN_IMAGE_HEIGHT && mcu_height <= 16 - { - return true; +fn get_homescreen_image() -> BinaryData<'static> { + if let Ok(image) = get_user_custom_image() { + if check_homescreen_format(image, true) { + return image; } } - false + IMAGE_HOMESCREEN.into() } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index df100680ab..5e498151f0 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -2,9 +2,9 @@ use core::{cmp::Ordering, convert::TryInto}; use crate::{ error::Error, + io::BinaryData, micropython::{ - buffer::get_buffer, gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, - qstr::Qstr, util, + gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, qstr::Qstr, util, }, strutil::TString, translations::TR, @@ -14,7 +14,7 @@ use crate::{ base::ComponentExt, connect::Connect, image::BlendedImage, - jpeg::{ImageBuffer, Jpeg}, + jpeg::Jpeg, paginated::{PageMsg, Paginate}, text::{ op::OpTextLayout, @@ -26,7 +26,6 @@ use crate::{ }, Border, Component, Empty, FormattedText, Label, Never, Timeout, }, - display::tjpgd::jpeg_info, geometry, layout::{ obj::{ComponentMsgObj, LayoutObj}, @@ -561,15 +560,15 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let image: Obj = kwargs.get(Qstr::MP_QSTR_image)?; - let mut jpeg = unwrap!(ImageBuffer::from_object(image)); + let mut jpeg: BinaryData = image.try_into()?; if jpeg.is_empty() { // Incoming data may be empty, meaning we should // display default homescreen image. - jpeg = ImageBuffer::from_slice(theme::IMAGE_HOMESCREEN); + jpeg = theme::IMAGE_HOMESCREEN.into(); } - if jpeg_info(jpeg.data()).is_none() { + if !check_homescreen_format(jpeg, false) { return Err(value_error!("Invalid image.")); }; @@ -1417,9 +1416,8 @@ extern "C" fn new_show_lockscreen(n_args: usize, args: *const Obj, kwargs: *mut pub extern "C" fn upy_check_homescreen_format(data: Obj) -> Obj { let block = || { - let buffer = unsafe { get_buffer(data) }?; - - Ok(check_homescreen_format(buffer).into()) + let buffer = data.try_into()?; + Ok(check_homescreen_format(buffer, false).into()) }; unsafe { util::try_or_raise(block) } diff --git a/core/embed/rust/src/ui/shape/corner_highlight.rs b/core/embed/rust/src/ui/shape/corner_highlight.rs index f25f4ff872..f018f3ea9e 100644 --- a/core/embed/rust/src/ui/shape/corner_highlight.rs +++ b/core/embed/rust/src/ui/shape/corner_highlight.rs @@ -88,7 +88,7 @@ impl CornerHighlight { } impl Shape<'_> for CornerHighlight { - fn bounds(&self, _cache: &DrawingCache) -> Rect { + fn bounds(&self) -> Rect { Rect::snap( self.pos_rect, Offset::uniform(self.length), @@ -103,7 +103,7 @@ impl Shape<'_> for CornerHighlight { let circle_center = self.pos + Offset::uniform(self.r_outer).rotate(self.corner); let circle_visible_part = Rect::snap(self.pos_rect, Offset::uniform(self.r_outer), align); in_clip(canvas, circle_visible_part, &|can| { - can.fill_circle(circle_center, self.r_outer, self.color); + can.fill_circle(circle_center, self.r_outer, self.color, self.alpha); }); // rectangles (rounded) tailing from a corner @@ -146,7 +146,7 @@ impl Shape<'_> for CornerHighlight { self.pos + Offset::uniform(self.thickness + self.r_inner).rotate(self.corner); in_clip(canvas, rect_outer_fill, &|can| { can.fill_rect(rect_outer_fill, self.color, self.alpha); - can.fill_circle(circle_cover_center, self.r_inner, self.bg_color); + can.fill_circle(circle_cover_center, self.r_inner, self.bg_color, self.alpha); }); } @@ -154,9 +154,9 @@ impl Shape<'_> for CornerHighlight { } impl<'s> ShapeClone<'s> for CornerHighlight { - fn clone_at_bump<'alloc, T>(self, bump: &'alloc T) -> Option<&'alloc mut dyn Shape<'s>> + fn clone_at_bump<T>(self, bump: &'s T) -> Option<&'s mut dyn Shape<'s>> where - T: LocalAllocLeakExt<'alloc>, + T: LocalAllocLeakExt<'s>, { let clone = bump.alloc_t::<CornerHighlight>()?; Some(clone.uninit.init(CornerHighlight { ..self })) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index a614ddc8b4..eb7cc062e2 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -300,7 +300,7 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: ) -async def show_warning_backup(slip39: bool) -> None: +async def show_warning_backup() -> None: result = await interact( RustLayout( trezorui2.show_warning( diff --git a/core/translations/order.json b/core/translations/order.json index d0bceef212..6d15f658a3 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -869,8 +869,7 @@ "867": "instructions__continue_in_app", "868": "words__cancel_and_exit", "869": "address__confirmed", - "870": "reset__title_shamir_backup", - "871": "pin__cancel_description", - "872": "pin__cancel_info", - "873": "pin__cancel_setup" + "870": "pin__cancel_description", + "871": "pin__cancel_info", + "872": "pin__cancel_setup" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index eb1a5e8182..2e93c3afb8 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "9c620dab3212f47d952020e2badc61a9443778fbca180208db622f3d0ebcbe5c", - "datetime": "2024-05-17T10:46:08.576451", - "commit": "cce30d1364fb62e3ed51509fefe7d48c86b45a5c" + "merkle_root": "928438526b993d433d52359d86099848d570c13fbe6aac72a2f5a29a4e8e94c5", + "datetime": "2024-05-17T10:55:04.124405", + "commit": "1409ed27df07827a2a3e3756420db1b41fe108e5" }, "history": [ { From 7bbfa64dbba06e2b50fcb9e9f831644a457f0436 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 20 May 2024 13:39:41 +0200 Subject: [PATCH 154/626] fix(core/ui): re-export T3T1 icons Commit re-exports T3T1 icons (mercury UI) in white color so that applying color to them during rendering works as expected. Previously they were grey and the desired color mixed with grey. [no changelog] --- .../ui/model_mercury/res/arrow-right16.toif | Bin 51 -> 0 bytes .../src/ui/model_mercury/res/asterisk16.png | Bin 0 -> 285 bytes .../src/ui/model_mercury/res/asterisk16.toif | Bin 0 -> 122 bytes .../src/ui/model_mercury/res/autofill30.png | Bin 534 -> 360 bytes .../src/ui/model_mercury/res/autofill30.toif | Bin 158 -> 177 bytes .../model_mercury/res/bullet_checkmark20.png | Bin 433 -> 279 bytes .../model_mercury/res/bullet_checkmark20.toif | Bin 107 -> 141 bytes .../src/ui/model_mercury/res/cancel24.png | Bin 409 -> 289 bytes .../src/ui/model_mercury/res/cancel24.toif | Bin 101 -> 106 bytes .../src/ui/model_mercury/res/caret-up24.toif | Bin 67 -> 0 bytes .../src/ui/model_mercury/res/check16.toif | Bin 55 -> 0 bytes .../ui/model_mercury/res/chevron_left24.png | Bin 0 -> 234 bytes .../ui/model_mercury/res/chevron_left24.toif | Bin 0 -> 88 bytes .../ui/model_mercury/res/chevron_right24.png | Bin 226 -> 216 bytes .../ui/model_mercury/res/chevron_right24.toif | Bin 49 -> 84 bytes .../rust/src/ui/model_mercury/res/close30.png | Bin 367 -> 214 bytes .../src/ui/model_mercury/res/close30.toif | Bin 76 -> 99 bytes .../ui/model_mercury/res/confirm_input30.png | Bin 526 -> 335 bytes .../ui/model_mercury/res/confirm_input30.toif | Bin 169 -> 189 bytes .../src/ui/model_mercury/res/delete30.png | Bin 389 -> 287 bytes .../src/ui/model_mercury/res/delete30.toif | Bin 117 -> 152 bytes .../src/ui/model_mercury/res/download24.png | Bin 390 -> 233 bytes .../src/ui/model_mercury/res/download24.toif | Bin 82 -> 91 bytes .../model_mercury/res/exclamation_mark24.png | Bin 502 -> 0 bytes .../model_mercury/res/exclamation_mark24.toif | Bin 153 -> 0 bytes .../ui/model_mercury/res/factory_reset24.png | Bin 0 -> 357 bytes .../ui/model_mercury/res/factory_reset24.toif | Bin 0 -> 143 bytes .../rust/src/ui/model_mercury/res/fire24.png | Bin 472 -> 0 bytes .../src/ui/model_mercury/res/foreslash12.png | Bin 0 -> 198 bytes .../src/ui/model_mercury/res/foreslash12.toif | Bin 0 -> 55 bytes .../rust/src/ui/model_mercury/res/key20.png | Bin 0 -> 257 bytes .../res/{key30.toif => key20.toif} | Bin .../rust/src/ui/model_mercury/res/key30.png | Bin 4716 -> 0 bytes .../rust/src/ui/model_mercury/res/lock24.toif | Bin 77 -> 0 bytes .../rust/src/ui/model_mercury/res/menu30.png | Bin 324 -> 210 bytes .../rust/src/ui/model_mercury/res/menu30.toif | Bin 57 -> 65 bytes .../rust/src/ui/model_mercury/res/minus40.png | Bin 275 -> 175 bytes .../src/ui/model_mercury/res/minus40.toif | Bin 33 -> 39 bytes .../src/ui/model_mercury/res/page_down20.png | Bin 379 -> 229 bytes .../src/ui/model_mercury/res/page_down20.toif | Bin 79 -> 90 bytes .../src/ui/model_mercury/res/page_up20.png | Bin 368 -> 231 bytes .../src/ui/model_mercury/res/page_up20.toif | Bin 79 -> 88 bytes .../src/ui/model_mercury/res/pin_bullet6.png | Bin 0 -> 156 bytes .../src/ui/model_mercury/res/pin_bullet6.toif | Bin 0 -> 32 bytes .../rust/src/ui/model_mercury/res/plus40.png | Bin 333 -> 221 bytes .../rust/src/ui/model_mercury/res/plus40.toif | Bin 52 -> 54 bytes .../src/ui/model_mercury/res/qr_code24.png | Bin 476 -> 386 bytes .../src/ui/model_mercury/res/qr_code24.toif | Bin 152 -> 185 bytes .../src/ui/model_mercury/res/reboot24.png | Bin 430 -> 312 bytes .../src/ui/model_mercury/res/reboot24.toif | Bin 96 -> 140 bytes .../rust/src/ui/model_mercury/res/sign30.png | Bin 522 -> 381 bytes .../rust/src/ui/model_mercury/res/sign30.toif | Bin 173 -> 193 bytes .../model_mercury/res/simple_checkmark24.png | Bin 0 -> 235 bytes .../model_mercury/res/simple_checkmark24.toif | Bin 0 -> 99 bytes .../model_mercury/res/simple_checkmark30.png | Bin 397 -> 244 bytes .../model_mercury/res/simple_checkmark30.toif | Bin 78 -> 119 bytes .../model_mercury/res/special_chars_group.png | Bin 0 -> 413 bytes .../res/special_chars_group.toif | Bin 0 -> 214 bytes .../src/ui/model_mercury/res/warning24.png | Bin 403 -> 314 bytes .../src/ui/model_mercury/res/warning24.toif | Bin 130 -> 150 bytes .../rust/src/ui/model_mercury/theme/mod.rs | 43 +++++++++--------- 61 files changed, 22 insertions(+), 21 deletions(-) delete mode 100644 core/embed/rust/src/ui/model_mercury/res/arrow-right16.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/asterisk16.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/asterisk16.toif delete mode 100644 core/embed/rust/src/ui/model_mercury/res/caret-up24.toif delete mode 100644 core/embed/rust/src/ui/model_mercury/res/check16.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/chevron_left24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/chevron_left24.toif delete mode 100644 core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.png delete mode 100644 core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/factory_reset24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/factory_reset24.toif delete mode 100644 core/embed/rust/src/ui/model_mercury/res/fire24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/foreslash12.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/foreslash12.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/key20.png rename core/embed/rust/src/ui/model_mercury/res/{key30.toif => key20.toif} (100%) delete mode 100644 core/embed/rust/src/ui/model_mercury/res/key30.png delete mode 100644 core/embed/rust/src/ui/model_mercury/res/lock24.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/pin_bullet6.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/pin_bullet6.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.toif create mode 100644 core/embed/rust/src/ui/model_mercury/res/special_chars_group.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/special_chars_group.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/arrow-right16.toif b/core/embed/rust/src/ui/model_mercury/res/arrow-right16.toif deleted file mode 100644 index 027edec0a2b5086040cec95bb70c914f1c0192e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmWIX_jKoC;A2o{U|`sN`pAI;ANKRP{F%-m_<d#rO8|ohnE9|pC4^~>i_ogKdM6kd E0N^1LmjD0& diff --git a/core/embed/rust/src/ui/model_mercury/res/asterisk16.png b/core/embed/rust/src/ui/model_mercury/res/asterisk16.png new file mode 100644 index 0000000000000000000000000000000000000000..aef8b22dd3b4ac5fbbb659556aa6f2edfb95a5fb GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCik>lDyqr z82-2SpV<%OaTa()7Bet#ZvbINDGPxjpx{PN7sn8d^Q99VMGqMWxTtGz@I7kq;_%a2 z$R{Nd!0zGT^t!=HBUC`9hR-)M=)rs=>(6EP^LmUvOj<Hs@~gC1+nzEFq0g5d)+Z>w zW4f~A(5%Z2?bBUY56q2P#IBH#`Jz#yvu~;gOG47&)f4WQuxYRNic`OtG~aQtTdw%Q zrHl;Q<K3%7*52M*>+9w*+hOwUTrIz&8vEr=y_zv8{iIE)=c-fHEDALt=cm+}b?<nS bYyOq3Q1M{AvoUuI(D4kOu6{1-oD!M<tMp|M literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/asterisk16.toif b/core/embed/rust/src/ui/model_mercury/res/asterisk16.toif new file mode 100644 index 0000000000000000000000000000000000000000..47f7b4dc20e69b12cabb4ede5bfb6ac3b9be72b9 GIT binary patch literal 122 zcmV-=0EPclPf14*01yCf0001EU|?`DVE}{w=OOgJ{ZM*7kVs%+_|wmz!18%L+wcCu z-+Vv+zyEjt|9}6#|G{8>;E8|#|G%#iVPJUl|34>4+n@jc>w#3m|Nh_q*%=tV|L1-5 c-=9I?=YOUGkVHd21H)|=paLca21N!20D_@GJOBUy literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/autofill30.png b/core/embed/rust/src/ui/model_mercury/res/autofill30.png index 67c67a7b7a1c218a560dfda11de97da751390b86..ccb3762cc26c7cbea1741a721b937d06949ec3d8 100644 GIT binary patch delta 283 zcmV+$0p$Lc1n2^gR(}BeNkl<ZILqBs+Yy5x5Iiy|fDS?`NLok-DTNNS6HNt42iQUE zKvRKsu=x-lz@g0e=l<v%x7^-xKy(~HB7;E#0O(+#q0)#71{{jb4WQ8>h7Nj-nqdoB zylM)#>QF0!UGZV>D4E0t5(-~0YQnlviI4$Z4y==9KUo`YM1Mr0rw7$e-0eGZwv)SF zbt_!h#g42LYU$<d`w{g(Cqwr!M_iYcXGG@+a!zu4PJ#3TXZ!up#r_$@WWT3apJrIe z8dkaFoTU~l)gRHN83{w;o5~7rpcrZq9>kuDvFl2%*tSHzG6y@JA=`V&QmgbARHL#Q hT2#o#8+-`-0TgbEy0zy+C8+=a002ovPDHLkV1m?We)RwV delta 458 zcmV;*0X6>U0+s}jR(}DiNkl<ZILp<PF;>Dr5QhKRSWt!&xO8@4XD1Xq?BoW*2_(_R z3g~zb2;2auEX5KVprbRKfN%nq(!#7w60*tWNy}8py!Xw_|L^Vq7a62W_D$m%WpHo+ z0<Ql_^B3<7c*tpjvZmrxc9R7R^>@%>@3_&<SfWPt=WCM*JAZBJA(tsJM-MeD)>?Sb zqTatAm8-{7_ek@Q(>KgBEEe)M)Xt)0M}vASPX)M2&ZJ4A^N`an-Nd(E$H2&xOO)by z%3C7VS=MzEvLXOjf+}kF-<C2qd(`S{IBgxy?v=5fL!{XAXG-_E?E;D6J-ZNxWu&KI zd3u{iraXk-Hh-yZhbAE_{M2b&1%~bEI_SI{C}SIQ%LRbGNgq*CC@}31z~HPMV`m|1 z#EwgD6}SC0bTPFXX%vui1vbW7m0KMO7y%sJZD*-@#h$GAB8g&ZHx<nQHD&r?aM~Hk zf`Yo?XLMAShc3>E?&%)H3NJP_(k>tcwPSBynQF1B9Yb-Kxl07zY-L@f7T}2c9ePTW za?Kjai>qC|BQEQ*PDPl2+{2?48@I$+j$A_g0S!urym_a7t^fc407*qoM6N<$g3D*x ASpWb4 diff --git a/core/embed/rust/src/ui/model_mercury/res/autofill30.toif b/core/embed/rust/src/ui/model_mercury/res/autofill30.toif index 712fb68e25660d9a15a1ab494adf9a493f1151c4..ba4ccc5bf557411d28c947150b28cc658e5c2346 100644 GIT binary patch literal 177 zcmV;i08al@Pf14}03HCP0001EU?3F~-u}N&9nRbI9|Sa^yn=sV?t69!_xpbcsE0`Y zhXJtkBRE$N#Qg<g$sPg{`++<Kh&q8kK#~!rm6PEhkmO)s*Z?&ZB+bph@ZkUd-j0qA zW{@;51H*^^|CzuR3jF`ikHl2~bCDJE!HilDHj0OVp#jMvcCZO>XMha(4dUv8B<ExC f0-6UIen5HsSObS)5tyq356Yr9|IbN~932b*81GMQ literal 158 zcmV;P0Ac@BPf14}03HC60001EU?3GZlyzhX!+D7vARr3m8FWAZGlbg$<$9n<LZutw zTnP}j6~tmM1QHoQo&Z!`JCKBHWo0M;k}M1i2{2QE(rgS24ILfsE-o&NAZd0mml0xr zM+XNIR{+c{KvK*BGb#dRlmn7Q%wQAX&Hx$G2I7hrKy+Yu0nLMG-bW7{hCnb+3?7t* MZ5`<>Bu57W0Pd|ZTL1t6 diff --git a/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.png b/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.png index 0681bec6f3baae3e304d32f96b9a5405178d770b..ef74a5c652b0e575d287ee6eb800003c63dfe53e 100644 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@UwmUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{#S9GG!XV7ZFl&wkP;j-Ui(`n!`K=S91rIBTxU6SUQCKLXr7HAD z!K0)38e{1Niv@fum{sP~IS9|2`!8jG!m~Ta--%j=YKX}&azrc>G!xc%dQo@Vh2UNz z!%6N>7vwWEC-tq5|GTDx!|I#Ofvxs@v;W<<tz<IjOyFalxi_2hm|mMVSGU+6=7Q5_ zUMdBL&MwScp%--G%!<AD76<M)6jgUBX|Y!0ua;-)h50V5ZB`Z5)@Qh9^DV&d5_`zj WlEX%8@0S9d&EV<k=d#Wzp$P!Ro?}S> literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^LLkfmBp8a9UhD=^OiAAEE)4(M`_JqL^4Lo}eO=jK zFtds2bM4EL_yiO>=;`7ZB5^tQf@0Aj1_8H+{VZuxffGFhIFy7tdwW;DWUXRccThAd z`lhzZiAPxiAt6_UW}c96VO1$v_V@0-o3*<)|2fIB=9A5}Ij_nb0wZIj@4cSKc`?n7 z&-DD>3GHv5?VMlBsd6;Gd?MGB<ej&bgd=+9Wwpj66qM_qR8C^N@ovTKv$8W@C0(2P zVsXzx!%`iM&`qc3O}<ds8}ePG@w(j=H}54!Ti@_Ay?R!b87x?2cV=4nrux_I&sCl# zt+TGH`)zN3afkle%4H4zfu2z<ag8WRNi0dVN-jzTQVd20Mkcxj#<~V(Ax1`4#+Fv5 z7TN{|Rt5(425A#fH00)|WTsW(*5H?WPZy{`18ze}W^QV6Nn&mRnjRB#D?<Z_B{TJB R#RK&)c)I$ztaD0e0ssa>ofiNA diff --git a/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.toif b/core/embed/rust/src/ui/model_mercury/res/bullet_checkmark20.toif index 3544814d6880a963d12627974ca85e66870af109..0c75c1a80115e072b181be81d47a259b377ede0e 100644 GIT binary patch literal 141 zcmV;80CN9SPf14<02Ba$0001EV899r-@MNPGYbCw|NmbX#QF|o{J+n{z>x4C3}hJ? zE`Vr>@BIu6-++wu44>{ZF#H5d{rb<u@H@ZZK2yQ}|11o@<ryqM`dJu$&1Yax02;{% v)S<(031}b#!^8jgh5r2ipAWPQVlpq#wjVIt7#ct<9k632{eAC^-MtI|8Ky%y literal 107 zcmV-x0F?h!Pf14-01^OS0001EV1NUK(vEOO5TmuDqay-H7j%FCJ465^B+vl?OaUO$ zqp^b(tc1O}gS`PrR|s}=a5QvCv{(RzISM*F99Ua`vOvWw3P5RAAmLF6WH7=FL|6g0 NltBRK3?_uD7yu@3BPIX< diff --git a/core/embed/rust/src/ui/model_mercury/res/cancel24.png b/core/embed/rust/src/ui/model_mercury/res/cancel24.png index 0ab5220ca04cb63946432a44829491d77366d76b..5d3b1e50006a62c99511f509ab2036498277d021 100644 GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{KvmqrAk4@xYYs^NR!<kl5R21iC*I{fWWdvMeg$(2Z$k5$2ZEaz zXKz`&fl+yhate#t3UdoN564&hVMn~*>z=B;HkVf>^v%na_0~(7zO;8S99U_3n#U$K zy|m=(${m&m{=T>6wJ$f(u{N3hPwQb96N83@vhM!fq6S@o6B$=Xbn~aIk`NV0K5)2S zWTNDeBN7t?YZvS+Y3wpI=x_|IQMhWbQ)&0o+;<MEZyH}--n^F0xZu{_&qq$X$+}JR f{e7ZC`88`o_wqO9`#6n&9$@fv^>bP0l+XkKU0P`Y literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^A|T8GBp6maa=Hkln3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+rj($mE;MB;L8zoJmHfryKIrmHV&gb%;K>{GWQRAQEH`@Z5O=c`E` zDkqY(Cd}wkatsMEFqrIf?a$BrwDNStMJ#KXQ`Rb^WVoEslW;bfG+`yfw)-<?w`{m~ zYi&l{rE5wI^TOHRmBsJ-Tf`?}kRo>_IoUyU-dv;hJ)evVnR(8&Z*`n&xOMu?#abD0 z(?$Ip7OG4!VpkKm;5WgGVdkMb2l?vWUoMosX>WJrD|^8Q&H5{TXS9KiRxNRjC`m~y zNwrEYN(E93Mg~SEx(3F&24*2fMpniaRwky}1_o9J2DSY;A5k>q=BH$)RpQpbbLomN rP=f~ChLX(O)Z&uF+yXQ`CgxU#1`tbT>d%S?>S6G7^>bP0l+XkKBI$`# diff --git a/core/embed/rust/src/ui/model_mercury/res/cancel24.toif b/core/embed/rust/src/ui/model_mercury/res/cancel24.toif index 5344dea592b8419e8d09300eb3852ba95f10003d..684d02cca8ee467082cacbcd059aa3293e320206 100644 GIT binary patch literal 106 zcmV-w0G0n#Pf14@02lyX0001EU?2h%{D%T|28ItXHa{x+0*uYez@X3p1x#oL{eURx z$7HMiIUfjPGai&tfU#u+7!ShO=NSe5U}GbzVLB)y0AYXsFZ$<v(EoZ6`ys?GJrLXA MFNk@bnSm$(0K#P{O8@`> literal 101 zcmV-r0Gj_)Pf14<02BaO0001EV1NOK4k%!0fU!6btO6K|UBCqj7#R?t1tRGIWwk?C z%q<=Y5EhFAivfgX!NAZARmUg*)qx;b4VVKUET(1)u-@j5^p1`)kT$4eBp4V3+ChvA HWCs8M@4z5y diff --git a/core/embed/rust/src/ui/model_mercury/res/caret-up24.toif b/core/embed/rust/src/ui/model_mercury/res/caret-up24.toif deleted file mode 100644 index 047c14a6d9606768d342a906c711e9bf594512d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmV-J0KETHPf14-015y%0000j%P|rF5DY}o-^EF_bV_dEwxL53Tm5-63y_J8lOpz+ ZA6n4vtmz<BqX!rnV5Hq2tEhO?asdOU8gl>u diff --git a/core/embed/rust/src/ui/model_mercury/res/check16.toif b/core/embed/rust/src/ui/model_mercury/res/check16.toif deleted file mode 100644 index a22d339fe9589ebd84e5b2b81f3a074a356542c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmV-70LcGTPf14(015yr0001EU;qLI4G_t2sUOVws|)7bXS$#Z=3KbX1mpmjzF?V4 N|A8F1GKMA)2LR^Y6a4@H diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_left24.png b/core/embed/rust/src/ui/model_mercury/res/chevron_left24.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b16ca78ac61b44d24f0698fc14d7fe0ba2768f GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{KvmqrAk4@xYYs?%ou`Xqh{fsT1PNA-5B2~4|Nj5DGyL9vFt{(g zde1+5mOJW!KkHeOrW|*ky8nN^Lr+ore**!BImPdsr;0xaI@oedyy22dyFZhsT>=pN zxX*Ci$wy*ghN51Cq=baTKmUfToBm7K*xLScD_C`0SNQP%572b!j%x;c7#S-3%XlYG SuTB8Egu&C*&t;ucLK6U;{#QW& literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_left24.toif b/core/embed/rust/src/ui/model_mercury/res/chevron_left24.toif new file mode 100644 index 0000000000000000000000000000000000000000..f64ef96a332a3a265d67b4ebf84b8e04bf536411 GIT binary patch literal 88 zcmV-e0H^;{Pf14@02lyF0001EV4xJ-WQ8*u{`0}v-~aQ%m<9juGr`zj|J%Ws4*&nd uwO;sN57+tNe>|L>@c%tCob%(q9+FiEGZ}vV=Z3Qv{O5<W1^#eQ>N^0LrY_C^ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_right24.png b/core/embed/rust/src/ui/model_mercury/res/chevron_right24.png index efe01e11606b2a13ae6c95db70506dc90d62c1b2..1b8d0620dce67c830290241070b7204a34e86a63 100644 GIT binary patch delta 137 zcmaFFc!P05czuqii(`nz>Er|nRvsYu|M>s@|M&g7+J65B0{<ql6>b0jzwW%cz+snI z^Z)k?qaJl$75X60Cev|s62sLGa-nlLm-q2!m|WcFp`bfQYQ=gP%|~hi(slyZ^%a6F onGgSO0vaR#L*HRb+e3Z^3%|1cFPyGAG5~?6tDnm{C#HlZ084~F$^ZZW delta 147 zcmV;E0Brx*0pbCWSATX%L_t(I%k7a-4S+BV1+N4lwSa_4BIp=MT5vK6C}4c>0fcr; z0Ppkiu4z;F^BsAkIiV#?*%ms3DJm&yvmk-&D`LS#OG3%kVx~}29N|)A7`LyZ0oWbx z2vOynAD;7_m2UNxqic2h50yIfZ&X&ntN&@s0j#MlCID`}pbP*2002ovPDHLkV1hPh BKdb-% diff --git a/core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif b/core/embed/rust/src/ui/model_mercury/res/chevron_right24.toif index 8333079d6fae4bf0396a50e960a2503004299ce8..630cf0cd5e7fd5d8253ad8aa7d5a48abf5dd5c72 100644 GIT binary patch literal 84 zcmV-a0IUC0Pf14@02lyB0001EV4w^H^dZ<6{&OI)>)~vLzyI0coX7v;5t{%1XMuCR q{pW+Tzy9ZiF%ACxXM?dX{qILIlLKMbe7MdB|GD7og7b_FlmY;<QY=aU literal 49 zcmWIX_jH$FkYG?{U|>j2SRm&i;J$%dOX6WpW0^{)(;cCRn<ug+d{N?7zAdV7&LNb6 F0RU7j4{-nh diff --git a/core/embed/rust/src/ui/model_mercury/res/close30.png b/core/embed/rust/src/ui/model_mercury/res/close30.png index 0e5b188bf9bffa062bcc2ceaa0d1a39695947a3e..34fe6065ea02d7304719cc5bc405aeb9550ee4a1 100644 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX0wgC|rfC8xmUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{#S9GG!XV7ZFl&wkP%z8W#WBR<^xKP$d<PUbTmmn5ALjjXY=8GL z)<uH5a^_AotQ4FX<X0!DrSLASVb^j0BY_G1rBCKAns|`cKk)SBD<5oRe@u$YwzXuv zFKWDP&%#&T+`*r}b9{fQ@+0T)-1mjEr#3U`?)*Br{|Vdq|0k+{J86R)#^CAd=d#Wz Gp$P!|qfIpc literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAn3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+qY@9E+gB5~QZUs3Fk0gpqyG|x2cHAQAyEv!19E?b)S{f1tH!(#^( zNx_r9D=U9;t|&UPX3m#`PhZ}VdeVROfy#Q5z#DUqYvtU_<aKlZ;Ag1DsAGOWf^l}C z8uJI+Nxn0##|Z7a`}WbD!+H<<t6ko2toIgvI`{m+3+yT@zW%S<`-yqSWo@n1)1Jly zouXRe8c~vxSdwa$T$Bo=7>o>zOmq#5bq&lyjEt;|4XliewG9lc3=B>`7ubQKAvZrI zGp!O$gOP=mDO5v}nw=(4g9hA&lFZ!H;*!MN0yI4)=2nIV5KCt2&jPuM!PC{xWt~$( F699VqeG~uy diff --git a/core/embed/rust/src/ui/model_mercury/res/close30.toif b/core/embed/rust/src/ui/model_mercury/res/close30.toif index b9e2f3c4fb429603a96d086e374f0b100f3cc2be..6153a145a3096e376c5f9d32bec42ac0d5ca3240 100644 GIT binary patch literal 99 zcmV-p0G$6+Pf14}03HBW0002R&@m3cAP5CeHhNsQj%9T72t6ir`UMk(8^}Onp7M!A z=gQby8|#S2n_?@N8n%kF;>yRk6N6DOc+@DJ!&f!G%oTg#$h73hl;k<q_L5&@%6sq= F=?AhuE+YT{ literal 76 zcmV-S0JHy8Pf14*01yB`0000pU}gXU1?FZC5Zz+Y)WO2Q;Lu^=&;b-^0djyC%mxx5 iE=aHgtk$6e%!SiXahN)&KA1VpP;+7S7=Z0HU<Ls9)Ezhg diff --git a/core/embed/rust/src/ui/model_mercury/res/confirm_input30.png b/core/embed/rust/src/ui/model_mercury/res/confirm_input30.png index dc7148c8c6447b2897a02379ed7ea884ccc10c4e..ea9af5c5236b306038123e382a87cfda4f7b6e32 100644 GIT binary patch delta 257 zcmV+c0sj7u1kVDHR(}BFNkl<ZILqCXOBKT)5Jiy?2}p^AN~nZ504J@3N&pFUKpaHE z?V_BN&p<dQ-L!8<;4(9hnJD!?V#44E0BkrG^cbjdNV*+fz`{mL8%qy09Lcn!j!24* z?j)QiU)Rok2nBF;++M6%DQxm(8n5>n&wONa*fmirT%RXin0ocx*Iu+U<Z!B4DKr5H zZ)f8wQ5&9iAU+C@vX&fPlbxcAgudH)h9x)`!9<_Kw%9hiQ9*$77G<gq+|Uh_szEz1 zU0wU#!8kRNqHVRTYU{*rDAq1dwjck4F8G+kipLfc{M&i~q-;{;BJ$v;00000NkvXX Hu0mjf(A;v) delta 450 zcmV;z0X_cD0*(ZbR(}DaNkl<ZILp;kt9HUb5WTZhAoB+euCCzfN(6_x@&|=4fCN=V z;y8y#`Ul`@siX$taD^}E@&ygDqHIN;8#WNjnBAS7yL0EBodK@WNaY-9r7r5wp#$)- zJ$}%l&kKMjI?Yg5yf_z5_JNXo9QW8e?vxy>)NcHKZgRoX0e=lq&MmP_PfaX6C3xJU z;YE$=jYE<>u6d%<7qkKr`=S=r&SIxs2nuL4i?%Gz`;wmvhDC4^>aHe%Me9s1(^><T zojCq_5|};bLLF-!$eFm<qg-<}9WQq9!<`pooak(j3eaV6S}dbqr5ZQ@&f1|OD=8ua zP8n?hlam2XhJVQcfZQltwwsXNo^E5(T{wWrQ3=k|0kU%XQfB&2UD?xAeWMoa3>0D~ zfsdYa8^b4h$vvej7GcU@aW(OiiI@uqpp~jxs)SlZj_FF-#VVUyos8PliDbB7KE)q3 z2Ae$fd(W8@PzI!aUT&Ink-B50dS03&%XRaBhum4><2%)o#>L41boHaHYER*@c0xD@ s96TUeqDA-60I>(BHGAt7lk*zvA0sAtTZE{B2LJ#707*qoM6N<$f<%ncCjbBd diff --git a/core/embed/rust/src/ui/model_mercury/res/confirm_input30.toif b/core/embed/rust/src/ui/model_mercury/res/confirm_input30.toif index a34c5e9522cd84e8941ef9341ed9a5122ca010cb..ce9b9cb46b3d1c7ea33e73f6b95be0561ec8503b 100644 GIT binary patch literal 189 zcmV;u07Cy%Pf14}03HCb0001EU?3F~-u}N&9nRbI9|Sa^yn=sV?t69!_xpbcsE0`Y zhXJtkBRE$N#Qg>5?g#P|Ak6nHKmPw`glo-b`0)Qf2Lr<f2$ut70XGA~10ehD|MLtA zK-+m4Kx+II{^~MZ0t)kkx$+E`n7|hBgB91q9K#1O3h11#ATAFBLj%~g3V)%l6aahf r64*8-pswF=N6yFM1vC#b{DAWMu?7yqA~0769+X9I{-2W|IXV~s@Samk literal 169 zcmV;a09OB0Pf14}03HCH0001$(LEEwAPffJx60Ly+<AWd1V_7d?AX=Ku}*fB#aXLD zezuSxo}5cF@q`N`08EYcO2abgL?KpDdy<$7pOM|qX579fZUbM5gO`r$nLpxN+Tcc{ zfL^HZASw}(<a}8uS}=FoZD2erW(8Bg3NO-5OTwPd!5COdx`TF~E_pb^w-uf?HF^9q XLN;JFe*QQ(u-54*YfEP}`8)6iXyr|K diff --git a/core/embed/rust/src/ui/model_mercury/res/delete30.png b/core/embed/rust/src/ui/model_mercury/res/delete30.png index 9e30374a889911268ec1d631ab0fc6c615e68537..f3527c63a321229c5e3489df260cd50885f118d0 100644 GIT binary patch delta 209 zcmV;?051Q91D^trR(}AqNkl<ZILqzS!4bkB5QX8@3M|1=>;y`n11Q0cNC%c+2`S<C z5Kxf?CUHhDd8cH^H`y#pME3kScxLp>L~I+Lh>YS}^fsgbm+chdCp~j79ta}1=baNF zycYX3En@+4lT=*O<z0zq>J+R}08`Xv>bgXvK?`2e1s@0Va!OFH27S&cW+}C9Wy4G^ zUTs)+tIYeiH?YEeH6*@?SB>ZN&B3rDTY2bgF4xY_U{a3bo*(1^yzO<3=q&pA00000 LNkvXXu0mjfy|Z5v delta 312 zcmV-80muHI0)+#RR(}B*Nkl<ZILqyn&2fV;5JsP%0ZO2RlmL}rcK~wkn6m-9gUA)6 z1ltwF>A)qp0+fR=Kb|EfnM_XJ+phGqpT5-yp7DR7q+*?u5{Ub+oSXftnSeKe|4#Iv z<ysd4yb1gRFOLP=cy$EtHz=qaMsOASA0xETimb~rtth%I8h^>ILUkY<o~{)@z2FU4 zY6DQ);i@-<LYV?+!}5l@%0T=S3g9i$eV^3{W~|EtkWpyNE|Jmp@b6u1`cVqc$#sso zh-`b;?(PztT|_)<9ZsBhZ3crIi`j-&9#w+rtrJHjb+2<MQ)g3S%G6cF&H&rM&U~Ks zw2JQB&aNuvJTV7WrZeovc;T!RKZ9zglBv(YeyX)T&QbS_zl|@eOj?3M57dtU0000< KMNUMnLSTXmua?6A diff --git a/core/embed/rust/src/ui/model_mercury/res/delete30.toif b/core/embed/rust/src/ui/model_mercury/res/delete30.toif index eea1cf0df2d0ae34ab434f6ce7ced7b2d81a6d42..8133b643e485ad0d6b223b70f226dbeb174514ae 100644 GIT binary patch literal 152 zcmV;J0B8SHPf14}03HC00001EV4x{@{vQP1XG3@!|3d*gh$rv|#`Onr55jo=_XBwf zfB*mQF953i@&7-NdkHAa&+sju;RA>ZlKfxKkif?99mKr^*2T)e5bz(w{R`&CGcbHb z;^s3jeEW}3%*Mcw@E^&j09J@mP>a6CLo5PI*Mpn^kwtRkc~mdtGoVOwKs@{s;(Z@l G1~CA`n@4Q` literal 117 zcmV-*0E+)qPf14}03HBo0001EV4x{z=>P*W2rr=n3RuA0b{JO!#4CXDIx>Jf0idLZ zK}QEO&;%g25Gc&S&}_lb0OEoqJ1iIsm>HTu+(NJ}W(EeJ`VN?}77QRsOfH&YG^5Zg XLU#t5Baysd!GI#og5rHOS_Uxy^(-mU diff --git a/core/embed/rust/src/ui/model_mercury/res/download24.png b/core/embed/rust/src/ui/model_mercury/res/download24.png index 9a9233e4d68173662d4bc8e18ad03940480889f8..e444f63b11a137d6f364f867609885d1f1001717 100644 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{KvmqrAk4@xYYs?%t*47)h{frvlTPzC8wjw<uRNfd!}+o!C_rnW zh?fUvw3C;F-VuS8xSFOEzI|_c>?bY#-|)aSs4s2%VWkj}UEA5)E;Dm&tggG^;ICSH zwR)*qwSq9i<1}A+mXp)&#Gh2Z|FwUK?|RSO|BMYDNZgAHXa3W6H)&n`<HTC~z0)Kc Xo|V>o`L#9|=nw`^S3j3^P6<r_WQ9?N literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#=`Bp4pvH+~MJn3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+q2&C|s(MB?(<2@8dq0t8&oGaX$qm1F;go5yaQsNvav;J(G@XJ;kW zeBu^scIg%3UBK@qv)cTwZL#?s?)@Rx52_zrr#>;`=jZzy%*^Iod%?n;#*oIrV8{@D zvZ%=5PvIHfTcQjV$7fvI!hCMh-j&N@om{yeXvE#@GShjHH)mQKuYi)=i#=UM?l-2% z%kJ&oc_PiU`R~62;<k*fEpqH!&yv;xU8q{(8c~vxSdwa$T$Bo=7>o>zOmq#5bq&ly zjEt;I46RIzv<(cb3=DGFa?DUP<mRVjrd8tBAQOG13#dT@ZbM0CZfbE!Vr~Jt9&;;0 X1BfLv^=HKc^)Pt4`njxgN@xNA8o`6x diff --git a/core/embed/rust/src/ui/model_mercury/res/download24.toif b/core/embed/rust/src/ui/model_mercury/res/download24.toif index c1fc80f850afd2a99d5bbe0b1868097c55bc611d..6ffc83b78b7eafd57498558b73eed18c3ef238bf 100644 GIT binary patch literal 91 zcmV-h0Hps^Pf14@02lyI0001EU?37al0~q;_>;mGVEW>(zyx7mi2vgMl^4R^@c-xh x|4_EV-~a#bL)9=``u|@Srdi=HTo@>!%RoH%{vQnLLG1rf0Al}uF#Cx!1pvk=E)M_z literal 82 zcmWIX_jH$FkYI3QU|>j2P!KZNq<q6yN@b(uY!em<#WPIZYQ1SIJUM083d#m-bEtNA mXAR+XPIPa#@LBI*9V4Nkc+SBl<0S(#zrb#0t_w#wnHd0%Ko<P~ diff --git a/core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.png b/core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.png deleted file mode 100644 index 5627767ba8a59f77024ec72b887cfd82acea5324..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^5<o1*0VEjyi!p})DW)WEcNd2L?fqx=19|Kvp1!W^ zFPPcH^ttwBNqk~pU}W=jaSYKoUpjGN&|wFGw*AWl=bYhWF;nlhad8#sSbgN0!Um5G zwLEc+3eoP5gjkGO4)UCEaam$yc;<+U!X=eltJux|@0oA^e@}N#$4iB;N$0k$e-kIk zypCtrrB^K`IdO)sR$Sd%Q?DIhBzgBjo~UEY?kpBD7S$_?-h~W3!L>{-GatWYuI%Ms zEy_}n#6M%R3hVJk6XEU56K2)b?Z38)oxdfO{glLI#<w9CKNuIjef6#JkzY;`!^gSI zXYc#en)p0S3;W6NB$YQ{#b>p{PEzx3tNHim@_kSdo0anXkMK52-<D%;L2q)d&#hm` zYPSDY$Kj`)+S_~*R`!4U_4N?Tjy)1{(>0ermapvfDA*@{{VOn#R7+eVN>UO_QmvAU zQh^kMk%5tku7R<xfmw)=k(G(5m7#&Qfq|8Q!R|?y8BsLk=BH$)RpQog>U{QIpau=N j4JDbmsl_FUxdrHY%;A>I)Snd()WhKE>gTe~DWM4fr+v5x diff --git a/core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.toif b/core/embed/rust/src/ui/model_mercury/res/exclamation_mark24.toif deleted file mode 100644 index 8e9f4603692a0e114606309f51bcdf81147978fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmV;K0A~MGPf14@02Tm^00018k0B4jFc3zsrOPHKk(J0PQdu#9teBW2!5}LqS<1%! zY_4}L$@t9oa=E@-0siv1{?H?u%BxG4%6sFV1&2ieYT@VrQY-wXzTX&o)Umb59A<cR z^q!69%qv?zCNo=y1u_Gk#2BbkCq__g?U6dt%%bu$$PR2KxO!n~ERK?iL>rdSvMuvb HAHMwsmKsO0 diff --git a/core/embed/rust/src/ui/model_mercury/res/factory_reset24.png b/core/embed/rust/src/ui/model_mercury/res/factory_reset24.png new file mode 100644 index 0000000000000000000000000000000000000000..c485d8d1e2a2b072ccceffe9b18157a25d0380a7 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{KvmqrAk4@xYYs^NPfr)e5R21$C!Y;HY#`8L|51a%Du8n#lMkz= zqUsG<7u5w^2Sf$54#?gB!Y50c9wyw}^nt&{`Pr(uH)q}zy(3Yyit)=j;f5^H%%gvo zSR@~p(`L76mPxRD(ReDP`0e6t1v0PBtoYaZy!2?M<2mn3u6~nZebbhzbaP#`b$olq zN19`6jEadB`ynQ#hj-4u=R5G`!^ZhD6Os<kUOutl?=HJ5Zr&%ow_JIpTejnm=l8<I zHPW(&dj8E^xUXnU%_Y`6^Wbj%)LpOd`zfbLoZHP<^i$N0FT_6d&a=wh3-dPBq^7*t ySn+^iii4lK=jIQM$8`RR+kUO~&HLi^gY88SZ|9oX503!@fx*+&&t;ucLK6T|mXgu{ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/factory_reset24.toif b/core/embed/rust/src/ui/model_mercury/res/factory_reset24.toif new file mode 100644 index 0000000000000000000000000000000000000000..bafc423742bd3dee13bea0759cebd0273a694988 GIT binary patch literal 143 zcmV;A0C4|QPf14@02ly+0001EV896)couLUU<WfDj`!W@ebK`LVt@Y+2K6A}`AT5$ z6DZN357G4rsN=Z)1&|WnPdy9_Z}mTb*!-W)fz*89XJGii|A_;YeGA5(i^SfGTm2g( xGf%+ms$pO#fVlyv#-ShLwjUrz|A4r;AMBSCAivar{lZYdvw`yf2ktOn006@ZL%9F| literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/fire24.png b/core/embed/rust/src/ui/model_mercury/res/fire24.png deleted file mode 100644 index c075d37fbaf2895a37609fdec2de7f850a054631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz00VEinYCXOMq?nSt-CY>|xA&jf59G0zc>21s zzhGt))92ckCGiO;^up7{F+}2W?Zx$ehYJJ_d^~?k_n~_9&WR3(j<8I1<~#0TU~{;F zHLlV9f#kBn1dk1?@4R7YIu)kSCBeDq?hTeXJ9od2eW(Bb)EC9Ovp)9uR^MD@*YdK* zz_Ytb{#=km%Drd{$+hg}zB)Z?UK;JQeG#s6^bYIc$M5>)J)3>P;^4*nEF-a<H>y^z zx;S%P-RVy|Uu(bUZV}t}VNctF+z(gyRmIX5to91n*C@m_F*TT-=Yewy>tvBjr<YZ% z@nQe6Y1gZ{cT`Ul%O0xTv_0)>MAywVn+gsbS@HROnn?Wm&;BL1r1{S`Z;H55zyCG+ zeP_$K*h;m7KtHRNxJHzuB$lLFB^RXvDF!10BNJT%V_gHY5F;Zi6B8?A3vB}fD+2@7 zSsztVH00)|WTsW()(~>sb0$!O2Hb{{%-q!ClEmBsbUo%)h6WHzX6nz12kK$)boFyt I=akR{0Q}*&Jpcdz diff --git a/core/embed/rust/src/ui/model_mercury/res/foreslash12.png b/core/embed/rust/src/ui/model_mercury/res/foreslash12.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0d67a23303051eb888f051b852d8bc623b009a GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$0wn*`OvwRKEa{HEjtmSN`?>!lvI6-`N#5=* z4FB8v&+G^CI14-?iy0WWg+Z8+Vb&Z8pkS1zi(`ny<>Ukfo`39r?Emj)n0@5m|NsBz zw||^5A%#amLc%V|<BxcPKte*oj)s+o8ybP&A)_9rj+ID(=L=&4gPMdt4VsDv4jd>D neCQ%(k*&zAe3(V)5F^8-1d*6;HT<$bTNpfD{an^LB{Ts53#L8T literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/foreslash12.toif b/core/embed/rust/src/ui/model_mercury/res/foreslash12.toif new file mode 100644 index 0000000000000000000000000000000000000000..262f907c0909118683576fc8d6a6ff357ff66c0c GIT binary patch literal 55 zcmWIX_jKoB;9<~aU|>j2XlQ7V64?3BrlW>I&Hfzw#Q0Z^Ps-~Beg@0A{CmbcvA)9L LNom-MGBySP=RXuJ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/key20.png b/core/embed/rust/src/ui/model_mercury/res/key20.png new file mode 100644 index 0000000000000000000000000000000000000000..c4488a3f0194d4f47be82cc0740d9ff78fda8874 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX0wgC|rfC8xmUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{#S9GG!XV7ZFl&wkP;jcJi(`nz>9?28@*Y;;X-mAqDRFSIp_7@$ z?4{BMOm`au@5#t)6>&Y3r)T+OcY~^2U5oRM;)w#4n=UmteF|K7X}MC_AMdH|(!TOa zF4Jn~<?eWMdiFdwwuG$@|84T-aM9f(Ath*-++tR+w)_9&eV+d>S2g*~deZPJI{t}g zvrIs>_q+v%@BhkZ-<<pR@W$^f``bUBYu&^cBj8nABYw#k=s*TfS3j3^P6<r_G(cXF literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/key30.toif b/core/embed/rust/src/ui/model_mercury/res/key20.toif similarity index 100% rename from core/embed/rust/src/ui/model_mercury/res/key30.toif rename to core/embed/rust/src/ui/model_mercury/res/key20.toif diff --git a/core/embed/rust/src/ui/model_mercury/res/key30.png b/core/embed/rust/src/ui/model_mercury/res/key30.png deleted file mode 100644 index 7cd4b5ae83e42a20a09aaf14075f46692c8cda20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 zcmeHKX;c$g7LF_Xu(;4JjF~_S2$fVq7RV5gO%f#-F)D}%m8wdJWHVKmgb^BXq3HuI zG`4`Cv~UnnQN#^V5kZ*7z140;9UX8(TN_te)SjM~fC{JkkLOJPBj;4A>b>uN_ulW` zx~D2f5*_JaJK2^(p*V<y;W6O+SMy;#8vJhxkb6@oBcG;8W62oAK-KBBa-|BVk|rHa z#f?fig<`z^WXrt#J2UJfev3Qf+m!F*a<(a{T5eVMu0E;jVTIo`Q%_2@>iRnCJ{p-> z(fsTug=4U8UhnuF#XC#BU*~hbu)eJGhG}zO1$5y-UuSIkOO@jyt7ea?d+)lHeZh}O zo00_~a~iEp32twR$n|q>C$9NnCW|IxUw3JrBYge1>~qNlrP{k8z4Y`+`TkqMS2F*e zo858sWcbqH$gtkx(_ZJYH>!+Z?V(^dnZl5;2jd=Q&JU08<U&3!9(NPA)%dvY2nx;9 zmTs$B0;Opk_Z_4$TumbVu}4RGXTI6i9`);%P38M02Hy}z@7jL?`{L#aUJr4hFe1lh zS9D6uhF#|-zFT3>T-QrEad47m?V9uX^QP`TmbLiCqr>IW_LfuEykp8kOV`IOs<vi6 zckZ~9RO5T4TUJuv{+;7m{#H!cmAS;T*K6gOP@?1bH8_&Uy=h$&<>Y?+`Er}>CojG2 zunpguSRcCNocq75(T!8)9$jVqYO}P|CZpiT6x{@;tDElCMzCBOw!1WZzy0f()00<~ z?+7|#7Z*QL=)7*>=&+F^%VzB;NcNMvhtk|KZA06}cDaofZl02L*DL>2tI0lZQEsJ= zPxI8IHe{^J43WL+!1z;N&8yAu<^Ld=ce$!sBu=RN#>0EM*gI}=wv1W(Srk-M6o0s@ z>+-d)w>BskMRotVbhYFFelcK67Spc4?iO9=g+EB>J(|*SMbpq@VoW%@v$dMDVE0l2 z%G=5=nFeuEZs~oj++t@(2EG(#yJg%hCw&jmziq1#r2ce^V7MMy`zpRKb279nP~;HV zP}Q`ocVpS|lJ2CjNmFU7jyjBvy%boej%Gfm@(R^OwLS&T6@QWEjb%FJTGg&d+i$nh z#qI8YU5_L^%bD`qB0W;}cH>Qhrl;!AGmg}=mT+BPp~?EU)%MftgI6v}-`9MbAGBBd zZG88{V{0|$(;LH@iaTx1uNhBy+Q~bcAH_~{rBFuDlwn~KQCQgf-Ul6DQo8ZP>=udB z+QybdZ0~rxS|NhgCf!-c-5u&QUbdtud9(Py(ZZIESlr4{x5KB&?LwYT+B0E~fVVid zuyqv@w62J_zjS{oyS=(E;h)csk-ui>CM^k=qxDU?+$8tRt=`dN@;uo3V7Gh%Bcc3S z&@T$#R?&oA7Ya<$0#5APu3HD`_C9fqZm+YutZK(8OuiW|+O{}V$Ky9~{G1H-c}}TE zqdzbG-b8v^NmnO~oh~dWu31)d!CBBNO_&|}^R6$Y^Icw57VoNeUJ#=XaB>JgR(VES z_w2=8RzYj*;?~afQN^u}FB)&BOjDe%JjC=l%~CBUX8(ho^-E-|L(-E;3v1$!fAdA- zUcB<hbMIc{C06B1B9>&ORe}jJSqUaZtT>8~YSnZE)5>tVQLO`$ghB}nHtG;G1t+O8 zT%ptmXgv*$G^!F4&=zsTuviy{Co6?%dVGFbv=mKCK?5*aaFA`Fkq-#eIEhe=YL$lI z8wE5AFCSc+ml-sw1wy6>Xt81mHB76=scbr%4nq+}<q8%p$d($Y$K?E&@L2;C;7&kG zCP^Ki!7vyMbb}vVt5-0X0RaIFn8jeRAb@}flZHf$kcMzKQ}lC$;{>W#>PV$lLp5_E zGHog;pwYlS^?iJ5oml*VUPBD10Q6uO5gmg`hZ$-$W3UB5MyvoN0|EV^1tA3kml1;# z+EhJ?N36g#r2AkB4E<oQOVz6^>0l@WSK(>^C4g7v5SNi6vE+k=SptPpt+QAGv4<c@ zrTn8<Lt-=USkf6B2r&P^I|ThccMBMx#A1H97ELvWCkhwP%>Mb97FA+=%OwiSSr`-L zK>iq;4Y5%f50b%h7-Dk#5DqHi_+v775S2(nkcbAw%~XJ#t^_=|zZ~ZAFn@@}WAY$2 z(;o*E>;Q->lLxR-6vO;E$RLWjdL`&eL^U`nGZhA?xERX8<QNKZQP3D{Ob(*qvbYda z&S5ig4$AdsaV=CB%Acjxs}WF6r5aJ-44p<{*)R*v50QujG#0%-aLbBBg^+S!AfQDl zHL1prP^nUl&nFSHnoJ&(&EfI_{8>C6%=2e|1TDn%1n5LFCljXo_4As`!UxF!VG(nm z0s@N#$b}!K#}QJimuj^t0nHo$)of{LZ)#wFQG`kYAWY_tAL#k{`11a{{zpKiv}{qS zmbT?1XulHzS%G5~N5HOs3r$8e3LHG&0}b_lUHJ#af>{U)R2qhO92h9f=5QbcR0(3i zG8vc0<gj^6d?-7im6HZUkB2BgrXU;8K$dK%UKT06hoTM1xLGHd#fD%G1T&>fHlO3i zhgm)_ix0yz#z4Xh^Hcpk<3PsmGzqi-28{t=*S`kF3z$}n594Y;Gqa3;;%}f9f1(FK zJ?!L@^c|LKSgub};FG|^-8C%NCn@kr;NkB2zsY6$@q-7~fVUt6_?-DJ*(3v>LN+>K z96_PjjWZu3D8(h8fki7)B#yA^9y7w8Gji0iRTW^VK@=V$^*{UMYLoM7s?(TDbEl7y zjC`2u@|a4>`LJ7(RY%jsko>ZvnUg#{x2*PhJ2urIY3W(sl;hYk+3?buI<_M(wY~Y0 zpTpd`b6%aFm)2{Vd&BHG4gLnT@ymyQ`}w{wKYdDc;$ioyI|=#aEw`dwr{65=96@>X z_Vo<OY8$?H(S|z3390<f+>1!cZQuEcyNR5I#U49XdGwXVbA{`P;wRJZB#?QAc{UBK ov<;&iS1(W9yM}-9NpP3z{dC9fl@716K^hcMM09vfXj0by0AND(KmY&$ diff --git a/core/embed/rust/src/ui/model_mercury/res/lock24.toif b/core/embed/rust/src/ui/model_mercury/res/lock24.toif deleted file mode 100644 index 16b4c4600ff29ed112af4462b0e62b59afd8d82d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77 zcmV-T0J8s7Pf14@02=^70001EU|?WqczchN0Sf;7|9_te!rbsbd)a>;2>VMv1H<=t j2>T~51H*;&5cV&i{DSjDvS0j%gT8<Nhc@_yV6F!Mw?ZQr diff --git a/core/embed/rust/src/ui/model_mercury/res/menu30.png b/core/embed/rust/src/ui/model_mercury/res/menu30.png index 8c48673a9cdde9ee8188a2da080cfc5ee51453f7..3f31f62983e1b60d86b2f83918ca49eb48997f38 100644 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX0wgC|rfC8xmUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{#S9GG!XV7ZFl&wkP%zEY#WBR<baH|Ot26JP_5b~KR<yrNY{~xT zzsI#FAl9c~qT8acLhFkPm|Pk(4O9eHrZYZfHktVUduQLO-v+imF1Ol5HynuUJ7PV% zY@tVdgL3kf$CsTAk`0U=UGvdM=K1Plz@@;zaCuJo;^QkXvjc5p@O1TaS?83{1OSQ@ BM412p literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^5<o1%0VEhU-CGn7q?nSt-CY>|xA&jf59G0zc>21s zzhGt))92ckCGiO;6yoXP7$R{wIVC_W=>SXl{f!){#tF<<eda_Qm9&tQT(Wdy$Nt@i z9oP?a+?78+@6jiBZsEMeY}e$q0-k->em_CACF{YP?`J)PeC`)Ysj?V%Jv7>+#L##{ zNTPYcmFGb7RZCnWN>UO_QmvAUQh^kMk%5tku7R<xfmw)=k(IH5m7$rofq|8Qfp~z$ z9~2F_`6-!cm1r7_EUb)-AsR9sn;QT%XuxeK$;?eHE=kNSK+|JlZe?fy(KAzj7ARO4 NJYD@<);T3K0RV0QW48bR diff --git a/core/embed/rust/src/ui/model_mercury/res/menu30.toif b/core/embed/rust/src/ui/model_mercury/res/menu30.toif index 48c9706ec77fc0343b110e58df1a94d7db161bfb..12091aa0d215e791dd2536c6620c94c1a10e6209 100644 GIT binary patch literal 65 zcmV-H0KWfJPf14}03HA}0001EV4xfL{vQVFLEQfc0OJ0D^ZH3Pxv2vNG(g<HaHH;H X;i4%f-3#?_F2eN;a4+;T&=~*#O=ugn literal 57 zcmWIX_jH$F5Mj_|U|<L~Xk$KhjL+hMLy|X#!W9F<2^=CDX6rkeevWN$kT}FPJCZTc NTw&wEXU5Jq7y!=B5_A9n diff --git a/core/embed/rust/src/ui/model_mercury/res/minus40.png b/core/embed/rust/src/ui/model_mercury/res/minus40.png index d17c01f1e298907353078c3194cfa3ef5d1f3a6b..b68c6e00836aff4e2941cf9c3b091769193490c2 100644 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU0wmSG7d!(}Ea{HEjtmSN`?>!lvI6-`N#5=* z4FB8v&+G^CI14-?iy0WWg+Z8+Vb&Z8prEs-i(`n#@#F*v*2M`TJxzfICJf5E4%D-@ zu?T(9PpENlIQswhe^18m7rz<@-af4(q13mea^@{QDX4M>eFlb()y6kxygIA|G>*a3 L)z4*}Q$iB}^r$oq literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5ec0VEiHm|pw@q?nSt-CY>|xA&jf59G0zc>21s zzhGt))92ckB>_^P?CIhd!f`!0;Q*(EWQ)&6uQ_$cPXuUpgubdZ7LH_lbnOTO!&Nml zwtTPo6+q>xC9V-ADTyViR>?)FK#IZ0z{o_`z*yJ7EX2sj$^?Y84GgRd4B8B@o1$pQ z%}>cptHiD0drp2QP=f~ChLX(O)Z&uF+yZnx=2nIV5KCt2&x!}?VeoYIb6Mw<&;$Tq COiS$m diff --git a/core/embed/rust/src/ui/model_mercury/res/minus40.toif b/core/embed/rust/src/ui/model_mercury/res/minus40.toif index b284565c85a0914102cd4be309bdf0f3590bf1ce..ed01fecd510c5214627e23ec49a64882da994742 100644 GIT binary patch literal 39 vcmWIX_jK1_&|r{eU|>j2kYN47<SSdSfKmAOZ+X6VkA)8}D;K#S$G`vp$#Dzp literal 33 ocmWIX_jH$HU}F$vU|>j2aA0E6<2Vp;p^@Q@hKxw+iC>Zo0CeC8lK=n! diff --git a/core/embed/rust/src/ui/model_mercury/res/page_down20.png b/core/embed/rust/src/ui/model_mercury/res/page_down20.png index 740ce632c57546da56680a7a35e6a94663ce0f25..c7f4f2c0d2b715d89b3993ba0c742feecc6b6bbc 100644 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@UwmUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{#S9GG!XV7ZFl&wkP_WX|#W6(V{Mm`#ybT5dtnmR2EmNC>bsjKi zdN?v!R0OpNFKzL!Ryworq}t@aUp(s>lGPUJyz5allrUh3-I<+`u<~XJ!;ZXLF=s+2 zg(%uh=-l$W(IxJ=toTg3%)M)V{_Bx!(5(LZ&6K^)=jD=Lre~Jynqk?fy+!{fgN}H~ Vr-GiSmq14_c)I$ztaD0e0sxWxO{4$- literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO0VEi_4kcUwQcOwS?k)`f+xyS#2lCiUJbhi+ zUof+Y>2vMNlK2D^>h^ST4B@z5du}1$Ap;S&hnGz|6uVs<f>PA2J5}~DBnj#0@Ax7( z!?jGTQG%&ZU7(|{t)*r0yYzoCKfIFv1RLE+%>H$~B~YyFuJ43@yCQkFvrO1Mznp>9 z;mCxKFZs``^qOuzy|wVT)B*FdmF%f^5BFXY(Bt}MJz>&?MT%OddoC>FU$m*kEdQFQ z{a!|+WlF4@{fyj!&QdLLjVMV;EJ?LWE=mPb3`Pb<Cb|a3x&~$;Mn+a9hE@jV+6D$z z1_rxJe6vwB<mRVjrd8tBa7y#*b)W_fxD6$lxv9k^iMa*ndd#g14Iq}x)Snd()WhKE L>gTe~DWM4fUd4Rj diff --git a/core/embed/rust/src/ui/model_mercury/res/page_down20.toif b/core/embed/rust/src/ui/model_mercury/res/page_down20.toif index 4beae7db0b8f3e7da0008c80083e1d5e667cfa26..1676ecfcacefa8cf5fd75cbe6366d76b5aa8de0e 100644 GIT binary patch literal 90 zcmV-g0Hyy_Pf14<02BaD0001EV89P9%w>YIKK!qTvJ|fWXMr*Q^1xJn*N3sb_@lD~ wn7;TcfDO73|Hc0+FNn3_|IhjVc_D`U|9>B1&87eUbzvsohuM5dmw_Mv0DDp{0RR91 literal 79 zcmV-V0I>g5Pf14%01^O00001EU;qIDVGwE1!3tuRWPpX*nL$(&8;ERR$3`YHHLx47 lHCZ&UH)}X_G@Ey@Ftl`ZcrY+HbO4zQ3@sjDQ<)f`006Nh7}fv) diff --git a/core/embed/rust/src/ui/model_mercury/res/page_up20.png b/core/embed/rust/src/ui/model_mercury/res/page_up20.png index d8b1695bf8086d574874ec3220170c46143e92ce..263d02d51b0d2658568d33a038aba9a1006619f3 100644 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@UwmUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{#S9GG!XV7ZFl&wkP_Ww5#W6(V{Mn0vybTHh$39+`JisA-ki$i> zNwCLBSXqK`_Mch-muCX==6pYp@aNqPJC}dK8gl*H3>G-)fAcf`=EhvSy;Rq^oAE#b zV|-PVtCEPL<mI;$w%wg){_Oca)BEZ+&wY6J=3G6%Y@&E{=f8>GXZF~I7XEPRi@(lT YFtKsNJez|aKxZ&`y85}Sb4q9e00v%A5dZ)H literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eO0VEi_4kcUwQcOwS?k)`f+xyS#2lCiUJbhi+ zUof+Y>2vMNlK2D^YVdS%4B@!m+OI8k$UwwJKT|-$MThC4diNT)b6hu_w;d2`(qR(5 zc}l6-<xBAc1qsveGkeTGEMCTXfZ3x(JHS^?*_l-+wR>Wr#}RQs&hYLT3a%-2C$_Up z@Us3@H1qXtzVDUq<a;DOvv0`c>)+&%fBf>hNVNz1)~}VnR$$ToJ~H31NWoiA&?X+} z7S$5hh?11Vl2ohYqEsNoU}RuqqHAERYhV^)WMpMxU}a>fZD3$!VBoeUsuV>-ZhlH; yS|x4`<{uxO1ZvQL+fb63n_66wm|K9Z$K1-$0Ak5Z{aGMaF?hQAxvX<aXaWFh`*Usp diff --git a/core/embed/rust/src/ui/model_mercury/res/page_up20.toif b/core/embed/rust/src/ui/model_mercury/res/page_up20.toif index 8b48f18f1e07c908ae9efed6d1cd7612173aab67..dc5ee50e9a5f06c77f3afd05b231fa03e88a1fce 100644 GIT binary patch literal 88 zcmV-e0H^;{Pf14<02BaB0001EU?2o8=|UL_fA2Fvh5rB7g$n)u4-vfZ|JVBe++bGz u7yoa(U|FUw{tAo`Enoa$<{?<0>S3${Fq0V^{@22oKmPN>Y`(=y$dv$c3n~Es literal 79 zcmV-V0I>g5Pf14%01^O00001EV1NJxW)Rup0VEtcI#__rjt&nXv)H18rOBdzqgf+? lxqw4KjDewm1Edm@Owa(41{I7Ts?8ll1$2N-HDrX?0RaB#8_@s& diff --git a/core/embed/rust/src/ui/model_mercury/res/pin_bullet6.png b/core/embed/rust/src/ui/model_mercury/res/pin_bullet6.png new file mode 100644 index 0000000000000000000000000000000000000000..10cf50f8346dbdf1b745665630e829a5dc21e8e6 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|R0wleTsvibYEa{HEjtmSN`?>!lvI6-`N#5=* z4FB8v&+G^CI14-?iy0WWg+Z8+Vb&Z8prC=Li(?4Kb>HKTybKBgM-H$(e(+#J!=b4G xaWON(xh;A(GMr9NtTOt+<M*BM&aoX2n65Ocep0md;0Eet@O1TaS?83{1OO+)EQ<gD literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/pin_bullet6.toif b/core/embed/rust/src/ui/model_mercury/res/pin_bullet6.toif new file mode 100644 index 0000000000000000000000000000000000000000..cacb72a49d82091960725a7b5d071ac39359fac2 GIT binary patch literal 32 ocmWIX_jG4tU}F$rU|`U$IR5c*{r~;{-#5N^{{N@&y+Q^C0K5|pX8-^I literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/plus40.png b/core/embed/rust/src/ui/model_mercury/res/plus40.png index 78d98a494668080c7c7facc83a52887ce06f0c9e..a1ab4661d1a7a7d83c434b465fe397512f7c2833 100644 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU0wmSG7d!(}Ea{HEjtmSN`?>!lvI6-`N#5=* z4FB8v&+G^CI14-?iy0WWg+Z8+Vb&Z8pkSe=i(`n#@wZbiayA(7xU7GqaMR`PlEoz= z?iW2DsXgB>>eJPfbnm(99sv#(j;4Nxg+ZFr?ww0HBf#;g)`?w_Cz1K3#D_Nx>^%%( zYeG}~ZXadQvVHMb`+KO-&#=5%r<^9~OuP4ezAwjr1(S!Biyc3(l`RbSez}fO=P1x} N22WQ%mvv4FO#tt<Oj-Z{ literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^QXtF$Bp7-Wg@u3=Q<As43&a2R{xkc5JoXY#Usv`Q z%xq%%T>G*lJ^_VdJzX3_G|nd{9N?6gc*E%?Pw;)k9X=jG%bJ>&@!VK?;lPAxNr?hY z)xoWej;wlxzhsr2*D8eBzMuV3;zUQz0;9ustvQ$@CGNd#Ssk3Vqxk{Pv<nMXUU~Wb zy}z*lD}y4F;LUT6vr2##sg}4#l%yn<q*^5xr2;7iBLgE7T?1oX1G5k#BP$alD?<}) z0|P4qgSCurvQaeT=BH$)RpQogCnn@NP=f~ChLX(O)Z&uF+yZnx=2nIV5KCt2&x!}? OVeoYIb6Mw<&;$VMTW6U7 diff --git a/core/embed/rust/src/ui/model_mercury/res/plus40.toif b/core/embed/rust/src/ui/model_mercury/res/plus40.toif index 098b5a73d517230a4cf1aedd60ff29e072383a98..23962cc601c9b3b8efc234e1e6825ba00c96819f 100644 GIT binary patch literal 54 zcmV-60LlMUPf15804M+|0001EU>G9ck}js$kNzPg*3<z6zxRVk4Vc*9|8Q_0pBOg1 MLop0+#^oRd00XBKkN^Mx literal 52 zcmWIX_jH$HkYdnaU|>j2aA0S8+QZT3%+4Ka$)x8n;nG94MH1Xr0u8dQ&5LpzWV$3n H3>X*yOS27( diff --git a/core/embed/rust/src/ui/model_mercury/res/qr_code24.png b/core/embed/rust/src/ui/model_mercury/res/qr_code24.png index 44e5c765c1d90575c29bf545aa73a09af4fe5a6f..7c50b2477fc376bf66068859373cd5fb630fa434 100644 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{KvmqrAk4@xYYtF9qnM|QV~EA+vy%f$n;isP^=(Br2z4|mC>92A zdfd?RkWt~&S}4@f{6L|UfiKTK;jrG9FV>%rR(^PPc8~di)zf;*gKcdXC1j1(XmawO z=DMc+#IE+IopIKK$#M;R9)J57Ok#vSO*{GJz`k8iPhIUzt8-p?;7;cL$oKY6rFU-y zZhesGEx}o$_rqfLMhE+)-Wv;^a6Q<1;N0d%lY@enzYCpzNm0dlRpH*lJ2;I6CZ(JG zeAKYq=^xWIzAWwsu5VAt+-j1~<v3rMz<$1Qvh=Jo-skHi4rXM(t*rH4#lARRyJ&UR zwY@&OV&3>$e~Qj(sPnu!S=PMo4M&~7`u?7h?Q3ow7MeacZKl6ndi{|Emgc>OP4-?) e^!l&*TD(#3e_70rQzF1%WAJqKb6Mw<&;$UGuAH#| literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^A|T8GBp6maa=Hkln3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+sO#?!?yMB;Mp1>NZ800!0v;&Mz!1oaEuR=a7rt-8A7jlaSAohv53 zQZn1RbA{mS^1|*lXB+e?FL6G%jQ`W@QYyQl{{7W(%WwRKrNRl<L{euTeiN0JCL6h; zZw*K81SPJ+DP}B!nju%?T|^a{rw8Yy_nnE*Inbf{X6Zcjv(Y{4g>QRkc=rf~Hd>sL z=(kvOg1sehQRacy!IiVirE~w5&fhg>&Z|`?RHt~&oO$&?kfF`A_g{aA*e{<~di7v? z_qEvn(RH)u*jfM4<@#97cQ$f+*Hhm&#<wpt-Q81oG5h)R+Eup?C+@wS$1iQipa1VD ze`v4oqGjJRl7aqKEpd$~Nl7e8wMs5Z1yT$~21X{j2FAJuW+6sKR>qcAhNjvE237_J zx7Kp5M$wR)pOTqYiCe?!4;#gS8Z_WGlw{_n7MCRE7NF@dF}E@_fLJn9e^xwD4}+(x KpUXO@geCw5;IgX# diff --git a/core/embed/rust/src/ui/model_mercury/res/qr_code24.toif b/core/embed/rust/src/ui/model_mercury/res/qr_code24.toif index bbb31eedbb00328eb04cdf4d9c8f98eb2717d1b2..20a32a2367b859b50c77ce122286cb90b03bc586 100644 GIT binary patch literal 185 zcmV;q07m~*Pf14@02lzR0001EU?2h*{P};Mz2M*f`^*ds7ykeMFaHTh@GvlZsCW6| z|Ha?sJ3o-^pYp-~3%~mpFnc<PT?Jt?fY=Nm_5+|c`_Djvmw}-GNO4X85*$DaoLo#8 z7@S>1K$bZI*#ayK1`H529FOuDesDwVwf~&Y@S7KEW&nG76EoB<hJ^o23?Oz1i2WYS n2Dz<3TVydi1H%EJUi~lq48MVHF!=lbJ^MvHhUc8b_?!U%`YBTL literal 152 zcmV;J0B8SHPf14<02Ba>0000zj<F8HFbqU5X-YFz45(vCmy8t%DP!3fk@y1sAY;cg z6~&*89RwauPqOcPz;D_&&1NK;RU{(2urw*S?6Y^PP5zX8wnJum2wj9A1SUT2ih~2F zzOxt{-5x9&=!G;|OtM`9Ub|Qv0b5g2`s#dDB^e_rly6^>2Gc=5O>yKKHp@+^iXGPa GUmhRe*gLrZ diff --git a/core/embed/rust/src/ui/model_mercury/res/reboot24.png b/core/embed/rust/src/ui/model_mercury/res/reboot24.png index 0532dcc52f8c3bd7c41c807c89e6e68f49e85767..a027bb28d505066f2054336ae5fe3b5d39808671 100644 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{KvmqrAk4@xYYs^N8BZ6-5R21CCnxeAG7xavugfu`#fpJ*as#s( zBj?lx7MX_ThYgk*d~MCg`%7DU^X>`>z4O2PZ11;q*S+d_c=*~Qo0++%Hs}YlRYY<A zkZtgG;@q*6X~B_m8X~rOUz@II7an{(zbQP%W@&6Y4{PTnr%7hXirJ60rf$zWquOb_ z?!KnzPL-Dmi$f1}Rd63=`PjqRyX38SlwVv^{+R__JPg-gtQ6Ve;4K>Fb-&Pf;);Bs zD|0qnsY^>=m2O{kslX>jg3X)xK=b8C>wkW(U=-N=j>Y`F%50#&7(8A5T-G@yGywod C5^%8q literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#=`Bp4pvH+~MJn3BBRT^Rni_n+Ah<gu4{`ns~e zU}h83=h~Mg@d+rj&(p;*MB;Mk#Pvc=4l*tF2b>IK&PkX!sm{B);{74x88vM84rZuk z6|!juHZwkowP8B=VBw$Q(`RcoZ?4{KKV!=0%BGfN@!iw9_TAnZvV8Fb1wpG&XB)>t zHBG+uxaiO{t`9eU#oEN5erC$ox#Y=|$BA7LM_M;Vi26y~lj>)DE~q<u`SFhIojZ0h zXkAtMxosN9?oO|-?~U1J++239PH}4K_bm(O9I%c|&-Ku*-^zb7q*``?>~g#3Ja=FG zKKda%UxveJ_x2xR8-PAhEpd$~Nl7e8wMs5Z1yT$~21X{j2FAJuW+6sKRwl+)hL+j} z237_J$|BFEqG-s?PsvQH#H}I7GfoqzK?80>NoH<paY<rs0lFS@D?<Z_B{TJB#RK&) Nc)I$ztaD0e0sz@rnK%Fd diff --git a/core/embed/rust/src/ui/model_mercury/res/reboot24.toif b/core/embed/rust/src/ui/model_mercury/res/reboot24.toif index feeb9c49c1744c97c4383bd4e99644ec3c61caa5..5827994082591808ecc13168735232ce56a14e8f 100644 GIT binary patch literal 140 zcmV;70CWFTPf14@02ly(0001EV890y?lQsIm;UR*h5!D)&jc6#50g;%d;b3~sKllJ z8UI@#5(0nw6aKUOxDRIk=K!)Bz-$I*1|XY31Zoh74FtDX5bXaPIM|$EHZzF*hZ{&N u_zyPXhd+?`v>(iV_@0fy;jcc_=>46)!3F@qRiK0GVIH~he;yOw5C8!ADnj%C literal 96 zcmV-m0H6O<Pf14>02TmL0001EU_b_i>@b!<JDgcq!3Y-=$17OS0R|PKaArpbGfaU( zs|8$}LkB`%8w*^xi5+fn0|(qWU?v1K!5ziW$_isSbikaV&}IQ)w1X{%GAme6{0IPl Coge%F diff --git a/core/embed/rust/src/ui/model_mercury/res/sign30.png b/core/embed/rust/src/ui/model_mercury/res/sign30.png index bfdeb622afc354ad3d2aaaf14a341f61baa55248..a868c8382662bc139c7039232e7808943608d150 100644 GIT binary patch delta 303 zcmV+~0nq-61pNY#SAP*nL_t(I%k7j~b;B?WhLxTHFa$$L5zG+GV1Y0O3xqIe8MF*K zCLRNa!MBImiJV)L=S~myv7}$O-?qrVD8Um5G{=FK2U!C482AdnCGFkbj4d|pZl+nU z0K*p%xNp|79DtBItQW0ywvW1#vfH$}#n@Ji@|uA~MEcUK#D6F7O3x8+c#H^^+aJR; z+^9t`cwAX_Iq9Kb+SLD}qzb=0k!hgoa7jAMQ^3M}fvrrZ!r9M;m)Gp$ws=-~Fhrs* z83)Ai{HD-WMAK3AoTab&Ne<;P<=N>&^)rFKuMg<(_0;A}&t=ejj$Z+HAkuEoRz67p zK6X9HB1ngpb|@D}RS*W~_rY&SM1+Pwm|UEfmtQZt4jqQrE&~7n002ovPDHLkV1iv% Bl1u;q delta 445 zcmV;u0Yd)$0*VBXSAU*KL_t(I%k5Olb=xoyoCRC}OMp6%DllC^s0xe@#E<SKuaQV9 z6$Gh3as^^4kUI#{0UDq-2T3NZ2l&05lRe;ZIWySBa6#bT3yMRVO!mOJS)0EUw~D?a zy(X5QDjQ;n$fh+?0ET}6P{_lihx>}G$y8R<qZLCr0DV1bX@4dp()K2iE96M{waNkq zG4u?;a5HV-RhB0x09MpNb9Q)yf~FL+(3#a`9n+9_R7gBl&@cy(3W-H_6-NwnNO(z! z9Dr6)e|}vXV5`L!H07Jf`2dF_Y*0)KR@HEMW=)yMx))fa0RKi_I2?d(NuD?|B)vM< z^n6Xei8^;d6MqqnZjKXxMfnzEc!ss}P3A-Fru7zI(>Clj?d86kdys>J6P|dJJ{;*3 z6hi^*eU8G>Ld=T$(|U}%+2$03C$}F_`4}~<`*j&lEJGHxbJ}0<GBlp_biIJ9+na5^ z)$ec(1&2l~f|UWFSEH7uu&rV(1{?v_JR?)t8xm>zLpGB;T20xxS=S*}<WC}Y(+u-Z nX~L|}CQRc6Kv5p>Ki=aHgEf$p!xg1_00000NkvXXu0mjf3=PHr diff --git a/core/embed/rust/src/ui/model_mercury/res/sign30.toif b/core/embed/rust/src/ui/model_mercury/res/sign30.toif index 96ab6097b7ea51858aaffcb5a5a73a94a0304e81..924200b0fee9145fa9f723f8e4ca988b707402b2 100644 GIT binary patch literal 193 zcmV;y06zazPf14}03HCf0001EV4xHP++{=JDg6F_p9#TT@PFlhPPm+gf(JtrQxim9 z;Q4+q{cAp$f8oC^n0xs@FNpf^zaGqe`kx=neLo+f7{YzvFRGBmu#7qI3s|uN3q!;I zy+Dfsm|<4^`aho$$yo;fnc+-Up!9#BoemIt?SW2t2UPoo4{VV?kPrgmFA#hCp}M~F vV{xRyFQBW^85n-|F~U9gzZK>|Aeiv~|9=jo!1??CJW}8=B-~}CIQSU=C2U@~ literal 173 zcmV;e08;-{Pf14}03HCL0001EV4xHzlrtmo1ll?(7!llnj?fMkxSWW93WFn~BUHX6 z15C9>fcXU-;$UuJ2Rn#r=&%5Dn>sikTn~t1C|83?z>Fc8QK1Q}Sb&Map(7n=kpj$W zf!2-)WJd~gz#Rot4B<i)7f1k!4v<YylYs;yg6jd*)xv?rkpitiON<#9+B^^*>~MyA bkOAnb4utoC^6ecNNP)v(P|ieg@G}4aW?(}a diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.png b/core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.png new file mode 100644 index 0000000000000000000000000000000000000000..021704452eb503053fc685c20260de3dc588d95e GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{Kvf*CL6}i&!U<WRV7;e{V~EA+w-+6GnG8i-FHQ{LoN6F6A%N54 z0HcKilZ7Ow^1>j#Zp};&i63``-u>D)fBN_3FV9<xeD0`Y(_ED<ZMjTcbk3sh>mP_+ z?O*Wj+Qx|Aaz(3yzkT`nb)IO9UFeSQ9@3lZvj6tT97>KVQA+k&`}@F*=p}6Rx1CZw b{@2P`t!&r6T;clz=oAJ|S3j3^P6<r_vBp){ literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.toif b/core/embed/rust/src/ui/model_mercury/res/simple_checkmark24.toif new file mode 100644 index 0000000000000000000000000000000000000000..f29dacefff2f43fbfd04b7082ae60ff890a87581 GIT binary patch literal 99 zcmV-p0G$6+Pf14@02lyQ0001EV4xfXFeBLC<>5?)|N3zD#sBPZ_K*2+X2O46FulQs zf#K4BRxtbXeI|xK{Sf&D|8)!g^FkH>y8q=r6O_H-|NnZJAp(E?bHYtLc%KR37*)#s F1^`_0GOqvt literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.png b/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.png index 50ff2f99dca54e366e510cb2434b969011cd5969..4e3eca262010a469cbf895d18e829abf04422a3b 100644 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX0wgC|rfC8xmUKs7M+SzC{oH>NS%G|}ByV>Y zhX3vTXZ8bmoCO|{#S9GG!XV7ZFl&wkP_V<(#WBR<^xKJ^f(-@&EE5GdCpL+wJW#N3 zU<y)V<eb>h@@%5+JEh%!7R)H$m9{B1w0@tMj3CGP2XYNBId4rcz7^<yYHx+L%+l>! z7du{9Xz?Mb$WO~>nZ4billcqvzRt695h(d}m}4J@*R0DH$3)G!Z#^t?l#Wq<!KTl- m>u9#JRz*q>$FI+QXU@Mq>nOYB{TiT~7(8A5T-G@yGywoDLsUZm literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz60VEi<J}=4yQcOwS?k)`f+xyS#2lCiUJbhi+ zUof+Y>2vMNlK2D^n(OJ}7$R}G_JX3&Ap-%ohwj`-sYR?4T#~xiJZ0g?(Q$vk)Dd;= z;1@2BB<&pz%E^Mh3-2aI{5-oy)c((oAm`F2p&FanH@h!xZ$EZR;5}C^FE5wvmc54* z=Oy<obSNv6J3Q&KmDyhtxuVB!P1+`%>)bKHg8Oap5s^6^+*hYnoIWq!@U<=D!6pAN zuY;W*IzN|aTKqirc%EiX*!3g#tC{nab%dJw&8mS8RV{IiC`m~yNwrEYN(E93Mg~SE zx(3F&24*2fMpniKRt6^820+rlCsorMMMG|WN@iLmZVk2;6TbsBXuxeK$;?eHE=kNS dK+|JlZe?fyv1F$HtazXv22WQ%mvv4FO#qf|hW7vf diff --git a/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.toif b/core/embed/rust/src/ui/model_mercury/res/simple_checkmark30.toif index 1e4001c284b94df88849bbb42864a02d9dbd4caf..c3a4544fd9349006fbbf3980781f210bf9987a52 100644 GIT binary patch literal 119 zcmV--0EquoPf14}03HBq0001EV4yqLSdYT}@gA9%@c%qA_tJkoWbW_(>`1(V|MQ_N z1rYJ+zb?#3AVc8qe-<eB|9vKghX4HtLv$Iw{pW>o5B|Te^!Ggzj4SZx|K9&dE<E`E Z|9?&d7btz7i2+&KAK8HduQ}))oB;S}JuUzM literal 78 zcmV-U0I~m6Pf14<022U00001EU_b}O%ut3v2RoEi(7^&_wN$_*B?w6h!z2?b7@?90 k9pX?)f%XbUsLsL;ai~t9Ak5gp4w$h(L73ADCD7ao0O08yu>b%7 diff --git a/core/embed/rust/src/ui/model_mercury/res/special_chars_group.png b/core/embed/rust/src/ui/model_mercury/res/special_chars_group.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0faec5a357f5d71164511e897b561b777422cf GIT binary patch literal 413 zcmV;O0b>4%P)<h;3K|Lk000e1NJLTq001%o000jN1ONa44AN9d00004XF*Lt006O% z3;baP00002VoOIv0RM-N%)bBt010qNS#tmY3ljhU3ljkVnw%H_00A*cL_t(I%dL~q zal$YVM4vM$KqaVyxP!O^N^l8ufJ>kQN=Q1uQ~;^KP=VdS%ZCgB8xniMX-2a%I^Evh zO7P@xt?mJ=)CS<?*(AIHCjj1ouh}H#s^-5Y<v@LlUT1aLUG3u*N+1w`XnBPuYlucL zs2adxsK@A|sHcvrqH)gxfYL2nh8;#uy%!xPPIMPkPgT;4`fKjy?bY=KZDyHau&}aC z<y~4B?q;bj094O@Of)|0sO?zwgE?fQ5g19&H{pajBV<RctZq#-x3U@+u~9dEsEu)O zT0FG<b0Dj~P^ykdR;jqbR)<Zvd`PmKK>}7O&*dGR!DzHq*G8j9bz?Ld&LpkP)oSmP z{1yFADQ+LYkMZeu{x_1dha1$B?4D3QMP$b@>w45>$MeBAtaM2A+_YVQ00000NkvXX Hu0mjf|4ywp literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/special_chars_group.toif b/core/embed/rust/src/ui/model_mercury/res/special_chars_group.toif new file mode 100644 index 0000000000000000000000000000000000000000..0250298f417885590794d8a1cc72cc2261e715e3 GIT binary patch literal 214 zcmV;{04e`ePf15I01p7l0001EV88@Fc^d9BU<1FoH|$5|f3}A*{;@x(N0#`c52g~z z{%3xlp9U9JVEQQUzzmZA4+7`m5)00MtN+ajWIXxz{@uTKeQ=2jAa%ST)`9s9e>f2~ z2(<jW@6HHfeT--L&xT~T!T<j(AX@25ywiVGrVgNe1|1-QOY?u}0x1Wu-T%2kniBql zB);oD><3Z>5D9jKL<3s^2goj^f0~cxD>44RclYkw|H%GS_|F2go&ll}St8&+;}>8U QoB;!5iGno@$G9070RDSqkpKVy literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/warning24.png b/core/embed/rust/src/ui/model_mercury/res/warning24.png index 2283b0d71863f6aba5acf004160e0505a0d752f4..bf4bc3955a65f1d16ee02a79c4baceeb668c802a 100644 GIT binary patch delta 236 zcmV<I02BX{1G)l`R(}A_Nkl<ZILoz@T@iyY5QINE6@UaBfP_e>gGvDjIA|TT5|Drc z1_cZXwhwe5M?#?w?BmYu{bV<AHj<E%qaX)*nxy%uR;p5id~_<e%QJO~p;NY3KB(5y zn-!Co?zia{GbOd<rN6_>`lz=1#|49VNPA^eAUS{w0Pc`y#bqMM4hix_5PA(vZ?(o1 zfR?*qUwSjHIOvxNZO~{W4Y<Z%!X_v*PU`H|)xXB2#=7s(oBbgO-$V6I`2LRfe2Wzg ms%%c<U(}HSE$z-1Jp~`;y=}73a#m>o0000<MNUMnLSTZMmTQXu delta 326 zcmV-M0lEIV0+R!fR(}B}Nkl<ZILp10!BN975Jmqg6rd7J1qmG}6#x~O4&sOzu7oR| zh@=Bj0q!6!!5yGffKvbx2RqKnGVuxaV$b@&-Thh_`0JoJ^{T{7OaXUr<x_bP$mL{# z43ecR-u25bz&fEll7T6#pFi3N2;{ZjLDFs4iy<9gK3Vm9U4H;ZVSnyIH_I9TL@R&h z!{`D4G&h`lXU$6s;9=}I#exC38Z;Y*T&oTsH7W<-XJ=r%J^(T09)f6^=XXQjt^mMS zl=38fn8F=J8cN-v>maIV-XqC=j!K|gocRiFP`o(6>TBk~ZF#MM#R0q4dh?iUU@w}s zdeshg%Dg3>T|YiFrcYy9nlEh+=pj6qJo@9z3TXh<*osY7v$Ki|8s!uv09B}Z#{VUL Y01@h3gKiZ5n*aa+07*qoM6N<$f)e<UrvLx| diff --git a/core/embed/rust/src/ui/model_mercury/res/warning24.toif b/core/embed/rust/src/ui/model_mercury/res/warning24.toif index e3f78be046bc2a6e0919e9c01ab3cf93e454b0e8..e8007c993ee55a1c91445f0c5aa64a9763fe17b9 100644 GIT binary patch literal 150 zcmV;H0BQeJPf14@02ly@0001EV89I=rgySHnT7xU|G&=;W-9#s4+Qs_K<rEZ|Id5% z|GzGX4HRZ|07@`2Fcbh4FfafK4hDt`Fg70p!xtFapMl{Aj9t&b@C(MC4`H(eK-k}b z)V!BKq939cWEV*9gZ~h_{_`?0G$7d}@E4-@KFn<|p>9KVGeZNA^Iihx#}!p9c!Gcd E08QmTLI3~& literal 130 zcmV-|0Db>dPf14@02lyv0001EV89I&f?b)QOoxt+jtUkqQ=q*A#9;)n3p+YIT01(# zL2RHflLAlzs+xfTNC0&dz}OrN3{5b$1_MJ2jBUZd&<bNmK-eI2K<s7^1ybk%(F?K* kq_+X4h8@)|WH*4^2GT2z?q&vucBpEwA45!;@B{$^02(qbJOBUy diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 38ae732175..c69d1c1977 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -63,7 +63,7 @@ pub const RADIUS: u8 = 0; // Full-size QR code. pub const QR_SIDE_MAX: u32 = 140; -// UI icons (greyscale). +// UI icons (white color). // 20x20 include_icon!( @@ -77,14 +77,14 @@ include_icon!(ICON_PAGE_UP, "model_mercury/res/page_up20.toif"); include_icon!(ICON_CANCEL, "model_mercury/res/cancel24.toif"); include_icon!(ICON_CHEVRON_RIGHT, "model_mercury/res/chevron_right24.toif"); include_icon!(ICON_DOWNLOAD, "model_mercury/res/download24.toif"); -include_icon!( - ICON_EXCLAMATION_MARK, - "model_mercury/res/exclamation_mark24.toif" -); -include_icon!(ICON_FIRE, "model_mercury/res/fire24.toif"); +include_icon!(ICON_KEY, "model_mercury/res/key20.toif"); include_icon!(ICON_QR_CODE, "model_mercury/res/qr_code24.toif"); include_icon!(ICON_REBOOT, "model_mercury/res/reboot24.toif"); include_icon!(ICON_WARNING, "model_mercury/res/warning24.toif"); +include_icon!( + ICON_SIMPLE_CHECKMARK24, + "model_mercury/res/simple_checkmark24.toif" +); // 30x30 include_icon!(ICON_AUTOFILL, "model_mercury/res/autofill30.toif"); @@ -92,7 +92,6 @@ include_icon!(ICON_CLOSE, "model_mercury/res/close30.toif"); include_icon!(ICON_CONFIRM_INPUT, "model_mercury/res/confirm_input30.toif"); include_icon!(ICON_DELETE, "model_mercury/res/delete30.toif"); include_icon!(ICON_MENU, "model_mercury/res/menu30.toif"); -include_icon!(ICON_KEY, "model_mercury/res/key30.toif"); include_icon!( ICON_SIMPLE_CHECKMARK, "model_mercury/res/simple_checkmark30.toif" @@ -124,6 +123,21 @@ include_icon!( include_icon!(DOT_SMALL, "model_mercury/res/scroll-small.toif"); include_icon!(ICON_PIN_BULLET, "model_mercury/res/pin_bullet6.toif"); +// Text arrows. +include_icon!(ICON_PAGE_NEXT, "model_mercury/res/page-next.toif"); +include_icon!(ICON_PAGE_PREV, "model_mercury/res/page-prev.toif"); + +// Large, three-color icons. +pub const WARN_COLOR: Color = ORANGE_LIGHT; +pub const INFO_COLOR: Color = GREY_LIGHT; +pub const SUCCESS_COLOR: Color = GREEN; +pub const ERROR_COLOR: Color = ORANGE_DIMMED; +include_icon!(IMAGE_FG_SUCCESS, "model_mercury/res/fg-check48.toif"); +include_icon!(IMAGE_BG_CIRCLE, "model_mercury/res/circle48.toif"); + +// Welcome screen. +include_icon!(ICON_LOGO, "model_mercury/res/lock_full.toif"); + // TODO remove TT icons: // Button icons. @@ -150,29 +164,16 @@ include_icon!(ICON_LOCK_BIG, "model_tt/res/lock24.toif"); include_icon!(ICON_COINJOIN, "model_tt/res/coinjoin16.toif"); include_icon!(ICON_MAGIC, "model_tt/res/magic.toif"); -// Text arrows. -include_icon!(ICON_PAGE_NEXT, "model_tt/res/page-next.toif"); -include_icon!(ICON_PAGE_PREV, "model_tt/res/page-prev.toif"); - -// Large, three-color icons. -pub const WARN_COLOR: Color = YELLOW; -pub const INFO_COLOR: Color = BLUE; -pub const SUCCESS_COLOR: Color = GREEN; -pub const ERROR_COLOR: Color = RED; include_icon!(IMAGE_FG_WARN, "model_tt/res/fg-warning48.toif"); -include_icon!(IMAGE_FG_SUCCESS, "model_tt/res/fg-check48.toif"); include_icon!(IMAGE_FG_ERROR, "model_tt/res/fg-error48.toif"); include_icon!(IMAGE_FG_INFO, "model_tt/res/fg-info48.toif"); include_icon!(IMAGE_FG_USER, "model_tt/res/fg-user48.toif"); -include_icon!(IMAGE_BG_CIRCLE, "model_tt/res/circle48.toif"); include_icon!(IMAGE_BG_OCTAGON, "model_tt/res/octagon48.toif"); // Non-square button backgrounds. include_icon!(IMAGE_BG_BACK_BTN, "model_tt/res/bg-back40.toif"); include_icon!(IMAGE_BG_BACK_BTN_TALL, "model_tt/res/bg-back52.toif"); -// Welcome screen. -include_icon!(ICON_LOGO, "model_tt/res/lock_full.toif"); include_icon!(ICON_LOGO_EMPTY, "model_tt/res/lock_empty.toif"); // Default homescreen @@ -252,7 +253,7 @@ pub const fn button_default() -> ButtonStyleSheet { font: Font::DEMIBOLD, text_color: GREY_LIGHT, button_color: BG, - icon_color: GREY_LIGHT, + icon_color: GREY, background_color: BG, }, active: &ButtonStyle { From a212b325fe84fcb18e2ab578704d4eb580f24017 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Sun, 12 May 2024 20:37:14 +0200 Subject: [PATCH 155/626] feat(core/ui): T3T1 send flow [no changelog] --- core/embed/rust/librust_qstr.h | 13 +- .../generated/translated_string.rs | 43 ++-- .../src/ui/model_mercury/component/frame.rs | 1 + .../ui/model_mercury/flow/confirm_output.rs | 158 ++++++++++++ .../ui/model_mercury/flow/confirm_summary.rs | 169 +++++++++++++ .../rust/src/ui/model_mercury/flow/mod.rs | 6 + .../rust/src/ui/model_mercury/flow/util.rs | 236 ++++++++++++++++++ .../embed/rust/src/ui/model_mercury/layout.rs | 26 +- core/embed/rust/src/ui/model_tr/layout.rs | 2 +- core/mocks/generated/trezorui2.pyi | 24 ++ core/mocks/trezortranslate_keys.pyi | 14 +- core/src/apps/bitcoin/sign_tx/approvers.py | 6 +- core/src/apps/bitcoin/sign_tx/bitcoin.py | 4 +- core/src/apps/bitcoin/sign_tx/decred.py | 4 +- core/src/apps/bitcoin/sign_tx/helpers.py | 11 +- core/src/apps/bitcoin/sign_tx/layout.py | 6 +- core/src/apps/eos/layout.py | 2 +- .../src/trezor/ui/layouts/mercury/__init__.py | 152 +++++------ core/src/trezor/ui/layouts/tr/__init__.py | 9 +- core/src/trezor/ui/layouts/tt/__init__.py | 13 +- core/tests/test_apps.bitcoin.approver.py | 5 +- ...pps.bitcoin.segwit.signtx.native_p2wpkh.py | 6 +- ...bitcoin.segwit.signtx.native_p2wpkh_grs.py | 6 +- ...ps.bitcoin.segwit.signtx.p2wpkh_in_p2sh.py | 8 +- ...itcoin.segwit.signtx.p2wpkh_in_p2sh_grs.py | 6 +- .../test_apps.bitcoin.signtx.fee_threshold.py | 2 +- core/tests/test_apps.bitcoin.signtx.py | 2 +- core/tests/test_apps.bitcoin.signtx_decred.py | 2 +- core/tests/test_apps.bitcoin.signtx_grs.py | 2 +- core/tools/translations/rules.json | 6 +- core/translations/cs.json | 8 +- core/translations/de.json | 8 +- core/translations/en.json | 16 +- core/translations/es.json | 8 +- core/translations/fr.json | 8 +- core/translations/order.json | 14 +- core/translations/signatures.json | 6 +- 37 files changed, 843 insertions(+), 169 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs create mode 100644 core/embed/rust/src/ui/model_mercury/flow/util.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 639ec4d910..e042e1e74c 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -19,7 +19,9 @@ static void _librust_qstrs(void) { MP_QSTR___dict__; MP_QSTR___name__; MP_QSTR_account; + MP_QSTR_account_items; MP_QSTR_account_label; + MP_QSTR_account_path; MP_QSTR_accounts; MP_QSTR_action; MP_QSTR_active; @@ -175,6 +177,7 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_reset_device; MP_QSTR_confirm_total; MP_QSTR_confirm_total__fee_rate; + MP_QSTR_confirm_total__fee_rate_colon; MP_QSTR_confirm_total__sending_from_account; MP_QSTR_confirm_total__title_fee; MP_QSTR_confirm_total__title_sending_from; @@ -205,6 +208,7 @@ static void _librust_qstrs(void) { MP_QSTR_experimental_mode__title; MP_QSTR_extra; MP_QSTR_fee_amount; + MP_QSTR_fee_items; MP_QSTR_fee_label; MP_QSTR_fee_rate_amount; MP_QSTR_fee_title; @@ -212,9 +216,11 @@ static void _librust_qstrs(void) { MP_QSTR_fingerprint; MP_QSTR_firmware_update__title; MP_QSTR_firmware_update__title_fingerprint; + MP_QSTR_flow_confirm_output; MP_QSTR_flow_confirm_reset_create; MP_QSTR_flow_confirm_reset_recover; MP_QSTR_flow_confirm_set_new_pin; + MP_QSTR_flow_confirm_summary; MP_QSTR_flow_get_address; MP_QSTR_flow_prompt_backup; MP_QSTR_flow_show_share_words; @@ -248,6 +254,7 @@ static void _librust_qstrs(void) { MP_QSTR_inputs__space; MP_QSTR_instructions__continue_in_app; MP_QSTR_instructions__hold_to_confirm; + MP_QSTR_instructions__hold_to_sign; MP_QSTR_instructions__swipe_up; MP_QSTR_instructions__tap_to_confirm; MP_QSTR_is_type_of; @@ -521,11 +528,15 @@ static void _librust_qstrs(void) { MP_QSTR_select_word; MP_QSTR_select_word_count; MP_QSTR_send__address_path; + MP_QSTR_send__cancel_sign; MP_QSTR_send__confirm_sending; MP_QSTR_send__from_multiple_accounts; + MP_QSTR_send__incl_transaction_fee; MP_QSTR_send__including_fee; MP_QSTR_send__maximum_fee; MP_QSTR_send__receiving_to_multisig; + MP_QSTR_send__send_from; + MP_QSTR_send__sign_transaction; MP_QSTR_send__title_confirm_sending; MP_QSTR_send__title_joint_transaction; MP_QSTR_send__title_receiving_to; @@ -534,6 +545,7 @@ static void _librust_qstrs(void) { MP_QSTR_send__title_sending_to; MP_QSTR_send__to_the_total_amount; MP_QSTR_send__total_amount; + MP_QSTR_send__total_amount_colon; MP_QSTR_send__transaction_id; MP_QSTR_send__you_are_contributing; MP_QSTR_share_words; @@ -833,7 +845,6 @@ static void _librust_qstrs(void) { MP_QSTR_eos__requirement; MP_QSTR_eos__sell_ram; MP_QSTR_eos__sender; - MP_QSTR_eos__sign_transaction; MP_QSTR_eos__threshold; MP_QSTR_eos__to; MP_QSTR_eos__transfer; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index a79e554bda..537d2b976b 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -351,9 +351,9 @@ pub enum TranslatedString { coinjoin__title_do_not_disconnect = 217, // "Do not disconnect your trezor!" coinjoin__title_progress = 218, // "Coinjoin in progress" coinjoin__waiting_for_others = 219, // "Waiting for others" - confirm_total__fee_rate = 220, // "Fee rate:" + confirm_total__fee_rate_colon = 220, // "Fee rate:" confirm_total__sending_from_account = 221, // "Sending from account:" - confirm_total__title_fee = 222, // "Fee information" + confirm_total__title_fee = 222, // "Fee info" confirm_total__title_sending_from = 223, // "Sending from" debug__loading_seed = 224, // "Loading seed" debug__loading_seed_not_recommended = 225, // "Loading private seed is not recommended." @@ -420,8 +420,7 @@ pub enum TranslatedString { eos__sell_ram = 258, // "Sell RAM" #[cfg(feature = "universal_fw")] eos__sender = 259, // "Sender:" - #[cfg(feature = "universal_fw")] - eos__sign_transaction = 260, // "Sign transaction" + send__sign_transaction = 260, // "Sign transaction" #[cfg(feature = "universal_fw")] eos__threshold = 261, // "Threshold:" #[cfg(feature = "universal_fw")] @@ -940,7 +939,7 @@ pub enum TranslatedString { send__title_sending_amount = 650, // "Sending amount" send__title_sending_to = 651, // "Sending to" send__to_the_total_amount = 652, // "To the total amount:" - send__total_amount = 653, // "Total amount:" + send__total_amount_colon = 653, // "Total amount:" send__transaction_id = 654, // "Transaction ID:" send__you_are_contributing = 655, // "You are contributing:" share_words__words_in_order = 656, // " words in order." @@ -1271,6 +1270,12 @@ pub enum TranslatedString { pin__cancel_description = 870, // "Continue without PIN" pin__cancel_info = 871, // "Without a PIN, anyone can access this device." pin__cancel_setup = 872, // "Cancel PIN setup" + send__cancel_sign = 873, // "Cancel sign" + send__send_from = 874, // "Send from" + instructions__hold_to_sign = 875, // "Hold to sign" + confirm_total__fee_rate = 876, // "Fee rate" + send__incl_transaction_fee = 877, // "incl. Transaction fee" + send__total_amount = 878, // "Total amount" } impl TranslatedString { @@ -1617,9 +1622,9 @@ impl TranslatedString { Self::coinjoin__title_do_not_disconnect => "Do not disconnect your trezor!", Self::coinjoin__title_progress => "Coinjoin in progress", Self::coinjoin__waiting_for_others => "Waiting for others", - Self::confirm_total__fee_rate => "Fee rate:", + Self::confirm_total__fee_rate_colon => "Fee rate:", Self::confirm_total__sending_from_account => "Sending from account:", - Self::confirm_total__title_fee => "Fee information", + Self::confirm_total__title_fee => "Fee info", Self::confirm_total__title_sending_from => "Sending from", Self::debug__loading_seed => "Loading seed", Self::debug__loading_seed_not_recommended => "Loading private seed is not recommended.", @@ -1686,8 +1691,7 @@ impl TranslatedString { Self::eos__sell_ram => "Sell RAM", #[cfg(feature = "universal_fw")] Self::eos__sender => "Sender:", - #[cfg(feature = "universal_fw")] - Self::eos__sign_transaction => "Sign transaction", + Self::send__sign_transaction => "Sign transaction", #[cfg(feature = "universal_fw")] Self::eos__threshold => "Threshold:", #[cfg(feature = "universal_fw")] @@ -2206,7 +2210,7 @@ impl TranslatedString { Self::send__title_sending_amount => "Sending amount", Self::send__title_sending_to => "Sending to", Self::send__to_the_total_amount => "To the total amount:", - Self::send__total_amount => "Total amount:", + Self::send__total_amount_colon => "Total amount:", Self::send__transaction_id => "Transaction ID:", Self::send__you_are_contributing => "You are contributing:", Self::share_words__words_in_order => " words in order.", @@ -2537,6 +2541,12 @@ impl TranslatedString { Self::pin__cancel_description => "Continue without PIN", Self::pin__cancel_info => "Without a PIN, anyone can access this device.", Self::pin__cancel_setup => "Cancel PIN setup", + Self::send__cancel_sign => "Cancel sign", + Self::send__send_from => "Send from", + Self::instructions__hold_to_sign => "Hold to sign", + Self::confirm_total__fee_rate => "Fee rate", + Self::send__incl_transaction_fee => "incl. Transaction fee", + Self::send__total_amount => "Total amount", } } @@ -2884,7 +2894,7 @@ impl TranslatedString { Qstr::MP_QSTR_coinjoin__title_do_not_disconnect => Some(Self::coinjoin__title_do_not_disconnect), Qstr::MP_QSTR_coinjoin__title_progress => Some(Self::coinjoin__title_progress), Qstr::MP_QSTR_coinjoin__waiting_for_others => Some(Self::coinjoin__waiting_for_others), - Qstr::MP_QSTR_confirm_total__fee_rate => Some(Self::confirm_total__fee_rate), + Qstr::MP_QSTR_confirm_total__fee_rate_colon => Some(Self::confirm_total__fee_rate_colon), Qstr::MP_QSTR_confirm_total__sending_from_account => Some(Self::confirm_total__sending_from_account), Qstr::MP_QSTR_confirm_total__title_fee => Some(Self::confirm_total__title_fee), Qstr::MP_QSTR_confirm_total__title_sending_from => Some(Self::confirm_total__title_sending_from), @@ -2953,8 +2963,7 @@ impl TranslatedString { Qstr::MP_QSTR_eos__sell_ram => Some(Self::eos__sell_ram), #[cfg(feature = "universal_fw")] Qstr::MP_QSTR_eos__sender => Some(Self::eos__sender), - #[cfg(feature = "universal_fw")] - Qstr::MP_QSTR_eos__sign_transaction => Some(Self::eos__sign_transaction), + Qstr::MP_QSTR_send__sign_transaction => Some(Self::send__sign_transaction), #[cfg(feature = "universal_fw")] Qstr::MP_QSTR_eos__threshold => Some(Self::eos__threshold), #[cfg(feature = "universal_fw")] @@ -3473,7 +3482,7 @@ impl TranslatedString { Qstr::MP_QSTR_send__title_sending_amount => Some(Self::send__title_sending_amount), Qstr::MP_QSTR_send__title_sending_to => Some(Self::send__title_sending_to), Qstr::MP_QSTR_send__to_the_total_amount => Some(Self::send__to_the_total_amount), - Qstr::MP_QSTR_send__total_amount => Some(Self::send__total_amount), + Qstr::MP_QSTR_send__total_amount_colon => Some(Self::send__total_amount_colon), Qstr::MP_QSTR_send__transaction_id => Some(Self::send__transaction_id), Qstr::MP_QSTR_send__you_are_contributing => Some(Self::send__you_are_contributing), Qstr::MP_QSTR_share_words__words_in_order => Some(Self::share_words__words_in_order), @@ -3804,6 +3813,12 @@ impl TranslatedString { Qstr::MP_QSTR_pin__cancel_description => Some(Self::pin__cancel_description), Qstr::MP_QSTR_pin__cancel_info => Some(Self::pin__cancel_info), Qstr::MP_QSTR_pin__cancel_setup => Some(Self::pin__cancel_setup), + Qstr::MP_QSTR_send__cancel_sign => Some(Self::send__cancel_sign), + Qstr::MP_QSTR_send__send_from => Some(Self::send__send_from), + Qstr::MP_QSTR_instructions__hold_to_sign => Some(Self::instructions__hold_to_sign), + Qstr::MP_QSTR_confirm_total__fee_rate => Some(Self::confirm_total__fee_rate), + Qstr::MP_QSTR_send__incl_transaction_fee => Some(Self::send__incl_transaction_fee), + Qstr::MP_QSTR_send__total_amount => Some(Self::send__total_amount), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 26c50e9d56..b2049fab07 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -104,6 +104,7 @@ where pub fn with_warning_button(self) -> Self { self.with_button(theme::ICON_WARNING, CancelInfoConfirmMsg::Info, false) + .button_styled(theme::button_danger()) } pub fn button_styled(mut self, style: ButtonStyleSheet) -> Self { diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs new file mode 100644 index 0000000000..9e55a15978 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -0,0 +1,158 @@ +use crate::{ + error, + micropython::qstr::Qstr, + strutil::TString, + translations::TR, + ui::{ + component::{ComponentExt, SwipeDirection}, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + }, +}; + +use super::super::{ + component::{ + AddressDetails, Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + }, + theme, +}; + +use super::util::ConfirmBlobParams; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum ConfirmOutput { + Address, + Amount, + // Tap, + Menu, + AccountInfo, + CancelTap, +} + +impl FlowState for ConfirmOutput { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (ConfirmOutput::Address | ConfirmOutput::Amount, SwipeDirection::Left) => { + Decision::Goto(ConfirmOutput::Menu, direction) + } + (ConfirmOutput::Address, SwipeDirection::Up) => { + Decision::Goto(ConfirmOutput::Amount, direction) + } + (ConfirmOutput::Amount, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + (ConfirmOutput::Amount, SwipeDirection::Down) => { + Decision::Goto(ConfirmOutput::Address, direction) + } + (ConfirmOutput::Menu, SwipeDirection::Right) => { + Decision::Goto(ConfirmOutput::Address, direction) + } + (ConfirmOutput::Menu, SwipeDirection::Left) => { + Decision::Goto(ConfirmOutput::AccountInfo, direction) + } + (ConfirmOutput::AccountInfo | ConfirmOutput::CancelTap, SwipeDirection::Right) => { + Decision::Goto(ConfirmOutput::Menu, direction) + } + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (_, FlowMsg::Info) => Decision::Goto(ConfirmOutput::Menu, SwipeDirection::Left), + (ConfirmOutput::Menu, FlowMsg::Choice(0)) => { + Decision::Goto(ConfirmOutput::AccountInfo, SwipeDirection::Left) + } + (ConfirmOutput::Menu, FlowMsg::Choice(1)) => { + Decision::Goto(ConfirmOutput::CancelTap, SwipeDirection::Left) + } + (ConfirmOutput::Menu, FlowMsg::Cancelled) => { + Decision::Goto(ConfirmOutput::Address, SwipeDirection::Right) + } + (ConfirmOutput::CancelTap, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Cancelled), + (_, FlowMsg::Cancelled) => Decision::Goto(ConfirmOutput::Menu, SwipeDirection::Right), + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_confirm_output(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmOutput::new_obj) } +} + +impl ConfirmOutput { + const EXTRA_PADDING: i16 = 6; + + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: Option<TString> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; + let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; + let account_path: Option<TString> = + kwargs.get(Qstr::MP_QSTR_account_path)?.try_into_option()?; + + let address: Obj = kwargs.get(Qstr::MP_QSTR_address)?; + let amount: Obj = kwargs.get(Qstr::MP_QSTR_amount)?; + + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + let text_mono: bool = kwargs.get_or(Qstr::MP_QSTR_text_mono, true)?; + + // Address + let content_address = ConfirmBlobParams::new(TR::words__address.into(), address, None) + .with_subtitle(title) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_chunkify(chunkify) + .with_text_mono(text_mono) + .into_layout()?; + // .one_button_request(ButtonRequestCode::ConfirmOutput, br_type); + + // Amount + let content_amount = ConfirmBlobParams::new(TR::words__amount.into(), amount, None) + .with_subtitle(title) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_text_mono(text_mono) + .into_layout()?; + // .one_button_request(ButtonRequestCode::ConfirmOutput, br_type); + + // Menu + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty() + .item(theme::ICON_CHEVRON_RIGHT, "Account info".into()) + .danger(theme::ICON_CANCEL, "Cancel sign".into()), + ) + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + // AccountInfo + let ad = AddressDetails::new(TR::send__send_from.into(), account, account_path)?; + let content_account = SwipePage::horizontal(ad).map(|_| Some(FlowMsg::Cancelled)); + + // CancelTap + let content_cancel_tap = Frame::left_aligned( + TR::send__cancel_sign.into(), + PromptScreen::new_tap_to_cancel(), + ) + .with_cancel_button() + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let store = flow_store() + .add(content_address)? + .add(content_amount)? + .add(content_menu)? + .add(content_account)? + .add(content_cancel_tap)?; + let res = SwipeFlow::new(ConfirmOutput::Address, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs new file mode 100644 index 0000000000..2b465394cd --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -0,0 +1,169 @@ +use crate::{ + error, + micropython::{iter::IterBuf, qstr::Qstr}, + strutil::TString, + translations::TR, + ui::{ + component::{ComponentExt, SwipeDirection}, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +use super::util::ShowInfoParams; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum ConfirmSummary { + Summary, + Hold, + Menu, + FeeInfo, + AccountInfo, + CancelTap, +} + +impl FlowState for ConfirmSummary { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (ConfirmSummary::Summary | ConfirmSummary::Hold, SwipeDirection::Left) => { + Decision::Goto(ConfirmSummary::Menu, direction) + } + (ConfirmSummary::Summary, SwipeDirection::Up) => { + Decision::Goto(ConfirmSummary::Hold, direction) + } + (ConfirmSummary::Hold, SwipeDirection::Down) => { + Decision::Goto(ConfirmSummary::Summary, direction) + } + (ConfirmSummary::Menu, SwipeDirection::Right) => { + Decision::Goto(ConfirmSummary::Summary, direction) + } + (ConfirmSummary::Menu, SwipeDirection::Left) => { + Decision::Goto(ConfirmSummary::FeeInfo, direction) + } + ( + ConfirmSummary::AccountInfo | ConfirmSummary::FeeInfo | ConfirmSummary::CancelTap, + SwipeDirection::Right, + ) => Decision::Goto(ConfirmSummary::Menu, direction), + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (_, FlowMsg::Info) => Decision::Goto(ConfirmSummary::Menu, SwipeDirection::Left), + (ConfirmSummary::Hold, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Confirmed), + (ConfirmSummary::Menu, FlowMsg::Choice(0)) => { + Decision::Goto(ConfirmSummary::FeeInfo, SwipeDirection::Left) + } + (ConfirmSummary::Menu, FlowMsg::Choice(1)) => { + Decision::Goto(ConfirmSummary::AccountInfo, SwipeDirection::Left) + } + (ConfirmSummary::Menu, FlowMsg::Choice(2)) => { + Decision::Goto(ConfirmSummary::CancelTap, SwipeDirection::Left) + } + (ConfirmSummary::Menu, FlowMsg::Cancelled) => { + Decision::Goto(ConfirmSummary::Summary, SwipeDirection::Right) + } + (ConfirmSummary::CancelTap, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Cancelled), + (_, FlowMsg::Cancelled) => Decision::Goto(ConfirmSummary::Menu, SwipeDirection::Right), + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_confirm_summary(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmSummary::new_obj) } +} + +impl ConfirmSummary { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; + let account_items: Obj = kwargs.get(Qstr::MP_QSTR_account_items)?; + let fee_items: Obj = kwargs.get(Qstr::MP_QSTR_fee_items)?; + + // Summary + let mut summary = ShowInfoParams::new(title) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None); + for pair in IterBuf::new().try_iterate(items)? { + let [label, value]: [TString; 2] = util::iter_into_array(pair)?; + summary = unwrap!(summary.add(label, value)); + } + let content_summary = summary.into_layout()?; + + // Hold to confirm + let content_hold = Frame::left_aligned( + TR::send__sign_transaction.into(), + PromptScreen::new_hold_to_confirm(), + ) + .with_menu_button() + .with_footer(TR::instructions__hold_to_sign.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Info), + }); + + // Menu + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty() + .item(theme::ICON_CHEVRON_RIGHT, "Fee info".into()) + .item(theme::ICON_CHEVRON_RIGHT, "Account info".into()) + .danger(theme::ICON_CANCEL, "Cancel sign".into()), + ) + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + // FeeInfo + let mut fee = ShowInfoParams::new(TR::confirm_total__title_fee.into()).with_cancel_button(); + for pair in IterBuf::new().try_iterate(fee_items)? { + let [label, value]: [TString; 2] = util::iter_into_array(pair)?; + fee = unwrap!(fee.add(label, value)); + } + let content_fee = fee.into_layout()?; + + // AccountInfo + let mut account = ShowInfoParams::new(TR::send__send_from.into()).with_cancel_button(); + for pair in IterBuf::new().try_iterate(account_items)? { + let [label, value]: [TString; 2] = util::iter_into_array(pair)?; + account = unwrap!(account.add(label, value)); + } + let content_account = account.into_layout()?; + + // CancelTap + let content_cancel_tap = Frame::left_aligned( + TR::send__cancel_sign.into(), + PromptScreen::new_tap_to_cancel(), + ) + .with_cancel_button() + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let store = flow_store() + .add(content_summary)? + .add(content_hold)? + .add(content_menu)? + .add(content_fee)? + .add(content_account)? + .add(content_cancel_tap)?; + let res = SwipeFlow::new(ConfirmSummary::Summary, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index cf7533821b..ba950ea663 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,16 +1,22 @@ pub mod confirm_action; +pub mod confirm_output; pub mod confirm_reset_create; pub mod confirm_reset_recover; pub mod confirm_set_new_pin; +pub mod confirm_summary; pub mod get_address; pub mod prompt_backup; pub mod show_share_words; pub mod warning_hi_prio; pub use confirm_action::new_confirm_action; +mod util; + +pub use confirm_output::new_confirm_output; pub use confirm_reset_create::ConfirmResetCreate; pub use confirm_reset_recover::ConfirmResetRecover; pub use confirm_set_new_pin::SetNewPin; +pub use confirm_summary::new_confirm_summary; pub use get_address::GetAddress; pub use prompt_backup::PromptBackup; pub use show_share_words::ShowShareWords; diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/model_mercury/flow/util.rs new file mode 100644 index 0000000000..41c41fa7bc --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/util.rs @@ -0,0 +1,236 @@ +use super::super::{ + component::{Frame, FrameMsg}, + theme, +}; +use crate::{ + error::Error, + maybe_trace::MaybeTrace, + micropython::obj::Obj, + strutil::TString, + ui::{ + component::{ + base::ComponentExt, + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, VecExt}, + Component, + }, + flow::{FlowMsg, Swipable, SwipePage}, + layout::util::ConfirmBlob, + }, +}; +use heapless::Vec; + +pub struct ConfirmBlobParams { + title: TString<'static>, + subtitle: Option<TString<'static>>, + footer_instruction: Option<TString<'static>>, + footer_description: Option<TString<'static>>, + data: Obj, + description: Option<TString<'static>>, + extra: Option<TString<'static>>, + menu_button: bool, + chunkify: bool, + text_mono: bool, +} + +impl ConfirmBlobParams { + pub const fn new( + title: TString<'static>, + data: Obj, + description: Option<TString<'static>>, + ) -> Self { + Self { + title, + subtitle: None, + footer_instruction: None, + footer_description: None, + data, + description, + extra: None, + menu_button: false, + chunkify: false, + text_mono: true, + } + } + + pub const fn with_extra(mut self, extra: Option<TString<'static>>) -> Self { + self.extra = extra; + self + } + + pub const fn with_subtitle(mut self, subtitle: Option<TString<'static>>) -> Self { + self.subtitle = subtitle; + self + } + + pub const fn with_menu_button(mut self) -> Self { + self.menu_button = true; + self + } + + pub const fn with_footer( + mut self, + instruction: TString<'static>, + description: Option<TString<'static>>, + ) -> Self { + self.footer_instruction = Some(instruction); + self.footer_description = description; + self + } + + pub const fn with_chunkify(mut self, chunkify: bool) -> Self { + self.chunkify = chunkify; + self + } + + pub const fn with_text_mono(mut self, text_mono: bool) -> Self { + self.text_mono = text_mono; + self + } + + pub fn into_layout( + self, + ) -> Result<impl Component<Msg = FlowMsg> + Swipable + MaybeTrace, Error> { + let paragraphs = ConfirmBlob { + description: self.description.unwrap_or("".into()), + extra: self.extra.unwrap_or("".into()), + data: self.data.try_into()?, + description_font: &theme::TEXT_NORMAL, + extra_font: &theme::TEXT_DEMIBOLD, + data_font: if self.chunkify { + let data: TString = self.data.try_into()?; + theme::get_chunkified_text_style(data.len()) + } else if self.text_mono { + &theme::TEXT_MONO + } else { + &theme::TEXT_NORMAL + }, + } + .into_paragraphs(); + + let page = SwipePage::vertical(paragraphs); + let mut frame = Frame::left_aligned(self.title, page); + if let Some(subtitle) = self.subtitle { + frame = frame.with_subtitle(subtitle); + } + if self.menu_button { + frame = frame.with_menu_button(); + } + if let Some(instruction) = self.footer_instruction { + frame = frame.with_footer(instruction, self.footer_description); + } + Ok(frame.map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info))) + } +} + +pub struct ShowInfoParams { + title: TString<'static>, + subtitle: Option<TString<'static>>, + menu_button: bool, + cancel_button: bool, + footer_instruction: Option<TString<'static>>, + footer_description: Option<TString<'static>>, + chunkify: bool, + items: Vec<(TString<'static>, TString<'static>), 4>, +} + +impl ShowInfoParams { + pub const fn new(title: TString<'static>) -> Self { + Self { + title, + subtitle: None, + menu_button: false, + cancel_button: false, + footer_instruction: None, + footer_description: None, + chunkify: false, + items: Vec::new(), + } + } + + pub fn add(mut self, key: TString<'static>, value: TString<'static>) -> Option<Self> { + if self.items.push((key, value)).is_ok() { + Some(self) + } else { + None + } + } + + pub const fn with_subtitle(mut self, subtitle: Option<TString<'static>>) -> Self { + self.subtitle = subtitle; + self + } + + pub const fn with_menu_button(mut self) -> Self { + self.menu_button = true; + self + } + + pub const fn with_cancel_button(mut self) -> Self { + self.cancel_button = true; + self + } + + pub const fn with_footer( + mut self, + instruction: TString<'static>, + description: Option<TString<'static>>, + ) -> Self { + self.footer_instruction = Some(instruction); + self.footer_description = description; + self + } + + pub const fn with_chunkify(mut self, chunkify: bool) -> Self { + self.chunkify = chunkify; + self + } + + pub fn into_layout( + self, + ) -> Result<impl Component<Msg = FlowMsg> + Swipable + MaybeTrace, Error> { + let mut paragraphs = ParagraphVecShort::new(); + let mut first: bool = true; + for item in self.items { + // FIXME: padding: + if !first { + paragraphs.add(Paragraph::new::<TString<'static>>( + &theme::TEXT_SUB_GREY, + " ".into(), + )); + } + first = false; + paragraphs.add(Paragraph::new(&theme::TEXT_SUB_GREY, item.0).no_break()); + if self.chunkify { + paragraphs.add(Paragraph::new( + theme::get_chunkified_text_style(item.1.len()), + item.1, + )); + } else { + paragraphs.add(Paragraph::new(&theme::TEXT_MONO_GREY_LIGHT, item.1)); + } + } + + let mut frame = Frame::left_aligned( + self.title, + SwipePage::vertical(paragraphs.into_paragraphs()), + ); + if let Some(subtitle) = self.subtitle { + frame = frame.with_subtitle(subtitle); + } + if self.cancel_button { + frame = frame.with_cancel_button(); + } else if self.menu_button { + frame = frame.with_menu_button(); + } + if let Some(instruction) = self.footer_instruction { + frame = frame.with_footer(instruction, self.footer_description); + } + Ok(frame.map(move |msg| { + matches!(msg, FrameMsg::Button(_)).then_some(if self.cancel_button { + FlowMsg::Cancelled + } else { + FlowMsg::Info + }) + })) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 5e498151f0..9cbf6bfbd5 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -893,6 +893,7 @@ extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; + let action: Option<TString> = kwargs.get(Qstr::MP_QSTR_button)?.try_into_option()?; let content = SwipeUpScreen::new(Paragraphs::new([ Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description), @@ -901,8 +902,7 @@ extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map let obj = LayoutObj::new( Frame::left_aligned(title, content) .with_warning_button() - .button_styled(theme::button_warning_low()) - .with_footer(TR::instructions__swipe_up.into(), None), + .with_footer(TR::instructions__swipe_up.into(), action), )?; Ok(obj.into()) }; @@ -1992,6 +1992,28 @@ pub static mp_module_trezorui2: Module = obj_module! { /// ) -> LayoutObj[UiResult]: /// """Warning modal with multiple steps to confirm.""" Qstr::MP_QSTR_flow_warning_hi_prio => obj_fn_kw!(0, flow::warning_hi_prio::new_warning_hi_prio).as_obj(), + + /// def flow_confirm_output( + /// *, + /// title: str | None, + /// address: str, + /// amount: str, + /// chunkify: bool, + /// account: str | None, + /// account_path: str | None, + /// ) -> LayoutObj[UiResult]: + /// """Confirm recipient.""" + Qstr::MP_QSTR_flow_confirm_output => obj_fn_kw!(0, flow::new_confirm_output).as_obj(), + + /// def flow_confirm_summary( + /// *, + /// title: str, + /// items: Iterable[tuple[str, str]], + /// account_items: Iterable[tuple[str, str]], + /// fee_items: Iterable[tuple[str, str]], + /// ) -> LayoutObj[UiResult]: + /// """Total summary and hold to confirm.""" + Qstr::MP_QSTR_flow_confirm_summary => obj_fn_kw!(0, flow::new_confirm_summary).as_obj(), }; #[cfg(test)] diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 4749e61a3f..bc56bd6570 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -658,7 +658,7 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma .newline() .newline() .newline_half() - .text_bold(TR::confirm_total__fee_rate) + .text_bold(TR::confirm_total__fee_rate_colon) .newline() .text_mono(fee_rate_amount); diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 97f0eef915..94e8f6b6f0 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -549,6 +549,30 @@ def flow_warning_hi_prio( value: str = "", ) -> LayoutObj[UiResult]: """Warning modal with multiple steps to confirm.""" + + +# rust/src/ui/model_mercury/layout.rs +def flow_confirm_output( + *, + title: str | None, + address: str, + amount: str, + chunkify: bool, + account: str | None, + account_path: str | None, +) -> LayoutObj[UiResult]: + """Confirm recipient.""" + + +# rust/src/ui/model_mercury/layout.rs +def flow_confirm_summary( + *, + title: str, + items: Iterable[tuple[str, str]], + account_items: Iterable[tuple[str, str]], + fee_items: Iterable[tuple[str, str]], +) -> LayoutObj[UiResult]: + """Total summary and hold to confirm.""" CONFIRMED: UiResult CANCELLED: UiResult INFO: UiResult diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index f0c83db410..3e9bb6e33d 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -235,9 +235,10 @@ class TR: coinjoin__title_do_not_disconnect: str = "Do not disconnect your trezor!" coinjoin__title_progress: str = "Coinjoin in progress" coinjoin__waiting_for_others: str = "Waiting for others" - confirm_total__fee_rate: str = "Fee rate:" + confirm_total__fee_rate: str = "Fee rate" + confirm_total__fee_rate_colon: str = "Fee rate:" confirm_total__sending_from_account: str = "Sending from account:" - confirm_total__title_fee: str = "Fee information" + confirm_total__title_fee: str = "Fee info" confirm_total__title_sending_from: str = "Sending from" debug__loading_seed: str = "Loading seed" debug__loading_seed_not_recommended: str = "Loading private seed is not recommended." @@ -275,7 +276,6 @@ class TR: eos__requirement: str = "Requirement:" eos__sell_ram: str = "Sell RAM" eos__sender: str = "Sender:" - eos__sign_transaction: str = "Sign transaction" eos__threshold: str = "Threshold:" eos__to: str = "To:" eos__transfer: str = "Transfer:" @@ -364,6 +364,7 @@ class TR: inputs__space: str = "SPACE" instructions__continue_in_app: str = "Continue in the app" instructions__hold_to_confirm: str = "Hold to confirm" + instructions__hold_to_sign: str = "Hold to sign" instructions__swipe_up: str = "Swipe up" instructions__tap_to_confirm: str = "Tap to confirm" joint__title: str = "Joint transaction" @@ -675,11 +676,15 @@ class TR: sd_card__wanna_format: str = "Do you really want to format the SD card?" sd_card__wrong_sd_card: str = "Wrong SD card." send__address_path: str = "address path" + send__cancel_sign: str = "Cancel sign" send__confirm_sending: str = "Sending amount" send__from_multiple_accounts: str = "Sending from multiple accounts." + send__incl_transaction_fee: str = "incl. Transaction fee" send__including_fee: str = "Including fee:" send__maximum_fee: str = "Maximum fee:" send__receiving_to_multisig: str = "Receiving to a multisig address." + send__send_from: str = "Send from" + send__sign_transaction: str = "Sign transaction" send__title_confirm_sending: str = "Confirm sending" send__title_joint_transaction: str = "Joint transaction" send__title_receiving_to: str = "Receiving to" @@ -687,7 +692,8 @@ class TR: send__title_sending_amount: str = "Sending amount" send__title_sending_to: str = "Sending to" send__to_the_total_amount: str = "To the total amount:" - send__total_amount: str = "Total amount:" + send__total_amount: str = "Total amount" + send__total_amount_colon: str = "Total amount:" send__transaction_id: str = "Transaction ID:" send__you_are_contributing: str = "You are contributing:" share_words__words_in_order: str = " words in order." diff --git a/core/src/apps/bitcoin/sign_tx/approvers.py b/core/src/apps/bitcoin/sign_tx/approvers.py index bdbadf8042..38078478ba 100644 --- a/core/src/apps/bitcoin/sign_tx/approvers.py +++ b/core/src/apps/bitcoin/sign_tx/approvers.py @@ -121,6 +121,7 @@ async def add_external_output( self, txo: TxOutput, script_pubkey: bytes, + tx_info: TxInfo | None, orig_txo: TxOutput | None = None, ) -> None: await self._add_output(txo, script_pubkey) @@ -193,11 +194,12 @@ async def add_external_output( self, txo: TxOutput, script_pubkey: bytes, + tx_info: TxInfo | None, orig_txo: TxOutput | None = None, ) -> None: from trezor.enums import OutputScriptType - await super().add_external_output(txo, script_pubkey, orig_txo) + await super().add_external_output(txo, script_pubkey, tx_info, orig_txo) if orig_txo: if txo.amount < orig_txo.amount: @@ -230,6 +232,7 @@ async def add_external_output( "Adding new OP_RETURN outputs in replacement transactions is not supported." ) elif txo.payment_req_index is None or self.show_payment_req_details: + source_path = tx_info.wallet_path.get_path() if tx_info else None # Ask user to confirm output, unless it is part of a payment # request, which gets confirmed separately. await helpers.confirm_output( @@ -238,6 +241,7 @@ async def add_external_output( self.amount_unit, self.external_output_index, self.chunkify, + source_path, ) self.external_output_index += 1 diff --git a/core/src/apps/bitcoin/sign_tx/bitcoin.py b/core/src/apps/bitcoin/sign_tx/bitcoin.py index ec31da941e..08c3aea391 100644 --- a/core/src/apps/bitcoin/sign_tx/bitcoin.py +++ b/core/src/apps/bitcoin/sign_tx/bitcoin.py @@ -530,7 +530,9 @@ async def approve_output( # Output is change and does not need approval. await approver.add_change_output(txo, script_pubkey) else: - await approver.add_external_output(txo, script_pubkey, orig_txo) + await approver.add_external_output( + txo, script_pubkey, self.tx_info, orig_txo + ) self.tx_info.add_output(txo, script_pubkey) diff --git a/core/src/apps/bitcoin/sign_tx/decred.py b/core/src/apps/bitcoin/sign_tx/decred.py index 5ba638d99f..6c842f38ba 100644 --- a/core/src/apps/bitcoin/sign_tx/decred.py +++ b/core/src/apps/bitcoin/sign_tx/decred.py @@ -92,7 +92,9 @@ async def add_decred_sstx_submission( ) -> None: # NOTE: The following calls Approver.add_external_output(), not BasicApprover.add_external_output(). # This is needed to skip calling helpers.confirm_output(), which is what BasicApprover would do. - await super(BasicApprover, self).add_external_output(txo, script_pubkey, None) + await super(BasicApprover, self).add_external_output( + txo, script_pubkey, None, None + ) await helpers.confirm_decred_sstx_submission(txo, self.coin, self.amount_unit) diff --git a/core/src/apps/bitcoin/sign_tx/helpers.py b/core/src/apps/bitcoin/sign_tx/helpers.py index a27ef12387..5fa6f0a8a5 100644 --- a/core/src/apps/bitcoin/sign_tx/helpers.py +++ b/core/src/apps/bitcoin/sign_tx/helpers.py @@ -45,12 +45,14 @@ def __init__( amount_unit: AmountUnit, output_index: int, chunkify: bool, + address_n: Bip32Path | None, ): self.output = output self.coin = coin self.amount_unit = amount_unit self.output_index = output_index self.chunkify = chunkify + self.address_n = address_n def confirm_dialog(self) -> Awaitable[Any]: return layout.confirm_output( @@ -59,6 +61,7 @@ def confirm_dialog(self) -> Awaitable[Any]: self.amount_unit, self.output_index, self.chunkify, + self.address_n, ) @@ -241,8 +244,12 @@ def confirm_dialog(self) -> Awaitable[Any]: return layout.confirm_multiple_accounts() -def confirm_output(output: TxOutput, coin: CoinInfo, amount_unit: AmountUnit, output_index: int, chunkify: bool) -> Awaitable[None]: # type: ignore [awaitable-return-type] - return (yield UiConfirmOutput(output, coin, amount_unit, output_index, chunkify)) # type: ignore [awaitable-return-type] +def confirm_output(output: TxOutput, coin: CoinInfo, amount_unit: AmountUnit, output_index: int, chunkify: bool, address_n: Bip32Path | None) -> Awaitable[None]: # type: ignore [awaitable-return-type] + return ( + yield UiConfirmOutput( # type: ignore [awaitable-return-type] + output, coin, amount_unit, output_index, chunkify, address_n + ) + ) def confirm_decred_sstx_submission(output: TxOutput, coin: CoinInfo, amount_unit: AmountUnit) -> Awaitable[None]: # type: ignore [awaitable-return-type] diff --git a/core/src/apps/bitcoin/sign_tx/layout.py b/core/src/apps/bitcoin/sign_tx/layout.py index fdb55141ef..cf4044cc8a 100644 --- a/core/src/apps/bitcoin/sign_tx/layout.py +++ b/core/src/apps/bitcoin/sign_tx/layout.py @@ -62,6 +62,7 @@ async def confirm_output( amount_unit: AmountUnit, output_index: int, chunkify: bool, + address_n: Bip32Path | None, ) -> None: from trezor.enums import OutputScriptType @@ -119,6 +120,8 @@ async def confirm_output( address_label=address_label, output_index=output_index, chunkify=chunkify, + source_account=account_label(coin, address_n), + source_account_path=address_n_to_str(address_n) if address_n else None, ) await layout @@ -245,7 +248,8 @@ async def confirm_total( format_coin_amount(spending, coin, amount_unit), format_coin_amount(fee, coin, amount_unit), fee_rate_amount=format_fee_rate(fee_rate, coin) if fee_rate >= 0 else None, - account_label=account_label(coin, address_n), + source_account=account_label(coin, address_n), + source_account_path=address_n_to_str(address_n) if address_n else None, ) diff --git a/core/src/apps/eos/layout.py b/core/src/apps/eos/layout.py index dc12df31c2..994394f0e8 100644 --- a/core/src/apps/eos/layout.py +++ b/core/src/apps/eos/layout.py @@ -14,7 +14,7 @@ async def require_sign_tx(num_actions: int) -> None: await confirm_action( "confirm_tx", - TR.eos__sign_transaction, + TR.send__sign_transaction, description=TR.eos__about_to_sign_template, description_param=format_plural( "{count} {plural}", num_actions, TR.plurals__sign_x_actions diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index fc6c3f6e44..c150b7fff1 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -187,7 +187,7 @@ def _first_paint(self) -> None: # Turn the brightness on again. ui.backlight_fade(self.BACKLIGHT_LEVEL) - def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is-generator] + def handle_input_and_rendering(self) -> loop.Task: from trezor import workflow touch = loop.wait(io.TOUCH) @@ -203,7 +203,7 @@ def handle_input_and_rendering(self) -> loop.Task: # type: ignore [awaitable-is raise ui.Result(msg) self._paint() - def handle_timers(self) -> loop.Task: # type: ignore [awaitable-is-generator] + def handle_timers(self) -> loop.Task: while True: # Using `yield` instead of `await` to avoid allocations. token = yield self.timer @@ -499,9 +499,9 @@ async def show_warning( interact( RustLayout( trezorui2.show_warning( - title=content, - description=subheader or "", - button=button, + title=TR.words__important, + value=content, + button=subheader or TR.words__continue_anyway, ) ), br_type, @@ -539,58 +539,35 @@ async def confirm_output( address_label: str | None = None, output_index: int | None = None, chunkify: bool = False, + source_account: str | None = None, + source_account_path: str | None = None, ) -> None: - if title is not None: - # TODO: handle translation - if title.upper().startswith("CONFIRM "): - title = title[len("CONFIRM ") :] - amount_title = title - recipient_title = title + if address_label is not None: + title = address_label + elif title is not None: + pass elif output_index is not None: - amount_title = f"{TR.words__amount} #{output_index + 1}" - recipient_title = f"{TR.words__recipient} #{output_index + 1}" + title = f"{TR.words__recipient} #{output_index + 1}" else: - amount_title = TR.send__confirm_sending - recipient_title = TR.send__title_sending_to + title = TR.send__title_sending_to - while True: - result = await interact( + # TODO: this should send 2x ButtonRequest + await raise_if_not_confirmed( + interact( RustLayout( - trezorui2.confirm_value( - title=recipient_title, - subtitle=address_label, - description=None, - value=address, - verb=TR.buttons__continue, - hold=False, - info_button=False, + trezorui2.flow_confirm_output( + address=address, + amount=amount, + title=title, chunkify=chunkify, + account=source_account, + account_path=source_account_path, ) ), "confirm_output", br_code, ) - if result is not CONFIRMED: - raise ActionCancelled - - result = await interact( - RustLayout( - trezorui2.confirm_value( - title=amount_title, - subtitle=None, - description=None, - value=amount, - verb=None if hold else TR.buttons__confirm, - verb_cancel="^", - hold=hold, - info_button=False, - ) - ), - "confirm_output", - br_code, - ) - if result is CONFIRMED: - return + ) async def should_show_payment_request_details( @@ -627,7 +604,7 @@ async def should_show_payment_request_details( async def should_show_more( title: str, - para: Iterable[tuple[int, str]], + para: Iterable[tuple[int, str | bytes]], button_text: str | None = None, br_type: str = "should_show_more", br_code: ButtonRequestType = BR_TYPE_OTHER, @@ -876,31 +853,42 @@ async def confirm_total( title: str | None = None, total_label: str | None = None, fee_label: str | None = None, - account_label: str | None = None, + source_account: str | None = None, + source_account_path: str | None = None, fee_rate_amount: str | None = None, br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: title = title or TR.words__title_summary # def_arg total_label = total_label or TR.send__total_amount # def_arg - fee_label = fee_label or TR.send__including_fee # def_arg + fee_label = fee_label or TR.send__incl_transaction_fee # def_arg items = [ (total_label, total_amount), (fee_label, fee_amount), ] - info_items = [] - if account_label: - info_items.append((TR.confirm_total__sending_from_account, account_label)) + fee_items = [] + account_items = [] + if source_account: + account_items.append((TR.confirm_total__sending_from_account, source_account)) + if source_account_path: + account_items.append((TR.address_details__derivation_path, source_account_path)) if fee_rate_amount: - info_items.append((TR.confirm_total__fee_rate, fee_rate_amount)) + fee_items.append((TR.confirm_total__fee_rate, fee_rate_amount)) - await confirm_summary( - items, - TR.words__title_summary, - info_items=info_items, - br_type=br_type, - br_code=br_code, + await raise_if_not_confirmed( + interact( + RustLayout( + trezorui2.flow_confirm_summary( + title=title, + items=items, + fee_items=fee_items, + account_items=account_items, + ) + ), + br_type, + br_code, + ) ) @@ -912,23 +900,21 @@ async def confirm_summary( br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: + # TODO: info_title title = title or TR.words__title_summary # def_arg - total_layout = RustLayout( - trezorui2.confirm_total( - title=title, - items=items, - info_button=bool(info_items), - ) - ) - info_items = info_items or [] - info_layout = RustLayout( - trezorui2.show_info_with_cancel( - title=info_title if info_title else TR.words__title_information, - items=info_items, + await raise_if_not_confirmed( + RustLayout( + trezorui2.flow_confirm_summary( + title=title, + items=items or (), + fee_items=(), + account_items=info_items or (), + ) ) + # TODO br_type, + # TODO br_code, ) - await raise_if_not_confirmed(with_info(total_layout, info_layout, br_type, br_code)) if not utils.BITCOIN_ONLY: @@ -1046,20 +1032,14 @@ async def confirm_solana_tx( async def confirm_joint_total(spending_amount: str, total_amount: str) -> None: - await raise_if_not_confirmed( - interact( - RustLayout( - trezorui2.confirm_total( - title=TR.send__title_joint_transaction, - items=[ - (TR.send__you_are_contributing, spending_amount), - (TR.send__to_the_total_amount, total_amount), - ], - ) - ), - "confirm_joint_total", - ButtonRequestType.SignTx, - ) + await confirm_summary( + items=[ + (TR.send__you_are_contributing, spending_amount), + (TR.send__to_the_total_amount, total_amount), + ], + title=TR.send__title_joint_transaction, + br_type="confirm_joint_total", + br_code=ButtonRequestType.SignTx, ) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index c3de1166d1..8101160d52 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -734,6 +734,8 @@ async def confirm_output( address_label: str | None = None, output_index: int | None = None, chunkify: bool = False, + source_account: str | None = None, # ignored on safe 3 + source_account_path: str | None = None, # ignored on safe 3 ) -> None: title = title or TR.send__confirm_sending # def_arg address_title = TR.words__recipient @@ -1096,11 +1098,12 @@ def confirm_total( title: str | None = None, total_label: str | None = None, fee_label: str | None = None, - account_label: str | None = None, + source_account: str | None = None, + source_account_path: str | None = None, br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: - total_label = total_label or TR.send__total_amount # def_arg + total_label = total_label or TR.send__total_amount_colon # def_arg fee_label = fee_label or TR.send__including_fee # def_arg return raise_if_not_confirmed( interact( @@ -1110,7 +1113,7 @@ def confirm_total( total_amount=total_amount, # type: ignore [No parameter named] fee_amount=fee_amount, # type: ignore [No parameter named] fee_rate_amount=fee_rate_amount, # type: ignore [No parameter named] - account_label=account_label, # type: ignore [No parameter named] + account_label=source_account, # type: ignore [No parameter named] total_label=total_label, # type: ignore [No parameter named] fee_label=fee_label, # type: ignore [No parameter named] ) diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 0735cffcd9..aa954e13c9 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -641,6 +641,8 @@ async def confirm_output( address_label: str | None = None, output_index: int | None = None, chunkify: bool = False, + source_account: str | None = None, # ignored on model t + source_account_path: str | None = None, # ignored on model t ) -> None: if title is not None: # TODO: handle translation: @@ -978,13 +980,14 @@ def confirm_total( title: str | None = None, total_label: str | None = None, fee_label: str | None = None, - account_label: str | None = None, + source_account: str | None = None, + source_account_path: str | None = None, fee_rate_amount: str | None = None, br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: title = title or TR.words__title_summary # def_arg - total_label = total_label or TR.send__total_amount # def_arg + total_label = total_label or TR.send__total_amount_colon # def_arg fee_label = fee_label or TR.send__including_fee # def_arg items = [ @@ -992,10 +995,10 @@ def confirm_total( (fee_label, fee_amount), ] info_items = [] - if account_label: - info_items.append((TR.confirm_total__sending_from_account, account_label)) + if source_account: + info_items.append((TR.confirm_total__sending_from_account, source_account)) if fee_rate_amount: - info_items.append((TR.confirm_total__fee_rate, fee_rate_amount)) + info_items.append((TR.confirm_total__fee_rate_colon, fee_rate_amount)) return confirm_summary( items, diff --git a/core/tests/test_apps.bitcoin.approver.py b/core/tests/test_apps.bitcoin.approver.py index fbbee64d6b..41a2a98e33 100644 --- a/core/tests/test_apps.bitcoin.approver.py +++ b/core/tests/test_apps.bitcoin.approver.py @@ -175,6 +175,7 @@ def test_coinjoin_lots_of_inputs(self): authorization = CoinJoinAuthorization(self.msg_auth) approver = CoinJoinApprover(tx, self.coin, authorization) signer = Bitcoin(tx, None, self.coin, approver) + tx_info = TxInfo(signer, tx) for txi in inputs: if txi.script_type == InputScriptType.EXTERNAL: @@ -186,9 +187,9 @@ def test_coinjoin_lots_of_inputs(self): if txo.address_n: await_result(approver.add_change_output(txo, script_pubkey=bytes(22))) else: - await_result(approver.add_external_output(txo, script_pubkey=bytes(22))) + await_result(approver.add_external_output(txo, script_pubkey=bytes(22), tx_info=tx_info)) - await_result(approver.approve_tx(TxInfo(signer, tx), [], None)) + await_result(approver.approve_tx(tx_info, [], None)) def test_coinjoin_input_account_depth_mismatch(self): txi = TxInput( diff --git a/core/tests/test_apps.bitcoin.segwit.signtx.native_p2wpkh.py b/core/tests/test_apps.bitcoin.segwit.signtx.native_p2wpkh.py index cd58acee78..c7f0e42cd6 100644 --- a/core/tests/test_apps.bitcoin.segwit.signtx.native_p2wpkh.py +++ b/core/tests/test_apps.bitcoin.segwit.signtx.native_p2wpkh.py @@ -112,7 +112,7 @@ def test_send_native_p2wpkh(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(49), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, @@ -120,7 +120,7 @@ def test_send_native_p2wpkh(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out2)), - helpers.UiConfirmOutput(out2, coin, AmountUnit.BITCOIN, 1, False), + helpers.UiConfirmOutput(out2, coin, AmountUnit.BITCOIN, 1, False, [H_(49), H_(1), H_(0)]), True, helpers.UiConfirmTotal( 12300000, 11000, fee_rate, coin, AmountUnit.BITCOIN, inp1.address_n[:3] @@ -309,7 +309,7 @@ def test_send_native_p2wpkh_change(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(49), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, diff --git a/core/tests/test_apps.bitcoin.segwit.signtx.native_p2wpkh_grs.py b/core/tests/test_apps.bitcoin.segwit.signtx.native_p2wpkh_grs.py index 0294a41f59..6860dd7977 100644 --- a/core/tests/test_apps.bitcoin.segwit.signtx.native_p2wpkh_grs.py +++ b/core/tests/test_apps.bitcoin.segwit.signtx.native_p2wpkh_grs.py @@ -123,7 +123,7 @@ def test_send_native_p2wpkh(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(84), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, @@ -131,7 +131,7 @@ def test_send_native_p2wpkh(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out2)), - helpers.UiConfirmOutput(out2, coin, AmountUnit.BITCOIN, 1, False), + helpers.UiConfirmOutput(out2, coin, AmountUnit.BITCOIN, 1, False, [H_(84), H_(1), H_(0)]), True, helpers.UiConfirmNonDefaultLocktime(tx.lock_time, lock_time_disabled=False), True, @@ -332,7 +332,7 @@ def test_send_native_p2wpkh_change(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(84), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, diff --git a/core/tests/test_apps.bitcoin.segwit.signtx.p2wpkh_in_p2sh.py b/core/tests/test_apps.bitcoin.segwit.signtx.p2wpkh_in_p2sh.py index 228f4a8011..8e0f592871 100644 --- a/core/tests/test_apps.bitcoin.segwit.signtx.p2wpkh_in_p2sh.py +++ b/core/tests/test_apps.bitcoin.segwit.signtx.p2wpkh_in_p2sh.py @@ -114,7 +114,7 @@ def test_send_p2wpkh_in_p2sh(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(49), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, @@ -122,7 +122,7 @@ def test_send_p2wpkh_in_p2sh(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out2)), - helpers.UiConfirmOutput(out2, coin, AmountUnit.BITCOIN, 1, False), + helpers.UiConfirmOutput(out2, coin, AmountUnit.BITCOIN, 1, False, [H_(49), H_(1), H_(0)]), True, helpers.UiConfirmTotal( 123445789 + 11000, @@ -317,7 +317,7 @@ def test_send_p2wpkh_in_p2sh_change(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(49), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, @@ -531,7 +531,7 @@ def test_send_p2wpkh_in_p2sh_attack_amount(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(49), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, diff --git a/core/tests/test_apps.bitcoin.segwit.signtx.p2wpkh_in_p2sh_grs.py b/core/tests/test_apps.bitcoin.segwit.signtx.p2wpkh_in_p2sh_grs.py index 7e45cf8a94..0abf34cacb 100644 --- a/core/tests/test_apps.bitcoin.segwit.signtx.p2wpkh_in_p2sh_grs.py +++ b/core/tests/test_apps.bitcoin.segwit.signtx.p2wpkh_in_p2sh_grs.py @@ -123,7 +123,7 @@ def test_send_p2wpkh_in_p2sh(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(49), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, @@ -131,7 +131,7 @@ def test_send_p2wpkh_in_p2sh(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out2)), - helpers.UiConfirmOutput(out2, coin, AmountUnit.BITCOIN, 1, False), + helpers.UiConfirmOutput(out2, coin, AmountUnit.BITCOIN, 1, False, [H_(49), H_(1), H_(0)]), True, helpers.UiConfirmNonDefaultLocktime(tx.lock_time, lock_time_disabled=False), True, @@ -336,7 +336,7 @@ def test_send_p2wpkh_in_p2sh_change(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(49), H_(1), H_(0)]), True, TxRequest( request_type=TXOUTPUT, diff --git a/core/tests/test_apps.bitcoin.signtx.fee_threshold.py b/core/tests/test_apps.bitcoin.signtx.fee_threshold.py index e5e0320bb4..9aebc7b07a 100644 --- a/core/tests/test_apps.bitcoin.signtx.fee_threshold.py +++ b/core/tests/test_apps.bitcoin.signtx.fee_threshold.py @@ -180,7 +180,7 @@ def test_under_threshold(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin_bitcoin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin_bitcoin, AmountUnit.BITCOIN, 0, False, None), True, helpers.UiConfirmMultipleAccounts(), True, diff --git a/core/tests/test_apps.bitcoin.signtx.py b/core/tests/test_apps.bitcoin.signtx.py index e9e094696b..1d8a0339a6 100644 --- a/core/tests/test_apps.bitcoin.signtx.py +++ b/core/tests/test_apps.bitcoin.signtx.py @@ -111,7 +111,7 @@ def test_one_one_fee(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin_bitcoin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin_bitcoin, AmountUnit.BITCOIN, 0, False, [H_(44), H_(0), H_(0)]), True, helpers.UiConfirmTotal( 3_801_747, diff --git a/core/tests/test_apps.bitcoin.signtx_decred.py b/core/tests/test_apps.bitcoin.signtx_decred.py index a8f4fc7e0d..490538e0b8 100644 --- a/core/tests/test_apps.bitcoin.signtx_decred.py +++ b/core/tests/test_apps.bitcoin.signtx_decred.py @@ -112,7 +112,7 @@ def test_one_one_fee(self): ), ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin_decred, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin_decred, AmountUnit.BITCOIN, 0, False, [H_(44), H_(1), H_(0)]), True, helpers.UiConfirmTotal( 200_000_000, diff --git a/core/tests/test_apps.bitcoin.signtx_grs.py b/core/tests/test_apps.bitcoin.signtx_grs.py index 573e3017ff..8fd6e7cd0d 100644 --- a/core/tests/test_apps.bitcoin.signtx_grs.py +++ b/core/tests/test_apps.bitcoin.signtx_grs.py @@ -112,7 +112,7 @@ def test_one_one_fee(self): serialized=EMPTY_SERIALIZED, ), TxAckOutput(tx=TxAckOutputWrapper(output=out1)), - helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False), + helpers.UiConfirmOutput(out1, coin, AmountUnit.BITCOIN, 0, False, [H_(44), H_(17), H_(0)]), True, helpers.UiConfirmTotal( 210016, 192, fee_rate, coin, AmountUnit.BITCOIN, inp1.address_n[:3] diff --git a/core/tools/translations/rules.json b/core/tools/translations/rules.json index 5893eebdaa..7b87a61fcd 100644 --- a/core/tools/translations/rules.json +++ b/core/tools/translations/rules.json @@ -219,7 +219,7 @@ "coinjoin__title_do_not_disconnect": "title,2", "coinjoin__title_progress": "title,1", "coinjoin__waiting_for_others": "text,1", - "confirm_total__fee_rate": "text,1", + "confirm_total__fee_rate_colon": "text,1", "confirm_total__sending_from_account": "text,1", "confirm_total__title_fee": "title,1", "confirm_total__title_sending_from": "title,1", @@ -259,7 +259,7 @@ "eos__requirement": "text,1", "eos__sell_ram": "text,1", "eos__sender": "text,1", - "eos__sign_transaction": "text,1", + "send__sign_transaction": "text,1", "eos__threshold": "text,1", "eos__to": "text,1", "eos__transfer": "text,1", @@ -654,7 +654,7 @@ "send__title_sending_amount": "title,1", "send__title_sending_to": "title,1", "send__to_the_total_amount": "text,1", - "send__total_amount": "text,1", + "send__total_amount_colon": "text,1", "send__transaction_id": "text,1", "send__you_are_contributing": "text,1", "share_words__words_in_order": "text,2", diff --git a/core/translations/cs.json b/core/translations/cs.json index 5e0605513b..c2beae0e28 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -257,7 +257,8 @@ "coinjoin__title_do_not_disconnect": "Neodpojujte trezor!", "coinjoin__title_progress": "Probíhá coinjoin", "coinjoin__waiting_for_others": "Čeká se na ostatní", - "confirm_total__fee_rate": "Výše poplatku:", + "confirm_total__fee_rate": "Výše poplatku", + "confirm_total__fee_rate_colon": "Výše poplatku:", "confirm_total__sending_from_account": "Odeslání z účtu:", "confirm_total__title_fee": "Info o poplatcích", "confirm_total__title_sending_from": "Odeslání z", @@ -297,7 +298,7 @@ "eos__requirement": "Požadavek:", "eos__sell_ram": "Prodat RAM", "eos__sender": "Odesílatel:", - "eos__sign_transaction": "Podepsat transakci", + "send__sign_transaction": "Podepsat transakci", "eos__threshold": "Počet částí zálohy pro obnovu:", "eos__to": "Komu:", "eos__transfer": "Převod:", @@ -699,7 +700,8 @@ "send__title_sending_amount": "Odesílání částky", "send__title_sending_to": "Odesílání", "send__to_the_total_amount": "Do celkové částky:", - "send__total_amount": "Celková částka:", + "send__total_amount": "Celková částka", + "send__total_amount_colon": "Celková částka:", "send__transaction_id": "ID transakce:", "send__you_are_contributing": "Přispíváte:", "share_words__words_in_order": " slova v pořadí.", diff --git a/core/translations/de.json b/core/translations/de.json index 6fca28d28f..683e5273c5 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -257,7 +257,8 @@ "coinjoin__title_do_not_disconnect": "Trenne deinen trezor nicht!", "coinjoin__title_progress": "Coinjoin läuft", "coinjoin__waiting_for_others": "Auf andere warten", - "confirm_total__fee_rate": "Gebührensatz:", + "confirm_total__fee_rate": "Gebührensatz", + "confirm_total__fee_rate_colon": "Gebührensatz:", "confirm_total__sending_from_account": "Gesendet von Konto:", "confirm_total__title_fee": "Gebühren-info", "confirm_total__title_sending_from": "Gesendet von", @@ -297,7 +298,7 @@ "eos__requirement": "Anforderung:", "eos__sell_ram": "RAM verkaufen", "eos__sender": "Sender:", - "eos__sign_transaction": "Transaktion signieren", + "send__sign_transaction": "Transaktion signieren", "eos__threshold": "Schwelle:", "eos__to": "An:", "eos__transfer": "Überweisung:", @@ -699,7 +700,8 @@ "send__title_sending_amount": "Betrag senden", "send__title_sending_to": "Senden an", "send__to_the_total_amount": "Gesamtbetrag:", - "send__total_amount": "Gesamtbetrag:", + "send__total_amount": "Gesamtbetrag", + "send__total_amount_colon": "Gesamtbetrag:", "send__transaction_id": "Transaktions-ID:", "send__you_are_contributing": "Dein Anteil:", "share_words__words_in_order": " Wörter der Reihe nach notiert.", diff --git a/core/translations/en.json b/core/translations/en.json index adca071828..63c9f4b939 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -237,9 +237,10 @@ "coinjoin__title_do_not_disconnect": "Do not disconnect your trezor!", "coinjoin__title_progress": "Coinjoin in progress", "coinjoin__waiting_for_others": "Waiting for others", - "confirm_total__fee_rate": "Fee rate:", + "confirm_total__fee_rate": "Fee rate", + "confirm_total__fee_rate_colon": "Fee rate:", "confirm_total__sending_from_account": "Sending from account:", - "confirm_total__title_fee": "Fee information", + "confirm_total__title_fee": "Fee info", "confirm_total__title_sending_from": "Sending from", "debug__loading_seed": "Loading seed", "debug__loading_seed_not_recommended": "Loading private seed is not recommended.", @@ -277,7 +278,6 @@ "eos__requirement": "Requirement:", "eos__sell_ram": "Sell RAM", "eos__sender": "Sender:", - "eos__sign_transaction": "Sign transaction", "eos__threshold": "Threshold:", "eos__to": "To:", "eos__transfer": "Transfer:", @@ -365,9 +365,10 @@ "inputs__show": "SHOW", "inputs__space": "SPACE", "instructions__continue_in_app": "Continue in the app", + "instructions__hold_to_confirm": "Hold to confirm", + "instructions__hold_to_sign": "Hold to sign", "instructions__swipe_up": "Swipe up", "instructions__tap_to_confirm": "Tap to confirm", - "instructions__hold_to_confirm": "Hold to confirm", "joint__title": "Joint transaction", "joint__to_the_total_amount": "To the total amount:", "joint__you_are_contributing": "You are contributing:", @@ -677,11 +678,15 @@ "sd_card__wanna_format": "Do you really want to format the SD card?", "sd_card__wrong_sd_card": "Wrong SD card.", "send__address_path": "address path", + "send__cancel_sign": "Cancel sign", "send__confirm_sending": "Sending amount", "send__from_multiple_accounts": "Sending from multiple accounts.", + "send__incl_transaction_fee": "incl. Transaction fee", "send__including_fee": "Including fee:", "send__maximum_fee": "Maximum fee:", "send__receiving_to_multisig": "Receiving to a multisig address.", + "send__send_from": "Send from", + "send__sign_transaction": "Sign transaction", "send__title_confirm_sending": "Confirm sending", "send__title_joint_transaction": "Joint transaction", "send__title_receiving_to": "Receiving to", @@ -689,7 +694,8 @@ "send__title_sending_amount": "Sending amount", "send__title_sending_to": "Sending to", "send__to_the_total_amount": "To the total amount:", - "send__total_amount": "Total amount:", + "send__total_amount": "Total amount", + "send__total_amount_colon": "Total amount:", "send__transaction_id": "Transaction ID:", "send__you_are_contributing": "You are contributing:", "share_words__words_in_order": " words in order.", diff --git a/core/translations/es.json b/core/translations/es.json index 4f57043244..fb42195c67 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -257,7 +257,8 @@ "coinjoin__title_do_not_disconnect": "¡No desconectes el trezor!", "coinjoin__title_progress": "Coinjoin en curso", "coinjoin__waiting_for_others": "Esperando a los demás", - "confirm_total__fee_rate": "Comisión:", + "confirm_total__fee_rate": "Comisión", + "confirm_total__fee_rate_colon": "Comisión:", "confirm_total__sending_from_account": "Envío desde cuenta:", "confirm_total__title_fee": "Info. comisión", "confirm_total__title_sending_from": "Envío desde", @@ -297,7 +298,7 @@ "eos__requirement": "Requisito:", "eos__sell_ram": "Vender RAM", "eos__sender": "Remitente:", - "eos__sign_transaction": "Firmar transacción", + "send__sign_transaction": "Firmar transacción", "eos__threshold": "Umbral:", "eos__to": "Para:", "eos__transfer": "Transferencia:", @@ -699,7 +700,8 @@ "send__title_sending_amount": "Importe envío", "send__title_sending_to": "Envío a", "send__to_the_total_amount": "Al importe total:", - "send__total_amount": "Importe total:", + "send__total_amount": "Importe total", + "send__total_amount_colon": "Importe total:", "send__transaction_id": "ID de la transacción:", "send__you_are_contributing": "Estás aportando:", "share_words__words_in_order": " palabras en orden.", diff --git a/core/translations/fr.json b/core/translations/fr.json index 2a33588dfc..8ce8d483e5 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -257,7 +257,8 @@ "coinjoin__title_do_not_disconnect": "Ne déconnectez pas votre trezor !", "coinjoin__title_progress": "Coinjoin en cours", "coinjoin__waiting_for_others": "En attente des autres", - "confirm_total__fee_rate": "Taux des frais :", + "confirm_total__fee_rate": "Taux des frais", + "confirm_total__fee_rate_colon": "Taux des frais :", "confirm_total__sending_from_account": "Compte d'envoi :", "confirm_total__title_fee": "Infos sur les frais", "confirm_total__title_sending_from": "Envoi depuis", @@ -297,7 +298,7 @@ "eos__requirement": "Exigence :", "eos__sell_ram": "Vendre de la RAM", "eos__sender": "Expéditeur :", - "eos__sign_transaction": "Signer la transaction", + "send__sign_transaction": "Signer la transaction", "eos__threshold": "Seuil :", "eos__to": "À :", "eos__transfer": "Transfert :", @@ -699,7 +700,8 @@ "send__title_sending_amount": "Montant de l'envoi", "send__title_sending_to": "Envoi à", "send__to_the_total_amount": "Au montant total :", - "send__total_amount": "Montant total :", + "send__total_amount": "Montant total", + "send__total_amount_colon": "Montant total :", "send__transaction_id": "ID de transaction :", "send__you_are_contributing": "Votre contribution :", "share_words__words_in_order": " mots dans l'ordre.", diff --git a/core/translations/order.json b/core/translations/order.json index 6d15f658a3..c24bf027a4 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -219,7 +219,7 @@ "217": "coinjoin__title_do_not_disconnect", "218": "coinjoin__title_progress", "219": "coinjoin__waiting_for_others", - "220": "confirm_total__fee_rate", + "220": "confirm_total__fee_rate_colon", "221": "confirm_total__sending_from_account", "222": "confirm_total__title_fee", "223": "confirm_total__title_sending_from", @@ -259,7 +259,7 @@ "257": "eos__requirement", "258": "eos__sell_ram", "259": "eos__sender", - "260": "eos__sign_transaction", + "260": "send__sign_transaction", "261": "eos__threshold", "262": "eos__to", "263": "eos__transfer", @@ -652,7 +652,7 @@ "650": "send__title_sending_amount", "651": "send__title_sending_to", "652": "send__to_the_total_amount", - "653": "send__total_amount", + "653": "send__total_amount_colon", "654": "send__transaction_id", "655": "send__you_are_contributing", "656": "share_words__words_in_order", @@ -871,5 +871,11 @@ "869": "address__confirmed", "870": "pin__cancel_description", "871": "pin__cancel_info", - "872": "pin__cancel_setup" + "872": "pin__cancel_setup", + "873": "send__cancel_sign", + "874": "send__send_from", + "875": "instructions__hold_to_sign", + "876": "confirm_total__fee_rate", + "877": "send__incl_transaction_fee", + "878": "send__total_amount" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 2e93c3afb8..626bf5fa71 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "928438526b993d433d52359d86099848d570c13fbe6aac72a2f5a29a4e8e94c5", - "datetime": "2024-05-17T10:55:04.124405", - "commit": "1409ed27df07827a2a3e3756420db1b41fe108e5" + "merkle_root": "329b06dbf2564bf17ba46d2b3304f91df15abc42794763a55ea33bc04281ac42", + "datetime": "2024-05-20T15:37:23.831427", + "commit": "2a5dc6f8d54701e86c32451fb154d3e40a778ca9" }, "history": [ { From b16411631b71f2d4656b56f637376325b0a195e9 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 20 May 2024 18:30:57 +0200 Subject: [PATCH 156/626] fix(core/ui): T3T1 ButtonRequests from rust [no changelog] --- core/embed/rust/librust_qstr.h | 2 + .../rust/src/ui/component/button_request.rs | 18 ++ .../ui/model_mercury/flow/confirm_output.rs | 13 +- .../ui/model_mercury/flow/confirm_summary.rs | 9 +- .../src/ui/model_mercury/flow/get_address.rs | 10 +- .../embed/rust/src/ui/model_mercury/layout.rs | 6 + core/mocks/generated/trezorui2.pyi | 6 + .../src/trezor/ui/layouts/mercury/__init__.py | 154 +++++++++++------- .../src/trezor/ui/layouts/mercury/recovery.py | 7 +- core/src/trezor/ui/layouts/mercury/reset.py | 29 ++-- 10 files changed, 163 insertions(+), 91 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index e042e1e74c..f1e8523a25 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -101,6 +101,8 @@ static void _librust_qstrs(void) { MP_QSTR_bitcoin__voting_rights; MP_QSTR_bootscreen; MP_QSTR_bounds; + MP_QSTR_br_code; + MP_QSTR_br_type; MP_QSTR_button; MP_QSTR_button_event; MP_QSTR_button_request; diff --git a/core/embed/rust/src/ui/component/button_request.rs b/core/embed/rust/src/ui/component/button_request.rs index 8abb392f39..006a158793 100644 --- a/core/embed/rust/src/ui/component/button_request.rs +++ b/core/embed/rust/src/ui/component/button_request.rs @@ -63,3 +63,21 @@ pub trait ButtonRequestExt { } impl<T: Component> ButtonRequestExt for T {} + +#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] +impl<T> crate::ui::flow::Swipable for OneButtonRequest<T> +where + T: Component + crate::ui::flow::Swipable, +{ + fn swipe_start( + &mut self, + ctx: &mut EventCtx, + direction: crate::ui::component::SwipeDirection, + ) -> bool { + self.inner.swipe_start(ctx, direction) + } + + fn swipe_finished(&self) -> bool { + self.inner.swipe_finished() + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index 9e55a15978..d5b40aa91a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -4,7 +4,8 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::{ComponentExt, SwipeDirection}, + button_request::ButtonRequest, + component::{ButtonRequestExt, ComponentExt, SwipeDirection}, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, }; @@ -91,6 +92,8 @@ impl ConfirmOutput { let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; let account_path: Option<TString> = kwargs.get(Qstr::MP_QSTR_account_path)?.try_into_option()?; + let br_type: TString = kwargs.get(Qstr::MP_QSTR_br_type)?.try_into()?; + let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; let address: Obj = kwargs.get(Qstr::MP_QSTR_address)?; let amount: Obj = kwargs.get(Qstr::MP_QSTR_amount)?; @@ -105,8 +108,8 @@ impl ConfirmOutput { .with_footer(TR::instructions__swipe_up.into(), None) .with_chunkify(chunkify) .with_text_mono(text_mono) - .into_layout()?; - // .one_button_request(ButtonRequestCode::ConfirmOutput, br_type); + .into_layout()? + .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); // Amount let content_amount = ConfirmBlobParams::new(TR::words__amount.into(), amount, None) @@ -114,8 +117,8 @@ impl ConfirmOutput { .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) .with_text_mono(text_mono) - .into_layout()?; - // .one_button_request(ButtonRequestCode::ConfirmOutput, br_type); + .into_layout()? + .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); // Menu let content_menu = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index 2b465394cd..83f5012980 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -4,7 +4,8 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::{ComponentExt, SwipeDirection}, + button_request::ButtonRequest, + component::{ButtonRequestExt, ComponentExt, SwipeDirection}, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, }, }; @@ -91,6 +92,8 @@ impl ConfirmSummary { let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let account_items: Obj = kwargs.get(Qstr::MP_QSTR_account_items)?; let fee_items: Obj = kwargs.get(Qstr::MP_QSTR_fee_items)?; + let br_type: TString = kwargs.get(Qstr::MP_QSTR_br_type)?.try_into()?; + let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; // Summary let mut summary = ShowInfoParams::new(title) @@ -100,7 +103,9 @@ impl ConfirmSummary { let [label, value]: [TString; 2] = util::iter_into_array(pair)?; summary = unwrap!(summary.add(label, value)); } - let content_summary = summary.into_layout()?; + let content_summary = summary + .into_layout()? + .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); // Hold to confirm let content_hold = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index d598cd378a..60480f8c71 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -4,9 +4,10 @@ use crate::{ strutil::TString, translations::TR, ui::{ + button_request::ButtonRequest, component::{ text::paragraphs::{Paragraph, ParagraphSource, Paragraphs}, - ComponentExt, Qr, SwipeDirection, + ButtonRequestExt, ComponentExt, Qr, SwipeDirection, }, flow::{ base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, @@ -147,6 +148,9 @@ impl GetAddress { let path: Option<TString> = kwargs.get(Qstr::MP_QSTR_path)?.try_into_option()?; let xpubs: Obj = kwargs.get(Qstr::MP_QSTR_xpubs)?; + let br_type: TString = kwargs.get(Qstr::MP_QSTR_br_type)?.try_into()?; + let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; + // Address let data_style = if chunkify { let address: TString = address.try_into()?; @@ -166,8 +170,8 @@ impl GetAddress { let content_address = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); - // .one_button_request(ButtonRequestCode::Address, "show_address"); + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) + .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); // Tap let content_tap = Frame::left_aligned(title, PromptScreen::new_tap_to_confirm()) diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 9cbf6bfbd5..c101794cf3 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1980,6 +1980,8 @@ pub static mp_module_trezorui2: Module = obj_module! { /// account: str | None, /// path: str | None, /// xpubs: list[tuple[str, str]], + /// br_code: ButtonRequestType, + /// br_type: str, /// ) -> LayoutObj[UiResult]: /// """Get address / receive funds.""" Qstr::MP_QSTR_flow_get_address => obj_fn_kw!(0, flow::get_address::new_get_address).as_obj(), @@ -2001,6 +2003,8 @@ pub static mp_module_trezorui2: Module = obj_module! { /// chunkify: bool, /// account: str | None, /// account_path: str | None, + /// br_code: ButtonRequestType, + /// br_type: str, /// ) -> LayoutObj[UiResult]: /// """Confirm recipient.""" Qstr::MP_QSTR_flow_confirm_output => obj_fn_kw!(0, flow::new_confirm_output).as_obj(), @@ -2011,6 +2015,8 @@ pub static mp_module_trezorui2: Module = obj_module! { /// items: Iterable[tuple[str, str]], /// account_items: Iterable[tuple[str, str]], /// fee_items: Iterable[tuple[str, str]], + /// br_code: ButtonRequestType, + /// br_type: str, /// ) -> LayoutObj[UiResult]: /// """Total summary and hold to confirm.""" Qstr::MP_QSTR_flow_confirm_summary => obj_fn_kw!(0, flow::new_confirm_summary).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 94e8f6b6f0..4f2df01ec6 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -537,6 +537,8 @@ def flow_get_address( account: str | None, path: str | None, xpubs: list[tuple[str, str]], + br_code: ButtonRequestType, + br_type: str, ) -> LayoutObj[UiResult]: """Get address / receive funds.""" @@ -560,6 +562,8 @@ def flow_confirm_output( chunkify: bool, account: str | None, account_path: str | None, + br_code: ButtonRequestType, + br_type: str, ) -> LayoutObj[UiResult]: """Confirm recipient.""" @@ -571,6 +575,8 @@ def flow_confirm_summary( items: Iterable[tuple[str, str]], account_items: Iterable[tuple[str, str]], fee_items: Iterable[tuple[str, str]], + br_code: ButtonRequestType, + br_type: str, ) -> LayoutObj[UiResult]: """Total summary and hold to confirm.""" CONFIRMED: UiResult diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index c150b7fff1..67812965a6 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -1,10 +1,10 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import TR, io, loop, ui, utils +from trezor import TR, io, log, loop, ui, utils from trezor.enums import ButtonRequestType -from trezor.wire import ActionCancelled -from trezor.wire.context import wait as ctx_wait +from trezor.messages import ButtonAck, ButtonRequest +from trezor.wire import ActionCancelled, context from ..common import button_request, interact @@ -34,9 +34,11 @@ class RustLayout(ui.Layout): # pylint: disable=super-init-not-called def __init__(self, layout: Any): + self.br_chan = loop.chan() self.layout = layout self.timer = loop.Timer() self.layout.attach_timer_fn(self.set_timer) + self._send_button_request() def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) @@ -57,13 +59,23 @@ def _paint(self) -> None: if __debug__: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: - return ( - self.handle_timers(), - self.handle_input_and_rendering(), - self.handle_swipe(), - self.handle_click_signal(), - self.handle_result_signal(), - ) + if context.CURRENT_CONTEXT: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_swipe(), + self.handle_click_signal(), + self.handle_result_signal(), + self.handle_usb(context.get_context()), + ) + else: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_swipe(), + self.handle_click_signal(), + self.handle_result_signal(), + ) async def handle_result_signal(self) -> None: """Enables sending arbitrary input - ui.Result. @@ -110,6 +122,7 @@ async def handle_swipe(self): (io.TOUCH_END, orig_x + 2 * off_x, orig_y + 2 * off_y), ): msg = self.layout.touch_event(event, x, y) + self._send_button_request() self._paint() if msg is not None: raise ui.Result(msg) @@ -129,10 +142,12 @@ async def _click( from apps.debug import notify_layout_change self.layout.touch_event(io.TOUCH_START, x, y) + self._send_button_request() self._paint() if hold_ms is not None: await loop.sleep(hold_ms) msg = self.layout.touch_event(io.TOUCH_END, x, y) + self._send_button_request() if msg is not None: debug_storage.new_layout_event_id = event_id @@ -159,7 +174,17 @@ async def handle_click_signal(self) -> None: else: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: - return self.handle_timers(), self.handle_input_and_rendering() + if context.CURRENT_CONTEXT: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_usb(context.get_context()), + ) + else: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + ) def _first_paint(self) -> None: ui.backlight_fade(ui.style.BACKLIGHT_NONE) @@ -199,6 +224,7 @@ def handle_input_and_rendering(self) -> loop.Task: msg = None if event in (io.TOUCH_START, io.TOUCH_MOVE, io.TOUCH_END): msg = self.layout.touch_event(event, x, y) + self._send_button_request() if msg is not None: raise ui.Result(msg) self._paint() @@ -208,6 +234,7 @@ def handle_timers(self) -> loop.Task: # Using `yield` instead of `await` to avoid allocations. token = yield self.timer msg = self.layout.timer(token) + self._send_button_request() if msg is not None: raise ui.Result(msg) self._paint() @@ -215,6 +242,20 @@ def handle_timers(self) -> loop.Task: def page_count(self) -> int: return self.layout.page_count() + async def handle_usb(self, ctx: context.Context): + while True: + br_code, br_type, page_count = await loop.race( + ctx.read(()), self.br_chan.take() + ) + log.debug(__name__, "ButtonRequest.type=%s", br_type) + await ctx.call(ButtonRequest(code=br_code, pages=page_count), ButtonAck) + + def _send_button_request(self): + res = self.layout.button_request() + if res is not None: + br_code, br_type = res + self.br_chan.publish((br_code, br_type, self.layout.page_count())) + def draw_simple(layout: Any) -> None: # Simple drawing not supported for layouts that set timers. @@ -421,22 +462,20 @@ def xpub_title(i: int) -> str: return result await raise_if_not_confirmed( - interact( - RustLayout( - trezorui2.flow_get_address( - address=address, - description=network or "", - extra=None, - chunkify=chunkify, - address_qr=address if address_qr is None else address_qr, - case_sensitive=case_sensitive, - account=account, - path=path, - xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], - ) - ), - br_type, - br_code, + RustLayout( + trezorui2.flow_get_address( + address=address, + description=network or "", + extra=None, + chunkify=chunkify, + address_qr=address if address_qr is None else address_qr, + case_sensitive=case_sensitive, + account=account, + path=path, + xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], + br_type=br_type, + br_code=br_code, + ) ) ) @@ -551,21 +590,18 @@ async def confirm_output( else: title = TR.send__title_sending_to - # TODO: this should send 2x ButtonRequest await raise_if_not_confirmed( - interact( - RustLayout( - trezorui2.flow_confirm_output( - address=address, - amount=amount, - title=title, - chunkify=chunkify, - account=source_account, - account_path=source_account_path, - ) - ), - "confirm_output", - br_code, + RustLayout( + trezorui2.flow_confirm_output( + address=address, + amount=amount, + title=title, + chunkify=chunkify, + account=source_account, + account_path=source_account_path, + br_code=br_code, + br_type="confirm_output", + ) ) ) @@ -877,17 +913,15 @@ async def confirm_total( fee_items.append((TR.confirm_total__fee_rate, fee_rate_amount)) await raise_if_not_confirmed( - interact( - RustLayout( - trezorui2.flow_confirm_summary( - title=title, - items=items, - fee_items=fee_items, - account_items=account_items, - ) - ), - br_type, - br_code, + RustLayout( + trezorui2.flow_confirm_summary( + title=title, + items=items, + fee_items=fee_items, + account_items=account_items, + br_type=br_type, + br_code=br_code, + ) ) ) @@ -910,10 +944,10 @@ async def confirm_summary( items=items or (), fee_items=(), account_items=info_items or (), + br_type=br_type, + br_code=br_code, ) ) - # TODO br_type, - # TODO br_code, ) @@ -1109,7 +1143,7 @@ async def confirm_modify_output( address_layout.page_count(), ) address_layout.request_complete_repaint() - await raise_if_not_confirmed(ctx_wait(address_layout)) + await raise_if_not_confirmed(address_layout) if send_button_request: send_button_request = False @@ -1119,7 +1153,7 @@ async def confirm_modify_output( modify_layout.page_count(), ) modify_layout.request_complete_repaint() - result = await ctx_wait(modify_layout) + result = await modify_layout if result is CONFIRMED: break @@ -1134,11 +1168,11 @@ async def with_info( await button_request(br_type, br_code, pages=main_layout.page_count()) while True: - result = await ctx_wait(main_layout) + result = await main_layout if result is INFO: info_layout.request_complete_repaint() - result = await ctx_wait(info_layout) + result = await info_layout assert result is CANCELLED main_layout.request_complete_repaint() continue @@ -1266,8 +1300,8 @@ async def confirm_signverify( address_layout, info_layout, br_type, br_code=BR_TYPE_OTHER ) if result is not CONFIRMED: - result = await ctx_wait( - RustLayout(trezorui2.show_mismatch(title=TR.addr_mismatch__mismatch)) + result = await RustLayout( + trezorui2.show_mismatch(title=TR.addr_mismatch__mismatch) ) assert result in (CONFIRMED, CANCELLED) # Right button aborts action, left goes back to showing address. diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index fd61afaecc..6b2641fd7b 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -3,7 +3,6 @@ import trezorui2 from trezor import TR from trezor.enums import ButtonRequestType -from trezor.wire.context import wait as ctx_wait from ..common import interact from . import RustLayout, raise_if_not_confirmed @@ -17,7 +16,7 @@ async def _is_confirmed_info( info_func: Callable, ) -> bool: while True: - result = await ctx_wait(dialog) + result = await dialog if result is trezorui2.INFO: await info_func() @@ -50,7 +49,7 @@ async def request_word( ) ) - word: str = await ctx_wait(keyboard) + word: str = await keyboard return word @@ -143,7 +142,7 @@ async def continue_recovery( if info_func is not None: return await _is_confirmed_info(homepage, info_func) else: - result = await ctx_wait(homepage) + result = await homepage return result is CONFIRMED diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index eb7cc062e2..0eade07084 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -4,7 +4,6 @@ from trezor import TR from trezor.enums import ButtonRequestType from trezor.wire import ActionCancelled -from trezor.wire.context import wait as ctx_wait from ..common import interact from . import RustLayout, raise_if_not_confirmed @@ -76,15 +75,13 @@ async def select_word( while len(words) < 3: words.append(words[-1]) - result = await ctx_wait( - RustLayout( - trezorui2.select_word( - title=TR.reset__select_word_x_of_y_template.format( - checked_index + 1, count - ), - description=description, - words=(words[0], words[1], words[2]), - ) + result = await RustLayout( + trezorui2.select_word( + title=TR.reset__select_word_x_of_y_template.format( + checked_index + 1, count + ), + description=description, + words=(words[0], words[1], words[2]), ) ) if __debug__ and isinstance(result, str): @@ -164,13 +161,11 @@ async def _prompt_number( assert isinstance(value, int) return value - await ctx_wait( - RustLayout( - trezorui2.show_simple( - title=None, - description=info(value), - button=TR.buttons__ok_i_understand, - ) + await RustLayout( + trezorui2.show_simple( + title=None, + description=info(value), + button=TR.buttons__ok_i_understand, ) ) num_input.request_complete_repaint() From 53609a85fdf6e7e7f10698bdf0303744d05cb6d5 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 21 May 2024 00:42:33 +0200 Subject: [PATCH 157/626] refactor(core/ui): fix clippy issues --- .../src/ui/model_mercury/bootloader/mod.rs | 10 +++--- .../src/ui/model_mercury/component/loader.rs | 10 +++--- .../ui/model_mercury/component/progress.rs | 19 +++++++---- .../ui/model_mercury/flow/confirm_action.rs | 8 ++--- .../embed/rust/src/ui/model_mercury/shapes.rs | 32 +++++++++++-------- 5 files changed, 47 insertions(+), 32 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 5fce9d5e2d..c77d7e1c9c 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -38,7 +38,7 @@ use crate::ui::{ constant, display::{toif::Toif, LOADER_MAX}, geometry::{Alignment, Alignment2D}, - model_mercury::shapes::render_loader, + model_mercury::shapes::{render_loader, LoaderRange}, shape, shape::render_on_display, }; @@ -130,9 +130,11 @@ impl ModelMercuryFeatures { inactive_color, fg_color, bg_color, - 0, - end, - progress >= LOADER_MAX, + if progress >= LOADER_MAX { + LoaderRange::Full + } else { + LoaderRange::FromTo(0, end) + }, target, ); diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index f12e8e3087..78e9e54387 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -7,7 +7,7 @@ use crate::{ component::{Component, Event, EventCtx, Pad}, display::{self, toif::Icon, Color, LOADER_MAX}, geometry::{Alignment2D, Offset, Rect}, - model_mercury::shapes::render_loader, + model_mercury::shapes::{render_loader, LoaderRange}, shape::{self, Renderer}, util::animation_disabled, }, @@ -231,9 +231,11 @@ impl Component for Loader { inactive_color, active_color, background_color, - start, - end, - progress >= LOADER_MAX, + if progress >= LOADER_MAX { + LoaderRange::Full + } else { + LoaderRange::FromTo(start, end) + }, target, ); diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index aaa1cd6bd4..c2af34a0aa 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -11,7 +11,10 @@ use crate::{ }, display::{self, Font, LOADER_MAX}, geometry::{Insets, Offset, Rect}, - model_mercury::{constant, shapes::render_loader}, + model_mercury::{ + constant, + shapes::{render_loader, LoaderRange}, + }, shape, shape::Renderer, util::animation_disabled, @@ -116,15 +119,19 @@ impl Component for Progress { let background_color = theme::BG; let inactive_color = theme::GREY_EXTRA_DARK; - let (start, end) = if self.indeterminate { + let range = if self.indeterminate { let start = (self.value - 100) % 1000; let end = (self.value + 100) % 1000; let start = ((start as i32 * 8 * shape::PI4 as i32) / 1000) as i16; let end = ((end as i32 * 8 * shape::PI4 as i32) / 1000) as i16; - (start, end) + LoaderRange::FromTo(start, end) } else { let end = ((self.value as i32 * 8 * shape::PI4 as i32) / 1000) as i16; - (0, end) + if self.value >= LOADER_MAX { + LoaderRange::Full + } else { + LoaderRange::FromTo(0, end) + } }; render_loader( @@ -132,9 +139,7 @@ impl Component for Progress { inactive_color, active_color, background_color, - start, - end, - !self.indeterminate && self.value >= LOADER_MAX, + range, target, ); diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 64f956b963..2244f3cc2d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -155,7 +155,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err let content_menu = if let Some(verb_cancel) = verb_cancel { Frame::left_aligned( "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, verb_cancel.into()), + VerticalMenu::empty().danger(theme::ICON_CANCEL, verb_cancel), ) } else { Frame::left_aligned( @@ -172,7 +172,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err if !prompt_screen { let store = flow_store().add(content_intro)?.add(content_menu)?; let res = SwipeFlow::new(ConfirmActionSimple::Intro, store)?; - return Ok(LayoutObj::new(res)?.into()); + Ok(LayoutObj::new(res)?.into()) } else { let (prompt, prompt_action) = if hold { ( @@ -205,6 +205,6 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err .add(content_menu)? .add(content_confirm)?; let res = SwipeFlow::new(ConfirmAction::Intro, store)?; - return Ok(LayoutObj::new(res)?.into()); - }; + Ok(LayoutObj::new(res)?.into()) + } } diff --git a/core/embed/rust/src/ui/model_mercury/shapes.rs b/core/embed/rust/src/ui/model_mercury/shapes.rs index 8d1770c7ba..d05fc5d414 100644 --- a/core/embed/rust/src/ui/model_mercury/shapes.rs +++ b/core/embed/rust/src/ui/model_mercury/shapes.rs @@ -1,29 +1,35 @@ use crate::ui::{display::Color, geometry::Point, model_mercury::constant, shape, shape::Renderer}; +pub enum LoaderRange { + Full, + FromTo(i16, i16), +} + pub fn render_loader<'s>( center: Point, inactive_color: Color, active_color: Color, background_color: Color, - start: i16, - end: i16, - full: bool, + range: LoaderRange, target: &mut impl Renderer<'s>, ) { shape::Circle::new(center, constant::LOADER_OUTER) .with_bg(inactive_color) .render(target); - if full { - shape::Circle::new(center, constant::LOADER_OUTER) - .with_bg(active_color) - .render(target); - } else { - shape::Circle::new(center, constant::LOADER_OUTER) - .with_bg(active_color) - .with_start_angle(start) - .with_end_angle(end) - .render(target); + match range { + LoaderRange::Full => { + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(active_color) + .render(target); + } + LoaderRange::FromTo(start, end) => { + shape::Circle::new(center, constant::LOADER_OUTER) + .with_bg(active_color) + .with_start_angle(start) + .with_end_angle(end) + .render(target); + } } shape::Circle::new(center, constant::LOADER_INNER + 2) From 198693259dff3e3f826f624e2aa8d993c966fc11 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 21 May 2024 23:47:07 +0200 Subject: [PATCH 158/626] fix(core/ui): set page_count through rust ButtonRequest --- core/embed/rust/src/ui/component/base.rs | 11 +++- .../rust/src/ui/component/button_request.rs | 2 +- core/embed/rust/src/ui/component/map.rs | 66 +++++++++++++++++++ core/embed/rust/src/ui/component/mod.rs | 2 +- .../ui/model_mercury/flow/confirm_summary.rs | 4 +- .../src/ui/model_mercury/flow/get_address.rs | 4 +- 6 files changed, 84 insertions(+), 5 deletions(-) diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 91a7d53dff..375df7fb90 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -7,7 +7,7 @@ use crate::{ time::Duration, ui::{ button_request::{ButtonRequest, ButtonRequestCode}, - component::{maybe::PaintOverlapping, MsgMap}, + component::{maybe::PaintOverlapping, MsgMap, PageMap}, display::{self, Color}, geometry::{Offset, Rect}, shape::Renderer, @@ -415,6 +415,7 @@ where pub trait ComponentExt: Sized { fn map<F>(self, func: F) -> MsgMap<Self, F>; + fn with_pages<F>(self, func: F) -> PageMap<Self, F>; fn into_child(self) -> Child<Self>; fn request_complete_repaint(&mut self, ctx: &mut EventCtx); } @@ -427,6 +428,10 @@ where MsgMap::new(self, func) } + fn with_pages<F>(self, func: F) -> PageMap<Self, F> { + PageMap::new(self, func) + } + fn into_child(self) -> Child<Self> { Child::new(self) } @@ -569,6 +574,10 @@ impl EventCtx { self.page_count = Some(count); } + pub fn map_page_count(&mut self, func: impl Fn(usize) -> usize) { + self.page_count = Some(func(self.page_count.unwrap_or(1))); + } + pub fn page_count(&self) -> Option<usize> { self.page_count } diff --git a/core/embed/rust/src/ui/component/button_request.rs b/core/embed/rust/src/ui/component/button_request.rs index 006a158793..a5fb1c5926 100644 --- a/core/embed/rust/src/ui/component/button_request.rs +++ b/core/embed/rust/src/ui/component/button_request.rs @@ -13,7 +13,7 @@ pub struct OneButtonRequest<T> { } impl<T> OneButtonRequest<T> { - pub fn new(button_request: ButtonRequest, inner: T) -> Self { + pub const fn new(button_request: ButtonRequest, inner: T) -> Self { Self { button_request: Some(button_request), inner, diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 7499b92465..46270abf87 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -64,3 +64,69 @@ where self.inner.swipe_finished() } } + +pub struct PageMap<T, F> { + inner: T, + func: F, +} + +impl<T, F> PageMap<T, F> { + pub fn new(inner: T, func: F) -> Self { + Self { inner, func } + } +} + +impl<T, F> Component for PageMap<T, F> +where + T: Component, + F: Fn(usize) -> usize, +{ + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.inner.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let res = self.inner.event(ctx, event); + ctx.map_page_count(&self.func); + res + } + + fn paint(&mut self) { + self.inner.paint() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.inner.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl<T, F> crate::trace::Trace for PageMap<T, F> +where + T: Component + crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.inner.trace(t) + } +} + +#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] +impl<T, F> crate::ui::flow::Swipable for PageMap<T, F> +where + T: Component + crate::ui::flow::Swipable, +{ + fn swipe_start(&mut self, ctx: &mut EventCtx, direction: super::SwipeDirection) -> bool { + self.inner.swipe_start(ctx, direction) + } + + fn swipe_finished(&self) -> bool { + self.inner.swipe_finished() + } +} diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index 3d891580f2..53f3fb908f 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -30,7 +30,7 @@ pub use empty::Empty; #[cfg(all(feature = "jpeg", feature = "micropython"))] pub use jpeg::Jpeg; pub use label::Label; -pub use map::MsgMap; +pub use map::{MsgMap, PageMap}; pub use marquee::Marquee; pub use maybe::Maybe; pub use pad::Pad; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index 83f5012980..8466b8a370 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -105,7 +105,9 @@ impl ConfirmSummary { } let content_summary = summary .into_layout()? - .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); + .one_button_request(ButtonRequest::from_tstring(br_code, br_type)) + // Summary(1) + Hold(1) + .with_pages(|summary_pages| summary_pages + 1); // Hold to confirm let content_hold = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 60480f8c71..7e3ab61819 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -171,7 +171,9 @@ impl GetAddress { .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) - .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); + .one_button_request(ButtonRequest::from_tstring(br_code, br_type)) + // Count tap-to-confirm screen towards page count + .with_pages(|address_pages| address_pages + 1); // Tap let content_tap = Frame::left_aligned(title, PromptScreen::new_tap_to_confirm()) From 38b0361ded7fa13d90f88c0f8d26c030864d5707 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 21 May 2024 23:49:08 +0200 Subject: [PATCH 159/626] test(core/ui): fix bitcoin signtx for T3T1 --- python/src/trezorlib/debuglink.py | 34 +++- tests/common.py | 2 +- tests/device_tests/bitcoin/test_getaddress.py | 90 ++++++---- .../bitcoin/test_getaddress_segwit.py | 107 ++++++------ .../bitcoin/test_getaddress_show.py | 50 +++--- tests/device_tests/bitcoin/test_multisig.py | 4 + .../bitcoin/test_multisig_change.py | 7 + .../bitcoin/test_nonstandard_paths.py | 87 ++++++---- .../device_tests/bitcoin/test_signmessage.py | 10 +- .../bitcoin/test_signtx_invalid_path.py | 16 +- .../bitcoin/test_signtx_prevhash.py | 10 +- .../bitcoin/test_signtx_segwit_native.py | 13 ++ tests/input_flows.py | 159 ++++++++++++++++-- 13 files changed, 420 insertions(+), 169 deletions(-) diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index 914ee5b664..f1fa328b8c 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -355,6 +355,12 @@ def choice_items(self) -> Tuple[str, str, str]: choice_obj.get(choice, {}).get("content", "") for choice in choice_keys ) + def footer(self) -> str: + footer = self.find_unique_object_with_key_and_value("component", "Footer") + if not footer: + return "" + return footer.get("description", "") + " " + footer.get("instruction", "") + def multipage_content(layouts: List[LayoutContent]) -> str: """Get overall content from multiple-page layout.""" @@ -804,6 +810,25 @@ def clear(self) -> None: Generator[None, messages.ButtonRequest, None], object, None ] = None + def _default_input_flow(self, br: messages.ButtonRequest) -> None: + if br.code == messages.ButtonRequestType.PinEntry: + self.debuglink.input(self.get_pin()) + else: + # Paginating (going as further as possible) and pressing Yes + if br.pages is not None: + for _ in range(br.pages - 1): + self.debuglink.swipe_up(wait=True) + if self.debuglink.model is models.T3T1: + layout = self.debuglink.read_layout() + if "PromptScreen" in layout.all_components(): + self.debuglink.press_yes() + elif "swipe up" in layout.footer().lower(): + self.debuglink.swipe_up() + else: + self.debuglink.press_yes() + else: + self.debuglink.press_yes() + def button_request(self, br: messages.ButtonRequest) -> None: self.debuglink.take_t1_screenshot_if_relevant() @@ -814,14 +839,7 @@ def button_request(self, br: messages.ButtonRequest) -> None: # recording their screens that way (as well as # possible swipes below). self.debuglink.save_current_screen_if_relevant(wait=True) - if br.code == messages.ButtonRequestType.PinEntry: - self.debuglink.input(self.get_pin()) - else: - # Paginating (going as further as possible) and pressing Yes - if br.pages is not None: - for _ in range(br.pages - 1): - self.debuglink.swipe_up(wait=True) - self.debuglink.press_yes() + self._default_input_flow(br) elif self.input_flow is self.INPUT_FLOW_DONE: raise AssertionError("input flow ended prematurely") else: diff --git a/tests/common.py b/tests/common.py index 35d6905c8a..889283bbab 100644 --- a/tests/common.py +++ b/tests/common.py @@ -344,4 +344,4 @@ def swipe_till_the_end(debug: "DebugLink", br: messages.ButtonRequest) -> None: def is_core(client: "Client") -> bool: - return client.model in (models.T2T1, models.T2B1, models.T3T1) + return client.model is not models.T1B1 diff --git a/tests/device_tests/bitcoin/test_getaddress.py b/tests/device_tests/bitcoin/test_getaddress.py index 4191e7e8fb..5a53e15d29 100644 --- a/tests/device_tests/bitcoin/test_getaddress.py +++ b/tests/device_tests/bitcoin/test_getaddress.py @@ -23,6 +23,8 @@ from trezorlib.tools import parse_path from ... import bip32 +from ...common import is_core +from ...input_flows import InputFlowConfirmAllWarnings def getmultisig(chain, nr, xpubs): @@ -202,26 +204,30 @@ def test_multisig(client: Client): xpubs.append(node.xpub) for nr in range(1, 4): - assert ( - btc.get_address( - client, - "Bitcoin", - parse_path(f"m/44h/0h/{nr}h/0/0"), - show_display=(nr == 1), - multisig=getmultisig(0, 0, xpubs=xpubs), + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + assert ( + btc.get_address( + client, + "Bitcoin", + parse_path(f"m/44h/0h/{nr}h/0/0"), + show_display=(nr == 1), + multisig=getmultisig(0, 0, xpubs=xpubs), + ) + == "3Pdz86KtfJBuHLcSv4DysJo4aQfanTqCzG" ) - == "3Pdz86KtfJBuHLcSv4DysJo4aQfanTqCzG" - ) - assert ( - btc.get_address( - client, - "Bitcoin", - parse_path(f"m/44h/0h/{nr}h/1/0"), - show_display=(nr == 1), - multisig=getmultisig(1, 0, xpubs=xpubs), + assert ( + btc.get_address( + client, + "Bitcoin", + parse_path(f"m/44h/0h/{nr}h/1/0"), + show_display=(nr == 1), + multisig=getmultisig(1, 0, xpubs=xpubs), + ) + == "36gP3KVx1ooStZ9quZDXbAF3GCr42b2zzd" ) - == "36gP3KVx1ooStZ9quZDXbAF3GCr42b2zzd" - ) @pytest.mark.multisig @@ -254,7 +260,10 @@ def test_multisig_missing(client: Client, show_display): ) for multisig in (multisig1, multisig2): - with pytest.raises(TrezorFailure): + with client, pytest.raises(TrezorFailure): + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) btc.get_address( client, "Bitcoin", @@ -275,26 +284,30 @@ def test_bch_multisig(client: Client): xpubs.append(node.xpub) for nr in range(1, 4): - assert ( - btc.get_address( - client, - "Bcash", - parse_path(f"m/44h/145h/{nr}h/0/0"), - show_display=(nr == 1), - multisig=getmultisig(0, 0, xpubs=xpubs), + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + assert ( + btc.get_address( + client, + "Bcash", + parse_path(f"m/44h/145h/{nr}h/0/0"), + show_display=(nr == 1), + multisig=getmultisig(0, 0, xpubs=xpubs), + ) + == "bitcoincash:pqguz4nqq64jhr5v3kvpq4dsjrkda75hwy86gq0qzw" ) - == "bitcoincash:pqguz4nqq64jhr5v3kvpq4dsjrkda75hwy86gq0qzw" - ) - assert ( - btc.get_address( - client, - "Bcash", - parse_path(f"m/44h/145h/{nr}h/1/0"), - show_display=(nr == 1), - multisig=getmultisig(1, 0, xpubs=xpubs), + assert ( + btc.get_address( + client, + "Bcash", + parse_path(f"m/44h/145h/{nr}h/1/0"), + show_display=(nr == 1), + multisig=getmultisig(1, 0, xpubs=xpubs), + ) + == "bitcoincash:pp6kcpkhua7789g2vyj0qfkcux3yvje7euhyhltn0a" ) - == "bitcoincash:pp6kcpkhua7789g2vyj0qfkcux3yvje7euhyhltn0a" - ) def test_public_ckd(client: Client): @@ -342,6 +355,9 @@ def test_unknown_path(client: Client): messages.Address, ] ) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) # try again with a warning btc.get_address(client, "Bitcoin", UNKNOWN_PATH, show_display=True) diff --git a/tests/device_tests/bitcoin/test_getaddress_segwit.py b/tests/device_tests/bitcoin/test_getaddress_segwit.py index 76e09a81f9..0958facda2 100644 --- a/tests/device_tests/bitcoin/test_getaddress_segwit.py +++ b/tests/device_tests/bitcoin/test_getaddress_segwit.py @@ -21,6 +21,9 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import parse_path +from ...common import is_core +from ...input_flows import InputFlowConfirmAllWarnings + def test_show_segwit(client: Client): assert ( @@ -71,61 +74,65 @@ def test_show_segwit(client: Client): @pytest.mark.altcoin def test_show_segwit_altcoin(client: Client): - assert ( - btc.get_address( - client, - "Groestlcoin Testnet", - parse_path("m/49h/1h/0h/1/0"), - True, - None, - script_type=messages.InputScriptType.SPENDP2SHWITNESS, + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + assert ( + btc.get_address( + client, + "Groestlcoin Testnet", + parse_path("m/49h/1h/0h/1/0"), + True, + None, + script_type=messages.InputScriptType.SPENDP2SHWITNESS, + ) + == "2N1LGaGg836mqSQqiuUBLfcyGBhyZYBtBZ7" ) - == "2N1LGaGg836mqSQqiuUBLfcyGBhyZYBtBZ7" - ) - assert ( - btc.get_address( - client, - "Groestlcoin Testnet", - parse_path("m/49h/1h/0h/0/0"), - True, - None, - script_type=messages.InputScriptType.SPENDP2SHWITNESS, + assert ( + btc.get_address( + client, + "Groestlcoin Testnet", + parse_path("m/49h/1h/0h/0/0"), + True, + None, + script_type=messages.InputScriptType.SPENDP2SHWITNESS, + ) + == "2N4Q5FhU2497BryFfUgbqkAJE87aKDv3V3e" ) - == "2N4Q5FhU2497BryFfUgbqkAJE87aKDv3V3e" - ) - assert ( - btc.get_address( - client, - "Groestlcoin Testnet", - parse_path("m/44h/1h/0h/0/0"), - True, - None, - script_type=messages.InputScriptType.SPENDP2SHWITNESS, + assert ( + btc.get_address( + client, + "Groestlcoin Testnet", + parse_path("m/44h/1h/0h/0/0"), + True, + None, + script_type=messages.InputScriptType.SPENDP2SHWITNESS, + ) + == "2N6UeBoqYEEnybg4cReFYDammpsyDzLXvCT" ) - == "2N6UeBoqYEEnybg4cReFYDammpsyDzLXvCT" - ) - assert ( - btc.get_address( - client, - "Groestlcoin Testnet", - parse_path("m/44h/1h/0h/0/0"), - True, - None, - script_type=messages.InputScriptType.SPENDADDRESS, + assert ( + btc.get_address( + client, + "Groestlcoin Testnet", + parse_path("m/44h/1h/0h/0/0"), + True, + None, + script_type=messages.InputScriptType.SPENDADDRESS, + ) + == "mvbu1Gdy8SUjTenqerxUaZyYjmvedc787y" ) - == "mvbu1Gdy8SUjTenqerxUaZyYjmvedc787y" - ) - assert ( - btc.get_address( - client, - "Elements", - parse_path("m/49h/1h/0h/0/0"), - True, - None, - script_type=messages.InputScriptType.SPENDP2SHWITNESS, + assert ( + btc.get_address( + client, + "Elements", + parse_path("m/49h/1h/0h/0/0"), + True, + None, + script_type=messages.InputScriptType.SPENDP2SHWITNESS, + ) + == "XNW67ZQA9K3AuXPBWvJH4zN2y5QBDTwy2Z" ) - == "XNW67ZQA9K3AuXPBWvJH4zN2y5QBDTwy2Z" - ) @pytest.mark.multisig diff --git a/tests/device_tests/bitcoin/test_getaddress_show.py b/tests/device_tests/bitcoin/test_getaddress_show.py index 83d82d8adf..4760d485b4 100644 --- a/tests/device_tests/bitcoin/test_getaddress_show.py +++ b/tests/device_tests/bitcoin/test_getaddress_show.py @@ -20,7 +20,9 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import Cancelled, TrezorFailure +from ...common import is_core from ...input_flows import ( + InputFlowConfirmAllWarnings, InputFlowShowAddressQRCode, InputFlowShowAddressQRCodeCancel, InputFlowShowMultisigXPUBs, @@ -148,17 +150,21 @@ def test_show_multisig_3(client: Client): ) for i in [1, 2, 3]: - assert ( - btc.get_address( - client, - "Bitcoin", - tools.parse_path(f"m/45h/0/0/{i}"), - show_display=True, - multisig=multisig, - script_type=messages.InputScriptType.SPENDMULTISIG, + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + assert ( + btc.get_address( + client, + "Bitcoin", + tools.parse_path(f"m/45h/0/0/{i}"), + show_display=True, + multisig=multisig, + script_type=messages.InputScriptType.SPENDMULTISIG, + ) + == "35Q3tgZZfr9GhVpaqz7fbDK8WXV1V1KxfD" ) - == "35Q3tgZZfr9GhVpaqz7fbDK8WXV1V1KxfD" - ) VECTORS_MULTISIG = ( # script_type, bip48_type, address, xpubs, ignore_xpub_magic @@ -289,14 +295,18 @@ def test_show_multisig_15(client: Client): ) for i in range(15): - assert ( - btc.get_address( - client, - "Bitcoin", - tools.parse_path(f"m/45h/0/0/{i}"), - show_display=True, - multisig=multisig, - script_type=messages.InputScriptType.SPENDMULTISIG, + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + assert ( + btc.get_address( + client, + "Bitcoin", + tools.parse_path(f"m/45h/0/0/{i}"), + show_display=True, + multisig=multisig, + script_type=messages.InputScriptType.SPENDMULTISIG, + ) + == "3GG78bp1hA3mu9xv1vZLXiENmeabmi7WKQ" ) - == "3GG78bp1hA3mu9xv1vZLXiENmeabmi7WKQ" - ) diff --git a/tests/device_tests/bitcoin/test_multisig.py b/tests/device_tests/bitcoin/test_multisig.py index 303bedf87f..927720bfb2 100644 --- a/tests/device_tests/bitcoin/test_multisig.py +++ b/tests/device_tests/bitcoin/test_multisig.py @@ -22,6 +22,7 @@ from trezorlib.tools import parse_path from ...common import MNEMONIC12, is_core +from ...input_flows import InputFlowConfirmAllWarnings from ...tx_cache import TxCache from .signtx import ( assert_tx_matches, @@ -304,6 +305,9 @@ def test_attack_change_input(client: Client): # Transaction can be signed without the attack processor with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) btc.sign_tx( client, "Testnet", diff --git a/tests/device_tests/bitcoin/test_multisig_change.py b/tests/device_tests/bitcoin/test_multisig_change.py index dbc095c544..e94eb60fd3 100644 --- a/tests/device_tests/bitcoin/test_multisig_change.py +++ b/tests/device_tests/bitcoin/test_multisig_change.py @@ -22,6 +22,7 @@ from ... import bip32 from ...common import MNEMONIC12, is_core +from ...input_flows import InputFlowConfirmAllWarnings from ...tx_cache import TxCache from .signtx import request_finished, request_input, request_meta, request_output @@ -243,6 +244,9 @@ def test_external_internal(client: Client): client.set_expected_responses( _responses(client, INP1, INP2, change=2, foreign=True) ) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) _, serialized_tx = btc.sign_tx( client, "Bitcoin", @@ -276,6 +280,9 @@ def test_internal_external(client: Client): client.set_expected_responses( _responses(client, INP1, INP2, change=1, foreign=True) ) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) _, serialized_tx = btc.sign_tx( client, "Bitcoin", diff --git a/tests/device_tests/bitcoin/test_nonstandard_paths.py b/tests/device_tests/bitcoin/test_nonstandard_paths.py index 8aa0e038cf..96457da386 100644 --- a/tests/device_tests/bitcoin/test_nonstandard_paths.py +++ b/tests/device_tests/bitcoin/test_nonstandard_paths.py @@ -20,6 +20,8 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.tools import parse_path +from ...common import is_core +from ...input_flows import InputFlowConfirmAllWarnings from .signtx import forge_prevtx VECTORS = ( # path, script_types @@ -113,16 +115,20 @@ def test_getaddress( script_types: list[messages.InputScriptType], ): for script_type in script_types: - res = btc.get_address( - client, - "Bitcoin", - parse_path(path), - show_display=True, - script_type=script_type, - chunkify=chunkify, - ) - - assert res + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + res = btc.get_address( + client, + "Bitcoin", + parse_path(path), + show_display=True, + script_type=script_type, + chunkify=chunkify, + ) + + assert res @pytest.mark.parametrize("path, script_types", VECTORS) @@ -130,15 +136,20 @@ def test_signmessage( client: Client, path: str, script_types: list[messages.InputScriptType] ): for script_type in script_types: - sig = btc.sign_message( - client, - coin_name="Bitcoin", - n=parse_path(path), - script_type=script_type, - message="This is an example of a signed message.", - ) + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + + sig = btc.sign_message( + client, + coin_name="Bitcoin", + n=parse_path(path), + script_type=script_type, + message="This is an example of a signed message.", + ) - assert sig.signature + assert sig.signature @pytest.mark.parametrize("path, script_types", VECTORS) @@ -164,9 +175,13 @@ def test_signtx( script_type=messages.OutputScriptType.PAYTOADDRESS, ) - _, serialized_tx = btc.sign_tx( - client, "Bitcoin", [inp1], [out1], prev_txes={prevhash: prevtx} - ) + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + _, serialized_tx = btc.sign_tx( + client, "Bitcoin", [inp1], [out1], prev_txes={prevhash: prevtx} + ) assert serialized_tx.hex() @@ -187,14 +202,18 @@ def test_getaddress_multisig( ] multisig = messages.MultisigRedeemScriptType(pubkeys=pubs, m=2) - address = btc.get_address( - client, - "Bitcoin", - parse_path(paths[0]) + address_index, - show_display=True, - multisig=multisig, - script_type=messages.InputScriptType.SPENDMULTISIG, - ) + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + address = btc.get_address( + client, + "Bitcoin", + parse_path(paths[0]) + address_index, + show_display=True, + multisig=multisig, + script_type=messages.InputScriptType.SPENDMULTISIG, + ) assert address @@ -242,8 +261,12 @@ def test_signtx_multisig(client: Client, paths: list[str], address_index: list[i script_type=messages.OutputScriptType.PAYTOADDRESS, ) - sig, _ = btc.sign_tx( - client, "Bitcoin", [inp1], [out1], prev_txes={prevhash: prevtx} - ) + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + sig, _ = btc.sign_tx( + client, "Bitcoin", [inp1], [out1], prev_txes={prevhash: prevtx} + ) assert sig[0] diff --git a/tests/device_tests/bitcoin/test_signmessage.py b/tests/device_tests/bitcoin/test_signmessage.py index cc8ee41a3c..b5d47b64f4 100644 --- a/tests/device_tests/bitcoin/test_signmessage.py +++ b/tests/device_tests/bitcoin/test_signmessage.py @@ -24,7 +24,12 @@ from trezorlib.exceptions import Cancelled from trezorlib.tools import parse_path -from ...input_flows import InputFlowSignMessageInfo, InputFlowSignMessagePagination +from ...common import is_core +from ...input_flows import ( + InputFlowConfirmAllWarnings, + InputFlowSignMessageInfo, + InputFlowSignMessagePagination, +) S = messages.InputScriptType @@ -414,6 +419,9 @@ def test_signmessage_path_warning(client: Client): messages.MessageSignature, ] ) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) btc.sign_message( client, coin_name="Bitcoin", diff --git a/tests/device_tests/bitcoin/test_signtx_invalid_path.py b/tests/device_tests/bitcoin/test_signtx_invalid_path.py index 69bf4efe40..5ef4ba0389 100644 --- a/tests/device_tests/bitcoin/test_signtx_invalid_path.py +++ b/tests/device_tests/bitcoin/test_signtx_invalid_path.py @@ -21,6 +21,8 @@ from trezorlib.exceptions import TrezorFailure from trezorlib.tools import H_, parse_path +from ...common import is_core +from ...input_flows import InputFlowConfirmAllWarnings from .signtx import forge_prevtx, request_input B = messages.ButtonRequestType @@ -78,7 +80,12 @@ def test_invalid_path_prompt(client: Client): client, safety_checks=messages.SafetyCheckLevel.PromptTemporarily ) - btc.sign_tx(client, "Litecoin", [inp1], [out1], prev_txes=PREV_TXES) + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + + btc.sign_tx(client, "Litecoin", [inp1], [out1], prev_txes=PREV_TXES) # Bcash does have strong replay protection using SIGHASH_FORKID, @@ -99,7 +106,12 @@ def test_invalid_path_pass_forkid(client: Client): script_type=messages.OutputScriptType.PAYTOADDRESS, ) - btc.sign_tx(client, "Bcash", [inp1], [out1], prev_txes=PREV_TXES) + with client: + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) + + btc.sign_tx(client, "Bcash", [inp1], [out1], prev_txes=PREV_TXES) def test_attack_path_segwit(client: Client): diff --git a/tests/device_tests/bitcoin/test_signtx_prevhash.py b/tests/device_tests/bitcoin/test_signtx_prevhash.py index 09a5be83ef..307823a9f3 100644 --- a/tests/device_tests/bitcoin/test_signtx_prevhash.py +++ b/tests/device_tests/bitcoin/test_signtx_prevhash.py @@ -8,6 +8,8 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure +from ...common import is_core +from ...input_flows import InputFlowConfirmAllWarnings from .signtx import forge_prevtx # address at seed "all all all..." path m/44h/0h/0h/0/0 @@ -130,6 +132,9 @@ def attack_filter(msg): with client, pytest.raises(TrezorFailure) as e: client.set_filter(messages.TxAck, attack_filter) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) btc.sign_tx(client, "Bitcoin", [inp1], [out1], prev_txes=PREV_TXES) # check that injection was performed @@ -163,6 +168,9 @@ def test_invalid_prev_hash_in_prevtx(client: Client, prev_hash): tx_hash = hash_tx(serialize_tx(prev_tx)) inp0.prev_hash = tx_hash - with pytest.raises(TrezorFailure) as e: + with client, pytest.raises(TrezorFailure) as e: + if client.model is not models.T1B1: + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) btc.sign_tx(client, "Bitcoin", [inp0], [out1], prev_txes={tx_hash: prev_tx}) _check_error_message(prev_hash, client.model, e.value.message) diff --git a/tests/device_tests/bitcoin/test_signtx_segwit_native.py b/tests/device_tests/bitcoin/test_signtx_segwit_native.py index ef350151c8..0c779c777e 100644 --- a/tests/device_tests/bitcoin/test_signtx_segwit_native.py +++ b/tests/device_tests/bitcoin/test_signtx_segwit_native.py @@ -22,6 +22,7 @@ from ...bip32 import deserialize from ...common import is_core +from ...input_flows import InputFlowConfirmAllWarnings from ...tx_cache import TxCache from .signtx import ( assert_tx_matches, @@ -612,6 +613,9 @@ def test_send_multisig_3_change(client: Client): with client: client.set_expected_responses(expected_responses) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) signatures, _ = btc.sign_tx( client, "Testnet", [inp1], [out1], prev_txes=TX_API_TESTNET ) @@ -624,6 +628,9 @@ def test_send_multisig_3_change(client: Client): with client: client.set_expected_responses(expected_responses) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) _, serialized_tx = btc.sign_tx( client, "Testnet", [inp1], [out1], prev_txes=TX_API_TESTNET ) @@ -698,6 +705,9 @@ def test_send_multisig_4_change(client: Client): with client: client.set_expected_responses(expected_responses) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) signatures, _ = btc.sign_tx( client, "Testnet", [inp1], [out1], prev_txes=TX_API_TESTNET ) @@ -710,6 +720,9 @@ def test_send_multisig_4_change(client: Client): with client: client.set_expected_responses(expected_responses) + if is_core(client): + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) _, serialized_tx = btc.sign_tx( client, "Testnet", [inp1], [out1], prev_txes=TX_API_TESTNET ) diff --git a/tests/input_flows.py b/tests/input_flows.py index c3abebdf82..ec40b2f350 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -716,21 +716,20 @@ def input_flow_t3t1(self) -> BRGeneratorType: yield # confirm first output assert self.outputs[0].address[:16] in self.text_content() # type: ignore - self.debug.press_yes() + self.debug.swipe_up() yield # confirm first output self.debug.wait_layout() - self.debug.press_yes() + self.debug.swipe_up() yield # confirm second output assert self.outputs[1].address[:16] in self.text_content() # type: ignore - self.debug.press_yes() + self.debug.swipe_up() yield # confirm second output self.debug.wait_layout() - self.debug.press_yes() + self.debug.swipe_up() yield # confirm transaction - self.debug.press_yes() - yield # confirm transaction + self.debug.swipe_up() self.debug.press_yes() @@ -747,7 +746,7 @@ def go_through_all_screens(self, screens: list[B]) -> BRGeneratorType: self.finished = True - def input_flow_common(self) -> BRGeneratorType: + def input_flow_tt(self) -> BRGeneratorType: screens = [ B.ConfirmOutput, B.ConfirmOutput, @@ -756,6 +755,31 @@ def input_flow_common(self) -> BRGeneratorType: ] yield from self.go_through_all_screens(screens) + def input_flow_tr(self) -> BRGeneratorType: + screens = [ + B.ConfirmOutput, + B.ConfirmOutput, + B.FeeOverThreshold, + B.SignTx, + ] + yield from self.go_through_all_screens(screens) + + def input_flow_t3t1(self) -> BRGeneratorType: + screens = [ + B.ConfirmOutput, + B.ConfirmOutput, + B.FeeOverThreshold, + B.SignTx, + ] + for expected in screens: + br = yield + assert br.code == expected + self.debug.swipe_up() + if br.code == B.SignTx: + self.debug.press_yes() + + self.finished = True + def sign_tx_go_to_info(client: Client) -> Generator[None, None, str]: yield # confirm output @@ -777,6 +801,43 @@ def sign_tx_go_to_info(client: Client) -> Generator[None, None, str]: return content +def sign_tx_go_to_info_t3t1( + client: Client, multi_account: bool = False +) -> Generator[None, None, str]: + yield # confirm output + client.debug.wait_layout() + client.debug.swipe_up() + yield # confirm output + client.debug.wait_layout() + client.debug.swipe_up() + + if multi_account: + yield + client.debug.wait_layout() + client.debug.swipe_up() + + yield # confirm transaction + client.debug.wait_layout() + client.debug.click(buttons.CORNER_BUTTON) + client.debug.synchronize_at("VerticalMenu") + client.debug.click(buttons.VERTICAL_MENU[0]) + + layout = client.debug.wait_layout() + content = layout.text_content() + + client.debug.click(buttons.CORNER_BUTTON) + client.debug.synchronize_at("VerticalMenu") + client.debug.click(buttons.VERTICAL_MENU[1]) + + layout = client.debug.wait_layout() + content += " " + layout.text_content() + + client.debug.click(buttons.CORNER_BUTTON) + client.debug.click(buttons.CORNER_BUTTON, wait=True) + + return content + + def sign_tx_go_to_info_tr( client: Client, ) -> Generator[None, None, str]: @@ -829,8 +890,9 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_t3t1(self) -> BRGeneratorType: - content = yield from sign_tx_go_to_info(self.client) + content = yield from sign_tx_go_to_info_t3t1(self.client) self.assert_content(content, "confirm_total__sending_from_account") + self.debug.swipe_up() self.debug.press_yes() @@ -863,12 +925,9 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_t3t1(self) -> BRGeneratorType: - # multiple accounts warning - yield - self.debug.press_yes() - - content = yield from sign_tx_go_to_info(self.client) + content = yield from sign_tx_go_to_info_t3t1(self.client, multi_account=True) self.assert_content(content, "confirm_total__sending_from_account") + self.debug.swipe_up() self.debug.press_yes() @@ -885,8 +944,11 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_left() def input_flow_t3t1(self) -> BRGeneratorType: - yield from sign_tx_go_to_info(self.client) - self.debug.press_no() + yield from sign_tx_go_to_info_t3t1(self.client) + self.debug.click(buttons.CORNER_BUTTON) + self.debug.click(buttons.VERTICAL_MENU[2]) + self.debug.synchronize_at("PromptScreen") + self.debug.click(buttons.TAP_TO_CONFIRM) class InputFlowSignTxInformationReplacement(InputFlowBase): @@ -984,6 +1046,30 @@ def lock_time_input_flow_tr( debug.press_yes() +def lock_time_input_flow_t3t1( + debug: DebugLink, + layout_assert_func: Callable[[DebugLink, messages.ButtonRequest], None], + double_confirm: bool = False, +) -> BRGeneratorType: + yield # confirm output + debug.wait_layout() + debug.swipe_up() + yield # confirm output + debug.wait_layout() + debug.swipe_up() + + br = yield # confirm locktime + layout_assert_func(debug, br) + debug.press_yes() + + yield # confirm transaction + debug.swipe_up() + debug.press_yes() + if double_confirm: + yield # confirm transaction + debug.press_yes() + + class InputFlowLockTimeBlockHeight(InputFlowBase): def __init__(self, client: Client, block_height: str): super().__init__(client) @@ -1003,7 +1089,7 @@ def input_flow_tr(self) -> BRGeneratorType: yield from lock_time_input_flow_tr(self.debug, self.assert_func) def input_flow_t3t1(self) -> BRGeneratorType: - yield from lock_time_input_flow_tt( + yield from lock_time_input_flow_t3t1( self.debug, self.assert_func, double_confirm=True ) @@ -1025,7 +1111,7 @@ def input_flow_tr(self) -> BRGeneratorType: yield from lock_time_input_flow_tr(self.debug, self.assert_func) def input_flow_t3t1(self) -> BRGeneratorType: - yield from lock_time_input_flow_tt(self.debug, self.assert_func) + yield from lock_time_input_flow_t3t1(self.debug, self.assert_func) class InputFlowEIP712ShowMore(InputFlowBase): @@ -2048,3 +2134,42 @@ def input_flow_common(self) -> BRGeneratorType: yield # Confirm skip backup TR.assert_in(self.text_content(), "backup__want_to_skip") self.debug.press_no() + + +class InputFlowConfirmAllWarnings(InputFlowBase): + def __init__(self, client: Client): + super().__init__(client) + + def input_flow_tt(self) -> BRGeneratorType: + br = yield + while True: + # wait for homescreen to go away + self.debug.wait_layout() + self.client.ui._default_input_flow(br) + br = yield + + def input_flow_tr(self) -> BRGeneratorType: + return self.input_flow_tt() + + def input_flow_t3t1(self) -> BRGeneratorType: + br = yield + while True: + # wait for homescreen to go away + # probably won't be needed after https://github.com/trezor/trezor-firmware/pull/3686 + self.debug.wait_layout() + # Paginating (going as further as possible) and pressing Yes + if br.pages is not None: + for _ in range(br.pages - 1): + self.debug.swipe_up(wait=True) + layout = self.debug.read_layout() + text = layout.text_content().lower() + # hi priority warning + if ("wrong derivation path" in text) or ("to a multisig" in text): + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.synchronize_at("VerticalMenu") + self.debug.click(buttons.VERTICAL_MENU[1]) + elif "swipe up" in layout.footer().lower(): + self.debug.swipe_up() + else: + self.debug.press_yes() + br = yield From 250593125cd85f91803db999835ca07a4c267f41 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 22 May 2024 02:02:20 +0200 Subject: [PATCH 160/626] feat(core): update translation strings Based on latest Figma designs. [no changelog] --- core/embed/rust/librust_qstr.h | 52 +++++ .../generated/translated_string.rs | 212 +++++++++++++++--- .../ui/model_mercury/flow/prompt_backup.rs | 2 +- core/mocks/trezortranslate_keys.pyi | 80 +++++-- core/src/trezor/ui/layouts/mercury/reset.py | 2 +- core/src/trezor/ui/layouts/tt/reset.py | 2 +- core/translations/en.json | 80 +++++-- core/translations/order.json | 54 ++++- core/translations/signatures.json | 6 +- .../test_shamir_persistence.py | 2 +- tests/upgrade_tests/test_firmware_upgrades.py | 2 +- 11 files changed, 429 insertions(+), 65 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index f1e8523a25..ac5a9dacf4 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -62,14 +62,19 @@ static void _librust_qstrs(void) { MP_QSTR_authenticate__header; MP_QSTR_auto_lock__change_template; MP_QSTR_auto_lock__title; + MP_QSTR_auto_lock__turned_on; MP_QSTR_backup__can_back_up_anytime; MP_QSTR_backup__create_backup_to_prevent_loss; + MP_QSTR_backup__info_multi_share_backup; + MP_QSTR_backup__info_single_share_backup; MP_QSTR_backup__it_should_be_backed_up; MP_QSTR_backup__it_should_be_backed_up_now; MP_QSTR_backup__new_wallet_created; MP_QSTR_backup__new_wallet_successfully_created; MP_QSTR_backup__recover_anytime; + MP_QSTR_backup__title_backup_completed; MP_QSTR_backup__title_backup_wallet; + MP_QSTR_backup__title_create_wallet_backup; MP_QSTR_backup__title_skip; MP_QSTR_backup__want_to_skip; MP_QSTR_bitcoin__commitment_data; @@ -228,6 +233,10 @@ static void _librust_qstrs(void) { MP_QSTR_flow_show_share_words; MP_QSTR_flow_warning_hi_prio; MP_QSTR_get_language; + MP_QSTR_haptic_feedback__disable; + MP_QSTR_haptic_feedback__enable; + MP_QSTR_haptic_feedback__subtitle; + MP_QSTR_haptic_feedback__title; MP_QSTR_hold; MP_QSTR_hold_danger; MP_QSTR_homescreen__click_to_connect; @@ -254,11 +263,20 @@ static void _librust_qstrs(void) { MP_QSTR_inputs__return; MP_QSTR_inputs__show; MP_QSTR_inputs__space; + MP_QSTR_instructions__continue_holding; MP_QSTR_instructions__continue_in_app; + MP_QSTR_instructions__enter_next_share; MP_QSTR_instructions__hold_to_confirm; + MP_QSTR_instructions__hold_to_continue; + MP_QSTR_instructions__hold_to_exit_tutorial; + MP_QSTR_instructions__hold_to_finish_tutorial; MP_QSTR_instructions__hold_to_sign; + MP_QSTR_instructions__learn_more; + MP_QSTR_instructions__shares_continue_with_x_template; + MP_QSTR_instructions__shares_start_with_1; MP_QSTR_instructions__swipe_up; MP_QSTR_instructions__tap_to_confirm; + MP_QSTR_instructions__tap_to_start; MP_QSTR_is_type_of; MP_QSTR_items; MP_QSTR_joint__title; @@ -312,6 +330,7 @@ static void _librust_qstrs(void) { MP_QSTR_passphrase__title_confirm; MP_QSTR_passphrase__title_enter; MP_QSTR_passphrase__title_hide; + MP_QSTR_passphrase__title_passphrase; MP_QSTR_passphrase__title_settings; MP_QSTR_passphrase__title_source; MP_QSTR_passphrase__turn_off; @@ -376,16 +395,23 @@ static void _librust_qstrs(void) { MP_QSTR_recovery__cancel_dry_run; MP_QSTR_recovery__check_dry_run; MP_QSTR_recovery__cursor_will_change; + MP_QSTR_recovery__dry_run_backup_not_on_this_device; MP_QSTR_recovery__dry_run_bip39_valid_match; MP_QSTR_recovery__dry_run_bip39_valid_mismatch; + MP_QSTR_recovery__dry_run_invalid_backup_entered; + MP_QSTR_recovery__dry_run_slip39_valid_all_shares; MP_QSTR_recovery__dry_run_slip39_valid_match; MP_QSTR_recovery__dry_run_slip39_valid_mismatch; + MP_QSTR_recovery__dry_run_slip39_valid_share; + MP_QSTR_recovery__dry_run_verify_remaining_shares; MP_QSTR_recovery__enter_any_share; MP_QSTR_recovery__enter_backup; MP_QSTR_recovery__enter_different_share; + MP_QSTR_recovery__enter_each_word; MP_QSTR_recovery__enter_share_from_diff_group; MP_QSTR_recovery__group_num_template; MP_QSTR_recovery__group_threshold_reached; + MP_QSTR_recovery__info_about_disconnect; MP_QSTR_recovery__invalid_share_entered; MP_QSTR_recovery__invalid_wallet_backup_entered; MP_QSTR_recovery__more_shares_needed; @@ -394,6 +420,7 @@ static void _librust_qstrs(void) { MP_QSTR_recovery__progress_will_be_lost; MP_QSTR_recovery__select_num_of_words; MP_QSTR_recovery__share_already_entered; + MP_QSTR_recovery__share_does_not_match; MP_QSTR_recovery__share_from_another_multi_share_backup; MP_QSTR_recovery__share_num_template; MP_QSTR_recovery__title; @@ -424,6 +451,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__button_create; MP_QSTR_reset__button_recover; MP_QSTR_reset__by_continuing; + MP_QSTR_reset__cancel_create_wallet; MP_QSTR_reset__check_backup_instructions; MP_QSTR_reset__check_backup_title; MP_QSTR_reset__check_group_share_title_template; @@ -439,6 +467,8 @@ static void _librust_qstrs(void) { MP_QSTR_reset__group_info; MP_QSTR_reset__group_share_checked_successfully_template; MP_QSTR_reset__group_share_title_template; + MP_QSTR_reset__incorrect_word_selected; + MP_QSTR_reset__more_at; MP_QSTR_reset__more_info_at; MP_QSTR_reset__need_all_share_template; MP_QSTR_reset__need_any_share_template; @@ -448,6 +478,8 @@ static void _librust_qstrs(void) { MP_QSTR_reset__num_of_share_holders_template; MP_QSTR_reset__num_of_shares_advanced_info_template; MP_QSTR_reset__num_of_shares_basic_info; + MP_QSTR_reset__num_of_shares_how_many; + MP_QSTR_reset__num_of_shares_long_info; MP_QSTR_reset__num_shares_for_group_template; MP_QSTR_reset__number_of_shares_info; MP_QSTR_reset__one_share; @@ -456,18 +488,22 @@ static void _librust_qstrs(void) { MP_QSTR_reset__recovery_wallet_backup_title; MP_QSTR_reset__required_number_of_groups; MP_QSTR_reset__select_correct_word; + MP_QSTR_reset__select_threshold; MP_QSTR_reset__select_word_template; MP_QSTR_reset__select_word_x_of_y_template; MP_QSTR_reset__set_it_to_count_template; MP_QSTR_reset__share_checked_successfully_template; + MP_QSTR_reset__share_completed_template; MP_QSTR_reset__share_words_title; MP_QSTR_reset__slip39_checklist_num_groups; MP_QSTR_reset__slip39_checklist_num_shares; + MP_QSTR_reset__slip39_checklist_num_shares_x_template; MP_QSTR_reset__slip39_checklist_set_num_groups; MP_QSTR_reset__slip39_checklist_set_num_shares; MP_QSTR_reset__slip39_checklist_set_sizes; MP_QSTR_reset__slip39_checklist_set_sizes_longer; MP_QSTR_reset__slip39_checklist_set_threshold; + MP_QSTR_reset__slip39_checklist_threshold_x_template; MP_QSTR_reset__slip39_checklist_title; MP_QSTR_reset__slip39_checklist_write_down; MP_QSTR_reset__slip39_checklist_write_down_recovery; @@ -549,6 +585,7 @@ static void _librust_qstrs(void) { MP_QSTR_send__total_amount; MP_QSTR_send__total_amount_colon; MP_QSTR_send__transaction_id; + MP_QSTR_send__transaction_signed; MP_QSTR_send__you_are_contributing; MP_QSTR_share_words; MP_QSTR_share_words__words_in_order; @@ -600,17 +637,28 @@ static void _librust_qstrs(void) { MP_QSTR_trezorproto; MP_QSTR_trezorui2; MP_QSTR_tutorial; + MP_QSTR_tutorial__continue; + MP_QSTR_tutorial__exit; + MP_QSTR_tutorial__first_transaction_finish; + MP_QSTR_tutorial__first_transaction_intro; + MP_QSTR_tutorial__menu; MP_QSTR_tutorial__middle_click; + MP_QSTR_tutorial__one_more_step; MP_QSTR_tutorial__press_and_hold; MP_QSTR_tutorial__ready_to_use; + MP_QSTR_tutorial__ready_to_use_safe5; MP_QSTR_tutorial__scroll_down; + MP_QSTR_tutorial__subtitle_safe5; MP_QSTR_tutorial__sure_you_want_skip; + MP_QSTR_tutorial__swipe_up_and_down; MP_QSTR_tutorial__title_hello; + MP_QSTR_tutorial__title_navigation; MP_QSTR_tutorial__title_screen_scroll; MP_QSTR_tutorial__title_skip; MP_QSTR_tutorial__title_tutorial_complete; MP_QSTR_tutorial__use_trezor; MP_QSTR_tutorial__welcome_press_right; + MP_QSTR_tutorial__welcome_safe5; MP_QSTR_type_for_name; MP_QSTR_type_for_wire; MP_QSTR_usb_event; @@ -660,6 +708,7 @@ static void _librust_qstrs(void) { MP_QSTR_words__error; MP_QSTR_words__fee; MP_QSTR_words__from; + MP_QSTR_words__good_to_know; MP_QSTR_words__important; MP_QSTR_words__instructions; MP_QSTR_words__keep_it_safe; @@ -667,11 +716,13 @@ static void _librust_qstrs(void) { MP_QSTR_words__my_trezor; MP_QSTR_words__no; MP_QSTR_words__not_recommended; + MP_QSTR_words__operation_cancelled; MP_QSTR_words__outputs; MP_QSTR_words__please_check_again; MP_QSTR_words__please_try_again; MP_QSTR_words__really_wanna; MP_QSTR_words__recipient; + MP_QSTR_words__settings; MP_QSTR_words__sign; MP_QSTR_words__signer; MP_QSTR_words__title_check; @@ -683,6 +734,7 @@ static void _librust_qstrs(void) { MP_QSTR_words__title_success; MP_QSTR_words__title_summary; MP_QSTR_words__title_threshold; + MP_QSTR_words__try_again; MP_QSTR_words__unknown; MP_QSTR_words__warning; MP_QSTR_words__writable; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 537d2b976b..0ccfe35a0d 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -25,13 +25,13 @@ pub enum TranslatedString { address_details__title_receiving_to = 12, // "Receiving to" authenticate__confirm_template = 13, // "Allow connected computer to confirm your {0} is genuine?" authenticate__header = 14, // "Authenticate device" - auto_lock__change_template = 15, // "Auto-lock your Trezor after {0} of inactivity?" + auto_lock__change_template = 15, // "Auto-lock Trezor after {0} of inactivity?" auto_lock__title = 16, // "Auto-lock delay" backup__can_back_up_anytime = 17, // "You can back up your Trezor once, at any time." backup__it_should_be_backed_up = 18, // "You should back up your new wallet right now." backup__it_should_be_backed_up_now = 19, // "It should be backed up now!" - backup__new_wallet_created = 20, // "New wallet created.\n" - backup__new_wallet_successfully_created = 21, // "New wallet created successfully." + backup__new_wallet_created = 20, // "Wallet created.\n" + backup__new_wallet_successfully_created = 21, // "Wallet created successfully." backup__recover_anytime = 22, // "You can use your backup to recover your wallet at any time." backup__title_backup_wallet = 23, // "Back up wallet" backup__title_skip = 24, // "Skip backup" @@ -717,11 +717,11 @@ pub enum TranslatedString { #[cfg(feature = "universal_fw")] nem__unknown_mosaic = 431, // "Unknown mosaic!" passphrase__access_hidden_wallet = 432, // "Access hidden wallet?" - passphrase__always_on_device = 433, // "Do you really want to enter passphrase always on the device?" + passphrase__always_on_device = 433, // "Always enter your passphrase on Trezor?" passphrase__from_host_not_shown = 434, // "Passphrase provided by host will be used but will not be displayed due to the device settings." passphrase__hidden_wallet = 435, // "Hidden wallet" passphrase__hide = 436, // "Hide passphrase coming from host?" - passphrase__next_screen_will_show_passphrase = 437, // "Next screen will show the passphrase." + passphrase__next_screen_will_show_passphrase = 437, // "The next screen shows your passphrase." passphrase__please_enter = 438, // "Please enter your passphrase." passphrase__revoke_on_device = 439, // "Do you want to revoke the passphrase on device setting?" passphrase__title_confirm = 440, // "Confirm passphrase" @@ -782,13 +782,13 @@ pub enum TranslatedString { recovery__cancel_dry_run = 495, // "Cancel backup check" recovery__check_dry_run = 496, // "Check your backup?" recovery__cursor_will_change = 497, // "Position of the cursor will change between entries for enhanced security." - recovery__dry_run_bip39_valid_match = 498, // "The entered recovery wallet backup is valid and matches the one in the device." + recovery__dry_run_bip39_valid_match = 498, // "The entered wallet backup is valid and matches the one in this device." recovery__dry_run_bip39_valid_mismatch = 499, // "The entered wallet backup is valid but does not match the one in the device." recovery__dry_run_slip39_valid_match = 500, // "The entered recovery shares are valid and match what is currently in the device." recovery__dry_run_slip39_valid_mismatch = 501, // "The entered recovery shares are valid but do not match what is currently in the device." recovery__enter_any_share = 502, // "Enter any share" recovery__enter_backup = 503, // "Enter your backup." - recovery__enter_different_share = 504, // "Please enter a different share." + recovery__enter_different_share = 504, // "Enter a different share." recovery__enter_share_from_diff_group = 505, // "Enter share from a different group." recovery__group_num_template = 506, // "Group {0}" recovery__group_threshold_reached = 507, // "Group threshold reached." @@ -800,7 +800,7 @@ pub enum TranslatedString { recovery__progress_will_be_lost = 513, // "All progress will be lost." recovery__select_num_of_words = 514, // "Select the number of words in your backup." recovery__share_already_entered = 515, // "Share already entered" - recovery__share_from_another_multi_share_backup = 516, // "You have entered a share from another multi-share backup." + recovery__share_from_another_multi_share_backup = 516, // "You have entered a share from a different backup." recovery__share_num_template = 517, // "Share {0}" recovery__title = 518, // "Recover wallet" recovery__title_cancel_dry_run = 519, // "Cancel backup check" @@ -809,14 +809,14 @@ pub enum TranslatedString { recovery__title_recover = 522, // "Recover wallet" recovery__title_remaining_shares = 523, // "Remaining shares" recovery__type_word_x_of_y_template = 524, // "Type word {0} of {1}" - recovery__wallet_recovered = 525, // "Wallet recovered successfully" + recovery__wallet_recovered = 525, // "Wallet recovery completed" recovery__wanna_cancel_dry_run = 526, // "Are you sure you want to cancel the backup check?" recovery__wanna_cancel_recovery = 527, // "Are you sure you want to cancel the recovery process?" recovery__word_count_template = 528, // "({0} words)" recovery__word_x_of_y_template = 529, // "Word {0} of {1}" recovery__x_more_items_starting_template_plural = 530, // "{count} more {plural} starting" - recovery__x_more_shares_needed_template_plural = 531, // "{count} more {plural} needed." - recovery__x_of_y_entered_template = 532, // "{0} of {1} shares entered successfully." + recovery__x_more_shares_needed_template_plural = 531, // "{count} more {plural} needed" + recovery__x_of_y_entered_template = 532, // "{0} of {1} shares entered" recovery__you_have_entered = 533, // "You have entered" reset__advanced_group_threshold_info = 534, // "The group threshold specifies the number of groups required to recover your wallet." reset__all_x_of_y_template = 535, // "all {0} of {1} shares" @@ -857,7 +857,7 @@ pub enum TranslatedString { reset__select_word_template = 570, // "Select {0} word" reset__select_word_x_of_y_template = 571, // "Select word {0} of {1}:" reset__set_it_to_count_template = 572, // "Set it to {0} and you will need " - reset__share_checked_successfully_template = 573, // "Recovery share #{0} checked successfully." + reset__share_checked_successfully_template = 573, // "Share #{0} checked successfully." reset__share_words_title = 574, // "Standard backup" reset__slip39_checklist_num_groups = 575, // "Number of groups" reset__slip39_checklist_num_shares = 576, // "Number of shares" @@ -868,7 +868,7 @@ pub enum TranslatedString { reset__slip39_checklist_set_threshold = 581, // "Set threshold" reset__slip39_checklist_title = 582, // "Backup checklist" reset__slip39_checklist_write_down = 583, // "Write down and check all shares" - reset__slip39_checklist_write_down_recovery = 584, // "Write down and check all recovery shares" + reset__slip39_checklist_write_down_recovery = 584, // "Write down & check all wallet backup shares" reset__the_threshold_sets_the_number_of_shares = 585, // "The threshold sets the number of shares " reset__threshold_info = 586, // "= minimum number of unique word lists used for recovery." reset__title_backup_is_done = 587, // "Backup is done" @@ -885,7 +885,7 @@ pub enum TranslatedString { reset__tos_link = 598, // "trezor.io/tos" reset__total_number_of_shares_in_group_template = 599, // "Set the total number of shares in Group {0}." reset__use_your_backup = 600, // "Use your backup when you need to recover your wallet." - reset__write_down_words_template = 601, // "Write down all {0} words in order." + reset__write_down_words_template = 601, // "Write the following {0} words in order on your wallet backup card." reset__wrong_word_selected = 602, // "Wrong word selected!" reset__you_need_one_share = 603, // "For recovery you need 1 share." reset__your_backup_is_done = 604, // "Your backup is done." @@ -1276,6 +1276,58 @@ pub enum TranslatedString { confirm_total__fee_rate = 876, // "Fee rate" send__incl_transaction_fee = 877, // "incl. Transaction fee" send__total_amount = 878, // "Total amount" + auto_lock__turned_on = 879, // "Auto-lock turned on" + backup__info_multi_share_backup = 880, // "Your wallet backup contains multiple lists of words in a specific order (shares)." + backup__info_single_share_backup = 881, // "Your wallet backup contains {0} words in a specific order." + backup__title_backup_completed = 882, // "Wallet backup completed" + backup__title_create_wallet_backup = 883, // "Create wallet backup" + haptic_feedback__disable = 884, // "Disable haptic feedback?" + haptic_feedback__enable = 885, // "Enable haptic feedback?" + haptic_feedback__subtitle = 886, // "Setting" + haptic_feedback__title = 887, // "Haptic feedback" + instructions__continue_holding = 888, // "Continue\nholding" + instructions__enter_next_share = 889, // "Enter next share" + instructions__hold_to_continue = 890, // "Hold to continue" + instructions__hold_to_exit_tutorial = 891, // "Hold to exit tutorial" + instructions__hold_to_finish_tutorial = 892, // "Hold to finish tutorial" + instructions__learn_more = 893, // "Learn more" + instructions__shares_continue_with_x_template = 894, // "Continue with Share #{0}" + instructions__shares_start_with_1 = 895, // "Start with share #1" + instructions__tap_to_start = 896, // "Tap to start" + passphrase__title_passphrase = 897, // "Passphrase" + recovery__dry_run_backup_not_on_this_device = 898, // "Wallet backup not on this device" + recovery__dry_run_invalid_backup_entered = 899, // "Invalid wallet backup entered" + recovery__dry_run_slip39_valid_all_shares = 900, // "All shares are valid and belong to the backup in this device" + recovery__dry_run_slip39_valid_share = 901, // "Entered share is valid and belongs to the backup in the device" + recovery__dry_run_verify_remaining_shares = 902, // "Verify remaining recovery shares?" + recovery__enter_each_word = 903, // "Enter each word of your wallet backup in order." + recovery__info_about_disconnect = 904, // "It's safe to disconnect your Trezor while recovering your wallet and continue later." + recovery__share_does_not_match = 905, // "Share doesn't match" + reset__cancel_create_wallet = 906, // "Cancel create wallet" + reset__incorrect_word_selected = 907, // "Incorrect word selected" + reset__more_at = 908, // "More at" + reset__num_of_shares_how_many = 909, // "How many wallet backup shares do you want to create?" + reset__num_of_shares_long_info = 910, // "Each recovery share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + reset__select_threshold = 911, // "Select the minimum shares required to recover your wallet." + reset__share_completed_template = 912, // "Share #{0} completed" + reset__slip39_checklist_num_shares_x_template = 913, // "Number of shares" + reset__slip39_checklist_threshold_x_template = 914, // "Recovery threshold:" + send__transaction_signed = 915, // "Transaction signed" + tutorial__continue = 916, // "Continue tutorial" + tutorial__exit = 917, // "Exit tutorial" + tutorial__first_transaction_finish = 918, // "took place on 12 January 2009." + tutorial__first_transaction_intro = 919, // "The world's first bitcoin transaction" + tutorial__menu = 920, // "Menu includes context-specific actions and options." + tutorial__one_more_step = 921, // "One more step..." + tutorial__ready_to_use_safe5 = 922, // "Well done!\nNow you're ready to use your Trezor Safe 5." + tutorial__subtitle_safe5 = 923, // "Trezor Safe 5 tutorial" + tutorial__swipe_up_and_down = 924, // "Swipe up & down to move through screens." + tutorial__title_navigation = 925, // "Navigation" + tutorial__welcome_safe5 = 926, // "Welcome to Trezor Safe 5." + words__good_to_know = 927, // "Good to know" + words__operation_cancelled = 928, // "Operation cancelled" + words__settings = 929, // "Settings" + words__try_again = 930, // "Try again." } impl TranslatedString { @@ -1296,13 +1348,13 @@ impl TranslatedString { Self::address_details__title_receiving_to => "Receiving to", Self::authenticate__confirm_template => "Allow connected computer to confirm your {0} is genuine?", Self::authenticate__header => "Authenticate device", - Self::auto_lock__change_template => "Auto-lock your Trezor after {0} of inactivity?", + Self::auto_lock__change_template => "Auto-lock Trezor after {0} of inactivity?", Self::auto_lock__title => "Auto-lock delay", Self::backup__can_back_up_anytime => "You can back up your Trezor once, at any time.", Self::backup__it_should_be_backed_up => "You should back up your new wallet right now.", Self::backup__it_should_be_backed_up_now => "It should be backed up now!", - Self::backup__new_wallet_created => "New wallet created.\n", - Self::backup__new_wallet_successfully_created => "New wallet created successfully.", + Self::backup__new_wallet_created => "Wallet created.\n", + Self::backup__new_wallet_successfully_created => "Wallet created successfully.", Self::backup__recover_anytime => "You can use your backup to recover your wallet at any time.", Self::backup__title_backup_wallet => "Back up wallet", Self::backup__title_skip => "Skip backup", @@ -1988,11 +2040,11 @@ impl TranslatedString { #[cfg(feature = "universal_fw")] Self::nem__unknown_mosaic => "Unknown mosaic!", Self::passphrase__access_hidden_wallet => "Access hidden wallet?", - Self::passphrase__always_on_device => "Do you really want to enter passphrase always on the device?", + Self::passphrase__always_on_device => "Always enter your passphrase on Trezor?", Self::passphrase__from_host_not_shown => "Passphrase provided by host will be used but will not be displayed due to the device settings.", Self::passphrase__hidden_wallet => "Hidden wallet", Self::passphrase__hide => "Hide passphrase coming from host?", - Self::passphrase__next_screen_will_show_passphrase => "Next screen will show the passphrase.", + Self::passphrase__next_screen_will_show_passphrase => "The next screen shows your passphrase.", Self::passphrase__please_enter => "Please enter your passphrase.", Self::passphrase__revoke_on_device => "Do you want to revoke the passphrase on device setting?", Self::passphrase__title_confirm => "Confirm passphrase", @@ -2053,13 +2105,13 @@ impl TranslatedString { Self::recovery__cancel_dry_run => "Cancel backup check", Self::recovery__check_dry_run => "Check your backup?", Self::recovery__cursor_will_change => "Position of the cursor will change between entries for enhanced security.", - Self::recovery__dry_run_bip39_valid_match => "The entered recovery wallet backup is valid and matches the one in the device.", + Self::recovery__dry_run_bip39_valid_match => "The entered wallet backup is valid and matches the one in this device.", Self::recovery__dry_run_bip39_valid_mismatch => "The entered wallet backup is valid but does not match the one in the device.", Self::recovery__dry_run_slip39_valid_match => "The entered recovery shares are valid and match what is currently in the device.", Self::recovery__dry_run_slip39_valid_mismatch => "The entered recovery shares are valid but do not match what is currently in the device.", Self::recovery__enter_any_share => "Enter any share", Self::recovery__enter_backup => "Enter your backup.", - Self::recovery__enter_different_share => "Please enter a different share.", + Self::recovery__enter_different_share => "Enter a different share.", Self::recovery__enter_share_from_diff_group => "Enter share from a different group.", Self::recovery__group_num_template => "Group {0}", Self::recovery__group_threshold_reached => "Group threshold reached.", @@ -2071,7 +2123,7 @@ impl TranslatedString { Self::recovery__progress_will_be_lost => "All progress will be lost.", Self::recovery__select_num_of_words => "Select the number of words in your backup.", Self::recovery__share_already_entered => "Share already entered", - Self::recovery__share_from_another_multi_share_backup => "You have entered a share from another multi-share backup.", + Self::recovery__share_from_another_multi_share_backup => "You have entered a share from a different backup.", Self::recovery__share_num_template => "Share {0}", Self::recovery__title => "Recover wallet", Self::recovery__title_cancel_dry_run => "Cancel backup check", @@ -2080,14 +2132,14 @@ impl TranslatedString { Self::recovery__title_recover => "Recover wallet", Self::recovery__title_remaining_shares => "Remaining shares", Self::recovery__type_word_x_of_y_template => "Type word {0} of {1}", - Self::recovery__wallet_recovered => "Wallet recovered successfully", + Self::recovery__wallet_recovered => "Wallet recovery completed", Self::recovery__wanna_cancel_dry_run => "Are you sure you want to cancel the backup check?", Self::recovery__wanna_cancel_recovery => "Are you sure you want to cancel the recovery process?", Self::recovery__word_count_template => "({0} words)", Self::recovery__word_x_of_y_template => "Word {0} of {1}", Self::recovery__x_more_items_starting_template_plural => "{count} more {plural} starting", - Self::recovery__x_more_shares_needed_template_plural => "{count} more {plural} needed.", - Self::recovery__x_of_y_entered_template => "{0} of {1} shares entered successfully.", + Self::recovery__x_more_shares_needed_template_plural => "{count} more {plural} needed", + Self::recovery__x_of_y_entered_template => "{0} of {1} shares entered", Self::recovery__you_have_entered => "You have entered", Self::reset__advanced_group_threshold_info => "The group threshold specifies the number of groups required to recover your wallet.", Self::reset__all_x_of_y_template => "all {0} of {1} shares", @@ -2128,7 +2180,7 @@ impl TranslatedString { Self::reset__select_word_template => "Select {0} word", Self::reset__select_word_x_of_y_template => "Select word {0} of {1}:", Self::reset__set_it_to_count_template => "Set it to {0} and you will need ", - Self::reset__share_checked_successfully_template => "Recovery share #{0} checked successfully.", + Self::reset__share_checked_successfully_template => "Share #{0} checked successfully.", Self::reset__share_words_title => "Standard backup", Self::reset__slip39_checklist_num_groups => "Number of groups", Self::reset__slip39_checklist_num_shares => "Number of shares", @@ -2139,7 +2191,7 @@ impl TranslatedString { Self::reset__slip39_checklist_set_threshold => "Set threshold", Self::reset__slip39_checklist_title => "Backup checklist", Self::reset__slip39_checklist_write_down => "Write down and check all shares", - Self::reset__slip39_checklist_write_down_recovery => "Write down and check all recovery shares", + Self::reset__slip39_checklist_write_down_recovery => "Write down & check all wallet backup shares", Self::reset__the_threshold_sets_the_number_of_shares => "The threshold sets the number of shares ", Self::reset__threshold_info => "= minimum number of unique word lists used for recovery.", Self::reset__title_backup_is_done => "Backup is done", @@ -2156,7 +2208,7 @@ impl TranslatedString { Self::reset__tos_link => "trezor.io/tos", Self::reset__total_number_of_shares_in_group_template => "Set the total number of shares in Group {0}.", Self::reset__use_your_backup => "Use your backup when you need to recover your wallet.", - Self::reset__write_down_words_template => "Write down all {0} words in order.", + Self::reset__write_down_words_template => "Write the following {0} words in order on your wallet backup card.", Self::reset__wrong_word_selected => "Wrong word selected!", Self::reset__you_need_one_share => "For recovery you need 1 share.", Self::reset__your_backup_is_done => "Your backup is done.", @@ -2547,6 +2599,58 @@ impl TranslatedString { Self::confirm_total__fee_rate => "Fee rate", Self::send__incl_transaction_fee => "incl. Transaction fee", Self::send__total_amount => "Total amount", + Self::auto_lock__turned_on => "Auto-lock turned on", + Self::backup__info_multi_share_backup => "Your wallet backup contains multiple lists of words in a specific order (shares).", + Self::backup__info_single_share_backup => "Your wallet backup contains {0} words in a specific order.", + Self::backup__title_backup_completed => "Wallet backup completed", + Self::backup__title_create_wallet_backup => "Create wallet backup", + Self::haptic_feedback__disable => "Disable haptic feedback?", + Self::haptic_feedback__enable => "Enable haptic feedback?", + Self::haptic_feedback__subtitle => "Setting", + Self::haptic_feedback__title => "Haptic feedback", + Self::instructions__continue_holding => "Continue\nholding", + Self::instructions__enter_next_share => "Enter next share", + Self::instructions__hold_to_continue => "Hold to continue", + Self::instructions__hold_to_exit_tutorial => "Hold to exit tutorial", + Self::instructions__hold_to_finish_tutorial => "Hold to finish tutorial", + Self::instructions__learn_more => "Learn more", + Self::instructions__shares_continue_with_x_template => "Continue with Share #{0}", + Self::instructions__shares_start_with_1 => "Start with share #1", + Self::instructions__tap_to_start => "Tap to start", + Self::passphrase__title_passphrase => "Passphrase", + Self::recovery__dry_run_backup_not_on_this_device => "Wallet backup not on this device", + Self::recovery__dry_run_invalid_backup_entered => "Invalid wallet backup entered", + Self::recovery__dry_run_slip39_valid_all_shares => "All shares are valid and belong to the backup in this device", + Self::recovery__dry_run_slip39_valid_share => "Entered share is valid and belongs to the backup in the device", + Self::recovery__dry_run_verify_remaining_shares => "Verify remaining recovery shares?", + Self::recovery__enter_each_word => "Enter each word of your wallet backup in order.", + Self::recovery__info_about_disconnect => "It's safe to disconnect your Trezor while recovering your wallet and continue later.", + Self::recovery__share_does_not_match => "Share doesn't match", + Self::reset__cancel_create_wallet => "Cancel create wallet", + Self::reset__incorrect_word_selected => "Incorrect word selected", + Self::reset__more_at => "More at", + Self::reset__num_of_shares_how_many => "How many wallet backup shares do you want to create?", + Self::reset__num_of_shares_long_info => "Each recovery share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + Self::reset__select_threshold => "Select the minimum shares required to recover your wallet.", + Self::reset__share_completed_template => "Share #{0} completed", + Self::reset__slip39_checklist_num_shares_x_template => "Number of shares", + Self::reset__slip39_checklist_threshold_x_template => "Recovery threshold:", + Self::send__transaction_signed => "Transaction signed", + Self::tutorial__continue => "Continue tutorial", + Self::tutorial__exit => "Exit tutorial", + Self::tutorial__first_transaction_finish => "took place on 12 January 2009.", + Self::tutorial__first_transaction_intro => "The world's first bitcoin transaction", + Self::tutorial__menu => "Menu includes context-specific actions and options.", + Self::tutorial__one_more_step => "One more step...", + Self::tutorial__ready_to_use_safe5 => "Well done!\nNow you're ready to use your Trezor Safe 5.", + Self::tutorial__subtitle_safe5 => "Trezor Safe 5 tutorial", + Self::tutorial__swipe_up_and_down => "Swipe up & down to move through screens.", + Self::tutorial__title_navigation => "Navigation", + Self::tutorial__welcome_safe5 => "Welcome to Trezor Safe 5.", + Self::words__good_to_know => "Good to know", + Self::words__operation_cancelled => "Operation cancelled", + Self::words__settings => "Settings", + Self::words__try_again => "Try again.", } } @@ -3819,6 +3923,58 @@ impl TranslatedString { Qstr::MP_QSTR_confirm_total__fee_rate => Some(Self::confirm_total__fee_rate), Qstr::MP_QSTR_send__incl_transaction_fee => Some(Self::send__incl_transaction_fee), Qstr::MP_QSTR_send__total_amount => Some(Self::send__total_amount), + Qstr::MP_QSTR_auto_lock__turned_on => Some(Self::auto_lock__turned_on), + Qstr::MP_QSTR_backup__info_multi_share_backup => Some(Self::backup__info_multi_share_backup), + Qstr::MP_QSTR_backup__info_single_share_backup => Some(Self::backup__info_single_share_backup), + Qstr::MP_QSTR_backup__title_backup_completed => Some(Self::backup__title_backup_completed), + Qstr::MP_QSTR_backup__title_create_wallet_backup => Some(Self::backup__title_create_wallet_backup), + Qstr::MP_QSTR_haptic_feedback__disable => Some(Self::haptic_feedback__disable), + Qstr::MP_QSTR_haptic_feedback__enable => Some(Self::haptic_feedback__enable), + Qstr::MP_QSTR_haptic_feedback__subtitle => Some(Self::haptic_feedback__subtitle), + Qstr::MP_QSTR_haptic_feedback__title => Some(Self::haptic_feedback__title), + Qstr::MP_QSTR_instructions__continue_holding => Some(Self::instructions__continue_holding), + Qstr::MP_QSTR_instructions__enter_next_share => Some(Self::instructions__enter_next_share), + Qstr::MP_QSTR_instructions__hold_to_continue => Some(Self::instructions__hold_to_continue), + Qstr::MP_QSTR_instructions__hold_to_exit_tutorial => Some(Self::instructions__hold_to_exit_tutorial), + Qstr::MP_QSTR_instructions__hold_to_finish_tutorial => Some(Self::instructions__hold_to_finish_tutorial), + Qstr::MP_QSTR_instructions__learn_more => Some(Self::instructions__learn_more), + Qstr::MP_QSTR_instructions__shares_continue_with_x_template => Some(Self::instructions__shares_continue_with_x_template), + Qstr::MP_QSTR_instructions__shares_start_with_1 => Some(Self::instructions__shares_start_with_1), + Qstr::MP_QSTR_instructions__tap_to_start => Some(Self::instructions__tap_to_start), + Qstr::MP_QSTR_passphrase__title_passphrase => Some(Self::passphrase__title_passphrase), + Qstr::MP_QSTR_recovery__dry_run_backup_not_on_this_device => Some(Self::recovery__dry_run_backup_not_on_this_device), + Qstr::MP_QSTR_recovery__dry_run_invalid_backup_entered => Some(Self::recovery__dry_run_invalid_backup_entered), + Qstr::MP_QSTR_recovery__dry_run_slip39_valid_all_shares => Some(Self::recovery__dry_run_slip39_valid_all_shares), + Qstr::MP_QSTR_recovery__dry_run_slip39_valid_share => Some(Self::recovery__dry_run_slip39_valid_share), + Qstr::MP_QSTR_recovery__dry_run_verify_remaining_shares => Some(Self::recovery__dry_run_verify_remaining_shares), + Qstr::MP_QSTR_recovery__enter_each_word => Some(Self::recovery__enter_each_word), + Qstr::MP_QSTR_recovery__info_about_disconnect => Some(Self::recovery__info_about_disconnect), + Qstr::MP_QSTR_recovery__share_does_not_match => Some(Self::recovery__share_does_not_match), + Qstr::MP_QSTR_reset__cancel_create_wallet => Some(Self::reset__cancel_create_wallet), + Qstr::MP_QSTR_reset__incorrect_word_selected => Some(Self::reset__incorrect_word_selected), + Qstr::MP_QSTR_reset__more_at => Some(Self::reset__more_at), + Qstr::MP_QSTR_reset__num_of_shares_how_many => Some(Self::reset__num_of_shares_how_many), + Qstr::MP_QSTR_reset__num_of_shares_long_info => Some(Self::reset__num_of_shares_long_info), + Qstr::MP_QSTR_reset__select_threshold => Some(Self::reset__select_threshold), + Qstr::MP_QSTR_reset__share_completed_template => Some(Self::reset__share_completed_template), + Qstr::MP_QSTR_reset__slip39_checklist_num_shares_x_template => Some(Self::reset__slip39_checklist_num_shares_x_template), + Qstr::MP_QSTR_reset__slip39_checklist_threshold_x_template => Some(Self::reset__slip39_checklist_threshold_x_template), + Qstr::MP_QSTR_send__transaction_signed => Some(Self::send__transaction_signed), + Qstr::MP_QSTR_tutorial__continue => Some(Self::tutorial__continue), + Qstr::MP_QSTR_tutorial__exit => Some(Self::tutorial__exit), + Qstr::MP_QSTR_tutorial__first_transaction_finish => Some(Self::tutorial__first_transaction_finish), + Qstr::MP_QSTR_tutorial__first_transaction_intro => Some(Self::tutorial__first_transaction_intro), + Qstr::MP_QSTR_tutorial__menu => Some(Self::tutorial__menu), + Qstr::MP_QSTR_tutorial__one_more_step => Some(Self::tutorial__one_more_step), + Qstr::MP_QSTR_tutorial__ready_to_use_safe5 => Some(Self::tutorial__ready_to_use_safe5), + Qstr::MP_QSTR_tutorial__subtitle_safe5 => Some(Self::tutorial__subtitle_safe5), + Qstr::MP_QSTR_tutorial__swipe_up_and_down => Some(Self::tutorial__swipe_up_and_down), + Qstr::MP_QSTR_tutorial__title_navigation => Some(Self::tutorial__title_navigation), + Qstr::MP_QSTR_tutorial__welcome_safe5 => Some(Self::tutorial__welcome_safe5), + Qstr::MP_QSTR_words__good_to_know => Some(Self::words__good_to_know), + Qstr::MP_QSTR_words__operation_cancelled => Some(Self::words__operation_cancelled), + Qstr::MP_QSTR_words__settings => Some(Self::words__settings), + Qstr::MP_QSTR_words__try_again => Some(Self::words__try_again), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index e13aa2c686..84ff800004 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -80,7 +80,7 @@ pub extern "C" fn new_prompt_backup(n_args: usize, args: *const Obj, kwargs: *mu impl PromptBackup { fn new_obj(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { - let title: TString = TR::backup__title_backup_wallet.into(); + let title: TString = TR::backup__title_create_wallet_backup.into(); let par_array: [Paragraph<'static>; 1] = [Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, // FIXME: should be "contains X words" but the mnemonic/shares are not yet generated at diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 3e9bb6e33d..675404a334 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -23,16 +23,21 @@ class TR: address_details__title_receiving_to: str = "Receiving to" authenticate__confirm_template: str = "Allow connected computer to confirm your {0} is genuine?" authenticate__header: str = "Authenticate device" - auto_lock__change_template: str = "Auto-lock your Trezor after {0} of inactivity?" + auto_lock__change_template: str = "Auto-lock Trezor after {0} of inactivity?" auto_lock__title: str = "Auto-lock delay" + auto_lock__turned_on: str = "Auto-lock turned on" backup__can_back_up_anytime: str = "You can back up your Trezor once, at any time." backup__create_backup_to_prevent_loss: str = "Create a backup to avoid losing access to your funds" + backup__info_multi_share_backup: str = "Your wallet backup contains multiple lists of words in a specific order (shares)." + backup__info_single_share_backup: str = "Your wallet backup contains {0} words in a specific order." backup__it_should_be_backed_up: str = "You should back up your new wallet right now." backup__it_should_be_backed_up_now: str = "It should be backed up now!" - backup__new_wallet_created: str = "New wallet created.\n" - backup__new_wallet_successfully_created: str = "New wallet created successfully." + backup__new_wallet_created: str = "Wallet created.\n" + backup__new_wallet_successfully_created: str = "Wallet created successfully." backup__recover_anytime: str = "You can use your backup to recover your wallet at any time." + backup__title_backup_completed: str = "Wallet backup completed" backup__title_backup_wallet: str = "Back up wallet" + backup__title_create_wallet_backup: str = "Create wallet backup" backup__title_skip: str = "Skip backup" backup__want_to_skip: str = "Are you sure you want to skip the backup?" binance__buy: str = "Buy" @@ -344,6 +349,10 @@ class TR: fido__wanna_erase_credentials: str = "Do you really want to erase all credentials?" firmware_update__title: str = "Update firmware" firmware_update__title_fingerprint: str = "FW fingerprint" + haptic_feedback__disable: str = "Disable haptic feedback?" + haptic_feedback__enable: str = "Enable haptic feedback?" + haptic_feedback__subtitle: str = "Setting" + haptic_feedback__title: str = "Haptic feedback" homescreen__click_to_connect: str = "Click to Connect" homescreen__click_to_unlock: str = "Click to Unlock" homescreen__title_backup_failed: str = "Backup failed" @@ -362,11 +371,20 @@ class TR: inputs__return: str = "RETURN" inputs__show: str = "SHOW" inputs__space: str = "SPACE" + instructions__continue_holding: str = "Continue\nholding" instructions__continue_in_app: str = "Continue in the app" + instructions__enter_next_share: str = "Enter next share" instructions__hold_to_confirm: str = "Hold to confirm" + instructions__hold_to_continue: str = "Hold to continue" + instructions__hold_to_exit_tutorial: str = "Hold to exit tutorial" + instructions__hold_to_finish_tutorial: str = "Hold to finish tutorial" instructions__hold_to_sign: str = "Hold to sign" + instructions__learn_more: str = "Learn more" + instructions__shares_continue_with_x_template: str = "Continue with Share #{0}" + instructions__shares_start_with_1: str = "Start with share #1" instructions__swipe_up: str = "Swipe up" instructions__tap_to_confirm: str = "Tap to confirm" + instructions__tap_to_start: str = "Tap to start" joint__title: str = "Joint transaction" joint__to_the_total_amount: str = "To the total amount:" joint__you_are_contributing: str = "You are contributing:" @@ -462,16 +480,17 @@ class TR: nem__unencrypted: str = "Unencrypted:" nem__unknown_mosaic: str = "Unknown mosaic!" passphrase__access_hidden_wallet: str = "Access hidden wallet?" - passphrase__always_on_device: str = "Do you really want to enter passphrase always on the device?" + passphrase__always_on_device: str = "Always enter your passphrase on Trezor?" passphrase__from_host_not_shown: str = "Passphrase provided by host will be used but will not be displayed due to the device settings." passphrase__hidden_wallet: str = "Hidden wallet" passphrase__hide: str = "Hide passphrase coming from host?" - passphrase__next_screen_will_show_passphrase: str = "Next screen will show the passphrase." + passphrase__next_screen_will_show_passphrase: str = "The next screen shows your passphrase." passphrase__please_enter: str = "Please enter your passphrase." passphrase__revoke_on_device: str = "Do you want to revoke the passphrase on device setting?" passphrase__title_confirm: str = "Confirm passphrase" passphrase__title_enter: str = "Enter passphrase" passphrase__title_hide: str = "Hide passphrase" + passphrase__title_passphrase: str = "Passphrase" passphrase__title_settings: str = "Passphrase settings" passphrase__title_source: str = "Passphrase source" passphrase__turn_off: str = "Turn off passphrase protection?" @@ -530,16 +549,23 @@ class TR: recovery__cancel_dry_run: str = "Cancel backup check" recovery__check_dry_run: str = "Check your backup?" recovery__cursor_will_change: str = "Position of the cursor will change between entries for enhanced security." - recovery__dry_run_bip39_valid_match: str = "The entered recovery wallet backup is valid and matches the one in the device." + recovery__dry_run_backup_not_on_this_device: str = "Wallet backup not on this device" + recovery__dry_run_bip39_valid_match: str = "The entered wallet backup is valid and matches the one in this device." recovery__dry_run_bip39_valid_mismatch: str = "The entered wallet backup is valid but does not match the one in the device." + recovery__dry_run_invalid_backup_entered: str = "Invalid wallet backup entered" + recovery__dry_run_slip39_valid_all_shares: str = "All shares are valid and belong to the backup in this device" recovery__dry_run_slip39_valid_match: str = "The entered recovery shares are valid and match what is currently in the device." recovery__dry_run_slip39_valid_mismatch: str = "The entered recovery shares are valid but do not match what is currently in the device." + recovery__dry_run_slip39_valid_share: str = "Entered share is valid and belongs to the backup in the device" + recovery__dry_run_verify_remaining_shares: str = "Verify remaining recovery shares?" recovery__enter_any_share: str = "Enter any share" recovery__enter_backup: str = "Enter your backup." - recovery__enter_different_share: str = "Please enter a different share." + recovery__enter_different_share: str = "Enter a different share." + recovery__enter_each_word: str = "Enter each word of your wallet backup in order." recovery__enter_share_from_diff_group: str = "Enter share from a different group." recovery__group_num_template: str = "Group {0}" recovery__group_threshold_reached: str = "Group threshold reached." + recovery__info_about_disconnect: str = "It's safe to disconnect your Trezor while recovering your wallet and continue later." recovery__invalid_share_entered: str = "Invalid recovery share entered." recovery__invalid_wallet_backup_entered: str = "Invalid wallet backup entered." recovery__more_shares_needed: str = "More shares needed" @@ -548,7 +574,8 @@ class TR: recovery__progress_will_be_lost: str = "All progress will be lost." recovery__select_num_of_words: str = "Select the number of words in your backup." recovery__share_already_entered: str = "Share already entered" - recovery__share_from_another_multi_share_backup: str = "You have entered a share from another multi-share backup." + recovery__share_does_not_match: str = "Share doesn't match" + recovery__share_from_another_multi_share_backup: str = "You have entered a share from a different backup." recovery__share_num_template: str = "Share {0}" recovery__title: str = "Recover wallet" recovery__title_cancel_dry_run: str = "Cancel backup check" @@ -557,14 +584,14 @@ class TR: recovery__title_recover: str = "Recover wallet" recovery__title_remaining_shares: str = "Remaining shares" recovery__type_word_x_of_y_template: str = "Type word {0} of {1}" - recovery__wallet_recovered: str = "Wallet recovered successfully" + recovery__wallet_recovered: str = "Wallet recovery completed" recovery__wanna_cancel_dry_run: str = "Are you sure you want to cancel the backup check?" recovery__wanna_cancel_recovery: str = "Are you sure you want to cancel the recovery process?" recovery__word_count_template: str = "({0} words)" recovery__word_x_of_y_template: str = "Word {0} of {1}" recovery__x_more_items_starting_template_plural: str = "{count} more {plural} starting" - recovery__x_more_shares_needed_template_plural: str = "{count} more {plural} needed." - recovery__x_of_y_entered_template: str = "{0} of {1} shares entered successfully." + recovery__x_more_shares_needed_template_plural: str = "{count} more {plural} needed" + recovery__x_of_y_entered_template: str = "{0} of {1} shares entered" recovery__you_have_entered: str = "You have entered" reset__advanced_group_threshold_info: str = "The group threshold specifies the number of groups required to recover your wallet." reset__all_x_of_y_template: str = "all {0} of {1} shares" @@ -572,6 +599,7 @@ class TR: reset__button_create: str = "Create wallet" reset__button_recover: str = "Recover wallet" reset__by_continuing: str = "By continuing you agree to Trezor Company's terms and conditions." + reset__cancel_create_wallet: str = "Cancel create wallet" reset__check_backup_instructions: str = "Let's do a quick check of your backup." reset__check_backup_title: str = "Check backup" reset__check_group_share_title_template: str = "Check g{0} - share {1}" @@ -587,6 +615,8 @@ class TR: reset__group_info: str = "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds." reset__group_share_checked_successfully_template: str = "Group {0} - Share {1} checked successfully." reset__group_share_title_template: str = "Group {0} - share {1}" + reset__incorrect_word_selected: str = "Incorrect word selected" + reset__more_at: str = "More at" reset__more_info_at: str = "More info at" reset__need_all_share_template: str = "For recovery you need all {0} of the shares." reset__need_any_share_template: str = "For recovery you need any {0} of the shares." @@ -596,6 +626,8 @@ class TR: reset__num_of_share_holders_template: str = "{0} people or locations will each hold one share." reset__num_of_shares_advanced_info_template: str = "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}." reset__num_of_shares_basic_info: str = "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." + reset__num_of_shares_how_many: str = "How many wallet backup shares do you want to create?" + reset__num_of_shares_long_info: str = "Each recovery share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." reset__num_shares_for_group_template: str = "The required number of shares to form Group {0}." reset__number_of_shares_info: str = "= total number of unique word lists used for wallet backup." reset__one_share: str = "1 share" @@ -604,21 +636,25 @@ class TR: reset__recovery_wallet_backup_title: str = "Wallet backup" reset__required_number_of_groups: str = "The required number of groups for recovery." reset__select_correct_word: str = "Select the correct word for each position." + reset__select_threshold: str = "Select the minimum shares required to recover your wallet." reset__select_word_template: str = "Select {0} word" reset__select_word_x_of_y_template: str = "Select word {0} of {1}:" reset__set_it_to_count_template: str = "Set it to {0} and you will need " - reset__share_checked_successfully_template: str = "Recovery share #{0} checked successfully." + reset__share_checked_successfully_template: str = "Share #{0} checked successfully." + reset__share_completed_template: str = "Share #{0} completed" reset__share_words_title: str = "Standard backup" reset__slip39_checklist_num_groups: str = "Number of groups" reset__slip39_checklist_num_shares: str = "Number of shares" + reset__slip39_checklist_num_shares_x_template: str = "Number of shares" reset__slip39_checklist_set_num_groups: str = "Set number of groups" reset__slip39_checklist_set_num_shares: str = "Set number of shares" reset__slip39_checklist_set_sizes: str = "Set sizes and thresholds" reset__slip39_checklist_set_sizes_longer: str = "Set size and threshold for each group" reset__slip39_checklist_set_threshold: str = "Set threshold" + reset__slip39_checklist_threshold_x_template: str = "Recovery threshold:" reset__slip39_checklist_title: str = "Backup checklist" reset__slip39_checklist_write_down: str = "Write down and check all shares" - reset__slip39_checklist_write_down_recovery: str = "Write down and check all recovery shares" + reset__slip39_checklist_write_down_recovery: str = "Write down & check all wallet backup shares" reset__the_threshold_sets_the_number_of_shares: str = "The threshold sets the number of shares " reset__threshold_info: str = "= minimum number of unique word lists used for recovery." reset__title_backup_is_done: str = "Backup is done" @@ -636,7 +672,7 @@ class TR: reset__total_number_of_shares_in_group_template: str = "Set the total number of shares in Group {0}." reset__use_your_backup: str = "Use your backup when you need to recover your wallet." reset__words_written_down_template: str = "I wrote down all {0} words in order." - reset__write_down_words_template: str = "Write down all {0} words in order." + reset__write_down_words_template: str = "Write the following {0} words in order on your wallet backup card." reset__wrong_word_selected: str = "Wrong word selected!" reset__you_need_one_share: str = "For recovery you need 1 share." reset__your_backup_is_done: str = "Your backup is done." @@ -695,6 +731,7 @@ class TR: send__total_amount: str = "Total amount" send__total_amount_colon: str = "Total amount:" send__transaction_id: str = "Transaction ID:" + send__transaction_signed: str = "Transaction signed" send__you_are_contributing: str = "You are contributing:" share_words__words_in_order: str = " words in order." share_words__wrote_down_all: str = "I wrote down all " @@ -800,17 +837,28 @@ class TR: tezos__submit_ballot: str = "Submit ballot" tezos__submit_proposal: str = "Submit proposal" tezos__submit_proposals: str = "Submit proposals" + tutorial__continue: str = "Continue tutorial" + tutorial__exit: str = "Exit tutorial" + tutorial__first_transaction_finish: str = "took place on 12 January 2009." + tutorial__first_transaction_intro: str = "The world's first bitcoin transaction" + tutorial__menu: str = "Menu includes context-specific actions and options." tutorial__middle_click: str = "Press both left and right at the same\ntime to confirm." + tutorial__one_more_step: str = "One more step..." tutorial__press_and_hold: str = "Press and hold the right button to\napprove important operations." tutorial__ready_to_use: str = "You're ready to\nuse Trezor." + tutorial__ready_to_use_safe5: str = "Well done!\nNow you're ready to use your Trezor Safe 5." tutorial__scroll_down: str = "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up." + tutorial__subtitle_safe5: str = "Trezor Safe 5 tutorial" tutorial__sure_you_want_skip: str = "Are you sure you\nwant to skip the tutorial?" + tutorial__swipe_up_and_down: str = "Swipe up & down to move through screens." tutorial__title_hello: str = "Hello" + tutorial__title_navigation: str = "Navigation" tutorial__title_screen_scroll: str = "Screen scroll" tutorial__title_skip: str = "Skip tutorial" tutorial__title_tutorial_complete: str = "Tutorial complete" tutorial__use_trezor: str = "Use Trezor by\nclicking the left and right buttons.\n\rContinue right." tutorial__welcome_press_right: str = "Welcome to Trezor. Press right to continue." + tutorial__welcome_safe5: str = "Welcome to Trezor Safe 5." u2f__get: str = "Increase and retrieve the U2F counter?" u2f__set_template: str = "Set the U2F counter to {0}?" u2f__title_get: str = "Get U2F counter" @@ -853,6 +901,7 @@ class TR: words__error: str = "Error" words__fee: str = "Fee" words__from: str = "from" + words__good_to_know: str = "Good to know" words__important: str = "Important" words__instructions: str = "Instructions" words__keep_it_safe: str = "Keep it safe!" @@ -860,11 +909,13 @@ class TR: words__my_trezor: str = "My Trezor" words__no: str = "No" words__not_recommended: str = "Not recommended!" + words__operation_cancelled: str = "Operation cancelled" words__outputs: str = "outputs" words__please_check_again: str = "Please check again" words__please_try_again: str = "Please try again" words__really_wanna: str = "Do you really want to" words__recipient: str = "Recipient" + words__settings: str = "Settings" words__sign: str = "Sign" words__signer: str = "Signer" words__title_check: str = "Check" @@ -876,6 +927,7 @@ class TR: words__title_success: str = "Success" words__title_summary: str = "Summary" words__title_threshold: str = "Threshold" + words__try_again: str = "Try again." words__unknown: str = "Unknown" words__warning: str = "Warning" words__writable: str = "Writable" diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 0eade07084..b568ab5c0d 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -237,7 +237,7 @@ def description(i: int): if i == 1: return TR.reset__only_one_share_will_be_created else: - return TR.reset__num_of_share_holders_template.format(i) + return TR.reset__num_of_shares_how_many else: return TR.reset__total_number_of_shares_in_group_template.format( group_id + 1 diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index 4ac805594e..cb4a4aff07 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -108,7 +108,7 @@ async def slip39_show_checklist(step: int, advanced: bool) -> None: ( TR.reset__slip39_checklist_set_num_shares, TR.reset__slip39_checklist_set_threshold, - TR.reset__slip39_checklist_write_down_recovery, + TR.reset__slip39_checklist_write_down, ) if not advanced else ( diff --git a/core/translations/en.json b/core/translations/en.json index 63c9f4b939..22672d7f23 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -25,16 +25,21 @@ "address_details__title_receiving_to": "Receiving to", "authenticate__confirm_template": "Allow connected computer to confirm your {0} is genuine?", "authenticate__header": "Authenticate device", - "auto_lock__change_template": "Auto-lock your Trezor after {0} of inactivity?", + "auto_lock__change_template": "Auto-lock Trezor after {0} of inactivity?", "auto_lock__title": "Auto-lock delay", + "auto_lock__turned_on": "Auto-lock turned on", "backup__can_back_up_anytime": "You can back up your Trezor once, at any time.", "backup__create_backup_to_prevent_loss": "Create a backup to avoid losing access to your funds", + "backup__info_multi_share_backup": "Your wallet backup contains multiple lists of words in a specific order (shares).", + "backup__info_single_share_backup": "Your wallet backup contains {0} words in a specific order.", "backup__it_should_be_backed_up": "You should back up your new wallet right now.", "backup__it_should_be_backed_up_now": "It should be backed up now!", - "backup__new_wallet_created": "New wallet created.\n", - "backup__new_wallet_successfully_created": "New wallet created successfully.", + "backup__new_wallet_created": "Wallet created.\n", + "backup__new_wallet_successfully_created": "Wallet created successfully.", "backup__recover_anytime": "You can use your backup to recover your wallet at any time.", + "backup__title_backup_completed": "Wallet backup completed", "backup__title_backup_wallet": "Back up wallet", + "backup__title_create_wallet_backup": "Create wallet backup", "backup__title_skip": "Skip backup", "backup__want_to_skip": "Are you sure you want to skip the backup?", "binance__buy": "Buy", @@ -346,6 +351,10 @@ "fido__wanna_erase_credentials": "Do you really want to erase all credentials?", "firmware_update__title": "Update firmware", "firmware_update__title_fingerprint": "FW fingerprint", + "haptic_feedback__title": "Haptic feedback", + "haptic_feedback__subtitle": "Setting", + "haptic_feedback__enable": "Enable haptic feedback?", + "haptic_feedback__disable": "Disable haptic feedback?", "homescreen__click_to_connect": "Click to Connect", "homescreen__click_to_unlock": "Click to Unlock", "homescreen__title_backup_failed": "Backup failed", @@ -365,10 +374,19 @@ "inputs__show": "SHOW", "inputs__space": "SPACE", "instructions__continue_in_app": "Continue in the app", + "instructions__continue_holding": "Continue\nholding", + "instructions__enter_next_share": "Enter next share", "instructions__hold_to_confirm": "Hold to confirm", + "instructions__hold_to_continue": "Hold to continue", + "instructions__hold_to_exit_tutorial": "Hold to exit tutorial", + "instructions__hold_to_finish_tutorial": "Hold to finish tutorial", "instructions__hold_to_sign": "Hold to sign", + "instructions__learn_more": "Learn more", + "instructions__shares_continue_with_x_template": "Continue with Share #{0}", + "instructions__shares_start_with_1": "Start with share #1", "instructions__swipe_up": "Swipe up", "instructions__tap_to_confirm": "Tap to confirm", + "instructions__tap_to_start": "Tap to start", "joint__title": "Joint transaction", "joint__to_the_total_amount": "To the total amount:", "joint__you_are_contributing": "You are contributing:", @@ -464,16 +482,17 @@ "nem__unencrypted": "Unencrypted:", "nem__unknown_mosaic": "Unknown mosaic!", "passphrase__access_hidden_wallet": "Access hidden wallet?", - "passphrase__always_on_device": "Do you really want to enter passphrase always on the device?", + "passphrase__always_on_device": "Always enter your passphrase on Trezor?", "passphrase__from_host_not_shown": "Passphrase provided by host will be used but will not be displayed due to the device settings.", "passphrase__hidden_wallet": "Hidden wallet", "passphrase__hide": "Hide passphrase coming from host?", - "passphrase__next_screen_will_show_passphrase": "Next screen will show the passphrase.", + "passphrase__next_screen_will_show_passphrase": "The next screen shows your passphrase.", "passphrase__please_enter": "Please enter your passphrase.", "passphrase__revoke_on_device": "Do you want to revoke the passphrase on device setting?", "passphrase__title_confirm": "Confirm passphrase", "passphrase__title_enter": "Enter passphrase", "passphrase__title_hide": "Hide passphrase", + "passphrase__title_passphrase": "Passphrase", "passphrase__title_settings": "Passphrase settings", "passphrase__title_source": "Passphrase source", "passphrase__turn_off": "Turn off passphrase protection?", @@ -532,16 +551,23 @@ "recovery__cancel_dry_run": "Cancel backup check", "recovery__check_dry_run": "Check your backup?", "recovery__cursor_will_change": "Position of the cursor will change between entries for enhanced security.", - "recovery__dry_run_bip39_valid_match": "The entered recovery wallet backup is valid and matches the one in the device.", + "recovery__dry_run_bip39_valid_match": "The entered wallet backup is valid and matches the one in this device.", "recovery__dry_run_bip39_valid_mismatch": "The entered wallet backup is valid but does not match the one in the device.", "recovery__dry_run_slip39_valid_match": "The entered recovery shares are valid and match what is currently in the device.", "recovery__dry_run_slip39_valid_mismatch": "The entered recovery shares are valid but do not match what is currently in the device.", + "recovery__dry_run_slip39_valid_share": "Entered share is valid and belongs to the backup in the device", + "recovery__dry_run_slip39_valid_all_shares": "All shares are valid and belong to the backup in this device", + "recovery__dry_run_backup_not_on_this_device": "Wallet backup not on this device", + "recovery__dry_run_invalid_backup_entered": "Invalid wallet backup entered", + "recovery__dry_run_verify_remaining_shares": "Verify remaining recovery shares?", "recovery__enter_any_share": "Enter any share", "recovery__enter_backup": "Enter your backup.", - "recovery__enter_different_share": "Please enter a different share.", + "recovery__enter_different_share": "Enter a different share.", + "recovery__enter_each_word": "Enter each word of your wallet backup in order.", "recovery__enter_share_from_diff_group": "Enter share from a different group.", "recovery__group_num_template": "Group {0}", "recovery__group_threshold_reached": "Group threshold reached.", + "recovery__info_about_disconnect": "It's safe to disconnect your Trezor while recovering your wallet and continue later.", "recovery__invalid_wallet_backup_entered": "Invalid wallet backup entered.", "recovery__invalid_share_entered": "Invalid recovery share entered.", "recovery__more_shares_needed": "More shares needed", @@ -550,7 +576,8 @@ "recovery__progress_will_be_lost": "All progress will be lost.", "recovery__select_num_of_words": "Select the number of words in your backup.", "recovery__share_already_entered": "Share already entered", - "recovery__share_from_another_multi_share_backup": "You have entered a share from another multi-share backup.", + "recovery__share_does_not_match": "Share doesn't match", + "recovery__share_from_another_multi_share_backup": "You have entered a share from a different backup.", "recovery__share_num_template": "Share {0}", "recovery__title": "Recover wallet", "recovery__title_cancel_dry_run": "Cancel backup check", @@ -559,14 +586,14 @@ "recovery__title_recover": "Recover wallet", "recovery__title_remaining_shares": "Remaining shares", "recovery__type_word_x_of_y_template": "Type word {0} of {1}", - "recovery__wallet_recovered": "Wallet recovered successfully", + "recovery__wallet_recovered": "Wallet recovery completed", "recovery__wanna_cancel_dry_run": "Are you sure you want to cancel the backup check?", "recovery__wanna_cancel_recovery": "Are you sure you want to cancel the recovery process?", "recovery__word_count_template": "({0} words)", "recovery__word_x_of_y_template": "Word {0} of {1}", "recovery__x_more_items_starting_template_plural": "{count} more {plural} starting", - "recovery__x_more_shares_needed_template_plural": "{count} more {plural} needed.", - "recovery__x_of_y_entered_template": "{0} of {1} shares entered successfully.", + "recovery__x_more_shares_needed_template_plural": "{count} more {plural} needed", + "recovery__x_of_y_entered_template": "{0} of {1} shares entered", "recovery__you_have_entered": "You have entered", "reset__advanced_group_threshold_info": "The group threshold specifies the number of groups required to recover your wallet.", "reset__all_x_of_y_template": "all {0} of {1} shares", @@ -574,6 +601,7 @@ "reset__button_create": "Create wallet", "reset__button_recover": "Recover wallet", "reset__by_continuing": "By continuing you agree to Trezor Company's terms and conditions.", + "reset__cancel_create_wallet": "Cancel create wallet", "reset__check_backup_title": "Check backup", "reset__check_group_share_title_template": "Check g{0} - share {1}", "reset__check_wallet_backup_title": "Check wallet backup", @@ -589,6 +617,8 @@ "reset__group_info": "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds.", "reset__group_share_checked_successfully_template": "Group {0} - Share {1} checked successfully.", "reset__group_share_title_template": "Group {0} - share {1}", + "reset__incorrect_word_selected": "Incorrect word selected", + "reset__more_at": "More at", "reset__more_info_at": "More info at", "reset__need_all_share_template": "For recovery you need all {0} of the shares.", "reset__need_any_share_template": "For recovery you need any {0} of the shares.", @@ -596,8 +626,10 @@ "reset__needed_to_recover_your_wallet": "needed to recover your wallet. ", "reset__never_make_digital_copy": "Never put your backup anywhere digital.", "reset__num_of_share_holders_template": "{0} people or locations will each hold one share.", + "reset__num_of_shares_how_many": "How many wallet backup shares do you want to create?", "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}.", "reset__num_of_shares_basic_info": "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", + "reset__num_of_shares_long_info": "Each recovery share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", "reset__num_shares_for_group_template": "The required number of shares to form Group {0}.", "reset__number_of_shares_info": "= total number of unique word lists used for wallet backup.", "reset__one_share": "1 share", @@ -606,21 +638,25 @@ "reset__recovery_share_title_template": "Recovery share #{0}", "reset__required_number_of_groups": "The required number of groups for recovery.", "reset__select_correct_word": "Select the correct word for each position.", + "reset__select_threshold": "Select the minimum shares required to recover your wallet.", "reset__select_word_template": "Select {0} word", "reset__select_word_x_of_y_template": "Select word {0} of {1}:", "reset__set_it_to_count_template": "Set it to {0} and you will need ", - "reset__share_checked_successfully_template": "Recovery share #{0} checked successfully.", + "reset__share_checked_successfully_template": "Share #{0} checked successfully.", + "reset__share_completed_template": "Share #{0} completed", "reset__share_words_title": "Standard backup", "reset__slip39_checklist_num_groups": "Number of groups", "reset__slip39_checklist_num_shares": "Number of shares", + "reset__slip39_checklist_num_shares_x_template": "Number of shares", "reset__slip39_checklist_set_num_groups": "Set number of groups", "reset__slip39_checklist_set_num_shares": "Set number of shares", "reset__slip39_checklist_set_sizes": "Set sizes and thresholds", "reset__slip39_checklist_set_sizes_longer": "Set size and threshold for each group", "reset__slip39_checklist_set_threshold": "Set threshold", + "reset__slip39_checklist_threshold_x_template": "Recovery threshold:", "reset__slip39_checklist_title": "Backup checklist", "reset__slip39_checklist_write_down": "Write down and check all shares", - "reset__slip39_checklist_write_down_recovery": "Write down and check all recovery shares", + "reset__slip39_checklist_write_down_recovery": "Write down & check all wallet backup shares", "reset__the_threshold_sets_the_number_of_shares": "The threshold sets the number of shares ", "reset__threshold_info": "= minimum number of unique word lists used for recovery.", "reset__title_backup_is_done": "Backup is done", @@ -638,7 +674,7 @@ "reset__total_number_of_shares_in_group_template": "Set the total number of shares in Group {0}.", "reset__use_your_backup": "Use your backup when you need to recover your wallet.", "reset__words_written_down_template": "I wrote down all {0} words in order.", - "reset__write_down_words_template": "Write down all {0} words in order.", + "reset__write_down_words_template": "Write the following {0} words in order on your wallet backup card.", "reset__wrong_word_selected": "Wrong word selected!", "reset__you_need_one_share": "For recovery you need 1 share.", "reset__your_backup_is_done": "Your backup is done.", @@ -697,6 +733,7 @@ "send__total_amount": "Total amount", "send__total_amount_colon": "Total amount:", "send__transaction_id": "Transaction ID:", + "send__transaction_signed": "Transaction signed", "send__you_are_contributing": "You are contributing:", "share_words__words_in_order": " words in order.", "share_words__wrote_down_all": "I wrote down all ", @@ -802,17 +839,28 @@ "tezos__submit_ballot": "Submit ballot", "tezos__submit_proposal": "Submit proposal", "tezos__submit_proposals": "Submit proposals", + "tutorial__continue": "Continue tutorial", + "tutorial__exit": "Exit tutorial", + "tutorial__menu": "Menu includes context-specific actions and options.", "tutorial__middle_click": "Press both left and right at the same\ntime to confirm.", + "tutorial__one_more_step": "One more step...", "tutorial__press_and_hold": "Press and hold the right button to\napprove important operations.", "tutorial__ready_to_use": "You're ready to\nuse Trezor.", + "tutorial__ready_to_use_safe5": "Well done!\nNow you're ready to use your Trezor Safe 5.", "tutorial__scroll_down": "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", "tutorial__sure_you_want_skip": "Are you sure you\nwant to skip the tutorial?", + "tutorial__subtitle_safe5": "Trezor Safe 5 tutorial", + "tutorial__swipe_up_and_down": "Swipe up & down to move through screens.", "tutorial__title_hello": "Hello", + "tutorial__title_navigation": "Navigation", "tutorial__title_screen_scroll": "Screen scroll", "tutorial__title_skip": "Skip tutorial", "tutorial__title_tutorial_complete": "Tutorial complete", "tutorial__use_trezor": "Use Trezor by\nclicking the left and right buttons.\n\rContinue right.", "tutorial__welcome_press_right": "Welcome to Trezor. Press right to continue.", + "tutorial__welcome_safe5": "Welcome to Trezor Safe 5.", + "tutorial__first_transaction_intro": "The world's first bitcoin transaction", + "tutorial__first_transaction_finish": "took place on 12 January 2009.", "u2f__get": "Increase and retrieve the U2F counter?", "u2f__set_template": "Set the U2F counter to {0}?", "u2f__title_get": "Get U2F counter", @@ -855,6 +903,7 @@ "words__error": "Error", "words__fee": "Fee", "words__from": "from", + "words__good_to_know": "Good to know", "words__important": "Important", "words__instructions": "Instructions", "words__keep_it_safe": "Keep it safe!", @@ -862,11 +911,13 @@ "words__my_trezor": "My Trezor", "words__no": "No", "words__not_recommended": "Not recommended!", + "words__operation_cancelled": "Operation cancelled", "words__outputs": "outputs", "words__please_check_again": "Please check again", "words__please_try_again": "Please try again", "words__really_wanna": "Do you really want to", "words__recipient": "Recipient", + "words__settings": "Settings", "words__sign": "Sign", "words__signer": "Signer", "words__title_check": "Check", @@ -878,6 +929,7 @@ "words__title_success": "Success", "words__title_summary": "Summary", "words__title_threshold": "Threshold", + "words__try_again": "Try again.", "words__unknown": "Unknown", "words__warning": "Warning", "words__writable": "Writable", diff --git a/core/translations/order.json b/core/translations/order.json index c24bf027a4..310497d629 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -877,5 +877,57 @@ "875": "instructions__hold_to_sign", "876": "confirm_total__fee_rate", "877": "send__incl_transaction_fee", - "878": "send__total_amount" + "878": "send__total_amount", + "879": "auto_lock__turned_on", + "880": "backup__info_multi_share_backup", + "881": "backup__info_single_share_backup", + "882": "backup__title_backup_completed", + "883": "backup__title_create_wallet_backup", + "884": "haptic_feedback__disable", + "885": "haptic_feedback__enable", + "886": "haptic_feedback__subtitle", + "887": "haptic_feedback__title", + "888": "instructions__continue_holding", + "889": "instructions__enter_next_share", + "890": "instructions__hold_to_continue", + "891": "instructions__hold_to_exit_tutorial", + "892": "instructions__hold_to_finish_tutorial", + "893": "instructions__learn_more", + "894": "instructions__shares_continue_with_x_template", + "895": "instructions__shares_start_with_1", + "896": "instructions__tap_to_start", + "897": "passphrase__title_passphrase", + "898": "recovery__dry_run_backup_not_on_this_device", + "899": "recovery__dry_run_invalid_backup_entered", + "900": "recovery__dry_run_slip39_valid_all_shares", + "901": "recovery__dry_run_slip39_valid_share", + "902": "recovery__dry_run_verify_remaining_shares", + "903": "recovery__enter_each_word", + "904": "recovery__info_about_disconnect", + "905": "recovery__share_does_not_match", + "906": "reset__cancel_create_wallet", + "907": "reset__incorrect_word_selected", + "908": "reset__more_at", + "909": "reset__num_of_shares_how_many", + "910": "reset__num_of_shares_long_info", + "911": "reset__select_threshold", + "912": "reset__share_completed_template", + "913": "reset__slip39_checklist_num_shares_x_template", + "914": "reset__slip39_checklist_threshold_x_template", + "915": "send__transaction_signed", + "916": "tutorial__continue", + "917": "tutorial__exit", + "918": "tutorial__first_transaction_finish", + "919": "tutorial__first_transaction_intro", + "920": "tutorial__menu", + "921": "tutorial__one_more_step", + "922": "tutorial__ready_to_use_safe5", + "923": "tutorial__subtitle_safe5", + "924": "tutorial__swipe_up_and_down", + "925": "tutorial__title_navigation", + "926": "tutorial__welcome_safe5", + "927": "words__good_to_know", + "928": "words__operation_cancelled", + "929": "words__settings", + "930": "words__try_again" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 626bf5fa71..0c2086a5d2 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "329b06dbf2564bf17ba46d2b3304f91df15abc42794763a55ea33bc04281ac42", - "datetime": "2024-05-20T15:37:23.831427", - "commit": "2a5dc6f8d54701e86c32451fb154d3e40a778ca9" + "merkle_root": "070867d6d288bb46d1eb69dd95bc6d7b6fc09a3f299c75e997d756e7915860d6", + "datetime": "2024-05-22T11:43:31.930638", + "commit": "6bd6027a57b814483947f98aeb118a15f846e3bb" }, "history": [ { diff --git a/tests/persistence_tests/test_shamir_persistence.py b/tests/persistence_tests/test_shamir_persistence.py index 53553d8399..709599f9c5 100644 --- a/tests/persistence_tests/test_shamir_persistence.py +++ b/tests/persistence_tests/test_shamir_persistence.py @@ -179,7 +179,7 @@ def enter_shares_with_restarts(debug: DebugLink) -> None: expected_text = "You have entered" debug = _restart(device_handler, core_emulator) - assert "Wallet recovered successfully" in layout.text_content() + assert "Wallet recovery completed" in layout.text_content() device_handler = BackgroundDeviceHandler(core_emulator.client) debug = device_handler.debuglink() diff --git a/tests/upgrade_tests/test_firmware_upgrades.py b/tests/upgrade_tests/test_firmware_upgrades.py index c536296f56..a878b46ff0 100644 --- a/tests/upgrade_tests/test_firmware_upgrades.py +++ b/tests/upgrade_tests/test_firmware_upgrades.py @@ -326,7 +326,7 @@ def test_upgrade_shamir_recovery(gen: str, tag: Optional[str]): # last one layout = recovery_old.enter_share(debug, MNEMONIC_SLIP39_BASIC_20_3of6[1]) assert ( - "Wallet recovered successfully" in layout.text_content() + "Wallet recovery completed" in layout.text_content() or "finished recovering" in layout.text_content() ) From 4d462e48f0052bbf5167c3587778f8b24c856c9f Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 22 May 2024 15:45:49 +0200 Subject: [PATCH 161/626] fix(tests): check_share helper for T2B1 [no changelog] --- tests/common.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/common.py b/tests/common.py index 889283bbab..1f734e643a 100644 --- a/tests/common.py +++ b/tests/common.py @@ -272,8 +272,12 @@ def check_share( three rounds of `Select word X of Y` choices. """ for _ in range(3): - # Word position is the first number in the text - word_pos_match = re.search(r"\d+", debug.wait_layout().text_content()) + if debug.model is models.T2B1: + # T2B1 has the instruction in the title + word_pos_match = re.search(r"\d+", debug.wait_layout().title()) + else: + # Other models has position as the first number in the text + word_pos_match = re.search(r"\d+", debug.wait_layout().text_content()) assert word_pos_match is not None word_pos = int(word_pos_match.group(0)) From f11c2891d8405bbe251d63d7024822fc6c844878 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 16 May 2024 17:10:18 +0200 Subject: [PATCH 162/626] feat(core/ui): allow rounded mercury button [no changelog] --- .../src/ui/model_mercury/component/button.rs | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 1ff580f750..776d04f216 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -31,6 +31,7 @@ pub struct Button { content: ButtonContent, styles: ButtonStyleSheet, text_align: Alignment, + radius: Option<u8>, state: State, long_press: Option<Duration>, long_timer: Option<TimerToken>, @@ -49,6 +50,7 @@ impl Button { touch_expand: None, styles: theme::button_default(), text_align: Alignment::Start, + radius: None, state: State::Initial, long_press: None, long_timer: None, @@ -95,6 +97,11 @@ impl Button { self } + pub fn with_radius(mut self, radius: u8) -> Self { + self.radius = Some(radius); + self + } + pub fn enable_if(&mut self, ctx: &mut EventCtx, enabled: bool) { if enabled { self.enable(ctx); @@ -178,10 +185,21 @@ impl Button { pub fn render_background<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) { match &self.content { ButtonContent::IconBlend(_, _, _) => {} - _ => shape::Bar::new(self.area) - .with_bg(style.button_color) - .with_fg(style.button_color) - .render(target), + _ => { + if self.radius.is_some() { + shape::Bar::new(self.area) + .with_bg(style.background_color) + .with_radius(self.radius.unwrap() as i16) + .with_thickness(2) + .with_fg(style.button_color) + .render(target); + } else { + shape::Bar::new(self.area) + .with_bg(style.button_color) + .with_fg(style.button_color) + .render(target); + } + } } } From 3f0ab537af6e34e56ab72bf367b927e4db88c9d0 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 16 May 2024 17:10:57 +0200 Subject: [PATCH 163/626] feat(core/ui): T3T1 passphrase keyboard [no changelog] --- .../component/keyboard/passphrase.rs | 304 ++++++++++-------- .../model_mercury/component/keyboard/pin.rs | 5 +- .../src/ui/model_mercury/component/mod.rs | 2 + .../ui/model_mercury/component/share_words.rs | 4 +- .../embed/rust/src/ui/model_mercury/layout.rs | 2 +- .../rust/src/ui/model_mercury/theme/mod.rs | 128 +++++--- 6 files changed, 266 insertions(+), 179 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index ed7aa26c35..645882cee1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -1,16 +1,17 @@ use crate::{ strutil::TString, + translations::TR, ui::{ component::{ - base::ComponentExt, text::common::TextBox, Child, Component, Event, EventCtx, Never, + base::ComponentExt, text::common::TextBox, Child, Component, Event, EventCtx, Label, + Maybe, Never, Swipe, SwipeDirection, }, display, - geometry::{Grid, Offset, Rect}, + geometry::{Alignment, Grid, Insets, Offset, Rect}, model_mercury::component::{ button::{Button, ButtonContent, ButtonMsg}, - keyboard::common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, - swipe::{Swipe, SwipeDirection}, - theme, ScrollBar, + keyboard::common::{render_pending_marker, MultiTapKeyboard}, + theme, }, shape, shape::Renderer, @@ -19,57 +20,126 @@ use crate::{ }; use core::cell::Cell; +use num_traits::ToPrimitive; pub enum PassphraseKeyboardMsg { Confirmed, Cancelled, } +/// Enum keeping track of which keyboard is shown and which comes next. Keep the +/// number of values and the constant PAGE_COUNT in synch. +#[repr(u32)] +#[derive(Copy, Clone, ToPrimitive)] +enum KeyboardLayout { + LettersLower = 0, + LettersUpper = 1, + Numeric = 2, + Special = 3, +} + +impl KeyboardLayout { + fn next(self) -> Self { + match self { + Self::LettersLower => Self::LettersUpper, + Self::LettersUpper => Self::Numeric, + Self::Numeric => Self::Special, + Self::Special => Self::LettersLower, + } + } + + fn prev(self) -> Self { + match self { + Self::LettersLower => Self::Special, + Self::LettersUpper => Self::LettersLower, + Self::Numeric => Self::LettersUpper, + Self::Special => Self::Numeric, + } + } +} + +impl From<KeyboardLayout> for ButtonContent { + /// Used to get content for the "next keyboard" button + fn from(kl: KeyboardLayout) -> Self { + match kl { + KeyboardLayout::LettersLower => ButtonContent::Text("abc".into()), + KeyboardLayout::LettersUpper => ButtonContent::Text("ABC".into()), + KeyboardLayout::Numeric => ButtonContent::Text("123".into()), + KeyboardLayout::Special => ButtonContent::Icon(theme::ICON_ASTERISK), + } + } +} + pub struct PassphraseKeyboard { page_swipe: Swipe, input: Child<Input>, - back: Child<Button>, - confirm: Child<Button>, + input_prompt: Child<Label<'static>>, + erase_btn: Child<Maybe<Button>>, + cancel_btn: Child<Maybe<Button>>, + confirm_btn: Child<Maybe<Button>>, + next_btn: Child<Button>, keys: [Child<Button>; KEY_COUNT], - scrollbar: ScrollBar, + active_layout: KeyboardLayout, fade: Cell<bool>, } -const STARTING_PAGE: usize = 1; const PAGE_COUNT: usize = 4; const KEY_COUNT: usize = 10; #[rustfmt::skip] const KEYBOARD: [[&str; KEY_COUNT]; PAGE_COUNT] = [ + ["abc", "def", "ghi", "jkl", "mno", "pq", "rst", "uvq", "xyz", " *#"], + ["ABC", "DEF", "GHI", "JKL", "MNO", "PQ", "RST", "UVQ", "XYZ", " *#"], ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"], - [" ", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz", "*#"], - [" ", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ", "*#"], ["_<>", ".:@", "/|\\", "!()", "+%&", "-[]", "?{}", ",'`", ";\"~", "$^="], ]; const MAX_LENGTH: usize = 50; -const INPUT_AREA_HEIGHT: i16 = ScrollBar::DOT_SIZE + 9; impl PassphraseKeyboard { pub fn new() -> Self { + let active_layout = KeyboardLayout::LettersLower; + + let confirm_btn = Button::with_icon(theme::ICON_CONFIRM) + .styled(theme::button_passphrase_confirm()) + .with_radius(15) + .initially_enabled(false); + let confirm_btn = Maybe::hidden(theme::BG, confirm_btn).into_child(); + + let next_btn = Button::new(active_layout.next().into()) + .styled(theme::button_passphrase_next()) + .with_text_align(Alignment::Center) + .into_child(); + + let erase_btn = Button::with_icon(theme::ICON_DELETE) + .styled(theme::button_keyboard_erase()) + .with_long_press(theme::ERASE_HOLD_DURATION) + .initially_enabled(false); + let erase_btn = Maybe::hidden(theme::BG, erase_btn).into_child(); + + let cancel_btn = + Button::with_icon(theme::ICON_CLOSE).styled(theme::button_keyboard_cancel()); + let cancel_btn = Maybe::visible(theme::BG, cancel_btn).into_child(); + Self { page_swipe: Swipe::horizontal(), input: Input::new().into_child(), - confirm: Button::with_icon(theme::ICON_CONFIRM) - .styled(theme::button_confirm()) - .into_child(), - back: Button::with_icon_blend( - theme::IMAGE_BG_BACK_BTN, - theme::ICON_BACK, - Offset::new(30, 12), + input_prompt: Label::left_aligned( + TString::from_translation(TR::passphrase__title_enter), + theme::label_keyboard(), ) - .styled(theme::button_reset()) - .initially_enabled(false) - .with_long_press(theme::ERASE_HOLD_DURATION) .into_child(), - keys: KEYBOARD[STARTING_PAGE].map(|text| { - Child::new(Button::new(Self::key_content(text)).styled(theme::button_keyboard())) + erase_btn, + cancel_btn, + confirm_btn, + next_btn, + keys: KEYBOARD[active_layout.to_usize().unwrap()].map(|text| { + Child::new( + Button::new(Self::key_content(text)) + .styled(theme::button_keyboard()) + .with_text_align(Alignment::Center), + ) }), - scrollbar: ScrollBar::horizontal(), + active_layout, fade: Cell::new(false), } } @@ -77,6 +147,7 @@ impl PassphraseKeyboard { fn key_text(content: &ButtonContent) -> TString<'static> { match content { ButtonContent::Text(text) => *text, + ButtonContent::Icon(theme::ICON_SPECIAL_CHARS_GROUP) => " *#".into(), ButtonContent::Icon(_) => " ".into(), ButtonContent::IconAndText(_) => " ".into(), ButtonContent::Empty => "".into(), @@ -86,25 +157,23 @@ impl PassphraseKeyboard { fn key_content(text: &'static str) -> ButtonContent { match text { - " " => ButtonContent::Icon(theme::ICON_SPACE), + " *#" => ButtonContent::Icon(theme::ICON_SPECIAL_CHARS_GROUP), t => ButtonContent::Text(t.into()), } } - fn on_page_swipe(&mut self, ctx: &mut EventCtx, swipe: SwipeDirection) { - // Change the page number. - let key_page = self.scrollbar.active_page; - let key_page = match swipe { - SwipeDirection::Left => (key_page as isize + 1) as usize % PAGE_COUNT, - SwipeDirection::Right => (key_page as isize - 1) as usize % PAGE_COUNT, - _ => key_page, + fn on_page_change(&mut self, ctx: &mut EventCtx, swipe: SwipeDirection) { + // Change the keyboard layout. + self.active_layout = match swipe { + SwipeDirection::Left => self.active_layout.next(), + SwipeDirection::Right => self.active_layout.prev(), + _ => self.active_layout, }; - self.scrollbar.go_to(key_page); // Clear the pending state. self.input .mutate(ctx, |ctx, i| i.multi_tap.clear_pending_state(ctx)); - // Update buttons. - self.replace_button_content(ctx, key_page); + // Update keys. + self.replace_keys_contents(ctx); // Reset backlight to normal level on next paint. self.fade.set(true); // So that swipe does not visually enable the input buttons when max length @@ -112,9 +181,12 @@ impl PassphraseKeyboard { self.update_input_btns_state(ctx); } - fn replace_button_content(&mut self, ctx: &mut EventCtx, page: usize) { + fn replace_keys_contents(&mut self, ctx: &mut EventCtx) { + self.next_btn.mutate(ctx, |ctx, b| { + b.set_content(ctx, self.active_layout.next().into()); + }); for (i, btn) in self.keys.iter_mut().enumerate() { - let text = KEYBOARD[page][i]; + let text = KEYBOARD[self.active_layout.to_usize().unwrap()][i]; let content = Self::key_content(text); btn.mutate(ctx, |ctx, b| b.set_content(ctx, content)); btn.request_complete_repaint(ctx); @@ -123,17 +195,23 @@ impl PassphraseKeyboard { /// Possibly changing the buttons' state after change of the input. fn after_edit(&mut self, ctx: &mut EventCtx) { - self.update_back_btn_state(ctx); - self.update_input_btns_state(ctx); - } + // When the input is empty, enable cancel button. Otherwise show erase and + // confirm button. + let is_empty = self.input.inner().textbox.is_empty(); + self.erase_btn.mutate(ctx, |ctx, btn| { + btn.show_if(ctx, !is_empty); + btn.inner_mut().enable_if(ctx, !is_empty); + }); + self.cancel_btn.mutate(ctx, |ctx, btn| { + btn.show_if(ctx, is_empty); + btn.inner_mut().enable_if(ctx, is_empty); + }); + self.confirm_btn.mutate(ctx, |ctx, btn| { + btn.show_if(ctx, !is_empty); + btn.inner_mut().enable_if(ctx, !is_empty); + }); - /// When the input is empty, disable the back button. - fn update_back_btn_state(&mut self, ctx: &mut EventCtx) { - if self.input.inner().textbox.is_empty() { - self.back.mutate(ctx, |ctx, b| b.disable(ctx)); - } else { - self.back.mutate(ctx, |ctx, b| b.enable(ctx)); - } + self.update_input_btns_state(ctx); } /// When the input has reached max length, disable all the input buttons. @@ -183,25 +261,32 @@ impl Component for PassphraseKeyboard { type Msg = PassphraseKeyboardMsg; fn place(&mut self, bounds: Rect) -> Rect { - let bounds = bounds.inset(theme::borders()); + const CONFIRM_BTN_WIDTH: i16 = 78; + const INPUT_INSETS: Insets = Insets::new(10, 2, 10, 4); + const CONFIRM_BTN_INSETS: Insets = Insets::new(5, 0, 5, 0); - let (input_area, key_grid_area) = - bounds.split_bottom(4 * theme::PIN_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); + let bounds = bounds.inset(theme::borders()); + let (top_area, key_grid_area) = + bounds.split_bottom(4 * theme::PASSPHRASE_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); + let (input_area, confirm_btn_area) = top_area.split_right(CONFIRM_BTN_WIDTH); - let (input_area, scroll_area) = input_area.split_bottom(INPUT_AREA_HEIGHT); - let (scroll_area, _) = scroll_area.split_top(ScrollBar::DOT_SIZE); + let top_area = top_area.inset(INPUT_INSETS); + let input_area = input_area.inset(INPUT_INSETS); + let confirm_btn_area = confirm_btn_area.inset(CONFIRM_BTN_INSETS); let key_grid = Grid::new(key_grid_area, 4, 3).with_spacing(theme::BUTTON_SPACING); - let confirm_btn_area = key_grid.cell(11); - let back_btn_area = key_grid.cell(9); + let next_btn_area = key_grid.cell(11); + let erase_cancel_area = key_grid.cell(9); self.page_swipe.place(bounds); self.input.place(input_area); - self.confirm.place(confirm_btn_area); - self.back.place(back_btn_area); - self.scrollbar.place(scroll_area); - self.scrollbar - .set_count_and_active_page(PAGE_COUNT, STARTING_PAGE); + self.input_prompt.place(top_area); + + // control buttons + self.confirm_btn.place(confirm_btn_area); + self.next_btn.place(next_btn_area); + self.erase_btn.place(erase_cancel_area); + self.cancel_btn.place(erase_cancel_area); // Place all the character buttons. for (key, btn) in &mut self.keys.iter_mut().enumerate() { @@ -228,28 +313,29 @@ impl Component for PassphraseKeyboard { } if let Some(swipe) = self.page_swipe.event(ctx, event) { // We have detected a horizontal swipe. Change the keyboard page. - self.on_page_swipe(ctx, swipe); + self.on_page_change(ctx, swipe); return None; } - if let Some(ButtonMsg::Clicked) = self.confirm.event(ctx, event) { + if let Some(ButtonMsg::Clicked) = self.next_btn.event(ctx, event) { + self.on_page_change(ctx, SwipeDirection::Left); + } + if let Some(ButtonMsg::Clicked) = self.confirm_btn.event(ctx, event) { // Confirm button was clicked, we're done. return Some(PassphraseKeyboardMsg::Confirmed); } + if let Some(ButtonMsg::Clicked) = self.cancel_btn.event(ctx, event) { + // Cancel button is visible and clicked, cancel + return Some(PassphraseKeyboardMsg::Cancelled); + } - match self.back.event(ctx, event) { + match self.erase_btn.event(ctx, event) { Some(ButtonMsg::Clicked) => { - // Backspace button was clicked. If we have any content in the textbox, let's - // delete the last character. Otherwise cancel. - return if self.input.inner().textbox.is_empty() { - Some(PassphraseKeyboardMsg::Cancelled) - } else { - self.input.mutate(ctx, |ctx, i| { - i.multi_tap.clear_pending_state(ctx); - i.textbox.delete_last(ctx); - }); - self.after_edit(ctx); - None - }; + self.input.mutate(ctx, |ctx, i| { + i.multi_tap.clear_pending_state(ctx); + i.textbox.delete_last(ctx); + }); + self.after_edit(ctx); + return None; } Some(ButtonMsg::LongPressed) => { self.input.mutate(ctx, |ctx, i| { @@ -288,24 +374,19 @@ impl Component for PassphraseKeyboard { } fn paint(&mut self) { - self.input.paint(); - self.scrollbar.paint(); - self.confirm.paint(); - self.back.paint(); - for btn in &mut self.keys { - btn.paint(); - } - if self.fade.take() { - // Note that this is blocking and takes some time. - display::fade_backlight(theme::BACKLIGHT_NORMAL); - } + todo!("remove when ui-t3t1 done") } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); - self.scrollbar.render(target); - self.confirm.render(target); - self.back.render(target); + self.next_btn.render(target); + self.erase_btn.render(target); + if self.input.inner().textbox.is_empty() { + self.cancel_btn.render(target); + self.input_prompt.render(target); + } else { + self.confirm_btn.render(target); + } for btn in &self.keys { btn.render(target); } @@ -318,9 +399,10 @@ impl Component for PassphraseKeyboard { #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.input.bounds(sink); - self.scrollbar.bounds(sink); - self.confirm.bounds(sink); - self.back.bounds(sink); + self.input_prompt.bounds(sink); + self.confirm_btn.bounds(sink); + self.erase_btn.bounds(sink); + self.cancel_btn.bounds(sink); for btn in &self.keys { btn.bounds(sink) } @@ -356,43 +438,7 @@ impl Component for Input { } fn paint(&mut self) { - let style = theme::label_keyboard(); - - let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) - - Offset::y(style.text_font.text_baseline()); - - let text = self.textbox.content(); - - // Preparing the new text to be displayed. - // Possible optimization is to redraw the background only when pending character - // is replaced, or only draw rectangle over the pending character and - // marker. - display::rect_fill(self.area, theme::BG); - - // Find out how much text can fit into the textbox. - // Accounting for the pending marker, which draws itself one pixel longer than - // the last character - let available_area_width = self.area.width() - 1; - let text_to_display = - long_line_content_with_ellipsis(text, "...", style.text_font, available_area_width); - - display::text_left( - text_baseline, - &text_to_display, - style.text_font, - style.text_color, - style.background_color, - ); - - // Paint the pending marker. - if self.multi_tap.pending_key().is_some() { - paint_pending_marker( - text_baseline, - &text_to_display, - style.text_font, - style.text_color, - ); - } + todo!("remove when ui-t3t1 done"); } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index 54c4c85f4c..600c10d452 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -66,12 +66,13 @@ impl<'a> PinKeyboard<'a> { ) -> Self { // Control buttons. let erase_btn = Button::with_icon(theme::ICON_DELETE) - .styled(theme::button_pin_erase()) + .styled(theme::button_keyboard_erase()) .with_long_press(theme::ERASE_HOLD_DURATION) .initially_enabled(false); let erase_btn = Maybe::hidden(theme::BG, erase_btn).into_child(); - let cancel_btn = Button::with_icon(theme::ICON_CLOSE).styled(theme::button_pin_cancel()); + let cancel_btn = + Button::with_icon(theme::ICON_CLOSE).styled(theme::button_keyboard_cancel()); let cancel_btn = Maybe::new(theme::BG, cancel_btn, allow_cancel).into_child(); Self { diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index ce87cba00c..78e36aab02 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -14,6 +14,7 @@ mod error; mod frame; #[cfg(feature = "micropython")] mod homescreen; +#[cfg(feature = "translations")] mod keyboard; mod loader; #[cfg(feature = "translations")] @@ -47,6 +48,7 @@ pub use footer::Footer; pub use frame::{Frame, FrameMsg}; #[cfg(feature = "micropython")] pub use homescreen::{check_homescreen_format, Homescreen, HomescreenMsg, Lockscreen}; +#[cfg(feature = "translations")] pub use keyboard::{ bip39::Bip39Input, mnemonic::{MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg}, diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index f16f3a930e..6736f929af 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -3,10 +3,10 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::{Component, Event, EventCtx, Paginate, Swipe}, + component::{Component, Event, EventCtx, Paginate, Swipe, SwipeDirection}, flow::Swipable, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, - model_mercury::component::{Footer, SwipeDirection}, + model_mercury::component::Footer, shape, shape::Renderer, }, diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index c101794cf3..c9bd956f7a 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -959,7 +959,7 @@ extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Ma title, Button::cancel_confirm( Button::with_icon(theme::ICON_BACK), - Button::with_text(button).styled(theme::button_reset()), + Button::with_text(button).styled(theme::button_default()), true, ), ) diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index c69d1c1977..406e091a0d 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -127,6 +127,14 @@ include_icon!(ICON_PIN_BULLET, "model_mercury/res/pin_bullet6.toif"); include_icon!(ICON_PAGE_NEXT, "model_mercury/res/page-next.toif"); include_icon!(ICON_PAGE_PREV, "model_mercury/res/page-prev.toif"); +// Icon for "<space>*#" key on the passphrase keyboard. +include_icon!( + ICON_SPECIAL_CHARS_GROUP, + "model_mercury/res/special_chars_group.toif" +); +// Icon for "next keyboard layout" for special characters +include_icon!(ICON_ASTERISK, "model_mercury/res/asterisk16.toif"); + // Large, three-color icons. pub const WARN_COLOR: Color = ORANGE_LIGHT; pub const INFO_COLOR: Color = GREY_LIGHT; @@ -405,33 +413,6 @@ pub const fn button_danger() -> ButtonStyleSheet { } } -// TODO: delete -pub const fn button_reset() -> ButtonStyleSheet { - ButtonStyleSheet { - normal: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: YELLOW, - icon_color: GREY_LIGHT, - background_color: BG, - }, - active: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: YELLOW_DARK, - icon_color: GREY_LIGHT, - background_color: BG, - }, - disabled: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: YELLOW, - icon_color: GREY_LIGHT, - background_color: BG, - }, - } -} - // used for PIN digit keys and passphrase/recovery letter keys pub const fn button_keyboard() -> ButtonStyleSheet { ButtonStyleSheet { @@ -459,45 +440,46 @@ pub const fn button_keyboard() -> ButtonStyleSheet { } } -pub const fn button_pin_confirm() -> ButtonStyleSheet { +pub const fn button_keyboard_cancel() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: GREEN_DARK, - icon_color: GREEN_LIME, + button_color: BG, // TODO: gradient + icon_color: ORANGE_LIGHT, background_color: BG, }, active: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: GREEN_LIGHT, - icon_color: GREEN_DARK, + button_color: ORANGE_LIGHT, + icon_color: BG, background_color: BG, }, + // not used disabled: &ButtonStyle { font: Font::MONO, - text_color: GREY_DARK, + text_color: FG, button_color: BG, - icon_color: GREY_DARK, + icon_color: GREEN_LIGHT, background_color: BG, }, } } -pub const fn button_pin_cancel() -> ButtonStyleSheet { +pub const fn button_keyboard_erase() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, text_color: FG, button_color: BG, // TODO: gradient - icon_color: ORANGE_LIGHT, + icon_color: GREY, background_color: BG, }, active: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: ORANGE_LIGHT, + button_color: GREY_LIGHT, icon_color: BG, background_color: BG, }, @@ -512,28 +494,83 @@ pub const fn button_pin_cancel() -> ButtonStyleSheet { } } -pub const fn button_pin_erase() -> ButtonStyleSheet { +// TODO: merge `button_pin_confirm` and `_passphrase_confirm`. Need to render +// button `.with_radius` correctly +pub const fn button_pin_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: BG, // TODO: gradient - icon_color: GREY, + button_color: GREEN_DARK, + icon_color: GREEN_LIME, background_color: BG, }, active: &ButtonStyle { font: Font::MONO, text_color: FG, - button_color: GREY_LIGHT, + button_color: GREEN_LIGHT, + icon_color: GREEN_DARK, + background_color: BG, + }, + disabled: &ButtonStyle { + font: Font::MONO, + text_color: GREY_DARK, + button_color: BG, + icon_color: GREY_DARK, + background_color: BG, + }, + } +} + +pub const fn button_passphrase_confirm() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREEN_LIME, + button_color: GREEN_LIGHT, + icon_color: GREEN_LIME, + background_color: GREEN_DARK, + }, + active: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREEN_LIME, + button_color: GREEN_LIGHT, + icon_color: GREEN_DARK, + background_color: GREEN_LIGHT, + }, + // not used + disabled: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: BG, + button_color: BG, icon_color: BG, background_color: BG, }, + } +} + +pub const fn button_passphrase_next() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, + button_color: BG, // TODO: gradient + icon_color: GREY_LIGHT, + background_color: BG, + }, + active: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, + button_color: BG, // TODO: gradient + icon_color: GREY_LIGHT, + background_color: BG, + }, // not used disabled: &ButtonStyle { - font: Font::MONO, - text_color: FG, + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, button_color: BG, - icon_color: GREEN_LIGHT, + icon_color: GREY_LIGHT, background_color: BG, }, } @@ -752,7 +789,8 @@ pub const CORNER_BUTTON_SIDE: i16 = 44; pub const CORNER_BUTTON_SPACING: i16 = BUTTON_SPACING; pub const INFO_BUTTON_HEIGHT: i16 = 44; pub const PIN_BUTTON_HEIGHT: i16 = 52; -pub const MNEMONIC_BUTTON_HEIGHT: i16 = 52; +pub const MNEMONIC_BUTTON_HEIGHT: i16 = 62; +pub const PASSPHRASE_BUTTON_HEIGHT: i16 = 48; pub const RESULT_PADDING: i16 = 6; pub const RESULT_FOOTER_START: i16 = 171; pub const RESULT_FOOTER_HEIGHT: i16 = 62; From e5e8e27abc146a75e7cf757050395444cbc6129e Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 20 May 2024 21:46:53 +0200 Subject: [PATCH 164/626] feat(core/ui): T3T1 recovery keyboards [no changelog] --- .../model_mercury/component/keyboard/bip39.rs | 146 +++++++----------- .../component/keyboard/common.rs | 42 ++++- .../component/keyboard/mnemonic.rs | 59 ++++--- .../component/keyboard/slip39.rs | 115 ++++---------- .../rust/src/ui/model_mercury/theme/mod.rs | 99 ++++++++---- .../src/trezor/ui/layouts/mercury/recovery.py | 2 +- 6 files changed, 230 insertions(+), 233 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index f1459d71b1..5fb9488af2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -2,16 +2,16 @@ use crate::{ trezorhal::bip39, ui::{ component::{text::common::TextBox, Component, Event, EventCtx}, - display, - geometry::{Alignment2D, Offset, Rect}, + geometry::{Alignment, Alignment2D, Offset, Point, Rect}, model_mercury::{ component::{ keyboard::{ - common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, + common::{render_pending_marker, render_pill_shape, MultiTapKeyboard}, mnemonic::{MnemonicInput, MnemonicInputMsg, MNEMONIC_KEY_COUNT}, }, - Button, ButtonContent, ButtonMsg, + Button, ButtonMsg, }, + constant::WIDTH, theme, }, shape, @@ -104,100 +104,66 @@ impl Component for Bip39Input { } fn paint(&mut self) { + todo!("remove when ui-t3t1 done"); + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); - // First, paint the button background. - self.button.paint_background(style); - // Paint the entered content (the prefix of the suggested word). let text = self.textbox.content(); let width = style.font.text_width(text); - // Content starts in the left-center point, offset by 16px to the right and 8px - // to the bottom. - let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); - display::text_left( - text_baseline, - text, - style.font, - style.text_color, - style.button_color, - ); - // Paint the rest of the suggested dictionary word. - if let Some(word) = self.suggested_word.and_then(|w| w.get(text.len()..)) { - let word_baseline = text_baseline + Offset::new(width, 0); - let style = self.button_suggestion.style(); - display::text_left( - word_baseline, + // User input together with suggestion is centered vertically in the input area + // and centered horizontally on the screen + let text_base_y = area.left_center().y + style.font.allcase_text_height() / 2; + let text_base_x = if let Some(word) = self.suggested_word { + style.font.horz_center(0, WIDTH, word) + } else { + style.font.horz_center(0, WIDTH, text) + }; + let text_base = Point::new(text_base_x, text_base_y); + + // Render pill-shaped button + if let Some(word) = self.suggested_word { + let choice_unambiguous = self.is_choice_unambiguous(); + render_pill_shape( + target, + text_base, word, - style.font, - style.text_color, - style.button_color, + style, + if choice_unambiguous { Some(area) } else { None }, ); - } - - // Paint the pending marker. - if self.multi_tap.pending_key().is_some() { - paint_pending_marker(text_baseline, text, style.font, style.text_color); - } - - // Paint the icon. - if let ButtonContent::Icon(icon) = self.button.content() { - // Icon is painted in the right-center point, of expected size 16x16 pixels, and - // 16px from the right edge. - let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); - icon.draw( - icon_center, - Alignment2D::CENTER, - style.text_color, - style.button_color, - ); - } - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - let area = self.button.area(); - let style = self.button.style(); - - // First, paint the button background. - self.button.render_background(target, style); + if choice_unambiguous { + // Icon is painted in the right-center point, 10px from the right edge. + let icon_right_center = area.right_center() - Offset::x(10); + shape::ToifImage::new(icon_right_center, theme::ICON_SIMPLE_CHECKMARK24.toif) + .with_align(Alignment2D::CENTER_RIGHT) + .with_fg(style.icon_color) + .render(target); + } + }; - // Paint the entered content (the prefix of the suggested word). - let text = self.textbox.content(); - let width = style.font.text_width(text); - // Content starts in the left-center point, offset by 16px to the right and 8px - // to the bottom. - let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); - shape::Text::new(text_baseline, text) + // Render text input + suggested completion + shape::Text::new(text_base, text) .with_font(style.font) .with_fg(style.text_color) + .with_align(Alignment::Start) .render(target); - - // Paint the rest of the suggested dictionary word. if let Some(word) = self.suggested_word.and_then(|w| w.get(text.len()..)) { - let word_baseline = text_baseline + Offset::new(width, 0); + let word_baseline = text_base + Offset::x(width); let style = self.button_suggestion.style(); shape::Text::new(word_baseline, word) .with_font(style.font) .with_fg(style.text_color) + .with_align(Alignment::Start) .render(target); } // Paint the pending marker. if self.multi_tap.pending_key().is_some() { - render_pending_marker(target, text_baseline, text, style.font, style.text_color); - } - - // Paint the icon. - if let ButtonContent::Icon(icon) = self.button.content() { - // Icon is painted in the right-center point, of expected size 16x16 pixels, and - // 16px from the right edge. - let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); - shape::ToifImage::new(icon_center, icon.toif) - .with_align(Alignment2D::CENTER) - .with_fg(style.icon_color) - .render(target); + render_pending_marker(target, text_base, text, style.font, style.text_color); } } @@ -227,8 +193,7 @@ impl Bip39Input { // Styling the input to reflect already filled word Self { - button: Button::with_icon(theme::ICON_CONFIRM_INPUT) - .styled(theme::button_pin_confirm()), + button: Button::empty().styled(theme::button_recovery_confirm()), textbox: TextBox::new(unwrap!(String::try_from(word))), multi_tap: MultiTapKeyboard::new(), options_num: bip39::options_num(word), @@ -249,13 +214,18 @@ impl Bip39Input { mask } + fn is_choice_unambiguous(&self) -> bool { + if let (Some(word), Some(_num)) = (self.suggested_word, self.options_num) { + return word.eq(self.textbox.content()); + } + false + } + /// Input button was clicked. If the content matches the suggested word, /// let's confirm it, otherwise just auto-complete. fn on_input_click(&mut self, ctx: &mut EventCtx) -> Option<MnemonicInputMsg> { - if let (Some(word), Some(num)) = (self.suggested_word, self.options_num) { - return if num == 1 && word.starts_with(self.textbox.content()) - || num > 1 && word.eq(self.textbox.content()) - { + if let (Some(word), Some(_num)) = (self.suggested_word, self.options_num) { + return if word.eq(self.textbox.content()) { // Confirm button. self.textbox.clear(ctx); Some(MnemonicInputMsg::Confirmed) @@ -286,24 +256,19 @@ impl Bip39Input { self.suggested_word = bip39::complete_word(self.textbox.content()); // Change the style of the button depending on the completed word. - if let (Some(word), Some(num)) = (self.suggested_word, self.options_num) { - if num == 1 && word.starts_with(self.textbox.content()) - || num > 1 && word.eq(self.textbox.content()) - { + if let (Some(word), Some(_num)) = (self.suggested_word, self.options_num) { + if word.eq(self.textbox.content()) { // Confirm button. self.button.enable(ctx); - self.button.set_stylesheet(ctx, theme::button_pin_confirm()); self.button - .set_content(ctx, ButtonContent::Icon(theme::ICON_CONFIRM_INPUT)); + .set_stylesheet(ctx, theme::button_recovery_confirm()); self.button_suggestion .set_stylesheet(ctx, theme::button_suggestion_confirm()); } else { // Auto-complete button. self.button.enable(ctx); self.button - .set_stylesheet(ctx, theme::button_bip39_autocomplete()); - self.button - .set_content(ctx, ButtonContent::Icon(theme::ICON_AUTOFILL)); + .set_stylesheet(ctx, theme::button_recovery_autocomplete()); self.button_suggestion .set_stylesheet(ctx, theme::button_suggestion_autocomplete()); } @@ -311,7 +276,6 @@ impl Bip39Input { // Disabled button. self.button.disable(ctx); self.button.set_stylesheet(ctx, theme::button_keyboard()); - self.button.set_content(ctx, ButtonContent::Text("".into())); } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs index 9868770bc4..58544b75a1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/common.rs @@ -3,12 +3,14 @@ use crate::{ ui::{ component::{text::common::TextEdit, Event, EventCtx, TimerToken}, display::{self, Color, Font}, - geometry::{Offset, Point, Rect}, + geometry::{Alignment2D, Offset, Point, Rect}, shape, shape::Renderer, }, }; +use super::super::ButtonStyle; + /// Contains state commonly used in implementations multi-tap keyboards. pub struct MultiTapKeyboard { /// Configured timeout after which we cancel currently pending key. @@ -150,3 +152,41 @@ pub fn render_pending_marker<'s>( shape::Bar::new(marker_rect).with_bg(color).render(target); } } + +/// Create a pill-shaped button around a text. +pub fn render_pill_shape<'s>( + target: &mut impl Renderer<'s>, + base_point: Point, + text: &str, + style: &ButtonStyle, + expand_area: Option<Rect>, +) { + let pill_radius = 18; + let pill_bearing_x = 17; + let pill_bearing_y = 12; + let pill_height = 2 * pill_radius + 4; // adding 4px looks better, if the height is just 2*r it does not look like a + // perfect half-circle but there is a visible narrowing of the pill shape + let pill_width = style.font.text_width(text) + 2 * pill_bearing_x; + + let pill_baseline = base_point + Offset::new(-pill_bearing_x, pill_bearing_y); + let mut pill_area = Rect::snap( + pill_baseline, + Offset::new(pill_width, pill_height), + Alignment2D::BOTTOM_LEFT, + ); + if let Some(area) = expand_area { + // "dummy" rectangle to use in the `union` call + let expander = Rect::snap( + area.bottom_right(), + Offset::uniform(1), + Alignment2D::BOTTOM_RIGHT, + ); + pill_area = pill_area.union(expander); + } + shape::Bar::new(pill_area) + .with_bg(style.background_color) + .with_fg(style.button_color) + .with_radius(pill_radius) + .with_thickness(2) + .render(target); +} diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 2a5ad0829a..381e4fe222 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -2,7 +2,7 @@ use crate::{ strutil::TString, ui::{ component::{maybe::paint_overlapping, Child, Component, Event, EventCtx, Label, Maybe}, - geometry::{Alignment, Grid, Rect}, + geometry::{Alignment, Grid, Insets, Rect}, model_mercury::{ component::{Button, ButtonMsg, Swipe, SwipeDirection}, theme, @@ -12,6 +12,7 @@ use crate::{ }; pub const MNEMONIC_KEY_COUNT: usize = 9; +const BACK_BUTTON_RIGHT_EXPAND: i16 = 24; pub enum MnemonicKeyboardMsg { Confirmed, @@ -21,7 +22,9 @@ pub enum MnemonicKeyboardMsg { pub struct MnemonicKeyboard<T> { /// Initial prompt, displayed on empty input. prompt: Child<Maybe<Label<'static>>>, - /// Backspace button. + /// Delete a char button. + erase: Child<Maybe<Button>>, + /// Go to previous word button back: Child<Maybe<Button>>, /// Input area, acting as the auto-complete and confirm button. input: Child<Maybe<T>>, @@ -40,19 +43,24 @@ where pub fn new(input: T, prompt: TString<'static>, can_go_back: bool) -> Self { // Input might be already pre-filled let prompt_visible = input.is_empty(); - + let erase_btn = Button::with_icon(theme::ICON_DELETE) + .styled(theme::button_default()) + .with_expanded_touch_area(Insets::right(BACK_BUTTON_RIGHT_EXPAND)) + .with_long_press(theme::ERASE_HOLD_DURATION); + let back_btn = Button::with_icon(theme::ICON_CHEVRON_LEFT) + .styled(theme::button_default()) + .with_expanded_touch_area(Insets::right(BACK_BUTTON_RIGHT_EXPAND)); Self { prompt: Child::new(Maybe::new( theme::BG, - Label::centered(prompt, theme::TEXT_MAIN_GREY_LIGHT), + Label::centered(prompt, theme::TEXT_MAIN_GREY_LIGHT).vertically_centered(), prompt_visible, )), + erase: Child::new(Maybe::new(theme::BG, erase_btn, !prompt_visible)), back: Child::new(Maybe::new( theme::BG, - Button::with_icon(theme::ICON_DELETE) - .styled(theme::button_default()) - .with_long_press(theme::ERASE_HOLD_DURATION), - !prompt_visible, + back_btn, + prompt_visible && can_go_back, )), input: Child::new(Maybe::new(theme::BG, input, !prompt_visible)), keys: T::keys() @@ -86,15 +94,18 @@ where } /// After edit operations, we need to either show or hide the prompt, the - /// input, and the back button. + /// input, the erase button and the back button. fn toggle_prompt_or_input(&mut self, ctx: &mut EventCtx) { let prompt_visible = self.input.inner().inner().is_empty(); self.prompt .mutate(ctx, |ctx, p| p.show_if(ctx, prompt_visible)); self.input .mutate(ctx, |ctx, i| i.show_if(ctx, !prompt_visible)); - self.back + self.erase .mutate(ctx, |ctx, b| b.show_if(ctx, !prompt_visible)); + self.back.mutate(ctx, |ctx, b| { + b.show_if(ctx, prompt_visible && self.can_go_back) + }); } pub fn mnemonic(&self) -> Option<&'static str> { @@ -109,22 +120,25 @@ where type Msg = MnemonicKeyboardMsg; fn place(&mut self, bounds: Rect) -> Rect { - let height_input_area: i16 = 30; - let space_top: i16 = 8; + let height_input_area: i16 = 38; + let padding_top: i16 = 6; + let back_btn_area_width: i16 = 32; let (remaining, keyboard_area) = - bounds.split_bottom(3 * theme::BUTTON_HEIGHT + 2 * theme::KEYBOARD_SPACING); + bounds.split_bottom(3 * theme::MNEMONIC_BUTTON_HEIGHT + 2 * theme::KEYBOARD_SPACING); let prompt_area = remaining - .split_top(space_top) + .split_top(padding_top) .1 .split_top(height_input_area) .0; assert!(prompt_area.height() == height_input_area); - let (back_btn_area, input_area) = prompt_area.split_left(30); + let (back_btn_area, input_area) = prompt_area.split_left(back_btn_area_width); + let input_area = input_area.inset(Insets::left(BACK_BUTTON_RIGHT_EXPAND)); let keyboard_grid = Grid::new(keyboard_area, 3, 3).with_spacing(theme::KEYBOARD_SPACING); self.swipe.place(bounds); self.prompt.place(prompt_area); + self.erase.place(back_btn_area); self.back.place(back_btn_area); self.input.place(input_area); @@ -135,8 +149,11 @@ where } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - // Swipe will cause going back to the previous word when allowed. + // Back button or swipe will cause going back to the previous word when allowed. if self.can_go_back { + if let Some(ButtonMsg::Clicked) = self.back.event(ctx, event) { + return Some(MnemonicKeyboardMsg::Previous); + } if let Some(SwipeDirection::Right) = self.swipe.event(ctx, event) { return Some(MnemonicKeyboardMsg::Previous); } @@ -155,7 +172,7 @@ where _ => {} } - match self.back.event(ctx, event) { + match self.erase.event(ctx, event) { Some(ButtonMsg::Clicked) => { self.input .mutate(ctx, |ctx, i| i.inner_mut().on_backspace_click(ctx)); @@ -182,7 +199,7 @@ where } fn paint(&mut self) { - paint_overlapping(&mut [&mut self.prompt, &mut self.input, &mut self.back]); + paint_overlapping(&mut [&mut self.prompt, &mut self.input, &mut self.erase]); for btn in &mut self.keys { btn.paint(); } @@ -191,9 +208,12 @@ where fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if self.input.inner().inner().is_empty() { self.prompt.render(target); + if self.can_go_back { + self.back.render(target); + } } else { self.input.render(target); - self.back.render(target); + self.erase.render(target); } for btn in &self.keys { @@ -205,6 +225,7 @@ where fn bounds(&self, sink: &mut dyn FnMut(Rect)) { self.prompt.bounds(sink); self.input.bounds(sink); + self.erase.bounds(sink); self.back.bounds(sink); for btn in &self.keys { btn.bounds(sink) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index 5160e7ddc8..79173a1db0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -9,12 +9,12 @@ use crate::{ text::common::{TextBox, TextEdit}, Component, Event, EventCtx, }, - display, - geometry::{Alignment2D, Offset, Rect}, + constant::WIDTH, + geometry::{Alignment, Alignment2D, Offset, Point, Rect}, model_mercury::{ component::{ keyboard::{ - common::{paint_pending_marker, render_pending_marker, MultiTapKeyboard}, + common::{render_pending_marker, render_pill_shape, MultiTapKeyboard}, mnemonic::{MnemonicInput, MnemonicInputMsg, MNEMONIC_KEY_COUNT}, }, Button, ButtonContent, ButtonMsg, @@ -124,88 +124,35 @@ impl Component for Slip39Input { } fn paint(&mut self) { - let area = self.button.area(); - let style = self.button.style(); - - // First, paint the button background. - self.button.paint_background(style); - - // Content starts in the left-center point, offset by 16px to the right and 8px - // to the bottom. - let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); - - // To simplify things, we always copy the printed string here, even if it - // wouldn't be strictly necessary. - let mut text: String<MAX_LENGTH> = String::new(); - - if let Some(word) = self.final_word { - // We're done with input, paint the full word. - text.push_str(word) - .assert_if_debugging_ui("Text buffer is too small"); - } else { - // Paint an asterisk for each letter of input. - for ch in iter::repeat('*').take(self.textbox.content().len()) { - text.push(ch) - .assert_if_debugging_ui("Text buffer is too small"); - } - // If we're in the pending state, paint the pending character at the end. - if let (Some(key), Some(press)) = - (self.multi_tap.pending_key(), self.multi_tap.pending_press()) - { - assert!(!Self::keys()[key].is_empty()); - // Now we can be sure that the looped iterator will return a value. - let ch = unwrap!(Self::keys()[key].chars().cycle().nth(press)); - text.pop(); - text.push(ch) - .assert_if_debugging_ui("Text buffer is too small"); - } - } - display::text_left( - text_baseline, - text.as_str(), - style.font, - style.text_color, - style.button_color, - ); - - // Paint the pending marker. - if self.multi_tap.pending_key().is_some() && self.final_word.is_none() { - paint_pending_marker(text_baseline, text.as_str(), style.font, style.text_color); - } - - // Paint the icon. - if let ButtonContent::Icon(icon) = self.button.content() { - // Icon is painted in the right-center point, of expected size 16x16 pixels, and - // 16px from the right edge. - let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); - icon.draw( - icon_center, - Alignment2D::CENTER, - style.icon_color, - style.button_color, - ); - } + todo!("remove when ui-t3t1 done") } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); - // First, paint the button background. - self.button.render_background(target, style); - - // Content starts in the left-center point, offset by 16px to the right and 8px - // to the bottom. - let text_baseline = area.top_left().center(area.bottom_left()) + Offset::new(16, 8); + // Content is center-aligned + let text_base_y = area.left_center().y + style.font.allcase_text_height() / 2; + let text_center = Point::new(WIDTH / 2, text_base_y); // To simplify things, we always copy the printed string here, even if it // wouldn't be strictly necessary. let mut text: String<MAX_LENGTH> = String::new(); - if let Some(word) = self.final_word { // We're done with input, paint the full word. text.push_str(word) .assert_if_debugging_ui("Text buffer is too small"); + let pill_base = Point::new( + style.font.horz_center(0, WIDTH, text.as_str()), + text_center.y, + ); + render_pill_shape(target, pill_base, text.as_str(), style, Some(area)); + // Icon is painted in the right-center point, 10px from the right edge. + let icon_right_center = area.right_center() - Offset::x(10); + shape::ToifImage::new(icon_right_center, theme::ICON_SIMPLE_CHECKMARK24.toif) + .with_align(Alignment2D::CENTER_RIGHT) + .with_fg(style.icon_color) + .render(target); } else { // Paint an asterisk for each letter of input. for ch in iter::repeat('*').take(self.textbox.content().len()) { @@ -224,32 +171,26 @@ impl Component for Slip39Input { .assert_if_debugging_ui("Text buffer is too small"); } } - shape::Text::new(text_baseline, text.as_str()) + shape::Text::new(text_center, text.as_str()) .with_font(style.font) .with_fg(style.text_color) + .with_align(Alignment::Center) .render(target); // Paint the pending marker. + let text_base = Point::new( + style.font.horz_center(0, WIDTH, text.as_str()), + text_center.y, + ); if self.multi_tap.pending_key().is_some() && self.final_word.is_none() { render_pending_marker( target, - text_baseline, + text_base, text.as_str(), style.font, style.text_color, ); } - - // Paint the icon. - if let ButtonContent::Icon(icon) = self.button.content() { - // Icon is painted in the right-center point, of expected size 16x16 pixels, and - // 16px from the right edge. - let icon_center = area.top_right().center(area.bottom_right()) - Offset::new(16 + 8, 0); - shape::ToifImage::new(icon_center, icon.toif) - .with_align(Alignment2D::CENTER) - .with_fg(style.icon_color) - .render(target); - } } #[cfg(feature = "ui_bounds")] @@ -262,7 +203,7 @@ impl Slip39Input { pub fn new() -> Self { Self { // Button has the same style the whole time - button: Button::empty().styled(theme::button_pin_confirm()), + button: Button::empty().styled(theme::button_recovery_confirm()), textbox: TextBox::empty(), multi_tap: MultiTapKeyboard::new(), final_word: None, @@ -280,7 +221,7 @@ impl Slip39Input { Self { // Button has the same style the whole time - button: Button::empty().styled(theme::button_pin_confirm()), + button: Button::empty().styled(theme::button_recovery_confirm()), textbox: TextBox::new(buff), multi_tap: MultiTapKeyboard::new(), final_word, @@ -356,7 +297,7 @@ impl Slip39Input { // Confirm button. self.button.enable(ctx); self.button - .set_content(ctx, ButtonContent::Icon(theme::ICON_CONFIRM_INPUT)); + .set_content(ctx, ButtonContent::Icon(theme::ICON_SIMPLE_CHECKMARK24)); } else { // Disabled button. self.button.disable(ctx); diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 406e091a0d..0309576682 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -75,6 +75,7 @@ include_icon!(ICON_PAGE_UP, "model_mercury/res/page_up20.toif"); // 24x24 include_icon!(ICON_CANCEL, "model_mercury/res/cancel24.toif"); +include_icon!(ICON_CHEVRON_LEFT, "model_mercury/res/chevron_left24.toif"); include_icon!(ICON_CHEVRON_RIGHT, "model_mercury/res/chevron_right24.toif"); include_icon!(ICON_DOWNLOAD, "model_mercury/res/download24.toif"); include_icon!(ICON_KEY, "model_mercury/res/key20.toif"); @@ -576,53 +577,82 @@ pub const fn button_passphrase_next() -> ButtonStyleSheet { } } -pub const fn button_bip39_autocomplete() -> ButtonStyleSheet { +pub const fn button_recovery_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::MONO, - text_color: FG, - button_color: BG, - icon_color: GREY_LIGHT, - background_color: BG, + font: Font::DEMIBOLD, + text_color: GREEN_LIME, + button_color: GREEN_LIGHT, + icon_color: GREEN_LIME, + background_color: GREEN_DARK, }, active: &ButtonStyle { - font: Font::MONO, - text_color: FG, + font: Font::DEMIBOLD, + text_color: GREEN_DARK, + button_color: GREEN_LIGHT, + icon_color: GREEN_DARK, + background_color: GREEN_LIGHT, + }, + // used in SLIP-39 recovery for "*" + disabled: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, button_color: BG, - icon_color: GREY_LIGHT, + icon_color: BG, background_color: BG, }, + } +} + +pub const fn button_suggestion_confirm() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY_LIGHT, // difference + button_color: GREEN_LIGHT, + icon_color: GREEN_LIME, + background_color: GREEN_DARK, + }, + active: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREEN_LIME, + button_color: GREEN_LIGHT, + icon_color: GREEN_DARK, + background_color: GREEN_LIGHT, + }, + // not used disabled: &ButtonStyle { - font: Font::MONO, - text_color: FG, + font: Font::DEMIBOLD, + text_color: BG, button_color: BG, - icon_color: GREY_LIGHT, + icon_color: BG, background_color: BG, }, } } -pub const fn button_suggestion_confirm() -> ButtonStyleSheet { +pub const fn button_recovery_autocomplete() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::MONO, + font: Font::DEMIBOLD, text_color: GREY_LIGHT, - button_color: GREEN, + button_color: GREY_EXTRA_DARK, icon_color: GREY_LIGHT, background_color: BG, }, active: &ButtonStyle { - font: Font::MONO, - text_color: FG, - button_color: GREEN_DARK, - icon_color: GREY_LIGHT, - background_color: BG, + font: Font::DEMIBOLD, + text_color: BG, + button_color: FG, + icon_color: BG, + background_color: FG, }, + // not used disabled: &ButtonStyle { - font: Font::MONO, - text_color: GREY_LIGHT, - button_color: GREY_DARK, - icon_color: GREY_LIGHT, + font: Font::DEMIBOLD, + text_color: BG, + button_color: BG, + icon_color: BG, background_color: BG, }, } @@ -631,24 +661,25 @@ pub const fn button_suggestion_confirm() -> ButtonStyleSheet { pub const fn button_suggestion_autocomplete() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::MONO, - text_color: GREY_LIGHT, - button_color: GREY_DARK, // same as PIN buttons - icon_color: GREY_LIGHT, + font: Font::DEMIBOLD, + text_color: GREY, + button_color: BG, + icon_color: BG, background_color: BG, }, active: &ButtonStyle { font: Font::MONO, - text_color: FG, - button_color: GREEN_DARK, - icon_color: GREY_LIGHT, - background_color: BG, + text_color: BG, + button_color: FG, + icon_color: BG, + background_color: FG, }, + // not used disabled: &ButtonStyle { font: Font::MONO, - text_color: GREY_LIGHT, + text_color: BG, button_color: BG, - icon_color: GREY_LIGHT, + icon_color: BG, background_color: BG, }, } diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index 6b2641fd7b..5ed3d7ca75 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -34,7 +34,7 @@ async def request_word_count(dry_run: bool) -> int: async def request_word( word_index: int, word_count: int, is_slip39: bool, prefill_word: str = "" ) -> str: - prompt = TR.recovery__type_word_x_of_y_template.format(word_index + 1, word_count) + prompt = TR.recovery__word_x_of_y_template.format(word_index + 1, word_count) can_go_back = word_index > 0 if is_slip39: keyboard = RustLayout( From 30ca8bdd62228afdd50ebce6790ee158002c6e94 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 16 May 2024 13:22:40 +0200 Subject: [PATCH 165/626] feat(core/ui): T3T1 share words animation [no changelog] --- core/embed/rust/src/ui/component/swipe.rs | 13 +- core/embed/rust/src/ui/flow/base.rs | 16 +-- core/embed/rust/src/ui/flow/page.rs | 30 ++--- core/embed/rust/src/ui/flow/swipe.rs | 36 ++--- core/embed/rust/src/ui/geometry.rs | 13 +- core/embed/rust/src/ui/lerp.rs | 2 + .../model_mercury/component/homescreen/mod.rs | 4 +- .../src/ui/model_mercury/component/mod.rs | 2 +- .../ui/model_mercury/component/share_words.rs | 123 +++++++++++------- .../ui/model_mercury/flow/show_share_words.rs | 14 +- core/embed/rust/src/ui/util.rs | 27 ++++ 11 files changed, 163 insertions(+), 117 deletions(-) diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index 876d6209ec..5cdaf7c18d 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -1,7 +1,7 @@ use crate::ui::{ component::{Component, Event, EventCtx}, event::TouchEvent, - geometry::{Point, Rect}, + geometry::{Offset, Point, Rect}, shape::Renderer, }; @@ -13,6 +13,17 @@ pub enum SwipeDirection { Right, } +impl SwipeDirection { + pub fn as_offset(self, size: Offset) -> Offset { + match self { + SwipeDirection::Up => Offset::y(-size.y), + SwipeDirection::Down => Offset::y(size.y), + SwipeDirection::Left => Offset::x(-size.x), + SwipeDirection::Right => Offset::x(size.x), + } + } +} + /// Copy of `model_tt/component/swipe.rs` but without the backlight handling. pub struct Swipe { pub area: Rect, diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index 171e985aa2..d24f5982f2 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -1,20 +1,6 @@ -use crate::ui::{ - component::{EventCtx, SwipeDirection}, - geometry::Offset, -}; +use crate::ui::component::{EventCtx, SwipeDirection}; use num_traits::ToPrimitive; -impl SwipeDirection { - pub fn as_offset(self, size: Offset) -> Offset { - match self { - SwipeDirection::Up => Offset::y(-size.y), - SwipeDirection::Down => Offset::y(size.y), - SwipeDirection::Left => Offset::x(-size.x), - SwipeDirection::Right => Offset::x(size.x), - } - } -} - /// Component must implement this trait in order to be part of swipe-based flow. /// /// Default implementation ignores every swipe. diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index e34ce9196a..0e5e5cbcd7 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -1,11 +1,11 @@ use crate::{ micropython::gc::Gc, - time::{Duration, Instant}, + time::Instant, ui::{ animation::Animation, component::{Component, Event, EventCtx, Paginate, SwipeDirection}, flow::base::Swipable, - geometry::{Axis, Offset, Rect}, + geometry::{Axis, Rect}, shape::Renderer, util, }, @@ -15,13 +15,11 @@ pub struct Transition<T> { /// Clone of the component before page change. cloned: Gc<T>, /// Animation progress. - animation: Animation<Offset>, + animation: Animation<f32>, /// Direction of the slide animation. direction: SwipeDirection, } -const ANIMATION_DURATION: Duration = Duration::from_millis(333); - /// Allows any implementor of `Paginate` to be part of `Swipable` UI flow. /// Renders sliding animation when changing pages. pub struct SwipePage<T> { @@ -74,16 +72,13 @@ impl<T: Component + Paginate + Clone> SwipePage<T> { transition: &'s Transition<T>, target: &mut impl Renderer<'s>, ) { - let off = transition.animation.value(Instant::now()); target.in_clip(self.bounds, &|target| { - target.with_origin(off, &|target| { - transition.cloned.render(target); - }); - target.with_origin( - off - transition.direction.as_offset(self.bounds.size()), - &|target| { - self.inner.render(target); - }, + util::render_slide( + |target| transition.cloned.render(target), + |target| self.inner.render(target), + transition.animation.value(Instant::now()), + transition.direction, + target, ); }); } @@ -147,12 +142,7 @@ impl<T: Component + Paginate + Clone> Swipable for SwipePage<T> { } self.transition = Some(Transition { cloned: unwrap!(Gc::new(self.inner.clone())), - animation: Animation::new( - Offset::zero(), - direction.as_offset(self.bounds.size()), - ANIMATION_DURATION, - Instant::now(), - ), + animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION, Instant::now()), direction, }); self.inner.change_page(self.current); diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 599026f899..4b154da7a6 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -1,6 +1,6 @@ use crate::{ error, - time::{Duration, Instant}, + time::Instant, ui::{ animation::Animation, component::{Component, Event, EventCtx, Swipe, SwipeDirection}, @@ -11,8 +11,6 @@ use crate::{ }, }; -const ANIMATION_DURATION: Duration = Duration::from_millis(333); - /// Given a state enum and a corresponding FlowStore, create a Component that /// implements a swipe navigation between the states with animated transitions. /// @@ -28,8 +26,6 @@ pub struct SwipeFlow<Q, S> { transition: Transition<Q>, /// Swipe detector. swipe: Swipe, - /// Animation parameter. - anim_offset: Offset, } enum Transition<Q> { @@ -38,7 +34,7 @@ enum Transition<Q> { /// State we are transitioning _from_. prev_state: Q, /// Animation progress. - animation: Animation<Offset>, + animation: Animation<f32>, /// Direction of the slide animation. direction: SwipeDirection, }, @@ -55,7 +51,6 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { store, transition: Transition::None, swipe: Swipe::new().down().up().left().right(), - anim_offset: Offset::zero(), }) } @@ -72,12 +67,7 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { } self.transition = Transition::External { prev_state: self.state, - animation: Animation::new( - Offset::zero(), - direction.as_offset(self.anim_offset), - ANIMATION_DURATION, - Instant::now(), - ), + animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION, Instant::now()), direction, }; self.state = state; @@ -92,17 +82,17 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { fn render_transition<'s>( &'s self, prev_state: &Q, - animation: &Animation<Offset>, + animation: &Animation<f32>, direction: &SwipeDirection, target: &mut impl Renderer<'s>, ) { - let off = animation.value(Instant::now()); - target.with_origin(off, &|target| { - self.render_state(*prev_state, target); - }); - target.with_origin(off - direction.as_offset(self.anim_offset), &|target| { - self.render_state(self.state, target); - }); + util::render_slide( + |target| self.render_state(*prev_state, target), + |target| self.render_state(self.state, target), + animation.value(Instant::now()), + *direction, + target, + ); } fn handle_transition(&mut self, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg> { @@ -164,10 +154,6 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { type Msg = FlowMsg; fn place(&mut self, bounds: Rect) -> Rect { - // Save screen size for slide animation. Once we have reasonable constants trait - // this can be set in the constructor. - self.anim_offset = bounds.size(); - self.swipe.place(bounds); self.store.place(bounds) } diff --git a/core/embed/rust/src/ui/geometry.rs b/core/embed/rust/src/ui/geometry.rs index bca2e523c0..01f26b2688 100644 --- a/core/embed/rust/src/ui/geometry.rs +++ b/core/embed/rust/src/ui/geometry.rs @@ -1,5 +1,5 @@ use crate::ui::lerp::Lerp; -use core::ops::{Add, Neg, Sub}; +use core::ops::{Add, Mul, Neg, Sub}; const fn min(a: i16, b: i16) -> i16 { if a < b { @@ -128,6 +128,17 @@ impl Sub<Offset> for Offset { } } +impl Mul<f32> for Offset { + type Output = Offset; + + fn mul(self, rhs: f32) -> Self::Output { + Offset::new( + (f32::from(self.x) * rhs) as i16, + (f32::from(self.y) * rhs) as i16, + ) + } +} + impl From<Point> for Offset { fn from(val: Point) -> Self { Offset::new(val.x, val.y) diff --git a/core/embed/rust/src/ui/lerp.rs b/core/embed/rust/src/ui/lerp.rs index 34d3802197..3daa8d5277 100644 --- a/core/embed/rust/src/ui/lerp.rs +++ b/core/embed/rust/src/ui/lerp.rs @@ -71,6 +71,8 @@ impl_lerp_for_uint!(u8); impl_lerp_for_uint!(u16); impl_lerp_for_uint!(u32); +impl_lerp_for_int!(f32); + #[cfg(test)] mod tests { use super::*; diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index 69737881ea..d9ec8b0e22 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -7,10 +7,8 @@ use crate::{ ui::{ component::{Component, Event, EventCtx, TimerToken}, display::{ - self, image::{ImageInfo, ToifFormat}, - tjpgd::jpeg_info, - toif::{Icon, Toif}, + toif::Icon, Color, Font, }, event::{TouchEvent, USBEvent}, diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 78e36aab02..4a12e9a442 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -67,7 +67,7 @@ pub use prompt_screen::PromptScreen; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; #[cfg(feature = "translations")] -pub use share_words::{ShareWords, ShareWordsMsg}; +pub use share_words::ShareWords; pub use simple_page::SimplePage; pub use status_screen::StatusScreen; pub use swipe::{Swipe, SwipeDirection}; diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 6736f929af..8d681f5d85 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -1,19 +1,23 @@ use super::theme; use crate::{ strutil::TString, + time::{Duration, Instant}, translations::TR, ui::{ - component::{Component, Event, EventCtx, Paginate, Swipe, SwipeDirection}, + animation::Animation, + component::{Component, Event, EventCtx, Never, SwipeDirection}, flow::Swipable, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, model_mercury::component::Footer, shape, shape::Renderer, + util, }, }; use heapless::{String, Vec}; const MAX_WORDS: usize = 33; // super-shamir has 33 words, all other have less +const ANIMATION_DURATION: Duration = Duration::from_millis(166); /// Component showing mnemonic/share words during backup procedure. Model T3T1 /// contains one word per screen. A user is instructed to swipe up/down to see @@ -22,19 +26,15 @@ pub struct ShareWords<'a> { area: Rect, share_words: Vec<TString<'a>, MAX_WORDS>, page_index: usize, + prev_index: usize, /// Area reserved for a shown word from mnemonic/share area_word: Rect, - /// TODO: review when swipe concept done for T3T1 - swipe: Swipe, + /// `Some` when transition animation is in progress + animation: Option<Animation<f32>>, /// Footer component for instructions and word counting footer: Footer<'static>, } -pub enum ShareWordsMsg { - GoPrevScreen, - WordsSeen, -} - impl<'a> ShareWords<'a> { const AREA_WORD_HEIGHT: i16 = 91; @@ -43,8 +43,9 @@ impl<'a> ShareWords<'a> { area: Rect::zero(), share_words, page_index: 0, + prev_index: 0, area_word: Rect::zero(), - swipe: Swipe::new().up().down(), + animation: None, footer: Footer::new(TR::instructions__swipe_up), } } @@ -56,10 +57,23 @@ impl<'a> ShareWords<'a> { fn is_final_page(&self) -> bool { self.page_index == self.share_words.len() - 1 } + + fn render_word<'s>(&'s self, word_index: usize, target: &mut impl Renderer<'s>) { + // the share word + let word = self.share_words[word_index]; + let word_baseline = target.viewport().clip.center() + + Offset::y(theme::TEXT_SUPER.text_font.visible_text_height("A") / 2); + word.map(|w| { + shape::Text::new(word_baseline, w) + .with_font(theme::TEXT_SUPER.text_font) + .with_align(Alignment::Center) + .render(target); + }); + } } impl<'a> Component for ShareWords<'a> { - type Msg = ShareWordsMsg; + type Msg = Never; fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; @@ -76,29 +90,18 @@ impl<'a> Component for ShareWords<'a> { self.footer .place(used_area.split_bottom(Footer::HEIGHT_SIMPLE).1); - self.swipe.place(bounds); // Swipe possible on the whole screen area self.area } - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + fn event(&mut self, ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { // ctx.set_page_count(self.share_words.len()); - let swipe = self.swipe.event(ctx, event); - match swipe { - Some(SwipeDirection::Up) => { - if self.is_final_page() { - return Some(ShareWordsMsg::WordsSeen); - } - self.change_page(self.page_index + 1); - ctx.request_paint(); - } - Some(SwipeDirection::Down) => { - if self.is_first_page() { - return Some(ShareWordsMsg::GoPrevScreen); - } - self.change_page(self.page_index.saturating_sub(1)); - ctx.request_paint(); + if let Some(a) = &self.animation { + if a.finished(Instant::now()) { + self.animation = None; + } else { + ctx.request_anim_frame(); } - _ => (), + ctx.request_paint(); } None } @@ -129,16 +132,25 @@ impl<'a> Component for ShareWords<'a> { .with_fg(theme::GREY) .render(target); - // the share word - let word = self.share_words[self.page_index]; - let word_baseline = self.area_word.center() - + Offset::y(theme::TEXT_SUPER.text_font.visible_text_height("A") / 2); - word.map(|w| { - shape::Text::new(word_baseline, w) - .with_font(theme::TEXT_SUPER.text_font) - .with_align(Alignment::Center) - .render(target); - }); + if let Some(animation) = &self.animation { + target.in_clip(self.area_word, &|target| { + util::render_slide( + |target| self.render_word(self.prev_index, target), + |target| self.render_word(self.page_index, target), + animation.value(Instant::now()), + if self.prev_index < self.page_index { + SwipeDirection::Up + } else { + SwipeDirection::Down + }, + target, + ) + }); + } else { + target.in_clip(self.area_word, &|target| { + self.render_word(self.page_index, target); + }) + }; // footer with instructions self.footer.render(target); @@ -148,15 +160,36 @@ impl<'a> Component for ShareWords<'a> { fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} } -impl<'a> Swipable for ShareWords<'a> {} - -impl<'a> Paginate for ShareWords<'a> { - fn page_count(&mut self) -> usize { - self.share_words.len() +impl<'a> Swipable for ShareWords<'a> { + fn swipe_start(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> bool { + match direction { + SwipeDirection::Up if !self.is_final_page() => { + self.prev_index = self.page_index; + self.page_index = (self.page_index + 1).min(self.share_words.len() - 1); + } + SwipeDirection::Down if !self.is_first_page() => { + self.prev_index = self.page_index; + self.page_index = self.page_index.saturating_sub(1); + } + _ => return false, + }; + if util::animation_disabled() { + ctx.request_paint(); + return true; + } + self.animation = Some(Animation::new( + 0.0f32, + 1.0f32, + ANIMATION_DURATION, + Instant::now(), + )); + ctx.request_anim_frame(); + ctx.request_paint(); + true } - fn change_page(&mut self, active_page: usize) { - self.page_index = active_page; + fn swipe_finished(&self) -> bool { + self.animation.is_none() } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index 764b0efb89..642bba34fe 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -15,7 +15,7 @@ use crate::{ use heapless::Vec; use super::super::{ - component::{Frame, FrameMsg, PromptScreen, ShareWords, ShareWordsMsg, SwipeDirection}, + component::{Frame, FrameMsg, PromptScreen, ShareWords, SwipeDirection}, theme, }; @@ -37,6 +37,12 @@ impl FlowState for ShowShareWords { (ShowShareWords::Confirm, SwipeDirection::Down) => { Decision::Goto(ShowShareWords::Words, direction) } + (ShowShareWords::Words, SwipeDirection::Up) => { + Decision::Goto(ShowShareWords::Confirm, direction) + } + (ShowShareWords::Words, SwipeDirection::Down) => { + Decision::Goto(ShowShareWords::Instruction, direction) + } (ShowShareWords::CheckBackupIntro, SwipeDirection::Up) => { Decision::Return(FlowMsg::Confirmed) } @@ -85,11 +91,7 @@ impl ShowShareWords { .map(|msg| matches!(msg, FrameMsg::Content(_)).then_some(FlowMsg::Confirmed)); let content_words = - Frame::left_aligned(title, ShareWords::new(share_words_vec)).map(|msg| match msg { - FrameMsg::Content(ShareWordsMsg::GoPrevScreen) => Some(FlowMsg::Cancelled), - FrameMsg::Content(ShareWordsMsg::WordsSeen) => Some(FlowMsg::Confirmed), - _ => None, - }); + Frame::left_aligned(title, ShareWords::new(share_words_vec)).map(|_| None); let content_confirm = Frame::left_aligned(text_confirm, PromptScreen::new_hold_to_confirm()) diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index f3e4f33fba..f5b427b9b5 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -1,5 +1,6 @@ use crate::{ strutil::{ShortString, TString}, + time::Duration, ui::{ component::text::TextStyle, display, @@ -179,6 +180,32 @@ macro_rules! include_icon { }; } +pub const SLIDE_DURATION: Duration = Duration::from_millis(333); + +#[cfg(feature = "new_rendering")] +pub fn render_slide<'s, F0, F1, R>( + render_old: F0, + render_new: F1, + progress: f32, + direction: crate::ui::component::SwipeDirection, + target: &mut R, +) where + R: crate::ui::shape::Renderer<'s>, + F0: Fn(&mut R), + F1: Fn(&mut R), +{ + let bounds = target.viewport().clip; + let full_offset = direction.as_offset(bounds.size()); + let current_offset = full_offset * progress; + + target.with_origin(current_offset, &|target| { + render_old(target); + }); + target.with_origin(current_offset - full_offset, &|target| { + render_new(target); + }); +} + #[cfg(test)] mod tests { use crate::strutil; From d2bfe5629370f75fd799e4e2579f8873ada4926b Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 16 May 2024 15:28:17 +0200 Subject: [PATCH 166/626] fix(core/ui): make it harder to accidentally close VerticalMenu --- core/embed/rust/src/ui/model_mercury/component/frame.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index b2049fab07..c1035abc3a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -195,10 +195,14 @@ where fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { self.title.event(ctx, event); self.subtitle.event(ctx, event); + let msg = self.content.event(ctx, event).map(FrameMsg::Content); + if msg.is_some() { + return msg; + } if let Some(ButtonMsg::Clicked) = self.button.event(ctx, event) { return Some(FrameMsg::Button(self.button_msg)); } - self.content.event(ctx, event).map(FrameMsg::Content) + None } fn paint(&mut self) { From d6152c02e9c98295234cf243160a7efe0007793b Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 16 May 2024 15:57:15 +0200 Subject: [PATCH 167/626] refactor(core/ui): T3T1: drop duplicate Swipe implementation [no changelog] --- core/embed/rust/src/ui/component/swipe.rs | 1 + core/embed/rust/src/ui/flow/swipe.rs | 2 +- .../src/ui/model_mercury/component/fido.rs | 10 +- .../component/keyboard/mnemonic.rs | 7 +- .../src/ui/model_mercury/component/mod.rs | 2 - .../src/ui/model_mercury/component/page.rs | 8 +- .../ui/model_mercury/component/simple_page.rs | 7 +- .../model_mercury/component/status_screen.rs | 4 +- .../src/ui/model_mercury/component/swipe.rs | 161 ------------------ .../component/swipe_up_screen.rs | 4 +- .../ui/model_mercury/flow/show_share_words.rs | 4 +- 11 files changed, 26 insertions(+), 184 deletions(-) delete mode 100644 core/embed/rust/src/ui/model_mercury/component/swipe.rs diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index 5cdaf7c18d..01c72a6aa0 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -25,6 +25,7 @@ impl SwipeDirection { } /// Copy of `model_tt/component/swipe.rs` but without the backlight handling. +#[derive(Clone)] pub struct Swipe { pub area: Rect, pub allow_up: bool, diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 4b154da7a6..d2310f52e2 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -5,7 +5,7 @@ use crate::{ animation::Animation, component::{Component, Event, EventCtx, Swipe, SwipeDirection}, flow::{base::Decision, FlowMsg, FlowState, FlowStore}, - geometry::{Offset, Rect}, + geometry::Rect, shape::Renderer, util, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index 93c279ec9b..bdee85ae1b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -1,14 +1,12 @@ use crate::{ strutil::TString, ui::{ - component::{image::Image, Child, Component, Event, EventCtx, Label}, + component::{ + image::Image, Child, Component, Event, EventCtx, Label, Swipe, SwipeDirection, + }, display, geometry::{Insets, Rect}, - model_mercury::component::{ - fido_icons::get_fido_icon_data, - swipe::{Swipe, SwipeDirection}, - theme, ScrollBar, - }, + model_mercury::component::{fido_icons::get_fido_icon_data, theme, ScrollBar}, shape, shape::Renderer, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 381e4fe222..058a4f606e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -1,10 +1,13 @@ use crate::{ strutil::TString, ui::{ - component::{maybe::paint_overlapping, Child, Component, Event, EventCtx, Label, Maybe}, + component::{ + maybe::paint_overlapping, Child, Component, Event, EventCtx, Label, Maybe, Swipe, + SwipeDirection, + }, geometry::{Alignment, Grid, Insets, Rect}, model_mercury::{ - component::{Button, ButtonMsg, Swipe, SwipeDirection}, + component::{Button, ButtonMsg}, theme, }, shape::Renderer, diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 4a12e9a442..6a2e58f7ff 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -29,7 +29,6 @@ mod scroll; mod share_words; mod simple_page; mod status_screen; -mod swipe; mod swipe_up_screen; mod welcome_screen; @@ -70,7 +69,6 @@ pub use scroll::ScrollBar; pub use share_words::ShareWords; pub use simple_page::SimplePage; pub use status_screen::StatusScreen; -pub use swipe::{Swipe, SwipeDirection}; pub use swipe_up_screen::{SwipeUpScreen, SwipeUpScreenMsg}; pub use vertical_menu::{VerticalMenu, VerticalMenuChoiceMsg}; pub use welcome_screen::WelcomeScreen; diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs index e6dfec4706..7aab423874 100644 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -4,7 +4,10 @@ use crate::{ time::Instant, translations::TR, ui::{ - component::{paginated::PageMsg, Component, ComponentExt, Event, EventCtx, Pad, Paginate}, + component::{ + paginated::PageMsg, Component, ComponentExt, Event, EventCtx, Pad, Paginate, Swipe, + SwipeDirection, + }, constant, display::{self, Color}, geometry::{Insets, Rect}, @@ -14,8 +17,7 @@ use crate::{ }; use super::{ - theme, Button, ButtonContent, ButtonMsg, ButtonStyleSheet, Loader, LoaderMsg, ScrollBar, Swipe, - SwipeDirection, + theme, Button, ButtonContent, ButtonMsg, ButtonStyleSheet, Loader, LoaderMsg, ScrollBar, }; use core::cell::Cell; diff --git a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs index 160c049c54..6fa2b9bca9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs @@ -1,11 +1,14 @@ use crate::ui::{ - component::{base::ComponentExt, Component, Event, EventCtx, Pad, PageMsg, Paginate}, + component::{ + base::ComponentExt, Component, Event, EventCtx, Pad, PageMsg, Paginate, Swipe, + SwipeDirection, + }, display::{self, Color}, geometry::{Axis, Insets, Rect}, shape::Renderer, }; -use super::{theme, ScrollBar, Swipe, SwipeDirection}; +use super::{theme, ScrollBar}; use core::cell::Cell; const SCROLLBAR_HEIGHT: i16 = 18; diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index dfd789dbeb..1fe30e7190 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -1,12 +1,12 @@ use crate::ui::{ - component::{Component, Event, EventCtx, Timeout}, + component::{Component, Event, EventCtx, Swipe, SwipeDirection, Timeout}, display::{Color, Icon}, geometry::{Alignment2D, Rect}, shape, shape::Renderer, }; -use super::{theme, Swipe, SwipeDirection}; +use super::theme; /// Component showing status of an operation. Most typically embedded as a /// content of a Frame and showing success (checkmark with a circle around). diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe.rs b/core/embed/rust/src/ui/model_mercury/component/swipe.rs deleted file mode 100644 index 8f14783532..0000000000 --- a/core/embed/rust/src/ui/model_mercury/component/swipe.rs +++ /dev/null @@ -1,161 +0,0 @@ -use crate::ui::{ - component::{Component, Event, EventCtx}, - display, - event::TouchEvent, - geometry::{Point, Rect}, - shape::Renderer, -}; - -use super::theme; - -pub use crate::ui::component::SwipeDirection; - -#[derive(Clone)] -pub struct Swipe { - pub area: Rect, - pub allow_up: bool, - pub allow_down: bool, - pub allow_left: bool, - pub allow_right: bool, - backlight_start: u16, - backlight_end: u16, - origin: Option<Point>, -} - -impl Swipe { - const DISTANCE: i32 = 120; - const THRESHOLD: f32 = 0.3; - - pub fn new() -> Self { - Self { - area: Rect::zero(), - allow_up: false, - allow_down: false, - allow_left: false, - allow_right: false, - backlight_start: theme::BACKLIGHT_NORMAL, - backlight_end: theme::BACKLIGHT_NONE, - origin: None, - } - } - - pub fn vertical() -> Self { - Self::new().up().down() - } - - pub fn horizontal() -> Self { - Self::new().left().right() - } - - pub fn up(mut self) -> Self { - self.allow_up = true; - self - } - - pub fn down(mut self) -> Self { - self.allow_down = true; - self - } - - pub fn left(mut self) -> Self { - self.allow_left = true; - self - } - - pub fn right(mut self) -> Self { - self.allow_right = true; - self - } - - fn is_active(&self) -> bool { - self.allow_up || self.allow_down || self.allow_left || self.allow_right - } - - fn ratio(&self, dist: i16) -> f32 { - (dist as f32 / Self::DISTANCE as f32).min(1.0) - } - - fn backlight(&self, ratio: f32) { - let start = self.backlight_start as f32; - let end = self.backlight_end as f32; - let value = start + ratio * (end - start); - display::set_backlight(value as u16); - } -} - -impl Component for Swipe { - type Msg = SwipeDirection; - - fn place(&mut self, bounds: Rect) -> Rect { - self.area = bounds; - self.area - } - - fn event(&mut self, _ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if !self.is_active() { - return None; - } - match (event, self.origin) { - (Event::Touch(TouchEvent::TouchStart(pos)), _) if self.area.contains(pos) => { - // Mark the starting position of this touch. - self.origin.replace(pos); - } - (Event::Touch(TouchEvent::TouchMove(pos)), Some(origin)) => { - // Consider our allowed directions and the touch distance and modify the display - // backlight accordingly. - let ofs = pos - origin; - let abs = ofs.abs(); - if abs.x > abs.y && (self.allow_left || self.allow_right) { - // Horizontal direction. - if (ofs.x < 0 && self.allow_left) || (ofs.x > 0 && self.allow_right) { - self.backlight(self.ratio(abs.x)); - } - } else if abs.x < abs.y && (self.allow_up || self.allow_down) { - // Vertical direction. - if (ofs.y < 0 && self.allow_up) || (ofs.y > 0 && self.allow_down) { - self.backlight(self.ratio(abs.y)); - } - }; - } - (Event::Touch(TouchEvent::TouchEnd(pos)), Some(origin)) => { - // Touch interaction is over, reset the position. - self.origin.take(); - - // Compare the touch distance with our allowed directions and determine if it - // constitutes a valid swipe. - let ofs = pos - origin; - let abs = ofs.abs(); - if abs.x > abs.y && (self.allow_left || self.allow_right) { - // Horizontal direction. - if self.ratio(abs.x) >= Self::THRESHOLD { - if ofs.x < 0 && self.allow_left { - return Some(SwipeDirection::Left); - } else if ofs.x > 0 && self.allow_right { - return Some(SwipeDirection::Right); - } - } - } else if abs.x < abs.y && (self.allow_up || self.allow_down) { - // Vertical direction. - if self.ratio(abs.y) >= Self::THRESHOLD { - if ofs.y < 0 && self.allow_up { - return Some(SwipeDirection::Up); - } else if ofs.y > 0 && self.allow_down { - return Some(SwipeDirection::Down); - } - } - }; - - // Swipe did not happen, reset the backlight. - self.backlight(0.0); - } - _ => { - // Do nothing. - } - } - None - } - - fn paint(&mut self) {} - - fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} -} diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index 8e8c854118..05f90bab67 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -1,11 +1,9 @@ use crate::ui::{ - component::{Component, Event, EventCtx}, + component::{Component, Event, EventCtx, Swipe, SwipeDirection}, geometry::Rect, shape::Renderer, }; -use super::{Swipe, SwipeDirection}; - /// Wrapper component adding "swipe up" handling to `content`. pub struct SwipeUpScreen<T> { content: T, diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index 642bba34fe..f9d00971d5 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -6,7 +6,7 @@ use crate::{ ui::{ component::{ text::paragraphs::{Paragraph, Paragraphs}, - ComponentExt, + ComponentExt, SwipeDirection, }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, layout::obj::LayoutObj, @@ -15,7 +15,7 @@ use crate::{ use heapless::Vec; use super::super::{ - component::{Frame, FrameMsg, PromptScreen, ShareWords, SwipeDirection}, + component::{Frame, FrameMsg, PromptScreen, ShareWords}, theme, }; From bd8ce6e55d7208268b14d7fee93f61efe613da17 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 16 May 2024 16:16:15 +0200 Subject: [PATCH 168/626] fix(core/ui): T3T1 always detect swipes on entire screen [no changelog] --- core/embed/rust/src/ui/component/map.rs | 2 +- core/embed/rust/src/ui/component/swipe.rs | 8 ++------ core/embed/rust/src/ui/flow/page.rs | 2 +- core/embed/rust/src/ui/flow/swipe.rs | 2 +- core/embed/rust/src/ui/lerp.rs | 16 ++++++++-------- core/embed/rust/src/ui/mod.rs | 2 +- .../ui/model_mercury/component/share_words.rs | 4 ++-- core/embed/rust/src/ui/util.rs | 2 +- 8 files changed, 17 insertions(+), 21 deletions(-) diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 46270abf87..ce1486d7d8 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -51,7 +51,7 @@ where } } -#[cfg(all(feature = "micropython", feature = "touch"))] +#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] impl<T, F> crate::ui::flow::Swipable for MsgMap<T, F> where T: Component + crate::ui::flow::Swipable, diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index 01c72a6aa0..6f69262857 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -24,10 +24,8 @@ impl SwipeDirection { } } -/// Copy of `model_tt/component/swipe.rs` but without the backlight handling. #[derive(Clone)] pub struct Swipe { - pub area: Rect, pub allow_up: bool, pub allow_down: bool, pub allow_left: bool, @@ -42,7 +40,6 @@ impl Swipe { pub fn new() -> Self { Self { - area: Rect::zero(), allow_up: false, allow_down: false, allow_left: false, @@ -92,8 +89,7 @@ impl Component for Swipe { type Msg = SwipeDirection; fn place(&mut self, bounds: Rect) -> Rect { - self.area = bounds; - self.area + bounds } fn event(&mut self, _ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { @@ -101,7 +97,7 @@ impl Component for Swipe { return None; } match (event, self.origin) { - (Event::Touch(TouchEvent::TouchStart(pos)), _) if self.area.contains(pos) => { + (Event::Touch(TouchEvent::TouchStart(pos)), _) => { // Mark the starting position of this touch. self.origin.replace(pos); } diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 0e5e5cbcd7..8f6f84fefe 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -142,7 +142,7 @@ impl<T: Component + Paginate + Clone> Swipable for SwipePage<T> { } self.transition = Some(Transition { cloned: unwrap!(Gc::new(self.inner.clone())), - animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION, Instant::now()), + animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION_MS, Instant::now()), direction, }); self.inner.change_page(self.current); diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index d2310f52e2..252e07a04d 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -67,7 +67,7 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { } self.transition = Transition::External { prev_state: self.state, - animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION, Instant::now()), + animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION_MS, Instant::now()), direction, }; self.state = state; diff --git a/core/embed/rust/src/ui/lerp.rs b/core/embed/rust/src/ui/lerp.rs index 3daa8d5277..1f91efd2cb 100644 --- a/core/embed/rust/src/ui/lerp.rs +++ b/core/embed/rust/src/ui/lerp.rs @@ -25,7 +25,7 @@ pub trait InvLerp: Copy { fn inv_lerp(min: Self, max: Self, value: Self) -> f32; } -macro_rules! impl_lerp_for_int { +macro_rules! impl_lerp_for_signed { ($int: ident) => { impl Lerp for $int { fn lerp(a: Self, b: Self, t: f32) -> Self { @@ -41,7 +41,7 @@ macro_rules! impl_lerp_for_int { }; } -macro_rules! impl_lerp_for_uint { +macro_rules! impl_lerp_for_unsigned { ($uint: ident) => { impl Lerp for $uint { fn lerp(a: Self, b: Self, t: f32) -> Self { @@ -65,13 +65,13 @@ macro_rules! impl_lerp_for_uint { }; } -impl_lerp_for_int!(i16); -impl_lerp_for_int!(i32); -impl_lerp_for_uint!(u8); -impl_lerp_for_uint!(u16); -impl_lerp_for_uint!(u32); +impl_lerp_for_signed!(i16); +impl_lerp_for_signed!(i32); +impl_lerp_for_unsigned!(u8); +impl_lerp_for_unsigned!(u16); +impl_lerp_for_unsigned!(u32); -impl_lerp_for_int!(f32); +impl_lerp_for_signed!(f32); #[cfg(test)] mod tests { diff --git a/core/embed/rust/src/ui/mod.rs b/core/embed/rust/src/ui/mod.rs index 9e1518c8a0..f68d521fc2 100644 --- a/core/embed/rust/src/ui/mod.rs +++ b/core/embed/rust/src/ui/mod.rs @@ -7,7 +7,7 @@ pub mod component; pub mod constant; pub mod display; pub mod event; -#[cfg(all(feature = "micropython", feature = "touch"))] +#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] pub mod flow; pub mod geometry; pub mod lerp; diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 8d681f5d85..e8aba1a7de 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -17,7 +17,7 @@ use crate::{ use heapless::{String, Vec}; const MAX_WORDS: usize = 33; // super-shamir has 33 words, all other have less -const ANIMATION_DURATION: Duration = Duration::from_millis(166); +const ANIMATION_DURATION_MS: Duration = Duration::from_millis(166); /// Component showing mnemonic/share words during backup procedure. Model T3T1 /// contains one word per screen. A user is instructed to swipe up/down to see @@ -180,7 +180,7 @@ impl<'a> Swipable for ShareWords<'a> { self.animation = Some(Animation::new( 0.0f32, 1.0f32, - ANIMATION_DURATION, + ANIMATION_DURATION_MS, Instant::now(), )); ctx.request_anim_frame(); diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index f5b427b9b5..e27b94c1f4 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -180,7 +180,7 @@ macro_rules! include_icon { }; } -pub const SLIDE_DURATION: Duration = Duration::from_millis(333); +pub const SLIDE_DURATION_MS: Duration = Duration::from_millis(333); #[cfg(feature = "new_rendering")] pub fn render_slide<'s, F0, F1, R>( From cbcd9dd8bd040a6ebc6f1173ffcffb062198e7aa Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Fri, 24 May 2024 17:10:45 +0200 Subject: [PATCH 169/626] fix(core/ui): missing swipe event when animations disabled --- core/embed/rust/src/ui/flow/swipe.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 252e07a04d..7470e5e742 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -55,16 +55,21 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { } fn goto(&mut self, ctx: &mut EventCtx, direction: SwipeDirection, state: Q) { - if state == self.state { - self.transition = Transition::Internal; - return; - } if util::animation_disabled() { + if state == self.state { + assert!(self + .store + .map_swipable(state.index(), |s| s.swipe_finished())); + } self.state = state; self.store.event(state.index(), ctx, Event::Attach); ctx.request_paint(); return; } + if state == self.state { + self.transition = Transition::Internal; + return; + } self.transition = Transition::External { prev_state: self.state, animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION_MS, Instant::now()), From 9c14cae6569f1179fcdfc3b0e83d56293425ea23 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 23 May 2024 15:35:51 +0200 Subject: [PATCH 170/626] fix(core/ui): allow component to terminate flow on swipe [skip_ci] --- .../rust/src/ui/component/button_request.rs | 6 +-- core/embed/rust/src/ui/component/map.rs | 23 +++++++---- core/embed/rust/src/ui/flow/base.rs | 40 ++++++++++++++++--- core/embed/rust/src/ui/flow/mod.rs | 2 +- core/embed/rust/src/ui/flow/page.rs | 30 +++++++++----- core/embed/rust/src/ui/flow/store.rs | 26 ++++++++---- core/embed/rust/src/ui/flow/swipe.rs | 10 ++--- .../src/ui/model_mercury/component/dialog.rs | 2 +- .../src/ui/model_mercury/component/frame.rs | 7 ++-- .../model_mercury/component/prompt_screen.rs | 2 +- .../ui/model_mercury/component/share_words.rs | 16 +++++--- .../model_mercury/component/vertical_menu.rs | 2 +- .../rust/src/ui/model_mercury/flow/util.rs | 4 +- 13 files changed, 117 insertions(+), 53 deletions(-) diff --git a/core/embed/rust/src/ui/component/button_request.rs b/core/embed/rust/src/ui/component/button_request.rs index a5fb1c5926..f19eca1c3f 100644 --- a/core/embed/rust/src/ui/component/button_request.rs +++ b/core/embed/rust/src/ui/component/button_request.rs @@ -65,15 +65,15 @@ pub trait ButtonRequestExt { impl<T: Component> ButtonRequestExt for T {} #[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] -impl<T> crate::ui::flow::Swipable for OneButtonRequest<T> +impl<T> crate::ui::flow::Swipable<T::Msg> for OneButtonRequest<T> where - T: Component + crate::ui::flow::Swipable, + T: Component + crate::ui::flow::Swipable<T::Msg>, { fn swipe_start( &mut self, ctx: &mut EventCtx, direction: crate::ui::component::SwipeDirection, - ) -> bool { + ) -> crate::ui::flow::SwipableResult<T::Msg> { self.inner.swipe_start(ctx, direction) } diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index ce1486d7d8..bc7fcf6cf1 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -52,12 +52,17 @@ where } #[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] -impl<T, F> crate::ui::flow::Swipable for MsgMap<T, F> +impl<T, F, U> crate::ui::flow::Swipable<U> for MsgMap<T, F> where - T: Component + crate::ui::flow::Swipable, + T: Component + crate::ui::flow::Swipable<T::Msg>, + F: Fn(T::Msg) -> Option<U>, { - fn swipe_start(&mut self, ctx: &mut EventCtx, direction: super::SwipeDirection) -> bool { - self.inner.swipe_start(ctx, direction) + fn swipe_start( + &mut self, + ctx: &mut EventCtx, + direction: super::SwipeDirection, + ) -> crate::ui::flow::SwipableResult<U> { + self.inner.swipe_start(ctx, direction).map(&self.func) } fn swipe_finished(&self) -> bool { @@ -118,11 +123,15 @@ where } #[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] -impl<T, F> crate::ui::flow::Swipable for PageMap<T, F> +impl<T, F> crate::ui::flow::Swipable<T::Msg> for PageMap<T, F> where - T: Component + crate::ui::flow::Swipable, + T: Component + crate::ui::flow::Swipable<T::Msg>, { - fn swipe_start(&mut self, ctx: &mut EventCtx, direction: super::SwipeDirection) -> bool { + fn swipe_start( + &mut self, + ctx: &mut EventCtx, + direction: super::SwipeDirection, + ) -> crate::ui::flow::SwipableResult<T::Msg> { self.inner.swipe_start(ctx, direction) } diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index d24f5982f2..264525e527 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -4,12 +4,18 @@ use num_traits::ToPrimitive; /// Component must implement this trait in order to be part of swipe-based flow. /// /// Default implementation ignores every swipe. -pub trait Swipable { - /// Attempt a swipe. Return false if component in its current state doesn't - /// accept a swipe in the given direction. Start a transition animation - /// if true is returned. - fn swipe_start(&mut self, _ctx: &mut EventCtx, _direction: SwipeDirection) -> bool { - false +pub trait Swipable<T> { + /// Attempt a swipe. Return `Ignored` if the component in its current state + /// doesn't accept a swipe in that direction. Return `Animating` if + /// component accepted the swipe and started a transition animation. The + /// `Return(x)` variant indicates that the current flow should be terminated + /// with the result `x`. + fn swipe_start( + &mut self, + _ctx: &mut EventCtx, + _direction: SwipeDirection, + ) -> SwipableResult<T> { + SwipableResult::Ignored } /// Return true when transition animation is finished. SwipeFlow needs to @@ -19,6 +25,28 @@ pub trait Swipable { } } +pub enum SwipableResult<T> { + Ignored, + Animating, + Return(T), +} + +impl<T> SwipableResult<T> { + pub fn map<U>(self, func: impl FnOnce(T) -> Option<U>) -> SwipableResult<U> { + match self { + SwipableResult::Ignored => SwipableResult::Ignored, + SwipableResult::Animating => SwipableResult::Animating, + SwipableResult::Return(x) => { + if let Some(res) = func(x) { + SwipableResult::Return(res) + } else { + SwipableResult::Ignored + } + } + } + } +} + /// Component::Msg for component parts of a flow. Converting results of /// different screens to a shared type makes things easier to work with. /// diff --git a/core/embed/rust/src/ui/flow/mod.rs b/core/embed/rust/src/ui/flow/mod.rs index 1de1888d6a..91c69e4c53 100644 --- a/core/embed/rust/src/ui/flow/mod.rs +++ b/core/embed/rust/src/ui/flow/mod.rs @@ -3,7 +3,7 @@ pub mod page; mod store; mod swipe; -pub use base::{FlowMsg, FlowState, Swipable}; +pub use base::{FlowMsg, FlowState, Swipable, SwipableResult}; pub use page::{IgnoreSwipe, SwipePage}; pub use store::{flow_store, FlowStore}; pub use swipe::SwipeFlow; diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 8f6f84fefe..36395b50a2 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -4,7 +4,7 @@ use crate::{ ui::{ animation::Animation, component::{Component, Event, EventCtx, Paginate, SwipeDirection}, - flow::base::Swipable, + flow::base::{Swipable, SwipableResult}, geometry::{Axis, Rect}, shape::Renderer, util, @@ -117,17 +117,27 @@ impl<T: Component + Paginate + Clone> Component for SwipePage<T> { } } -impl<T: Component + Paginate + Clone> Swipable for SwipePage<T> { - fn swipe_start(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> bool { +impl<T: Component + Paginate + Clone> Swipable<T::Msg> for SwipePage<T> { + fn swipe_start( + &mut self, + ctx: &mut EventCtx, + direction: SwipeDirection, + ) -> SwipableResult<T::Msg> { match (self.axis, direction) { // Wrong direction - (Axis::Horizontal, SwipeDirection::Up | SwipeDirection::Down) => return false, - (Axis::Vertical, SwipeDirection::Left | SwipeDirection::Right) => return false, + (Axis::Horizontal, SwipeDirection::Up | SwipeDirection::Down) => { + return SwipableResult::Ignored + } + (Axis::Vertical, SwipeDirection::Left | SwipeDirection::Right) => { + return SwipableResult::Ignored + } // Begin - (_, SwipeDirection::Right | SwipeDirection::Down) if self.current == 0 => return false, + (_, SwipeDirection::Right | SwipeDirection::Down) if self.current == 0 => { + return SwipableResult::Ignored + } // End (_, SwipeDirection::Left | SwipeDirection::Up) if self.current + 1 >= self.pages => { - return false + return SwipableResult::Ignored; } _ => {} }; @@ -138,7 +148,7 @@ impl<T: Component + Paginate + Clone> Swipable for SwipePage<T> { if util::animation_disabled() { self.inner.change_page(self.current); ctx.request_paint(); - return true; + return SwipableResult::Animating; } self.transition = Some(Transition { cloned: unwrap!(Gc::new(self.inner.clone())), @@ -148,7 +158,7 @@ impl<T: Component + Paginate + Clone> Swipable for SwipePage<T> { self.inner.change_page(self.current); ctx.request_anim_frame(); ctx.request_paint(); - true + SwipableResult::Animating } fn swipe_finished(&self) -> bool { @@ -195,7 +205,7 @@ impl<T: Component> Component for IgnoreSwipe<T> { } } -impl<T> Swipable for IgnoreSwipe<T> {} +impl<T: Component> Swipable<T::Msg> for IgnoreSwipe<T> {} #[cfg(feature = "ui_debug")] impl<T> crate::trace::Trace for IgnoreSwipe<T> diff --git a/core/embed/rust/src/ui/flow/store.rs b/core/embed/rust/src/ui/flow/store.rs index fef7e58a0a..cf1bd2d60a 100644 --- a/core/embed/rust/src/ui/flow/store.rs +++ b/core/embed/rust/src/ui/flow/store.rs @@ -29,10 +29,14 @@ pub trait FlowStore { fn trace(&self, i: usize, t: &mut dyn crate::trace::Tracer); /// Forward `Swipable` methods to i-th element. - fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T; + fn map_swipable<T>( + &mut self, + i: usize, + func: impl FnOnce(&mut dyn Swipable<FlowMsg>) -> T, + ) -> T; /// Add a Component to the end of a `FlowStore`. - fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( + fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable<FlowMsg>>( self, elem: E, ) -> Result<impl FlowStore, error::Error> @@ -67,11 +71,15 @@ impl FlowStore for FlowEmpty { panic!() } - fn map_swipable<T>(&mut self, _i: usize, _func: impl FnOnce(&mut dyn Swipable) -> T) -> T { + fn map_swipable<T>( + &mut self, + _i: usize, + _func: impl FnOnce(&mut dyn Swipable<FlowMsg>) -> T, + ) -> T { panic!() } - fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( + fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable<FlowMsg>>( self, elem: E, ) -> Result<impl FlowStore, error::Error> @@ -107,7 +115,7 @@ impl<E: Component<Msg = FlowMsg>, P> FlowComponent<E, P> { impl<E, P> FlowStore for FlowComponent<E, P> where - E: Component<Msg = FlowMsg> + MaybeTrace + Swipable, + E: Component<Msg = FlowMsg> + MaybeTrace + Swipable<FlowMsg>, P: FlowStore, { fn place(&mut self, bounds: Rect) -> Rect { @@ -141,7 +149,11 @@ where } } - fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T { + fn map_swipable<T>( + &mut self, + i: usize, + func: impl FnOnce(&mut dyn Swipable<FlowMsg>) -> T, + ) -> T { if i == 0 { func(self.as_mut()) } else { @@ -149,7 +161,7 @@ where } } - fn add<F: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( + fn add<F: Component<Msg = FlowMsg> + MaybeTrace + Swipable<FlowMsg>>( self, elem: F, ) -> Result<impl FlowStore, error::Error> diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 7470e5e742..70bb21c1df 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -4,7 +4,7 @@ use crate::{ ui::{ animation::Animation, component::{Component, Event, EventCtx, Swipe, SwipeDirection}, - flow::{base::Decision, FlowMsg, FlowState, FlowStore}, + flow::{base::Decision, FlowMsg, FlowState, FlowStore, SwipableResult}, geometry::Rect, shape::Renderer, util, @@ -135,13 +135,13 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { fn handle_swipe_child(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> Decision<Q> { let i = self.state.index(); - if self + match self .store .map_swipable(i, |s| s.swipe_start(ctx, direction)) { - Decision::Goto(self.state, direction) - } else { - Decision::Nothing + SwipableResult::Ignored => Decision::Nothing, + SwipableResult::Animating => Decision::Goto(self.state, direction), + SwipableResult::Return(x) => Decision::Return(x), } } diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index 55947f4abc..54fb32b152 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -230,4 +230,4 @@ where } #[cfg(feature = "micropython")] -impl<U> crate::ui::flow::Swipable for IconDialog<U> {} +impl<U: Component> crate::ui::flow::Swipable<U::Msg> for IconDialog<U> {} diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index c1035abc3a..f558822d38 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -252,16 +252,17 @@ where } #[cfg(feature = "micropython")] -impl<T> crate::ui::flow::Swipable for Frame<T> +impl<T> crate::ui::flow::Swipable<FrameMsg<T::Msg>> for Frame<T> where - T: Component + crate::ui::flow::Swipable, + T: Component + crate::ui::flow::Swipable<T::Msg>, { fn swipe_start( &mut self, ctx: &mut EventCtx, direction: crate::ui::component::SwipeDirection, - ) -> bool { + ) -> crate::ui::flow::SwipableResult<FrameMsg<T::Msg>> { self.update_content(ctx, |ctx, inner| inner.swipe_start(ctx, direction)) + .map(|x| Some(FrameMsg::Content(x))) } fn swipe_finished(&self) -> bool { diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 1f9a99be3f..432603726b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -134,7 +134,7 @@ impl Component for PromptScreen { } #[cfg(feature = "micropython")] -impl crate::ui::flow::Swipable for PromptScreen {} +impl crate::ui::flow::Swipable<()> for PromptScreen {} #[cfg(feature = "ui_debug")] impl crate::trace::Trace for PromptScreen { diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index e8aba1a7de..b21274b5ff 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -6,7 +6,7 @@ use crate::{ ui::{ animation::Animation, component::{Component, Event, EventCtx, Never, SwipeDirection}, - flow::Swipable, + flow::{Swipable, SwipableResult}, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, model_mercury::component::Footer, shape, @@ -160,8 +160,12 @@ impl<'a> Component for ShareWords<'a> { fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} } -impl<'a> Swipable for ShareWords<'a> { - fn swipe_start(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> bool { +impl<'a> Swipable<Never> for ShareWords<'a> { + fn swipe_start( + &mut self, + ctx: &mut EventCtx, + direction: SwipeDirection, + ) -> SwipableResult<Never> { match direction { SwipeDirection::Up if !self.is_final_page() => { self.prev_index = self.page_index; @@ -171,11 +175,11 @@ impl<'a> Swipable for ShareWords<'a> { self.prev_index = self.page_index; self.page_index = self.page_index.saturating_sub(1); } - _ => return false, + _ => return SwipableResult::Ignored, }; if util::animation_disabled() { ctx.request_paint(); - return true; + return SwipableResult::Animating; } self.animation = Some(Animation::new( 0.0f32, @@ -185,7 +189,7 @@ impl<'a> Swipable for ShareWords<'a> { )); ctx.request_anim_frame(); ctx.request_paint(); - true + SwipableResult::Animating } fn swipe_finished(&self) -> bool { diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index ac2b605f66..6773be7a8c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -151,4 +151,4 @@ impl crate::trace::Trace for VerticalMenu { } #[cfg(feature = "micropython")] -impl crate::ui::flow::Swipable for VerticalMenu {} +impl crate::ui::flow::Swipable<VerticalMenuChoiceMsg> for VerticalMenu {} diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/model_mercury/flow/util.rs index 41c41fa7bc..7c5efb6e22 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/util.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/util.rs @@ -89,7 +89,7 @@ impl ConfirmBlobParams { pub fn into_layout( self, - ) -> Result<impl Component<Msg = FlowMsg> + Swipable + MaybeTrace, Error> { + ) -> Result<impl Component<Msg = FlowMsg> + Swipable<FlowMsg> + MaybeTrace, Error> { let paragraphs = ConfirmBlob { description: self.description.unwrap_or("".into()), extra: self.extra.unwrap_or("".into()), @@ -187,7 +187,7 @@ impl ShowInfoParams { pub fn into_layout( self, - ) -> Result<impl Component<Msg = FlowMsg> + Swipable + MaybeTrace, Error> { + ) -> Result<impl Component<Msg = FlowMsg> + Swipable<FlowMsg> + MaybeTrace, Error> { let mut paragraphs = ParagraphVecShort::new(); let mut first: bool = true; for item in self.items { From 43eeccac590e674d5dfc189be43791458d6aac52 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 23 May 2024 15:37:54 +0200 Subject: [PATCH 171/626] feat(core/ui): T3T1 request number flow [no changelog] --- core/embed/rust/librust_qstr.h | 2 + .../model_mercury/component/number_input.rs | 102 +++++------- .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../ui/model_mercury/flow/request_number.rs | 148 ++++++++++++++++++ .../embed/rust/src/ui/model_mercury/layout.rs | 58 ++----- core/mocks/generated/trezorui2.pyi | 16 ++ core/src/trezor/ui/layouts/mercury/reset.py | 45 +++--- 7 files changed, 236 insertions(+), 137 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/request_number.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index ac5a9dacf4..89ef5c0394 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -230,6 +230,7 @@ static void _librust_qstrs(void) { MP_QSTR_flow_confirm_summary; MP_QSTR_flow_get_address; MP_QSTR_flow_prompt_backup; + MP_QSTR_flow_request_number; MP_QSTR_flow_show_share_words; MP_QSTR_flow_warning_hi_prio; MP_QSTR_get_language; @@ -253,6 +254,7 @@ static void _librust_qstrs(void) { MP_QSTR_icon_name; MP_QSTR_image; MP_QSTR_indeterminate; + MP_QSTR_info; MP_QSTR_info_button; MP_QSTR_init; MP_QSTR_inputs__back; diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index 215483fe4c..d3ff1c18fd 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -1,15 +1,15 @@ use crate::{ error::Error, strutil::{self, TString}, - translations::TR, ui::{ component::{ base::ComponentExt, paginated::Paginate, text::paragraphs::{Paragraph, Paragraphs}, - Child, Component, Event, EventCtx, Pad, + Child, Component, Event, EventCtx, Pad, SwipeDirection, }, - display::{self, Font}, + display::Font, + flow::{Swipable, SwipableResult}, geometry::{Alignment, Grid, Insets, Offset, Rect}, shape::{self, Renderer}, }, @@ -17,10 +17,7 @@ use crate::{ use super::{theme, Button, ButtonMsg}; -pub enum NumberInputDialogMsg { - Selected, - InfoRequested, -} +pub struct NumberInputDialogMsg(pub u32); pub struct NumberInputDialog<F> where @@ -31,8 +28,6 @@ where input: Child<NumberInput>, paragraphs: Child<Paragraphs<Paragraph<'static>>>, paragraphs_pad: Pad, - info_button: Child<Button>, - confirm_button: Child<Button>, } impl<F> NumberInputDialog<F> @@ -45,12 +40,9 @@ where area: Rect::zero(), description_func, input: NumberInput::new(min, max, init_value).into_child(), - paragraphs: Paragraphs::new(Paragraph::new(&theme::TEXT_NORMAL, text)).into_child(), - paragraphs_pad: Pad::with_background(theme::BG), - info_button: Button::with_text(TR::buttons__info.into()).into_child(), - confirm_button: Button::with_text(TR::buttons__continue.into()) - .styled(theme::button_confirm()) + paragraphs: Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, text)) .into_child(), + paragraphs_pad: Pad::with_background(theme::BG), }) } @@ -79,23 +71,17 @@ where fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; - let button_height = theme::BUTTON_HEIGHT; - let content_area = self.area.inset(Insets::top(2 * theme::BUTTON_SPACING)); - let (input_area, content_area) = content_area.split_top(button_height); - let (content_area, button_area) = content_area.split_bottom(button_height); - let content_area = content_area.inset(Insets::new( - theme::BUTTON_SPACING, - 0, - theme::BUTTON_SPACING, - theme::CONTENT_BORDER, - )); + let bot_padding = 20; + let top_padding = 14; + let button_height = theme::COUNTER_BUTTON_HEIGHT; + + let content_area = self.area.inset(Insets::top(top_padding)); + let (content_area, input_area) = content_area.split_bottom(button_height + bot_padding); + let input_area = input_area.inset(Insets::bottom(bot_padding)); - let grid = Grid::new(button_area, 1, 2).with_spacing(theme::KEYBOARD_SPACING); - self.input.place(input_area); self.paragraphs.place(content_area); self.paragraphs_pad.place(content_area); - self.info_button.place(grid.row_col(0, 0)); - self.confirm_button.place(grid.row_col(0, 1)); + self.input.place(input_area); bounds } @@ -104,29 +90,17 @@ where self.update_text(ctx, i); } self.paragraphs.event(ctx, event); - if let Some(ButtonMsg::Clicked) = self.info_button.event(ctx, event) { - return Some(Self::Msg::InfoRequested); - } - if let Some(ButtonMsg::Clicked) = self.confirm_button.event(ctx, event) { - return Some(Self::Msg::Selected); - }; None } fn paint(&mut self) { - self.input.paint(); - self.paragraphs_pad.paint(); - self.paragraphs.paint(); - self.info_button.paint(); - self.confirm_button.paint(); + todo!("remove when ui-t3t1 done"); } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.paragraphs_pad.render(target); self.paragraphs.render(target); - self.info_button.render(target); - self.confirm_button.render(target); } #[cfg(feature = "ui_bounds")] @@ -134,8 +108,26 @@ where sink(self.area); self.input.bounds(sink); self.paragraphs.bounds(sink); - self.info_button.bounds(sink); - self.confirm_button.bounds(sink); + } +} + +impl<F> Swipable<NumberInputDialogMsg> for NumberInputDialog<F> +where + F: Fn(u32) -> TString<'static>, +{ + fn swipe_start( + &mut self, + _ctx: &mut EventCtx, + direction: SwipeDirection, + ) -> SwipableResult<NumberInputDialogMsg> { + match direction { + SwipeDirection::Up => SwipableResult::Return(NumberInputDialogMsg(self.value())), + _ => SwipableResult::Ignored, + } + } + + fn swipe_finished(&self) -> bool { + true } } @@ -148,8 +140,6 @@ where t.component("NumberInputDialog"); t.child("input", &self.input); t.child("paragraphs", &self.paragraphs); - t.child("info_button", &self.info_button); - t.child("confirm_button", &self.confirm_button); } } @@ -168,10 +158,10 @@ pub struct NumberInput { impl NumberInput { pub fn new(min: u32, max: u32, value: u32) -> Self { - let dec = Button::with_text("-".into()) + let dec = Button::with_icon(theme::ICON_MINUS) .styled(theme::button_counter()) .into_child(); - let inc = Button::with_text("+".into()) + let inc = Button::with_icon(theme::ICON_PLUS) .styled(theme::button_counter()) .into_child(); let value = value.clamp(min, max); @@ -219,21 +209,7 @@ impl Component for NumberInput { } fn paint(&mut self) { - let mut buf = [0u8; 10]; - if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { - let digit_font = Font::DEMIBOLD; - let y_offset = digit_font.text_height() / 2 + Button::BASELINE_OFFSET.y; - display::rect_fill(self.area, theme::BG); - display::text_center( - self.area.center() + Offset::y(y_offset), - text, - digit_font, - theme::FG, - theme::BG, - ); - } - self.dec.paint(); - self.inc.paint(); + todo!("remove when ui-t3t1 done"); } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { @@ -241,7 +217,7 @@ impl Component for NumberInput { if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { let digit_font = Font::DEMIBOLD; - let y_offset = digit_font.text_height() / 2 + Button::BASELINE_OFFSET.y; + let y_offset = digit_font.text_height() / 2; shape::Bar::new(self.area).with_bg(theme::BG).render(target); shape::Text::new(self.area.center() + Offset::y(y_offset), text) diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index ba950ea663..0a782b922a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -6,6 +6,7 @@ pub mod confirm_set_new_pin; pub mod confirm_summary; pub mod get_address; pub mod prompt_backup; +pub mod request_number; pub mod show_share_words; pub mod warning_hi_prio; @@ -19,5 +20,6 @@ pub use confirm_set_new_pin::SetNewPin; pub use confirm_summary::new_confirm_summary; pub use get_address::GetAddress; pub use prompt_backup::PromptBackup; +pub use request_number::RequestNumber; pub use show_share_words::ShowShareWords; pub use warning_hi_prio::WarningHiPrio; diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs new file mode 100644 index 0000000000..b265fdb66c --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -0,0 +1,148 @@ +use crate::{ + error, + micropython::qstr::Qstr, + strutil::TString, + translations::TR, + ui::{ + button_request::ButtonRequest, + component::{ + text::paragraphs::{Paragraph, Paragraphs}, + ButtonRequestExt, ComponentExt, SwipeDirection, + }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + }, +}; + +use super::super::{ + component::{ + CancelInfoConfirmMsg, Frame, FrameMsg, NumberInputDialog, NumberInputDialogMsg, + VerticalMenu, VerticalMenuChoiceMsg, + }, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum RequestNumber { + Number, + Menu, + Info, +} + +impl FlowState for RequestNumber { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (RequestNumber::Number, SwipeDirection::Left) => { + Decision::Goto(RequestNumber::Menu, direction) + } + (RequestNumber::Menu, SwipeDirection::Right) => { + Decision::Goto(RequestNumber::Number, direction) + } + (RequestNumber::Info, SwipeDirection::Right) => { + Decision::Goto(RequestNumber::Menu, direction) + } + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (RequestNumber::Number, FlowMsg::Info) => { + Decision::Goto(RequestNumber::Menu, SwipeDirection::Left) + } + (RequestNumber::Menu, FlowMsg::Choice(0)) => { + Decision::Goto(RequestNumber::Info, SwipeDirection::Left) + } + (RequestNumber::Menu, FlowMsg::Choice(1)) => Decision::Return(FlowMsg::Cancelled), + (RequestNumber::Menu, FlowMsg::Cancelled) => { + Decision::Goto(RequestNumber::Number, SwipeDirection::Right) + } + (RequestNumber::Info, FlowMsg::Cancelled) => { + Decision::Goto(RequestNumber::Menu, SwipeDirection::Right) + } + (RequestNumber::Number, FlowMsg::Choice(n)) => Decision::Return(FlowMsg::Choice(n)), + _ => Decision::Nothing, + } + } +} + +use crate::{ + micropython::{map::Map, obj::Obj, util}, + ui::layout::obj::LayoutObj, +}; + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, RequestNumber::new_obj) } +} + +impl RequestNumber { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let count: u32 = kwargs.get(Qstr::MP_QSTR_count)?.try_into()?; + let min_count: u32 = kwargs.get(Qstr::MP_QSTR_min_count)?.try_into()?; + let max_count: u32 = kwargs.get(Qstr::MP_QSTR_max_count)?.try_into()?; + let description: Obj = kwargs.get(Qstr::MP_QSTR_description)?; + let info: Obj = kwargs.get(Qstr::MP_QSTR_info)?; + assert!(description != Obj::const_none()); + assert!(info != Obj::const_none()); + let br_type: TString = kwargs.get(Qstr::MP_QSTR_br_type)?.try_into()?; + let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; + + let description_cb = move |i: u32| { + TString::try_from( + description + .call_with_n_args(&[i.try_into().unwrap()]) + .unwrap(), + ) + .unwrap() + }; + let info_cb = move |i: u32| { + TString::try_from(info.call_with_n_args(&[i.try_into().unwrap()]).unwrap()).unwrap() + }; + + let number_input_dialog = + NumberInputDialog::new(min_count, max_count, count, description_cb)?; + let content_number_input = Frame::left_aligned(title, number_input_dialog) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .map(|msg| match msg { + FrameMsg::Button(_) => Some(FlowMsg::Info), + FrameMsg::Content(NumberInputDialogMsg(n)) => Some(FlowMsg::Choice(n as usize)), + }) + .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); + + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty() + .item(theme::ICON_CHEVRON_RIGHT, TR::buttons__more_info.into()) + .danger(theme::ICON_CANCEL, TR::backup__title_skip.into()), + ) + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(_) => None, + }); + + let paragraphs_info = Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + info_cb(0), // TODO: get the value + )); + let content_info = Frame::left_aligned( + TR::backup__title_skip.into(), + SwipePage::vertical(paragraphs_info), + ) + .with_cancel_button() + .map(|msg| match msg { + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let store = flow_store() + .add(content_number_input)? + .add(content_menu)? + .add(content_info)?; + let res = SwipeFlow::new(RequestNumber::Number, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index c9bd956f7a..02fc549745 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -41,10 +41,10 @@ use super::{ AddressDetails, Bip39Input, Button, ButtonMsg, ButtonPage, ButtonStyleSheet, CancelConfirmMsg, CancelInfoConfirmMsg, CoinJoinProgress, Dialog, DialogMsg, FidoConfirm, FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, - MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, - PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, - PromptScreen, SelectWordCount, SelectWordCountMsg, SimplePage, Slip39Input, StatusScreen, - SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, + MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, PassphraseKeyboardMsg, + PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, SelectWordCount, SelectWordCountMsg, + SimplePage, Slip39Input, StatusScreen, SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, + VerticalMenuChoiceMsg, }, flow, theme, }; @@ -247,19 +247,6 @@ where } } -impl<F> ComponentMsgObj for NumberInputDialog<F> -where - F: Fn(u32) -> TString<'static>, -{ - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - let value = self.value().try_into()?; - match msg { - NumberInputDialogMsg::Selected => Ok((CONFIRMED.as_obj(), value).try_into()?), - NumberInputDialogMsg::InfoRequested => Ok((CANCELLED.as_obj(), value).try_into()?), - } - } -} - impl ComponentMsgObj for Progress { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() @@ -1175,33 +1162,6 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let min_count: u32 = kwargs.get(Qstr::MP_QSTR_min_count)?.try_into()?; - let max_count: u32 = kwargs.get(Qstr::MP_QSTR_max_count)?.try_into()?; - let count: u32 = kwargs.get(Qstr::MP_QSTR_count)?.try_into()?; - let description_callback: Obj = kwargs.get(Qstr::MP_QSTR_description)?; - assert!(description_callback != Obj::const_none()); - - let callback = move |i: u32| { - TString::try_from( - description_callback - .call_with_n_args(&[i.try_into().unwrap()]) - .unwrap(), - ) - .unwrap() - }; - - let obj = LayoutObj::new(Frame::left_aligned( - title, - NumberInputDialog::new(min_count, max_count, count, callback)?, - ))?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1860,16 +1820,20 @@ pub static mp_module_trezorui2: Module = obj_module! { /// confirmation.""" Qstr::MP_QSTR_flow_show_share_words => obj_fn_kw!(0, flow::show_share_words::new_show_share_words).as_obj(), - /// def request_number( + /// def flow_request_number( /// *, /// title: str, /// count: int, /// min_count: int, /// max_count: int, /// description: Callable[[int], str] | None = None, + /// info: Callable[[int], str] | None = None, + /// br_code: ButtonRequestType, + /// br_type: str, /// ) -> LayoutObj[tuple[UiResult, int]]: - /// """Number input with + and - buttons, description, and info button.""" - Qstr::MP_QSTR_request_number => obj_fn_kw!(0, new_request_number).as_obj(), + /// """Numer input with + and - buttons, description, and context menu with cancel and + /// info.""" + Qstr::MP_QSTR_flow_request_number => obj_fn_kw!(0, flow::request_number::new_request_number).as_obj(), /// def show_checklist( /// *, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 4f2df01ec6..fd2f956ca7 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -416,6 +416,22 @@ def request_number( """Number input with + and - buttons, description, and info button.""" +# rust/src/ui/model_mercury/layout.rs +def flow_request_number( + *, + title: str, + count: int, + min_count: int, + max_count: int, + description: Callable[[int], str] | None = None, + info: Callable[[int], str] | None = None, + br_code: ButtonRequestType, + br_type: str, +) -> LayoutObj[tuple[UiResult, int]]: + """Numer input with + and - buttons, description, and context menu with cancel and + info.""" + + # rust/src/ui/model_mercury/layout.rs def show_checklist( *, diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index b568ab5c0d..0069cc7505 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -134,41 +134,32 @@ async def _prompt_number( max_count: int, br_name: str, ) -> int: - num_input = RustLayout( - trezorui2.request_number( + + result = await RustLayout( + trezorui2.flow_request_number( title=title, description=description, count=count, min_count=min_count, max_count=max_count, + info=info, + br_code=ButtonRequestType.ResetDevice, + br_type=br_name, ) ) - while True: - result = await interact( - num_input, - br_name, - ButtonRequestType.ResetDevice, - ) - if __debug__: - if not isinstance(result, tuple): - # DebugLink currently can't send number of shares and it doesn't - # change the counter either so just use the initial value. - result = (result, count) - status, value = result - - if status == CONFIRMED: - assert isinstance(value, int) - return value - - await RustLayout( - trezorui2.show_simple( - title=None, - description=info(value), - button=TR.buttons__ok_i_understand, - ) - ) - num_input.request_complete_repaint() + if __debug__: + # TODO: is this still relevant? + if not isinstance(result, tuple): + # DebugLink currently can't send number of shares and it doesn't + # change the counter either so just use the initial value. + result = (result, count) + status, value = result + if status == CONFIRMED: + assert isinstance(value, int) + return value + else: + raise ActionCancelled # user cancelled request number prompt async def slip39_prompt_threshold( From 27d733f89d300a50258059f7fbc524ced87c2110 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 27 May 2024 01:05:04 +0200 Subject: [PATCH 172/626] feat(core/ui): T3T1 backup checklist Also add subtitle to ShareWords. [no changelog] --- core/embed/rust/librust_qstr.h | 1 + .../generated/translated_string.rs | 15 +-- .../rust/src/ui/component/text/paragraphs.rs | 86 +++++++++++++----- .../ui/model_mercury/flow/show_share_words.rs | 6 +- .../embed/rust/src/ui/model_mercury/layout.rs | 38 ++++---- .../rust/src/ui/model_mercury/theme/mod.rs | 37 +++----- core/mocks/generated/trezorui2.pyi | 13 +-- core/mocks/trezortranslate_keys.pyi | 7 +- .../apps/management/reset_device/__init__.py | 6 +- core/src/trezor/ui/layouts/mercury/reset.py | 91 ++++++++++++------- core/src/trezor/ui/layouts/tr/reset.py | 7 +- core/src/trezor/ui/layouts/tt/reset.py | 7 +- core/translations/en.json | 7 +- core/translations/order.json | 3 +- core/translations/signatures.json | 6 +- 15 files changed, 194 insertions(+), 136 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 89ef5c0394..3e8c55e164 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -498,6 +498,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__share_completed_template; MP_QSTR_reset__share_words_title; MP_QSTR_reset__slip39_checklist_num_groups; + MP_QSTR_reset__slip39_checklist_num_groups_x_template; MP_QSTR_reset__slip39_checklist_num_shares; MP_QSTR_reset__slip39_checklist_num_shares_x_template; MP_QSTR_reset__slip39_checklist_set_num_groups; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 0ccfe35a0d..966cde4726 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1307,11 +1307,11 @@ pub enum TranslatedString { reset__incorrect_word_selected = 907, // "Incorrect word selected" reset__more_at = 908, // "More at" reset__num_of_shares_how_many = 909, // "How many wallet backup shares do you want to create?" - reset__num_of_shares_long_info = 910, // "Each recovery share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + reset__num_of_shares_long_info = 910, // "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." reset__select_threshold = 911, // "Select the minimum shares required to recover your wallet." reset__share_completed_template = 912, // "Share #{0} completed" - reset__slip39_checklist_num_shares_x_template = 913, // "Number of shares" - reset__slip39_checklist_threshold_x_template = 914, // "Recovery threshold:" + reset__slip39_checklist_num_shares_x_template = 913, // "Number of shares: {0}" + reset__slip39_checklist_threshold_x_template = 914, // "Recovery threshold: {0}" send__transaction_signed = 915, // "Transaction signed" tutorial__continue = 916, // "Continue tutorial" tutorial__exit = 917, // "Exit tutorial" @@ -1328,6 +1328,7 @@ pub enum TranslatedString { words__operation_cancelled = 928, // "Operation cancelled" words__settings = 929, // "Settings" words__try_again = 930, // "Try again." + reset__slip39_checklist_num_groups_x_template = 931, // "Number of groups: {0}" } impl TranslatedString { @@ -2630,11 +2631,11 @@ impl TranslatedString { Self::reset__incorrect_word_selected => "Incorrect word selected", Self::reset__more_at => "More at", Self::reset__num_of_shares_how_many => "How many wallet backup shares do you want to create?", - Self::reset__num_of_shares_long_info => "Each recovery share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + Self::reset__num_of_shares_long_info => "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", Self::reset__select_threshold => "Select the minimum shares required to recover your wallet.", Self::reset__share_completed_template => "Share #{0} completed", - Self::reset__slip39_checklist_num_shares_x_template => "Number of shares", - Self::reset__slip39_checklist_threshold_x_template => "Recovery threshold:", + Self::reset__slip39_checklist_num_shares_x_template => "Number of shares: {0}", + Self::reset__slip39_checklist_threshold_x_template => "Recovery threshold: {0}", Self::send__transaction_signed => "Transaction signed", Self::tutorial__continue => "Continue tutorial", Self::tutorial__exit => "Exit tutorial", @@ -2651,6 +2652,7 @@ impl TranslatedString { Self::words__operation_cancelled => "Operation cancelled", Self::words__settings => "Settings", Self::words__try_again => "Try again.", + Self::reset__slip39_checklist_num_groups_x_template => "Number of groups: {0}", } } @@ -3975,6 +3977,7 @@ impl TranslatedString { Qstr::MP_QSTR_words__operation_cancelled => Some(Self::words__operation_cancelled), Qstr::MP_QSTR_words__settings => Some(Self::words__settings), Qstr::MP_QSTR_words__try_again => Some(Self::words__try_again), + Qstr::MP_QSTR_reset__slip39_checklist_num_groups_x_template => Some(Self::reset__slip39_checklist_num_groups_x_template), _ => None, } } diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index f2b59d3a47..f475698e6b 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -4,7 +4,7 @@ use crate::{ strutil::TString, ui::{ component::{Component, Event, EventCtx, Never, Paginate}, - display::toif::Icon, + display::{toif::Icon, Color, Font}, geometry::{ Alignment, Alignment2D, Dimensions, Insets, LinearPlacement, Offset, Point, Rect, }, @@ -14,6 +14,7 @@ use crate::{ }; use super::layout::{LayoutFit, TextLayout, TextStyle}; +use heapless::String; /// Used as an upper bound of number of different styles we may render on single /// page. @@ -557,6 +558,8 @@ pub struct Checklist<T> { current: usize, icon_current: Icon, icon_done: Icon, + icon_done_color: Option<Color>, + show_numerals: bool, /// How wide will the left icon column be check_width: i16, /// Offset of the icon representing DONE @@ -565,7 +568,10 @@ pub struct Checklist<T> { current_offset: Offset, } -impl<T> Checklist<T> { +impl<'a, T> Checklist<T> +where + T: ParagraphSource<'a>, +{ pub fn from_paragraphs( icon_current: Icon, icon_done: Icon, @@ -578,6 +584,8 @@ impl<T> Checklist<T> { current, icon_current, icon_done, + icon_done_color: None, + show_numerals: false, check_width: 0, done_offset: Offset::zero(), current_offset: Offset::zero(), @@ -599,6 +607,38 @@ impl<T> Checklist<T> { self } + pub fn with_icon_done_color(mut self, col: Color) -> Self { + self.icon_done_color = Some(col); + self + } + + pub fn with_numerals(mut self, show_numerals: bool) -> Self { + self.show_numerals = show_numerals; + self + } + + fn render_left_column<'s>(&self, target: &mut impl Renderer<'s>) { + let current_visible = self.current.saturating_sub(self.paragraphs.offset.par); + for (i, layout) in self.paragraphs.visible.iter().enumerate() { + let l = &layout.layout(&self.paragraphs.source); + let base = Point::new(self.area.x0, l.bounds.y0); + if i < current_visible { + // finished tasks - labeled with icon "done" + let color = self.icon_done_color.unwrap_or(l.style.text_color); + self.render_icon(base + self.done_offset, self.icon_done, color, target) + } else { + // current and future tasks - ordinal numbers or icon on current task + if self.show_numerals { + let num_offset = Offset::y(Font::NORMAL.visible_text_height("1")); + self.render_numeral(base + num_offset, i, l.style.text_color, target); + } else if i == current_visible { + let color = l.style.text_color; + self.render_icon(base + self.current_offset, self.icon_current, color, target); + } + } + } + } + fn paint_icon(&self, layout: &TextLayout, icon: Icon, offset: Offset) { let top_left = Point::new(self.area.x0, layout.bounds.y0); icon.draw( @@ -609,16 +649,29 @@ impl<T> Checklist<T> { ); } + fn render_numeral<'s>( + &self, + base_point: Point, + n: usize, + color: Color, + target: &mut impl Renderer<'s>, + ) { + let numeral = build_string!(10, inttostr!(n as u8 + 1), "."); + shape::Text::new(base_point, numeral.as_str()) + .with_font(Font::NORMAL) + .with_fg(color) + .render(target); + } + fn render_icon<'s>( &self, - layout: &TextLayout, + base_point: Point, icon: Icon, - offset: Offset, + color: Color, target: &mut impl Renderer<'s>, ) { - let top_left = Point::new(self.area.x0, layout.bounds.y0); - shape::ToifImage::new(top_left + offset, icon.toif) - .with_fg(layout.style.text_color) + shape::ToifImage::new(base_point, icon.toif) + .with_fg(color) .render(target); } } @@ -662,24 +715,7 @@ where fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.paragraphs.render(target); - - let current_visible = self.current.saturating_sub(self.paragraphs.offset.par); - for layout in self.paragraphs.visible.iter().take(current_visible) { - self.render_icon( - &layout.layout(&self.paragraphs.source), - self.icon_done, - self.done_offset, - target, - ); - } - if let Some(layout) = self.paragraphs.visible.iter().nth(current_visible) { - self.render_icon( - &layout.layout(&self.paragraphs.source), - self.icon_current, - self.current_offset, - target, - ); - } + self.render_left_column(target); } #[cfg(feature = "ui_bounds")] diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index f9d00971d5..c5a3c82675 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -74,6 +74,7 @@ pub extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: impl ShowShareWords { fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let subtitle: TString = kwargs.get(Qstr::MP_QSTR_subtitle)?.try_into()?; let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_words)?; let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; let text_info: TString = kwargs.get(Qstr::MP_QSTR_text_info)?.try_into()?; @@ -90,8 +91,9 @@ impl ShowShareWords { .with_footer(TR::instructions__swipe_up.into(), None) .map(|msg| matches!(msg, FrameMsg::Content(_)).then_some(FlowMsg::Confirmed)); - let content_words = - Frame::left_aligned(title, ShareWords::new(share_words_vec)).map(|_| None); + let content_words = Frame::left_aligned(title, ShareWords::new(share_words_vec)) + .with_subtitle(subtitle) + .map(|_| None); let content_confirm = Frame::left_aligned(text_confirm, PromptScreen::new_hold_to_confirm()) diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 02fc549745..4a299836b8 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1165,7 +1165,7 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; + let _button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let active: usize = kwargs.get(Qstr::MP_QSTR_active)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; @@ -1180,25 +1180,22 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M paragraphs.add(Paragraph::new(style, text)); } - let obj = LayoutObj::new(Frame::left_aligned( - title, - Dialog::new( - Checklist::from_paragraphs( - theme::ICON_LIST_CURRENT, - theme::ICON_LIST_CHECK, - active, - paragraphs - .into_paragraphs() - .with_spacing(theme::CHECKLIST_SPACING), - ) - .with_check_width(theme::CHECKLIST_CHECK_WIDTH) - .with_current_offset(theme::CHECKLIST_CURRENT_OFFSET) - .with_done_offset(theme::CHECKLIST_DONE_OFFSET), - theme::button_bar(Button::with_text(button).map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) - })), - ), - ))?; + let checklist_content = SwipeUpScreen::new( + Checklist::from_paragraphs( + theme::ICON_CHEVRON_RIGHT, + theme::ICON_BULLET_CHECKMARK, + active, + paragraphs + .into_paragraphs() + .with_spacing(theme::CHECKLIST_SPACING), + ) + .with_check_width(theme::CHECKLIST_CHECK_WIDTH) + .with_icon_done_color(theme::GREEN), + ); + let obj = LayoutObj::new( + Frame::left_aligned(title, checklist_content) + .with_footer(TR::instructions__swipe_up.into(), None), + )?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1812,6 +1809,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def flow_show_share_words( /// *, /// title: str, + /// subtitle: str, /// words: Iterable[str], /// text_info: str, /// text_confirm: str, diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 0309576682..d85a0ed683 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -161,10 +161,6 @@ include_icon!(ICON_CLICK, "model_tt/res/finger24.toif"); include_icon!(ICON_CORNER_CANCEL, "model_tt/res/x32.toif"); include_icon!(ICON_CORNER_INFO, "model_tt/res/info32.toif"); -// Checklist symbols. -include_icon!(ICON_LIST_CURRENT, "model_tt/res/arrow-right16.toif"); -include_icon!(ICON_LIST_CHECK, "model_tt/res/check16.toif"); - // Homescreen notifications. include_icon!(ICON_WARN, "model_tt/res/warning16.toif"); include_icon!(ICON_WARNING40, "model_tt/res/warning40.toif"); @@ -689,23 +685,23 @@ pub const fn button_counter() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { font: Font::DEMIBOLD, - text_color: FG, - button_color: GREY_DARK, - icon_color: GREY_LIGHT, + text_color: GREY, + button_color: GREY_EXTRA_DARK, + icon_color: GREY, background_color: BG, }, active: &ButtonStyle { font: Font::DEMIBOLD, - text_color: FG, - button_color: GREY_MEDIUM, - icon_color: GREY_LIGHT, + text_color: BG, + button_color: GREY_LIGHT, + icon_color: BG, background_color: BG, }, disabled: &ButtonStyle { font: Font::DEMIBOLD, - text_color: GREY_LIGHT, - button_color: GREY_DARK, - icon_color: GREY_LIGHT, + text_color: GREY_DARK, + button_color: BG, + icon_color: GREY_DARK, background_color: BG, }, } @@ -797,12 +793,10 @@ pub fn textstyle_number(num: i32) -> &'static TextStyle { pub const TEXT_NORMAL_OFF_WHITE: TextStyle = TextStyle::new(Font::NORMAL, OFF_WHITE, BG, GREY_LIGHT, GREY_LIGHT); -pub const TEXT_CHECKLIST_DEFAULT: TextStyle = - TextStyle::new(Font::NORMAL, GREY_LIGHT, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_CHECKLIST_DEFAULT: TextStyle = TextStyle::new(Font::SUB, GREY, BG, GREY, GREY); pub const TEXT_CHECKLIST_SELECTED: TextStyle = - TextStyle::new(Font::NORMAL, FG, BG, GREY_LIGHT, GREY_LIGHT); -pub const TEXT_CHECKLIST_DONE: TextStyle = - TextStyle::new(Font::NORMAL, GREEN_DARK, BG, GREY_LIGHT, GREY_LIGHT); + TextStyle::new(Font::NORMAL, GREY_LIGHT, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_CHECKLIST_DONE: TextStyle = TextStyle::new(Font::SUB, GREY, BG, GREY, GREY); /// Spacing between components (e.g. header and main content) and offsets from /// the side of the screen. Generally applied everywhere except the top side of @@ -814,10 +808,11 @@ pub const BUTTON_HEIGHT: i16 = 62; pub const BUTTON_WIDTH: i16 = 78; pub const BUTTON_SPACING: i16 = SPACING; pub const KEYBOARD_SPACING: i16 = BUTTON_SPACING; -pub const CHECKLIST_SPACING: i16 = 10; +pub const CHECKLIST_SPACING: i16 = 12; pub const RECOVERY_SPACING: i16 = 18; pub const CORNER_BUTTON_SIDE: i16 = 44; pub const CORNER_BUTTON_SPACING: i16 = BUTTON_SPACING; +pub const COUNTER_BUTTON_HEIGHT: i16 = 60; pub const INFO_BUTTON_HEIGHT: i16 = 44; pub const PIN_BUTTON_HEIGHT: i16 = 52; pub const MNEMONIC_BUTTON_HEIGHT: i16 = 62; @@ -828,9 +823,7 @@ pub const RESULT_FOOTER_HEIGHT: i16 = 62; pub const DETAILS_SPACING: i16 = 8; // checklist settings -pub const CHECKLIST_CHECK_WIDTH: i16 = 16; -pub const CHECKLIST_DONE_OFFSET: Offset = Offset::new(-2, 6); -pub const CHECKLIST_CURRENT_OFFSET: Offset = Offset::new(2, 3); +pub const CHECKLIST_CHECK_WIDTH: i16 = 32; // icon width (20px) + padding (12px) pub const fn button_bar<T>(inner: T) -> FixedHeightBar<T> { FixedHeightBar::bottom(inner, BUTTON_HEIGHT) diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index fd2f956ca7..00fa91c97a 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -396,6 +396,7 @@ def flow_prompt_backup() -> LayoutObj[UiResult] def flow_show_share_words( *, title: str, + subtitle: str, words: Iterable[str], text_info: str, text_confirm: str, @@ -404,18 +405,6 @@ def flow_show_share_words( confirmation.""" -# rust/src/ui/model_mercury/layout.rs -def request_number( - *, - title: str, - count: int, - min_count: int, - max_count: int, - description: Callable[[int], str] | None = None, -) -> LayoutObj[tuple[UiResult, int]]: - """Number input with + and - buttons, description, and info button.""" - - # rust/src/ui/model_mercury/layout.rs def flow_request_number( *, diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 675404a334..cb49e88df3 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -627,7 +627,7 @@ class TR: reset__num_of_shares_advanced_info_template: str = "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}." reset__num_of_shares_basic_info: str = "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." reset__num_of_shares_how_many: str = "How many wallet backup shares do you want to create?" - reset__num_of_shares_long_info: str = "Each recovery share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + reset__num_of_shares_long_info: str = "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." reset__num_shares_for_group_template: str = "The required number of shares to form Group {0}." reset__number_of_shares_info: str = "= total number of unique word lists used for wallet backup." reset__one_share: str = "1 share" @@ -644,14 +644,15 @@ class TR: reset__share_completed_template: str = "Share #{0} completed" reset__share_words_title: str = "Standard backup" reset__slip39_checklist_num_groups: str = "Number of groups" + reset__slip39_checklist_num_groups_x_template: str = "Number of groups: {0}" reset__slip39_checklist_num_shares: str = "Number of shares" - reset__slip39_checklist_num_shares_x_template: str = "Number of shares" + reset__slip39_checklist_num_shares_x_template: str = "Number of shares: {0}" reset__slip39_checklist_set_num_groups: str = "Set number of groups" reset__slip39_checklist_set_num_shares: str = "Set number of shares" reset__slip39_checklist_set_sizes: str = "Set sizes and thresholds" reset__slip39_checklist_set_sizes_longer: str = "Set size and threshold for each group" reset__slip39_checklist_set_threshold: str = "Set threshold" - reset__slip39_checklist_threshold_x_template: str = "Recovery threshold:" + reset__slip39_checklist_threshold_x_template: str = "Recovery threshold: {0}" reset__slip39_checklist_title: str = "Backup checklist" reset__slip39_checklist_write_down: str = "Write down and check all shares" reset__slip39_checklist_write_down_recovery: str = "Write down & check all wallet backup shares" diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index 9abb77a4c7..a37804672f 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -138,7 +138,7 @@ async def _backup_slip39_basic( share_count = await layout.slip39_prompt_number_of_shares() # get threshold - await layout.slip39_show_checklist(1, advanced=False) + await layout.slip39_show_checklist(1, advanced=False, count=share_count) share_threshold = await layout.slip39_prompt_threshold(share_count) mnemonics = _get_slip39_mnemonics( @@ -149,7 +149,9 @@ async def _backup_slip39_basic( ) # show and confirm individual shares - await layout.slip39_show_checklist(2, advanced=False) + await layout.slip39_show_checklist( + 2, advanced=False, count=share_count, threshold=share_threshold + ) await layout.slip39_basic_show_and_confirm_shares(mnemonics[0]) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 0069cc7505..6c8ad0f0a1 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -23,12 +23,13 @@ async def show_share_words( group_index: int | None = None, ) -> None: + title = TR.reset__recovery_wallet_backup_title if share_index is None: - title = TR.reset__recovery_wallet_backup_title + subtitle = "" elif group_index is None: - title = TR.reset__recovery_share_title_template.format(share_index + 1) + subtitle = TR.reset__recovery_share_title_template.format(share_index + 1) else: - title = TR.reset__group_share_title_template.format( + subtitle = TR.reset__group_share_title_template.format( group_index + 1, share_index + 1 ) words_count = len(share_words) @@ -39,6 +40,7 @@ async def show_share_words( RustLayout( trezorui2.flow_show_share_words( title=title, + subtitle=subtitle, words=share_words, text_info=text_info, text_confirm=text_confirm, @@ -90,29 +92,17 @@ async def select_word( return words[result] -async def slip39_show_checklist(step: int, backup_type: BackupType) -> None: - from trezor.enums import BackupType - - assert backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced) - - items = ( - ( - TR.reset__slip39_checklist_set_num_shares, - TR.reset__slip39_checklist_set_threshold, - TR.reset__slip39_checklist_write_down_recovery, - ) - if backup_type == BackupType.Slip39_Basic - else ( - TR.reset__slip39_checklist_set_num_groups, - TR.reset__slip39_checklist_set_num_shares, - TR.reset__slip39_checklist_set_sizes_longer, - ) - ) - +async def slip39_show_checklist( + step: int, + backup_type: BackupType, + count: int | None = None, + threshold: int | None = None, +) -> None: + items = _slip_39_checklist_items(step, backup_type, count, threshold) result = await interact( RustLayout( trezorui2.show_checklist( - title=TR.reset__slip39_checklist_title, + title=TR.reset__title_shamir_backup, button=TR.buttons__continue, active=step, items=items, @@ -125,6 +115,44 @@ async def slip39_show_checklist(step: int, backup_type: BackupType) -> None: raise ActionCancelled +def _slip_39_checklist_items( + step: int, + backup_type: BackupType, + count: int | None = None, + threshold: int | None = None, +): + from trezor.enums import BackupType + + assert backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced) + + if backup_type == BackupType.Slip39_Basic: + entry_1 = ( + TR.reset__slip39_checklist_num_shares_x_template.format(count) + if count + else TR.reset__slip39_checklist_set_num_shares + ) + entry_2 = ( + TR.reset__slip39_checklist_threshold_x_template.format(threshold) + if threshold + else TR.reset__slip39_checklist_set_threshold + ) + entry_3 = TR.reset__slip39_checklist_write_down_recovery + return (entry_1, entry_2, entry_3) + else: + entry_1 = ( + TR.reset__slip39_checklist_num_groups_x_template.format(count) + if count + else TR.reset__slip39_checklist_set_num_groups + ) + entry_2 = ( + TR.reset__slip39_checklist_threshold_x_template.format(threshold) + if threshold + else TR.reset__slip39_checklist_set_threshold + ) + entry_3 = TR.reset__slip39_checklist_set_sizes_longer + return (entry_1, entry_2, entry_3) + + async def _prompt_number( title: str, description: Callable[[int], str], @@ -149,7 +177,6 @@ async def _prompt_number( ) if __debug__: - # TODO: is this still relevant? if not isinstance(result, tuple): # DebugLink currently can't send number of shares and it doesn't # change the counter either so just use the initial value. @@ -173,12 +200,7 @@ async def slip39_prompt_threshold( def description(count: int) -> str: if group_id is None: - if count == 1: - return TR.reset__you_need_one_share - elif count == max_count: - return TR.reset__need_all_share_template.format(count) - else: - return TR.reset__need_any_share_template.format(count) + return TR.reset__select_threshold else: return TR.reset__num_shares_for_group_template.format(group_id + 1) @@ -186,6 +208,8 @@ def info(count: int) -> str: # TODO: this is madness... text = TR.reset__the_threshold_sets_the_number_of_shares if group_id is None: + # FIXME: need to propagate the argument in rust, temporary hack to show plausible value + count = num_of_shares - 1 text += TR.reset__needed_to_recover_your_wallet text += TR.reset__set_it_to_count_template.format(count) if num_of_shares == 1: @@ -225,17 +249,14 @@ async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: def description(i: int): if group_id is None: - if i == 1: - return TR.reset__only_one_share_will_be_created - else: - return TR.reset__num_of_shares_how_many + return TR.reset__num_of_shares_how_many else: return TR.reset__total_number_of_shares_in_group_template.format( group_id + 1 ) if group_id is None: - info = TR.reset__num_of_shares_basic_info + info = TR.reset__num_of_shares_long_info else: info = TR.reset__num_of_shares_advanced_info_template.format(group_id + 1) diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index d75378222c..6dcc593195 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -99,7 +99,12 @@ async def select_word( return words[result] -async def slip39_show_checklist(step: int, advanced: bool) -> None: +async def slip39_show_checklist( + step: int, + advanced: bool, + count: int | None = None, + threshold: int | None = None, +) -> None: items = ( ( TR.reset__slip39_checklist_num_shares, diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index cb4a4aff07..bdb88043dc 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -103,7 +103,12 @@ async def select_word( return words[result] -async def slip39_show_checklist(step: int, advanced: bool) -> None: +async def slip39_show_checklist( + step: int, + advanced: bool, + count: int | None = None, + threshold: int | None = None, +) -> None: items = ( ( TR.reset__slip39_checklist_set_num_shares, diff --git a/core/translations/en.json b/core/translations/en.json index 22672d7f23..c0709312de 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -629,7 +629,7 @@ "reset__num_of_shares_how_many": "How many wallet backup shares do you want to create?", "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}.", "reset__num_of_shares_basic_info": "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", - "reset__num_of_shares_long_info": "Each recovery share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + "reset__num_of_shares_long_info": "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", "reset__num_shares_for_group_template": "The required number of shares to form Group {0}.", "reset__number_of_shares_info": "= total number of unique word lists used for wallet backup.", "reset__one_share": "1 share", @@ -647,13 +647,14 @@ "reset__share_words_title": "Standard backup", "reset__slip39_checklist_num_groups": "Number of groups", "reset__slip39_checklist_num_shares": "Number of shares", - "reset__slip39_checklist_num_shares_x_template": "Number of shares", + "reset__slip39_checklist_num_shares_x_template": "Number of shares: {0}", + "reset__slip39_checklist_num_groups_x_template": "Number of groups: {0}", "reset__slip39_checklist_set_num_groups": "Set number of groups", "reset__slip39_checklist_set_num_shares": "Set number of shares", "reset__slip39_checklist_set_sizes": "Set sizes and thresholds", "reset__slip39_checklist_set_sizes_longer": "Set size and threshold for each group", "reset__slip39_checklist_set_threshold": "Set threshold", - "reset__slip39_checklist_threshold_x_template": "Recovery threshold:", + "reset__slip39_checklist_threshold_x_template": "Recovery threshold: {0}", "reset__slip39_checklist_title": "Backup checklist", "reset__slip39_checklist_write_down": "Write down and check all shares", "reset__slip39_checklist_write_down_recovery": "Write down & check all wallet backup shares", diff --git a/core/translations/order.json b/core/translations/order.json index 310497d629..4a3816259d 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -929,5 +929,6 @@ "927": "words__good_to_know", "928": "words__operation_cancelled", "929": "words__settings", - "930": "words__try_again" + "930": "words__try_again", + "931": "reset__slip39_checklist_num_groups_x_template" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 0c2086a5d2..05db498731 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "070867d6d288bb46d1eb69dd95bc6d7b6fc09a3f299c75e997d756e7915860d6", - "datetime": "2024-05-22T11:43:31.930638", - "commit": "6bd6027a57b814483947f98aeb118a15f846e3bb" + "merkle_root": "e79fdd3c9052dfd140aef2b4800b6b0b8000ae99822cf3e8be083da0dc2b376c", + "datetime": "2024-05-26T15:18:17.124044", + "commit": "3e9598245d57044418f4eeb5ce5bc792f20587c3" }, "history": [ { From cde0dce3ef2864a202ead820f98d15621fb578a4 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 28 May 2024 23:40:52 +0200 Subject: [PATCH 173/626] fix(core/ui): T3T1: rebase on main --- core/embed/rust/src/ui/component/map.rs | 2 +- core/embed/rust/src/ui/component/swipe.rs | 2 +- core/embed/rust/src/ui/flow/page.rs | 10 +++------- core/embed/rust/src/ui/flow/store.rs | 6 +++--- core/embed/rust/src/ui/flow/swipe.rs | 6 +++--- .../rust/src/ui/model_mercury/bootloader/mod.rs | 5 ++--- .../ui/model_mercury/component/address_details.rs | 2 +- .../model_mercury/component/coinjoin_progress.rs | 10 +++++----- .../rust/src/ui/model_mercury/component/dialog.rs | 4 ++-- .../rust/src/ui/model_mercury/component/fido.rs | 2 +- .../rust/src/ui/model_mercury/component/footer.rs | 2 +- .../ui/model_mercury/component/homescreen/mod.rs | 6 +++--- .../ui/model_mercury/component/keyboard/bip39.rs | 2 +- .../model_mercury/component/keyboard/mnemonic.rs | 2 +- .../component/keyboard/passphrase.rs | 4 ++-- .../ui/model_mercury/component/keyboard/pin.rs | 4 ++-- .../ui/model_mercury/component/keyboard/slip39.rs | 2 +- .../component/keyboard/word_count.rs | 2 +- .../rust/src/ui/model_mercury/component/loader.rs | 4 ++-- .../ui/model_mercury/component/number_input.rs | 4 ++-- .../rust/src/ui/model_mercury/component/page.rs | 2 +- .../src/ui/model_mercury/component/progress.rs | 15 +++++++-------- .../ui/model_mercury/component/prompt_screen.rs | 2 +- .../rust/src/ui/model_mercury/component/scroll.rs | 2 +- .../src/ui/model_mercury/component/share_words.rs | 4 ++-- .../src/ui/model_mercury/component/simple_page.rs | 2 +- .../ui/model_mercury/component/status_screen.rs | 2 +- .../ui/model_mercury/component/swipe_up_screen.rs | 2 +- .../ui/model_mercury/component/vertical_menu.rs | 2 +- .../src/ui/model_mercury/flow/confirm_output.rs | 4 ++-- .../src/ui/model_mercury/flow/confirm_summary.rs | 2 +- .../rust/src/ui/model_mercury/flow/get_address.rs | 2 +- .../src/ui/model_mercury/flow/request_number.rs | 2 +- core/embed/rust/src/ui/model_mercury/shapes.rs | 2 +- core/embed/rust/src/ui/model_mercury/theme/mod.rs | 2 +- core/src/trezor/ui/layouts/mercury/reset.py | 15 +++++---------- 36 files changed, 66 insertions(+), 77 deletions(-) diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index bc7fcf6cf1..82087c672a 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -102,7 +102,7 @@ where self.inner.paint() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.inner.render(target); } diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index 6f69262857..ecf0f1ddf0 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -155,5 +155,5 @@ impl Component for Swipe { fn paint(&mut self) {} - fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} } diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 36395b50a2..896820b24a 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -67,11 +67,7 @@ impl<T: Component + Paginate + Clone> SwipePage<T> { finished } - fn render_transition<'s>( - &'s self, - transition: &'s Transition<T>, - target: &mut impl Renderer<'s>, - ) { + fn render_transition<'s>(&self, transition: &Transition<T>, target: &mut impl Renderer<'s>) { target.in_clip(self.bounds, &|target| { util::render_slide( |target| transition.cloned.render(target), @@ -109,7 +105,7 @@ impl<T: Component + Paginate + Clone> Component for SwipePage<T> { self.inner.paint() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { if let Some(t) = &self.transition { return self.render_transition(t, target); } @@ -200,7 +196,7 @@ impl<T: Component> Component for IgnoreSwipe<T> { self.0.paint() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.0.render(target) } } diff --git a/core/embed/rust/src/ui/flow/store.rs b/core/embed/rust/src/ui/flow/store.rs index cf1bd2d60a..62f5444d0b 100644 --- a/core/embed/rust/src/ui/flow/store.rs +++ b/core/embed/rust/src/ui/flow/store.rs @@ -22,7 +22,7 @@ pub trait FlowStore { fn event(&mut self, i: usize, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg>; /// Call `Component::render` on i-th element. - fn render<'s>(&'s self, i: usize, target: &mut impl Renderer<'s>); + fn render<'s>(&self, i: usize, target: &mut impl Renderer<'s>); #[cfg(feature = "ui_debug")] /// Call `Trace::trace` on i-th element. @@ -62,7 +62,7 @@ impl FlowStore for FlowEmpty { panic!() } - fn render<'s>(&'s self, _i: usize, _target: &mut impl Renderer<'s>) { + fn render<'s>(&self, _i: usize, _target: &mut impl Renderer<'s>) { panic!() } @@ -132,7 +132,7 @@ where } } - fn render<'s>(&'s self, i: usize, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, i: usize, target: &mut impl Renderer<'s>) { if i == 0 { self.as_ref().render(target) } else { diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 70bb21c1df..627dbff1cc 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -80,12 +80,12 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { ctx.request_paint(); } - fn render_state<'s>(&'s self, state: Q, target: &mut impl Renderer<'s>) { + fn render_state<'s>(&self, state: Q, target: &mut impl Renderer<'s>) { self.store.render(state.index(), target) } fn render_transition<'s>( - &'s self, + &self, prev_state: &Q, animation: &Animation<f32>, direction: &SwipeDirection, @@ -188,7 +188,7 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { fn paint(&mut self) {} - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { match &self.transition { Transition::None | Transition::Internal => self.render_state(self.state, target), Transition::External { diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index c77d7e1c9c..9462752c69 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -35,7 +35,6 @@ use super::theme::BLACK; #[cfg(feature = "new_rendering")] use crate::ui::{ - constant, display::{toif::Toif, LOADER_MAX}, geometry::{Alignment, Alignment2D}, model_mercury::shapes::{render_loader, LoaderRange}, @@ -123,7 +122,7 @@ impl ModelMercuryFeatures { let center_text_offset: i16 = 10; let center = SCREEN.center() + Offset::y(loader_offset); let inactive_color = bg_color.blend(fg_color, 85); - let end = ((progress as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let end = 360.0 * progress as f32 / 1000.0; render_loader( center, @@ -133,7 +132,7 @@ impl ModelMercuryFeatures { if progress >= LOADER_MAX { LoaderRange::Full } else { - LoaderRange::FromTo(0, end) + LoaderRange::FromTo(0.0, end) }, target, ); diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index 79cde1c1f1..2e44f4317e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -161,7 +161,7 @@ impl Component for AddressDetails { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { match self.current_page { 0 => self.details.render(target), _ => self.xpub_view.render(target), diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs index eabb074037..1977d0c19b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -124,7 +124,7 @@ where self.label.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.content.render(target); let center = constant::screen().center() + Offset::y(LOADER_OFFSET); @@ -132,10 +132,10 @@ where let background_color = theme::BG; let inactive_color = background_color.blend(active_color, 85); - let start = (self.value as i32 - 100) % 1000; - let end = (self.value as i32 + 100) % 1000; - let start = ((start * 8 * shape::PI4 as i32) / 1000) as i16; - let end = ((end * 8 * shape::PI4 as i32) / 1000) as i16; + let start = (self.value as i16 - 100) % 1000; + let end = (self.value as i16 + 100) % 1000; + let start = 360.0 * start as f32 / 1000.0; + let end = 360.0 * end as f32 / 1000.0; shape::Circle::new(center, LOADER_OUTER) .with_bg(inactive_color) diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index 54fb32b152..e5bcd9f883 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -72,7 +72,7 @@ where self.controls.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.content.render(target); self.controls.render(target); } @@ -202,7 +202,7 @@ where self.controls.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.image.render(target); self.paragraphs.render(target); self.controls.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index bdee85ae1b..868c4c2fc2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -211,7 +211,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.icon.render(target); self.controls.render(target); self.app_name.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index 4161b2ba87..d21753c7e6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -94,7 +94,7 @@ impl<'a> Component for Footer<'a> { todo!() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // show description only if there is space for it if self.area.height() == Footer::HEIGHT_DEFAULT { if let Some(description) = self.text_description { diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index d9ec8b0e22..7575110641 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -108,7 +108,7 @@ impl Homescreen { } } - fn render_loader<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render_loader<'s>(&self, target: &mut impl Renderer<'s>) { TR::progress__locking_device.map_translated(|t| { shape::Text::new(TOP_CENTER + Offset::y(HOLD_Y), t) .with_align(Alignment::Center) @@ -186,7 +186,7 @@ impl Component for Homescreen { todo!() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { @@ -309,7 +309,7 @@ impl Component for Lockscreen<'_> { todo!() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let center = AREA.center(); match ImageInfo::parse(self.image) { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index 5fb9488af2..c5ce0d1143 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -107,7 +107,7 @@ impl Component for Bip39Input { todo!("remove when ui-t3t1 done"); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 058a4f606e..a8451149ea 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -208,7 +208,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { if self.input.inner().inner().is_empty() { self.prompt.render(target); if self.can_go_back { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 645882cee1..4f3ffbbaa0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -377,7 +377,7 @@ impl Component for PassphraseKeyboard { todo!("remove when ui-t3t1 done") } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.input.render(target); self.next_btn.render(target); self.erase_btn.render(target); @@ -441,7 +441,7 @@ impl Component for Input { todo!("remove when ui-t3t1 done"); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let style = theme::label_keyboard(); let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index 600c10d452..c5350f0dd9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -237,7 +237,7 @@ impl Component for PinKeyboard<'_> { todo!("remove when ui-t3t1 done"); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.erase_btn.render(target); self.textbox_pad.render(target); @@ -433,7 +433,7 @@ impl Component for PinDots { // TODO: remove when ui-t3t1 done } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let dot_area = self.area.inset(HEADER_PADDING); self.pad.render(target); if self.display_digits { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index 79173a1db0..d4de52fa91 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -127,7 +127,7 @@ impl Component for Slip39Input { todo!("remove when ui-t3t1 done") } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs index 720336473f..3b5ee6473d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -67,7 +67,7 @@ impl Component for SelectWordCount { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { for btn in self.button.iter() { btn.render(target) } diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index 78e9e54387..e55ad1022f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -223,8 +223,8 @@ impl Component for Loader { let active_color = style.active; let background_color = style.background_color; - let end = ((progress as i32 * 8 * shape::PI4 as i32) / 1000) as i16; - let start = 0; + let end = 360.0 * progress as f32 / 1000.0; + let start = 0.0; render_loader( center, diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index d3ff1c18fd..7b2f1052e0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -97,7 +97,7 @@ where todo!("remove when ui-t3t1 done"); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.input.render(target); self.paragraphs_pad.render(target); self.paragraphs.render(target); @@ -212,7 +212,7 @@ impl Component for NumberInput { todo!("remove when ui-t3t1 done"); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { let mut buf = [0u8; 10]; if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs index 7aab423874..9e501f549c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -419,7 +419,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); match &self.loader { Some(l) if l.is_animating() => self.loader.render(target), diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index c2af34a0aa..604f1ef26d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -15,7 +15,6 @@ use crate::{ constant, shapes::{render_loader, LoaderRange}, }, - shape, shape::Renderer, util::animation_disabled, }, @@ -111,7 +110,7 @@ impl Component for Progress { self.description.paint(); } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); let center = constant::screen().center() + Offset::y(self.loader_y_offset); @@ -120,17 +119,17 @@ impl Component for Progress { let inactive_color = theme::GREY_EXTRA_DARK; let range = if self.indeterminate { - let start = (self.value - 100) % 1000; - let end = (self.value + 100) % 1000; - let start = ((start as i32 * 8 * shape::PI4 as i32) / 1000) as i16; - let end = ((end as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let start = (self.value as i16 - 100) % 1000; + let end = (self.value as i16 + 100) % 1000; + let start = 360.0 * start as f32 / 1000.0; + let end = 360.0 * end as f32 / 1000.0; LoaderRange::FromTo(start, end) } else { - let end = ((self.value as i32 * 8 * shape::PI4 as i32) / 1000) as i16; + let end = 360.0 * self.value as f32 / 1000.0; if self.value >= LOADER_MAX { LoaderRange::Full } else { - LoaderRange::FromTo(0, end) + LoaderRange::FromTo(0.0, end) } }; diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 432603726b..31470ff722 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -106,7 +106,7 @@ impl Component for PromptScreen { todo!() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::Circle::new(self.area.center(), 70) .with_fg(self.circle_pad_color) .with_bg(theme::BLACK) diff --git a/core/embed/rust/src/ui/model_mercury/component/scroll.rs b/core/embed/rust/src/ui/model_mercury/component/scroll.rs index 1ea96fd960..d091082b57 100644 --- a/core/embed/rust/src/ui/model_mercury/component/scroll.rs +++ b/core/embed/rust/src/ui/model_mercury/component/scroll.rs @@ -124,7 +124,7 @@ impl Component for ScrollBar { } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { fn dotsize(distance: usize, nhidden: usize) -> Icon { match (nhidden.saturating_sub(distance)).min(2 - distance) { 0 => theme::DOT_INACTIVE, diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index b21274b5ff..b443ea3d34 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -58,7 +58,7 @@ impl<'a> ShareWords<'a> { self.page_index == self.share_words.len() - 1 } - fn render_word<'s>(&'s self, word_index: usize, target: &mut impl Renderer<'s>) { + fn render_word<'s>(&self, word_index: usize, target: &mut impl Renderer<'s>) { // the share word let word = self.share_words[word_index]; let word_baseline = target.viewport().clip.center() @@ -110,7 +110,7 @@ impl<'a> Component for ShareWords<'a> { // TODO: remove when ui-t3t1 done } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // corner highlights let (_, top_right_shape, bot_left_shape, bot_right_shape) = shape::CornerHighlight::from_rect(self.area_word, theme::GREY_DARK, theme::BG); diff --git a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs index 6fa2b9bca9..259ee1f626 100644 --- a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs @@ -169,7 +169,7 @@ where } } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.content.render(target); if self.scrollbar.has_pages() { diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index 1fe30e7190..dde3d7ac3a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -108,7 +108,7 @@ impl Component for StatusScreen { todo!() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { shape::Circle::new(self.area.center(), 40) .with_fg(self.circle_color) .with_bg(theme::BLACK) diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index 05f90bab67..fcbbaf2813 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -52,7 +52,7 @@ where todo!() } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.content.render(target); } diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 6773be7a8c..39d31a57ff 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -119,7 +119,7 @@ impl Component for VerticalMenu { // TODO remove when ui-t3t1 done } - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + fn render<'s>(&self, target: &mut impl Renderer<'s>) { // render buttons separated by thin bars for button in &self.buttons { button.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index d5b40aa91a..df5850dca2 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -109,7 +109,7 @@ impl ConfirmOutput { .with_chunkify(chunkify) .with_text_mono(text_mono) .into_layout()? - .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); + .one_button_request(ButtonRequest::from_num(br_code, br_type)); // Amount let content_amount = ConfirmBlobParams::new(TR::words__amount.into(), amount, None) @@ -118,7 +118,7 @@ impl ConfirmOutput { .with_footer(TR::instructions__swipe_up.into(), None) .with_text_mono(text_mono) .into_layout()? - .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); + .one_button_request(ButtonRequest::from_num(br_code, br_type)); // Menu let content_menu = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index 8466b8a370..ccf50743a7 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -105,7 +105,7 @@ impl ConfirmSummary { } let content_summary = summary .into_layout()? - .one_button_request(ButtonRequest::from_tstring(br_code, br_type)) + .one_button_request(ButtonRequest::from_num(br_code, br_type)) // Summary(1) + Hold(1) .with_pages(|summary_pages| summary_pages + 1); diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 7e3ab61819..2710264892 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -171,7 +171,7 @@ impl GetAddress { .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) - .one_button_request(ButtonRequest::from_tstring(br_code, br_type)) + .one_button_request(ButtonRequest::from_num(br_code, br_type)) // Count tap-to-confirm screen towards page count .with_pages(|address_pages| address_pages + 1); diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs index b265fdb66c..de5654ac00 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -109,7 +109,7 @@ impl RequestNumber { FrameMsg::Button(_) => Some(FlowMsg::Info), FrameMsg::Content(NumberInputDialogMsg(n)) => Some(FlowMsg::Choice(n as usize)), }) - .one_button_request(ButtonRequest::from_tstring(br_code, br_type)); + .one_button_request(ButtonRequest::from_num(br_code, br_type)); let content_menu = Frame::left_aligned( "".into(), diff --git a/core/embed/rust/src/ui/model_mercury/shapes.rs b/core/embed/rust/src/ui/model_mercury/shapes.rs index d05fc5d414..c31141c67a 100644 --- a/core/embed/rust/src/ui/model_mercury/shapes.rs +++ b/core/embed/rust/src/ui/model_mercury/shapes.rs @@ -2,7 +2,7 @@ use crate::ui::{display::Color, geometry::Point, model_mercury::constant, shape, pub enum LoaderRange { Full, - FromTo(i16, i16), + FromTo(f32, f32), } pub fn render_loader<'s>( diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index d85a0ed683..bcc93a3446 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -8,7 +8,7 @@ use crate::{ FixedHeightBar, }, display::{Color, Font, Icon}, - geometry::{Insets, Offset}, + geometry::Insets, }, }; diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 6c8ad0f0a1..4f33788cdf 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -9,10 +9,9 @@ from . import RustLayout, raise_if_not_confirmed if TYPE_CHECKING: + pass from typing import Callable, Sequence - from trezor.enums import BackupType - CONFIRMED = trezorui2.CONFIRMED # global_import_cache @@ -94,11 +93,11 @@ async def select_word( async def slip39_show_checklist( step: int, - backup_type: BackupType, + advanced: bool, count: int | None = None, threshold: int | None = None, ) -> None: - items = _slip_39_checklist_items(step, backup_type, count, threshold) + items = _slip_39_checklist_items(step, advanced, count, threshold) result = await interact( RustLayout( trezorui2.show_checklist( @@ -117,15 +116,11 @@ async def slip39_show_checklist( def _slip_39_checklist_items( step: int, - backup_type: BackupType, + advanced: bool, count: int | None = None, threshold: int | None = None, ): - from trezor.enums import BackupType - - assert backup_type in (BackupType.Slip39_Basic, BackupType.Slip39_Advanced) - - if backup_type == BackupType.Slip39_Basic: + if not advanced: entry_1 = ( TR.reset__slip39_checklist_num_shares_x_template.format(count) if count From c03781aef9a79e5a50d60fd14427ca692c064e44 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 29 May 2024 17:08:53 +0200 Subject: [PATCH 174/626] fix(core/ui): T3T1: keep only lowercase letters in font_ttsatoshi_demibold_42 To save space. [no changelog] --- .../lib/fonts/font_ttsatoshi_demibold_42.c | 204 ++++++------------ 1 file changed, 68 insertions(+), 136 deletions(-) diff --git a/core/embed/lib/fonts/font_ttsatoshi_demibold_42.c b/core/embed/lib/fonts/font_ttsatoshi_demibold_42.c index 8c06d83a9f..99a6be3fdf 100644 --- a/core/embed/lib/fonts/font_ttsatoshi_demibold_42.c +++ b/core/embed/lib/fonts/font_ttsatoshi_demibold_42.c @@ -7,70 +7,6 @@ // - the rest is packed 4-bit glyph data /* */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_32[] = { 0, 0, 11, 0, 0 }; -/* ! */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_33[] = { 6, 29, 12, 3, 29, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 249, 255, 207, 248, 255, 191, 247, 255, 159, 245, 255, 143, 244, 255, 111, 242, 255, 95, 241, 255, 63, 240, 255, 47, 224, 255, 15, 80, 102, 6, 0, 0, 0, 0, 0, 0, 216, 221, 189, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207, 250, 255, 207 }; -/* " */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_34[] = { 14, 10, 18, 2, 29, 247, 255, 95, 0, 251, 255, 31, 247, 255, 95, 0, 251, 255, 31, 247, 255, 95, 0, 251, 255, 31, 247, 255, 95, 0, 251, 255, 31, 247, 255, 95, 0, 251, 255, 31, 247, 255, 95, 0, 251, 255, 31, 247, 255, 95, 0, 251, 255, 31, 247, 255, 95, 0, 251, 255, 31, 247, 255, 95, 0, 251, 255, 31, 165, 170, 58, 0, 167, 170, 26 }; -/* # */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_35[] = { 30, 29, 30, 0, 29, 0, 0, 0, 0, 0, 246, 255, 111, 0, 0, 245, 255, 127, 0, 0, 0, 0, 0, 0, 0, 249, 255, 63, 0, 0, 248, 255, 79, 0, 0, 0, 0, 0, 0, 0, 253, 255, 15, 0, 0, 252, 255, 31, 0, 0, 0, 0, 0, 0, 0, 255, 255, 12, 0, 0, 255, 255, 13, 0, 0, 0, 0, 0, 0, 48, 255, 255, 8, 0, 48, 255, 255, 10, 0, 0, 0, 0, 0, 0, 112, 255, 255, 5, 0, 96, 255, 255, 6, 0, 0, 0, 0, 0, 0, 160, 255, 255, 1, 0, 160, 255, 255, 3, 0, 0, 0, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 0, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 146, 153, 153, 255, 255, 175, 153, 153, 254, 255, 175, 153, 153, 6, 0, 0, 0, 0, 255, 255, 13, 0, 0, 254, 255, 14, 0, 0, 0, 0, 0, 0, 48, 255, 255, 9, 0, 32, 255, 255, 10, 0, 0, 0, 0, 0, 0, 112, 255, 255, 6, 0, 80, 255, 255, 7, 0, 0, 0, 0, 0, 0, 160, 255, 255, 2, 0, 144, 255, 255, 4, 0, 0, 0, 0, 0, 0, 224, 255, 239, 0, 0, 192, 255, 255, 0, 0, 0, 0, 80, 153, 153, 249, 255, 239, 153, 153, 249, 255, 255, 153, 153, 41, 0, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 9, 0, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 5, 0, 0, 0, 32, 255, 255, 10, 0, 16, 255, 255, 11, 0, 0, 0, 0, 0, 0, 96, 255, 255, 6, 0, 64, 255, 255, 8, 0, 0, 0, 0, 0, 0, 144, 255, 255, 3, 0, 128, 255, 255, 4, 0, 0, 0, 0, 0, 0, 208, 255, 255, 0, 0, 176, 255, 255, 1, 0, 0, 0, 0, 0, 0, 240, 255, 207, 0, 0, 240, 255, 223, 0, 0, 0, 0, 0, 0, 0, 244, 255, 143, 0, 0, 242, 255, 175, 0, 0, 0, 0, 0, 0, 0, 247, 255, 95, 0, 0, 246, 255, 111, 0, 0, 0, 0, 0 }; -/* $ */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_36[] = { 24, 40, 27, 1, 35, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 97, 251, 255, 255, 207, 40, 0, 0, 0, 0, 0, 160, 255, 255, 255, 255, 255, 255, 43, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 255, 5, 0, 0, 242, 255, 255, 255, 255, 255, 255, 255, 255, 95, 0, 0, 252, 255, 255, 175, 87, 117, 250, 255, 255, 255, 1, 64, 255, 255, 207, 2, 0, 0, 32, 252, 255, 255, 9, 144, 255, 255, 31, 0, 0, 0, 0, 225, 255, 255, 15, 192, 255, 255, 11, 0, 0, 0, 0, 112, 255, 255, 63, 224, 255, 255, 9, 0, 0, 0, 0, 48, 255, 255, 79, 192, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, 144, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 96, 255, 255, 255, 108, 2, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 239, 139, 37, 0, 0, 0, 0, 0, 245, 255, 255, 255, 255, 255, 255, 174, 4, 0, 0, 0, 80, 255, 255, 255, 255, 255, 255, 255, 207, 3, 0, 0, 0, 162, 255, 255, 255, 255, 255, 255, 255, 111, 0, 0, 0, 0, 64, 201, 254, 255, 255, 255, 255, 255, 4, 0, 0, 0, 0, 0, 16, 116, 251, 255, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 247, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 0, 64, 255, 255, 143, 148, 153, 153, 0, 0, 0, 0, 0, 0, 253, 255, 191, 247, 255, 255, 3, 0, 0, 0, 0, 0, 252, 255, 207, 244, 255, 255, 10, 0, 0, 0, 0, 0, 255, 255, 191, 240, 255, 255, 159, 0, 0, 0, 0, 176, 255, 255, 159, 144, 255, 255, 255, 126, 20, 16, 115, 254, 255, 255, 95, 32, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 0, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 0, 80, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, 0, 0, 178, 255, 255, 255, 255, 255, 255, 255, 28, 0, 0, 0, 0, 97, 251, 255, 255, 255, 255, 126, 0, 0, 0, 0, 0, 0, 176, 255, 255, 223, 90, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 32, 51, 51, 2, 0, 0, 0, 0 }; -/* % */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_37[] = { 32, 31, 34, 1, 30, 0, 0, 181, 254, 174, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 255, 255, 255, 159, 0, 0, 0, 0, 0, 252, 255, 127, 0, 0, 0, 253, 255, 255, 255, 255, 11, 0, 0, 0, 96, 255, 255, 12, 0, 0, 128, 255, 255, 223, 255, 255, 95, 0, 0, 0, 241, 255, 255, 3, 0, 0, 241, 255, 143, 0, 177, 255, 239, 0, 0, 0, 251, 255, 143, 0, 0, 0, 245, 255, 12, 0, 16, 255, 255, 2, 0, 80, 255, 255, 14, 0, 0, 0, 247, 255, 8, 0, 0, 252, 255, 4, 0, 224, 255, 255, 4, 0, 0, 0, 247, 255, 8, 0, 0, 252, 255, 4, 0, 249, 255, 175, 0, 0, 0, 0, 245, 255, 12, 0, 16, 255, 255, 2, 48, 255, 255, 31, 0, 0, 0, 0, 241, 255, 143, 0, 177, 255, 239, 0, 208, 255, 255, 6, 0, 0, 0, 0, 144, 255, 255, 222, 255, 255, 95, 0, 247, 255, 207, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 11, 32, 255, 255, 47, 0, 0, 0, 0, 0, 0, 177, 255, 255, 255, 159, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 181, 254, 174, 4, 0, 245, 255, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 254, 255, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 255, 255, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 255, 239, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 95, 0, 48, 234, 239, 91, 0, 0, 0, 0, 0, 0, 0, 128, 255, 255, 11, 0, 249, 255, 255, 255, 27, 0, 0, 0, 0, 0, 0, 242, 255, 255, 2, 160, 255, 255, 255, 255, 223, 0, 0, 0, 0, 0, 0, 252, 255, 127, 0, 245, 255, 255, 253, 255, 255, 8, 0, 0, 0, 0, 96, 255, 255, 13, 0, 253, 255, 27, 0, 248, 255, 31, 0, 0, 0, 0, 225, 255, 255, 3, 32, 255, 255, 1, 0, 192, 255, 95, 0, 0, 0, 0, 250, 255, 159, 0, 64, 255, 207, 0, 0, 128, 255, 127, 0, 0, 0, 64, 255, 255, 14, 0, 64, 255, 207, 0, 0, 128, 255, 143, 0, 0, 0, 208, 255, 255, 5, 0, 32, 255, 255, 1, 0, 192, 255, 111, 0, 0, 0, 248, 255, 191, 0, 0, 0, 254, 255, 27, 0, 248, 255, 31, 0, 0, 48, 255, 255, 31, 0, 0, 0, 245, 255, 255, 237, 255, 255, 9, 0, 0, 192, 255, 255, 7, 0, 0, 0, 176, 255, 255, 255, 255, 223, 0, 0, 0, 246, 255, 207, 0, 0, 0, 0, 0, 249, 255, 255, 255, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 234, 239, 91, 0, 0 }; -/* & */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_38[] = { 27, 31, 27, 1, 30, 0, 0, 0, 130, 236, 239, 140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 128, 255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 16, 253, 255, 255, 255, 255, 255, 29, 0, 0, 0, 0, 0, 0, 176, 255, 255, 255, 255, 255, 255, 191, 0, 0, 0, 0, 0, 0, 244, 255, 255, 223, 202, 255, 255, 255, 4, 0, 0, 0, 0, 0, 249, 255, 255, 5, 0, 244, 255, 255, 10, 0, 0, 0, 0, 0, 252, 255, 175, 0, 0, 144, 255, 255, 13, 0, 0, 0, 0, 0, 253, 255, 127, 0, 0, 80, 255, 255, 14, 0, 0, 0, 0, 0, 251, 255, 159, 0, 0, 112, 255, 255, 12, 0, 0, 0, 0, 0, 248, 255, 239, 0, 0, 208, 255, 255, 9, 0, 0, 0, 0, 0, 242, 255, 255, 11, 16, 252, 255, 255, 3, 0, 0, 0, 0, 0, 112, 255, 255, 159, 211, 255, 255, 191, 0, 0, 0, 0, 0, 0, 0, 251, 255, 255, 255, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 208, 255, 255, 255, 255, 191, 1, 0, 0, 0, 0, 0, 0, 0, 32, 255, 255, 255, 239, 6, 0, 0, 0, 0, 0, 0, 0, 0, 210, 255, 255, 255, 111, 0, 0, 0, 0, 0, 0, 0, 0, 64, 254, 255, 255, 255, 255, 4, 0, 64, 238, 238, 11, 0, 0, 244, 255, 255, 255, 255, 255, 63, 0, 96, 255, 255, 9, 0, 32, 255, 255, 255, 156, 255, 255, 239, 2, 160, 255, 255, 7, 0, 160, 255, 255, 191, 0, 250, 255, 255, 30, 240, 255, 255, 4, 0, 240, 255, 255, 12, 0, 176, 255, 255, 223, 248, 255, 239, 0, 0, 242, 255, 255, 3, 0, 0, 252, 255, 255, 255, 255, 143, 0, 0, 244, 255, 255, 0, 0, 0, 209, 255, 255, 255, 255, 31, 0, 0, 244, 255, 255, 0, 0, 0, 32, 254, 255, 255, 255, 7, 0, 0, 243, 255, 255, 6, 0, 0, 0, 243, 255, 255, 239, 0, 0, 0, 224, 255, 255, 79, 0, 0, 16, 249, 255, 255, 255, 8, 0, 0, 128, 255, 255, 255, 140, 134, 251, 255, 255, 255, 255, 127, 0, 0, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 0, 0, 226, 255, 255, 255, 255, 255, 255, 143, 246, 255, 255, 95, 0, 0, 16, 250, 255, 255, 255, 255, 191, 2, 64, 254, 255, 255, 4, 0, 0, 16, 183, 254, 223, 138, 2, 0, 0, 0, 0, 0, 0 }; -/* ' */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_39[] = { 6, 10, 10, 2, 29, 247, 255, 95, 247, 255, 95, 247, 255, 95, 247, 255, 95, 247, 255, 95, 247, 255, 95, 247, 255, 95, 247, 255, 95, 247, 255, 95, 165, 170, 58 }; -/* ( */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_40[] = { 13, 40, 15, 2, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 255, 223, 0, 0, 0, 48, 255, 255, 79, 0, 0, 0, 192, 255, 255, 10, 0, 0, 0, 244, 255, 255, 2, 0, 0, 0, 252, 255, 159, 0, 0, 0, 48, 255, 255, 47, 0, 0, 0, 160, 255, 255, 11, 0, 0, 0, 240, 255, 255, 5, 0, 0, 0, 245, 255, 255, 0, 0, 0, 0, 250, 255, 175, 0, 0, 0, 0, 254, 255, 111, 0, 0, 0, 32, 255, 255, 47, 0, 0, 0, 96, 255, 255, 14, 0, 0, 0, 128, 255, 255, 11, 0, 0, 0, 176, 255, 255, 9, 0, 0, 0, 208, 255, 255, 6, 0, 0, 0, 224, 255, 255, 5, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 3, 0, 0, 0, 240, 255, 255, 3, 0, 0, 0, 240, 255, 255, 3, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 224, 255, 255, 5, 0, 0, 0, 208, 255, 255, 6, 0, 0, 0, 160, 255, 255, 9, 0, 0, 0, 128, 255, 255, 11, 0, 0, 0, 80, 255, 255, 14, 0, 0, 0, 32, 255, 255, 47, 0, 0, 0, 0, 254, 255, 111, 0, 0, 0, 0, 250, 255, 175, 0, 0, 0, 0, 245, 255, 255, 0, 0, 0, 0, 240, 255, 255, 5, 0, 0, 0, 144, 255, 255, 11, 0, 0, 0, 48, 255, 255, 47, 0, 0, 0, 0, 251, 255, 159, 0, 0, 0, 0, 244, 255, 255, 2, 0, 0, 0, 176, 255, 255, 10, 0, 0, 0, 32, 255, 255, 79, 0, 0, 0, 0, 248, 255, 239, 0 }; -/* ) */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_41[] = { 13, 40, 15, 0, 32, 0, 0, 0, 0, 0, 0, 0, 192, 255, 255, 10, 0, 0, 0, 32, 255, 255, 79, 0, 0, 0, 0, 248, 255, 223, 0, 0, 0, 0, 241, 255, 255, 6, 0, 0, 0, 128, 255, 255, 13, 0, 0, 0, 16, 255, 255, 95, 0, 0, 0, 0, 249, 255, 191, 0, 0, 0, 0, 243, 255, 255, 1, 0, 0, 0, 224, 255, 255, 7, 0, 0, 0, 128, 255, 255, 12, 0, 0, 0, 64, 255, 255, 15, 0, 0, 0, 0, 255, 255, 79, 0, 0, 0, 0, 252, 255, 127, 0, 0, 0, 0, 250, 255, 175, 0, 0, 0, 0, 247, 255, 207, 0, 0, 0, 0, 245, 255, 239, 0, 0, 0, 0, 243, 255, 255, 0, 0, 0, 0, 242, 255, 255, 1, 0, 0, 0, 242, 255, 255, 1, 0, 0, 0, 241, 255, 255, 2, 0, 0, 0, 242, 255, 255, 1, 0, 0, 0, 243, 255, 255, 1, 0, 0, 0, 243, 255, 255, 0, 0, 0, 0, 245, 255, 239, 0, 0, 0, 0, 247, 255, 207, 0, 0, 0, 0, 250, 255, 175, 0, 0, 0, 0, 252, 255, 127, 0, 0, 0, 0, 255, 255, 63, 0, 0, 0, 64, 255, 255, 15, 0, 0, 0, 144, 255, 255, 11, 0, 0, 0, 224, 255, 255, 6, 0, 0, 0, 244, 255, 255, 1, 0, 0, 0, 250, 255, 191, 0, 0, 0, 16, 255, 255, 79, 0, 0, 0, 128, 255, 255, 13, 0, 0, 0, 241, 255, 255, 5, 0, 0, 0, 249, 255, 223, 0, 0, 0, 48, 255, 255, 79, 0, 0, 0, 208, 255, 255, 9, 0, 0, 0 }; -/* * */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_42[] = { 18, 17, 21, 1, 29, 0, 0, 0, 192, 255, 95, 0, 0, 0, 0, 0, 0, 176, 255, 79, 0, 0, 0, 0, 0, 0, 160, 255, 63, 0, 0, 0, 0, 0, 0, 144, 255, 47, 0, 0, 0, 32, 57, 0, 128, 255, 31, 0, 80, 8, 112, 255, 125, 113, 255, 15, 164, 255, 31, 192, 255, 255, 239, 255, 239, 255, 255, 95, 241, 255, 255, 255, 255, 255, 255, 255, 175, 97, 201, 255, 255, 255, 255, 255, 190, 71, 0, 0, 48, 252, 255, 255, 39, 0, 0, 0, 0, 80, 255, 255, 255, 13, 0, 0, 0, 0, 242, 255, 223, 255, 175, 0, 0, 0, 16, 253, 255, 42, 255, 255, 8, 0, 0, 176, 255, 239, 1, 246, 255, 95, 0, 0, 160, 255, 95, 0, 192, 255, 95, 0, 0, 0, 247, 10, 0, 32, 223, 2, 0, 0, 0, 64, 1, 0, 0, 4, 0, 0 }; -/* + */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_43[] = { 19, 21, 23, 2, 23, 0, 0, 0, 64, 102, 86, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 152, 153, 153, 233, 255, 255, 153, 153, 153, 9, 254, 255, 255, 255, 255, 255, 255, 255, 255, 15, 254, 255, 255, 255, 255, 255, 255, 255, 255, 15, 254, 255, 255, 255, 255, 255, 255, 255, 255, 15, 254, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 192, 255, 223, 0, 0, 0, 0, 0, 0, 0, 144, 204, 172, 0, 0, 0, 0 }; -/* , */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_44[] = { 8, 10, 11, 1, 6, 80, 255, 255, 127, 112, 255, 255, 47, 128, 255, 255, 14, 160, 255, 255, 9, 192, 255, 255, 5, 224, 255, 255, 1, 240, 255, 207, 0, 241, 255, 127, 0, 243, 255, 63, 0, 163, 170, 10, 0 }; -/* - */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_45[] = { 16, 5, 18, 1, 15, 209, 221, 221, 221, 221, 221, 221, 45, 241, 255, 255, 255, 255, 255, 255, 47, 241, 255, 255, 255, 255, 255, 255, 47, 241, 255, 255, 255, 255, 255, 255, 47, 241, 255, 255, 255, 255, 255, 255, 47 }; -/* . */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_46[] = { 7, 6, 11, 2, 6, 214, 221, 221, 5, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6 }; -/* / */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_47[] = { 17, 40, 17, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 255, 255, 10, 0, 0, 0, 0, 0, 224, 255, 255, 5, 0, 0, 0, 0, 0, 243, 255, 255, 0, 0, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 0, 0, 252, 255, 127, 0, 0, 0, 0, 0, 16, 255, 255, 47, 0, 0, 0, 0, 0, 96, 255, 255, 13, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 0, 0, 244, 255, 255, 0, 0, 0, 0, 0, 0, 249, 255, 175, 0, 0, 0, 0, 0, 0, 253, 255, 111, 0, 0, 0, 0, 0, 32, 255, 255, 31, 0, 0, 0, 0, 0, 112, 255, 255, 12, 0, 0, 0, 0, 0, 192, 255, 255, 7, 0, 0, 0, 0, 0, 241, 255, 255, 3, 0, 0, 0, 0, 0, 245, 255, 239, 0, 0, 0, 0, 0, 0, 250, 255, 159, 0, 0, 0, 0, 0, 0, 254, 255, 79, 0, 0, 0, 0, 0, 48, 255, 255, 15, 0, 0, 0, 0, 0, 128, 255, 255, 11, 0, 0, 0, 0, 0, 208, 255, 255, 6, 0, 0, 0, 0, 0, 241, 255, 255, 2, 0, 0, 0, 0, 0, 246, 255, 223, 0, 0, 0, 0, 0, 0, 251, 255, 143, 0, 0, 0, 0, 0, 0, 255, 255, 63, 0, 0, 0, 0, 0, 64, 255, 255, 14, 0, 0, 0, 0, 0, 144, 255, 255, 10, 0, 0, 0, 0, 0, 224, 255, 255, 5, 0, 0, 0, 0, 0, 243, 255, 255, 1, 0, 0, 0, 0, 0, 247, 255, 207, 0, 0, 0, 0, 0, 0, 252, 255, 127, 0, 0, 0, 0, 0, 16, 255, 255, 47, 0, 0, 0, 0, 0, 80, 255, 255, 13, 0, 0, 0, 0, 0, 160, 255, 255, 9, 0, 0, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 0, 0, 244, 255, 255, 0, 0, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 0, 0, 253, 255, 111, 0, 0, 0, 0, 0, 0 }; -/* 0 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_48[] = { 26, 31, 28, 1, 30, 0, 0, 0, 0, 81, 219, 255, 189, 22, 0, 0, 0, 0, 0, 0, 0, 112, 255, 255, 255, 255, 255, 8, 0, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 239, 3, 0, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 62, 0, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 239, 1, 0, 0, 144, 255, 255, 255, 142, 85, 215, 255, 255, 255, 11, 0, 0, 242, 255, 255, 159, 0, 0, 0, 248, 255, 255, 79, 0, 0, 249, 255, 255, 9, 0, 0, 0, 112, 255, 255, 191, 0, 0, 255, 255, 239, 0, 0, 0, 0, 0, 252, 255, 255, 2, 80, 255, 255, 111, 0, 0, 0, 0, 0, 244, 255, 255, 6, 128, 255, 255, 31, 0, 0, 0, 0, 0, 224, 255, 255, 10, 192, 255, 255, 12, 0, 0, 0, 0, 0, 160, 255, 255, 14, 224, 255, 255, 9, 0, 0, 0, 0, 0, 112, 255, 255, 15, 240, 255, 255, 7, 0, 0, 0, 0, 0, 80, 255, 255, 31, 240, 255, 255, 6, 0, 0, 0, 0, 0, 64, 255, 255, 47, 241, 255, 255, 5, 0, 0, 0, 0, 0, 48, 255, 255, 63, 240, 255, 255, 6, 0, 0, 0, 0, 0, 64, 255, 255, 47, 240, 255, 255, 7, 0, 0, 0, 0, 0, 80, 255, 255, 31, 224, 255, 255, 9, 0, 0, 0, 0, 0, 112, 255, 255, 15, 192, 255, 255, 12, 0, 0, 0, 0, 0, 160, 255, 255, 14, 128, 255, 255, 31, 0, 0, 0, 0, 0, 224, 255, 255, 10, 80, 255, 255, 111, 0, 0, 0, 0, 0, 244, 255, 255, 7, 16, 255, 255, 239, 0, 0, 0, 0, 0, 252, 255, 255, 2, 0, 249, 255, 255, 9, 0, 0, 0, 112, 255, 255, 191, 0, 0, 242, 255, 255, 159, 0, 0, 0, 247, 255, 255, 79, 0, 0, 144, 255, 255, 255, 142, 68, 215, 255, 255, 255, 11, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 239, 1, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 239, 3, 0, 0, 0, 0, 0, 112, 255, 255, 255, 255, 255, 9, 0, 0, 0, 0, 0, 0, 0, 97, 219, 255, 189, 22, 0, 0, 0, 0 }; -/* 1 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_49[] = { 12, 29, 16, 1, 29, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 48, 255, 255, 159, 255, 255, 255, 255, 255, 159, 255, 255, 255, 255, 255, 159, 255, 255, 255, 255, 255, 159, 255, 255, 255, 255, 255, 159, 255, 255, 255, 255, 255, 159, 68, 68, 68, 254, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159, 0, 0, 0, 253, 255, 159 }; -/* 2 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_50[] = { 22, 30, 24, 1, 30, 0, 0, 0, 97, 219, 255, 189, 23, 0, 0, 0, 0, 0, 128, 255, 255, 255, 255, 255, 9, 0, 0, 0, 16, 252, 255, 255, 255, 255, 255, 223, 1, 0, 0, 192, 255, 255, 255, 255, 255, 255, 255, 12, 0, 0, 248, 255, 255, 255, 255, 255, 255, 255, 143, 0, 16, 255, 255, 255, 159, 85, 249, 255, 255, 255, 1, 112, 255, 255, 223, 2, 0, 32, 254, 255, 255, 6, 192, 255, 255, 63, 0, 0, 0, 245, 255, 255, 10, 240, 255, 255, 11, 0, 0, 0, 240, 255, 255, 12, 240, 255, 255, 7, 0, 0, 0, 208, 255, 255, 12, 80, 85, 85, 2, 0, 0, 0, 240, 255, 255, 10, 0, 0, 0, 0, 0, 0, 0, 243, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 4, 0, 0, 0, 0, 0, 0, 176, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 251, 255, 255, 63, 0, 0, 0, 0, 0, 0, 176, 255, 255, 255, 4, 0, 0, 0, 0, 0, 0, 251, 255, 255, 111, 0, 0, 0, 0, 0, 0, 192, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 252, 255, 255, 127, 0, 0, 0, 0, 0, 0, 193, 255, 255, 255, 7, 0, 0, 0, 0, 0, 16, 252, 255, 255, 111, 0, 0, 0, 0, 0, 0, 209, 255, 255, 255, 6, 0, 0, 0, 0, 0, 16, 253, 255, 255, 111, 0, 0, 0, 0, 0, 0, 209, 255, 255, 255, 5, 0, 0, 0, 0, 0, 32, 254, 255, 255, 159, 51, 51, 51, 51, 51, 3, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63 }; -/* 3 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_51[] = { 22, 31, 24, 1, 30, 0, 0, 0, 115, 236, 255, 189, 23, 0, 0, 0, 0, 0, 178, 255, 255, 255, 255, 255, 8, 0, 0, 0, 80, 255, 255, 255, 255, 255, 255, 223, 1, 0, 0, 245, 255, 255, 255, 255, 255, 255, 255, 12, 0, 16, 255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 128, 255, 255, 255, 123, 100, 232, 255, 255, 255, 0, 224, 255, 255, 79, 0, 0, 16, 252, 255, 255, 4, 242, 255, 255, 8, 0, 0, 0, 242, 255, 255, 7, 244, 255, 255, 4, 0, 0, 0, 224, 255, 255, 9, 32, 34, 34, 0, 0, 0, 0, 224, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 242, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 252, 255, 255, 2, 0, 0, 0, 0, 0, 32, 213, 255, 255, 191, 0, 0, 0, 0, 0, 245, 255, 255, 255, 255, 30, 0, 0, 0, 0, 0, 245, 255, 255, 255, 207, 2, 0, 0, 0, 0, 0, 245, 255, 255, 255, 29, 0, 0, 0, 0, 0, 0, 245, 255, 255, 255, 239, 4, 0, 0, 0, 0, 0, 212, 253, 255, 255, 255, 95, 0, 0, 0, 0, 0, 0, 0, 130, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 244, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 13, 67, 68, 52, 0, 0, 0, 0, 128, 255, 255, 15, 250, 255, 239, 0, 0, 0, 0, 128, 255, 255, 15, 249, 255, 255, 4, 0, 0, 0, 208, 255, 255, 14, 244, 255, 255, 62, 0, 0, 0, 249, 255, 255, 11, 224, 255, 255, 255, 122, 84, 232, 255, 255, 255, 5, 96, 255, 255, 255, 255, 255, 255, 255, 255, 223, 0, 0, 250, 255, 255, 255, 255, 255, 255, 255, 46, 0, 0, 160, 255, 255, 255, 255, 255, 255, 239, 3, 0, 0, 0, 230, 255, 255, 255, 255, 255, 25, 0, 0, 0, 0, 0, 149, 236, 255, 189, 23, 0, 0, 0 }; -/* 4 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_52[] = { 23, 29, 24, 0, 29, 0, 0, 0, 0, 0, 242, 255, 255, 255, 143, 0, 0, 0, 0, 0, 0, 0, 251, 255, 255, 255, 143, 0, 0, 0, 0, 0, 0, 64, 255, 255, 255, 255, 143, 0, 0, 0, 0, 0, 0, 208, 255, 255, 255, 255, 143, 0, 0, 0, 0, 0, 0, 247, 255, 255, 255, 255, 143, 0, 0, 0, 0, 0, 16, 254, 255, 255, 255, 255, 143, 0, 0, 0, 0, 0, 144, 255, 255, 143, 255, 255, 143, 0, 0, 0, 0, 0, 242, 255, 255, 10, 254, 255, 143, 0, 0, 0, 0, 0, 251, 255, 255, 1, 254, 255, 143, 0, 0, 0, 0, 64, 255, 255, 127, 0, 254, 255, 143, 0, 0, 0, 0, 208, 255, 255, 14, 0, 254, 255, 143, 0, 0, 0, 0, 246, 255, 255, 5, 0, 254, 255, 143, 0, 0, 0, 16, 254, 255, 207, 0, 0, 254, 255, 143, 0, 0, 0, 144, 255, 255, 63, 0, 0, 254, 255, 143, 0, 0, 0, 242, 255, 255, 9, 0, 0, 254, 255, 143, 0, 0, 0, 251, 255, 255, 1, 0, 0, 254, 255, 143, 0, 0, 64, 255, 255, 127, 0, 0, 0, 254, 255, 143, 0, 0, 208, 255, 255, 14, 0, 0, 0, 254, 255, 143, 0, 0, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 0, 0, 0, 0, 0, 0, 0, 255, 255, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 143, 0, 0 }; -/* 5 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_53[] = { 22, 30, 25, 1, 29, 0, 240, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 241, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 242, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 244, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 246, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 247, 255, 223, 68, 68, 68, 68, 68, 68, 0, 0, 249, 255, 175, 0, 0, 0, 0, 0, 0, 0, 0, 250, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 252, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 95, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 95, 199, 254, 239, 107, 1, 0, 0, 16, 255, 255, 255, 255, 255, 255, 255, 126, 0, 0, 32, 255, 255, 255, 255, 255, 255, 255, 255, 10, 0, 64, 255, 255, 255, 255, 255, 255, 255, 255, 175, 0, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 112, 255, 255, 255, 75, 1, 99, 254, 255, 255, 14, 128, 238, 238, 94, 0, 0, 0, 209, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 48, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 207, 0, 0, 0, 0, 0, 0, 0, 0, 250, 255, 223, 0, 0, 0, 0, 0, 0, 0, 0, 250, 255, 223, 208, 221, 221, 6, 0, 0, 0, 0, 253, 255, 191, 224, 255, 255, 13, 0, 0, 0, 80, 255, 255, 143, 160, 255, 255, 191, 1, 0, 0, 227, 255, 255, 79, 64, 255, 255, 255, 158, 70, 166, 255, 255, 255, 13, 0, 251, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 225, 255, 255, 255, 255, 255, 255, 255, 143, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 9, 0, 0, 0, 145, 255, 255, 255, 255, 255, 93, 0, 0, 0, 0, 0, 97, 219, 254, 206, 73, 0, 0, 0 }; -/* 6 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_54[] = { 22, 30, 24, 1, 29, 0, 0, 0, 0, 0, 245, 255, 255, 14, 0, 0, 0, 0, 0, 0, 16, 254, 255, 255, 5, 0, 0, 0, 0, 0, 0, 144, 255, 255, 191, 0, 0, 0, 0, 0, 0, 0, 243, 255, 255, 47, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 8, 0, 0, 0, 0, 0, 0, 128, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 242, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 252, 255, 255, 10, 0, 0, 0, 0, 0, 0, 96, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 225, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 250, 255, 255, 255, 223, 57, 0, 0, 0, 0, 64, 255, 255, 255, 255, 255, 255, 43, 0, 0, 0, 208, 255, 255, 255, 255, 255, 255, 255, 5, 0, 0, 248, 255, 255, 255, 255, 255, 255, 255, 79, 0, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 128, 255, 255, 255, 76, 17, 147, 255, 255, 255, 9, 208, 255, 255, 143, 0, 0, 0, 243, 255, 255, 15, 241, 255, 255, 12, 0, 0, 0, 112, 255, 255, 95, 243, 255, 255, 6, 0, 0, 0, 16, 255, 255, 143, 244, 255, 255, 3, 0, 0, 0, 0, 253, 255, 159, 244, 255, 255, 3, 0, 0, 0, 0, 254, 255, 159, 242, 255, 255, 6, 0, 0, 0, 16, 255, 255, 143, 240, 255, 255, 13, 0, 0, 0, 112, 255, 255, 95, 160, 255, 255, 159, 0, 0, 0, 244, 255, 255, 15, 48, 255, 255, 255, 92, 18, 148, 255, 255, 255, 9, 0, 250, 255, 255, 255, 255, 255, 255, 255, 239, 1, 0, 208, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 16, 252, 255, 255, 255, 255, 255, 239, 4, 0, 0, 0, 112, 254, 255, 255, 255, 255, 26, 0, 0, 0, 0, 0, 96, 218, 255, 206, 39, 0, 0, 0 }; -/* 7 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_55[] = { 20, 29, 22, 1, 29, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 68, 68, 68, 68, 68, 68, 196, 255, 255, 127, 0, 0, 0, 0, 0, 0, 241, 255, 255, 31, 0, 0, 0, 0, 0, 0, 247, 255, 255, 10, 0, 0, 0, 0, 0, 0, 254, 255, 255, 3, 0, 0, 0, 0, 0, 80, 255, 255, 207, 0, 0, 0, 0, 0, 0, 176, 255, 255, 95, 0, 0, 0, 0, 0, 0, 242, 255, 255, 14, 0, 0, 0, 0, 0, 0, 249, 255, 255, 8, 0, 0, 0, 0, 0, 0, 255, 255, 255, 1, 0, 0, 0, 0, 0, 112, 255, 255, 175, 0, 0, 0, 0, 0, 0, 208, 255, 255, 63, 0, 0, 0, 0, 0, 0, 244, 255, 255, 13, 0, 0, 0, 0, 0, 0, 251, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 239, 0, 0, 0, 0, 0, 0, 128, 255, 255, 143, 0, 0, 0, 0, 0, 0, 240, 255, 255, 47, 0, 0, 0, 0, 0, 0, 246, 255, 255, 11, 0, 0, 0, 0, 0, 0, 253, 255, 255, 4, 0, 0, 0, 0, 0, 64, 255, 255, 223, 0, 0, 0, 0, 0, 0, 160, 255, 255, 111, 0, 0, 0, 0, 0, 0, 241, 255, 255, 15, 0, 0, 0, 0, 0, 0, 248, 255, 255, 8, 0, 0, 0, 0, 0, 0, 254, 255, 255, 2, 0, 0, 0, 0, 0, 96, 255, 255, 191, 0, 0, 0, 0, 0 }; -/* 8 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_56[] = { 22, 31, 25, 1, 30, 0, 0, 0, 96, 218, 254, 206, 73, 0, 0, 0, 0, 0, 112, 254, 255, 255, 255, 255, 77, 0, 0, 0, 0, 251, 255, 255, 255, 255, 255, 255, 8, 0, 0, 176, 255, 255, 255, 255, 255, 255, 255, 127, 0, 0, 245, 255, 255, 255, 239, 255, 255, 255, 255, 2, 0, 253, 255, 255, 60, 0, 80, 254, 255, 255, 9, 32, 255, 255, 223, 0, 0, 0, 242, 255, 255, 14, 80, 255, 255, 79, 0, 0, 0, 128, 255, 255, 47, 112, 255, 255, 15, 0, 0, 0, 64, 255, 255, 63, 96, 255, 255, 31, 0, 0, 0, 80, 255, 255, 47, 64, 255, 255, 95, 0, 0, 0, 144, 255, 255, 15, 0, 254, 255, 239, 1, 0, 0, 243, 255, 255, 11, 0, 245, 255, 255, 110, 2, 131, 255, 255, 255, 2, 0, 160, 255, 255, 255, 255, 255, 255, 255, 127, 0, 0, 0, 249, 255, 255, 255, 255, 255, 255, 6, 0, 0, 0, 227, 255, 255, 255, 255, 255, 207, 1, 0, 0, 96, 255, 255, 255, 255, 255, 255, 255, 78, 0, 0, 246, 255, 255, 239, 172, 252, 255, 255, 255, 3, 32, 255, 255, 239, 6, 0, 0, 248, 255, 255, 13, 144, 255, 255, 63, 0, 0, 0, 112, 255, 255, 95, 224, 255, 255, 10, 0, 0, 0, 0, 254, 255, 175, 240, 255, 255, 6, 0, 0, 0, 0, 250, 255, 207, 241, 255, 255, 7, 0, 0, 0, 0, 251, 255, 223, 240, 255, 255, 11, 0, 0, 0, 0, 254, 255, 207, 192, 255, 255, 111, 0, 0, 0, 144, 255, 255, 143, 112, 255, 255, 255, 41, 0, 48, 251, 255, 255, 63, 0, 253, 255, 255, 255, 223, 255, 255, 255, 255, 10, 0, 243, 255, 255, 255, 255, 255, 255, 255, 223, 1, 0, 64, 254, 255, 255, 255, 255, 255, 255, 28, 0, 0, 0, 161, 255, 255, 255, 255, 255, 142, 0, 0, 0, 0, 0, 97, 218, 254, 222, 90, 0, 0, 0 }; -/* 9 */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_57[] = { 22, 30, 24, 1, 30, 0, 0, 0, 80, 218, 254, 189, 39, 0, 0, 0, 0, 0, 112, 254, 255, 255, 255, 255, 26, 0, 0, 0, 16, 252, 255, 255, 255, 255, 255, 239, 4, 0, 0, 192, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 250, 255, 255, 255, 255, 255, 255, 255, 239, 1, 48, 255, 255, 255, 93, 18, 148, 255, 255, 255, 8, 160, 255, 255, 159, 0, 0, 0, 244, 255, 255, 15, 240, 255, 255, 13, 0, 0, 0, 128, 255, 255, 95, 242, 255, 255, 6, 0, 0, 0, 16, 255, 255, 143, 244, 255, 255, 3, 0, 0, 0, 0, 254, 255, 159, 244, 255, 255, 3, 0, 0, 0, 0, 253, 255, 175, 242, 255, 255, 6, 0, 0, 0, 16, 255, 255, 143, 240, 255, 255, 12, 0, 0, 0, 112, 255, 255, 127, 176, 255, 255, 143, 0, 0, 0, 243, 255, 255, 63, 64, 255, 255, 255, 76, 17, 147, 255, 255, 255, 14, 0, 251, 255, 255, 255, 255, 255, 255, 255, 255, 7, 0, 209, 255, 255, 255, 255, 255, 255, 255, 223, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 79, 0, 0, 0, 144, 255, 255, 255, 255, 255, 255, 10, 0, 0, 0, 0, 114, 236, 255, 255, 255, 239, 1, 0, 0, 0, 0, 0, 0, 242, 255, 255, 111, 0, 0, 0, 0, 0, 0, 0, 251, 255, 255, 11, 0, 0, 0, 0, 0, 0, 80, 255, 255, 255, 2, 0, 0, 0, 0, 0, 0, 224, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 248, 255, 255, 13, 0, 0, 0, 0, 0, 0, 32, 255, 255, 255, 3, 0, 0, 0, 0, 0, 0, 192, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 246, 255, 255, 30, 0, 0, 0, 0, 0, 0, 16, 254, 255, 255, 5, 0, 0, 0, 0, 0, 0, 144, 255, 255, 191, 0, 0, 0, 0, 0 }; -/* : */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_58[] = { 7, 21, 11, 2, 21, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6, 230, 238, 238, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 221, 221, 5, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6, 247, 255, 255, 6 }; -/* ; */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_59[] = { 8, 25, 11, 1, 21, 64, 255, 255, 159, 64, 255, 255, 159, 64, 255, 255, 159, 64, 255, 255, 159, 64, 255, 255, 159, 64, 238, 238, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 127, 112, 255, 255, 47, 128, 255, 255, 14, 160, 255, 255, 9, 192, 255, 255, 5, 224, 255, 255, 1, 240, 255, 207, 0, 241, 255, 127, 0, 243, 255, 63, 0, 163, 170, 10, 0 }; -/* < */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_60[] = { 19, 20, 23, 2, 22, 0, 0, 0, 0, 0, 0, 0, 0, 113, 10, 0, 0, 0, 0, 0, 0, 0, 180, 255, 12, 0, 0, 0, 0, 0, 16, 231, 255, 255, 12, 0, 0, 0, 0, 64, 251, 255, 255, 255, 12, 0, 0, 0, 129, 254, 255, 255, 255, 255, 12, 0, 0, 180, 255, 255, 255, 255, 255, 191, 5, 32, 232, 255, 255, 255, 255, 255, 125, 1, 0, 248, 255, 255, 255, 255, 255, 57, 0, 0, 0, 251, 255, 255, 255, 191, 5, 0, 0, 0, 0, 251, 255, 255, 126, 1, 0, 0, 0, 0, 0, 251, 255, 255, 191, 5, 0, 0, 0, 0, 0, 251, 255, 255, 255, 239, 57, 0, 0, 0, 0, 230, 255, 255, 255, 255, 255, 125, 1, 0, 0, 0, 164, 255, 255, 255, 255, 255, 191, 5, 0, 0, 0, 113, 253, 255, 255, 255, 255, 255, 8, 0, 0, 0, 64, 250, 255, 255, 255, 255, 12, 0, 0, 0, 0, 16, 215, 255, 255, 255, 12, 0, 0, 0, 0, 0, 0, 164, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 113, 253, 12, 0, 0, 0, 0, 0, 0, 0, 0, 48, 7 }; -/* = */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_61[] = { 19, 14, 23, 2, 19, 144, 153, 153, 153, 153, 153, 153, 153, 153, 1, 240, 255, 255, 255, 255, 255, 255, 255, 255, 2, 240, 255, 255, 255, 255, 255, 255, 255, 255, 2, 240, 255, 255, 255, 255, 255, 255, 255, 255, 2, 240, 255, 255, 255, 255, 255, 255, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 255, 255, 255, 255, 255, 255, 2, 240, 255, 255, 255, 255, 255, 255, 255, 255, 2, 240, 255, 255, 255, 255, 255, 255, 255, 255, 2, 240, 255, 255, 255, 255, 255, 255, 255, 255, 2, 144, 153, 153, 153, 153, 153, 153, 153, 153, 1 }; -/* > */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_62[] = { 19, 20, 23, 2, 22, 137, 2, 0, 0, 0, 0, 0, 0, 0, 0, 251, 191, 5, 0, 0, 0, 0, 0, 0, 0, 251, 255, 239, 40, 0, 0, 0, 0, 0, 0, 251, 255, 255, 255, 91, 0, 0, 0, 0, 0, 251, 255, 255, 255, 255, 142, 2, 0, 0, 0, 180, 255, 255, 255, 255, 255, 191, 5, 0, 0, 0, 113, 253, 255, 255, 255, 255, 239, 40, 0, 0, 0, 48, 233, 255, 255, 255, 255, 255, 9, 0, 0, 0, 0, 181, 255, 255, 255, 255, 12, 0, 0, 0, 0, 0, 97, 253, 255, 255, 12, 0, 0, 0, 0, 0, 164, 255, 255, 255, 12, 0, 0, 0, 32, 232, 255, 255, 255, 255, 12, 0, 0, 113, 253, 255, 255, 255, 255, 239, 7, 0, 181, 255, 255, 255, 255, 255, 191, 5, 0, 231, 255, 255, 255, 255, 255, 142, 1, 0, 0, 251, 255, 255, 255, 255, 75, 0, 0, 0, 0, 251, 255, 255, 239, 23, 0, 0, 0, 0, 0, 251, 255, 175, 4, 0, 0, 0, 0, 0, 0, 251, 125, 1, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -/* ? */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_63[] = { 20, 30, 22, 1, 30, 0, 0, 32, 200, 254, 223, 123, 2, 0, 0, 0, 32, 251, 255, 255, 255, 255, 175, 1, 0, 0, 244, 255, 255, 255, 255, 255, 255, 62, 0, 48, 255, 255, 255, 255, 255, 255, 255, 239, 2, 192, 255, 255, 255, 255, 255, 255, 255, 255, 11, 244, 255, 255, 175, 20, 98, 254, 255, 255, 63, 249, 255, 255, 8, 0, 0, 192, 255, 255, 143, 253, 255, 255, 0, 0, 0, 48, 255, 255, 175, 220, 221, 173, 0, 0, 0, 0, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 255, 255, 175, 0, 0, 0, 0, 0, 0, 80, 255, 255, 143, 0, 0, 0, 0, 0, 0, 245, 255, 255, 63, 0, 0, 0, 0, 0, 178, 255, 255, 255, 12, 0, 0, 0, 0, 112, 255, 255, 255, 239, 2, 0, 0, 0, 0, 246, 255, 255, 255, 44, 0, 0, 0, 0, 32, 255, 255, 255, 94, 0, 0, 0, 0, 0, 128, 255, 255, 207, 1, 0, 0, 0, 0, 0, 208, 255, 255, 14, 0, 0, 0, 0, 0, 0, 224, 255, 255, 7, 0, 0, 0, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 0, 0, 0, 240, 255, 255, 3, 0, 0, 0, 0, 0, 0, 80, 85, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 221, 221, 6, 0, 0, 0, 0, 0, 0, 243, 255, 255, 6, 0, 0, 0, 0, 0, 0, 243, 255, 255, 6, 0, 0, 0, 0, 0, 0, 243, 255, 255, 6, 0, 0, 0, 0, 0, 0, 243, 255, 255, 6, 0, 0, 0, 0, 0, 0, 243, 255, 255, 6, 0, 0, 0 }; -/* @ */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_64[] = { 37, 34, 40, 2, 29, 0, 0, 0, 0, 0, 0, 98, 202, 253, 223, 172, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 255, 255, 255, 255, 255, 255, 158, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 255, 255, 255, 255, 255, 255, 255, 255, 159, 1, 0, 0, 0, 0, 0, 0, 0, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 0, 0, 0, 0, 0, 0, 48, 254, 255, 255, 255, 174, 121, 135, 218, 255, 255, 255, 255, 7, 0, 0, 0, 0, 0, 243, 255, 255, 255, 56, 0, 0, 0, 0, 97, 253, 255, 255, 143, 0, 0, 0, 0, 32, 254, 255, 255, 26, 0, 0, 0, 0, 0, 0, 80, 254, 255, 255, 6, 0, 0, 0, 208, 255, 255, 111, 0, 0, 0, 0, 0, 0, 0, 0, 193, 255, 255, 63, 0, 0, 0, 247, 255, 255, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 255, 191, 0, 0, 16, 254, 255, 111, 0, 0, 48, 217, 255, 140, 2, 252, 239, 0, 225, 255, 255, 4, 0, 128, 255, 255, 11, 0, 16, 250, 255, 255, 255, 175, 255, 239, 0, 80, 255, 255, 12, 0, 208, 255, 255, 2, 0, 209, 255, 255, 255, 255, 255, 255, 239, 0, 0, 252, 255, 31, 0, 242, 255, 175, 0, 0, 252, 255, 255, 255, 255, 255, 255, 239, 0, 0, 245, 255, 111, 0, 247, 255, 95, 0, 80, 255, 255, 127, 2, 179, 255, 255, 239, 0, 0, 241, 255, 175, 0, 250, 255, 31, 0, 192, 255, 255, 3, 0, 0, 249, 255, 239, 0, 0, 208, 255, 207, 0, 251, 255, 14, 0, 241, 255, 159, 0, 0, 0, 224, 255, 239, 0, 0, 176, 255, 239, 0, 253, 255, 12, 0, 243, 255, 79, 0, 0, 0, 160, 255, 239, 0, 0, 160, 255, 255, 0, 254, 255, 11, 0, 244, 255, 47, 0, 0, 0, 128, 255, 239, 0, 0, 176, 255, 255, 0, 252, 255, 13, 0, 243, 255, 79, 0, 0, 0, 160, 255, 239, 0, 0, 192, 255, 239, 0, 251, 255, 14, 0, 241, 255, 159, 0, 0, 0, 224, 255, 239, 0, 0, 241, 255, 191, 0, 249, 255, 47, 0, 192, 255, 255, 3, 0, 0, 249, 255, 255, 1, 0, 249, 255, 127, 0, 245, 255, 127, 0, 80, 255, 255, 127, 2, 179, 255, 255, 255, 76, 164, 255, 255, 47, 0, 240, 255, 223, 0, 0, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 9, 0, 176, 255, 255, 7, 0, 209, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 223, 0, 0, 48, 255, 255, 63, 0, 16, 251, 255, 255, 255, 191, 65, 255, 255, 255, 255, 27, 0, 0, 0, 250, 255, 239, 2, 0, 48, 217, 255, 172, 3, 0, 129, 252, 223, 73, 0, 0, 0, 0, 242, 255, 255, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 255, 255, 255, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 255, 255, 255, 157, 37, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 0, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 255, 255, 255, 255, 255, 255, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 251, 255, 255, 255, 255, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 101, 102, 102, 102, 102, 2, 0, 0, 0, 0, 0 }; -/* A */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_65[] = { 29, 29, 29, 0, 29, 0, 0, 0, 0, 0, 250, 255, 255, 255, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 255, 255, 255, 255, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 255, 255, 255, 255, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 255, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 247, 255, 255, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 245, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 48, 255, 255, 175, 176, 255, 255, 47, 0, 0, 0, 0, 0, 0, 0, 144, 255, 255, 79, 80, 255, 255, 143, 0, 0, 0, 0, 0, 0, 0, 224, 255, 255, 15, 0, 255, 255, 239, 0, 0, 0, 0, 0, 0, 0, 244, 255, 255, 10, 0, 250, 255, 255, 4, 0, 0, 0, 0, 0, 0, 250, 255, 255, 4, 0, 245, 255, 255, 10, 0, 0, 0, 0, 0, 0, 255, 255, 239, 0, 0, 240, 255, 255, 15, 0, 0, 0, 0, 0, 96, 255, 255, 159, 0, 0, 160, 255, 255, 95, 0, 0, 0, 0, 0, 192, 255, 255, 79, 0, 0, 64, 255, 255, 191, 0, 0, 0, 0, 0, 241, 255, 255, 14, 0, 0, 0, 254, 255, 255, 1, 0, 0, 0, 0, 247, 255, 255, 9, 0, 0, 0, 249, 255, 255, 7, 0, 0, 0, 0, 253, 255, 255, 4, 0, 0, 0, 244, 255, 255, 12, 0, 0, 0, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 0, 0, 0, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 0, 0, 0, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 0, 0, 0, 244, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 0, 0, 255, 255, 255, 2, 0, 0, 0, 0, 0, 242, 255, 255, 15, 0, 80, 255, 255, 207, 0, 0, 0, 0, 0, 0, 192, 255, 255, 95, 0, 176, 255, 255, 111, 0, 0, 0, 0, 0, 0, 96, 255, 255, 191, 0, 241, 255, 255, 15, 0, 0, 0, 0, 0, 0, 16, 255, 255, 255, 1, 247, 255, 255, 10, 0, 0, 0, 0, 0, 0, 0, 250, 255, 255, 7, 253, 255, 255, 4, 0, 0, 0, 0, 0, 0, 0, 244, 255, 255, 12 }; -/* B */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_66[] = { 23, 29, 28, 3, 29, 253, 255, 255, 255, 255, 255, 255, 222, 73, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 27, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 2, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 253, 255, 255, 221, 221, 221, 237, 255, 255, 255, 111, 0, 253, 255, 159, 0, 0, 0, 0, 177, 255, 255, 207, 0, 253, 255, 159, 0, 0, 0, 0, 0, 253, 255, 255, 0, 253, 255, 159, 0, 0, 0, 0, 0, 247, 255, 255, 2, 253, 255, 159, 0, 0, 0, 0, 0, 244, 255, 255, 2, 253, 255, 159, 0, 0, 0, 0, 0, 247, 255, 255, 0, 253, 255, 159, 0, 0, 0, 0, 0, 253, 255, 207, 0, 253, 255, 159, 0, 0, 0, 0, 196, 255, 255, 111, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 2, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 0, 253, 255, 255, 221, 221, 221, 221, 255, 255, 255, 63, 0, 253, 255, 159, 0, 0, 0, 0, 128, 255, 255, 207, 0, 253, 255, 159, 0, 0, 0, 0, 0, 248, 255, 255, 3, 253, 255, 159, 0, 0, 0, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 0, 224, 255, 255, 9, 253, 255, 159, 0, 0, 0, 0, 0, 240, 255, 255, 8, 253, 255, 159, 0, 0, 0, 0, 0, 248, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 112, 255, 255, 255, 3, 253, 255, 239, 221, 221, 221, 221, 255, 255, 255, 223, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 7, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 94, 0, 0, 253, 255, 255, 255, 255, 255, 255, 239, 107, 0, 0, 0 }; -/* C */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_67[] = { 29, 31, 31, 1, 30, 0, 0, 0, 0, 0, 114, 219, 254, 205, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 255, 255, 255, 255, 255, 126, 0, 0, 0, 0, 0, 0, 0, 177, 255, 255, 255, 255, 255, 255, 255, 45, 0, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, 253, 255, 255, 255, 123, 69, 166, 255, 255, 255, 239, 1, 0, 0, 160, 255, 255, 255, 26, 0, 0, 0, 177, 255, 255, 255, 9, 0, 0, 242, 255, 255, 127, 0, 0, 0, 0, 0, 247, 255, 255, 47, 0, 0, 250, 255, 255, 8, 0, 0, 0, 0, 0, 160, 255, 255, 159, 0, 16, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 254, 255, 255, 0, 80, 255, 255, 95, 0, 0, 0, 0, 0, 0, 0, 231, 238, 238, 3, 160, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 255, 255, 14, 0, 0, 0, 0, 0, 0, 0, 16, 17, 17, 0, 96, 255, 255, 95, 0, 0, 0, 0, 0, 0, 0, 249, 255, 255, 3, 16, 255, 255, 207, 0, 0, 0, 0, 0, 0, 16, 255, 255, 239, 0, 0, 250, 255, 255, 7, 0, 0, 0, 0, 0, 160, 255, 255, 159, 0, 0, 242, 255, 255, 111, 0, 0, 0, 0, 0, 247, 255, 255, 47, 0, 0, 160, 255, 255, 255, 26, 0, 0, 0, 177, 255, 255, 255, 9, 0, 0, 0, 253, 255, 255, 255, 107, 69, 150, 255, 255, 255, 223, 1, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, 0, 0, 0, 177, 255, 255, 255, 255, 255, 255, 255, 61, 0, 0, 0, 0, 0, 0, 0, 196, 255, 255, 255, 255, 255, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 219, 254, 205, 73, 0, 0, 0, 0, 0 }; -/* D */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_68[] = { 26, 29, 30, 3, 29, 253, 255, 255, 255, 255, 239, 189, 39, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 44, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 4, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 0, 0, 253, 255, 191, 68, 68, 84, 166, 255, 255, 255, 239, 2, 0, 253, 255, 159, 0, 0, 0, 0, 129, 255, 255, 255, 12, 0, 253, 255, 159, 0, 0, 0, 0, 0, 244, 255, 255, 95, 0, 253, 255, 159, 0, 0, 0, 0, 0, 64, 255, 255, 223, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 249, 255, 255, 3, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 8, 253, 255, 159, 0, 0, 0, 0, 0, 0, 192, 255, 255, 13, 253, 255, 159, 0, 0, 0, 0, 0, 0, 128, 255, 255, 15, 253, 255, 159, 0, 0, 0, 0, 0, 0, 96, 255, 255, 15, 253, 255, 159, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 253, 255, 159, 0, 0, 0, 0, 0, 0, 96, 255, 255, 15, 253, 255, 159, 0, 0, 0, 0, 0, 0, 128, 255, 255, 15, 253, 255, 159, 0, 0, 0, 0, 0, 0, 192, 255, 255, 13, 253, 255, 159, 0, 0, 0, 0, 0, 0, 241, 255, 255, 8, 253, 255, 159, 0, 0, 0, 0, 0, 0, 249, 255, 255, 3, 253, 255, 159, 0, 0, 0, 0, 0, 64, 255, 255, 223, 0, 253, 255, 159, 0, 0, 0, 0, 0, 244, 255, 255, 95, 0, 253, 255, 159, 0, 0, 0, 0, 128, 255, 255, 255, 13, 0, 253, 255, 191, 51, 51, 68, 166, 255, 255, 255, 239, 2, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 79, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 4, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 44, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 93, 0, 0, 0, 0, 253, 255, 255, 255, 255, 255, 189, 55, 0, 0, 0, 0, 0 }; -/* E */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_69[] = { 20, 29, 25, 3, 29, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 175, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 15, 253, 255, 255, 255, 255, 255, 255, 255, 255, 15, 253, 255, 255, 255, 255, 255, 255, 255, 255, 15, 253, 255, 255, 255, 255, 255, 255, 255, 255, 15, 253, 255, 255, 255, 255, 255, 255, 255, 255, 15, 253, 255, 175, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239 }; -/* F */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_70[] = { 20, 29, 25, 3, 29, 253, 255, 255, 255, 255, 255, 255, 255, 255, 175, 253, 255, 255, 255, 255, 255, 255, 255, 255, 175, 253, 255, 255, 255, 255, 255, 255, 255, 255, 175, 253, 255, 255, 255, 255, 255, 255, 255, 255, 175, 253, 255, 255, 255, 255, 255, 255, 255, 255, 175, 253, 255, 175, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 9, 253, 255, 255, 255, 255, 255, 255, 255, 255, 9, 253, 255, 255, 255, 255, 255, 255, 255, 255, 9, 253, 255, 255, 255, 255, 255, 255, 255, 255, 9, 253, 255, 255, 255, 255, 255, 255, 255, 255, 9, 253, 255, 175, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0 }; -/* G */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_71[] = { 29, 31, 32, 1, 30, 0, 0, 0, 0, 0, 114, 219, 254, 205, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 255, 255, 255, 255, 255, 110, 0, 0, 0, 0, 0, 0, 0, 177, 255, 255, 255, 255, 255, 255, 255, 45, 0, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 255, 255, 4, 0, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, 253, 255, 255, 255, 123, 85, 167, 255, 255, 255, 239, 1, 0, 0, 144, 255, 255, 255, 26, 0, 0, 0, 162, 255, 255, 255, 10, 0, 0, 242, 255, 255, 127, 0, 0, 0, 0, 0, 248, 255, 255, 63, 0, 0, 250, 255, 255, 8, 0, 0, 0, 0, 0, 160, 255, 255, 175, 0, 16, 255, 255, 223, 0, 0, 0, 0, 0, 0, 16, 254, 255, 255, 0, 80, 255, 255, 111, 0, 0, 0, 0, 0, 0, 0, 198, 204, 204, 3, 144, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 6, 0, 0, 0, 0, 34, 34, 34, 34, 34, 34, 1, 241, 255, 255, 5, 0, 0, 0, 48, 255, 255, 255, 255, 255, 255, 9, 240, 255, 255, 6, 0, 0, 0, 48, 255, 255, 255, 255, 255, 255, 9, 240, 255, 255, 7, 0, 0, 0, 48, 255, 255, 255, 255, 255, 255, 9, 224, 255, 255, 10, 0, 0, 0, 48, 255, 255, 255, 255, 255, 255, 9, 160, 255, 255, 14, 0, 0, 0, 0, 0, 0, 0, 224, 255, 255, 9, 96, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 243, 255, 255, 9, 16, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 249, 255, 255, 9, 0, 251, 255, 255, 7, 0, 0, 0, 0, 0, 48, 255, 255, 255, 9, 0, 243, 255, 255, 111, 0, 0, 0, 0, 0, 227, 255, 255, 255, 9, 0, 160, 255, 255, 255, 25, 0, 0, 0, 112, 255, 255, 255, 255, 9, 0, 0, 253, 255, 255, 255, 107, 68, 150, 254, 255, 255, 255, 255, 9, 0, 0, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 9, 0, 0, 32, 254, 255, 255, 255, 255, 255, 255, 255, 159, 255, 255, 9, 0, 0, 0, 177, 255, 255, 255, 255, 255, 255, 255, 7, 253, 255, 9, 0, 0, 0, 0, 196, 255, 255, 255, 255, 255, 60, 0, 250, 255, 9, 0, 0, 0, 0, 0, 114, 219, 254, 206, 56, 0, 0, 0, 0, 0 }; -/* H */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_72[] = { 25, 29, 30, 3, 29, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 207, 119, 119, 119, 119, 119, 119, 248, 255, 255, 4, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 0, 242, 255, 255, 4 }; -/* I */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_73[] = { 6, 29, 12, 3, 29, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159, 253, 255, 159 }; -/* J */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_74[] = { 15, 29, 17, 0, 29, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 242, 255, 255, 4, 0, 0, 0, 0, 243, 255, 255, 4, 0, 0, 0, 0, 245, 255, 255, 4, 50, 51, 51, 84, 253, 255, 255, 3, 249, 255, 255, 255, 255, 255, 255, 1, 249, 255, 255, 255, 255, 255, 239, 0, 249, 255, 255, 255, 255, 255, 127, 0, 249, 255, 255, 255, 255, 255, 11, 0, 249, 255, 255, 255, 223, 91, 0, 0 }; -/* K */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_75[] = { 24, 29, 25, 3, 29, 253, 255, 159, 0, 0, 0, 0, 176, 255, 255, 239, 1, 253, 255, 159, 0, 0, 0, 0, 247, 255, 255, 79, 0, 253, 255, 159, 0, 0, 0, 64, 255, 255, 255, 7, 0, 253, 255, 159, 0, 0, 0, 225, 255, 255, 175, 0, 0, 253, 255, 159, 0, 0, 0, 252, 255, 255, 13, 0, 0, 253, 255, 159, 0, 0, 128, 255, 255, 255, 2, 0, 0, 253, 255, 159, 0, 0, 245, 255, 255, 95, 0, 0, 0, 253, 255, 159, 0, 32, 255, 255, 255, 9, 0, 0, 0, 253, 255, 159, 0, 208, 255, 255, 207, 0, 0, 0, 0, 253, 255, 159, 0, 250, 255, 255, 30, 0, 0, 0, 0, 253, 255, 159, 96, 255, 255, 255, 3, 0, 0, 0, 0, 253, 255, 159, 243, 255, 255, 127, 0, 0, 0, 0, 0, 253, 255, 175, 254, 255, 255, 10, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 223, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 143, 0, 0, 0, 0, 0, 0, 253, 255, 239, 255, 255, 255, 4, 0, 0, 0, 0, 0, 253, 255, 159, 249, 255, 255, 46, 0, 0, 0, 0, 0, 253, 255, 159, 192, 255, 255, 223, 0, 0, 0, 0, 0, 253, 255, 159, 16, 254, 255, 255, 11, 0, 0, 0, 0, 253, 255, 159, 0, 243, 255, 255, 143, 0, 0, 0, 0, 253, 255, 159, 0, 80, 255, 255, 255, 5, 0, 0, 0, 253, 255, 159, 0, 0, 248, 255, 255, 47, 0, 0, 0, 253, 255, 159, 0, 0, 176, 255, 255, 239, 1, 0, 0, 253, 255, 159, 0, 0, 16, 253, 255, 255, 12, 0, 0, 253, 255, 159, 0, 0, 0, 242, 255, 255, 159, 0, 0, 253, 255, 159, 0, 0, 0, 80, 255, 255, 255, 6, 0, 253, 255, 159, 0, 0, 0, 0, 247, 255, 255, 63, 0, 253, 255, 159, 0, 0, 0, 0, 160, 255, 255, 239, 1, 253, 255, 159, 0, 0, 0, 0, 0, 253, 255, 255, 12 }; -/* L */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_76[] = { 20, 29, 23, 3, 29, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 253, 255, 191, 51, 51, 51, 51, 51, 51, 19, 253, 255, 255, 255, 255, 255, 255, 255, 255, 127, 253, 255, 255, 255, 255, 255, 255, 255, 255, 127, 253, 255, 255, 255, 255, 255, 255, 255, 255, 127, 253, 255, 255, 255, 255, 255, 255, 255, 255, 127, 253, 255, 255, 255, 255, 255, 255, 255, 255, 127 }; -/* M */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_77[] = { 33, 29, 39, 3, 29, 253, 255, 255, 255, 47, 0, 0, 0, 0, 0, 0, 128, 255, 255, 255, 255, 7, 253, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0, 208, 255, 255, 255, 255, 7, 253, 255, 255, 255, 223, 0, 0, 0, 0, 0, 0, 242, 255, 255, 255, 255, 7, 253, 255, 255, 255, 255, 2, 0, 0, 0, 0, 0, 248, 255, 255, 255, 255, 7, 253, 255, 255, 255, 255, 8, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 7, 253, 255, 255, 255, 255, 13, 0, 0, 0, 0, 48, 255, 255, 255, 255, 255, 7, 253, 255, 255, 255, 255, 63, 0, 0, 0, 0, 128, 255, 255, 255, 255, 255, 7, 253, 255, 255, 255, 255, 143, 0, 0, 0, 0, 224, 255, 255, 255, 255, 255, 7, 253, 255, 255, 255, 255, 239, 0, 0, 0, 0, 243, 255, 255, 255, 255, 255, 7, 253, 255, 175, 246, 255, 255, 3, 0, 0, 0, 249, 255, 255, 241, 255, 255, 7, 253, 255, 159, 241, 255, 255, 9, 0, 0, 0, 254, 255, 175, 240, 255, 255, 7, 253, 255, 159, 176, 255, 255, 14, 0, 0, 64, 255, 255, 95, 240, 255, 255, 7, 253, 255, 159, 80, 255, 255, 79, 0, 0, 144, 255, 255, 15, 240, 255, 255, 7, 253, 255, 159, 0, 255, 255, 159, 0, 0, 240, 255, 255, 10, 240, 255, 255, 7, 253, 255, 159, 0, 250, 255, 239, 0, 0, 244, 255, 255, 4, 240, 255, 255, 7, 253, 255, 159, 0, 245, 255, 255, 4, 0, 250, 255, 239, 0, 240, 255, 255, 7, 253, 255, 159, 0, 240, 255, 255, 9, 0, 255, 255, 159, 0, 240, 255, 255, 7, 253, 255, 159, 0, 160, 255, 255, 15, 80, 255, 255, 63, 0, 240, 255, 255, 7, 253, 255, 159, 0, 64, 255, 255, 79, 160, 255, 255, 14, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 254, 255, 175, 240, 255, 255, 8, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 249, 255, 255, 253, 255, 255, 3, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 243, 255, 255, 255, 255, 223, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 224, 255, 255, 255, 255, 143, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 128, 255, 255, 255, 255, 47, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 48, 255, 255, 255, 255, 13, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 0, 253, 255, 255, 255, 7, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 0, 247, 255, 255, 255, 1, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 0, 242, 255, 255, 207, 0, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 0, 192, 255, 255, 111, 0, 0, 0, 240, 255, 255, 7 }; -/* N */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_78[] = { 25, 29, 31, 3, 29, 253, 255, 255, 207, 0, 0, 0, 0, 0, 240, 255, 255, 7, 253, 255, 255, 255, 4, 0, 0, 0, 0, 240, 255, 255, 7, 253, 255, 255, 255, 13, 0, 0, 0, 0, 240, 255, 255, 7, 253, 255, 255, 255, 95, 0, 0, 0, 0, 240, 255, 255, 7, 253, 255, 255, 255, 239, 0, 0, 0, 0, 240, 255, 255, 7, 253, 255, 255, 255, 255, 7, 0, 0, 0, 240, 255, 255, 7, 253, 255, 255, 255, 255, 14, 0, 0, 0, 240, 255, 255, 7, 253, 255, 255, 255, 255, 143, 0, 0, 0, 240, 255, 255, 7, 253, 255, 255, 255, 255, 255, 1, 0, 0, 240, 255, 255, 7, 253, 255, 175, 245, 255, 255, 9, 0, 0, 240, 255, 255, 7, 253, 255, 159, 192, 255, 255, 47, 0, 0, 240, 255, 255, 7, 253, 255, 159, 48, 255, 255, 175, 0, 0, 240, 255, 255, 7, 253, 255, 159, 0, 251, 255, 255, 3, 0, 240, 255, 255, 7, 253, 255, 159, 0, 242, 255, 255, 11, 0, 240, 255, 255, 7, 253, 255, 159, 0, 160, 255, 255, 79, 0, 240, 255, 255, 7, 253, 255, 159, 0, 16, 255, 255, 207, 0, 240, 255, 255, 7, 253, 255, 159, 0, 0, 248, 255, 255, 5, 240, 255, 255, 7, 253, 255, 159, 0, 0, 241, 255, 255, 13, 240, 255, 255, 7, 253, 255, 159, 0, 0, 112, 255, 255, 111, 240, 255, 255, 7, 253, 255, 159, 0, 0, 0, 254, 255, 239, 241, 255, 255, 7, 253, 255, 159, 0, 0, 0, 246, 255, 255, 255, 255, 255, 7, 253, 255, 159, 0, 0, 0, 208, 255, 255, 255, 255, 255, 7, 253, 255, 159, 0, 0, 0, 80, 255, 255, 255, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 252, 255, 255, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 244, 255, 255, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 176, 255, 255, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 48, 255, 255, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 0, 250, 255, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 0, 242, 255, 255, 255, 7 }; -/* O */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_79[] = { 30, 31, 32, 1, 30, 0, 0, 0, 0, 0, 114, 219, 254, 205, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 255, 255, 255, 255, 255, 126, 0, 0, 0, 0, 0, 0, 0, 177, 255, 255, 255, 255, 255, 255, 255, 77, 0, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 255, 255, 5, 0, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 0, 0, 0, 0, 253, 255, 255, 255, 123, 69, 150, 254, 255, 255, 255, 3, 0, 0, 160, 255, 255, 255, 26, 0, 0, 0, 112, 255, 255, 255, 14, 0, 0, 242, 255, 255, 127, 0, 0, 0, 0, 0, 227, 255, 255, 127, 0, 0, 250, 255, 255, 8, 0, 0, 0, 0, 0, 48, 255, 255, 239, 0, 16, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 248, 255, 255, 6, 80, 255, 255, 95, 0, 0, 0, 0, 0, 0, 0, 241, 255, 255, 11, 160, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 160, 255, 255, 15, 208, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 96, 255, 255, 47, 240, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 16, 255, 255, 95, 241, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 111, 240, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 16, 255, 255, 95, 240, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 32, 255, 255, 79, 208, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 47, 160, 255, 255, 14, 0, 0, 0, 0, 0, 0, 0, 144, 255, 255, 15, 96, 255, 255, 95, 0, 0, 0, 0, 0, 0, 0, 241, 255, 255, 11, 16, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 247, 255, 255, 6, 0, 250, 255, 255, 7, 0, 0, 0, 0, 0, 48, 255, 255, 239, 0, 0, 242, 255, 255, 111, 0, 0, 0, 0, 0, 226, 255, 255, 127, 0, 0, 160, 255, 255, 255, 26, 0, 0, 0, 96, 255, 255, 255, 14, 0, 0, 0, 253, 255, 255, 255, 107, 69, 150, 254, 255, 255, 255, 3, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 255, 255, 6, 0, 0, 0, 0, 0, 177, 255, 255, 255, 255, 255, 255, 255, 77, 0, 0, 0, 0, 0, 0, 0, 196, 255, 255, 255, 255, 255, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 219, 254, 205, 73, 0, 0, 0, 0, 0 }; -/* P */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_80[] = { 23, 29, 27, 3, 29, 253, 255, 255, 255, 255, 255, 255, 206, 39, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 9, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 207, 1, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 95, 0, 253, 255, 191, 68, 68, 68, 84, 248, 255, 255, 223, 0, 253, 255, 159, 0, 0, 0, 0, 16, 254, 255, 255, 2, 253, 255, 159, 0, 0, 0, 0, 0, 245, 255, 255, 6, 253, 255, 159, 0, 0, 0, 0, 0, 240, 255, 255, 8, 253, 255, 159, 0, 0, 0, 0, 0, 224, 255, 255, 9, 253, 255, 159, 0, 0, 0, 0, 0, 240, 255, 255, 8, 253, 255, 159, 0, 0, 0, 0, 0, 243, 255, 255, 7, 253, 255, 159, 0, 0, 0, 0, 0, 252, 255, 255, 3, 253, 255, 159, 0, 0, 0, 0, 196, 255, 255, 239, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 45, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 108, 0, 0, 0, 253, 255, 191, 68, 68, 68, 52, 2, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -/* Q */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_81[] = { 30, 33, 32, 1, 30, 0, 0, 0, 0, 0, 114, 219, 254, 205, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 255, 255, 255, 255, 255, 126, 0, 0, 0, 0, 0, 0, 0, 177, 255, 255, 255, 255, 255, 255, 255, 77, 0, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 255, 255, 5, 0, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 0, 0, 0, 0, 253, 255, 255, 255, 123, 69, 150, 254, 255, 255, 255, 3, 0, 0, 160, 255, 255, 255, 26, 0, 0, 0, 112, 255, 255, 255, 14, 0, 0, 242, 255, 255, 127, 0, 0, 0, 0, 0, 227, 255, 255, 127, 0, 0, 250, 255, 255, 8, 0, 0, 0, 0, 0, 48, 255, 255, 239, 0, 16, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 248, 255, 255, 6, 80, 255, 255, 95, 0, 0, 0, 0, 0, 0, 0, 241, 255, 255, 11, 160, 255, 255, 15, 0, 0, 0, 0, 0, 0, 0, 160, 255, 255, 15, 208, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 96, 255, 255, 47, 240, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 16, 255, 255, 95, 241, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 111, 240, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 16, 255, 255, 95, 240, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 32, 255, 255, 79, 208, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 47, 160, 255, 255, 14, 0, 0, 0, 0, 0, 0, 0, 144, 255, 255, 15, 96, 255, 255, 95, 0, 0, 161, 170, 170, 42, 0, 240, 255, 255, 11, 16, 255, 255, 207, 0, 0, 80, 255, 255, 239, 1, 247, 255, 255, 6, 0, 250, 255, 255, 7, 0, 0, 247, 255, 255, 60, 255, 255, 255, 1, 0, 242, 255, 255, 111, 0, 0, 144, 255, 255, 255, 255, 255, 143, 0, 0, 160, 255, 255, 255, 26, 0, 0, 251, 255, 255, 255, 255, 14, 0, 0, 0, 253, 255, 255, 255, 107, 69, 247, 255, 255, 255, 255, 4, 0, 0, 0, 226, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 0, 0, 0, 0, 32, 253, 255, 255, 255, 255, 255, 255, 255, 255, 79, 0, 0, 0, 0, 0, 177, 255, 255, 255, 255, 255, 255, 255, 255, 255, 2, 0, 0, 0, 0, 0, 196, 255, 255, 255, 255, 255, 255, 255, 255, 30, 0, 0, 0, 0, 0, 0, 114, 219, 254, 205, 73, 96, 255, 255, 223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 170, 170, 106 }; -/* R */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_82[] = { 24, 29, 28, 3, 29, 253, 255, 255, 255, 255, 255, 255, 206, 40, 0, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 9, 0, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 207, 1, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 253, 255, 191, 68, 68, 68, 68, 232, 255, 255, 239, 0, 253, 255, 159, 0, 0, 0, 0, 16, 253, 255, 255, 5, 253, 255, 159, 0, 0, 0, 0, 0, 243, 255, 255, 9, 253, 255, 159, 0, 0, 0, 0, 0, 208, 255, 255, 11, 253, 255, 159, 0, 0, 0, 0, 0, 176, 255, 255, 12, 253, 255, 159, 0, 0, 0, 0, 0, 192, 255, 255, 12, 253, 255, 159, 0, 0, 0, 0, 0, 241, 255, 255, 10, 253, 255, 159, 0, 0, 0, 0, 0, 250, 255, 255, 6, 253, 255, 159, 0, 0, 0, 0, 179, 255, 255, 255, 1, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 30, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 239, 3, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 27, 0, 0, 253, 255, 255, 255, 255, 255, 255, 223, 73, 0, 0, 0, 253, 255, 175, 80, 255, 255, 255, 10, 0, 0, 0, 0, 253, 255, 159, 0, 245, 255, 255, 159, 0, 0, 0, 0, 253, 255, 159, 0, 96, 255, 255, 255, 8, 0, 0, 0, 253, 255, 159, 0, 0, 247, 255, 255, 127, 0, 0, 0, 253, 255, 159, 0, 0, 112, 255, 255, 255, 7, 0, 0, 253, 255, 159, 0, 0, 0, 248, 255, 255, 111, 0, 0, 253, 255, 159, 0, 0, 0, 144, 255, 255, 255, 5, 0, 253, 255, 159, 0, 0, 0, 0, 250, 255, 255, 95, 0, 253, 255, 159, 0, 0, 0, 0, 160, 255, 255, 255, 4, 253, 255, 159, 0, 0, 0, 0, 0, 251, 255, 255, 63 }; -/* S */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_83[] = { 24, 31, 27, 1, 30, 0, 0, 0, 64, 201, 254, 239, 156, 21, 0, 0, 0, 0, 0, 96, 254, 255, 255, 255, 255, 255, 24, 0, 0, 0, 16, 252, 255, 255, 255, 255, 255, 255, 239, 3, 0, 0, 192, 255, 255, 255, 255, 255, 255, 255, 255, 47, 0, 0, 249, 255, 255, 255, 255, 255, 255, 255, 255, 223, 0, 32, 255, 255, 255, 109, 19, 65, 231, 255, 255, 255, 6, 128, 255, 255, 175, 0, 0, 0, 0, 250, 255, 255, 12, 192, 255, 255, 14, 0, 0, 0, 0, 208, 255, 255, 31, 208, 255, 255, 10, 0, 0, 0, 0, 96, 255, 255, 63, 208, 255, 255, 9, 0, 0, 0, 0, 32, 221, 221, 77, 160, 255, 255, 14, 0, 0, 0, 0, 0, 0, 0, 0, 128, 255, 255, 207, 2, 0, 0, 0, 0, 0, 0, 0, 48, 255, 255, 255, 223, 89, 2, 0, 0, 0, 0, 0, 0, 250, 255, 255, 255, 255, 255, 156, 21, 0, 0, 0, 0, 209, 255, 255, 255, 255, 255, 255, 255, 75, 0, 0, 0, 0, 250, 255, 255, 255, 255, 255, 255, 255, 27, 0, 0, 0, 64, 234, 255, 255, 255, 255, 255, 255, 223, 0, 0, 0, 0, 0, 99, 201, 255, 255, 255, 255, 255, 10, 0, 0, 0, 0, 0, 0, 32, 166, 255, 255, 255, 47, 0, 0, 0, 0, 0, 0, 0, 0, 211, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 32, 255, 255, 175, 214, 221, 221, 0, 0, 0, 0, 0, 0, 252, 255, 191, 246, 255, 255, 3, 0, 0, 0, 0, 0, 252, 255, 191, 243, 255, 255, 12, 0, 0, 0, 0, 16, 255, 255, 175, 224, 255, 255, 175, 1, 0, 0, 0, 192, 255, 255, 111, 112, 255, 255, 255, 143, 36, 32, 132, 254, 255, 255, 31, 0, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 9, 0, 226, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, 0, 32, 252, 255, 255, 255, 255, 255, 255, 255, 28, 0, 0, 0, 112, 253, 255, 255, 255, 255, 255, 110, 0, 0, 0, 0, 0, 64, 200, 237, 239, 189, 72, 0, 0, 0 }; -/* T */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_84[] = { 24, 29, 25, 0, 29, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 64, 68, 68, 68, 132, 255, 255, 95, 68, 68, 68, 52, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 31, 0, 0, 0, 0 }; -/* U */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_85[] = { 26, 30, 30, 2, 29, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 6, 0, 0, 0, 0, 0, 32, 255, 255, 79, 240, 255, 255, 7, 0, 0, 0, 0, 0, 48, 255, 255, 63, 224, 255, 255, 10, 0, 0, 0, 0, 0, 96, 255, 255, 47, 192, 255, 255, 14, 0, 0, 0, 0, 0, 176, 255, 255, 15, 128, 255, 255, 143, 0, 0, 0, 0, 0, 245, 255, 255, 11, 48, 255, 255, 255, 3, 0, 0, 0, 16, 254, 255, 255, 7, 0, 252, 255, 255, 127, 0, 0, 0, 228, 255, 255, 255, 1, 0, 245, 255, 255, 255, 124, 68, 182, 255, 255, 255, 143, 0, 0, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13, 0, 0, 0, 252, 255, 255, 255, 255, 255, 255, 255, 239, 2, 0, 0, 0, 160, 255, 255, 255, 255, 255, 255, 255, 28, 0, 0, 0, 0, 0, 213, 255, 255, 255, 255, 255, 110, 0, 0, 0, 0, 0, 0, 0, 131, 220, 255, 206, 73, 0, 0, 0, 0 }; -/* V */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_86[] = { 29, 29, 29, 0, 29, 250, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 254, 255, 255, 2, 244, 255, 255, 12, 0, 0, 0, 0, 0, 0, 64, 255, 255, 223, 0, 224, 255, 255, 47, 0, 0, 0, 0, 0, 0, 144, 255, 255, 127, 0, 144, 255, 255, 127, 0, 0, 0, 0, 0, 0, 224, 255, 255, 47, 0, 48, 255, 255, 223, 0, 0, 0, 0, 0, 0, 244, 255, 255, 12, 0, 0, 254, 255, 255, 2, 0, 0, 0, 0, 0, 249, 255, 255, 6, 0, 0, 248, 255, 255, 8, 0, 0, 0, 0, 0, 254, 255, 255, 1, 0, 0, 243, 255, 255, 13, 0, 0, 0, 0, 64, 255, 255, 191, 0, 0, 0, 208, 255, 255, 47, 0, 0, 0, 0, 160, 255, 255, 111, 0, 0, 0, 112, 255, 255, 143, 0, 0, 0, 0, 240, 255, 255, 31, 0, 0, 0, 32, 255, 255, 223, 0, 0, 0, 0, 245, 255, 255, 11, 0, 0, 0, 0, 252, 255, 255, 3, 0, 0, 0, 250, 255, 255, 5, 0, 0, 0, 0, 247, 255, 255, 8, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 241, 255, 255, 13, 0, 0, 80, 255, 255, 175, 0, 0, 0, 0, 0, 192, 255, 255, 63, 0, 0, 160, 255, 255, 79, 0, 0, 0, 0, 0, 96, 255, 255, 143, 0, 0, 240, 255, 255, 14, 0, 0, 0, 0, 0, 16, 255, 255, 239, 0, 0, 245, 255, 255, 9, 0, 0, 0, 0, 0, 0, 251, 255, 255, 3, 0, 251, 255, 255, 4, 0, 0, 0, 0, 0, 0, 245, 255, 255, 9, 0, 255, 255, 239, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 14, 80, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 160, 255, 255, 79, 176, 255, 255, 63, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 159, 241, 255, 255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 252, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 0, 250, 255, 255, 255, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 244, 255, 255, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 255, 255, 255, 255, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 255, 255, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 255, 255, 6, 0, 0, 0, 0, 0 }; -/* W */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_87[] = { 41, 29, 41, 0, 29, 250, 255, 255, 6, 0, 0, 0, 0, 176, 255, 255, 223, 0, 0, 0, 0, 0, 244, 255, 255, 13, 246, 255, 255, 10, 0, 0, 0, 0, 240, 255, 255, 255, 1, 0, 0, 0, 0, 248, 255, 255, 9, 242, 255, 255, 14, 0, 0, 0, 0, 243, 255, 255, 255, 5, 0, 0, 0, 0, 252, 255, 255, 5, 224, 255, 255, 47, 0, 0, 0, 0, 247, 255, 255, 255, 10, 0, 0, 0, 0, 255, 255, 255, 1, 160, 255, 255, 111, 0, 0, 0, 0, 251, 255, 255, 255, 14, 0, 0, 0, 64, 255, 255, 207, 0, 96, 255, 255, 175, 0, 0, 0, 0, 255, 255, 255, 255, 47, 0, 0, 0, 128, 255, 255, 143, 0, 32, 255, 255, 239, 0, 0, 0, 64, 255, 255, 255, 255, 111, 0, 0, 0, 192, 255, 255, 79, 0, 0, 254, 255, 255, 2, 0, 0, 128, 255, 255, 255, 255, 175, 0, 0, 0, 240, 255, 255, 15, 0, 0, 250, 255, 255, 6, 0, 0, 192, 255, 255, 255, 255, 239, 0, 0, 0, 244, 255, 255, 12, 0, 0, 246, 255, 255, 10, 0, 0, 240, 255, 255, 228, 255, 255, 3, 0, 0, 248, 255, 255, 8, 0, 0, 242, 255, 255, 14, 0, 0, 244, 255, 223, 160, 255, 255, 7, 0, 0, 252, 255, 255, 4, 0, 0, 224, 255, 255, 47, 0, 0, 249, 255, 159, 96, 255, 255, 11, 0, 0, 255, 255, 255, 0, 0, 0, 160, 255, 255, 111, 0, 0, 253, 255, 95, 32, 255, 255, 15, 0, 64, 255, 255, 207, 0, 0, 0, 96, 255, 255, 175, 0, 16, 255, 255, 31, 0, 254, 255, 63, 0, 128, 255, 255, 143, 0, 0, 0, 32, 255, 255, 239, 0, 80, 255, 255, 12, 0, 250, 255, 127, 0, 192, 255, 255, 79, 0, 0, 0, 0, 253, 255, 255, 2, 144, 255, 255, 8, 0, 246, 255, 207, 0, 240, 255, 255, 15, 0, 0, 0, 0, 249, 255, 255, 6, 208, 255, 255, 4, 0, 242, 255, 255, 0, 244, 255, 255, 12, 0, 0, 0, 0, 245, 255, 255, 10, 242, 255, 255, 0, 0, 224, 255, 255, 4, 248, 255, 255, 8, 0, 0, 0, 0, 241, 255, 255, 14, 246, 255, 207, 0, 0, 160, 255, 255, 8, 252, 255, 255, 4, 0, 0, 0, 0, 208, 255, 255, 47, 250, 255, 143, 0, 0, 96, 255, 255, 12, 255, 255, 255, 0, 0, 0, 0, 0, 144, 255, 255, 223, 255, 255, 79, 0, 0, 32, 255, 255, 223, 255, 255, 191, 0, 0, 0, 0, 0, 80, 255, 255, 255, 255, 255, 15, 0, 0, 0, 254, 255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 16, 255, 255, 255, 255, 255, 12, 0, 0, 0, 250, 255, 255, 255, 255, 63, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 8, 0, 0, 0, 245, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 249, 255, 255, 255, 255, 4, 0, 0, 0, 241, 255, 255, 255, 255, 11, 0, 0, 0, 0, 0, 0, 245, 255, 255, 255, 255, 0, 0, 0, 0, 208, 255, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 241, 255, 255, 255, 191, 0, 0, 0, 0, 144, 255, 255, 255, 255, 3, 0, 0, 0, 0, 0, 0, 208, 255, 255, 255, 127, 0, 0, 0, 0, 80, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 144, 255, 255, 255, 63, 0, 0, 0, 0, 16, 255, 255, 255, 191, 0, 0, 0, 0 }; -/* X */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_88[] = { 29, 29, 28, 0, 29, 112, 255, 255, 255, 1, 0, 0, 0, 0, 0, 243, 255, 255, 95, 0, 0, 252, 255, 255, 11, 0, 0, 0, 0, 0, 253, 255, 255, 10, 0, 0, 242, 255, 255, 95, 0, 0, 0, 0, 112, 255, 255, 239, 1, 0, 0, 112, 255, 255, 239, 1, 0, 0, 0, 242, 255, 255, 95, 0, 0, 0, 0, 252, 255, 255, 11, 0, 0, 0, 252, 255, 255, 10, 0, 0, 0, 0, 242, 255, 255, 95, 0, 0, 112, 255, 255, 239, 1, 0, 0, 0, 0, 112, 255, 255, 239, 1, 0, 242, 255, 255, 79, 0, 0, 0, 0, 0, 0, 252, 255, 255, 10, 0, 252, 255, 255, 10, 0, 0, 0, 0, 0, 0, 242, 255, 255, 95, 112, 255, 255, 239, 1, 0, 0, 0, 0, 0, 0, 96, 255, 255, 239, 247, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 0, 252, 255, 255, 255, 255, 255, 10, 0, 0, 0, 0, 0, 0, 0, 0, 242, 255, 255, 255, 255, 239, 1, 0, 0, 0, 0, 0, 0, 0, 0, 96, 255, 255, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 255, 255, 255, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 255, 255, 255, 255, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 255, 255, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 255, 255, 255, 255, 255, 8, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 255, 250, 255, 255, 63, 0, 0, 0, 0, 0, 0, 0, 225, 255, 255, 127, 144, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 250, 255, 255, 12, 0, 253, 255, 255, 8, 0, 0, 0, 0, 0, 80, 255, 255, 255, 2, 0, 243, 255, 255, 63, 0, 0, 0, 0, 0, 225, 255, 255, 111, 0, 0, 144, 255, 255, 223, 0, 0, 0, 0, 0, 251, 255, 255, 12, 0, 0, 0, 253, 255, 255, 9, 0, 0, 0, 96, 255, 255, 255, 2, 0, 0, 0, 243, 255, 255, 79, 0, 0, 0, 241, 255, 255, 111, 0, 0, 0, 0, 128, 255, 255, 239, 0, 0, 0, 251, 255, 255, 11, 0, 0, 0, 0, 0, 253, 255, 255, 9, 0, 96, 255, 255, 255, 2, 0, 0, 0, 0, 0, 243, 255, 255, 79, 0, 242, 255, 255, 111, 0, 0, 0, 0, 0, 0, 128, 255, 255, 239, 1 }; -/* Y */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_89[] = { 28, 29, 27, 0, 29, 242, 255, 255, 14, 0, 0, 0, 0, 0, 0, 224, 255, 255, 47, 144, 255, 255, 127, 0, 0, 0, 0, 0, 0, 247, 255, 255, 9, 16, 255, 255, 255, 1, 0, 0, 0, 0, 16, 255, 255, 255, 1, 0, 247, 255, 255, 9, 0, 0, 0, 0, 144, 255, 255, 127, 0, 0, 208, 255, 255, 47, 0, 0, 0, 0, 242, 255, 255, 14, 0, 0, 80, 255, 255, 191, 0, 0, 0, 0, 251, 255, 255, 5, 0, 0, 0, 252, 255, 255, 4, 0, 0, 64, 255, 255, 207, 0, 0, 0, 0, 243, 255, 255, 13, 0, 0, 192, 255, 255, 63, 0, 0, 0, 0, 160, 255, 255, 111, 0, 0, 245, 255, 255, 10, 0, 0, 0, 0, 16, 255, 255, 239, 0, 0, 254, 255, 255, 2, 0, 0, 0, 0, 0, 248, 255, 255, 8, 112, 255, 255, 143, 0, 0, 0, 0, 0, 0, 224, 255, 255, 31, 241, 255, 255, 30, 0, 0, 0, 0, 0, 0, 96, 255, 255, 207, 252, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 0, 244, 255, 255, 255, 255, 79, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 32, 255, 255, 255, 255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 11, 0, 0, 0, 0, 0 }; -/* Z */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_90[] = { 23, 29, 25, 1, 29, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 11, 65, 68, 68, 68, 68, 68, 68, 228, 255, 255, 255, 3, 0, 0, 0, 0, 0, 0, 0, 249, 255, 255, 111, 0, 0, 0, 0, 0, 0, 0, 96, 255, 255, 255, 9, 0, 0, 0, 0, 0, 0, 0, 243, 255, 255, 207, 0, 0, 0, 0, 0, 0, 0, 16, 254, 255, 255, 30, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 255, 4, 0, 0, 0, 0, 0, 0, 0, 248, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 255, 10, 0, 0, 0, 0, 0, 0, 0, 242, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 255, 47, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 247, 255, 255, 143, 0, 0, 0, 0, 0, 0, 0, 64, 255, 255, 255, 11, 0, 0, 0, 0, 0, 0, 0, 226, 255, 255, 239, 1, 0, 0, 0, 0, 0, 0, 0, 252, 255, 255, 63, 0, 0, 0, 0, 0, 0, 0, 160, 255, 255, 255, 5, 0, 0, 0, 0, 0, 0, 0, 246, 255, 255, 159, 0, 0, 0, 0, 0, 0, 0, 48, 255, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 225, 255, 255, 255, 53, 51, 51, 51, 51, 51, 51, 3, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14 }; -/* [ */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_91[] = { 11, 39, 15, 3, 31, 216, 221, 221, 221, 221, 11, 250, 255, 255, 255, 255, 13, 250, 255, 255, 255, 255, 13, 250, 255, 255, 255, 255, 13, 250, 255, 255, 255, 255, 13, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 159, 0, 0, 0, 250, 255, 239, 221, 221, 11, 250, 255, 255, 255, 255, 13, 250, 255, 255, 255, 255, 13, 250, 255, 255, 255, 255, 13, 250, 255, 255, 255, 255, 13 }; -/* \ */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_92[] = { 17, 40, 17, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 255, 111, 0, 0, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 0, 0, 243, 255, 255, 0, 0, 0, 0, 0, 0, 224, 255, 255, 4, 0, 0, 0, 0, 0, 160, 255, 255, 9, 0, 0, 0, 0, 0, 80, 255, 255, 14, 0, 0, 0, 0, 0, 16, 255, 255, 47, 0, 0, 0, 0, 0, 0, 252, 255, 127, 0, 0, 0, 0, 0, 0, 247, 255, 207, 0, 0, 0, 0, 0, 0, 242, 255, 255, 1, 0, 0, 0, 0, 0, 224, 255, 255, 5, 0, 0, 0, 0, 0, 144, 255, 255, 10, 0, 0, 0, 0, 0, 64, 255, 255, 15, 0, 0, 0, 0, 0, 0, 255, 255, 79, 0, 0, 0, 0, 0, 0, 251, 255, 143, 0, 0, 0, 0, 0, 0, 246, 255, 223, 0, 0, 0, 0, 0, 0, 241, 255, 255, 2, 0, 0, 0, 0, 0, 192, 255, 255, 7, 0, 0, 0, 0, 0, 128, 255, 255, 11, 0, 0, 0, 0, 0, 48, 255, 255, 15, 0, 0, 0, 0, 0, 0, 254, 255, 95, 0, 0, 0, 0, 0, 0, 250, 255, 159, 0, 0, 0, 0, 0, 0, 245, 255, 239, 0, 0, 0, 0, 0, 0, 240, 255, 255, 3, 0, 0, 0, 0, 0, 176, 255, 255, 8, 0, 0, 0, 0, 0, 112, 255, 255, 12, 0, 0, 0, 0, 0, 32, 255, 255, 31, 0, 0, 0, 0, 0, 0, 253, 255, 111, 0, 0, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 0, 0, 244, 255, 255, 0, 0, 0, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 0, 0, 160, 255, 255, 9, 0, 0, 0, 0, 0, 96, 255, 255, 13, 0, 0, 0, 0, 0, 16, 255, 255, 47, 0, 0, 0, 0, 0, 0, 252, 255, 127, 0, 0, 0, 0, 0, 0, 247, 255, 207, 0, 0, 0, 0, 0, 0, 243, 255, 255, 1, 0, 0, 0, 0, 0, 224, 255, 255, 5, 0, 0, 0, 0, 0, 144, 255, 255, 10 }; -/* ] */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_93[] = { 11, 39, 15, 1, 31, 215, 221, 221, 221, 221, 12, 248, 255, 255, 255, 255, 15, 248, 255, 255, 255, 255, 15, 248, 255, 255, 255, 255, 15, 248, 255, 255, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 0, 0, 64, 255, 255, 15, 215, 221, 237, 255, 255, 15, 248, 255, 255, 255, 255, 15, 248, 255, 255, 255, 255, 15, 248, 255, 255, 255, 255, 15, 248, 255, 255, 255, 255, 15 }; -/* ^ */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_94[] = { 16, 12, 19, 1, 29, 0, 0, 224, 255, 255, 159, 0, 0, 0, 0, 244, 255, 255, 239, 0, 0, 0, 0, 250, 255, 255, 255, 4, 0, 0, 0, 255, 255, 255, 255, 10, 0, 0, 80, 255, 255, 253, 255, 31, 0, 0, 176, 255, 239, 244, 255, 111, 0, 0, 241, 255, 143, 208, 255, 207, 0, 0, 247, 255, 47, 112, 255, 255, 2, 0, 253, 255, 12, 32, 255, 255, 8, 48, 255, 255, 6, 0, 252, 255, 14, 144, 255, 255, 1, 0, 246, 255, 63, 224, 255, 175, 0, 0, 240, 255, 159 }; -/* _ */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_95[] = { 19, 5, 17, 0, 0, 219, 221, 221, 221, 221, 221, 221, 221, 221, 2, 253, 255, 255, 255, 255, 255, 255, 255, 255, 3, 253, 255, 255, 255, 255, 255, 255, 255, 255, 3, 253, 255, 255, 255, 255, 255, 255, 255, 255, 3, 253, 255, 255, 255, 255, 255, 255, 255, 255, 3 }; -/* ` */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_96[] = { 10, 7, 12, 1, 31, 245, 255, 255, 1, 0, 128, 255, 255, 11, 0, 0, 250, 255, 95, 0, 0, 192, 255, 239, 1, 0, 16, 254, 255, 10, 0, 0, 243, 255, 95, 0, 0, 16, 17, 17 }; /* a */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_97[] = { 20, 23, 23, 1, 22, 0, 0, 0, 147, 237, 239, 140, 3, 0, 0, 0, 0, 161, 255, 255, 255, 255, 191, 2, 0, 0, 48, 255, 255, 255, 255, 255, 255, 62, 0, 0, 225, 255, 255, 255, 255, 255, 255, 239, 1, 0, 250, 255, 255, 108, 100, 252, 255, 255, 9, 0, 255, 255, 159, 0, 0, 176, 255, 255, 15, 64, 255, 255, 15, 0, 0, 32, 255, 255, 95, 16, 34, 34, 2, 0, 0, 0, 253, 255, 127, 0, 0, 0, 0, 0, 0, 0, 251, 255, 159, 0, 0, 96, 218, 254, 255, 255, 255, 255, 159, 0, 96, 255, 255, 255, 255, 255, 255, 255, 159, 0, 249, 255, 255, 255, 255, 255, 255, 255, 159, 80, 255, 255, 255, 255, 255, 255, 255, 255, 159, 208, 255, 255, 143, 2, 0, 0, 250, 255, 159, 242, 255, 255, 5, 0, 0, 0, 252, 255, 159, 244, 255, 255, 0, 0, 0, 0, 255, 255, 159, 244, 255, 255, 0, 0, 0, 112, 255, 255, 159, 242, 255, 255, 6, 0, 0, 244, 255, 255, 159, 224, 255, 255, 159, 52, 166, 255, 255, 255, 159, 80, 255, 255, 255, 255, 255, 255, 255, 255, 159, 0, 250, 255, 255, 255, 255, 255, 251, 255, 159, 0, 112, 255, 255, 255, 255, 111, 240, 255, 159, 0, 0, 129, 236, 223, 123, 0, 0, 0, 0 }; /* b */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_98[] = { 23, 30, 26, 2, 29, 240, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 2, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 2, 96, 218, 239, 124, 1, 0, 0, 0, 240, 255, 255, 82, 254, 255, 255, 255, 143, 0, 0, 0, 240, 255, 255, 249, 255, 255, 255, 255, 255, 11, 0, 0, 240, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, 0, 240, 255, 255, 255, 255, 239, 255, 255, 255, 255, 7, 0, 240, 255, 255, 255, 94, 1, 48, 252, 255, 255, 31, 0, 240, 255, 255, 223, 1, 0, 0, 144, 255, 255, 127, 0, 240, 255, 255, 63, 0, 0, 0, 0, 254, 255, 207, 0, 240, 255, 255, 11, 0, 0, 0, 0, 246, 255, 255, 0, 240, 255, 255, 7, 0, 0, 0, 0, 242, 255, 255, 3, 240, 255, 255, 5, 0, 0, 0, 0, 240, 255, 255, 4, 240, 255, 255, 3, 0, 0, 0, 0, 224, 255, 255, 5, 240, 255, 255, 5, 0, 0, 0, 0, 240, 255, 255, 4, 240, 255, 255, 7, 0, 0, 0, 0, 242, 255, 255, 3, 240, 255, 255, 11, 0, 0, 0, 0, 246, 255, 255, 0, 240, 255, 255, 63, 0, 0, 0, 0, 254, 255, 207, 0, 240, 255, 255, 207, 1, 0, 0, 144, 255, 255, 127, 0, 240, 255, 255, 255, 94, 1, 48, 252, 255, 255, 31, 0, 240, 255, 255, 255, 255, 239, 255, 255, 255, 255, 7, 0, 240, 255, 255, 255, 255, 255, 255, 255, 255, 207, 0, 0, 240, 255, 239, 250, 255, 255, 255, 255, 255, 28, 0, 0, 240, 255, 175, 112, 255, 255, 255, 255, 143, 0, 0, 0, 0, 0, 0, 0, 113, 219, 239, 124, 1, 0, 0, 0 }; /* c */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_99[] = { 22, 23, 24, 1, 22, 0, 0, 0, 48, 200, 254, 222, 73, 0, 0, 0, 0, 0, 48, 252, 255, 255, 255, 255, 61, 0, 0, 0, 0, 247, 255, 255, 255, 255, 255, 255, 6, 0, 0, 112, 255, 255, 255, 255, 255, 255, 255, 95, 0, 0, 244, 255, 255, 255, 239, 255, 255, 255, 255, 2, 0, 253, 255, 255, 94, 1, 48, 252, 255, 255, 10, 80, 255, 255, 207, 1, 0, 0, 160, 255, 255, 31, 176, 255, 255, 47, 0, 0, 0, 0, 254, 255, 111, 240, 255, 255, 8, 0, 0, 0, 0, 100, 102, 54, 242, 255, 255, 3, 0, 0, 0, 0, 0, 0, 0, 243, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 244, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 243, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 242, 255, 255, 3, 0, 0, 0, 0, 0, 0, 0, 240, 255, 255, 8, 0, 0, 0, 0, 150, 153, 89, 176, 255, 255, 31, 0, 0, 0, 16, 255, 255, 95, 80, 255, 255, 207, 1, 0, 0, 176, 255, 255, 15, 0, 253, 255, 255, 94, 1, 48, 252, 255, 255, 10, 0, 244, 255, 255, 255, 239, 255, 255, 255, 255, 1, 0, 112, 255, 255, 255, 255, 255, 255, 255, 95, 0, 0, 0, 247, 255, 255, 255, 255, 255, 255, 6, 0, 0, 0, 48, 252, 255, 255, 255, 255, 61, 0, 0, 0, 0, 0, 64, 200, 254, 222, 73, 0, 0, 0 }; @@ -97,79 +33,43 @@ /* x */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_120[] = { 23, 21, 22, 0, 21, 160, 255, 255, 63, 0, 0, 0, 0, 252, 255, 255, 2, 16, 254, 255, 223, 0, 0, 0, 112, 255, 255, 111, 0, 0, 244, 255, 255, 9, 0, 0, 243, 255, 255, 11, 0, 0, 160, 255, 255, 79, 0, 0, 253, 255, 255, 1, 0, 0, 16, 254, 255, 239, 0, 128, 255, 255, 95, 0, 0, 0, 0, 244, 255, 255, 10, 243, 255, 255, 11, 0, 0, 0, 0, 144, 255, 255, 159, 253, 255, 239, 1, 0, 0, 0, 0, 0, 254, 255, 255, 255, 255, 95, 0, 0, 0, 0, 0, 0, 244, 255, 255, 255, 255, 10, 0, 0, 0, 0, 0, 0, 144, 255, 255, 255, 239, 1, 0, 0, 0, 0, 0, 0, 64, 255, 255, 255, 191, 0, 0, 0, 0, 0, 0, 0, 208, 255, 255, 255, 255, 5, 0, 0, 0, 0, 0, 0, 249, 255, 255, 255, 255, 30, 0, 0, 0, 0, 0, 64, 255, 255, 255, 255, 255, 175, 0, 0, 0, 0, 0, 208, 255, 255, 14, 248, 255, 255, 5, 0, 0, 0, 0, 249, 255, 255, 4, 208, 255, 255, 30, 0, 0, 0, 48, 255, 255, 175, 0, 48, 255, 255, 175, 0, 0, 0, 208, 255, 255, 30, 0, 0, 249, 255, 255, 4, 0, 0, 248, 255, 255, 4, 0, 0, 208, 255, 255, 30, 0, 48, 255, 255, 175, 0, 0, 0, 48, 255, 255, 175, 0, 208, 255, 255, 30, 0, 0, 0, 0, 249, 255, 255, 4 }; /* y */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_121[] = { 23, 29, 22, 0, 21, 252, 255, 175, 0, 0, 0, 0, 0, 246, 255, 255, 1, 246, 255, 255, 1, 0, 0, 0, 0, 251, 255, 191, 0, 240, 255, 255, 6, 0, 0, 0, 16, 255, 255, 95, 0, 160, 255, 255, 13, 0, 0, 0, 112, 255, 255, 15, 0, 48, 255, 255, 63, 0, 0, 0, 208, 255, 255, 9, 0, 0, 253, 255, 159, 0, 0, 0, 242, 255, 255, 3, 0, 0, 247, 255, 255, 0, 0, 0, 248, 255, 239, 0, 0, 0, 241, 255, 255, 6, 0, 0, 254, 255, 143, 0, 0, 0, 160, 255, 255, 12, 0, 64, 255, 255, 47, 0, 0, 0, 64, 255, 255, 47, 0, 144, 255, 255, 12, 0, 0, 0, 0, 253, 255, 143, 0, 240, 255, 255, 6, 0, 0, 0, 0, 247, 255, 239, 0, 245, 255, 255, 1, 0, 0, 0, 0, 241, 255, 255, 5, 251, 255, 191, 0, 0, 0, 0, 0, 176, 255, 255, 27, 255, 255, 95, 0, 0, 0, 0, 0, 64, 255, 255, 255, 255, 255, 15, 0, 0, 0, 0, 0, 0, 254, 255, 255, 255, 255, 9, 0, 0, 0, 0, 0, 0, 248, 255, 255, 255, 255, 3, 0, 0, 0, 0, 0, 0, 242, 255, 255, 255, 223, 0, 0, 0, 0, 0, 0, 0, 176, 255, 255, 255, 143, 0, 0, 0, 0, 0, 0, 0, 80, 255, 255, 255, 47, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 255, 12, 0, 0, 0, 0, 0, 0, 0, 0, 249, 255, 255, 6, 0, 0, 0, 0, 0, 0, 0, 0, 247, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 16, 253, 255, 191, 0, 0, 0, 0, 0, 0, 214, 221, 253, 255, 255, 95, 0, 0, 0, 0, 0, 0, 247, 255, 255, 255, 255, 14, 0, 0, 0, 0, 0, 0, 247, 255, 255, 255, 255, 6, 0, 0, 0, 0, 0, 0, 247, 255, 255, 255, 175, 0, 0, 0, 0, 0, 0, 0, 247, 255, 255, 189, 4, 0, 0, 0, 0, 0, 0 }; /* z */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_122[] = { 18, 21, 20, 1, 21, 248, 255, 255, 255, 255, 255, 255, 255, 127, 248, 255, 255, 255, 255, 255, 255, 255, 127, 248, 255, 255, 255, 255, 255, 255, 255, 127, 248, 255, 255, 255, 255, 255, 255, 255, 127, 215, 221, 221, 221, 221, 254, 255, 255, 111, 0, 0, 0, 0, 0, 252, 255, 255, 10, 0, 0, 0, 0, 176, 255, 255, 191, 0, 0, 0, 0, 0, 250, 255, 255, 12, 0, 0, 0, 0, 144, 255, 255, 223, 1, 0, 0, 0, 0, 247, 255, 255, 46, 0, 0, 0, 0, 96, 255, 255, 255, 2, 0, 0, 0, 0, 245, 255, 255, 63, 0, 0, 0, 0, 48, 255, 255, 255, 5, 0, 0, 0, 0, 242, 255, 255, 111, 0, 0, 0, 0, 32, 254, 255, 255, 7, 0, 0, 0, 0, 209, 255, 255, 159, 0, 0, 0, 0, 0, 250, 255, 255, 223, 221, 221, 221, 221, 157, 251, 255, 255, 255, 255, 255, 255, 255, 175, 251, 255, 255, 255, 255, 255, 255, 255, 175, 251, 255, 255, 255, 255, 255, 255, 255, 175, 251, 255, 255, 255, 255, 255, 255, 255, 175 }; -/* { */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_123[] = { 13, 39, 16, 2, 31, 0, 0, 0, 132, 219, 221, 3, 0, 0, 177, 255, 255, 255, 4, 0, 0, 252, 255, 255, 255, 4, 0, 96, 255, 255, 255, 255, 4, 0, 160, 255, 255, 255, 255, 4, 0, 208, 255, 255, 44, 0, 0, 0, 240, 255, 255, 5, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 242, 255, 255, 3, 0, 0, 48, 252, 255, 255, 1, 0, 0, 254, 255, 255, 143, 0, 0, 0, 254, 255, 255, 8, 0, 0, 0, 254, 255, 9, 0, 0, 0, 0, 254, 255, 191, 3, 0, 0, 0, 254, 255, 255, 79, 0, 0, 0, 183, 255, 255, 239, 0, 0, 0, 0, 246, 255, 255, 3, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 4, 0, 0, 0, 240, 255, 255, 5, 0, 0, 0, 224, 255, 255, 11, 0, 0, 0, 176, 255, 255, 255, 221, 3, 0, 112, 255, 255, 255, 255, 4, 0, 0, 253, 255, 255, 255, 4, 0, 0, 211, 255, 255, 255, 4, 0, 0, 0, 183, 253, 255, 4 }; -/* | */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_124[] = { 6, 40, 15, 5, 32, 0, 0, 0, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79, 255, 255, 79 }; -/* } */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_125[] = { 13, 39, 16, 1, 31, 215, 205, 122, 2, 0, 0, 0, 248, 255, 255, 143, 0, 0, 0, 248, 255, 255, 255, 7, 0, 0, 248, 255, 255, 255, 47, 0, 0, 248, 255, 255, 255, 111, 0, 0, 0, 64, 255, 255, 159, 0, 0, 0, 0, 250, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 247, 255, 239, 0, 0, 0, 0, 245, 255, 255, 41, 0, 0, 0, 192, 255, 255, 255, 10, 0, 0, 0, 251, 255, 255, 10, 0, 0, 0, 32, 253, 255, 10, 0, 0, 0, 163, 255, 255, 10, 0, 0, 96, 255, 255, 255, 10, 0, 0, 242, 255, 255, 159, 5, 0, 0, 247, 255, 255, 2, 0, 0, 0, 248, 255, 207, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 248, 255, 191, 0, 0, 0, 0, 249, 255, 191, 0, 0, 0, 16, 254, 255, 159, 0, 0, 215, 253, 255, 255, 127, 0, 0, 248, 255, 255, 255, 63, 0, 0, 248, 255, 255, 255, 9, 0, 0, 248, 255, 255, 191, 1, 0, 0, 248, 255, 173, 5, 0, 0, 0 }; -/* ~ */ static const uint8_t Font_TTSatoshi_DemiBold_42_glyph_126[] = { 23, 9, 25, 1, 16, 0, 0, 182, 254, 157, 1, 0, 0, 80, 102, 102, 0, 0, 193, 255, 255, 255, 78, 0, 0, 240, 255, 255, 0, 0, 251, 255, 255, 255, 255, 7, 0, 244, 255, 255, 0, 80, 255, 255, 255, 255, 255, 175, 84, 254, 255, 207, 0, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 0, 240, 255, 255, 92, 214, 255, 255, 255, 255, 255, 47, 0, 243, 255, 255, 1, 0, 251, 255, 255, 255, 255, 8, 0, 244, 255, 207, 0, 0, 112, 255, 255, 255, 159, 0, 0, 98, 102, 70, 0, 0, 0, 163, 254, 174, 4, 0, 0 }; /* ? */ const uint8_t Font_TTSatoshi_DemiBold_42_glyph_nonprintable[] = { 20, 30, 22, 1, 30, 255, 255, 223, 55, 1, 32, 132, 253, 255, 255, 255, 223, 4, 0, 0, 0, 0, 80, 254, 255, 255, 11, 0, 0, 0, 0, 0, 0, 193, 255, 207, 0, 0, 0, 0, 0, 0, 0, 16, 253, 63, 0, 0, 0, 0, 0, 0, 0, 0, 244, 11, 0, 0, 80, 235, 157, 1, 0, 0, 192, 6, 0, 0, 247, 255, 255, 63, 0, 0, 112, 2, 0, 0, 255, 255, 255, 207, 0, 0, 80, 35, 34, 82, 255, 255, 255, 255, 0, 0, 48, 255, 255, 255, 255, 255, 255, 255, 0, 0, 80, 255, 255, 255, 255, 255, 255, 175, 0, 0, 112, 255, 255, 255, 255, 255, 255, 10, 0, 0, 192, 255, 255, 255, 255, 255, 77, 0, 0, 0, 243, 255, 255, 255, 255, 143, 0, 0, 0, 16, 253, 255, 255, 255, 255, 9, 0, 0, 0, 211, 255, 255, 255, 255, 223, 0, 0, 0, 161, 255, 255, 255, 255, 255, 127, 0, 0, 48, 254, 255, 255, 255, 255, 255, 47, 0, 0, 241, 255, 255, 255, 255, 255, 255, 31, 0, 0, 248, 255, 255, 255, 255, 255, 255, 15, 0, 0, 251, 255, 255, 255, 255, 255, 255, 15, 0, 0, 252, 255, 255, 255, 255, 255, 255, 175, 170, 170, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 34, 34, 249, 255, 255, 255, 255, 255, 255, 12, 0, 0, 249, 255, 255, 255, 255, 255, 255, 12, 0, 0, 249, 255, 255, 255, 255, 255, 255, 12, 0, 0, 249, 255, 255, 255, 255, 255, 255, 12, 0, 0, 249, 255, 255, 255, 255, 255, 255, 12, 0, 0, 249, 255, 255, 255 }; const uint8_t * const Font_TTSatoshi_DemiBold_42[126 + 1 - 32] = { Font_TTSatoshi_DemiBold_42_glyph_32, - Font_TTSatoshi_DemiBold_42_glyph_33, - Font_TTSatoshi_DemiBold_42_glyph_34, - Font_TTSatoshi_DemiBold_42_glyph_35, - Font_TTSatoshi_DemiBold_42_glyph_36, - Font_TTSatoshi_DemiBold_42_glyph_37, - Font_TTSatoshi_DemiBold_42_glyph_38, - Font_TTSatoshi_DemiBold_42_glyph_39, - Font_TTSatoshi_DemiBold_42_glyph_40, - Font_TTSatoshi_DemiBold_42_glyph_41, - Font_TTSatoshi_DemiBold_42_glyph_42, - Font_TTSatoshi_DemiBold_42_glyph_43, - Font_TTSatoshi_DemiBold_42_glyph_44, - Font_TTSatoshi_DemiBold_42_glyph_45, - Font_TTSatoshi_DemiBold_42_glyph_46, - Font_TTSatoshi_DemiBold_42_glyph_47, - Font_TTSatoshi_DemiBold_42_glyph_48, - Font_TTSatoshi_DemiBold_42_glyph_49, - Font_TTSatoshi_DemiBold_42_glyph_50, - Font_TTSatoshi_DemiBold_42_glyph_51, - Font_TTSatoshi_DemiBold_42_glyph_52, - Font_TTSatoshi_DemiBold_42_glyph_53, - Font_TTSatoshi_DemiBold_42_glyph_54, - Font_TTSatoshi_DemiBold_42_glyph_55, - Font_TTSatoshi_DemiBold_42_glyph_56, - Font_TTSatoshi_DemiBold_42_glyph_57, - Font_TTSatoshi_DemiBold_42_glyph_58, - Font_TTSatoshi_DemiBold_42_glyph_59, - Font_TTSatoshi_DemiBold_42_glyph_60, - Font_TTSatoshi_DemiBold_42_glyph_61, - Font_TTSatoshi_DemiBold_42_glyph_62, - Font_TTSatoshi_DemiBold_42_glyph_63, - Font_TTSatoshi_DemiBold_42_glyph_64, - Font_TTSatoshi_DemiBold_42_glyph_65, - Font_TTSatoshi_DemiBold_42_glyph_66, - Font_TTSatoshi_DemiBold_42_glyph_67, - Font_TTSatoshi_DemiBold_42_glyph_68, - Font_TTSatoshi_DemiBold_42_glyph_69, - Font_TTSatoshi_DemiBold_42_glyph_70, - Font_TTSatoshi_DemiBold_42_glyph_71, - Font_TTSatoshi_DemiBold_42_glyph_72, - Font_TTSatoshi_DemiBold_42_glyph_73, - Font_TTSatoshi_DemiBold_42_glyph_74, - Font_TTSatoshi_DemiBold_42_glyph_75, - Font_TTSatoshi_DemiBold_42_glyph_76, - Font_TTSatoshi_DemiBold_42_glyph_77, - Font_TTSatoshi_DemiBold_42_glyph_78, - Font_TTSatoshi_DemiBold_42_glyph_79, - Font_TTSatoshi_DemiBold_42_glyph_80, - Font_TTSatoshi_DemiBold_42_glyph_81, - Font_TTSatoshi_DemiBold_42_glyph_82, - Font_TTSatoshi_DemiBold_42_glyph_83, - Font_TTSatoshi_DemiBold_42_glyph_84, - Font_TTSatoshi_DemiBold_42_glyph_85, - Font_TTSatoshi_DemiBold_42_glyph_86, - Font_TTSatoshi_DemiBold_42_glyph_87, - Font_TTSatoshi_DemiBold_42_glyph_88, - Font_TTSatoshi_DemiBold_42_glyph_89, - Font_TTSatoshi_DemiBold_42_glyph_90, - Font_TTSatoshi_DemiBold_42_glyph_91, - Font_TTSatoshi_DemiBold_42_glyph_92, - Font_TTSatoshi_DemiBold_42_glyph_93, - Font_TTSatoshi_DemiBold_42_glyph_94, - Font_TTSatoshi_DemiBold_42_glyph_95, - Font_TTSatoshi_DemiBold_42_glyph_96, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, Font_TTSatoshi_DemiBold_42_glyph_97, Font_TTSatoshi_DemiBold_42_glyph_98, Font_TTSatoshi_DemiBold_42_glyph_99, @@ -196,8 +96,40 @@ const uint8_t * const Font_TTSatoshi_DemiBold_42[126 + 1 - 32] = { Font_TTSatoshi_DemiBold_42_glyph_120, Font_TTSatoshi_DemiBold_42_glyph_121, Font_TTSatoshi_DemiBold_42_glyph_122, - Font_TTSatoshi_DemiBold_42_glyph_123, - Font_TTSatoshi_DemiBold_42_glyph_124, - Font_TTSatoshi_DemiBold_42_glyph_125, - Font_TTSatoshi_DemiBold_42_glyph_126, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_97, + Font_TTSatoshi_DemiBold_42_glyph_98, + Font_TTSatoshi_DemiBold_42_glyph_99, + Font_TTSatoshi_DemiBold_42_glyph_100, + Font_TTSatoshi_DemiBold_42_glyph_101, + Font_TTSatoshi_DemiBold_42_glyph_102, + Font_TTSatoshi_DemiBold_42_glyph_103, + Font_TTSatoshi_DemiBold_42_glyph_104, + Font_TTSatoshi_DemiBold_42_glyph_105, + Font_TTSatoshi_DemiBold_42_glyph_106, + Font_TTSatoshi_DemiBold_42_glyph_107, + Font_TTSatoshi_DemiBold_42_glyph_108, + Font_TTSatoshi_DemiBold_42_glyph_109, + Font_TTSatoshi_DemiBold_42_glyph_110, + Font_TTSatoshi_DemiBold_42_glyph_111, + Font_TTSatoshi_DemiBold_42_glyph_112, + Font_TTSatoshi_DemiBold_42_glyph_113, + Font_TTSatoshi_DemiBold_42_glyph_114, + Font_TTSatoshi_DemiBold_42_glyph_115, + Font_TTSatoshi_DemiBold_42_glyph_116, + Font_TTSatoshi_DemiBold_42_glyph_117, + Font_TTSatoshi_DemiBold_42_glyph_118, + Font_TTSatoshi_DemiBold_42_glyph_119, + Font_TTSatoshi_DemiBold_42_glyph_120, + Font_TTSatoshi_DemiBold_42_glyph_121, + Font_TTSatoshi_DemiBold_42_glyph_122, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, + Font_TTSatoshi_DemiBold_42_glyph_nonprintable, }; From 69e406f7cf7cdf467072e55c3d8af468c6d02a75 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 28 May 2024 00:19:01 +0200 Subject: [PATCH 175/626] fix(core/ui): T3T1 device tests [no changelog] --- .github/workflows/core.yml | 2 + core/embed/rust/src/ui/component/base.rs | 4 +- core/embed/rust/src/ui/flow/page.rs | 1 + .../src/ui/model_mercury/component/dialog.rs | 6 +- .../component/keyboard/passphrase.rs | 19 +- .../model_mercury/component/prompt_screen.rs | 4 + .../ui/model_mercury/component/share_words.rs | 1 + .../flow/confirm_reset_create.rs | 9 +- .../flow/confirm_reset_recover.rs | 6 +- .../ui/model_mercury/flow/show_share_words.rs | 8 +- .../rust/src/ui/model_mercury/theme/mod.rs | 24 +- .../apps/management/recovery_device/layout.py | 5 +- .../src/trezor/ui/layouts/mercury/__init__.py | 12 +- .../src/trezor/ui/layouts/mercury/recovery.py | 6 +- core/src/trezor/ui/layouts/mercury/reset.py | 26 +- core/translations/signatures.json | 6 +- tests/buttons.py | 20 +- tests/click_tests/recovery.py | 52 +- tests/click_tests/reset.py | 46 +- tests/click_tests/test_autolock.py | 41 +- .../click_tests/test_backup_slip39_custom.py | 3 - tests/click_tests/test_passphrase_mercury.py | 327 + tests/click_tests/test_passphrase_tt.py | 2 +- .../click_tests/test_reset_slip39_advanced.py | 18 +- tests/click_tests/test_reset_slip39_basic.py | 10 +- tests/common.py | 17 +- tests/device_tests/cardano/test_sign_tx.py | 7 +- .../test_recovery_slip39_advanced.py | 1 + tests/device_tests/test_msg_applysettings.py | 7 + tests/input_flows.py | 102 +- tests/input_flows_helpers.py | 34 +- .../test_shamir_persistence.py | 13 +- tests/ui_tests/fixtures.json | 15829 ++++++++-------- 33 files changed, 8547 insertions(+), 8121 deletions(-) create mode 100644 tests/click_tests/test_passphrase_mercury.py diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 2fe3a03fd5..6872bd9a35 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -266,6 +266,7 @@ jobs: needs: - param - core_emu + timeout-minutes: 90 strategy: fail-fast: false matrix: @@ -350,6 +351,7 @@ jobs: needs: - param - core_emu + timeout-minutes: 30 strategy: fail-fast: false matrix: diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 375df7fb90..36f5963c17 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -569,8 +569,8 @@ impl EventCtx { } pub fn set_page_count(&mut self, count: usize) { - #[cfg(feature = "ui_debug")] - assert!(self.page_count.is_none()); + // #[cfg(feature = "ui_debug")] + // assert!(self.page_count.unwrap_or(count) == count); self.page_count = Some(count); } diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 896820b24a..29a766c8bf 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -90,6 +90,7 @@ impl<T: Component + Paginate + Clone> Component for SwipePage<T> { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + ctx.set_page_count(self.pages); if let Some(t) = &mut self.transition { let finished = Self::handle_transition(ctx, event, t); if finished { diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index e5bcd9f883..e65bef3828 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -136,7 +136,7 @@ where } pub fn with_description(self, description: impl Into<TString<'static>>) -> Self { - self.with_text(&theme::TEXT_NORMAL_OFF_WHITE, description) + self.with_text(&theme::TEXT_NORMAL_GREY_EXTRA_LIGHT, description) } pub fn with_value(self, value: impl Into<TString<'static>>) -> Self { @@ -154,9 +154,9 @@ where theme::BG, )), paragraphs: ParagraphVecShort::from_iter([ - Paragraph::new(&theme::TEXT_NORMAL_OFF_WHITE, l0).centered(), + Paragraph::new(&theme::TEXT_NORMAL_GREY_EXTRA_LIGHT, l0).centered(), Paragraph::new(&theme::TEXT_DEMIBOLD, l1).centered(), - Paragraph::new(&theme::TEXT_NORMAL_OFF_WHITE, l2).centered(), + Paragraph::new(&theme::TEXT_NORMAL_GREY_EXTRA_LIGHT, l2).centered(), Paragraph::new(&theme::TEXT_DEMIBOLD, l3).centered(), ]) .into_paragraphs() diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 4f3ffbbaa0..addaa682b9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -76,7 +76,7 @@ pub struct PassphraseKeyboard { input_prompt: Child<Label<'static>>, erase_btn: Child<Maybe<Button>>, cancel_btn: Child<Maybe<Button>>, - confirm_btn: Child<Maybe<Button>>, + confirm_btn: Child<Button>, next_btn: Child<Button>, keys: [Child<Button>; KEY_COUNT], active_layout: KeyboardLayout, @@ -87,8 +87,8 @@ const PAGE_COUNT: usize = 4; const KEY_COUNT: usize = 10; #[rustfmt::skip] const KEYBOARD: [[&str; KEY_COUNT]; PAGE_COUNT] = [ - ["abc", "def", "ghi", "jkl", "mno", "pq", "rst", "uvq", "xyz", " *#"], - ["ABC", "DEF", "GHI", "JKL", "MNO", "PQ", "RST", "UVQ", "XYZ", " *#"], + ["abc", "def", "ghi", "jkl", "mno", "pq", "rst", "uvw", "xyz", " *#"], + ["ABC", "DEF", "GHI", "JKL", "MNO", "PQ", "RST", "UVW", "XYZ", " *#"], ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"], ["_<>", ".:@", "/|\\", "!()", "+%&", "-[]", "?{}", ",'`", ";\"~", "$^="], ]; @@ -102,8 +102,7 @@ impl PassphraseKeyboard { let confirm_btn = Button::with_icon(theme::ICON_CONFIRM) .styled(theme::button_passphrase_confirm()) .with_radius(15) - .initially_enabled(false); - let confirm_btn = Maybe::hidden(theme::BG, confirm_btn).into_child(); + .into_child(); let next_btn = Button::new(active_layout.next().into()) .styled(theme::button_passphrase_next()) @@ -206,10 +205,6 @@ impl PassphraseKeyboard { btn.show_if(ctx, is_empty); btn.inner_mut().enable_if(ctx, is_empty); }); - self.confirm_btn.mutate(ctx, |ctx, btn| { - btn.show_if(ctx, !is_empty); - btn.inner_mut().enable_if(ctx, !is_empty); - }); self.update_input_btns_state(ctx); } @@ -381,11 +376,11 @@ impl Component for PassphraseKeyboard { self.input.render(target); self.next_btn.render(target); self.erase_btn.render(target); + self.confirm_btn.render(target); if self.input.inner().textbox.is_empty() { self.cancel_btn.render(target); - self.input_prompt.render(target); - } else { - self.confirm_btn.render(target); + // FIXME: when prompt fixed in Figma + // self.input_prompt.render(target); } for btn in &self.keys { btn.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 31470ff722..061a86e041 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -6,6 +6,7 @@ use crate::{ geometry::{Alignment2D, Offset, Rect}, shape, shape::Renderer, + util::animation_disabled, }, }; @@ -97,6 +98,9 @@ impl Component for PromptScreen { (DismissType::Hold, Some(ButtonMsg::LongPressed)) => { return Some(()); } + (DismissType::Hold, Some(ButtonMsg::Clicked)) if animation_disabled() => { + return Some(()); + } _ => (), } None diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index b443ea3d34..9b8fb872f8 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -205,5 +205,6 @@ impl<'a> crate::trace::Trace for ShareWords<'a> { let content = word.map(|w| build_string!(50, inttostr!(self.page_index as u8 + 1), ". ", w, "\n")); t.string("screen_content", content.as_str().into()); + t.int("page_count", self.share_words.len() as i64) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index f115d7596f..1afbc92621 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -3,9 +3,10 @@ use crate::{ strutil::TString, translations::TR, ui::{ + button_request::ButtonRequestCode, component::{ text::paragraphs::{Paragraph, Paragraphs}, - ComponentExt, SwipeDirection, + ButtonRequestExt, ComponentExt, SwipeDirection, }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, @@ -86,7 +87,8 @@ impl ConfirmResetCreate { let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) + .one_button_request(ButtonRequestCode::ResetDevice.with_type("setup_device")); let content_menu = Frame::left_aligned( "".into(), @@ -106,7 +108,8 @@ impl ConfirmResetCreate { .map(|msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), _ => Some(FlowMsg::Cancelled), - }); + }) + .one_button_request(ButtonRequestCode::ResetDevice.with_type("confirm_setup_device")); let store = flow_store() .add(content_intro)? diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs index 6ca4ecbcf4..35a46486bf 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs @@ -2,9 +2,10 @@ use crate::{ error, translations::TR, ui::{ + button_request::ButtonRequestCode, component::{ text::paragraphs::{Paragraph, Paragraphs}, - ComponentExt, SwipeDirection, + ButtonRequestExt, ComponentExt, SwipeDirection, }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, @@ -80,7 +81,8 @@ impl ConfirmResetRecover { ) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) + .one_button_request(ButtonRequestCode::ProtectCall.with_type("recover_device")); let content_menu = Frame::left_aligned( "".into(), diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index c5a3c82675..9840ac9d3e 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -4,9 +4,10 @@ use crate::{ strutil::TString, translations::TR, ui::{ + button_request::ButtonRequestCode, component::{ text::paragraphs::{Paragraph, Paragraphs}, - ComponentExt, SwipeDirection, + ButtonRequestExt, ComponentExt, SwipeDirection, }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, layout::obj::LayoutObj, @@ -79,6 +80,7 @@ impl ShowShareWords { let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; let text_info: TString = kwargs.get(Qstr::MP_QSTR_text_info)?.try_into()?; let text_confirm: TString = kwargs.get(Qstr::MP_QSTR_text_confirm)?.try_into()?; + let nwords = share_words_vec.len(); let content_instruction = Frame::left_aligned( title, @@ -89,7 +91,9 @@ impl ShowShareWords { ) .with_subtitle(TR::words__instructions.into()) .with_footer(TR::instructions__swipe_up.into(), None) - .map(|msg| matches!(msg, FrameMsg::Content(_)).then_some(FlowMsg::Confirmed)); + .map(|msg| matches!(msg, FrameMsg::Content(_)).then_some(FlowMsg::Confirmed)) + .one_button_request(ButtonRequestCode::ResetDevice.with_type("share_words")) + .with_pages(move |_| nwords + 2); let content_words = Frame::left_aligned(title, ShareWords::new(share_words_vec)) .with_subtitle(subtitle) diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index bcc93a3446..bf5ce5db2c 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -47,11 +47,7 @@ pub const ORANGE_LIGHT: Color = Color::rgb(0xFF, 0x8D, 0x6A); // cancel button pub const RED: Color = Color::rgb(0xE7, 0x0E, 0x0E); // button pub const RED_DARK: Color = Color::rgb(0xAE, 0x09, 0x09); // button pressed pub const YELLOW: Color = Color::rgb(0xD9, 0x9E, 0x00); // button -pub const YELLOW_DARK: Color = Color::rgb(0x7A, 0x58, 0x00); // button pressed pub const BLUE: Color = Color::rgb(0x06, 0x1E, 0xAD); // button -pub const BLUE_DARK: Color = Color::rgb(0x04, 0x10, 0x58); // button pressed -pub const OFF_WHITE: Color = Color::rgb(0xDE, 0xDE, 0xDE); // very light grey -pub const GREY_MEDIUM: Color = Color::rgb(0x4F, 0x4F, 0x4F); // button pressed pub const VIOLET: Color = Color::rgb(0x95, 0x00, 0xCA); pub const FATAL_ERROR_COLOR: Color = Color::rgb(0xE7, 0x0E, 0x0E); @@ -189,7 +185,7 @@ pub const fn label_default() -> TextStyle { } pub const fn label_keyboard() -> TextStyle { - TextStyle::new(Font::DEMIBOLD, OFF_WHITE, BG, GREY_LIGHT, GREY_LIGHT) + TextStyle::new(Font::DEMIBOLD, GREY_EXTRA_LIGHT, BG, GREY_LIGHT, GREY_LIGHT) } pub const fn label_keyboard_prompt() -> TextStyle { @@ -197,11 +193,11 @@ pub const fn label_keyboard_prompt() -> TextStyle { } pub const fn label_keyboard_warning() -> TextStyle { - TextStyle::new(Font::DEMIBOLD, RED, BG, GREY_LIGHT, GREY_LIGHT) + TextStyle::new(Font::DEMIBOLD, ORANGE_LIGHT, BG, GREY_LIGHT, GREY_LIGHT) } pub const fn label_keyboard_minor() -> TextStyle { - TEXT_NORMAL_OFF_WHITE + TEXT_NORMAL_GREY_EXTRA_LIGHT } pub const fn label_warning() -> TextStyle { @@ -209,7 +205,7 @@ pub const fn label_warning() -> TextStyle { } pub const fn label_warning_value() -> TextStyle { - TEXT_NORMAL_OFF_WHITE + TEXT_NORMAL_GREY_EXTRA_LIGHT } pub const fn label_recovery_title() -> TextStyle { @@ -217,7 +213,7 @@ pub const fn label_recovery_title() -> TextStyle { } pub const fn label_recovery_description() -> TextStyle { - TEXT_NORMAL_OFF_WHITE + TEXT_NORMAL_GREY_EXTRA_LIGHT } pub const fn label_progress() -> TextStyle { @@ -363,21 +359,21 @@ pub const fn button_cancel() -> ButtonStyleSheet { normal: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: RED, + button_color: ORANGE_LIGHT, icon_color: GREY_LIGHT, background_color: BG, }, active: &ButtonStyle { font: Font::BOLD, text_color: FG, - button_color: RED_DARK, + button_color: ORANGE_DIMMED, icon_color: GREY_LIGHT, background_color: BG, }, disabled: &ButtonStyle { font: Font::BOLD, text_color: GREY_LIGHT, - button_color: RED, + button_color: ORANGE_DIMMED, icon_color: GREY_LIGHT, background_color: BG, }, @@ -791,8 +787,8 @@ pub fn textstyle_number(num: i32) -> &'static TextStyle { } } -pub const TEXT_NORMAL_OFF_WHITE: TextStyle = - TextStyle::new(Font::NORMAL, OFF_WHITE, BG, GREY_LIGHT, GREY_LIGHT); +pub const TEXT_NORMAL_GREY_EXTRA_LIGHT: TextStyle = + TextStyle::new(Font::NORMAL, GREY_EXTRA_LIGHT, BG, GREY_LIGHT, GREY_LIGHT); pub const TEXT_CHECKLIST_DEFAULT: TextStyle = TextStyle::new(Font::SUB, GREY, BG, GREY, GREY); pub const TEXT_CHECKLIST_SELECTED: TextStyle = TextStyle::new(Font::NORMAL, GREY_LIGHT, BG, GREY_LIGHT, GREY_LIGHT); diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index 747726e392..086b5da7ec 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -91,6 +91,7 @@ async def request_mnemonic( # show_identifier_mismatch await show_recovery_warning( "warning_mismatched_share", + "", TR.recovery__share_from_another_multi_share_backup, ) return None @@ -129,14 +130,14 @@ async def show_invalid_mnemonic(word_count: int) -> None: if backup_types.is_slip39_word_count(word_count): await show_recovery_warning( "warning_invalid_share", - TR.recovery__invalid_share_entered, TR.words__please_try_again, + TR.recovery__invalid_share_entered, ) else: await show_recovery_warning( "warning_invalid_seed", - TR.recovery__invalid_wallet_backup_entered, TR.words__please_try_again, + TR.recovery__invalid_wallet_backup_entered, ) diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 67812965a6..299b206f09 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -348,19 +348,11 @@ async def confirm_single( async def confirm_reset_device(_title: str, recovery: bool = False) -> None: if recovery: await raise_if_not_confirmed( - interact( - RustLayout(trezorui2.flow_confirm_reset_recover()), - "recover_device", - ButtonRequestType.ProtectCall, - ) + RustLayout(trezorui2.flow_confirm_reset_recover()), ) else: await raise_if_not_confirmed( - interact( - RustLayout(trezorui2.flow_confirm_reset_create()), - "setup_device", - ButtonRequestType.ResetDevice, - ) + RustLayout(trezorui2.flow_confirm_reset_create()), ) diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index 5ed3d7ca75..f49ef08f45 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -158,8 +158,10 @@ async def show_recovery_warning( interact( RustLayout( trezorui2.show_warning( - title=content, - value="Try again", # TODO: use TR + title=content or TR.words__warning, + value=subheader or "", + button=button, + description="", ) ), br_type, diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 4f33788cdf..661bcc1eb5 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -35,18 +35,14 @@ async def show_share_words( text_info = TR.reset__write_down_words_template.format(words_count) text_confirm = TR.reset__words_written_down_template.format(words_count) - result = await interact( - RustLayout( - trezorui2.flow_show_share_words( - title=title, - subtitle=subtitle, - words=share_words, - text_info=text_info, - text_confirm=text_confirm, - ) - ), - "backup_words", - ButtonRequestType.ResetDevice, + result = await RustLayout( + trezorui2.flow_show_share_words( + title=title, + subtitle=subtitle, + words=share_words, + text_info=text_info, + text_confirm=text_confirm, + ) ) if result != CONFIRMED: @@ -341,10 +337,10 @@ async def show_reset_warning( interact( RustLayout( trezorui2.show_warning( - title=subheader or "", + title=content or TR.words__warning, description="", - value=content, - button="", + value=subheader or "", + button=button, allow_cancel=False, ) ), diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 05db498731..195cbcfbbe 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "e79fdd3c9052dfd140aef2b4800b6b0b8000ae99822cf3e8be083da0dc2b376c", - "datetime": "2024-05-26T15:18:17.124044", - "commit": "3e9598245d57044418f4eeb5ce5bc792f20587c3" + "merkle_root": "e406bb0127f82bf476884b46c05ca86993c22e1373c4274443f2aef20b138a8e", + "datetime": "2024-05-28T00:05:41.698473", + "commit": "342b88f62bcd34595ea81ced550bb579b4e4a813" }, "history": [ { diff --git a/tests/buttons.py b/tests/buttons.py index 8cec76919b..b1a290e399 100644 --- a/tests/buttons.py +++ b/tests/buttons.py @@ -31,8 +31,24 @@ def grid(dim: int, grid_cells: int, cell: int) -> int: CONFIRM_WORD = (MID, TOP) TOP_ROW = (MID, TOP) -RESET_MINUS = (LEFT, grid(DISPLAY_HEIGHT, 5, 1)) -RESET_PLUS = (RIGHT, grid(DISPLAY_HEIGHT, 5, 1)) + +def reset_minus(model_internal_name: str) -> Coords: + RESET_MINUS_T3T1 = (LEFT, grid(DISPLAY_HEIGHT, 5, 3)) + RESET_MINUS = (LEFT, grid(DISPLAY_HEIGHT, 5, 1)) + if model_internal_name == "T3T1": + return RESET_MINUS_T3T1 + else: + return RESET_MINUS + + +def reset_plus(model_internal_name: str) -> Coords: + RESET_PLUS_T3T1 = (RIGHT, grid(DISPLAY_HEIGHT, 5, 3)) + RESET_PLUS = (RIGHT, grid(DISPLAY_HEIGHT, 5, 1)) + if model_internal_name == "T3T1": + return RESET_PLUS_T3T1 + else: + return RESET_PLUS + RESET_WORD_CHECK = [ (MID, grid(DISPLAY_HEIGHT, 5, 2)), diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 26e131944c..65e4adae88 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -22,7 +22,9 @@ def enter_word( typed_word = word[:4] for coords in buttons.type_word(typed_word, is_slip39=is_slip39): debug.click(coords) - + if debug.model is models.T3T1 and not is_slip39 and len(word) > 4: + # T3T1 (mercury) BIP39 keyboard allows to "confirm" only if the word is fully written, you need to click the word to auto-complete + debug.click(buttons.CONFIRM_WORD, wait=True) return debug.click(buttons.CONFIRM_WORD, wait=True) elif debug.model in (models.T2B1,): letter_index = 0 @@ -49,8 +51,10 @@ def enter_word( def confirm_recovery(debug: "DebugLink") -> None: layout = debug.wait_layout() TR.assert_equals(layout.title(), "recovery__title") - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) + elif debug.model in (models.T3T1,): + debug.swipe_up(wait=True) elif debug.model in (models.T2B1,): debug.press_right(wait=True) debug.press_right() @@ -99,20 +103,29 @@ def select_number_of_words( raise ValueError("Unknown model") if num_of_words in (20, 33): - TR.assert_in(layout.text_content(), "recovery__enter_any_share") + TR.assert_in_multiple( + layout.text_content(), + ["recovery__enter_any_share", "recovery__only_first_n_letters"], + ) else: - TR.assert_in(layout.text_content(), "recovery__enter_backup") + TR.assert_in_multiple( + layout.text_content(), + ["recovery__enter_backup", "recovery__only_first_n_letters"], + ) def enter_share( debug: "DebugLink", share: str, is_first: bool = True ) -> "LayoutContent": - TR.assert_in(debug.read_layout().title(), "recovery__title_recover") if debug.model in (models.T2B1,): + TR.assert_in(debug.read_layout().title(), "recovery__title_recover") layout = debug.wait_layout() for _ in range(layout.page_count()): layout = debug.press_right(wait=True) + elif debug.model in (models.T3T1,): + layout = debug.swipe_up(wait=True) else: + TR.assert_in(debug.read_layout().title(), "recovery__title_recover") layout = debug.click(buttons.OK, wait=True) assert "MnemonicKeyboard" in layout.all_components() @@ -124,15 +137,20 @@ def enter_share( def enter_shares(debug: "DebugLink", shares: list[str]) -> None: - TR.assert_in(debug.read_layout().text_content(), "recovery__enter_any_share") + TR.assert_in_multiple( + debug.read_layout().text_content(), + ["recovery__enter_any_share", "recovery__only_first_n_letters"], + ) for index, share in enumerate(shares): enter_share(debug, share, is_first=index == 0) if index < len(shares) - 1: - TR.assert_in( - debug.read_layout().text_content(), - "recovery__x_of_y_entered_template", - template=(index + 1, len(shares)), - ) + # FIXME: when ui-t3t1 done for shamir, we want to check the template below + TR.assert_in(debug.read_layout().title(), "recovery__title_recover") + # TR.assert_in( + # debug.read_layout().text_content(), + # "recovery__x_of_y_entered_template", + # template=(index + 1, len(shares)), + # ) TR.assert_in(debug.read_layout().text_content(), "recovery__wallet_recovered") @@ -188,13 +206,19 @@ def enter_seed_previous_correct( i += 1 layout = enter_word(debug, word, is_slip39=False) - TR.assert_in(debug.read_layout().text_content(), "recovery__wallet_recovered") + # TR.assert_in(debug.read_layout().text_content(), "recovery__wallet_recovered") def prepare_enter_seed(debug: "DebugLink") -> None: - TR.assert_in(debug.read_layout().text_content(), "recovery__enter_backup") - if debug.model in (models.T2T1, models.T3T1): + TR.assert_in_multiple( + debug.read_layout().text_content(), + ["recovery__enter_backup", "recovery__only_first_n_letters"], + ) + if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) + elif debug.model in (models.T3T1,): + debug.swipe_up(wait=True) + debug.swipe_up(wait=True) elif debug.model in (models.T2B1,): debug.press_right(wait=True) TR.assert_equals(debug.read_layout().title(), "recovery__title_recover") diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index 952cda4780..afaf14944b 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -14,16 +14,22 @@ def confirm_new_wallet(debug: "DebugLink") -> None: TR.assert_equals(debug.read_layout().title(), "reset__title_create_wallet") - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) + elif debug.model in (models.T3T1,): + debug.swipe_up(wait=True) + debug.click(buttons.TAP_TO_CONFIRM, wait=True) + debug.swipe_up(wait=True) # Wallet created elif debug.model in (models.T2B1,): debug.press_right(wait=True) debug.press_right(wait=True) def confirm_read(debug: "DebugLink", middle_r: bool = False) -> None: - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) + elif debug.model in (models.T3T1,): + debug.swipe_up(wait=True) elif debug.model in (models.T2B1,): page_count = debug.read_layout().page_count() if page_count > 1: @@ -36,18 +42,28 @@ def confirm_read(debug: "DebugLink", middle_r: bool = False) -> None: def cancel_backup(debug: "DebugLink", middle_r: bool = False) -> None: - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click(buttons.CANCEL, wait=True) + debug.click(buttons.CANCEL, wait=True) + elif debug.model in (models.T3T1,): + debug.click(buttons.CORNER_BUTTON, wait=True) + debug.click(buttons.VERTICAL_MENU[0], wait=True) + debug.swipe_up(wait=True) + debug.click(buttons.TAP_TO_CONFIRM) elif debug.model in (models.T2B1,): debug.press_left(wait=True) + debug.press_left(wait=True) def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> None: if debug.model in (models.T2T1, models.T3T1): assert "NumberInputDialog" in debug.read_layout().all_components() for _ in range(diff): - debug.click(button) - debug.click(buttons.OK, wait=True) + debug.click(button, wait=True) + if debug.model in (models.T2T1,): + debug.click(buttons.OK, wait=True) + else: + debug.swipe_up(wait=True) elif debug.model in (models.T2B1,): layout = debug.read_layout() if layout.title() in TR.translate( @@ -56,7 +72,7 @@ def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> Non # Special info screens layout = debug.press_right(wait=True) assert "NumberInput" in layout.all_components() - if button == buttons.RESET_MINUS: + if button == buttons.reset_minus(debug.model.internal_name): for _ in range(diff): debug.press_left(wait=True) else: @@ -72,6 +88,8 @@ def read_words( if debug.model in (models.T2B1,): debug.press_right(wait=True) + elif debug.model in (models.T3T1,): + debug.swipe_up(wait=True) # Swiping through all the pages and loading the words layout = debug.read_layout() @@ -82,10 +100,15 @@ def read_words( if debug.model in (models.T2T1, models.T3T1): words.extend(layout.seed_words()) + if debug.model in (models.T3T1,): + debug.swipe_up(wait=True) + # There is hold-to-confirm button if do_htc: - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click_hold(buttons.OK, hold_ms=1500) + elif debug.model in (models.T3T1,): + debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1500) elif debug.model in (models.T2B1,): debug.press_right_htc(1200) else: @@ -97,6 +120,9 @@ def read_words( def confirm_words(debug: "DebugLink", words: list[str]) -> None: + if debug.model in (models.T3T1,): + debug.swipe_up(wait=True) + layout = debug.wait_layout() if debug.model in (models.T2T1, models.T3T1): TR.assert_template(layout.text_content(), "reset__select_word_x_of_y_template") @@ -112,7 +138,11 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: ] wanted_word = words[word_pos - 1].lower() button_pos = btn_texts.index(wanted_word) - layout = debug.click(buttons.RESET_WORD_CHECK[button_pos], wait=True) + if debug.model is models.T3T1: + btn_positions = buttons.VERTICAL_MENU + else: + btn_positions = buttons.RESET_WORD_CHECK + layout = debug.click(btn_positions[button_pos], wait=True) elif debug.model in (models.T2B1,): TR.assert_in(layout.text_content(), "reset__select_correct_word") layout = debug.press_right(wait=True) diff --git a/tests/click_tests/test_autolock.py b/tests/click_tests/test_autolock.py index dca2a7926b..14e81ba39e 100644 --- a/tests/click_tests/test_autolock.py +++ b/tests/click_tests/test_autolock.py @@ -102,11 +102,16 @@ def test_autolock_interrupts_signing(device_handler: "BackgroundDeviceHandler"): in debug.wait_layout().text_content().replace(" ", "") ) - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) layout = debug.click(buttons.OK, wait=True) TR.assert_in(layout.text_content(), "send__total_amount") assert "0.0039 BTC" in layout.text_content() + elif debug.model in (models.T3T1,): + debug.swipe_up(wait=True) + layout = debug.swipe_up(wait=True) + TR.assert_in(layout.text_content(), "send__total_amount") + assert "0.0039 BTC" in layout.text_content() elif debug.model in (models.T2B1,): debug.press_right(wait=True) layout = debug.press_right(wait=True) @@ -149,11 +154,17 @@ def test_autolock_does_not_interrupt_signing(device_handler: "BackgroundDeviceHa in debug.wait_layout().text_content().replace(" ", "") ) - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) layout = debug.click(buttons.OK, wait=True) TR.assert_in(layout.text_content(), "send__total_amount") assert "0.0039 BTC" in layout.text_content() + elif debug.model in (models.T3T1,): + debug.swipe_up(wait=True) + layout = debug.swipe_up(wait=True) + TR.assert_in(layout.text_content(), "send__total_amount") + assert "0.0039 BTC" in layout.text_content() + debug.swipe_up(wait=True) elif debug.model in (models.T2B1,): debug.press_right(wait=True) layout = debug.press_right(wait=True) @@ -168,8 +179,10 @@ def sleepy_filter(msg: MessageType) -> MessageType: with device_handler.client: device_handler.client.set_filter(messages.TxAck, sleepy_filter) # confirm transaction - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click(buttons.OK) + elif debug.model in (models.T3T1,): + debug.click(buttons.TAP_TO_CONFIRM) elif debug.model in (models.T2B1,): debug.press_middle() @@ -197,9 +210,12 @@ def test_autolock_passphrase_keyboard(device_handler: "BackgroundDeviceHandler") # enter passphrase - slowly # keep clicking for long enough to trigger the autolock if it incorrectly ignored key presses for _ in range(math.ceil(11 / 1.5)): - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): # click at "j" debug.click(CENTER_BUTTON) + elif debug.model in (models.T3T1,): + # click at "j" + debug.click((20, 120)) elif debug.model in (models.T2B1,): # just go right # NOTE: because of passphrase randomization it would be a pain to input @@ -208,8 +224,10 @@ def test_autolock_passphrase_keyboard(device_handler: "BackgroundDeviceHandler") time.sleep(1.5) # Send the passphrase to the client (TT has it clicked already, TR needs to input it) - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) + elif debug.model in (models.T3T1,): + debug.click(buttons.CORNER_BUTTON, wait=True) elif debug.model in (models.T2B1,): debug.input("j" * 8, wait=True) @@ -327,10 +345,21 @@ def test_dryrun_enter_word_slowly(device_handler: "BackgroundDeviceHandler"): # select 20 words recovery.select_number_of_words(debug, 20) - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): layout = debug.click(buttons.OK, wait=True) assert layout.main_component() == "MnemonicKeyboard" + # type the word OCEAN slowly + for coords in buttons.type_word("ocea", is_slip39=True): + time.sleep(9) + debug.click(coords) + layout = debug.click(buttons.CONFIRM_WORD, wait=True) + # should not have locked, even though we took 9 seconds to type each letter + assert layout.main_component() == "MnemonicKeyboard" + elif debug.model in (models.T3T1,): + layout = debug.swipe_up(wait=True) + assert layout.main_component() == "MnemonicKeyboard" + # type the word OCEAN slowly for coords in buttons.type_word("ocea", is_slip39=True): time.sleep(9) diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index 7aaff04d2e..02e2b5363f 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -64,9 +64,6 @@ def test_backup_slip39_custom( # cancel back up reset.cancel_backup(debug) - # confirm cancel - reset.cancel_backup(debug) - assert device_handler.result() == "Initialized" device_handler.run( diff --git a/tests/click_tests/test_passphrase_mercury.py b/tests/click_tests/test_passphrase_mercury.py new file mode 100644 index 0000000000..23343d95f7 --- /dev/null +++ b/tests/click_tests/test_passphrase_mercury.py @@ -0,0 +1,327 @@ +# This file is part of the Trezor project. +# +# Copyright (C) 2012-2023 SatoshiLabs and contributors +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the License along with this library. +# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. + +import time +from contextlib import contextmanager +from typing import TYPE_CHECKING, Generator, Optional, Tuple + +import pytest + +from trezorlib import exceptions + +from .. import buttons +from ..common import get_test_address +from .common import CommonPass, PassphraseCategory, get_char_category + +if TYPE_CHECKING: + from trezorlib.debuglink import DebugLink + + from ..device_handler import BackgroundDeviceHandler + + +pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1, pytest.mark.skip_t2t1] + +PASSPHRASE_CANCELLED = pytest.raises(exceptions.Cancelled, match="") + +MERCURY_CATEGORIES = [ + PassphraseCategory.LOWERCASE, + PassphraseCategory.UPPERCASE, + PassphraseCategory.DIGITS, + PassphraseCategory.SPECIAL, +] + +# fmt: off +PASSPHRASE_LOWERCASE = ("abc", "def", "ghi", "jkl", "mno", "pq", "rst", "uvw", "xyz", " *#") +PASSPHRASE_UPPERCASE = ("ABC", "DEF", "GHI", "JKL", "MNO", "PQ", "RST", "UVW", "XYZ", " *#") +PASSPHRASE_DIGITS = ("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") +PASSPHRASE_SPECIAL = ("_<>", ".:@", "/|\\", "!()", "+%&", "-[]", "?{}", ",'`", ";\"~", "$^=") +# fmt: on + +# TODO: better read this from the trace +MERCURY_CATEGORY = PassphraseCategory.LOWERCASE +MERCURY_COORDS_PREV: buttons.Coords = (0, 0) + +# Testing the maximum length is really 50 + +DA_50 = 25 * "da" +DA_50_ADDRESS = "mg5L2i8HZKUvceK1sfmGHhE4gichFSsdvm" +assert len(DA_50) == 50 + +DA_49 = DA_50[:-1] +DA_49_ADDRESS = "mxrB75ydMS3ZzqmYKK28fj4bNMEx7dDw6e" +assert len(DA_49) == 49 +assert DA_49_ADDRESS != DA_50_ADDRESS + +DA_51 = DA_50 + "d" +DA_51_ADDRESS = DA_50_ADDRESS +assert len(DA_51) == 51 +assert DA_51_ADDRESS == DA_50_ADDRESS + + +def get_passphrase_choices(char: str) -> tuple[str, ...]: + if char in " *#": + return PASSPHRASE_LOWERCASE + + if char.islower(): + return PASSPHRASE_LOWERCASE + elif char.isupper(): + return PASSPHRASE_UPPERCASE + elif char.isdigit(): + return PASSPHRASE_DIGITS + else: + return PASSPHRASE_SPECIAL + + +def passphrase(char: str) -> Tuple[buttons.Coords, int]: + choices = get_passphrase_choices(char) + idx = next(i for i, letters in enumerate(choices) if char in letters) + click_amount = choices[idx].index(char) + 1 + return buttons.pin_passphrase_index(idx), click_amount + + +@contextmanager +def prepare_passphrase_dialogue( + device_handler: "BackgroundDeviceHandler", address: Optional[str] = None +) -> Generator["DebugLink", None, None]: + debug = device_handler.debuglink() + device_handler.run(get_test_address) # type: ignore + assert debug.wait_layout().main_component() == "PassphraseKeyboard" + + # Resetting the category as it could have been changed by previous tests + global MERCURY_CATEGORY + MERCURY_CATEGORY = PassphraseCategory.LOWERCASE # type: ignore + + yield debug + + result = device_handler.result() + if address is not None: + assert result == address + + +def go_to_category(debug: "DebugLink", category: PassphraseCategory) -> None: + """Go to a specific category""" + global MERCURY_CATEGORY + global MERCURY_COORDS_PREV + + # Already there + if MERCURY_CATEGORY == category: + return + + current_index = MERCURY_CATEGORIES.index(MERCURY_CATEGORY) + target_index = MERCURY_CATEGORIES.index(category) + if target_index > current_index: + for _ in range(target_index - current_index): + debug.swipe_left(wait=True) + else: + for _ in range(current_index - target_index): + debug.swipe_right(wait=True) + MERCURY_CATEGORY = category # type: ignore + # Category changed, reset coordinates + MERCURY_COORDS_PREV = (0, 0) # type: ignore + + +def press_char(debug: "DebugLink", char: str) -> None: + """Press a character""" + global MERCURY_COORDS_PREV + + # Space and couple others are a special case + if char in " *#": + char_category = PassphraseCategory.LOWERCASE + else: + char_category = get_char_category(char) + + go_to_category(debug, char_category) + + coords, amount = passphrase(char) + # If the button is the same as for the previous char, + # waiting a second before pressing it again. + if coords == MERCURY_COORDS_PREV: + time.sleep(1.1) + MERCURY_COORDS_PREV = coords # type: ignore + for _ in range(amount): + debug.click(coords, wait=True) + + +def input_passphrase(debug: "DebugLink", passphrase: str, check: bool = True) -> None: + """Input a passphrase with validation it got added""" + if check: + before = debug.read_layout().passphrase() + for char in passphrase: + press_char(debug, char) + if check: + after = debug.read_layout().passphrase() + assert after == before + passphrase + + +def enter_passphrase(debug: "DebugLink") -> None: + """Enter a passphrase""" + coords = buttons.grid35(2, 0) # top-right corner + debug.click(coords, wait=True) + + +def delete_char(debug: "DebugLink") -> None: + """Deletes the last char""" + coords = buttons.pin_passphrase_grid(9) + debug.click(coords, wait=True) + + +VECTORS = ( # passphrase, address + (CommonPass.SHORT, CommonPass.SHORT_ADDRESS), + (CommonPass.WITH_SPACE, CommonPass.WITH_SPACE_ADDRESS), + (CommonPass.RANDOM_25, CommonPass.RANDOM_25_ADDRESS), + (DA_49, DA_49_ADDRESS), + (DA_50, DA_50_ADDRESS), +) + + +@pytest.mark.parametrize("passphrase, address", VECTORS) +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_input( + device_handler: "BackgroundDeviceHandler", passphrase: str, address: str +): + with prepare_passphrase_dialogue(device_handler, address) as debug: + input_passphrase(debug, passphrase) + enter_passphrase(debug) + + +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_input_over_50_chars(device_handler: "BackgroundDeviceHandler"): + with prepare_passphrase_dialogue(device_handler, DA_51_ADDRESS) as debug: # type: ignore + input_passphrase(debug, DA_51, check=False) + assert debug.read_layout().passphrase() == DA_50 + enter_passphrase(debug) + + +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_delete(device_handler: "BackgroundDeviceHandler"): + with prepare_passphrase_dialogue(device_handler, CommonPass.SHORT_ADDRESS) as debug: + input_passphrase(debug, CommonPass.SHORT[:8]) + + for _ in range(4): + delete_char(debug) + debug.wait_layout() + + input_passphrase(debug, CommonPass.SHORT[8 - 4 :]) + enter_passphrase(debug) + + +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_delete_all( + device_handler: "BackgroundDeviceHandler", +): + with prepare_passphrase_dialogue(device_handler, CommonPass.EMPTY_ADDRESS) as debug: + passphrase = "trezor" + input_passphrase(debug, passphrase) + + for _ in range(len(passphrase)): + delete_char(debug) + + enter_passphrase(debug) + + +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_loop_all_characters(device_handler: "BackgroundDeviceHandler"): + with prepare_passphrase_dialogue(device_handler, CommonPass.EMPTY_ADDRESS) as debug: + for category in ( + PassphraseCategory.DIGITS, + PassphraseCategory.LOWERCASE, + PassphraseCategory.UPPERCASE, + PassphraseCategory.SPECIAL, + ): + go_to_category(debug, category) + debug.wait_layout() + + enter_passphrase(debug) + coords = buttons.pin_passphrase_grid(11) + debug.click(coords) + + +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_click_same_button_many_times( + device_handler: "BackgroundDeviceHandler", +): + with prepare_passphrase_dialogue(device_handler) as debug: + a_coords, _ = buttons.passphrase("a") + for _ in range(10): + debug.click(a_coords) + + enter_passphrase(debug) + + +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_prompt_disappears( + device_handler: "BackgroundDeviceHandler", +): + with prepare_passphrase_dialogue(device_handler) as debug: + input_passphrase(debug, "a") + + # Wait a second for the prompt to disappear + time.sleep(1.1) + + enter_passphrase(debug) + + +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_long_spaces_deletion( + device_handler: "BackgroundDeviceHandler", +): + with prepare_passphrase_dialogue(device_handler) as debug: + input_passphrase( + debug, + "a" + + " " * 7 + + "b" + + " " * 7 + + "c" + + " " * 7 + + "d" + + " " * 7 + + "e" + + " " * 7 + + "f", + ) + for _ in range(12): + delete_char(debug) + + enter_passphrase(debug) + + +@pytest.mark.setup_client(passphrase=True) +def test_passphrase_dollar_sign_deletion( + device_handler: "BackgroundDeviceHandler", +): + # Checks that dollar signs will not leave one pixel on the top after deleting + # (was a bug previously on model T) + with prepare_passphrase_dialogue(device_handler, CommonPass.EMPTY_ADDRESS) as debug: + passphrase = "$$ I want $$" + input_passphrase(debug, passphrase) + + for _ in range(len(passphrase)): + delete_char(debug) + + enter_passphrase(debug) + + +@pytest.mark.setup_client(passphrase=True) +def test_cycle_through_last_character( + device_handler: "BackgroundDeviceHandler", +): + # Checks that we can cycle through the last (50th) passphrase character + # (was a bug previously) + with prepare_passphrase_dialogue(device_handler) as debug: + passphrase = DA_49 + "i" # for i we need to cycle through "ghi" three times + input_passphrase(debug, passphrase) + enter_passphrase(debug) diff --git a/tests/click_tests/test_passphrase_tt.py b/tests/click_tests/test_passphrase_tt.py index f0d3ad248c..8a3dbc9cd2 100644 --- a/tests/click_tests/test_passphrase_tt.py +++ b/tests/click_tests/test_passphrase_tt.py @@ -30,7 +30,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1] +pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] # TODO: it is not possible to cancel the passphrase entry on TT # NOTE: the prompt (underscoring) is not there when a space is entered diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index 0d1f4e1c06..e37965db87 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -68,10 +68,12 @@ def test_reset_slip39_advanced( reset.confirm_read(debug) # set num of groups - default is 5 + assert debug.model is not None + model_name: str = debug.model.internal_name if group_count < 5: - reset.set_selection(debug, buttons.RESET_MINUS, 5 - group_count) + reset.set_selection(debug, buttons.reset_minus(model_name), 5 - group_count) else: - reset.set_selection(debug, buttons.RESET_PLUS, group_count - 5) + reset.set_selection(debug, buttons.reset_plus(model_name), group_count - 5) # confirm checklist reset.confirm_read(debug) @@ -79,9 +81,9 @@ def test_reset_slip39_advanced( # set group threshold # TODO: could make it general as well if group_count == 2 and group_threshold == 2: - reset.set_selection(debug, buttons.RESET_PLUS, 0) + reset.set_selection(debug, buttons.reset_plus(model_name), 0) elif group_count == 16 and group_threshold == 16: - reset.set_selection(debug, buttons.RESET_PLUS, 11) + reset.set_selection(debug, buttons.reset_plus(model_name), 11) else: raise RuntimeError("not a supported combination") @@ -92,16 +94,16 @@ def test_reset_slip39_advanced( for _ in range(group_count): # set num of shares - default is 5 if share_count < 5: - reset.set_selection(debug, buttons.RESET_MINUS, 5 - share_count) + reset.set_selection(debug, buttons.reset_minus(model_name), 5 - share_count) else: - reset.set_selection(debug, buttons.RESET_PLUS, share_count - 5) + reset.set_selection(debug, buttons.reset_plus(model_name), share_count - 5) # set share threshold # TODO: could make it general as well if share_count == 2 and share_threshold == 2: - reset.set_selection(debug, buttons.RESET_PLUS, 0) + reset.set_selection(debug, buttons.reset_plus(model_name), 0) elif share_count == 16 and share_threshold == 16: - reset.set_selection(debug, buttons.RESET_PLUS, 11) + reset.set_selection(debug, buttons.reset_plus(model_name), 11) else: raise RuntimeError("not a supported combination") diff --git a/tests/click_tests/test_reset_slip39_basic.py b/tests/click_tests/test_reset_slip39_basic.py index af85d43783..790e98bb6d 100644 --- a/tests/click_tests/test_reset_slip39_basic.py +++ b/tests/click_tests/test_reset_slip39_basic.py @@ -65,10 +65,12 @@ def test_reset_slip39_basic( reset.confirm_read(debug) # set num of shares - default is 5 + assert debug.model is not None + model_name: str = debug.model.internal_name if num_of_shares < 5: - reset.set_selection(debug, buttons.RESET_MINUS, 5 - num_of_shares) + reset.set_selection(debug, buttons.reset_minus(model_name), 5 - num_of_shares) else: - reset.set_selection(debug, buttons.RESET_PLUS, num_of_shares - 5) + reset.set_selection(debug, buttons.reset_plus(model_name), num_of_shares - 5) # confirm checklist reset.confirm_read(debug) @@ -76,9 +78,9 @@ def test_reset_slip39_basic( # set threshold # TODO: could make it general as well if num_of_shares == 1 and threshold == 1: - reset.set_selection(debug, buttons.RESET_PLUS, 0) + reset.set_selection(debug, buttons.reset_plus(model_name), 0) elif num_of_shares == 16 and threshold == 16: - reset.set_selection(debug, buttons.RESET_PLUS, 11) + reset.set_selection(debug, buttons.reset_plus(model_name), 11) else: raise RuntimeError("not a supported combination") diff --git a/tests/common.py b/tests/common.py index 1f734e643a..5011d91172 100644 --- a/tests/common.py +++ b/tests/common.py @@ -25,6 +25,8 @@ from trezorlib import btc, messages, models, tools +from . import buttons + if TYPE_CHECKING: from _pytest.mark.structures import MarkDecorator @@ -255,12 +257,16 @@ def read_mnemonic_from_screen_mercury( assert br.pages is not None debug.wait_layout() + debug.swipe_up() - for _ in range(br.pages): + for _ in range(br.pages - 2): words = debug.wait_layout().seed_words() mnemonic.extend(words) debug.swipe_up() + debug.wait_layout() + debug.press_yes() + return mnemonic @@ -298,6 +304,15 @@ def click_info_button_tt(debug: "DebugLink"): debug.press_yes() +def click_info_button_mercury(debug: "DebugLink"): + """Click Shamir backup info button and return back.""" + debug.click(buttons.CORNER_BUTTON, wait=True) + debug.synchronize_at("VerticalMenu") + debug.click(buttons.VERTICAL_MENU[0], wait=True) + debug.click(buttons.CORNER_BUTTON, wait=True) + debug.click(buttons.CORNER_BUTTON) + + def check_pin_backoff_time(attempts: int, start: float) -> None: """Helper to assert the exponentially growing delay after incorrect PIN attempts""" expected = (2**attempts) - 1 diff --git a/tests/device_tests/cardano/test_sign_tx.py b/tests/device_tests/cardano/test_sign_tx.py index 2f54787dc1..1842077136 100644 --- a/tests/device_tests/cardano/test_sign_tx.py +++ b/tests/device_tests/cardano/test_sign_tx.py @@ -21,6 +21,7 @@ from trezorlib.exceptions import TrezorFailure from ...common import parametrize_using_common_fixtures +from ...input_flows import InputFlowConfirmAllWarnings pytestmark = [ pytest.mark.altcoin, @@ -53,7 +54,11 @@ def show_details_input_flow(client: Client): "cardano/sign_tx.slip39.json", ) def test_cardano_sign_tx(client: Client, parameters, result): - response = call_sign_tx(client, parameters) + response = call_sign_tx( + client, + parameters, + input_flow=lambda client: InputFlowConfirmAllWarnings(client).get(), + ) assert response == _transform_expected_result(result) diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py index 8aaa4eb746..9d5bed0026 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py @@ -73,6 +73,7 @@ def test_secret(client: Client, shares: list[str], secret: str): _test_secret(client, shares, secret) +@pytest.mark.skip_t3t1(reason="currently broken on T3T1") @pytest.mark.parametrize("shares, secret", VECTORS) @pytest.mark.setup_client(uninitialized=True) def test_secret_click_info_button(client: Client, shares: list[str], secret: str): diff --git a/tests/device_tests/test_msg_applysettings.py b/tests/device_tests/test_msg_applysettings.py index 78f7166e89..1e55737bde 100644 --- a/tests/device_tests/test_msg_applysettings.py +++ b/tests/device_tests/test_msg_applysettings.py @@ -22,6 +22,8 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.tools import parse_path +from ..input_flows import InputFlowConfirmAllWarnings + HERE = Path(__file__).parent.resolve() @@ -364,6 +366,8 @@ def get_bad_address(): client.set_expected_responses( [messages.ButtonRequest, messages.ButtonRequest, messages.Address] ) + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) get_bad_address() with client: @@ -388,6 +392,9 @@ def get_bad_address(): client.set_expected_responses( [messages.ButtonRequest, messages.ButtonRequest, messages.Address] ) + if client.model is not models.T1B1: + IF = InputFlowConfirmAllWarnings(client) + client.set_input_flow(IF.get()) get_bad_address() diff --git a/tests/input_flows.py b/tests/input_flows.py index ec40b2f350..f945dab17d 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -24,6 +24,7 @@ from .common import ( BRGeneratorType, check_pin_backoff_time, + click_info_button_mercury, click_info_button_tt, click_through, get_text_possible_pagination, @@ -1307,7 +1308,7 @@ def input_flow_t3t1(self) -> BRGeneratorType: # 1. Confirm Reset x3 # 2. Backup your seed # 3. Confirm warning - yield from click_through(self.debug, screens=3, code=B.ResetDevice) + yield from click_through(self.debug, screens=4, code=B.ResetDevice) # mnemonic phrases and rest self.mnemonic = yield from get_mnemonic_and_confirm_success(self.debug) @@ -1329,6 +1330,11 @@ def input_flow_common(self) -> BRGeneratorType: assert br.code == B.ResetDevice self.debug.press_yes() + if self.debug.model is models.T3T1: + br = yield # Wallet created + assert br.code == B.ResetDevice + self.debug.press_yes() + br = yield # Backup your seed assert br.code == B.ResetDevice self.debug.press_yes() @@ -1355,10 +1361,12 @@ def __init__(self, client: Client): self.mnemonic = None def input_flow_common(self) -> BRGeneratorType: + screens = 4 if self.debug.model is models.T3T1 else 3 # 1. Confirm Reset + # 1a. (T3T1) done # 2. Backup your seed # 3. Confirm warning - yield from click_through(self.debug, screens=3, code=B.ResetDevice) + yield from click_through(self.debug, screens=screens, code=B.ResetDevice) # mnemonic phrases, wrong answer self.mnemonic = yield from read_and_confirm_mnemonic( @@ -1458,21 +1466,22 @@ def input_flow_tr(self) -> BRGeneratorType: def input_flow_t3t1(self) -> BRGeneratorType: yield # 1. Checklist - self.debug.press_yes() + self.debug.wait_layout() + self.debug.swipe_up(wait=True) if self.click_info: - yield from click_info_button_tt(self.debug) + click_info_button_mercury(self.debug) yield # 2. Number of shares (5) - self.debug.press_yes() + self.debug.swipe_up() yield # 3. Checklist - self.debug.press_yes() + self.debug.swipe_up(wait=True) if self.click_info: - yield from click_info_button_tt(self.debug) + click_info_button_mercury(self.debug) yield # 4. Threshold (3) - self.debug.press_yes() + self.debug.swipe_up() yield # 5. Checklist - self.debug.press_yes() + self.debug.swipe_up() yield # 6. Confirm show seeds - self.debug.press_yes() + self.debug.swipe_up() # Mnemonic phrases self.mnemonics = yield from load_N_shares(self.debug, 5) @@ -1543,7 +1552,7 @@ def input_flow_t3t1(self) -> BRGeneratorType: # 6. threshold info # 7. Set & confirm threshold value # 8. Confirm show seeds - yield from click_through(self.debug, screens=8, code=B.ResetDevice) + yield from click_through(self.debug, screens=9, code=B.ResetDevice) # Mnemonic phrases self.mnemonics = yield from load_N_shares(self.debug, 5) @@ -1695,28 +1704,28 @@ def input_flow_tr(self) -> BRGeneratorType: def input_flow_t3t1(self) -> BRGeneratorType: yield # 1. Checklist - self.debug.press_yes() + self.debug.swipe_up(wait=True) if self.click_info: - yield from click_info_button_tt(self.debug) + click_info_button_mercury(self.debug) yield # 2. Set and confirm group count - self.debug.press_yes() + self.debug.swipe_up() yield # 3. Checklist - self.debug.press_yes() + self.debug.swipe_up(wait=True) if self.click_info: - yield from click_info_button_tt(self.debug) + click_info_button_mercury(self.debug) yield # 4. Set and confirm group threshold - self.debug.press_yes() + self.debug.swipe_up() yield # 5. Checklist - self.debug.press_yes() - for _ in range(5): # for each of 5 groups + self.debug.swipe_up(wait=True) + for _i in range(5): # for each of 5 groups if self.click_info: - yield from click_info_button_tt(self.debug) + click_info_button_mercury(self.debug) yield # Set & Confirm number of shares - self.debug.press_yes() + self.debug.swipe_up(wait=True) if self.click_info: - yield from click_info_button_tt(self.debug) + click_info_button_mercury(self.debug) yield # Set & confirm share threshold value - self.debug.press_yes() + self.debug.swipe_up(wait=_i != 4) yield # Confirm show seeds self.debug.press_yes() @@ -1801,7 +1810,7 @@ def input_flow_t3t1(self) -> BRGeneratorType: # 1. Set & Confirm number of shares # 2. Set & confirm share threshold value # 18. Confirm show seeds - yield from click_through(self.debug, screens=18, code=B.ResetDevice) + yield from click_through(self.debug, screens=19, code=B.ResetDevice) # Mnemonic phrases - show & confirm shares for all groups self.mnemonics = yield from load_5_groups_5_shares(self.debug) @@ -2119,22 +2128,38 @@ class InputFlowResetSkipBackup(InputFlowBase): def __init__(self, client: Client): super().__init__(client) - def input_flow_common(self) -> BRGeneratorType: + def input_flow_tt(self) -> BRGeneratorType: yield from self.BAK.confirm_new_wallet() yield # Skip Backup - info_path = ( - "backup__new_wallet_created" - if self.model() is models.T2B1 - else "backup__new_wallet_successfully_created" - ) - TR.assert_in(self.text_content(), info_path) - if self.model() is models.T2B1: - self.debug.press_right() + TR.assert_in(self.text_content(), "backup__new_wallet_successfully_created") + self.debug.press_no() + yield # Confirm skip backup + TR.assert_in(self.text_content(), "backup__want_to_skip") + self.debug.press_no() + + def input_flow_tr(self) -> BRGeneratorType: + yield from self.BAK.confirm_new_wallet() + yield # Skip Backup + TR.assert_in(self.text_content(), "backup__new_wallet_created") + self.debug.press_right() self.debug.press_no() yield # Confirm skip backup TR.assert_in(self.text_content(), "backup__want_to_skip") self.debug.press_no() + def input_flow_t3t1(self) -> BRGeneratorType: + yield from self.BAK.confirm_new_wallet() + yield # Skip Backup + TR.assert_in(self.text_content(), "backup__new_wallet_created") + self.debug.swipe_up() + yield + self.debug.click(buttons.CORNER_BUTTON) + self.debug.synchronize_at("VerticalMenu") + self.debug.click(buttons.VERTICAL_MENU[0]) + self.debug.swipe_up() + self.debug.synchronize_at("PromptScreen") + self.debug.click(buttons.TAP_TO_CONFIRM) + class InputFlowConfirmAllWarnings(InputFlowBase): def __init__(self, client: Client): @@ -2164,7 +2189,16 @@ def input_flow_t3t1(self) -> BRGeneratorType: layout = self.debug.read_layout() text = layout.text_content().lower() # hi priority warning - if ("wrong derivation path" in text) or ("to a multisig" in text): + hi_prio = ( + TR.translate("addr_mismatch__wrong_derivation_path") + + TR.translate("send__receiving_to_multisig") + + [ + "witness path", + "certificate path", + "pool owner staking path", + ] + ) + if any(needle.lower() in text for needle in hi_prio): self.debug.click(buttons.CORNER_BUTTON, wait=True) self.debug.synchronize_at("VerticalMenu") self.debug.click(buttons.VERTICAL_MENU[1]) diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 3f12044979..9c0a2860d0 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -1,6 +1,7 @@ from trezorlib import messages, models from trezorlib.debuglink import TrezorClientDebugLink as Client +from . import buttons from . import translations as TR from .common import BRGeneratorType, get_text_possible_pagination @@ -51,7 +52,8 @@ def __init__(self, client: Client): self.debug = self.client.debug def _text_content(self) -> str: - return self.debug.wait_layout().text_content() + layout = self.debug.wait_layout() + return layout.title() + " " + layout.text_content() def confirm_recovery(self) -> BRGeneratorType: yield @@ -84,7 +86,10 @@ def tr_recovery_homescreen(self) -> BRGeneratorType: def enter_your_backup(self) -> BRGeneratorType: yield - TR.assert_in(self._text_content(), "recovery__enter_backup") + if self.debug.model is models.T3T1: + TR.assert_in(self._text_content(), "recovery__only_first_n_letters") + else: + TR.assert_in(self._text_content(), "recovery__enter_backup") is_dry_run = any( title in self.debug.wait_layout().title().lower() for title in TR.translate("recovery__title_dry_run", lower=True) @@ -97,7 +102,10 @@ def enter_your_backup(self) -> BRGeneratorType: def enter_any_share(self) -> BRGeneratorType: yield - TR.assert_in(self._text_content(), "recovery__enter_any_share") + TR.assert_in_multiple( + self._text_content(), + ["recovery__enter_any_share", "recovery__only_first_n_letters"], + ) is_dry_run = any( title in self.debug.wait_layout().title().lower() for title in TR.translate("recovery__title_dry_run", lower=True) @@ -112,6 +120,8 @@ def abort_recovery(self, confirm: bool) -> BRGeneratorType: yield if self.client.model is models.T2B1: TR.assert_in(self._text_content(), "recovery__num_of_words") + elif self.client.model is models.T3T1: + TR.assert_in(self._text_content(), "recovery__only_first_n_letters") else: TR.assert_in(self._text_content(), "recovery__enter_any_share") self.debug.press_no() @@ -242,8 +252,11 @@ def input_all_slip39_shares( if index < len(shares) - 1: if has_groups: yield from self.success_share_group_entered() - if self.client.model in (models.T2T1, models.T3T1) and click_info: - yield from self.tt_click_info() + if click_info: + if self.client.model is models.T2T1: + yield from self.tt_click_info() + elif self.client.model is models.T3T1: + self.mercury_click_info() yield from self.success_more_shares_needed() def tt_click_info( @@ -255,6 +268,13 @@ def tt_click_info( self.debug.swipe_up() self.debug.press_yes() + def mercury_click_info(self): + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.synchronize_at("VerticalMenu") + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + class EthereumFlow: GO_BACK = (16, 220) @@ -392,7 +412,7 @@ def confirm_tx_staking( if self.client.model in (models.T2T1, models.T3T1): # confirm intro if info: - self.debug.press_info(wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) TR.assert_equals_multiple( self.debug.wait_layout().title(), [ @@ -405,7 +425,7 @@ def confirm_tx_staking( yield # confirm summary - if info: + if info and self.client.model != models.T3T1: self.debug.press_info(wait=True) TR.assert_in( self.debug.wait_layout().text_content(), "ethereum__gas_limit" diff --git a/tests/persistence_tests/test_shamir_persistence.py b/tests/persistence_tests/test_shamir_persistence.py index 709599f9c5..6b919a018d 100644 --- a/tests/persistence_tests/test_shamir_persistence.py +++ b/tests/persistence_tests/test_shamir_persistence.py @@ -14,7 +14,9 @@ # You should have received a copy of the License along with this library. # If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. -from trezorlib import device +import pytest + +from trezorlib import device, models from trezorlib.debuglink import DebugLink from .. import buttons @@ -38,6 +40,9 @@ def test_abort(core_emulator: Emulator): debug = device_handler.debuglink() features = device_handler.features() + if debug.model is models.T3T1: + pytest.skip("abort not supported on T3T1") + assert features.recovery_mode is False device_handler.run(device.recover, pin_protection=False) @@ -132,7 +137,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): words = first_share.split(" ") # start entering first share - assert "Enter any share" in debug.read_layout().text_content() + assert "the first 2-4 letters" in debug.read_layout().text_content() debug.press_yes() assert debug.wait_layout().main_component() == "MnemonicKeyboard" @@ -151,7 +156,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): layout = debug.wait_layout() # check that we entered the first share successfully - assert "1 of 3 shares entered" in layout.text_content() + assert "2 more shares needed" in layout.text_content() # try entering the remaining shares for share in MNEMONIC_SLIP39_BASIC_20_3of6[1:3]: @@ -170,7 +175,7 @@ def test_recovery_multiple_resets(core_emulator: Emulator): def enter_shares_with_restarts(debug: DebugLink) -> None: shares = MNEMONIC_SLIP39_ADVANCED_20 layout = debug.read_layout() - expected_text = "Enter any share" + expected_text = "the first 2-4 letters" remaining = len(shares) for share in shares: assert expected_text in layout.text_content() diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 1a2dac17f1..3b8ed8375b 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -827,17 +827,17 @@ "T2B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", "T2B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", "T2B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", -"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "db31938e0b4969204c2411069f00ed8a314b31e0dec251cce371adb0bec1c524", -"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "21d405bf393cdb8e25817a8c9b893bd5a4d5c05fa9e1d33e98e6ba512c8c4496", -"T2B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "82f963d13f42b754f8749c2587466e8a1ca3843581ccda63fb846e1311ce6f7f", -"T2B1_en_test_autolock.py::test_autolock_interrupts_signing": "0ede63ae0d813a3d27fef17f3385c96111415932e3e525c7f421e7054e2c9887", -"T2B1_en_test_autolock.py::test_autolock_passphrase_keyboard": "44274f7e1e714fde732df8c48ffb3617d1b4ecf50d32256ce6f167f40fbd5e6d", -"T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f35d159c13b36c428e68969bbeb87fb4bdbfa6c21eb98985b5832849938d6934", -"T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "df7a17ab9cd2c617ce22a615e1da9bedee41f978459cbe103f2eecb8dfe8db12", -"T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "53b39b3ff0548a91e87ac3391462850e4f6060fa1a19ae873eca6fc5cce8dbb2", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "c87112a7182ce9d228bc5a42804817cc75f7c2427522468be0c56254bece89cf", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3f592583a7b834e67f28d085b21d93fb399ecc3ee3909a2a71306768766d9b74", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "78798921c30cba91c8ddf4258dbf6c177c550b9df48fb1e2a49985d9d39fb450", +"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a67277433c9ad7c59332178eb5f280711273eb8555c1edf40cc523896c2d4425", +"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "ad5313372d860f1bc3462da66e43b8c12226fc6b392ed48535c39f69f9bc4d38", +"T2B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "e73c51702985c2970a12ce1caa885cba2e7619e42dbcbfec52544af60b7fddfd", +"T2B1_en_test_autolock.py::test_autolock_interrupts_signing": "94cf82d8fa72992b17ef6d86f87d96f9bc6155ab7039f4c40e4d8bc6d7db9069", +"T2B1_en_test_autolock.py::test_autolock_passphrase_keyboard": "8237ce015dcfead178e0c4c050d214c4499eae172d7ac124c1fde54239d6363e", +"T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "8cee21fc74611c4ecdb3926314fc7da5fb41cdc11070ba64b28b863b6a55153d", +"T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "a4c1153fe9496a0d1db51a4c3afdce7e141e285fa512a26649f02016af928f94", +"T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "1338f82e478396a01e3bc9d8e36abc96122324d9911448529759a5005b0a251c", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8b7cec7f3e441410b3d8bcd5a44575b2483c83e033273622c2711882603d3693", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "8e437a64319cb0f66a5d9d2e5745abef54f5f0b323d82a9a26a4fa227cfb75bf", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ae709a6db3bb87e54a308d5c002a0f87cccdebd5d7e4079bc3b601c9043f4f71", "T2B1_en_test_lock.py::test_hold_to_lock": "83e2d055215b03150069d9fcb3aee6dc3f78a0d2bc43d8133425bf6b000c191d", "T2B1_en_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", "T2B1_en_test_passphrase_tr.py::test_passphrase_delete": "28468562292a54f2d8cc954129c6b1859c267bc5a9b94f9b406352e71a4c8036", @@ -849,26 +849,26 @@ "T2B1_en_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "502828e28edd8147781b1714cae83eea6f71a9820c30446d7e38eeb3a43617c9", "T2B1_en_test_passphrase_tr.py::test_passphrase_loop_all_characters": "e06ec53edbd9c3d8927e141e8a8e2af521641d0064a20b7953ad15f1a1d48f52", "T2B1_en_test_pin.py::test_pin_change": "4da53241f5751bcccbdaabeb8eaad3b201d7d8ab14508158432660862e2ac169", -"T2B1_en_test_pin.py::test_pin_delete_hold": "722b733995ae1e03496719bfabc951d832287bd041ead26eb05e536d39280122", -"T2B1_en_test_pin.py::test_pin_empty_cannot_send": "328da418bd62032cc1bc523712edae6a259982d25d5ca6609ea52c79283549b3", -"T2B1_en_test_pin.py::test_pin_incorrect": "0d3f92b0b39bab0aafb92deaf2a229fed6f3db2703e36c449440bfd2af2f5a8a", -"T2B1_en_test_pin.py::test_pin_long": "a9861a92fed71ddd42bb56a39f7c80100158e23145f1f433c06d72ccb14efaa7", -"T2B1_en_test_pin.py::test_pin_long_delete": "3833d4e71cc1c388bacb1ef4c9b7c8e47e897887b21603dec53ed4d02e381e4c", -"T2B1_en_test_pin.py::test_pin_longer_than_max": "fbd7c4034dcca37f07527e8864ab426970b7192c51a4965d0fc499d0eb6bbc24", +"T2B1_en_test_pin.py::test_pin_delete_hold": "a172ef00b79d79e7de7238bc29d1b7c9e34424a86cbe42865e59127fbc683f0b", +"T2B1_en_test_pin.py::test_pin_empty_cannot_send": "0f4cc246f9c1f0c81c3f6a7bdf7540225a8a075a878d31b145f6c9c449d8871b", +"T2B1_en_test_pin.py::test_pin_incorrect": "6a919d78d4487681b25e125bb36a5b3ea5f17dc68f95a74c220c3d57919935f7", +"T2B1_en_test_pin.py::test_pin_long": "f1c5957deed24a1c5f955712d87b8687565eab5660a5e6ef415a2566a4a93536", +"T2B1_en_test_pin.py::test_pin_long_delete": "b91a529aae7ab1e340cd38644b5323364b0623a640f5a7a712917436c6f38287", +"T2B1_en_test_pin.py::test_pin_longer_than_max": "1ddba1966d23e9677fb04bd6ab5798bae4fd36535129035716e07fd90f89df9b", "T2B1_en_test_pin.py::test_pin_same_as_wipe_code": "a1b6d8fd0a6bd6a5d2dd0a2ec75f57829fd9a532ab164e676f647e15db3e4e04", "T2B1_en_test_pin.py::test_pin_setup": "77763635ad3d67a3a821c0f340f71e7382391c657cc51a81ac3a24f2a4b536cb", "T2B1_en_test_pin.py::test_pin_setup_mismatch": "a7d0d19e7ba5e7a7cbfcb92c38f0f3eb75c0e19eb12fc953185a3564b20aacb1", -"T2B1_en_test_pin.py::test_pin_short": "a87619c455ec81763cbb133279f9e7fbb3b9a5a02c58e1da63640d51a4e107c3", +"T2B1_en_test_pin.py::test_pin_short": "79f02039db164cc349d186a04ed0fdc974879d009c44ca65f031c158b211298d", "T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "242efdbabbe39e4eaf7d10ef0fde8c3a499ec27419deb41632549c6412b79c59", "T2B1_en_test_pin.py::test_wipe_code_setup": "2924233cb43eba66815a860d720a0e6c399acbde23c9ea74234ca53da106f71d", -"T2B1_en_test_recovery.py::test_recovery_bip39": "632e414cf9886064a0c5a72cb8d676a2a3755f4db19e5c8aff1c3d2833374a84", -"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "6689558320ffceecb9c8a5eccaf1f83ab1e63f01d3387a580ec2c412f047286e", -"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "5f3c58aea5c8ad3c1c32c2fe303a0aa91b0805cce5d4dcd23473f72120109458", -"T2B1_en_test_reset_bip39.py::test_reset_bip39": "818f7de91f7d73b4e287c9f6bd205c95c3b568d0a269e1084ec976a1885d7037", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a2d1554ac43a794654cd80d339b7ff1e119fe22b10d63445e0345575e628e42d", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4202617c8e27ebc43f4972c924523d5f5f23eaa634b3fe17972841021fe77ab9", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f2ff5bc0106aaf62a0a664497426277b90041b5b172ce1b8d186c37d493ee4e1", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8a482fce2020e1a8e3fd5a831d0e1802aae3003e42cc205a08d7c917dd1b8eb5", +"T2B1_en_test_recovery.py::test_recovery_bip39": "fd055e526b66f7d0eb3b6968f3889eb4a3e589fd3700b6688e68ea5d6c0c18dd", +"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "10c4d76d4f636878540dcb6ba258a2d28489012298cf273af3808bcadbe38754", +"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "771d9bd01496b0fea72d5faca60fcc564e83d4a69e5fe02770238071dec7274d", +"T2B1_en_test_reset_bip39.py::test_reset_bip39": "6d229eb212360ffad2bc72154588ec82f699ae6d0cbbf87fa950dd4c8e2ea9c9", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5cd7eb5b96673f7f9dc066d2860ef4ab42926488a5117a2bc89caa667c3916e1", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cb815314c0607f0d6f678f5a9b9b99d6e50cbb670a83b3463ad2bf8635f9319a", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7140f98e80a66df3108ba17fac53bd7ca883c5965cf80451632826e4e0afb2a3", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "814a2a230bfd279494e4447defb66283594c7fe8be6ceb9c6e65ab641b75c6e6", "T2B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", "T2B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", "T2B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", @@ -2009,13 +2009,19 @@ "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "76bd7a5a65da432e4fbee1206016d2bee65413ff26710c8c11543bcd0d46b625", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "08de7670f18acec9253066980ee19d5a71e76eeb32986d73aa16019c964c7e37", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a70b2808912753c5aed47d3fbbe0174c225ff4c6c4ac8a53ba6f11701d5ff158", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "b78da55edb1ed1c184377d63df2ab06b5c56eef4edf1e0cd53fde07c3521de66", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "32db976ceddabb3c9631cb68ed3125dfc688dfc3e6095ea15a2f75629c2e3f85", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e8dee00273427ccc871dc79e55ebe0354b12e1b6bc18610bf7064a2c8063f608", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "60a98eb38fb81605f3a843f2d95ee7d55e643a232d2410106446ce5008f66db6", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "6cd3a36de98e8baac832278cf9341d741b343ab98ab7d4f57d0323bc87274f2d", "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2c92c69358fe2b30ab5196beaaa45344092d95e57de0214eb11013a5990cc397", "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "256bf6cfb44e0f1199d3e06d60e4d6d66bdb5fe2fea4440953279f36143d15c1", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "af55a065996c9f442fb1c4ad331c1c2f70e757038135634d427d8f84dcc348c6", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "55cc26da09ee80c2c70b66529fe2a2ca44e42fc5ab951f3a4747c50226454d39", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "b195e04fe8239f1fc73ecb71f3224ce5917067655be7cf161310147ae0cb891a", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "84a1e92f603a878b45f5565f729e0feb620df4b66273960360daef0208b8387f", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0f15671cbcc2c5b288b10c4b38a17890beebdeacb8015e08b8575cedfe22402d", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "b78b498a78beb7314f596b46ea59a4a97988b2588d2d4e666e98fd25261e4683", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6a6d57d7b4d1d5179264eef1ed3b57b5f6d095c9f8e108e1049a0512f8811103", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "0f25df5a45c217f284f7c873668793b8af2c42f1b6c7058e846c06f96ba97716", @@ -3380,13 +3386,19 @@ "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "6b5e849108cd9dc4c6dc9317f5ef850caa9de2b5269c7003a613fce20909c194", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "667b4c449a7530c0e30b5d52d9849bd0bc25dad6e6facd843d22a436c72bd6cd", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d87e15e862a403953fa95152adf31f3293b1b5a26a8492faee847d86017b472c", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "2c1d59bb0c00a9b9d6c221d75b20d1da68ae44d95df3b88f7519c08fefbe4f82", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9526bda931f043d7bd7bb8245fcb69c104a6c33e114c76f229f2130681d56dfb", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "da96726067ace03d9fc65b85ad1b4c4525fcecaea373e4e80f3fd7324c44baa8", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "a9edd95ba75804fcc3b080f993787c5fadfb6f955301d432391f9e3410ba9cc4", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2e89f062073f520ebff605456c02fddf403dfc9cecdcd4713ab9d764c2c14976", "T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e26b841f9f697bc1c981dad7c83ed8d1a33c02be9754edf1cc23bf48b6477d8", "T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "828c14baafb6b05762ecee30b860d5d06d8882747174e050f0baecef347a80c6", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5a5b56dda1730ca30af147c8e5f31c8f8c237b2fd2d57346efb86930a3f82fa", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "3448c150ed1882d622b6b14c061f4c1f55e857cd0342f87da0ae3b5e2fe9330c", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "d233aaed20e872ea427db762bb0810079afb07764a4b9fffad7c389f55bf2b0b", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "3fc47cc1b2b0dc68b2e5fb44b5f4294fac8e7a0acf651446bd1af680f0bb772f", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0c74a358f517f0469491dacb4d685cb9817f5f93f17b3b835e7a99e513c3b69b", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "5f0cb2e4bf2d598b4b283554fc87fabbfddfc35560a14a078654a1753b7e7bbe", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "16d383f7ce236bc1eb209f276ce2244e3793dc6a7219d7154bbe187b44465203", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1cd0a339ebac22a15a297785beddec0bcd9c344fc445c756d50ac5fc5f648186", @@ -3724,17 +3736,17 @@ "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "bf962269c96493db17d34978f049d3dba44ca7a311fbf53822046f7f1e3ec4df", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "bf962269c96493db17d34978f049d3dba44ca7a311fbf53822046f7f1e3ec4df", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4f275de439c812363140d3839ebddd9243e2bb34d80d02a487361148b2bbab71", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "4cf48d6bb48a9efbff9e2949d657fde4dea7ae9e92f47cafdfcd11d7765d76b8", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "db453154c6d8318befea7230eb2a9639fece5bdfd83c62fbb7a1e9195b77ac1b", +"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "64fb8501fd5c522084222d12a008938b44051131452af9efa5d354246a43a3b0", +"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a005bb59161fccac967b138bb4113b8e46163b45869b51d526d5ac004aa86d5b", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", -"T2B1_en_bitcoin-test_bcash.py::test_attack_change_input": "3e07e565d7626007cfd2a3be476ffd6efaabc6b835bee91f0decb62b838a9b39", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_change": "5bfd23d4e276c67071b8e2829c9445491053309c04b58256f8d4f789766683a2", +"T2B1_en_bitcoin-test_bcash.py::test_attack_change_input": "60d7c6b95cf7fd47bd19e9a34a4b9ac1c3c9e06ecbbc82a1f4c162cfe62e707c", +"T2B1_en_bitcoin-test_bcash.py::test_send_bch_change": "25b9c86a8da8e4ce984b4e51e8595d9dff82441f63e148cb6263b5e81a605b49", "T2B1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d71ca13edae80607527a670d8ea4f34b0d119a1a96de74e01e8ddaa0973603c9", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "f5a62283c4254cb10a7180a888957daf90e57bbeffff66704eee192c4469b044", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "fa268b2481cce18a041c8f8bf773f16cbfed6ad372a89c7d7220a2de3aa9042e", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "395635f081e0c9bdf3f6de9a1540d9211c3a1d68665d8ac13ffb8c236add0a3b", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "3957efb1b584f974d8b32523eadb4c18596956b38dec2c85005e7e4f0bf85593", +"T2B1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ccc768820a5ee76880567675af759c16eeb4790f59f64b680d895728bc7280a9", +"T2B1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "ca779e53833a7eea19bba69009b8bc1fe82cdf392834e98569abb3ed9c74fdba", +"T2B1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1237a09178ae3d403d995cc6b83d2da7db49da97cb9735d5bee7f305adf390ca", +"T2B1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b3f95c6fd8c659a9235f66c11644718ad0dbeedd78a880a20a3c197b81797b94", "T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "558aa84a9129920eabf7101b013d0d1fb56c89c66873f3dcfe19ec22472b22ba", "T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", "T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213", @@ -3771,8 +3783,8 @@ "T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867", "T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6", "T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "0f5cea13c694bcfc74dec9d857984d989b31a8bf0f215199f1db7a5a0e452f4f", -"T2B1_en_bitcoin-test_firo.py::test_spend_lelantus": "aff133d149549783adbdaa9563cb990af6cc5f8fafba3f50d82bbbd2765bb4ff", -"T2B1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "6ab906b521bb73e0725c3d0f3eb5a6ecf9f582853f4cd71672f73190f15fb917", +"T2B1_en_bitcoin-test_firo.py::test_spend_lelantus": "711c7ccd1ed628ea0b6a4cadf39eb1f6f15cd1081c93aadc391d5eabe5a36f6b", +"T2B1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "bc34cb343be7d62885f00c4c8f1fbe1696ebe8e53dab53c2fcbd97f5d623738a", "T2B1_en_bitcoin-test_getaddress.py::test_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getaddress.py::test_bch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -3900,28 +3912,28 @@ "T2B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_grs.py::test_legacy": "8851aab5526e4f26857d9f5c38253c3049dafc709c90663239fe035ad623caca", -"T2B1_en_bitcoin-test_grs.py::test_legacy_change": "c24250da19b0bd73d13211b264f7efd11c4189816257964a38abc92bfee9adfa", -"T2B1_en_bitcoin-test_grs.py::test_send_p2tr": "0c91f2782119205af71bf270f3867080ed5656eb7d60805c06106ebb1dd5e4c2", -"T2B1_en_bitcoin-test_grs.py::test_send_segwit_native": "8d1cdf1394656f316a87e2f490b228035de71427e38196af7fea6c1da360f9ec", -"T2B1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "3516574f2630080af30474774ba4d43151b4e144e6e3af146c27d7c5dc038b89", -"T2B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "644dcabb2d8cf624a031a2853f55af687b627d93b3fde6cc4b860f3dc3156138", -"T2B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "de03cf73f4249bd7b955e5a1d363d297f2fed470d8773d14ed46fc0f48a784fb", -"T2B1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b0e9f6967a6651ec71c1e5f3f54408c17070bff7dc53ad5d54ed1ccda48bc9eb", -"T2B1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "d25f0335f780f3ce9a82347c9e49c33e1fe587ce6bf73f53d3df14dc1b6968d7", -"T2B1_en_bitcoin-test_multisig.py::test_15_of_15": "d2362894ba0b1365f4b50c9fa5adf6242a9f71312e5a51295ecfcbda25bad273", -"T2B1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "43ef2841c1847f9eb425e3ba1cdba4a8880363889347c5fa9ba70e7654d181f0", -"T2B1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "23960e739861c482ed71941947f8709425d20fc6dd98cd15abb9eecd56b53676", -"T2B1_en_bitcoin-test_multisig.py::test_attack_change_input": "4a75904f94e42e74c7c7129cdb090a0bde4506c91116dc20535ef60dfe069cfc", +"T2B1_en_bitcoin-test_grs.py::test_legacy": "9e628d7d05f8343667985b281e77157602bf0793de690a7c71dbe2841c95a631", +"T2B1_en_bitcoin-test_grs.py::test_legacy_change": "fe6bfbfb610cbcedf779de69717eb6f1236055f9f3e8565222a9d5c09b1d52fa", +"T2B1_en_bitcoin-test_grs.py::test_send_p2tr": "bc2aaf6e10fc2faf4782c091249115633f9f2fcb4f741ab2aa4f61304c98724b", +"T2B1_en_bitcoin-test_grs.py::test_send_segwit_native": "4be744cb0bcc261764704d445a59c2c0ac579af8d019a951cf75df4b2aa13e37", +"T2B1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "abf631040549f6ef8695584b4071849af5fc7c931a77df785f7314df0d4525d5", +"T2B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "28dbc699c6c140e952e908b8708c1863fd6887c4d9ce37a706a576430c4bb463", +"T2B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1bf98959c43fde71a4a56f75eaac10772e22c563ae39a8ee31884cf6e0212936", +"T2B1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "1ee81415775f86e0d86d2013a27747f9c8ecf458f3440c958616fa4f30d2cb2f", +"T2B1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "2782a2a609b3221bbd257fa1b2a1c63250c859d977c773998167c133731b72f8", +"T2B1_en_bitcoin-test_multisig.py::test_15_of_15": "b13b38413381a038573978d7cded9f6797bbec83a96350af72b1ee547b6ba2f7", +"T2B1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "0d4fceca067d4d3f7e8e257826c216f0eca59ea012a688be9e00cede8c81c4d9", +"T2B1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "9b25feff7a8b56444567497c260242aa453196fd16574cd6908425864c864ff0", +"T2B1_en_bitcoin-test_multisig.py::test_attack_change_input": "407a65466c63e8f8d33baa69f9ed12da7798bc1b9569691cd1cc153594e2a183", "T2B1_en_bitcoin-test_multisig.py::test_missing_pubkey": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_multisig_change.py::test_external_external": "08a4cb41e2b55807b6d48741cb70f738ff1ce1d3d55d693cd3fccfad33ac2988", -"T2B1_en_bitcoin-test_multisig_change.py::test_external_internal": "83a561913853d3cf70cc2088e32b086453a009dde887887762c3076c127d2f9c", -"T2B1_en_bitcoin-test_multisig_change.py::test_internal_external": "1e6eaebc9072f131bca04c9d004b1d3f5993525235594bb8830954e5c8fa33d9", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "22e12387b3d05855dc757e3749e02604ff4cfd055c7385db73e2f968322a08e9", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "f3ce5beacfa792f601afc89f2b0551d36e3dce4794227a8f44dd77c674c75db8", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "d65c1194102f2cb8d5473a4681502e0f04826c11cd2e0e2deb9bcd694b50e757", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "2d655de9224ae23b3632c2d2d3a9f97477c8ebb5d0ff2e276678aae6bae4e9d3", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "337fd5ab84f2240326c28a09f7663010180641a1c130c99966c8b7d76b5d8b56", +"T2B1_en_bitcoin-test_multisig_change.py::test_external_external": "dfb5b1754351506d965fa6155b5c3979d9d3892bee05f4ab6b74141c9421310b", +"T2B1_en_bitcoin-test_multisig_change.py::test_external_internal": "f7120966d2ad4bc7d2770734f7e03949ac4cc217872c4d4b5ce174e1e774630b", +"T2B1_en_bitcoin-test_multisig_change.py::test_internal_external": "09eee59d2128333e5c5513900c2fc5f951c6ac0fd01e7eca1ef85ca737622abb", +"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "42ff1c411d728ce67bfc99114a0470990ecfab1b15b96a70ba6c0912e3ecbaea", +"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "ee0ec7ece2ce0e6309d601412d744d73aea972e64d1abd42eb776c082fe1c654", +"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "9952b428ad515e312f7aa1e139fa30dfd446332f558b68dc28c62584bb86f14a", +"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d9ff4a38b53436d655a8ddb65e4f7635ce88659424d9613947bfce96e5cd3d41", +"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "788d640afdbc15a5b72fa7a49229c4a51d8e5bf1add2119880a83450267a5eb7", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3f96244768b52da1808a6d47e4b4f5759ec59ec07041b9a7c37ee3d277382539", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "7bb78992b4d49c39e4f7379cc417a647096d5bd46ac1273ceeaae0c1de14d805", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1cc94552fe8aca4039e349e720667c09e336ec03ee8d2c38c9ad0a4dd4aece55", @@ -3950,25 +3962,25 @@ "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "c95bb7567e849d6f7f3a2727aa96e66f881a042f15e1a012816735186042a2ff", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7d18bc469cc81017aa6ce0609afe49344158ec01734c5cc58638d8300589763f", "T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "264b37c100c13dad663f56192c196189283cd55109eec26e60255b06d15bbab3", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6efc81302232a4d9b87ff3ae245596aaf0aeb97090d7f5844a96eb403a20de84", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "1a67b684e07525929b9183c0721aae43c5e2c61d028f7c63cd511bb8dc97bddd", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f303bf1b6a12f2c5543e57515c0654f7fcc651c9fcfbf03e9d570df27c2162f1", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "8320040b44fbdbcd3a72200f0061dd75190f6290884f37d363beb846ae3f8979", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "0cf5d19f80b1d74f2cec901a1a095700a94cb53e6f887da0c8d51ca23e5b584c", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "84c82c4c01a3ea675e6d8996c2ea53081f0f3b371408a3a1bf405530c6e4bfaa", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "192d26d28907315a36327ac77548bd5cf957e563c2e1bf11e7424e9b2322adde", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "3e96bd474e82d7e908c0a287ce76bb76261ba6a32a776e762ff33d14fc91b068", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "450d03c22c1252649093670e082d35167adb83bd67175d49240eee74a5f0170e", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "f2b3b16cbdf88b96cec3e151c2a26dcbd3724e1d93d60220eb4a2d7e4c5ec8b1", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e885031efd52320a7df07721f8a1c7f2004272587da75a715c3d3b303596cbfe", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "5684222d881d8562f8f80647411ad586a2dcf8a8714674c0a61b47ad24b6a437", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "97ea07aa32f9fb33610d4cd5c00917a1bd93675e1d3a54670ce51d84ebed76f6", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "3e0281d5671b48403f008df28bf23ac88032f81ba3ecff707a2de60fc46a2b56", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "4a87faf1b36cd0393652d1b7558afffc31241c79d4f2bb95ebd6e03d40c407e2", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "74eb29fad2b533226d734a9a9cb63d6da2d0ead3053c0dfecc3ae6dc48232046", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "f0e7784986c3360c5f96684e26ac41d6098bbe5379ad8849bb8a767e48bcf54c", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3715419c40f1e58f6f0209daa8773d3bcbcde5a6183aaacc4f88f9b1c6d521fe", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "d21c892d82711bc565026bc5de2efd0764eb1f595b47e29554e7f970b5170f6d", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "c7b296acfd5dad1d4d48e724d0ae5bf06d5d656e6f9943234e6803745d1d9f91", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "84666e2e64f0a5f8e64989404114d992b7db958c647b514a848e1235f110bf18", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "3ccd6f8f8b56bd524365bdf73fea1978ddfa20b1e38ec79b598546e2643ebd7a", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "1204e9c58645bb6999163f409cf151bf1b3051e96460157c525de2a0966e32e2", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "a5429736fcc6ca68bb56759b79e5a873259ccd7a714e12a467a33d55165df352", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "3c2306e1a0ff9055de93e1906161473142d2d0fb2a11c05c6aa50000b45f09d0", +"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "bfee7588a1d97517f06a4e81d4732bdd04c34402f6135d5899c33104c2636cff", "T2B1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_op_return.py::test_opreturn": "db53dd4ad174320b7c36cf58c294487db96a6a9c1608a41acd87424c1c11e30b", +"T2B1_en_bitcoin-test_op_return.py::test_opreturn": "ebfbc38aeeda098320ee62863bd17ff540d8d7bbc7bb1feac9f61b923a97a9b9", "T2B1_en_bitcoin-test_op_return.py::test_opreturn_address": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_peercoin.py::test_timestamp_included": "57bd71bfa6680712736b78aab1f3da95d1cfff2b369fb8b2d87024b43c392994", +"T2B1_en_bitcoin-test_peercoin.py::test_timestamp_included": "3321b69598953f1fd11e4bd340fed18c6e11e7541a5f4143640d7965f7213ac8", "T2B1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c1ded2fec294b01d6b2f1925b9cebd1c64533009ce6c3f02125be2f8c1935bee", +"T2B1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c62db31d936c385120737329a84ff9fe59267beefa9f6e00feb1e0606454feaf", "T2B1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", "T2B1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", "T2B1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4d6cd4001e91a85c9df6ab9d93068155e10085ca731f3f4eefbc282d0ff99ca2", @@ -3996,103 +4008,103 @@ "T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "fba47cd35892ac7c9a460fc12afb785f59613eb388d13cb660f335d2150bbeb2", "T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ef86018f0b266f2968275f843dfbaccc4aba05facf0c92ff432ef2f1d6fb18c2", "T2B1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "73d55c948994957a7af2aeb2927657fe39b1f1f5db35075b246512a4cc695242", -"T2B1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "b36f59ed6bae71e854da94f6ef9996038a7486f1d30832f524d250589a00f9bb", -"T2B1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "fc1a9e432095c3cfc81ad5804fd2203c64c4025113ac8006c59dcefda6d1b55a", -"T2B1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", -"T2B1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", +"T2B1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "4a6cc434f3b34b1873ae65e584d28a32719b968b08a0fa118b5c44d56013e232", +"T2B1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "1ad627b76ff80e5c239efc7e9573998c84d9e0bc078eca5d599ab470afb5ed77", +"T2B1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", +"T2B1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", "T2B1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "c90bcc09994ac08f91313f586b1f6abc9c85e4095473e29fe38884a94d756a87", -"T2B1_en_bitcoin-test_signtx.py::test_fee_high_warning": "72c8a80e97c5a553bb2dc1cd1f223f53de2a9405faf51dd9c458f15bfabbeb65", +"T2B1_en_bitcoin-test_signtx.py::test_fee_high_warning": "9e034c289bf43d29cb02f7c00657fc1ecffdce89e95ee21b6df4feae79ee8ff3", "T2B1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx.py::test_information": "90d01767ffb3f4640d120a76774c32886569e8cee87c9237b973342beed6957d", -"T2B1_en_bitcoin-test_signtx.py::test_information_cancel": "b9a12e03640234ea396535635cbfd59cdc93ce45cbe9a143a2e597b1a0b0c8f3", -"T2B1_en_bitcoin-test_signtx.py::test_information_mixed": "769558b0ce9d24249af7d0b816e50d0bf147c33cbc8331884937b0f9647f0e49", +"T2B1_en_bitcoin-test_signtx.py::test_information": "9a422a813f7c67ab09feb2e57d6ad3f2f593c90542f180f102ca35a20854d34f", +"T2B1_en_bitcoin-test_signtx.py::test_information_cancel": "717dcdb751baa4d40424b26b3e415a486ca0d515a4066b84e0f34c3cb139cae8", +"T2B1_en_bitcoin-test_signtx.py::test_information_mixed": "023808399de27f5ea3484c6fce6557f45aed44219453e7c503e28369acf8ecb1", "T2B1_en_bitcoin-test_signtx.py::test_information_replacement": "9521c2e4bf4c09cb010cc811014d21f92359e4d4d14d4f510a30f34e40973cb1", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "1938362c9873d46e1cb41812cb3f23f96a7e3c751669a8f302a7c6c8f5c572cb", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "90994ba4feb80539208a780e3a5602960e533f46f00a216e7cabd8c709b806d4", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "2d9d4993bfdb287b98a4c1afa77334f09acfd7f2f578487b6094b8d0bdaae234", +"T2B1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "fe0a2a515fc4e1397cd3539f4113975348a5c0236d7a7ca3a455af7019bf7f93", +"T2B1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "9f514e06a9c0b68ba1237b1b2c79680aaac37bcc7ed81259a8367e2a488812bd", +"T2B1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "de5a8a22439e8b63f12088fb766126c5822adba276ec5741c273115d8f230c5f", "T2B1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "a184091a70fedb8f1ef063df2155ca63f1694f85e135513e21d07f1a43c3e178", "T2B1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d35c4bd90f36e2a4a9018a8d11a3f146dc566e48ced294ce37bd68ed6f70e1ff", "T2B1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "fc870a46c971dd752958d3fe4fd127325af21b58f6c6a67a4cc45ab4e0e79e23", -"T2B1_en_bitcoin-test_signtx.py::test_lots_of_change": "4948852aed56d256ba41c4f3c34579cd57c4414d3c1c8a58318fef1a6d219ec7", -"T2B1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "d75d8177577a15e652c56c869395c2de0b90f35bd482ba13afa0f6d5ebedf7a8", -"T2B1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "c77674b7017aea81147e73d5737bbdae2084f6df531d4770ff88e6d112a8a7d1", +"T2B1_en_bitcoin-test_signtx.py::test_lots_of_change": "614aa861733ab58b5c3b2486d1b06122876600bef1750baf4e17728210b11945", +"T2B1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "dba35a756b4072d89cdd7f709cb2fb907d39524abc1a740edacc94aea6730112", +"T2B1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "2324937e046144b7aec7048abf344f60530e73fafef8904c058ebacc1815c95d", "T2B1_en_bitcoin-test_signtx.py::test_not_enough_funds": "26d52056f4225156037623a75c24342da3a4449e000e3d3a6374ddbce67d248e", -"T2B1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "fb91e24d8fde84794c80155b678b09bec2daf4d66c63c3d86ae004e5986a8a4e", -"T2B1_en_bitcoin-test_signtx.py::test_one_one_fee": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", -"T2B1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "07cefe264f4e2c0d8cb09a5d9ca3f98852ef45dcf2236c36423963c17b5f5b5a", -"T2B1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "5dab1d89347969b5a954f9097948407134881b964a19ba9b7a8e7ed153cf178a", -"T2B1_en_bitcoin-test_signtx.py::test_one_two_fee": "edec043a2ed9f078035821001a8039bbcc3ea73be8a2a5bd91fb40a8fdcec120", -"T2B1_en_bitcoin-test_signtx.py::test_p2sh": "a88f8dd6d1f1dbdbf010f793009a1f580029be7999dc6b2da2527a23394dcd48", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "ff264361d5a4d6dd44a4aee29bd474c3c33238a9c5ffdeb41fd451b237de1141", +"T2B1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "710471660bb0197968c7c0f4e9c0c440cfb7180418ab59285b1fd8e868f14a48", +"T2B1_en_bitcoin-test_signtx.py::test_one_one_fee": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", +"T2B1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "2931ec5af9ae76fca217ae0a3ca3876ce005a7ca97c293e2c123b6a20e85ffb8", +"T2B1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "a7c36e7d9f78d6d3013088a5d3a7b45606f3c6a8559184a4e21e33a3ca6fc7bf", +"T2B1_en_bitcoin-test_signtx.py::test_one_two_fee": "9ae2d30345a0fd77ded67ce9e0eaad31df430d7004f328e367f292c936e0194b", +"T2B1_en_bitcoin-test_signtx.py::test_p2sh": "fdfbc617bb8ce99e4a3915261cbe37dab4885f992d625129f6d4b4e43630eabc", +"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", "T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_signtx.py::test_spend_coinbase": "233e91efb19035433834af5f90bcff8688dd6bb829350e535f4af5eecd14baf3", -"T2B1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "26696705a7d6faf8b1be9d66dbb31aa132a038365632af0a7c01684a1ef40cdb", -"T2B1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "14858f08cf950bc206317c841e856510dea68e0ca5c17a98686ba3b891fc6238", -"T2B1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "c5c2c08d6f10ea75a800a243b7839fb6fd6f6bca5b727a2e8a8194935e08c2cf", -"T2B1_en_bitcoin-test_signtx.py::test_two_changes": "adb7a86357895a902688d9e65f470638d18b3663168841f42cad3bbed215bab3", -"T2B1_en_bitcoin-test_signtx.py::test_two_two": "ee8741bff119e6c1049eac69fec502d7434558bc28933275212c4b573d117de8", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "20490fea8715c06a0686aad914763bc8ec9ef6a5e86a01242cc109353ddb6d91", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "b9714014b218a5c37b2b716e23298351752a493798815afdd70718987ab9c57e", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "b9767163657841add95850f3831a337c709d40469cd615246d0fdb99711753c6", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "29b8a8baf48815ed37ab4f9d65a1585614f5d6c1b582d27c9575fc7215141b7e", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "d2c55e76375386fc82f2647e7955eaffa3f82f824efb557b1351163766fbb0ac", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "7b1a114e28d69893ee3d29dfd7c43757521aabe9fc36cdd6af7ddcf4d46b02e6", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "f3f31f1c58aeb37221a0d29125507b685f4e2e9c6c30555f01c0e4da61a7e426", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", +"T2B1_en_bitcoin-test_signtx.py::test_spend_coinbase": "7104203f2314660be25e38d3afc1397903ba5f75f2821a643d0d37b63dd42cf2", +"T2B1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "17c0938f0ec1c083c1de19f22c17dcd2e66a17e0f15a91443e9ac7590aa93356", +"T2B1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "fd287a9f28cb6f7805dc142397e97db43f01ef6c0e89d5d2b74e8eb262329cf7", +"T2B1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", +"T2B1_en_bitcoin-test_signtx.py::test_two_changes": "30a6eea8a7c8a0a12fb8e641fdf42933ea0d7d2a53c0e47e4432285173da9678", +"T2B1_en_bitcoin-test_signtx.py::test_two_two": "d1f5507be95e50211863e394a2562f226f27c81186456f29652d3ab47e2bc070", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b1bccbf8c9406da9268f8c32f9a58dedb4100c5ef77c8317a672d8e0cfd1c5db", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "45b82390c212a1703f538d14d8d3a2632e2c672080f1443fc4eab06b3f129f18", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4e5c9b0358d92655979ba18170bdd673e15407dcb3c075b55ba0ec665889e512", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "70abfc46abba14f0e06c1b197970ac0d8a03e12ca27a5294803b0ed773e163b1", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "8faebb59e93420021615b71bef6f25cfd1a58adc54440a40e3a5a5227d5e5a1a", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e0f9ecea7df742fbcc63b94b2f2981e00b0e649c1a01f26ea2672512fa36aaa8", +"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", "T2B1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fa651a3d73795053b95513f8e1384d79f696e46db71f20ec9af75e91f4f3a9f7", "T2B1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "10517bdbe7e530082ada2e0246fe11bce0dfdc741ff71b5ce0b1bb33d4d4bcae", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1f4c4d25e4038227b987aba7cbe6e998a0311331f451250938c81b7b86960222", +"T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1688871690cdf4df4f98d88cde523672923369f86f3bbc92faaae0bd5132c0ad", "T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "0f6b1ab9e3a80d96d4645a902edad4a83f384c774b78f4aa7fdb9c8598b15540", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "903d4d590e58e0e510873fcaced93241d83b4bc7d5b19a7b4fa7c6b51905f737", +"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "a891039e5dd65829aa8554277ca4e31f5a042e8dff282124864754b8895efacf", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c028e8e71c6ef7da9857f3696f383d339b6ec72d2cb71df49fffb0f56df71b66", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f95c5fe6cbad5ec7838ebb416cff4b77ca7f458d5dea033223e7dc6623802839", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "3e83b98315dfbfbd6c9d8fdefb86b9aa7e0537f1c869f76b64e7b70df09c258d", "T2B1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "647905b99af69da785bae3b1edea3a59413ebfcf13a7e04b8f87b4d90bdce074", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "b31ab64795b293d5de04fdb2dc4c5ce022e8adfd904ecc45e2271816bb7a9ec9", +"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "6eff2150f2f0fbcf3ce544396c81f5c8bdade9e4747203f712f6f67aece95c2b", "T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7e221e550fe2b75e67bb0610b9afda4a136ff8fd7b9134c08268ae51f527870f", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "52d2b069bd357af0e4aa5bfa6ad33a3f3748c8265f826ab30af37fee7634f329", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "504d0622ab197f19fedda7e016c0086319fadff7bfc51fdada452fb77d8df1e9", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7d7193ba8bf40762570849d311d5454da7203216362f8a3d4d99ba8bf1a4dccc", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "504d0622ab197f19fedda7e016c0086319fadff7bfc51fdada452fb77d8df1e9", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "8438332ce446acbadc7109f89b9b92048ddf2adde83a7292027042f4363f0acd", +"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "87fe458201367fc41d3c0338f8c4e77187abaadd211490b59445b89d275f94e9", +"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "3a186db5b25aabdaaed720a458ccfaba3b5d9ca718264f4bffab8116b8d1ed20", +"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "b74e61f40268e74a969aac293fe5e88f59b08c9800f64f792707aa45a346c661", +"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9cbba7dd4785d5db8beaeca7737566518b2a300292bffa94e46c3408f726aff1", +"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "b74e61f40268e74a969aac293fe5e88f59b08c9800f64f792707aa45a346c661", +"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ad98e655cc06794f61469ab68e2a984141cd7c2bf69cf29623d178ed94e6b58f", "T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c072f90fecb07a693c09038a26d44eadae88854df02e0537aa99f946d641af83", "T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "249e65809ac735eec03907514834fa347df6fa2f44d63dfc09cc89defd85885e", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "9c81e8183e299ca32345f6cf667574ff6dd946ef86211eef3551004c67679c4d", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "04147f6c0686415b540e46b8d0d3f449371c45a6c02f6ff65c3e3faa5e40421b", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "fff78cd833a5bb893566cb32d503e1de4485a827cdf1b95ee8cc79a774ac0bde", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "69c0dc1281d27c538baa617ae0c429365ae498a6c0e5cf5d3cebad23ed3ca1d2", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1bdefb37f5e565ad195d1ca61bc772d48276caab1965f96cbaf9f16580fcf5eb", +"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "44832d3bb1cc0a85743c73da1de20d97e35758bdeb346eca0d62ecefbd811ff2", +"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c1102ded23cd53b8c983962c052dca8cdaaff88982a2c2dc1c2d7c2841eaf9f0", +"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "cb85c264e20703fa89c6e592a8d1c884995d306a1be60c12173cfc41c9264faf", +"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "9ac715eb3c3027f9a5455812e2c2798830c618e1604f9e90c5c0c8f0f96c3dee", +"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "b5f892e61f507ef6b2947876d9b77af6c161359297c92744d5f208416696670b", "T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d1fad05a5142c0ef1421f19cc1a3bd967ea3468965536b65e723e438936ba5bf", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "63ff641caa87d95e0f526d5836910b3d3d0edea29753ecec235a6895f305d554", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "63ff641caa87d95e0f526d5836910b3d3d0edea29753ecec235a6895f305d554", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "63ff641caa87d95e0f526d5836910b3d3d0edea29753ecec235a6895f305d554", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "63ff641caa87d95e0f526d5836910b3d3d0edea29753ecec235a6895f305d554", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", +"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", "T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", @@ -4111,33 +4123,33 @@ "T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8bfba86abe6ddf1ebdb50310bb124f3b3906dacf7c5ea57f06f75c1570a9665d", "T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", "T2B1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "c175ec0da3d56c9be3a81a818ecc37c1422037d99083779b28608f12ff035529", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "8012ca199237c207abf7c1486580fa880cf8b0a8956788754cfb707035c80e55", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "f103b1a41cb576dc48bb58e6054766a3f23003c631314a57f86336f486c9b9ce", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "805e43edd2e618ebdf3c7048f84ecaf6e0c1ad4eadc525973673c39572fcffae", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "4733777903a39e9ff9c04d8a34cce77109f7ee6d526dffab432b6e41cd39a35c", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "57eb82ad09663331c93051b2bd414a7fefedda56aee170a3420f1dab9d79a231", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2865642943d3e1945cbb497a25967d134cf067db03bbbd6fce3a078b1264e222", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "28a2b5a2761e176786f1800d27655418bf9a7194d48d367d39898cbbe4d77a8a", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "137a9870f2fee1847bcaf0ecd6cbcfd69b7af23902b4230415b0b10ae6fbb2d0", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "4dc8ce2ca964840953b21bdf5e44cd10aadf93d6a9973206e87933dcdeefcb55", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "ad74f383c53ed6e271395ffb09c6e987b5c6d182618ee5ee362981aceac732ea", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "16ba7b01fdd5e486bce2f871bdd0ce66fa5e4fce8ed0338176a061e3df99ccf1", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6dc1beb3e38e3ca07ef2e4a0f6a5ffc8f10b11256b1c036f3e54ff06e14984b5", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c01e7ac5c454ff421a2e263e6349e3e16332113d8acb92175a30b7cc37f35cdc", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "b8a637d74434fa4460492aa8ffedde9e28f30a09967bd0a68bce035537264f13", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "4f578cb54ff29304b072e8272c43a6517ea7d3117700e45221a95ba756af1100", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a737a936ba1f3aeb5e1523af8a556c06ec627087e0e79ccedd6783db4fa78990", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "51460b3fc4bcfca864c174f6b96d5f43dd77ddf01f5baa0b2c71336472ef63aa", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "2f4ecc827daedcd23119078e152279adbbba3b641e691435114addfc29f3e829", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "79b2970f60f9a11a5711ddb53ed890abaef244e9104952cd46ef39c87a258326", +"T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "2c5fde3de954e7da0d19a669256c38482a1325cfd8f9cc933565c63ece53a383", +"T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "65f5cb6472d3a984ce48351fd64e8755976d0b565682c802f7aa6c48d4815939", +"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5acf5a8140256c5ac032c7d979c12f209f6348db06ff21f94b41851043a229e9", +"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f1efd6f85cdbe1137729bba1da137d8cf55ece9ca2bcfedadd3048b49fac9f7d", +"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "25803b02caf67d1a2a73c67c2d4c6520f1573b40ad5162270a6f89d021c8b2b0", +"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "be55d96d08c2c5d8096dca4a51821505490a82511dbf8a4a51c0cdc9449663e5", +"T2B1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "05e2fe9203a2d65a99b8cee6df4b14dd9b9983e2e7941d3be6483148cbd8064c", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0f086715760b3972fb8debe9faa16f61742fc82363847792359012f15c981a76", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "7e0d9076ab86bc04c6c31525d3635596f633e23e5f20a2e441c54477b6512045", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "b52b7151d0664b58646407b0ab693c4df0c8b80ce02000410b835550915451c2", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "6d7a607066384eebc8c3c7855f6ef8116447b85f1b87035ea0d827dfabaaa320", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "cf2bd2cfb9689fe351500236685ccff4195cbbf2036c8506c4efb6bc2223dddb", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "5ff74643c61544d5076abeaa2c4fb391e430bcb99f0e8975151c5228d7c39fb0", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "374bc22a6e14f72dff321a99218987e027c37cb001fcfac39011c56aae1876d4", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "280a1634f531c441e2ba9c67ce762f37d0e0dea4ae47149a944182791b81af35", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "f41b63dfc0b63e17bc3975fae538eec37bdf079c629e8be468a2a4167a39cf57", +"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "2a96c6b64f465394d5c8952915a5e484e089822dbbb8c467b449341a134d99c8", +"T2B1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0da93bd80a79b76261daceb0beb21a98753825b514a76004b926f6c89b6dd624", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "d812da9d79f87eac7ea8a13c20a40ae9580b2e91fc4c6e5f49c72ce5c1234780", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "01cb6d247ac5255e71848c23ca856ec1f4a792f27877d6f4bf4d2c746204ca34", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "285c46efd05d5634a7df0e7113ebc3495f8dc2a8556e0382c1b8b20af1f7d5f9", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b1a6aff58f9553f7d23e8a1a881f86b59b64453469e186753e52e40b62a264a4", +"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "5d586d436be4b7ae8590b0c010845629e902e0225d411caa01fdd1875ef33c7a", +"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "b74e50e73f2b83584e49371d10dfee5943bb25cdf98d4c3735034fd082f825b4", +"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "6dad20992d92c4609cfd97bfad6d47a755b531cce0e7cba50f014a95cffdb597", +"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4ccf5f85cd263c97c797103acd207abcfc34fad9c3b9c91b9c7e9ba706005d81", "T2B1_en_bitcoin-test_verifymessage.py::test_message_grs": "d300a6a3902b82cd6cb64d8ac6936bcaa187d429439b1fcd986512b71b5eef56", "T2B1_en_bitcoin-test_verifymessage.py::test_message_long": "a4cf297dcd18edd16ac83a09e688ef0e0b6e049e7b40d17276a373b67e45ec9e", "T2B1_en_bitcoin-test_verifymessage.py::test_message_testnet": "ad8d02f9ee21ca37bccad9954c696226b9b0912640d41a48e14ef7ea8c12df5f", @@ -4154,8 +4166,8 @@ "T2B1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "314a767de1949e7ec83868654cdf8f3940624ab95db558e932bddea52518dafc", "T2B1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d2b1c66934dab005f46883e0b4b60bb0d107f5ead5968c4b58ee9b5db41b6a85", "T2B1_en_bitcoin-test_zcash.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", -"T2B1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3dcdde5408fab5932d7a582dc69968c180cb5022bce02f2c9eb5ffa0d1e6005f", -"T2B1_en_bitcoin-test_zcash.py::test_spend_old_versions": "a06b4a19285610c38774283f39d1228bc89136e7f3d0efe9b866f24af44d89a1", +"T2B1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3c584107e8bf3eded84319552b046ed43ee1cf65bb1f9b16084b834a95396e65", +"T2B1_en_bitcoin-test_zcash.py::test_spend_old_versions": "4e39f54bcdbfe1bf8d33b590d5132bc05cb64f4c4078543800243d1dfb15674b", "T2B1_en_bitcoin-test_zcash.py::test_v3_not_supported": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "545061dc27940209d764ef8e128ab4ebf0c2d6bb87f5dadbd37931b895c1f1c7", @@ -4163,8 +4175,8 @@ "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "810e5d7133ec687da04d9363725fc4a6050c268be4d08d6cfa46fcdfb454c001", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "726bcf34af11d0a58da2a25294dd67673f684c39bf76cc9f0608b78930398ea4", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "c2dcbcfc84d26bc814f31d1006e7d40791570b082c4489d7a8838179ce5592bc", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d77dfea2acef5b71e875f513f4dd54e54ccc3f9de996aba73c8e6f819ef58216", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "3d8855f3163fbd92a8401c88beec77a333d040c4b520fd6a67ee1a682b871a04", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "b9e977fad552d471ca7180cd1e9c96b7b2852c382af96c4571c7763bc1baa6df", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "fa3bf46f979b8aaa43f8c51a9b5c2fbb12ad90062a9395ffa45bcef71d6d225e", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "bdbfc17421790c0092fa44f0526c10806fb2851614f0d6b5e6402249ccc02b04", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "9448e09cb83042fcff9906e3ba478d243bc87a38b06df5138ce21b0e5291cd7a", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "5674bf02496995d198ee16b62bd5cbf425acf325f3dfdc8b3f9b0a7161089974", @@ -4194,17 +4206,17 @@ "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4ab5d7c86398a5a61a8bd378f234999f147fa12c3f555d2cf090da869eb2777b", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7c0cec097064eca5ff9373b88bff58fa67775069fdc16fb4a8eba71f4f6444a5", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "0f3e255262332d8cc7c46bace39bb1dec26ce6b8704f422e8b7c554ddba3869e", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "aad312020098e0f62f7db9f70f421828fae9f1401a2883541226778fef5b26ac", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b2a99ec12c8b18048017ed6f21367bf4899c01d7732417b2a88057c296a856cd", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ba4fd380cdf293c7743cd353ba14617e991920270316f89e23321a16befcd2da", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "3d022f8c0ca045ea2c77c89164ac69cc53622e09449610d175844cd7d0456d80", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "9c0c1ecd1467b6641062dd8e02008e8f961add57f1af2814bca505c51076b8bd", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "ec0bda9bb9debd49a8b40f4012b86b3503fe5463a94e2cdf4791face058b354b", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "bec1ef99748992b59f7568e014804af26adf2c613d2c6f0c5bebca5ec98de86a", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "a4a477368f734d5384000dc656c69973012d15db57bc088ca138662e1bffb44a", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a1e7128e23a8e8613a83c5ab86671a3b97f025a03609cc9bb35987f425151fc8", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "6693459df79b809151670e3de8b5f656e25248fbf2bbbdb2bd25449883517c28", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "46e5b9f8609dcc957ab5f2874374907a8c95746d36672ab3ac967a5956a64c21", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "33de2fd9072fd80691ad68e7f40e9e19d3b3e6e0d065750d985ed39d1e355324", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "20d33357921dc63afe299f4dd430f1f410a1750ee421496e511d87efa9db9bea", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "10c9e76fad899d4439a1b7770a97d341d3234331d388ef5d4a67ea5572c592cc", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "dffccdc2b3c5bd68e7f2e47e1a8606936a519f73016f6ef92a66fc427babb297", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "6354afb5efcc82d91b2a2bcbe763197e98ce45caf4788b8f294a837729d13771", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "9359e1e0bc099ccc490478e433d437dc90abeb213af24e637f53b58e23556873", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "284dcb51422dada54ca2b0d5e68a80cb61ce66f4f782f9b71d53e97dbae428de", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "203de3e09bfd8e02815fbec2d2c9a32098bbeb22eb09ebffa22cedc3f1434e34", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "dcbb352ebfcf7364c5444d701d3e352a563d6bf84ce533b497280ba3a5793d94", @@ -4234,10 +4246,10 @@ "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d5abbf0109420642c7203a29c083b045af55e333f4f922b8fb099a840151bb42", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "38425ccf3b5dbdb2fbca4b6d7f416cda91668f6afc4aabd8b32172d51b47e85d", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "58e5de56b1ebdc0b3b46ea44ea7442b3b5d778895c6f6916b942ee85c4071e87", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7528c3b217a4c63a90a0c69dc5a660b9fdfad8d86830dfb0a4dfec747ec515d5", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a101349320f070754717eb397ec08f1922cd700e11cd4c54053ec9cc119c5e2f", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "305823f85c87d1574c5314a1d31146b979d724cbea3a8cbd949149aff69b38c4", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "fdb4d87e529fd665b1900469c8fc6c5c2901aca881d7c19a0180f4cc70cc0c17", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "25713220ac8bd3e6c90b9f7c36fc85a28fba54e904ec17ac8d848307e41d4268", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "55b0dbaf29b7b348a3587a74809de9a677546aa392abfc117db289e2626b9074", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "cded694065a901c83662513f0c94bcf806636ef07a782126f6ee7a749b404f77", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "eb371e2d23788611c1eed680f2bab0e87e7701d5790ced0c0014b4ffd737a985", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "41364122ea9e9e2d173707d82d02348a85abb382647f2b9f7a1e273c6dd13c50", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c75a822330f569d8afdfe02ad1e421171303c8d9fb3e9856bb93494a999030f6", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "81aef06c2f3331d7758db1601592c3ada3018132ed6792c1126d62a78166cfb1", @@ -4247,9 +4259,9 @@ "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "49766385de678f60d32c2d2917a9a56932a32def07f96f5a198ece0eb2c603e1", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "c768c5a9d0ea4e0d7158048e59468edd7b23d621479294b586fbd966af9c6c2f", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2037381a71effd407e166945821543ae05d7e45dd5b422676a1d05b4475aaa3a", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "59b5fbbbde955a3af5a936f883451c77e37e5b0bab81eca8c576d311b8e744b3", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "86ca8458a4076e916abace6c0de9a99309ef44f3f4f87fb79a17b05a436a294a", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "bd23891956561c04893f8cdacb1c1f5ec12427852f03c72020d90021548248a1", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c9bcffc76ffc9a8e894910ab70c92a2cebf85d54e78002852dcb479efa8dd641", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "6b1e477c7eadd8427270bcd691fcdedfa3fa2c8c748defb4033673def39767d1", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "aae820f9aae2eb48d499c6bbdda838ae1f0a78a11170d2bb12692665e45b3f04", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "633aed5ee504ab81f2cc9567dd76b70e9ce0a9affe903306e7347e33766144a3", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4e9fb93472cb3f70a9e5a64b146810aab506d93bc87b2dee6ef5c7713df21f86", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "599851b3275abcd3ee0632c8be9ea22b29e37e5b7f9ae8a8d06aa9ee02dc035d", @@ -4278,10 +4290,10 @@ "T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9facb40a3379b37d6611a35cc8412339a0f8a5f6c2343c9fd7feb353a6de8877", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "70609e795063e20a23b96e4d5ce2f982f4a2697c0fb4d3917b6cd0b8fac3a0cf", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "83ffbe43bda85acaff14fe20fbe34c368f0b2a215e6b70d85892310a2b9d17bf", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "860934db08ac2f4e8888d58b17f3b2f11a022d5b4cb11b3e373ea6bf809c3d92", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "70ef01a9d0d614ba2b3cfc82e1bd0988dfb83245a433aef5492ad12cd6ac4664", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b5fb80df287436f8d00477f5cd136a91ddc920ad40e8ee74024cb7e4d9ce7ae0", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0cb94d9efcadd912d882950bae55f27cef090d5392001299acf5c32a8bf0bc32", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "19f6de0c915cd19c968fe831abce1dbf827b1b5505618f1d0e79820cbcae2099", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", @@ -4346,7 +4358,7 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "b2515ad0d97aead646e466792d2f24b528f8a12ac65312b934bec642e1ae5622", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "bc34bd53f2f1dae3c391e5a5a12866c0cae82129c78bf084bce68418aafacae6", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0b84064d8397c8331112024747ac07c1ee98ce4f6611427e66c890be0cd4762c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e72dab3ff56d1f8669b23eaa591c642e9383b26acf32a0f98353dbc76e6921a7", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9f950f81d022ec9ab793850b2d1dcd430790ffd85a84271863a973ad6b95bcfa", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b1fa0c12a653e42a5bf09bd86f13605704cd1bfe25eb86b9849e316f96ccea5f", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "fa52a33cd2201fc5f9f21973cd54f3a4591ff6bb280c4c5e6a886a6025fa73db", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0bd7b51b49f660893e8778f47a987c9810771c5a945d5e924a5e240749f41e9b", @@ -4500,15 +4512,15 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "ac7c656cfb484aaf9596dae64402e15d4f76d92ca6377ffa534307829b1835ce", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "3d4190a337eacb84f9d1af9b738dc151dcb5e98a42cfce16a3fc3f7b96e022b7", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "af91468fe2519576e6352729dbc49d495746e12305f898f993159871420f0db0", -"T2B1_en_ethereum-test_definitions.py::test_builtin": "17052584cb918319f3f99c6d4909cfc451af7566c58bf9c726f90f227f3718a3", -"T2B1_en_ethereum-test_definitions.py::test_builtin_token": "6b5667adbdfa072e84aacecdc3a8569c0cd863adf7da83bf30496a433a2f1e44", -"T2B1_en_ethereum-test_definitions.py::test_chain_id_allowed": "2a93db16588c683daebdf76acd4ec51a8c5ab925c07ee6714a8da462e8e6b5b5", +"T2B1_en_ethereum-test_definitions.py::test_builtin": "d4d1e4bb44a8e2ea4ae4c553ba358ce7ed05384a23c51044d98241e8ef453fff", +"T2B1_en_ethereum-test_definitions.py::test_builtin_token": "0b21ba1d76f7f3c2be2e6dc7f8dbd3fa2f2a4d3cea7a40184c50ceee4d4fb4f8", +"T2B1_en_ethereum-test_definitions.py::test_chain_id_allowed": "aa817b5395d9b976efe83f8bce5e475ef841c9521e5884c0f53b20d1257bb405", "T2B1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "7e5c04a25d1da4b27bf0a2446553a4e77486b5cd310069ba8b4150a3108f8fbf", -"T2B1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "b26a1b9446c97beae91deef2d5e63d646115045955aa1c7ed3338e718af952d8", -"T2B1_en_ethereum-test_definitions.py::test_external_chain_without_token": "1b01618fa6a5bde22274cd7ea7c8ff8c35d5907a38ddb13841d8d4cd62a11193", -"T2B1_en_ethereum-test_definitions.py::test_external_token": "6d7c87fe57969e078ea58a6ad428e3cd7fd6e9c1e321f42d02645b58d06e8495", +"T2B1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "a13c4c52d514bf838726f7ebbcef6c9632ae820190eacda3c4672376c7efacab", +"T2B1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "b358529b5e7021c590368427fe7a16a5b9fe7f46eca0eb0e8c24551d0bdadab2", +"T2B1_en_ethereum-test_definitions.py::test_external_chain_without_token": "4e7e7725d7d93fb615d487154b58c3209266afd530343d9484ccc14ec1253531", +"T2B1_en_ethereum-test_definitions.py::test_external_token": "e3c871ab09e1fee3a54426177e0d20163edafaf34d667b113590af1c4155eea9", "T2B1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "33ea9e56a5a7d40e4fa8229225781d521984ef2a4d77460d98c99b81acb2dd08", "T2B1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a1bb2de5c72df145f463f02344854a2e9164db148d1b836fa8e6b3d751556fcc", @@ -4522,7 +4534,7 @@ "T2B1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_ethereum-test_definitions.py::test_slip44_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_slip44_external": "b33d9f06bfceeb816b7f1726513a8b689e4fe912bc18e247ae7052dd435483c7", +"T2B1_en_ethereum-test_definitions.py::test_slip44_external": "5bd9bfde35e6a8fd664c5c9eff0414be7ef01642a571659fee1966750ca4deaf", "T2B1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_ethereum-test_definitions_bad.py::test_bad_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -4584,95 +4596,95 @@ "T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "13d1772f9773e33e579bfdb015861b918ef873e69cd5d13ea86901501e1b17d0", "T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "a853f7bb2e397c727d57023ea1a1606b59473b6e10cfe0a8c45447bc20a3eddd", "T2B1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", -"T2B1_en_ethereum-test_signtx.py::test_data_streaming": "4556e3c62df6a500f332859b3a5d957d32e8c149d5cbd875d46c1062afffc433", +"T2B1_en_ethereum-test_signtx.py::test_data_streaming": "6d38b0e1201b640a925cf60ca1c7c6b98503ba36ec6038ed409eda81c86392c3", "T2B1_en_ethereum-test_signtx.py::test_sanity_checks": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "ac09fd0b3b4e8d6db3677d9e87bde3190fc571bde240f527995870862b599f77", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9992f33c834fd440acb00226b74f9020e5041ac8a27af3deeba1ebd4e49ee941", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "8434fdf9fd0adfd841fa784dd2473d2a0e76bc748e13f5e9b68e7ec77432950b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9992f33c834fd440acb00226b74f9020e5041ac8a27af3deeba1ebd4e49ee941", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "9cfecd6b73134e446836d7c0a6e632ecab31ce5c42430a29b2d16998f36ce505", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "9cfecd6b73134e446836d7c0a6e632ecab31ce5c42430a29b2d16998f36ce505", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "40a1c36d02106c8aa492229a6f8f68e677a5b12fb1b8bd86582b03dd8e56f99a", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "f3c4f2387165c86998ebe51a117e389fd9406334b7656a8848c7d4d5f5fc6d91", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "47cc2312c02c7a8acf5eb8e6817512b1a85313420833445411dbbe1c6e5eba30", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "af981e2b2e85c1bcc2d8e1cc2d443b7b91b5e3ef67d996771d03b72c2c75e68b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "2b531dba75ad94f2c6997f99141e05819bb424302a444c3c53c78fdbb3478432", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f6421c9631d9892a4c51618bf3f6409a5cc0c11689db67694486473b730284e5", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fcc7d1becaca1755e4a04624b5b0410d444650f46abbca7f974b5deb63ce3528", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "54a5f0390b5fd510098c943407815364cf54cf2569a84afacb27d04f453fe77f", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "27cd74a3731b0e501cd05a5738a8d78d150217aef3617849f173abe15af1258f", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ef1b1197c702b6204d05830e9641ab0a1e9320c0d227ccbfc753086b6f7f3ce4", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "db84ca81e494da462c42cdbcaae1342a119b7906ca4fa0dec3b7b6e077547433", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ef1b1197c702b6204d05830e9641ab0a1e9320c0d227ccbfc753086b6f7f3ce4", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0e004a5b98b1a040ebd22bde35de8dbdfef079571433b7e6342c872c18cd5937", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0e004a5b98b1a040ebd22bde35de8dbdfef079571433b7e6342c872c18cd5937", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "c64fb3c018b2325dcf374010bc551b0c5d0e4d46e8eb515e66c8846fc3584c05", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "81a3be88975ee9154098d3e8e1c4be8530ae1b55da7701105979e4cdfc4bc60c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "09cc1b1c3bb9a7c07e5cd46b99a46e866200d57339449a6051f08d38f6cf15a2", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "aa7e49e3765605067e4061ee05fe87fc6d216642530d06f949a0f855a30aa80b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "2b531dba75ad94f2c6997f99141e05819bb424302a444c3c53c78fdbb3478432", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "693857d0537f73c9a2173863910c31f568eb1b9a22a94159507c83d70f4c5498", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6b59cbb33cf6b9bd5ee15411698388887d972044cc07031259f3aecdb1cfb5af", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b31b9ca04fa2cfcbe89930b0f7870c3527ddf89eb2b1838ed45489c5f2252d3c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "c77f2f1488c37f2c97ff0db9e25b6f7bd44b9c6b4fba2ae224352d87987b1142", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "23184ecbdfc938c3dc53e135b9fba21b8425e23a7e45bb260b5df19b48d24524", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5183de5ad256d830f94f0278da3c8c1a47058f9ea3dde9714bbf15c5bd65c68d", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "23184ecbdfc938c3dc53e135b9fba21b8425e23a7e45bb260b5df19b48d24524", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "394e362bd6cf1a6c66265834a36f77b8cc9d4caf4b416789d71a9f423e32ed07", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "394e362bd6cf1a6c66265834a36f77b8cc9d4caf4b416789d71a9f423e32ed07", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "5c7a9a61fdeefc03fa200516624cc793c4cdcb5b9741a8b6db91d74e8de78ff4", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "61b0f44fcf2b5a0fa3fa99a3f1387d0c1e37902b38fdf9deb35339c2254526ea", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1a5d15cfdf17f4aa204b85a431e035a64e8693bf6b1eb7671c3845f53e50c2ec", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "966c4de17b9cd3a16f72801ac80edc49cb5ee7111a0e305c0fac4b329dab1cbb", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f47c5ba45c7d41aff766df1d3e2f3a67a01c661007102e3686ce49daaf6e6c8b", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "a6344aa0ee5fa54de993de7b770796531a26d7928917231bbef1b9bd846de2f6", +"T2B1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "becd1cf72cbbf78b1b73e7075b9f2e775587a1b48df32ff9413d92de1d57dc10", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "376c518549cdc2d429e5e1cb727d3dfb98c34453dc9c37779f5f3514ed54de87", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ff053d1856c67af52a039982a112f25c50f5a8900fff73a79a74e115080ede01", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "eaa26093b309d0f9d58327de6df76107e0fe96ff3aefe6fd1e761f74ce02b027", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ff053d1856c67af52a039982a112f25c50f5a8900fff73a79a74e115080ede01", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "bc2162643b6fb561fdc6830743fb29e7bf65ef2c84efb624bdf2d12f80625f4a", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "bc2162643b6fb561fdc6830743fb29e7bf65ef2c84efb624bdf2d12f80625f4a", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "6c1aac437606774c1b3ccb4d39f65f64029552a9bf60ddad9e9127e4a9f69c21", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "017d8dfc879072b952d478ca2ad07b517ae87931d4d9ba6a794af3501f19a907", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "02ff2867751453fce44248926b66f0b86120127b0d8bd7bfbdaa5138c348271b", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "966c4de17b9cd3a16f72801ac80edc49cb5ee7111a0e305c0fac4b329dab1cbb", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "542b5da607b0b9de781c2d2b44ebf531024ea9a6d69ab88bb600915952251aaa", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "7205121561dc02edc919030228c9ee2351efcf2e272575cc1d032f23b9747d5f", +"T2B1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d0cc4a6be5dab8a57e932b669e4bafa3f9911500f222bbec81b84066183eef6d", "T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "1825d4be360362111e38db28a788b2250b1a420037e87ad0c1a25d193a462f4e", "T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "bb93c331ddef290deec4079509bf93a6826162a01a46c2ef1dc07227239a3977", "T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "eb6e718ab30bf5327ca9105e5621adc003660f3d97fefc269464addb683a381c", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "76fe8b9b3783ded6c5fb91b536bfd320266386a0116c4565daf7fa51da3ef749", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d44259eafdf1a758284d5035f585cbd339480aeb105f9f25cadc14c80b670adf", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "156021a42336a1e56fa6e3ba6b8d3864990317294a0b0651997c23d07ff5a45e", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "5aea921ce854d21528f613879f652892cd57d9a52a66bd7503d150023d4e5200", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "d03990ae3ca66774abfa5b40a2cb85e27cf843a060c6e929543dd549c51f7539", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "227f7f93122e899bb8a610060c3fcfa80f29bec720081e94cec12aede13173a3", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "76fe8b9b3783ded6c5fb91b536bfd320266386a0116c4565daf7fa51da3ef749", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "dd636dc370183717241289fda7d405b5097f30fd02f7941c71d2e4c1c9268bf3", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "94b584a7fc07c5af5e512b6b86193293d04a5e96f0c7e0cc238c07d1aff1eb52", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "574be4108aa94a633e8a4a875ca7a0de3aad5428f844ce11b051abac48926dfe", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "8881c66cf6f9b77cdf0d0f3ac2281816e04113057df7a726c599041720a0bde2", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "df886046899c96f97f8dd880f3b11345da36ccbc0aa07be7194ecdb0f2b32f64", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8024b02bd732d4b723f643dd1da0d99c8a8de0a63578b8de7babfb05b7d595c2", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "dd636dc370183717241289fda7d405b5097f30fd02f7941c71d2e4c1c9268bf3", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "5ec441ee292a9034c7d859f216050e7af702dcc219ed16e4ca17352ae4784c9b", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5ec441ee292a9034c7d859f216050e7af702dcc219ed16e4ca17352ae4784c9b", -"T2B1_en_ethereum-test_signtx.py::test_signtx_fee_info": "b4ae728ff71c1e6112abbb0111b85b2760f957b677726b35734e63c318495408", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "fc801083241509eb6e3bfef1bfd1adc5cd69fd56a24cec7e2ddc2b21aad01be5", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "15485f333a892f2faff89fc37a9335cf81dac4f68ae24253078551de090e2522", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d8ac36251ba70ccf678854e71b6466f3c31d557d9ea0a3484344278a4aad898e", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "75636257b46e9fdbf53d5e7000b5acd8d0d49d0cdaf1d7af84c4cf60305dcef3", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b7a696ad0d6503b4ef3a77a5275651535a80b3fb926cba10bf3e97fef6ef9881", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "78fcb413b5cb7b8a7dea17e14c7adeb497abfb8ee30be1b3ee93056f3107aaec", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "fc801083241509eb6e3bfef1bfd1adc5cd69fd56a24cec7e2ddc2b21aad01be5", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f74a78c4567593bc4fb9c41f0b44580f5e5dc1861b6ee88550edf69f277a99f5", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "3f0d9d42b37363c1ac64dca606f537ced82bf2796c49abf4b64d0ca523296587", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "87c8076cf658f90ab06706ddd3e0250140aca9a773e8f6c7599fc1c981f26a20", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "299f367180088797a7391fee745f525d6ec009de18124644f029b96be4ff5189", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a1d406be62f545b408ab70f10c5893660a223e642db085c3d933132c868b416f", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "ee4043f63c7373c9dffe9a2020e06d8ebf96e5c0cec71638c1f7b29fe0a3449e", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f74a78c4567593bc4fb9c41f0b44580f5e5dc1861b6ee88550edf69f277a99f5", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "0244cfbf5e697e1891c114f25d233abf1c23e9bc6152f37cf156acfab4775b44", +"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "0244cfbf5e697e1891c114f25d233abf1c23e9bc6152f37cf156acfab4775b44", +"T2B1_en_ethereum-test_signtx.py::test_signtx_fee_info": "d339f7b8bfce09138bb235fa130eeaf3c25b6c7fc288c979dcf25c419f48608d", "T2B1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "263993daffe2a77a46a17d5b598aca84de52ba0e051e4cb5de5c524a48192ed3", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "91621327c5b0833d90e15f16eac95730cd58fb5d0d6f0c8380bcd2954363b8f8", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "7a6877e7778fa3edcf9cdacd2960a0034fa5aa60692c9cb894ae0a4d9803542b", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "210035b1a4ec147b3fd562ee218772accccbbbf7ba25874a6ab669d1dd59c0bd", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "313447d1c26f47757b8e3837bd3fe7067f63744bcfde624f85381163a9add129", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "fd6b4073dcd277d857e778ab670d6306d1ee185ec4bfb999a5c64fba2599d44d", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "73a57fa8f4f8bf34867c48d82f5a9c447aea3523499bc6a3ef5954c0040e77fd", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "fcfc5f884d268fbff7fa2328ba7795dc408660b99e7a566854c3a6856580e068", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "11c241f819250ca92bb7442ad5a28f3cd85314932d1f310f53efc85a3295d126", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "a9ab05144d0561d3bbd3b8fd76b457bdbbd14d80f971fb46d680b1929627e2f8", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "8220442bb4a7522e385ebcfe026d3a94597fe50eeb7bc0de379f0619e27cc371", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "5550e437344e1af32bf23e534fd5aa68dbd211ff5184b0f4e28511e2cb64f912", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "9a053042298eee9a089750eada61c44201e8fed8f4fcbe98ce8f8fd0e64655b0", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4836f64a30541ed506819660048de7b3d6f056744627326b638dfde4fc22ec7e", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "77074e90e59da95d4785668cae3681082a904b03a24d7a003673bc5964c93065", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "a365a8a494506752f32ac8d40951e8eef7d469b6181052d9435b43d44c7d6247", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "2db75af86e1e409f70e34e9b382faef2b626157d60017b9c0b65e4e68c2c7f40", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "71d76409dd01b76a80dda5043c9c62d04c22d0787ffea2c7a50f3dfeb49dacb7", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "256035e499a39dfe573985622d26603d1b49af3f2f22a9083aa11a94f2d37d8f", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "3875d39d3cfdb57a8e3e064569494c6cc5c7a518216f1d62eb2a660cf6aa4f5b", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "eed7427d857da9265ac64fcdc100710132d042c757992affa5c0ed2f70448832", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "2b1a90d7c0d17ec065949a69283968747e41fdce2da7e0e4206f05c9b78db117", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fa9720d4590bc1f8225e65b3684cd7e7dbabb0dec8fbdc0bf6b1b7838e673301", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "2e080079afd4018103aaa3cfb41b1895fc735241f7d7404fe10efb270a4cae71", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "5d88497e2ed730dcb70fecad095bcee9c63bca5964c6f213b18a621edb7c0429", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "ba7f6b20466639dbb0900749e0a9cdeae2c71367cfea7cda8445e642dbdd3ee6", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "ba7f6b20466639dbb0900749e0a9cdeae2c71367cfea7cda8445e642dbdd3ee6", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "2e0a01b90464925f68f9a4ec81eed3814d04057b7d6660235215780428ad8740", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "2e0a01b90464925f68f9a4ec81eed3814d04057b7d6660235215780428ad8740", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "87a16dd0c432c3913a3af0c4ad5453f475a093110cec012336f8682ae7a4ca50", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "87a16dd0c432c3913a3af0c4ad5453f475a093110cec012336f8682ae7a4ca50", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "c6abb73e85fdb2317f22f612b5e8fe30bb93ff6b751071e91b0cf22de24f6de2", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "c6abb73e85fdb2317f22f612b5e8fe30bb93ff6b751071e91b0cf22de24f6de2", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "af1dc7cc49b1e75d7c1b06767503e31a9f5fee4f4d0b426edf98818b4caf449a", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "af1dc7cc49b1e75d7c1b06767503e31a9f5fee4f4d0b426edf98818b4caf449a", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", +"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", "T2B1_en_misc-test_cosi.py::test_cosi_different_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_misc-test_cosi.py::test_cosi_nonce": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", "T2B1_en_misc-test_cosi.py::test_cosi_pubkey": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -4734,50 +4746,63 @@ "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "948831eea0cad4a965ec66efec3872336bba1b767532072b761e3793c83f4b50", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c4cd0a177633a8413f93e8cd822456d23e8b9933dde7de4d297bc2d3e5d1540b", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "426abf5d94dd3a9c8828244751db69653c686030ad453a51cc26390986929f84", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "503741df9a835f3959ac18e666f55899d5295629926f0d45feab92c452ceb8ef", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "829c12770a146dd2660f235e34ff8f3a69c5d39040720a9b1833b4d6ab7befd4", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "8e00ca95885d971555eb9cd0f72be49bad27092c2a8772ffa490ba5086b5fb46", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fafb486186b0d378ceb0f3ffd8d729cbc64c1e92dfdc0149cd3b5e61397a5b43", +"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ed9ae4831fd2ff2b8ae8dc1c9b753c876bb151d369ad0b5a80c84e00b01c1f11", +"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d8fa977ec0636ac4b2dd3a77e91dc0dec134f6dba607b39d0509e445e8b2d098", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2ad8812fc0845a049141ca6a3ffa424574a6c4bdd5278adc3aaa4a8d14a9ce17", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2a0afbb81f5c03c237e3d58ce761be9b0006ad365976999de3226559c0b1d5c6", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "317c603274cb8c781ecc341c5728158aa8b4716a278bf2fe58cea91455dc8494", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f2886d71bf78c5eca118e00f4fe0a25fe65692cb45baae8ca011798e9b7f4f05", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e90b6b0bd3a7a252a526b5d52417f002fae5394ad2ad350c8a998c302f122102", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "076f60e7d7e639f047050f35aff4361daccd8e91febdd41f47ff22b1b1376a08", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "daa2d9ee6d01c382e40889f3ce9fe246a26ffa3ffc39c23f3ecc2f42d046c706", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "076f60e7d7e639f047050f35aff4361daccd8e91febdd41f47ff22b1b1376a08", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "daa2d9ee6d01c382e40889f3ce9fe246a26ffa3ffc39c23f3ecc2f42d046c706", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "df8dad436439ff50da27388ec98a4ab338bba52ca1ddc2a5409ba3eb91089f47", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "2b169d72b69f3997c1050efe63c833af11c823feaaabb49ff81eb48bf7a46ee8", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9889229b8b229fb60f83c558d7ac3c5a9a8d40f2224f4f48df6b898a19142c9f", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "88eecf2e6f15f3c6f48bd1961a4351a44a63ed2384ba26fcd40dd66693532d42", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "9889229b8b229fb60f83c558d7ac3c5a9a8d40f2224f4f48df6b898a19142c9f", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "88eecf2e6f15f3c6f48bd1961a4351a44a63ed2384ba26fcd40dd66693532d42", "T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "71897579824a797a9f9c4f44a7067be8dd6a81a535af465fef21315fcfe153ac", "T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "cacbd98f9529935bcc29e7f1f23967c1d82bffde0e69ec6d9c9b63f0eaa50acf", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "d3883c968a0adcd07d9e3c7d6a1b42f0c861328f9524b43bee339fe5a617383a", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3014d0b49405f39c22387ed1a9ebada4cbfe786ad358624e7958735af91a7028", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "591fe9b8999ce0655807023f6cc1f4f8391942d578061c1868a4027f895a0167", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "3adc05c2ee6515cce8c477f1ec30497d3b963b0c06edb70f3b8b480b21e1e767", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f0937944d0c41f5898ce5d557b7306909b946f55fc7f3c8c1c3b4fb9a67d9b99", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3c493e217277214e62c01e13ec7ddb444a4f7a66a8f466f8be8ced290caeccb2", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d94aa28e5b33d1e214b421073808148a3f40fad4186c5aca6cd6dd42b53210f0", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3e02af6c1f85c6a03cb01445f109141c98b9ed39ea4769d7f9d922ff1843c9ec", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3fc2d8b18aebf5e92a09d9c576d4e185a2726bf5c0e1e50ce79a71328ee264be", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a62af119e91f7f6aaf6a71efc5ed99099eabbdeacfbe9108359db7f3e7efff5a", -"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "9af97c3b64680f33197e76237a6121d24b72ef72ce007787a63a85c60368e2d5", -"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "590aa68e3990a7d44d46bb2766cea6ee4c2aa8b8a969689dd6d3228cbe9df875", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "df20c07c51b91122e5915590868b9c46448bad977e01b03f2f6ff3f3de73caef", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "659273d8773032d841b7aa3dcfdead53f4f9b3c4c58c4c253f1851e37d798a44", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f75da06d2df450a11e405d1e25368849a233f622f07be17d2e2c0ea6ad51e99d", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "65a875453f7b6403dee740da68241bd669f311dda8bfadb7a714938e81df10e6", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "67c20b02774e08b793bc4dd084cdefe58d0319cc66476b33561d070084738124", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "33604ff6224895a896ff97cc69237325edc67eb5b9093bdd749e1178fd46572f", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "64e2f28d05f5c1d02459172193ae1956a056b2fcbcdcbfac4ed26cdf84cdb2db", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e70389916e7a58f87f709f002200ba54352d05b3715a4e9a8d616fbf709b51de", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "e70389916e7a58f87f709f002200ba54352d05b3715a4e9a8d616fbf709b51de", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "ced567f9a35dc5dd086c8d28b5f9f5721eb7267bfb436ec7d2ab55e96d133201", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "632d84848b4b38186e772b96d6a8c1137874363b5dd0ceb9fdaf8352333ed88d", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "632d84848b4b38186e772b96d6a8c1137874363b5dd0ceb9fdaf8352333ed88d", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "66a583906aee3754172d9670ba98169e31adc9b9bf61d199e0fb6b8e09f5a08d", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "46ca781d6deb347d6c06930d8c209aac515f6ba141ba78f0f110c232e23a156b", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "dfa670bf359b33f38e5279ee786465766d9bc6a8c0a510013e5280257051d0df", +"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "08f7755171d23b3157264db6408a7a2330e362a99a8843ab89b5c8b3baef2321", +"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "df5db3a22b80daa13cc5a45fe91d417a4d12adcad1cd6177976840c094929884", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "ca43dabc6954e3945a7a8878c826f0d2feae5b4cb076c8ba6aca9b1f66f294c5", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "bdc8d219d8127076ee309436abb238e1a255b676757520dac15b209b92ea2156", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9bea40efae135113c646798bde6736b74bc7c74d094bbb7b79ce7a06657d1f8b", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "d8ef8260f890dd4072d6a4652f6c7a38141e5ddef96bf4dc1ff7643e865840c4", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "5fb94deb7c2d55e89600363ddba3b40d4fc1469bdc755b4ef5afcf3b0c5c2a95", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "8ab2d7271579d094cddde9cc404734d9511bba5b0bb28ac55e8c9f5ce1420d3c", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "c059723025780fa9f24d93798093501f4840b47751ace37b7e2a515bf52e5601", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "de3723f8aebc4bf79442d729aaab802d1291bf808a868e2f1519f44f6b75756f", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "a68eab69c8e643754a227f175b04cc5ff96c7d4321d3ac1e9b693261985149d7", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "43d44475e0849ffe6d0bfee856e0c9577c9de743b1020f523f0504af0af77138", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ed4662a5df961dcdde60d11bdda2e8984f49de7be79b7dd5e7c184de265fc219", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6339554affe43322167bfe89d126f3d4e1f8c2b906e31bae2a443bd2e067c859", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "621d8346c71b4029978f524a766bda638878a063a56690e37289dd6fa3bcd1d4", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "35fa9d4a96bf5ace4efa3730cf999aaf246557811ac346bc69c371349099537e", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "4a9415af8cbc4cd317b7b88cb03586da6a5d31f37700d9ffcfa6233a11143403", -"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a1483d1109d4b1bf5c6d09742e48fa27ae8075840524173492bf189a61dc0da8", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d78301f59b62bdff0499b5b2ff4e8a87f3b43ba3a7d277a5b8e057b0a7dfeb20", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4105f6c9f5eb6a7c28d21fe3c1516816365c3c10dd8e835f0b87dab721703da3", -"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "20e02a5418df1fcd102d02676d7de8025f7a2358494f38d18ee4d2086d4a73dc", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6d413c9c2d3b8343e9855ff4e06d6f1f03c1e191cbd0ce2bcabe391faaa0df66", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7f616f5d2dd154c04eb5b9d551803d4e48027fbfdae46f6958f77253c285bf6f", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "4bce9ad590fe0ef79bf5383e3df48cf565e357683b5850800dbcf6bd3ceee742", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "92be50564a35de0df4cc86fc25f62a2ff3b17cb37ecc56e26494f3a843d54a27", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "922a97f340018ef5332ab169ef4f09f23c3366c42491ac33366dab3775496f39", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "7e7ee5fcd216cb493ef4eccb1b0aa6177691fa3aac8918d2d78882876796eebe", +"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "fdc5f93b7ac0c04a060a4caa7c92d31323f17f53c7233baef25389fcea305c96", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "83c0ef3f34fd725ffdf7dadb36f550dec6348c4381f50985c606122a44f137a1", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4a343aeca1b5ee46f1e150abd272a19ab4feece2ad7fb0b6a56a1808240e0f1f", +"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2d424a2536fe01274888c9a8a9d5abf57e47e0f9d18bb357a7d5d18d94d83317", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "1423bf6ed718b1adb3bfe43f8f01d4c0ec6a08f6f868dc709354ae8582ad9614", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9dcb63be474980fa21d8faf1fbf9cae993a5a85fd4ddc60e96edf0fce24c1614", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", @@ -4786,83 +4811,83 @@ "T2B1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "328a7774a1d35b851403b19a9bc592a59a1c61567b9b0624dcf65f9f02f744bd", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address_other": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b4baeb9d6662a2f813758455881aabcdb7aea7e5a1372f60e01f5c4097472789", -"T2B1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "14b4c7384951ee5a995a6a1ed05d214761a38b0c3d79c839eaee56d0bf518261", +"T2B1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cc89bef106ef0794d608ae0f6d7a3c33fd205c9d07e3b37e25a7a83b42624be1", +"T2B1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "7b01010692207e7f1b9db3ab371e79904ed97f7be7e6e000ff1ca7a705b4e7f8", "T2B1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "c9ecb1dd7770a1d68e92bbbcf7e146fd787494b36cb06ba1647e43bc24b23ed2", "T2B1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "fcf8d157b2e1deee981b6ddf538b3924ca8753ca8c410c4812815c267853af75", "T2B1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "22c066ca6b9035225ff9154b434f69d8a78d0e7e03e910d9f65965b9a36283bc", "T2B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a2f72fbad37e8c90b3f3d337ed43d63aaa3ad273c8dad43f8f35672c3e3588ad", "T2B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "0c426916a0a9066339fcd4aecfdac95d68080ed4625026a31d32630d8480a5d3", "T2B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "0c990ee79c73a98cd670c3d5a3601221d320b749b70b138ffe23e9a44589d97e", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "bcc7e4f3a3fdc979ca210b97ea32d2548976801393cf003ec301f464ae570382", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "8da0cc05473dd70fe8413a7d97f06c567f66aeca95ff1529f9006c4ccacc5fc1", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e7e54c08c699cc142201527e698cb661e61e5d23b769dfebfa596d3091b2391c", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9d66f3814be7d3fe061b266348a4167401fee3d53769d3fca52fd3211b6010e8", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "50ab3143a2509856620a5caa5819aba3d592f4952e4209d86ef73220dd95d269", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "085a92dd3090e97dfb29cd2ef4f4724c455fe88e00a7cbbd5bea961e475bb606", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d1ea989040664e7620d42f43ffcf5c5d8d86ba43d2546684292dd6ece43d5528", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "eac905750226dae074099f4f61600e07bdcf5591e1659fd835558197da20501b", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "f0e2abb8a4309e67e549d8d4c6e64d7a1c7568ef98954c6cf966dc760d989de2", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "1515716eb1798cde23c5588333a0885015bfa5f46fff5d01f3aea7c565d0a3f8", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "6fa579c59a758d0d0c8e5819936cf1e6af6fb202914ebddfb548ddd167fdbbd9", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "57edfed4a650f01c9c6ddf43bd66d6d9710b6bea1a0c73437112edebe3127a84", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "423eea3a9a5b3be39d44901f98dac448c76ac39e0b3b016fd1f57f830e414b69", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4b375a895fdf50e6f7859d26387aead816866880b6bb98de164a75ddda791d60", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "8c4fb38a0ecb455a77e7fd39d066214d2af50c44b90539b77dde30eeb073ce9e", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "84a9f449c9a1256d916eb1bc15438aa167cd6fba4d98e506cadba978f1ccc46b", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "702c3a3ed528e1f46ee8644b5973284970d09fd81be9e6a3eea7340a115fd7c3", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "451ec930c3a547df2a45b2b5e6e32b3a711b64bd28a9027443a7c5da2aab1bf1", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "84a0a603c236d0c1674378178c0914b8ee5ffa802283255f226a0d3b56f0744f", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b7f6f3a603e36cdd9d3ffd779a29805ccaebd9020377f295834037fb7e70d355", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0d806bf8bf76d1537c6be208a988b14bbe3b1e8c805d5422d71640f5ed3418d4", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0d806bf8bf76d1537c6be208a988b14bbe3b1e8c805d5422d71640f5ed3418d4", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "64554efe85ec3aff4c7e395546ee42ae197de135d473b95acfd1e35e962ea1ea", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "ba06dabfc3c835bc59f1c04e1e43981579b905fd035418e3b298d6660e4c7639", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "5e8caea49b53dc2cb93f4149b6e919573ccb2323eb7b9a15f84d46a724d5e2e7", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "eef88dd4b2906e14a9d3b021bf23baf44d8a886325ddd57bbb5b695cebd53941", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "d08b58172fd280f05135f012b41c8104e644043b455894f58b217277cbce5f0c", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "5bd7a06e28043893e978ae113ec0602d77854cc58e88da3921a5099e9ce83e5d", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "e17c8d11434566bd80620e839e5e9a403f6a34b2147e59624649f155a006e6b8", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "371ea1d5e2bf562146d6c7534d9c3557539a01c8df34f2a0732bc6d5948cddd4", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "de5d73a8fb3b305fca4c8c58ac53f2e37d83aaa89c46b0b945db89ee08287f8e", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "899752caaad474cd83e5733e91f087f6612968cfca2398e44f7054eff2848d9e", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "68cf2b6281ea452456b0c897e1ce71e49222938a61ee01fe0cf3178382608dfb", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "654dc38b6427e0e14e172527ea75e04c3583eb77c990ce13c2a59469f05e8de7", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "a437cab2755211ab6cfe7311b755e86c264e1d71fbf5ca8feb28c24c90146cb6", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "ec77ee378d1d825d087f255743f0889e1b4b4f31599d8216f1a99b4ee0cf518a", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "ec77ee378d1d825d087f255743f0889e1b4b4f31599d8216f1a99b4ee0cf518a", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "5a34a2fdb94294beac16e0fc6f1ac10f98220ec36c6f6d1a76e72b912e40a748", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "fab1d049c2534fb4698b80abcb9d65498a85692cfbc5584d4b0d680628f8c5d0", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "28aa0fc5820a9b20446e669370c6129c9d86b5701b7a64b89ab098afff042fcf", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "c0f1f7b540a824b01773e381281a881616b78dfd0831cfecf361c9285310f43d", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "dda1d3d5e1a7f19683f87d97f628544bf98d19d71bf9bfc2380acc0851a5a9a2", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "489a9e8bf3faf59137cb4c4ed181020b2e8f4c0e2cb0f9da7c6e499e470ef538", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "60e577d205836955c3a384a0c2167c47686b9b4104b664f7142d1a3ee7169244", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "51087bf66bd536df015238dda5173466d2ebad5eb69d38f7ebab286b0816aba0", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "1efcbb703b9edb470ebe90c53df5f15ff0b4cbbd3bbeb4d2ec6db4f733a65ab8", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "f32e3c1d0d9d42413fe92a93da9e2a31a163a61477136982e9c5ce84d43ad86b", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b075b98674a92a6bc1d7fc9c6f98a9b9339356fedaaf10fb78783089240841ad", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "069c644b49eba20eb8595461cfe4d484d2aa33a3895da54b1c76f226f120ac06", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "20646fc414445b55171e772180ce653aaced7f01334b598b6e40eacc7e999a21", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "63a76bf8aa15984b1e895f1489bdf1fc1e60f8ecc781698ef7a4bfaac168f131", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "1f6a75e3d9213b08ed0972e978e58c9baa14859d1e5b8ebd97ddac3e71076d5f", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8a3ba58408acc32be072fa057282b6fdfe2e7ed22aceade38b83b414030306b8", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "c52d071c1a94d85a352a2a44ffc6a941d8ed43bf0c92b198c57a8c01b523082d", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "8a148294707be782b73cb7cfa57a2f7efdb75687e7ad8431d0b2e3fce9a9ec1f", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "a1236a7da0932d4682148deaade49952d50cc21b7f9a1793ac7c43e1f6ca7edf", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "69f24f090ab42f1ec97f4771d96381b72ed399cc010756471d2ab5bcbf3f821b", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "2ec9f373935ea87255162491e82ad4e4d86ccd482957423fc477c2740dae2e33", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "62b0368aeff77ce839649cf1ef9157d6978cea1963ef647c87b8d29bad4f62ee", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "ab9a99b82998ad97f6adb2b398236122950b9e40036aee050109b92c54057532", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "f8b6a081f76d7e1004c81c347aafc074c944bfb02929d10d7993a34a20c08b83", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "6bfdc0af56356080201f73403e7e06a417f87e855141aba0f327f98108019082", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "2298d30807d3d94a02bc2735a0be1dc89da65140629a76a8bd629c15471019c4", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "9b68aa5b44e48839c229c3debcd07bacbb40d3cab92e2b97c9f4dcaeedb31595", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ea2fd2377008542b18e20752992574184fbcfc28b434de5d0a69703323c7f6f0", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d71c71049c7ef3a0e9b149f509f23e39ea1e4359f3b1d7d850d2e498bcfc4528", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "827210bd1787236c31b0acdac620b87c066bab0b36659e3e163dafdf694a1ef9", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f790a421c467bb1de98d842c9d292d25b81a1ada6695f40a8571d5fda4b1b23d", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d3b410e94d90f18195f32c09e98308cf4905e03e1070d2b524da7e1cea5153fc", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "fa3e17b0b68fd72f901e87b6744dec75174feefb421a47a75bdbcea1c763dd76", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "932a2101e27f7df7eb0de2cfa69a540e6036c34dc74d8515a6e0cbc7ee526fe0", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "333a85aeb8f4c10db10e2184b01bce9bffc76262974e2385a3213fb9db4a1e5d", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "de05e35f5a1ba2a5e0f49504221c0764d628a64d3af6a7539bbcb0f8f7f68b91", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0c249933815a2a135fc257c49eb27312dfb21b67856600374e3f259fc69b3a29", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b448e9673c0f6a044c4ba91aff726b59659c2fc3c51285c96d33e66450e5d7e0", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "780c3245e93f2b857d9f07b667a65461bca1eeb2b896344543da1ac86dac428b", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "3e8fc5fb075ae126d5f790a9d03f99bf7a3a0b333c086c4a4c23323a6f61f6de", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a18e26dacd17cd77cc0de16d66e3d5fc4e5cec73bff1bd1bc5f0ad3cb299a1c5", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "86c3b4226bd2de6c0d69ef1e35281de7e25a9957690251f9338f46735035b22f", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "8ac4578eaefd0e44ab559ccb439f5985f10e719a80d017cf0b7f87bed5c7ddc2", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "fafec7950b00549c02d9ce694269b639174bd0f5807c34901930797878cdfd25", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "45c5731ad31a7be98a82e7c34f8fd1a3e8a76337e0ba9ef94d0f537e39fb7cbb", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "193d0d5b2c04a1d840324df6a042d6e362dcc27dafc6765bec60358df104511c", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "7157319ba61c5a4d442220cffd36e68ae72936729ab58b725cee930c97dc4a47", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "eaa87e564e95a97ef90b642ab1d9e838983dc92d27cf81897b5ecf278c64da17", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "402279d3adabf342209a3e91893abe6e5fe2685383a3289c32eb9fa70d2e02c1", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2f3c5b1f39b4bb89dfdeabcb79a4a344eb4ca070a6865c2f7c28432b2a59d4c9", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d18553ed17c6955868380b11fe986f4afae56c7718b0c3d12fbab4def3a25738", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "bf9b7337e54782a31bdcf8c2af02644d112a9d9d714afa23acd311ee6f499c5c", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4e3cde6fa0e98176d0f0c1164f0046351d250c29e3d8991caf6e3c262990d8ac", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3674cdad06900e8531247101f80aa78c18eace46235b775d0b05c6d98c79b5a8", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "68eb9f66aef4c78cfbe8bb39b8152971ef39c8ffd0d3182580cfde63a1a60387", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "b7e52d46ec240c5d819ac8a9fe5bbfee7f5c2394bf6da97cf7072f03e732f540", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "63bc5863ca23c3f9a945be771a9f40bfd3e8ae87bd85a4abbb048c15f439e7eb", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b74a2a44f96da8fdc4ff00f06abbc15d765aa829f3e998bf518edd5f08d72a96", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4ee78c7dc15cf3581e93004b8eaca23417d9ed1ef5765456c061ce813421a441", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "626008749bba5d33e97d48a37d7ec70d89d90cf4618dde97f372e34a74984c62", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "5d3fff98fb036a3547b6c284dce35b029c8b343401374834b1a6f6fb81baeb37", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "59e93c9a1a0ee42ee6ca263a0a8e14d3a15602d50c3c0720b0bc498021dbb6d6", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "e013477a84b6b80a54870e6368785a7e08c23949d42ecfa5ec4c37d6b79278c0", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "3d7a9c91c98615d6a94d61727103a01d63c598639cd53dcda8521e8f6d0706ba", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "bbe5d292542064df519dc757e4ff43b760876500cd0d82cc5342f03422492b76", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "65c4fad22c7411742260a4baa3e1886afa310343e3c1c4aa09dd140dc8dc8931", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "65c4fad22c7411742260a4baa3e1886afa310343e3c1c4aa09dd140dc8dc8931", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "bfe7e58e072bf984975a73019af6344a8064a10b8b1f95f338231653dc212025", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "90fb93975f2d4289d0d13dd5412f87cebae62f97ab11ce48f9436995e7be5d31", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f683a18eda7d4489f48e64b4e54fc4ebd2cd26ab363b256bf1e8e2b5b7c0e664", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "7ced536f85c604810ea4ebefce41e2ed247cc99ae919d838d97897b2f30f44e9", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "905a91d39f919805c1fc3d7d31dadea861900f5fa9ff262a34ae67f743779a60", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3974167d03e0884b1d4510319dd84ff0de0386554426c0f6070da62d79c591b2", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "6e1a9c2a05df5b7d63467f2a887470ec2d0967f2b52c3ffb5fccc1237bb97cc3", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7333f9f51ba7c84367a8af8be5c7725fd2ca914704d59bdd2486648653fa00cc", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "272024f567f6802604cb79a8ea35c9762a40fa9d250d5ca467611ca408cb06cf", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "1c00f3411c4748304409c03ca8a13e8816742f013f8a29be765fbb4d5bbd6bcb", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b377d0a3eac1ca7e4d0f530418cd8a43e222095ab7d0ed99413e34368884e4c4", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8bfb106171deee9925deb098ca0d771ae2f8e34ed3bc50e857f9524820f6a00c", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c8aa13529eb28f864ffec81bbabcd5cf21e31dd79d99fa0e193ddadf14527133", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a7edb50fb2638950704d2cd1fa4fff9e56bc0f3774eb40989d700299861ff2df", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "7c33e2ae4b7672f620ef0d6845c25ee9761fb41c2d20776ac0c7a0eb4bace55b", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "96900f5f1871a25cdb8aa0dc2bad509eef780a98a61e48074a89967218da6f22", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "523d6efbcd9982369622c22689be6a372eab0fe24a9a31f8eea63ba171e580e0", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "6b9135c25781ad82340a3e85a16094944151c9dd619a04fd9fc127fa92e6623a", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "163287fb813dbad9c4638af9af7dc1835c9ffacd44cff4c30c1bf3e41dfb2a9c", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "2ed3a07f31c8fa5028400ba91e722c4bef7969099c3f77d725738545b9f5a2af", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "09e501884f2a977a778f9241bbee3d3b1527c7bfad7659454841d0e3787a6cdd", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "98cf6b34098cb30a6462c122450a4c15e1bb80fd6e7c2a53df426f1ac72a1004", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "aa34789bdc46246c5fc6753b3ae81faf86d7349ad4226147f026f6bca75dfa5c", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "8a12f4204a9ef0e6f725c46ce79adc9041edc6e2c45bcf779a253df5ec8279f8", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "db3539588ffa90933d2703d819afdff8e4b0270304d7181dd461af99d93f3431", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "331218a4b4cf09a4b6dad28bdbcea0b326dd1c8f3064fad99ae3834491b05f04", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "0da365c718bb57cd72ca9e5d1dda459edc5e48c456808ce75ecc82b85ff608e1", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "087c041d718e48e52919740b1c8dda391ac720c005cd66b43a2c28e8a75a07df", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d9d588a058f8a867702679caec302b3b0d28c74f39dedd1520e734b9f14460d2", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c32b2b91b052edb7e1fac746319ea5ef661f0e6ba69a59650f03bd27d8511316", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "3003a43b3deb679b61dc84960ef585f392591913a01054bb43f883c29a97d202", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d343818c5ad8b91f3a4c6dccedff98de9b3a5c90a0ff40e9ddbad50522848d3f", "T2B1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "525c3dc0530220043088724517981cc71932753a6eb3a84e420e007a8a2a12fa", "T2B1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "39f52231954401d77a679d00cc9e087fc773ffdcc09a2e346077eb8658fc2f00", "T2B1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "41756d94190e4022ce3d7bd9fe3975f7cc63cf809d2e73c7a210121041fede9c", @@ -4918,22 +4943,22 @@ "T2B1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", "T2B1_en_test_authenticate_device.py::test_authenticate_device[]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", "T2B1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay": "56e15781b06dd59696c03817efe7f8716c95d8b65fc0d3b0be3281a0901e6f72", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay": "72017c65dfad66972539257525df43f9675e459a3134fd5c4fcb724cf99cbc0e", "T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", "T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", "T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", "T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", "T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ef2f9b8c04ff989954c46942460c32e32125b7475c35e16fee2c15c121205a0f", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6d1ef42b15d88fb84c17b9b6830ee39eba964dd31978022c3dc0179bc04b2f45", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "94946c6e986f351aed3af94ccc67166e08906ca4fe0f37ddb43305e3e945198c", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "43009515b95e657ce19bcfc2699f6dac50fe18caa58e91eb8445a5e2d9d7053f", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "bf6116bcf72754cbb490330b4d629121b6c271c275133fdb5137630db2460978", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "14fc494814c65309be6a64d0c954758e3e4b459054b46025e4917a259e6f34e5", -"T2B1_en_test_autolock.py::test_autolock_cancels_ui": "1ee27abecb32d42ef8f9a3601a603e787eef338c49702f8c5e5bc30d4807800e", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0a3678f498d4dc42342329d458ed91a878986154817c137f6f81e4c1ed3865ef", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "621cccbb86c434ff5b58c7076efea8e2d2fc548df9d6e36549aa35b2d61a5893", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "d1c4eb5123ebed0df8121d2884c82f5619085f795cdebd3745f5e31e4e311bca", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2f8b69d4fceefcfd91d31316721f828df7d529c2d503bef3c695588705d4336b", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "32c7a5610dce4ff84b66177775c7d543f8ae7be4266365827781f44bfa5dbdd7", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "e2a398a02eddbd8f5c6d3f92f7422761873768640b939ad605355ab4cc95f36f", +"T2B1_en_test_autolock.py::test_autolock_cancels_ui": "1653b4a6efa55d96038fdcf9c3d7e805b04541cadf020e11e38a7885eeecd915", "T2B1_en_test_autolock.py::test_autolock_default_value": "d810436f4404563b1a3dda410cbda2f42969ef6bc746b85fefc6fce2fe835369", -"T2B1_en_test_autolock.py::test_autolock_ignores_getaddress": "c5e41fe24ab50d93b40d5ce91a2b4232cef22046ea0d6c0e01603b01a333ada6", -"T2B1_en_test_autolock.py::test_autolock_ignores_initialize": "c5e41fe24ab50d93b40d5ce91a2b4232cef22046ea0d6c0e01603b01a333ada6", +"T2B1_en_test_autolock.py::test_autolock_ignores_getaddress": "fae83f0eb74c41cd7d822b1514d71dba1c80d0c46f3dc2835e2fd9dab80995d6", +"T2B1_en_test_autolock.py::test_autolock_ignores_initialize": "fae83f0eb74c41cd7d822b1514d71dba1c80d0c46f3dc2835e2fd9dab80995d6", "T2B1_en_test_basic.py::test_capabilities": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_basic.py::test_device_id_different": "0abb37c5dd2cc89e22f3952cfec9191413873c9c291df8c8a43a7c89f23b5fd5", "T2B1_en_test_basic.py::test_device_id_same": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -4941,11 +4966,11 @@ "T2B1_en_test_basic.py::test_ping": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_busy_state.py::test_busy_expiry": "0cff54da20c3c70d5b5de75a45fc265b29683fe322ad498f947656118691eeca", "T2B1_en_test_busy_state.py::test_busy_state": "7bdbfa392d76bcf551685c356042ffe4463538e61e194c1381ad0eb70ef0112b", -"T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", -"T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", -"T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", -"T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "41b9fc37f230520f9d94df226ff8433822e56ea4276a31ef99171a774e477045", -"T2B1_en_test_cancel.py::test_cancel_on_paginated": "79f025ebfbdc5a81dae1385b17d2d802280063479c8480fa5281734fe1542385", +"T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", +"T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", +"T2B1_en_test_cancel.py::test_cancel_on_paginated": "3091ac71ff4b66b9f0182122cf29539eb424609570cf4c8ee720f8eab5ca3b83", "T2B1_en_test_debuglink.py::test_softlock_instability": "cff029b728b242ec07f405a0fcd12a77212f0a28e9ec14f1b9e2db1b63293783", "T2B1_en_test_firmware_hash.py::test_firmware_hash_emu": "07a18c9e52c1a1d865fbe57960ebdafaf1f32a3d426af991469680000cbbe0f4", "T2B1_en_test_firmware_hash.py::test_firmware_hash_hw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -4979,19 +5004,19 @@ "T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", "T2B1_en_test_msg_applysettings.py::test_apply_settings": "e84453642c927b2fe15325a109672814103f2f94d7b5d70a313d921f21b88a37", "T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "5775d63130fa4646263cd26d47bebc87691344dafd9e849c9fa361a1ea7f7e6b", -"T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "caf5f9733414c8edd4f13800250d7d3d0d3a4012844b826ed314db5c608508eb", +"T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e595040cd60ac0e5a31a768dcbdb517c5a8ca28e02707ccc35be95a0e516ac95", "T2B1_en_test_msg_applysettings.py::test_apply_settings_rotation": "28c4463b15fdd9d455f2bd6f229fd22432bfe9ba48606602e2ff637b1bc7a6bf", "T2B1_en_test_msg_applysettings.py::test_experimental_features": "0ac7ff5ebcc73c8922545b14e8584d13199ea0c5d0712189b16e24ded22e3c17", "T2B1_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", -"T2B1_en_test_msg_backup_device.py::test_backup_bip39": "2f3fcd299c216b6168260b4daca23aeee8c0b088f0e2aec050a949a2119e904f", +"T2B1_en_test_msg_backup_device.py::test_backup_bip39": "68eefc8252a136424c3e39ea3fa28921caf1ff0992c460688a1a11af196a2c88", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8672475749cc6b3b1f066d8d31d1ad2ea0fd1ee677d7e97ce6a4051619bbd85f", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ed56a1b0646b43317518b8ee0cb5fe99229e733b2aeeab0daf0d137e33b414f5", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5a0af939f74afec51385aae6a181aa30a816c86226c1fe3636e0b8b9eaa045cd", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "be8fd80321cf86569dbdd9a42bdc0d2d433db5d52a179bc1e1e013aaa4b0da63", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e2e49dc687a2259f9a6beb258efe57e894f7f4cdcf9119053a90e46c3c34e77e", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "3c324970c7c126efc4cdde138b156b375a8e4e0aaa0efbfd81bb641a3cba2b5e", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c207d4c2ecee8f3ee811e921c203cb22ea47c30f9515634e02e90c0ac10a0101", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8742748b1e7219edde7f86ab06f7f241eaa35e8b5de895751130c99a3db7f3cb", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ac501c19e3901a16577946fd165ed6cad15f46e0172ae3d95866b558e151288d", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "81d5804eb846dd513b42b684ca6477841a673e81dd8a30dabf8c55affea216ca", "T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", "T2B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", "T2B1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -4999,24 +5024,25 @@ "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "0afc4dafaf546cc71104a6c4d27f686abf874468a33400191892e07bb741a23a", "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "d3f19f4a02a571d07a410ac56b92e79da7bced18d91b7e788290211c6cdeb6d0", -"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "5bae235ca89bf1c0da13620837a8a27209a10a6861c61709ae2becb9ab27d0e4", +"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "b14b34ff4912c6815325aac6d556ef1042e0fe58a148d317b547f20d979b39ab", "T2B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "0435985cdde633a543e80a88d84100bc1cf11150c60a2619035a64285a3420cf", "T2B1_en_test_msg_changepin_t2.py::test_change_pin": "a218c9db7f5567458053cf075cef32d3afaec724111c3ba9f23d53b468d4b0a2", "T2B1_en_test_msg_changepin_t2.py::test_remove_pin": "9e69d8a6e72383d4b48af12340790bef5e55ed77821f80c7ac959522885097a8", "T2B1_en_test_msg_changepin_t2.py::test_set_failed": "200c1497e33124deadccd5b84e68616d6d27d03a3613a00055ef733604a12d9d", "T2B1_en_test_msg_changepin_t2.py::test_set_pin": "d40621de37584c0affe3be30154eb58687d8423bfac40e96b430cb35d54fac52", "T2B1_en_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "caf04f8db960bf67885209f02f53bb79d5687aabbd63c1d437daeebf47ccea40", +"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "87a1e14338a917eb020069bad8a2223ccbf754546cd1fb34336abb2c72e6e3a4", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "c125e969faf756918c52c2452495b8cbc024d84484c40352dab4a47774a9de40", +"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "44a2f1a4ebf10bf5eee7cbb5fa8dad40cfbe41c5a3f1e46bf6672e3cc3aa08aa", "T2B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "d5b209e9a37b43744388a798a3c1ada135398727b8cdf91bccf074209fc3dda4", +"T2B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "356d80f55b60e8f24543b2438fd835e5985ef66a25c14ffb80752353cd194de3", "T2B1_en_test_msg_wipedevice.py::test_wipe_device": "0abb37c5dd2cc89e22f3952cfec9191413873c9c291df8c8a43a7c89f23b5fd5", -"T2B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0c1d2e8f1e4b43ee5071cf1d6e31c134297ba8315f1f4568765875438e7720f5", -"T2B1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0c1d2e8f1e4b43ee5071cf1d6e31c134297ba8315f1f4568765875438e7720f5", -"T2B1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", -"T2B1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", +"T2B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "977087a6cb4cc7c9e1fceb78f36e6da50bce7f62868e6cb4e534669b713307ae", +"T2B1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "977087a6cb4cc7c9e1fceb78f36e6da50bce7f62868e6cb4e534669b713307ae", +"T2B1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", +"T2B1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", +"T2B1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", "T2B1_en_test_pin.py::test_correct_pin": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", "T2B1_en_test_pin.py::test_exponential_backoff_t2": "3785284a7044f46b47123c8867801b989a81ea1d7fccbd2186c944f9049473d8", "T2B1_en_test_pin.py::test_incorrect_pin_t2": "e0c34c861c8f1d9a1a4cbc0bd8c96d3ee05183631bb7b5161450bb90cb0e4416", @@ -5032,7 +5058,7 @@ "T2B1_en_test_protection_levels.py::test_passphrase_reporting[True]": "ddf4eaf9c9d1d341cd484658135750b684ed31a7d77a5f4e6972fa8553bd0a29", "T2B1_en_test_protection_levels.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", "T2B1_en_test_protection_levels.py::test_sign_message": "3bfb26e19709830584f27aa1b1f114e7bf41cf15ca57a4ec9bfa618fcba80ad0", -"T2B1_en_test_protection_levels.py::test_signtx": "e8f34f91bacd50ffc4c446e5e381c06c18b2a376c2ca9a99c77dc637e806a90e", +"T2B1_en_test_protection_levels.py::test_signtx": "b1979809dca35d8a776144bfb8a1e00e325c316dde995ef2b727a53f8a3fede7", "T2B1_en_test_protection_levels.py::test_unlocked": "e76b12522fd28fc08af0135271615d63a13a0ba9f013ebd1afe20ef72abe0803", "T2B1_en_test_protection_levels.py::test_verify_message_t2": "5f04a88b0acc2daa3e87c02074a64969aeb34157006adbf15a3655e94f838bdf", "T2B1_en_test_protection_levels.py::test_wipe_device": "bc06c63c7f5b9e7f0ada0d3d342125905b4fc463fb0eb2ba363b300909dedb9c", @@ -5042,19 +5068,19 @@ "T2B1_en_test_session.py::test_derive_cardano_running_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_end_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_end_session_only_current": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_session_recycling": "ed4af0c4901c1f682a4ab2f7f741721265a0829d6eac91b3696f6c2c58eb8b0d", -"T2B1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "909cdb9d1b284fe0a1a0f4c0cc5ba25c0ede8ff77caf7a820b5b00f606299264", -"T2B1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "eaf5aeeabb4bec1846ff03e81ef95fc9cd12f949fa7c5ff4be4ffe1dcffb7416", -"T2B1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "1e7dcbd0569b57c17d3f177ae48642bc262a581246ef0db9aea1354ad3b48a67", -"T2B1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "de4cd16001555d8cb75a00f1d1e3f78a0c7613bf5ccc3bdde28f9780a3c0c6d8", +"T2B1_en_test_session.py::test_session_recycling": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", +"T2B1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "821014bc5fae08a678fa4c40dc79f1e37d4b6286ee1e5c94b75299a1d01111d6", +"T2B1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "53d7289a6b3fd5426fe6bc400b5ba7576402469456a2a26a48fe3c79b54b2a64", +"T2B1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "31f3aa9306778474ba10ba975cda6afbb2bd486ac642722d8ac3269572b8aad7", +"T2B1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "d421a35cba172f71b504b7196de3045237527c5b3eade7fe5d10ae668ead82c3", "T2B1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "ac3be5842712eb2d53b443d6b1d5a1189e481f94ba124e04ca75c61ad199473d", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_length": "221e1db4c2a92b5b7fa232c0bd2ecec16365d83b544b22cc47526e59a0d9321f", +"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "299e864a48f7bc8a498d726c5f39ceab44df54dd79eb927acc9fc49937fc53c1", +"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_length": "e4b2ee535ab3dee5daf30efdc11aeda2c0e593fd009685173c7243a480ea9245", "T2B1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "033d6c8d27b79461137aa78d9a89acea049f52539bc0d898243e392514e36ff2", -"T2B1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "69281f35174e284b0aa08b107bc7be6dfa13dfd7d315b6d15c8fb2677af0c731", -"T2B1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "94d8f4f0b384923e5e2e54ab0aa86d064872915061bda987c8bd042ebe80f5ad", +"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "2f674e8697ed0608b71c6f2ee838101bac6a8dadf8e6207a53db355f19b15ae7", +"T2B1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "873f72fe19bd7b49081f4fd7ef2042bc4dc4c72812f5a5035b35970783abcb94", +"T2B1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "77f43db202c44e6d124960d6af66daec63f6a0b14cbb6d4e8e5cc5ed422488e5", "T2B1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "718364f43811e6e8366675fb29661438a924f5bd59a51a7c253a2297f902ce29", "T2B1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9208f4ca66bc8a7be9ce0f7661cab2d6f102500a0fe5214f6c2042a452b45299", "T2B1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "53928e3a3f32d480e096b063c6700636fa6612421dc3b9708db25e4b4c7f136c", @@ -5065,25 +5091,25 @@ "T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "9118737aaebe86980f3f318413b2b4f8c9321b1ac157579dd2ac8b7622fefb07", "T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "a7e4e8c2224855e3da7a46260e7881e67745215d44a0b5d26e791156c53871b7", "T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "801b375b822b625a9da05c6ea900895503f580009258583ac3ca7246ac10825c", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3206320e637f68a3a43859df8976c52fb8a1011f9e8b0b673486655ad43ab8a3", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "6f59a5800116f1cfb0bb3092d3a17c83dd15bb4046ef2ed0e1c5043e7c4d58f7", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6e0b5320536f399ee0e49307924453de1ac7592e7643a63e0bc70f5474bd6630", +"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3cde303c584e2c57e8c2d2d3aa12f2e1b2600ec633e600e5ab7be88c16e8146c", +"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "956a22f55c45b1fc571f316152c7fb5c54c3bc2fe12ed5b95d94b19861a3c867", +"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "2e9b25761ae67de02e6ecfbd335cc914137e1592e55c00dc07d66e0433187392", "T2B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "2d4ca4d5951086bffa7d6ee400529da8a463483d01067f42731a3c6b0d838377", "T2B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "7fe4eae75a497f6f58f6f6fd9c157d2446ef0b2e75414aa3d50dfe70092bd7fc", "T2B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "3dccc92989c6a6bbc5a408d07cecba4093613b800a2d2e0c08ddcef549ec6f1f", "T2B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "457f062e77fff8d87bd37c77ddbc719b2847cb1bef46799428966b64eb074ed9", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "dcd41121e57fbb1386580b09b33f3e5ad9934aaa741061b5f7cb832cbee2c782", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e8be8e0c3a7b9e565ebeaec54199fe8475a7b1ffe9dec22d001ccfb9ec4927ec", +"T2B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "bd2eff5baa329dc24bf87365ebc4c6d21b685e353bfa41391d2be5712e86dc36", +"T2B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "0af1c9667adef5ae37caa6476445931b89d9beba83b5758230908482c49cf5b2", "T2B1_en_webauthn-test_msg_webauthn.py::test_add_remove": "d8385fdba14ee5d71f75145ccd6574a736d2e3c3915acd15597cc40618b14c94", "T2B1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "097bbc8fb0ed96383c110ee6430e1d168d837ec110ba04d29179bb0789cdc3d6", "T2B1_en_zcash-test_sign_tx.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", -"T2B1_en_zcash-test_sign_tx.py::test_one_two": "f99b201fb591f2a94c4aeac0f41c509a78b09d6113833d995e312ff7e0953e2f", +"T2B1_en_zcash-test_sign_tx.py::test_one_two": "67e8bb08d9007687d92dc308aba649e89a63b91ed0cf4427da44c22a6e9df265", "T2B1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_zcash-test_sign_tx.py::test_send_to_multisig": "0a786b0abad93ef3cf66bdc60384134414e83aecf0bdf960c49a79fe8fbcbdb7", -"T2B1_en_zcash-test_sign_tx.py::test_spend_multisig": "f85e7c0dbe7919db2c8a599ba17cc2c94f90a29fb259546089fc08494cdd894b", -"T2B1_en_zcash-test_sign_tx.py::test_spend_v4_input": "eda208bcbe9c956ddab927e5189ae25d79a92f6c30cd1b13f281341f2333d18b", -"T2B1_en_zcash-test_sign_tx.py::test_spend_v5_input": "e8ebe34d69bb1870a8fadf3ed0fee90c228ede047b99b91c02331e79ec80d7eb", -"T2B1_en_zcash-test_sign_tx.py::test_unified_address": "704e29c0e444f569843ae894614af7f774580d5fd23fc8e0eaadec4cf71c794a", +"T2B1_en_zcash-test_sign_tx.py::test_send_to_multisig": "38f719702e87035ad522f2c4c4d943c525e0c494a2765486d97735b87a081ea9", +"T2B1_en_zcash-test_sign_tx.py::test_spend_multisig": "68b7d0ec9e8a9c6b06ac535f5470661d104e01d59e474106e5c6548fc63e112b", +"T2B1_en_zcash-test_sign_tx.py::test_spend_v4_input": "ae5ecd07621463289b5c3e7a4cf2c8333ce3f2715317a001489a20b8d2f113b2", +"T2B1_en_zcash-test_sign_tx.py::test_spend_v5_input": "57c047310f07daa52f1ba348720db1617ece5081a79f857f97620d4826e66f39", +"T2B1_en_zcash-test_sign_tx.py::test_unified_address": "19374b4d584e40c11b64cec8e481f014e647aa4fd8cd51495261a79d2560cf12", "T2B1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "cb5054566695d06a78fa853889160e1c3ec9791a8a196df629f741796766ccb0", "T2B1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "5c48d7bc39446e8e95aaba3a12bef3bd6adcf3ef68bc03213e411290b6216db3", @@ -6130,13 +6156,19 @@ "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3f3d85234d9b9c55237d9dd450f0a63b0c908f1af2a515ac382e7b0d07c7f4af", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2c29e63e0fb6d5015987ce3608c3862ecca723571c8fb64418aca1eab9270fb6", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5d1d67cc619831a6f8699e595e72310865b64ec08855f48e754f213518207d9a", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "04b8ec9efef5fcf094eaed0c10fb9ac03fff9449ee44755176d06c8c1596d5cd", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "d0ece4825fc36c249a79fd1f9e5f24cd2e20d0af34ecec740a71302738e75ac6", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "9b427305ad6aecf86f6dd1379a0809e54a77ad91996fe39d001cf6fc7f8b0e71", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5a8861473daeef4f53fab1e20b2c2feefb72dafa204eaef147fb0a22c90590be", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d41591aee123f241193c0bbf4e1404bea6ea9bf80b725879e28dc45d5239f07d", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e6b54280c068caefcf17a1f28174b3f5a9f49c597f6d0f4f84553f5da7048df1", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "da2aa458a81d36d6ef00585ebbea3ffa4f011631d67d73bde0356da99c58425e", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7673dd1da89ff6519ec7daa8a6af3b2919dcaa06dd132284654fba0ac1b656a5", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "286bacf6924cc1cd71b599840a1cd7c77ac71e75e9798631c7b83d911cd39931", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "f1791cfb0091f111ca3a0c1c2a4d30ae797654f65acbee98c3d8b44ddc85efe7", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7f349fd79c14b8ac84c619473648bbca04f4959c9774f9cb664ff9442c19eded", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5f34730bdd362ac1637e5824f18e7fca1194a5d2fc7c1202cb2b43b82a8d21fa", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "6b001d3e176f7aa6c67d5ed874ad41a07c43b5116195a3cd552a0be4ed348a9b", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0b3762e61964f9ab527ca5b7193fbbba493f74944391f7f764e83803f7e98e4d", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "174af19811d766d269d10c62bbe0c8e4e6911dfe3516c38a64b68856625a5f64", @@ -7494,13 +7526,19 @@ "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f19d4f7b8adfe75b8d4925f19fea9652f6ad0226ce85aeb2fcfa6e0c4f4a120f", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b0f9ce8e4aa6515cd9fb549090c03e66dfdb27fea2ccdd4423e1a9e7f609937f", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b3dda4d10e5f4284a002f9ba581aa88a237de6ec284a9383b69e0ee765a3b983", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "f6fd96a5fc27ec5f125eff2dbef1e7da4563acab333f5899e0b9af8fe42cbaab", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "adc84514ded91e1816a828d25904243a0a35fc994a1e55a59e0988a5f2d49c44", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0daa7a91930cb04fd3dddf1bba9ddf7cacae6f9297f60967d098fc00bbf63c71", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8bb26aae8e6fd9401e78d154d8b359b68f2714b0e66b1fa3b4a53320c1eea747", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "bfa11994a944d76ccdef5d0217d39856f69f0c88da67d1037d4a84edde6c48a5", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "1fa59516ab6437f0eb6a0c6e724c0bd214e91079a5bb548d1fd1987825957e99", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a87d04a296a08b073a8859dcd7e68819c40e15463e093ff7d19576ec7aaf9d02", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7fd0ca1272b6b64ab587edb3b661347605d78da004c80cca86fa57071ba97e7b", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "7416c19cceee64367f1f7d6d5078e52fb17248527fba0751f538aecbb04bc977", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "411e6000a2672cdec47c5c12df25211fe6d5534ca4cee1961e0ec3834dc1cc4f", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "4dbe63ec8f03ea0bebb24e68cb5958dbd6f5e7f46e8aed3a694dbb11b30472a4", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5c658c5642657914030d8a7dd4a23c44e8b239bd1c1d565e2470251c4f16a429", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "a1ade95b976a6e28deb91c7abe226ee384dc58776a0c53d1c2d970bce5bda75b", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dca0b979475234a86f863ff4c1a13b2f1232a8f1937a83443d0331e087359f63", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "867351ec7280a04ad469c95cc0b994fb51dacc107198f28e76bcd25d9b870155", @@ -7870,8 +7908,8 @@ "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "537205ff560808738cb7f92a975db4f901822513dc6e04765644119009b53983", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "10a2069bf16df7a0c32b5a5bd06a5c18ddb2c8e0fa537bc4323dd996fe863147", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7acbdf0286d917ead84b51545a6aaeee1cef56aa7d04599313860f2cb54b3c4b", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "360334f3cc6cf67eead9a073ad7cf4c1c912c39697983a940d335db3dc675ef6", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e1299d59ea64caf5a8c5244fb0e9d13bcd18f92a8e0aac28e9052f0479c2abfe", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f3b92d774d7e878102d7a82b731a2cdc8d6288360537bc8b697889a670c06fcc", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2ec384964ad41a1916ae061e430d5b737e66349b28100a261ca80fe6d73be057", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e91bb83330840e2691d3faeeade1b43621f3cb144aa8f38aa425f8e00f7d928", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8078df18e03affdd08dcba3798b2f81c4e339d096562023b75fa1436b2fa483", "T2T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7ca31effe094026c9e00a78e2e5117e199e5ce5ddf4a4a869899a17193706ef3", @@ -7918,19 +7956,19 @@ "T2T1_de_test_reset_bip39.py::test_reset_bip39": "f8f3be3e3f9a4aae2d38861d9a97ab186f65d8acb266074743a24c17e92898a2", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "6da2196b020cb7e6f05c32e11a0e9e2da6e501bb0ecfffe5974919158ba36444", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f85bf415b444eacb4ae61ca3168dda8a11ba5b368171ca0df49888caff436680", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "159f0aa3be6c698d2c70bfbfcb548dd0829502ea8fdb70b2b517c8194810e2a0", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a68473dce9648a36ef3e898ef904720c8db4f99b1ef940e39d44ca0c1a449b00", -"T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "521b6ce07207c262b832fb4e78477f89211dc02a4b6e02a6fe8d389a2be909cf", -"T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8ff223f44e97a98fbef62c2ed314bdc2d3a2f160d0396d09733847ce103494d", -"T2T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "15ce8ca8c46be745296ad39b2df4e4503f1b3208c3f5b3e3f48d7bd172779605", -"T2T1_en_test_autolock.py::test_autolock_interrupts_signing": "a9b983a624b6ca20fd976fc59b570e0bfebc847a448a1db63717932d96cde15c", -"T2T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "e25d15e04e3096931dd299944b81aca8606c53cbfe7601116453e5cc0dbcde4a", -"T2T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "140ff1c01d0d27ade29e88af481a9a24385fbe01058bdbf35f2fa20c19e0c386", -"T2T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "f9a5c8f92ca3b0b9545a9a5b3cf8df4de9943fbe45de113aa6f970d60b3b9b49", -"T2T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "2ea54adc6df443f758a6395b6b443fbfe5931cbd62a321504de9ae453aff8ca8", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7a74d982bd708ffc5358a306f12c196d6246789d52cc286d80abafdb69f807ac", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3a70638102ccc3ceb6f4687bff159063977edf9da94449b81e3ae970ee81644b", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "4bfbc0237fa9c549711e06889f28b2a490282047c9906065c7a3539dc9d81f26", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b56b3db59f593ad3d3d554ee13f062a6c519022931b87375625b4e87fecb7f26", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "0df34b5fe4215e7a9b40e5c5616d3a68037c0b8d4cbf7acbf7b56a28b20d570c", +"T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "fbadfd0bde79050231b0373fb531ea769736931e7d5f7b097ddbcc1c6b5b2c82", +"T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "47674288baf2b17f3ba91e7503490901f021f448ae759a2fd25762090d74207a", +"T2T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "e47e94ec1a4ad82bb80992b8b7079f71148b625fcf1424cc6c4f7331591e1c6b", +"T2T1_en_test_autolock.py::test_autolock_interrupts_signing": "8ad95dc90ecd0d73da136e8e4a930593e98221e281fa048b592ea79cf8a46a20", +"T2T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "ede8141b923e58e890e80132a320a8e9664a9fc3a291ce2aba093e8d9f2da1eb", +"T2T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "a23e23b20dbb465435e5d057820ba847ecfb142089e48e2d09580562a887203e", +"T2T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "db2c793bc93acb5228c6269cbf13033939335174e867d187cb2fabfefcfa89dd", +"T2T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "47c1bcb6f079ed8fb296501c556d0fa53a997a611d38273ad3fdcdadb2306db9", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "0535768793fd1387bc524174e1bb3379635d22519af10694873be8fbb175fef0", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c013b611ca59b9b951ba77d438e6e0e793be3356286570ccc84337dd69154742", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b3470c2b2906b106adc587b7ec2a5c0d75152d95f299915ea2b626e3741d138e", "T2T1_en_test_lock.py::test_hold_to_lock": "a5739f92ae28fc57769e444408ce5b58223d0d33b368022ef78ea68e0f8c9b80", "T2T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", "T2T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", @@ -7948,26 +7986,26 @@ "T2T1_en_test_passphrase_tt.py::test_passphrase_prompt_disappears": "12a0d2dfe50c122326bd7ab6af7dd32008943091757ef6f5e9122dd721414987", "T2T1_en_test_pin.py::test_pin_cancel": "05f5f819be61fec8c7c4341fd23c1bccf78cff93f05d573dd4f528bb0f1edbf5", "T2T1_en_test_pin.py::test_pin_change": "3f2aaff0a0ddfa44e623ba68cb64c7941354707972532ff8db110df539afed71", -"T2T1_en_test_pin.py::test_pin_delete_hold": "110a0144f65b65956e5a06f71888d4696fb35fcd4ea5f9f8b9e2bfdecac06116", -"T2T1_en_test_pin.py::test_pin_empty_cannot_send": "197c595eab9757f72ed59642b7bea57728397ffe072a762a126d20833d0b9278", -"T2T1_en_test_pin.py::test_pin_incorrect": "739e082079cd057f4a72e3d4f6a15bf447d099273e3a5c284f85fb688e596096", -"T2T1_en_test_pin.py::test_pin_long": "795a3ea7d9661924c334ae32c3da99d4cc27909b905808a422a240d221af0775", -"T2T1_en_test_pin.py::test_pin_long_delete": "8fc0b6b0b80505d2e701c52c23498cf23584b7f9557dde7e7b3eab2eb4b7c447", -"T2T1_en_test_pin.py::test_pin_longer_than_max": "34af02823f498627dfe0e96e97a912862c5c49eb90202cf8b1fb300b673a73ca", +"T2T1_en_test_pin.py::test_pin_delete_hold": "cc3a0acb035a68bc49d3a56d249d5ecc9731a81c818349443bbcd95affc59fe9", +"T2T1_en_test_pin.py::test_pin_empty_cannot_send": "bce1bf7c07fb019671e939db931457dec73d66d25b6f86daec704d4e43931374", +"T2T1_en_test_pin.py::test_pin_incorrect": "9211de4de30ea56e52caed1b7c25beed62eebb2d38fc6216f8a041af332fd282", +"T2T1_en_test_pin.py::test_pin_long": "baa135f64a3cdcc534c5e45512d9ccbcff6ac2a0456a1989a616db1e6a0fe159", +"T2T1_en_test_pin.py::test_pin_long_delete": "ca23678e83227628143f662b9fe37f9fd33fe04f156ca52067e6769b38e11ac8", +"T2T1_en_test_pin.py::test_pin_longer_than_max": "4df013896e051ebe48046878fbb3815d2ce34c3c8a992897f4031fb745fe43a3", "T2T1_en_test_pin.py::test_pin_same_as_wipe_code": "fb196ac02453b894d7773276b67174c129f270642d7f83051464591f307e11c9", "T2T1_en_test_pin.py::test_pin_setup": "2c10614e7ad703ae74bd95de372a732ed6dac524d83430fbb43cd36d867dd8e7", "T2T1_en_test_pin.py::test_pin_setup_mismatch": "2ccaaf68e752185f567a710b9a1c24b7e0157314c7e9b8583658b320c8e6cc79", -"T2T1_en_test_pin.py::test_pin_short": "197c595eab9757f72ed59642b7bea57728397ffe072a762a126d20833d0b9278", +"T2T1_en_test_pin.py::test_pin_short": "bce1bf7c07fb019671e939db931457dec73d66d25b6f86daec704d4e43931374", "T2T1_en_test_pin.py::test_wipe_code_same_as_pin": "f13b6559d4d73c2853218fee85dc951c41c5b4e3867ee0e989443940233f2f96", "T2T1_en_test_pin.py::test_wipe_code_setup": "3d6a04cc7c8d3a061758a9559277a548bf4492ef59afd1d040693372d197383c", -"T2T1_en_test_recovery.py::test_recovery_bip39": "65a138f634806c6483c55c6ce5365b8a7a4073a3c0c340b1826042262faa8545", -"T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "a009899ccd3305cb6737c8fa645cc9eedf4e46d6669a621a07d8cd9447d80f2f", -"T2T1_en_test_recovery.py::test_recovery_slip39_basic": "9b0f5a7b8d2ab0fed1e5389076bc035e24dce377d275824220f1aa61e9bb4810", -"T2T1_en_test_reset_bip39.py::test_reset_bip39": "1feb3fcae2c593ea9193bcab23d8e64accd6fdbd2b05e2d2403ff89f8f94e4d8", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d1759a29778ca741843817ac5401e09816ec39cbfeea9f3e9e98660777f0ed40", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "80956a3a8979a123fb576ac1cbd50a533f31569811afc06eb506e19289b6ef94", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "be7d49b8c1f6e08205fffb59cbbb7adc05d83a0ce720b29e45f7a370c7ef116d", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "803fdb1fd03c09b6d3de4035d63f5f16cbc572a82879d87d8d8e6fc23e0e1106", +"T2T1_en_test_recovery.py::test_recovery_bip39": "ee619ed8e0cf0fbd75a685830d1873e23896dcca6477b2bbf39eaa8d9b4c8531", +"T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b41a576c6e879512c80337f5d58fdaa93d2259ed42f164f808e52e0d3ccf1211", +"T2T1_en_test_recovery.py::test_recovery_slip39_basic": "81bc28e27af3667606f0479720e4dbdfdb97805b9d94a6f3dfe9d9cb3b045c65", +"T2T1_en_test_reset_bip39.py::test_reset_bip39": "e7d4a85f9ebfaec35006a566e0a25167f276620d50d847a08721da861cac725a", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "259315387e0837ac718654d9180f5730370fa76d77318d620288885ebbddb0fb", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "878b828c11353fbfcd854fd54ed172dc7d395c753195d5444b5b57e3499e2bca", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e2b93deda1df90b0123f6d03122ae922965e639b2b26126f78031404f2c6f686", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "14a40517c5ef6c36ac70a6a8b3002ae76f945d29e4cc980bb595be864f771f58", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a6c27b94205c9dd53a817612fe0abd85743079be6ea00206626be171e1aec455", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e32e681c59dddd9e0b52d559d2f843dad022662fc56507c1ef76c1491aa8728d", "T2T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "d3a25e5f32fff10662159ae1d42a057db28ebf7c331d8b1910ae8e0e4e74f29f", @@ -8014,8 +8052,8 @@ "T2T1_es_test_reset_bip39.py::test_reset_bip39": "644226a8736f10de7878950e41d189b207474a40022365b87ea1ea24912c1eb3", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4688e4198ef55ff8253965b16a612845cc9c29ae3dc9911723ac9c3d170738ef", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0af93fcceb4cbc33d6a3bd9022bc3bc774cfca36a23bf05d6d181846fb3631d3", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "16a06dba793165eec458d5d2e9e99596cd4c9b4ea9cb6d792bd96dc3209907e9", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f367935a27c6d4b77249b49a746bed74b68fe76a2357dfdab41987f8b27badf2", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3068138acabd7f84fb8282aafa04643baaa3db4cbf45266b6946bf9a081a69b8", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "91b627660b25984e30f1f116b00c5830e380958b42b779886a70cb674eb62154", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b5d12766c3d49c8bfd80548dc1b18eda5a88e7799fc7002c1aa17bd29fb1b3c9", "T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "4b7b8f476fcaa0d38bd1621a4eb50ed3c92f2bb65be12b012a9e91dca2ee0a61", "T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "b93dbd30a75a6aa4ba3d6c695e04baa811c01d55700b386fe446b03cddcefb86", @@ -8062,8 +8100,8 @@ "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "5d9a35bf67c9520002ee41abac5c556f1932b9fc2073a259c3a8acf4443fc64d", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d1e765a363f3e24219cef132d94ecc48d27a5564ca90b69a2231f7ec0a6ce89a", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c68e1a6538bf2b96293b23c4482f50f9a6de907ca3f0744bb88a74618ad9d306", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c341b0ade2777d0d5cca5f242bd96daef261a6b7d3e3a746f5ecf8c0594efec4", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "fe56876094b0f9244174bd1d485db64cf611a412c76058f3353eeda1c09749d9" +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3a0a889bb3f40be9f255ae13d88451703b4a0d918c8109f26708f9c84680815e", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "89271d47c34f3a47f021be75b2ff58f0fcb2e965953d93ce2d1b2337305aa854" }, "device_tests": { "T2T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", @@ -9071,18 +9109,18 @@ "T2T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "31fe200afdae83c2d32938a8f2b0be051ea708ee6cadc198e08cfd41525f7cb0", "T2T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "882ddc60a090624d69cb94daf66cc5a04e82c83af3050d35d505229a75f8886f", "T2T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7781a854670bb38acbe5d00a99e7bde404f7a8f60d68a1b07ec057b1bd4fb2f9", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "897fdc8cc7c6358a0dcb4f566f3fa88c6e005dee6d372027bdd3ec2979df9a18", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "13c3d46eb48b6e9e989cb9a241987a3a1ca0189236596d2a3ef9e12502874011", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "40a49084a89c0fbf02ed380d5baf4b1c5a29b4c675a273a77c2c29a341368fe8", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3b6b4d2d2f21f8e693aa7178077a4640d875d22ad45f51683d446fcf73dea687", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "4f8de78abec5b7086a9212fd457b216c5e9856dc4514f0d0ea171e55243f5079", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "c1ed0ba1042541c4358e0f9666a6ed5c566ad1f48985d9e8692bca01dd021721", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "db0b2e6663426e80eddaf22562a13a4fb6101e89472ed573b411ee489d99cd92", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "554bf5d9771ba37bb944f1b98b246163f2cd7f05a562bd59a7897e85fd1bc222", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "658a56d1280968e368d8f3729269d671cc15ea34d3141d421a1efb6f46d80b7b", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e565b67dea91dde4fe0efc4c903888fd90c107e24d55d9814a8cee76d38664bc", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "f8db9c6f24dfbc61acd1bf055429331bcc0fdb16d23cc0f68c7403198fd52766", -"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "0eecf6e83e3d9f5bbb98902511f87dfb309fc6ed3509400a5c74ef592c15fb49", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "261531a2a082ad58d625797a1fa07a771e6acb2a92ab802c0eca60ed43e5ffc5", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "2429c61a02a675974a34ef0d7b7befb0391ed59c28fe36a2cc1f913e187b6c76", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "42acae58fa3b11aff4f0149bbfb2115237ad3c5354fb02adb0ad3e9a4710f464", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "a1df71f8c14293f6163c1109d95c7ac87706c5cabec10a82adb9f42448ed85cc", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "96ceddea4ea4bbe68fe159b49b2959bbe2ab5873eafa888459c1abfbcfb6027f", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "70ddb2132b7e2d2dd200d5e21c8a286c35f93ad165034663021f5f7ae8140d5f", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "3fb88a61b6dd13218a9c72ba722e2d177664b28a08df1afe2236c2b874fc23c0", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "640521a8f2a408cee564fb9dae302decc063400f9ed6699f1884af30a17cdd33", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "5de438a96eb1027a375ab520e03cd6d1c1cd19165139a3bd0dbb08ea640d7f14", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "870ff24b3454ce80f99df71c61b0edbf61b8f8e39736dc95720b3c4f789cd015", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "63aaaca3dab84e3d72e80654f77ccce6ba6a332b440493f09f3cc36d448149f6", +"T2T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "d9f15a5a5a51d9b914d2f71c45a7a71812c20ffe662eff06713695262c30772e", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", @@ -9175,7 +9213,7 @@ "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "594f0807d44e79071b82d0edd9aa3afc300a19bb11c0291caa5ed2ddf4068da0", -"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "dc2d7ce4a7e6c189acb61b5c940c0ab591f1c1eda2b2bb7bbde593987b3d0d93", +"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "46f23293e34af5548967f3d2d30efb40e23826917278c082c78d8f1721c19aff", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "9d60f853af4d4797bf69d313257883bcedbee27ef37e261ed9df0de63d0a850e", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -9194,37 +9232,37 @@ "T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "4c83b602659d57870dd28e2255f83968bc8539f370e83f4739e882591f833083", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "06f4b7012e441435326d930378208705e53278de984b829f65710ee01414325b", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "2f89aad6748f21cffc13fc6054174ae1a58b02acb1867942229f48b8b88ae84d", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e80c2d4b8c5ebeb70a1b550686000f381c115b3f1a91282572cc28df6ace5ea6", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d0ac4405cb7c9c192af8654a8cb11a450d05dea809dd794963cbc21c5b29ab74", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "44ce7f72cbcef38d74d28e4d8661fe3877d1b0b451497acb310f55156a62d636", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "66d3d367d123fa2fe1904bbd795d6afb5c50bb1132018ae14262ffb3737be20e", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "be084493431aab50cf76dd2c34d4af188d4f40d18b950ae1adf1ac811bde7de7", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "fd689f2c88a44f83de5a9443d97d73d28f14817cb4e030121998ceb6ed2e8a05", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "330b30519e08bbb16abde05166478b0e3c6ced442fb2706b3286b267e5cd6448", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "87d21a96f2a50abad9a75cbce923d50e9513ff7173fbe50f679ac1aae9e10406", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e4ac680898a749c2749f828a7b3e1611b1413778c2a1d6c6c9317180e655051f", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "01d97c9e5a671eeb8b56c7ac8b25ec82e2dac5904fdf052e797ae6c054453372", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0b8ba4a3d38e2ae12f87f06a21bfeec30fa892fb628b869206d2875f0aa8ce8d", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ea13220d030b0b2531ceddfe1af6bf8b8d6a13d103c449944d9a119217270f0", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4d5a7fc576810fd8a1fb7504dd83d9cce623432dc897e3f871a960d35bc48fe6", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "8bda09a1bcf757e11e13a5207a566076b3bcd3d5b55febe555ec594f3452bc3e", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ac76bbcd837b3c7eef1b30face2b9dc3756f74172f7fa166d95003b44df7154", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b01571baca0d047aec8a8da0d6a58397720d49d71aa315d390c99fc94968f8e0", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2db3e3119116de9b001a288f040d92e4b90ae4c6178ec94f7b44d23f247e2a73", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fce31a993c026c2ab3a2b381c712b6069cda27bd66b084c35005bdca81afb048", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "29956f95d176dba8da7eebf385ef404749d99c8a92e030e29a197846880da228", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "35a44c8f0706daa18eda1dee8cce5b30db2e1e520a47730599b7390f0f752f9b", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "fc365a116d172fc09a7757e52da1f1020923441d8f156c0bb0d6d9d84aea07b8", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "531c9bad4a93a00d0eea8e5388dd387bfd968cb3707e50d1a64f7b0d3a2ab631", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "41a6afce45815e1e9605cd275f6a531a17e8e527e1ff85e0a8282f2e2bf1a30b", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "0994e43f436b87e648b386b037c6c99e3a8e179f1f43a033baab73ebcf0d75a7", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8cb9b8ec34ba7f0bcfba2fe793ccc29f972e5ef50fffc29941e43115231cc0b0", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "86946b8be9b5aa32175a4f861d87f5b94f80b4c035acb630e348f1da1da8ebcf", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c8caf6c0d9650720a6e966d874694610f8f048750f8119b8b1867d016eb2368e", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5d2af81b8ae45704c40aa97d9ed9cf87b56c6aa9c30c556eb1a350172d26c764", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "5afb1bc4ab3633c9861c7796dfcadde5a23ce8e62beff45e92f893fc1860cead", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "52ffea964d3a3c1f7736c6f15fc99ca10bc1cd07903c3594aa46b184bb369cfb", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "70340e4bb88712feada3d6b0dd238b211c543dc1209359d3c53318955d54adf5", -"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "6fc675c8d68cad7ebd1692deecbc618f5e11a4779d7a146794e911dc88c72e04", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "82cf3b4756830e6023d0aa57c58dfd68e23d5eb1f9841c00f035feaa944ba8a4", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a089c568c2983767667736d81481c5fa96e646cef8a590d810c7bdafa6c1a2a4", +"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "660ddae1a507c7396e9a47325d75c7a3a50da61e8f0598e15d45d9af01985346", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "81a5a98caaea515dea583692ec9360a3a65a2c236850bb525d13695ccf9f3d99", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f2eeb0f5408f283ff3e01440e6599e8cd1329cc67407b6227aa6be5b74642c39", "T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8d51919e05a841522cb8ad40becc660eead752927a78a6574f8f23efcd78c92b", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d35c3f2ad6443cc20106bffa34ddac0a28092beab0a962ad51590ae4c6eba0cc", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2b10985c26cf70d4da447b481e36b2cd9b41dfb00cd52adfa0af2e8b4f3f0665", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b3211f4a1b93493a6608bdfe1a1ac3e2469d24ad1b396d31e8b45b477132c916", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "bd94dcfa0982ffa4a9c8762fce626f9fac093039d4f112ad999b75437dc75be3", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", @@ -9428,8 +9466,8 @@ "T2T1_cs_test_msg_backup_device.py::test_backup_bip39": "c436401095d0cc0cab5af7b379a32ea71595796e00de83766389d3eb69660c73", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e9313406dc81378c5667fb6ce174afb2c7a4f7aaeda43bef14d4f0a3dad5adba", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8e2af1597b6817995fe603ce2537edb064477314cfc224941cd25d7d6a0f7867", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "3bc1741f8aa4359fe44b1e1f6c5c027eb097dd7773f1b3c7b58b432c5d75286b", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8268a5fbe95c3be2540e05fe7a99e94f350a064cb0f92dfe0b8db79e13e32bfd", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "1736edc2fe0b74bb20ddd8505c5b0ff15d0ded7f2024e34e2ecad896df064bff", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a74a991e70913be17203b70618ac32fe9bc07a365c0f4fa3dce2291cb93f9c4e", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "5a210f05a9e4040a3fd3c88abf03e6142bee9bc4454240910482b7b66c2145f3", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "add9379f38648e97f10145cde341da049ffe809b9c8729ab532a46be39bbdbd3", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6d7fc33bf8a4c6b6fcde74bc342f17ff97854c7378088e0531c283e93a3c5386", @@ -9450,7 +9488,7 @@ "T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "8a58a03d6089a51c6b37846f345e0fd48a909eaa78099aebdff44192f3b6ccb2", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "38d9b6e57c229d75496c26605efc57b7a159511bff3dbc6477c6a9304e85333e", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "4aceb58ce9eb2ab5935918a48b47a88b551e7e8d176472a64766a8f52365ae25", "T2T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T2T1_cs_test_msg_sd_protect.py::test_enable_disable": "7815d8d7eff783050c6b202ab538dc0eaedf1f6f9e7ceb535c77c6a6b8b18331", "T2T1_cs_test_msg_sd_protect.py::test_refresh": "cd45ae6cf914bd58774f36a203dcd1928439ef510db1fe29d8a81aa903c3c17a", @@ -10538,18 +10576,18 @@ "T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", "T2T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "bfb1a60f5e0b0653197b821854fc97a16060edef3d3f3ecdb4125cc857d0798e", "T2T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "e652ec974319b2822f3db8c45c4a884af507e8e2404676693e5efc1747a95373", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ebdef978bdcfff5d1bc3965685880252963bcb63cfbe73a29031768a5e16ef7a", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "3bdd24bd65fc730ce5c5b4de5a05be1772660efe20fafce9942a1cc274613e42", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "e35a186db3ff8927e5bf4d24501d8914f9aca42ed6c9ec642af0cda35a2fa4f9", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "520860a5f34d61b7c9cb87d487c2ad22c9a1c84061fbf91e985bd22d97012fa0", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "746ed0005eeb0ee10119070b533985a8a04e19ee47bf751bd13559f1d3a31217", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "9bbbe37d5257dac6bc1d77324aa4d3d37b65145a1904f277cdb2b413cbf07312", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "b08f8d54c69cdc8331b388b9fc0c472abc0549677eb2aa759024a52ec65a6215", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "0708bb186bdf615ac926fbbf0813ed24847633030dcadd62eb50fd05fec630c6", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c39b67e56cd303ec9ada26cbd83300213374a4bdb0442bbc31627d2f60f25827", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "c7d2514e52a2c335be1ecf58c8f711afeaeb993b1776260487c66f9650c07e7c", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "c7811acc5c4bf5ad594016370c7b1c5b1d66088ec78b0a6ac3fd22054ad23918", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "15915c4c794a6e5140483b8c68bbd8f36f3adff1305ad2786f6db5dbcd6be7f8", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "07c876fc243b8255ed08c78af8b5242e343b7c07d6b53240fb8a9e908658c2e9", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "502348f0ea634b75faaf06e7bfb971733502ed8d0ccb1ff17e65e91ad8e66fdf", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "5dc679018f0399e3cdbc23f16e58227a4548669177599bce493daa2e574dc260", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "877543c3e332ec4c6cf7aef230a5c14299b99a304e768f135d5e6e4afc6c1488", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "fe4253cf6f5c86c5baa56846bd9e7383f1668fc87cabf4bcdc5ad5f26bcf5023", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "d61eff83a5b9257a2b27785692c19dde62e9d7b2d693734c9410cd65d45cb2c2", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "51722d78adfdfd6e68bdf7ac3e6cabc214861f669e628769442a297f0ff4652f", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "da4eadbbd712a1bc7b56741f5569f03f2e14f6f970cd73b11b7ab3209e66cc3a", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c43f1fc55d259316de8d0b646d61456c49128b7dd54b42d068fee412233c6f4b", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "b6843dea53a8954211cea4f47c2ba0451fffe4793d514d5879379b5bb952dcf8", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "cb8680cd0f6dc7d70b1600b73c98de3f82a75fb46f33fa407c6ef42022738c89", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "e83665f44734e9411f0ab413324f18646a52f05a737844e69cd110c43f0a146d", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", @@ -10642,7 +10680,7 @@ "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d252b29bd9eaeab3e1ae64ee74544043c1b41d6a1433b7935afee99b457362b9", -"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5629e93494cc4a221f8ab70cf10a60350cab48d8e92c755239b3334c4a23c64d", +"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8af6edf1922a80f7784e435ca83508789fa8658f104ceecc90c48f6375fc1e61", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "b1707f36418809632ca11edcb040ddfe6be7961dc20c058efccef323f77a144c", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -10661,37 +10699,37 @@ "T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "cc9e3c8d5365a6d0866362af20c8eae266dd657a2b7507a9868f27bcc65a339a", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cfb205a8c4b04bcb0cd58feaa772994dfab3c026ef0b4524f363278b47acd913", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "a6031e2fc7555aa12fca1573e4d4c1b242fc9e5aee3e6f5ba7a0a0c446248243", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8803ff610d055436af3c65e62f5095d5ac4270ff510963264dcf401c555b79c5", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "9c321d3c97a8a334790e71c112c90ddb30f003373e7d1c64a00feeecb9f5bc44", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "ed02295c5245a2ec9de5a88e99c0b4390db9559d65230702c308ed30a6776fe8", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6590c1f1ea8cd1234c63e6bd124c59752878ad4834493d91a7e888c72e5b6552", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "85e29b77ef87355218645a113a9d1bd8df7a8850f236cefac9eb84f9b75e2ea2", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f881175d64809ef465fff40bb4039d159b36f9aeb33f4b0dccfe4347fa9dd8ec", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "46d44f853f15c05ac3fa45af7a5d7e1c063b3d8999d5affd15d0aec723ca7d63", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4a8daae73ff52d016d529efb7e32df4073c5426def3a790806c0438c4ce67c92", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9aa47aaaecbfb76f29abec5a89a746af3e54b2bbb8621544492757d3e28b9f0f", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "d52a8fcfe810c2b15a83ae9a1a4e82310a38768daa9a4612e693caad09328b23", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "ebbaf18cd0de3c80f7a8a3111870a7835fdb84377c5f5814ebf62bb54c254cfd", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ed7fbb11d4ef801c17550f7167b85a059a827ba2e9f743dc7be4737ee5ed680", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "357db16be36a5a0ed19dd981b084f46d1bd874db05f2622dc5ea06237ae7490a", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "327fa1dbc32cf7a229a221df8d06c717399100408f8ed372797f9b040d12fb8e", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "fe1e03967be675a38e015fe24731e6c513bca03c8b9dd5eac9353cacdf44ac9b", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "269eb7516f77739bac91e4b8a91d6c3fbd333efe06dd06d60d79d77fe7a07cae", "T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a41c082f40c0cf424064179da18c8a28c25aea8da7aa8d97b49397b33a72fa03", "T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "24f8115deb03abf6624975d228cde64253d5f6a822f216e1671ed28c45d12221", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "03c67a21b9c0e19b7da02d4cbf7f380a2a411215abd9004d0ce9e3062e2437a3", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "1084f641eef7dc5498fdfe6099cd722d297ea7a2bd42d1726117ad124ec18c6a", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "bd2222ab868219142a0968593a93bd8db61eb4e284d2959f81b417e50290b4ac", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "78c5ba3e2c5855b9160fa85c7ec906eee36f317ef3cb8dd8e8914b92b22f645e", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9a58e8bb4c31f9736258d3b721faa6e03ade25c8b43bd57143c553fedf7e5b35", "T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "e8c5dffd5b6714f29821126ba0ec4a9f2d07551416e7ad77c48f9d0eb386a905", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "37c008997aeea945aaf794a0cfb1759df762bbea395bf24e7b5ac02cacaef8c0", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "1339bc91842c5e53bc083779d5e80b381ec3d1b464d0e5e4385def7ccba00824", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "41b97d6c80896a11d1954b49b67160a4edfa61880f21d15bfed5e7b1bbc6ed95", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1ed4bea3143debd0a2eb9053a8d51a916fddc8788c4c1936da8f0eba6efa6ec8", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "748dd2251b2e23e21fb729281b2a6e20a85b34cbd373ac67eaac129d37c279bc", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7109155049cf3fe9bb431db8f29b2d217c2d355da403d391b559815c4236e35", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c2150b826dd599d7f39cf0b68e2e6fae1fffcf2068d420a667ee8e5ed6a92fcd", -"T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c78bb5763a46b10e170923fd43a108a068d160b418f5b6d8af6c89ba5f000a0c", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "dc933cfd3a18b72310394e73586af653e0447fc3727ff223038bf7f76756b366", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a9783c71c4c87b6c7bbeb9432b2f3f6ec3d035b2e056042b6c9494f58101bc8d", +"T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cdb12287463852a89e4b3c620c135773c3ae6f9b52857bf72bcb10b0c79f78f5", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f75e987768618fdd3265fa59834289c22fde6eb2979af426097dd0e3fdbe3794", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "565fd1366ef5f88d2f006c0e8fec8a16c921582329bc7ebe84fcdd173f0acd9d", "T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8d50eb3aa7198f6a5bdab84cfbd0c1d9e63fd3f13cb29559dbec8c483bddefd1", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0fdaf5cbb4d2517993b7dd934448f4731e837924dc4431f5f7b574e09dcf98ed", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7fcf55c3c09e93415a47c6ce97970b97f82a3dbb645c0ddf34ccf4e869dfc11a", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6b98ac13db1fafd4cee75f0459ffe9a15d08811724dfa4a7c23d852e87b009ea", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "91ed7613946d991eeda5ee309c7437f27295c58e7eefec2da7af8b8b629bc407", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", @@ -10895,8 +10933,8 @@ "T2T1_de_test_msg_backup_device.py::test_backup_bip39": "84a7f55331f867b6fb60914c2d5d2d34b1ea963c49c837c17ff67f5f405a22a3", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0afcc22b69357ed8f4f6f232ab296f83576f6c19f1d2e3b8dd40c84e3fc3cd77", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "49f70268ae3408a0ed57ffe77c98c1bfa60a353a915aea6a4713f35318379b7b", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "37070e6c1cc80ff431c94e4abf15fa227e5e025b313197d038b08cb99e88533f", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "3a3889128b2d52fc72fe3a399cec891d674f25a47567a4b73660579ac85e901f", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "19634efad1cecd294e9c86c844c47571b4d42d71410331be9b6d7a38c1e7cb9d", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c5868991316bf37774c87e5a62be873797bdb3ea77a815b2021fa7f0b58365a8", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6236ced0ded64b2cf58d25ce5844cd6861526055c516498453ec910d86a1a8f9", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "40164cb70a4241c57f46882eed4bcc6379115cbec4afa1c9ea45f24d1affa479", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ebbc641a9eb294a7276823c27ddbacf7995507311e48cad5928b0516bb96030f", @@ -10917,7 +10955,7 @@ "T2T1_de_test_msg_loaddevice.py::test_load_device_2": "34dcef41c01558a1e29f77aaa184d6953c6b8f0d764ec51438e775b4a927fba1", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", -"T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "428efe8252b318705f27b7aa24e3de092598002ea6bc95ba1d68f1a3bee4713a", +"T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "c1cfbaf76fc13a634e2b8a7861334997f8fecb4218141ceb14908137ef571e8b", "T2T1_de_test_msg_ping.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T2T1_de_test_msg_sd_protect.py::test_enable_disable": "7a6fe5c5cde3f9d9aa6af2053d09f20a57d3a50b5c8c81a496ac32f79737a878", "T2T1_de_test_msg_sd_protect.py::test_refresh": "e559dc474096349cb817d56d7b86220ed3f187e5dc936524484e8571c83101dd", @@ -11343,7 +11381,7 @@ "T2T1_en_bitcoin-test_signtx.py::test_information": "44e044c3f8b299aeed155f0aec66f60510aa7dcd3986d340c76ef128de6a428a", "T2T1_en_bitcoin-test_signtx.py::test_information_cancel": "d242ec98f96d0db41ebcd7a44ce31bac38637ebd1103727445a068118c51956b", "T2T1_en_bitcoin-test_signtx.py::test_information_mixed": "c76e1d787c589090bd950101fda86f62dff83e70d4f879ea1fb0519158c1e95a", -"T2T1_en_bitcoin-test_signtx.py::test_information_replacement": "ffce40135620e220930713ec3ec9554e6ae801aea34235ed0ff89dbb805c891c", +"T2T1_en_bitcoin-test_signtx.py::test_information_replacement": "6978800b4c7d2fb354f1b65427b3c5813c673c4b048d511062367dd21958e337", "T2T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "924ed54c06fd791910d8a43e0b7c6f39852b3406167045211dca4e495dc69b05", "T2T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", "T2T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", @@ -11500,8 +11538,8 @@ "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "28383f6ff4094be8d3ce786556bd40fc97c3ad0b4c5879328824084ab4317b86", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8deed6efec61f0237dcc1e5048492e01d55c7bd833f2c70e4e8fed46e836ad61", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8ed36af60e84e1e43cf6d4e5c3fd3fff0125005ecb86f4a78e240f7837e777ea", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "92b06620086f0cb3b61937db9c942d5eee357efa3fbbd2f86781732f2f692f89", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e02e6bcb1f9f6ea287ea5282600f622d52522aa463b48cdbb4ca107201e33d2d", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "5fa29d20d33f783c4f89fc1ee23bb988086fb87cc1dcb0a3325abfe40e5a8ce1", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "80247d2af8f2f69ae56ce1bceb839c56819787404f68e783c2d18fa53a973b37", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "115d5b4e020583299b990d80068cf91c7cb3a66a9911d75ea1b6edff41e18a46", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5eebe2c33a6cd56cd926da5a8b525d862997df17846ac49ff137947a5034ef83", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f7d576e9ee746008a36d2a19ec7832cb2d107193e77303e5865ad4e811ee52ef", @@ -11531,17 +11569,17 @@ "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a3259e596d5f8c4ca8e9ba4de2f14fe30d269a4c3d011778b84f73ae4a4c80f0", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7fabc235b262cbb2fa45e42aeb900bbc1cdd8a684d2ad5e08b51fdb147657990", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "c40565fd4fdcf558c29c67b25e2aaf88e1e41c3d35735c344ee09ec672cc1266", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0053e85ac2f8d5659d098f1d878fa7e37d712c79d3bed8a596bb639fdfc720e3", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "37afe319cc51bfd117eb04d350e1d2a174030d0f21723eef23ccec7eeb887bfe", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5a9e1aedd3047e3f741f88549fb2497e2e9216ee326553efd146ae078449a5bd", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4b9aa38bea642c08c31c946baf12ce209b5106a5d8894939def0d899c580a4af", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "dee5757130eda7c811b9b5c8b020cb3388ad7f390d0db6df3a3f4f005b511d07", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "7260bda81821bfb718ea557cdd9a2c6b3b947c4cea63047a326876937eda5b99", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "46383b901b3f85451a3e75048df580ec2eacc236d9f4e4660b5ff4bf1e250850", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f56f2859cd090b59f75d20dc48e510bcec839f1554b03f94662853f8c8e84a85", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "5dd80af476ecb417881167555c48b0e267d575ce29f952dba73158861de802b6", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3acdf363fd73843b24bcc482bbffafc0f38eee9a29e1b46a2d101e19851b77bb", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fe53efd4fb003b92c0ec7c73e4f5bdb4e37cda1b42bd86c319328d127e4074ed", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "e8f224fe8adedfeba19c84716af802720cb4df5bb2e346f58b7e9daaefc1a129", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "dca5729b439904a756b21e18660a933446881f9d4fa47b2b579717b9d6a72e52", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "9bcff6602d53b7ab987fa11da5e47a6dd4c1ce458af332acf93e8699709cd3fd", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "151fb9e8eb4eb78c1433de17883440f658661137667733b78ce46027e29f856a", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "a0b76d678392490f7c541a7c7c12ef8526c198e95cf7bd0af353d47eb08bd0ad", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "983e3b9f3561af17c336cee3740317b86e136595b2ccacf1449537480fcab4fd", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b75c9f7cd0741200af7dadb268f07cf29bb80d1b6b3ee5d7b640c31b5544f41d", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d0aa6f83db15be9e81e663daed4ab2d08c7c4f50fe3947a95607ace47e33dfdf", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "0f2826893d63d9044ccade5681fc1c1e1bb132fa18df0536be1809333bdd5eef", @@ -11571,10 +11609,10 @@ "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "abd332668db3bf105d3a8e55fa1ccf90b4f1acb62e5d1c2860f7ee2599b80534", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2994c65408ded3a3a389cb1d3fb7fffd72f6e24aab6b26f6eba08315c09e9444", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "288e4e13bb3a3a7948e925dcbad8c61cc7245c52409818bd2178b49f0c230c23", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "614cc13a64f35ac3247b83440cdea22a18257afef165fc54d41917500cdd409f", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "1c4bf364e403371d1b4570a6d7a2b8f9ac231851cbf67f56f64fe350e0edadd1", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a9958771b2394aa3d6488f5d28d0516fb2632997be4ef3cfe272d8468b475e70", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8281c20dcf6ccadd0e0a0db53adb4641706dbcb48bf685762173f5645abfa39b", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "6a2cb191aa36816f00bedfea929dc868a848d15af170c1e99e86642e7d8002e8", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4d55bc70d7b38582328a0e550760ce91aae4d3ae2aa7d51f782a56aa55b1da72", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "031809cf59aafa25d8122290ac28a5db0b9474d31e361f8bbda01d5b25f22dc0", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "72607f8e4f41d2e1ca04659392399acc2f3170a354f7d3080f134e96e45a5077", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5dafbc14364b371d938a5dbf2dd1696958dd68fd2f10702dd512f5bd7df02602", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a882c9e5ffbaca9ec0e7f0fcc275270268fa9ef3c9ed135e543ce39af912cbe5", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "d3c1b530540a57f50020e62cd9acfe8c2d64d8c1ecad74226e9419876ae73f16", @@ -11584,9 +11622,9 @@ "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1b397226957de70e91fe48344b86beed80d3c21fc5bd2b6c2b38c1ec6d6a35f3", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "99898cc1734fd63bf4d7906f30087e77138857371109b4c58fcb0aa8d312476f", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "bd9d8a62ed8e4bb8dfe479f6c14d026b41a8b5f8d9a65c21784306dc208f4cdf", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93a3099eba0179a1ac48e751a7140dedf77cfc572fcc90e8fa6c9f110ceb2b8c", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "027943246f0638357411b1195bd35a2f0d9a976449a7efd3d8dbf26b8205410e", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6173e8a3a2165a0f54bc124bc505a7ce9aeefecb07cb0803fa22c7d9e2487d0a", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "49207af4806e8cb1aa8c03b389c04a3b6f6c37b2c3154c38d62cc5693be94d08", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "786523529b700db7ad9360c2fd8cabe40acf98a3ef1b684d289892d354694510", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "fb7381a9577f078a61c8d0c81096dd2e2302fb836d759cb226fd681a5b83f235", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "dde7f3743ec2e9bd7d441b2f6970ccda38c47242fd64440126ded6f61825f756", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "eab03e524c6cfe6f04d0dcf1a7010faef85d62720f9d8722e6e137e7f05abc33", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9859e1419d1a4aa46be81171ec835e137184d834d5f57ef37e918061b485ca8e", @@ -11615,10 +11653,10 @@ "T2T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9343101c53fe8b7360ecd5a102b3e507aabf29f37eeb253df3c88f6deecacb7b", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b67edca40129904893563b0c85d2c86398a078cb740a3ca6e23d6489afc1813", -"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3e13929eb81c8077e946779e4ab3b1d3b5a461bf5a4cf3a886d6ac0a1d5297d4", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b60ab8284f14a76be943e309b8cdd90d55344886685075015b301405233637da", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cfc2ff70d16e4b00becc081367494ef3ea66f2702b318752077ea1002e6aa972", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3854c5f53d8d54a3641d61031b666f51f12dd21b7a022b4dcff9cf0748700d94", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b37e039e74b17959b0d2f13d60bac840956b655b93d8395b9dceba54b4e0e504", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7572d0edd262f438a53b71eb79f311c0219cc472613492fbc72797d879f5c1be", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", @@ -11683,7 +11721,7 @@ "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "eb632b495afa606d4eb03d0cd449859a659c5d40ad8f6ada7b33fd59ef163708", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", -"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9cab8899d57fb9af64ff23424412eb65c58edf40a87d6cb149c7f5f7d2415c48", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b501c4b73b1a745c96b8c9706f28ec0bb06d5235e5739af83fa777aa2d0c7d41", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e4e1a5639f4f1c87505dc88a390e38c15f421ea962dc370f2df8aee075e7385", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ca56afd69ea46ac474132a124c7dd8e11857275f728c9a858f38bea64c9b9e4a", @@ -12003,20 +12041,20 @@ "T2T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", "T2T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", "T2T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", -"T2T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "714e4c5f6e6b45fa3e78f74c7ee5e3332f39686f8b708a4f56232105bde0c3e4", +"T2T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "dc447d776e60c98da4eada56e7dd443952f893a05c328157dc1fdbea3083edd3", "T2T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8bc38a773c40a70c1eb9b91a5d02ce0a61591ce9e42bd0073bc1395f560f2490", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4b89fe403777b910e365031ff4da4ddf844d8d9385ee6d562d8582e7ef270b8d", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "a82c3762d114bf542e9753faf7c54027cfb02c0fddfb7ba914eedac69366fbfb", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "afb28033e3093ee6d38266defb14bfe1ae36b727869b631e0b055694ab9097d7", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c4ef05473b0b238e68385cda289a26b8ecf8c86db213cc6b346a225a0f323332", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "de100f2d3c8cc88672a09795ea9324368bf2c6e5e6b5b76ee04f2b3e69a80444", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "0c819d43c537b170b91edd29dc1ec88b78577131c6c4a84d14de7cdc42c3042f", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "207fb30e30123a92291f95b3769a217e05110ddf9f8c3446970459f2fe50b44a", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "405d4ac4856c34af5606e49a742235062b1550b4fcaec4fc4ac3ac4bbe998256", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c133a3b7addfda617ccd9401ae28a12b1681e9ce47c28ddee8ae78a3ebccbd6d", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e924f9c247e732fa9b727d71b844bdd734be9afcb4a26ebb74a4450153229f95", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "fac986a6b54fd0ed850fd3810df55de3dc411ebfa9520b8e51ec255bffaf0467", -"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "106a4cf1f71595f65c4ed2f12b4f868ba0c5f8b6dce75805489be8e6df3f39cf", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "50e60fb4531b7b138a3f0792b0a162471fb8658090b02006f130b3ac3b1c8d7a", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "025459bb0c8bd96b167a23050be43f87d65f1f87ddabb9ac9ad51d8e056de170", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "057a83c0a06d17d5d5fdbbbe5a75bcf401967563458382985ba142584fa897c8", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3bceced5f4848e69e3731a56e29539b25e3bf090b1387d0942da318444f0e681", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "7b2b72f01ac8fd20481177e1080e76a1ca9cdaff4476fbdd7f7342b43536e992", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "d07ba6439be3e6ca294cec18644cb70c6b0e0e3c003048e0eabbf60bd6016713", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "baed2f830f3df503f8ff05dac80f474f1c42af3836cc5d19e203f05d1323abab", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "4d66aa816b4cad3969905185006fac1af048bd3dd3f9348e0328e4d1541a6b33", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "e4ca1240da6872bb8a02ce0d0e99fb0ee9b36d27715690697712785c71ba5e71", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "85f952f310b4c8efe017016e2f5e8ea43980ae4e5cb42c9bd4038063abd8a71b", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "de6a42c580b3c70f6d8054566fd271261b7b62bbc18d44f2d2567b141a81a275", +"T2T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "dbdf8732a6ef7f48f3371942dc91620ea24e52e539e99fa79a43c9acdfc5f736", "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", @@ -12108,57 +12146,57 @@ "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "93856fdb06fd1c0a151734a34e40d04b8c792ba87491219394fa58eeab40529a", -"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "33d58b3cbae9f0455791e0130d250e3093a3c2e6110cc8b7f407c5a3a4f3526d", +"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "04ce6e67d206ce99259cb2b115f7f9c5c8000d372d1475be3b5ee6eb6015f126", +"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6c2512ac453f165d59f5d34f7a750f3ed353b29cd77db7c0d0501512b395fe54", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "8d29cf9e1e28de42b19b7c90c3e1242ca012bce923eb8c1f96b27386eb280935", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e11ced4e4950c59d52bca1045770606dd08c648f96d5b4426c36048d740e0b45", -"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9d161076574c957b3708ec34771026a970b1ad90ac7bbf5b1492ded0de1f5ba4", +"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "fff9f0616cc0df6b8f8a8313d9a0a53a062a42be35e124799a4664f825492b2b", +"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "eb4f6f6a72adb29dfa531b94d4fd1dcfbcd4930702fbf76d1cdec61f9964f1f5", "T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7d0f0cac581360c5a8b64e229171f0c6a92972adff3c3ed334c483076021a041", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "43e4eb927539044b85ee59689a8f38e7d76fc3e035406dfe2b052ba6ca80c59a", "T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "980c374bd173485c06ffc3ad2f3874762ef065762ce063440791383f1bb01b08", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "2c4f3600b0f26c4da64add476618ce5bb9d759d914afe89c5a75eec3cd7ebeac", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "a1ad9e10356bd6223b37949538fbb560a4487aa9463d19a9001ad35c4834d8fd", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9271c61c3740658029b0fe3b375377233aaad70a97d929d984f6b1a16b3c1ef7", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c0886a9bef6b448d193ddf032c14b614069c5f742aacdfab0d4d21c53a5dd331", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4f90f47e88cca3af88975a817baa01937b21647c19d7799acea6795309bba28b", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "143d00d4b2fa5fccd6891526f349684b4866cb111320d45b46e1115bdc4f61aa", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "600a7d3ca182036c13ac657283a59dbafccb60d0c1c9b6b02aeddb8a82199854", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "27b09ed0d6dd37c84a35561f1098b546ed5f75802283f336dc62ee2af0612221", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "cacba8601cb23285d89d2fd3ca03959ea8f04b84daa099644724e6929d7f16b9", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "102c745c179cc2e8532989037ab9eeb22ef93776931cfa7a56abd59405e98206", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5a24c4e6f81ccb0e65b461f6bcd69a6db6548de5d98a267d01105769b0aca845", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1be12392d4068e7505b271f05f169ecad5f7f7b12c1690d2ae44900ea7850017", "T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d2a3afcb9f5e92f9e65172a0207a83ac372f2951fcec99fae2565a83a3a5c8fb", "T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "90d768219e974a83299fb3d079d457222a331aefd2e8fa69e7b2ffca7a2ad9bd", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "73de5bb9f1528b81396ebfd321df67f773f925d6cbd7e616a58ce30eaea27ef0", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3243d7ccd6e66de4da99fe363b72ff9d79874e2003bc313addf328e2b60cf4db", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "59786fd2798a68e0546515ccd7ec0d7e4c3276098545615850911899953681e1", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "703ed967f59738cf2a41aa6780656d1a8c77ab3c2cc558820981421a9e6475df", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "12ea0985454ab09cbec3d1f9e4246f0e6c098cc8ea69774ea253a473065e6938", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "66c45751002ae4d84e0ffb3a80349585604b5f19f87d08368e806ff0ac0d6cd5", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b5d6d520a1fa9d7c8e1d074dbb9646c62f0f5ff8c4fc192f5547b671d6bf7913", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "443ab1ba8f9bc006865e978418b4ccdf931f88ad5c13397467cfc01ed3b3e406", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7a6eda20f828b170eaf90a58813a5569ae7af9d0f49e41c4d84227e64107733c", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "a16d8e9838b762534c0a2d8c82c277ba81e49f018506dc26624a4a0d8cce97c6", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f9e8df5075762c89e5f9eacc171ecb1592c9e905ee87d07066f8d2863f7c8598", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "041e5ffdafb2812db3c37a6bcd89f50fb1906563aecffd95dbc02bceb8084172", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4b32bef901796d64fe03b215688da4af7c24d013b67ecd5b0d561043fa47dc44", -"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "5f3413af77cc76413fe1ec3e00e17850f8de504499b5bf9d753ed4d9351931e5", -"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2b866e19489d98b9924398080478e2126fe9769b057ea725e7ba795584adb1ad", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e5468c5e24463f2e7f0bd7eec981bb7e942cce7dbadcdbd7c5cf3bd1df229a4f", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ace23b7da1d9c8c5166ef4730cfb8dfbf23f185da5c34d620cf95a2827856e30", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e9c59501e2d5022ddff0235552c5bfdd91de253b343682287b9bd117dbd05de3", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6209aa5f47388c7e8f5fc371f44075c45c6649844beca3c22b76e210bcec6b95", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2524dcee47381f9479a455d9805885a2398aa97a4684934ccff7ce2dd375cbb2", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "e7eed0253526451561a8940bdf86d8dc566c48975d1bfca0853515d6e6ee0fb7", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6175f8f4c08c1d4dbd66cf94e1cc0619691a375ceff6b85d7cc98395a15dd690", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5bf8845dbe42b5b88d20e5f1074ee76ff5f25b7fac469a076fa34626e3aa435d", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "9afc89e46dfc5f7d43f47c758ab2d0c9689d16c47a48cc4b822b72ff899e2e3f", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "c497d8ecec0526e214fa3a2343be901699502e9918a26a6a677965be06e71f98", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "e9659581e610d41b9c68815f394919796009dfdf412ed9d2d13880d019bb4622", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "2d2dc64c2c2cfeb76c97323041db90d0765dec70cf070a42b432351d4b0c6831", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3b386895dc396490cce3dee33a1d4a8bcf33ba44e28b5f269cad844e8996918e", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b7fcc92505b0e347b374cbf1de143aaca54368fc9ba1e9e7d6e571eaa8556498", +"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "12d695f8b0a09d7a034453468e5759b162253dacdfc565d0f8f4788b4ab81fdf", +"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "99c4bbcda758c53dd3aa0c81dc0957c7568a68e8de9d3c553511f387fc8abbc0", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "673271fe37c3fb6a1e0096e1a951bdf5551c1769e332266769088c3e0cd6334d", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6ceb5fef088d8bbd703effa1dcbc0a0c76a1f506e929bfaaa986a16cea19f7d3", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f8af5a6e560f330d4a8dea6183ef92906b93ca14625c125492f33722e85a5408", "T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7846f566faafc178e190e2bf320b4028847ca58993c80fe4865dab6efd453f17", "T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "4bb136bb437fef98ee10aaf45c58febbc56a546c3615c77008426be88962a54e", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "e4f3dfbc35bf21259126b22941e91553fccbab26f38ba1600a68527abf747e3a", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2f7ddf762ea7964c2feb4b26bc658003228b9bdd93e74cf99646c27235106c06", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "550ef3ed1a280dfee383119ee41329956c47ae38162721cd3ad53f00d8423937", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "adfc882ee9368382c280d2d80a358e362d555f6dd72e645dcc6cb7bcb1a5bf56", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "f4ba7a0b808092c49a97dda6e514259de4cc8c40f79d814d6dc16db6fdf3e648", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9a091e24dd9e1a4f000f7b457c6c868d5a839ae5da56022c94dc8ad90900ee13", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "426b7fea50e15767f8038324ff1e6aac01f8cab1cf57a998b5c65951daa74ef6", -"T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "13c73bb3ea55849f7aa918f142942265ece4863f9f9645ffcdfb93fca5ab26f7", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b813ccd546705af63bb008b45f6c4eb68e3fe9f9612ca73fc9810f49d8fc5653", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "27992dd4817418121b86884da6a56c6cc0a212e0020ff2e2521ebe97f673fcd9", -"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "81629279d111b49272fa901ab4159580db5a9bc49aef74ec21d37292ed47767f", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c77f60956576fbb3970b0ca8afd06158040b2d450608f46cadb23c79c82bcb2a", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ce41425e83fd6b6497c77c2998b6c8727ba730daf22f166f2534880e17d936be", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b2943ddc4ddf51769b2a4e1f97272e226f9bba1d022c5c97e4f7012271cd1720", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "8f9a8607421425afded0210611b8bd0f8b05eda190df302e6da40a3c7afc92d1", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "441532e25ffed32936a96bbb6f0adc6f1d580412546fbe80f0425d53c6412a63", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c8a982a8a5250265b80f4e4c4ca23f90615f2a27c90426b9206e0940ffc71c23", +"T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "50f8c8c393c8c71994ce4aedb52db94e344f8a2f0d89a26b3dbf6a04d1fce179", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a6c19b82f7d87d23dd67b0b6fa0f113767819ea72d42bf8bd94ff685e43fceb9", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3c94e44599535deb9e05985b182eea87a341803a40a14adb974032ccd3dd81e0", +"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "999a5d667a2d5f88125d2a6d9c780768543bef84dc6a8d791b2e1e7482c43d2a", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f7de536a26c552c65ce103acf70095d0375ab60d864741dbecf96c61d8e1a602", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "fde26133f54ee834667ca2637806bbbd8e30640ae87f4753c0ed673fded09c72", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", @@ -12295,22 +12333,22 @@ "T2T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06aef40642884843baabe7e7d6b69bcd772d6f1e16f231d2c6244b6a727bd08c", "T2T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", "T2T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "2a23c234c26217026172b4c55c0a32d33e8b3002c4c618cbc4f6f80f28ad0501", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay": "5e0bd26f44c28d337a0591106e6884b30c4b3cf24e20e6b61ea9462f3d76d38f", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay": "5504c87baa17c6fd52a270132e24a01c0f6e87986a042c3ee988ade70caf409c", "T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0ec9ef683e3afc5a7e3ed70f19522fe85ca0d44e97ab712aeff3249a1496ea19", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "126ba1e98ad5e90a1882c4eb07a5b19403c8cfbb4c98de4b26f80933b12f5723", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "98e4ca9b025bd5537b0a303c6bab00705796801a2a3c79949578985ac547db65", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "6998e36416874ffbd08f93995c3bd372c0ec706b109c3b1689b2b2e2f7262ed1", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7fa7f17b1b3e5f69498fbfc8dc3e5edbad5841026017c4485a2daf2d04c9c688", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b13dc5e4d793f6b525498aa9d2abb8ee76641a89e7b8864e1f691655b01199db", -"T2T1_en_test_autolock.py::test_autolock_cancels_ui": "0ef959c5cfa7fb52c381fdbeb65ed1eecdd974e24f56c780fb2c747961d8e76a", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ac13ca5f92affa8296b97618d859a526a831a15dfbb19c73bccc2a5a28599043", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "9a023b19c12c1650eecec50c0000d26c6c918a7543959155dc6a8ae23e4110bb", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8e7198a958bc9d400359e93cf31e0f7c91b54cb5a0e9e7477ca2c2f53de666e3", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "82aa0132677c53b7f8487b5a29593524d98a0e1ee68d5aaca01ba7fab26e7e6d", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d72beaae7130964673150610b0a0ddf8e631b41e39bf54a5a436fc9fe3be29ff", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7952298ad99d95d896fd513c45491d320b1a17fb9e6533d6a7c9790779dc29ca", +"T2T1_en_test_autolock.py::test_autolock_cancels_ui": "01a9f12049428f4eb0d78493fd7833fdc0d46beaedaa0e41e48ee7ce4acf42dd", "T2T1_en_test_autolock.py::test_autolock_default_value": "26456e47387df96753a31089b42925fa24d29604564d9145a0a40e7eed03b04d", -"T2T1_en_test_autolock.py::test_autolock_ignores_getaddress": "2d1ca9c45112dad7e5bbb908baa086b02547a3e710fab8eff79551e63e19b790", -"T2T1_en_test_autolock.py::test_autolock_ignores_initialize": "2d1ca9c45112dad7e5bbb908baa086b02547a3e710fab8eff79551e63e19b790", +"T2T1_en_test_autolock.py::test_autolock_ignores_getaddress": "8bc4805e5fb3ad2d6b28ad68fd7f70c86a4b74a4f8946c3b9a54bd592054605d", +"T2T1_en_test_autolock.py::test_autolock_ignores_initialize": "8bc4805e5fb3ad2d6b28ad68fd7f70c86a4b74a4f8946c3b9a54bd592054605d", "T2T1_en_test_basic.py::test_capabilities": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_basic.py::test_device_id_different": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", "T2T1_en_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", @@ -12354,7 +12392,7 @@ "T2T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_msg_applysettings.py::test_apply_settings": "77be3f4bc733d438bbc10a6b0ed2d413f4ba1cbafe1ccc7659d05952043f353e", "T2T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "ef45d1caf6af022c3dce5a8daff55b09f46d1419475d222ac0abf666e4bb1bcb", -"T2T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a1f6dc01500cc25bb7ad302da3e5b6040567d9245486e2ab983bc7b03a511603", +"T2T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4356ecb3e22e2c04e396b1bff23f72382ae2796f0d93a0e778a25c3ba28857a4", "T2T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "4ac1c55b5f2eed836bffda4783e4bad80eff64b961b1c0a0140cec9fa6a4ba16", "T2T1_en_test_msg_applysettings.py::test_experimental_features": "523f74db7f660c261507dfdd92285981869af72c9ba391c4dfedb3f06ccf40ad", "T2T1_en_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", @@ -12362,11 +12400,11 @@ "T2T1_en_test_msg_backup_device.py::test_backup_bip39": "09c32059eea15ce17dd07bc34f09ca335e8a6cee573fef0095cf2105932a078a", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "5007dfedc1b4420b096f76d33acc9bcf77ec6083d54ca59571f5d225dfb2a33b", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4f13e0550f8e06481fd4f59d722d3893ea904f85fb20ec8018344347492aff1c", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b432bf3671b15fdcfb92113fcef0e95671c3d7beaae70b25a87d090d30f9a079", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "4a6f3fdd5d7ae36e6b5ad84faa5385565fd13f4ce3f7d915fa16c2184f99ebbd", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "12cc00992974f9270e19b891f14db49bd57c43ffa193d55b0d697f7943890543", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d3ffc763c2abd8dfa256d80710c51a5e880c63bd36460a6a57b97df3a418d8ba", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e17b49d05f231444684b0ebad638456b4b6d7b0ae195180778c3f687b7d0ca7d", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b2ca4d9b60edaeefca177e373ddcfca93ab67102c5b2082d8a80dacfa655340a", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b54caad20ec3418cc8079afe466c4054b208e5820e84fc30235ccce843967a91", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4c9f7ff6654f4340bc3e960b6ee143293a4a5d5ec3bc8f5bcb6604b4dacf3909", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "078d24fc71ed83d0d474a8aa9356bc66cba883c709f0e63b6db8405a244214bf", "T2T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", "T2T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", "T2T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -12381,21 +12419,21 @@ "T2T1_en_test_msg_changepin_t2.py::test_set_failed": "8102f364e48feb5a3bf9eca5435135ba955fca4c67b05e5fd543a662c5734d2c", "T2T1_en_test_msg_changepin_t2.py::test_set_pin": "001a60864717683c3edfcfaaf36adcf54a3e7459307ae8198802280657b2a918", "T2T1_en_test_msg_loaddevice.py::test_load_device_1": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"T2T1_en_test_msg_loaddevice.py::test_load_device_2": "b9c7333adbec293167ba17f4d7306422bc6d6247c22774a8b3e7b5f1d957f062", +"T2T1_en_test_msg_loaddevice.py::test_load_device_2": "3b8eac607fb749927b72b5cbf05546bf43b61d902d9c5379905f124b664d2bc1", "T2T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", "T2T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"T2T1_en_test_msg_loaddevice.py::test_load_device_utf": "524f7b55052a2465f6d837428685fa0654ecfd2757c4d2fa2d768fd8f93a323f", +"T2T1_en_test_msg_loaddevice.py::test_load_device_utf": "d3f943a509c3dc111f0633b8d832bf7edcd534564f1f7d6cd6a7dc6acdcdfa08", "T2T1_en_test_msg_ping.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", "T2T1_en_test_msg_sd_protect.py::test_enable_disable": "0c84d283dfb6d58ab91670d858f49e4229c7f7f98232288be0442d1758f5f31d", "T2T1_en_test_msg_sd_protect.py::test_refresh": "7643f69d7b680e5bae6c69be1112d1a22d396825b5f1b3a068df70efb1a738e7", "T2T1_en_test_msg_sd_protect.py::test_wipe": "aead68a021aac7aa311e63617e011bdbe83889e7da8579e1247ac07751dd574b", -"T2T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "c9df5badebf1e4b5eda48363392c539ebdad42060471414add7fef79b9278b80", +"T2T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "5f91145de9bed30ec2a59299daf00ba550c2796e69f4a416b67516604c7f562f", "T2T1_en_test_msg_wipedevice.py::test_wipe_device": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", -"T2T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", -"T2T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", -"T2T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T2T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T2T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", +"T2T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "19f014ae9368caa8c816d0eb613ca51038cec6b3a0b9d290b1e3fb5f0a7338e3", +"T2T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "19f014ae9368caa8c816d0eb613ca51038cec6b3a0b9d290b1e3fb5f0a7338e3", +"T2T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", +"T2T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", +"T2T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", "T2T1_en_test_pin.py::test_correct_pin": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_pin.py::test_exponential_backoff_t2": "f1b35ee4aa7a99d52c6c75cd8a8bcb96f93b6ccc0627f5f685da9e539a317311", "T2T1_en_test_pin.py::test_incorrect_pin_t2": "35ba6004f124e458c902ef581fc6f64a8e8cd6a33d655db070f7ff635613c6b0", @@ -12424,19 +12462,19 @@ "T2T1_en_test_session.py::test_derive_cardano_running_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session.py::test_end_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session.py::test_end_session_only_current": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_test_session.py::test_session_recycling": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T2T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "f39549678b9631de2991711e728ff7a703ab80be965d794b40c69c0010ede943", -"T2T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74ca896a0493ee40b4e3a709f4cf1ad1d5e80dcccf7229de09fe1a3e40fdc615", -"T2T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f7e9a2550ae7c57cefb0e2a13c62a1ead48fcbd86328d372ec7b54b26d51101a", -"T2T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "f6d22736654a397b99e7ed4700b88235953bf7b11a293b0fa975f8225dfbb07d", +"T2T1_en_test_session.py::test_session_recycling": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", +"T2T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "70a4470f371bf7c7b081e3db757be32e075380fe016f7995f8c809425787d1ec", +"T2T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4b168c313ec48ff938dae0dfe5ad06a7b22d1f5faa9f8400fb3b800ae87d8226", +"T2T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "9d0dc62af74dfcd2979b54fd422b0055b45fc2f827fe804f5f1adf81f2e8ccd1", +"T2T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "4e44fc968b3fd257aeda319d16ad27fa23ad8d4e4b954bf314931ea847520292", "T2T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "671a366a006193926c0af0d7a84f0feba09a220bca32fbc609b17ac431f6f79a", -"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "c4c9e8c395f99b21e7de2216154a18af726beca5b82a09e689b35d02b6d14eb8", +"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "eaeae4b1ba4117245a81507cf7152c5292c389283acecc518d09a681e1c848ba", +"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "8e11ca5bf9f2f2205c332ab419327c910067387c6b06bd5f652d4335bbe6261f", "T2T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b95cba09bd47cb9ac2df7272a1ae1e7a6d3ff3b345ad40ac3d139d99637c1ed8", -"T2T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5de5cbe74fe51d694ff926523f318ea3ad93f98bc5bbb13519e76c2f2c5cea43", -"T2T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b2d4b75a4c96cc3ab52056d4b4bc83a38d948bb35aaf422829b05c43ac0cf14", +"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b3dc95d0c70248610506be4bf506a1c525e7fa12ddafb876aae7c91b05ff38ab", +"T2T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "eb3a22dd9e8574f16ec47bb48db9609d3028be021e0902ee9cb2310c15f1107c", +"T2T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9c20ab85c4ccde600c9635764931c4133faa928020a670b1b0f0f6d01b06bc56", "T2T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "e956201e6a960c53fee449e29be2a3094d10bfd7ea3956b0c356aebc90891f60", "T2T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b8006f9f20dbe6b437522702ea1068b15b3320909f8d6d86eed47c700b4d9bed", "T2T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "f911f2fcc0813237d78c7c59a4237058aec8f8066116703ed4402b70ae802569", @@ -13490,18 +13528,18 @@ "T2T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", "T2T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "e9e534e578a7cf5f37a7fa93dabae02ef45c1f8c8ad2a4e506b6b799cf37b6fd", "T2T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "fb31df4d4d8a94f5a471c266ee597ca97352884a4fd97cd0c7aae2c0acfe9548", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "69a128679278135fb401f0e69269805e575522897d6394886b826108343c8f69", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "b5b6d01616abbff6e2ab0d9c48103db2ae52d28126dd049cfe716176ddfea976", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "806fb40fb2f5fbe2308be07a7c05eb62de5ff81615b7aa18595948178741e7b6", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "5448607fc6b5d9ae3b9ace69bae587b8bd4a13c168cd9b6c67402aa1eca8146c", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "7917fe4eee0777f97fb22dd957d576b7db0241dc055d38ee351f6f42e387a90a", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "b3099041f1d5a099a9352489c9b50bb196f3206700c0ad83be0e4a660912a53e", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "80a689147dbb47fa712c5753ab0706fab7616aea1bd28a8a200b6a74a64fff91", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "795febb368b491e969183c346044e7d9b9c74e06beb5eaba16014c35b0ac8062", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "a3d0520a75ccaa935644e92834bedcf5a94429923a10589df4f46829aa858225", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4ba9a687a114a68b647b9626a94c411855c7a32f5f588bb6381f7ccb83e42d0e", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "0b6aa1c12cf6916403b873f0ca4a4f1f9284a0c5259373e3ce06129bb24c2ddd", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "4c6e6f8e9ec5f8d07c2f7922787652f22eade639901819df4a8d04aa21899160", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "2b2e09b39a482294ba37f867f403185773a8d84df136be43fdc3ad361d12a148", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "47f69b7cafdc58e6a0168c2555224da13586a0b6de1112b3738ada17a7c1cacc", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "a579782952a930b4ebd223d19951ccc7bb9612839340d1f92354123c906b6797", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "eb28a58b7171fdbd6aa5f162796a0ae47050704b0f3d0ba3d38ec5a77d566c98", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "fca55053f6cb47ed5401ac09ee2278c3a1bac69f4708c17ff7b991ce3e0b8849", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "35b6d749d03edf13df172da955ba64bc7fd5ddbdceffdfbfdfc4688225d118f5", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6455496e1b09301429aa2fc46f81065f529a5fd0ae90ea873bcdc7a28f46a27e", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "d8d3e7b192d1cbc5c3ee43f3146a6d0cf72e16cfd087b3996643ef34dfaa35ae", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "5ae04d18507b7f636af47801dc605bed088639f6c7f8006a5884bb8fd97b3f95", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "7c963a544b213d7341ce241434de7217d07317053ae90cff9e71ed7ee8d266e0", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "5dd147dadaffebf7f266ecaa2f27b22ee20ff0e7357afef2a0f8ef830e727e47", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "649d37ab33761e5d6af86dd03acf64e55f21ac6a520b6fa48047f6d2b3cef818", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", @@ -13594,7 +13632,7 @@ "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "7e0065e2b2ea90de81cc374acac14704f11b029ffaebe646b166547f96f02c04", -"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "db12abd52337db8419087bbf680098fc21988f31fb83a8a51ab1c53560f47ab6", +"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4ebbcfdd859b77b4cb8679f3d6cd506d164a806ba47648e38b0c08f82f6ecc52", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "6b145744e38c8b5a166b00d39d93076edd266ce948e42ecd5f774876fe249bd9", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -13613,37 +13651,37 @@ "T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "721de1cea29573b0254e3a0e9c528a0dce689f704c2fb3804fdfe71df435a345", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "dc511287d381e40164fb32fe409906f4042e17367ba35c7d282e281707639e30", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "aeb20740f1aed49544823071d0fb58e942aa39ecea8dee58f4ccd872801ce798", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "02de62b333ee9f4f510977e95385a06c97dc66e4d700458dc8b73c16dbf80306", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "75082ea23878210f06b2782e3e241886df201e688b54b74f55ece47cb9a5cdf0", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "25d5ecc44da79bcaa3c31f8a5e4d9e215c4c4be125200cefa7d6e0fd35348add", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "46ff3391288bc879cd524d75440fdebc9326b65da5d4c05ebc9c57c728190b1e", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0e8e437276ab32efc4d3c961ec4f3e1ba8ba4e03eec5d640b52a38822d037df7", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a6d9c431ee736c40d7600e824321077794e207d7088b713f96ebca875e9a8f38", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "1a41ba9855f21bcad666b9e6e7077aee2cc770edb38b2d632a0210d5611b2c2e", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f638a59f17d88b973dd0ac432ed78e3d411fe4a56229ac29c845e019bef5de16", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "cc18812d2f5b7ef5c23555ebcad59a28e82c01d06f2c5907b952156c44045ff2", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "0a8fd0daaa315189ef7e063736fdf0301bd4ddb36ec31e2250a4f66408b1dc7c", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "2495dc14e3f0175f3b9c6850455dc12523a65ceaa76022ba7502a6dbd4e4f60d", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "105c981ef63c444c26e4280340e476a29ebee11015c079ec31ec3960229c154a", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5ade258d2f37bc47b0ce25f1478e669743e7d500a6e00f6d65b82c0367fb78c9", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7d4ff61c406026a3c79cf8438e656a4470cd69524fc1b32ff9876046e69355c4", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "13d9db7471734b2392a20df9a77229558c7204f3ad12ff1e94db94bf077acdbc", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "138aabf6bdefb4f490ebc3a03a721bda0df94328f636f157d05955cf74bec129", "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d405d791a687be77da11e1c7b37eb49feaa5dd74b5746fac42c5916385c8b63a", "T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "611d56d305fa5d605b191b866822428e99ab605e7634190e70d60070ed8f3195", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d224c8e21874c5a238a21cab83dc0b7ea8cf6b02f05df42b6a4cb2f3f380deb7", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ce28932ea3ad73e477b3d803d3e931705f7277f3b41be8b2de5f47d7137ae8ce", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "4b3e407baf258e9ea25afed08afe25544be9d0c4432551408e88cf201ca34df1", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a602cce0ad6488ec3017592345edf5655288c2f9afb3a4650cd351aa5ede5fa5", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e92fb0bc5645bd6bef799b291db6df29f43f72a25f323f8551838109ac6c7e6d", "T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "60e586ca000d39348f3081e31e1343d6940b583e52558298e6a9828dec1c6f0e", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9d230c629378a5bcbc95e49211701eaea051c9a4296cc3a3331dfdea9560da08", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "bf3fdb0a7070c901f72024c23e73f9a09fb8f51ec51795e5895199b4f466a2e8", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3feef5d60a1a5f6ab43f2033ef4b0a266c70223ebbec77b67bcc14ddc9a50e40", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "faa3527677ffafb45b176cda3164dd7d88f37d541c8dd9bcbd62b447483b8ddc", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "7a4689ce92194a64e29964de078a02a1e2348914b3cd91d8068026bff5e5e021", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "215421830b8cbde327892fce38c042d95db05a321a9979d206b99a4e59ce4fd6", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a3bd99f3660d1a3cda56e9739bbefc724deb8eeb4b73246e84503bfe789bde37", -"T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b8111873f3f468d5bc9aa2b1201dcffe108d65915009233381c611db0f4a0701", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f8eda21a5c8b07c28f352399b823ce46754c531c1cab4fc0a0515ed120600f99", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f3ed387809301e5d496f9d85d31fa2d042fcdca306fd49cca8392c88fca4844c", +"T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3513875bc5d108f1616cdb3d06e00fd8ba172c83477fdcbb557e23aff433b654", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0e20112218a699d6a1aaba78aabb7364e23470405541c41fab44e05780f399fd", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "61f83c6f6b2d23042faa825722826c71d26347c4d2c5492009a9f7fe8b06e276", "T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5595c2a1a2a3f549afd11d840a57664550b771a3eb0bdf98c19727bdae0704d6", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "eddfc055236a75dcbc0f593594678523a39e730482284ebe8e617331a0bbc212", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "47f6a0be563cf8d4b37558768a50eb22d40082689c0c9ce110b52a77a493323a", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "672f5fb5e66ca26a33a9c3019b08ed2f2648b18390f7656a34641bae1144cae0", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d1b9099840703d2fad41a6ebe2746163e1debb400f52cfb8714f156b17a0839e", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -13847,8 +13885,8 @@ "T2T1_es_test_msg_backup_device.py::test_backup_bip39": "72587b8abaf39c6437ceebda9b5adc0cd0dc1ba55309a12bc7aacd7519e5e54d", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "d2f760e520d57aab9f032b9890f7cdee4cd6e8399d554468ba9183f1c8be3685", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "400528125d0574ff08405d3347572f5628ef46048603ac0b6eef9ee035af6f8c", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e7e6f40d948aac962109dda203c6d993c62e8fd9a192ec7c360e3939d7ec7d61", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8996c33a3c1cf3d1acffa4e9aa359c27fb0db7d31557a0d73174c6b890b688a6", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "8e20c5e666c5e7b616ac911892cc199a1b01214017a00facef383c115f64199e", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "43d3ded542ea47db6f004f5b07d27ae8700c1f919bd5bb370b555bc53d3c4196", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c11497dbfdf0bedfc960c5cd13224af3f0ba0c8f59972628f230d022f629f54e", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "a6e0625189fa40f77a0c2dd58c76faac5f3beb3b2386cfd75b6c6efce1f69c40", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "02ad3175184eb9443b8e19b079bbddb2da91fca79733bc19910ef1044b0ad080", @@ -13869,7 +13907,7 @@ "T2T1_es_test_msg_loaddevice.py::test_load_device_2": "06a99573bb5648f29595b40fdd9147c9980e5307df65a164b11fd6bf37d5e925", "T2T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", "T2T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", -"T2T1_es_test_msg_loaddevice.py::test_load_device_utf": "90b0d5f5b1fb83bf9542bab1998f095558ffcc48b08d398d08e945bbd685dc61", +"T2T1_es_test_msg_loaddevice.py::test_load_device_utf": "df68f1caabdb888bc99893b727c1f7ff28add3c1db95a9f6fdcd27069da3a687", "T2T1_es_test_msg_ping.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", "T2T1_es_test_msg_sd_protect.py::test_enable_disable": "e902243f15441eeae15a67804f7f1d69751d0b160302b4755e2091a3a76a4668", "T2T1_es_test_msg_sd_protect.py::test_refresh": "653c60d1ec6b7362361ad3caa75d7ccab20db71b01d9c5047727102da304c7e7", @@ -14957,18 +14995,18 @@ "T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", "T2T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "e29654de22055ebbc1df87d28f388bb459a3b9621f04dba7dcd2cb3f87fde182", "T2T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "5329cb28e68167d514f3faddbccab0f961f6df1153471aac73214584d877f593", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "d53cca112b73ce71f80f06018e751071ff92c4ed945a92697ab6a9564cc32954", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "95612c88e0ce51851f0c15b816fcda0e7e8709e71cd371910676057fc14f7bd4", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "fb1769a865faceab1475f056d619fa87056fcd1d925a2043b453e6536f5c90f4", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "0338fffe20d3cc5f0d3eb7884532da9e6fc2ed423ca782500cffb2c14b5cd3ac", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "c724ab72cce704aa68e1f72301cc8d06d266b58a60f94aa73388d1dacf1d7155", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "bf54e749c9a5f27de4e0cc86f00974e9a34c5dcc3f4ac6b72df8dabc17034808", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6220039b13cbb33129b35333ad88c10cceaa59d1fc0f2d9fdab5275926d0e25f", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "4481dde1ec203066ec833dd80b59ff4bc62bd9b999a9b7c1285944a27ebce447", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "99907338c7818035cc59543bb3fbaee66c7a6733c01b1086ebdab95410858db0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fe4e99ea77c60c90c163f3e4b5eab6fb06829ff8e9a50a2c55c7d408d2d4fdde", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8080143e0900fa3c98f7feb88d10dc5ad3e9a9b89f1513301564bc06574c460c", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "af3c4058948220f5b8df1b06c0a6c2d560193315e050b2d4ed00c4ffc9cfeb19", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "8e4b8af17e22d14dcbdfcb4a4deb7c1ff141ab981585136dc0b89e4f3b8dc378", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "9933a646a8752a658611fabe7915be21a135b43e3193c7862d97b8be7d0b98a4", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "99e851a4dae695541dd4a6f16f19d93d6f5b1cd89c044e3140a8562ba3b0e9cb", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "2817962044763ea85affd5881323633d0ba3d1e38b4daa9d7f6cae15d70535d2", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "f78025b9f242d9ba3eefda79caf669f5c880aec3fd31a5e4c96322f44df8a97a", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "f3cf647fb3af7087c00575a892566b15d52b786d0a1d4cf6c2bb16f389314589", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "24902244378ba7f8a9bc2e85d4762d8db2b2ab08d894ab949f15ead97d2c356b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "5f8d0e2b53ce6311f6466018c49517bab79a54991b9bf45dcacbe36fc974ca85", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "8fc7faa759f3901782ff51cb809b785af7fd9ea658993940c449178be05026e0", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "922bfcd357220097dd54195ea9d25e08d3131d23f659f70f86dc6a83dc1d6a21", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "63bd0485fb2d1a56ffdbe0a818c9b4ff6d5f0b1fdcef839f89a6c10a3b9a0297", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "a9cb97a5f35cfc43c41303e1a31fb3d19a86961a13430824de133e4f9f46c032", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", @@ -15061,7 +15099,7 @@ "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8105146e2f6727d1fb2196e9d29c5e7928882d143ecf3502e84edb07f7e881f8", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6034c134f1de3a2a6fe81eb0b0292cf214adfc213e5f4a6e6284f6489a6e595c", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e5a0d1b276a783477214aaf9ea0bf2f98412a4e6f1432d02137689d7a7208a70", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "cb385afd9e01b8090e01ed1bdd57de7b6355ad430f7a96ebdca8d0095ecab95a", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -15080,37 +15118,37 @@ "T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "1d53dbc94b035b211660e58491b19f310eaad4389067fee294d3abc4aa3e7fa2", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e31f44d338bd64d8a3d8d8db82d0403b2d3314a999ce0b172c044ad1ec0890f1", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4d0ebbf93a6212f2a655ccb2707e8da7e8798d6e95e5786810d6484f98bd5aad", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "ec024a426936d65d84d7198ff2bf44a8ffa1f24e60afc00ebc0ca090937d56d6", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e80d8bfe48bb0f2a025664197e0b8273e93977950b9e24bab3ecbcad11e2aa75", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9e6e242d783ccefd9f7a18c2a594c72a1876abe937762c228f57ec2c500687cb", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "f38568946fcda9908536575970fece6e2930876793b57c34475c22670094d5d3", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "142b8458dba27108711b54b500d399a8f6b186d277e5c0704d82219fb70b76c9", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1261f7b79a1cb4a110f50cb00cae5cdc590768989b69c98b542386ead92de8c6", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2f251ec4904901641728864098844c56c3efe1e868f2f92903915ac162e3ce8f", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2618492c26098f91ea57e82feb5850d076fa707e7b0c195bb7a5760b1c47e8e3", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "1cd921e884adbf2453e120ceae4bb61ccbd5fcfc3280eb1576e88786e006e0e2", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "4618d385c51aed62a5edfa7063f61d4c5e1a2d9f4422658f2d3471b293b88d4e", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "42a66f1495a3ebeb3134c3be93ed6f4bfe8c4f9315522302192aeebe1a853edd", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "4452014cfbf7501ebadbb7d6c0954a67e9fb0d00e2ad2f9dcddbea8daf46d6fd", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b3a5868738d31a49d3ad3a97dc5145c9f0e0cef977bb895730d981155fe758af", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "170676fd40cdc1e27a9ff5cbe487504f93ad72a8d0cd92dd9954543f2b24df83", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d76bb291888f4f95a83f693f51f2f07dc30cdad245c8d142386e9607c11950fc", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "69a97169b5152d2c610f76dfccff7b91d348fd5235e5be33c99146ab54710b3c", "T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "461178dd45fc130048749dd679ae202547e64c3311e07ff9ea27a593c7cbe51d", "T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6904de14224eb55d657747ccbc0b73a093406d2910665c69dbfc65df949b1d3a", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e18f67ec58ea71bbd9d8dbc83a36846b5ef494cf4653e64b93c6f858a1834dd8", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ea1bbf0f0e4252474e2712921ed0714aaf4deb7fa2474e71189c70402c26cf85", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6a57b1e06196590b853ea89be9fbcea918b031e8ac8203d24dc7507047357a8f", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "485abe738f1c26dbd20891dd5a8252a29d151f3154799fcac23ee3fc197f5526", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "647986a83c9c0de60df929cf2b2f2a9a05a679bf08292f2c3d140b422e96fbbd", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "76c335f0724eef90678f8fbd7574ac3d8eb032f12990d7598d747388671a6bd4", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "42738caf00be9dfed9672705a4302b0422223b888f562556abef63e72e476e26", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a6b742998a8dd2d07dbbf06b595a71062255dc33d09b77b4c24a3a086c5e9ce2", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "978fcc41f8e83b9111f2733a1325a0b52c0aac5f7e5367783ad4a16fe0190587", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "03445a15416218d18604e3d229eb93e866227dc39e1f49a0f874cc9efb743e2f", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "2208c916427fa71ccbb243b67cbcfcd5ecc4cb7cb50235250234f2c78f58f240", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ac31713136ca74bef0d54440a062758acf2c55dbf58f784896d7edf9318bbf3d", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2100cc09016c1f1886c846b3540f46874fd32e1ee41550f5acf97c0d233d3d05", -"T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1a561435908f4823b0f9ff21e7cbf723156cad8a47fcea8c971d6da3b478fb75", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7ad537e761521280f5eec3971d83f1ea1e8f94db4b7650809c06864b712d023f", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4011b8b029d74dfd7f9fdda77921c20cc036addc39bc7bdefa145e663d4cc454", +"T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3e009a2815d01dcf3f283b4f0bc46f1d78927e7a9e7781fa1a5e3ed4413db616", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "cb6ab7cffa98fd0f421b4961aace0a414f76a429a17d7e620c59139702ae6a42", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0b3b3fcbd68c589d2ef05d3792da038ba8c8206eeb5f01a689370727d08f26b3", "T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2d4b40db5f46e4e8a4622bc46b4ecdf332c8c5103a229103ec6f794013d8924a", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "62847884f118fe529b68a45ec73673b5acbbd43b06566fed22debbbbef6f55a8", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d3aaa8ae01814399ea4fca753975e7348a8ed8965d97784ce02f08eadddce137", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "bab417bbdcbea06039baf2b9999c175cfb2150408eb32b9d393a072329cef6a7", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1691ed3de89b7fd8058efd1e9c6ccf27675cc8726adb2f4dd4e6a6531e163f9d", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", @@ -15314,8 +15352,8 @@ "T2T1_fr_test_msg_backup_device.py::test_backup_bip39": "f7cfec63b5210b7010c3b8dccf7cfca45565f9d3ab1bb0049b5e18d250c8b0e1", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "84944f3ce121140e1172cd3d1cdaca2fc8fb2755c3bd8788f509877ab45c12a1", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6fa2cb88d7c8d3608c729853d09aeff49257e5f3cc3c1bc8e12fc05ef7dc703e", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d9ee237e878d4539fef1f3f079cac65d3ddb26fee981bfa5fa405c27e28288de", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2ae9bf940f547719023c78f4aac88326be7c9b2ddf32824c2ade7bfee3dd2698", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "7d40961aec22dcc02a5b5ca132a43591035f0570896a90a9231ebdc2516df98b", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "69a9f46e8d6871cd5c2f96a41240e400ac9e7cc7798fb3c48dba2e676394759e", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "16a48db51cf4ac7c1207207fe92257510a86db58dceeabe847df1b324952fd1e", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4a320f05e153101f8216afb5882187bc0faad320981882ab9550c3654356133c", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6ae45b1161b593c518da6ca5b9595643a4a0f9cafdf78cd03c5e141ca027ac72", @@ -15336,7 +15374,7 @@ "T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "707eea5b0e06a085949c80b48f105b3b0d41f0822af09fab78b7d985b351678f", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "e13963504e7f36fbabb9697fe6c9198e9b5f440a051cb5255edf33f991086b13", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "6192186ae96aa9bde69226d2fa9d5fb495dc5a2f201e708e19bdc9584e8f6696", "T2T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", "T2T1_fr_test_msg_sd_protect.py::test_enable_disable": "9c9912fcf9470e481e8b6db4c2d28ab9d83f29d07db552ce48fba22fee1e8639", "T2T1_fr_test_msg_sd_protect.py::test_refresh": "746ca2d525a528f410fdfc86ca93ecfe03f7ff18e21fcb6d50111f41bd8cb098", @@ -15425,7301 +15463,7176 @@ "T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "627968384535fa1d8f62f145966c1e7f1151b234c10686ed59f6a84c9e8b1db0", "T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "40f0f8531b056495156f1cc7f7d8e77232ab2d9507b40abf2f15018b2ff9bfb7", "T2T1_en_test_shamir_persistence.py::test_abort": "69197749bc5d91c3721e145696420129630bec36f7f27c6f7f789eb3ef173b2b", -"T2T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "3059811fea05eaaebf5f7ef6475b6bda9a166b3d519cb803e6172992a14fa7d8", -"T2T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "219b0822432c9dbc51a6106b901b950aa97c6ac0b7dde8de4b8e951d891c2148", -"T2T1_en_test_shamir_persistence.py::test_recovery_single_reset": "dcee1170a05d710d297f835b6bc15085b33113bc11e04397254f2e7ae5e284f1", +"T2T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "9f250a0e8c03b02bbef9d2ae730580cb141ddefb49d1476fd2575ba746abb7f6", +"T2T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "8424cd9a54fb38e4fe51b62276dbc6f73dbc0f68e8a9657a5d615628d41cdd59", +"T2T1_en_test_shamir_persistence.py::test_recovery_single_reset": "009136e50ccd84cb96be8558566e3b5c89611d287d8a964e24e871f02ddf1033", "T2T1_en_test_wipe_code.py::test_wipe_code_activate_core": "1817eaf41ab1299d8c8deb39c0c7d1d4eb3ea74cc599fc5b6f40494f74c567fc" } }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e3c6cf99454680b7f6a635477d4b4e0343a8c379187a0b9a8746087d808c6584", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "0fecf449eceb7d31148b9e0363d942fd285f73d2368ddb8f1be5769acc40a266", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "0a3f8226afd5bc1846327ac6527bde04d78aa4d7289e782f9a8234ba02d36d4f", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "b2547cbc23739396957f512c60fbb4a41be986a28d5810441aea624b743f451f", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "208b0aae8abcc367ed570d5317c3ea76f1414a0a4cfe6f877c7d86fc868923c5", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "143f81514b342874f528182b55e53bc632924f3fd7f44967dd2a171e07f8fd70", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "c3a3ef8291fec640a93ab37ccc08bac97de5380e8c7b5105ba34243e89fc7be1", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "5ab884e92ab8105925457a3fc6f4fca866749f2eacbd1817b9c196375c4961f3", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5c51a2fe18b1595a975c0f7169413dc9761fa8bcf119dcb83dad1a44d23c9e34", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "93009c0d3def240f722bb94fb90d205b46e39a9c75d3a6de089fd21e3cde15bd", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3a03c5101dfcc644feea1ea6a7d26afc30e2687a790fc21a22d7bc7973b29ed0", -"T3T1_cs_test_lock.py::test_hold_to_lock": "ec202e9df1622e2f189652e7929db202d6017ef6df2a235ed0035cea032bdd05", -"T3T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_delete": "c1f8c0a733563756481ed0aaf15d833cfd266b69fab7daa7eeca6deff738c404", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_delete_all": "3fbeae85ba122e42f2732504c6030490f4bfa128a11aed685fb6cb74c03ac8f6", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "d76be1659ab6e14c56e81e649abbf38b2be27ca38d1c068e80e9ba60e8ee30a5", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "c972f7e990f993aaf55eb647db471635d52964cb122800c4bf006f4f5a1b519d", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "857c8c548418716cd548e4651161c16095931e3ac73cb7731b4e1421193c556d", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ba3bf7716db5e8fd2ae16cf60123926fdb20bc92ea0640ca78b5e283f1230761", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "c85fa947a20bc4b59fe852b490d1469887684170677a21c2adfe475c1e8a286e", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "ff4e8fc26b39fb4e50f542bc3f9e12e526e0e73f00a6f1b99d354e4166a09de3", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "c85fa947a20bc4b59fe852b490d1469887684170677a21c2adfe475c1e8a286e", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "8a66f279dd55fb7867b0cd3b87a961589e3ec45d6e08320488fe2ba4bb834ddb", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c60b0b0d19fe093de73e8b3ef3a7e65f6ea01ecc736ad6ed45fd44148d050716", -"T3T1_cs_test_passphrase_tt.py::test_passphrase_prompt_disappears": "5fd1a1add04b6a38619bb1788676676aa68d900055597ea1cc2118d441bab710", -"T3T1_cs_test_pin.py::test_pin_cancel": "1350a7290909796ef76a20ad1f1f4d849aecff45d6858a936369ac274c54ea3a", -"T3T1_cs_test_pin.py::test_pin_change": "47a3f558ae0ed7a84f8ed34cd50fb79feab55e8fe7d20e659e3af68929f5b12c", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "547997906f51a612129ce5c6c2e105093f38108ae7d1952b011fa7f1d2ab55e5", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "e6c8bc6f11706c2598688253d36e029cd4c94580fa8b57d8a9fa6a1d2de5892c", -"T3T1_cs_test_pin.py::test_pin_incorrect": "1e26d67ad98fc35bfaeef541126bf1d52b05551536a72a630cb36f893bc80979", -"T3T1_cs_test_pin.py::test_pin_long": "3bfb3a532a8ef0db18b84d036d4ef15a3c22e013660f236c0b5ec1c2a83c60a7", -"T3T1_cs_test_pin.py::test_pin_long_delete": "e913c0a0460feb1746035474aa36ea16826fbb4797fdb9c9cb57def31cb0500d", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "c3de0ab13a0df917c5e026375609c08a08a694ec13c9ece1a04629623ad62f64", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "7c7c28f6d0af928a6abb77ccd628705872738ab949aa676e2464b0a954b39dc1", -"T3T1_cs_test_pin.py::test_pin_setup": "f58e6b57a7fc9760d9322e149503950d8dce13d88c6318864a88c4759d447d60", -"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "c14b4c71c2da514c485926d583e71985a6ee11e8abd2734c562852b85f69977e", -"T3T1_cs_test_pin.py::test_pin_short": "e6c8bc6f11706c2598688253d36e029cd4c94580fa8b57d8a9fa6a1d2de5892c", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "c327f22c58a2833102c705cc817183bfd0fbf9d1df51af1b2da4a3c3c29c8789", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "f55c2eea6c6d09f22e8d3160628bf45612f96c5771dad7c9f53bc6df455423f1", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "7f8ef2ab3a7c4bf28463e4dc11891cc2d099f207cd9ef99a68df52b6f49be162", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8766eab82a293be974c517d14c569429187f081d56df48359ab3088fd6f25be6", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "20fa687cca06770b862cf90db02429d24fea3469d2b9a931b828093555307d5d", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e653fdcab4edec38ccf0634288e7d618bc8dd73eb2f22529cf9827898f56da17", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e92e2da82d9059394e1a920faac80dac711baf0c861a39178eda359b5e6c1d5c", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f3a392008691b8f34c37b8ec7e5bf3a0a0478b1518da906feb364680f40ff1c5", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "680e1d5bb5f07e0f4bf243369f4b44204dcddb50f4074497c7178a901f24b9e2", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "21ebaf87846a17908714c87aca596e0e00e3cbf5fcbab910c88d6642dd8e7534", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e69f1d962aa09b907c6ef4886604321584507031ca81194ae31ee359d3b18311", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "113199817596637d5eb61d6ff2e5d331651ae1bc2e2c41b018acc1e723fdc3ce", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a0aea17ae65b3e5769509207b64d2b13622fd9b6b05df8d4fa99fd7f6cceedbe", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "3f52bac5ce91656e17ddc47fe3fc25aeb222d083d302207ac551317c880aa065", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "55d42b477af4c98e2abdfe66d506437a4f3e45d7008dcc59ad3cdd80cd02665e", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ae09966cbfee6e5e1a55231aa5386e0c9235c411aa1560d30adb674078188590", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "fa40cfa1d84b174d4c191ba9e93e489cbf4398232f6f4a08b7591520336d5ec8", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "c8c5159b86ab463d1ace5ce25744b83dae647e1ef730dd27a1db0a74a6186ab5", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "0d488f7ebbfcbf9d0bd377d51cee7940b694edefbf31419a56e1d95e9d407c68", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "43e8b6b652177a58fe415dd17509f08475a4cfd32f6017774a245b8cb8d81eb6", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "37139e3f439c1c0516b55720e0c2830a7db9bb73434438093f746a2fc2df6228", -"T3T1_de_test_lock.py::test_hold_to_lock": "116a1bcf9e0d900a21815703564e58c8dfde980ce502d4fa57cd28b4ff68e7d4", -"T3T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", -"T3T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", -"T3T1_de_test_passphrase_tt.py::test_passphrase_delete": "5c12acac84008979af157f7153f10b30fa22b504499195318536506e6396ed83", -"T3T1_de_test_passphrase_tt.py::test_passphrase_delete_all": "4eced5507492c874a56c7808db03565e1d5ab44e07d493b15eb094b40d9f38f0", -"T3T1_de_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "03825b8f1a01bff5a0a1cb1567453b7958b642b0fd82c40de9ba14901bc340dd", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "0864ede4392d50141acd356a864d34e8c6d952ba300b8900d0999ef8033f0e2f", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "61e4870333d8e63b6dc548ea5cfce800f34f660019dcf4f0728ce207a119a819", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "4aa46cb7c98e511ca9a5c0957807832d8f34f6126ff16060f8546ca9db0c4db1", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "6d41457547ed56a8ab8e572d3a42e47c489e4758323e89d8f9f053d05e139a26", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "0e30b28337b7ff810da1914ed364bae45f7f8780be13adb3993a0c4dc5c5da6e", -"T3T1_de_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "6d41457547ed56a8ab8e572d3a42e47c489e4758323e89d8f9f053d05e139a26", -"T3T1_de_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "d261e3ebb629e5625261940bcda9e88db8a1d975b0543336382e654ac9416b49", -"T3T1_de_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c71a9a7718e3aa21db3c10f2f4d9dd0d6e9402f734ba990636c80af40bbe4a19", -"T3T1_de_test_passphrase_tt.py::test_passphrase_prompt_disappears": "1f935cdebf4b5978bd6d92becc760237357b78cc6c98001cf9df274a3b4578a0", -"T3T1_de_test_pin.py::test_pin_cancel": "ea81ade44cee7af4c9c544d511974e7a63ef0fa24705ab4dc11b4d9603c1a9bc", -"T3T1_de_test_pin.py::test_pin_change": "12a3b7eafad9cc8eef31f31a8bd0b062de1d7d34d55ecff382a7edf0c50ab207", -"T3T1_de_test_pin.py::test_pin_delete_hold": "5ec3f011eba01effc07cf383ad79cf9d3050d3a93fa77c5ff4096a32a857d09b", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "a2d6af10b742074e6526780616b0dcbda4323b3c01189b9e908bf0c5e5137e30", -"T3T1_de_test_pin.py::test_pin_incorrect": "a8daecd8dc1c40e4a52bf633d93f42d34f2834d313e1037d41404f8771fec72e", -"T3T1_de_test_pin.py::test_pin_long": "627c9cd893370e5dcce02279115f69b8d2d1d1582cede8b6dc4f252db530c83e", -"T3T1_de_test_pin.py::test_pin_long_delete": "f38933dcb0830a5529019b5736437082c1813443aacb1d33f4b987455fe14484", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "aed24e9a3abc237929856e5ffb8a492af371b671dc78d84291936c452551d9fb", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "2872a6dda4fa33bb2df75ba7ae33b30441fb5c38678ff7a46d1938da500e1624", -"T3T1_de_test_pin.py::test_pin_setup": "7f38490d956165130f8d75b4c6adcb1108a8f4b030373016acb99b29ab57e160", -"T3T1_de_test_pin.py::test_pin_setup_mismatch": "a5b9edf91fbaaa6e3c0589e49ea0e67861bed8022ffb4bc6f837cbf6d1440c11", -"T3T1_de_test_pin.py::test_pin_short": "a2d6af10b742074e6526780616b0dcbda4323b3c01189b9e908bf0c5e5137e30", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "423fcfb3849c9302812634e14e9bb9f8f1aafd44dba3da903b0c82073cb4273e", -"T3T1_de_test_pin.py::test_wipe_code_setup": "0669142996e087ddc546b710f9f5260d32b314c2cb2180b552e14b02528da94a", -"T3T1_de_test_recovery.py::test_recovery_bip39": "2311f002225c7db659abc065f01d1bffb8b871fb183b605cd1c0224337b44a66", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "393af9be535289774f4c7f69a31127c89497ae6b0a9c251dc5b97c847aa11b7d", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "37a9d5d636a53d6a7876f12b0bfdeb8861e23fb81559d65309bb005a755bb0ae", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "f9db3934ee7fe0b69525bbc642e2af061aa0010b937518940cce94f182f5db15", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c16a906a9cdf5312a1f139bc3e12b4f9df7200ea0530e0e30019196f767dd175", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2d237340b90cc6321e57f2a069a4446eb0652abd12fe80f392babbc5785643c7", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "92556fe19045d0db1867e8411278207f031a9c2782a51cc369a9ef575e842271", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "123b870c9d58865f2ae726e19dd464669d1a7c9098c714e40ce7d71b38f7542b", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "86415194d0a822709e64ad765a93c64967ace2adf61b4e7c4f3353e4486a4fbf", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a2e5ede5cca634d93f3a4a5bb4a8323b0ae5576652c4183233bba42152480c64", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "d7b8c8cb51eee2f131a74577e8beeb8209c93d4bcf12a52fcba461d8c37270b3", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "029a396c23594971c92d282526b736165a72bc5fc7d644c8c1217cf8bbdee485", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d882b3fb28ca8eef1a3b36440bc2e4e8cf73d3febdc53fd1f65f6b7befce144c", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "be557c3e4e0492d0b884d4ed549d3ae18e6175b74b5945e7ab6f2f96aab58748", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "700aa42142055535b4123d84f6d307a0589b43600c2dec525312d06c2af9aa18", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "736652b5298a7a4ee2e51282323d1150c9844b6f7b738f421ac4ad3a83d0788d", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5477bdefcafb60f529b1ba179d732e60608168464237f648b56f4a403a8bc3d9", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1d5c186e3bc5455a4d30a63c88da91b1c32ac8611f7bb39b171f77e206f9e34e", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "aec92d5ee0e1f6422a3b554464e1bea3a401a65777969fd9572a6d57ffbc50a5", -"T3T1_en_test_lock.py::test_hold_to_lock": "9d60d7aa2fbe6a0de14379e02ea825fbf9e21471596498f7be686f2538391f1d", -"T3T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", -"T3T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", -"T3T1_en_test_passphrase_tt.py::test_passphrase_delete": "6f9fd790c360ea8caa60a183f39d6515ce66493786f71611988f20b6fc5af86d", -"T3T1_en_test_passphrase_tt.py::test_passphrase_delete_all": "386969917a7112629f7a9e3a96f703953d8673a0c9bf5428b7612811566c29e7", -"T3T1_en_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "9ec26b92ff4ab6add7216f99329a9b34b59c69dba9ab916a4e9516f0d833b466", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "294e640dd8be88a92546107038ff6190e792896ae754d2d3c73e8d8c6bdac8be", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "bd916caf1254ee0fc93febad5f03c603592b4adfbc76c3cfe747ffe54ab6ae54", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "afa0d2c6bdfa50a22983ecbda113074703d21a008dbdd45e11e3d27a3fb704d8", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "c1a1cf0707dec05b41f36aba36d579ec3c93d5c404c565388bfea1787d094e67", -"T3T1_en_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "75beea9b4c13023ac3ea12fc7167e10f8d2eea2aa2f82426a0e7129b9bc21880", -"T3T1_en_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "dbf02c793dbb0c7e68e6fcfe1b7baeae0abd048c49dfbaf0994146ce46dcdbae", -"T3T1_en_test_passphrase_tt.py::test_passphrase_loop_all_characters": "82ff267d6ec0d48d8a1e25d1e77e598f563449dbff75fca7f2820dc1409fa453", -"T3T1_en_test_passphrase_tt.py::test_passphrase_prompt_disappears": "12a0d2dfe50c122326bd7ab6af7dd32008943091757ef6f5e9122dd721414987", -"T3T1_en_test_pin.py::test_pin_cancel": "05f5f819be61fec8c7c4341fd23c1bccf78cff93f05d573dd4f528bb0f1edbf5", -"T3T1_en_test_pin.py::test_pin_change": "b5e034705dc4490c0b77ddd73b05b091a00a07ff8f796329f4daca5f3b2692e2", -"T3T1_en_test_pin.py::test_pin_delete_hold": "6af2b57682fef94129a6e8b527b02a44dff2e996ff9695a729d339b1715f79e8", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "c0a1204dbf6300041da7ef5b1785417ff162ef8572eb4f6cca8cf4caae88d00e", -"T3T1_en_test_pin.py::test_pin_incorrect": "a8b0d396ad5e5732586e337f16db7f25ca9bf8837c7a3ad889049db6c60b0e1f", -"T3T1_en_test_pin.py::test_pin_long": "8bbeb3622777a8ade656e1d7babfc5bc5f0e2d65cfc71e44f6547ab690d807da", -"T3T1_en_test_pin.py::test_pin_long_delete": "4183ef3dc3ea6c8b469f53c81f373ea86696bc60791bc58e2268f223b01b5ba7", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "83ab91fdb4264beaa06e3aa241ae894548d73c647cb807c31ca456d4c809d5cc", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "a96907da6f88fb0271d98e7f6630a3282a8439d2eb847811186b46fbf8135419", -"T3T1_en_test_pin.py::test_pin_setup": "61975663353d6a02c0024c7d52d481b096f4ed57ab7a5a043367d49d586fbf38", -"T3T1_en_test_pin.py::test_pin_setup_mismatch": "2ccaaf68e752185f567a710b9a1c24b7e0157314c7e9b8583658b320c8e6cc79", -"T3T1_en_test_pin.py::test_pin_short": "c0a1204dbf6300041da7ef5b1785417ff162ef8572eb4f6cca8cf4caae88d00e", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "cac6df29cd37208e4154615852ad8d28642bc9cd1ba88f5a0dbf3169eaa04dc4", -"T3T1_en_test_pin.py::test_wipe_code_setup": "cfd7100fb36a1fc10b613fa400c22e2f06b7c50718080a3a632c3181faeaf557", -"T3T1_en_test_recovery.py::test_recovery_bip39": "62947c5512e7ba33f77af5d67d2063918dcccea5d5530db89f04bffa0c309ae6", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "35c67f93da34ba0f3c72a09076391bbc1ef24661d7ff8102f0394ee50250b29b", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "a9f1ab4971b614ec67fdaa9602f72ba5eebe54204b3735f8aa2b91ddeee41a19", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "beab50474b19fedaf4487c64071529e4217288942e4695ed795632559835b20b", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "483e5a827bb0c2db205e07614cc7cfa52c9e06e4d901f8b5895504b3b739c883", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "797c7b4fe2a4f4aa6c0b45f711ed8d1ecf9c49368b6acd9f48f6b747b1a7b2a1", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bf485914bdae5700176c2e420543996c2fa8d672c5065a9ffa1cd93a6069ba25", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2abb8f1c3ef0ff50ddd87b599b5887b18677844086fa747de58983592a5b9eec", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f5dd586173207ad0c2ca10288d9b0459bcd9c47b322a762bf69a48152a8d6884", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "31873e72e779156bc1ef9045b2ac30ba25568692032850f71d1a16dae9e93a7f", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "a2da4e7cd30e51e3a8587286660adfce5d6ca3dd0528a6c75c3f1c321ea6586c", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "c8ac6b447810ca25784351e810a18eb2979dfe15e2f83bb24e170e3149f7f29e", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "499e0b8904c178f2b88eee73fc90591033c7573f2f7ba246247bf1a5506b0060", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "43e9a64487eb5dd479c81e9f2fec09d9688832c5fffb1ab2acdd158a28572b9a", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "210a7bae28c84565bf5fc748583449bc71b5de5f3ae4b64bf8923cdb35b35ea6", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "40e03c97e2ef2887fcb8431d6e18eea96e4e50f75cb5936d1873248b96648bc2", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "84e827a499d351b95b85610135fe1982784461e1d0c844ba6500ae1589fed331", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "aa33c4552c5b86dffd3660249cac9f10ad471dbc562884d0998ab9c9c3dfb1a9", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "753ba5089987774778c8b50a1b1b17db750d085667b7bbc76a7b78ac406094de", -"T3T1_es_test_lock.py::test_hold_to_lock": "8692abc2f68ad3577824088bbb1898cbe7574f3730083224601d9fd6ca847252", -"T3T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", -"T3T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", -"T3T1_es_test_passphrase_tt.py::test_passphrase_delete": "f7049961cde87ed77ed2536e73faae8e77b8d30d9d75dce9465bd2c2bc5ae809", -"T3T1_es_test_passphrase_tt.py::test_passphrase_delete_all": "bf89b2bcf5d644eb10f6988743f2dbd3b9f8fa3cf2ee5a8dd56077311cf6868a", -"T3T1_es_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "287eb89fe15b58be4f6ab9ac6338ed9cd8fc5463c15eed663ff6be7b185bf377", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "8d3a77d9b996aa27071b00d5227fbb1c67f9d93d3789a3612974511fc00f15e6", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "79fffc686f8e154e4fe2380f37f5fad1a6853f83720326b9339084e0c715d737", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "3d28976a89877c4763d5ae55bf29d0ab4ef1d17c37535e7c485d931593b5fda6", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "de23481b08acd3ae320e55b30dcb33ffc62c011a4fb4f2bb619728a8e7b2878d", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "4e5206468e6ab2729471bfeff0bf1f897007c4435476618474c35729c2f5f5f4", -"T3T1_es_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "de23481b08acd3ae320e55b30dcb33ffc62c011a4fb4f2bb619728a8e7b2878d", -"T3T1_es_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "978f69c3e8a9286d26fecfd92dcb8aefab18d703efb7f09040156c0bfe13c3fc", -"T3T1_es_test_passphrase_tt.py::test_passphrase_loop_all_characters": "974cb2879ac66ee32b9342242fa12c8cd8f72102fbf6323e47245738742fdb01", -"T3T1_es_test_passphrase_tt.py::test_passphrase_prompt_disappears": "874ccf635951029c0322e6d8b69ec3b9ef59a18cbd6d39baf9589fbd8612331b", -"T3T1_es_test_pin.py::test_pin_cancel": "a2e3180edead65ae2d612dafa42867a2f510d3a2409fc235101be47d1f197fb1", -"T3T1_es_test_pin.py::test_pin_change": "c48fb329766d35d1333271167f16b49c9b0fbeb3ecce8e9b62d25bfeacc76ac0", -"T3T1_es_test_pin.py::test_pin_delete_hold": "077302727057bd5b39ecdb8185e7ec4e0b4fb8b46c39f0cd781a962483e0ddc6", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "b0ccec10f6c83939c9d125c3bf3fa002a2e938da3500140137811a63febb7441", -"T3T1_es_test_pin.py::test_pin_incorrect": "f7d3eb4d7f477f78f1e25974efd1d0ce9387372861f902fecf4268a510d43b3e", -"T3T1_es_test_pin.py::test_pin_long": "5f727e79382488097f3b0cf2c6036f30646044f21ea322224575dfb585158db5", -"T3T1_es_test_pin.py::test_pin_long_delete": "cb1a81389b4f8c6de6b7fe459b94544e37184d195450ac597294a63bd48e41f3", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "3ff64da9880bd41b3f54aa910892d1a173cf73052577c1c44b369ccf799b85d7", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "aacc6d2959fcd8ba2117d6e9d2fa2bece29acff55ee5e62244eda72a9181ed2d", -"T3T1_es_test_pin.py::test_pin_setup": "42d4ec32a135fa091f60081e41515bed8c992dee7e5aa51fd285f5a83e14bb97", -"T3T1_es_test_pin.py::test_pin_setup_mismatch": "d5404828241cfc928c698a6f7ff07a6c48905990c2479ddc54c40cb4eee5a898", -"T3T1_es_test_pin.py::test_pin_short": "b0ccec10f6c83939c9d125c3bf3fa002a2e938da3500140137811a63febb7441", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "81abef93d84e258a2a4a4235a20a3c2a251820c8a24fe920ba04c965c16e8a6f", -"T3T1_es_test_pin.py::test_wipe_code_setup": "a6b3beefb6b1455bd2908cfe2b58dab7274aca7c98176ad88c5a945cac743325", -"T3T1_es_test_recovery.py::test_recovery_bip39": "edff80f9c3c7a59f46347412bf55365be54720d35543f862cf3a27209195dc16", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "1b15cdc0e1d8b2087d71a43ed131b9c21efd339a7ffb71f1c7330c180bd3275d", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "796fa6b469663f333d82bb296dc286d0c36be1cea4bcf5b7efd4371871d782aa", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "c1387c1c2fb4286512d93824a12f953f16b51295cc8d558cae6fd1e310eaa090", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f7bb76360e3a220397b1bda5b22db52892f0d3bd8eab972a54d8275512df465d", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "34b4d79679b131418c5abf52c77e37b56040ca1061fffe40d88cf3f16ddcbacd", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d8e59e0ab7f56274f6f40c10407c8d7edf43f83a3dad40b1e7a5476afded6322", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "fde2cd2b6fc6a0a622464fe5b1f2a59eeb511f75e0e43af0ab52400084d110bd", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2cfdef780039ba2a24fd93545148696f6f8b5f7ee3049c3e005be03020655bc5", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "57aa1b6bcd629465c3f0716d0be70861c124264d601cbefdeda7c3a8498afab0", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "1f7c2890d794cd107243e4d7892a9beb209d98437ff7ff67eb3a4a85bdbce4fe", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "231d960801a67f9264d975e0fdecc865cdcca0d3dfccae71b8c6906ff1e7d1cd", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "88ec818a2193993a5cd23f9708e8d343c1f9eca505759f4a178131b56c0f4e95", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "6e5ffef280c38a6271cba4221ab7e686c6918e20faf1db24e1ae06736ecf8bda", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "70c84970b185ed2864c3f90eb98a3db5baf1872911dd87021e41531e93553d3d", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "6d4aa4011816184fe5dd277e931d370d666e0da7f332b74d21c4906a9fdd2bed", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5d981c3d2867e2397f98c4d4c86e1d63b2c2c72359a61826884cc17a6640eb78", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "dc863629743d58a7c936f7d6937a834e4fcbce89a0457eb57048dba6d34d6822", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "daa82f01abac86d9ab279a55153fcde0a3e17dc557457f230e8a7929413ad53d", -"T3T1_fr_test_lock.py::test_hold_to_lock": "1b0ac32693b45bd3f93826006a3a33efb2619b7d9698ca35be742c59f6f1411d", -"T3T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_delete": "4b0c7f08f8e573a8df489f1c342bc52637fb0e5a306a42471a82668c443fea62", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_delete_all": "be782f4684be677f69bdc9ad264858fd1cd21e8184c3c76700633ecddf0ec094", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "0d5481161bc8239c790f07f67249e8198bfcb930edc85237ce41f2540e822eed", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "ba7d6b4f413bf860a4bfa01504f4e063b6d8bf9712277c7cde5f74515f3c1612", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "382103eb3d416d90ad1dc82c0b0de8c4d0cb22bd8caa3f29c06add807c81df6f", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d2a8394f5b38d9cdc5001aee90878216cfea406cf4de00491d2bfa18b4522f51", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "ca04bf1dfbb0e84966c2b3a77efb7862a113f7a1df126dc8a07d8161b6f37747", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "4d00ca50bc9e09f2903b799e59883c25c12ef1a9bd0e39916dff3985f4571b54", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "ca04bf1dfbb0e84966c2b3a77efb7862a113f7a1df126dc8a07d8161b6f37747", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "23fcaa8ba5d295c6cad8e66622514dc1d382dcceb2485046158852a2af508753", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_loop_all_characters": "138f00a9fd5d8d49fea2062b74d3518ab6ea0c0442453743897ca9f4e4001610", -"T3T1_fr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "2338104c8aad606e9ccfa0774ebe33a688c5b9237289e8d08de16fc6d6c19426", -"T3T1_fr_test_pin.py::test_pin_cancel": "d042a69c511b077e6feb819da7234dcde385179870b46f968221be395a3cf16c", -"T3T1_fr_test_pin.py::test_pin_change": "843045a97835da52bb54fa427d2b4747a405c3ae8f8f016231f0e811da676d42", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "991d6377d39c485bb96b4d4a4bd0e1d4a36fc3e1d85adbdabb936db769f06f7d", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "b1da4ebb9e347f2759870b511cdbca6b6b41e2e9af62b424ed2c18e908dd229a", -"T3T1_fr_test_pin.py::test_pin_incorrect": "3f74004795c0ca97cf92f828fed5d055a1190c6ff80dc9bb918cc1c2adf590ae", -"T3T1_fr_test_pin.py::test_pin_long": "2fb022e6e95dbd6069a7a4c5f84af65601b5f67bbb119d3d6872b7032d14fb06", -"T3T1_fr_test_pin.py::test_pin_long_delete": "ea6e4b13819e1e3905eb141456a603d99e85480fcf4909c5c87745c4a82c8819", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "e705c1b9dd2e5c93e68d22d6b2e9c1c3f468ac1e921a610ea9ca83d90c31642c", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "476ca666c08fd17d786e50ade620ff5d83dc1b1b9f12838550c91b428e3f8ca5", -"T3T1_fr_test_pin.py::test_pin_setup": "c89bab92f2c6312bcb90765b70bba4acea65a5404a9448d1a48acc65e7305c87", -"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "68b8d7176492ade4cee98bdb8a8b30cfe2870b2a9c7a69edd8209690399e21cf", -"T3T1_fr_test_pin.py::test_pin_short": "b1da4ebb9e347f2759870b511cdbca6b6b41e2e9af62b424ed2c18e908dd229a", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "2e1624de4edb6f24cb6915a68aa0c3a1ed96ed12b001874574b7833a920a57a9", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "574aa40b533b644bd133d48d61258c220a3370bd5573c769e4f17ea87c9b55d2", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "68e149f8af48153e48c5c7c4d0b81d499ba619806306a17ed9a42427dbf27261", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "7259f03479342329ad3e17880bbc6fd198eee09d0884df8c97d225747fbf8841", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "a5169417e155f73ecb329c2573e79e37f30eac2f1f4ba7d4a7dc60f0131ad1a5", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "95957ef5e91b9e091145be5b2ae87d6708a4cd273ff44cc726a16d153beb04dd", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ad5bb88c49d8fe2bcb597cdb069784e978f27dc6e07392ea824c4e5cd2413de8", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aaf4035b2a8844d087e8d086da206c746ab539018bce4c6c62b22873259b2ca8", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6c41941944005875ee69916658d60bef9f020054b049da4b2a35141f6b4d7ec8", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4485e68569087b764f50ef7e86fa47fc4fb049e7bf01982ba7c6bac960502434" +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ac67a6186ddbd139067a725765b9562cf96533f9dffc5a0881eb7e9cb7a32f1e", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "d51ba1050a1a13d9df41d98a23a6ef9bb1ee38b871d469dc45e1a4330e81e7dd", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "c74f42626b961bebe469b9f59b2e29629cae0be2e239879059d6d4471e59b998", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "f0645c27e9ed32b657b92856b6c137e1347f62306ec1ac99ea5197af409fdf84", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "2607a8ddfaa850ab98c5fe09ca41e212f5538f6c792f8c135c5399bb9a2a11ac", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "c2dfe5a4968ec90ef6078a6608bef15147a53751f820f39b1518380244f2f846", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "ee776d69887f468c92457a3306c5b0aa3f175e6ba70755f2781c6eb3196494bd", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "ca720be36d9c8cf40ceff1b99ae3f0a1fe4e97a33d3c2002a45f27a5f30a45da", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "e8e0b9616f8293416273a1598698eb82cde260f027b5317a0f4dd603fc54a1a9", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "16c3d188521b16c27a0bf443c14dead4a708cba10d0d1ceec39211ebab0bd249", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "775a3fb885fc85bb3113099733c2779c76c008d235cf4d87510e1b8ebd6de456", +"T3T1_cs_test_lock.py::test_hold_to_lock": "ab815386c5f462ac347e2755013d367465b679c0991257ba9ff7b8f5108523d8", +"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "f7dbf4445377b08518906b4a25b7d65de109ca98cd000b7b6b5a020deb316c00", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "111548fc15dd051ce6bd87e6ea86cee7bb1dcab4e960f1d5ca8872ae891458c7", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "ff8a9b92da584cc732aade10326c38c9fe8b427002bd7c778c0e807d82c02219", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "314172be0a3a3221ec424db307526f4014f3b4b185c6018f3b30313a3df4c24c", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "5daa5e2edad8c5919dd7818069136e6319bdd82c092588e50df26d9b076cc57e", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "16640127a25f7e48156118d66d4ae3cb7adb8fe703c0a614c098633a69795d00", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "f00f63e8a4c55264598dd0a270d197245a031fcb9be951c0cbd87905f7a69f0e", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "560edc1168997b3b9eb2fcf1af860d1a73af2683eeef5783a15ae281532f6f50", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "9e631217b2a91882f9cbdf6dae0dd4a2cc68e3cc90721a9e395cb638bf65b808", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "a9f1029e69f0c2084651b7f0597936f6d24312287aee759e360a5fc567d2a8b6", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "9e631217b2a91882f9cbdf6dae0dd4a2cc68e3cc90721a9e395cb638bf65b808", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "78b32bfca1e2c1f075e0aab5ef90370d0e3ebe705979f4bddb1957eec9628bd1", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "3fda9e45ed73eb88f75c80e672558b920365f4cbcfdf26197454616003fc41c9", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "7c58308384a9180df87208297e2d9adc431eaa92dc2c6a8edc7a252550721a99", +"T3T1_cs_test_pin.py::test_pin_cancel": "f081d69f38a16b85e0203c5dee43a9a50a97ac9f76c48597869600bbee581167", +"T3T1_cs_test_pin.py::test_pin_change": "434d894fbd4f18c4b25f3fdf01da27c919e836054533a3806a5bb090e3b21cfe", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "e8d6e2dec9439368f36bca647724c7ba3e50ac96efa441df18702013db3331e1", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "6940b8863ee03a0a1f1df6225735287de063b4d38a5f979fb4629c6d2a033681", +"T3T1_cs_test_pin.py::test_pin_incorrect": "441332382993b43a3ddbfd8b6285cc300249ed467826516c2a164c8d9fef86e6", +"T3T1_cs_test_pin.py::test_pin_long": "b0da8fb96be6acfae27d1ec58f326093e6f9c5ebab99daa9c95f0deb62e3b3a3", +"T3T1_cs_test_pin.py::test_pin_long_delete": "c63f158d108eac84588fec3268cd082c8f2795e8c6b88744b3e2e72497314411", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "ed07aca616dcda7078d2ee05a97d1a06b7413536f8e588d5007f295b2d200359", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "bea52d47a9e20bcdd761f7bd6fa1871bfa798a375a87553a63867ce17dbed363", +"T3T1_cs_test_pin.py::test_pin_setup": "8023fc9a32d3723168f9f6418e41f155a5f321a60d72bd7bdb87e558d7299ee2", +"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "9882761b67e4e3f64b707162074127aa2a940e50e66d0c95c2d5540c3e6d8d87", +"T3T1_cs_test_pin.py::test_pin_short": "6940b8863ee03a0a1f1df6225735287de063b4d38a5f979fb4629c6d2a033681", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "7495aaa31aeed729767f62f83ea896149af76fc64e08e7f462814e0d80f3f59a", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "b62276bd776363271361ac4c7a4463a4c6f65b3d58621ec9da8b0ecb1cb7aeed", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "f0834c329cc1491a6ee7366cabff7fb73e64b99649a5dcec95079795cfaa9d01", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "b13cabe20b8adfa628d6b498a19406746cab21ef792d3925bdbc964c90d2673e", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "648e940fa077ab5095a22a4cc4cff8a9c524a46b8f70f63bf3e4539ecc84da6a", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e854ea31f9326c7e559c1f1b9daad7bfc39f25b42088e45984a06eb76acbfcaf", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "39ed96ed3150eac94e2540de3b0b92ec2a049966bf3918c132aa1c9b8479a1b8", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bff7e9655e49e369973449c681a9da79cf22ae708e8f7dc807a91ea11d12ebb2", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "02abe290ce98b13363844e5cb707bfc9eed707f8d52d5727906982a9875423f1", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1c8b3ef296ead98cb3b043ed403907bcafd09dc8322195930ab79bd8ba4a43a6", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b61f4b5878793269b7207a67cb4e2697085ff8f8cba9362dc7459d280d082c9c", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "8bc80fc91d20f028c2bfdf8f40700a0f1fcf48a9095d8ee10b8692d300575f5c", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7905ca51d068ab83e75bc41ed155ca9ea5350508dbc1c158a91d70755b59783f", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "0c748997cb5ee5189bf64c30a9ca7715160af36de740799533b3bccc798c5b4d", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "ff93135c594fd9003cb59fd49927b53999a1b75e0851394683dd194e3fe12146", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "093ebe89b64daac1970426853e84e99d27f7d4b491d7ddf65ef4bb867bd4358c", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "21c31be7e151acf37c2ff69a541ad871bb98ab797c94c1d1020f94eff68bc605", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "bda293f6f3b2d0b56aa6d876c8102562b71f1ebc808b2fac362138f00ef1680a", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b70b66bf3c30c265a34d1ef59bee700685af4ba07a31e296a0139dfb262c2058", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "31484c09d1a450fc32bc046e385d3f56f3f200a7d8bb15a0bc286ad46b262b4b", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1cf6b1b2e674e2aa9ed44649f7e51d2ceafea7d2bf59584c02fb0d800f2c8d5a", +"T3T1_de_test_lock.py::test_hold_to_lock": "1b1e29f86500569b2dd7e78fe51a8f9dcf244c9a419ffdabd866983fd47380cf", +"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "a2aa71e638459f399b1484119520eff4abf7ad0c5d435d785dcdb0e20886fef6", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "f601a2c7f5dfc10da5b4de1aae35768eb14c7eaefa00ed86d2ec014822e1c49e", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "03ea4a53765ad288cac0e79227c8cd58f81cc865797f551a5d8ee5a97c3cb031", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "c2c0100c315d4ac3c6c880e98e62a274fc58719746ffa824c29c3e0d6600dc80", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "d31d57aec015920993691a73ae127fb754e9e35acc5dd7d1cb01ec1c83bc9b0d", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "5a02f0ed2748877547bcc94bbb39584a425ffae32b63ab733d5643f87225c016", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "75bd8c02f9e9302c5e7e740023f9111618304b8134f096860a9b57702d8c9efc", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d18defeba3174fadb1ee7b71c8d8edf18d3a36b0171401d88ea35021874d2643", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "bbee65e32e0a7a502338e8aae6f5a59947d4702dd6989ee161c483d1d76bac59", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "b7ce727da33de6dfcf3a844581efccbc2337837f923479e6e98a32d2867d6d97", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "bbee65e32e0a7a502338e8aae6f5a59947d4702dd6989ee161c483d1d76bac59", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "37aab3d831ea8058cd039d95fc669c8f73a4913c0761e1bac595df09a69b14ee", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "02d097a96db0544723bd799b0591eb25f43f75fd473c4d92d114f8ee3ef2f93a", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "68fffc7d36fdf22b553436fec4bc9bd4cb2b8eceba547acaa4a20a25d4fc434c", +"T3T1_de_test_pin.py::test_pin_cancel": "8eef44bf201c0c1828177324e0be5c0c20fc69f2891231e74f35e601c522a98d", +"T3T1_de_test_pin.py::test_pin_change": "2a30ef26cf6c4b063bfc0ac327abb38aeef597a865a7627627622047f81e20f4", +"T3T1_de_test_pin.py::test_pin_delete_hold": "1f80f5ee8a6757dce5f8cef061d6ce3fca5b191c4420e4523a07b9de823c8739", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "0adf20f141674a807036925da7385c722100a9ae95e25f9a527cd83857067c04", +"T3T1_de_test_pin.py::test_pin_incorrect": "4660a40b7ce62ec40604b22f17e33b8b0bfc8714e2feda277865516a14eaa285", +"T3T1_de_test_pin.py::test_pin_long": "5eca540c4b8ea226b938a415aa79c12d19515070139a846df10d348ae3574025", +"T3T1_de_test_pin.py::test_pin_long_delete": "726bddbea5688ccafa77de845ddc145f880527e0a41db7c1da37c2b8ad391ea8", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "d41415bbcb1071fce9e28d6cf3fd557ccd5a201f9be7fc30c9dd77dac2f45b99", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "f57a7f9e5a6fa046889f6baa0bd36bcc15fe7f1eb0398dd71af886c4e13f45ef", +"T3T1_de_test_pin.py::test_pin_setup": "97c4cdefe97d427a87f7ef548db726ed4401081a316db632eb341ca25efd12bf", +"T3T1_de_test_pin.py::test_pin_setup_mismatch": "9f27112bf6a2e8757218156e31d86a8ed96b420f5150446217979533beebbbc4", +"T3T1_de_test_pin.py::test_pin_short": "0adf20f141674a807036925da7385c722100a9ae95e25f9a527cd83857067c04", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "9beb9faea17e3aa9b8a03be35e348ef7573c540c015a0b9cd31c106338c7c441", +"T3T1_de_test_pin.py::test_wipe_code_setup": "ecd23dd3e7288c58daeef2072e8be99cc001d6bc5241073312b0e51633c435ed", +"T3T1_de_test_recovery.py::test_recovery_bip39": "15f6d7bd3867e6463f9006d50f3258898d82c248e8f05976e977bf5d83dabde9", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "6415d9ed0abac403be474f556c595aa641bb1c72a4817e7211561299adfee0e2", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "e3df12a36ab08f8f895656078533f1eb122242a58a81ebbe84ff094402ffce12", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "8be3b4f264daf7cc5e5dfae89840ffeb87ff7ccd90681d1cbfe694ca8e7877b0", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b88f3b3660d42a09d44665b3324b7082bd1ca72d24e1a1a849c529193b6708c3", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aae031061e8234f1ffaf6748f79fc9645a26bc5a74de114268fbd9e154002566", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "416dfacd01feca039fa215915da061692276da61a20ba6d2c66c76249b44d65b", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2a7571c95f6a6ff283a5d19b2fb6eff5cb97654084f62093295d24fe9e11dc50", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "78b63a30649f282fad2be5c1db70d3b20491c3517fc77c7deafcc0fa9602de63", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "d432ff8bf0574b1a08586bd7dcfd248b6242d64a4cfd901a1b8bcd54c27c01f6", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "97751db637df03f06121b3f74efd24d2cf3c02faab99c14ba8212f087990c161", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "489087ea2f4697c1dbf28fd74ee844c2c24b77719c5a7077e5779f48e37869e8", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "dda7a9c378443375063e481174619dd777a4742c8f18d89ec2fcef8bc45025f9", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "efadd078c1028f68ffa0401b536ba36a99d716e96268d57e10e205b91bb5a18a", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "83c99265485a3cfa4373af80c14dbe72167a34f3e16bc716fce5dabdafda30fc", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "103da751954f4b5e7b647c3d1366906e99ed86b19dc4c49a98f88de4d1eec218", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "83caf4f90628d5b70b783347ecc96f9abf5ec61aaadb0eb7609562991efee03e", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "17ff00ed05e5b253d0634914f96688de5bded85085e8b12c5073faf3415b8149", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c60d3bb3076c2345a3e8e7993872e2648c3c1de037a02fbb77271a4b0d79b072", +"T3T1_en_test_lock.py::test_hold_to_lock": "357626f19891dec50bdbd63de82a9a109a7a1b369dc80c57795821a61aa6517c", +"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "76f2e768206149132686e9a239df0c0d5761a7ad6e596f6a000c28da8ba87ae8", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "e73d3959b333059e1d3aa20f02378f00631596e7a2690ce6176cf2173153bd55", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "b65c806281d35e91f7cef0bf092e38f59218c3690107a2053a366003a88ea7ac", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "379ddfc5ca420c38ccf3fd2cec0a06b0d4b14a6cb04fded95589ea5e5b3dd195", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "46046b31a52ea8e7d3595256063dbb56d2505cf38655e61cd72e83bdef996e4f", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "1657467a2da1aa10a431ea49b2a29f782a127cf8ee288d837a55016c6e5ce1a5", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "4b9de62b5b3b3f710830dfb734888cdb0de3cd62d174d02a9f91e344bc7ddfa2", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "3bb2f09acd596c67ccb9ee9ebdcf5b517dcc8b39d2c5115cbd8af95de8f40780", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "868d240daef77f49964222e37ce45fb1922169a67d1dca26b996ea695c8822de", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4b2dfc90bbe721dd522f5a961bc992ddf043802f45bbd5a444d703f502c9bb89", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "868d240daef77f49964222e37ce45fb1922169a67d1dca26b996ea695c8822de", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "607e2f002b0b59f4b69d1f9342f12a9c6e28031803a1429afc9f36498af7d094", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "bff5c244dd709d65d5f3cfa52b2298a8a08df11a5e93861e73ca02f8b7512ddd", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "dc06defddf9eca05eaeec9c9169cbfa1bc616204a930052fc6470f420cf33622", +"T3T1_en_test_pin.py::test_pin_cancel": "fff24be4e52ed179ac26fa0e7ac8aaabcf2bba55767978eb5371de83e3880903", +"T3T1_en_test_pin.py::test_pin_change": "4c4969c330700297ff39fd02f2f3f2c4c76b924249740786e5950b7f601434c1", +"T3T1_en_test_pin.py::test_pin_delete_hold": "186f499e9db2dcade1e8343e8d8e4d31be18e6e93baf2ed9df4ef0211309bda3", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "843cc9e30809976553ea5d018cc1f09be2741365138b764799ca0c03adc470f1", +"T3T1_en_test_pin.py::test_pin_incorrect": "db2fe363db0c936c04060051530d74de7019d0de5ae81452a88e29466a702630", +"T3T1_en_test_pin.py::test_pin_long": "8ad76c3c005ed4d552837cd720f3229957e49cbb098668b702963bd6f3d24b1c", +"T3T1_en_test_pin.py::test_pin_long_delete": "c7c6bdf186dedf67185b4fddea1ad0ebab1ee6d22082c3995f903468e0be9ce9", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "8c8802026a799bc15e81e082828ff43867ad77b34ed9f9e6549f60916deaa0c0", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "686152781d383be4126258815fdaed4c6ea34fb3fcfba20745383bbcd10b8c67", +"T3T1_en_test_pin.py::test_pin_setup": "9d71fbf1841df474c364a343fd35fe8c751701423b242945ca056325d3d823e1", +"T3T1_en_test_pin.py::test_pin_setup_mismatch": "f5985ac445db316a2138462b0ac53fccdb5ac5268b788a79dce3cadb2b23ef31", +"T3T1_en_test_pin.py::test_pin_short": "843cc9e30809976553ea5d018cc1f09be2741365138b764799ca0c03adc470f1", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "7ba810661123c0391e395dc363e571868b7151f6dc2cbed401e2b973b6bf8eb3", +"T3T1_en_test_pin.py::test_wipe_code_setup": "c51583b78604e3c5f90767cbf36b884efe7b73fefbc7a880023a16e1870d53f7", +"T3T1_en_test_recovery.py::test_recovery_bip39": "a5c4c6d7b45a390363133fcadccd3f275fca0b3f95064ca3873686eac5b69679", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b9c54f11c943d9de5152f85e4d08f27730f8ac042321d86cd59273bf9b030031", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "87000616f6fa2d05c05b5fbfa5c9dbac5732d4328570dd0c00a3514fe244aade", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "75f32f26c59273ff1efc0b97689c24e1139a5f267dd9b6ca95f3ca58006e752c", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e22a3f80f679cc51fd47867e173bab5277895d78d8506adc69dedc732d64f082", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8aa686ff10808a365e91b6755d1bb72753e2b594c6bf0023897785ab92e4a0ba", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "16ebce6d694cf5eaabb10c99aa13efd0ab090e01b78959dd3c029c27587b03f5", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "19e7c509b4b506f906201d15f3b941bf66b6c0f0acccf69e4d5165e1acb99821", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d5e022d2f8bc10aba212fcaf4dd17d2212d8dea16b61fee96d720e1713175141", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "c51a2ede71f5a0abc9a984c6a03e251bf9708080adb20549efecf8b056050dfc", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "964c12942c4ae6341d0a77438651d64f3778e64f62587ec01020e551fe00b04b", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "285fbd23f5c9acbf92b076f5f065ed4f7ff4a079de6a6b4885f992dcda137adf", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "a3c951206f50b0ef4a14d07782251a1e06a3495e619e66c3cd125084d9dc23b1", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "45b88ea70e5b3a24b1e4a91bfad7df0ab50b348b76796b504193bd697dc7cf31", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "32dffe9b2fd28789b9d481b6be94af049e8319dd6312d2d945f994756a16fddd", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "03232e4a4b32939fc90ade69a96b20f5d241b4f0e513f3964aca36a8714622a1", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "81bfe6cb1f67b57f5fb38c9564c6430efb7cdabbb876db027edd62a67a2a1579", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "cc89bd4d5bbf2d7253a1ffe0a5767f93cb147bdf463a260dbe5caace789c708e", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "94159596ece98c5b448136cc7409cf175646e0aab86d8c94b6d95b90582aef0c", +"T3T1_es_test_lock.py::test_hold_to_lock": "f54801e048c2230c9cb28e3145b2e5304159d342e4292ade8c347860ab59d6b2", +"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "16ddaa112b64dc49c3f72d64f53923a51c7e00d91f3ec303c0e530ffc651aed5", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "d84b27ae2946e1aedf774d9cf53b4816c0f88f09fde4dfb0baa0770909f04862", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "f7a5c47ceae80474faa306b02d5bf1d30cfa7bbc860064c225d9bd5daef03e75", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "bf0ac3b435a0bb0304928b7755f313212c12bf8e26c8ee7c8c8478be39aa1aa8", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "48687a5628b0737f0519106175eab5096153aa2f0d4989ecf82ad75426326891", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9a1ac7258c87065bd3e55eb7cba12ce5f04a6aab1ae334306d4ec859eea4dfa7", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "06d76a98398ad9464fbb4044f31177ee30a524e94113a846147c045088216fff", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "75dd4dd3034306019988c36970a2f1aaa060b70ed4f171ea23814cdf293a7042", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "4348fab9c54bbbae084247233cd9e910c795387bacff3e08c9493b5c1764afa3", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "fd893488032616d001621908992483ca12db96e67201a60db75101bcf1ec7570", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "4348fab9c54bbbae084247233cd9e910c795387bacff3e08c9493b5c1764afa3", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "06c46daba3204be33dce32350c50bb384ea587ce6526ae5511e9c31feb29bddb", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "ef078e54391d176b1ad939a0c49d960ae30717ebe3d113625fa188ab2cc360af", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ae618920b2e0ea1f52ca8d0afb7005d1b25096dda92787004337f30515509f84", +"T3T1_es_test_pin.py::test_pin_cancel": "6f4d0b14aad1a610e512cac0cd8ea2967c3518aba27dde4d74b4620b93190858", +"T3T1_es_test_pin.py::test_pin_change": "8624327de05f6a301c77df4df634b87819e29bc810f37eec7d1c2c97e69d393b", +"T3T1_es_test_pin.py::test_pin_delete_hold": "ece7e8d296868ef89612c3dbcf2ff3d0fdaf1f58c51bd19e367a8b0c56349577", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "240ba4ce68be9dbf6e359ce23bb4dd6286132673cce393b8716f3af633b74957", +"T3T1_es_test_pin.py::test_pin_incorrect": "5ae8945ad10e67d52dbb1b49a21f4a475fd6725e3029c7efaa7f568bb1babea5", +"T3T1_es_test_pin.py::test_pin_long": "e1c19434c219ca73c168b8c6e6e2d5828a48a39bffb8ddf424baa4b2fb6b3fff", +"T3T1_es_test_pin.py::test_pin_long_delete": "9f53a08fedf8d0ab44a36a881e020125c9c57b51edc6a1ae04c000ea8540ea20", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "fdcfb06a51638b7974c5b88fe5193cda6d58814c8dab60ae323cd8f141fe720f", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "37069b3688d1e445f9525ac7b25de31d96531ef861a44563a8a2dc67204b2a12", +"T3T1_es_test_pin.py::test_pin_setup": "7ae4e657cf610686b99a2b2c12d6e54a564b3f9eaccfd4263422de30dd3dea50", +"T3T1_es_test_pin.py::test_pin_setup_mismatch": "efde0de41dff220b968b6691dc46694bb5efcc171d7fe4f512f1454045f6bafb", +"T3T1_es_test_pin.py::test_pin_short": "240ba4ce68be9dbf6e359ce23bb4dd6286132673cce393b8716f3af633b74957", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "da3a48bd3cf0f25ad083eee00f1209ec4900a83e460c4112eb340f6b3d96739f", +"T3T1_es_test_pin.py::test_wipe_code_setup": "c2707cb2f87be541adf786f2cf858bf3fd7200ad8294447642dd074501306631", +"T3T1_es_test_recovery.py::test_recovery_bip39": "58e77b20850802f93d05eeac57172461fc9d0219db41373f88495df9b7d07fab", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "dd7e305b6558721eac4b7b3a5588eab30b122ae336572809b717166147aab2d3", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "4410c661bf3a0e8abef2c51f9f7161a473ac57cad1c727799dcf650ab57ef110", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "5f2bcaf5e6b1c5e42862219464304f4942c896bbec3b0f075f8a67d0696c44d7", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4d9d8eaa1b7abf9bd51f5a2fe32223e8bed8fa241287622be9e28d292c6c816f", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4248c25098cd739110645fcc7e37842e766831d7729af61b43b6ffe8046c8110", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4dbc8be3eff397d894b46e39ae37d9b29cfeef0e3deb930fec02a725c04e6a3b", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "94d6abdd282ae2842436d2c109b61b440f9e0551be822cdfb6a310dc666c7eb6", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "fae052a37baadb776733afe27d8bdc78842b4fbef24d3961a8f1d0d8ef8a54d5", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "de21e78af489622d19287d09aa9090df546884708b256c723d5b046d0cab34cd", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "0963090b34d40100fe350e2c1b43f9a342c0c90f2adf0d8472201e16e8fcc372", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "fdba521812b652c1669117b3d9aee098f366d40208388b0851f13f5669b9e64c", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b65a1ba474c106cd55ddb7dffd8f8723c65528750b0cc031d84b5522e84c5196", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "cb68a0a606a0f1a891dab8f1e3d70ba9c632021be8e84094a5e344175a7b22ad", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "293a6245e066bc298ba8665328a2c5290a88f3231a198213637a349012bc6570", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "268780a30a351292db3776b02c2d425290152c5ff8a760d55b0c0046f331301d", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3406578f72d0ba796f532b3e6de4e114e16aecb71a2c3d384ed58ce42055662e", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "bb0d7ff987103448ed6404c3be2033804d4b7bc0d93dbe1b43103918bb3497bc", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "19903ebed97caf40b33927cdb548f7aafac5d17dee83415ccdcd5e8724ec72f9", +"T3T1_fr_test_lock.py::test_hold_to_lock": "cd258db17f1f52b1a406e81974312b65fd64e243d5448f7189e73109f334960b", +"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "f4ed613dcff69cb04af6dec1af26f36803144c43771a4020eaa84a47f4352ef6", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "fbd83d95ee071d303e1a366119475029bd5c1528db9e061d294ca32dcd70d946", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "d23591c8f450befd340802a280b4507a823238da6f32546403e337c5a65baa45", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "a0f1eecfd2c6bc026eb484d794ff8190ba38ec2cff44f73e2f9d4f25351de6df", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "aae3c3d8e8989ea17259b71979db3c055ea0a5920bd1be9bf7b64f17bf5e95d9", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9a67c967da069865b9342ac9816f1a318eb6f88b1a26fffec47fc994fbc8c762", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5af2bef7eaf37e8e00addd29bfb43f629a2c177a625677b04e5d1630a80bd633", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "97470b6f6ce02e181dc87af36575958df24d62156bcfaff2f20d7a2687ee8aab", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "53de59ec1f7c75253071982ba194a43129b86cd99997017a732fb82d00093158", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "a6a49468ba2f4dadcd2ec2dfaaabfe79f4e9b2d129e6641d4dd8e3ac985e0d35", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "53de59ec1f7c75253071982ba194a43129b86cd99997017a732fb82d00093158", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "9b0536862f6ba7e3ce14f877a5a9bd7316be4a27aae530fb599ec0d9a5ae1b77", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6bb2ecdcbce2a1e74b16ddc8283364b4725ec0d57e785b341eca3ec5f88046ab", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "8ed116460015a49cfed7632dfa5ce15e5cdc62e7351993c970f6ae39d03c7bab", +"T3T1_fr_test_pin.py::test_pin_cancel": "66cea5884b1b645b97dcd0afe298de7418cbd2de42021c8b0b2729d92e3294cf", +"T3T1_fr_test_pin.py::test_pin_change": "99e8cb7ac837b0152966d1151aa5d72bb2ed05abd62e67a4bad7255efa04b629", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "336633f3064fdffa5fdc3a74bcdf3d5b8b0c4f100ec5b9dc45a2b00ec02dad02", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "8255dd3e5f9f79e8c4067fe4c3b6db4ba0ae43912c1023212ad7cbbfd34138bd", +"T3T1_fr_test_pin.py::test_pin_incorrect": "13e8e54b74da032484e99b14fa7b1069bbbc081abe88d9fd0920315d81969b92", +"T3T1_fr_test_pin.py::test_pin_long": "874af96c9a95d6ec5475703518f83dbfff62c44cf0de5ea33aee0e86c5e8b422", +"T3T1_fr_test_pin.py::test_pin_long_delete": "37dca69cd9c980d0b4cb631d655d811cfbe7465f6b7b85e864669280f341d3b3", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "192833932b5e5efb37a36ca06f9dbe32a1e99828b6c7c09328e9963c392ef580", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "bab2e5d6bded9be11066437f30a0a778f5dd24fa929e13a6946058e23b4349db", +"T3T1_fr_test_pin.py::test_pin_setup": "69dae15f6596a47a0dac77f1586c74a2860479bd8b16583cc1aa48cfc0842dc2", +"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "85c1c4d3399de3e66ddec638866d634ff87f1c9faf2f5f0db750f71c050fe836", +"T3T1_fr_test_pin.py::test_pin_short": "8255dd3e5f9f79e8c4067fe4c3b6db4ba0ae43912c1023212ad7cbbfd34138bd", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "e85289f3d8d513641eecc3add9e6d76dac18b83cbf1f2d37255b5c2389d41218", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "6a1aaa5b655625d7138cf50d860467450007c217ed623cfca2ee4f741d074a02", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "9ef119922825f53d8751c61c78c6f598314e4f938e59da60410f681a2ce11722", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "a800c1c3a6c32ad6fe70e81e0998cd263682707e1cf6cb1904b35e9211db4d25", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "7a61c403721ce51dcac0774ee851c08b42b87f7d0a0f40293c53e2e9435d9482", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "651d58c2a6bc1daa8ba193141ba11ed75ee6a8d2b794c0174284daf4e34b7449", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "32a4c9ccd863a5a327b3ce7053d5414bb7987dbfffb16516a95324e152beb2d2", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b29ceeb219646273daab05d7a7d98650b0cc8f588aec534744dad5370a54eaf0", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "530edb4f02fcdde53b1760907f2766523caaf7eb00d8de6b66de72b202fa9630", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5e77939010a4b1dfc4ea3bd3b32e17bf9c0a5bdfa9de6d9670d0c4d7bd683b45" }, "device_tests": { -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "fb9519eacd90972796571a24485f1830049e1e610b53fcdb65ea8b1099c8cb0d", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "aaf8e9fd3056e69ff7ac84ad051f9511e9a5076b6a34ee05c696ea3e3f90c508", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7caa0f9ec73082f01f8426c29e4085dddc29e3f75694e343e3ab60848a8436c2", -"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "99dd791ee89276532d64eb9292ffe6f0911437fa9a93ce50722bdefff004a8cc", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a265eb496e5021cc38ac33eff33c56d46c589369326ad158de5920aed380b3ca", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e6ef7b3dd4b425b1bbab2f49699d8d5508a8b993544d15b691f834d221e44844", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "ee068a81eb1462e340b3b19984e15b94819b707c39bd283d6d9c26d93786aa90", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "a265eb496e5021cc38ac33eff33c56d46c589369326ad158de5920aed380b3ca", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e6ef7b3dd4b425b1bbab2f49699d8d5508a8b993544d15b691f834d221e44844", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "ee068a81eb1462e340b3b19984e15b94819b707c39bd283d6d9c26d93786aa90", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "c9108adac3ce23380002a5019496c0224d7f24a05d12ed881cf8a444dd98d558", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b3cbfe5991c49b088827c9bb5d22e7b8267f85cc3ada3e0594b62845f2df75a9", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "509afffd6ed07242d5e2c5c1fe216e9a277f42d5f9d459084db3573f59bdc5c0", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "9b5d0dabf97a59321f37f5fe358d80762748326369de128e51c5f0c444c7e9f0", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2f529d6344caeecd4a3321f9dd2984cd1a7da414bbb6f28bc99ce3c0839fd502", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2f529d6344caeecd4a3321f9dd2984cd1a7da414bbb6f28bc99ce3c0839fd502", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1239ab191a3617f42b7158c9b00dd1aaa91d62b895fd0a32dbbc3e99a7326892", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d878ddcd406e5d02a65cc536992735fe257d07bc3791e05c30a4d2a574c6c5d3", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "545e82145565de5b2a8f9821f039eeb1b9d20743ba54233231091899377b12c3", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "1aa6862a3116390a6c85c17b03969b1b4b9fa1f8d55ece32988b7ef7a1c6b27d", -"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "543aefd40b045e048278d770d31a6e82f400c72f0b1f05d394bad09a12d32602", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "543aefd40b045e048278d770d31a6e82f400c72f0b1f05d394bad09a12d32602", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "565e103fbb7c26731162de2901ea5285bb1b8dfde908e9d3fd6ed56b0a54ae3a", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "a1dad26475d83ee1ae15484dcab06fe29d6306670bc93bb2404d056df74edc8c", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "13e14f251e58551ed1ec72882dec53bf786d42a572fd1d83873e7b92b37f33af", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "ef2c0fa7a21272bb89f4d28f5e1577b54e55d89ac5e1f5c2aad33a8cdb2c4fa2", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "f99dfbebba944f95f1f30a77c47f9dbdcea6e761cfdd0c420dd1835f05b9c081", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "1f408f02b929a73e1a20d1cfa15ad840d81ce9e428f9d4ddec92b26b9f2b5600", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "dd31d727d7051c41678d43131aa672021c7ede173a1bc8be6d76a2ba4c8d12b7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "11eba9a721c903ffca01f3e5d2baebc923a44f1b302319350b72313c7864f213", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "036cd6b5d18f1f6b305dac3a1b47f34b3f42b7d2ab1b515362429ba66ed3a49d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "1c0f9973ee845302f60bec85a8d53075e9fc600d6246c88b74e055b200c9ef8a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "40ac879588fec4d9103c19fa4dfd982c23ce71e8c35f618be107ab071a971747", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "33f0f6605f81f8469e4f5f4d18364b10c5cc83e4407ad5880e0e2a02d2b9b624", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "2a54327763f4f4f5f273c81f812ef3834fe600e00310c3589569c2186cda9a9a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "a79193e1249d98e901c41f03d6e2c739c8fd94a8ccb1ba712db6692159ad3f51", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "2478ba995eab253054d9726be995db148cf1706b148d852ae5b1f5c6f3faea00", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "e73182844076116213091879fccd868b316c6c2790b951afda04cfa1fc615840", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "59f62ab5b50dc69af561f304de7ee7bb9435a7aa207ca190608006d3cd93de9d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "bee3fef9235e53253a6092d9c36e33c100be86c9433add12eb8255c3da51aa82", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "68df3189d87a42611c09da1d94eec556048f48644e1fc3700bbc22632462c61e", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "42f11ce0b5d73590787e88b9c0555c31644107883e098f7e6a2ecd47f430e942", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "93c4155c6f70b36789e1be5334e2080e71dc41aee70c96476d70da6c76eb9250", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "1f408f02b929a73e1a20d1cfa15ad840d81ce9e428f9d4ddec92b26b9f2b5600", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "dd31d727d7051c41678d43131aa672021c7ede173a1bc8be6d76a2ba4c8d12b7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "11eba9a721c903ffca01f3e5d2baebc923a44f1b302319350b72313c7864f213", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "036cd6b5d18f1f6b305dac3a1b47f34b3f42b7d2ab1b515362429ba66ed3a49d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "1c0f9973ee845302f60bec85a8d53075e9fc600d6246c88b74e055b200c9ef8a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "40ac879588fec4d9103c19fa4dfd982c23ce71e8c35f618be107ab071a971747", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "33f0f6605f81f8469e4f5f4d18364b10c5cc83e4407ad5880e0e2a02d2b9b624", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "2a54327763f4f4f5f273c81f812ef3834fe600e00310c3589569c2186cda9a9a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "a79193e1249d98e901c41f03d6e2c739c8fd94a8ccb1ba712db6692159ad3f51", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "2478ba995eab253054d9726be995db148cf1706b148d852ae5b1f5c6f3faea00", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "e73182844076116213091879fccd868b316c6c2790b951afda04cfa1fc615840", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "59f62ab5b50dc69af561f304de7ee7bb9435a7aa207ca190608006d3cd93de9d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "bee3fef9235e53253a6092d9c36e33c100be86c9433add12eb8255c3da51aa82", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "68df3189d87a42611c09da1d94eec556048f48644e1fc3700bbc22632462c61e", -"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "27bc3cd1cd7b41560c9f68665ec27fcd92d71e6963c6f320cee734c7e4bf1074", -"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "73000a0630ba354f431820496b3d1e16a330f619bc4664ce4b61298cfb5c5a65", -"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "c8f5b1d1d75e90613f9df773a7cdb08ec359db65426c6c6b59beb2c22086a4e8", -"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "3617b41bbb3c4a20f4918b2ecc9662ea76668fc60d3a4d28b8116fdb3a0184e4", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9fe895f0de1ae852fab160b0c2b966ecb9d72b251888efb6ef06e6fae3497735", -"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "216ee04bad948da8b3ef9c197913fcf0b4c6a05fe67922b423c4dc83960ca545", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f02bdd793bc9d1a3386b929b640c7cd234e12e31c217b3584408ae9f66ff65f9", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "cf34ba62cf6cc12f3fdf0401d78e9bd9f5c6506994be56d5f23a4147715a5ccd", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "93128d5824b378dbee0fc1c621d5b9809f9b8456b168d5051619c47d4966f849", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "58dcf7d0ff3fecec43dd926251e8d9f3d09238014072e6cf99f02df0dc471888", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "1ab953aa571c10d2356bbb62924e8d5183b501196a771f8439046e9834d0812e", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "0666bc103033ebf271567348fe9e18d058f8ff95f23f99aa85af0bfcdf27fe23", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a95b49220b9fdfabfdc8789cd25006f0beda025b408b9790aa3fa55a54c2b322", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "aefaa5ba8503d44099b030ed86d19cd42eb5e0efe2689b15a96dc5af652c19c5", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "92684fd176d6db00836bb8a8ef663d573aa1d2e3b3be9f19cad49203187d9c0b", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "9d266f727c227bd6aae9751317cbfc91416733abc6722c30e0a7724dd971ce34", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "e7d01f753a4d139af1b4deee996a04407e8c08a7c515a2425d5d7486496c4217", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "1674739b317a34350c0a74508cfa16b072e0763d3b340fdc9a54f54c555aac54", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "0907a688615c7a77268f77e96d94242e2c955663d34436a66e2a5aad3ea452fe", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "93b4b0ed08b14aa81d9e6ba888d9b61211ade7c85bc2f6709ac26851e0a42b72", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e92df58bc58bf0674788c498232addeccec4a1950177663d3c82cf3106dd9db8", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "ad0982dd43210aa399d9826bfe947d0301f1d1242c979700ac6c38e332f16e31", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "8e81d22e2c8213201c7c3c04bdee4d4cd50e5f19a8bfb3075bad0dba914f5d4a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ee52ce9ff7c0d6819402f5908ac2c6cc9fb1fecf092db2686a1f0270d4b1c0f3", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e9fed2efe072ceda24d95d68dd2b46af214bfe4dad8828ad8f6e7eb5539a9500", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "c31c057f1233bea662fe707936d5f805ff5569859872d1a16f7cb6b7069838db", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "4900ab403a334e04f9ce1fe6f5dcc7c667614f0d43c7ab9bcfd82572afee8d27", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "40057d5b33b209d877a13d750443d634fdba1dc4f1ef056c96afa4d0022cb58a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6d2023d109da7529361d15475efada889d4952eb8ef9cec905b980b7aaadca2b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "4411fd4d491ef84960b7ad763435b98a41597a40ffaa41bdf3b9681dc6277c5e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "4411fd4d491ef84960b7ad763435b98a41597a40ffaa41bdf3b9681dc6277c5e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "d48fbbfe1e657726b848678e62ee58c7140a918968e6d08ac3c8b87ac9738fa7", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "5a8fb423797ecd5dfa4dee111ee06d169f5b6b10f8ee7d1d4db514d68f640d09", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e3ff04198dfa626240667f4fa6bb608e55a2a715d319542d95e8c516d4a11ad0", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "870b1e8465c6855d9f24480942619b1829f375de868434f99eab25ec02abca7e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c59c3f921b8e92b9d92cb18319a712a985e106c79e486ff213706dd7b528db0e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "2a164dd3d1ac42fe25dff6989cabb4c2d4fcc3c7c78c17d676978bdabfcbe1de", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "94ac255607483da9000c2aed6cbeda88049e9a69c28f7a7b8b417834a29f15b0", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ffe1cb6b6e026077d701af33dd45b5681c0917b0379629ded4e06358339b9689", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "961b117c6ff544dc319d48fba9c0179c44f6fc0a1967bdb31b22728973780cd8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "2b03ce917aac4213ee0b5dca9f86ab5c4184172ae801550022eab43a0331ed09", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "c16723026e90abf940df848ac3289e2f9066b42220e365d0f20185a86dfb6eb3", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "873bd4842c7738836d4218ad7ce22d765fb7e3f53b461b6522e1e709a4c744d8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "1b933308fa3406cb326dd1e5204c3a913bb4fa8fa287519be5cdababe6323219", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8d9ba100ea5d88c12fe2ef196ffaeb21f16fdfd382a9b40d86786823841b6039", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ff5011b73037f135d37c4d312dc5196638fd5431475fdf52588c7ffe33ccbf83", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8acbda5f001069325fc362310214176e6b266ec178adde8f3353ccbed223f1c8", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "0446cd78f7bc36ee042e21de615f0c9672b3e108ace106acc314f12deff744f1", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "e9cafedcefe117df36dd95349064044c681bce8363450826718699df65e47a88", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "d47f29d3516f86b127c86d08b5ed45d0c3fa65dfb106b55e29aedb514359fdfb", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3087aa0c1d1dce2c3b5b201569b0f953a99283dcdab72db89ad5050a871cafc7", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "0e32a10f9503a2395e780e159b5033145fb4f3edb672be479bb2d768cb1b4b59", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ca298179e446e5d110eb2213d8286053a8d3d41cf7005b8a867dcfc72fa4b3fc", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7962036a573b82c9511ab127e842ff5bc53c6008d4a3590df764d12f87a4a82f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "73a678e622184112367e0b926a9e198ae883c77b527ddc6e54cfc4de1134e80d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "81c0a07de0b578d04ca64ef743eb2d26a93098069eca00dfbc8bac7167b10d8a", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_grs.py::test_legacy": "74acadfe5082039fab5af3dcc310116438909eb22e7df300a33fff3912194c2c", -"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "6cbef5f7a68e7506399b7649266d4a2fc9c86d07dd6f11f929069600aaa54d4c", -"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "7dba04bcffd722aba6a3de3450d8b69ffada62b88c86413562b589c098a68c02", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "3e09845e82652ccc583a7eeb5f04a4585911de413a1bf486c7a0883390a806fc", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "6d3fe1442d303da4cc9ed3e693cdad028ffc4f51584dfaa40ab7eacb1c528b73", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "ca813e12db2e50ec8b59e15dbfd8fdf0fbd4a0c41b1ac7119690678f202db37e", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "fda638e0bd7bb29eb2afb572ac26c6ce99485642a87f68d3dfeb00c30e82fa95", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "2112b54485b2a085ba3ff9796a5574352d1e03adb6349e421c9ab38457fcbcfe", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7a35ad4cef673a61b47ed5f8de15c2f2b7151273bd4e18246e316ecfbe192ea1", -"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "fd4509f739bf62162079867c7ee8042bf989c0054924eda46d2d9c1042c74473", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "02661f652ddc1e8e5c4d598d396dee340b4fb851d59279ac3a16b2d4eff6b252", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "08b0a79e90850dac1aec6bdc49bcd89d0ecb60a62963092ebbe893691b5ebce1", -"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "c03bfda6f92eac441b5a727c04dfb12e9cf725fa2a2991bf31c257618c87dc05", -"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "a50a5eb9045e4fce67debabf83fc8a24bcf5ce0b56dfec9df63fecaadd0d9adb", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "400c32c4f256467f96676902bde4837238f68710476afa50923d34666f13878a", -"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "984c90669159cd0b258f0b2c14ae12038bdd074d10fe0d581b4547d965003469", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "d353a10133be5019205b8fadd82076c626d5d2cb145d74c63b9ba4e7e4e111ac", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "5f51a461f0a5a9564f5c87be5d3f333bf422bbaa8705b69000c0a38de8eb69ba", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "ece5087013d74f8f6c66857b900810d2d9a26726ea7a7dd1fbd7f84316871cef", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "5a1fae7c15fa01487e598f56cc8fc589b22d43c3016e30527301f98ced362b15", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "e2b997d15627964ec923b646647f1b37e32db1b92ee575bc4808f6948aae89ab", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "32842acef03e92bb8e9588c4f62c720c090b76cfa05b1b501139ecb80f440924", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "2cd39bc9256d0fe145193e4e303dbac4513831025b5a84c95a776c299e223cb6", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "aba263e4db929b988210854950b66b22b9d94b1aeb125252a2d4167627f71298", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "3d1b4f61755f248637adbc11249ee95ddb529bffee2314af5977a9c5ec838c22", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "cf749423a179a3fface38e56cd42cebe31f2383b67ae4fa5ea1d43b0997807d2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "1296d9e5cf29df1113900ce8156ef5904f7879899047b081d7947952bc90f8ad", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "581f6cab15d6d1ae5c0c2c84923c238a141d4c6f96dd4e888fabc3949bd66da7", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "c549fbeb529328b37525a91d79ffba1890d98e211784c7af8af6fd9e6ab222ab", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "cb888fa01f769e7746871425c246a60a0104854cd79f20f4daf14f48d3a00bcb", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f7bebea8c494ad7b2134a17a0ca471b60df5b91f998a502ab9a4dbfe9cf0f549", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "3ee537d523909e27c9e484ea0f15a9047ccb108b959234c3c8c70471900bb370", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "927922e4e228f2c62624a65f632dae5cebaf739ef68fb8a981fdfebab0f5210f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "a8a372ace59c3da2c02d659b1ff51c99eb41c3718847aa655cd7408ca5429434", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "f579e485c876376a9b5d6f4cac99aa9756cf63f7239a8007d11199de2bc75c70", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "c1fa315d6e00f3a86597a062b345485c9368c491b60939e829ad4143089c7460", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f0843249ba63e22f181ed36d0e97d1230f9f15e5e1c1b945098252929d79b09f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "9d496f2c5eda2c5661ac7187dfe1f73525c649f69f304efe3dcf485e88628094", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "48e26580a0c643a7996cd88f59483274462d5de0a256ca478ddf7c3d8272af36", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "ed5c10e6b0aa6e58eec85bd80ace832fa7d155e15f92f2e4531c8aab7ecae036", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "c71748d934bc17040bf0d3928b3c4baacbbca8021aedc43d9bf82af8d50da779", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ad77552ed741f9d93cf818597151f44f204e31754f33914018ce8985344e22b0", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "98271cba7e1e73598e3fcec535a6c026614de476235d35573382170b661d5316", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "600866c5ddf653eec4fe3a52c1f3b84f901e327ee950c1337e9dfe9f9721a36c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "de78fd2fa360453d95e85c5ee5e8de40b925577c30648c166e4999c6169d1f31", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "80bf459aadedaf00e0f494ee3db3e8ac58695558a8a11fe583bf0c3be8b7204c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a7e30fa104eeff1389d08868aa19e1f5c5c486bda86284311908e6cc87ce5de0", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "43d5a9f472c07d6c2402ed70041f48215eeb50b56813decde19240fab75842f4", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "183503edbf87067faaabe27b74927623b93e29f20088b7c4959d649cafbe229e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "b7b31dffa340246382b83614d857d5678e5a311423e257eeb354300e1e1d0f3d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f334becb0ca0cfade44636c42c32f5e7449c2bd8a4092b972cafef24547ef719", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "b7e84f94562cf6cb61b1ec13b5114f7e99a2d5a65c4a873817689b8df1eeef00", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "753966b82f66d455b81177808d18841867962e85290fcde5a50285d8ccc28f13", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "a978ece6cfc4917d06ba47db8a5260eab663f2682c496d0ebced805feebc4ae1", -"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "44c01272aab632ebc31e5a45107be1fa213d641bb05b13368e3f300cfb0f1ee6", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "cc6e6e2957cdef6616101a9d8a1e399b07d8355ff804c411d449710a4fac2366", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4ba1ae3b1ac59a8e3fc62638739e94d9c54d54a3be612810650a9830b06f5b5e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7609d05360aae3789f693d60a46a65c8c6b8ea9fe8d2358026c3bbc324c5ec2c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dba56c6086b06373ae3b2a73ff3cda693f982ad74ff54cb80a652e2d2096b2e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "a58d3d6778193f6fcfad0ded221b771e12ebb1718b2b3e4bf8e7f4d214c17e35", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "7edbcf556534ebf6ae26350bb4a427067c35a3debeb039a2fbd225c00b39f889", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "94cc6185107ccfc1f42e0e7e987cad2ee734030531076d232ed0ea006abfce61", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "f243659557a45e5a3afd923a54b0da12286aa389e54819d273a5f6a96d790f22", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "60e89bc2dc0725dd089296f4762f6762026eb1ebd9b94deb8403e2163b1bc47b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "60e89bc2dc0725dd089296f4762f6762026eb1ebd9b94deb8403e2163b1bc47b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "0e778ac544937d4edbc363d30a0361b7bda31685dd1c06ed5b204677da1003fe", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "c55dda4165bd7af19e32f9c7a32e11fba2882931cb0bf341218d614cb7ce1041", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "d9a9667d41fffbbfdc03e3d4f0542076b84a64c38c0054485f779582cec79415", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "d9a9667d41fffbbfdc03e3d4f0542076b84a64c38c0054485f779582cec79415", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "14086cec773f27ae43eec0edee03c51c0200835482cfc27158cdb08bdcb0e068", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "2b6db5db755dc9a81256a02683a9fa4dee4ed4e709233411ee38528a2c7c69b7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "6c60a24da7619243ad89273097ed4aafb20c244d34b6de0c48dfc70c84f619c7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "6c60a24da7619243ad89273097ed4aafb20c244d34b6de0c48dfc70c84f619c7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "1dbd2a518301759a49d0c4ccf2e45154fe6c13a8f46958d97c74f8696f66509b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "fd87597ba8e7b196d3a5e6c19da6f07964b38832592291fad47fd94af02cf8f2", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "a0d60af26a65d4359f49e1db4eed5ef9af62394778df33e7944a35c20ef57ce9", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "8dcaf9b2f38e4d419090d4b067c4962b0e6a7af5b2a5e33b164c95e97fb537ff", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1e6a092053fba32fe77283283bdb62424ecbc6239184a22926e841a7d9a2cfd0", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "1a50cbf61828158fb092d31dc65ca3643604f935c5937ce8ea68e5437281eb26", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "ff85589955299d71075223bd8bce9756a798b1722946d02137434d11a872eae7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "c38b5dca5341a18a3097dd5fd2ccb56fe07197cb6d3b43745d91a6c2ffb3546d", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "f2a845be528d2014eead8693bbc03da54a5b22b2bc40a2bc1b36c39ef7551b16", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "f2a845be528d2014eead8693bbc03da54a5b22b2bc40a2bc1b36c39ef7551b16", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "f3cb657459d0b4a4ed2c3bbf5a561222f09680aaa1b906193ecd10678483fcea", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "aae7bcc78d776474c2c94421390ecf532bb6c7da4f00d2f139c89269924affca", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "5196080a6cc53dfea35c5675a5283fe0188a89a2a5c43f4f93a666d660a85033", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "5196080a6cc53dfea35c5675a5283fe0188a89a2a5c43f4f93a666d660a85033", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "cbb342898ef09102f37be1e185aeba59fc1afa97f6a4ca86cc121b90d42fb1fa", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "378db82979a693769ace37f1cbe32b6c9829b7b8a6f1a719bde7b8c0f03800db", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "359e33c4116f38502f7790a7309b7e5907afe41d721dad02f710170a73415b9e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "359e33c4116f38502f7790a7309b7e5907afe41d721dad02f710170a73415b9e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "821d22644eac013e893d051ce49d5ea3fc0b8309dfabce1183de1241a9b22f00", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "37bdf83a27c24c5d310b09805459072b0f7bf4ccd990afbfb07c8194d8c667cb", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "2cfece1833f775d3420ab219e509e3555635f2d9e478c1037d99c74a92b5a444", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "2987348abb17aec23e535de31cdf8ae8c3193302c83d664986a206f4588586f2", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "0e7068e4bf29ef0b7d8d69d0e72583c20c3dd69566385e5c7a6c5f73c2be8c29", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "fdd5eabcf6137327c387c8a3e96cf83f0653c336ff244ed727cfa083eb619b45", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "8e353ede64f590129987076e180badb95f1c7a8f6ae76c3351d96278f4d06a06", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d3d6b2a424da15e8d10741728d8545714102065bc7994b8bc4336e3d3d875b1c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "0d85c285504c18080ce0c04a7e81ceff0695cde20ff264222a0692efc07dc4d3", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "160724035b4cf0c6b11047265b5d7fc538adbac62c3d7353718915dba51bf6bf", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "4ced42503d09292c0985186444200e6f9ecff95925b93c2a455eb8a55db18056", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "7c41e9147059dd52307034aa743adf2c66e4e5e2133ba9b8696f83c31a8f56b4", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "7087e1a698ac23c370eb3723d517d2fed28d1578b18578c106eede23163770be", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", -"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "15ec591bbd7a3c69c132a830ff3d36500740f88d9188cdeccdfac9160e604078", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "6791a350bab3c49fd782368b3155a988ab94ca3eff568272033094f0bbbfca24", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "d8726bce8544f7c3a1ea675ca72e8d2c62c392452da2203bc16038366ed179f0", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "450da08f06b81709091f8c3b0179edfd5cf41b4dd4e0e5e906d119bcfe85bc12", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "ee24e57db1e35421b1a43cca0adb7207a02b778a372c99f2e10c7b4689dade33", -"T3T1_cs_bitcoin-test_signtx.py::test_information_replacement": "31b2a40db290a2217b09e96b995d15fe7d45e8eff08aca4b924aa9babd0d4524", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "e9be94bfc7937b533323b703de6bcd234c709bd1928d350bf54d6755cb46bf55", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "21e5a419b62922af2df837cbc7a3761f08cef33f9a8d402f0b9cc4ffe01f6b5f", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d425dd1157b815d6f0f5c0346e18c3ec4c9e8367b99a48daad58a2c612ce481d", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "21e5a419b62922af2df837cbc7a3761f08cef33f9a8d402f0b9cc4ffe01f6b5f", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d425dd1157b815d6f0f5c0346e18c3ec4c9e8367b99a48daad58a2c612ce481d", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "97222f135955f18ac4d690e7f49472e58bd28e43c5fb9db676474682953cbd05", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "795d158f875fb1ac3dc24ecafa6c1f611b75c5588312833563b2acfee70686e4", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "9b868cb2268991eee8fde9b2e8e1b2b230ccbfcd802ee166891aaea1ce754f93", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "f07584f8bd4ee44fff931bac0a52c550e8891d5d820035ea55b547169eb9aeec", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "3ad55243bcf1499ca88dadb608b9ac73a046763d4b11c92bd8569f2630aeef0c", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "e45c042a9d418cb97f4aeb9a3d1c1f173f42fa5f01d73fd0af745c24db812a60", -"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "98258e28bd62abb6646c8c42c06815f1ce633ac5d4ceb970bccc52172dadb0a4", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "847f708946174bd71c8f32c807badd2741164925e3e21e71d15a304af91a62f7", -"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "44cf9950367c19e23e33888362f4e609a22fd36b3a7ee531957054eac1db16ac", -"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "f3b375c5753cd8877f96e0e29aaacb6f4d65753221f0ebf515f63be5cbc43e8d", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a007e7ced3a5ff98de7a12547164e10ae9f19b241f4ad2736161fa2653d58b53", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "10244dd824ac87d65704440e3316e763b2a41277c689d7363c5dd51d3efe84ea", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "cccc715d85244856df87b4d9794c66b9410490981b1a9413fc2880c15e94dd7a", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "9fcfb28c6f324a86035fa253d05d9671d4c3b4018f1e6d5605c565d4a9f0a959", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ef8879322bfcfc0f0b33830b6006e013ae5eb3cd638faacb6b9d9772e5cb1c2b", -"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "ad18ef9add038abcfab4a7db828333cce046ce5be74dc2b2bced69478dd990f2", -"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "10a43b0b20bd48b7f18da9c2636e67d880c306ef12bdd89dc83c832efc0c0724", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b4b0ec9adb12c298a6ea1b1f6cfa64335ce524e62b0fd538b6991de17807dd09", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "87b0cfda1e6323dda7742af5318c6eea7474fed6257328a71d4d8fe3337e7254", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "72aee7d17393192300ff14b668e51692d81dc745eb2fb878ed621cfbca8f1444", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "580825c0c283395a23e8196025c5c76b18da7a94b18b3c37b7790cbe9d7c1e44", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "8ac5a184b524d1eaa7a37ec7a20f514e39e14f414a1c1eb0af7061d1a52535c6", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "988dc0dfd67d814750abd5581460b7c51c56967cc5f3405b3715714dc8895ac5", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "66dd89be9916d9501b69ed8adf62f90e621a19112be58d28d12cda48a344b7b8", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "a3bdb8fd6f89714f3b1bdc09218aac397f40c51f63d61e326b368f8046727ed6", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "bb52bb78977be98e2122e629d0677f8230cebc8b81151d803fb4725077a20c8d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "2f16c5ea0f131561f71a79f15ff0fbeb06503ed3b5990c6f2a84ed1bd0ca908c", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "630d209dc9afb49cd5f2f64446d9f219dc84db91132ae2d53cb5c386ad0c6801", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "08319f182a824ca3ebd659770e10f568d0665d31e454934e31f22c08049a9fc7", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4c1d99dfcb550ab843b101147bb1399d1d7bd8561b7129b47701fb94106afb4f", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "af409efbb080998c1a30622a02239a9b9e3e9f321cb26d09ab0c5e4c69156697", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "33e5fe5449601ed5f91d7b4badd171b90ba60cc6fe709f4984172e319b20d9b9", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "67361933c2284513b69ea351e5b0e14e30f1dc0f082ddce1eaca0ee0fc6c2f71", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c1b01d9aceae7471acc8b7b21ad5161a0a6981044bc42a55dca57cb2bba0c538", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "228fad76934206748ad626d3c1a3786a234255fe09507f281b3eb82c4cca5b0d", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "c5355cb65440844ff42f974489e274e7c99d093ae429f0b77895baa5629c6538", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3384acf255eb2c6c358aa82365bdd130069ce2cc13b48e9fd7ed6b7bee781bb2", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7e0130bf9c752a1b2db395610a73b6afbb36d48f35bdf0296744ae9583d962eb", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3384acf255eb2c6c358aa82365bdd130069ce2cc13b48e9fd7ed6b7bee781bb2", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "7e0130bf9c752a1b2db395610a73b6afbb36d48f35bdf0296744ae9583d962eb", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c52186d8fedb3f710b8219f3ab2d57597c82a728f44496ca69569c184d3ae77f", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "1483bcf92bc1ed3c68a0bbc668257869c0a2265e1833798fafda202eabf7979d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ce102efd7c5e9602a572ea437e0b4e34e08601bcca9b654b0f85f05a2d3b847d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "74402c765f5dc15da422f747ad60ffac9e490eb78ee8080b3773074494b79f34", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "15f4895b6988d8ea0d8eca7fd794ba389e119b837e5e153454d9b772b6572d07", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b6374aa097b07421411e9d3917b34ac906a1560f61ba99bf6d261a0c09a1712e", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "485a9c12d08b6044b71e8cdcfee42889abab2c2606ee53d9700288f1be918fcf", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "28f78742e4c34c8a55e3684bcbf4c79713ea53279536dec00b16bac9313d8ab0", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "597259b2903e31325babee2984c4b29b0bcae747c0cc5d5bf848a3a6ecb52171", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a211568f25139591f3bc246050cce59499a3c2ca0ad6285e8099baffac7fd1d8", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "660d5c602465ced2edd740b7061eef89cc4da3c95e6768e7c1cfb01d7f7be55f", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "db2bc4707d184e5e70a56746fe0b3bfe3da97d32b0906680c74adde822b1c2a7", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "fb8d835a2ecb7b279bc3100851d454cadf72fdba32a962cdf245230476becf6b", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "fb8d835a2ecb7b279bc3100851d454cadf72fdba32a962cdf245230476becf6b", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "ab27f681f8144511e74ed2cc9d157916a151dfb429a08e6912a28bb0f7d3ccda", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "3cb9896b9dd1b18d32ad1c9eb02f3f01bd2367ad943fd32551c1248a1e3c33af", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "0808c6e4e531414cc4def62cefe25ea5f7d5df664e6d21472f85f636c22c85a9", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "ab27f681f8144511e74ed2cc9d157916a151dfb429a08e6912a28bb0f7d3ccda", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "1becb044a16b534a79feb2f15973960422e7dd557c70d57263880bd9492943ab", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "5b9815b62530816e2cb64b8ff62c08c6d63f4df585e2b0294dabb1473b9aed69", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "645bae48b11196ca26567ba501f81da710d7bf49c88eca857e46d3735462ec0c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "58acd5b042ba188422b15add1640f16ff7238515ee86813b6c4eee41290062ad", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7debafc666c94ddffe6a1da5b731690950e641e5eb8e0f45f0a6b236765834bf", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "435667dcb82489240372ec55397fabaa55dba13c2eee7e423feca64456ea5cc7", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3b7bf803ae12a5fe6cf1421b23210307084f8b9e3d3f69c3ad160bb2064f113b", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "b69155dd7016e691410ace41c6bb8500fb8af7a5aabc34b8adb52c5aa73b5d8b", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f7fa57c89ce26ef300347cc781dd9433473b682f8c5a613fbf64c12375b59e79", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8a81acde365a27f26db95d651ffd8f9fb0bee801fc5c4e349264d11cb7a28c47", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b549a31cb03d64c6a983003b09cb446d7f6f2ae5c31965ac74dfad8031c80ead", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "3051a8100ac9d8a5e3f70703c9d291ba0393c54991f342971176c2259342420a", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "30b7902286aa67c21fcecb0d367e7088e09e1402bb8fd96eecd7ff1177ae744b", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "473ecdcef6b14f51cfa13acb6ad42d7dd4e9676ba9fb599ff5af84e91b1d4b75", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "4137cdb790779b246451dcf7bdab16f7694133050aa33a6cc94ae73372999d0f", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "2bff22a07cddf1d9fbec3a807f8b832fcb0a706f5d3aff8cef8f3dd0dec715ab", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "26d31beec6d07263137621a015f5e5868618347b0a08a36453d8f114379517cc", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "ab8e39e3335090e1f154f7e4fe4a0a77345e1eef8f68f9d5058be0c0cf6f9581", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "a24e9d5f07e255fd365d11a067dd1fc20d3d1c4001c969074943c9174d253b9a", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "375c06b4a355077b1f22810871767be8757d2d9dd7070d6a30aa5a8bce0b4e7b", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "c7132eea8748f7c93126a7ec3bbec3d8cf836388c4c4d540dfef3e95488690bc", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "0ec570aad97031ff8310c494b5ed5700b6d8bd3f62813313e8442bc56dd7852e", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "d2d2608228e87cb0dacea2cb96a0456119f12954343fc3346b5d44994ead3849", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "e8f6ad831da81c9c02e9cf7a174daffebafbf186673456af3da1bc69ca65029c", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "184aa0b0b6b56345e10fb50e1c987bb2ca75f9466d109613c9967acfbc5232ca", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "30a0229c3182dbcc17db351350f14e35dce6a43f2593d907c1fb57443f739edc", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d88826de9483505c51662cc1480e042fbec449a05cc3a50cf4dc444252fe84dd", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "042727e532bf1cf74550268fc5feaf5fa0a29f18b7bb9e1b26bbfdf6b11a1bc0", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "7a43153a3fca6c4f95145874456179f7f3ad34efcf7a5553b423c80d4d9fa296", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "48a9b2a3576e562ef74b281a5f6746b8c4a58700d58731e9abbace0f75922680", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "ec98056f5336471f726d89cc87de86398284db7c9f2144d45ad5cbe064704ccf", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "56e77d616504dd6e745b3defbb3347b03186254eecb96876bfc7b21aa334ec7a", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "daf14360982d28b35dee0d9662b8bfa076083b70f456fe83048f37e911c298e4", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "dade356f4413dfbb3892e6c788fdb4036daf294a48450b0716cfd21bda1c3d11", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "44fa7b5c93aa2dfe5abfda8f3c3a03ab6469714c49fd35f1ff9f29576a843cb0", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "f46657c3b65f74673d7f514e5bcbe19c82544745c79d1df3d728732956a8bb3d", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "56061c2eab2faa982ecc4b3fd5a41d1ca423aaeae6775ac1216c006496f36f21", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "3a3a539434a81447725602409782e27542165f082d5a115f3ed34a15bd9270b7", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "4439032b310dc32473d09db5bccb8cd5d0bd23f5bbfa6d096ddf185c4944a240", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "216fa732b14c21f774c6b7a02fc17770baa306d4dfeb54c9c77a85b0a619136a", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "7dc7613482d4e8c986377a85ca8fa6191426147bf767c448010208d955363a14", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "4c01473d34cb3fdbd0fd18c886a58229a1ce6362a6efcdf749dd1d6fa9eafb1f", -"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "6c5bab0969bfc1cbbaf093852a0e959da07c5721128f70a213b9675bea0868a9", -"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "b074c9d0ed5c42e5bcf110b7472b667dd78ecd00398edd4cb5da5ea4c50023f4", -"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "68e5d0a9c8214c25d58b276e052ebc75c9b653be7303f98149c372e56fe50158", -"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "fe2a7751d96de0731c7b526cf514624ce01725e976cbe29c2d53e5ba43d2e024", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "e2503e29407ef25ebd83aa8b55ee720dfbef0a1aee0d74993c62d8bf4310e72b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "06e457d707de5058f0ace55c360a5c9c2ac6ac395ad4d9c40a0bd42ce5bd6eba", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "27e5475624b875a6a0cfa349b8fbd274bc81f9f5770e659046379f9ab3bdabc8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "ae638f29f9a7f1b7ee814dca5ea7aca94fb0cde6cd45a3a154614e036cebbe12", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "a297c002d533830bef599c02fa6e6b4e054597da986726ab23d98b0b25611d99", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4dced33bf016d2ffff4f4ee7f57a124773f2c45a2e5e6fb9b27c75cee8caedb3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da3d2954cf9a9593e3c0823447d68517ab7b87c3b999ee38ca384e64130f234f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "10ebc3ee52cd5d07f62a783f15d83e5e97189a612b7758779ac4b447501e2a38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "2599d72c58ba36860ca4370750f581211f73a05c77e5e7c10e5ed1ba5794cc4d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "bca30f7baf250c553298a4ff9531bf22065ddf44e933e3f19896632479e78825", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c994f56e464b70ccec11ddb2ef8fd79f3b01dd9bfef79539ca9694e78b9fc0bc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "6e4d55fcc15d3a97f033fa5451fe30959085d69fbdddb07b7178262b9b6db863", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "b147660b277445ceb442c182c60f51686b6700651e32a648ed0d36e28b64e67b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "235330922f1f90f367036abf73ced4ab675b0151992b3ead735b805c7098a060", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "c0deb646f7b576bd51190995ed33c7d51a0e01403e9604e2f34b55f51886380a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "732f8a4cf14c072b1f15ba527b6ae4f17c061784ad5604cb6e10d0370466ab4b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5ef212b4770e7b112018866133cd62997331a990b48f6c5704ceed336ace2888", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "a8154229536c508ae41c78f2062ae6c56180d36e254d487b177835e17fb6892c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "eef67695f2a35a535fd1337b86e891cce60aa6bd49a537470f35be5cba96d27b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "29846b400cd7cc683e6a6a66f8f6be7bfca36bffc31cd0d9375580fd953f9378", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "aedec0d855db73bb13e2e34355fbe1458c669c3c17c5f9cd435d15960c4da548", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8abfd651949b0549bd79208da02a84cce2d7b7f4f6af9367f350f4c928af880d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "f802fb1231a0d3510a80a90c484256edf6837348ddf38abe00342c7056f13eff", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "983f47d25ccf331721c5c3213a9e63d5c0cf6437d320bd754f9166b954fac8d0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8dfe95715e368b515988e1b7c3bd8097efeed5d3c1275fff07f34814843b6773", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a594861d42778723fb3ded922934af2ba49a07d832c5a09deddffee71c8eaf95", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "445c2bd60b5a052da63dad87ea70c29e0ed86f4d481d920f1dfde54d6816267d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a347b1dbab6408f25d2b63ac9a98301b828e2c20bd6b414217c2a68e87219624", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "bbb0c548cdc37fe5d48dcca601f8741bc6841699f63d2ed339816df9ea507baf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cb94e96209f7fbcb6e712deb056f219ce6cd04a633bc7e6891cce9a759b62202", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7423cb702eaf8374b6b3b8dc4eb115182c47cc3510de5d8f95dac07ddf3beb5b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "f17b1b1abbc369bc0c38732144f6a9957662b65b3d5fe7e22c27d7d51e5fdd3b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "932750f63621b656b9bf7ab1c66f4d34efa35c190b3b593809dd1ca34ab7269e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "07251fb2bdd389377bed64b5950db0fa0ce65da99875d2340d4b3b283e57ca87", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "4e8072bfa4f1341a05b75d5bbd39116b3dfca716ffbdd8c9bb203d967c9fd85f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88b4ef87509bec1ba8b7e2285aaf22b63d4ad5b28e2d6d635f11475ed6e20ef5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e66cb8b4ba987ad5e7bb438630744731f11c93524544440d3cdea5bd0647e3a1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a0bd69054584503331fc491042f0b56e1fcaff691eaabb9fb7efebe4058fbbee", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bacd06dc8ae51b9841816da77fe59fbe7c1a801e54a829eb227bf54c6189dd38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "092f623707aafdd179c61e92fec27ec58b7548179f5047ecda9377a6660f614d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "f0201138c861d18b7141e6d67edd3a4b335625cbd53665cd6d2e1ac5132b81c5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "26d53add8371bf36fa0d1978f8b2e0e40365a88b8397950b3f40e60be135288b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "495837c4c660ab983c3454996766c61c01f98ec8381d69bf82b1c8baf58d09ea", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "25141226cdfa962869fa32c3a5d5b5f3bb4d6c1c3821e368ccac782377c0f875", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "30ff20cbdb009ceaf2dab0dd22c97cff13de6746e30d8b0a251b502dbac1d44e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1957d99baaa7b4df9b5391e7379ee5b1ef2bffa850c569484cbb6fbe86994faf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "8a0000bac3d9bf5b41b4eac9b9f3ba4b4555dbbf9a04de0c7d680bf406a59ad2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "a4ee98095613c42aad79adc78b8d4617fa0c181af97fb8ed26ceae43dc3d9ad1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bd80abc56744dd17f0188b0c62b93bb3f5a98b419f45d1a8742e30f339110984", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "99e7b912d3f72b235cb16c91013bdf0ea42cca0b4aece1413105bb1ed0dd1b3b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "93ffcabf24c70f54cb0cf09becd9a0e8d67b9b067d80c50472f562b3d6e70514", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "18ecb1f8e26d07d41eb70e34ef8ebf04c0348ffbd7d7b0d5f597de144277281e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "788d525588656e3aee39fb2119955170e26314ae0a03c84b486d2decb83df8ea", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "13eb27fc123c4d55a9aa14f94e9d73af89fb2bdc3499b117b3a9a4d9af28d0ae", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ca17a7988a774d82daa513bcc74e4151a974b6dc7ddd81d3fb673b7c4015aef3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1637c592c222e63a195a0873b53f2b73e19abd47f1f10ebfe50704a0dd62c19f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5bade979f53d0cb6c0864cc7754be361ac73def14c38a8cd064131232f619a67", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "759b5b75b92e6afbd876ccca8c55522837f674217e20d30e714995f43cb8ed7c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "759413dbccb3df9b4f0abdfd7b12507eb0e0ab1e5d75e94b55c9f19ecd11b6bc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "7b409722f943e7e45fb55921b80cd5dc10685ed1d32e1312752ed606f76f4101", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "3802d995264e9e5e192ace57d22177f00a31120fcfdb6dfbeb4c924d2ae77f32", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "5cb431d9b01bedc244dfcd13132bb540d5afb0558f565a6c090d5fe10e48fee0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "120584d48232e48685b37f3bfd648f4a8dfa29f3ed5f0a5a86dbd5020973fe56", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "cb599878f3283a93213d3c9bf40ddc27c659b50484436a06f83be7d16b8e54b5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "7c48bbb9cd9131a0b93cad58e1f8b903c4cbdd7837fb83725fb8a78771572119", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "525c2effc307f98df5f7e09308122f93a804a1865f170913e8205e82d43448f5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c46d999c0466c88e0fd84be2b65135ee6a20fcf1c4c8c6fe0542fe4062d0cefc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ff448e383fb14aec0098092b17701d67bb8a3b4ac9ee743e167997e21a5fc0b0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a0d59b3d961690ffd41751afd28a94ee6366402a93a277a4f2c32d7ccb679506", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "5977a5bd5e0019138710a721fe0337cffc17da16b45be3c0343e9b8a5182b35b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "bea9e99a85ae11b1085f1ec38c96b0425d85fa006efceb4add10129abfaf401d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "12a796393fc0f618a56aa904cfa0b5c8dff83aadb446996c5385ff312c5ebe76", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "916ab6d5f1ff2be103b1f77029ee75f733636d7e8f57390f09fc40e8fb19c111", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f58071562b859823dfa1538a3b081d3807fe23dd8e83c55781a9ab1c336089d1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3f0de896c6ff2946afe6c08c77cd82a3c167df1acd925edbb262bd5844fb2db8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e4c569417b8d52d20fb3d8da0f5a0bf5c4c189c924c97b35a4c1384015a2cedf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6f0654b16de894b1787ae81358caeba1c869bb0985ac9f5af4f16f86d709ee38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "57917aa2f29f1bd48985d313a0ee8d6567ed5942d936f37ee5d84ffe881bc5ca", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "d79d63261c239b44ae2c06b1556300785effabd9d587ddb1de6c691867577926", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a0cf65e7ba9e0f9bcbdbd5806fae815476f2d0850ee550930384b568b5fd189b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "919636362bc1736739ee65fd3610f0ccee66e2d853ab88bc4088d4ecc79f30e2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b73f17b48f723157f4be55064026a4cddb87a6190b7307bcdb3e7ab65b7f9f91", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "21c5da1aa33eddb9c63e44b4dc0b7e6ecf32e2bbd6b31865de44a3cc0f0055c9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "5de90bb092f5fcefae3e76ab3e4184fcf46c3097daec88ef9089b881d42ec319", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "a0fd015db6d93dbe1a40d8de46f24b83b8eb995236fb9e9a7878a0a71f27bebe", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "c9704a533a21b3c36e3f02481b26cff583c41ad7e303196eb62e0071b3f398d6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "0d81cd0d017f83d6bec57f311120b95550922bb74a93afea118c369d5d5007ff", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a8d945ba3fe514a68771a3686fde56486603fdf4f9db49cab44d2e30d905ae40", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f6332c444e0e6645af438058a7b5e0ebf524a0ac709c4581b486d9c46698787f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e73bf39b02a02173ef9c184dd6c0462ce284857052bcd861a185c8fffe0b5ea2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "420bdd1285c752ba70b9caf651277c29eeed71ab9a08d049c2b62f0134a369b4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "204289568e711dcbaec6a93aa8a9d8b20b394dcf9d72e7d2ab774f9268bc5f84", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "a14423ad534638ff450d9de87cc71a223a5bdae243d6c77e14baffc9f302e36c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "330567987333acac21a868766cc2efea7b7f3bb6152ee93adeb67762feb743f2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7d1d67fffcfe43fbd8f191fe19ec2ebba73578aff885c2af58137fde4c69586d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a08bbfb77d3943930f954315b56c5d2027b16d07a65d8a774a4df27935820453", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "8609748599728c8146f6004252baf2b8af1fe44987db630adf83b625e69921e5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "46c98b818ca1100f51601776541723f9d1331f066df788c6d1f2dede969a0d5c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e163c576fac87285b9a301f70b315e67c9841b04988ab87079399fc03199f651", -"T3T1_cs_cardano-test_derivations.py::test_bad_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "2a91f8fb92062c2fdc4557c6ec53ed9b141776ddaa25a9d832882a5449da3a2b", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b04250e527b01644521a19889326b552d87ee33fb75db226ff588f858e81e56c", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a5691854bd2deda9844e35acdd0cb0c5628536d490cd1b683cc010ff251fdf51", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "ff3f5ef26287dc3f323b287f48ec39363f8b65139a86294e613f997e02d90203", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c3b40a6253a3e8388698998707c7331ccc6e99e48e57be1578b3c3c05d7da95c", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fccca766cdb9af9567922a258710630ada8aeed37a84eeca3b72c3f1984f4d81", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "a06a966045710d08899a2d27bd4123adeaf344d5a6e908a6301628e1eb184f20", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "9f91a429a92f95f4fc84bfd05936baf494913f041c7a6c68fb075f9419ddd4ca", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "5c35c3fd1490fec94af88c9e563677af43e80112ae742851c955ec4fb391925c", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "7206c58251ceef7fbd6169c714b8e45e003312c1a1fa72ca8b1c5a8424b463cb", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "cbd5dbdca796fdde1338ebf8a96e8211372fd65e28fdf910922bace8e098c029", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c52fb9368eb4bc569773167cd0022f0a54cf2e48ad83332051d96cc166c346c3", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "5a9cdbd8b05bf710cad900fc3252729bdcb15bde4dcb7234a00406be780a3467", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b705cf1b3132fd049d1550a1de28e323ec2653d1dcfd08c57c5a7f51986b1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "594a4ba2b231ec5413dc3d9f9fe60570ec7724f5a9249e3b6cf657525b02a45e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "44476582358691018bbebdc5f625296ee202258b0c1f6421db14e04931e59dd8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f186ba69462fa6c308218e8908238eb0f4b6e66996b35033a754b31e5436de35", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "475f55fe26fcac1f9e72cf4f6bae9d5c8bf93622ec2893fae4ad49d1a3cbde7c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "661c56ab9f6d0b27ba19cc5c563f1f81eeecc667ca34105d14d9bfe679cc97b9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "cd4cb2aa71c5fc26114fd8a62b2c3fa92638c1b9865df694a6dc658fed07184b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c7771ccfa179cb6f92579c558c5543c8508476f50871fe575180c8a5f66034ab", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "77282b5dddb8a6b37fd7ba45f4a41f0d3eb6a1838160a700b67b06a7af3169af", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "de354fcc0551dda86c0fac4b739eb6b99183e652c637fcbac2d70be6bfabb102", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "af7ac4c650788674964bb6331e52d87d527cfd1a33fe2c8e176a28857418fac1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "5fb4e08958a3fca4b5e2f9f5ca4a1af8286c5467ef646d5c6019be1d0df2afe1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "5fb4e08958a3fca4b5e2f9f5ca4a1af8286c5467ef646d5c6019be1d0df2afe1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "aa5699fd91ca6c9a49204f8ef8e7f490785041d9e610f655df0726e65052baf6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "b59a491eb2a67e5a8d1aeccab8d8e8ddeecbce9efaddaed110c65e3c250d2db9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6bbafca34c69fde6aea6167b1c3c9d3a683c8cfed22c2ff18ce18b6dcdf0762a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f6fd4fbfb90f4c7c221bb0af435f570ac8c58a9af3fa2b89b55b19164d7c1c88", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "faba2e1268b6701bad92823d4fac255b9b5350e82c71674fa5dce6ffdd179fca", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "aa90ccda7d9c9959dc2be227cd0666419b4a0b53a3949a6d4d3a29ab6ad6fda7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "be3ff16b356e9391de01a0a7a9fe633d6fa37bad89e015dfc7f0103dda4e98bf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "e0f96f0841cc67cabd73c5ec693841523debb89e6623d28c543b5798a9e5ee81", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "9ffc9917a0247d1be393fe190e993f82d8032628eb78f18dd4a14609575412ee", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "faba2e1268b6701bad92823d4fac255b9b5350e82c71674fa5dce6ffdd179fca", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "aa90ccda7d9c9959dc2be227cd0666419b4a0b53a3949a6d4d3a29ab6ad6fda7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "e79d99660827fe14626994c7ceb07b6c6bbfaf1c7dbcfe9cb924cc75463e0530", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "0bbd8c50d25a05c9a4da502b5166c612256382502e1478d0bfba630344504d75", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "f962a61fc89e0fc1c7e85dab77a8dd401ca519219aa64d2729ed518e124b5c54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "9d1083088fc55037225170d74d813057fe48f99e2fb33cc23181818de8f7f179", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "54b7a5feaa36d3de1cfb3d0836aec10d2ec6038525126d54448d029ef28dacd9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "ef3ca8f436441b76373b8ba04f31b70c381dc0edfe17a3d1fcc7a6ffb2bb728c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "775e23c06eb7f92f0c205796b1113cadd0cb16b7faf96de36e2a28c6393592a8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "298be2b903164c3b9e2d5fe2cce4523a252d3b22255efee6b955a80d67f186a2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "43920e045bdbd0cc19970c6339c946e7ca5ce451cd7a832c47ede83ff13e5155", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "24d52a244d77254c5c4558beeeb710c4d2fccb216cc40c85be2a91e3894c0c3f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c203f035a61bf7832ef1549e1f5483d89c9f3838a41cddb9f318ee817e36cfd4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8d496f51e2d8d69074375dd76e0f90d7477373cb5d13affc38e3bde5dc300ad5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "60fcc0e1bce9bd0d9677a1bf90d4372b619f60cd5674daa07fb00c75e6b7d342", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4ea136c7bbb94163065617d131153fc6c6e58a600d7b469464c867c3695a17db", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "d2ef0a4f0899560b048c83b713f5fbc189b0fc24db470821c5b6389194bd233f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "5e66e0e8fa485c1c0a7a0292d96d7eb9ab82ab57459bcd5c9a019e05d68b2647", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "ae606a5e444053e679ecde22ec19f459ed24f612a3a774fc1ae3d0e22de238ea", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "b822b41d8a34c5140a5db572549e42d218f9148ef0dd6bcfc94c74d359622c9f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fdc02b6710a9e3e5c8a095b46ead939abdd88fae2cc396a0d91c12fcad7ceaa8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "1de92ff8d0a2ffd2fe6d9cd518c1fb50af81b3ffc9e5b9d87afcc75f51dd187d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "663988d7dc9025a0b0ea3b0104749513806bfc54d22b78c77315e76666bbfbf1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "6d90f284f506a03feff102a15d2f33f071c5fdfc6652fe12871296e4ca407e72", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "de56345b461d61652df3a2e20c8936bdc8efd29ff0109cb88fe59e84e363eb8b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "19a072e5ebeaa61f6c9bd0d7dcbacd76e552d8c4ad84508b767c7e6b03751dcb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "63b8a1ff31fb80eeb102b64ad25d847b6171b8f9fe06ad96fc4ba4e272a589ed", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "8941673cbad3f43397c0516dcecbcf2274b383aa1830c43ce24ea54368e1aa20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6c2f9e3a79861a410b5b7613e2f7c852cfcc2338f544bd126d930b97b73f173b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "e33d07e138db17b40b369ea6c8dd82ded802f8f4839e7115010847778847f9e0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "7c2580c2d771d55ba3c6bfdc97e491e8a11994e31c58a1c97c01d1cb74aa3f02", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "6b9adb99d65f9a91393066d5c8b4fac61cd0a3fbef712438cb453066536f7096", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "11f3cd251e8705dc8548ad83a0481cf02c6e4185fdf955850c45a12f78c7a879", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "abbbef2fe9113b7d89ddf09c537813037ee89b5ad759e3a422e7feeafa06da90", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ce44c45f9e126ef880d7c175967f560e52439b03238f64a9d8744891df17e7aa", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a22179605f6d325e9e5cb921d85aafdb2ce7ccf337b1f02caa9ceb592bb85709", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "bb561d2bbea7ea46bd148f62c86f35292e8ce8855e6900382711ee2bafbc73cb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fcc0172fece8a3d30ce3f76fe564e4cfa560db0785babd2e6228f445fd070bfd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1a5d11217da86a13481168c2e92cfb4fef166b85e3258d0f2b38a70c6487984b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "7b5f77b7b371b7e2a2c057362b05a38d153a7d0aaf9cb9a631bd1d7adedd670f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d4064e131e72967ce48b12767a3acbbfdeda21c9786fa493d5e63e07d478afd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "45ee577b70c312633a00732f720f98474ce1361e1d85c672e91886dc5239ff61", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "371d13a75eebd3578bdbf89af63325dc432853cfebe4585edfdd21d32698d596", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3d2a1e54ce93f505a8671ab232772b7a696bad88cde38159f528b0c0e43c2698", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "65980812e7871fc5ff6d396978ce39dbeece64babd43dd4b29e2b27b8cb6a6d3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "bca4f1a253ddebdb90769823828c4c15047bef9a6faaaa9608c1b64316b292f0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4f92a18e9150d2e02340e00c6cf304184fbe75ceb14e33b2378b4f7919df2653", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "961dc7581378dc4a35d10cd27a51d7ee7892443ca892e801ed3f4e16e3272d0c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9deb71c5bed9352a429568ee4be0c5454522786873d71ee12d6fa08d34b9916c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "efa7fb9b031385ce06ff26df22187790b1d694503098dcd203ee88c0903d4ace", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4bf1ecc8f36058dba0a82c5268e54e9a389bee07cbb4f8f7caef81403ae4adb0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ca8c279751c123558fd05fe350e16a57d7a1d91e8e6a91d367d579a282eda994", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "c21e6f1497e74bbef314f6fe99ba5bb09f1ce6745861dc0abc511d318a486b4d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "59240a6cc49341d79b93134982a18a520837fcb63dc4058fdd965faf3d7ac346", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "99209667fc84455fb009f3d3e350141f5641d0081dd578041eb1430005c2aad0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f79a6a74e117322ce0bd0fdadb5df4e313060597a19ff9bc62537b7738a039ed", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ca83a6cb3b8e279e83d682e97239d17481f38a349558a05308395b1648ffa4c9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "14b40aca5579446803088b11e94f0a897b683f62813bb0824ee31b98e6dd120b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "b82469c10ab0e7d6d13b054cb9ada9a6f552e2a0529e4cc26522dcff6b8afad6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "95cdcd4515af3ed3e8c0b44bce6d3487e7a86697f3b6c77557db2c8685e7c25d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "faf1853dde78ba77a646d039694b7bc4114c72025beb4d585d7135161bf07d59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "a2b705cf1b3132fd049d1550a1de28e323ec2653d1dcfd08c57c5a7f51986b1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "cd4cb2aa71c5fc26114fd8a62b2c3fa92638c1b9865df694a6dc658fed07184b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dc4cb48df5897c0715d4a052414b28d45787ba9350a850db647b4d36e20b8589", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "cb67668533949423b2684eaefbcebe14b1414648b49add4b214566900b8b2d20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "5959d8e6f3acbaa5c26bd9faa9514b557d0d8d68e55fbfcd8cf79d6215ad70cb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8dd8ad562986e115f4ef2df4608ed849e63d999916de25b0800bbc7140cb5360", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "1c5bf17ec70a444bebb502f2cbec045ff8e625462de3cd66c1a1dd662ad3fccb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "1f8bcb5691a4fb7c8c70d8cc04f37d0075c5d1ced96fe1db6f335d376316c867", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bbb8e3d51bf28e54f0319a5e6be66a3e73e77c12ad5a24c502c178e1033b67a4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "90d9fd1ce7772fceeeed1d85fe52f60664b2d2857527c259092fab89bbefab8e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "1c5bf17ec70a444bebb502f2cbec045ff8e625462de3cd66c1a1dd662ad3fccb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "8c8db5175f60c18f5f2a530c757b54539a2e834918b53f224473da81ce13dd1d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f3e6129934f12cbaf2072eacd06028da450c2daf405f51aba0253cc931a75c34", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "321a288a9dc9b2f4a1c732b7a9c89f4c1831d2d03de5ad2a4458bf29d1bbec4a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "bef90aedaf9470a84f99be1f51b3a54db94f2fb561620adaebe2875b7349b29b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "03d17b6795617d69dcdae358a577fc45feb35a0e64f545d3ced0e79ffdb6b01b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "3bb70b667051e819ae8f1b38e55f63c02c73320b931a91cd1354f5909b94bb64", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "3b1a0b48cb04e7eaaa1d3ac1bb99429d690b789fffc4f15f932be430e0b153c2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "8a88a80d2835415862ff9c92ec2d6552f9c278899ae52aa80783b8f63531549f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "f87b7f1f16c1825d85d06460a604e75a566e8e40280977d5ecbc19c16c7b2f91", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "591a24384b8adddec8bb2ac0fcd3b89594f006afbdea2734c9e0b4c78f49042b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "77d99486762dbeade27d8c5aa9eb5deb63b4c576d24bb87e94bdcd115638667f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6e2256101a3019206cdb11bf10b2ec9ec88a1e616aefd1f79b64d007d210068d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "73400f173ad4e1db3ec6c4d110bd01d66a55a24161bd919bd5baf0717994f254", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "600bbcd8f3d7e2d1520ab9c590076bd883281a45fa8214208c5804fe8919ddd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "c874050677e9d49db6d2d95b133bda61e5c4bae2d81d52f6f8ff1f4e2118f99f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "dd2cb694bfb8c6fdf81340719b684e9a8ad92abdadbffb18831407259eb55127", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "71b6c890d729a37c8ad4f2d1ac73ea583724f2f97af6e3b28506be0661c554a5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "514b4dd5d76b40104ad53ab3a1d37f3ec49760ac68c5de875bd16cf1d7fa9e92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0f3b1e8d399d08ef0651d587b9a245f7474397f160127bab0a6ac932556a5982", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "c00294cdc22e3f15336da633cd8cc929e920cd6b0c5dc67de4f2068646219841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "096e742ffbba157a21e09f2c1b4ad87f8483b04973de72e0dce339f70215d526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "af59747696fe358abc0fc30523a824373dc4748655ea31ff4419cd0d31c38abf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "fc8a58cfc66226e593a04a1b4c93f2ccff8fd805ca23e1bb5679b77a47c72e28", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "f119a083fe36c2adf878682ef2d42f337f1f70624d987736f3f337e831858bac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "a1249cc6f5c05e7b8f1dc738fd9d55761c764de636dbfc19bf641cdc0b09584c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d841d637a132f29b21ba5de91ed88c91030ff8c1360c194af773f7f08982684f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ff772299c9dde576f122ac62804ae2ea1399b0448ace19d02e27a6eca7279884", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "5733555ae77807883c14415164d7b55665fa1a89b3ccb8b3cc8f8fd6fa7bd2fe", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "19495f75bd93afde80641ab49bffb886b05261c72edad8e764269b97c7cbbe51", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "4e3935a1d4ab15934788b923a5225fac4a26f5f1023ded444763b8c16a5842fd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "2cb4611d59702abe0d9c231677b3b4dc2d59839cdae2b3c61ff4f25534570d0f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "a2d0e29df533950cfbe4c7404676a51de74e71dde00c2fc8db2bbccdaac0748f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "88def87383de1773ee23be6b2fad213e3d1b736e7b5906ff72b1df1b8e6fe39a", -"T3T1_cs_ethereum-test_definitions.py::test_builtin": "de296955cc1d49eb34a7e5ffe691756d92304dc1ae4431ebc4d7170f5364d095", -"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "f63b95811be20d48b959ef17941e20701241bf13893ad8c019f9714d17982267", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "f87efaac3f790430623bfa59f353f0cbbcc3f5932ad82ec9bda5ea1fff4d89ea", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "836602cf4e53ca59d5e477ce2559a6be0e4f1582fe4ac6e466a3ca0161f91bed", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "97801fa7e2c89167da85b1c8cbb57b4382f21b6d5bfb7e8ca06e3a84c126687c", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "818531d7bcb528f4e3083eca8f548ba9c476b55575d0e7682b78065ab874c8bb", -"T3T1_cs_ethereum-test_definitions.py::test_external_token": "4915e5191799961fc7e6da007efb467662159cc89137fd549c0ba80d2ffa9e4e", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "2c5a739f101e13e827c491cd1fa75b35631deade959829fb17f5524626bc9475", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a2de39e033e27c29a6146a19888f6a5052e9c41bb064f06070438b0f13a2b7aa", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "a2455c08b36a834500d17a125c22e68aba532efb7ac2a8228b85b4993552843d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "fd09a0dc102e6896b2635e7b75609ea2da38ed328bebec256e408e3f2ead7503", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "93ebc2127feb8ccdc205f0242ee56909e1c929548e9541dac781022a2e84106d", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "0ba4c4f3f0b91821b712f0af61f89ad2689de9b9cc3e1154a6b8bdf35a524bb8", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "9a397d5cb3f6ede4561c16a3e84fa36c9c89bb8b5a32352fb53c4ace2c1058b8", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "ce51de131fa79899adf5ecd9d53e496e34f39fcbe4a7a9edfa9b33733c162d0e", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "9bc06db308e7f84fd3e4569e1a4eb4e8f9c42467adcd35ac21c67b7bf047a8eb", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "9d2f785d44be082cccfbce63f1b89f696cadbd07d373282457f7add401ea50d5", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e1e64cf00041e035f40c4d72184d403d87c2d0d83cbddfc6d4358ebc154d08d2", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "00cbc6279a025902941204f089869544dba10167e6f18e75e6481b8c99757489", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f641d35cba095653dfc46ecb25091248ffe690ee422a047f13f505a52e2e4533", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "ddb9c8bc6f2adfaf4ceafe38b10dee7749c12d521be0447318fd34a1baf097ba", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "081298cb7c70f35b4de72a18e68db15f072c013cb35cc468c129e87d064b1915", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "fbc2f1387fc06816cb5bc01147f1fb1e13e039e056271fdca3132ea5e4e5e4ec", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "648f14a77176e8c9ec98e5017fe3280e2be746e1e50ee53633ca7a3fcd41bf9f", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e5c6aa09caee4bb1f2c4461795f7370dacaa5e083750ce0285b4c0e85a886133", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "8fcf8829ce05bdf65c9bb80eeb6de569ff004716623cde96ef1cec7a7caccefc", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "804739db4d358558ef7f8284ed5e60c2e0c6703226004628a83b2208b60d295b", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "9ed5f1a2917549875959971f08e364f48b7a6798fe0e5f2e29a2c8e33a37e8ae", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "f4a5cd7412014690be2d184911a9e998dfcc936c402fb9824ed9d79e8eaa2f67", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "cace9277f41fe680244efa76a346a41a7dd711e7ea104e38142d885a596fb768", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "17af0f7dabed34cb433b65bb5c470f3d62124505393664e2fac200f559fcb9d4", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "64d403eafa1c50e8ae049fd9d0512020465571d290234502e9c49606dd7c040c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "ff22f4bee5aab1875cf7ee5a8c3bbfa1d5ffe70564d9feca9bb39bf4a6f5e202", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b9e0da1af2d0f6559f4c53b4545224c7d087dfe50916946e994d0d95095ef995", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "fda7dd15172ac39b27a1bf729e253fa4414f1416ac0a17af6fd332c944b9b7c8", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "9579c396131cadfdb2d2659b292fd88ff395ea0633f2026e6d8ee4f1aff93065", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "e26979055a4317f2e00248b8abac0e96b54c0d74cc00f95a80e6ee6d30fce40b", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "634962311b928a1cefad4cea07eff126a19b3b197a89c15fc5013cda52782ff9", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "413e20449fc0e8ad5694e1dae50241ee96471c85f844bc62ca16ee7143f3d100", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "6a91059e3d94f90ce4ea86dceb2c31c7e365bfa67f7d55c590b96ba543f6ec30", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "17e581d3a6c30309e38b7d17ef79d2c000f1a7a0bc71dc7decac9cbe799fa048", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "440fdfc1adcec245b4cb274eb5d577c61591509bf7ba3ab866432185b0a4d818", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "36a2589a1f24b520ef55ea6effa0feaca6c4da9438d68fdc1600f235618908c3", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "3c2c2ce21f5eece369682f2edcbbb24485b52a7980223a87f28af7620acfddc1", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2e6b558932df11f63ebd56d2624e01857d4154428cac1329e5cf64bfb0f4f697", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "06a3aa7abacca86a068f331c255bbb7980ed55ea1940a598c94a3aa33f1896e1", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "298e3515219679a745e95d034cacb0ffb9296050c59fff2128559f7b66c709ed", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "5079cc771502a74b64df3ab84326aa68dce71be8d4371dd911ab680d18f29672", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "badb1055045be086afc7bdb9d0865de935e10b2d822d9cf4c6f6f2fa287e4a89", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "440fdfc1adcec245b4cb274eb5d577c61591509bf7ba3ab866432185b0a4d818", -"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "f8b9cac3284d3f99eaf161d6297f2183f4a230ea0dee8d288a79d1ffcac5fc0d", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "bfe1ea061851a72fdbad69c05ce85f6b33dd4fa21261bac4370dff952e697c59", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0d23a2f7562795f98415879966258c8678c2b8242b5b54fcc1c736daac93a4e3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5fa57666f86e74e32e642500fbb7bdd376dc807005a23fb3f07fcfc56f195387", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0d23a2f7562795f98415879966258c8678c2b8242b5b54fcc1c736daac93a4e3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0a8a1aff3aae84f5dbf9c102b4b0b979e0be025f8e9654947f76ddcffcb8b684", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0a8a1aff3aae84f5dbf9c102b4b0b979e0be025f8e9654947f76ddcffcb8b684", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "554e6136b09ac2120fb94a8bcf3c0fe6d0fd15711c54424d157463aa4a27a6cd", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "79e95dade990b6c11938deb13a7319e73c5a6b33edf7ba94b74d9419a1b6a95c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "c526d24725403fd4f1eb6acaf5c0525643d2583c7ed92529a42f8a1818787253", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c218217c25858e4df592ba9ed329a4f699bfa930e10fa8cdb8fc1b35dbe5d177", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "726f69fb7d0b6cfbeda503963e7d80d81175053baafdf0c56fdc5e8431a9fde0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b10e9f40bc0eddd6d2fd3d52c9bbc3d1de89c3c28e056bcc8330fa53450a0c5c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "b2a9438c7b96315f20cba80613b9f48678cdc6bc40bad0fc343a352c4ac8f62b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "f11763bbdb0984feba9cda8fd7e27f3c29f422acfb8f3c33a1d3c461316ce6dc", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1969414558ea0725da5dd16bf5ce42e6dd41657259660827ba5cd43c676e58be", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "f11763bbdb0984feba9cda8fd7e27f3c29f422acfb8f3c33a1d3c461316ce6dc", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "045ab58e5228e001327f01a8b11b11e5881ab18afed272c8c6ffc507ffb4ba6d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "045ab58e5228e001327f01a8b11b11e5881ab18afed272c8c6ffc507ffb4ba6d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "b15f9caeb5627b7de07e4a3ba80dd662315398aa0577b4aa850bf04870d96ae6", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "2f1c82037bceaf4a3a5587f63791cbb9dde2c7f3cd5d0c4e1815bb6a7968c479", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4c959965ccf57f6cce04e126c41e00900fa7eadf2e6bc7cd0c597fac93cc0206", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c218217c25858e4df592ba9ed329a4f699bfa930e10fa8cdb8fc1b35dbe5d177", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0439750afe32d0faf12613e2a80aec902ddf89d298bad15fe398654dd873fdc9", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "def7e507572e22ac7f8f48e6d591d36e707ec5abf68e74263ee67d0bf0624fff", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "4ef6c1c80cf0c934939dcca4917446fc1fc30fc1f60962e77b3bbad4df300247", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1b738bf75903fd5b1c582aa29b1a2eb5d7cae31aa6e7dcfe5db94c672ac21801", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2c5e91b90ee372c8d8006754d1decf1803bd515000a86bc0571153a5b7199082", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "554e6136b09ac2120fb94a8bcf3c0fe6d0fd15711c54424d157463aa4a27a6cd", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2813d1317ec2a585053f14aca6c32d8b9c429aa97feed6ecfd5de61b512eb395", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "c526d24725403fd4f1eb6acaf5c0525643d2583c7ed92529a42f8a1818787253", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "85371363093945284090a6fccea1bd7292b217b6d9f6bf4d4530f55e84266f7f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "28c5d510ae42c52784e964975b32ca25897bf45a1b903d6371d046a949d9bdc3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "30d5dd056a7dd785bceac25dc65bdaf3f84dda5f24e3c0ed8622c3fc00fbed69", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "b15f9caeb5627b7de07e4a3ba80dd662315398aa0577b4aa850bf04870d96ae6", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "25ee398fe06b6bca0cb0d2d500d01c23206fae8212516bdcbddde390c4476519", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4c959965ccf57f6cce04e126c41e00900fa7eadf2e6bc7cd0c597fac93cc0206", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "968751d33f312d15d9fccedfe50b3d3f05ca169c8f7995373544f75ad611447d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "98cd21593bfbb635bfa897a6e7c5eb3c6ab80fba03a2cba3aeb4f3259e0caca5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b07ea1ff2d249b348f17f41daa0cf4a033749d4bf7e52a6ab5f88d398f8301fe", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "31fe200afdae83c2d32938a8f2b0be051ea708ee6cadc198e08cfd41525f7cb0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "31fe200afdae83c2d32938a8f2b0be051ea708ee6cadc198e08cfd41525f7cb0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "882ddc60a090624d69cb94daf66cc5a04e82c83af3050d35d505229a75f8886f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7781a854670bb38acbe5d00a99e7bde404f7a8f60d68a1b07ec057b1bd4fb2f9", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "897fdc8cc7c6358a0dcb4f566f3fa88c6e005dee6d372027bdd3ec2979df9a18", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "13c3d46eb48b6e9e989cb9a241987a3a1ca0189236596d2a3ef9e12502874011", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "40a49084a89c0fbf02ed380d5baf4b1c5a29b4c675a273a77c2c29a341368fe8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3b6b4d2d2f21f8e693aa7178077a4640d875d22ad45f51683d446fcf73dea687", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "4f8de78abec5b7086a9212fd457b216c5e9856dc4514f0d0ea171e55243f5079", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "c1ed0ba1042541c4358e0f9666a6ed5c566ad1f48985d9e8692bca01dd021721", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "db0b2e6663426e80eddaf22562a13a4fb6101e89472ed573b411ee489d99cd92", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "554bf5d9771ba37bb944f1b98b246163f2cd7f05a562bd59a7897e85fd1bc222", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "658a56d1280968e368d8f3729269d671cc15ea34d3141d421a1efb6f46d80b7b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e565b67dea91dde4fe0efc4c903888fd90c107e24d55d9814a8cee76d38664bc", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "f8db9c6f24dfbc61acd1bf055429331bcc0fdb16d23cc0f68c7403198fd52766", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "0eecf6e83e3d9f5bbb98902511f87dfb309fc6ed3509400a5c74ef592c15fb49", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "1b8010dcc57554993512e0c9cff0ec47d2478094446a0b609388b81a54eb37ca", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "1b8010dcc57554993512e0c9cff0ec47d2478094446a0b609388b81a54eb37ca", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "1c4d2386a5322d5e0fc5e690d8fe9e3f629536c9405521485420f6dc2ed9de8e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "1c4d2386a5322d5e0fc5e690d8fe9e3f629536c9405521485420f6dc2ed9de8e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", -"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", -"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "cd738c0f1477e72f40995a686927413ded747e08275694b149167de93b3b769e", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "74fb1d8000a1565e80d35d3c3f79161e8b3f586ab8dcfdc7eee2a020b499c078", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "fcef99ead33b058212580316b41570bf7c8fadf64b566c71b4d70b6b7d1c8e3b", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a02157c1d1909c456b33907814c417ceb9d16c7f9de10d56cbe12d09971b2560", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "bc34dfb1e19b4c655cf44908f3ce05b21ba0e9cb8b4e97bdee35b8291aa0a232", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b2666be6c016c3d58009873812225387b9f2154c7d498c620bd7a5742058d654", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "28a9508cf78d77055a4bb528da662ae0634cbfe5638f92e331b7dc6b2d91792d", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "e7a2d703602998ee5a39fb7fcff9ed804ad0e8a94bc5d4f7205bc51526ac93a4", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "9a2abcc7ec0a58d74521b06665dc3ae88b9a62042288369390d26b6763d827b9", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3cc98b88a21d501a4c63a2b0ad19ec5f3d40222ffd1facc0feb970542581c4cd", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "f5beba2c29dea248bcc23dbd4a0bf3829a5d3560baf838e2eb5f69fbb4261768", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "df81c39e6fd20ca56aafd9e6c4175472190cb74a7b2551e196b3e6e1daee77ca", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d025205f6855b9cd70dd9dc31ab924d009e799e05c5b94135fc14dc01f76853a", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "380ac240bd5640370348cd3f11961fc8b33d432d6734663aa113fcefc4ce9eff", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "9735e3b03d62177215eaf671d9dff4e9b1bae1fa5c3bcefea290dd723320287e", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "cd4b56ccfc663dd499e4ac02fff1000e05f58347f1bfdfc45612832e5c7d780c", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "212c91ae3491cd920d1a7b86d47243812ca5456239406782388afea2b556331d", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "4323af53246ae0f3f4d3fe83b64612bd3139447c67ce4afb7e21ba48dc704fae", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "8fffc8567425254a0b4dfade039542bf67325931291631cc2530f30e080fad8f", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "0ef066ede0af3680c66ec9ba1ffdd9ecf0e3109dc87aa4e9878713d5487e385a", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e604add36266544fcc5e958217f9cf4ce4c3c1e05423ddc7e5d00bde2a24cff2", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "e00562b27b9f0738242a8978cd22a2fa864d600c802a48a493377eddb7c9f24a", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "721f62dc55c4b4110403d0a68244f858be5f6d16cf433f7bbc384ef213ce3f5a", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "2a489ec807d73df46989296c5bc1a11e19a770c5e4b300180c6f59f7c675fdad", -"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "536fb01c22c7be1bc634b717159db1df0dd91eeb45462aa01cda130d79aaed32", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8406023bdef43e5c3e6a2a424bd00c86c117986ff659d1056784714ed8a660a6", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "9584a97daf3d31018406865e37b8f1aa0e71bbf3a95c8616a3b4226d9b7af028", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "26f76bcad169eebcc044ba8413ebe40ccaf51224417b463e86b61a7af8539abc", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "8f6906da90d9f21e276c3aba2c4a4195a2775d186e163e79509248265c752ae4", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "3c6ac4165c200aff2e4100493b1f61f07666bee1980296efc4dff745dee45075", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1e590c419465f8e57df6e0f9e85bda9d71751da84497a68958c046dcc6270ab1", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "eb334c59e145d62a9f68d251d0b8ab52dbda32d3768bf4fe79f0e73fd5e21abe", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d4a17de10a15cb113a0fe80fcff712bf4155cef906529d1b45cfedeae21a1209", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "537c0de7f1b15b90c20daac7eb952ac75c25eda0522d1e084a27207bc9b51cfe", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "dbf54ffb031915f5daf4314715535eec3077c057504c894f6171b741059fbb03", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "da2e9ef780a1838e3c4605c4928ae780eadc6a3d712be1fed620eda22349aa5a", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "62090cd2fbb8fa4439cf115749a6093849ce984bda63a8fc4cfa6523ff90cd11", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f6f2893420b12f51159c6343d2e12aa561eb07cdd2af554e4e6b2a72253abc19", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "f5fb5aff5228b341ca81dbfccc94de2a7d14d686c5f7217bff61c765efa6e5ec", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "74d935361de0de8506746db9759f944815bec0fa5613a85eedf422b4cca5d3b0", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "27ed8668c1c6692d0ed4cc7a40f47f74cbe7294fcc1c7fe9fd7e850716fbbbed", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3c2bcdaf8606bac2d56748fd6944ac4cdc38542fa8c1c84268910ff09b24a26e", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1e590c419465f8e57df6e0f9e85bda9d71751da84497a68958c046dcc6270ab1", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0af7a7a73de53629bf1ed8ed77f34a1c0010a15310c8a3081ee89fb6d6c2c4a0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "f07044323bdc4eb3e297fff70814493f63071f701fb95e949bdd9466b9eb2514", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d3687f2ad206424a8824c026cc23b8c2efcc207cf5666a83b10b447828aa0f32", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "666a315e37b89fd2d614e579b9dbae14e32c39359ab1790450345f0d32c89f8d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "feb1871fa09e7a12a1586669b056276f3a259d190fa4bdc396f4ba26fa07d851", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "20bd63e82f4a56754df3ee96dc5571a81295f41ab067b35be9a965baf9594e3e", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4ef4f4b9fac2056860fd5253317b41ec99b729e1be892b249690efc1d31f305d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9f116fe69f56453062534cde498c32debfab02d82ff685cf497777aeb536d747", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "39e016c5a3d17f3cad668e6d4c7ead2cbd7db3f322f3a8eab3ddd10d0030c0e6", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "45b27f60f4d25f70bf7113af1eec6fe214f5fe5a2bb9a8279da4111209d72ee1", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a78f85f7055be2063d01ec475356e0e7c3d9c4985fd302e42236eb03c88ca953", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e30344a76f7988bc928b86abafdb032b78a48607ef16cffc66d58473a7c8a13", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1e7110cdc5c51a73279fccfff529d9c905203299f9de5d834aba262e5f0194a5", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "443583bdf27b893b6dd4b56bd5ed31f66a33e11d622a8ef2013c6e36f9b4f39a", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "be5bf33d424fd0874dcbc1d36ca4a0492e185b42e0ee13078082ef3b648e8919", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "cedf5ced575187abc950365142057d4d06ddc259f8647531dc39f3a25aade3df", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "78672ba722e1cb276ff48a2bea40a9026e9e2582ac1cb5db849fba1a360047e4", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "cac7b4b544191fb4e462fffea2991ce0db78d6d20fc56cee418186edae0bd0a3", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2a428a25c24448b6912201a351c96ba4a2a865c762f48b903f10fe371f062180", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f4807908daebd239b4f5606c91f06be35c93e9bb7071e92f1c2459edb548a6e6", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "321b05495d37f1f95a09fc450601ee2e3f370aa4af9a7543e63be13e97c33995", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "51a774f73b82b55e0bf1e5286013d47f36287f2e6e99cd509bf1d0ef42b67ded", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75659956ae467175de9c7a8bb61d9d7321efc91f8f87816a17f18463cf6cff41", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1f02eb23ba80694ef0fbbe4f19614f84ff52c9342a0be48f90a6f02efa816dce", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a400a0b33482bdfd4470e82c96dab21f08652d6436c8273d820eca0c369e39d7", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c58cafcd1abdbe89105ed4c693980b91b93bb2d273dfe27bdad1db033ca3796d", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c2be4d8a3c8e98c1306e7f025c6faf3222f95ccb37a7ac82c7e3e32d34929c97", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b94c601e163e1e8c0e47b0f2ab2f2cf6dc3c7b337e015611be11aaa82f9b1fcc", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c94c8930707cffab1f17b97bd3b30c98e9928ce5208c9fb6c29ad816cb9939c2", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d3850326dfec0f6dfb8468da7659efa08c7ac36e6c0542fe6ad3e4ca8d604397", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "01083e3267270bb237c4f778f4b021702eaf153d0b541d1e575b37751dec2445", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "577b928bb0420dae9e00299ab858d1f59e4c1b4e3476d3fefc4f266a4cf28a50", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "23e90bde0e5eae1b7df9b3ae3e9d84f1bbba8af351f15c4031291d6f6059e5b8", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "d0fd6f4824228a40044e3f7e3ec29acd4e0792e6ade5f646cb1be61b27e01fe0", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d2a49f3914f71aff54a761a076c4d714ba042fa2809b192c37f83247eb70c023", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "75fa897dfcb35653ce38f1a9cc36d44450a0c5f97864d0096198fd8a5ed66e8d", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c877dca4555a977d881c38e3e4348c93c9ba30c654fc63d5d3db1a1269a77bac", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "cec4f416b087df067b99e4d8355da04b1a694ab51bc693d1b28be44046d76d85", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "2fc007b808d16adfcec5daa8925a3007cd22c3b6bc51c3d7bc9d25924959ecde", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "82846d8e63804462f6e56bbe75ae550f46092206996e02d940783f9566f8eadf", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3430e97706eacfe0a9cb99dd74d64f8a027f71d55b077d0e745e421a4332a7da", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "fd2e44bdea6384ab4b94b5e0557c08e7ad3e7e69fc1e0bdd4e067731ad0e07bf", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "32dff1643694e5a1fe8b29f4aadd9149f4104a59e358f5842a82616179c45962", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "bea4ebfde9aa1878a47013eeb914cbc9b13ec03e569ddca5dbff4eadb8d958f9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "72c32c85a8db6e00abd4e647048782669390136fb49e4df889ce98372f31e2dd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "5e650a58311d032de9aa4b883f4cf62619e6c8662b3f6d053fb88319ebef4377", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "4ced87f327f8758a9e8b5e85a1cdab9494ce4d82b52d1a7f8200f8dce483e49a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "dba3467455573011a0261da2656447a47e6b7e6ae5ffec5be2f13c48fc5d350f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0fe3792a4c30cb81b842f891a0815b636760b28bff3634c3df7d0145391a5c36", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "53ed953d030a21ea1cb0c6e79d137cc24281b4d612ad6b7364023496029addcc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d50c6389acc148cd7c39b4b8a66a52612296272fe12bbdd7a6c6c9ac1834032d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d9fc6300c20150946051d38cf2266c9206738aff9c55878b38bb1ce8f926c496", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "ec7de41627f7ad667d72ca818f2d6834e7368e088d8c1ae50120fbb8e8cfb2dd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "518e2e69c1ab095a7a2915dfa484a048e17e715f167ffa1a1e01a56932ad1ba4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "477e435a95a07d539ddb25440c07fdafa3d2ade23a3b74196489ae92df64b2ac", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "e9848c532b610f0eea6a37e46a2a25392e44a69af9e895dc64288430ffeb9dc4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c5bd059bcb1508240c47cb70be30d74a17f15e871b28876ba5c2c8b78e0feed7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b7d0cd3934588201cb5b9531d27df8407e6e3fbe30fcce6f697ee5b9f7e068a2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "24ed199cf1cd2379f8b4588d4448c41462a3e768ed0e25f6d8d3650eb798f3cd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6521caa997ee3c15aa6fac482450fca18cc6b7793159df567489bdfa93aa3356", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09d1dfaf38d500cef7b298ab61ad2d128c530bcc6fe75f405821d0a2d45130aa", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "9b2dd7c06acec4d060adc07206acdb8ae616926b91d6b3b4393e5429c8ce763e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "692d5fc2ecbe326d6b229f77c7d449cba76ac77eb80e9df3ed85f9c4326d48b6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "687c8cdf8cdb327f46eb606f4a1187fac67217f1fc9ac540c975a3d56888fa12", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "c9bf1c94e8141b620f16486760901e46eeacf990faffb77b290a611e8f052f04", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "87cc3fc2abaca6f3ce3c1227330a3a2b9fb4a3263f1cf724ffd63a196c10490e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "851946d246793d72923aa3522cfe4a0c455d6c3ecd77aed38ec6c2fbf42ce29c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "29d3ff94b84243ca133b3b6e07bdb8f05e1ed4e25b149a05b3a50b1e72676b6d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "38b2c7d5937b5f98444080d1d40cb6ad4b984d3d8cb6f8e8c6b5f69d1977d9af", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "2c8d328995f07197d300c551e539c8c96420aa98c99e4a229d7043fbb4d493f3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "0d2cd29a60c45333e4440d859e4e47e32310851f86833e36e5034149bf2cc846", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "e0ea707742a02e41a5ddfc83aa66b23880b2acc59e05fc469b8f6fc683be6cad", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5d4e33d185e8a4bba81c9e60fb270a326aa476ab780c0e866579e2b7c602e6c0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "afff259ff7e1f0c82106515a313b53575e612a1802a298c8b111fe752ba00b3a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "40515ea662cb38454da94fd60fcdea8d9df2470c0b0eb8e4d1789b168191e61f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "acd5a8b109b63e54e620dcd0b7f3b54bc29a3d3c170ab7ddb89e79d1737ddba0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "17e8ff760ef20eb12abd6ac6517b0f799c1d27033a399514d42762c76cf49f7d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7e5840ad56a4962e05301215c6223a4609d5391b0622c6ee5c5a77884234488a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "f2035aa248ae4cf683240c128dffc0eaf5ef59178946ad640082c23388767103", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "a48558dd5d47efe2c3aa828ca735972b7316063b76f7eb2505cbfbfcc45f3068", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4acee103a26ce9d1af3f1924f6c57029bdd99c3a322d629c77ce1dd7fd54b51a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "97b4f0b3cc4795d4239cbf6686f598edb92e9cdb6583c339e722d090a5008083", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e58b849808153b44bebe111b96c8c419dc4608a24e2845f84242561b0dcb9d47", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "139ac1bc4afe643028de15d71087930f363c3850c74595a33f10cb97c7711b4e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9d6303f26588d1c2e274ff268257c447e86a75ddc7cf46da3a2c0a312ee8355f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "452a1f5e361808295075750a71ef49105715227600fab3f5443b5aa0ff70d467", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "d5064fd1d7ec455a32cf1b2eac39dfc38dc07b231c377c424b7feaddb476c95b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "8f48ce150a385a0787642ccad4553bccbad05b107f9b01f8cd85f101e0952742", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7fa83be8c046f8bc9c5b8114d1d87fd91feb322a1cbb9e3fc4689d832986cdb9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "67339c72ebb598461b9ac367a6ce8d678ac05bf22f74bedc2444b024a831272a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "5a5651311f9a8286dfa459a29587c28ade2b0af44d091cd593ef3d2eec2ed3a9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "516f0704d1a53e9d7281007a34d02051de91fd89b35d2863c004b9ad25b5cdfb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "c09e8dbad8fa4e1b61c1a8e1ea569518d1873a8979d561d7f65427e71598d22a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ecf696fab4faea408264bb98ec33fdad726906212b5743bbc42b3330edfda63e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "647c04b5fa500a7ef372cfedbd5185dc477da59ea734af5afdc45fffbd0addb2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "130707bf16ac9eff5373b1de485eece01b4b069dc0f677ea4b3f609d1c4665e5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "173062b458c03a8b1b510d1e200f25aa3e826d074102a7c7177f544c68f21e08", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "787ac7fa8becb6081dc08258482988059e3f6c24aa248460c730c8df2c1c4f1c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "6690fb1a9c4e8847d2a2866674d845055cc95856b7c7693bdaa1e92c693866cf", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "8eb37d3d2a653498619b721de8689da5a6f0ae6b30c222230c8e7dd52e39d4ff", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "87cc3fc2abaca6f3ce3c1227330a3a2b9fb4a3263f1cf724ffd63a196c10490e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4428033963b71ab3377d7748cf48f08019c93f6261e38665b837c75ac0f11e23", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "89508fea4c7df3d6fbb0e4685cfa18921127566eb63d1955f41e91e8e3dc69a4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a0a71a445bbcfe996753ec382a204621c154594347e6fd382c55db4f0e706bd3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "f5c1153630716ed072919b1098d89ccaa2bd0a6b887bd772e967b8aedb50aa26", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "36b472a776e2e3851eba8e63cf48baa213417eefaf01200d7e7a882a3957590f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fb2f9d4c6c3478fe5324801be0805c520f24f312abfadb8be6d97c31bdb7091c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "2045dc0e56bd0b81f0fdaa7dd1121211d17ee763833c9251f5aecc4719127779", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "ba83a7059000599aabbd37bb32378f6219d2cff830d2aedafbf482d26be23a80", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "31fc222dd6132547805ad3016a4ac6ea2d3e145801420f05a3c04faf121a609e", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "3f89ae620fa621c748a7d20ad30e36ae0747b0f13b754fe33a471f164528c8d4", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "2f83720222e4d29f95c57b35f501b9aae5ca8e868e995fd5b1e902c569bf36dc", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "065827e1f8348e61aef56194c203a57534d5234ee8272d611b7fa6797c4c3f90", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "497c313c4bc344972c9e1dc227643449a6df8c0058f6241c3eaceda2fde93743", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9463e7b88644adc19d54256cccb0e211236474c944ec2ca4dea3cc30fe166a42", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "11ffa2077e9cc815beee4b110aa91ecd947e9b44cdcdad699cf7f1d35ca3d5ef", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "54750bd1f69be04eef09af3d24815732e620b129a64ecca2c910316c962ae65e", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3f20cddfb5d66990a439564c4ac399b9b19078c6d18d09b353ce335b10b8edeb", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "85fb6e772f66be1ea6a0dfedbd9f0bbc19bb8923b9f63a6bd44137326d94506d", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "2aed5aec20006dc78c18e2e4a1e995778a12c979434e6f24065ae62def7ff877", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "97d5fa83703255b24090db354853c606a612e357ebca517c8de6a4103844d643", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "d7f50998b59772a37b48714343265bdc64be86d92daab6819bdc00a5be7abd5e", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "29ec4cf651781e1a10af7d11bb0945dd17d3b5078ac49d9568cdad723cdf7a79", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "9806d8ed952d4ab36ec984bbb4b3a44c25511bea243230f03a2376e567f9c6d9", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "5b66c280fc1a6549e5ed65d72100fce7f278097ff05d908d918a6bdec5ccbbd8", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5b244f5767bab5ad9c7f0e6d7bb553a53c9f717026afffd75af35672fc3cf789", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "d3741e1d8dc3c25f091ba398cf40bf28f37890031e462436276fe4bc2680c35d", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "9d111c231773407fa452c116b38698c2c9bf7945e117df2fc7f88f8f85ead953", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3187917eb6f8a463b4bbf3d6bcf52d9db341c334c1bb7d2c00e9d28efa325cef", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "5b2432d9a05314fd0223b1f0661684407192bd07e3c1fbca7c54e1570f52fc2f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "669ae415ba5cfcd9011370ba416d9cedf0b270aa784e6ac111acdb2a84d693ac", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a6cbf2d1035a4719680c13ec8840495ddc46e89437a10333b62d99e6807c5f45", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "40b7a3025e62d2e8a4b5449f0b0a13504f5e1b843cb92a48e4adf0754752de4a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a9d959b07a6359f8ba8f3ad412ba1586d087a5f5569039a2da6cc618619ceb52", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "1848e758bcfc9b575fabdb0303bb48837e6396371097d5d7e6ea8fcfcb26c36c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "cf9a03a6f038294bd61ccdcd070dbdb4793a3c06d7ef3802180628a1c8f6df27", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "5ff89f607e298719af9d8bb6c7a8ee09ced0bf235c7d7641a8700c18beafb777", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "fa4014285217975c95c0f5d53dc28a963bc427697ce56dc31529ebb637806fda", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "9d861bf42c34a569a2b7d16f16c1795aca73fae88b1f1f82ebd2359d38791a49", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6378f7c14bb66cd5ab024a2a2797079af8e339f25aba80ddb3c3aee7c915e9cc", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "b77c87e04da56a384fd5957593d6d7d96738a52f762cdee82addccca18a7fb12", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "f91d80c0f7c1ac4853ec90a3f356d08496994bde3fb1d801563e99de546ae384", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "77622c1a1851933d37e33faf40e278d82086301db512620a877701dd77756cc3", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "900231f95d95f672dea32202b254355dab5d6076303f86de183f6970c9f2f105", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "945d0fdd26e9e0d1c7b9296c1020897f94e23fab0622ef45541b9c2916d6e083", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "549066ab1bf84afb533fa0d4c094aecbd33b0402b65fd5039deb342f74737d0c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "959e555623ba8f2dc3cc066d713900df652638ea4cb08872c032fd02df805e34", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "706b689623b759917e6a4335a8e93e7ded951adf90c889a9743fabb48d6b23b8", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "423e2fef974fffe60ea0830be723298bc1e09aa9ea2e640b8a7a35a0a55bcd1e", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "37d97dcce1f405d827cac46687643caccdae36be13ee3622b6704401717d4e88", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "50dc4a5a2a8b0699ebcce89f17c893ea49b48797df220e1b141bdce7308677d7", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "a04af00a1a44515d1a2b7cc220fdcd5c57416232c84f632691b9dd4498aca49b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "864d45c23b12fe4d4f66e0350506763636320a02775c1d9173468ada7978ce34", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "c80563ba120dcb8f62a0a6830e99210e341b0ca68d0f8d672a9d58019f2aaeea", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "22575a8cd66903ce2373fd8794882919eaca9bfe2e84bee1d2ab56cafe9079e2", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "3af2b9224f1390483e06c22b27b8ccb61737dc8699d8f5a5845c7dad86dd1f27", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8f20eb9a61ec136a5d053ad7cd5f12bf747df4faffb2202164140ca007c350bb", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "e95148732d86e99e5ca9a0f6be008b3f4b12775c5d23671ed5127d58170021ed", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5706b5159f3131e87cd725f13bdd35dd057ad772c7a5313f5714266e8eb03098", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "0ede94eda7ef5a3a459c0bda5712d051223fe95100cefdd2015168e8e44a3fe3", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ad62568faccd0abdffb1e4f2f291258d58a004d057f09aaaef1f1f9002f4a589", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "0d9a941dff9d6863da0ef205f6589e2132e11c80043a07f94568ae26ef3fb5c8", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "93f7916b566d0a654cea0c06b64c7b44144b5fff2ff85f21a7d723678b87b35a", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "56725288177c80b496eefe436f91a6e684d82bf24ea5d07f52d26f06289977d6", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ead3471685557fb64090c0613bb6ce19a4395fc74504a022be4c623e537f22a8", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "f2b383da42cd778798b823b3710d9e915d14590bd04b63a337677638df3fbd34", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "d86b3200a78491d0f6f61532b2de3dac805b6c879f3ea375d5aa39103b70bf7b", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "acd449f047124934c2dda35fca97259a757383090cf6153032857e1bb56ce202", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "551cc01d7d3d646f014070230c5ce03c7d51bb2c0fa024b556aeeba3b6621af8", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "551cc01d7d3d646f014070230c5ce03c7d51bb2c0fa024b556aeeba3b6621af8", -"T3T1_cs_test_basic.py::test_capabilities": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_basic.py::test_device_id_different": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", -"T3T1_cs_test_basic.py::test_device_id_same": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_basic.py::test_features": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_basic.py::test_ping": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_busy_state.py::test_busy_expiry": "5807370e36255f64722c9b70002daad3b718387eaa41102561ec6a0dcbeed20a", -"T3T1_cs_test_busy_state.py::test_busy_state": "9a846017e3ac79ae304490124caaf70eef76b60d0372c48e3cb8cfc2b334b2b0", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "2e607dedaaff54ba045743b6cf77f83eb81608d7e5ab22c3aaadbc13bfba9cb1", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "2e607dedaaff54ba045743b6cf77f83eb81608d7e5ab22c3aaadbc13bfba9cb1", -"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "19cd5133ca91858fe667cdb4cd38de92ab01eba5a232eff23ba6591f59e7f26d", -"T3T1_cs_test_debuglink.py::test_softlock_instability": "c6d1589a2a6f53a752806e4aa4e2b03f68685ca7213c5dd4af5c82eafa6d014a", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "bf3b0b0bfc905aa8b9cb991baffb7c523f4f185f0a6531081c2e09fee5964108", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_language.py::test_error_invalid_data_hash": "eeb33c9c4f9ed22a54db5d3ff17e8df1f17725036d7a4ee8436ff1e957968a8f", -"T3T1_cs_test_language.py::test_error_invalid_data_length": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", -"T3T1_cs_test_language.py::test_error_invalid_header_magic": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", -"T3T1_cs_test_language.py::test_error_invalid_signature": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", -"T3T1_cs_test_language.py::test_error_too_long": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", -"T3T1_cs_test_language.py::test_error_version_mismatch": "9b22c92d795b8d46ccc07ad08ef2c31176407f0bfc593aa241be83257bd7db94", -"T3T1_cs_test_language.py::test_full_language_change[cs]": "9b7fb87471c4cad34c5e6e37413496e06119061ed1621fc36d9ecf218a167573", -"T3T1_cs_test_language.py::test_full_language_change[de]": "e6bdd9f09eed62b4370e6ce92402e2ef4dc4c29b09d90e8530492a7e21fd1a28", -"T3T1_cs_test_language.py::test_full_language_change[en]": "8a9e7f32e0c4123efbb4dde7a3bc62d9177ed4d0aadfbbaa114e64dee3d852d4", -"T3T1_cs_test_language.py::test_full_language_change[es]": "a2ece6cef08534144aebea549c2f7b7dafad44200155f7bef4c6cd9085b25690", -"T3T1_cs_test_language.py::test_full_language_change[fr]": "4b5d2ef1c9bcbafd1705576a34d0538dd25e5719c8ffa156ebccc2d04a2d15c7", -"T3T1_cs_test_language.py::test_header_trailing_data": "bd0f5504c03601f1c48fd8f44177e13c5b64b96ee1d7faaf463a9d42605f9c22", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "46141e926bb646e9e9511e84c9dbc85d3c921dd4b3c002d60e786920bb61d5d9", -"T3T1_cs_test_language.py::test_reject_update": "a04a7ec8f30e9ddee0975d46fda0a10f22c0e1e513283cc6045c00a52f8a3fab", -"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "fbce679b298b36cf1f59eccc37f5ce76a0c3116f2ad72386ef8b19fe331f3732", -"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "fbce679b298b36cf1f59eccc37f5ce76a0c3116f2ad72386ef8b19fe331f3732", -"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "7aaf27926509b2f07d1007e0f925c3e4f07ec13f28b323f3b44b4f4406d5fd79", -"T3T1_cs_test_language.py::test_switch_from_english[None]": "78fa9df1c7bc478776ed934deefda7a9e8fa40b7d6dc7bff3c3a09326c74c10c", -"T3T1_cs_test_language.py::test_switch_from_english[True]": "78fa9df1c7bc478776ed934deefda7a9e8fa40b7d6dc7bff3c3a09326c74c10c", -"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "91a7151e16f344efdfad245fa29a186f1fae409387e4f1bf732a0cec1ed739ff", -"T3T1_cs_test_language.py::test_switch_language": "5eac4f7bed83779e740736c7cec12ed6686a693ae6d5609dec9312081d20def3", -"T3T1_cs_test_language.py::test_translations_renders_on_screen": "0ef96497bae150341b21d5c6d8a332b62d242ee59174187bdb0e96269dc43b26", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "5e323af2413eb0d7a90a4648568669d527e30fc65f57a32a6723b650e4257a41", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "da578cc458ff7c77278596c088c4fa5494b980adb8664a2bab41d89757439dc8", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "e752565d9dc631550fccc602775e2903d2036d530f52f7f70a2da4850dbf217a", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "06b22572a797de355eb21edb05c582369e0f480e69450a3d7ce7c338fb07ac5f", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "06be2ab46c89f4269e08a3e31dc7f4f7d877e8fcf2c111a31d4302789641d46e", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "c19522e144a09d76403bf308e261fbfa00deb94b8f09f9b51c91536581cf5006", -"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "21c0b1b9aceda19eadf19480d896b9b60faf971da63d147c28a0fd58fb6ee114", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a0121bfb19291068d4b0095651f20e3ddb3b23322694e01fcc641438022201e2", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "cbef8287a241e4a730ea7d2907d3a08a1b91e39dee8852ec95745b018211cfe9", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4fae4bc57a53b57aa1c6628b625cec1d41adb07c0504a82f2afbc2f5d9d11384", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6e80595458ffb3c1a41ab5e2a2dc2f7c243708645b040b4759ff5e9569dbdbce", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c1f9b6f548a0c68f2f9c8be67b74811807bcca0ffe8f96ce35213d9ed57609db", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "321079715d3bd98a5f22a6da9d46a015dfce690593ea6fbfe157b3dc9496771c", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6c2b37a606caa923305e2c890d0b75af1ca166bbff72ef9bca491fb579357186", -"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "f80a7223bea74080baf1a1dcbd4ff56c52011048ea5478b721cc20214b42f77d", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "8f7a0b93fd9602605aaaaca55b409468e09715f425611bfd98519eee9f059e38", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c1febab3a5f19fb7f5d52a7f8aa0b61ec00bcbbd21e8fd4df641ef7f7e737826", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0151cccb0237921183ac7036f9ba711f0beaae379191bb2bc64b9830f3f971e0", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "b0e1f29128f59d355bee664cad0eb02fcae4bfef3cf06d5196fb316af89bd858", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "21248c1c66a4ff82086d023306e0ff4968841a9264f600190a32dfdc046bcafe", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "49d87a7062641b69719b84a1e5c18dd444f231a1796bca763317daffb921c25d", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "98f5e95a8394a34a221a92b62d00fffd7d4c47c6252bca1c3f2d1f426e3a97c5", -"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "3ca71417890e4f6c8cc37459c270f3403fcd1b3d6e48bab2503b7add0f385a05", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "ee65d2c2ee84f7ffd0160726823ca09a3606ba16273b243c9b8a71913f7763f4", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "840a8c70cebd67533d49bf2f9de36209d4c0c07086bb1a894b7a422901711fe5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "98a93969e252965167fa53218131066b76acd33ad68b8309038f7220de8d05db", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "840a8c70cebd67533d49bf2f9de36209d4c0c07086bb1a894b7a422901711fe5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "840a8c70cebd67533d49bf2f9de36209d4c0c07086bb1a894b7a422901711fe5", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "d21a90872b6f01417683c744cb383597eb1482b52c11278dc56c4285a5934d23", -"T3T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "fe9aedd5ced93330e544bd1c9c6cc6fcc7bcbf93e518e3240e4ef4f0cb21a085", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "dbd5f08579c8a9900a2a5b8c2d944866b027c34bcd3f9991087e85c816822b18", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "673f0cbd7ac66238b4e1f4c88f75f3ccf2b59309745695fc10472be4a1ae1442", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "89d1aea7840bbfab21733f43d2cf1e3eec875f09ea389579fb000e83990607b2", -"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "39c748e59c04d5429773bcfcc0b802a97c4d1f6a22a4117e91e0c23f6b355651", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T3T1_cs_test_pin.py::test_correct_pin": "9c58caef3992a6820b4909fed0cb1fb7a05097f300084dfbda81f7417c5f70d4", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "74d630d9c2f2bd50fbecf646415cca8ab6a569b1119aeaa3fe66f46e53e17ca4", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "03f889d520135db9a4ef5958ec7a832d6759533e1dec90f24d5e6895ad724db8", -"T3T1_cs_test_pin.py::test_no_protection": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "e481dfd2660dea1ebc913c24057a955710e58a1ce1b7f3d8625d1b55d645a65c", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "08693f3fc06dd29985f7e4e4f088a05d95a738c263e8b6dfc0c0041867bc65e2", -"T3T1_cs_test_protection_levels.py::test_get_address": "5ce2a993e76c3b917627ac5a235a921f8b6885ee7000293dd9b204115ebb6e1f", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "cad276bac2e8396a4fbb906aa1fe1e612030553087d751489c2780228e43a7cb", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "5ce2a993e76c3b917627ac5a235a921f8b6885ee7000293dd9b204115ebb6e1f", -"T3T1_cs_test_protection_levels.py::test_initialize": "26fe447e4a7e4c1ec35c0f1afb199cd600089d6242397ed1be76bf12beac8495", -"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "108043b1225d9290b08b7e85a2b3c1de72111ef9c82ad692c0c69ea9e2c1fd19", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "fac0c9ce994caaaef0951a2e97b7c828406b76749fe0ce53fcce371481525867", -"T3T1_cs_test_protection_levels.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T3T1_cs_test_protection_levels.py::test_sign_message": "4b22d39c28a288f34eb451cd870be4b76ff8e5c8b3a75135a8a8732f5c3ccd30", -"T3T1_cs_test_protection_levels.py::test_signtx": "2a65bacef38f1a27ccb2c4c83541b3bd7ecae788d6a97c796b82c659cee4ff0c", -"T3T1_cs_test_protection_levels.py::test_unlocked": "0347f39679ce19780f5f1eba34262ab495e1d1988e682fb3dca15c1298e55d70", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "7b75263c8cd9b308c701e7267bd9cb5de18fefdde5a456cce34c1e192ab31a94", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "ea5a35e5c00a10459d0a3bce488cec0eeb60ac3076c43d09dcc5b7dd7116285f", -"T3T1_cs_test_sdcard.py::test_sd_format": "8ab982f4d35a87ac0fc603076dd9efc9ee77822ab7c391e7faa5f17867b3b1c5", -"T3T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "ac41bb0bb0f52e8b107c1cd58f42675bdb0faf6aad2f2f8f5c3d9911fae01127", -"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_clear_session": "1121fb3f374acc64945f6e9ec8d474fd04621356ae07658395520c9ef288edb7", -"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_derive_cardano_running_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_end_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_end_session_only_current": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session.py::test_session_recycling": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "099800e8e1478d2a71f6daa0bd9a59904ed69610b4f99af4f82bc7735f863e40", -"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e3626c8545ffdf8d8060858fbe64f275e13b87a0a82bdcba53e1cd54574bddf7", -"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "cf2453bd1a01b8ff3747432bcc5eb9f348bbdf393cf6eeba8256839a6a88829a", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "a400d365c69461b637388c8e52d7b30e51688edb21430031fa51baffc7e1d43b", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "975aecca0a94fdd095b08a511d10e55a8db86bbe6a8a5af71bc5b8d8911764d5", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "444e03b100a04ce91433bd96e98c7cb54a1ca1486bb4705de0ee1bfe8947ca1c", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "53c872020e3845b5633f20c9fc246481f79f5a3249dc2c1c6a364d1c6995a5b0", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5552b3772db403c98a447e043761c2bcae066da0946f9db07a8dc817b36c635c", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "f6cd4f80455f5d7bfbcd7fe4cdc6ee9b413a5fb4f5308837f729755e71e04e80", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "f1fa8a3cf65da15b19d2fcd14a94f93c814232adb4cbfff07b83a519cc379f16", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9eb892d697c7f19124fa84be8a994d88cda8037e9fceb5662ef3b54371b4e375", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "82f1653e3bdab8487e4e24b034036a3fca7fe83a6181803039608003191566b6", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "1d2a971b075b5474dacbb08ee9d379e94fbeee5ae7d9a46d988de83d3fd9eb1e", -"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "85f31cdab9b7ac4bd63540d5428a43010c7c9f6284df6aa4ddab1a9ba7b506e5", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "aab7139148c4db5da785c7bba462b99c1c62b39af841d0986f8fb839979d6212", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "af0afee22a2b75c9f1ded40279e04c88786909afb9d6949b798ab1680faf62fe", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "9cd0b5648352049a2a290a30261ca69a060ec80f821a0b64555ec2c7dfe5b8bf", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "182feeea0860ae5e9347e6c2ec64c185f16d4b0136d448bea2d86696871b276d", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "4330f18abba49d143547e9b91b252b48eebdb08abfc1c48a39e5b9cba9ba1efc", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a55dd5a911ad37437e76ca92fbafbc14b6e7e75b5571cf225749ec8921f8576b", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fb7108722b7465127626fa8c2bdcedfbad3df8468a9e74d9d948f57d1b93981b", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "856857bf7d2c9aa47acf01c7497170ae1e223a4e1954c39acb5496f25aab4aec", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "8cb2c23c8f6d01584b367eea36665f76d141f9c5b5a1ec632fe1ef64c20fd16b", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "b0b2f8e0969dbe9710cbf3be0a018686d6e47ca1bd0d660805f9aa612504b884", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "75ccbfbb0637c430b1b5b34b6ab60cac8ee526936e2eb3c9d39a8de9f16f1ad7", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "038079b7a9e3b2d865d24596293730a87b2270053b0aec05d7344f6767a03030", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "83aa15b49f8db110b6e45b78fc0f8afc1026bce81dd9388c10748cd2b57034b3", -"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "49265b0b9bc77fddefbcb374cd836ab6dcbe779b3a0eacb8c3431e60e707f853", -"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "5523f9e16493f0218cfde853817263db17680e391fe872ea7e3b5ed0fa5fa2d5", -"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "6c5bab0969bfc1cbbaf093852a0e959da07c5721128f70a213b9675bea0868a9", -"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "34abd8f4cc3ea3ab9a25a8b2dac7a75281cf4e6154611600cf34745ca37243c7", -"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "6c1bb06bb2634a169251358c36214b49e5dc6ae499a85327baf6f60e80d5d448", -"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "1b183b8281df737e5210dde94d6df74729aa83353a3778a60bfed1618e6a17c3", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "cf29bdacbb2837fba56b65ce9ee0d6a32f163b867288b863cae79bbc5aa79599", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "f05c89f20e80be5faea4ea14bc5ea3c247cc01ee8aad5c374bfac325262a2da5", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "a19c1c732cd26205671ca05ae634ab25c92ba2a78119c4c9279f9564d6f01ccf", -"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "5263c5198f3de829acfb5fd2f062e4dbd7e7a772ff37e03ad9938c18cd741a8c", -"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8b04b754bc8523673322215b6a00ca82070c1cb507f18b941439ddc1a71330b3", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "34c96a3ffabc72c04e7de5c3c41a5220fdcc260e8e428e402700d873fa5ff0d8", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "52be789ecba93fac2f8d9b0f348921b44fbfaf90055de4cd5f317e8b73e07952", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9961a32676e652987196a9dae48864274cc3de8c317291349de3417bbd4375ca", -"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "d06829f14d4ca09da6fe6bc84916eb48febb57841739c059fe02004e940b8bcc", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a62a64a1057c01700d441ff86c311855f3a4c6dd0c0d432c8638b3054323353a", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "633dc02580c2d90ca4ffa7f47dacb0648e57bc04a1254e36864c20188b531cc9", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "e8d30966215874d6f15968ac8a4c8b27225ec5af72320e37d3c5f3691432ac03", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "a62a64a1057c01700d441ff86c311855f3a4c6dd0c0d432c8638b3054323353a", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "633dc02580c2d90ca4ffa7f47dacb0648e57bc04a1254e36864c20188b531cc9", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "e8d30966215874d6f15968ac8a4c8b27225ec5af72320e37d3c5f3691432ac03", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "af662f3ef98d9bfc8f1e03a6b4cef12f8c955cc16059c826808c71f8b1987389", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "2e37ed22095d7a073dbef900c55566874abb4c3509e2de6bebe06920fbe71b1c", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f9e30feb5237edd872806bc548d62acc529305893f5fb3407cb8605ffbfa1bb1", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "888478add81f5c2c760cfa0ac7f372c77e0c49195d2661d9baa1430c8a71e5d5", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4a69bdbb87c28dcc053eae2aaf0c315f5c0d72fa956f80d7d8453786355ecdea", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4a69bdbb87c28dcc053eae2aaf0c315f5c0d72fa956f80d7d8453786355ecdea", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "d35204d220e204e9da5aea5bf0462b4650422d777dedb55101b0b0ea49af27b9", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a5d1a0a50cc0318eff4a27297e56f731fbed0bda39cae1a17615e22e6047d605", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7e808702a6455402afa7993d99edd1c6b37636b63d01090aea02f0e083827db1", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9f14c0706899ec091068eeeeaa847e546de51b1d4f371fa534bb2bdfdde025b4", -"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "000fb25c5a1455cd8c75372293cbca00a9ca034078eb1d401c2213274818fe5f", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "000fb25c5a1455cd8c75372293cbca00a9ca034078eb1d401c2213274818fe5f", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "205772b0ede7ddff5456f5ff1a0b4bdc92e4fb91bf547bb10b6372ccfbdddff7", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "40a06762d550595fc0b80ada085e09555d05e5ef7a56c6be8c49e329e1d89a5c", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "a546916f892916d48fa253755740151a3a02731444cf8b390b1aaf3a3bbcbf6f", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "60503baf1c396d3b5fd275b89b5a0b4a8f877bab02868712a5fdbe5b5c45195c", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "bba776e12005c44b42750132ce34b2168cd020ff9908094c6ecdac9b3be3e753", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "7366009d85f5ecfd28c61df159c22245f64754dc11da6537a1192e6ceb25f904", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ddfacbd211322ae5d5dccacc9904f171f868288bd320867d981544593a3521d4", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "008fabe25fc5254f2d7aaade169d9f994da7e0e47a0159b1d444b2aea33d8706", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "68605cd1afedf8b069b17729804c35353e4be394f4816e2d1884ee8202da11f0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "51fbc1d6d7bc69fccf240f07167831af5c8bc6818b253b468be65023e97703c8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "07d989b8a4ba0af18f49b57364053174371b94a47503b8be0ddbef797f073ec0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "562a13f0da715c2b671054b19b1b4c1886dcd8cdf3c05a893c3e5067615a9c2b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "b8d1f67ffa8727d12975d8906bcbacba67f5b1201ea9e7afd2abf901901a4571", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b0d8ea3c785e4741968b7843dc84ba632474c8c0b8d72a10d319e336904266cf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "62ff4cbf784c6a6c6f494f8e8d0e19e2a2bfb5a2842852fc92c7f8381d1eb99f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9fa071adfcaae9d1e436e3c18b9fcd1d4b9363089938bc0bc68a57f2cafb47f0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "abf4b0d84db1323786f4e7c703140336ded8a409905d8fb1275ebd3f385f86fe", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "04b61e0fa43ee0a9b4e7a6c845d096c0f1df1dca6c78b6b97a262c7d7a710ad1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "72a6eab0613382aacc331682d365480f6f5b54ad8db1152b862e1785141287cb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "031b7f77ade528e0d6be9e1873feb2aeeed6d8effbb54e4cdc942fc54f74760c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "0959faed3903420c9424877baeda4f7a0fbf95ac9eaa8195b1c8be1edf31a43b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "7366009d85f5ecfd28c61df159c22245f64754dc11da6537a1192e6ceb25f904", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ddfacbd211322ae5d5dccacc9904f171f868288bd320867d981544593a3521d4", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "008fabe25fc5254f2d7aaade169d9f994da7e0e47a0159b1d444b2aea33d8706", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "68605cd1afedf8b069b17729804c35353e4be394f4816e2d1884ee8202da11f0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "51fbc1d6d7bc69fccf240f07167831af5c8bc6818b253b468be65023e97703c8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "07d989b8a4ba0af18f49b57364053174371b94a47503b8be0ddbef797f073ec0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "562a13f0da715c2b671054b19b1b4c1886dcd8cdf3c05a893c3e5067615a9c2b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "b8d1f67ffa8727d12975d8906bcbacba67f5b1201ea9e7afd2abf901901a4571", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b0d8ea3c785e4741968b7843dc84ba632474c8c0b8d72a10d319e336904266cf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "62ff4cbf784c6a6c6f494f8e8d0e19e2a2bfb5a2842852fc92c7f8381d1eb99f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9fa071adfcaae9d1e436e3c18b9fcd1d4b9363089938bc0bc68a57f2cafb47f0", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "abf4b0d84db1323786f4e7c703140336ded8a409905d8fb1275ebd3f385f86fe", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "04b61e0fa43ee0a9b4e7a6c845d096c0f1df1dca6c78b6b97a262c7d7a710ad1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "72a6eab0613382aacc331682d365480f6f5b54ad8db1152b862e1785141287cb", -"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "8316b714d7c9980de0884f92e7c5ad1e237244ccc9bdf1afc66d0819182bc481", -"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "32d83d0a70351e53476e86f35b8f71f0902113f5b79d4d25e9921ed9c309c0fa", -"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_bch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "e0593e7a1ea8a0d686885ba322be2c098b17c39e9424aa063fbd8c08e8056071", -"T3T1_de_bitcoin-test_getaddress.py::test_btc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_crw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_elements": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_grs": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "aac935534336deec7ddab39b51b136d801b9b77fde4f619a2012c1a4e324af0a", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "c2b5fec8e2c1e711bce197d59f4058981705fbd1e8913e48a7d855bb8c539e31", -"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "14091ff90896bd8483238cb6f6e1d3aa6a1f015b8888381a2657e27f4e7049ac", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "c84fda80791746224b6cbecd63cd18eba5480750610175f9a9597f1f830e5540", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "8b8b9e3fed883120a8b686679d9b5402a7459404191d7c95f3a69e7e35cde2fb", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "8abd89496db5fae59e133817ea0d488862dab3fea9ba453d7ebb07cc9864dc66", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a0e4f24027f7e1d15d679d5d05f81ee1568cf524676edb47a3419b9adaf840ee", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "e5e81767de7effc008ba7d74f788326ad494a6cd1072c9c23788baa8361b5f73", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "340bc2192e4aae8a476fd760127ce8d5c80973dc19cf8262c0d4c0e597beb81b", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "f695f9fade73878ea864183677b6341942fadff990b38b3e1217cf7a55b46384", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "472ef18cf27f30a51010c87e199ce965abf0542a423f98dcf976948e9b7c81e5", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "ec039075feaa61d2b0293fec85126cac4126aadcb3b828283ea17762155274d3", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "f44b84e6c8292bd5152f4dd1114234e7f36085c773b2fcf684f13473194c473d", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "ee925023c7a95c436d1b38cf63724118e11fad07db9173ef46da81aa03b86f20", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "2caf35460f69405fae2fe6d2a3327d9ba54ff2004b4cd5ca17f0682703bc243a", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "c524a4d61c056626d605535fd013aa087164c726d48abe4c31837865c61a42d6", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "2da6f568cd034e06928f489a7ffb0cab82065778f7f198277e89269a2bac0a05", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "13b846506001ef73ed73c326ca203139d295ec184df32b8b184f4fd4ed657c3b", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "02ee14750dd5a5a5c6ab3e13a638425714f4756d7daf4a7ef048e3da25d18226", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "987b7008a0c4b8ed372860d97620bbdb9635d80ef450e502bbc9c6048dd065bd", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b84360fe850d19d2b60c19c100881084bc84ebef0673c38125f181e12408afa9", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "ec3ee01ca3724842ca2ff8e399da5a8b44cf68aaf7b36539c9e69bcbed939e3e", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "633f1a60133746da1cba24b27b18b450e540a5b0f3b2da7a95b381b44ef3b24e", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8bdbd981511237692aa00c2162220112793c502fb238b08daac254a53fdba012", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "763d31318699a630329640bfac7df8e4603623a6407457fc1048a68352216f2f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "af0b52a7889eef10f27ccb3408d6e27cc205aeff9c62161de3e3a8405bf5bd9f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d4cb7495518b944ffee63a6187c24cbfd672c7776ee4eccdb59581f1de07f3b3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d4cb7495518b944ffee63a6187c24cbfd672c7776ee4eccdb59581f1de07f3b3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "9636753c059452757b05f250d035077eece61f76b795d0a10569825ea4cad3e3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "6d5df034a76818b15d5f0b435d0a0bd5c86d20cd34810e74c3ccea1ee6644960", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "965a86ce1743ddc0f8c658a6c2858533a0201cd139dfc0c8418f43f2ee53fabd", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "bb6bf9a5cdd3920e729969922215932d1a3f51dc1cf0d17bc316521dec29644c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "2ce0d28e7dc583a79167c58c11263fffabccceb142746b5d668fbf6a09978593", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "fca0b612ecb830b6ef4695fe622fa179e1c462a10d6bada5bab7fb418fb6bb2c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "589dfae06091b0abd9c87f5b847410bdc7e6b90e90567a5b4672ad1d4a6c46e6", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "f3b00148333ef8b73b6e5d56cb282d97f55fdf57a30031b13d3ce6f5351b19b2", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "59e25634186b037b10f20ecbb8b7b4bf9c9bc869b6366638461d3fe68f4f8869", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "b0f2ec78155905e236dcdca83474a4928b9ea824038935493be961824474aa8d", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9a0fe11056917abd28282728fb62f540c32034e0153e438e1a193c1046c7ffed", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "c4e3d31df48e2eaed9e25312ba67a46a51ff29ee01c70a126f54701db20ffb28", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "1dd8ea02615423031f594b8222c817fff4f17f1ec3ca5424d06bee3393c8d583", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "0f849bdcf48d54b08085e26252374741ee3cb858f8dfcf5f668f8fdc392a85e3", -"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "eb397098484fc36093f703f72e1c9be1d479378b5bc76f6b5b2b66340383dbec", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "1abff7365d35469656ee0119fe4f04a5fa4464212956b1a761b38125f62df274", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "df4d41c5fcc423e5cd7b8408dd8c3d7d9d2a24b3686e95395ef99cb1448590f8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "4708784b8c2eefb0fb71c9658e42d1fb02b27cc3f7b9fb7c4887b3073ab34420", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "d235e7dc92b77ef78e4c9a7d5d535d21b5078b5652aa2aa9eeee750077e6b53e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "af8f2a77392a53b15c97239971a917c6c91ada113e1504c3b281176768cea163", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "627ad6098c7207d2bb4cf56c0ece4dff023ac33982731c025d50e80356aa7531", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "9d8d763a945296be27375f9401de9488e093133e38f056dd52e7df597edd1560", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "87cdb129b1a9338342233d9f8c84e44b45b5c40bebcad2b008b561aa77fe1c14", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "cbb16f3b3a129e42537d54642b96e77cab0d8b36c27ca62227534ec4a039cf32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "27c172aec816ef8b1df13a11fd7aae2a1fa4b322f42b1f2bb7f812c2f371919c", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_grs.py::test_legacy": "25d9086b77f7525569eeeee9c9fdf62664daf42e416d1369b48569ec5847c4ec", -"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "9e166579ab06c61ff7a1ca2afd0ae5d2332ad276744e40e102ab90b09ef59619", -"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "f517751e70d3821d912111282edcf1b96789bf8f292ceb002671cc17dcf26a28", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "5bffc1fb78de55be30bd2f1db744621b68f3c8f24ddc1654329293e1642f0914", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "7903f0ca09eced401e535a1d7d6f44932957945b4b596868842957c7b1d06c98", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "32a2c7a71a270ce678451d36c538c31c2febebfdb7c1447228ce82d8d6524166", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "6111bdcea0d438da38dda92de278d4f66b2b5bb0b6a949d21bff33e255900df0", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "bb9dcf8a41af2f980673273410d7bc5aa085a1976728d62659fdb46851939d56", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "3177156d1e1cee64388d8e6164cbe881ef192a838c2331edb328bca598a37cac", -"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "304b1c31e7ea6e5c0cbb0bea1eea36f08d9753db8ff4da3b64af9d5553ec4a83", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "d906493591eb326f7abaed3c2e879ca992aa7ed719c46ef5204a359348e2d58d", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "7c62bd05415ff3ee3aebd5df43a0986ea513e080594d73fde2e29e50f9fde196", -"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "0ec1464cf13a3034640616d01d5bf21612e0a0a5aaddeedf1cdda542c1c5adf6", -"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "a95e0fb06fee40c6e019ff3f8853649e529bd2e326bbf1ed16487259405399e0", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "0682e50f81466a446b665c7250b49d5e2e32a4ac08d568b92434fce9f72fae14", -"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "2697e01f2e1e7af98ae9ca22e07b310678881ccdee5d8dfe0d0ca1652788a7a6", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "1a620448b1e4f4994c1a11980a18650dd4840a3eab5a85be9e035e4484ed2e50", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "f165f52bcd0e997ee30a22d9462f297649fec0cdf1387b2947ca7def537bf22c", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "d4199c91e13a996c8e8af6014b781180dec77903dcbd984f5a8bc292bf336b93", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "bb8c81aacf79cfb8ee958a3e7f3e3ed8d733fd590f1d2942aeca23f4a14facf4", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "69bcdc81b27d79d09236f0ad112c428e52593fa46029204aa12621850449ee3d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "23dcbc93a12e77192533492fde55fa10b363f4e5dc73c864b0b8c88631f4a83e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "63a169ca1c10921fb343921d0dc1202978d5c3967ef9906f5fa401bca55aec3f", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ae6db1972c9b584dc8c3c26850f56734ac8ae5caf174cad72fb045ba203c81ca", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "068a2f380dd5eb7f32afcbe81f02a53985892ddc836da955a6de924be40174cc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e947c1625e12ea096f9ea12d16f78e3e76570a36f82b146b0cd25bb3569dbd8d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "328942b6556625ebca4c34a332a2db99f8b30963e97f7024b76cd8f1b6f58763", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "4df502ce4fba039c4658eec3426117a3ed2546e31aaaaf8a7f264e550f056c88", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "36564935b613578102f44a48d19266c0963a83c8065ac0d34a4a82eee0286425", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "7e09a8e2d6e7bcc8d3b7644b6fb61a5b65dc8927b4b676653371f2caf38124cd", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "4dbc62104c35296dcca12ef3f982d691562218ca3509e566ebb6467817559544", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "26f3c3c2d393c526db4cbe08860ed13e5784d36f544a6dfa3fccd9bc7d0052fd", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "d5a0d63eb9d1798d999041ad0ee093ef5e93cda171c78f748970ef4f055ed9b2", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "bd994a9f6d0cf34a2e846b589003d89dd261612b302e4316cd19bdbf1ad17af9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e681f042accf474268f0fe105fc36048fb823c75e493c3a317689c9132a88de6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "0dd8fc39efc277949322af8af3324c83f83e5bfc6b839dad8f05ad436655c903", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "1251ada2d7eb93a74d291f5c5d498f85c09430dc62bdbb3436ee5c54bc195e34", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "9d44ec256b5b03894c81b9e90ffbedc61ec1453494b9c52e8ee81a81c2540c22", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "c3babc6f855bc513d2520e11af0226351b08def8f0202fc8408db5174930a3c4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "a33724c84249482b03f7cab0f058cef340bb2d63d75339480541ffea4e75a018", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "3ccee86364a2c2357da0c65221a2b6efec0b1fb49e6600c481822ced1806f5e0", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "5ab91825c7b3aaf488a9707bf0f5b616a54332cd9b2aecad4e2f9e89df765c74", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b830da59e059112fd60b0eab834153ce81410a0be5e234d45c84b03814bb3151", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "45abccd33a0bb02216458f21d7a03500ed6db0b80dfd45610c4ab91c102bed4d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "765e72dae3ec84edede2614847e433db2351a38a2903742a458d38ff5bdce029", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "af9649ba21a7ce851d4d5f3b188732ff7478cd3ea377fd4679dd99d65a0d1f98", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "417da43350c8073a85ded3e4655ea58ae3dd758260c218ae33252c6f0e664b1b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "17e76cc8e824f771e8dff085a947295b96240131d1cc8e3b6834a3dc5f493cab", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a7132f5cc5eb7a156783edd4ccecea7c076c1ee28f93074ddea4655f531c938b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "a09cf1dc9a5db89be44406eeb5c1d383d014c226c201ebb64d9f56b0ede83d01", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "68d3a185cb16d5a0dbeee4d22cd02cc01be8e6897ed9077327fd82ec3643aee1", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "6bf3b228db444dcef5e20d6f8b110bf6c6da7db6946043c9c288f02878b592ab", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "79db8bb8d37a7b9cb0c858f53d17b381ff2ce5e404229de1b9177ba39ee276f7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "49289f78e2629b47932063653769ef93a0c079f3719842566c7d40b3543c42a5", -"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "4650c0c675d9447afc26efa6e4d3c4104cd88f1265c472e48f8b06578e73e64e", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "d7f44c3c839364e3a4e317187ebd77e5c9bc4a13053b11fa202a5f7b02b8c2cf", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "70b52e613f0282a3820e5d3007456234c9bd393f7687ddcea81ecd3f9d9af9d4", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d94cc28a96bef367fcea57cd871d47120df55953cc6e92044cba3111454e76be", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "208dd4db2f811fcc7bf39284784e6635fd06373281cbb38a02ef5d0e4372b0d9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "0f6be42afd5263571cac87e9c4f0153a7a2d3331a419e148ec0b142ddcffd468", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "f1706849538ac0b3d530c637a0f375ac8e911151410d1c5fc660cf9e6c970334", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "17a2cbc0d38e313552d9d29da3898f64a3f7402415e0e57fa317949499ca8348", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "6dd8584d79193e50f749b8c85632f41543dba1b8b8220f401ddbf85b6c7f375f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "bf36c579a611bea1e545565889a6da75c3cc71315c7def62c5dae383b5101a20", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "bf36c579a611bea1e545565889a6da75c3cc71315c7def62c5dae383b5101a20", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d7a82569510301102d8d3fbd1fe1c817a7ec12f43c4d3257378099947fd52c5d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "270d9d3829ddd08cf8e6b9f953caa78f77846153b4c418b15f546ad19ed67799", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "fcddcabc913a285c4d63645ab960ca057b8a391dd18591b72f28f7209eaf4999", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "fcddcabc913a285c4d63645ab960ca057b8a391dd18591b72f28f7209eaf4999", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "2cbbc22d789a4b9134dcbf9ff3f47edfb64d532902364ad125690f747c9b8080", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "e8dc9dab3ce353e51ea052652de68d484bea7bc0daad251c9a4aa578310c8cf8", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "a03cae7357e1b0a0d39033da41e19cece337a363850bddde8fcd331328743b8d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a03cae7357e1b0a0d39033da41e19cece337a363850bddde8fcd331328743b8d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "181f3023985a725708ed0fe6628ce8ccd60bebcc9d029271cc70fe1057ab6125", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "2253b641037aa13c9f147d47ca7f4c245766034b7998947195071e159f775341", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "051c78b69e9230bd9ed444cc6d629e03d20308093dcb1eab3c1bb131d661e300", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "1f1e553cfae6c8c4aa1d991ec5e6aa72c2ec526b50d8672cec106861d4944067", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "13ed7efd7f1dee255bb3f3162eaa0f1145623783797d4fe67dbbc63185f6e86f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "4f6008a3c77222f52a9ea5a32e6c21c349921e7d69ccdea30df7f2d58841e8a7", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "55756d77cf568f1ac44ad0d9cdd164eb942d66971aec9190b8f274bca1bbdab5", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "e0638a1a32c21bd1872668efcde02ed80dba7b59d2001735a9618728c7a6c200", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "d50ac988d12d9cb0f79257e82edcd24aff0576cc8dbc8477984474e06c38d1f3", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "d50ac988d12d9cb0f79257e82edcd24aff0576cc8dbc8477984474e06c38d1f3", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "fd47bd412c506e43a2cf98cd8fb1cad11fc7d1b63a60c5efffc743ed27cf08b9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "dce797e96ed1ea0f651f844f3eb24d6400081803b181dd33c054008ce4818124", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8a56d13a5b212d143e1b3cf63d31e65c037928fb0ab9108d78eb8cb2d77b7c1f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8a56d13a5b212d143e1b3cf63d31e65c037928fb0ab9108d78eb8cb2d77b7c1f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "4d9cbef0ee856f69ac7e2e5e7e1c25f3654c5543e7d5fe0333f9ee3bd52fe306", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6ebec834552a33c1a2297758c8b7bdd379b60a31efd04ac292ae7bf0b20f5ba6", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "0823269ea769a47c07767c9d031d5e870e5424008b172d776e41a1e2ccd30f7b", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "0823269ea769a47c07767c9d031d5e870e5424008b172d776e41a1e2ccd30f7b", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "53b4cb592c1c86668f285717aadb43f863c4a52dd7789cad626ef09cb7fbd83c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "f0307018a24f41c08ae3e64a7b2f2602f3d0f5d05331addd64e7dcd4e770a073", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "d142609c3463d4dcfd2c7ffafea119c516c38062ebc699e9417b3b1a7cef1ee1", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "e1fa915e9fb1234d69ac60dc4aefc416994d28976fb1d02b09b0106c33a29e95", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "078faa7dde06aa37536ce19baf278d1582f9450c3b03f2d5ea9710d8cfabf5f0", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "41bee50e29c207d9cca04d48740d0a1117c1499e9bc3b4fac9926595f54cba92", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ec6a7f0b0cff32156f9d16cc8f879d92b5632a86c979f5d3c85e516d6b685b1f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "8f6e51370111bdfa1915088400f900030e0349427c0a5cef0f530d1b5c9fe23c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ac28bd7184f7a2fe5a87afcae4aac70273ade8be077069c40c79521110848bab", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "ace4e89ae1c8d469bd284d0844c0f413753535190f059289fa5d502d8bcbb397", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "2564a17d6948a8d654af5f88b0eb626c84b240d612d91ecea3d819b5712c32e9", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "2894e3eb5273c0fdbb7cce37adf37d62e02ccd95e39a25997a282b833a2fdb12", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "918028b8bad66a756e8e2dec08e31c146cbb6121e396f1930351d831515d2894", -"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", -"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "9d0771442ba15121afb2925f943b66431e2f1deb3198ec2d9b4ecd22a9838d40", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "f3677f4ad3bbb02d17220ea56300794e5fcaa18fb464f47825e21706d6b3089f", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx.py::test_information": "f09c1499a249d4e54808dc635a4aabd652e7cc476fa98fcaa1be13159c755e8c", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "ace23f8e3171f790b2df8c563c02e54b58919bdb7ad819bb052d1ad4780f5360", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "631bdef61dd83d22e82afc8159f9e6ad944d4c5313628f51198508a6d6496f2e", -"T3T1_de_bitcoin-test_signtx.py::test_information_replacement": "09ad97e8082a25c62847a5440ad91b9c412eee1c86fff24e89991ea05f971282", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "a55302b142f9d932bcc074fa3cc2b455df3b49e6bb07c5c2cd39f851d5990cf4", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1dd74b6f7cf08a86b2349918fca4325b953809e3352ddc7362b625fa72000ea5", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "39c5d8b94612fd2fbc569e72635a8023bf7a4b5fe73eddb0a0caa94683fe366d", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "1dd74b6f7cf08a86b2349918fca4325b953809e3352ddc7362b625fa72000ea5", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "39c5d8b94612fd2fbc569e72635a8023bf7a4b5fe73eddb0a0caa94683fe366d", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "6acb1bf9d3b931b8d4bef7b65e404861dbd3e3a70086a66be913d57c4d4651fc", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "72c64be9ba555b2dbb2371abc6c5bd0e9cbf4feebb1d01882c83d3420b32daf0", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "373e3ebdf35519ec3c40e2d2b0aac0a7b1a6717b9b35fc5c2ce7329b42f6f1ff", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "4b0797066aeaad803bec2a31698ddab3480fd4186e55fc876702eb16f245f888", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "edfe7f28abc7a5f77c3e51367388f4b97966978c43cd21af7d1b9c7ca26dd4f0", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "4e7c5c6a2c43018b5039278834a2caa7d25628d2ed32e0a72c7b6d2adaa310f8", -"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "569eee587f0e41fb8e329f95d1554c70e50f59b1bd90a15266ec639bcaae3195", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "d349f4eb9d6317817b55aa67a6bcecba0f75e3540fa153f6843fa256baacae98", -"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "b81e63c296385966cda367d8df1a6419efdd74ff424820f52024fbb52d21e396", -"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "1458a32abb85965613a6f1768308e150d6835707f17b899d19bb150847f3793c", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "70a52bf032ce9bbf41d10cc2dd69ccb564a3c76cbe9c95626883f93555b8bc14", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "11b97f78aadf6df521610595c03dd8732086a6d136e22029da9b6ad3d2fd22a5", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "780dac4b5a38f60fa17abb43733721b926636aede73de151e923891a51554b2a", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "edc97fe979da6fab0fcf2c5d0606f19be34e0d4b2f893c534d08f52700e36802", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "6ae3fbd8f5108cc00d5640807d58137d196fc2bbd67950b1db2185f01c562dd7", -"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "cb9b86d4cb68142d2458e19f8f630a79a74b8de810ea1fd00d1285fbb6b88438", -"T3T1_de_bitcoin-test_signtx.py::test_two_two": "a27c09ebf7742aa8327b455ef39347dde07a29a034975a6674a116b373aa71b9", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "0bc9cd4ffd31cd91bca7737c0deeff5fa145d1f11ef6c98ec2e80acb4058d8e7", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "82a2cd32511b5126bbf6ba1952d1f250061e73eef5ec0051472742540298ed4f", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "a5ef51f98967f8a66a0ae75c3cb5584fa214ddc7b50124d97da8321a6e1dc3e3", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b2030fb39b0b4a9ff687db51ecedd13697bdb30ef30e0c25d100cbc6ec1c844b", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "ba336218bbf46771335df9ee97270a58d80ac9fff69d36b705ec038357654689", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "c515f42e7a3807618ea664c716e01af0bcdc4fbd4502a86a51a1bb3a26446b1b", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1ec17b89a43a89419869ce1f3a79239c194f5c75fb81d13fa68ca4d0ad37009b", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "de804f3d559a38b53b05dd2244eeb651300d41a411322a63df5c23682a077e05", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "3bc82949b610f3bd1e9ede5225219be64105a24fc66a3c157176bd49302632b4", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "0206c672d6a00504d682d8e757a8cf290ca836a690df16cbe7e5de6f8cf97076", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "5ff75912502bc1ee090ca62c637b53e1a11a250ed93bbdcb126aba44116f8bf3", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "8ef2d2864373abf5b1a2ccf38462e8844e432c51ee293707a5bc192669ab853d", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ed7241168b9002ad3a69ce6db048c37fc70ac6168811cf54214b37edbb2da2db", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "458de3c8ea18c3cab08e7bd5cfb6bdc42a7f9d6dae5ac64be2f8a09157e24461", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "7f7f359068214216c3469fb76e8986c3f1d93e70b57455c442c403e177357497", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "65fe3c954ca089231dc599e5557d13e752b70bfcd458566711e5d8fdd7d41b68", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "6b19fb915c1fa8d374773caac2909c6ce8817a8d27516cd983ebecaff0b56eaf", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "5ac338249c81f10b2d19965f7a50c4863aa1d79def8f170d6ace9106839a8f1f", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "43d3fde1d8111df7cd3f2f19a99a444bd994fc488268f618084174468d950109", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "d570a20acdef9b5a5c2aaacd02b0ecf81b4d7a3b35c3ea998f5fe074b89598b5", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e2a0389e4edbe48e0bb5d445d35484ca804ef4b48a95ed095c7c181bca574213", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d570a20acdef9b5a5c2aaacd02b0ecf81b4d7a3b35c3ea998f5fe074b89598b5", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e2a0389e4edbe48e0bb5d445d35484ca804ef4b48a95ed095c7c181bca574213", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "051bf0943867b221785de1c7a6638f5681d47b1d8117eaddff407b94c0273e60", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "64a5423955ac886b03d90784cf0f736a020f0fa5d07eb4fcf4f1861742149891", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "1746070960750d3d11f75f5c6002657f52f07fce1184b007868e343885bbc599", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "d27a750f1a1589df35f62057225cb9681c955fd57905fe5e761a9582ecc58fec", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8f09be162718b6551814c8d77623a1684e911148a4b207bdafae9b57e970e424", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "81e2a9f2c3a86a000401dbf4ff30ff06ef147e1aa2f09faa14a9d1257e9905ac", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "6b2ecc6f92ec11bcade86f2d9dce0701d390b3f27bc135a5bc149aae7d68ba88", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d4805952d5c2451847b74cda9a01c3607cf7a22cbe3cd6e338d2cd86a4a13e66", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b7108531ca36304c7c8fb83232ae9a973e9236cb17ca999056992892581b6f9f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "17ac2f66b826eb7d7df4fdfab60ba57f1cc44bd7b2e3be812f93f442ed39834f", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "f488ac4082a4b81b7dfe5922a6312735913a46189dbad9ffdbbe789e5b7050c2", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "8ad87e6ec69ecb182547dcfc30782541732a4dce7b8215569c7dcec9ecf55c72", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "4b5f68913958932c5eee6d765e81037f0f10baf48b07cc7b99f85deea7f9af8c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "4b5f68913958932c5eee6d765e81037f0f10baf48b07cc7b99f85deea7f9af8c", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "bf6d36bf2d054194d579949c6ad99700ed18adca2abfb2bb2839c74930a7fe18", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "f51bf3c972c2ca560c61674dbba86b598aeb46ecae8ee150f4742f06eef23b33", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "fd873258b424f49f8475830de4725343e8bebc357ce6a62db178c7a0fcaf2b40", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "bf6d36bf2d054194d579949c6ad99700ed18adca2abfb2bb2839c74930a7fe18", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "12f4fe24b5071ba8e9d193fb8f4ddf2bb9f44b18894bdd6edb69be53075cdad3", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "31f07dd3cbb663ac68a0c213e4b54f07131366779cfd2e8d90dc3b282fabb620", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "edb7ccb23f2f78904461c36f11e9bd7e7a602e6e07e2bd5a7a1fcadfeedb6562", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "bf5116c30f461483355c4c5ca9e70c284dffe3fb7c9a1cfe0407c945ad569937", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "0f7715a1c271a7311cbc29b705576bdcb5712a4e29d72d29ebf6ecde6e974157", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "61c1ef338867ac7ee172973901cd23fe00cc3ceeb4622aec7eb8a2ec9629ffcd", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "536856de9b23fe8fc4f7272ad0e61adbccb1e4bb0ada4764cd5f12c6c1a41af3", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ba1313c76d0cf209ee0edf98e42ce854517dafa8f0c992a9ca63aa263a91c84a", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "49706bd15e32def385fbe0fc9ad76c5ff80bb341e339b58e771e7b1c91fe799a", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8de78dcc1542f3444cb3b407b323d989aeb7382c843fdeea1ce4712aa15e690d", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b8aea83d6135a2ed8c3a2c9e0987a04022c33d9aaa2c05ee408f247eb755b5bd", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "04b5a1334d414347e42ca16e7ddfe742298797da986192547e8ba9c2f5c7c76d", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "addf23207b7acdc4c2d1d0fa6848baaf6a3f38078c9800cbbd407d9a5dd79099", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "364933b7d01036d2e5e94e8e35f6a6bc0227e2059ab8d9e32bc87d4f9ecd221e", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "ad3a8d46bcbea5c643577ab4aab33f2b8ffa3eaf2dd36c839bf99de1cdafd6d9", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f0e7b2ec1cc08d822b08efaea581438cea32e0788a66ee93e91f217a891184aa", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "df51ff40b7aa167dbfaaed64f2b5040639ea8872d18c8bb808e7dac29bc5bf75", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "b91ebb6da5ddf2ac9a082b4d7b5768cdf21576606eeac3c4f69f7844e96a7e54", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "600b9c584ce6502d56ca6689e869bbe315e4785d31efecd7e630a4353a3707e5", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5174aff232a2d90d344f0f5f628b260faddb5a35821bcfb99af178e0635b4310", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "766d7349fb614d7ae03f59a5d432d2a182911666f14bd7f607bf5b0af93cdf18", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "68c233f18e9f1eafa38f4eddcb74e70291d61a1d81be412a6f14ffd2496b9121", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0c248b63da04850d728a1d4d7d1daa00adf426389165754e335dddd158105e9c", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "9166f459237be52b8d72e0c5c4bb319a603f9afa8910cea657792c50cb356ffe", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a4004fa8c11af343dbbf5dc4560c1c2d5d1307f6845871f5598ee52a303283a4", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "2e104f60bea3f6d67a1de14b251245c38f6bfbd199fd49d751aa80b2254668a0", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "54f1e6038e3ecd1fc13068ebd4f30fcd4aae2ffeb7324f8e46ac745c87aaaeb3", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "794e2a8aee88ec640dc423ed1b7cf1b18041152a22271c59763a46aa16ee3220", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "da7dc947d07c9bcf8201efb4dec7930b747ff6ce93031e4bdc348f8eb8200f59", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "284c3aacbe52c95befc6064748c9bcbd731a1e59e478afd33504ed4f322dc691", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "553f9c06e41e4223ad2e90c8690823aaf779f78d1dab8d975c032db80672a9fc", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "4a2d30ae9562855dc69cbde2dba4935416bf135bbe4eb62e0a0fc407132ef4a9", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "365bfe0cf8afc3b4085ea9c5438b7bd204f1b7af501dfd6d2b16b5c520ebf8d9", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "40eb8c66e1b71287d9e76a74a030e8345f2ba4dc13351a60382e99c7a8434c90", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "de91f4b6f27e1486859a179290a57b7687a67f99aebaf1ed22aeac96e4c4fb52", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "c57ea82f27ae92dc8dc51281759b8ddb9ecebead39f1b6293201c680c5fd147d", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "7793afafca42a92e6bcb5f17b77bb19a85a77810b86b31bd3f3bb41e57b10d41", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "616ec38b47aa3b8b454636466238b3b33dae977208cae9db7b6ac1479eb0cff1", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f886d55843c45fd5773e050b1f2234438f780db396c9e8259b4291b66b019a5a", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d4e2bacfda8855d67aa7334bbe59d7ba5174731bb765397f8eb01b4189208e6d", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "1e3597dbd248adfbbec4cba3ad1abf05953e175b254e555b8695ccd48dffab8f", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d819b0af50daef38f14f8a60f762340b5f06befe6835d652fe7241ac0a44fee0", -"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "92d56b3396d2c9376b80b2ed14e367cb5596a4a34c78ac14d8faf8b3063a5110", -"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5d2f90e5fbd79dfa1156f0b238f34d0176818477b0559e739ff179c7ff8fe61e", -"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "09a4d848d72734193a9e86077565c40b487656e1d9761a0371b13dae4186c4f2", -"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "f74f552c0d8dc532164d53e5f46b9bf433dc20295b01e0e51dfeef0c4b64e4bf", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "27c82480a7e7433ab0c62a5bf389d9f1ddd2fc6732eac4023bdb70eac1aaa149", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "487b92075c46706e819c43099a71cfbab5fc5ceb2396d9dad66f52ad3daaa3b7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "04f740825de357a4f97050ab9ef44c81229dd6c1fb027d7fdb67e306dd7e1db3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3212ff4b5c3de59947b15385bc032d6c1a1e1bb9cc8bb6117e996eed6cead3db", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c9f62229355bf94cb3999f4fa4342fa4b678fe43e997bcc09fd948e356ad0bba", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5664471b029573c7fd130c240322e56975f2905623cd113e36f8292847d6ad44", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2aa3cbe25f1aa4076deb4f07483cb1f85e67222e5002592e4b21f40155ede0e3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "724c1badf06df05a8451194b4d7978048601061bf2bf831962e533e3dce77699", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "43a2897a5b1a31ff920860a17ddba6ddfd6f7d23f3462473f791287808e0baac", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "3c4e179edb066fb98f63d19508c08dd06ab945919a8a910afb0f89cdbe8bd71d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c6258d72aa0be675c10184fd639cc21bae8dcff75c402e62743fc8c69e676e6f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "74fde7dc8850138490b53887bbde7736d59ba373d379f32378f16c0d7c9e4bff", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "05417961b37fca7dbc5b005c1334190ef8472fe813cddb13eeee9512fedb9b42", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "1c6ef270195f30290c838eb2ae3423228afd4e73311179f00a16c14438753fa7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "dd571315f677c8b11b7e51cdb78f6e1e995060b7ec429eb062fa8e021bd84219", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fe006686506105b822f5545568aaf409c4d40bad5f51e6f447dc972d1742e48b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3c96d6f404ad665ee92d36a05c85081e41fe3f9020e025af53ad87c2436c1a2e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "5f98538cc7b5775df09ea9ac6f97c691b018ced70e61288f9500661bba9a3b85", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "58c4023260bca9013376d384c378ace37237bc254cdadb37138f9fcb4047b757", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f301227ef60f2df533256165b86bf7dfea5ba1cb14fcdaa4ebe29b11dc8828d1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b41a0545320c256805c920fb28e65f2de98c839553c5c29bc4089a6c71dafdb6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c55eb0c21f8756570deae1f8e35b6cc8ea70de3cdd526c2bb4d98daa514cc2d9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "5f663bc8066b2eaf3cd3a29384527c4dc758b5e5ecda341bf3201917a7e67d9a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "23f6b2c4ef37d9d6f94a3a99ba16f94db5e6c8b2cee29fee8887b48df10c7212", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "db68525ba8c28af57e0ef7523c81ddf2f4816272eb3ffeae4ad86aee16d691cd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "5fa7843c0b87fbd87cac4543977aae1093b7af34b3dd86d41ab939ffb48465dd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "aeae05324bd7838673f5a8ffe93fbc2e4e251d6798ffad6c7ae88138d262a817", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "f3097adc1b1db4e70bbdd5e428a64a2f7b993d6ad037c638a7221d54d0f654f3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "9c5f825b6d6024172b4b6fa6b15653ad25aa6088c5fda4d1ceebf3d69c348324", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "c12b781bb1d6f5681edb054bbb182d30212dac5ca5d567c8abf657550768d6e1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "e2c363508f1f3b6fd8176f6ab9ff1fc23b82add0e8f78e859f3773e7b95ebf86", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "7de4740c2a4a1ead791f93848d009bb026592e312a6fedb730a4398ca08042e1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "638b5d1194d5779494fbd0adea4775a5efe154cd07af45968f33b32529e8713e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "f7b3d9b779e64c6f921027a1c7d7f42eadf7d533df635bca90469c3d615ee2aa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b47d5af9cb177b3818d39cedb86ec1081619cbba4913c98d2bbca525a57919a6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0ec25476e2524f7968431db3c2a41bfc6517bf91bca206504c7f89537accb11d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "6b2a370483373c63357e9d822e9d5ac5f38401d787c9ee65235a6beae0f77336", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "2d9b2630b05918d1e29495a428458bdffe3ab7372ca6d19d54afe38f5af8761e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "1acd718dafa13fd9b63af33902f608f6d8775486398c11010c1cc39964374d2e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "16e650c8afd0a2cd8c585ea0cb9f71507644afe9482eb0a2824620d7b2f1a16c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "9c76944b275d91575c97c0af81b58a29b3446d6dee09edc262e87328ce444455", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "ec12bdbd3c65166d9f8b3a139bcef8bcaff2317f5aae6f60bc978e21d6d2676a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "6e89eb8779b125ab44b5f778e0d9f245dd19015a920a77e000a578ebda852074", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "100b5460b84a7be4424dbe5cb074129e415859c9b6a70258d5b22aa6033a009e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "615d27dbc3323a703c529e7f9c957a1b0c3fe3993e247ea4329871c272dd70ae", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "3048cef3f366259a3025a694947ebe3ba6819d5f4273f537e74a9e1a00e19f18", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "a900dbbd746931beb5f41df22bff8fa8954cde47deae10f612e33e488f81809a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "81f47b743e13122d6affa5903c2d42b849aa4942ebe1e380d1c961a1adc60d57", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5b53286ebfcc985c0cfb1faa81f31939b3df97ab66bd4b9a4a09f18c365102cd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "a028f97bcfdaa7c76fb969deed1951a91d38a982897a68c8f4db144eb8b8fd1c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b0a8662d0f15c153831da93e687093cf5f8977d64df2d9acdf8770068acd605b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "3f2b6decf108ed09809da8486e234c47db70bf900612e33f672a1061672175d7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5e27ab4c27fe5efa16f12287e04af4b0850caf51c8ac1583ddd2fef714be8f80", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "447e585b393711ab2e3a485826d8f34babb6c3ac6acd6a7ee1bae25e0957a827", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "77ff04b54d2c9df6eb20f4f66c6c3f72fe88b302775f8b1c3bf880605cb76394", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "7fd38e8a4e0753f6c4dcc57ebb92e51c50694cb8d0997643d86e745bcd59e912", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "ca9f248086b7c711f6f857b68ec6a692a9301573b49bcfad15cfac2067db3c8f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "f623ff9e814a06bd7cc9ffbff74c2743a493e8303736ba9d764d0311deb6ea81", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "e4fe24cf79dd73268af4df316c3e49b5b83d09a5e19505808d5ebaff16611773", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "6033e4e4bc6291a0b80a8c9ecbd1cb5ac9fecd0c13f4b445d20f249a59b5de7e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "5461d04bf279216333e8869429024e2b34400ad6da34fcb6591b42ff0c2b6e07", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e32a671a692e698072c42ad1c224f0e1bfa83cefc327316047dc77176f9e89de", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "5539b857c1cf4ed54f644130a67bc48aa971eecea60a252bb7386df773c46dd6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "0ade015e5d3959c167886f85b80c5c118524d420bb0ac5dff73f4a79d713b2bb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "80816d6bc49abe49c04bc0ede8ca0adb9b3313cebb0c4315604378b9ca369ba5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e588e8bc58b21d5375b861dfe9aa980fbdf6f2642ea349596671527648508447", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "23d032d31e722df61c2ea382d9ff51a43eb10760ae70b8ab75fa617d4fba7e81", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "75f685f4ef68817c26eca2ed050aff254277a14aaf16b8628c5f1f31bfa41191", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "97ad8816b20e0d11a71060de9cd55c29737631482bd7d52272d9dfbad69a5385", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "8c76eed83bef7842d7166259bd7e14a59d76b35f4d74c7c02803ec1b79ceabde", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "8564973a00336e2680a7999f5731985a8c541f1a15ea4d06deeb1e5c79314c1d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "3872bf212c53e7920e7d3cdf2b52ec4f1fca63005cb9ea8521c05c96684b7667", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0e9e23123b5cf3da226c70869d06ae2e081af1655800e4b423aa66dac2837e87", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4a95b5f13ab86c5292184f37512abd6231a88823abe44163a8a4817dfc96aa1b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "aa1ebe4b7f28d7c72f8247f653deff58c38c0ad6d82294c0848f2d808223ddf7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "0ff3704151ad2f734371d82093a516f1d01fbc63750f63af3cacfb93202facb4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "0a51776d0f6f72a54ff35dc5a06ea249c2c207df913ad922f5542926e1590368", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "10545518098df14c3ed09f3cc44a09f2e793432a7ba4e0814b30abcad809a1c6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "45c2c0901f6a8645b182185eac93f6eaebce9c40ba99fc34d2cf168d902f5338", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "6f4318ac34e51118ecbbbe2c9e8fdb0ce4864e547e32feabd6461e7c0b5e42a0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "b088eed244c3e4a3112402680d32ac52b72456cc77bfbac8510fe1832b8ecb7b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "ef09060f7dcd95fd1a8d268c48155a596947020f74f0d398b177a5f669876864", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ca310e5ed416d556c7ac42af9e69a0b39de8f1e5b96e38d859690e046930d6fa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "4c1d8b980ea19d06b006eed397cfb28c2ddb3c802c06d943179e0daba546fca6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "af104df0a13a886ff7665cc42c4eae6e788bc5682ab94bcccf82c56f1ccdef38", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "084f2d19be0a6d9f0ef2ebe359f4de3dd7a36c7a4018253176c3a2d15e3033f9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "dccd30be0d9abacf69c4db8a285342d1447cc8cc2598cd745fcbb892e72f1fd7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "5cf569b291f623edf30040bc2c5ab16d23231069361295259c69c46bf652d5c8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a9ec7e7e22b29bdbc924169151f7490dc4ea55b216c2ead4051b4d84774af028", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "256b09f809f386ebda952d069ceb9c420a62cb1f0ce259312c89f3587dda0f0a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "fe2574bcb7c966743a11869924300b11619ab86bb6f44a9863ebd271262dcc3f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "0cd0e45d236f72f86b1927578f6f821f572e7a85509d609e8383e0aa56dc5797", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5e74e22000b7f6705c527d11c453ce8a3e5a71f4c0a1112b0c2bc26bc90c9f8f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "3657ea96e038bd4e8e4ddb1970a41315e1f22287f8e07de826218eb9b9bb11cc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "f93fe86cb9b6df7cd0ab30ca57a3ad908b009b538839586367a6c7f45151e550", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b992b4c70bf033fc7899d04bd73e9a30fea18248b51330187d66d6add3120280", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "54012817e9642406eb5b27f851c457ede3290f84002c13443872a62bd96efbe9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "5aa167837a3a6cdf73a123acc4f01fa0a147af2e5fde52fab8d8fd7bde0b99cb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f1af6844bda52a375be1387e20ffda71f1bb48844ce8791bc536a9dd32da9900", -"T3T1_de_cardano-test_derivations.py::test_bad_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1849554e681ea50a97e8ea463ff459def883b382f76c45e178da2b26dd6d1a5e", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "40a2f8e791be6655cf1a654467030eebb716b8440d073db0bfa7d19d99e8826c", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "6dc263dfc3a62e3cddbed96e9146fd58abc18501976fb5ea08c14922f404bc9c", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "f8c24423f947c9af81a3c38f8701180238a5a32207a5859618e15419c65b612f", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7d944e2825542711414715d3e1b33fadf46bd854543655f93da221df2c79ed49", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "47ef83deab5c88855ba8924361adcd8e520b2ea0f0c0d2232db24f55503c2755", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "aac2403703abf0b76bfe300f7a226c1c47228c8d1e3213d67ccb0e4635d88d76", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8455ff435536e90208da53afd1450dedd7e569de78271afd21fe7b49f6112820", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "0e6f7d35676bd9156ce4aebe80d9675b012613e9b5dac639ae100e84bfdb7078", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "088e48706b5dded9258b41ed05da4820ac87740de734b57dd698b975d577bcf2", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "73f3e0ce053a75d8e3b908660ba999d411f56ffe391eadbd3d623d47aca54bb0", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cc6ce7065cc13995795876e91dee61100a3d95ad58832762064b659fe75753ce", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "43620c115f5f889f96729b6c6eb4d2016519a8cabc7dcbac48ccde3a60275949", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "b054a957f52dd3269b3120581e586263b570b0430f853ababec0e1aaef9993f1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0606502a11893dc5b8298459b3e4922da1814beb8c0f14a906ac2b9df582a108", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "843aa587aff1c5c148e48f8d1b85d0b9dbd7704d58bebe599ef234654b205353", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f25fc78c79fa20d6b7f35156041c548252fdbe59ab535527bd99e3ced14d492d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "64258d1fa2acc749eea0362a084c57fe13192ade175453c7b3e48528d4006be8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e9c532cdf3f8076669544042b53fb50e764244a3d2dfd097e37196021ff8cb55", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "f35fbab88a59f37766fbedc1191496759adbdad7e215209123b24e440b499944", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1feceefd6de52fc86a4bad2b4ebee669defc38e2c6e05c88bcb7f62de98b69d4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "f6006832676ddb3373e340b2c6c645aca97a72c0ffb6bdbd182b527b9f2ff7ff", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "865412a2a8974722d9e01cbd177aeca8daeabb6fc22026681340ad2b7b5e2535", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "bb3fd8fd7e003e6e52cbc2b1c1d16a107c9d71bba90992cdbdb68e9a296bd79c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "4bf60e2a8281204428ca35f268a2a954670bff7fb0fc421f3d5645328a545f76", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "4bf60e2a8281204428ca35f268a2a954670bff7fb0fc421f3d5645328a545f76", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2c012d29c4db42bdc8a1444fd4e38e45bb99439b4e1f0cfc128276a4900eeaef", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "db8258f552a8c64f5f5ce19658c35dda5661333197a15c57f614768b9d75fc82", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "56f99ca0d6e05a573d9c6265d93adb7fb44b557201dbca6c92c209e999838ca8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "36a0308982a16dee509fe2b74151df4a055ed373b3b8773e88509a1f57077186", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "e242e5370ceafa7c0661aed2f52224cf698254abf0a25a67afad522bdc5e527c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "593a39f7bef9f70f15c81f1e2f71b915f5f01355f8ee61880acf1d8877b7afc9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "eebb09b55cb0678fb02910c0070525dd55d0d509b2450e852d324329f3bf5335", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "2a1790567bb39cfb005824a0c07298f174d04e0caadd01dd8002e08fccd8ca6e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a410cccf889fd7ef07ee8a696342b2bd9d2795b9ce13ff9ff8db31c8fb891d66", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "e242e5370ceafa7c0661aed2f52224cf698254abf0a25a67afad522bdc5e527c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "593a39f7bef9f70f15c81f1e2f71b915f5f01355f8ee61880acf1d8877b7afc9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "417ad01a00a1fba45f4ae59b96c1e5d063208d6fd0bbae0cf233f4f82d343566", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "82a7dd3a5593b4f59b6b9f62c3e3c58e18104a535378d40297eafbd3c7dbdacc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d4b1289c74481dcd80a19e021fc19bc1062cf0b4e1d0e535af5a588ae5538cc6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "62e9285da00900b18bd24a7758d014a9546847423839114aebee34706f8f7c8e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "5d6ea172721675c8de6c76915c9798a6cb434d2cb830b1581e2949cce8852375", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "8522dba76be7a999f1516f4ac257dd49c3a567782cd8be238a8472683a8d6b80", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "36a3f22f7ad5c77eaf248b2c3a853bc7cdaa7e515fb2f5229bcf35ba1dace7d2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f0d67a6a4bb9d3ac35d9fe473e0684b835434426ec92d7a2bcf1fc48d197705a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "e2ebed2c337a7fe0aab1c350510b172d635314fd0bbec52e7c168ae38d9431c0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "a4f4d0581f7ac773ea3a3d9e31760d3977d314f7a9921344be1d44c79a8c299b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "12c3e6bafb34b2480169a243082496b65fdfc5c1e44f32cb3dcf65aa05152e3f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "05846b84e694732a18247c47f4b039e2cbda01752d0cce06cb91ef0f199412f1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a9f2cb26fa79b92849df8707a9bb2503c835bf48bb5a8f3cd5ba947ed0014f30", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab47e2f22a59b5587507c4ad7934fa701dd1f60b429b3a9ee55a5d2daaecbfc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "780cdf960ce08061c9e224b598ad0d6228d00dfcc4d814bcf1eb25ed95aa557f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "04ceb103ea2e5b4936a6c93e20daf155da026d823fa0dc14789943f5b5dca824", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "aba5014dd11fda262154fab699a7bd06fa211763ba9d4f5c11f7c37c76bc70b4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "d3fc7103c30f537615b9afa3ef3c05c8dd8b83066cf779048ed29744af598d36", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7fd364614a400ab839e69155ee1d9992737c929f2ee10555c27558138f38d016", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "f534f5c6d035a82344b31b6b1decb32b99da6aa2292a1e6302deea28456dbdc0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e9c3f3f501bdae1d308d74f7bbd82944182fa0ed8187b8d7069e54919ce057a4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "5d09570aafb60a57919bfef29a85ba58915046ec1d080de0f56fd50d0e6d41bc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "618625453aba2154f7ea1bd661be18a1c68bf5901e98e7bebe30cd4fca58ced2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "b4de8680ae69d8a53b25005c84fca31d0a306e48150940e641f591c5c5e3daaa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "27e020e46635d1464f48449df085a038f2d329421c6c8e8ede5db7e6e3a9db86", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "97b55d91993c93437d047af0e2ca33e8b8e52c6fb98d7c79d7c69325044ffcc6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6a4a0020fc453b97c7d999268f040b15780157ff0436771bfb20a366af10e64f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "c0bb94c52dc43301d6fa8fff845a1f22ba15a52b93ddd9bd8aedf2ada9888ac7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "3ff3d24cf9fac2e85734ddf1464fe302b431fefdf356bd75ffd57b3602af0c3d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "27963fce76b9585163e3c2be4b350d3c5147da9f1f727d04fb5a48376b28f99c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "6b165bf3bbc3775286c21047e3b649571168a7c7c902115cee024c436be2fbf1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "359b51f73a256f9e5b3ff6edc46bc9836356e2d9b51fca2520cdb44501b81da2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "31ef04e8cc1654ba1d4c5a27fabbab86209b7daf0f13cb733342569dffedb33c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a6e2b2558438fbbeead3bbf0b482a30b6ff9d551aa9227d0b291746909f19da9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c217b799c252aa8d772cd4b5bfa820bf26c45b4a3b9bea3c0f41e8542abfc9d3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6c29a9e0b33f14d8549d9635e38c8ff13b1cf4bae7bd36319d28bf0f28790954", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "12e4199c992ed2a334403814367b872be55986c98b5a9a94187376f3b9530e3c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "62bb28cf7b173cd652fc4bbedcfeb8172e2735294d088e1841ae7bf9973eeda4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e945588bcc167e340f87e5752b24c7c38af390135c0c640529fcd8c7d88b0860", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "fc862a70389bb4dc49628f34a5633327b47d2e8206c0c0a5ba506fe21606c6d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6a3dedfefa16c32ce6a1fe470d271645ba08e4e4ad8552857095fcfa5183283b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "1592544e84850950f1fe7ae4b073c682c63130d35ad6ed5bb879b4e972407ab3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d3c8b242994ca11848eec3ed77daaacb81fa0ee4853f382565ed9a751f16fa91", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ecfa2df89098af4a37a9b5b2fca2f309e168955b580101c8c4e8a349092faa98", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "13e32dae83494fc5e3bd41ea07600baf418bf6153f06a50c97702ef5623f31d1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "066507d14abd8f7b6cbffab1b6c3d0c60716887e47b4a1b2115b9a26c44ed08b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9f985619d4e544dc52b4af43a52fcc259b01235f44ddb1882731b993284a64b5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b6fe22230ff6ee382ddbe8aeb2489c566db47b18082b46377f33e7d0aeaa8512", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "074e4b5735bdc9740dc6df06e74a45231a89ad76f5bd6f365b302c8b6109a409", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "63b341a969ee8579b716adc52b15c31c7fb200790a080eb6d8ed304a688ab417", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a566cb44245067a3f8ac87803372c8c8126c7ec8dfd8d945c94918cc9184a9f0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "7a89ba6ffc292d0166bddd8a8befc9a675d2f2cbba057626557d64faaba0e22c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0dd147f2f280c224527ad52882b8d6c2f44382b81af417cf02ecff758d3b7713", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "6f974fc9c853074bfe1e7db7eb979eba884cbc857e66a45dc5c74216081ddccf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "01ed44300e8a4b4d9f28537cf6c69c113b469389dad486e6a78e14dfc6c34f82", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "10baf4ac0869f9989a308eac8ba654dfede21542c93a8e17ff51faaa3b3fd19f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "a936cf9d036d80143b52c05cfe88d24f267a3be0f8fc9220b7f3ce37397930f3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "7cf168d2a7d6ea16baad7f8b4b210f8aeb4b37e4f2462ead5eb4775434555631", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8343e398bcf2a5db99fd1c425d8482213468137e485980dbb367a5dc1cb0980c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "b054a957f52dd3269b3120581e586263b570b0430f853ababec0e1aaef9993f1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "f35fbab88a59f37766fbedc1191496759adbdad7e215209123b24e440b499944", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "6cb35194eda9a3215d741783a5274e896e954231742886d2a37281323d23a8c0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "9411558671f75483c6c52e59a0f7722adb1a9b803502057675971ad88ccd23f8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "b6a5c56df3e7682ad7aa171d749797578a1ede0ec721fa121f521c51d71a6142", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "a55212b23c7bcecea60d5f8eb93930fa026d1e32c6e2a9dc1f668961f7e8543c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "3f5e79b4d60361bfdd800df2252f0cdb78ef5dc6dc85142340b38dbb1e4c2004", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "39e7332bdd2ed8a75837a5f0a74758a7f0dedd9b607bdc3d8c7118a946c18522", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "a17dddade9d9ad05921879c628186d61ee250976dc9ebaa7eea67850d0b00478", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "ecb44810a6ac50ffddbdb9a9d289b8ad9994258f4ed91239ce76744dacdb14b4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "3f5e79b4d60361bfdd800df2252f0cdb78ef5dc6dc85142340b38dbb1e4c2004", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "eb5e56f443bff116658df158732b11a429aa447c92bfc926857cfc01d0fb54db", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "55d077dc754613258d8b4910d78795b348f36c1bb46c7c003e76b8354c6d5b5e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "06e18c96b99157a50afd5cb17ea41e5ed2f32c8ccf9ea29d978d2c309827ea06", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "0683ab79507399b3706f0209a8b4ed4280a5b83f9fcec3716802304883bbfe5e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "f618926694f9e6e6aa32dd843cc14abac26ae8acc2b3343d3f339234df4a86c5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "571199ee2776a23496f951f674fbe258accd9ded59b8b8d3acc2312edc346652", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "677ee15dec8df0b5bca641d1885b0b45d169d4161dfbbbc0f0ed6a5d6e945e2b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "9a839dff8d5d60739ec3f765e021ae326b0ce68938ac3a3e814bd5f15e598882", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "6085ba93e0dfdd3e654cda072ecb3590ad5f4d164ca49d2cd07a8d34091c9c3e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a48a99c801f0ded61ea85c781bc01948c4ae74275d2bf142b82fa54a574239bc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "b74d312a39ac2cd3f38f0ca20f62fb715d593fff9a978951f1a30b4612fcc5f5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d4090685f50e7596564431be91da137badd3cfccc1a23d3519952b22b3b5893b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ffe9e10dbbc4732460ac100456b3e847efc91f8932b46d5144a29ba2144490d8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "38336241eef094a00cf18ca59798cf95c7aaa0a5364cdaf7daa9a5d9f9fdfdf0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "2f7d2708cb637ee05092b70a2760843934fb3d559859fac5b01da0138c7a8722", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "8ade078974aba76f722a3b9b2a5a320c053f434202114bfb5a31cd1fecef496f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "55dc33fecb3e805ff107e19daeb1976ad01ba0158f56134a9a00ffeb8afbcab9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3126f4d677eae53a5fb7f4abf53b6d63334e85d7b1310abac5dd2e3d4fb5ec8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c4eadd3db005b1637111c82ec982580e0f24da9293a82067dce02eb4a821b646", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "372e227f444ac5d1e270b909c29f7d507241efb3d3456069441bdbf8dfed25ad", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "ece2a0d96a3b3f0cbadf4a9192e404956b2057f558697bd5aa8a450c52a393d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "4d092248a9beca78054d3a0bcbb73dd06cbfaa15092bb3681bc9cc5c112df14a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "f8400f5d8297a4fd985c46f04092db103ab3704a4c1b256c5923183dc5981c44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c4c26e0d7f174d7632e0a114e350a213155947f2ebfe6949d8082266bc2be5c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "ae726c09b8f293fd723944642919af7e2908e6651f453157538ba23b17667def", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "82c31ded543a593fc91a27f85dd232a15a032bbb178a22702171e8e805897227", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "8d894a2beb111300bf77cbac8c605fc081bd1477f89e38c9877a019e2b07d7d1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "4879ba95cefc82f2be2a802c165f604c65c8ddda831d1013a25ef93cf4fdffb2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "7793102d055a49f7da67a453f7e834ec4a725deb59d91dd5fa43d5404facb8e5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "9d4e2a30080b1ce7f44a7cdf2eb38b109ff9a8a2b4299e70b39ba535dd184f2a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "8992e483e803c3ca7dbd2a082b4c5be8b1ecb22ff69e5c9166c73acd5e3f7f86", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "abf3a2da2bba8d1a97503757eec6614dc5182318850cbd7f65cc0f8e39d89701", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "c145106fa59bcb619ab00309ffd08c57ba98cbabf837cfdc7eda1ae742835cd7", -"T3T1_de_ethereum-test_definitions.py::test_builtin": "b70da6c9adb218cbc3849097089ec458dd631b69885f83e28b5f02dc7b684866", -"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "75228e5605a3b56c1bb29451df86c64a0b174ef0d427cac4c6313078390068d5", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "0b2e1e4474fcfdc2050b08fa4c61b3c04f72889172c0bba068a3cde4cf74d194", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "2e6aab77dc8787158ce0f01b596ae6ff2dcf4fa5c713ffa47bdc55646eb15bd1", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "78c25821c2f1abf04e077eb9ac540b09993be0bce6cefd1f9ed82890ceff8afe", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "704e1c6f5f9384a2d26e11542b8753ad2d3d58a9071045d8d39c23ee27953576", -"T3T1_de_ethereum-test_definitions.py::test_external_token": "796ca5f04524fd4d5454c66f9e34a2d8bb681197adb8b064ef770ad2f057247f", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "22ffbc18cd0d9dbe960a51fbb816b316214ba2eebc777552601246e99410b296", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "e2fbe9d289f282bbfb9064e16a74d24a066ece5d2b38f59c29cd69a9d2753537", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "270b3b6c3bc270e58a991d36c4941fabd39a2257327028ce15c1f57eb3625a35", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "2a2b1ff95d45dfbb397d11797ebf8dcf3bb764301364def080486d89aec9af91", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "2ceec1d13815a526b5446bd2e79399ab16e070c769f057fe9eb3effe1f3aaaee", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "b6ee5d558f1985c669757defc2a42d94585b5428e77c8c0cfbfb85355a89dbd9", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "967c39a299add66f04156b8bba22fca4d72a16f26f5d011e6a45f1465b021749", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1d289c36afd90ae1a854e50e23ef453acbcf4a97936438c1d40133924c5c5c68", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5f9489c333c93d13bd9a4662f6a4f7809b1e8609c36ea0c1382243a8a49b75ee", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "eea9529c37fc7e2b9abd05808db327c80cd9e862e6ebdf106d6ed332580af548", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "7150d5c9ca6e31dde5a4d819d64b829df7653a3c1e0ac3851161f96a5cd99133", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "a1d585458df468b121170e032b17b788c1868bb4bc109377f774d334cad0b11d", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f12e347692938ba3fc502f60ef8a005b7cd38268c65882bf31e19aab85a3e4c5", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6c8430783a80a23fba98f612c4fd56da48317429852ce9023e638c9ba95f8cce", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a19d857924a8eb721abd82840f602cd413e5418b738af8fe666b06deae33b0ad", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0b13821bad8ecb5943c1d908a213ef7c9d0dca6c0a09218e5da198fb2e3216f7", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "c3f7c7eac6fbf0585c141cc078e52e86053e330e77b9492387a6e4b8c27ee607", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "f1fb9a57c70dcad8c473c0a4eb7c26fa5d15d02232d61772c1091550207767fa", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "4641cad50324e384bf386e49781a8f8f5ae83c3a33a4277f3aa8301a59951c4a", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "47e1618eae153f4c579f2dd95183c093f13e75de0a05c171f80a46a7883bb94c", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "a9ff8e72bd15bced865eeddb7273dddeb3a06a0da3ac4d76083bc60e2a92e6de", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e2c79b3e635d91c55674f6436e9fcfe5200bc3a98178cfc712208921b8a4b6e3", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "bf91db53e2249449f6d514f87d9e291a10c334746c6f665bdbd8dd826aeb6857", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "a6a9ae58b7befff05954cf9f6bcd8545725a24e0cf9553bd7160eed32e596145", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "c9c6ea2fb86dc4c7fb9af760b7cd383d957cc796a293429c3c0ac9c22aa3be7b", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "940043bb4c047ee9dbae0203b97e670719cc6f7c41ddefb7f91e2112a2dff714", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3d5ef1a8b7ae90baf455a8f2b9e270d7a17a4bc83748dd1e9bdbbbde550ef5b7", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "51e34fcac949691457f7dd4683148ad659a9aa139284608566662106ec2f48dc", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "a614d177aa349bf12c556c9f67f898e1559a324fc219032665ce9d48f78ab51c", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "aaa4f7466ff4e738621f293b374ab7577c4e986391c2c4ee4a58591fff79f467", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "207f82b3c82767e281ccf2fac960117c966aeb2f8b43abe8bba40fc14ae035e4", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "69aa9de902d1dbac6633569a5d89172dba23251f8b293c851b08f72221fa01aa", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "947d98a775facea7c8e517b4815c452dae26ce4bd198492748df9deaf719ee94", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ea0900bcaec77f18592430866c61aa6647fef3c159e67ae11e04072efbd620b4", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "aa023fd6e81e15eff67f6e41961e1244be7883e6e01ee5bc6a56559fbc55c036", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "3332573034ba67a63fc862b05ee40a02f369a1ff86546c0e024dbc1571bea289", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "da6606aec5de5f40430f63c15ff51aa904edb61e17573f06a255ec714416167d", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2d489b177921b24667447777fb301f329c74776afd00ab46c7e3decbec17696f", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "d5df47caf165ff4f0a38fe98294939f304e6a44bbd981b29e4e568f492dd37aa", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "6284796d7299e6c7af012fb2cd81593b5649387e806a8026d52e94a17532fe31", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "22940fe01d52e95906f57298f36d8486fbb6bd9f9306db58051492654c135433", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "88e32223ecf12b1822bd0dc76c0d137eee41ccc9a095b1020e4f684ed81eabda", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "aa023fd6e81e15eff67f6e41961e1244be7883e6e01ee5bc6a56559fbc55c036", -"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "5e2a8aa0da1a90817e75c04c915785a9c567b86059fad80c1f06fd146af81f54", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "3fd4d1a6ad31de4e513458d651a5e017a852a0ff73d21eae8b83dbfa3bef7374", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9b24333cad04e517540786994a66d51929e3c892fd2ccc6b48eef1ae5b8306a9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "79cb8e765a790958c17cf5c50e7eabb043946f3cb5eda7bfe7d4295f811b856d", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9b24333cad04e517540786994a66d51929e3c892fd2ccc6b48eef1ae5b8306a9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "ac03ac36e181810e3f88bbe9a6417ed201de7d8188841f8a686540701edff076", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "ac03ac36e181810e3f88bbe9a6417ed201de7d8188841f8a686540701edff076", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "bf46a2d0c525fae4e7c3a37c31b7a7ced8c22524ecf20ee3f56ae8c0a6d7c651", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "25a385c1909af11b02baf44864233922070f1b659023393a2f74a9b24c10085a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1b7b5dd0f41842f283a08f7beb1b4c13ca36c58971393e57a2ffa9a6e9dc1b61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "bd7e1f86ef995eb89771ac388ed2e542a95503242b9bf2ff567c36f943dae427", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "c4d595412014d5c61a91a21947af6fb43a5a7df6a172bba681b6f22d3f37757a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "bda33c4fa45bdf36778cd153b64a564a0f807561d371674a5e46cc76fdc165b6", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "2da99e0aba69bcfc12a9ce3b3dafe96bdcf2cd2f5ba7394a8d7c9c3caf97132c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ccaaa0ba67fafbc5fff1db2775156efb5f891e162a1ac981d2083d5e5593e544", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a43459ae1bf4b017dbe90956725a0319a6f9115fce6127085c45a8ed803f302e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ccaaa0ba67fafbc5fff1db2775156efb5f891e162a1ac981d2083d5e5593e544", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "c505b2e84a72f486093491b637047df4a8a5ee42aa3d826e47c9f9245d80a95c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "c505b2e84a72f486093491b637047df4a8a5ee42aa3d826e47c9f9245d80a95c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "cebc4d3abfede9b91cd438941570e7f8f3ef00a4f1ad13ac8b59189a69297a69", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "e4e432aa05002758a152d2c80190814a87aadc054d8e9d28061c3fd976c1207c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "a3748bcb168eb5d18e8055aa79fccff7b529b05591e9c8b4ab8a8e629ca30028", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "bd7e1f86ef995eb89771ac388ed2e542a95503242b9bf2ff567c36f943dae427", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b28490986eb38490a2a56b869f9005ffa4daa4010b1feab754e99a38a739052d", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "afa544240be6df60987b88aa7400b5bb19e4b52e24a02c3b2b21399ec3a87324", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "5fb3fc6308b1baec801f9a6f6fec6559ae0a861a86d127d354495b01a356bb51", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c2b8cd6831543f6992f83114a4a5818aeda6eb38b0a6239998ac7e1951f357f4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "7fe9f8acc11ede4e7e412894431d7f2e5dd496fc90f8287eaa81d84c856ab983", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "bf46a2d0c525fae4e7c3a37c31b7a7ced8c22524ecf20ee3f56ae8c0a6d7c651", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "e90e11b07ab23f21fb69e04947bd99144bc182caaa84c8b276380dd6d90ef0f2", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1b7b5dd0f41842f283a08f7beb1b4c13ca36c58971393e57a2ffa9a6e9dc1b61", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "11055d2887b7d2b797d433eb0ae0938dcfb75091ef1d20eca41b3c01626d32b1", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4450a1b9eb04f1e7ba7b1ad9b09d9f23aa6d56c90a3b30929d4459cf62d4982b", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "8d87af6ce8e87c82f0a8a2b73222e4668326612b30a9db682f9ee0f693b7f708", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "cebc4d3abfede9b91cd438941570e7f8f3ef00a4f1ad13ac8b59189a69297a69", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "d20a2c180c95b0adec44331518d9ab44993394854f94e34766ef49642ee55366", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "a3748bcb168eb5d18e8055aa79fccff7b529b05591e9c8b4ab8a8e629ca30028", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c88bca75b897c148f89eb6e813f894b7fd0c6803e7776b87e9bb9e0ed7bd5b8c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "222f8592da85ebde2758b30a58f896985dbfd6d6092a72f956fc8a7760dab53c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "bfb1a60f5e0b0653197b821854fc97a16060edef3d3f3ecdb4125cc857d0798e", -"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "e652ec974319b2822f3db8c45c4a884af507e8e2404676693e5efc1747a95373", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ebdef978bdcfff5d1bc3965685880252963bcb63cfbe73a29031768a5e16ef7a", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "3bdd24bd65fc730ce5c5b4de5a05be1772660efe20fafce9942a1cc274613e42", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "e35a186db3ff8927e5bf4d24501d8914f9aca42ed6c9ec642af0cda35a2fa4f9", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "520860a5f34d61b7c9cb87d487c2ad22c9a1c84061fbf91e985bd22d97012fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "746ed0005eeb0ee10119070b533985a8a04e19ee47bf751bd13559f1d3a31217", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "9bbbe37d5257dac6bc1d77324aa4d3d37b65145a1904f277cdb2b413cbf07312", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "b08f8d54c69cdc8331b388b9fc0c472abc0549677eb2aa759024a52ec65a6215", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "0708bb186bdf615ac926fbbf0813ed24847633030dcadd62eb50fd05fec630c6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c39b67e56cd303ec9ada26cbd83300213374a4bdb0442bbc31627d2f60f25827", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "c7d2514e52a2c335be1ecf58c8f711afeaeb993b1776260487c66f9650c07e7c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "c7811acc5c4bf5ad594016370c7b1c5b1d66088ec78b0a6ac3fd22054ad23918", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "15915c4c794a6e5140483b8c68bbd8f36f3adff1305ad2786f6db5dbcd6be7f8", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "03933d5a6b93f81edf360b521901268fb173267e1daa125afb9737cef64ee3cf", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "03933d5a6b93f81edf360b521901268fb173267e1daa125afb9737cef64ee3cf", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "44e752f9ed9f60ae9f0ca13e405e39bb455b43efc24be042ccd1a5a165af0c60", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "44e752f9ed9f60ae9f0ca13e405e39bb455b43efc24be042ccd1a5a165af0c60", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", -"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", -"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "55aa2834b43cc6188c7e1200baf9bd30cd0c6ed28c8395708da810feef86a35e", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "59947cced1a42e3b009bc8275c777aa2e831b853b2a213386b0f6a95f47a80e4", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "430b1a67ef6afd7d5e70cf65b61f16d30b0848aede534f942a874050aafff4b5", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "f6218139d2bc6d16addb206ae28916d4c6b64a1ab0c500a28d18244904fede95", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d73d8efc8f293e97a0983c01a8db287f36348ba6cadd87e9b30153368c25f770", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "bc34420d2a360999c0bfa6b924c62e9c992d1c5f00f27c2d4720b30a80d7c668", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "22c4d2aaff98aa2fe3f7a69e154cce3a98e18340dab90de66d2d1fa8b7bc2c37", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8eee264d700aad7dc05381ab2373d852e7db9f68486076baa45a5ca53112ddb4", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "6717ffff08c91aa4a0efe516ae6f2536653777cee132b5eb5fa68a12b66dcc8c", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "ac39d1ea3f808eb1b2c48cea535846275525cf05017583c780edd48fd9ba0472", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "a81bf07732741a59e4b6d815c7f803cc9944ec9f5c307e473780aaa5b8e0fee9", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3238efe69c8ad351b921a769b5f5daf91b252f89c9d7c08e1cc7075ae7a67806", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "f028a400dad0eb049c42de8c5e7ba57bddd6881bb61c2c20594a54aed14ee849", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "c82e4e18f402534f17a7bc7949a432f3394ff9d4156c12b77d55c6d9bd9db744", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "0aba69a0e1bfb96e1525ee56fb0ec6b08b8655cb5163da70199ddd0aece751d7", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a91d34b541494aa36357fd0284b7d6a0de5044269f37271e3a3dd4692d3a69f9", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "d65949821bde4259451e86184e45a3a18453dbbf63487a825a7f686e05f67a19", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T3T1_de_misc-test_msg_signidentity.py::test_sign": "6e0323deeca36857dd5d839a385bfe1c8ad6dedb1139d2e953e7fe930909190d", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "eb94231415992491b232e07a2bb487a93f501f488decd0558fb2efdaa0dc1dbe", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "f1c827791632bf4e7c139887969a61168d68c46d760f4dbdff0b48c81d267832", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "5ec4c6487dc54c9b1dd5705941ba34814e43b034222cb55d790c8784adc2026b", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "5040445e0576597b7761850eec9da94f896ab9f71e2a1e3dc0f5485084708088", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "20c578e45dd3088e91cb1ed3af434a41fec92fb3259904d1d2997cec92c14fcf", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "97af2df0fadc828f537830ac0ca4954545937a820a53c5640eb3c19e41a6bfcf", -"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "15942a1eba92da5bbd904fc44f8c3d2ae1c8bbf28fa15e3615389e13806385e2", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a24c64bd3ca16b0a6072d04b2aef409e88865ff48a4ac7162a1c9d861a619f6c", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4202616abd929c3e8711d77bc24f3645d59339d9c07c1b220a47fcc162f47274", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "7c62dc1921462de657478d6233802d150671c9ac9a71e9e435b1b2ec875a69ba", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "53b99d8b629d19f737d5ad6ce7835911f8d565258980d6cbb6b769a5604366de", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bedfc358a7a465f6eb9bc6366623b85eeeec83ccda92af2495041b25d4b78115", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "696ace0f4b428b30472057e2ad641519a3750781777f4820c970fe502cd9f77d", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7f4161c22319a1a29f96da0f44e4e4686fbecab5c905894ddd940fd4874a0ce1", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "5f90813b92b3aece66d008454c6f516fc278b500d54281a1c33b51be0eaa82cf", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "91f03f4ec9c34a0278ca8aade6287a10ca8460ef9c41240d89ef39b5fad29b17", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0725e1dec4ed68391b8a6b2ee6a24b715c4e4eb54d3b43cb655858b092be096d", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f9f199713e65ddd3c0de87c38c6200feeb437bb621e7b9cd2dffb426fe08a919", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8ad558621d0da6618b8fef7b84622fbe5002d9ac293592eb4274d65f12a40828", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f689f408d545a39929e410a9a80c2fefaed8d3016b4981ba6b11e512b4e1b52d", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "237873af1bfb142865d15cb27af32a89615e9a0751702f391adc359fe8937c13", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "aba78af2a5019aa286af4dc68acd2249dfdc23a98d0fc150a8abe1562afa0ab4", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "b386aed1de97fd3af4101e030b6d821caa6d2ca82d585461e526ec6635d8e865", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2a2785d202cf020f0aa5e62840146377d16ebe336811cd2f7b0af64456536b2e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "696ace0f4b428b30472057e2ad641519a3750781777f4820c970fe502cd9f77d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "97d02aaf682c6c7de7032b4636dfe88b3811be15e19b00c282ad0e795b996afb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "abc8b384279bf2a7352d692b9854d1335212f3f31a98bc0da817d2340eec00ef", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7dca8aee178b0f410cf37e9fa09ffeeb93b01ffc238d286d564cbc98c9a2517e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "11a3ac4ed9f8b9ecf389f673e0007dec579099b5b1a297dedbc0c9a5bd766fca", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2bc4583abf984773ab36dd000a75aa446430d7aaa6d596867946e841d38e7d2e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d86ed6bc3c866c8259173961ef12a981138d865de4ce9b9ac70854b158ba9981", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "c4775909de03bb73ada542a4ff4938eabbc479068f95a22a76547f3cae7cf615", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9482b15d527ee4c850c3edc14eadf42284e5db401f3ee42855624383761c425e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "053a693f265775f7c7228b8d05ccaab4ab3b962f5b38749add483d3870e1be28", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "aa471a5ab69cb05d4b1d37a9cde66455040ec98a40bb592ecf7723186629dd59", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d12de58352a65e7132fbcbdb588509d14952a05702d6873d0461935f4fe00b9c", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8f11d9988ab51214ab59e3ecdea10bf810259b69f3e5c6774d6af3a8266af3e8", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7edd741620c6d5c96e7229e11d215ff1114630b64b814c022467c6c0a72fe740", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "adda197012484eeba7d8a6379ced43ecbae120f985f2d4f347b4ad4afb05d6ef", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "d860e811fd64a4dd4d6d21a2de910aec24a5cd6facd22a0b84002b8da33eeabc", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "609f2e81cb52fa9ab8849925ce71be8c2c0dc2ee16223d829be45b952cb919b1", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "334168e5731e1d7ba6986e4cad01f9548c50e305f74871939638dd5188c2cdb3", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a81b9d2690ac14b2bdf8f5dd1003e80cb2f24ac025a2773deead41b43069a5d9", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "c0c481f4cfed4068ece7f74dc9e1267fd7059dd084cfc373793f8fa4df51c8a3", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e3eb4429c50959404a72ffc87db52b944c0b95f0784ae2fa5ebbb155a636752a", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9594468af5fc3b3345774bd205361a51b7647452b5f2bf68e40250518aa0121a", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "603b1c9634e721d7d5da1e9a59078900ebac9d4ba7fb7d10be836fb563a50368", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "191f367d9f35a8cdb4c8ca69de36049eb5e989f3258f42c94f2525e7445eeb66", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fc441a7efedfb9dee0afddd6b5df987b69208ca4f8543313694a095d0a193685", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "388a92c622ea26c7f5af76b9cab819040b3f5c3032f3abfa8b452341bb6caaad", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "270284ad3aa319b4b72f7ec6ed493d6a0233206838e7b4c03afd03c2bc56ae65", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "643ef432fc30e98e7f5703cad2ab1cceaea484e83434d95c4aa47526ce11460a", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9cec4fea3fcfd4a1d968104cb652eb1bffc5af00353fb27309b9576713ac590c", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2461713fbf56e05120bf801533267d8c9270e1bd163d63c8c153c55546b18169", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4aa87cc7c89f221fc57aaa8334282c1bb14eb32809d606df7674fe6ba5520363", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "d9956b7cdda88272008fb94fb2a1fcb564e8537fc592dc50420aeb02be0c6ee6", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "494c5e33e0826d6d4eaa306cf7b409d0c20dc90f8b22a3a2ae6715fb18581c8b", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "5a5d89e5341710b0826c836413d6ae5f4f2ad18df5d962729072c8e919f22cd3", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "ef952275069d3abe27a3cc39d7dc4f62a8858ba42aa5e505ada0856c8edd50c4", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5bc4c4463b13dbff3291c422b26bc04622fea4ba2b3ca37334f81e4e7328b631", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bc97c35720be8a5daf9295b2034c3419e3cb23025f1e48024c10d46ac51a4752", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "ab011871ee4d822035f6a06c5119f570b77183967c14651dc957ded18b777af4", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "88635c3e8548603f28d7435ecd97126cd1cb590b6075d5473de435babc68de88", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "ed9c37e3aa33dd17923abfeaa8c4047fabd05af7f0e241e2450f0fb52fc32d20", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "e5daa34b6757c1debfd93826e49fdd44a9686e87e00a854f2380773a17fbb8b9", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "7a0fed37d0681bd4e29a96fbed9b3f803cfff246c45131a1b822f394046c8f62", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "21ecdab097e423bf572740e1d936a91add7421e5e665977a9f955338cb3fce30", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "584681459fb290e5efb740b4e51b256c31ec25e90e07ddfa7f259b415d7e8eda", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e3164dfa8681017f2e8bc7a189db4ed737a7229c3219d7c34726615fc82419fd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "df6be7ba24364397973345c98859d19317a81defb0d0296c4b18072944d72ece", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "62801ea5bd2b156ee2525bc98e2344a370e0b61d12ac9e09d0441ae9ae003d8c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9eb37fe9411f94cbb8ed92fe5f83273094bebff0613bf343c1f2123bfc8b80e8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d3b411ef7812bdc772c52c9deec850d45d9661f8a2dd183a7f1ee529e24b9bb6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "f1c4b0c88df5e17c1681d68d32af42553ca135804efc9efa767c3bab26f306e0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a396b0cb88e242855ae92ed8e51858d9a1ac81e3ee6149398e8567bb86274e4e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "954411380c7609a91e0662d31ff9669754da6ffef839746d640a6a0dc6341942", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ff28c7fb0a48b13ff4a05b654d4db04d151aecedcccfb9cb832e1a26ad84f99e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e61735df0804a4ff0ec36ed55512966d299e76360a38ce6c85ac7db9ac9c4ad0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "36bc286316bc3ce0da2a032c61a7490ab25ac890fe4a72fbef46bd68e700ba73", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f422f7b653c558e1f0c29d28544af6580cbfa5b781c9fbff664f8cb3c2bf3450", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b9336bedf22c34fa19d52131d96cabfeda605b3bb640fd08311ff940cf77b404", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "f311c7e7333be9eaaffcab89ec3d08c2b80814794f6c2fd4f98c0f6dcbf1f331", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "6bca6cd502f26827bb64346a1e3808ee154b2fac921c763f51fc0e06d85ecf14", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "5285211605ea34fcfe701c5565edb0ad3d1630c55b23d66c6b98b7e7ca3ed2c4", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "960d881144aaf6e006f0a49cbbea5c71c701bb8d06b6f025fad8f9faa2715505", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "21591f532d5cf2609aca3d2fa53b86f04ea55758df68d9663c5e8f2d048f5f82", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "281bf1e082e7148dafc07425aec95a991f51e896ae5a1286d38e8e1ec0c51401", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "444f10176539fe1667b69ef2203eaf55ea373dc05cd0a2cc5a5476bfa7aa0a41", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d732a6bccf02c5e3f141346f8024eeff0087ecafaa9edfc86f060518cfdbafa5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "491f7675532d5f62b3009932e42c0b131ade34d475829e573700b394fa0286da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "7cd6f12b46ffdd0db1b295bfd2868609aca9eae0f770ff2c2fbfad121d1efb3d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "3c546daefdf521ea98e4209482074f895eb66288b11bc4bd5fcf0fccca43b712", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "fc59b10e924d732485693dfd56b59ef2a78fd13ae202a42f75c70b47f50cfb74", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a0573a04f96dee00633d189d2a18cfef8caf06719f231311d59f6a90e1d84172", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4c15c5bd3d33eb05e2cf2ba8432ce8aa38003975acf9c06e5eca0cdad419dc23", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5afbe96c3d008be0d14152e86d9fd382a1f809c14961e4e4850f938a19bfeffd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "28be11d4366258c2e7196c2cf9502d40d457fd478a7252374c9df24f03e67ff2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "48920f5c770e0f502c472f666e52b930c5b332aafbda26875801ecc56d1b303d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "2fc1df0c271c2ff3fba34c6de4aa46543adc3fef4c7af53b4ea350eab0ba0d10", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "944ba76db424e4a303b41043f14e26ec3a408f46384dd226a9aeb29d3648c09c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8512dbcdad6c4099972de87a9703b887a8e0a1d699d11f5147db0ac4c8f94f2e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "eb1f70f22b5998b39f545b4b224c44eb49f9646e4e5f95d04acfa88bfb120dcb", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "afe6e08e32a2ca8278303997857a2df7c4264962d073bd91140d529e7a632313", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "024458a69a5336caec334e27d9b54fade2cec32c85f6d9ecdf13e0a02cf8a907", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "c4d9397ee331d8b08eff1f16fb99eb3e1c135bd1f57c21a3e8e8d6191664bc3f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4770eb66d8b107f5addb81e3d2305d0e64179762035a64d88d23970ca3bc5037", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "cd4c24d302d9d0f903ae1672040d3bbe5848fb19cf2f1223bf81bfbf694430ae", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "76e8eac1fc01053b2af9a03cbf9991e3622ec92808a71fdc9a5697bbc03d08da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "c18f700d5708d740c6a34b0936370853fd004832ae6a1bc1752ca8467e7242ab", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "eddc66fc9b0e92ec4dec10122d745ea5afde175935744b98c1f3caebce2f1166", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "45ebf3563965765e816bf483f0953ad8547a8e99db18e68dcf0435c96a28daea", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8ee33c6326fd6d42713f5609c0bb4b8eed8d8f7974b8ac3d4a60149eaf8fd520", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0dfd8da84154473b35bfac62e63adcb83b7116e1fca41e187b8939d3fec8527e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "034600fa22999d4fb14976730ebb4c98df3f0250824dd959da7753b9f90458da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8fd78d3b89a509874f5219d7410a226b40591bcf17ed67434687a73831280d2c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "33d41e851354b319b35d85c73107a688506ef197a4b706a22b0d8976cb1f0055", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "dbfb1226258a4e7b6859fb73d4134a90fc67f083bd6e91abb017e09751d2463e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "e43e3a43150f24e863952c3c7c3781f16c75da73fe704621e76fdc48f3e50382", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ee2c3831c345d4cadc3bf32bdbe3b16abaa59d373b5a21642f9996f07bdbba67", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6b3639c16f597c7569772a4d9080ab024937e543a7c9298dcd50d167df7bc228", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "186901990fe724e64d035c8a72a9f7a0997126b7794d0776e427e29de5b4b92e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "0046f7b9832dc2ac5d075cc172a0a006746b7c26118e5cd9a4457643d919a95c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dde60e30fe682e4adef7071e2d313035e6e40180518cc586a828f73f2dfa5634", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "7cea9e36e4c5549fd23b413711bff9882a00ec6d6b135098fa9f17e8a2aebd3d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "7266aafa8f65b2235d9c250e62a455a1103468d1ba3115dc0d342175ffe6ebb2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "7cd6f12b46ffdd0db1b295bfd2868609aca9eae0f770ff2c2fbfad121d1efb3d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b570e793166997dc38a2ffbe08f684c48aeb7a6261443480a4dc7005f90b10d1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "b2954b90606603158574f11cd6f0cb7ed3cadc14c380bb07d35509e70c0c67df", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "19762b6ed5f35f0b6a42425acca636569683b37795c1ac3f69ae702369b96e49", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bbd4914f91434f608a04db10ae9906dc6153e62e40fb065e6b7809cde3b7af6e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "5088890fddf0b1c769dd8862baef59184c9d4cf54b03eeebeadbf6fedaaa0e8c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "83de207f8666c1c6fb984e8f0a91ece8498c00b64b59efdc44b456fb7e617f44", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "859c68d089ee79a6c76838f1cc25044abfd5278f5f6c3a5dbcb92cb492218089", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "001e4e267293ab5ddf879070c8fbde357ec2b758bec8da8e4cdcb10c7b9f07f5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "1723fcf642d9aeb794bf14236f11e551f2c6115ff8a70036b74817faf4e19b28", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "40abafdcc4cdb13b4f7e03b438a89260e72eb6a3f560be8429d85879bacc227d", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c11c968ed86a7e005f237f2a30526005acf6979e31e7b71d9578ba83f7050df1", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "d653f52451e1113499bb846dcd7ea650b45a1ef11b3d367ac2e8496ed6258ca7", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "d72984b34953b1a88bf3a48f89ff489724c06a934c1722a1e25ffc193c5a6761", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "21faf6ce6a15ed0154e6f19340362e1ded56d1e95f51c9313ba295cc79ee36ed", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "17cf6da293efcae2da07a36af7d6313d3765cc9bb03201df24b2bc2f6ff8989f", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "c63eba9b0f924b01acd907b7fb46bc617934b48b9118b3778bdfdb1304e4f9fb", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "b068a9fdc0d679cdcbb22ee75971c35bfd8d18ec5ebcb3ae1eb5b4bfc09c79bf", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "3e50084353b087881202e0e64f12d3ecef494ae846cb8696f3219c0827ab0f2a", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4ea48e8205c5bb81f79673672cc6fcb78bd5c5cdd3f38d87506e94647c916356", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a6032ab83e7149f2d03bcb4eb60bdcba198205cec27d82b1395cff2ec8749dc2", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "6e393e404644aa2378052a2bf9f6f10d5516627c1d087f89bd1156dc5a30dddd", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "fba977323f8e4428c9b5e235713300d0ac9ab7a6eccd9a0a54272ee5be2d95be", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f231105bf005662e05f7297a0f7fbb94e2bae7bca331b09c510ff7c358bdaf6d", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "b7842379845f290945b51dfaa687e08966757a47fff7877eb80272302460f57d", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "91593bfa3a8454ab3d272837acf35801ae539b6bf7e5ad6a9ce6900859c51a24", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "eecd87a3ba8d3c1dbb5420888f43d3f474f7b48eb572cd17d0d2ac35eb2f066b", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "71973a384a5179558bdfac990ed4cb6f3eec0b8bef210170c6089e20c02cb9b3", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6259fb2bc6de42591eee7d99972ba2e5e433aa5953300f489c22dcb5c506c721", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "656ebcb02da9ad3fc496cdc71c6341fd9365a1ff5f7716c01b950d23409c18c8", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ffbbaf424b8ae2e8b72d3f2b79450289b9ab7ae2048d55e395b5a089853519a0", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6f3e536fb9aeb503d828ed0da7c7035b8be90d262645bb93c462fd83583e8c9d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8fb85843de6700ffff61161c19c47511f0d5a6e121a083d6c2b78417d940a4ac", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "04dae84a21665a99ae0a196ceccc2a2a065cfc66fecb3c6db6323079e7ee6178", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "410231a83de661ca006de49ccc5dcee89ebde856634f80fe720b6a1d2158d6fa", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "9e2e5fb018139d6d3a33186de110bfa8fa299bf2552a6eaca6789b0252cee5ce", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "47e80fade03a36affcf385c8291d25be6a7ee0b7a8e61d17542832c0ae2cc579", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0030010fe0fc740d83169106a0d54e6031e302e4dee3fe79d047aa1637ae3c7c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d191b3132ca433b188ab55db17bc63c58febc5e277ca58223553455313e4ee1e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ee36aa3aa61e43d1062945e43e132ee14790d844eb009a99a7786f56494a09e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "c1adb1d274ff5c8ac930b5efd1f51b250d79ec8fbdd17c2a737437becf3ad2a9", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "082ec5a57e458525dee6aebce562b3a2a0ff30967f343b0c53a10a4fce7b252a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "01ec7122954ea46ae2e5fbdc93ab240e7ea79330767282b91b1a65429b78fdef", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "e5278411b13bd05fe7e30926aebc095d76fdd6db21153a082404c7745ec9886c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e9fc60563dd2f5a25e8a9bfd1751d50c550e7487342f0981f64512ec1302be25", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f0c7201ecf32ae335740e72b868119781935b7793be5914c0861a09ebe5927e6", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4d7f525ca9eaba0a2fac0317f8d1f787aa0830a7ce732b6d7362bcd0e78c456e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7f39ddb7311b5a567ca0e9209d32fb8d0e73f630363bd0dc4d854ae42862252c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d4ae0b709d644b75ea577911ed334b331dd32a98dc60fe8558b8bf69741b0b74", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "5928e61a8c4168744824d50cdf273e7fe057031560d265741cc073e3cd13abdb", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "6a9988b2d5d85eafe0bbaa55b95502c04e081971fc85e4fcebdcf98bd8c8ce0a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "7d988f2cabe1ad22d8afd825f24c86e862de067043a1e9b0a04cd8da6db435a0", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "2144faa361a6b68eb87077781269c9ea7c79f3fe46370128a896eac8bfa63a1b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "e7159e74e546b8c39b9daeadce528ed7665dd371c07588f9949ecdbc96258805", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "7b987601fdd22f13e4f4c075c22b5d5b093096b169a10f0dadc264425d3974e7", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "acfe775ec0fa0191d50d075abbde23449db0cf3095573ec82cfde01e60bf99aa", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "69e9dba8cfaa630b4cddfaab51cd2761afc1829119cce8f2a96e42cbcff1372d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b91f11915250e0860c6fbcbed934eb8b64d0bdc2463c8cd3482d368c8b14d1b5", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "88ab14176af2072a8aa452682864773cb02f80c2eadbd924555e70e07171fc65", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4d7f525ca9eaba0a2fac0317f8d1f787aa0830a7ce732b6d7362bcd0e78c456e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "34ab7e77ddf5b9d72d0478b51d1f2189bdc40a7cab33a3bf2d154d3096867ffb", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e7cc38e109bd253741fe8ee3d20891b7c3e36c7e780c8bebec031fd318a6a9f1", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "df1d1da2c6878fba46552d963b071b2f3e69163cec3f82c8cf026946a7aca6b8", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "cc7a9a761e1e2d205f161bb550885d98799e9828d88bf29a6ffc3f7bd408bd9f", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "064688c2e25124e04b4006051a1b83ef2c08c6fac7b82e29b5c1a8ae34ee5eaa", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ab8a8fcacaefdf4e9d63eadc5612f654e86e103f1140847399fa6c80e96ee755", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7ff80d5aefc20f6a074ca038aab71cda35a5874f207123e00797d5bf9d2c8b73", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0cb51fcc2bef661bf1f0c2bd1a9ed38dfe4b01e4a818b14cd31fa071fe92815f", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "2e0f39a2f503eeaa3c622d61e1d73d3af1fbfc6875556230bb8503cb61618508", -"T3T1_de_test_autolock.py::test_autolock_default_value": "1716293c0e4aabecc4602a4a8cc6635dc9914ff28d54136030e696331daaf926", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "56159c15b85346032c52e94e939bd8ad47566f3ea4cbccb55dd6e95ba0d86e2b", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "56159c15b85346032c52e94e939bd8ad47566f3ea4cbccb55dd6e95ba0d86e2b", -"T3T1_de_test_basic.py::test_capabilities": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_basic.py::test_device_id_different": "f4ae036fdaa2a2a208543340c19c1a18b7c134256140e93ab4655e11f2438191", -"T3T1_de_test_basic.py::test_device_id_same": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_basic.py::test_features": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_basic.py::test_ping": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_busy_state.py::test_busy_expiry": "d00c19e4be337da53afb665aa2c38784a51a91989ba65bb77aaadc8605994395", -"T3T1_de_test_busy_state.py::test_busy_state": "f305a101d05f33d6f0fa3d4e002fcc37a569bb3e89690dc74ad058899085aedf", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f74eaf21eeb33f4926152e82f47d0c9bc62e5e6002aecb6da2f3ebd126b1f31", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "0f74eaf21eeb33f4926152e82f47d0c9bc62e5e6002aecb6da2f3ebd126b1f31", -"T3T1_de_test_cancel.py::test_cancel_on_paginated": "581f308ac81b24a6380967324898b9691c030661ffdd706d8159649bf0b2e557", -"T3T1_de_test_debuglink.py::test_softlock_instability": "f533b6840f7f5b94c5baf11d12ae6b2e04a68efb292a67f8a7307f23366758d6", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "5f74c8e2421c3e3af6f8c3fed431fe795b8a8db7b83a95a5d48ef779df916363", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_language.py::test_error_invalid_data_hash": "2c9c361d73bab1c091485d6531243e8e45b624d055786907d95aa3e7ac0689d3", -"T3T1_de_test_language.py::test_error_invalid_data_length": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", -"T3T1_de_test_language.py::test_error_invalid_header_magic": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", -"T3T1_de_test_language.py::test_error_invalid_signature": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", -"T3T1_de_test_language.py::test_error_too_long": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", -"T3T1_de_test_language.py::test_error_version_mismatch": "0d10ae03311fc8b4f9e25dea8bbab10be7f7d8e322933a152fc51b684fc62344", -"T3T1_de_test_language.py::test_full_language_change[cs]": "a3a3e12a096fb0333cebf86336fcded22e89c5f29ab0accae36472aca6907e99", -"T3T1_de_test_language.py::test_full_language_change[de]": "2fb9cd06f13e6bfd7f77265ca1de9d484f5be23474bee3e9008474034acfb1ee", -"T3T1_de_test_language.py::test_full_language_change[en]": "bdf46f4dbac8af74ae3eeba6b34dedfbe6501e250a948e0700b2b8c467b62d0b", -"T3T1_de_test_language.py::test_full_language_change[es]": "03aaaf27f1f4949434241bf81687a88d42e449019d6de857c0307562746ae20a", -"T3T1_de_test_language.py::test_full_language_change[fr]": "9df1b2edcab533231f6bc5440563a1d3114d0b8f2515dda53192ad7d19f835c8", -"T3T1_de_test_language.py::test_header_trailing_data": "116c567c75abd93070cb47853ac07210b0e0f4d97b5940ada58ef365a6cc5749", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "3e82a66d01f8d4e089b794ffe4f9b71b945a062089729a5a9f16cdc525d26679", -"T3T1_de_test_language.py::test_reject_update": "2326ff9cef030570cc9a4766f3f481850bd20602337c20b807555011f3d60874", -"T3T1_de_test_language.py::test_silent_first_install[False-False]": "33f7e86757399d4e1f0454b5c11f1c217c4bad262a32e45ced47649222bf0d87", -"T3T1_de_test_language.py::test_silent_first_install[None-False]": "33f7e86757399d4e1f0454b5c11f1c217c4bad262a32e45ced47649222bf0d87", -"T3T1_de_test_language.py::test_silent_first_install[True-True]": "08c764520c2d77ec8d12b63f82a5ba36b0f7ebc2cbec7c874fad4ac343d546f4", -"T3T1_de_test_language.py::test_switch_from_english[None]": "9c1e2e0ba0bccbe4010e59312b25388637338d9dd1eee8d3ca1bcdb6109623a8", -"T3T1_de_test_language.py::test_switch_from_english[True]": "9c1e2e0ba0bccbe4010e59312b25388637338d9dd1eee8d3ca1bcdb6109623a8", -"T3T1_de_test_language.py::test_switch_from_english_not_silent": "242603b8b2406a7f5ebf08b8aa670c1eea7009cdc90174a108e9e85e667030ec", -"T3T1_de_test_language.py::test_switch_language": "54bf96f7b2ece87fe60546ffe878744dc04e580095e572d72e91ae06dec57838", -"T3T1_de_test_language.py::test_translations_renders_on_screen": "cce098c9da0ce2015c394ef8ac06e11612fe95fc90d052e317de81edafe73afa", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9edeb66428984c049d7d8a805868a1b50ee622a272b37fb8212afe76b550bf84", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "6c6740d59a80bc459ef190febc595e00e71e22c8f0294c719f41bce64d8e0d3c", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "b74def8bbec0adba48bec48b2711ae903b9b61e3a659a42428a99119a291cf24", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d69b76c940c1e351e02862df5c94c6d8fe9d1a332944c1537c9e433f2cbea291", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "6ea6e28bc8e9751a6522680e7f830c78a4b137483b25080a8561f83e5d94e13f", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "d4482f938fd2e8ea581013990a65efd712249898d7cc20f7027d763b10b03026", -"T3T1_de_test_msg_applysettings.py::test_label_too_long": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_msg_applysettings.py::test_safety_checks": "0105dacdfd0f8e69fca82643c84a9891b3953046571f041ce2b7e8596824aefc", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "3804c8b2026a4da82b371af1ecb95a5a5319d11720ae6eda3b6a3b2509b35038", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0b6c9cbcab39c3c0e6cce64faef9244ed79d461fe0959cae6968b285811b4a02", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4effabb12bee9ea00fa3bf80ef2a126ecdf1d1e480b8338368bcb3125397d02e", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "77ac0b61fb4140409c32c2e9435c5545b93635ce65c24f7dd1c4d8aada93493b", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f137fac2ee4b198d19b732efb96c657513a74f051f02b642e8b83826972a05bf", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "38b5afe1623634c7dd7771b81c4b799877d434679345df720e8945902ad433e1", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "c3e781ab2f47f5b268e8ec4a1cc7d17dd8e14c9685c0886f791b3a88349b3ea4", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a128aff3fdd0ad25bc6afc05de49d09661d2a9f35c46b84db28e3979f37e050b", -"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", -"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", -"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "fbf0611bafe2c6f5d320c554f55dc2011816c72b6d8c2d3a44cbd6fd9b99f814", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "f21c1007eaea59c50a6cb7c63c6f4b4db6c6f211b78b4c5bda8f336ba1bcfb67", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a10ab0a73f43177fe38832332963d3966f52f0e42059df190aa6ca8e6453faff", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e64a6ddd81183c32612970a8f9526e013a7d53136cf61732714991bda7be054a", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "9ccf32e673ca1a85b5cee9c589b24df6b7792144e0c0936840d5945510a329c6", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "1ade4c776ac6f77b5226d92249521185465184f6329825353e34b03ecdf178a4", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "2639b62eb8538e260aef167bad24e84209958952517d093f2e3d5e602e166d46", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "9e389b85510bdfce0b71dc8c0beda8ead9107360b430d241de1b76835d147618", -"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "2b638756fc24b817adc4ce951cafed946c6fd0e1ef253498c01980b83cdf0b08", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "94cbd14fe2ba2a054d6f7c846c1393b0d4c8b668cbfe9cbe8605a83e1a0d3929", -"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "984282dc5b6d3577eceaee9620c7c7525986ae9595371fba8649742caf8be2cf", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "785a166763a33d3f7c2a900a8c00b952e17f7fb7f669898a09bce89eb26b609a", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "0f323936e4accb75334b6ad75aff54822246d1e6628749d132eecd9dd0051058", -"T3T1_de_test_msg_ping.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "649b4376aa411f30acfbbac55cb503ae1307210eae26f21ac495bd7f33b10871", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "390ae32984df693f17a085c6aa8c458f45b67bcf5e8c5da3b78a6aaf32055f33", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "bf6e5a14b6c266354b13b235c8bc3433d3246e280e3e8c760e3ffbde66e514ca", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "d5c0032077d912600c768f1cada3240ae0c7bee91788b6579512851c4ecb1bd7", -"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "f4ae036fdaa2a2a208543340c19c1a18b7c134256140e93ab4655e11f2438191", -"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", -"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T3T1_de_test_pin.py::test_correct_pin": "73de31e26f649f997bf92cf50ec4d05f25021602a450ea71956f826b2a50913c", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "6ae775c1cf895593e2c411896b43d1e810d13abb185ad44e2493599d516fe9b0", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "76def187ce4e340ba31b51d1dd2bae99ae79ec2fd2e195964cf7e6515a4aeaa3", -"T3T1_de_test_pin.py::test_no_protection": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_protection_levels.py::test_apply_settings": "c7672bc06971145b555c8b3b8e5a1010a8d889c1b51b7f61e7c469f796dfc932", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "b59dca532744e9184651a196211b61993e0c9b186456e25a867a3c4f28d3db9c", -"T3T1_de_test_protection_levels.py::test_get_address": "60f96da78c183ba6dc33998156d6779077c0cca4b251cc8982a8b0588ba2f18a", -"T3T1_de_test_protection_levels.py::test_get_entropy": "f2898517f7b02804ca787fd7e9caa74e84f04960b9c4da1b2fcdf80083cd6687", -"T3T1_de_test_protection_levels.py::test_get_public_key": "60f96da78c183ba6dc33998156d6779077c0cca4b251cc8982a8b0588ba2f18a", -"T3T1_de_test_protection_levels.py::test_initialize": "e9c5826f6944c1e8d58262dd4d7b1810319627c69f44218ce804092a0c90e5b3", -"T3T1_de_test_protection_levels.py::test_passphrase_cached": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "90525514655e73caabcb61438091108691e1a65c3b6e78e1b214f5592abb9cb5", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f92a4424d068900e925e4e3303bea28b18b5f8046a1656c7b121bb42bafc546d", -"T3T1_de_test_protection_levels.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", -"T3T1_de_test_protection_levels.py::test_sign_message": "1e20eb16978bdc9f7aee7d8d3870690c612c91059a896090f110500f984b57db", -"T3T1_de_test_protection_levels.py::test_signtx": "044e43b7b182c0e2cf5767b449ade3464c1b2152e4bd60559f1fbaf1965802bc", -"T3T1_de_test_protection_levels.py::test_unlocked": "a2c5dee044f0b259c610d37f053c50174ea0bfd233600f3a161ff98c32565906", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "f0e578ec05a877ee73468b41775377f1577d94dbdbd7167e0a04a54454d1a420", -"T3T1_de_test_protection_levels.py::test_wipe_device": "1e945b7d7af2a531bb58f5b611755170666d912cd4396a9fe4c5ecbb7f206d9c", -"T3T1_de_test_sdcard.py::test_sd_format": "e18c01ca89407d5a8561770d95514c72b7286fd674f36045c64064fa05e05f03", -"T3T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "b078d6e965fed9b6ee89ad09aac302af1237d5bc130f109fdc73538042ff5750", -"T3T1_de_test_session.py::test_cannot_resume_ended_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_clear_session": "7f4f05e668a545d9276aa2f9b8e7e28f029a46396061acbee297b359a6a2a278", -"T3T1_de_test_session.py::test_derive_cardano_empty_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_derive_cardano_running_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_end_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_end_session_only_current": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session.py::test_session_recycling": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "ea7c6c9417da7523bf8367b0ed5ed69df287a72a1deca438b3fdf501676fd2e1", -"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "453f5464c067a5359dc9605153809169dc41e034409f521a454f236bcfc04b27", -"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "652c86a57e3e794d2aebb9d8b12d3fa0c7f287153762790d8651c45f25b703f3", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "0cbdb61ec21cb9f0e0dbe72f749f54928c5d33da6274e4f304e0ace98deabedc", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "553a136f7c406de3d480b6347a07d911da869bfb96bd18fd823c13aed9e01915", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "476ac7c4eb853323d756c8bf7342fad58c2578f09aa3f6e022325373379de5e6", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "ed267e6348a6ee9aa56d7b69ee1f55ef6f8b8e7967b74b00e463f4732f4cb37d", -"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "cae331025c27a68575106bfa979f2b82e77acc6a3f6c2cb5eb476b07788f75d2", -"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "5465d7164e3a19b9acea5b1d584e8d94fe40d7db49dce538bb8138934c622bc5", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fed445b9e14a2252e5bc79eb81997a75558d9f427bf10420a034bd2a5408200c", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "96dc64c94b73f0a69f7def6bf619b268d9c52f3021da90cb1ea01be5bb4d773d", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "c0a024f0c1539d54e70eb3ffc069bb807938a0d0d67afc3c8b0831d90ef9e25e", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b2d433b6f27546cf0d3654c966da05570630743edd059edd33590bcf74a3df4b", -"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3ed29e74cb3e06c85b1278559435a44865bf0f5c68e1dfe3b294648b7d861905", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "fcf3d3231a3bc913e2808331ec4dfe6fc55caebbdb88b0ab7db4e0f539774126", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b4e9c7930d56b8766ebe1ebec1a6f6952650d0df923526ef6ff125278be6520f", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4f3b598ede6c6d90e247074a8380021916d980b7690c9266e2a1222879d5f2ba", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "05121d236900445631cad6610f24d11c5cb5bdacc218d14db2ce67dd45688043", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "47cf430ee3d5470aa9e7b4d04a0c79b58a8356e662689f427e704e0542ce7797", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "85ba098241fae0873463933c7b324109811504c266ddc78c97a9cf03a70e680e", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "682e748161c1f841828abc35b4a25f78e635725281e2ed87c192ddf352503714", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e6cdfe33b545ee13919507b6297716777030a3aabf1e34f68850c7a59683e301", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "de08bc5b4df8cbdd291817e2be75d26d5ce4e6d85f498eea048b3d8ccc192f4f", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "4e2d9fe07bc28da86d221d2c8560071a1387c1375fa354db1dd771bdd2a5e3b0", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "69ed3ad659dd6f17813a712f4efc7ac1b162fab136cf50cd8ee987c3532de843", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "69320ea4e2c3bd6d6ee2959a97ccde01a0f20b2972a6b4ced0a70855d5769c0e", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "a01963042fbab67cb7bf0d0a4683d0cd7a5b6f0b1a8a31ccad316e128af2718c", -"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "6f364f906fd898692efd14e9ebb840cb6748b8127bb47d46c5bfcacd4ca62059", -"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "d68cbf3ccd599858c4541264ef3eed3cbed19fa5dea43605b235054dcf28ecf1", -"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "92d56b3396d2c9376b80b2ed14e367cb5596a4a34c78ac14d8faf8b3063a5110", -"T3T1_de_zcash-test_sign_tx.py::test_one_two": "058454cc90d51b354548b794b15e2d8ffbb198f2ec066af5d6206a0bc5a107f5", -"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "413f52889eaf3ebcb02d69e4812b13a7a160846e7b55da20ddadb45817bb9f11", -"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "41408995aa0d057f1c535ebfb4539c381d36e420d5a5790d43955f9c8b9552e6", -"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "92be155678955e634de05ac5349c6fa38ed3ef6adaecedbf5a0c00031bdd2544", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "cd2d7ee5eff015846fafc86513a5c111ccc00348054bd0815d2d74381afd55ac", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "9ba6fb8462930c9dd78c3142c0b25c5a0708c30335b487287be294b479113d53", -"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "b267a7f2994ae0332b362c4d186bd538f49910dcf5739fb8db49af387a0de3e8", -"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "fa3d667e1439c9c2a475fff22d94e330c14697ff8dda4bcdded775492cb40a90", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "ceac9a64c9aff8a4226e40f068ce412556eb582d909a9f8d401e83ca10433d77", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "9836e9ae0814d1d42cf3957fc6ac6b17dc2503e5c0bb3a27fd1209ebf57c03d1", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7c2943551ba1616bf057ecdeced1f603a90d60768dbd072573a60dbfdf4933b9", -"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "3d0517133c0cef58b6d8627527f3960f10706094d0d7113bc622453dd5cc9d8c", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "28fde0e964521cf59b97a78c62d0c9655cfc8b0c8b1bdda7f75efb6a6c705a01", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c0a4acdd90581b30266f1d97b811a3ad40cc39d2059d14f0a938c9a71016729", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fc22ef1bf651f8c8475674f3699a47c2ea951f9cc93ca60a4c9b2e8ab3c124cf", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1779de46a1d6549caf369e488c4045f92484327696e212ff679d6ae8b51a01b2", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "f4de0499dac628067619c6081d4ebdba0ad196af7bf9662c5387386eba9e9729", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "38a7eac0cf0be45770fb28da9c2f74bac6404e85f2a3801acdd4b0107d99f2ff", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "d39b3290ddfecd5a3ceaf249543eaccb2b71c21eb2dbeabef94fe866ad7ce6a8", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "3bd08b0f7ef6352c5a22bba299d4d65ba6725962426abf6bef48203ab91b9c6b", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "3bd08b0f7ef6352c5a22bba299d4d65ba6725962426abf6bef48203ab91b9c6b", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "312fca890a6e93da6c3705e3b3c97ba38dd336374634dbed9134362420273380", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a0757616e39b5883ccfba01af3b386d1fc2d4a00517b2c3d79519ce0f60bc5cd", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "b8ca0b72adfb0cfa1ff653c83a0995517b71f8bfc217753e16aab49dd82a3a65", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4ec28178d68afd83019583d2f70dfc1a66a42f946a801d6a9d210ecb7d700951", -"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "5a2732a973bf39bb25bd06180cfdfbc7fe494015c07df9461d15e189851b811d", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "0ebad19508c4746198a6728449e4ac0d1cfdf169db907e4ff1acf1ef7f37a400", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "4e9225e760a416bdef0b2eb1ac07489a7fc216b6a682f4edfd0a99dc7a0364c3", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3350934f73adc12375536ecc125f42631d0f17f37d5a72c3a6a1a062e9e9e565", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1b7584ac7451c9449962322655770d6d46eb8bd073e13b3aa605b4da5bae2327", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c7102bac98a0a09a46bbbeac4c980b4219bb63ac8ad6b1d80797bf9cd991cfd", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "3ca9f504529fc7a320e464819c6a793c8fc156165a80db17ed8ef8c593bcc802", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "e3e3495038e8016ef1afcf70effe3f957ae23b95a515c3aa6f3736fb35c9a10b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "732b01cc2254e25d6d4576af99332e7c9f4ba42f031fcf13588a4a0209e51adf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "56a011908b178d0deeb00b7596a93ac003892e0adbd24958e875cc9d70340d95", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "bf917bfb75a6e263410d4401774974598cbb3fbcfd04da54942d8d5f640bc32c", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "b9ecca0a8b6c4750d0af6c9d7433da2704dde0bc7e894778cbfaafb54435630f", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "8b434c5de0caf71301bd6b21481bb1944d4b43dd596a7ecb9acb921c8083e955", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e8628d184603bceaad9c5ae5b9f51460054e7b5622ea9c1a3dc84f84034808bc", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "3ca9f504529fc7a320e464819c6a793c8fc156165a80db17ed8ef8c593bcc802", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "a8f46662c3d14e2defdd5aa2ff4486aeac3f566facf086916da7ddc7e0185130", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "013171ff086e4565db1bc4f8a0d466a0fa7c6449ee58a3d27b27f073bfb74d63", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "3941cd14f74e1d7ea919cb32cbd7c5954c412d845305e4f0e495378c7701a53b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "e3e3495038e8016ef1afcf70effe3f957ae23b95a515c3aa6f3736fb35c9a10b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "732b01cc2254e25d6d4576af99332e7c9f4ba42f031fcf13588a4a0209e51adf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "6ac0059ce935707618eefe9c23d403ff30807df3c3ec23b8615a50b648bbba75", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b8e44bea2eb0d3ac672a41ebf83683adbb0e02a622cbafe2fb02283117bd4c4a", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "56a011908b178d0deeb00b7596a93ac003892e0adbd24958e875cc9d70340d95", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "4795ab245421deef1f7ebdb6568165a64c7066054747a84c4e30a78085c71e22", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "284b98fb9d745aae6f552999e1652300d84d4863c3b29452615ae5b691d7b266", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "660130572e80e9161d733f3ebc465a5f2a9859a79eecd7201c7ebf955173df23", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "bf917bfb75a6e263410d4401774974598cbb3fbcfd04da54942d8d5f640bc32c", -"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "213ced04e2b337576abe1861c11ef69352eb5542f2bef720e50d54cea031f9db", -"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "6104cd021625791fc9141ca802c3c18fb50815459acae06b2eeb05da432352f7", -"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_bch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "ef8a33a6700d369cbb842ef4bc0a853c10a06ddcff7abde6a1d84e7d55a0361f", -"T3T1_en_bitcoin-test_getaddress.py::test_btc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_crw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_elements": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_grs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "f2ba49011a093ad530f0f3c3f60e1386add863c76ff5e3587ac90262a9f4676f", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "0fe493c41775e7992c88e1bace001577f6d8737500005399cfd73522c7459b0d", -"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "1dae1e1f3127cb2112f58e75e5b6eab871da0abadcac14235b3dadbfe0d1da81", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "cbf5dd38da807d68f93cd9e276f8f0b7a92826e3e3bdc40bdbb30f4a63bcd4fd", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "a704cd1bed4d13c243f86af77390bf15d8287ab33ad0457eca6697ce68f5121e", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "40f2d6e630bc753de21cf7739dc290dcf809337d5e692378699c98572474afba", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "9cf15bac5348807d5c50a8c622e92df0dbb630ba9db0b8423cd7225d2f4b620c", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "64d62a9f4b02896b84d56c3453877f439fc56594b2832d14031d45732817f7ab", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "077a15a5492dea40d65896e4a1d1a17a175e4d85d41c66f44293872594663ff5", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "d5e4cbb3c97f8d8312002a2dd7ed070a1c293dfca4ac195854fb296c1c1112fe", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "277f41432b63286e5b3898080a5245b4c57045b51dde6be49467a1863207448a", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "466e961281fc0e074f0edd4c6d7c04af6032d92aeb33511a8a39af20fdd18541", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "d4a50e221264e268a437ff4b6e5477de74729b1171cb7f1854bece821a46c62c", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "f5420ee7d27a19162d284b685a34fdc3ac296fdcfcd9855d7c9c00476611893a", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "af0a9051d5b974cda12d13f1175f6a870de418708c3aa05266ae2f516ef0fea6", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "30f3f630eb68aeb9c9c8d67811e5101ca3e301cc8ce0ff7069b3e687532fca8b", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ace7260e65a375a577b0cf58c7c19e73c861a5e705336d772e4d8328796b46ec", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "a74c4afb2a87e09dd2562bc7650caeaf059552db544872b7704af9e51f26103d", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "6eb641ea4acd345143540a9985e16cf8569e957f830ac4ada79a949629aaf310", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f9c524eae89e19091508c9fc40e18a2c2f167a15f28bfd59ff4aad7bd80fa016", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "e9e1685bed4796972fdf044a84d24c95981bea00df672614cad8c2ab1b2c8e74", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "3a15c7626541011177bc88967c72c278fc229ad8ac131cf606c8dc1f48b5df2c", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "cbbf158f803cec0218cef4482be16b1fbce5a33c27d22089bd562cb8991f697f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "0478aa33fb21365c1d114cad7bfb3c0270b20ffc3573d1eb70821101004e30dc", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "af9af600df851cfbd070139fdd4db6588e6ce4a116b45ca19a0068ce9d678f51", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "94d22e1a493fa8f3c3e15a65333ef0691fcab1594ee0e767773a3a90db6814b6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "faa98c7c2c581c303a2b72f0a2f93bfb6c1ed504cecda4b483af17315b569e78", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "96ea93c13ca429954e84685b85df2eafa7e9f25afbc8ca77a88eb909bd3f7c8d", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a93a88119c9ee255e09a87ff1e9c078a61e1e7ec61a26a4ecbccf294a70269cf", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "46b56e80439b320688feac9bd0ceb440ff83cf5d1da51a6425aeb97aaf097393", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "17a274a917e5ff853a429561ef4dbceb12c41520c18714f3c3f037d008e5527e", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "2640940dac7119c208074f263482b66323ee2ab0769c2cda32b75e91bfe9f2a3", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "cbe6b393e10f5e4fc0b780255b19d46f53cf60706a2f2361a658a82b0b659825", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ba1c1f8dab1121f7fdba73f9a481145ff65e383763a24a1e66d25b2b4681c58f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "62c493f4310b90d0082281c38acc314cfd059bbbbfe18a150a5d7236cf9e56f1", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "8ccb2c2222cbc695f5d49543e637f03eb69d60ea654636e0e8b97a0c04a21e52", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "cd5a286c516dd0bd7eb107081356863504947e9498a9d6b490760265c055c870", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a5f25a795619e2adcc3bedc07c6b12dfa605a9369705a013f276428a5a4f78d0", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "508a69027cc9b71d218f65a015d963f13fffe4bc9ad435f8fb12894ee3ae298e", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5f4e0c17cb3258af3901c7508968af36632f3e9826f6f63068b8521a4fbb36c2", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "9a31966c5665d23cb1ec01529d09cc3034116a28330a52608d9c12a96bdabe90", -"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7dd16059ade8769aca12649b7b2523ac52718fb7bb9eb416fa13a5cb747be1b2", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "76dff54ff9086f92cd401fc9f7fdc7bb784e6c097d2d7afc0c423c8589488a70", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "bae7f0b63e3fee8ece96e59e5fe45fb50b9110e6af0cb431bc42a3f965ff3752", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "9b215d4fccdecb67001721ff27073e2cf7f57674713b086163a400315a0a3715", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7e60836a928c98fe074421708bd25561ef46d644f4cdd6867b9bc5d79c020f3a", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "ba55e3d330f207e211264d150ab42394ca033cf8505e1e02f5243c3d4cae3ca2", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f2c6c4c91fe5fb8309cb980779a6f7254124c296bd232ec33bfc35d448df2789", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "27a5b6815c3b8d444c4fd323a69782f40759e99f582c8f0131835d00fa251eea", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "77c39f9196a1ad8cd7972169854f7cb5f15d93d96c3eb43645c980d3dcd0e771", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d8e95f6a14ddabd6db4944802f847ccddd8161eed28559f35dc095b568461df7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "28df2e38996c9cdbf83b98a886c5fa3fb7a685d9e269d55b07035115ff8cd903", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_grs.py::test_legacy": "a806ef300fa0e8ff74828a364b2fee979a4c616b3b21111b150cd4dc92770674", -"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "39af05ab65895d138ed4a080393f3de3c15072980637d72a58c0659fb4b31032", -"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "8d7cbc9e1e1c2c7e06561563b5ad775bf281eb516c50b61e9fe44293694110be", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "fe926c9eea3e2184a8d54beee1b148faa2c778aa418e26e29089dd4284f87e87", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "d8ef8d8a6b9c94c3b25a45015a996a7ba31687024e68f91609ff0cd587b0ff1b", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "c52b96573ff1d0f1a49369298a69c1828e96149f91ff406cdcb43e61245f4449", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f60bafecfdc71ade91c375e95d0789878f7dc72e29319e257525719e55299cfc", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "7656cdff1d59f868ac6918f84908be975adc26d2a98ee9c9706d845dc8a2ef84", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "c2fd77b0242d173cd9b95e75c3ca94de10d8d8d2908420241bca24acaba5a010", -"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "d5938400d691e30dc969e06c21939cafe10dc82bb529f8c11019a2af738aac29", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "99c3eb14a9297b4d9caf1142f562bdab6d68a779ea4a17a1349d0ac40314bcbe", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "6b7c2edc4fb52dfd5d132286dd8f9b3ca84136a522c653116be6f194646bbede", -"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "0f230d5c6845daf73081e406e4dd5a0252ffb97a65c6196d3c856ece18372b85", -"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "c4d64521e603d5b9e3f86881f464be11334877e16923cc7868b4584996144de9", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "0470c5fa7c26b622c9407e4f957658baa0b8e462aa255b30514495ac4e4a29a6", -"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "34916d218a88982a0e031d3da676ba794357a43c13448cdf6ee064669fdfc9da", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "4f4a1630b3435b1755d1d724012be607006fe2c7f04e2a5edfe0fa4aa846165c", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "44d8941b9161ad7f12cb2e8f231509faf2e65dda2fba38504acb39b96311935b", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "fec43fa5690a40668ed2bba6d713cfec07ebc8c38bc686f82d9954f7e417c8d3", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "fccfaa06091bd0f574e4c78d6b6f89ab1842a33cc873ed60cf484bf33db3b451", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f3202ea515b4c5935c8ac5eb377cdc68106fe5f05968b99234954ad4aec25e6f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "31755b656cad58d7d32dcebbf939797e416b37156a07e887b55c83f815e8968c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "70933a9dad255906242bebbeaa13246fe08feee20f6a4a2149541a967a0ff550", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "686e0a918898f62a77ae2fcc2ca3b9438b441416169d327a3518c5e917036fcd", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "aab1f46581f519c7d3d81aeab5d6ed8e35a8d492e95dddc918ca0431b6e8fd54", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "0d2fd0b06a57c3c275bdef3eb31327935fd4990443e40f40ab5684dbda4a768f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "92d41acbaa6d69fa4512de55c3004b77701d699bdde982861740a25fe785d910", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ec02c7840205c63d6bfb9a7a5ddd103c45009ee61c6ee0cfccaf343e920227c1", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d212479a0542d5f2fcad9876987db10f6e1c52b9ee13411b72fa8062ea5f73c6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "f3f8cf5e56808b1ab3697a84911976d49d37fbe0c6652dc20c2ab11ef4177b61", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "af8a4f016ec79439685f33edeb4ec8e228bd72ff6eed4c07d7885eb44fdeab09", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1f12bb3af8bcf6a6b9afafbdf6ceba9674c0d2ef159fd75be949a60748316caa", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0c47cd2c13f94d818545f493b5c85788024a0667ea8682add50e474347df3d48", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "5b5e013a4b98ba8ec3dd2b44c9653c2eaaa7b5b1a949f9058d3f8da6500b16fe", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "90c5c863c822b85e807f1f971c707bef2c32afeb763d6898f0c9b9c33f26b5ab", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "8b4e69d84b57dc00839900e7cae25b1b9f4baee8cf2649833e467145b254ecc1", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ff12de01723a4a3cf4bb8c011bd81d45b9f43254ec7cb0ea43556975f5fd1fb7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "4c53a681a7e094c59a52c8bd2536aae2fc192a3ca93546ce348b601383447135", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "112c66c98a7c85210d619c610e0943fc83677878116565b2e2a875f130f09e0b", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "c8dcc2856fc3e7a31e8033caa42a134de2aa05d3144a8eceb0edd3af041f03d9", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f68f1130cf830aa8e6632901d834e23693ec5ed111619c83eae12ef72f2a3609", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ac684c8ef0dd6f8456ccd70c955290720abe863fecb994a50c6f548111178f06", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "2f95be5d0472b94ffe051d5753b9ca68f95b245633d8f76289f2768470f47319", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "73857c4de7ca4572bc7f9f428eb23be495569d938fabd35baf4e5bd04dcc31e3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0ffdf6683c3dace1725827bee5e0da3c489276bcc0f3cff411a4a848bb7a2ec8", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c608ac3b16eb3b1a9e294a809b692c5633ba2c83681bf55c85b4c137bbde5810", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "fa9fb399b0fd4f08e344e7581419e1b56d34995650a818f4e637afe8e3f9b3e8", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7d925ab9aec530d3c863f97174a5c837e32f6044c023f1365cbae7bc75cfb7c9", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "56108f83b7413d2a4b22048caccecf55911c13b5f1d946c40b97ee60c8bbc429", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "0fa3a45f6b8d31955b0e9aaa68d79f5948a7597901cfed56aec1a35ce57aed3b", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "83a6b8ff9609f07a0e10d5c46357a0c3647fac6671eace084f0568f84ff6d5d7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "dabd2e4161c862f8b45e5793523c0496a765b247e64f23e202fd2432a1a0e94d", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "999fc66f082d9923d670ab7d87c4cc4443a50d6b7fa3442f57d3ab2b2dc0d5fc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b62ab2c91fa20d09ea8e79a18904f3ae4465665b4643a1490cf6c0112876d2b7", -"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "b4f764f46970686537dedf7acc634675ce8a92e98fe99d2b19d766c546726069", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "638313d3b73353020ea06a2c34c4b14ae87e864d7c027a882d6a55330030c6c0", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "f524a9f7ee2fa91105477e0d673e3e5c5e1c1a13222d20d46ae2e375f9921c3d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b92a01f39e829d21e16ede95550b2047ac9ea734a7c61f3e28faa16ebc036ccb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3c538fad2bd6a1fd6eb3c088d9571142e194e25c53b7f19abff1ef7e03040bb3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d9e1788e58374fdd27b7fbfc014b8dee59948938dcfed47169a5b2acbe380e02", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "55f230ea818b01962d5f545f49e893776fa5d6c6b2bb95c78dec22b7e040b4ee", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "103ebfb2f9506a61f3ee1f25de8345048318af26666c0cfd98b25898efe6125d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "7fff8e2f1f1471c82d2029ce0fd26dba010fa29eb074025f14ecf154348b6442", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "8004f64bdd53564afec8f5f290617fcfbd2a71274a84116b0837bc079601cdc1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "f38bed10be867b76b284c718033e7d6de592925bb0211e04afcd31247c334f3d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "e500416265ceda3522cfcc85e5640197e53d5eb2679bd1cf3708f62ef4af1abc", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6bc4d61dd9a8134b8c821c800e91cfcf15559a03e9b03e1e9144debb5fc720d1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "30e5354089ce5519ed95646fffc9f3468587482a19b81163b719d253421e3645", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "20d6ed18dd6584879fae23768026fc50d70874a5a68c595251a256d320334e56", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "cf9e2197fe85422b3db5110db75bca948cda95d40917ea0c5dc4cb442d0afb98", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "cb14f397c92ea679413d31b088e6ac149f3ac2406f28d5c07ac939531e1c3f7f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "0c706c1b116ead8623b6b667e57bed1bd2a43abd4b4eed510d025085a66a3e4c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "8696e425489452c226a59a6c6ef276f3faf80bfd4e1e1e868216b88f000f0260", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "933d9466accabf431929e82499f29c29b37eb39b0cccd1b6a4a9b022ed6328ba", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "863ed334a92063c27233556e2ebe71c658d99d4a454ea2a7328d97200b4b65af", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b25d95a6546962059efc4b3f7749546a1b938c6084bd52a2a62322cfb4e522cf", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "382511a667f1cb2695c1fd140c3e1960f64d034c2cf94f39c017627bfc2d12ff", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "85a84af1b63221a1d0aa66e59a6323e67fcc25bc0f9599eeb4848f602720c3cb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "d45d875ec1ae14bb86f68673f5e5fd0597ff48cb3f225daeab7bd0ab069edc05", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "10a6cdf39c7d1c4f90cb7b741429c13cab6cb6fd0ec082a82f22220bab185756", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "ba43a9c316206f12559022c1a6170842b5abc1e4b9b31c41cd183ef71670f785", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8a50b6cc3eb28bbb186c4e113201425392ac8ebb1bb8f03e817b96b8246a9bd3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "ec4a77e34885849a9302779fc47e260c4d943a2ed4f8e6f962769a538261ebd3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6fa6739fafc24cde1d9c820bb5dc6abd94a11283fbf40b5967a29c34bb60149e", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "9221745002c1e2d346d9822e358a13081db57c6a4a459eafbe6e83ee3a037d23", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "d9d3cd25802f3d429d665f1c987d4f895bdd03ab86f13820282b4667991b9285", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "236dba354336b318a77a8de3ef74abf6fc703b6e044630884b581d72ea6d0963", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "1333ffd148cb092b927ee65ab020151a0da3ee7cb4e8166f097b1bbb2e7bea4c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "590a9899c3a3ed23041ed483df877c61e73a4040849c28d9a3dd29db76a1f162", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8738ce1102d51b8ba5ee0323b89804d1706473051fa0cc2c9c34c62d8c1cc2ac", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c69fa09b4dab1bafbbe38237d72d5ebc8449c9e188e6d4880136338c31a1431f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6ef0e5fe5f520320520fc33df8d91d2fcad0f8863c48d71aa9428ba482156cfe", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d7944e2882a1c71850f6bc087479976e7be548f01c4d7907776fd98b6707a0fd", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "01658c7ef419d543d2117053de5ab97e6886c8957a3623be5a52c5b1d66d8829", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "0da2f2b6bd625bc5c8f9982ebd83f604748059a77bc1a49e857a07fd24968a0f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "705b683563a06d8eaad242a794e5c8683d41d560a9642761d183e79d85510bd7", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "406e9f0bf3be42d1f41176b0d1f97b7286e834e1d15b5397904f981cea9fc5e0", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "24ac4be4d6bcb7cdfd372bb3441f10563e13fd684ed3fdcc79c0c8e97830326b", -"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "eb0077831dee4dcb6d6395d01ebf1a4eb78e05f6864cc3247e5c05b936656053", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "ad4a82fa012b89ce6a027b88b3170504f5372b93da947517078edbc647b56bad", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx.py::test_information": "44e044c3f8b299aeed155f0aec66f60510aa7dcd3986d340c76ef128de6a428a", -"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "d242ec98f96d0db41ebcd7a44ce31bac38637ebd1103727445a068118c51956b", -"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "c76e1d787c589090bd950101fda86f62dff83e70d4f879ea1fb0519158c1e95a", -"T3T1_en_bitcoin-test_signtx.py::test_information_replacement": "ffce40135620e220930713ec3ec9554e6ae801aea34235ed0ff89dbb805c891c", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "924ed54c06fd791910d8a43e0b7c6f39852b3406167045211dca4e495dc69b05", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "8eb547d98a20c6333c50f507b62bce5536ece3b9c2a6ecbbf58f31d2fc45b003", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5deae35138650618ac4df74251ecb300a416addb1af5d7495b0090a23ceede5b", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "2dcdbdf6c4c2770d05b751e1ca1f1e33646c3f83227e298778ce5bc1fb919bd7", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "e66b43aa7930e28285bcaa14d8ce3a1787a67648c17e55115722a2f90d375af8", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "4210ca2bfc63d054923e03cd9e12a643e0f18a37df2045749911037e262fedf3", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "4a3b8660ac30c4c91f5dbc9b58d02bc8d60a160ae255bafd3f56e4c697afa183", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "6b48450b917351d6f25753b29b9df6663c1e6dcdf6a795aae5986992f002b30a", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "e198a73b60c1938810862a5e479806ac4d768f42c76e410e842cd89b66e63093", -"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "033c92c6af972e9e31cee0daf55e76f82015b960459b91cab58535b27711909d", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "3516df019ae876386583e8176957310b57a2a37af3b7eed728fe4c7708c69e2c", -"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "51d00c0953cfac7ff286cb5117e56dae83e9ade576e77f3be8671ba7d9f8321a", -"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "6b705686dc78bf72f8e9ae125b0bb775f814c2f517052cffd2cd3badc9d0dc3f", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a6f1c9e302cd1372cc642cc0557d7de5132ee8264f27eab492e66cc0f33ab88b", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "05d642a9018b50279e386b000ca5591732677370d5fdf1685469ae2406b3bd4b", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "85fe2a297d335bfba11b3e9e01a2ec2c9a30730ea06b967983ed4f4502323698", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "2007e7cbdb14fe7db3c745a20157103855ec65cb932ac3f0c613de26e3f7dd4b", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "477e69874284b2a1ee6e508983eb784fe7742574cc05c7987f45784e2e5d871e", -"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "a5b47af1fb057b9384194dbf35c9f8de47c793eb26511028b405be06f09aebae", -"T3T1_en_bitcoin-test_signtx.py::test_two_two": "bd1e6e9b2f4704e1baf777a41e6f1e576be4cdeafd718e454cad973de1f0a9c8", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "73c15b8ad493c3d7b1d9885fb1dc5a56c68bb6a3d4ec9a3792c03be26795c182", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c74d09789466f3e48fa92ed5bda1e1dbcf7d9afc9d16df6061fa82395c8e89a5", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "f09a0f6c8c10df04da3ceb63bb4d054fbba4fc6275ee92a376b53d133ca648e8", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "af649cb645604f4122920ada7fd8b2ac30072a8ef48aadb202c87b1f198fb0ea", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6ac68aeb33f8e70ed439b3be24f1bc29beeace17a0a5bf2fa1ca89852d1576e7", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d975014bdaf34bbb6e48553bed41c3544529e907a02cebce1dd730f1ba38fa3d", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "cb88988daa8afa19885d5eb9f051a1420a3a667b429417e1d0d0a6db6b5684ee", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "5faa3de360408600bb51e48b59c9be7910340c2697af97ec7b97d64613024d2c", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "8a025c4a07a30fd24274bb200091cb847810b07db961c8f73e4f5ea79da9cc9d", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "7c861af51673abc3516f25cf2f494951cfb26422886b5359b6c0123ba83b4e4a", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bc76b3b033eab274e39d8f56846d4eb1a6a3cbc97b2bb4218af62840a0d294f9", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "e630e07f6ca5724a6aa53b31b7b17ffe347d637be3f54f3a51e05bab8cffef6e", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "651b9abda274123014f55118ddfcbf0fb08ff52377c0079e5a4cf6b7c13d5225", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "191c9bff9eecd6ebeeba1d3e1b1701d9a6750f1bc9770f0a886936e19f6a689e", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "b0b065fea6ca2acea50cd30b4637a4776688448ff0d86411dc6957de652162b8", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5386d21e156629cf7df3cdfd98074357d93e025b113f74e89f271f4f847298cb", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "950ba42994f18ee1b96786c8d49e33449b674ffff4715319889c9fb5f34a234f", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "4c3cfdccd4f2dacb291d0b3c6d87baa7cdc8f9afe4cc605d9091f9ded9ef00b0", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "b3f3c1221160e0d9bac89bd44fe10cb587735585628ef6c652213ccf2d92d60f", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "27b61dec1412f9ac6bac28fe1914d76fcd2fcbc1a9054895786c2419ea50d9f6", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c5e9f2d4508dcdbf7333531487209832041e7d9c5a7e8d9fe9d5b40978c2c885", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3278de4acec9009035c80f1a9cc4dad11570582fa2eaab30aa7c034d4f8d4371", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9b9fb6db5b35261355f3e335057b7086dae18adb09d94c446294004bc4016876", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "da892ff4e7de75f6b3c1fde48c915b4cfd9da2c3f0052552ce0b873c85a539e7", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "768b6294843581c691d590202a8ef11c0040fff3189a9b0cde91b1a49d6df87e", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "23e3f995af215af80d9dcdb00189a0545a77a40bfe55e195566ccfe41f78d2e1", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "21aac16e5415731c271adb2e145ec9cf6313bb1205612b74f885a839fdb26c74", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "66e15e830579ed547e8c28908fcdbcb2483658fbb22ae138764a594c82f60053", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "fb9f7cd2571c2c72c56968c57fd0ec16b83d3ab9f0f5be9548d055f37e3f2bb0", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b67260417612c7978b42bf0a7014a866152af7e14b0f9159eb2b30e450e10de2", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "dea3bad8302a74441357ed9f49362a2a395f561c0dcafd0a0251381fde16da06", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "1b0378c2a799b0b890f1bc8652035d7284126009223f976e5623fdd0a8fb006b", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "4d157fa6e9c1da33a59735186b756adb7e02189efc642b7732b373b2c7e0bc64", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "bd53e379f2e16c5b75b2cc6521ffba666e474f18bae90205aa773d3b6ceecc3f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bfb6c422e7a8aa05e5e71501ba640b4f6008684816efd86337b46afe6f75057c", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "557523aee043cdfaebe92f63dfbf89d0c7d4e65ad583471c18b91e66a067377f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "c0f93b453f71ae7f9bd28a27cb50dfa6a99d1131126777d0f7957b194ef2bde6", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "9362fd8a2a4db51618a4be853623a75e73541aef5d329b2f34729831a3c13bd1", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "685ae658aa7b6d7d0e450798dfa88212241f89dce943e2dc7733e9ba0f32578a", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "77146b5285f8f5cd30307f66929d35cbc2c51fecb78cd6e0b2a491b59545b6c3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "a50dbcdcf5dd7f0b4db8534d67f3fa4c079f37087ab71bc9541a652514acd35f", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "6ab1dc24fa8dbc1c88a9937882069b33f0d5f0766e99faa7c3cd83709839a98b", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "9023903d91c453cfa696777db99334016385832fa47af3756a1aed58d097ae77", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "f170d79bdc23af7161682637840abd2d271cb73dfcae575f0fc8704904fcf604", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "602ae135d5f67b9821d28c3dee2e55c0b30cb6cdbcc9fd7970d8e02f06cd6b7f", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "9aefcc92153b1053449dccdf9ef3abfe1c9cf82b777f22340b434ecccb564695", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c4d99122211e001a4dc6c421147dd9673f3400af44b26900e4ce1ed49ebefb54", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "27aaadf7e3dcb1077651274046e4a4e53bcb708e3a140af0c3c4f92006d4ba98", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "1bca15e6a93a162199bdf9155e12a23c34fb7611d395ee1093735332b3741a5e", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "72b94474858fd569d20de2a3324f5d7b04dacad3829c4a4499e7c26bfeab49a5", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "11d1bfd3051ea6389577abd22bb5700eda61da7749af3a3732df17f24b3027dc", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "2b4f72fd6274d1b3d51b7e4de1801b4a1cc55ce7e2b7bef9be152347a1e39ee1", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b62b6fde11bd95904270d2be7127728beaf9813cfb3ec94a1e128fbd19540a16", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "ed223eb647b50559e2bb0fdf1a2027d735f9db79683dbc53df567996a0d8b180", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "22fbf18572b82a266cf407f49bff21f05ebd777cfe4c36eaba1e428b48135cdd", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "16d836480b99974630adf2a6afeca600cd9dec2343b686a20e3c2b5d854ad8b1", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2f6a9c1392ba334cfc9987f68687d32c12558d08985e52ad71d0424014238c06", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5647cf2836afd54d618f9da5820ef73071247fea8e50c87b5c2c91c733902321", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "d5fc037cf71574e69859ba782ec1a03279acd26eaac25b934a4d913230931de8", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "06ea8319a958a624a9febc0d79de37e3034753924b2ee015f2cf0ec3995cb669", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "1c2e5c70e7a94d1009315e2dcd147612d848e320ccfa2eeb747becb4af796c47", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6abb97c5b7d3488b7d30018bf970507ada2f597b6b9b62ee0d9beb5d422e254c", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "2d6f85827d80251c7759b5ab75ca65640d415d40877ea5d64a677190b8715f69", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "fb46ca21976ae67dfbe73f5057ff0304bda4f4000c341fcc8bf856d23c2d177f", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "0117f15331639fd915916dc9fc33df1e5fb6ff419d7835c4fbfa63f0f448d5c6", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "fe2bb23c5a4f45d8abfaa91872c6a5615f03e6352d8700ca8b9c9cb4825b47ec", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "888422306be9265dbff77da9f74faef242c77304f3dc29b874a7e382497f7799", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "0482e74cc56113072a40fe0fc9c77266f824e5bbd40f5e0456ea2e8c05045c89", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "cf22932a05a0db1f4113bfa793d507009d90a48a8deda2b057b35a8bab2e56c3", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "3e2a3c1a7b7be9a3cce9cf94d10361bc12bef0c63b1ff8e9d08202d8e876dceb", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "ae1867d920f8e18e277e03794d0566bcf1255f55ecbd8ef02bd7cbf8f14e1239", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "6960accf077f4a754bd318b210a10b7d00a5f9406bddca832ba9e2c91f98e7ab", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "b1f9f1864b9f327518c1ba3a1770072bea7d40c5bde442202206e2fce52171e2", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "e600dd4ab19d4c55169cfbe73998fd3294a1fab45a1323289478b6a17b7f152c", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ad1e3b8a0d1738020f002bb24824b529fa8ccdcf52cfcea354fbfc9c88b9961f", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "f37fb86060db61d5d356d0cb2d4e2ea5e39172b6f314a63fc3d4f530f5c99beb", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "93bf717a8b4d4371af323d07f0f4538539a5199f8c811d402445a4f08789abef", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ead03a1ab9def68c0c41471fc02f346d6dee943c9479bfe24d88a22e897bee63", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "0a7562efc888c57ced1fbcdbea8255bf604ef167098969b313e9a5531203670a", -"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", -"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5b0b0f76aa1fb8eace9848f3dc9fe6e3e4730a85de184192fec9dce364bbec36", -"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "921df31d90290b36c1c650451c4979a85637bbe3e2e918d09d826e63db9eb597", -"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a793235b055146b364dab3842f1364f1d73a0622fbb6f2688463b1eeb46155c7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "b7325f5034455301c16ed0ee5799bbc26669eff127139198c4199bb94968a385", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "28383f6ff4094be8d3ce786556bd40fc97c3ad0b4c5879328824084ab4317b86", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8deed6efec61f0237dcc1e5048492e01d55c7bd833f2c70e4e8fed46e836ad61", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8ed36af60e84e1e43cf6d4e5c3fd3fff0125005ecb86f4a78e240f7837e777ea", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "92b06620086f0cb3b61937db9c942d5eee357efa3fbbd2f86781732f2f692f89", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e02e6bcb1f9f6ea287ea5282600f622d52522aa463b48cdbb4ca107201e33d2d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "115d5b4e020583299b990d80068cf91c7cb3a66a9911d75ea1b6edff41e18a46", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5eebe2c33a6cd56cd926da5a8b525d862997df17846ac49ff137947a5034ef83", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f7d576e9ee746008a36d2a19ec7832cb2d107193e77303e5865ad4e811ee52ef", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "23670f641c3901310bfb3624875ed6188b04376169062062ad580108e4d85052", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5c193e247cda7df8cf60fc1b9a132bbe4f75145023aea5c48fa0318b84f3f5c6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b3f09e86d3eae98f8aa2800a78171e19a3edd0f49aeca1dfdc9aa6a5e08fdf5d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "5e926670cd17c32366a14ce859c41a8d7b803991b7680ea2ce2f2aa480a17821", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a51ca1c7df82ca4094847a4d1ce3a7fb675bd52e105e07d2f494631d5c6ca11c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "530b5b42f2d947a67c7439b9af31393ab42e70b73ce7334dd35b0d4f7fc6680c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "90dc52fee3fda8a08ca0b5ec6927c56bfaec144474df3c3184acf9f327d4aea7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "894a23c78b4f72dd299f07e7fbb21d1fa3669ac5921acc2267eb6f40c8321b96", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "86a2724d90a4b32bda758216b1fb9b1b609df37d32031af08e91bfb3be40d61d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8ad632a79decdd304a270a9d0275ab43433afc24f08415c0e2c6570230af2a88", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f68ecca4dc2ed146c83220e67db6bdf2d684c54c73a243da05fdd1efedcafedb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b841eff7ee1d641a7796cf1e99dd260f0c176343ef0bd8c7bf697769430e0d51", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "6176161d5744d832e208199e964b6452bc37d782654ba55d361ffeb4f0fb2dbe", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "edb0279a09e1c36eda30a3d48f0de6f547bc6213fa588fded78c03c7b1cb5630", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "432be76a7cedfbd3ac00de037cc9074332105770318c7b399749c7551b0b24ea", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "5438e6f171f6a376e8832f50fdddb5b9f584e55018b85fcee8dea962b152ca1e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "79c1a4892f1f5c60274e3622a58b0479a678c3104d3677d4251c56056629db12", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "911f9906068aba634eaed98136bb4e98c4a7b1bf3aa4fe1390a872f1547edbb8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "e429457e523144e8ea90645bf6dec8ee105e02d18eee3c4ba414c311e1ea9c5b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "42dfa0cac9ac525a24d7a1770f66d1790352b1900d614a50faa24fc7a07d9f9a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "92a896d7018181dadd4c49d4d01639d8fb454403066afff75355d59888c07b02", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "aa7b2e537a9c7b9510f8298543161407ef4596088fc9c67c57f9a014b97c000a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "4ea97f8df29eb686bd4a2ac101aa6ccdf4f124ab1e2dc8b913b36e56a7950d43", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a3259e596d5f8c4ca8e9ba4de2f14fe30d269a4c3d011778b84f73ae4a4c80f0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7fabc235b262cbb2fa45e42aeb900bbc1cdd8a684d2ad5e08b51fdb147657990", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "c40565fd4fdcf558c29c67b25e2aaf88e1e41c3d35735c344ee09ec672cc1266", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0053e85ac2f8d5659d098f1d878fa7e37d712c79d3bed8a596bb639fdfc720e3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "37afe319cc51bfd117eb04d350e1d2a174030d0f21723eef23ccec7eeb887bfe", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5a9e1aedd3047e3f741f88549fb2497e2e9216ee326553efd146ae078449a5bd", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4b9aa38bea642c08c31c946baf12ce209b5106a5d8894939def0d899c580a4af", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "5dd80af476ecb417881167555c48b0e267d575ce29f952dba73158861de802b6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3acdf363fd73843b24bcc482bbffafc0f38eee9a29e1b46a2d101e19851b77bb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fe53efd4fb003b92c0ec7c73e4f5bdb4e37cda1b42bd86c319328d127e4074ed", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "e8f224fe8adedfeba19c84716af802720cb4df5bb2e346f58b7e9daaefc1a129", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "dca5729b439904a756b21e18660a933446881f9d4fa47b2b579717b9d6a72e52", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "9bcff6602d53b7ab987fa11da5e47a6dd4c1ce458af332acf93e8699709cd3fd", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "151fb9e8eb4eb78c1433de17883440f658661137667733b78ce46027e29f856a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b75c9f7cd0741200af7dadb268f07cf29bb80d1b6b3ee5d7b640c31b5544f41d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d0aa6f83db15be9e81e663daed4ab2d08c7c4f50fe3947a95607ace47e33dfdf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "0f2826893d63d9044ccade5681fc1c1e1bb132fa18df0536be1809333bdd5eef", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d42e55cc3b2d396128b774a28fdc7e02a9f38497e5df33ba8bc544752e331766", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f538030a0b25cb9b2a555f52d1e63fd66dedfce7eb0544838270f1afe3feb8f5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "96c6fa4c4dc664ef49a515f2ad2a01639a20d25d28a7d93bea76e1974e171d15", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "1b48eab06b558cd524f5741db98497d0eb9843f3d216f24e73c904b6ccbfc0e0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cd625eb49e2df164c9118ac74c8de1926c722b72c6139e3c5984f5ccceafcc55", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "321abb9c816c43d6ec44ad22188bb835505c706df4f9f37ea131e82dbe83451c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1e53c7f2c73c425437435cfc4b02b4240fb1e230a221ecfec39ab09d8f4161c2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "2849e68d49e69c8244813885f59021cb993c2f2f29110d3f2e129f4610827ae0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "44acac35409ee4a055229367bfc80d745e4847fdb631edf7621d47d7fde7d34d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "462b2be9aa31806ba6e30ec00b8542ab263b518c9871aeae10506b6b07a96b98", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "45137352430b89fee0dc777574b3c3c12b807979a00f277bb2e21bff2ad1c8bb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c8a2b7c44515e1faaa8269ac4c60f1f6c3d22827b924fbd564fba3c8b63b0db8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "487484df2758c739067062dc2b9e3080a5e04f8aa5c68ae9277060dccd1eec36", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "7937e85284cd08917b7db06c4feea5da46f923907a6240a86362031547841b43", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "faee9b0ccb1ee2b76b8fad5e4da9d6d3d8a6476128a0df91d0d47f5dcef89320", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "0644211c8a04a5ef6bea4867fa7f4d008786bcadbd4a22a2a32a8203ded4053c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e03d2e13242ccb5964145a256cff5f0d8ecb902ac8f040b6d5dae575be18d262", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "691b3ccd065e0ed3fb665ddb6e1a6cffe67d7fe74c859f677819efd8030fea60", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "dff434abdc2e025c5de3a4bdd0a8614f58c27d3778e6062e951244c9d4c5f2d0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "97e8a0674c484269b3755a87380859a3d0cebefb95c4678be5acd7e4b6373795", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0d572466e8578b2bd6152e3b20ce33aa9ba69abd7da0e1ccb522108484ca53e4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "361e677305d13f75bf0a71155f8f384cc7a85a53d27d92b662671354deba1756", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "a954b7609d2c5a898ad54f1a15c2d7f190d4e2fb5eb828a1d7a2ac107b87f10d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "abd332668db3bf105d3a8e55fa1ccf90b4f1acb62e5d1c2860f7ee2599b80534", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2994c65408ded3a3a389cb1d3fb7fffd72f6e24aab6b26f6eba08315c09e9444", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "288e4e13bb3a3a7948e925dcbad8c61cc7245c52409818bd2178b49f0c230c23", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "614cc13a64f35ac3247b83440cdea22a18257afef165fc54d41917500cdd409f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "1c4bf364e403371d1b4570a6d7a2b8f9ac231851cbf67f56f64fe350e0edadd1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a9958771b2394aa3d6488f5d28d0516fb2632997be4ef3cfe272d8468b475e70", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8281c20dcf6ccadd0e0a0db53adb4641706dbcb48bf685762173f5645abfa39b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5dafbc14364b371d938a5dbf2dd1696958dd68fd2f10702dd512f5bd7df02602", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a882c9e5ffbaca9ec0e7f0fcc275270268fa9ef3c9ed135e543ce39af912cbe5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "d3c1b530540a57f50020e62cd9acfe8c2d64d8c1ecad74226e9419876ae73f16", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "262022e068ac3dcbba07b3451e9b670187bce739b85cd87835b18c544ab66b10", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dd731124e63c9856d1b3ca05f5b11d922b33bd82db7535f7fa8b135213f648cb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "969a01934c3f20e57c1ef3bcccf14499c15621489b67f8e9831dd7365ae3c130", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1b397226957de70e91fe48344b86beed80d3c21fc5bd2b6c2b38c1ec6d6a35f3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "99898cc1734fd63bf4d7906f30087e77138857371109b4c58fcb0aa8d312476f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "bd9d8a62ed8e4bb8dfe479f6c14d026b41a8b5f8d9a65c21784306dc208f4cdf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93a3099eba0179a1ac48e751a7140dedf77cfc572fcc90e8fa6c9f110ceb2b8c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "027943246f0638357411b1195bd35a2f0d9a976449a7efd3d8dbf26b8205410e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6173e8a3a2165a0f54bc124bc505a7ce9aeefecb07cb0803fa22c7d9e2487d0a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "dde7f3743ec2e9bd7d441b2f6970ccda38c47242fd64440126ded6f61825f756", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "eab03e524c6cfe6f04d0dcf1a7010faef85d62720f9d8722e6e137e7f05abc33", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9859e1419d1a4aa46be81171ec835e137184d834d5f57ef37e918061b485ca8e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e48073cb63f1bcac2d7e5f8dcf59e3dc65edce7205eb0f410f70133d28779130", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0942bab8dc494e8527d4ddfb9411e43c43d5960feb16018cb45c5ee2c6f57770", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "eb01dea0983af584be8ebedacc140c9e5d295204c7f43f604122abae3ffe8f82", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "4ec3428cbcc79e37db158ec1769f751044b5d3936bd057215c2076ddc2487e21", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5598cb3d539a85ee72edbfb70583b43b236e4638662de28bfb642bdd93a6fe59", -"T3T1_en_cardano-test_derivations.py::test_bad_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "bd5251d6b4525252b16983691a028174d6c083b2c062bb076d6e2f242e470812", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "211a2ca1fc8feadf49d0212d66c4017a12f6860e479cc9da494d3a2db9ee4a40", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4e93343b9e86999504bb3b8e423c5620eb53c86a9fc82f47af142e18d70a457e", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "a175d8c11f1e81eeafe332387e79b3f4bb056e4b1243daa734ea2e9a484a449e", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "aa80e685410e23559d8273af3e08e53c499326759206e52fa45556b02f4abeaa", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e754f01cc31ef7efb83621473556fc0a2d81743594ef62cdfadb2e8233c12ca7", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "3c6c11eeddec4f0438c5180ce4cdcbf69ef1cf04470e5f0dd38a53e17fd68203", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "81005c114bdbe998054d6e94b60bad71d98e7d38715f07a38fb64ce0719bd9b7", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "d4cb9b8254b7f5d42b6440d6c1d8c7ab4802850c0e3d906b4489302da43e9981", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "714fa46f0617fc163cb8b7fd2f947f3db9e2e7f43202e77a39eaf612eb3b057d", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "48a066f73096f96a685337d3942ada9493abe686f5bf70a2a224a999ba5dab3c", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c3af0c697cfff8e404e6671e5f77f3b556386fbacd25eab158d866c21c6148f6", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9343101c53fe8b7360ecd5a102b3e507aabf29f37eeb253df3c88f6deecacb7b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b67edca40129904893563b0c85d2c86398a078cb740a3ca6e23d6489afc1813", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3e13929eb81c8077e946779e4ab3b1d3b5a461bf5a4cf3a886d6ac0a1d5297d4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cfc2ff70d16e4b00becc081367494ef3ea66f2702b318752077ea1002e6aa972", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b37e039e74b17959b0d2f13d60bac840956b655b93d8395b9dceba54b4e0e504", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7572d0edd262f438a53b71eb79f311c0219cc472613492fbc72797d879f5c1be", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d9c57a802003857f97ffb5eae4a42f93d745c6d574dcad17ef5408bde9d54b36", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "960cfc6d88ed3325ec564aa9365fb20f489ad0da15acfa2d9567860e798acbbc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0d1f0bcc4aa3fb97b6b2cf9748a0129fc2e45c234243da40b5fc19c34f093ea0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "31541c99c75d9ba3cc057dac8649890544313ee4dfa8040187238ca3383dfd62", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "cf660c71ddea5035946153c57114466d6ff0ae5d4e0af7d14516f9c26f61b517", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2395691691124886700515d814ac9839732a849cf5d96b8db9acb196c5289d6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "f73a3e9d253d92d0be75e8d9670f57cb6306abb2b89d5cdf043adb7e1b4889f2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "b930f013a193eca96f7692223256eb858c060e6b15029df322c7d8d9b6c02422", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "fa3cb8592caa01cd3f4121dd8a1870f0fbfb2280ef5bd30224bbcff6e98473cf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "9269b9465b1581f0629cd8b317ccf57b69b9607a926f01d982d6f6947f59fa90", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a6ef1c68694d404faae26fd10c501debf48d56df64449ebbcb4dd43a5826a210", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "3c045328c328729ae658fe885d9aa49bf39af763febeb0e7826e8cd18cb4b5e0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "fed09cf963c18cf146e4b76e45a76ab8517e92bbe937f6eba6faefddd45169d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "46ca1f5850ea62e465758494f42d2970607ab9c34e36fece093d50f901c9bd69", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "585cd801813486920555fdad9184439b3b9802f8eac82f7d95354f6a34fd6969", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "48436be0688c36b7a7b372339eed6eedd367b42b2429c2410d7dd85b28072323", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "5a20fc3692a0f398948ac869026d8ae313577495ad804ab3bd09638e0b5974b8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "a4ec018180fb251666cca02e2525d98e97fc510313e2aa44baa13fdf373f33bb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "97c3bdfe30e901bd5b4938e4dc19ebfb788ef2b4166fd77aab99d1af1e6d102f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6497a875d1d188bcbf0293e303c9cea13d26f88b12cd1422239b99aa0f2ed3ed", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "31ab7ddf5da2bdd7da4f20c39ae566f0fffd3e84cfa7dbdbe7ae2916482809fc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a1389ced8400ae5464f921d39bd388ee855de605343c71235097dd0731820db7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "42eed639788adda40cb3b5134b97f02974db0fdc27b87a686d7855b5feaa80fc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d3bab830b543745d67656d0913f62f073e315293dffe54382024e4c9fda96b71", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "641709e3e10fa91ce21803ba5a52cfc434cdd3578bcd962164bcb99d3a43d6da", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "ca9b3f3653f972ac233c9e8c44d50b5a32397f1418d64dece3c1dd60b85930ce", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "178e9ba04a5ccbce4326a33bd11fe80b2c8d9e2d16287829a8c48ef8570def7e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "dbc002eddbb6d4a5f71eb0ca8da65903837b2da73201ec1714e3124ed2c3e064", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dcc12f084e836ace643b6f503e60b003c88c419d27f483a11737a9e9c6250d17", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "8c7a81bc9e9e95cd987b6e61036c95f64818b7c1f77c684aabf78297ca2a5ee0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2c4a8063b68f4d1c6b1b39f16cb39c9adc7f0b2176d39ed4e56c12b7129c21eb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "5c53c3396091ddf0f8a716f471e6c2740c1385a0a04085163299c1ceeeb89092", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a4114ed4ac01babea79a34adfbcc0a74b85f4b713af6ee8cff6cc8397c57e59e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "b69e40793e7ee2df7db1cede931da022fcf9aac5dc71774732c542745ed86450", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38bc1a59a58e5d66e4fcfd0ec815765445ece013a158997778042417dcf236e7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "94178bb10492c182aa49e0f3c9defa06da9a4a9029bfc500438d2505a2ff29d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "3dcc07313a80489e31e0615944cc196d0fcc8970578476b562b91c367e282b09", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "7f0b5327a83fa2f80c83beb131182000c2d20bbc18a563ea2e2bb4783f583119", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "6ec6c8869de3eb9cd36e821a4b8509331ac4b4f49263b2cb5d99730682ed713e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "f79ab687372b56b3a554af84ae69fdd56c4835cbdba79793b80e54a16de27798", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "b588d1972aba821545fcf4b60c308fe945fa907f087e2db280433b0419156b22", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "231ea4e3ead93f6785985688a996772e6d9d73e008b16ad08aa2e077ef59af52", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "b775180796400c7e96abc5c8d07a937adc0b1506e21154fa8a6d2a1288df30e2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "742d2ec5dd248038f744bc22a63246b06e810e88490d162dc8afb2c3a17a518b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "27eb9884ece8027dc01e64b3367c5ae79021ff0b05277d772869ea1607a7f111", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "10f5a3304c468fe5eca232d508e427023d9276ff5f8576c1c5df5e263599bd20", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "f722a2a9d9a92911063f262e8122896ef129b15b6e3e7bfbd7d1773eaeaf5890", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1df3cf734d6342f74cde5b48d78e3a260be7dafd895c57cdf88154c9b6899d33", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "eb632b495afa606d4eb03d0cd449859a659c5d40ad8f6ada7b33fd59ef163708", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4312df9c0b61cbf8e29efae866efdb58df2a339adeffde75ea72e01259a4b4bb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b501c4b73b1a745c96b8c9706f28ec0bb06d5235e5739af83fa777aa2d0c7d41", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e4e1a5639f4f1c87505dc88a390e38c15f421ea962dc370f2df8aee075e7385", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ca56afd69ea46ac474132a124c7dd8e11857275f728c9a858f38bea64c9b9e4a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "0b1e114acd865c585518eb4f2c1c919c4b1e083a978344181d75543380d5e366", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "137fff528553be9c8c12b08865441f954d7423b96b5fe5b5850cf3fbb86e2aa8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "28ed27584c289daba9ebcb0b5cfa37434fa7482877b87dd5b17e971bb0c22db5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "399d21207fd15392b2b1fb698eb1ca23330e14cc400910e8169780dbcec22b67", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fdc2b395cbaf01587842304f4554246eb8cf6f39cb3960d34c8aec9a382f5328", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d7ff337c6fd0c7cba6f1d9f66fed32eba55bd4416178b14ba14de11352b9e3e7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "326faa34ad4e0e092a8a446d3603b06963852e0c3baefa7fdd20d3a1c78fa1aa", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c83aa4ac945a5e425d585a041594324c8b11d28d34a86dc51d9a77ce9a35a51", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "bd44276fddeaf4511fb7241a65fad11012088c168d26ebe314fc1e0c204edf1a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "50436db43e95d93e7f6ea7dc0e7ca0e80dd15cfbe048db642c69397d06b1e115", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "70f4751132b94bc1924d178b613556b8106d6627dcdf51bf8a4785f6bc6dfadc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dde4b7c2ea73199f674943b01e3cc9e1acec55f7a9ca28ab8c859ca91640a772", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2059376cc7831247e94634244bb7569cbff6eb5eafc8474875a6073f695857e7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "b182539ac4d8a70556e2eb004723bc07d8ed218e7239a6e45f482e65b8b8a426", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "8d45248ed4f81d0e42054e39041a1fcc00863a006144147c9b0d9842476ce7c3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0f0095ba797fc8998b0d45ae32d88feecdbef4b99041e9f68ec85c0a172fdaf9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "0dc14651ad672280f3dcacb5a406444e5e1c706568fd390a54fd81f25e081197", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f5d2d5e4b29e094268b485cfc59d6faecbf09b72bc2252e14325d7e4a53beda6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "08872494c7b3422048efd15aa0fb136fbc9742a3229b5d129a023add1bc0751c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8433673d18ec3f32bdafa4df6e8936a03831354ee91b597cbabf0cecbb7eab91", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "abb29879f4bfc730eb3c1273082f5b9abe106f9eae3b3d3e363a0061410a24cb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "d6b60d525662db4f50820dd2aadbf1751d74640262ea5d36c59f7a291b64ec14", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "da0e65e13123933d146e70d198b5514b6222ac170939d4fbbbba84a06f5256b5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "64e61dae2757cf9f237493e454ae527c77a0a108a1fe9d92cdcc561367a7be06", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "db6f5d282c4eefb95b236cd1a08cb59c94167d9604337982ea5a97a306b9502a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "a75c7275cd4f50c2cf086d84af7d10ffbbb8082385f7e0d2a01dbbe10b0468d5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "8595d86f024902af417cf61d79752361f991e83dcaa06653ccc3e3a5bfe1b03e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "83f4c429914599c039dc8cc49ec9810670868a585fc968de9dfb1efb5c5927cf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "04ae909cb1220b008e46f25b0f3131dd27ee97defab647744f412ac6e1c4d3c4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "20e917d8ec872e7461b33dc59e9b77c8dc0c076dfcde4a864bdfb30a111fa0af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d408b986aa66f53990851d09d2c1db4ca8714640301c35aa8d96c3552f956d41", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "1fddb61e3c3a7fc0bd764b534a9d836a1d71256ba213138ca7e71f59f59e2519", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "210426af15bf66882c21b523bea7522d93f06f0a67bdd9ed59067edaa1aa07a5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "11b2bd7e0bff71be8c9c271770b59cd6b8c02d0b0500b58ebd8e61ca44768491", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "66c962ebc60a9d2bfb0a20defbcac98c2ebbb181628105fb89661578ac6479a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "086ceaf6c97354ed2de94ffeedce7a51c86dac8b6351228f692d6c59368ab0d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "96581a719cc8a8ec7d1299fc48138ace97f740645973ba08294439a354858f73", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a8dc52d68ddc7b418dd86cbaddbea42a45bf722e25fe477e24660123af8eef94", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "759fe8fda91115b4f75f56e4f95cc52f58ce099de2ba466874e23a6c35ff3c6a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "945ab62e3008545dbb6d6ea38595fc693844001d093c78dd969a7b5e1b67f1f3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c93d56711bea6a2317d8e14d4f93a9b0941593c87225bda96b8524488ce4b6bb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1e62b11c3eb59c4af8e7c66e6481a956b186a32e1ea6f20ab679f5abbae98684", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "0c3bd4ec49def1573df016b7830e5a9b7c984c58c25406054e74482769f07659", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "dec3fdd0efb3f3e163134a1043b5357fe686ebb9013ba4b9c14be1dd9164d434", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a3cd44951bb897630bf0b38dcb4f8ae3366153ad4077b3dcb0f17afc72d39305", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "787846650867f1ba3b58b138efb899b9de030dc07b114e1b448c1c1fac3d1ead", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "57812101e7daec78830827aafba09a9b7a6f6180cdfbc63448e46254ba896c2f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "da2d8ed785581989ef058ad4b6f0e71d299e4cb5937a163c04625d3aca8fdcb8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c7cb2b5ea28159fdd7f2937e49f79628d3b87463a7e34c4785ec676996622c2c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "a0725ff6de673047101040698cd855af16c8a8fa68f9a67c50dd23452d89f48a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "550bcabd8347dd8004aa0662ed213ddc8a463111474e7c7ceaf2e912fa9b958d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "fe52c0528b987d5901cd736cb3a6a127285b2106719fae16be1a808729de865a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "152476af9b8a7f96548ae0fe83c9d7a6344b570f72a75045134ed6dac36fe01d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "70df086d9d557fc7ad5fcf230e0232524a9c1c32c33d483722f2b1c7b1ced25f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0aafa2ecd08c24a6192e557a0e77e5b0abcbd4bf7e7b44af7feebfa1114e21a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "468690086dda091c024e7bac1c6bad638b4dc9c7c90aa2e89bcc3d1910167b1c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "be409a32f2a558fae9dae332264053166f0d3916ebfdbaecf80cc820c90a6a0c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "ad549b55dc4a084a1804eef07da55838b1ea51b37651d4a14c36dac63f7b81ad", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "c129b2eaf86090db7b9f69f4f7cbe5e2894879bdd476f97ecccfb4cbdcbb1174", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "333453ec30e9813548597d8d7e72a1b9ba8dc05e621ab45d06bf49f7ab344688", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "89f2f6e3d5d80799bfedf16eb153f67fd74530434e6b8d1ad2b243b030d1c274", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "d0b79fbb34282a310d7de6c4547e8ea1f7f7d81b594c2d3e594ca763f758914d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "d644bd53a4c9e966414463acb86d64b10cd2e18d472c8ac1bbc397c49a32ed1e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "b23d100a356038d67e4daf39f1e01207d66103a6329c9f659db91d4002937f8b", -"T3T1_en_ethereum-test_definitions.py::test_builtin": "c0da4f04e898db54461b5e8a5f29fc16b91f2c5f620d1dee2e19611a4400cd0f", -"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "94ecde61300f6f5257ebdcb3b62cc7f901c32108497878c1e9ef9104506a5f62", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "6370b3457fba40de0120fbb1bfc6554ff76e6f50f86a8e91f45d96ea4209c5ed", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aa3663738e87a951416eb07a96373cdab9e1dc78b4a81d38c90cce4a2c47e27e", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "af0d29cc411fe6a4f8b9840250c2435f85b29962e2a8929ce18fcba36674fc4e", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "8340e2f269d4a0a96c7bb0d9b25aff90241e24db218633d8711223b738ab130d", -"T3T1_en_ethereum-test_definitions.py::test_external_token": "179f43de25b6a293ff255b4f9e1d09d78df1a928319d9b5789931b7bb7371a61", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "c610a15399d8ec4d448a5a8904347e598ba7184585af296d4d0c3b6ec5df8993", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "cfd045d3ffa9ea1d1622ff50c546cda1f7678e25540c02b23ac3dae4d1a0dbc3", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "99b134db1b9f23de02f2f9f98dbaefe5d1b29e8f3b145c6544946c91a896e488", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "433d26ebebf355ffc86eac6d8146447790b1f4d8bd34121b3a631a8dbc30e74b", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "1be87dc3c1f639d9e0507bcd3836f2d8e36ceafb0500fc0c78e74b70541c82e7", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "dae2d0e17fc633e281c0cdf96663346e2fdc148899cfdc34ebe8143383864d19", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d5963af13b1a053428be488a3475b3e5b25634292f27fbe1e81263cf9edbae79", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "8b6d747f11a1bd32b00a92385bed4d638718e733e80ee9f145b0a9fb0d214589", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3aa63c89a2693aa70258f3a46d9aad78d5926a8af63d6aebbc37a2644cbd80ef", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2a03d5555eebb9b3cc7e78e0bf79d5c8b3ff991c1afb5db5078fb8f2ec486fd4", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cc46d5ffd339b76744cc822e950b4f9252b993316f36fa04a6fd371424c8dff4", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2737bbf908acddc26c12e3e32e2d25ba2f8af28020cefadc0dea035491cfbfb8", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6356dd6ec5475397ac62d4345195d3b9f91e0cdbcace6c9fd2067a1ef31fb44c", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "49746bdc089d8ffa036cdd209a0d99f6fe669d2397ce5a88bf30cbadfb0b5174", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2e8db4c9cc0879db9a4339556c88118009b919bb5923f93c891f65870974fb17", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "5259d154279b4007f26e44e931550d2e1750bc09be98478d845da9cd30dcd03e", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0d38df9e7553ab93ea60c080b5ab8a42b3809c637a4257d13db300805553bbe8", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "45e584bbcda03cf905239b8bd506a7b63dc17ed5340d803df17e02c3c08a3e07", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6baded0bdaed70ba48740db902cd7088fcd1aad9f00164209642450fbe92d80e", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "5e2dff98f868b98280d8605517c0543a6f43848dd681b525ed26f5da99d6cd89", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "175e5fc9017dd2c89ef55bca62773d2deef95dab93578aa061711001b7764f8d", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "ab9687262a7d3c1e621bbd7b5b2d1b486fbd566fc6c5974210800aa0a3a7ba8d", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "0f252393b52b5f9b4670dce1c16ba06640f84c9039db28b0bf0e0421e375ed08", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5bd656e64cb5013210c2bc189599fe1ed14110deac23043c38c736b98f137e63", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "5541c1bc7cdec395137a32a8c8a894f4c56eb55595179fc334c4a78ef178263b", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "80c45e65c861c1668f272398c4a790cc9dd0613aace21bfe554c9a685e2eae8f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "c6f492dc624460c76c78d367d8ee22e1f24f6627db61eb8dfafdc2c90e5477ce", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "dba56b7e5def913c477a5a4cd56976f17316a53856a1c4e6a5981d8d7972464b", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "3e4a965130a869c772ce2334b2fd1a789efc382dee4527f7eb4244af39de1a72", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "b55f2aa360c610e470b1af6becff9a69e49d56476b51dcc61de43cf4a24f599f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6c710f6210556bf2ded8a6027776280ec23b8724eebd99cb4332552d260a4c59", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "2d8d1acf5e6a4010cdb9feb342e10f627fd64586e49ad8ea57d422a3fc148ce3", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5db2cdd9461ef667c339619a42fce89a7e46c7ae576d83712efebbae8cd4ed09", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "985b867aeda08c981c8c610e94f454c8529fc4d14c9cb01881499784c5a4b6c1", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "1b201dbdd316979addaf42877f194481d2cc969e2620268e717c441a31c112e0", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "f612aed993f77906c8990d645a9bd4abfb30d57989121ba2e10cfd157a811983", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "5c9607cef8d99d24c5a3b1554369a15391bc58ca90a815cb37689c8f05f48dc6", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "46148fc0e4ddad92ddf4986b72f557c4316ff6a5d386b12a284a90d0bee46820", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "b7e5ac80950f2afcd1db8dca4d37236ab434e810c4e5b4b69f97bb073f14d505", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c175ff9348c8bfbdffed2809f7b8f158ed1e7896abc19b6191245ceca01d594f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "69f815f79ed5dfd60f009bbe3024d7e910fe37ee32377c955ee29b569fd4f58d", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "cbea228b1a6582289d57b5ef0017e9b52dbaf1817078039590c9beebe5ba6344", -"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9a89cb6f1a61c69a35a7c5f53239d5ffce3ff7bc07a2a08f67266ebd753de3f7", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "70f61cbd4bbed46fadcdb3405b47ea23129026bfd99eb209ed8c5c2c3a03dc12", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "88fa5319d82eda664c0e33f665aef10d782d6df42cff31bda8e170239013170a", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "fa47e3639c860f5865382e2b4ba55d833989b6a0f41ed81fa1066a57105f8c59", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "2f22d59bffb56e1cf2ba2353a6cd6c96cf5d04c95eec1b7d25bf223077008772", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3ad938f73145a9eae5303218fe98f832e98e4d94e525d6f3bfdbdcb698549657", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "0ef31079e8df1fa01e872a2fac2daa28b1df648bad515a69d9c6014951119308", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1399e2245a8348e03f95dd1a439df497c13a74fbb7e60b31b909c243c1bdbb4e", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f9cf7d0ac69d056e77d5b8eea556d25357b8bbf18576fbe537cf7c480031e217", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c68a2f214969822dbc0e96c938263565c38b0609743ff9dbeec33ee170058f72", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2cc8a86f5940e557e838c23f85c899fa5e21663ffb9ab2e5420a30c75b850b84", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "76b402adf767f9f34bc237dc37ccfdc48ca1c22fffb117ae8732636965a68d4e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "238aceb5cbd565e67696c8f6d73dc4573a3bee178ab66b208d85c32cf45957d6", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3d6987d4440d51bb4805d8a08e6cde9f6854f90d2b064553d42c1cbaa420a53f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0310349fb18c476ec82e058667d8e6bf69adc14696a3755d878e7bae3bf108fb", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "97fac4b6db7a446f53c3f1fa27ba925c1651a8831e76db7d220efbf414482139", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "3ee1b6b209c139b60a71ee0eaa3fdfe342290dc0fd850396a85e6a018cd95403", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "997848a3ecc4f0c5ed8004867a8d5deae48e832c12d4e90bc192f28394a704fb", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e85604e8d3d7b102215e6a18d828235df540d9c32df78e1b89b988d6dd7f62e0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "c81aab95508fd8ecdba3fe41778e4e7be17cda80b3840151839c9dc9329cb924", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "7838bcd3a0bbeeb327aa639e93ad0a938ecd3db27ae3086b5b8d7d1a2cf6970e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e31b5fed748116b585b5e86a6f9e842615516759cae407ebe561956d70afad35", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "2bd40660815fee49cfb00de9b8e64040cca5b61398b9c38a136225ac50e6830c", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8fcc1f1275aa8e99062026b960451521aa894aa3c78b7d04bef368b73085e69e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "ac146a14d60488c3f201e11398fb6ad810c088614a9ce1d529319812e6d4d86e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "243010310ac5a4c70c627507ea8501cc61c2e20728eb06bc796f093132bebb4f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "714e4c5f6e6b45fa3e78f74c7ee5e3332f39686f8b708a4f56232105bde0c3e4", -"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8bc38a773c40a70c1eb9b91a5d02ce0a61591ce9e42bd0073bc1395f560f2490", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4b89fe403777b910e365031ff4da4ddf844d8d9385ee6d562d8582e7ef270b8d", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "a82c3762d114bf542e9753faf7c54027cfb02c0fddfb7ba914eedac69366fbfb", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "afb28033e3093ee6d38266defb14bfe1ae36b727869b631e0b055694ab9097d7", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c4ef05473b0b238e68385cda289a26b8ecf8c86db213cc6b346a225a0f323332", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "de100f2d3c8cc88672a09795ea9324368bf2c6e5e6b5b76ee04f2b3e69a80444", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "0c819d43c537b170b91edd29dc1ec88b78577131c6c4a84d14de7cdc42c3042f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "207fb30e30123a92291f95b3769a217e05110ddf9f8c3446970459f2fe50b44a", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "405d4ac4856c34af5606e49a742235062b1550b4fcaec4fc4ac3ac4bbe998256", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c133a3b7addfda617ccd9401ae28a12b1681e9ce47c28ddee8ae78a3ebccbd6d", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e924f9c247e732fa9b727d71b844bdd734be9afcb4a26ebb74a4450153229f95", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "fac986a6b54fd0ed850fd3810df55de3dc411ebfa9520b8e51ec255bffaf0467", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "106a4cf1f71595f65c4ed2f12b4f868ba0c5f8b6dce75805489be8e6df3f39cf", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "63a2b20a46d7eb9dbe188f45286f0e19b696b4fa072743156a1f70b8c33d5dad", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "63a2b20a46d7eb9dbe188f45286f0e19b696b4fa072743156a1f70b8c33d5dad", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "f24ba4c504e12ec403aa99f19f9d9c78cc513edb2b7671063033902d089d894c", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "f24ba4c504e12ec403aa99f19f9d9c78cc513edb2b7671063033902d089d894c", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", -"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "b3086dafdda715fea319d90ee3ccab84a1728678dfa67febce1f7cc943d9e585", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "6ea5987edda7c73d7aac080833b8574626f016233c38d068185e8cbcba46cc11", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "25929f2293cfef2d7fdd8859bb16d0311c5532e02cc0624a893c50be3e16182c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "098c3992a0cc170e8041c0b0708a658f2d438da6dd829f38c8082d75a8d43154", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "e6366ba60e181360741bd85df2fa8fca85f4dad889d510a5e3365abe63f4d6a2", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a78b216be479757c536da26edab8960226c6b1434012d51927b5ea461a952de8", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e91bc6a2639778d60a1201e93fcb488714b7d38f037be31f0a41838165019a48", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "35ff50fcb49fc802e20fd0a44a161afe0a8b2b2f2781b409a4460632e884a83a", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "106c1900eb2e896139b514d9d0d3b4434858c6752c0b8eaca38cf7aadfbe508f", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a2c7a9f111cf2a8fd72d06c5fcc738fab679545c891db34043eeb22d1311ac62", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0a745253b75f0ededdec44be05e3940166128226e96ee49183fb6c97a3fccf70", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2cbaa2088776f1c7c735aa1ef767d33f8ad8ebdb592b6d9814dd1bbabd6da9b5", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "58a16c31957f7d540da34a30f54631e607eca1af6efb27a0b3877e49f77a9d56", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "7cee26436a0025a56eb1f67e432e4e707857714c1bbf5f61df60cc20f54c84ab", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b34ae9ac7b3ea7467afe774bf615ca1e1eab26c64fe5d25178071bf15e8d6518", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "648e45403ce412314e9d91625ace8ffdee52ff37ac99b13f4e86d018a024515d", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1c723bac9117d59b814785b772a9e34ca9cea4af02a8e7e9969a8ab6c07d6faa", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T3T1_en_misc-test_msg_signidentity.py::test_sign": "641820cdb6496ddcbe402cba9b3d24bee009ed212c6c1f54a87ba158b6b05049", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "f04af61059a8edc28122ad708eaa23a5f27441a63a87041da5bde604f3c585c4", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "097567f203b5c8090204f894017ba1676ff3d42c42b79915960d3de701422fec", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d081197da687ed543a4c0bd5ecc65d720253fcc15d2975c26b251bd14ab647de", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "0ac1a47b3ad0595e46a8aedae71446d39f1bcfa703cbe4d1681da7ea8c332a31", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "09f056cf1613388427d5f742910d8127acd7fdfc55d44e0ab8138e7a45852784", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "37e8936c92b8af777c1c6276a2c4cf2c556f6babf9ccc6ed03be990d065f64b8", -"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "132fcbf2f28d368ed826f8ea2bd096572fc9807c6cc9be8f6ada25847b0a0adb", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "81058e35c06ce19b4e398af7ae6ec27c4123c295b5ef030d00ff96ab8999d1e2", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5444fb8a8ab2092036224dd5bdaed2272d9673ae9da485ce7b3e3abbefb9e23c", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "a1d7f9b4248b4bc32ba4b76149862a46c3259579ddb9386da0ac1d451c666722", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1cc45f55b9a213d0aa67110c27852c403bcd6206e319e0f4b0bf341ec9f14127", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "6a57b810b4be43a92d396dfc3d605c211b6f1aa6787dc46d1187ab9ea1733798", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4e265c664333863752796376367463d27e0bd27cec4b769c10d008f043f4952d", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "42eb8eedc199d864ea39e8dbd22ef1e9e2160e6a82967e73860210bedc7365b8", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "812f9e504c5dec3e077d86596c11966eb0e7278ce85e809a3a2871e9933e667f", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "cb0a3043c74558979bf602a5b2333af7e87aadb789e78ad7fcd85e2ea2f90ea9", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb7a9389d4873ae48773caaee6406ff570e5f15676767391384e422e8275034c", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "0807d127aaa86576c6bf3bd1de2b81931ee6e266e99f04b7c628752c69df7c72", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b6ae624dacb8f665e4f03484486dc6b79fc8f5257ae49e91e62b656575486066", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4e24347e5228591d498da9357d57d5a01b5445d0943c21c8512505b5652406db", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6fccf382712dad39b25341c8fd4efd343993909083d2887451fd8d6b2e5e8c40", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "179d45493e23ccaa7e0d0b11ad5e5c9eb7a20a9005306a80c3406e68316f61f9", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "097fd465bd713db8fa7f52ee2f59f55dc15218cdd7a2aebf3f0c8d27388ea8ff", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "19838c4a131f4d62c7dd2443562f2b8f29f94f74253b2e4edeb96ef2e5d6501d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4e265c664333863752796376367463d27e0bd27cec4b769c10d008f043f4952d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3b546816ab0eabecfa5362ce145c0d98348dfc524a70005f38ea0fb586d7e008", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "971db3604d75697f6112cb359804a9d372a080e6085c3321d5207ba420832c6b", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0aee3f3ac01e30b4a56e2053d8e2a6f434bd672c6a07f4434c57826e55e9d555", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1d2a0ec3ca058c2c52f9b093b42976ba377bb634fb3483766003ad561f34c89c", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "3eb4d5b1f25458ccf003fa726efcc5be3882e04c90d67ed4266fe257e5ac5cac", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "1d93919e23c2053dafe725495349ef934afd54cae89555614c7d3d169edac8d6", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fb3a81295319b448ce4d8540767432317cb82100538cba3161d5b65b3b1e158e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "13d1bf36c203d6d3652becdc4b4f27207ed910db99f29c0b0ad3aac8c9d3aeee", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "d7b20289cbdf4a283f956638088899542d4232b40cf840c209454b3e11d23320", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9593b38f658c9e26deaf140e020ef7f52febee75958193a9b0bf25a4e896ff5c", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "912ef70c6dee6d43d75302faaffaf6953066e79ded2d41ad0c9523d1ec2a1a1f", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28398ee2bfc0e8774613a51155d78039657531b4a34209c457bf364c11e7a13d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7a2afcb4d00fab2004cdec95f2bc3d6c5a37c2f2e9b1749982b1571b265b51a2", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "64626ac12c65af4f17b3654ea2cb3fd487ccf62855792c5a7cf43709996024b7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "44a2bf9c29c63a34a435944386db33c6fd5be9529cfca95a0f332ef944402d02", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1b6ceef625c31354318818f97234cfd6b23bfed3807420a8680d448ec5195b33", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6c0f3ab10c3a403526b39326834ba7059d7053eb22cd9403a0cc760e2b62c0e5", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "be27580208975d81113ab2acdf1cb05b48e8e86b0c4f780d62913ba63c5284b9", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "4b9d7aee73c2ef68f7d3e895bb9e5b990a6ce5faf93160109bbde0f4d67c2cba", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "87bcddf21ffbf1a850b9c4480329498c4148fc7457144959214e037e6b137f87", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2164a72e04396209768bfcb81d77e842863f801600db3a6cceebada0c9834d24", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c605309a6c6161e1fffd10c2a61f6fee862f08eda5a6276dcae2ae4b7a0e812e", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d7596291af2da445c465c00e4810302b8b7ab67743efed9d69d790947f894a85", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "18b4e40f7e3581e3cdbc959f2a9f666064b435a3af8da5ef30d40634ecb169eb", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f6f62e8228d3fbae8b64bce061dd77e49fa6c5c40e0b499bdcc01eb2a9603a59", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "505e4eab024f54645d6d89bd8b89ced2dc0cbd7104af285b818b3ad7832c57de", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "835f83037ebbb9567d75acc9db953ec2c876d442d0dfa7409f5aac0b441c5a50", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "91af8277739de92bf68d468d76c2b91fa52014b5885a652bdadd738ac2146b84", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "451cf2b9fbbe14d439b888640c5ed0acf40b99cff7544b3aa133b4fb22b32956", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "66b17244763e044358afa725229a3a33417544e7faa5a80dff4da4f5804c663c", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5eb57d3f6b2ecee825566767d7216480b425ce5eefc691e2f4c510fc1db68b83", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "7523f86df84554313e5139bafbed7155f1259ec4e201b4c6072d614f08d430f5", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "58242541bf8486a102aa87376f2d9a8f2fee74c6956631501155aa5a92ef742f", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "bc15baef3f52f919dba24b46d828b63eb5ad15dcb0660468e9e17088e1523df4", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "c2bccb5164d6fb0a88a20b0df3b9daabce638b269d805aea3bf9afd9e38e6373", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "951f076e5f1eb13f2b5465ba5b9e0561db980f4df59d83e0d817f7134f43f87d", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b1ece4eef5d822ac13244f34850444f72c372ba6839b73b8a782fe181342c396", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "fd184770f3a77113c4185a56811707b67fc90eb684b4ac20e93c4ddfdff2f04a", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8a8f3d3a22c24a4146e2f88b366fff3f64bc94b270eda1a022cfb816b56c1d41", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "9445c0da3a53d11b071908ce1522a65e947205a869c3527409b7833560dc2e8c", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "763ac28b88d516e205373a6eeaa64eea8327d193e86d1f66714e46e6d57bd0de", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "452b30bfdbaca370d1523334d4a4c5c335137d61aa0f88a5b241540ed3b9560b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4ed857971174696bcdbf8bb96abcc9a79ba207d4b802bb1596523bdefaac0be4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "3306ad130ea0a0725b5ff31b36846154574ba2c63f91805239ce3bc92eac22c9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "bfc9c34d8aff615ec61e887cbb38967c55c33d69e8f75b7d3ac538f40dfd5a58", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8aab2a2a197ef41a044fecbdd3b2b59fc5717ae346cb6d1ea982d874451104e3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "cf87b719150963090eb2d00403d9df11684cd2d37890351ada5f4f13c8c8ac6c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "80376b50c2980f34c096c9e03cf774a1155bfa64e0a2a9bf950dc7fd88c8c4bc", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "42650574a87a950d75bec25e30f3ea84dedddfccb28c1ec189970c221c0df817", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "ad6338170c71c67cd1b6b43289798e90af93274c5be6c7297f26b30b6ccc54e2", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "2e91a8bb465c735156b069d16de97d814ee8a2c7bbfe90f7283f07049c59ef46", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "24e8d545bf0c83798e57aa0e5ffbfc8faaafb5067ca7e9cd8f1070da41316a9e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e6a710a2aacc8e586e939b3bf8856280e2579ed59fc9ef6c6cd18b17e8306b9d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ab367ea9347daf8e57bf5e9fe8bae9c360c3980ac31eb15a20de53c12ebdd126", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "57caae64b1524fa6e87b258cbe1f2371c3189937f35b4f32529aaf99a1f3f55e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "d9aa2de3287e753b04517c7663d2af2ecca82bf93f4eb45bbf951775692810b1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b2564771f11210fa9e8b8e112aa4404f9e14dbcef8b49a14316f5c5452bdd045", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5b9831bf338022786607e403ac32d12cad57733716f7cee93f37ed3ebf37afc5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9887d87d8684b2c9028ce379d9d402420cc1911a633d4f485941a3de6a07c621", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "44dff629846f52d0fb0c44c98d3d82a6bd3eb71985373d79da07c4fe25711d88", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ec99e2693d5d84bd3b9770b7e62c611c83d14f85ecaa5fec369f2dbc4ffc3a22", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "524a9d4ab0406cce8c7c8165c8eef706656bd44de6f5bf29124db6a98b33c612", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8664c38ef71ce627dd11efb64b0df244ef9da0932f806bbfd284ad7687e8a72c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4897dc73849f7e7787de0a5f2dce4973bff127c173a09cd054bdbf68c3f02ece", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "bbee0856297cb8abe986c1832e4020c02c3f172463e369b577f2c662e72974f8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "0ba810277887b2c7b1821c8eef4f483c143bb1448ef71a34d0474c6a0afedc7d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "09b60fa7a047497229eee817684881c85d3360e710b1b917d0d288ae12aa3459", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "5ea99d554e0b5805ab583635badeb1bd5db23df5e5faa38678a48a53acc3c52c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "738869b0bcf44b9d4d72211293097e1235bde971dcb6b1bed4f4cfeddb4a4fa3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a6329ab4dc42acb9f7e440ecef446c9992d8c588862e469ac38a5f59a2c65884", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "43abb883196a14a72a008419ea0f921fb6a914dd8cc87e77d43dc00f38ef9540", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "53c69f1b612db74ebefa551cb50ca59a301b84a255e1bf79044726fce3b9c695", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "c8b3d2dc9b42c0a95507484a48872bcd31b22bdf078389fc4cbf2e3ce57cf630", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e17ddfe3512edde12103cb8029ec242bed40103b0f26fbf961061a6300f82bde", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "1e983da3fbe7ce90163312f6b6459d3043b47ea32153c09c03a450bc38178d8d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8f9e8f10c47b171bb2fe0be9e8eb8e3fd231d45a18e4bc5a4a876cb5fb03793c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "9654e3167bbda9ff44365f90ee9d42583b473240dce27fa3dfa2976ca4fff8a1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "3b2f7c6d34b8c18317319e5b8844515f0e1e2c9ed46f0cfb8985760aa1a59de8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "357dd981b6b9cb4bde23e9991bd430ffd63cfe31749d97751f2c3f0575ecb5f1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "316d6fee2b77f92814bde333aa85523c7e8049669d7b224ce4788459317d1604", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "16a725ffa812eb64ca6c5ef5e31ae64538cfaa20112d3edf4fca1fb02fa2655a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "7557b1cd54311020fd967143f69e259c5a915eb3f6b30f8e463132da90a46315", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ae11b158580d5bf7b16569923dce63380c9a5f32d073b29d2e9c3ae348a55ff8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "658d6a4cbf09f305c1e8830b8464cda8d3f72896b5796522571cdc6a34c1b818", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "32e6d73d963f7d9012d7ecbeea33d4ecd80c2e2d1947b2cdcd1524cf20212cc7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "93eeb08b19927ef368fb7002eba179b6eacdf816e620866ad00128c60b79f722", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "b50b4bef5695edbae422ffd96c4d544857440424b243a5362cd2d26226d86fb5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "23ccb66429760c0202215169cb41f57423de56470c6e8aba0fb6290d57df064a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "a4d68a3c67736d80a439a78713c27872768a26498b750daf18dd5cb805d436a3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "7fbdef930fd714d565b61f001e51a4b29920515df4f0f7d5ae97f09629ef37ae", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c283ff73e852ce8aaad4fa2c48057c0cca222e38defb889d5ac20bd277c5c97f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "78612d37f00927d13df75bc1379c8ec6fa59593fe5d3e40c6883574280a3577a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7b92d4ca4f4605b86633af82882c40a6b4177103e804db954f9bfdda454817ab", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d33b778dd6396f6289fb074b06431f798133b9ae18dc220a9e6fec39b34a62b0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "30623db2e35594cac28e6897af7caace59f840daae9572e5a671abf4089f4d13", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "201ad0c9e6b74461b2be186583832afe60624a34a811499666792d2e712fb9b8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "de0e2936a3a093259b0ff5b6a4bdf3879cc6d1434df00116b2460b26e012563e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "0b2d55ccbcfd78972e080b6a72d16ed000207c796ac7d81e8f2dc7ce6f5a7048", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6545aafb0f5ec3f7703a5006995b4aa1dd7f70f54113ff871f19da13baaaa1c1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "3faa43bbc5f22d550fa523e34c7bd239f9448a9bc3ea2cbbb9516794dc2973cf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "ef12c38cc08c2a0cceffc79ca75263cbecabcc500f11ac373ee3e58f18549f78", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "52010e3d3e71af3494ebdd43f1f69e11bee65d0e209f75c95690a40da3f81fd1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "84bac830801fb596c563d2704247bebd92e777ae5008a2f34fe89a38114bc1a1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f4e95cb91b71f9bbc64749ec062d944fabf4e59d44753b7c4f71755f5e37cf88", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "b610b5c902ee60ad14c76f81bcb9144ac20806b63856054e9efd4ef36c5755fd", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "255fb82c371edfa0c8a0b93751f9994784913afa12d6cc85b99a26eaab12874b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7a42704bc017c3128894f0016c5ab110edecc243ddebfc8beb0f48ff3befdd0a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "da57711b9f55bf97f7bee8f734a8fdd5e02563046fa911e40014b0f42456450a", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "18272296d219ce2f54f30820936a29d698bd7a26890336c9a326c30007a43e3f", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a9b53f23f657a00cc215987ee1289c6a86225602012ed33fe12ecb7421a960cf", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "214f0ab5a2c67891e91e89ef71668fa89c0b58dd367cc5fc076ac9e1810ac344", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a2ab7d0bdac04efcab422955495d6e4f542e5c0d7770d712bf11b41e75ecb1b7", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1621736102d9ef3197b8593978875905b3978dd355937657e33af5c1054b02ac", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "9fa8e800aa31d45e37da86169d03a19dd0ef6954473a7f4ebb3d3d339d4bbc4b", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a8357c843abe1124dacde751c70313f57ae0b46e6dd2dbf91c5f3027484822a5", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "da742ffb1db1bb3430f6ea64f9d50813d41b15762969ffa4172d48ed62f0aa29", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "e16b547bc1bcb9e11c8785fdc98514a54d53c2b2226e0778cd4b59146ba6ecb8", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4d4a0d45419529aaeadf4cf7ee391f26d15acf586b7f11212ff1a7a0b09c389b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "34490052e6eee68a9e9c732686461a4fe7f956691feae677f31df6d9054be475", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "353c7dfdeef8d68454e8b9026212b52fb761864b4c5ddefa17ea973cd0e73e7a", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a23d222bbd77d3b199bf73f6c60f5bfae48a45a913b62579e6934df142ff5a4e", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "3c3146d203c179bacb4d389330a6b29077359e53e6ae72f443e5efef3d841cc5", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "f3bada923b206539ad960d369d3a28fdd0500d106ea079714f41add5be37543b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "9d53cf2c0aa7cd569e613edb9cc710a366e7f152264cf24042009cfa65f83452", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "06c44f296124b25d22690d9a8dc5f8ac7421db139dfce0dd2e2f87762e65198b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2ae8078b3f39e1f930a1a7c0750d863a8ae9edfad2bdf32b57d63b729fb7fb1c", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "be46f409ac67fbc359df19ad6d188ab31062f7d89b94011e1788fd4d5893640b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a7172a64a86555942540d9eef80042a3051d4c58e1f8cf7a39e9c99987830e27", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "84e2e99c4c0dbba1f2e44a2f833742dc37f88013972c8ffd0d02673660eb694f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a3de7fcd5cad8c5e4b4316fedde7dc7862eb89ca2f2a8d1a9ba8fb50a068342c", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d75e62e491d87be5d1317e51241431bc71b5a24da21eeb31dbf5a10e929290dc", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "846e5b0c1e740f230b8670be9fdf93de80918e2c1afc43ed99d15af1d959edde", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "380dd41734316482b1c4d2e33777fe42f02829cf637c550fbcc699cc4f7bcbaf", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3d0f941c6ca7df69d6204063f171b1aedeea36e8c9c4d3c81fbd9eca75b248c0", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e7ae941c1a5fb1a10a2e25686771d0ebc5864211966eb7741c88c7bcdb3ea6ca", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "993afda5f990300f12d8f2f318b51a3f7374f7abdbe983326e39c66f0bce0568", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "61242eeca3cd77d51fc2d9012d86e57dde6e722aa4a2df4e818f3ed679aeb430", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "d1746738380b806d193be170c8f476e21448dfa227a91f8547d05e43cda2fe5f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6bddffc62fca2af49b98cefe7ed5aea24541bc41d0f3c242f7fb7dbd96f190f7", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "dc5de8b32a6c86fd034b46daaac0fc3ed1b813e0cefde376de0977d1ec1ece44", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "66ca24e60f8c0b6589b8af806b68308972e56087c1517289cd1c85406ad1aa4f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "adc5c6dda829f19ad14a79547779472d5dd72c9706853aa665e8de7361433183", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e7bae062ee776b91f0e61d3b8a743a7800deb265bee722500e79ceba459729b3", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d24cdb336b45aa5a6dc51ea70414b38ed157ec007d1c3840dede56af9ef1d13e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "4995cef741327264327241df0ae283074abdd4477d63028be16f2d216aaa8f7f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "3383ea7a0661c2e227bcdd714e8c4b8599a70ef0677991f0d111a14eca410906", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "fdc7d3703010dc7a5a267a3264b7604580926844aa3a3ba8b093a23e2ba7b50e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "b0c90ca5c5bfce6c79f10c64966d0e2287ab6e70f70ed0dd32dd7c76173baf0e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "12205c75d5a6066fbaf7b89d545583d69062d7169706dd2e6c9aaae6a4b71918", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "989d9d0713f644338e5696be59848b67119851fd64e44d290a43c8cecd554a58", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "31deca2fef5dc1d898a3f6d95c2f715f0c85d8be48a2405d596fa0b955597359", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "cdbd1117fded4dc3efef76f723f5ca646461b86a89f741011a25a794cd016b29", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "641f0ec39c752109a6e287478d529b1e5d3d98cb4eb6b23320a8ba7d97baffba", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "808e6873ffc198a8271244e51538a91f4a737e716bccd441e84775589ad75138", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "ee0c8989f31e75c36a4a74f3715d5bf341366cdbd6b750da99ec1f91d7b90db4", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06aef40642884843baabe7e7d6b69bcd772d6f1e16f231d2c6244b6a727bd08c", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "2a23c234c26217026172b4c55c0a32d33e8b3002c4c618cbc4f6f80f28ad0501", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "039b45fb265d4c7515160a8c54b38ac0526c349fb4f4855a607c656b91b30189", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "313a241f2f94cc60afa2f8d1afda7a6badd91b437f7acfedec1dc1e406187c90", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "dafff07651565cd5e9228d0fababa296fef90f9523985b123dc2839c2120328e", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "9e963071645850e247825f828ef64031b80b1f11edf54c9290f96c909f4de606", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "d8a1776116a79dde0519140150a176d6858828645259420c4f481c485dae208b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "831f8ad892a7a9283d8c6317d3ddaa7e3373f500144a88e18dca31fe69c7569f", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "9de19207e95dc1ac1a4b6bb4268143fca1d832fa89d9bf01a8264043517d8bbf", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "90f36d6374ab9689f2177b4a3add9f5605bd5572493e731119a61281678abebe", -"T3T1_en_test_autolock.py::test_autolock_default_value": "636069ad7e5a8d2e696502408fb494920648308b32ce9da154ac4f4470ea4a9c", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "88d6b6e2701a5dcea58ff8c267b6c0c8210dfde802d75ca4e252fbc899be53f7", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "88d6b6e2701a5dcea58ff8c267b6c0c8210dfde802d75ca4e252fbc899be53f7", -"T3T1_en_test_basic.py::test_capabilities": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_basic.py::test_device_id_different": "033ebf59123903b6fbb34d44fbb74c8873e83605e7b6f5e8b50078ee6589e268", -"T3T1_en_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_basic.py::test_features": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_busy_state.py::test_busy_expiry": "6509e7c943f2d09e3a5a7c69faee74c75b321ed1614d881d1ebdb57693c7f69a", -"T3T1_en_test_busy_state.py::test_busy_state": "738e905dfe55634972474416817c53f0a22a9ebec487d9046be867ab3f2576dd", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "3ed24b99952d25fcf0d9bd6d307c576862fe870ddb98288fa89b227f0e192073", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "3ed24b99952d25fcf0d9bd6d307c576862fe870ddb98288fa89b227f0e192073", -"T3T1_en_test_cancel.py::test_cancel_on_paginated": "5c198919403dab5ba394a87544aaa95bdafe82959fbabdbe918c81e2d226b051", -"T3T1_en_test_debuglink.py::test_softlock_instability": "3609018ae27ce0ab9eb091384029089ad01bb097d80d9afceb7341548b935ecb", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "2a63f0bd10ba99e223f571482d4af635653bb8a3bddc1d8400777ee5519bc605", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_language.py::test_error_invalid_data_hash": "aaf31bdc64a531bc9084a003b2ad78a9fb91ba9b138090b1e2daf78ca4c106f9", -"T3T1_en_test_language.py::test_error_invalid_data_length": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_error_invalid_header_magic": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_error_invalid_signature": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_error_too_long": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_error_version_mismatch": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_language.py::test_full_language_change[cs]": "b67104363cd1dba59dbe65a4d9d6924954a1c0ae9a279ed6a52fd7f18045c5be", -"T3T1_en_test_language.py::test_full_language_change[de]": "f62b6aa78d2b614e28ec8f64ecf60733b1c76fa7631e53fe414b8015b70a4094", -"T3T1_en_test_language.py::test_full_language_change[en]": "5f6cec419aad5e5658f6fda45c2cd40fa4581823e7f9f0c4199970cd179bfd4e", -"T3T1_en_test_language.py::test_full_language_change[es]": "6c3c6983dedaf60e8818c0acdff7f1ba83ff9106333d834b8bed02d910bf5b1f", -"T3T1_en_test_language.py::test_full_language_change[fr]": "7e1f16d84163fa6b8a8acce859f5c5e97ded578c28f75629e4f9bd587cd051a8", -"T3T1_en_test_language.py::test_header_trailing_data": "bf322715e91f7fb147f11c187d88813f6cea81f520030a9c71ac7fdba1b39f6a", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "9858fc6e1eb3aaa9f26d839c17203e831ef57fd5845df92e346130ae1e7b87d5", -"T3T1_en_test_language.py::test_reject_update": "78b8f16e00c5d653a7d5c0929d21ae8ae1c76798fe28f0eb6edee8e2ee8b0202", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "c72f0c97900e9ca2b7307c325347c1b1936af39fdbce4d59b19c5d930403fb67", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "c72f0c97900e9ca2b7307c325347c1b1936af39fdbce4d59b19c5d930403fb67", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "c0dbdca95577cb4da273c873d272269141f040bb06a6585cee0c4ccaa61ea517", -"T3T1_en_test_language.py::test_switch_from_english[None]": "2d3e384d3bf18cf73eab43a3a43e596a3ff2a923390f9f5430ab04392fb28913", -"T3T1_en_test_language.py::test_switch_from_english[True]": "2d3e384d3bf18cf73eab43a3a43e596a3ff2a923390f9f5430ab04392fb28913", -"T3T1_en_test_language.py::test_switch_from_english_not_silent": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_language.py::test_switch_language": "e26b247a181f5a3cb36b117ee3fced256d6276aefd990095b0453759d0fa76bd", -"T3T1_en_test_language.py::test_translations_renders_on_screen": "bc06283850dbfad95bf96a97768c276df1543073d41d89909097ea2fc4f3f9ad", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "8ac0c969e6d8a79257a41d4651dcf62f936e2120547cb97c6ebdb8d3e57c0cfd", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "da4d930d3ce1790722c946a0a266c48c37a552275a98c8db18e3b7df81230a24", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "537cc0ac2cba1292e97e7973079ef8202e2441809036b03d368caad769204661", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a1f6dc01500cc25bb7ad302da3e5b6040567d9245486e2ab983bc7b03a511603", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "3e9e307a8d14c10e682873e7988fdde21bc7456d47a8a0ce61907b12cd23bfa1", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "e774f4de022f48caacc2445b1994ac19dce7a6155b4224ae7eb727ffc8975ca9", -"T3T1_en_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_msg_applysettings.py::test_safety_checks": "b129e0ba2e3c7ac836b3bb4b0bc8ded1c922eba054b42b434d10499fc780ea2b", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "429a141f97ad5a7b857985fcba60a7ac35e09e6ea54013203d80cb63deef8638", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "75f8fb63ed22a2e9983a9d60488d6cb87bde792ed7b00b67f1754ef5bfa8910a", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "31f143785472dad5adc46df21cf80ae3210c30c22fc719d9f56446d1915a36e8", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "63db4c01cc1abddf73ece3c61d9d0de6bfd6499559e01bc58c2981f416a922f8", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f1cab327533697803793725144e42200106e05f1d81b75ff0a8eb55453a37dfa", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8e6156bc4caf5f75de7c164844de9405e6c08bb74352dc6976a8d93dbc994e53", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4b40bcda1027acd50d2db7a4d4a385fd23c722a4b4d517627c9621f196d4cac4", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f8bf4c5aa62746b5a66a3ab3ede76d0210d8c7563175e9598672638323dc3fb5", -"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", -"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", -"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c89489b44e487f6be6757c7dff2118bf4769454cce1ab3b03e0c12a68651d432", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9c861a52adb748eb9ced78260726583889dabf286377b030031471b18c4fade9", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "6e974727f6611b6d20f08fb0e3394b9457545bfef0d9c60c86655003a3fde410", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ac44babb407ef9d30cc1301b9a1a7c02c92e3ff2f555f4b21909814636cfe1f7", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "342a87f544728c242efb04e8c0e1f97ba1c55cf52299018a1928056fc37fe5ad", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "7d4521ca4be8f334a262f3bfe4b3d2eb38ba13f55a4adf75c1d6a97c04fc0090", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "cfe12091650149ae4310c39903c67725e9983c50ae33727add8cf5476c4ad266", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "2ec521e63d280bd2a551b3cd01c01d58ac79cd59d14c1c6bd7a04c3040ac715c", -"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "bd112f5b80f4a57013ed24cd2edc191e76648508ed70d2ff84602ac02f11b730", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "a8ae3193f87cb964296b4b9a3ec029533a547eb343bf3f9dadf462b3078d58c0", -"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "5f9a8c7d060a41c7dac34a48fc90433cb4f3980cee896dbef2c197e1489382c7", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "fdfffcdb439863d6c91d363f0b3b24a5eae0c7b529375f229c6a7223288eb7f7", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "c383c6aa9458bd87a1012e6880d171e7360a2dc0a5f0259a8655b17949345608", -"T3T1_en_test_msg_ping.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "a0ae9e29d00a0481c7a72130e0fc90181c2f7c00cb4dcac3bc6f2419504e62cf", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "efab70c899991735fff30328f7be12dd1ba12720665c461826fe7fadf4251106", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "9ccb1c3dda5c30a54e5bba83b2e935df8fb901e756496b930b7fd66edc8a0ced", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "488a68d166dbcafcfdd0bb481901002e6de994d1b990a543ee7c309436c7805e", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "033ebf59123903b6fbb34d44fbb74c8873e83605e7b6f5e8b50078ee6589e268", -"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", -"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c4a8e8e7544a7dd8a7157aef8572f1be99c10b290ca9e0f60763b7e3583c7882", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T3T1_en_test_pin.py::test_correct_pin": "e74c2b59a4164fab459b67b7fc2fd6fc349ede0b8efaeac638659ae25e4790e3", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "de409b3dff3aef0ec32a2d45ec6cf5c33d23b3c7ec8a8130f99f5f47197c6998", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "afe6d894276043f93bbc2c3f44ae31036963d2fe597d5f93cc0ca8ea54fd67a9", -"T3T1_en_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_protection_levels.py::test_apply_settings": "f73dfa0b964e817e75eb1aefe4c0eda83365cc0fa7cdaf79c89659677c13a490", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "628f59eba987445b4d6a90bb2401ca0b099454199793da3743b0e8eadae4dc65", -"T3T1_en_test_protection_levels.py::test_get_address": "5e03fffedab4035e2fa1a270d9212672fafb282c19ffb783c734e32d4f33cf3e", -"T3T1_en_test_protection_levels.py::test_get_entropy": "295a8a97bc590301de424a39ec768c5b73da92b23dab04f5df6a0de5da8b8fc9", -"T3T1_en_test_protection_levels.py::test_get_public_key": "5e03fffedab4035e2fa1a270d9212672fafb282c19ffb783c734e32d4f33cf3e", -"T3T1_en_test_protection_levels.py::test_initialize": "00b62142b8f9a2b0dbbcc5a6a987ff0b1569c4841eca45499857dc264b875841", -"T3T1_en_test_protection_levels.py::test_passphrase_cached": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "ea68873cced831c9babca7ad78a93d0fc0603ed77f4427c673336f267dc8a83a", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "232f83ebc546ec9f606a01be78864c14913c8dcdb0bfcdd01d4d0f6dcfc3224a", -"T3T1_en_test_protection_levels.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T3T1_en_test_protection_levels.py::test_sign_message": "29b2ef280a8573f6cb6c1249acf13006228faf1d7968da8fee999f84df540845", -"T3T1_en_test_protection_levels.py::test_signtx": "e36db8f49378262cc3befe4295f6155b6c56b1f21395249ddfcff9a41cb15be0", -"T3T1_en_test_protection_levels.py::test_unlocked": "835c5327c35866df9acdf1433e75775eb652956b34ab6123595a06764389f61e", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "456368c2e05ef1a743baa467897ddcad4af06b9cc863b809740d145a66dd88cd", -"T3T1_en_test_protection_levels.py::test_wipe_device": "79922a132a2567d0a1b9b296b95fe7d1756e8af75681d9a0386fd104c0addf8c", -"T3T1_en_test_sdcard.py::test_sd_format": "eb00c8c6d53fb2cbb1020f053219babe32ef3accb8ccefa8dbe315c03fb19149", -"T3T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "097106b59798ff84733f7c6c4855cd52fbc3c0923e91aa84c0f81ac3ebc651b2", -"T3T1_en_test_session.py::test_cannot_resume_ended_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_clear_session": "28127dd802f15874ad7cfb67027b732ea378a9e03852b89861579650b125edb7", -"T3T1_en_test_session.py::test_derive_cardano_empty_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_derive_cardano_running_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_end_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_end_session_only_current": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session.py::test_session_recycling": "fdf4b1631f9726cd27137dc3e20a78d88d223fd774fee8828a1afb33624e9a11", -"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "f39549678b9631de2991711e728ff7a703ab80be965d794b40c69c0010ede943", -"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74ca896a0493ee40b4e3a709f4cf1ad1d5e80dcccf7229de09fe1a3e40fdc615", -"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f7e9a2550ae7c57cefb0e2a13c62a1ead48fcbd86328d372ec7b54b26d51101a", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "f6d22736654a397b99e7ed4700b88235953bf7b11a293b0fa975f8225dfbb07d", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "671a366a006193926c0af0d7a84f0feba09a220bca32fbc609b17ac431f6f79a", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "c4c9e8c395f99b21e7de2216154a18af726beca5b82a09e689b35d02b6d14eb8", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b95cba09bd47cb9ac2df7272a1ae1e7a6d3ff3b345ad40ac3d139d99637c1ed8", -"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5de5cbe74fe51d694ff926523f318ea3ad93f98bc5bbb13519e76c2f2c5cea43", -"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b2d4b75a4c96cc3ab52056d4b4bc83a38d948bb35aaf422829b05c43ac0cf14", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "e956201e6a960c53fee449e29be2a3094d10bfd7ea3956b0c356aebc90891f60", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b8006f9f20dbe6b437522702ea1068b15b3320909f8d6d86eed47c700b4d9bed", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "f911f2fcc0813237d78c7c59a4237058aec8f8066116703ed4402b70ae802569", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f686330e653bbe1d12bd05b896a9f6fd60b10f9ec1bb2e56cfd8de5e9b7f2941", -"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "842b1dba8dedf7ee6a2c6ce15305dda05b249d7a1cd4ad2854a4a2dead2657d4", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "2c89c52a396e7aa8aee9b5216307b8aa89fd613d2734cbcad6200f95a614b418", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c755c8ab6ac30e0e6b5e74b820ab2fe8dc2651da9f28d82206c50a1b12002d57", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dab7d08e722611f6df10c65cf899eb5fd2d7c581b9782b20f915061bf3621a59", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "9e50c84010c632d4f77cf6986589d02b20612e0750330d7698747648186ee2f1", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "c96aa7c1a89ea02258c3de675fce069ca711a373e0da6f4243df2bfad4dc99fa", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "872dec677716e31c8a273cbc2fb0b378721f62c8520cc3e58c66424230c6f113", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "a8584c502480d28e3cc5ff93f62f46430bd78103b4d2530130e1b84e8912a6d7", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "37e2bb21c01ac37d2766602293139c1068fb2fa1529e47447b19800e707e1fd2", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "9d4e51b1baf7958ccbce3fd950f56d39b235da4d1428889fa0bdbb9300b781ec", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "dfebebe52bd943dbb719062355b7ac38729cc95339a49b795a34fa900419c4ee", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "f51e94cc8df4063ceab5fe431c9a53544533d809a6cf43e5beb4b5c2471d44aa", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "3e23b6eb2ee4d4ae726eee3105dcf06d2914f6dfced39231496ea4c181ecd7ee", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "011aaa0232bfe00f8df11afc2de1c00d01323624e9f4483895965d125e23d971", -"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "7a5407948b99a424d913a27023920eb5deb2b06cba1b78271c8ff6c69b56b85b", -"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "87f09bc2e7d3160ea1ffa7f340ed8513ec64b8bbb64e884e82f80fbb07899e1e", -"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "58ca129cf30e1cfb9a4b393967b859094cf7b7a3095bb1962f9199b52fac8245", -"T3T1_en_zcash-test_sign_tx.py::test_one_two": "761e56a0674e522af18cdcfc9cdbd398a7f82f9454eb8bebaf076155336f28f7", -"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c6bb77373d142024bf2b24d43f7af1867f7b0da28d18e89fb6cdba8b7c8aee81", -"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "d408c807422deac11166c3b232208951b4751fc34b3c85a71d2794a42efe0e5d", -"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "05e12d33ff11d7d149711105573b25378e819f89bdaf5571d502c77cf50951a5", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "f780cbed9d8d015ba1872dc35db94fb5b311b179f5a2a4dff057529aaea7b0c3", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "ba41b7d7c77c4ef9ce5b8e50d749241d0633ccdc22aad8d9491d74a01930add8", -"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "895eca0e5eca607eaf3733956c57daf7e9fd579ccd87b187b12938b76aaa4f20", -"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "1b0591593b6195d17465786839ebba30cd59240d6b682306e81dd41085d89425", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "952c904eb590eb76d91f0cf89919faa364c28fea5a9bc72fd589fc359db008cb", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "738eeb4b4090d06eaabdd10ef6b1a0371b9524f6d1055b3c32ffcfa57f26984a", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e6c4e554b2285f7f753b16cc04eb8a1c70baaa76d2b301c7e104ed6b45d9bb78", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "133143384228dc73a9de577446267ce0454ebd7ee3dba7ad97424d365e06c7bd", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "46a219667989a2a516a06bda8938e135ef73af74cefcc4bd941da28c7aedfe30", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "46a219667989a2a516a06bda8938e135ef73af74cefcc4bd941da28c7aedfe30", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "be081c26cf9be9845f62b9aa504a55324321a65dec9e3a0a8fc63e92ea18eee0", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "9b1f95dc2848d9206c5a4e0e34c5d107bd5a1f55c7632de89158d0c7cde0ddb3", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ef4f759f62a09e822c01cefef03947f8369383260243e0f00de2c3ba4915dc13", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "20a8c35d06f9d5050ad9644b6921e73186abed298da83ef145d2c2af5b8fc671", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1c9dd8de0ea726a346ce6480bec2414b29acd6779125d929fa83d84ce9ed3e74", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "399bfd4e6de87e62ebdc60087587f8c27e2befa2b8e6bd9c719c3c100c568057", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "04c01bbda28762974b064751748d37cc03a9f526e99180a8821420d8bca14a12", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "04c01bbda28762974b064751748d37cc03a9f526e99180a8821420d8bca14a12", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "cd27505e5b5c047732ddef06cb93ac052449b79e9babfe4fee6589a453d6fb0a", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "9d60806fc7e7179071eb959f5cbe67d97f11153cbce97864e0615254a163d537", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0b3d3893f01bf57bbd644b19bb2072f8c435931d8cb2a38a97ac2659844efd3c", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0e89f958dba7a48f1c417b808f71b08d84885c5d184274c3866b7ead5bf09f3b", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "0e89f958dba7a48f1c417b808f71b08d84885c5d184274c3866b7ead5bf09f3b", -"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "fd274cc3aa4dc71c6880f7ebb93577e9043446eb736fcb3abef55f09e6b90fbc", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "fd274cc3aa4dc71c6880f7ebb93577e9043446eb736fcb3abef55f09e6b90fbc", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "eb248113228fd3b7a0ff69c4a409ed3e21636e5a59a96cd573b99f79367d41e7", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e6504738da471c13b2b48885e4f7a8a4b5443980b5d887ee96392423b1a9aa18", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "076054bed839f3babd158fbe2e31b3450440b384404826f4acdfa47d27ad97cc", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "760956919718a2db556a03fa4f56d319652f97b4ea2ae120e7f2f8e50dc0e4e1", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "22977c30f679b8e4e32d6df32d7ad03b1ea88f89507831f29db3d0dae36ec00b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "faf69144e29bfec469439bc4012b692183d152bc6b9fc22a7a2dece1716e98e7", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "22ec43384d3d6c49cbccbdd5345bea96abb96fafa2850539a80686ff8c1fc483", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6ddc1073c68608c4d7d51343a2246c0be6590235dfbcd2cdcc2151941193bac5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d72cbab5c93572e17aa9b183ec7b04de6725a8ab69cdb570d873fd46d84acf1e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "85096079c05717cee1c339126547fe5ce40f1dc6c7ddaa796546e0615e559424", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "f54770cf021d90afd81bb6e487f580a69c535ae7c955ce438ac4882464023838", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "6155fc444c1d45ac5cebdf03ea177b5886d3e014b28601e943afb6668ac4155b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "28d63390e293289c062cbaa9066245a091dc902a5dde9b76c20c8767ed16b27b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "71231246c65e9474db0e377fb02e876a0c75c081f7424a156531e234d36b48a8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1ac80b10559da7fb3b3198b6cc485a87cff3020c786df18e8e537252d0e392fc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "1479ff7d5906151fe09df89f9c3c62dc3806a1c7ab8c0b6063bbe6404469f79f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "f8913e114975e207939fbebe9a7b99518d9d3e6bcacf7f7300bc0fdb31396473", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9b15b67c20e7c833d30a8e4e6b1429b88e034dbaf2a4ac9ef5dc0d971253db19", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "9f3b33abd5f0baf16686cb7cf5d25f0cf9425e9e763c46a1f78562ed4ac5827b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e5b34f3fcc94cedf8f92f68e75b945bcbab55eea0582daeacd52dd693ffb3fc6", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "faf69144e29bfec469439bc4012b692183d152bc6b9fc22a7a2dece1716e98e7", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "23f75434763fb0cf46a9aa84c9990d0750384e972a2b71a41a952e02082724a5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "22ec43384d3d6c49cbccbdd5345bea96abb96fafa2850539a80686ff8c1fc483", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "6ddc1073c68608c4d7d51343a2246c0be6590235dfbcd2cdcc2151941193bac5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d72cbab5c93572e17aa9b183ec7b04de6725a8ab69cdb570d873fd46d84acf1e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "85096079c05717cee1c339126547fe5ce40f1dc6c7ddaa796546e0615e559424", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "f54770cf021d90afd81bb6e487f580a69c535ae7c955ce438ac4882464023838", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "6155fc444c1d45ac5cebdf03ea177b5886d3e014b28601e943afb6668ac4155b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "28d63390e293289c062cbaa9066245a091dc902a5dde9b76c20c8767ed16b27b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "71231246c65e9474db0e377fb02e876a0c75c081f7424a156531e234d36b48a8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1ac80b10559da7fb3b3198b6cc485a87cff3020c786df18e8e537252d0e392fc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "1479ff7d5906151fe09df89f9c3c62dc3806a1c7ab8c0b6063bbe6404469f79f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "f8913e114975e207939fbebe9a7b99518d9d3e6bcacf7f7300bc0fdb31396473", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "9b15b67c20e7c833d30a8e4e6b1429b88e034dbaf2a4ac9ef5dc0d971253db19", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "9f3b33abd5f0baf16686cb7cf5d25f0cf9425e9e763c46a1f78562ed4ac5827b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "e5b34f3fcc94cedf8f92f68e75b945bcbab55eea0582daeacd52dd693ffb3fc6", -"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "b98d8923c124769303c839d5df22e72ce5d12d48d727577c1a4ac1015283bc6e", -"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "9c547b6cce67090f083c0369a5697985687d806d48d6dab5596090b04ec62877", -"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_bch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "4d2708eed07839ef53eaa4bda8c4ba91c0fc9dc9f85ce15539b4b4b2af544186", -"T3T1_es_bitcoin-test_getaddress.py::test_btc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_crw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_elements": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_grs": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "f98660b23bcbfa1930516f5da50cc49dba989fc28d7be83097760af7a7b2acea", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "c358127625489f8b1c6d39ff971d12be671d669df653d3408cd91a0ed2343505", -"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "2cca5c65926406343121dcfe5d49755d2e64485f455f4fddf7efa87362f39685", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f8b19b6479e93d50acc83a808665401638a42605596522b6afdb17a1db55225e", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "f7378216552281c524f94b23136b4ee1f8477516279e70e6a3dd16f1471983c4", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "5728d67b6bfcaa219a386e7d8ac7e8cd061f0384c7da40f06bf9a0e334408067", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "95e6cfaa833ce25a340b5df15fc78a71ec733eda6d323db7d4c3eecf48a1f4b2", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "1f239c5d5a54abef6ecfa7fad157dd474a9b2ab51f24dc7792430030e23edc8d", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "3a4c53b24ec7865de481d01afd0b8cc0ea8ce979749133f9365a89886e9a1670", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "13c0002413c4075215ba2f8a82d6f993d530bc30bb5b9e18983739177537712d", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "1928424e55cd30b0d6655d0e90db4fd9a1d0025ba26037dc9ef7ad6e56ddf2e7", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b2541f544e663888b6bea74a070d2a588c27e5d7a56ddd894ee45f5d137593a8", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "87d07eabb24737777b134aec64f987f2ab8321d52da48dc9d8ee36823e1ff4fb", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "6bbff7a5961a1bc96390f387c2e3ccf0e976270cb5e768413f98830752b77b8c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "601f131488af44267ea0af723895b5f35ffc56b78448df261ef39f8a26c45ef6", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "4b1b67068a16dd9d5b15f5f367203a5fa53b45170ad49dbe12ce9a86c236a925", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bea35820f6bcee0245fe5cb065070d3c068183a41c9e60e156db0f196a9f517c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e85351a921905bfa505d9e511ac746bd12ad0a48a69360bb026ce1e2d74d8784", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "29539910e5bea380991ae0fd089b6275576eb76108957a80b678c1eff0d7128c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "d63bb8c1f17429211120fe78b685843e2ed46533b212eca1f386f7de2323b9a5", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "fe74c707227811444ff53a75101701fbde4ff580a45684906df401c8fa374262", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a8c594da386f9a55e6e59cb6930a21f92c4525286c47348f0a00f08563035e89", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "f5e799c41a690ed963d8a75efb3cae6693dda8e933968777949567cd38eb9b11", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "13c1e6cb076df4b4af8773379854b251fb7b1cb9683780f336e348abf983e553", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "5a71898c513e9edf18711b601b49f8c18b7dad2a965bb55707e8d8763dcc0112", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "373df1ca3bf96f8fd6c4b6c35a48766857121defa5657e9ea6caa7fe9cd55c53", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1e573d152e8f090c28d7ec9464a12ff7a2e36a3c75e2db916f1c8c3dce8aa193", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1e573d152e8f090c28d7ec9464a12ff7a2e36a3c75e2db916f1c8c3dce8aa193", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "12e6fd9fb8d26ce9e0f3111556dc27e377b27974b8cf58a333c8d894a9a00883", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "0c1695f66906d5bd9bfb76671b5e8163a9e00ead6a698187cad1814844ae5de5", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "10b4ded8360da83f5245187c371aab2b977759570f0bd9a5eaf7a9675451e9e6", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "698f77756bed9a1b4ab7d549daf3397a16179bc63a4b192c89a92c0861021705", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "25f8748f0c6ce6d97ac6d042c2ea636e05ecc23d2358673c309945b8ed1ecf44", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "399c65e1d1d64494999bd00986a9ce233b4cf075a431acaaf9c911b7e9172e31", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "784fc6d8601ebc2b1411564a31abd8d04d40fb71d8ea6cde0f97d960963eee4f", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "15077e08c1ed8ad35e8658e214d90d0d066a010cb4aa87636b69d8acec35e217", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "fef188362447afe35f7f1256a5f84b5c38028b13d5c9c714da1245a4f96c1de5", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "eb822072fddb56566a7e9362426a0b09be5f8707eda20a646d124a247aaf7447", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9f7172887c87955056667f70fb6528e9b027b65772eea361453e8e11e99fd625", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "19968bd79ab15df993aa14e4e2a43a5d4d0a74ecdf6b4e1cfd4da3cace738bdd", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "2fb7c0b1eb770759b3fa5aa1ee2eca486a8c8d36c7a42e4307850ea203cbc52b", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3a2f01810428e9cb3d86cfdad8d3183a2936384371081130b1c35b6160c27ec9", -"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "15ad18d9c8db8e348a93a8578fac3cda988cf6d96af6380744e1ef1f76c815ca", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e5446238572852881a68efd4c1819b32a6b26a7c90e2b0944b71233c7c00029b", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "57d7983f5a0133b2bc108e9902460bd19d5eea7c68e4052d25efb6379994f497", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "7c4adc7a9b7f0a19c8652575274b8481ade7bb2836319c8035c3758748887472", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "001aafce1f19ada366ada1c0712ce6e45077661ed56b6f3e54e4eb7196d57e14", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "05d511e3d4e4b86ffd1568f99646d37aa5af3ee04631751b75472a23e02aa1b3", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "5a6a2aa0f9dac37a4214a23fc4a4221f9aef18ebc64daa4e9adfb0ef533e335f", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "650b5e896da8f21961aa30dd52338fec419fa0d1b905255c9428aa9da0d81b99", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "4c12d5f5a324314d26b7305510917808e86fea2245aa2f1a32ff1daf72ae81bb", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "969d1c1dd45ed8d7b2eac301eb57811aa4e5f7f458437030e706b4d731104ed8", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "98c9310893e05fb29420fd73c3a039b021063b70661b722056aad6ef578295c1", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_grs.py::test_legacy": "4563409f6d0d4c1e10bba0bf8c92ed213963d6486e1a8d9d7b43965618d52ade", -"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "4953de970296f942ce8f8082003591226ed3f2d1f5ad047182a7a403ae3b8fb2", -"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "d34d2bd8bdd202e8be70320a7b138a73d890241584f7173b0d9b14b27d3701f2", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "d3b17e7d2083a1ed5b82f8c3bb7f98d8c51b75dd11c871750abcd6fe46a8ccee", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "75f74225be48987ec9cac86a5dd4b99b83fa3df4b51f306480229fd4355f1eb4", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "d286b03d4f4d540ad118099a594a401dd38c525bb4c94e3d6725ed1ad6aa9a4a", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "ee4ff59745b2f23c7e5e6098efd991b764464b0828bd7b6b682464b654429023", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "97d94e951bf2d322970257a1ec13a1195d16246a1006a5fc1d71fd1f1e8c7067", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "d60a912534d81ca7860e3c0c8e8c05aba7e384d543548135e4d3327767c4f803", -"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "db332b048e4b7c0e88ffcb2acaf5723fad1d76ed80bc7ebc40af8f8395d86c2e", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "2c0eaf0dc735ac4d81f8b12ff65efd1c48e0e8c069eb0cfcd653753ccbc54f5a", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "fb9b34983d22f7967d297bd40fc8ad2f97c82706263e0e48e6d738243917c793", -"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "b64d8168b70f1901cb23c91bb78a1d0ab55d6e47cad7809c9959365c31d58a46", -"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "3f594071da8b1b7732e43b0e8d6c9531ffc522b8fa32ddab13959c3c1e87d0fa", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "f5dcf96677fe31f1abd94ea4ac0bff07bec53a448bfc857be0378df3caad2e3b", -"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "fcd0d1b6b0c0a3516c809f077f591f0b02ee508296cec3003db03a1596f54b1d", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f3144b61310c997cbf6a72e238562c85fe3475ed66b5b4833f4318fd33b76cc4", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7b22064884ba66c14a1d12cdf683f10ed9e4d95ff42a522da291d505bf2ad48d", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "a5bda3b733a5cd52a2564199d6b7f9f7c0e1320a0aa58e788dc880a86f1574b6", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "4606121c0f61cfaa2bc4490e1d298a892c284ce5dbbb330f3a588218416b3519", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "587fce37de02ab2ef39cb479e71d07e6ebe022fee1709291a832c4d1383f78e6", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8653ff07e2ef0eb13c4a8e052443cc54e6ad4e69930da75ebc7dc85f0062f3da", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "a1fce37c92875beed8be1a4bca3008f7f853787f5e913138f7b7ffadbc08d38a", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "5f142def723b8b96bbfcf06647b468c55724cac8c5bd8a01e876cc4cc7d94496", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "923a30ea02347943a0cebd024fbff4a46d6a42bb2dba359e2c3eeb04c045399f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "c8a7168134c9b069a4ff5c898eba4ef73b9ab5af15c299d429080877fcea9603", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "5f2deafa7d47b2ed264db3242236e7df0e6d3b90d5e477bda608a259570aed86", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "84c3f2d6b4d2ff2fe121e9f5d38cd71339019026598a30ed3b3175eb9e923698", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "0cca8a1fdc10d5841efa18d41c0086ce5817b7979ac4b51d50f53c44d632ec28", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d3e44ef37a9e9e384f1cdf679c3f3d8e801ff21a5110d6ac3f27b34d8326b9af", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "9984930ff382445ff66801ed6486054ccb91e0805fb4174e10a8e77d9af421b3", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "b15061258b75e3a019a010941f8ad0290e2138d74095822eed9e0164753bff26", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f5e4e9c6940a8b4a85d615122456015a323255333a49a520b1f8b9f3aa64c46b", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "342d16193e2cb4b527dbc6432f4c3c3252918392b27b0c7ffd73ed02d88e9d62", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "6acd58042eefe870d4ebd4c3b4fb2b54fe522036fdfd79a9ef6059ba64a64641", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "efa71d4c702aa291ee169cc2e3671d571475c3078b5936335f26b43c45e06920", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "d715aa7ba429d9950e3cb72583fb665926d13bc96efedb1edaa7ec5757031efc", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "6b2ac7ae1f736519ac86d11083b67f822f0007f564d88345af45bdf64fbb5905", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "d6b4f6efd2b1d19f5c70f598ae1326d7b8782a82d020c38c3a0cc1ae57f29981", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "65969cf5e8ffeb3937099629e3c6c22c196ea535eb0302715861c8837303398f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "ddfcc44e768be54fb420abf79dc1f0b7fbc2758297c1f6415e7bdd85954e8617", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "135b8e262bbd45d04e708cb8f990c2cf79a81ed0b11a9a0877085548822cf4d0", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "ecefefa52dc2fc9d37dce0d7d26599ebdeb278e6fe5c44546ca7b388f2f74f21", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "1aef67f0e54a459ddfc0b7ca60ee1a197398674d433f514a5ac013375c3f0742", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "d52a97b9fa1c017dd1a74555e31c2334c6d95e46927ab35ccd1f8b19cf507e8f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "dcbf05599c5b3257aee0e223ab7733234a97c2c44d87e67d03578c15201e6f4f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "97bcd70a5b8d0331189085d5ca78550bcd0d3f9723cf4046609388af5f1c6547", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "fdd3f5445b60ae8f9ce1e29ce6d0109ffd0bd3489fb43960729afe6f27a49515", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a26bb90fa974393ae81c35bc57a88ae3305acd2b80b48c5e007f0777efb61007", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "744d7848d12b904a346e59d20da31a48c18d290bda4cb8343b186c801c982786", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "797858fda88096c0858171699756017bb16f8712ddc06678678da3d20a046ca8", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "bbb0e86f899dadb033338abe3644bcc5f96505947f21a33e437b70ac0edb8651", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "e8b3c70c4ca4331803cb827b9accdda7890e7e90319cc3d0b8a8969d16236511", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "4b0d7ed03156721d5eb4e6c0c9b1c3d644649cac967db21e563ade292bdc25ab", -"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "f65e165065966cce6fc0703435c399c16bac1bafaa8de9d64f382e6c538c5b92", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "9b8b7dfa66f9940a2428a9c8752722bb92260edff7fa5dbdea774236a601ef9f", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c72c5a5cc233fb8f0542f54145ee82edf05f2216835635269a3b634d58a1842d", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "29444723da74b8c2a579bf90cd86863af28ae8f7d7b17a8e0a3dfcf7a67da3fe", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "0f4cf24d270f7ca35f92532b581e16e78a98cb23afcb334a3fd64ab8308ee93a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "fdc905fc6d6bb771080835bc4eb949a9d05f270f195e65ea3569ce6ae8f8c74a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5931b76ca29d80fc6bd9d562ef8d0cedc346f57215d823f6a70aaacb9619761e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d3d696582c0163c7108cd38d3fc73796b77e7f383715cf3c5e3a848a75deaac2", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "4de0d0fa9d0bf1e0c65c80cd07957cbdbe1b82f13eb61542e0b9b23cdd1a5197", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "8977d30499462e908f52426be2aeee8fdc30ef1080858b146cfbca6c6af2b2ad", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "8977d30499462e908f52426be2aeee8fdc30ef1080858b146cfbca6c6af2b2ad", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "9d9c6cce8e6efbbb3fe609c07bce07232b802e385727802a48750a1530d99732", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "41f6a27a4bbe55a47922d96a218bbc79d35596e49cc67e7a445345069c8e4911", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "4ddf614aeb7c535c4f8bc8ab29fda9949daebb867424ac54e486f06678d8437e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "4ddf614aeb7c535c4f8bc8ab29fda9949daebb867424ac54e486f06678d8437e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "b650a0a4bcd877354874c6bf9ffe2528d5963db885a103468f94dd03003d7e83", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "0813b563dff00bbc877c506c138d8072ed1f7cbc68c10eb6e6485f58e94d87c8", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "25ae7065b2da7c486be38ab6965acc3fa5c6c10291be00a5bd6b9a2010dac1b0", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "25ae7065b2da7c486be38ab6965acc3fa5c6c10291be00a5bd6b9a2010dac1b0", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "d0838cf2093799d86c3dff084ac958976787d99980e152bffe2c92764bff9cc8", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "44ee8a217ae5098018a5d66afb8a208e0a8d5ef86e69ca9c9767fc6f2e87b536", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "9bf0468b4ad28a2ba4fbe6df4c62d6856a821d6245fdcb36aa56768557006705", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "74636f72ed305683e9c3526942871a24e5946a85360c552421db5f103d67c75a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "1d19df4518b618aee1f104f47ae851dacbf5d91f833fd1cb89e33e38d9aa8b06", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "b8dfa8d662bffb376830bd476e57e3f7a3e39a2f7bdad18156f45100651ea522", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "f0a6c76719fd40d063398e19674f7f5da9a178ba5e218fb681a84ed0d431d329", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "d10866e71d5002f690d20eccf61434bc32f979c1d89b941115afb30d893d0832", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "dcc1a216feabf89ecdb3aec9ccbb0e51ddb412ad64a63bbf3bfc1ba349e0fb3a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "dcc1a216feabf89ecdb3aec9ccbb0e51ddb412ad64a63bbf3bfc1ba349e0fb3a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "0c844233cbb185b2b4646ea652537a4a893f96d1ffa87a82f65dca7b406810c9", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "68e1630c59d2bc503fd3b51d9b92f013290329cf4b25bdae4bfcd655434a28e0", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "15013c52e15ff3db19901882e533009b253c1e03c75013c97ebfdc60b096c501", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "15013c52e15ff3db19901882e533009b253c1e03c75013c97ebfdc60b096c501", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "2d317d802c61333816ac25c320903dec52ae70c8c5954c83682ae55e6a88af03", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "5436d7ad9c560fb82533094485caf44c26072b9e463ba47bc4cb16a7fcae6a59", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "2a553065591e07fc61796c4c30fe00843efe9c4a048d809a2aedd43aa0d7a1b4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "2a553065591e07fc61796c4c30fe00843efe9c4a048d809a2aedd43aa0d7a1b4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "7ae250ae4a531a0189b21da6e999d175b1c67f1633d05064bb52930f36864124", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "86e41ed2199d1709f675b8b81fee7b693b7e5bf7a053c6b3a31db8d354bbfab4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "58e071eea8b578747b7da9e904ffbedfe223cd006153693c31456a9c086123de", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8cea5bc5398d2431bb26217b4e65385f4fb4cc55e4b2cf4598ee09331308790e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "d693c7f98b721f7fb02c24d037c5c46f9500493f19a293a9d4f284e6be58fea2", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "24901d79b4f02752579d83c4c2cf9fa1c490f1ee1820dba123d48b6168d4bcb1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6073715e14efb84ff2cb02fb5686b8856e9c4bb3a51cca2371538e2e7339582b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "728ee9210bf924bd331756522d27469cb45967f0d8a5a7b4db0a9251afef4ff1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "278d33da6d0e48dac1400e5a5f7b68889118e2ec41e7385fccf879e4521a9973", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "21aa1260f87d7e417d8765ac007f308db57b158c8d095c3573b88f306483acf5", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "09484bed6e3a9b4501f4ccf7b20f88b52e89f384e717d5a74e2554994c27f718", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "35a91a0eadc5c76cbb3853beb408235f4af5881b7621981dab00b34ea88e38de", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "99732c70b8525371a226aabed800faffe578fb57edd42565cfccbb6ea5dc538a", -"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", -"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "26e86646c019fae74d83cd232fcad54b6d328bc7fd203c25473fe09cf1106081", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "9dbaf87d255c2180b0857e6af02b8d8294a3c6f7493db9800c06d952f83a842d", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx.py::test_information": "30197b89e17f6fa38685e2fdd19781a2b9c37c47d02356e50c41423804e132ce", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "092c1d46c801cda93658dfc8d7063a6c9cb93b95c7b1b7ed8fe63293ad3d4b4f", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "e5f850f5d4dee4f887bb9860679eff5bbd9d5b594977a7a1592ba86a77ea6be5", -"T3T1_es_bitcoin-test_signtx.py::test_information_replacement": "a4a25f0b8c073cb3a03a71731dda087e015b4160e7f3866ce6e1a271a00dbb08", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "9c51658a803a2de18476f46961093d22723a77a42a534c2d5a07e82b933f3ca5", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7ae93e603c7376f1cc904b85362c89417c7761d3ddf3df46388500db0d6994d4", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "0832f29b1f4f6dae9c014a10571fa7df21cc938b0cc42f47e406844e5207f2fc", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7ae93e603c7376f1cc904b85362c89417c7761d3ddf3df46388500db0d6994d4", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "0832f29b1f4f6dae9c014a10571fa7df21cc938b0cc42f47e406844e5207f2fc", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "363be180286c8f11f48807d56a72f36282dc8e4462e1d74b79e6f321407788cd", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "bc2bb62c013772a6f4d64f90eae82b554694286305a5a41b5b9a2f0e07487e4a", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "28a869812fb864094b361d9db78d24a871775c35d104c0e05b3f4bea78a262c6", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "dfd486cb6c0ae7457d3ea9e90a8330ffcab03b5d749d6e41fedf6447ea900c50", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "f440ff1d30aa4c53da3b5f401f1cbe429d2c294a5030d8f092e550ec43c19b8f", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "14fb84e71ae9f553d5bb08d0dda1294ee4fe9cf2fafb534e89f0c8577715de83", -"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "98ad9853dbd8294b85c4e9bb3c0104572d9a2645e920a8dd509ffab9ac26f5ad", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "516d8486215ae0c5745f6e16a7909ba08e0029c6a0d094d697922cc083efafab", -"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "1a57bbbbc21ad10327fccfda5a0f030cdd11b13ae0e90b866eb477578408c546", -"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "e1f9bd7b63d466d30fb6c902a09503c126d73ad7babe0104d9eeb9c9bbf0d81d", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "b87c784f458662adf5c622f226f0158c1cc43371ed91e75db63b3421f06bb7cb", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "42ac0322596cf78f9deb168375d9de0174202bfe5cce6c69803236d19872b25f", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "b5a81e44f3953a72ca21b10771979407c673514df07a5d1bea37261c92e8668d", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "a7c4eb8dd29a735914ac9ff677fd140615eb57370c69f755c7df95467dc69547", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "ec3d5678cf061ab1a5e3241e4538fcaad0b72489b8a44b38acaf60b8cf94bce4", -"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "6673021b142d18ff60c83c522a2e9070a6654f573ff6d7e73dfef7635263e366", -"T3T1_es_bitcoin-test_signtx.py::test_two_two": "8cec7d917caf4a260d46d663551b5c05d5b171244530f75b525b3358cfaf1d8b", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "86b50505aa32091a23d1f77c6c2ef9657e95e492d807b0c1b45d0696ee9ebc43", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "d49fcec7ef02d154e1754f54d9a1e57cb7b91e4a095f0619f48acff7eb6c1eb0", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1c9cf9d8d6b16e7c2983652d6ad6e71de8c4d55d7e64895db7095ab348ae7762", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "a0b026ceab56cfe2bc62402ae76416a1b88c71ff07ba61db64a5ef383b25483b", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "430872bfb3d5ce69b91251952032f3327226f74e8728066cda39b73d0f9f82bd", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "28a305b707f75b299b75359590a1b8cee5d60b5b94fd7b28305bf184f96c2253", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "ced69375f7e12beaef0663e73a05db59cd2a5831e7b6be59635e21a917c8359a", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "e4f73e3554305c41623063216269116971033f7282fc89b99eddd6b75e40032e", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "7b9c0ae82396bf0accabd5cddd6f981f5464a7149a3d9f1051dd0a4f09bb7965", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f4ef5f8af31e8be4212e8ec4e15879027276dc8acda9fbf1fc41e0254b9c87a3", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "1b976ee2d29f392248aab13088da972cd43d293bb9a8f868716434740387e6a4", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "eabb65200ad815690f43dc68522e4b91b7ec87e826394cd8abf93009d925d2cb", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "500946dfb6fba3dc574102ee87dd6dc9dee383feb3624c769bc555690f077d27", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "b8c2c08c044b1c91096012ccfacd5c50a1064a27ddc332c1bdee3ee68c3b157b", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "8a63254f364b044b53c51ae12098a8badc360d4b7b09b74f0c8b9f0fa0ad873b", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "d3785631e139db7f3c00d78e78b7bdae1d8b3f79d07e50077068b94127b3f314", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "42a00fa98c290f5e68e7c202834e16676f5b3a691638f4177fb0736468650b36", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "04b0636ca6f256fe9e79393e187a22edc0127bdb8c57f23dcbba6d17a3f5bb11", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "e8cc05b3e23c1be2d54b3657f48b834f3390ce0425d3bf80ef7ccf9dfefe3acd", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "532ddfa2a37b83af770deb0f376bd86a9dc6f2304781dff220208ebc3e5735b0", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9f4fb4ca24e451a38196b521b89ea034fad9c8065c40b762f40eec287f947af1", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "532ddfa2a37b83af770deb0f376bd86a9dc6f2304781dff220208ebc3e5735b0", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "9f4fb4ca24e451a38196b521b89ea034fad9c8065c40b762f40eec287f947af1", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "9e748b0ba4eeadfad730263b30515ae61708e21e920724e91ff3305ab37f3b14", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "d7a5283fb30d76c4e19cc9aebd8a386a89bd540cdcbefe1e8342bb5ceda64143", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3792fc93cba778f943cc912d21bc38cf57811cbb4c9e24dba30e34f7f6f4bae5", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "45e143a0db817ad229123ddab3cb63d53f25650ed45a430552573d02fec12a57", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a238c7077b7ac501b8fcae467010ab55dfaac2a2bd2f6a3c9dbea4dd71bf771b", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "eab039db5f270e1dcde3c6ecb3810d6f20d79bb819e510ba24a5492326e60659", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1060c9b344a4292fd30185cf067114f73331d4846905bafa5b16ef8246aa3e9a", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "2bcabd059f2058c42fcb7d175bc334067b9b498e1473e2a27c97a39f0b20f436", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8809a9f8c588dd4f534fcf076dd48ee763564fd45b19b2dd0919feca9177fd85", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "44a88f446f6d33806f67e38eb23a9f61a7f7fca0ad948f39fd6fa255ad9969ed", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "97301f6d23217b870c1a44697d8c138d864bb4b859ac6c399e0d650bdb413b7d", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "1f5569a3ac994d60a708da889a66df002f6a9caa3e7a6e238fbb974e81047251", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "ecfefcf6523ce2117f27c589b65042ad839d629dc29ddef5ff55da09e2f4736a", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "ecfefcf6523ce2117f27c589b65042ad839d629dc29ddef5ff55da09e2f4736a", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "73c08938bf36badc082530311ad5bebc63965a32be2e9164804697d37631c88e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "04c0397dd5f41d05ceba647aeb7268b392925186168c7c8355921e4058cad5be", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "42053e440d835abac19c1339f250d8785f909b29686fde1df40fccc33381add5", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "73c08938bf36badc082530311ad5bebc63965a32be2e9164804697d37631c88e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6189ebc0354d81f120f544d558ec776ac5e780b2ccc3bf698c1c777e6481fb66", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "c0ee0400211bfaef86e69bc78f0636ae80774831bf7db1f3840a55e21e91953c", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "e4f9568415c85334963ec23a1659cacfd1ab0c566b8e94f68eb89432d16ef977", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "70b936e5bbb0ceb5adc9f34f8d9d35358c0c175349b145b40cb2d18abe6bb1b4", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "883a23ac99b1c93f8c906fc2d10d082733d17962517cb63157149942dc9b6d8d", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "a46044305c385a0b3ebe483b4133f9660475f3d3f3f0a815a3c7c7e6a7c577ed", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "db23d373f28e1bb9db7d37f74ed64d3acfe472bc8b484e7988091035bc187bbd", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1b61852baf6ae54f773e04881dde9068c66b446a13153cb407a1359969c4105f", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "6b21c1698b9d8a6f8ab1b986ccddeba856657cf915179398f3b8bb09f8aee95b", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2715a046eb49c5b2996470eef20942fc40fa4828d634b59b191564f1e05d029b", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "0f9caa46db414d83fcee593193ba69887004e1a441fdb10409aa04eadf69000b", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0aa263bc6bb6682087890460cb9f3fb5943aeb6cf3d15bab4bd100519d4cd12e", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "b0d4cc3573cf6613338c5da49f838edc888705215c666794ce7f0f27ce823a24", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0b50a9e211759e63539001e61cc82b6e823a9b2352a1934ae9c08c99d7bfaf4d", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "506f219a8c061164fa6beae5c13e2cb8ad7190e09723fa35d169c137b3b421ff", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f7678e8dd632fb5b24d4b5e9f62aac33073c7e7cde81d6f81e9e012c818abc59", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "3afcf24fd12cf5907e0367ba18e126e76733170ad2d40f77a5b55b31cc8cc645", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "c6b92c301254799d65a7ffe4d0cbbbae754077bfe56915fb4f312a2d7598621d", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d4e2bc16ef50696c3612c92e167c2135f31b93bfc088638e520ffcffeb244faf", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "dff8d654cf7f60c978580a268e9725005bda890c125ce519c9d6078985bc5056", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "27d9ee431c91ef3c4a8501d707e7d38cf6337e367203a6517541dc47b744e683", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "3ca0ff607b0362a9e6cdff0b7bbf740c19cf9d1b853a04cb89f9737b43a40e98", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "9d482381700347a42c708b40d550a196b7b823d4a69f00e1f7a7a38d6858574b", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "9f7232f62371a7b84c72ae844e318460f814df4fedb0cfe6c9eb5dd9a6c30653", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "8759061f0a9f59f474a2a81727baaccb74e26aea07911a6da0d97a81ae12aeb4", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0340e423600e12a749dd13170c0d28addcbd98e29318bae252d281c24d543bec", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "0b6b0bf59ab14a8815f637fc4ef9875f1c2a9e3a04fb171ee7e32b85cd6449f9", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "9445f39505e1cee57bbce9029d08bc2cf00f8a27be7b569a7da4a2e1114bfa41", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "e6f998a112ac52bedb39b76ea3396eb18ebdd00b877538bf2841327c7f2f7533", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "95f5e020f24fbecc53bec2b08683e2bfdee333ff11eef0ed6226e8e17514c715", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "64076abc2ca6f3eb8b69cc40eeaa698bf121b6a57563bec6370f12aa073ffe9c", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "2214aa5a1d86a54318af3230f40660034c3ac5fd039d85086114f37b345a8ada", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "d51c87068e4a905d7e992181d37927623ab0ef0790e7550c2f5804fa08479c27", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "dd71c7c0ca953a94cf6f810b0d830119f35cc2254be8bcade21d36d5dbf5e5a9", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "caf7673581567bc11443c01738547a5d13c45ecaf9127c25f2c248091d3b30e6", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "36f0bf9341de9903cfa82c661ecb95ac45d8ac3b834dd24ae49f04bfbe6823bd", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "d4336ef395214c987eb548c343372bc0456017783f0884dcf2412e01f78cd9bc", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ea95c8b2a5963ab91880d44afeca08444f7d6a9c951d86a693fe1dbb45c750c6", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "8147da273c2980c2eb9f208064706e64e530b14dab15da8c3fedfce7a8d4f165", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "3949c7020a6e4c5f2e55f7caab314d0bf67ea08c2c3582ec66c7dfb1ecfccbfa", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "22e4fe01d48c8e7d006318b4b2c53bb9f8baba458b35406aa6155236b431f727", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "97dbed4999e9530fadb61d2893502a7c94fee8f548347755d374c311c60a2dba", -"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "9d0d1c4842438f4d4d8375dcf53a3bdd8579823fb76be72e9e5880d2e0a460f9", -"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "655ee1de24f10d07e90f8993493e60988a98507ba7b0bc0bf757326cd37ee57f", -"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "1f2caf7a70b670ea5b0cab7f211c8f8f4062af4e7ea81ee8ee7409741c283209", -"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "c8de522280fb812ae9804e89e33ea37cb6e531cf3fe835750133d91c4c9b6973", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "59e355900ad9c7559da5db8bc94a197e8fdb6d4aa0d8ebe8f8daa84cad62cc4f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "dcfb6a54ff7fd8ef200b8137cc97b145e785f41ff409a4026c023361d2d2bd0a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "e4bb449d64ca4d6c92f253dee3bd99870ff65248cb086f59c172b41595fe7551", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "5d70b466935822b6c6c5e6a1f7eb750a3a425379e7c3dbb56ab5cdfec79fc98f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "eb2502b81e490c00ab1a8603ef676ea9b4b88b51f5a505118d6233c1b2511fa2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "6e5f80f927932d01089d61dc814db00ed586b64ef1ed69fb511092c24c5ea5ee", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2c19fe123edca761389c3a3e07abd28fc5e50d1fdfd5742a2be939b133f18899", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "98c6beb11751523ad48e591e39d3f4f68e0f46496c16ee7ac0163c26e0b9debb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6838552f5f44c17b5acd20d76cb1e07a1183fae55b2607bfe6a64481ae7530a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "5e9ea30b38f1bdd2ae8fb0ea50cc674c45a9b0bc4ad1aca4b8b0728bbe44a59c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "b8aba1b6c801622c0c585a1901ae6d952d36e1e0e0c5f02a810df292cfc58107", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e913f0b008dc147878adcc367777fdd0da19c0fb8522b3c884d61a6460feb9e5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "26743d9e18e367bb395fd49b86d14f3d44bac67ab25b71ec994b9b3ed19d516c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c95c8c9d5cda1e8aaf46a1bd6ebaf169d5579501badf7bf8ac0755d181bda3cb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "5ecd3a04da63ed92ed0742b527237d48bb248fb1b5de33293e081cf89765a539", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2dd3a356085b2134a4ca49e9687a4e90b1fd7f305e368e83c2de45e7f1491e9e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "58bf0e6cf1e0c8b60a3a0929b24154b244f8282e28d44439526728098bb1a4db", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "b0775b9d1a6f70a9691193a1efade8613d39468649746cf54d7ee8b607f27033", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "92647b515782cc70c5a92f3d2fb661316532f76dc1334e7e27308ba1b21d2616", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "59359bd5a1cd6603b8c4f319075a0065bf1b244c6696f8ed8da3b9540a217764", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "6e05225b87f28e8822a659df7afcc1bbc37e137e1731ac675d8ad36d1341f531", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1e237e0f9c4603f803ad94a37e3a55e1b897006e4cfc13689a538f9d18cbf23e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "7f49fe8da6eb6adbc9dc67d1f623e2deec13320e962d65f026c523dff005cef2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "2f4ba1c73aa550f6a63f59343d0e098d41d78496ca5f6961ca4cec4e8d191bff", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "77ed540903041db930c4b2fd08f234d4bc5d18d76b1a5aa3b085dedec02f3fcb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "f11368ffeadf92aee246346bff21ea574c540783d89bbdb415e58f15abc22fd8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "63075c7f0e8de1b9aa777586edf886d2fc2562a12802d36ff07667f98197a67a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ef7133ad48a3067c3bc80b257ac4ea77cb04d0775f91984b04f137255e7e3041", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "ddd12e413bd42d65975df9f01e34c3caed1af68ca0e7f835f322f6f9dd156687", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "0ac075a80b53a004103eec7327b2b6371239c1970442a74b05735e42779add72", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a41b1a015983635fe4bfef040aec5c7208d6a1b5230d29b0799bec99c4f795b5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0d1b76c23e117e8843601cc3018737fe549ae26fb674007b334af3e6d7087396", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e1e82251a53579070702580ff1103087708167a09dfb770d23fa3229ce88416c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ba46ad5a447dca20038cb30e8dcd1d188b44f4df9e0b15297962cb96cec64cf0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "51cccda41dd222cff0590d4173023768919769f2687897482b06b69879306edb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "f0d94aae61a5080908a482ed570c148835aaa4ce0c5deb93bf1a8017955c553c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "400ab7595f38ea923f2f8ef4d5494d3d487e1dbdd4a5a6378ea1a232a4666aa3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b7664b3fa36c9c4e128a95363a1be75f8f881b688fa951222eb9062948b66352", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "ce681b43f8708d7946843f0161f582e04669a51744215cee76e8a2c1323a2fc6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2c0a5bb5561226396e358a30191f9e10c8d54522fada452529a37f1e87e1bba2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "cedd58e10f7821a44ab7713ff3de22e65aa02c7bb6a0e65bb9e29b2b025f3d4a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "9b57bf9a10ba33ff9d87a806cb231c7328580b4919afe92dc78bba2a25c290a8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "673bae2adef7afb59f8dab2a41507833b746253dc808752db4cdbc5bcb381909", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ca4dde19d88b69842e31fde653834c75c76ea552c420c3892cc2efb25c0ccfb3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "834f8f094b9abfecb12e01be8345fe9920d12b86e3e89315dc0df77b308bc4f3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "bd85ad18729cda62f40a3c1deded531e1e682b776c0939a46fc1350505abcb63", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "5d80a50c6816dc2817ebe06035d4b7ebe32be3df5386ba4df75612bb6e0ae9ea", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "206400bbe9eb93d133150578c34af06a2dfe3033ac6a31ff79d3d3fe61e559a5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "c1beae7f6aa8c49b33bcc5746b78649ba00417eeeb10adaf9b1b563e7643f662", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "86b212e5a23eebc1e6ffee453846b48efe6bc3908412391c4cbb86a832715e92", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9a13fbcff4b064db4029e54dfe57a5ae2d780531b39386fdaa6adcbb79977c0f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "0cedb89ecbf5799cfadb5defc240e24b46466c515f5ed332ef635dab0c5b98b9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "22c9e84925d8a2ff4ba5c78c7dc1b27ae63da7edfa296f17cf22a8cbe17cd959", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "6dedfdef0ba78fefa60f36521d46b148d4f63f9d40ee16f90f932fe9f1f8c98e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "8a48abc516f077355e02f74f2b097904dae3ea54e0cd02972b2d9ac313104b65", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "1ab44b41f6db3d1272d8fcba2cf36fcdb010b29219dbbfb573ad7537902a0076", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "96e02d2f0163ea89c5a8b446418c976b91bd501a024b934b9e2944f6b13e17d0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "b4fda702853b8391144c9db029353febdf269663beeb009e9bef66df43341a0e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "da7d5776d92deb6881d7fdcf27ba7d58c8d8ed8f1ea3a579e7190c897ba90cc5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "1e454dd92a893e6bf66d93c7f3d0f98f7d321412f76bc9e33ffdb992d639e453", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "4d72554d61d3367dd68b747ac2ab8109d5be09111f85de6f5220353e189138b1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "2c716e9db9910bfa03e523ccc4d35a70b66cabcb26a72749f76aad238d57f2ae", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "0ee6815696edd9cb2410c873ab5b2c55215020276b72e5194c0f1f0db3990f0a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "17c74cbd92b5ea7f3df2aca4189950f30e8bf3c03b8729fa574ad162320303ec", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f3615d79c50ed53f53bf1f3f9968c1024fdf76996928618f19b93380b2bb81b8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "d8ea0a1f7d3a5076fc69ca102d09d730cc67544319e4958bd57e4d50d0d94b3a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9b93b40489b017a95344e4acf43dc42fcc80cbd24e90c81b7d9df5aa88654098", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "f483395d2112d62aab4293431e817d879c7ad921f985cd75a153f7cb604f309d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "08d666804e473513cb3bfbb172fff71a314bf0aff73398646c31ae88810cd2b8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "0bb314dd2992e22aea5f12c721bd3a099e32c2d062fd34da60b09e585e9a58f1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2c46ce0fa3def68ce05441e582b2b1dfaf31e0c2826353068210205791665a15", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "885a71c5b1a4201b3711b65759e7bec192dde334efc215a6e62f2963f891ea34", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0ff028a42c0d3de13b76d12e93dad860963f036c410f23cab098b6dfa40204c3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4fcf207e8bd4721493347e8991cfbc4a8557ef603941c76defec0dbf276a6a0a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5228918b8eec488834d692ffb6b856b11c9fb390dd03cbc7669c60af7ace1516", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "17d6bc09f4895320e8bf67097dc4fa8954191c6ac76908689d47ad21098e6261", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "3cbcd35d46df53249a96e397ed7cdbee67810bf33c98d13bf76f484bf2f59012", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c3550908023a0a4987006a293f94f397b5c0daec44032d02b71636595ca799e5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a78d017a315f664a451974c021db8b9c9f0457e1eb698e869acad0e2162d1095", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f5861777419681afa594b7d2fadb0f08bd83a3d8794f5a082fffbeefee4eb74a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a9965d207bb2385b1174f4cecb16a73c49bdec344734df0886978a3b3529cbbd", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "388d35b0e0eb15b5b39aec9db3191758d2c3d86e4d22036f4a60e59b15b23882", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "feb70f29a31e13655840e78e746dfbfd9ab48289d01167a26273df8a4008aa83", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "86f6f626447b0f2065e34aae133eaa31e66d79e2459854a2b44fcd9b800e0575", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "7fe80ab9eb77acd148cea00ba370b381bb5baf9e20991898d7015763a9364e76", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9cfe0c547495d9b209d67e45274529dff8f987e185dbe92cb5ad7f4ae8639dd3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "4ee28072584eb697ab9bdc9dea77e68c3b307430dd0ccc7752507dd1f6a8c7f4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "c9c41d2cccca4bbf3afda0199ebfb59b169c7d453c05b9f93d2c388f92523325", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "73086a92bea891480db93e05e8403fa829d9a22f7002aaba08b94f8a322019fc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "91fe68b86a41637724b00baf46b419134c19466da6f0a09a79c9ba8f4ee620f2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "0a58945755af91066f91b8038abb115e6f6940812718ff6350ca2af603688be2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "40d2967f3c624b30eae7c31f85b6a81bcee47730f9f3199e8ac20db6621ca975", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "60285715c6450edbe423a19e8b0df400d5956c1640680244a4347c91ac6d745c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8481e7ec34e24e41df8ddc65b6ebbf64d9a885e5dfb463d775cd7227b5f59334", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ec692acf6d364ccc1bacef8e588cc50531abb91151552f80ace98e046ec57285", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d1b8c40eb2f687ffd20c54f468df6cf631c7102690c312ac107d86777febf764", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "a5880bdd9b88d557d8bdd0d0ac0d484c0b02ddc0ec7f42b04b7c74e87607eb6f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "2b1cfce042e8a3dddd7b6f8832af53d84ae3be67c79756d0568303c36b4acbf5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f4f420a89cdbe7aa3ef5157aa71edd5ad338bfbb1487fcb882b07f0514c5016f", -"T3T1_es_cardano-test_derivations.py::test_bad_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "06287e5bf23b4db3bb9250f74d09c4f7e11b9f7d378f0eb456011f0c7d8d8be1", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0ea2f502ad8e13e1151882e14215489406db4e13c1da52675f334366e5b2cfbd", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a207fb306e49af6a5bf1350a23d82f759a2344b0f1b444daab11452a7a14140f", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "276c66f889a1896bc1becb93ef19a06e504694fb8ed963c2dfb68c94a30337f4", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "6c79474f064ef22108b833ca04ea3aaa75decc6a148ac562640f1013b2626560", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "eb30959102f948ab62733f5706c5f5af1afb8008371668c6068db3417396b6a5", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "bee25ee8344afe2fb1b60f8562465b22a66a540df3a2fb4eb950b734f75601e9", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8d78ebca578b143c8a3f3705c50924c5cf3959ec868a9ee851965462891f0c84", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "626a2ae22d2d4b9db84953fc7a7f9ec727b332667d2c2ea94b5b42cf0297e1bf", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "d5b4d6dc057d23a7c0700a8227774ed254472a65bd357d1cc39754770ff0f5d0", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "808976bdaf1baee3458322f98b86f0ae76971deb1264a3460bc7dcb009236629", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "8c9721daf468eb1ba416fc7074f73c5742182a58a01b174f8f79b51190ae4f88", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "d89c872bf1afc6275a1ea61229e01d8ce455478858296cb64eae09570a68f62b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "906254885716b0b3dda7e84997c5088b7b8d1c51527c5a15ea6a44cc99da0f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0538f0a988f6861777907d40c5a8984fa0b0b99510c7851215d727946a30a062", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4197d8e569897ca8d08f9bcaeb489501f20f6571b7df0a5b9328a0cbdcc4d0d9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "474f42ca872d0510353365a21dacf081dcacbaab834fb8d959cac90c026775eb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "481ab377941c08d97a206616cb2f52e37d573759475dd91d9f9aa1b9709f2ff6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "92d218a0409671c77c3702e8435fbd3f97360b088afe4bc1f2c11d41a32e942a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "69cfdb39e02665599c0168d69e0419a0d3601604b5cdc2c1d4ac00c43b373785", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1952410d46ac1e82f5a941281bd3459016b6e5dbf7dc4ded6222114d7bd13b97", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "36542e8846977858b3eae09d937759b7367393922bbf6b819bd305d24cfd0095", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "09845a753675edf5edbf92cbadfeee40069e7a7e40c015f62b087b94610ebed6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b49abd13fb80d26ea67bedbccb1003893e7aede5f58d7cb42770880a4a3f1e81", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9c850c79e3863eeb69e63a613dce58bb680f5e0a41c1f59bed3e66c38897a17c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9c850c79e3863eeb69e63a613dce58bb680f5e0a41c1f59bed3e66c38897a17c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "a889fb44d76197b12fd8deb04a917030c0031ead49dd0c295e12f8a2775d088c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c027275b6bc9ec1b68a5076b9c008736d59e72a4bdefbc71dedf37195c900776", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "c74a7e508252d2b4e5a868756d7a86b20924da1bfa640b772d06bf005c452d57", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "bbc51befed8106fc093ee8429e9ddf06b0b150b1a2c42411d430b1ee236694e1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "4396c70da4293ee86e083e6f1c430c0f89a80ca59f8615d07af73371aaada577", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "1f062bf1c22f06e53b10c1c90d9fdd3d1ef6d4c94b386794f0e23a96a46914c5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "75d014e40c761118e1df576297d293a50b611a01023317496744dcf6da043e7b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1ec8a170b0af13cc706f4bd9f70078bb21c9dc1a7d681edafad90b933709016b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "106a184d920dc0daf509235718edec6067843123150bf2d6d3c6680e2d50155b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "4396c70da4293ee86e083e6f1c430c0f89a80ca59f8615d07af73371aaada577", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "1f062bf1c22f06e53b10c1c90d9fdd3d1ef6d4c94b386794f0e23a96a46914c5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "8f369d8d8115123c1a0406f3bad78cf0cffff2f4f78f12d70abba83feb67cfa3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "633b16346e144adeb63f7e48fbd64dc38d81b81b0454cef96ccde44475688859", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "88ccf7795d9c3672004775c19429e1f91d222ccb61b8dbcd108ba55c0d9aa363", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "865155a1fe4aa8c8ad94dba40fa79312c1a3bf24b42032449624faf7abd7b55a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "39d58ca9b01cddf76b2757ce9847073043eab6353de0929732c0e7da3e926845", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "858e595c5dd8b5d656155e1ead3026e79f790829c46afd8e2e34e2207cc8f9bc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "17a392b541e633f9e3833c6e4fa2b35e6aacc55398e0db210d5c440338de14e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "1f98b72d81309dd96930a2f05e9164be1daea980722297172c0e723b2d38bace", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a910885ed3480eaca4a2fe013acd6d9f3d1bbe6ea3a9622e7f02f4b2bf9879e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "77199b22cd5981363016b0ce404e42f660833b133cdc62b50b036fcbf5f43777", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d223c3e651e70fe78ec3e5b6b6d3c3fdd06fdd4cfbe761a1b578f270888015dd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e1bb7a9ceb6fdb4193c74185cf3544f7cba084a67e083619657624689cfdb907", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5278b236aaa976482d2f5193209457abcdd51a0d472eb0896fa9665d7f2a9461", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "14bec6205be447427374351dd75836fa82a0183f820928b9c48bacb474ce9305", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "9e304a0c5000f07bc255d5d652081ada9804920ad5b2ca6445c4a6740a0ab348", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "1a55f71999d34d82b2298beb67c0d94d0e2c788f20d39b45c47aa37ad8fe6dbe", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "3411b5d0461d3ec2e46645b3fac7d26d2fcb7434eef34b0a7d1906a074f8b2fb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "81940226ebad77adf617d31ba9d3285c5694b40cb22283a688c4bedd4d85416e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b3e6caf7323cc679582d215d37baf5d4afabb31d3302ad82c1a1506a5bbc0cc1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "ae39e305f5baea3577952a7ac3149d7bad21f7ca3a7e811792a9f8545e1d243d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "355b16ea1d5767eaa15150763816c6b3d25e4a6dd41bc92eac39dd4a225b6921", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "20f2a9a13e15890f1f669d197289e2b117212621b30609ae948ae9f7ec4dd691", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "881762f87863c232801013329ba1765a49d8951f6d69ed4d64734ddeadf1f8a2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "b020f42b30654529d1eea376296eaa6cd8e27c2f1836a26047e39a96c4884e0f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f8e66dd4e729e7ea9fbbce73260ac332a0e4c5967298adc077df5182b42fb106", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "c3207703c436bdfd3e1d4943f58103a7577b3e65f40b325fdca2b647968203e4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "ceac59a0f1582a21be84a536cd8593e960960e56b488a2f54c3b19d656d2ff5a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "6834b411d88d39e6f3071a90f46e95e4a208f65cfee2127cc8e37001557c5346", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "5a16a64f3140f7c389b0fe31130f5f294217dce66a3baebec711b124d4250794", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "604389f34dfe2e0cfffdaeb3240734b9d146ced9e983551e728ec5673812d2c6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f8055fc3d0e8cf6a7802ce737b364fad69bac1f3290d9aefc52b75d07af57fe4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "caf41f71a9b3fa10ae9864a87fdc7403d48d7eeffdea4eaecfea3c2cef3f1f72", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "e2916347fd20d8f5407363b185d7c4e1341abdfac217015316cfea4d16543c1c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2f3e47b01e1957f356b6acf24048281af7c7b3889e4d16983a98feceaf02430d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ae7136a9c82302968e88ef958d21256b3963791009770de828ce3837b98e2186", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "ca34e89ccd20410e1301f864c9371c9be3e63991cf9c299c441c83eb312498b9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "489a7376b93d1caa83c889788a762f46c1f6ec4577d0e2753013f1162b9e8d2c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "321d00f3476599733b43b066c9ac38a3549400777bd5ef1555519d662fcd64e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7c0a59c98455d2f16e2f028a7636d76aad371036f6b8e5b0b5164c796296144c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f8ca850fd8238d0797c56927710654a48b187ae0d630434fbcf437e51293927f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7acac1fb4aea9ae638e70890863da73e371152253a22976a2b17ef88a274df0d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e7b6abc9b166d7d586abe7f59a17d099fab1d55b5a2b916a8e1ad30e38cccbc1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f90b073e61fcb1f9174be4a1e0b40e290e7b00647829017ebf6e7ce62b067a61", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "540d3d90cadf5cbd9dd62d275114793716ecd2fc5d98db60020f23887c78781e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "3b4d6ddbc262f039cf0eed62e3db249b9113ff0e13ec1fa5597729b5e325478f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bf84aedb1f4a63bde4bd13c45ed4645696563362c9b84a1fc8da535f1c02315f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d91a813a0768d73f1d52029e99ed75987bc0cf744f1da3700f789f6202917666", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f7e6639d7d13d04596ca456f4b6df3937a3c9816f52ed78d27122b4488e54b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "ffda6edfaa7af5e2de9095b4498ac493dfc1fdc02f1fd79c0d73cb3a2c22bfb4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ea63a77b0b42d0491b6dfc49f78ca520abe3456a24c7161de3f32ccce06714fd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "0a1c350dfe8f70a89405d567e142b2667cb270300d9a15500bafeecd85fa8779", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "15006775de49a2fd64a90eb41164d024643ca5f6b9879ac0406b54d3cb960645", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "069b73ac6fb9e1ca1cbb5d291b3d77f291c9907599176eb58c8039ab21c8db2c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "89f6410ea4b307188913b901004bbf4482208e7f04c3b08ae0b65acc849cc6fa", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "0d9ead5403a9c51ddac922f4881b0f0ea6c15eb63019cdbc04271ebc8e6c7289", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "f1a381132fdaa62a6bc040a0411db9aa01f464cc5a331d6e6567ad7fef74b2d6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "3dd406507397365c843e963920f766a9b3b8bd02abe1b2db16ecb2f17ebd28b0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ef7305a7e9aeb66d1f711884e0abcdab9b15ef3af796e11ccc48f46dbfd82ecf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "0675de135f5589fad56556fd149906765ce742c50c31a2c6e16e049d96f4c239", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "906254885716b0b3dda7e84997c5088b7b8d1c51527c5a15ea6a44cc99da0f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "69cfdb39e02665599c0168d69e0419a0d3601604b5cdc2c1d4ac00c43b373785", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dfbc8fc7e896305a4a29c3984c3dba81ccda7ea67313592471c2fb6682d4e010", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "dffb92fe8917ea7cbeacbe5570cce24ec3e3ddfa9385c480d057e10b0473d894", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "ca08e8c1fdc7772ae6bce2f50bdfce2327932b183f71322f11dbe116ea5bfaf3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "a755faa8ec9748b7ecefd5795700c8f8c50bcbbdcc3c55437a369410f0968a48", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "7b06ff30789050b997536963baca318cc1a9d9f781f4cd6ae20b3abd998cfb03", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4d9d423859f83abbcbef2d1e5eaf98e10904fe4d08092c4d04ff8195fb0f7745", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2d85b74353be6131476adc8985004fe23681ae510de25e2aec8ed7d739a11dbb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "fe1a47b79862b5246698d46a388a3ddd1db04d49ec83a818a498d594ce13767c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "7b06ff30789050b997536963baca318cc1a9d9f781f4cd6ae20b3abd998cfb03", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "5c8f2e5d6f6180d3cb828a26320dce6c2ddce0a93dcac90b4cf4e9841b77c483", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "ac72cd97521dacfdae1851e31027008f74431fcc5c6814f5c5f1b7422b642476", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "314d0666a5d3a8e6600d07ff71ac6ffbf2127e896223866506e632d268215133", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "92862e04e5429720ea9583f073abbfa2d4871f79bc4d9c80ed4b9cb94df7019c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "da1de59fda2730294368410f3087bad19d171790f6716dd96ecf2a08d83a7bab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "2ff2adf5166ea9b5c1bdfda5f1eb5bd395232741f2f7fae6f856a98dcc143073", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "496858e1ba82ace8a54976081eddb8f6bdf70bdd6a584a65fd82260114e4fb8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "e6f5fd8c146f9152987a892c0f01ad8da3700a50c07be82b547ae6ff4608d6cb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "c8ac273cc4c5176cfad2ffd89fb34abe26a44e2a73c251df695e4dbf8bbce59d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "ce218a91b3f209a57c677b8bdd36f3d3392a2bed6c09751961a6d9b0df2c0f3d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "3471e7616bcc597aec60f8cea8d15e677c05e251d11e180708c0580a4858552a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "8a93dfeb93dd1cfe8ae0d50166574448b242abeb8a0719e74a84395911177783", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ea364c2b9c601afe946ef8596a657bc162554aea7d182a960ef54aa09fb0165c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "4dd0b52e3ed32c590f7afa09b8322e3f520923b2c56968a6d2936b0a3d8e48e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "d0e71c8a8ae9d412ca0784cd0db85f7e7303b72eba33b80839ddcd65fbcd3f77", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "856e602f3f0d7b63fa346a51ec3ef19abe1fe0575e2e915e5f000efc0b005fb8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "68308dea4c56801f4327c36967dab8bd69b3c899eebacbac74c1db7dc4e1953e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "935129916cb96ef13a5ad95ba6a3038742021558ff122ae3efea09952ce03737", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "8364ad81419e35bae77e4e7cd6f7b77d7ddce914453265684efc6523f7feb79e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "5146c2e8d1949a99c2b83cd88d22183b9abd19d4563e3037e11be9d6aa16bb62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "493a53551332e622c00ccf1a3d75d806f090071446e9120fb398f17850e52e8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "9609a53c2878c8fae05ee157339327e96bf62dabc033d1ec9cc42deb4531f3e3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "d8e98b1f3db9a44eafe5f489ef3ef8f219f89c0c7ee05bbfed37f65ea90d4191", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b815620880fac6343e7a1871772125625c468cbb50596c45ba5bb7ce9792fda1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "fea923c356934d2d224b27ef2087b5b645737100c7298b757418d47ac548dd32", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d67139f6364532bf43c7ff3f88e4f01a9d09c3aaf5fd1096ef8dd04645ca0029", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "6d36703cb0545eb28b15f3bd0ffaec0db38bdc074b4f878a693102baefb30600", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "1f799a219efa3060eb6c4fbcd0f0e2e14eaa0e028484d4d39603696581355263", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "3ffb4520723eab876b2c0bb0b06059752712ffb8fc2bde4c679f976e7222a3dc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "0bc610933373606c681d692e98e2979cc6f5182a80785fd24caf04467cf9ecc4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6810e51caf90cf56b1ac1448e049dff7b735aa7121c8f8d4e759a9d756dcd6b0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1e08dbcdf4b16be6bfa63facec60169c3dc50a9abbbd86f2ef88c3ef3f4f5980", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "f4db23e1d695d3750cf6b2e9cf81309dbd54bad3c93e2682822a4c04d5f9a373", -"T3T1_es_ethereum-test_definitions.py::test_builtin": "8494194585f6a378c4b3bcb6d652cb29cfa2088f85304ebcf6a59f96d026233e", -"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "9ca2bd2200794364216aaa7ba8aed576ac3da70aec6df9e5aaec7de33c84f21c", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "9da6cbd032ce540e1175b4eda8c27c7d2be035e9b380bc2a7e4ec21b3f26104a", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0327f815182e96131b19d356cf6430f67f44799dc51683b64abeeb9447bbd3d7", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "fea814cd414d494caa31423c7483f5835d0d6221c64625dd14e8ea7c0758ebf7", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "aa922731c7ad1d859ffd3b1d5ed67db28b19438d888e89e47aa1761a389a0270", -"T3T1_es_ethereum-test_definitions.py::test_external_token": "166b2d3b08cf0022bbac240455779407fdaf38693ecc3d1120fe861e7d963ae4", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "076605de44ffd6eb66ac6132b909f2d8964b78b409b3800611c0fb0cdaa18e5f", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "b20ea2487eab2bcf5add3879e59ee7d4f3db02b5bad294271dd97ed227997799", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "a207a5536334a89de3cfca264ced90ec97806875347bdfb313461cd491b198ff", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b629d39991904949fa301089dd05750315971a9cf6ea13ffc4d168b582d9b02b", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "3de4f0cfddb49981cc7cc4db0367a2dafa34d9d40578ded53c3d0b3b7ec45e94", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "3a32c1933475baf1aedc8cf761b81d39abb4dd432fd5e4d6c0f617b7565fdd08", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d462801c953c60f3740b6358e2d421f0d54cacbd38fb39879c2437f0325892d4", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "43ff2e7fbafb035c4de588eb4834ce00c0413b67a445fbe8c77a678e5bb8cb18", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "25540baee0fcf4b5c841f6293249a741458c55ea2fcc2195d24426c69e2697f8", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3d10e3130ebfbe698db617a8e183a9467187f16e4c53b58656cc2840fb60cce2", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "0c3c0a1b58f7d8259ce08ceb74432fd6530f3c861b4fd04968b40101c42c399a", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "15c72309205e57232c7fbf188ac7b059f8d01c1751b84a88cb5d9ce3067376eb", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "9f530378f8a6b7ccde806d05c1b6a68af2327c16b091558f50f009ba2ce9bb79", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "dd7cb8e9a0b1996af6ba5053bcdf1a88fedc9c383214be08f5b634029bac5e21", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f335d9288490a9995012a7e3a1d52d0c30a5f82f16fb426e3f1bf16070799e9e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a3eb448ca1bb17164b2be5188adb31c3b83483848ae7d3f869069b1223614c84", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "0a27eaf4b1882cff1fe7780838935aade486c248760ab5337a87e6646d383472", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "0713aede9b34fd2e7d3a3e92ad98ec5dd55efa9720ceb431ba1d57f7c41ffbcb", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c972120e5e6ae0e16bc0183db8c4253f4fb139ca6db358a3a8d63de3e4c77fb8", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "898c01c30cdd95438e62e3a01ee480d8826a0febf0400b8f612d2c200bc655b9", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8c8b9b999cc3e1387fde32aa96a531e2cb405bb4cc5ab1bd99f6d1c845239cf9", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "52871fd893cbf39f3736b44aba01d64ec168b9ee4309cd200f54f04f0aa2932d", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "77324daf539a4129feb38e4e1353ee53b0c765d474eb18ecb8acba7ef2a0a902", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3e7740c7bcfe6d3d74616f23fbc4d2635b72ff60ceda219d152fdf3d44b0bfb0", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "52e034d33b2c45a9da00964515fc9e1b32f291450a3ddcd0aae7a247ef180a98", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "03b26ec321a6535f321a990dd61c9e11393df55bc79d4545d0ff1b63dd00a83e", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "7526aad501a42f0b773914c74c2adefc5f8d2c57fbd066635bd5d811cfb33ffc", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d2b8e16cc82fc6deeb1e385d9982bf68626b6b54523236d7c1b26737067a3085", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "0b141bbdcc5dde0e0303b825633acbde389fa77b7d13bdfb15a37391450853d5", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ed34c69ced565535a4ae4cf0015257c54fe04e4f1bd1339b5947dec767dd77ed", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "2858b5b854fd99c9a5f58848f8a53d09e86db0b466585b180e16f00fdfb83ab8", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "b1c5e60a139c7b39ee9ac0cc502f9398701d3c1cfee9e0a8c7bd5e2f4beb6a85", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "7d4a1faacabfa092c0bc0bdf7baf315cfb0aa215e4c2a5646be357b774109ad7", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e688111bc782b98a09bd3fe76a2733e03a9fe4d996b5679ce2c0e748fa27cbbc", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "b5df947d8a39bd74e4c3929b04270806b3eb75d43387bf9f8c8bb17da6f2e559", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "ef93904730fec36cfe2e73f9b4529ea29e878e942ce456099261f9077d5ed9a9", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "7bef96e59a5769e0e02df0294d6f38374343506f0a22d004d0738067c0feb37f", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "09656c29ae2b1344d47b0f03506e6060326ffcccef111f93a393afe813a251ee", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "73541cec96526454a0de91c3b38f647419c2fc955738564e82948482ffcedc27", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "06f5f2ad7fee4e8e057894edeb059c2a14fe94ec21d673e0faab60cd285f47c3", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c6f1dab7138884305a77e8603f8635b1c07abcb3edc3e9fa28681c1b2b6c9aec", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "1ce8d124e33be9b5b1e3b70b82fc2c47061eaed54c393f7aa3cc43aed8850596", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "b5df947d8a39bd74e4c3929b04270806b3eb75d43387bf9f8c8bb17da6f2e559", -"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "74a34f5493c74506fe85dd322dc0ac9b2e4f453ccb1b094d8228c6614aeba63e", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "e578cbea03adc831d6540de0b23e907ade1d3149f82f7e79bd7d0984a5f95dfb", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "83b62cdf961627ef8d389ae253d44aac5fbc748715fd11b659ae43712ceeb0ad", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "82908be612e0714ef6ef3c04e8d7af79c0bb0f9018af4e2995529e2839526b82", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "83b62cdf961627ef8d389ae253d44aac5fbc748715fd11b659ae43712ceeb0ad", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "73f33065179da23455b439a090619c7f482a6d87c8fe5ca6b735c82c5cf326c3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "73f33065179da23455b439a090619c7f482a6d87c8fe5ca6b735c82c5cf326c3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "0d16f2e4c29244d2805ae4d00bdfada039d5f339424b891ad36c6ed4ce271081", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a94138c4430b5fe43133d9a356bfd78a08f2c2900bdde5d4adbef8333cc5f829", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a08bb6015062b32d34d81e3eb20d44d5cc171c51ca2a662ed8d7610c8a320079", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f985a30d30781e92b0459a7182e98e61c602ef7d50545d08ac672dfa4f068d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "cdea1e34924a2e5e8a5fc3c8bca96767a4d13d8b9cad862e56b1dc3cc85b23a3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3f76d5ae089dc0ef0b47aa9b2770d6132d5b9b9b79d88528cd169a982df69c72", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "ecf0a105713fd3fe6cd812914053c23463409c1a227d27cfc3fd592c24b7b71a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "7c6b28f9f3c2efd5102742e97ae9a1839eed329cfd0d8ad68bd02b8cc443e503", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "36b42105618922c82cdc187e05881e27e2aaaaabf8f9303c0a4664133fa307c3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "7c6b28f9f3c2efd5102742e97ae9a1839eed329cfd0d8ad68bd02b8cc443e503", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "2b281ec5b27b9f818be53a0772d39d252ab9b60099cbba9a513bb5ac4b871910", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2b281ec5b27b9f818be53a0772d39d252ab9b60099cbba9a513bb5ac4b871910", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "6c69663945f7704b67ce6b660fbcc32d11063d67d8b9efb2e71822b58813fe6d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "974e1a44731943f490b67ded7a03a130a6a5938e49f764e5f5284b09d2bdc198", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "42f2135e5439b8be224fd88e6883e713e68de20b4c3a2732dd1dd5e7f42f71ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f985a30d30781e92b0459a7182e98e61c602ef7d50545d08ac672dfa4f068d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c30f65aea0a7d05752cf7aef041d9ae7bac9c1ecb34048426a00dc92f4c6bd23", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "a7dbb48365f4fb1ffd9a6a479314bfec1cbeeb106ca48d94ba3652574799f124", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "375715f27ee605c397fda02aa88db000174d170907b8affff8dabfdc04637297", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1c9913d13f8d854aa5af513c765bc7d198b1855496f97da2bc719420374f4bb6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "f79d2e6a2bbb42e5f3b965cb19d7a71d66ee1ed0b664c854b0d654b90671a819", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0d16f2e4c29244d2805ae4d00bdfada039d5f339424b891ad36c6ed4ce271081", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "e29c99f8aff260575f1a36d6ac11a90dc5bd6eec25b225ecea71162a38c95983", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a08bb6015062b32d34d81e3eb20d44d5cc171c51ca2a662ed8d7610c8a320079", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e8eeae49ee50deb49a2569fe420cf8cb9e9ed5afcbf205e635d5e8427cba3d6d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "2f834bf985e7d80e975cef6ab01ff2d6846111424a2d24e0ff2de2b1a2796a50", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "a75444a295e31c5991a37019da44da37c670f158865695cde6999afff5b8c79b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6c69663945f7704b67ce6b660fbcc32d11063d67d8b9efb2e71822b58813fe6d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "15d5fb1db791c1dd83138ee682489322c91f87944ec211b0760ffa7fcf38f32b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "42f2135e5439b8be224fd88e6883e713e68de20b4c3a2732dd1dd5e7f42f71ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a73ea17030e0b40e7311d7de241512be66dd4699883f810c635fce3d6c2f52a5", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "12c754752020bdc8c80cb19f9120d20dfd6720ee44d9b5171d487463e3086f71", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", -"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "e9e534e578a7cf5f37a7fa93dabae02ef45c1f8c8ad2a4e506b6b799cf37b6fd", -"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "fb31df4d4d8a94f5a471c266ee597ca97352884a4fd97cd0c7aae2c0acfe9548", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "69a128679278135fb401f0e69269805e575522897d6394886b826108343c8f69", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "b5b6d01616abbff6e2ab0d9c48103db2ae52d28126dd049cfe716176ddfea976", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "806fb40fb2f5fbe2308be07a7c05eb62de5ff81615b7aa18595948178741e7b6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "5448607fc6b5d9ae3b9ace69bae587b8bd4a13c168cd9b6c67402aa1eca8146c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "7917fe4eee0777f97fb22dd957d576b7db0241dc055d38ee351f6f42e387a90a", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "b3099041f1d5a099a9352489c9b50bb196f3206700c0ad83be0e4a660912a53e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "80a689147dbb47fa712c5753ab0706fab7616aea1bd28a8a200b6a74a64fff91", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "795febb368b491e969183c346044e7d9b9c74e06beb5eaba16014c35b0ac8062", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "a3d0520a75ccaa935644e92834bedcf5a94429923a10589df4f46829aa858225", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4ba9a687a114a68b647b9626a94c411855c7a32f5f588bb6381f7ccb83e42d0e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "0b6aa1c12cf6916403b873f0ca4a4f1f9284a0c5259373e3ce06129bb24c2ddd", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "4c6e6f8e9ec5f8d07c2f7922787652f22eade639901819df4a8d04aa21899160", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "b5573ef044c7b23c6c00bd4c1549fdba9d3eb13200c9bb8cf6f7154061d823e6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "b5573ef044c7b23c6c00bd4c1549fdba9d3eb13200c9bb8cf6f7154061d823e6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "55b5dfbdc27d592fd9a7e62ec04a3a3b5fb2a42d1017d3409956c6221948333d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "55b5dfbdc27d592fd9a7e62ec04a3a3b5fb2a42d1017d3409956c6221948333d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", -"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", -"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "9ac712c7e37de56dbb07eec92e31f2f811e030cf51e166960f24339495e2ea6d", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "c58af1a8a5d4012d92a37cb4dc79362750a96f9af2aa2814d74d7519760255b6", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "e2323464410f4cbceb0e6cc46a609e57f33720a88f43f7d13db44a42a15cdc9e", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "81e22d1c7fb26dadcd166f53971a0b7aa88f3d51cd3a83069649163cd304fbd1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a9cbdc03cd44eb0be944a43f4db00e3cabc975398f5575e567783ba219113572", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "0692cfbc3e0e617b6c8e2f0a3062784a5b985c4ec920d068ba5fd1cf3fe421da", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "858010ba830c766e742fe514220e95cdf5d79b69f78519b7fd8df31612b98a4c", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3db35028673ebf7b7153e268d8ab6883657e1aafa126ec42959ca79eda8a2eab", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "c5c8924c33a7fc7a94d929e79edffe68f76ababa2949191d3536149039d8c987", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "2d23ee746632dd0e48199394c243d2e1de8a29ff079f9b03cc22457176bbb42d", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "27a49ffcc4e2cc1b7a378ef13093ddc3641da9162e5a5227c393958b8e808ae4", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "293ac03ed0c5788ece97234d07a243849f6779095fd6d6b48bfcd68e49d1c2f1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "fd04b065eb272e74efb3015e4efaa98d707060cb596a9a7592ce2e85818d07f4", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "67bb7bf9827a3c3e402a8d5ad9cf4408652462e294867e00b1eeacbdea8cc7c3", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "5e60bcb1d58cd1c67104cde3baa542d1ae90bd29edaf5a084ee4a79f0c64f6ed", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "093f2d9fb3497e9929debe893c3062cc518cac516306653b06978eb8c1a88768", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "ac532094285713c41f423ee5367c495812c43d40237cfadf8327fd3d8152c30d", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T3T1_es_misc-test_msg_signidentity.py::test_sign": "0b1cfc79a5b5b976919b306c6220339b232f66b1f93ee06c80028aaffcd499ea", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "28cdfa4ef0f09a683e0119a0ba1867332c5ca18535d73ef58acad0262dfc35ad", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "d8bd632d3bcedfb98d6da05d1e24b0f405d002cf4aa993e882edeacbe646d425", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "b5b58cbf597a51908bc846667e69fed75a462f2ddb9089be1d19d6a3ade43477", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "7003f4f14de998c6e0e773c0c74b605496397a47d6b5896bffaa6d6b1b5308e4", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "77ff93d1042b63b30eb98678c55e530fb7c9fe9918eec35882b8699efb0ed0c8", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "c5769aadf4edd4b1d3a644c4aa60e07db6baf279dc38b4ddad443b9a44d53dc1", -"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "428811596d9d0fa4dd623cd1342ce42ac0f404d5d37ad291d22eb4d9893d309d", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "461c082bc6246c20551898fec61a9e7f9bef4505d50cdcd675a3b6d260d9e6ed", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e19fe95de47e40f7f2a61ceb9c002430cd55a2bf0b5b373ebdddcdd72323bbea", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "307286e98a473540abc7cd8e2030a90e36d3d4600ec34ba212c81255247a5628", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "29777d5107ea49b4e04e8730f178ae876b5de5e2b4c1181fcf83714330b3b78d", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f63d0dd2f531b73b30882b719af8f1ab7a73a2cd1cc4e2d266a7b7c44835582b", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0b5ee74ba3c3fb18fff92165224915df64758dcba5328c34ec45dfe83a17b2bf", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "09ebd80dcc9d7a83ae61aba89cd6d765a49d695354eaa8de10176bb38c25e8ea", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b391bdf02a4a45be41d985fc4697cabbd9bd34d3119f8f798417467ed462d63c", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a5487ceec2a9ce0b770043324dcffa1e3939bed1f170582a81fd4f782341d85b", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3b4d5727853dba24e52bcaf136b53c644b31541042cf4078233befb5474057e0", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9cfd571774ffe61fa707d42d29b419992ff2c1a531b5cc8b217055c9bd1c9e24", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c9261f4860afebaa6db020c511407422d11ed08af50082c5a3fd9cb53d610734", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "479c5e6b88126d8fb9238f93132688d8e8433b1c2bc6e46e79554cd4bcf3f58a", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "ad6854beecbe25090c965ea4b3ce56c576613dbb2536f10e560e33bbbea370d3", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "54e17668f5c66cc9aaeb374a1faeb1ac3f349011270a29c8246c98c3cf484854", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "60dbf5c8aea5c35a7a0777718beb38b0f8e56663c51c2e5530ff928e17e22cea", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2d341da46fa9a3400aecefe493183c4666f292503c1c06944f6cdad4bdb5018f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0b5ee74ba3c3fb18fff92165224915df64758dcba5328c34ec45dfe83a17b2bf", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "959e031abbfabd4ae6a0eb293da80b761568564d8dbb4dd2d765d03fe56c0967", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a9ae7d17cdcd24989af6bcca343dca556969abdcb6ae9c71f9f4f5fd6ce0a19c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3a67bc3443050f96d0c4c8a75fd530a56e10ac3475b2e0091edbf23206902e63", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0f1c26001259b5ad5c7d76c829f98840ef44ffe2983d5421e921b4cfbd262984", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "94b4ea3565ba024c632f4ee9d4bf76a605090c69537844feaa3e677d79f2231b", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3b3aa844adabee59c61bfe02dd1da657d6158f6b72fe67453acf8078ed047af6", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "92fe7a3e8d794033bc5f58551c31a1d2c5ba32ce67be30916160c49d2926043f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "12dc603108d008cfa24a397f94f0843fd749b47cc0eaa3efeb3e70a9cdcefbfc", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "a8d339776a14a549cbb6db5f5dd83c8086c7ebae973e828d370cac42bdd5cab6", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "de4c354453bf85f76b439961e74e30df10302df5c7a4d6faa7fb250a0a71518d", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ea8998b0ab48d3886780747b949133542d4115ca9b391947e21c6e3e3462ff57", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7aa840499711432e69917f40c1d0681b5c2a0510098a5b155f110cb1608f4c41", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8ee942007e5ef72baab7fb67a4eaade25e48da2aa92ebfeda28fda4177572467", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5657e597cae4958fc657bd768d179af28f3469600be95af950697f06ab83c7d", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f4a1cd106407949bd322400a79fd9d24a474aca5748998aab0cd234a43e080aa", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c113f809161456e421022adac7cdc775f89d4e340451faf4caa0be5bbf55ed55", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "613c89d30a66f5b3974ca7287577724c1ca62d7fd7f3f32b2ed3dc2fa0ac9793", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d557b3e896db5c64b32e08d290accffd3c8c47500a737c1003c768ceb941272c", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9604849a998bfcc56da3afacbf0a1a52b110d117c586e9cf7b42e7b4a6adbf3a", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66f0483d3a21a3ca9c76b5bc8cd15ca8591b03470d4fefb85e385c2abfaee53a", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dd8d37b2e9072f6a94985ed1fc055f82c41f0387e30aa9e515e7a3ea17ff0172", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "7bf8afc91858365fd751c24e2fb59dfd6dffead64e832c0d6879ef2c1a1bfae0", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "352a542ff97ef2c58424990a1ce65e6218d714255f0c4c66b2e71d126c347494", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e642ce06e0dfc36df4cdb5123f3f57c279ffea64b99dc542dd33b32760ed831", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "edab79cd58b78252329e58f2e9121d76d75fdb1f2ed7f28f026d11e98155ee55", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9778e3df0d995cf3294ca833685f7897ffc427d40b64f09de7eee441c75f3ffe", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f8e5e95bc029fdce7d2b24c1e02be768b205082d1cef6000a23dc349b4970dca", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "cead191c9d7a89514f371e4fada5d9276b23a88b0794b9e4e934fc238b7e8f35", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ad8ce439861095ec200e7dd1945d5df9555ea5425060a23454a81435d2b6d472", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9fc765e0849ed9d4accc8ef4bc1afad4f505bf11ee6e8c2719d2b01d6862a6c2", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "6e6f294944dd0b70e9ecf9188bf87177358989e62c2783cbda3fe6f7d2980c82", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "0990749ce1603746943f436410f2941fe4801b1abb64666be8ea219fe919f4ca", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "8d5e70d1bfc4a865adb6af4349ac42835ffc1fd3a5e0865c8bb6f9c11207431e", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "824c2c1a893c61a99ac72d42a8ca7ef7948552a58f7ee957a71d75e89afc28d1", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b309d97f8b2f802449e1e899a409b9a3175b21706f3a52e948390c37f9bc1942", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8193620e8ac2d55157d048e9f83578e223d33b272b3e96d6fa91c4355de61ab3", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5839ae74faebac1d76ba2ab2dc116f72dee4cff97b93ee69d46f82568b1aa1ee", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4b66df8902d34a1dc5e30848900e24f938ca7852aef959ca5e9577c81a1c315d", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b1f5ed1c2ce4ce7637814563608f6f2e2b577b84da754f4682e17b56c203fd76", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "5b28e3c9828504bec18ad666b8de4f5df4a430f98c6e43c5490e3e9e16d98424", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "6ae73483b317e33bcae2e140b6379542e3fb15ee1fd7da63ab5420df3bf5cf0d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "1c053f6aa323a7f253065e34b69a5a89d7587b2a8c0a5de8da6a684b396e6041", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e2acea7abf37d39e4a7ff0cb1a3d926df4cc34f8dd8282e9f8b9d1b2f57bf83b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "18afccd4e2092bab13a65aee64b159a221885e11f6bb7c18e8861a8bc860cfa1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "3a6781abfde7c205a939944de3728ca999305751530963e44fc3f0121b02bf94", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "b7610a8c02b0c01c86f810a969bf9bcf1dff434c0d2f172aed6e0fbd07867869", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "64b8fa951e4ee50be46204605bd00a78f2f8044e120d3ad6fb9aaf33a53b86d9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "f649b403956c04484457b033a57b73adf02dfbfe3b8078357fc7b886449be31b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "02df88c5e0e86c47e269404d3a6da0592b280a5c4d101c1e25deac00cc24b1c1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "59319746b2e943d76931b8a5c5dbd66e54e26b1f09cb8dc5d9cb3df4ab90c04b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f19aa4497a7018893859dd150555d31770685aeb43c71efabcbf1cd4a679a50f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "c70d33306b9339bd56043e90a477bce9f994c84c44efcd90b15d2ae60268b641", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "39494cb85421cd40666fdad39809f8412103561f29e14da1a89f520873b61a57", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "0ff101e8a3aaa4bc1a1739078724989bdfc6cd79b6ff55ad78e693a7e6e6747c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "a736faf2b593fd1edc606ff43127cadf525ad972e7e76eb4a342b8f51c5815aa", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6102ec2958fd13070ff41cb540f6a9721b3e744321b2bb1d3e7d53e52a2b54ff", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "008c866474044627a97362c78efd49ade7abaf4ae32535ab59e9ae098c1cab01", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "9018604a4d5e370b7d5b0d6e431e0930ca8c3fd11cb903ad42d001a5360136c0", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "ced6185aeaccf21c0c1d2b4453eef7740cc401068f9d2f02f1dbec5b2a0dda88", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "92898fcbd7c234c468a18bf0535016127a11375b65c5c4a7bde47c9b535f027e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f5d24499f35006dbf636aeee97f5d5fca8e518e4f097d25e4c92b7565b37e223", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "1644ebc2c4f8f425465c87a31aa7bb93036d9c6f8431f8552606461d1c87b4ea", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3fb6e36a14a965a22268381b8aca16f2b1c9100536fa1fd26e2c14d254071dbe", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "c12520413c3239f1e2ef78d1ae1fa097149591b86c859cdde4e7051541ac0051", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9f86f40d5e846f14098140e1140ecaea9286ae1792bd21229b0a076cd4c9cafb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9fabfd70710795e1c93e7133f0288e8a61d5f5c6b36008914eac59c051de02b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8180416688e6dcae9688f04d4c18dfcdfdb1207aa04a0bc59dd6836ba19b6055", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7f79cb79322432ade5948e86a73c372891d4f38756f4e5b510843173384ddb91", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "0c64e69e33ddb40ea35f4fe6275ae18c495775f37d03ee1cb6cb3d7e526a80eb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c1903a4c772372343b4976dbe9b7e6777ce0b09001b8ddf6964341036ec5dfb2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "2419c6ebd15271534422be2bf43bd98f8979b68a2346ec2ecffc08dc06567e32", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "95e6e7ca8e791b5f2b9a1af0c0cf7dd2826aa7dff8b0df86cde4290ac466c774", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "308ed7cbfd1483bbad8b8f4b2ae76220a85237babb76ce5d68bdcf8ca156ad13", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "f807a41c4689d50b95d2b5f9c2934392acf225bf047012b3026695821cb5d64d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "7868742b0daf4afc457fceb03cdcf8c2db5a36e0f4f46578e2da6f0dce9f9cd1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "09827fd3b4adc6b61ec8477c8d9b499b38840637cee174a9eb987943ac9d1015", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "c3e111939807a75a6395ea82ceb18185bba8c497388302a3e531d4f8597dbce9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "13aba000ca9f6197063a2fb247ec83a2ad98c1f7f65c5264b501def570175b2b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "10e9159672c9ad670a033f8d98917b74fdfc66113a6b58236bfdfba3a9df1681", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "1bdef1c296af49aac736a657ff0828ac88882333fdb18777723754d1a48bf8d3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "a243c6ce6e9f884a5627b2b40033d5b44d8e6963c7b8cf2a817521598b2b1936", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "4f1214b6f77ee639c830f3df22c7d6e5682e111f5d39fe0618e923b9cd7df289", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "3c9a517bb6183cf85929b6cfc52322f49fee92d9958bab2c706e675263cef095", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "31be122f3dcd2c761fb2381062fa6b122d8c1ec527688772f7eed1deb8e57a14", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a1a845dd9fb9d1e1e588ac9c50a947a7f27eac9030d562cf7043953f7ab53b0f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "36f432d109431c7bcff0548d5c3c04b118cee90fd8049e977252a827f6a02157", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "4666691a219e6d1b7112494b841bba70acf58c0bc5e9c6d6e3abeaa7e40ae902", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "ab0703c8db286277873edcd6350b0ce3365460cf897e07b3548d2ed32506eb7f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "344979774b4d19777f64bf4a57116af5d3f2180b3751d251fd160b665ce2b6df", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "fce7c4365b09c14e982763fa408b60066ec82cf806088309335aaab4942aa423", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "637fa17b08e64445db7f9370d2335a62d7cfa1d528a7dba8dfa1ef1c7c13d57f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "3288a48967eae9742f673cd6c75f388bad789b959f3cc37edfb1be69b45433e9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "911112f2593444ae1a38bd2c576937bccda8829b7a39a20750a9d723a3ec3364", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "6125934cca06744012961d3fba45171cee9c76eac60e263a77c5f6f5411e5c47", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "a00e68bd000dced7941481113287af58c07ea8facc9b8a4a650d11e6a6472822", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c1a8b7e9e5aa45369313d2ee56b3beb59e58a99ef46856b3fdc30a6d35d29200", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "72efb6c21c1f3b17843c914931a46d609b35d7928ded7a324e5d6c5ea67c43ad", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "28ac29abd598ef153c64428653b9ff7252336bb4f55df458612be10a70381a1d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "b077166c430c4719703c82d78f7ddbf29bf31f97cad2949e568d6832deb1262e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9c4fce94adf5bb063d88243bcc52aaa90562ea42d01c818df3fdc8c9f9654c23", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9fabfd70710795e1c93e7133f0288e8a61d5f5c6b36008914eac59c051de02b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "dbc69e12535f81fd753269c23d54ab21c1b416b7d9979fd051050fc9d690db5f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "18e36eef0a798265d522c69c844b938343fe471c7967e68007b02767e6db8a16", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "66406059bc6f863a02b9f9be09cbbd38201685eb5630fe2ea1d5ac33d5b2ad69", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "df5f6aa0700f27b48f91322d3ae0477a63a0439bf0f96975661e5345b70bc6e3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "002710a209a2d8d0396c6467f52bf18acc232b9c7c16562a692747412a0dc1c9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "30f5d9287bb8223b316818d16a59c7b281cf03fdbcbb6136ef354a95c4f89b78", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "eac4b674933ba1cee7845622a55860e1c880229edc4bc36f8108cab75ea763bb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "34438040af9debe5b90ea63808a80f9ea8ff9158e4adf357d425126091a5c3ae", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "44b1f0c96bb1eb0667605ca08f5fa203a3a915ae2196a17f3f4b94748ff37fe8", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f18098294a74d265bef3177ada55e65462b7d97ab96ce359848d4ea675fdba76", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "290e77fd771d2a156249fb7f310cc51f5af2668a9e06d677877fadf99cb0bcab", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "3ca15a6cb8954fc65a42ab6cbfe44aab3200d462fb6c4a12060961878a06121a", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "350600024a2dbecd1e91dd18eb010eedfb7afc8eecdef19613b05010ab42539e", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "f5c0ade0d1d7f62793f7b342078db16bfbdab9dfd09c29677a06fb79c6eb9eaa", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8622a7e5550b0f1dd72bea90e9562dded579b415c5a936e0c7225c3bfad7bf5d", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "260e5af675320b8129326cd4455dc262326e9f5f9a8748cb75067e5fb337fe56", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "94ea79784eec4a9332f8d58f5a863018af79c7bc8422417c0739368af11672f6", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "4ca9659b5b1e2e52375281bd1b215d95fe6b5367eb373b205836d24be3a80309", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "8755603ba764a8c45c201a7d0f2f0dacfc5a32d26d8913533d907022185c192e", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "fccb778f08df707fe3b91b033e43299c60b3a69ec3b2c1fb319c5db8d148caee", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "c013b8c6d5e58d10594cacfd4061807bbab90a34511e3922060d57c6a2e23f55", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5d367b266ff12ce9f804ebe481e504b1a8d2379db9d4f1e0769da5f84dca61c2", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "120d89ad421a262518b79e533c106b211a61d5422d2b80fa93b08bce0f4a3f80", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "40f984810d5707f7c5ce8d39c22be2959e9f6c115b5566ce2c0da4d9eb491268", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "88ebb181169ffa9f5fa882c24ac17c6b060cfd7ab4d95b8f016e86071a0c8836", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "07e1b6861046fa20c80930685f5be2924b11eea094649b2e7d19dad0920a1962", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "04060da27823499f148b47d0a4430611706b74a52ffd05da9ac637d77d2cc895", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "fcd24a2bf50f0079ed28ebd4e1881af7f8d6ce3bd7c0e872c4e9721790805ecd", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "4714c07652593658706e7565eefa1d22cc80346b1a78a609029b17aca0c03611", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "a306b6c509e773766f37795ab30be0527b3451bdc5d997aa03c7081626556997", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8eb7caa3a04a6f778df516e1bdcd4b8cc0772a5d6b087bf2dc9a56f59a28b3e7", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "aa3e8efaa00c85063b5c63510f4abd438d79481c1c58ef7b1d6ae13a5750ddc5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "c098d2c55d42c6908254f8fdf733761913ac0fca924bf3e435479fd4c6916828", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "6064c611e04bd6a83c9a669986aa9b2bc4f9f8c8c0794938105465b38b769387", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4662d8d95fd424491936508141c4097f1670a5e79a0ccb8b3675d5320d4170c9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c7772bfd1a16ccf5c4c6ad1cbcba54c16531cc32878e1b7cc08c8a32ba0084b5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "1b2cd64f52eee7eda1494403e7faef725b0a0f52b0e73e9aaaa833fcd27b548b", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "7551222e871ba0640487c704c6aa14953b6f6e3a9645df21de7d1251a75457c1", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bec35cb61debe6248e87b4e6c6538ec4b6fae18986333e729b6f583377a9a17d", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "9fe45d7e7aa248583c64af05fee267d62468ef2a9ef29bf1e55b87c4f3bccfb2", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "20907eb886754ce90caa25abd015d834e7a6ddb21feaaf41c5e9c43cc9ba587c", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "8fdcd17f02592d18faa42c5b10330ab544b6481dda8138705bdafec9282b5b6a", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "bf1945431ddc845aeceb844211c56518c1f77c01986c138a252f6a52205df5a4", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "1420ac2dee6ee2fca765f16b7ea1ee62bf91d0ddcfb61beece7081f8019864ea", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e7d72e4f532c978bcd24ae594f9c9f0c460a262dd360bf3966796ed2e36025aa", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "6b4ef8932f6e76ce105a93633b7d3e7fc6745ded42d6e642e02ad80f2dfe9420", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "8b879c6307f9f187009699754ebebd27eaf1959c3ae414cde05da7d500de88dc", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "36aef1197db8be2f4e8a454af0f66b93de7d9d9474327e68fa9eb249e77283c1", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "651f90e050cc597e2a4acf960f70318efe74ca5a7e8cacf89818d0762787e892", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d50238cea8fa03e14e6655721cc42619de9c559c7f46ef075aff8cab9a0e0e94", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "9e8e3de394cb7c096a79afa4c83b1dc749e0fddd98d7756dd10421c92b2e55ab", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "560bd9e0e1579a4e8f82db3b24cc2ea5ce6634e019913943d27b4256de2d35b4", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "ba0fca04752511b33ecfb897d3d56e9ffa70d37cf95d276723a044f4b4fa73e5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "199c39fe7d0e66cc9da902dec55a9fd7eed99201c87630e7bdf48eb934ba9764", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "07f90866c3d0bfd36a1b5ad542b6245ca824950a3c04901458746a70a9268e2b", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5c983d0b8888df5f286e43f75cb2812fb788509dc287b71443abfaac67b92632", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "32cd24c1852c28777346119e59e336787f8b1ef8cf0a3d94e482be42577fcf5b", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "597480b947a91b4bbc8a34f69941e0eff43acb9c001e6a499170514924410509", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "6b4ef8932f6e76ce105a93633b7d3e7fc6745ded42d6e642e02ad80f2dfe9420", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "da70906b0740ee06e4fbf2196663b1254b7d1b93b84c331e41f57324ba4f894f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "cf5d7ad864c98003714bf35f3de31259fa84906b034868e2e08b4a1963ecec6c", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b65af6d76f80fbb23e21bb6f23fbf03ec83364ae6cf94898d2ab217f9190e90d", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "cbb5e020dbc5d2b1f9081e86d04d055b523eb0237ecd653a8be0530939ff2e38", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "7009af68aadedb76de4c60f385ac2e0604d43efeb936cd29444eb8a480e4cac3", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "094830cc0caf1f77e1526ac2ad5a6792b4f2315ccdecc2b33f8c5f5ad4867ca0", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ae38fed0764af911875c674a66a14f0b6650bf3368102da2a6b1dc5a5ad400da", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "618bdc08c72cb24b7816fac7a7b4906bd67d1ebc5da82b8ecbdf00e297c9967f", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "b8496ddaf77c1d446218102e4322c450105996daccc134f669b0ec60d234040e", -"T3T1_es_test_autolock.py::test_autolock_default_value": "3c5c05e4378beb2b1d2a0bc34be7bc2861c8b58ace7d64c7b981dfb30fd50172", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "eda151a4b51adc8a2cbc58cecce29b862a8c7fae430ca33176bab859872df8b2", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "eda151a4b51adc8a2cbc58cecce29b862a8c7fae430ca33176bab859872df8b2", -"T3T1_es_test_basic.py::test_capabilities": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_basic.py::test_device_id_different": "66c1837c51814d93d1bae35d7ccf70eefc047f004d8908499d24e1da94e53ecf", -"T3T1_es_test_basic.py::test_device_id_same": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_basic.py::test_features": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_basic.py::test_ping": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_busy_state.py::test_busy_expiry": "da280d408675fbdbaddefe467ce32f0fbd64726f8935dc5d49b9d2fe969f7585", -"T3T1_es_test_busy_state.py::test_busy_state": "cba9b124a66e083ae97eb0588259aaa7567a8fd03303d42645d9f51ce4a6a2d0", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", -"T3T1_es_test_cancel.py::test_cancel_on_paginated": "d842630d249b84c0582c95187ad93a13bdd42c7320407a1ed552920b281f6f9a", -"T3T1_es_test_debuglink.py::test_softlock_instability": "feba60e1880714c37e5d961dbdd5f5aeaf7b283d946be44d8309daad7fee1c98", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "6f9a2eb356b7054881d6b60116f6f54e4884835b3b3881c151ba6ab5f32f8560", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_language.py::test_error_invalid_data_hash": "e2247117ecc9e7b6beace557014e50fe320236f31ee1849ee1183f5c0e24042f", -"T3T1_es_test_language.py::test_error_invalid_data_length": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_error_invalid_header_magic": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_error_invalid_signature": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_error_too_long": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_error_version_mismatch": "0d006a0fdbce30837b09b2c96d8f3a4839e2fa04eab4811c2d633f706635db77", -"T3T1_es_test_language.py::test_full_language_change[cs]": "7868720b322fbc1b8b54781782b634bdc366b4bcc1b59c5e23797c75e29dddc5", -"T3T1_es_test_language.py::test_full_language_change[de]": "4c38b27038c782ed47ee9b0a111313b838255f92f91abf6405606ae9d533c92b", -"T3T1_es_test_language.py::test_full_language_change[en]": "cb67a2e2dfe9144a9c9099501951fca5cf7df2d034556b6a99598311da342e5e", -"T3T1_es_test_language.py::test_full_language_change[es]": "376683a130d6ac67a2c79b8ff3d43249fd60c3927322bcb7280a070a3aaf4cff", -"T3T1_es_test_language.py::test_full_language_change[fr]": "b6ac036a7eddacbdb0066ce4589324242935f01c9af9523df89b32d3bb34af28", -"T3T1_es_test_language.py::test_header_trailing_data": "3a92b8f6d81355e4e1dae92a1811aec9a8d1e95df0e01ca5a21eb8395f46aa67", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "2edc50a8f1f84785262b6993e663bafefe4c94c74758fc1883e0c81d8a31b82d", -"T3T1_es_test_language.py::test_reject_update": "af4fcd9735b37dce8a96d113629cb38e9f977dca094517de8140f3195f899f27", -"T3T1_es_test_language.py::test_silent_first_install[False-False]": "220b3026a516ac72ee96546adb71fab7a41534bbd16216a2a094fc2a78bc75e7", -"T3T1_es_test_language.py::test_silent_first_install[None-False]": "220b3026a516ac72ee96546adb71fab7a41534bbd16216a2a094fc2a78bc75e7", -"T3T1_es_test_language.py::test_silent_first_install[True-True]": "006092a5fc863c2c2858539507f63893d31e40d8634e76aeead9b4db0d88e0ec", -"T3T1_es_test_language.py::test_switch_from_english[None]": "d75f1279c1c1cb40ddab61946b24315949804d4f639ade39c84c1b5647e4c868", -"T3T1_es_test_language.py::test_switch_from_english[True]": "d75f1279c1c1cb40ddab61946b24315949804d4f639ade39c84c1b5647e4c868", -"T3T1_es_test_language.py::test_switch_from_english_not_silent": "e9783608cc1ace676e131ac0060a18d4926cd83ed7547cd52610bbc252f38f9b", -"T3T1_es_test_language.py::test_switch_language": "0625f32464beea4bb43bb1d1effacb93d5dfcd6747da9d3898222c1d2f07ea42", -"T3T1_es_test_language.py::test_translations_renders_on_screen": "fed6eb186d9f50c47bfdf23caec18f42c418d7dbbc1dddfea147001df3d289c2", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9cdf29017398bd44851b0d2b98dc1e721572eafe724fdfd9278ba50a27d6589c", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "7fcc2e5bf7efbdd1ca6cfc4d9bb4fa8ec3a65839b793f06c321991ceab806e29", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "cf5665ce7be41a28061647f55888a757550de03ab7bc1161da560c5c8aacb1c5", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "82add8bbbe096a95cdc31709555073feda73af3335ff4b7295370f5116bc99f5", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "808621ee8606b2940bc2de9350534f65ad079d68314085017556a5b4f9271e48", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "269671a98e634286dc482e0d455e33a952aed5b2e480354b0f8044aaafbd1fec", -"T3T1_es_test_msg_applysettings.py::test_label_too_long": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_msg_applysettings.py::test_safety_checks": "74b8d81ff4612e2a0c2faea87ece873b1ffcabe7a908a0f8896b76b075b56917", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "04b3ec63607e88360d839f8d9a72a483dfcac380dee854ad28af9e058d9e5e92", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1c2b031f987f6da61770e5f1ace16901a0b571ad4448d905d887549c1a4db9e8", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b2ae1874093b1ff319eff75bfbde15eb1e5687af0a7e79f2b506a632def0f77f", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "124964310a99c5343f001cf603e9d71ffda78e33c23f831b5d65a5d19af9ec85", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "cdc33a34f7754c3d59f242e4aad85b2f545f000c737dbb679e563edb8e5cb41f", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "65a2130e4039bd172f7d97ac85ec2724ee51df97cb54c9eaca89c65b4e95545e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "c5468b4f993c6926fbca6105457a56ccad9239f7ecc7e21860654decd8b1e4b0", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f1afce8aa35ca9867a3934713ef41a4cb60d1ed9bee8f0c32b6daef8657db6bc", -"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", -"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", -"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0b93588639729d595365e9f08e6b8fe3e0006b45277931a50af79d11f25ecb9a", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c122f12ce28406bc09fba1e25368fe9e204a52d77d94843a885d9f2b4a97811e", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "9367f80f31160a72981279b6642f552419bc78e5bcbfaf0cd84b4c3d2cd1fdc8", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "73b403297a2160cc9a477626cf4170f4a8879ee35a8bfd4f5cb14037a6ee7ea9", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "78f4c7b8d604e4e35b316152c77a790eaa8ea04273782e493d5e4033402d5b0a", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "65051eba72b59178e2235b6fa874fcfbeb880e74e69898cd6e33a05de7ff99d4", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "026a511c9a7eb63f41c16c69c628a07cc46040bf62fd34de5b1973b75e459e9c", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "e8e63e04a31f8717f2969428315c072e4881dc7faa8870966926a2c6c07c15f4", -"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "1da77be1a6e89083f539701e46aa2d11c26b8d5571565cd3f848f5ef424865a7", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "c68b301950a34a3fcc8f1fbaa73828b5de58a70a9badbd1738d8e6083637cee4", -"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "2a5c917de03ae51cf139d3c82d3c58955e3ddb9e3aa394cee27422f0a54c05d1", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "7918e43b9497a1125d659cf0b4c02c6a7326d284124e9ca19dcd27fabe9e84d8", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "b7e34f419b1734e91a8b632a61d6e9a71281a4fd1f4028ae16f67a9240132ccd", -"T3T1_es_test_msg_ping.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "108afdbc04d811b6f6ee12227785ed51e817c5b6cb49a480d941bb70200b54d6", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "aaef7d8707efa4b5ad629916f1830ef65b5479b23a344603f8d5f14282ff2cc9", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "876a606f52720d2dbf32bd68ddabe11f34ab2e8ed7d29e5515fc58f80792ed76", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "714155d406a8d19abf82eada80c7b0f86ad96d31244ee1270a015e0710216ad9", -"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "66c1837c51814d93d1bae35d7ccf70eefc047f004d8908499d24e1da94e53ecf", -"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", -"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T3T1_es_test_pin.py::test_correct_pin": "3ee4c0cc05651872be7c05392769630171f12c7c04778c3be9880421d22f1144", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "1fbaaad95161ff4da9e2ae7ae37e667870a2b4564828418962d524391f0d7956", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "0b7e28c51c526fcf8faea694ee0149457cdc9ad66ff3ee2983a3663af502a6a3", -"T3T1_es_test_pin.py::test_no_protection": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_protection_levels.py::test_apply_settings": "5f9c4bb58eefbed5acc59f4a85458a2572ea023a6de948d32c88d574c6d53ab5", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "a2e2590f6fae46c336b2f463ea48aabde1348f8f1d4630779d3cc9b50439b355", -"T3T1_es_test_protection_levels.py::test_get_address": "9cc79cf8650a318b43444a136235ddcdd432d8edcda4485532d0cd05196ba07f", -"T3T1_es_test_protection_levels.py::test_get_entropy": "e6fa10492a4b48cd06475be5dbed80e207e51c594265698da6fcbdcb5bf64ce8", -"T3T1_es_test_protection_levels.py::test_get_public_key": "9cc79cf8650a318b43444a136235ddcdd432d8edcda4485532d0cd05196ba07f", -"T3T1_es_test_protection_levels.py::test_initialize": "3301e669f223b8655abc70adc8ef7da57873f02ca54a4b7e473626fecb9f9b4b", -"T3T1_es_test_protection_levels.py::test_passphrase_cached": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "70d4881f9ca8b6b71be4d2bf0672509fc448a66dc72e35e673b5629b57e7f511", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "cdeb89d2802a7fe659a78c749afed9ac2904372d7e71ea2b61b994557443b67f", -"T3T1_es_test_protection_levels.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", -"T3T1_es_test_protection_levels.py::test_sign_message": "aaa7c9cee8695dc818d84eac3567288a0ea4aa66fc0e83c6270f2a69bc2cdf43", -"T3T1_es_test_protection_levels.py::test_signtx": "2a7bfd737150b2c82a4cb7a95551c7a6c5ab5bc2ebf62a6d4877b5f242fb5f25", -"T3T1_es_test_protection_levels.py::test_unlocked": "a18022b87683f056b9b7f0491f68edb9c4ae920f52a3c892c6337588fa4cba89", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "2a1d23b1f8cc7402cddaec723c9bee1428d59dbda0a8bea672c7d314959c8f10", -"T3T1_es_test_protection_levels.py::test_wipe_device": "9d9fc01b1d9324989e5acf71e938a2f22dc2470b65922d76fb0e9fd8f55cfec9", -"T3T1_es_test_sdcard.py::test_sd_format": "a95a337a1098c2f6483fbeefb953f7277189d03b38f792ff8cea7cee47549cda", -"T3T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "7fc9da34627b3ec0400e6fd83c9c156374963c991c4b787527e4692daee6b177", -"T3T1_es_test_session.py::test_cannot_resume_ended_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_clear_session": "d107e5b8924f295b0db54e6af6368c81822705508c0983fa14567757df1f0bc6", -"T3T1_es_test_session.py::test_derive_cardano_empty_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_derive_cardano_running_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_end_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_end_session_only_current": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session.py::test_session_recycling": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "c1b4f8209829a6da7445b6167738988883a0bc694075490e75783ceecf537ff2", -"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "ce77813e7227ff5af41faf8f6150af2b87d0d0ae7509e6447f826ac3caf36cba", -"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5198c4b55df400132abc4eaf03daf53c552a93e7b13ca7baa2eba39c7065cc82", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "cbb2afccd5ef1938d1d86aba062807c58a365b3708f93d85c8b6fdbd3ab99fc4", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fbada0e47e70d3178eb9fa71402e9dee562f3e2a98df254e7a7d5a04c02b7791", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "5b8894a84f8134993d8d770260b53a189cbe09208e9b9994341add078e6766a5", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "cc47f9742cfe8349db52a3917fa21befbc390abd0e0bf3484974d09c6cbfda8e", -"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "72c76052749ecfbc285d6b0a36f309b40e4c869c168118cbacbb7aa9fd17cc09", -"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "90973652670a2e6fb41b34f4c48f3c9abba80d3e6f41691f78659bcb91b8a5ef", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2e7b27ed5d4bd60abd63d89a9b202feded6732b47388c95c59d711bb2a7d35b8", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "fce669ad118178bf67066aeef778e16028e63dadce84337d81232abd241e56a8", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "55ac235b00f0084ad9975ed77ed430f7bec60ce9bd44be26edbe040c63d13dbf", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "7633a085ff69e32fbd6fe949f1d277826ef7894a8e7d26081f320ad97c153e13", -"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "93d724be6eed8bb1d096ba4355c9d664abab8839a11c42a98223f483ea315c47", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "54284b8e906c0c81faa5f6878df6acc407426cf864512117760464442ae1b5ad", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "69f5728b5b51fdb335af47c634f5b373fe4197a5d6b991fcba2ede286479039b", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "1e5dc9ab2ff86427a9e0ffc4f2a9e22349de3f0b72e5e0827cc84f58283d1f39", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "2ea80448ee8e142036620cc6c75b2e9723fbfd6576f00c74f8570afdb114b721", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ebd8ddd04365f7adc5c44c1bd71d63b9b8525a6c067b42c60e780f87e9151807", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "98af1b069d8d2ec445e299026372d52efef2d421c83ba227751b7c379aeed62d", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "de2b7c37261754096e95d7e04641b1752f6b6e20f28caa865837e1ec95fd9f62", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e5f39fb25c07f25efda59a6d2f5e98f5fdbdb290f43fd7f7dee9aad750fc1ec5", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "1dbb85770758f22114c5a284a39003ab0b08f97422e397257297687058a80e99", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "02efd68c800748415e2916b23f2294a0db68d7dfe85c2310abf0968f38ea294e", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "510d6dc5e989c661f2a28ac7c981b6f2ede6a4a047b1823bd115930067b5e2a1", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8e5604ed25002ef32b1008ced0613b09f4288bdd694be5ff39c4e5388642a834", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ad73951025fa7db7c193ed33d02d7706ddd6851d57a70ced5206a8352fceb822", -"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "c5368093c0ee1ca1da67bc534c236a3d7edb3ab87da9ce0eb8e1e7a9ec109402", -"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "f44cf2879b0a2d56b1ffbda98036e5c137249084a4a5c08bf63ad0b73f331718", -"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "9d0d1c4842438f4d4d8375dcf53a3bdd8579823fb76be72e9e5880d2e0a460f9", -"T3T1_es_zcash-test_sign_tx.py::test_one_two": "8bb09f62f4ae5b5432e7b5377f3f5cec3312de5f0a70d75d74393887e35e0e83", -"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "57ceb4362cd0265b5006aa8590f8a0d5c2c97b46432fedd9696a5606f0346e03", -"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "c1af7d238fec54f5832b9e36a4e5d4baeb86dd765ab6d824d828f1db18a170bd", -"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "061f1075cd3a1eafafdc28305444e94b929a2ec6c49843370a9e598e86075c27", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "7e7b0c25a61ed2868d8d22680a2f81dbff3355c27b0189c47b28026447e55b2d", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "e34c97507448b0fbebdaed6a95d761853e2ee138dbdbf253b2a35cc97702bd81", -"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "2ac6182461f382b799b2e2539b942b08cb48a957c5995558a12b97dd5b12ecdd", -"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "afa20db351f0564115c2711f555b3279688b0a9ce177581601be8d39e5a138f5", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "7ea45cf6a3adaea6ddcce2e109852af1c914fe90daa4338f981b0195d5c28926", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "d2a2787fdc79ce54707d28c267cf536b0568bce05586a6c049bd9a3ddba9f426", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "f13618ac157b732c7883e0427d58a2098b744646c65e2ab5f7f47927889e33aa", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "1f0fc8ab7ccedfef4f08e2bd52c3aa21f59b52d1451723e3842627568f40e172", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "04b64ea2e1fcd9b6297ddd995ee133a049a0e85f6500d6a9c3b6b4543479301b", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2fab33aa122229eca7e01787bb842d1d5572a223a5dea6c8e7c27e0a38d59f7d", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "ebca3d693cf5f68135f779c178bf79e375538146c62e668fcbdad35c2f9eb640", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "04b64ea2e1fcd9b6297ddd995ee133a049a0e85f6500d6a9c3b6b4543479301b", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "218c7eef4442e4105565659d8600f60e9f5aec10b67e53f8f5881d2c79c32480", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "e4b10c08b0d94eab8a1aed7a5877331948e0645884946c34a2bdbde039ba066e", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7790c2972c163135877452cb26534364b3dd2c2e9ea74855d7f8e301f63f1c70", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "4a993586370ed4fc771bb737949c7899f430aa6b75c328170ecd071a12b884e8", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "46b15a11d901838656416c3f12a1bb8741c2369c99b2790263903c2b31082bd6", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "46b15a11d901838656416c3f12a1bb8741c2369c99b2790263903c2b31082bd6", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0347e469421f0b70cfc1be9cbe8e55a998a38e4d28b68239abd7b83f8d52b651", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f272c80e61c11bebe60568af893f97535c4a46ab493ce09a1bc2175c10caf581", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "5ba7e8f071d8d398e6a0b15e72328d9670eef64c08f597c91490a049cf882365", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "d7dbaec3a8f9c39c58d030ab1783ad5e8ca9715d759836b06c5e42dd777ceb30", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "d7dbaec3a8f9c39c58d030ab1783ad5e8ca9715d759836b06c5e42dd777ceb30", -"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "0f633e530a38c2447fde5689453c22b5788472aaea0a6f639b94c2485b78c7bd", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "0f633e530a38c2447fde5689453c22b5788472aaea0a6f639b94c2485b78c7bd", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "e6b1a576b38f77555eb91722594e76db74304ca38a128cfb0c49dd7165f853b2", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c3a20512cdb3bd961894a99f2394a7a6dd7b2edab1fd71472e5fda846169a510", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "dd2221808f1902b45b724ffe21ffb0142d71bff83d691f924334b43fedec8341", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "6c94e1fc6a28506199c4ae9c939a900310706f8c28ed70e094b55952b1f0b8b6", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8c84232179cdb951ff8a03e92b172e11ea624f7d19c90f9f46ae0da274310ec5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "fffd40e65d50d0e2b0a7fc9adca24ce57f761fe1dd770613b3781508b5efb5c1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "140368bad3e036123a498e7b466ed1242de98d81bd7159c4bd74d9944c8762eb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "35e1b88eaef93704bb82a6d359b1c81c5b98e40d486df8bc46e356b0d39478ce", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "80a7c80a5926efed3743c127ffc4fcf253e59ecf6b4044669556363432497dae", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "141c46991c0335ad159a74eb74a3956a2d2f3947522e5e5b5cb546f0f35a5054", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "184a6cd40c4ac5ff417ebb34610443256fb051d57d73883d7e178bf3854bf32b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "843c1d085bf10c22f520ffe8369ab414546126bd3f261dd74d5c428c48b14270", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "9c2df27e2e8745878a646db092830b6b9fe49e9677dfa6ca23c68d755a10ca6a", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "2f54ee240111cb157b7458435b77b606543f6e721b8812201635c4e64d3ba9f4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "0c7f141b4bf165400827dfd23e54a43796db0926d100ada7925e7e4d9e5f59a9", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "89c2ba8ac72d4cd6a750e695fa2756c2d970f9c38d5551f2a3007b5ae290b771", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "434617ff6d294ffd3117d3105fb2d17e7804466dc95204c44b10979fbaa05821", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "2dc71d6f2c275b5dc086b9c535a845174d54674f5902ed300cdf48f582a1a42f", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "38a1c0d9bf202d2520cd693bdade96531e34781ac0a563bcf218186fd64cbd29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a116ceae9cae9005e127664330bba72ee396cdf5274da76344e2e30414733712", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e1252423ecf047d708c39329f22f46dc1c28b6a392329b2e367f06a00f5ca537", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "fffd40e65d50d0e2b0a7fc9adca24ce57f761fe1dd770613b3781508b5efb5c1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "140368bad3e036123a498e7b466ed1242de98d81bd7159c4bd74d9944c8762eb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "35e1b88eaef93704bb82a6d359b1c81c5b98e40d486df8bc46e356b0d39478ce", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "80a7c80a5926efed3743c127ffc4fcf253e59ecf6b4044669556363432497dae", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "141c46991c0335ad159a74eb74a3956a2d2f3947522e5e5b5cb546f0f35a5054", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "184a6cd40c4ac5ff417ebb34610443256fb051d57d73883d7e178bf3854bf32b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "843c1d085bf10c22f520ffe8369ab414546126bd3f261dd74d5c428c48b14270", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "9c2df27e2e8745878a646db092830b6b9fe49e9677dfa6ca23c68d755a10ca6a", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "2f54ee240111cb157b7458435b77b606543f6e721b8812201635c4e64d3ba9f4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "0c7f141b4bf165400827dfd23e54a43796db0926d100ada7925e7e4d9e5f59a9", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "89c2ba8ac72d4cd6a750e695fa2756c2d970f9c38d5551f2a3007b5ae290b771", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "434617ff6d294ffd3117d3105fb2d17e7804466dc95204c44b10979fbaa05821", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "2dc71d6f2c275b5dc086b9c535a845174d54674f5902ed300cdf48f582a1a42f", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "38a1c0d9bf202d2520cd693bdade96531e34781ac0a563bcf218186fd64cbd29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a116ceae9cae9005e127664330bba72ee396cdf5274da76344e2e30414733712", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "e1252423ecf047d708c39329f22f46dc1c28b6a392329b2e367f06a00f5ca537", -"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "2bb10461c18f3651a3558ef318a410b54903bf064cd8af130e0f6bdc3baf18fa", -"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "f2c1a442c4198640d4389a54c10bd16a972227f262c23b8e48376da6423c503d", -"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "79671f57f7b674dddb7bd066db9573543505b4055f317abab3823b0c1915b4c7", -"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "b071a5dcfedb4ef3c03b92aa0818ee06b87b399d7e8033f6607db335d9ff8cce", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "af6ed36cdbcf9d886b2ef31509cfb98b5ed5d155c33f8c8d0e5bee2bbf85b40a", -"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "bd854738d58ad313354c77f6421ab59e0171f3dd5c44f2781f1a429310f7e691", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "71831de0bb86025a17ae34bec570e454d49c37b0e4e1d623a2bb8a5a31770485", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1b1de8725ea34401635dfe632f54380354e493b9d2038fb83547951c6ce0c030", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "06c9ae88bf872289fd2260ac2e11b639ff38430910e4aefe9ba0486472ee1a62", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a44090bc6ec6b1aaa9d3f28ec61f12fa698f59c5b569dd9511f6f809a0ba8333", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "32d941af3ceb6d9f6c646d3083d429bd1f0bdedc51ad8179089d32a55fd316d2", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "503c7055fe475d4ac27567abed181c1be490aac2db161346eb9882dc6499c6fc", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "8c4c9ee3f82c49bf074645a87dc48010d95bd6c150bb6047ff74295620ee9dd4", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "948558c0bf8773d3de58577ceb5dc3884407d3881d037d2fb04ec90f4591eba2", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "6ce1a46858f8f25893455e5903141b98c44a933a37efccfd36a4e73d10852651", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "342b4ecfae0e3bc937be54ea89b85026dd055fbed341362c5fb74ae312ae0fb4", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "da820f12624b29fbc44c888aec1dedae3a9ac58076dfb492b7addc64af79314c", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "874c44abf0b3f54e4c6bc5cdb9ed08c86022a51fe2f7fb2d688af0af96baf55a", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a4fd74c59e74e312bf95c8e66bbff7dd8ffd00dc546c44a17b4bb77e067f9e2e", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "edad99ca6f1cff8ff5032507849ec35a2598b3bedc1d599535189e7f4bc08593", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "be922b6c5344e9e2fcca44a0ac8c01a8f38c41270a37fff0992ad417c37f2a50", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a2c485e323ad01ba7e9986bc46967a60a9ee39acc764dd7c37258d54769d6b36", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "453814a0def895aa34b46665250f6990d5155164ab69d347a205683efafab445", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "cb2293c7bfc753db3fccb490fe70f86a753384a459bbf0a2b3eb2ee0566854e8", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a271833f901a8facb4c84f1eda1e5d0d532ab1f887c9264c32a3ad94374ccab4", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "be5705ac7186168b188f49982a9ec928d6b40d500c2acb3d5261094aec8ba5d0", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "6a1de4601d04a547b22b8016ae2dd2a51cfcd6bae9bb338ee9ccb9ee6db0f9fd", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "d19f9eec4a8f733fb6a6904c25043687e68e91c8033c396a56eec2fd4ee1f24b", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "d7c64b6ed909a7592e6c546fa2be5f6cf5ca01b0353281370d8e1265f2e77c71", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "36d3b6b2194321df017f3fd5313b342800f30a64996c0a5dcc0597afa6795a18", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "36d3b6b2194321df017f3fd5313b342800f30a64996c0a5dcc0597afa6795a18", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "501684c2d785cc02fbb299c8ff057c0724c31c512e3a06e093c96d59bfa78d2d", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "87e2d0f29a48ea055b9f6f8a06a9e4b72a5e93958b27f6b4ba751eb415a90d3e", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "a5d85e064f53444c0d3ed7c68d6b017b7aa15b3792bd9d1631fde4572cd7278a", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "a5d0c63808c51908b1c778b9b9c299d3f17ef5538f11592c01bc28e1fde53e17", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "00d1f0232901bc1eebbab2f5402cba8a7dc85d2d35e7a0d9d1c810c639cf2dfb", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "4328539a45067896340be36a04a023813e6004e47a2ea4021a5fae297d3ae1ce", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "2f8fa318389afc9018dbcf4c2d9d3a57598c5abcaf1bba7b1e6287b2beb060fd", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "6a976ad640a2361854c1260dd1569f20ee3ebd548fac9c28d333b39c93f42502", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d75059a4c266ae2e94e4f127fb8f14e5dc97bbe627761e6adfdda8909b0ebac9", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "ee0d5ab23382e13ee3b3100bd55ff219bd0d10345f5b9d3ff8a0cda1ec8d42a6", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "32d82d44efe31451a19bea60f5c1fe906a3e319f889c70b616bf7a81b847ec18", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "116929ddafd89e53c60fc81b51325c3bbde59978e9c8e8fd35856dd389453b5b", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "f71eab6e5e2d9f359ee444138557533c0ed33229fbf25fbf0325cce4e4b6f314", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "05f1c7bd8f4b1b3050631540d8b6f3df40097e91e5c4ca7c70cbfdeebc1e2d79", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f1ceed290f715e6bc8fcb8ded2f7724c5bd4851385e0deec272ee5c465b4a5a7", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "dd35fb51181f8a431da8a16277b0fa3dd1ce97d19db499cb5572f0666f6d1265", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "d48dc65162716136e9f8e18586131dcde8e0c841e046d95106b2e4a3f8e2636a", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "95d449f6afc64225c126cc7c0999244e4bb0d9d6116f988fabe361d587027fee", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "53de3ee46d4fec973da7959577b6b2131fb50fd65fb00ece121b19bc652f3f13", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "2dda211909b3319f176ccfdde706505723de4c42cf1198f60de5ec948bb0e115", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "3305f84aa220136aa6255d158d59cbc09a24e5202d5ee13fa24edfbf70d6dac2", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "38af197291e26875ffc27002c33fe849db11971b9f713d17eb582cf5f9a2d585", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "df6a1f813cd9b97762ea414c69d1c56b1113dc72505eaf3481cb3f6e81289986", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "9743a34e6356d33ae995e3009b0955f687dd94aff4d8c2ebf1f2227921b60ffb", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2456cce5635e1ef4d799ec7f53ec9433fbd9e5f4bdd070649fbd6b52a81d9049", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_grs.py::test_legacy": "9e6c3b5c9a8d06ee697d8245f165bdd1afaedd1a2d1e4bd3a04c507e409bb392", -"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "e2950c89beaa95c476d723f908a1eed34387e73fa02637065b3c5be444090c4e", -"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "545775fcd6149a76c0c87e3c72d2ffee1e9222532443a6a217a1abd331bb9aaa", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "650c3f01dc51d02a6ac8b12596a7618986fa96f54e89c82761b38b213ee9aeb9", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "02ba4283ce884d1dde2afc5975cf0a785afdc5c9b847b69cefa510cb167ab24e", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "cee745cc47de4c104b19837ef38058a8c25afc4202bc264a57bd707128ee27f8", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "7ff082da13862c7ddec6c2a308a0be1fa2f52b5da096e0a9a3727523e75e714d", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "e7db8138737ba15205b3ca664bbe3828dfdf3d7e710192ec02f015bbd2fb129c", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "83b4a61cc53e24744e4c6d8194d705226c23705d73a44aa49940ee82505899e6", -"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "e62839d037f7c1dcc2171528ae4c8fee2bd3facdfb1609e57383d99255ca1560", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "37a0ea5da43a153d86caf82ec7436c261ae8ca7f89ef84f5806c59476286560f", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "cb977e0112bfc4adf4640187ef27bc37a0b1ecfcbfbccd99a4db0681958943a0", -"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "4b11f35a941104698832ed9f6364b5d0d43ff7c5f897756a64ea36c1477ceadb", -"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "e94993d4b850c2ffdea77bd35bac4ac85521d9831e409316b61a37e60a5d5107", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "2f8e40b4cc95998168ae512930c400698dd095e83ffe7b9fa96e7e91f92432da", -"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "85d03db58643121cd1c195a0f03e4125402864c22b23bf0b9810ec8b0a9d8912", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "6e468e0e34a75a1ef660d4a509fde0949f9c2cc1cc967dca513a50bf843d8b5a", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "789b6f415cc3af8a8834bd10c000bebf1744fb189119355e982f137750d0dbe5", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "6b915fea41f1f3ee65eca0471eba25c5c9446fb655310cf873ef25d98b40a1cf", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "6b0746a717c8f170c1fbdc44ad686daede697e418ac23f1cc615ed4b24a3a536", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "044d28e3d24bc87fdd9beb3fceb069ea30347b8482813b1f59d7a340c236b709", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "188dc34b495ec4890ba2886fffdf97a4634b5944ff355169d76f12f131bba8af", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "f81751ecc5e45bb34af4028a3748b710b30e8cc23784b086d065433f88a3ce36", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "d8f8d583e4bd879f2359815576ac4cf45ca2ab47ae9b2dc4506f4c32a519f8f4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "d33b6d5740069d0316b73cd2d0e9ae412d65131a5997bd2cca9fa698d3b54165", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fce93158fed1259c65c617eb4f78514c687fff54662f2bf15ef12dbe112b3c60", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "f22ec9455c59a57ccac7fd45f4f5f508d97f32de0eb470eb004eb9a9814d2d39", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "b42cefd5e18f6377629617ddd7b6c79d9854c682b80d53a8f1e8212945f17636", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "820c675b6590c792b12847d4b44417ed29c8668707a9766e4bb1d5e4175c88ba", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "09445fdc2bdc47840432fac77c980359f8f4f6a65ca52a94a566c74c411c1696", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "a0535af66e01e6b591c06f322030e7c2d8e85c52afba5e4facc99de18e727f4a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "29a074a9240578d504172424e7901b18f1f38897be75420b77cf42e060075837", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "a7948b594726557f0f07920fdf38badd2881129a8087b2f73664e76c8ae8a3e4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "54b873d54abed4932dd0142678f1cbf854f1c659f9740a75885466da1cf2ef07", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "04715cdadf1a6c51dbdf1e75426c6133d4e42f370d2a37dc8ce0af03b62aa872", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "813e93c0fc84d102947e10192fb4b6c0d3672d1f9b1ace9912003374277bca23", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "4e530a3cdc32deb73b2ec8ca086dfd9f11e3e4b6907eb67846568cb3f45a6fed", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "6e7ee1edfd77b5529726499c3703a1868ec66ff41994ede1010347f519d92cbc", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "1fe4f1d6c2eef9686854ead3384c404e7686408da95db777bbad2d78c1f2fba5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "95666dcc5c35f2e7d2430eceabf7037406648242274bb94f4730eb4bdfe7b794", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "6a9c1f9a750a817b0831df4b25699087ed25f4019b4fcae58e9af71d805a3540", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "d3ce3decbaf9250008f2ffb5227b58f4c156dd9113e7d8cde9b87333a13655ff", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b0b9426239f59edbd7822dae8fd6432d4184e238c58167fd5bf85f0168ad7889", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "a408209f65b42c02076f338705ccfd5492d140538effb2c8b4d055a9c1d996c9", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6206bb5facee3371f97c3212a18685af6814fd51a5ca90b0615e6889ec696877", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "2db40ee27e1c876f8132438ac068832ffb42c450e2653000f829ca9bd630075f", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a835cd86e37b62ca65becbc2acab0e80b268afc8bd09d89eb7871906f24c4de7", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "332822323fb51b443b554d4177713f642a4419c834fb75a8e2318725f2e6b101", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "11e63c78222b9ef7abd150c68b355e80b3d6acfdb296eb2db975d632a1826f6a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "42f5e3be3f91ffba1e4e508407f44cf8f64f3aa0c1bc673798d4288108118480", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "3c2989f673f736cb3cdd235f469b72bb25544f262084b79cc2bccffb067d29e0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "854c1cbb48ba91b507183923f0e5e606364e22c9c25c3d80334d6cf465d5870b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "048d0032c22e4ffd2152a0f3958d0274bbe4e70a925df59f80ac2070e802b478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ff6e76457bf04cb630c9a5639fddb056093928c1e3cd646cd078634a44c3d9e8", -"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "3c4d0e8e85004003f262e4854363578ec08d4e412315841029cb27523f304d67", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "64e26e2f0b0bde23b9ffeb661859c12f948a66733f3ac26530bdb9291f85c2c6", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "8496830951905a377f5b3d1ff12ed378045f1bae464296732a460465edc19b85", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "3bf114453b7b17be8884565abcac6f18de22d16324bc13ee8ea4f942e60312f0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "2d88ec77eae7b5c70461779f63a7e2158e1ecfa70d90e993976c68127c860626", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "9c3fa3efbf2e18aea8a5bd46988faba64bdb3a029d3285d07ebfbfd6f5cf3476", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "c49fa73d7893ed6d5cf3f292f227ebe53b74d96747c85ecc50992d8f5f23268c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6d3f14cd30ba8bc15a35e70c5a354b763c8f0240f09e2e0cc949fe29a814e6ba", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "b5031e4df40ce1f1228c53f4c60f3a020d1e7876489776d21467873a6f51cab0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "7172a4dc5c9ec928ee650d24da15f9fb516bd5d7a1e9869e54f94b9f8473e170", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "7172a4dc5c9ec928ee650d24da15f9fb516bd5d7a1e9869e54f94b9f8473e170", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "1302ee4345a4937c40c654a7387f75667173c86fcdfd86fb4f783ca0a7531a11", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "a0a1d86365d2987b4201b4aa0e09e4af9f3d01d4296ff2991a1fc8d0f66a9ea2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "56143746256565cea445b6348f22c6da7039498ea72b8df7994d30780ed52894", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "56143746256565cea445b6348f22c6da7039498ea72b8df7994d30780ed52894", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "174df157c1b394824ee9b90eea099b0ce072ffcb883a0d5cc2d942e51198b9a9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "7874abb0a08e82bae7f6e8f2dcd231f78841cd7ae4a28169771fed83fc82fb8c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "ef3a8f624f1ce3d22d6a3932f4a42fcfea7b8f8222bd636ce546618fe5832e6d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "ef3a8f624f1ce3d22d6a3932f4a42fcfea7b8f8222bd636ce546618fe5832e6d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "27711b0b1c556b8ecbeec4d19f6620d6ade469112cc1fe7b043a332c1d693408", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "65d908a935485a8a8452ff8e386e6aeb4cfd07607142de82208b0eacf2c4cb92", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "c3498e76f9562b619361c1534798fb16ad46e700a2eb3778378bd713b0b6de96", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "3dc9a0cba65c6e5f8e6aef9134cc84f1deb6f6ef1cf153be3036549fe200258f", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "8718ea206a27babb2a716640e274aa53ff5f4beae2fce1ecbfbd8311752073d0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "f4299a9a91b7f346e2096811576f01ad576e67cf6e8c6b72884cedb709aaaa77", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "6b8613dd47a39b04617d7f3dc0de01aaca2473da798523438ceeb00b16f044e6", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "615c994d9ba84374a024ad8170052ad2f02c30dc2571a0c23ff491d62b4f6455", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "8624b2d04111c9638e2403686fcd8460d3d34f231bb56f9d9a8cf4b56c6eecb9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "8624b2d04111c9638e2403686fcd8460d3d34f231bb56f9d9a8cf4b56c6eecb9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "7b7f3805b70bfb2df3ec30cc2277cee9bbee46389f793e2fe304cf5de05d1ed1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "8602fe06f4d3f3528c02b1e860bae97f6b0a999f3a47a2a68cdb9de4d27b4476", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "8054b2a842c267a458d93b5058f8863cf9396821bc08561f8864e04406d14a53", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "8054b2a842c267a458d93b5058f8863cf9396821bc08561f8864e04406d14a53", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "fe0f37552c870a110f3bd5be06df2c8f7e382eed49267917608b76fb8b96f70b", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "6b9911b920068ef48e5bbe01ffb9e9c70d31c6f18ccf080fa53711c7ab9b095e", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "563203094963521f24c9138967dda33a91e482682045e214daeb95b3649717bb", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "563203094963521f24c9138967dda33a91e482682045e214daeb95b3649717bb", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "43620a9a8346be51a471c6c2e115e1490c3eec9bdd93c7e791aa8b7dec169d7c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "a4e6f13f1ad1068cd3574dcb42b64a9c708d7cbc5af0f5727f9f8c597f8f9cb1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "152d965f90a5d168571fb59677b23ef30e27a1e52b28456ceef7fe3123369412", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b8566137418c9c7949764b45c0d9d56fdb8dfa3f2cf8949b12048e3e0b8e0929", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "160f47e387c35123320bafc14eb51f166a386d958741346d18278fad0da1ab0d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "dc0515cfdfd75237e5641ddb02b543e19130bcd576ce58bb5f64c70984a3dabd", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "01dd41131f86d5f78621d70a4ef7d99305a942f02085096e380632b93742f0f8", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "fe514c63f5bbbd26ab904a3585d13b304b912bd8bb5cdfee16ab4b671a66faec", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "366f3c3959a0117078d785f473d4856d3d0573b1201d6cabd5febfde7343d91b", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "8e7c20df88fd7e89704dd165dfccbb00b63ac46308af7e7702555ba8003dc192", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "08a9254a789c72fd974dcaf6ce71012668068ff3bf8db7c17c01338a6b397d76", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "0db51cb3e0b78a496a384ca61f104f61aa2e4e2c0a2150228d6d50b302930935", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "6909ec8af35cab15a6738b95cb1a47b7d837db8b6299138a3dbe8f1d93563b1a", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", -"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "ea33df0867ea634f2b7493d115fadbe4481fcdaaf180a9bba61e8b3103b99612", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "9198c00570ef770eea17c21580fd1dbf0a0bd0c615050c5f65bc530206d61268", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx.py::test_information": "a5ecce0cfb297c43cc9ed9719f23bc3fb86f456d6278c174942d6e7cfe4bb131", -"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "52e35c5560499ebd9887bba669aa94e1044cfa6bb2ca9f76080978244ed5ed85", -"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "f1a9d844fcebc53d9575a188de11cdd0a0272d60df444b93e61e1a9af4cdbc7b", -"T3T1_fr_bitcoin-test_signtx.py::test_information_replacement": "5421cafaec22f48c174adf515d4f3fd6313083c5e37fc5ee4340e4d7fd6c7df0", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "5ffdb018caafe83a635838f60c6d952c232571d79a0bba33d81dde4107676f2b", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "4448f7b5d822cfa20f260d25f5a12f5dd2ff22a81dbb1b4335ffa02b0ce4b769", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "167b1a487de997e6a7b3d32a37d269d1de07ad356d18f3035b1c5e3f4369f3c2", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "4448f7b5d822cfa20f260d25f5a12f5dd2ff22a81dbb1b4335ffa02b0ce4b769", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "167b1a487de997e6a7b3d32a37d269d1de07ad356d18f3035b1c5e3f4369f3c2", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "adcc55555af2575c1da2186236ecc30c7daf1b5bd963ad12ab646b87bd1e4075", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "a0a749bdd6a81c56ca22d214a44885c190d1026b29b939dbb9092679e81b218f", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "c788ddecc1654773c92ff3796bfcd2b83d24c5ed8a79345dfecfae0d6e885151", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "b3b8b2c2e4f69a636dc2cb8b02430636dd99860a73b7e9cc6e12a87006c51df4", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "5d3c34abb80a97ae653303b503a9c6e3e81cdc095f92d62b2763a8ae96f516fe", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "85015dbecc29268c1f4cdcae87d0a241c6ec630081772148c92a4598aaba8d80", -"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "df2060e6b07fc8d3977e82834b2b15fb6a7b0cf633de39e2b44239d64b15b965", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "c9daf87d2c7d5c6041ac7b1783de999d858b497b92a179c2a4ea036c563de546", -"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "01588d4d80ce5684031a3559ef67e90e91eb69e038d30ecaab6b0c65d9240818", -"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "ef083934e4f2be2da5640c8ffa5b30ccf54d152324812bc5a37368baabd50600", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "006474d95c7c2dd69bf0b0dfaa28649bd2f973eabcfd30aa8d4ee31c0219bb51", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "ea63ec00952f6c15856379c84bb42dd7390e4a521d77b30e4aa4c9ba5349d348", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "00be1ad597abff132dda63849091d0f73f5b935f5d8a1df749b37a936862e3b3", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "0973414c83e5eb9f216ca2c7769600520b3e4f7102a126db5fea5da86aac7549", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "1d7deb1d4cec5fc73f411cd6aad22ed2d5eb385a25650087ad5dd769cc1886ce", -"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "60e86d19887c9b78a54ea9b42b46b77eaf2a78ba4d77dc94b6a390cca0b0b231", -"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "335aa6309a3f62279222e8a57e924c1f40a3d71022f167e4130252e4badeb112", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "78a959dfaa10193a830344f22567f152811ccb4c7b675a617fd9e42eff77cf8c", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "6871dd691938e04708ec237aea40b8ea311dabcf9b311ed81d7a66db3bfc8272", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "454d87b024070deb806674c2b0b5980b662d1ded48ee0f15a5f55315c773136f", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "ea58aec587977d0b7208501dc283050253e2c86cff45ae9fe2358aaa204c509d", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "1920980c44087a42afe3a5952f4cd58b712f7ab3f04e630a4ef24184d1cd0f11", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d853cf38d525e744affe105beadb64773e896da4baa78d4c4845f6aa1165b6df", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "365bd7357ca6cdd0f7db04c5ef27c3c61d87f24a91483d0b3131874fa88dc20a", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "a74a715a5fbc3388d2f2f9598c62ba9b902154da589e14bb092c96e01f1f1bb5", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "9ae40dafa5318e14bec7ae0659478fbe47be374de579becf263c8f67de3eba7a", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "a6733f5e82c2a66a3030411f0cfb0e2be84b093d0fc57f289fdc12132c02e6b5", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "6ebb5029af2d3cd887e219da3c9f365e0cd35051cbf882312a3de4f2fc57e2ee", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "e57c783019086d92b2c848c163f7d0c32926a606312b828d5cbe51a8fbb2e447", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "72d8df6f0eb0ccf744a5045145269fdc4cd2eb1b5af4a19eab970eb95676f14a", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "18a118daf8aa6d99a9b8ce7df99367a20029e29a9e0acf3f9069d3e76eaf5266", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "706cf41002e74ff8833123761d6f963c781890bc9f4e9c92705be114c8a16aad", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "67f2e609fa778e908559df1bf45a1bc41e4ba01e86c5b1f005724cef31f2cd0e", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ad3d77620079738586bbf875463a44f675d31f757b43c8da129f54d6cc826201", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bda1e732e40461615ce3aeed46c62243464b0ca520994600be9492d02b23f139", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "6881c0dad0838a3905ed49fb96f13b6a9cb2cc39265e9572b17ce3e2ae2a7f86", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "aa3b0c52904df02464f9fb84464615c9d35358a2346ac559b9880d283c175f7c", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "32fbb5c64e81b24b52f670bd09e606387ba1aad8ded56434f03e51232c68517d", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "aa3b0c52904df02464f9fb84464615c9d35358a2346ac559b9880d283c175f7c", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "32fbb5c64e81b24b52f670bd09e606387ba1aad8ded56434f03e51232c68517d", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "589e68ec22c683a51099fc3c3253927ab2775492edfd3d23f829fdd4fb8a7931", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "5b7b68478a9f04493f74fd489ab61e17940563b1782f1dcb5212f4fa98774500", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5604efb8e7b5ad8957ef5e8cd29888ac8d708dea2555779efe5006bf194491f6", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4438d00be13195b83dccfc6acec4203dedea6b470434f084e38f6a447203f13e", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "3c6c0c9dfa1a8a3cd37ebf3a91f1dac88574e742fcadc333e657a4872f726e2a", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "4c1c07c7d569f9ab198a119d3d7750a086ce495114bab94d05a4cc585dc96612", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a76f6d07808ab5f7c7839c2f838578ffbaa5966c483b371871cb2a4b3bd4f10f", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "24763707be8b2c53bbe42307ea51dd51914c58cd4cd3e2b145dbc89e36560f15", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "92853b217b954fa6d2c9c568d6eeb00cb016e0848822a26221c445b4a8da95c0", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4d9977f255141086556591f9195095305fb55a43203d07ece0cee8fc6df34d04", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "7853b210144cc30a42e7a55b80b9ae295abe3a14cf08c91e1b29146c1c4c97a8", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "7212a5a1deacb678c2dc4d636d5131f466f0cd75516dab5eda83209fdc379dca", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "7a3ab9768a6598fe3c8d9001f08133047050fc3494dd449ace04065807040799", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "7a3ab9768a6598fe3c8d9001f08133047050fc3494dd449ace04065807040799", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a8cab9f8ca0568b71137ac2df1b1e013929cc26847cb085e53eb2f567ca4dc5f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "1a9bb012020435f9153984a97be5a5c05ea054c78fe86a82e8195ec95572e19d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "2f1e10cbc440a2944a2c469d961db38c6f90d34a9c96e65016ee81a4da70e76d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a8cab9f8ca0568b71137ac2df1b1e013929cc26847cb085e53eb2f567ca4dc5f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "df66e7e5d6c23b1303a2bca9ed58eab8e8a512ed10cfa0b2d4ee060b5bd115ab", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8847b4b8b2b2ea8907a43ac44ec23cba61964948a08f2104fe2080be59a34d8c", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "93faa2af611eb43fafb2a89ab9e91e0cef4869eb7baf0264ce78f765e1b0c389", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "d16e72e67b67416335d918cffee28d99c0dfac99a89d1b39be8a7a49ff27fd9b", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "135eba1eeb3afe4e40233463e5f98dc51b30c1fec461f6098ec43edf63a2c32a", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e3762c0587f457a98f15222759a44328492c21b33be95e67b8c81608cb6d03e4", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "65478bbd16c797fa041f3ddd5e35558f9054917cb377764503b2db9cde20b7a3", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "86b324032ec84c98e0a5b3084b5d634940bfe967bcf7e057ba627999b8ca1b79", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "69af1007195feb85f94ea26596f4e4eec7f23a9e64fe090b9013d26e7334e74c", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "93586463d4680951e768e89cb5b69e94918407529a7089420b7b502c5b69f494", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b2edacb4c2f6b7e162b64760dd78e94f41d932560a949782224c95044287706e", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ab5218724d340e1a575e3f3fee9112aff5140106e6320805dbdef4509e6e4246", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "6ab891ecaded69d1bb324ccc379a0e53a4ef262ed2071e61777cefc067037e0a", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "274ef6a6f34efce374b6d7fbe51b6302a0130e11734f37bcb7bcde0fb59eadbc", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "88b91134511065f5fa3a0b0673fdc264623ede0d712c0fce97938ec7820bb28f", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a34c49ea173220639850578fa022c4d8593d9c6c19e00f59159989a750e1362f", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "42138ef10818908fffe2700c36ad21f216fd734e2abded9599d1f76d77e963f2", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "02261e5bba77d70a6de960b77d0bb926acca080c63b4137f8ad2b0a5153fe4c1", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "90ec51e8ca8e6ec4ed00e7da67e6c29b0eb4e8549cb4c92b5d1138285f8c87df", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "8b593c51e2a0c4b36912ebc8c2e25b386af8474e3e221191c9da766a7638a27b", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "1bff34d3fb17f0a5460c62bd0afccfc88cb29bbb722a85349c84f988082886cb", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "ca4892cb9ed10ae3a2f4d4054c41bb972e2cdbcccb7a9125ecc93844e04d5be4", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "07ed4cb30af857f432fbfb834e50422931527f0b5eebcbde88e422621ec9420b", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "75da6f9b4fc583c9ce86b2bb68eb7a31a0f84a79df1bd448a10608a1c25d4b51", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "63a17cb8a15f223cad72ca4ecb8511041249758acf137b0b38acfe272c5ae057", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "e7dabade93e1e445c35f32502badf7639228cf02a93d66afcbabc9122884471a", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "f48a02ea5242940ab446f54e952a77957b2d385eaffa947e173aaadd50e2763e", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "5d0b7174ffb7392417bcdb178d102efa5d1cdae89001152f4581d7bc165c6ba4", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "6c2ace47b5d0845ed33dae6572967df4dcd21cb8692958a8e7c1b2302a759aa0", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "0818ffde29c6334c13620d86779d88bba8bb683dd014e900f7090ead63bf9d0b", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "c4f0edd4ee30d5192930248f6ca2fa57e5528a0f41356d66821f53030cdc4029", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "c55eb4ec67cc883949cb412b244a6c12e1c1cf212685823e082bbe896e36f2df", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "bf1ca724e0348e2faf1f17408633e4c09d93524d1d6b839b2db8292efcb2b26b", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "d692a9a63386d976b29786c10e32cc8382763e5da126d32e03efbeea383b74f4", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "fcc3ce39b21329c8287813d9669d9887527919cb63809ae28b74a51b68752319", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "26fa371eb6024c5d2b33621f1837cf18389e00a9fe6df7b82ee0eebc20c9df78", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "f52cbd36acf02d3f1fda19eb2c7daf92c5dc3c81fa347accd7944b2c5f747600", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "437e0a374a0b7d6e979e0e2997a06e852b40b2be9ddc987477154b2659014cfc", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "545c8ea8336c01d7e5911514f45314fa18341e83d8c354196551ada30dd1c59e", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "2f6b64c878e5b8eaf2a3f190aa8b7e37383535b2be7be5777555db46d9e18803", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "e6fc121d6dea54c1281fa23f033b7fea7ef17d05bbf2cfa1ff653ab672a547df", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "7d02a7ca4c93a39e2e99a5a7f6f3c36d69780959162a7f0552c042e759b4c36c", -"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "3a1dca74cdc3aa1c44b44fb6f498b60d7290bc7a11b074bcc8177ed5b4c32fbf", -"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "6ed87bdd15f815e1593bd96b1fbc9bcd1e7e7b57811fb6f0b5508c585fb5f572", -"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "c2d7c1dd0a1e7eed339ea8ba595e574dd502b9a8b3a55f42d93b6be800c6415b", -"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "be1f8431bdcfb130bc36f0d96e8820844930ead9a8b10d08a19f35febe0f1841", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "2fbf4050312d6e0234fb2dc503325d029f6324ca935c04f91199d58e8526d901", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0a67d101b35dbdaaebb5f344a61801545445396c2d7270a9adb3132d0f58ac3d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5a89c7e7bbc72bb983afc2c2af60d95921ddf2708616d2d5c342b25a3a314e6a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4f594bf9acd05f585a15ac45d7a5d260129d4eafa00743d26b24f5772a918869", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c4613563acea836244a7ecd2d0d9caef2428b0be3b5d164c8803ec492bbbea23", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "95735cb81c4ccc922fd7758fb317fbe5f538e90ed4ac7b9c97de25a674218a31", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "86e8b7419f6d6c21a27c253eb0b35c0d9436a289c25e8eeffca9214d43c8e82f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "cee382f33dfe57030dfc80193a7bb0ac01a2fb021b9abb42526229f2bdad11a5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6bf47689dc005ff8b2c8d41dd84c58c39ff0b298e2e2f1ef985e54bf75e8ed1d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "10671e157d62c6c195969c242f06e524fa8427d2d90d5038359e55bf1b88fc6c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "76dd000330cbee73713cb9273cbd6ebc1d7e293c012e106fef5941c5a15ea119", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "dcc080104fa7a8519c0cec341b1fdae9fe8c322366ea2311b557fe015fcd766e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2b5dd5a91d7d60efc1b04b4b607098af660ee042e99516a41c4d9c66edb1354d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c913ab54d210b23a816ad3d89dd22f7eccd8c294c5d88f95957c771dc8e4e9af", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "531f0a0e04043edcc15d8cf3e6e4e17b7e7c82197f1e7f3d6f6045ea24d0be34", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "763805cda3de593a5b31b276549da05a55f9bba121b83cada0dd553529c18702", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "9ddc8226582d403fee1239522bde5ee3c96e2d3c5a620da1bfa71269d14f926e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f0f450733e6fd96eb40499cbcc20257bf56e1382d6913b79ad17db36fe6fd49d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9e263b2d857453f17d476808a8579dae51f68d64aa9230c872e288cc62af882d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "988c20bb213cf340638804ba48a5a17ed98687861511b40e3dd70333f6c978af", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "298932e576019cf7a5a34e36aeec8b71e63b53f08ac7537d8d47e19ea4530fc8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "5debe5091dfb8eac8a7b804230882a277ad0094226605b9220f7d90cc75e792f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "50243116605a43eec2aa04118cb0f07fa4ec9fb6a3e13fdb958a562caab1ea4c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "547accd3f64847d54850b4c5e6ccd8ad20caa83f1b930218d04fad84b4169b33", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8ced38434c0cc508c108255adc2c315d474308a950cf9229ca2f864d1722a097", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "4556673ecb06a17f355c2db0cbdb1974499361b6a23b6535d1a5329c17395d4d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8d857c8a665933ce77c183fbda26f4284b900b947201dfe6d2817052ff903978", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "db702e6217832d72ba26b502e5e77fca0a8595d16000ac51f890c7484f04bb08", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "dfc6d464383b4e5c3c89d597298b510df711303b428c6256dbb63e37fc9d67bd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "d20c38e3ea61ab99ced022b450f754689cccde13e1a7317926ee02c41b5bdd6f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "64af1bac919a7051b43e17638922e127d9a17c95e14a19cca5b5effe4b5550d8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c590d6c1b26a66dd4a3555d89cfc07cb54b4be8913117d0d5503be3e53ebc85d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "35abc08942aaa0f711188d5bda2838f330b1ec4b982fd0e3cb0ec02becdbd975", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "85a2020a385dd9e4a884f1b3cf97c1aec50773add42833b886ed71a6d75db6fd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cf3be7e08377134c4118bfe9147a6783fa365288d711a8bbf80eea017ebe1f07", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0408f2010d1dbbad0ad5b647d1a4844ccd092f7fdae40d927a07bd63003335e1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "551de185b7f7aebdbd16330acd8cfc2db0d7f4af0c33b284d1202445eaffb75c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ad892b092565d7eff3f22b73c478b17d207761ce22c8f721b71a184876238d35", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "e8f0daca8ab522f7c97d3624ee13922711cbb39a9d35e7dc64b6c062e17ff336", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a2557fb826e3bd3568bf3918363865b368b2f0ada5032de9574a1957c6a26b81", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "65b1a1518e976ac9fdda81403d8ce9b60a208b0648cb248202a36034a9bc5258", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fb2d9ec0389f9fc2d5fe8a0481e76b4a123c4cac1b46e872ac8441e689eabb71", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fc046d0cb15f58374373c56c6b9add1175ef1bebe48ded0714d70f29fdb5e96b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "00d1ece5abbd4adaeee7283b457659eabb6cf1c12557bdae4fa8b0aad0717476", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "2205a87e30b0253a2c5c9d1ae887d6ea49170069582d120bef35f660abee1952", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "a74cd859271addbae5730810e7475ccbe256911e0aa2d10841df18c062530970", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "29c7a13359a599d2948e10968e1cbf20dc442aa188913a90bb84a83b6e7bd633", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "4e9de82c3c7beee2a39cb7bf711c5abf24a5e43f3ac5b08cff41df3ad3820d9d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cdce5e977765d9c237c171e49a73b16b09be0750672de56cb2c1a1719890a333", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "0d52e044f80c726a05a98830ef5a06f0e293070afc0b0fb29ab94cea38ad04ba", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "bd3db103d0f649ad7b53367387c853ce8e85424ee9b126db154ee1672e36c7b5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "7cd6075e4612ca32e3645fbf27da8c178f4ec3810f881878d255be71f0830d81", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "01c3a73b12e8908319e86af5b8907b284842e51f4745c4813d576e540df56dba", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "c1ed1ee6da6349e77fdd344b17382e9a55ea9a8d8f27c19e46889e12e4e4f053", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "7fc7ef94f3290be392340ea5a716f7dfdd132b02c088da07614bd4c7dd588115", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "8fb03f6cfa870606a7027567009759f5e37a67632dcb9bdd57b29c63ceb75745", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5dd66ab27b8e7d57c44265f357729ccb70f39672ce1cdc3b14e96b3ca803132b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "80153577ec69793e7f49d5a15faba9c6653e5fa8d4829690692971344e2eb928", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "66b0d1596afadb6b40f840aa37f50be72de21d44771232d261f8a6ff1f65f1b2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "8871464f0ca0ebc584334d092c84f9db468d961bd6721c2db3ce53fbccc7562a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c2971f5d651d7b3b72b8efdca9cd4d37e61ee851d2ce3631500dbeb4b4a2fc72", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "29c331c51bf4b252f21f35fe783c1a67b2bba39aa969623746e6b398e5eceaab", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "4edae7815977ca41dd52174175beccd49e766d93126ede3bdae95d49eddd5354", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "ea0266655b843e8fb803a4fbcbea0f4e43d602a69474ab224954b5d9288cd359", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "c9d0db43897795ba26dfb19040fe586c5a21d9f500929830908214788da80685", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "016b59126db93aa67e0b5d1de9612dfb6a139270b81341afc1e5e6b1c98a741c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "89e6074f93a6b6d0b8ad8a333ce8642585ecd60ae63707e1a18da7d71482506a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "206fde383d014964bab15b71d559236af7e3e13387a342f80b2ffb4ebc10bc8b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f41b07bee021566060477286e97e352a41a15e52cd4b1656a283bc59f4e49069", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "fa69507aedf12106821cc460468957cb3486d9b8747d24745f1e0d1f018cbf98", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "5062846d9217254ae6b2b988861a7c9191e28a2fa0e0b3229a9068fbf4294767", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "95d14f67f789b2c93a55cab14b2e0c96c9c30f72898a22eb4296ec8729ac7cff", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ffdb9bd91151fcf5be1fc569e687cf8bda303f8894acd0c23e635964fad3a32c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "befd923116fd7afc9b8600b525123c06283e8b6ba749a1e07592b5aae20316c0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3b8e31ef6838f5b86b07a1c8b1f7bc75454e1859cd02d4d07428209c56a637eb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f60cf2edfdd88c8a22df5c5a4655f046996dca8cff3773d9b55169660c042f07", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "7de22eeb6c59456b7319cac5a4eb1264062c35935c7d727361908116d45d727b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "541dd35959c599b82eede7a3336ff68673cd35bf1f0e1c6da7359d6b9f36968d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e82164f38cc710b7f53b01b4b6445c6edfe8edd8d9dbf1c29a912c9211b312dc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "21f83843259aa869a6127df0788a7c37b1957c495526a22bf053779f36f68858", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "778e4ab5b9a8df87228d72fd43932f95e9cdf58c7ae03aa475b412cec48bbbaf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "5c82462aa9aa9b37f312a51c936fa1236e6b05a7d049e0070bc797842f6a6def", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "e728ee2b093f71e19f8210a4c431283acc53d6790fa6de22e617a939638f7cbd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "bb742ec27469932a02c0f38e46a1f07da90ec896c9b3ab6b8221434d15eb8932", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "08e85b1b0252629fe5170f1afcc6febf0061016f059eeb11bcc83f28e20079cb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "74728cc1862fb0f3c3b0daecba04fd6dd090ab314cc899da7c7c29b50c57ca4b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "9fe5245c5ec4941d3b1bb000d6212f05e5a5653553c86daa15ec82a1ba49d103", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "d454a300a25312d4ef81351e68b22a46a95f4d24a87efcb4be077658c915f980", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c3a13dda79857b8991caccb8d1dd83cfc0ca135d5d9f900130d644166bb7486a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "b0df6d24828a859f565973cff525ea14b666fea211fd81cf8df229b0eb117513", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e85ba42d143ef8718ab23535e509d4f2162faaffb290f31ad0c4774e3f0dbe8b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "41338181a4e1dd1e8fa5ca591cbbb8ff56ebd3f4752eabf4a2fa4e2ea30eb70a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "87f49008b06d12d0ab16d66fa3d109505889f898de59b29de4cecd6299ff21aa", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "df049cbfe85eb8bb41c3d76b5ffb1433a9f2f05612421e66b367c977649762c2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e1f74521d1e57c0cf538c1e62ff776c17b40db2571785ec3a8c85707962182bf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "56310309d59d05f9bd90623f7942e6155c395efced4699017088626f6cf5cce2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "dbbd5d232056a68672c9d75e475be928755292362e7bc6c7ea35661b37c7bd3e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "0baaf6566d134b2c016869d54064e62ef59c054df41661baac274d208befabf8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "945d9149be0737f6c12601eac668947322a3ced639764f91ff7527fd0bcdab66", -"T3T1_fr_cardano-test_derivations.py::test_bad_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "cb99d5ac65ed7932428fee58928207b19174169a4dcb0813726ce31078e998bb", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "ae26a68cc262accf92181b3db1d5978b1c80b68dcc92bad76a787a17dcb4a7b1", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4d90cc7778f4b702a828487d49b652cff09a1b118f6e8ffd1cf571188a91abd2", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "d110c223035c1f23788d4f971a058a951aa10b581211ef205aee54ae21ee92d4", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "60faa29bf4796169937fbf0dc2b2591e990178908f28d9ac934169ea9a5839ba", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "a04fa19352fcf26242b02bcd6a84b6bb7edff5a2c8cc256b8e1c9441d8caa070", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "9f250649a3b5e887cb8c3ef2d031ebbea7964e4a1a51c33c7da3bfec1509a0b1", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "742fda033e3e09925c2875099dd5694041237750679a1dd8655d876124f9bcdf", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "6d78e8ff792244646bd28d9f5152a1038e468b32bec9fb1dcf915a6d1c9c2d69", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "72d157bb8c44f7d45bc5fa46da6173a9556ceade2a9ee51e23ef739c5f33f3fc", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "988f2f4e5e3e73371ac643252bf76a11718bbfca40bb643839eb692f77c153bb", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "1cac85a1d95766ed1a40f26202aa0ad242ebbe29197ddd1f8536af96b9139198", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "396e2461990856920dd261bda781ce7472cf3b49331062801037bf84bde31023", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a70f36ba6d7379273b9651315e9f24ea61cdc97a259366f8dc48dafda7471b12", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "fc0af93e1e7844b00af04c714caa6e3e857575ccfc9db0a92c44f9f3ed3267fe", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "6431a402ed1eac6d6a74d8438f56636b46d0ff64b6a4246761adf1a2eb58bbb7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9b6a3ae8a310c2c9961f69bbef0463f16335350724a62f05899b99a4f9f63550", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ea8961c7c4310e9013b0175413956ba55a39aed8a5185387be2469e376329237", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "e026d6ad82eb8ad8f6a2ab24f15791debb090bfb2858e8de893c25a975e246b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "48dab10f44952cd3a073736f1845228b8f10e81ecfc355903f5f0f3cd5f53738", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1746d74b9ab1b78b97f6d62c7d451bb23fe7d4e5da4989fe10af17e32594a628", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "ee8a10a85b9191b3fab92b35836014905c77bfcfe6b62b3f6d5b88ca412982b5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "f23f4ac805a43aa030c7713703c37829e8fd0d7df11367e507be432de4209a0b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "f23f4ac805a43aa030c7713703c37829e8fd0d7df11367e507be432de4209a0b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "acc4d19b113a60d034f20001c01296ad69a95c0d539364bcb9cf850d9b863215", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "177fcdbaf4cd7e8c86a8ab068e42f2206266d43a88257f2274985f9666004fd2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "702b0b13147a51a9b65f053bdcd0a19060953bd303744928f83a765733374fe0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "50440bda16597de73a48885bced55a8592187242b7e497a2fbe2bab099ce74c0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "35c515110ebd619d6da512f5c5f12c021b57ce6bc39a23d93f3062b6ea629830", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e581386f4fd2fe1ffa9cb711367f5ac9c593ebc81df18c7d6dbe630a83d556a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "af97517dbeb960826f23973ac07d3ca0924fddd84b0739d79feaffde4afbe4fd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "f197d149d6094c80238168f98e6f47386cd1e64bb8d8630c3dad946f69323b7b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "99627beca831c391830e4b7dd2608a95031fea0f7c729da6249543c6e939798d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "35c515110ebd619d6da512f5c5f12c021b57ce6bc39a23d93f3062b6ea629830", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e581386f4fd2fe1ffa9cb711367f5ac9c593ebc81df18c7d6dbe630a83d556a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "c63b04878011a796379b57069b6dc730f6f5a5549423dcb940d350a92b20ba68", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "82b2f44b805b9447de5e50e1b0b7e9f88f38d35455b0f4e2f6f561affe8ad26f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8a33e36ade7b04caa5a6713ff3f8225e129accaeda5758c5b1292c28107e7512", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "0d5b5f93a80e24f6430785405834a61f74283d58a0821fbb937460e76b7f8bcb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "63b750f43ef04a720bc38a6d1f1aee9f8d14065c466cfede4c1a43c1c2fc2eca", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "da1d7917c4858ec56fa981810b1adf0879c42ad4d1cd44d01a79b94cc13e2e81", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "e34cee2a7d43fa8af764f936015bcc51be10ee4c6a195f83ebf24de518a1fb5b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "dc3db98b3b72f6505ae4cf0778bd6feb8d3f22e21c5838ef03ef0f9f1ff8fc15", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a7a6a539ac1a60d5d76464eb9dc814b5d4b97d7f3210fa550fb850ae7e7dcff5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "095d29bff240700a7e6e26bb8bac4d168a7106af1b0f0d6b01ab981bd4365980", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "94c82af1cf2a0d1a964ab07ef5103e2e43e961495d302479cac15d98a89e7ba8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "9ec8932f47e344d1e9ee1b18c9fd0cfa668fa0f49735bb9e8d0a7f7a821ab76d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bfe7a99ed9fad6a84be970a9329c02ad021e0438206fa0f5bbb9b349996e7a19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9e737a9e4063f5c28462df1843d2cefc7194e8ed81a5d6400e9d90792e2cff3c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "626b1964bd7dbdde2c4f73cb597462340909de35d1abe538aaf4f7140345da0c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "60f0a8a40460d7ee7520db5bdb2acad35dafcb1c71065c3c7a9b6d13b0f37c8f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "d980782e888835ebfe6d8ee2703c56a2086180231e88fc14bc575c3c2c85ced0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "681fad7d2255d0cc2e9c3d697ed821c54b02e36593973bbef1eba64bf42b6fc3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "f9edb93a838701beb69797160ae7fade0c29af00f67fd21bf5a36a8eb28cb550", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "2022a49ed937a461900ec26e70ae64312706122f02687c2775ad2cf5eb9b1764", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "b9569a3257eadedf3db7b81b24e0860c3a4c34fdd0d5901225a1a7dd8b4f7876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "dab359e893de6b7faba1173d107500cce4936db3b9ea43a1bfda55722cf4de0c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f181d7aa4bf9add2a94483a7e01ae36fc1e0118d92959c16bc02bcffe08d6679", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "13b2ddbf89dc48b1c512a5aea8ef38b1086d1921e65f78a968f9afa76468a278", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "60f917479627b5c918c8b8dc90d949c474732cada39025d15655a656bab69e18", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7a4b0368b646e185bd3750c5b73974062b7fc4ba30e6613180041d20e27065b2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "72f1b4c1861758f8b93e6b33c27c8fdd362e0196413902232f33143fb6ae2f9b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "2c047c596fe3205e00a5131efcb14bc1c6d5ee3d5b1b7af0d7f2744135d29e8a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "c80fb43b5ecadc6ad7885823ef19c985f1ca1f122a5e266455dab0f235217d6d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a8cdd59ddabc38921c5c887cb895ed3ebcd397c1002a5751e4c7074d1d821acf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "3cddfc22620071b742545259ab5bb2347f42902b4c0f6187fccf0f540304842e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "e605a5c7e45ff3ec0631d8ad8dac42b06d45e30cfc790d51611f7bb3cf2f1987", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "33a163e69082f7e06eee34a7614fd4218c76fedccc7b45d4719bf009695ebf6b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "86cac8d5a932a7de4846f4c854a7b6ac39f1a16b27307f8fca366b357fa0bbbb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11ef6fc1e148b4777e04173fda74991e7f623e9c4e0c4a5d7dcd4d9bf2af7e2e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "bc11f996c3df62edc0b4c890f8bc84f0255a7dabf43cf60f4261b620eedc02e4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1cab6523a7a5b46631b08034b8b260910c808b0cbe73206657a4c8fade1f3973", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b5afcc4f7275aa41f2b59615f242eb5128102b9a4f2b17c272162d7b3a9df850", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "adf4203b973746c9cc0abd83d067df69b5cda20f9bbb58fedccc6c81727de659", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "844c73b7715c7dd0fe2f4d54e380c3abdc9ac0ecd1f84d101a027afa449c6307", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "16816d58ee16f04c41d0258d94cb123f17f1265a8568c515347ee8cad01b008d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3fc03fc2ad2644160f1a0d714bcebcd391050b6839057a6e6601cec64b22fe4d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "b314a79d3fe667cfb6c80da2d0c72f747b3f4935a9890c7001d0811ef96a69cb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d67317da8d8529f32f492c15a36a6f56ae3f224de46d957cfffb686cfd3843bb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "dedd91139f4c90adcbb218c9cbc469a0c3a58b2d1d1a20c149d470d9572f9914", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "3b25f3a58e621fff908387ac16386cb852e14971cda033da7b65c101a0ab0325", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d22f5fc713c8928e8a86e4282624535c2fe722ae82207355f6ca8d81b8353c05", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c14cf088eccbabcaa50cf49ba0653bafbf1e01228bf87883b573ae72df926fb9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "1cd713a6d13b23082879460a1f2cb3bebf69068b6148053f866992d26137f915", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "26a79bef69fba4050f437b78f3f586521620c494e6d7e566a8ba0cb3ff4b05fb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "4f72ef72daa39078796fd614b9f324c2ac0bbbb580f4471dd7a1e74014afd990", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "22c92060e1e820f8af43cfc0cf291a6ad3b66ba21e38ba78f511539cff654eb7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "473527527631e4475012bbd9d38dacdd29cb136e2edb49f003a0425b3badfdec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "dc38b3b1ad5a022ef507e4905d9a564570a01269b50cbff83f60711a5d4862af", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "fc1d104e6f6ec3c1d5237320af98d9ab9b0c26b0c47edc90e0638d651e1322d6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "c460142eb3d8d11039288d79558106302080279b884c4abc62d3870b66a3f066", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8c4d588b53ee2ad7e2b36ab863e66cabccdbcc00f870720e3519ef0bc06f6ad4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "7747250abe9ddfb5b6a87f7623d43a3f7eef812db84c30ec4b24a7345e187eec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "de558be66c24700568d8dc1dc45da7a16c7a4c482a8e72b01e63c804d0312105", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "373caa779a13684520cbcdfb61121601ee20bc95b37b05aee01a22e713c8f566", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "6ef2526d894e42c667a2131d2e830f015e85512f2650f4565887079b82c650cd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "13b0fb87f6404e183ea39b66a0e563ebe7f4d2558bf17e4786e3c69527030aad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "90366ce48be5b25c062bf2f3b430595a7a2aab91ac4585a7a2778c961f8c9306", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "58b610bc59b9ce5595e4927cdf4b5df0909e5c4453b74d76ecd06ad0705bfe0f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "dbe21c38cbcfabb2d62fa0633aecc531aa071e63ae9d01af001f102b07f0238c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "13b0fb87f6404e183ea39b66a0e563ebe7f4d2558bf17e4786e3c69527030aad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e4ea39db7328fbc93df15eedaed2293b97de1fa2a5ac64ae50507e782b4e6111", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "ff7189ca07894c8b84bfc0e7812d3781966187a73157ccb1189d528cc3860fcd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "2d83b4acddc2b9cf70d08d621e1c72e379d2d2645af2c141f63734e270c758fb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "5dcad2b0eef37a0f0d683bfadba3eb5403c237dc51921057c111d18d1d9aec5f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "b542569660edb395546fc61648d2f32d2520844a6380a22becc7d3360b400df8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "d43c1afd82cbf6c92385e8e6673934c84f9885d7356219c2255c0cfaabf2262b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0183ca922bf62560277843b920c327969d8e393e763df9cc74a2d17b4fd53eaa", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "b2b0cf697704b62c68415fe6071b7de10e85c2c200b341a090a33e16201d1c49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "43c45df1fad0b15023bde95f80c8e6ca6e05fbddda6fd0f35640d3b70ed3b5c2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "3a702d11fab07ddc81428ff1a74c71651ee41b4a76e9ade31ad6e69a9871e72c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "a05384a92babe798259e9b182c0186889c1011f652ded30ebef23a5dc85a0732", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "f5eb3393ea773d2c879a0f8ebae535a1e60e6e368871a8bd97f23fb139211e21", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "0503ac55724ab278fba4ec727f29ca134a2aaaf9c375d19ff9c453ce7635b795", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "1b1c579a7c7ab565031c94592e7d69cc33e063ee9e52be3d63a3bc57f1fe0b1c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "76e584a1a5f87b94a3414cb4589a45776da8e33a1f6d48ec30488e8e61432712", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "04afb1bbc82e5ae8d3459153c12a4eb8bf39f7cfc212e0368cb7ccba7bd6579c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "b03a86171408433a481778f38f98bda01edbb8ad955f5bb139b0acd1f78c92ef", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "523da68fe0461c01699e0fb69484d06cb627588cbfe55dccce0f421be3319d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c8a834e12c2ac6a3a2e9b4753d142d79427747791d652ede4a96b40c6c32e827", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "3511bb386c1129f7c73034357d208dba523b4889fde49df82d80283906f1d23d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "5344a8d77ba19cad3e9c94761e492e38e5ad117c2869655f658a55e8f8e383c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "44c97d00b2b83baa6fcc6108cca358f34edd5ca2a67fe56e3ed85be04be0a63b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "ab4f4f4db76a175c51c08a1e2352a5f15b875f962860779a9c8aa13ebd80df1a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c675c01abcaf15aeaec6f20ed6e1470c03df9bc40b13d441ee93d11ad1e6d3b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "aa3073e7484582dd43701e9a255dc4e96cdaa6a2aa945076ecf99c6ef668e1e5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "62c3e4d5121122a16e4dabd1ab08b94f768e6480719ff95414ddd9a0438ffb53", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "6a9880290cb4a9cc76d5aab3aa497213d44deea3a1bc5d6bf055afe002107169", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "04fdecf805f6fc9402018bed2a8051d209196c9b2c04d1a78e9eeb445b9c7c88", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "9218d443fece701f738ff9ef966a6a5526a2e8203151e23f8dcd4f7c9f214225", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "66832214e5deba2e9fab96c80b3069695968b0a772aa2b16eefd8077e67759ee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "544b9874c11f01f879e1742d9ea7ba81f4d2867fac9250f6a73edd30b06470f0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "265bf5540235b94968295e0e3c03600eac05c4c24ba264f8ef3bca137e81a56f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d7daa5e86a102c7c2c014cc041360ae867345b4df09ca7c3b79d051d5b7bcdcc", -"T3T1_fr_ethereum-test_definitions.py::test_builtin": "1c98ed8141eda4ba6a5c7d2e1ddc0fadfd150254375d162785e57bccdceed17a", -"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "090b2890cca08fc368e3f7e7ae97ba4c599fdd59761d007ba9f93b07db19fe6d", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "78d21e2665b7d3df8a784437279ccd505d52d1c3b13447e5f454cda0fba10759", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "5a19c2c3f96af75950f14bfbd97432f04c7e213e14088874b90a8c9fd5f140d7", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "1cbc76602510f2c32c55ecfc5efe9b9048244f0cf2eb9c71e49b745001e0689c", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "30b48c90b23e603d4efddfe3722c1329d3f92c5d59f648d225b882099beaf712", -"T3T1_fr_ethereum-test_definitions.py::test_external_token": "7ab7d59356c2a2cbe646a815ea958a4457a272cb361ae91be6abd82189aa2059", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "602fb8ee875e3bd792e821d1b0f3196c93f4be9e3feec03b044a86d8911f9b6c", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "3ede7171d0348e4fc94746de7569d554225f637c2368b538e295f15f87e21b11", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "000cf76995c7e2e9580c92ce2bd8baeda4973a61261cbe5564097674e40d94f3", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "53b7ff296077b2ad738889d6071b8b4f3d7bd5c910c146b84312129a003158f1", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "d44c6b2e62b6e036c5fa743a664b79d97e71612892e3291807bb8c61510cb475", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "3ac43093a0553eb09dac7a231e6af7b3bb899b44afd776fa6bcebdabc20cc8ec", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d489a535bbbbd7be586020e58d14799ea1263e8dba6769cab223d0659995d39b", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "5649ce9fd2515a000be9aebfcb0da2a13f76f6fef06a07d419afddca76d130e7", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "dcaebd38ea28f5fc70193dcc7d97ff3c494a366b84fec06616df6d2b9942e437", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "70416eb4e5bced989db4982ae3be94ea88aa6cbcc252f8ddb5a862a722f69a39", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "97021d42069ae178acc69a2e6a2ad3df76c5d2174b5d86794c9bd19210ced67f", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "0b5c59c76aac2e5991509f687f0a163ac966ce27d9be3f59e0427ee976234f32", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "64e6f70c3d6e15f231f99b22767d57e822ac6b05f22b777f2ccba3a0c3b6cb95", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "637129145f37ed44276f945e0f0b5cdaeb883260de79318b26179fdcd7dc60e2", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e7a5f9f4ea01f162953a54b974116484667ee71f91424b0c0e2c126299aec0bb", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "ab30489b5705e0b19a23f3eed7a12e709a9f2d5896d81ac118125c4fcff4a6bd", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8fa4f8dad9c2b42e83a21c5d7a0911943c6341b5d2404fe00d7046a95458aa22", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e096794bfd3500d928eca4f18d1770b094d602279cd1c1e0a4466a1f59c7d642", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6177e126a729ab3ba81d565fa382a62f759f761524d271198b47ed46b022914c", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "832c953fce9df18a8ed60b1375eaf0682f5fdbcaf46c0903cb0253e58e5b5bbc", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "36ea68426e5aa77cc32f4ff77b45a9c105c353fab08f8a0162e324f2e53a1172", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "7f4bc9304f1a23e2d0a941777ebd47491aae1a7d449ac86c607453414e41df59", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "db92c75936f0fb1c81d468fae991b291657d8bfbe4672221e68ea8155dc3834f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "ec97c79dc2b8f2d6a558201b8542ad757454f0a0f7c4a2d8a78d5713eafbacf6", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "9edcaefa32f557201dc1de665465c1f822a60f55b92be958266933c2f72863c4", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "25b35c5ae72807dcbdad24b13e59f8ef5c848834ab1eaa4eee47a3516d851f7f", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "28fff7f0bdd2772e45e64540efe47642f2040214d99c710213aa71f86d75331e", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "538dd68f150e80065f047aeac803a9b31ebde85693670c683391c1658d1c5215", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "ab766f41be0dc27efe65f51137d0ddd99f91b3e1728fb0450c2c7d098fe07dd4", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "da79a45ce0297efe71bf6a829ff68ab62ca64b820ed8db968bc2a6c22e36254b", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "1b2caadfc7c47469f54f8bbc00ab86d0f5efd0148de8339e670ffbfba800275d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "a32dd6578eb3256137d7d79bb377fa447c97851ee654652ebd01eb10779327d4", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "74d03409ea2e3329ee0dffe5e2ad0116f8e0280f79ff80fe42250657d8533bff", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "25191cfb8f16deef4a5a4d1001ac97f497f7789c4a7ecf648a7f615c0b7d045d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "6a3233fa6fd98f14759574176b508419990e67102dbf711cb093b983d80eb217", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "516f2707a5ae873c1aea6f476fd8aec192eb10beb2fee9f3c5fb7a5070d7a185", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "243d908e45f9d73d34cd6286813e4409ddde695f72b681aafaac5ba24d75e27e", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "97e87ad19314542bf26c8e1c5cd861be34f5804cf35c9cda4d2ab52bd3a9489c", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "b7fb38bf37ca5a5ebeb5ad1d21c6957a81bb58a16585a6def1d6f5c93b8da1f6", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "31bd0a0c5e670c66426095dfb9c581193ccf86b3694e371dfd9a869589f18611", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "b33f775b59faf0415c059612d83b2c4afd30b91a5bd125822fc79f5dbf61d42c", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "636e3fa1b4bce69bba5d9ce334acf4e499b0402dacaa430f8706325c531bc17d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "6a3233fa6fd98f14759574176b508419990e67102dbf711cb093b983d80eb217", -"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "39c644065c23ab2d40f5a219cdde89e80cef55da23211600aea975663e64c9ef", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "a70cf0bca25efecb826b9db460b63d728c6c4d7862d819c2f5fa8123417faa83", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0fa5200a85bc302d0c1ee645d7663d837ae373de1adf2bbb278d91c90f4c44e6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b392e66422c2a22c71f29d652d750d8b18c5f35ece5a362e733bf030db1f9ba9", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0fa5200a85bc302d0c1ee645d7663d837ae373de1adf2bbb278d91c90f4c44e6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "089efd046a3a539cfdc3b0373a2c6a93bd5faa5553584edf488b13d0bf93bf8e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "089efd046a3a539cfdc3b0373a2c6a93bd5faa5553584edf488b13d0bf93bf8e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "e0d1ffe749984181ed939c749f4b2c6b8fe35e745a479e50a0365af364343a0e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "e7068d20456be0ecc58577dc033010da57779a9d6d12cb906dc5b60d5513c469", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a2cb91087b6969b5ae344d00acd65aea40044e22551866a5df56f9de99c7bf07", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f55479bf285eb75e3d5f227eafe2f85642c1533afce8aaf2d24e6e7e59b3a7b0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e18c43496ee653734fcaf7de599f7b185effbfb4138bf0efbb5c323aab1d9a9c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b35066c915e731c414e80634ea8ec3fa51f0e84e0d907c02a4e765a1948651c6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "b13e260ea043fc69a0d9c3e7a00b9bc69784523255d730f2af8a5ce1ef6fb5b1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "39019472c630f90f8b6c2f6a9b4f82b61412e9fe2965f13c391706a855a5b172", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "3b30f7fc13137daf71b64e2dc7c09c6294af909372fb443491354b0766371edb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "39019472c630f90f8b6c2f6a9b4f82b61412e9fe2965f13c391706a855a5b172", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "326503f9c4681f24d9b12671dbb849b223aa3d6f2a667566b5ddcf3a3f6f7d22", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "326503f9c4681f24d9b12671dbb849b223aa3d6f2a667566b5ddcf3a3f6f7d22", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "6f7d27138a69da79c5a6b2371cbc6fd55ec4844a5ca55fd48de10b7670406215", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "67ee956c2e4d271eb4ddeb5e60f97226c9ab6e1bb305681bc8db81d5cee295af", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "622ad0639de17f384d91fbe6b7af462352ee73f9e1e8f6b62827626fd9496fac", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f55479bf285eb75e3d5f227eafe2f85642c1533afce8aaf2d24e6e7e59b3a7b0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "915bfa57183bffe468402ae5c6f9eab59012a417298e143dc43138efd4a020a4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "2344627e39f46b4cb62af84523b7a69c762171ad6bd20e3c0252e4b25338e94f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "173831538109a7fdd2b7f64e00736dd8ced301b66897e2060c9925430d4cd0bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "30a069438e974826e0255f3a74c3075e8d9d8e3514787421391b965b01516c4f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "48523c8f340829fc40105884871399b1679468f2e2f557ed9f856087702e1049", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "e0d1ffe749984181ed939c749f4b2c6b8fe35e745a479e50a0365af364343a0e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "da886e6c81a15788fccdbf0c19f02415456b2c80345bea15fea0b7aa9bb0aa8f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a2cb91087b6969b5ae344d00acd65aea40044e22551866a5df56f9de99c7bf07", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "7edc40f50cdf2a6a154ae58d8699628f4de817ef5f3e07831f6f52bc76aff75c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e364f5bcaec8f89a6a44d6d02137a317ac022dca4de04f326f03536506fa880e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6f7d27138a69da79c5a6b2371cbc6fd55ec4844a5ca55fd48de10b7670406215", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "c10bbea32b9c5e9fd420b759fffdcd34dabd4896f5e06bb632122008beeb2ee0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "622ad0639de17f384d91fbe6b7af462352ee73f9e1e8f6b62827626fd9496fac", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1e8787c9eda2feb94c3b4e807d84567195f82173b90653adf3ca1b585ca2f41e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "02e0e2e5cd83aae57e38e9240571332fbe393cbdb98bde4645f500532332d6bd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "e29654de22055ebbc1df87d28f388bb459a3b9621f04dba7dcd2cb3f87fde182", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "5329cb28e68167d514f3faddbccab0f961f6df1153471aac73214584d877f593", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "d53cca112b73ce71f80f06018e751071ff92c4ed945a92697ab6a9564cc32954", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "95612c88e0ce51851f0c15b816fcda0e7e8709e71cd371910676057fc14f7bd4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "fb1769a865faceab1475f056d619fa87056fcd1d925a2043b453e6536f5c90f4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "0338fffe20d3cc5f0d3eb7884532da9e6fc2ed423ca782500cffb2c14b5cd3ac", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "c724ab72cce704aa68e1f72301cc8d06d266b58a60f94aa73388d1dacf1d7155", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "bf54e749c9a5f27de4e0cc86f00974e9a34c5dcc3f4ac6b72df8dabc17034808", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6220039b13cbb33129b35333ad88c10cceaa59d1fc0f2d9fdab5275926d0e25f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "4481dde1ec203066ec833dd80b59ff4bc62bd9b999a9b7c1285944a27ebce447", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "99907338c7818035cc59543bb3fbaee66c7a6733c01b1086ebdab95410858db0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fe4e99ea77c60c90c163f3e4b5eab6fb06829ff8e9a50a2c55c7d408d2d4fdde", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8080143e0900fa3c98f7feb88d10dc5ad3e9a9b89f1513301564bc06574c460c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "af3c4058948220f5b8df1b06c0a6c2d560193315e050b2d4ed00c4ffc9cfeb19", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "0a33486a04d1100d485ce5c32d0de1e7b91d103c1f20e3f40609d6e2d87bbbfc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "0a33486a04d1100d485ce5c32d0de1e7b91d103c1f20e3f40609d6e2d87bbbfc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", -"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", -"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "af2b25f8baabf60958feece7fe4b9fe9fcdae783605ed6871204a2134ef5602d", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "e404aa56bec9db40ae4294f2406627b1ebadab606ebd27be2aee127a966b1a5f", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "0584acca025a9ae0f32889fbbf7b4a2edb5544848e515b86b921044a5b37aa2c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "8c70c852de2623374b4fda1e3b07d75db47fbf21c371bbdb0a3d971056b24838", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "7ce5843a41a23a1784826562eb7ab185b9ddf5bf7dbfcec518bf5136097c22b3", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "9d990d6295db1d93aaf311cb06e4954cbec0f1c42b830099513cf8926673a8d1", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e25d319f5771103597fd73f71590303ae4e538822a970e6d649c8749f234b9a0", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "d1ea3a074576fb1b1e93f10e758859c3f91de0b830251e8e47bcfdbe35e637f6", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "cd37a982a7ba142f8380eeb8773fb6e28a22b8264c55e2bf3810e8fd8458307c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "d3b2636d945aa6b4bf7b03a8faa0412753b244e5c8309acc24a3064222c193a7", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "052ff6f160215c66b05686e39bacc0f932d68f560e0abb8f37a49a6710a4d870", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "376e4ed50e9585dc31d297f1d7578b662682bf95e07ad2750865856137411318", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "7bf2cab0d6d11d37cb7d723530bdf1a6fdf9627c6f03ddb3372b6429d3ccc90c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "80ce58572ed6e634c4b46b1e335b96def1c83ba4d63d18f22b86040a4689a648", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e2fae2f630e8cc65fdd66d7edc4bb1452d1fd4ecb70c028ec9f5e6273769406e", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "62953fca62df18b03f69e3644b65ff9675169c680c83e42a0a0aa33dbd365eb2", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1f94d9a621b404def62ed8f26ab27b00b41c64d8aa006c3011c2a624b73734b2", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "9cba2cc87e68b60178c3d7b823abfc689c56ab142b8351ab7200d6422caed6fe", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "44d7d7c1df2e1c0c79e5eeb3957f7c52097dd6a276cc7e456e1a6f0afeb0384f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "6c7b98408f2d7e62e10a01f382effa2618366492b272432dfca39ab797d5865f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f93a11da3f42d5b2a55bc9a9def07caf7239a0881b5079d0d0100888d8ad8285", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "2f1765c1ce2d8cb88c34c646a4490ec036159c5fae2a1a6a2f21970f1b79648d", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "c97d348feed1feddb7bf74d478ac717c9ffcc374b500526e5dc74c3c528dabe0", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "43e1be5b0b661e2c0428d752c7fc9360a07ee97ffb19512b5b152fddfea63d7b", -"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "545a8a545298d937ef7475ed16668a2ed0f6462fc65b79c752fce29193da744c", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "85c8c6ac21b2462a2dd0c2746d7c47f2734cede8f7c4023fd3295052db26d149", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5ceb252c7fc0ba64f433c9f49ea4e0dc643e662ecd8f0816f54c2bf0f99cb9fb", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "88df89dfc769ebb4960b71410abd0549bc61664ffae13403edc31ea76fba252c", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "538e2aa576dd56ef5054d1a3bff66d0c176c4f3cf80d7ff76b0412411a8b307b", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "b2f1b602b48bf3bcbbb12369a66ee0e0879d7a26c399c542671e9b8871f3032c", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "85feeb0f3d4cf30430c35fd38ddfc77cfe5a14193f324ee834dc6fd1dcdee0ad", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e44d77327cec2941c462cbad4db480757a6aa4b0a6f4e19f7a53ab119b172be7", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "14fed7b4c7883807c1b5a21afcaa2750fc91cf4659968715dbb0251ff026f3cc", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ffbb0fc217ea369ddf8f48e7996acb244723b3d90f1a236995991126e9e4e248", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "c4570091395a64c40b46acea1bbaba73c2eeef503b061dc2053036b0adce7b46", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "615a79f6753c275585c170398c6bb00c534d593c5aed5d7b1b27b15490c82ac0", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "eb16a5b7da1ed8b24be1db79231008fa3d4b64d308b30854fe64cb6a28102b97", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "164a4c03716896d3db6700cf919dcde4c715ee761070e0e2cfb014f7fd516864", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "18a432bb8dedd7614429de5e29b299e6bbbdbd6f04e03d07e005c536609c54eb", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d926be457d2fa97d55e977650b7faadcba87382ee365c1420ffbf4f77af1d102", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "61ab5d3375210cfe4c1a451e39bf197325d443f5bcb613e251454b3afa12a713", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8497cb8859b51d23da7237480044c6e9c7b60e87a3cb3428d57d529733767ae4", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "85feeb0f3d4cf30430c35fd38ddfc77cfe5a14193f324ee834dc6fd1dcdee0ad", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9f4fcd77dad26b98f5d7b0c3e29e960f8a3daaf3fb05471c5d5178547a55f3f3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "22fc081333652c2121954d8b97568817d30ea26b3abce510321c50acc48f9ebd", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "434257550a35df97886608c509a1f932fa53eb6afc33df03ce4c0bd7a2c29387", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "60330f58f8bea3ec4a300574b7e3ef4989d18af978c23f846765824f649caf26", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ad8acb8aa44ed8b27d876e403bddfc046253549c452471dab1ee2158a28d42e0", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "efc2f67b938680b0be58849b77752ca483893e7c42d099d7d547813dd33220ed", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "dd62e134242bec58ca7b52af08bcd57db546c111a965f92db1bad489b7ae7c93", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "2aa810576ef39cb32ff6837c29b8335e84eff606055bda54c98a6303abd5f86e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0d71010feb919e13db7b21f9e3eca29e9b5d3247d7e506977e1dff17d63b3356", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c86df7925da65b59a895f5fbdee03c346cc8f17e259df889c78bda69bf33b164", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "16154185227dd5e2dc40396740ec0b222624b81d1501a5684d0356232e495a68", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "69855dee7d227ed8014c64961595f76f395e1d2ff1e7eaefea672ccc448415d4", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "02b3a838e4b2a18991816b36778684755999f546fcce32646d8b78d0a8cbf36c", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7ac21681f55e71eb1c04394f3250b4ff4b392abd8c94bb851341436eaafc4bc3", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "90d893b38e720bd695b4794d333bf2ace96d187cddbe68bebf74b34d1676f605", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a9022ac13b14f44d1a377e46d201f3ac3748a875fa84850297d980bea4d74077", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "95d98a880b628b9a72426bf6f751b23221f5bbf2b639f6211eaa84d61f7519bf", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "add29e56f08d25a98b7738eedfc62fb5f11ccff23ffc3bf4dd4bbcfef456cf94", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "10ec6346e07253ccaa573eb06e94cff147b3ff4d17333539d4ab694978ef21e7", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "88771b035ed19bb793166d10c67c0cc99f17d022a26014e210a3c9be87c6a3c7", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a91e3be0a097d23c99a7d6fac54dc358d18830862a21b87f2d3dad3f3c4adfd6", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "980aa5da55f80c11aed85e8be031519ca998f27992301304bd0febbe8aebcb2e", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7424163883d2144864cfd39b1baea93a9b922f6bb0b712754ae0bb4be4b9865", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "068fe486ce73c3fe25a8af66e6c553ade886df17073731dbd49ff36bca8b9653", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "53a695b0e9aca1e1629a0a39a1eb97e3b95363766c65315085e5642d2ab3e70e", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8521cbf01929e1dd31e515fa326a507e497d7d73952d53a239e8d21d0c70016b", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0a9f36df72aa7f6b4c4b392fb26ddc73c57ea334f1cdb719ba5008e8c6c9150a", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9b78dd9610f10169a7327ea6978ce1aca839cf5249fe9d3c0f97e67d79209503", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5ec5d850c9ebd4a804cc20632804715cc0083eec9d66337e42fc945db0a0a66d", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "71000871d1a3e05ef5b50544b4954825220863c81371668061d0e76c97101189", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "7f2be53582a29df18d65d9a5b551cf5591366359abbfcdda86d10d81679cb353", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1f44d37d519d39ac692b8e2f678b92e4624b614497c664ca112c4ff6c507ef41", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "2e010acf10de81bdf1e9aff772cf673ccacf7082176b4156152bc5d01c20c11b", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cfdda605a1d1e3febcf743e99a96f691b44ced371865b975c58c0122bee9af77", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "1db994cbe385e240869bb01abbe4768f95cebd313e607ca71fdd022797cc4c98", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57707bd70f9857cf6fd877f09c52f1d03f4ad7c53603a5ba9c123b06111169a4", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "df6c69516d249c1dd27fd1e727add632650d53fab4dad32d85ace90de580f713", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "2bc092db84bc28730656f2d8777c70b001401d41909871f4f5d1ae601374855d", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "aac7025941917aa1e7df6569951525e26495c5ae90e7f8902dee90a2bf7768ba", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8f83a28c305d264f13b91dd446106d6ca91a61a0c19b6d19878ec4d53c125caf", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "df268e06300e8621f13f5b579a85305808664f7f3a74b0c5055d0ee68cdc176a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "7191c7992186d6a93847d0ed8bda75837a54e97d3eda019398310129ea62d700", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4f38d92c20ff9a9fb1807c4b810e9c3a3c7c5a72afdd9b702a3ceb5dfab1fa20", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "087743a723d1996dd9b956992c1d2866a08ae6e55a09ce1303b9b9ea52ce3ead", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "35aff87f653a4fe5a092f65dda99491f7955acfb9037f1903f53f8a995650d1a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "aa7b55a3724d8452a0d4981d009f3695a2bdd696486ff5e79ddabc4b015fe5f9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "59e2582744d827158897dee8c9219ba1c5b466bd989b7424793911836650e62c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "ca9e5b854f63887e1cc7ed6b27f6fa00d3bdbb093a13709bda721e8f710064a2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "3fb507003e07b4a11a368c974784f86df08ebff7db72382ad3a2bf1446efdde2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "25bfc7cfecf345337d7d87df2eeb81fa8c7c54270b63acb2e4bc95d703b8040f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "c93554b9395679220ae538ed7ab29984039c874abc9e4c1035b798a878a2b49d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "676826757e2ca077ef98601eb6913f04fa6c1b73ede8758261e2802a0098598c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "cb015ae60521d53849d59717decea90823e1052372b025003d4a9cbeac857758", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "6d62c23536906f75bc79344faa67198ccd6985af026eb08f8091c64fb0032a01", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "3590bff9556b3e367e74f8e968aa35092e90d972020d2b193066162de5a557bd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "17d6c8c950c604570ed49034e4899bab39514f668ec3f01f6e333e01b0b5f54c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "4318ea8928c3f13336c3d6601d948c1b50b56b0b2bb2eef89b416cdf5b7480aa", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "8bf7d8365a7bb8f1818eb0afbd875062ccbb1a0824f0ad45ed142dac59098d36", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "6c2c9cdfebf8f9cc99f45b2ec1694cd6ee88dc7b338908829c8b744641fcaf6d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6eaa544e989dc5a129aed99b5122c3c661585ba4be7b361091ec8579df2b3fb9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "d49089aa955bc5f6e4d10d7c718142a17a53d5786391df40e5339108cf86e2ef", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "623aef861082858d8a50d600653f953a7d9f79c9b04f0d0f9a138919ca035f00", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a87858740c0998683dd682768d48c56e882453a84ab43d0a0998dad51398d76e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "7dbcfd81427e9980b0119fe6da91c097b291b299d046f460e382b7c88b67285f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9655ce8971f6ba0c70647bb7f1284f674a7d24d2b61430f9e1c6601ee8725d27", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "191e7f77e472c65c0538a01e7afbc812d23d9b00458f9ba736b7a6d2ef77e59e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "51077cc98cf2f3cf5114478c71539382587a822cb553955b47fb3161be57a4ed", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b1c48b36a67ce5253c9ce29f7b092d444875b85f94e3860dce8da5739242044b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "e80cbd82c6b46986aa44c11407c6dad74949a03fbbda6c6c899d2c330be2bcb7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "77d1bd0f95e48f7d422ed55bf03ddad01df33d5bd2273ca473f0ae89b24276eb", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5a97a62627099e31a120223bc4a8f50af37fb5e039f163c6fb5c2da2729495f2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "86a9e4029659c9b0f4eb760e325afb98e9a666a04571dca4eacd2c8abedb9f52", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "8439cf3471539b6a9bcb2d9d24474336c563d3328239bb5d305a7190cf67f708", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "97c9032ef739c6d56b25a976d14e463cc41e24719e9f4085e39358a88635b74d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "91e8ffa8aa8712c7883ebb91bfe1be016e66a49317622ce6ac829389d662a994", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "ae13768231cabf2f9586928e1b5bd3821b320a9c828a6e84ee03f98d9c41d866", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "1c3225d36d6adb969c9e5af61e0bd5d391ea051869776bf64d50765d00c86bb4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7550427efe7379f8b274cdc7afba33df7f5c548b0a35ee7222896c88e10e146c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "8f26f217340bab0520394623dc13c8990689b2ca812388ec19fa9b338354b200", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8241638682ad4a17314d168d83afc3e7af89c757e3af7be274e1c8f589f0c292", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3b7b26afd1b8034de3fe4ed1ffb62b4e6aea039a5fdf483fe50adaa78f872037", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "49986a549f5820cb113f72ec477b637384ad03d9acc532e32cedeacccd448936", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "7746d81a0f343e5587ffcb22f765ec159375e09a67f828e56dfa5f452e86e6f8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "d7e6409d775cb4775ce8ced40db6cb5f8febd8c48e52bafee106ca725ae50cf0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a8b4f2c4fce38597c4fe7e06f0f891ba3ad851e7eb7b992f7a60cbef0722921e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "a25f3ed58687e3418b6776f3038f177713d0f436e077276254d89fae87588053", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "78204a526611baf2c8567377dcf32a4152b3366e87f76c129ef66ecf7343dbd6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "a022435c7dcdea2856ec658984e838eade0551d46d7ad4fdcacbc0d96182d806", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "74ffbbaf6eb7b29d993729daf151f19acae7470b565d3f8771cf68103607ca01", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "3e7e5a2851e0594e23ecfd64765f661e3784dae51d5aa35b0e14881d0c54b9fb", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c7f2f7543dac14dd40599b78962a05faee38c69fe34397c54923587878b543a4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "68127d9c43082227546aa06ba8831b7966e5fb71af33fc7862ca717b39d244aa", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "47ea2148bb7b91f946a2bd62485c11c00f92f4b1f9645e216904a2b8d07123b8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "67aafd5b33e3794a21b647a1ebc99b3992d6583748edb8e337967b6a754f848f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "e1392f2d85a38adfead15b96b241f8bf60432e4e48880ebc3f30ebfdbe022543", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c1aeb6975b1c4328f9251809ea7c952eb4774ec82a8a1341e2af00e342aaea55", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "08541f24217355bb1523b89855d5caa1f7bc9f954af944ac5656623fd7ab8a75", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "9c0726217e7c19f89cce779ad0588e50b1a00f0586af8f06af776aa624a2291d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "00acb42b136afb849d178b3ae81857a9df8907d4732b17990dee95df77c7889f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "1cfa3d5728aecd3840aecf28ee3779a9c281a0963d7b7492c3bc86abac8ff0de", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "191e7f77e472c65c0538a01e7afbc812d23d9b00458f9ba736b7a6d2ef77e59e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "2b19d72c4030143888a6e51f6b3bd4c8d0925d477ad46809a7c9ea3aafba1691", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "e71ae565799562cfd8ca9defa6a768b9e01a19759c281d5f538af432f2023272", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "211cd2a57f71d225782079349d586461779a25964e4009101f9de93a571cd3c2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bf22a999e3eff1ffbcd590052c3add861ec80af9fed08bcec03e438afd5a54d1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "8e8f976782fd958fb89f33bce4ef8e6c8d60e5fc11d0b8c4cec7623bdb9cc8a5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "370d94fb9e1044ddbaad9aa1af1f94285a41ddaec32250fbf7f46b829e9954da", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "e4fbd32f36dd002f11aeef0755278fc311faec24949e1b61955dfbce44049b8f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "e7a55b7125218b40076e7b1dde2819823d90e43455bb9056756b5c0b9c8f9231", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "2433b86715cd143351391fc4cd818d23409f93a9119442ed632faaf7c2a55620", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "b180fb1252ac7b86e0d2de9b2360748c28f02e3117780de31ef71b4e826ff9b1", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c071e9f2672d36dc06b6a45f6da68e5918d3f7a509843c930ea4ac45860e8a0b", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "61efc02007dfb2110e7a9d3d3692aded24a4c269b3b6ac0384002bd148782cfd", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "425479b00424c0fa72a7de1624c93cb1dfa2d5c33a5dc77626437c946cc5f227", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "197469ea1447deea6326338f4329a956a226143a2e99a45d4414a51196176bbf", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "1372ac4e83decd7c7e1428cc8aecf739174f6075d6dd1aab407a6a928244276e", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "93ad18735bc23c42cf2544279ffc4a4d610cef0b760573c9945d2a832a8afe02", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0381cd50b46c7665a38523d386e956627abc1d5070b99cf007ff7d96b19c5924", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "be4507f99c832130ab941d8ec2d717d145da1179a49ab51fba66b86e9753db4d", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "29238dfacae6db130f1f9d06b97a2036b6b34e4ab143c5f0bc1c353bdc21942d", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a21af397662093b8eaa123f154d80e5391419d0f16ae9b4abb608f2df983c07b", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "4d94538ed6efa6e3aada0e8ae062f46ada1f98f61548485480ce2ccb4bff3e88", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "6e1362f71d54a07b41891ce8d429250fd19cda086d6a502f5838bedd96ed6487", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "143939caea633aab9b8d104e09131724fde68636686d1fb91dec7cb30bb4c2df", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "cebb3819f62a47ee4c85e05bfde807363638ad9c933bcf06d16a957180c7bd81", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "341be5e6fb1f5abe6e664e0dafba135b0afa82d082d1028e32c6789f8a55c202", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "2f98d1272e909ad9680e9274db0e8873e15d85453c39c54d10b8bd357d3aa17b", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f0411294cf4c3e6bee948ad02dc90d31e3ab951ef7b23f730aaf7ffcb32f1903", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "79f8dfd580c4da34ce6926584aabac662524af25bfbfb42a5f818ed4a4f28369", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "54218f8a08bc74ce8d685b97e61d532c5e0152cebad50d609503dec982306460", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "fcf2a55d6060f968b4ce7b8c8e16dcb6a1e6fc75849c010ae9ec1d01335d61c7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "82099222334226d1e69f1c70feb4f1b12bc3a3e83077e475e6075646110d27ca", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e50c4a41bc97a0ef9489c07a51de85eca0f203ef9fd8c3c91bfa0e0fcb9f5eac", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "4e1d5662b8cc759e641937d9a428009044c3670feba00d55dabb092d4048d068", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "95997238d57a10a71572a05110225a2bb9446e3b38f1b20c693d7525c90a589b", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "058f67d7336449b0117e88c4373804699d22ed98f2a5f30aa1fa4e9bac42f8cb", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "7b0d197ff33513d04f2c8480bf6dd086ab5b1b1c4f3c7d6c97cec18a3c734c03", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "9202499f5d005bfe633b435252b55feb81e05f8517305348572a3db1cf062da7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "69d648d21091940a239c5095788ae396444fb83001cf6fd3413b82cc8e0c4dc5", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "aaf5c1b1f0bb20d42a1dca30e5a7e5a111234c3a1cc90bfbf445a9fbf10a6281", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "380789da523fde359270673568473d673e2d9b637be693778ae0cffc3b216ca2", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "3da8a246537330a42641ba1caebca227ac49b8f961cd9034fc77246f9905cbd5", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "0c26a07dc79d8c60f2addca13932b56b4e63d9803d14c1e45abbec11304da9a7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b24bf0be9b4f000cb4a212bdef0aeb08e85ffc02dd92c4b7ad340163faf3739f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "ee18fe94d2f700375acdcd4c49f78cb149daf3037abbb44ef14eba58a27e4dd8", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "0ef80d268cdcea74facbb905ce5154000b451f8c24d28cf9948f98e4a45c5a1c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "5554728937ffd25fc26fef3dad245ac27733e998b6b07e270530f66f6bcdaa98", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "775089eaafac4ffdcc063d719a128c4c93a1985edef41ec127c71c15bd0943b1", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "41a05ae0de54aa39cc3aad01b942cdca237ba0e3563322a8ecdda3c848d1ea89", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "bd6b40d7ae006788db39f31ec86e42169edb32239021e283a00ac2964f2bebbe", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "8576000b00c1be1d8fdf0638c1bb2c344804c60e7768d737cc6d160b9e94b719", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "740f88fb5ef70c1f24b488ca3a5a0680bfa7684e5b31cf072e228171df9d74bd", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "1b48d7cfbb653c2cd562e1d660d68bf8184e442d01b9072444af46062b56c7a2", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "b8a9aa0a21b1de38c53b50009e6eab3815ed20adf130824cf6e2aa46d08a60f8", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "8e530380defc1213d141110ebbf61afce3a88810fc69c624134664f64505d377", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c9c330b8992ee815766a3fab01a7645abd1d6052811ffff131a94bc7463003b0", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "739e8de2ea6b32761368764a71c58080b1681b01fc71aa7c80779b321447c3f0", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "108d774249ed92c8fba2691aebd948cf7838c52015b4a15c02db5bfc9d6fe5d3", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ade0899bf79556c28959438700567564c8a8065dd92d81b6839aa0b1200216a4", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "4a945f3abfc1d67a3691d82f21bef4364b7b1b99a58826608e138b3c809a2b0f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "59692f9d8d68eb9996fc233cd4a02fe69e517866e072ee13f9fa2934927e6e4e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "7fa10a589798c45a8ef6fa587ef024c551cd3bce3e7343ee6e0cc4977182e14f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "19537b30b939c7f90a4ed4491f60cd194b746b951f47b77a475b5611e449ab2a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "88fb2a78366ef5e9db13c3a4a4d42ee7193a745db3edcdc6c177c6ec34362b06", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7f03058c16865a19c1ddec6b1df68c63a58e44d32294ec5326bb32fed99837f0", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "bc15eb77c0b9a3d96e618c2d7fc76532719190cc50b2f2d6fb7a0ac05095e451", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "5863611cf3515b66808b88391f4899a990b710f330218cc386996565585c75bb", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "44094e1dbe78c1aecb6a05fce386f92bb067b5c02d03102293361a28eea46e09", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "807bb5292a18eb533e0e48e6f129b9b6bb176878e393ba7a9b4aa0859a7ec1e1", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "807bb5292a18eb533e0e48e6f129b9b6bb176878e393ba7a9b4aa0859a7ec1e1", -"T3T1_fr_test_basic.py::test_capabilities": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_basic.py::test_device_id_different": "ab4acdd890a084e6041b9c385d4b4f4c331f29eec77bbcb69b4e99b3f8d554c8", -"T3T1_fr_test_basic.py::test_device_id_same": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_basic.py::test_features": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_basic.py::test_ping": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_busy_state.py::test_busy_expiry": "0b142663642a8981e8fb85cf0eda771d72c9d2206cd224d170b588f32da4d8cd", -"T3T1_fr_test_busy_state.py::test_busy_state": "251609abd57665b7882e24583141737c9b6c1ca43ff75ab8bec2181e4fa3f044", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "722d1df17cd5650880e8a634038c1f582229258661a26ee307a9a8d8737dc178", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "722d1df17cd5650880e8a634038c1f582229258661a26ee307a9a8d8737dc178", -"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "33d4d29b50e577aa96fdbdac167a6bd9f50351fa6cf3e1367291596051f74146", -"T3T1_fr_test_debuglink.py::test_softlock_instability": "11479b768ca4b58acf621101c18d681126bbf66581184489922df2eea1357ba5", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "a1d024203379022355feb1ecbe72d16ded27a7060cba89469b82d14e84d8eabc", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_language.py::test_error_invalid_data_hash": "3136454bc9903887c47ad11d488b52186f1be09cf3e174241d2147176ae460dd", -"T3T1_fr_test_language.py::test_error_invalid_data_length": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_error_invalid_header_magic": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_error_invalid_signature": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_error_too_long": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_error_version_mismatch": "31a073e0c2398ffb3904d2ddf7d396d209fe201b4b4640df19f36bf5e94ea1b7", -"T3T1_fr_test_language.py::test_full_language_change[cs]": "e6b765d9c115e7daac458a900dd21b1471a76d19863c3ff2563e659e09b5b9bd", -"T3T1_fr_test_language.py::test_full_language_change[de]": "c013d7ad195c5eed8690687938dc3c0954e7b851305b0ff7a2253c213619e14a", -"T3T1_fr_test_language.py::test_full_language_change[en]": "69396b93a7625119c7d975958f76bad9fc3c7205886399dd140e9b349a772a70", -"T3T1_fr_test_language.py::test_full_language_change[es]": "106369f4edd63c8d8f944dd2db6efd2db564eecd3fe5d32d498e84335e52f831", -"T3T1_fr_test_language.py::test_full_language_change[fr]": "f412523214b630e19025608a766a49f4ab164e665807b4352ce181d6e1187aa4", -"T3T1_fr_test_language.py::test_header_trailing_data": "5eb574eceda92ba29ad18a78a5cb2b4916a654d4eb4540ba954904d50158a9be", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "d62937e9570d0a989face054bb9ea2148bac54230d3b08246ad5f56efda3acd7", -"T3T1_fr_test_language.py::test_reject_update": "320fbdd3d6be3e1b16f9a4852e9f27f344ad61056e35467628e48ae960581e98", -"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "2b5eaf0c1c0f3ce6dc3c7c3685638e8f6c0187b05e130f14a5f4ddc76f4d888b", -"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "2b5eaf0c1c0f3ce6dc3c7c3685638e8f6c0187b05e130f14a5f4ddc76f4d888b", -"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "9a719720811fdc36a01060e7cb797f514ec9826d16766d5d9f19f747415b080a", -"T3T1_fr_test_language.py::test_switch_from_english[None]": "d9f98fdfd0da31fba7cb8304385c744b523548eb612223f35107227b1fea4e04", -"T3T1_fr_test_language.py::test_switch_from_english[True]": "d9f98fdfd0da31fba7cb8304385c744b523548eb612223f35107227b1fea4e04", -"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "cb2b9211a28e57a3264d054fcf54fecc80a44ba40fe48dead24e24be14e8d0fc", -"T3T1_fr_test_language.py::test_switch_language": "639aa6446703772a348c240de37a4a7789e714bf1e8b9e5d1a4da7750362600c", -"T3T1_fr_test_language.py::test_translations_renders_on_screen": "09d6ddbff11d3f2f25cf17a3bdf26da546c689cf0ed4fac709992182625702ef", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "142719ce2b8655e9ca9e4de88f7cf79e5528f6c59aa731b0a014d6d9f955f036", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "de263cf9f734b098bd85593cc2b68feeaa99e58e2314408c4bac09be435aba77", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "529b16a80c3be9cf26a45189c999e4563cc9a6974af8f70145586e8ea6803069", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00988807c1ab4c5f52d67d732c5082757aca490e3ac31104a571e7654dbd9085", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "974423ceef14cf1a10346d3bb6e1fcdc16530b6691c5d908f530cce47dc6f612", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "b5881eb8c2d3a41e14ed0ca4941b2b0700df73f4a108d1cada639c600b014b0f", -"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "11728ebd055b8dd997f30c806950104e149df07c5a3dad5b29b22c91ccba7e7c", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "81b1fb6210e5b0692f1b5f2a624f09c29af93cd522e98858f9827b6c896484af", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "5f2e6366257d4e0b4a150162964b1506ae07b544da8dd77a4a4ef86f9442a2e1", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "95b8d3c0672ad842812365f4477246a3588fd935426acbcee7feddfa3f71ff14", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "56eb47e37a4555014ddd5ca539e65c6e37a4564e88b492fea593586afeec468f", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9bc50a221db3ec1744c903f21db4a14f5afe9b27d8ff87243d99e1cfa28f94a2", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "662b8a9bb4946936be88d5c776ad67e9dc1b3d845bca120eebe40ed45e0109b1", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7115cbf212a6622cb2a890b38a329bcd795e92717a367d9373bce9f23bb5b3ea", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d3af392eb617bea5db18c5442c946a2c6979776d4e3168bb6719a5f894bcc1f0", -"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "c47cfc38ee8a29b79808336a6f99b037f4a760b907bb9c680a554f92a194d262", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1d4378a636628308f0dcfa13f003c83ffa93672f3383f19a85a41bbc1832f0b2", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "143d20c7d11e9b3246e30c2d75de7c22e658ecbd4bfb7781a6fc98c3fe2b4e1d", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "67d680e6ae25fd4e1d2107aea8e7e8a48ec2d25c435ce4edb8eaa2fb4150498a", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "9d6002b5b1f5547d0be0e83651385d800f1b27d276c1838a846002198c974798", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "5927032c252eac56fd04ac378d7688f837fde76be4c8b296dd134dd0d00ac7f7", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "a7a672e01a6b436411df8bd10ced9fc6d93912ce5e7e67d290a5508f6aeb5f04", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "db874cb9046bc9e902fe76b69d74ab3711d7b36ca83f8b077d45f11149d8ec0a", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "d2e0316c1ce92ccec54631e6385c89e2d60e9e65cc1c4913e5809b3de0c1536b", -"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "3ae62610411e44eca0576920b6d043a5231b285e7f34db697b3b685cd68a3616", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "8be2ee6e83965b14f12cc625d1ed8d3ae8705a2f9717dd548fc168e2eb1e098b", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "8f06246a31fc230d41f7bc1f0fb6e3c521203355e3713f5068bb121a281f2b8f", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3816749f67dc85877ab4f4a0942d4e671faf8709f1ea98d7f241120587bec14e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "34f25ad7e12a8e8edacde34239a7eda19a2366e0eb17654b34cec4522b4e0602", -"T3T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "48e8eb0818213f65cb3fc527344ba04001943a15435d09278b188aa462d483f2", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "0d4277842c3f8195d3ec748ea82586da5bcd2a61eedea8d8c3d36aef14aafff8", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "31e2ee65e6825a461042d6feb0c64a0759054d5a56ca8d24d9d80b6423db2f38", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "18e1834e08ebb4bfe885f54b36edb9acff434e3d1682ef9b8303b21ae2ab8105", -"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "ab4acdd890a084e6041b9c385d4b4f4c331f29eec77bbcb69b4e99b3f8d554c8", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", -"T3T1_fr_test_pin.py::test_correct_pin": "c79ed5f71947f3dc82ab6a67002371f02c1a959e0f2ad1b7d2beec9373abd206", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "821d7af227908754deb0588c3b7a5185d5de0a39e4031e47ac1166fe30be6655", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "3b0bce557549e02d0c06a271481e4359b9e9cd1f6e59aeb76bface584e21e1f3", -"T3T1_fr_test_pin.py::test_no_protection": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "3cf18204ad7cc750b17486540976f6697b92e63d503d2a054166848b7366899d", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "2161cc050d4e30e23ed47e23da90d79b031751a48d9d8f840c8f8cf0a8323b5b", -"T3T1_fr_test_protection_levels.py::test_get_address": "0a18ab2c40a4a618876e25d77c1b3cbae11f5f4657639d8800828f2cf5ee3fdc", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "6b1318228de5b2a11c5f26162c80db3dd25895de91249a93542478ad7931e62e", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "0a18ab2c40a4a618876e25d77c1b3cbae11f5f4657639d8800828f2cf5ee3fdc", -"T3T1_fr_test_protection_levels.py::test_initialize": "de4af0cfe52d5407840239b18d7630db00a571668d3edcd80fea8907d97ec892", -"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "cad2ea4e4b890e2794befccb8caedd353c8bdae427309d128ad67e0ac4a42de3", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "3798102d9e7ef1318928178548fe2213283977ad9215b705c969fcf0de38c2a3", -"T3T1_fr_test_protection_levels.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", -"T3T1_fr_test_protection_levels.py::test_sign_message": "50a8e5ca56b3faa30f88afb36d67d2489306cbc0646f1db6fd86150ce8dfeae3", -"T3T1_fr_test_protection_levels.py::test_signtx": "aea73884d8f8d0e2c4f8168f8839317ae7f6604625743dbd8695f8796da119f2", -"T3T1_fr_test_protection_levels.py::test_unlocked": "1ea176720ffee45d6b866702e770bf03be499721e1ed627e7cd162f314ab1dfc", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "0b123040d9591820e1bb2d26f670f7ea864c0d9aabd564402c479ebd02872f9b", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "7e7ce3bade869d4061a08bc735f55c1db46dd2e4b802740577c3ad57c3a9aa58", -"T3T1_fr_test_sdcard.py::test_sd_format": "31e261a1dca1105543b767c42420569c3048eb0ff0bdf35f8de5a936beed8159", -"T3T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4a36d239bfb8b16ebb527a77dace158d2929a6b5a75b588a9dbafcd1f81738c5", -"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_clear_session": "0ab6fece5d339499391d08c907067ec668211417c874d3a7dfaf10b93c4fabac", -"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session.py::test_session_recycling": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "40a58d0f0072a17f9f52b30fcd4741db16aa35b9cca7418cf33328c5b69fc6d9", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "2c455a7df6cd8ea51b882090a2879c58c8f7d9ddbf4715056d21d58919d21b54", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5c3ee50ed554d815add3d28dd95be64da4755c57b0ad1c8d4fa355f9c9aa8c53", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "4b068c0a109ca07d0eb805af47f80a14fd1f541802a13198c56572265267ddfe", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "3b287aa610be74787c226147a9d0f90b3dfa845888c4544dba4a2cc21ae9b8bb", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "5d1700b76f711709576f9bb72a5d271fb38e8c2f8a747cd5d18549d499c9d40b", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "929d5b2d0ea1a22ea66d71ef532824c9a0bdeda2a5c402fb22ac531082842330", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "d4e0c3c8498bb5a8ea6091a2aacecebcaaaad231232964c92eb02b20edc195cf", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "5b433835ec11b6297a628891ec1b2264e9fd1ecc88cbabfc52382c7972c7cf5f", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c4585c060afed6a846facf4909e7705d64f93673f5711a4e62fcbbc1020be275", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b80498105334cc6c0c17dbbaef4d2f012004f4df8ff461d94a992fef1ae567b4", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "781da6f1be1715db1139b5859a65bf608fd4c3cb1eea1f8df563fd42237f5b8a", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "ec6e80f9bb9bb9f17b3e166b51f744d6cfe83397f007d8b6d2084e9004d52bcd", -"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "2a74640a8ccc6a1f86e8957b625d87a61dd6157e93a92f5e857ffbdbc2678103", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "9568f825fb2a99e7a20fd2d9c2a8bc6e4b0cb6e43c9fe4f2b7752d11800b0649", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "506792c673183891922f45245cc59a8e888d10ce41ad4c43a046d6ffd7989b31", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "fd43d8ac72dfca2d30e5e4801e245890ff905fda5390ec22f35dc1a8f78f92df", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "3929a75f20d7cd33aaa6f3d6b9cabf1f801b0fac78f23892e43e0da93e359bcd", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "303cf7db5fff2a6753a0495d8cf6608c86cc52346969233a96fdcad29912bd18", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "b18fb5dc21d741f5dd59676fe650d138a0772e94c73ebd508eaa58a17ae030fa", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "bb905fffdf928c05948413f0990e10f5255c17fa56812c3bfbbdb77ec43749bc", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5fc6054169122b15bd55c88909cfc4bebc12e5e1262db1047c60dd3aad323f51", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "71e98e2b347c735ab4090569029887bf7979cec3efd6c91c2b0c84835d07c19b", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e6916524e799f6ef629a1d1fa6c0380b83d1f782e10c60e411594a7589a4abbd", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5315713b449b814cbdd85f565ca50480d69e0e679402026935605fb23955c50f", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "9c292f8742a362bb2c0be0e76331ee372d1b96a663b4ef20f2fdeecefc3b6feb", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b6ee69f00fb63b280633844569b11ec623a18d715a76ffb45550932f9e085b50", -"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "6013c9907b5a4628d333c89c440bb6598bf7bc1085062b18fefe1079469206ec", -"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "87435614ee9edb5fba90567bf43d033f2cd7146da6c747e1f316419264005679", -"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "3a1dca74cdc3aa1c44b44fb6f498b60d7290bc7a11b074bcc8177ed5b4c32fbf", -"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "632982338f0542460c700e6710c42254cc5e098471e6c25f8061bdafe22d1eac", -"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "21f72d242826ec8efe6dd4deb225b8ab237e413f490e4860a6b7e6f002afa3b8", -"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "45e33313131233d5274c6b19d3eeb8432e0bab94bca801d5aa57b876f19c255b", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "deee5c12961a421d5334266617dd517f045dec0d2f76bdf51b6c0a594348bd85", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "b778429d3e6e732969589aba64524b38f95d8f44a3de665442860d9e2ad31047", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "465bc58ced3603bbbda63153438a924e752ae79303beeecfaced89aeffa2d147", -"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "a35c54fcef2686b3846c4d56d082091fc3c172d88853e2307bc473f37ea67a33", -"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94" +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "06b89342216a3899627c2209dd92d4cdfd9efb3a0985937b793dba8d7a9c61c4", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "92df299435ada0a498ff2bed2f387fc69f2a4308094d7c47b3aacbae3642eb1a", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "b395ca04f049c7a0eed141961131bc73ad2857ce8be6c796bde7e6d1e2e785aa", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9c175f90e53db764f83492e20b0d8c6c7faf7c35f18798fd46caf7359090bf92", +"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "621efbe47e39cda831db553353fb565bcdc3bbfb48f6f98190398e6d4854db62", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9ac8bd9db58a4a45f6680b62f8622c6740486b2e2f732ce7530b5ad507457287", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "05d49c5a132973769b4e2b8c18e3759435d432223454f81447aa655798e3ed8d", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "b5fbdc7d46b2b086b2cae11f2ec0566a8216f6c6e5fb540482ff6f00fad00832", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "9ac8bd9db58a4a45f6680b62f8622c6740486b2e2f732ce7530b5ad507457287", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "05d49c5a132973769b4e2b8c18e3759435d432223454f81447aa655798e3ed8d", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "b5fbdc7d46b2b086b2cae11f2ec0566a8216f6c6e5fb540482ff6f00fad00832", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1dec356ccf6e035a5c504cd39f54fccdb93504723899e3b931c343e0730583f9", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "bae411344378fe07bcd316396cc80e3f675b0b235370a674450d65a8e34371fd", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "cd6d74cdbf4ddf0741a5e25eebc89d193323f840b381a5ba0c53be1c09c742c4", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "12b2f16d91fd2abca561cb1f50e92beff541f32ef8e760f2b23c1e62e4ade2b1", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "383bb2a35fa3185d4d7c5d75d8e846eea38a0adb8572459bf99c1c4d32a03038", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "383bb2a35fa3185d4d7c5d75d8e846eea38a0adb8572459bf99c1c4d32a03038", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "c218d949d6c5cdbec4669779e71dd532e90fd2fb2c027bfc9e8065c3c194f386", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "39abe530de095eca0e47c34f066969a880681221bfd3be50971d11738fcf4cc1", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "816b8e0b99fb747f2f1d37323568cafbed2b42c3477d2c4b4e29d28bb620a7f5", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "277c0e0b7e3f75986e467d731bfe38b4c26d57616580101cac8606f28ad50d2c", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "277c0e0b7e3f75986e467d731bfe38b4c26d57616580101cac8606f28ad50d2c", +"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "28584c938b31a1e223b67d1b4e9e4da96d31f38dcc0bc1e26255b5e184fd4ce6", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "28584c938b31a1e223b67d1b4e9e4da96d31f38dcc0bc1e26255b5e184fd4ce6", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ce5766a319aa686f96010bb7ed6f8ff1482db22e007ebecf42168e3fe6244ab9", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "8c0c8956ae8088ee3d159c23f0b85f5dbe9bf6f4f92d115ab797177c4a6cab4d", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "80737cb5dca4554d5231975ba0cd606c63122d114d11f019c31b7ebaa0fd3309", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "a0d2640b2bde0394e6b04809302a5dffe509eec8c1f1adc5c8b40aa93736b2ac", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "03272e2d8c34c4fc1b96f1a114f5eb108de6a9f6317aa8cb5e56f6edf246149c", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "a88418842f867c12ccb1a39bf2d41899a40055495a5a29f90491c9bd8c0990fe", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "a2f9b6c1386d88332e3e23cf059907b745de48c115e0972641828618ff5b403d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f0c615bfd13720d0b91d29b61c46f2ac1f6d34213953c4021dc78b0c94e8f631", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "62eb649cc0d3bdc71f09b1aba80f0781b1ff2550d3a33f62eada34329c08428b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "daec02d241e00321d64f01439c789b31402ed15adf3da70b0f44c222eddc9b0f", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "30e03e435364bca7b3268734a9eff9d7b1c728f8d36f61302be76c8ca5ea0232", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "70ae86afab8c08c8952a97cd88965a99681ed71534fb9294c59a6d6506f53d1b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "22a824bedce6f3a68737c851388f7fc202f17e5e1f60079d49dfd9ed1c85d242", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "3df020569eb45fe0d62584ff5def134959546d155079928494a82e490a7c5cf4", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "7f269708a2b7c2f6859b314f65fe468a085fa31793bd481137fca7e75418c1e7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d83368bb21c0072dca15f19c3dccaeaaf1b2c28b5c41d2e0f795f9cda3f469b3", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "860d06d3a5ea805a3e5c568cc15d5d09f8801a008f28f1eef55c860fd3359006", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b30b34aa162982e050a1ab6d58e08d10101a0b6049c16a577d14e1239a75a2a9", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "68d8f0382f742cb5128b262ef01e6eb76c369a30c29697c9cbbc2722c8ce6150", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "d4f595be7862755914218b88d484137e51146121eb64d4ee6adb53db188d7680", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5bb1ebeedadacf97d0ac73c430a39969abbe7a71c5bb574c05af8f046138cf2c", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "234ad2e949edf27c0eaa4885f9a52114ed1292da6cbc554bc3ef46bcc5c3d72b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "a0559f0013abfe6e92c219bc39fc02a073ef1425d27c69862e9e0f2a90253d72", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "a88418842f867c12ccb1a39bf2d41899a40055495a5a29f90491c9bd8c0990fe", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "a2f9b6c1386d88332e3e23cf059907b745de48c115e0972641828618ff5b403d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f0c615bfd13720d0b91d29b61c46f2ac1f6d34213953c4021dc78b0c94e8f631", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "62eb649cc0d3bdc71f09b1aba80f0781b1ff2550d3a33f62eada34329c08428b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "daec02d241e00321d64f01439c789b31402ed15adf3da70b0f44c222eddc9b0f", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "30e03e435364bca7b3268734a9eff9d7b1c728f8d36f61302be76c8ca5ea0232", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "70ae86afab8c08c8952a97cd88965a99681ed71534fb9294c59a6d6506f53d1b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "22a824bedce6f3a68737c851388f7fc202f17e5e1f60079d49dfd9ed1c85d242", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "3df020569eb45fe0d62584ff5def134959546d155079928494a82e490a7c5cf4", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "7f269708a2b7c2f6859b314f65fe468a085fa31793bd481137fca7e75418c1e7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "d83368bb21c0072dca15f19c3dccaeaaf1b2c28b5c41d2e0f795f9cda3f469b3", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "860d06d3a5ea805a3e5c568cc15d5d09f8801a008f28f1eef55c860fd3359006", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b30b34aa162982e050a1ab6d58e08d10101a0b6049c16a577d14e1239a75a2a9", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "68d8f0382f742cb5128b262ef01e6eb76c369a30c29697c9cbbc2722c8ce6150", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "d4f595be7862755914218b88d484137e51146121eb64d4ee6adb53db188d7680", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5bb1ebeedadacf97d0ac73c430a39969abbe7a71c5bb574c05af8f046138cf2c", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "234ad2e949edf27c0eaa4885f9a52114ed1292da6cbc554bc3ef46bcc5c3d72b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "a0559f0013abfe6e92c219bc39fc02a073ef1425d27c69862e9e0f2a90253d72", +"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "d6ff3c5bf2e6ad35b9bfb810efd307375e3817fc82030c1d613867c6718dadaf", +"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "cc206d2a7f2aea18a2613a1342babb7271a1d52a11f468ad2f4b631a96baf8c3", +"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "934c8baa24c4ad87b38e8c0adc99d3b482415633613b9738e1dda2e1d1f9bc66", +"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "d537fdf3ff4dc73261c193911901d987b94a93631eb1a884d19acc6dbfd4bfdd", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "15fac65448f626762328165a4c1bb733581b5a10e754b25414dfd5a9cbfad191", +"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "6875ba4ee3b8e14996fd76c12a4450e3f40a8cf3a3865af36be82a676ccee904", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "df4a754e92575023b64d541255d38d17b059b74b9d8046a24f9d2914a40e92ef", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fc89d31ee89d13d3f45d232962db61aa9691e01a838e1c641b2e6d22698f9d44", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "48526f95c4d0d0c0d4a725965b42b2d97088650fdb5752a29339aa4b54b68911", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "eaed70398fc8c5d179db72736bc6d20104c0a5390c0cda9ef4d4cbf1d12dcc6b", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "714f608887ca0e8769d37d3b3a447d244f62661ead9886186cf4fdb6d99470c0", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "605d82375bd836ceda89148279f4c070b151c84e542c9c0b90782c6e7145cdb7", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "bf409231fffbb24ba979bb30aa4cd8ac90e08323598d3fea8e46f9d75c414fae", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "08e69e0c5fb4732f9205d9bf928f1447bf083aa06d7bf1f2df434db8a36f9359", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b8775285c8cadac075c9a707bf0f5db0a4319b88b6141ce7224a50118bd18fca", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "4a9f14052b7027e3ab00dc6acaf2fdb60cbbfd44e1b791043daa5f208b2d5d9d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "7dfbec50d3566420a38caa511d2dd43654517bda716e748204d531ca00a8cf82", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ebb1b32b928d373455fccbe6953ae90874e3d4ff68c19476089d59b19a0e385e", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "cc433e9ac8a47253489c144f8506a7858353d51741c70e3f443f9690884473c8", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "571509580f66da3cc9ba2a51c775ff8020809746278e806c43521f2a97e1b2ff", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e5f361eab24a37a6083370c9caf68927b434b35e5760d7eec0229a072a1bc5a0", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "82704e8b45bac9b47beee5fae0a10f78208733d634c806b90f87ae7234edd1f1", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "03054ab464995ae26dc117b8ff95acca4c8755f5693cb223d9c833dde3a04fd7", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b137c1510dd658cff118a7dad6b55cc2eee4313adb5fa679f63680db0bad833e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "0c3d1cd63e3c95290015d4bd1225cdf9a365b995b834eca6c1b20ae1f0534e8d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "cfa8f93374b5efdd0e093e19f952a7a35234dca6b697f9cc1c2c90378b84abb3", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "7b5f26bc8a75c8f3ac14d274b88354e777c5e5bbd208a2a60c69744bd39c9aff", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "109911eab0d10f2fd9d39ea4453ed050835a2c226e92703dbf7cff4d44032328", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "89cec8583fa52ce8b0062dfade0cc16918e9411fd4e507122d31c377abecbf88", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "54fcbb34dcf421416d87ffed2fe60e203236481bbaf22f4b7e1d6e50a7da33df", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "54fcbb34dcf421416d87ffed2fe60e203236481bbaf22f4b7e1d6e50a7da33df", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "6deceef9f5e9bb54912ca9d48660f7cf8204fbbbf73bd359a25c67e9c241f861", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ee68d96efd6774f5848d6eb0deb7404541e2e6847a2d1ed05aaa77dbd1ef6799", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "83780fc04872bbb75a4a3fb3ad10934f206e793f688d0d0cbd5b90c0f32343c2", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e22b48287fc8234b091f757fab6b8dfb9eac163af94cb43dd47b47805eda1e3c", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "cf7dbfd6ae9df55e5944139679ca00ce110c6cf2450e793294b1a5901d7e0a8a", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "a47ff3bb0ae1e428b3193b5a90a4fe92ee73858254d57f9d2eb05c831501baf8", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "fec488bafd0662768916b0540351b582b91e195bcd5392f31d4fc2efb13d60d0", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "d55df0e9ef141452eb73008ea4da853fec1c2b1b2a9e3a42cbdbf719fb9ac7da", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "ca6b9755c36a7fb5bc8ffe44d4f956480a2467d75816e7a3f75b5015d73501c9", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0981b8b4d85034db01fc7a2574bc83c002a9c6fe9afe02ab54ceb03aa97bdee8", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "31020e22b85672d177ce74a621f453198c457fa1f37876b55cd5933192a97cf6", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "0644a86b8682a19d0929b0b9d221232c0d6fabe730dd79cefd4ff0fd86f64369", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "ec4c01644af591d7efd219231aecf984243e57c74b712b7f896b0619fb9e0969", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "e82cd7543614e45ecf1d7274bb36b0d5f84788f21a7db7fbd90622fa7d109da0", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "a2f9b6c1386d88332e3e23cf059907b745de48c115e0972641828618ff5b403d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ce5c9c706bf5ef4e2528b1f6881fdf64729d35794c71024f2baf5bddc6fe2a4f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "cdc965a4fa075bc9421a13a3507932fca0dfcf05dfedf2b10d91b5be22b1c7cc", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "bc87a822009a1e885cef6ea09b9e4d2c61f1865f6012871c288d4cc50b07f8b3", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "f5406fb70f613db1311885946fdfdd5be0c2c80eea9beb4bd3c198d774daadda", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "0323b92978a04d97099caabf9c0d7af77a7736cda323f954fe802fe262c1745d", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "23c27f1c87753a9e0a0457d5734ad7a0a3441c7b3fb28dabc62fecc67ce46de8", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "31d87710d28f836660f594faee94ce7ac3adc50acb9cbbd5f900ff1a2aa2af4b", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "cfa1cb5e9e478748518a59cd8bc46c8097786e00856d27c2ee7215e2032bf6d0", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d83368bb21c0072dca15f19c3dccaeaaf1b2c28b5c41d2e0f795f9cda3f469b3", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "12868d165b7b344c2dcf28ed2dfd950ae017f5d4f5a64beb58f611ab5e719aa6", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_grs.py::test_legacy": "cd02ed6c93579a4b760b82b66426df81da8d7e68f21cdb5caa5be033de2ed8c3", +"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "8f9453bdc32d1c080e7c1eb70253c473747c5a23a5862dfd85d37653095fc546", +"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "63081e1b3e24f1ccf5b4b93bf51dee3a67e0910e24b1c46b01aea9760692476f", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "1fb2a4dbf1160cd4d73f433449f8445d50287f7eb51d6e2b72349b75b75b8c3d", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "1879b4b86613f32a8b68602d37a99a233d0b4bc6526b3b41847f632d22db95f0", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "6b17d5a66967bc7328fff183dfe94e02a8d8059f7891090487fe7390e4393b42", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "ed0a7ee6aedc0f332f4a6d33281b18dff43498dcd9ff5a6a7bcceffe2c90c705", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "ec29e59bec35e64f8a87496fd04de3fa063d2da44f9c0971321eec40002b2b70", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "644316a25bd97139e77799cf1d4545c2907fc08aa6fd64ba114b365d7f859ea8", +"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "67602332ee715891676ca7970ab90411fa48a516b1cbd7dc49d85d4dcfa7e9fa", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d5ed285efd9120f48d9f05d9ff7b59781ae3a3c44ba2b57eee68eb188857c8e6", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "c1b89a44c28ef9873ad00d2b447b57db252c118bf8d305bd03ede4a26a22b0ec", +"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "d12f0d75cc90c109b81a21da7b6bd688b210d9df2436b924a6af13f3c5cbac79", +"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "bf27d336f44e34ba6c4ee6a947df78c38700aac227a5cfb125d9d607c4cea8f3", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "f6913b01553e7335c800ce2fb1c743f21034315f3d1e6ce4c88714c5e675ba79", +"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "167ed3044b0a397a31ba7fc863bdbbc4f30d6060b0a433366248e2ecbe4ff98d", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "d0e703a5a46b7fc6ca8ffd7b2124e55d822a37d49aa83b32c24d7c4c7d0289b1", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "5ae49d2fb3a79804d11a8cb333db501ad4c45444202c0e65e236aec34b053fda", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "49cd392a85094573d2d8dc691faa40d09e697d4c099f0dc9cf84046aabcdec19", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "98c1f2211624372f7f916498585c4abdd1e473edcfcd93bf961a0ee025f90e2b", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "33b216d7abfcbadd17e41ffc4cc9558e01b8ca3eed26aae6c9ab7bbb7715738f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "a885dbeeb1a70c49f19a08b5568ec2e1e2b1d7485f3e43a0f7970ba90e83cbcf", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "4b51f1dafdda22e4d6bd67247b0fe77e265275504e3d526941b3f1fae22f07b5", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "2c5d0389e6e17fde3a11a7f4c9246e4695559b8b7296191393c80e59373e2d5d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "008f96785d6fc25ae1e8f7bba106b85909e26621f48fad31c2b0d51798ff82ce", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "6500a4f30679c5db4218432599b7d0760a6e987a0e7d665863dbf136bb5c18c1", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "2f5f6de74f27664b6ad964114da0ab63029261c14133efc0d04a2604603cdd8b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "0034146fb0f466d6292f5154a9b9370edb5a84befe60025f3c8c3257e283edf8", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "299939ac1cb9b406df506265dd9dfcf7124df0ec16063fc53f29b2c02295b979", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "e4b24c873a6610a7ead65093506b8c25dee3250f141538e0ad575644d2110f36", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f19099c412f5e16afae8f90f3f3902d1c4e9df94e69dde4a3cec8390615572ed", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "febeee3c6d18f76c1233bf228d21fd33291f7035f3b405b658a0886eb13a39a3", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "5661f564845b5d80a54a6bd65eba0498d1af9471158d42c11ff9a6845bb72e16", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c6bca2f91b49721f58aa8a2c7a24fba8cfafd9c354c831996bb255b322380af6", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "cfc6d908f3905993dfd87d84333f26e07b760b8e62dbb5a99a6be6b66a003040", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "7ee7c4cea04930d9a30973827de216cf65253ed8fde43b030dff0386d488a98f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a08e49507facf1792702f710f65afd9b30711249275df4285a42207058f38257", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "61cb4043b7624106d77fab20a7465a49c7e6b8b5125ea2ff999a63c85993c382", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "fcb16bd4c82068498c1493e4851d0ba44b07d39d98604ea0b7342aa30649eb95", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "a8511e9929f4c08b14c0f258ebda7c42f2fb606b300d76eb1d0f062a60e4a602", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1057cbf3c87000ecba8cfea2cdabd0eb7788b6eedc20f5c6d105ee2d5f88899a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "25e791139dd4b67b0a423ec14b1adae7757e863445a640a576d5fe682e13b547", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "40dc9198db8485893619fff823d755aa632540b6351f231bcbbeefd8a98a121b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "edc0723fda651a7d99bae865646f4e9cb9c14b08a0248c030f2e6880b0c444c4", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "decd96bf38c7dc5c8fb79263b8d9700c9ddb8f5088c21d2c6f0292bf579d1550", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "d981a15fe058f236cdc7d6f4a273daffa68c7d2937cde09ac59810b64eda043f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4160538ce268425fe9004436790a69ba1409a89eb51c654f44556d63c9dfbd95", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "3a488a6f8f63137df181d86f8b3720243e31f0edfa39d06989eea3b51004b8ab", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "87e66fa02e865fd0fa75cdd3063c738cc72e9b3149a7aaaf97558429fe217ff2", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "936960e80641be4d67f4fa835c1cb52b412e16e6aa1ca842d381faa4670f86ef", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "0d421768137c8927f5981cba8776671333fe679d076eb4c3f54c4e6fbf20a50e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "1933ec7fd6b848a04b5e4776b0d562e2d1272e1b0477f83c7b4861bc0008fadd", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "89d8f59374ae6f8b8f948b62937cc10aa0f6407335c104c58672fc5d3d8cff65", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "0d421768137c8927f5981cba8776671333fe679d076eb4c3f54c4e6fbf20a50e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "0d421768137c8927f5981cba8776671333fe679d076eb4c3f54c4e6fbf20a50e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "0d421768137c8927f5981cba8776671333fe679d076eb4c3f54c4e6fbf20a50e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "2435ad99766637fd3efa880497f32a76cbc997b44a0db1a5e1030085bcceec3b", +"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "58070a22dec048513e90b0f2c217fe46bc3e9d133b3e9882c9e9de633c867c53", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "676b76101c8b1afdf8cf1c78d9b8db2296d478f1dd653f0165f2ed6f2b6910cf", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "1f718c00ba57218eba4303916953583eb93c2ebca954292cd497fade22ba7ed8", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "3f6e720712571babe34f4cbf2fbdc48c1b7e26316259926552ef47ea10f54bce", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "3f6e720712571babe34f4cbf2fbdc48c1b7e26316259926552ef47ea10f54bce", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "cf52b121f741e5cba02b8705015bd3945f1f05090820905f8b0109a89bbd4eae", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "bb77f4ec882e4dd97e7524fb2131c9bacdbf04916946007dcf6529a0018d351a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "8eae8c1e6bb1eefed52936393aed5597fb5cdf37521b326b77161eb83a67349f", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6140e64561ae71646157b625830f6e2039e1af24f1b03d011336d5f538270078", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "9d4b63ddd47f800711c0f42626fd27f376991afd3df339e18273167939231074", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "03c725a9d9a4408dac4b1f07d4fa682ed7f37a14cd1adb8e3afd89acbb7ce1b8", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "03c725a9d9a4408dac4b1f07d4fa682ed7f37a14cd1adb8e3afd89acbb7ce1b8", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d915adbbf217c4cd981333f87c773dff70c4a11d6c0c4706eddb205d2efc23c1", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "884ef6ee12dfd360a4a57ee3b2e570b8bac4e8a8bf8d5d4a133198f515603e0a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6c102c9b34feb9392d50fcf5b8529564847f9f03796e269735d99139f231416e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6c102c9b34feb9392d50fcf5b8529564847f9f03796e269735d99139f231416e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "6c3ae5a4f186416e1ea1d9baf276b19742254ddd953dc903c217cc2098270d64", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "3ae33f6ad4a22f3caac0d723e70cf028f1c8f88712a59b6c15e1e7313c2d8dce", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "f595ce811014c45018d6508d4798ace86666f2c7852b9ee9f66733501f592385", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "f595ce811014c45018d6508d4798ace86666f2c7852b9ee9f66733501f592385", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "0cf2ed87ef2ccb2d3132aadc885f742be113f436e8d1759235e1656abf12b5ce", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "501d99dc13ff509251f8c77fbb89dbf299b3c442364cd49c20bdea0a124d2b28", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "6adaacd47dd212e6e7045dca795614adf29f340d2980ec033add23c0f4c59e75", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "6adaacd47dd212e6e7045dca795614adf29f340d2980ec033add23c0f4c59e75", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "93c573d114863f31463f157f107007cf6407e4521a51716bfac1d847cc4f1b01", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "884c378bea07c7037a8b67e4083a3d3a3dd7c61667b032c74cb4cf951d2c151e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "367755fd108b6d69324c401b44d9de8ebeda8d152eaae40d635f8d31394d6645", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "1ddb217ca7fd05151d04b520e7b6f0209fc95451822ba046e2524ac70e36a755", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "56e6e2676ac84de8773aea88b2232cedb0d874029e82c33c0d644664e222889a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "645e41f15fd9f0f358626bd889e5912ffaa789065e81a263822be20a522b4f0b", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "645e41f15fd9f0f358626bd889e5912ffaa789065e81a263822be20a522b4f0b", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "4c1fa77ca1e2d16e08bdae0a15b2463ddc2bbe9c86aee2e4ebf658ff88c9da00", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "bc8c718a6a39dce93812ad01a69a732a001d5e95318707c1ca782c9f8d5f1887", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "12b1b230c4b25476f9356c039ba5f38af98d48810fe0ffbac50b63d2124d3aa1", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "12b1b230c4b25476f9356c039ba5f38af98d48810fe0ffbac50b63d2124d3aa1", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "3142ae20a03ea96482e5e4d14e1563e55e23025ecbef5396e614b13420c1d947", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "013c548ce92f9cc6662f672e91b3d1453041476914fbff93ce5f41508b8de17c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "b13a72ce453adcb31d805cedb17b1fd50d8f80483206634d5e4f2371a3aa7958", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "b13a72ce453adcb31d805cedb17b1fd50d8f80483206634d5e4f2371a3aa7958", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "07e5bbdacd064dffc08923030293c15001514cabcd48e7a9fb24221546074a69", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "49f642d310d40aa8a149c2cae121d46e99a2250627f0516d29066a1e2cab1a84", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "aa2058c7a7ab2b5262c01da96c142d3e50049776483436aa4154933b3ad14b75", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "4c8507443970c5760da6f933d651c13a6b1b0514ac246512dceed4f7202e5be7", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "a2d473708ea512b21e63c9541b44f265f0c71adab686eb46cd759ff6b034e9d3", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "23223874e31a44b161d7960d525f16896bc21601afce1a563ccc5972b9b01296", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "d1b2972b65518974adb0c428f34b322c1d599fd05327e3ef7d452d46b0751548", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "78cb5386143cec7e36a9a41ceeea83c99a970a6a8fa9c9bc3100c2ce35945d82", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "66ba6c674a81993b0082e79bc5f9e614e539fbb3636c65281874b53c1c0ed6c5", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "35c8778c988beee6d3160f2f0795156fed1d4224af56762faafcad26c6c512aa", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "f7fc39b0a1d18f44756b6721bae06da2988c3f2182bdd5c17732febb34daa16c", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "4695d33b5cc345d0e85b5e28c3a6c01cd039a18663c141cf7aab22505da061f8", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "6a51145280631e1baa54b654c50903d2ddcc70780fca198e9474b6a4a48c4f3d", +"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "6a51145280631e1baa54b654c50903d2ddcc70780fca198e9474b6a4a48c4f3d", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "b59590b9aa92352739d833bb186880ebca5584dcc183ea0e469e8bc115eb3aeb", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "c7f4bd1633e58720abf23aa86784b9d4b8a48b5132ba26078b992cbdc4f2e01f", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "c3483fc1bc827298853056d0242e01973d54862f5467150d4574ea676a53a079", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "a7252c3d76b4f7bdaf5207424385c7cc0665ced5ca5bcf8bb5e9036ae934d922", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "57b07d0284f756fbde8215dcb8929f73312e062ac299ab55db98c28987cac514", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "875be6dd9980f400a9e475147f97d5f8e7adb5aeac00b7f33981f35a386d4df5", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7cf8b9aa40748b43609534d00fb4179f7b234f611c20d63f2a40bd6e483b7acd", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "4cd919e8aa3340c9a0c887f61cb350a0ce9f2fa8fa6facfff672641a0dfc5aa2", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "7cf8b9aa40748b43609534d00fb4179f7b234f611c20d63f2a40bd6e483b7acd", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "4cd919e8aa3340c9a0c887f61cb350a0ce9f2fa8fa6facfff672641a0dfc5aa2", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "a8b16aca0431a70fa9ed024c814044caa8a2b57de1f751a49b318d2c7f9dad9a", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "7ca4a9a9ea6d195cc70115a567c9363b9d5641ceea8f05906f3c870eb1f3e485", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "d9436c41dbbed17eed5a05443075a6840f2c547dae5e9a43e16ea37035b1de89", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "77b2813a59d013ff440757007010bf27eef86338deed2aca524848d725b39bda", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "d6ba4d69999c47b40f57beb8573835509bf3896ce9d5dc8ac04fa2c504335faf", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "b8a974e50ec9baabd1a8bcd15a292dc33ba74ba8e1e619567cc85dfe7264d0ed", +"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "caf860837f8e68acddac2dcfb4bb22ea245906bd38261e5e5f6b4a2cd139a978", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "a2c059728d59c448ad99f0b77051033f95f1089a2b69d920219984108a223b26", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "5285d0d036082b03c27d84c2f01ebbe79be0cf7f55c90237bc50af971c9bcbd0", +"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "4bb5ffedf34d0b980c6a230472a78b03bf67bf5cb208cb167903a2696764d1eb", +"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "cbc06956d1d17786d90178cdb7b37eb526c6231d5cb9343f8336d28af33465e5", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "14464ded53986a9a4537b31f6a251f3dabf482d7d9bb53760897361e7b8e8ca0", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "07b81ed5db469a7eaef8a44a8c2c12e1915cd28edc8588ea8f9af53540a9261c", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1d0138a21ad9213405cb29b6b20b70a9bab02be510ee6f8801b4567a2d19fd25", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "6a51145280631e1baa54b654c50903d2ddcc70780fca198e9474b6a4a48c4f3d", +"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "16a3b54cf2ca7fcc3139b876c7af0904bd6b8e54a906c53bf6870e5c4a0bb928", +"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "c0b3a057ad222471cc8adcddffdb92d0c112a504b063e6fc8e9d7e48f94d25e9", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "caf860837f8e68acddac2dcfb4bb22ea245906bd38261e5e5f6b4a2cd139a978", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "efccf5b2e10e6dab2c62290e76ac6edc89093ef13d7482c84a28149a66e6effe", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "b21e6c38e0e9eb63eb0f9caf55626cf35575e340b79b5a351754c9eccdcd510a", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "456f7163f784d377d95227c88fec0d7e25ba4babb0f05225d5c8652fb411808f", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "caf860837f8e68acddac2dcfb4bb22ea245906bd38261e5e5f6b4a2cd139a978", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "e02357b8d05b181747c935ad1ff9a2ae4610b698ea49ff0600e947332a2547d1", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6d7ec446c6db3f535ed0fbfb05d65e99a4febd49d57b274eac96db79ebe3a30a", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "25c2c4878f903154675cedf67c6a181f0597a2193bee25f4a807ef2c94dceb83", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5096a9e5bd784cf0ed35f512183d6fc9d9abcd0c2fa041dedfe80ee6432c0eb5", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "e02357b8d05b181747c935ad1ff9a2ae4610b698ea49ff0600e947332a2547d1", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "ec24948729362e6f04c0a0667a245ae3378c914b84fe9f7d8c33a118c3baa4b8", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "71f349829ecaaf18bf60058679aad6a1d0e588125ef82a066de52981dc997fc8", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "509d3963f6ace8ea50be0e156f49e464c189282b976a7da2816ba49d48930b0d", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "511c3a4dbf7585ee01dce553e6845751f3e91a162a224046f50f850966f17081", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "f4dd1ad8c73e617cd3793934b19ed21b082070261916ce986eef14319a4d7a1a", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "1b052989de6b10cf2317d2b2845664b12d50749387de2a6ee9d462fb673f5630", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "95cd2c6dc721ae7970e9c1c0bc110374225b527a05bb18a33acff68cad358fc0", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "88dc466c521803c08e72d22cf9d1d34afd0984e7a4ed1a0956f701af01daa052", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5edf8780339bc6246e9c5b78642d531efeae2ff02b2f5b07316a0b7cafebf354", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "5447edfb7bb90681b62d74c3ebdc2d04ef191f3a70096324e1035aaf38474088", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "81e8960e1bcf051406a6c8c43c1ee6bb0a56a36d576fc36c3c8b73c519ebd4a3", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "3e5cfef56da9998c2985bfc14896e8e7455dc9ece379891b41faa6b192efba13", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "eb7b87814b860dbf7a9ae8da38fafc3fb1f06f7da0f87524c16e2ebaee6f3dac", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "927ad642f3eb84e06f79ef8dea5b5a54a928c3bf76b4a23ec20cf3f39a45a908", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "eb7b87814b860dbf7a9ae8da38fafc3fb1f06f7da0f87524c16e2ebaee6f3dac", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "927ad642f3eb84e06f79ef8dea5b5a54a928c3bf76b4a23ec20cf3f39a45a908", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a45681b9fe18deb0c1bdd8c9c5d5e769b67496ca77a6760b417842188dbe2b01", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "61c7b97e3e8bf9abb30ff47272d239efceebe8b688be15f1118bc25d598c419a", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "0bde86b38c2dba292de72b5941b3ae69a788d7caaa0004f3d96c0477ff9b6ab8", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "85acc3b76d6b87a7f63ccb16b503270b023410c55389074c6cae8993c6e8f0e6", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8cde631ee216ac69cbb95875a0301a8ffba1d8a66b749665a0077ad64ddbb63d", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "03aaaa0ce7a85347d4118139f5af1f7608deaa251d0cbbe3a5534e7c3a2ba501", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "9b14cc548fa770cf17de6c32c9a6ab79a0fdef52ae15def566a5a397b902c798", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "7c915d12863b49c984e5f673681b22ecce97d7e43176aca1cb1e6aa3cc4d9a14", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "eb2a9ab2b12aa4020bba2ab9e4fcb3d47824bb125e0109bf909a87f96da8f22b", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "eb2a9ab2b12aa4020bba2ab9e4fcb3d47824bb125e0109bf909a87f96da8f22b", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "eb2a9ab2b12aa4020bba2ab9e4fcb3d47824bb125e0109bf909a87f96da8f22b", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "eb2a9ab2b12aa4020bba2ab9e4fcb3d47824bb125e0109bf909a87f96da8f22b", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "cd1c2da3b82238de50ca9ab80e455bbd2935eb70f7eb4b19c6f9afc4449b6acd", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "cd1c2da3b82238de50ca9ab80e455bbd2935eb70f7eb4b19c6f9afc4449b6acd", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "cd1c2da3b82238de50ca9ab80e455bbd2935eb70f7eb4b19c6f9afc4449b6acd", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "cd1c2da3b82238de50ca9ab80e455bbd2935eb70f7eb4b19c6f9afc4449b6acd", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "5bfae50c9e9d880d88807a93e2e30cf21e59c527cea8aa145c2e0295fffcf744", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "f160c0962c0fc3b01a02fd7cdb36a6d4799370586437bb558e16c939c8dcf952", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "47fa2cb81fc8ca5850ab3adfb186de1af4624d765b197e715680c312044bf6c9", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "47fa2cb81fc8ca5850ab3adfb186de1af4624d765b197e715680c312044bf6c9", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "f1f68aa8a18501e30749c82358957e24e821f3fefed83b361f88f6a43dc8efed", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bf804ecdd9d5b97581e4ba88ecfa42d5a6caa4eabbc19e570a4e463824703a5f", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "3fba928cb88ed4a4fafab6618f86ffb03b34d737b09a9fccedb938ddbb4aba01", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "f1f68aa8a18501e30749c82358957e24e821f3fefed83b361f88f6a43dc8efed", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "1fd0eb56b528d18f981f1c077c20954601d40e5f0fd0e3f3417135b5a0d6e060", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "adacfe69caf13e16d14e23a4f56a453113a9de73d9a8e5b074f8ea06545d8ec0", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "bfa58c23c6b3ebb991cbebf6534583eb60cd0d541951d0b9d2d4cf9b2f244fc1", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "09684222c6946ce9d40335a3dc0700452240015c07aa9051f68d8d3d0925e991", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "bea61cfbe4a5210685490a77042e050a883eb3cd3603343c2bc41782dc307c97", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "30c6d73d4ecaff1b34213a27d749e7caabf11b7be937792028bc642446389872", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "5dbd6cc5adb066473f0fdc94bb779a67cd2de8220f6edf328d9ef93a394b0e97", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "75ae88b65c4947eae64675875a2dd21a23b6bd624a8548c10d3354d146bd93bd", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "61d764fca2a6d418918fd57e6e9936cf5089bbb1312c83d82b67c5ff2eaf87d2", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "e3eb26faeddd14da67c101dfa1fdcccafa56cf91900b9417e510d4068cb20beb", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "f2910c56722fc7ad950c9c34c4a108180a6a3b6edc95c51291eaaa301a35997f", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "b84e95add56137e23edfc6be8d996e2bdfada866888290283d7923e585860765", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "ef2c05daffaa2cd7375e7ecaaa0ca4a0103f4e238b92ca993128a6344289c22a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "189982ffd5bd0236a0055bab1140aee4bde0ac7c16f12d92dd7a9d9f421cea06", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e079567c25e7c605361a6ecb57379330ddb47583ef367fe4c15a55b070b0ccde", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d11da67c62217c7dbf7e051eebd97ddfc15f2cdbd19bf295be9a497ca939b4b3", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "e02357b8d05b181747c935ad1ff9a2ae4610b698ea49ff0600e947332a2547d1", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "17096f46d497823495604d517706d785c153adc06cb763a111bc5dfe06f70afb", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "d75adb893372178e8b32250ff0d7b0ddcb81c1bd78f757240f237e32913cbe3c", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5f400e3021354a9aae4ce56918e5fcde816186c839aaeb4e581628dc429eaf29", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "46d6f157ed42a8353940ff2f58f8fd10f3f483e740a33f6eaabcbffc8fd02bca", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "f7abe81a7c30bb4d60582903074579782fcd2ae0c64bcff1987bdb82a6d8aea4", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "c270444598d98a00e70bbbeecec6de838798b62827495cc48ae634b488c2728f", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7d2eb811928b2cdcdc3392cb2d84511fd2d1d3f91a4576bd48f71def213e9572", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "601ec0b6a04715c2bb63915e8a33f4c8bb24cd75ea95a57f2410db56d3e98b17", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "8f32d6d70d99cd326bcd1f963bf5e941dec094324e0d197e6753ef2054f1dd98", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "7abdb835fcbcaa3f56be18e6065526bd2e136bd4153be9a20a38cfb019cb593b", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "e503c53a1746782a240416f4cb3493837475efc1122efc9ceb21f21d2363a201", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "2812a51d576704de92c6730604df659b5296ee030103e8737d074c90d242914a", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "3b277d734415d21b5798532fa97f0a507fa0a554455c30d36da5b2c82ff59990", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "3916c7065b6d3dc8f3c004730d89866560bc27a0cc67e3ff35c7c5e6e601bd1d", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "5c15075d8c7d39fbe68480d357403ec49f223fff632b1885c08a3e543490994d", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "a12aaca25baa1353b5390df40cea3bdc2a52c4b45ad5addbf2ba4801a8870777", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "afe2bec53b192ba36c20d2ede608e48309257fbabbfc3269e362a9462218c3c7", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "28fa474424c360284c032dc40f22c16848fbb056bb3636a2e2b119ba9a1dc678", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "5d529f1bdc86fba4d438fd7900d6f015673ef867360047eac3b528229a543c94", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "f588c14c2d246ea52f20f2da93fd827d1468345596a8750d5c874a15e90f42f2", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "df984f23866edab102c63dfb9e2859fe7339202c3670969c393d22fb65dbde7d", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "63e653cc5220566be1ca4038cf8d0af4a99697b0e2b1745d4cd5b2127651a690", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "14948e20f16f49f10ea331b9ca4affdb0455b379aa02638a88a8d8ea4e7e895a", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "235cab8fc2ce5422d6268d9bf17c6805271e583482c9447ddd627ece72536009", +"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "718656f9556552f85b1e3e75cd4dc0afb7bf65531eb45b8d9c25ccff27396392", +"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "19529bb1300d0ffb54d5c36bd9833993ce46190bb6dc51a49334fb1a3e7b46a8", +"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "af9c8ed823be20ee01de5a0ee9955ecd6718664b3a9cbae8133439b493e602b8", +"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "ce28267e7c2e9f808abcb590f773be9868a324b1ad5928995f92ab4eafb6b5f8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "bc101f7ac2ca5ecfb10392b40697021f59e938e7368da546751f90e0417bea29", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "13c1e5fbdc7626ff03e310855be54c30190923f03817b2d3f5ffa81319acfd98", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "c1dbe58dfadcef7c3062b7ca1dedc808f8a01d25630a50bb4acedbe346dd4c2a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "6b01e0d777b2752b77f94ed7fb59a051503df07a00dfe991500bb1911e7d2733", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "943dfd03124fc3bc3bb53ed170110e20d9a161f0edc1c7931f67741ede07b8ef", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4ac4bab945185cd14e74e894e9739e893d31968909e18b626c8ae57e2c764cac", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "beea9aa30e48ed9ebbd5bfc94f15381f6333a26889fb357c63b56c07dc5085d0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "b038a52b6772f6ad1ba5498abd90a9199c585e238b85a53ec240436a808209e2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "24be836fbe7c0d48fd3281f5c41c465032601f864e15f3d1e27ded54a4708e57", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "55f282db4d05079dad26970005eda3773ee357517486c5fd60bb2a6320b412c1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "232b2fefd02cf2a38471c5ff448bd156874161557f579d85b980ca6d74b9ee76", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "d248261ac930d2b1801a844787882a030720a6e902c3537f49d458f919b8ba9b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "36d449053779ab3a1f8f1dd31382014ac5d22c3e8966043180cb52553668606f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ece71f2de3bed6a5a2189f6a5e4ff806b67d3c72fbc6f8547819d3b5301f1f7a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "7a0891f54e107aca02357ef16a96ade4d59873edc17316f2d00576beb0baa6ac", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "da387ff81328ebcca7498fe46db53a94dd839233b98e1ea2af2259aa8133e9a5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "a6c816aa38da8ddaba60237e7665f4fe093c6f7119f2b628cd9ad7a9a292be85", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "9b9c3019ee9e558970d865b76276d613647ef0ebbd58f388123365d485f94429", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "7abec6e36241ac5b0107645d51a16131cb962ee6d64143372ade6f1470d42c09", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "62c22e517aa5ef5fec6a995608cc48530f6f67cca3cba3ec30aa54a724329fc8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "dd958432d1e8fe966bba17081a0cb2056fb9e64062298caa0a2130170e0120e1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "de37f15f2a91e2ef62b8fa8089b3576f9c5e357e3a04fc12c2606e43a6277010", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "53313f5fb2a2eadc8b22e79486f58bd0b368b5f844542132c4ff850b80e195d1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "22fe8beb9f8cb2b585507d4d5b2ad11de182cdec702ebac790e9fe677c358854", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "e563e06acd779bc65e35281f7e6b0f7be92a5c6506795706ff4ee250cc3afd1e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b4517e452ccbbff7763723e5241eda8a41490fec1491d2ab43079f33ccbace41", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "e0320d6ae435de35c9d7b397b5dfe4386da4c7c4583195209a813da0cdf9c884", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "5b2fb9c0e4378283160c5b11f7497054f0ecafd436d970214dec0774f2e43767", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "e8c1251b3691aef44e72ca738acf139f3eb963a839e7869a79f0ef44cd2d7bd0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "271c9169fc3a3464c41adee4e7589741439aa2fe044c5dcff3f2a17fb6b16fde", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "599b59a26496c3bb998fdb7b782d0a5248435a94661508ba65134f6c35554426", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2f30ece0e7d2ee751ca607e378ed0e2c1bd4a461f79bbfc52f75a346653e7d17", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "2a3355d85b2c3be6b499e6ca0e04e0c0c99a74fe4d7081462192cd784d48f698", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "9219354a7d7dfe29342f70c37a7b9fd31114fcf9020cf6b6f2d4d15e6b4efe3c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "fbac676c088cf04f5044983e20b007eabc73a7d26cd6a26fe9280c776c8de01d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a9da3f84530b5ab36cac24a1e8ef802f30fd4fe4d4c6d7f345880a30f40638cf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "34dc29f64cb938b0c6e14ef56055d9021f78a64444dfb3bddd82b599e769c6cb", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "41e0ef0d0783eaeebf24ddaa86ea6882241d96b125135866b7c141b1f664f66e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "8b9e9adaa0dd83e21197fb0a3dee4796dcb6e4e398db5059ad8918eaab5b7875", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "af1e59f9b95989264fd06a68ca8afc2682fdaa244a01b14dce605ac216fa7482", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "e86b3698e87ce3ed774963796b65c8165370fa2efa2f3896ad28b0fedf98a7df", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "47b83145c7c8eba4bc48277ed6239e5ed525324367edc09f26d5c494c38eb6b2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "004a9e2030cf88fe9452a43754885ae12493564f277de05c151c5dd5e366137c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "f32ee6826b7cc29b557338878b62832a3a35c4f17f283140a9970129860e820a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "57f641cf84b573f1a6abfc1b14de80fb4c305493c88f9aafab5a54dc4a90eb66", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8cb2f4ee08deee3d5c09f6b34609e2263ef37ffd301aac488795035a3301e188", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "7fdb4f53d7369099218d19752565341ac72a1c4511b4e6f92bc3fbcaace6f5c5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "14570518b655105f1c2cc0b754015293898729a86b8c680732f581589326610e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "a966e59e3075e035004f123d924b411f10376a52a7d42589ee47facba6d0e473", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "bbb0a46f75fd2fdc9a7460439eba58d9346716947863f208c207d6e557be1f34", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9afe0f571d74f1a3844a1e2a258f8e33744902ca2e004a70d4b6371273a10b2b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "6bc14088e0329a30f2164591d907e7ee96b97996c39dcba78ae2913c9f7535e6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "be4d0022b1b5cffe59fc4ac01731bc6f609aa15f7a366fca66217f6fa968b4b0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fe97c4baf78d7c7c38536db117baafc94d0a06409e30a676c3d948887afea621", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "409f661d9ba287ded10153e421b3fe6127a16bafcd7a6eecaf82285a1e110614", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "b742a20cd49548a8865647c1974f32864c49504bfec76e03f5102b6354bb83d8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "f6fddb9321e95fbb99996da0fad4c5927fb8105ce77b69e558d6a0d0e2b40ea8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "3b5cd38c9877a6bd067255832d13349cc5be3d12ffc79eca43bb716116e868fa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "28b25391773a58efc7117ff0cc812451189492df5d5c2d16727b0b211f0aa581", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "708b8c24bdfc4caa6a2bcc37827b59a0154c6453d8f9eace9eb366469b8608a3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9860ee476ecb090bc8c77e3c328f7b44fe149ef86f273bd6e1e174eb6f96ce17", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "10dd6942f1508c3d444203d0c4385103e9d4832c5057be90b9e7df35df4542aa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "47ffade895f97bde16067bc2fc9cbe1bc5de832be4037960f8dc0f74af13675f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "f981d5fda275be08ef9f0ec792e5d36e42f49a01a7e1c31c06101a94d89d9d06", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "9a4f1c0af6ed4cebb8f4a52a166f1c2f10fffe979fca2c885727031f0598e389", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "0a3b3c739f6062e6cfa77d8d9bad16f43f2694054e24509029c86d9c8169a5cd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ae3e715bf59fe02febc3ddbed7cd74b1011a4355872cd98c1e253619cda1e0ae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "28aadc20b6700d16de182b98ff224afeb976f3f1b682bb065bc80b13fba6a4ca", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "0444b71a8061f48c89aad699889f26032028f9044c61e5a701dc94e709c812c1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "c15d313b29be21bd0d57cf530b4deee515121243c39e71eae68b3e4144526136", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "5fbdcf36f51c89d82eee015f342334721ab1fe6d3df7d854efdf744fd034e1e4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "d64cdb56577fbdbc74574ad684e7e1869a5749b9c000e82c8a85d883f91b47c3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "9358a7927ce4024b823b5c0f0e224984e4653e58c8b68133989fd4ff1f8f194d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "460e72776b98831c4de80562ed773aee6cf63eb9d7dd1164952462690bfcc1b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ecf1ff7a099526be70c8b9218f546d0b5d32083facd19baf0c0397ecdca6cd3c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "9497c28206b7d0292eecca6993dc52a23dab955a832e4811634779268ef51d6f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d6689e6463a5405aff4c33af6859d93e4747756fbf9ee580a5d0fc2d522f74d3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a64ada66326e90682bf6a465b6deca1d40f18a800525449db543f6addcdfac08", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "14b744f45236063a9b72df5048edf3ca9a644a38d7bb7a82ffa6afc5cddb2036", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "0b536b3369530fa2c488f04cf7d310fd87793fed0fc4411c7809587486ed4633", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "7c6e1620f64361a31a1b37f0ba150b2e3053d4d49260ae9cd8052ae4c46c23d6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "9b79926a95580088debefb1973741b566dabd717c1fbb82881ad8eed336e09bd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "57096c155c94bb1eb9ffba44922729c9394bf83afdcf678cd7471a4c8dd03507", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "73d5fdca5a0034d0bc1507248376812b036c53be27632056c9b3347354c0e39a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5ce099a68c2974494cfd2e28a13a8a62f8f49791b307a92da796216a3c003d9f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "af3f8c97d8e1b1837b294ae1f07affb136a141350d83edade963f9c5e5c728e5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "7395dd463e3219d903eaeaf874d06e84138c270e9a15ac49fffb07c2078fee40", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a3bcd89f49cb07378ae97b17cbee5170e298b3a5e7bb79fa9e288d22ed4f121f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "443d3775b6be8d5b39cd9ae22e637b63b028e2c44dcf110b58adc32369f03b58", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "be66da2aeea11c2b339c53be3323e2f438db857969dd29661a25e48786ba2d50", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "321af19853f882eefb306dc9b08deadbbe93a1b58b81e1866c70beb148a7da24", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "8d3c6bf2746d631333d65447550944f693ff11f8ed07e9078885c65d11fa4df1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "da0762fa0dde4eca2243d47dd5113366e2e49553de55d8fb0eca10c8fd3882ca", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "cb073a03a58cb27d9a8484cd355b619fc95e2200f96afaaead98ea0661eb0d47", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7872c6f676666d0df559cbdaba493841a2f5f70b9abacea509812ec27d1d41b5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "e66b699c08fdd36ec4374a8144ad7bab48996d6510624ef748866daad1e7f1ec", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "3fd43dfafb9c029eba07c6060d036aa7bd9431a31448f9c7a0b0c89e0620487d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "1cd25402b563ce8431ef0b6ea064370ca0933f3ad11df664454f5dacb63253b3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f7825a86fb30407e5c503f146b78f456346e10b1325f81c146613da2f6346f52", +"T3T1_cs_cardano-test_derivations.py::test_bad_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "4138fe086c9c18b192823ec2ed672aacf348cf6f6fb3d455d2105a8b0077913b", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e416288c71c89e585b77c33bff18105652a8917ca516cc71f130b5ebfaa92247", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "17045c02cd799e77f80b1a610feb607352a4765b39e4018f619ebc7dcae39399", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "9c336a50461dc00791d1776d69cfb5af81d27ca564a2b61a5fd3867da3aaea62", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "b5ea1c0f84fa6d4b996d7d54f4bb43196604c9a358fdc4967d7ac668d6884469", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "bc068b1c65154f55374d6d2f44858cb2251bf86a3040ba4a80fe3e4136306706", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "abbabf76deb90f9789cd9a8f7e538c0688d1b9375aab9f1b3d899450c2a20b88", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "f9d51de676b2591684b02cbe0579b1239cb92e05a90b068bdb3acb87af697af9", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "3ca054793d07f46a7805029e4ba9a000f2932e3bb1536b9acb58c3e2b9af5228", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "82be3efd527d576541c23eae5388442b5278682fa3faad7e295364707a571a34", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "4177eecfcbae74949b3bba6195df38cb1d8b230ec90614bd360842ec75780b23", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "af7d1062ced3ab8b5c806780c9cfc1e39a1476174e0e830010976835e2b47bad", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "3a114e931056744eb217ab47f203189558097a51f3bf6dccae7079dd873e68bf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "c871aa36097cb5b2cdd6932a29ccd9408b62e22d447282eaa20b507d2d5518a5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "2f81dfbcaf08df903c8db31965a3f67f1b9e226be48d7a2a08358db6a417c44b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "40971a25cc5cd53a2bbd2c9c83c8c52d2aeb7eee7e8c8194465cb192d6f14faa", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f8ea1b9fffbfd84331688e92caded8a27a048efa2d71b1c4e78aeacc0897d4f9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "586826a625a82d5383f74bb6ba5dc9987c9fb32d73e4fb1067b303247288099a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "55414c2f0671245b0b40f39be4669e2c1d12a91e7cac71e37b3e5ff47fd33e18", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "db16ca07aa54cd518a4144d3c498651d89ca100a2bca5d901f8dcccc0c9eab63", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "94df40b1911c103d9533ac2f3958c98e9dc8091eb59c2ea409f6da0e328bb419", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "64d03e5739200f3ac06cf4d7280c2c71a4d2384bd2bd2ce37436896e938b256e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "3d8a680321be974d649ac1aee953451d285882f821c8f9e33700e17e1064e2a5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "87620fc64ab9e2811bb5637a8c678788fed17174b65b508904baa5f4e3819f1d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6e8185680a17aa6f0439e635631802d99d2ac7081ab98f238ea751e63ac16c00", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6e8185680a17aa6f0439e635631802d99d2ac7081ab98f238ea751e63ac16c00", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "95e6c53375fdfd187115d7381271cfc3c218b77087f40eb8ce20e721d0c99949", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "9020521436eb93df0c18045d838e086e42f6e468879cb60cdb96b54e177f246a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6b8e27da52538561341dcf1e292678e336be8509de058ce6f7c0605390fdbd01", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "cbf018b995e3769ca4cef2f09af165826f99cd719d938039030e6c36bcb5ce63", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "1a1cd0fd815adf74d19c6b19c18ede854c5bb1e5adfe8a3e64358aafe20df411", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "ba9485f6f41c5e7bfe9ee80dd04b03fd51702182e425c792ba2fcfa65b087313", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "a55040881a0be0229f950fd54568ba5ee300a238b17771ce85c022eaf7c001bf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "9331981b15253a58c0e2c92856c9830dac528e73870f279f29d3f238a5d8cf7a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a1f0fe01e006a382d264a810cca44eb39efadab0116ef4915998e17abebdb6b1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "1a1cd0fd815adf74d19c6b19c18ede854c5bb1e5adfe8a3e64358aafe20df411", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "ba9485f6f41c5e7bfe9ee80dd04b03fd51702182e425c792ba2fcfa65b087313", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "7b2e979b69729c8d6068e22e61f078f8a06b7306b284831291e642d38813b1cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "2ef44a31b8f774bff93cc5f013be4391264bed1fcb7c9e0020fcbbf8b2785f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "16aa7b6886e043b63edc1c0d106c50bd6a25b8b95ef8fe10c1438f16dff73bd9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "d60483db992e5c8133bc039c1459ca5dede940c432eb8f07a26177920abdc360", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "3d054c9a324c73ac9ef79154a2d4965b20474cd2d7dbe8ba39a794e92ae4ef5a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "d979c5e4b4af8ba739c4cf13c6f221a6b82a9b1493b2690ad56ba3f9d7b7e9c4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "ae4a60e640ac8f8ef555cc7a9bcca795ae5e366722f17a049c1618e60e35a206", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a8aacccbf62d2e750de93562c927dcc31220def2650408924c9593e634ad7ff3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "2ca9f0673d1210f328b9e0ae1c53395a1ce8fe806657c68aded5b9f049953223", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "f06bef87d7cd81dca234d40bf6df3c313af8e338b8b86df63f096ce6662cac28", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "64139bf9d6df3637a7db71c97911f8148f347b46313020dbeee9fd0ed417fd75", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e0512bc4b03a0c37c820fd9bfdbe6bd791f656058b6d9527a9523c2ef48ca3d0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "73600dfe99261899da53ed4f01e86f822240afbdbfa9b69ebf17fba624e98548", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "0e5f31cdc8aba2718be765af88e3fc393552fe1da1d065696aa1eadfc00b52c8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "c5f67db56d339733609c2f76bf5f4ccdc93bbc550d18cd5050ac233be39c7643", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "b059361c0ea5c544b0e7349fa2e623917761f01f021dff0d2601bb174d1d68ca", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "15ced0b52fa6abbec8f2fb01b0d1428317b904be08187fff4629024d87168dd9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "fa702fba91bc505a25b8756cbbf5fcb8bd678e80421f0d2acdef5958e11f5b75", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b718eadb76f847f0458b9565b9bce4d2096aea48d100fa7dcfccaf3107a3a7af", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "7a7d64cc428f903167bf99bca8fa62fdc825da6dad00142f69476a7dbeb5d46e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "4ddf6306f8759f87de8a8b8ecc948b2067706e850e8bcb2d5f98a7e5652c3aa4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "9dc0ddac14a90738cff5a7b5477fa7fbe20ecd5a81ae89435f3f524657d48586", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "0f47a6a1991890fb4a6843b7277ef302e8e8d0168834cb76becf38abd315cd7b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "75603516be2bc48785748c96e311b9ad7426309ffaac3b5ed4834730227f6062", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "02121546d298da870076443b81649df2ee09ab7361e5631f232b1100f2cff163", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "77b3793b6c5e34235d8b68b8e88fcec0b99366978e5e9bb53c041a62399ab50e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "51bcd1afb355d7eb0633e6694dcdc48e8c841bf268112aa5f61b98388cf14cff", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "79144d4789d62c012065f81b8e2a891bdce9d07e4ca72b4d2911e39266b064f9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2d472276205361b0fefc4fe5574a5bba767a228324355f38f26370ac0251be57", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "ee86b6a7f11c4cc00af07380fa9b7d3edcd9009c762ec84d13de9ba407a1477c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f8063d81a8a82504058f523b2a4358a929ea3e9bfdedd690a6f6e5c311f82186", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "445e567ad4fb988eaa399081e70e2b24a22e72219c4d851d90168710925de7f0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b05f0b9a31cdd3beff670e4dfeda7e944c27f37ba4061602840b60040fb1b172", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "0cc7fa947e7a67a5622382d0e9bd496135caba7025f2a71becbb87c2da326558", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "2197ddc14c24a8f5c006dc7947363afd56c807ddb0a76b1c2474a114a49565a4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "cbc3b4d4a62eb2e374381ad8b51540b51d98506e8a80b0c280d23f4e1165c649", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "9884977def9fb1d1dd95f83c7e933450731d26688cb6c8f8151245de9a0d03e8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "0af44f675e527038d822a90719d51a3dda32cd503559fe067379b7f76f17adcf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "909b13434ff5dc7849695b1c6d9efe8950906a57ac74224f175f1c87118f3c84", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "8d9b6f4ade95289e846c56b6c7b8b8fc035aa2b2f252259b87bf9f20c95667f4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "bc7e4b1a85e6cc1995ed7e1163e7eaaa60ad5b8c05cc388eac8258cb1365bd66", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "a784e2a27c66b362ab862d360765354c597e9f12235893e30ee4dcc5be15df6b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "4368393d78e52ea7955de6251735938df2bfeecad2b5e404ce4ba37bfce21fe8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ae55ee3b9f5ddc6c4946aebf7f175c59828b6a7a62e6d78fd0455126ada304d0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "76b468627a740f7cf54d43e47ab9dd2d02651b6c7e5f3e5a2e4dc7d35225973a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ff974257fe653340fc7586d972fe732941b7435e8fae8e18a80f18c518071f95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "de251903def2ed41a4d477851020e8131ba4f29c1880c05bebde13952b605580", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "865825971d9c9456a0a9f3e562ffeba828787b042c27aad2c15de8541f632630", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d3a16efce8e46dc060fc296a5108c37d2cfb5310440bfa50e6dd1881f816ab9f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "ead89a5157bcf3e53a424cdc0d1db1ac3b13cd9e0a642a64e16931eecde4e197", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "2e1c9ea6f904127f282127fbb7e78f0d986d3241d0ed8274652d00b9eadd5056", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5672a5e9e1e010f166ec6127685ef80efc2464e6ece629b2ec51c0734f622cb8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5672a5e9e1e010f166ec6127685ef80efc2464e6ece629b2ec51c0734f622cb8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "7996134e5fbeb63e8f8d3b5c9160f2524bc0bd8e245623a08188027b34d6c707", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "dce45932c5a453186ebed6ea5eef09b85d7d46fa0ba0006067364ab592315f74", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "dce45932c5a453186ebed6ea5eef09b85d7d46fa0ba0006067364ab592315f74", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "4fd9bd1730a19a83d1d67a4e0c5c4f0b61bc9f4fc52ce79b0006a383fd6312c6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "6ae5ec51c6e49bcd9b4e64bd79236f36286291a117502aa1758a44574c79a184", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "65aa42599c7f282adedcb1e4bf872255779c8e227ae172db06765765fecdb502", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "e0826716562155f7f73b6c3cc47992bc02d4dbe1c9f27699249e7affef7b3d89", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "1b2258967ffb74136591086de830d37e3dbff0c5ad33ae384626240c50b8e846", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6ff0ab59082dd6b010dfcbd2ef0363e4946adb5ebb991fdf047de75828af4133", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "a16f27a89fca3df441b63f8c2ba8b36094dd544c1ddaf82802a98a8f1f398252", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "cbdf9fefcf24021cd9c52eeaf94d62b7b843485982de7e6db1054a92b39c0a47", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "43abc94a50312631fbbf8b4a1fd4b2cffadc60df7fddfbbf433e10e2436cf8ed", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "c871aa36097cb5b2cdd6932a29ccd9408b62e22d447282eaa20b507d2d5518a5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "db16ca07aa54cd518a4144d3c498651d89ca100a2bca5d901f8dcccc0c9eab63", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8479b9dc9b6b55cea9112ad9d76bd16f91acc93023f64516e4d91a897c22e978", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d6b7ef1b3991abaf9199bd2fbb4a75cdf9dfc217fb9f8f6c731f3ce9d599626d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d6b7ef1b3991abaf9199bd2fbb4a75cdf9dfc217fb9f8f6c731f3ce9d599626d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c9cb82fb7dad8700c86e20ece789cbf9ad98f2d0838938a77995ac9c1c8360b4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8e3e8f99bba0cf23051bf96bf5167d9b989d99d717264c08e6c5bd8ad93aa35e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "48adcf8612b4a526978edae9b2621d551637019d7d424a23c2aea731feb092f6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "dc3ae44c81871d21f6a67fb6ae9180ebade63400578f1b5aa70f2256cf5de5b6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "89520b79697be0f06270f0ffd8ac1a2be2c18985b40567335c02649dd457ddd5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "1406e3054c01d9efb1848c74839afe64c7eb4a1a24f9b929702396a8efa7a693", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "eb42a9f65f59abc25c518f7a4826cc245e3d71a6faeedd86284f1b1c578f6a31", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "eb42a9f65f59abc25c518f7a4826cc245e3d71a6faeedd86284f1b1c578f6a31", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "eb42a9f65f59abc25c518f7a4826cc245e3d71a6faeedd86284f1b1c578f6a31", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "eb42a9f65f59abc25c518f7a4826cc245e3d71a6faeedd86284f1b1c578f6a31", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "dc3ae44c81871d21f6a67fb6ae9180ebade63400578f1b5aa70f2256cf5de5b6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "9194e1a8c9c436350f43a99f1a26abff1424e117e94d406dde4ce6f8c0acab8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "22ba13514d386d42938ceb4b3e4bebd22a8b4cb298455e20b88cb179ab79b073", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "1a10f57ac83b0affcaf42f44e913457d179d6c53c36ef7b264263780c5b5423d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "adb6bff9df0de1ab6d9101fa3528255ee653f905519cd3210c4f8e65471b8c97", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "4e68593611df44e74e60d848bc7025dae806b70f43d06c355f0eca425ecdda2b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "73c8be0dbfc202eb35484f12b982463ba0044b1b758a0030db3b8b02852b096c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0c42a359e6ec13ac85791707d600c5f6869cf9b0a76c0323c5d8f00666a96689", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a72e93f8b32921bbeed9f2af196fa6f462656ea47cb09683aae6ac5300ffff90", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "7102adc067be54373e82daa1e206db1fafb6542670cc8be16b987778b79b48e4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a4806a8fbb5873416c39b1dade490554853449b27d69926373481d556307ac28", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "6536dc78ceace274f520d688acfdc36cdfcfa31a7d57ed20c2bea680eae1bd99", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d6b7ef1b3991abaf9199bd2fbb4a75cdf9dfc217fb9f8f6c731f3ce9d599626d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "aab3e089775f5bbe5628e34afde29f35910303ddfde887cd2933a4af76165ff4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "db748289dd7a87b089172eca8a1e49848aa594de346724f9ca5c0a8b1c2ac0d4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "8966a8ee9ee7782896669b23ced5cabc3c52a178ae6a7cc95793a4c693c316cb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "4e2165113f49710bbbf2dd108dbdabd3c2a7487d53c788a6978a2b5e1e399831", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "473f8a17fc8488590d528a73a23670ebce1f7ced920bf9f69c61d2f397cb24f4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", +"T3T1_cs_ethereum-test_definitions.py::test_builtin": "60f6192c7028a8205b45bf533d6d73170f92899ad0e76b6c840d16dbeeb0e488", +"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "f64d93d6a8d7da9f7e2ccd1e062c1309501546486d55934bdb20d31d0f196193", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "e9386c923baf6d1f6a43fa41f99504e4a4ea2d76084f90ecd7b0f0561e3b2401", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "57be480459b107ac44e5de3fd1630d1a0d90395fc4071d51031c1d870907c142", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "c5ef8d86c95cf834bacc65f7a5c7500f1a5f282f628ea64cb0cb78a45d7455d5", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "04b328710050f1f162dedcd8604e1ad11573e105c92b35a70293c1a222544544", +"T3T1_cs_ethereum-test_definitions.py::test_external_token": "d13105a5efd846d2000cec08ef83e5f22930c6202cdb441caefb63b797dbd01f", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5165b6ee86833b8cc3f6d70e7507fd958cc33e127792a6167ae689825e25d5bd", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "e7903f7e6f6eb5e2ea57fdba108435dc61b8bce96776607c6757f5bfa7e5b306", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3aab5f568925bf774cdb647b60be55e3ebd8beb71cdc1d6ea88227f16822674f", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "11e5441152c3c20e81b1134a7050bb14a6c60a9b1782657350c2375f790dd1b5", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "03e599751d81ff9254adb81c629ab88db9cdee861af4ebc72f4a3d2169e05bc0", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "24d76d27032a960155520967928d08e67d6631b4edcd163e9f6d30985227ca93", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "c64f9942f834ae47c29a19b9cf4714921874185e8bfef9e0cccb254cab6db566", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1fc5880a9ce522af11921f2432ef6f18e9c19d2caca89fdceab74c5e23a189a3", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c1ae63ee5b5429c727ca91f077258ff3321fc65dbb58884df0b17256aad23781", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "8948ca2d7e24cba30b37d8e0b061fa423ddc6803819655c229106a2040bde584", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cac4cc6591db42a3e3dd721913527526b0bc6bb2629b20760fea80ba11463997", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "4cb7b8d161c5be44118ebd1f9a8ba46391f67b9fb9d6df4a1db10f187616f853", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "e1e60addf8c95fed0fac352fafb14a18aa879bc82b7f1043acb499c2c09d2792", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "0ef9a93e59ed2a256e9d40c08c527d86332e9d4bcf2013f309c9c94f7fe9d24c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "945292efe57a6623398a09d69565ea8aecad0f6c8229fef995af3ff73fea26de", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "1e924e7783553b9964f80cb482d695818e28c2c01c169dfaea7ac477da741fa4", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "81aaeea0eda019243abd82814d84dfc25bfa73e310c7c5830f8ba221c753dcb0", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e8fad8d371ee013d5e9c7e68c8e2809d1cf7929b7b7ebb033189bf005b66c68c", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "cb0e2f41dff8f1192004e9018d40555b9506ab3ea7b7dfdeb6d6bd0ec72945b1", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "4ac5becbb96358d996de02bf97bd3955b0b5b327430d3b7bd4515720fad2f6be", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "e24c4336f9f9515599acbe9d9bdd152b7102dca3275a3fc4b44d24a39a7bb1d3", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "78d155cf8412f500f727f0fa504169dc329cc54504469122529f47eb0d9875d5", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e299339019b124462bbd73d7da866cb2e52e785a3be88144025d4f29194f1e59", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "4ac5becbb96358d996de02bf97bd3955b0b5b327430d3b7bd4515720fad2f6be", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "4ac5becbb96358d996de02bf97bd3955b0b5b327430d3b7bd4515720fad2f6be", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "4ac5becbb96358d996de02bf97bd3955b0b5b327430d3b7bd4515720fad2f6be", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5ca32c64e444c8163df85f9b40b58d9233be96d71af98f3cbcc5f13fd84d237f", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5ad619d520c3c1f52b9101751d652f254ea33e5ab41bbe127e71f880bedf8815", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "38707673f02f9a4ec6ef730420c69a28e567bc6db133bbf73eff1bca67ed2d7b", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d1a06c0424926b8b4fe755587c749d554581825ab8c70c19c7414431ebf2ca3c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5bb12e23b7b3e1e5d704d2edb13572b03c05e6d38924233c34ea3672a1086ea9", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "889e570263e9b591cfc1dba655be6b9669873c3241a2b4ffc4409bdc51f5f29a", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "f68885e6d9b63f7a61519dd53e22bc7c48cdf71c618e0c3e3ea332e32790d827", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "35590e1ed3e8222b3483fc654f806621bb46a655057f6ce12571797d9a883b4c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "b73280c183d7ce00147ade5ab6299d89feff5e9c356c7f729d1cc5854247dcb1", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "8aff4157e85664bef5fdb00f30f5712452a311cf6e2715c53cfc75ef85516a4c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "d66e6020fcdbe01aa5403e3f04f5516631eab2c3b27364119999c4ca10d34fba", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "8dcf408e29080d748571226966d615ece8f91d373003f4c5e7b8e9cb43d0d3d4", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "7e7494e8e95a1d1ceda613e911943b4034448fea314afe8c132bf84e78e794d3", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "9d062569786c838a54626287d25e2fc1705cd8842ccf2ba6a0185a8725187cc1", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "3f148fdca5e4186df234a70d9318e61f8c7fc6fee77e114071b06e500ccb864e", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "cf2cde993a6d8c9878c8c304438edf18d9ba5406f7a56423818ea2ac941bf078", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c1fdef2e5c44eb1132a2a16ac8a3e48708759070ad3f4bf2495bc955fa2dacd5", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "9def7301642d2ae9c56eec85411c999388cbd16602611a2dc6f6c04802013bb3", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "d66e6020fcdbe01aa5403e3f04f5516631eab2c3b27364119999c4ca10d34fba", +"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "156508c682e80bbecfe331e2709b0382a40d651a8b4b7de8f73b85f1563d4e81", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "a51309d831ee3f56b7d50d3f542da0ba5c368937b0b7a3280591940787ae0e9f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "5c6a2359fc8e563d5dd41f4352b8c6ffd86cfed24658b452799b18a27f61a01a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c688ebe73d5592bc3c95b66876fc4d799e8ad9758c4a6782908dae019f6fea57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "5c6a2359fc8e563d5dd41f4352b8c6ffd86cfed24658b452799b18a27f61a01a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "595fc648a0a67c582582951c25a6f645190d1a0016870a304c3f38ecb5994fd4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "595fc648a0a67c582582951c25a6f645190d1a0016870a304c3f38ecb5994fd4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "935a0cd133078611e56ed8f3f895ac0f3f6c443e896583adc4b35e0acd379c1f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "09432d271167b5a68297f9c13a21ab7816865485e89df167db24b29489ac4070", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4bf16342ac037fe429fbcc4a21ae2bef9dc51fe6513a5774808a55086b06a064", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "4b4e33c2fc085022a88d7e4431ce87a2e8a8f969f9f40afa69f6f69faff723cf", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "ad4af2f6db98e9b99962b91921d42657598febd7e7e63913adadfc9140ccc8ab", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "844500987112c9d7ef8c21e0f68b536c9d4f4a07e0f7fd212a3162ee69912ea2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "dfeed41ea369d1d0e042558176bb3b43ce44a8a243956109469dcaeb09a4196e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "30303ea973b5684bdfcfff916d2bd0517f275477d937e0c08043a7b081713cdc", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "f0fca1249748a2df754550363e8677317e9216f22cec888991464859ec0d838e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7257d96c0b733167d0486de970b4b3bf81f5250e90834176a11ee74095698157", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "f0fca1249748a2df754550363e8677317e9216f22cec888991464859ec0d838e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a105b3bec40fee1ae0e55220b38aec6d400926eecde58b13ee3749d7e986652d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a105b3bec40fee1ae0e55220b38aec6d400926eecde58b13ee3749d7e986652d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "e45a6a1c6ab868da72342e575552ef97330f035c0dd39fd1afc126c436579be2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "3d2b41faed06df6a5a9bac70867a17139a3026d209ec38d2fce8f6099de2a02d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "1640a3a4c19ddc1e232a879d0ef3a44c8c7b6ef75f8a20bf26da0318d7f491ce", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "4b4e33c2fc085022a88d7e4431ce87a2e8a8f969f9f40afa69f6f69faff723cf", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "55fbc0cf8fda41cda9c6949b40663d7100fac94e0bb50575b683af4073f35c3d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "400c5e44e980125955e761e96a1f77cb2259b7dd800db0075a46e12a663a6167", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "72b1f10158ead8fc74d5b9bf60d1687236c4c22a1f18b77a1dc37d048fa9899d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "f0c260e971f8ffb6ffa9b1e879b2117666f855ccd39c72276517f8424b1c4c3f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "488f056dc77d51494b18b5737130c1038f80ae72469b6ac6879f84b296c6abd8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "582b3ffee34cd1b6c744b7982b464bd4b4eec0e72f00766d3553c6ad6f1f89ef", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "ad4af2f6db98e9b99962b91921d42657598febd7e7e63913adadfc9140ccc8ab", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "935a0cd133078611e56ed8f3f895ac0f3f6c443e896583adc4b35e0acd379c1f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "af8c30ca6a9fb3365dbd3435946aabcdb272c1b12943700ddd11f77d2672cd38", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4bf16342ac037fe429fbcc4a21ae2bef9dc51fe6513a5774808a55086b06a064", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "a0e4b5b9679a451dc03b4c4f656d2688b483c877fac980736230fea6a29166ac", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "40f67e0da4c478a74f0dd247d32eff60e48dffa639a34e2d73de6f8e9cecae66", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "ad4af2f6db98e9b99962b91921d42657598febd7e7e63913adadfc9140ccc8ab", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "55fbc0cf8fda41cda9c6949b40663d7100fac94e0bb50575b683af4073f35c3d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "e45a6a1c6ab868da72342e575552ef97330f035c0dd39fd1afc126c436579be2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "cfa90e10a5cbcaffd562e76965bea4ed5b8213be0ea5655d86ad9c6ff8ef0b68", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "1640a3a4c19ddc1e232a879d0ef3a44c8c7b6ef75f8a20bf26da0318d7f491ce", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "190310014ae168ec5bcddc707c43ef0013f67d66fd10510228d2d4f1f28c176f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "317e8965337e8af83bbf372ae756b7aa61b6822b24ca00367d582ff2caf4016d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "55fbc0cf8fda41cda9c6949b40663d7100fac94e0bb50575b683af4073f35c3d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "cd2fcbc87290fb45d95eaeaa7dd4f3316654d68d8ff779dd7856be20e155b94f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "cd2fcbc87290fb45d95eaeaa7dd4f3316654d68d8ff779dd7856be20e155b94f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "3394e7f6e140d6e17dd4892f9a51517d3f585bad89a63ee08d3e22ba7ced3ba2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7afc2f3ec27d677916e476e829342565441cb4472353c3c1efe79f0a9dc831eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "74eec3261fbe7471b7dbc6ee988abeeacdf37e45531073dce40e006d9ddc64d4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "74eec3261fbe7471b7dbc6ee988abeeacdf37e45531073dce40e006d9ddc64d4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "b22f121364853eb1f602e8c1f6f1f4e2f7da51fbff3a8b8852527b39202673ac", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "b22f121364853eb1f602e8c1f6f1f4e2f7da51fbff3a8b8852527b39202673ac", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "e76430ad0dcb0caf1890f32cf22482d6d6b2400f367689d70534662f440668ec", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "e76430ad0dcb0caf1890f32cf22482d6d6b2400f367689d70534662f440668ec", +"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "069622687f8433f8aff0f8e9b5a83da62ae813f83f3bfe5caa899b0a81345a7c", +"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "069622687f8433f8aff0f8e9b5a83da62ae813f83f3bfe5caa899b0a81345a7c", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "28f99231a92dd88b77957e2712f8458a32bdb494e2a504c2a8edd5be783cc85e", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "a93d454e3ddded371684fb00228103edbff9b435328ebe64b3c849071e70f811", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "06e7bd5654b9d721600ebe4d15aa930ea49f16743afc901b92383a538b28e1f9", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "16eaddb63ed5193cddcfd23cdc072bfae49d122accf8fb9a45412bdce4428277", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "00533eae4dc5df80acb9e45607ecf46bb225881b2c5723de7ec365ff647cdf67", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "1a9ad85245d85974b9d4633ce2ea88aa981bac90134a24809d9e277fbe1f5dc4", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "1b52b63b22f643ee93c16921567b6b303d629a47de1f0171814d188564ca4179", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "b95baa2b854fb27858c444399d14333af4847e5164f550f79dc361839fb7a0cf", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "1457d3c5403f1be99e9f9b41341d7f712d863e66567dcca0aa54f4a9edc6a30e", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "e7d6d4c22d59b863fe51253213dc9bb3268ceeef690773c1dd000e1cd3ac44fd", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "36d75ba7a014955876cca3c4d2d6fdb43e3f029cae4ea0c3bae3b28b7e55d690", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "42ef839fbc13d9e98854d4717e46a49418f4927e755fead7743de8fe4d834d0e", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "e18938b5a1325970ff57533073574839e60713a7bda293fcd25ab4516546aedb", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "2dde72cee60411eb2473c4d1df3651a041190339c23c9716c66bd21c31c2f918", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "08f086f9237c2165c5a6b60abfea322e74bb262fc528d29b4ed27e90877bd480", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "179d326dd4af252b856eb856c2dafa04f57dc218fc4c7febf0a6440462f46145", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "b23f3692fef100ec62b9b1fe7ada643dbc1ce2f0d7d38e460cb5cfabbd2dac83", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", +"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "432e11cdb82af75001cb4d3d6a51f2436e4b57940fb74c1f51dd6253bc8e443a", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "c2b5cc309ed2e49384bc751e73f7bd33413b07022addbf857718e418c1fcee23", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "8aa96559619fd13cbc8f4febfe6c734547e3dfa48074832686932ee4c92aac07", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "1c8aa07d99be942dc9cff86ef14d4d995611b336744ad42a0955cc3e59cf1846", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1ac30e50b5b92de55004620210c5e16fc43f00f8116506e9b4acaef5e175c4e6", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "320f40f519b5501f8024b6098d6f1bdf4747ec65bdbb10644bdeb5e96833be3e", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "6a2c26d38d3097aacca708246a10312092c6ef095d1629e1fc8947c785887c29", +"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "1c65ec1534c77f4435edcb7cd68efeca32852cdd8212bcf0dc46ef2b4f75ea2c", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "07c1181e5b504507c6afd355b243477cfa7892f76a8515fbbc6f3bc869abb2aa", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f86bb0bc6ba6c45265830e546991d76437f559082fa3c8bffb0c5db3ea112db9", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "3ab077a4f374029556a5bc8d91e3880a331dbb0455e1eac751b5b7e3b16463c7", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "09feff3c689cbb7349b94a3dbb60e51c4fac731374950d142c5131f2f5247ee7", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a7a68d5219e785c681dba938ba02dba60a864b6579a6fd271d5b0f9a505a4531", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "192d863223411a79fac16780f49f3049139d8e6fa05df31a44d02e0c3ca2645f", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "d60a5a84c4e57c1878fc5be919388091f09d09fd74676beb9c769d8889d5a18b", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "76bafad59fb2bf3e428fc4298b27112b86097ca59b583f44b9886cd086f71c64", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "fe6af8fdf9c648f7e275ea98453f878e0359b737b0e6b20f957ae3d0d7a66dd0", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "562e993855748b0dbb9f4bf2a64763af9cac5b50f8f1c1d652ae2a77dd8a9cac", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "24bf7c5f639b9cfaebca0f788fb3b479ff317c3c06a43fe174e8fdcedd054387", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "ff75720dae7fd929bae984f27ec64528f2bf881ab2af6115e62cd6cdb1f469bc", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "2b4b5ae5894ed4d381ecb40979bc2abe17f1376faa393323d04eb0e2708c2e8c", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d21ca690d1d091b382d1b0e389cf60c34d88a95dbd61e58bd99268f28cc0deae", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "c59171888520938eb557847a60184288e3e49d7a610d3656cd2f4ab1568fa283", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "192d863223411a79fac16780f49f3049139d8e6fa05df31a44d02e0c3ca2645f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "41447dd69d95c996259872b37495b7c9c4af9c63e071b93ee15bcdb13cab54b0", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1e5bcd17b922d8e6c8a7c4eaa84e3db099555eef9a1550ea1c16202d14ae6e97", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "11ba30a651389cb48ec22d1650508f61d9298f6bbc1bd8a8a113375afebcd21f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "82c74040acb08d346097efd8238f4fd82f45b40d0d74f0ea4bc5e3dede86e094", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7a53366acd203319a14a53739f1462a3ea0a30832467552c423f46d3c406f86c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8138e55214779592dfe0b735b2c321a654f4b71635d920162945077b04e3cff2", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9cc6f136d00d30a6ab65398c677b6f36683c74a1c8aba9e9417708cd2a71baba", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "debd219426fdd83206c33c6988c6a4c1d51248a05dd57ab167069452ee05328f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e70ea2080a999963d12b091013873e478d98223d48fb9472e5d8a1e1860d38dd", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f8354c3002e039d3b62118c1f18acd50d164165e8f58881ec7c0d6354a39e639", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f25df139132da6fd8c24178448dfe8d2a0832e9f3f86c1ec606102ac38414aed", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "54493c0b3fd690e08a7b6506a2e61aec3ec0d3abae72238962e2f91c566f50fc", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f2d8dc743220d22ff525db458acb3dbdb8c82f35415e14d0f75636fe1cbb5ab8", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "0dd60afc14ec2dd5b51b0f4190c9dec00ff3177895e746437dbcde5cfbc51013", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9690d3c0a17eff7e96a4cfce400b73d37d0f7d8984aaf17999f69b031350f833", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2fcded69a84d607d3b05bf7db4253150822b9b96bba2942bb5d620a7fd95b815", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "1b62ec47725beaa67f2cf9f5d608040ef04d65a338d697e98e9c6e290b3c36c4", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b4e012959897b1546ae866d6fe6eaf736bf2b13326f3272c2355a6e612fefdae", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9245b6a5f4b6b5e19099beaf943d050cbedc0325d443e27b4e30bedddc973bb8", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "118d8db778beb9ee95bcb0bca3fc51006e91cdc40e94c4c8bffd40f30a3a910c", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "11c1fde05f8be79f65ed59ddee9195285ef6010b06f7d27b01957f8de85e84b6", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "dd4df84e3461e3b69f43f297d13ed257cdcedd4b687498b2e9ebeb5cc17cac90", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "731b4bd7e96280d5b9219c6677b3e5fcaa78b93af83229bed30af92564b007f4", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ad014313b2b71d7c194a831f34403d80913b501ff0c5fc11658d98fc36e14c34", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "ea0abed9b327ad383724ea7934892563e494c16ba82ca07674ff7f4d8a258322", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ee475fc5df249a3f44c2cb75ba9fe97838e2717d442ed2a400e1bf5eaab56930", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "043e10c4cbec62dcd6a39e9a341c5a1cb77dafd8c9dcceb66ebb8a417dcae9d5", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "00e50a709c3868c7ae30026df1f186058fc056a6e416c1a0c9dc1485506fb9f6", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0a5bde85595077f2a2ccdbf97a35d826e9365d66eafb31d92ed2bc0f1637896c", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eaf5558e596ab44324b1a6e77cea8f74f9fef9e30e0d1766550977eecce43b70", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f0033c01f51636f12fcc33962b4aee6f3a6e17224ca6248e505a036cc818b4c1", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1bbda7f5e61a663f70f730d74059a7c0899bcc318ed2ff5ef92bf22468700a3e", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a5026efcec9794281e64827d24e8972726179afa8fa8cb1cf39118a19632710e", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "cb06505bdab7d6e795be8fa2727ac2786494c28fd5fabdd8880275b89403ead8", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "38db83ce99d0aaaa857ca8452a35c038d368b0b537588332d64b0b0750ee7ae6", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ea69b78390bb71b0fcfd1bcc75004add4f3ac84a208f01dc027ec970c4858600", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "fcc37be5c2a33786470d40e74c906862ea120c1b944bc80e3134fa91bf22f569", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "875b0ff86f66ef8657326b11d7ab67551f786b100cb479ce20e28bcdc4b35670", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "03035c6e904724b4598abf1075f297ff90c10a24a906df1cf56a9f993c7de83a", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "d7fd608f4ec24d4b199872f8d91cc4435f7b1cf6f63060cb3242c8c45667709b", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "f8bf5b2cd701b27c82da8c3d1d6b1ba9f265e9f1bc0c1a58bb923c0fa0c64d02", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "03035c6e904724b4598abf1075f297ff90c10a24a906df1cf56a9f993c7de83a", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d7fd608f4ec24d4b199872f8d91cc4435f7b1cf6f63060cb3242c8c45667709b", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "f8bf5b2cd701b27c82da8c3d1d6b1ba9f265e9f1bc0c1a58bb923c0fa0c64d02", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "57f3b32c5acdd8ad285d0b6951e09cba4f80aa7385a0acd1ddba38d75ad8acb7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3b29b5ac8b44af2558a10765ccf66ee53ad72289bc2a779da5b04a82935820a0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "b5462572de9b16427f6108174abf6ec460f59e816b83733834ea349414903125", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "f18f9aaeb65c0f494345004a10ed0187129a66a9b61289ceede64683c18746f7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "90189fafca5c22d5c76a10f1fcc917f87111989b6bf2d591de496b8fab22259a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "0ce04b693f9eb8ff8e1e58580b0e084309708e4fc2752a93bae1a3500738db68", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "9696a0f80947ac2ffc76d7fd8dd19c7ee57ecb96ec95142eab4b1f9c041c82f9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "cec6b75da6dd1069a9d0e97146f2fd487346037c4bd7e7ee05398c359f584f7f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "557507fc7b06e55f99b17fa293a17413d7e6f57395a524aa24642b5091b23742", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "e8fc64446fe0ba2311ef14fe5c52ec3ab6246591fb60bbfe175b673475d2db9f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "7442a11e25280f9cc516de4d760b4bd377b5a30f07da3359a729508fb31d1f23", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "f220c794966e338ddcf503b260b529f02ac72e1dbe694ec10217ee71b53b7eab", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "53595d777b5f7f9f87a5db0c6dff920aba5ebd56135d87b496bbad7df25043c4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "41e6d2f931c3740b7d941d7f488640b463723e3cd2f00c62ef7f9accb3a3923f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "0d679f88b31f83b7b4b08b272549fb37a195f38b9ddacd2002daf2d387c0f791", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c3d8d7ce1ab9ffe7baf7944e5ae48d067dd82437dbe77afddf58a1186422f75f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "04fa2b222ce2f08b69069f4e9e88b9b10d3d606bac12e901bcfbdcc716522aa8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "3a5f1ee6050fe601194b97304434847e10f93fa625714ca4103e75e651d38294", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "5fb4a2ca4cf139a1351b4b151a6a84d3e1752397f1dd6bd84e77d78d66039e83", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "3746d31a0f6bb42f6f5b0e76e383d2920f2f67f6d858898b1b859a6ad427e9e2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f8f2b8adbd51cf0138d69ff53cd7a10b01c024445fd77d01a6b7dcc9dc53d9b1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f8f2b8adbd51cf0138d69ff53cd7a10b01c024445fd77d01a6b7dcc9dc53d9b1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "ba833a0be04c6f8ccd14b419dac08e3bed3049ef3afcbff398184e9c1c146eea", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "e2d96c317afd0793b5049d187f17e51c874798814a5e1121f5d29a5bbdf8e69d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "4d30213951c6042e084ecbb2097d0158cb0e5757f5f8db8e68c844d54bb3ae9a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "50a03cd671fd5f4a9b72903d28ce3bea309ba8438ae4b199f1aca4bc6c95fd1b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "1985eb36c02424537fc8df8e0105f810ff74688d4dcaca0c948fd0c882b9933f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "1bb4795a4a71bb876f668ba03818bdbc737eb337e89931d6a3d32d4fbfda83cf", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4f2e382d33c532d52d71f4635e6235912f37211c0572d41d6735bd840b1878da", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "d85e7401f79c88ba604be65ba03329d23da329d1165302d89c39a5fa0cf4e337", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "83abea963f633198b9b2499541001887d9b4088570efa0eb408166048ad010f5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "f85c6bfad0350c73d540093dcff9439367fe8552b9723e52512724147cd9a88d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "165da96a8d7dff8e931250ce05204537f37baa3875e12f53a51410d323afb2e0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "78a96dcb5df3b0c0aad50573a37e8dd5381e7ba9ecfb80c7e0545496b542c0ae", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "621f980baf91881cb39ad3340a02a581d5d3c3910bba4ca4c6237b1ed8281c11", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "527144e3c67a510a7900c4e62d439c8c12b47ec18919df8a847ab4397b59d829", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "d461234b6ce24cea43a2a680f135d03e2f3ac6da2812ec9d7f94f4bf919363f6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "0b1a2c63e6debb1702ff8a06eef8cfe1750e298df2c401612fcc07e979aff675", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "fbd37a56bb02f2ccf76873fed7ee00158d146531fe61f4828cee0f68e8939764", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "a0c4961bfcdd1b6938cc384b6bcc2dd358087fa37aa4dda816cd5032f77f860e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "24e7cae678654259c7fb475e2697343273f3acfab6b96cab2b1bed1fe2bceb0a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "02e7e89f9049dd7031d5fe9683ae0824c53a0e593ab6124cd494adafaebd088f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "9305f4faeb6c10dd13ca1f98b09e24b586cc19fda6e211bc5c386547f4765b60", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "307b004f248aff3de49bb3d080c4cf1e5b7425cc3e2e09da66046b4370b6880e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "6b60051c39d097ad0154b5edf2e7f079fd3d0afe97de8f35d118be0397be7e6d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "c3ad5681cfbd10960554e57b56175a12b78d861a74449e177f5586906a64fd2e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "79b8e9dd5f510acb07d1200d3b0a240620f3c0e8fcc12995a24ca94d09a396f2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b57616b4fc11e3e7113eae21235582dde6585884b39ee45e7b21e1f0514b63d5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "13887e37c52456a651c4130ae2c3a4060af49e44aaa794421d5da92beba11a47", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "82e409990a46bcfbca762e4e55ef9fad08a14f7087d838a85f734f0f753d28ab", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "f26137300bedef572f87ac9e4d32c4aa79ca3a6264668f84b51f5375d72cbc0d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "12b89ef3f5dc6d9417a28c647926abf72d4eaaf1d7cd0e6fb8925346e25dbae3", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "655bde7ee3e4aa5e6c718bda3aaa79445e4d45ed80060de7b792b42ec8b0fba0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "3f31b1555a9303e98187bf9bc879c1e183b8db67e2e6a1a3f52c0d4d9a9ed520", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "8a5795627db6bf226271e660b91edbd2b7dbfd4be9b364b0c9de8ad9883196a4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "6a04bd1fb3c06296cb5b4cc3361d2197918ca2c8951355f89f48577b944423a5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "a0143f14ebd0a5b4237d3117002d74c856def9ed8c201bae317ddebfa9e05c3c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "fb0c5f034e48b37121eb2bc176b7ae04bb024bad8b717cb925672bd8d87abb97", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "30707a95a96881e6f3afebaefa5269429eb3f9ac37240ba7c53be8d03f35067e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "4d30213951c6042e084ecbb2097d0158cb0e5757f5f8db8e68c844d54bb3ae9a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "412beaa2dd3e20ba0716094f191247169bc60616e31033c078e758466e871179", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "1e5cbd2eb4d15b93a87083d289b191e211ca0bd0fd7a72eb62341e6750e9de04", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "66331a2f71802bd8d311da3e4a212e3b23330c3897b128452e8f30234c861aab", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "5bb4e01557b407b078f63d4fbdfaba092709ed111b6889e008936c97f4ea7ff1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "e443f9d6d164bfe48038e31565589021fd3560a2a03dab33ffb4faddef009778", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "66623fa8cf92161b5b0c6f2df641d2c68682905c63978f165d97dcdcb4f48787", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "5dae200a13968de52c7bf523ca23efe4ad99345a72f45f67f9a3c58356c11fa8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "41025f3436050999303705a73c5a152fd30a7d36cb2c628e0f984442e3b35019", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "5934eddf55bc7f1d6b541cf7a318e502a7e194d2b3980feb03891c1e8879df9e", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "b6200b7a894da83ff9e07b5dc3e2ae19ae7b72ab589dad9bbf39e855c1b432a8", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "14292836c1ba52e1cc9326fbe8e9615927b3837084115a99cf517efe4f5399fb", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "f5a748d77ccb66956a6cca963907b23c3a9658c8de65c9a003be6c4bade48e1c", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "b6af9b2a5e5dfbc7f6679f12c7b0aa8ae3b3341b137cd7284b8687ca6d841e10", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "f29fc6c6ef1964a94700cb521687129407881a76a6a6aa17bc51e1afd97829e7", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "7ae46c34b39debf1cf1e897f6e8e0f8c79d3312450fa33ceba694dc1c6b05015", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "0c7e0df28083b9753614abef16b6cabe83f88218046cf33593b4c10086069885", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "41998d15e17bfac5ce28b8ef1ea13d7ec9d008b654742fcd2bd5b84f1c34c063", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "662cba75b415095a024933171394a4d10c8fe6e6892629a8cda5e81534d0c5b7", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d0d85cd1c9a40d05f67d4429026a0b7906589063e919fce36dcd39ac0c259bff", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "033999360d98ef4c85c13ed197314b726c754a54e6417cc4d936e64c3ccb2c95", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3d17bf9855218ab5e50bcfc69b86ce501826a04868796cfbbc6e817df224e4af", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "78390505b4f990c0625f31403ee549a477a47bcc41a9f614c143e62d7cd47dbd", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "af1d5b0be6c4eeb4199b50322a0533ba7a0d16447bb6ba6b3e5abc299f571b16", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3e8de5e3b713a1020e529f51e073364e277b3b5342448ab5234c19edda408740", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "179aa0426ca7c4a18059896ea3f1b4defe28be8aba5ca2d8ae7bcde3f8eb638b", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "ed4c5135b2c4f2564c72cb6900cfca18d65feffa4b18440f8584d4fd4b5e3d4e", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a225b0a876559e809c8a38e926613e913e298abfde8b920715bcd02a7228a9d5", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "52724dc963d77ba22e586b08f10d210bc29a01514aa3f92436d7c9dd40ff2913", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "b26b7ffbbc75387c4ae5cd587ce756e744317dd178325084ed2e3d72c729428c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "f0bb2f709706152116d749264969b5e1176ba6f3cba4ae9da8577aaeda353205", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "15bda7df5cdef255259249cbc6cfdc0656d4a1c2aed4f4ae98d49bd5ca50e15f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "bab24ceb69526ed7ba1290f7ca2ebc82a7a7b51685c2890fff1e0e61c3109959", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "b35a274b564e01cb898002bdff2f919c275b333f8a5a91d223fbeb0423c91419", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "4dbfc04f822dee484c6e456e9f0dc5fd14be655246c10ea0ff23918f7b1acf0e", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "77d4023ea2f42faefc46709cec53737f14f7a9cae79554f4ce2cb218c8fbf79f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "4001d906276d52823f97df9d651ed28a20a5075b6bf964a99b01edea7c425b8a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "a8aa2785e38e57ff731fb99335ef3577b7f0bbc663fa86e75da85aca2a827f5a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "5cca183e787ba132a49f56d39126eac0ec58b07da8b41a77fd2ccc02c8d737a6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "8a150ebd45a024bbdc336f61fec35df4d4e1768ce15e91409a6e84309a6131d3", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "63f1c49dc129767b7663e30ed7b4f798ee531fb83e96522fb947811003732ff8", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "00172f3b3f36543c80e1e5a8341fabd96f121c963a1f8c26d5bba01a6d3a983d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "e25d1522c76dd107ac0d8d6b0c9e813be6149fa8f30da8ff87cfd878a0b22a63", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "079d8eb8ab191324c6d2390550bd0e3b9a8c456390f974bc8567848ba7aaf1af", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "292ccaf4fb8476a76dd4dce575487b1edae8413a6203ede31ca76d3563736e41", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e3e19961f735901c8b33306bcf3447606bb092de100169c4d6930b7b3a2c3726", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4d0ef133760b68e9a80c127b44d2c3639b69fead0556147ccdb4b27c25fc110d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "caa31d43dce5efcfa180664e0b864a44728321829d99953d00a6c9d90982ee88", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "2da296588c74b8aa9fff7ba2fc38f72119d903773e95ad4b8700f740f6e66147", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "fd5708c17e206c9516a74df824f17d62b9869f095021b1da711bc0f5c8f1a818", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "ea8fe7e8d09f0771d31019d8a7818d1befeb40b5f38259eef90ff5cb42b2d492", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "e7ecbfb0ce2042687803b609b103346964978af98f45bde3b30447b4d4fe2a1c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "c463b10fb6c93fe2bbbb3f1ece4bcc49fe97e875cdf27cc3cb373eee332e0d21", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "58d23b3eb0529fac7273571f16be0926ba77375acf62483c3e868b33832f3704", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "59830a8c75adef87342b297796075220c1e892282190e2c3d44b6c4428407774", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "8110a7de25b38737d6a564ca593c5b8a4b125df0302c49fe6c5e3ef445c8f22b", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "d70f042d165a9853dd00dcd8b61b6934c8d36ab8ad63adb7600ea75890ef2f5b", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "1c4ab859b04d7c07558c7cda76c57cd1ab3cbd69aaa174be0f71f02662f7310a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0bdaba536b82d2c0359d9f2d8ab06087c9fc509c42144ef12fa644e2591af457", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4d0ef133760b68e9a80c127b44d2c3639b69fead0556147ccdb4b27c25fc110d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "0f605c720fa2a85a01ea44bbc2566a00105ee2557c67c25a968a6b3c15717342", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "6bde5d2d3d4bd8ddd5521dc4ca1e7d13a6aaa975fbf3c4d58902e5f13099d407", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c2efea6024b871be0dcce583f9a5706b82e2908b44121e5d486c5e8c27ef20eb", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "3c6ee3265229b3bfa4e73ce0898d0a11b9888fb4f76df330d2196830abecfcb6", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "75fb04c0015be566dab8a316613cba17bfaa62f63c7c74cbb84ae032a4baa55d", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "5bd4c9c54378b0953fab1f110965e89f5fd415a96e81ab2009510686f87ee26a", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "80be60ec4ab7a33c0a4ace92dca99f5ba2c27e1fe7a276c28de9173129015b91", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "412113454eae3c8c7257be3d1db39a1b78d17dd9df6fa9b7133819a620520f8a", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "479a677371c6f5a52fbc6cb23fc0e7cc79933869ceaeef31fb3c8a90c7439b11", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "6514bc4f9508de5f109990b1fe8c70ad54f818aa115bdb32728275fd1f210509", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "f84a2a4ae484f986fb978a9ed5aac4c91e23a9a0b437e72b87c0afd48e7732ad", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "f84a2a4ae484f986fb978a9ed5aac4c91e23a9a0b437e72b87c0afd48e7732ad", +"T3T1_cs_test_basic.py::test_capabilities": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_basic.py::test_device_id_different": "83c9b9445dbefdccd9d6909da2674fc2543354726d27383885194ac9e5fd847a", +"T3T1_cs_test_basic.py::test_device_id_same": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_basic.py::test_features": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_basic.py::test_ping": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_busy_state.py::test_busy_expiry": "b961a157bf87b4877d2dc41d57166ae1e7ca2aaa92d16b452df2bc5f92cee8b6", +"T3T1_cs_test_busy_state.py::test_busy_state": "a921886ce8abb645543bac48bf24c03c3ab50cb4df0f2e817b8c66b2932274f5", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "bc8a060fc3d9f329fed537734eb47a5429b257c1f3750ef08c90a10673b089c7", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "bc8a060fc3d9f329fed537734eb47a5429b257c1f3750ef08c90a10673b089c7", +"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "f45aaa4ff02315d353b2a53d1950cf180b57a93c43359a11507a02da90fd9c00", +"T3T1_cs_test_debuglink.py::test_softlock_instability": "6d2ad78e0e3c0d47549f7813df308480dc0b7baa8f5f20714ab2b0806211ddbc", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "b42e2594ebc5e759f8a865c4076df9635f88bd62cc28eef8d04a1b33f2945ec5", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_language.py::test_error_invalid_data_hash": "fe83badd4990fae983036a19365bf60c49bc38d5ee385d91ee6e5141896162fe", +"T3T1_cs_test_language.py::test_error_invalid_data_length": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", +"T3T1_cs_test_language.py::test_error_invalid_header_magic": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", +"T3T1_cs_test_language.py::test_error_invalid_signature": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", +"T3T1_cs_test_language.py::test_error_too_long": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", +"T3T1_cs_test_language.py::test_error_version_mismatch": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", +"T3T1_cs_test_language.py::test_full_language_change[cs]": "5aef7a3790af9dd9cbd3d569dff958c4054e965cb80cb7e883f7ef7389d587bc", +"T3T1_cs_test_language.py::test_full_language_change[de]": "7362e06dd24a0b9fac12746e3246b835fe0c625ebdc887592ac47b689f465168", +"T3T1_cs_test_language.py::test_full_language_change[en]": "6ab60ea482e612cbb4089f708d016dfb3d6571b3fefacd3905cd3ff2252a4866", +"T3T1_cs_test_language.py::test_full_language_change[es]": "73090805e865bdaca5efebd09bd856e524a6b8f4a0763f99399a1307c56271ad", +"T3T1_cs_test_language.py::test_full_language_change[fr]": "bdf1d20563f1a70fe72541e9bc2c0af5c2b9dc39ea2169ea41fce2e412f68593", +"T3T1_cs_test_language.py::test_header_trailing_data": "f080e50103c0381f21182c6c5c8e97f2b3fff49d88f2a188b9e4370af55f7444", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "f1e8bb1579ad13be2e9979110e4620e44ae4ea7811e9fae177bd92d4f7c46524", +"T3T1_cs_test_language.py::test_reject_update": "abea1f55cced8fd2109ee1d2c9c377f57c29bb24a04fa60047fbd174b7ed7a7a", +"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "4d59f5d577f3fb77213c3706ef7423bd75e4024082005d2a0d97419e32a092b9", +"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "4d59f5d577f3fb77213c3706ef7423bd75e4024082005d2a0d97419e32a092b9", +"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "a0227f73edc27402e7546cdc060035e2eb7e20fddf59f931c2b53c9404233054", +"T3T1_cs_test_language.py::test_switch_from_english[None]": "b3afa9d16149665639be02b9eb1bab5a4d5333798da482e7eefd031d2bec5332", +"T3T1_cs_test_language.py::test_switch_from_english[True]": "b3afa9d16149665639be02b9eb1bab5a4d5333798da482e7eefd031d2bec5332", +"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "4f456ad42b58f08cf15db4c8a45bb3e5da7b90151746a4921ef5351c5bc15f6f", +"T3T1_cs_test_language.py::test_switch_language": "455e1080e0d3ab1efc74636886268b774ecf00cc7012b80b9555ccebee97bdde", +"T3T1_cs_test_language.py::test_translations_renders_on_screen": "8f8116f195d3a47f8316d266aa02d75a3e761713533e56eb654684d4a0863ab1", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "4808517cd80b7335553ae5abbfb8334ee86e02d3cfee15d815f53601ad615729", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "a6c35373a8d6fa70e3cfeb2a15561975d5715123ef463f0baa3093f675e56fdc", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "94c9865e246a418cfa4d0d4881941916a9cdf35f01ff6fd56fb4e3937a2f56b7", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "84efc418df7d2157beb9d36b848ea5a63cd6d50dd8eef49cdf6c4727bdac973c", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "7739a48ae0fae18e2a0536a73929b83c788947ba6413b22fdb422141e15b95fe", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "ec9ea6fc079d058721b888d20ed7ca116b2a630e5355b0b549176b2058408fb7", +"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0f067c08d19faa7a2cab4b8b13f462c422074933889483aa142242d85c67f50e", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "d32954ae684f5ada2120acca14ae6362654d004867ab24cd8723cd39f303b781", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "d175183860fc6edf70323e945c38379969fb70e99a2f9074eaedf2eef1805c1b", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "fd857bc40669242b75e05c75efc3347fbab56aad466ac9a0cdf9ee3d91909547", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "9175bdfe48b5ccfb46e6d7409eff5f14e804cc2f558915c120d92b77f7fb891a", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "929571ec29c12b485a7b6b0850dbeae1e5a73fafe8182000c41b16e02374adc0", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "b8c326621a96ee3c6c1202f7df234b96dc793e5214801b1f1f6a826896f8d88e", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "a72cd9780a6ae04ba299b764c6f0e75adb0b078c2e529f960ada5aac6fefb7c2", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "500b0226d83f0c970ea53e7f50ff3b30ab0359d5a45e791aaf1b39cb501cbeef", +"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "81b5d33e9a6fe460018bbd0e6ab69fee249ca3fee16e867709458d682b79c9dc", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "9800a661f1b1d4e50f7c88cd4fb0e530c86d4bef3ee5ef15e189e148b97b2871", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "875d471bc5dc91636b57e50b4e20354eb78fb05e42e1df4f4ccbb48cb69948db", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3be5405c3769cead05f54045f42c7768735e94562287507a3b465daa468b5543", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "498d23eb99c9cbd576a15fe8b11005aeb262f9135c53f2d581b80a5bb9a49b7f", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c6a75460389a75789efa565a9be0cdbd86c5c0ffb4eb7ba28ddc2673e1da53d0", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "60e28f4d3b0c5622e288be6d5cd5d6430af4579abeadcc69f8786fdbcd807c11", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "ec61a74cac5a33fff00fa1d889f9452dc7f952ea762b6347c93e89eea016dd10", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "9657c5d37c5e64b7df523a9ca6d3bb037ed4ccc438aec29b135c09588aa97bc9", +"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "eacb05582775f9c7f97ef3c46f5b5db8dc5463c1227cf400456d7bf6b7dc48f7", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "cc8589bd4aab00934c3472437ce4298365e93f7d9061c99d4dac823e60300c15", +"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "4e990a507dcca5e13aed685e903cccd2a09cedc0c0034962df1330821110561e", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "792d15636d9ffa37a7cc5a6a1199aacda162a6710d87370a0ea05781cf9ae2e9", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "abfd8f38388d921607603f6ca87416bedf181af5f1952cd551ac81d931e3980e", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "6546ae92035f40ec94ddf44b98b59f8d86ee8a64fa91ffe57931f73d637f4c35", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "abfd8f38388d921607603f6ca87416bedf181af5f1952cd551ac81d931e3980e", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "abfd8f38388d921607603f6ca87416bedf181af5f1952cd551ac81d931e3980e", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "9d095fc9a2822bc030143848ab5cf0ddcb6e3e7e23fa6c12a08b134257afe39d", +"T3T1_cs_test_msg_ping.py::test_ping": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "d1f491f2ac96149345cdfd48828e6eae8a26eee98211414b0ba2a75576a03ace", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "a61dc072219ad7d54751b105b202c47cfca3fd9cf5a2db7eafe2d2761204d846", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "0bda66b18737b2806c53ee166e11e0be0cf871931345af98614cee163dee6a26", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "3564bfe36f1a8b8fe150fa53aff5dd4955b3374c21cc572df7332d8a2bdb9d2e", +"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "83c9b9445dbefdccd9d6909da2674fc2543354726d27383885194ac9e5fd847a", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e42496dfd20798a6e02d662f1ea78f0be3f18c3708d71665baafae025bcfdbec", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e42496dfd20798a6e02d662f1ea78f0be3f18c3708d71665baafae025bcfdbec", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b867033a86326b265e39430e9279dd5ab4a86e8a02934821cea72d6f57df6eac", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b867033a86326b265e39430e9279dd5ab4a86e8a02934821cea72d6f57df6eac", +"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b867033a86326b265e39430e9279dd5ab4a86e8a02934821cea72d6f57df6eac", +"T3T1_cs_test_pin.py::test_correct_pin": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "b62f2d3a86440053f42eee2ee78d08045e429668c5a3ccdd5e6c327c8082ecac", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "22aacc7def9d0000b1fbdd0adde99ef6d45abc718ee2b7a20a791b1cc928c1fb", +"T3T1_cs_test_pin.py::test_no_protection": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "ea97cf18270703a637994f059e9307e7bc2e3df87e50d33692776910276bfa39", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "0205e78ca705227f220714edb74621014bde7e9ab542ea7dbd7e1d4c87bfd4a3", +"T3T1_cs_test_protection_levels.py::test_get_address": "f29f72373febef3ef04867897bffac3cfabcafed4a37720bfac9d101644bf6c2", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "d702c843001eeb6ffb4562e8ba69e83475d30a83ce97a84d10f36225420b339a", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "f29f72373febef3ef04867897bffac3cfabcafed4a37720bfac9d101644bf6c2", +"T3T1_cs_test_protection_levels.py::test_initialize": "70686d584e0e000e342b32eb2b505821e846d82eadb695ef65a8f3e81168fe39", +"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "0d88eddcb20880075fe872c857bb22fb09a1e779a2b527159e77c83143c74c4a", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "82e050d672d725010cc95bca01a0d8eff60664c87c2abe93c39a1ac26b9eb982", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "b88d04c206f26442a7e85c4e454cdeeb4dd6269ff6847f9b03e45453a00a7b7c", +"T3T1_cs_test_protection_levels.py::test_ping": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", +"T3T1_cs_test_protection_levels.py::test_sign_message": "81a27df186052493a17cdb622a4168fb1ae2aa6f1bc9aa1d5b04687184451d3c", +"T3T1_cs_test_protection_levels.py::test_signtx": "e87eee8d55e13b4c64be6079e7097604c07fa6a17d255a5944137d3aad640809", +"T3T1_cs_test_protection_levels.py::test_unlocked": "43aa96efe8f9dd0a61fe9b112da7d7961e91204b1fcdf67fc5ebd244145fd0d3", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "af974d745fe38ebcf16215fb5debb7828f5297fc5fbb8d74c9edaa807631a2b1", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "f7e8dca79def3a360b848f01ba3cf5b66f04c06ce912b402edd71fd88edd2a08", +"T3T1_cs_test_sdcard.py::test_sd_format": "1c1ed02f51f8b1090267507e7c9caa3fa1fbb316b5f5b1b3df0c64845506c8ad", +"T3T1_cs_test_sdcard.py::test_sd_no_format": "966323b40e8590a2ea727edc4dbb38639d1ec86677ea0caa4bd4c23b97942fe4", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "9791f3d9d719e18409cb2019bc4732c23095bc648be5af3cfa94e238cafda09a", +"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_session.py::test_clear_session": "2d482f3af0153ebed989bfae5a47bb1c5094ce7e19e40a6d514e360ad1dc2eb7", +"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_session.py::test_derive_cardano_running_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_session.py::test_end_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_session.py::test_end_session_only_current": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_session.py::test_session_recycling": "b867033a86326b265e39430e9279dd5ab4a86e8a02934821cea72d6f57df6eac", +"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "08eead06ceea58891599b180233490b10391eabbca3192b4a95bc0cdd004b7b6", +"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "f2dd055d770f92f7872ec469b64a983f68f7c139daa4e2f9c08437244b12bf21", +"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "89a72f66f3e489f7747e31505da822fddb356db307d3f3cca6d37fbbd8b7f515", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "38e60009a69e573b8b754e3c2c1f11029407ce73a8df3fce32b9ab7ab8925eda", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "043d9511cd993f3f35ee68b5e884b29f58895653a62e956861b58ce2ec7e52f0", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "746d3b6421546ad21f182725110389c9ab5c95a085be5aaffc23e5eac53d0bf1", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "0d88eddcb20880075fe872c857bb22fb09a1e779a2b527159e77c83143c74c4a", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "e6c7cb2d6504c089d436802917f542be8a9970589b7db4b6a83db6a4b0474c60", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0b851eaaf3b06c01195ae7bd78c2352e9ba0a530f08a72f3ed72472bb0d5f77d", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "fea5ad0b66b64cd5a85f999bdf7f921749831eab5dc35755a25d19949a414296", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c9f61cd6856c364cd280d778cbf65a28f61fe565a7e6f5627edea4b6ca6187e6", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "225d7ac01e06adb8ac83656219f219e8464f2cc727e229dde6725770f6065fcf", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "d1033642d2515446b172c6ca65ebd31c1ee359d682daec53593ad46ae589f619", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "31163128a1c33070d34a71ff645551de6ab2a0920b8eace4c5f87e9bc0647dc0", +"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "207b08e6fedaca36ce60d2bfe2fbba550f5fcd1de622bfaa7628843f8347680c", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "3b04f0d531ae0d867794dbed01e374bbd8f2a3a254fdc06efab04720baafce3e", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b9a389bb159c7c3e678d106cc5b13dcc275e4eb17cee6a94dd18bc222cf86cc0", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "f4d5d96032d69b3e69f8cf70c33d81162ebc6440b0125c62dc698c158d933d8e", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "79b695c217a68c216aa54943277525c1670a93c20b8449aee6b4c967dd9cbb9c", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "dd66f5e3cc5270877b56eb1489181c036eec6d6cc918a13f817294a053064483", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "dfb18268cf506c5fefe0f2aca4b26de823bf7690b39a9ae89aacd370c4f5eeef", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "c78d8d891d3ce5278c4f1bc2d8e18d275d6fc22a07306531a03f5a132a273bf6", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "f881525327607a9a7e5a90f63d6d5eecb4b5964ba66c99ec143e8a1a365cdca8", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "e2c5112fb612c60c306d19730d55db412988e5f8193a4b40906e56289ab8c5dd", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "5b5daa22589a1c2d73edf8b1cf47deb70932bec988bd086188cbaa2d5d337a1c", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "46773971ea2a2f06d0fbc7b347f443cfa29c0de93f014673a2233cc91ca58ef5", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "3f82c72421083d8da59230beabb9c6aef505a9a1fe167bbbbb615628ffc6886e", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "c4cf5d4699fda5abbac1db552d1ee719744f40daf57a198c5882164fb8bcbbc4", +"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "bffeb179d995eeca19ac8b8f5e2c590a62a7d41ccb40890cb43101009c8375f3", +"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "169293bedd99f00433a1d3f19a68ba531711105aaa8926d10522c301653c6684", +"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "718656f9556552f85b1e3e75cd4dc0afb7bf65531eb45b8d9c25ccff27396392", +"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "d7f85fcbb53e6474cf66f9045c736a55591254953028a8f34e290a10b880980f", +"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", +"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "fba4d52ab7b1bf8f72ea59c217b501df478b00390305b4ef9094e6f612db0b73", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "6a14fd64e958889b1537e1aa6a865408c9f5935662af88173070196702a135ff", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "60b549cd41fe4627f16d2d83abb43f0e4ad033f1f62749cc1b744f91fd3b75aa", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "289090710b253f0a1102d683edc50f982055579590ce1d673e8d6a067007917f", +"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "f730227d22380bebf471f654c3b10214d6297ebf44dec2774b4d319dcf5db050", +"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "565acf768239c88014be5f11f420efe405894fe492902df20617398d6c11ff05", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "4691628455bd302703cd9b99dba8d243b43e97d5545951c516fbd36c03b89148", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "376a33ea7018cc6b8f2ee0f602d3ec69334f8cc1457f0b8e0cb5004bed6b6452", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "48712f0c499ef0a54d300e805ab784fe7492cc74f5d5ccaa4bbf0610eb7bf6ce", +"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "234296bebcd75f015d4dc038627d5e46f782ee48bf4518352c645c00340359b6", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "ab89cadb95aa2dbbdd859c77891d7376b85147bdf56a4e42be05019a3c8083be", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e61fed20971f9d3363224cd34e72efec3420c5a83c3074edab4a33c244dda3d0", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "2b264f6f3423bcefbf5b4b8249cfcd2200db06ca48f88554a7ad66f7f53f98de", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "ab89cadb95aa2dbbdd859c77891d7376b85147bdf56a4e42be05019a3c8083be", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e61fed20971f9d3363224cd34e72efec3420c5a83c3074edab4a33c244dda3d0", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "2b264f6f3423bcefbf5b4b8249cfcd2200db06ca48f88554a7ad66f7f53f98de", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "817923ffea77e056a6c2d5db222e8256b9cc28a10e444029703abbc16cad433e", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "f5abcf65372bce65b4d047b74398d140cd82b9edf9497d9fd50751cd3644f352", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7967a1b84bfac8fbf39506924de4fd1f8552c87bcf679d7ff4841f2a2382d1a1", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5063ab9522f26fbbb5a69c3eb710be837db8e7ec33d0c6e2e06f718c30d62d5f", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "7bfced53564a92196d3aef9153dc43c5031c58ed6b8e9431caebe549012d5d42", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "7bfced53564a92196d3aef9153dc43c5031c58ed6b8e9431caebe549012d5d42", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ee8af4b6d37407970da75a20bc770e4f611b6657e78d54a96e5b59b439837566", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a70bdcf1c4be1d40f17cb232bda9e887ddafbed3e17781fbd6f4538e7c45e44e", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "652692b465fa0700ee4f961536c91a7bb979a2189e86895bc07d988cff02f4da", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "48c823501d28513b9881671a4f278bbaab27a2a9ff899d8e13a3b03b8f93808b", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "48c823501d28513b9881671a4f278bbaab27a2a9ff899d8e13a3b03b8f93808b", +"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "34b00202f627e8fcad8e73f1e78ad43f0f3ff11f62dd734d285e54b2290778f6", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "34b00202f627e8fcad8e73f1e78ad43f0f3ff11f62dd734d285e54b2290778f6", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "fff19698003f7605aa26732fdd3190ecf13b15fb45160cd7fe78cb974a363d75", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "5aa9a184f440afa87debb4b7468f990bcfe54c4f615d566e05f342d2e2cbd54a", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "250b2ed70520f2ebc05873ea673fd77a1953eec2ff87a0296eee8e049c7765a6", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "27df3edfd628fe16b1af57b816d350b6830269c26d77af1cb7b7ffbc1a320257", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "fb3da3caa6efab9d6db436df17528f7c53dc7e4db2decb167cd3d8138c0352dd", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b0ce93f800b3c1d3438b1d18f58243323851d69f799e26c2e9d5f8f2acd876a8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "dddc885fe32ba573f49a7ff83cf7f6b7cbf47b6dd41ce324fdcfe0b1b63fcbaf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "e7fa0c775dca94de429c60600d2e7728ca9022932868c3b5c418e2ff05563bfd", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "6c629696cd41c9e96659db4c9f0975faa49026994306c890d94f22b27231b7ef", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "5937ca08096d9a379a6c7d62a148cd4ce3cdead53eb6d77ef39024ad2edb87bb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "ef7ae6992ed29ce6e0e8416de0c0077b4dd4191ebea71196cfdecf1ca6c75f30", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "0ed99e7b4d98b8521ddf5443730c0cb17f5ac9e32b00101b80352af5734a9b90", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0a108300ac845befdb8ce63de55b854828c783a34a204075c41858f67d2a91bc", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "b54bbf769315d418251500ca9e0c5bca0ea10ad302a3d89fa309591ad5f19dc4", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "0b8fe4835d01f5918448d1c2439cb11024f34bdca3cf145f2b82f85c02ace883", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "73fb15b12afc783d2cbda9648101e314dc52d8176983ee403431ab3b4e8377d6", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "65e2823277ff32867b675d6ea8b9a6d53175674c93908d47cff510e0f4043d2f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2a5d489795775f77a793579933fe1cb47d2f72b69707fa08a3425270c9a890d8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f605dd1c1d0fbb8d286c9eb0162bd8dfe0bd15f3ba53f22e69fe35d37cbcf42d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "1f6f9b6ce2c6a3b3c3ddbe2191d068db4f9a92c38093fce624056fd84cc4f456", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "e8c7e07d0e921be8ee1535a85afe55ef85901a3b5cc47e22174c2f932d579375", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "ecc8145348e518e6e58b65609ccdc9095711f848a8a05f477a20c26e9317c6c2", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "4449021721d9476ae99b7ef9120299e9908e5532b5e7f674ff68bd7656b0171b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "b0ce93f800b3c1d3438b1d18f58243323851d69f799e26c2e9d5f8f2acd876a8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "dddc885fe32ba573f49a7ff83cf7f6b7cbf47b6dd41ce324fdcfe0b1b63fcbaf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "e7fa0c775dca94de429c60600d2e7728ca9022932868c3b5c418e2ff05563bfd", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "6c629696cd41c9e96659db4c9f0975faa49026994306c890d94f22b27231b7ef", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "5937ca08096d9a379a6c7d62a148cd4ce3cdead53eb6d77ef39024ad2edb87bb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "ef7ae6992ed29ce6e0e8416de0c0077b4dd4191ebea71196cfdecf1ca6c75f30", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "0ed99e7b4d98b8521ddf5443730c0cb17f5ac9e32b00101b80352af5734a9b90", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "0a108300ac845befdb8ce63de55b854828c783a34a204075c41858f67d2a91bc", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "b54bbf769315d418251500ca9e0c5bca0ea10ad302a3d89fa309591ad5f19dc4", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "0b8fe4835d01f5918448d1c2439cb11024f34bdca3cf145f2b82f85c02ace883", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "73fb15b12afc783d2cbda9648101e314dc52d8176983ee403431ab3b4e8377d6", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "65e2823277ff32867b675d6ea8b9a6d53175674c93908d47cff510e0f4043d2f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2a5d489795775f77a793579933fe1cb47d2f72b69707fa08a3425270c9a890d8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f605dd1c1d0fbb8d286c9eb0162bd8dfe0bd15f3ba53f22e69fe35d37cbcf42d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "1f6f9b6ce2c6a3b3c3ddbe2191d068db4f9a92c38093fce624056fd84cc4f456", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e8c7e07d0e921be8ee1535a85afe55ef85901a3b5cc47e22174c2f932d579375", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "ecc8145348e518e6e58b65609ccdc9095711f848a8a05f477a20c26e9317c6c2", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4449021721d9476ae99b7ef9120299e9908e5532b5e7f674ff68bd7656b0171b", +"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "c0001273aeb537e63b76c4725c55ff56a76d1142ffcf364d6381386e899b9aba", +"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "25201e31c2b0c528b83f71c039704e1dc6e41452f1784b3915079a3489f9afc3", +"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_bch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "cd46b86ad66a18e374a4ae6ca28838b09a300ea15c07aeb7ec073ea1bd180a02", +"T3T1_de_bitcoin-test_getaddress.py::test_btc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_crw": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_elements": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_grs": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "3e0cb6e562d680087f134c203c5db38986ce72933a574963332690d3afb3ad69", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "4f240107ae6a6297b46aaf28d42f39a2d2dafe301246c2e474d23795f1ddd6d4", +"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "7df0da8ef77b522ba3de7997dfbf5fec088f96fe4b0665d6ffa7dcfdcab053f3", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "b8fb66c5c13b9c7f9db3ab935d8314e5a08f002845d0c16b488b57b0d7b6a6ba", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "0f03fcc52a649eb4cbc7ccf9c32e2563eff40b588d2ace29b549405071da8773", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "2c54e145fd32a15e206d4c5af9d887a1ee125969fde6c80db8c81742df2200de", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "89d4a058c88e1a10f80fb234f3ab66c99b3f47465eac8cf752dcacc9f1a710d8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "98609b6bb17e5504a216fd8ddc592c7df77ce43d9b9dfb0dea6c6a1efcb212e3", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "9fd75a78453f68960e698f1f441496b8a81b9cc87b9ad80a09eda28289521aa9", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a75cb49e096527439a5042552bbd789a0abf65c6c55b34e190eb3146a9da012f", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "8bb0e93cd750baa3a3b1f29f3ff716a6d0666e438372e97ca677ce26522871a7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "4cbf9f4541e5d069e4993a23789f5307126994c4fe45bc0726e992c06d1525b3", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "6bd8c098d0bc8aa9d22de60db1b93c6c5370dd343412280b9c9fed3e55766e16", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "d5d4a8e6651c79e67f2470d708e5e6c7049542eec5f29930bd439815b6942e8a", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "7ffe2fa340662b73cfa4e6ae2ec9ac30b63ebcb905016623301eb9e97b9cfedc", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "2421118b56dd5c3770660774df8894f04ea6a4c9cdc8a3f0d69f77b17841a5c3", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "eb7f3673f718dc3563bffe0b771cbc4aa1c1722d6b025dcd3bb05fd8c64afdbf", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "f6128514ed7ffdbe4d47240658cc242d51607deeb7acb46db09b7aaeac4a39b8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "e833f6f8607d0420a3c586e5ed70d4a73869f694eb935a0dfb76476233a6d2a0", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "c986bf5e923e5a969690a124505589be36d237c291cf470c414f2a6638b47749", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "991b139be7ba9f2ae7bf8afdacb3084ffcecd26fe818ac1541fa8bb095501add", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "625aed4c30cab01fcbdab0a61cb7188ae0b41b0be9a8df0d3fe6111a0d096c4d", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "07acf1e1658ba39e8872fffac0f6ea934c7376692551c662caa810944c5b7069", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "b94faad8af19082d0cb0a09fcdacdf3a8bb627893a8dc6ca4e5cf70cae074f36", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "7fe366d88a5a77be53d1952d4705cdc28db06605528aea7e90a8d911fc997d2c", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "644ef41381f2b6da1446240a474c74ffe3bf59c476599a93879d2e66d822fd9d", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1e6c2ee1bbb56290a8a2bedeac17600e5a7ce5ddc7a81df129f65e14d069ce2f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1e6c2ee1bbb56290a8a2bedeac17600e5a7ce5ddc7a81df129f65e14d069ce2f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "d90593e75f436111851e8af1dc2c2100a16518600c6d6c8c461de5c71f092866", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "5ea89929221f7aa074001dc40cc346acfab795e0473de4de61dd90a7b217958b", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1f325fa1afc1056cadf6fc45f888d69d53d30a1af6cf933c7b96de3e2b6ab43e", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "c62bea1f5c9d777c4f5c4ab11b2f85126151332db5b4a020e12903468b289b86", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "0139979bd75446aad8304219fac32f33fdecd4bad34d27e3e017367329a4d6ae", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ecccad50a18f0f2dfe5675ba51cd72509c410ff676d452d0f0b7541262c4f965", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "dfb8c69166b8723e59086720da1c73e511591ff879170d3a3958be07037ebde3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "0dcf2a71c40d3b5240c8e474531771457732e3a71569f87b170b21aa1b70e43f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "3e1483355a6a38f2317eaf8993a3939fc009fe5afa6800c9b7afd6c9023bcfbb", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "639142ee8bda009c76d6d4c1a9a89c8bbd73f686802f97300c6e09b03a05e13f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "cc63935c5f16b830a8703d37003d5daefb1d0175a8249bc228c5a094f6c99f2f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "efdd756ea64c220cd6fe08aba1d0d5d96558c099f6008a96664f8b3486eb6de5", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "748c609529760c05f94c183ba5b4b8d23518f637036976413d69b910177c1b9d", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "fd5a1fb56bf32a0e26788953969cb227e4501f29af95f1721d946470534f3476", +"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "dddc885fe32ba573f49a7ff83cf7f6b7cbf47b6dd41ce324fdcfe0b1b63fcbaf", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "cd607ad0eb8a95c1b0e029ff66d31d63aed0bb28cf20083053ee5c39051cdc7e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "1accabad208e1d6d7ef13db6b01d0f15e1fe3aed54e6f911db0436499ad85335", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "de701ac7dd8727aad7b7d267ef90cc280f7ed485f8b7be91eb9c274d5e451302", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "ef04b2427489b099e20fb0072ed14be24d71f8c4b0e69d0cf0f5348834a2ff2c", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "0635dc81e4e8f847b32ea0c9ca5d03435a37b53539b145be107966177b4a6245", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "c6e65e0dedf811c860e34f01fdc5a18cf62128b416a6a26f58ae5472aaacbc4e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "06934817b3a65ee50a68c81d81757de12b56e72d3fd8878f54047049d37970a2", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "059b1859e95d74ee418dcd06b5836127315f3f18e45edc020aec0e723cc0a319", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "73fb15b12afc783d2cbda9648101e314dc52d8176983ee403431ab3b4e8377d6", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "d25b1ab410a3154aaf85dfc94d93f891cd1554f1bbcb0ff93b1f4f3cb521d50e", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_grs.py::test_legacy": "5fcba672d3e7a04b0cf6cfb798542740ffe9bd6da027409f86bbf893ea8a0f53", +"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "1ae00ccf520558be5f3ba84dd4d854a029762af1e06407b47e1cb75f5077cef8", +"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "9d506553aa338ee0e9590255c99f30df6ed4cf2459f90dd59a0b4b50b0a4d830", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "18d574de8b2063eb3b0e00e0c2f5a6e52d3ec63b484d4925eb58c976718d04d6", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "aa2517bf552a6e1d95199263558d7d21d4689f36612e3d4f7924808881c56a98", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "b95d13860173b2269f784ef850626f8de42375abd457e0e731b1cb317e1ed7c3", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "0e1ecadd9fe0722a109893b6d45fbfe3b98b40153a73ededf235f0c45322c2a8", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "547e8becd7fece2514b7f26e49bb9f2e097b04f6b32076a179577d4203ed53c3", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "08183cb7ba6ec52bebaf4fa07dc73334da4278ad76844a91173b480220f136be", +"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "78d7fa663a1bc4d16992a93d6968fa54d42b3939d22a3a02669e23f516130338", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "dd5b62a8e9483b0ef621266b0a169c0fba909f30ba01aa63b6583321834f7253", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "eee16974a17911ad936db1a8ad297b7423b2f3e21ce2aa5658d2465b2e37446d", +"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "be21dae07979675e5ea8cbc2884712a76e044db88504ce9936b7478678e3326a", +"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "ca714ac0ddef2206632afebcb99768b27ba56176946b1d5fca9faeaf0a083f0c", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "8d2f85507438ebcf98cef428b065d89ca678e8f077925dd8891ca5d0d47c0b52", +"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "6f4927f7d1a255e6fdc87b5dc80435c8c5cf44ac0dc09a46fc55b2b331a5a13d", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "a7cda240db38b0c9fc19fe2fe0b5629fedfe63d6d40e6fc8c0b69727b90153f8", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2767368b1cd230d430f1463e915017dc9c69e776ad02d90456440332755ccdb5", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "877cfa77784a1ad3b7d4a2a557f529314d5d244b741483c3b506b16869533188", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "56df56faa2d5823c352fa9079ebf0f8bfa3b395d5af39e0b22c419d5ef15f67e", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8706c38d5624055b56da6fd269103d3a08904247824bccc8d30ac6217ce8641f", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "bf88e8d37de838dcfe3425a969c0358b92ad662fa4229587822839bb170dc2ed", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "e3061e2c4bf5c359a5750e32993bdfcdf2a68a24460e59a0c04754a81cf95779", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "e595d5a8993ce0f08ecec52305fa1ae446bdbbb2c4450924abd933d38c907827", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "ca38c7155bd906152270a61039bf77b9bd414a78c541675bea6773e9932e111a", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fab331caccf15dea0e2baf76ac7ca7f53100674caae2da6e8a1db486d80577e7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "2713a720a3de01702c95119e8a8a0afbc9c030e35fde02ac77a6e2b0b5280061", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "17987e0fb8a822b890b3376b1629fa8363cc5c5be5382e90ed4a5b935b77b447", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d31d922a2096f0ca0f7d0c71b02893e641fbaea220cbad4b2b580edff974e392", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "230c41f3c0b65d0e7ab5a5b11834aeac394980db3a54748757323f33c64a27d7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f410635ca493e405dec05706d28b4aab2a97ba55676368195fd25bbe36d0d003", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "33a82da6470e9987f1b47f2a0710286e689f901403d032938c26182b823decae", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "151f26eb200afe40ef5d46332ec81f585b4fc27639cf821f7975abaf37e0c5e9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "76c47d320b8308d52c6f543b11b72364702cb68d382dae2f5e78674a531d0c16", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "3ee1c01beae42f055c0198646f93b7bd830477efd4548e922fb866af73b0765d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "3308875622ce6685dc277669237ba5a60427a88e9babd916e5f679b38c857942", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "07e03930c5a9b0627e5e8ba68531bd98deaa37dbbf17ae77ad70feef2121a0c7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "9e834350692818d40dd04a006fdb5a6c63dda194e3becb88051d69f9654cef64", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "4793f14ea20c3d744f2fe02bef70ec6e76a33e02e99c202508ad4ddfcd997b2c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "2549041ff2c9999ab6b20ef92aca49b8056e795a0cc4990c3af38abed867e079", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "21c6c43bf37aa8f9a1d372d98c1ac4e487ff06023a9c4e109fdfd63cea4cfa25", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "dac169ef455f07e9bcaf588d2baa5e0857f06e162b5b1eb12e52b7dd84de5611", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "fd1eb3d204264b190a07f9ddd460896fe641a0a73155e624ec7cd84a3bfe81ca", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "0f39d309c1eea1b313865824ea2196988d0b7f57c57e85d18471293f0ca2932e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "e2bd035481309dfe3f341198e5f1e142fb2168cebc6b8f88aafe11516079a2d1", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "de2a2ec66cbcc8349c38b8f3a24342718236dea37ce2d8783db5c33fc0c49b18", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "16089c1ee6e337f7d3d6a18cbf44c8fe0a88903bb3bad4e74bfc09a143e8a57b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "96ad823a5a9b8a3ee6cef4a2263ef5672d91ec80472641e17bdb7625c15665c4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6c5fedac1d51d33594daaf375950af5c0b3a5b1f0dd807c271cd0b2cbd179d63", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "9e579e6467c70bb66edbbb7b20803bbad804abd2cae7398303706a89430482d2", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "0113e0e46e898898647d37f067af095dce1f31645aed173b50f7a1272b98517b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "b6ed6f963b793f88a513435e7f5134de032ff5e1496058e4158ffe45d053d584", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "cb8e40b5a9d06c0fc01e4e19e1851e2bb7fc97b8cc1115fa1804d2bf6a88dd71", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "0113e0e46e898898647d37f067af095dce1f31645aed173b50f7a1272b98517b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "0113e0e46e898898647d37f067af095dce1f31645aed173b50f7a1272b98517b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "0113e0e46e898898647d37f067af095dce1f31645aed173b50f7a1272b98517b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "1c24574d2030832e382ccc52af916a0d80bff5ca82514d9f5cab0aaebe7015ce", +"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "c0cceb2bce767134f0c6235711000d4405a0d850a332a025de5f0e2a338e4c8a", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "603f1b8c5cb9472a7a5e661c7f6c1435844813cf27235508d0b737520c617493", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "85491f8a7e27e0c6675971234ee5d3ddc9fba06624616bebd73f29e71d5600bc", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "cd808a708d9a125b53dbc2b5003eda1998a63f9e6f6be90c707369a7862de98f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "cd808a708d9a125b53dbc2b5003eda1998a63f9e6f6be90c707369a7862de98f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "733e4342d618d5e418bc3bc6bebb2eb87c3ee0407567c01de5befcf9d720a7c6", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "dfd9c66ba98621d0fca3f7f012ac1f56ec9a65dbba39f80f52527606bbec6b74", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "3fe1c53bb91f88bd6a56a713197bc5082c7c3d0c3c238ddbcedb84b7287a2b71", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "233c1af8da51c6451e1cc0df92174de06fd245f1a425a9c964c3bcf8c31cb368", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "2c08e6d5f4c5392995eae01219a701fb960d96b01d516a9b35a5492b362b039d", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "93b85810cc48f181c5b87c056b99cc2ba08642b17b8bfc5e4140338ceec66346", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "93b85810cc48f181c5b87c056b99cc2ba08642b17b8bfc5e4140338ceec66346", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "e7ce6093c18b02689bda4ed85d7342360a562685c8cc0482f58eef8001bb9192", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "744fec27a243094ec8b55218a15f7fe848b00717668edeee491e99a250a8cb28", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "bfbf99113ff1df3a6a30a8742b3720a66e785717c010f79e976feeae400d74ec", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "bfbf99113ff1df3a6a30a8742b3720a66e785717c010f79e976feeae400d74ec", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "bbde9faf9ba5938b456024b0aefed28debffe744300caac0355c6e7bceaeb820", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "0861e235e4ba2b1b77cb93c23bbb95090e7cbfebf39a52d1b152c5f46982cf47", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "afc9b186b7c603d684330d82bd02238890fc8495fab7e9743217045e5c72652b", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "afc9b186b7c603d684330d82bd02238890fc8495fab7e9743217045e5c72652b", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "208e7db0b008753f60993d344bbc88fcf286ea5b80f888081ce8429b787c614c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "37cab831fe2807bf347f4687fefbe416d2da0375b55cca2d4e119634a8c91823", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "2470b7fcb34afbecc71082657a579085678dd94292bc7bc51c9450d657defe95", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "2470b7fcb34afbecc71082657a579085678dd94292bc7bc51c9450d657defe95", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "2a643e08833d2efac6e41fdcaf425cc55a3cb6545bdf103d8622eb0fbb30ae04", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "136b7495efec9af5a4ba41e2c13a1a834f406ce021676e7ebcf4fba20f5d82fc", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "0e87eddcb4edca9c565775f26c0dedd0b6e30d36dbaacffdc27488c04e8d6a84", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "bcd72da8a992bd0e038aed7788b0c6ef25f1130255ccdbe7282b4c12ed10860c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "3b9eb655a0378d2124abd3c34daa2c0ce59cab5f3f81251d539432d06c5603cd", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "5bd8bbdc7596628b9e8bfae6ad5f05241f8b9491df242c897157d58feb0b1798", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "5bd8bbdc7596628b9e8bfae6ad5f05241f8b9491df242c897157d58feb0b1798", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "57d712db03f0160917a21e6125d4b8152311e70359b355c773d303c212a4f2a3", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "b296d1e7997e029c8bae7a04fbfeaebaddb080e13c168b80dabb6f16033ec33c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "793e20898771f51e8556a6e96e065572874bd2b04e896b91ca4bde60bd92ef78", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "793e20898771f51e8556a6e96e065572874bd2b04e896b91ca4bde60bd92ef78", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "ad9b7ef3120fd31fc80984ad91ecc658569d1358bf4f367eb183d0e04cd4c745", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "2b4eb4e20bff4f965403d2e9e460e4606c0662be99e5ba85d8d6fb1ad3c36d94", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "98775adba31a027ba7c16505f04e566b679b4f8584397195fc3ba2e4adb51a7e", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "98775adba31a027ba7c16505f04e566b679b4f8584397195fc3ba2e4adb51a7e", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "d38c9fe1b7a718793636f776f4c322b28314a5c2c3ff1d12b5dbff7a232a021c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "1bff3837d8ffd82313581384ff561a3f02c7d840aac8c3d72988919140e0f7e6", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "84fa90175f075c1ac4b18f4f1813d7ce3881909d82c44487058f93ea0d03d65a", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "f9e6d3e52df9dca6d1da4ffc831fd270dd0337e2ab5086c5eb33b32359e5f526", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "863b988059cfdab8ba74aba8d1363b32bb3946d0d3ff5e0fecdc9dd91d277146", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "33480e1fd3e9f8a37f600a54ebd0757b2ba95d614b623712c90dd2227c5a5485", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "4601cd2b39bb82ebe7b0a6d1940ff11242e8f0d91e79c2a3e6e92ab2bd1fff8f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "87ae843db49632b85e8b2cc09d1801015c615299c59a9baf8b6d9438ff0ff757", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "93c1eb6142bb8e1503aa5981021fd8a57c73c8f9a9bfa0d4ff90c3ccf05f7242", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "97d449f19810f2d34202997c2aaa58353dfbf200cafc017dde26cb1ed8367482", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "19e859c6846165c53e660f7a74414ba8f124299ab2d6fb56ea87fbf477c415d2", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "34269d0790248cefdb18e1edd0a8f9b0603c87afedba208e103780b5e4bf9586", +"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "cce13d67b51b17f86617ee320d0d9d872ad06a17ebf47de6bb064c2dba24498f", +"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "cce13d67b51b17f86617ee320d0d9d872ad06a17ebf47de6bb064c2dba24498f", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "e69e8ae9acc1eb8641d6726008578e5c80ff6184916b326d060b483e9c67fe0f", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "d8f86b7b3bda36c75647f64f22f912e6bd9adbc61588063920d471ff7b9fa586", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx.py::test_information": "b91d357e61f9946c3dd9e62bcef98216c1985957794007ba7343f3f03ce8c11b", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "0d944ec4cb4680c0e86328c2ef319916eec0d4eac3212dfecd0037b80e0fb878", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "8adaa791f20d658ef342f3eacc042bfa7d5c152bebdabf2c47d736ef3c418c1a", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d2295706197063cf8692d6b9de40c7ede345c2f5e8ef7d837b4b75468c7ca32c", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "c1d51a9614a5b195913714b4c7e43dc77451bab930d162fd79951aa8f59a0e03", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "523de5ea9b8cce2e2ee52098aa1ba4472cb83d3893b457c293f476c3276621ed", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "c1d51a9614a5b195913714b4c7e43dc77451bab930d162fd79951aa8f59a0e03", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "523de5ea9b8cce2e2ee52098aa1ba4472cb83d3893b457c293f476c3276621ed", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "8560f1df3c17afe36cc1d30049fff30ebe5940937070d841d3411cf2f2ba1071", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "a7ce03a901cce8496b6a8cde3379254bfbbfa1c41d09076f1c6765dbaab8fd04", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "1b3cb9edd0fbf743b261dbabc88da0c10670d7c51841525cff395a3b7f7c70bc", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "aa0b79675e8a795c79460b89d1a72c3fa9a6472dba446533e26ab34b7b037b00", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "e5218ac2b7e11356060069961d606eade9fcb6b259c4bb0a7461a8c623d7835c", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "d09659febc6fe0aa330ad2cd9c1bbca5ab4a6815ecd4c547340cd8cae3c3b38a", +"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "90b796df0ff3c42afbf1576fe8dcdb6d9fbe0ed76a0859ccd2b3f8b7ce73ce2c", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "5fa15bfdcbe0295136d0fc0480a389644f0f78ac1d75529888496155c1f3fec2", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "6aab01132230fd752b4ec0cdb3c6d7bd72988d728830ad3dc43a67aa1819ac99", +"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "e27dc3b4b6e3ddd269f840144981fb0251862fdf59f9f830a501103f323a0fec", +"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "08456a03245fd4f8f9233c38b4cf966877bcf9c6d5e33057df4881031c05870e", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "98c51737bd43509a743db9202e09c073db96f6339c8898c072512543c97dbd02", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "bb87adec27632cded3a0fb7c0215477a6ab9717d82bdc62c7dc98bf5f7f1d673", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "392cb5d3baaa7b9b6e194e4aa240df00999bd63196b19d66cb0333750855a559", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "cce13d67b51b17f86617ee320d0d9d872ad06a17ebf47de6bb064c2dba24498f", +"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "83100d4dd572c022961f242b7e786d1c51e04c71fca93679acce2c64498b9bbc", +"T3T1_de_bitcoin-test_signtx.py::test_two_two": "9e1486eaca72784750792afe57289d71ec01bbd2b284b965beac0e42a2d0d4b3", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "90b796df0ff3c42afbf1576fe8dcdb6d9fbe0ed76a0859ccd2b3f8b7ce73ce2c", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "bfaddb3730d9c418237d4cae324c77ed2986e7f519fff3a6deaed211a3e62ad1", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "4c3bae249f649128dcfdc00ac071511402f02c8ac7cf1957a011aae887624aac", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "893a4de516066a9e2fad7e3a44dfab8810d8bc46a0ae472517ea3a1d53e8824a", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "90b796df0ff3c42afbf1576fe8dcdb6d9fbe0ed76a0859ccd2b3f8b7ce73ce2c", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "406efddc2c740673f0020c0cc4f190ce8e6a48602fb3fe50c1c294da564fdaa3", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "8357af62cc0d08f1b1b5f2317906b688287b523c8158e1ba0928cd3bd5fb48ad", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "5b2bc1e3c8c3de3cdcbc7bd25e4c492c1630147ce213e616f343b81e8c5c6809", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "78981d19f5484466234173d2e5306d89a5a7c8b4e8b6f70b8c04e57f3bfcd474", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "406efddc2c740673f0020c0cc4f190ce8e6a48602fb3fe50c1c294da564fdaa3", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d9e8cfb267a0ff2d7327cfea0962b0476e6c2e5ac5b3d68dfeb8f41b87226344", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "11e2e37664c31de867b8f58af85310c18dc9566b5b7c53f3d77a0150783b2d6c", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "750533d2a1336221d65266239c8ef8faa99ab345dac548c05574311e5301fc13", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "42b44909e35f7d5c8a5380c3bee971ef275eb1b217be84e4f0e11380d4f81fa0", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "2c8d6b6474217dc547f5748978189667ccd0209167c6bc54f66ae370225b6819", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "2dae682788a2fc4843873244e69ca0d74b2706c61ae2d7643fa7a0d91a5396a2", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "1a44ed624bac732bf0269d491d29f6170871a5c8134b47f734e349ea7d020358", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "1a0f6ae2384a4899ed3c2a17c27fbcd9809b765b5bffa86f4b116acd5c4db8f3", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5e22f356b5cc680b8faa1f84ee8058552978b5fb8302c01a1b8354d0829d8824", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "351e0760108fbe575129e519f73f72c85dc4df232c4aa3bc850fa93b434afa91", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "680e02457d0f933def23a7d6d25cdb4bf0b374e51c4317b9e595bcd256567a90", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "27ca302cc702d91f69ed68117703eb3df274fc67cbb6f65a0e1572585e5194ce", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "d51855376ccb6239a118f2c1c83d60043f367ba57b0b054a0831de728d166a9f", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "1a796c2a9b3de62a58a597775d9fab4fa828514c4829602c9e3b41714ea73aa1", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d51855376ccb6239a118f2c1c83d60043f367ba57b0b054a0831de728d166a9f", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "1a796c2a9b3de62a58a597775d9fab4fa828514c4829602c9e3b41714ea73aa1", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3ed6ffbdd0188eab05ac9c30a748b0b1211e839dcd97151acdc491ba8dc6935c", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "e2142d488a44d9439c09c3ce206784f05f0b7bd288067cc55fff7fc57ce0f00b", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "b668724cc5f1b9d5cea8423e7be112a48730ec5f31ad806b02bb3d5ae075cb61", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "a7bb02713627f2b81d6a901ec399b299d4af0c665d6468910b1ac2e7fb935ff0", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "d48678796bc773d205ff4d9acbe2806a9a10c5b124647940b71785a2ced63783", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b2ebfdfd0511a823893d529bc971381e64beb0be1bb274a0dfa28b664704494e", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "be2c0e07d1b4e389ee73f00aae6dd00accb022ba52b6a41dd0de62a5a9e815dd", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "861d1426b763a3b6ab397d5b560ca04d6e2b4e5a55c4d3065bb22902456374bb", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "eb93ede2288fedf8ec7d6ee80707434f56910dc32ae5659c88161cadf94cd77f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "eb93ede2288fedf8ec7d6ee80707434f56910dc32ae5659c88161cadf94cd77f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "eb93ede2288fedf8ec7d6ee80707434f56910dc32ae5659c88161cadf94cd77f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "eb93ede2288fedf8ec7d6ee80707434f56910dc32ae5659c88161cadf94cd77f", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "b1db4627be2ad9c84869c7196d258a48d6d98ee70a4af8decd5212eb96b6a089", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "b1db4627be2ad9c84869c7196d258a48d6d98ee70a4af8decd5212eb96b6a089", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "b1db4627be2ad9c84869c7196d258a48d6d98ee70a4af8decd5212eb96b6a089", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b1db4627be2ad9c84869c7196d258a48d6d98ee70a4af8decd5212eb96b6a089", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "06871439cc6a1b01e0e457f03a725a6c37516cc00af57bc29ec2b998508e0cf3", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "c897d920bbc4353d9c32193a7713e0a1bb27d225d012c404f3eea02901854fcf", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "906af6f1db48a9fc28644bb5bd91e29b724d2754d6ab6a190ad1f509f6544fbb", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "906af6f1db48a9fc28644bb5bd91e29b724d2754d6ab6a190ad1f509f6544fbb", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "e9c4b64dea1e8e75a332c673ce00f585185405b24d217f0706a91be03f42110e", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "f090411605f08b50b514e078b6cc972be7992a35ab50a3f9822c6498ea07f4cf", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "dc7f8df0c99d9af78c76cb81fd5e526444aaa72a2c6b025cc95a5148668db9d7", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "e9c4b64dea1e8e75a332c673ce00f585185405b24d217f0706a91be03f42110e", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6be3fc0713a1edddae76fcd36bc1fc28abc61fca3eb50923808894ffc6efdeb1", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "ec1b0c41380c7d5d4598df23462d49e502042397d3687aa474d4b4a2aae304e7", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "478fada984fd36932ffee0ad5390f962145bd927d3506b3f5b64043beb82f3d3", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "65c75829465ac5d5341566255bc1901c5229ef62b6b2da6cc46405cbe4ed48c7", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "97d2f9fec595ad41210348a5f2cdee8fb302a4f4e78eb3a6a23af084a0a7bbba", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "22c14b2c9eb365a633d946d01ea1205358b8a98b9d5cb0607efacd59dc92a16a", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "3988ae35c95657aa119678091cf4d6893e1286bdb2e567b3cb340ca3f15544a9", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "319e48a1ac9ca9928c42435ad1a008f8d69bf2573f8e1123ff53fe7ccec0485a", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e44eef4e7ac8828feed95921324e7b6304e86b641d1033e73f95579e1ac72735", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b456678f1e3d94c916748b5ae067b78b041fd529e37691c30e3651fcb204be84", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ae99f1d18a13ad505962b8f42c3817bb4acec14b25416ecdc9df8c460445f7c1", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "1d28de0943634a00df7e7888912e8c2c146daf8e5de7e237b1422a1b7f8c3808", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "eb59bd8f0d64fec82eecf53c19b636121cb12d880fffd7c7d185a3a552abfa85", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "74f3976dc0598b7082564ff7e9af0dec4b06b8c364c3a5bdf15198a68effc3a6", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "50f3876d99cee216a3a79b53260eb302f4921fd57c464316b6c82431dab59302", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "25c9cb85a2d08fd41a234a66b57ca4749b675b90b24da3c51782a58b27c25598", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "406efddc2c740673f0020c0cc4f190ce8e6a48602fb3fe50c1c294da564fdaa3", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "54e7c3f468b08889fa614d1c6718472960c2657ef7c70094ea440b349d79ce6b", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "8ee5b22f8cf6ca5a7bd163c1ed38415b30e84ff81791e8cc1d8bf3e7ff64a694", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "c9b9b40c93c0e3eadebc84290c0396d0bc809f2fbf066cb0a2e13e27bb8c85d0", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "d8f3c307f739c20673955dbb4f8b8f7826e6e678ebadedf6e98c228a4b62d4b4", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "32c6e33461b001456b99fc6231071632df16f6f70240ebc5e1afce4322e86507", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "5e8634be38d8b13336b943c1757a054447c3c9a693d42f3c8c20e2ce0caade1b", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "48e9b1c25872bb0fbfdf529c445ba5b769f2ba209740ecb809ff94382f9430ab", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "4717f4d60361e850d343f52899c2c6da9beef5471d20def50f55f86bfe793134", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "189d1cf212f93120f3562904ed90a13a5e256f8666ad729bd20309d39b16be2b", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "03ac47c40083d572f4b95d89dadf3fd624e589ed68d44edc3dcad4d146ea4680", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "66a6845bba5d93610b3870520c7e97b66fd696bbd24979127fbf7dc765d0f56c", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "c06dabd67e039e3843cd9dfb6dfedd435746c9b95b5d111a58f9df6bedf86d11", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "844bccd54fac327dd13e026a18bb600616252ab68a59444a5c3d27641c16434e", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "7e8ebafd8bb9709228ac28c24f3c485bac5c6afb39fb0fed8a4a4316c2040fe9", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "1d53794b122f67c01f0c2904881cb7f77d9e0735869d3eb4a0f1c99cbe021bfc", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "cf863cfd7659e72c66c577c3162cbdb2e9f3db15394ac77b6e17ae3678c441d9", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "b80cf2b9da5fac3cbe1aa80bc622a51c49b874b2341aeee974adbf11b2901193", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "dedcde7dbebc42cfdfb3a4b7570afd3c99f562602486c1e03be04e5a352e7aa3", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "427a43aa9d9b94e517fb18b55d3b8e8416096419414efe103406f918feef0c5a", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "906025537d91c3258ac296ed525fcc2e562629fb5bc5741ff2d5833c636b5645", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "8f6672415ad81565653d53d7da1edefe865c1086b0c3efed0fdb9e0691b0504e", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "b7460d1b2cd995c20493eb6ba8aeaf3dbbcb8f29803234de4a6331d0b96c5ebb", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "bdfb64558bcd8594c3efe1189bdbc6179723f324d3eaac30ab4fccb7a5b2e438", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "62c921fcb85024b1d6853bc44ff42e5d3ed38a41ffa5324c50654a02228b86fa", +"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "1e145d7dcff7dfb5d4171d3b2006c0202e5aa3c9b33b22596d8b4ab61f7051be", +"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "10276d0960eda49b1a269b58aca35ae2c5f4fbe020f376ca15730b4306a5938d", +"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "1512da6cb9f0d61b5a0bd5d23d13cfa55fabac82303862f2f61f932e8f1c0a94", +"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "52aa41da1e12caf36b21c4239949c1f96dce8bb1d486d8cdea3b91aff0278e3e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a9a460e8984643404bde3dc704a99e63d391495d72b871cd5dbbb741755eead3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "6177ee95bb0659b1e92a6df537b17a70a2bff70b7cbd1c0f6226f83e6757217c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "9701348b37601e18a2e2f20a0a00422802e1612bc472b5c56b84196208a74ef0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "0c85aa32975794fee5e8a793029e515f6204ec32f89df4e57fa73d515587d15c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4acb2edd4c511756f85b4715ed7a20de8d182ba3d0c062d5c7be8444ecb4d58b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "1d27c4449359f1439734f51c2461abed6c86c83c38e66f959fb1d3c5b9e19f5a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "f9154cddb956ba42e9fabf8a4cb0231c57c71a167e5b0a24f45aa9bc0b4c2d73", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "8b7056b91136225b0deb4f71a88a7ef689d8d8918404b3b7ca52192e812bd087", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "1fd0ae21b6da6342efc148ee03c52de1aa2bc30f31978e388bfe1b9218c23761", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "85ec0d80879f729491b71e4755e43d27ba4f9d488de97a04a26826bf261d5433", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "d6dd72b12dfac649702b46be5a7ca534a48741335be0ebcdca178f2129c2c072", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a56446f875414eecd3c45b8bd8bd4dff3a3911b926bc9c5a4729fa0ac60bea12", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d598ce7692e2a57fd0ef5256b6fe49815138ae68ca12fa06e964727f4f4595e6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "784d0f4536c09841be288a3c4e9be038de61f73e37f32d67e7728edbfac44889", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "e582c182bad226634d9c7daf5b57fe2a3eb4fcc916830955982395a1be33259d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "b54f0811e6eacee7951486d17ad29cd3f6ac33a4c9645e95e5ba01311ab43171", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "e7d630e80fdc8bb52068bbcc76c20808b897517b98dc860e279dba9e73b5e9b0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "5e2a1213383df56db327f21d82dc03f47f5021512c1cfdb95e6b3192e60302b8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "298b776849348b4ddd9894fc302a83f7278820cf5c9a94ff98b6f0caf5c19a21", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "81256dc4ded66f70f01a9ebbcf5e08c69e33aef87accdfc8c02d04c0f3feb274", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "d8c2005137e93e14e9133bccdc442bb833f5b60b9fb3a6563d176479bb893a66", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1efac2c0b0d120e0bb9f5b88e1375900139d7cdebb1dde3c7285aa49a510aae7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "c82e738218aa5c5624c9ea6933e1de7d9c8a61824262b177022eb71927911bea", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "c03b200d6729b116b481870b4d2c637301d7d585767ffb46f5ed17c832c26d71", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "21111e551fd76229d398a3832e28fab821141526fefe0eaa0a4ea804c0f73510", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b4c92a6c65b9094aa5717507d753222cf7e87b81a5e31a19817b47eb7f8bd834", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "97e37fe0c777d7dbbe996e921e665e0dd37d68aa129b2540971197f05ffaa9dd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "9eade678f19fe3b2748d8be452beee85bb4f1a59840ee0fb5ad4d73a4b08f4f3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "43c822a699071099b86a4c7020aa4a56ae218107ff8ba3c154c23fd89a4e4260", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "99b90e1040d0a9bf9f84ff001fa5fecb37351f0a1140c69646d5c33c94662704", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8e2220dafcff8ab99f58c1023ead047d563b2e9d09fe52189d13a42605dc88cd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "94582c038a63f8bad898cb9136da4f82dbbbadb17deed289ca185a62ad8c0ee6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e4d46f4375d9ef7307240dbae8f9592a21dc124d74d4a3666b08feb4f8ba33e1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "087570083aa5379e5c3a1cc614ac810eed1e069e2b77a43b555f92aeb5fc1f99", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "dab7c33ac89190a1d45c4c1573400f934fbd22e766f24b062d2d1ddbd1339a5b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "02455d6f012775827d359339c3b22d0d3281617c124bb7ad0cce00362e6b2d1f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "6bd4a89be372cbbd64b6bd5229f183918983bc6caf96510bcf25078a6aca371d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "c10660a34ccfafe4a16e2f2da2d630652700a08f984931311140413ff5562d17", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "ea6ed84819d780c5815fb0af5c92557d528301f227d3719801d5fc98c94e59a7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2f9c276dc5ab38a4f675ce85b4a82ea87c45973c9e5e23edfe1e8d5e306115d4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "af2568102f76a59b502ce09a487d77f5d3ad4008d3596bdc3b51a72d1c26cfd0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "4f98ffe683bff5ac5030963dea41ef30972dd7aee0e6c1c835973465af852654", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "67c6efbe1e4839ca6e49b0d9c47021f95b1d22489e0465e488e84bca9d7c1275", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "23d02102ea7f779a4b64a11e0c5b4c6b45324c959ac6a006604842799276d2d8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "0876f0bd6d0bcb06d0c1ab94935e9dd293eb3fea47d4c8ba8a1d56b47297f710", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d56313d25ed0d40eedc5572e852924d1c675bdc2b92e34876b24a1b203aa5805", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "8767ba6dffde4687a4adf5f0287fcbd5f137e9585d00f5b39d57c5fabb8ddaa6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "7e1f356f077ea7f3fc25ab966b799ca57fff1f2ad2b22ce1e41044f38001fe37", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "831fd11172c210746c667ce32ac7b26a4ed239353bfeb67f9443a15f7baec502", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "6809d36b360b71991d1355cd8481a02b215f4fa255b5092db707556787c3c3c8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9bb3fdf3a117af20d5528d8d27ee3032be6fceb03e6ad2ccaee1fa1b494764ac", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "3c402922b947c3d0926229ffe3acef2c451c176cf29301a6269e86aa7e6770b6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "0fc5685c106c8a478719bcd4b1d927d20f85bd06009f560eaa1e034194ecb2bc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cfead0e4db2749c6258474f74a467ba09ed18361af939d5ef58b8248c1e2fe6a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "024d8e190b38bf650a5d92080d1d3519850f13a08f073ccedaab69d7f2c10d35", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "428808082f6d24090c6f8a3efe239841c54bb85b386d4f3bdc11ac7b614bf73c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "64cfd03be3aa04faa3bfe2a2aee8ec1ae4de60a059408b66174c1a48b8a25975", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "8f3b003bd7de924bdcc51ee6ab85701eaed33b9df322c85300e930c1b2929313", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "3f13735f41f7e14e9bcef5a1026c9edafa392e2d9c99053fcd7a5a05d7b1dd8b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "5c2d9daad4ea37711013047c93708e78c0f892adc9ac7e87ed33677362f0c7c6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "7ecd3cf52fca220f9c4a98c336e35c872d58e4d2e425ed7c232afed37adaef57", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "101ed11bea5e4fa69cb8b434438895ebb73bb88876f9b223dc245d0863486077", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "1cbdb2ad82cc2fa615e989a0849a09e83923e2e5f9a070c4b2dc85f87c055bb5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "517e7399c4855bc10fb17cdb73fc922a429723ad54e18b5ef962a09b64c65016", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "db7e3b1eac4ad51c4f8cc2a4c844403495e696281392b67fb0f7e724c0a66acb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "ed3886bd75dc36bbb54f711f610cf45672e251fc1329d9c8748665af8e1a66af", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "8a83b55b1fe2e6f6707ea488a6895b93e055f13bd1e64796cbe52d3144f2b405", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "9ed075133f5d109bbb89908c64699444fa25abfb20cc4be892d9658d3b9d9162", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "171ae55e26d822ee1479aba3a2abdf143815d7f7e604215f47994cadbdb9475f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "d306bd3134603bbc633ef93625fd773f9ddd3163f3cdf26906344e657ef57129", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "d9a30b0f385ebd454397f2cca549940ea9dd1e4fe1fb7ca56a196bd76fd169e2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "50a1bf314c21e1d53bfbd9094b478cdddc60aa2f3b7ed516e393af732611c639", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "1bb196b9b23a07bc1c00a8fb5bfb67e192e1db66df1521e0c8960c12215da695", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "ee78cada580a0ad6b31f6facdc603b977ee1f68dcbb5bed680349122ca95b2fe", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "d9f5da34ac1b990747680307f25556ae414df304135b1f0802290649fe60f0d9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "56e1da752af5d525510b636478b3b7ab976d48511032d28fd59c483db34d17a6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "126d139414bfbe4f7eb2e4afec97c3bdd32afab139604cab156454725203d869", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "e13f811e99f673c94f3e93f05bd18ae92cf11b68e6f04cddc3a9a092c4047f59", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "06f085e7e4dcd62886a47b7b6e44414d995e16742322d50dab253b45535b12fb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a4e15bd4c19c31bc5e5a2e0438cf2fcf7fcb7819362298553a6456ab429de49e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "797bf39c04f975878203e89dfe9dd2ec366a125833fdc0ad79b7e1405f018a4f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b6d8dc75d9f90f867f8ef027d27e822f20725186d157f754bf5f6320ab7ee5d2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "c6139e3b3bd506503ebd857d2ba9fb6736e07d67d8005511a369309bbc9e41dd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2ab9cec130f72706670a9f5f7b3641d02b72439a8b6a61f2db2d159a25f5e259", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "f63bf7102a17e4adbe041f89b950724ec219a51ca5a62dd0c605f744d50fa536", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "41c6c168ae353b4f71fedafd5f422b2ac12c6f88d69046948d6cc45cf94bcc86", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "86b54c2867abbe248cc9941b7701c1a2d3758bce46d9142f089f379ad919c951", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9346da0d3846cfe1d805a95da3fd6e20b271c560b00afeafdd536a2ffdfeec54", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "9afe96c69f568d14112806832dc43ddac4385fbf0ca0a30cd4b5d9019ea3f549", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "a8111288b9f37360b978d82e8f26f3be95c6c0595a5a3b0d60ca81af570d6761", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6bdaca6bc7d2daae14dab3d2e24cc8525ae43c77eebcdb98b8cc8b5be3395423", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "316355393b57eed936ae96a8acc8c6d5db91b129cf9564c8a6c0e32a76b1a441", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "538d2640aa248c2649bcce51d4bd3b7b98377ac470b5e25915b28fd63c9d1c20", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "577f03b473e7a8d2322f78e1b1f27d7c6a3f3183c00e1bc3b4102ba8bd4a2616", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "3f3ae0f4d88ceb4054393bcc20f0dc88c358619ddbc42d1a89092d7cfe60b901", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b6c802ba3f6d0e5c188ab2b0daa36a8908a1431882036b4b5d7bd9d10d332a21", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "1b117b70addaeec3fa774423925b0ee4da062cf52c539b69b588f5c97291ac16", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "b922f5939de7cf0beb158e6dd7bbd7074b5cb6cb6f4a59ee4bcd7de66f99441d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "6acb0f468cbfebe39d7e4c8049785a1ac777249dd099d8f7d355de4def4a6c02", +"T3T1_de_cardano-test_derivations.py::test_bad_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "fdac3282ecc668823ab518fcfd6b69901b0aaa481424699d67b6242aaf3ff460", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0f4ddc2349296774e06af4eb6233c0dbe5712414b88b610d004dcd6fe9d35e07", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "8e02b58544c7868961073291cd41301c81cd3af09a146a02f64e82cb0059b87b", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "eb059c83d4ae2f63e408762dea554814c88f59bdbc5367625e6ed8af1556f39d", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "800c7b8ef70e04f3dbfcc8e0d0339012eff8fe68f68f6d62519bff64023db62c", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "a9987bba55d53edb57c62ecfec9b553e4e9c7e6293865c7b3ebddc4af8a85478", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "638c808b22f1991757ad610f951db2cd89f4548bb2f234e8c2a6b6c4f7be2201", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "bc2ef0ddd1b4570d2499ef19c690767203a947c66e3b92b0a00fa32e7502c258", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "c2517e5ec2b182f45280bcdee909d122861db9a883f94add9cdcca2e4bb63521", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "d8dc651267c20e11df60cc53bc10a5e99a4c90b5e474a9aa55f81a940f5ff3aa", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "e424d231d7f14c2f42398809e90d6e70a5d794539e9cd03b06787fd57484552e", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "d6829a1d4c4fa80f710df093bba8b370f5e143aaeb30b615f0d06d6c8112342a", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "b405ec6c11567b04b495097e28472918857ce75f14095c48c2b4caaed7257f74", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "18fe1e4d9bfb817f9fccdc70ec46ad4633cd8171cc326fcd47700bc32dc9c1b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "33981188d82338d760ac076844e2a865653a3a4e306cb585eec650ffde9b11eb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "c2498e9d19bee056b6602582f12b10a9ca308cc0cab979aea3e287dde1aff25a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "7240349bd02c6ef5446ffec284700ed47b8fed6344507746ee0d0e82921fa442", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9af2676c6e90983dc85be7916b57fe7d03d0a4f5c66d3076ed73409b05df9016", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7060df4c3dff0b3aa74d286f15b0e6ac38f41c6918ce5e4931be51371271a4e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "2f77b11011e26f6e42eff5cd27c061b38a73ca3ad2663243e9730fb80064d6b0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "2776809307592be512a38a776a781614d5287b94c5922a74ed67e4288b6b78d0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "6fc60616e11240e15425344106554c92ea976b2ac81f8185643e0557cf4a0afe", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "36e92d0c101ef4d00df83b815e6f56b1724d9726c13d91208003234b6b40c331", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "8528643812405045bcfbc573a65dcfa8d18c3770695f6e8d960882924ee9247c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "2aa815b6abc134407c607ac11224113db210f48ba9a6a8e095c26c0ed20d74c9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "2aa815b6abc134407c607ac11224113db210f48ba9a6a8e095c26c0ed20d74c9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2b93de46325b6997f9ce1bc3400e14e94717d6eac9fa5511328e1f90ada87524", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "10a0a1fb43a31b1918e752b2d2ca334c9a0e511fe27ac48c1ad71d5578ff0fe9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a185e8dcfb09b8d225f004ecbcd90186fcf2d6d77d1438837ee946dd0f862b62", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "3972c03c6485341bb7866de70bdbb316029564a7782698f2f65ddddf812737f9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "5d03d4b47c466ed2a5dae62af5a1b8dd09369fe089ca078de1548af8d486e437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "ee297e644f81f9e5b33246182d6b8f8572fb3169e61912d948b254e5087ac6bf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "04279e08d950c70c9a55904848db5f883d766b2b08a470bad49a5336847c138b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "4b7fcbe0c1530c523fe55714ad667b0a648ca5781d6664141355c6eda19f887d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "059dda2a14904b2832fa5626d361f01b237cf7bee40289ba3c462d8dee933966", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "5d03d4b47c466ed2a5dae62af5a1b8dd09369fe089ca078de1548af8d486e437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "ee297e644f81f9e5b33246182d6b8f8572fb3169e61912d948b254e5087ac6bf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3c382845367aa147a4d90afdc4b14b13bd4da5af16dbdfe84404365f8e630018", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "cf5056454a0dfb65e070385dd994da538a01026aaaff3e9e69d67f412b02061e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "a7ee98822eaac7734c9ad53f79322742ca28e2511548504bdfb63894517ecb66", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "942650566008c7d46eb5c7518ad442cc835ef7d65bd7ce6df2a9ae56f7463100", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "c4e8609b256aa6f55bd2dd7098dd17e07531003f1734c840e55e5046440ba75a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4836eb40df0b139fc80ac399a4804fe763136f0e39327f445b01bf76f9978ad2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "009d7a7022783c6f9ca57590b600dfba0c9866cc4c41fb060982b7d596240ef3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "01b223c282023c04fd629dad63e208c3a46084ee4e15c9aa12b68624e594c8a3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "ee90fafa2e12451dd20ec5222d97a112e85ee1b646df2946f6ea18dcb690054a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "674596693cf09fbd7e8b522aec68c274cfee25c69f19ed8d7a19314f535b5c43", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c34993af1128d59a0f0b6d0f6436d369fa664b33cf7d5d14650fe1f6351c6ff8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "73257be392caef581ab9751f11abe4024b0f916923882a9f8636bafd2ce55735", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "08077765bc342cb8823713756839abc4630fbff6adcac32f9c865ae94e5132b4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9a2f3bf7378206fd4e9e4c688f5ffd3b3842b4cd8bdfbe4a6658dc0a90cd253c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "91cc25f107d378ffb348c061c82f9d31f0d6b323385e2f86e7ccc85cf6f7c8f7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "64d7a65b8a26534f91cf2fbdbca7eeca6a1dbd1863429cba4e8c9e3c105d237e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "63d20447c2c925c484c197bbb7fb5b8e5f36b8e2f01e89c1f025a6652e9e72c2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "c765f8c93a2cbc080e7ea7b55d70c622350ac0b112d558303787b24c979bf25e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "274166df4a0c39664700537a696a4b6d8c7ed2883435905871f6d6aa327574a4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "4cee42a6f3389d7e8df6ec935a66c9d2a7b6b16d59fc27c38e2d3282298b5db9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "d0e6b7e8c68ca4c69ae5b046fb33fe63cf927a0a4b242b9ae9b12dd2b6404638", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "db5956ca400fca3499ff1a2debb5ba6463a289e073ae4607dc30019d887c79cd", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "1c5464a8e0f30da32bb3b70437ac580a86c1ab061b2f70e510f6d5232430f908", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "9a742712806dcf98e84aca1c4bfb7a100718417b0ecb1bbdd81f5b506ae01ab6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f99c87f42cfb75cd00f41f7e43a8c26823caeab9c45c05d9069c96608bbf2b18", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "bcd5261e63729faec6e5c58b6748fa785478ecad43c4cecd91dc57a5dd5e9472", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "12c532bc76ac57539b2cc84cf1e85acf970395b7342c456c949bfb2837bcbe80", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "762a0ffcba2848410fe24c4624d851eb2bd7e68036b04a583682d680a2a4d478", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0470455edbfef27d240f01548c228e4b48281ff7d597278a5a14a8d821fa8271", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "b7228ce69af031793afaef67cc3a47e675aac0b8f6a290629ee19148f246a55b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "b60cf233e3a8961010a945891691328388af3af108170a62aae674824c48dd2c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "9b860a29f521dcf7a383ca3aca9aa452475ca79691a328791212ad94685084bb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "89a7770465dba08a92fe6db8ec31a968d50993e1bb26e9811599f57f6e58286b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "80dd1e69df6dcceaf51433c4fa0c5217e0e422da879154889e3701f1bf76426d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "9e48b3167fcd694b2d144f8a0b66e77b7c62698843353b8c390cc105808e09dc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a1be51864a32ddb44bfd62ead437e0b2729752b5ac46b0ffcd67cf6484c693be", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "c7c7d09877f8c6e24fc1f92f423517e219a4532ed68cfd8242fd2903cb5873ff", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5a341c7c55a19ecf919130a6cbb815f2dfcfed24077e3ff9439240af04773270", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5ebe7f5935ddb8eea765feceaf96332cecc2064557a7db2fc30bdb5edb681695", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "055d1cef6206103046e620821ebedebbc1e24afe2a9d4a4313dc524c632d689c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "1a9967c02fd8e5f345a8e624c701f3cc7067bad95fa4c28ad6d670b1f15238a9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "23e04958dc8a78e52402bb105be0a43b6fabea8fa50e2883facdbbe52854c2cc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "c9df6a29e0d7390fbec30b5ae5066f32135d38ad1211c940b0ffc7e3eecbd0e2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "c8d683ba132725cde6f85a4437cb8809a90d16913f1a46251c724de05321a475", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f5dfc6301c62281a895787758f6d79a3aee04743ad5ef3cedaf0c6bdc4260f82", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "9a707cc13b1c67bbde53bc3b63cc5fb6980fdfd352b65edd5b0cec074885d595", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4d240cd8f0da058ecb5b068b9bbd6e3c975d87310e1efb883ee966557f279866", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1032ba505ae4dc51e2e12a30ffa77de43667d33f73bd3d8d51667c54340527df", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "2a0e6b87e76e99e24dfbb8d2dec6495e9b377435fe76edcda3f66358ae9d035b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0d5b27c7a78116eb7275ce32ab98598dfda196ab4ea8a4a4f90d6ac44c30efae", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "257196a868ab855bde834a0a718be38a81c1f7623854e0e06102cba4201af40c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b7d0b1323805017a925045c1f2d031fa962903124317488828fc7ba389fd8f1e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b7d0b1323805017a925045c1f2d031fa962903124317488828fc7ba389fd8f1e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "e2b42a5467ad81c2690579e9a0f593220466dc4f28130f608503db41acf875c8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "93f5907b4e37e76b925bcc09ef2bdca082ce1bce7d326574cfe3fa417b3415eb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "93f5907b4e37e76b925bcc09ef2bdca082ce1bce7d326574cfe3fa417b3415eb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f46bc62f674855b6fc85bfd53bd49b07a2c2611cb93d9da26a9278c2123338f7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "4b8ac4d1be9785c6574ca8ae1b31f2a7d92e35544a837be33d9a75285a082e62", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e23a89a9c82cde79991d4a9bf4c51c82015dd6aa491454d394bb0ab9f179dc86", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "998486bad697d50070f4d1a01168a475cc1b5720b39febd250aae528603e9d4d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ad3556c3dc50b20e30ba78d20f58857181d5021385a73c7fcd4a4fbe7034072b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "90e3df1a58c444c2ef2a30f177ee2465e47f565256b300813a80aed7d8f78592", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "811facbbdf018fbb3d16506d74b893c983677c54eff656ed247a896f7934d9ce", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "12518a2266c2836ae4f9e8d14c05819ef9dcff1780134edce3fcf500293a6854", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "91df52348c0e4c6cefe6921dab6dac8f22d1a7edf22a0d121475bb3de9e073be", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "18fe1e4d9bfb817f9fccdc70ec46ad4633cd8171cc326fcd47700bc32dc9c1b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "2f77b11011e26f6e42eff5cd27c061b38a73ca3ad2663243e9730fb80064d6b0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f1bd8844c7148d64320a786f6857199064f0d107b0bc5c62cd3a9708ae5ececa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "f4658394005914a1901831fe48fd8d4f8842b62bb8f4bca1e99e646b5204ed44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "f4658394005914a1901831fe48fd8d4f8842b62bb8f4bca1e99e646b5204ed44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "0cc97d589a31be0dddb49022c7d9d49f66f94624398470a405d2d378df1a2316", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "437014fcac0829a54bf6e0676f3cccc3104350f285fdb0269a10e50fc8fba705", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "c5e56460616b7d9eb7c02da4b68d310e5f88ad4a0286c9f6631156cefee82cac", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b7cb53ac20cc18e2b2d57f0c12ddeb8fb4045128e0e02ff14bfb5a5ba288b257", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "ca110e02505c72fa658592aeb1aec4231b540df4cb38fedf7722e66bb6f991d8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "5f42fda5332e19809b41583fd30e5252a25e5fc2f3aad6c95a776e864102aa80", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "4feb47566e07d3d26f774b904275e5220708283a800b407c78f029490d38b185", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "4feb47566e07d3d26f774b904275e5220708283a800b407c78f029490d38b185", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "4feb47566e07d3d26f774b904275e5220708283a800b407c78f029490d38b185", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "4feb47566e07d3d26f774b904275e5220708283a800b407c78f029490d38b185", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b7cb53ac20cc18e2b2d57f0c12ddeb8fb4045128e0e02ff14bfb5a5ba288b257", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "ce51ce71a838dc3a7647176a87cca80fb49da6b4aea3264629ff90d728ea1da2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "260d9a3bbbe897bd3f72c877c8fd3630bc795460957c3f9d395ef15d867c5ff6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7183a94e8d15be72e55365cdf589c6cfc38cde04f65ff1cd9c642e51da202e3b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "54352111e7d9850a59196dc19a4e5330b7edb702dbc67a65548cbf18ec391669", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "fdf071c3cf08a57af10fce8b790609a420444029fdb414c91b20826275ee01e6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "94eaee2636371a62dff83bdf88c572799682d4fe99d7430937d4c104a790bda4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "4a36501e68c896f66ae7437f5b04e495643db2012dc5cfb009630c226bd244f3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "ed7f7724d7509fffe98dc69c9579f2d5bf510f6b6c12aca2c6839718b37dd121", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "50377c19d36117c19150228f482a8ef28855d8c803c84ebafb3200cf0e0b9221", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "d5bcde7aa81627adb98fcdb62b3e94bef0f9c10b4b5b5648a623748d858a16a2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "3bf35c0ee79e5630d0b2c10ace7c24416410c99d94cd7d171c7dc3b3c94f9fb5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "f4658394005914a1901831fe48fd8d4f8842b62bb8f4bca1e99e646b5204ed44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4088c79b36cd48d05ba6380dc60ca0d391ca7333203ca6f4c7275f03a6b0542d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "636de19aabdd3e2f4f15d6bf5b2bf1dd0315922e77c8f5b1279b95f4200b53f2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "5b4cc2abdb622f737846a219d03558a40fba17992c7a76e4111954adce7f6a8d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0e105a27545d6d7f7faccf36b41eee1df791d0c4292270485fc6cb7dd1eb8a81", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "b37f297c4cb0dfdc4e51d833f714b59a5a930ac4453db2b8396cf31923e66585", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", +"T3T1_de_ethereum-test_definitions.py::test_builtin": "0aaa9b5b9033a511be0e29bec6357bf5260540f55374e770642690fd6c184413", +"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "dc6b2544cb81fc03f8073dd3e627cba9423cbc63cc0aa0e60488d7061704b876", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "7906e32e5a687314109f34153ae3955d3da9b2fb21e56a1cfa2cd1942a9036b4", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "b1e902fbfee86aeff47c106b95c6a8957df07fd8629ea1a490261f0c7e9373b2", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "0aad9e5253eb7b407185e9f178ff1c360e071535b48f046d7ff8802064ce25e4", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "ab7b8b568e539f0170b4736d2625c17e13722b71955c676407dbc8c721e4a736", +"T3T1_de_ethereum-test_definitions.py::test_external_token": "36bb58a0a5e730d01899d9b1156b171c1b8a945b927156bd56e8ad577db4284d", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "167660f6f2de8ae7f20edb61a49fa2743e975aea1724fbc6a889cb87fee46a50", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "4a66bdb79f2402f5b794c0c107cab90f0343966e427129c9705085530822d9f8", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "389cf140e83a8f785d5c0c65def624b56ad78ef81d38a3523d85e5b0fa5ebd44", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "d7120ae4b97bfcc195b542481555329206353b50bcaf19e8d57ff4b47d2c8cce", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "45533c5c420c3b9a189d1025496b2eb2c2260bedaeb7b2eae028eb60101a2901", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "15f6a6de9e58eb7fc6a2137e63ee333733aa2d1057c27b7bffe4e7697d575bb9", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "ad32d21978cfc0df59c96957ff940bf4d111547e9340a62442f78f02e87eb8b6", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "138b1fe9458d4dea7fc61394a9fabf1e51691d39d840b2264e6d49d28b5d6023", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "eac15f64185785f0825fb65709f2c9d89024bae2a5e7097893f7c8147636680d", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "01edab9d64c43db1ee88aae581c43cf0b2fea80f994e85566ac3370b65f0c368", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "14786f7dbdc61174ce70aeef99f235481c18df97ff9710904d1aa061d846ecbe", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "d039538db593589b9ec1a49e55dfe63f454cb613f4d6c19dcf0f64f715f2f762", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2a6a12d9d9e844cf980caf6931e5b9734997ccf2ef206b483f2abae400dd1ec1", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "db11a3f0f529a88d9fbf4f0f438107c0a60626c8f5cb6b6057ccd477cdd83e80", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "66e824e22bf07019c81525be60921953f3159bb83cf61af074365756d11391f3", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "7cbcca4964a10515becf1f7da6bf629902a7910f568f73a0d32e00a990ac1dd7", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "98ac3f5c7a4db629c89b01d514dc3804d305e1b345d935674e14a6c235ccdcd5", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "9668e9d96e71a0d4df05c085c6e645d45dde8a109023ba5ec9d24298e640241f", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "4f6fb71b4b5637f3dc216269c8b6bbc13f0488215d3e7c6ad1225ea7f66a5ab1", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "d465b8ad6037c84a28ae6b2635ea66306c86edc67a4a7ee62a34894936d8b1cf", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f42d3bb96d2b25a73f264dd405296d27183e093bfd620d96279fe62b115c5ec7", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "6d42f787f73279474aed2f078b5d814e335a84158aad91cda9ef2ce37281024b", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "79b7d536dcc4eaca87cea23b97a8e63dbcd249f317bd1d7fc688c9fc734592b9", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "d465b8ad6037c84a28ae6b2635ea66306c86edc67a4a7ee62a34894936d8b1cf", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "d465b8ad6037c84a28ae6b2635ea66306c86edc67a4a7ee62a34894936d8b1cf", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "d465b8ad6037c84a28ae6b2635ea66306c86edc67a4a7ee62a34894936d8b1cf", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "b2ca04b51c99336668e4ecd769797ad5bd936020b8ab3f5072aba650a21ba18f", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "d324b2ee56304f7026a9e2b64a4d3ba7cb31751a845898d88a64061625527295", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "8eb0d0dd75e315b4cab64931c8f81bee01ea7244bf455c66fdea4537da5723d7", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "fdc30cd8bc4786173f4eb1e6e4fa922eb03a79897d2893e5ab5bc4cbeafb7a0e", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "8799ec662c219b96152ed90e681a542e101f92fdaea46bad3b95defa2c901c2f", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "b445d2b7bf3b977b633c831b76bd6f17cb485754b2964be25d2518ec90aa6378", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "e0c5b1404a1db7a5c1f42a1e673f513f2233e304ac18049034d41ccfee08bd5b", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "8380cca2879ca26a8ee420e7c1e49e1a479e286e8e89b1ae8717d2e3ac94786a", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "409eef034b0168709e9e65a07078453d900bc54c13dfe82209c896b8e8a94e16", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "987035f7f5a0585b13f002c0f91ce1b34825153a9c29bbecadf06d5a2f283072", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "eca28830a5ca451442a5215f6b2f1b2f075c7fc9c4e1d64014c36d1af09975d8", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "0f729d1894d64364f1130a796e305dee115b043ea52b71ce1951187d277f0a28", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "abffbf9a002b1605ba9b717819e7f3f6de5e096502819ec6697c774204c53d6d", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "9d3777de43a4a7c61f8814d76623f1e16a7a8805ec188c75c074e3def4744de2", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "7b891577beb670f36fea65f2bed1b8606e007d5c7060d88be6e8cbf8d803ae74", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "8f144f7f0edb3dbbd10b38753d462e22a367c0dfbaff452efb3bf38a2b25a5a4", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "e484aa156ffb8ba2273f7ad39c3433333b11f11142b4af39276c984f0fab9b17", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "7cf627a08053b0fac6d557008ce7cca2062456d4875b30aa81510683549a83ec", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "eca28830a5ca451442a5215f6b2f1b2f075c7fc9c4e1d64014c36d1af09975d8", +"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "efc3e5cf6aaf18210e69e829d98edd96143a92c7fa73d66c56debb297ddcb2cc", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "7cdd28dbeed577c42cebd57c23587570d343805d237367a6cfa20df435ba5dbb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "499a3086549cab3f675ac876204f511fd4f398488050f8c7279cb2d2637d1949", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b04f7d9e1f790f906d7408a7271432b9e4971c0b29aa667fd73c6127933c88e9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "499a3086549cab3f675ac876204f511fd4f398488050f8c7279cb2d2637d1949", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "46dbc55fa82379a7e6b3f14385d6efccadb36c9c66e0fae8776fe936b7c85374", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "46dbc55fa82379a7e6b3f14385d6efccadb36c9c66e0fae8776fe936b7c85374", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d4bca9f19494bce06b254f7cca8475a45b495c07a6097cf5a2438ce02f88c8ee", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a5202608cb6bc477c88b7186c1b962999c4ddf9d55bc4ed2907c385e9ad0be54", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4aab75ac0fae293b1b200000b7a2ac492c1d62e46583da890d675841bc4ce77c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "5195a1436f0e5d517753366b96b0b23a486a23ad2351d1de7be35a1f4a9eff99", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "01fca946b28d26e9a97dad175612b73bd43ac8cb55f2aef3a2a3656766e34cb7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "dd78c4050ae23ceb15d0916851ab454297035ac748cff38dff3d37c7bae085bb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "f67efad7e686e4b5fe175d8d64ddcd4c011524f84da0691cae406532da287067", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "f3a258245eeacae006fbb469330552f020c1671d7235f43029c9988929b9bc06", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "deb76901b60c3277766def8a736685b87853755d0b64a3e9d1967641d4cfdd06", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a8743f021f803a1725031c990b9f1c3f3c71744e34af5d13dd989f75be41db8c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "deb76901b60c3277766def8a736685b87853755d0b64a3e9d1967641d4cfdd06", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "02ea2af1ee992bf231dffae8d2f5456a59462172f6aaf50a8f58548ec25f9b95", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "02ea2af1ee992bf231dffae8d2f5456a59462172f6aaf50a8f58548ec25f9b95", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "842327a2f789fbcaccb605b649f2f2dd5ccd6db954c1b53bac249b3896fbec8d", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "2d899d3141d4907ca40ca828daac73898e4547791194447b8629b4410b5a61d5", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "05320b96aacca7610704dddc60315c1b091be55120b8099700b9459e6e9a4765", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "5195a1436f0e5d517753366b96b0b23a486a23ad2351d1de7be35a1f4a9eff99", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "7e490334d295f2ba1a9562a172b9c7be47e5442aa8236bf0b9651e280f9dd25f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "a4ec275ee3b920ec84bdd9787c4e12dcf706cce7581b197911ca9c915f0f24ff", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "cda0f8812a81ca2a5e7519cf7711562750b1f0da55d281c2add27010076c5a48", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "0e10af39280777fb963226612f8b107c3dbfa1335c6f2d1bed6e6bb8b00ddb93", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "cbb9d69cd1d2cedad4b962ac5a7828b7b0c012c15ee41e110cb09008abb1420d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "afa415cc44cd88c8e5ee4bd37a141456f492be98efd12630fae6062c620940b3", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "01fca946b28d26e9a97dad175612b73bd43ac8cb55f2aef3a2a3656766e34cb7", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d4bca9f19494bce06b254f7cca8475a45b495c07a6097cf5a2438ce02f88c8ee", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "7c50ed1d1c6d32e0dfb37debea732222c2a0affd26fb6708601294ebc3e3e874", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4aab75ac0fae293b1b200000b7a2ac492c1d62e46583da890d675841bc4ce77c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "22cce92e4fa33c82fa73f4b8ac9303a524d14fe61ef5829839dab140a489c0c3", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "da24e416038a1c7196a0ba196899170165b93586bc4d8a6510c35782f5de5c28", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "01fca946b28d26e9a97dad175612b73bd43ac8cb55f2aef3a2a3656766e34cb7", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "7e490334d295f2ba1a9562a172b9c7be47e5442aa8236bf0b9651e280f9dd25f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "842327a2f789fbcaccb605b649f2f2dd5ccd6db954c1b53bac249b3896fbec8d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "97b8d3ca4bb7b7f2c711e58fd57be651c8be13a86b9e9f9818a15b9eb953e23b", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "05320b96aacca7610704dddc60315c1b091be55120b8099700b9459e6e9a4765", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "295d9a3f876766106744036f37cca593c497dadba52b3b4beedb5bffecad1de5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "178c9690b8af34aa2298d42f0336729dd9687e76d6d335d10b552c8f268c2f38", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "7e490334d295f2ba1a9562a172b9c7be47e5442aa8236bf0b9651e280f9dd25f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "dce08e47f79000f6d39c6e18b00270a0228221a972b8c81dea6294a8be1d4924", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "dce08e47f79000f6d39c6e18b00270a0228221a972b8c81dea6294a8be1d4924", +"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "93df97f2ada43fab8873a17848f4bc8bb0d2969e242e340dd941ce71662d4d64", +"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "6a478769a9a3ea069f83648ebff5872f1a4ca68f9a8ba2b3e0a3933831c79a2e", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "746d33948de4f122c4f88258ea7beeed102f142958ed3e8c46114c8a29400d17", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "746d33948de4f122c4f88258ea7beeed102f142958ed3e8c46114c8a29400d17", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "e66b60dc7ac9324aaa75874351b35a78c4a5f1d054901de4bb35d3dce15636bf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "e66b60dc7ac9324aaa75874351b35a78c4a5f1d054901de4bb35d3dce15636bf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "eb507e28d191247182201ee4cbb46f0276dc7d16fd6944a33305fba6d9c6090c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "eb507e28d191247182201ee4cbb46f0276dc7d16fd6944a33305fba6d9c6090c", +"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "0b610ba4d85d8555c1e94cbb21318d9c2787beea47b5dd4a8c8ec2906e237e9b", +"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "0b610ba4d85d8555c1e94cbb21318d9c2787beea47b5dd4a8c8ec2906e237e9b", +"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "9a40deedd5fe1210e7ef5f155f1075f87b25a0dae7e9b84f8e6217d516ce8fb4", +"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "85bda2a9b766d56bbd8fbf09a024d490b24650cbe1ca39ab09e2380730896744", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "bec7a18209f2579be0454da62014b6be97569c7d4bad0beca31ad7c3e2dc4cc9", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "0c4aa4b2bc7367c36341a726fdaf1a26e054d1f384980ad37094d4fb62b00524", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "cb010bcd52f78290b538cd189ab5eaaa25700f00eefa9f20cb0d37d5ad07d90f", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "97f62b82b1ddb5b27b96067b58c116c8681722139e571acb314fd0717e67107e", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "7543fa70f5ee4a9fb4cdd0611fe3121fb8196af451949d4c8b8ae53fdb99b6aa", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "016ee5e1872b07b66d326f1befefc01996ef397ba892fc513037f0dad3599c1a", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "0272cf38065da81bfa738c1c82c57a35dadceff10373bfa424a06a7645bf1c69", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "8ed0ef63d430b89853bf252f99200c327b1c07e9554fab46730a2173259139bd", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "87e4f382ec1da0ac81604e9e23b783927d9d5dccf50948862ea59663364d211f", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "416b3e0b990dcfce6128279860c9aeeddd43f7263d2590fa1bbe523910fd8699", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "54e83c9130b80a02534330505ddd4c20bf2686c767994f44d35b2188d6fd41ed", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "136534e39bed6e187c9a768a72ad0d98f8fea1e0ff51f10ff99c99023954b4f6", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "64416774886dcd89ec630d204506197d9acbb7053a764d3fa7512f0d2f121bde", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "b3406ebff6374fb70b7b0991d2448490f7f26ec4d3f9ce0dfadb5e5bd004c312", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "69a28240b74db12655938ce6ad17208d6c92d93fb128b68dac69171e4d548a25", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", +"T3T1_de_misc-test_msg_signidentity.py::test_sign": "def4bc79504b6b672549bbc5a4e838635e3ff15427b83cc67c9483a064d65c9b", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "75851fac6d447276c26aba0b1479570dcc687269e28eb047ba51e74699aabad5", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "807446633999368549dd8e3b9abfe48fafeea8bda549849f84827a6b908e3c31", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "abccee0b8a87f9a169bda2887f2b0c24de486ec401d6a04d7aaf31b499ca0265", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "e8a9d53322b88f98316300f6443a4b814a2aec9b14e4dcc80c6bf160f80f844b", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "b1f512df46bcce02b834b38d06ec7ef45a4aa5f90740d02f83853383200a1acf", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "157fb01b6f78d35732d5c2298953b78d56c754489402aa57ebf65a09bb25b2d1", +"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "6c9aa71b9c02166d8c398840efe42ace7c105b5334b04a5e56d1c85b8506f40e", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "eace643139fe9c9fd561672de767cdbd34f3fb9e58aab7280e86ef9eea2e8f6d", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e59056ebd51606c5caaf629a18f86f5b22fd816f8c8447aaf2cd9d14fa035901", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "3c7d53cacfeee42425d93ade89db130da66679bb4342efe00af6331f4cd3b6f3", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7010227e2653bcd0a1529690a4949e9494d9f0fa7750f6c8308820cfc17646b5", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f3ed034d87f8d2396f5fd5c0a60d1f112585112a959ffa4526e9eccad317af8d", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "02c055782dfb804079f8f99d6c30b6fa0db8e344d461bfbb3825e61389732d34", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "96a675f9dc4468a9ba9ef107911107a945415fa24bd266269834fc19e4f39bb8", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "50e0b7411230b6ea4e92318445c8003f4c56563a10dd9054039cfc95a346b4dd", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5988ed31926dae98500027cf86d003e15d179631d0761961d430f514fbf67549", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0ec239993ef49c2e4869ce695c329656f7f2d66cc107e10758449bddf146bbe6", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c553a7346763c299aa36a2dff38a6b5314d899d3887fe676902417ee10d17604", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5c41fd24b4f95974d4514eb04dc55b820ae507877128e2942d3130af545e47a9", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "036c5f26e23cffcf0a26c76688f7f82baf58c9cc1d99c1bce4dd1bcf6c4c8b19", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "6d95647df765180cd6df0beef1d0bf9a5b1695cef32c3773737a558463c90ece", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e3bee5fed0d37696dd4965d13bec511ba3a4d16e39303678a7089ef96d9b232c", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "02c055782dfb804079f8f99d6c30b6fa0db8e344d461bfbb3825e61389732d34", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fc5c90d36ae3f31e6a2852fa11aa1865055071151e307d41fba1f51b53893e1f", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4b5ce296a2e80acd7ea92a37be64b8465d2c0c4c8f343e8c14b3f08e75dfcafc", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7c95be89589061c9d3678ab8f5f7e913152a52ca5e032f3c71ccb1c9022997bd", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "e2c9ef3495386becdfc2db25a69ce5a4aa7c53a315e2fba0519876c6673f468d", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "abea472ef88b3c9ad34ea3b2a370ee374973efab4df14a923ec11e8a62796e50", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3d3dd6f163ffa38b5000944a1b7f87aa6daeccb27d039968c2b7e45e37df11f5", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "cca42340d01b0dbe0d771131f081e1736a583142366602202edfb6df0d2a83e7", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7f6200fbf49e388ad3165aceec2da50f528e2a1d5a6ef0040eea4fa75912c21d", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "1240536d26111819b8dfd85492c2bee02304d69610e59958730ff0bbed2192dc", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9b46b6516de39fc622b8277809483c43403aa0a15e52e4b17f7f53d32d73f780", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "34657b2cef4deefc48f64aa8e8754c2d7557bb1b866e83a6a10368e9ddc83442", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "84c52c20a9aa0b76077ea925bda957b2fb4b97c94c6e4c1ea713ee2b6c099fea", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "01e9048f2339e501d9bea561cab8ad3ab49750414f4da707626693a0405f397c", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "360f886df14df5c13513aba6b3bd042b91f7f919f353961e60d3de666ec34315", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "2aea42ec769566f0ccdf810b16d3517393de24eb23352a3462f52e12fa7700a8", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f4ccad91f13c10d7159dfd0a50cac3d66e30f299d0cbfdaf7145396e87f47ca9", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "eab4d9c557b5d9771f54a7501882cd6988cc973f142478898cceef3aabfccee5", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9cec8f27a727b902618673a6e61dcf0d1ce62b8835b7d87e61434a4cf0e55402", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "5821bfef8a419067ad95d14e1a1a5f42972de8b6cb4634e65487c91c46a94cbf", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0f1d070413eb3b7603213f986555023576d56888338549a62bff2b9267f70232", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f053269d155607207d0f8e199db9cc0b7dcd15be81d11bfebdf275edceeff329", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "f9c7a558d269d01314ed70bec11a88ebe800159a8af0d514196ef19b51684094", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e047d74b93de59ce8cb40cfc58805558ea4b8db309fc971dc32891113cadbad9", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "054533dddcd50549a9f3cb22ec72cf1e1b309b14b39b9a626ae7dea0481b9d22", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "6b5fb9fa01c7c541ff1c383a943956c8595437a28c98ae737bad544f45504aa1", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0cc0eb5dff5ed9ed954fe68ea298cd271b3a22338246b692782473bcc8f5b6ad", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f0e8167ed77fd7c6d1264434d5a9f289fa3be64e676baacb339ab3122b243364", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "16b3c5869c64c324b589fa751cc1af138b71db67a86cbe4f998b178eb85c12de", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "29e743c58cd1a92c9d85f8f861cbfd4cfd49d5ced8308b1a686646b2fd847f33", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8f8b6467d52b8d0d235280245795b62afb11f12ab772fd142d0d812f6c21a051", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "7f14f5ac5a83439f79dd559602c5cbbdd2efdde6b0b6b28303b698937cf509ca", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "b7c60c025ae526dc672297df2627a56243be8b98d70afa785c7340597d321840", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "4c59475be93601d97c56986753f6c451632706477db76e252cb50362b934dff7", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "55cf43b937550df004133ea63934ad871dfb6b450012e7f5f29cbc346b3633c8", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "a9a6a263fe326a57ea464c5aa23ac264f7e9ed742517648a544fa5ccc3e00ec2", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "0fc91f12ce60f41f5f3a6d5aa1bc9375808db1d6e99f3cd83bbbdc2882985e17", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "29694e87cd2ef0d27af4e2c042b9cb2e83c33ae458434e838c6155e73a22c342", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "a626a8280d9ab80e68f8f45ec27631b7a6f6255b8edac7e4a478862fc85b4ffc", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "b020f0183b3e405689962040cf1d9629c07670c3186d476adae74a7fd03a7f83", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "ba7c087707dd79a90cd0c82a8d27de0c3790dd1279b6eebb9ea6a0badf13be50", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "95e933d07b748ccfa8aecc9fa5320e7a6a0d632729476174a6b0ce11e0059004", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b020f0183b3e405689962040cf1d9629c07670c3186d476adae74a7fd03a7f83", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "ba7c087707dd79a90cd0c82a8d27de0c3790dd1279b6eebb9ea6a0badf13be50", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "95e933d07b748ccfa8aecc9fa5320e7a6a0d632729476174a6b0ce11e0059004", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "9521f30dd9d32ecc270193cbf27b719a69eaafbfc12eb2a224041a76ee797cbb", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e5ed59b22100503c0f1ccde582103756e9e42c5b73f246a8ef604f87c6380a92", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "9e0644ad4a9ebdc7d30ee9e125144a503a405d60f329659d034a479f1bdbcb15", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "1e325012d2fa37a2e42d9697aed045dfd244c9b93b22841efc405f4b27b9af9a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "f76793c869cf0411611090ed0aa220ceaecbf47d68c4dcdf43cb278730a35b0e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "d4daf0e63b6ea4fd636b24080848d4d54366ecb3b0a7d9064f98f3b700cf0daa", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "7a6076573808c00de34fdbb692e1392536fea1a07d234d87932ead8807dd6e0d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "d89ae76e019250fcee240bf616fc2b1e2ad6e8b78b3f5dd145e430aec23cb640", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "d6d7688eeeeba34a36e1374b7f4f8c1dae3f36ccaab4d01c4841d396de47bcab", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "7f5e6d4f36b3f5f7f7ce18be44457f719643ce7fd9bba2b2b699450454666090", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "1a5117415e31b88557527942257257fd6a4f611dbc50dce503915147db567322", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "6745c65e155f3b78be0247b3b719bb9577bedac14fcdeaf3ebe756c469bc31e1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "310395fd7bf81acd3dab4f8b22d13b36919ddfb019d7f7f0907939111b80c23b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "45db5571d27b6c62032127e74f7d5e907004c6e624259dfbf8e7e31e76f7c253", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "3e6d8d7563895d64d3f00fefcc3d81e531b93d81067ebdf2b8683ecdcf7f363d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "92b9abc47718f249f72c453cbb387996b20133140f51ecec98560ebc2b980159", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "56441390bab48e3a361852a4db2b88d945446ae2b7c215f3daab3dc39f10a10f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "cc1b176174be3ba07a5386557210aed46fa0c3a71413fea6219fd583aa596f30", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "7254f073ef38a17415b8e8cc50c6e42580b16fc8ff7262beb2d21f9aa1bcee19", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "33c20de64f085d33b8a103148a6687aa16e0317c78f9d8ce3f3355fcce4ee47e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "abff2158dcc73f4286fe02ff5f7691910e4f71141c67db6a7a9360999069f67c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "abff2158dcc73f4286fe02ff5f7691910e4f71141c67db6a7a9360999069f67c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "6980282e3d14942bfddcd056ff166384fddcde1c238abbfb3d9d82454cc8be9a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "e63c00d470f82edc2598c144565b77c75cfc194b06600e414ad796e3d6889e3a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c7625501e7380f57e1d3fde9fc1e8a0b05faa72ee08c949bdd14cc7b2f441e9d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "cfe4c0e6f200a35a4a14cfa05fdfd940a550cde748998ed7f6d116659bb2b23e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "27d6f1fde80006f3182133ae6fb70966c11e3fe09fd2185597046368fb7ed57f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "ee30e4904354b663115c86c4643c4c1b4c37e85cb4193496f96ba713a29abd31", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "a1ef58e4ad4743970f7c767fb36fb2d9b2305d5124d2a538c22ceabcb371810a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "12b6ba51e8b7e616473dc418ef8e8225ece70884d2912a4f19c910e8d3f8ef49", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "65fa3cef4bf6ed046252c7be42348838502d7f6e57f7398e60b77a70c5c32cf6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "2c0acc32f56d5d71bf77ac55e0ce9f9ce39aa27042445f073321f34e08e87092", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "20ce7a3a2b649668bc7424c078f1923b95d0d6963767ca278380e9aa8783912a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "0580a990264e657418d1161063f6fa09145d701adc8ac6e05c2da7014fc35204", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "e05a0cddfd3eb90463babfba3182f2045a9e995001236e2f4fd8993750bc51f5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "6a6d81d703ef287c5f33c328de9e84d3f5d4cda22c431b5358eb6c0d35ad8b4b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "29a7a16bf5b541e08c4dc18e7dadbd17ad9b77d8d42566e0429e02a4732d20f5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "cef90f0bf016063417e10e2fad1f55e6afbb7f713bebea1558aaf63367ee4eb4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "a0a2f739c9dd540e72c6d45040966181c4d7d5b59e4a88b01f8eccedf996b461", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f340ddd4cedc00c384d92d9748ae8fe2cbb426890bd53a2f3fab0f9fe09c0593", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "3630d2256dd1d918ad85c6acabef1698189b9b8212469305657bc8ad77cdb458", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "1b4123006b4c20734527f534b13af9f14ba4a3156cdac3c04e37ee69abcd1f99", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "70d68114846ecc7141b610891f0c1d260541f83d16ff19c80354d728a2416024", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "b91c085008f0a762be7909887e64a7b8a175d0ff7ebfb84250c66b31b8d8233c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "f6bcee11fb64189ff1ca289ce573439b4b8ca4710c1b05534555d106340be4d8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "2ebd6693c5934fc1528091a17818ea54d8472674210e9ead86749cf8cf6c4992", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "4147b4f99d9af6e844727f156a8151d72d9f497fd596a3c7b3bb79c191833e8b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "e1d21c93476edb1dbf4f180e234749e792af2cbe175b0bf0a718a7d8cd5c17b9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "2354fe353a180d0a5a423e37af3243a8ad48b75ae3004e29974d611aef945dca", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "033e0c7cd22e643184bf0504e606dc2f66a9793789ab1f7fcd16fb2088385f60", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "4f322de25362882e1a899cdc6146bc66e063d6788603da908542180a3adc35fe", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "4173934e4f567d8295ba3861fc60de0b62110118f3294cc5c6b70da6be762499", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "e8fa814b61dbc5142bdb85a8a6d7b48d4ee1161dd2a3915aea4b2b84f7a542f0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "44d968f1f91bff51e04c487c3d09b54648aeda13654b45ecb869b3d6da9d9c55", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "1ce8ff82dff953fd444bea050b9690c850eca045864ed8111efd0477fa789e92", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "4b5f098cc4bd131af93f52f23e16a4c5edd84d8419d319d7c00ec8ff0d1f4f2d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "494a63a9e858040b5b9c4ab947e6a35705342a6adbc830016e7d878e826b3e81", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "562e81d434cc20366f6a92bf000017b78d658ddd8db697c9ef84edeef1881604", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "3a05bd811aef3f7740c3220b07271fc6e7c7e309498cfe114927cb412c504c3a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "c7625501e7380f57e1d3fde9fc1e8a0b05faa72ee08c949bdd14cc7b2f441e9d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "a011ee06aa64936bbe2714a5c634b57e0a9956e7d283e4441b05d95b34019bbe", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "22360197ff826ec9fd531e026ca38418a49e0d435835e5854753a27db4236693", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0ea36e3e20996e44d195302f5fca26de384ea5ae3641debcce34af6d010a1099", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "5bfdb9609a736c64862e7460d81d0ae1ac792abae916ae3bf05b81b841602d82", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "4d1b1290f2bb064eefc4308fd8537605cecc7ecc0d882ba4daa03e9f6def7092", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "3dbdfa9fea1863d2cb0c6f64954c46cbd994c1ff303e7510ef1783af01d6f09f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "77e56921cdb8feb923b3c4c87696313cc8ed4cf803a1fe05093b8453418ff7bd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c1c1630d23f6da0dfd07003eeff2aadb354c8553e98b20f8831068f9edefdc1c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "0d3bad2be194066bbb3ea6ba329caa251178ad3f9afda8961cec8c952aa84bdc", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "11227c6167ed529bf76cbf856ab789457e67769bcea10514c2e12935ba68baee", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "63338cb4eeae2a080098189f678cbf4880d48f9efc16e9ae21b60e0e0ffdbc23", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "b82e3096a7c44d415132ff97bccf3a87ece7bbda09bed3d46479f86dc49c57c8", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "328eefa78cf77393e517761cf8be13e7497d7d0789a5241fabe4b270f5191593", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "8e7cfc1d6200be43b4d734ab074211a1e0364226bd9088304300d87cbf7058b8", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "c26c997987c0a68d2f0ceffef1a626a1d1f292d6c08037d823d597600b1e06ce", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "7448e0c3eae65bd5407a8efe72dacbc44eb3edc591d0474facac7c56d1b51718", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0d481310bf77a496af16e6ad44583f35fe4c81ee88dc4940b4cf00330c24cdf5", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "93e8311c53384e4b196c3abd53e37d02ebccbc0979ea5f19e0c64407be6a4835", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "142d64c9a38d3194d48c9c7d2229acb6b28db31093d683f6e6e3a42163e1a8dd", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5d4e2f626749ba48940c3abc534bf860182905d7c73da932f8b0a2a5e1aa190b", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "a531f9da85e200bd254555290038c6b73e75c35acac284a8173158035b423090", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "f605f3ad3c76fbdf90da503b4b3726f173f848328c50c6bb1ad21239c1b8c388", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "c2dbf963bf9d9f68f8b7b819edb64aabecb8750fe4b29c83eca9cb27cae5a05f", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "e8ff6dc5e2b0c8dd3fa66b7d84bd0e3c55d289b66477233e8233a1dd514907d1", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a4cbb02816f73d2b5c3dabeb80f7a041d5bb333c41b3f4938c494b8f1167b23a", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "470d9500cf103e22043374a95c6078b1c216ccbc6e9e345d889c85ef037c565e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "c7a2f1bbb76361c89909e8a480434eb7185dd5d65cb2c80c5749eeddb1275cb4", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "0200df7e2cfac2e1b05b357d764bf0b61a8201ba3cf87d6fe9e2d0e0f24be899", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "d48b7489aee1cb7e71f517233dfe031bc8e88e954c404cae2eb7b3df911e224f", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "37ee177c0b6f36e5669e366d3fe6775f9012272aed5e89dc3ed68a3886f4ad2c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "5acd6426fab422b7ca501facf2d2c1500dfe998362a0a51972966bea800beb47", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "0ba4b140a9e3b0ad70730203159627d63a83e4c35002ed5fe04034d35599721e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "5ad50495d8b217038cabc91bd0494821273aceb7b66d570bd8a466cdac4de495", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "eaaee1fdfaab7a0c51ddd07b81ba7fb2bab4ba65d9b75f8968bb0c6e99f52365", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "2fe5ef6d0a51fc78452206f0b6fa9ecb8c31301fadb26beb6173c6da32e05ee9", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "916cf260001cf5163aec2c2ac682b3bb3d78661ecf747c194555ad3e72a0047b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "89e3acf4da6fc523038908eaf56d4ea26ed57817b32873421895ebc93803adb6", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "8dabb3fb9b020013cad9f37a1fb063f24309ba58e9e0b5d86dfd934fafdae1e6", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "558f4ab7f40c9ab18444d6cda9cc381fbecbf0093a5f793e0d49b2cb2da56eb7", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "5e4b5b7c4add98cd067d2bc36375944dd572d9315a7adcdb210b2d0d5c8ad853", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "371b8ec3db7e4786492e424e19c4e3edc08e3e5c131152ae42955a90aec8703d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "db97e290447b36146ce352a892a824e2b2a63afaf38a9e3888bc9d24803b07db", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "2f0cf8452bba18c7f7550c85333cd510306fa8e5b14060f56e1103118396a28a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "ed7b2417b91c687334cde5758d24a357c202be49dc21b048ed62c5e21ad49e0e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "7d40bd72b61ae5577d3d9bdb889bc760215dfa90e8386cdf6c82a48e3cb0a2c6", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4254cd46f6d72938d9dcfe47e1ed461f90b50e2fc6909b1475c9e825487aefcf", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "8400263dd2881a9b48de2fa9727df9826b70758ec55bcdb60f6660ffa9cb53f4", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "e135500eddb53bbd6cd2649683ef9c77f994e15bd554d17de19ad012952eaa1b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "c1f58ba389f0c47f9c80349a9054f30bfb935c76ed894551f13ffacc8e656d96", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "7c8dc39e58204860134bc7166cba49f99cbcb158e1a485564b96c3be159a1f8a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "8b3f028e78458dd1bebf08449076473483831609caba22af04bdf5f1151a054d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "6a0b74e4ef38155995ca7393732617e5cfdb9f6248f0c067fc325602e8515c7c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "dc5c0e44b1a428cf56536204b48334825a528391ff5dc01f86251de99efc53f5", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "272b9fa6f989bcd56c40da2bf53361d78a535d2da002f13182c9f90fd32cb365", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ea80135dd6b38823c314e66ee2400e29404cad35fa1dbbdb2faa0f29f5f71abf", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5df12e4549de462d2d860a7dd69ff4eea83fd00686e0afaff49e31c22835d363", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "d2b67f35423d51951ff8207a71021927c73d8a47d418575f6e978c9287875fa0", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "70f1a43e3b134408a2c244fea76a170502faa8ffe4abd4f54e92a97e091ae846", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4254cd46f6d72938d9dcfe47e1ed461f90b50e2fc6909b1475c9e825487aefcf", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "267c66a7150d4e95c39e709a1bcc5eec2e504a9b46e82a950c276e8b126df07b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "55c7e5aa5b4298556cb2a8bf68a8d7bcd2142a68efab094d27fcc4a15399c87e", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "60f392f502d33764296265248c76afe3b713c0a1e621548cf2de79a7323f3e73", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "b15773f72859f69017b89130e6e410527fc18abc3f4a02543efc5223ed19ea0e", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "07afde877f001241c18eeb54552bf116ab512a1cc77f32b4287e83235ab8ffc5", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "7e3b578e6b8b38ef8ccb8038f1ba7424633deeb47a65723384c66306013e1944", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "cd9d4c5983b842bdf9e955dfa244ff9234dbd6d2b01a9e7cbee4643a81fc588c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a469bbc3457cb72a0b01b260a604e2b7c9b84d0629c09b0f09a0ba925e98fcc9", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "7c21500b228f89f45f2b3c5f74cb3d30c1ff0d2e123d682465a870dfbd42239c", +"T3T1_de_test_autolock.py::test_autolock_default_value": "cde22d719777e5c06972943bc0a250ebc37d4692ca154940d1477b5cef9e332e", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "3b5495b9fe7d81a5fd252e8474312cae54a98f07cc4ccea0c59099b8f48ab6cb", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "3b5495b9fe7d81a5fd252e8474312cae54a98f07cc4ccea0c59099b8f48ab6cb", +"T3T1_de_test_basic.py::test_capabilities": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_basic.py::test_device_id_different": "bb8041ac898a8c976612f15f0d3692d80f94158b7b51ab259913a57162f7ee04", +"T3T1_de_test_basic.py::test_device_id_same": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_basic.py::test_features": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_basic.py::test_ping": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_busy_state.py::test_busy_expiry": "6a305f339c530bf79302e6c477615f855633577e07e086d75b88e997fa075f59", +"T3T1_de_test_busy_state.py::test_busy_state": "abbe0cf35ca8ab65a7d25d24026c9e20a6a656a986072a89b649e6df8e31558f", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "3a657ea8de469c343ae5f414bd0c6b9a16f2607233e3a51712b8d6f947453bdd", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "3a657ea8de469c343ae5f414bd0c6b9a16f2607233e3a51712b8d6f947453bdd", +"T3T1_de_test_cancel.py::test_cancel_on_paginated": "b7d469e7f95af14bb59733b43e8a1809a73574a5fcb79f236e12eeca10f1628d", +"T3T1_de_test_debuglink.py::test_softlock_instability": "41b44bb00bdc7477de35a85a8ea9604b7b6f7f6b8c21c472416919a34f504bb8", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "821426e2132179f03508ed647c903f2aeb26171e3627f4babf38ef2a4752f3bd", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_language.py::test_error_invalid_data_hash": "557a7bd03eb3861d00f6964842c0935ad1b505beec7fbb6d2f1252944c4009cc", +"T3T1_de_test_language.py::test_error_invalid_data_length": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", +"T3T1_de_test_language.py::test_error_invalid_header_magic": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", +"T3T1_de_test_language.py::test_error_invalid_signature": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", +"T3T1_de_test_language.py::test_error_too_long": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", +"T3T1_de_test_language.py::test_error_version_mismatch": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", +"T3T1_de_test_language.py::test_full_language_change[cs]": "a43fa00b570d3e624eb3b43eafdb9c09bfc87184214a52f01a96f94f76f42114", +"T3T1_de_test_language.py::test_full_language_change[de]": "b6065018fb819fb23507cd6a86c24a329aa4c79d1bf7cb1c11915949abfd64cd", +"T3T1_de_test_language.py::test_full_language_change[en]": "e3f73f84745811999b68d27f31e83f9651f551a62355862cdf93826323b4c495", +"T3T1_de_test_language.py::test_full_language_change[es]": "65cce7fbbcd33777a64b1c2e645c4fc8dbdf7fa7b2ecd3d734c11f80304fa129", +"T3T1_de_test_language.py::test_full_language_change[fr]": "183cdb2ca4d7221d221cb8b57d3de327bb5e394a1216ab14b2c181324eb73737", +"T3T1_de_test_language.py::test_header_trailing_data": "2ef2f51ffbf7f81d954d7c7e33c8a06b136ae6ae59ab682bf4948855d2034e13", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "56ceaa47fb817fab61054f3c61863bdde0a9a4340c9070ac2b0bbe167af11bb7", +"T3T1_de_test_language.py::test_reject_update": "22371c5c2d94c259930891cb42897a354f3605d5fd1ddc676ef3cf2bdf1f5689", +"T3T1_de_test_language.py::test_silent_first_install[False-False]": "bfe5f35a6f4cb28a1bae61864ddded889effe20ecd3ca1504481cfbbe2389fca", +"T3T1_de_test_language.py::test_silent_first_install[None-False]": "bfe5f35a6f4cb28a1bae61864ddded889effe20ecd3ca1504481cfbbe2389fca", +"T3T1_de_test_language.py::test_silent_first_install[True-True]": "c01be9445767e8752f82581af4ab3efbbb6907b239bbd4f58d1c60fc9641163f", +"T3T1_de_test_language.py::test_switch_from_english[None]": "b57ad1eb4ad4924b8d4b1afa9e4108dc6856ca3433327e873a82ea7ec582be7f", +"T3T1_de_test_language.py::test_switch_from_english[True]": "b57ad1eb4ad4924b8d4b1afa9e4108dc6856ca3433327e873a82ea7ec582be7f", +"T3T1_de_test_language.py::test_switch_from_english_not_silent": "f9f00f9519da4089fc80668617c3876f9ad4f7d64d6711ab535d8e344d964c97", +"T3T1_de_test_language.py::test_switch_language": "113fb0887f817ee7e3a936572c76cf083c20cc9c925ad8e3c24334a3006959ff", +"T3T1_de_test_language.py::test_translations_renders_on_screen": "fdabe5604170bef5371972d01db81769e925c18ba5a16baab8aadf35a6b4335f", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "98e08a8e45a3fa7c554b0542d7b35ed7d01d511f6ef65275ebdb48773bb82323", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "caa2888fe26a5b9f0f0d27e99f1438c2cc0046ea5bb43d828933168b0bfd54c7", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "e4bdf069a56e92bc4eb6b3167f7826e0a390b4cfba8f6d4d9676d65848eeb5a5", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a85dca9eb05a99f61c38e7ff1eb66e983edd6b11cbee812fd88f6d12bcfa9ac6", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "3c1d7c81176266a31b4ceb8f3243cab2f610d6dd12723d800277420c8932f833", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "5c2e235e5b2f43e10d07727c0edf5e51830802fde61b5272bd69896af5816d32", +"T3T1_de_test_msg_applysettings.py::test_label_too_long": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_msg_applysettings.py::test_safety_checks": "3e989d2b0266aeb6d72c35964bf0723491c5fd57cffea8b187f6aa72368b9b1f", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "beecdc5762a99ccaa40ea798834613a8bf695fff1c6b63edf676efc85623e17a", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "836358d6c4d110b01f45ce73908f33b7ed22128499f87fa05b03a8be6e66ec86", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6f8b37f7f22f2467ac6b7c4d46d683667eca2878cbe9e87cd59812f8798c1e46", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d43c820d5958748aed4eff5c0f15cac1c6dba5892490962d7a9a781eb960860a", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8ca6cb9dae60a95f2e485782b1b893e2428d91c4bca3b4909030861a37412dbc", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "ae53a7b7d35bc574d9d40ccc04d024dd232fbe2cc954923a511c0fe70222c7ce", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ec641700f8bdc9b182c937a16894f9364b2abe9d750a874f9282746a58039b4a", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "5c96df77dba2b5a6423a9af7bc6d24595e7f9d387a0b550ba13982a6c8bc9283", +"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "37bda2df4490d81a301217f1b1b57856e4fdecf0e89962708cd68f302c749545", +"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "5e2d615f24eeeecf0c50e07377015cd16be02bbbca6224b2ffbace6de128d3de", +"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "d5b923bd8a830170343bcff7cae220ab2bed4853261cab70da358a5742cfa1bb", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9ee4d787d0d8e293baad0b2e347e8b1c1bce45b9c0e6209929ddb2aea3be44bf", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "147bce8c2d91b59fb805cef029806aa1caafdbf33797dab5b74f70daa41a6b62", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "8df8af0acb2b62481b894ea0f93f4b0abc413a1f148d1151a1955016b0683958", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "86ff80f261522b9d9ce5d6d56b9fa05f2d3c083d4fcce8e1dd53dd2499f68267", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "298f105350617b5d689e8d571e41b970dcd00bf43a06c6a62584e6835a5b2dfc", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "4844f7d8dd9e3bf4f0ec4a76508057072aa7c50eae45a7366b20ead4516fa458", +"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "38e82e9e9a8ecae76c951d946af992d9b0f7e880441838b47cb8f190e5c14c87", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "8f496f504708267d40b210cc636264525d57238f4c7df2a55e771dfb506e9b8d", +"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "c1b0306fc99e0b0d605974e2c80fe1d0f2609cf9cfd33848d6c43ef705da418f", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "e09083a0c0c3e51ac20cda6ce4f0c0ad7631cc5e88b1e66254ac450454d53ce9", +"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "72c3fb1dbbb9544de35b9e04a0794596b5c4a4d01a7d4fce2d07aa594bb79f20", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "b31eefcc3fed22667e1a6049820564ba02567f3dd7745fd512a8350a727f1c08", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "72c3fb1dbbb9544de35b9e04a0794596b5c4a4d01a7d4fce2d07aa594bb79f20", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "72c3fb1dbbb9544de35b9e04a0794596b5c4a4d01a7d4fce2d07aa594bb79f20", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "c3d2ceb1d57cad1908f97bb5465a20210dfbbc52ad33fa2b41b8af604120b740", +"T3T1_de_test_msg_ping.py::test_ping": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "e24498a20b58f79e9e7c67b7cdbdf13229fa5e0c5a37a105cf9bef9662647bda", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "733a100b6551c12390d73f71ec39fbd1273a7e2ab04f3eb7ba439560556cf63f", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "f7f0bc822a4fc140ce98499583d50f3a540f2cb335479c3daaa5d90f70d70af2", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "4a4fb12432df436ce0cec76c6852e3d40a683060bd0462ce57ee484bef55af12", +"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "bb8041ac898a8c976612f15f0d3692d80f94158b7b51ab259913a57162f7ee04", +"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "64789f174ff2cb0f408eb68f316761b74de38058fc88c55c45fa6a87357e8533", +"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "64789f174ff2cb0f408eb68f316761b74de38058fc88c55c45fa6a87357e8533", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "3bc4e01fc068ae97999c4ced61faef89daa69e864292781c95f06304c48519ea", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3bc4e01fc068ae97999c4ced61faef89daa69e864292781c95f06304c48519ea", +"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3bc4e01fc068ae97999c4ced61faef89daa69e864292781c95f06304c48519ea", +"T3T1_de_test_pin.py::test_correct_pin": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "01d24d7d17914107a22397313a5c1182e4ee6326b4919667ec2affdede574075", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "855cb18642f89778b2668e87c48bc6db63b630b732a995921349db57eab20842", +"T3T1_de_test_pin.py::test_no_protection": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_protection_levels.py::test_apply_settings": "a6405d063f03c31dd3780c483f7aa7793ba92e7927991566e7616ebe45887ec5", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "a5e34306b56d21bb4c28919718898f73b2de37c3fa30908f92cd8d4e5674858d", +"T3T1_de_test_protection_levels.py::test_get_address": "1a6426a69dfc9c8e176f9201db7727e643bad62af566f1c784f8005a0662bbb5", +"T3T1_de_test_protection_levels.py::test_get_entropy": "04358f17ec06b046a974d7f6eacbc16552fedcb0450106b2ebe2cb5557b1fbd7", +"T3T1_de_test_protection_levels.py::test_get_public_key": "1a6426a69dfc9c8e176f9201db7727e643bad62af566f1c784f8005a0662bbb5", +"T3T1_de_test_protection_levels.py::test_initialize": "6c9e20ed59e70a4ef780f64c8bceab219a70205febb33989ca40fc62c1e0c1d2", +"T3T1_de_test_protection_levels.py::test_passphrase_cached": "33d42a9fe5f71f6b06835be4bb506a909464517201ddd4ec5790c6932e1e8266", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "6c2034a73dfbd2c024db3f2751fab9304d290b1d9fe0d0069be11004a8bacfd3", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "0bc2987a677716d4e1921d889fe7b6f7c258f5c12c130127c13b1e55bb0957b2", +"T3T1_de_test_protection_levels.py::test_ping": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", +"T3T1_de_test_protection_levels.py::test_sign_message": "94f46f3384afd80187ee4f8ebda5116d7c210644624dce182fde7a5223066fc3", +"T3T1_de_test_protection_levels.py::test_signtx": "ca814cc12277d7575c14b6262f38badb713b7ab3ee09b76a570d315aed90b27e", +"T3T1_de_test_protection_levels.py::test_unlocked": "f64e842f2decf30ea37978033b2049f8f98e10bcd4f14c224b3bb2fb24de5414", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "3b9f4021770e20edf2e53ab082e0b1258fee109fe928326f0c687d5fda9253b6", +"T3T1_de_test_protection_levels.py::test_wipe_device": "e2d96273b3a26d7f2143a471fe8247fdce638c24717ce4fa9ed104ccb076f5cf", +"T3T1_de_test_sdcard.py::test_sd_format": "907750d3bc860e163a8de09809c981b62b6a695262c4948392158e2b190747ea", +"T3T1_de_test_sdcard.py::test_sd_no_format": "bbd77e119f315c5bb18d00b853ddf6db9a7ff727d17a0e2e1696ba905a29b0e0", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "baab8c75f87d9507dbf5ca7181bd392f4b6f1775499d19ce2594e2fd2cda8a02", +"T3T1_de_test_session.py::test_cannot_resume_ended_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_session.py::test_clear_session": "032e215060ed21701844e9d3f0499e320ab1d2ba1db9f6220f38f9652a9318d1", +"T3T1_de_test_session.py::test_derive_cardano_empty_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_session.py::test_derive_cardano_running_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_session.py::test_end_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_session.py::test_end_session_only_current": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_session.py::test_session_recycling": "3bc4e01fc068ae97999c4ced61faef89daa69e864292781c95f06304c48519ea", +"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "9965191a5f7b681d68fc1b992084cce3b25cd90ef19f4694f227891124232879", +"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e0930bf2bc41822307836da0cab0d54f05fccfe794c7691eb0b81e7ef6b2e3ed", +"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "64927d9dfe75fc310fe65c18b0ef60bac9fd470a41f3429d1a2445631379317f", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "77c691e8f89bfc9f17ef06bc49c22e4c7949e316872061d17a597c7933b70536", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "c7013356e4ac37931e87b5f404807e4569cbf58da4ffbd1f4a2e22869877cfd1", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "22c6755c65d668da8b25a6bfdfeb6e44fc2f7c795696e34b007883387ceec1ae", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "33d42a9fe5f71f6b06835be4bb506a909464517201ddd4ec5790c6932e1e8266", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "885c8d684fc6152e54fd7201328047083cba32567a815c76b59bba62fb968cba", +"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0d5cb525361953ef1195f48710471765c9797caee8ab29a37486fb2d4971c02b", +"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "08c43f43d811acdb6ac86e29277cc8f2cb3a485ccfd5fbc6e54b092ec4fe998b", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "1b2e66c340c1560791d4065e73c02b3971869579d3d883c7557a2b7acedd6ce2", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "ac024409d641a7a075c155f8bcf7f39215e21e01e4abac29eba9ca18f45e39a3", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "ddfe3ab39556056ff1f5073cd1d1d7a969f232b04dd5cb1975f126690b83c6b8", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "84e4f55befd1a8e999408d3abc852d59a5d5cb5204dc1987d86311b08377f6a1", +"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ad904846c709d1accf0e8e5a20ee33cfa9fa86d87a87bfb4d735133e04cd9899", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "c617ab4739bbf924c710020a67386519077e7e349a18728af2dd51c01d666b24", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "0d16cd2a9688c3352454b83674d5adb53d4b07e2db4c12133071d35acae5f338", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "b16ba76895fc5e465f3db0f7d45569acf9417c5174e4096ca3f20372cceb8d53", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "67699da2088438dd27c4827b37bc7b95a060c76490996f42e47951b28b58c34a", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "aeffd3f1c8734b75c9c2bb0ce442ea800ee1ad1f898119200f9a095e878e6420", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d288cd606dd82993b654ca71f8a2fb07f30112d6d543e8dd1e12ef14daea6e76", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "c9c6ca6f85978648674d2a6fb9b5643d85d851519e5d5985a8686eac228d43a5", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "408acb8501b4ded97825f852e4382dfbc0a8e83b67de174d324007c8ecf290f7", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "38b3a921fee39b81ce3de9138817f645b0030620edec7eeef23cff40b3053b90", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "41603484f96a675fb22261b5001f164eceec0af20732487413595aac0a802a87", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "0fe68cbfb76cd25a69bb8d40fac4fd52a03873850cc5c34b0bc8b477b5bf3eab", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "13e101844fe6fe4c6c5cd2972fedac809d48c90b039a50be92ab13d4c75e6a87", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "de15bd6583b3e2d81d7d57d4b308a74218f2acd53839d5ae4118f1c129c54638", +"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "8520e5e4b52dc2ce39c975c393e5f982351c5d4da035f168b69dc9a5c36948e7", +"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "172cddb079c4c93bf3ddc53b56a8cfd9a03cbdad869764c00be653a3cddc2d46", +"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "1e145d7dcff7dfb5d4171d3b2006c0202e5aa3c9b33b22596d8b4ab61f7051be", +"T3T1_de_zcash-test_sign_tx.py::test_one_two": "cc4571566da0a78d0b9d003ffc4dc3d939a5b75acbaeac35d041fc52ac2ea176", +"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", +"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "061f558d6cebb44c1d1179e6a0e99230073283e41f7a97a23335aa3ac5bed25e", +"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "6c28320c6579949155e41cc119e3af715b69452ea72ae79b67bfbcd973ce2d4a", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "0c9383d34c76ce69a346a3f73d7e7b12df5c3aa91d70e257c443f4a0ef07d46a", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "a7a4dea125e8ed70d2591f5f33ffbae3cd7f163eaf98acb00dafe33d15ab13c6", +"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "e63d51c20da8d6ef75ea1ca9ee47af773a56a0f579fed2163e2dfc2b395c6f94", +"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "4ae127d6eb537a0a9b238e5fdc945ecb29b4b4376fbca96c1cd0d770e6e34b04", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "58c4e45dedd03aed1dcd8cce492dd6d149cea75b74c0ed44acc7c011a268459a", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "27ab4b2cc9908fcdf98da01e18b235aac86124d4b1db17ca8cfeb64e6c3cf0f5", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "c60afcdf51bae7556f377e169b1706bc05bea39129d84fe2bd0e95d9e258e59c", +"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "234738266b5d33cca25f07f73382c10c806ce40934f06c5d45f3b568dac4263a", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a42f7716fc4ebcf23704734dca63fb6eb925f38d993d9b902286f75738eca349", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "13fb49714ea5917f812d1d4cbf823370353707ec49ae4b54903ffff5ba074ebe", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "dbc4b886ed7072024874da7f20fb881874dd4c6c8d4c92cb8b57771ff492d8be", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "a42f7716fc4ebcf23704734dca63fb6eb925f38d993d9b902286f75738eca349", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "13fb49714ea5917f812d1d4cbf823370353707ec49ae4b54903ffff5ba074ebe", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "dbc4b886ed7072024874da7f20fb881874dd4c6c8d4c92cb8b57771ff492d8be", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "aa3acc6408fb95bb0f2c5709ba31233d678ef9f93d8334c73784f40ae1e899e9", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "2c62d79485094a6d3182e72aaa96784b12266cb2138a0b1ca6efc0a02642a7b4", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f585606d16b36e296c147c584f0688ea2b1efa0ec8e8f3861ef4a10b9180eb04", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ec46f3fe1fc5f9e8abee2eccff29138ff2fe9d17ce7854e45ff861543bca1762", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "8194452a1606d0ddbacdfa346771e8e32e5677ee72c88d8f3888470731e401f4", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "8194452a1606d0ddbacdfa346771e8e32e5677ee72c88d8f3888470731e401f4", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a352e048890ba8d0c06eb8772a297d8e2dc3270f57662ca3e8cd55fae6a30c42", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "04d16ebdcf8b3b9630799fdb5564a643a01e7f3dbc01eb62d61169f64035a0f9", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f9d85612cb5ab7390417851dd3f7aca21f312ae672b4fe59054d5a866e1034ce", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "53a2fb47b95e1534dac980bf05ec3dbd2c1833b29f0411d301ac8d100ac89dae", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "53a2fb47b95e1534dac980bf05ec3dbd2c1833b29f0411d301ac8d100ac89dae", +"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "fbb7815c7b07532a769cac941abede81b4b972b184cd788799cf0e8e49ebdfd1", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "fbb7815c7b07532a769cac941abede81b4b972b184cd788799cf0e8e49ebdfd1", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "4ee1ecf68b7a11a857a41b73a9e04d07d1260faecd16b83b381013633653df79", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "cc86c4690c277f136b62876c416ddc872d8faf78a1162bdee1d5f2a5e895142a", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f66b23e805913e7b4f06c48ff89a20f84638fb131832c3ba0cc4a08cff419270", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "21d310c66a558b293bdec95b9f33925f7d77701608ac3448c5b521b3defff152", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "7f02e27fee1c9643d3b82f823aa22fec6aec9550e66dc4a94681d63e3f41ce86", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5e4e8d99c1705b5777826a96860a4d99fc80c97e49494a6b5c28795a114ec50e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "1ceb19ade1cfef07b497c9f76a4a167410b187fbae7191ac1f5641b3df41234e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "684e4befc58a9f3792b0bf9155674f5f308396474058c23f2feb5c458a02636f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "f9f2c2f472ba627ea19842b17da884b9a65a5f03b290793e7e0163466f83952b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6858c3df8e4c3d616e5b28c9e85ec130ef19c99eb8b2ed76e52ec07089992cb5", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "3407de20c6e931b0b994602d3ddbd9e3830d86ed8728852431db13a29f70b7b5", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "318ca30cc750a6ca901eb0b05d88aa5c2039cb7b04294cadb1628aa9dcb780aa", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "355d14285bf5bbd12a77d32b26465a97fd8cbc81bc4323a68e630063a07fa601", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "683d77dddda2960f3812f030f0897952ad239ee1c3e754c632c4227a57d82c27", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "5ca8449e08b0dc52df7f64a3e9e7d191aeda1578dfc0d57c1eb5f8eb10b53e0c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "31c29bd88e760d549e44cfb858cfb7acc9100026a23b0584ba7a5ecc73aac8df", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "589813f9ccfa934b62ca2bd13cd60fcc9d940d37edfa448f23b8cadb80673bdf", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "44d9fcb15659ccb77b462e49a71f43f1404eca6dd51538cfa4375bc706505203", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "9a5e4d4271c0d4ce3b94280ada82620cf11509d6717b45a53391aa56765bd5f1", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "dd36e75caff39e542d84932a39110a459e6c3d37744845c5d98d662be40e9a7e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "db76628ad7d6e2f98c952467f24223c0a3e89ea70ad167b76eb62837a02b385c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "69a73a79e4800e878bd400ae8c9fefc33031c9b321b3098235c1d5404a8481d2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "f9c9e3af6a3f16c96542de861c947831ab27e818aaa76a1906fe44023798842e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5e4e8d99c1705b5777826a96860a4d99fc80c97e49494a6b5c28795a114ec50e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "1ceb19ade1cfef07b497c9f76a4a167410b187fbae7191ac1f5641b3df41234e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "684e4befc58a9f3792b0bf9155674f5f308396474058c23f2feb5c458a02636f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "f9f2c2f472ba627ea19842b17da884b9a65a5f03b290793e7e0163466f83952b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "6858c3df8e4c3d616e5b28c9e85ec130ef19c99eb8b2ed76e52ec07089992cb5", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "3407de20c6e931b0b994602d3ddbd9e3830d86ed8728852431db13a29f70b7b5", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "318ca30cc750a6ca901eb0b05d88aa5c2039cb7b04294cadb1628aa9dcb780aa", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "355d14285bf5bbd12a77d32b26465a97fd8cbc81bc4323a68e630063a07fa601", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "683d77dddda2960f3812f030f0897952ad239ee1c3e754c632c4227a57d82c27", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "5ca8449e08b0dc52df7f64a3e9e7d191aeda1578dfc0d57c1eb5f8eb10b53e0c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "31c29bd88e760d549e44cfb858cfb7acc9100026a23b0584ba7a5ecc73aac8df", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "589813f9ccfa934b62ca2bd13cd60fcc9d940d37edfa448f23b8cadb80673bdf", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "44d9fcb15659ccb77b462e49a71f43f1404eca6dd51538cfa4375bc706505203", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "9a5e4d4271c0d4ce3b94280ada82620cf11509d6717b45a53391aa56765bd5f1", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "dd36e75caff39e542d84932a39110a459e6c3d37744845c5d98d662be40e9a7e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "db76628ad7d6e2f98c952467f24223c0a3e89ea70ad167b76eb62837a02b385c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "69a73a79e4800e878bd400ae8c9fefc33031c9b321b3098235c1d5404a8481d2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "f9c9e3af6a3f16c96542de861c947831ab27e818aaa76a1906fe44023798842e", +"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "7090c0e143dcd7a7f4efe696889c18851fa8d5341687cfc8b562850f5ec7fa6d", +"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "890b91eb76127a6c933cc756bf0a306c60cf8c20d9694246060a779d514af9da", +"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_bch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "cdda774823d4aa7a57811482d232830d3ca8d5ead429f33980dea9fbb210cb75", +"T3T1_en_bitcoin-test_getaddress.py::test_btc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_crw": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_elements": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_grs": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "803d970d9885cbdf69dc14e4b66055eec852dcc1873a2bb3716f067f0679824d", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "fe1187112763c512ed209f356e0bd807ffee045955c874cbba9381986413574a", +"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "3c27d0f020147af965148dba508454a2cca3897b78684b4c79f5a0111eec9618", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f3fd0d2e378c4dc102b40b81ee54e36eb711cd61e37a7c9feb9469d8f719800b", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "9cc588cce0fa95df160daefb5236ac7af5270e756f4421119724b4e4618f4055", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "cbd33ea73902e2afe3dc51a9809dd45af0e01d8cbc9252d17e74f1b4a71bb3a7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "65a637dd4deafac298c7a7098fe4e6206a502a0095662d9fe7ceb680208c1376", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "b578eb0579659e2b583ff8ee262c73fb56bcfe4cbcd715d8bb5af2e9bbbe5e1a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "697c3e282c61be3399be4d83f4ce5fd9d178043581e83cea8b30b2d72505f97f", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "590627251da72d7217e6ca3eb048942431c941220a226892c596d20d3c190787", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "561e96e373c1b06caf3e181a02c05006cf8d3cf030942dcec8b72e2692d93081", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "cefb76c78e0c254334a60494722cb61ffa7abab6575605bc66b6b65a6a2b0386", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "98a2c7f9357c3496b6893aac45f154bf8d5c4c78d80567a03f718253f4ae8963", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "a960d66dfbb6558d7ef5117d6ef2c4e06c00840b30eeb0f03ff886716c7b3122", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "b91e1c80a6a4038cdd6975cabf84b2d307d182936fc91a96f181942d12d7ea9d", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "b06b8c4336aecef9d29c32d0edffa8311faf3625b66a438d39df424398a6b350", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bc04a2fc5bb8312bc0b87fac2cc272224e6eda91e5221fc89238cd5111b5b258", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "11127aec8805163f9a6cbc8aca7bf8324df16ce51c5a9d55fb94d959c1969dbb", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "424bbd866cfd4053bbec8f91587bec1fadf89e4875250e8e773fd71f943aca08", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "92856a5d4f582bb9e7599f7fee81069959a31f53683f59d814f4d56c5e6ac2df", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "434767935f312c127db4fc7beb9fb5f389da6788d50bd663d958c4ad2a2ca653", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "54b1aff5227a5d7e8b58ff8cb132a4cc4fcaf8282a5eadbf19cab13d893484a9", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "9c4a71909f330b898bac1e084c14d945ef656c24aad735ff014e9c805136484c", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a9f1661e4a805d71433b3792d22157c03814c424e3d883a4edc9f0f456d19d23", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "79fbb96f3aab9e2dfe16a56c24c99cdee4b56fb3363469614788269039b6c476", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "9d7de537cc6a425e66a5dc041f9cf8370838da47606ef0105a4457c42ff79aa1", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "894f819df7b41955b0a481ab6ad8c28812b8e869be9da7cf648ac3655837eee0", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "894f819df7b41955b0a481ab6ad8c28812b8e869be9da7cf648ac3655837eee0", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "a037411f4990dbca9406069afeccdd565f8b5bf069297c62be02eb90b13bf841", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "07299509721b2f25a7f5521fdd8735cc97689859556f0b73d058970694d9a226", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "5541c8920737ae060c7b8bb2f9ddd5ccd1af752177c708f001dc52554773949c", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "9b597dd4c396d27f02acb3696eba37cbb682308555574d2205847df12b35d3c8", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "84dfe93c65000df88302736bcdfc53761b7c180fe1925dcf56166e86034a17ab", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "64e6af2ba2888d738ca9f6367804487aad6426260ca2d5ab2482d0bc5a794a37", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "71563e9543bff63b25f330b17556c15b369a41cf2a4e46d826ebaaded4306166", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ad2bf3af515f61cd5dc565d9dadb03e5829f5c64912877829ed68b337ec9a641", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "da7ecbb8d4944cdd92f8fbf8ff2f1b6119baa73a739187ca32a7b7d051752b9b", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0c853d4e8055cad9561c83f9a32c2b5794e303a53a1f1c7c7202b9a33bcc7b53", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a7b0642d3e2f6b4c27f7cc0692e12a51a71dfc398824850614ee48c0c79f640f", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "98371957e209f19ab5306a8bbf97d61757f246ae7cbbf34301603350b71927c5", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b4ee7b4c8f6c5e8090a22be2befb8fbf5c0e7dc9c12820a75ffb503b75220036", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "2f90abdad13c8b8749bdfd8e5c26b0a17d6f080e36a39744608f783c0e5053ee", +"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "1ceb19ade1cfef07b497c9f76a4a167410b187fbae7191ac1f5641b3df41234e", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ea653dc230d002e3e7bb7236a3364e166f5332126463743974fb5a0e8f7e8da0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "d80a1e9e15ff17f3714f4740df7f7bb97d78d71ac375da2c9a1fdeb89dc3e209", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ae1f9de815c12d841e42d812c53eaa9fd634f72d52a2828fb07f744c029d0ffb", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "57799251549702c7de585e19ee0c38cc8ea9e3910f94cce4073361dd7f8c2128", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d1d7281ec6a6c84cf49907a1c6bb2dfd41a614916f38b4b6a183089ffdfd61df", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "4ab1b67c3b653b850152b4bc475ae35ceed781f431f17d156cc1423d1552aa9f", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "dbae058d93e8ca7c4d1cf2f0a4c4f68bebf7717c41d98a4503d2b4ceaeb30822", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "aa03fce38d0919b3e005aede2209c957b5116925711809d85140e801410f432f", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "31c29bd88e760d549e44cfb858cfb7acc9100026a23b0584ba7a5ecc73aac8df", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2416f0126e852461f6c41e8f6507c03ce2b2189093a0d424c0cdb1e86b0b714b", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_grs.py::test_legacy": "bcb4fd5fd0cf40fd2039cfcc20700a2748a5d6517a57a9066a2cf5d9167add0f", +"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "9f3892fb1ad9bb829cc8d9e9b0d0c64822c7b4dd398e097d261d8a4abc778f7b", +"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "aee3fa1c89df7e2b0ee4473cd50f69982dd0908645e37c187e644a1b27a3f74d", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "65e0f30333e91cbb662b52be24ee7785a6fb0cc44445afa07311b3148b5e3379", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "90c624e1cf1dd8e04b111651f0b3c4c2a28bb0b75270ae159b4427e201da41ae", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "6d03023767a1b83f88198d879ec4db711c56cd0d3eb972d8083055ac99e00ce0", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "192a468598740979bb69c1a2859d183235b53131457f937752955196a07f49e3", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "f80eca508797b95b239b955b11ba14381f9ed653e4ec52da5df08e5db0c70c40", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "d9a3ee6ab060a816845b048f16dc86ecd6834e5d2cb79b0741ff85de6097dd57", +"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "a060ee8a2096fa753e0f21b1452492fd116c8c51d637d8d460f58c4824b42e2c", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "366307f932fd99c942473cef5fcd4e1467ebdb78f467feddd23346809d30ec51", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "506a5185b64f48f68bc3f3b88b76ac0fc20d20082823537088638d3c036d9082", +"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "d37ec2c9a918a731cfde12a097836cb2d68f8ad7ff9831cd918ba727aa9ca6af", +"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "6a34108d9379309f9af81041414cfa25a882efce902f93a555997cfc1e3de697", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "a8b7bd2e9b877492e1accd02072efc56758dfa8e29944225cd970a6b2f7b6e5a", +"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "97dbc390439a1798d1139b8c64336e1609484026ac7ed8c83e501f253a0b6239", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "03d2e909f67b1842c2ee425eae3e25070551ee334a4b48a7a8159fc08bc3c6c6", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "5945ebdd34cfb7c1dfa221e587d30f656a1a94a06ad93ab293650f3bc65d525d", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "24cf2d5aea9d3a934ffa78450e2066fcf0d24a79cd2c8f47962dc8b926ba246a", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "69e7dcd4ff82a5ab7c266b5f7a01c5eee9d1051283ed017a8eb974b509da297c", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "850a9f92b7c4ad05f03925acd97ea64922e1abb62ea2000ff124a2dc09009594", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "37cdf1507a03428427a616702fa405a7dfcc7fd85a18fe3362130bf44bfbd9a3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ffd3ffbfe6e15785676a943993dfc6dc47df2fb5f1805ce611d031fcdef12c90", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "cd34a364bd32fc7819561bc651948d92eb462a9161c38d6c72b0bddd4d759837", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "d1e1b81481bb8f7738b23faabdcbd501918fa15817eb2ff484c7ec9737b24415", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "6f44f31d49aaa9a672279a3ed5ad9339f9dc988f0ab02b00af34dff444ed5a58", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "da9bddd51dbd2f1bd4dd2d60266150a379d123076ebe5de8230c12636f5e2cb1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "fee7eca9075aa9967a5ddc2eef5d8ccd0459bc471b833e4bebaeb102ccdcbd8c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "1af5afbad7968c908ba2bf9927dc1664aa9ba9be00208ca9615c3cb505246269", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "9405b34f6df3d8b9a898f31c4f57110a06704d95cb95a9f35cfad7ecb4d43def", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "49364f1fb626f276105f205f3539ae6906fdd6a3ba704ae7431b02c2794d07da", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "fcbc9cb53e614dd534000149b3ed0547c3e43797f41560cc6314373413fae9ed", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "9a4a33c6c2ed666f08c56c52fb84f5a3858c75f40b09e3f1413c414187fbf435", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "a45f433142fc9f42d0b70cdbfd798a84d57592e84609d8e2ad9053c6e1b59252", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e883aec9dcc29a1cb734351bdc7b92b6a49299980ef327045ce97be7f5707d4f", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "07826b4257783c101137e5c6bd10feaf0237e66813e1e19b144b96862d3554ed", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ba1affca5be433e15490bab6df3eef5d6eed5542d4f4c9732d43c750a2f5a1e3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "a067ee89038f5ae068c63b01523c4ae0efde9690503cc44cbb2541c89e8023de", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "318fdcf35a073affc6578953e10543d5dbc8981dd7de518ad4a05851569090c4", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "02eae1b00ee1300b7d0803c4c3445ea3a5438d5b646f99a664127f8aaadb8762", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "6fb644ce1f154a6adf756a86203302e31134c63c00874164172a462fb72a2db9", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "baa6ceecbd6a076c7bf068f8b95746ca1d6434ae73c061b059bfea73b451f24a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7c145e01523f81e95b35b892e384baa7f337397ddd97891e627e106e022468e6", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "c8cd4b4bf51b83affdc770a4fd615ed47e89edc9da36a17d9c6d0d5b0946c399", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "f9ac3795531f817cd62803e50649a196b2335077e0cb00d39d0ab010a1f7feb4", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "3f293211c51a4e8b77ba3ebb43adaf413c7946ff268aa875eeeeaeda304734c8", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "65e2e4720421471ae92f654ada2b527c5df28bb6590ba18532d508b43086d12f", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "16aeb1722f09a6096d4baa9e399195e04efa207cc22878ed64cee5ed76240f64", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "da6768493d92da6588f73924c96ae5d9ae73190392174de4d19dbc2555e8d28f", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "2031ca83a2eef5422d70bb6d6fbcf4793e9fe2627b7d730d633ccc5918f65db6", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "8a77dd2b8ac532970358a1d63b46a9788794df767f6ca08a4b5bb1b251569900", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "ccdbce1ca7865d71add051802ba13832d1aef9e46c69c93e2a4ab0b5ff7745d2", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d75629eca33b38d20b10d4369efdea134c757beff50dabd1416ed2b557089983", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "8a77dd2b8ac532970358a1d63b46a9788794df767f6ca08a4b5bb1b251569900", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "8a77dd2b8ac532970358a1d63b46a9788794df767f6ca08a4b5bb1b251569900", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "8a77dd2b8ac532970358a1d63b46a9788794df767f6ca08a4b5bb1b251569900", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "f9d07ebb92ba8b86bf2e7b1818e4b8f68c9b5f93a9b9aca1f08fab7a92317c13", +"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "ec033cc2954f8f559436b2dccccbdc23445df8fb9fb27d8945ade64aa2edde36", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "3552afc5779f80f9f43552ee11c18e5e528f8b43abe0ac9f4ca980ef88fd9c29", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "bab08939a42c95651c54c50e9cb54b6abf37bda8d09d1e3e43081a8781b6cc75", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "9814ac071bd0ffbc5c73d6dcfbd9a2f6c5ad8a24a2a17befbcd76ca36c436bdf", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "9814ac071bd0ffbc5c73d6dcfbd9a2f6c5ad8a24a2a17befbcd76ca36c436bdf", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "09cab64e8c378640582ed1bc03d15dda0f9bd06dd558ce991a4bf82d3ba222a6", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d3ccc89a402e528b3468cc7363c0adf8ca776acf5c2eb41d4119abc9f714bfc2", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "20b87f2209f531a82afae75344a0a67d18eceb978c38ebedb72b449f4b47e056", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "b2c785501fd5c4c758800e09221e3ffe9c7380d70bdc2ccaf7ac995c0422096b", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "9d29ed8af0968f84836ecc31eef287e8863b9552cf183eea8c27f10abdb3bd08", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "ff22088c47be82e3a85f9e8b6d636062dd2109681bd30c0fb34a7a053460ea90", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "ff22088c47be82e3a85f9e8b6d636062dd2109681bd30c0fb34a7a053460ea90", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "cabf97b0cf0120d5c75b51ae5dc6689f6d994b11ca0b3bfdca473f03ce57f30c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "4ace6478de4b122e321b5ee8b0465274e8c74cddf6912242392844c181053880", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "e4087cc1940cf4cedccd710bb6fa5629e986b7dea97da0b541d27bd1fb217279", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "e4087cc1940cf4cedccd710bb6fa5629e986b7dea97da0b541d27bd1fb217279", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "ce81306f241fe3404aa67d84d22a5cf6b7e3875f61d8033f02c5f992eae0b89c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "7b2d39755fe2ffe86369576ae04bd2488ae447c5ddc7212a66b8e2f6fc106b92", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "2911b85d8e9cc48cf5cbb12105256d8ca07d77856297eb918d46889d27ee342c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "2911b85d8e9cc48cf5cbb12105256d8ca07d77856297eb918d46889d27ee342c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "c81fd9c479e989680a242bd77bbff3ef297d0fd7f616419ef545b4166d5ac814", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "36342ff65d9b1c0dfd3b9dbc638bc7f4c12dda2e6a3ab4c6f4c9263f93c9228b", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "92c9db122927e1416646385565858f999e2eb6206f5a5b35eda7df947cabbe27", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "92c9db122927e1416646385565858f999e2eb6206f5a5b35eda7df947cabbe27", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "a89fbaab1b1ef8597b4fae7e4caa08e44934ff60766cf241a05628c7317a1318", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "e129977c8650228e3824cad61b3cdb4588536791a518dc3c22dcd23a9a529a46", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "67de99c28d419077750ebff2cb8e39f17a89908f1843c4f29b5bfbfffc95daf5", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "842f4ad977419b00cb86b81f2d622fb3b52dd53a74f26f3d3f4424af6b6bbe70", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "84b98ef282d47c51e91affa3d232cfe8a8171992f4f7254fdde6bfc0365221c9", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "1bf8b2da4c77a1cd5fe4931a7db8e76479a92bd8759829bc88b1a5232a0633c6", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "1bf8b2da4c77a1cd5fe4931a7db8e76479a92bd8759829bc88b1a5232a0633c6", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "cedae376f1723e6f996eb9422e41017ff35ba06937fb1447743c277ab132986b", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "1cd26c9b250aa555c9f4ce130f63c6a828460f3fab5db161840b3c6a9cc07982", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "b247a8b8be38c11a7fc0bfa525c528867fa33dfaa4cb631512e0b23c4c7a1750", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "b247a8b8be38c11a7fc0bfa525c528867fa33dfaa4cb631512e0b23c4c7a1750", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "fe071ab2bc7daa2dceef20d924f83824ef765c0c58cd850342193ac18e71c61c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "f26e41110e5c102eb623f44e6bec69abb778a78cf3479f431a1aae6aab46cd83", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "fd64b70f9d02e3b54ce1880f5d5a34c8f2de0b222921bd38f606c10d9ccb7149", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "fd64b70f9d02e3b54ce1880f5d5a34c8f2de0b222921bd38f606c10d9ccb7149", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "c73cc0c4256270fd5db6ff20ead4e3e6ad35dc1a0b5593473f3f54c14dc0e8ec", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "0ff90cdb68199d61c6b46f60d7c62f884ef6aa9ca43044baadc33d78bae500be", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "269f1e52da32bf99dbd6662e4c4de41aeb6fc3b81bfe108742c2dd29194b2841", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "10fdcd0f78d9e7fa253b60ef38140f1e6e6d2e4396c4e86de063f5254bafe57e", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "7415fd46e71b6ab29da90ac783970ff74816d069eb6bcb92bf5083358e5577f3", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "89c3a781ca9c34e33820bec5803e647d51a58f9856421e9b9f0c2c62d6f401bb", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "f187c140af1efa9b243a6a34e31063038c09f06428e08b35a6cbfcc522e26d73", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "ec1a82c85fea4dd2a49115d33b70ce8dad4ced326f0b8fe32f00640d9dbcfebb", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "e955a47189a8228fdca86561623577d9b0a84117d03081059f5ba2426fa53677", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "8fed9ec6914abcc3d1c89b2b4d09e5c1e149e55188e0580bcc121718cd27fb54", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "2bdbc455290b432cc8b98e270a19aaf54258636800b9e78cb13eb08b94f9c9a1", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "d466d1e05c99bdc166ff6ccc84bacb7535f7e8707f2a452aa66c8f684a970694", +"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "8e60ea28026739f55e23e78d27ab96f8695f11108f50330f2754b52defa15859", +"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8e60ea28026739f55e23e78d27ab96f8695f11108f50330f2754b52defa15859", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "1dff80115319468042071b15775b6c1f9eaee07ef20c7d1569531039f8d5e948", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "60c8d421c983203b74f9e4bf6b6f7eb2fc6a082d70cb927bf13c0ad94977061c", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx.py::test_information": "494ad40ab10bbb9cc431c0f2731a5d74a147fdd62f297e9ad0d5e37b9f633ec9", +"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "107576be7f466a82f1bbe08a711b2fe4f03753f568d8f7f2cbdb7c3af17f9986", +"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "2ded64938a82ee60a0988891796d12bd14c31f229024bb3272b2f4b848c43e2c", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "3236bdcee1c7e118a03125ab022b74d3410bdbf7cfabd28df8d219c1f4b585c0", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "c10e50751d92d15c1db18bacd1007e361abf05cd3821c3e5a31f338426225364", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "cd1de8851c1a0a27f6827c2a6077d9c9aa07dda9f7c4111f3f7f0d26c44f3f2b", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "c10e50751d92d15c1db18bacd1007e361abf05cd3821c3e5a31f338426225364", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "cd1de8851c1a0a27f6827c2a6077d9c9aa07dda9f7c4111f3f7f0d26c44f3f2b", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "e634f27ef7566258b9416964d4a6a7ca5a79afee911ec483ec3194ba6d1fc3aa", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "a9b60f17c795b90956a908dfd4b4845aaa05f094745d1929d1fc3ccf63b9dc12", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "24a716bd8f69a1e4ae6641ea0abf4ea6b2999133edc622378fe8efa0f837683b", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "de7fca804cc40824735c136b80a8d3149ab4b44edd42ea012fb051d0cf781e47", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "74d40c73f4893a015b94bc6cf44b3633512ddbbde0b2283f5ebd466d564ba3b9", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "dcab93870b36db673213ad95802793c4464e8bdbc7b88d8d2bf163e6f22b06cd", +"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "1ee34dfaab67c8800ff0e109d83f7bdfadccfe752c8fa9d62665147d30e76589", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "c2610794e0e008c7bb5c0d6299acea7ded8d86740ddca9fb40067eac272b6af5", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "6485fe41d2ad7557647ca94e4153030aa7413448d358cff40c16793018a1e1a6", +"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "bd56465ff5b3fb46f2d3cee6f74a6d6694d5f4220d351a1f142f2daea6b1de76", +"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "8d4ddd4379aa2f9036c9785a6a02a5bd97247dc3a1753c8fe778a8d3b34189a8", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "250c8e4f7b43c272f47902534aa2970bc7786e6e3908ae970aceee23988f34b5", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "e7450011c7546e7eba29fed3edd4f8ec0dba02b5847abd6cfc0cd1d09ce486b8", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "29c77ad2e73d153db442ed030ca82367241d9b55e177824bbb5061a9fc30e18d", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8e60ea28026739f55e23e78d27ab96f8695f11108f50330f2754b52defa15859", +"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "3ebd0974f604b1829b85a7b768f251f88eed2d9b409748bf801f8f95cdc7f38b", +"T3T1_en_bitcoin-test_signtx.py::test_two_two": "9131f680a6e064d6f40fdb18128d32e114cc4aef9e51469fa602dec4f810fe78", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "1ee34dfaab67c8800ff0e109d83f7bdfadccfe752c8fa9d62665147d30e76589", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "3d4e83e94f5f3a391a305468e73f356410a76a45e2729f92b53237ef53df784d", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "4652971e34445444db3ffc38bb12934d93e695abf625faa7ac9f13eb00554ac1", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "d170b86b041099a36c290e0badeed8240b522dcc3b900ddde96a0bdbd144bd5c", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "1ee34dfaab67c8800ff0e109d83f7bdfadccfe752c8fa9d62665147d30e76589", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "0a43672e3d39eee35725ced2407037db12c229ec8b60a02c02ed91a14e02e205", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "698ae6d70bcb9b357c61cb378defddf60396487f64fdf83390de2264a6e50782", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "4941f0088730f328f3e6d937f479d1d63e732bd5dd69e768d081b1028905efc5", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "d517f4ad3228af49b81f5924d37aaa3c4077793e7175352106f76275671a2ebb", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "0a43672e3d39eee35725ced2407037db12c229ec8b60a02c02ed91a14e02e205", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "17a10e77eabe86b54c16bed2f8dfba01a0df07208f676bd844e9c3ed79c11cbb", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "8236333b26912bdd6f9a92dc1759579f55db58e869e4ee0095b3ec584bc59aab", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f971203f356465ae7b1e561052af253c227268c603411d466d8169cf321ea752", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c4c3779a14738664082ce9ddd545375ef5b4a385ca3fb1a41d582c0d8e1004f2", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "056e1172ac4a2a3ad4e7f8b4d6a58234b109d52345982989b81dfb4edaba083a", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ba2786c01532babe33c7768e8e36f3d8eb5364236a8976826ae4c332028590ec", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "a6ad9d599b0dd5826be1f7957119c584fcd935a510be3e65533a5ac8484068f8", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "6db3e1d8c2f1b93a4eb659087a6cae074dc97fbb711d1d2af49f9b866f5a73a5", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "822804c07f8677ea50179c2e0b321265d62bcc7f7b7e1e4312f2459c80803d1a", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "74d46755a1a80ae52a0625126207c4b5def5bd429fbb0a63e56eb79f4813ce4e", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "d2e6033e945e8b0accf10e92cf92b96537e3619ba70c91b48255af26e2612d45", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "2bb32259b41a1928e43f19a123efa0dbcd8da278b466b549a53d3a7b4207da74", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e970a31e70ac8d4193948081496a47f62b49f56992b315e1938899cc640ae05b", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "621b9c9adaba98a2275c9cdfab6ff9acedad15e71cf7ef41f99185ad169f0676", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e970a31e70ac8d4193948081496a47f62b49f56992b315e1938899cc640ae05b", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "621b9c9adaba98a2275c9cdfab6ff9acedad15e71cf7ef41f99185ad169f0676", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "4c97210bf64a3ecbbf004b2629ffea26b1ff4aa7f3ce94471416c36d23e86587", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "48370001c5c687d31d7f4fe6437b4fd985394ee5ac4cb6ea512b21e7d992b2f0", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "40fdfd27d29839a77e7a68e78b965a9d3401874c031a940174bdd9552668dc96", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b6df45c9aa115f0d8187529970ae5587124fbeca4d71e51645b42f5847f980a8", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "9d5aae7b5c638e7080019e2530339a3568a11186284eb5e1a505b5a5c657ddeb", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "518a3c75fd872f10be629e0d28b13826a1b0d6fba64469877681392e293033f9", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "ab526335cbd422bc9512bd3eb109b6b7b41d8148a6e40ebb67949b72cecece66", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "3be3fe3ef2a20465e198d776ebaf7bd5493e9ade4ffc80d190692b77ccd56179", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "3e821c7b19fe4cf391580224dc2a5a9c789de147861bd37cf60c80d4415e4cd4", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "3e821c7b19fe4cf391580224dc2a5a9c789de147861bd37cf60c80d4415e4cd4", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "3e821c7b19fe4cf391580224dc2a5a9c789de147861bd37cf60c80d4415e4cd4", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3e821c7b19fe4cf391580224dc2a5a9c789de147861bd37cf60c80d4415e4cd4", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "44d1a1687a21ecd673c33c28a56aa6ccf174cd560a3e8ed614e16b94a7eae0d9", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "44d1a1687a21ecd673c33c28a56aa6ccf174cd560a3e8ed614e16b94a7eae0d9", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "44d1a1687a21ecd673c33c28a56aa6ccf174cd560a3e8ed614e16b94a7eae0d9", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "44d1a1687a21ecd673c33c28a56aa6ccf174cd560a3e8ed614e16b94a7eae0d9", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "e10e3b516e379222f2011e1afdb196f23944597a9166970277c30fdedf474962", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "ee4da3c943ed7785f0a72d3bc08aadae0cc3a6a3184758ae4612d57e6c9ef0ed", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "1a292152e9655586db0ac0d99bcb4278724d6f8310c6f3f5ff53122d7d227ab2", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "1a292152e9655586db0ac0d99bcb4278724d6f8310c6f3f5ff53122d7d227ab2", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "cc55a95f8b49f186f79c0e3227e2343a84732cbf0ebe651ab4a0ccc15bc89e13", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "b252d573cfa106776aabebaae1bec7d5cca79ee5f71c7995bb7971518e490c79", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "87d468786bb0d549035b17bbd852d1261b5aa8838dd45290c2ca4890b8a2c787", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "cc55a95f8b49f186f79c0e3227e2343a84732cbf0ebe651ab4a0ccc15bc89e13", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "bc4c43f9c78982e0e9801db3fe41e189285460a7518ef77bd231a4d05152d7c1", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "401cb1195d4fc62d0026de7cf489adaca74a0f8e523552b247c3d3cfefcf25fd", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "00b23b217712ed7be94c1b238e6dd4ac24bd65cb5ba3a1d585fc30fea7668392", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "4bf5acbadaede5df93c00dd315b1b6566609b9bac9213413ef886788d30806e2", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "af66cda11b0c18aaf8e80d2d4d200ebb570af49a967b946284cc4ed7578f2f80", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "c771d151ac6519ff97b2315e34ed398fbd206c6a28d038201832d687ddd19a69", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "378bb26f4dc4c3f32d2f34f10e89adfc014cdede67c274fdbdce019eaa45332c", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "70aff3d970dc304b447a8d02743dbe7d63df98e79ee65e20f44a3feaf4ae8667", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c27d490b38a84937aef6b1c7d23d92ced613c4d3535923b05b2ab326f67568c8", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "e56e73f964131cd7158ffc22cc121568eedb9ade8c78645f3304cbd13e45e3a5", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "d670e9a78b80e81620cd2873d72fafa258edacc5410000598e3a61b0fd69b0ae", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "2b29c86f50003c3be00c718c17ba634ef9374b2f4e7a9497cb384de4c624396b", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "69b225aa9d1eb420f08e4afee45739efda3fef7e5628e3ebe410274215a7d33f", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "8bbca156f1e8131c71fe2263391a2ba9252bd7b958095744a16c44868df64d44", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "d1345e36c108fb57de0fda73cf8a6a202c3b6ee8d206f63afbb8944111e6749e", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f38ef8f9572e25aad2171a0f550b63d8f39772dc16f59e5a95e0c80d49cb0039", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "0a43672e3d39eee35725ced2407037db12c229ec8b60a02c02ed91a14e02e205", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "04ad5159d4888221da30b0ff0720932c2d299bed974fcb02fae21842311086d4", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5de31bfe1ab60fab96cc4783833051459f41e085e441a5d7aafdf8d9b5999a74", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "bf332a502f0ac83f182d8d79be0af77d1a2b7829e4dd9fe980917e36986bb9a7", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "bbe154592c61ef0d8bf89bb24f0d20a4088db340b903a93acfa457fb585efe47", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "96af854324b786d28ee150d344495071be3b7f6c48e792ac5338a63b5d99f363", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "2a489073132caa83f052d08c2fd6585d7a362a46d307dd24475a05d74c2ed632", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "76427420312cb54340f73644ef94edb2e943d795ef42922a8b81c4bd794b1750", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "9af09e6e2affd0b69c6006daef21b1e80ccc91d7b64bcf042ef8703887fcfe92", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d662874555122c8a54cbe4039fd43653b0278ee0989d05fdd98042ce67f93081", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "88d58526264952186ba81bfd6298d816b1a1149d58b56440a665636f6cbb1be1", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "71a676bad2a459259545b997ffc300545efb3eba23194b0d31c2f726ed34986a", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "d462d410f996d14811777785397c7a6d85791883d80c3297b8ba1535da697b67", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "a38c5a1d82f42ef64a828653ed3b229dda4bcdadd89236b8f7d4a76f9bb5ac59", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "56b7637c7bcce8bf11801689e76182e6021054c8bbda443d7f9efd9dbfea57d8", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "5c26ce1c32bce78bb0227a6c50cf52d4e50b9dc5ebd9c45a20fd36ff8184b134", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "66009a18afc6f6acbe94c765d11aa6feeb0197a1362e9b94d5b187f7ab3c0884", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "d58599b272ad95ad46b170d659726720eac11b1974a5be999ed4ab5ceb3e4570", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "c8c0afe5fce504e024f1a63b831a48e4afc4bf47fb6883d479f29ba9117c787f", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "821043ad79cc2dda2fe938e8866ee08cb4a4f71c50037b4371bac3970a8ddc20", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "f50cf07ced380703bb4da3ee07f31cad16d7a20d9622b03f7d809a1453cf6790", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "2b950e7cae8bd3868f1e60f5c2ec773f9f6e335a37781ebba33144b20112be49", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "7f78d0af55c61199067a2e3847d8ca3f6add3b9c33f99de45ac9a3eece7816f4", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "5dc3109ddc1d1517261058fdd1985eaa0d4c53ece4f2338ccafac17de6818f4e", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "23666f5f9bbf4b7e4d41e2422e1cb477a14a0839dff970a876bda10e6e72eae2", +"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "4ef4d0fd5e36b2cdfafeb04fff9cecc9917a6c8bc15032388ab5d9797ae1e8e8", +"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "63ed11ff54c9fc7aae1f2c42427bce6b3b0e980a6840accecc6a497c2a46d7d6", +"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "d142d3943b9b32edeb76ab27c7bd55ed023da43965449da54c695a49ee0f8557", +"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "de69b20cc5f899cf37218a5448bfb47742b1469404b7ea115d81f844a666d71b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "c7f03fdc0e47593a2c4a785f607691a7611b17c30cdd18fdb73028cc7e42b3ca", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "4cf3e76e3b4aacc8e76d1f27d0444077e668c108bd885120c2954f19d2ac66e3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "581b5e491e71966aadf8cd40cead74a7f1eb42519159798b0485085ee010e62c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "ba6a0032bb6d4b8de5e8806727d7349ec1724365040e915448372089f2097bd2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "7d347020f9c62c782e0d32f5d47b589f443e7d228165f87954396a89ba579e5e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "2338d4fb81c53fc669a19c06a5feef502890118694fbd6724b4451f0395d8897", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "6ad7f67b8f34f5249f9113ff4b7c4902651cf1a6dcf31b0a884efcbbdf6bd3e9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "69c3ca50d59fc98d2bf3658d5aa720594cd1d934413d2c378aee6242f1441af7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "3655e0e8ba21192fdf63972fa7e82eb8f7577104ac37175bc35871851faa2546", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "527553ab684a54eda8f07e8d2aafaa41f7dc9bbb19564e0c4ff46c52626d915a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "70aab93ab48898f8a3635b4fd2649f7aefecef843dac6aed0a36f03448da8dc8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "4ce0d07f2f52c24b9701c98db398bf88586dd5cfd0eeebff635542963bea303f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "8a709968a16458d472c1f5589fbbd6e2f2b93452d4247f3c4e90c62d8e393486", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "23126f7e2761f97812fe8747901402f68f564e5d6522f077403149eafbbc17ee", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "7cb49a7868f6fc0ed212e89392dceb05ab1c6b92cccbfcb32c0beb2cea4bec21", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "787ad82da941e81c5726ba0199ff6ce169f07ea4c62d340ada4197f815d8478c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "182edc94edfb2199a19ea24ec243b955afdd7b6120aa24c1622005d6178674b1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "5eb9cf753749b81e154c0abca3431dfd98f1e38a42a66691a90ac6392030216d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "f6da344c4197502830a2b3f904c164c1e249819a065d501f19f375fae64972cb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "03047bf1085f37ff07f0b8ad2640dc5b4b43e08cd023e740e44e8d413c726844", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "bf2b8e13ad7d293cc0affd2c8d0487316720076d28e6042b0ddd8e3538f9dba3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "3edaaeba7eeb892626d114eb9c5b5c105fa5762b95f1255bd44f728ce1f6260f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "92ed2414edfa7d4ff91ea262d012a51f09c539e9ec1524779464b8b5b538ef4f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "2bfd760ba8b2b25009ab3c37a7ec85be7b8240313497ce5ff0d385be4b77d063", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "55442d8832f41c2e596f6daea91624cebef98ed10868b3d383e69ae09f4628fb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a624aaad8f393298502546260dc20f5019484dcaa7bb44a74c614a9b97adae0b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "9336cee5c71aebebba992fe2f321f91d830ae016ca02a75d3b2188a1fdc73a66", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "66ca97b163389d335d2e07173f12a5c9c77f05dab12eff9c54f886daf283e236", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "36841a21f895ae63505376574692690d8a5bb56e21531baac316bc74679cdb06", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "74db136030ee8acd2029689ed5ebe8091d1709261070797a23a3486af5f0ed94", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "dbf002d9ce3898fa5aebe3e418e4050914729a4289935ab2d4e4ae1e91983e41", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "144a11c682592b453c9d4433d4e96f72e84d06b8410b050f2803ff19b166a602", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "faf0ac9bc7104c015876da5e31eac77330cfebafd4cc5d5c74a8b6f691817ebb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "d308120191035fc24161a9fb96c5ef8d50f8989dfa8c656fd2e9e322ae442095", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "e2d1c9099d27b026c80cdec0d06f826dac2e9ab2dda1bbaaabbeb1778b19dbe9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "bf8c830ed7b908c0d161864a9884d06070e62854234380dfce61ff4470626340", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b0e8ed0001cc6f72ffb5bedcef9aea4baea2b109f4a7f80d950a4959466fedef", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "91391cf3254ee47643c3ee83b6a3c1b4ebfe39db859b1f4319a83c7be2dcfd60", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "1cc3cd8512bc31932c54be632e9650910cf1df352f690b90e0840054bc60774b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "95b43853e69819e1099051dc89d607a5b1cf2da3085f20832de4a6553a00e082", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "91a8e9d9e09dc2f1d7292a41297f95a8ce3a40c20b7d526c1b2d7bfdd1330a00", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "899a96043206e03dd5fa3129d0e7aa7458927765f5d47704c2bc8fa9fdf0a698", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fb91d02b8f34fbfc48c4b80bcbc2137dc45a3c2c860c888d5d29992ba45a5b4e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "a9b1046751b9b9da65d0fd7cfad127f56427b73186d7479df11ca0b5426784df", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "735c1c554a5b138c9c1326737d92a6a4609ba59fdc60eb7ad10991d2d9d89f87", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "398e58560a53ba680a9a87367c3e823c692fb2ff52fe92995974edc1af11e223", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "13eb9a05eeea15c9b1ac339146d8f49c70bb6b046031594f76181a4a1ebf53eb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "bd4fd090b98d48e71ea1bf7d3ef68983703d498a5e1c0ec6c452242b6151ac15", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "45a30fd8fb628bc87435647a074e6c99142628815fc9c0490e9347c6d04fa9a6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "fd5b3bed3f4fd519ed77457cccd226f60935b2211802042f14c5c5d859bf598d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "6b6806354c13e8c10b8d49b41d77c1ab0b63fec766060be4cd099d460c9d218a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c74aa37eea42d62364993c3539c3924257539b981a483e12cc14b7813a1a8ea9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8c8816617f679a53adb92061dabc52cf7b7e161dac29d53482928d2e5f0aeee4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "bb92fbb32511bdb781a4d46adc1dfa33e2f515635c78aa9fcd2bff69162414dc", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "3e6bf94533811bdf30c0a56e9bc8e68f593020a8938163cffaa6be27ae64e09b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "c77802b2701467415cf0bda67c056aee45002b82cff6b6b2b08350e8522fb7bf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "448f3520875d29d75d0963e0afdd7bc1fdb562040a1c90321972356a816db2be", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "0affef20ad560e3c2a2a5d6522c6857321a574363d15469af2f3b7289dd7e96a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "27e3fcf72b573492db642feb4e21a00efbc4a6642ae0255f3abb6ef66caa0f77", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "bef34c7307dea2b49e190b519eb64fdec2f88c91c5140de152d8e7962b0a6b68", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "b0f2c7ab8a2a6571c32aacecf191fe50d158191bbe3f5629d81d7115f1cdd4e5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4a40fa20315f16728e9532162bca5e20ee03985db72bebb51a302613c748c98c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "ae94d9b7c188afa484e8fe50730ec1d24a8b6ee566e69fae303c8846abe16e27", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "3a7b7a759dea8a3272c15cb05bb00e1c685c1050acab1b03cc786e28fefdda21", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b92f44320a58e1375ccf28d016b2cbc161f87641c636b8159f9780a5e12e694a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "75638c51ee73e900582ce553e1401c763e1a43b133af4233beeec8034e6d91e6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "009f0a47306e5371e65c7703be47c4aec55ca648e0c11773dd67545d935f6e8b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "e39d4ac33f562b7d6a6b40cfef0c7289bbc69a84a3ca80450d3dce0f7f65da4d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "2cd690a0c178713db0cdbf912a2f319f2947d785b0c7653fee5e78e3faedb710", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4c0f032511321b01ec0dcab08778b9bcd47ad2b673bcc2b5615d14c7a2d4f872", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "efa240d27e5dfcfc89092be4d3a266b1c56cb073ccf7286c085278e03a0a4ae6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "552e70a907dec9fccf0f8ed0b92d091e00a2df0e9016308276cf74dee668437d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "f39c044bd07b7e162075a98239d1ded94f999a3c4dcb337dc82c7ff5e3507f86", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "97f3ccc85f8fac4c85fdead9971627bd28aa7f71dee4e7782f2b8eebc580deaf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "d64140e08566f8cda583f4fbb668cbc9aea2ed5317eebe663e04fe2914109bff", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "758752ceed93afaefea5ef9810ff89dc04d79ea725782c9fbf189aa35e25ef87", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "9fbc3476271433d9274762406a2aad58ffc613f108724a602571b92fed3589dd", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "38e4cc7089c453310cf9956348efa69ea6e3dfa534b0e036f8fba74a6f8da5b0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "c0073022430f59d9b8e34519e768fdfdb9b8f103eec6cc4492586ac0b3cccdff", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "8601d87f6e0b3ac76ce8b4f4abdb08930111beaab01f14d732e3818e3c246d8d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "72f0c3d91f00c28b891933677e2caa59b6b77de4469f0b7d1fb1534feb9e180b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "39edc4a196d948eabcf7a3cde7ee946ac2e1242eb71d5a1dd9c2f9bddaf2ab7b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "9c3a627f879ec540888aa181f33fca365aa2b983d4ab8aab83122d8258259c69", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "6902bd49b571edf01976a6f0cd507e37f14f5977c3e41ada6f2ec0dcf5d5e979", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "476d1113fbd66e120d1463a359c3a87a118ebfaa63a2cf8649eb9f84fd6a8568", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "3edb7818762a0d1c2a49b173667c31fe8f96386a9c94ffae660068f082c833c8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "106881ef942d04bea8b404b3bf3f9472e99186ba252a5c3321a3291ae6ebf300", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a3f84ed6495a9dc6869636fdbe963280792a09124b5a517f0c98d76e4bf827e4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "2939d7f7d058f97e9e4817fbb04bbcbf4f809a2292d647f12cfad51498227406", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "61558a8bd98b963a6716acd1f3d2a64bf0ae80df72dec8a1b295a4f2aba4c7f2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "a01078b1d298ba920d1528374cbcc6b2e855c04d3e57a41ac7d9db7be450e03e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "19882a631b29ea5daa74b4f389bef0fb5ade84ff9484ad9af0dd4b8a38008e58", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "24ccd444dc851cda697581e78e6cdeb258ac86dc33b2f15c40269a2632a10e14", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "2bd5396c045884a6707bf778614dec2d1bc19918593797607b6f990f6bcc99f2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "9931afc5e49a4ade84c196e46b1fc3d00992fdcc0979524a21679aedd46a79b6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d79c787746909ad87531ab506428e86fb44593985250a112f1a3bfc6c424f661", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "6fb7ae5dcd2d64e5416aba170b5029a77c4e89a47032a0ae7e8c4d8261b97885", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "ef89f3b5cd312d7e4c95ed24bc7a91214fec18d43fc58977c3330f1053b02af4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "13c45d5f13a62e4c0bd03f03729b751945ba2451a2b5df1a4227543fb02927a2", +"T3T1_en_cardano-test_derivations.py::test_bad_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "deb009a495daef393ec125cacbbb7c55633505ea98ec1a525ef45c3c1514881c", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "bd9ae4418b9835a2ce0fb4ecf93348061c451e16adf20947add3fcf4e27b15d5", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "34391a3010b79389063f6701e48e99ec630b86e9650c1be4759d53b38174fe2f", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "656c87a5a30d36ae64a39633881dc90d13e7d92efc22e296fe5463b2e5115a29", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "25eb1ac1b0379ddd456acc2eaa1439612ba0c72f0f2b1a4abf03c403a5c6845f", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "56805d961ca9608d437964860c23c6108334013d8b9be4b3429573b0168759be", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "184afc11db140ce55adbbeca55a204c2706a1153c85627d14438fe4517152c8d", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "015f4704bd6668fa3180b9d3655c11b2a2199dc3a1790c8ada7d15f576045314", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "e950539c971b4c85a2c7c2b5130aacca3b7cc73ca690b380ecc995b87896f498", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "01374383e61eb7653aefce095a69b043cc320c0a121ab9f4b25ad6b8acde0e13", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "a5ced3ce072b05868f1c727c2c0c4db9cd420551c3f5d69b28e6b6758f4e61cf", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "ed8fbc9eacbd113ace2fd464d110d74ecc7b9bbfd1fc8ba75a38ebe2b7e4a1bb", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "bdaf567ba0b8f7085157c75f0a0a129ca01e8bc1f1840bfef190554532714f15", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "10ab42ad8f68910dfec96ae6275120239148370e5d34df301dffc9b3434835c7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "1b0271832a3223645e8200e0dfc8dd4382e0e80b5f3e127a4e308abc5585961e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "6c4b21560bed9b089f48f0478f8f0a9e8c2530bcf578db675f7456b1169e2382", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "9eeceb22303d87f2f0b2b3b0065c1f5d09bc54ca6354373a775bbafedc4271d6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "e0c17256b33f0caf4acdc6d97faaf9f76cce2864edf337c56b8bbe5ae3587bc9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "c815dfb37da7cd54fd506a1c1eb85c097fe8c49ecfe5cedd9e9b6c4b594dc46a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "f0eb3bfb655916a86f90d074f1eaab0b1c29a594ae824fbe661458910b57a42a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c5e1735aa70099dc405532c282f6696ee00425f29341524d81d540bb3b68878f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "950d21ffcd8e6b3cb529c51a784de897085fc6c58b0698d332851b08c6157ce6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "70255071912ce54296c12a3ad0e0b99f1c89169b237c85b3a57730f5b3cfb411", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "3eff48d0485cab11e8c169f50d6c3e5e90a4e68a47d6c8bf65a290c344f54ceb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "3bca28813689472f0d0528226b0c932a88b3fb2e007cb0a56961174d962763cc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "3bca28813689472f0d0528226b0c932a88b3fb2e007cb0a56961174d962763cc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e4716a940e5db4eb3b1190d89107003347a1a7172020dbd0163fd46b730b105f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "78c2eab7b4036afe59d198749848155609ee358866a8805f7b3bb1f237720b68", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "374e7972e67f430c67bdc89168f0e3bc0935ea68f4c274f1e378aa7b6f0fd18f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "21798e6df34936263e10b2d7c4624f146a313c60bec35600dc9a44cd1d5b6bbd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "576fdf5c692d40ae0b95412027dfe3e3b8cf36a692f84389f3048c86690b6f0e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "0bc348b5b00ca58c179780b8c86afc6e39d84a7d6c397e6a43f14343590252f4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "56f3b8c416a383088b4054f5f9b69da6bb8b25659114d23fb2c63ee594c75dea", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a04b8e0a7b18c8e4e91eaac3ef3806323ad42f15afaa0861ceecc35af8b7c7e5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a0be26a782a3015195f20c010e3edcc933cda507dfa7ad7951a06f7f6debd26b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "576fdf5c692d40ae0b95412027dfe3e3b8cf36a692f84389f3048c86690b6f0e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "0bc348b5b00ca58c179780b8c86afc6e39d84a7d6c397e6a43f14343590252f4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "66837def020eb82fe010aabbdc31b095eabd96a3679577d6958689df71cc0609", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "ae02fe725ada1aecc42cbcbb272718e7f8ad32ad331cb0eb64b9a1ebf73998d0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "1a0b2eba2ec48416a80a79fb8ce21cc44fc4203f093404647cc3ed82367a1142", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "87b065d1af59c44ce8539857bcbd3fdac94ad70059b5cfb06bf248d261ee44e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1e6cd667fcf5ed087b440b1c15ce52f5e735c7c319f49d0fd414784c0bc3bfe9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "b7955122ec7ba78a9d9a76c81589436f0c6cba1f04bc5efbf721978e920b681d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "3c64ac3897d740245be6832658525ecfcc0feb4f74376f5fc75f6164cb9d3294", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "9e1df4f87cd4d103d5d793c62f164c06f6674f90dfbe42f296eb78bfb2544ed5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "98bd20f281fb0b9bc88cf640324dc772186c30327ed2e3f455d087e4f694fce1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "740cfbb780582c07efb094301904c7e8a4f11bcf47b8ccface74998260f5425a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c45e5825997b2568d2566225bb46ea23dfed466b13062ec529536ac8f13e1965", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "ea0d55df07512ce3aa3112108f87bc3c2d0672bc3c95c28c29d057a2927024db", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "79532a4f78e274031a3b6b15d0bab6b6989a67b1caa2f4be3675cf124e9d7bf0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3af2d377608f782084ad5370d4b3bfb4b18dd6ea2a5bb2426acb3f1b3ac8a71b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "c05f5e837bb12eb90f06b94feea44b0737b1bff05097ed05068c4e39e78636a5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "86e7a06c442a94126866803d5a290413b4d9bdd6472693f94e77a98c234b017b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "e24e202317a0eb4acd7845171a564aaf09ce5e0c1c9a20609ac08a316bfa790c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "2888758acb22343e1e932a7bd9ab0f389a366048c4b95582f289cbe50bb9591a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fef279b27a5d5c0cf6ae1caca7a6243805137fc0889e17f54d5525df2874021a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "67380c00e194411470f96f7781ec381a7397ec80f12d5cc6326504b798fe8d95", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "0ac53c38c96ad079e43308853ad662cd3c4a18e81ae0a0d756498af00086fb02", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "c4d21b44c3142521bf37519187131bdbd3ee732c167b5a23511e854254756bcd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a6236cc568e261f8a1c21fdb4c92472117d4cef78cdda1ef91d7b4cb35752302", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "9425c3c4360f3ccf7f93833fb55b7aca3c7a8ea95a3382f1fec450ea8295adea", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "2ecf691836d1577253b08d118bfa3547ba26562f652d1179a464d9a7bf7a5fc3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "0a547025fdea1c395dcfd2dad5e0c47099dc54c312ce2954e3364322cc48daad", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "7acaff16bffcea9fca139750d6fabcae1f6975c9551826ef518a9e699724ec4d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "361a1b8656c9eeb36e38fe24f04292c9529aec7fa5611d5591db44af5ff21bb2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "878f0a6564f17a284893a258e9844ffd08effecbb7c348982ea4238521601f00", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "eb908f5739b7716ad0a8bfa8c42b1193bf6efed5cba71d4519f0f5ff4c90ca58", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "733557bb9d1d636228e70bc7938e8c4c2a83a459f6d223acaa7aef177e5785bf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "45fbd279dca7f341ec27251f2d7a6e72c80ab0e733e351193c5e1f58c06d28e6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "3363bf316e332aaad3fee0d1e4b6b08090cb24f63c3fb1103fd52e810f8b6ac4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "b7647ee9923a0dc2b1760db83dd83fcfaca181c0c73adcaee2b6ce3c8068a0ca", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "737a6da0dabe600602052c3324c8e6c15248a52ecfb12b5692ee2651367df370", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b5063e46a306e15300f6e61378f628abf2ccdea7717078ce8f7986d14137a285", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "92162eaaaaf41692f3b6d661e5e20e18b025c86ea1eeeacc5a152915862d4921", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e9d87535c99cbdf7ef17e4d7eec83d2a8c5ee0d4fc0c1ef4b1ddd8dc800786b0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "305fb2a857fce83ca0e082e2e7aac103b9604547a32d540db4c0620d6d32ef54", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "1d719ce55870c9a230c993af999fe83abc56d07417b65cb279bb778d6ec8b133", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f715dd0638ae1438c4d9760e8ac1473852540a0a1b802fb91462fea2fb4d9f25", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "d5432626bd4d043dfde6c936211488f08982ef8aa837f680e1c4745354546b73", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "178ab464ea9c1bc33311567c0c34ff5d68bce5cde31e4b7043d7fe936498eddd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "5bf7f15d07f135bb2f9dc452e425cb0cb1be0ec5d51192b7fda94076f794b761", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "6509051c1824d3e040b9a298daca2176a765f7ac3d3e04c50f49c7797ef32536", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "714f43649696c0e1b395834fa6523a40c45bceec7b8547b5056f00c4e52ff96e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "bf33179a4c11fa2d2b65753686cd54e82bd7b441b1ac1b439c84692924a13604", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4e41304b4040a17528f012c37dc66727475e4fd661dc7ef6375ac6e0544efc24", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "fcc0ef4cfe56107034e1eff8d946f20720b6a828484aeb55d8f960f3031e4c5d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "dfe427e763080e9999bb7069734bf45edd580b3ba2c4fdbf95c98afaa406a8ed", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "6d660fb3184d182db91c5ef1c510f962910ae88ec01c2b30b61f97ab31df23c8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "a373f165ac88e310930cb9aa4dd170b4ba146470c0feee291650fd58859de801", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "a373f165ac88e310930cb9aa4dd170b4ba146470c0feee291650fd58859de801", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "1f68f46856e48071e3c8a5b4016dd99b196282419a0407675135e6cb1e893536", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "8f89ddb0996ffccb3e28b5096e231cdb2d5cb8edfbc81c8b1fa3d04698acc07a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "8f89ddb0996ffccb3e28b5096e231cdb2d5cb8edfbc81c8b1fa3d04698acc07a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "89c178a3b290ae3c3e000e05add022a0a19db49e0f1fa906462135eca3fff1c7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "39234fb0210629896b27f7942c64271e88d391f04f0d9290cd861d455881e4e5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "42d5b7dfe7366c2855c0dc2244170439d93b2abf65dfcfea57740e47fb42ecfe", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "bf35758866bc87654e15d67ed1e45d10f86357038c5dd9f2530293bf65663945", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "80f012c5b709360f5438d84238294bf301e268915e83b02521b3e8135189ecdc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "750806cb0aed91bc078e09553391e614e8a2f4adda56e3647bf4ff4064e2fa32", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2585c5b5904eff5d1a5abe06d1f8469285507ac0e89657edbec40184696649a7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "d8812f35d77fd29f2a03987ec1aef0ed6ec20d44cda5b71d633ada2304386af5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "c25a885f71e9e0f99e460e02e258fdf5c5faaeaad0fae12b1d2398310fe5103f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "10ab42ad8f68910dfec96ae6275120239148370e5d34df301dffc9b3434835c7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "f0eb3bfb655916a86f90d074f1eaab0b1c29a594ae824fbe661458910b57a42a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f72694803d630a748e0483060c7cf9b996692b403a38c3caee4462b02853a6f3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "457d373c7270fb90be6cbb0bdda957f338ea0364603bc4af9754b191516e72ef", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "457d373c7270fb90be6cbb0bdda957f338ea0364603bc4af9754b191516e72ef", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "3fcdbb6ab837b25000b3abf28fd02ec4ae151252c2f4a5252de48802d826b43d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "5242b58470ce5873107e76970a4c9cb09a445076a0c120c9be52cd2489735ae6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "bf32b52fbaf81e1fbcc2b97d35dea981de6256d4676480783a5bf23ee1c4e4f5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "abf328c30aef8ffed7a5d5aa7024c864ad8ecbc590ec73db1f28d4befb9d20d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "8dab44a7f5896aaa72aa911141fc9e33c4af89b97e1bcba436ddc6b915e0a6d6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "026b307fb78f4d8be825ead6546a6fa6e05b73ec8abd82d101b72c22735f721e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "4b09ea37ce02b3a28d8e426d65cfb1014fd3a7cbf7f039ab3a332b33658915b1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "4b09ea37ce02b3a28d8e426d65cfb1014fd3a7cbf7f039ab3a332b33658915b1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "4b09ea37ce02b3a28d8e426d65cfb1014fd3a7cbf7f039ab3a332b33658915b1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "4b09ea37ce02b3a28d8e426d65cfb1014fd3a7cbf7f039ab3a332b33658915b1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "abf328c30aef8ffed7a5d5aa7024c864ad8ecbc590ec73db1f28d4befb9d20d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "58c14f6b883cb2b4f1af9174ff6db272978e226d04f02a311478a96174707320", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f1812c72a44002a5318527ffeee6f4be4e21f941b147b3aa02f794158010f9db", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "e8b75d5843dfd3002501c14a737ae5b76c8e6e70129ba752c1ee5dadf0075b63", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "bd4e08b2e982a931887cccd5bf9d6e4e229c417955dcda120f3ccc3d41ac3e7d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8b70d884b06d18d5aed785585e77a5c8be2420c371d2d66f4cc1e56bf226b5ac", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b6b21884116b900017ca49ce390ecee24dd29998eea9585630bd9b5c0b2b0263", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "3db678b439b7f7ff579f571e3e383907604cb3312f10f0858811f0d0df6c2479", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a5d549f4dcac0cd3a0faa8a53b55ed4bb69c62fc4dea88bd283850670ffc49c6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "327b00e1cb17b33fdbbdee8f1c7e30e20aaa97891894305b22b37cd350ad269d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a5bf65c1c96377c6af48d25a9ce1e0dac5f06c5a20f6a6d8b7fdb9c1becf848f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "07bc519d5416c1b8d8faddd5926f93745e9b9cbc384f19cc8a992d2651142952", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "457d373c7270fb90be6cbb0bdda957f338ea0364603bc4af9754b191516e72ef", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "49a023af8849fa8921ed5eaa898369d828691ed8c68c7860a4fec1d189c214b7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a1ee04995eaba3d2facdf7ded1ec4d2459ac506bf11cece7d6bec5b239fa3690", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "4c7c44567f4172a083b6d9f68aeaa72241c041bd0330b80cd67d6adb63c73401", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "fb4d0748000cadcb15656aa4ded338ff37ec92986baa72d0478053514929b8cc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "9535e9d614065bee287ac7d182729e7aa31a680d9623595227036dae392bc4e2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", +"T3T1_en_ethereum-test_definitions.py::test_builtin": "3b09fcd749e7da31c6fbc6f6ce095e79079717c4d283a5fad6e2558ad27cb134", +"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "b0c5318c7e09888756d6ff92b7025cffe9b1532d63d190e85ba755b5a91259f6", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "0f6fe9fbecc9f28655680ee6bfb165cfc82507a469c636a805aa8cac8832be57", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "551cb1f4547989e57e7c976345ed069a819693193573606d835df3e8cc009ae5", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "c546f6984b2c55f81fa322181b517975413d867ea9d2f5b102c259e00c42cb25", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "4b51050e9799fbf0563a80b2a558691e9da4112ba9008414bb53a2b900956440", +"T3T1_en_ethereum-test_definitions.py::test_external_token": "46892be93975d073880f0a6dfded4f36d8dc70d5123caf8da2cc0b50581ba9f5", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "8521d5bd06bd1f30843f13ab2792fc94884c0363a936a4087c7a6e625269c8de", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "8832e8e69952d4663b82dff0c40115d3b5ba2946a31da3699687eced203cf209", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d304b5a047a47f6fc0739a79e36833a5ec5d6c32c830d0ffd57aecf66d33ce8c", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "52aee5589eb4ae2a94802189a9c429343771b741facaf804d92008ce62b65bdb", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "5ce36c5531538ee19db4a67848dd355056666fd8eb35d098762632766405e183", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "209d1462c3b0d8a51f330b5409f76b49b7dbc6de8cc9050d3705c23ae60c50dc", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "5042325e993b5aae0f187ca02afa1d24c838db78188e4f5cde11c3f23416d642", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "793fad20ce9d24b0da3ad93656aa915f3cc2f547343ddbf9705d3f47d34c982a", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5ab192f09241c9d2fba7be8c4b5d45ab1d469ac1a3bf54e4b3f64b71ed1be3b2", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "8070202080fdbe5018452fcf57e7b6c06fadfe68451d1428a28b6f1b2b1fba19", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e2237ea3ede7735ec5bc0edac74c3eb28584728b74edb15ccea4e40f5cd113d7", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "00da677ded73a7128842c4ef14de6ed0ad871d8a85b984ce8bfcbf768e64ae04", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7332831b693394047d299348e32a156557eb50902ed4e396d1edf4984c8e0ff7", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "8b4baeade7dcb6b15c244d02c2c891c3351f2e9d429ea350247dd013559bc672", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "b9e8aa6398e4eae5697817ebcd9f909345ffd3aced288ef21d24cd8e5af149e8", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d2ccb8ef385cea4f35311b139a92c31db2fca352a5e4ccbf6857172e89e42cd6", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9bda6020ae9a6ad35822ca05ee7116f9f50fccfc55bfa31155994a1657ee4bd1", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "ab390607fd4c4f879d1b1daa2b1da8fe9265122b637d1c3a56f36dbbf8338b03", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "3f71b25ef9bbfe2e382ee6eb95cf03d5b3f74cb6af68057f293cf77ac24263d0", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "f24b33aeee7479353b55ee7700dd5b9fa17641626d91d52091135ee4f061ff7b", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "7fff734d12ed1157c71c285dc37c3cf1704410e26d87ec84e22a7930e46229e4", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "77bacd4782d22c21a1246b11d08dd29e40ee208dfcb903cbb4a01bbb4cc3f516", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "9139ac01e7ac5b277edb71023f433db8e397c060c2252826405445c9778bbaa6", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "f24b33aeee7479353b55ee7700dd5b9fa17641626d91d52091135ee4f061ff7b", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "f24b33aeee7479353b55ee7700dd5b9fa17641626d91d52091135ee4f061ff7b", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "f24b33aeee7479353b55ee7700dd5b9fa17641626d91d52091135ee4f061ff7b", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "28780800e60d84e035e9fecc60be6c44b127d35ad4ae16ade7421a4e5f2fef2f", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "43420316696d377420acba39648abd90dc69bc7b58dbf77dfa6f19f28fc39426", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "124a89920d36935e9015038dfde5f4ff955cb3635236afc51fd02523d292a734", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "1de53ea62c7866b07e4c9470aabdb4f0a0587169aa8a4e51d415ae63f38c720f", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "d31f4e2392148c28601e7a4e143388970d069d54fe0f35e2a5b353e3cbaf115e", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "adc733bcf2180b8c13960ff6ce35807b42f2f26f58c775396ee92a33dc993e07", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "e016ecaacfa48a866019dba498ad3b0a9f90df0c66ef6a16b2c2d6a054d9e531", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "d56c491922f121f2b6c7b6ff908eefdb27047fb28aeeb8913101949da247f3e1", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "849f4ca16900e9d5cf8f25f27cf2197067ff485cdb63677ea9c0f93ca03d3658", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "99fa8e2e9eb0fa2f3460bc58646942d795f376e75b1fcf3ff150ff540a79a27f", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "2fb0fdb74ecd9c7e3f59a462636ede65514f161eb9b64a0b48ba592e5dfdd4c5", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "789054a64803f19969f2a49307e624a9e9e3a14124b2da0da7f239121cb48040", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "ea0a5e9e23d9d2a74537d7e09cfb38788c61dfee25e273fc25ec01e3981714c4", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "437360fcd74b9c68f3df4e8730d65fb3241323d0ae202dfa551cc89e938b8973", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "4e5ec1e07cc7e189dadc5c4f02d0b52ad7e32601ba90522d113f743164dc22bd", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "4111e085c293d2aa10cd9a087eede5c98004622ecce05bc455f54b74f232054e", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6fd3cdc78f1ae85cb89a0bc3d66a340566c5f897dff861a786b361fef3c96e98", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "d9b87a418b7b9cc5e96f5e2c9a86a956757a850423535f3f5d003a4bfb25111a", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "2fb0fdb74ecd9c7e3f59a462636ede65514f161eb9b64a0b48ba592e5dfdd4c5", +"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "8065a16f001aae51f9a852de0b767e8f68de7871bc0ee9dd61010985814ce98e", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "c8ffb464020e759a4b121e20daa702d768c849686065f7121078eb0e62f12f09", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9e953a03b6aae0414474abc477a1e62694c1e3e907405500faa7166f94257100", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b7f1dd4ad0428146bf22e0c99135596fcea97b4b8d94c394694117d7b42e3269", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9e953a03b6aae0414474abc477a1e62694c1e3e907405500faa7166f94257100", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "1f958c8052b41284f6f5c2fdc248de7477516fda4d438ba0b78c5269184beb2d", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "1f958c8052b41284f6f5c2fdc248de7477516fda4d438ba0b78c5269184beb2d", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "70afd8c2470fe2f44e41bc4731fc6e18fc844e639d92fc880cd43fc8780cefd6", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "82a28f4a35a4af8a20a38d4ef63c7752873e55073ec9caaaa3dbc9ab8f7f776d", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "eab9056f112b6694894b508489a19baa9bbcd53770f844f33753d662f1d367f9", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f3c5ea8e9605098d0a321430ff849eefc108a6837a5ffbaf295c9cef747a9868", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7af8260f46732b74f8867c39bbf8f2a85449a6795ac7d11546dfa3a6c10d2411", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fec4c687314cbd3983ce8c0acf2ba9ffb90382e506b8f5b1f0816b85e3572335", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "f8ca3034acecb6542406329b26ea56a1b2ea8914d708b6511fa98a348964acdb", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "2aa1e73b604e6470941e3ef1a1517258a86b854249a7c5fa417ab0dafb8c5dab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "533d83a03655c1c4133cb9fa4f433cd0988447aa034facc6e31e0f197da80fab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "37a4828db03ed0b977ac59b6cd77b261e1d49ea72c9fc1b416e86c77b080b620", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "533d83a03655c1c4133cb9fa4f433cd0988447aa034facc6e31e0f197da80fab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "edaa2090313898eaa6e7566d3523c55790c1c22df341d3abbaec8c903197ccce", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "edaa2090313898eaa6e7566d3523c55790c1c22df341d3abbaec8c903197ccce", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "a9f752858f44d5aa1e2d2e5b7383fdb37efb29e76f4d1c97ee502c779d6b9a3f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "1c3561ba869e0ea707a67b5a35847e9d1b916267650c42c1c2ed0364cd1fe702", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "f3b7ec4f680aa4e0e59a0fce9874618f28fa300a3fcc41afe4140012e4923b86", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f3c5ea8e9605098d0a321430ff849eefc108a6837a5ffbaf295c9cef747a9868", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "960366a231ababcc4649fa5a7f30d447bd0f0cc75863ae333a94585b7963706e", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0fccdac0f8325f6f393e64d3d7d6dbcaf3507d90935ba375a52f4360054fad10", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "1253db116e1f4f9ade2b6206627a950b8f5fbd3b2b014e6465098ff2d6b71e39", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "cd5f3ebf2847ed227757a45ae7361297ecb0f5509e85f0f9b7996829003f1cf6", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "9bea4dc0d02eaa5a34e923c937f985faa15d6ce2dc6ac126a0002988df724d55", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "df1ca55e43a2f7b17fa9c70e1383dc7ee1919859d1e6cce975bd654392c061f9", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7af8260f46732b74f8867c39bbf8f2a85449a6795ac7d11546dfa3a6c10d2411", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "70afd8c2470fe2f44e41bc4731fc6e18fc844e639d92fc880cd43fc8780cefd6", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "3aa5532afec011763270b7892920e1d94720d1f026d4e4a0313921b81d6dfc20", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "eab9056f112b6694894b508489a19baa9bbcd53770f844f33753d662f1d367f9", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "c17b3575b82bb50b5fc4517483d0658b11b4648fa296fa2427263f9a61b20955", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "691169626bbf345ad352e13bd030dacdc421a4c69254e7e3b4a008e83a137806", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7af8260f46732b74f8867c39bbf8f2a85449a6795ac7d11546dfa3a6c10d2411", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "960366a231ababcc4649fa5a7f30d447bd0f0cc75863ae333a94585b7963706e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "a9f752858f44d5aa1e2d2e5b7383fdb37efb29e76f4d1c97ee502c779d6b9a3f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "b251e66ec834a4fa5b2489f1f0b391267811fcfbb05c55a9373d433089997265", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f3b7ec4f680aa4e0e59a0fce9874618f28fa300a3fcc41afe4140012e4923b86", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "ed2e275f082b5d879cc76ac629723a3b077fa9bfc5608278609a3430483e856e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "a0c95f660b9c387bc83ef0325414845bd47dc3640c55c87d055c1c40942877d5", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "960366a231ababcc4649fa5a7f30d447bd0f0cc75863ae333a94585b7963706e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "3004ef67e9c9f69b2fbc41ccfdc6c7d46e08d0f4618078280aeb44976b4d75d5", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3004ef67e9c9f69b2fbc41ccfdc6c7d46e08d0f4618078280aeb44976b4d75d5", +"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "d441a9c097dd73257d481fb9e9f50341aed9a7c41bf9087a78ae3c0719c19997", +"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "2df47fd8cc78f1eb316d120be47594d09d6d0db8ca73bd97cbb2c36b82f905e6", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "2941d50d13b67ea6912b86299a2891d06df47327ed9c836d494b6656b271e945", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "2941d50d13b67ea6912b86299a2891d06df47327ed9c836d494b6656b271e945", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "eaff94d8c4d85d0b6cdbfae712d75e87b3b36157cd5f1f8a6b954c4688fe17c0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "eaff94d8c4d85d0b6cdbfae712d75e87b3b36157cd5f1f8a6b954c4688fe17c0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "ac9e30601729ed3134ebd800d9f900f10bdd1d79c1a818ac30193ba2d3d777a4", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "ac9e30601729ed3134ebd800d9f900f10bdd1d79c1a818ac30193ba2d3d777a4", +"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "ebc1d9577c978337125d68b48c5b03ff7e68c8ccaa4903ed07a2551f45df8971", +"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "ebc1d9577c978337125d68b48c5b03ff7e68c8ccaa4903ed07a2551f45df8971", +"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "55a2a68bf98bd9300b7e1de8d041b5705a9b4b1430f665c8d813a2a2c7e5c50b", +"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "b87fcd0697302a592c1300865b608a4bf3e9841a3c64f8f129709113ce3f60b7", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "2a48ead3bba9a6c1e3c327b03c99c301d536e593d1eee5f2997c49c2e314329f", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a8d8c6650ae562abdbbfad66b1f1e760c71c93fe41ae11cf821d5628b54bc3f9", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "573bd76df3601fa2f4dff93fffc2439128296e1aef2f5e426c8ed1e30bf5d041", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "300e0c020839bd376177cb2c4c78a2f4f2012db887e7f04b7e98d86155758931", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "ecf75382175a9bf9a0bc9f66c14ee0c4eddb03d69a5a04a7ebf443a98a18e842", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "f696fe48cd04866313c7db5e6cd72bb46b055f175dc517209eb00b9ae933c1f9", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "6a12d6ece86873934475254aacfcfcc676c80b2af72df1f7a139277b58506f35", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "f2aa795906ebbbc2f9b5b2aecce94d87a1215d0a715fcffcb28df1952913aed2", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "903a0f9477fc100c820692265d6b0a130a50d295989389146ff6aeaacfcc422b", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "e65bf89bd08c5c9ef612ca608f2d77a20ba41987f538f4a68aa8bc62d59334fc", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b8df3f7f55a597f36ac0976e12714ce7f4d94a5e04a6430911dc0bb7bbc567f5", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "32ebbc66fe8d8b19825873b103166ebae5a120e3c733af4f6a34f57e1b25bedb", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "787b5f19dd39bcd2e08d204964767af768736a8a56cc311bee62ab1800199baa", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "fdaddfa9cda1f29da8900d71a0e1960300a95afe4615f93252bdc3b15ca176c5", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "e48709b89cb60dece885882a3866c1b3b7896f5a119a053ada6719f128b91603", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", +"T3T1_en_misc-test_msg_signidentity.py::test_sign": "f03b5d189e713611ae735000a7f0185d17706e00bb2be7be52f20def07f8b18f", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "926b4edb734b8d59fe46aea1de0603254383271c7196f4b75552c8333982e339", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "4ee0afb4b437c504bec00820ba879937bcab2b84f0236e28aa36110356e081fb", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "2b0c7138265c38be7606c7447aaf545057dd85f6d32a9d32bd32bf824cb8d994", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "bea64c5396d509ea36ebc25fe5fd7ef0463b67d493b783f5622c4d4d336d62a5", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "afa44deb4806d582b2c9aab03709771c284ad1205a7c4a1d0b9e4b6764f6e5a0", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "1118c892a0695365417103cab14972e8726c3dd64eb7f27846e1af2afe8499c9", +"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "2c239acdc77c10b622652aab702630aa61a2a1f8bed87417b5b25c60c2c87454", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "f572c5a5f4e6b8e69deba37aa8d546c1cd80533343ca3b3d9bc63492cefe358a", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "cde6208bdc1a24cd2287d66435fad75c272259b4f606a418ceb0e8853df723ed", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c16f34c80ae6bf30c9d7aa1e8dff51119f3de1f503feef6a5bee467d2f47616c", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "96fa7c26b169f0440542be99ff1708d26499dd979ae06e1e24dcd629022aa87b", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f203784a54d62f66bb2ee3f62f58dee1183380aca5bb20f117b6119eaa33f4a5", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "76608e88332d7f17c4373263a072e6032a6532d3ea97284347fbfd88cc0c5af4", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "b1bb15be798919d14844e0b793392300805e032e88ff0d5e79d07776ced5805f", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "5b3aa7b7e51e3fcabd2ce102fec5dfb2cefc6a4b49eef99a3a936f56c655a496", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "42dfdb857ff8cfd3b1aeb0b635e6af76d0e89e3eea8e42f4d57aec13980789ba", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3a6af386646296c04b412a98996439b5f1dc80cbc097ca63997a555a4d23dfbc", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "216887287e07f97dc49d7d16b8443c5fe2d42da14365f1d373a0447f049751a2", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "2639a46e2ef546a3ff2cdfe6ead3a2ab6f0148217fa21b34d180905e6fe25b6d", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "5feb59891c060d9728a3d0ffac167c66b4cb7aecc557620df7d5f0921caf179a", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "6e34188a432a2423eca6288bcab829d355037f73c4b39fc7caf015bfd4ae68d0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "78ceaf1eb126f959ca81eaf64aa887e63efe4a287c68f6a14f4e408272860689", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "76608e88332d7f17c4373263a072e6032a6532d3ea97284347fbfd88cc0c5af4", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c1d57e9f23b20e842bb7b88ff8b31d802cbf16fe61812997a342c99ca5b5825f", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "89bf5193e07c9d8f1d7d302de340470a4b221d32c6d07cb38316fda64046d4f1", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "e2935ad2766941508060b064d95a92ff362a0f9e593152a70d71ab2de6561ab9", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c7c8e1227edb1dff2eefe803c54077eb06200eb24cd184f5dafc89047d6b0ca4", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "fd89a72b9673be407f7a5816d9d076598ba22b4ba6d47546099e59ea9de55695", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "37b06070d30f88b3be7956dec4a6e61f3398967ccbe72d72d8fb79414bda9e00", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9ab02bf93a95ab6c318d3f343a32d87fef44ef1ffd859ab6dd8653fbeff4acf4", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "e83a782781a094f32d6acf0b32f291b878ff8d0bb54644fcaebdd315f8a02edc", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "316c40015e3f3ad09892a340b0dcdc90d80f2283124bad719ec6a4c7659207e1", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "a1a1e2c9350bd26370334a7c3dfc606ce36517122eadd694ff57875b935849df", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4cb7bef1919018199a1a8879ba6e908d5a1069e913839d280e73f5582cf9c3e0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f14939364479b7e007c34e07234557e3b1aaf3db682d1b90460f23b8088ca0db", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "819ae447555b7f61ea5b8d7a41247aee23c73101a06023e5854ed6a836533c25", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1666f76c9a348d98842ab08711e526ff869b3a7888394ef61af741dccfd82713", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7a4888b95c5f7778337ef118cd6d9e5aa824334741343fd65a0cfb5b0ca85c4b", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "bb05d7a97902aa97877f8fa47df86166e7d2becba65dca5702866bbe4c3d39a9", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "80c5f31e4058b73e58899e7a9d5846b8ebba50155f4f20b9aa1d3e9f0e2b4054", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b7bda44d24db83973da5bb05cf109c486aeb89d2b82a1954a58ecfbd6daec0ae", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "444750af0977e64b088ccf22965536475d5442dcf7a02c1df1a7c430902b8470", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "8ee6e24941c549fff1fe60c49c36b14d0896fadb514f661d619ebacb0829f301", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "15ab6b16a44c5dc14dd2a72a2f47e0903a1cab2116588c3e2fb8d9287193b37a", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "7a3a041caa873e0c1c5667673734e25bc820571a112021de1eacb12fa6523554", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "288862c27f925ebdb328acb8b0ae6648500304e074d4472dd588620f8936feb2", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3414a6a08f6e6561cd6e26cb86a852199bfc7703fecd608530bcc62f69383f37", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "778068ef0354c29d1af38bdc681c3c3689bbcecad3fe28b737b10157b72029c4", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4a6f9b8590c88a3abc40ef6eb94e58b9a4574dbd9ebeea80dd00af414d05a9d6", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "57a05fd6854fc6d90b5c1c473f2c0674556e95264af184783b27e4a753e48b05", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2292ea7a17ff843f8275c9c78824928ecc29f3130bcfd352d6ae67bffb8cbe65", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "fa258df70b3d39fb6f646251abaae212350c459558c0490e7a30549428a2d724", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eb2fbb964b795e5525e34ccd907371c32a8196dcea1441a659e3c4986e28a3e1", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "6e79cb8f787adb6f164f4e36b13ad60820a6eaf7b497af0c0cc5e9f3ca34c062", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4667e38ccb890d6dd224bdca37b5649301412c610f752d64df3d28c74b946e7b", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "eae3f9702c8bfaf20e769234d8edac88c34a522a5b7467dbdd35e08290165dc5", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "c744cd83a5cc5570dd26011f4693c8ec6495067f62f43103775c5e3ca22a7c2b", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "ade6a2384186f69541563a474bbfe321976f4e669a98d5b2da92ce29a98d43bb", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "74f45563d1ccd333f193a24385f12170403224ece50a0ccafca5211f4b27793f", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "2ea6775a67972a7e3a43d674d8306083a62e9df3ae3d9307cd3702f50c33b509", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "6954cc22b8425084624212b7d37331f9ac21a89ec541130254b8982fd0461415", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8083c9ad19f038a9fceafc4afba51cb75ed3a9e224320faf624d3acf0815f864", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5dc0877a4ecf3916496ec810fd9a96a2e3262e489fccd3e3685d01023cb1c83e", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "70a6291e534c8530c9e4d60b6c613403959402e8c204c8214cbc79785b622c86", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8083c9ad19f038a9fceafc4afba51cb75ed3a9e224320faf624d3acf0815f864", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "5dc0877a4ecf3916496ec810fd9a96a2e3262e489fccd3e3685d01023cb1c83e", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "70a6291e534c8530c9e4d60b6c613403959402e8c204c8214cbc79785b622c86", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "ae9f4537606659416e2deb27221b338e8d9642f799f6097242e323b7d6e12b02", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "6cbb252f50ccdf03d70b70cd1c7ceabe9f1c51c77558bad1db3e49762e1f4a14", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "cd0d2a0217ef660134799990043aaa45e7211eafd78d831113596cb7919fabe5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "b2d45e42ad7223ed68b4cd6c9bcf8bfe5e22d10b23b35e3e20aef06eeb71601b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "81bfdcc48548c57ca9ba2769518923cfba79d2fb9f2edd02f207eb25b5ca877a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "21acaf6e1763c72dd7204517371b18909cd6f108f2625be3830b02dad8ce0a14", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "dac89454877043a42d5705757892dee6bcbc1c32b704716a3f55a7c07c50da81", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "4e2678cf060e4a42431c1e6bf900fbe24d2798387f06773cd69589a4ad0462ed", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "1acd4433d39fc2406e8dbdd696c10e703a752de296070f68d6f4d5f96409d8d5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "bae5dcc6ac368c64c755f790ed066d33df4de9bc4a9c043beb182f600ccce975", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "35ab2fb61d1bbb5de9a29af61e3e8ad2197f19a329fc9474456438bc7057a962", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "b7ca916ba18a3b7334f7163c9893a8ab45a42b9e8918bb009b58e96411ca18a3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "679c354d9aca175d4019eda06675505da128719afa1d4936fbd10b9c423e5830", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "0b85592be9f6431ad3fe18e39be44ed09846f465a0f8fd19cd5e140dd5867aaf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "ef198fdf93e986d6a80a592b8190714a61c06414484a06df10ee2534b81f4d6f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c3c889b001e33dbfb0a028e00773491dcbe484f4f510ff9e209305ef0d2abf17", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "ecccf3c774889a3cb5ea186de48e59ab4c4ed974fb873ad8e87aa4cbca997650", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "d3301122e92d3a71630bab1ee8cd82e4cb3f58cfdb129c3c253d498326c83fac", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "48b1f311ef643da7896052efa0ec335f8ad579877ee01efe5143b5802b40028e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "aa33422009fca2d0fed306a8a622a0e9e01b57eacddea7996b14020a55ea82ab", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "6f9e8115f7e93d566dcbf8ba9372367d1d86c7d6ef75a107c9410482089ca4f0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "6f9e8115f7e93d566dcbf8ba9372367d1d86c7d6ef75a107c9410482089ca4f0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "b8c97d7905684a950fc69f86548c1d62ed7e842f2ae44661804960695ab91adf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "efdd2b0917f89360ddeb5dfbd1b2db083ff8a52d0f2969f5c9e05b39a535a4b9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "71923d64188c14bdcfd72dd61a8836a5494400f7607af18f92aea589f10e9acf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "122b292d9b303e9e105f1f85cce778edf3c0d46a8d65275554e14a48ae96b687", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "8cd7d0e89a8d4ef98f104c7d674036bda19f21d882f88800866edba367b6ce7e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "42ffa2411f9f65a7f91c2fe9029127198186cde0648418cdb79646e13bd68e55", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c82baa8dd8279aa7e25763b39b6796cc1d5a2cb27606910b998d1f3107139e64", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "ed3855c3de5cf41aef512663e64c1f2aa585af80ba8ec46232d99397ad44a13c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "d1783b51bdc24bf5d8ac0cff1156e2c629c9086d7bfdb8d0bc7654f9e3348c8b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "fdf1917625b198793db9efeee22c7e9094a7c7aa347311eefe6d6801bcace57b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "cf475f7fc25d035f4341814d051a9cee12a553f73dfdba8f340494a6830ef54b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "00ecfdf602fcb460d9292d180e522b98aff6dfae37371f33ad0e2e4909291431", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "78d5c744e4b5e2774c062058914d25cea02ba1ce667cb170d29d51bd5a71f027", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "1b8ae5da3f7de23688bc56e07d5a4d3c3399593d7c6f1ed21cac8460f0dc9c04", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "708cdb2bc46e4cd77142395aa5a0910d8a5bf5e9b43265e6b4ffae6ab74f85da", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "b181900795207476b4421b220927e53fb88b453ebc653e8eda6ec1ba2eae68f4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "ba615410a34148c7e0726b73a561bdec56293ac56be3595f4470cb6b474e324f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "d524e87f6458d58622dd8d5ec485dae219e2cad206a1f19bb28c0231108b5795", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "238cf2b3f15338b0c1905ced002340f16f1ef6ec6962cc5a7b5eac1c1844d319", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "6558c64d951dd3de96374708372474370c2754bd73c34bc433320007aff994aa", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "333562ee50fc89b50612eb77ad2bf550c66c74f507c7d76c075007f881a0af2c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "ea17d5e9caea53f09eaf7ce5e938d139cf5f30fa65f2044b75d39e1ab59797e2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "9c12a6012319e0676ffce373f28819bc7bc60b3d1f56c538bff6e9bc68e80581", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "23eee17d15ca811b7b893eac1beb07937dc6c8da8626f1000c6f65a3d442fb31", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "66b57dea07fc62aa2d7550dc794d795b4f3f1654af6957944b2ad32f804b9253", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "92051b3ddf4ab3b38833ea23d3afda575cce6ed53270b6638e2e2de2e1b4aec9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "58e5f82921bc3264022b20e18618407d833823770a5b842ab2aa934a791f59c1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a83851bb4885b4655bfaae6b8ad3220d7c0454244dcc792342980273e0a5f5c9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "7df75f075aa03d00e1e065a06dfb6fe7fc6dcaa38c304f118e76b95a10808fd8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "f4e3285ea50bdfa8f67686759c424a03e4b550290093121e4deb90f198d99942", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "cceaa9ba6b3bfecc973196779f873f3ad2390a66bbf2951115f3a2cc6b4edc65", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d60a2d88ab9eea3844252608557645f2a3a29c31bc99aeeb0b1b0028c4fc985d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7fa9383507cd5d313c68ad022d7cb5b5bde41d7ff62681a87d59eac8c2d45ba6", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "2fbb60a329201e40bb1eb3b38759bd91175629d2d7f7cd83a2d0d38535a9f55c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "a2a69c0189e47e1d78fc22ea7736005bd639061b9c069d2566c04433973f6caf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "732c26c2b26e13f21549354be90b4b2e46379f2811f00f337ac4d881ce7a71b9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6d98445bf67fd80cefbfc9ae76bec47b346161fddba368bb830aa216ac483a3a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "71923d64188c14bdcfd72dd61a8836a5494400f7607af18f92aea589f10e9acf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "93628c6ba1cd1a4b6ea9c2c8fe384a628414641aef132cc9a44615dfa9ac2a14", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "d5ac6bf625eea6093b86785ffee0a9d4712fa83377b4e4070afe843310f27984", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8493cd9b220ae5651a3d30bf11d8a622814c5bfd27ebba8d23eebdb2147a3946", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d0b151484a56e3b3a042d81c97718b8945d4d256b2311ec3f389a982a0251ef0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ddad0b8c56519b33380da46e338a4b799baa1fce0d27139352e7305fb98ff8b0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "a655ec56977d01fe2351eedd4d5006b41f4a1a0cb7c1d7f5dedff6e33c88b401", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c540464dae58d5ca46f416f6546e1c40c9af914bb5781506f42fc24868dca481", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "784b88376a75c0abdfc104d1205b4a2b1db45967f56d38335f1662f125c7cefe", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "da5de87ec7e12fbf4223cfda6d186d8eb99f9830cd2604bf270b7b5d981dbfbe", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7a54040679b0f69d980e6c3bfe3c3883e3adec7ceb7806cde6d01a8289b35483", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "e46c1ef857aae2591a866c3204b25f584eebc40a85ddb86986d42fe9d957b381", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "6f8cd5d0b0c710465e769579045e5d613db225ee6996191b32a98b96ebf52b56", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a01a3ec437223202f020ded2c028fffc88cff118f7fcd7184a76361d695cc0bc", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "4359e30402d42a9925dfdbebe1180b9409a4d77879ac298f8488d8aa596e4c46", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "599fd6a5c2f6adef04cfead16c9f49e816a8b29f25007d6bdefa438cd89fb4d9", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "3e7a1bf63502affa99ee46fc8ea5ea510200a92e2ce81529ca5c13c52804a08e", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "482ecad68d6d28a581214d10ea2417fdf73e8617e3024920a038ac55fd03564e", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "434be2b332354581c0d24fca8f25521197b38240369aea63ad309714fb23d3f6", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "e82fb145084b94b98f73b3cf418a21ad02d34f4216178efdb0dfdcfca6c215b6", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "1128b670979daa695f8d2870084a28adc101d4067a73e26621cda4689d0d1861", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "1369b51ad9b62e9649cb0d39edb84aaa4aefa1dc592dc6c8590acbbe0a6ab5d7", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "d5685087319cf93974e56ff8a28982bd516ce532094b52b825625864f213c903", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "47b1c537ce709b456f354a642644e7a9c771915a2b044c180c402559d85e87ee", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "167c962b25e53bf31ab7930be43f142dfa0b249f6dee71944faa722b8565dfe2", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "71e4f27badb2895fc6b4218db54633806a2e458cf81f6532161857a1e300c4b7", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "f170bf30d0b2f0336174fc382eb85a24aa865e3f41e034a3ff83f6226a216a6d", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "c7f49a62396a618959f6300335d7cace43e9408af5158c026a6c4d56a57b5763", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "67f9c8ad8f1cf64b2e273b1b7aaaa3edaca4d3eb67b000888df1387f16c245da", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "fb224dd222492873dee0d8d2bcffe1d40077bc90de5e4b22e4e49f8e61ca8d73", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "9a913911eca91744951aa253ca4509b85aa6fc9903ac11d674325313b8d71c23", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "07e11f6b6a9ebd0dbbfd22a8a6e6dd7fddbab9ca070bd0c5e257b9a988170c5b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3e7f7ddefe70bb3df975259f52b42fa3690fd47efebbc241be51f03a5baed482", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "f726f5d484c2f2a9b8c097fd7870b700b090e1fa6e0b4c5bd5fdd09f93d6c869", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "9cfb26a8e6ba9eae233f4628164e17366e5989c39d07a2ccfefae3172890db56", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "e527428324a5a88b4e8e2d331a49e667b14a3fea0dc6e462811dd6492be9c1f7", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "46d5623b1bf52c053762c7513c5c3c9baeb6cf6b62f014c48cdd46579eaf2b53", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "fcdcc4de9bb33f5c9e945ea82c22804a03c3c9836c93064dba4aea96c273c284", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "56e7abc2c4508b137d9b401a18ad25887a63aa4ebfa5f1ab8dde691bb418db1b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "15f894bf288b666c6d3f544e1054027dcb84536c1c6b39cd2df295e3ff2563b8", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "59393601abb5d0d9b29835c9ca71a208c01fa14c918f1a40ccb9301817877a35", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "64bcdacb4cd17963dd781c77335bdf230769fe5b341568e3b46eaca7bc85bee2", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "1571d2ddda734a6659c1affa76c5c4a020802d92d0e1ea0121ec2fc6a70aaa1e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "f795e1a8e1583163ea039c9cbe1845f982d0a82c0e48d674e47844b6e4130275", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "03fef8c5de12fde481d838659311b98202e3cece4da66f14d47cd1e4a4832272", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "116aeb678952729ea70599595305461ae4628d427ca9b939d85b348cd5ac457b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "050764e9f060831c4d794043364415b1759a8f4a274f0cd5ad83a195e3083126", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0fce3352e1a06379cc450a2604294cbe82fcde4f250099437ab9ab71ec333607", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "6434bbd9e01691663eb4442ca32d945b0bffe32d845a05efb0563a670c1a9a76", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "c555ff7275006d9f8f205c31e412910a68dfe31c67bd829fab138263dd070ec5", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "627343ab8c8c31cad1b3ce2b68a98431915a5de4cb96a87157288942337a6763", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "8aa235c6d231d71d9deacf8f9cd6ec2d912b84dbc54c644a22be540a3139c5be", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "256ec6ca04767336db4d6e3606f836b587fc61e4d2cedd2908741d8da815e0f6", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "474d61309bdb7f95bcbb1c3be4cb157d600d7b032a26c0a9672b908a7c4bc1bf", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a865c9937db08b1c47066e9054fb072a92984935c19e367c7f68fb00d2866462", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ac2d540731f610ea6b81b601e7d9aa7df668fa350d1de5aa71913b0f230759e5", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "e0a921804f11b0565f313e2a415925a3cb4da69fe7aaca444e4593cc87e7cd13", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "f1f7a028213851f580727dc33356a943ae814d9c762fd26b01d93690e19c4ae8", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "451a89f66a3fee36991a4f732779486af514ccb77648fb1e48ffe0100e3952f0", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "050764e9f060831c4d794043364415b1759a8f4a274f0cd5ad83a195e3083126", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "dacbe2e6caee7433f28a74ca0d5bd470cf52d135d5d538d754d22b4824042110", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "1ff5cb269c89893585ec1945f73f2510b77a7541a4a7696920c916870df84cf5", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "59f815fe4fb6187c30ee3b480361499c502b46a97185ff88a157464fc213a9c9", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "20e7c3127bf85f906c3953137396f6134690d7b1f1c0ce192634992eeb65c8b4", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "f2ba0a60b127bb1449e18028483991462f53e6bd2ca9d484d4092c10704f9d42", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "83f09a746b8ffde1f82e9f44f2b62d3d9ff7aaf4bbae32d15de015582cab4a6a", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a618a19e45c81ec3e5a4ca9cf94a671230afc59339f2ad9782b0b7904eeb46b8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b7eae1db58325941d1ec09106d6e3bf676d6b58ba59fa44e18eccf3c9a690d15", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "91549054fcdc3261ada6372a2c1c8d3099e7c2960c663f6454874e3a1554ab67", +"T3T1_en_test_autolock.py::test_autolock_default_value": "542f5a9bd427f55885ab0c66c81ef31cc98ebb3f86d2a4c5b27b78c25292e884", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "31a69b9b228370c69195ac13b304335de87589bee67bef16d16bffdfa6c3351e", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "31a69b9b228370c69195ac13b304335de87589bee67bef16d16bffdfa6c3351e", +"T3T1_en_test_basic.py::test_capabilities": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_basic.py::test_device_id_different": "8c948210185ec3c8e3036fa7b04e41e2bd0101fb14a943aa8a838364d002ddcf", +"T3T1_en_test_basic.py::test_device_id_same": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_basic.py::test_features": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_basic.py::test_ping": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_busy_state.py::test_busy_expiry": "cc47521091a6f821fc422cf17a8346fabe77ff831d78c582b9fe247c50a1f87b", +"T3T1_en_test_busy_state.py::test_busy_state": "deab792545727402a99ca426aac438ef3a68578f7a523724c5aa040f04fd29ac", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "0736f7cb1264e016309c5fa53d4194b8b2bc2af02e3530ee0d06d7552d829787", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "0736f7cb1264e016309c5fa53d4194b8b2bc2af02e3530ee0d06d7552d829787", +"T3T1_en_test_cancel.py::test_cancel_on_paginated": "7e17424e2a5161822b7a7142925906b66bc9875c1e38f70ea269b3339824053c", +"T3T1_en_test_debuglink.py::test_softlock_instability": "6f256bbf2af93222dd758abd5bce55a20a274e5c63b2c15f2ebf3796f4cf7d9e", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "4a25c68ba3e143fab97092a78d9463565634ef90e99234ee216b4ee9c8fd3656", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_language.py::test_error_invalid_data_hash": "0820cc7a3378682ffe43a480dc3bbc1cba7d0e305b04d32a2dad57c1ca7851df", +"T3T1_en_test_language.py::test_error_invalid_data_length": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_language.py::test_error_invalid_header_magic": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_language.py::test_error_invalid_signature": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_language.py::test_error_too_long": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_language.py::test_error_version_mismatch": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_language.py::test_full_language_change[cs]": "c135968a2e73efad2207eb312ae6093b27c31d6f7e7db6ef21376011eb34b2ef", +"T3T1_en_test_language.py::test_full_language_change[de]": "28b9563599a242d7d662bc65f97efec336afed72a658af407f44a202352d76c8", +"T3T1_en_test_language.py::test_full_language_change[en]": "e88ef535a25d21ab323c1fa3c889072aec3fab6fc1054bc9510ff3f1485dec1c", +"T3T1_en_test_language.py::test_full_language_change[es]": "316ee466151fa0d79a68afa0c8cdc83fce92ac36eee006b5455422703dddb26c", +"T3T1_en_test_language.py::test_full_language_change[fr]": "54ca79d2934556e8270e559ae3d8c2a7c5eff440160bd5517ec58ebef73049ca", +"T3T1_en_test_language.py::test_header_trailing_data": "80bc81829a373c770a9a06907a0baaf16c4b42643241baaf5bac67690c5a1213", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "6a67b582217b8d9a1efffc9d1a20022942521a184a4d2b1b11913d194efa6451", +"T3T1_en_test_language.py::test_reject_update": "eeb0a1f2e2d37a66d6faa8b031d142d2b307d707221e5e1826be7748051c1829", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "0e3a09b593202a607e80232665b6655235cd7da33e5899c0853ebfd2102cd937", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "0e3a09b593202a607e80232665b6655235cd7da33e5899c0853ebfd2102cd937", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "fc8fa5757035edcb5f8556ec255fcebfee21895d0a97648595eaa753de227288", +"T3T1_en_test_language.py::test_switch_from_english[None]": "8bd713585e79b2ae44f92589d427a9532b0e964b71b85b48f07e174966e2fa3d", +"T3T1_en_test_language.py::test_switch_from_english[True]": "8bd713585e79b2ae44f92589d427a9532b0e964b71b85b48f07e174966e2fa3d", +"T3T1_en_test_language.py::test_switch_from_english_not_silent": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_language.py::test_switch_language": "ae944139d9e67e1e6249efbdb6b2320e5172d20a9e561480c6bf0ff61a9a6a5a", +"T3T1_en_test_language.py::test_translations_renders_on_screen": "3ad5144876a3fa5144851326c2de9cc80ca0dfa25b4de935c9dee1b3c323bc05", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "3c2f798214f5d8d243be5e2f4097aa4863806408c1e03856bd6db99d18dd986d", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "8b79fa0872a75f671c9ce16cda3dfa83dba022dd55756fe7047d2119f2b15f37", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "09890808ee251d9dbb48d03fc6000675e1aa3753a4af8ef8b1b906611f561006", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e2d5df4a688977b772d9b48601149bbe40662273ab153b3bd3b3421c07eb9977", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "acb6a6f5af2b302d5a3b32d0a9e6f3d6423c602a8fb6606cf915d2c3406abf69", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "b79876b8a8b5905854c5bffb0a96892d0203f6fe2f5a0a844f7a27e95c13b210", +"T3T1_en_test_msg_applysettings.py::test_label_too_long": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_msg_applysettings.py::test_safety_checks": "3ee3a169fe24b2f680f17bc1632ef401523359dacf583a9bd0b899815a7c78b6", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "509d17df0ed9639b992e36ea06a2f402e99e21934911877a8e6ff594ed928b83", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ba6d78fe71d5eb79a0bf369e65991cf87a49a8080a68b6685ab85133f078b4a3", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e6ca6027f083fa20305a132d381246d4d7cbf5605895db82bd0211c6749b1475", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2fcc73bd2798f5ee55559f1f2e4f1a997610d9d874b448154c10309af9bfe883", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "aac37bf6af00a4acd9f35dce0c891fdbd83496a1d8775afcc1e32c5868d7acbd", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "5e90d01959497056308ef15eaf40364a4eab1b57d0d3f60d05688c0a9c3cb230", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1994e0bed87aac2b8eb966f66188ca85dd77ac80c679188c2da7fde1e9997a46", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "45d027af6a3c0f03313463eb391dfe992e0b6860d291f1a41ca17a64c159debb", +"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "396abc86b062e562ebbcd7cef8c01ed64d081beb3d0670d1b0508249c5a49c94", +"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "d4bbb98293f4ca280f8bb431f284fcaff39d5ccdb7d69e0452523f2926ecf2c8", +"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c27c3010c44723d1a8ba3c47a7cf1b7a35e022fded7e939c1578b2370989975a", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "484ffdb19b931ad9875f5897706a0924be7e370535251f4b0ec770c35f4155ba", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1ef3b917ab5960fd088d6f4f70a1d896c2ddc5a72f885e048e6b8ce232acf9cc", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "159bd07e44accccffcb835de82cb97a41d8111d9e5919680e27c7f1acbba4df7", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "274521520fd82e933e620019913620460210ccdc35e6d84a192a81c32320fa25", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "23ec3b779bdb57d14c902743b2b788da06fd6c5ac20dffb83b5f6501c33c5359", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "e6a0f9a478590386f0e96f7b370debac2319f074a506fdbb21070b1b886db7b9", +"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "72caa37cac2969545842e0fb10dd4908ff3e0b8edc2aa43d6096da496682fb64", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "b2c54b8a45013e956dbb5505318e026cfaaf4fd0a458b964fac3f0bce31c5ac8", +"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "0c52dd014b0672ad38dc32f56f934d5e94c1fb18566457afee929bcb98ecb1e5", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "7c1a64a63245add49190544310547b8d054870cfa9d62ba53ef025e1d05a61a4", +"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "f6a8870031b5ab83d0fb04d5ae45dded68902c5feb00f93ee350bdb384bcbe3d", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "44bdfaea51270fd8c13e45b78e35212b49de1581f003820919310a4c8a42d1dc", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "f6a8870031b5ab83d0fb04d5ae45dded68902c5feb00f93ee350bdb384bcbe3d", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "f6a8870031b5ab83d0fb04d5ae45dded68902c5feb00f93ee350bdb384bcbe3d", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "0199197df445c047eff5cd2e0523dc0a38700a4150e69d3265221d329a724e18", +"T3T1_en_test_msg_ping.py::test_ping": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "72827c95bf206de735894b16b1f63742087990073535d4994584462526737d7a", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "727e2fa36ae8cb429b4b0330033a57d858b09e253c8698097e9f8ffff85bbdaa", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "d414c2f06b267f70d43326a59b0f3c641fbf2a3153b6dcc73134ff650d980421", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "f113cad98a76d543683da95e37143b93f7d485c5a83185de5f18e0673cf98a18", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "8c948210185ec3c8e3036fa7b04e41e2bd0101fb14a943aa8a838364d002ddcf", +"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e90a8f3008a58fa6616911b63dcab3bd74713a355c92e352686c82981aaef5bb", +"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e90a8f3008a58fa6616911b63dcab3bd74713a355c92e352686c82981aaef5bb", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "7e0f4f24f93d7440ee8bc6d3d5be414974762730239680f2b3aa7b869197cfbe", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "7e0f4f24f93d7440ee8bc6d3d5be414974762730239680f2b3aa7b869197cfbe", +"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "7e0f4f24f93d7440ee8bc6d3d5be414974762730239680f2b3aa7b869197cfbe", +"T3T1_en_test_pin.py::test_correct_pin": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "ac262df4488dd3fb06510e930e17f808607afd992aa9228e018ea0ea84413097", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "75df2003a1d68917e6bf6ac629e655e3253363adc2ed0fcafc92aa920a17112f", +"T3T1_en_test_pin.py::test_no_protection": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_protection_levels.py::test_apply_settings": "0c8ac21e8dc0c2815aa53f5dbe182071639e3998fee471dd15b39217fdf3b230", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "d0bfe17b8d59cae023d6ad4762422ebf4f1d818d5f6006be0c4fa09b847e21ff", +"T3T1_en_test_protection_levels.py::test_get_address": "f76f43df4ac51e88b5cca01bea9413e0dfa0cf470e8f628b4c7064447ba15fd0", +"T3T1_en_test_protection_levels.py::test_get_entropy": "f25ee5711c015f064d9a0a0ed78429fbe3853924f15e961b32ed07013889d8d9", +"T3T1_en_test_protection_levels.py::test_get_public_key": "f76f43df4ac51e88b5cca01bea9413e0dfa0cf470e8f628b4c7064447ba15fd0", +"T3T1_en_test_protection_levels.py::test_initialize": "8b221614c9dde7122331435454090d4bb0efabf74acaeee48411426a06ced70e", +"T3T1_en_test_protection_levels.py::test_passphrase_cached": "4da688b1737ca690a545dd78039e89a840562d935df2c42be4c9f029d657cf0d", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "4119c0debbeb7f4a8cdb0b8d21af8eb4467e6d6f8aea6891940701af6ca544c1", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6fc7096bd5c259f3bc451ba068907a387eea15afd88d91c4e479d675c0a9c433", +"T3T1_en_test_protection_levels.py::test_ping": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", +"T3T1_en_test_protection_levels.py::test_sign_message": "b5ddaf347412ac0fe78598e033bb31a96a49e8ccbe2b3ab6ea59f0685552c28f", +"T3T1_en_test_protection_levels.py::test_signtx": "af25aaecbcdca650764988c57b1d3a3975051beea5253982c3e06aabc5e992b2", +"T3T1_en_test_protection_levels.py::test_unlocked": "1cdbff929b2c72569905d20c9be63f413968646b2f8607ebdfbe34c692762527", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "037136e041707416dc09658b87366dec8f5f42d223fda6e65a91c02fceffdb7b", +"T3T1_en_test_protection_levels.py::test_wipe_device": "6ee69aa8832a49a5b05740fb01c7a0297ce703a9880a26615d4ffa7394790ea0", +"T3T1_en_test_sdcard.py::test_sd_format": "a91395368e3b9377b0c4542369025540f70e5f99f6a06f438204a36fdb3b082a", +"T3T1_en_test_sdcard.py::test_sd_no_format": "18e75c30acf427b0a635760d220d58e19ba2dde481e7838b9cd503da0611886f", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "2239d88234361188ca693a42a8faab6e05414473a656bc29de3475bb84c835d4", +"T3T1_en_test_session.py::test_cannot_resume_ended_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_session.py::test_clear_session": "2760ba1c6cbb3d685f23d48581a7e9628a6e71483d8514f0ae3dfd57cc401928", +"T3T1_en_test_session.py::test_derive_cardano_empty_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_session.py::test_derive_cardano_running_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_session.py::test_end_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_session.py::test_end_session_only_current": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_session.py::test_session_recycling": "7e0f4f24f93d7440ee8bc6d3d5be414974762730239680f2b3aa7b869197cfbe", +"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "b269d12a412830fec1b8780558ce9228f68a89794bc5d723df799b93c88d2442", +"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "740cc865180ab047e36a15474d6ae6f70b45fdb968ba7c701948e6b003c2b90d", +"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6ab443e1e19c7f67320ec6f1bdff7f23a78b615a490e172fa355422b0ebfe9ba", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "b1d82390be26fb79d37f940131573927883842571e2e7dc5824e2fa6e52b7281", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "a4742ac3dd5f186a515599dbf72ddd3bc8037d3e114ef78af51d70537b04e1a9", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "3ce87aee8ae1ccf35ab846730ada9dc1c466963104efb3f5bcbb2b552d7c1f8b", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "4da688b1737ca690a545dd78039e89a840562d935df2c42be4c9f029d657cf0d", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "cd6369d228dca6bb9fbdf632d00cebfb0c03a53f11c7a43eda754f24a90494ab", +"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "ad8e7e2e8d2ce9fd477cd92e04d992033e186c890f5af063c8f3cdd63970d5f9", +"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "73a17808672768cf145f7c2d7113fe57ff8fa74079bbec28e399ecd72e0c5495", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "05e14429a238cd248b620a0244448bdb7914008a6267c4c474cfae96c43321b0", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "a54154c8d8e510b7d79602442069e55819a70c494afcab9fc3f4288116e69a61", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "cff7ef84d14481b627f87e8792bf2ca10398535d75c117ace3f2d49326b45865", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "2c87b196e4240492e4de9e54e4821438c69e71f1e431bd5430f06a08bdef3ec3", +"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "f284d6e9b0461c58d6c83c99792ed69b22192d7376d881bc33a5d58474d90c69", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "494e458ad2db0110b953b07aec122210eaf1a23110cf91d861ce3e6e2eb58696", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b621650fb681c71afd7cb7b1815624fa436cc4e35df104f8846519a4b992fc67", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "06b225e8ca31b5d0d614d7888cb264027a6d03838108ff9e0d372bc40abc73d0", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "8efcae6c7e9e528e354227d23a67c94857e6ab64cca06e83f14a0862f4a5cc7f", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "c541f4f3ad5c915806358f2ca71dd0540c63cdeb0fcdcb39026fb9942985423c", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "1ecbc21305caa32794da8732c25fbb2f98115b9679d111a6574a5fcd2619d2aa", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "671ef8dafb5d59856afb6d1050f691da139b5ead642c01b7278e418bc4d87b44", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "02f6bba34a198d624816a14c324c6f63245c1129f36eb2f0dc4b2fee9c11bbb8", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "493971993419b02ee0e7824f1bfb693856b83f346ab7199469b5a877de1e4ed3", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "51550105866ea84ec029c5d57b7d209b9597cb8bbe4187e505fecd62a32bbc40", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "a4456d54d53f40092dc391381acb2b967f4cc79092143df0f1a1809d858813f0", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "1ee31a9ec14bf206222e1607de663e20d739b329ef5006234ac21518da4a737d", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "67d39cf849e40f2ebf1a0e96d271986336f641eb0bb5fd43e753d9f83c2d284e", +"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "fd53ad849976ec8ed5bf5d09286fb4e45fec06765f9b3ac6d8f03b752ac42ae9", +"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "224d2a62f362fb677de27f82c68b28c1958fc8034fd0a6556b29acadabeeb79f", +"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "4ef4d0fd5e36b2cdfafeb04fff9cecc9917a6c8bc15032388ab5d9797ae1e8e8", +"T3T1_en_zcash-test_sign_tx.py::test_one_two": "ea4ceef158203d9287e3e20f4eb08de8329edd7f5c63d01bcdcd7a0d954d1de9", +"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", +"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "ace5fc8479eb2fd864302f8a10e3e2e0a4cd528be9b605b1b28a5e0b44b9a857", +"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "990a3a835bf0d578c71ec160624219784ae9be0f09b524bd1c1706d17bbfd549", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "ee639ddb8c946c63e435e1711e91ffd321339272b514c8f493556cf02d65600c", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "4f6a46dcf50fe7988f21f49d4c89bade0bf80cc45139f118a2a1ff298e5424d3", +"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "41e3ecd426e7104d5af352f26acb7053511efb08d21e1fa16c9a578bc5cc8767", +"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7873587f7412f7bf5c44d85c9a5fbb1fe27f013070bc94ca724bcbc4c58d70a8", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "9338f7d1d49eaa1d12c004c4dcef08fff16c8eabca1bcb564b1cb2a9c318de88", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "01d1aeca5ada2eae30e952a667ebf0a04e6b11837f3038eed0f7002f4efe1583", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9b4848601fc95ac8e72bb30b55460a995ec07203f2db62166aee1a097d7bafc9", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "17349dd4fefea835984c89d5c86c4cdd465d9225c8e444cef2513c1385a58b3c", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "29174478adeeae88d31be71de8b24c2bdc85edcaf7b7213979d5642ad91a994b", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "a84bc958e75db85e832076ecd219f25ec26717e4926baf568d6c471c7488a6a4", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "62f7aecff9332d9ddc453cba0d8df8f2f6a55883b265a2be230d7db73e51af71", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "29174478adeeae88d31be71de8b24c2bdc85edcaf7b7213979d5642ad91a994b", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "a84bc958e75db85e832076ecd219f25ec26717e4926baf568d6c471c7488a6a4", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "62f7aecff9332d9ddc453cba0d8df8f2f6a55883b265a2be230d7db73e51af71", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3f15b0ba0bc16856a2417c716ca3265b78e7f0813eccf4d2ccd0b0ba49019e0e", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "70ce5e01f488e0325fc80928f68e87b6d2a7f026fd938bfaa9aaf9e05c66eb6d", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "717d0a94c4f157115f85507896cf6801b741bb51fd51a221c5db463032fbf29d", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6cc6d25ba124ff47af11f0dc936ceb519fc12280974e0f4ac72b003100509ebc", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "01caced5a8665434992ab80f3988dc3d968c58b02be725ea1331c9a2b6ce7ed2", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "01caced5a8665434992ab80f3988dc3d968c58b02be725ea1331c9a2b6ce7ed2", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "785bf8d74247be3cc558175201e96f39fdc073c3ebc89cf1f387a66f3ebb945a", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "b18c7bf74cf1c54e6d3350335437204b320ac0eb52e54232882461a6a57e0f9e", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7718af17515b92b115f40d3f2e9515a941b0db447ac65a651d4c00aa27cae5ac", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "123338351ea7e58c980a297d431885d35de6c1d652fec9c42e7361c66326107b", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "123338351ea7e58c980a297d431885d35de6c1d652fec9c42e7361c66326107b", +"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "49bdc73ea647c232e22bd3a581ebfa82886224ea4431963fa871f51f58af4d6d", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "49bdc73ea647c232e22bd3a581ebfa82886224ea4431963fa871f51f58af4d6d", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "6d6b5fed5dfed9e533fde9375ec0d5c42cea2cd04cdb999ea618fae3dad4b079", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "9223fb9d2f3a2396e3e36a10e4870ea20addfd868c70f352efba1462251a0e5a", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "fcb6b8ee98887b97e5a1cc75f6cb7b7ed0296530e5a705b8ab08601595c35c5f", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "1b183c0576da9d3fddf6f1464e7b79721e7c88c1dbdcf50709edc76fdccda8bf", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b600bed44cc8340cdbbf5236a7a617a53dd976468ba4635b29484ab8b6fa8e3e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "444543a07ed75c851985b01f37dcb83c697d5a3d88427e29a55311a5aae7ec5d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "0a51d7c5dda33d05454f5e0920baf3130ae818f8767871dabd8576d3bbf4ae41", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "e97e64b413bb357433f33e187a59c8719c1920a228fd05cffd3319ea188290b1", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "a6ed04706095f0d9028306445cb82e8f2d604ccee3ffd7c03e68520e9631c1ed", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "b0ab052d4923c88dc23c7925e6a9bfa10a73949a671ffafcc09fa2d239fd30f4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d0ecb8890eccd323a996de4ccdc0abc89ebc383a0afe07e9e7f95403bf9f996f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "8d7987692a6ca4840c8eb6315c7abd4040f5a1c145129451648cbf9563f76a9f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0761ac5f555546e88248ef368bd9e6020f32ee18407a2d3403bbb7514136e0c4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "abe0078a6bb5684ad0d677d33e4cf8bfbece9444fc7a612ebda10aa26bb299f6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "4f41cef31e336b56ee42eebc8356354b79c60fdbb1e3d5987ebe85166e75348f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "0be11914581762dddafe36ef82eafd7d7f9f16ffbf31452521789af95b7142be", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "83350b9713c6624bb9bbe084822fe2d7ff615f9f6ed7de7442d7c542e58f87ae", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "30cc327d70a55acf6fac9b5d144fae11f9dea4e340132357205ce31f2a4851b6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "e6682619531ac2c66355395a3ba0e60047855264caf1716cca888cebbe6acb0c", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a3929cfcd4144737b38d7482c00a8acdc1caceb7077c3e554e21ce4b0ddf73f8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "87881528b57512dfd091abc0aeefa3b611862ef8f128e13f085ff7b07f73035e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "69727c28963a101d25a75700f909e68220ac7810bcc351534595fb10ffead697", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "9a62f397f94fa7a8e8c94838fb7528eeb3508dde4da41f4be97bfc7c67b669bc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "444543a07ed75c851985b01f37dcb83c697d5a3d88427e29a55311a5aae7ec5d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "0a51d7c5dda33d05454f5e0920baf3130ae818f8767871dabd8576d3bbf4ae41", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "e97e64b413bb357433f33e187a59c8719c1920a228fd05cffd3319ea188290b1", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "a6ed04706095f0d9028306445cb82e8f2d604ccee3ffd7c03e68520e9631c1ed", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "b0ab052d4923c88dc23c7925e6a9bfa10a73949a671ffafcc09fa2d239fd30f4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d0ecb8890eccd323a996de4ccdc0abc89ebc383a0afe07e9e7f95403bf9f996f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "8d7987692a6ca4840c8eb6315c7abd4040f5a1c145129451648cbf9563f76a9f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "0761ac5f555546e88248ef368bd9e6020f32ee18407a2d3403bbb7514136e0c4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "abe0078a6bb5684ad0d677d33e4cf8bfbece9444fc7a612ebda10aa26bb299f6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "4f41cef31e336b56ee42eebc8356354b79c60fdbb1e3d5987ebe85166e75348f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "0be11914581762dddafe36ef82eafd7d7f9f16ffbf31452521789af95b7142be", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "83350b9713c6624bb9bbe084822fe2d7ff615f9f6ed7de7442d7c542e58f87ae", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "30cc327d70a55acf6fac9b5d144fae11f9dea4e340132357205ce31f2a4851b6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "e6682619531ac2c66355395a3ba0e60047855264caf1716cca888cebbe6acb0c", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a3929cfcd4144737b38d7482c00a8acdc1caceb7077c3e554e21ce4b0ddf73f8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "87881528b57512dfd091abc0aeefa3b611862ef8f128e13f085ff7b07f73035e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "69727c28963a101d25a75700f909e68220ac7810bcc351534595fb10ffead697", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "9a62f397f94fa7a8e8c94838fb7528eeb3508dde4da41f4be97bfc7c67b669bc", +"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "2a1e631eae3c3005ab01dfdc449c17dfef08c01f9b22367a1b223a180c031b04", +"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "32277f407077f911240b951b2013f90478442910268e18c4e0b965c802c33c6d", +"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_bch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "9b9afa0b1b20d2935b8cd2579307c5627ee60d6b0bc6d055a9d3967da9f833f6", +"T3T1_es_bitcoin-test_getaddress.py::test_btc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_crw": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_elements": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_grs": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "a9617a92dcf97c478d00570b71512bb108c23c5e067d3ce5c7880fbb0e2345f4", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "6ba7eafa2e95bd23bbf398c26e0cb40c4cfb95f71aa37c633620c830e328388d", +"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "8b3cfa4bdfee3f23b059479c2dae8369532aabeb21caea9cdffe0fc34bc51764", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "a92bef2485f436df72db9aa9a0d25f0db8279dc65f1680842990f7a192d87866", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "dd8092e96a5d321de6ec58cd52cb9b88f33c683f548706f4ad9551543dcb67a7", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "7131a2bee7e60689d27ccf40dcef72b30a6559f3297b24c092bf3b1113aed16c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "cde766988d8ab2b83a7a9527986399fc776af5182cd76c69c7e546c2595a93b0", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "b93ed477971ef6be62449abd022896acdbb3710f5262c04f0260d3a7194e8bac", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "40117deeb9705d71df4543ba4a5cb02b29a58edf3e5ff3c2c66dde1a5a7f09a1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "cf0a9a630edceefb833493f7c7e04ee172ffa748dd538eb35dbf549d4b1e9e02", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "de24c1a9b9f2d3bb8d6d8c065de386d88ddd8d1c86dfb55c7a3e047fd2ec8833", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "68c7bc05fe9c79c92470a1b0dba0a329ecd3df3a7e0ca664f9e1cbd608fc9c5f", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "b577bf65379cf74624146ed6080efed70ad62af2cf2adb170de6c748f2704b5b", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "c5ec7d747afcd2912eb094a375797d3b785f69afca438cdf03afafb4479facc3", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "685b41954fae7701532df454f5838c03b34da0f439c09ffb8045279f64b12b23", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "46856c986e557ea8f5971e7c36c51311f53208f095458d722def3d2992cb860a", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ab718c099642a032280a74e04ff39bcb4ea9ce97e6647fe417c09872ba015a61", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "1aa52f0ac0c84e3ca9a5c8eaa78528853af25cfee2b8b14e1e4af634cc152cb0", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "439e7d4ce6ac84678cd834cf5e60fdc3a4d2aa74654c9dcf2e617c369ffe984c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "5600eb5348e3c5c8d46eba952e99c3193ee997d4eef5764ad186bf9270a5d38c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "0b8cb53e460a3b95f7eb2de8551638cbec3e4aca6217be79447ee47838b18987", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e29e8151a2664fcf4fef41730f5be8b0f378a5d1c8a336e17058a9641d38cb6f", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "168d61627a5671e067e98d00f7fe93c85a02bbb521085886f55251b366cd80cb", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "9bf9021c753a1c8e16f60e675cd733a3933fd83bef1b8f6753cdf3ad34a76bf8", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "a084d0756f569d1b5d0d125747640d75af1320059a6f7ca9ca5e68a37be5f594", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6ea5a3366a0555bf66223bc9d8cbe9cbdd96dcc1b9eae8b5e34bf7220594ed35", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "0169b1338a9324716c86b9d1c40b0f3b3b02bc09f3f143ca5f6642d0f4f47095", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "0169b1338a9324716c86b9d1c40b0f3b3b02bc09f3f143ca5f6642d0f4f47095", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "9da653329e607a494eaa820001f15099f30a9cc6ee8b77e4fed90cba22ffd468", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ace624549d23f383ea3558df9b90a5faecece9b75fe63dfe4e625cb9caa36812", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "b211b8414780246f2e8fed19dd363d6a855e232c925985c9529167a16e0c4c17", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "93b6ee1d7607d27547f19c76c822a851c4af0ddaeffd66f9fa628aa38eeb6301", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "7731a0bc98b72411e0885440c2e8bda20c42e3f288ad839b772dd9772a214b5b", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "b18ee6f7527b61e7ae8e4f9251f35a984d8a4045d6b61d8e8c449dd9b8f29b8e", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "5a89d837a2c1f16fa7a5832ec37bd29d44936334eba9a72f4493daf1ad0bb174", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "da1463f62c06dde86930c4cbef7c91cb91f285596fd8f0f154104e49b253e370", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "f5493d535217c7522595b6d6b4daeef2b14d1155340ea32eee7ae478c56da1ad", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "29417014ddf9d0f3d2dbc10779dbe410e0df9d3cdce1e4446213e28987f764f9", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "791aabd5283c2bb3f3cdd1a80b2282dc975c8f891cb469b379b4053dad74fb78", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "f7daac6054b8ae57acca23d85368f847e5a77776f3ef3a9d998359da652aa238", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5fe6577d3b54e1bf3e5d21624f611dc7a5b50f5243ccc14b2cb8156d7ea51438", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "6641c67b92c2d6ba2880bb140999d53aff8f55f10ebcbbeba9b9ebbe0fd37d61", +"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "0a51d7c5dda33d05454f5e0920baf3130ae818f8767871dabd8576d3bbf4ae41", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "dd02f8d34a0a53ac60238881618d0a6ff49d36d2967f4b31415104c3c006d72c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "92c76431054366228e53f90214de47ac1ad9d721fb0fbc204624c4d8471afd0e", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "fdd0cf6c88140b31039fe76dfc906815f4dbb70187c062aa5197fcc75b14b692", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "149aa904c9d7d3fd11f824bb53915c3ced066a6b1c79860c6d83111deb7b2698", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "93674e363768e132fb6b025c66beb558c6f37dc653693b31dddae0bc913987fa", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "5782343366cd3b3745fae8535b3950f6a0f993c9024a2b8a1c80ec611d658d4c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "65fc6894e8fcbd8ead4dc015e3e285945c0e398d8e1f1b76fe5a74daaded4a28", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "c719fb013040c8a11e9e14898aeec67b52bdc8bd1d4ffbe34955b445a7210118", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "0be11914581762dddafe36ef82eafd7d7f9f16ffbf31452521789af95b7142be", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "101fbc6fbf6f3f2c770a891c49d5b3ebfe06a86ea3bea6107e095bcee57f5b12", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_grs.py::test_legacy": "03f09349e1f6afe912b62510fac72f6c103c56a71e9e3ef7966539e70e3e447a", +"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "001dcb765ddd5ff3904ff65e65c050fb447cb066bcc882d9f1a29f1bd354dbad", +"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "5621a4f3761adbab6d61cb5ad5478fd70ee3845fef4b211e20698cbb365c9fe3", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "1118de9bb11efc7d712458fde44116d9eb9a2da6845dbfac074ee72e28cdce28", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "1c99cd5ad4a817c90f8b9afcf58ae3264333e3bc9f612c34d4f62f0a713648f9", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "bdf06ced16d2069e99faf7ffa30f336a9d7f6d7ffe1b88b23fb3b26cbbc92281", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "12227d1c4e6185fed809ffe78f98c9166b319598254ed1a80a98a3a49aae82bd", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "e02683289ef1b33aeb2398f1145c23bc14854a1b23280b80c6782129b00946e4", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "03bda6dc99d468150c9b2384532fb84caf9b0fd19b16834e4e742c34c07b3cb2", +"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "5aa405e09f52335e3991376e49a6be383ad82032ef947abb4ea3f3cac20bd243", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "b3fdc845b5d6cf031190e0ea05680fe66a0842a21e7faba940b557e31e605477", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "a26fbed18f20721329f4e9f6ba987663b4a23fe98912986586f5bacb18289505", +"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "0e4757f6be3ecd8cb967387578e700975b204cf73f15a6dc364ef4cb62d4063c", +"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "4a53f46bbad5c4e723b0a0476fe60574a508fd4ef7cff2a715c0d82792ce64c6", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "a5e66bca535d21bef02f7721e916f3fb4883e06f24caa5b4d8253176bc4a83ba", +"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "f5b37a14f1fa5bced379c2227eacb410a9b6cbe6476e59b73fff4fb0413f1f97", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "df767b67065b8de42bf4734a66d49129f42eeb329212f135bdceafb40edae2f5", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "0e87f2a32ee9c238b614832627724f843b8df67f353552f2398dfefdcbc3113e", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "c2ab7bfc8b6dfd8c1286c773148febed1d83cdcfed6509dc6be1e98212edc76b", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "bd96c94253c875dc0c82486e72b73bce54b67617a062d9b42b52bf284dba84b1", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "c8bf1b9f1d81f56d2936a7be879c207e5bfcc4f4bc1478b3579ecd40825ff6d7", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "5632bb7838f1b02971476f6eefd0557bf22c56898ca937063e6609ff207c1d27", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "c0a5d79bbfffca5953ca2fa91117f5ef47deceff6b36e5bbe0fdff7e714ea779", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "3c07a233788c4193bbe6dbc4025c1db7ad7c5ae3ed9337ac3ae2634bdcca710c", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "45fb39140771fd113282f2ea9ecee22e3c8dcdef00d6a8af2ab08f59652d2f5b", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "9eee873401521974aa05e09048db276d10b61a4260bee3c74144238fd7f980e6", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "645f3c4340eb8bd30e042a2a72d52359b1fc7b84a3deed9027a8cfc617301c68", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "a54519b770528fe38058a4ccdbc8ef303ef51faeaee908cf2dd04f75cf1acdfc", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "8cbed80fbea88c110fa533c6929cf2faccfe1032923314cc74392db36d811fc6", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "5e44ee41fff0b1a05a94c73bf5f4a96defc013bad36b91b762cdfbca6c164ce5", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "53b601969757a446b27bb3ea2c05bd5490e3384f294b552a471f3e6c92df80c6", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "87bf2d661f1cdfa10a98b68c6b1cb988b3e5f07edbfe1c739e862357af1343a0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "18ee4f611334a7ae3ee5d5e080af1cdb448d8c36abd455d7a1df1748e30df3c8", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "e2742635353f047a49004fee800c22b5b7921e1716f1949ccd7183adf74557fa", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "d77a4a4500ee213566f3a199073b1c722ef8c7f8b7584c48f6bc2ac18f15b64a", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "e856f7b5242ca53d1d76dc7eed5e5be3142092747820e7770e0e577e875bbfb0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "60a9c0380c99dd36d205787e696112783349a659f288efc3333615399f2c17b0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "d8777f1cf7f4e811ba3c7cabdd176815af2ec763acccd8bd6f604b193721675b", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "5dde8dab55bfdea45f6df7e6b36b35f8698a14d6c6cfd7c1f57e6c4437e60637", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "bff62dfcd04943428f8cdeb0723775c22f81dc547d145779c7774fd83385d7da", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "b2f0d1e516f024ab89eca8b72f2a59f32894afd9176e95a66ba17670cdf5148d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "4088d373ad8100cf3c17a5d3de310d607fc92d43c143d5a77b5ba4bea631ee90", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "e98899b8d8787aa61c406a8700ffae984afed1139f7761425d18712aa7086eb2", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "28ad3ee6a647c278cc42466140aca8cf8e8d2982eff985fbd2514d3e9f97e1ec", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "c797c4b35f2c7e17483b0652964d19e115d64de4d48dd1fa8bcf5ca3486b7d1b", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "a9cf7fc07015b32f20674c02d9fa7b356956e302a35f072d76fee1a16d647e9f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "2986e40cd08f7df6427138c16e28bc26c81db9c72c123efa9c8b1a7b32b64d56", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7fe876a67d64c3e950d647f6a0c49c09ab25298c040316552d8c3b04bb32cf37", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "5636a0da3f7fbcb52e989b1939c8ffeba91efaa0e8e6fd51956b0727ccb7c724", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "3243901fef37a45846841229769b538cd55eba439a2dd43c53f6f6e0c425c742", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "d9e89a070dd73cee65c9d29f3602b9509a00c07d10e5df0785c907c96f93e5ba", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "7f1c7884f3d139f0a4722ab82980fd066df76018bd80a9d705289c0bd0051d61", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d419a99f42e2ce9f178ab0be63f0b5e076e568dbc160158f2b59de0222fff468", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d9e89a070dd73cee65c9d29f3602b9509a00c07d10e5df0785c907c96f93e5ba", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d9e89a070dd73cee65c9d29f3602b9509a00c07d10e5df0785c907c96f93e5ba", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "d9e89a070dd73cee65c9d29f3602b9509a00c07d10e5df0785c907c96f93e5ba", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "e491dc71de5bb8cc08d66cb5099eddb78d6c01b25a6ec28dabf6baedba04d384", +"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "df010f3bf4e1b88182036dbe76e61bc581818924d59e8511102438fa66295863", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "942d0d77c16eae7af830dcbf6f9f9585198da68fb6ead2a16829e5d97f4cbbbd", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "42aa0d8502a5d8dc06849dd1480c407a62a4c4c3e1ce02038734a3a69588b066", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "2a98177555a6c04486c2ff4c1ab73e0020e7fb3a1a6f08680b20379ace22627b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "2a98177555a6c04486c2ff4c1ab73e0020e7fb3a1a6f08680b20379ace22627b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "830c523034b29d6d762689a8901528f4030253779aa4b68a11f55b087975246b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "83bbeafcb05d7979179b75119cb4bde5d73701a22884b7d4e0194933e1314bd6", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "2199daf0c6d0e1313b4afaadcde40abd02914d9745d221811b16260d80a880b9", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "43f02e8b98d164067b25f85c1925b518afe993f2f06bc52dce17b501d6800f48", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "11d6ca2558519db880a01f53e2ca1675ad8de01bbfc28e8ccab94cb037186103", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "97e6217d8a1b23402f1e85a3d136b71b5bb43161ad8c7fd32204c67701306b69", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "97e6217d8a1b23402f1e85a3d136b71b5bb43161ad8c7fd32204c67701306b69", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "b9bfa62452d71da807c69c747b4f7900929f0007581ea39fbac173087eafcdc1", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "be6277db601ca10771e43e290292d8573f223b7671a04a533c70cf1ccd8f5798", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "bf06f08001a109c43fdfa6ca358cee417a09c951e34817e13ab6acb99422549e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "bf06f08001a109c43fdfa6ca358cee417a09c951e34817e13ab6acb99422549e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "686cf56df0f794957c03034738f1c471515ac1534cc7d07a175e9a8a2fd0ef17", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "550aa2b09108f4bfb7a8639bee663de050788d7b7163c37b9d64aa58d9105569", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "0514d37ad0924befed072d9304fd5db1c35c38841183aee306176fe451e27d84", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "0514d37ad0924befed072d9304fd5db1c35c38841183aee306176fe451e27d84", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "4c75a2216353982b46daa65a079d53d94e57d6aab2ff7c5f262c30b3c408f8a4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "6daf03abbf86c5a2ccfce92c8acc2623eaaf9c5cd983e3a1971b3643b39b9607", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "04ed8b9957250eda15ff2c6dbc3cf6b5469c74e2079b6e108cc322207601f2de", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "04ed8b9957250eda15ff2c6dbc3cf6b5469c74e2079b6e108cc322207601f2de", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "53fc81a0a184480a868cefa0cfdc274182da4cbdf321f33002cf33f2442ee33b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "341dbfe838a08ee00da9a1d6f75b08495782a13f33648ab9d0d314430ba87994", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "baf3995a37d66ff6adb092fefca8c721ff47569783121e6a9dd4a2f5cfe2f566", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "ff6026af88a1cd8297cc372c0a66631aa01912f146b948bb73f6c76fc5da1df1", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "ba4832ef0336354a68fdfc8b7350619878a13ad3b36e17f6e4448d97777846a5", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "497930c4ab43d3312637a4a65582d7f7707fe00a7b866f2d0baf192b452440b3", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "497930c4ab43d3312637a4a65582d7f7707fe00a7b866f2d0baf192b452440b3", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "e08cc4cd57b4ef7a1158cf3a6d9b0eadb51591fbba784d0f4875558a129ec4d1", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "78f9378705d53c07e5d982956861356b8ed8de93280b8a2590baef03930adeaf", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "73ff3d149669bcfaa03656fc0c179fa25db9e78876ec07a2ddbad73f24894b1b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "73ff3d149669bcfaa03656fc0c179fa25db9e78876ec07a2ddbad73f24894b1b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "d2067eed8ac1517ecfed9e1a937a6a2ec600b81086db26508ad4a44acf57e602", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "d285aabc12f82a7c2162396f64ec17e65cba504d11c84870fd9760a2662f2b18", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "305a7ec150643f0ecc4e86e067151b67b7748d660c08c576957c3a462845a873", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "305a7ec150643f0ecc4e86e067151b67b7748d660c08c576957c3a462845a873", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "5d4e5c9aaa61afb5e8effb2c074950a0ca0cf34571712e79f937233f3b177d3e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "bdd38676ef0a43d91da203734ba39eabbb02ab3266039cf5977b8cbb6f878ccc", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "c3ad38b68d9de4c29240d1665af05641063834ab27f7a9ca6ddcdfddc4a09a5d", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "5c5044ebfa074dca2981c4829213316c847f97c8f5ad9cd8a8aadd1081e671d2", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bf911a7ad252af558708afd06b203108d326b7cab38c4ad7b0535a2d203d978c", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "04cb6d5a1b6892edd373d8dfb578561fb3535387ee93b1caf7b4094963d91a98", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ac37559a76bc29070dfabf692b464ae3fd10cc16db8af2c0dae56a94201789fd", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "739533b7337ecb9366b150474460689d44bdc484c1bb5df4b6aaf993a704480d", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "92db321ab564c89021dd51af6caa4c20090e87bd3f0ec8a997bcf18f720640b9", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "5b09f3d741663c719f7f6559bf67e826364e5a6eb3dc9919a35dffbb5311233f", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "707cc3987123f6b2823efe781d6127fabe9f21f2179c3238ead468ac3ac55a75", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "782239caa40a4beb190a844e6fa71949eb687c4e622e9a55386d3c9840ef06ba", +"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "f082b4984c7ca112669bc101944b034ea9c49c3397ff2bd73b3e5dff99f97483", +"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "f082b4984c7ca112669bc101944b034ea9c49c3397ff2bd73b3e5dff99f97483", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "5b04daa2fb544e1ed82989517fa5f5a86e765da05e7cee919af34a47ea3ad5fb", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "b3b88b2fc53374af242f45559a9e123ca90f033798dc08885b49d443c911def2", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx.py::test_information": "5115a5c22e45eaebae118d7c2def9ca0d822b758ef7015b9d8c8739dad8b3abd", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "f689b69dccfd9df7a382b9a9cfa38f03195d91654dd2b0bc062fe9f42a5fc19f", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "6f4abe0ae3336da97ee09cbd43387ef297f242dbf514cf20e254a4dd6e444b86", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "b8d8aeeea809b862b11a0caaa4b650e1779c9eebc4fd228e1d24641cfd66798d", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7c0f3ddaa878076ac3cf613682f43999e9ac8dfff938e2d406f7286cd96e6257", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d51b7431766beee8334f579189858f48603391e8171324bb6a7d501b36530ddb", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7c0f3ddaa878076ac3cf613682f43999e9ac8dfff938e2d406f7286cd96e6257", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d51b7431766beee8334f579189858f48603391e8171324bb6a7d501b36530ddb", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "f780785f127acc7b447ebb254de2a260397bf90b8da7caeaa9238cc06760def7", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "24c3a0a9ea8b8f4105799ab36ca042fbc767328384a4e8b00ec0839dcb8ae8cd", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "fe24eb8adf0331fb1e0acc56731889551fc8efd8daeffa96be80296b8f040be7", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "a77d57f775f6b762cc32526fbf7446eb46b994e7b9e1b759b23c689e4a2fa3d6", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "29f5dbacb49a1159717271b18ebaa300c32590006f81aa8930d94406cdd2179a", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "7212960c448d7f291523176ae79a2d02b463285727d31de6f07aec4662bd79c5", +"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "6c55098c67c087d5375de900f94a865feea3bb61756698c9e508fa8b059c7920", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "69d2290b834380cf544ebf5f903d200d473dc9d42ffe6ded658f9475670af808", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "d1ba68cda6ce5d431f371a6675214ca6870cf474905dda069725d99ab781cfdc", +"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "b32fa82bb438ad783170c4998cfbc7c800fe0e60a1111a7238609f632b4e2206", +"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "d495663536711a4969c2ce38a8f841814c09a1059449d8be282340e74602801b", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "bce6b69b82d286b02faab01fb63b42f5a5b621729e03a12cbbf21b77819480ce", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "6742fe65f5f9ee36a0dc137dcde00cb2b9dad4f1711566697ced06dd0d5b3e31", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "f894601f90cc09fdf5e519053e1ee52ac72d794f4d288323a08a7396f82e453e", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "f082b4984c7ca112669bc101944b034ea9c49c3397ff2bd73b3e5dff99f97483", +"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "b6cc5faa35124ba5574137a0c5be2f7655a290bc840127ebec11001e0a9cc19f", +"T3T1_es_bitcoin-test_signtx.py::test_two_two": "0688cb0707ad510036775b586cedae6116451d94f8fdf1cbe1ded82b439b8cae", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "6c55098c67c087d5375de900f94a865feea3bb61756698c9e508fa8b059c7920", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a178550fdd3926a6fa03f35c21a4bf8ae50ccecbedfad8071e9bf50a916c656c", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "4fc8dd5a094e580aed121381502d8243dc51d11fd1b1e593f10a54ad512b277f", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "dfc84e7f0b23780e6b30624ee1b9aa66b79e99b30d4fcf5cdc71f7ee7191c080", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "6c55098c67c087d5375de900f94a865feea3bb61756698c9e508fa8b059c7920", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ee11872ff14d55260dcb37020c37f059f92b31ab831bfc1914bd3704cf117487", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "40c0c6427ecc18ecc7c92113196d60a3b75cdd44950e34d0028e6ce6e41b5ef7", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "a55f966d2ce505777925a22052cca02a5be9c7cd9200548857090f0cb7101abd", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "31dc9d8f9bba385cf410e3ad3b7e907952909bb1cf2010f230d9c6350d123903", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ee11872ff14d55260dcb37020c37f059f92b31ab831bfc1914bd3704cf117487", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2044adbf5eb6ddbe51849742915a1d465a3a2637ff7b0b69869f692edac86b05", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "1ae9c27ea6e08b1a1c477b5b92c4d936dfada72936df82d8116d1588f6863ac0", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "c930cb1eecb28b4176197a64888a4871d3b4518fd21d0662fad8d9a8128afdb0", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "e87c4b04ba44f20bf659c0d06d089ee824892996b8cc20c71f1980a75e6b288d", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "5650193af58136fb2f8491a7b761e69923c422cf70fe3b9ab5805599b6dc5b2b", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "bb28dae8d22af40157edaf48a72511c4bf1743bb9a71f478452878e406dfa2f1", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "c7ed2125e74108f0210247c69120761315c2fc269a523c3faaaefef4510d3067", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "d77ddc426e06558d7321af29d010ba3c6025fa6abde1bb0c3ae4b18fa1e013bf", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "0a632a593e3abcf0d10a8a667ee9ba90f61fb232590021128659986f38f8f3aa", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "73f570d27a97ed052d7ae4d8b3880d9b4221227221ceb6a173fbaee2db095a12", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7a6454465b325d76916d8d614647e831b5759b6878c7a224c9ddebf169ab6509", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "0ab382e3cdffe3b98440b683b623ce036826320da459bbb3f508e38d038c140c", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3b59e425289680d0bc8a84c5982833e0676caf59a9d51f7be53a389993587bf1", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "8cd8f465d6642fcca3b4a6ad276190b02b983645e80192a62ed9fb1f7cb722ac", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3b59e425289680d0bc8a84c5982833e0676caf59a9d51f7be53a389993587bf1", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "8cd8f465d6642fcca3b4a6ad276190b02b983645e80192a62ed9fb1f7cb722ac", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "0200b771e0f1f7d9b6694438b5c8f5a2d5bfcda91dc049d3a51ceef4b14241b4", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "2753bc716dedb49437daa9c00ebf29767488b471081a7de97d67783841063aca", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5bd8aa681e6c3ce3da5938c9537f4ef7f9bee7901f862c48e4016a9d65dd5653", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "2f1940d90b7788ea352e66a0e5478d24e4cf67f84e605329fc8d0bda2361a664", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a1e607402c38de58fc383936d984d4fdd17d10b848c13c38d4617237b87d90fa", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "931a7c8a5db582896bf069475de32cf31a8b5759e0123aa29091d825d49668ca", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "71c6c8544bc4c806fb8cafb891595246fa14ebb4d42925f9da2891be41e85061", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "bf66f2ece8d0aecd48de9ed088d1af1757596fbf5e45d60be7fd2cd9eeaa6afa", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "a285b3b4bdde17ae6b80048b586908198e5fe476b23f189a185d176ff242fe72", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "a285b3b4bdde17ae6b80048b586908198e5fe476b23f189a185d176ff242fe72", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "a285b3b4bdde17ae6b80048b586908198e5fe476b23f189a185d176ff242fe72", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a285b3b4bdde17ae6b80048b586908198e5fe476b23f189a185d176ff242fe72", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "6fc01a0b6bffaffeea410a4e6e2799f18ceeaa7a266b450775e716cc22d1961a", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "6fc01a0b6bffaffeea410a4e6e2799f18ceeaa7a266b450775e716cc22d1961a", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "6fc01a0b6bffaffeea410a4e6e2799f18ceeaa7a266b450775e716cc22d1961a", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6fc01a0b6bffaffeea410a4e6e2799f18ceeaa7a266b450775e716cc22d1961a", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "8d4485d71f1b3d5dfd459f30124dff3e4595f6e30db42cd176b238495f179a49", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "14d6ade5c529d831106219d98305524dcba7eeaec9dced076a0e3ab4a0d8b52c", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "f6404c4d7088df3573401c6c0e0019b5948fd7437579f76950a75640c7ae13c0", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "f6404c4d7088df3573401c6c0e0019b5948fd7437579f76950a75640c7ae13c0", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "46fab0dfe6ba48ace42e1cd0fbed1ef76ed06319aa03db8d7f3d0c6bc788b15e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "2c88247e7e598dd65b00d244fac9a473e521cd40b92f8484848d5f4572d6dc92", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "8dd212eb8ae54cb6f282127e28c90050da8500843afe649b1b166901eb2051a4", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "46fab0dfe6ba48ace42e1cd0fbed1ef76ed06319aa03db8d7f3d0c6bc788b15e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6f08943a5edc61580d4648e53cae5b4909d3b19d118abf381e15758bacae366a", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "3cb825db93c8f80bca6b58882532f4c71a2e3756186d3f2cf71c8e91c3e8f9fb", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "6b7369f516e61fef0b307885e00db7bda8920ce1e980689bb8321c5b3fe59781", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "36426cfc9e0dda2f810d488a3724db1cc8b4470b43ac356eab9d7b4b02dcbcf5", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "c373593b4b5594fd9ee35807fdb99e1487a1d57895e55abca5c262ad76040348", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "2f3a59e44206a5efb37d89d403bb9809a36a155d5f61d2bd8ee7be7774259b46", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "aad59f6514324a5c80be3579f1b26467bcb23cc026686b362111de9a6fa0102f", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "777ab7ea09c687728346090500e625677a2c549fdaa1c0f375c437f63ead5239", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8e39ff902993ef49aad6bf4117546b48b4855459a95cd3faca7ecf28176b6121", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5ac220f4802ddba4730597ea5652d156a2b077b2f94cdebcba78c976297866c4", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "8fa12045619f4874e01b71cf88754f2132e8f18e37f8d2ca4acbcc461983a3e6", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "511ffab9ccfb2eb6f729857db5919cc0f171dab493f9b391b80ea7c123932e02", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "ee729ea7309ae9600f09dc0b3de683a81fdeaed47bf7330c0d1e8934567d972e", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "fba8f43aee384c8ea6c8e543524d727f0a4e3e2b5c245d0302cdedc6586e534f", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e0b8551e5646a1196e984693fb73c332c4e850a58ffff4e44cd237f2ad88627e", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "2a39674cb0fe04ab6bff687f574208f70beec202e3ce0f933f46ff773cc449b3", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "ee11872ff14d55260dcb37020c37f059f92b31ab831bfc1914bd3704cf117487", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "b16908fc7db41417e79a51ef970f4368674f1ed1ddc55be8b5c96607e16673f9", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5efe6590ecd021880422002c3ef8a668f01ff45f3be62d65e16c09a003be2c63", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "b731c0087e0d81446f5abb3d23ba1d0c1a07556ff732b443e8386686e19f10fb", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "24ed1acca45ca08a7915ef9c12f5e42f89bb0e4978fc8ce87bbd94804a0b287c", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "737650143cae36ef83aaae8c08f91d51f174167e3405ea61e37ef5195bf58678", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "ccff47849c7fdc4958f113da9de62d56834438af6042cd6e0b0ddc399fcfa320", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "2696433775bb385c41395728c3ef5c7e08312b58d3e683c55861033ee8b5aacc", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "905b33d3a4238b027dd928597e71a0ebfeb165deeab7ac90f7945822dd6b42fe", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "49699441401b0d407734d16d6c57fd0a1016926819cac00e0d8153b6b149ad30", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "e02c2930c43d490929e619ad6f624a44e7807ed91cecd6f9149c728194417f31", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "7857f87029a78bbd2b1424b7ff7a57ea8840a23d93b8c29fbc9dc0bb91ca969f", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "a60d0d2ac3fe9c85663fa100768beef86beefcfdd4b92c9b5a74af10ea05628c", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "a2438eb39a3f600fd724c93379956dd31f9e834d16365346212d00fd3d2c6301", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "7b862c3cb6b9641ec8e2ea459ff62cb543acd9fd918c8aa7800fd668e17c9da2", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "13a729d4360b79a03ecee5165eb1ee9629fbdd2dadb104c53bfec362c8175c51", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "895da68b96cf390fb5c94dfa033d7af70d561ffd223bd819feac70328bf06d24", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "c6db740f2f4aff5aed9b4c1895dc65d3b900759b4592837c30afdd45ba9e7f87", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "dce3ef2fbe315f47f3002e31d19007b46ad684052cda0da42a37b4cd84e669fa", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "73f97bba1fa207a546ebce51b26def2964b828ea2f1ff43ae84683e308063216", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "5ce3094ac03a5cd637d662f699e5d61ebe8cc821b5abe4215943fb3b21c03084", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "80b5ee9dc80ce38ae7bc0bffac0d5f20ecaf2a5251c33e1dc263430b31c90b29", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "e3f1276737792bc6dbf721715f5449c4c6400c659ff4d82190853ede7bc903d0", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "f365c54acc1d76d15665460a596809fdd830d9caecbfe8619173ca46969166e7", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "b5894124189637a6a54574e0e5f2d1dbfa5e43249c95cc8c047d1098b06e3381", +"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "6e90cd7046ee0b06067232770248229be2e891f2255355f71599541757a95437", +"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "be3ae679490a7948775f0790d52a5b2f1d31da7a1a530dababb625532dfb05c6", +"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "7edcdc95cd8f49b4b388e0e99a2951115e401b7da12ee14aae31660d1e4dbb0d", +"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "05bfb2c7e049973c2f2ceaeaa660ad190f105599e69f7496ddae563b8cb3ae71", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "7d47dab4961e17632adf85d0eb1388308f88d0bf522c341b52e0af7b95c56c05", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "93f25b68dedd7dd38a19237946504c1e187751ffc387a31a661abd9faa567660", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "694328964b11a5545528b3e919cb6e5a790ac3b9d9cc05e7e002751588e6d167", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "c6007a2e26c9550615ba1f0b7299a2fb13965d5f7ebf431096a820b2f56356d3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "687076727e7722d10476febbed06c81a370de27fa6a2d856c4cff07617d5dac3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "ab4fa9a22a09567c46cdc75b83a476ad7ca5bf0eb5d35ac3793d64348c6d1cd4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "1668649a10bb9cb318af42ff1b166e555c74736c22dbade52abb2236d6402acc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "ae499fc93f9fc60616e3a3c9f972e24cef3a1672c1f998a8c2210ae209aba050", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "b7557984cbd15b15ab62f783959a092419bff242521ac34808adbf08e71fce51", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "566703e84f9830f427bf43fc5979b2cbb55a7c216e1752fab45252460e58514d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5cd4036b9c913c51dab3b6bfd5570cbe7a0a21a515c04a367c1ea7efeb7d2c06", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "5f9694b6d3613c5906829381edbc5505b737d63383d13a9b99fc217e6476eab5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "1aaa61d58f690a8c87b61a76f981d3ad2c31fa7167dc1a0a685e80c83b4aedac", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "41efa3ab6948cff12d4833e71ff93a76ca4f6dd2e1344d3bc042728f9f5352d4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "b2fbd8543a80b6a612ba1edf23673f16a507421fcf348aef4517124a7176c60f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "6cacb8bbc939b18317577ab3804f2e43ba7dddd6956b52e4c5bd3e995f27486c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "33bb4d01918797aa02b160add3037e382ff37130f3d2d72045a87d42eb6adac4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "cebf58f18a12ce86747b0db8b993895869fc6d86c21d84b1e16dd3b5e55b2537", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "6dd1224cfb70b6d09d1ed5d982e6212940ecdb87a75a366660c65c47a56d42ec", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f3cf5fc63ef522d715d5c96babd52fa0c4415326fca198fdf738c3ff36b2ab0a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "714f8a294cbec95a9a1bd4cc85821776896395b69a77ec6fc0970d0b24405915", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "20c313de741d0969176b5f549dc44699b20451509c9c4d4f4dfc6dc697539673", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "10a47b045bfee10abc3968cebfb4f0ff4fffc8d636d7ffe23c7e82df4eb496ce", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "96ec8a676c3920c4a6729c426afd2c88b2d822d5308f93895a8acba74d324a1c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "19c46c4b9eb890a2e0028a6eb2986771b4bc2c938bd969cf9ca508463d4f1fda", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "be4679ac0143d08867693bf943a489a2c64cf2dfe29eb0ca5f0287415c3eae86", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5bcdd0fbc1af1d75a5ff6e0ac4c11b859aec10ae82a68ac1dcbb5156ebd1aab7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ebdc4ccf1578df89e1e56a7ecb527ad638e64137f383a4cc033605017471059a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "fc00dd56f0c19c0cbdbd412d428a8898511face8c59bc2918f64ee9735d83387", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3782c8d6f3b80e469f5e2b8ec7b2eb190870b53d6ec6d9e1b81d1e3f43bc8b33", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "3bf132253a1a462f9714948cf1959013dbd8fdab64611da7c9d88a0acd40f87a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "5c6b58e52611d4b51830fd7626aa43d3e8dd8e3957c97ddcd6c90303773e6a45", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "5da4445a9878397310a8ac07f9f9e21a6d78a8350a756213968c0c43dddf8a80", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "c631e3a16770e2dd677bd8119fbf63d2d047599c445bb24a4ca3b0a4866cf30d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b02d8a63bcddc6b0f87069e45159139fb6ad546fbab3e079e55002b0db96b384", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "17bdf93dbe13b850cdc2a5c1bc60a7f5062b9eeac462556e05a80ff7451e55f5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "a1dba8a5746c2b7037a0d17193c890942682d09d9ad976ff61a02e9c9a3ae559", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5f3b540db3e9a46f292445fb8a353fd55aa4ab4f2f00f8575312771b427facdc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "60ef37b079b88b93329131d5aafeb82dc16b70679dfc3ae1aa4f8bb2fd4194e5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "0b94d43f863c776318144798a95aadbc01f2d4d24b9eccf8c9a990f937119b18", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "5e5302230612d1e78abdfe2170c51759788e16c27a56031f99fc68dd5045fba8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "d8093e28ee65c2bc627d4a6f2cca4356d2481276056f4e1ff745c561574532bc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "af9e5a73ad279a2adbffc9c10a7b4648d38a8c60ef861a00fcf2dd51e3b9720e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "f8c9df9a860082d0605e3398c85da01604a29a5f0b48d762dd310990056ae174", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "e611f9ec2e4cdf7324c4219480bc5157d52337da983781a3c1c68f55aac1dfd9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "112d129387923ddd5b64b84f90c8cf0beb10ab09af7091aaeb1d5142b120c2d8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "062b6a026075b17f76fb69cf5a684a1150b787dbaefb3738d592d278dffd757f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "6269eedbf5d8b6a4695fe5f910ae1afe1b2aead90812a00cdd24f9f57158917c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6c40a3c05b0c978cb74b812063a2094c6ccb99f9484ddd248bfb41e9a475e753", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "1341249b4ac5beb4bcbfa64a6f5afd5b714c02050ddfc92ab7395e1531bc203a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "a1ed017ab598a4d52cbb88308ed9201edbfb96ba82fd57229149b10a6c7c1519", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "9276c099ebda5ef6eb8634fbd087807b8c87cbf525ddb4a8daf7b573a1f1548f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "31b345cd318355e50b4c3df7618710de0e3d94d9bb335bad045f15b0e4b4b97c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "01d80d5eaec15fedeaa8e47a04c7c348199db6ee991288ece1efdc831b17ea51", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "9305c3fbded9167e2431400667eb859ac5ca4e269ba87298ea29a4145b8d1ecb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "a0c3dcc9a1294ff1696928c3218c5dc3c9c554f15c4b0c1b596238bd51d71cad", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "dd78aea8892da7b8b3e8436597fff369bd8db2e9165fcb292a44f1a17161cf27", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "b91ae6fc974f02d728fb0d2a737898b0d3c17099de5562d5129c37d30769c6d6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "d46a1331b02359876de80b9cf92a343c2cb76762c5ece0daff370070d2347c04", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "8818d7437b4f152e860a626518f0667e605c512820ba005933294e8aeb01fef5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "95cb31cf1045b7e39d411e9f3d322705dc2f400a14775e86f6557386e709172c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "c1ea5e5208bb7be1ea2b055f933a72483ccf0ff02cd37510b82c2feb767f0f89", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "66e7ec0e27fb3ebc4511a078b0c1235f8a948c90c33a6586d6ba91c99bbb63cb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "e4efde920a645be6dea0702e96fe58d41105e85331623f20204d28521c041a86", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "0049ea1e6e732589d9ddad82750e894efb48e1c9b0d6271a40dedceed2fd6f91", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "79109cc5fdb23834f0fab3430531fa837e37c07e874a3837e6fb69881be07c20", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ed78c374b25b9d7724787975baf4c3570889b13f336b8f1bdc5bd8baecb618ca", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "9fd31c613e8bbdf4233100b32b19fc7c27f7f7327d7177d0df558df2d92611d9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "ef96b36719473997f45161fc5a0925e490188b69807a630593025b39a9962be9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "1005098b37a5d4df6db3f78fef26ff496f6557df4988b8649baa4123b2782f92", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "d97c8f9daef195e7dfd5474f68aca5d4ab708e3c81f3124f61257e7059a1fe6b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "ff3cf1156ad5b689206384b97348faf5683f8a82d43377da2d399370bfdec160", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0ce546859b6db31a302ff8887c8ca769cfcf1aebb52138e68a5395a57829b83b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "eef306caf3bbc4dec06209c536cb29569c45022f75236418eeb1e37b6b0cea9c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "bb3a5dfe672f2929269714fde57425408e2d947fe4c8826df3ed974bad09fd0f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "3bb1cf0fcff40ab5e1bb9b4d440f8de8717020293d24df50878b975370358b7c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "054cd3bf1c28f845eae8696d65d189ee05282cd1a637a3f1a71b775cba5bd5cc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "9780421ff515424e43ba6edd1caf1787ed1555b852a698228cb3f202aeceb2c1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "16b876c1ba61bbf23e7c9d87e2a36c1be86711381c6ec69afc25e187f3b7bef0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "0c59fd2a1b3bb7c6ec3b59f61b843e69ddbf5a14688462f7aa13a32e028e69a0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "f4a984e826a5f7b6c7831bf79758557fd721170416a5dbfa223ee586c1fc5e83", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "fe16370ac48b27c8ebc6d5f671cee99352e63f5a41bcb946aa7ab8a93dff82f1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "5466474bf7c7d4e782156d4b30ceff7966483e97b1163b97e8e34442451f3b53", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "0e597fee62de6daeff89ca34436c13e5d59e2b7ab3e630aea028e088966c2369", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "06d8efcf1dbf176bab6fb4d382d50b5ebcb4aea5a179b3b40a7bc0366438fa4a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8c424957aa93709ffed768fc13662c65a39db0555bb84e6a69cf8237d3042deb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "85161f66e3ca2cf5f0f409bdb873ebfb7349977d98c67e5c6e8a8f1bdfa96cf7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "7125fa72c66b746220c8452eb6080470865e4713d47f2c67ce40b4c980e8e2e9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "e7d8b36253baef40ab5acf7bab27fde4af4feaf8b193abe629151d662fef18a1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8df1c68b96cdff80bbf9add7adb17365a560e564cded3cb5779312d31b47cd21", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "63a4a82f4d4e0c22785512f82f181b4a684894c1e7f3d32381192a0defe41b2c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "9feec97f4a7b33bf055b63ca0025be9bc2d93e137d120eb0584315024559a604", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "13da45e520db7a9b5a4aa619da78558fa416739bb42b44150deaedd3662c37f7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "4b4e2f37280ae77ced296a438bdc8ce34b204a468b1b1f2ec98054a3467c15fc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "77086dd819fa7c2f049ddd4c8e87188e560454a70bed252c42341030e1b3fa56", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0c34365f2cc647e480482a239d9a431e2d64ce783ee45012abc001d4a202587c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "6a009edeef6b3c1ed917d82c18ae68cf0dd9f8adb9318984a6396aad3557a7e0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "d327fff7fcb3c618e67c113b9809cc6dd8d38fa03d3b64e58dd9c5afaca94db6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "484af8b2cde95b62a8134baa352e66ac46cbac94db45494c1f9f210132773219", +"T3T1_es_cardano-test_derivations.py::test_bad_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "d1abc075f5baf5d954e8d3355efc39581d9cff57cabd2cf8d20fb86dd0aa8e67", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "de3ed6fa49352e7649a4147a77050a80acae4642a27d5eb7d2654c9f321a5ac9", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d45db9f1465f5e852e72ae18e737a9e8fadc930310da8eebf7d4b2532aa75a58", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "e7da8bce65938da1d163b05b517e03e617863964da7021d2bb8edd002826b30d", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "54628782b3028680636ddf89f83d23fdf3590d7e7e38ea2ee101797019e90606", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "b313289b114e26a29f722b559f566084480fbbdb9c9ed14dc5de4cd5a431860e", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "823b7d208944c1126b2175ab4663fc8f5636fa4d0bbc14d8c558f923fc4a2f2e", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "40cdc9230531b632e3848cafe5e5e10cad6cc69d789d22430ac8b5878eda7b3b", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "62dcf9c9eb9b8403112430350e6e5a7c81ef3d8674a1f1f50fadfd87116710bb", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "229ca232ef571a2f7061ea6c0ae5d48b9fc0c42bd5489821fada3712be39bbf6", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "c96acea1e4b073fb62502884dd5bf0f86e1698ec260b4a725286b15ab528da73", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "e9a51c7112bed32339e6dc346a3417cf4e57724a9adb5778f9f72f5181282784", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "de081e095953189e6c0cbce6b12fb0595bca85b45da1bd73f582b540ef749b37", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "00259cb1e49e498773bd0be39214723d5803b8eff71f2946939f3091e8f8879f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9343d81da82b5ce36afe10f051ed8f0f4a459301af33d17ad88bdd0694b84217", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b652a69d8a97c483d4034fce866b230573cf743c139195417c869e2ba89d9356", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "83231a19dbaa9e21f43d77ccdcfa43dd7c8cd2f33bcb1bffb03a632a2eeda6b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "cfdd18199a252a169550170a17509d99905595f1b36427b26e219fc5a8ba14ac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "4d9a281fcb76e46f7fbd522bd97914182d71003567bff9b495d20249151514cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "e0e42dba14f8e53ff579bc272228560d0a136df90b92d9305cd519f45deb17d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "7207c4d4afac2ceb8f6da0c8b73c5591f8e1aa68c50661896c67450d0213d2a7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "ffba45c1d23faefb6739e8948c56591fa77ca5498841fcfcf21a5dbdc8394258", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "b202ab1dbb16d171f66f03a97776c02db6b8c1dcfb02af9ab48c369cb3e777e7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "3697495eb2891feaffbcd9015f2349976a8276250bd721dd2cb6f384d7f5e153", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "75b85e65a99de9d8c181e55760514da8cf0cf5746d2699cea63a4c19e002e8f6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "75b85e65a99de9d8c181e55760514da8cf0cf5746d2699cea63a4c19e002e8f6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e493b74b13f65480a5128e86327bc54882f8c048f9fdd0774318e6602f6b971c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "787e7e1717d5a1ad255d1b688d182f13dc9ca932fabd01bcf8ca4a8bab093d0b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "3c0a2d26d5a7bea4cc1564ebb606ae8bedfde00f74bcf94e38eebabe2059bf79", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "bec693e8daafc71e7d72e82f03bc0ab6de2d3fb48069a5a76f98ef4a1cc921f8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "20dfb2fe76643d7cdfdd9e0d199d78b3382a9b87306a7a64fddc87cf4c922f4f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "170008a74ccba2cbff87f6f6e03da6524cfad61395b8ce2ec71c6841ab80d2cf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "09b1261b9e9ac9ce5682336ed6a276f4aff9fc2848cdc1166d20afe0fe8eb4e1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "2be3b28b4cb86595df62dbfbd64f8fff63c3c7a64277308bd82fe3d0222d7417", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "300e6cbfc2d9a45fefabc09acad9fbc22e3bd38c0bae83c98d9191a7960903d4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "20dfb2fe76643d7cdfdd9e0d199d78b3382a9b87306a7a64fddc87cf4c922f4f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "170008a74ccba2cbff87f6f6e03da6524cfad61395b8ce2ec71c6841ab80d2cf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "4e022c250675e7dcbe4f03a68d449ccbde3839df7e11c112acb77a30a6c86a86", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "785883a04c3781d7787c339c017c880808bd038178201979894d9c7ef7e9fd76", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b3bc0da8f8296b5fec5259e416bbd656a958c58fa5ba22a54cc6893f4e60b06c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "558d4defb095c2e5cf6b42cc238d276e89e212984ef2dd3b58e3e1e5805bd965", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "29aadddeb33797a445b69f27c9b37f7442417b941d7b836a886029defe136a3f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "d7e27e33cccd66aa8300840951c67124b871c53805d6aa5394eca4919b8bc154", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7e62a8c2b6829022a502a977cd6c96711af4c06902eb030106dcfef1a3595ee7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "770cd0a3290548313b10051de75d363961b3942909dfe7a3ef19583ea35a5257", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "3bb9cbc6d56452d9634d1126501bf3684d28b08c8777f26016c94c4c0fbb6355", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "dd7010dcf95b1d47e1713c7de45f499275adae2dbcb3245f80c410ece14b422d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "2f62d93f5312f598863fb5bd3bf6628cf28012fcdc4bd1eb0f3b86c580b275b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "9bd670350844d195e40b2a182e35351253a4999ceef6394fffe4d6973f9f528d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "1159c892eadd24cca1f94683129a15d21699c494afc44b009e3332b5e6c4df66", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "7e4a620c5044df16b7597b4e30be5ec54524c3c967e1fdeafd9c8879f4041ce4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "40bd62a6b99365f099e5b186f092bbbd8c5e55a31e4ed2e8ddf1dd5b1e9b8a66", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "d66f0320a47ed6d7897327ef47b7cd939cad926460152adc9b259b1ab55cedbe", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "aff7ae9f5c2cfa2dfee901750ab65702a2331847ace823fdacf72af1600433fd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "d28f539b36d1b456163d3c79a07fe37975cd7bae2834965c2369530ff54564bf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "3b75440b272cca6528eb685ceb05b37613317928e2142a90252d2046f2540e53", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "3266332c6ca04b81e698a030f9b1ac2a376df844598b80b69894d660d9d1fb16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "69f2023e71d3e324955590bd481e0714e53bddfd86b8591c8929b55744c848ec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "b4b600810c3aca55bc3c47d1cd57fa8d4f9f7b35e939cebbc93c370fcf5d0228", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "13800c1fa43d61a6d29caebfe0fc95335bf6b5c3caa48045571b406d1f90b42f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "24ace7b4d1ca82706089b28e454a7ce01a983878507963bc4d880c2f716182a0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "a0cd91bcfdad0cfbec305c4765849665c2e720a545e29a8bdfb34a7576885d78", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5f735c1cd78e7a9ce7755250c6ca2c8d93f250ca3d13ae74ba84c1b15d3c1245", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6f0ee7bcda89c69fa4f401c440fbcfee8c62d8c069c852814166c81a23e2ba84", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "d52b7b096dbfe8ca45f5daf597ca900c16dc34485ccfc67272d13a705964265d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ea326dd2e7633c682dbdd6ccce1aa10a4b9ce5f7a910d0934682767cdea13f1e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "c038c6f251945cba9b55520d70ea99f946d36816dbe5880a3d61ff968559b786", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "bd4f6c1d673592f0903123635bac45052d9c0179c0df5cc8f1cc97024b84a8f8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "b1829e724eaa419e08892ea6963e67a578c148c545733504b9002d315e750a66", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "2cda9a84f66a1aea0ffadfde42a1fc68cb7aa0fd3344364f60ae15cd08f1bd9f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "12795b79cbf908ce6342d8411823a871ef6cddd5e0d26eea0d990d444a87a9a4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "806f6a77a535ca869bffe00554706ced83c57203cd961db4a158991bebae99c9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "5dac26057bae8f951b7f117d0f499dcea5dedd461ba8ed421bbeb30d365ae955", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2efd0ef50f904e3e4905ad7c613bd6b047dd986ae16d72dd513d4d582469778c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9d52f56c62ee82230c2c37187919aaa49ea58a83ca5117f0995d47215a2013d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "917fdd4a543d678d44d89c052c9ee47743a1d78fd414be73d77ae8f88aa0cd95", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2eaa6a2592860c8ff9c1e09cf92c9318ea8a8fedbeb0ddbd1cf8a81faf78f848", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "bd7fe399dbd623ce3e3853853f8ce4b46b92ff4bb098f68a1c27d3717563b1a9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "14f69f84cc0f169dca4a722f83857b6e14431638b023a19b4897a16e1d0760a7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6073fbbf8e34ba8fa7553337758b16c6a921e01d1a96ff9c055cbd29d189f75d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "440e15a55f918845df0c7b41db88e931c37230a917ff50f467781ba880bcbf26", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "1de23151f4724ccda58e0434e011817d7c3e981a9de6e7e57654012a6a43a499", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ee62025f36fc9d59367673b911d8aaa1234efbaa9edb86cadfa548d92f97673b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "18d3daaf28e1339282ba3a41d116e1971f106fba9a9ee857b677b60d90182b7c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "dda94a4c86941965a6ca30c3190deaec19a2a322802329471488ba5c83373626", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6ee08fcfc4b6c10ebee9c884229204b75536f04168fe73e697de40bc51a6ab25", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "14d5cd9ef24566c02f9f4e90148c3147f24b6b3b4f331629ecf1de7e0f145152", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "980ecf31571050905b90727e3534f4b7526423a180b4ed05ea16882461a1d37e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "c8142e1c2730adbe64e256b8c3283bf090b9eaabbebff55f62fc4cb98825157a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "c8142e1c2730adbe64e256b8c3283bf090b9eaabbebff55f62fc4cb98825157a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0528159bc0ecf7b90d86323208b4fa255e1791dfd5455796dae39e54f4f0baff", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "17a19b07d05cafc0dfadf30d3b6f8fef1978ebc5a5cb1d8e1d621629648159bb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "17a19b07d05cafc0dfadf30d3b6f8fef1978ebc5a5cb1d8e1d621629648159bb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "50908c0cbb20c5fe1dac3445b3d6269a892c70edad5322771a3a0795fbb73af5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "0bbb6966780c9838cf6687e9fec216ac7693fa6d0f65556b1816abcc959b3444", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "963600700405ecf70dcc4f459517f305d3f102a9613d38452c9d20a607d3cd40", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "99fc2359dd494b5f79ec470f31460a155440750e7d15851226d1b7ae773a68e9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f1708ae380bef3d8dab1ad908de67ec8511a66bb2e7be28695df19a833380115", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "80fa8d0c04c2b91f125e0914ae9de249e7cf93eaaf21a61d3adc3ff7e573a61b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "e4d213dcba06876ab1275cbc03a21b26c078ca5633693e7a6c68eaf76709a1a3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9ffe814926c47913b68ebb581f81feb83ef5cccc6d8540d8609ae2862d753ad5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "35a417e44d178895bbdf157045d64ad2b90bc4080697ff097fd795e033b92459", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "00259cb1e49e498773bd0be39214723d5803b8eff71f2946939f3091e8f8879f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "e0e42dba14f8e53ff579bc272228560d0a136df90b92d9305cd519f45deb17d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f5eebeb3262f70323de3b42b693fd53b9073f8ffe362a6bb8bac69d81e2b932a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "b60c6cb661369405cdc80cd3aebf21e581e46e98ae3472010a953e827f45770c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "b60c6cb661369405cdc80cd3aebf21e581e46e98ae3472010a953e827f45770c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "8153167aa5feb6fe4050e9daa9bb9645512eadaeb6bdf2ac29d6465d6fd48082", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "d509ce261091e10f99e5c3f6eea354eec494ea4d2a75548c583c8ab90772e70f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "4707194f7f37a4ebdd9c45eb55b1fc8ee7e2724b6384c7a941d6ed8c51271ff4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "0e0b9106d972662a1fe3df37a2364c950f1d2ffc0d2667bf3a46bed9a910e1e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "e3c562442e872b7e84988343fe126934fb63a6a1d6c435ea70bcb5cf6f80d79f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "ab9d79c5cc1d5fea7571eec6c8c5903f19e00676436591cd5f6e6797a6c8b451", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f94b47d5cfe1ce25945f52d0db820f03b8be2fa9568c897b0f46db5725aeecc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f94b47d5cfe1ce25945f52d0db820f03b8be2fa9568c897b0f46db5725aeecc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f94b47d5cfe1ce25945f52d0db820f03b8be2fa9568c897b0f46db5725aeecc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f94b47d5cfe1ce25945f52d0db820f03b8be2fa9568c897b0f46db5725aeecc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "0e0b9106d972662a1fe3df37a2364c950f1d2ffc0d2667bf3a46bed9a910e1e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "2a5a9eff24aee3074d126824ad53ab30e75db742e84220cf57837e6f0a31a718", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "1119308fb302b495be3ece798327c0fabb6fb73a8424c0b4aecd6b59784cadd2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "971d8d7dd9a864c07ad83e483f07446c9af3e0270d26e4558a45a5cc0d490ad7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "dd5c98504320d4e9cd398fdaa238e71d9fb98519a4653e3168cdc076784f37d6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "70d21cbe6e68a957d0208372b96516acdfc2c02c9e934a531ac8d3826f44742e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "bc66fd674fc163c1ff262dd940a79dcb8955ebebf54489adb2ba7705738a8145", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "29215cd5dcb38777bf32f4a45ba07d1f136ccaf7aa491c4b557b38d41303b146", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "3cddc57b5bf6e7ba409e41a0268e747d2903ec45e30a4ec868019085b5f7c39c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "215eea4001e46a4bc514960435a54ffa6079eae162fc7f40e8d7c61ef0166b62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "8c06c4efc1339fdcabc45772824ef1466cb57a1307efe4e8ecb99d3be2f5a003", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "c3ab96ea2ba693829e18032651af9ff69714f363b276b2d50079a8050e9e6dd8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "b60c6cb661369405cdc80cd3aebf21e581e46e98ae3472010a953e827f45770c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2d34a0875cd9929a65ed2f5dc281cb507d394182736adcffd3657c9401a42c27", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a381940eef538d4b4b5cee5196ece6a1bd6593a52b80afb3bc20288c948e6f07", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "24ffab0b7d4a309bc71688117ac8733b9da11969d113e5f0d37f06b70917fbf3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0e2bea6eaac3f3d3a6bb690ca598715b4f837078465d674f4ff8d400b01138fe", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "eadf28b436dc41e1b43eeab10d69aa65277ea0533d9241a14384915e06bbff1a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", +"T3T1_es_ethereum-test_definitions.py::test_builtin": "b77a5859a8e67f66f11e66fbbab7c2ddf8ab453c40a5f389bcbfc2bd9cd8ddc0", +"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "f4c423efc7021095558b847739838961ebca2aaf59012296b46b48cde036efea", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "1ddc9152c09841d674b53c8eb4e855036c26f21fb3078f6063b9e719c4290638", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "ddef39638c64e5e5d6e14bc1d06e036866818c8513725c1af9582120a73692c5", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "107c842e292175ce3555100d33873e13e465fc4bf970b42ca97a72d16f1ab757", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "5f1583374ba6544a61185ee35a4cfb71ce42745c646b9dd924b3fb661288d52d", +"T3T1_es_ethereum-test_definitions.py::test_external_token": "b1584131bbdd723915a4436601f7e8a124c88adb520316026c386f19d227c11b", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "2bb30fd79a67c232b3043c64d81075bf4d848a42f8a5f455b83e231bcdcaedbd", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "7fb25a7ea743be0560bf2b0fc7042847b9cdfb1cabd5eefff444308c1886f372", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3485fe852a19aeb38d8bb2e8af39379b72491e98db2114c31c382fd274095b49", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "44695e1bfabf9b78b44ee2d47ae95b298f2e67d6a1444e227c86e10f1d4428df", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "75f4b2cee1d2bbcbb7092c61e14eef33af4560346795fb0a7c60fdddc8946b73", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "7360986ad5632618fcab316bf1a2cb90def0e7c9492f8fe4c58bb7abce06b0ce", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d93c3aa811418a4f177b253cd6ad9920c01075bec5d397b50fc38bc006c2aa60", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "8410eae24d6d8b972df8b7f564ff1b6f05d4c19e0b1d44c45dc9029cb9b88337", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "7390e110ba1b30a2b3ab8283eb8d344e2055c650346e702be2d8da7de345aa73", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "0c8d14018fa6b34f54eab63bf394a4548d3a1263290098b5ec83186d4af58ed8", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "14121a696d22c07e5ac41d4ce291430c3a5fa5e2624908e454a12ba0f03dd79e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "d374d7f1289df88e7ef357955bd6ec1e63e064085484f31975f750016793b49d", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "85e2ab49583a7d8a7ce623cabda2a6deb08c915b015c15fc452d23b5f602ff5d", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6fd94e07949e8f845123a16281502778f8674cb8310582e4cfa35d04de1a4194", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "3edecffa0fedbe6bd3e0e9bb206898dc7d038368da5ba384fd7a4ceee2d3d64e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "00f92c4556785118de93215b0cf2987f9d7d54fc7a1148c1705b75809acf17bc", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "be838233937880a5cebe0bd0fdd8b7baedd6ea21ab77cd8c578ebd8c10a105e3", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "9a0f417621f800144630978bd298c7fa51ca6cf25aeb499b6a2335a573b5153a", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6ada8e715e88439b1b4fc878b44e820489ffcc49b3780c17ed445429d63e46ce", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "45fb02bf693eea8029a032204afcb17abcc99bf3e112029285084715e1e7114a", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "162715783134125b92e562c70a01666cd24b7f907d10d81f2505c6535e85528f", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "87cb1b2e8140cbd38b781f6ae0da12e51455ff7ffa01cfdf33ba121655d5bc18", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "5facee746185960b3999fc73ac096257a0752853c5a03f149c54fd4ddc906000", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "45fb02bf693eea8029a032204afcb17abcc99bf3e112029285084715e1e7114a", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "45fb02bf693eea8029a032204afcb17abcc99bf3e112029285084715e1e7114a", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "45fb02bf693eea8029a032204afcb17abcc99bf3e112029285084715e1e7114a", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "e7be124797902938b2eb40e407833010063d66b1f74b24a0392818cdc985a6f7", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "9e900116a8da90db26a98731237a5c5f1de5df86896a9124964f4b8993646c26", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "7c35e611f5bf49716ebea36355e2a12094354b01e55e57eed8e8fff146d5feac", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "0b682454afdae303eb8b711f3bdb7bb87b37efdd52bc744e15f883b26a89a077", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "f2cc1c1e649d0405af4f5f9565e7b4a825181621116654d9b80847a129d596fe", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "11d694b108202f51ada97f3f6f64dd633d6c06a920dc269718ba9977ea3db803", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "c6ecbb5c18c4ff4b580c41d4d36ec56df8585100085f4baaba45e5577e07c38c", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "42ec17b229fd6224d20eadaeca27351407c076ef6937a3caddbccb086ddad25a", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "f117dd9545c76e57b4689c9fa81a23d3a4d3baa17e4c7f4b4a6ebd52b5429013", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "27db586b62f8aa46d51dd071028b3ad4948ccf519d4ae2b1caf644bb463ebdf7", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "4cfa8a500e2a99bfd6a20a1e89100ae2ab7d9c1283d9f52f4404d05be2a00d48", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "95c644ba407bc223543380662c8cd4d47758e527926dec935304dad486b947a9", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "08c701f0e8a840eb38253158c1a8eb872ab156d00a9b9d14b7141932adc2966e", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "e8bfc97eeacaa248e1abad625a8a554093e78bf371424443e16be4746b1f2830", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "26870aabca64d3e8f6d24d8be0ff8014eb7456fff9144e027fef590f8dbd2bda", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "323eac66c52a502f1bbcd8a7640b498d6a29c5b19e5d12009f6cfeaaebacd530", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "90a3f6154ce172f7a62802ccadd4eac37441a43ae7c889f9bc5c14e057c2158a", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "5e1eb768c3afa1a5c59e6561b371b3658a5b27ec36eefb19a8ab2422dea42bf7", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "4cfa8a500e2a99bfd6a20a1e89100ae2ab7d9c1283d9f52f4404d05be2a00d48", +"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "a2258887501a2ad86cc10f72bfd99b6647fbf1a973decf856a522f3c7bd2c240", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "54f82358cb036036fe79b6cc08bde2c68d23caaa77482e2ad4c787018035dd26", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "eb07514112ff93688e29c4b3e937fab60059c9c7ccc3d13364784dd1f250f278", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "a9f9c735aad8bf8d9cbec2f23667ca96fad19f1944c8cc8b64ef87f21537ff7f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "eb07514112ff93688e29c4b3e937fab60059c9c7ccc3d13364784dd1f250f278", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f8222495eee1f07d9c316e7b5f366c61ced9d45fbc58670b96b11dc673749b85", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f8222495eee1f07d9c316e7b5f366c61ced9d45fbc58670b96b11dc673749b85", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "2593c3e20fcb086636e03f9866b46b1573231369bf6195b577901915d06d1812", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "5b7ea9c279bee950e22c33c5938bce42edb144de9bd91eeae53b3e0b7752ed7b", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "56e9331072066e12bc55bb38857e162360045f7ae8a364dddb569c1dca42a002", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a086e7322655a41f7d96612b877b2b2ae760883721c3a58e4cadbd6a9d9d16fc", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "18f1bc65fcb70a28e3765dc3536b0268b117aef5fbc50b9ede137a66be0fb11b", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "83a8ee39a4a360e5f3d4b9e85a2991add19f0b470f1464b05a8cee8f4e766633", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "f1dd66518845d2605bde964f4407e2cae72a4f800fce48821e2687f6685dfa60", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "4da6c55a686a34fe13e2701a82d856772e6427120c1a590861653b09bf70cc15", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "1dab92c4b7ac45fd0e0979b7ecb8975b80538b52f19eb2833d711f8955175783", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "5878dea782b61dce878ba223d86d399c17e7aa9009c791be0f478bb37723621c", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1dab92c4b7ac45fd0e0979b7ecb8975b80538b52f19eb2833d711f8955175783", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "5efab0863bd303ad8c60ed099623b384d882bec3f9e741aa331307a93577416b", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "5efab0863bd303ad8c60ed099623b384d882bec3f9e741aa331307a93577416b", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "5e13438d4313159fbefb11e3d0ea5c70d569def19f47bb468882b78835d32fd6", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "e3d32bcf4dd635fab119d0434e397c89d27b853d529d5a639d1712ef77d7f058", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4bfa60faa05215d0aa8f764b8a57637d452613ca2d65ff95b0c8a5d04059b7dc", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a086e7322655a41f7d96612b877b2b2ae760883721c3a58e4cadbd6a9d9d16fc", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "0dd0f22913703c0cb01d0d63c5c69c6338371ce6c29b9d3ed2955e1ce44a413e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "d665f8323991d2e1d612165a30e2715125fecda51675947489666dacf7af2442", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "571f9141f71d02da79bce32fd314be8025259772d098cafc2b2102db2de9ceb4", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "e9d9e96d949de276234acb3fbee765546d6d2c73bcd10f4b6a4d1a4f52a605dc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "614eb140b5a68d1f2dff92cb91d1a3f27c940a1af50129af42471a50c349c27e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "390da062775ba332e867e8f2b001dc0e495da99797c04ea8e217fcb6c43b9d13", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "18f1bc65fcb70a28e3765dc3536b0268b117aef5fbc50b9ede137a66be0fb11b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2593c3e20fcb086636e03f9866b46b1573231369bf6195b577901915d06d1812", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "153f54f2a6a8671f735ddc0f1b422c0e537769fa4216e0fe739230ebc6f5f945", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "56e9331072066e12bc55bb38857e162360045f7ae8a364dddb569c1dca42a002", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e095773ed4d2d8582f22e833f11816d302e58705fff5f2870ddf8d570c7f3cdc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "53ad83838c9a44845853f65dd4cc5534a23b89d639b250a9749ea828272ae9d2", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "18f1bc65fcb70a28e3765dc3536b0268b117aef5fbc50b9ede137a66be0fb11b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "0dd0f22913703c0cb01d0d63c5c69c6338371ce6c29b9d3ed2955e1ce44a413e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "5e13438d4313159fbefb11e3d0ea5c70d569def19f47bb468882b78835d32fd6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "4104af188354604797eab6d1c62cff3c2fa3d49b56b6f321718dfe01b1c269a9", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4bfa60faa05215d0aa8f764b8a57637d452613ca2d65ff95b0c8a5d04059b7dc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "62fceff799b2519950696b1f57a6ac2277cfd5fca792b753f996bd54eeb30137", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "419704f35c249eb217c83e86ae9361cd91e1f21076643a9ca80c36732a8ab15b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "0dd0f22913703c0cb01d0d63c5c69c6338371ce6c29b9d3ed2955e1ce44a413e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "f573647dbd9c628a273a94d0a05a2720484580ff37dc0173cbb1b67daaf06811", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "f573647dbd9c628a273a94d0a05a2720484580ff37dc0173cbb1b67daaf06811", +"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "d77b4d6a23f631744c46527f8946107944521b0c5420e875cf287290300271a2", +"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8508bb270d93d4acec08d2d1d41e86cd4a4e5298e0ef3e3874f4445f1d29f244", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "6800ae0b806730814e79ea5e5be0676d2025ad16749074060cae48c34a2a2b4a", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "6800ae0b806730814e79ea5e5be0676d2025ad16749074060cae48c34a2a2b4a", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "9e1c7e7fbecaae918f982cfdfa6e475eeb5abd4f74ae9fe8449c93b528620c2c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "9e1c7e7fbecaae918f982cfdfa6e475eeb5abd4f74ae9fe8449c93b528620c2c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "c2d47a1c0dd78b812db380150dc48fa47255f435431effb0ba49f66654795be0", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "c2d47a1c0dd78b812db380150dc48fa47255f435431effb0ba49f66654795be0", +"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "62862b7c29ebfdd06b8ee54d72aac7bd206293422e04160fe7a81fb65a5f1350", +"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "62862b7c29ebfdd06b8ee54d72aac7bd206293422e04160fe7a81fb65a5f1350", +"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "0e21a4345e58a668a6bec57d762657a0f12b74aa936fee316ae58ca90652f394", +"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "fb01b932400fbedd6cd538b2230819bd0444364f568d9b06bcc536e6cbad1deb", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "6ad9e4f5c25a71ee5af69891b88c1ca32632c9b368aa626a1f99bdbc61d0e865", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "e77d0bae84ba109d2535b0538efa9b4c2fe7a1c704f777c9d9e9b17e1a545014", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "c7e7611306e8aba7457f4e3fe0bb2caaf8edc621f984efe1cc994a0c82ab3c2d", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a5343f0aecf6afc8f36ddfccbe8a7d10d61819a54220c6b42f2aca8f89ee7b91", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "207035f22b72a1096ff924674bb1b189c02598a790223bcfd95be9166a189bf3", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "4b6aa6d8a853da35d44abdc6c2f6960af6159c85b4f10ea5b99e2021aed8d697", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "7d7b7b3239ac73536bbb2acc4e5e1e3beabfc6c760a1f4caacee09d842c750a3", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "4b5183da1f4ade554f3fdb6d1b8e2a02f9d63c32bf146258fb45950a482a769d", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "901d341c9d9070fc1cc3f75cdb7bcd6783d8136a0f44d7ffdfc4ae83fe818f06", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "4ebeafadfa4378e456a94b1cd525f61ed49d3b013d47e0c16423bfb569619732", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "a605dce0d28b37e4ef95f58df002fad41d038af4882dcc91ea1a9c8ebc8c2ac0", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "b3af46c4a19400e9e170e821f7db0894034d07ec342673eb41061ad1834439b0", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a261b4d8407042ba2b48c2610d6388a23252729ddf7557213aad9b8cfbf61be5", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2edd7262191bf6f11a8565d7cd886487db9faf42c3a5a64f177e66858f7c18d0", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "4850a449fffa0e8bcf5c5519b8b8dac8c665278d11f4561a75de0256fc4b5513", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", +"T3T1_es_misc-test_msg_signidentity.py::test_sign": "2073c3ccf810f240e585c4ca01a35707002a1fab73d06085cee02840ce72b0ab", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "1b60c87eddc76857efa8228c178adf98c660fc5ef8bc43cd03b737ce6da4e814", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c7598925991a937654c7e847adce760c88c64a2bc9fc348fe7f5540aa24a3df5", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "8eb1df618893e60e06250334e79eb458e8e0aef73996327acb0b7bd24cf305d0", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "099346d7691979042029c24f74f335c464bc10da84f37f31ce3424056b51cac2", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "86459625b303f037bbb606c90bff790935b97c7fcbb5372a7f07add6536f5291", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "59bbf98ecdd39e37a62c0d36de2f118a041535c5c9152724ce0aff79b8283c4e", +"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "e599167335e1405ff0692c9220c2058ba4c17baa88605a5005e36a8d9215df01", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "ac10ee24d7bad8cfe1a0b65a19c9ff6b3f58a20621ee76aba7e99dd6fb1261b4", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "1900ff5ff7e4f5090792100c0e4373f77c776ebe0756a136c716fcb8d5b637f6", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "945df57edd2a7072be8165431e3923bf3c35ba26d2fd75b4b091f1df6b88dbe1", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ba6c7aed332f283db48a36876fe4069379fa5fdf33ed55c35b20646cc5c0547b", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8a9c887771745a369e1710c7216f473a2ea28f389423013a83ce8f0715d2427c", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c33b69ae0ae5ffc4d99527d937dd4de0e6ea8e862268cbf9a3ea0773fb29ba2c", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "6da5c4f4e79671d91e1e8128ac7508d62e0ae4b6713d2a92628401c617445435", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "0c6574882ae6f4b87734af99193ecb7a34e59d2178f387aa7f44b7988a4bfa7f", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5ef8f1302e0f1e46b3d9a4273e4054ea2e9dd0a86b2eda548aa006b873090af5", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b0b116f9213c36944091279795be58adc11807bc76e47a53755855188397ca11", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fed1406710a00674d932d94a41c32df81caf98897c63322b81e0d23b2aca3c93", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "9d0a917c0df498e76acde847a548bc7b44f064ee2e245f8f97e0c7cedff5d9f5", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c6976b8333c98e897493160ad2981f01cd3515382962e48634d4edd560a74728", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "de6c79c6885806f5cd6f4852e681f23d59ec206a72f1e3190574d4b38641f3d4", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "bf56077b3a88a8dc9a00b3203660961f0079de5fb4ad6888791d151655f46279", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c33b69ae0ae5ffc4d99527d937dd4de0e6ea8e862268cbf9a3ea0773fb29ba2c", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "ced766790737c00ea0a5c687598057bf4fe1f1b0dc4a3980966373eca8c5ba63", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "831023aed8c56fa9e0cefe40bc72be7cbb93485b6a363959db8d59b301561775", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "19618c389511c478384edde6b2b34963fca0c3006990955f97a7463e7e0b877d", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "33feb6c6ac090a8503e5567b0ac07116dbcfdafabf106f8e6601ce8c51cbff5e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ebce4c45bc3763fa02829da9f93db48dd663c8e81e70ca3731474739cec5f4f9", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "5a2e8151916788cdbff518845e73cfdef08ef3e45f42db6f81e96e96fb97a165", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b07d7801522d968ed8ce08a9b8cf5890740f177428a644991347675feb3a83ab", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "5256b4b031ba1da754c3b737f782206fc36ddca0516f8625cb3f6556bc7aa7cc", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f2ecd3901261e1ba7ac7d882ea2b5723dd1df31abff4243a1267835bff5a2875", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "50511eced58cb15ce50498ad74691bfb72be2a4f713b91621277d00b17827c17", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1b1a5debbb476ce5e49c83c8bccb2130b8f0eb60b1092488d60ba30cca214581", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d9496bd93e9a638a86893c1e498d7ec0c0233e4633c3b7e90929f7a37f3014c7", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "039995df38efd8cf0ecf8fdf3a9c7a75cf9f2218bdef54afc6787c4ae3f474bd", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "cf5dd4380f6b2d8d767c89700c212eb602c9b92f94f762d2f096b8d4e76bab36", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "17dab74b02abea67d33d520354d2d77710e9c466a1265b4953d5fe1d30eff28a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "56490fd03815191cf02284c6124e569afd386b1307a9faa6a98be5c4dfec980a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "05ebbd6d38229ccd3f5fa02d300bf143ac451c3097e1bc0eb07ce68f0b11410d", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "ec77b65fe4fc1bff2e4bf0c3de864b2b3af5d34cf1839808c8a406290b145f7e", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "364dfcfb97ad042376d99de8af5bbbee603600fb4b08ca68b8266df272350a01", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a13a52379214fc1cf3da0364ae461393e1b243ece2bbbfe3271ddedaee3ae41c", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5022a385dcf18dbc1c345f44b302f0d4ee4a8b354eedd3e5231cd745f36b37cf", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b82e6cb28de70e18487dda4375e6ea4e0ced5058bed06cc4727b2dfef26d00f7", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e0cb1016c5ea06df770e938daf6818bd4c357279d5990ac54e235be1c5ca4872", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e81abd2eac0c68185b4b4daef99739c68e1e819c42ec8a4e4f841713b3f5a9ca", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "476969fb63fb87d43b5cf456e748f2fff3318bc76eff622bb8bcbcf61d32c2c8", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f0d96b47cc18f3a2e3436910d9da5960d4f949cf7d582a392f2aafde1492b43f", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9bf45a072aa401ca40163f2579ef38fb4b20835e0a418bf0b0154eb7f6fedfba", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1a651799e3fc0c782dde20aeeabb841cdd762de3cd6c2417d7b6f42eea4caa19", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c639016d26fa3b41588d040b9bc96ebc7f847067e557305d7df7d0657a72b217", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "30e7a3178ca1b3ec6eea321656f8223e3da5fdd563029f8951132f3c28cb76bf", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "3424b63d35b91e9c0876c2a1757e6f76985798e30927e15b0cf0c47487cad24d", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "e20f906199a9bb30f8f76a8264645a821ab2b1e1427a58f8c6694d500941d55e", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b91a3649be820c496c58ceec306e8f18003d97d031310540cc634516cd7df844", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "d1ee56a1a5e2156512bd5714d47fc6a6d135b341061c54321cc3d7e123b06db8", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "f43430da41434261a7d271938665af65bdd1fc484830f32c755efa43d41e3431", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "81d80dcdcff0fd0c0f38d010dcd4dd7e5e300600f0dedbad54c2aedd36ea8f29", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "0e9ad0eaccd748675f499af8ead2fcc883f7d9f4190d7b60f0dbfe644f12967d", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e71dc780cb94d49ae7d4f874184e8b39c9aad43239305ddf879b1a8e63bc37cc", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a0a1849cb73fb7459e3a6ba2ad37d5054c8b35497d0b8350fda0826e51f09f56", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "7ffd14ef9fc28ee62ff35a0948b0911633f497cabcc603c86296a4e2bd1d5332", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "ff9a482205bdb214866cb47ee32f7cb787b187d803a488efcbbad4615bcee7c6", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a0a1849cb73fb7459e3a6ba2ad37d5054c8b35497d0b8350fda0826e51f09f56", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "7ffd14ef9fc28ee62ff35a0948b0911633f497cabcc603c86296a4e2bd1d5332", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "ff9a482205bdb214866cb47ee32f7cb787b187d803a488efcbbad4615bcee7c6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "43609c4f1e608f3231d5168eb1b777db9b825df3b5639040469b6bdad7ccd2e3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "f600d8990145242d59ddcad1a4ae76849ab673a2bd84dbb8272958500aeb88ba", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "f5d7d4a09d289ed71744f04885826cd8e27f7fd2f15b6c74070e60965cfc4f14", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "64d3dfe493434cfd252470aab108759d66636dc926ad6424aeb595586fb67414", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "2113c5ac560720d33fa78fa02c680871c5b53cf042ccc35acd0c70dffb90e299", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "470001ccb2f69fc8351d0e3c77d65fef36715b858d0588bcd71bbcdd915edf5d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5660c956cd96bb4fba14c85e1a7c8c5c9f893e5305e63fdb9f9d70ac281998b3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "49a0483ddd566940ded331e2b30b25409133ff302db02ce17e857e395a46fd68", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a9effd21e196c27aca36caec9b365c705cc934890807dd668b120340aa34b713", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f1885601ed7496302255324f8bead3fb905a0ceca3276ad6076dfa81e464f743", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "71d41f7899365ecdfbde43745c921d16eccf816d79f2fa5783b30bf47f470697", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "bbb8cd5e7b6fdf3a5216514608278cf594fadba0eaec761c3b0d41624a4582a8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "3f1a32c9be0a6492fa07307f36854a10e494ba7ebd0fa617610b708667b6ccf3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "db53cbeb4fc9e3f43237294dfe640bbb8ad95d816ecf0544fe7e7c2aed1f82ee", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "9477f465873ef22b1403a63b813eefcba017c1b716c7b895e42f370da05f80dd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "0044e5f901e6c770fdbf9da729607d36c04f77968f83e3fc38934529dd57eb1c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "78a72a3ae414b2b3f61c9bd4347d45b0f758784397da85d99d3aa1747210f92b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "c1417be49370face35627b0783ccbf29807732194906ab602d1268e25a279fad", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "f49878793670d086866aa6b33e0b6e72ee1ba972c0a180f24e043978b4675ebe", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f93eab5b3bc08b901784f374c33ff36eb29cad037693b450a658c35086a81d75", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0de4951def3b7656961c534639cf76945095df84699fa3eb2f144d024c75f628", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0de4951def3b7656961c534639cf76945095df84699fa3eb2f144d024c75f628", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "c527eda09beb17b68eea5268246de896ce6064841226b70a41a24a39ebcb4127", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "fd40037990084f52626b7675dd59219d3d05e5b943e6296354dd691156f8bf11", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "46625d7672a34c12e63758681425b318ff34d70ba28dcbc8768ad8082a6f64ed", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "34ca3e2fea1ca9e44314c14a3ca4b4ae33d281e8b68d68cad1210d9eaf375956", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "c1444e548aa06fcea881740455e8eecc0902dad0e504ef17f48075c2d27f018a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "d44730eaf157f094ac46e96935d95bef40ae3258e116df1a544438c82205deeb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "98ffb68425487482c020cae65e9f496ef63b4952fbf7473597b03db142b4a68b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "99b08f183d581c198acb1312ae12e7f9aaa7369325ac594281d9fa5e15c92cb9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "bfd1cee396e593744dc7bab174d449d1906d3fe02c2ae114b721a4e506a002bd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5989fa0d0b690b35afbf6dee7106d2a0194bb8c655816177c9e7245c29986102", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "1277ae08aa6229be8286dea0a82b9ccc01caf2c0cedec65314e021a32ccfad44", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "1fa59a00dd575b2ee7fa99472d184f5abe92ab2ad042a7778c8abedf0259ffbe", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "2ad7d5dcaaf2c09d488cd80b3b28a857d2024994a26fe82d60d0ec3f8be2839d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "240e5c72f823672ab4eb193402ebb28d31b17f52018632657f0168614e5931f3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "238df4b32b444261d746f10ef7a10c2ab26e6767be3d0efbc4d1570a094d19f4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "714736789fc43ea71902269e2d2d6a57850ddb68b9ea108792686421b001bd16", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "6420859105113b454a604b301da4c541aae864376139ce5079673fe7e93046b3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3c3243b5caca55f37aa3f93823d3bd7b6692dca591c48f23dd5707f153430ccd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "66d1314820c4f6480698c702f026a530998be51c464ef8876d2b569f65cd7f20", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "75d37004b241f554e73422c0c066595e2da161991342d5eb7ce1c57231ed59c1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ecfcd990a5123e0a667d2e5ae182c134761f00b960e95bb33572341aa6f3d998", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "f2f0edbbeb1e3884989a618d72c3847828519df572f7f97d1273caf4d3930ad4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "2063579d4c352f132f7701a85bbe5bf7585bb01e34ef57b8f69c0d61a0f2c0f5", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "a88f5ae457ba2e9848c63e237eb8b5d2e414e8c1866d71d4b694301211c55ef8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2b95506268eca7beae5054b2159fa907864ea8bb612412cc19f9d27b46324e2d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "aab0498647036bf07e9af1beee405280e581fda09b7f27b08f1888a5a8db827b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "596b2e3378ea4b3c2a604c1ea86830fc625c501780d31c3199439e46730d2c79", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "01e9885a563eaf4475fe070906168970ff3da20df97efcb75df2730bc33e953b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "f1f209fe673b6fffc016b4c6d05ed388b7cf7eb1a112481a4b9cd0297921b1cb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3e0bb8fa968f8df54fe52e2d41f41d9b33a3a323deb69e5e0e1872f9300661df", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "9a808d62b9a6d24f8a1f05a9cba6599bf798219b7af58c7e64b8f708236df28e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "acb929b5a14e8a32990c8560f711d723ca1906fb9e00ef7d7dedd45d495aa073", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7bf39f70762b3ed1c2fd2f5364527f3ed9f67346e7d5561a8dab1c8a28ae4089", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "7ab54b9e86d258e114ed3037701c33c34cb74b238d989860092df42038da35f7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dd6d8c256f93219f961eff4e583842ade2657078b010bb2a8cdf2cc8236a3791", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "62e32d5eac50e0af1a3c831df96b92a4a3aedc9d0ade2c3c4bf097532a4ebb30", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "813f344bd228f0228b2dd0a76b724d3336208ebfe1a0fda0a250ba9ef5f64642", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "46625d7672a34c12e63758681425b318ff34d70ba28dcbc8768ad8082a6f64ed", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "820afe618f6df0f1fb3d14b278dc84ae6ae147118dfb26fa20432782e21ba81d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "3d18295c57c9d4ab17e405ae19b5faa5f97b84e04e461a8de990e93ebf89c656", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "7a5cd20beefd4f706e7067a523ff0f5f9421101d7aaec1ea392a0cf01816a296", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "b08d3954ba373150de06b681a033eadfc1336099b9586f190b964774777579ce", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "9ead4d26f801769921c1db28daf363ecbc687d1423de71083720ece29fbb527b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fd8ccb07a64903d523c59b45bad1081852b5e01163a6802d5b6e8f16fd185e65", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "309ccc7746b6acfa6ba640b9e0cc79e4734677b2f16930de4892ac378eddc890", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c2d3b433ca6915fc45dc8245ddf87fa6bc7f51323560a7404bdf32cbe2ead4fc", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "4a417c55f6bf4008abc2d46bb2a64ff22073386c0db5b68d1e19ed40a9cb1bde", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "a9271a63a88b3f32a22a2b766ea0ef7e3ee961950f2e9d074d099aebb85b2cd1", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "1141dafb03ce376f0d2d796d74a77ca0018a8b614067e50598e03306f4dfd367", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "4d75bf3451852f73389bac7b500e81c6a2ecce237aad93540d37f4ef5635fc04", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "0b084691d23c76f3a7aa471640aa7d1eadd071220b7953deac2181a484372520", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "642dbf654c3aebebf396ff8c4087f5495ccd6795c11f270399b00a81cc77b0f6", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "4a1809b93e7176d5760421020e0d76fa11edebe2acdd2c5321706767a419727b", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "0102defffb8d3a8381273d96dce7a32f5ef976c44ea2243b0f9c56a0d893bc37", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0e773b8c3240187dc38935d477705d663232a94131d4ab761d3f2c17868eb72c", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "075eb9bbcec8be37e3603a152979498b7bd9ab4854a4e5c13693861cd049163a", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d06bf8e1df3f2976dc4acb2b48ca7b91a0521bdb36576c93d0722a0b8ae69e01", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "cf1b57b68d27b4d34e0db4142f6b48bd5676d6fd181ec2442bf9129b31189f0d", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3f0ead7abf6511a0f8ed83c2b57c81c758676e727826eb349400b7bbf15d0882", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1f038480549d2f736162749767753ce9e47152d1be20dc0cdafabb0e7ce991e7", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "6dbaf840fc93a457c18d4c8d1952e2830327e4bdc17d35937ac4ba7a74056ad2", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ec50c7a0559dfbf079cd6f745a23458e996af0b0d118cc702167fc059f2fd1cd", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "c50518286bb23cd3b59b53d8b253fa88dbb9302d3420eb40147e79328479d3e4", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a45ec58d7d7722d8daa2bb17cbd1fab7db3aebc66b414939c46159d717b37ef4", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "762ce365355448cbe383d57b4e22647a76c889b52fa74bef70f5f6223b4dfbbe", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "4718e81937d5705c148578cd651d13e0f611ec83b989b9f9b751f10ee4098dd6", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "8cd99d59ade87d8dcac47a9c9185198e5ec0739e3a83c683c1b4ca835f15f7d9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ef93a930407628c387f222e0fc6da9bab9a16cf0fd0a7f7fb8ee7e1289a146a8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6a1127d360f5560eb19dd0c86f4e79f159b6446a5318a9969be51f1736f055b3", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3b3eaf83c60202d9c9a4a0181b8c52bdd59ec1a8460cbf34ace3c93007608316", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "cbf510ac67e9c548935dc343c00d760ff4670d0931ca53da0bfaa86a3f900163", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "9f50926d60ca19c2af79b8ee2c6957872d4eeb188125b49529e2b88e77c0a0de", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "1c4c4503186ef62ae4a6fe7fb7df19883c210d637bcfb9d5f0bd1255da5f5a99", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "4ba0cf2b27a71ac5161cc75337b02adf92277693697aac596f9bac1851779577", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "85195eb4bc06b816529fc518a8eacefbc7393cc08f7c2bcc7499547554634194", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "8c112c854dbae22a21c67a2ed804f384e82af83e2c79493ea594f7a4b6a97e01", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "f6df03b51d40b588cc59682f4bb9410e102378054850245bf3a6f86fdec87036", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "f2ec08f3fc63b54f0ed0e698083be175b4d2ce73b0f94b0c0698c64314470153", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "77a9a735816eba7392df78a65f52754c3181ce772d1919f93c276569fe4daf69", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "04493eafa3a28cc8b5508ede7e3c9956a03b2d5387cf1f40c478b5954b3e9e85", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "59e4c7d844b32c7754975510e1a10d206ba27659fd6ff555950cb3f21a4905f5", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "abd0063f1b47b6840c334c603b1c1d79094bc5dd769e71a482bc0bcfac2ee00c", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f5f0bdf51812fc61e2464cecbbc42f55e85f246b4a626106bdb2977037159bbd", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "a6d8edc6bf2ca2683323dcf8f91a092dbe3c760a9bff86eb4fbca9f8dc4220bd", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "b4507663fa775eb4f101e1a5c7da1532dccd0a76a545b6f6fc71ce7bea1254ef", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "84d9144689972986423fdea1e12af22ab1e63f6340115961164057dfe2fc2f21", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "8ae406c9125300d44f73b4abe998e4188a59586494bd171d86ef97ba9ad1ae3b", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "0a4381864ed1b3e77ecf5d912c130394d188e0d4d667a81798fb9140cb3dc40c", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "2b936649b2831385e102effd0d0b3e8dd6068724ca23def8919385f779e3fc6f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "20f9995d675f834f4245daf737a4aa71429d99f1077cfc1f502276ded084497b", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "7bf20a89d92a6608d0019245489a7eb591e7929f22e381b9faf61cd6f47b55b3", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "f30b4a18751a2a3f84c1b96f3beb4d70ed639b5b04d40f78a13e66c224f002db", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "fef127a2f06b4b7cabbc9bfb3d2f1095a2c4082f2df94ba3d803959d9608e6a8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "cf72b242316093fd635dd5c59dc43ca0ac864ada1fb51e3fd6ed04f98277c728", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b94391ac66b1e25d063a5d0b58f8380f731aeb9f3b568bca0c378ad1d51cdc9b", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "79dfd47dd18e08f0202bbc047f167f286dcfd783891a40204d262ffafbd69f44", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "a6d8edc6bf2ca2683323dcf8f91a092dbe3c760a9bff86eb4fbca9f8dc4220bd", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "246366ddf561dfd5e2d8cf4910c27d9124e92c4d25657f01f4011e039052de4a", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "42c771a3443c9317f0055ac2bc22071613de1057872ac562027c5f94d677e319", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b4e874e15ad13e214a9e07137012fbaee3628b50d2e23a17b2c86cbbfbb082c5", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "99239ddf271a4df43145829904f3f92fe84bec54d659478a20c97ffeec73fe17", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "e86e8b1fbfb1d1ef3f869988f4061c97483665deb2010559a93126dbdb1a7f6c", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b8ffca0ddd0734a493d89007838657d7a4ba47958edb7cdb683b38330f417e6d", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "62c150edb7f7a1b3fd71428225864247fccb0e27be648fe63fcbc206d51ac85e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7d6e0aab9f4792979c64e1980277ddf74c7659863eb30cae5b9ff0eaba8a33ef", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "209dd9609507affe76989fb26918c1ef78a340dd4727e50a1a85991f1ed6ff81", +"T3T1_es_test_autolock.py::test_autolock_default_value": "dfdedfdf365b7502cf7d36b2db1ec177316f7154fe8f7f577ff2a79090ce2fc3", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "2542bb42ae11c502143870888430f743cbafbaa83f43e81d8bc33837335de58b", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "2542bb42ae11c502143870888430f743cbafbaa83f43e81d8bc33837335de58b", +"T3T1_es_test_basic.py::test_capabilities": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_basic.py::test_device_id_different": "fbf2b71f3fddbbddff19d7148e2258e0518bb78fdd2d8a6fd07079e75c4eb964", +"T3T1_es_test_basic.py::test_device_id_same": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_basic.py::test_features": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_basic.py::test_ping": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_busy_state.py::test_busy_expiry": "98858080099cfc1998413f39a437b7adafea6be858f4996c5f091dde62a339cb", +"T3T1_es_test_busy_state.py::test_busy_state": "51175f3b0a41609177d76950cb461687670e901d4d1127e3e04b3bb1f151a008", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "1201273c03fbf71b08f3f12c612a823e684094d9eebe1376efbc0378952598ce", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "1201273c03fbf71b08f3f12c612a823e684094d9eebe1376efbc0378952598ce", +"T3T1_es_test_cancel.py::test_cancel_on_paginated": "5b0c508e05c6cba8f447f5ed8ff9b95d4631ea146017c9d3c6fec9df0cd5d1c0", +"T3T1_es_test_debuglink.py::test_softlock_instability": "665100d7d763c9ce88de2adc9095fa684677f3a969c1643afe7c8a0b44c8a69c", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "ed5f69d7d8769f26b4428b4e42d1a4d426fdd7eea8f4f54e4722c0ea78e90f3e", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_language.py::test_error_invalid_data_hash": "cbeae25b021974d661b704b6c87f50a9114b4388f04e2111de729aff875cd950", +"T3T1_es_test_language.py::test_error_invalid_data_length": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", +"T3T1_es_test_language.py::test_error_invalid_header_magic": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", +"T3T1_es_test_language.py::test_error_invalid_signature": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", +"T3T1_es_test_language.py::test_error_too_long": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", +"T3T1_es_test_language.py::test_error_version_mismatch": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", +"T3T1_es_test_language.py::test_full_language_change[cs]": "7f78134eeaf4d0ba1785fb0466469fbb5075b25b6d262a463c0f806ba78fa0fd", +"T3T1_es_test_language.py::test_full_language_change[de]": "e37208e6351f5bbc24888ca76f7f0da9777d18f15338407326633b570634be0f", +"T3T1_es_test_language.py::test_full_language_change[en]": "113c20e7e5c9fd750da2a877d1d9762b7481c5c5c2e3144e025fc4db0c8f9ce7", +"T3T1_es_test_language.py::test_full_language_change[es]": "eadd8df28d81d24ce32c5559459eb54891242aaec76cb1b92cebb2b20f5bc4a8", +"T3T1_es_test_language.py::test_full_language_change[fr]": "ef6dae18157a8e0519e5ca43edd5875fb7be2234d8aadfe69b10372c44e0fa88", +"T3T1_es_test_language.py::test_header_trailing_data": "3b74a7a6801573ff498eaa7a8913267668d6e0bf978981fb4103feff611f3e1c", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "3d79efaff46fc716886ce752171775064c432558c7fcce15852f56423b7342a0", +"T3T1_es_test_language.py::test_reject_update": "cab917ad6910c0d44b434bc529ab540ef29575638bc53ba247734bf3d2b8cdff", +"T3T1_es_test_language.py::test_silent_first_install[False-False]": "e56ff9617e61f1693c7dee3bf52ee9ab7b6e783587e98f916a683616a1dfed9f", +"T3T1_es_test_language.py::test_silent_first_install[None-False]": "e56ff9617e61f1693c7dee3bf52ee9ab7b6e783587e98f916a683616a1dfed9f", +"T3T1_es_test_language.py::test_silent_first_install[True-True]": "a48ca8d67645fba8046428b61eea5ba4fa7a19d179dc0304883484ffbc4b9ebd", +"T3T1_es_test_language.py::test_switch_from_english[None]": "596d1fc6ee3c22e2d8ecd662be7a9ec16abd3e2fffbb5a186b23a673819b32c2", +"T3T1_es_test_language.py::test_switch_from_english[True]": "596d1fc6ee3c22e2d8ecd662be7a9ec16abd3e2fffbb5a186b23a673819b32c2", +"T3T1_es_test_language.py::test_switch_from_english_not_silent": "9b01f2c68f14f1cb193cd0729247e63db7805f090401458f7cd7ec9112f13b38", +"T3T1_es_test_language.py::test_switch_language": "5750074703a02cfe85517108cfb43e7302085731e0b19be7c33119b6326e0d57", +"T3T1_es_test_language.py::test_translations_renders_on_screen": "4b424a7c31ba3e9c0ed98e906ddf8c337aeab4c4f016fcaf3697dcda72e5af8b", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "466fd9ea66bfb9198a6d30a37b5557ed72a7827de76a2404ed1b9b84cddc1983", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "76c0484d963bfdc97a969d7101090ced3674f751a33e48d79c2ce78a96172942", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "1aa3a5a00cdd48508987d1b1532d5c0d14bb8dfd4c1d7b484a8b5b04e6b2ce89", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0d82d20484cae589e0b9ea07cacf9d529fa84a5d717ab56ef8f1484d2f103c41", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "9bc51854f32af8ee0725b663b8f007b38804f61c3bee4682e3178d77fbae0fe6", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "8d760748478c36a852551bebda7cf42d50c68a4716303233f54fea9a0f6f746d", +"T3T1_es_test_msg_applysettings.py::test_label_too_long": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_msg_applysettings.py::test_safety_checks": "a0bfad9844e1a1f17db362f1bb73382d76d34885124a0505740864abf9e1a539", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "57fd65b28049aaa0b7cfe1690d8e9d386f44044bf43a89844fad3943a276bd81", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4a13b31098f8fcd9f658739e37843ad28fee657e58738bce86dd3ec91e381b37", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "2b96fd3fdbe982989b5ba4420f2de1e5e660ef15287331d827421a4bb784349b", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "c1061b8d8fb416a0d3c55a6d08429fc08942076c82f76f8c94d7ffc2a504090a", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "35701f48182534d66081ad3fd1e3ef04551dea997d6ae0aa0d4f0cb5ecdc81d5", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "9759330a148ab75ec394b6203a428893e28882436cbb26da94a85d0425a99784", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "8875d0e96dc594aa09aa853c3054b6c55f28a41960262ca5deb49a97e56006aa", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "020bdadf79023fae7967553cccb1b5ef1fda57cfdbb4163d6f6259cd260a94a0", +"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "7aaac7fd63325a135eaa8c978165abb4146abbe02947d68cc68fa94f67b57157", +"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "22caf34dddc51053ac1efed40d4cb50810cbcc6991d15caac339a3a5cb7774bd", +"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "3478c2c2b31169ccabbe9ac9ebad1715b8e077a0da99f3493a4981fc6ee54058", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "75c30a0202029c61b7c87d4e2e40e62996392944111f85defef7a9569f12fa05", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "15e0d67ab3da0b9779b886cffdd6071d7c7464c9185ec360cca84c62d2d93be8", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "3411600547f0f1d4d7ddcadfd8b3c290b997e8ff04eaf5d33c81484f602d32bf", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "1ad17f8a5cf5737bddf22596cf7b3f75304ae311524065dfb05d9d1b7fef9535", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "7dcc3a622aaf36de144de230592c42d6ef8c296a309ebee63e039b19296f70e6", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "e966e4025c161fa43a90d8eab62e8165c32d331fac9364729fc8691244b56ab7", +"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "38d5af93c753dba0e21f485027c59b5ba60a05c1490cdc88a13a094c91d5b920", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "4fabf880bdf04b33c95eb3bd858c0e61c4437a46b7e899e2603aba40475f45b2", +"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "62cae69d38feaf2d18876b7a79a61138918564384e667286decb0f6e855ea05d", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "d20d8a0a1164ca2b19850923c15ea6b87059302038388759ea874465c3025110", +"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "17a9879e53ad00cb26c6da534898a306d3f203603dcb22ff9a1f6351bc6f552f", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "48650897a08ff7fba67d4f66c6cf638f307f8d77a6c2a41168b870b52ef907be", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "17a9879e53ad00cb26c6da534898a306d3f203603dcb22ff9a1f6351bc6f552f", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "17a9879e53ad00cb26c6da534898a306d3f203603dcb22ff9a1f6351bc6f552f", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "8e8b935cf89c58f784d9d9d576a282927f563eaa8f0759968aff400fefa0ce8f", +"T3T1_es_test_msg_ping.py::test_ping": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "ef8dcf4ac94fc56f628f63a793aadf3c12e90a5b360380c4923d52757b97a04c", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "d89ae0e2e182b9d117bb4365d7852a733d2e63110fb8b0a213547fb92235f7bb", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "2ac537f263ab062b49cde9ab2a7c37982c0c8bf3c3f8aaf97bb939749027e8a8", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "93c89566aa6cbc4503b01febe5a67618a02d833e0fefc1404d6d2a3a5ddebfe9", +"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "fbf2b71f3fddbbddff19d7148e2258e0518bb78fdd2d8a6fd07079e75c4eb964", +"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "1dbd29751e65470775e49a667bbcbd10ceed8fef87a454ec184abc8ca5516288", +"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "1dbd29751e65470775e49a667bbcbd10ceed8fef87a454ec184abc8ca5516288", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1dcdc79da321065cae234457ae3db881250399ec8eea3e93634227f7f5317296", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1dcdc79da321065cae234457ae3db881250399ec8eea3e93634227f7f5317296", +"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1dcdc79da321065cae234457ae3db881250399ec8eea3e93634227f7f5317296", +"T3T1_es_test_pin.py::test_correct_pin": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "1bfd0833b1f5a18241404f93b5d26dac143007d8aea05b6b8ea37c50e62e63bf", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "8ae439ea2f72fc6d55ad59628c7920b7e9fab89365dc358507bda483c49310ea", +"T3T1_es_test_pin.py::test_no_protection": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_protection_levels.py::test_apply_settings": "1d067fb9d3a9b58cc49714946b8ee0ff73793dbe35fd0887e55ee3c5369f65c3", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "987300ff3e093ef296619407a3f5ef6deb116289da2e952119e6192066acf658", +"T3T1_es_test_protection_levels.py::test_get_address": "736688b4c3c3c0788788bd47c871d5ddd6b1161a8bfad8a811938711ebc463cd", +"T3T1_es_test_protection_levels.py::test_get_entropy": "c9b586ac7aad2e9557c5ed7ff52aaaa48b601e401964ac0e061d3c803171d23b", +"T3T1_es_test_protection_levels.py::test_get_public_key": "736688b4c3c3c0788788bd47c871d5ddd6b1161a8bfad8a811938711ebc463cd", +"T3T1_es_test_protection_levels.py::test_initialize": "420c99fa13487eb4337e5e33db885397fbe84fc18baba6f1f96eec95d7950272", +"T3T1_es_test_protection_levels.py::test_passphrase_cached": "097cf7a8da36a37eced8d29ffe05732ff41211b13d5e2c11905144f8a1f1a2b4", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "360f0ed1a89cdb0b9e932ac0d358d7c66c480b4f4e34148afcb6adc4ede5805f", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "b72394f7a154641b59caf29dbf1a4d81e53d264632367bdb696354ee067b1ed5", +"T3T1_es_test_protection_levels.py::test_ping": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", +"T3T1_es_test_protection_levels.py::test_sign_message": "7b34880a02445e1c68eb131bfda6788a4b8c67c83b64543865446e92ec78a75d", +"T3T1_es_test_protection_levels.py::test_signtx": "6a769f3886f2345d277c4433a1ecabdcae9801e022628010ed486b93f8e48461", +"T3T1_es_test_protection_levels.py::test_unlocked": "484e83723ba3c269b961e7b35dcb0f1a97bd8285b0e17d3edbb482e40eeefddf", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "c1772bc836aa5ca07d8091554e0eb426e3c62bf1daa8b89b5b8b20ee6f2174fa", +"T3T1_es_test_protection_levels.py::test_wipe_device": "ccfca8e885975a3cf24ce192195e5c986910086511242110a7bdd2637102ed71", +"T3T1_es_test_sdcard.py::test_sd_format": "2a26ca64b1dccc70d3e0dec46fe7330329740072b1e1cf4ee78491f670bfdf8c", +"T3T1_es_test_sdcard.py::test_sd_no_format": "18102467cd799788545f6d9bff146e6eca9ec06ad71c07c239b3af6738b9840f", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "d0feea36283e3e665d290564e531464195d0c9febc01228ff4c75d97224093d7", +"T3T1_es_test_session.py::test_cannot_resume_ended_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_session.py::test_clear_session": "82b26d4507a3d0b0092dfe696996da2a6244513e6749f1401bc9886ab6340e69", +"T3T1_es_test_session.py::test_derive_cardano_empty_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_session.py::test_derive_cardano_running_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_session.py::test_end_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_session.py::test_end_session_only_current": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_session.py::test_session_recycling": "1dcdc79da321065cae234457ae3db881250399ec8eea3e93634227f7f5317296", +"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "7606ea68b17003db2473440ef57dee17e25c4bf63ad7a7f788c5a0eb4624f9c4", +"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "f2972e061973427918e57365ae4862c5efaa83b3dfade9cb50a13560acc455bb", +"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6f88cc4832c80f66746f2ce5d119961292445e35aadbdd2e67d2ff031d5e7735", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "5cc7f0f648ffa70bc1c52a3c31dcd0f53313678598c8be5be7db672bd2a65a7b", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f1ad390003e637ff1a513ce939c47733c3f735ab3fb90e4c2cdcc0a3119b2a1b", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "300e54e19ed26e3e55a1089806b400bda8a7eaf7cd92e773cd8eb2e5e3532670", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "097cf7a8da36a37eced8d29ffe05732ff41211b13d5e2c11905144f8a1f1a2b4", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "c3682377e57fb1f7a5833b18029d14f9f93303d24481f83e2813c0934a8b5d1f", +"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "286adf4ab9f6ddbb0464c3d54de13e67736bd488c4e717cafcdd8b18cd2c286f", +"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "34476d6220bc505f28b5cbbd1f0ca26b33472d260d661273ec7165e1c354c529", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "145187c82caae497f253669eb3bc0b197a4152a9f1b5fdd3edb100c990a8441f", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4e15443732f4bee7118565619abedb1142c1230f9a42b0deef957790774a6fa2", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "0acb3ec1393bedf7a055b42cda4ddc431376c0f65cb3c4c0f3ab143fb07976f9", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "e55ca48c3ce732f17869e8dff361dfdd435063e216aa3efddd57ab62db446fd2", +"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "136bf19ac6c942edf5ae540091814fb616619f848033f10eba0e9098de8b74e5", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "ea890425688c9c726bf74420006e8fefa0bc7ea2fc13a06f14f32d981a09f0ed", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "6a3c928deac657c8ff5823a10f720b3c646c9131f9d7fd4368c2cb7a38dabfa4", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "1b5ce08725990e5858e917806a9a790cb358562944beaec7d9c592d9e1205f71", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "6ca8ae43e2b4984473bb82b60cb1501538470839ff4502f51331ae3eb2111c33", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "9119573c2d30f2b236ed78858308847b56a867d2800ba9fae728587e96533ee2", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a56fcee17b746038ae8cffa818a6d444b94c81dbf4cdf3ecd8da22becf338dc8", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "60ccdc8295becc21ec6fec9624a0556b90e62c7265c4579e5f55a6b8a347f2f4", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "a183e937ad9490959fe642bf4a822830fab9952111d59209c03eb4c88bbff733", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "6333bff6888ae4a3096e286707690314763f04381bd25b9eb955ff5e72477080", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "fce505b6657315cdb79bb1ffb70ddb69201fd4273f296f356e540239bd1c23db", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "47fe969151b519853551035c4b4b84d7b93668133215febf8361fac6a898777b", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "97eba0e88c3c5a1fda7f9c772e2d4e0ec4fef41510d37cbacc2d28ed9ec64c74", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b5cb3553009f2a51d1144da0e8f8feb58f1b431165b326e4226c4d72995bfd38", +"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "ebbfc32b1eb720e9bdc7771eb85c8e2e30c0632e984f23d200b9c95cf4791898", +"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "422c769312e8399920a5da2d4483b8dffa8c8590087a20e64673dc763b3a5f34", +"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "6e90cd7046ee0b06067232770248229be2e891f2255355f71599541757a95437", +"T3T1_es_zcash-test_sign_tx.py::test_one_two": "a03a6e4e3503057d874dbfe0ee2cd7bb03c4c85d266cdbefd295429dd12b957c", +"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", +"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "f2ac08439e1a5b7ce458215c0abdd09f54e60ec5e9aaafd3c7827133c094ff80", +"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "38ed2f95e8799a9ed81efa80e728b9b2e056d0e76a554014699d8df5240203ae", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "3e421448bd9a9b0c7b022d8a9bd6f61caaa5eb2f40d019afd9d538ca8ae247cb", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "fca52b0753a6daa3a53b0a4e966995fde073d4b3f86cd1bed9c584ff464471ec", +"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "fc691f2f92e5bf2cd054316d0af1ed5b3e71a79211537743caeb80611c5f7a35", +"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "b374f55bdeee5421c95a679ea7e548bdd1d47feb748cb48d58cbf79ba45d986f", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "1f62095e9b0496cd4053e527bdc7412f4f261702214b2e9748ccc28252180156", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "2c24f1958da422148f2d60c9b5fd7293e442ce6b2b8959d68f5c868601949b0a", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e149065d460ac3902e8c4dbb4485a5b3819b723dce655c1320205b66fbe4e704", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "e3d489dbbb1f90515c20ccee131539b9d4b6b0430c6446e6d203b5e66a4f4cb6", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "98e8e1ab2316b4d08396d75d72c28d457b1366e7f527fb1689383ddf5f170204", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8855bbf435873ebed4fce7f99e22d347760c6756e712edb5fece58d055968a19", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "6dfb8adef95e298866e8e3d347d6ace45c54675fa3f294279e0b50f28ed4daa0", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "98e8e1ab2316b4d08396d75d72c28d457b1366e7f527fb1689383ddf5f170204", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "8855bbf435873ebed4fce7f99e22d347760c6756e712edb5fece58d055968a19", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "6dfb8adef95e298866e8e3d347d6ace45c54675fa3f294279e0b50f28ed4daa0", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "8209ffee1d1a2691e80733095d0fbedfe0ffdae56ba942a5f25e910d796416a3", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "b880353261396e9a2d1ae1bfc85712881efd2f1016987ad2b8c8001dd4ae7279", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "008ecdf1a6cfe858415d82f4f43613edf343a0ca0e758867dc50060be1732544", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "64c7866bcf1838faacc0d527c0cfbe97fcf1a78d5e92bbf94c343f68b09793f8", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "639bd602d580efcd770101364a482c9c47dc51620971b1802a146e9c5e413a93", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "639bd602d580efcd770101364a482c9c47dc51620971b1802a146e9c5e413a93", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ce22ef5acbd3f4ad23088e4ae7a9066cb7b67efa7228c5eabb2bf198408a6d5e", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "fbda700ac6d8459dd5c3f7ca6c7d22ee697094838ff0a90e3a9e7f136d545534", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7df3807d4e2b5f116c7a0292f51a3da23008ecd839a722835e8a6c002d03bbf7", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "b36feb8c065b5a16d4ac8bcb4407c44e9e225f253f760a3da0682e853a4a50f5", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "b36feb8c065b5a16d4ac8bcb4407c44e9e225f253f760a3da0682e853a4a50f5", +"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "05754a281825830df4fe0ecb6f6ebdd723098e0fd895ac81d28f68b4d82b0efd", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "05754a281825830df4fe0ecb6f6ebdd723098e0fd895ac81d28f68b4d82b0efd", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "14dc20f71aeab122ba00a822100c386a45772c8ebb1ad0df84f5b7b648068be4", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "a3bf9e28556f3503b7982ffbbc2c10476758191d0f52659347f191b3dba5961a", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "2fecdc2c539a3632daa92b33ff58687639236d05cb49ca37941bb55f22f2f5fe", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "da41349aa8d2d88973aa7a472421f2ea874ccf239d3fb563df324bc787f66f16", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b928c4313a2cd8e78fda20f75f4d3997384e5b513038bde710b73a2a622a2f97", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5dc6ad3d0e3d05b616a8aabcbe4da6766b243615b5a6a0296c27c0b2ed350e59", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "c99a7558c839fa11555f88d08fa013a39b14829cec0c8de110adcb67f87d0527", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f18fcf11303eda9660b717e22c676ad609196938e2c1091ea9dc35d1212f3a6f", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d8202719cb54280b6da210ffddcc21ae1b6dcdc13b247ddf95c0ec1037513468", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "665d7efe4d9d1d92526b5ed8d76c092204d8a3f197ac31c62eebfcbc2925fd2b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "040ea3615cc213e90c434fb2acadd0714851b5515b4bb663a054f2419421455b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "3676a9e46e4b81d6bff10c227763da0bef2605dc54e1ea35868818e566b121a7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3d98db3df4378692ff3ad066e8aece2e60d47f84e501dc5b46ebd74fea0e846d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "75eee88712beea17216d64d9b4b90af1b88e1fd26dc73b2897ae88b33e1ac669", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "7bfc5d2380d93735decfcfad248c7f2f3a89bbb6f26eed9fbf354ed4268a8d0e", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "fba628d20ee765ffa559ca8bbf7ee444e6f907b205717e184d8c8aaf09a91bc6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "c258874a350e7f2072a204ce5b1aeb83e3b07c16a2834f11b8ce87d6b226fcd2", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "75b377824be680df8ca8b3be5ac1b05476ce7dc05d7fabe7fb6e084537d83181", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "602c9e8b194092da9be10f918295c5459e79d570244ca50e333d77a6a692dfcc", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ecede6d39d9b00dded1c069804e20bc987e3278b50e7c61bdb65d5d9802e4c29", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "8d94f673cfc9b6301b8c4b4cc5e4f7ad1902e62e3f12a3d9b86f07cfe5b05091", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "d61cee9588c8c81f99e3278b900f84de1ecd6a35b1c69b9f16cee4babc2e5c0a", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "8f05cd0fa8c55a750d7b5f26b92f15bce9b85011ed1a6035d529b4cea2cd7a48", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5dc6ad3d0e3d05b616a8aabcbe4da6766b243615b5a6a0296c27c0b2ed350e59", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "c99a7558c839fa11555f88d08fa013a39b14829cec0c8de110adcb67f87d0527", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f18fcf11303eda9660b717e22c676ad609196938e2c1091ea9dc35d1212f3a6f", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d8202719cb54280b6da210ffddcc21ae1b6dcdc13b247ddf95c0ec1037513468", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "665d7efe4d9d1d92526b5ed8d76c092204d8a3f197ac31c62eebfcbc2925fd2b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "040ea3615cc213e90c434fb2acadd0714851b5515b4bb663a054f2419421455b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "3676a9e46e4b81d6bff10c227763da0bef2605dc54e1ea35868818e566b121a7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "3d98db3df4378692ff3ad066e8aece2e60d47f84e501dc5b46ebd74fea0e846d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "75eee88712beea17216d64d9b4b90af1b88e1fd26dc73b2897ae88b33e1ac669", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "7bfc5d2380d93735decfcfad248c7f2f3a89bbb6f26eed9fbf354ed4268a8d0e", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "fba628d20ee765ffa559ca8bbf7ee444e6f907b205717e184d8c8aaf09a91bc6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "c258874a350e7f2072a204ce5b1aeb83e3b07c16a2834f11b8ce87d6b226fcd2", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "75b377824be680df8ca8b3be5ac1b05476ce7dc05d7fabe7fb6e084537d83181", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "602c9e8b194092da9be10f918295c5459e79d570244ca50e333d77a6a692dfcc", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ecede6d39d9b00dded1c069804e20bc987e3278b50e7c61bdb65d5d9802e4c29", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "8d94f673cfc9b6301b8c4b4cc5e4f7ad1902e62e3f12a3d9b86f07cfe5b05091", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d61cee9588c8c81f99e3278b900f84de1ecd6a35b1c69b9f16cee4babc2e5c0a", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "8f05cd0fa8c55a750d7b5f26b92f15bce9b85011ed1a6035d529b4cea2cd7a48", +"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "3cb79517a6adad07a654ac23fac96b0d5fcebe304360b220b3eb01d5e113b3d2", +"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "0d336594076e29c85dc7a8e3fc75cb425e0fe6c7caf617531e01ed2046274dc0", +"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "ebd6739f4daf2ad0c1433e70cae5900376871681a534d7aa81ea6ae9b16cf6b1", +"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "91e438eb4aa0fe40211a1d704ff874087865ff546c33b4221afd5e0163d07221", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "c9578be22ec4db1703b34782782354fbfd387dbd8d9a64ad561321f5f531aa95", +"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "077ef4c379fda63370081ac4b3cc5d81c433b1466f44d947207d53680cf9aa25", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "607df8e99d4256f56099b238800564e0cf27883f091bfb61c5ffa268be5e5824", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "2dc9fd7d798cc779a38666e8c7257af24e81faa1ad14336459c920d5620b5536", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "258679c2e7ad828cdea3cc77a9eac4bea926c46fe17d3e04d7e3b91ffe61c3ca", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "0598293860c9a438f3c438baa3fcb2ecd7be85f318723990a405a259d1d488ea", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "86ecc483ea1828d5aa64b8307b689d773247be450289415049efb2771f7ec333", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "5d001ea4ecd47395d855ee816395d28df995ce082873e6831bd4899283589f53", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "6e15bcf18c23b45967af2e159de66f063a3681867693227854746f4f371745ae", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "4bbfdaf2ad08127ce359221501b13772fdf769e7a4362c41fb25a5039db3da83", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "bb212c93d58cb0d4bd28fb357cb5f6ed474d4e8b3dd83b7d53e15f7f149962d6", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "a11b974bd1d319cb7a723a5e9b2ce2731c036a246829c209f5692ea737a87a37", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "96014c6bc13f1f15514854edbfebae2efd842435ee45a228a4659fdfcf097d01", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "e5e1328271e13701844d1c98bc8aed7867700a093ab6f4afde82009d5a889eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "f310335067a875b0b14f70383f921aa5923292a4c2e64c3ab59a85d71e9687c4", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "882807b055328e4ce66eab5fbfe1189aa7ef485c567b79419e364461437b0bab", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "32fb8a578361d1be98a50484b9e3a1fcd91ad80af1a320e4e684c02ca97bfe7b", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "0b9b64dc769344081d6c648452f35277ec78c7425694052c6c25c371c5635494", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "282039d3537e45384d1c82782128ba1f9d705003bde47cfc0e38420f0ec13f97", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "8c239200243c61125cafa3acf82ef90a8674c2f6c0c269f9a8f4214f81c61e6e", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "d1cfaab220fcb5ab1b02101d69a2cf8cba2c03d9a8629cca667078b2218555a8", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "2cd076b22f088c78ea1a20f8ed326109333b2e77818dd7410cefe5331692f5a3", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8ed6dfddb178ab3033b393df23bce47cd547906899123f47dd7eee64808302c7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "19d701cc7668cdaf5ac5ec565f3fc95c88748bcf26cbf48bb95e8c7b502858a5", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "63f757ffa0f74f57e21a5f6bfc59f133edd306b4cd72381cdaf915039d146822", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "0debf2797f9de350614c83dd5cdfdc851410ed52a988942bf564f59e105f7e4f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "0debf2797f9de350614c83dd5cdfdc851410ed52a988942bf564f59e105f7e4f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "fcc88b0226ac1e9d9d3c27dacf256187ac8df7907a98afa16ec32df6e894b630", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "1de29e69b5b1f319c3e56578ac9c76017df6c600091dded327a07194a82d2a05", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "b47f81008d1a75fea48a82e24536c5014738efe412c71cb3507a49b50c2a45ba", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "f6a34e807724ea4bab8de8e0a85541f63bb4d2d97ad1ae94ced0164a797a16fd", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5a41ac9b05da72a7813d15790a830332c7f91eedcf7b220fd670cf6b0c072657", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "bf3e5bae7d79cf71c84487b12b8a7d3645d9a6b3ce3bfdd2dfc4cf19b75a7b9f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "cf07c30a322fad84eb1bfe614bc989669fa2a3fd690c21d52796f22cf5648760", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "32904af8703a31eb823a85711eb07da7db9f91429f699d4ff7bbdc715c8036e3", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "c05fd54ff8505d610e4b0e17b042a59a3e6c763af91d237807c5af63ed052a62", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "bc7cfc8864438fa93a11b9d274bb2f07b2cfcda0b2da677aace9bc77f0d784e3", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "e0162341e9330a36c855548d21747080ac38db388010a50badb80ead9ad390a1", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "821c85e981d4c99b8fc14ca6abe3c96841c6446efb36dafe3b2a77d2fc38f499", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "390c819912013f7a8fcdc45e9c5631ed663e05a580cd69a48ae0429e7b1617a6", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "e569428deca2a32887e46b02e77e65d49c8d57573c35a02ba3304bd2fd5f5cde", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "c99a7558c839fa11555f88d08fa013a39b14829cec0c8de110adcb67f87d0527", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8616843471c4718bd485fac190131c80ccbde23df88c68a0a10036b8e5e357a3", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "1268a9be3cff35ba0a6d000a7613188de8a5534b0f2d077829bc414283cebafa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "489c09da7935d2c74be49328fbe73621413eb7344b72fba7dba03eb2924115fa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "db95430b9b01bb617b58c57417dba66713457475a84e7f81d26ab96f6f5303a9", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "038d4880e4d82562b7ad80ba3228a584497aacca0a1a80bac2d6d1426f2dd83c", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "d3a7dca112d30972c29b27a0f8ec50e086cc3c4304ebe067eb4d93aea1722291", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "4663cccc3dba80abb8702d81a1e4fac9cd973f20789ad40eedeae922f73c9f19", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "80691279faa552bea1e837e582ed3447ac63e8d512186f7912efb831564dbeba", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "fba628d20ee765ffa559ca8bbf7ee444e6f907b205717e184d8c8aaf09a91bc6", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fdf483f01f795875a5955109a9e19df32eb9921676b2927d9c4dd47478f10477", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_grs.py::test_legacy": "5c7929d64d157ba229b2ffd37c8bc544b787b834cf26737c37cb1ab703121c91", +"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "0d5f6b5e84e07d02111c435609e5354c47e95511af9d665da0128149da1084c9", +"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "ee7364c330c21b8d0dd50ce60122d109c200dcdf3714263f10b6713f79d397aa", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "ec5d93b1ec3a2d0e43b3827cb0cb6773ca12f8cefd381f9a4b45b1620ea60527", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "84198feec0193fd148fe19a00bc5aea97affac43f6ae8c2ce7cf246b43643906", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "93cb0397d22e5075bdb8b1f11245b2c8508777e03bb7d4890e7079c64b5e7f1b", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "37ad8787472ef7311b59be85911177b4d40c359e2450b8a38c0ceb28d87be361", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8b962b2b558a4df770da8c6a3bcd36fc662bda2997fa8d969d7d9864a41b9ad5", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "e4d9131fbf66b6dd2ae24350c24992bc4f62d7dc21dc868734c378e8ccc88c2e", +"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "43a5b44211c495782ba1261d2e1db204c55f3f9f01b1d0e7a64fe50d92bbc452", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "0b7d4ad8c89e8eebc8a61e297c0630118cbf75e63937e403c09001c63ed712ab", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "21cc3d4373ab6490eef891033dd8a77d0ae61a04fda67be7877361518545d59c", +"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "2697759120d0b9b77edcd5fc3cad86c6f3f5db02749bea62a18af79bf9de32d2", +"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "f3716f717ce91ec1e70f5cc9ce837a44457620ca1bedadaac7730e46908ecfc5", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "b500650a1c04b0f3bb923cd36cd7c08719acf72b34c7c92e3aff8ef38bc4bc5d", +"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "b23d8600ff6194c791ce2e28eb9bba880f4d0348ecd84cd98536d027a40c2b82", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "32d9f5a69b502529855b13efeab19c8d56cbfc3b218ac8ad1e9f3ec0aa3f2427", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c6f762a6c813392b487f829888550bc97a5f18dc1e6e103c407b6a9c29b8e26a", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "b49f3a17862cdc74f8a12587494d566f13c10208d1107055687a2d50db989568", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "a30279bdc92c19ba954073fc309c2fcf261265d78bb3cf0916006304db4d0d5d", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "0ade224e622d6c8ac5aa75c6e8f69a21ab46dda4b44b4b6bc8da578380a2bdfa", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9f7c7aaf50d16bab2c4f002759b13bcf78b59b07471e5c81d62f8e8ef7a6cace", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "39cc217e9056d1aa0710b43f958d4bc58c080cd1225bc314f2a8260e21fc235b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1ca710ed3ae704f870c606e08a568e2a4178d2c662e34bfc31a36805c608c4cd", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "fc1a7f3e29c37c8a40d68a7a1ce909144a8a1f74636b3c52ce4093623ff4948d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "5e541675023c67ac5012bf832fcc8e3cb7c0b2117738ba129a43f5d685c19837", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "30638c3c0121f47a608a232c8a3b000a832a33fa565520edfd7b42e666881d97", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "07cf6d01890a344f4c67da021c9a3d7f5b04ea56335222843b886ee8f5d462ba", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "10f30f12c7219a36513679a3c7477f970655139289954b40aa756446195b18c0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c4d10618bfa87e172c930428cc8ffafd6e72dc49537fd79c05989dcdfc76191f", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "46407ad0bcc11c09926194a059c4179717657db5e4e0a96afc947c79c01ed01a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "2acd98ef1e21ddc7765473f037efabf653e93555108e718f22fa299715df7e6a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "bbf86729bc1bcf1118e90bc60a8c77c7facfe5a7c3dbfd50d067f96e4689222f", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "31f995096fa0f38f45dd2162ea0030d36e4101fc887ba25a2958503b139ab4ca", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "97a19074f6a01e57c5b21a857afcf9600068b61b8ef10e640cf6595663ca5596", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "ba5bf053e93823742a41f22949fb19560df6c4ba2ab445c81f2ce8d8e3883b2c", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f658892efec605d8b691a5d5120e9e022c77bbfd7f7efa1642640ec004071f2d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "6a7c1a62d1ed89ce9b964b0ce019003413521a1c20d90d65e44c564fc2f04c56", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "f9e0bbb1e8031fef104a76ea84e21d1adb8bca04b363556a60a7d91a352e14e0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "fb7d836358ba0b0c6e6f65dbc3f451732fb09688e5f9259c73807b308edff1e0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "93fefdb320cb30a74de0705cdcb464293c4890b0ea860b3b067803a3b2ffaac2", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ab51e96cc9fb841b505b8b8871066c31f2b4a54678ddc668474c3709b565a90d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "9217a2b097269aa6dfde8e5f94463af269455ed2bc118a9afa8786b60f5939ba", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "84da79a26d22e6b49fd0d00c081018f38cd0a608e3771af64b4618b36853cfc3", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1008a66ebd906a7c0b6612cdc009b64a38b3d189565e3a7a13e302358a998345", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "2eccff4345427ef61666c76f21e522614d069103fb3009a861df9222fe232f47", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f04c26ce1bc9f5e772392f595205263b7c9bebefb03607bd874290235f7eba4b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "d627a83ba6c35d6d5f8898caaf60ff501899f2acc533979f7d84318680caef37", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "54b6e99f2f39a71fb94370b0c1aaccd8f1c8b9d6431137c7dd6f3ff3442520d4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "296d131f8026928540c8300c8006dbc5c082383e39671b68e1f9834114a4c7d3", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "92d3f89d1a55f4a3f07a30b4248a8521163390e952993fcfe08a064492bd040c", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "6d56e81edcb79355212e03626d4e26189deb2590d45c01ecdf59d12726f27f6f", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "db0793da4dd1f16165a64ba3467b4056ae5648e2b4fc0e9bbf87e1b248b50670", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "92d3f89d1a55f4a3f07a30b4248a8521163390e952993fcfe08a064492bd040c", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "92d3f89d1a55f4a3f07a30b4248a8521163390e952993fcfe08a064492bd040c", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "92d3f89d1a55f4a3f07a30b4248a8521163390e952993fcfe08a064492bd040c", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "17a01d85c39d02ed2a7fbafb06f849f6a493a7195737994074f0b7ef75ca33cc", +"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "2258b6d675150b4063ccb2126f6a4ef8e2cf84b6eefe9b172a456af5508202c4", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "3e79ad7ea5ad471b9ac3e9a8c3894f0658edbf190455a21f822d7907cb51130a", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "70e5e40ad5e516868071df86235305b77932664ac1408ad1a7c111a29cd9a610", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "0ff28de8af241372d33953e67660839ace6a19d19d42faaa69476b50a075d04a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "0ff28de8af241372d33953e67660839ace6a19d19d42faaa69476b50a075d04a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4428fa3c0229981746fbc2fc161a29fdf729ac40fe3573e0e044ac571c461b85", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "e9199b86ae5edfe18ab67c162369c3ab52054f5be4520c3550142a76e5c76691", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "1b0897f89669baa2d5fe6eae7a1d0a48d42db91d9c6fd94c3f3a3a9b6d3ff13f", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "75a76adc9e00ce92da2838f7b0ae36a6383c99eb16ef182518a6481ecb6e6c57", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "40f6a57f29368674d886835deca0b8b830dd3d9054f8d38814ad48b6be391d33", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "540d5cd163730fb05da2359ff55530199f89386287f28812c9d90b606d060376", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "540d5cd163730fb05da2359ff55530199f89386287f28812c9d90b606d060376", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "0eaac55fd99b658fa5f67e3c1ea06e4d84218697a3410297c2bc5972de4198b3", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6a27ca4faafb505f4f4a78836c6d547fd8100dc1b302e4f8ad02dc71f0ed56cd", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "4f655e5d7a4a731fc413653ee97bd03cd8419fd2dae2c86e1dc4e06fc890d081", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "4f655e5d7a4a731fc413653ee97bd03cd8419fd2dae2c86e1dc4e06fc890d081", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "051bb8032d58a93bc6276c03c593f8de494acfe5a6e34a593bf1119d929f3ea1", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "be35c88cdfad5555ad960b5a96f7355b201e07dee6bd437e7a6bd623eaca425a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "c231854b1562b9fa1bea5b4fb10bf26ac70551a2da855d35e5c24bd0386634e9", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "c231854b1562b9fa1bea5b4fb10bf26ac70551a2da855d35e5c24bd0386634e9", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "244759b55bf0cc653b9f18fe484fc0dd5e538cd7b2fa2c28827aef65595fe7c6", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "fc7088b4c95d52f8d452d8b84077d4db42246f11b1b1a1ee3248985643787bb5", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "ff32ca2708dc9f7e8bfb58dad280c436d4f9a4c1cb235caffd64e9d443330c4d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "ff32ca2708dc9f7e8bfb58dad280c436d4f9a4c1cb235caffd64e9d443330c4d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "9005308a388aae7dc139dddc2a9051df57b0134e4e7ccf873ea67fc3fd76f0e9", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "64b085d53f8e8394444c39274f1d7f99bc78f0d060e06a376b8edf6581936999", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "d0058a33109715bcf269989008a9567b72fe5cc70e5fe20ef14a6827d432842c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "758a9d85ff91f566dcea28324cdbc944f96e57abbba8d89b645782636d2b5bc5", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "3598701868101878b89d3d50d978ad2631b9c34b09c600d7780a018c38a98842", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "e994fe6de9606ee03698756ced48d33577022127bf150a0fd74669d650e09a54", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "e994fe6de9606ee03698756ced48d33577022127bf150a0fd74669d650e09a54", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "8c3589346a51d03910f0d928a1259f77aad576176407c1f865f433f1634446cd", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "5aeea00f413870c299d46108ce7193dd7016314b02c2212c92ec306f1a914748", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "cc828af41d01716674559a0fb2149d24ed617186914f098698082a5cc56b01ad", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "cc828af41d01716674559a0fb2149d24ed617186914f098698082a5cc56b01ad", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "9f65f972dd53e19db36e06577f9f7eccb370f6ff895dd3e40ccc6f9663c511c2", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "8d91c2f198f50519504b5dfe14e93e18cfdff9d7dad7a32a7e60fbf82a751f9c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "de1d203c046574bbbc282a4033d9fe3c0f160810f555e0190227111c2b46792a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "de1d203c046574bbbc282a4033d9fe3c0f160810f555e0190227111c2b46792a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "8ccb27676cb8d6e8dd03e6104088c0a865c2510b19184f54546278c4d6249a4e", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "3c4029598019963462e571e27c46f3ffe0ed8d87e4f09f7c4841186819455f5c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "acd93ceb7bae2864046ff07f6ce3218f57c474df41d2ec6f4a3186087c5f7d7d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "6eebbe8da8b79626815b5869b9bb5d449cd93310e43998148233b5d19c90eb9e", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "54281742415b54ab3c669160a7e49c23c45c7774ca83032ae9339bb4e4922b0f", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "d26f839675544f52fd7154ddfb7deae00a15a4109221acaeef259ada8d351ad4", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "2bf8e48fdd6a9385e1410c4ef24adc2276641608e82150041608f37adf1fd0b2", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e7a7eed135de41f6d0832f467922142ff6b2a2ba560d67ce93794a681f765fe3", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "833e9afdb29b73e207930ac727061d07c01ec3704d66a66f35a35f81c88a0884", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "3d31e8417be4670c9df973e408fba23f1cabe82e478aa35aa97644292044b09d", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "b4265f85979b291a0353f907f5f9c5fc3219325fb1ae5d78627509c86242add7", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "55e8d88857a56d24e8fe566579973e353782f383f9886927c66088ddfe21ae41", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "285e71c311297c5318db501da344a31918f0cef68ed078ad7c69213ca7b086fd", +"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "285e71c311297c5318db501da344a31918f0cef68ed078ad7c69213ca7b086fd", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "61fe30e411e2d40fcd849f81792505c363def59d6d4b8d9176b403b8df7279f4", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "98746778597b14176c45ece5f0c15cc5a73bb03329489c9cfa6dc0847328158b", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx.py::test_information": "8df402ee68eb47a456e93ab5a06108e030ec8743ec0b6da0f006bd38e411d1dd", +"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "b62941fcb02cf53269b9f27e95cab013e14ac3414289ea36c3d74774568f9ea2", +"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "daf64b1d94eccb024224402778ebda3ef39d44e78b4b21485148c133e161fa3a", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "ddf6dc8e31a4ab2508844f2e98171f5d2b0d0459fb453b948b2afb6264c88734", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "23f7dbf5c12bd716842540270caef8da4af901b10a3ba88a08cf60412c1c91c5", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "dc4bb23f0fa1df6cf7fbdcf82523218c90a9f11f3ec631700da9b2a216ed2e2d", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "23f7dbf5c12bd716842540270caef8da4af901b10a3ba88a08cf60412c1c91c5", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "dc4bb23f0fa1df6cf7fbdcf82523218c90a9f11f3ec631700da9b2a216ed2e2d", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "7e9a1aac4c983e1a12697dc5df062c699330fbbdcf56db9c04736d2bfaf2dd10", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "51ab5b351f23296896536165ad8a712ccc9d29e683ff5efd408c2160b31f5846", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "c667930f89fb1ad01e20eaadea1bbd03032cff67812af6f43c8bdac72a776c6b", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "b6101b0bae18d9dacb2f97801ffd437aeab3d0a484ad8e8b9b1ff51563211c58", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "c97c8ead8e3043791cc77c661b5bf8795d8aff5ee371c5a26d90bbb0dc2324ee", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "f23daacdb887f4368d128f81f8d846a0e47b318b29b45b08b6464b866a542154", +"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "a8a35cee671e5d24bdb43126ffb1492ac1e030de383342b121e32b7a35da0eff", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "dfcb72573b68c8526da923e5c5bbaa62dab6ed24f2dcbbc3ab62162b44e1fa23", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "9aaa9c3ff78e850ea1752faa0601714b3c8ac6d3be0a4b0e2a4d8766cf10f529", +"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "f36b89e77aa0ce5244c732160903224b33a5f62c8c976dfca4d150d8044704b5", +"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "300c1965dfb37cdaa0aee9be1d9c9ad8c570cdeece0261c6c162877487f36e30", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "1773453e7dfac379cfabed05d580635188332dedc4f8ce31d870a59e9d9e37d4", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "56fab77280e0572e9f5da0fc02355cc6a2b845fb3bbc21c3d82d960907075ed5", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1a8edb3c905ecac38d67516ee03b19231cc22973efffbca045501312d8fbec11", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "285e71c311297c5318db501da344a31918f0cef68ed078ad7c69213ca7b086fd", +"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "7f194ec0abe748474fbf737f4010d5994014813dae22aa9eeec9e62e10c8a3ca", +"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "25f85a11289a5c6a66ca943099621b941723a402c42672b48679b0bcce0c9596", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "a8a35cee671e5d24bdb43126ffb1492ac1e030de383342b121e32b7a35da0eff", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "e728479172563427f65df748dcc7a651f7902b2fd956b731259befe6b8e05321", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "8e58bdd1a1a2b7e259ad3945a6dd764a3865a97eaf75eae56aa1da6a12c013a4", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1c2a974662722f9f85f1f6083aebd7372d1b41877797c5410e598ab84d78ddb0", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "a8a35cee671e5d24bdb43126ffb1492ac1e030de383342b121e32b7a35da0eff", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "af3269087afaeced97bb423de120dbd149f198773cf1392852cfd7283421b6ed", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "3c9af0805660070fe39d29d4d03dc380b9a1a7fc228a26b1a8643ab3cb2d4873", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "0cd7412f6c2d43c8c1112ab861d47557f3654d50e0dea0ad72faa7a710c2f378", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5d6e41cd8e9b9c1205b199ba9f92440e84c4cc7370b017dfa622b5097d925ef1", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "af3269087afaeced97bb423de120dbd149f198773cf1392852cfd7283421b6ed", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "9d3ec6e1a95adb5fc77c772744680acb01f1810b87283f34df8f36ea811c422a", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "781ceb499bd3b323259e27419984ad16c3ab334c1f120ff078e16840d36df1ce", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "68e752c86b3d35d51785f845c0ff62bd4edb7927622cbfde8aa97f3757ade5df", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "ed785c65b8a825a7127829a4a281e4473b31caa7fad7f8a75eb48bcf05baaf2d", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "d8414808db339289cb05718a807e72ddbad702e9333b31038ad4bb4941717a10", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4b3e82eb47164a53b66976cf09c153fb185e8c126727ae9bcb9afb164691086d", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "951c2ddc7d4d69e805643712bda7dd62766b04bacf40979795ff5ede334bfa1d", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "008b3aad64040b236e2ed56dcd7dde40109dc3cd43fc6b70916716b59eb52491", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "cd98212c5d44015ee56adf13a34448ae2ad2114ebd0da72c6afe6742778d9ce8", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "0a0a1428627e2a477e9b36b6e481d9552f65e0461f856fe619dbb27f49e60084", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7a9fe818e1cb826f553e74a56365e6186905991a683011b0cc682ce3b1d567eb", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "5343b008c7f35d5b10aa45c2049b2209bffee0bcb0ee998a72976be45b8955a8", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "5b4b2c20ef6f5a3f282633bf2dbeb079b84885d65e245aa801033fa580dcdea4", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "d68a70beea0e8bd33ee15f4371ab0e564ff60a56ad485666f92f40fd7d0e13b1", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "5b4b2c20ef6f5a3f282633bf2dbeb079b84885d65e245aa801033fa580dcdea4", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "d68a70beea0e8bd33ee15f4371ab0e564ff60a56ad485666f92f40fd7d0e13b1", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "791720091b4bfba1ff063aab3505ffa84078ab83a57f2100c3275121f2e13c57", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "2991f7740e73217abe26967b7b0e9dd3c82ca079d45bb041ec043da2525a0a7f", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "26fb33b7ce361ac7dd9589a4334b699823d3b5a2b99cbc70c09e6377db24c143", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "5e8f3232649307f3218b0e3bdf8e4c4528f021a56da62aa86029806fdfed56cb", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "2f2865b471396ea6682f4f6795a3f3ee3b6861ad0df31a1a07f877a1f09920b6", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "dcd6c5522056ad757eb3416b1ae0f6328d38e0c46f85d69bd420f8d3931bcedc", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "011f12620f99b36e2b68e4b8e8e4671ec6cf8b8e7e012da753ae1d9d2e52050e", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "bb17d411ff9445eb9d8c0d6576feb51ee8b17ff7f8533c5ba3533111dde1d4bb", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "bb5a64d5444c968825091f9ee4bced4879c7a7107b2e44a5fca76f3bafe8b66f", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "bb5a64d5444c968825091f9ee4bced4879c7a7107b2e44a5fca76f3bafe8b66f", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "bb5a64d5444c968825091f9ee4bced4879c7a7107b2e44a5fca76f3bafe8b66f", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "bb5a64d5444c968825091f9ee4bced4879c7a7107b2e44a5fca76f3bafe8b66f", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a4e4de8932a6348dc611a576ac88a99c1beaee245ceb4c72200bf7eabfefc405", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a4e4de8932a6348dc611a576ac88a99c1beaee245ceb4c72200bf7eabfefc405", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a4e4de8932a6348dc611a576ac88a99c1beaee245ceb4c72200bf7eabfefc405", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a4e4de8932a6348dc611a576ac88a99c1beaee245ceb4c72200bf7eabfefc405", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "a935471ca7dd0a8f98f0aae0a58b8c6d0b6243563e1eb5e9480132899cfad233", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "ccea698ffbfe00b9a9888a64e27a3eebde0d46e694f28ed7c78bc6dd26288b5e", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "cc03a570763a31bc11f5723fac87f25b0f3c314269d538610914ae316a7cc69a", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "cc03a570763a31bc11f5723fac87f25b0f3c314269d538610914ae316a7cc69a", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "62a3ea09225c07fb5cebbcd1e46ea3e2f4e63c714ade492dfd336ebcc6d78641", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "781f8286d96618cb6af54a70769f9c45e25bf77217656f2dc5bafcd91b2d5617", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "16947e54517c6a90eaa721649efac807ebae05a1306cee393f5dbff9abb0be5a", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "62a3ea09225c07fb5cebbcd1e46ea3e2f4e63c714ade492dfd336ebcc6d78641", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6a6e3bbec5404c50be7e40ddcd1282c17aadc24b98822855e68eb7431443cf20", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "d838912633206340ccc4b5502a0c6e45691f1519eec8c285985f1139a0baacc0", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "62200f0b7b4850c744d5eb8e06ffb6a2a73cd3f8eb74a114870eaeac86ec68fe", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "e229e95cd113e01c3f8e573ab57320baf9e11af862c72106cfac5a9b5dd62186", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "5efc925a503e8df89aa086db4f28f709533e6dd8c27ede0161c3410426f02ff9", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "0162ad002b621aae62af78031b359ad605fc80c7d5cbe1dd2f0956966e331dd3", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f3bc600ad3d1a5c584a617e1f6830d29cc4a7e14a73493fc1911a5816aecf696", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "2f49ef576abe217e4793540c1eff90294e3b346a452e2aea7e8ea11da0271da5", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "20896a332b0346cab5e3dd0c9fb7bf07d1f00e50e0c8f7905a7ea71979f676c9", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "298116c84aef96bda549aa5f1244627346a9a9d9f7d0d5fea2abb2a927174ef9", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "79e417a455940e3794627ad64ce4a7d515a30c0bc3f021918e42a2848ee045d2", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "292e2a1e6595ef036531603f1c198057ec86822f04f46a0c26dfbd86caaca87a", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "71b69b5f58ee8840731682d6cfd27dd6f409389a200d1ca4a922e49ceaee4258", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "44c2621d7fc30e919a116c7edd35bdd14425efb1dbc0d8c132121bd63cbb391a", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c1f12142d9f64905d4c356406663a4a9b2f0b2c317c0ee9d65261e4b7f6fc3be", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "87b5b2ee596732221bab9dee5ca00646f58c530e0d9fc2098fbc8ec62e7718fc", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "af3269087afaeced97bb423de120dbd149f198773cf1392852cfd7283421b6ed", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e0bb957747b279ac57af446c4e4e87621b4a2a503cb0391ae066e44a5c129d09", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "10feb9387e1f3dc866eea1dd24a3ba7cfbf927a3b00525561e29ca9e9d58fb41", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "4d4de2de4d8e6ee772d30138ce533aed3b39d4408577df25fa6c3c52c186dc78", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1e4a744fce700df2f58ed3500380894a066b5fe56670e4f48a41c2f4a66ba69e", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "a0920ce86292a4c5832af3b5d75036973526ceb9ddf1339d612d91c159cb807c", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "76c6b45946ea3e94cbc38a5837d0d3da4dee48b6ae5990d2491e2398861d9f19", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "c2cc51643cb8c2fdc24cf027fc8beef91c2540b99ad3e28894922b52d3da65f5", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "726a0ba4e0c7ff1fc4c68b331902f10d25c9f1df3e5b100229b825790d63eaba", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "ebfbb628a7bf8a7775c357b805ba8a81ef9f9b058b5d8a99e77a37488add0e71", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "358c9b933d82771e464d5b507922f3e47b8650dcc6c878a4d23b52cbd797578d", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "78af5e4336cd4dbe73e2345769086b1450126e56dc9a51fc596284dd88aa6ea1", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "9b6bd395f2326d4b7117c4eab5f5564cefea1c57454dc2c860e740a38bca97b9", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "2acf1a8491243cf39ad1fc73962db9fa9ac08c887119a786fbe7da6a49817dfa", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "5c542c108b809700caa70cb6798d63cc781bb52d4bb4849357e622596f6fd47c", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "5eacb7f619f86d6c4e12c679e33c42da3d0252c0c4cb9da226a1fd2d76e40b32", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "f16433b756e1c1bc896ebe9a94ac8604492246194b9cf6ba0b80c88af267d930", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "983382eb53c5ee0296ea883ce1c595af8fca65b24b3792a7cb15c4f2c6690793", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "a18503eceb07ada35c2f0e7dd9ed9e9c54c0fa837f79055a6d2c9628c14a0286", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "32df00dd28d2c36aee1e30189853ba9dcf26ada2afc67d3bbe61d8bd659c60b8", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "3356eb9bd8cc87d8e70195ed29f4173a3921058476b36be1475b9112ef4bac6f", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "23e1c1d18a5a5b74340df788a280a918a743bc3af3b709e5896144930f97a7ad", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "665adbb0fb0f58f8cf290d93073647c860fd9f01e8e1f10ea96ef10b15b80167", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "40649aec8fb0bbfd862aea51570806213467c9a206a16b053118f4cbe2119391", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "9d2e1a926b9ca94a62515cdf042e2c6e0d207ed725b15d547e71e4b5aeb9e537", +"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "5ba148746b1614bbab1b8bb6da1fce6078d254f9596d2728c832581b69a57c33", +"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3cfab4b4612354707a749ee19792a1b8a05da6340b1d4ca24a9fe676a1c25aeb", +"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "ce449a1eaaad1e5d23f6a6a73b11c7f26e24995c292b91af49cc3fc008377c6e", +"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a471fc53adeca7fda41c8709c79caff45113d1f5579c275d9f541b204b7b8641", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "7beb448ea8c4b698ac8414a32ca621a4f8b44ff0f91984979b1121221aee46f9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "13f46d12319371559acf8e075d8ea2856e0b4c22b4b5971470f78035dbd651fd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "9fcde798fccc1ec1ee0467418064696b71d9fab99378381cc68441ee1fe88d6e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "0529b43b8532a8fd88250f87fade708f0f71ab8078c8171627c17d435d96202f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3ac675d1faf168cd23f72e00c35f58628535798448e28f3fec8934cf84ffb5de", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "6073bc93c0081e972ae6a5459c16163017372fa6a04fbc79b7ba852a4a334a1e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "573023c6eee65e1eb78656ab080553042ba7be9b6b37f44ddca34f8e5ff76639", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "1a79b982215b18f9bbcbccc254a3279800a4b6bb8126923157b37e5ea59522b6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "9e9e15266b394bbfe7bdf79b49ee8ef3b3f9631e524afef98495f4ba1faceb58", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "e709b178049d4474fc3580234f33b6c601a7458da0824be590f6dd7956bd2f6f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "e5a09aaf653dac5e3ac17d5b5b52e7736d55a9c4bdd542a9e5ee8be4cc1a0bd8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "dcf8fb0d06dd17a8b6c72a167a194db95f9c6fe1012f1a9801bb99570039a41b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d40e844cd9afb62e7bdb2b96a7d036c1aa670f9e0e516e5bddb62176a7fde03e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "12a94681712c936431bd84ae1559813ed7224a0c3c030bfe93383f02aa3bb1d2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "164527792f52d0853c3b1a1a2496089e8b8e3de719138decda6f5c125bf21cd3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "f3f4dd9066b2af7306202a3705fac5b0583ee1103da2b782f09f063382394c95", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "36ba81308e844d37616ea77410c4633f798b957cf6cdd4f66f32f3ea35c80ed6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "4518eb50d4636a7626a1cb16001304bb2933a41c901ef3c03f474b74cd50f8cb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "c4df138e87467fcc10aee2e83bc47d0e3d0f56d86e1b8da71d57853d460ed1ce", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "c3be1ce8ccdf13c5cee64e6a54a3bb73d63e367a815fb985bce9498c96d53138", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "c4cac52fa0705466ec3aa744e422832223619c8dba645a1003eb39598494d7fb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "63e9d734853f3b8b433034076ad75e407bd424b67479c4aab9798d78047b4089", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "1d29b3806fa5e6d45ca16d9cb01a70bd8c02e0cc42bf04e0aca088d26c83dbb2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "19823590d7e333d3c5c3c13ff6384149c44ecd0a822875e392c8885f22fee4d9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "5e735ffc3a99daeb99a1cab04aaf1a00529c4f6e03762aa65d4a30cd8492d113", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "57405d0ca2203c9dceca5ff93eacd2c3b06eebbe3238c1a15f13c337243dc846", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "c910de4db7dddf55a743d238d5a587ca1588e538cd7ea5aad0cd8c9f85ef6dbc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "b411666388a85cec0ceb1081006e605e8af3fc6d35bbbfe28e0224fdd5131728", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "f83be2c1ed1426ff4879e867c3b5a7abdc6aad48e2a4ca1baa931b1d03e1865a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "6b40590f214010fcd7bae0c3f207a37a382aa030f1d5e7318836726a74d5e300", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "fba8e655bd1c20be7b4d621e040bb8d8ae0c7e84419d30610735907d2c9032cb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "af03345ba6fff6f94275c0abcf2e60d2044e49c24603b51cfad76d28cb70321a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "3146ddd8ecb1fdf0d9d8025a48490dd06599b31bd46b319ba5bded6298c64a54", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "4a0bc1d427bdb5d47899ef4525a82201cebfaa5957f9cc625f479fafbb72df14", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "ece15bc4cbdcb1d25a688e10ef8d77e00bdc5db9b12c7f4b3be4469cd5ebb69d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "8ec6d4edb9deace41059ae87d880b0a4875358de511d217d84cbf631af1c57ae", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3f0f46dd97fdf222b300c55a4a5162f21085f4038c2357947c70cc5fd4faa195", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "9ca51f52e973cde2592768fd2ec34c3ab50474c0007a43442a641135ddf09b10", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bcd4b5cfc421bcf6753ba8a839f956f27f0a7c965904638f625e85d6b56b8986", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "ad0b006231e74289982c5b5416ae8bf6d11c5bde88a1fb3c1fafa9850b233e0b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "eb03e5bce4827f56669236968cdd424f0ac915af9ba869b39d144d30f34427a3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "d4a09ad7a564747a4945000fc50d61c447a4ec1e5842cd58651391eb0d22898c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "676a1e045a33349831531a401f2028fc208f6fc1639b40a0781bb5f4e37847a1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "979b588a65e4e0d0e9ae50288c9740284a97ee3674f7b208fa6a259a3e25a527", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "0065cc288cb9a6aaa443f5b987489e5ec9caa876232a1adef764223a2e983d28", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "3d1d07a8164e2e5f2c909d1706f38fdb2d306700c8bc06b13fb0c2f94ba6c937", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "dca6fbb9c2f3fa6935fe614dfeb696b4bf1db3c58d9c37a65922734e474feed3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "c31bf4c43c09bf2122637d544514bbff48487052d311cc454831bfebe975e782", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "f128c82fb8a109a8234fee767d43747e4b2cd9cd1eb2223154dfb58b643076d4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "85087bac6e5f21f3d4f8b09651dea4c86a133c76ef006d0bb7cc95288f2b34c9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "a996ccaf42231d02507f42ec7d7634634646568b92ca3f37df5080923b0388b7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "27b619b7ca4eb8637c2905dd8f5a5904e14a769d256f89938dc5fee7dad38059", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "93efce4c2e0e598e21331737e0c8c0734fa3340508ea40202badcd7486f2c4cd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "19a5b6660c3fe81c4c2af49f6d8d102a3fc1cb9fd5394feb236a8125ae819ecc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "880e2ad029d03a0a19cd517b59018c64762ddc960a16a71d721e82a1eba0df87", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "5350477d6dde72c33c1b6108402f28cb9670430bd239deeb08a72130c213cd13", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "66f81b66fac7563524279c5d44bb22e9ad339860c5e2bb2a31d307c70aff03c0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "3ee78a4a7a36a632a76fbd54c5989da987d74ba5bafc12f161e50ae84bc89187", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "4661be9fd3a1617e5e80f874d1e50ef5c34f44930dd472cfd44ae3e1c2b1671e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "cdbbedac93c8cefaee007b570ae06083aba633d2b110c84cc8c2558dbf5440b0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "7752ec7ae40e0117d9bd8e00caf5336c5da51967d19cb0cd792d73ed19e01240", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "dc5c402616893b224908f25a5777a1a83f542cfb5f6ed66d2fee22dada1b9e9f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2aadf6bf277e748e35d0d2a0cc5ac7da4f049e9e5c553359fc71270b90ce107b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "94bdc2b36d691f547644728d306617f82250de235f04a7c852c4096331ead104", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "4460f2f200597a2078a8f421861521cbba5588ef9ae202dd548cb587996a2603", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "b2732f26422f215347c0a319dd6f708aabe3e25e7fd81efb6ce56b171db92f55", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9f1a4494b417cb0cb1ccaf29fb1eaa42440e0e75a5d4da1b5d0fb75293d8b0fb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "36db6f1c68dac428d42e9ca5b86443d9fe8fd627f2ca8f44c5cf77946dac0abe", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "bcba90a5bdc78b9412c9085f591629c3cf80972dba49ae8ee39e1618e9a3cae5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "ddb46d23e66963b5a828693a88f82b6c35a35bd69529f9f489ae793674180778", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "7c6144dc2154be93186c63556ae6d412f2fa54d127f657cb1b7ed68b325a9bb5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "115990a0cdc77385a70a548fe60eb3001d83217f8289241fcce3e62f1964bedd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "84962d06329f9551d99382d0584483d712c9d42e7789a9ba22679cac50c9d3e5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2ede6e720295a40a47c00b42a488a257b298024e6ce0e5a004afc8253b222796", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ce832b0ea870d6a566df9c812f2e5edacb15fa031bda1898182c496e018d0d27", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "d96ab7b9fb2eba17e868ea6177d3d8867cad5e24a7bcfc77e6a00133b2824ae2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "9d42d2c30afadd1b50e794070487b1489995a63f957da5c8448b6c555a9fcfbf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "469f3107419ad73fb78588208ee9ae4ba13ea90b66d46f88d24c9de6f63d6a34", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "32a8bbb3ca4edde22dde47f8815a1bf03c4bae5903f6cb36ea5fe377c778de5d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "54ed950eef34b0f3fdfe5436f0bc70aee697c239439d35c4e35f7199ced0a9de", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a96460dcd94c7ba3ba2ccc0a60e99a99f4361a64956d87f306175a7c665d0344", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "c8872a414ba21dc530ee77a94ebc2b5b95ab99e4a035486f2b1e5dfbf19e425e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "f06301d41ad90e13e9c37daddab4190f1b80f87f6db4bb6f09704b45eb260b15", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "86abffd0ac4f36744950900a3287c6c5d3acbf501bf19c79f1ff244d6064a915", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "93246d14488a9c9e690f6ae91afe8d433c0883608b971e25a3d13286df3e9c2b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "5f349e1e1208cfd012b89c11b5e005bdb1542520befcc2a0e279a6616667c237", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "815581bdf7b9e88e6f9ba45e6e9d835c0d1b6ed66b2daf4661bf3b0b5682ca18", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "1a82e12b1dd03819e97cef8b02a9b1467d95baebeb5da5ab49358e8dc6042ddd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c01a3328c2f1b50b8e8c965a0e7ebff5fa320ae07fbe663bada0f9adf8f52b76", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "3a440693ba8c804a6c4513b150dca6923218f14713fa7d50d5f43924b94ca874", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d52b2fa245145530950759840d5c028c113a77a2b7ba63dcc2f343606b562a1c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "001cb2c10fa20783a4c4c89c928a19a212162c07e073a05ea0017320a3cdb3af", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "c59d63addcf22917190e04515cc4f565d89f76eeb69fa62d937bbac1a9de3271", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "050e02d69187c6fba92a5473d223fb05770d3f084efc7cfc0c614372e82e5185", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "3ca97609cc3ae577abb921d922f57b8273ba744ba8039193ca65e1cb2a2775a7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "737e40dcbb49b4ccaf613cae6976a2c3b6f36edf41b0646ab1198e450d3a7b60", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "31b40a213c130d21910e574fd8eb312b8d25992ba70dd4099eb7275d33a0f146", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "adc471c7f9790bb5e9cd5cadb4aa707513827aa212f090416f834bb8678a2e24", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "594ec070b00830238e7c97bb75fa084dda4c17172ecf16de36815b7824391866", +"T3T1_fr_cardano-test_derivations.py::test_bad_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "73fc20e9c1929320579d788b7275f632b215e29a4ffe4dcd63da6df8cf3f7a16", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b259ab2bae482da96fb73590030698c945b5fe7e3bfa18267b3697b0b2d778e7", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "56c27d32ba5796d3f330ab16631b99928535627f918eb95f86045a1cd82ff9a2", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "f76ce8ea02b94257aea9f9dc1e600bf3bce129a4fa8859f466f81b8ae46e6080", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "ead27ff5627ca0c5fb50b8e5d204f5eaef0c1632f15c5cb8f3d453c843276401", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "ee701b4c42dfc45e8777dfa6e3db9d6f84a2c1204754f3959386ae2cc86d95ee", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "660494fb954bc46166949ea4ac936ad42b37b4687a1c34f2fe404624987cb807", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "7168cd6b3cec30e47991e4961af808e080fe74953de9f77ef60dab33d4c563ee", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "fc20132c179e95f0ac6d43c601ff4889d339198d7e5768f222963c9d932f3714", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "8de3f2ac056bf8327f97f6705e77d02e6f7399bbffef278dbde0a1cafe30e8da", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "35a382e8cf094a089cd309149122cb68ebfd2dc7d68d20ea968183deaed69262", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "9e0b93d184354c891a3177329afd6e403603fd6b800791616b2d8c1e5a5d7f5a", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "592ad88ad8d23a53289f8d53033f0b7daf25c42e8ef379cf0f9099cf801f020e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "af5389a1d5256706bed483f6b47fe632ea87c08b17262d3a8612102d7f87d0a5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "e21b37877a108e27796610970e672c1e6158cdf2ffbe5035090d51f526a404f9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "22b65e5ad0c65b7fe4ef180d7d628e987ba21e1fb4f4aa43f616fffc1bd352cf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cae4afc23ef20952a7cd0f2101f6832264db051706f6491021117911b566d7ec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ce39f51553349fbf7a4abb28ad053d572704b02450bd38346a68323f4b064031", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e2a39dce1b0e6442b2cd1ba416c75b07da8ecb41e41c0f7912084d3fab1cedf4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "a3987f3db4b431e30f4a57d99ea6e855188b404b632cc9231ba37cf5bee80023", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "7d3a6a1449fec5d7fa840d5c8569d9a2eb439a7906390bdf6e91a15d7ddc8fef", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "4c575bc2322ff2e4ea1b97080602d91e0fc678cf06dec3ec09a1e6a608834a9c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "d01f2770b5c7f1b3e035a1f2fb6a1f129d15d626437bed6ef78efd7295f2523f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "cd73d619ab5ac71dc50a2ed8019790e3bd764b3fa83f0bd3ef304ad42bce68b9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "15ac679f9e6b0ab6c1d88d72d19af8edd5164ecdfa1a80120c53e9125eb39a22", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "15ac679f9e6b0ab6c1d88d72d19af8edd5164ecdfa1a80120c53e9125eb39a22", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "3140260af406e1780de868eeb9a069263c31ce72fa7e892dfffaf6175805f017", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "659ee56cb0c1bca3c01817e4c53f84a0dc963692430038c2caeba687554b08e2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "23b8c104b08cccbc4549352961cf80cddff94b4006604df664a7704a01676e51", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "424ffc35fa090739067ba061e27dbd784140f46f9428d8378c87f16b9b084ed1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "2ce4bae455cc9c0b9892cfc5210c92518d28f0fe3010faa18cd8ea6490fc95e9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "4950f865c19e00f96ea046c170a7d45ae85809e6cfa1d5d5406ebaabacd7440c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "c8deef0d001418fb7f27a65e4d8cf96f27890b596ccfa0e97fcb06bcaeaec41d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "e1e9e7e285912830b89454e0441c376116c085afeb2ab09440f0f10ec78c50a5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "099b38317981dd01b02487a4e06cc0be384f61c9371386e84fc3f91bd332ac64", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "2ce4bae455cc9c0b9892cfc5210c92518d28f0fe3010faa18cd8ea6490fc95e9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "4950f865c19e00f96ea046c170a7d45ae85809e6cfa1d5d5406ebaabacd7440c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "fe081c6595e8540ba0e3dc2e8d93e05c70869423ae7e4eac4e83d0eb0d24e787", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "a4ae291a7629e5d84f5829b34fa3ed45e154fd305fb6ffa4b39796539a7ecf30", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "eb7b18c2e45c4d514dbfd0f5d66c014c0dd672ea46fa022ce999500c79366cd4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "71b4b0ea33b90cc307c4b4b8ea3ce8aa48240efe51a3b0b727fc02032b05f852", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "138f7f89cd63a25fa4f6b48c3f0ef91b89b400aace567ec6b134d4afa89776d2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "ed5d7ffc5ac365998e29b4994d8935ffb9c4a0452472f8b95b63907e15752e51", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "24a0aadc82644d5abdb7e981cee5a56f6a862ee79b607cb8eaffdab605bb9fb2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "25a17e06346ef2019f68f3490c4faa84db7eb69e60e080a737cab303dba8af6a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a0cc183b3bd4f02ce21ed7cfa02735fcce06ba3ac0247312ba0e0142902e0bd5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "81c779ad6319d5c6a9d73f6f3ec0754cc718f34b019b2b9ae0361250622be73a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "925d3ae6257c1a11ff9ed9288c928806d23cd95d77358a71c8b982ab066a3602", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "6f7c88fd6a6d24d9049e58605173534b7cf51a0bfa640c725b42959f5e52b27a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a6df9bd026137021be7733242f758cddf6c29c614976f3bc4a00c09d904c2c2f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "e702990bd95dc9808d19ef522d2a13925f6d4837382d511ac9eaa02a2ea2892f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "5082b9315cf964c1d57520f44396724e410a2aa04eb3664abb27920863e079b1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "aed70958141685a159cf97973d8138218466b1abcb7c4171e7c301d06f75aa52", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "57e20be72693183124a02bb222f166616beae8a4f6a257b827311c3c811e9aa8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "318ace359c3a03296275010ddb622dad0d2c493c313a186c01163760428eb535", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a51e3415d0c48347776acd5e29b92c9a7c95e5f33179dd017e0a1c807b99e896", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d9930746587bda156ec5747dbbd24d15ceec9d931079d755f78046f47b97535f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "58f9d1333e8146cb1623ee0a9716c2ce8db7e6b192af258d5908a9c281da5ed8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "87f03fef4985e120261458b4fe52bc0c5031f9610a6c4d21a6b7b81656c52c22", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "ed076e21eec3760c847552ac34cff32fce4b18b792e1ce2cc353a35a4329710e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "271bc3bdea9945df5e2b69e69115341bb2061060ad425f3e83f9447c5e2087b3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b8817d182fd0d378565864a61abf97abb7608513a76772cd8285fbb243457454", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "b27fa44627ce4c814bc5c4c31542d614edca6f5d3fc0718625d440d2184412d2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "4f89ab9bf00ae013b01abe9d6a7edc73d397117d104ae931ba0b4c96be8d1163", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "5c3619f8ca6fa7814a7d2231b8a6e469badb33975972b1cdcf09b580906a467c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ecbde05c45f4adcbc86006e235e94317c5dd1f7fae0e272e15dad5498c9a1ed9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "fcd803cdf6daf5b8eeae1d626da2d0540d66c8eab68783d479313f8760529378", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "53829017e42fa6b5d525c2112f40b823eb7dd4551067f3005aba6270cbe08cfe", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "982413da634ed6f02694a2ef42795fce73248a63b91162bfb0df9dfa6d7d4a4a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "89565b3f06a2fdfe3e35b122b903bdd0c8cdb8d61770ad2e940597eeba46a61e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "64efcbe5bbd0b4f5f94c0ea96ae8e3a6a81d0f1ba3739593f0cb0736cd0b8d89", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "5db76753c0f2c9c5a69ed0dc306f9f0a1f185ed6a481efd0f6a7cd6a0da10ef1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "5c6911c5af32d28c894ea385708545f12bec7a64b6d8258f4179e6f1d0bb19a1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "9b2a11e0b9d30c4807f3939419f473c8fd57d49e24a2de17edbde48914327aa6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7d1361b5223231576951b769e0ff7e1b6e329fc4f69590e3525e144a2c801dfa", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "71d8c35ba20b7988d572b6b3628801e08d3b0eeb6266a54e0ff886f592536ff4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e86e0a369ef50a13b2d2b2e4dc37dd88fec980041428cf613c1915199b80a92", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "bbec8245fa29c8802c776f203df8df6eb358d32db43cc3be1a0af6f1a0eb56d2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "73ce25e3ca53d324ecbd92ec2b6d6da288d3d2a19837b3b1ac4979ade4c4c4b5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0a2c9467cd8c2f50f746364a0eb89ff2842af1d761820263c3ac76f8175d497c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "f52b56905c1219933e3937166f621b8ee6948547142fc914cd4e6408761f7dd5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "bfa7b69740e796a50889b5c9d7f500f953041439881c35a08d4be79534c56753", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "b7d1f3be1b5093cab7f702749a41999ad8e57b68366e504ed022187739a5df75", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "30c6413dea0cd76727bdfccb459d7a92699b42d2d2945b7ce72bef7357cef338", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d55f31f4ae896f65c648075359a811fe786e105806db02a631c78d7551e073dc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d86b11138fd58dc4a9e696fb5fd885f75a163956bd6a7e8eabcbc46ce6c47588", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "fdc932dd525514d77fd6a4b4860ccbbbf7fd4f09ec2e05a10da3bc683c799b63", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "c1eb6bf808971e48eb7d0a412ad02945575970850ed7f15cfe88c6722b428ca3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "34ee50169604585e784e2ac0762e8bba4832fa65ec7bfffaa1ef15d1f2ac6fd9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "34ee50169604585e784e2ac0762e8bba4832fa65ec7bfffaa1ef15d1f2ac6fd9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "9f14ca988755fa51512077e00821891d6080c7db1583314e770113f380146d3c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6efbf1a4744914cd57c1a0952b9a6d5edfcbc10e9bb851894ffe0fa191a0faa1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6efbf1a4744914cd57c1a0952b9a6d5edfcbc10e9bb851894ffe0fa191a0faa1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "146c0bac8341ff22e1a48793f548ad6469351fa7f00fc4a9a30cc8357705189b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "be1a1a6bc287f3af45b59a24ef3998ba5e5bfa2e5458acf4f64fb97853b69956", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "bcc774b346d9dfdcb34e4c4a0c4b0c2f3675caf7049ab87dc9a3b504f9962870", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9de8394d50f081f250084f689a09eaa1a79d2e9f09a0cbc61b18e80f68d17d11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "04fad3612cd0e052159e824b61fc661444deb465c17e76cf2f432ba40b5a5c5e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "37c96316f5c199a27a2cdccea5f29f981cc73198d340ed6cce9ea3d28330ea75", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2e8a0c320a7e4652c43956a2f9c4070b2d6e1fa077e11f6d468c9508ea85925d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "7fa07a0f21083a921b9eaf7d970540613e53bc1fdbe9e63f84695c184ff4e2ec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "038b8fbed0769ca657b5265341be15ccbfd7fd7e90d42970049e75e89d0a6cd0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "af5389a1d5256706bed483f6b47fe632ea87c08b17262d3a8612102d7f87d0a5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "a3987f3db4b431e30f4a57d99ea6e855188b404b632cc9231ba37cf5bee80023", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "b10f1dd1bfc5cbbd3bd623d54270e406a16eafe6deac05480d82a9dedb4489b4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "1bb66183ac5e8d595147ac9e9fed9522a42acbb8d141666e95bb060a4e1660da", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "1bb66183ac5e8d595147ac9e9fed9522a42acbb8d141666e95bb060a4e1660da", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "ef6e1ad4f9d56a206724e67a2a9e0b68cffd818396a7aa146448c94daea09013", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "6436c8286dd13a12805a1d6de43b26f518e1a19b7dd4ad1d2e9c0fa4afbff850", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "82e41b3803e60aa6a52398413cf20f16c063fe82ab7eec3c9b44e7029cc7fa6f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d7b4b04789ffc2c120e0c52a7ad9bfa8410e3968f4b1d39cbcb95f0f877f2b20", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "bdd48f310445455573d8b89d02fa0f71222588a643b4d23c6fe23f57170ec2a9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "419c7a45002bfd972baa00e0e8aba263095aadd775507013f6eb03733a710e04", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "5d22bd28379e8e32c4a10c050bed34510721ee7802a2a7ea38a8528710cc6aa7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "5d22bd28379e8e32c4a10c050bed34510721ee7802a2a7ea38a8528710cc6aa7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "5d22bd28379e8e32c4a10c050bed34510721ee7802a2a7ea38a8528710cc6aa7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "5d22bd28379e8e32c4a10c050bed34510721ee7802a2a7ea38a8528710cc6aa7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d7b4b04789ffc2c120e0c52a7ad9bfa8410e3968f4b1d39cbcb95f0f877f2b20", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e55413c04dcc4eeed38acb929da44984d6587c6d55358865396728d9e28fb9e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "9b97ef90e13edc6292e46ec688de96c6da77649108c0339b406b91204c2cc37d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "bf1777bddf82b210656c7e10718dc93868991097f3831cb6969493a77be09206", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "42094de427049471f0a7560c5e64e38a5216ff9e35863a8c2a311045ec2bb70f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "5b4b171a1e50b1f18d00f590b4da2ee026c3ddf3dc70aaed38576ed8c634eecd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "1293caa60b963557111203edb47a5f5a0ad6ccb676340169a3fdc63fc9e788ea", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "cb6390e2fc2808093e82f3eb3f82d60793d11adbd1c69256d9046d694f20a3ee", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "8edd173c295ea53ed11abecd75a8d5d30df5a75b958464ec2e70a5137e360cf7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "3dafdd848a3b6070eb06ac712faeba8f1feb14dc451a10ed65eb09c9b3df375d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "b5af066a262285f8e00dde563a48a1df4d70e2d027bec52eab845126d3561e42", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "28974a23ec7b863a7b63765d4d3e602fdda729169e3417c94adef0ae75aaf3bc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "1bb66183ac5e8d595147ac9e9fed9522a42acbb8d141666e95bb060a4e1660da", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "82def8314b299daa517c6a09ce3b31c31653ef60bc199f490b7bb25257ad450f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "afb4df96dacd2e744c8c44f24296fc6ff772c47f514c8251116721f88ae9ce38", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "cecb6bd29adcf2efccdfd93364430480d4912edd537936ff81fc7b1f80605b37", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "375d546aa44d6cb5a32cb16f3e5c5352b823e76332a4de1109680dd003519579", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "0cf0fe906e12739bf348693823cf45d4c3c5f8044a4dda6e4280aa4a3cbc0b64", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", +"T3T1_fr_ethereum-test_definitions.py::test_builtin": "36a9ff6a5dbbdc2b6e84dff2ceb4d037cc7f9ea128bd8f5612d29c124bad0698", +"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "af729a7b312f74ea1400b0ad459b58e9b308abd4ddf16ab7be4cb0e3981f7c57", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "878a36e49d7727a0771fe048cdfcc53c101e55c9a09083339933fe336b0c7de5", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "19b66452287e8e41c9be40c6049e3963a04599563b9dbf9bf30cf12d9f0c555b", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "943fa0c22d708e2b684b244066634e06adb7ec134886611d432b33b41bcf3fda", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "37efb05a193767ea30e11385b8b1921dc446dbfa7f59ec0b319f770d3e698d45", +"T3T1_fr_ethereum-test_definitions.py::test_external_token": "47d4f3fed9bdc2e84b3a1aaa7bcb92dc7cc469bb1f3ac0658da3fa19b162255e", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5acbe0523099ad0fa5052d37b4bf2809a1c95452882be97781ebcf6a2e7baa48", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "897dec6bc960094a9495a61f0b648f36bdff0bd0939275ac050b43ef38107526", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d3f71243eb09299ba58e7ab8a6469ddd65babfbe0a78c44513974d67cbbd92d0", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "1ef7ce0c01ff0f88be1b9bc46c83afa663b00c0708d59260a9e03f727cf9b627", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "bc0973c8afbb17f7891f386a31f4430e35bba6ba8fbef6a0f8381fa121fb8d83", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "ecd4c10609683553a39f701f0f6d67970458670be54d581eeb594c7e100963f9", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "192114b67dc48bcee4746189e1e17ae1ec74ff9bfc3046f7a493a0af15c6699f", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "05a8150448fe7171ef0a757bac4dfa8cc5a65ab5f05812ddb641e1b23585fc34", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "a58263a48ef2ca6ef3aa284fba244c11eb95865c432f5d22450ec5fa86b757ab", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "eb9c0ff089a0f264bdf096bd4d43f6303ef64619c951b9a517e22c8dd3af835a", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "479711e4a3978dd8960266a35cfa8e8023cd6b9cc98e795aba39336872f50576", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "333fddeb636e2028a2eaf5125031b8e879c910a1c0b2435116a61490eccc50fe", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f41cb06de002b7f254433f0e46cd2a1251e88794fe5dd5a9ee33d88371c98dc7", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "b5698819789cc99148fae67c73b0a986dcdf657b4e17cff03cb1e8ecbf47c40b", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "8ae7d5f9de91f14aa8c4cf2ce1f7f286c092c8a5f118ed5ee7cd146b26b62283", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "573ad6e4d7519121b4a8d6f2aad3109960f298104f1130c57e0007b170f89e03", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "ec7e9fabf871cb857e7d25c4c95376eb0e84d122dd0c16ace93e035590919271", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "6d26ebbe7700ace402514828a7de479a5a0442d3338c5ed4d6b351c4fcdaaa8a", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "4761095aa563060ed6e5a8d2800b0aebe58e50de0707c8ccfb82c2e3cde9374d", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "41f0a8df018243ec31a548b2938e1a0b98eb1027d823cfb010be5d0b2ff0bd54", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "a44ed6dbce0adec2d9b2110a67bc0559b1d3a760a52748204d8ad5e788b03718", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "271e0fbdf91d0a7028eaf92327e89a8c2eb5ba9a58374f1de2ec3b5750aff715", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "f17dfba1e51f314631c0a701478a36e08c7f74b2b5400a5d16942aa165168566", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "41f0a8df018243ec31a548b2938e1a0b98eb1027d823cfb010be5d0b2ff0bd54", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "41f0a8df018243ec31a548b2938e1a0b98eb1027d823cfb010be5d0b2ff0bd54", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "41f0a8df018243ec31a548b2938e1a0b98eb1027d823cfb010be5d0b2ff0bd54", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "9a4bb04445e0fe3e5ac597a15d6c950e94d4c33af2d876ccaa3b093a948b55d6", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "7a4adb3780eb340df5a5dcce52a93ca2c9c18e66dc6e7c57150c06b6a130542c", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3824f692a1a9ce7672edef1799f7605aa5473f288932ce15ec4ed9047fa61ada", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "52fcf47de94efcc3672338f7e00a027d3f780f4aed3589d329692568de83d9eb", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "57593930a2eed629910e9881a706699d54362a0dfc7fdffca646288e5cbb5f5f", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "24ae915ab55455fe5c38d4ae809d6b1813671a24d2fd710eb0f8ab0a64b332d8", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6abf99fbb05e63ed1c9f9e6adfcd2b7b85eb07241f304a3d8d35a45fae90d98d", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1d239dcaa8259b27614c93ab1c0cf2bc7d690c4d071c19e944515d048c4b3d50", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "bef35b46c9ab4edf4f5b9ab4aba141df72be14b1bc139c25d601d8d9ee7e7881", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "cc07f16ca620c8ff3302b45cb6140a700e3d803f0d01eb3ff27ab3a7125a09ec", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "ce64caa128dfba4302e29a723d0ebb4bae16990120588f8f83f0572ed0215554", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "6e2c8a6efa391e775b9a64b249147d04dca9eac515024d0fe4e9a9bd7954eced", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "4242f07abdd343bbcc0f3fe0ad878169dd03a749ef6d2335df45e91e8fe6e309", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "33fba7c72f8384938aea6ef440baf60ad10243669cb22a1d663701d437aade7f", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "1b4cf081b7fc31401dbe6d8e27c51e15741e421bb63c75621fa2cc69c687583d", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "ea9ca8775e1a938ef9a6e119547f46f8267044bb5d35d9e9431dd09ece4d763a", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9af6ef497759ef99982bc2435f68fb6b966cf625e29c881092ad76d2e6239e90", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "83a268d1d5b8861927b1b81a2a1022070b3e2a5a8b61c06f05ca37f41479a6f8", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "ce64caa128dfba4302e29a723d0ebb4bae16990120588f8f83f0572ed0215554", +"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "8252d8f8c805869c658b151701984b0244aae7948be24fc09c9e9ada8aa570d9", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "a09fefc027d05faeb2635273f7023a400437950e036416067bf0ecd32d0380d9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0f5618dc4b1466668854eda610cba7fe6631ddfdbe5cdbf689659035488810c2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "46c202828d811e66b9af63369c87f3efc2606666db12c29c3c6caa9a886abd9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0f5618dc4b1466668854eda610cba7fe6631ddfdbe5cdbf689659035488810c2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "9f8695e1f82ec144c84988d94a42cbea04f69cf7e41041ade3c9f06ed0104c07", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "9f8695e1f82ec144c84988d94a42cbea04f69cf7e41041ade3c9f06ed0104c07", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "8a22fb14ea2d19e50dadcf080623e434d98009250f09d848c31603631e530dad", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4052a27c01e44a1804b45a043c248e7ce4fe8969ba9f7ad4a7fef08a76f04b3a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1d79f95e7c5d14c5a62b64d297986bcf1a60ee4d6f98f9097734cd9e785a826d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "477094ddd9091501fa4e11989e45c9836524cbf4412a156000eccd3642e8b5a2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7b1f9cc39b14f3a5d245ac1114ac25356766937d37d353906689fcbffe4ca8d0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d1c20c08c3285ebb4b2c9ae77ee3e6244eb167a024ae10a443b5ea86efb37527", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5c6c274f7dd373badf2160260d4f64499a1801f10da9fd890ff0ed4a90b7ebd8", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "d6017fb22feb15d9475967ac1b11778924b7552e88cd4a95ebc39355b1634e13", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ddc487ca41cedb7cdea05a96c69de8fecf1f7304bb4151c10d0b56f7f7f5d061", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "fba2499b6bb776bde8175994d5e66eb3a79946f3ba3a46592d6453fbdd7ebdb4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ddc487ca41cedb7cdea05a96c69de8fecf1f7304bb4151c10d0b56f7f7f5d061", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "4ad8af99cd40647aac27b4c62149d307918a8307ac3d03c9082b085dd9badfe0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "4ad8af99cd40647aac27b4c62149d307918a8307ac3d03c9082b085dd9badfe0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "c74b25dca135954fabb72c636efb7e43eb9f358a1159198739a24d3c9acee8f0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "a5f1c84c246598913fee47537497e7b3afe9301078880dfe29c015c97f04e67e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "3b250f3bc93089980ff59927768207dc6fc790631e9e6424fac235c05f45cb64", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "477094ddd9091501fa4e11989e45c9836524cbf4412a156000eccd3642e8b5a2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8723f1bd984996f6bd05b5edbdd4f74bdc637964a49b318294d958aa31510777", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "3c6d6a1b6cb741b15f93270f7a6826956c1e7fe272887409d517b1c1b0f7aec1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "27532c5f38a483a5614c1e49c6b6de53dc9cd97d1fa1806f4441173777d0fe65", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "b7c43da4bac8403f404017c063173f6cc9394f83767041fba3198104dedadff1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "6811ef3786acab3c125f52fc091b981ea565fbdd49f27241a19de5d6c5d82f5e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "858e2f72f49547be22590227065da51b3db9e6f4bcc559d80986f6290215b6fc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7b1f9cc39b14f3a5d245ac1114ac25356766937d37d353906689fcbffe4ca8d0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "8a22fb14ea2d19e50dadcf080623e434d98009250f09d848c31603631e530dad", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "a95c8a8b06a9d08e1c7b34e2d7e64b3bdb362c8f571af1e031e8713e66200233", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1d79f95e7c5d14c5a62b64d297986bcf1a60ee4d6f98f9097734cd9e785a826d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "5d1af00249070c7ecc26d35217fb2ab0ff1f839e8b7994f0d4b748f270fee0c2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4cfc8525e9cffd37cd185ac63ad7162421d644dc39c6902d89187d81067f3c44", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7b1f9cc39b14f3a5d245ac1114ac25356766937d37d353906689fcbffe4ca8d0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8723f1bd984996f6bd05b5edbdd4f74bdc637964a49b318294d958aa31510777", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "c74b25dca135954fabb72c636efb7e43eb9f358a1159198739a24d3c9acee8f0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "a8025a0c5003ff1b7a2760bdda408a4c141f58bae91699e92a0522a3781af87b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "3b250f3bc93089980ff59927768207dc6fc790631e9e6424fac235c05f45cb64", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "3138e483bc0f2e582c0ef6f7c780d323dba102b2a9f6db9f1f9e1c1f0e595265", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8adef9ff6bb8cf20e06fb4c458fc550bc17e94c7e5f53e7219da3ac2d9352b93", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8723f1bd984996f6bd05b5edbdd4f74bdc637964a49b318294d958aa31510777", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "cfbbf7ab7a01f297b2ef8f85cb09bbda0fd83f4abc17e1539a645c1530c08cba", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "cfbbf7ab7a01f297b2ef8f85cb09bbda0fd83f4abc17e1539a645c1530c08cba", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "a2327f9a87a0121a399b8b0a4227cce37fa06542e1a8cd090ff0bba00bb4b7bf", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "94154e3d86fa4b06fd005ce8e5d34f11dd05ef0e9b03872876fe697673ee706b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "97aadb21b412ea8bf48cade97daed123efd2536ed9f91d596227ef91b83a87b4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "97aadb21b412ea8bf48cade97daed123efd2536ed9f91d596227ef91b83a87b4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "5dfe63e8198fb02a7c4ce96859cec0aad5a0782601c6bc3982892a3fdd2708be", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "5dfe63e8198fb02a7c4ce96859cec0aad5a0782601c6bc3982892a3fdd2708be", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "05d4fb27b291e1c9c2d4d2af6e87fcee089c1aecf6069323411bc2bfe8cbda14", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "05d4fb27b291e1c9c2d4d2af6e87fcee089c1aecf6069323411bc2bfe8cbda14", +"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "795cb9e2c97e96bba9f1c44a962289295bbeb921531ce32b2c1cae1b8457a05c", +"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "795cb9e2c97e96bba9f1c44a962289295bbeb921531ce32b2c1cae1b8457a05c", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "feeef84a1e74033e8665a4d89265e937c2e277606aa882898566e8b020ff3b1d", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "eb54514d86e0112fd09cd30c74ebb06e0c0526b238d52cb4dd87d0f2f661d81a", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "c51062ae24902edc72261c820104c280e44caccd9630bbf08d40cb99eed61c83", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "ece4344a351f81a7e932edbef399c02a8e8531a836ebb4b271f56808355ce885", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a35ae7db33f6352e0533df4e28e5bc447f2c97b15487144fc834eef2ccb27acf", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "e38accd30ba37ed26517debc8a93551fecd9944b7afb58dad6e08776441c76ce", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "9128c8f3ece11aefcac64fb0d3ff358b490868e75287c1578008180ac879f0bf", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "ac29081ff0e9436d13e1cd83ff73907fa3bed1393709720f0cca699fb5a73777", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "dfe3b7c30402288950383a5e5d1d9ef417a3efec3b40d8a58aa76de0599d402f", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "b6d13c877d2dd1e799eda7ab16e23e760be5b4197fef6eb4ffdbebf58eebdda8", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "909d181270a3b0f88a53baf806398dd834f2a876bf12c39ac23bba994c9ecffa", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2e7e440ca75b1482e53b8d5b65a8c9b0c64acd70bc748876fb735b9f649519e1", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "358748d0bd543794591e432ea64ab356c58990c673a488aee5d5858bc34d84eb", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "c5467e7c077c82c5b4931e867d69097f9912097554d449930c1e112d88e42c50", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "0f9a4999dc1c766233530c58e441f28a686e61cfa274e0c73d6849dd607cadbe", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ae9d7d7f371208c74f9d71291fc3950eb7fa1d918cebf05021fe8d782b29c01a", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "098b5da32c78726e377e13cc6b01ccd0f906ed673b0060e707f3b87a5607a70d", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", +"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "9f2d63208ea7ccf264a57fffcaf19f3c36942971f7f865ea5def2b82d5541c72", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "2e169645c2e73193d19645350f2f7a4cf72d94ab3b8f302e6d69f58a4afe44f3", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "58434b1d22c06ad8d695314e248a7aea3f0e7e188be91f30ad99160f36fbd89e", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "0f1f17cf277a11031118a6a845f277ffc949d90fc75631f48b9764aef3737099", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "8a058fbaac46b313a3354b8fefebf2a0833030e35a165d915d1cbb2f0c10d920", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "4431673da390071f936d1455cd4b51bda7d56d2f5a21ad6601f4230fb43e4ca7", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "2a7668dc84abeee12b31e95af2aa36f3c7b351d4fa336047a1212f0959d06d04", +"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0031ebf3d1f85ac9600100b4f6aba2ac6d944a3164eb05cdc860ce113b6eb733", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8a37daf2353904bc34cb622b2c8b3c2773c34f4d2fa31cdad82dce30c463e23a", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6c8915a1392b9ba8ce9dc98ef8eea44c58f0a2e8514ecad2a6c66e0dcb027951", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ce9d23617e3a4485ac57b5f64960d10698414543eb30329ec1eff5eab71b6d84", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "54e7c93d73283b8525441469ab1913a28762a00d0ffadf1b554c988e443e7415", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "70f9d7b04e7d8bc2608b0dd9e0987cd88fa8686d769e90c47f47f0c46d697011", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "71c7ce7946f2f04c60752c81ce0e42958bb85bcb80fc4b605b207df32c4347bf", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3cb7e0308c8d3965c74ebe177cdb9607d6bdf42e5342d40e5f58ee3960cae693", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c32e6f892859297b09c64c562009f31f9e00ff776ff2e8fc0bbfa423961021ef", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "b203f622b903de356cd4039a6d0a21fdf43b1baf366aa0021f19e492aa0b8b4d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4de1a87cf18c89b53a2102e7c4381f7b0ac438c8e045edf09c833c7526290240", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2b6fb00720e8d7f5fc1c767828ffd3c6d40283238ff7cd9b74e695c94ef77c7d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "de241519be8da504c92049502ed20349e96cde52b50f5d34260fca9518de42a6", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "6f9cfaf3411c3f8319a65295801b30504ad7ef459df65bfb8f1edf54e7eba305", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7a0f818fd1e4a26b9210cbec49efe882a769770fd8adfbd8620c6ac6e37655a1", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "434ff1722975e94acc087c80a41bfa848a4a88ec8762331f260f39d41cc0528f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "71c7ce7946f2f04c60752c81ce0e42958bb85bcb80fc4b605b207df32c4347bf", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2af95582dc42448aab09f85c1a1cace6a6d158081444ada1ca213802e3e5f1a7", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "cd0d4bf4f7c59d1222bd24de3400c6e74a4e2278ca888705ce266d66605a847e", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "2ac7c4fa95b0753bf96f7610d74eb73e0019b4786af9c818fa87a04cb3870144", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a8f4f16e02e5f4e67b9d9386292ea13390583cc67cd4eef424707d5d8199a106", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9dda356ce680abac4a6a3e1bb947ec611051ed8154b4f7370843b94c4968d92c", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "17db46f4319b63df47720fe27176e7b2209a65fd5dc927f5c9725edc8544b03a", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9f4ee18abb255555c89e3ab730f3af175a552b42a228a1219a73c54cc333ddc3", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "df507b0d7126f8d901c248acb535837c2c023640766dea28a28ec08553adda45", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "d1fc2811ed300d5bfe1e0861120cd5adfbaa66761b24ff2e64eb59d7e922e2a8", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5f7bf1ad50a6bde16357bd0c352bbc5d06bb99b0bf87f7f641d330ba83d02373", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f5af46d9e60d47807c2e48bf08a55732ba85bd1fd85a0c108de73a34128f2ab8", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "44b36438f196ea0f6545a1bdc8eb484236b0c2cea5d34210598a971dd3e76d0b", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "70c1ab66695a22ba2e21b52315694b978d6d6a72e2bb7f44e98e7e75fed4b56e", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "04543179422435480135ea5d3d4116732ac70721c587f100ac085005d3c5b4c6", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "717cfd0e78eea4147b73181368c5fc008ab9923e1f6de1822ea61fe7692ccf54", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "42cb8d9412b0bcaba931df153a18ae7a9756990b4b26f0ec34eb0e509bb23bb8", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "20c120920eb6408c69a6f0c458f0ec156354afd8d95abb411eb1115c5923a5d4", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c9d7f7d483631af61df1a223151a7002262cabf62955d520cb31aea4e691f2e8", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "810db838dd9d738d88e3205218383eccc9d2a810af7913942bcfa5690f24d48c", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "db6528bf8d39fc477374acaa211d834e303043794d3d77ebbb06bf44bb906bb2", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "d4012c0bfa057626a70559737f3c7e2169689c3e9ca874b837977b510e1f8ce5", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e2f180f82bc691e0cefff4300d164e055c6cea2c7fe5310c979b6d1b8fcc948c", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c95bd6a8cb80dd299c84cee22e7a062cce156929d2500231eed99d4354f23d4a", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "0369731d256cc3d2bd9f5eddac4668ac2807ba46020750ada02d88752f3335b1", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7f366551f9858798a2a9597cf802e27e79622db5a74b26ea22c313e18e188970", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a88093c31618e6f65c72ceaa256d27b76e50e2139146804cd20d12c7c4d3ebed", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bf06049d012111541835807140eba7f7ce5922aa9d5dfa6b8f7a47fa4a20c119", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "49e41a30c55fc3b7e34401cd694a7577b8629d1584061e9dde3b93a645217bf7", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b6a25f536a57b08477ac68373e9e90fb4f2b6a15d684e0a7dec5baba2e9a80c4", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "35f9fcb0c85c36f6411827a83f00fe4a97b1caf533446bc35f667eeed73fb9d6", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8e5c4239f52b95c808db82644091bc3e3631f44153a1cd408b8b65fe301bfbf5", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2ff7e359a8dd49215861838ef1c91c4cd194c68bc3699e9f3253159008f6afe5", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "110d596884fcbf9482666220516f255c4718771cce484f6b6e06a7dc2be41e0d", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "37dab03bcf32b27eca3223a0b82824601bbc8bbdcc90f83c239870ee6f29f267", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "41dc8cb58cb9f4ca594f1a642202d09efa101617d48baf168fc72a5bc92e2cbf", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "99807e782689927ceee97f5ac488ab0657760d4aa19ca6260229b0b81d43b7b2", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "e5731801f5a7f572556c3a823f4053dcb2fa2b9243bfb7014ae251f12d638679", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d5d542e86f6da953354f5a07ba479155bd6f770038a033b956a05b902f960177", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "54ea1879eaa331159e97adfe6b1ccb1d52602f42bba3531acd7d2cdfe29a861d", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "3573cd7a723733000eacd3f44ba62b03fd20e25beb734ab43c10538804e170f2", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "117d4822d99e0d02e278343df79df49af3bcb8abaeedfa023f038fcfaf1cda04", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "54ea1879eaa331159e97adfe6b1ccb1d52602f42bba3531acd7d2cdfe29a861d", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3573cd7a723733000eacd3f44ba62b03fd20e25beb734ab43c10538804e170f2", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "117d4822d99e0d02e278343df79df49af3bcb8abaeedfa023f038fcfaf1cda04", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e4047afec5c89c9f4ac3bb6c7d31ae8114adc70990bd74279af2dc124e838c70", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "7a83349577a62cb88baf3a42f9e887993a47de7f981127da71d9ed6bac0f147d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "0d8fe329494ac328f46510a4a3f3207c360cc16433f81089175aec58556e9741", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "498b23b8902340d94da3356428144fd826cd290249df52c9e8bb4bd42f9cbbcf", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c9d717c19cdc93fe4c715b63058068d9e2e5ed10d1bc95ac627025e5a1b1d649", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "8c83f62959a972e926c516f37af31d51d30c9473cebdd0a5a545e402e18f771c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "246828791d780f2db0c6a993066a77e744ce7613023c1809cdccc25baae9f7f4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "81d1dd179147d0229ec64bbcc4de811e8e2daa5d0f5cb9d21ac40d0599df33d8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "72af02c66717e10693abdcbfe42eeb382d528e2deac0853f8d19f282d4a61ce5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "0671b3644a9407eddb1407643c55e3e7315dd864ba8a72d257c02ed853266879", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4fc1ddf0a7b106ae8c5602333eed2188ae905f5c60f48e14533528e7532250cd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "a44a0d0125f9f357637bb11afb2d98b26170837679140e30f1621600e3c5f539", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "d1ef05c41c78c4762a56b4dc8e5c4b48bef9f1179a1c4707c19649f1caf38d17", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "cd72a3cdb805314f4ebb31f7720845f7a7994b31b9f2cc06839b9918b64d363c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "21d3acc3c4bad38819309c1edf377d4febbebc59cf778dab98b902e1b7f43f6e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "48c07aa39fe510e8e1ec637c07ba06d2e42de023dd2c5fe7fa2430a60ee5d1b4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "fb4dbccf6467c404f573dc17f8240709af2ba0bfe12149bc5bf3ebc173103ae1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "39291b327c76dd3191ea917d59e5419ac3e2c3c395f43f960ffb999431158f64", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "a8f5e9d712927ffafd795a0681d11bc05a790b9beccbc4ad03809f32b0565a94", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "45382d15fe4b22fe03c7439cc10763e1ab5ae34b9409de052677a416ad1c5dbe", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "eaf1652fee08ab3f83680cca8727b8c66864f7d9dc04ceeaed9cac5969c658b2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "eaf1652fee08ab3f83680cca8727b8c66864f7d9dc04ceeaed9cac5969c658b2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "dadeceb6a2ca29c94121a938d21934ba04fec2bd9ee0b6e2e0f56d1e5127cc91", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "673b69b79a37aa1248d321b689a32d07b7a70021102c08d354c57fa5d5a853f3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "3ed9059fd8f5b3102186ee4ea735b281549f01423451e9446aaae2d30fbb494e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "07ea59c36209aa47efd219df0c20de5ce5487d5ea3a1a9a28310c9113ceec80c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "ecb6f4c6f1a8323c748541b16538a7e08c28169af1689f5efaf8fa3b041b1883", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "ccdbc473323b648054c71ace2c607d411aba88b25f745b10042e4742605d3cde", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "b5b739871e7f411bedcecd7c8d0576f9b26b39365148ddcd46be8c5de1486154", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "133e4180cdf4936e9a2b0d9d956f523bbfda7a04de81f4ecfe7f211d3b694d66", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "7a1ec0fe4bccf3e72f4b8afdf577ecb3b2419da57eebfab059f97fdb40ed4f1f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "16bf47cf0f7562757d02bae25bdbbe0277626827d4783ffdc417c2b282c83d79", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "c011e58956baae329d36dc0ce0b0c697dad705b09813c3e4535bea58cd1b1360", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "b7d2f58d313e4682102349b053cfacb3df4fb1adf612c2c3a96bccd30d4b6b44", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "f48bf269071a05b6869e9821b5b39da47cdddaa4a55448c664df64acd5792040", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "0810ee45484fa6045307680db5f56b3d48fba094e8fc594ba78b77f7d3b4ef2a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "90d7960007c08e6a76a529674e1084c760fbc2810227e9661ce940c350a4a6a3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "d9da31aa851e7bc91729b99ab0033a9415454d2605ee1c1f1ad988504bdd4023", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "6dbe18ea79b31ad44790d954f0548ae75bae678297d88b2e9b82ebe66bfe2c6a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3f2d39c5c8b045378467a66939cb7716c599cebcc11757475f29f4f85e326f38", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "5ca75bb5ac8b0f41bc0f1d5ee5b3d8e7b82a62e9fa0d709bf77719ff3fead0d1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ced8f602b80c4bb313948eb03b8f4ce37bbd3f591d77127ce45dac6487684c7c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "e1205647441720e7bc12eedbde28831cca6a7a47b75fc3e385762603290c313b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "914adf364a3376d2278ab36020944699a5566bb1906753c04d554c1e6189412b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "30678f161c2449343e7f01bf96543268c8944986dcc84bda7c2c021719d2f77d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cd5a29aae047a63744362a722f09fa32e753a425d98188491adb6000f63902ba", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0e873757383e625fee7888b25108f80f4f8d964b080259bba6a483a13e03cba3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "c6635987e7c5f9d2a1f346a366e5bad064f1ed5a0b2dacc79a541596668ba5fd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "43b1286def9ab198c004d418f36eee074be68914575ffef9e78c9b768d260abc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c3fccf7e9b18fb3dda23bd2b659a065b5568b79e9fb17fcb730dc54afd3b52c8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "30893cd567984e966257c728d0e4499c1db72886ac1ada9b75bb644b97c92b49", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "84adb2233fa010f4c0a2e56eb6b795a37ca53ece1ed9c37a6efaacc5d1460700", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "c60f4b10c0bcc9e4f377d3f3ecc0678807c1ab93c79f5b9b7df7604a1741b510", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "dfbcf5599eec940358909f5d71780984dcf52a8e1c11f9fe3551fc37839ef957", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "613be751eed72283897783e822de6b4177651ea84eb72e4e509810b6ed351cf8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "be4d7a03ad6fbb3305e10c246be80ce49972058626e6d325ad7349bab0b4710b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "b3bb24caa5cf38f5157b3bb4528cc9e0ee471b4fb50d5a8c584ee921c0076060", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "732165637afcdca5c37e1ff1378e7ba0727afa36e1be57464035abd57eb64995", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "28a21480aee01437ae0de0fc09cebe6dcda9cc32a0278ebab6e984d8d12c658d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "3ed9059fd8f5b3102186ee4ea735b281549f01423451e9446aaae2d30fbb494e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "f5dc86def5c60f3dbbd7aee88f7b5e21a48991896d3208a712c332970a19e5ae", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "0b82611326bd89701a6ccfd263675b4213f4891e0eda0843368122ca14d7e746", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "04ff5da8d0cf95fd62bbe75195c0e4eee759708d232d5d217cb205d7e83ab959", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2696732dd6a2d4e11b7a0df1b03b475927ef075e9cdec721b2106a9130e44666", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "e9f75ac24b409309fc7f3d1b2ed1e01eab70fe113436edf9503b7a21c4d1ad57", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f2f81a53865c2764c88b5bbcedfb0e5aa49351b7b4407ebc499ad3299bde3712", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "9bc6727f7259109071f5d9be95bb3d3c4a04eca5d24f319d079ac6eefe7cd66d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "6d66fe53323db9b20c35bc35cf3a6f1b3843694c66677f9cf5f70c911a651c15", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "98fcabbf2fd2a263c96ea5fbe87834accac16956b6803abad345f4933458a342", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "c549fcbee679ed387661e69745dbfc02d2947f9758ee093ee5f7d65ea86a68a5", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a9d9aa850e0dc9f499063aab247cb085f0eac146dbf4b87e693916ea588e83e4", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "9ca1f121ca849a7196a8e9a604f9ddbee3429e34887d13ac1ce7920ff61eaae2", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "d7c3a90a3a628aa607c72093055d5eacfca8cf992798d983d380d2349069d7eb", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "b6f555b4c7ed0fcebf8dac50db68effc95c85f14e83a04736295580213c2289c", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8009745b74f61ba31665e3be97f17454699ccd6c9709c427afba12ba8780298b", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "286eb72727e01c820a85a9789002493b8f18e1da7465abbf1ae4d1c89be391c9", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "828cea0ad498570bed961ebed0bdbe3a9fa1f36931fbc04041628f0e632dabe6", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "b885c89be65a174664eb798112d22f649322707af4a473d3b7534b3bed3fc7b9", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d6e42ab30a7ff0c6291c466b43ab14c63285f3bcb7ade7f1c6314600a22cf2bd", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "272ea49435b7f6231a483b2bc2684d3ae43bd89f5e273b590aae51f2ad92372c", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "9b61acedd0f04c31d1649d38f05abbf19ae1ff02845b1fe6b7964bc2320c4390", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "447a14cbc0a915e615ec479a36a93c9bdc6a625cca6366db6cc1421bb852a29e", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "854601b9281a62a5b0cb878dbb6a7a21afd90599b4563f559a28acda80ec7d50", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ab623ad45b74ea03e607cf5f72b96a4e7e557c5920ab930f27f99862540e7bc9", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a79e275bbdb38242f3566af9fb43527da39f9a2ebc0dd694fb4640a58ef63aba", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a9c76f53d5bf6f922ce45265aa751178a0500d23c8a1864296f75d610d739794", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a1e71659bdbe631b66970708f001a4b7cc43274506f0d715ca2be85f64d54df2", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "d5c4d6469bfc629a642ff0b39c9e80647a4ca01003ccdcbc3147dcbd870a48f4", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c88bd52810306c59b72db19d40eca9a295a18ae649de4662b5be8a821072d1c2", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "76e913f8b1aaafab106cb28c28552fcf58dd820b21edeb447685fd1ab917cdc0", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "ed18662dba8f57fce37020dcba58c71ee0b21757b9ac3c202d2961525155dbd8", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8b32689ca556b1f3cca021075d5775b3c92f54a4e005eea594c4ab485930166c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "93c37c6469cf29cd710e9edf572da08a4e0713f1222564608241aff772762874", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "bacd7b5a04530e6a0ab8c9f04f71c3586646c9b953815032f8731ff903e9224d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "5e8b3301f8f9a81ebd3fd1b0417bc51ba9de7c08dcf96fd3a857fa648f53e10a", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "81d77c42b46eaa9bf19afb5231a620153539f45b85dde003b055630fb3e692bc", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "3561d6ee6a4dd833af233963df4e80decc8a358465ffbaee09dda82d6ff880d5", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "2463fada359ae09ea276b723eae8af233bf19ef467932f136b7c7e360f6e3ad5", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6d74260c45ef7e4e19e6ea6eec6f60ea5eb1cb3ba6a4bd8c5f8eb6ea87267334", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "87a9793c714f1e16ff1a27bb8d18691e6e397a6befc0e1d0792dc04c8bf53d19", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "be547fdd1c74dcf2e32c54f90b59e29af34018dd197e65dd08a9ebaf2a147af7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "0c14ea22c1a8b6ec9190792400c7f92bded614e594a51f0ce5f792efcce4c348", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "faeda9f126cd29cda05977614f4b42096301102ee6d3b21bf5b0194eec97b6be", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "4de2ebf746d5697c92f5ea796045a33536c228f40983c9712bc0e22bb8b09e1c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "7b09894a0598eb9d50a60ccc97ee5956045b3a588a2d139fd0881d6b573c9e3f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "7364b5feb6e1edc342bad66dc927056e903842a0b7368a26cd6d15921762c079", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7d718215eccdbf6d319682b14a14a13d58a6ecac5d3b1a6a3fa83af616848c70", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "58700bdffde8e3d219b5a262dc2eb08309abb0ee6412aabae7deada6a18e0095", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2450317b8a6034bd650139953dbbe692effacfdb8fd912382de8b11c5dc661eb", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "b5dffa4cc5dfbc9690c37440734bd8f6bda1aac4c5ce612f8826e58650febd0a", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "64572fc1b94eec9bfd338fbc3de85bc98fb46a57106e00d4bb4af0cf3fe74d69", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "823d02d4435e6bf60d8242906c4b7fe25ea5b69942eceb934434cc23c0b51067", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "4a618de8320816c337b6b0a591f694b22ff9e0b3b098e27f411df76bce28a60c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "13523bc7aa3dae6cdc7b685cbbc58327ec7c885a55cbeb268d2fab8b47425dda", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "d8942083d8cabc7b473658045c97f43dd6261f085c3c5122a7076b40682b510b", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "91b9409c9a794217f87874021c9cb4d68448613fe572edcb8c9298c38ac77c4c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "7cf7305c8b5682fcae7993fe4a99f8ae4f8ee70df7feb33416d9994d666e5294", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "4fc3dc1cde2339f60b4a0960119ed3b7e87c219b272d5eec1e1393ddad058255", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "7364b5feb6e1edc342bad66dc927056e903842a0b7368a26cd6d15921762c079", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "24b58d626eeb33c79a14bcdcb431dca5545728dd4409d94b00a3c0bd82cd8d57", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "eb8a66360334877d54abbceb1a41e1fa5165bc72fede1ed9a389e9249cbebd85", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f071aa41d9d549e5d442446126784553b1abe6c417bcc6f41f5423d7ed2d567a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aad7979e0d8261ac404b645e5546bbd3630b742b03a4289521db95128c0fe4fe", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "608ee43b09be0bfbd09990a27e4be27145874e2b7a5a2c58608ac9e948d69a0a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "fdb4141b35093c5c5033b5f502a039d73457402d75ef91c99d3eea7a10d4917a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d5911c9b3822088ce402ca5ed210f7280ec3ce2ea2577659068075fc7323a2ef", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7a8e55f5014073c2763d6d25f53360dcfa1d5c5165489b7e8ddf314835239370", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "9435eb54b0a7ed37ffffb3af2aaaae78b808463f22022f767133adbb238a9550", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "4a17020b0b2c77419d8192032a1d3e1f432fed6b719dfcb945283821fe12b764", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "a23893c074619852fbe051d244fe6e5f2941d46a4cdfc61c1feba2873905257e", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "a23893c074619852fbe051d244fe6e5f2941d46a4cdfc61c1feba2873905257e", +"T3T1_fr_test_basic.py::test_capabilities": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_basic.py::test_device_id_different": "e65e22ed008ff3ce622e3a12f9e4312ee11b8895cc921b4c22e324f787437b37", +"T3T1_fr_test_basic.py::test_device_id_same": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_basic.py::test_features": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_basic.py::test_ping": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_busy_state.py::test_busy_expiry": "50a4e60edf5c86102cbfcb3d7cbae52a8fb71d95c0724480abaf0fef94fbb50f", +"T3T1_fr_test_busy_state.py::test_busy_state": "563ec4d3db797cfb24d1df9dd1618ca6f5491164a30bdf6a2600d55c0cead922", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "3a7277215930e245500e8cb494b6b5f832de05e5bfd885cc408b0fc2fd8664d5", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "3a7277215930e245500e8cb494b6b5f832de05e5bfd885cc408b0fc2fd8664d5", +"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "932a23f20bd4a4630b866de0f3fe358521f9fa8a8301cf63b3111aeec9f589b0", +"T3T1_fr_test_debuglink.py::test_softlock_instability": "e7ec6dc02861876dfc313bca6371e2ca8ebb17a83955549756fee12db97305a5", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "198a9ba1e68ab93aecc30fb76c064b495296276a2845c07eff598a1927e93b9c", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_language.py::test_error_invalid_data_hash": "a76f775a354f701c8f195e3a5c239991829e4c0cd06dc1e19ad4e7cec95a093e", +"T3T1_fr_test_language.py::test_error_invalid_data_length": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", +"T3T1_fr_test_language.py::test_error_invalid_header_magic": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", +"T3T1_fr_test_language.py::test_error_invalid_signature": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", +"T3T1_fr_test_language.py::test_error_too_long": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", +"T3T1_fr_test_language.py::test_error_version_mismatch": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", +"T3T1_fr_test_language.py::test_full_language_change[cs]": "0d1f8a8177505d1015732d2e6130f2d6be6e2e35aa63a3561112bda529a08134", +"T3T1_fr_test_language.py::test_full_language_change[de]": "4479785a4309a6af5fe999360863844364a4eb0f28ceac56037235ad1e5f310f", +"T3T1_fr_test_language.py::test_full_language_change[en]": "20c465087983c0bfcbfcc947d587b50b7bf68e7986d3a0dcdffdf23c83a94ed1", +"T3T1_fr_test_language.py::test_full_language_change[es]": "b16a607922fbf147a4c5fced01321668b0584b7f54e7dc79214dac45dfd19af7", +"T3T1_fr_test_language.py::test_full_language_change[fr]": "7d9905ab40ca7e232201051f18ebfeaa7746a3ffa2bd311e2ff35dcedfb53e83", +"T3T1_fr_test_language.py::test_header_trailing_data": "e3235e63f4ff06f11034bb5bd4f55db0a48d4581f7d06dfa7a1d7a9b8db99c4b", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "f6baec0b96c3f66784533ee5ef1203d4910b75fe9b9cacc6e2db6868b03d5a27", +"T3T1_fr_test_language.py::test_reject_update": "188210331d8d22698ae2ab7661b0e969b77e0d2c5be960201dc8dcde65041699", +"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "e3cbd04bd3992fc9e4ee99c1bd1fd4587300084364f26cfcb2dd447b40663451", +"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "e3cbd04bd3992fc9e4ee99c1bd1fd4587300084364f26cfcb2dd447b40663451", +"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "27ef2500cbb8ea20552b18dc015c6050117e2b0f74723b742e7ec7ae167f174e", +"T3T1_fr_test_language.py::test_switch_from_english[None]": "c6276143ad159588903746e695f280484141059e35274fdd5590c079027dae73", +"T3T1_fr_test_language.py::test_switch_from_english[True]": "c6276143ad159588903746e695f280484141059e35274fdd5590c079027dae73", +"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "1db44ef119cc63d8a5789bef3f6fcaa28bd7df643fdd8bf79107b1812f003c49", +"T3T1_fr_test_language.py::test_switch_language": "85e1519f380fa7dd76a199ba7e20c79da58307b258544ff209f79acd439f0933", +"T3T1_fr_test_language.py::test_translations_renders_on_screen": "a47b3657372377f67e5caaf4a7230f2924e58afac3bbf5e68862c1af69163182", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "436c942f681c639659dff1d87726e9952442c6a9e1b0dfa095d55c05cd2e0bd1", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "780739c73205e7391bfe9ff96ba222eee839768bc6afc084b5a5297d7f03141d", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "64629377498ab734208a32bc31a777b8800a6f272be35067fba8e8b579088761", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e0c10287433994fcee3a87bf0801d56ce66cbaab924dbe96318c84ce54a8aa8c", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "b2dd68e52692035c5c0996ee85730d10973c39f76bef93c024e282b23761018a", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "d307564377f94703e22fc02ab1498e97cbc5e2bfb71f7b88f00a2cce14f9a9a2", +"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "d3bb8edb64d7038e21484cbb7379340faf16451be1adc3ce098d5d3254230580", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "e61f1319d6cf5bac005a01bf8773e2f8b378c8e4cf4181f712cf1874783d6c64", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "49bdba55553d69c77fc0c8e2370f640b8818dd2afc21d132ca05dc39824c446a", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ee3ece48bf768e81165c0b11e91144e0f28fff9363eddb08b4f77dd75f99a6e6", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "207a75b2835365c7b291fc0bda2cb0fec9382cb8f3d6280f029c6be8125592c8", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "ce1d3352fa0f611d1da3f7f196f4c1d584f3f305b25ecd92fec34b8f911544d1", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "1fa1a3a0edcc27794ded3ed14d3b5a7c8a68b574cd76d0e1520acf960836252a", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "fc19dab81070ada7be7bb522d6794ff6789738ba2447ebd31f4bcb3d280e6ec5", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6b3adbae8a08f11fac69601a3bec2069aea1424be4b95dbe4ddb352d9c87826a", +"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "238a85409cb204a19d34f0c1288075f9b14a35c63908ed74637a35aeca064475", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "4541c52f9b734a9984da48cbeb25ea266760ab43d4b4f93f6aa18086fffe71a8", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "548131f0206007684e9fb938a5469acdd4a9c242d588696aa301b264f5d328c6", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "047ba64c10e41b6cfa03ddc3978940be1eb2e39a0fbd9db443254ca674c78924", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "90c43a3c9203615ff59d354105613d27fdb52dd1af968f20b1e7a8adb1489ae7", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "d2f3523790b2f81f7641b3d0a454c5868d18cd56c1ff33279caaec9f36bbd7d6", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "fe344e320d9bf95923f59dd2901805fb1bf94dd13f201d04bdef760c0c49b7d5", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "b055fdb057bb851be0b9842c7224ed571cce19187a1fe8152618e1ce21a56bd3", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "1b5da29d470ff250403e22c32dc7c72d939ea9131c3fe257ad3b2e166eaafeac", +"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "437021f75f4e52bd45e71f8ad6767683aa6adc9120f8926749739ed54ae492d8", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "cf379dd9e6ebe635db5b3f6f1cbd9bc0e2a81fc29879cf59d6574ca38ea6849f", +"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "86a80d9daf6b1394691c00e85e71d4fabffd737e84287cace1ce273adc50df35", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "9023b19c028b543f5a13dab8bf53ef5fdc198a2dfc2025abda53f0485d0f58b6", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "e9e04ac84d6c617ab8b2276de632c36259a9c10076db4ea52d6c65e9aaf5e7cf", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "4890a4640d0ccf9c396d4dc864d9f492dff7f92866e903f57d1df8e641c383bf", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "e9e04ac84d6c617ab8b2276de632c36259a9c10076db4ea52d6c65e9aaf5e7cf", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "e9e04ac84d6c617ab8b2276de632c36259a9c10076db4ea52d6c65e9aaf5e7cf", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "176d86ba233acb6577f7b27c76dc46628b8a5d717bfa690c5896b12740c017e8", +"T3T1_fr_test_msg_ping.py::test_ping": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "3b00810433dbae44f2090a178f71434f3cc1ef79dacec4ddc947366996ac1d7f", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "d328e030acef43ad90a4aa373b9bc5dfeeec50f39f0a30e0852615f70cd8e67a", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "bb2cde812e5fb5ec92620422ccb6340d3017f33050fe06fa85e9c7f002f3f1f5", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "e250ba0f4b9d750a51195c2bb1547b9b9978f78f91640bef6b0750a96d635eb7", +"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "e65e22ed008ff3ce622e3a12f9e4312ee11b8895cc921b4c22e324f787437b37", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "249126dc934c739fba96069923d7affcf98c3fe0015316ee8b7f877225c600f4", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "249126dc934c739fba96069923d7affcf98c3fe0015316ee8b7f877225c600f4", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "5ba577cc62f116627d8bd2943f0bd1f2064137c1e13e4f5a7b419dc98219f388", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5ba577cc62f116627d8bd2943f0bd1f2064137c1e13e4f5a7b419dc98219f388", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5ba577cc62f116627d8bd2943f0bd1f2064137c1e13e4f5a7b419dc98219f388", +"T3T1_fr_test_pin.py::test_correct_pin": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "ce917a2fd01a017c3dad8fe6b802f4803d7f7109959916df8de5bd2b0c1f4d1c", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "6f7037e3d1da746e7ef0ebcd693d5dafa66e533d1a441a4c41f0521b24ff22c1", +"T3T1_fr_test_pin.py::test_no_protection": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "31920962e8fc2a4383f80805ca5452be8e42eaba211a32b2c4dcc411d460982b", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "c4acb5b5ec6a9fa1deab2ea65333e03ce6b75e74053da757d0fbd5cdc985bfd1", +"T3T1_fr_test_protection_levels.py::test_get_address": "c1db32209790b00569ff43e14767182e3ab3d942a4a747e7137d6a1dedbc6146", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "de2ef4f4e129acfa32916fd4693c016fb4338c826b0684c6671a2c6aad4290b8", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "c1db32209790b00569ff43e14767182e3ab3d942a4a747e7137d6a1dedbc6146", +"T3T1_fr_test_protection_levels.py::test_initialize": "35fa2a2fcb6114d8f6b6381bcc5f0dff46e35da7e68d95b4374ca5261877eb41", +"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "1fbb5784d1c4367e93f091c67a9390d644bed47c904bcf285fda0f85a72b4dd5", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "b80ffe05278531958b12989aac8547421b2165b95d8c51466f8de7e63d7a2672", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "94cf2c0d6cfd7aa9d6cffa99e75817e7bfe367ac648f581d5dcd8c9fbffa8122", +"T3T1_fr_test_protection_levels.py::test_ping": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", +"T3T1_fr_test_protection_levels.py::test_sign_message": "8708d568120deade9ca5c5eeada6afbca38ccea643bddc080d84681df371830c", +"T3T1_fr_test_protection_levels.py::test_signtx": "22787fed4e11537e2ecd74666a01224144f3e25860c33500f82cfa7c5a36ff95", +"T3T1_fr_test_protection_levels.py::test_unlocked": "a9888f03963112135ed5ff1dbbf90b75cfbccdef1e687168cc1150cb7c1e6516", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "449d2b8af3f5cb9606b7eca7094c19ca21f84ae0d32963c4708b7003553f22cd", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "a89487cfe5a64aa94de52d34f7ad09e13d0d68f460a4f2b9ff84476ee35540e2", +"T3T1_fr_test_sdcard.py::test_sd_format": "406648d849eff533f8e3651d10c7e31ea11683f01f7bbcf9b706295ecb57eeaf", +"T3T1_fr_test_sdcard.py::test_sd_no_format": "42185dd467f9daae884f7d3e78bb9f100d0fb9d6411d3f5ea7839676d63847ee", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "a39a273dc42c4b69e020de26f7860507511cb8f99036bd609ee6728e9b2569ec", +"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_session.py::test_clear_session": "66cd96df9bef70af712450eaca6c13bac8e1f85356fbd4681e94430e1f56563e", +"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_session.py::test_derive_cardano_running_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_session.py::test_end_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_session.py::test_end_session_only_current": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_session.py::test_session_recycling": "5ba577cc62f116627d8bd2943f0bd1f2064137c1e13e4f5a7b419dc98219f388", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "6f9aa650ffc11b02895641a9dc62bf99b13aa2b1e3e8639cea66f5e62655d6f5", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "52e05def3afdbcd2c5ff4fba40b646b365707eac71b69953432352a8c3aadc14", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "462fe545892dd506b9bf63f955372f7092305d52fdc4475c9f639b13fe819cdf", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "577adfed1fe3faff1964ac391c2f8a2558a7657af02d3730b2b7a07ffb4eae00", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "b24d1b72fc89ba03d097df9a15cbf68fa6a2de21448fd1bbad5a2798c8f45056", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "b2e0fb33b8869647bd1376cb9b4c4a1d78c40d92b573233282017513fe35ecb9", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1fbb5784d1c4367e93f091c67a9390d644bed47c904bcf285fda0f85a72b4dd5", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "153857c23301e819b6bdbcba1687634bae98d7aa14b28866948644785d410f82", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "953e4d3df120d598361f6e260191966315f452b7fcf00d06abcd1e420654428a", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "4fc7bacdb18f29394a5094080523a1ad52a534b82786fe9e6b3e2d6c7f8d88f1", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "43af231fae30fa95a5d69ed81ecea21b2cac20c82d9c33d540c1330b122f4b0c", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "6b492360f624b8d5447ebc3312d4096dd70d5a053dd8f03426c027ac045ac818", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "72fe7410c659778e342aa21bcd3d7e4e1fdfb8f76da52453d94bf5fd5429d9ae", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "a501b42ccf296dda582f5beded37ccaf9a2317ed6b109067f7737d07dfd38c3f", +"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "30c754673db2c83455b0d7b94fecf893b6fbd38637f7cc115d5b49478244dbd2", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "ffbb7892182cef01c08f8c0ca617dad1a14637ec07afc7dedda8ad8d5eafa7f9", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "7a1d88cb1eaf9447ec02eb52b20371ca0de483ffa63abc758ccbb63bac4985c8", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "058f50a0b4c428921bb78ef4f309a9a4d90111794d12b13f1697cf74387c4398", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "37f666d6737d49bc68d5aca78a96f124616d05c0d16c4e2bfd3bb8fbd93d2b18", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6b3dc62f1dec95b169e7da7326e33d77cc811ef43600ac7324c91f20780bb38f", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "158445ac2b63b0c1d4066b99b3e7863f1cdc1f4d714c2f053dfa53e6d2d3468e", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "cf25bffa22c713f975e39a5a7a0ba6c70875d4e5cf61e8f1d4c5ee2a96943efe", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "91cb495dd4f663a8be0edbe129056dfc6a809887a95fc23c9c542f9c9ee0ecd5", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "56600665f99f7caa4ba1dc1e9d26db7256b7562e0d42f047272706f6f1470919", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e8ddf8d8f86b130f9d6b9407f21642055050831d29a7e48b0decbaddafb731f7", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "582bff38c89c08e5480f64d652e8d4aaaad105274b89991fc52da34286c79411", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "86d7910227b5d7735a774293a9e5a8b86a0b5230e80ef450a22e040756bc3439", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "50c3f3a0a0ed946ee6508219d306ffe85f2fd2325a5de4ccf2bb9f3b2f95d006", +"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "a845d85e04e8f0f02cf7cfed2c20f798574d2e9640e0e2d7ed8198ef46f75127", +"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "b7c29e3fe7bae709772ec2cd6aace64b4288968855eba9c5e1fdc3f09b220532", +"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "5ba148746b1614bbab1b8bb6da1fce6078d254f9596d2728c832581b69a57c33", +"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "31b39889ba4d6a879e62e946e09368a697dc76b45ccbf9c360cbe4c5f47d6df1", +"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", +"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "5c69f6b2cacb961310d99c83d24e8c9c595c3837a8b93b47e4aa48b1f723fbee", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "2b2d943e42a9ddb6db104851155ceeaf447cdd417561e8165d4771b9ed316dd4", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "64677335afe72a6c33c2ee353a72857f5038e39b72227056361108c0d8717585", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "002ecc8a846393ee774a1d3fd73e8729fc61315ebcc1191c0910587697c05bdd", +"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "8d265e36d9a26c15db12bf59b2c06541b9c2e78a976e1bfe09e0eb4503be3f94", +"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "5da2d368154467c1b68fd0d676f84da3377083d7cf2bd0871f96a9f163b220ef", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "62ad9d823cfdff7774521587a6daf70c872876e1b75df6236323abc07135cba9", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "b9949cb03a12d8ddc61410b43d170f658af614667b67cda246459bb655527356", -"T3T1_en_test_shamir_persistence.py::test_abort": "acdbb336fcf6e6b4a7046bf66fdb278f97d0bdd42dbbaa0b558dc223446b7f50", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "6eae781b70a129d9c9cbba1a14878dc5bfdec4da1c779d2730b371fc9643c235", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "e749da9bbbcb8a0019edbf7aa425b1f3b4f11146d7a42853114a03bdfed51cdb", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "87303b91615d1a1e38ca1a898ab561da8acfd779b6c533923efaabdd6e7c976d", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "5894305ee4b8a293f2b6fd507b8035dbd5d273185c170b4bb0154f0e41c47614" +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "3230349ce17f212acc7b3ff0373fd54c376fecdd68b53c82e3e1a4cf9d6b4c5a", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "846da139434b63a65783ef5441f1076b0290e852ba2bae5c0cff163ff5bd1e2c", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "5e09df88502ceb652a4a8bcca4c22e03021c2fcc79a19aea3ddbe281fd011b3d", +"T3T1_en_test_shamir_persistence.py::test_abort": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "7340a81575f66887262f1e093f7b8700c8d0df25b0f9d48bb4a67aa2c37dd91e", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "9edbc80f6de2fb63c2fab12d2f1ea26d46efc68124513e24cf5d61f1633ea48b", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "ab5307c063babcf64af761bb50a3b4e7d6a13aec1cba64fb631d0fedd9d7e75b", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "3f2d00d26678af6f4f02f6e7674b1af43e1d7f21177e760bdd679bb70cdbfa18" } } } From 662f13136ffa16d4b4b112bc65a2c5bcc6d75aa6 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Fri, 31 May 2024 02:39:13 +0200 Subject: [PATCH 176/626] fix(core/ui): T3T1: get rid of some of the remaining button dialogs --- .../ui/model_mercury/flow/confirm_action.rs | 43 ++++++++++++- .../rust/src/ui/model_mercury/flow/mod.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 62 +++++++++++++------ tests/device_tests/bitcoin/test_signtx.py | 1 + tests/device_tests/cardano/test_sign_tx.py | 1 + .../ethereum/test_sign_typed_data.py | 1 + tests/device_tests/ethereum/test_signtx.py | 1 + tests/input_flows.py | 6 +- 8 files changed, 92 insertions(+), 25 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 2244f3cc2d..a2e73c0713 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -1,9 +1,12 @@ use crate::{ error, + maybe_trace::MaybeTrace, strutil::TString, translations::TR, ui::{ - component::{text::paragraphs::Paragraph, ComponentExt, SwipeDirection}, + component::{ + text::paragraphs::Paragraph, Component, ComponentExt, Paginate, SwipeDirection, + }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, }, }; @@ -208,3 +211,41 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err Ok(LayoutObj::new(res)?.into()) } } + +pub fn new_confirm_action_simple<T: Component + Paginate + Clone + MaybeTrace + 'static>( + content: T, + title: TString<'static>, + subtitle: Option<TString<'static>>, + verb: Option<TString<'static>>, + verb_cancel: Option<TString<'static>>, +) -> Result<Obj, error::Error> { + let mut frame = Frame::left_aligned(title, SwipePage::vertical(content)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), verb); + if let Some(subtitle) = subtitle { + frame = frame.with_subtitle(subtitle) + } + let content_intro = + frame.map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + + let content_menu = if let Some(verb_cancel) = verb_cancel { + Frame::left_aligned( + "".into(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, verb_cancel), + ) + } else { + Frame::left_aligned( + "".into(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), + ) + } + .with_cancel_button() + .map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let store = flow_store().add(content_intro)?.add(content_menu)?; + let res = SwipeFlow::new(ConfirmActionSimple::Intro, store)?; + Ok(LayoutObj::new(res)?.into()) +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 0a782b922a..726f695a60 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -10,7 +10,7 @@ pub mod request_number; pub mod show_share_words; pub mod warning_hi_prio; -pub use confirm_action::new_confirm_action; +pub use confirm_action::{new_confirm_action, new_confirm_action_simple}; mod util; pub use confirm_output::new_confirm_output; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 4a299836b8..85242c04fb 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -449,6 +449,33 @@ impl ConfirmBlobParams { let obj = LayoutObj::new(frame)?; Ok(obj.into()) } + + fn into_flow(self) -> Result<Obj, Error> { + let paragraphs = ConfirmBlob { + description: self.description.unwrap_or("".into()), + extra: self.extra.unwrap_or("".into()), + data: self.data.try_into()?, + description_font: &theme::TEXT_NORMAL, + extra_font: &theme::TEXT_DEMIBOLD, + data_font: if self.chunkify { + let data: TString = self.data.try_into()?; + theme::get_chunkified_text_style(data.len()) + } else if self.text_mono { + &theme::TEXT_MONO + } else { + &theme::TEXT_NORMAL + }, + } + .into_paragraphs(); + + flow::new_confirm_action_simple( + paragraphs, + self.title, + self.subtitle, + self.verb, + self.verb_cancel, + ) + } } extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { @@ -472,7 +499,7 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map ConfirmBlobParams::new(title, data, description, verb, verb_cancel, hold) .with_extra(extra) .with_chunkify(chunkify) - .into_layout() + .into_flow() }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -638,7 +665,7 @@ extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Ma .with_info_button(info_button) .with_chunkify(chunkify) .with_text_mono(text_mono) - .into_layout() + .into_flow() }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -693,10 +720,10 @@ extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: Paragraph::new(&theme::TEXT_MONO, amount_new), ]); - let obj = LayoutObj::new(Frame::left_aligned( - TR::modify_amount__title.into(), - ButtonPage::new(paragraphs, theme::BG) - .with_cancel_confirm(Some("^".into()), Some(TR::buttons__continue.into())), + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(TR::modify_amount__title.into(), paragraphs) + .with_cancel_button() + .with_footer(TR::instructions__swipe_up.into(), None), ))?; Ok(obj.into()) }; @@ -735,15 +762,11 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m Paragraph::new(&theme::TEXT_MONO, total_fee_new), ]); - let obj = LayoutObj::new( - Frame::left_aligned( - title, - ButtonPage::new(paragraphs, theme::BG) - .with_hold()? - .with_swipe_left(), - ) - .with_menu_button(), - )?; + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, paragraphs) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None), + ))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1031,11 +1054,10 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu } } - let buttons = Button::cancel_info_confirm(button, info_button); - - let obj = LayoutObj::new(Frame::left_aligned( - title, - Dialog::new(paragraphs.into_paragraphs(), buttons), + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, paragraphs.into_paragraphs()) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), Some(button)), ))?; Ok(obj.into()) }; diff --git a/tests/device_tests/bitcoin/test_signtx.py b/tests/device_tests/bitcoin/test_signtx.py index 68001b2e36..c68608ad75 100644 --- a/tests/device_tests/bitcoin/test_signtx.py +++ b/tests/device_tests/bitcoin/test_signtx.py @@ -1613,6 +1613,7 @@ def test_information_cancel(client: Client): ) +@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") @pytest.mark.skip_t1b1(reason="Cannot test layouts on T1") def test_information_replacement(client: Client): # Use the change output and an external output to bump the fee. diff --git a/tests/device_tests/cardano/test_sign_tx.py b/tests/device_tests/cardano/test_sign_tx.py index 1842077136..27fd13d883 100644 --- a/tests/device_tests/cardano/test_sign_tx.py +++ b/tests/device_tests/cardano/test_sign_tx.py @@ -62,6 +62,7 @@ def test_cardano_sign_tx(client: Client, parameters, result): assert response == _transform_expected_result(result) +@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") @parametrize_using_common_fixtures("cardano/sign_tx.show_details.json") def test_cardano_sign_tx_show_details(client: Client, parameters, result): response = call_sign_tx(client, parameters, show_details_input_flow, chunkify=True) diff --git a/tests/device_tests/ethereum/test_sign_typed_data.py b/tests/device_tests/ethereum/test_sign_typed_data.py index 6ce72aa721..60297b9191 100644 --- a/tests/device_tests/ethereum/test_sign_typed_data.py +++ b/tests/device_tests/ethereum/test_sign_typed_data.py @@ -97,6 +97,7 @@ def test_ethereum_sign_typed_data_blind(client: Client, parameters, result): } +@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") @pytest.mark.skip_t1b1 def test_ethereum_sign_typed_data_show_more_button(client: Client): with client: diff --git a/tests/device_tests/ethereum/test_signtx.py b/tests/device_tests/ethereum/test_signtx.py index a14d2d9a6b..752cd37e4b 100644 --- a/tests/device_tests/ethereum/test_signtx.py +++ b/tests/device_tests/ethereum/test_signtx.py @@ -457,6 +457,7 @@ def _sign_tx_call(): _sign_tx_call() +@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") @pytest.mark.skip_t1b1("T1 does not support Everstake") @parametrize_using_common_fixtures("ethereum/sign_tx_staking.json") @pytest.mark.parametrize("chunkify", (True, False)) diff --git a/tests/input_flows.py b/tests/input_flows.py index f945dab17d..9e99f74dde 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -264,12 +264,12 @@ def input_flow_t3t1(self) -> BRGeneratorType: self.debug.press_yes() br = yield - assert br.pages is not None - for i in range(br.pages): + # assert br.pages is not None + for i in range(br.pages or 1): layout = self.debug.wait_layout() layouts.append(layout) - if i < br.pages - 1: + if br.pages and i < br.pages - 1: self.debug.swipe_up() self.message_read = multipage_content(layouts) From 67ac4078f7858002110fca943969cfaadc69682e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Wed, 29 May 2024 13:25:22 +0200 Subject: [PATCH 177/626] feat(core): add AES-GCM in-place encryption and decryption [no changelog] --- .../modtrezorcrypto/modtrezorcrypto-aesgcm.h | 48 +++++++++++++++++ .../mocks/generated/trezorcrypto/__init__.pyi | 10 ++++ core/tests/test_trezor.crypto.aesgcm.py | 52 +++++++++++++++++++ 3 files changed, 110 insertions(+) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-aesgcm.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-aesgcm.h index c29de6d734..b7edf784b8 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-aesgcm.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-aesgcm.h @@ -110,6 +110,28 @@ STATIC mp_obj_t mod_trezorcrypto_AesGcm_encrypt(mp_obj_t self, mp_obj_t data) { STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_AesGcm_encrypt_obj, mod_trezorcrypto_AesGcm_encrypt); +/// def encrypt_in_place(self, data: bytearray | memoryview) -> int: +/// """ +/// Encrypt data chunk in place. Returns the length of the encrypted data. +/// """ +STATIC mp_obj_t mod_trezorcrypto_AesGcm_encrypt_in_place(mp_obj_t self, + mp_obj_t data) { + mp_obj_AesGcm_t *o = MP_OBJ_TO_PTR(self); + if (o->state != STATE_INIT && o->state != STATE_ENCRYPTING) { + mp_raise_msg(&mp_type_RuntimeError, "Invalid state."); + } + o->state = STATE_ENCRYPTING; + mp_buffer_info_t in = {0}; + mp_get_buffer_raise(data, &in, MP_BUFFER_READ | MP_BUFFER_WRITE); + if (gcm_encrypt((unsigned char *)in.buf, in.len, &(o->ctx)) != RETURN_GOOD) { + o->state = STATE_FAILED; + mp_raise_type(&mp_type_RuntimeError); + } + return mp_obj_new_int(in.len); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_AesGcm_encrypt_in_place_obj, + mod_trezorcrypto_AesGcm_encrypt_in_place); + /// def decrypt(self, data: bytes) -> bytes: /// """ /// Decrypt data chunk. @@ -135,6 +157,28 @@ STATIC mp_obj_t mod_trezorcrypto_AesGcm_decrypt(mp_obj_t self, mp_obj_t data) { STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_AesGcm_decrypt_obj, mod_trezorcrypto_AesGcm_decrypt); +/// def decrypt_in_place(self, data: bytearray | memoryview) -> int: +/// """ +/// Decrypt data chunk in place. Returns the length of the decrypted data. +/// """ +STATIC mp_obj_t mod_trezorcrypto_AesGcm_decrypt_in_place(mp_obj_t self, + mp_obj_t data) { + mp_obj_AesGcm_t *o = MP_OBJ_TO_PTR(self); + if (o->state != STATE_INIT && o->state != STATE_DECRYPTING) { + mp_raise_msg(&mp_type_RuntimeError, "Invalid state."); + } + o->state = STATE_DECRYPTING; + mp_buffer_info_t in = {0}; + mp_get_buffer_raise(data, &in, MP_BUFFER_READ | MP_BUFFER_WRITE); + if (gcm_decrypt((unsigned char *)in.buf, in.len, &(o->ctx)) != RETURN_GOOD) { + o->state = STATE_FAILED; + mp_raise_type(&mp_type_RuntimeError); + } + return mp_obj_new_int(in.len); +} +STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_AesGcm_decrypt_in_place_obj, + mod_trezorcrypto_AesGcm_decrypt_in_place); + /// def auth(self, data: bytes) -> None: /// """ /// Include authenticated data chunk in the GCM authentication tag. This can @@ -194,8 +238,12 @@ STATIC const mp_rom_map_elem_t mod_trezorcrypto_AesGcm_locals_dict_table[] = { MP_ROM_PTR(&mod_trezorcrypto_AesGcm_reset_obj)}, {MP_ROM_QSTR(MP_QSTR_encrypt), MP_ROM_PTR(&mod_trezorcrypto_AesGcm_encrypt_obj)}, + {MP_ROM_QSTR(MP_QSTR_encrypt_in_place), + MP_ROM_PTR(&mod_trezorcrypto_AesGcm_encrypt_in_place_obj)}, {MP_ROM_QSTR(MP_QSTR_decrypt), MP_ROM_PTR(&mod_trezorcrypto_AesGcm_decrypt_obj)}, + {MP_ROM_QSTR(MP_QSTR_decrypt_in_place), + MP_ROM_PTR(&mod_trezorcrypto_AesGcm_decrypt_in_place_obj)}, {MP_ROM_QSTR(MP_QSTR_auth), MP_ROM_PTR(&mod_trezorcrypto_AesGcm_auth_obj)}, {MP_ROM_QSTR(MP_QSTR_finish), MP_ROM_PTR(&mod_trezorcrypto_AesGcm_finish_obj)}, diff --git a/core/mocks/generated/trezorcrypto/__init__.pyi b/core/mocks/generated/trezorcrypto/__init__.pyi index 1a0861dacc..a7e0d95f3d 100644 --- a/core/mocks/generated/trezorcrypto/__init__.pyi +++ b/core/mocks/generated/trezorcrypto/__init__.pyi @@ -54,11 +54,21 @@ class aesgcm: Encrypt data chunk. """ + def encrypt_in_place(self, data: bytearray | memoryview) -> int: + """ + Encrypt data chunk in place. Returns the length of the encrypted data. + """ + def decrypt(self, data: bytes) -> bytes: """ Decrypt data chunk. """ + def decrypt_in_place(self, data: bytearray | memoryview) -> int: + """ + Decrypt data chunk in place. Returns the length of the decrypted data. + """ + def auth(self, data: bytes) -> None: """ Include authenticated data chunk in the GCM authentication tag. This can diff --git a/core/tests/test_trezor.crypto.aesgcm.py b/core/tests/test_trezor.crypto.aesgcm.py index fee6a9b2ee..78e834bb97 100644 --- a/core/tests/test_trezor.crypto.aesgcm.py +++ b/core/tests/test_trezor.crypto.aesgcm.py @@ -61,6 +61,29 @@ def test_gcm(self): self.assertEqual(ctx.decrypt(ct), pt) self.assertEqual(ctx.finish(), tag) + def test_gcm_in_place(self): + for vector in self.vectors: + key, iv, pt, aad, ct, tag = map(unhexlify, vector) + buffer = bytearray(pt) + + # Test encryption. + ctx = aesgcm(key, iv) + if aad: + ctx.auth(aad) + returned = ctx.encrypt_in_place(buffer) + self.assertEqual(buffer, ct) + self.assertEqual(returned, len(buffer)) + self.assertEqual(ctx.finish(), tag) + + # Test decryption. + ctx.reset(iv) + if aad: + ctx.auth(aad) + returned = ctx.decrypt_in_place(buffer) + self.assertEqual(buffer, pt) + self.assertEqual(returned, len(buffer)) + self.assertEqual(ctx.finish(), tag) + def test_gcm_chunks(self): for vector in self.vectors: key, iv, pt, aad, ct, tag = map(unhexlify, vector) @@ -83,6 +106,35 @@ def test_gcm_chunks(self): self.assertEqual(ctx.encrypt(pt[chunk1:]), ct[chunk1:]) self.assertEqual(ctx.finish(), tag) + def test_gcm_chunks_in_place(self): + for vector in self.vectors: + key, iv, pt, aad, ct, tag = map(unhexlify, vector) + buffer = bytearray(ct) + chunk1_length = len(pt) // 3 + chunk2_length = len(pt) - chunk1_length + + # Decrypt by chunks and add authenticated data by chunks. + ctx = aesgcm(key, iv) + returned = ctx.decrypt_in_place(memoryview(buffer)[: chunk1_length]) + self.assertEqual(returned, chunk1_length) + ctx.auth(aad[:17]) + returned = ctx.decrypt_in_place(memoryview(buffer)[chunk1_length:]) + ctx.auth(aad[17:]) + self.assertEqual(returned, chunk2_length) + self.assertEqual(buffer, pt) + self.assertEqual(ctx.finish(), tag) + + # Encrypt by chunks and add authenticated data by chunks. + ctx.reset(iv) + ctx.auth(aad[:7]) + returned = ctx.encrypt_in_place(memoryview(buffer)[: chunk1_length]) + self.assertEqual(returned, chunk1_length) + ctx.auth(aad[7:]) + returned = ctx.encrypt_in_place(memoryview(buffer)[chunk1_length:]) + self.assertEqual(returned, chunk2_length) + self.assertEqual(buffer, ct) + self.assertEqual(ctx.finish(), tag) + if __name__ == "__main__": unittest.main() From e62f0b507af259d712e6cb273d07cd90302197b7 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 31 May 2024 11:21:11 +0200 Subject: [PATCH 178/626] build(core): fix build for Rust unit tests on T3T1 --- core/Makefile | 2 ++ core/embed/rust/Cargo.toml | 11 ++++++----- core/embed/rust/build.rs | 14 +++++++++++++- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/core/Makefile b/core/Makefile index 1cdbfdd6bd..daf553def3 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1,3 +1,4 @@ + .PHONY: vendor # get the number of CPU cores in a "portable" manner @@ -61,6 +62,7 @@ else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3T1)) MCU = STM32U5 OPENOCD_TARGET = target/stm32u5x.cfg LAYOUT_FILE = embed/models/T3T1/model_T3T1.h +MODEL_FEATURE = model_mercury else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC1)) MCU = STM32F4 LAYOUT_FILE = embed/models/D001/model_D001.h diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index fafd9bf598..26780a1fc8 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -44,21 +44,22 @@ usb = [] optiga = [] translations = ["crypto"] test = [ + "backlight", "button", "cc", "crypto", + "dma2d", "debug", "glob", "micropython", + "new_rendering", + "optiga", "protobuf", + "touch", + "translations", "ui", "ui_jpeg_decoder", "ui_blurring", - "dma2d", - "touch", - "backlight", - "optiga", - "translations", "universal_fw", ] universal_fw = [] diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index e95c9678c6..185f9b7a1f 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -52,11 +52,23 @@ const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[ #[cfg(not(feature = "model_tr"))] const DEFAULT_BINDGEN_MACROS_T2B1: &[&str] = &[]; +#[cfg(feature = "model_mercury")] +const DEFAULT_BINDGEN_MACROS_T3T1: &[&str] = &[ + "-DSTM32U5", + "-DTREZOR_MODEL_T3T1", + "-DFLASH_BIT_ACCESS=0", + "-DFLASH_BLOCK_WORDS=4", + "-DTREZOR_BOARD=\"T3T1/boards/t3t1-unix.h\"", +]; +#[cfg(not(feature = "model_mercury"))] +const DEFAULT_BINDGEN_MACROS_T3T1: &[&str] = &[]; + fn add_bindgen_macros<'a>(clang_args: &mut Vec<&'a str>, envvar: Option<&'a str>) { let default_macros = DEFAULT_BINDGEN_MACROS_COMMON .iter() .chain(DEFAULT_BINDGEN_MACROS_T2T1) - .chain(DEFAULT_BINDGEN_MACROS_T2B1); + .chain(DEFAULT_BINDGEN_MACROS_T2B1) + .chain(DEFAULT_BINDGEN_MACROS_T3T1); match envvar { Some(envvar) => clang_args.extend(envvar.split(',')), From 27fe6810c0d309324ef4fd1d76df5bd1e36bd1de Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 31 May 2024 11:22:15 +0200 Subject: [PATCH 179/626] refactor(core/ui): better structured selection of render_on_display function We should still get rid of this completely though :shrug: --- core/embed/rust/src/ui/shape/display/mod.rs | 61 +++++++++++++-------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/core/embed/rust/src/ui/shape/display/mod.rs b/core/embed/rust/src/ui/shape/display/mod.rs index 6d10a941de..bac7929040 100644 --- a/core/embed/rust/src/ui/shape/display/mod.rs +++ b/core/embed/rust/src/ui/shape/display/mod.rs @@ -3,34 +3,49 @@ mod direct_canvas; pub use direct_canvas::render_on_canvas; +pub mod fake_display; #[cfg(all(feature = "xframebuffer", feature = "display_mono"))] pub mod fb_mono8; -#[cfg(all(feature = "xframebuffer", feature = "display_mono"))] -pub use fb_mono8::render_on_display; - -#[cfg(feature = "display_rgb565")] -pub mod nofb_rgb565; -#[cfg(all(not(feature = "xframebuffer"), feature = "display_rgb565"))] -pub use nofb_rgb565::render_on_display; - #[cfg(all(feature = "xframebuffer", feature = "display_rgb565"))] pub mod fb_rgb565; -#[cfg(all( - feature = "xframebuffer", - feature = "display_rgb565", - not(feature = "display_rgba8888") -))] -pub use fb_rgb565::render_on_display; - #[cfg(all(feature = "xframebuffer", feature = "display_rgba8888",))] pub mod fb_rgba8888; -#[cfg(all( - feature = "xframebuffer", - feature = "display_rgba8888", - not(feature = "display_rgb565") -))] -pub use fb_rgba8888::render_on_display; +#[cfg(feature = "display_rgb565")] +pub mod nofb_rgb565; -pub mod fake_display; #[cfg(not(feature = "new_rendering"))] -pub use fake_display::render_on_display; +mod _new_rendering { + pub use super::fake_display::render_on_display; +} + +#[cfg(feature = "new_rendering")] +mod _new_rendering { + #[cfg(not(feature = "xframebuffer"))] + mod _xframebuffer { + #[cfg(feature = "display_rgb565")] + pub use super::super::nofb_rgb565::render_on_display; + + #[cfg(not(feature = "display_rgb565"))] + pub use super::super::fake_display::render_on_display; + } + + #[cfg(feature = "xframebuffer")] + mod _xframebuffer { + #[cfg(feature = "display_rgb565")] + pub use super::super::fb_rgb565::render_on_display; + + #[cfg(all(feature = "display_rgba8888", not(feature = "display_rgb565")))] + pub use super::super::fb_rgba8888::render_on_display; + + #[cfg(all( + feature = "display_mono", + not(feature = "display_rgb565"), + not(feature = "display_rgba8888") + ))] + pub use super::super::fb_mono8::render_on_display; + } + + pub use _xframebuffer::render_on_display; +} + +pub use _new_rendering::render_on_display; From 9a6f6c6b75952543135382f03ad920441f682c61 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 31 May 2024 11:22:30 +0200 Subject: [PATCH 180/626] fix(core/ui): fix build of Rust unit tests on T3T1 --- core/embed/rust/src/ui/model_mercury/component/page.rs | 1 - core/embed/rust/src/ui/model_mercury/layout.rs | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs index 9e501f549c..c2e82caf9b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -522,7 +522,6 @@ mod tests { use serde_json; use crate::{ - strutil::SkipPrefix, trace::tests::trace, ui::{ component::text::paragraphs::{Paragraph, Paragraphs}, diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 85242c04fb..3f79805bd7 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -2021,8 +2021,11 @@ mod tests { #[test] fn trace_example_layout() { - let buttons = - Button::cancel_confirm(Button::with_text("Left"), Button::with_text("Right"), false); + let buttons = Button::cancel_confirm( + Button::with_text("Left".into()), + Button::with_text("Right".into()), + false, + ); let ops = OpTextLayout::new(theme::TEXT_NORMAL) .text_normal("Testing text layout, with some text, and some more text. And ") From 8620ab57666d3de6fd5c1f03005c62550d1d5a65 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 31 May 2024 11:22:43 +0200 Subject: [PATCH 181/626] ci: enable Rust unit tests for T3T1 --- .github/workflows/core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 6872bd9a35..8243d317b2 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -157,7 +157,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1] + model: [T2T1, T2B1, T3T1] asan: ${{ fromJSON(needs.param.outputs.asan) }} env: TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model }} From dd0fe3d878d45f9e91ffbd6f01284f02a2f0472c Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 31 May 2024 11:36:35 +0200 Subject: [PATCH 182/626] test(core/ui): fix Rust paragraph splitting unit tests on T3T1 --- .../src/ui/model_mercury/component/page.rs | 52 ++++++++++--------- .../embed/rust/src/ui/model_mercury/layout.rs | 2 +- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs index c2e82caf9b..22950ba10f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -595,7 +595,7 @@ mod tests { ), Paragraph::new( &theme::TEXT_BOLD, - "Second, bold, paragraph should also fit on the screen whole I think.", + "Second, bold, paragraph should also fit on the screen.", ), ]), theme::BG, @@ -610,7 +610,7 @@ mod tests { "component": "Paragraphs", "paragraphs": [ ["This is the first", "\n", "paragraph and it should", "\n", "fit on the screen", "\n", "entirely."], - ["Second, bold, paragraph", "\n", "should also fit on the", "\n", "screen whole I think."], + ["Second, bold,", "\n", "paragraph should also", "\n", "fit on the screen."], ], }, "hold": false, @@ -645,13 +645,12 @@ mod tests { "paragraphs": [ [ "This is somewhat long", "\n", - "paragraph that goes on", "\n", - "and on and on and on and", "\n", - "on and will definitely not", "\n", - "fit on just a single", "\n", - "screen. You have to", "\n", - "swipe a bit to see all the", "\n", - "text it contains I guess.", "...", + "paragraph that goes", "\n", + "on and on and on and", "\n", + "on and on and will", "\n", + "definitely not fit on", "\n", + "just a single screen.", "\n", + "You have to swipe a", "...", ], ], }, @@ -664,7 +663,12 @@ mod tests { "content": { "component": "Paragraphs", "paragraphs": [ - ["There's just so much", "\n", "letters in it."], + [ + "bit to see all the text it", "\n", + "contains I guess.", "\n", + "There's just so much", "\n", + "letters in it." + ], ], }, "hold": false, @@ -710,15 +714,15 @@ mod tests { "component": "Paragraphs", "paragraphs": [ [ - "This paragraph is using a", "\n", - "bold font. It doesn't need", "\n", - "to be all that long.", + "This paragraph is", "\n", + "using a bold font. It", "\n", + "doesn't need to be all", "\n", + "that long.", ], [ "And this one is u", "\n", "sing MONO. Monosp", "\n", - "ace is nice for n", "\n", - "umbers, they", "...", + "ace is nice f", "...", ], ], }, @@ -732,15 +736,13 @@ mod tests { "component": "Paragraphs", "paragraphs": [ [ - "...", "have the same", "\n", + "...", "or numbers, t", "\n", + "hey have the same", "\n", "width and can be", "\n", "scanned quickly.", "\n", "Even if they span", "\n", "several pages or", "\n", - "something.", - ], - [ - "Let's add another one", "...", + "something." ], ], }, @@ -754,10 +756,12 @@ mod tests { "component": "Paragraphs", "paragraphs": [ [ - "for a good measure. This", "\n", - "one should overflow all", "\n", - "the way to the third page", "\n", - "with a bit of luck.", + "Let's add another one", "\n", + "for a good measure.", "\n", + "This one should", "\n", + "overflow all the way to", "\n", + "the third page with a", "\n", + "bit of luck.", ], ], }, diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 3f79805bd7..4373a2483f 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -2039,7 +2039,7 @@ mod tests { "content": { "component": "FormattedText", "text": ["Testing text layout, with", "\n", "some text, and some", "\n", - "more text. And ", "paramet", "-", "\n", "ers!"], + "more text. And ", "parame", "-", "\n", "ters!"], "fits": true, }, "controls": { From 5ec8b587721546ac357abaa613b012128c77aee0 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 31 May 2024 15:16:42 +0200 Subject: [PATCH 183/626] style(core/rust): remove unreachable statement --- core/embed/rust/src/micropython/runtime.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/core/embed/rust/src/micropython/runtime.rs b/core/embed/rust/src/micropython/runtime.rs index c33bb40b52..a2dced61d4 100644 --- a/core/embed/rust/src/micropython/runtime.rs +++ b/core/embed/rust/src/micropython/runtime.rs @@ -17,7 +17,6 @@ pub unsafe fn raise_exception(err: Error) -> ! { // (err.into_obj() should return the right thing) ffi::nlr_jump(err.into_obj().as_ptr()); } - panic!(); } /// Execute `func` while catching MicroPython exceptions. Returns `Ok` in the From a65511846bcb7bd28063528bc4f92065cf71f3e7 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 8 Jan 2024 23:40:25 +0100 Subject: [PATCH 184/626] feat(core): added user adjustable brightness setting --- common/protob/messages-management.proto | 10 + common/protob/messages.proto | 1 + core/.changelog.d/3208.added | 1 + core/embed/rust/librust_qstr.h | 3 + core/embed/rust/src/storage/mod.rs | 21 +- .../generated/translated_string.rs | 3 + .../src/ui/model_mercury/bootloader/mod.rs | 5 +- .../src/ui/model_mercury/component/fido.rs | 4 +- .../component/keyboard/passphrase.rs | 2 +- .../src/ui/model_mercury/component/mod.rs | 7 + .../component/number_input_slider.rs | 204 +++++++ .../src/ui/model_mercury/component/page.rs | 3 +- .../model_mercury/component/set_brightness.rs | 74 +++ .../ui/model_mercury/component/simple_page.rs | 3 +- .../embed/rust/src/ui/model_mercury/layout.rs | 33 +- core/embed/rust/src/ui/model_mercury/mod.rs | 6 +- .../src/ui/model_mercury/theme/backlight.rs | 52 ++ .../rust/src/ui/model_mercury/theme/mod.rs | 9 +- .../rust/src/ui/model_tt/bootloader/mod.rs | 5 +- .../rust/src/ui/model_tt/component/fido.rs | 4 +- .../model_tt/component/keyboard/passphrase.rs | 4 +- .../rust/src/ui/model_tt/component/mod.rs | 4 + .../model_tt/component/number_input_slider.rs | 204 +++++++ .../rust/src/ui/model_tt/component/page.rs | 3 +- .../ui/model_tt/component/set_brightness.rs | 74 +++ .../src/ui/model_tt/component/simple_page.rs | 3 +- .../rust/src/ui/model_tt/component/swipe.rs | 7 +- core/embed/rust/src/ui/model_tt/layout.rs | 32 +- core/embed/rust/src/ui/model_tt/mod.rs | 9 +- .../rust/src/ui/model_tt/theme/backlight.rs | 52 ++ core/embed/rust/src/ui/model_tt/theme/mod.rs | 8 +- core/embed/trezorhal/stm32f4/backlight_pwm.c | 32 +- core/mocks/generated/trezorui2.pyi | 26 + core/mocks/trezortranslate_keys.pyi | 1 + core/src/all_modules.py | 2 + core/src/apps/base.py | 5 +- core/src/apps/management/set_brightness.py | 17 + core/src/apps/workflow_handlers.py | 3 + core/src/boot.py | 4 +- core/src/storage/common.py | 8 +- core/src/storage/device.py | 2 + core/src/trezor/enums/Capability.py | 1 + core/src/trezor/enums/MessageType.py | 1 + core/src/trezor/enums/__init__.py | 2 + core/src/trezor/messages.py | 14 + core/src/trezor/ui/__init__.py | 6 +- .../src/trezor/ui/layouts/mercury/__init__.py | 18 +- .../trezor/ui/layouts/mercury/homescreen.py | 4 +- .../src/trezor/ui/layouts/mercury/progress.py | 4 +- core/src/trezor/ui/layouts/progress.py | 4 +- core/src/trezor/ui/layouts/tt/__init__.py | 18 +- core/src/trezor/ui/layouts/tt/homescreen.py | 4 +- core/src/trezor/ui/style.py | 43 +- core/translations/en.json | 1 + core/translations/order.json | 3 +- core/translations/signatures.json | 6 +- legacy/firmware/protob/Makefile | 3 +- python/.changelog.d/3208.added | 1 + python/src/trezorlib/cli/settings.py | 7 + python/src/trezorlib/device.py | 7 + python/src/trezorlib/messages.py | 16 + rust/trezor-client/src/messages/generated.rs | 1 + .../src/protos/generated/messages.rs | 557 +++++++++--------- .../protos/generated/messages_management.rs | 305 +++++++--- 64 files changed, 1538 insertions(+), 438 deletions(-) create mode 100644 core/.changelog.d/3208.added create mode 100644 core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/set_brightness.rs create mode 100644 core/embed/rust/src/ui/model_mercury/theme/backlight.rs create mode 100644 core/embed/rust/src/ui/model_tt/component/number_input_slider.rs create mode 100644 core/embed/rust/src/ui/model_tt/component/set_brightness.rs create mode 100644 core/embed/rust/src/ui/model_tt/theme/backlight.rs create mode 100644 core/src/apps/management/set_brightness.py create mode 100644 python/.changelog.d/3208.added diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index 553951a95d..d0624752e9 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -115,6 +115,7 @@ message Features { Capability_PassphraseEntry = 17 [(bitcoin_only) = true]; // the device is capable of passphrase entry directly on the device Capability_Solana = 18; Capability_Translations = 19 [(bitcoin_only) = true]; + Capability_Brightness = 20 [(bitcoin_only) = true]; } optional BackupType backup_type = 31; // type of device backup (BIP-39 / SLIP-39 basic / SLIP-39 advanced) optional bool sd_card_present = 32; // is SD card present @@ -612,3 +613,12 @@ message ShowDeviceTutorial { */ message UnlockBootloader { } + +/** + * Request: Set device brightness + * @start + * @next Success + */ +message SetBrightness { + optional uint32 value = 1; // if not specified, let the user choose +} diff --git a/common/protob/messages.proto b/common/protob/messages.proto index f0a5d0cf50..8b6b8040bc 100644 --- a/common/protob/messages.proto +++ b/common/protob/messages.proto @@ -127,6 +127,7 @@ enum MessageType { MessageType_ChangeLanguage = 990 [(bitcoin_only) = true, (wire_in) = true]; MessageType_TranslationDataRequest = 991 [(bitcoin_only) = true, (wire_out) = true]; MessageType_TranslationDataAck = 992 [(bitcoin_only) = true, (wire_in) = true]; + MessageType_SetBrightness = 993 [(bitcoin_only) = true, (wire_in) = true]; MessageType_SetU2FCounter = 63 [(wire_in) = true]; MessageType_GetNextU2FCounter = 80 [(wire_in) = true]; diff --git a/core/.changelog.d/3208.added b/core/.changelog.d/3208.added new file mode 100644 index 0000000000..995ba08ab8 --- /dev/null +++ b/core/.changelog.d/3208.added @@ -0,0 +1 @@ +[T2T1] Added user adjustable brightness setting. diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 3e8c55e164..a4e9b63fb0 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -108,6 +108,7 @@ static void _librust_qstrs(void) { MP_QSTR_bounds; MP_QSTR_br_code; MP_QSTR_br_type; + MP_QSTR_brightness__title; MP_QSTR_button; MP_QSTR_button_event; MP_QSTR_button_request; @@ -191,6 +192,7 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_value; MP_QSTR_confirm_with_info; MP_QSTR_count; + MP_QSTR_current; MP_QSTR_data; MP_QSTR_data_hash; MP_QSTR_data_len; @@ -590,6 +592,7 @@ static void _librust_qstrs(void) { MP_QSTR_send__transaction_id; MP_QSTR_send__transaction_signed; MP_QSTR_send__you_are_contributing; + MP_QSTR_set_brightness; MP_QSTR_share_words; MP_QSTR_share_words__words_in_order; MP_QSTR_share_words__wrote_down_all; diff --git a/core/embed/rust/src/storage/mod.rs b/core/embed/rust/src/storage/mod.rs index 3358a03d3f..bd6e6aec09 100644 --- a/core/embed/rust/src/storage/mod.rs +++ b/core/embed/rust/src/storage/mod.rs @@ -1,6 +1,6 @@ #![allow(dead_code)] -use crate::trezorhal::storage::{get, get_length, StorageResult}; +use crate::trezorhal::storage::{self, StorageResult}; pub const HOMESCREEN_MAX_SIZE: usize = 16384; @@ -37,14 +37,29 @@ const SAFETY_CHECK_LEVEL: u16 = APP_DEVICE | 0x0014; const EXPERIMENTAL_FEATURES: u16 = APP_DEVICE | 0x0015; const HIDE_PASSPHRASE_FROM_HOST: u16 = APP_DEVICE | 0x0016; const SLIP39_EXTENDABLE: u16 = APP_DEVICE | 0x0017; +const BRIGHTNESS: u16 = FLAG_PUBLIC | APP_DEVICE | 0x0019; pub fn get_avatar_len() -> StorageResult<usize> { - get_length(HOMESCREEN) + storage::get_length(HOMESCREEN) } pub fn load_avatar(dest: &mut [u8]) -> StorageResult<()> { let dest_len = dest.len(); - let result = get(HOMESCREEN, dest)?; + let result = storage::get(HOMESCREEN, dest)?; ensure!(dest_len == result.len(), "Internal error in load_avatar"); Ok(()) } + +pub fn get_brightness() -> StorageResult<u8> { + let mut dest: [u8; 1] = [0; 1]; + let res = storage::get(BRIGHTNESS, &mut dest); + match res { + Ok(_) => Ok(dest[0]), + Err(e) => Err(e), + } +} + +pub fn set_brightness(value: u8) -> StorageResult<()> { + let value = [value]; + storage::set(BRIGHTNESS, &value) +} diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 966cde4726..0485a6139e 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1329,6 +1329,7 @@ pub enum TranslatedString { words__settings = 929, // "Settings" words__try_again = 930, // "Try again." reset__slip39_checklist_num_groups_x_template = 931, // "Number of groups: {0}" + brightness__title = 932, // "Set brightness" } impl TranslatedString { @@ -2653,6 +2654,7 @@ impl TranslatedString { Self::words__settings => "Settings", Self::words__try_again => "Try again.", Self::reset__slip39_checklist_num_groups_x_template => "Number of groups: {0}", + Self::brightness__title => "Set brightness", } } @@ -3978,6 +3980,7 @@ impl TranslatedString { Qstr::MP_QSTR_words__settings => Some(Self::words__settings), Qstr::MP_QSTR_words__try_again => Some(Self::words__try_again), Qstr::MP_QSTR_reset__slip39_checklist_num_groups_x_template => Some(Self::reset__slip39_checklist_num_groups_x_template), + Qstr::MP_QSTR_brightness__title => Some(Self::brightness__title), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 9462752c69..45c3c5abda 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -16,6 +16,7 @@ use super::{ bl_confirm::{Confirm, ConfirmTitle}, Button, ResultScreen, WelcomeScreen, }, + theme, theme::{ bootloader::{ button_bld, button_bld_menu, button_confirm, button_wipe_cancel, button_wipe_confirm, @@ -23,7 +24,7 @@ use super::{ FIRE40, RESULT_FW_INSTALL, RESULT_WIPE, TEXT_BOLD, TEXT_NORMAL, TEXT_WIPE_BOLD, TEXT_WIPE_NORMAL, WARNING40, WELCOME_COLOR, X24, }, - BACKLIGHT_NORMAL, GREEN_LIGHT, GREY, + GREEN_LIGHT, GREY, }, ModelMercuryFeatures, }; @@ -344,7 +345,7 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { if fading { Self::fadein(); } else { - display::set_backlight(BACKLIGHT_NORMAL); + display::set_backlight(theme::backlight::get_backlight_normal()); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index 868c4c2fc2..f0e5a83f23 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -207,7 +207,7 @@ where if self.fade.take() { // Note that this is blocking and takes some time. - display::fade_backlight(theme::BACKLIGHT_NORMAL); + display::fade_backlight(theme::backlight::get_backlight_normal()); } } @@ -237,7 +237,7 @@ where if self.fade.take() { // Note that this is blocking and takes some time. - display::fade_backlight(theme::BACKLIGHT_NORMAL); + display::fade_backlight(theme::backlight::get_backlight_normal()); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index addaa682b9..3332a3c098 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -387,7 +387,7 @@ impl Component for PassphraseKeyboard { } if self.fade.take() { // Note that this is blocking and takes some time. - display::fade_backlight(theme::BACKLIGHT_NORMAL); + display::fade_backlight(theme::backlight::get_backlight_normal()); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 6a2e58f7ff..2d71d7ac6a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -19,6 +19,7 @@ mod keyboard; mod loader; #[cfg(feature = "translations")] mod number_input; +pub mod number_input_slider; #[cfg(feature = "translations")] mod page; mod progress; @@ -26,6 +27,8 @@ mod prompt_screen; mod result; mod scroll; #[cfg(feature = "translations")] +mod set_brightness; +#[cfg(feature = "translations")] mod share_words; mod simple_page; mod status_screen; @@ -60,12 +63,16 @@ pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; #[cfg(feature = "translations")] pub use number_input::{NumberInputDialog, NumberInputDialogMsg}; #[cfg(feature = "translations")] +pub use number_input_slider::NumberInputSliderDialog; +#[cfg(feature = "translations")] pub use page::ButtonPage; pub use progress::Progress; pub use prompt_screen::PromptScreen; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; #[cfg(feature = "translations")] +pub use set_brightness::SetBrightnessDialog; +#[cfg(feature = "translations")] pub use share_words::ShareWords; pub use simple_page::SimplePage; pub use status_screen::StatusScreen; diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs new file mode 100644 index 0000000000..8af13045ad --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -0,0 +1,204 @@ +use crate::ui::{ + component::{base::ComponentExt, Child, Component, Event, EventCtx}, + constant::screen, + display, + event::TouchEvent, + geometry::{Grid, Insets, Point, Rect}, + shape::{self, Renderer}, +}; + +use super::{theme, Button, ButtonMsg}; + +pub enum NumberInputSliderDialogMsg { + Changed(u16), + Confirmed, + Cancelled, +} + +pub struct NumberInputSliderDialog { + area: Rect, + input: Child<NumberInputSlider>, + cancel_button: Child<Button>, + confirm_button: Child<Button>, +} + +impl NumberInputSliderDialog { + pub fn new(min: u16, max: u16, init_value: u16) -> Self { + Self { + area: Rect::zero(), + input: NumberInputSlider::new(min, max, init_value).into_child(), + cancel_button: Button::with_text("CANCEL".into()) + .styled(theme::button_cancel()) + .into_child(), + confirm_button: Button::with_text("CONFIRM".into()) + .styled(theme::button_confirm()) + .into_child(), + } + } + + pub fn value(&self) -> u16 { + self.input.inner().value + } +} + +impl Component for NumberInputSliderDialog { + type Msg = NumberInputSliderDialogMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + let button_height = theme::BUTTON_HEIGHT; + let content_area = self.area.inset(Insets::top(2 * theme::BUTTON_SPACING)); + let (_, content_area) = content_area.split_top(30); + let (input_area, _) = content_area.split_top(15); + let (_, button_area) = content_area.split_bottom(button_height); + + let grid = Grid::new(button_area, 1, 2).with_spacing(theme::KEYBOARD_SPACING); + self.input.place(input_area.inset(Insets::sides(20))); + self.cancel_button.place(grid.row_col(0, 0)); + self.confirm_button.place(grid.row_col(0, 1)); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Some(value) = self.input.event(ctx, event) { + return Some(Self::Msg::Changed(value)); + } + if let Some(ButtonMsg::Clicked) = self.cancel_button.event(ctx, event) { + return Some(Self::Msg::Cancelled); + } + if let Some(ButtonMsg::Clicked) = self.confirm_button.event(ctx, event) { + return Some(Self::Msg::Confirmed); + }; + None + } + + fn paint(&mut self) { + self.input.paint(); + self.cancel_button.paint(); + self.confirm_button.paint(); + } + + fn render<'s>(&self, target: &mut impl Renderer<'s>) { + self.input.render(target); + self.cancel_button.render(target); + self.confirm_button.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + self.input.bounds(sink); + self.cancel_button.bounds(sink); + self.confirm_button.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for NumberInputSliderDialog { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("NumberInputSliderDialog"); + t.child("input", &self.input); + t.child("cancel_button", &self.cancel_button); + t.child("confirm_button", &self.confirm_button); + } +} + +pub struct NumberInputSlider { + area: Rect, + touch_area: Rect, + min: u16, + max: u16, + value: u16, +} + +impl NumberInputSlider { + pub fn new(min: u16, max: u16, value: u16) -> Self { + let value = value.clamp(min, max); + Self { + area: Rect::zero(), + touch_area: Rect::zero(), + min, + max, + value, + } + } + + pub fn slider_eval(&mut self, pos: Point, ctx: &mut EventCtx) -> Option<u16> { + if self.touch_area.contains(pos) { + let filled = pos.x - self.area.x0; + let filled = filled.clamp(0, self.area.width()); + let val_pct = (filled as u16 * 100) / self.area.width() as u16; + let val = (val_pct * (self.max - self.min)) / 100 + self.min; + + if val != self.value { + self.value = val; + ctx.request_paint(); + return Some(self.value); + } + } + None + } +} + +impl Component for NumberInputSlider { + type Msg = u16; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.touch_area = bounds.outset(Insets::new(40, 20, 40, 20)).clamp(screen()); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Event::Touch(touch_event) = event { + return match touch_event { + TouchEvent::TouchStart(pos) => self.slider_eval(pos, ctx), + TouchEvent::TouchMove(pos) => self.slider_eval(pos, ctx), + TouchEvent::TouchEnd(pos) => self.slider_eval(pos, ctx), + }; + } + None + } + + fn paint(&mut self) { + let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); + let fill_to = (val_pct as i16 * self.area.width()) / 100; + + display::bar_with_text_and_fill(self.area, None, theme::FG, theme::BG, 0, fill_to as _); + } + + fn render<'s>(&self, target: &mut impl Renderer<'s>) { + let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); + + shape::Bar::new(self.area) + .with_radius(2) + .with_thickness(2) + .with_bg(theme::BG) + .with_fg(theme::FG) + .render(target); + + let inner = self.area.inset(Insets::uniform(1)); + + let fill_to = (val_pct as i16 * inner.width()) / 100; + + let inner = inner.with_width(fill_to as _); + + shape::Bar::new(inner) + .with_radius(1) + .with_bg(theme::FG) + .render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for NumberInputSlider { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("NumberInputSlider"); + t.int("value", self.value as i64); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs index 22950ba10f..606a56c3fb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -164,7 +164,8 @@ where // Swipe has dimmed the screen, so fade back to normal backlight after the next // paint. - self.fade.set(Some(theme::BACKLIGHT_NORMAL)); + self.fade + .set(Some(theme::backlight::get_backlight_normal())); } fn is_cancel_visible(&self) -> bool { diff --git a/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs new file mode 100644 index 0000000000..e271a12a44 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs @@ -0,0 +1,74 @@ +use crate::{ + storage, + trezorhal::display, + ui::{ + component::{Component, Event, EventCtx}, + geometry::Rect, + shape::Renderer, + }, +}; + +use super::{ + super::theme, + number_input_slider::{NumberInputSliderDialog, NumberInputSliderDialogMsg}, + CancelConfirmMsg, +}; + +pub struct SetBrightnessDialog(NumberInputSliderDialog); + +impl SetBrightnessDialog { + pub fn new(current: Option<u16>) -> Self { + let current = current.unwrap_or(theme::backlight::get_backlight_normal()); + Self(NumberInputSliderDialog::new( + theme::backlight::get_backlight_min(), + theme::backlight::get_backlight_max(), + current, + )) + } +} + +impl Component for SetBrightnessDialog { + type Msg = CancelConfirmMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.0.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + match self.0.event(ctx, event) { + Some(NumberInputSliderDialogMsg::Changed(value)) => { + display::backlight(value as _); + None + } + Some(NumberInputSliderDialogMsg::Cancelled) => Some(CancelConfirmMsg::Cancelled), + Some(NumberInputSliderDialogMsg::Confirmed) => { + match storage::set_brightness(self.0.value() as _) { + Ok(_) => Some(CancelConfirmMsg::Confirmed), + Err(_) => Some(CancelConfirmMsg::Cancelled), // TODO: handle error + } + } + None => None, + } + } + + fn paint(&mut self) { + self.0.paint() + } + + fn render<'s>(&self, target: &mut impl Renderer<'s>) { + self.0.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.0.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for SetBrightnessDialog { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("SetBrightnessDialog"); + t.child("input", &self.0); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs index 259ee1f626..d8c898b181 100644 --- a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs @@ -84,7 +84,8 @@ where // Swipe has dimmed the screen, so fade back to normal backlight after the next // paint. - self.fade.set(Some(theme::BACKLIGHT_NORMAL)); + self.fade + .set(Some(theme::backlight::get_backlight_normal())); } fn is_horizontal(&self) -> bool { diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 4373a2483f..9c459351bb 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -10,6 +10,7 @@ use crate::{ translations::TR, trezorhal::model, ui::{ + backlight::BACKLIGHT_LEVELS_OBJ, component::{ base::ComponentExt, connect::Connect, @@ -43,8 +44,8 @@ use super::{ FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, SelectWordCount, SelectWordCountMsg, - SimplePage, Slip39Input, StatusScreen, SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, - VerticalMenuChoiceMsg, + SetBrightnessDialog, SimplePage, Slip39Input, StatusScreen, SwipeUpScreen, SwipeUpScreenMsg, + VerticalMenu, VerticalMenuChoiceMsg, }, flow, theme, }; @@ -247,6 +248,15 @@ where } } +impl ComponentMsgObj for SetBrightnessDialog { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + CancelConfirmMsg::Confirmed => Ok(CONFIRMED.as_obj()), + CancelConfirmMsg::Cancelled => Ok(CANCELLED.as_obj()), + } + } +} + impl ComponentMsgObj for Progress { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() @@ -1184,6 +1194,18 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } +extern "C" fn new_set_brightness(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let current: Option<u16> = kwargs.get(Qstr::MP_QSTR_current)?.try_into_option()?; + let obj = LayoutObj::new(Frame::centered( + TR::brightness__title.into(), + SetBrightnessDialog::new(current), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1855,6 +1877,13 @@ pub static mp_module_trezorui2: Module = obj_module! { /// info.""" Qstr::MP_QSTR_flow_request_number => obj_fn_kw!(0, flow::request_number::new_request_number).as_obj(), + /// def set_brightness( + /// *, + /// current: int | None = None + /// ) -> LayoutObj[UiResult]: + /// """Show the brightness configuration dialog.""" + Qstr::MP_QSTR_set_brightness => obj_fn_kw!(0, new_set_brightness).as_obj(), + /// def show_checklist( /// *, /// title: str, diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/model_mercury/mod.rs index cb3336af4b..abcf538772 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/mod.rs @@ -18,17 +18,17 @@ pub struct ModelMercuryFeatures; impl UIFeaturesCommon for ModelMercuryFeatures { fn fadein() { #[cfg(feature = "backlight")] - crate::ui::display::fade_backlight_duration(theme::BACKLIGHT_NORMAL, 150); + crate::ui::display::fade_backlight_duration(theme::backlight::get_backlight_normal(), 150); } fn fadeout() { #[cfg(feature = "backlight")] - crate::ui::display::fade_backlight_duration(theme::BACKLIGHT_DIM, 150); + crate::ui::display::fade_backlight_duration(theme::backlight::get_backlight_dim(), 150); } fn backlight_on() { #[cfg(feature = "backlight")] - crate::ui::display::set_backlight(theme::BACKLIGHT_NORMAL); + crate::ui::display::set_backlight(theme::backlight::get_backlight_normal()); } const SCREEN: Rect = constant::SCREEN; diff --git a/core/embed/rust/src/ui/model_mercury/theme/backlight.rs b/core/embed/rust/src/ui/model_mercury/theme/backlight.rs new file mode 100644 index 0000000000..37a788c1d9 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/theme/backlight.rs @@ -0,0 +1,52 @@ +#[cfg(not(feature = "bootloader"))] +use crate::storage; + +// Typical backlight values. +const BACKLIGHT_NORMAL: u8 = 150; +const BACKLIGHT_LOW: u8 = 45; +const BACKLIGHT_DIM: u8 = 5; +const BACKLIGHT_NONE: u8 = 2; +const BACKLIGHT_MIN: u8 = 10; +const BACKLIGHT_MAX: u8 = 255; + +#[cfg(feature = "bootloader")] +pub fn get_backlight_normal() -> u16 { + BACKLIGHT_NORMAL.into() +} + +#[cfg(not(feature = "bootloader"))] +pub fn get_backlight_normal() -> u16 { + storage::get_brightness() + .unwrap_or(BACKLIGHT_NORMAL) + .clamp(BACKLIGHT_MIN, BACKLIGHT_MAX) + .into() +} + +#[cfg(feature = "bootloader")] +pub fn get_backlight_low() -> u16 { + BACKLIGHT_LOW.into() +} + +#[cfg(not(feature = "bootloader"))] +pub fn get_backlight_low() -> u16 { + storage::get_brightness() + .unwrap_or(BACKLIGHT_LOW) + .clamp(BACKLIGHT_MIN, BACKLIGHT_LOW) + .into() +} + +pub fn get_backlight_dim() -> u16 { + BACKLIGHT_DIM.into() +} + +pub fn get_backlight_none() -> u16 { + BACKLIGHT_NONE.into() +} + +pub fn get_backlight_max() -> u16 { + BACKLIGHT_MAX.into() +} + +pub fn get_backlight_min() -> u16 { + BACKLIGHT_MIN.into() +} diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index bf5ce5db2c..616ab01b64 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -1,5 +1,7 @@ pub mod bootloader; +pub mod backlight; + use crate::{ time::Duration, ui::{ @@ -18,13 +20,6 @@ use num_traits::FromPrimitive; pub const ERASE_HOLD_DURATION: Duration = Duration::from_millis(1500); -// Typical backlight values. -pub const BACKLIGHT_NORMAL: u16 = 150; -pub const BACKLIGHT_LOW: u16 = 45; -pub const BACKLIGHT_DIM: u16 = 5; -pub const BACKLIGHT_NONE: u16 = 2; -pub const BACKLIGHT_MAX: u16 = 255; - // Color palette. pub const WHITE: Color = Color::rgb(0xFF, 0xFF, 0xFF); pub const BLACK: Color = Color::rgb(0, 0, 0); diff --git a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs index 64b0f20429..35a7d499dc 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs @@ -16,6 +16,7 @@ use super::{ bl_confirm::{Confirm, ConfirmTitle}, Button, ResultScreen, WelcomeScreen, }, + theme, theme::{ bootloader::{ button_bld, button_bld_menu, button_confirm, button_wipe_cancel, button_wipe_confirm, @@ -23,7 +24,7 @@ use super::{ FIRE40, RESULT_FW_INSTALL, RESULT_INITIAL, RESULT_WIPE, TEXT_BOLD, TEXT_NORMAL, TEXT_WIPE_BOLD, TEXT_WIPE_NORMAL, WARNING40, WELCOME_COLOR, X24, }, - BACKLIGHT_NORMAL, FG, + FG, }, ModelTTFeatures, }; @@ -335,7 +336,7 @@ impl UIFeaturesBootloader for ModelTTFeatures { if fading { Self::fadein(); } else { - display::set_backlight(BACKLIGHT_NORMAL); + display::set_backlight(theme::backlight::get_backlight_normal()); } } diff --git a/core/embed/rust/src/ui/model_tt/component/fido.rs b/core/embed/rust/src/ui/model_tt/component/fido.rs index 96aa3687e1..35af98f8a2 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido.rs +++ b/core/embed/rust/src/ui/model_tt/component/fido.rs @@ -209,7 +209,7 @@ where if self.fade.take() { // Note that this is blocking and takes some time. - display::fade_backlight(theme::BACKLIGHT_NORMAL); + display::fade_backlight(theme::backlight::get_backlight_normal()); } } @@ -239,7 +239,7 @@ where if self.fade.take() { // Note that this is blocking and takes some time. - display::fade_backlight(theme::BACKLIGHT_NORMAL); + display::fade_backlight(theme::backlight::get_backlight_normal()); } } diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs index abcd00baac..cfc2bccedd 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs @@ -297,7 +297,7 @@ impl Component for PassphraseKeyboard { } if self.fade.take() { // Note that this is blocking and takes some time. - display::fade_backlight(theme::BACKLIGHT_NORMAL); + display::fade_backlight(theme::backlight::get_backlight_normal()); } } @@ -311,7 +311,7 @@ impl Component for PassphraseKeyboard { } if self.fade.take() { // Note that this is blocking and takes some time. - display::fade_backlight(theme::BACKLIGHT_NORMAL); + display::fade_backlight(theme::backlight::get_backlight_normal()); } } diff --git a/core/embed/rust/src/ui/model_tt/component/mod.rs b/core/embed/rust/src/ui/model_tt/component/mod.rs index ec6d1b0b75..e3475d6679 100644 --- a/core/embed/rust/src/ui/model_tt/component/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/mod.rs @@ -16,11 +16,13 @@ mod keyboard; mod loader; #[cfg(feature = "translations")] mod number_input; +pub mod number_input_slider; #[cfg(feature = "translations")] mod page; mod progress; mod result; mod scroll; +mod set_brightness; mod simple_page; mod swipe; mod welcome_screen; @@ -50,11 +52,13 @@ pub use keyboard::{ pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; #[cfg(feature = "translations")] pub use number_input::{NumberInputDialog, NumberInputDialogMsg}; +pub use number_input_slider::NumberInputSliderDialog; #[cfg(feature = "translations")] pub use page::ButtonPage; pub use progress::Progress; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; +pub use set_brightness::SetBrightnessDialog; pub use simple_page::SimplePage; pub use swipe::{Swipe, SwipeDirection}; pub use welcome_screen::WelcomeScreen; diff --git a/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs b/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs new file mode 100644 index 0000000000..8af13045ad --- /dev/null +++ b/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs @@ -0,0 +1,204 @@ +use crate::ui::{ + component::{base::ComponentExt, Child, Component, Event, EventCtx}, + constant::screen, + display, + event::TouchEvent, + geometry::{Grid, Insets, Point, Rect}, + shape::{self, Renderer}, +}; + +use super::{theme, Button, ButtonMsg}; + +pub enum NumberInputSliderDialogMsg { + Changed(u16), + Confirmed, + Cancelled, +} + +pub struct NumberInputSliderDialog { + area: Rect, + input: Child<NumberInputSlider>, + cancel_button: Child<Button>, + confirm_button: Child<Button>, +} + +impl NumberInputSliderDialog { + pub fn new(min: u16, max: u16, init_value: u16) -> Self { + Self { + area: Rect::zero(), + input: NumberInputSlider::new(min, max, init_value).into_child(), + cancel_button: Button::with_text("CANCEL".into()) + .styled(theme::button_cancel()) + .into_child(), + confirm_button: Button::with_text("CONFIRM".into()) + .styled(theme::button_confirm()) + .into_child(), + } + } + + pub fn value(&self) -> u16 { + self.input.inner().value + } +} + +impl Component for NumberInputSliderDialog { + type Msg = NumberInputSliderDialogMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + let button_height = theme::BUTTON_HEIGHT; + let content_area = self.area.inset(Insets::top(2 * theme::BUTTON_SPACING)); + let (_, content_area) = content_area.split_top(30); + let (input_area, _) = content_area.split_top(15); + let (_, button_area) = content_area.split_bottom(button_height); + + let grid = Grid::new(button_area, 1, 2).with_spacing(theme::KEYBOARD_SPACING); + self.input.place(input_area.inset(Insets::sides(20))); + self.cancel_button.place(grid.row_col(0, 0)); + self.confirm_button.place(grid.row_col(0, 1)); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Some(value) = self.input.event(ctx, event) { + return Some(Self::Msg::Changed(value)); + } + if let Some(ButtonMsg::Clicked) = self.cancel_button.event(ctx, event) { + return Some(Self::Msg::Cancelled); + } + if let Some(ButtonMsg::Clicked) = self.confirm_button.event(ctx, event) { + return Some(Self::Msg::Confirmed); + }; + None + } + + fn paint(&mut self) { + self.input.paint(); + self.cancel_button.paint(); + self.confirm_button.paint(); + } + + fn render<'s>(&self, target: &mut impl Renderer<'s>) { + self.input.render(target); + self.cancel_button.render(target); + self.confirm_button.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area); + self.input.bounds(sink); + self.cancel_button.bounds(sink); + self.confirm_button.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for NumberInputSliderDialog { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("NumberInputSliderDialog"); + t.child("input", &self.input); + t.child("cancel_button", &self.cancel_button); + t.child("confirm_button", &self.confirm_button); + } +} + +pub struct NumberInputSlider { + area: Rect, + touch_area: Rect, + min: u16, + max: u16, + value: u16, +} + +impl NumberInputSlider { + pub fn new(min: u16, max: u16, value: u16) -> Self { + let value = value.clamp(min, max); + Self { + area: Rect::zero(), + touch_area: Rect::zero(), + min, + max, + value, + } + } + + pub fn slider_eval(&mut self, pos: Point, ctx: &mut EventCtx) -> Option<u16> { + if self.touch_area.contains(pos) { + let filled = pos.x - self.area.x0; + let filled = filled.clamp(0, self.area.width()); + let val_pct = (filled as u16 * 100) / self.area.width() as u16; + let val = (val_pct * (self.max - self.min)) / 100 + self.min; + + if val != self.value { + self.value = val; + ctx.request_paint(); + return Some(self.value); + } + } + None + } +} + +impl Component for NumberInputSlider { + type Msg = u16; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.touch_area = bounds.outset(Insets::new(40, 20, 40, 20)).clamp(screen()); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Event::Touch(touch_event) = event { + return match touch_event { + TouchEvent::TouchStart(pos) => self.slider_eval(pos, ctx), + TouchEvent::TouchMove(pos) => self.slider_eval(pos, ctx), + TouchEvent::TouchEnd(pos) => self.slider_eval(pos, ctx), + }; + } + None + } + + fn paint(&mut self) { + let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); + let fill_to = (val_pct as i16 * self.area.width()) / 100; + + display::bar_with_text_and_fill(self.area, None, theme::FG, theme::BG, 0, fill_to as _); + } + + fn render<'s>(&self, target: &mut impl Renderer<'s>) { + let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); + + shape::Bar::new(self.area) + .with_radius(2) + .with_thickness(2) + .with_bg(theme::BG) + .with_fg(theme::FG) + .render(target); + + let inner = self.area.inset(Insets::uniform(1)); + + let fill_to = (val_pct as i16 * inner.width()) / 100; + + let inner = inner.with_width(fill_to as _); + + shape::Bar::new(inner) + .with_radius(1) + .with_bg(theme::FG) + .render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for NumberInputSlider { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("NumberInputSlider"); + t.int("value", self.value as i64); + } +} diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index 3cf8212638..83ba81652f 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -163,7 +163,8 @@ where // Swipe has dimmed the screen, so fade back to normal backlight after the next // paint. - self.fade.set(Some(theme::BACKLIGHT_NORMAL)); + self.fade + .set(Some(theme::backlight::get_backlight_normal())); } fn is_cancel_visible(&self) -> bool { diff --git a/core/embed/rust/src/ui/model_tt/component/set_brightness.rs b/core/embed/rust/src/ui/model_tt/component/set_brightness.rs new file mode 100644 index 0000000000..e271a12a44 --- /dev/null +++ b/core/embed/rust/src/ui/model_tt/component/set_brightness.rs @@ -0,0 +1,74 @@ +use crate::{ + storage, + trezorhal::display, + ui::{ + component::{Component, Event, EventCtx}, + geometry::Rect, + shape::Renderer, + }, +}; + +use super::{ + super::theme, + number_input_slider::{NumberInputSliderDialog, NumberInputSliderDialogMsg}, + CancelConfirmMsg, +}; + +pub struct SetBrightnessDialog(NumberInputSliderDialog); + +impl SetBrightnessDialog { + pub fn new(current: Option<u16>) -> Self { + let current = current.unwrap_or(theme::backlight::get_backlight_normal()); + Self(NumberInputSliderDialog::new( + theme::backlight::get_backlight_min(), + theme::backlight::get_backlight_max(), + current, + )) + } +} + +impl Component for SetBrightnessDialog { + type Msg = CancelConfirmMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.0.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + match self.0.event(ctx, event) { + Some(NumberInputSliderDialogMsg::Changed(value)) => { + display::backlight(value as _); + None + } + Some(NumberInputSliderDialogMsg::Cancelled) => Some(CancelConfirmMsg::Cancelled), + Some(NumberInputSliderDialogMsg::Confirmed) => { + match storage::set_brightness(self.0.value() as _) { + Ok(_) => Some(CancelConfirmMsg::Confirmed), + Err(_) => Some(CancelConfirmMsg::Cancelled), // TODO: handle error + } + } + None => None, + } + } + + fn paint(&mut self) { + self.0.paint() + } + + fn render<'s>(&self, target: &mut impl Renderer<'s>) { + self.0.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + self.0.bounds(sink); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for SetBrightnessDialog { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("SetBrightnessDialog"); + t.child("input", &self.0); + } +} diff --git a/core/embed/rust/src/ui/model_tt/component/simple_page.rs b/core/embed/rust/src/ui/model_tt/component/simple_page.rs index 0eaad57150..aa851a0055 100644 --- a/core/embed/rust/src/ui/model_tt/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_tt/component/simple_page.rs @@ -81,7 +81,8 @@ where // Swipe has dimmed the screen, so fade back to normal backlight after the next // paint. - self.fade.set(Some(theme::BACKLIGHT_NORMAL)); + self.fade + .set(Some(theme::backlight::get_backlight_normal())); } fn is_horizontal(&self) -> bool { diff --git a/core/embed/rust/src/ui/model_tt/component/swipe.rs b/core/embed/rust/src/ui/model_tt/component/swipe.rs index ec86d517f1..541cb87793 100644 --- a/core/embed/rust/src/ui/model_tt/component/swipe.rs +++ b/core/embed/rust/src/ui/model_tt/component/swipe.rs @@ -3,11 +3,10 @@ use crate::ui::{ display, event::TouchEvent, geometry::{Point, Rect}, + model_tt::theme::backlight, shape::Renderer, }; -use super::theme; - pub enum SwipeDirection { Up, Down, @@ -37,8 +36,8 @@ impl Swipe { allow_down: false, allow_left: false, allow_right: false, - backlight_start: theme::BACKLIGHT_NORMAL, - backlight_end: theme::BACKLIGHT_NONE, + backlight_start: backlight::get_backlight_normal(), + backlight_end: backlight::get_backlight_none(), origin: None, } } diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index cf50c034b2..f6bdb79884 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -44,7 +44,8 @@ use super::{ FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, - SelectWordCount, SelectWordCountMsg, SelectWordMsg, SimplePage, Slip39Input, + SelectWordCount, SelectWordCountMsg, SelectWordMsg, SetBrightnessDialog, SimplePage, + Slip39Input, }, theme, }; @@ -220,6 +221,15 @@ where } } +impl ComponentMsgObj for SetBrightnessDialog { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + match msg { + CancelConfirmMsg::Cancelled => Ok(CANCELLED.as_obj()), + CancelConfirmMsg::Confirmed => Ok(CONFIRMED.as_obj()), + } + } +} + impl ComponentMsgObj for Progress { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() @@ -1293,6 +1303,19 @@ extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut M unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } +extern "C" fn new_set_brightness(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + let block = move |_args: &[Obj], kwargs: &Map| { + let current: Option<u16> = kwargs.get(Qstr::MP_QSTR_current)?.try_into_option()?; + let obj = LayoutObj::new(Frame::centered( + theme::label_title(), + TR::brightness__title.into(), + SetBrightnessDialog::new(current), + ))?; + Ok(obj.into()) + }; + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } +} + extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1990,6 +2013,13 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Number input with + and - buttons, description, and info button.""" Qstr::MP_QSTR_request_number => obj_fn_kw!(0, new_request_number).as_obj(), + /// def set_brightness( + /// *, + /// current: int | None = None + /// ) -> LayoutObj[UiResult]: + /// """Show the brightness configuration dialog.""" + Qstr::MP_QSTR_set_brightness => obj_fn_kw!(0, new_set_brightness).as_obj(), + /// def show_checklist( /// *, /// title: str, diff --git a/core/embed/rust/src/ui/model_tt/mod.rs b/core/embed/rust/src/ui/model_tt/mod.rs index 4e54439e7d..1789dd188a 100644 --- a/core/embed/rust/src/ui/model_tt/mod.rs +++ b/core/embed/rust/src/ui/model_tt/mod.rs @@ -6,6 +6,9 @@ pub mod component; pub mod constant; pub mod theme; +#[cfg(feature = "backlight")] +use crate::ui::model_tt::theme::backlight; + #[cfg(feature = "micropython")] pub mod layout; @@ -19,17 +22,17 @@ pub struct ModelTTFeatures; impl UIFeaturesCommon for ModelTTFeatures { fn fadein() { #[cfg(feature = "backlight")] - crate::ui::display::fade_backlight_duration(theme::BACKLIGHT_NORMAL, 150); + crate::ui::display::fade_backlight_duration(backlight::get_backlight_normal(), 150); } fn fadeout() { #[cfg(feature = "backlight")] - crate::ui::display::fade_backlight_duration(theme::BACKLIGHT_DIM, 150); + crate::ui::display::fade_backlight_duration(backlight::get_backlight_normal(), 150); } fn backlight_on() { #[cfg(feature = "backlight")] - crate::ui::display::set_backlight(theme::BACKLIGHT_NORMAL); + crate::ui::display::set_backlight(backlight::get_backlight_normal()); } const SCREEN: Rect = constant::SCREEN; diff --git a/core/embed/rust/src/ui/model_tt/theme/backlight.rs b/core/embed/rust/src/ui/model_tt/theme/backlight.rs new file mode 100644 index 0000000000..37a788c1d9 --- /dev/null +++ b/core/embed/rust/src/ui/model_tt/theme/backlight.rs @@ -0,0 +1,52 @@ +#[cfg(not(feature = "bootloader"))] +use crate::storage; + +// Typical backlight values. +const BACKLIGHT_NORMAL: u8 = 150; +const BACKLIGHT_LOW: u8 = 45; +const BACKLIGHT_DIM: u8 = 5; +const BACKLIGHT_NONE: u8 = 2; +const BACKLIGHT_MIN: u8 = 10; +const BACKLIGHT_MAX: u8 = 255; + +#[cfg(feature = "bootloader")] +pub fn get_backlight_normal() -> u16 { + BACKLIGHT_NORMAL.into() +} + +#[cfg(not(feature = "bootloader"))] +pub fn get_backlight_normal() -> u16 { + storage::get_brightness() + .unwrap_or(BACKLIGHT_NORMAL) + .clamp(BACKLIGHT_MIN, BACKLIGHT_MAX) + .into() +} + +#[cfg(feature = "bootloader")] +pub fn get_backlight_low() -> u16 { + BACKLIGHT_LOW.into() +} + +#[cfg(not(feature = "bootloader"))] +pub fn get_backlight_low() -> u16 { + storage::get_brightness() + .unwrap_or(BACKLIGHT_LOW) + .clamp(BACKLIGHT_MIN, BACKLIGHT_LOW) + .into() +} + +pub fn get_backlight_dim() -> u16 { + BACKLIGHT_DIM.into() +} + +pub fn get_backlight_none() -> u16 { + BACKLIGHT_NONE.into() +} + +pub fn get_backlight_max() -> u16 { + BACKLIGHT_MAX.into() +} + +pub fn get_backlight_min() -> u16 { + BACKLIGHT_MIN.into() +} diff --git a/core/embed/rust/src/ui/model_tt/theme/mod.rs b/core/embed/rust/src/ui/model_tt/theme/mod.rs index 2cfddd30a5..77ccbc11ac 100644 --- a/core/embed/rust/src/ui/model_tt/theme/mod.rs +++ b/core/embed/rust/src/ui/model_tt/theme/mod.rs @@ -1,3 +1,4 @@ +pub mod backlight; pub mod bootloader; use crate::{ @@ -18,13 +19,6 @@ use num_traits::FromPrimitive; pub const ERASE_HOLD_DURATION: Duration = Duration::from_millis(1500); -// Typical backlight values. -pub const BACKLIGHT_NORMAL: u16 = 150; -pub const BACKLIGHT_LOW: u16 = 45; -pub const BACKLIGHT_DIM: u16 = 5; -pub const BACKLIGHT_NONE: u16 = 2; -pub const BACKLIGHT_MAX: u16 = 255; - // Color palette. pub const WHITE: Color = Color::rgb(0xFF, 0xFF, 0xFF); pub const BLACK: Color = Color::rgb(0, 0, 0); diff --git a/core/embed/trezorhal/stm32f4/backlight_pwm.c b/core/embed/trezorhal/stm32f4/backlight_pwm.c index e8dcff1d29..7072b26f2d 100644 --- a/core/embed/trezorhal/stm32f4/backlight_pwm.c +++ b/core/embed/trezorhal/stm32f4/backlight_pwm.c @@ -4,9 +4,11 @@ #include STM32_HAL_H #include TREZOR_BOARD -#define TIM_FREQ 1000000 +#define TIM_FREQ 10000000 -#define LED_PWM_PRESCALER (SystemCoreClock / TIM_FREQ - 1) // 1 MHz +#define LED_PWM_PRESCALER (SystemCoreClock / TIM_FREQ - 1) + +#define LED_PWM_PRESCALER_SLOW (SystemCoreClock / 1000000 - 1) // 1 MHz #define LED_PWM_TIM_PERIOD (TIM_FREQ / BACKLIGHT_PWM_FREQ) @@ -16,6 +18,30 @@ static int pwm_period = 0; int backlight_pwm_set(int val) { if (BACKLIGHT != val && val >= 0 && val <= 255) { + // TPS61043 goes to shutdown when duty cycle is 0 (after 32ms), + // so we need to set GPIO to high for at least 500us + // to wake it up. + if (BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR == 0) { + GPIO_InitTypeDef GPIO_InitStructure = {0}; + + HAL_GPIO_WritePin(BACKLIGHT_PWM_PORT, BACKLIGHT_PWM_PIN, GPIO_PIN_SET); + // LCD_PWM/PA7 (backlight control) + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Pin = BACKLIGHT_PWM_PIN; + HAL_GPIO_Init(BACKLIGHT_PWM_PORT, &GPIO_InitStructure); + + hal_delay_us(500); + + GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Alternate = BACKLIGHT_PWM_TIM_AF; + GPIO_InitStructure.Pin = BACKLIGHT_PWM_PIN; + HAL_GPIO_Init(BACKLIGHT_PWM_PORT, &GPIO_InitStructure); + } + BACKLIGHT = val; BACKLIGHT_PWM_TIM->CCR1 = (pwm_period * val) / 255; } @@ -157,6 +183,7 @@ void backlight_pwm_reinit(void) { BACKLIGHT = prev_val; pwm_period = LED_PWM_TIM_PERIOD; + BACKLIGHT_PWM_TIM->PSC = LED_PWM_PRESCALER; BACKLIGHT_PWM_TIM->CR1 |= TIM_CR1_ARPE; BACKLIGHT_PWM_TIM->CR2 |= TIM_CR2_CCPC; BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR = (pwm_period * prev_val) / 255; @@ -176,6 +203,7 @@ void backlight_pwm_set_slow(void) { prev_val = prev_val > 255 ? 255 : prev_val; pwm_period = LED_PWM_SLOW_TIM_PERIOD; + BACKLIGHT_PWM_TIM->PSC = LED_PWM_PRESCALER_SLOW; BACKLIGHT_PWM_TIM->CR1 |= TIM_CR1_ARPE; BACKLIGHT_PWM_TIM->CR2 |= TIM_CR2_CCPC; BACKLIGHT_PWM_TIM->ARR = LED_PWM_SLOW_TIM_PERIOD - 1; diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 00fa91c97a..ed25b725b2 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -421,6 +421,14 @@ def flow_request_number( info.""" +# rust/src/ui/model_mercury/layout.rs +def set_brightness( + *, + current: int | None = None +) -> LayoutObj[UiResult]: + """Show the brightness configuration dialog.""" + + # rust/src/ui/model_mercury/layout.rs def show_checklist( *, @@ -1040,6 +1048,16 @@ def confirm_firmware_update( # rust/src/ui/model_tr/layout.rs def show_wait_text(message: str, /) -> None: """Show single-line text in the middle of the screen.""" + + +# rust/src/ui/model_tr/layout.rs +class BacklightLevels: + """Backlight levels. Values dynamically update based on user settings.""" + MAX: ClassVar[int] + NORMAL: ClassVar[int] + LOW: ClassVar[int] + DIM: ClassVar[int] + NONE: ClassVar[int] from trezor import utils T = TypeVar("T") @@ -1453,6 +1471,14 @@ def request_number( """Number input with + and - buttons, description, and info button.""" +# rust/src/ui/model_tt/layout.rs +def set_brightness( + *, + current: int | None = None +) -> LayoutObj[UiResult]: + """Show the brightness configuration dialog.""" + + # rust/src/ui/model_tt/layout.rs def show_checklist( *, diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index cb49e88df3..c1a18b1ff7 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -79,6 +79,7 @@ class TR: bitcoin__unverified_external_inputs: str = "The transaction contains unverified external inputs." bitcoin__valid_signature: str = "The signature is valid." bitcoin__voting_rights: str = "Voting rights to:" + brightness__title: str = "Set brightness" buttons__abort: str = "Abort" buttons__access: str = "Access" buttons__again: str = "Again" diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 8a10b98bfc..5275e2dd5d 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -357,6 +357,8 @@ import apps.management.reset_device.layout apps.management.sd_protect import apps.management.sd_protect +apps.management.set_brightness +import apps.management.set_brightness apps.management.set_u2f_counter import apps.management.set_u2f_counter apps.management.show_tutorial diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 4717eca9d3..3e4317dfd8 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -135,6 +135,9 @@ def get_features() -> Features: ] ) + if utils.USE_BACKLIGHT: + f.capabilities.append(Capability.Brightness) + # Only some models are capable of SD card if utils.USE_SD_CARD: from trezor import sdcard @@ -434,7 +437,7 @@ def reload_settings_from_storage() -> None: ) wire.EXPERIMENTAL_ENABLED = storage_device.get_experimental_features() if ui.display.orientation() != storage_device.get_rotation(): - ui.backlight_fade(ui.style.BACKLIGHT_DIM) + ui.backlight_fade(ui.style.get_backlight_dim()) ui.display.orientation(storage_device.get_rotation()) diff --git a/core/src/apps/management/set_brightness.py b/core/src/apps/management/set_brightness.py new file mode 100644 index 0000000000..0cc7dc34f3 --- /dev/null +++ b/core/src/apps/management/set_brightness.py @@ -0,0 +1,17 @@ +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from trezor.messages import SetBrightness, Success + + +async def set_brightness(_msg: SetBrightness) -> Success: + import storage.device as storage_device + from trezor.messages import Success + from trezor.ui.layouts import set_brightness + from trezor.wire import NotInitialized + + if not storage_device.is_initialized(): + raise NotInitialized("Device is not initialized") + + await set_brightness() + return Success(message="Settings applied") diff --git a/core/src/apps/workflow_handlers.py b/core/src/apps/workflow_handlers.py index d8d320098a..204e27a8cb 100644 --- a/core/src/apps/workflow_handlers.py +++ b/core/src/apps/workflow_handlers.py @@ -58,6 +58,9 @@ def _find_message_handler_module(msg_type: int) -> str: if utils.INTERNAL_MODEL in ("T2B1",) and msg_type == MessageType.ShowDeviceTutorial: return "apps.management.show_tutorial" + if utils.USE_BACKLIGHT and msg_type == MessageType.SetBrightness: + return "apps.management.set_brightness" + if utils.USE_SD_CARD and msg_type == MessageType.SdProtect: return "apps.management.sd_protect" diff --git a/core/src/boot.py b/core/src/boot.py index be33be964c..134d27e0e4 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -49,7 +49,7 @@ async def bootscreen() -> None: if can_lock_device(): enforce_welcome_screen_duration() - ui.backlight_fade(ui.style.BACKLIGHT_DIM) + ui.backlight_fade(ui.style.get_backlight_dim()) ui.display.orientation(storage.device.get_rotation()) await lockscreen await verify_user_pin() @@ -64,7 +64,7 @@ async def bootscreen() -> None: if rotation != ui.display.orientation(): # there is a slight delay before next screen is shown, # so we don't fade unless there is a change of orientation - ui.backlight_fade(ui.style.BACKLIGHT_DIM) + ui.backlight_fade(ui.style.get_backlight_dim()) ui.display.orientation(rotation) allow_all_loader_messages() return diff --git a/core/src/storage/common.py b/core/src/storage/common.py index ba6c4b89ef..a9f3364af4 100644 --- a/core/src/storage/common.py +++ b/core/src/storage/common.py @@ -49,12 +49,12 @@ def get_bool(app: int, key: int, public: bool = False) -> bool: return get(app, key, public) == _TRUE_BYTE -def set_uint8(app: int, key: int, val: int) -> None: - set(app, key, val.to_bytes(1, "big")) +def set_uint8(app: int, key: int, val: int, public: bool = False) -> None: + set(app, key, val.to_bytes(1, "big"), public) -def get_uint8(app: int, key: int) -> int | None: - val = get(app, key) +def get_uint8(app: int, key: int, public: bool = False) -> int | None: + val = get(app, key, public) if not val: return None return int.from_bytes(val, "big") diff --git a/core/src/storage/device.py b/core/src/storage/device.py index ff658105fe..0d01363f6d 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -36,6 +36,8 @@ _SAFETY_CHECK_LEVEL = const(0x14) # int _EXPERIMENTAL_FEATURES = const(0x15) # bool (0x01 or empty) _HIDE_PASSPHRASE_FROM_HOST = const(0x16) # bool (0x01 or empty) +# unused from python: +# _BRIGHTNESS = const(0x18) # int if utils.USE_THP: _DEVICE_SECRET = const(0x17) # bytes diff --git a/core/src/trezor/enums/Capability.py b/core/src/trezor/enums/Capability.py index 5cc5dbdddc..a7472fdf30 100644 --- a/core/src/trezor/enums/Capability.py +++ b/core/src/trezor/enums/Capability.py @@ -10,6 +10,7 @@ ShamirGroups = 16 PassphraseEntry = 17 Translations = 19 +Brightness = 20 if not utils.BITCOIN_ONLY: Bitcoin_like = 2 Binance = 3 diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py index 0023ef9f15..a078d23942 100644 --- a/core/src/trezor/enums/MessageType.py +++ b/core/src/trezor/enums/MessageType.py @@ -53,6 +53,7 @@ ChangeLanguage = 990 TranslationDataRequest = 991 TranslationDataAck = 992 +SetBrightness = 993 FirmwareErase = 6 FirmwareUpload = 7 FirmwareRequest = 8 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 21da810ade..a5c314cc46 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -70,6 +70,7 @@ class MessageType(IntEnum): ChangeLanguage = 990 TranslationDataRequest = 991 TranslationDataAck = 992 + SetBrightness = 993 SetU2FCounter = 63 GetNextU2FCounter = 80 NextU2FCounter = 81 @@ -459,6 +460,7 @@ class Capability(IntEnum): PassphraseEntry = 17 Solana = 18 Translations = 19 + Brightness = 20 class SdProtectOperationType(IntEnum): DISABLE = 0 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index f778062021..349be22442 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2776,6 +2776,20 @@ class UnlockBootloader(protobuf.MessageType): def is_type_of(cls, msg: Any) -> TypeGuard["UnlockBootloader"]: return isinstance(msg, cls) + class SetBrightness(protobuf.MessageType): + value: "int | None" + + def __init__( + self, + *, + value: "int | None" = None, + ) -> None: + pass + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["SetBrightness"]: + return isinstance(msg, cls) + class Slip39Group(protobuf.MessageType): member_threshold: "int" member_count: "int" diff --git a/core/src/trezor/ui/__init__.py b/core/src/trezor/ui/__init__.py index 3e4b7adddf..785447b9cd 100644 --- a/core/src/trezor/ui/__init__.py +++ b/core/src/trezor/ui/__init__.py @@ -62,12 +62,12 @@ async def _alert(count: int) -> None: long_sleep = loop.sleep(80) for i in range(count * 2): if i % 2 == 0: - display.backlight(style.BACKLIGHT_MAX) + display.backlight(style.get_backlight_max()) await short_sleep else: - display.backlight(style.BACKLIGHT_DIM) + display.backlight(style.get_backlight_dim()) await long_sleep - display.backlight(style.BACKLIGHT_NORMAL) + display.backlight(style.get_backlight_normal()) global _alert_in_progress _alert_in_progress = False diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 299b206f09..586e6e6b91 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -30,7 +30,6 @@ class RustLayout(ui.Layout): - BACKLIGHT_LEVEL = ui.style.BACKLIGHT_NORMAL # pylint: disable=super-init-not-called def __init__(self, layout: Any): @@ -39,6 +38,7 @@ def __init__(self, layout: Any): self.timer = loop.Timer() self.layout.attach_timer_fn(self.set_timer) self._send_button_request() + self.backlight_level = ui.style.get_backlight_normal() def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) @@ -187,7 +187,7 @@ def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: ) def _first_paint(self) -> None: - ui.backlight_fade(ui.style.BACKLIGHT_NONE) + ui.backlight_fade(ui.style.get_backlight_none()) self._paint() if __debug__ and self.should_notify_layout_change: @@ -210,7 +210,7 @@ def _first_paint(self) -> None: notify_layout_change(self, event_id) # Turn the brightness on again. - ui.backlight_fade(self.BACKLIGHT_LEVEL) + ui.backlight_fade(self.backlight_level) def handle_input_and_rendering(self) -> loop.Task: from trezor import workflow @@ -263,10 +263,10 @@ def dummy_set_timer(token: int, deadline: int) -> None: raise RuntimeError layout.attach_timer_fn(dummy_set_timer) - ui.backlight_fade(ui.style.BACKLIGHT_DIM) + ui.backlight_fade(ui.style.get_backlight_dim()) layout.paint() ui.refresh() - ui.backlight_fade(ui.style.BACKLIGHT_NORMAL) + ui.backlight_fade(ui.style.get_backlight_normal()) async def raise_if_not_confirmed( @@ -1459,3 +1459,11 @@ async def confirm_firmware_update(description: str, fingerprint: str) -> None: BR_TYPE_OTHER, ) ) + + +async def set_brightness(current: int | None = None) -> None: + await interact( + RustLayout(trezorui2.set_brightness(current=current)), + "set_brightness", + BR_TYPE_OTHER, + ) diff --git a/core/src/trezor/ui/layouts/mercury/homescreen.py b/core/src/trezor/ui/layouts/mercury/homescreen.py index c59abf1f1d..e6da99996b 100644 --- a/core/src/trezor/ui/layouts/mercury/homescreen.py +++ b/core/src/trezor/ui/layouts/mercury/homescreen.py @@ -85,7 +85,6 @@ def create_tasks(self) -> Tuple[loop.AwaitableTask, ...]: class Lockscreen(HomescreenBase): RENDER_INDICATOR = storage_cache.LOCKSCREEN_ON - BACKLIGHT_LEVEL = ui.style.BACKLIGHT_LOW def __init__( self, @@ -94,8 +93,9 @@ def __init__( coinjoin_authorized: bool = False, ) -> None: self.bootscreen = bootscreen + self.backlight_level = ui.style.get_backlight_low() if bootscreen: - self.BACKLIGHT_LEVEL = ui.style.BACKLIGHT_NORMAL + self.backlight_level = ui.style.get_backlight_normal() skip = ( not bootscreen and storage_cache.homescreen_shown is self.RENDER_INDICATOR diff --git a/core/src/trezor/ui/layouts/mercury/progress.py b/core/src/trezor/ui/layouts/mercury/progress.py index 63e6acc25c..390b6ba2c6 100644 --- a/core/src/trezor/ui/layouts/mercury/progress.py +++ b/core/src/trezor/ui/layouts/mercury/progress.py @@ -15,11 +15,11 @@ def __init__( layout: Any, ): self.layout = layout - ui.backlight_fade(ui.style.BACKLIGHT_DIM) + ui.backlight_fade(ui.style.get_backlight_dim()) self.layout.attach_timer_fn(self.set_timer) self.layout.paint() ui.refresh() - ui.backlight_fade(ui.style.BACKLIGHT_NORMAL) + ui.backlight_fade(ui.style.get_backlight_normal()) def set_timer(self, token: int, deadline: int) -> None: raise RuntimeError # progress layouts should not set timers diff --git a/core/src/trezor/ui/layouts/progress.py b/core/src/trezor/ui/layouts/progress.py index 89c5db5b0f..2b3f11a5f0 100644 --- a/core/src/trezor/ui/layouts/progress.py +++ b/core/src/trezor/ui/layouts/progress.py @@ -34,11 +34,11 @@ def __init__( layout: Any, ): self.layout = layout - ui.backlight_fade(ui.style.BACKLIGHT_DIM) + ui.backlight_fade(ui.style.get_backlight_dim()) self.layout.attach_timer_fn(self.set_timer) self.layout.paint() ui.refresh() - ui.backlight_fade(ui.style.BACKLIGHT_NORMAL) + ui.backlight_fade(ui.style.get_backlight_normal()) def set_timer(self, token: int, deadline: int) -> None: raise RuntimeError # progress layouts should not set timers diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index aa954e13c9..300a1089e7 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -36,7 +36,6 @@ class RustLayout(LayoutParentType[T]): - BACKLIGHT_LEVEL = ui.style.BACKLIGHT_NORMAL # pylint: disable=super-init-not-called def __init__(self, layout: trezorui2.LayoutObj[T]): @@ -45,6 +44,7 @@ def __init__(self, layout: trezorui2.LayoutObj[T]): self.timer = loop.Timer() self.layout.attach_timer_fn(self.set_timer) self._send_button_request() + self.backlight_level = ui.style.get_backlight_normal() def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) @@ -193,7 +193,7 @@ def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: ) def _first_paint(self) -> None: - ui.backlight_fade(ui.style.BACKLIGHT_NONE) + ui.backlight_fade(ui.style.get_backlight_none()) self._paint() if __debug__ and self.should_notify_layout_change: @@ -216,7 +216,7 @@ def _first_paint(self) -> None: notify_layout_change(self, event_id) # Turn the brightness on again. - ui.backlight_fade(self.BACKLIGHT_LEVEL) + ui.backlight_fade(self.backlight_level) def handle_input_and_rendering(self) -> loop.Task: from trezor import workflow @@ -269,10 +269,10 @@ def dummy_set_timer(token: int, deadline: int) -> None: raise RuntimeError layout.attach_timer_fn(dummy_set_timer) - ui.backlight_fade(ui.style.BACKLIGHT_DIM) + ui.backlight_fade(ui.style.get_backlight_dim()) layout.paint() ui.refresh() - ui.backlight_fade(ui.style.BACKLIGHT_NORMAL) + ui.backlight_fade(ui.style.get_backlight_normal()) async def raise_if_not_confirmed( @@ -1562,3 +1562,11 @@ def confirm_firmware_update(description: str, fingerprint: str) -> Awaitable[Non BR_TYPE_OTHER, ) ) + + +async def set_brightness(current: int | None = None) -> None: + await interact( + RustLayout(trezorui2.set_brightness(current=current)), + "set_brightness", + BR_TYPE_OTHER, + ) diff --git a/core/src/trezor/ui/layouts/tt/homescreen.py b/core/src/trezor/ui/layouts/tt/homescreen.py index c59abf1f1d..e6da99996b 100644 --- a/core/src/trezor/ui/layouts/tt/homescreen.py +++ b/core/src/trezor/ui/layouts/tt/homescreen.py @@ -85,7 +85,6 @@ def create_tasks(self) -> Tuple[loop.AwaitableTask, ...]: class Lockscreen(HomescreenBase): RENDER_INDICATOR = storage_cache.LOCKSCREEN_ON - BACKLIGHT_LEVEL = ui.style.BACKLIGHT_LOW def __init__( self, @@ -94,8 +93,9 @@ def __init__( coinjoin_authorized: bool = False, ) -> None: self.bootscreen = bootscreen + self.backlight_level = ui.style.get_backlight_low() if bootscreen: - self.BACKLIGHT_LEVEL = ui.style.BACKLIGHT_NORMAL + self.backlight_level = ui.style.get_backlight_normal() skip = ( not bootscreen and storage_cache.homescreen_shown is self.RENDER_INDICATOR diff --git a/core/src/trezor/ui/style.py b/core/src/trezor/ui/style.py index 70b97d6eef..dd6affeaca 100644 --- a/core/src/trezor/ui/style.py +++ b/core/src/trezor/ui/style.py @@ -1,8 +1,41 @@ from micropython import const +import storage.device + # backlight brightness -BACKLIGHT_NORMAL = const(150) -BACKLIGHT_LOW = const(45) -BACKLIGHT_DIM = const(5) -BACKLIGHT_NONE = const(0) -BACKLIGHT_MAX = const(255) +_BACKLIGHT_NORMAL = const(150) +_BACKLIGHT_LOW = const(45) +_BACKLIGHT_DIM = const(5) +_BACKLIGHT_NONE = const(0) +_BACKLIGHT_MIN = const(10) +_BACKLIGHT_MAX = const(255) + + +def get_backlight_normal() -> int: + val = storage.device.get_brightness() + if val is None: + return _BACKLIGHT_NORMAL + return val + + +def get_backlight_low() -> int: + val = storage.device.get_brightness() + if val is None or val > _BACKLIGHT_LOW: + return _BACKLIGHT_LOW + return val + + +def get_backlight_dim() -> int: + return _BACKLIGHT_DIM + + +def get_backlight_none() -> int: + return _BACKLIGHT_NONE + + +def get_backlight_min() -> int: + return _BACKLIGHT_MIN + + +def get_backlight_max() -> int: + return _BACKLIGHT_MAX diff --git a/core/translations/en.json b/core/translations/en.json index c0709312de..ef473a2590 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -81,6 +81,7 @@ "bitcoin__unverified_external_inputs": "The transaction contains unverified external inputs.", "bitcoin__valid_signature": "The signature is valid.", "bitcoin__voting_rights": "Voting rights to:", + "brightness__title": "Set brightness", "buttons__abort": "Abort", "buttons__access": "Access", "buttons__again": "Again", diff --git a/core/translations/order.json b/core/translations/order.json index 4a3816259d..6915cbcc3d 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -930,5 +930,6 @@ "928": "words__operation_cancelled", "929": "words__settings", "930": "words__try_again", - "931": "reset__slip39_checklist_num_groups_x_template" + "931": "reset__slip39_checklist_num_groups_x_template", + "932": "brightness__title" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 195cbcfbbe..7515775c18 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "e406bb0127f82bf476884b46c05ca86993c22e1373c4274443f2aef20b138a8e", - "datetime": "2024-05-28T00:05:41.698473", - "commit": "342b88f62bcd34595ea81ced550bb579b4e4a813" + "merkle_root": "1e9cb4df51f267f250b45ba4c130f2e46487dc60d8f5e0e19bd398ec4a613f24", + "datetime": "2024-05-28T09:19:32.720044", + "commit": "ebb35e8de3ea870b13d85891096136c16bac2cc5" }, "history": [ { diff --git a/legacy/firmware/protob/Makefile b/legacy/firmware/protob/Makefile index 1822c369e9..8f8ab1cd00 100644 --- a/legacy/firmware/protob/Makefile +++ b/legacy/firmware/protob/Makefile @@ -10,7 +10,8 @@ SKIPPED_MESSAGES := Binance Cardano DebugMonero Eos Monero Ontology Ripple SdPro EthereumTypedDataValueRequest EthereumTypedDataValueAck ShowDeviceTutorial \ UnlockBootloader AuthenticateDevice AuthenticityProof \ Solana StellarClaimClaimableBalanceOp \ - ChangeLanguage TranslationDataRequest TranslationDataAck + ChangeLanguage TranslationDataRequest TranslationDataAck \ + SetBrightness \ ifeq ($(BITCOIN_ONLY), 1) SKIPPED_MESSAGES += Ethereum NEM Stellar diff --git a/python/.changelog.d/3208.added b/python/.changelog.d/3208.added new file mode 100644 index 0000000000..632f19ecc6 --- /dev/null +++ b/python/.changelog.d/3208.added @@ -0,0 +1 @@ +Added user adjustable brightness setting. diff --git a/python/src/trezorlib/cli/settings.py b/python/src/trezorlib/cli/settings.py index 19231f3a73..cc06b60d0a 100644 --- a/python/src/trezorlib/cli/settings.py +++ b/python/src/trezorlib/cli/settings.py @@ -206,6 +206,13 @@ def label(client: "TrezorClient", label: str) -> str: return device.apply_settings(client, label=label) +@cli.command() +@with_client +def brightness(client: "TrezorClient") -> str: + """Set display brightness.""" + return device.set_brightness(client) + + @cli.command() @click.argument("path_or_url", required=False) @click.option( diff --git a/python/src/trezorlib/device.py b/python/src/trezorlib/device.py index bdebdc06b6..7523235a84 100644 --- a/python/src/trezorlib/device.py +++ b/python/src/trezorlib/device.py @@ -348,3 +348,10 @@ def set_busy(client: "TrezorClient", expiry_ms: Optional[int]) -> "MessageType": @expect(messages.AuthenticityProof) def authenticate(client: "TrezorClient", challenge: bytes): return client.call(messages.AuthenticateDevice(challenge=challenge)) + + +@expect(messages.Success, field="message", ret_type=str) +def set_brightness( + client: "TrezorClient", value: Optional[int] = None +) -> "MessageType": + return client.call(messages.SetBrightness(value=value)) diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 21f008c34e..00064c3967 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -78,6 +78,7 @@ class MessageType(IntEnum): ChangeLanguage = 990 TranslationDataRequest = 991 TranslationDataAck = 992 + SetBrightness = 993 SetU2FCounter = 63 GetNextU2FCounter = 80 NextU2FCounter = 81 @@ -491,6 +492,7 @@ class Capability(IntEnum): PassphraseEntry = 17 Solana = 18 Translations = 19 + Brightness = 20 class SdProtectOperationType(IntEnum): @@ -3950,6 +3952,20 @@ class UnlockBootloader(protobuf.MessageType): MESSAGE_WIRE_TYPE = 96 +class SetBrightness(protobuf.MessageType): + MESSAGE_WIRE_TYPE = 993 + FIELDS = { + 1: protobuf.Field("value", "uint32", repeated=False, required=False, default=None), + } + + def __init__( + self, + *, + value: Optional["int"] = None, + ) -> None: + self.value = value + + class Slip39Group(protobuf.MessageType): MESSAGE_WIRE_TYPE = None FIELDS = { diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs index f0737a52aa..5cf5016ece 100644 --- a/rust/trezor-client/src/messages/generated.rs +++ b/rust/trezor-client/src/messages/generated.rs @@ -48,6 +48,7 @@ trezor_message_impl! { ChangeLanguage => MessageType_ChangeLanguage, TranslationDataRequest => MessageType_TranslationDataRequest, TranslationDataAck => MessageType_TranslationDataAck, + SetBrightness => MessageType_SetBrightness, SetU2FCounter => MessageType_SetU2FCounter, GetNextU2FCounter => MessageType_GetNextU2FCounter, NextU2FCounter => MessageType_NextU2FCounter, diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs index ebd3224f27..a559a5336c 100644 --- a/rust/trezor-client/src/protos/generated/messages.rs +++ b/rust/trezor-client/src/protos/generated/messages.rs @@ -126,6 +126,8 @@ pub enum MessageType { MessageType_TranslationDataRequest = 991, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_TranslationDataAck) MessageType_TranslationDataAck = 992, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_SetBrightness) + MessageType_SetBrightness = 993, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_SetU2FCounter) MessageType_SetU2FCounter = 63, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_GetNextU2FCounter) @@ -574,6 +576,7 @@ impl ::protobuf::Enum for MessageType { 990 => ::std::option::Option::Some(MessageType::MessageType_ChangeLanguage), 991 => ::std::option::Option::Some(MessageType::MessageType_TranslationDataRequest), 992 => ::std::option::Option::Some(MessageType::MessageType_TranslationDataAck), + 993 => ::std::option::Option::Some(MessageType::MessageType_SetBrightness), 63 => ::std::option::Option::Some(MessageType::MessageType_SetU2FCounter), 80 => ::std::option::Option::Some(MessageType::MessageType_GetNextU2FCounter), 81 => ::std::option::Option::Some(MessageType::MessageType_NextU2FCounter), @@ -823,6 +826,7 @@ impl ::protobuf::Enum for MessageType { "MessageType_ChangeLanguage" => ::std::option::Option::Some(MessageType::MessageType_ChangeLanguage), "MessageType_TranslationDataRequest" => ::std::option::Option::Some(MessageType::MessageType_TranslationDataRequest), "MessageType_TranslationDataAck" => ::std::option::Option::Some(MessageType::MessageType_TranslationDataAck), + "MessageType_SetBrightness" => ::std::option::Option::Some(MessageType::MessageType_SetBrightness), "MessageType_SetU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_SetU2FCounter), "MessageType_GetNextU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_GetNextU2FCounter), "MessageType_NextU2FCounter" => ::std::option::Option::Some(MessageType::MessageType_NextU2FCounter), @@ -1071,6 +1075,7 @@ impl ::protobuf::Enum for MessageType { MessageType::MessageType_ChangeLanguage, MessageType::MessageType_TranslationDataRequest, MessageType::MessageType_TranslationDataAck, + MessageType::MessageType_SetBrightness, MessageType::MessageType_SetU2FCounter, MessageType::MessageType_GetNextU2FCounter, MessageType::MessageType_NextU2FCounter, @@ -1325,200 +1330,201 @@ impl ::protobuf::EnumFull for MessageType { MessageType::MessageType_ChangeLanguage => 46, MessageType::MessageType_TranslationDataRequest => 47, MessageType::MessageType_TranslationDataAck => 48, - MessageType::MessageType_SetU2FCounter => 49, - MessageType::MessageType_GetNextU2FCounter => 50, - MessageType::MessageType_NextU2FCounter => 51, - MessageType::MessageType_Deprecated_PassphraseStateRequest => 52, - MessageType::MessageType_Deprecated_PassphraseStateAck => 53, - MessageType::MessageType_FirmwareErase => 54, - MessageType::MessageType_FirmwareUpload => 55, - MessageType::MessageType_FirmwareRequest => 56, - MessageType::MessageType_ProdTestT1 => 57, - MessageType::MessageType_GetPublicKey => 58, - MessageType::MessageType_PublicKey => 59, - MessageType::MessageType_SignTx => 60, - MessageType::MessageType_TxRequest => 61, - MessageType::MessageType_TxAck => 62, - MessageType::MessageType_GetAddress => 63, - MessageType::MessageType_Address => 64, - MessageType::MessageType_TxAckPaymentRequest => 65, - MessageType::MessageType_SignMessage => 66, - MessageType::MessageType_VerifyMessage => 67, - MessageType::MessageType_MessageSignature => 68, - MessageType::MessageType_GetOwnershipId => 69, - MessageType::MessageType_OwnershipId => 70, - MessageType::MessageType_GetOwnershipProof => 71, - MessageType::MessageType_OwnershipProof => 72, - MessageType::MessageType_AuthorizeCoinJoin => 73, - MessageType::MessageType_CipherKeyValue => 74, - MessageType::MessageType_CipheredKeyValue => 75, - MessageType::MessageType_SignIdentity => 76, - MessageType::MessageType_SignedIdentity => 77, - MessageType::MessageType_GetECDHSessionKey => 78, - MessageType::MessageType_ECDHSessionKey => 79, - MessageType::MessageType_CosiCommit => 80, - MessageType::MessageType_CosiCommitment => 81, - MessageType::MessageType_CosiSign => 82, - MessageType::MessageType_CosiSignature => 83, - MessageType::MessageType_DebugLinkDecision => 84, - MessageType::MessageType_DebugLinkGetState => 85, - MessageType::MessageType_DebugLinkState => 86, - MessageType::MessageType_DebugLinkStop => 87, - MessageType::MessageType_DebugLinkLog => 88, - MessageType::MessageType_DebugLinkMemoryRead => 89, - MessageType::MessageType_DebugLinkMemory => 90, - MessageType::MessageType_DebugLinkMemoryWrite => 91, - MessageType::MessageType_DebugLinkFlashErase => 92, - MessageType::MessageType_DebugLinkLayout => 93, - MessageType::MessageType_DebugLinkReseedRandom => 94, - MessageType::MessageType_DebugLinkRecordScreen => 95, - MessageType::MessageType_DebugLinkEraseSdCard => 96, - MessageType::MessageType_DebugLinkWatchLayout => 97, - MessageType::MessageType_DebugLinkResetDebugEvents => 98, - MessageType::MessageType_EthereumGetPublicKey => 99, - MessageType::MessageType_EthereumPublicKey => 100, - MessageType::MessageType_EthereumGetAddress => 101, - MessageType::MessageType_EthereumAddress => 102, - MessageType::MessageType_EthereumSignTx => 103, - MessageType::MessageType_EthereumSignTxEIP1559 => 104, - MessageType::MessageType_EthereumTxRequest => 105, - MessageType::MessageType_EthereumTxAck => 106, - MessageType::MessageType_EthereumSignMessage => 107, - MessageType::MessageType_EthereumVerifyMessage => 108, - MessageType::MessageType_EthereumMessageSignature => 109, - MessageType::MessageType_EthereumSignTypedData => 110, - MessageType::MessageType_EthereumTypedDataStructRequest => 111, - MessageType::MessageType_EthereumTypedDataStructAck => 112, - MessageType::MessageType_EthereumTypedDataValueRequest => 113, - MessageType::MessageType_EthereumTypedDataValueAck => 114, - MessageType::MessageType_EthereumTypedDataSignature => 115, - MessageType::MessageType_EthereumSignTypedHash => 116, - MessageType::MessageType_NEMGetAddress => 117, - MessageType::MessageType_NEMAddress => 118, - MessageType::MessageType_NEMSignTx => 119, - MessageType::MessageType_NEMSignedTx => 120, - MessageType::MessageType_NEMDecryptMessage => 121, - MessageType::MessageType_NEMDecryptedMessage => 122, - MessageType::MessageType_TezosGetAddress => 123, - MessageType::MessageType_TezosAddress => 124, - MessageType::MessageType_TezosSignTx => 125, - MessageType::MessageType_TezosSignedTx => 126, - MessageType::MessageType_TezosGetPublicKey => 127, - MessageType::MessageType_TezosPublicKey => 128, - MessageType::MessageType_StellarSignTx => 129, - MessageType::MessageType_StellarTxOpRequest => 130, - MessageType::MessageType_StellarGetAddress => 131, - MessageType::MessageType_StellarAddress => 132, - MessageType::MessageType_StellarCreateAccountOp => 133, - MessageType::MessageType_StellarPaymentOp => 134, - MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 135, - MessageType::MessageType_StellarManageSellOfferOp => 136, - MessageType::MessageType_StellarCreatePassiveSellOfferOp => 137, - MessageType::MessageType_StellarSetOptionsOp => 138, - MessageType::MessageType_StellarChangeTrustOp => 139, - MessageType::MessageType_StellarAllowTrustOp => 140, - MessageType::MessageType_StellarAccountMergeOp => 141, - MessageType::MessageType_StellarManageDataOp => 142, - MessageType::MessageType_StellarBumpSequenceOp => 143, - MessageType::MessageType_StellarManageBuyOfferOp => 144, - MessageType::MessageType_StellarPathPaymentStrictSendOp => 145, - MessageType::MessageType_StellarClaimClaimableBalanceOp => 146, - MessageType::MessageType_StellarSignedTx => 147, - MessageType::MessageType_CardanoGetPublicKey => 148, - MessageType::MessageType_CardanoPublicKey => 149, - MessageType::MessageType_CardanoGetAddress => 150, - MessageType::MessageType_CardanoAddress => 151, - MessageType::MessageType_CardanoTxItemAck => 152, - MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 153, - MessageType::MessageType_CardanoTxWitnessRequest => 154, - MessageType::MessageType_CardanoTxWitnessResponse => 155, - MessageType::MessageType_CardanoTxHostAck => 156, - MessageType::MessageType_CardanoTxBodyHash => 157, - MessageType::MessageType_CardanoSignTxFinished => 158, - MessageType::MessageType_CardanoSignTxInit => 159, - MessageType::MessageType_CardanoTxInput => 160, - MessageType::MessageType_CardanoTxOutput => 161, - MessageType::MessageType_CardanoAssetGroup => 162, - MessageType::MessageType_CardanoToken => 163, - MessageType::MessageType_CardanoTxCertificate => 164, - MessageType::MessageType_CardanoTxWithdrawal => 165, - MessageType::MessageType_CardanoTxAuxiliaryData => 166, - MessageType::MessageType_CardanoPoolOwner => 167, - MessageType::MessageType_CardanoPoolRelayParameters => 168, - MessageType::MessageType_CardanoGetNativeScriptHash => 169, - MessageType::MessageType_CardanoNativeScriptHash => 170, - MessageType::MessageType_CardanoTxMint => 171, - MessageType::MessageType_CardanoTxCollateralInput => 172, - MessageType::MessageType_CardanoTxRequiredSigner => 173, - MessageType::MessageType_CardanoTxInlineDatumChunk => 174, - MessageType::MessageType_CardanoTxReferenceScriptChunk => 175, - MessageType::MessageType_CardanoTxReferenceInput => 176, - MessageType::MessageType_RippleGetAddress => 177, - MessageType::MessageType_RippleAddress => 178, - MessageType::MessageType_RippleSignTx => 179, - MessageType::MessageType_RippleSignedTx => 180, - MessageType::MessageType_MoneroTransactionInitRequest => 181, - MessageType::MessageType_MoneroTransactionInitAck => 182, - MessageType::MessageType_MoneroTransactionSetInputRequest => 183, - MessageType::MessageType_MoneroTransactionSetInputAck => 184, - MessageType::MessageType_MoneroTransactionInputViniRequest => 185, - MessageType::MessageType_MoneroTransactionInputViniAck => 186, - MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 187, - MessageType::MessageType_MoneroTransactionAllInputsSetAck => 188, - MessageType::MessageType_MoneroTransactionSetOutputRequest => 189, - MessageType::MessageType_MoneroTransactionSetOutputAck => 190, - MessageType::MessageType_MoneroTransactionAllOutSetRequest => 191, - MessageType::MessageType_MoneroTransactionAllOutSetAck => 192, - MessageType::MessageType_MoneroTransactionSignInputRequest => 193, - MessageType::MessageType_MoneroTransactionSignInputAck => 194, - MessageType::MessageType_MoneroTransactionFinalRequest => 195, - MessageType::MessageType_MoneroTransactionFinalAck => 196, - MessageType::MessageType_MoneroKeyImageExportInitRequest => 197, - MessageType::MessageType_MoneroKeyImageExportInitAck => 198, - MessageType::MessageType_MoneroKeyImageSyncStepRequest => 199, - MessageType::MessageType_MoneroKeyImageSyncStepAck => 200, - MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 201, - MessageType::MessageType_MoneroKeyImageSyncFinalAck => 202, - MessageType::MessageType_MoneroGetAddress => 203, - MessageType::MessageType_MoneroAddress => 204, - MessageType::MessageType_MoneroGetWatchKey => 205, - MessageType::MessageType_MoneroWatchKey => 206, - MessageType::MessageType_DebugMoneroDiagRequest => 207, - MessageType::MessageType_DebugMoneroDiagAck => 208, - MessageType::MessageType_MoneroGetTxKeyRequest => 209, - MessageType::MessageType_MoneroGetTxKeyAck => 210, - MessageType::MessageType_MoneroLiveRefreshStartRequest => 211, - MessageType::MessageType_MoneroLiveRefreshStartAck => 212, - MessageType::MessageType_MoneroLiveRefreshStepRequest => 213, - MessageType::MessageType_MoneroLiveRefreshStepAck => 214, - MessageType::MessageType_MoneroLiveRefreshFinalRequest => 215, - MessageType::MessageType_MoneroLiveRefreshFinalAck => 216, - MessageType::MessageType_EosGetPublicKey => 217, - MessageType::MessageType_EosPublicKey => 218, - MessageType::MessageType_EosSignTx => 219, - MessageType::MessageType_EosTxActionRequest => 220, - MessageType::MessageType_EosTxActionAck => 221, - MessageType::MessageType_EosSignedTx => 222, - MessageType::MessageType_BinanceGetAddress => 223, - MessageType::MessageType_BinanceAddress => 224, - MessageType::MessageType_BinanceGetPublicKey => 225, - MessageType::MessageType_BinancePublicKey => 226, - MessageType::MessageType_BinanceSignTx => 227, - MessageType::MessageType_BinanceTxRequest => 228, - MessageType::MessageType_BinanceTransferMsg => 229, - MessageType::MessageType_BinanceOrderMsg => 230, - MessageType::MessageType_BinanceCancelMsg => 231, - MessageType::MessageType_BinanceSignedTx => 232, - MessageType::MessageType_WebAuthnListResidentCredentials => 233, - MessageType::MessageType_WebAuthnCredentials => 234, - MessageType::MessageType_WebAuthnAddResidentCredential => 235, - MessageType::MessageType_WebAuthnRemoveResidentCredential => 236, - MessageType::MessageType_SolanaGetPublicKey => 237, - MessageType::MessageType_SolanaPublicKey => 238, - MessageType::MessageType_SolanaGetAddress => 239, - MessageType::MessageType_SolanaAddress => 240, - MessageType::MessageType_SolanaSignTx => 241, - MessageType::MessageType_SolanaTxSignature => 242, + MessageType::MessageType_SetBrightness => 49, + MessageType::MessageType_SetU2FCounter => 50, + MessageType::MessageType_GetNextU2FCounter => 51, + MessageType::MessageType_NextU2FCounter => 52, + MessageType::MessageType_Deprecated_PassphraseStateRequest => 53, + MessageType::MessageType_Deprecated_PassphraseStateAck => 54, + MessageType::MessageType_FirmwareErase => 55, + MessageType::MessageType_FirmwareUpload => 56, + MessageType::MessageType_FirmwareRequest => 57, + MessageType::MessageType_ProdTestT1 => 58, + MessageType::MessageType_GetPublicKey => 59, + MessageType::MessageType_PublicKey => 60, + MessageType::MessageType_SignTx => 61, + MessageType::MessageType_TxRequest => 62, + MessageType::MessageType_TxAck => 63, + MessageType::MessageType_GetAddress => 64, + MessageType::MessageType_Address => 65, + MessageType::MessageType_TxAckPaymentRequest => 66, + MessageType::MessageType_SignMessage => 67, + MessageType::MessageType_VerifyMessage => 68, + MessageType::MessageType_MessageSignature => 69, + MessageType::MessageType_GetOwnershipId => 70, + MessageType::MessageType_OwnershipId => 71, + MessageType::MessageType_GetOwnershipProof => 72, + MessageType::MessageType_OwnershipProof => 73, + MessageType::MessageType_AuthorizeCoinJoin => 74, + MessageType::MessageType_CipherKeyValue => 75, + MessageType::MessageType_CipheredKeyValue => 76, + MessageType::MessageType_SignIdentity => 77, + MessageType::MessageType_SignedIdentity => 78, + MessageType::MessageType_GetECDHSessionKey => 79, + MessageType::MessageType_ECDHSessionKey => 80, + MessageType::MessageType_CosiCommit => 81, + MessageType::MessageType_CosiCommitment => 82, + MessageType::MessageType_CosiSign => 83, + MessageType::MessageType_CosiSignature => 84, + MessageType::MessageType_DebugLinkDecision => 85, + MessageType::MessageType_DebugLinkGetState => 86, + MessageType::MessageType_DebugLinkState => 87, + MessageType::MessageType_DebugLinkStop => 88, + MessageType::MessageType_DebugLinkLog => 89, + MessageType::MessageType_DebugLinkMemoryRead => 90, + MessageType::MessageType_DebugLinkMemory => 91, + MessageType::MessageType_DebugLinkMemoryWrite => 92, + MessageType::MessageType_DebugLinkFlashErase => 93, + MessageType::MessageType_DebugLinkLayout => 94, + MessageType::MessageType_DebugLinkReseedRandom => 95, + MessageType::MessageType_DebugLinkRecordScreen => 96, + MessageType::MessageType_DebugLinkEraseSdCard => 97, + MessageType::MessageType_DebugLinkWatchLayout => 98, + MessageType::MessageType_DebugLinkResetDebugEvents => 99, + MessageType::MessageType_EthereumGetPublicKey => 100, + MessageType::MessageType_EthereumPublicKey => 101, + MessageType::MessageType_EthereumGetAddress => 102, + MessageType::MessageType_EthereumAddress => 103, + MessageType::MessageType_EthereumSignTx => 104, + MessageType::MessageType_EthereumSignTxEIP1559 => 105, + MessageType::MessageType_EthereumTxRequest => 106, + MessageType::MessageType_EthereumTxAck => 107, + MessageType::MessageType_EthereumSignMessage => 108, + MessageType::MessageType_EthereumVerifyMessage => 109, + MessageType::MessageType_EthereumMessageSignature => 110, + MessageType::MessageType_EthereumSignTypedData => 111, + MessageType::MessageType_EthereumTypedDataStructRequest => 112, + MessageType::MessageType_EthereumTypedDataStructAck => 113, + MessageType::MessageType_EthereumTypedDataValueRequest => 114, + MessageType::MessageType_EthereumTypedDataValueAck => 115, + MessageType::MessageType_EthereumTypedDataSignature => 116, + MessageType::MessageType_EthereumSignTypedHash => 117, + MessageType::MessageType_NEMGetAddress => 118, + MessageType::MessageType_NEMAddress => 119, + MessageType::MessageType_NEMSignTx => 120, + MessageType::MessageType_NEMSignedTx => 121, + MessageType::MessageType_NEMDecryptMessage => 122, + MessageType::MessageType_NEMDecryptedMessage => 123, + MessageType::MessageType_TezosGetAddress => 124, + MessageType::MessageType_TezosAddress => 125, + MessageType::MessageType_TezosSignTx => 126, + MessageType::MessageType_TezosSignedTx => 127, + MessageType::MessageType_TezosGetPublicKey => 128, + MessageType::MessageType_TezosPublicKey => 129, + MessageType::MessageType_StellarSignTx => 130, + MessageType::MessageType_StellarTxOpRequest => 131, + MessageType::MessageType_StellarGetAddress => 132, + MessageType::MessageType_StellarAddress => 133, + MessageType::MessageType_StellarCreateAccountOp => 134, + MessageType::MessageType_StellarPaymentOp => 135, + MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 136, + MessageType::MessageType_StellarManageSellOfferOp => 137, + MessageType::MessageType_StellarCreatePassiveSellOfferOp => 138, + MessageType::MessageType_StellarSetOptionsOp => 139, + MessageType::MessageType_StellarChangeTrustOp => 140, + MessageType::MessageType_StellarAllowTrustOp => 141, + MessageType::MessageType_StellarAccountMergeOp => 142, + MessageType::MessageType_StellarManageDataOp => 143, + MessageType::MessageType_StellarBumpSequenceOp => 144, + MessageType::MessageType_StellarManageBuyOfferOp => 145, + MessageType::MessageType_StellarPathPaymentStrictSendOp => 146, + MessageType::MessageType_StellarClaimClaimableBalanceOp => 147, + MessageType::MessageType_StellarSignedTx => 148, + MessageType::MessageType_CardanoGetPublicKey => 149, + MessageType::MessageType_CardanoPublicKey => 150, + MessageType::MessageType_CardanoGetAddress => 151, + MessageType::MessageType_CardanoAddress => 152, + MessageType::MessageType_CardanoTxItemAck => 153, + MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 154, + MessageType::MessageType_CardanoTxWitnessRequest => 155, + MessageType::MessageType_CardanoTxWitnessResponse => 156, + MessageType::MessageType_CardanoTxHostAck => 157, + MessageType::MessageType_CardanoTxBodyHash => 158, + MessageType::MessageType_CardanoSignTxFinished => 159, + MessageType::MessageType_CardanoSignTxInit => 160, + MessageType::MessageType_CardanoTxInput => 161, + MessageType::MessageType_CardanoTxOutput => 162, + MessageType::MessageType_CardanoAssetGroup => 163, + MessageType::MessageType_CardanoToken => 164, + MessageType::MessageType_CardanoTxCertificate => 165, + MessageType::MessageType_CardanoTxWithdrawal => 166, + MessageType::MessageType_CardanoTxAuxiliaryData => 167, + MessageType::MessageType_CardanoPoolOwner => 168, + MessageType::MessageType_CardanoPoolRelayParameters => 169, + MessageType::MessageType_CardanoGetNativeScriptHash => 170, + MessageType::MessageType_CardanoNativeScriptHash => 171, + MessageType::MessageType_CardanoTxMint => 172, + MessageType::MessageType_CardanoTxCollateralInput => 173, + MessageType::MessageType_CardanoTxRequiredSigner => 174, + MessageType::MessageType_CardanoTxInlineDatumChunk => 175, + MessageType::MessageType_CardanoTxReferenceScriptChunk => 176, + MessageType::MessageType_CardanoTxReferenceInput => 177, + MessageType::MessageType_RippleGetAddress => 178, + MessageType::MessageType_RippleAddress => 179, + MessageType::MessageType_RippleSignTx => 180, + MessageType::MessageType_RippleSignedTx => 181, + MessageType::MessageType_MoneroTransactionInitRequest => 182, + MessageType::MessageType_MoneroTransactionInitAck => 183, + MessageType::MessageType_MoneroTransactionSetInputRequest => 184, + MessageType::MessageType_MoneroTransactionSetInputAck => 185, + MessageType::MessageType_MoneroTransactionInputViniRequest => 186, + MessageType::MessageType_MoneroTransactionInputViniAck => 187, + MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 188, + MessageType::MessageType_MoneroTransactionAllInputsSetAck => 189, + MessageType::MessageType_MoneroTransactionSetOutputRequest => 190, + MessageType::MessageType_MoneroTransactionSetOutputAck => 191, + MessageType::MessageType_MoneroTransactionAllOutSetRequest => 192, + MessageType::MessageType_MoneroTransactionAllOutSetAck => 193, + MessageType::MessageType_MoneroTransactionSignInputRequest => 194, + MessageType::MessageType_MoneroTransactionSignInputAck => 195, + MessageType::MessageType_MoneroTransactionFinalRequest => 196, + MessageType::MessageType_MoneroTransactionFinalAck => 197, + MessageType::MessageType_MoneroKeyImageExportInitRequest => 198, + MessageType::MessageType_MoneroKeyImageExportInitAck => 199, + MessageType::MessageType_MoneroKeyImageSyncStepRequest => 200, + MessageType::MessageType_MoneroKeyImageSyncStepAck => 201, + MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 202, + MessageType::MessageType_MoneroKeyImageSyncFinalAck => 203, + MessageType::MessageType_MoneroGetAddress => 204, + MessageType::MessageType_MoneroAddress => 205, + MessageType::MessageType_MoneroGetWatchKey => 206, + MessageType::MessageType_MoneroWatchKey => 207, + MessageType::MessageType_DebugMoneroDiagRequest => 208, + MessageType::MessageType_DebugMoneroDiagAck => 209, + MessageType::MessageType_MoneroGetTxKeyRequest => 210, + MessageType::MessageType_MoneroGetTxKeyAck => 211, + MessageType::MessageType_MoneroLiveRefreshStartRequest => 212, + MessageType::MessageType_MoneroLiveRefreshStartAck => 213, + MessageType::MessageType_MoneroLiveRefreshStepRequest => 214, + MessageType::MessageType_MoneroLiveRefreshStepAck => 215, + MessageType::MessageType_MoneroLiveRefreshFinalRequest => 216, + MessageType::MessageType_MoneroLiveRefreshFinalAck => 217, + MessageType::MessageType_EosGetPublicKey => 218, + MessageType::MessageType_EosPublicKey => 219, + MessageType::MessageType_EosSignTx => 220, + MessageType::MessageType_EosTxActionRequest => 221, + MessageType::MessageType_EosTxActionAck => 222, + MessageType::MessageType_EosSignedTx => 223, + MessageType::MessageType_BinanceGetAddress => 224, + MessageType::MessageType_BinanceAddress => 225, + MessageType::MessageType_BinanceGetPublicKey => 226, + MessageType::MessageType_BinancePublicKey => 227, + MessageType::MessageType_BinanceSignTx => 228, + MessageType::MessageType_BinanceTxRequest => 229, + MessageType::MessageType_BinanceTransferMsg => 230, + MessageType::MessageType_BinanceOrderMsg => 231, + MessageType::MessageType_BinanceCancelMsg => 232, + MessageType::MessageType_BinanceSignedTx => 233, + MessageType::MessageType_WebAuthnListResidentCredentials => 234, + MessageType::MessageType_WebAuthnCredentials => 235, + MessageType::MessageType_WebAuthnAddResidentCredential => 236, + MessageType::MessageType_WebAuthnRemoveResidentCredential => 237, + MessageType::MessageType_SolanaGetPublicKey => 238, + MessageType::MessageType_SolanaPublicKey => 239, + MessageType::MessageType_SolanaGetAddress => 240, + MessageType::MessageType_SolanaAddress => 241, + MessageType::MessageType_SolanaSignTx => 242, + MessageType::MessageType_SolanaTxSignature => 243, }; Self::enum_descriptor().value_by_index(index) } @@ -1568,7 +1574,7 @@ pub mod exts { static file_descriptor_proto_data: &'static [u8] = b"\ \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\x20google/protobuf/de\ - scriptor.proto*\x9aT\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ + scriptor.proto*\xc4T\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ \x10\0\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\x90\xb5\x18\x01\x12\x1e\n\ \x10MessageType_Ping\x10\x01\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\ %\n\x13MessageType_Success\x10\x02\x1a\x0c\x80\xa6\x1d\x01\xa8\xb5\x18\ @@ -1627,86 +1633,87 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x121\n\"MessageType_TranslationData\ Request\x10\xdf\x07\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12-\n\x1eMe\ ssageType_TranslationDataAck\x10\xe0\x07\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ - \x18\x01\x12#\n\x19MessageType_SetU2FCounter\x10?\x1a\x04\x90\xb5\x18\ - \x01\x12'\n\x1dMessageType_GetNextU2FCounter\x10P\x1a\x04\x90\xb5\x18\ - \x01\x12$\n\x1aMessageType_NextU2FCounter\x10Q\x1a\x04\x98\xb5\x18\x01\ - \x125\n-MessageType_Deprecated_PassphraseStateRequest\x10M\x1a\x02\x08\ - \x01\x121\n)MessageType_Deprecated_PassphraseStateAck\x10N\x1a\x02\x08\ - \x01\x12+\n\x19MessageType_FirmwareErase\x10\x06\x1a\x0c\xb8\xb5\x18\x01\ - \x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1aMessageType_FirmwareUpload\ - \x10\x07\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12-\n\ - \x1bMessageType_FirmwareRequest\x10\x08\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\ - \x1d\x01\x98\xb5\x18\x01\x12(\n\x16MessageType_ProdTestT1\x10\x20\x1a\ - \x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12&\n\x18MessageTy\ - pe_GetPublicKey\x10\x0b\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12#\n\ - \x15MessageType_PublicKey\x10\x0c\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\ - \x01\x12\x20\n\x12MessageType_SignTx\x10\x0f\x1a\x08\x80\xa6\x1d\x01\x90\ - \xb5\x18\x01\x12#\n\x15MessageType_TxRequest\x10\x15\x1a\x08\x80\xa6\x1d\ - \x01\x98\xb5\x18\x01\x12\x1f\n\x11MessageType_TxAck\x10\x16\x1a\x08\x80\ - \xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x16MessageType_GetAddress\x10\x1d\ - \x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12!\n\x13MessageType_Address\ - \x10\x1e\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12)\n\x1fMessageType_T\ - xAckPaymentRequest\x10%\x1a\x04\x90\xb5\x18\x01\x12%\n\x17MessageType_Si\ - gnMessage\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19Message\ - Type_VerifyMessage\x10'\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12*\n\ - \x1cMessageType_MessageSignature\x10(\x1a\x08\x80\xa6\x1d\x01\x98\xb5\ - \x18\x01\x12(\n\x1aMessageType_GetOwnershipId\x10+\x1a\x08\x80\xa6\x1d\ - \x01\x90\xb5\x18\x01\x12%\n\x17MessageType_OwnershipId\x10,\x1a\x08\x80\ - \xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetOwnershipProof\x10\ - 1\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_Ownershi\ - pProof\x102\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageTyp\ - e_AuthorizeCoinJoin\x103\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\ - \x1aMessageType_CipherKeyValue\x10\x17\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ - \x18\x01\x12*\n\x1cMessageType_CipheredKeyValue\x100\x1a\x08\x80\xa6\x1d\ - \x01\x98\xb5\x18\x01\x12&\n\x18MessageType_SignIdentity\x105\x1a\x08\x80\ - \xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_SignedIdentity\x106\ - \x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetECDHSe\ - ssionKey\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageT\ - ype_ECDHSessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12$\n\ - \x16MessageType_CosiCommit\x10G\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\ - \x12(\n\x1aMessageType_CosiCommitment\x10H\x1a\x08\x80\xa6\x1d\x01\x98\ - \xb5\x18\x01\x12\"\n\x14MessageType_CosiSign\x10I\x1a\x08\x80\xa6\x1d\ - \x01\x90\xb5\x18\x01\x12'\n\x19MessageType_CosiSignature\x10J\x1a\x08\ - \x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\x1dMessageType_DebugLinkDecision\ - \x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\xa6\x1d\x01\xa0\xb5\ - \x18\x01\x12/\n\x1dMessageType_DebugLinkGetState\x10e\x1a\x0c\x80\xa6\ - \x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMessageType_DebugLink\ - State\x10f\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\n\x19MessageType\ - _DebugLinkStop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12&\n\x18Me\ - ssageType_DebugLinkLog\x10h\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12-\ - \n\x1fMessageType_DebugLinkMemoryRead\x10n\x1a\x08\x80\xa6\x1d\x01\xa0\ - \xb5\x18\x01\x12)\n\x1bMessageType_DebugLinkMemory\x10o\x1a\x08\x80\xa6\ - \x1d\x01\xa8\xb5\x18\x01\x12.\n\x20MessageType_DebugLinkMemoryWrite\x10p\ - \x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12-\n\x1fMessageType_DebugLink\ - FlashErase\x10q\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\x1bMessag\ - eType_DebugLinkLayout\x10\xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\ - \x120\n!MessageType_DebugLinkReseedRandom\x10\xaaF\x1a\x08\x80\xa6\x1d\ - \x01\xa0\xb5\x18\x01\x120\n!MessageType_DebugLinkRecordScreen\x10\xabF\ - \x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLink\ - EraseSdCard\x10\xadF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20M\ - essageType_DebugLinkWatchLayout\x10\xaeF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\ - \x18\x01\x124\n%MessageType_DebugLinkResetDebugEvents\x10\xafF\x1a\x08\ - \x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12+\n\x20MessageType_EthereumGetPublic\ - Key\x10\xc2\x03\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_EthereumPu\ - blicKey\x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessageType_Ethere\ - umGetAddress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_Ethereum\ - Address\x109\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_EthereumSignT\ - x\x10:\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_EthereumSignTxEIP1559\ - \x10\xc4\x03\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxReq\ - uest\x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\ - \x10<\x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\ - \x10@\x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\ - \x10A\x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignatur\ - e\x10B\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\ - \x10\xd0\x03\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDat\ - aStructRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_Et\ - hereumTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)Mess\ - ageType_EthereumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\ - \x01\x120\n%MessageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\ - \x90\xb5\x18\x01\x121\n&MessageType_EthereumTypedDataSignature\x10\xd5\ - \x03\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\ - \x10\xd6\x03\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\ - \x10C\x1a\x04\x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\ + \x18\x01\x12(\n\x19MessageType_SetBrightness\x10\xe1\x07\x1a\x08\x80\xa6\ + \x1d\x01\x90\xb5\x18\x01\x12#\n\x19MessageType_SetU2FCounter\x10?\x1a\ + \x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_GetNextU2FCounter\x10P\x1a\ + \x04\x90\xb5\x18\x01\x12$\n\x1aMessageType_NextU2FCounter\x10Q\x1a\x04\ + \x98\xb5\x18\x01\x125\n-MessageType_Deprecated_PassphraseStateRequest\ + \x10M\x1a\x02\x08\x01\x121\n)MessageType_Deprecated_PassphraseStateAck\ + \x10N\x1a\x02\x08\x01\x12+\n\x19MessageType_FirmwareErase\x10\x06\x1a\ + \x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12,\n\x1aMessageTy\ + pe_FirmwareUpload\x10\x07\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\ + \xb5\x18\x01\x12-\n\x1bMessageType_FirmwareRequest\x10\x08\x1a\x0c\xb8\ + \xb5\x18\x01\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12(\n\x16MessageType_ProdT\ + estT1\x10\x20\x1a\x0c\xb8\xb5\x18\x01\x80\xa6\x1d\x01\x90\xb5\x18\x01\ + \x12&\n\x18MessageType_GetPublicKey\x10\x0b\x1a\x08\x80\xa6\x1d\x01\x90\ + \xb5\x18\x01\x12#\n\x15MessageType_PublicKey\x10\x0c\x1a\x08\x80\xa6\x1d\ + \x01\x98\xb5\x18\x01\x12\x20\n\x12MessageType_SignTx\x10\x0f\x1a\x08\x80\ + \xa6\x1d\x01\x90\xb5\x18\x01\x12#\n\x15MessageType_TxRequest\x10\x15\x1a\ + \x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12\x1f\n\x11MessageType_TxAck\x10\ + \x16\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12$\n\x16MessageType_GetAd\ + dress\x10\x1d\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12!\n\x13MessageT\ + ype_Address\x10\x1e\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12)\n\x1fMe\ + ssageType_TxAckPaymentRequest\x10%\x1a\x04\x90\xb5\x18\x01\x12%\n\x17Mes\ + sageType_SignMessage\x10&\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\ + \x19MessageType_VerifyMessage\x10'\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\ + \x01\x12*\n\x1cMessageType_MessageSignature\x10(\x1a\x08\x80\xa6\x1d\x01\ + \x98\xb5\x18\x01\x12(\n\x1aMessageType_GetOwnershipId\x10+\x1a\x08\x80\ + \xa6\x1d\x01\x90\xb5\x18\x01\x12%\n\x17MessageType_OwnershipId\x10,\x1a\ + \x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_GetOwnershipP\ + roof\x101\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_\ + OwnershipProof\x102\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMe\ + ssageType_AuthorizeCoinJoin\x103\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\ + \x12(\n\x1aMessageType_CipherKeyValue\x10\x17\x1a\x08\x80\xa6\x1d\x01\ + \x90\xb5\x18\x01\x12*\n\x1cMessageType_CipheredKeyValue\x100\x1a\x08\x80\ + \xa6\x1d\x01\x98\xb5\x18\x01\x12&\n\x18MessageType_SignIdentity\x105\x1a\ + \x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMessageType_SignedIdentit\ + y\x106\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_Get\ + ECDHSessionKey\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMe\ + ssageType_ECDHSessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\ + \x12$\n\x16MessageType_CosiCommit\x10G\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ + \x18\x01\x12(\n\x1aMessageType_CosiCommitment\x10H\x1a\x08\x80\xa6\x1d\ + \x01\x98\xb5\x18\x01\x12\"\n\x14MessageType_CosiSign\x10I\x1a\x08\x80\ + \xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19MessageType_CosiSignature\x10J\ + \x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\x1dMessageType_DebugLink\ + Decision\x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\xa6\x1d\x01\ + \xa0\xb5\x18\x01\x12/\n\x1dMessageType_DebugLinkGetState\x10e\x1a\x0c\ + \x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMessageType_D\ + ebugLinkState\x10f\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\n\x19Mes\ + sageType_DebugLinkStop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12&\ + \n\x18MessageType_DebugLinkLog\x10h\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\ + \x01\x12-\n\x1fMessageType_DebugLinkMemoryRead\x10n\x1a\x08\x80\xa6\x1d\ + \x01\xa0\xb5\x18\x01\x12)\n\x1bMessageType_DebugLinkMemory\x10o\x1a\x08\ + \x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12.\n\x20MessageType_DebugLinkMemoryWr\ + ite\x10p\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12-\n\x1fMessageType_D\ + ebugLinkFlashErase\x10q\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\ + \x1bMessageType_DebugLinkLayout\x10\xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\ + \x18\x01\x120\n!MessageType_DebugLinkReseedRandom\x10\xaaF\x1a\x08\x80\ + \xa6\x1d\x01\xa0\xb5\x18\x01\x120\n!MessageType_DebugLinkRecordScreen\ + \x10\xabF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_\ + DebugLinkEraseSdCard\x10\xadF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\ + \x12/\n\x20MessageType_DebugLinkWatchLayout\x10\xaeF\x1a\x08\x80\xa6\x1d\ + \x01\xa0\xb5\x18\x01\x124\n%MessageType_DebugLinkResetDebugEvents\x10\ + \xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12+\n\x20MessageType_Ethe\ + reumGetPublicKey\x10\xc2\x03\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageTy\ + pe_EthereumPublicKey\x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessa\ + geType_EthereumGetAddress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessage\ + Type_EthereumAddress\x109\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_\ + EthereumSignTx\x10:\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_EthereumS\ + ignTxEIP1559\x10\xc4\x03\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_E\ + thereumTxRequest\x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_Ethe\ + reumTxAck\x10<\x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSig\ + nMessage\x10@\x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyM\ + essage\x10A\x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSi\ + gnature\x10B\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignType\ + dData\x10\xd0\x03\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTyp\ + edDataStructRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageTy\ + pe_EthereumTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n\ + )MessageType_EthereumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\ + \x18\x01\x120\n%MessageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\ + \x04\x90\xb5\x18\x01\x121\n&MessageType_EthereumTypedDataSignature\x10\ + \xd5\x03\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHas\ + h\x10\xd6\x03\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddres\ + s\x10C\x1a\x04\x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\ \x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\ \x90\xb5\x18\x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\ \x18\x01\x12'\n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\ diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index 31aa95a640..50a553370d 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -2492,6 +2492,8 @@ pub mod features { Capability_Solana = 18, // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.Capability.Capability_Translations) Capability_Translations = 19, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.Capability.Capability_Brightness) + Capability_Brightness = 20, } impl ::protobuf::Enum for Capability { @@ -2522,6 +2524,7 @@ pub mod features { 17 => ::std::option::Option::Some(Capability::Capability_PassphraseEntry), 18 => ::std::option::Option::Some(Capability::Capability_Solana), 19 => ::std::option::Option::Some(Capability::Capability_Translations), + 20 => ::std::option::Option::Some(Capability::Capability_Brightness), _ => ::std::option::Option::None } } @@ -2547,6 +2550,7 @@ pub mod features { "Capability_PassphraseEntry" => ::std::option::Option::Some(Capability::Capability_PassphraseEntry), "Capability_Solana" => ::std::option::Option::Some(Capability::Capability_Solana), "Capability_Translations" => ::std::option::Option::Some(Capability::Capability_Translations), + "Capability_Brightness" => ::std::option::Option::Some(Capability::Capability_Brightness), _ => ::std::option::Option::None } } @@ -2571,6 +2575,7 @@ pub mod features { Capability::Capability_PassphraseEntry, Capability::Capability_Solana, Capability::Capability_Translations, + Capability::Capability_Brightness, ]; } @@ -2601,6 +2606,7 @@ pub mod features { Capability::Capability_PassphraseEntry => 16, Capability::Capability_Solana => 17, Capability::Capability_Translations => 18, + Capability::Capability_Brightness => 19, }; Self::enum_descriptor().value_by_index(index) } @@ -10386,6 +10392,147 @@ impl ::protobuf::reflect::ProtobufValue for UnlockBootloader { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; } +// @@protoc_insertion_point(message:hw.trezor.messages.management.SetBrightness) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct SetBrightness { + // message fields + // @@protoc_insertion_point(field:hw.trezor.messages.management.SetBrightness.value) + pub value: ::std::option::Option<u32>, + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.management.SetBrightness.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a SetBrightness { + fn default() -> &'a SetBrightness { + <SetBrightness as ::protobuf::Message>::default_instance() + } +} + +impl SetBrightness { + pub fn new() -> SetBrightness { + ::std::default::Default::default() + } + + // optional uint32 value = 1; + + pub fn value(&self) -> u32 { + self.value.unwrap_or(0) + } + + pub fn clear_value(&mut self) { + self.value = ::std::option::Option::None; + } + + pub fn has_value(&self) -> bool { + self.value.is_some() + } + + // Param is passed by value, moved + pub fn set_value(&mut self, v: u32) { + self.value = ::std::option::Option::Some(v); + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(1); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "value", + |m: &SetBrightness| { &m.value }, + |m: &mut SetBrightness| { &mut m.value }, + )); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<SetBrightness>( + "SetBrightness", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for SetBrightness { + const NAME: &'static str = "SetBrightness"; + + fn is_initialized(&self) -> bool { + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { + while let Some(tag) = is.read_raw_tag_or_eof()? { + match tag { + 8 => { + self.value = ::std::option::Option::Some(is.read_uint32()?); + }, + tag => { + ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u64 { + let mut my_size = 0; + if let Some(v) = self.value { + my_size += ::protobuf::rt::uint32_size(1, v); + } + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + if let Some(v) = self.value { + os.write_uint32(1, v)?; + } + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> SetBrightness { + SetBrightness::new() + } + + fn clear(&mut self) { + self.value = ::std::option::Option::None; + self.special_fields.clear(); + } + + fn default_instance() -> &'static SetBrightness { + static instance: SetBrightness = SetBrightness { + value: ::std::option::Option::None, + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for SetBrightness { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().message_by_package_relative_name("SetBrightness").unwrap()).clone() + } +} + +impl ::std::fmt::Display for SetBrightness { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for SetBrightness { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; +} + #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] // @@protoc_insertion_point(enum:hw.trezor.messages.management.BackupType) pub enum BackupType { @@ -10612,7 +10759,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x0emessages.proto\"\x80\x01\n\nInitialize\x12\x1d\n\nsession_id\x18\x01\ \x20\x01(\x0cR\tsessionId\x12,\n\x10_skip_passphrase\x18\x02\x20\x01(\ \x08R\x0eSkipPassphraseB\x02\x18\x01\x12%\n\x0ederive_cardano\x18\x03\ - \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xfa\x13\n\x08Featur\ + \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\x9b\x14\n\x08Featur\ es\x12\x16\n\x06vendor\x18\x01\x20\x01(\tR\x06vendor\x12#\n\rmajor_versi\ on\x18\x02\x20\x02(\rR\x0cmajorVersion\x12#\n\rminor_version\x18\x03\x20\ \x02(\rR\x0cminorVersion\x12#\n\rpatch_version\x18\x04\x20\x02(\rR\x0cpa\ @@ -10657,7 +10804,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x180\x20\x01(\rR\x10homescreenHeight\x12+\n\x11bootloader_locked\x181\ \x20\x01(\x08R\x10bootloaderLocked\x12>\n\x18language_version_matches\ \x182\x20\x01(\x08:\x04trueR\x16languageVersionMatches\x12%\n\x0eunit_pa\ - ckaging\x183\x20\x01(\rR\runitPackaging\"\x84\x04\n\nCapability\x12\x1c\ + ckaging\x183\x20\x01(\rR\runitPackaging\"\xa5\x04\n\nCapability\x12\x1c\ \n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x17Ca\ pability_Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Binance\x10\x03\ \x12\x16\n\x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capability_Crypto\ @@ -10670,72 +10817,73 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x04\x80\xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\x10\x1a\x04\ \x80\xa6\x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\x11\x1a\x04\ \x80\xa6\x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x12!\n\x17Capabi\ - lity_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\ - \x01\"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\ - \x20\x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\x9b\x04\n\rApplySettings\ - \x12\x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\ - \x14\n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passphrase\ - \x18\x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\x20\ - \x01(\x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\rR\ - \x10PassphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\x06\ - \x20\x01(\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\x07\x20\ - \x01(\rR\x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_device\x18\ - \x08\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\x18\ - \t\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\x0csaf\ - etyChecks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14experim\ - entalFeatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01(\x08R\ - \x16hidePassphraseFromHost\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_leng\ - th\x18\x01\x20\x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\ - \x01(\x08R\x0bshowDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bda\ - ta_length\x18\x01\x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\ - \x02\x20\x02(\rR\ndataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_\ - chunk\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05fl\ - ags\x18\x01\x20\x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\ - \x01\x20\x01(\x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\ - \x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperatio\ - n\x18\x01\x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProte\ - ctOperationTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07\ - DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\ - \n\x04Ping\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\ - \x11button_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\ - \x06Cancel\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04\ - size\"#\n\x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entro\ - py\"/\n\x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tc\ - hallenge\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\ - \x04hash\"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02\ - (\x0cR\tchallenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\ - \x01\x20\x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\ - \x0cR\tsignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\t\ - mnemonics\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\ - \x01(\tR\x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\ - \x14passphraseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08la\ - nguageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\ - \n\rskip_checksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f\ - _counter\x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\ - \x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\ - \x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\ - \x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\ - \x03256R\x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\ - \x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\ - \x08R\rpinProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08langua\ - geB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\ - \n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_back\ - up\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\ - \x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.m\ - essages.management.BackupType:\x05Bip39R\nbackupType\"\xe5\x01\n\x0cBack\ - upDevice\x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\x0egroupThreshold\ - \x12O\n\x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.messages.management.B\ - ackupDevice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10membe\ - r_threshold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_coun\ - t\x18\x02\x20\x02(\rR\x0bmemberCount\"\x10\n\x0eEntropyRequest\"&\n\nEnt\ - ropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\xd8\x03\ - \n\x0eRecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCoun\ - t\x123\n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphrasePro\ - tection\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\ - \x12\x1e\n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\ - \x14\n\x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\ - \x18\x06\x20\x01(\x08R\x0fenforceWordlist\x12T\n\x04type\x18\x08\x20\x01\ - (\x0e2@.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceTypeR\ + lity_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\x15Capabilit\ + y_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\ + \x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\x20\x01(\ + \rR\x08expiryMs\"\x0c\n\nEndSession\"\x9b\x04\n\rApplySettings\x12\x1e\n\ + \x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05l\ + abel\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passphrase\x18\x03\x20\ + \x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\x20\x01(\x0cR\nh\ + omescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\rR\x10Passphrase\ + SourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\x06\x20\x01(\rR\x0f\ + autoLockDelayMs\x12)\n\x10display_rotation\x18\x07\x20\x01(\rR\x0fdispla\ + yRotation\x12=\n\x1bpassphrase_always_on_device\x18\x08\x20\x01(\x08R\ + \x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\x18\t\x20\x01(\x0e2/.\ + hw.trezor.messages.management.SafetyCheckLevelR\x0csafetyChecks\x123\n\ + \x15experimental_features\x18\n\x20\x01(\x08R\x14experimentalFeatures\ + \x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01(\x08R\x16hidePassph\ + raseFromHost\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\x18\x01\x20\ + \x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\x01(\x08R\x0bsho\ + wDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_length\x18\x01\ + \x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\nd\ + ataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_chunk\x18\x01\x20\ + \x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\ + \x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\x01\x20\x01(\ + \x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\x18\x01\x20\ + \x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperation\x18\x01\ + \x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProtectOperati\ + onTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07DISABLE\ + \x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Pi\ + ng\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\x11butt\ + on_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\x06Cance\ + l\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04size\"#\n\ + \x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\ + \x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tchalleng\ + e\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\ + \"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\t\ + challenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\x01\x20\ + \x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\ts\ + ignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\tmnemonic\ + s\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\ + \x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\x14passphr\ + aseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08languageB\x02\ + \x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\n\rskip_ch\ + ecksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f_counter\ + \x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\x20\x01(\ + \x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\x08noBacku\ + p\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\x20\x01(\ + \x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\x03256R\ + \x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\x08R\x14pa\ + ssphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\x08R\rpinPr\ + otection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08languageB\x02\x18\ + \x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\n\x0bu2f_co\ + unter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_backup\x18\x08\ + \x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\x08R\x08n\ + oBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.messages.ma\ + nagement.BackupType:\x05Bip39R\nbackupType\"\xe5\x01\n\x0cBackupDevice\ + \x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\x0egroupThreshold\x12O\n\ + \x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.messages.management.BackupDe\ + vice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10member_thres\ + hold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_count\x18\ + \x02\x20\x02(\rR\x0bmemberCount\"\x10\n\x0eEntropyRequest\"&\n\nEntropyA\ + ck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0e\ + RecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCount\x123\ + \n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphraseProtectio\ + n\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\x12\x1e\ + \n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\ + \x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\x18\ + \x06\x20\x01(\x08R\x0fenforceWordlist\x12T\n\x04type\x18\x08\x20\x01(\ + \x0e2@.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceTypeR\ \x04type\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12\x17\ \n\x07dry_run\x18\n\x20\x01(\x08R\x06dryRun\"Z\n\x12RecoveryDeviceType\ \x12%\n!RecoveryDeviceType_ScrambledWords\x10\0\x12\x1d\n\x19RecoveryDev\ @@ -10759,15 +10907,15 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\ \x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\ \x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10U\ - nlockBootloader*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\ - \x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\ - \x18Slip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendabl\ - e\x10\x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyC\ - heckLevel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\ - \x15\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\ - \x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n\ - #com.satoshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\ - \x1d\x01\ + nlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\x18\x01\x20\x01(\ + \rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0c\ + Slip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18S\ + lip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\ + \x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckL\ + evel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\ + \x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\ + \x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.sat\ + oshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -10786,7 +10934,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { let generated_file_descriptor = generated_file_descriptor_lazy.get(|| { let mut deps = ::std::vec::Vec::with_capacity(1); deps.push(super::messages::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(45); + let mut messages = ::std::vec::Vec::with_capacity(46); messages.push(Initialize::generated_message_descriptor_data()); messages.push(GetFeatures::generated_message_descriptor_data()); messages.push(Features::generated_message_descriptor_data()); @@ -10831,6 +10979,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(UnlockedPathRequest::generated_message_descriptor_data()); messages.push(ShowDeviceTutorial::generated_message_descriptor_data()); messages.push(UnlockBootloader::generated_message_descriptor_data()); + messages.push(SetBrightness::generated_message_descriptor_data()); messages.push(backup_device::Slip39Group::generated_message_descriptor_data()); let mut enums = ::std::vec::Vec::with_capacity(8); enums.push(BackupType::generated_enum_descriptor_data()); From 9bed793f68c87247b1fcb9e2855d87d8b6a27734 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 22 May 2024 11:21:29 +0200 Subject: [PATCH 185/626] refactor(core): provide backlight values from Rust --- core/embed/rust/librust_qstr.h | 6 +++ core/embed/rust/src/ui/backlight.rs | 43 +++++++++++++++++++ core/embed/rust/src/ui/mod.rs | 2 + .../embed/rust/src/ui/model_mercury/layout.rs | 15 ++++++- core/embed/rust/src/ui/model_mercury/mod.rs | 38 +++++++++++++--- .../src/ui/model_mercury/theme/backlight.rs | 2 +- core/embed/rust/src/ui/model_tr/layout.rs | 12 ++++++ core/embed/rust/src/ui/model_tt/layout.rs | 12 ++++++ core/embed/rust/src/ui/model_tt/mod.rs | 33 +++++++++++--- .../rust/src/ui/model_tt/theme/backlight.rs | 2 +- core/embed/rust/src/ui/ui_features.rs | 16 +++++++ core/mocks/generated/trezorui2.pyi | 20 +++++++++ core/src/all_modules.py | 2 - core/src/apps/base.py | 2 +- core/src/boot.py | 4 +- core/src/trezor/ui/__init__.py | 11 ++--- .../src/trezor/ui/layouts/mercury/__init__.py | 8 ++-- .../trezor/ui/layouts/mercury/homescreen.py | 4 +- core/src/trezor/ui/layouts/progress.py | 4 +- core/src/trezor/ui/layouts/tt/__init__.py | 8 ++-- core/src/trezor/ui/layouts/tt/homescreen.py | 4 +- core/src/trezor/ui/style.py | 41 ------------------ 22 files changed, 207 insertions(+), 82 deletions(-) create mode 100644 core/embed/rust/src/ui/backlight.rs delete mode 100644 core/src/trezor/ui/style.py diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index a4e9b63fb0..427d6ad647 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -6,14 +6,20 @@ static void _librust_qstrs(void) { MP_QSTR_; + MP_QSTR_BacklightLevels; MP_QSTR_CANCELLED; MP_QSTR_CONFIRMED; + MP_QSTR_DIM; MP_QSTR_INFO; + MP_QSTR_LOW; MP_QSTR_LayoutObj; + MP_QSTR_MAX; MP_QSTR_MESSAGE_NAME; MP_QSTR_MESSAGE_WIRE_TYPE; MP_QSTR_Msg; MP_QSTR_MsgDef; + MP_QSTR_NONE; + MP_QSTR_NORMAL; MP_QSTR_TR; MP_QSTR_TranslationsHeader; MP_QSTR___dict__; diff --git a/core/embed/rust/src/ui/backlight.rs b/core/embed/rust/src/ui/backlight.rs new file mode 100644 index 0000000000..ca2ce55ff6 --- /dev/null +++ b/core/embed/rust/src/ui/backlight.rs @@ -0,0 +1,43 @@ +use crate::{ + error::Error, + micropython::{ffi, obj::Obj, qstr::Qstr, simple_type::SimpleTypeObj, typ::Type, util}, + ui::{ui_features::ModelUI, UIFeaturesCommon}, +}; + +/* + * This whole module should be removed, in favor of fully + * moving backlight control into Rust. Relatively easy to do, but not + * necessary right now. Filed as https://github.com/trezor/trezor-firmware/issues/3849 + * + * Consider this module temporary. (yeah yeah everyone knows "temporary" + * things stay forever. Written in May 2024.) + */ + +static BACKLIGHT_LEVELS_TYPE: Type = obj_type! { + name: Qstr::MP_QSTR_BacklightLevels, + attr_fn: backlight_levels_attr, +}; + +unsafe extern "C" fn backlight_levels_attr(_self_in: Obj, attr: ffi::qstr, dest: *mut Obj) { + let block = || { + let arg = unsafe { dest.read() }; + if !arg.is_null() { + // Null destination would mean a `setattr`. + return Err(Error::TypeError); + } + let attr = Qstr::from_u16(attr as _); + let value = match attr { + Qstr::MP_QSTR_NONE => ModelUI::get_backlight_none(), + Qstr::MP_QSTR_NORMAL => ModelUI::get_backlight_normal(), + Qstr::MP_QSTR_LOW => ModelUI::get_backlight_low(), + Qstr::MP_QSTR_DIM => ModelUI::get_backlight_dim(), + Qstr::MP_QSTR_MAX => ModelUI::get_backlight_max(), + _ => return Err(Error::AttributeError(attr)), + }; + unsafe { dest.write(value.into()) }; + Ok(()) + }; + unsafe { util::try_or_raise(block) } +} + +pub static BACKLIGHT_LEVELS_OBJ: SimpleTypeObj = SimpleTypeObj::new(&BACKLIGHT_LEVELS_TYPE); diff --git a/core/embed/rust/src/ui/mod.rs b/core/embed/rust/src/ui/mod.rs index f68d521fc2..f1fed31e8f 100644 --- a/core/embed/rust/src/ui/mod.rs +++ b/core/embed/rust/src/ui/mod.rs @@ -2,6 +2,8 @@ pub mod macros; pub mod animation; +#[cfg(feature = "micropython")] +pub mod backlight; pub mod button_request; pub mod component; pub mod constant; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 9c459351bb..f51e4d7268 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -44,8 +44,8 @@ use super::{ FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, SelectWordCount, SelectWordCountMsg, - SetBrightnessDialog, SimplePage, Slip39Input, StatusScreen, SwipeUpScreen, SwipeUpScreenMsg, - VerticalMenu, VerticalMenuChoiceMsg, + SetBrightnessDialog, SimplePage, Slip39Input, StatusScreen, SwipeUpScreen, + SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, }, flow, theme, }; @@ -2033,6 +2033,17 @@ pub static mp_module_trezorui2: Module = obj_module! { /// ) -> LayoutObj[UiResult]: /// """Total summary and hold to confirm.""" Qstr::MP_QSTR_flow_confirm_summary => obj_fn_kw!(0, flow::new_confirm_summary).as_obj(), + + /// class BacklightLevels: + /// """Backlight levels. Values dynamically update based on user settings.""" + /// MAX: ClassVar[int] + /// NORMAL: ClassVar[int] + /// LOW: ClassVar[int] + /// DIM: ClassVar[int] + /// NONE: ClassVar[int] + /// + /// mock:global + Qstr::MP_QSTR_BacklightLevels => BACKLIGHT_LEVELS_OBJ.as_obj(), }; #[cfg(test)] diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/model_mercury/mod.rs index abcf538772..c73ee96a77 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/mod.rs @@ -1,4 +1,5 @@ use super::{geometry::Rect, UIFeaturesCommon}; +use crate::ui::model_mercury::theme::backlight; #[cfg(feature = "bootloader")] pub mod bootloader; @@ -16,19 +17,44 @@ pub mod shapes; pub struct ModelMercuryFeatures; impl UIFeaturesCommon for ModelMercuryFeatures { + #[cfg(feature = "backlight")] fn fadein() { - #[cfg(feature = "backlight")] - crate::ui::display::fade_backlight_duration(theme::backlight::get_backlight_normal(), 150); + crate::ui::display::fade_backlight_duration(backlight::get_backlight_normal(), 150); } + #[cfg(feature = "backlight")] fn fadeout() { - #[cfg(feature = "backlight")] - crate::ui::display::fade_backlight_duration(theme::backlight::get_backlight_dim(), 150); + crate::ui::display::fade_backlight_duration(backlight::get_backlight_dim(), 150); } + #[cfg(feature = "backlight")] fn backlight_on() { - #[cfg(feature = "backlight")] - crate::ui::display::set_backlight(theme::backlight::get_backlight_normal()); + crate::ui::display::set_backlight(backlight::get_backlight_normal()); + } + + #[cfg(feature = "backlight")] + fn get_backlight_none() -> u16 { + backlight::get_backlight_none() + } + + #[cfg(feature = "backlight")] + fn get_backlight_normal() -> u16 { + backlight::get_backlight_normal() + } + + #[cfg(feature = "backlight")] + fn get_backlight_low() -> u16 { + backlight::get_backlight_low() + } + + #[cfg(feature = "backlight")] + fn get_backlight_dim() -> u16 { + backlight::get_backlight_dim() + } + + #[cfg(feature = "backlight")] + fn get_backlight_max() -> u16 { + backlight::get_backlight_max() } const SCREEN: Rect = constant::SCREEN; diff --git a/core/embed/rust/src/ui/model_mercury/theme/backlight.rs b/core/embed/rust/src/ui/model_mercury/theme/backlight.rs index 37a788c1d9..7dca47cc39 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/backlight.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/backlight.rs @@ -5,7 +5,7 @@ use crate::storage; const BACKLIGHT_NORMAL: u8 = 150; const BACKLIGHT_LOW: u8 = 45; const BACKLIGHT_DIM: u8 = 5; -const BACKLIGHT_NONE: u8 = 2; +const BACKLIGHT_NONE: u8 = 0; const BACKLIGHT_MIN: u8 = 10; const BACKLIGHT_MAX: u8 = 255; diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index bc56bd6570..55ee4ab8fd 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -13,6 +13,7 @@ use crate::{ translations::TR, trezorhal::model, ui::{ + backlight::BACKLIGHT_LEVELS_OBJ, component::{ base::Component, connect::Connect, @@ -2037,4 +2038,15 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def show_wait_text(message: str, /) -> None: /// """Show single-line text in the middle of the screen.""" Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), + + /// class BacklightLevels: + /// """Backlight levels. Values dynamically update based on user settings.""" + /// MAX: ClassVar[int] + /// NORMAL: ClassVar[int] + /// LOW: ClassVar[int] + /// DIM: ClassVar[int] + /// NONE: ClassVar[int] + /// + /// mock:global + Qstr::MP_QSTR_BacklightLevels => BACKLIGHT_LEVELS_OBJ.as_obj(), }; diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index f6bdb79884..b0bcb05157 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -10,6 +10,7 @@ use crate::{ translations::TR, trezorhal::model, ui::{ + backlight::BACKLIGHT_LEVELS_OBJ, component::{ base::ComponentExt, connect::Connect, @@ -2117,6 +2118,17 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def show_wait_text(message: str, /) -> LayoutObj[None]: /// """Show single-line text in the middle of the screen.""" Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), + + /// class BacklightLevels: + /// """Backlight levels. Values dynamically update based on user settings.""" + /// MAX: ClassVar[int] + /// NORMAL: ClassVar[int] + /// LOW: ClassVar[int] + /// DIM: ClassVar[int] + /// NONE: ClassVar[int] + /// + /// mock:global + Qstr::MP_QSTR_BacklightLevels => BACKLIGHT_LEVELS_OBJ.as_obj(), }; #[cfg(test)] diff --git a/core/embed/rust/src/ui/model_tt/mod.rs b/core/embed/rust/src/ui/model_tt/mod.rs index 1789dd188a..4754ee74ec 100644 --- a/core/embed/rust/src/ui/model_tt/mod.rs +++ b/core/embed/rust/src/ui/model_tt/mod.rs @@ -20,21 +20,44 @@ use crate::ui::{ pub struct ModelTTFeatures; impl UIFeaturesCommon for ModelTTFeatures { + #[cfg(feature = "backlight")] fn fadein() { - #[cfg(feature = "backlight")] crate::ui::display::fade_backlight_duration(backlight::get_backlight_normal(), 150); } - + #[cfg(feature = "backlight")] fn fadeout() { - #[cfg(feature = "backlight")] crate::ui::display::fade_backlight_duration(backlight::get_backlight_normal(), 150); } - + #[cfg(feature = "backlight")] fn backlight_on() { - #[cfg(feature = "backlight")] crate::ui::display::set_backlight(backlight::get_backlight_normal()); } + #[cfg(feature = "backlight")] + fn get_backlight_none() -> u16 { + backlight::get_backlight_none() + } + + #[cfg(feature = "backlight")] + fn get_backlight_normal() -> u16 { + backlight::get_backlight_normal() + } + + #[cfg(feature = "backlight")] + fn get_backlight_low() -> u16 { + backlight::get_backlight_low() + } + + #[cfg(feature = "backlight")] + fn get_backlight_dim() -> u16 { + backlight::get_backlight_dim() + } + + #[cfg(feature = "backlight")] + fn get_backlight_max() -> u16 { + backlight::get_backlight_max() + } + const SCREEN: Rect = constant::SCREEN; fn screen_fatal_error(title: &str, msg: &str, footer: &str) { diff --git a/core/embed/rust/src/ui/model_tt/theme/backlight.rs b/core/embed/rust/src/ui/model_tt/theme/backlight.rs index 37a788c1d9..7dca47cc39 100644 --- a/core/embed/rust/src/ui/model_tt/theme/backlight.rs +++ b/core/embed/rust/src/ui/model_tt/theme/backlight.rs @@ -5,7 +5,7 @@ use crate::storage; const BACKLIGHT_NORMAL: u8 = 150; const BACKLIGHT_LOW: u8 = 45; const BACKLIGHT_DIM: u8 = 5; -const BACKLIGHT_NONE: u8 = 2; +const BACKLIGHT_NONE: u8 = 0; const BACKLIGHT_MIN: u8 = 10; const BACKLIGHT_MAX: u8 = 255; diff --git a/core/embed/rust/src/ui/ui_features.rs b/core/embed/rust/src/ui/ui_features.rs index 528981faab..d45e48cae6 100644 --- a/core/embed/rust/src/ui/ui_features.rs +++ b/core/embed/rust/src/ui/ui_features.rs @@ -11,6 +11,22 @@ pub trait UIFeaturesCommon { fn fadeout() {} fn backlight_on() {} + fn get_backlight_none() -> u16 { + 0 + } + fn get_backlight_normal() -> u16 { + 0 + } + fn get_backlight_low() -> u16 { + 0 + } + fn get_backlight_dim() -> u16 { + 0 + } + fn get_backlight_max() -> u16 { + 0 + } + const SCREEN: Rect; fn screen_fatal_error(title: &str, msg: &str, footer: &str); diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index ed25b725b2..52e099bd63 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -592,6 +592,16 @@ def flow_confirm_summary( br_type: str, ) -> LayoutObj[UiResult]: """Total summary and hold to confirm.""" + + +# rust/src/ui/model_mercury/layout.rs +class BacklightLevels: + """Backlight levels. Values dynamically update based on user settings.""" + MAX: ClassVar[int] + NORMAL: ClassVar[int] + LOW: ClassVar[int] + DIM: ClassVar[int] + NONE: ClassVar[int] CONFIRMED: UiResult CANCELLED: UiResult INFO: UiResult @@ -1586,3 +1596,13 @@ def confirm_firmware_update( # rust/src/ui/model_tt/layout.rs def show_wait_text(message: str, /) -> LayoutObj[None]: """Show single-line text in the middle of the screen.""" + + +# rust/src/ui/model_tt/layout.rs +class BacklightLevels: + """Backlight levels. Values dynamically update based on user settings.""" + MAX: ClassVar[int] + NORMAL: ClassVar[int] + LOW: ClassVar[int] + DIM: ClassVar[int] + NONE: ClassVar[int] diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 5275e2dd5d..165a57d2e1 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -195,8 +195,6 @@ import trezor.ui.layouts.tt.recovery trezor.ui.layouts.tt.reset import trezor.ui.layouts.tt.reset -trezor.ui.style -import trezor.ui.style trezor.utils import trezor.utils trezor.wire diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 3e4317dfd8..e9d5fc7352 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -437,7 +437,7 @@ def reload_settings_from_storage() -> None: ) wire.EXPERIMENTAL_ENABLED = storage_device.get_experimental_features() if ui.display.orientation() != storage_device.get_rotation(): - ui.backlight_fade(ui.style.get_backlight_dim()) + ui.backlight_fade(ui.BacklightLevels.DIM) ui.display.orientation(storage_device.get_rotation()) diff --git a/core/src/boot.py b/core/src/boot.py index 134d27e0e4..cffc828b07 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -49,7 +49,7 @@ async def bootscreen() -> None: if can_lock_device(): enforce_welcome_screen_duration() - ui.backlight_fade(ui.style.get_backlight_dim()) + ui.backlight_fade(ui.BacklightLevels.NONE) ui.display.orientation(storage.device.get_rotation()) await lockscreen await verify_user_pin() @@ -64,7 +64,7 @@ async def bootscreen() -> None: if rotation != ui.display.orientation(): # there is a slight delay before next screen is shown, # so we don't fade unless there is a change of orientation - ui.backlight_fade(ui.style.get_backlight_dim()) + ui.backlight_fade(ui.BacklightLevels.DIM) ui.display.orientation(rotation) allow_all_loader_messages() return diff --git a/core/src/trezor/ui/__init__.py b/core/src/trezor/ui/__init__.py index 785447b9cd..eaf19edf3d 100644 --- a/core/src/trezor/ui/__init__.py +++ b/core/src/trezor/ui/__init__.py @@ -4,6 +4,7 @@ from typing import TYPE_CHECKING, Any, Awaitable, Generator from trezor import loop, utils +from trezorui2 import BacklightLevels if TYPE_CHECKING: from typing import Generic, TypeVar @@ -53,21 +54,17 @@ def refresh() -> None: loop.after_step_hook = refresh -# import style later to avoid circular dep -from trezor.ui import style # isort:skip - - async def _alert(count: int) -> None: short_sleep = loop.sleep(20) long_sleep = loop.sleep(80) for i in range(count * 2): if i % 2 == 0: - display.backlight(style.get_backlight_max()) + display.backlight(BacklightLevels.MAX) await short_sleep else: - display.backlight(style.get_backlight_dim()) + display.backlight(BacklightLevels.DIM) await long_sleep - display.backlight(style.get_backlight_normal()) + display.backlight(BacklightLevels.NORMAL) global _alert_in_progress _alert_in_progress = False diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 586e6e6b91..98775be170 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -38,7 +38,7 @@ def __init__(self, layout: Any): self.timer = loop.Timer() self.layout.attach_timer_fn(self.set_timer) self._send_button_request() - self.backlight_level = ui.style.get_backlight_normal() + self.backlight_level = ui.BacklightLevels.NORMAL def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) @@ -187,7 +187,7 @@ def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: ) def _first_paint(self) -> None: - ui.backlight_fade(ui.style.get_backlight_none()) + ui.backlight_fade(ui.BacklightLevels.NONE) self._paint() if __debug__ and self.should_notify_layout_change: @@ -263,10 +263,10 @@ def dummy_set_timer(token: int, deadline: int) -> None: raise RuntimeError layout.attach_timer_fn(dummy_set_timer) - ui.backlight_fade(ui.style.get_backlight_dim()) + ui.backlight_fade(ui.BacklightLevels.DIM) layout.paint() ui.refresh() - ui.backlight_fade(ui.style.get_backlight_normal()) + ui.backlight_fade(ui.BacklightLevels.NORMAL) async def raise_if_not_confirmed( diff --git a/core/src/trezor/ui/layouts/mercury/homescreen.py b/core/src/trezor/ui/layouts/mercury/homescreen.py index e6da99996b..bd608aefe0 100644 --- a/core/src/trezor/ui/layouts/mercury/homescreen.py +++ b/core/src/trezor/ui/layouts/mercury/homescreen.py @@ -93,9 +93,9 @@ def __init__( coinjoin_authorized: bool = False, ) -> None: self.bootscreen = bootscreen - self.backlight_level = ui.style.get_backlight_low() + self.backlight_level = ui.BacklightLevels.LOW if bootscreen: - self.backlight_level = ui.style.get_backlight_normal() + self.backlight_level = ui.BacklightLevels.NORMAL skip = ( not bootscreen and storage_cache.homescreen_shown is self.RENDER_INDICATOR diff --git a/core/src/trezor/ui/layouts/progress.py b/core/src/trezor/ui/layouts/progress.py index 2b3f11a5f0..53b960a83d 100644 --- a/core/src/trezor/ui/layouts/progress.py +++ b/core/src/trezor/ui/layouts/progress.py @@ -34,11 +34,11 @@ def __init__( layout: Any, ): self.layout = layout - ui.backlight_fade(ui.style.get_backlight_dim()) + ui.backlight_fade(ui.BacklightLevels.DIM) self.layout.attach_timer_fn(self.set_timer) self.layout.paint() ui.refresh() - ui.backlight_fade(ui.style.get_backlight_normal()) + ui.backlight_fade(ui.BacklightLevels.NORMAL) def set_timer(self, token: int, deadline: int) -> None: raise RuntimeError # progress layouts should not set timers diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 300a1089e7..4fe81b511f 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -44,7 +44,7 @@ def __init__(self, layout: trezorui2.LayoutObj[T]): self.timer = loop.Timer() self.layout.attach_timer_fn(self.set_timer) self._send_button_request() - self.backlight_level = ui.style.get_backlight_normal() + self.backlight_level = ui.BacklightLevels.NORMAL def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) @@ -193,7 +193,7 @@ def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: ) def _first_paint(self) -> None: - ui.backlight_fade(ui.style.get_backlight_none()) + ui.backlight_fade(ui.BacklightLevels.NONE) self._paint() if __debug__ and self.should_notify_layout_change: @@ -269,10 +269,10 @@ def dummy_set_timer(token: int, deadline: int) -> None: raise RuntimeError layout.attach_timer_fn(dummy_set_timer) - ui.backlight_fade(ui.style.get_backlight_dim()) + ui.backlight_fade(ui.BacklightLevels.DIM) layout.paint() ui.refresh() - ui.backlight_fade(ui.style.get_backlight_normal()) + ui.backlight_fade(ui.BacklightLevels.NORMAL) async def raise_if_not_confirmed( diff --git a/core/src/trezor/ui/layouts/tt/homescreen.py b/core/src/trezor/ui/layouts/tt/homescreen.py index e6da99996b..bd608aefe0 100644 --- a/core/src/trezor/ui/layouts/tt/homescreen.py +++ b/core/src/trezor/ui/layouts/tt/homescreen.py @@ -93,9 +93,9 @@ def __init__( coinjoin_authorized: bool = False, ) -> None: self.bootscreen = bootscreen - self.backlight_level = ui.style.get_backlight_low() + self.backlight_level = ui.BacklightLevels.LOW if bootscreen: - self.backlight_level = ui.style.get_backlight_normal() + self.backlight_level = ui.BacklightLevels.NORMAL skip = ( not bootscreen and storage_cache.homescreen_shown is self.RENDER_INDICATOR diff --git a/core/src/trezor/ui/style.py b/core/src/trezor/ui/style.py deleted file mode 100644 index dd6affeaca..0000000000 --- a/core/src/trezor/ui/style.py +++ /dev/null @@ -1,41 +0,0 @@ -from micropython import const - -import storage.device - -# backlight brightness -_BACKLIGHT_NORMAL = const(150) -_BACKLIGHT_LOW = const(45) -_BACKLIGHT_DIM = const(5) -_BACKLIGHT_NONE = const(0) -_BACKLIGHT_MIN = const(10) -_BACKLIGHT_MAX = const(255) - - -def get_backlight_normal() -> int: - val = storage.device.get_brightness() - if val is None: - return _BACKLIGHT_NORMAL - return val - - -def get_backlight_low() -> int: - val = storage.device.get_brightness() - if val is None or val > _BACKLIGHT_LOW: - return _BACKLIGHT_LOW - return val - - -def get_backlight_dim() -> int: - return _BACKLIGHT_DIM - - -def get_backlight_none() -> int: - return _BACKLIGHT_NONE - - -def get_backlight_min() -> int: - return _BACKLIGHT_MIN - - -def get_backlight_max() -> int: - return _BACKLIGHT_MAX From 7e2f9850374c82e6a361e54692dea605fd392454 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 22 May 2024 11:22:48 +0200 Subject: [PATCH 186/626] chore(core): drop unused progress impl --- core/src/all_modules.py | 2 - .../src/trezor/ui/layouts/mercury/progress.py | 72 ------------------- 2 files changed, 74 deletions(-) delete mode 100644 core/src/trezor/ui/layouts/mercury/progress.py diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 165a57d2e1..dcaf23bf02 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -163,8 +163,6 @@ import trezor.ui.layouts.mercury.fido trezor.ui.layouts.mercury.homescreen import trezor.ui.layouts.mercury.homescreen -trezor.ui.layouts.mercury.progress -import trezor.ui.layouts.mercury.progress trezor.ui.layouts.mercury.recovery import trezor.ui.layouts.mercury.recovery trezor.ui.layouts.mercury.reset diff --git a/core/src/trezor/ui/layouts/mercury/progress.py b/core/src/trezor/ui/layouts/mercury/progress.py deleted file mode 100644 index 390b6ba2c6..0000000000 --- a/core/src/trezor/ui/layouts/mercury/progress.py +++ /dev/null @@ -1,72 +0,0 @@ -from typing import TYPE_CHECKING - -import trezorui2 -from trezor import TR, ui, utils - -if TYPE_CHECKING: - from typing import Any - - from ..common import ProgressLayout - - -class RustProgress: - def __init__( - self, - layout: Any, - ): - self.layout = layout - ui.backlight_fade(ui.style.get_backlight_dim()) - self.layout.attach_timer_fn(self.set_timer) - self.layout.paint() - ui.refresh() - ui.backlight_fade(ui.style.get_backlight_normal()) - - def set_timer(self, token: int, deadline: int) -> None: - raise RuntimeError # progress layouts should not set timers - - def report(self, value: int, description: str | None = None): - msg = self.layout.progress_event(value, description or "") - assert msg is None - self.layout.paint() - ui.refresh() - - -def progress( - message: str | None = None, - description: str | None = None, - indeterminate: bool = False, -) -> ProgressLayout: - message = message or TR.progress__please_wait # def_arg - return RustProgress( - layout=trezorui2.show_progress( - title=message, - indeterminate=indeterminate, - description=description or "", - ) - ) - - -def bitcoin_progress(message: str) -> ProgressLayout: - return progress(message) - - -def coinjoin_progress(message: str) -> ProgressLayout: - return RustProgress( - layout=trezorui2.show_progress_coinjoin(title=message, indeterminate=False) - ) - - -def pin_progress(message: str, description: str) -> ProgressLayout: - return progress(message, description=description) - - -if not utils.BITCOIN_ONLY: - - def monero_keyimage_sync_progress() -> ProgressLayout: - return progress("", TR.progress__syncing) - - def monero_live_refresh_progress() -> ProgressLayout: - return progress("", TR.progress__refreshing, indeterminate=True) - - def monero_transaction_progress_inner() -> ProgressLayout: - return progress("", TR.progress__signing_transaction) From 2e10d440faef59d870bdc8d0281f85080bbcd6b4 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 17 May 2024 15:38:51 +0200 Subject: [PATCH 187/626] fix(core): add subtitle to confirm action [no changelog] --- .../ui/model_mercury/flow/confirm_action.rs | 25 +++++++++++++------ core/embed/rust/src/ui/model_tr/layout.rs | 2 ++ core/embed/rust/src/ui/model_tt/layout.rs | 2 ++ core/mocks/generated/trezorui2.pyi | 4 +++ .../src/trezor/ui/layouts/mercury/__init__.py | 4 +++ core/src/trezor/ui/layouts/tr/__init__.py | 3 +++ core/src/trezor/ui/layouts/tt/__init__.py | 3 +++ 7 files changed, 35 insertions(+), 8 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index a2e73c0713..73f73b217a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -121,6 +121,10 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let action: Option<TString> = kwargs.get(Qstr::MP_QSTR_action)?.try_into_option()?; let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; + let subtitle: Option<TString> = kwargs + .get(Qstr::MP_QSTR_subtitle) + .unwrap_or(Obj::const_none()) + .try_into_option()?; // let verb: Option<TString> = kwargs // .get(Qstr::MP_QSTR_verb) // .unwrap_or_else(|_| Obj::const_none()) @@ -150,10 +154,16 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err paragraphs.into_paragraphs() }; - let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + let mut content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + .with_footer(TR::instructions__swipe_up.into(), None); + + if let Some(subtitle) = subtitle { + content_intro = content_intro.with_subtitle(subtitle); + } + + let content_intro = + content_intro.map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); let content_menu = if let Some(verb_cancel) = verb_cancel { Frame::left_aligned( @@ -189,14 +199,13 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err ) }; - let content_confirm = Frame::left_aligned(title, prompt) + let mut content_confirm = Frame::left_aligned(title, prompt) .with_footer(prompt_action, None) .with_menu_button(); - // .with_overlapping_content(); - // if let Some(subtitle) = subtitle { - // content_confirm = content_confirm.with_subtitle(subtitle); - // } + if let Some(subtitle) = subtitle { + content_confirm = content_confirm.with_subtitle(subtitle); + } let content_confirm = content_confirm.map(move |msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 55ee4ab8fd..29f0f4b9b9 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -1642,11 +1642,13 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// action: str | None, /// description: str | None, + /// subtitle: str | None = None, /// verb: str = "CONFIRM", /// verb_cancel: str | None = None, /// hold: bool = False, /// hold_danger: bool = False, # unused on TR /// reverse: bool = False, + /// prompt_screen: bool = False, /// ) -> LayoutObj[UiResult]: /// """Confirm action.""" Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(), diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index b0bcb05157..aeba4a33d6 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1708,11 +1708,13 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// action: str | None, /// description: str | None, + /// subtitle: str | None = None, /// verb: str | None = None, /// verb_cancel: str | None = None, /// hold: bool = False, /// hold_danger: bool = False, /// reverse: bool = False, + /// prompt_screen: bool = False, /// ) -> LayoutObj[UiResult]: /// """Confirm action.""" Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 52e099bd63..67604acc07 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -623,11 +623,13 @@ def confirm_action( title: str, action: str | None, description: str | None, + subtitle: str | None = None, verb: str = "CONFIRM", verb_cancel: str | None = None, hold: bool = False, hold_danger: bool = False, # unused on TR reverse: bool = False, + prompt_screen: bool = False, ) -> LayoutObj[UiResult]: """Confirm action.""" @@ -1147,11 +1149,13 @@ def confirm_action( title: str, action: str | None, description: str | None, + subtitle: str | None = None, verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, hold_danger: bool = False, reverse: bool = False, + prompt_screen: bool = False, ) -> LayoutObj[UiResult]: """Confirm action.""" diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 98775be170..51fdb01c00 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -283,6 +283,7 @@ async def confirm_action( action: str | None = None, description: str | None = None, description_param: str | None = None, + subtitle: str | None = None, verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, @@ -290,6 +291,7 @@ async def confirm_action( reverse: bool = False, exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, + prompt_screen: bool = False, ) -> None: if description is not None and description_param is not None: description = description.format(description_param) @@ -301,11 +303,13 @@ async def confirm_action( title=title, action=action, description=description, + subtitle=subtitle, verb=verb, verb_cancel=verb_cancel, hold=hold, hold_danger=hold_danger, reverse=reverse, + prompt_screen=prompt_screen, ) ), br_type, diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 8101160d52..58288a78f6 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -374,6 +374,7 @@ def confirm_action( action: str | None = None, description: str | None = None, description_param: str | None = None, + subtitle: str | None = None, verb: str | None = None, verb_cancel: str | None = "", hold: bool = False, @@ -381,6 +382,7 @@ def confirm_action( reverse: bool = False, exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, + prompt_screen: bool = False, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg if description is not None and description_param is not None: @@ -393,6 +395,7 @@ def confirm_action( title=title, action=action, description=description, + subtitle=subtitle, verb=verb, verb_cancel=verb_cancel, hold=hold, diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 4fe81b511f..089926ac72 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -289,6 +289,7 @@ def confirm_action( action: str | None = None, description: str | None = None, description_param: str | None = None, + subtitle: str | None = None, verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, @@ -296,6 +297,7 @@ def confirm_action( reverse: bool = False, exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, + prompt_screen: bool = False, ) -> Awaitable[None]: if description is not None and description_param is not None: description = description.format(description_param) @@ -307,6 +309,7 @@ def confirm_action( title=title, action=action, description=description, + subtitle=subtitle, verb=verb, verb_cancel=verb_cancel, hold=hold, From b9a55cf2a7cfc2b30550c7a65c025cb33d6c586e Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 7 May 2024 15:46:15 +0200 Subject: [PATCH 188/626] feat(core): add settings to turn haptic on/off [no changelog] --- common/protob/messages-management.proto | 3 + .../extmod/modtrezorio/modtrezorio-haptic.h | 47 +++ core/embed/extmod/modtrezorio/modtrezorio.c | 9 +- .../extmod/modtrezorutils/modtrezorutils.c | 7 + core/embed/trezorhal/haptic.h | 2 + .../stm32u5/haptic/drv2625/drv2625.c | 8 + core/mocks/generated/trezorio/__init__.pyi | 2 +- core/mocks/generated/trezorio/haptic.pyi | 8 + core/mocks/generated/trezorutils.pyi | 2 + core/src/apps/base.py | 4 + core/src/apps/management/apply_settings.py | 23 +- core/src/boot.py | 8 +- core/src/storage/device.py | 21 +- core/src/trezor/enums/Capability.py | 1 + core/src/trezor/enums/__init__.py | 1 + core/src/trezor/messages.py | 4 + core/src/trezor/utils.py | 1 + python/src/trezorlib/cli/settings.py | 8 + python/src/trezorlib/device.py | 2 + python/src/trezorlib/messages.py | 7 + .../protos/generated/messages_management.rs | 313 +++++++++++------- 21 files changed, 359 insertions(+), 122 deletions(-) create mode 100644 core/embed/extmod/modtrezorio/modtrezorio-haptic.h create mode 100644 core/mocks/generated/trezorio/haptic.pyi diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index d0624752e9..e13857a51e 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -116,6 +116,7 @@ message Features { Capability_Solana = 18; Capability_Translations = 19 [(bitcoin_only) = true]; Capability_Brightness = 20 [(bitcoin_only) = true]; + Capability_Haptic = 21 [(bitcoin_only) = true]; } optional BackupType backup_type = 31; // type of device backup (BIP-39 / SLIP-39 basic / SLIP-39 advanced) optional bool sd_card_present = 32; // is SD card present @@ -138,6 +139,7 @@ message Features { optional bool bootloader_locked = 49; // bootloader is locked optional bool language_version_matches = 50 [default=true]; // translation blob version matches firmware version optional uint32 unit_packaging = 51; // unit/device packaging version + optional bool haptic_feedback = 52; // haptic feedback is enabled } /** @@ -185,6 +187,7 @@ message ApplySettings { optional SafetyCheckLevel safety_checks = 9; // Safety check level, set to Prompt to limit path namespace enforcement optional bool experimental_features = 10; // enable experimental message types optional bool hide_passphrase_from_host = 11; // do not show passphrase coming from host + optional bool haptic_feedback = 13; // enable haptic feedback } /** diff --git a/core/embed/extmod/modtrezorio/modtrezorio-haptic.h b/core/embed/extmod/modtrezorio/modtrezorio-haptic.h new file mode 100644 index 0000000000..9462b82614 --- /dev/null +++ b/core/embed/extmod/modtrezorio/modtrezorio-haptic.h @@ -0,0 +1,47 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "haptic.h" + +/// package: trezorio.haptic + +/// def haptic_set_enabled(enable: bool) -> None: +/// """ +/// Enable/Disable the haptic feedback. +/// """ +STATIC mp_obj_t mod_trezorio_haptic_set_enabled(mp_obj_t enable) { + haptic_set_enabled(mp_obj_is_true(enable)); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_haptic_set_enabled_obj, + mod_trezorio_haptic_set_enabled); + +STATIC const mp_rom_map_elem_t mod_trezorio_haptic_globals_table[] = { + {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_haptic)}, + {MP_ROM_QSTR(MP_QSTR_haptic_set_enabled), + MP_ROM_PTR(&mod_trezorio_haptic_set_enabled_obj)}, + +}; +STATIC MP_DEFINE_CONST_DICT(mod_trezorio_haptic_globals, + mod_trezorio_haptic_globals_table); + +STATIC const mp_obj_module_t mod_trezorio_haptic_module = { + .base = {&mp_type_module}, + .globals = (mp_obj_dict_t *)&mod_trezorio_haptic_globals, +}; diff --git a/core/embed/extmod/modtrezorio/modtrezorio.c b/core/embed/extmod/modtrezorio/modtrezorio.c index 72fa781f4f..b740a12dc9 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio.c +++ b/core/embed/extmod/modtrezorio/modtrezorio.c @@ -55,9 +55,12 @@ bool usb_connected_previously = true; #include "modtrezorio-fatfs.h" #include "modtrezorio-sdcard.h" #endif +#ifdef USE_HAPTIC +#include "modtrezorio-haptic.h" +#endif /// package: trezorio.__init__ -/// from . import fatfs, sdcard +/// from . import fatfs, haptic, sdcard /// POLL_READ: int # wait until interface is readable and return read data /// POLL_WRITE: int # wait until interface is writable @@ -89,6 +92,10 @@ STATIC const mp_rom_map_elem_t mp_module_trezorio_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_sdcard), MP_ROM_PTR(&mod_trezorio_sdcard_module)}, #endif +#ifdef USE_HAPTIC + {MP_ROM_QSTR(MP_QSTR_haptic), MP_ROM_PTR(&mod_trezorio_haptic_module)}, +#endif + #ifdef USE_TOUCH {MP_ROM_QSTR(MP_QSTR_TOUCH), MP_ROM_INT(TOUCH_IFACE)}, {MP_ROM_QSTR(MP_QSTR_TOUCH_START), MP_ROM_INT((TOUCH_START >> 24) & 0xFFU)}, diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index 5652c951c9..d3c711784f 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -416,6 +416,8 @@ STATIC mp_obj_tuple_t mod_trezorutils_version_obj = { /// """Whether the hardware supports SD card.""" /// USE_BACKLIGHT: bool /// """Whether the hardware supports backlight brightness control.""" +/// USE_HAPTIC: bool +/// """Whether the hardware supports haptic feedback.""" /// USE_OPTIGA: bool /// """Whether the hardware supports Optiga secure element.""" /// MODEL: str @@ -474,6 +476,11 @@ STATIC const mp_rom_map_elem_t mp_module_trezorutils_globals_table[] = { #else {MP_ROM_QSTR(MP_QSTR_USE_BACKLIGHT), mp_const_false}, #endif +#ifdef USE_HAPTIC + {MP_ROM_QSTR(MP_QSTR_USE_HAPTIC), mp_const_true}, +#else + {MP_ROM_QSTR(MP_QSTR_USE_HAPTIC), mp_const_false}, +#endif #ifdef USE_OPTIGA {MP_ROM_QSTR(MP_QSTR_USE_OPTIGA), mp_const_true}, #else diff --git a/core/embed/trezorhal/haptic.h b/core/embed/trezorhal/haptic.h index c54db4a285..f4f1c66bc5 100644 --- a/core/embed/trezorhal/haptic.h +++ b/core/embed/trezorhal/haptic.h @@ -30,4 +30,6 @@ void haptic_play(haptic_effect_t effect); // the creation of customized haptic effects. bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms); +void haptic_set_enabled(bool enable); + #endif diff --git a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c index bcc216f218..a4cf9e6c76 100644 --- a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c +++ b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c @@ -81,6 +81,8 @@ #define MAX_AMPLITUDE 127 #define PRODTEST_EFFECT_AMPLITUDE 127 +bool haptic_enabled = true; + static bool set_reg(uint8_t addr, uint8_t value) { uint8_t data[] = {addr, value}; return i2c_transmit(DRV2625_I2C_INSTANCE, DRV2625_I2C_ADDRESS, data, @@ -184,6 +186,10 @@ static void haptic_play_lib(drv2625_lib_effect_t effect) { } void haptic_play(haptic_effect_t effect) { + if (!haptic_enabled) { + return; + } + switch (effect) { case HAPTIC_BUTTON_PRESS: haptic_play_rtp(PRESS_EFFECT_AMPLITUDE, PRESS_EFFECT_DURATION); @@ -213,3 +219,5 @@ bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms) { bool haptic_test(uint16_t duration_ms) { return haptic_play_rtp(PRODTEST_EFFECT_AMPLITUDE, duration_ms); } + +void haptic_set_enabled(bool enable) { haptic_enabled = enable; } diff --git a/core/mocks/generated/trezorio/__init__.pyi b/core/mocks/generated/trezorio/__init__.pyi index 4798c4c4dc..bd360425ab 100644 --- a/core/mocks/generated/trezorio/__init__.pyi +++ b/core/mocks/generated/trezorio/__init__.pyi @@ -193,7 +193,7 @@ class WebUSB: """ Sends message using USB WebUSB (device) or UDP (emulator). """ -from . import fatfs, sdcard +from . import fatfs, haptic, sdcard POLL_READ: int # wait until interface is readable and return read data POLL_WRITE: int # wait until interface is writable diff --git a/core/mocks/generated/trezorio/haptic.pyi b/core/mocks/generated/trezorio/haptic.pyi new file mode 100644 index 0000000000..8820ebfa6f --- /dev/null +++ b/core/mocks/generated/trezorio/haptic.pyi @@ -0,0 +1,8 @@ +from typing import * + + +# extmod/modtrezorio/modtrezorio-haptic.h +def haptic_set_enabled(enable: bool) -> None: + """ + Enable/Disable the haptic feedback. + """ diff --git a/core/mocks/generated/trezorutils.pyi b/core/mocks/generated/trezorutils.pyi index d1a4c157d4..5c497046ba 100644 --- a/core/mocks/generated/trezorutils.pyi +++ b/core/mocks/generated/trezorutils.pyi @@ -126,6 +126,8 @@ USE_SD_CARD: bool """Whether the hardware supports SD card.""" USE_BACKLIGHT: bool """Whether the hardware supports backlight brightness control.""" +USE_HAPTIC: bool +"""Whether the hardware supports haptic feedback.""" USE_OPTIGA: bool """Whether the hardware supports Optiga secure element.""" MODEL: str diff --git a/core/src/apps/base.py b/core/src/apps/base.py index e9d5fc7352..fdf3f6afba 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -135,6 +135,10 @@ def get_features() -> Features: ] ) + if utils.USE_HAPTIC: + f.haptic_feedback = storage_device.get_haptic_feedback() + f.capabilities.append(Capability.Haptic) + if utils.USE_BACKLIGHT: f.capabilities.append(Capability.Brightness) diff --git a/core/src/apps/management/apply_settings.py b/core/src/apps/management/apply_settings.py index 684beb35ff..0ce4ae6a77 100644 --- a/core/src/apps/management/apply_settings.py +++ b/core/src/apps/management/apply_settings.py @@ -2,7 +2,7 @@ import storage.device as storage_device import trezorui2 -from trezor import TR +from trezor import TR, utils from trezor.enums import ButtonRequestType from trezor.ui.layouts import confirm_action from trezor.wire import DataError @@ -50,6 +50,7 @@ async def apply_settings(msg: ApplySettings) -> Success: msg_safety_checks = msg.safety_checks # local_cache_attribute experimental_features = msg.experimental_features # local_cache_attribute hide_passphrase_from_host = msg.hide_passphrase_from_host # local_cache_attribute + haptic_feedback = msg.haptic_feedback if ( homescreen is None @@ -61,6 +62,7 @@ async def apply_settings(msg: ApplySettings) -> Success: and msg_safety_checks is None and experimental_features is None and hide_passphrase_from_host is None + and (haptic_feedback is None or not utils.USE_HAPTIC) ): raise ProcessError("No setting provided") @@ -114,6 +116,13 @@ async def apply_settings(msg: ApplySettings) -> Success: await _require_confirm_hide_passphrase_from_host(hide_passphrase_from_host) storage_device.set_hide_passphrase_from_host(hide_passphrase_from_host) + if haptic_feedback is not None and utils.USE_HAPTIC: + from trezor import io + + await _require_confirm_haptic_feedback(haptic_feedback) + io.haptic.haptic_set_enabled(haptic_feedback) + storage_device.set_haptic_feedback(haptic_feedback) + reload_settings_from_storage() return Success(message="Settings applied") @@ -255,3 +264,15 @@ async def _require_confirm_hide_passphrase_from_host(enable: bool) -> None: description=TR.passphrase__hide, br_code=BRT_PROTECT_CALL, ) + + +if utils.USE_HAPTIC: + + async def _require_confirm_haptic_feedback(enable: bool) -> None: + await confirm_action( + "haptic_feedback__settings", + TR.haptic_feedback__title, + TR.haptic_feedback__enable if enable else TR.haptic_feedback__disable, + subtitle=TR.haptic_feedback__subtitle, + br_code=BRT_PROTECT_CALL, + ) diff --git a/core/src/boot.py b/core/src/boot.py index cffc828b07..5028bdba4d 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -10,7 +10,7 @@ import storage import storage.device -from trezor import config, log, loop, ui, utils, wire, translations +from trezor import config, io, log, loop, ui, utils, wire, translations from trezor.pin import ( allow_all_loader_messages, ignore_nonpin_loader_messages, @@ -51,6 +51,9 @@ async def bootscreen() -> None: enforce_welcome_screen_duration() ui.backlight_fade(ui.BacklightLevels.NONE) ui.display.orientation(storage.device.get_rotation()) + if utils.USE_HAPTIC: + io.haptic.haptic_set_enabled(storage.device.get_haptic_feedback()) + await lockscreen await verify_user_pin() storage.init_unlocked() @@ -61,6 +64,9 @@ async def bootscreen() -> None: storage.init_unlocked() enforce_welcome_screen_duration() rotation = storage.device.get_rotation() + if utils.USE_HAPTIC: + io.haptic.haptic_set_enabled(storage.device.get_haptic_feedback()) + if rotation != ui.display.orientation(): # there is a slight delay before next screen is shown, # so we don't fade unless there is a change of orientation diff --git a/core/src/storage/device.py b/core/src/storage/device.py index 0d01363f6d..eef8e648c3 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -36,12 +36,13 @@ _SAFETY_CHECK_LEVEL = const(0x14) # int _EXPERIMENTAL_FEATURES = const(0x15) # bool (0x01 or empty) _HIDE_PASSPHRASE_FROM_HOST = const(0x16) # bool (0x01 or empty) -# unused from python: -# _BRIGHTNESS = const(0x18) # int - if utils.USE_THP: _DEVICE_SECRET = const(0x17) # bytes _CRED_AUTH_KEY_COUNTER = const(0x18) # bytes +# unused from python: +# _BRIGHTNESS = const(0x19) # int +_DISABLE_HAPTIC_FEEDBACK = const(0x20) # bool (0x01 or empty) + SAFETY_CHECK_LEVEL_STRICT : Literal[0] = const(0) SAFETY_CHECK_LEVEL_PROMPT : Literal[1] = const(1) @@ -377,3 +378,17 @@ def increment_cred_auth_key_counter() -> None: counter = int.from_bytes(get_cred_auth_key_counter(), "big") utils.ensure(counter < 0xFFFFFFFF, "Overflow of cred_auth_key_counter") common.set(_NAMESPACE, _CRED_AUTH_KEY_COUNTER, (counter + 1).to_bytes(4, "big")) + + +def set_haptic_feedback(enable: bool) -> None: + """ + Enable or disable haptic feedback. + """ + common.set_bool(_NAMESPACE, _DISABLE_HAPTIC_FEEDBACK, not enable, True) + + +def get_haptic_feedback() -> bool: + """ + Get haptic feedback enable, default to true if not set. + """ + return not common.get_bool(_NAMESPACE, _DISABLE_HAPTIC_FEEDBACK, True) diff --git a/core/src/trezor/enums/Capability.py b/core/src/trezor/enums/Capability.py index a7472fdf30..bb26adb21b 100644 --- a/core/src/trezor/enums/Capability.py +++ b/core/src/trezor/enums/Capability.py @@ -11,6 +11,7 @@ PassphraseEntry = 17 Translations = 19 Brightness = 20 +Haptic = 21 if not utils.BITCOIN_ONLY: Bitcoin_like = 2 Binance = 3 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index a5c314cc46..757ecf5acf 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -461,6 +461,7 @@ class Capability(IntEnum): Solana = 18 Translations = 19 Brightness = 20 + Haptic = 21 class SdProtectOperationType(IntEnum): DISABLE = 0 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index 349be22442..e8afe64751 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2163,6 +2163,7 @@ class Features(protobuf.MessageType): bootloader_locked: "bool | None" language_version_matches: "bool" unit_packaging: "int | None" + haptic_feedback: "bool | None" def __init__( self, @@ -2215,6 +2216,7 @@ def __init__( bootloader_locked: "bool | None" = None, language_version_matches: "bool | None" = None, unit_packaging: "int | None" = None, + haptic_feedback: "bool | None" = None, ) -> None: pass @@ -2258,6 +2260,7 @@ class ApplySettings(protobuf.MessageType): safety_checks: "SafetyCheckLevel | None" experimental_features: "bool | None" hide_passphrase_from_host: "bool | None" + haptic_feedback: "bool | None" def __init__( self, @@ -2271,6 +2274,7 @@ def __init__( safety_checks: "SafetyCheckLevel | None" = None, experimental_features: "bool | None" = None, hide_passphrase_from_host: "bool | None" = None, + haptic_feedback: "bool | None" = None, ) -> None: pass diff --git a/core/src/trezor/utils.py b/core/src/trezor/utils.py index e580b7be12..134274db6c 100644 --- a/core/src/trezor/utils.py +++ b/core/src/trezor/utils.py @@ -11,6 +11,7 @@ SCM_REVISION, UI_LAYOUT, USE_BACKLIGHT, + USE_HAPTIC, USE_OPTIGA, USE_SD_CARD, USE_THP, diff --git a/python/src/trezorlib/cli/settings.py b/python/src/trezorlib/cli/settings.py index cc06b60d0a..276bcdc6d7 100644 --- a/python/src/trezorlib/cli/settings.py +++ b/python/src/trezorlib/cli/settings.py @@ -213,6 +213,14 @@ def brightness(client: "TrezorClient") -> str: return device.set_brightness(client) +@cli.command() +@click.argument("enable", type=ChoiceType({"on": True, "off": False})) +@with_client +def haptic_feedback(client: "TrezorClient", enable: bool) -> str: + """Enable or disable haptic feedback.""" + return device.apply_settings(client, haptic_feedback=enable) + + @cli.command() @click.argument("path_or_url", required=False) @click.option( diff --git a/python/src/trezorlib/device.py b/python/src/trezorlib/device.py index 7523235a84..af473442be 100644 --- a/python/src/trezorlib/device.py +++ b/python/src/trezorlib/device.py @@ -47,6 +47,7 @@ def apply_settings( safety_checks: Optional[messages.SafetyCheckLevel] = None, experimental_features: Optional[bool] = None, hide_passphrase_from_host: Optional[bool] = None, + haptic_feedback: Optional[bool] = None, ) -> "MessageType": if language is not None: warnings.warn( @@ -63,6 +64,7 @@ def apply_settings( safety_checks=safety_checks, experimental_features=experimental_features, hide_passphrase_from_host=hide_passphrase_from_host, + haptic_feedback=haptic_feedback, ) out = client.call(settings) diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 00064c3967..bd50df1918 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -493,6 +493,7 @@ class Capability(IntEnum): Solana = 18 Translations = 19 Brightness = 20 + Haptic = 21 class SdProtectOperationType(IntEnum): @@ -3263,6 +3264,7 @@ class Features(protobuf.MessageType): 49: protobuf.Field("bootloader_locked", "bool", repeated=False, required=False, default=None), 50: protobuf.Field("language_version_matches", "bool", repeated=False, required=False, default=True), 51: protobuf.Field("unit_packaging", "uint32", repeated=False, required=False, default=None), + 52: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None), } def __init__( @@ -3317,6 +3319,7 @@ def __init__( bootloader_locked: Optional["bool"] = None, language_version_matches: Optional["bool"] = True, unit_packaging: Optional["int"] = None, + haptic_feedback: Optional["bool"] = None, ) -> None: self.capabilities: Sequence["Capability"] = capabilities if capabilities is not None else [] self.major_version = major_version @@ -3367,6 +3370,7 @@ def __init__( self.bootloader_locked = bootloader_locked self.language_version_matches = language_version_matches self.unit_packaging = unit_packaging + self.haptic_feedback = haptic_feedback class LockDevice(protobuf.MessageType): @@ -3405,6 +3409,7 @@ class ApplySettings(protobuf.MessageType): 9: protobuf.Field("safety_checks", "SafetyCheckLevel", repeated=False, required=False, default=None), 10: protobuf.Field("experimental_features", "bool", repeated=False, required=False, default=None), 11: protobuf.Field("hide_passphrase_from_host", "bool", repeated=False, required=False, default=None), + 13: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None), } def __init__( @@ -3421,6 +3426,7 @@ def __init__( safety_checks: Optional["SafetyCheckLevel"] = None, experimental_features: Optional["bool"] = None, hide_passphrase_from_host: Optional["bool"] = None, + haptic_feedback: Optional["bool"] = None, ) -> None: self.language = language self.label = label @@ -3433,6 +3439,7 @@ def __init__( self.safety_checks = safety_checks self.experimental_features = experimental_features self.hide_passphrase_from_host = hide_passphrase_from_host + self.haptic_feedback = haptic_feedback class ChangeLanguage(protobuf.MessageType): diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index 50a553370d..4961d6cb78 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -462,6 +462,8 @@ pub struct Features { pub language_version_matches: ::std::option::Option<bool>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.unit_packaging) pub unit_packaging: ::std::option::Option<u32>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.haptic_feedback) + pub haptic_feedback: ::std::option::Option<bool>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.management.Features.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -1569,8 +1571,27 @@ impl Features { self.unit_packaging = ::std::option::Option::Some(v); } + // optional bool haptic_feedback = 52; + + pub fn haptic_feedback(&self) -> bool { + self.haptic_feedback.unwrap_or(false) + } + + pub fn clear_haptic_feedback(&mut self) { + self.haptic_feedback = ::std::option::Option::None; + } + + pub fn has_haptic_feedback(&self) -> bool { + self.haptic_feedback.is_some() + } + + // Param is passed by value, moved + pub fn set_haptic_feedback(&mut self, v: bool) { + self.haptic_feedback = ::std::option::Option::Some(v); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(49); + let mut fields = ::std::vec::Vec::with_capacity(50); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "vendor", @@ -1817,6 +1838,11 @@ impl Features { |m: &Features| { &m.unit_packaging }, |m: &mut Features| { &mut m.unit_packaging }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "haptic_feedback", + |m: &Features| { &m.haptic_feedback }, + |m: &mut Features| { &mut m.haptic_feedback }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Features>( "Features", fields, @@ -1994,6 +2020,9 @@ impl ::protobuf::Message for Features { 408 => { self.unit_packaging = ::std::option::Option::Some(is.read_uint32()?); }, + 416 => { + self.haptic_feedback = ::std::option::Option::Some(is.read_bool()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -2153,6 +2182,9 @@ impl ::protobuf::Message for Features { if let Some(v) = self.unit_packaging { my_size += ::protobuf::rt::uint32_size(51, v); } + if let Some(v) = self.haptic_feedback { + my_size += 2 + 1; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -2306,6 +2338,9 @@ impl ::protobuf::Message for Features { if let Some(v) = self.unit_packaging { os.write_uint32(51, v)?; } + if let Some(v) = self.haptic_feedback { + os.write_bool(52, v)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -2372,6 +2407,7 @@ impl ::protobuf::Message for Features { self.bootloader_locked = ::std::option::Option::None; self.language_version_matches = ::std::option::Option::None; self.unit_packaging = ::std::option::Option::None; + self.haptic_feedback = ::std::option::Option::None; self.special_fields.clear(); } @@ -2426,6 +2462,7 @@ impl ::protobuf::Message for Features { bootloader_locked: ::std::option::Option::None, language_version_matches: ::std::option::Option::None, unit_packaging: ::std::option::Option::None, + haptic_feedback: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -2494,6 +2531,8 @@ pub mod features { Capability_Translations = 19, // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.Capability.Capability_Brightness) Capability_Brightness = 20, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.Capability.Capability_Haptic) + Capability_Haptic = 21, } impl ::protobuf::Enum for Capability { @@ -2525,6 +2564,7 @@ pub mod features { 18 => ::std::option::Option::Some(Capability::Capability_Solana), 19 => ::std::option::Option::Some(Capability::Capability_Translations), 20 => ::std::option::Option::Some(Capability::Capability_Brightness), + 21 => ::std::option::Option::Some(Capability::Capability_Haptic), _ => ::std::option::Option::None } } @@ -2551,6 +2591,7 @@ pub mod features { "Capability_Solana" => ::std::option::Option::Some(Capability::Capability_Solana), "Capability_Translations" => ::std::option::Option::Some(Capability::Capability_Translations), "Capability_Brightness" => ::std::option::Option::Some(Capability::Capability_Brightness), + "Capability_Haptic" => ::std::option::Option::Some(Capability::Capability_Haptic), _ => ::std::option::Option::None } } @@ -2576,6 +2617,7 @@ pub mod features { Capability::Capability_Solana, Capability::Capability_Translations, Capability::Capability_Brightness, + Capability::Capability_Haptic, ]; } @@ -2607,6 +2649,7 @@ pub mod features { Capability::Capability_Solana => 17, Capability::Capability_Translations => 18, Capability::Capability_Brightness => 19, + Capability::Capability_Haptic => 20, }; Self::enum_descriptor().value_by_index(index) } @@ -2999,6 +3042,8 @@ pub struct ApplySettings { pub experimental_features: ::std::option::Option<bool>, // @@protoc_insertion_point(field:hw.trezor.messages.management.ApplySettings.hide_passphrase_from_host) pub hide_passphrase_from_host: ::std::option::Option<bool>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.ApplySettings.haptic_feedback) + pub haptic_feedback: ::std::option::Option<bool>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.management.ApplySettings.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -3278,8 +3323,27 @@ impl ApplySettings { self.hide_passphrase_from_host = ::std::option::Option::Some(v); } + // optional bool haptic_feedback = 13; + + pub fn haptic_feedback(&self) -> bool { + self.haptic_feedback.unwrap_or(false) + } + + pub fn clear_haptic_feedback(&mut self) { + self.haptic_feedback = ::std::option::Option::None; + } + + pub fn has_haptic_feedback(&self) -> bool { + self.haptic_feedback.is_some() + } + + // Param is passed by value, moved + pub fn set_haptic_feedback(&mut self, v: bool) { + self.haptic_feedback = ::std::option::Option::Some(v); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(11); + let mut fields = ::std::vec::Vec::with_capacity(12); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "language", @@ -3336,6 +3400,11 @@ impl ApplySettings { |m: &ApplySettings| { &m.hide_passphrase_from_host }, |m: &mut ApplySettings| { &mut m.hide_passphrase_from_host }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "haptic_feedback", + |m: &ApplySettings| { &m.haptic_feedback }, + |m: &mut ApplySettings| { &mut m.haptic_feedback }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ApplySettings>( "ApplySettings", fields, @@ -3387,6 +3456,9 @@ impl ::protobuf::Message for ApplySettings { 88 => { self.hide_passphrase_from_host = ::std::option::Option::Some(is.read_bool()?); }, + 104 => { + self.haptic_feedback = ::std::option::Option::Some(is.read_bool()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -3432,6 +3504,9 @@ impl ::protobuf::Message for ApplySettings { if let Some(v) = self.hide_passphrase_from_host { my_size += 1 + 1; } + if let Some(v) = self.haptic_feedback { + my_size += 1 + 1; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -3471,6 +3546,9 @@ impl ::protobuf::Message for ApplySettings { if let Some(v) = self.hide_passphrase_from_host { os.write_bool(11, v)?; } + if let Some(v) = self.haptic_feedback { + os.write_bool(13, v)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -3499,6 +3577,7 @@ impl ::protobuf::Message for ApplySettings { self.safety_checks = ::std::option::Option::None; self.experimental_features = ::std::option::Option::None; self.hide_passphrase_from_host = ::std::option::Option::None; + self.haptic_feedback = ::std::option::Option::None; self.special_fields.clear(); } @@ -3515,6 +3594,7 @@ impl ::protobuf::Message for ApplySettings { safety_checks: ::std::option::Option::None, experimental_features: ::std::option::Option::None, hide_passphrase_from_host: ::std::option::Option::None, + haptic_feedback: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -10759,7 +10839,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x0emessages.proto\"\x80\x01\n\nInitialize\x12\x1d\n\nsession_id\x18\x01\ \x20\x01(\x0cR\tsessionId\x12,\n\x10_skip_passphrase\x18\x02\x20\x01(\ \x08R\x0eSkipPassphraseB\x02\x18\x01\x12%\n\x0ederive_cardano\x18\x03\ - \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\x9b\x14\n\x08Featur\ + \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xe1\x14\n\x08Featur\ es\x12\x16\n\x06vendor\x18\x01\x20\x01(\tR\x06vendor\x12#\n\rmajor_versi\ on\x18\x02\x20\x02(\rR\x0cmajorVersion\x12#\n\rminor_version\x18\x03\x20\ \x02(\rR\x0cminorVersion\x12#\n\rpatch_version\x18\x04\x20\x02(\rR\x0cpa\ @@ -10804,118 +10884,121 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x180\x20\x01(\rR\x10homescreenHeight\x12+\n\x11bootloader_locked\x181\ \x20\x01(\x08R\x10bootloaderLocked\x12>\n\x18language_version_matches\ \x182\x20\x01(\x08:\x04trueR\x16languageVersionMatches\x12%\n\x0eunit_pa\ - ckaging\x183\x20\x01(\rR\runitPackaging\"\xa5\x04\n\nCapability\x12\x1c\ - \n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x17Ca\ - pability_Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Binance\x10\x03\ - \x12\x16\n\x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capability_Crypto\ - \x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\n\x0eCapability_EOS\x10\x06\x12\ - \x17\n\x13Capability_Ethereum\x10\x07\x12\x17\n\x0fCapability_Lisk\x10\ - \x08\x1a\x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\x12\n\x0eC\ - apability_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\x12\x16\n\x12\ - Capability_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\x10\r\x12\x12\n\ - \x0eCapability_U2F\x10\x0e\x12\x1b\n\x11Capability_Shamir\x10\x0f\x1a\ - \x04\x80\xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\x10\x1a\x04\ - \x80\xa6\x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\x11\x1a\x04\ - \x80\xa6\x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x12!\n\x17Capabi\ - lity_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\x15Capabilit\ - y_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\ - \x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\x20\x01(\ - \rR\x08expiryMs\"\x0c\n\nEndSession\"\x9b\x04\n\rApplySettings\x12\x1e\n\ - \x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05l\ - abel\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passphrase\x18\x03\x20\ - \x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\x20\x01(\x0cR\nh\ - omescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\rR\x10Passphrase\ - SourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\x06\x20\x01(\rR\x0f\ - autoLockDelayMs\x12)\n\x10display_rotation\x18\x07\x20\x01(\rR\x0fdispla\ - yRotation\x12=\n\x1bpassphrase_always_on_device\x18\x08\x20\x01(\x08R\ - \x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\x18\t\x20\x01(\x0e2/.\ - hw.trezor.messages.management.SafetyCheckLevelR\x0csafetyChecks\x123\n\ - \x15experimental_features\x18\n\x20\x01(\x08R\x14experimentalFeatures\ - \x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01(\x08R\x16hidePassph\ - raseFromHost\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\x18\x01\x20\ - \x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\x01(\x08R\x0bsho\ - wDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_length\x18\x01\ - \x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\nd\ - ataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_chunk\x18\x01\x20\ - \x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\ - \x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\x01\x20\x01(\ - \x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\x18\x01\x20\ - \x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperation\x18\x01\ - \x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProtectOperati\ - onTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07DISABLE\ - \x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Pi\ - ng\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\x11butt\ - on_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\x06Cance\ - l\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04size\"#\n\ - \x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\ - \x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tchalleng\ - e\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\ - \"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\t\ - challenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\x01\x20\ - \x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\ts\ - ignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\tmnemonic\ - s\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\ - \x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\x14passphr\ - aseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08languageB\x02\ - \x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\n\rskip_ch\ - ecksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f_counter\ - \x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\x20\x01(\ - \x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\x08noBacku\ - p\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\x20\x01(\ - \x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\x03256R\ - \x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\x08R\x14pa\ - ssphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\x08R\rpinPr\ - otection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08languageB\x02\x18\ - \x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\n\x0bu2f_co\ - unter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_backup\x18\x08\ - \x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\x08R\x08n\ - oBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.messages.ma\ - nagement.BackupType:\x05Bip39R\nbackupType\"\xe5\x01\n\x0cBackupDevice\ - \x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\x0egroupThreshold\x12O\n\ - \x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.messages.management.BackupDe\ - vice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10member_thres\ - hold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_count\x18\ - \x02\x20\x02(\rR\x0bmemberCount\"\x10\n\x0eEntropyRequest\"&\n\nEntropyA\ - ck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0e\ - RecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCount\x123\ - \n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphraseProtectio\ - n\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\x12\x1e\ - \n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\ - \x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\x18\ - \x06\x20\x01(\x08R\x0fenforceWordlist\x12T\n\x04type\x18\x08\x20\x01(\ - \x0e2@.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceTypeR\ - \x04type\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12\x17\ - \n\x07dry_run\x18\n\x20\x01(\x08R\x06dryRun\"Z\n\x12RecoveryDeviceType\ - \x12%\n!RecoveryDeviceType_ScrambledWords\x10\0\x12\x1d\n\x19RecoveryDev\ - iceType_Matrix\x10\x01\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\ - \x20\x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordRequestTyp\ - eR\x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\ - \x10\0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordReq\ - uestType_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\ - \x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\ - \x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2\ - FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\ - \n\x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelA\ - uthorization\"\x9a\x02\n\x12RebootToBootloader\x12o\n\x0cboot_command\ - \x18\x01\x20\x01(\x0e2=.hw.trezor.messages.management.RebootToBootloader\ - .BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\n\x0ffirmware_header\ - \x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14language_data_length\ - \x18\x03\x20\x01(\r:\x010R\x12languageDataLength\"5\n\x0bBootCommand\x12\ - \x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01\"\x10\n\ - \x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\x14\n\x05nonce\x18\ - \x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\nUnlockPath\x12\ - \x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\ - \x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\ - \x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10U\ - nlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\x18\x01\x20\x01(\ - \rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0c\ - Slip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18S\ - lip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\ - \x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckL\ - evel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\ - \x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\ - \x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.sat\ - oshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\ + ckaging\x183\x20\x01(\rR\runitPackaging\x12'\n\x0fhaptic_feedback\x184\ + \x20\x01(\x08R\x0ehapticFeedback\"\xc2\x04\n\nCapability\x12\x1c\n\x12Ca\ + pability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x17Capability\ + _Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Binance\x10\x03\x12\x16\n\ + \x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capability_Crypto\x10\x05\ + \x1a\x04\x80\xa6\x1d\x01\x12\x12\n\x0eCapability_EOS\x10\x06\x12\x17\n\ + \x13Capability_Ethereum\x10\x07\x12\x17\n\x0fCapability_Lisk\x10\x08\x1a\ + \x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\x12\n\x0eCapabilit\ + y_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\x12\x16\n\x12Capabili\ + ty_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\x10\r\x12\x12\n\x0eCapa\ + bility_U2F\x10\x0e\x12\x1b\n\x11Capability_Shamir\x10\x0f\x1a\x04\x80\ + \xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\x10\x1a\x04\x80\xa6\ + \x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\x11\x1a\x04\x80\xa6\ + \x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x12!\n\x17Capability_Tra\ + nslations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\x15Capability_Bright\ + ness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x11Capability_Haptic\x10\ + \x15\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\x0c\n\nLockDevice\ + \"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\x20\x01(\rR\x08expiryMs\"\ + \x0c\n\nEndSession\"\xc4\x04\n\rApplySettings\x12\x1e\n\x08language\x18\ + \x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x02\x20\ + \x01(\tR\x05label\x12%\n\x0euse_passphrase\x18\x03\x20\x01(\x08R\rusePas\ + sphrase\x12\x1e\n\nhomescreen\x18\x04\x20\x01(\x0cR\nhomescreen\x120\n\ + \x12_passphrase_source\x18\x05\x20\x01(\rR\x10PassphraseSourceB\x02\x18\ + \x01\x12+\n\x12auto_lock_delay_ms\x18\x06\x20\x01(\rR\x0fautoLockDelayMs\ + \x12)\n\x10display_rotation\x18\x07\x20\x01(\rR\x0fdisplayRotation\x12=\ + \n\x1bpassphrase_always_on_device\x18\x08\x20\x01(\x08R\x18passphraseAlw\ + aysOnDevice\x12T\n\rsafety_checks\x18\t\x20\x01(\x0e2/.hw.trezor.message\ + s.management.SafetyCheckLevelR\x0csafetyChecks\x123\n\x15experimental_fe\ + atures\x18\n\x20\x01(\x08R\x14experimentalFeatures\x129\n\x19hide_passph\ + rase_from_host\x18\x0b\x20\x01(\x08R\x16hidePassphraseFromHost\x12'\n\ + \x0fhaptic_feedback\x18\r\x20\x01(\x08R\x0ehapticFeedback\"T\n\x0eChange\ + Language\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\x12!\n\ + \x0cshow_display\x18\x02\x20\x01(\x08R\x0bshowDisplay\"Z\n\x16Translatio\ + nDataRequest\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\ + \x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\ndataOffset\"3\n\x12Transl\ + ationDataAck\x12\x1d\n\ndata_chunk\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\ + \n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\x02(\rR\x05flags\"#\n\tCha\ + ngePin\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"(\n\x0eChang\ + eWipeCode\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\ + \n\tSdProtect\x12]\n\toperation\x18\x01\x20\x02(\x0e2?.hw.trezor.message\ + s.management.SdProtect.SdProtectOperationTypeR\toperation\">\n\x16SdProt\ + ectOperationType\x12\x0b\n\x07DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\ + \x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Ping\x12\x1a\n\x07message\x18\x01\ + \x20\x01(\t:\0R\x07message\x12+\n\x11button_protection\x18\x02\x20\x01(\ + \x08R\x10buttonProtection\"\x08\n\x06Cancel\"\x20\n\nGetEntropy\x12\x12\ + \n\x04size\x18\x01\x20\x02(\rR\x04size\"#\n\x07Entropy\x12\x18\n\x07entr\ + opy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\x0fGetFirmwareHash\x12\x1c\n\t\ + challenge\x18\x01\x20\x01(\x0cR\tchallenge\"\"\n\x0cFirmwareHash\x12\x12\ + \n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\"2\n\x12AuthenticateDevice\x12\ + \x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\tchallenge\"U\n\x11AuthenticityP\ + roof\x12\"\n\x0ccertificates\x18\x01\x20\x03(\x0cR\x0ccertificates\x12\ + \x1c\n\tsignature\x18\x02\x20\x02(\x0cR\tsignature\"\x0c\n\nWipeDevice\"\ + \xad\x02\n\nLoadDevice\x12\x1c\n\tmnemonics\x18\x01\x20\x03(\tR\tmnemoni\ + cs\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\x03pin\x123\n\x15passphrase_prot\ + ection\x18\x04\x20\x01(\x08R\x14passphraseProtection\x12\x1e\n\x08langua\ + ge\x18\x05\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\ + \x06\x20\x01(\tR\x05label\x12#\n\rskip_checksum\x18\x07\x20\x01(\x08R\ + \x0cskipChecksum\x12\x1f\n\x0bu2f_counter\x18\x08\x20\x01(\rR\nu2fCounte\ + r\x12!\n\x0cneeds_backup\x18\t\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tn\ + o_backup\x18\n\x20\x01(\x08R\x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\ + \n\x0edisplay_random\x18\x01\x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08s\ + trength\x18\x02\x20\x01(\r:\x03256R\x08strength\x123\n\x15passphrase_pro\ + tection\x18\x03\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_prot\ + ection\x18\x04\x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\ + \x05\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\ + \x01(\tR\x05label\x12\x1f\n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCount\ + er\x12\x1f\n\x0bskip_backup\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\ + \tno_backup\x18\t\x20\x01(\x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\ + \x20\x01(\x0e2).hw.trezor.messages.management.BackupType:\x05Bip39R\nbac\ + kupType\"\xe5\x01\n\x0cBackupDevice\x12'\n\x0fgroup_threshold\x18\x01\ + \x20\x01(\rR\x0egroupThreshold\x12O\n\x06groups\x18\x02\x20\x03(\x0b27.h\ + w.trezor.messages.management.BackupDevice.Slip39GroupR\x06groups\x1a[\n\ + \x0bSlip39Group\x12)\n\x10member_threshold\x18\x01\x20\x02(\rR\x0fmember\ + Threshold\x12!\n\x0cmember_count\x18\x02\x20\x02(\rR\x0bmemberCount\"\ + \x10\n\x0eEntropyRequest\"&\n\nEntropyAck\x12\x18\n\x07entropy\x18\x01\ + \x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0eRecoveryDevice\x12\x1d\n\nword_\ + count\x18\x01\x20\x01(\rR\twordCount\x123\n\x15passphrase_protection\x18\ + \x02\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\ + \x03\x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\x04\x20\x01(\ + \tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x05\x20\x01(\tR\x05l\ + abel\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\x08R\x0fenforceWordlist\ + \x12T\n\x04type\x18\x08\x20\x01(\x0e2@.hw.trezor.messages.management.Rec\ + overyDevice.RecoveryDeviceTypeR\x04type\x12\x1f\n\x0bu2f_counter\x18\t\ + \x20\x01(\rR\nu2fCounter\x12\x17\n\x07dry_run\x18\n\x20\x01(\x08R\x06dry\ + Run\"Z\n\x12RecoveryDeviceType\x12%\n!RecoveryDeviceType_ScrambledWords\ + \x10\0\x12\x1d\n\x19RecoveryDeviceType_Matrix\x10\x01\"\xc5\x01\n\x0bWor\ + dRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw.trezor.messages.manage\ + ment.WordRequest.WordRequestTypeR\x04type\"f\n\x0fWordRequestType\x12\ + \x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\x17WordRequestType_Matri\ + x9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02\"\x1d\n\x07WordA\ + ck\x12\x12\n\x04word\x18\x01\x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\ + \x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNext\ + U2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\ + \x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\x16\n\x14Preauthorized\ + Request\"\x15\n\x13CancelAuthorization\"\x9a\x02\n\x12RebootToBootloader\ + \x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.hw.trezor.messages.manage\ + ment.RebootToBootloader.BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\ + \n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14\ + language_data_length\x18\x03\x20\x01(\r:\x010R\x12languageDataLength\"5\ + \n\x0bBootCommand\x12\x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UP\ + GRADE\x10\x01\"\x10\n\x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\ + \x14\n\x05nonce\x18\x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\ + \nUnlockPath\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\ + \x10\n\x03mac\x18\x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\ + \x12\x10\n\x03mac\x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTuto\ + rial\"\x12\n\x10UnlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\ + \x18\x01\x20\x01(\rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\ + \x10\0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\ + \x10\x02\x12\x1c\n\x18Slip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip\ + 39_Basic_Extendable\x10\x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\ + \x05*G\n\x10SafetyCheckLevel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPrompt\ + Always\x10\x01\x12\x15\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenF\ + ormat\x12\x08\n\x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04T\ + oiG\x10\x03BB\n#com.satoshilabs.trezor.lib.protobufB\x17TrezorMessageMan\ + agement\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file From 212391fc373fc95020547ff033071da7c00e3fec Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 19 Apr 2024 09:38:06 +0200 Subject: [PATCH 189/626] feat(core): add pareen & easer crates [no changelog] --- core/embed/rust/Cargo.lock | 30 +- core/embed/rust/Cargo.toml | 15 +- rust/pareen/.gitignore | 13 + rust/pareen/CHANGELOG.md | 68 ++ rust/pareen/Cargo.toml | 34 + rust/pareen/LICENSE | 21 + rust/pareen/README.md | 81 +++ rust/pareen/examples/plots.rs | 96 +++ rust/pareen/images/plots.png | Bin 0 -> 32406 bytes rust/pareen/images/seq_ease_in_out.png | Bin 0 -> 12869 bytes rust/pareen/src/anim.rs | 841 +++++++++++++++++++++++++ rust/pareen/src/anim_box.rs | 51 ++ rust/pareen/src/anim_with_dur.rs | 191 ++++++ rust/pareen/src/arithmetic.rs | 169 +++++ rust/pareen/src/easer_combinators.rs | 233 +++++++ rust/pareen/src/lib.rs | 71 +++ rust/pareen/src/primitives.rs | 223 +++++++ rust/pareen/src/stats.rs | 133 ++++ 18 files changed, 2267 insertions(+), 3 deletions(-) create mode 100644 rust/pareen/.gitignore create mode 100644 rust/pareen/CHANGELOG.md create mode 100644 rust/pareen/Cargo.toml create mode 100644 rust/pareen/LICENSE create mode 100644 rust/pareen/README.md create mode 100644 rust/pareen/examples/plots.rs create mode 100644 rust/pareen/images/plots.png create mode 100644 rust/pareen/images/seq_ease_in_out.png create mode 100644 rust/pareen/src/anim.rs create mode 100644 rust/pareen/src/anim_box.rs create mode 100644 rust/pareen/src/anim_with_dur.rs create mode 100644 rust/pareen/src/arithmetic.rs create mode 100644 rust/pareen/src/easer_combinators.rs create mode 100644 rust/pareen/src/lib.rs create mode 100644 rust/pareen/src/primitives.rs create mode 100644 rust/pareen/src/stats.rs diff --git a/core/embed/rust/Cargo.lock b/core/embed/rust/Cargo.lock index de76974f67..114e08484e 100644 --- a/core/embed/rust/Cargo.lock +++ b/core/embed/rust/Cargo.lock @@ -94,6 +94,15 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" +[[package]] +name = "easer" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba524f8b83c9c5bde02c2bb1627de9d1f81980489a6d54168cdfd08c258f917" +dependencies = [ + "num-traits", +] + [[package]] name = "glob" version = "0.3.0" @@ -154,6 +163,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + [[package]] name = "memchr" version = "2.4.1" @@ -189,11 +204,20 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", + "libm", +] + +[[package]] +name = "pareen" +version = "0.3.3" +dependencies = [ + "easer", + "num-traits", ] [[package]] @@ -318,10 +342,12 @@ dependencies = [ "cc", "cstr_core", "cty", + "easer", "glob", "heapless", "num-derive", "num-traits", + "pareen", "qrcodegen", "serde_json", "spin", diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 26780a1fc8..30573b1af8 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -105,8 +105,9 @@ features = ["ufmt"] default_features = false [dependencies.num-traits] -version = "0.2.15" +version = "0.2.18" default_features = false +features = ["libm"] [dependencies.num-derive] version = "0.3.3" @@ -125,6 +126,18 @@ version = "0.2.2" [dependencies.unsize] version = "1.1.0" +[dependencies.pareen] +version = "0.3.3" +path = "../../../rust/pareen" +default-features = false +features = ["libm", "easer"] + +[dependencies.easer] +version = "0.3.0" +default-features = false +features = ["libm"] + + # Build dependencies [build-dependencies.bindgen] diff --git a/rust/pareen/.gitignore b/rust/pareen/.gitignore new file mode 100644 index 0000000000..bf05bc31f4 --- /dev/null +++ b/rust/pareen/.gitignore @@ -0,0 +1,13 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + +# Vim +.*.swp diff --git a/rust/pareen/CHANGELOG.md b/rust/pareen/CHANGELOG.md new file mode 100644 index 0000000000..580dfd05fb --- /dev/null +++ b/rust/pareen/CHANGELOG.md @@ -0,0 +1,68 @@ +# Changelog + +## Version 0.3.3 (2023-08-01) + +- Add support for `no_std` + +## Version 0.3.2 (2023-06-03) + +- Bump version + +## Version 0.3.1 (2022-08-31) + +- Fix docs + +## Version 0.3.0 (2022-08-31) + +- Make operator overloading of `Mul`, `Add` and `Sub` more flexible. + This may break compilation in some cases, since types are more generic now. +- Add `AnimWithDur` for easier composition of animations that have a fixed duration +- Internal refactoring: split into multiple modules +- Implement `Anim::{fst,snd,copied}` +- Implement `AnimWithDur::{sum,mean}` and simple linear regression +- Implement `Anim::{into_fn,into_box_fn}` + +## Version 0.2.6 (2020-08-17) + +- Make exponential slowdown of compile times less likely +- Add `cycle` +- Add `quadratic` + +## Version 0.2.5 (2020-07-18) + +- Add `Anim::repeat`, `Anim::hold` and `Anim::seq_continue` +- Allow boxed animations +- Expose `easer` library + +## Version 0.2.4 (2020-07-16) + +Yanked. + +## Version 0.2.3 (2020-04-28) + +- Fix compilation issue on rustc 1.43.0 (<https://github.com/leod/pareen/pull/7>) + +## Version 0.2.1 (2020-01-18) + +- Implement `Anim::as_ref` + +## Version 0.2.0 (2020-01-13) + +- `squeeze` no longer switches to a default value outside of the given range. + Use `squeeze_and_surround` as a replacement. + +## Version 0.1.3 (2019-12-03) + +- Render README.md on crates.io + +## Version 0.1.2 (2019-12-02) + +- No change + +## Version 0.1.1 (2019-12-02) + +- Improve documentation + +## Version 0.1.0 (2019-12-02) + +- Initial version diff --git a/rust/pareen/Cargo.toml b/rust/pareen/Cargo.toml new file mode 100644 index 0000000000..59b265de36 --- /dev/null +++ b/rust/pareen/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "pareen" +version = "0.3.3" +authors = ["leod <subtle.frustration@proton.me>"] +edition = "2018" +license = "MIT" +description = "A small library for parameterized inbetweening" +homepage = "https://github.com/leod/pareen" +documentation = "https://docs.rs/pareen" +repository = "https://github.com/leod/pareen" +keywords = ["animation", "combinators", "tween", "easing"] +readme = "README.md" +exclude = [".github"] + +[features] +default = ["std"] +std = ["alloc", "num-traits/std"] +alloc = [] +libm = ["num-traits/libm"] + +[dependencies] +num-traits = { version = "0.2", default-features = false } +easer = { version = "0.3.0", default-features = false, optional = true } + +[dev-dependencies] +assert_approx_eq = "1.0" +gnuplot = "0.0.32" + +[package.metadata.docs.rs] +features = ["std", "alloc", "libm", "easer"] + +[[example]] +name = "plots" +required-features = ["std"] diff --git a/rust/pareen/LICENSE b/rust/pareen/LICENSE new file mode 100644 index 0000000000..e9dd81ba11 --- /dev/null +++ b/rust/pareen/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 leod + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/rust/pareen/README.md b/rust/pareen/README.md new file mode 100644 index 0000000000..13b88add2a --- /dev/null +++ b/rust/pareen/README.md @@ -0,0 +1,81 @@ +# Pareen +[![Docs Status](https://docs.rs/pareen/badge.svg)](https://docs.rs/pareen) +[![license](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/leod/pareen/blob/master/LICENSE) +[![Crates.io](https://img.shields.io/crates/v/pareen.svg)](https://crates.io/crates/pareen) + +Pareen is a small Rust library for *par*ameterized inbetw*een*ing. +The intended application is in game programming, where you sometimes have +two discrete game states between which you want to transition smoothly for +visualization purposes. + +Pareen gives you tools for composing animations that are parameterized by +time (i.e. mappings from time to some animated value) without constantly +having to pass around time variables; it hides the plumbing, so that you +need to provide time only once: when evaluating the animation. + +Animations are composed similarly to Rust's iterators, so no memory +allocations are necessary. The downside to this is that it is diffcult to store +pareen's animations. The recommended approach is to construct and evaluate +animations on the fly. + +## Current Status +I consider `pareen` to be an experimental approach, and I'm not sure if I'm +still happy with it. Anyway, the integration of easing functions could use +some love. Contributions are very much welcome! + +Unfortunately, it looks like heavily nested animations can cause an exponential +slowdown in compilation time. For now, boxing intermediate animations serves as +a workaround, but this comes with a decrease of both readability and efficiency. + +## Examples +```rust +// An animation returning a constant value +let anim1 = pareen::constant(1.0f64); + +// Animations can be evaluated at any time +let value = anim1.eval(0.5); + +// Animations can be played in sequence +let anim2 = anim1.seq(0.7, pareen::prop(0.25) + 0.5); + +// Animations can be composed and transformed in various ways +let anim3 = anim2 + .lerp(pareen::circle().cos()) + .scale_min_max(5.0, 10.0) + .backwards(1.0) + .squeeze(3.0, 0.5..=1.0); + +let anim4 = pareen::cubic(&[1.0, 2.0, 3.0, 4.0]) - anim3; + +let value = anim4.eval(1.0); +``` + +### Easer +Optionally, you can enable support for integrating easing functions from +[`easer`](https://docs.rs/easer/0.2.1/easer/index.html). + +```rust +let first_anim = pareen::constant(2.0); +let second_anim = pareen::prop(1.0f32); + +// Transition from first_anim to second_anim at time 0.5, applying cubic easing +// for 0.3 time units. +let anim = first_anim.seq_ease_in_out( + 0.5, + easer::functions::Cubic, + 0.3, + second_anim, +); +``` + +### Plots +There is an example that shows some animations as plots via +[RustGnuplot](https://github.com/SiegeLord/RustGnuplot) in +[examples/plots.rs](examples/plots.rs). Given that `gnuplot` has been +installed, it can be executed like this: +```bash +cargo run --example plots --feature easer +``` + +If everything works, you should see something like this: +![plots of the example/plots.rs animations](images/plots.png) diff --git a/rust/pareen/examples/plots.rs b/rust/pareen/examples/plots.rs new file mode 100644 index 0000000000..3f9743934b --- /dev/null +++ b/rust/pareen/examples/plots.rs @@ -0,0 +1,96 @@ +use gnuplot::{AutoOption, AxesCommon, Color, Figure, LineWidth}; + +fn main() { + let mut plots = Plots { plots: Vec::new() }; + + plots.add("id", pareen::id()); + plots.add("lerp between 2 and 4", pareen::lerp(2.0, 4.0)); + plots.add( + "dynamic lerp between sin^2 and cos", + pareen::circle().sin().powi(2).lerp(pareen::circle().cos()), + ); + plots.add( + "dynamic lerp, squeezed into [0.5 .. 1]", + pareen::circle() + .sin() + .powi(2) + .lerp(pareen::circle().cos()) + .squeeze_and_surround(0.5..=1.0, 0.0), + ); + plots.add( + "switch from 1 to 2 at time=0.5", + pareen::constant(1.0).switch(0.5, 2.0), + ); + + #[cfg(feature = "easer")] + plots.add( + "ease transition from 2 to a proportional anim", + pareen::constant(2.0).seq_ease_in_out( + 0.5, + easer::functions::Cubic, + 0.3, + pareen::prop(1.0f32), + ), + ); + + plots.show_gnuplot(); +} + +fn sample( + n: usize, + max_t: f32, + anim: pareen::Anim<impl pareen::Fun<T = f32, V = f32>>, +) -> (Vec<f32>, Vec<f32>) { + let mut ts = Vec::new(); + let mut vs = Vec::new(); + + for i in 0..=n { + let time = i as f32 / n as f32 * max_t; + let value = anim.eval(time); + + ts.push(time); + vs.push(value); + } + + (ts, vs) +} + +struct Plot { + name: &'static str, + ts: Vec<f32>, + vs: Vec<f32>, +} + +struct Plots { + plots: Vec<Plot>, +} + +impl Plots { + fn add(&mut self, name: &'static str, anim: pareen::Anim<impl pareen::Fun<T = f32, V = f32>>) { + let (ts, vs) = sample(1000, 1.0, anim); + + self.plots.push(Plot { name, ts, vs }); + } + + fn show_gnuplot(&self) { + let mut figure = Figure::new(); + + // Show plots in a square rows/columns layout + let n_cols = (self.plots.len() as f32).sqrt() as u32; + let n_rows = (self.plots.len() as f32).sqrt().ceil() as u32; + + for (i, plot) in self.plots.iter().enumerate() { + figure + .axes2d() + .lines(&plot.ts, &plot.vs, &[Color("blue"), LineWidth(3.0)]) + .set_title(&plot.name, &[]) + .set_x_label("time", &[]) + .set_y_label("value", &[]) + .set_x_ticks(Some((AutoOption::Fix(0.5), 0)), &[], &[]) + .set_y_ticks(Some((AutoOption::Fix(0.5), 0)), &[], &[]) + .set_pos_grid(n_rows, n_cols, i as u32); + } + + figure.show().unwrap(); + } +} diff --git a/rust/pareen/images/plots.png b/rust/pareen/images/plots.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0754b2c59fa909b48af619aa8255f991213cf9 GIT binary patch literal 32406 zcmcG$1yq%5+bz84ZV4%AgOpB@6a*xsLsGgVq#Hy86hY|_R7#|~TM>}%5RmTfI2Zf< z-v9glbG~uL8UH`d8e{M6W-XufJokOYyyl!YVJc4^;bBu^BM=BYc{yn{1OnL~fk2wU zM24SKmnf9Lf3O_obes_g{MPG#kUp~FQy~y^2zhA<b@$};DGU9l7UYO+5<)Z15H2)S zq9&xdJcgE#(cHFxH*e}W@=(h11F;2HrDfX6-{yu0uf}RxmEEhnoq<-$p!dq?ISKL4 zJ>N<Sx?umPd6wC8Kkv$;#SUj>$tO=Xy(xkTA7au6N15I2r9nty(hrguBgw)KEd9|a z=z|F}kjRXJ2_;{nYx@(yyOc)%*WNtP*3%Pr-}ZMfc5!h@d*EXkhCyE~Ei3Ek?*6*4 zr6rW$9hJb7V47dlWZ`W_T#pqLR`8{D;dTyCF);LWb^B@1B<-e(On*r0T_)w^=34K} zwP|W<T3cI-c^%d|&IYz>rX(cfq^IAv9pwu9{{H30GCo2+&T1gDj|N$iJ2N*o*FZ$* zgk!-`P@m&yFz4yw;$j@9VXCOdZa6t-^~;TW0UDe-#b4aErir!R?>Dj=sS`MmyS#W& zR8dippKt$;R%~u=Zuu<^y)b-X*VtIX<4~KCd{rDJC8Y}csnz*;GYgAH-LHa!aj69h zy^c1WmwtcG%d;IN2yIE=vx$BC_HA9AkD?-O+4jZRQOs>+el9L90f9eN&bJY@K4&l6 z-jLqEf1iwu46YvW`ZWcg^^Kv?;o;%V&hW(Y!b11m`LIUXY*#dN^u(kjDhi6O1fHzC zJX}O{OpL3GOS#>|BHY3A=Vdk{9QBwQ8X7GvEoX-t3SynVeyy$yWO>^?tMlYD`$=eE zV89Y1<ag;!7S8;|LQ>Arkt?QS9oECl%*=Fa`<CCis*aA3c~`voh4?(WL^eJv>$kI` zEfUGa?j!-v{pJ4t{=q?Y8ylP3w{KTVNy%j}FfhozrIyF+=;_(&O>gOlx&19S*Zxoa zRJv3sEGChpqM{;vpu?o7QlEoQ#H1CIKgmEt<6ub35Dg7&$JKqgmtIDu?en8|ni?7@ z!mf`WJzDzv<6SVJg~ifWg}B(bI14i~m$l)Ixwi1&DEOF~&F$bXSy?vL)=q-SwY8!= zJUmiTQXFv#?0FCtd7+Js56Q{nl9Q8*i;LxBSlA7!KM?LNc2glnt6f>?nM6eN^z=lS znZFjf(Q$GX_?#VbKC7M4OO20r|J#nopOli4GL@yAW;aoewQ|xLMgm)slaurH>sQks zZ_)gtqlxSBJ3Bk=?Ck#3dX&J=;4#bR8<>*{5uZKX(X<s5)?f(+n+<ASLZaE>6(F|$ zH2Af?CaPVCVNnuxStg`!ZEc-@Cw@7@E^z;TmG=oZpU=gqD-{)0Jw5@Au$hBHPtwLj z#a0-}?aPy;TduCI_@PqlqK-5E@7@vQ82V$;!yOUadLZh&*p;VKf{sspyt~k8=zH>f zFk3Y^s@-#WwCHc0*HLyzSXdYf3rld6fW!2id-ot&)H*|PZ#vC3qXlp_6c;-!_onYH z^*HProbGmVhU}lij%-X;#poWdkMRVc3DVISZH$)%N0n>(FU(h>5r2oRpPMt89@9<{ zamy5-4YvG{ntHk1#|Z0bU7nX0;g;S1^Jlib0!xg%5(OotxrK$m`me682mw2L`zLmH zVYfD?YM$bZ+44J7bHEnqRoFj&{=BNP5<c7xi_+Exe^#00TTid8t^M@Ls6FE5n>TL| z4>65P#`HPJ5xl&-A3lD}X@^us?vc;W%}o^bD2|OCzPvc2dXN|wS7Flj212!DZ2i}- z$J0kajj1IiB_Vz>wZ0dpkS;qrJ9xLEy|n$`BPb~;b#-+;JUl!-JrPlHagW@jG5gxP zy1Kf%H_lJ?@NSuKQMg(>efsq5U=0It_wL>H_IA7p3v=_`Odf7-xI6eLFCQNX2?^<q z)s*)w0&8<~PK#X$>+9<aopDr@l(a%lOdK5czmtX3-I2X|2L?pkHuZZ_#l(*eG_|yp zQ-sTki+7ttaFCTb^y)mzs;f_-2n`MnK1miVa@%@FUw4y=YOnqws&C9>y^jbhYxuqX zg@uKWA3tVhX6oqZq*0Z#HOCZ289_*mS2)~4e29y?CF&lv=}4H-{Y5@zbF#{LcU~Sp z^r?=H2b6*ReU|`sND_#|t3Q5McGI<E6B9MYL0SdRWTd4Xt0s9Ye#0t_x3qkQ%2i%o z&Z?Pr=kDEErz&}Qd5ASs1PTg@^+2p=MtHb_t*x!9>idw8woej4mzQT-$;s4E3lNrh z7~<j$&pTsPnZ-p!&Q^!Mb$b-)bGX4S!a_G(p0dVuJ}=T98XEGpgKdSY!1La_cMqRN zn5kCE!C{N>(OY$Obwp#Tm=`7g_RbD`wZ|pw#!^olyWTL|`Kv6S4pz2Cxk8A)#ib<? zA)!brf&A{2#Mde`iY$9Q;#Z>H$572+XD;BrsD_z-L0!WjptXf;b#S;vNZ4E0^z%KV z!(?Upw{KK8Zn#{Ydq6!z4|)OL6BvjLIVdJpm%wA;dwxuWn4Fq|UF$OA?(XhJ`UK^? zy1F_Dg8&_YhZo6VPz_~XMP42YLAgdRDCqt(ik^dmBQY^?b8{053kx27Y;5fIljPTt zk?_P&kKr{{=Otj6gh$1He!5lwS4!nF4*d4*+ctjIlN4d=!R&gUGyGc*l7$VD-$97a z-iE9F`t_?;?8NDv1ZKJjdN5(M2kd{t)n!dk5Xw{lT|$6fBeZftyg~#cG;!WWgWiAs z*AeIcXKN1_B%MhTa8PS;gQh(|gCm*Eocrw?4Gj$%K65zX-1}<ey!`wJ4%4+tN&I~@ zn3CBchg*LNa&qL|ZeYrb<ghkgoF44$?4-YHl*a5xhO9urz=t+I03YptvWm?m>GY1U z(vwv79XdJ+1@7^MTQv%C4usBkgBnc*h49UXgv2;Riv^0bU&d<Owqn`!t^?!Yqw81b z=IePCV`F;6j2EjU^;<RT+~+ULUtF|FD8x3#8TOMz|AflRe*3n?>Hdmxs;E^S-eLi& z(dC<D!CfsDoNc()?%p2sY$SieK*oD-q~KEY(t3JHn-9%s7{v|6ncJe<)GkWDZ2sUw z_h-{4WIHKr4d^yMJ3C8*-sH~HWr)>yPD-=`cSmMKN=o|l=|E{IZ#Bw$3wnCk3eo5h z?gB$86~g2PQ_?&dLsjGBeXLsO3Jfeeoj-pbAN}!r6hVQ6fM|fQc=hTPK#<Lm0>dfu z_y%JClL<=VPD5BeeU7+pb7w(nNzCvzH5C;VP0dV^JHd(VvyGe$jmbhvyrx`6XD_u& zG1b)@`**8F?XGlmb<LkYR~>*N2QAVU0y`9+W;qf&een~s-`9M^kM{QJsw&k12&^Yh zp5PI%tSm4892kjpadLHS6Q~lJt_`r8nECmhB{7l)Cy8I;X!C&V*Vt_xRn@-U-l)XP zd-om6IfT51`my#Z5|+EKZ?gMj(g<0>KRg^~ie9c@*9j9Z#PkOpvy3(m3CU;~PWw9y z8JQ-$`Qw;LXs5Zk_W}qycD}{Z#y3dHDPKM|K$4XcCPH@GYCb)1+{-L9$HwNeAwxwA zNJ#j?Ace^%BfLkB!zI~#<3{6j-S&X;_GMk6d3iY@1?Kehr!P!7KM5t3-tV5bAx993 zOVZuL)+~6XRgh@8vPHnE>7SD$-7Ja87lgaO3GmkXOQxi|VDKyczOLW+FSlOJwgfaq z$!TMzn@6=>UtpY<pUU?Hjo$%%R_m*^b@Ln2LihX2tB>z+1*^oEiTM>FK9?^qC}3g- z;*cj=^4n9Rq6fyrsGn=gVye!w{PT839&U5XY%jgs6SCp1e&X{B<7rV94bov;dM0_N zga$!M;%H}1!@wjeE{ad-NZ+&s66@;gw^vCCk?-D}+2W)cV>SNqmIm4t^c+*}gc6G$ z4pvs1QCW!hosKvso>tV1civ0zFifHM?$Pm<nim$Pip>tQH+8eI({mH&=K2!~zQnD5 z`Oz|p`$tE|%KBIdv<bJ(NqGeY94suNQ8s$|^o;A*oMcQ5CK2(Mjd{+^K-pbJVamhx z0P!o^3>_81t`r;=7UD4ZxBJU|L5aP+y++ g(&XcUW1UO5ri=>x>&+njpy*fB%Hw zw-2uKO0ry>Me2-eDKzf)5`Lxl`t93PA!l=A<MilgHFfn5jr_E<w82pid`@kl;f#-0 z8wWLCza*_u#)pPT9TG=lJ4`O2^G{a0;vfKB=nBno!y|fC>I?eO9&UzAR3uqec?)?T z(YUPNd0#k=5D=)StgQ6Ax;UEehyehPM@22@*x1)sR9wu>%j<HyJ$rS&_pZ9yv&FpD z*ncOp*Dfk=$ze(&ug!~d8D3Abp7@*}@AQ9FfYNaH&YkV;ZOiUcLhGUmhuNB~nXUwu z#HyN>(*yq`4Z2t7c7N*Y-e12|B_x`zE{__L@HW4RxUQ;O&y5zDqNAe|(27zByWBCP zg31UjhB~+W`}?GGKy2_r^N){@*CaDCzHJO>&Y>fk8S)OY6Y(i0r|RX#_;4O>dQaPI zV~=>y8*DBLBRh6BFDa??3}noJhO5}s^^X)qi=6aKGRrF5*x1<6Fri*#=rTsj#5Xi! zu{L@gu7|yS`>fXezU$+V$VesAECV_w-JaB@(V|8p|6=a0RJ@NL1Cu;Fn!?E+ViF>E z#-XI1K8^dichnew!f9B~#>VD-ylt$aLg+96lgReL+6W@*!v_~Ye1U<1fZI>b&RFl< z*$41?z=_&H-Sx+uSkwP{n0T9I07aqR$7?4vcsx6r7!yCg>aei`i^Gs?va224_wweb zEgkCblptk`MFwAno<C3?m6erY=y)+F?dEn=Sjc7Vp{=cLZGEq-{UfUuj5F|c7en8) z`uh6D$H%|xFh<kIH?Y&KQxtytwpQ)B2Ez?HA~<ShX699>Godw}<jgo9CQcCiRm+t% z94di1x|%eJ`I8!e^03qb`p<NAA1m#z3@ib5_^yK%%^u(Iohc6y8WI9P#1&9)aWMeZ zpZ)#2Fj5eQ<8~CiyG1Wb-Q4`?(?ji&={n=7>O>!%WoP3{hWkzDq@>1Z@f~K<0IA!; z$*ruc%+1Z~JP*`V8bvJ9$ufM|dQ$Opbd*YQG5tTXrn`=e(03U!J&tdf>)m&4gkcU+ zF$+~v!s#v_>ETAuR85j4zpp5p4zkoMIi}2V)IIVt^u+>g*is1z3A_S^(L!UC%eS)4 zF9Zp1V(C>hH(X)c3>PsTp9Q6*4H{T--s198?KHZ498rj@udDk@Vdm=cjPu?-?5*a2 zU^&I$LM}n~!Z7oeS557ay$#~DH;FmB4EJ@o{Fs%sk?`^GzKbL!CRW>yai5<=tlr}c z?Nt%<rr_od=Hs~^;Ls4_vG=go2kX7I(PajU@n!!S&nB9kl~qD&Do4FaR307b=5&bb z8YK-&gvFt)b{V#<EfWzbG5#L8Dwp5a(89D9Sm3HO7|w1z@Q&|XD0lLq60qmx;_8L9 z-rM`@D2PWj<3FwT?Gs|S00SKbYWrAK-}=TlDFcHw`iiJGMM)h0+|NHOG$Jp%e*b== zq!ig<_B&OqCNEEM(nh*F_=Ghi*bXTvDM?F1Lv>(vbrm*3*mK{~M)M`Kd&uUsk%G0A z6@c~j)3rJ?cw;2Q#KLZyxCqFf?>aQrb*t6@HndC7pVe7sEbJ~6+TM&$e9Xi)hzoJL z=;-7m>~)xzo<18&aO?d1TvAdJb-D&c9`@%0iKf2}TdbwlODG>6dyA^%GN`DiFn-Az zA+;mbS!t;tW@mfn9r^I_3!mdeP={ri$}zrQa&X>1cCnGb!^2~V33Gdwg|=9bN2uZt z?8iN`*I%J9mbyO&v<Q=2dL|7ub^pMCf`S4cFYj^Utp9W=9V&<6tBr}-X))t&UOwX! zC+%X?{e33Vgh?WJ8!wF0FX^tZuqVtNAt51;A3s)ARmGzMsDrXt(E6Io5ABALgM-6# z>bF<Z^*$4GVl6Pk!qhX!>l%0X3XK9|Ken(-QM)v|Pb6zEf(m18SOTbzF!|{)$A??5 zTH_kJ=NA{r$jOhk8m@pP>7Sg`H=^n?RBbx{D5|>1`Ti4tRsiB}6Q4YOj0|&ebUP*N z%F4=$L4$AItkhtE`F*r8vcj?XUiyr03W(qfE9+=6FF6mPso7tgCzniVVqU{TLuIp0 zC%!`feOQ@wujK9LxS7bp4^9u(0FCeF{Dyh>Ltj55`r+aAkiNaUi|l`V?C$Km_v$Ro z!||cRd#^)Weur0kOORB?$f&6PpFc~RNX{{hpI_()Lpi(Ak@t<g@%*EBGxj!=2EgN^ z0J33V0n`R8hL_jb@$oU)R&(Ng({>o5>+0&Da#z?*@H;OmT6-87%|zVf0ct4m!v`2V zWi|q*%k8M}m!~`z796+f*z|^_d3=11FTJ)8(3qLSf<s!B=T9c6G4QD!U%uq$;qij8 z9tteJ(KwWYU8Pai#?ClS0&MKZ%E|)#{7>ZN!`{5v-QTxWI((8UI@Z(E10zFwd#1ym z`hb9dK_}{7z4?sK#-m(DTn`Nlv=2{@AIhQ=B5(a^NfwH)bCS9KE+|K-si}%A&U39{ zFnJgo8=DxU)Ha{nF;aZlG5rbU6gU<L4d7LN{rrjWSN$w&Q0J);IEw|{Qx>yoXx>ME zJU$S4v=HfV!zN>l+_3T2M?twPb;7mVH}|y4jV^yB5Bo)j*deX0uENZP;$Kv>0~47J z8yRiidwzY6WHB6me&{&$^@ZyO_0+q2Hk*<H_SEJD=Pl<Sed8PKk_(a7*Vep%T0v;n zx);H`^YP<Qw(4glQVQb54ZV0?EDBr|_24j)*>0+)ZrKQby$XLqI#fxi7lVc6XnR`L zP=((V#uR3=E+94j_>tvzbqUc<T>0h}->a5@fh^+z7Wa$luvoo{zy|S|?$&X^F2kI_ zlW<DwO-niCEx8b;nQp4la=f?HRvBZXMTIXIy{if6BoB-(`_cBuvFL5dOB))lfRbY- z!=Ag#8Wc&@^b4B;x3I{H*UQd!=6EOZg#yR3)^(Zx_#1pNh3rPaSMB`$@hv-BF@d}7 z$B!RSt4xf`B!U}*FbaLe^c$w7J3aR31SujSn25=ub>bVMgHOVBAC8i3=Nr@jErm}j z8Xpt0*G6tAC@5(Ar{3V_bA@a)Y;2<emfjHzG_>QnaM_ZPVY0WhX#7-|0cpO?>oQ6t z9+$5|Lq&vzVHATB2ve-8k(QmEs6&_GAZ0T)7vj#HJGfN*>q}{VPvqpdczN}K@tdY9 zKEMoE8)@pwTO1E^U4s_q*!jGZju{Oz;0sf{5D91LqqIk*CrL3eB|v#Wpuc|o8X74d zf3+jjKbh-STL=!hZY_t^tCMi)uVKjgYHGwpM6)X^@+qw^)<=sVKfI>N=3)}D!^u&C zkO0Sf3z|L0vNyNJ_PfN==O9F`c^UBatJ!C1C+X6Y8en9J7-hK<y6B}|DaLcnHU(iI zC#nARfYrRyq1DuMF2it}jq0{?Dm5wT!pscU^Iso;4qRJXQ($AOYMOm$#^ik^hIuQ# z*7VW#QD_K`gqD`tdwP%C_2<mNqVC&9!+AQ$x9prm9d1Gtv_95G0@CRSAOs~<9|_j` zc+9ntmMUi@UMhZEz_6DWJN5i>`%vwm`vyl<IWO^hXAAxHAP0_(j7%-=?o*WNFwths z=5rZIV5n3o(i9aG2KxG}l(e9v<Z67=9dOlanQfeHDfDvtd{mYmpA^&}-j#%bS06`6 z%zS^r!P0UW=vPw{6Lr+7dnT)cIfJc0V&mfC(u%s%IX+~v=2Ex3a9_*_Itfn<J6Z|R z^z+~Gx3{VD#%gL(BIp;gqs-I8;O8d}!=m3At#Na3cXzk7g&vi@9V^+sHw>6*co-ia zpG@I(8rB}U4~N!2FU0GxFstWC_H#^ZOoZWR>FJF|h#({}FaE^3*jUFo>F$t2BBJ;@ zx$=wSzwdyDt8-d-3<C(Hb!ba^ECxDyz3&Aj0*X4stEP&|_U4p`pPye2O%K%`xjYtI zV;amJ6v8(kbu~grSt;$xotVv@Bhg1iBR|dbkH;{Qk&}G6Ihha>Gw@wc0ES%{cMBRW z6LmRQ|9Y5SGFS!Gd`ePLLHzL}sBshM>l(Wm%idz#93`q?Kd(O1->+t!p`7-hCrv!g zNLs1oT&5ovrw|d`xX@YXBQjYtBHhWXU^FF6&4NpR7dF`pjci8u=1myd^y??3OWrdY zuc&QrN69H-rY}M`ac6xeH^RqwOC8{kI6f{4i%m~2G(yVGg}xuG!eeyFkT5KZvt43A zNZh~wZUKwL=)&{*$}4c?c`2%UjSCBfrWm{)JL&ZgAo7k+=TZiUq8Z{F<Su`DAhDpP ziU#=mXJV}E?*y>xHFha77}EzQBJGiP2%NAr-V$$~t|O$xW@c_qJlMor8wPytzJVmE zc8&Xp`rR4d0)<6ML1AfSb#ijDvspgCBstR~-ZV{1f!jL}G&3Vx5-0pTh|vA?M!~t1 z+=u3t7ML|)6aY?2z<zS{oa(^%GJ{`kwcH;TjE0sLs7_ZgF)?N39-!+5YAtMm-{34N zDK=Vqf{A03q4)HupcmPf-FkPmH`U#DT|1vLvABwN?9u~aGEr^^aLN;?n_w&wAnjq` zx!Ng%c8>tg!_wz^WPbp}SgpsN=ixdQ0tpGpW;l;X-9KDGfxX%lxWr)B=SGOVrIu)B z_jDhH>!FTBdvd-2;V@nrmI$LH35%lp_DsMh<cJg2m%w+>g`x@4(;EXxI#?PMBn4co zl~vBGSLg*2_8eyBPqOnh+3yfe1|?D1jv|84XY20<TS{SiY|k_S?mCWzFluFVMXM|= zRR_u_F>`bNx0e4q+K^RiK7Ty~eQii?F6paRRp#b8*w{nCjn%Hvc)GLzfsh`82s0J% zlipg|6Y&!Unmbt&ZvW2yUG^X6A91@3cZiIypLe*o_YMa~W@h-CH`&atRL94_MT9#! zV<Gx_-A%0%f13^0W1oztJ-SUplT!Wn2_w;5T@hf{>%u!V`})~`=Dxc6F>UjIy>fX) zh2PFxNL(B_qV>lQDCc{mGfz_JZfBu9<PzJV4-OvxFS%~q^60)F5zua(Q6S8`fED=i z<;&#cBoyrKWTBYN*MySY2Y=s*+fP*={QAfWcVJee-Q5sDn9l#2KIH5UzwKxtu*&>N zVo*$>)v?ZsEf7W%fw}}(W1;&kt=K6LQ(5<EgTEy3{-X!VZOTt^SOTY*&E5zMizH?r z0>~IldTA84{}<yJHH3T)XiXvrJtsTcWoufDpFeifab6<EVFhSh3Rh6qq<1BLr9okR zxzZofWCVg=KTY^Npj7HbPIldd25ueyD*gPpxDkIOl<5Y)2FKZEsE=xHi_+}FT@^0B zKHMcu6BH7XfAHkw@A5LlPZK<4AI<CkxP*ajQiC+QnD?=YjLg^4(hrF+z^?Uueq<FX zx5&4|4wP%fyLa!tFxpUg9;}iQ5lOh+APziXb&7A;w|;T?Yo6@7%f)dR3=R$D=wM)k z1_z^hN=3VNdn<hY{26FM7%8b}X`gJ9ab(MI`N`n#Y01h@8R2%Ty8V<y^bQYm+`XHA zpH`?hxngi^>;!0cP+VTTc!5LCVa7%A$9pf*tVMbkv8Of9<@fx9BH2u}6dCeEpwAN$ zZbt6>3|OrFS{oz_8v$$$w7gbSS$2TJaCh8~S==NhCMJMc*HTwkDFNmHK=A%6rnLu0 z>>8Sy`T6;=a+Y$_|14xdM05u-uxz&!6gs1#qIP$8flCMU{+320cJq^&o~eVCqGA^y z-)w%M;(&+XxOcA_rkLUHdOKp|So}%dCPkR^)cB!oCNHY=s~L$!x(wg9oPSlY+0**6 z6e#~hO|2hj1E4V+EG)=LNTl2ZcOTB^RfGBk+RM{{>!;;T0InM5f$2hHDGd!$pQc{~ zAn{b6P>_<!xJgI<>#0gDpI^>72LD4+n>ms5LPRmG{hPf0-^JPgHVFUMHyIci#Y9Dy z-y+iw62~_bf1{Z~qVojKAz9efy3rpA(OY0B4unlLBanpTiv`|rg+`Eg+S^}k-XWA^ z4>)11aU^%qD|O$Q%gf7y&NbfLJO{WczXqpsaFAD2baHrD)4;%IrT^>Jbe*%a^FVJe zg_x%c=mA5Epc%qe2@4CiyuwqEmrvhvr32CZ@)tqiI1`L6pin&>AR;1yE&7tFq^O8) zF?i$OUI55x$bq!P#N4c`5l}pU?1E+pLMSXOv1GnsgT0yAJ}?`=;!f4L9c@k}buRQD zauZs|aQQ8u*dsCee$)KkKQdBLSm+2*2*Zq{ql%VR8ke!8zCJbL9GX4oOaO=~GBOwr zNX}p;atVzf%!LP*+NR)|v#_+3Q_9ZC8A{<`XGinj-`@v0h(_EudE|kBz{vQx?(PeQ zU`i-t^xFOtchEw}HqW_uc#`<-#-o`Pq^Srbvrn#XWHZqIGaww0ruDX^K@@_5B<gz} zPpGD^?|rzg!x6{2yG<x53Bv^jTch1zBA*R1GBUUVe2-^Cdpzg1XInt4TKb*x?fZ8- z3k$cEerEI_`b;_^Nn}_?40QV7O$sPU>HHWK|F=yG|0hO?j(Fg%2q?IWAhMt%ri+jT z6Iu)X>n=}mK_r1F!J%)Rn(~1T3*Ggz2m^c|th@}Z%cO_`R~DLH>#(Jr-Nj5(5KEHG zzZ?;cbsZfY5JL>>Dkh2Etko_n$Ov5Y&!BB!V>6r~3Uo@$!7-4riU(k0@a-mIUf<EN z@atFRDOFy2cJ}V!;n+44P-YMh8+<QH%gT~$U+&DwJb%6boP!)4Q!pWMD11Mg$3UhM z(9I0%QG{v+2JFrFUn3(UyR{5`m}|QsHeeEdIoFES5gg2<*zA=HgA3>|i34i$Ub$up zuwN}{wG4jB_2;{tP-%QG4n`Q(OWH)m#6(<{xs01p?;mhpp~VvtQ&WS82E6Hwn>Xdz zBf`T6Mn;w#1qatb-LH1r!biYO=+(OKz_xE}Y=B&soRENZt&lu>_6$f?P~Ct=hCz3* zBvUD=-1ER%KtO<xugtjR)xy$JPl|}v)2Ahm-qC{Etxh$~u?%I%-yZ=y3OoCEBouUD zIn#^$LHHE+*fj$c6EYBzX?M5`avP+3T^*e|_Z^e*QY#!XHXw7eKY#vPXxx%5NQI4q z16nUPA0HkL&gWQ1!DR3iK&GRh1PM7W0v&+VIAZ8$prd02L$|T<3m9;fl)6FYKy2^r zt@Wm(xW+bu=$vDOdWb*(@laS%G1Av}liybR@nh_=-oZhzG<=6%Tv1e%aNiVt3va2) zWkqcy-vHbk5s{Gu)PjhEJ)N0>zkmNid-8<c3!wT15)+IipbG-x2l$tLwz+emhcpB6 zhk}lKO|tFp13&e-@ra9?yBJaz=pGPrD;)ly`@_H9Qrwr+(i#~aJ_PnWvW}36)y38I zXnjn|?M88~VS_J}@f-a!Ky9b#rGs?f0Y(Aq>e5md7+Qd8gX%atJBvpp?su82im@fK zS29`aG0@f~16&Gl`<uJ0TKU1j!KI&C78!Oo|2yM^q#T%NI1K9*%Mu_wp!s0YKX~u} z9;m9SDmaRiRkJIRFPyO1yyP8?h^CsF+Oua5EPf{gWue-$yR!rCn6U70R(5vRmoLjp zOGSZ)hj<3K({R44kQ)iC0<0z$JrqDnE~AI=<gTs<FgS*Xhp(aEBqF-+G%sg8J~rk7 z*$7hl&6_u;s$FZ`cNiQD5)u-E2|41{{{A(!wM~wRk-{9S_o)G0>(4jey~W7Dz-GX_ z+HAwX-iW+hci&r7l9V$t`UFxqv{D_NF%aBiISd|S$}1^>WFWRx6&o81(g0oX=-3$O za`o;zfx5@beV^MsD}67j-@or0$WjK6%*(B5DB=!aT)~8AyUAmYo78PyG6qs96iY$F zWC(ny@QlIUu%+NC@OB7k%sN^b0J6azIBcm<{IAc{4FEKBb##Cq>hxqO4em}`Q*(H< z0SpDzFx3J1I`1e5G4)hc_2h8E;l#7XY2i(M{Uu}okO-hPfrsU(fdQbTBY%H?$Q%&7 zEv>Bq=4;R3NU&?Fsy1~#%~3mQxl0|_`8_w6*iDr9<-w}P?b}&BKEnXBl1?&JW#7^I z>@TZM=cT3niK3T+2B!Q~ujK=*JkS06Imcg~JDh>Li;<BLLe2E~^R}a2KqBq$Zv6>- zkR)}9vkm2@%z5dF_32oNMQ!UeKt)(kOnP8>z}%&72RgD2D7r((?U7V4pUkbX^YA>C zk_t*Zgf{?a^U;uzfjhv@TKK_(>DJcZ#6?mgQ1RhOc*&SJi?06DLnHn#4^3G<s1Cd1 zK>e{9)+Z;L7ij}#?EL*Ze_|FiZv>sVcv_-CmD2)jIwn1|t}m;o^i22fzkd@`fapmU za)v4nvl`fG{`eeC!J|Nt$nKtN_l$?21{mG57SLf<@3Hra(8R>V3C1z&SwP4a7Z)eb zDq-mf#Lu^ZJ9_0H<DANo3{eYKFgeDnVE|^U%gfu-t3XBavNb~OgSMJmGY^Xbv24qq zl$av!_kdKRg*@;9PFyD*Ha0gH$ar|5))Icqs(HCV2?12l4bm1lhrZl(M2!_cSAgmd zt%KX=)MfQg)2w6t<*AL2j}J^M?-?I~l|ZeB8$Jh%2Qe}<ICy?>QBqv2Z(sleCJd1| zf0`gQYJ2=3;VLQw%4%%D%i%3CeBlUP#08Kz^e2emtF?lL>=4N0a58o$H@Aw?QfTrC zVPW!)j@tn0*Ecqnx)NGUih^rV$T^>t78L<w!OzW&O+c{Zr3_5i&$CTRAty6wY1D%} z;DDwD-Ze&z+P-}F@FDmj_74s$dQuHQ(ZK{jW9-{(#04TIrI#mYP!J~BAz)|mX+iFa zEA+mKo1dQtH%WGOc6?IO5lEPXP(--Fc*7E7Wn!{B<@RTXI4a8?37kXVVLLzDYRDM_ ziRkR~bhj)EyD&<i{Decll5Q56?W*PzXt5qy60SgER80Q(u>^Idt*s5p(M>KRkeBb4 z)j|Re21C7fy^&j8EesmR@87?>x@>ztNx+Z^P91eB05R5*N=n~1dH>9Q15gf1P0z1i zxgC}R0|P?TPawGggTl*geN<InUr`Jkc<L3*TfI&&bU+s<E-5*wR#R1787*Su0}EAZ zN{Ru5g^CK7X*+K29(0_dF<Xwf&Lio6d8yjk+l56$YO1TRy;QBOxRktds;Wgrw4f>+ zZT)dL!$QDFz<=mF><T4NA&vv~wyL`NfyeHbSt^F}6}$^@r2squJ6%a(;m@uvwmWw$ z^U~JWZQ%zmH>`h4<(-YqbaZvipA|f}umG<N>)pGmB~ZQr0^9t?k!S{zdG&bbFZhKN zA3r|5IQo-w9Tnhi$a*`X4k#4BH>fm&QgAm7knk{gIXQ8=()kl|zg!;$vVK+ktXtsE zwy-!fA3z_V-GH|c3Pl5SGVol1^)5Gehfos!2#5wMS4>ip2<%9E2K${m6!%S9!B2&Q zjeQLw?>^1kCf<hs|MBjYvb_8YM@NJ|Tm)9A9rkiz!EUTr=BEf3pfwm_NXf`xXv4qB z9qg$LUq~zF2`s1!RJmCPBUAd2;NVFpkFzbI0700UnZfgk1{}5h0ubnni}qv1ZNGk5 zLoP&$`9L!QKO0PPAjF7YotJD=d}_M7ejA`Hn1kT&gNT9f*Z8LSH8YcinOV$zo9^Dd zH*PM9pCTe6;PF;dP!a!{K?4e=pc+q4UrsnQu;0CF#Vxl&e}y(WIx5J?`7Uu$3E>Ya z6%^awDI(-VL`|L60dVJ+uz}Z}I&*WV!M6}UEuM*fha}I+Is#pkMK3WS!OGei9<?4u zVSo%^YXkR5ChfJ?P4BuGkO0>U(t27^(S1WLHnMOnUnp&WMRK^{YaY2?LK%at166q2 zpzALf-j;sTtbY0lF0f62S8K!U<mBYjI98)U2?=9xeM6sU*dG|!7i)Q-r_};*0~sAa z9u%OYy&LpuPoFlNEG9u3!3}4A{hE-Jgma<{zBibAQU&ymN}5c~&D)O*dHDGuvleN( zo+v0lLm@iBu?hmcq{_070S5;Mn*66vbk^yhnAFsqIW%0LBcPUnxU>GJLHwW>#uC^} zc)cRH^<-lV>cQ^8!BB6niiQSM&<y<1r<&h&zZMiY7#q)my%%84%*-dSHW@bu!|YXk z|NPojcD|>qtsM_d9RP4iiL+^6>I0wgjt;Bc`3}$(!N^4mwod3N*`b+FQXXF<W)Z*a z%a8%p1>U{9ysYIxN418V^7i%yGOnyjzV0>*Vf+FDz|;}|b9;%-Pu8z2eo^|olMG4* zKwD6{!H~C|x(nF^*L_y$DDmh~R#6sY&^;z5X=vEZ%^8~xiS4}S4cj2Aw}LkpW<8)Q z0N^q*Fa+<*UT6;Y_h*=wm6cHqYe`A9fb&7-(W6^}j&%I|FF})5Lcc3E-+=J)^13DD z6fB(E>XzFEViy<_4q(2728FYdo}CRU`On5i1mbXWYND76gvJu<q1=cFT#mRi_*A=Z zrs_of|6~=sF}hpv$Jgt0|88gt7A7VIuO;E1!~56TM4n#7+ivsQOia{bo`Vw;R0xn* z!Hy-H67nG>Md>1M6Y5-OOUJKY8L2>r=6wF_e17}_VhWxND$pO_v&egmkq0wNOBJR+ z@K-G@U%c3X=166)EujAFnJ+vOlvoIK(0_OMS@rTNE46`jZf{3N<Ugx>yb<aU5fl`Z zpU-iykP4|rN;*{74Rj3@VFem#IWQ=ISss*nh+V)LW44C?Ccz^j1Ss=;Lll2@k(fq( zef?ln4A?<j{qBUDDr-R0LX&g;{rZWrvfutPkwaV$6bkn&4gT`1U%kDBv-Y{wl$+A& z{0ljcfUeaejE+iq1_C+MaKHd48tZ5e>PkyX;XY@szTR(k(}AV|hO(V!I1U(UreJnO z_*ak@W@pPieHv2`3He_6;x9CF2vaAhHvrbRFSq)Y0YHJt@lhn@5FmW0QWIliLq3)u z%Rn81;%0ZO{C&;u>g-lrC$to5K5KPos=8$DukfhAzM@EDqEl+A+OijL7Z?36cr8IK z<mcxHCKlq)c71&k#!T=}m%@d>jage#vj&Y5itol?&cJIT#`?2O5jQtC1SUQ{Ew>q_ zYkgWxjYygJBPAtvIy$iBsDhOnkSk(lZZ6~dcO~XjfXuG0d|SIH0b;nf9*BZv2b`)P zQoelo5{8_)iD%@m33pov#KAhVys`q;RB9ooFG5>i2m$y(;=&W`Z*Nz6?3ouls|)4@ zVL}jE1rUwsc$B413%|fJ&2Rg6cD4uvEC>x7E2~IqA#O-CRn;A622i{NxVYlMq68ue zAS3BZ$?;F^hw47yMTZM|p6o6_UxXo(<xA-BRt`5PxJR1?&h_=(U0uM;xYu~YkKmI^ zVuPcpxz|OdCTG>UlB8{PG~TV<S5_9i;444@PPu2Z<P>VAHF<*6zhMsY@%DDV<rSbj z0*0#oe&S<4tNLn@Q6L=4N=u<P=jcr1e`$vyOCI)l+zk)$FRD*+oRyW;xoUFp{4|ct zM7W%d6&$nIk?eLOt^3Ch3kY17M*&ekflw6|68abyM<Pkarj2m@9e4=yXW!@0k`kVR z`>qE_e05-~gw-ICgcR8WkGCpLj*~VZ`;kifIci~->sa~nTV5Nix<Fv~`uYOSfk-SW zD)N@teIod)yL)J4MEu1ZDoiIu+VErOV_zgp6653dHzou)Iky1ZL$VlF*wd6vLdOcd z<(oa>3}X@aXtQGuVUT^8a+~7jO)ERQl+@H`nwqj3Uq4UBfDKmVc2w-gk3KtX<b(3s zks&t-31>DpQ{TUr!1REpgTjYN4-9HI1R4x09!R{0`!IR4X&3tI#>K=ujk#^icisS0 z`_S-k`KCuW@M$n8nF1~cpEW?LrV;u-I=!G(Lxf&I+W}i7M6QR01O_T9G^00!fXxp8 zb%Ug_lje5`WZA*?HXR;B+&|`gFOzE&4Efk_ai|9koE5CftgIdcv+~+=P5_{wJ%fzd z3yxO1l&F7-1GuVg_-3HLHc=*ZxQYP~2&E!Q?B;*xOs*08{XaRA5eR(_0T5we3tW?k zBt%r9l?Z$6&I8gO9Up&7EfhThghd-%Rm^jrg2z1K+Bh7Ax>+pjH2)LkNuXEEU|h1c zzGm_T4)<Zg1G)ZR7HRvg`1|bcT2ue_Gv|o)z@*4^|NhE&nGNKDsHi9){}6E>c+5eM z8PoQNv04wFt%Fw~A*x>F5TZa|{50bRQ;fZ_@lGda1Mm7g)Qal}QO;xK=ZA9}uKi!+ z0Z#xgY3RKpgY(P^r*x``0*VaTEjUqf`~vE0wdsj1Fg<GnSv>$hSMX8ki(u#~FE0Mo z(eb`&A_;s+*KYFK827s%`~e*ywl)9D+@wewE(*A7&{$Py@$X+}0Gq%$LnnN*sXYUe z$J_95XE!&8-#2I2dtZV^A$R(sY7$}xo*rki_`MS{j$>zO3i4#;j1ev-{ap<R%ycOX zXei6emer;ba{K>bmX=6*fQ55?APVRI^MR;;yQWe8?V4WR19frGTTRO!LTRZxslsZ2 zr5Z&7(}%yyFgQ_p726S3A7DZDdqyJ3Vz48mFUC|OM?`tE-VHcdGoE>9#O2=vJ^I=p zZ7PZBgO87aPn#z{J3L>Yi2tY(Y;){-<uL9b{NZ#_7v2Cn36NGuh(CJo>4M)U*~BM~ zCv<DhdEL2x|BfI<{dsh3<uWk6NbwCO%?tOKm=hM4+%8M$EIXoOm%z<D0~ecLT7rE* zM$n@^Qoj)jR!zy*<>maKmT_@t%}$97l=9+m#8rF?+bW?%d6=n85bJ2P4|FgngfD*f zj3_IXV)!eEQKLL0W5cw65enLlhPt|<lF~qb|1!RGDqv|s$-tl>IN8NwP=g*$-m*5* zJT55G5>8IS%lrHE3`5}#+X_epaElq>jf|p?ir02XPaL;Z>IQ%nq&N9}kOpPZsS3bp z%PgU!HXB(|cP7xOiQp((>;XraYy_dc4+eg4r63(DX27U+?~u=UzCliF%MC_w<@phl zNa)<870ov2&mp-%9u&}oNBVJcc%RKxuMwiz-rjz&6rv4OYZ%Ip$H6c<W6%1+`5%Y$ zNxnglQW71%W}{Sjd7(9_ViNk}^B;Z-+cBVKGJ`a<@Qai}ta>_{O2Gd#qT(`!4YWz2 zG%7_SETH1kMNn@xnl$Ab6j~6>FYSpBR&cs|G*$e;&aM&NJ(6!f{|Gt-Ly-jmo1Uh~ z+6q=2heVC?^OA!!vz!SucB$fGqo%+_p1zRt$Xf&-Kf3&QBh7vnD^nRmLjx0czMwum zT}2)B9c@!0Uvn;}q#6f5+3DfJm892M>}DZTAYr^f!Lx(N*Z$&{+289K=;3Mm3$87A zP^vBM&-RuiWY7>syJmu(rRJ0!`Cdnj-FTF=lj{@Y{C0t}EdfoR7}<iQZ?ocbb)kxz z+2IXjHqEy5*4LStMt@qhju#<+OZ(lxX$c>flIfImmTcRi(uYc4|DoX(Pp*SO){}tT zdl8fXEHd8WhTWpyo^UX-#}7i^(K7V&b3Y@a6$>O{EIegMaN9HgJQPQK6Ki}tD(-fU zKhw7_sQU*t-wMk4=NI36Jw+y)F|YO_r@*D)mfqIkPfc~)qz2i~`6X){PEJmtXW2}C z#%Bq`TP#X}?{2kGauX-4T7$O{Jcbig+}x{T`vc02<}ImWy;aVP%Cd5q=NAH%H6waX zi@1ej+m~Wpi5fM9#l*OH^vp8NePIUjSe8~pzCr{P2oH}&vo|)b+Wtw7dn{ZOT<%;~ zyE}hv3T~hLCD`6Y7OP7P1;0?C|93r`wVi^7UGa;qo1op}Q6ZFN-<!+G6nYDl+F&>@ z4eL!;aO&4;JAc4@x64rVVip;fN>fC^M?xtc@%Ztl0s`?XTn!Dbm$r5&tgLr9<GkbN zqT?`VM23IkQ)9Yqy>U|(A)ApUB@cQ}boEYxhUR!rdB$mWUB}VUQd1lkT`>ha7?Ff` zd3ivKjg5>J;u#l5e^*rnQDPDF7Jq%(z~SUI(e^I0sHggt4JN%1n9tokhJH`i;j9hs zRH&*4hm+4HIatS4)^v7gN?YG^SylIPv6_{vbR)RYs!v~pz$rJD>dyD0B_V+?1|P-3 zkCP7{jCyEi9F0!*Jv-rmhoPa+31MeIg@f_we&U}qSEV$3G_>udwB9-qrT6qq{Li2F zetxuJtB4CN;&Wt6OVdb&`RT0GXpL5Fk^Dm^ZkJ7cJ)fhEpo=r+qG$5tGyl~Z@j@{9 z6&^?q6lvb_KiF5V&Il-QF|l(ixOi_sa<pO+?f=QAIp4*ZpKr{XAVnbHkE7#~p4FJA zkJu0A(A>R(%J`&ZhxIl$@ML7RJ2`=%S9&jxx6)%ch#cHl`2q$)p0l$pE;Bh2Wg*WS zo=5o!&#G_C{cWR2t(>YxGpHW?ohpnLP9|?TM9kg@umPWd0E)M#iOC#*etw5(wnCl% z>X%}=NsG|0ZoOg_dBNZ)Sm<5#TFcB5Q^3AaS$v4&<j4@>rQwoz=Z%W9s4wo@x4qxU z&kyxBB$=5<OR+|61zoXAOP6t;Sj+icX2ga?1h0+QWCjHuJDf8S1|i+QZ)B~@vo@om z2gj{GKRPH6!KXoXaOn7Mkb!m#Bjes;_Zo~cIXPAjA2x!Rj>`WOP!W(4@QR)}VILae z@_P_LrR6XigaPTuP`_K9@3HqO8&g!&Ixd15OCfG<(-MmwHRE&B;EmIRprsz0xV2^Q zI5nC`7}2GgYA7Uvdu6oYsyX5&-@s?tovm{cNhuWY@LCAi5x+1ZCZxr`I2-vrU5Vtp zD94Kkn|{rB?eoYQS(=%N0t~3Do132AG}6`55=7V!YYA2rI729~o>h4L;$mV#MF0t@ z=QmLHN-L!&1xNgXDa=N=taN5oL%W8|J&DBFc>9!3S|+S$n^AJ66$?txy?d*0oHC## zbnSwPI27gwAVQEp1xUn=9KBZt=DWP=>cgLjVOYt+2Ofr=`T2!L65T#TAVM~y>Ih3Q zFrm5!$*796tlDGa&_hRCCUb-tbU4e$WANd}uV2rln&6}Xur;eNGXnGj%*)BjN-|2C z^ZBD{ieQtWkHe&Y5C*g7qY$N}nKVCZi_f2%T2UWAW+Hz$A%S^*3am+EsntPlK?;qi zJ3>dtq@Z49X+S|K+{cH3AqDQwbRcv5sq&L#%Z~KesT!Lj;_uq@#f`0YJ+#>(>VFT` z&TGU&2%ldPr^5`ey0#`_-bEq#6Z8!jT<+D@IRf_vMrUfiln)<J5dfDW`L0>cfq@!` z(U#C`!|v~4!D<FdvhP?BWqx&@L}cF%Xev~!?iQ8j<F$81)cPswaqWh7vxvAwA8xE& z{6KnLCFF6LoEjy4Aa5T5M^CK3K6+<eV$>WQd*u9A)=oU|a#n3=UOwZK3f11l8T)z` z^eSV$MxZYBip|0RpL=_YB0x(316es=+cXRY;GQ3J@%FB*s`6;L&=UQBPBnbj`AoR= zCn$sAeCN?d^mo146K7!u$J~7U0>hDKMu`bn=;(F}!%HSIkvd=Ua9K46sVJoMs4h=1 z`ujg=ah?W}P@ViX9DJ<L5kaXT;&txcS>xo4^5{q6it1<oPCE^wxpGS)#RN5~`Ib;F zBZN;M=3St(+<eat+3CLkn|Ce!fY3aZXzd3_CK(w&19u7z;YW{tToX$kkV4<I3NYzG zUi7;-(1Q606c#u)ke~<$U5s0Nb+2j|g%kaFmS<ar_ivk=9S((WtURqoiPl+Im<P$_ zY6Q_b5?AY^;O1yDP4?mMxy*NRYW*a9zl)*q>FL^>jg4hhqTt&s&>z~zI0|%E{_O?$ zP6ZT`hQs$OCLGpAMV1mcVC(&O1`fJ_0y&%)K}bwY+z&_=L`QIP026GT4zp*O^Ez-h zFf9YS1~$c;54_#=^^+T)=<XF)=@)x@)NPr#xv8o475{FvJlgb>_|^KBCPz(Gf{c?) z#WRkbacjDdX7aWPy9^v!l4I&0u;GF8+I{;gYkCt|H+(-wpAM1x&o7pjOYM+>xqJ(T zduPF9*kY%DF!z%L?yr2TBp=Bd)-xDPOrLJ~6&eR+2a%*C3E2Eq*Jz`h)F&l1Yeq%- zTA?SPrt;9u@gS`1Mu*`ggX#;HyzcN~?!Nt#*&ubl0{e0Gt%-+BB8{zHxPokK>tGV4 z5q6OS29TS(8m4>udaA#_K0JE&5CY+%;$=r96|()ydt&+qvtuQRD{rtV_;C-{)A{If ze#|x|@_ow1w&)qwdtgsJza(X1GEx2UWAXwg@yE}P=sEJuPkY2Al$3a<R#%#$nfV6R zMx+>*8U|W^V63KI0TN+viNmTH{P5qL03kg3p3@f88Ir)WX24@_it_GOXX8dBH4VMc zO??A;Rvd)U7`KWllDK$vOY{SM4)3cv|FowASuKYfMwW7q6kTGH!0Y-U760nYu)DOP z!qUE=v&4>y`hh;rgZ@-8LW(=Te(SLbQank{PU-%IjDm8SkyEe|4ChIf;_sVM)6hKU z^@@p+P%V0P0M6@Yb<qK<3Pr_%@$uthXgEgWyr&uO9|SjEUVO^_Y3P%ZLN7q>d-63> z(~wrD$B;=<pJQ}v=r^q})7+(ox-}>4AsIHd^rRn7vJeVAeObxfyGACGhP-%~6Ug}3 z*w*f(O)$-wF~?vb8UFG7N{&c<@VzdyGH-eECNZ(mV0L2PjNb)mM1;`~e0W-9@k>k` zvTaUkaa!N=qUp+1yO_KsPU5PeZ#JP@V%`+Id@>Dhz{5F|o4681I9j2+|IM-<huo<D z%lKGV*Laea0+w-(w(cWYSy^}YW4*DeI|n<aDk|ApK9LchzDOVDa<=`(x1Y*QnW`cY z6|=&TrL6VAdHeQ!sKU=rPAR0sqUaR)r~4(t`?CYB(W(;j@gY+49<ol|@rqE!N7k7~ zTcKB%B%Qj6jQ4V1x|^b-?CyTaKMmYwp8<-dx&)5<cgC{ET&DGW{n}e_i-~zikAm{v zDN!U79PQ)gvDr%WIJoD%gEm?7$VSmc?#ZiEv6HP?TtrV==h6kQuA=N7d6<;7^+q}? z3d-xZWPhv8e+T;`es-cDFmdy$o|Xnr)nJ&m5B_Gkt<d-4PxS*vDt31Efv;Yzx@0)9 zY)DGoo<mxyM8ze~>rd4bm23_rpKkua;4I+hbs<i|`}{~Mj^lhtfS(MrX>|e>01OjL zPR_xT(>hm$+M~0lD%UtP)9;)}?P*&jM*x7M-cRFWdrMyzl9yfulg@y8GN}xW0aTi< zk3W^#6RG!W(gTs>#c!!=oDc|63n6Q07@0A}3R)SPqu+Wk`1@HU;^oU-!=NgCK_^sL zKvu0)_NzT*I@IJ8D{O`84wXxW9eKq(E#G{@Q2VLYdNo7C-jRZY{02tZ^~aAJf91YB z+<kt0Y7>UO?Gdcc2<O?o+LVF!OioEjdvlff8u&;P?gSvcK#u}$V`geIpJRHVr>)Jb zlPn{XWhNg-Dm41n;};kTN!25@Ph0rawFYQnMq67kkFPik?h$b6<W+o$x;&SeD|d6K z%Nr||clvg@Q89i{?|nD@W3hH?<ENK(7zA(JT(3*12s)T<m<~n!Lj{%v5dS*E!&14K ztqT0h{L<QOrcpkA{ZHXI04^3##aGg^FqoOk3hwieydntwrX``1FkC3jE<(k|9?+d% z;dp3^iG$+mnrISDqn6Zg>w(K1j^XSEiZE?gKHG71hmKhGLi5OZ<ajQm4<G!;QRcP? z{I1v!`G}D@fV}nTUa$Aza?2mp8h?z8&2_+2RdgFz^+(A&ykg5oA6cWKj0ouHn!A&X z`xp|c8Y@2X^7^+S+pHyexlC3fB_^uqD=t|+VNf@~14FZ?Yh4J9NOOtBd5}OS0}&ij ziP~S<>WmXZ$W49Yd0#0bEq8i}go_S6wmb5H{iJ^|YGDQW7G;HfNGO3#rbW*ynef&! z1~_!>j|_?}{DO|5Q4%;e1g`wiL=EiQj=c`_pHq?iGg;1eFmP#cBkf2!za4JS^O1V{ z*lg}Kn}c6#d-=VKfz>oJh%nRB=Qx~(uL|lj7%A_6I()E`DKk;k1vQt|$LIB%z{?9O z?St)EE)&%A19F6a*6r5^HyQ`B=;=P0kN?8Pr@isFS~|V~85>SyIoWvHGQ){`_{|g6 z)!Esvb=4{YvTpA$?-YOf)RL_V$a>UILmp04(lH=E@D2W^g@h<B0o)2Hy`Ox>a&gA# zvhl0I@xXetSSH`s02EJnA%h1v;wMg_;=IF)qV}$Y=y&;cs+zCprHr<XgiVh(YZ8%@ z-y@CWgIr~z(+Rl2!>PNp=spvZzji@6iSZ@22s$o;jcg50O~PPXJA@18l<0qNNm}<h zaB^~5n)N!Mp)L2$2Bkhj+H%_Be<Fc&d5kjrJ*Yd$CYCFq*sTSQOUDb7av0=RIQB7& z)>eI|eoBa8_1jPseUhxQIxq-D)DIuQ<s)on5nj*B!qS|rT2|7N+A(M>NPpWBWK8aa zF5m}&aRYw|vOoM{8L&&)JUO*iGY#?`39(ScZWS0`IN5W-7!=j#0I{>t<98%33#(S^ zDR2!k{WBXA<6kZ}MTp#<sY`$OXeBt6$S^&N334FqjT`V=J?y~;^N&cfu(EP@7)1`j z1?DMnadC@l-8Tt559p6O{3(lPW|}-JruTP=FS>_iHn-pm1ycQ4{&e%kL_jAR1_q=B zIoRYWVXpH!l+~uVK^m54fsf(hVqFkj>4H`5My|6&%<x4JczVDulCQxNTh<D{f`V`8 znff+)DWO)u@WfjeXGUB8sry*bF;aPX#}%F!c+vfqZPIyZW<cmLU!E24|EQ~z8Mqy% z(EhGq<K=~CpUas}YYkc+9Fj>(BS3)U3v{AIkv1$=^r^AG?#~vKRMDK2IuDW$A0=|_ zn+<ibzi9@%SFOv2qtxtpo0CY)%%==7oN(ulmsgwf4fudw9Z8NIdi?hXoE+gB@HzF5 zcs9h6hXCWibma>a1R3YE_0?7D=g;|aH=FF4z9%PJ7szI5>$L=+@X9>Jh{O5gi<6jm zZh9Af2ga8#{#8Os#vOOz?#0e8Yzk&>@nPR%)f>`NA=Ix_;n|o|^ExT$GLBkIkx5BT z*4Ng)v-#~fsiV6)lF;ef=COA+5(hcUli<B2o4EaDq@ztF_7O8;WWDl-EhvFaO@+R7 z`UWQZI!uSx`&_E<7+Ity(Mn6J(xW8gVtoqd^0KUil=M?Z|M;kG=0V#0Vk)t{ogF*# zSa_nm1QHzD#iO#0tM$f8OpK;wNFu}}fWt_at2IVQ>go?wR3^UHUms+$9QjV=y{FW@ z|6T8VgqnZgkKf3*dJm6M4a4_@n*QK)0ezpdNF_=zPfyF4h_)x1xe*LmiKANG3zB9` zU~>6GV!v&4d}Ju-_^_Pk(J7qpvLYeV6cMwhzRKQEdJ~c7CQ=)Ws#Euu@LeG?ctQk$ zqX*0m$5KGOe$2+gq+92S6o*q{F`{Q_h4sf9g_+qz$5aMweFEdn8^{{(YIb78!$0-g z>o+Is@eHb8Kd;N?fCaZ3FZ(7SS{Ni%w}mk~oFB3>VAGB)z!x$<KTb1Vte}lFU1p;N z@E*{nvy)T(@f;4Q@!&)d*o%K*`V1Ip%U(KC(vRSug<q$@Z(C^5Ln}+8yqek<uKT9R zza=za>*8`2qqjd04d+v#iWw`MfM}0I;p5XT{xZGGS?~Yj-E1GDqsxu4>L^DDFKiv{ z!RdVeZgl0IOdBp&VVtcee(mj!YnpWue$TZ?e)yB#xB;N+5Hx5|P2rd1!02~fz1mp+ zI#q#+2%bOptILaPo5Ncgy*tY_e*bpMm$|#XepkZdSXBs+KLo&7b#<drV@FKy9OqIT zr}3<$5m#fkQe%3GfWyqDL8DYubm&R=m)=sVGAU+YgvQ6WmsLMUK2>|DO7uGwxV^=Q zWOYN!Vnp1B57N@o?w+2ydU`0=)B*?ybBBGBVDo2UW_}KaXYeY4krEDjfYs*)VN77) zum927mxoi`w(Ty25=oJ<l#nSy#;6RL3Xznt49SqOGL>nSh)NPNWzLjHB85T<QN{|H zGtY%+8NYM&eEZ$sx4-=!$Npol<2fFcHQej>yYKtDuJbz2^WJCm#>I*Ay@isUK)#W< zCFT0jQ<+eA!U*9RV{ELB=kF!yPmhe}A`=f&n+;1{ptH82+ygayTwn7DR97v6;`u!t z$*ap%pJJs;qpu$EA+8sDj$G1tWXfHkt0Y6kyE~pz-OQDOn(2}-weXpoGf$klf8K5j zM3K|;t;CGA@XhgVwJ*oJZ{J>cSn~Cop%aVa+41T9`a&!xWmtscw^3U6C<awaZIV!` zwI=y0u1K&aetHxOPTir{Pm<?@taA4YrLL{IGo?6Z)mMXa147uR-d^-HenHxO$-~3> zM;%xaV7|OxcMx&+_g_bQe8>hJ6SB7e^cbL8+J1_;&h<@RSa@m1KfB<8O~c~^1(tPF zGi|5NHK%(CJE^Igg`YL`SIw^+?0!A>V90;%;Obn`t8|*0`{l`vHVwSHW<IdQc`r02 z9(Hf7taO`xWVL)IS3t2hnZ~4vSVGCQb?a7cZn2i0Ri?ojIzFE3N_u&2EPAf4t`{#p z0V@Jg3i>mzLp}5z=@b6g2k`)vaxc$<jm7udO^@5#o9^wLCyf+3@AO@HUh;5gXugUO z|A`s*b-J|LCY@YfFuB_-XMah_MH(X-v9hYI1mA>tMA)!*zv<}eqWktQ_4X3}U)_}( z<7J<Xbxid4SDw3fX=&b`^jsw*tFZ731d=JffGPly$$Ly9z|M#o<?rU>Qya1xa>?v? zzfs5R&JHP;T@v)Gq<zxU>c^U!=La`Q(EF}RKY6A;$k;usKnyQWUgy_NZqe6Yy1(!) zPTJsfy2jV&!npF#brsE{Xsj2E!3B#C6e#HXLFEsI2K=DgsGf8q8m$IbKL_gxFmK#Y zFP@xr=Ac}YXYW^?=!g2p>G<}wuCHk{G`KB_>cl9aQy#iYCpLC)M%Q;)Kk3Mq0=`Tp zq<cuHy6%@ZbxlqQN`%WeKc?Pn_nCtybz#cBPwCp64#z=#ZkI1<A6A?eC`H6T2CJ_Z zhW`^>A8@Tfs{wOXHS*y@4{(0bQfF$$4&(iMd}wmg2i!vtf<7C(3ZWXksif50%)Iln zJ6EzUKFr6YF!^f^%gi>Hd8s!n=^kfnY#xI9o0vE~I{FGK7<4=#AKluFDtvLOv*zVN zG{c3Tm4P5|!0CG-`a<9u>P0hAD*4_oCwxyIv!K65EqjG_z#>kgz}{J!jk}wn8rFma zlbe+E1VRM`vjzULC7D1)Ah;5!*$4z8l|TjliA#xshCt{e9@)_cDWm83mynu)sqWI~ z2_r(XCEl8&rG~N#mL=FJJ@Iwk(oEV3mC%3O@KJq*ID9@*<G`#T_ilgp<S~tc6EoDg zdpuSSK&Z0Bfet#`4~8=OdUU7RgDhtbZu$IPAk2F3*%76+ai!KUYu`gu_+asCOI|c9 z`tXl?^{O3qc)>SSEaw>Po$Ig<Yp9|dZANQ#)B3O>W&rrOX1CHDYRz{lt;uljAAWX@ z*@BTVY-PoV2P@RT$f#Yb6WM@2m|6wD?l&iV<+`b|XTeD_e98!vR(P_-Ot{9;k#cU` zFaNA@hm^xgZRFSFqVpa}1UCFr;)JH%wdTa?=9(EI-?k7V5gWFQk`fb<9a`!7d3z}d zI(z&nq#lP2P}~X%s`Gazi(}Cvc4cEE*li(gPTu1yLcW~py4<D76a>QEUC`_j2()@c z{6&uVU+)3iMT&;HI`Ei@An<^lbnTjaTR&Ss^mGf_=069`USC#QROaAr<tk$&<+#_H zpOBL9XDA?OrMG~Si@C6fA7FrD*0FUz4Uy_fCj*5mT3CQ?+?l_wj`jIg)Bb&7o|Lpd zJCz$077h**w{O!eSfU4voA|+Al}0z>YzgFq!ND8PYS?gqtOGsA>w791_sdOgtqh$> zn`_(MNCX~3-up)8I&OjL1Xgudko71&@ShEE6!cIlE1m$;S4wHS{foAc9Fpg)#DjvK zWMzR5AAK0>5nODp>hl|<I?^jED^Ynv#SX?`SV&0!FR#g_2?E27m9O%H&#oV+rF3*~ zFg<gI-`mK<WPEJwqvauWrHHda%Pm=;r{LyerD<B&Z5Vv^ZI3@gq_T%H7{2giL_jZK zB&#q62CAGigYr^JzqGUzynK0PU&{68%4-*Q&bBGBTT^VIr=Oply?y77H@v_gX8?B# zV$0WC>hix9YoUJ$xUF3VR4@2aKpS%ymJLw<<~J6-+dw;Wl>9Ey!aASLbI)zgP(UFI zY5|zE<KVcPm~i0MQAL%4QTWw&Y2K2o1qQl}k{^1iav#!cTpY*r4e4Fr_Ro^MCfg<Q z_O?*}{SpV8->-ady-8ky;<ci7_<8i!f1M@&cBK;j?Zo=mOYG1`2lZ}9o{nIL4r2es zN_Rp<DCl21<y@1Y3RGogX6D_x@zuSJ1gXFk=`8{kO2BaOFw>wQgkE2fHXFSmqxQn) zb6tHsCs;)wAVcsg*c&+1-ya?m(+(Q)5v1J>k1%hpQ_+Is18Xy2509K)_^<nMb91NY zvF+I50e;Q&OR5UyJ^rDzRQ$(yx1D|EdOZQln9L_qn3|qG;@VdMamUc$pq#w?0z6$n zLIf!Ta|Ps0OSWMY%(<q;U^HF?5Q^VXQBpqE7qpG1uy}C4yqdzcBH6B|>?#O^*qC61 zw26V?_u}Hn9BHO(t^si|#13q3d<(jb8)3$2t7x_UtA^X`7CpiJemTvCUWx!7h)q0F z!JwIK#mA~f#>bQA2W(wxzq7KixP!U7c!`pDVDK4*GKI`Z8=KI{m7nwTkK``>08UrL z`FG_za5YgorJ9+Ufj!9i>pj}aU|*WQ^@+8N0izJ=G83Vwi-!*p^r%P<TzW*EFCbTd z#4W%~2V>Fi$@{>O_QLQ{hOlnj0M&xR<-v_%H4YiODU|pIpIz#cps#Yr22S9owXGme zmVdVE|A$HNf9~-ApI;)YkGvF=*Q{gpVo0WQi+l8Yhe6(e*cSQ~P8r80bvGJ_gYBW& z_#sax&Voe@DWuSP`qhj!+Kz6nFJ;!DP4lvk&|w3wyD+6ug~ItU?ggI5)QrR`{+tjx zZ(YyK%h5z?h?UgfY|b|FQ&J+roUqWo)j+2GjkjmOy+k1TAc@VAe8M#gtv=8NSxWg> zVZs``O%U9$m5J#Wc(V?>boatOm4QvX0&}&kP4@8Nv#%>nUEX|Hz5^B73mU4pteHN0 zdD3{+{pJE~mqMG*(}=|g=43-5j0w<{oZIOA%bdAo8e>!>Dy7~dO&h4GKfHf0HE%3X z5h?}uBM?5F_D|soK*n`C=A*c_lT+@QhrM8&;SF?R#Fd4$_NKxh>(8G*u)X7l_LG-) z@_Uh%sg?}`mz?<S-AbkPk^7>KV?lI-?S~(D`<u6JAuSh>?JRM30R0%67?2m@#Mtao zF+P6L>y0CD&C6LaY?XXt`~vK7OtxKeu6^(`Ldf1F>uiSJU@L2<s*b-Jv%rj~v>5xo zvNvzY#48%bP>LW+HhxjjJokxjl-H9%A{}W=0zdaHE(wTyRpK*m784<qH4wVM#(&_z zWo&WuRc=5&P?LZ=H#A35Nzvoorjv9e!7>KEQm7b8UcExnq8%p{Vi^M!GvXue4umqe zjQus-{su<BBLz>HymW*=oxrvbq}Cud+cZ2PeRp_<+fMfOQ&8{*|4}6+AC`;|Q`#oI z6TJdnIfPDV>%6@*psu1qwpEOe?}W1Cbgv9TH?We^SN*^;#7ujdo2$li5(Kl3gLT5W zjZgtJI+vD#`3s@ZK?Q})f$v~U0VRPry(C;<p!mWLfO!MXsWgQ)+HA-jIGnRpd5mAV zT4M8nT`ZYVdGch+5sM&8_(EEvo_6SfiUng8EZoG%sC)eQwXsyCVURNssGweQ?tHmF zo}a!7msl17vbd;-B}5fk9cvhj+H7GHR}x@`vH~3E*o3RNqK4<LstGVJEiJ)?N8hra zjux6X&kdB7h(A8QzWcOel4rfnvsFW1h@oL^VT?;PifenqH4XAsk!a%n(pL%CO2v=S zSHUL~J^|gJBjM?lH>fA$k3!oE8r3d#_6{sFjNdh;`zg8s)1Ae-e)nc~ypbwB{nmOG zcOf+`&D?uR8YPZ$08Mwfzqy|asB~m?*jtvbi(Qy?OC(Z9XXoNX+YIW$g6e{9X$X?A z6c!$QElyoJ7l&CMqRN9-FEpXtet)hf2zpnAM+5fZ;u2w|J8NbJX$MGl>_Oo>y<jhZ ze9|2EyA$&7tMJz>pfP>v2ocDo%a@OzIB~>#!4aHMTn7zq-^clM%((h7xQHlDkNEt# zZyAFg-a-s4gG!+BsuIVxIfp;HPwY^bi#GSO9BjeV(qE`Mmfiw5OI=MZ>fuB1*wQmI zCFvs~BdtMn8;UkR&ieqQC@<s|v_GMra_KIKO1Kvs?CR<1|Fe&xN?cl68mwSYap63? zG?odm#3b}>BBsL#c_0!USsL9NuF1^Fxr`kh{6pMTd`5QHrzJY^Dsk*UR$;q>EH64Z zoX#`g%QpCq1qnk<!B5eeyjcIDVq*S?HQ2~{yapIN-fHq%Eyl+YV#-<jqMgT5)$X8} z0^bWhN-}T-05$RpYwjn&Bpt^aIl%8D^DvwEAytMGbXC>)zKZK)vg6nRvRf%E7s#Mk zBMCwIllZ6XQ<=CL7zf!Hj+w6G(Y1-(;xl<>f>FnzQ^TBiFa8M`q-oK`C^-9_I&}rC zUGU~1zZ4cRU+cqM-@>%txZtKGTeg8o@2_EmZK&;VtHU)Bl8dp;L^(wJ%SJcasfz+F zT3<z%pG>RA<izFs8_4+u1wVFmtw3XK!!``j!;p9>d(c&AH^GTsKEbE!cSq`@bCg(Y z8SH5wH)h_k;{g3!hiwulWwi?nP(r-7dTt<;>!K!<6dxa7KQafYp-{Lc!o%e7aJ8S@ z!``#{*#>Kb`){m&=VrZ)hWsKOqsYjxLBflC1Dw(G<AN2~Ro9RK@NGMWg=Ar2fhP7` z+x6m$Uxk7!(XhsB!-9=1XSD!<5MLWhYZu7uNC`oq#QHvX@F19Ybl#lQG008Y%>CVA zDF%VfO66g2IkBxnkK#GnWQmoBTm*dN;ukM+va>D8pX}USP*ik5QQ#wxl;2QxCp^^T zJ+x~E6&D?az~ijRfEIXr1Dfv$o1(8OTkP=$V{P&Pc=%NfP^$5V)kGwGIw&UxeuBo3 z%|#>PglYD1=nNJX7Y*C3si8;A$J=Leo+O%=q~i-?Be%6B8-sOsV{b-_yX48`@h^fw zmbki778Qh!aV*9j@0r7a_d)Y6g}Bq&#>Q`<!xlOSB<O}OLVsf0KuldI!(ziK0Wc&` z7z>4hX>kvPaj^M;M5b=72;FI1h_ef>V4>D^GuBZXU2wUzLY^d|%RdXPKW<ylJaev; zpW0~m*8Hz=mN5_l0cj4hg!#<5t3xavHgJK%7Gc<do`f_2xS=W|%R3yA-FLgR_{Dg5 zegrTcvB-pR0n}%>Lu^5pJUtctR$eW!Wcy5Gy;~>6vIUKGy`F<&lG%fGZjrnlWp{*% z`PxIZ;R@DXMj}dfY%%cYrmw=~tAW$m8NqYDzfa2;kSL%2eBcXF%;Y>gtC;VN@Ay8w zNmdiGCd^tA3{qAxR~g`ThlC%N49MZl@j9eE&>BF?5%J)`O_hF#;9x90VcGzx2uy{e zo_%&`&0tU<%ZBakAr{)hO!xJDE5f%&YI1Tib^vIqCad~YHJ=j*yLicG1RyVmZC6x+ z$CWGR_aQji!z6rU?gAr7$s8|N{WERS>AvNiC5J_rEe`4A<>sC(u>Oc|jO-lbbx@bF z8^OtdgDGrjzc0*Tp`CzwuDvbLk`2o=>NvI=KPZ@o(lLX!h9kNg8^=1@fB}=4nW<7Q z+v63GFxrw{50y$}T-^A~OmFZX9aZop-Q7{1iY@E$gy*+Hhg%O~1nM5PAk<=HRWnmA zc)ZZUfRJ$c(k0`3i%Rg}5mNn0L)g1Z@^$^eN!Jpiysyaih07(^q{ylh8YhrYbIg{t zilN7_1>u<|JlMBA@2rBy$=Q0uVt5<$@s`5<9XbtL7ngFV0e*9)9`nfY`N&-RmbJK` zU>jW^x-yd<_66>BjnIbOpE6xqo{rj|&t&>|HoXID9501-2%-%9pDYkIodux>qKqnR z<(j+?aIqjHc`*lV9?G;1duZK;3|0I2BK)OUIMN7hA&_g`z3T)04_MsfLj+=C*tTsu z06-9FDm2jaFarP-OL=`a)H?kkHa23S)^qdopBfuo+|t9zg{>;YotUlQwRcoaAQeN^ zt7ClGcd%HcD$4nLp&*KPB%mH%A0aV@LXWHhMR>$3+F$4gvV3J#3dlFlhl*@rwE3vt z8VVU0yQg;f0S!huQ4$uWi(Kcz1*rKMn7SeHT~+JDvi)ANyTJ(Fh)_X8w`$s-&LwH1 zZD!VmdxA@mmYUjLRe`hssS$k@t_36DTwEUv9Mq>i*<PPC8x}gPhv}QX`j=%tF7uFf zu>3{xfrlQ}%S$gQzU@Vc-GD3L@{{%C3D%b0ogG3wEu3-PLgojku`^Brs~H2+UQnT? z$$BC(sS|lGGRluT6652A9YofJa(wJL3ORwiBb<c;<r*2$P({Ug@m>TOnQ0v9Epg95 z3W1!jx6uBS?|x1OL*?yEP>-!ariD<9?~KRf=CPq6K4v<ojiDfXH!=q$Yx&Z+@DSzX zj~@>b5<Z_m-v$rV3z=nQW<24K6g=}nuKylwu4-+)0#k);A%jR?F@r-(AH2@UP#4(& z$vhsnKUfVpFyl6~OR_N-mcV=mz#VovPwb{v&trU3%V1%Piof*LtF7TH*M-YV$2TXZ zAZtQ|S?;T(;t>)M_ydM}Nbq5*GYjK6&$gX}iaa{n5VwFVQ$Q_gV89Hs88W7Y@Stj7 zZ2TG=Z{*ETd7}=PfQEdp`dvF!$BZg?d_cm9B+3$wn+8Hy<YjJS+n6BSaEGiMkrY)1 z2>UjiAT70#&#w681qmYZOYAKm_>+*VKn#cZhX9Y9Av!)jC;#@+mR(QQy-ppwIu-Zy z0uXMkha$KPIM~7b_2qQ_k<a7ye5L97W7s)%9r1bP(t9M^pf2OJ3MXlQi*-8rE@Sii zirN<MiuzR!QDkV&Kw4PeZyF;9hH{Tv@f^$=P)r~d5%Lkz@7bzz<}voAPsq_bJL7}j zuCIA7+_}31sPvk*cd=s!>f-}~g2!~~)sIr}^T2ni1Kv-dzCg<W7!S&ND-S<S&0wY7 z7XH*&g8HVWI2t4CXBPyZ0Lea7R_@{9xluFVi%c7`7W7O27W6znud$s<QdU+Gl?trw zP?+=UCO*O%W@i2pJmfR`aUV2Lkb+}f7Q+q$xf=^d*}``RGQR2Vj$A$NsoUo`X$aJj z;uj$dKYz|HeKArc0H2!QX8Yz>H76!V)Mt!v4KpcFr603m0&~HX{EbkQNb~Z(Z)lh< zYC8u{@ZCJ{s$e|b-g6l_1uXI5)er6&uF*~i^QPk70wF?%+Wr9<3;yvl<|tGYpxI48 zba|9YQm`PP7nkl$$sc42s)cw8G9)DE`;GFIzU4F~-q;xU&a>Co6O$18E8M<U%h#97 zQIEev5l~e%ptw#7ySyiRrY~hFOg1XAEiYfdSiQc{9H$bLmU`n=0XJ?0ZQ04e$=MnF zhF4d(<E)-uzW@3fhDl3HE5nXl;8~M8(lg`ix@hf6yj>$wQKalxmt><EWz)<Rvv5s> zjS_I!ku~~a??)PBNUHaaqE!m;NJ~mGhw>Q-7#z!CX3D;B=+zNeE%aia2AVzFpfGb2 zh@pLl-683HeZV*9_)k1yV`FQ7wR~G@=ymmf2R%y2$f_Js(gIKX_fYn~2RcU2Qk>A% z26nSAsgX5A72?K<&=Lau##vUSD?;in!)Fk*!C}Oh(I-@xDH}kpd!ddwFMyH|x*O<k zX4~S8M2Yk2K%)>sUT@hz;GhTeo7m&7TrW<41ri=ylq)-f1)t=mhwuIP>8{tI73rCz zw7tG0zP4wcl38N@b8~{?_m{ixm7jZ~DKb3RL}Z=M+iYS3%@KW-cG8ivBy$806RgOh zB59^gfvB*v=0@+D9Siwc&ETJxCca5GNwoV_IKR#h`7KU4V*X*=nK_0b0{8AD_XRq% z)uJ&{`)wgMsh45%or`&U53qqPiiawUSCJEP<35k7joGu#qlCj9NPPGZGUtqyUQA)6 zRqdec>Jj5>BKDmqUmLG?XU^CiS~F4Vy?A`DaK*)0S;eHXGMh7o>&Kbv)a;VuUSD<6 zYZ80-@H8NLf;F`q>OSn5=!b-!i$pg8sg6^7{+`2!6ZSu^131VQg#9kjdEmevobuu& z$J89}0zlhL<9ylOSxxn|@c>{4L6&6As4D%@Fz(hg4K!`|c$>yre;=uDjR4@<aJN4_ z&X0GZ+p_|-ISQ7qnENAxgZOeeIn5I9C{~vZXo4t!@OvG)d})ulImf{VClYvqvX>Ry zZ_9hEnAX!WW?j&d_qdy;q!ZS|(kJck4YdaHFDOazu)!HCbxuuFU0v4HF*O5HTh811 zkoz0Dn4)+*aoN5@-E&&cU3zuG+&^CNGIDuobGzy^v_5*y-i%5}SZ$HP4P*3f2;D@N z@66U4es|^TcBG9QFCCk2z&waWIO~e-wV%n(HU`WWY+Ak-dC}@+l3$%b5pV>+p17cl zjNAHJuY6M5v&`_lznl!_R48cN(L>O#31)(C`<+|8ep;J%xUz<B!qZuPK4-0vI;ap~ zq+Q@5GcX{?bEB1bmxE3`iwHnD;=%>oi@`DDMb~vdd7l{kik18;N_vaBr%y+}7qK#G zgr+{?nogBCCs2{Rg-)DkfBAB1R~IYe^6x6yQ{Mqc3+-+tBs-aYf1c(HE<c?9TJ7#K z{qz2M9#9P5zrPh7xqEbrx)1g;(_Qsvm$14iS`{!Xeu3_zbH;2X?c>VEvJ{H>X?3n- zMm?f3ds1WA?b|}4qVO=)YZU<>7j#cmYiH-YoTg;<sctPECKlERgX5N#kr4sK)VY=H ze+OKLC<%-LCFhb2Qk}m6`x|0i$tL=^)AbJ{ALz>_#A{_|KT<z$=1N09o=iA;lmV<A z%b1D^aPn6TF4#&d#F@e+izzTD=%Qb%YTt1qwl^f3Zr_3)-{|*N1qDCk`KKSJrzaft zei)2J-1gpEd4QhHphC^4Ne;-wL0}!|x2C5L!N&<jc}4;IUX2<im4V4Fl9jyZy;8Y( z;z~;Ad#XQtwiRfPAg2Q5NjD6FL*O=O+96$+x!`ND6<{%!TT(glD2sjYh?#=k7uyE5 zbiqO<x<Jb7#GOxe&<93r&oxqpZi*?_?AZDeYth9I?%G`8p;EvxzTFJ~Rf+dg;^9)L zRT0N{d2kCL0`Ao@W@iIZvbVx%4Q>Fj@$txP#vMbOx`rEkB@SQV_q@c$<WB8{#18|E z!Kqc`E#|7Xx5I&NY;4<^EvnLguS6YBM=P$RB+ioUxsgb?W;+R$7bx*OsW=n|`5X%? z>&VCm2om^&--t<LoRrsYG-gH#Ph>E1CGXRf3#}H&60X30k3t~gFrt6qfgzV3olS3J zBq>cAdl6W`F@g&UY!}*Khm2S=xdJH&&bP{USQ$+V!##fXYz9()vNzRrrKU*f8*gJJ zM?Sb&@nHO$-KpiEE5;Q=MyLwlqToV(WO)Nc+D%cry~)2<;KdzP?llfSkI5Bs!z*V9 z69Bl;A!P3uEi$e7#YLB;GsJVxUuL*ZjAulPrr)MJktX3YPWKaa1Muv2Aa6i7i=4Zc zP%gr9yv^9UVh=7WaV2mV<{Wp%q#a(}sS?O4rNcP~zkzAIMOX&925YR<m6cDQe!k#~ zAW}MRK#!LT>nuVy_)VhAoQ+8d^USu;#aYfvSjT{icFAv~p5Llp-?YbHd7{U^JddDw zRi!3u`!uQB4ugS;GRhz7BGP4_dotHvZLHt8+dm~%PQK-5zuO8n&#u>ioijyQga^Ce zekCFC3t4m%d8BU2oD_p%Qc3G8na(^4@y@-&Qp`s)rs>H|hFM1B-@^?FcfuMo2-NN5 zw<OJvDmOID|B+y7PCU%a-RQ0qlugkwisOg?vHGMCcd1awaMYSNiFWWc#mjD=_WCA= z(V?Kavjzu<Wtbdmrnh7~rKh^aN#{fBxS=qyJg$kircw?P6i<cGk;buk`@A#>?eUUi zH6EsAVLzT9b0qNWfsb9Rs}oNyPElelWNNy$c2T8@i*~Pt{jt3o+q|{;_*?GpF{8C6 zeqphAZuGP}3N;@dJCFDn`AT{yxlHA8aBRRgusiH8onm<};8Ki4S{{L0L0vcLK>$@7 z1v>`|^&j|DTnsXzqo;Rl@CwF99Z{xm-eLmhZT1n;vVN_3T5}HT)oU#Qw5qD>t72+u zmv-JiVJG2#nz;{9cHOnS$W@?4pTA3%p)Ns-0q7o%u<<}0PCoA_snO6mBlp*RWxmNT zHhhX(-+W`VaGo<fT5CQ~F>unF*LQXk(@B*Z*~}K`RNtojG!+xT)?~_^yt%}f%(b|% zq-Y~B+ZLmpbk30IzY5w>n#YvfJq_Bzm~ye#Ea^rf=n-S1e3)wk)0smFWy0r`T(+bT zIB8+XudUkol6k9ATOJcruBk@63<j=z(vS$~coF0axSqlF<eHZkaBiSdF!FlQeAWm6 z8BcgE%{;8jUlbPd0%6>t6DO4om>qisz;{Ph$Ttqr%n#Gi<^R1Osc&&V7S@)feC3&% zd)^dY+S?<=q0~J?RQ%Hy04Y5(hnM!P!`Li=h@jtNbgF<Avw&;xL4ONw=iis_U{Zbw z>_|7MB~}uVUhhi+1$=U5kmG`%vbc<TM^jtdv97M2;!V_u;fnNANrhz3Q)ehlt_z>P zOZ+xxxc&E#9Ge6uC&z)C`lmvIk1Pe}og0$hU6nFT-(FeS4>^SD7gU;9;=vz&0OuGN z67Snqk{n8yWpx{_Vw~X5JDc{1>%>tB0qAk9t;ynVO;vJBkbz+e=h<<(l%?cU5VZs< z)Cr``@~xSSU~TElbbYiJpiw)^Dz&V2mFISF@F=!&7`h)>xy|jiiMrhtOV-xw(9+74 zxC4Q~SmAIhdH0!KI%UjG6AU8Ng}5y~cWkZ6j1rjQUJ|ZrR2-3Fu1fiPP!HMf!#0Ju zMxORcYd1uVjho+xxVLt`>_1wjj@b?iJ6LRxkGsIm3pK>c1}n-2+;=SM(ROq5YfUcY z%_&D81zGL>!qSJG2Q7B;Q6_*pv6teJ<h#J`ciw_dj~J?SWpL&;i!e$cAd6_^pmK}i zv^eB)YPj#`58gjh#o44=Nitqyq%G|*1QHQ(L_vTiKad~Dx+SI=?Dh4C3~?TFi->tp z$e^r4t+D`9CB@bGQ&FFRDg)2QgR!5tcK)du0^z~fQaSqfT6C_MP?s;y!fUVHk^)t3 zcj^Z%XKn^{LN`~naw(}4u1{dF09}PwgNWHHSD+F?@y`dYqI+Ok>lZ`Gk4%(?J}ds- z?RUq1Y9XKuREHv<AnWVIdy*Y#V2NK_tC^ri!=>`i{$XQn{bzakMJp}=9OnwW+dp!` z{s2`+^}U@r>jMXrulyO$DcKZqGj6@dAxNjYrXQwgIBy_a^YIHiCEa9P;oK1yHMPJu zZw@Pb?s@zsHTB)YH=BQ&OR+bWqL=mf@y*rP%XaY4)C_*fv%$A1gFz=z+i|`22DOy^ zHujF4tEho-oQ0MuzRY&IKpo@A63IT`qbW;qa{mNZ;3xZqh0kZAB<wgy=ftla(*#N) zS}uT{qobnEmU*2VN@Y7}a(C;zs)|Z?=<~$G%bmsVs+HH8oO*r{E2a9+GDVWGqJbtN zh^V^3tPaCBBVPD&cVs^^9W`Yo;$fVaLEppN{U2&tX}PyDeW*EQ#1<HMX=lX3KUwUy zlVI^}-<+S}`HnK;hNzvMjD5>v6u)Rs?O<Vn-#v^`ViU^knp2-X72&}Ne`GH{^kuMT zJ35L~&&gbP{(NxKOm=ml^QL)Y7T85X$%KFckmq1QgQC&f8_~1d8@S-4&)pFQyuoOv z%S1+fo!vK)6KTzcqc><+kO`*q0e>(qP_^W*o}-Dnal>xS$E4_Xu-(L&+jn{0f(0s& z`2~Ov5&F`x<Bnzc(n9(z#)F~i>-a3XR~t7I;u`91!^4`D(R)7miO_Uvvm$a>N)(7n z!tx%EZ{92!(+CrgVlJ+^MnTPHKyI2l#U6~XmbEPP3eV7y?7Nd%UpG2>GEO17#4Y8@ z$PNGH+=*P%P;(B^ca-FWJ9*4wibqlsoKk1`{h`iXyA>4js`PWRg8f#)oqIE$m1jH^ ziPHH5RX}J6UeECwnU@|#F9j8G$1kt>53H&Nh5<7@eBRzAKCzTkuS0WAIEyA6)~X3> z4cu&Cd`ve{s_%7osjT0d|26DVT&O!@S^4*&2#Rkll~q%1n(lsFFR?(kdF&na_ZPSD zsr*}5tsG4IrxV*EDfZ1zE0B$ZfJmaj`kX3@VxJx{rTNTLBX}KI;Xu5dJ8}BmXLq?| z4ZQR6j6G?V^~%E3-p!kjYc}~k<E(0$DQ|u0#LRxIvhw}F*VQ8Xqb}t-8euZYOLT$E zyH3mvH+Q_?-Lbvu%PKX^xl31s9qZyBqfnV6tzhXQqutOEbp<v^$6Xm0Z2~Eua#nlt z;*>%dPy7OH1C0{onahx6N6nBNeN1z2wRbYVC>Hr9dxte5nss%6TWt7KqRtE3h;+Wy zl`H4v(;Xbf7JJ8TagVl3l=vm=Qgrrl+;7tKvwwa(hk1wk+0q9~dvfDZ{GFwMVhIm< zpFjC=GMW|%2<m6>*)yo>frKNmQZ0ndG<K;p!WA-4<C-Zk#O{YGYC+uTckfsw`L>OB zFMp^qG*3TxB};?xvKue$t&-TUU)_ES?NmHLBDpPy3=K*hp)oZb?@bD#PuX)c%e1(< ztc~50!Y_NpM@Yoy#gjUwA_}EmARF58GNB1*!!&;We0rB88!>otDm$5od$qQjU1*>d zFz<F;x2>VX$EUV8sl+`^wkLVl;o2@Ug*#62Rl*fDVW&=?7EXPkddaNDYGq++dGFy> zinfz%oF1yzcmVGsUHc)=<@67u$~LnjoGo&5zL5yPzJ*zIZBz8x-|zXXoQ@U8gk{aq zcD)SeQ1XTwoh$vOCGzs(Qp?k)PaK_uA0=>a-jFUM6IB3j!^kAv%oEbS4BtPQV+2*V zA~J2~18C`)u04;74%G>{Q-5@R$HfFkDVKkd<_bT;garykvTyK(5%hroeIdoZFc3RH zaM+@f(nMUy4OBawbYvtXtK|ESVV!c@Myc@w&tC`^7mK|p7Tdn@c<$5pbqsO#6GbuQ zL59Tc?y)sr!_*6Aw3LL~u*d-2Q5pyR@W8e@Lz7oul<e1lhnXsEvibb9ttN68ksaVy zNYd}c!M58rwK0*kDmrn62uG+((91%egM(SG>|`RYwUkQs!P^*3+JaU<edtb<Tppq; z-a|nQLWaKxN&t2#E#3#n9mGrugC~Ls^Q?_}Z+U?!iSu7;qh=rw$kFqE(DwdeS5@e3 zb_F<ut`DdNFgt54a<9^BU1&L5Vp&C#$hC4vTR1~EsVDo?zFlF(uw~CX-@Nl*d@t!* zN|FCb@Oa@ld{e#EH5vfw+gUM;x5f8SbtXb2C}ilh3%6Y#-7;%9alhQm{^HsJ8nkM( zPyvImG+7037tgrU8cd(aU+RW76|ARA?tPN_Ln86*!{rFP_m`MgpQ}FdOgWK)eAX@q zo{b|f7(wI*yYCgl$0qw%TDp(qz$R=){`CI6DowHLb@l(G&W&~F3P|r!9AszOwBg3= z?By*35|nY1EwC`d0XsPE3*}MG`}aS+%3yFhDx)n<Q)`}kbd5tGK%`>!Xd=_ezdfdX zw|=ov=y+sLYNdgCH#{_y{`m3k>nTissfN;eG#%7a0|OE8KQuO$ZJ&i)9G*(#fl0eX zBUIt5j`K>1%lz+mh8rBPUW6ocxqAWkLiq0GCD*3R{&LB~9<NYQq3j$+%7O!T&|m^f z&A8|y%fjn3n!MYd8+{VjMqA5B<l*sjGmS5k|Ii(epPDnwX}d9Y0uVZM|EOBgTLjQh z?JifXG$e}doI6f+Y99lNj9CbJE6_i5)5|h4f=VqyHINbb9NDGdad#rv4d~N<QZ^;H z_FziU(id#z0ROfr<=-)H|2<s!FFxOYqjKTw035}9^z}VT0tYx{uS{Hb5?smN(KwoD zw6j=@33bw@4V3>$Sq-J46Tgo`u3_=nc9NiUez!jZYe}+BGmv&Ts;R?S40I4sPU<`@ zuX=g$^7E6O{2NCaV<q<~D*A(00Ok!@4=*NW+X>gb-kKT>0cLmy!BsZ8bc!IZhI*%x zcx+pUDw+ZonGq2YXjZ*DQCeCGZ>XOrbpPp^gB$r8Vs!vg@C}6}I9t#`xQv1@4c4j& zx(1-4!q*uchYlM;3@><Zi2nj{vMxB}_X<iykReo#9wpnX`m6z$y#nJ^p6^Ho@hxC3 zj{a*$Si3*8Yi)a|l(5_=Dm^QbYoV%1u<IyDUvX1Yqh><CI#JQz56DEp0)~M+{fqA- zLNYzcK?$t9$XMgO3W_M<$=D6ZCsWl_ggDG(S~ul*0XT4i`=NeFLSCM1u85u>sKHO4 zPNGGQX=K94Ncf_Jr!re?mj<T;O$WNbcW6b(jE0~md=A4$K%}Nr1_=OGPwxhP#R+N> x^frMG=tW=Ux)X$K;zs~o<jL}X*>+YGZ!5K3->ldB4o@H)Q#+xWr($vAKLCYOTc-d3 literal 0 HcmV?d00001 diff --git a/rust/pareen/images/seq_ease_in_out.png b/rust/pareen/images/seq_ease_in_out.png new file mode 100644 index 0000000000000000000000000000000000000000..96f847a0e69b106a4f3e1eb117403728b5b2bcd8 GIT binary patch literal 12869 zcmb`uby$>Z*e^POiiI#BUCRMMqy(i)Wsn9%C8VUKJ0wL^h7u7eDNz)M?uJ1rX^`$N z>2BEfxc0ZNbN2O}eZGC|%^%CfI5Y42KF|H!zq$>$uOdrwp6)yXfgq8WL#rVWgaPpX zt7p%^f2~Z83E+=Yj(6oBorNFIv&I+%;va-O`pzS_xTRqaoew6*Cu`If&1A^YXk}&b zuQBOO7Hp&9kts?_4n^S~H#teSx(5_Gn+vN4EHVlTB4cSY)emYX|9t))!G5Z3`h2Ff zTkEYBmTUC}-af%(w}^h;7$T}Z*mG-UDVN$A+M#!xn)Dj&b$+hNMRfs%|GDZ`D*6Hg zKV9M$<T7Y9y5`MCG!lMtlGq-=uV}09@|W?y)BjI@JwE*h;oPz|S+7;$E}&gxGu@sf zZERxFk!>Jd>ax^WO)907DCwoci2ssPq{`o{<6>@_tq)jcJs7dw^COj%^Yj##l$1Qf zMgd>Wp<EP8;`FDBLtH|FR^07|&%xkmUxkOz$zGd}W}YdD>!_CyBGKnqq)mJyI4C?2 zgOSrs;S4zQq|#F)EG!Hz(U)<uU4*-O<qAP~Lk(Q%S=aZlALsB7l-|YK^UuM~3OheP z`3vWT9zMIV+tlpjNMu;4LQ$;cyI9-GlHG;!a&c-lxRbC_l`rt3ZkY?E&oK63ib6%N zp|9&mPNnx@M}GslCc?pyvru1$L457h;ePK^{>Qd#NPC~sVIAqqR8-`QjLH@k*IkF5 zskIBOuw4fy+d^*Z4HoCwQ3V5^WmbQ&jA1=wQEKP*IlsJ#mh=+EVzIlsyQ{5YE06Y% zE>NpWUqjko_#&&F#pUjHdu7D#xIB#_K+gKpV2ePNEVEY)-0Qijp%TZv?kw-e^G261 zU-l9}YEI=_p(gYSt$Y*NRjwh{5ySV%v8h?O<5IU(Y}x(rIYa!)P1c1Fjdg42oBVur z?h@nd4`PEAy%*e7k5i^$1H$MzKhCtqf0uVknr@1^Y0-7<{DliK{3hpbnl{_*YPN|R zRlL4ssXo5Njjgg)Y2ZLPS8ue<uALm~6Oho&HGclZOG!obK0e+$uj1MA<olZ+iZ77p z*oQq%Q|EJ-l3U-{h!KCz?>O7)+-NT$p{&XEx;f!Ua<X34sgX}6dEa?yAY!HR;BCB^ z>+c*R+1S!rLUVJwrH@;^D>%~1%6HLcwX|AW)*Crj*PD9GXk?N-6A}`jf@j(i+bC4U z$NvbceB}(_$u@2IIB~{)q9#Dak}M-#0+*E)v%eMZrisL=CnWT~;36bE-*mXRJ-4>e zd$iv_$}UE)p7GM3$w9n{GfPvSQ{%2u@MJwQY(V)-EJ<W^w49X{*WTV<Ful;*oe__= z?l5#s$nJr5;)6m>Z*Q-o0;A5+i_DjB`;=3&Vp1uXE>8<`k`Es~)L@V-znYqi7W;Az zr+IyTSP4G7fB)&m?}rG~1XoztQ^6C@rc(aOy)&MkpK5eYP-?Q@<!`lX+g8XdZ+)ep z;?co`hLVnqjJW8-nq*4Pt`;AYbtnrBPvsAx)Q)T_w$yD(=h=Q%SEp@>$BSyk)|QJe zIEGMmSBU8(VinN}cC(3P7UaXhMMXjg61rP<_T)%xFzl-1{-*ieyLT^&Bo+xN#hrcq z`i7ZG?a0PN&<&fof`-dTPF~)H)wlaL!eqCVKl@hhPF&!kQhco!&aUd>tb^oxmy*Kn z?d|<0vA3Ei!Q&E-&iB6Kjag~8V&@mZm|`J;02JzO^_w2fSMu^gBRloX233ez)e07r zKoGv4a0os{OikU6;+bA4vZi-hJe#6I8?J~BPQf=Bg|)4Mw-$OipAU~z5?<L1k8PS8 zIRs#Gx>(_$>sI?~&uVhDkxJd}{8qZfHSrezvRn*`Wqh%penrR_<NSmXY0r#rPsut- zNj<Zd{V#EQBxY!5q~$$xXF%@!ZDcmTdZ{CMxP21+h{xZGbzKWAzJR}FwJT6xvD(L! zwYp_v)ubU!tf+2T<<A(*qv+7KkgRJe(FidYns8ZkYAF6Ou$T4qg&n^gdbw}DpkNPf zU_o_D|9$rp&1h$y+Vx;YOC>5KmI;3|HCJ>?tM<1{dU1#3dLAvs;;0FozpoqY3=!Ge zoAl~?QC1%H;9vjSdXp8XxUQ9{-$&?{-8D$Ee~zvZ`TL|1x}~RDKK5tnmYvBnrHzGK zX>IBzu=sp<=y{1jxGF)yL)dNgpVOyLJI%HGrX;whD%8h|II_*QCGxr^_VsDH?=0(n z-N0aIxUZcZ@fj^0$&=u%IJGlk>Gk#j+Jaah0C&T%<}5h{MMFyqcR__d&ik<qIW_l_ z8tCm!!zs$Kf^gT#>VW~ivk87hBf0uMi+p`~#Ny7RiplEt!*?&t&(BZI%#f3j-8MF6 zHET<_%ED5OorS)~KHr|?H~b_^uOiN!2Z>~<I2JuTTCv+sw_aMv%J>p*)_O}a3iBx8 zV~xJsLPk;XbforNdlC^_ctAa~&(OTGp_0-?BH~L<fB0n37KHlxefj4^o#Fb^l)J+# zpS(PzjRG)4P8}!I%N09%qRxL_H5fZMUq*&K!5Y=Cv;X#<p`FadU?%^TQD;jmF$rB? zR)#ilLqpvRGOV$4$&|V;-<%>=$abbNg7cPD-@8oRGJZgZKiz4wf1aUGD&q^5@ly6v zatB){d(6LDPBSwbIR?npV&$ED`}52Otu9=;WZD`h5}Yw%m|~ho`$9gPZSA)rZ$zqq z^}q*8PWAgZ@1yJS(&%IqlN-YO$g;1j*ZU}3b*zCsq=j|jdz8L+47{t)s;#Y!_#a;0 zwmG?O6*zn1;^LUVK$NKHM=I_oPx)iy6ct&nT=Bg?%|k{_UH?@v%5A&fj8Rf{e9MGH zB~IAj;lcKxZHe33XDCs=<~Jnmsg%a113h&id6H#wOV(~&VG0N9O}z4|s=RsLO9KK# zoitFjzAlS>cQiGlTegKp-29@WY1GuzqD7sr^YQWJ+YApRIl6gxgvZ7<4cg+AM=QM) zyXgch&>J%?jG~zs49iPDgLUJDE}`x6J+|g(11mP9EbG;)_PeVFu}j0H&MZ<=iLo}N z4X3fGQ6JGn{gz||ccrDZ3aw}XV~x$s^4!)8P1WsDIXxNL6tuKjUyU#r;p$*o6QKZJ z+(lJ!0+Yk7YidTP&YT%ID)}=$KK}An-S_pmnYcKHo=n{)=96971dnBriOEUDZm2H> zb#*GLps%SZ4wmp<w5%*qw(Y1SbqW$`&tz-6yP)5cDRokAuZ2#YNbO?f(J6ihD|^HE z7uh$}#8!B~7TobxmfAs0T^%_M&9Ax;`n1dWJU}6kh?s4r5jgj?32vVk2c(V(q>hYr z;Dpoo$JPjqdWIJl3%ACL)wc+ZHUs}zS{5?+c?!{!t~EJ_{S*Azj1eAMHx5WuNqPAg zbuU@q^sJvcD<$?hg9SP6U|GzxIodZWih8ADhpGN8qtSF@gv(CF!E)K!_O|KK{?_C3 zf0kXAhZ>fL%LoE(#ey)!;a8*^Ga1Fty40P*U@ky|@ZO(K0UEG65yZRR^-y(ueqL+F zFBTegzU^p2wLfWZpvWu0a*k`)u6a{RD4OSJDp>P=wD^|n&+JXZ%gg)u^Jgmy*i{xj zz8p8nukQt|`fkIqqY8Tc?j6~^5W49@TP1YznZDA3#et(8`Y36%O><I53-Kie#8cw{ z>}C`FFa-mHl7YdMC?4I<_LFsQ<9^@Bs@%Wsvs=w<Rp_(Tt>G3G-E6rz*CFWV)NFdw zG%x1mOTyTll;q?a_7iAABBJ@BlA8tw2GK31zdJjFY;PVM9E87ncl-YRcaAs?WEdSv zlup#?g|xqwrHlpz3o5wnDyop7^nG-AIMHoC@(YfUy{vi_?v&YjkJHmiT~|~VdNLZC zo1q$CM{sK7x^G!rVwMbsRffV|94u-xwUI_5T_?r~T&Us+KYc<-9=7+1qtpaRgNPhE zYietA?8fi*Wa+m_><n#e{16wX;WIqd6v@pw5*ZO8^W|R1>dwyWL~T&3ylxQm**8Y@ zZ|#?dMBvGil9JH(?ul9tn@UMZIXF6Ml{j35YpRHR!(j5ZR!H@|&2cW%=TDuXi<PZ; zP+3_yH9Z{`9sO(Uho3HEJr*9RugujJal9Ud`!Ha$Vlja~c{VngneTLaljSLvizhF= zxx}adyCdPT?exU&8cI$3Ls6rGmIj?njpikRfSjD1Tb4b+H8p4^_qi)j<%kb9<c^Mx zF#?uU_$|2|(ZfQ8MDF}fqaJdOIvS{F_UpH@VnXIj14&$2X-i4;4g~IjXN#~OP76IG zLA5_Cy$)yut!Us_Da8tg{QP<Mn^Mf(wgidzcwIEwA_x0$$yUmX4uGYP3uV|e-jMIH z^{2MbdT_2UhXp`saioGCzNO=fEM6y2^XetTUNy(u^oP^a8509ANpg|yl!=7(Mg#k& zZXFq&rX&u#K)7~De*P^%>w%hY%CW-Uhr%KvBClS(BBP|N%{HhGjQR+qb?>XxF_KL= zcev6=DqV|cXV}b>4Vjaw7Jjy8mh51ADb1Gy0Ny-Q(gG)c%58=g@IG^Db;%UyZmLBe z+5T3ZzL>+Q;|*q`4a~2$e=AB_U0wa_$mG&eMg&NQn!2B_+rN?YX%&1pIgoOjrmSWO zID1JjU~O$Jm|3b)ZDqbckG-Lx;cc7>8a<>LMAcr*7bj|>eNfH(bl>S(&h=Cb4Z0{6 z9&)-ToujPKF3Da5J!J-4WmFeD4m{qZQYAsWVSj6(1i0Sn#>V7is1zF?Uq^pGd`204 z@9tpXw&i3UEqp~fL+SA1?5uxcqJGK2E!&YekL42ohH&<csc_ZbnYv=1zkFdl4-dTD zQe8c8@%VUWdx3+)ZZ^KolpMQ|dgQV}Z(HsQoUrqoa@z940E`^>_GahUiY-pir!q$i zUGsu12X@A3u`g_D%6NT!J@vo|R!{M{M|ED?Kvu?+(<LPUo7jbmw8iUimxei-#h!b) z$P@~|TZ_$S2ZLEUzE>54TTp7fkDu2@&})^saF6<&NDvSZoFXRH*qOI@{r|;S8oN8t zXq{AR?cxKQzT%ETKsPdK*vzof#w4~iSSAK3@ABr-eyf?y`A(~W{D4r&{j)E|tNo4m zV;B_Y@7)WgxnpRED!~=o{?5{u!t=T+Y0`dMav|&7)~|i(F>5jCKPdl?HNb*3Ecll$ zF^aANVv0FjFA7gcP_eP$ft!S*>#)73#m~>L!>EW(uA>nlXYy!vDXS%Hij1h}$-@Xo zNw=}Odw4tqyy4gP_4R$_@86lG!8_u<z`eaZtO!t=m)EOcTd_rDZf>qq;_!NDun7MK z4Ow8|4+sgz*6Npf_1qf<xB}(29Oo1ab#xf)-EY)f0d<j;#sU)Dja2gN1*$%qw#Jw7 zVn9=a+gR0lpJ_<~0NJ~5y_{)T>YZs75Db#j{fg(!77XF%3=J21Bf0$+t)PgzWQ59x z<Kp6);cPverofYsgB2XEu|8}a<Qd@&%O0-3fca6-x>0PU+%GgV^uqf9%%j%4wx0(p zgEqWeuOc`zzI>7iUSF$c&NFSHi(P^vT-7G!Gu%KDTVv7`xwc%kqP~ZQ2J|TW86vO$ zVij<v#U7uNgHbq<2F9#Nr2mk^h0S@R`2CrvNUjIr*XrB>-uiGpJ~3O0Q9QKKbu>a& z<by@Fsz8oXJwF3{YV6TC80qQhK|fqO+-U2}&@NIdSY5Rfz@XI9K6JBYYMU|EsNpKt zVv=p16j)GtY%k{YACLKws@=ao7J1>#P_{f&i09WC^yS|5)m6k8=xNq(>BR1^L;)!Y zFQpC%GDlfCrV~$I`7;YjhIc7vJSq4L;#6>u*=17d6<skHAp+{vZ`zBpjs_0*>P(SX z%fH+^M9?MuXlbzU#}7aJi;Dlgs6G;1?>fTA<1eQ>*&fJwl~LU7T}!Nx<NB0*Zf<V& zha5dM@I1h(P<pJ&jzT#HhmtBqBQ|FGd(_ikkV<B^rd>m|PTPgM0d6pPEb;;O=FInj zp4!c77%z*R(ov96E~qu+NU%It)!9j*s;WCji6npycAz}5x6w1$TH!&@Bww>6()Ail z2ZvFw9e@!G4kra<IT_aYh4Y6tyu$)ONU*xLHV&I<2CB4GQ8%b!|4$n5I%*u~%(GP* z`d*JM4*GJLenN%$4diopRG8}ekYSmiL%|OySU=!Gc^*49K+|MTj*kf3rXw_V7xUVL zJ$G-wm1^7CLN_;^l)tc`P><Dm3f|=35_WC`ByjeXR-S;qM&PzqOFiF(eHe34TUWQ< zZ<ZML@nhpc7H(PduFys!XV%jkO`F~Q>G$riPQ$;#wi6||uDzIU3Tb1RSO$`$8YfIp zrRzHUxIE(-`Rw80q1wSETK-o64BzLWk6$<MARH(x(2u=!u8~HF19i#ayF8c0S!rqM zprX^KP9f}$51+>#X%|@3f|XP3zLm-X{R&Bt&Jxq4_QU=IO6?9jDL@-Sr`RsZZ4hYO z#VXv%k!|czD5Kb!+bSw=|NX$2&oMEbP@#UTST8)>a%&P>j@Q99;wx3@G9Ung*>m*{ zmh%n3g0ZnN83V&&WRQLk24k<p=5}a*P>@ym@{4Rp3(G_+Jdyt;#`9I5Wr6~WhTRu3 zhMaqKlfQoLNRlRIdOn2&t=3``DsiSNn$IZE_91+SaB4Y+?TGhaF~h%?1v!StVIJMm z52Y5x&pPlP-tO_i%HC$DYJaZD1;o+8PVXFGoPFTEkg@$OV)`IzzXU6C`%C^BI?pFV zgsch+EV=^$T-DPx?>u=z2Wks?LAWmw@t^CUdxcvr@K&)W_SxVZPV4y$?~{k6V%G;+ za8t9h_0psgQ;XH0$uBRo6ATpiogDWT7P|43ub+1lIbx5K8=h!int^r6F{;00W(Gtb zn@z2sk2|V4cWv!gIY#(b5}SQ*rY=xHKd?I@q>koQ4_B*6TU)OJ(qs}dbCn6&Cb0EV zVXs542JSgNJzbk5?T;5F+)whK{(5(X3m$uDNXN_!EXkblg$q7MX-5N<UfGT*InU8U zA=1i*;Mw3&$8n~4yl~K_+Db6bW$DSiw+!-td(Z!1Q-ES+<>kRMd{FDTX7+-BD7fj$ z#9P=Gf}cNsx-FN?3fqk#%3N1W!A1hyavcA8`gp$=M@~s8Gus-!w~=_#4AL(?Mhi|j z!pFyL&*Y$hQ{#3oCz@f_AV+uw8v;(EdX}Ct*qaNzSt&p;5kRxqRN{WYGEb&Id|U>w zaMS15b9-e})x|}y2-+nOw_rvws_=%Xc0RM#ICEF)h4+R=M)SjEMbh=e3v=u6%<7ps z@=8j<)%CEf+^uoGv9@m(q#P7zZ`K_@5<#_2EG#JM=`q2ny~rfq*KHryh^06M-Xa-2 zy&|j$e5*mj`>V~dLZM$|LnEL3%=+fBRL~m@M#0sCS-km1LN7?h%&e-WMh?&xA-N1C z3cSm$<RIU?^P2*g9CEsy$>$EYi&p1T3JZ4KqD3h)v)DLM5%;<C<fdn4a;*mi1#L%~ zfs&+6UhZZC!5Wn{S{8lFoV-oyMEuU3JHW{KY=(qEX42d=z1S4R>$=OJD!IqXDC(50 zz0jQ&Rb5Ys#HM{y&KqTY={&LIbKD8Ue7Op%JOLmBuGlQdK4PGdTq7f36V|<DTxfpy zI0)3lH<kGFRo@?cQ5a?l4GFo*%K8deYp!AK`S;=B0dL>B%!vaJzsMlm&H;q;l&H%q zBumu@Zd4=djn4_a4Q_Z>2UQSLO{5VRC+ZxCmv#8^1kttegP7TFZ9?XypI^)k1Hv+w zC6t6jh5D_4!9wfFxsERgu(*f6jijhDyKl}B-1hV=4+ADMbtdzKel(NgA-=SD@VqiU zz6Bfxt^8+5eb2SiuV26J@q7N9?`ajHE||93YiHOWkoaM>dQk|y5Fr^7c?T}ExP0?j z`#)+AAId8z@biDfV1{l#y6m)Yrp%?k=l%PqllOotO*#g2sY3$`qT)6@++C~1ErXJR z?VSmeWxB$})oeZ<9GQ@C30ybb#-Wt&F5s{8=vOM;zkmO0Tb_9*8-BY$B0cNNz5;%? z$yk+dSDHp!&KL?sc>6A4zJ&=+&{Nph^rgRlQW)BT+dom>3M4V9<nBK}Uz03*Gh3Ud z_}NwB5TBlJ%$O`c%ypTlIVbA6tTVsSoFFl1s%>X?0}djVvS=C%oYY9}D{N=fGjcO@ zE6y`}A}H8s5*3pLp<^?E!m_uw2V4>p3sp2RH6{GuA(LgC@$4iJ;QXKK*8}I~o;}Hb z=G$P5;^q!{_39L8o7=#i;K3#UQk)m*Vbw;wsC&{0^7;$6d$fT*>i$+mH_qM<r=g?! zv&bNDx1j;oq?Q{A^cg$3(w9@cytMnD`5vWe^*m~up3mU;0<r&U0sYoweX7CDUHy6a zdyHI2_vh1~3Qmp^t(WE=?5;{j-)h*^Q7g;P$5py5-j$zOIH9wj7+@8+SI``;sg1{= zcj4g=XC$v$MtHr+PM;M3Z2F&Ukk&XYtPwTGe)WDEKig?~aW}gd$6JAz;viK?-w&6w zg&wa=HLO+<wdZ5kN|LwTfgOvutv-#}qR;rQPLGx6y28qO>P4dWKDOBl$dp+g?j|r( z3P#2j!0!Gc+r;Ynwe@urFK;L$2p`@uiVehlsfc7G3lpsx9Tg4O?o=JjYKtad_OY^J z!wyq%X;wvYYg-lKHh(LEBnQ)H>gA(uMP<Wt(6`t{L}G%2gZXzv0RNxrvXlTNRFUxM zV9suoT+n=9zh&UDGwOruv7rhRwf=c3T8jDiZ!60S)Ia-j+VfK2_Fevf5?s@1xY`mY zlDEr~P}Wgxe${DZgz-g%$IkoMSWDMLxD3&1?C4?LeA_mqz^CQ?<`fJjOk5(V=BJk6 z=Pyg7Hb^9=K)}_DjG~tz>nX78m6Map#+sR$;!k{)=+D8J|L{y0^p;h@US8-WJwwV< zCTSA~4v+;seD;?4?^kdmL^n(tFTZ6FQPa5@+k*G`p(%A1+Z#<xOjwPa05nZbPs==d z^g-Err2IK68`}UQvcjPHjG>`nwk8+I(HjtyuzPC&bs5w@CNyd3D|||j{0-!Na$);T z@KrswtqN_174F?Tqg(1^u)8{b>hx*gL;7}e?N^l8D1a|?W$BO3RDgGw*RLZUp(4-0 z!J!l<99C6z8_toErX~&8C7YX@6NAmi$H%O!tit($KnnV(kpy5O2Lx;{7}Ztz65Vf7 ze@}^Zu^{(>T6kqWSjY#R8$hT9e2O5;rGWw?xc^Onqu=#QBNbwhIx&biyn?JkO#rY7 z@18<*@^#)EjZXcMYtn;k+dkaE-S84^jxn-g3;WnwJ@GbAO0;3VGerc@5u|uNPzZ1* zDjMs>9cM0rbu|ep4XOp~u7KcRr-9NIaG<~x&UKhp2(h6;a$FIhTrSUBbXPdvM_Ybf zjYnT!A2g<%l9I9AbJD7wyQS|n-vZ-@R3qNKnN9g)I~X1*Ob^j$n{-*y-Oj|Pjh7F$ z#8zH4MJ3%K0u#3D(O=T;T<6#pp`R$+5zT-q@crx1-xQY^-?uVy;npGqyF5xZneAct zHP|7AM<1LEB65{tO&RAvqhcY|3==i`LAa1FY(gtRm&u!bRn6?*SL>^Z$jQfMVwZZe zbn|!yUH9{IO3)VMfAa$N)2Dy@{yM$Vna^QtN*6Ah{0$@ye7*Y4a<=F5y@QLigj!m4 zQ%J1*U#$@Da&oj<Lt)ZeWbJpy4`PR{w%ZQ5&Y3N9&z^OkUthN&7@JRtT^sQjQ&Ifz zjNcl-eM9n)tS7@SoPDV`Jp9THGL`t;k(X3E#yM5M{R_&4tX>=)jF+wa!!lX7BH>UI zb#kQttMv`F-uL75d-wm|OM<_D0TL7PTEMb#g!lS+$rA?mEq<O@VGV;Tabm=yo<!P3 zPl#_kPCl3ZeP`tF>P)D6dZrU;F}ZzOytlS#J~vF?lf~<Ep3$B=j~2K_yqLk#lZBIB zPK{uZA~6ytHT-29;<Hvl=w*OHjqS~5Sl;n)qlr@Wj!Yz#4gDF(y*eGWT1(xdU7IOr z6`e*Q{5L)cBfmaytu=-yR!~b;w&<CGPGu=8FX<(wd=)G2)lbf39lk`FDvt~A_>IN8 z>cszi{@1xby!+rwUrC<x*j=sdMc+tn=f^qM&tJ$OdKt;(Tj7xr@?0+=?crmk+mJ6! z-PZ*D9LLI&>6gYL5`nJ=q?o7I_@M3hR`2+9RMV(yE5m|i?Rgr>p=i$n`8xy*VrTTd zOpYXUaZJBEb>mYF-8ZxKIG98)gIoWs^GvydlWJvUN<)+1>Z)h&>vT2?a$RGvmYNf# z5`k!k1F&-!4c!HT1vX%<F@K3@0tWN6f?wF^Ouj8C?r14w2Y2GV;G>%GYNjPkNLx8P ziuhzNbSrZ8hhNX^sgnbJjg-`A@1uWMYe=y6sR#se6+a8GKU%g@*y{5=?I&DsqM%pL zXr?(vQ=z$dZ`gG-2RabQc;E%78#mftL&lw)9L91*xX(Qz8x?Lb>Iv;%oA`0Qwf50o zuv*vIOx+7uY_>hi)KszP<Jx?4BWuJ;X_M&P3V8|*_SC)niNGJ^<m7I9(@{B^TuL8r z1+3ss5}KQpB6)Nb<mApmM+yd#IX<a9WS;68COQTECjCi4V>e$i!_h(Y+GKmu%h33E zNs^@jtt>eiG>y<{#mCcAn)Fq)H$PcwSRQ|l%Hl=e`<ZXvV@7QG#E*vdTvp}zfB?Js z_s$NBpL<<Lf0RF8EgKany5j`NW$F88pZ*_=&Ml>e>^p>55M0g;7V&bbr~d;G1a!c^ zmB0=H&DmE}NNMr?xi5>OxWwS#i=c*d7-bvD7_2JZZ;yDa;!d>Jb{Itn@7$3(ao;fQ zRsLn2Q#IX`ZREez4}WG1R-TLqJipHJ4`R8zQ?y0Nn03fo?AEif0VNqJS5V{&1OIg6 z<4`a(>i{qaAha)4u24;s#EY1&u1ByDj27fU$1>rGE8e8-fyH@o3sJ_od3oUaU!Ryy z86Wr0Xv-1#?7H$BSGm9gY+--&-MdsNQVq>#@k;J(OuIWcgMR)6a>s%@v#mV=E&inb zm0lSdH@&=c<NwsHTQt2}RJb4h?9=~>8a`69%icOa6s7;fRz{<?C!?n~q&dM_S9(8+ zpFcfhY;E#!lR>hiS31rX!fLea;7MgoK^H6CwWEEv6TFZtQGKuk5?!a#Gv?F#9d<Oh zU-P|f16-Nf#D2sYD<u}4AFCi(HRCrj{G><?HnhOYf)Ge`;)U%AU(8H52i^Z4%x|d# zKK<tmN$$vuZVq8xsK4W^PW<=%VHf({JuUhlP}Y*{bCZ*Q9!+rJ)AHwD-7D@}e<Dg$ z8=ja_s-N=#fvTBnERVGYxC1Y{dE5xRG7dT`K>+IEJ9b1z2hui~q_Kj|GZVGBC#_i| z<>k$<-smOChX>uVcK3w~`~GHe@9eZ}o9cU8>NHO-b+j4Y;sO|ya*d8)diwFUtw+O0 z7C+U%<7`Myd$?tv1QeG6hbR?&DaUd8bkDq}O5&R=oQw0vk7?JbT`aB(1e`g4_AJ7i zsrDJ%<Z}&%rr&vHs@seGeu;^R$}LSzL1eQ269IAsjg5^cAt8;#4$&Wemc1``k3Ec- z+1Gb)cW+mjczR_`%(|ZD&C-!>(;qZ3F|ptJ^Eh@1rVDoW_xT|Pp-xWKg9UlC8HKB8 z>XvDZaKqGwF;f8rjUZ)1p?J)4s<01xu$F~ZIeG;_fiFQDiDnrdY`5o`?R8GFvTNHq z?<|-N3*CCu)D!@TC*60@;jHZJ;bCD9W+eSdna@;#RRhG1j#3%C*5>N!(h<jvnVy;K zUsDa4O{~tbk<&Nt?<@}!fI#LgDcR=TupO;rd@*`BBjo1($0rmfgo@vkk`a;or>qMB z7Oa7jIDUS{5FVoo(EDB}6NzR@i7?E6*tb{--UQ``7auT&5)c&R_*e<vixlTt7XP72 z;sh=YKHUKC^}9Y!5>hMnYu7NmmAfyc{Vy5t$KWS`{LYX#I6s2VV5_@WORHeQhepa< zJWV6(TXuG~n+GVSXdzoB$jlrKMDbrO5WwRM{Q(kkaB(hy-!}n{ud6folSm{SX#B)e zUy?5;-aaw>8{xz6f6)_#68sB07z_y>@c-+7z3SkMz)Iq|(9zDQ8F+8tDfwn+-#BxT zrs|=pgp8eCcG_e>7cE$yX2*wn_=dH(Xk}9}O$Ab)R?LNqExaMg2;$`MjoG%SGF1Q- z;KVL-yC^jgh~uESLD5zB>ie`nx!#CTDu<jf^X<%yjN!#^@87?t5piIRiHQ*`fWYMa zhYx6QD|Fu}CEGmz?=pY;IJIJ<RqS8b$o^e#-JMEVAIc0f0ws>K{Lj~?6qvQq*UjJ> z%^wAVz}t%$u;Gt^*wF4lYHDW$TF7bY7m~?si~uaoxlx>y&+$g0`CuXUsOJU=1)I_s zczQD<9xGQRB;vvMD}#`D5a45MI!gb{)8EPR;wOh2z<$GEKBm}yQchmppgEe4OTThx z+);dQDja4Pe%NGaWa(XE)<9oh{uRceQ|fdsya5gCiPgwr5_4I!b56gGzmHo$x~X{e zlwixjRh9yxSz7?3MfNa3-~ffB=X2x?sqXU6WYlunr%x|jmImxM=N^EaR121dLbs6h z02<<Kg1$m)`i_o{2vP5jh?@UC7M3zi71pSztXx}N?FWr<3^K9zR~6khJ7g`7BG53= zbQA0=Be2;J;yXi*U+K^<+S~6ZxJ{fxNbXHhRBr@yQT~TB;Bvy(^Z)h*Y8t>K_`&Ep z<cq`M(!K}-JrN3zi&Fv*2m#fdTc+Bv4W$n!)<9D*tkf7z3IZ~ycF1<h4la99g};A) zvFR#G?SVU6M@w=_3K1BMN|4+xEqB65z(f`)lek>0p!LNDHnk{tyQ24qH}-!=^8+Pz zx`|iw*YfV1de;7l0DK^0Q_~SUr(}%qH&kNn`vMAf72#WxRg3+3)`h2uiEo;<GJp%C zJwF+Mx%?n}&NT2_c}d6PSJ2VJVq(l)0~wIm(m+ot#h&X2TATk>B_AfLs{A>YgH8sz z_3_ETXLs1)0yA=K(DijKF0HghGkd6sSFd09Tj9|H6A*9(l3uWP!9|ybQ^)CSg+#Vj zQ5I2<ks;vhtCSp2c5e;6m)rXO%Phw@BR5gTg9N2%c0&_}5ddYt*o0w(2?a(CbTS6E zgo2!$uu4_x=+TTMXs;k@-pB!cbX*!dKNMO2;>ty^i)%M{mLW+tucr(vm4TZzAFY%? zu&XAp3JLWt<68jujzk|y)ci1ylsn9F%FVw)1by*EVj?rQcA?XsJ$eC)Q;&|dWRYPg znAB3jx7~$}`%uuiWo_F_g9Hnt-#}drXIr71<vYymS4JvKj{P#`@^(QMpHWqvJ$BaV zdhzDX8_}&|l$t9{?cD^;_w`|l%I*F%;mg*&Iu@vIGZ>|bR$>F^?B3nGFO?;3-VBFX z69j(NCndoHx&uC${q(!(=-<721F<flX6z52qXqr17GP)-KrIoDfmppI9xJEY@gE&s zDqQw014m{|iz&DZ^$@6;4;Ax)c_X-TGB|qt24Z#ya)3#cJo;a0W*;-ux*{~SmoHyV zXh7C%pE0%lS+>IBg0k=A8@v&&p7EqMkdhOhJo^!oLQ50$+-MQ98Y!oJ0d{0ZhPF`e z8A^M{JhL`a*mH2*+rKJOzaeE-xqqJw@3Dc){?nKr35F&>g7t{Drl#g0QLSOlht#kC zKXV6T?bmsr<HG!A63{%s!4}h-FpO7=v+2*h3OjrAhE_K$xHJ<Jljrf?EHp7cyyMZ; zT{AZJ6o!EsI#s2Xe!fCEO9OX?W?%%yT)JLGX_wQj|Edo6HAkskWs1~4rg%JrA8hg1 zS)Ts+`T~?Zl9KW@ScPdu0bL>~s);i|#X<D6r#|LPxkxAWpD6LJygJmxW&G3`ez5lp z4DP_s|0b^epP}Oa-B0ss5R)P8*+;z(xM2e2lUAN7@bKzxdo-Hi8z-Q(N<J74c#t~Y zOpz)Pg*m|p{P;5V6Xc+YU@NS4$TI(Zxd5iWkYVRb?ZyeEj(1rAc(@%CkB<%}XJ=*6 z=vTfCXmlL3Aq<8>Mn(pfefkd#BwXJhbp>}<r{re<1$$uDKM64Zk)NMGQ3|;_*jB`2 zFhMZ^!wt8dwZDJ?qYt93VJx!6E=zQf4$gjywV8lzOxG=ogp-P-qN;m$MfxlW3HMe4 z48G=?wJ~MFAQK$SlGy|g!1w7HAeTl^-3$;f0?{F7Vp0L%vR;Smq6v7(^pjF2?CEP8 z-RW9+6JBO5A593js^5_0iKsw7;eIh4t}2-WI(2knWkvswFeKcOV4McQ8Hf{ctaIqq zb?uK!gVKt`vyB+%wTaqDSfIZ0w$9GZ_1(!(Z4fc>C-kf+8+i?=ADgirZCjK5&3P`p z@@T*TyPaWId{8^#j<=KF7CFtUK}J{)vn=yK4uFV&S@kY5vJU3Jo2`q6>j2UBAcuSo zXU4qa^J!vICgUG3PcIIYgrB2eTMhL&tez>xhc>UN^{N1U4XWSZ{c-3IF#I+NUxI&k zoTS%B0n47T@$m=Kqtr-y$IN9lFqVU0Zb1vt1P)ZwPzp+eoS?~Lr9vas1t>Pq7+tOx z5D3)#E_JqS3Y9w6v`B>Dmr|edaNM6+p&RIq5nqfFRTU8Rli`^mT3XsjFyAgb#ph|9 z8`eQ`j9)qI(CCXj1(q5R;%HiE-@c6iv448(aBl<8l%Nep4Vd+18{C4p9mZq8vRCW| zxelW>Gmy*8Ld6w`m_b?u0Tj_wc#76T7ntq9J579jaDbOamaTzRto7nKz`+OzO+qjp zr7qiYa&Z|$^Fmx?mMm}H*q-kse!(c_@<=it(<R~#g;?_xSZ!|Ea9bPc3+O#CNYymV zE+kasHVEXn7^DvZ0Lug}sL2(HZ?aclKyFu}zrP<qJ@WY_Boco#4TWuOSFU#xz^Lz9 zFYH>aexmqua@Dq6TXKjg2;L<o`cyk&<c9H;pB!n~{^`zIF95@5s9+u?7S!_HHW<cz zbYD4Mkd2Eg7;Xa*OTdjny~R63YInB&bQAr<$=OsZuduPXIaPVEOf&}M7(%hC+5mJ7 z<G*L~^Vc2xycMuoow#rKv<XQ@Rt0B~R>IwBjr`?REiNj&iwY=qfjm&o`V0P6UNU)Y zJ}56Qms3%}Usxqx6iG|l0A7?1V+br^u5kl7gvI!z`WaMPsQCKX&J@*ID6TPA+yNt? za55bE<mBXH;Hh1NcrQ`y4*Wv`{NWUFoWTzd!jK3W7Omx@fTQ!RDp6TO80?2FG=eSh zgqgdqe}EprydXc|DfQLMVFNYQY7R`NA$Pq136(Kq<v{-ln3<VvD)&r9T^2Qy=AF^# k|Din0{%y&1C&XM;t)dU7-$cN_3qi=ssGu|NK7IM$0Opx&ivR!s literal 0 HcmV?d00001 diff --git a/rust/pareen/src/anim.rs b/rust/pareen/src/anim.rs new file mode 100644 index 0000000000..c695a238e6 --- /dev/null +++ b/rust/pareen/src/anim.rs @@ -0,0 +1,841 @@ +use core::ops::{Add, Mul, RangeInclusive, Sub}; + +#[cfg(any(feature = "std", feature = "libm"))] +use num_traits::Float; +use num_traits::{float::FloatCore, Num, One, Zero}; + +use crate::{constant, fun, id}; + +/// A `Fun` represents anything that maps from some type `T` to another +/// type `V`. +/// +/// `T` usually stands for time and `V` for some value that is parameterized by +/// time. +/// +/// ## Implementation details +/// The only reason that we define this trait instead of just using `Fn(T) -> V` +/// is so that the library works in stable rust. Having this type allows us to +/// implement e.g. `std::ops::Add` for [`Anim<F>`](struct.Anim.html) where +/// `F: Fun`. Without this trait, it becomes difficult (impossible?) to provide +/// a name for `Add::Output`, unless you have the unstable feature +/// `type_alias_impl_trait` or `fn_traits`. +/// +/// In contrast to `std::ops::FnOnce`, both input _and_ output are associated +/// types of `Fun`. The main reason is that this makes types smaller for the +/// user of the library. I have not observed any downsides to this yet. +pub trait Fun { + /// The function's input type. Usually time. + type T; + + /// The function's output type. + type V; + + /// Evaluate the function at time `t`. + fn eval(&self, t: Self::T) -> Self::V; +} + +impl<'a, F> Fun for &'a F +where + F: Fun, +{ + type T = F::T; + type V = F::V; + + fn eval(&self, t: Self::T) -> Self::V { + (*self).eval(t) + } +} + +/// `Anim` is the main type provided by pareen. It is a wrapper around any type +/// implementing [`Fun`](trait.Fun.html). +/// +/// `Anim` provides methods that transform or compose animations, allowing +/// complex animations to be created out of simple pieces. +#[derive(Clone, Debug)] +pub struct Anim<F>(pub F); + +impl<F> Anim<F> +where + F: Fun, +{ + /// Evaluate the animation at time `t`. + pub fn eval(&self, t: F::T) -> F::V { + self.0.eval(t) + } + + /// Transform an animation so that it applies a given function to its + /// values. + /// + /// # Example + /// + /// Turn `(2.0 * t)` into `(2.0 * t).sqrt() + 2.0 * t`: + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// let anim = pareen::prop(2.0f32).map(|value| value.sqrt() + value); + /// + /// assert_approx_eq!(anim.eval(1.0), 2.0f32.sqrt() + 2.0); + /// ``` + pub fn map<W>(self, f: impl Fn(F::V) -> W) -> Anim<impl Fun<T = F::T, V = W>> { + self.map_anim(fun(f)) + } + + /// Transform an animation so that it modifies time according to the given + /// function before evaluating the animation. + /// + /// # Example + /// Run an animation two times slower: + /// ``` + /// let anim = pareen::cubic(&[1.0, 1.0, 1.0, 1.0]); + /// let slower_anim = anim.map_time(|t: f32| t / 2.0); + /// ``` + pub fn map_time<S>(self, f: impl Fn(S) -> F::T) -> Anim<impl Fun<T = S, V = F::V>> { + fun(f).map_anim(self) + } + + /// Converts from `Anim<F>` to `Anim<&F>`. + pub fn as_ref(&self) -> Anim<&F> { + Anim(&self.0) + } + + pub fn map_anim<W, G, A>(self, anim: A) -> Anim<impl Fun<T = F::T, V = W>> + where + G: Fun<T = F::V, V = W>, + A: Into<Anim<G>>, + { + // Nested closures result in exponential compilation time increase, and we + // expect map_anim to be used often. Thus, we avoid using `pareen::fun` here. + // For reference: https://github.com/rust-lang/rust/issues/72408 + Anim(MapClosure(self.0, anim.into().0)) + } + + pub fn map_time_anim<S, G, A>(self, anim: A) -> Anim<impl Fun<T = S, V = F::V>> + where + G: Fun<T = S, V = F::T>, + A: Into<Anim<G>>, + { + anim.into().map_anim(self) + } + + pub fn into_fn(self) -> impl Fn(F::T) -> F::V { + move |t| self.eval(t) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Clone + Mul<Output = F::T>, +{ + pub fn scale_time(self, t_scale: F::T) -> Anim<impl Fun<T = F::T, V = F::V>> { + self.map_time(move |t| t * t_scale.clone()) + } +} + +impl<F> Fun for Option<F> +where + F: Fun, +{ + type T = F::T; + type V = Option<F::V>; + + fn eval(&self, t: F::T) -> Option<F::V> { + self.as_ref().map(|f| f.eval(t)) + } +} + +#[doc(hidden)] +#[derive(Debug, Clone)] +pub struct MapClosure<F, G>(F, G); + +impl<F, G> Fun for MapClosure<F, G> +where + F: Fun, + G: Fun<T = F::V>, +{ + type T = F::T; + type V = G::V; + + fn eval(&self, t: F::T) -> G::V { + self.1.eval(self.0.eval(t)) + } +} + +impl<T, X, Y, F> Anim<F> +where + F: Fun<T = T, V = (X, Y)>, +{ + pub fn fst(self) -> Anim<impl Fun<T = F::T, V = X>> { + self.map(|(x, _)| x) + } + + pub fn snd(self) -> Anim<impl Fun<T = F::T, V = Y>> { + self.map(|(_, y)| y) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Clone, +{ + /// Combine two animations into one, yielding an animation having pairs as + /// the values. + pub fn zip<G, A>(self, other: A) -> Anim<impl Fun<T = F::T, V = (F::V, G::V)>> + where + G: Fun<T = F::T>, + A: Into<Anim<G>>, + { + // Nested closures result in exponential compilation time increase, and we + // expect zip to be used frequently. Thus, we avoid using `pareen::fun` here. + // For reference: https://github.com/rust-lang/rust/issues/72408 + Anim(ZipClosure(self.0, other.into().0)) + } + + pub fn bind<W, G>(self, f: impl Fn(F::V) -> Anim<G>) -> Anim<impl Fun<T = F::T, V = W>> + where + G: Fun<T = F::T, V = W>, + { + fun(move |t: F::T| f(self.eval(t.clone())).eval(t)) + } +} + +impl<'a, T, V, F> Anim<F> +where + V: 'a + Copy, + F: Fun<T = T, V = &'a V> + 'a, +{ + pub fn copied(self) -> Anim<impl Fun<T = T, V = V> + 'a> { + self.map(|x| *x) + } +} + +impl<'a, T, V, F> Anim<F> +where + V: 'a + Clone, + F: Fun<T = T, V = &'a V> + 'a, +{ + pub fn cloned(self) -> Anim<impl Fun<T = T, V = V> + 'a> { + self.map(|x| x.clone()) + } +} + +#[doc(hidden)] +#[derive(Debug, Clone)] +pub struct ZipClosure<F, G>(F, G); + +impl<F, G> Fun for ZipClosure<F, G> +where + F: Fun, + F::T: Clone, + G: Fun<T = F::T>, +{ + type T = F::T; + type V = (F::V, G::V); + + fn eval(&self, t: F::T) -> Self::V { + (self.0.eval(t.clone()), self.1.eval(t)) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Copy + Sub<Output = F::T>, +{ + /// Shift an animation in time, so that it is moved to the right by `t_delay`. + pub fn shift_time(self, t_delay: F::T) -> Anim<impl Fun<T = F::T, V = F::V>> { + (id::<F::T, F::T>() - t_delay).map_anim(self) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Clone + PartialOrd, +{ + /// Concatenate `self` with another animation in time, using `self` until + /// time `self_end` (non-inclusive), and then switching to `next`. + /// + /// # Examples + /// Switch from one constant value to another: + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// let anim = pareen::constant(1.0f32).switch(0.5f32, 2.0); + /// + /// assert_approx_eq!(anim.eval(0.0), 1.0); + /// assert_approx_eq!(anim.eval(0.5), 2.0); + /// assert_approx_eq!(anim.eval(42.0), 2.0); + /// ``` + /// + /// Piecewise combinations of functions: + /// ``` + /// let cubic_1 = pareen::cubic(&[4.4034, 0.0, -4.5455e-2, 0.0]); + /// let cubic_2 = pareen::cubic(&[-1.2642e1, 2.0455e1, -8.1364, 1.0909]); + /// let cubic_3 = pareen::cubic(&[1.6477e1, -4.9432e1, 4.7773e1, -1.3818e1]); + /// + /// // Use cubic_1 for [0.0, 0.4), cubic_2 for [0.4, 0.8) and + /// // cubic_3 for [0.8, ..). + /// let anim = cubic_1.switch(0.4, cubic_2).switch(0.8, cubic_3); + /// ``` + pub fn switch<G, A>(self, self_end: F::T, next: A) -> Anim<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + A: Into<Anim<G>>, + { + // Nested closures result in exponential compilation time increase, and we + // expect switch to be used frequently. Thus, we avoid using `pareen::fun` here. + // For reference: https://github.com/rust-lang/rust/issues/72408 + cond(switch_cond(self_end), self, next) + } + + /// Play `self` in time range `range`, and `surround` outside of the time range. + /// + /// # Examples + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// let anim = pareen::constant(10.0f32).surround(2.0..=5.0, 20.0); + /// + /// assert_approx_eq!(anim.eval(0.0), 20.0); + /// assert_approx_eq!(anim.eval(2.0), 10.0); + /// assert_approx_eq!(anim.eval(4.0), 10.0); + /// assert_approx_eq!(anim.eval(5.0), 10.0); + /// assert_approx_eq!(anim.eval(6.0), 20.0); + /// ``` + pub fn surround<G, A>( + self, + range: RangeInclusive<F::T>, + surround: A, + ) -> Anim<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + A: Into<Anim<G>>, + { + // Nested closures result in exponential compilation time increase, and we + // expect surround to be used frequently. Thus, we avoid using `pareen::fun` here. + // For reference: https://github.com/rust-lang/rust/issues/72408 + cond(surround_cond(range), self, surround) + } +} + +fn switch_cond<T: PartialOrd>(self_end: T) -> Anim<impl Fun<T = T, V = bool>> { + fun(move |t| t < self_end) +} + +fn surround_cond<T: PartialOrd>(range: RangeInclusive<T>) -> Anim<impl Fun<T = T, V = bool>> { + fun(move |t| range.contains(&t)) +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Clone + PartialOrd, + F::V: Clone, +{ + /// Play `self` until time `self_end`, then always return the value of + /// `self` at time `self_end`. + pub fn hold(self, self_end: F::T) -> Anim<impl Fun<T = F::T, V = F::V>> { + let end_value = self.eval(self_end.clone()); + + self.switch(self_end, constant(end_value)) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Copy + PartialOrd + Sub<Output = F::T>, +{ + /// Play two animations in sequence, first playing `self` until time + /// `self_end` (non-inclusive), and then switching to `next`. Note that + /// `next` will see time starting at zero once it plays. + /// + /// # Example + /// Stay at value `5.0` for ten seconds, then increase value proportionally: + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// let anim_1 = pareen::constant(5.0f32); + /// let anim_2 = pareen::prop(2.0f32) + 5.0; + /// let anim = anim_1.seq(10.0, anim_2); + /// + /// assert_approx_eq!(anim.eval(0.0), 5.0); + /// assert_approx_eq!(anim.eval(10.0), 5.0); + /// assert_approx_eq!(anim.eval(11.0), 7.0); + /// ``` + pub fn seq<G, A>(self, self_end: F::T, next: A) -> Anim<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + A: Into<Anim<G>>, + { + self.switch(self_end.clone(), next.into().shift_time(self_end)) + } + + pub fn seq_continue<G, A, H>( + self, + self_end: F::T, + next_fn: H, + ) -> Anim<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + A: Into<Anim<G>>, + H: Fn(F::V) -> A, + { + let next = next_fn(self.eval(self_end.clone())).into(); + + self.seq(self_end, next) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Clone + Sub<Output = F::T>, +{ + /// Play an animation backwards, starting at time `end`. + /// + /// # Example + /// + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// let anim = pareen::prop(2.0f32).backwards(1.0); + /// + /// assert_approx_eq!(anim.eval(0.0f32), 2.0); + /// assert_approx_eq!(anim.eval(1.0f32), 0.0); + /// ``` + pub fn backwards(self, end: F::T) -> Anim<impl Fun<T = F::T, V = F::V>> { + (constant(end) - id()).map_anim(self) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Copy, + F::V: Copy + Num, +{ + /// Given animation values in `[0.0 .. 1.0]`, this function transforms the + /// values so that they are in `[min .. max]`. + /// + /// # Example + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// let min = -3.0f32; + /// let max = 10.0; + /// let anim = pareen::id().scale_min_max(min, max); + /// + /// assert_approx_eq!(anim.eval(0.0f32), min); + /// assert_approx_eq!(anim.eval(1.0f32), max); + /// ``` + pub fn scale_min_max(self, min: F::V, max: F::V) -> Anim<impl Fun<T = F::T, V = F::V>> { + self * (max.clone() - min) + min + } +} + +#[cfg(any(feature = "std", feature = "libm"))] +impl<F> Anim<F> +where + F: Fun, + F::V: Float, +{ + /// Apply `Float::sin` to the animation values. + pub fn sin(self) -> Anim<impl Fun<T = F::T, V = F::V>> { + self.map(Float::sin) + } + + /// Apply `Float::cos` to the animation values. + pub fn cos(self) -> Anim<impl Fun<T = F::T, V = F::V>> { + self.map(Float::cos) + } + + /// Apply `Float::powf` to the animation values. + pub fn powf(self, e: F::V) -> Anim<impl Fun<T = F::T, V = F::V>> { + self.map(move |v| v.powf(e)) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::V: FloatCore, +{ + /// Apply `FloatCore::abs` to the animation values. + pub fn abs(self) -> Anim<impl Fun<T = F::T, V = F::V>> { + self.map(FloatCore::abs) + } + + /// Apply `FloatCore::powi` to the animation values. + pub fn powi(self, n: i32) -> Anim<impl Fun<T = F::T, V = F::V>> { + self.map(move |v| v.powi(n)) + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Copy + FloatCore, +{ + /// Transform an animation in time, so that its time `[0 .. 1]` is shifted + /// and scaled into the given `range`. + /// + /// In other words, this function can both delay and speed up or slow down a + /// given animation. + /// + /// # Example + /// + /// Go from zero to 2π in half a second: + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// // From zero to 2π in one second + /// let angle = pareen::circle::<f32, f32>(); + /// + /// // From zero to 2π in time range [0.5 .. 1.0] + /// let anim = angle.squeeze(0.5..=1.0); + /// + /// assert_approx_eq!(anim.eval(0.5), 0.0); + /// assert_approx_eq!(anim.eval(1.0), std::f32::consts::PI * 2.0); + /// ``` + pub fn squeeze(self, range: RangeInclusive<F::T>) -> Anim<impl Fun<T = F::T, V = F::V>> { + let time_shift = *range.start(); + let time_scale = F::T::one() / (*range.end() - *range.start()); + + self.map_time(move |t| (t - time_shift) * time_scale) + } + + /// Transform an animation in time, so that its time `[0 .. 1]` is shifted + /// and scaled into the given `range`. + /// + /// In other words, this function can both delay and speed up or slow down a + /// given animation. + /// + /// For time outside of the given `range`, the `surround` animation is used + /// instead. + /// + /// # Example + /// + /// Go from zero to 2π in half a second: + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// // From zero to 2π in one second + /// let angle = pareen::circle(); + /// + /// // From zero to 2π in time range [0.5 .. 1.0] + /// let anim = angle.squeeze_and_surround(0.5..=1.0, 42.0); + /// + /// assert_approx_eq!(anim.eval(0.0f32), 42.0f32); + /// assert_approx_eq!(anim.eval(0.5), 0.0); + /// assert_approx_eq!(anim.eval(1.0), std::f32::consts::PI * 2.0); + /// assert_approx_eq!(anim.eval(1.1), 42.0); + /// ``` + pub fn squeeze_and_surround<G, A>( + self, + range: RangeInclusive<F::T>, + surround: A, + ) -> Anim<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + A: Into<Anim<G>>, + { + self.squeeze(range.clone()).surround(range, surround) + } + + /// Play two animations in sequence, first playing `self` until time + /// `self_end` (non-inclusive), and then switching to `next`. The animations + /// are squeezed in time so that they fit into `[0 .. 1]` together. + /// + /// `self` is played in time `[0 .. self_end)`, and then `next` is played + /// in time [self_end .. 1]`. + pub fn seq_squeeze<G, A>(self, self_end: F::T, next: A) -> Anim<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + A: Into<Anim<G>>, + { + let first = self.squeeze(Zero::zero()..=self_end); + let second = next.into().squeeze(self_end..=One::one()); + + first.switch(self_end, second) + } + + /// Repeat an animation forever. + pub fn repeat(self, period: F::T) -> Anim<impl Fun<T = F::T, V = F::V>> { + self.map_time(move |t: F::T| (t * period.recip()).fract() * period) + } +} + +impl<W, F> Anim<F> +where + F: Fun, + F::T: Copy + Mul<W, Output = W>, + F::V: Copy + Add<W, Output = F::V> + Sub<Output = W>, +{ + /// Linearly interpolate between two animations, starting at time zero and + /// finishing at time one. + /// + /// # Examples + /// + /// Linearly interpolate between two constant values: + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// let anim = pareen::constant(5.0f32).lerp(10.0); + /// + /// assert_approx_eq!(anim.eval(0.0f32), 5.0); + /// assert_approx_eq!(anim.eval(0.5), 7.5); + /// assert_approx_eq!(anim.eval(1.0), 10.0); + /// assert_approx_eq!(anim.eval(2.0), 15.0); + /// ``` + #[cfg_attr(any(feature = "std", feature = "libm"), doc = r##" +It is also possible to linearly interpolate between two non-constant +animations: +``` +let anim = pareen::circle().sin().lerp(pareen::circle().cos()); +let value: f32 = anim.eval(0.5f32); +``` + "##)] + pub fn lerp<G, A>(self, other: A) -> Anim<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + A: Into<Anim<G>>, + { + let other = other.into(); + + fun(move |t| { + let a = self.eval(t); + let b = other.eval(t); + + let delta = b - a; + + a + t * delta + }) + } +} + +impl<V, F> Anim<F> +where + F: Fun<V = Option<V>>, + F::T: Clone, +{ + /// Unwrap an animation of optional values. + /// + /// At any time, returns the animation value if it is not `None`, or the + /// given `default` value otherwise. + /// + /// # Examples + /// + /// ``` + /// let anim1 = pareen::constant(Some(42)).unwrap_or(-1); + /// assert_eq!(anim1.eval(2), 42); + /// assert_eq!(anim1.eval(3), 42); + /// ``` + /// + /// ``` + /// let cond = pareen::fun(|t| t % 2 == 0); + /// let anim1 = pareen::cond(cond, Some(42), None).unwrap_or(-1); + /// assert_eq!(anim1.eval(2), 42); + /// assert_eq!(anim1.eval(3), -1); + /// ``` + pub fn unwrap_or<G, A>(self, default: A) -> Anim<impl Fun<T = F::T, V = V>> + where + G: Fun<T = F::T, V = V>, + A: Into<Anim<G>>, + { + self.zip(default.into()) + .map(|(v, default)| v.unwrap_or(default)) + } + + /// Applies a function to the contained value (if any), or returns the + /// provided default (if not). + /// + /// Note that the function `f` itself returns an animation. + /// + /// # Example + /// + /// Animate a player's position offset if it is moving: + /// ``` + /// # use assert_approx_eq::assert_approx_eq; + /// fn my_offset_anim( + /// move_dir: Option<f32>, + /// ) -> pareen::Anim<impl pareen::Fun<T = f32, V = f32>> { + /// let move_speed = 2.0f32; + /// + /// pareen::constant(move_dir).map_or( + /// 0.0, + /// move |move_dir| pareen::prop(move_dir) * move_speed, + /// ) + /// } + /// + /// let move_anim = my_offset_anim(Some(1.0)); + /// let stay_anim = my_offset_anim(None); + /// + /// assert_approx_eq!(move_anim.eval(0.5), 1.0); + /// assert_approx_eq!(stay_anim.eval(0.5), 0.0); + /// ``` + pub fn map_or<W, G, H, A>( + self, + default: A, + f: impl Fn(V) -> Anim<H>, + ) -> Anim<impl Fun<T = F::T, V = W>> + where + G: Fun<T = F::T, V = W>, + H: Fun<T = F::T, V = W>, + A: Into<Anim<G>>, + { + let default = default.into(); + + //self.bind(move |v| v.map_or(default, f)) + + fun(move |t: F::T| { + self.eval(t.clone()) + .map_or_else(|| default.eval(t.clone()), |v| f(v).eval(t.clone())) + }) + } +} + +/// Return the value of one of two animations depending on a condition. +/// +/// This allows returning animations of different types conditionally. +/// +/// Note that the condition `cond` may either be a value `true` and `false`, or +/// it may itself be a dynamic animation of type `bool`. +/// +/// For dynamic conditions, in many cases it suffices to use either +/// [`Anim::switch`](struct.Anim.html#method.switch) or +/// [`Anim::seq`](struct.Anim.html#method.seq) instead of this function. +/// +/// # Examples +/// ## Constant conditions +/// +/// The following example does _not_ compile, because the branches have +/// different types: +/// ```compile_fail +/// let cond = true; +/// let anim = if cond { pareen::constant(1) } else { pareen::id() }; +/// ``` +/// +/// However, this does compile: +/// ``` +/// let cond = true; +/// let anim = pareen::cond(cond, 1, pareen::id()); +/// +/// assert_eq!(anim.eval(2), 1); +/// ``` +/// +/// ## Dynamic conditions +/// +/// ``` +/// let cond = pareen::fun(|t| t * t <= 4); +/// let anim_1 = 1; +/// let anim_2 = pareen::id(); +/// let anim = pareen::cond(cond, anim_1, anim_2); +/// +/// assert_eq!(anim.eval(1), 1); // 1 * 1 <= 4 +/// assert_eq!(anim.eval(2), 1); // 2 * 2 <= 4 +/// assert_eq!(anim.eval(3), 3); // 3 * 3 > 4 +/// ``` +pub fn cond<F, G, H, Cond, A, B>(cond: Cond, a: A, b: B) -> Anim<impl Fun<T = F::T, V = G::V>> +where + F::T: Clone, + F: Fun<V = bool>, + G: Fun<T = F::T>, + H: Fun<T = F::T, V = G::V>, + Cond: Into<Anim<F>>, + A: Into<Anim<G>>, + B: Into<Anim<H>>, +{ + // Nested closures result in exponential compilation time increase, and we + // expect cond to be used often. Thus, we avoid using `pareen::fun` here. + // For reference: https://github.com/rust-lang/rust/issues/72408 + Anim(CondClosure(cond.into().0, a.into().0, b.into().0)) +} + +#[doc(hidden)] +#[derive(Debug, Clone)] +pub struct CondClosure<F, G, H>(F, G, H); + +impl<F, G, H> Fun for CondClosure<F, G, H> +where + F::T: Clone, + F: Fun<V = bool>, + G: Fun<T = F::T>, + H: Fun<T = F::T, V = G::V>, +{ + type T = F::T; + type V = G::V; + + fn eval(&self, t: F::T) -> G::V { + if self.0.eval(t.clone()) { + self.1.eval(t) + } else { + self.2.eval(t) + } + } +} + +/// Linearly interpolate between two animations, starting at time zero and +/// finishing at time one. +/// +/// This is a wrapper around [`Anim::lerp`](struct.Anim.html#method.lerp) for +/// convenience, allowing automatic conversion into [`Anim`](struct.Anim.html) +/// for both `a` and `b`. +/// +/// # Example +/// +/// Linearly interpolate between two constant values: +/// +/// ``` +/// # use assert_approx_eq::assert_approx_eq; +/// let anim = pareen::lerp(5.0f32, 10.0); +/// +/// assert_approx_eq!(anim.eval(0.0f32), 5.0); +/// assert_approx_eq!(anim.eval(0.5), 7.5); +/// assert_approx_eq!(anim.eval(1.0), 10.0); +/// assert_approx_eq!(anim.eval(2.0), 15.0); +/// ``` +pub fn lerp<T, V, W, F, G, A, B>(a: A, b: B) -> Anim<impl Fun<T = T, V = V>> +where + T: Copy + Mul<W, Output = W>, + V: Copy + Add<W, Output = V> + Sub<Output = W>, + F: Fun<T = T, V = V>, + G: Fun<T = T, V = V>, + A: Into<Anim<F>>, + B: Into<Anim<G>>, +{ + a.into().lerp(b.into()) +} + +/// Build an animation that depends on matching some expression. +/// +/// Importantly, this macro allows returning animations of a different type in +/// each match arm, which is not possible with a normal `match` expression. +/// +/// # Example +/// ``` +/// # use assert_approx_eq::assert_approx_eq; +/// enum MyPlayerState { +/// Standing, +/// Running, +/// Jumping, +/// } +/// +/// fn my_anim(state: MyPlayerState) -> pareen::Anim<impl pareen::Fun<T = f64, V = f64>> { +/// pareen::anim_match!(state; +/// MyPlayerState::Standing => pareen::constant(0.0), +/// MyPlayerState::Running => pareen::prop(1.0), +/// MyPlayerState::Jumping => pareen::id().powi(2), +/// ) +/// } +/// +/// assert_approx_eq!(my_anim(MyPlayerState::Standing).eval(2.0), 0.0); +/// assert_approx_eq!(my_anim(MyPlayerState::Running).eval(2.0), 2.0); +/// assert_approx_eq!(my_anim(MyPlayerState::Jumping).eval(2.0), 4.0); +/// ``` +#[macro_export] +macro_rules! anim_match { + ( + $expr:expr; + $($pat:pat => $value:expr $(,)?)* + ) => { + $crate::fun(move |t| match $expr { + $( + $pat => ($crate::Anim::from($value)).eval(t), + )* + }) + } +} diff --git a/rust/pareen/src/anim_box.rs b/rust/pareen/src/anim_box.rs new file mode 100644 index 0000000000..6a0461a087 --- /dev/null +++ b/rust/pareen/src/anim_box.rs @@ -0,0 +1,51 @@ +use core::ops::{Deref, Sub}; +extern crate alloc; +use alloc::boxed::Box; + +use crate::{Anim, Fun}; + +pub type AnimBox<T, V> = Anim<Box<dyn Fun<T = T, V = V>>>; + +impl<F> Anim<F> +where + F: Fun + 'static, +{ + /// Returns a boxed version of this animation. + /// + /// This may be used to reduce the compilation time of deeply nested + /// animations. + pub fn into_box(self) -> AnimBox<F::T, F::V> { + Anim(Box::new(self.0)) + } + + pub fn into_box_fn(self) -> Box<dyn Fn(F::T) -> F::V> { + Box::new(self.into_fn()) + } +} + +// TODO: We need to get rid of the 'static requirements. +impl<F> Anim<F> +where + F: Fun + 'static, + F::T: Copy + PartialOrd + Sub<Output = F::T> + 'static, + F::V: 'static, +{ + pub fn seq_box<G, A>(self, self_end: F::T, next: A) -> AnimBox<F::T, F::V> + where + G: Fun<T = F::T, V = F::V> + 'static, + A: Into<Anim<G>>, + { + self.into_box() + .seq(self_end, next.into().into_box()) + .into_box() + } +} + +impl<'a, T, V> Fun for Box<dyn Fun<T = T, V = V>> { + type T = T; + type V = V; + + fn eval(&self, t: Self::T) -> Self::V { + self.deref().eval(t) + } +} diff --git a/rust/pareen/src/anim_with_dur.rs b/rust/pareen/src/anim_with_dur.rs new file mode 100644 index 0000000000..42a5a71a48 --- /dev/null +++ b/rust/pareen/src/anim_with_dur.rs @@ -0,0 +1,191 @@ +use core::ops::{Add, Div, Mul, Sub}; + +use num_traits::{float::FloatCore, One}; + +use crate::{Anim, Fun}; + +/// An `Anim` together with the duration that it is intended to be played for. +/// +/// Explicitly carrying the duration around makes it easier to sequentially +/// compose animations in some places. +#[derive(Clone, Debug)] +pub struct AnimWithDur<F: Fun>(pub Anim<F>, pub F::T); + +impl<F> Anim<F> +where + F: Fun, +{ + /// Tag this animation with the duration that it is intended to be played + /// for. + /// + /// Note that using this tagging is completely optional, but it may + /// make it easier to combine animations sometimes. + pub fn dur(self, t: F::T) -> AnimWithDur<F> { + AnimWithDur(self, t) + } +} + +impl<'a, V> From<&'a [V]> for AnimWithDur<SliceClosure<'a, V>> +where + V: Clone, +{ + fn from(slice: &'a [V]) -> Self { + AnimWithDur(Anim(SliceClosure(slice)), slice.len()) + } +} + +pub fn slice<'a, V>(slice: &'a [V]) -> AnimWithDur<impl Fun<T = usize, V = V> + 'a> +where + V: Clone + 'a, +{ + slice.into() +} + +#[doc(hidden)] +pub struct SliceClosure<'a, V>(&'a [V]); + +impl<'a, V> Fun for SliceClosure<'a, V> +where + V: Clone, +{ + type T = usize; + type V = V; + + fn eval(&self, t: Self::T) -> Self::V { + self.0[t].clone() + } +} + +impl<F> Anim<F> +where + F: Fun, + F::T: Clone + FloatCore, +{ + pub fn scale_to_dur(self, dur: F::T) -> AnimWithDur<impl Fun<T = F::T, V = F::V>> { + self.scale_time(F::T::one() / dur).dur(dur) + } +} + +impl<F> AnimWithDur<F> +where + F: Fun, + F::T: Clone, +{ + pub fn as_ref(&self) -> AnimWithDur<&F> { + AnimWithDur(self.0.as_ref(), self.1.clone()) + } +} + +impl<F> AnimWithDur<F> +where + F: Fun, +{ + pub fn transform<G, H>(self, h: H) -> AnimWithDur<G> + where + G: Fun<T = F::T>, + H: FnOnce(Anim<F>) -> Anim<G>, + { + AnimWithDur(h(self.0), self.1) + } + + pub fn map<W>(self, f: impl Fn(F::V) -> W) -> AnimWithDur<impl Fun<T = F::T, V = W>> { + self.transform(move |anim| anim.map(f)) + } + + pub fn dur(self, t: F::T) -> AnimWithDur<F> { + AnimWithDur(self.0, t) + } +} + +impl<'a, T, X, Y, F> AnimWithDur<F> +where + T: 'a + Clone, + X: 'a, + Y: 'a, + F: Fun<T = T, V = (X, Y)>, +{ + pub fn unzip( + &'a self, + ) -> ( + AnimWithDur<impl Fun<T = F::T, V = X> + 'a>, + AnimWithDur<impl Fun<T = F::T, V = Y> + 'a>, + ) { + ( + self.as_ref().transform(|anim| anim.fst()), + self.as_ref().transform(|anim| anim.snd()), + ) + } +} + +impl<F> AnimWithDur<F> +where + F: Fun, + F::T: Copy + PartialOrd + Sub<Output = F::T>, +{ + pub fn seq<G>(self, next: Anim<G>) -> Anim<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + { + self.0.seq(self.1, next) + } +} + +impl<F> AnimWithDur<F> +where + F: Fun, + F::T: Copy + PartialOrd + Sub<Output = F::T> + Add<Output = F::T>, +{ + pub fn seq_with_dur<G>(self, next: AnimWithDur<G>) -> AnimWithDur<impl Fun<T = F::T, V = F::V>> + where + G: Fun<T = F::T, V = F::V>, + { + let dur = self.1.clone() + next.1; + AnimWithDur(self.seq(next.0), dur) + } +} + +impl<F> AnimWithDur<F> +where + F: Fun, + F::T: Clone + FloatCore, +{ + pub fn repeat(self) -> Anim<impl Fun<T = F::T, V = F::V>> { + self.0.repeat(self.1) + } +} + +impl<F> AnimWithDur<F> +where + F: Fun, + F::T: Clone + Sub<Output = F::T>, +{ + pub fn backwards(self) -> AnimWithDur<impl Fun<T = F::T, V = F::V>> { + AnimWithDur(self.0.backwards(self.1.clone()), self.1) + } +} + +impl<F> AnimWithDur<F> +where + F: Fun, + F::T: Clone + Mul<Output = F::T> + Div<Output = F::T>, +{ + pub fn scale_time(self, t_scale: F::T) -> AnimWithDur<impl Fun<T = F::T, V = F::V>> { + AnimWithDur(self.0.scale_time(t_scale.clone()), self.1 / t_scale) + } +} + +#[macro_export] +macro_rules! seq_with_dur { + ( + $expr:expr $(,)? + ) => { + $expr + }; + + ( + $head:expr, + $($tail:expr $(,)?)+ + ) => { + $head.seq_with_dur($crate::seq_with_dur!($($tail,)*)) + } +} diff --git a/rust/pareen/src/arithmetic.rs b/rust/pareen/src/arithmetic.rs new file mode 100644 index 0000000000..ff952938f9 --- /dev/null +++ b/rust/pareen/src/arithmetic.rs @@ -0,0 +1,169 @@ +use core::ops::{Add, Mul, Neg, Sub}; + +use crate::{primitives::ConstantClosure, Anim, Fun}; + +impl<F, G> Add<Anim<G>> for Anim<F> +where + F: Fun, + G: Fun<T = F::T>, + F::V: Add<G::V>, +{ + type Output = Anim<AddClosure<F, G>>; + + fn add(self, rhs: Anim<G>) -> Self::Output { + Anim(AddClosure(self.0, rhs.0)) + } +} + +impl<W, F> Add<W> for Anim<F> +where + W: Copy, + F: Fun, + F::V: Add<W>, +{ + type Output = Anim<AddClosure<F, ConstantClosure<F::T, W>>>; + + fn add(self, rhs: W) -> Self::Output { + Anim(AddClosure(self.0, ConstantClosure::from(rhs))) + } +} + +impl<F, G> Sub<Anim<G>> for Anim<F> +where + F: Fun, + G: Fun<T = F::T>, + F::V: Sub<G::V>, +{ + type Output = Anim<SubClosure<F, G>>; + + fn sub(self, rhs: Anim<G>) -> Self::Output { + Anim(SubClosure(self.0, rhs.0)) + } +} + +impl<W, F> Sub<W> for Anim<F> +where + W: Copy, + F: Fun, + F::T: Copy, + F::V: Sub<W>, +{ + type Output = Anim<SubClosure<F, ConstantClosure<F::T, W>>>; + + fn sub(self, rhs: W) -> Self::Output { + Anim(SubClosure(self.0, ConstantClosure::from(rhs))) + } +} + +impl<F, G> Mul<Anim<G>> for Anim<F> +where + F: Fun, + G: Fun<T = F::T>, + F::T: Copy, + F::V: Mul<G::V>, +{ + type Output = Anim<MulClosure<F, G>>; + + fn mul(self, rhs: Anim<G>) -> Self::Output { + Anim(MulClosure(self.0, rhs.0)) + } +} + +impl<W, F> Mul<W> for Anim<F> +where + W: Copy, + F: Fun, + F::T: Copy, + F::V: Mul<W>, +{ + type Output = Anim<MulClosure<F, ConstantClosure<F::T, W>>>; + + fn mul(self, rhs: W) -> Self::Output { + Anim(MulClosure(self.0, ConstantClosure::from(rhs))) + } +} + +impl<V, F> Neg for Anim<F> +where + V: Copy, + F: Fun<V = V>, +{ + type Output = Anim<NegClosure<F>>; + + fn neg(self) -> Self::Output { + Anim(NegClosure(self.0)) + } +} + +#[doc(hidden)] +#[derive(Debug, Clone)] +pub struct AddClosure<F, G>(F, G); + +impl<F, G> Fun for AddClosure<F, G> +where + F: Fun, + G: Fun<T = F::T>, + F::T: Clone, + F::V: Add<G::V>, +{ + type T = F::T; + type V = <F::V as Add<G::V>>::Output; + + fn eval(&self, t: F::T) -> Self::V { + self.0.eval(t.clone()) + self.1.eval(t) + } +} + +#[doc(hidden)] +#[derive(Debug, Clone)] +pub struct SubClosure<F, G>(F, G); + +impl<F, G> Fun for SubClosure<F, G> +where + F: Fun, + G: Fun<T = F::T>, + F::T: Clone, + F::V: Sub<G::V>, +{ + type T = F::T; + type V = <F::V as Sub<G::V>>::Output; + + fn eval(&self, t: F::T) -> Self::V { + self.0.eval(t.clone()) - self.1.eval(t) + } +} + +#[doc(hidden)] +#[derive(Debug, Clone)] +pub struct MulClosure<F, G>(F, G); + +impl<F, G> Fun for MulClosure<F, G> +where + F: Fun, + G: Fun<T = F::T>, + F::T: Copy, + F::V: Mul<G::V>, +{ + type T = F::T; + type V = <F::V as Mul<G::V>>::Output; + + fn eval(&self, t: F::T) -> Self::V { + self.0.eval(t) * self.1.eval(t) + } +} + +#[doc(hidden)] +pub struct NegClosure<F>(F); + +impl<F> Fun for NegClosure<F> +where + F: Fun, + F::V: Neg, +{ + type T = F::T; + type V = <F::V as Neg>::Output; + + fn eval(&self, t: F::T) -> Self::V { + -self.0.eval(t) + } +} diff --git a/rust/pareen/src/easer_combinators.rs b/rust/pareen/src/easer_combinators.rs new file mode 100644 index 0000000000..5c4312bb89 --- /dev/null +++ b/rust/pareen/src/easer_combinators.rs @@ -0,0 +1,233 @@ +use num_traits::Float; + +use easer::functions::Easing; + +use crate::{fun, Anim, Fun}; + +impl<V, F> Anim<F> +where + V: Float, + F: Fun<T = V, V = V>, +{ + fn seq_ease<G, H, A>( + self, + self_end: V, + ease: impl Fn(V, V, V) -> Anim<G>, + ease_duration: V, + next: A, + ) -> Anim<impl Fun<T = V, V = V>> + where + G: Fun<T = V, V = V>, + H: Fun<T = V, V = V>, + A: Into<Anim<H>>, + { + let next = next.into(); + + let ease_start_value = self.eval(self_end); + let ease_end_value = next.eval(V::zero()); + let ease_delta = ease_end_value - ease_start_value; + let ease = ease(ease_start_value, ease_delta, ease_duration); + + self.seq(self_end, ease).seq(self_end + ease_duration, next) + } + + /// Play two animations in sequence, transitioning between them with an + /// easing-in function from + /// [`easer`](https://docs.rs/easer/0.2.1/easer/index.html). + /// + /// This is only available when enabling the `easer` feature for `pareen`. + /// + /// The values of `self` at `self_end` and of `next` at time zero are used + /// to determine the parameters of the easing function. + /// + /// Note that, as with [`seq`](struct.Anim.html#method.seq), the `next` + /// animation will see time starting at zero once it plays. + /// + /// # Arguments + /// + /// * `self_end` - Time at which the `self` animation is to stop. + /// * `_easing` - A struct implementing + /// [`easer::functions::Easing`](https://docs.rs/easer/0.2.1/easer/functions/trait.Easing.html). + /// This determines the easing function that will be used for the + /// transition. It is passed as a parameter here to simplify type + /// inference. + /// * `ease_duration` - The amount of time to use for transitioning to `next`. + /// * `next` - The animation to play after transitioning. + /// + /// # Example + /// + /// See [`seq_ease_in_out`](struct.Anim.html#method.seq_ease_in_out) for an example. + pub fn seq_ease_in<E, G, A>( + self, + self_end: V, + _easing: E, + ease_duration: V, + next: A, + ) -> Anim<impl Fun<T = V, V = V>> + where + E: Easing<V>, + G: Fun<T = V, V = V>, + A: Into<Anim<G>>, + { + self.seq_ease(self_end, ease_in::<E, V>, ease_duration, next) + } + + /// Play two animations in sequence, transitioning between them with an + /// easing-out function from + /// [`easer`](https://docs.rs/easer/0.2.1/easer/index.html). + /// + /// This is only available when enabling the `easer` feature for `pareen`. + /// + /// The values of `self` at `self_end` and of `next` at time zero are used + /// to determine the parameters of the easing function. + /// + /// Note that, as with [`seq`](struct.Anim.html#method.seq), the `next` + /// animation will see time starting at zero once it plays. + /// + /// # Arguments + /// + /// * `self_end` - Time at which the `self` animation is to stop. + /// * `_easing` - A struct implementing + /// [`easer::functions::Easing`](https://docs.rs/easer/0.2.1/easer/functions/trait.Easing.html). + /// This determines the easing function that will be used for the + /// transition. It is passed as a parameter here to simplify type + /// inference. + /// * `ease_duration` - The amount of time to use for transitioning to `next`. + /// * `next` - The animation to play after transitioning. + /// + /// # Example + /// + /// See [`seq_ease_in_out`](struct.Anim.html#method.seq_ease_in_out) for an example. + pub fn seq_ease_out<E, G, A>( + self, + self_end: V, + _: E, + ease_duration: V, + next: A, + ) -> Anim<impl Fun<T = V, V = V>> + where + E: Easing<V>, + G: Fun<T = V, V = V>, + A: Into<Anim<G>>, + { + self.seq_ease(self_end, ease_out::<E, V>, ease_duration, next) + } + + /// Play two animations in sequence, transitioning between them with an + /// easing-in-out function from + /// [`easer`](https://docs.rs/easer/0.2.1/easer/index.html). + /// + /// This is only available when enabling the `easer` feature for `pareen`. + /// + /// The values of `self` at `self_end` and of `next` at time zero are used + /// to determine the parameters of the easing function. + /// + /// Note that, as with [`seq`](struct.Anim.html#method.seq), the `next` + /// animation will see time starting at zero once it plays. + /// + /// # Arguments + /// + /// * `self_end` - Time at which the `self` animation is to stop. + /// * `_easing` - A struct implementing + /// [`easer::functions::Easing`](https://docs.rs/easer/0.2.1/easer/functions/trait.Easing.html). + /// This determines the easing function that will be used for the + /// transition. It is passed as a parameter here to simplify type + /// inference. + /// * `ease_duration` - The amount of time to use for transitioning to `next`. + /// * `next` - The animation to play after transitioning. + /// + /// # Example + /// + /// Play a constant value until time `0.5`, then transition for `0.3` + /// time units, using a cubic function, into a second animation: + /// ``` + /// let first_anim = pareen::constant(2.0); + /// let second_anim = pareen::prop(1.0f32); + /// let anim = first_anim.seq_ease_in_out( + /// 0.5, + /// easer::functions::Cubic, + /// 0.3, + /// second_anim, + /// ); + /// ``` + /// The animation will look like this: + /// + /// ![plot for seq_ease_in_out](https://raw.githubusercontent.com/leod/pareen/master/images/seq_ease_in_out.png) + pub fn seq_ease_in_out<E, G, A>( + self, + self_end: V, + _: E, + ease_duration: V, + next: A, + ) -> Anim<impl Fun<T = V, V = V>> + where + E: Easing<V>, + G: Fun<T = V, V = V>, + A: Into<Anim<G>>, + { + self.seq_ease(self_end, ease_in_out::<E, V>, ease_duration, next) + } +} + +/// Integrate an easing-in function from the +/// [`easer`](https://docs.rs/easer/0.2.1/easer/index.html) library. +/// +/// This is only available when enabling the `easer` feature for `pareen`. +/// +/// # Arguments +/// +/// * `start` - The start value for the easing function. +/// * `delta` - The change in the value from beginning to end time. +/// * `duration` - The total time between beginning and end. +/// +/// # See also +/// Documentation for [`easer::functions::Easing`](https://docs.rs/easer/0.2.1/easer/functions/trait.Easing.html). +pub fn ease_in<E, V>(start: V, delta: V, duration: V) -> Anim<impl Fun<T = V, V = V>> +where + V: Float, + E: Easing<V>, +{ + fun(move |t| E::ease_in(t, start, delta, duration)) +} + +/// Integrate an easing-out function from the +/// [`easer`](https://docs.rs/easer/0.2.1/easer/index.html) library. +/// +/// This is only available when enabling the `easer` feature for `pareen`. +/// +/// # Arguments +/// +/// * `start` - The start value for the easing function. +/// * `delta` - The change in the value from beginning to end time. +/// * `duration` - The total time between beginning and end. +/// +/// # See also +/// Documentation for [`easer::functions::Easing`](https://docs.rs/easer/0.2.1/easer/functions/trait.Easing.html). +pub fn ease_out<E, V>(start: V, delta: V, duration: V) -> Anim<impl Fun<T = V, V = V>> +where + V: Float, + E: Easing<V>, +{ + fun(move |t| E::ease_out(t, start, delta, duration)) +} + +/// Integrate an easing-in-out function from the +/// [`easer`](https://docs.rs/easer/0.2.1/easer/index.html) library. +/// +/// This is only available when enabling the `easer` feature for `pareen`. +/// +/// # Arguments +/// +/// * `start` - The start value for the easing function. +/// * `delta` - The change in the value from beginning to end time. +/// * `duration` - The total time between beginning and end. +/// +/// # See also +/// Documentation for [`easer::functions::Easing`](https://docs.rs/easer/0.2.1/easer/functions/trait.Easing.html). +pub fn ease_in_out<E, V>(start: V, delta: V, duration: V) -> Anim<impl Fun<T = V, V = V>> +where + V: Float, + E: Easing<V>, +{ + fun(move |t| E::ease_in_out(t, start, delta, duration)) +} diff --git a/rust/pareen/src/lib.rs b/rust/pareen/src/lib.rs new file mode 100644 index 0000000000..e5f6e27f00 --- /dev/null +++ b/rust/pareen/src/lib.rs @@ -0,0 +1,71 @@ +//! Pareen is a small library for *par*ameterized inbetw*een*ing. +//! The intended application is in game programming, where you sometimes have +//! two discrete game states between which you want to transition smoothly +//! for visualization purposes. +//! +//! Pareen gives you tools for composing animations that are parameterized by +//! time (i.e. mappings from time to some animated value) without constantly +//! having to pass around time variables; it hides the plumbing, so that you +//! need to provide time only once: when evaluating the animation. +//! +//! Animations are composed similarly to Rust's iterators, so no memory +//! allocations are necessary. +//! ## Examples +//! +//! ```rust +//! # use assert_approx_eq::assert_approx_eq; +//! // An animation returning a constant value +//! let anim1 = pareen::constant(1.0f64); +//! +//! // Animations can be evaluated at any time +//! let value = anim1.eval(0.5); +//! +//! // Animations can be played in sequence +//! let anim2 = anim1.seq(0.7, pareen::prop(0.25) + 0.5); +//! +#![cfg_attr( + any(feature = "std", feature = "libm"), + doc = r##" +// Animations can be composed and transformed in various ways +let anim3 = anim2 + .lerp(pareen::circle().cos()) + .scale_min_max(5.0, 10.0) + .backwards(1.0) + .squeeze(0.5..=1.0); + +let anim4 = pareen::cubic(&[1.0, 2.0, 3.0, 4.0]) - anim3; + +let value = anim4.eval(1.0); +assert_approx_eq!(value, 0.0); +"## +)] +//! ``` + +#![no_std] + +mod anim; +#[cfg(feature = "alloc")] +mod anim_box; +mod anim_with_dur; +mod arithmetic; +mod primitives; + +pub mod stats; + +#[cfg(all(feature = "easer", any(feature = "std", feature = "libm")))] +mod easer_combinators; + +pub use anim::{cond, lerp, Anim, Fun}; +#[cfg(feature = "alloc")] +pub use anim_box::AnimBox; +pub use anim_with_dur::{slice, AnimWithDur}; +pub use primitives::{ + circle, constant, cubic, cycle, fun, half_circle, id, prop, quadratic, quarter_circle, +}; +pub use stats::{simple_linear_regression, simple_linear_regression_with_slope}; + +#[cfg(all(feature = "easer", any(feature = "std", feature = "libm")))] +pub use easer; + +#[cfg(all(feature = "easer", any(feature = "std", feature = "libm")))] +pub use easer_combinators::{ease_in, ease_in_out, ease_out}; diff --git a/rust/pareen/src/primitives.rs b/rust/pareen/src/primitives.rs new file mode 100644 index 0000000000..51c8bd9f68 --- /dev/null +++ b/rust/pareen/src/primitives.rs @@ -0,0 +1,223 @@ +use core::marker::PhantomData; +use core::ops::Mul; + +use crate::{Anim, Fun}; + +use num_traits::{FloatConst, float::FloatCore}; + +/// Turn any function `Fn(T) -> V` into an [`Anim`](struct.Anim.html). +/// +/// # Example +/// ``` +/// # use assert_approx_eq::assert_approx_eq; +/// fn my_crazy_function(t: f32) -> f32 { +/// 42.0 / t +/// } +/// +/// let anim = pareen::fun(my_crazy_function); +/// +/// assert_approx_eq!(anim.eval(1.0), 42.0); +/// assert_approx_eq!(anim.eval(2.0), 21.0); +/// ``` +pub fn fun<T, V>(f: impl Fn(T) -> V) -> Anim<impl Fun<T = T, V = V>> { + From::from(f) +} + +struct WrapFn<T, V, F: Fn(T) -> V>(F, PhantomData<(T, V)>); + +impl<T, V, F> From<F> for Anim<WrapFn<T, V, F>> +where + F: Fn(T) -> V, +{ + fn from(f: F) -> Self { + Anim(WrapFn(f, PhantomData)) + } +} + +impl<T, V, F> Fun for WrapFn<T, V, F> +where + F: Fn(T) -> V, +{ + type T = T; + type V = V; + + fn eval(&self, t: T) -> V { + self.0(t) + } +} + +/// A constant animation, always returning the same value. +/// +/// # Example +/// ``` +/// # use assert_approx_eq::assert_approx_eq; +/// let anim = pareen::constant(1.0f32); +/// +/// assert_approx_eq!(anim.eval(-10000.0f32), 1.0); +/// assert_approx_eq!(anim.eval(0.0), 1.0); +/// assert_approx_eq!(anim.eval(42.0), 1.0); +/// ``` +pub fn constant<T, V: Clone>(c: V) -> Anim<impl Fun<T = T, V = V>> { + fun(move |_| c.clone()) +} + +#[doc(hidden)] +#[derive(Debug, Clone)] +pub struct ConstantClosure<T, V>(V, PhantomData<T>); + +impl<T, V> Fun for ConstantClosure<T, V> +where + V: Clone, +{ + type T = T; + type V = V; + + fn eval(&self, _: T) -> V { + self.0.clone() + } +} + +impl<T, V> From<V> for ConstantClosure<T, V> +where + V: Clone, +{ + fn from(v: V) -> Self { + ConstantClosure(v, PhantomData) + } +} + +impl<T, V> From<V> for Anim<ConstantClosure<T, V>> +where + V: Clone, +{ + fn from(v: V) -> Self { + Anim(ConstantClosure::from(v)) + } +} + +/// An animation that returns a value proportional to time. +/// +/// # Example +/// +/// Scale time with a factor of three: +/// ``` +/// # use assert_approx_eq::assert_approx_eq; +/// let anim = pareen::prop(3.0f32); +/// +/// assert_approx_eq!(anim.eval(0.0f32), 0.0); +/// assert_approx_eq!(anim.eval(3.0), 9.0); +/// ``` +pub fn prop<T, V, W>(m: V) -> Anim<impl Fun<T = T, V = W>> +where + V: Clone + Mul<Output = W> + From<T>, +{ + fun(move |t| m.clone() * From::from(t)) +} + +/// An animation that returns time as its value. +/// +/// This is the same as [`prop`](fn.prop.html) with a factor of one. +/// +/// # Examples +/// ``` +/// let anim = pareen::id::<isize, isize>(); +/// +/// assert_eq!(anim.eval(-100), -100); +/// assert_eq!(anim.eval(0), 0); +/// assert_eq!(anim.eval(100), 100); +/// ``` +/// ``` +/// # use assert_approx_eq::assert_approx_eq; +/// let anim = pareen::id::<f32, f32>() * 3.0 + 4.0; +/// +/// assert_approx_eq!(anim.eval(0.0), 4.0); +/// assert_approx_eq!(anim.eval(100.0), 304.0); +/// ``` +pub fn id<T, V>() -> Anim<impl Fun<T = T, V = V>> +where + V: From<T>, +{ + fun(From::from) +} + +/// Proportionally increase value from zero to 2π. +pub fn circle<T, V>() -> Anim<impl Fun<T = T, V = V>> +where + T: FloatCore, + V: FloatCore + FloatConst + From<T>, +{ + prop(V::PI() * (V::one() + V::one())) +} + +/// Proportionally increase value from zero to π. +pub fn half_circle<T, V>() -> Anim<impl Fun<T = T, V = V>> +where + T: FloatCore, + V: FloatCore + FloatConst + From<T>, +{ + prop(V::PI()) +} + +/// Proportionally increase value from zero to π/2. +pub fn quarter_circle<T, V>() -> Anim<impl Fun<T = T, V = V>> +where + T: FloatCore, + V: FloatCore + FloatConst + From<T>, +{ + prop(V::PI() * (V::one() / (V::one() + V::one()))) +} + +/// Evaluate a quadratic polynomial in time. +pub fn quadratic<T>(w: &[T; 3]) -> Anim<impl Fun<T = T, V = T> + '_> +where + T: FloatCore, +{ + fun(move |t| { + let t2 = t * t; + + w[0] * t2 + w[1] * t + w[2] + }) +} + +/// Evaluate a cubic polynomial in time. +pub fn cubic<T>(w: &[T; 4]) -> Anim<impl Fun<T = T, V = T> + '_> +where + T: FloatCore, +{ + fun(move |t| { + let t2 = t * t; + let t3 = t2 * t; + + w[0] * t3 + w[1] * t2 + w[2] * t + w[3] + }) +} + +/// Count from 0 to `end` (non-inclusive) cyclically, at the given frames per +/// second rate. +/// +/// # Example +/// ``` +/// let anim = pareen::cycle(3, 5.0); +/// assert_eq!(anim.eval(0.0), 0); +/// assert_eq!(anim.eval(0.1), 0); +/// assert_eq!(anim.eval(0.3), 1); +/// assert_eq!(anim.eval(0.5), 2); +/// assert_eq!(anim.eval(0.65), 0); +/// +/// assert_eq!(anim.eval(-0.1), 2); +/// assert_eq!(anim.eval(-0.3), 1); +/// assert_eq!(anim.eval(-0.5), 0); +/// ``` +pub fn cycle(end: usize, fps: f32) -> Anim<impl Fun<T = f32, V = usize>> { + fun(move |t: f32| { + if t < 0.0 { + let tau = (t.abs() * fps) as usize; + + end - 1 - tau % end + } else { + let tau = (t * fps) as usize; + + tau % end + } + }) +} diff --git a/rust/pareen/src/stats.rs b/rust/pareen/src/stats.rs new file mode 100644 index 0000000000..c55023545c --- /dev/null +++ b/rust/pareen/src/stats.rs @@ -0,0 +1,133 @@ +use core::ops::{Add, Div, Mul}; + +use num_traits::{float::FloatCore, AsPrimitive, Zero}; + +use crate::{Anim, AnimWithDur, Fun}; + +impl<F> AnimWithDur<F> +where + F: Fun<T = usize>, +{ + pub fn fold<B, G>(&self, init: B, mut f: G) -> B + where + G: FnMut(B, F::V) -> B, + { + let mut b = init; + + for t in 0..self.1 { + b = f(b, self.0.eval(t)) + } + + b + } +} + +impl<F> AnimWithDur<F> +where + F: Fun<T = usize>, + F::V: Add<Output = F::V> + Zero, +{ + pub fn sum(&self) -> F::V { + self.fold(Zero::zero(), |a, b| a + b) + } +} + +impl<F> AnimWithDur<F> +where + F: Fun<T = usize>, + F::T: Clone, + F::V: 'static + Add<Output = F::V> + Div<Output = F::V> + Zero + Copy, + usize: AsPrimitive<F::V>, +{ + pub fn mean(&self) -> F::V { + let len = self.1.clone().as_(); + self.sum() / len + } +} + +#[derive(Debug, Clone)] +pub struct Line<V> { + pub y_intercept: V, + pub slope: V, +} + +impl<V> Fun for Line<V> +where + V: Add<Output = V> + Mul<Output = V> + Clone, +{ + type T = V; + type V = V; + + fn eval(&self, t: V) -> V { + self.y_intercept.clone() + self.slope.clone() * t + } +} + +pub fn simple_linear_regression_with_slope<V, F, A>(slope: V, values: A) -> Anim<Line<V>> +where + V: 'static + FloatCore + Copy, + F: Fun<T = usize, V = (V, V)>, + A: Into<AnimWithDur<F>>, + usize: AsPrimitive<V>, +{ + // https://en.wikipedia.org/wiki/Simple_linear_regression#Fitting_the_regression_line + let values = values.into(); + let (x, y) = values.unzip(); + let x_mean = x.as_ref().mean(); + let y_mean = y.as_ref().mean(); + + let y_intercept = y_mean - slope * x_mean; + + Anim(Line { y_intercept, slope }) +} + +pub fn simple_linear_regression<V, F, A>(values: A) -> Anim<Line<V>> +where + V: 'static + FloatCore + Copy, + F: Fun<T = usize, V = (V, V)>, + A: Into<AnimWithDur<F>>, + usize: AsPrimitive<V>, +{ + // https://en.wikipedia.org/wiki/Simple_linear_regression#Fitting_the_regression_line + let values = values.into(); + let (x, y) = values.unzip(); + let x_mean = x.as_ref().mean(); + let y_mean = y.as_ref().mean(); + let numerator = values + .as_ref() + .map(|(x, y)| (x - x_mean) * (y - y_mean)) + .sum(); + let denominator = x.as_ref().map(|x| (x - x_mean) * (x - x_mean)).sum(); + let slope = numerator / denominator; + + let y_intercept = y_mean - slope * x_mean; + + Anim(Line { y_intercept, slope }) +} + +#[cfg(all(test, feature = "alloc"))] +mod tests { + use assert_approx_eq::assert_approx_eq; + extern crate alloc; + use alloc::vec; + + use super::simple_linear_regression; + + #[test] + fn test_perfect_regression() { + let straight_line = vec![(1.0, 1.0), (2.0, 2.0)]; + let line = simple_linear_regression(straight_line.as_slice()); + assert_approx_eq!(line.eval(1.0), 1.0f64); + assert_approx_eq!(line.eval(10.0), 10.0); + assert_approx_eq!(line.eval(-10.0), -10.0); + } + + #[test] + fn test_negative_perfect_regression() { + let straight_line = vec![(1.0, -1.0), (2.0, -2.0)]; + let line = simple_linear_regression(straight_line.as_slice()); + assert_approx_eq!(line.eval(1.0), -1.0f64); + assert_approx_eq!(line.eval(10.0), -10.0); + assert_approx_eq!(line.eval(-10.0), 10.0); + } +} From 1f01150e7c4018f01cb2806f70e245408b69ca8a Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 26 Apr 2024 08:28:33 +0200 Subject: [PATCH 190/626] feat(core): introduce a stopwatch [no changelog] --- core/embed/rust/src/time.rs | 131 ++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/core/embed/rust/src/time.rs b/core/embed/rust/src/time.rs index 726d7a7e16..40505691f1 100644 --- a/core/embed/rust/src/time.rs +++ b/core/embed/rust/src/time.rs @@ -67,6 +67,18 @@ impl Div<Duration> for Duration { } } +impl From<f32> for Duration { + fn from(value: f32) -> Self { + Self::from_millis((value * 1000.0) as u32) + } +} + +impl From<Duration> for f32 { + fn from(value: Duration) -> Self { + value.to_millis() as f32 / 1000.0 + } +} + /* Instants can wrap around and we want them to be comparable even after * wrapping around. This works by setting a maximum allowable difference * between two Instants to half the range. In checked_add and checked_sub, we @@ -148,6 +160,75 @@ impl Ord for Instant { } } +/// A stopwatch is a utility designed for measuring the amount of time +/// that elapses between its start and stop points. It can be used in various +/// situations - animation timing, event timing, testing and debugging. +pub enum Stopwatch { + Stopped(Duration), + Running(Instant), +} + +impl Default for Stopwatch { + /// Returns a new sopteed stopwatch by default. + fn default() -> Self { + Self::new_stopped() + } +} + +impl Stopwatch { + /// Creates a new stopped stopwatch with duration of zero + pub fn new_stopped() -> Self { + Self::Stopped(Duration::ZERO) + } + + /// Creates a new started stopwatch that starts + /// at the current instant. + pub fn new_started() -> Self { + Self::Running(Instant::now()) + } + + /// Starts or restarts the stopwatch. + /// + /// If the stopwatch is already running, it restarts, setting + /// the elapsed time to zero. + pub fn start(&mut self) { + *self = Self::Running(Instant::now()); + } + + /// Stops the stopwatch. + /// + /// When stopped, the `elapsed()` method will return the total + /// duration for which the stopwatch was running. + pub fn stop(&mut self) { + *self = Self::Stopped(self.elapsed()); + } + + /// Returns the elapsed duration since the stopwatch was last started. + /// + /// If the stopwatch is running, it calculates the time from the last + /// start instant to the current instant. + pub fn elapsed(&self) -> Duration { + match *self { + Self::Stopped(duration) => duration, + Self::Running(time) => Instant::now().checked_duration_since(time).unwrap(), + } + } + + /// Returns `true` if the stopwatch is currenly running. + pub fn is_running(&self) -> bool { + matches!(*self, Self::Running(_)) + } + + /// Checks if the stopwatch is running and whether the elapsed + /// time since the last start is less than or equal to a specified limit. + pub fn is_running_within(&self, limit: Duration) -> bool { + match *self { + Self::Stopped(_) => false, + Self::Running(_) => self.elapsed() <= limit, + } + } +} + #[cfg(test)] mod tests { use super::*; @@ -160,4 +241,54 @@ mod tests { assert_eq!(later, Instant { millis: 0 }); assert!(earlier < later); } + + #[test] + fn stopwatch_builds_correctly() { + let sw = Stopwatch::new_started(); + assert!(sw.is_running()); + + let sw = Stopwatch::new_stopped(); + assert!(!sw.is_running()); + + let sw: Stopwatch = Default::default(); + assert!(!sw.is_running()); + } + + fn wait(duration: Duration) { + let origin = Instant::now(); + while Instant::now().checked_duration_since(origin).unwrap() < duration {} + } + + #[test] + fn stopwatch_starts_correcly() { + let mut sw = Stopwatch::new_stopped(); + assert!(!sw.is_running()); + + sw.start(); + assert!(sw.is_running()); + + wait(Duration::from_millis(10)); + assert!(sw.elapsed() >= Duration::from_millis(10)); + assert!(!sw.is_running_within(Duration::from_millis(5))); + assert!(sw.is_running_within(Duration::from_millis(10000))); + } + + #[test] + fn stopwatch_stops_correctly() { + let mut sw = Stopwatch::new_started(); + assert!(sw.is_running()); + + wait(Duration::from_millis(10)); + + sw.stop(); + assert!(!sw.is_running()); + + let elapsed = sw.elapsed(); + assert!(elapsed >= Duration::from_millis(10)); + + wait(Duration::from_millis(10)); + assert!(sw.elapsed() == elapsed); + assert!(!sw.is_running_within(Duration::from_millis(5))); + assert!(!sw.is_running_within(Duration::from_millis(10000))); + } } From 67fe334dc292fc0bc9233cee2e252ae3eb5ec5a8 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 5 May 2024 14:06:31 +0200 Subject: [PATCH 191/626] feat(core): add hold-to-confirm animation to mercury UI [no changelog] --- core/embed/rust/src/time.rs | 15 +- core/embed/rust/src/ui/component/label.rs | 5 + .../rust/src/ui/component/text/layout.rs | 48 ++- .../src/ui/model_mercury/component/button.rs | 57 ++- .../src/ui/model_mercury/component/frame.rs | 16 +- .../component/hold_to_confirm.rs | 331 ++++++++++++++++++ .../src/ui/model_mercury/component/mod.rs | 5 + .../model_mercury/component/prompt_screen.rs | 3 +- .../flow/confirm_reset_create.rs | 29 +- .../rust/src/ui/model_mercury/theme/mod.rs | 1 + core/translations/en.json | 2 + 11 files changed, 460 insertions(+), 52 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs diff --git a/core/embed/rust/src/time.rs b/core/embed/rust/src/time.rs index 40505691f1..72eb7455c6 100644 --- a/core/embed/rust/src/time.rs +++ b/core/embed/rust/src/time.rs @@ -67,18 +67,6 @@ impl Div<Duration> for Duration { } } -impl From<f32> for Duration { - fn from(value: f32) -> Self { - Self::from_millis((value * 1000.0) as u32) - } -} - -impl From<Duration> for f32 { - fn from(value: Duration) -> Self { - value.to_millis() as f32 / 1000.0 - } -} - /* Instants can wrap around and we want them to be comparable even after * wrapping around. This works by setting a maximum allowable difference * between two Instants to half the range. In checked_add and checked_sub, we @@ -163,6 +151,7 @@ impl Ord for Instant { /// A stopwatch is a utility designed for measuring the amount of time /// that elapses between its start and stop points. It can be used in various /// situations - animation timing, event timing, testing and debugging. +#[derive(Clone)] pub enum Stopwatch { Stopped(Duration), Running(Instant), @@ -214,7 +203,7 @@ impl Stopwatch { } } - /// Returns `true` if the stopwatch is currenly running. + /// Returns `true` if the stopwatch is currently running. pub fn is_running(&self) -> bool { matches!(*self, Self::Running(_)) } diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 869f254dab..7061e659ff 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -104,6 +104,11 @@ impl<'a> Label<'a> { }; Rect::from_bottom_left_and_size(baseline, Offset::new(width, height)) } + + pub fn render_with_alpha<'s>(&self, target: &mut impl Renderer<'s>, alpha: u8) { + self.text + .map(|c| self.layout.render_text_with_alpha(c, target, alpha)); + } } impl Component for Label<'_> { diff --git a/core/embed/rust/src/ui/component/text/layout.rs b/core/embed/rust/src/ui/component/text/layout.rs index 3655696b83..52a422ba58 100644 --- a/core/embed/rust/src/ui/component/text/layout.rs +++ b/core/embed/rust/src/ui/component/text/layout.rs @@ -239,10 +239,19 @@ impl TextLayout { /// Draw as much text as possible on the current screen. pub fn render_text2<'s>(&self, text: &str, target: &mut impl Renderer<'s>) -> LayoutFit { + self.render_text_with_alpha(text, target, 255) + } + /// Draw as much text as possible on the current screen. + pub fn render_text_with_alpha<'s>( + &self, + text: &str, + target: &mut impl Renderer<'s>, + alpha: u8, + ) -> LayoutFit { self.layout_text( text, &mut self.initial_cursor(), - &mut TextRenderer2::new(target), + &mut TextRenderer2::new(target).with_alpha(alpha), ) } @@ -541,16 +550,29 @@ impl LayoutSink for TextRenderer { } } -pub struct TextRenderer2<'a, 's, R>(pub &'a mut R, core::marker::PhantomData<&'s ()>) +pub struct TextRenderer2<'a, 's, R> where - R: Renderer<'s>; + R: Renderer<'s>, +{ + pub renderer: &'a mut R, + pd: core::marker::PhantomData<&'s ()>, + alpha: u8, +} impl<'a, 's, R> TextRenderer2<'a, 's, R> where R: Renderer<'s>, { pub fn new(target: &'a mut R) -> Self { - Self(target, core::marker::PhantomData) + Self { + renderer: target, + pd: core::marker::PhantomData, + alpha: 255, + } + } + + pub fn with_alpha(self, alpha: u8) -> Self { + Self { alpha, ..self } } } @@ -562,14 +584,16 @@ where shape::Text::new(cursor, text) .with_font(layout.style.text_font) .with_fg(layout.style.text_color) - .render(self.0); + .with_alpha(self.alpha) + .render(self.renderer); } fn hyphen(&mut self, cursor: Point, layout: &TextLayout) { shape::Text::new(cursor, "-") .with_font(layout.style.text_font) .with_fg(layout.style.hyphen_color) - .render(self.0); + .with_alpha(self.alpha) + .render(self.renderer); } fn ellipsis(&mut self, cursor: Point, layout: &TextLayout) { @@ -578,12 +602,14 @@ where shape::ToifImage::new(bottom_left, icon.toif) .with_align(Alignment2D::BOTTOM_LEFT) .with_fg(layout.style.ellipsis_color) - .render(self.0); + .with_alpha(self.alpha) + .render(self.renderer); } else { shape::Text::new(cursor, ELLIPSIS) .with_font(layout.style.text_font) .with_fg(layout.style.ellipsis_color) - .render(self.0); + .with_alpha(self.alpha) + .render(self.renderer); } } @@ -592,12 +618,14 @@ where shape::ToifImage::new(cursor, icon.toif) .with_align(Alignment2D::BOTTOM_LEFT) .with_fg(layout.style.ellipsis_color) - .render(self.0); + .with_alpha(self.alpha) + .render(self.renderer); } else { shape::Text::new(cursor, ELLIPSIS) .with_font(layout.style.text_font) .with_fg(layout.style.ellipsis_color) - .render(self.0); + .with_alpha(self.alpha) + .render(self.renderer); } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 776d04f216..8ff864d91f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -35,6 +35,7 @@ pub struct Button { state: State, long_press: Option<Duration>, long_timer: Option<TimerToken>, + haptic: bool, } impl Button { @@ -54,6 +55,7 @@ impl Button { state: State::Initial, long_press: None, long_timer: None, + haptic: true, } } @@ -102,6 +104,11 @@ impl Button { self } + pub fn without_haptics(mut self) -> Self { + self.haptic = false; + self + } + pub fn enable_if(&mut self, ctx: &mut EventCtx, enabled: bool) { if enabled { self.enable(ctx); @@ -182,7 +189,12 @@ impl Button { } } - pub fn render_background<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) { + pub fn render_background<'s>( + &self, + target: &mut impl Renderer<'s>, + style: &ButtonStyle, + alpha: u8, + ) { match &self.content { ButtonContent::IconBlend(_, _, _) => {} _ => { @@ -192,11 +204,13 @@ impl Button { .with_radius(self.radius.unwrap() as i16) .with_thickness(2) .with_fg(style.button_color) + .with_alpha(alpha) .render(target); } else { shape::Bar::new(self.area) .with_bg(style.button_color) .with_fg(style.button_color) + .with_alpha(alpha) .render(target); } } @@ -238,7 +252,12 @@ impl Button { } } - pub fn render_content<'s>(&self, target: &mut impl Renderer<'s>, style: &ButtonStyle) { + pub fn render_content<'s>( + &self, + target: &mut impl Renderer<'s>, + style: &ButtonStyle, + alpha: u8, + ) { match &self.content { ButtonContent::Empty => {} ButtonContent::Text(text) => { @@ -255,6 +274,7 @@ impl Button { .with_font(style.font) .with_fg(style.text_color) .with_align(self.text_align) + .with_alpha(alpha) .render(target); }); } @@ -262,24 +282,40 @@ impl Button { shape::ToifImage::new(self.area.center(), icon.toif) .with_align(Alignment2D::CENTER) .with_fg(style.icon_color) + .with_alpha(alpha) .render(target); } ButtonContent::IconAndText(child) => { - child.render(target, self.area, self.style(), Self::BASELINE_OFFSET); + child.render( + target, + self.area, + self.style(), + Self::BASELINE_OFFSET, + alpha, + ); } ButtonContent::IconBlend(bg, fg, offset) => { shape::Bar::new(self.area) .with_bg(style.background_color) + .with_alpha(alpha) .render(target); shape::ToifImage::new(self.area.top_left(), bg.toif) .with_fg(style.button_color) + .with_alpha(alpha) .render(target); shape::ToifImage::new(self.area.top_left() + *offset, fg.toif) .with_fg(style.icon_color) + .with_alpha(alpha) .render(target); } } } + + pub fn render_with_alpha<'s>(&self, target: &mut impl Renderer<'s>, alpha: u8) { + let style = self.style(); + self.render_background(target, style, alpha); + self.render_content(target, style, alpha); + } } impl Component for Button { @@ -307,7 +343,9 @@ impl Component for Button { // Touch started in our area, transform to `Pressed` state. if touch_area.contains(pos) { #[cfg(feature = "haptic")] - play(HapticEffect::ButtonPress); + if self.haptic { + play(HapticEffect::ButtonPress); + } self.set(ctx, State::Pressed); if let Some(duration) = self.long_press { self.long_timer = Some(ctx.request_timer(duration)); @@ -351,7 +389,9 @@ impl Component for Button { self.long_timer = None; if matches!(self.state, State::Pressed) { #[cfg(feature = "haptic")] - play(HapticEffect::ButtonPress); + if self.haptic { + play(HapticEffect::ButtonPress); + } self.set(ctx, State::Initial); return Some(ButtonMsg::LongPressed); } @@ -370,8 +410,8 @@ impl Component for Button { fn render<'s>(&self, target: &mut impl Renderer<'s>) { let style = self.style(); - self.render_background(target, style); - self.render_content(target, style); + self.render_background(target, style, 0xFF); + self.render_content(target, style, 0xFF); } #[cfg(feature = "ui_bounds")] @@ -605,6 +645,7 @@ impl IconText { area: Rect, style: &ButtonStyle, baseline_offset: Offset, + alpha: u8, ) { let width = self.text.map(|t| style.font.text_width(t)); @@ -635,6 +676,7 @@ impl IconText { shape::Text::new(text_pos, t) .with_font(style.font) .with_fg(style.text_color) + .with_alpha(alpha) .render(target) }); } @@ -643,6 +685,7 @@ impl IconText { shape::ToifImage::new(icon_pos, self.icon.toif) .with_align(Alignment2D::CENTER) .with_fg(style.icon_color) + .with_alpha(alpha) .render(target); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index f558822d38..5e49511739 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -6,13 +6,13 @@ use crate::{ }, display::Icon, geometry::{Alignment, Insets, Rect}, + model_mercury::theme::TITLE_HEIGHT, shape::Renderer, }, }; use super::{theme, Button, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer}; -const TITLE_HEIGHT: i16 = 42; const BUTTON_EXPAND_BORDER: i16 = 32; #[derive(Clone)] @@ -24,6 +24,7 @@ pub struct Frame<T> { button_msg: CancelInfoConfirmMsg, content: Child<T>, footer: Option<Footer<'static>>, + overlapping_content: bool, } pub enum FrameMsg<T> { @@ -46,6 +47,7 @@ where button_msg: CancelInfoConfirmMsg::Cancelled, content: Child::new(content), footer: None, + overlapping_content: false, } } @@ -188,7 +190,11 @@ where footer.place(footer_area); content_area = remaining; } - self.content.place(content_area); + if self.overlapping_content { + self.content.place(bounds); + } else { + self.content.place(content_area); + } bounds } @@ -209,15 +215,15 @@ where self.title.paint(); self.subtitle.paint(); self.button.paint(); - self.content.paint(); self.footer.paint(); + self.content.paint(); } fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.title.render(target); self.subtitle.render(target); self.button.render(target); - self.content.render(target); self.footer.render(target); + self.content.render(target); } #[cfg(feature = "ui_bounds")] @@ -225,8 +231,8 @@ where self.title.bounds(sink); self.subtitle.bounds(sink); self.button.bounds(sink); - self.content.bounds(sink); self.footer.bounds(sink); + self.content.bounds(sink); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs new file mode 100644 index 0000000000..fc271db6ce --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -0,0 +1,331 @@ +use crate::{ + time::Duration, + translations::TR, + ui::{ + component::{Component, Event, EventCtx}, + display::Color, + geometry::{Alignment2D, Offset, Rect}, + lerp::Lerp, + shape, + shape::Renderer, + }, +}; + +use super::{theme, Button, ButtonContent, ButtonMsg}; + +#[cfg(feature = "haptic")] +use crate::trezorhal::haptic::{self, HapticEffect}; +use crate::{ + time::Stopwatch, + ui::{ + component::Label, + constant::screen, + geometry::{Alignment, Point}, + model_mercury::theme::TITLE_HEIGHT, + }, +}; +use pareen; + +#[derive(Default, Clone)] +struct HoldToConfirmAnim { + pub timer: Stopwatch, +} + +impl HoldToConfirmAnim { + const DURATION_MS: u32 = 2200; + + pub fn is_active(&self) -> bool { + self.timer + .is_running_within(Duration::from_millis(Self::DURATION_MS)) + } + + pub fn eval(&self) -> f32 { + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + pub fn get_parent_cover_opacity(&self, t: f32) -> u8 { + let parent_cover_opacity = pareen::constant(0.0).seq_ease_in_out( + 0.0, + easer::functions::Cubic, + 0.2, + pareen::constant(1.0), + ); + + u8::lerp(0, 255, parent_cover_opacity.eval(t)) + } + + pub fn get_header_opacity(&self, t: f32) -> u8 { + let header_opacity = pareen::constant(0.0).seq_ease_out( + 0.1, + easer::functions::Cubic, + 0.3, + pareen::constant(1.0), + ); + + u8::lerp(0, 255, header_opacity.eval(t)) + } + + pub fn get_header_opacity2(&self, t: f32) -> u8 { + let header_opacity2 = pareen::constant(1.0).seq_ease_in( + 2.0, + easer::functions::Cubic, + 0.2, + pareen::constant(0.0), + ); + + u8::lerp(0, 255, header_opacity2.eval(t)) + } + + pub fn get_circle_opacity(&self, t: f32) -> u8 { + let circle_opacity = pareen::constant(1.0).seq_ease_out( + 0.1, + easer::functions::Cubic, + 0.1, + pareen::constant(0.0), + ); + + u8::lerp(0, 255, circle_opacity.eval(t)) + } + + pub fn get_pad_color(&self, t: f32) -> Color { + let pad_color = pareen::constant(0.0).seq_ease_in_out( + 0.1, + easer::functions::Cubic, + 1.9, + pareen::constant(1.0), + ); + + Color::lerp(theme::GREY_EXTRA_DARK, theme::GREEN, pad_color.eval(t)) + } + + pub fn get_circle_max_height(&self, t: f32) -> i16 { + let circle_max_height = pareen::constant(0.0).seq_ease_in( + 0.1, + easer::functions::Cubic, + 1.5, + pareen::constant(1.0), + ); + + i16::lerp(266, 0, circle_max_height.eval(t)) + } + + pub fn get_circle_radius(&self, t: f32) -> i16 { + let circle_radius = pareen::constant(0.0).seq_ease_in( + 1.6, + easer::functions::Cubic, + 0.6, + pareen::constant(1.0), + ); + + i16::lerp(0, 100, circle_radius.eval(t)) + } + + pub fn get_haptic(&self, t: f32) -> u8 { + let haptic = pareen::constant(0.0).seq_ease_in( + 0.0, + easer::functions::Linear, + Self::DURATION_MS as f32 / 1000.0, + pareen::constant(1.0), + ); + + u8::lerp(0, 20, haptic.eval(t)) + } + + pub fn start(&mut self) { + self.timer.start(); + } + + pub fn reset(&mut self) { + self.timer = Stopwatch::new_stopped(); + } +} + +/// Component requesting a hold to confirm action from a user. Most typically +/// embedded as a content of a Frame. +#[derive(Clone)] +pub struct HoldToConfirm { + title: Label<'static>, + area: Rect, + button: Button, + circle_color: Color, + circle_pad_color: Color, + circle_inner_color: Color, + anim: HoldToConfirmAnim, +} + +#[derive(Clone)] +enum DismissType { + Tap, + Hold, +} + +impl HoldToConfirm { + pub fn new() -> Self { + let button = Button::new(ButtonContent::Empty) + .styled(theme::button_default()) + .with_long_press(Duration::from_millis(2200)) + .without_haptics(); + Self { + title: Label::new( + TR::instructions__continue_holding.into(), + Alignment::Start, + theme::label_title_main(), + ) + .vertically_centered(), + area: Rect::zero(), + circle_color: theme::GREEN, + circle_pad_color: theme::GREY_EXTRA_DARK, + circle_inner_color: theme::GREEN_LIGHT, + button, + anim: HoldToConfirmAnim::default(), + } + } +} + +impl Component for HoldToConfirm { + type Msg = (); + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.button.place(Rect::snap( + self.area.center(), + Offset::uniform(80), + Alignment2D::CENTER, + )); + self.title.place(screen().split_top(TITLE_HEIGHT).0); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let btn_msg = self.button.event(ctx, event); + match btn_msg { + Some(ButtonMsg::Pressed) => { + self.anim.start(); + ctx.request_anim_frame(); + ctx.request_paint(); + } + Some(ButtonMsg::Released) => { + self.anim.reset(); + ctx.request_anim_frame(); + ctx.request_paint(); + } + Some(ButtonMsg::Clicked) => { + self.anim.reset(); + ctx.request_anim_frame(); + ctx.request_paint(); + } + Some(ButtonMsg::LongPressed) => { + #[cfg(feature = "haptic")] + haptic::play(HapticEffect::HoldToConfirm); + return Some(()); + } + _ => (), + } + if self.anim.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } + None + } + + fn paint(&mut self) { + unimplemented!() + } + + fn render<'s>(&self, target: &mut impl Renderer<'s>) { + let elapsed = self.anim.eval(); + + shape::Bar::new(screen()) + .with_fg(theme::BLACK) + .with_bg(theme::BLACK) + .with_alpha(self.anim.get_parent_cover_opacity(elapsed)) + .render(target); + + let center = self.area.center(); + + const PROGRESS_CIRCLE_RADIUS: i16 = 88; + const PAD_RADIUS: i16 = 70; + const CIRCLE_RADIUS: i16 = 50; + const INNER_CIRCLE_RADIUS: i16 = 40; + const CIRCLE_THICKNESS: i16 = 2; + + if self.anim.get_parent_cover_opacity(elapsed) == 255 { + shape::Circle::new(center, PROGRESS_CIRCLE_RADIUS) + .with_fg(self.circle_inner_color) + .with_bg(theme::BLACK) + .with_thickness(CIRCLE_THICKNESS) + .render(target); + + shape::Bar::new(Rect::new( + Point::zero(), + Point::new(screen().width(), self.anim.get_circle_max_height(elapsed)), + )) + .with_fg(theme::BLACK) + .with_bg(theme::BLACK) + .render(target); + } + + let title_alpha = if self.anim.get_header_opacity2(elapsed) < 255 { + self.anim.get_header_opacity2(elapsed) + } else { + self.anim.get_header_opacity(elapsed) + }; + + self.title.render_with_alpha(target, title_alpha); + + let pad_color = self.anim.get_pad_color(elapsed); + let circle_alpha = self.anim.get_circle_opacity(elapsed); + + shape::Circle::new(center, PAD_RADIUS) + .with_fg(pad_color) + .with_bg(pad_color) + .render(target); + shape::Circle::new(center, CIRCLE_RADIUS) + .with_fg(self.circle_color) + .with_bg(self.circle_pad_color) + .with_thickness(CIRCLE_THICKNESS) + .with_alpha(circle_alpha) + .render(target); + shape::Circle::new(center, CIRCLE_RADIUS - CIRCLE_THICKNESS) + .with_fg(self.circle_pad_color) + .with_bg(self.circle_pad_color) + .with_thickness(CIRCLE_RADIUS - CIRCLE_THICKNESS - INNER_CIRCLE_RADIUS) + .with_alpha(circle_alpha) + .render(target); + shape::Circle::new(center, INNER_CIRCLE_RADIUS) + .with_fg(self.circle_inner_color) + .with_bg(theme::BLACK) + .with_thickness(CIRCLE_THICKNESS) + .with_alpha(circle_alpha) + .render(target); + + shape::ToifImage::new(center, theme::ICON_SIGN.toif) + .with_fg(theme::GREY) + .with_alpha(circle_alpha) + .with_align(Alignment2D::CENTER) + .render(target); + + shape::Circle::new(center, self.anim.get_circle_radius(elapsed)) + .with_fg(theme::BLACK) + .render(target); + + #[cfg(feature = "haptic")] + { + let hap = self.anim.get_haptic(elapsed); + if hap > 0 { + haptic::play_custom(hap as i8, 100); + } + } + } +} + +#[cfg(feature = "micropython")] +impl crate::ui::flow::Swipable<()> for HoldToConfirm {} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for HoldToConfirm { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("StatusScreen"); + t.child("button", &self.button); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 2d71d7ac6a..3e2285b2e3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -12,6 +12,9 @@ mod vertical_menu; mod fido_icons; mod error; mod frame; + +#[cfg(feature = "translations")] +mod hold_to_confirm; #[cfg(feature = "micropython")] mod homescreen; #[cfg(feature = "translations")] @@ -48,6 +51,8 @@ pub use error::ErrorScreen; pub use fido::{FidoConfirm, FidoMsg}; pub use footer::Footer; pub use frame::{Frame, FrameMsg}; +#[cfg(feature = "translations")] +pub use hold_to_confirm::HoldToConfirm; #[cfg(feature = "micropython")] pub use homescreen::{check_homescreen_format, Homescreen, HomescreenMsg, Lockscreen}; #[cfg(feature = "translations")] diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 061a86e041..fcbd39ca37 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -133,7 +133,8 @@ impl Component for PromptScreen { .with_thickness(2) .render(target); }); - self.button.render_content(target, self.button.style()); + self.button + .render_content(target, self.button.style(), 0xff); } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index 1afbc92621..27d1f137f9 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -1,5 +1,6 @@ use crate::{ error, + micropython::{map::Map, obj::Obj, util}, strutil::TString, translations::TR, ui::{ @@ -9,11 +10,12 @@ use crate::{ ButtonRequestExt, ComponentExt, SwipeDirection, }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + layout::obj::LayoutObj, }, }; use super::super::{ - component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + component::{Frame, FrameMsg, HoldToConfirm, VerticalMenu, VerticalMenuChoiceMsg}, theme, }; @@ -60,11 +62,6 @@ impl FlowState for ConfirmResetCreate { } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_reset_create( n_args: usize, @@ -100,16 +97,16 @@ impl ConfirmResetCreate { FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - let content_confirm = Frame::left_aligned( - TR::reset__title_create_wallet.into(), - PromptScreen::new_hold_to_confirm(), - ) - .with_footer(TR::instructions__hold_to_confirm.into(), None) - .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), - _ => Some(FlowMsg::Cancelled), - }) - .one_button_request(ButtonRequestCode::ResetDevice.with_type("confirm_setup_device")); + let content_confirm = + Frame::left_aligned(TR::reset__title_create_wallet.into(), HoldToConfirm::new()) + .with_footer(TR::instructions__hold_to_confirm.into(), None) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + _ => Some(FlowMsg::Cancelled), + }) + .one_button_request( + ButtonRequestCode::ResetDevice.with_type("confirm_setup_device"), + ); let store = flow_store() .add(content_intro)? diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 616ab01b64..71d8d639b7 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -794,6 +794,7 @@ pub const TEXT_CHECKLIST_DONE: TextStyle = TextStyle::new(Font::SUB, GREY, BG, G /// the header. [px] pub const SPACING: i16 = 2; +pub const TITLE_HEIGHT: i16 = 42; pub const CONTENT_BORDER: i16 = 0; pub const BUTTON_HEIGHT: i16 = 62; pub const BUTTON_WIDTH: i16 = 78; diff --git a/core/translations/en.json b/core/translations/en.json index ef473a2590..ddb44814b0 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -388,6 +388,8 @@ "instructions__swipe_up": "Swipe up", "instructions__tap_to_confirm": "Tap to confirm", "instructions__tap_to_start": "Tap to start", + "instructions__hold_to_confirm": "Hold to confirm", + "instructions__continue_holding": "Continue\nholding", "joint__title": "Joint transaction", "joint__to_the_total_amount": "To the total amount:", "joint__you_are_contributing": "You are contributing:", From 3a8595b43a68e4749c502ac941e97945578bccd1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 8 May 2024 14:53:21 +0200 Subject: [PATCH 192/626] fix(core): ensure circles with radius zero are not rendered [no changelog] --- core/embed/rust/src/ui/shape/canvas/common.rs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/core/embed/rust/src/ui/shape/canvas/common.rs b/core/embed/rust/src/ui/shape/canvas/common.rs index 66f41441bf..ebc88ff7a3 100644 --- a/core/embed/rust/src/ui/shape/canvas/common.rs +++ b/core/embed/rust/src/ui/shape/canvas/common.rs @@ -375,6 +375,10 @@ pub trait Canvas: BasicCanvas { // Draws circle with the specified center and the radius. #[cfg(not(feature = "ui_antialiasing"))] fn draw_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { + if radius == 0 { + return; + } + let split = unwrap!(circle_points(radius).last()).v; let r = Rect::new( @@ -437,6 +441,10 @@ pub trait Canvas: BasicCanvas { /// Draws filled circle with the specified center and the radius. #[cfg(not(feature = "ui_antialiasing"))] fn fill_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { + if radius == 0 { + return; + } + let split = unwrap!(circle_points(radius).last()).v; let r = Rect::new( @@ -500,6 +508,10 @@ pub trait Canvas: BasicCanvas { /// radius. #[cfg(feature = "ui_antialiasing")] fn fill_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { + if radius == 0 { + return; + } + let split = unwrap!(circle_points(radius).last()).v; let alpha_mul = |a: u8| -> u8 { ((a as u16 * alpha as u16) / 255) as u8 }; @@ -590,6 +602,10 @@ pub trait Canvas: BasicCanvas { mut end: f32, color: Color, ) { + if radius == 0 { + return; + } + start = (360.0 + start % 360.0) % 360.0; end = (360.0 + end % 360.0) % 360.0; @@ -715,6 +731,10 @@ fn fill_octant( mut u2: i16, fill: &mut impl FnMut(Option<Point>, u8, Point, u8), ) { + if radius == 0 { + return; + } + // Starting end ending points on if u1 > u2 { (u1, u2) = (u2, u1); From 491aeaa0f5ff5aba7d6f7e5362f977c3d4085b3b Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 29 May 2024 10:31:25 +0200 Subject: [PATCH 193/626] feat(core): add value info to brightness dialog in mercury [no changelog] --- .../component/number_input_slider.rs | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs index 8af13045ad..4075f1ad23 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -1,10 +1,13 @@ -use crate::ui::{ - component::{base::ComponentExt, Child, Component, Event, EventCtx}, - constant::screen, - display, - event::TouchEvent, - geometry::{Grid, Insets, Point, Rect}, - shape::{self, Renderer}, +use crate::{ + strutil::ShortString, + ui::{ + component::{base::ComponentExt, Child, Component, Event, EventCtx}, + constant::screen, + display, + event::TouchEvent, + geometry::{Alignment, Grid, Insets, Point, Rect}, + shape::{self, Renderer}, + }, }; use super::{theme, Button, ButtonMsg}; @@ -17,15 +20,20 @@ pub enum NumberInputSliderDialogMsg { pub struct NumberInputSliderDialog { area: Rect, + text_area: Rect, input: Child<NumberInputSlider>, cancel_button: Child<Button>, confirm_button: Child<Button>, + min: u16, + max: u16, + val: u16, } impl NumberInputSliderDialog { pub fn new(min: u16, max: u16, init_value: u16) -> Self { Self { area: Rect::zero(), + text_area: Rect::zero(), input: NumberInputSlider::new(min, max, init_value).into_child(), cancel_button: Button::with_text("CANCEL".into()) .styled(theme::button_cancel()) @@ -33,6 +41,9 @@ impl NumberInputSliderDialog { confirm_button: Button::with_text("CONFIRM".into()) .styled(theme::button_confirm()) .into_child(), + min, + max, + val: init_value, } } @@ -50,7 +61,9 @@ impl Component for NumberInputSliderDialog { let content_area = self.area.inset(Insets::top(2 * theme::BUTTON_SPACING)); let (_, content_area) = content_area.split_top(30); let (input_area, _) = content_area.split_top(15); - let (_, button_area) = content_area.split_bottom(button_height); + let (text_area, button_area) = content_area.split_bottom(button_height); + + self.text_area = text_area; let grid = Grid::new(button_area, 1, 2).with_spacing(theme::KEYBOARD_SPACING); self.input.place(input_area.inset(Insets::sides(20))); @@ -61,6 +74,7 @@ impl Component for NumberInputSliderDialog { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { if let Some(value) = self.input.event(ctx, event) { + self.val = value; return Some(Self::Msg::Changed(value)); } if let Some(ButtonMsg::Clicked) = self.cancel_button.event(ctx, event) { @@ -80,6 +94,18 @@ impl Component for NumberInputSliderDialog { fn render<'s>(&self, target: &mut impl Renderer<'s>) { self.input.render(target); + + let mut str = ShortString::new(); + let val_pct = (100 * (self.val - self.min)) / (self.max - self.min); + + unwrap!(ufmt::uwrite!(str, "{} %", val_pct)); + + shape::Text::new(self.text_area.center(), &str) + .with_font(theme::TEXT_NORMAL.text_font) + .with_fg(theme::TEXT_NORMAL.text_color) + .with_align(Alignment::Center) + .render(target); + self.cancel_button.render(target); self.confirm_button.render(target); } From c8c7001301d9249886f3a363e9cc23118c14d523 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 8 May 2024 14:56:19 +0200 Subject: [PATCH 194/626] feat(core): implement tap to confirm in mercury UI [no changelog] --- .../src/ui/model_mercury/component/mod.rs | 6 + .../model_mercury/component/prompt_screen.rs | 141 +++------- .../model_mercury/component/tap_to_confirm.rs | 255 ++++++++++++++++++ 3 files changed, 298 insertions(+), 104 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 3e2285b2e3..5c0575efdb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -26,6 +26,7 @@ pub mod number_input_slider; #[cfg(feature = "translations")] mod page; mod progress; +#[cfg(feature = "translations")] mod prompt_screen; mod result; mod scroll; @@ -36,6 +37,8 @@ mod share_words; mod simple_page; mod status_screen; mod swipe_up_screen; +#[cfg(feature = "translations")] +mod tap_to_confirm; mod welcome_screen; #[cfg(feature = "translations")] @@ -72,6 +75,7 @@ pub use number_input_slider::NumberInputSliderDialog; #[cfg(feature = "translations")] pub use page::ButtonPage; pub use progress::Progress; +#[cfg(feature = "translations")] pub use prompt_screen::PromptScreen; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; @@ -82,6 +86,8 @@ pub use share_words::ShareWords; pub use simple_page::SimplePage; pub use status_screen::StatusScreen; pub use swipe_up_screen::{SwipeUpScreen, SwipeUpScreenMsg}; +#[cfg(feature = "translations")] +pub use tap_to_confirm::TapToConfirm; pub use vertical_menu::{VerticalMenu, VerticalMenuChoiceMsg}; pub use welcome_screen::WelcomeScreen; diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index fcbd39ca37..c330100d94 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -1,78 +1,41 @@ -use crate::{ - time::Duration, - ui::{ - component::{Component, Event, EventCtx}, - display::Color, - geometry::{Alignment2D, Offset, Rect}, - shape, - shape::Renderer, - util::animation_disabled, - }, +use crate::ui::{ + component::{Component, Event, EventCtx}, + geometry::Rect, + model_mercury::theme, + shape::Renderer, }; -use super::{theme, Button, ButtonContent, ButtonMsg}; - -const HOLD_DURATION_MS: u32 = 1000; -const BUTTON_SIZE: i16 = 110; +use super::{HoldToConfirm, TapToConfirm}; /// Component requesting an action from a user. Most typically embedded as a /// content of a Frame and promptin "Tap to confirm" or "Hold to XYZ". #[derive(Clone)] -pub struct PromptScreen { - area: Rect, - button: Button, - circle_color: Color, - circle_pad_color: Color, - circle_inner_color: Color, - dismiss_type: DismissType, -} - -#[derive(Clone)] -enum DismissType { - Tap, - Hold, +pub enum PromptScreen { + Tap(TapToConfirm), + Hold(HoldToConfirm), } impl PromptScreen { pub fn new_hold_to_confirm() -> Self { - let icon = theme::ICON_SIGN; - let button = Button::new(ButtonContent::Icon(icon)) - .styled(theme::button_default()) - .with_long_press(Duration::from_millis(HOLD_DURATION_MS)); - Self { - area: Rect::zero(), - circle_color: theme::GREEN, - circle_pad_color: theme::GREY_EXTRA_DARK, - circle_inner_color: theme::GREEN_LIGHT, - dismiss_type: DismissType::Hold, - button, - } + PromptScreen::Hold(HoldToConfirm::new()) } pub fn new_tap_to_confirm() -> Self { - let icon = theme::ICON_SIMPLE_CHECKMARK; - let button = Button::new(ButtonContent::Icon(icon)).styled(theme::button_default()); - Self { - area: Rect::zero(), - circle_color: theme::GREEN, - circle_inner_color: theme::GREEN, - circle_pad_color: theme::GREY_EXTRA_DARK, - dismiss_type: DismissType::Tap, - button, - } + PromptScreen::Tap(TapToConfirm::new( + theme::GREEN, + theme::GREEN, + theme::GREY_EXTRA_DARK, + theme::GREEN_LIGHT, + )) } pub fn new_tap_to_cancel() -> Self { - let icon = theme::ICON_SIMPLE_CHECKMARK; - let button = Button::new(ButtonContent::Icon(icon)).styled(theme::button_default()); - Self { - area: Rect::zero(), - circle_color: theme::ORANGE_LIGHT, - circle_inner_color: theme::ORANGE_LIGHT, - circle_pad_color: theme::GREY_EXTRA_DARK, - dismiss_type: DismissType::Tap, - button, - } + PromptScreen::Tap(TapToConfirm::new( + theme::ORANGE_LIGHT, + theme::ORANGE_LIGHT, + theme::GREY_EXTRA_DARK, + theme::ORANGE_DIMMED, + )) } } @@ -80,30 +43,17 @@ impl Component for PromptScreen { type Msg = (); fn place(&mut self, bounds: Rect) -> Rect { - self.area = bounds; - self.button.place(Rect::snap( - self.area.center(), - Offset::uniform(BUTTON_SIZE), - Alignment2D::CENTER, - )); - bounds + match self { + PromptScreen::Tap(t) => t.place(bounds), + PromptScreen::Hold(h) => h.place(bounds), + } } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - let btn_msg = self.button.event(ctx, event); - match (&self.dismiss_type, btn_msg) { - (DismissType::Tap, Some(ButtonMsg::Clicked)) => { - return Some(()); - } - (DismissType::Hold, Some(ButtonMsg::LongPressed)) => { - return Some(()); - } - (DismissType::Hold, Some(ButtonMsg::Clicked)) if animation_disabled() => { - return Some(()); - } - _ => (), + match self { + PromptScreen::Tap(t) => t.event(ctx, event), + PromptScreen::Hold(h) => h.event(ctx, event), } - None } fn paint(&mut self) { @@ -111,30 +61,10 @@ impl Component for PromptScreen { } fn render<'s>(&self, target: &mut impl Renderer<'s>) { - shape::Circle::new(self.area.center(), 70) - .with_fg(self.circle_pad_color) - .with_bg(theme::BLACK) - .with_thickness(20) - .render(target); - shape::Circle::new(self.area.center(), 50) - .with_fg(self.circle_color) - .with_bg(theme::BLACK) - .with_thickness(2) - .render(target); - shape::Circle::new(self.area.center(), 48) - .with_fg(self.circle_pad_color) - .with_bg(theme::BLACK) - .with_thickness(8) - .render(target); - matches!(self.dismiss_type, DismissType::Hold).then(|| { - shape::Circle::new(self.area.center(), 40) - .with_fg(self.circle_inner_color) - .with_bg(theme::BLACK) - .with_thickness(2) - .render(target); - }); - self.button - .render_content(target, self.button.style(), 0xff); + match self { + PromptScreen::Tap(t) => t.render(target), + PromptScreen::Hold(h) => h.render(target), + } } } @@ -145,6 +75,9 @@ impl crate::ui::flow::Swipable<()> for PromptScreen {} impl crate::trace::Trace for PromptScreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("PromptScreen"); - t.child("button", &self.button); + match self { + PromptScreen::Tap(c) => t.child("TapToConfirm", c), + PromptScreen::Hold(c) => t.child("HoldToConfirm", c), + } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs new file mode 100644 index 0000000000..237118d22e --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs @@ -0,0 +1,255 @@ +use crate::{ + time::Duration, + ui::{ + component::{Component, Event, EventCtx}, + display::Color, + geometry::{Alignment2D, Offset, Rect}, + lerp::Lerp, + shape, + shape::Renderer, + util::animation_disabled, + }, +}; + +use super::{theme, Button, ButtonContent, ButtonMsg}; + +use crate::{time::Stopwatch, ui::constant::screen}; +use pareen; + +#[derive(Default, Clone)] +struct TapToConfirmAmin { + pub timer: Stopwatch, +} + +impl TapToConfirmAmin { + const DURATION_MS: u32 = 600; + + pub fn is_active(&self) -> bool { + self.timer + .is_running_within(Duration::from_millis(Self::DURATION_MS)) + } + + pub fn is_finished(&self) -> bool { + self.timer.elapsed() >= Duration::from_millis(Self::DURATION_MS) + } + pub fn eval(&self) -> f32 { + if animation_disabled() { + return 0.0; + } + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + pub fn get_parent_cover_opacity(&self, t: f32) -> u8 { + let parent_cover_opacity = pareen::constant(0.0).seq_ease_in_out( + 0.0, + easer::functions::Cubic, + 0.2, + pareen::constant(1.0), + ); + u8::lerp(0, 255, parent_cover_opacity.eval(t)) + } + pub fn get_circle_scale(&self, t: f32) -> i16 { + let circle_scale = pareen::constant(0.0).seq_ease_in_out( + 0.0, + easer::functions::Cubic, + 0.58, + pareen::constant(1.0), + ); + i16::lerp(0, 80, circle_scale.eval(t)) + } + pub fn get_circle_color(&self, t: f32, final_color: Color) -> Color { + let circle_color = pareen::constant(0.0).seq_ease_in_out( + 0.0, + easer::functions::Cubic, + 0.55, + pareen::constant(1.0), + ); + + Color::lerp(Color::black(), final_color, circle_color.eval(t)) + } + + pub fn get_circle_opacity(&self, t: f32) -> u8 { + let circle_opacity = pareen::constant(0.0).seq_ease_in_out( + 0.2, + easer::functions::Cubic, + 0.8, + pareen::constant(1.0), + ); + u8::lerp(255, 0, circle_opacity.eval(t)) + } + + pub fn get_pad_opacity(&self, t: f32) -> u8 { + let pad_opacity = pareen::constant(0.0).seq_ease_in_out( + 0.2, + easer::functions::Cubic, + 0.4, + pareen::constant(1.0), + ); + u8::lerp(255, 0, pad_opacity.eval(t)) + } + + pub fn get_black_mask_scale(&self, t: f32) -> i16 { + let black_mask_scale = pareen::constant(0.0).seq_ease_in_out( + 0.2, + easer::functions::Cubic, + 0.8, + pareen::constant(1.0), + ); + i16::lerp(0, 400, black_mask_scale.eval(t)) + } + + pub fn start(&mut self) { + self.timer.start(); + } + + pub fn reset(&mut self) { + self.timer = Stopwatch::new_stopped(); + } +} + +/// Component requesting a Tap to confirm action from a user. Most typically +/// embedded as a content of a Frame. +#[derive(Clone)] +pub struct TapToConfirm { + area: Rect, + button: Button, + circle_color: Color, + circle_pad_color: Color, + circle_inner_color: Color, + mask_color: Color, + anim: TapToConfirmAmin, +} + +#[derive(Clone)] +enum DismissType { + Tap, + Hold, +} + +impl TapToConfirm { + pub fn new( + circle_color: Color, + circle_inner_color: Color, + circle_pad_color: Color, + mask_color: Color, + ) -> Self { + let button = Button::new(ButtonContent::Empty).styled(theme::button_default()); + Self { + area: Rect::zero(), + circle_color, + circle_inner_color, + circle_pad_color, + mask_color, + button, + anim: TapToConfirmAmin::default(), + } + } +} + +impl Component for TapToConfirm { + type Msg = (); + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.button.place(Rect::snap( + self.area.center(), + Offset::uniform(80), + Alignment2D::CENTER, + )); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let btn_msg = self.button.event(ctx, event); + match btn_msg { + Some(ButtonMsg::Pressed) => { + self.anim.start(); + ctx.request_anim_frame(); + ctx.request_paint(); + } + Some(ButtonMsg::Released) => { + self.anim.reset(); + ctx.request_anim_frame(); + ctx.request_paint(); + } + Some(ButtonMsg::Clicked) => { + if animation_disabled() { + return Some(()); + } + } + _ => (), + } + if self.anim.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } + if self.anim.is_finished() { + return Some(()); + }; + + None + } + + fn paint(&mut self) { + unimplemented!() + } + + fn render<'s>(&self, target: &mut impl Renderer<'s>) { + const PAD_RADIUS: i16 = 70; + const PAD_THICKNESS: i16 = 20; + const CIRCLE_RADIUS: i16 = 50; + const INNER_CIRCLE_RADIUS: i16 = 40; + const CIRCLE_THICKNESS: i16 = 2; + + let t = self.anim.eval(); + + let center = self.area.center(); + + shape::Bar::new(screen()) + .with_fg(theme::BLACK) + .with_bg(theme::BLACK) + .with_alpha(self.anim.get_parent_cover_opacity(t)) + .render(target); + + shape::Circle::new(center, PAD_RADIUS) + .with_fg(self.circle_pad_color) + .with_bg(theme::BLACK) + .with_thickness(PAD_THICKNESS) + .with_alpha(self.anim.get_pad_opacity(t)) + .render(target); + shape::Circle::new(center, CIRCLE_RADIUS) + .with_fg(self.circle_color) + .with_bg(theme::BLACK) + .with_thickness(CIRCLE_THICKNESS) + .render(target); + shape::Circle::new(center, CIRCLE_RADIUS - CIRCLE_THICKNESS) + .with_fg(self.circle_pad_color) + .with_bg(theme::BLACK) + .with_thickness(CIRCLE_RADIUS - CIRCLE_THICKNESS - INNER_CIRCLE_RADIUS) + .render(target); + shape::Circle::new(center, self.anim.get_circle_scale(t)) + .with_fg(self.anim.get_circle_color(t, self.mask_color)) + .with_alpha(self.anim.get_circle_opacity(t)) + .render(target); + shape::Circle::new(center, self.anim.get_black_mask_scale(t)) + .with_fg(theme::BLACK) + .render(target); + + shape::ToifImage::new(center, theme::ICON_SIMPLE_CHECKMARK.toif) + .with_fg(theme::GREY) + .with_alpha(255 - self.anim.get_parent_cover_opacity(t)) + .with_align(Alignment2D::CENTER) + .render(target); + } +} + +#[cfg(feature = "micropython")] +impl crate::ui::flow::Swipable<()> for TapToConfirm {} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for TapToConfirm { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("StatusScreen"); + t.child("button", &self.button); + } +} From 47a2661736a682dcf8e882a8e73d614959487599 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 29 May 2024 12:08:30 +0200 Subject: [PATCH 195/626] feat(core): respect disable animations in hold to confirm [no changelog] --- .../src/ui/model_mercury/component/hold_to_confirm.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs index fc271db6ce..6ea0b1556f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -8,6 +8,7 @@ use crate::{ lerp::Lerp, shape, shape::Renderer, + util::animation_disabled, }, }; @@ -40,6 +41,10 @@ impl HoldToConfirmAnim { } pub fn eval(&self) -> f32 { + if animation_disabled() { + return 0.0; + } + self.timer.elapsed().to_millis() as f32 / 1000.0 } @@ -210,6 +215,11 @@ impl Component for HoldToConfirm { ctx.request_paint(); } Some(ButtonMsg::Clicked) => { + if animation_disabled() { + #[cfg(feature = "haptic")] + haptic::play(HapticEffect::HoldToConfirm); + return Some(()); + } self.anim.reset(); ctx.request_anim_frame(); ctx.request_paint(); From 17072faa6522af68d96b765191c3a13917e92b0d Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 9 May 2024 10:47:14 +0200 Subject: [PATCH 196/626] feat(core): animate status screen in mercury ui [no changelog] --- .../model_mercury/component/status_screen.rs | 118 ++++++++++++++++-- 1 file changed, 109 insertions(+), 9 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index dde3d7ac3a..0ee73362d8 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -1,13 +1,87 @@ -use crate::ui::{ - component::{Component, Event, EventCtx, Swipe, SwipeDirection, Timeout}, - display::{Color, Icon}, - geometry::{Alignment2D, Rect}, - shape, - shape::Renderer, +use crate::{ + time::{Duration, Stopwatch}, + ui::{ + component::{Component, Event, EventCtx, Swipe, SwipeDirection, Timeout}, + constant::screen, + display::{Color, Icon}, + geometry::{Alignment2D, Insets, Rect}, + lerp::Lerp, + shape, + shape::Renderer, + util::animation_disabled, + }, }; use super::theme; +const TIMEOUT_MS: u32 = 2000; + +#[derive(Default, Clone)] +struct StatusAnimation { + pub timer: Stopwatch, +} + +impl StatusAnimation { + pub fn is_active(&self) -> bool { + self.timer + .is_running_within(Duration::from_millis(TIMEOUT_MS)) + } + + pub fn eval(&self) -> f32 { + if animation_disabled() { + return 1.0; + } + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + pub fn get_instruction_opacity(&self, t: f32) -> u8 { + let instruction_opacity = pareen::constant(0.0).seq_ease_in_out( + 0.0, + easer::functions::Cubic, + 0.42, + pareen::constant(1.0), + ); + u8::lerp(0, 255, instruction_opacity.eval(t)) + } + + pub fn get_content_opacity(&self, t: f32) -> u8 { + let content_opacity = pareen::constant(0.0).seq_ease_in_out( + 0.18, + easer::functions::Cubic, + 0.2, + pareen::constant(1.0), + ); + + u8::lerp(0, 255, content_opacity.eval(t)) + } + + pub fn get_circle_radius(&self, t: f32) -> i16 { + let circle_scale = pareen::constant(0.0).seq_ease_out( + 0.2, + easer::functions::Cubic, + 0.4, + pareen::constant(1.0), + ); + + const CIRCLE_DIAMETER_MAX: i16 = 170; + const CIRCLE_DIAMETER_MIN: i16 = 80; + + i16::lerp( + CIRCLE_DIAMETER_MAX / 2, + CIRCLE_DIAMETER_MIN / 2, + circle_scale.eval(t), + ) + } + + pub fn start(&mut self) { + self.timer.start(); + } + + pub fn reset(&mut self) { + self.timer = Stopwatch::new_stopped(); + } +} + /// Component showing status of an operation. Most typically embedded as a /// content of a Frame and showing success (checkmark with a circle around). #[derive(Clone)] @@ -17,6 +91,7 @@ pub struct StatusScreen { icon_color: Color, circle_color: Color, dismiss_type: DismissType, + anim: StatusAnimation, } #[derive(Clone)] @@ -25,8 +100,6 @@ enum DismissType { Timeout(Timeout), } -const TIMEOUT_MS: u32 = 2000; - impl StatusScreen { fn new(icon: Icon, icon_color: Color, circle_color: Color, dismiss_style: DismissType) -> Self { Self { @@ -35,6 +108,7 @@ impl StatusScreen { icon_color, circle_color, dismiss_type: dismiss_style, + anim: StatusAnimation::default(), } } @@ -87,6 +161,16 @@ impl Component for StatusScreen { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Event::Attach = event { + self.anim.start(); + ctx.request_paint(); + ctx.request_anim_frame(); + } + if self.anim.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } + match self.dismiss_type { DismissType::SwipeUp(ref mut swipe) => { let swipe_dir = swipe.event(ctx, event); @@ -109,7 +193,9 @@ impl Component for StatusScreen { } fn render<'s>(&self, target: &mut impl Renderer<'s>) { - shape::Circle::new(self.area.center(), 40) + let t = self.anim.eval(); + + shape::Circle::new(self.area.center(), self.anim.get_circle_radius(t)) .with_fg(self.circle_color) .with_bg(theme::BLACK) .with_thickness(2) @@ -118,6 +204,20 @@ impl Component for StatusScreen { .with_align(Alignment2D::CENTER) .with_fg(self.icon_color) .render(target); + + //content + header cover + shape::Bar::new(self.area.outset(Insets::top(self.area.y0))) + .with_fg(theme::BLACK) + .with_bg(theme::BLACK) + .with_alpha(255 - self.anim.get_content_opacity(t)) + .render(target); + + //instruction cover + shape::Bar::new(screen().inset(Insets::top(self.area.y1))) + .with_fg(theme::BLACK) + .with_bg(theme::BLACK) + .with_alpha(255 - self.anim.get_instruction_opacity(t)) + .render(target); } } From 510121bad342d1f900ca123e131448d577a25e39 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sat, 1 Jun 2024 15:04:39 +0200 Subject: [PATCH 197/626] chore(core): update T3T1 fixtures [no changelog] --- tests/ui_tests/fixtures.json | 3120 +++++++++++++++++----------------- 1 file changed, 1560 insertions(+), 1560 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 3b8ed8375b..57f48a7ccd 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15472,16 +15472,16 @@ "T3T1": { "click_tests": { "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ac67a6186ddbd139067a725765b9562cf96533f9dffc5a0881eb7e9cb7a32f1e", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "d51ba1050a1a13d9df41d98a23a6ef9bb1ee38b871d469dc45e1a4330e81e7dd", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "27940ae2ca1ee267af895fedd8f69a039b223a7a730d531400d08f7bf8c1f03b", "T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "c74f42626b961bebe469b9f59b2e29629cae0be2e239879059d6d4471e59b998", "T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "f0645c27e9ed32b657b92856b6c137e1347f62306ec1ac99ea5197af409fdf84", "T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "2607a8ddfaa850ab98c5fe09ca41e212f5538f6c792f8c135c5399bb9a2a11ac", "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "c2dfe5a4968ec90ef6078a6608bef15147a53751f820f39b1518380244f2f846", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "ee776d69887f468c92457a3306c5b0aa3f175e6ba70755f2781c6eb3196494bd", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "ca720be36d9c8cf40ceff1b99ae3f0a1fe4e97a33d3c2002a45f27a5f30a45da", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "e8e0b9616f8293416273a1598698eb82cde260f027b5317a0f4dd603fc54a1a9", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "16c3d188521b16c27a0bf443c14dead4a708cba10d0d1ceec39211ebab0bd249", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "775a3fb885fc85bb3113099733c2779c76c008d235cf4d87510e1b8ebd6de456", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "89bd54c7977e503fd708f8825ca1939867002e636d110894e26d8e251fd08b5e", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "73f9e82f9a089c643d57b476bb089574cbd0e9de5c9357988991d29b023da9d6", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "51a846a42c45538371f4229e359040230adb36215e3d8313a34ef0b795835fb9", "T3T1_cs_test_lock.py::test_hold_to_lock": "ab815386c5f462ac347e2755013d367465b679c0991257ba9ff7b8f5108523d8", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "f7dbf4445377b08518906b4a25b7d65de109ca98cd000b7b6b5a020deb316c00", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "111548fc15dd051ce6bd87e6ea86cee7bb1dcab4e960f1d5ca8872ae891458c7", @@ -15514,22 +15514,22 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39": "f0834c329cc1491a6ee7366cabff7fb73e64b99649a5dcec95079795cfaa9d01", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "b13cabe20b8adfa628d6b498a19406746cab21ef792d3925bdbc964c90d2673e", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "648e940fa077ab5095a22a4cc4cff8a9c524a46b8f70f63bf3e4539ecc84da6a", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e854ea31f9326c7e559c1f1b9daad7bfc39f25b42088e45984a06eb76acbfcaf", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "39ed96ed3150eac94e2540de3b0b92ec2a049966bf3918c132aa1c9b8479a1b8", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bff7e9655e49e369973449c681a9da79cf22ae708e8f7dc807a91ea11d12ebb2", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "02abe290ce98b13363844e5cb707bfc9eed707f8d52d5727906982a9875423f1", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1c8b3ef296ead98cb3b043ed403907bcafd09dc8322195930ab79bd8ba4a43a6", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "c845c1d13aa8e8096e904920d35938a9e4b9398b052bc7cfc047c8d9424550c5", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "165d6faa548adef9e36f45296c4d08caf5debc6a110e12081b0a320909488687", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "22e52c1e41869dafa917375e486e78f9b1ac51f58eecf73502f67ae5da0d72b8", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "9bac28c6e70ad62e3b80cf86b299b71062f1ab5f898bcf68c41daf4df5ad7e43", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d45fbdfe2efd848aa9a164006f8182e981b7bd46f4ddd852dc4928306ea0a7d4", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b61f4b5878793269b7207a67cb4e2697085ff8f8cba9362dc7459d280d082c9c", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "8bc80fc91d20f028c2bfdf8f40700a0f1fcf48a9095d8ee10b8692d300575f5c", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "575a36c0cb19a3cf94d5eaef03d6ad68b5cb93adbfd5117ac2e1a2b553648afe", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7905ca51d068ab83e75bc41ed155ca9ea5350508dbc1c158a91d70755b59783f", "T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "0c748997cb5ee5189bf64c30a9ca7715160af36de740799533b3bccc798c5b4d", "T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "ff93135c594fd9003cb59fd49927b53999a1b75e0851394683dd194e3fe12146", "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "093ebe89b64daac1970426853e84e99d27f7d4b491d7ddf65ef4bb867bd4358c", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "21c31be7e151acf37c2ff69a541ad871bb98ab797c94c1d1020f94eff68bc605", "T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "bda293f6f3b2d0b56aa6d876c8102562b71f1ebc808b2fac362138f00ef1680a", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b70b66bf3c30c265a34d1ef59bee700685af4ba07a31e296a0139dfb262c2058", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "31484c09d1a450fc32bc046e385d3f56f3f200a7d8bb15a0bc286ad46b262b4b", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1cf6b1b2e674e2aa9ed44649f7e51d2ceafea7d2bf59584c02fb0d800f2c8d5a", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6d1eb6918b0807926e38b3f488995984380262c1b2ac4d68efbee2a3df1a468b", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4e03cdaf37e40ff1e0b3c7ad2ffe74ff5e53e1c88c6758082a8e6c93e7a30ee3", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b85e9125633304f987e2e18540f120d163b79b97f524830d28ba582f346b0859", "T3T1_de_test_lock.py::test_hold_to_lock": "1b1e29f86500569b2dd7e78fe51a8f9dcf244c9a419ffdabd866983fd47380cf", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "a2aa71e638459f399b1484119520eff4abf7ad0c5d435d785dcdb0e20886fef6", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "f601a2c7f5dfc10da5b4de1aae35768eb14c7eaefa00ed86d2ec014822e1c49e", @@ -15562,22 +15562,22 @@ "T3T1_de_test_recovery.py::test_recovery_bip39": "15f6d7bd3867e6463f9006d50f3258898d82c248e8f05976e977bf5d83dabde9", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "6415d9ed0abac403be474f556c595aa641bb1c72a4817e7211561299adfee0e2", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "e3df12a36ab08f8f895656078533f1eb122242a58a81ebbe84ff094402ffce12", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "8be3b4f264daf7cc5e5dfae89840ffeb87ff7ccd90681d1cbfe694ca8e7877b0", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b88f3b3660d42a09d44665b3324b7082bd1ca72d24e1a1a849c529193b6708c3", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aae031061e8234f1ffaf6748f79fc9645a26bc5a74de114268fbd9e154002566", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "416dfacd01feca039fa215915da061692276da61a20ba6d2c66c76249b44d65b", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2a7571c95f6a6ff283a5d19b2fb6eff5cb97654084f62093295d24fe9e11dc50", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "c6c13076a550f10f2699f8281d735569f2d188d403b47cae7a16bb509921723d", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "7f91012dd18233171fb524bc15b1b72a515c091e517ad4e892c9cad584890c3a", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0537d3be68bff6fe73037ea82cbb1134cb355997284268b56714e3dc69984ffb", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5d0637e9e30396a6041a3ae5e12e285025ab8b35d81767f56a6b34a756ee637c", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "50dd042b646163128dd8b67caebd9d0fef38e6f255ffdc94a6b801b411269202", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "78b63a30649f282fad2be5c1db70d3b20491c3517fc77c7deafcc0fa9602de63", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "d432ff8bf0574b1a08586bd7dcfd248b6242d64a4cfd901a1b8bcd54c27c01f6", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "44d58c7a769b9a81383a3297505740517ef13d686b6ae5a94904b9b49ceafc6a", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "97751db637df03f06121b3f74efd24d2cf3c02faab99c14ba8212f087990c161", "T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "489087ea2f4697c1dbf28fd74ee844c2c24b77719c5a7077e5779f48e37869e8", "T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "dda7a9c378443375063e481174619dd777a4742c8f18d89ec2fcef8bc45025f9", "T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "efadd078c1028f68ffa0401b536ba36a99d716e96268d57e10e205b91bb5a18a", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "83c99265485a3cfa4373af80c14dbe72167a34f3e16bc716fce5dabdafda30fc", "T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "103da751954f4b5e7b647c3d1366906e99ed86b19dc4c49a98f88de4d1eec218", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "83caf4f90628d5b70b783347ecc96f9abf5ec61aaadb0eb7609562991efee03e", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "17ff00ed05e5b253d0634914f96688de5bded85085e8b12c5073faf3415b8149", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c60d3bb3076c2345a3e8e7993872e2648c3c1de037a02fbb77271a4b0d79b072", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7a6a4afd15be5016304cb14428bba6f1b4db7c4ece6b5f5143f6411bc708630c", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9c700310429fcb419b1603c825855f60f45b0b7c707d4c0b5da96bcda4c9668e", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f68850015988936702af659d3da93ab481381460d8af7fcb15357b922b9aa46f", "T3T1_en_test_lock.py::test_hold_to_lock": "357626f19891dec50bdbd63de82a9a109a7a1b369dc80c57795821a61aa6517c", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "76f2e768206149132686e9a239df0c0d5761a7ad6e596f6a000c28da8ba87ae8", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "e73d3959b333059e1d3aa20f02378f00631596e7a2690ce6176cf2173153bd55", @@ -15610,22 +15610,22 @@ "T3T1_en_test_recovery.py::test_recovery_bip39": "a5c4c6d7b45a390363133fcadccd3f275fca0b3f95064ca3873686eac5b69679", "T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b9c54f11c943d9de5152f85e4d08f27730f8ac042321d86cd59273bf9b030031", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "87000616f6fa2d05c05b5fbfa5c9dbac5732d4328570dd0c00a3514fe244aade", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "75f32f26c59273ff1efc0b97689c24e1139a5f267dd9b6ca95f3ca58006e752c", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e22a3f80f679cc51fd47867e173bab5277895d78d8506adc69dedc732d64f082", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8aa686ff10808a365e91b6755d1bb72753e2b594c6bf0023897785ab92e4a0ba", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "16ebce6d694cf5eaabb10c99aa13efd0ab090e01b78959dd3c029c27587b03f5", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "19e7c509b4b506f906201d15f3b941bf66b6c0f0acccf69e4d5165e1acb99821", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "55b4e0e19268ce349c6a48100878eb5069c34c1893ae6000758d3de303112945", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c355fde729ef67c71416ccb18b8d4dc0bbe20ca657eff3aa8d16102dde217941", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f93201c54fd30026f348dd0f1447a0c2d870a1a4058357e4fb22177650cebdeb", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "061b2460e3fedcf860438fab2cdaf0631e096b335d0aadddd3f562c64fd01692", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "97a1dd9f458fb4a569834f0b55379a54e0923bcc99d02391b068a60fca90ef00", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d5e022d2f8bc10aba212fcaf4dd17d2212d8dea16b61fee96d720e1713175141", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "c51a2ede71f5a0abc9a984c6a03e251bf9708080adb20549efecf8b056050dfc", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e2dae9825d2e0e0f486806acd1160eb5c247fd48f4ab8c64c018c74c0c9cf827", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "964c12942c4ae6341d0a77438651d64f3778e64f62587ec01020e551fe00b04b", "T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "285fbd23f5c9acbf92b076f5f065ed4f7ff4a079de6a6b4885f992dcda137adf", "T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "a3c951206f50b0ef4a14d07782251a1e06a3495e619e66c3cd125084d9dc23b1", "T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "45b88ea70e5b3a24b1e4a91bfad7df0ab50b348b76796b504193bd697dc7cf31", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "32dffe9b2fd28789b9d481b6be94af049e8319dd6312d2d945f994756a16fddd", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "03232e4a4b32939fc90ade69a96b20f5d241b4f0e513f3964aca36a8714622a1", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "81bfe6cb1f67b57f5fb38c9564c6430efb7cdabbb876db027edd62a67a2a1579", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "cc89bd4d5bbf2d7253a1ffe0a5767f93cb147bdf463a260dbe5caace789c708e", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "94159596ece98c5b448136cc7409cf175646e0aab86d8c94b6d95b90582aef0c", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f737f81273b082cc5341ae9e13af7466e93f81bbc93e63002480b58168d6c353", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "91af2209a78cfe886ff4e0f9c5939e06ddc912773791abc6730acc3fbdf74e49", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "5220916b2da12f0b9390dfc7791c17d892e850ca5bf02deaed7b7b2d07e9e936", "T3T1_es_test_lock.py::test_hold_to_lock": "f54801e048c2230c9cb28e3145b2e5304159d342e4292ade8c347860ab59d6b2", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "16ddaa112b64dc49c3f72d64f53923a51c7e00d91f3ec303c0e530ffc651aed5", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "d84b27ae2946e1aedf774d9cf53b4816c0f88f09fde4dfb0baa0770909f04862", @@ -15658,22 +15658,22 @@ "T3T1_es_test_recovery.py::test_recovery_bip39": "58e77b20850802f93d05eeac57172461fc9d0219db41373f88495df9b7d07fab", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "dd7e305b6558721eac4b7b3a5588eab30b122ae336572809b717166147aab2d3", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "4410c661bf3a0e8abef2c51f9f7161a473ac57cad1c727799dcf650ab57ef110", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "5f2bcaf5e6b1c5e42862219464304f4942c896bbec3b0f075f8a67d0696c44d7", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4d9d8eaa1b7abf9bd51f5a2fe32223e8bed8fa241287622be9e28d292c6c816f", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4248c25098cd739110645fcc7e37842e766831d7729af61b43b6ffe8046c8110", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4dbc8be3eff397d894b46e39ae37d9b29cfeef0e3deb930fec02a725c04e6a3b", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "94d6abdd282ae2842436d2c109b61b440f9e0551be822cdfb6a310dc666c7eb6", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "5058cb85e0e971361d81c192310362cbedf222583d9dc88290b944aab366c483", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4ea10f805e11d8a8f5dc2d84b29a8d397430355d88f7a2bf84f9150507f528d2", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3818e1e1e37f9f20bf7ba615018ca06c10f1bb05e3a075142aa4c215f012fb94", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "84268fafff3d2ed241f52e3d93d060bda32c807ca98e167cd956b2fdd34ed95a", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "159e36d3484840de6a4f4eb9f3a3063df277d467de91972020f19cd5973431d2", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "fae052a37baadb776733afe27d8bdc78842b4fbef24d3961a8f1d0d8ef8a54d5", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "de21e78af489622d19287d09aa9090df546884708b256c723d5b046d0cab34cd", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "3c2faebbadcfe45409b37928362f1171005645853295a9ecc37a91d57daea640", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "0963090b34d40100fe350e2c1b43f9a342c0c90f2adf0d8472201e16e8fcc372", "T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "fdba521812b652c1669117b3d9aee098f366d40208388b0851f13f5669b9e64c", "T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b65a1ba474c106cd55ddb7dffd8f8723c65528750b0cc031d84b5522e84c5196", "T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "cb68a0a606a0f1a891dab8f1e3d70ba9c632021be8e84094a5e344175a7b22ad", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "293a6245e066bc298ba8665328a2c5290a88f3231a198213637a349012bc6570", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "268780a30a351292db3776b02c2d425290152c5ff8a760d55b0c0046f331301d", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3406578f72d0ba796f532b3e6de4e114e16aecb71a2c3d384ed58ce42055662e", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "bb0d7ff987103448ed6404c3be2033804d4b7bc0d93dbe1b43103918bb3497bc", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "19903ebed97caf40b33927cdb548f7aafac5d17dee83415ccdcd5e8724ec72f9", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d7f909fda58a57768bc0be0bc7a49449e9762c766f5c29457618ba24ff4826e7", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "bbe50610a98d411067be1f5e410c76b458f2f2b07cb7c6b20b35a04ac5356169", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "5148e4c3df1cfd589e1e6e136edad03f68bd3235138da6b9ecd6e991bb638f0c", "T3T1_fr_test_lock.py::test_hold_to_lock": "cd258db17f1f52b1a406e81974312b65fd64e243d5448f7189e73109f334960b", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "f4ed613dcff69cb04af6dec1af26f36803144c43771a4020eaa84a47f4352ef6", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "fbd83d95ee071d303e1a366119475029bd5c1528db9e061d294ca32dcd70d946", @@ -15706,17 +15706,17 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39": "9ef119922825f53d8751c61c78c6f598314e4f938e59da60410f681a2ce11722", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "a800c1c3a6c32ad6fe70e81e0998cd263682707e1cf6cb1904b35e9211db4d25", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "7a61c403721ce51dcac0774ee851c08b42b87f7d0a0f40293c53e2e9435d9482", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "651d58c2a6bc1daa8ba193141ba11ed75ee6a8d2b794c0174284daf4e34b7449", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "32a4c9ccd863a5a327b3ce7053d5414bb7987dbfffb16516a95324e152beb2d2", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b29ceeb219646273daab05d7a7d98650b0cc8f588aec534744dad5370a54eaf0", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "530edb4f02fcdde53b1760907f2766523caaf7eb00d8de6b66de72b202fa9630", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5e77939010a4b1dfc4ea3bd3b32e17bf9c0a5bdfa9de6d9670d0c4d7bd683b45" +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "a0b7a9c61b80ab8f3004c38190e7ca845bb77ab2d302315eb4dca2ac7a0eb105", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ad480160dcac09a0ce59ba4c45af21c233f07f6ce870a212876935b081013640", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d289e5d2a9a273c91e821440786e7e9cf73277ddd4efdfba80fcc2fc224e4278", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "05cc83bbf4af40e09c7001893fa3bc5d5183b34a7773f4cbf8662dc60367bcee", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "00392f50269476a0492ff2ae0a9d5574fe72ed3348d8de9cd5e38625594d79cf" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "06b89342216a3899627c2209dd92d4cdfd9efb3a0985937b793dba8d7a9c61c4", "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "92df299435ada0a498ff2bed2f387fc69f2a4308094d7c47b3aacbae3642eb1a", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "b395ca04f049c7a0eed141961131bc73ad2857ce8be6c796bde7e6d1e2e785aa", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9c175f90e53db764f83492e20b0d8c6c7faf7c35f18798fd46caf7359090bf92", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "3b8705af01df1058a9a509e22bb8a61d7364b8869e47e5c9a87741e595f980a3", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "47852d7be0d6a9312d57f341eb7dc03e7cc34d7d03c229494440d84ac4dc532e", "T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "621efbe47e39cda831db553353fb565bcdc3bbfb48f6f98190398e6d4854db62", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9ac8bd9db58a4a45f6680b62f8622c6740486b2e2f732ce7530b5ad507457287", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "05d49c5a132973769b4e2b8c18e3759435d432223454f81447aa655798e3ed8d", @@ -15731,17 +15731,17 @@ "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "383bb2a35fa3185d4d7c5d75d8e846eea38a0adb8572459bf99c1c4d32a03038", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "383bb2a35fa3185d4d7c5d75d8e846eea38a0adb8572459bf99c1c4d32a03038", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "c218d949d6c5cdbec4669779e71dd532e90fd2fb2c027bfc9e8065c3c194f386", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "39abe530de095eca0e47c34f066969a880681221bfd3be50971d11738fcf4cc1", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "816b8e0b99fb747f2f1d37323568cafbed2b42c3477d2c4b4e29d28bb620a7f5", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "880ba8e093e3b408f0ed0770c3fd1744f2d8c677b1c63688018baf32077362ce", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7ee5dd106f65d8018aba5fff8605bd8838aecbb29e1c05d6d23e84eb8eb40abf", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "277c0e0b7e3f75986e467d731bfe38b4c26d57616580101cac8606f28ad50d2c", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "277c0e0b7e3f75986e467d731bfe38b4c26d57616580101cac8606f28ad50d2c", -"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "28584c938b31a1e223b67d1b4e9e4da96d31f38dcc0bc1e26255b5e184fd4ce6", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "28584c938b31a1e223b67d1b4e9e4da96d31f38dcc0bc1e26255b5e184fd4ce6", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ce5766a319aa686f96010bb7ed6f8ff1482db22e007ebecf42168e3fe6244ab9", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "8c0c8956ae8088ee3d159c23f0b85f5dbe9bf6f4f92d115ab797177c4a6cab4d", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "80737cb5dca4554d5231975ba0cd606c63122d114d11f019c31b7ebaa0fd3309", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "a0d2640b2bde0394e6b04809302a5dffe509eec8c1f1adc5c8b40aa93736b2ac", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "03272e2d8c34c4fc1b96f1a114f5eb108de6a9f6317aa8cb5e56f6edf246149c", +"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "19a4c265e9adb63d50b12191c1e49f2b9295ef4304a7c2a7a90b09ce002fc93a", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "19a4c265e9adb63d50b12191c1e49f2b9295ef4304a7c2a7a90b09ce002fc93a", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "54f3a0c741639278656947008eed7e2a2cc9bbcff02b5f51f22c10a92b2dcd04", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c48ee9eb76fe9681831f434f74d7399282262cfb7d3ac12eb50e5750cdc445b1", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "252919299d8afe25fc5681239631f291a7b67d01adfd39f80482a72d6c577967", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "f3186702cd5a154b3ae8a2c9627b8c54dcb4867ffa2f508388dc662744ef9332", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a607dcf32d563327a436153352ad4b0951933ef5a7f5bae48132c8596dce64f9", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "a88418842f867c12ccb1a39bf2d41899a40055495a5a29f90491c9bd8c0990fe", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "a2f9b6c1386d88332e3e23cf059907b745de48c115e0972641828618ff5b403d", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f0c615bfd13720d0b91d29b61c46f2ac1f6d34213953c4021dc78b0c94e8f631", @@ -15778,8 +15778,8 @@ "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5bb1ebeedadacf97d0ac73c430a39969abbe7a71c5bb574c05af8f046138cf2c", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "234ad2e949edf27c0eaa4885f9a52114ed1292da6cbc554bc3ef46bcc5c3d72b", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "a0559f0013abfe6e92c219bc39fc02a073ef1425d27c69862e9e0f2a90253d72", -"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "d6ff3c5bf2e6ad35b9bfb810efd307375e3817fc82030c1d613867c6718dadaf", -"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "cc206d2a7f2aea18a2613a1342babb7271a1d52a11f468ad2f4b631a96baf8c3", +"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "aa428050533fe477f08064cff8f2fce35f81d5184dab57794c4173983c95e791", +"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "876a7e183ee8b52a51dd606071de6499a7a4a1875ea596590e72a7396176da8e", "T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_getaddress.py::test_bch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", @@ -15838,10 +15838,10 @@ "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "03054ab464995ae26dc117b8ff95acca4c8755f5693cb223d9c833dde3a04fd7", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b137c1510dd658cff118a7dad6b55cc2eee4313adb5fa679f63680db0bad833e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "0c3d1cd63e3c95290015d4bd1225cdf9a365b995b834eca6c1b20ae1f0534e8d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "cfa8f93374b5efdd0e093e19f952a7a35234dca6b697f9cc1c2c90378b84abb3", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "7b5f26bc8a75c8f3ac14d274b88354e777c5e5bbd208a2a60c69744bd39c9aff", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "26f25956873e481ca327719e875d6c84608dd0b91c0a0c33749ac8d5eb7836c5", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "4cb3511ba2c8ee55e476bac2beae7d5ed8f8582b3cb9fdc9a8971efe574f5160", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "0c71878687b3e1b864338eee0492dc0e9c5caf117e0e7e1ebbb8979cf56705a7", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a08cb48ecd09ea946a3c90c013d416304722a949a091b184382fe40bcafe2e5a", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "109911eab0d10f2fd9d39ea4453ed050835a2c226e92703dbf7cff4d44032328", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "89cec8583fa52ce8b0062dfade0cc16918e9411fd4e507122d31c377abecbf88", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "54fcbb34dcf421416d87ffed2fe60e203236481bbaf22f4b7e1d6e50a7da33df", @@ -15850,14 +15850,14 @@ "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ee68d96efd6774f5848d6eb0deb7404541e2e6847a2d1ed05aaa77dbd1ef6799", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "83780fc04872bbb75a4a3fb3ad10934f206e793f688d0d0cbd5b90c0f32343c2", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e22b48287fc8234b091f757fab6b8dfb9eac163af94cb43dd47b47805eda1e3c", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "cf7dbfd6ae9df55e5944139679ca00ce110c6cf2450e793294b1a5901d7e0a8a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "a47ff3bb0ae1e428b3193b5a90a4fe92ee73858254d57f9d2eb05c831501baf8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "fec488bafd0662768916b0540351b582b91e195bcd5392f31d4fc2efb13d60d0", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "d55df0e9ef141452eb73008ea4da853fec1c2b1b2a9e3a42cbdbf719fb9ac7da", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "ca6b9755c36a7fb5bc8ffe44d4f956480a2467d75816e7a3f75b5015d73501c9", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0981b8b4d85034db01fc7a2574bc83c002a9c6fe9afe02ab54ceb03aa97bdee8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "31020e22b85672d177ce74a621f453198c457fa1f37876b55cd5933192a97cf6", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "0644a86b8682a19d0929b0b9d221232c0d6fabe730dd79cefd4ff0fd86f64369", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "e128ef1e9115145eb6e9c3f81dcee148819b6a66a608e049fe4b7954193b6ad8", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "3e3c4379eb82dcacdf8465cbafe0903ffdafb181ebeab334b7351e8c47543764", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "a8b85aec3406706367309867f0b64c415bda164731b4d5b209090dc9354f5df9", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "30144582867c5cc9746d3a8237c50835e64744a3717aac9f1446a1fd6f35887d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "f0da226be6072ee535dca0adee829b40305b73b9d531aa40db3f986f606d2524", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "d0fbb5d65a0dfee750b2ea1235d5c118d7f24f517a5e9f9076827bf4ee96182d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6fe5922d190879079b77d0ff798de399c21c26e81d2c6584883b20aac188f3ed", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "f64b6bd3ea56c6b9bfbb2527ad876fac42e6fd94478fc855332572419ceab9cf", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "ec4c01644af591d7efd219231aecf984243e57c74b712b7f896b0619fb9e0969", @@ -15907,28 +15907,28 @@ "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_grs.py::test_legacy": "cd02ed6c93579a4b760b82b66426df81da8d7e68f21cdb5caa5be033de2ed8c3", -"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "8f9453bdc32d1c080e7c1eb70253c473747c5a23a5862dfd85d37653095fc546", -"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "63081e1b3e24f1ccf5b4b93bf51dee3a67e0910e24b1c46b01aea9760692476f", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "1fb2a4dbf1160cd4d73f433449f8445d50287f7eb51d6e2b72349b75b75b8c3d", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "1879b4b86613f32a8b68602d37a99a233d0b4bc6526b3b41847f632d22db95f0", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "6b17d5a66967bc7328fff183dfe94e02a8d8059f7891090487fe7390e4393b42", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "ed0a7ee6aedc0f332f4a6d33281b18dff43498dcd9ff5a6a7bcceffe2c90c705", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "ec29e59bec35e64f8a87496fd04de3fa063d2da44f9c0971321eec40002b2b70", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "644316a25bd97139e77799cf1d4545c2907fc08aa6fd64ba114b365d7f859ea8", -"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "67602332ee715891676ca7970ab90411fa48a516b1cbd7dc49d85d4dcfa7e9fa", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d5ed285efd9120f48d9f05d9ff7b59781ae3a3c44ba2b57eee68eb188857c8e6", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "c1b89a44c28ef9873ad00d2b447b57db252c118bf8d305bd03ede4a26a22b0ec", -"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "d12f0d75cc90c109b81a21da7b6bd688b210d9df2436b924a6af13f3c5cbac79", +"T3T1_cs_bitcoin-test_grs.py::test_legacy": "2c525e5a9111f919d71af2569ff237be6ed3b0dde841de4386dce87d04396a86", +"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "cc77d569f296ddec327ad1c35213c9bf49897fd5b2dc64f2024a9d4bb2255b7e", +"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "6d7b62637cca3843eabb7c8ec7d6a15a910e44eea1d44a35cf7d3716eabbaeb2", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "f517c38116175817a6297b11d257bee923120ba784e19b95d6f3aa7dcb0f2c54", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "a1d628b9389002b88e3145fec730ea56cf85d8c936a999884326529f57f2ee99", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "35089ff15ac6e692ddc27e76dea6d4beba38d7f52eb76ac731d2632aee4f6912", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "58402483cf532234e4929c0bcf3e7d8b173547b6f4b5283a8c5b02333c8ff20f", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "f68b5f80e9cefe54c9f588c61185193997bb9394568310cb4975193aff138323", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "b40b01d045d069b131ae819d99d648ec05d306c31908a4412a2cc1cdf14fdc93", +"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "687d5af86544c9c03b5c838f2615516c0894cd465228ed5303a9dd68728b0788", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "c92f4f9c9214fadd477da3fc7f07de5d7b09b3749d5533602f03a465351fea32", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e9a966261c2421c24580aee93382e1aee5908ce48be2752663eb20d84309f7a2", +"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "8431e8fd0c220ae1279f5a4c42f3cb18c0454856f0da1fd8a5a875ac9e485078", "T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "bf27d336f44e34ba6c4ee6a947df78c38700aac227a5cfb125d9d607c4cea8f3", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "f6913b01553e7335c800ce2fb1c743f21034315f3d1e6ce4c88714c5e675ba79", -"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "167ed3044b0a397a31ba7fc863bdbbc4f30d6060b0a433366248e2ecbe4ff98d", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "d0e703a5a46b7fc6ca8ffd7b2124e55d822a37d49aa83b32c24d7c4c7d0289b1", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "5ae49d2fb3a79804d11a8cb333db501ad4c45444202c0e65e236aec34b053fda", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "49cd392a85094573d2d8dc691faa40d09e697d4c099f0dc9cf84046aabcdec19", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "98c1f2211624372f7f916498585c4abdd1e473edcfcd93bf961a0ee025f90e2b", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "33b216d7abfcbadd17e41ffc4cc9558e01b8ca3eed26aae6c9ab7bbb7715738f", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "59d97c9e7d7cac44ea0dc2128ac0201cf0667f054fa189d43b27e8effddf40b8", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "50361ab230b291be598fddc39cc4fbb68fb33e4d4c4e11e892b1d23343d0d9ea", +"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "c6b7e5d0b4c6e97479c80708fa13927c0575d1033be3f9ed6d388188f1354838", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "bf6fb7b0bf3a50d043da998300bdcae2a95131a5d98170e2140c2a15d29a8bac", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2168dd9d0275877c1f2d043799791d1062f45710f6b233cbe1f4aa24b4635d42", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "7f24966f73f6816c0827eb1378b6179a1a45e9959e91cce1d1fc1d0ae1a60f44", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8e0e9617965022b55061bc616d03230f09a67d640003f456ec5f35ce4bb2778d", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "2c61b54026ab91cdfa51819d5bf8a2528e8ada04565beb86e35cbcc279934b50", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "a885dbeeb1a70c49f19a08b5568ec2e1e2b1d7485f3e43a0f7970ba90e83cbcf", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "4b51f1dafdda22e4d6bd67247b0fe77e265275504e3d526941b3f1fae22f07b5", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "2c5d0389e6e17fde3a11a7f4c9246e4695559b8b7296191393c80e59373e2d5d", @@ -15957,25 +15957,25 @@ "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "25e791139dd4b67b0a423ec14b1adae7757e863445a640a576d5fe682e13b547", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "40dc9198db8485893619fff823d755aa632540b6351f231bcbbeefd8a98a121b", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "edc0723fda651a7d99bae865646f4e9cb9c14b08a0248c030f2e6880b0c444c4", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "decd96bf38c7dc5c8fb79263b8d9700c9ddb8f5088c21d2c6f0292bf579d1550", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "d981a15fe058f236cdc7d6f4a273daffa68c7d2937cde09ac59810b64eda043f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4160538ce268425fe9004436790a69ba1409a89eb51c654f44556d63c9dfbd95", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "3a488a6f8f63137df181d86f8b3720243e31f0edfa39d06989eea3b51004b8ab", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "87e66fa02e865fd0fa75cdd3063c738cc72e9b3149a7aaaf97558429fe217ff2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "936960e80641be4d67f4fa835c1cb52b412e16e6aa1ca842d381faa4670f86ef", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "0d421768137c8927f5981cba8776671333fe679d076eb4c3f54c4e6fbf20a50e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "1933ec7fd6b848a04b5e4776b0d562e2d1272e1b0477f83c7b4861bc0008fadd", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "89d8f59374ae6f8b8f948b62937cc10aa0f6407335c104c58672fc5d3d8cff65", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "0d421768137c8927f5981cba8776671333fe679d076eb4c3f54c4e6fbf20a50e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "0d421768137c8927f5981cba8776671333fe679d076eb4c3f54c4e6fbf20a50e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "0d421768137c8927f5981cba8776671333fe679d076eb4c3f54c4e6fbf20a50e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "2435ad99766637fd3efa880497f32a76cbc997b44a0db1a5e1030085bcceec3b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0ac4d6e99d9c9f5b4760a3fd31715b092b545dfa50718a1d435feeca7c394fe1", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6e15ac198951ef2ccc8e355eb9f1c7d9071f550e393d267e3ea7d7f3a37ff6f7", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "be82f95d9670e254af9d8a6e71e89d9563f0cfc168cbb9d21458b3b50585aa94", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "31acf6c8798ff86e26a18ef093b1e252fc8b0f82da33745fd114cb73be369b07", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3397ef7e463ef11346246c319b3164f96c7d2c6dc9563de1c7d01dfc39745cdf", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "5489c30a56b2a57a888b1e473b8549d9ad5eb1f47cd4603e3c771df390dba536", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4004771f9e693d5c77ff69e6c4531bd7c0f674170265884db91e628fb3cef474", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "738141170ac838db66acff2f8442d2de7507b31f6cdef1ff1f120b619ff66b3b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "f8df30dec79cffb8a22d833401560b2da5d9cc4d37dcf44370bbb20f93b25d48", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "4004771f9e693d5c77ff69e6c4531bd7c0f674170265884db91e628fb3cef474", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4004771f9e693d5c77ff69e6c4531bd7c0f674170265884db91e628fb3cef474", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "4004771f9e693d5c77ff69e6c4531bd7c0f674170265884db91e628fb3cef474", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "1a1ae128820bb4d6199f7c211596e6e28e79f8973b0072adba6e5d4ec14ef7cf", "T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "58070a22dec048513e90b0f2c217fe46bc3e9d133b3e9882c9e9de633c867c53", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "14d3629b38cb7030ef9e8e31919ec3ecf665ed8225d8c5f785d8f507ada8ab87", "T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "676b76101c8b1afdf8cf1c78d9b8db2296d478f1dd653f0165f2ed6f2b6910cf", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "42e33c4daa4e24942cc064c5a820c8815dc266cd81ca5cff55216ef241001bcc", "T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "1f718c00ba57218eba4303916953583eb93c2ebca954292cd497fade22ba7ed8", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "bc6910702328fd8ecbf79f296ce0be23e4d9fe7363e2f5356bbd68784ba3b1b8", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "3f6e720712571babe34f4cbf2fbdc48c1b7e26316259926552ef47ea10f54bce", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "3f6e720712571babe34f4cbf2fbdc48c1b7e26316259926552ef47ea10f54bce", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "cf52b121f741e5cba02b8705015bd3945f1f05090820905f8b0109a89bbd4eae", @@ -16022,102 +16022,102 @@ "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "78cb5386143cec7e36a9a41ceeea83c99a970a6a8fa9c9bc3100c2ce35945d82", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "66ba6c674a81993b0082e79bc5f9e614e539fbb3636c65281874b53c1c0ed6c5", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "35c8778c988beee6d3160f2f0795156fed1d4224af56762faafcad26c6c512aa", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "f7fc39b0a1d18f44756b6721bae06da2988c3f2182bdd5c17732febb34daa16c", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "4695d33b5cc345d0e85b5e28c3a6c01cd039a18663c141cf7aab22505da061f8", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "6a51145280631e1baa54b654c50903d2ddcc70780fca198e9474b6a4a48c4f3d", -"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "6a51145280631e1baa54b654c50903d2ddcc70780fca198e9474b6a4a48c4f3d", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "b59590b9aa92352739d833bb186880ebca5584dcc183ea0e469e8bc115eb3aeb", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "c7f4bd1633e58720abf23aa86784b9d4b8a48b5132ba26078b992cbdc4f2e01f", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "d0dd916b2b780bcea85e4d93cb947d18cac9deeb2c3b2c66b851e12c13ce5a78", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "fa1022e913f80cc0b2ad9737cb6a35d693d8052aeca805f307a65c2d5fc27251", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "224c0b15602e4bbd0ba047861de6573cc0b5368cc0f2047a513be57d2ad5269e", +"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "224c0b15602e4bbd0ba047861de6573cc0b5368cc0f2047a513be57d2ad5269e", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "c98995b77647f3cc7e5768e088f3b1f9e25c71b852cc06f6568047bdbe467e8c", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "95040fee17f9f236897801faac9873fb2ad060814d729aa48c511de72ed423eb", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "c3483fc1bc827298853056d0242e01973d54862f5467150d4574ea676a53a079", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "a7252c3d76b4f7bdaf5207424385c7cc0665ced5ca5bcf8bb5e9036ae934d922", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "57b07d0284f756fbde8215dcb8929f73312e062ac299ab55db98c28987cac514", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "875be6dd9980f400a9e475147f97d5f8e7adb5aeac00b7f33981f35a386d4df5", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7cf8b9aa40748b43609534d00fb4179f7b234f611c20d63f2a40bd6e483b7acd", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "4cd919e8aa3340c9a0c887f61cb350a0ce9f2fa8fa6facfff672641a0dfc5aa2", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "7cf8b9aa40748b43609534d00fb4179f7b234f611c20d63f2a40bd6e483b7acd", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "4cd919e8aa3340c9a0c887f61cb350a0ce9f2fa8fa6facfff672641a0dfc5aa2", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "a8b16aca0431a70fa9ed024c814044caa8a2b57de1f751a49b318d2c7f9dad9a", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "7ca4a9a9ea6d195cc70115a567c9363b9d5641ceea8f05906f3c870eb1f3e485", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "d9436c41dbbed17eed5a05443075a6840f2c547dae5e9a43e16ea37035b1de89", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "77b2813a59d013ff440757007010bf27eef86338deed2aca524848d725b39bda", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "00525fd7900917c9e1511d4303615c6273876f77541d33bec3e1c2bfe10e66c0", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "e3692beff7bd84f1696ea7224955cf542f68f5f87c62cd2caf2c892f9d875595", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "772dfeeb2d1f081eac99af490eac34217b4414927bdfdf621aa34a09ae28516f", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "a1be63f56c59155bdb4c2b7711df5ddf56a494ac0d18de08a006e9695eac98bb", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7d6ef40d79a26eb4d93095c1639dbbff61c0c974c40f58818a8031bd87026672", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f02efc28661cc43082a1b4558629d2dd8efb82b0ce2572720bbf7404217aca70", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "7d6ef40d79a26eb4d93095c1639dbbff61c0c974c40f58818a8031bd87026672", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "f02efc28661cc43082a1b4558629d2dd8efb82b0ce2572720bbf7404217aca70", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "62245b5e264bdb62bcfb6a7d12560cc33cefd4a1d049384106fbd16582ef46f0", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "3a3e0deff507ccd1a4c966da37e45e0d203057783e817d3e7955fd83cc2d274f", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "e9a3c44c47680ef167f099af6137c5547321f3abe3168389d0f3e84a7d186627", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "1eb9c8a70f761441f91f273dc4ae5537395a3a6e048e547d5396d34361821b41", "T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "d6ba4d69999c47b40f57beb8573835509bf3896ce9d5dc8ac04fa2c504335faf", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "b8a974e50ec9baabd1a8bcd15a292dc33ba74ba8e1e619567cc85dfe7264d0ed", -"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "caf860837f8e68acddac2dcfb4bb22ea245906bd38261e5e5f6b4a2cd139a978", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "a2c059728d59c448ad99f0b77051033f95f1089a2b69d920219984108a223b26", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "5285d0d036082b03c27d84c2f01ebbe79be0cf7f55c90237bc50af971c9bcbd0", -"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "4bb5ffedf34d0b980c6a230472a78b03bf67bf5cb208cb167903a2696764d1eb", -"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "cbc06956d1d17786d90178cdb7b37eb526c6231d5cb9343f8336d28af33465e5", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "d459d747fd112bff3771fca070c5c0dddafe51554aeaee54f016d5c897bdc068", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "d7108d9a851a90065a967ed3a562bfb8e4f97a681d390ab45baf6ab10bf35dbc", +"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "5ddbc63533738120fbe77baff380d6b31253ecf974e16c0c6d2c3425723ee1d4", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "a39b87294851841339f161328315901828ac74b9e1105261b866cae60d89da32", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "c47bebde6d85ac2b2942bcd333713e1904b0732000af67d78ad3ac6c84a781b2", +"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "3144616ad2322fec573abc2a698620e0dba1aa6014c7e5c67ae79c7b6a8a8e68", +"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "e97e2b539276c8f71b98b1ed50a8fcf550d5fc77dde6c9596a87750696f81da4", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "14464ded53986a9a4537b31f6a251f3dabf482d7d9bb53760897361e7b8e8ca0", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "07b81ed5db469a7eaef8a44a8c2c12e1915cd28edc8588ea8f9af53540a9261c", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1d0138a21ad9213405cb29b6b20b70a9bab02be510ee6f8801b4567a2d19fd25", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "6a51145280631e1baa54b654c50903d2ddcc70780fca198e9474b6a4a48c4f3d", -"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "16a3b54cf2ca7fcc3139b876c7af0904bd6b8e54a906c53bf6870e5c4a0bb928", -"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "c0b3a057ad222471cc8adcddffdb92d0c112a504b063e6fc8e9d7e48f94d25e9", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "caf860837f8e68acddac2dcfb4bb22ea245906bd38261e5e5f6b4a2cd139a978", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "efccf5b2e10e6dab2c62290e76ac6edc89093ef13d7482c84a28149a66e6effe", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "b21e6c38e0e9eb63eb0f9caf55626cf35575e340b79b5a351754c9eccdcd510a", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "456f7163f784d377d95227c88fec0d7e25ba4babb0f05225d5c8652fb411808f", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "caf860837f8e68acddac2dcfb4bb22ea245906bd38261e5e5f6b4a2cd139a978", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "e02357b8d05b181747c935ad1ff9a2ae4610b698ea49ff0600e947332a2547d1", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6d7ec446c6db3f535ed0fbfb05d65e99a4febd49d57b274eac96db79ebe3a30a", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "25c2c4878f903154675cedf67c6a181f0597a2193bee25f4a807ef2c94dceb83", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5096a9e5bd784cf0ed35f512183d6fc9d9abcd0c2fa041dedfe80ee6432c0eb5", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "e02357b8d05b181747c935ad1ff9a2ae4610b698ea49ff0600e947332a2547d1", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "ec24948729362e6f04c0a0667a245ae3378c914b84fe9f7d8c33a118c3baa4b8", +"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "58b4fb8d519c8f5a8dfa4f82dc3ebaf8e97766d2977a2a3f2bd68f49dd7d66c4", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "b82463d4ef03316c37aeb4e0d4f4646a0621d1d01e26b895c055b02de8d8df62", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "020ed5f00cd69a3cc52e44ee34985bb28e3b2ca63b9b41107aebbeadc75307f9", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "224c0b15602e4bbd0ba047861de6573cc0b5368cc0f2047a513be57d2ad5269e", +"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "4e41a8b6367774b4614b66d48dcf8089cc26aecc027a0056730991b3037dfa52", +"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "61dde373cf790760f4083c9c0c57b60d93031140b5176e4c5e26d1ea2805d874", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "5ddbc63533738120fbe77baff380d6b31253ecf974e16c0c6d2c3425723ee1d4", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a132f7de74318d56f5df2d6e9d526b60dbcb8a6c13d148d25d1f7facb0d64844", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c05775e61d7a990f8345892aaf36a5051e6d444b84d0165c96d610841da90d55", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "201295286570937ce719f3a66b18b2f57d9e6ee3407b10531e6949e1984739e0", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "5ddbc63533738120fbe77baff380d6b31253ecf974e16c0c6d2c3425723ee1d4", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8a69f561ea0834f2aef0d9bbabc1f9a6aca63800ed3a9855b2776a5ba28d684d", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "e366fe0a5fd6c63534712c4259701994653caddd4b5d395af77649c6bb8ec69f", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "85b28d9eb750efe998ea5b1bd4f84505a64639bad849cd53be3991feeecfd0d1", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1227203373f7eb0f81a4e7dbf7ebd393c6efe6247b5d8e092ce770d2ea660fa5", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8a69f561ea0834f2aef0d9bbabc1f9a6aca63800ed3a9855b2776a5ba28d684d", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "390e2614653eca294f0eec17ec829c9774541fd511bb42a3c09703f9f3e473c4", "T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "71f349829ecaaf18bf60058679aad6a1d0e588125ef82a066de52981dc997fc8", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "509d3963f6ace8ea50be0e156f49e464c189282b976a7da2816ba49d48930b0d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "511c3a4dbf7585ee01dce553e6845751f3e91a162a224046f50f850966f17081", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "f4dd1ad8c73e617cd3793934b19ed21b082070261916ce986eef14319a4d7a1a", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "1b052989de6b10cf2317d2b2845664b12d50749387de2a6ee9d462fb673f5630", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "ef05aaa31a94c832a59e200346a61b7dc4aa7a7e1b7bd8e8658c1afe0dde1954", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f52ba0857dc97463b072b88b6e0b3c535f33e4ae46006b74d2f984f5ddfe31dc", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "aaae7cf1bd38296264bbb3d614bd650073db1b335fe83be48aa355d0b9edba62", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "5dc4d5c30a07f12e55ffa67204427ede5a25403a724eec43d5fbcde0c20c6f14", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c41d262c586548c28c8cd0879c903dd37774d18803a7bd06d1cd7857a50506d3", "T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "95cd2c6dc721ae7970e9c1c0bc110374225b527a05bb18a33acff68cad358fc0", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "af76d9e1eb4e30ae99d33f17d69803467bbf6cfee6e45a2ab9718de642b08fb5", "T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "88dc466c521803c08e72d22cf9d1d34afd0984e7a4ed1a0956f701af01daa052", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5edf8780339bc6246e9c5b78642d531efeae2ff02b2f5b07316a0b7cafebf354", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "5447edfb7bb90681b62d74c3ebdc2d04ef191f3a70096324e1035aaf38474088", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "8307dfeac08ac6472ecc805170a00f9c59892b35a60cee3259ddb54638b80ddf", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e5634aeceb313adbedbf1244cd857084c3409a01d38418f7062ed57e2fcf9fe4", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "5b76ef6715585a5557365208a1e51593162cc31756c7dd4ba4cb71135da0ff6d", "T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "81e8960e1bcf051406a6c8c43c1ee6bb0a56a36d576fc36c3c8b73c519ebd4a3", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "3e5cfef56da9998c2985bfc14896e8e7455dc9ece379891b41faa6b192efba13", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "eb7b87814b860dbf7a9ae8da38fafc3fb1f06f7da0f87524c16e2ebaee6f3dac", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "927ad642f3eb84e06f79ef8dea5b5a54a928c3bf76b4a23ec20cf3f39a45a908", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "eb7b87814b860dbf7a9ae8da38fafc3fb1f06f7da0f87524c16e2ebaee6f3dac", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "927ad642f3eb84e06f79ef8dea5b5a54a928c3bf76b4a23ec20cf3f39a45a908", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "20a8220ee76c1e1f25e1191f6cbb4b1491ad9c67343da877012408061430d0d1", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "367493eb9bb3fca62f5e2c906b3493f5c8ed11979174a4890b03fd51f2f01cd7", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e7adbd8ce2a2ffd654819225bab87af383ade5347cba7283359e1ca75f86fc6c", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c037ffd8e4175d260cb368cdae639ca8a4b46151717bf81725d546221017df7f", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e7adbd8ce2a2ffd654819225bab87af383ade5347cba7283359e1ca75f86fc6c", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c037ffd8e4175d260cb368cdae639ca8a4b46151717bf81725d546221017df7f", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a45681b9fe18deb0c1bdd8c9c5d5e769b67496ca77a6760b417842188dbe2b01", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "61c7b97e3e8bf9abb30ff47272d239efceebe8b688be15f1118bc25d598c419a", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "0bde86b38c2dba292de72b5941b3ae69a788d7caaa0004f3d96c0477ff9b6ab8", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "85acc3b76d6b87a7f63ccb16b503270b023410c55389074c6cae8993c6e8f0e6", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8cde631ee216ac69cbb95875a0301a8ffba1d8a66b749665a0077ad64ddbb63d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "03aaaa0ce7a85347d4118139f5af1f7608deaa251d0cbbe3a5534e7c3a2ba501", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "9b14cc548fa770cf17de6c32c9a6ab79a0fdef52ae15def566a5a397b902c798", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "7c915d12863b49c984e5f673681b22ecce97d7e43176aca1cb1e6aa3cc4d9a14", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d22ab650967fa27d68b8256451bb2e49915ebcfb457a49d01e6864e403b0d433", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4378d1672437fd98b8521db497c437277be9364deb86b361f41611740529c04c", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "45a318e6949440caa510ae842ab7583a590484e86fd30aba7550d85949286ab8", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "76af7850854447b48737102488236a438501c4605c98f8c9dc7720e8d208dffd", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "caab8400ff3b83b4905d622cf59b2d521f69458fcca1f7b7b4d7a8df7eb7259d", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "871242ee9f5027555673770eb9762e233863727670a8a1ca1d29c2283ec59a7c", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "eb2a9ab2b12aa4020bba2ab9e4fcb3d47824bb125e0109bf909a87f96da8f22b", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "eb2a9ab2b12aa4020bba2ab9e4fcb3d47824bb125e0109bf909a87f96da8f22b", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "eb2a9ab2b12aa4020bba2ab9e4fcb3d47824bb125e0109bf909a87f96da8f22b", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "eb2a9ab2b12aa4020bba2ab9e4fcb3d47824bb125e0109bf909a87f96da8f22b", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "cd1c2da3b82238de50ca9ab80e455bbd2935eb70f7eb4b19c6f9afc4449b6acd", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "cd1c2da3b82238de50ca9ab80e455bbd2935eb70f7eb4b19c6f9afc4449b6acd", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "cd1c2da3b82238de50ca9ab80e455bbd2935eb70f7eb4b19c6f9afc4449b6acd", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "cd1c2da3b82238de50ca9ab80e455bbd2935eb70f7eb4b19c6f9afc4449b6acd", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "6d7b75a2b40b194de166863a134cc31fa3bab103f93796aa3e2926919e1b8091", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "6d7b75a2b40b194de166863a134cc31fa3bab103f93796aa3e2926919e1b8091", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "6d7b75a2b40b194de166863a134cc31fa3bab103f93796aa3e2926919e1b8091", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6d7b75a2b40b194de166863a134cc31fa3bab103f93796aa3e2926919e1b8091", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "9eb2bdd95621742650dee1f4cd28f8521500adf42bbdb341b9cc106c603a51c6", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "9eb2bdd95621742650dee1f4cd28f8521500adf42bbdb341b9cc106c603a51c6", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "9eb2bdd95621742650dee1f4cd28f8521500adf42bbdb341b9cc106c603a51c6", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9eb2bdd95621742650dee1f4cd28f8521500adf42bbdb341b9cc106c603a51c6", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", @@ -16136,33 +16136,33 @@ "T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "adacfe69caf13e16d14e23a4f56a453113a9de73d9a8e5b074f8ea06545d8ec0", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "bfa58c23c6b3ebb991cbebf6534583eb60cd0d541951d0b9d2d4cf9b2f244fc1", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "09684222c6946ce9d40335a3dc0700452240015c07aa9051f68d8d3d0925e991", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "bea61cfbe4a5210685490a77042e050a883eb3cd3603343c2bc41782dc307c97", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "30c6d73d4ecaff1b34213a27d749e7caabf11b7be937792028bc642446389872", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "5dbd6cc5adb066473f0fdc94bb779a67cd2de8220f6edf328d9ef93a394b0e97", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "75ae88b65c4947eae64675875a2dd21a23b6bd624a8548c10d3354d146bd93bd", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "61d764fca2a6d418918fd57e6e9936cf5089bbb1312c83d82b67c5ff2eaf87d2", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "e3eb26faeddd14da67c101dfa1fdcccafa56cf91900b9417e510d4068cb20beb", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "f2910c56722fc7ad950c9c34c4a108180a6a3b6edc95c51291eaaa301a35997f", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "b84e95add56137e23edfc6be8d996e2bdfada866888290283d7923e585860765", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "ef2c05daffaa2cd7375e7ecaaa0ca4a0103f4e238b92ca993128a6344289c22a", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "189982ffd5bd0236a0055bab1140aee4bde0ac7c16f12d92dd7a9d9f421cea06", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e079567c25e7c605361a6ecb57379330ddb47583ef367fe4c15a55b070b0ccde", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d11da67c62217c7dbf7e051eebd97ddfc15f2cdbd19bf295be9a497ca939b4b3", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "e02357b8d05b181747c935ad1ff9a2ae4610b698ea49ff0600e947332a2547d1", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "17096f46d497823495604d517706d785c153adc06cb763a111bc5dfe06f70afb", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "d75adb893372178e8b32250ff0d7b0ddcb81c1bd78f757240f237e32913cbe3c", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5f400e3021354a9aae4ce56918e5fcde816186c839aaeb4e581628dc429eaf29", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "46d6f157ed42a8353940ff2f58f8fd10f3f483e740a33f6eaabcbffc8fd02bca", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "f7abe81a7c30bb4d60582903074579782fcd2ae0c64bcff1987bdb82a6d8aea4", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "35e1a9ca2fa5b2850fa7322e7cb65812afb35a5f8936cc3a8c34d83f24463e7a", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "8a50e5d1ca9ab121315d044184dee5a12024728fdb931603b3e9c8b51531ad73", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "d8cd6b7b1ab080f7119a06f595e38cfffe2f8797369d101f9b4807a5325f9dea", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "28ac0bd53b41532a20ef0da4a170d55f0fa4f7ec72679da5c16449571d821bdf", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "553cec169d82e11ad83365c011a29b44c7cc63fc4066547559678f380092995e", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "33b7d6c77f8fa4c473ce1c1676ec33f1d479a4e839e66a357f367cc2d2ff7dd7", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d5d1d150f504527c2779517264dc2e9745bab0b7f975078abd2575041a5da07a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "87c62e22cdbe4868ab6839d127325c347ee320b11114716915210a385fcfdf62", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "9fe7ef2d883d0d87802cf8cfd2066badd5e1b9272229146719d73d837c075a57", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "3a6e7f22eb35838bc4d0fe3c3ef6ae3409e8d4d1d402cf714a204adf09086547", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "26fd80a250a4db425311a6ea1307111a3ba4d7e3047e1fa87c3f7bb1deb98f5c", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "ddcea55fd44cd02d72f8c56a2041e103343f0070721589371dbab21929ab41a6", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f206eb18225ccdc13a140d6e569d1a264cca09833ac09a6c63685ccd9a8dbe29", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "8a69f561ea0834f2aef0d9bbabc1f9a6aca63800ed3a9855b2776a5ba28d684d", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "dce0eeba965c839a80579dc3b2832831e3547cd123cf6454ffdd97af35e68381", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "717ea82002beaa53db0d76d5b542b7f830f0d763df0d203bab3604e83eb8a243", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "ba9ac88cb92ad225bfe2ecbd029623b1f5adb6467b2c5ca6437ca0e4bf9b7e48", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "b6a91eb526ab19bee45d34fd847b6ee389641ca6314f99249407c43f9ac1ab51", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0e8816e92065956847b2cf9c380f059d2ad56637fd2798b0020b2376ea87c86d", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "c270444598d98a00e70bbbeecec6de838798b62827495cc48ae634b488c2728f", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7d2eb811928b2cdcdc3392cb2d84511fd2d1d3f91a4576bd48f71def213e9572", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "601ec0b6a04715c2bb63915e8a33f4c8bb24cd75ea95a57f2410db56d3e98b17", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "8f32d6d70d99cd326bcd1f963bf5e941dec094324e0d197e6753ef2054f1dd98", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "747f4952c3be6a6f8ac165dac8ff7d7076ece7eb48c098137fda59387f78a709", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "62a65ca18002fe6bb8e10cd47ef7ddbd8b176983d28905d1290103248d041ddf", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ccf0524dbc6dfe67fe07bbef275632542b2616bba510f581ed276befb2bf2ba9", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "18283060973ea1629dd38ea09ccf02ed27c40454a9c9b24370236fbca74aea05", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "7abdb835fcbcaa3f56be18e6065526bd2e136bd4153be9a20a38cfb019cb593b", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "e503c53a1746782a240416f4cb3493837475efc1122efc9ceb21f21d2363a201", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "2812a51d576704de92c6730604df659b5296ee030103e8737d074c90d242914a", @@ -16178,9 +16178,9 @@ "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "63e653cc5220566be1ca4038cf8d0af4a99697b0e2b1745d4cd5b2127651a690", "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "14948e20f16f49f10ea331b9ca4affdb0455b379aa02638a88a8d8ea4e7e895a", "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "235cab8fc2ce5422d6268d9bf17c6805271e583482c9447ddd627ece72536009", -"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "718656f9556552f85b1e3e75cd4dc0afb7bf65531eb45b8d9c25ccff27396392", -"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "19529bb1300d0ffb54d5c36bd9833993ce46190bb6dc51a49334fb1a3e7b46a8", -"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "af9c8ed823be20ee01de5a0ee9955ecd6718664b3a9cbae8133439b493e602b8", +"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "6309878bdae0b483c995b45a41828f8bc6ff2c9876625874f97a6f7440c574d6", +"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "a6b569dc40a5c3e13e94f20b4140f1bcc43090c284579c5998b2f7223ec45d0f", +"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "167ca4f1fd69b2697f8da96dddec974c71471ca49a20943a6e947099c165c35c", "T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "ce28267e7c2e9f808abcb590f773be9868a324b1ad5928995f92ab4eafb6b5f8", @@ -16560,12 +16560,12 @@ "T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c1ae63ee5b5429c727ca91f077258ff3321fc65dbb58884df0b17256aad23781", "T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "8948ca2d7e24cba30b37d8e0b061fa423ddc6803819655c229106a2040bde584", "T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cac4cc6591db42a3e3dd721913527526b0bc6bb2629b20760fea80ba11463997", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "4cb7b8d161c5be44118ebd1f9a8ba46391f67b9fb9d6df4a1db10f187616f853", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "e1e60addf8c95fed0fac352fafb14a18aa879bc82b7f1043acb499c2c09d2792", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "0ef9a93e59ed2a256e9d40c08c527d86332e9d4bcf2013f309c9c94f7fe9d24c", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "945292efe57a6623398a09d69565ea8aecad0f6c8229fef995af3ff73fea26de", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "1e924e7783553b9964f80cb482d695818e28c2c01c169dfaea7ac477da741fa4", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "81aaeea0eda019243abd82814d84dfc25bfa73e310c7c5830f8ba221c753dcb0", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "495d85e08664acd6ec8d272d222a28cfd5ccfed2f24127773c7c9d75058e675c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "4347fb1e0ff8d18cfcd439750fe1f4a9cb4c1c857f5d1cbed5e4803ae59176c6", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "72b94b17efb06d7303f66471461eea1547496986f5779eb0abaa963192dbd7ee", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "b58f3146f8014225fe630c05cf10cbdb9c8fa35e182c352805aeea427f034adc", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a8381ed2bf776de5bcf5ba461f3cf9ce89eae0996f61c47d4ffa04e522a07219", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9952762de3b22692548dacbb8e80c98ad906d0322afc7067cb9c248bd5a3d076", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", @@ -16670,12 +16670,12 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "74eec3261fbe7471b7dbc6ee988abeeacdf37e45531073dce40e006d9ddc64d4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "74eec3261fbe7471b7dbc6ee988abeeacdf37e45531073dce40e006d9ddc64d4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "b22f121364853eb1f602e8c1f6f1f4e2f7da51fbff3a8b8852527b39202673ac", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "b22f121364853eb1f602e8c1f6f1f4e2f7da51fbff3a8b8852527b39202673ac", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "e76430ad0dcb0caf1890f32cf22482d6d6b2400f367689d70534662f440668ec", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "e76430ad0dcb0caf1890f32cf22482d6d6b2400f367689d70534662f440668ec", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "3902d1ec8f72d12b970f69545baddb1ce3ea9222592916e45a05b8b0fb49ebb4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "3902d1ec8f72d12b970f69545baddb1ce3ea9222592916e45a05b8b0fb49ebb4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "b40299bfab0b38d22bb2c401b20b9bcd455000998a04ea208adb3119f55a9900", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "b40299bfab0b38d22bb2c401b20b9bcd455000998a04ea208adb3119f55a9900", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f00ae326c88eff9808063424fb7575328de6f3c6323c8ab320be738613e842f5", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f00ae326c88eff9808063424fb7575328de6f3c6323c8ab320be738613e842f5", "T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "069622687f8433f8aff0f8e9b5a83da62ae813f83f3bfe5caa899b0a81345a7c", "T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", @@ -16729,9 +16729,9 @@ "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "c2b5cc309ed2e49384bc751e73f7bd33413b07022addbf857718e418c1fcee23", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "8aa96559619fd13cbc8f4febfe6c734547e3dfa48074832686932ee4c92aac07", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "1c8aa07d99be942dc9cff86ef14d4d995611b336744ad42a0955cc3e59cf1846", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1ac30e50b5b92de55004620210c5e16fc43f00f8116506e9b4acaef5e175c4e6", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "320f40f519b5501f8024b6098d6f1bdf4747ec65bdbb10644bdeb5e96833be3e", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "6a2c26d38d3097aacca708246a10312092c6ef095d1629e1fc8947c785887c29", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "8274fc9b5695640c9f535aba5837173759c9704ab3be0dd79e1bf2e4d092191d", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "24f875479ea40dfaa5f103bf8e458550cdfa75087da14fba885b0583ae1e36ad", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "28b1c141eaf3c89d31ad67d122aa0e7d728fe7e909c0ef049fe8b25ee17603d5", "T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "1c65ec1534c77f4435edcb7cd68efeca32852cdd8212bcf0dc46ef2b4f75ea2c", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", @@ -16768,109 +16768,109 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f25df139132da6fd8c24178448dfe8d2a0832e9f3f86c1ec606102ac38414aed", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "54493c0b3fd690e08a7b6506a2e61aec3ec0d3abae72238962e2f91c566f50fc", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f2d8dc743220d22ff525db458acb3dbdb8c82f35415e14d0f75636fe1cbb5ab8", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "0dd60afc14ec2dd5b51b0f4190c9dec00ff3177895e746437dbcde5cfbc51013", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9690d3c0a17eff7e96a4cfce400b73d37d0f7d8984aaf17999f69b031350f833", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2fcded69a84d607d3b05bf7db4253150822b9b96bba2942bb5d620a7fd95b815", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "1b62ec47725beaa67f2cf9f5d608040ef04d65a338d697e98e9c6e290b3c36c4", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b4e012959897b1546ae866d6fe6eaf736bf2b13326f3272c2355a6e612fefdae", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9245b6a5f4b6b5e19099beaf943d050cbedc0325d443e27b4e30bedddc973bb8", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "775f8090710af55ffb294536d761994f9f8cc826fc46cc77e119c345b69ceed7", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fbb02956fa579eccb5f8258a447ce49328df8d8f5377eec27f6b961bbb608846", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6c7dd7eecf824da503500b0096600aaaea89911b1f797feaf432b674f9405798", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "49f1ffdbef73ee720da840019ed22453f8fed152011db434de6727674dfabcaf", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "554fcc91833e38b261fce3a624866651778fcf60aeb4a01d4c4c22252cbc7c35", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8156e5b7627362a737560b64a72984cfc98676f4b64709fb0bc6be9967e55841", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "118d8db778beb9ee95bcb0bca3fc51006e91cdc40e94c4c8bffd40f30a3a910c", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "11c1fde05f8be79f65ed59ddee9195285ef6010b06f7d27b01957f8de85e84b6", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "dd4df84e3461e3b69f43f297d13ed257cdcedd4b687498b2e9ebeb5cc17cac90", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "731b4bd7e96280d5b9219c6677b3e5fcaa78b93af83229bed30af92564b007f4", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ad014313b2b71d7c194a831f34403d80913b501ff0c5fc11658d98fc36e14c34", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "ea0abed9b327ad383724ea7934892563e494c16ba82ca07674ff7f4d8a258322", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ee475fc5df249a3f44c2cb75ba9fe97838e2717d442ed2a400e1bf5eaab56930", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "043e10c4cbec62dcd6a39e9a341c5a1cb77dafd8c9dcceb66ebb8a417dcae9d5", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "00e50a709c3868c7ae30026df1f186058fc056a6e416c1a0c9dc1485506fb9f6", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0a5bde85595077f2a2ccdbf97a35d826e9365d66eafb31d92ed2bc0f1637896c", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eaf5558e596ab44324b1a6e77cea8f74f9fef9e30e0d1766550977eecce43b70", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "85e28064fcca36b5d9b3e9e2df89ba50edda96c6792e2f7c965bb6615071ff0f", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b755b9ecd27be5c849429287a59521d02514522da42270778da13725bd1edfae", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a7aceebf29b4d17ca5b744e637469135dff4d3a8fecd256100317570be6f0e3c", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "32b03e2b1f80dbb6f621eded761a88332dc06c4cbdf620b81bd4f0be794cfbbc", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3b593b8f4837e4a4364808b73477e6e09571d2fc817e8fb6612022dc40c4ad1b", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ccd4bab1982201e0342a75c949f4b2d3bd7af65b34740ec71ca57296d9f91a01", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2b6fa4d697913455427f8692f82fe6c896ed16d01ea6fd4c8ba054bd817b2c10", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "28b56fd82c2a80109b7959624ea7a75d80f8890ad543ea72910f025a1442114f", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3945df38af1912e19f284ad7b7eb429af94a79480865f776246702fa7b0ad3f7", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "dca5a8f1ab27f16150da94a32a26cd8ecc6fab58a4d037ca134b361dee0226eb", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f0033c01f51636f12fcc33962b4aee6f3a6e17224ca6248e505a036cc818b4c1", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1bbda7f5e61a663f70f730d74059a7c0899bcc318ed2ff5ef92bf22468700a3e", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a5026efcec9794281e64827d24e8972726179afa8fa8cb1cf39118a19632710e", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "cb06505bdab7d6e795be8fa2727ac2786494c28fd5fabdd8880275b89403ead8", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "38db83ce99d0aaaa857ca8452a35c038d368b0b537588332d64b0b0750ee7ae6", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ea69b78390bb71b0fcfd1bcc75004add4f3ac84a208f01dc027ec970c4858600", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "2722df42606296a6ed0fb4c58aef139b4457db2b60d7511892e124d16cb453d2", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "5b2b0641e45869cd9b59fc991fe762fa9661854f1fed5f6db513d39123ef4a95", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "fccce8f26a3d7981a0e591d24f0e7936b001d83f6ffaabb06f7eafbb7e32cb83", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "fcc37be5c2a33786470d40e74c906862ea120c1b944bc80e3134fa91bf22f569", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "875b0ff86f66ef8657326b11d7ab67551f786b100cb479ce20e28bcdc4b35670", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "d7976aead482602bd86dc192802fa1a288f4dbcd8d144c96d67bce7e4cdad0a9", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "726ec2a764bd580d0bd1de45a3b1ab29ff6f9dbd27c42a1a42eeb81732bd298e", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "03035c6e904724b4598abf1075f297ff90c10a24a906df1cf56a9f993c7de83a", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "d7fd608f4ec24d4b199872f8d91cc4435f7b1cf6f63060cb3242c8c45667709b", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "f8bf5b2cd701b27c82da8c3d1d6b1ba9f265e9f1bc0c1a58bb923c0fa0c64d02", "T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "03035c6e904724b4598abf1075f297ff90c10a24a906df1cf56a9f993c7de83a", "T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d7fd608f4ec24d4b199872f8d91cc4435f7b1cf6f63060cb3242c8c45667709b", "T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "f8bf5b2cd701b27c82da8c3d1d6b1ba9f265e9f1bc0c1a58bb923c0fa0c64d02", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "57f3b32c5acdd8ad285d0b6951e09cba4f80aa7385a0acd1ddba38d75ad8acb7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3b29b5ac8b44af2558a10765ccf66ee53ad72289bc2a779da5b04a82935820a0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "b5462572de9b16427f6108174abf6ec460f59e816b83733834ea349414903125", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "f18f9aaeb65c0f494345004a10ed0187129a66a9b61289ceede64683c18746f7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "90189fafca5c22d5c76a10f1fcc917f87111989b6bf2d591de496b8fab22259a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "0ce04b693f9eb8ff8e1e58580b0e084309708e4fc2752a93bae1a3500738db68", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "9696a0f80947ac2ffc76d7fd8dd19c7ee57ecb96ec95142eab4b1f9c041c82f9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "cec6b75da6dd1069a9d0e97146f2fd487346037c4bd7e7ee05398c359f584f7f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "557507fc7b06e55f99b17fa293a17413d7e6f57395a524aa24642b5091b23742", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "e8fc64446fe0ba2311ef14fe5c52ec3ab6246591fb60bbfe175b673475d2db9f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "7442a11e25280f9cc516de4d760b4bd377b5a30f07da3359a729508fb31d1f23", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "f220c794966e338ddcf503b260b529f02ac72e1dbe694ec10217ee71b53b7eab", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "53595d777b5f7f9f87a5db0c6dff920aba5ebd56135d87b496bbad7df25043c4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "41e6d2f931c3740b7d941d7f488640b463723e3cd2f00c62ef7f9accb3a3923f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "0d679f88b31f83b7b4b08b272549fb37a195f38b9ddacd2002daf2d387c0f791", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c3d8d7ce1ab9ffe7baf7944e5ae48d067dd82437dbe77afddf58a1186422f75f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "04fa2b222ce2f08b69069f4e9e88b9b10d3d606bac12e901bcfbdcc716522aa8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "3a5f1ee6050fe601194b97304434847e10f93fa625714ca4103e75e651d38294", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "5fb4a2ca4cf139a1351b4b151a6a84d3e1752397f1dd6bd84e77d78d66039e83", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "3746d31a0f6bb42f6f5b0e76e383d2920f2f67f6d858898b1b859a6ad427e9e2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f8f2b8adbd51cf0138d69ff53cd7a10b01c024445fd77d01a6b7dcc9dc53d9b1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f8f2b8adbd51cf0138d69ff53cd7a10b01c024445fd77d01a6b7dcc9dc53d9b1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "ba833a0be04c6f8ccd14b419dac08e3bed3049ef3afcbff398184e9c1c146eea", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "e2d96c317afd0793b5049d187f17e51c874798814a5e1121f5d29a5bbdf8e69d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "4d30213951c6042e084ecbb2097d0158cb0e5757f5f8db8e68c844d54bb3ae9a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "50a03cd671fd5f4a9b72903d28ce3bea309ba8438ae4b199f1aca4bc6c95fd1b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "1985eb36c02424537fc8df8e0105f810ff74688d4dcaca0c948fd0c882b9933f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "1bb4795a4a71bb876f668ba03818bdbc737eb337e89931d6a3d32d4fbfda83cf", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4f2e382d33c532d52d71f4635e6235912f37211c0572d41d6735bd840b1878da", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "d85e7401f79c88ba604be65ba03329d23da329d1165302d89c39a5fa0cf4e337", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "83abea963f633198b9b2499541001887d9b4088570efa0eb408166048ad010f5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "f85c6bfad0350c73d540093dcff9439367fe8552b9723e52512724147cd9a88d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "165da96a8d7dff8e931250ce05204537f37baa3875e12f53a51410d323afb2e0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "78a96dcb5df3b0c0aad50573a37e8dd5381e7ba9ecfb80c7e0545496b542c0ae", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "621f980baf91881cb39ad3340a02a581d5d3c3910bba4ca4c6237b1ed8281c11", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "527144e3c67a510a7900c4e62d439c8c12b47ec18919df8a847ab4397b59d829", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "d461234b6ce24cea43a2a680f135d03e2f3ac6da2812ec9d7f94f4bf919363f6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "0b1a2c63e6debb1702ff8a06eef8cfe1750e298df2c401612fcc07e979aff675", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "fbd37a56bb02f2ccf76873fed7ee00158d146531fe61f4828cee0f68e8939764", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "a0c4961bfcdd1b6938cc384b6bcc2dd358087fa37aa4dda816cd5032f77f860e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "24e7cae678654259c7fb475e2697343273f3acfab6b96cab2b1bed1fe2bceb0a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "02e7e89f9049dd7031d5fe9683ae0824c53a0e593ab6124cd494adafaebd088f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "9305f4faeb6c10dd13ca1f98b09e24b586cc19fda6e211bc5c386547f4765b60", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "307b004f248aff3de49bb3d080c4cf1e5b7425cc3e2e09da66046b4370b6880e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "6b60051c39d097ad0154b5edf2e7f079fd3d0afe97de8f35d118be0397be7e6d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "c3ad5681cfbd10960554e57b56175a12b78d861a74449e177f5586906a64fd2e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "79b8e9dd5f510acb07d1200d3b0a240620f3c0e8fcc12995a24ca94d09a396f2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b57616b4fc11e3e7113eae21235582dde6585884b39ee45e7b21e1f0514b63d5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "13887e37c52456a651c4130ae2c3a4060af49e44aaa794421d5da92beba11a47", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "82e409990a46bcfbca762e4e55ef9fad08a14f7087d838a85f734f0f753d28ab", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "f26137300bedef572f87ac9e4d32c4aa79ca3a6264668f84b51f5375d72cbc0d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "12b89ef3f5dc6d9417a28c647926abf72d4eaaf1d7cd0e6fb8925346e25dbae3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "655bde7ee3e4aa5e6c718bda3aaa79445e4d45ed80060de7b792b42ec8b0fba0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "3f31b1555a9303e98187bf9bc879c1e183b8db67e2e6a1a3f52c0d4d9a9ed520", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "8a5795627db6bf226271e660b91edbd2b7dbfd4be9b364b0c9de8ad9883196a4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "6a04bd1fb3c06296cb5b4cc3361d2197918ca2c8951355f89f48577b944423a5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "a0143f14ebd0a5b4237d3117002d74c856def9ed8c201bae317ddebfa9e05c3c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "fb0c5f034e48b37121eb2bc176b7ae04bb024bad8b717cb925672bd8d87abb97", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "30707a95a96881e6f3afebaefa5269429eb3f9ac37240ba7c53be8d03f35067e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "4d30213951c6042e084ecbb2097d0158cb0e5757f5f8db8e68c844d54bb3ae9a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "412beaa2dd3e20ba0716094f191247169bc60616e31033c078e758466e871179", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "1e5cbd2eb4d15b93a87083d289b191e211ca0bd0fd7a72eb62341e6750e9de04", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "66331a2f71802bd8d311da3e4a212e3b23330c3897b128452e8f30234c861aab", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "5bb4e01557b407b078f63d4fbdfaba092709ed111b6889e008936c97f4ea7ff1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "e443f9d6d164bfe48038e31565589021fd3560a2a03dab33ffb4faddef009778", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "66623fa8cf92161b5b0c6f2df641d2c68682905c63978f165d97dcdcb4f48787", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "5dae200a13968de52c7bf523ca23efe4ad99345a72f45f67f9a3c58356c11fa8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "41025f3436050999303705a73c5a152fd30a7d36cb2c628e0f984442e3b35019", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "5934eddf55bc7f1d6b541cf7a318e502a7e194d2b3980feb03891c1e8879df9e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "66946b882d2f15927c6e38efd67c1cbd35da5e0c84765aea3d50bc2b8ccd77cc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "2477586a544e093ca8496f828af4a0f36646b499fbc7d02462bd5b37c6aced02", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "40c7edbc236dbd13cc371943e0ce377fc61a7c1b3195a1a5951dd04faca3648f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "32256409292925b436a7322ad99c070b45d4adef4e243ee2ea26ad4e952ba263", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "60e7b25faf25b5b6f9e029d64eccacb477dbe9b2a3c3bcdadf7696c5484c28d8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "31e7b8566d79da40a422cf2a62a80efdd7252851edf0b3f53417d2f0ee4cb585", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "89d51473c63ee86f4d91822dcbd0a26d478a6c4eab54b8f311c13313688e6343", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "cce834c7c753af4e93b4dfebbe7913d8566ed1a9387ec3dc0eb2da6069a6ac84", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "dcc8460c41f67e5befdc508312cf01ac26200f46d6b751bb17aec502447e864e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f3ca3904ba996a604cf9d35aeb95d43b659a1e2b5fe77feb719e1229863bc067", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "2dd536d80f129ade0b970104dd927874e5a843c0fc97b2b44713d416859b5ec0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "ff21528b7cf0c950e8f74b31d182bbaeea7e5f75051846dc2cf601d8731f529b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "15d465ee5958c18581cfffef36e18c6504806fca28df8d25fafb24635ddee1df", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b30a895608d83c9a0e14b6b8c1a77918c5d3f37b0d4353af4097ea8a1139aa4e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "fa1d4b2cce37dcf8ba9bb180e8a9c51c335bc790382dae26244f36eb091536eb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c060d7f0113025915f50556cfc8acbd6c2fec52444cf272a451db1be3dd86d57", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "69efe1fcfb45979620472e36ae4f427a8a7fd20825dbe53577d1a6e752a2c21d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f1b4faef78bdbda34ba6949eff5772e921939ac186d638bba521f09ac7c334cc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "b7de6ea08abfa977e7d355c5b0b6c9b0d44e5648e0e8369b999ad8e71a99d3bb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "c3d1c6f8224d65875324b0156224d35a4753ca9382df1a1363c90c37b8bdc50a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "00082ea011b1f9b868b1e7e1eaa45b52760c9c853d2d93a05bac92f2bdccfa2c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "00082ea011b1f9b868b1e7e1eaa45b52760c9c853d2d93a05bac92f2bdccfa2c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "e5950a6f4b7acb49665e60846aa9299d8208ecc772cc464c1ad2648bd6d41e4b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "e40b430da14d46236974f7c8e3b65d533ff863c1511c2d6338a01ac1b81b80f5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "0ca97d8a1846a5eef5eadabbef1df5220fb06e2aaf9299496eb7a59314574944", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "de2bd7d6cf4f7b8919a96fff22c2cabe457f8e04c6f2562dff22c51bde8c6aae", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "70a0f7a14dabf92173bfc8756b5d507dbabe1453a4dc0820b054e6ea09076507", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "727b88b754a39bc5948c2a654b1ca35ecfc3b75490bd1f39f88b353b8bf7b16b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "ed80e9dff6ea85065b805ce5a4261f692efea580856f88a3f65b0a4f4b3b3dc7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "8a0b357d87429063f91db641d9c9a48e4183285bf928c1fce5c39953a819d51e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "6403802134d76cac11e9e11e4aeaea4f3a781f9b61863b8601775d368d8bd61d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "566cbcc45c35dcc9ffe8fc4bb1a8b1005d343a0c7224d51ecf9ee858b3257162", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "9e51c390d1ff07cfea07ec9b8c5dc1b41ad5b674632e393ef2a08a8a319badab", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "8b4169ef3b4b6d5940a2db3e45b29df8b2de11b1285445225c23fef1c55ea993", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "4db31866fc0fff4c32f43b24711885e4957b14d4f1eacb0501753a39fe9028d3", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "7b7ed5faed83571decb765a702dd76ac04272fc7d884b55dbde971f60a464c96", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "ea106e20333f71a7d1023eebeac28b8c9a45cdf2f3957f36b4f7263d1fe89b18", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "8e069dd1450498e5ca4986c6f671d280f3d4914283f1501a1b89b2172ac1bc91", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "60c8e645db7fd9d9480eed76273184ed146945708d5b306abc2f4dba582397a2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "d9bea9bcc8795f13e05b852e5c5e4aaede2d25b1b1f5f0f6c56d3ebaff41354b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "f3cbc4632dbf76be71d4ec82d76d9acd1a00cb2d1be01fcd068201c3d70d27be", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "14e688d7baafe9ab60fb2170721ca61331f76f98fe57e6b982cc5b6010a4cb17", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "d921e65b44f5f2c2d0e340215ee45fd6c997147273de1ccc21f1837e16a37b72", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "28b52906efa4084732db4620b90b2febb8a5342c433f3c4b6b2ccd61c886febb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7285387ea9046898bb64d9eafa7284d66826bc04fa637ef306658f47fbe790f0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "6b5c593de2012e5fd5ae225b3068bd41b4af92e128c136a2c9f4d634a34a7f88", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "801eda6dd96d103d1c82d73749d4a700f9a281e8235dba5842d50b2583294b3d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "fb76117b549f50e606a2fd9e7d83c0e7775a9188b38d5dfde71b8f2806fd4e46", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f93f3ca7f22d45209a2e3fcde2bf719e8bf2d42901360a71e2744141c15ab047", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "783f8f953e9a152dbfefe2d6153abace1b3736aa3920797bbca22aae03205c9e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "dce7d1004d973264c0c1a3439a01fdc4ef0b5a336320c7618523b6bfdae776ab", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "199e83aabfbcc0fa026f1d7c783ee3886eb1d9cd2f6ca384bdb81ef207120991", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "d130d89fa6bff529c764db1b0dab119d86857885b735ed46213deb9e3f966f63", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6a8b197b5722ca1a9fd55db88ea0cb3fd17492d7ce34d176f881315eb40207ee", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "96a4043ba89f7145f55c4bbc24bbf62f1161bb80fb5aa2a3b16d32fe31df3bee", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "8d582f3beecf7314b135076e269626905374f6da898305d7e22b4a6e1e7826cc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "55ba5f1873cf97c1e4c0651098285055853701998b31d681debe290090ce128c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "854b1214b01665de1fec0ded7ea3d4099f80c4205f1a9299dafbfccb6e21d0fb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "f883c753098318a1c7995b83bef06636822ba1c9f8f31b6f36b97476f3df5487", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "0ca97d8a1846a5eef5eadabbef1df5220fb06e2aaf9299496eb7a59314574944", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "0f02211194554d0c2ea6f6109cfd3b492d5d9ea499fa6203287342cd8e0bf0d7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "0a98aa255dac5d703404dcc36527397cbb64a9adda796eae000dc6ca09c7e489", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a7b9a500b47c122bf4ab2612a6afa20595eaa70a7c0befc1801302b0b890dbab", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "f206908e0f7353fbfe71c9d6cd0a260bc82e710267e576749c4c01205afa954c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f16a37ab433695a4ae829931b64548cdb53f6ac7cf3c38df67d9911ffbe529bc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f09a35123e662b665a9388e1822f84020dc25313fbf54a5151480b2e789d89c5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "0ca967ae791552727651541a8b9da9599a00fe1f0199dc52e98fe008aabfdc7f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "8f715c5e5f7b96fa72a9aeefd4a3cc0dfb7762d45940676fcfd2c3a155c5dd33", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "dddce5a29434f4bb0a7461600a6dfcc371ea47ca2f2031548e596ff964000886", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "b6200b7a894da83ff9e07b5dc3e2ae19ae7b72ab589dad9bbf39e855c1b432a8", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "14292836c1ba52e1cc9326fbe8e9615927b3837084115a99cf517efe4f5399fb", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "f5a748d77ccb66956a6cca963907b23c3a9658c8de65c9a003be6c4bade48e1c", @@ -16881,16 +16881,16 @@ "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "41998d15e17bfac5ce28b8ef1ea13d7ec9d008b654742fcd2bd5b84f1c34c063", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "662cba75b415095a024933171394a4d10c8fe6e6892629a8cda5e81534d0c5b7", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d0d85cd1c9a40d05f67d4429026a0b7906589063e919fce36dcd39ac0c259bff", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "033999360d98ef4c85c13ed197314b726c754a54e6417cc4d936e64c3ccb2c95", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3d17bf9855218ab5e50bcfc69b86ce501826a04868796cfbbc6e817df224e4af", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "78390505b4f990c0625f31403ee549a477a47bcc41a9f614c143e62d7cd47dbd", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "af1d5b0be6c4eeb4199b50322a0533ba7a0d16447bb6ba6b3e5abc299f571b16", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3e8de5e3b713a1020e529f51e073364e277b3b5342448ab5234c19edda408740", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "179aa0426ca7c4a18059896ea3f1b4defe28be8aba5ca2d8ae7bcde3f8eb638b", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "ed4c5135b2c4f2564c72cb6900cfca18d65feffa4b18440f8584d4fd4b5e3d4e", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a225b0a876559e809c8a38e926613e913e298abfde8b920715bcd02a7228a9d5", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "52724dc963d77ba22e586b08f10d210bc29a01514aa3f92436d7c9dd40ff2913", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "b26b7ffbbc75387c4ae5cd587ce756e744317dd178325084ed2e3d72c729428c", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "fb403235ff168388d3eedfb7ec43d8dced3c8bfd15aa8c424810e4b24c599b17", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "5e327e6eaacc4364753d43597b893e5f850e6eb7cc03631ad8dc35c6e9b35379", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "e5a94b3c14e4cbcf1554c2a935f7adb0600a4a49615cf943b7bd81e8e37ab3b5", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0c7820d51b591185a2c40a3f08e4179f4f6d0a701ae00460dcf42c33180ece8d", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3c8a4fd5acde6b605b08c06a8edff12a4696ea3a8cb38733e90a92dd77bf65bb", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "93b257a317cb6a4e6c7aa30088aa2bccef17307abe552f2ad0f5c402ee2a9fcc", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "9894118f9cae9fe8aec177f4237dd7e11d3da9a12e9a9349eca3f0510484c43d", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "722a545e3362ca825dbe29815f40943b4d05f882550f122eac9c179b7860aa33", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "57c40d0bf505d28bd2a6c6d486f1c36a23b6c661f215350dc37c9ce5e50b7f09", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "8f2fc9ce21f0a299d89228fac40391e50a1eaf6c26e38019abaa99cd363a3f55", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "f0bb2f709706152116d749264969b5e1176ba6f3cba4ae9da8577aaeda353205", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "15bda7df5cdef255259249cbc6cfdc0656d4a1c2aed4f4ae98d49bd5ca50e15f", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "bab24ceb69526ed7ba1290f7ca2ebc82a7a7b51685c2890fff1e0e61c3109959", @@ -16986,14 +16986,14 @@ "T3T1_cs_test_msg_applysettings.py::test_experimental_features": "ec9ea6fc079d058721b888d20ed7ca116b2a630e5355b0b549176b2058408fb7", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0f067c08d19faa7a2cab4b8b13f462c422074933889483aa142242d85c67f50e", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "d32954ae684f5ada2120acca14ae6362654d004867ab24cd8723cd39f303b781", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "d175183860fc6edf70323e945c38379969fb70e99a2f9074eaedf2eef1805c1b", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "fd857bc40669242b75e05c75efc3347fbab56aad466ac9a0cdf9ee3d91909547", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "9175bdfe48b5ccfb46e6d7409eff5f14e804cc2f558915c120d92b77f7fb891a", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "929571ec29c12b485a7b6b0850dbeae1e5a73fafe8182000c41b16e02374adc0", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "b8c326621a96ee3c6c1202f7df234b96dc793e5214801b1f1f6a826896f8d88e", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "a72cd9780a6ae04ba299b764c6f0e75adb0b078c2e529f960ada5aac6fefb7c2", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "500b0226d83f0c970ea53e7f50ff3b30ab0359d5a45e791aaf1b39cb501cbeef", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "41ba065c3c56c4e5d22d5701119327dc5397c24bba1cd0b0316cf402aa37c7f7", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "02df75fe53f791eb6a6ea26c8e7925b675ac00b7f9349ff4027a6d51de8b1e87", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "598661ae45b8e113b676bfc02bb19db9a2f664e66275105c6fa9296b76edffbb", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "951168d9ec9951454944b4359b331f93da492ea26e8086ef0aeb37d80c6cfabe", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f684db59ed580eb6cf26b0b87d439efd9fca6a03f73856f8e50aa08c14e14295", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d147a95d760102d2da9ec85252b2e589ac8fd83ce16b3a3398a02d1aad2e4df3", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "695d19b893b7278435b6a6aaf05e0fd72cd766ef5d990f1efcfe8b99fda5cffe", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "dfae6030948527ece05bec0290c2ca67e4bc3e3ce0dca2f6f68a9bd9f96f151f", "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "81b5d33e9a6fe460018bbd0e6ab69fee249ca3fee16e867709458d682b79c9dc", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "9800a661f1b1d4e50f7c88cd4fb0e530c86d4bef3ee5ef15e189e148b97b2871", "T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", @@ -17004,7 +17004,7 @@ "T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "60e28f4d3b0c5622e288be6d5cd5d6430af4579abeadcc69f8786fdbcd807c11", "T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "ec61a74cac5a33fff00fa1d889f9452dc7f952ea762b6347c93e89eea016dd10", "T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "9657c5d37c5e64b7df523a9ca6d3bb037ed4ccc438aec29b135c09588aa97bc9", -"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "eacb05582775f9c7f97ef3c46f5b5db8dc5463c1227cf400456d7bf6b7dc48f7", +"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "f826f0675245a6a3f7178b7863b53837c47e128409c90ff0799b5401c28bf1c7", "T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "cc8589bd4aab00934c3472437ce4298365e93f7d9061c99d4dac823e60300c15", "T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "4e990a507dcca5e13aed685e903cccd2a09cedc0c0034962df1330821110561e", "T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "792d15636d9ffa37a7cc5a6a1199aacda162a6710d87370a0ea05781cf9ae2e9", @@ -17017,7 +17017,7 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "d1f491f2ac96149345cdfd48828e6eae8a26eee98211414b0ba2a75576a03ace", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "a61dc072219ad7d54751b105b202c47cfca3fd9cf5a2db7eafe2d2761204d846", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "0bda66b18737b2806c53ee166e11e0be0cf871931345af98614cee163dee6a26", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "3564bfe36f1a8b8fe150fa53aff5dd4955b3374c21cc572df7332d8a2bdb9d2e", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "e59a11045f4c00e4bfd85a680f89dcecd534887e227e04d772c6e6690c6549bf", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "83c9b9445dbefdccd9d6909da2674fc2543354726d27383885194ac9e5fd847a", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e42496dfd20798a6e02d662f1ea78f0be3f18c3708d71665baafae025bcfdbec", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e42496dfd20798a6e02d662f1ea78f0be3f18c3708d71665baafae025bcfdbec", @@ -17039,7 +17039,7 @@ "T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "b88d04c206f26442a7e85c4e454cdeeb4dd6269ff6847f9b03e45453a00a7b7c", "T3T1_cs_test_protection_levels.py::test_ping": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", "T3T1_cs_test_protection_levels.py::test_sign_message": "81a27df186052493a17cdb622a4168fb1ae2aa6f1bc9aa1d5b04687184451d3c", -"T3T1_cs_test_protection_levels.py::test_signtx": "e87eee8d55e13b4c64be6079e7097604c07fa6a17d255a5944137d3aad640809", +"T3T1_cs_test_protection_levels.py::test_signtx": "b79bdfb6c1ed32fce1f80be65f26ed63e99dda09cd90ebecd586084a91e0258f", "T3T1_cs_test_protection_levels.py::test_unlocked": "43aa96efe8f9dd0a61fe9b112da7d7961e91204b1fcdf67fc5ebd244145fd0d3", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "af974d745fe38ebcf16215fb5debb7828f5297fc5fbb8d74c9edaa807631a2b1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "f7e8dca79def3a360b848f01ba3cf5b66f04c06ce912b402edd71fd88edd2a08", @@ -17067,38 +17067,38 @@ "T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "fea5ad0b66b64cd5a85f999bdf7f921749831eab5dc35755a25d19949a414296", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c9f61cd6856c364cd280d778cbf65a28f61fe565a7e6f5627edea4b6ca6187e6", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "225d7ac01e06adb8ac83656219f219e8464f2cc727e229dde6725770f6065fcf", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "d1033642d2515446b172c6ca65ebd31c1ee359d682daec53593ad46ae589f619", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "31163128a1c33070d34a71ff645551de6ab2a0920b8eace4c5f87e9bc0647dc0", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a4ac6bb444830bf917cbc0b7f89724e3925f138855c542a5feef0a1cf3d18de8", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "afe318c7d4c4fd1d37e655615ec4518b134176c2b21dc2bba23741fc86367bce", "T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "207b08e6fedaca36ce60d2bfe2fbba550f5fcd1de622bfaa7628843f8347680c", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "3b04f0d531ae0d867794dbed01e374bbd8f2a3a254fdc06efab04720baafce3e", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b9a389bb159c7c3e678d106cc5b13dcc275e4eb17cee6a94dd18bc222cf86cc0", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "f4d5d96032d69b3e69f8cf70c33d81162ebc6440b0125c62dc698c158d933d8e", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "79b695c217a68c216aa54943277525c1670a93c20b8449aee6b4c967dd9cbb9c", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "dd66f5e3cc5270877b56eb1489181c036eec6d6cc918a13f817294a053064483", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "dfb18268cf506c5fefe0f2aca4b26de823bf7690b39a9ae89aacd370c4f5eeef", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "c78d8d891d3ce5278c4f1bc2d8e18d275d6fc22a07306531a03f5a132a273bf6", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6acae79662bec8cb16abc60a64f5ba82b43b3b4aee288614738fe2db0a53aac1", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "80e5c6a4d4982c061a53505a6faf44ffec7a999d1487911b6e09b110d6290b85", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6c18f9a88628bf7e764374d42c259055a96a2e3349ff044e30e383464fd03fab", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "f881525327607a9a7e5a90f63d6d5eecb4b5964ba66c99ec143e8a1a365cdca8", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "e2c5112fb612c60c306d19730d55db412988e5f8193a4b40906e56289ab8c5dd", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "5b5daa22589a1c2d73edf8b1cf47deb70932bec988bd086188cbaa2d5d337a1c", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "46773971ea2a2f06d0fbc7b347f443cfa29c0de93f014673a2233cc91ca58ef5", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "3f82c72421083d8da59230beabb9c6aef505a9a1fe167bbbbb615628ffc6886e", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "c4cf5d4699fda5abbac1db552d1ee719744f40daf57a198c5882164fb8bcbbc4", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "1f39d160065a00854663f77f3cc128c702d9a8d8c69917ad8cc08c09e172edb6", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "05e0a12b13c934abd1c7cdde14be66c41244737b842d7fe9a99bbd43d54b5cd9", "T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "bffeb179d995eeca19ac8b8f5e2c590a62a7d41ccb40890cb43101009c8375f3", "T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "169293bedd99f00433a1d3f19a68ba531711105aaa8926d10522c301653c6684", -"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "718656f9556552f85b1e3e75cd4dc0afb7bf65531eb45b8d9c25ccff27396392", -"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "d7f85fcbb53e6474cf66f9045c736a55591254953028a8f34e290a10b880980f", +"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "6309878bdae0b483c995b45a41828f8bc6ff2c9876625874f97a6f7440c574d6", +"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "d3f6997d585eb2285fb03bc293bd25e04b6cc29d41eea33bdb46a7d48e086766", "T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "fba4d52ab7b1bf8f72ea59c217b501df478b00390305b4ef9094e6f612db0b73", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "6a14fd64e958889b1537e1aa6a865408c9f5935662af88173070196702a135ff", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "60b549cd41fe4627f16d2d83abb43f0e4ad033f1f62749cc1b744f91fd3b75aa", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "289090710b253f0a1102d683edc50f982055579590ce1d673e8d6a067007917f", -"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "f730227d22380bebf471f654c3b10214d6297ebf44dec2774b4d319dcf5db050", +"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "719714623966225fb16a98d7f11ba43de9a2f478317283a600c8e16eb3fc684c", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "7bab9f7fe5e21ec37a2b56d7cde0b77b6f2adeef8e9e6c9b3a8a1e7ede270faa", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "280ee872df99689b250541aa8cffa839816a4feac081d3a94efc16b176ce6070", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "59bc2efdcb224011ef6b68af18e2c40517a3dc453ec0c3c4de04ddbed85ce6f0", +"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "000b1d8cf55f17072e9fd1463feef3a254b88d38d49e5ce39cbd96d1f2e20931", "T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", "T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "565acf768239c88014be5f11f420efe405894fe492902df20617398d6c11ff05", "T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "4691628455bd302703cd9b99dba8d243b43e97d5545951c516fbd36c03b89148", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "376a33ea7018cc6b8f2ee0f602d3ec69334f8cc1457f0b8e0cb5004bed6b6452", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "48712f0c499ef0a54d300e805ab784fe7492cc74f5d5ccaa4bbf0610eb7bf6ce", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "8ece49861660dcf5025044e6124cebf71cbb4e420d9ce47ee24f6458402047bb", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "a5d2819129e5653adf302e84dc854b3ebe11bafca3483c3bfca702370bdfbcbc", "T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "234296bebcd75f015d4dc038627d5e46f782ee48bf4518352c645c00340359b6", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "ab89cadb95aa2dbbdd859c77891d7376b85147bdf56a4e42be05019a3c8083be", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e61fed20971f9d3363224cd34e72efec3420c5a83c3074edab4a33c244dda3d0", @@ -17113,17 +17113,17 @@ "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "7bfced53564a92196d3aef9153dc43c5031c58ed6b8e9431caebe549012d5d42", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "7bfced53564a92196d3aef9153dc43c5031c58ed6b8e9431caebe549012d5d42", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ee8af4b6d37407970da75a20bc770e4f611b6657e78d54a96e5b59b439837566", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a70bdcf1c4be1d40f17cb232bda9e887ddafbed3e17781fbd6f4538e7c45e44e", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "652692b465fa0700ee4f961536c91a7bb979a2189e86895bc07d988cff02f4da", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "1e3db4d0ec2ff3a3fb53eef78aeb34d4ca682c0a53a6b0631aa31a0ab29975b8", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "01f8b1cd616fb5c34825730430cbb9c29aedd3d77dc7da9bb7058019936b16ce", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "48c823501d28513b9881671a4f278bbaab27a2a9ff899d8e13a3b03b8f93808b", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "48c823501d28513b9881671a4f278bbaab27a2a9ff899d8e13a3b03b8f93808b", -"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "34b00202f627e8fcad8e73f1e78ad43f0f3ff11f62dd734d285e54b2290778f6", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "34b00202f627e8fcad8e73f1e78ad43f0f3ff11f62dd734d285e54b2290778f6", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "fff19698003f7605aa26732fdd3190ecf13b15fb45160cd7fe78cb974a363d75", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "5aa9a184f440afa87debb4b7468f990bcfe54c4f615d566e05f342d2e2cbd54a", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "250b2ed70520f2ebc05873ea673fd77a1953eec2ff87a0296eee8e049c7765a6", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "27df3edfd628fe16b1af57b816d350b6830269c26d77af1cb7b7ffbc1a320257", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "fb3da3caa6efab9d6db436df17528f7c53dc7e4db2decb167cd3d8138c0352dd", +"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "36098c58f4b6b0e90abc5b4d9ba8297b67cc54e76a0316d880ade86c352c02dc", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "36098c58f4b6b0e90abc5b4d9ba8297b67cc54e76a0316d880ade86c352c02dc", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ce6b8d66e64740c2cf0e8e9c1d8ce82e5de7ab3921233538449f2ca98f9c6b1a", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b9faa78312e6121037848ac3f0fe1137c62e5041190e1e069f3f6b43d8d238cc", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "01dbb988a69cd12cb8ccd7064e475c42b7ad11fe4a03e8f4023fda16bbbc24ba", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "cb572df81e30276cf5a71b8660ee0b7592e4442c7d895993757969aebe3cb76d", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "4edf925676cb4281f667747c670df61f979817415d2deec973a5d1f92dd9d20c", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b0ce93f800b3c1d3438b1d18f58243323851d69f799e26c2e9d5f8f2acd876a8", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "dddc885fe32ba573f49a7ff83cf7f6b7cbf47b6dd41ce324fdcfe0b1b63fcbaf", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "e7fa0c775dca94de429c60600d2e7728ca9022932868c3b5c418e2ff05563bfd", @@ -17160,8 +17160,8 @@ "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e8c7e07d0e921be8ee1535a85afe55ef85901a3b5cc47e22174c2f932d579375", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "ecc8145348e518e6e58b65609ccdc9095711f848a8a05f477a20c26e9317c6c2", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4449021721d9476ae99b7ef9120299e9908e5532b5e7f674ff68bd7656b0171b", -"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "c0001273aeb537e63b76c4725c55ff56a76d1142ffcf364d6381386e899b9aba", -"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "25201e31c2b0c528b83f71c039704e1dc6e41452f1784b3915079a3489f9afc3", +"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "995b967e58b5fdcc29e85652cf57279ffc5348649c5aae086d3f66dcbfc20df5", +"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "ace8399e3fd05a1a6aebbd3553ff442173c9f3909e7d4d547492f776e1ec0102", "T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_getaddress.py::test_bch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", @@ -17220,10 +17220,10 @@ "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "c986bf5e923e5a969690a124505589be36d237c291cf470c414f2a6638b47749", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "991b139be7ba9f2ae7bf8afdacb3084ffcecd26fe818ac1541fa8bb095501add", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "625aed4c30cab01fcbdab0a61cb7188ae0b41b0be9a8df0d3fe6111a0d096c4d", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "07acf1e1658ba39e8872fffac0f6ea934c7376692551c662caa810944c5b7069", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "b94faad8af19082d0cb0a09fcdacdf3a8bb627893a8dc6ca4e5cf70cae074f36", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "849a4d6e8aa2d87c030d77985f915c5f7583e712fafe3e1e91c21dbd7be090dd", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "cf94e03392c31bbf3d3e336e90d6b63215fb576047ee8fa6a1f07a6f8c446f9c", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "4bf70ae432998594e814b063e392ce9952daa7cfedc411ef1d56187f034d2acd", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "345bd819dca7f09367d355f905867f45f0fdf2292553081ed48536c42f3cccc1", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "7fe366d88a5a77be53d1952d4705cdc28db06605528aea7e90a8d911fc997d2c", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "644ef41381f2b6da1446240a474c74ffe3bf59c476599a93879d2e66d822fd9d", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1e6c2ee1bbb56290a8a2bedeac17600e5a7ce5ddc7a81df129f65e14d069ce2f", @@ -17232,14 +17232,14 @@ "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "5ea89929221f7aa074001dc40cc346acfab795e0473de4de61dd90a7b217958b", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1f325fa1afc1056cadf6fc45f888d69d53d30a1af6cf933c7b96de3e2b6ab43e", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "c62bea1f5c9d777c4f5c4ab11b2f85126151332db5b4a020e12903468b289b86", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "0139979bd75446aad8304219fac32f33fdecd4bad34d27e3e017367329a4d6ae", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ecccad50a18f0f2dfe5675ba51cd72509c410ff676d452d0f0b7541262c4f965", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "dfb8c69166b8723e59086720da1c73e511591ff879170d3a3958be07037ebde3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "0dcf2a71c40d3b5240c8e474531771457732e3a71569f87b170b21aa1b70e43f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "3e1483355a6a38f2317eaf8993a3939fc009fe5afa6800c9b7afd6c9023bcfbb", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "639142ee8bda009c76d6d4c1a9a89c8bbd73f686802f97300c6e09b03a05e13f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "cc63935c5f16b830a8703d37003d5daefb1d0175a8249bc228c5a094f6c99f2f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "efdd756ea64c220cd6fe08aba1d0d5d96558c099f6008a96664f8b3486eb6de5", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "29146fa3449c2975cf5be6bf3532980fa8c330521a9abe3aba84c8cf1b5417fe", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "750c3dca96fe30dee392239d49dfd27d38b6f8606f94bfa67369cd0417f068cc", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "715fe0fc3f1aadd5df8f453d228d44738b31ec39595f07379f7607ddeb26fd80", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "e111b18154f067695bfb47b5c7046cd5762132c79d461c8f678aeb748e7e157a", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "baf418827ac852043c2bdc8f63b27488324a317d30c745694291cf00e7268df1", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0f4519e64f6d4098aab8f0f39b978022f948dcf83bd20bc49c27a1357fff4c18", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "cef63b6f63e910b138ea9761e2b49d6fcd5d7800f13357f94452a091bd574d6e", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "1c22e671119ee81624428f8fe48ff9bb349beb96f939b435997d2efd31109d27", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "748c609529760c05f94c183ba5b4b8d23518f637036976413d69b910177c1b9d", @@ -17289,28 +17289,28 @@ "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_grs.py::test_legacy": "5fcba672d3e7a04b0cf6cfb798542740ffe9bd6da027409f86bbf893ea8a0f53", -"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "1ae00ccf520558be5f3ba84dd4d854a029762af1e06407b47e1cb75f5077cef8", -"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "9d506553aa338ee0e9590255c99f30df6ed4cf2459f90dd59a0b4b50b0a4d830", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "18d574de8b2063eb3b0e00e0c2f5a6e52d3ec63b484d4925eb58c976718d04d6", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "aa2517bf552a6e1d95199263558d7d21d4689f36612e3d4f7924808881c56a98", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "b95d13860173b2269f784ef850626f8de42375abd457e0e731b1cb317e1ed7c3", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "0e1ecadd9fe0722a109893b6d45fbfe3b98b40153a73ededf235f0c45322c2a8", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "547e8becd7fece2514b7f26e49bb9f2e097b04f6b32076a179577d4203ed53c3", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "08183cb7ba6ec52bebaf4fa07dc73334da4278ad76844a91173b480220f136be", -"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "78d7fa663a1bc4d16992a93d6968fa54d42b3939d22a3a02669e23f516130338", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "dd5b62a8e9483b0ef621266b0a169c0fba909f30ba01aa63b6583321834f7253", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "eee16974a17911ad936db1a8ad297b7423b2f3e21ce2aa5658d2465b2e37446d", -"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "be21dae07979675e5ea8cbc2884712a76e044db88504ce9936b7478678e3326a", +"T3T1_de_bitcoin-test_grs.py::test_legacy": "1c646aa927f89b85647594a4d0c07e01cbd264a7cb09560b63e6c89cfced5eeb", +"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "4d3f723a3bd46062432445da7d8045febf76b229ae23b4611361b857867478b6", +"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "205f54091ad2dad4473d09086b46f3e2701d3e9ef83055272e047e0c4c83bb23", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "46df110c19047d6421cf3c5a1eed17aeed4e7679f6d1cb604c6065191129823f", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "893c3b141bc2bb3137f6ef47fc9fd7364ba4b886613e35d076207b21a40c025e", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "68abe12467f22caf6a31920dd7081ace0deeff5a128c1a608551fefdf5097545", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "53e96ebdbd48bb91f5961d9a6ea3dd204343232ccb7a53b24599ab7efb6d55bc", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "1a968389159bd622dff3415766857f753e97d164ddbc8138d3003cbf759a55c3", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "ec8b33ac773218e7ea3b8f5a5c1cce91d8ea29cceec38e3cf5d1e6a5ae68adec", +"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "15c858baa54bba7e31ff7928ae897e734ceef0bee07f8ad72c1d8ab525d61530", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "4843e2303d469cbabc15a9cebc9ca17855217dc2622487b0b282ebddb4a4846a", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "1db35a2c69913afd92c0b619f53853726f62d8ea0ed8db433dd770cc6764a8f3", +"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "a5c7844343eab55b63180155caa0442c9a27ad226c38d8f75fc4b1039856e7bb", "T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "ca714ac0ddef2206632afebcb99768b27ba56176946b1d5fca9faeaf0a083f0c", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "8d2f85507438ebcf98cef428b065d89ca678e8f077925dd8891ca5d0d47c0b52", -"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "6f4927f7d1a255e6fdc87b5dc80435c8c5cf44ac0dc09a46fc55b2b331a5a13d", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "a7cda240db38b0c9fc19fe2fe0b5629fedfe63d6d40e6fc8c0b69727b90153f8", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2767368b1cd230d430f1463e915017dc9c69e776ad02d90456440332755ccdb5", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "877cfa77784a1ad3b7d4a2a557f529314d5d244b741483c3b506b16869533188", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "56df56faa2d5823c352fa9079ebf0f8bfa3b395d5af39e0b22c419d5ef15f67e", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8706c38d5624055b56da6fd269103d3a08904247824bccc8d30ac6217ce8641f", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "f5011e4aba5c97ab515306c1a58359b9bed78d35b594f3f3ee6c29c949554e94", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "11f491e0b347ca7936b5146c44018cc8427bf58ea34d6bb4cef411d9858ff64c", +"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "9bd224fa22ea9aa246d719bbcf45da7eed488800b17bf9ae2a7f69138856d53b", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f2d850075a7421261662d1c3cbfe774bc33c649b512891bb895294c580451d29", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "4fb5037fb852848b4762e5ec87430149c32ba2a7d8f08c57d73c7f16d56a42b1", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "dacd98d46cef25ee35931edd7a1e268b93523e9c910ff1ff6b4cfdf28fef8cc2", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "82f50f5c67e36d802b8fb6bdbb5abdbea0ccfbecae420c608eecad37e18258dd", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "59ee17f61bd39906118ce5a5b5fc8261bec2406cbee36b074254aa31847eacd0", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "bf88e8d37de838dcfe3425a969c0358b92ad662fa4229587822839bb170dc2ed", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "e3061e2c4bf5c359a5750e32993bdfcdf2a68a24460e59a0c04754a81cf95779", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "e595d5a8993ce0f08ecec52305fa1ae446bdbbb2c4450924abd933d38c907827", @@ -17339,25 +17339,25 @@ "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "dac169ef455f07e9bcaf588d2baa5e0857f06e162b5b1eb12e52b7dd84de5611", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "fd1eb3d204264b190a07f9ddd460896fe641a0a73155e624ec7cd84a3bfe81ca", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "0f39d309c1eea1b313865824ea2196988d0b7f57c57e85d18471293f0ca2932e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "e2bd035481309dfe3f341198e5f1e142fb2168cebc6b8f88aafe11516079a2d1", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "de2a2ec66cbcc8349c38b8f3a24342718236dea37ce2d8783db5c33fc0c49b18", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "16089c1ee6e337f7d3d6a18cbf44c8fe0a88903bb3bad4e74bfc09a143e8a57b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "96ad823a5a9b8a3ee6cef4a2263ef5672d91ec80472641e17bdb7625c15665c4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6c5fedac1d51d33594daaf375950af5c0b3a5b1f0dd807c271cd0b2cbd179d63", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "9e579e6467c70bb66edbbb7b20803bbad804abd2cae7398303706a89430482d2", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "0113e0e46e898898647d37f067af095dce1f31645aed173b50f7a1272b98517b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "b6ed6f963b793f88a513435e7f5134de032ff5e1496058e4158ffe45d053d584", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "cb8e40b5a9d06c0fc01e4e19e1851e2bb7fc97b8cc1115fa1804d2bf6a88dd71", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "0113e0e46e898898647d37f067af095dce1f31645aed173b50f7a1272b98517b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "0113e0e46e898898647d37f067af095dce1f31645aed173b50f7a1272b98517b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "0113e0e46e898898647d37f067af095dce1f31645aed173b50f7a1272b98517b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "1c24574d2030832e382ccc52af916a0d80bff5ca82514d9f5cab0aaebe7015ce", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "abb8bfcdeb912e11cc203ad79529634357505c12bb0d08f08238b29956bbdfb4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9962781ccfc7f4d06f79defdaa10f9f8aa806f275fc046a6b16d6a59e933b27a", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f5ca1aa57a0661c2c03e8746bd0085cf81304c9746bba31db802558b6186dec9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "8c783463ec1d65ff530c84207488d894fe4698d1db3ae8e49fa7b5ddd06406dc", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "1a49153fabc7c85155893af263977aa4c85c31d2abd906edea3d99588c227935", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "1127a0a64f4eac6f7d294f9663c54a7830d1dc14a098b64c97ddec22723a6099", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "fe610efe772fd640a5f03ec30047e13d60130b42cbabec0389899342d2be15fe", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "9f2f73ecea21e26ae323ae4d46479c6618af46368941a2003df054e1ab8d5e0e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "ff426b3c0918cbdde09f324ad959c18108d9bb11f4e02cae5866f872f858c2e0", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "fe610efe772fd640a5f03ec30047e13d60130b42cbabec0389899342d2be15fe", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "fe610efe772fd640a5f03ec30047e13d60130b42cbabec0389899342d2be15fe", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "fe610efe772fd640a5f03ec30047e13d60130b42cbabec0389899342d2be15fe", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "c8450d6ee797b5cc14b5b80ef8ce9b9838febe7c5b2e451edd453b8e98af167f", "T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "c0cceb2bce767134f0c6235711000d4405a0d850a332a025de5f0e2a338e4c8a", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "d9d62cd5350e009ddafa6a1c0d3af5cfdfe28cd9b8da25ace3f0e48ac5a2ce3c", "T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "603f1b8c5cb9472a7a5e661c7f6c1435844813cf27235508d0b737520c617493", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "530ec0b0dd6f75e4e7e8c3c29867063ed583f2a4ae8f81fb4743b40596f680e6", "T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "85491f8a7e27e0c6675971234ee5d3ddc9fba06624616bebd73f29e71d5600bc", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "6b17c1e6a4b6b52f317647a83a40f33777bc1c8e4c57d3342a91e862d931d266", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "cd808a708d9a125b53dbc2b5003eda1998a63f9e6f6be90c707369a7862de98f", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "cd808a708d9a125b53dbc2b5003eda1998a63f9e6f6be90c707369a7862de98f", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "733e4342d618d5e418bc3bc6bebb2eb87c3ee0407567c01de5befcf9d720a7c6", @@ -17404,102 +17404,102 @@ "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "87ae843db49632b85e8b2cc09d1801015c615299c59a9baf8b6d9438ff0ff757", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "93c1eb6142bb8e1503aa5981021fd8a57c73c8f9a9bfa0d4ff90c3ccf05f7242", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "97d449f19810f2d34202997c2aaa58353dfbf200cafc017dde26cb1ed8367482", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "19e859c6846165c53e660f7a74414ba8f124299ab2d6fb56ea87fbf477c415d2", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "34269d0790248cefdb18e1edd0a8f9b0603c87afedba208e103780b5e4bf9586", -"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "cce13d67b51b17f86617ee320d0d9d872ad06a17ebf47de6bb064c2dba24498f", -"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "cce13d67b51b17f86617ee320d0d9d872ad06a17ebf47de6bb064c2dba24498f", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "e69e8ae9acc1eb8641d6726008578e5c80ff6184916b326d060b483e9c67fe0f", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "d8f86b7b3bda36c75647f64f22f912e6bd9adbc61588063920d471ff7b9fa586", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "e9e60109cf84517c814c683f70e302390c46e8f2a7f19ccfd52fbc74c6644947", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "c748bf97750c52aea4f9407c5dccd9528750b390b434dc116acf2e801c6e13c2", +"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "4002a35ccedc9f4a04c9a4865be30ebe3f5e5f718d361bbd4eb4c49e408f6e10", +"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "4002a35ccedc9f4a04c9a4865be30ebe3f5e5f718d361bbd4eb4c49e408f6e10", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "c7ae04d72a65b27da6f50dd006d0626c2d5f10caa91d8fcebb6fdf6ac93d264b", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "85c86aac79bfd16c12ce88108a9c017fc7fe576fbea916f7cbb66cc32a8804e0", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx.py::test_information": "b91d357e61f9946c3dd9e62bcef98216c1985957794007ba7343f3f03ce8c11b", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "0d944ec4cb4680c0e86328c2ef319916eec0d4eac3212dfecd0037b80e0fb878", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "8adaa791f20d658ef342f3eacc042bfa7d5c152bebdabf2c47d736ef3c418c1a", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d2295706197063cf8692d6b9de40c7ede345c2f5e8ef7d837b4b75468c7ca32c", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "c1d51a9614a5b195913714b4c7e43dc77451bab930d162fd79951aa8f59a0e03", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "523de5ea9b8cce2e2ee52098aa1ba4472cb83d3893b457c293f476c3276621ed", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "c1d51a9614a5b195913714b4c7e43dc77451bab930d162fd79951aa8f59a0e03", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "523de5ea9b8cce2e2ee52098aa1ba4472cb83d3893b457c293f476c3276621ed", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "8560f1df3c17afe36cc1d30049fff30ebe5940937070d841d3411cf2f2ba1071", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "a7ce03a901cce8496b6a8cde3379254bfbbfa1c41d09076f1c6765dbaab8fd04", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "1b3cb9edd0fbf743b261dbabc88da0c10670d7c51841525cff395a3b7f7c70bc", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "aa0b79675e8a795c79460b89d1a72c3fa9a6472dba446533e26ab34b7b037b00", +"T3T1_de_bitcoin-test_signtx.py::test_information": "429bcc7e7709429c7a6bd12d80e371099265b7ec71bc9a64fa1a158327e0c5b6", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "00c8e7e6293011e143bece9e53d74433d61585ab68a719848fef92878b56cd2a", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "8864ce03f995d0a51f026fd998f021e0ff47bf09be86a392ed3a73be342c340d", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "b726f8ecafe39011d7382c8f7e5e3f8b3aedd766a6097e4e021e2b5c632408fa", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "f11063a77ac0fa4b05610d3904e8101409621a8763e80962b36db3dfdd98e95b", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "c8803142ce88aabf58bb651dd433d5962a1f43e7527ba0e971e653f9d1e8cae4", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "f11063a77ac0fa4b05610d3904e8101409621a8763e80962b36db3dfdd98e95b", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "c8803142ce88aabf58bb651dd433d5962a1f43e7527ba0e971e653f9d1e8cae4", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "c0cb63f4c9cbf9374a27235fd599827056ee39dfdd2f59f8a50fbe2b044f5a0f", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "13d8d858b2752452336d5529878ff66ad899d7d76bd6faa252bbf03b29860414", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "00ce1f84a28f347ebc8bad4c0451e0ea60cc87ef1132d4b7a1c83354e6c1844d", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "ca97f1c7e24ae650625f027c68a956c0b700ba6b19554ebd93742ee23766ae92", "T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "e5218ac2b7e11356060069961d606eade9fcb6b259c4bb0a7461a8c623d7835c", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "d09659febc6fe0aa330ad2cd9c1bbca5ab4a6815ecd4c547340cd8cae3c3b38a", -"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "90b796df0ff3c42afbf1576fe8dcdb6d9fbe0ed76a0859ccd2b3f8b7ce73ce2c", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "5fa15bfdcbe0295136d0fc0480a389644f0f78ac1d75529888496155c1f3fec2", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "6aab01132230fd752b4ec0cdb3c6d7bd72988d728830ad3dc43a67aa1819ac99", -"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "e27dc3b4b6e3ddd269f840144981fb0251862fdf59f9f830a501103f323a0fec", -"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "08456a03245fd4f8f9233c38b4cf966877bcf9c6d5e33057df4881031c05870e", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "16bcfe4b4578a93b56ad1eac8143666a8404ae7f14d6b01ee30dadad9b1cfc3e", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "78daf273220a62dd39dbc2eddbd846c8c139ce90e5357c3b4aad09f98a12249c", +"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "0e1121f8be00f038c125598d8c065ae7043e764ace5be27077535418d78f8921", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "55367453a5afe9db36a2361612f7b5870c4b00b706fb55fd200d2e5239a4f568", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "091b4fd079951260122e47348152e7ea8cf0788b769d978f1e0037824ca792f3", +"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "9a7b671a35c11cde2a8cb878f787e5091ff4f223bffb08cd56ed24c0a72b934b", +"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "d2f2a18cb313f35e4764d2a4a5bb36ff74ff1766c0f7b782cd8d0d211c413eea", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "98c51737bd43509a743db9202e09c073db96f6339c8898c072512543c97dbd02", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "bb87adec27632cded3a0fb7c0215477a6ab9717d82bdc62c7dc98bf5f7f1d673", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "392cb5d3baaa7b9b6e194e4aa240df00999bd63196b19d66cb0333750855a559", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "cce13d67b51b17f86617ee320d0d9d872ad06a17ebf47de6bb064c2dba24498f", -"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "83100d4dd572c022961f242b7e786d1c51e04c71fca93679acce2c64498b9bbc", -"T3T1_de_bitcoin-test_signtx.py::test_two_two": "9e1486eaca72784750792afe57289d71ec01bbd2b284b965beac0e42a2d0d4b3", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "90b796df0ff3c42afbf1576fe8dcdb6d9fbe0ed76a0859ccd2b3f8b7ce73ce2c", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "bfaddb3730d9c418237d4cae324c77ed2986e7f519fff3a6deaed211a3e62ad1", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "4c3bae249f649128dcfdc00ac071511402f02c8ac7cf1957a011aae887624aac", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "893a4de516066a9e2fad7e3a44dfab8810d8bc46a0ae472517ea3a1d53e8824a", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "90b796df0ff3c42afbf1576fe8dcdb6d9fbe0ed76a0859ccd2b3f8b7ce73ce2c", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "406efddc2c740673f0020c0cc4f190ce8e6a48602fb3fe50c1c294da564fdaa3", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "8357af62cc0d08f1b1b5f2317906b688287b523c8158e1ba0928cd3bd5fb48ad", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "5b2bc1e3c8c3de3cdcbc7bd25e4c492c1630147ce213e616f343b81e8c5c6809", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "78981d19f5484466234173d2e5306d89a5a7c8b4e8b6f70b8c04e57f3bfcd474", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "406efddc2c740673f0020c0cc4f190ce8e6a48602fb3fe50c1c294da564fdaa3", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d9e8cfb267a0ff2d7327cfea0962b0476e6c2e5ac5b3d68dfeb8f41b87226344", +"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "a7cfe778ed26e53a1988e49c44a248288e9b2f65ff8b61e50e88830244a78486", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "9adc12f10b1c84d3708aad2ec9db3b8145db2ada1cb2bbafaa89983e74227ca8", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "ad9a3dff8237222efc6b03caa5502aae018b53684314c3ca6be917b4f580e1c2", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "4002a35ccedc9f4a04c9a4865be30ebe3f5e5f718d361bbd4eb4c49e408f6e10", +"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "9d298ffeb224a8caaa707253f0dd2d11ea65cbc78b2ab1bb33e8f1f07dae87f1", +"T3T1_de_bitcoin-test_signtx.py::test_two_two": "27e286200f05b7b00109e6dacdaf6a650ae46e458e71834d07633b6f39e4acd3", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "0e1121f8be00f038c125598d8c065ae7043e764ace5be27077535418d78f8921", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "43f7585058eb50cc0f7fba622675d4cad3d85c8e29a6c70faf682b7d27a55621", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "01a5b23322296c60f1fca29249737cf7143a95c0306ee6a1729788a116855b08", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "2916888d29ccd65b41a2e436fdbe713e707ed1ba6748e39a5b1224877569fc4f", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "0e1121f8be00f038c125598d8c065ae7043e764ace5be27077535418d78f8921", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "af17a89647ec84def2191e6afc03facd74c39dbdc472ca5faca99672b684eb9c", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6eeb0347d4b730d9aedaaa654114b59d2869ecb44d4ef92bf65f837b07b1e182", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "558d6047774a1e4ebed5354864feb4010af18d69e38566d3d39cfd3fb8b6ac9a", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "30faecad4838161ab7e101a893d8e5fd7e3010f884ee3fdfd4d99e2ba28eeb14", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "af17a89647ec84def2191e6afc03facd74c39dbdc472ca5faca99672b684eb9c", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "70acfee7ca86d28891358261b12445d4f1216dc1f324badbee6cd490d9ad39f3", "T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "11e2e37664c31de867b8f58af85310c18dc9566b5b7c53f3d77a0150783b2d6c", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "750533d2a1336221d65266239c8ef8faa99ab345dac548c05574311e5301fc13", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "42b44909e35f7d5c8a5380c3bee971ef275eb1b217be84e4f0e11380d4f81fa0", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "2c8d6b6474217dc547f5748978189667ccd0209167c6bc54f66ae370225b6819", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "2dae682788a2fc4843873244e69ca0d74b2706c61ae2d7643fa7a0d91a5396a2", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "24ad78a6133788c95c029c9440f9f5a7b07619c64e6ba8ffcb70acae1b423383", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "7e9d2d7f9a0be98b1fa02d565a50dd531e94d586b1431c5086c6bcce5e14edae", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "be1e21f68fe930aeb7fc95ce7274b15b2aeb13f2757770ad72c00a927c626b97", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "77ef03263c1d4701ff7bd521dcbe0c27b756c63f332fd043ac813611fa954b6e", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "51653d93d34db4ccd90df7e94087a79d200999b752b234cfd206c4f48b74fe60", "T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "1a44ed624bac732bf0269d491d29f6170871a5c8134b47f734e349ea7d020358", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ff03e19b8faae41712f27f1ce627978f51a4912837c37d803f4b85baee0cb488", "T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "1a0f6ae2384a4899ed3c2a17c27fbcd9809b765b5bffa86f4b116acd5c4db8f3", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5e22f356b5cc680b8faa1f84ee8058552978b5fb8302c01a1b8354d0829d8824", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "351e0760108fbe575129e519f73f72c85dc4df232c4aa3bc850fa93b434afa91", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "e0baf9d2fd45c3cf0bd5ce9e89fefec6f60ccbde97008636267b08974ea2616a", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "8c433dac2203c974c23ea5432713960387c9e9ee476117292be8a5f460d5ce45", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c23c14e339fb1defe88c22c9e52ed5120441afdbe53d8119ee67faab336030cd", "T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "680e02457d0f933def23a7d6d25cdb4bf0b374e51c4317b9e595bcd256567a90", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "27ca302cc702d91f69ed68117703eb3df274fc67cbb6f65a0e1572585e5194ce", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "d51855376ccb6239a118f2c1c83d60043f367ba57b0b054a0831de728d166a9f", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "1a796c2a9b3de62a58a597775d9fab4fa828514c4829602c9e3b41714ea73aa1", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d51855376ccb6239a118f2c1c83d60043f367ba57b0b054a0831de728d166a9f", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "1a796c2a9b3de62a58a597775d9fab4fa828514c4829602c9e3b41714ea73aa1", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "96e5bc88a019df8982ab77c4d1d39ec4d7aa6a16522cc295430c32affbcdb03a", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "edca39892fb92c2e00b18c44b771f8a9f7a2bc86d6ce42ae46f635283a39d715", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "6481358a1ada327c0cdf3fc7c439b5dee543ef5cc3396f1e0abb0e9665ded509", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "27da0d44164db1ffbff240e414a72be2021730794332d2243b0c086a2939133f", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "6481358a1ada327c0cdf3fc7c439b5dee543ef5cc3396f1e0abb0e9665ded509", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "27da0d44164db1ffbff240e414a72be2021730794332d2243b0c086a2939133f", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3ed6ffbdd0188eab05ac9c30a748b0b1211e839dcd97151acdc491ba8dc6935c", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "e2142d488a44d9439c09c3ce206784f05f0b7bd288067cc55fff7fc57ce0f00b", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "b668724cc5f1b9d5cea8423e7be112a48730ec5f31ad806b02bb3d5ae075cb61", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "a7bb02713627f2b81d6a901ec399b299d4af0c665d6468910b1ac2e7fb935ff0", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "d48678796bc773d205ff4d9acbe2806a9a10c5b124647940b71785a2ced63783", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b2ebfdfd0511a823893d529bc971381e64beb0be1bb274a0dfa28b664704494e", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "be2c0e07d1b4e389ee73f00aae6dd00accb022ba52b6a41dd0de62a5a9e815dd", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "861d1426b763a3b6ab397d5b560ca04d6e2b4e5a55c4d3065bb22902456374bb", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "522750baab261086f0e3ecbef3f3740bf9a7b3e0e5a8483fd04fa3c1e05ca07d", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b92c370bef37e54627f797fa01134d2944f199eb4a11aed3ba7cfda7aca46bf3", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "da523d5f80286971dc6c70b1c5886934627fa5dc9850416b9e2c4abd21361eee", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ca6372091d2e8dcf4769ed93333f463658fb7dbbeeb4c4f4b9c069ca95385bf3", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "7293c9079b5c204e0ad2819f087243d2417360909bc7435070da08a43c7de3af", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d80f75816d0d9ee831b099dcb812a02cae9505038283d4b737055bd9691029ac", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "eb93ede2288fedf8ec7d6ee80707434f56910dc32ae5659c88161cadf94cd77f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "eb93ede2288fedf8ec7d6ee80707434f56910dc32ae5659c88161cadf94cd77f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "eb93ede2288fedf8ec7d6ee80707434f56910dc32ae5659c88161cadf94cd77f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "eb93ede2288fedf8ec7d6ee80707434f56910dc32ae5659c88161cadf94cd77f", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "b1db4627be2ad9c84869c7196d258a48d6d98ee70a4af8decd5212eb96b6a089", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "b1db4627be2ad9c84869c7196d258a48d6d98ee70a4af8decd5212eb96b6a089", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "b1db4627be2ad9c84869c7196d258a48d6d98ee70a4af8decd5212eb96b6a089", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b1db4627be2ad9c84869c7196d258a48d6d98ee70a4af8decd5212eb96b6a089", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "9b48257a4fa68d01d086faddbad7483c5515a64bbe742073ecd4cf7292986c80", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "9b48257a4fa68d01d086faddbad7483c5515a64bbe742073ecd4cf7292986c80", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "9b48257a4fa68d01d086faddbad7483c5515a64bbe742073ecd4cf7292986c80", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9b48257a4fa68d01d086faddbad7483c5515a64bbe742073ecd4cf7292986c80", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "05029da12625613532de3148356a874462bd9d9776834757037c8548c017d446", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "05029da12625613532de3148356a874462bd9d9776834757037c8548c017d446", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "05029da12625613532de3148356a874462bd9d9776834757037c8548c017d446", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "05029da12625613532de3148356a874462bd9d9776834757037c8548c017d446", "T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", @@ -17518,33 +17518,33 @@ "T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "ec1b0c41380c7d5d4598df23462d49e502042397d3687aa474d4b4a2aae304e7", "T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", "T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "478fada984fd36932ffee0ad5390f962145bd927d3506b3f5b64043beb82f3d3", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "65c75829465ac5d5341566255bc1901c5229ef62b6b2da6cc46405cbe4ed48c7", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "97d2f9fec595ad41210348a5f2cdee8fb302a4f4e78eb3a6a23af084a0a7bbba", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "22c14b2c9eb365a633d946d01ea1205358b8a98b9d5cb0607efacd59dc92a16a", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "3988ae35c95657aa119678091cf4d6893e1286bdb2e567b3cb340ca3f15544a9", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "319e48a1ac9ca9928c42435ad1a008f8d69bf2573f8e1123ff53fe7ccec0485a", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e44eef4e7ac8828feed95921324e7b6304e86b641d1033e73f95579e1ac72735", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "b456678f1e3d94c916748b5ae067b78b041fd529e37691c30e3651fcb204be84", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ae99f1d18a13ad505962b8f42c3817bb4acec14b25416ecdc9df8c460445f7c1", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "1d28de0943634a00df7e7888912e8c2c146daf8e5de7e237b1422a1b7f8c3808", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "eb59bd8f0d64fec82eecf53c19b636121cb12d880fffd7c7d185a3a552abfa85", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "74f3976dc0598b7082564ff7e9af0dec4b06b8c364c3a5bdf15198a68effc3a6", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "50f3876d99cee216a3a79b53260eb302f4921fd57c464316b6c82431dab59302", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "25c9cb85a2d08fd41a234a66b57ca4749b675b90b24da3c51782a58b27c25598", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "406efddc2c740673f0020c0cc4f190ce8e6a48602fb3fe50c1c294da564fdaa3", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "54e7c3f468b08889fa614d1c6718472960c2657ef7c70094ea440b349d79ce6b", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "8ee5b22f8cf6ca5a7bd163c1ed38415b30e84ff81791e8cc1d8bf3e7ff64a694", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "c9b9b40c93c0e3eadebc84290c0396d0bc809f2fbf066cb0a2e13e27bb8c85d0", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "d8f3c307f739c20673955dbb4f8b8f7826e6e678ebadedf6e98c228a4b62d4b4", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "32c6e33461b001456b99fc6231071632df16f6f70240ebc5e1afce4322e86507", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "8242a2e463f8b0ccd30f2f22990220004f2c549f89ee646d65ecdd2306cad906", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "fddda5973f61c87f552cc60e5db819121665c6e6e5d3c228bf111b58202810c0", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "22e9b353ecad375a523b08ff36fe7315768b26fde56feeeb43b0685242735c9f", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "9d5c74b94a2573b333a1bd69817c30695b5bbd4f4edc663be6d49285e0001a2f", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "cf94278b1ae8582542729c5be53c3545eb89901843c6b205ac82e460d80514ca", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "31ce60eb111f68237a402da1baa7ef01d5e6cb1c779cae527e588df8640037b4", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "852a21609a7a99609d618d4e1ec0b53a811f1451dd3923e5811ad37341c458ee", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4640450d3ab72a8c41d0849113eca80b44a532db5001bfeee0f9c902bdd54f2c", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "659126956fa1b5e1783038f8582cb252f6d964862ffc02bbef32b2f3dc963689", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "bb6da0aaadc43769ea9278a48722312a6ba987bcaedf7443c5999d46e183027d", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "38c6d8a663184ebf7816fd647dcab14332c8b3cce406b764548b76ae511192a0", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "73ca8af8e5b1704dd26da63d7e8d7f2662c4f96f72ec5fa8e42a51a78f5f2789", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d4e813bbd5991c2649df838d7ec9da54704291b40257f73f878b864e5cdf7f07", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "af17a89647ec84def2191e6afc03facd74c39dbdc472ca5faca99672b684eb9c", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "9f316f7ebd5913e097119688558fc302996779d3666c3b3bc33cafc445e7e63f", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "ed3cff707e5cbbb75687e293709518ace697c6e1e6115711b9d74727454980cd", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "2b61198a203dfd26b28dfa9e0fa7efa892751a2690df96cb8358da66cd2d0f78", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "69551053de1cb3c179caf02f7c65bc0c64ac957524bb1211cd87c9146d2ce206", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0fd43f4272cb90bb3a757bff00608f480426018f481a795b326d6eb8424a8158", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "5e8634be38d8b13336b943c1757a054447c3c9a693d42f3c8c20e2ce0caade1b", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "48e9b1c25872bb0fbfdf529c445ba5b769f2ba209740ecb809ff94382f9430ab", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "4717f4d60361e850d343f52899c2c6da9beef5471d20def50f55f86bfe793134", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "189d1cf212f93120f3562904ed90a13a5e256f8666ad729bd20309d39b16be2b", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "d12f533c47fad15cb9475a891f1f97ed14206b5e24f54d8f4c529e50ce43b5cf", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "d56aa68a0003577a9f3a0813216e35a15c4bb370d3fd10ae5fde37e68e7539b3", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "e0c6109e30d3e462cb396452fb54d6980af49c768805babe1eb6398edd445fc7", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c25c46c078dab96936ce717873e186cafdb22d6041340d78d42d897f8c50d23d", "T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "03ac47c40083d572f4b95d89dadf3fd624e589ed68d44edc3dcad4d146ea4680", "T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "66a6845bba5d93610b3870520c7e97b66fd696bbd24979127fbf7dc765d0f56c", "T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "c06dabd67e039e3843cd9dfb6dfedd435746c9b95b5d111a58f9df6bedf86d11", @@ -17560,9 +17560,9 @@ "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "b7460d1b2cd995c20493eb6ba8aeaf3dbbcb8f29803234de4a6331d0b96c5ebb", "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "bdfb64558bcd8594c3efe1189bdbc6179723f324d3eaac30ab4fccb7a5b2e438", "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "62c921fcb85024b1d6853bc44ff42e5d3ed38a41ffa5324c50654a02228b86fa", -"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "1e145d7dcff7dfb5d4171d3b2006c0202e5aa3c9b33b22596d8b4ab61f7051be", -"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "10276d0960eda49b1a269b58aca35ae2c5f4fbe020f376ca15730b4306a5938d", -"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "1512da6cb9f0d61b5a0bd5d23d13cfa55fabac82303862f2f61f932e8f1c0a94", +"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "e47e2ab79557c91a6f436135e3b690499f061d548c66679ca1bba6d0e300251a", +"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c31f4ced14b2eb9ca016469b07b8231da4e8e5ad176756bb632de3fbdfc601a3", +"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "4d485faf39dd856c8fab18c8b8cc7a6d09cc6a868825a8e37f00fe94f7d56dbe", "T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "52aa41da1e12caf36b21c4239949c1f96dce8bb1d486d8cdea3b91aff0278e3e", @@ -17942,12 +17942,12 @@ "T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "eac15f64185785f0825fb65709f2c9d89024bae2a5e7097893f7c8147636680d", "T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "01edab9d64c43db1ee88aae581c43cf0b2fea80f994e85566ac3370b65f0c368", "T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "14786f7dbdc61174ce70aeef99f235481c18df97ff9710904d1aa061d846ecbe", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "d039538db593589b9ec1a49e55dfe63f454cb613f4d6c19dcf0f64f715f2f762", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2a6a12d9d9e844cf980caf6931e5b9734997ccf2ef206b483f2abae400dd1ec1", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "db11a3f0f529a88d9fbf4f0f438107c0a60626c8f5cb6b6057ccd477cdd83e80", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "66e824e22bf07019c81525be60921953f3159bb83cf61af074365756d11391f3", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "7cbcca4964a10515becf1f7da6bf629902a7910f568f73a0d32e00a990ac1dd7", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "98ac3f5c7a4db629c89b01d514dc3804d305e1b345d935674e14a6c235ccdcd5", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "69f40db7e2a4ca46c4204bd93fcc614dad43e5607379d263040fd06c0647677f", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f41c467061b9504fd6e06f88fc66bbaaa2de7894fcc8e7d252344fed1e714b07", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "41c6a7d9a30d99a7807180c4d17811ffafcd9ac4e6ad7226dbc232629c848699", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "5ea252ad8704230de0b5b3cb7165f2a6f2d3c18e84c7519a247834e17af0e22c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d48ac161723b8968256f02af2d3ff939616e4c136778577cf4693419516fc1b7", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "c57a886f5dc2bca33ed58848281b98e0a3a12fe7de9bd80df2f460b55f2efcd3", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", @@ -18052,12 +18052,12 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "746d33948de4f122c4f88258ea7beeed102f142958ed3e8c46114c8a29400d17", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "746d33948de4f122c4f88258ea7beeed102f142958ed3e8c46114c8a29400d17", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "e66b60dc7ac9324aaa75874351b35a78c4a5f1d054901de4bb35d3dce15636bf", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "e66b60dc7ac9324aaa75874351b35a78c4a5f1d054901de4bb35d3dce15636bf", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "eb507e28d191247182201ee4cbb46f0276dc7d16fd6944a33305fba6d9c6090c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "eb507e28d191247182201ee4cbb46f0276dc7d16fd6944a33305fba6d9c6090c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "63ec95b0509f2d3ce535886d8d547badcdd1e374a8f9a49d29ee0e6aeae1af83", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "63ec95b0509f2d3ce535886d8d547badcdd1e374a8f9a49d29ee0e6aeae1af83", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "b33cde9063d2bc80dd9a29acb398394f70493bceacff71c57b1c3fc2a384d58a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "b33cde9063d2bc80dd9a29acb398394f70493bceacff71c57b1c3fc2a384d58a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "9e59beadd5d3c8f29b64072f613d41b72e0b54c78f3791ef570aef9b84367c76", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "9e59beadd5d3c8f29b64072f613d41b72e0b54c78f3791ef570aef9b84367c76", "T3T1_de_misc-test_cosi.py::test_cosi_different_key": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_misc-test_cosi.py::test_cosi_nonce": "0b610ba4d85d8555c1e94cbb21318d9c2787beea47b5dd4a8c8ec2906e237e9b", "T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", @@ -18111,9 +18111,9 @@ "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "75851fac6d447276c26aba0b1479570dcc687269e28eb047ba51e74699aabad5", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "807446633999368549dd8e3b9abfe48fafeea8bda549849f84827a6b908e3c31", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "abccee0b8a87f9a169bda2887f2b0c24de486ec401d6a04d7aaf31b499ca0265", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "e8a9d53322b88f98316300f6443a4b814a2aec9b14e4dcc80c6bf160f80f844b", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "b1f512df46bcce02b834b38d06ec7ef45a4aa5f90740d02f83853383200a1acf", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "157fb01b6f78d35732d5c2298953b78d56c754489402aa57ebf65a09bb25b2d1", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "ff174c055fb7ad3ba8718659d4138b4058e55a263c2f0ae5e3343b37cf6e19b7", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "6411c6f59a444790668016090b190bbf49c840369f8013e3d88601912b60003c", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "3ccf5eaf91efe5d30ddea9a58531b4087267888634405bbb35a8934c4172ffa7", "T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "6c9aa71b9c02166d8c398840efe42ace7c105b5334b04a5e56d1c85b8506f40e", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", @@ -18150,109 +18150,109 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "34657b2cef4deefc48f64aa8e8754c2d7557bb1b866e83a6a10368e9ddc83442", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "84c52c20a9aa0b76077ea925bda957b2fb4b97c94c6e4c1ea713ee2b6c099fea", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "01e9048f2339e501d9bea561cab8ad3ab49750414f4da707626693a0405f397c", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "360f886df14df5c13513aba6b3bd042b91f7f919f353961e60d3de666ec34315", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "2aea42ec769566f0ccdf810b16d3517393de24eb23352a3462f52e12fa7700a8", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f4ccad91f13c10d7159dfd0a50cac3d66e30f299d0cbfdaf7145396e87f47ca9", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "eab4d9c557b5d9771f54a7501882cd6988cc973f142478898cceef3aabfccee5", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9cec8f27a727b902618673a6e61dcf0d1ce62b8835b7d87e61434a4cf0e55402", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "5821bfef8a419067ad95d14e1a1a5f42972de8b6cb4634e65487c91c46a94cbf", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e4d88be7ec4dd90ef9166e257c4caf59105825b10d1d290e6c253328ca08e6c7", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f1f710cf8a5e8ad69461fb0dc271287bc8272bd745af3a4ef88d7a2e7e5ebcde", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "64cd3d26fed16bd9bea05c2e8aa4ddf61487284ad19b590085820c372f7c130c", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a3c15ed9015dabebadbe953b29f3aa50b747a2c7264ba351a2db57f7a77ac6b6", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "383de910429c0e28c45d94075996b675f18d8dc60120f06e10ad340584ad3efb", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "1b8f16f2de16210a2fc2de23fafcdf8c524c4cffff7c3b13b255613e03ebe33f", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0f1d070413eb3b7603213f986555023576d56888338549a62bff2b9267f70232", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f053269d155607207d0f8e199db9cc0b7dcd15be81d11bfebdf275edceeff329", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "f9c7a558d269d01314ed70bec11a88ebe800159a8af0d514196ef19b51684094", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e047d74b93de59ce8cb40cfc58805558ea4b8db309fc971dc32891113cadbad9", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "054533dddcd50549a9f3cb22ec72cf1e1b309b14b39b9a626ae7dea0481b9d22", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "6b5fb9fa01c7c541ff1c383a943956c8595437a28c98ae737bad544f45504aa1", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0cc0eb5dff5ed9ed954fe68ea298cd271b3a22338246b692782473bcc8f5b6ad", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f0e8167ed77fd7c6d1264434d5a9f289fa3be64e676baacb339ab3122b243364", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "16b3c5869c64c324b589fa751cc1af138b71db67a86cbe4f998b178eb85c12de", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "29e743c58cd1a92c9d85f8f861cbfd4cfd49d5ced8308b1a686646b2fd847f33", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8f8b6467d52b8d0d235280245795b62afb11f12ab772fd142d0d812f6c21a051", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "d9db3b3c748e14eacd3f372cfc0a61ec9f15306615f2209f7f9e139f45a1f3e2", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e22193019c045c2715702b13c5a8b21e68c5f782489893782862827cb1fb4c9a", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "47613c3a1e314852b1b0a33e6c000deef3b1a696587139a4b3c5341adefef755", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ed981cb2b8e04b51603ae53307e837c6dfbb04fa0ac393670144b2b38a195d18", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "68f0a739435bee76e5a9183239e59568150285a199986e59613e9abce523b0ac", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5378d721540fa43b5d5cb4079dd5ff5ab7bfaf4d174391187dc5a4b5d6471137", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "fc290789bc61cb339bb76dfb90e7fa69ed9527dbb5dd26d77e0da06c28f67633", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "44abd485039b55c039c9b09d7216b346065b907668cc5532fbce90d41bea88d0", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4704e85567a8bb47baa145d451a0d8d98323486b75cc4f06750e63bb1c8db54a", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "5e2eac37053b24047a97804a5c7f7739874247c7efad78d6075f0c8cc5d4371e", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "7f14f5ac5a83439f79dd559602c5cbbdd2efdde6b0b6b28303b698937cf509ca", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "b7c60c025ae526dc672297df2627a56243be8b98d70afa785c7340597d321840", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "4c59475be93601d97c56986753f6c451632706477db76e252cb50362b934dff7", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "55cf43b937550df004133ea63934ad871dfb6b450012e7f5f29cbc346b3633c8", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "a9a6a263fe326a57ea464c5aa23ac264f7e9ed742517648a544fa5ccc3e00ec2", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "0fc91f12ce60f41f5f3a6d5aa1bc9375808db1d6e99f3cd83bbbdc2882985e17", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "59b9263a4d9d255887b7705ec83eab95c73a7ffece1eb5adb821a5194939622e", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "e1153ab88cb2b2d773bc32cc00398f6894c899cb3b741ade3673e0cdf7d62873", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "359d031f8cfecf6e4d98667e27d2ed215d78911b66f38a9051210960df908cf5", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "29694e87cd2ef0d27af4e2c042b9cb2e83c33ae458434e838c6155e73a22c342", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "a626a8280d9ab80e68f8f45ec27631b7a6f6255b8edac7e4a478862fc85b4ffc", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "200ceaad480d28acb707eac3ef4268f88cd494b485e1f6a6e5e52914ced18ec4", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5f8ca7f8f7e2f54c7f6bd7807c9fe5d283cbec702e505fb8a9a7e67fed05635c", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "b020f0183b3e405689962040cf1d9629c07670c3186d476adae74a7fd03a7f83", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "ba7c087707dd79a90cd0c82a8d27de0c3790dd1279b6eebb9ea6a0badf13be50", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "95e933d07b748ccfa8aecc9fa5320e7a6a0d632729476174a6b0ce11e0059004", "T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b020f0183b3e405689962040cf1d9629c07670c3186d476adae74a7fd03a7f83", "T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "ba7c087707dd79a90cd0c82a8d27de0c3790dd1279b6eebb9ea6a0badf13be50", "T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "95e933d07b748ccfa8aecc9fa5320e7a6a0d632729476174a6b0ce11e0059004", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "9521f30dd9d32ecc270193cbf27b719a69eaafbfc12eb2a224041a76ee797cbb", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e5ed59b22100503c0f1ccde582103756e9e42c5b73f246a8ef604f87c6380a92", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "9e0644ad4a9ebdc7d30ee9e125144a503a405d60f329659d034a479f1bdbcb15", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "1e325012d2fa37a2e42d9697aed045dfd244c9b93b22841efc405f4b27b9af9a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "f76793c869cf0411611090ed0aa220ceaecbf47d68c4dcdf43cb278730a35b0e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "d4daf0e63b6ea4fd636b24080848d4d54366ecb3b0a7d9064f98f3b700cf0daa", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "7a6076573808c00de34fdbb692e1392536fea1a07d234d87932ead8807dd6e0d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "d89ae76e019250fcee240bf616fc2b1e2ad6e8b78b3f5dd145e430aec23cb640", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "d6d7688eeeeba34a36e1374b7f4f8c1dae3f36ccaab4d01c4841d396de47bcab", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "7f5e6d4f36b3f5f7f7ce18be44457f719643ce7fd9bba2b2b699450454666090", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "1a5117415e31b88557527942257257fd6a4f611dbc50dce503915147db567322", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "6745c65e155f3b78be0247b3b719bb9577bedac14fcdeaf3ebe756c469bc31e1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "310395fd7bf81acd3dab4f8b22d13b36919ddfb019d7f7f0907939111b80c23b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "45db5571d27b6c62032127e74f7d5e907004c6e624259dfbf8e7e31e76f7c253", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "3e6d8d7563895d64d3f00fefcc3d81e531b93d81067ebdf2b8683ecdcf7f363d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "92b9abc47718f249f72c453cbb387996b20133140f51ecec98560ebc2b980159", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "56441390bab48e3a361852a4db2b88d945446ae2b7c215f3daab3dc39f10a10f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "cc1b176174be3ba07a5386557210aed46fa0c3a71413fea6219fd583aa596f30", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "7254f073ef38a17415b8e8cc50c6e42580b16fc8ff7262beb2d21f9aa1bcee19", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "33c20de64f085d33b8a103148a6687aa16e0317c78f9d8ce3f3355fcce4ee47e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "abff2158dcc73f4286fe02ff5f7691910e4f71141c67db6a7a9360999069f67c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "abff2158dcc73f4286fe02ff5f7691910e4f71141c67db6a7a9360999069f67c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "6980282e3d14942bfddcd056ff166384fddcde1c238abbfb3d9d82454cc8be9a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "e63c00d470f82edc2598c144565b77c75cfc194b06600e414ad796e3d6889e3a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c7625501e7380f57e1d3fde9fc1e8a0b05faa72ee08c949bdd14cc7b2f441e9d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "cfe4c0e6f200a35a4a14cfa05fdfd940a550cde748998ed7f6d116659bb2b23e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "27d6f1fde80006f3182133ae6fb70966c11e3fe09fd2185597046368fb7ed57f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "ee30e4904354b663115c86c4643c4c1b4c37e85cb4193496f96ba713a29abd31", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "a1ef58e4ad4743970f7c767fb36fb2d9b2305d5124d2a538c22ceabcb371810a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "12b6ba51e8b7e616473dc418ef8e8225ece70884d2912a4f19c910e8d3f8ef49", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "65fa3cef4bf6ed046252c7be42348838502d7f6e57f7398e60b77a70c5c32cf6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "2c0acc32f56d5d71bf77ac55e0ce9f9ce39aa27042445f073321f34e08e87092", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "20ce7a3a2b649668bc7424c078f1923b95d0d6963767ca278380e9aa8783912a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "0580a990264e657418d1161063f6fa09145d701adc8ac6e05c2da7014fc35204", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "e05a0cddfd3eb90463babfba3182f2045a9e995001236e2f4fd8993750bc51f5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "6a6d81d703ef287c5f33c328de9e84d3f5d4cda22c431b5358eb6c0d35ad8b4b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "29a7a16bf5b541e08c4dc18e7dadbd17ad9b77d8d42566e0429e02a4732d20f5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "cef90f0bf016063417e10e2fad1f55e6afbb7f713bebea1558aaf63367ee4eb4", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "a0a2f739c9dd540e72c6d45040966181c4d7d5b59e4a88b01f8eccedf996b461", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f340ddd4cedc00c384d92d9748ae8fe2cbb426890bd53a2f3fab0f9fe09c0593", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "3630d2256dd1d918ad85c6acabef1698189b9b8212469305657bc8ad77cdb458", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "1b4123006b4c20734527f534b13af9f14ba4a3156cdac3c04e37ee69abcd1f99", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "70d68114846ecc7141b610891f0c1d260541f83d16ff19c80354d728a2416024", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "b91c085008f0a762be7909887e64a7b8a175d0ff7ebfb84250c66b31b8d8233c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "f6bcee11fb64189ff1ca289ce573439b4b8ca4710c1b05534555d106340be4d8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "2ebd6693c5934fc1528091a17818ea54d8472674210e9ead86749cf8cf6c4992", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "4147b4f99d9af6e844727f156a8151d72d9f497fd596a3c7b3bb79c191833e8b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "e1d21c93476edb1dbf4f180e234749e792af2cbe175b0bf0a718a7d8cd5c17b9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "2354fe353a180d0a5a423e37af3243a8ad48b75ae3004e29974d611aef945dca", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "033e0c7cd22e643184bf0504e606dc2f66a9793789ab1f7fcd16fb2088385f60", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "4f322de25362882e1a899cdc6146bc66e063d6788603da908542180a3adc35fe", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "4173934e4f567d8295ba3861fc60de0b62110118f3294cc5c6b70da6be762499", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "e8fa814b61dbc5142bdb85a8a6d7b48d4ee1161dd2a3915aea4b2b84f7a542f0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "44d968f1f91bff51e04c487c3d09b54648aeda13654b45ecb869b3d6da9d9c55", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "1ce8ff82dff953fd444bea050b9690c850eca045864ed8111efd0477fa789e92", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "4b5f098cc4bd131af93f52f23e16a4c5edd84d8419d319d7c00ec8ff0d1f4f2d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "494a63a9e858040b5b9c4ab947e6a35705342a6adbc830016e7d878e826b3e81", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "562e81d434cc20366f6a92bf000017b78d658ddd8db697c9ef84edeef1881604", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "3a05bd811aef3f7740c3220b07271fc6e7c7e309498cfe114927cb412c504c3a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "c7625501e7380f57e1d3fde9fc1e8a0b05faa72ee08c949bdd14cc7b2f441e9d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "a011ee06aa64936bbe2714a5c634b57e0a9956e7d283e4441b05d95b34019bbe", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "22360197ff826ec9fd531e026ca38418a49e0d435835e5854753a27db4236693", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0ea36e3e20996e44d195302f5fca26de384ea5ae3641debcce34af6d010a1099", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "5bfdb9609a736c64862e7460d81d0ae1ac792abae916ae3bf05b81b841602d82", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "4d1b1290f2bb064eefc4308fd8537605cecc7ecc0d882ba4daa03e9f6def7092", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "3dbdfa9fea1863d2cb0c6f64954c46cbd994c1ff303e7510ef1783af01d6f09f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "77e56921cdb8feb923b3c4c87696313cc8ed4cf803a1fe05093b8453418ff7bd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c1c1630d23f6da0dfd07003eeff2aadb354c8553e98b20f8831068f9edefdc1c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "0d3bad2be194066bbb3ea6ba329caa251178ad3f9afda8961cec8c952aa84bdc", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "6fb073200669fd6413066ffc3bf51f92e90834438e63c947a029af64ec95a404", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "958ac4c1418f8fbd6703edfbe22fe2b46746be9ba884d21ea7e731ef64570333", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "13e5eeac26702f56e1bdb90cc2fba310c50b2d678f10e4b6e2e4ad9081e03c6a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "2fa77d8ec31a4c54bb01f9a34a3005d5f66c30fbe41819233e195f6ca19b5982", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "678754f30ccb5689002c36ffe06045151e64ad44eebbc02cb4e8157c4d38e6d0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "edcb75e170f83e162894c757106a076481369a257f0f964b513e6c2739384d65", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "671ce02e4014dee6ece76bf0f4490c03c189ad1111c80b407c96535b29050ee0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "c2ab6b1bf5123bb2527edfe87ea4a4aa502c720b81d43281a2eb26ce1f1366b8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "03f7a521cef415d02d8ba314b7b2a41bfb0e41fc2da82629fcaff2239fd54a3d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "6aa13edb37442315c8216b003c4a191387e7983ad93f096513decae73ede8a66", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "622fc3b4bb27783c33a2836302ed597e0ba183a0abaf1240709818aeebd4ec30", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "beab8e2c099dfd891ff978ff8eb0745d18f42ccd30a320525b4c4916bc80c6f1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "54460916a64db4754a5929296fa81357a9b1110c8c2f5a018438677f7ca8eb7d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4c8fd8acd0364f875579a82415c38d59be9597d7ee3ccfe0acc07f68801428d0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "c8acda0f1a77304070846855a16892164922bce1e3bc1d927d494c99dd1903a0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "53821bc4e12b145c6a005e13791e9f541776a7e4e4d62a8c2a86922fa1f39910", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "3704d7a6236e4b896ab4e70d247f60f0e15f7aceecc5f3b090c3edcd87a4643d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "dfefb38443ca433976033804c13f71dcbabafed0d04aea6707976e574065363e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "9a51d0d6f2d220ffe3f4c53c08a4e2d6353fada027f747c4fc9ea46773eba97d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "da8049b9f54a6be3da7fe806543d3c453bf4964dcd91f525e3e35f0f7e27d442", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "874cef42cb8a5da8705c8dc395da10fece497efbcb1636c22e32110d975cfa80", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "874cef42cb8a5da8705c8dc395da10fece497efbcb1636c22e32110d975cfa80", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "27abbdf08c2ee691ad8ef03569049488f47eb527efc4a4aaa22ad705b523fddb", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "23dd532461b9e57eaf0f9505b37b77482b6556bbceec23f8d384d634f6317155", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "01063a75983ecfb58449307f81fae38ee725af15ef3d65e04c893ea6288a562d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "9ba7d9bea3937e14a9537000808e875e5be206f55eb05dd9181a6855935829ea", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "896a558f3e4acdd8dcf925c32c934d34113c631ab6578bad55e4e26dd3eed330", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "ed87ace34b3c70c0ff039e3f8d7d9a9b88e6b8adb048024fdd4bf23ee70f0092", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "0d4b82f0ea2aae06888acd1c2f8f1dead3a7500bfe84c32449df928e479ecda4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "145bc11c18dde7b3d56eb04d414710f66f284e335082119b252909d309073a99", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "cf2f06b1d78d6227339f5312eb1dfd5f3cac0ed140500e000c710ea1adfd92c4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "c63d8a84b9b57e938940decd2e594b1e0817dd4bde9e7a716e53498b7a305c17", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "cfe02d61f27832fef4eb39ea3f7f8749f2acf58303184f358ec90f85099bf742", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "c17f9183d3e2bbe6f4bb8e8f2251950b90ecc9024485bdba0da5fe4587fa87de", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "56436ba925510ac64cc3286c8a7c95343ac5706a4feac05a0ed995e4b1b351ff", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "410c31b4c28b316dfdbc8d8540baafb711b8b73f62ed66bd67e329d4df66853f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "fba41e3ba7e310a70051126731ae2830e9ee1cbbe94cd452db6a577d1eb6cb2a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "02b5b4a8cd67c95d2d23e01bd79e516df818efab4d1229b106b0801f8327a1b2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "7ce7e404ba8fb14358e5e5134f994a05bfed39a6520084289b7184844e7d14cc", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "b4fd4a0a7ad9198577b53058de4c0de42ae9de80f8a288e5e09eefe3e198f3db", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "82cc1deaebe0396a386948e62f9dc7d32253a92647f04bbede72b84bfa7fd00c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "21b4ebe6cb822e17b4203ec04b31d746f131129c133344da5ee8c6cbe6c26f69", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "a2ffc831908edeb4be2b507a918364f6b06f9f18a8aecf5946672f28a284f45a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "ebc4a9114e3174ed8079e3966bf7b8b90d0e0985d1ab7c6d6fd41da0ff6b4cc6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "2b8e3a1634913ee9adbd6582fb2bcec58a8cc9b58c16d93a1736d8166f46d70e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "9eba775847d4c89ae30e4a7470e6afde2d07395383e49912a6cb8ef24786432c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "e52999b7cb4a2a02ca124e8fbc77ea78c8f6a0950d71160adc5ff3c56a7a3611", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9b493ed9be608f3ade8dc9e8df354864f5a8bb2a780b940d29f264150e597659", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "4a95bb0bfdf91144aa9c1348f46aa42ea042f888998035cbaa90eafbb7e7d930", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "2f519b45c6847257d7dc45a815d289adcdaf6697a4daad2ef84c3b9eee655192", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "efc68edd54597954e92a5a8aa62b761af40e6cb591e9fa8c2dbaeb57d39ce9c7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "215d629c3b3235355fc5bb844b60902f6749c5e51031f491cddd061e34d42644", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "891667197fed59ec69349d8c3ebacac44623ddc951f71901f6c94e7cf49927c6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "df7b37d7ede4d9e6e8e59bd23e9ea25ebee299a1764c556f36c5b4202e0967c1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "e16064600d36ce09efc7b8be4ec25de409854d6d86549a615ca07048b1e8607d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "e7953fcf0905f991a9967376f97bd2b944e4184e67ebc17d49fa947a28dfde9c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "da5aab4eb7d2be3f54bb3d8e80434e715425072b0643b1fdad41ead273df2e1e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "3088a43265514b6bee5530117df699b92813de16b27a1ca8dca1a71f9967f371", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "749559f0abc052f59eb5601e00518dad439f66926b6dab09614200b2accef83a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "01063a75983ecfb58449307f81fae38ee725af15ef3d65e04c893ea6288a562d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "87c756b13f3da07a57775afc55337f70a258ba1fd1149863e398f10ea6f8e8be", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "310901eebd4765cfc0f2a07ceab748b5d119b6edf49a6f435c9a832ec0e2cf77", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "e2d8d9882fe9c3d56272624172538b13c748555d5e87195d462b2b1444329956", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "532d6159b17b3da0370cbdc992fead11e1e4b20a1c58c6c955a579344cd32919", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "07ac341f51b4c083d1255d30a83e0aa27bc669e00b904c8a7b711120f56465ea", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "95d67c0367d5019f808a22cf31d1ad8e5cccab56271b14e27b6ff4ced6534cba", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a3613a3349802546b86e78b7bd88f5f7e89da354cfc5c00b5ac2309dee1ea9c4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "3d661a1a2beebe14301c7872ef1b7b91d78412c70a870b1610dbc6d7721e0900", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "0ed84a3d643dcbaa855d25173206e3f1224da634805742a36eb3923aebcdcca6", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "11227c6167ed529bf76cbf856ab789457e67769bcea10514c2e12935ba68baee", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "63338cb4eeae2a080098189f678cbf4880d48f9efc16e9ae21b60e0e0ffdbc23", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "b82e3096a7c44d415132ff97bccf3a87ece7bbda09bed3d46479f86dc49c57c8", @@ -18263,16 +18263,16 @@ "T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0d481310bf77a496af16e6ad44583f35fe4c81ee88dc4940b4cf00330c24cdf5", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "93e8311c53384e4b196c3abd53e37d02ebccbc0979ea5f19e0c64407be6a4835", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "142d64c9a38d3194d48c9c7d2229acb6b28db31093d683f6e6e3a42163e1a8dd", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5d4e2f626749ba48940c3abc534bf860182905d7c73da932f8b0a2a5e1aa190b", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "a531f9da85e200bd254555290038c6b73e75c35acac284a8173158035b423090", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "f605f3ad3c76fbdf90da503b4b3726f173f848328c50c6bb1ad21239c1b8c388", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "c2dbf963bf9d9f68f8b7b819edb64aabecb8750fe4b29c83eca9cb27cae5a05f", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "e8ff6dc5e2b0c8dd3fa66b7d84bd0e3c55d289b66477233e8233a1dd514907d1", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a4cbb02816f73d2b5c3dabeb80f7a041d5bb333c41b3f4938c494b8f1167b23a", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "470d9500cf103e22043374a95c6078b1c216ccbc6e9e345d889c85ef037c565e", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "c7a2f1bbb76361c89909e8a480434eb7185dd5d65cb2c80c5749eeddb1275cb4", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "0200df7e2cfac2e1b05b357d764bf0b61a8201ba3cf87d6fe9e2d0e0f24be899", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "d48b7489aee1cb7e71f517233dfe031bc8e88e954c404cae2eb7b3df911e224f", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "91d3cb06cfb75a16715f6e5c55c4432743a8ec16c3c14e0c3409487afeb69d89", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "23fa4c73efbcc039da1d7b2e756ba64d1bd9daf21466211cce533ba6c560bf45", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "dbe055ff407a96967c85d5f47460631678dec082ca2a4a9e3677bdc56d08d483", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "98fe560f52c10cff84b32e1d72fb2b95e5d9292fe6f3adf5420ac2f368377b71", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "74d7c9795dd5360ad26ad3b2339f16509e2e356af3fa60c5476ae765f4a00886", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "aae6bc0467f75c2ffa05475c14867221d15bb1e8236a80216de425b3ab48c86e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "ecbe1580cbf6cb3f8de535d959cd409e9fe332e51ddf828f47cf3d38c3f85d86", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "1144a91615cb8e18cb6e7027877487181a59473a17b48d3c2e7f105fbf54e867", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "4e1ee91d714b6aa10c05576f3c47647f883eb3c32ac220b01cc547bb64976e53", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "9b670e1a96e7abf560d2761546416eda7403f3f0af2d80dfa271768e66ab08e4", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "37ee177c0b6f36e5669e366d3fe6775f9012272aed5e89dc3ed68a3886f4ad2c", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "5acd6426fab422b7ca501facf2d2c1500dfe998362a0a51972966bea800beb47", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "0ba4b140a9e3b0ad70730203159627d63a83e4c35002ed5fe04034d35599721e", @@ -18368,14 +18368,14 @@ "T3T1_de_test_msg_applysettings.py::test_experimental_features": "5c2e235e5b2f43e10d07727c0edf5e51830802fde61b5272bd69896af5816d32", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "3e989d2b0266aeb6d72c35964bf0723491c5fd57cffea8b187f6aa72368b9b1f", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "beecdc5762a99ccaa40ea798834613a8bf695fff1c6b63edf676efc85623e17a", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "836358d6c4d110b01f45ce73908f33b7ed22128499f87fa05b03a8be6e66ec86", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6f8b37f7f22f2467ac6b7c4d46d683667eca2878cbe9e87cd59812f8798c1e46", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d43c820d5958748aed4eff5c0f15cac1c6dba5892490962d7a9a781eb960860a", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8ca6cb9dae60a95f2e485782b1b893e2428d91c4bca3b4909030861a37412dbc", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "ae53a7b7d35bc574d9d40ccc04d024dd232fbe2cc954923a511c0fe70222c7ce", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ec641700f8bdc9b182c937a16894f9364b2abe9d750a874f9282746a58039b4a", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "5c96df77dba2b5a6423a9af7bc6d24595e7f9d387a0b550ba13982a6c8bc9283", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "ce0d51cb1165fe27e874224c8af2e634632f2a19336a89345676bf5710a4eeb1", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e363c453cc928ec11d847eadb4a0c777d2ea66f08593d7c5f9241b702ddd1c21", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "309ab2f33f5de3334b78b436b3a08717bc4cc6efecbb0c5aec56452d29be12cb", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2e96c2febce96779c6cea39269323cb1b35da3a85273cd93c28959e6305122e4", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5273be1e0d177bb5b5018f729bdaaf8aea14c973b0446bc46f7e0396d49015cf", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6806b6c1fbf773970a3a3b14df84332a3d00ff0252c092707c9ece8eebf5537b", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "add38bd2ca7f1f3536542f42b1ff25639d741d5207e70e654699901e0ca530bc", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "9b42a9f44c3b1398dbbf9da1c70c24f5b4ab7e70c44860a9e845df752b006ecd", "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "37bda2df4490d81a301217f1b1b57856e4fdecf0e89962708cd68f302c749545", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "5e2d615f24eeeecf0c50e07377015cd16be02bbbca6224b2ffbace6de128d3de", "T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", @@ -18386,7 +18386,7 @@ "T3T1_de_test_msg_changepin_t2.py::test_change_failed": "86ff80f261522b9d9ce5d6d56b9fa05f2d3c083d4fcce8e1dd53dd2499f68267", "T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "298f105350617b5d689e8d571e41b970dcd00bf43a06c6a62584e6835a5b2dfc", "T3T1_de_test_msg_changepin_t2.py::test_change_pin": "4844f7d8dd9e3bf4f0ec4a76508057072aa7c50eae45a7366b20ead4516fa458", -"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "38e82e9e9a8ecae76c951d946af992d9b0f7e880441838b47cb8f190e5c14c87", +"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "0f6c6e5b75b4359c09427cc000eb61054a99acd17109c07e5bd251d5f69e269e", "T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "8f496f504708267d40b210cc636264525d57238f4c7df2a55e771dfb506e9b8d", "T3T1_de_test_msg_changepin_t2.py::test_set_failed": "c1b0306fc99e0b0d605974e2c80fe1d0f2609cf9cfd33848d6c43ef705da418f", "T3T1_de_test_msg_changepin_t2.py::test_set_pin": "e09083a0c0c3e51ac20cda6ce4f0c0ad7631cc5e88b1e66254ac450454d53ce9", @@ -18399,7 +18399,7 @@ "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "e24498a20b58f79e9e7c67b7cdbdf13229fa5e0c5a37a105cf9bef9662647bda", "T3T1_de_test_msg_sd_protect.py::test_refresh": "733a100b6551c12390d73f71ec39fbd1273a7e2ab04f3eb7ba439560556cf63f", "T3T1_de_test_msg_sd_protect.py::test_wipe": "f7f0bc822a4fc140ce98499583d50f3a540f2cb335479c3daaa5d90f70d70af2", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "4a4fb12432df436ce0cec76c6852e3d40a683060bd0462ce57ee484bef55af12", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "75eea91b672051003a77456efe8f31e2ef2bd9eb08cd4a07bafe3c3dcd1dc42d", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "bb8041ac898a8c976612f15f0d3692d80f94158b7b51ab259913a57162f7ee04", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "64789f174ff2cb0f408eb68f316761b74de38058fc88c55c45fa6a87357e8533", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "64789f174ff2cb0f408eb68f316761b74de38058fc88c55c45fa6a87357e8533", @@ -18421,7 +18421,7 @@ "T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "0bc2987a677716d4e1921d889fe7b6f7c258f5c12c130127c13b1e55bb0957b2", "T3T1_de_test_protection_levels.py::test_ping": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", "T3T1_de_test_protection_levels.py::test_sign_message": "94f46f3384afd80187ee4f8ebda5116d7c210644624dce182fde7a5223066fc3", -"T3T1_de_test_protection_levels.py::test_signtx": "ca814cc12277d7575c14b6262f38badb713b7ab3ee09b76a570d315aed90b27e", +"T3T1_de_test_protection_levels.py::test_signtx": "c928cde15ce564358f34ff19dca229ce44fa4b5cd849bfab03f724cffadfc70e", "T3T1_de_test_protection_levels.py::test_unlocked": "f64e842f2decf30ea37978033b2049f8f98e10bcd4f14c224b3bb2fb24de5414", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "3b9f4021770e20edf2e53ab082e0b1258fee109fe928326f0c687d5fda9253b6", "T3T1_de_test_protection_levels.py::test_wipe_device": "e2d96273b3a26d7f2143a471fe8247fdce638c24717ce4fa9ed104ccb076f5cf", @@ -18449,38 +18449,38 @@ "T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "08c43f43d811acdb6ac86e29277cc8f2cb3a485ccfd5fbc6e54b092ec4fe998b", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "1b2e66c340c1560791d4065e73c02b3971869579d3d883c7557a2b7acedd6ce2", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "ac024409d641a7a075c155f8bcf7f39215e21e01e4abac29eba9ca18f45e39a3", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "ddfe3ab39556056ff1f5073cd1d1d7a969f232b04dd5cb1975f126690b83c6b8", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "84e4f55befd1a8e999408d3abc852d59a5d5cb5204dc1987d86311b08377f6a1", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "93bd611b320b425c7995fc99a160ff976955ad6be4bfce971cd23323ac51b27d", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "061ac701a4692a8506e05d13d32a1e029a5185abd7990994304a076bd8e46fda", "T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ad904846c709d1accf0e8e5a20ee33cfa9fa86d87a87bfb4d735133e04cd9899", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "c617ab4739bbf924c710020a67386519077e7e349a18728af2dd51c01d666b24", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "0d16cd2a9688c3352454b83674d5adb53d4b07e2db4c12133071d35acae5f338", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "b16ba76895fc5e465f3db0f7d45569acf9417c5174e4096ca3f20372cceb8d53", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "67699da2088438dd27c4827b37bc7b95a060c76490996f42e47951b28b58c34a", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "aeffd3f1c8734b75c9c2bb0ce442ea800ee1ad1f898119200f9a095e878e6420", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d288cd606dd82993b654ca71f8a2fb07f30112d6d543e8dd1e12ef14daea6e76", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "c9c6ca6f85978648674d2a6fb9b5643d85d851519e5d5985a8686eac228d43a5", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "475875ba61c0669a04b2f08d87e1b1b38aa81e4b49937d663a10b8ceac718408", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "10662d0e3cc1aa0fd329cb6f85a9aabf131eec2cc6fa2f1a013fbc3fbada3994", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "b12b80657a91e80cbbac768677fd22788fff88a68ebeae4bfb88138918347ff6", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "408acb8501b4ded97825f852e4382dfbc0a8e83b67de174d324007c8ecf290f7", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "38b3a921fee39b81ce3de9138817f645b0030620edec7eeef23cff40b3053b90", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "41603484f96a675fb22261b5001f164eceec0af20732487413595aac0a802a87", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "0fe68cbfb76cd25a69bb8d40fac4fd52a03873850cc5c34b0bc8b477b5bf3eab", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "13e101844fe6fe4c6c5cd2972fedac809d48c90b039a50be92ab13d4c75e6a87", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "de15bd6583b3e2d81d7d57d4b308a74218f2acd53839d5ae4118f1c129c54638", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "ac572e43f748b5cb94a9da70554861ae34713d43e0c9f5d3ae6f107645f31f36", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "cbcdf101824ff325df996002f06dda3fb9ab87c3906dbde06105cfde0b140936", "T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "8520e5e4b52dc2ce39c975c393e5f982351c5d4da035f168b69dc9a5c36948e7", "T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "172cddb079c4c93bf3ddc53b56a8cfd9a03cbdad869764c00be653a3cddc2d46", -"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "1e145d7dcff7dfb5d4171d3b2006c0202e5aa3c9b33b22596d8b4ab61f7051be", -"T3T1_de_zcash-test_sign_tx.py::test_one_two": "cc4571566da0a78d0b9d003ffc4dc3d939a5b75acbaeac35d041fc52ac2ea176", +"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "e47e2ab79557c91a6f436135e3b690499f061d548c66679ca1bba6d0e300251a", +"T3T1_de_zcash-test_sign_tx.py::test_one_two": "13f7b31acaa74b5ee2f879126102273a6e1ed28ac41a9fb4a1c84dc90b550035", "T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "061f558d6cebb44c1d1179e6a0e99230073283e41f7a97a23335aa3ac5bed25e", -"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "6c28320c6579949155e41cc119e3af715b69452ea72ae79b67bfbcd973ce2d4a", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "0c9383d34c76ce69a346a3f73d7e7b12df5c3aa91d70e257c443f4a0ef07d46a", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "a7a4dea125e8ed70d2591f5f33ffbae3cd7f163eaf98acb00dafe33d15ab13c6", -"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "e63d51c20da8d6ef75ea1ca9ee47af773a56a0f579fed2163e2dfc2b395c6f94", +"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "abb0d35b6cfddf26a3049398f8f9cd23a86c05313b10c35a1d541fd1fe26af1b", +"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "13fdd67e2484daab2897b8e0bbc864591ab89c0ae2ee32312eb23da8a43dccde", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "997905317fc74e8b231acfa81e73be5c2bd859766d78a03168b522669cd39347", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "e2a1f9f8bf26894ef78acaf674bb40975ee736986b193c0a95658c387b95c82e", +"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "c68202a220f1f3ded996a759796ffeb2a90cc696026001c9acba5f69a5a73560", "T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "4ae127d6eb537a0a9b238e5fdc945ecb29b4b4376fbca96c1cd0d770e6e34b04", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "58c4e45dedd03aed1dcd8cce492dd6d149cea75b74c0ed44acc7c011a268459a", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "27ab4b2cc9908fcdf98da01e18b235aac86124d4b1db17ca8cfeb64e6c3cf0f5", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "c60afcdf51bae7556f377e169b1706bc05bea39129d84fe2bd0e95d9e258e59c", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "390cc10982a597d3ff852e7d6793e5f1f01a6597855bc680452dcab6be13b04d", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "b06aabe1e61f0935af132fc0b38fcef9cdf0d7927e4dbd001dd3c650eb9afe0e", "T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "234738266b5d33cca25f07f73382c10c806ce40934f06c5d45f3b568dac4263a", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a42f7716fc4ebcf23704734dca63fb6eb925f38d993d9b902286f75738eca349", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "13fb49714ea5917f812d1d4cbf823370353707ec49ae4b54903ffff5ba074ebe", @@ -18495,17 +18495,17 @@ "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "8194452a1606d0ddbacdfa346771e8e32e5677ee72c88d8f3888470731e401f4", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "8194452a1606d0ddbacdfa346771e8e32e5677ee72c88d8f3888470731e401f4", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a352e048890ba8d0c06eb8772a297d8e2dc3270f57662ca3e8cd55fae6a30c42", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "04d16ebdcf8b3b9630799fdb5564a643a01e7f3dbc01eb62d61169f64035a0f9", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f9d85612cb5ab7390417851dd3f7aca21f312ae672b4fe59054d5a866e1034ce", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "89cfa83d0edf88290876fbf733f45f048a225947510e815e8b89c90453475990", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a5d11588a89f2a286a4abbb840e06ea71beccbb08c8ea940e6893e4f58f9aac7", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "53a2fb47b95e1534dac980bf05ec3dbd2c1833b29f0411d301ac8d100ac89dae", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "53a2fb47b95e1534dac980bf05ec3dbd2c1833b29f0411d301ac8d100ac89dae", -"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "fbb7815c7b07532a769cac941abede81b4b972b184cd788799cf0e8e49ebdfd1", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "fbb7815c7b07532a769cac941abede81b4b972b184cd788799cf0e8e49ebdfd1", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "4ee1ecf68b7a11a857a41b73a9e04d07d1260faecd16b83b381013633653df79", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "cc86c4690c277f136b62876c416ddc872d8faf78a1162bdee1d5f2a5e895142a", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f66b23e805913e7b4f06c48ff89a20f84638fb131832c3ba0cc4a08cff419270", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "21d310c66a558b293bdec95b9f33925f7d77701608ac3448c5b521b3defff152", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "7f02e27fee1c9643d3b82f823aa22fec6aec9550e66dc4a94681d63e3f41ce86", +"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "d5ad22658424b8236f0289126ba2f16ebd1e843712663df936f66f1f0a182419", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "d5ad22658424b8236f0289126ba2f16ebd1e843712663df936f66f1f0a182419", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "24ff076ef73c0dfa920ac3307169fa26ce6dce315a52728092adc352af9acbb2", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b2299cdab701ca5d810c486a1679f7a4d5ca712482075bbafc24f57164799d2b", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "85e85b759d828d556d1369ca07d15a03a75667c5abd550d818b16995b27fe3b5", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "364636c0297d478486ecf2a7f7dde4b7ae85628c05eb882835b78da73b8f791c", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "9a2f753465f778ac4fadecdd3819133c17ceaf3354610eb1f32e3af320824c81", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5e4e8d99c1705b5777826a96860a4d99fc80c97e49494a6b5c28795a114ec50e", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "1ceb19ade1cfef07b497c9f76a4a167410b187fbae7191ac1f5641b3df41234e", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "684e4befc58a9f3792b0bf9155674f5f308396474058c23f2feb5c458a02636f", @@ -18542,8 +18542,8 @@ "T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "db76628ad7d6e2f98c952467f24223c0a3e89ea70ad167b76eb62837a02b385c", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "69a73a79e4800e878bd400ae8c9fefc33031c9b321b3098235c1d5404a8481d2", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "f9c9e3af6a3f16c96542de861c947831ab27e818aaa76a1906fe44023798842e", -"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "7090c0e143dcd7a7f4efe696889c18851fa8d5341687cfc8b562850f5ec7fa6d", -"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "890b91eb76127a6c933cc756bf0a306c60cf8c20d9694246060a779d514af9da", +"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "e47d867d849b1189827c31769e1f6eb2f49cf5ecc5a5b23c96b67f8dd6375b47", +"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "444add25bdba92e4bd25ad76f624082aa362479516f9f11765684518d542d50e", "T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_getaddress.py::test_bch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", @@ -18602,10 +18602,10 @@ "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "92856a5d4f582bb9e7599f7fee81069959a31f53683f59d814f4d56c5e6ac2df", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "434767935f312c127db4fc7beb9fb5f389da6788d50bd663d958c4ad2a2ca653", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "54b1aff5227a5d7e8b58ff8cb132a4cc4fcaf8282a5eadbf19cab13d893484a9", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "9c4a71909f330b898bac1e084c14d945ef656c24aad735ff014e9c805136484c", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a9f1661e4a805d71433b3792d22157c03814c424e3d883a4edc9f0f456d19d23", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "0d48d2e986d2e676f2ee0ea2c8b98c083b98bfcb62a53d961601c3014fd8925b", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "28becab7100d141758ea2638fea39efd5a7f348dc83738ce2befc82c68b0f18a", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "dd4034fd99d4c3e6cad0f0783afc1bb0be19cd86536120316693101c544aa9b3", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8651e2ba33eb62fad312e18d1bf9fef6331a8b0405b859a6815ae45e6473b916", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "79fbb96f3aab9e2dfe16a56c24c99cdee4b56fb3363469614788269039b6c476", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "9d7de537cc6a425e66a5dc041f9cf8370838da47606ef0105a4457c42ff79aa1", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "894f819df7b41955b0a481ab6ad8c28812b8e869be9da7cf648ac3655837eee0", @@ -18614,14 +18614,14 @@ "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "07299509721b2f25a7f5521fdd8735cc97689859556f0b73d058970694d9a226", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "5541c8920737ae060c7b8bb2f9ddd5ccd1af752177c708f001dc52554773949c", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "9b597dd4c396d27f02acb3696eba37cbb682308555574d2205847df12b35d3c8", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "84dfe93c65000df88302736bcdfc53761b7c180fe1925dcf56166e86034a17ab", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "64e6af2ba2888d738ca9f6367804487aad6426260ca2d5ab2482d0bc5a794a37", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "71563e9543bff63b25f330b17556c15b369a41cf2a4e46d826ebaaded4306166", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ad2bf3af515f61cd5dc565d9dadb03e5829f5c64912877829ed68b337ec9a641", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "da7ecbb8d4944cdd92f8fbf8ff2f1b6119baa73a739187ca32a7b7d051752b9b", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0c853d4e8055cad9561c83f9a32c2b5794e303a53a1f1c7c7202b9a33bcc7b53", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a7b0642d3e2f6b4c27f7cc0692e12a51a71dfc398824850614ee48c0c79f640f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "98371957e209f19ab5306a8bbf97d61757f246ae7cbbf34301603350b71927c5", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "6c5c2e629e097a7913f58334a345044549d5792bae589855510df259cb4e51d6", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "707af8d4d8492c082d4a26793fde8d3156a75b30be24863252c0ab76318714b7", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f51b657afe026f73cbbf5b552ce6953136334754b571ceb49a45a8da48621efe", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "54c2f3b7e8b5de23e74d5d2ae3caf7f764177f654de01e377021180be3ca2403", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "2187eb44a9a6326ebd2dce17721b9fb3da3cecbe0b20b870b956c8b4785383f3", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "73fb8e3ba524d3fbbceab68fd1ff878b69fc306d1fb1cc9bf99c651ae11f1ae4", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "92b6bba191f7230f32bb2a94e17b5c25adc632aac592e126075a5e2663b507d7", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "1e43c9c7349dfed358f1b8de5d42f205b979a3163313e2900dc368b03c472212", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b4ee7b4c8f6c5e8090a22be2befb8fbf5c0e7dc9c12820a75ffb503b75220036", @@ -18671,28 +18671,28 @@ "T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_grs.py::test_legacy": "bcb4fd5fd0cf40fd2039cfcc20700a2748a5d6517a57a9066a2cf5d9167add0f", -"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "9f3892fb1ad9bb829cc8d9e9b0d0c64822c7b4dd398e097d261d8a4abc778f7b", -"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "aee3fa1c89df7e2b0ee4473cd50f69982dd0908645e37c187e644a1b27a3f74d", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "65e0f30333e91cbb662b52be24ee7785a6fb0cc44445afa07311b3148b5e3379", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "90c624e1cf1dd8e04b111651f0b3c4c2a28bb0b75270ae159b4427e201da41ae", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "6d03023767a1b83f88198d879ec4db711c56cd0d3eb972d8083055ac99e00ce0", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "192a468598740979bb69c1a2859d183235b53131457f937752955196a07f49e3", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "f80eca508797b95b239b955b11ba14381f9ed653e4ec52da5df08e5db0c70c40", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "d9a3ee6ab060a816845b048f16dc86ecd6834e5d2cb79b0741ff85de6097dd57", -"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "a060ee8a2096fa753e0f21b1452492fd116c8c51d637d8d460f58c4824b42e2c", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "366307f932fd99c942473cef5fcd4e1467ebdb78f467feddd23346809d30ec51", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "506a5185b64f48f68bc3f3b88b76ac0fc20d20082823537088638d3c036d9082", -"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "d37ec2c9a918a731cfde12a097836cb2d68f8ad7ff9831cd918ba727aa9ca6af", +"T3T1_en_bitcoin-test_grs.py::test_legacy": "d184bef22ca5a57ffaf4b3702b85d1b7f09d051cffabaa990bb54f1dd8a18b75", +"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "35d3d75c1bbf4465f4f5d571c8c95f4afe335084267b60da66a4877fac911bf3", +"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "b98c8bd72a23212f973b752589878e219c1079bfa26f95a8b49b8e95de0545ce", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "e9e25360658bd91f8ae8e46de781dda2463ca0e30f0249ab631da271ddb53182", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "3f367316bdc1e3e57b44f81a5608793380452a15428781043e10df8d6bda6cff", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "165cd3f6aa8d582543f4988c9e8b60faf7d157bff2669d852841f3c61ef081f6", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "292b4bc807553ffbf54276a3a3bf7280373ba5f724b8b84c576dc55b75bea95c", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8cf6f9717af2cf94efa6704f2d9fcda33aa6a86475fdc7d1bc12e8e33e4eee4e", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "99f5c0fe3c70da81021918062ce653103bae0b12f8cd686c4065b94aa13693fa", +"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "4fe5d774a4dcb81f463a5ff50ed49cfc73bc8760b090159b01a4ba0897b7397d", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "1f0dcd409c2a93739e49508d77c8eb9a66aff26b3213cde03ca49c8fd104590d", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "03f1a715c2bf7e6e69af6bc810315862bb636ecae1e7822b5b34498389f527b0", +"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "740e5f9291ed4fbcbd4d2c35d3f240c79c8059b087ac76190934938924632855", "T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "6a34108d9379309f9af81041414cfa25a882efce902f93a555997cfc1e3de697", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "a8b7bd2e9b877492e1accd02072efc56758dfa8e29944225cd970a6b2f7b6e5a", -"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "97dbc390439a1798d1139b8c64336e1609484026ac7ed8c83e501f253a0b6239", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "03d2e909f67b1842c2ee425eae3e25070551ee334a4b48a7a8159fc08bc3c6c6", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "5945ebdd34cfb7c1dfa221e587d30f656a1a94a06ad93ab293650f3bc65d525d", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "24cf2d5aea9d3a934ffa78450e2066fcf0d24a79cd2c8f47962dc8b926ba246a", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "69e7dcd4ff82a5ab7c266b5f7a01c5eee9d1051283ed017a8eb974b509da297c", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "850a9f92b7c4ad05f03925acd97ea64922e1abb62ea2000ff124a2dc09009594", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "3578731907cffbe992eba72a601699fc4b5db776cf4444ddd0ca49bbcc41f201", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "95027df8154cac111d3e5e3590aca297b726b5c0bdf710c228231109a5eae7ff", +"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "a5ac6d42c93536673eeea984c9cedb93001066ee03043624af73c4d73b447bc8", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "cc16c6fb8c36b127f63326fd64fc01de2f65ceeed0fd21a6ab530d39ed3922e4", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "486e7a9dfea8e67e79f4dcda765abe850ff2bee859ab129b614601f86f8cee51", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "ef97d6f2da4a6390bfe6633b17697100b8e0ed4a309ef4b390ba7f951b2be058", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "ee9ffe210f83b9b385b88fa9653fd89e23f1648082a8f4baa2fa78c8124da964", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f9e770fceefa1430a92689608730469afd96716ecc4dc25c92acb363a2ccdb42", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "37cdf1507a03428427a616702fa405a7dfcc7fd85a18fe3362130bf44bfbd9a3", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ffd3ffbfe6e15785676a943993dfc6dc47df2fb5f1805ce611d031fcdef12c90", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "cd34a364bd32fc7819561bc651948d92eb462a9161c38d6c72b0bddd4d759837", @@ -18721,25 +18721,25 @@ "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "baa6ceecbd6a076c7bf068f8b95746ca1d6434ae73c061b059bfea73b451f24a", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7c145e01523f81e95b35b892e384baa7f337397ddd97891e627e106e022468e6", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "c8cd4b4bf51b83affdc770a4fd615ed47e89edc9da36a17d9c6d0d5b0946c399", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "f9ac3795531f817cd62803e50649a196b2335077e0cb00d39d0ab010a1f7feb4", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "3f293211c51a4e8b77ba3ebb43adaf413c7946ff268aa875eeeeaeda304734c8", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "65e2e4720421471ae92f654ada2b527c5df28bb6590ba18532d508b43086d12f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "16aeb1722f09a6096d4baa9e399195e04efa207cc22878ed64cee5ed76240f64", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "da6768493d92da6588f73924c96ae5d9ae73190392174de4d19dbc2555e8d28f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "2031ca83a2eef5422d70bb6d6fbcf4793e9fe2627b7d730d633ccc5918f65db6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "8a77dd2b8ac532970358a1d63b46a9788794df767f6ca08a4b5bb1b251569900", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "ccdbce1ca7865d71add051802ba13832d1aef9e46c69c93e2a4ab0b5ff7745d2", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d75629eca33b38d20b10d4369efdea134c757beff50dabd1416ed2b557089983", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "8a77dd2b8ac532970358a1d63b46a9788794df767f6ca08a4b5bb1b251569900", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "8a77dd2b8ac532970358a1d63b46a9788794df767f6ca08a4b5bb1b251569900", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "8a77dd2b8ac532970358a1d63b46a9788794df767f6ca08a4b5bb1b251569900", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "f9d07ebb92ba8b86bf2e7b1818e4b8f68c9b5f93a9b9aca1f08fab7a92317c13", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "558beb077f89978abdc8abdd990641b885ce0953b9ca0c9760439feb3ad38c1e", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "b776684de388df16820075302eb53e07509ba642f5d132d8b5bf4f52dc12f323", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "bc852e01b4cdfe353bf416a5aadd874a6cd96bc9bea4d43f5475f04a4736cffc", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c77a7ee94576cc53e0587e965dabdadfc9346f5217ce7286f6ceaed13732d77f", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "62c7f88fc56882fce99b05b2bf117877302442e2c2e0a6131ff47684552bb167", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "b68d56612fff85d770b62731339eeca37a0ac893e35bb685dd4401292c5c8802", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "907dd8b19ecd8dca3970237ce46ba0d8a687c5b1619a42b1ba5029ca9ca9dd38", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "bfefbca943a5987f1b4911d11b2866b3443b721ab1cc9c0c63cbe496b0539b47", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "b85d8eda0975bd81cb5b023f5d784baae0927b02db793727ae6462d2e4c8acca", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "907dd8b19ecd8dca3970237ce46ba0d8a687c5b1619a42b1ba5029ca9ca9dd38", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "907dd8b19ecd8dca3970237ce46ba0d8a687c5b1619a42b1ba5029ca9ca9dd38", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "907dd8b19ecd8dca3970237ce46ba0d8a687c5b1619a42b1ba5029ca9ca9dd38", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "466b6d463e0eaa17308d6aa5711893b6f7330f39ca4c1b0f30fb6237e9e4afe6", "T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "ec033cc2954f8f559436b2dccccbdc23445df8fb9fb27d8945ade64aa2edde36", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "5226237679fde6df5fc4880312e68caa8c1495e8ab945d6e8fb770c74b4d5011", "T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "3552afc5779f80f9f43552ee11c18e5e528f8b43abe0ac9f4ca980ef88fd9c29", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "deb19b81fade0bfb4e6c99fa3a9872ff7c5548aa0a20cb53afe92cfef3bd7168", "T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "bab08939a42c95651c54c50e9cb54b6abf37bda8d09d1e3e43081a8781b6cc75", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "9c9cb73c34ff4f7c71a7a88f4bfb2820cc8d485fe0f200fec20806a5d794d3ef", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "9814ac071bd0ffbc5c73d6dcfbd9a2f6c5ad8a24a2a17befbcd76ca36c436bdf", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "9814ac071bd0ffbc5c73d6dcfbd9a2f6c5ad8a24a2a17befbcd76ca36c436bdf", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "09cab64e8c378640582ed1bc03d15dda0f9bd06dd558ce991a4bf82d3ba222a6", @@ -18786,102 +18786,102 @@ "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "ec1a82c85fea4dd2a49115d33b70ce8dad4ced326f0b8fe32f00640d9dbcfebb", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "e955a47189a8228fdca86561623577d9b0a84117d03081059f5ba2426fa53677", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "8fed9ec6914abcc3d1c89b2b4d09e5c1e149e55188e0580bcc121718cd27fb54", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "2bdbc455290b432cc8b98e270a19aaf54258636800b9e78cb13eb08b94f9c9a1", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "d466d1e05c99bdc166ff6ccc84bacb7535f7e8707f2a452aa66c8f684a970694", -"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "8e60ea28026739f55e23e78d27ab96f8695f11108f50330f2754b52defa15859", -"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8e60ea28026739f55e23e78d27ab96f8695f11108f50330f2754b52defa15859", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "1dff80115319468042071b15775b6c1f9eaee07ef20c7d1569531039f8d5e948", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "60c8d421c983203b74f9e4bf6b6f7eb2fc6a082d70cb927bf13c0ad94977061c", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "285907589c8e97f22fd7a27707348762b02e4ed2a2276e9b6ab1e166d53cf20d", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "0d476d0aa0ec9da767fb12b156b21c5db07d497c92632b543a288293eaa4ee25", +"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "b717ede6952185754ff51cb00656bf7f2921f6fcca2536cd629262f157714e05", +"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "b717ede6952185754ff51cb00656bf7f2921f6fcca2536cd629262f157714e05", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "a980968c1d8e2c8c0df88a437d4acf434cc62c17c569d1554cc2807bad717c4c", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "961678c79703e6d8228d01d7b6c6cc463aafd0361063916aa7d782e3e67b42c6", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx.py::test_information": "494ad40ab10bbb9cc431c0f2731a5d74a147fdd62f297e9ad0d5e37b9f633ec9", -"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "107576be7f466a82f1bbe08a711b2fe4f03753f568d8f7f2cbdb7c3af17f9986", -"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "2ded64938a82ee60a0988891796d12bd14c31f229024bb3272b2f4b848c43e2c", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "3236bdcee1c7e118a03125ab022b74d3410bdbf7cfabd28df8d219c1f4b585c0", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "c10e50751d92d15c1db18bacd1007e361abf05cd3821c3e5a31f338426225364", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "cd1de8851c1a0a27f6827c2a6077d9c9aa07dda9f7c4111f3f7f0d26c44f3f2b", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "c10e50751d92d15c1db18bacd1007e361abf05cd3821c3e5a31f338426225364", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "cd1de8851c1a0a27f6827c2a6077d9c9aa07dda9f7c4111f3f7f0d26c44f3f2b", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "e634f27ef7566258b9416964d4a6a7ca5a79afee911ec483ec3194ba6d1fc3aa", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "a9b60f17c795b90956a908dfd4b4845aaa05f094745d1929d1fc3ccf63b9dc12", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "24a716bd8f69a1e4ae6641ea0abf4ea6b2999133edc622378fe8efa0f837683b", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "de7fca804cc40824735c136b80a8d3149ab4b44edd42ea012fb051d0cf781e47", +"T3T1_en_bitcoin-test_signtx.py::test_information": "ce69c3788a2789d907ef7e3b456b18ad75b84a5f6a615af273f07e44c4f71b9a", +"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "78a3480b46e914af70ca4b479c0e4c27db218937b2e26c44a53f318ee5900bda", +"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "05ceb0ca37ccf8720540b9ee1a6cd543c8d920939a5d021b598b5aefc3f3243a", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "76e6fb265c6dc658ef2bcfe9d62d183b05bbffbfa981df842eb6ffb6b8e37b95", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6649ff6d1d6f61d4e316ee1e7d336d88bce9337c80a04b126ae71f820c69424b", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "aaec5605fc25b5219284b45ec6c05b001737caaef7d8a4a258c01cbd30a56995", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "6649ff6d1d6f61d4e316ee1e7d336d88bce9337c80a04b126ae71f820c69424b", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "aaec5605fc25b5219284b45ec6c05b001737caaef7d8a4a258c01cbd30a56995", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "2b427e48625c887bdc993c0f8e44df707994dd35c854c66de59a3f5aa2f70e04", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "44bca1467c1e7375dcab550765146775be316e04d27a0501ccadc00f877c3e6d", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "dec1234d171caf74da53a868f3ea96b46e373300c67b82a8d767c26cc9cf30c6", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "73cd136c85a4d39c1ab59a7a7d83027d677921d794cabf5f7756c6a1fb70ccc3", "T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "74d40c73f4893a015b94bc6cf44b3633512ddbbde0b2283f5ebd466d564ba3b9", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "dcab93870b36db673213ad95802793c4464e8bdbc7b88d8d2bf163e6f22b06cd", -"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "1ee34dfaab67c8800ff0e109d83f7bdfadccfe752c8fa9d62665147d30e76589", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "c2610794e0e008c7bb5c0d6299acea7ded8d86740ddca9fb40067eac272b6af5", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "6485fe41d2ad7557647ca94e4153030aa7413448d358cff40c16793018a1e1a6", -"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "bd56465ff5b3fb46f2d3cee6f74a6d6694d5f4220d351a1f142f2daea6b1de76", -"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "8d4ddd4379aa2f9036c9785a6a02a5bd97247dc3a1753c8fe778a8d3b34189a8", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "61482968ad62a801431cc4473f4dcb3d85de2a6948c44aedb9992875530bf0f0", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "df95790ac78b09611d220780e5fd528962a989054b91513fa6a464aa60b507c3", +"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "7becd49db4788af0b38df0586313a4eaa1e33158ccf034a4e061a769f2626e30", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "0212619e766a64d9c0664a97c5d9ff6ba166d1f6b21fbcfd3e502eca2c12ac32", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "2ff810cb638a049e1cca65d33ef1401b0495fddc4cd062148d5bb22c611098d2", +"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "b1201ec8a7e1ca51f959b4a0e57788ee8108106518f440ab6adb05291c15a303", +"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "eb59b88086aa0b34d67f4f8a53a2924533a933538402d3c16b5e902c94fabe55", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", "T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "250c8e4f7b43c272f47902534aa2970bc7786e6e3908ae970aceee23988f34b5", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "e7450011c7546e7eba29fed3edd4f8ec0dba02b5847abd6cfc0cd1d09ce486b8", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "29c77ad2e73d153db442ed030ca82367241d9b55e177824bbb5061a9fc30e18d", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8e60ea28026739f55e23e78d27ab96f8695f11108f50330f2754b52defa15859", -"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "3ebd0974f604b1829b85a7b768f251f88eed2d9b409748bf801f8f95cdc7f38b", -"T3T1_en_bitcoin-test_signtx.py::test_two_two": "9131f680a6e064d6f40fdb18128d32e114cc4aef9e51469fa602dec4f810fe78", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "1ee34dfaab67c8800ff0e109d83f7bdfadccfe752c8fa9d62665147d30e76589", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "3d4e83e94f5f3a391a305468e73f356410a76a45e2729f92b53237ef53df784d", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "4652971e34445444db3ffc38bb12934d93e695abf625faa7ac9f13eb00554ac1", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "d170b86b041099a36c290e0badeed8240b522dcc3b900ddde96a0bdbd144bd5c", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "1ee34dfaab67c8800ff0e109d83f7bdfadccfe752c8fa9d62665147d30e76589", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "0a43672e3d39eee35725ced2407037db12c229ec8b60a02c02ed91a14e02e205", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "698ae6d70bcb9b357c61cb378defddf60396487f64fdf83390de2264a6e50782", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "4941f0088730f328f3e6d937f479d1d63e732bd5dd69e768d081b1028905efc5", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "d517f4ad3228af49b81f5924d37aaa3c4077793e7175352106f76275671a2ebb", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "0a43672e3d39eee35725ced2407037db12c229ec8b60a02c02ed91a14e02e205", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "17a10e77eabe86b54c16bed2f8dfba01a0df07208f676bd844e9c3ed79c11cbb", +"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "0b2aa21e23fa295be9eefa4631dc17834275dcb084a7621e3ac7f5030452ca97", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "b59610edbc2447b74b63c082e3e128ea3cee39b007feaa85e731f59a266255e8", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "bfb0c14bdc23f9f664166b3a50ab34c90da3dc089c0a0080bb33c5c1f2a95e57", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "b717ede6952185754ff51cb00656bf7f2921f6fcca2536cd629262f157714e05", +"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "cf3159ec0ad366bc41aeba47fedd35baf77760a64c4a4b1e1a92ed7434b527b1", +"T3T1_en_bitcoin-test_signtx.py::test_two_two": "8ee39f6df723a4b252cbb71331cdb67b9821038cf444f1039be93ab40f0e2491", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "7becd49db4788af0b38df0586313a4eaa1e33158ccf034a4e061a769f2626e30", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "37da0c9c1fe86d60fa1302b07296eb58c5a88755535a2e6f49488bb8ee111528", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "71f19ddfa113a3d590f468c006df815afa4a09b9fcda6dcf21c942090b51961a", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "86cc39d8a3960427f9c7ba59c448078329acb883436eab7f422843aa99dafaed", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "7becd49db4788af0b38df0586313a4eaa1e33158ccf034a4e061a769f2626e30", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8352ec1fd0aa650ba68d8f73d2910972e115fc695c51eb541b082a7ab729f783", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "1643c8a8f0dcb39bb22fcdd5057f1b662ecc9531bd08596a9a9a42dd622308ca", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "50b9c5924147c1c083db4b822825eab2394784e0edc7f8fafbdcabdc9516a858", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e00cf6f13431797812098c147dd76abe41ea4afdbb1b2ae343c6d3c243aa2310", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8352ec1fd0aa650ba68d8f73d2910972e115fc695c51eb541b082a7ab729f783", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "b9dfaa712a5ae0d54d46f16937fcef910e2cc1fcd7c1e5b0690b33c8822b7605", "T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "8236333b26912bdd6f9a92dc1759579f55db58e869e4ee0095b3ec584bc59aab", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f971203f356465ae7b1e561052af253c227268c603411d466d8169cf321ea752", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c4c3779a14738664082ce9ddd545375ef5b4a385ca3fb1a41d582c0d8e1004f2", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "056e1172ac4a2a3ad4e7f8b4d6a58234b109d52345982989b81dfb4edaba083a", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ba2786c01532babe33c7768e8e36f3d8eb5364236a8976826ae4c332028590ec", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "44fae59c4129c54464830c412c3e9290d1725de448ba19c5d6037d0db6f953c3", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "57bb04004329015e96fef212def0b0c2bca95643d454d01ba3bce535408a4099", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c6933a7aea828048a591f85fc8d2c77ea1ddabad6095616550be9b360f2e5781", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "ac1322d8002c123eaf6226eb81964a668b1eb589d4fa4231d35a4fa2fb0dac10", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "1bae5a119d6873e427b766b17a32f94c8e7424ac213597fe70d1555607cabb82", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "a6ad9d599b0dd5826be1f7957119c584fcd935a510be3e65533a5ac8484068f8", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "370da20cc8417b8d042f6aab2e9818c14a5668ce6174d565fd2c4ff1d01ce088", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "6db3e1d8c2f1b93a4eb659087a6cae074dc97fbb711d1d2af49f9b866f5a73a5", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "822804c07f8677ea50179c2e0b321265d62bcc7f7b7e1e4312f2459c80803d1a", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "74d46755a1a80ae52a0625126207c4b5def5bd429fbb0a63e56eb79f4813ce4e", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "6ad03832b922d7478a91460c7c1ebbec120b081a507b44c348e0d7ce105f6e4d", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "2f7060fa853811a2e672903eaff41630e2f3e1ff1aa5a649c7d17ab3d5427a33", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "715220cbfcbeb723644a0afc50db3e03b820042a885db5f9121f23211ef109ea", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "d2e6033e945e8b0accf10e92cf92b96537e3619ba70c91b48255af26e2612d45", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "2bb32259b41a1928e43f19a123efa0dbcd8da278b466b549a53d3a7b4207da74", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e970a31e70ac8d4193948081496a47f62b49f56992b315e1938899cc640ae05b", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "621b9c9adaba98a2275c9cdfab6ff9acedad15e71cf7ef41f99185ad169f0676", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e970a31e70ac8d4193948081496a47f62b49f56992b315e1938899cc640ae05b", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "621b9c9adaba98a2275c9cdfab6ff9acedad15e71cf7ef41f99185ad169f0676", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "8fa45833f7db07eebf918a4e82ae9a1d6a5890fbc85a053025bb732c12032bcb", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "4ce75532018e46ce9f04179b5d52436f76bc03f34193bcfdb9e38bb09e7f0ab6", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3eea7b841685dba8cb1c5cc5324fdad5718ee84c99914665d4f2c7c4206e94b5", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "02f48759769b07f3f6beb4d3c45ed758bf580f5293be12ba2c9f62a5ef849b5d", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3eea7b841685dba8cb1c5cc5324fdad5718ee84c99914665d4f2c7c4206e94b5", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "02f48759769b07f3f6beb4d3c45ed758bf580f5293be12ba2c9f62a5ef849b5d", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "4c97210bf64a3ecbbf004b2629ffea26b1ff4aa7f3ce94471416c36d23e86587", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "48370001c5c687d31d7f4fe6437b4fd985394ee5ac4cb6ea512b21e7d992b2f0", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "40fdfd27d29839a77e7a68e78b965a9d3401874c031a940174bdd9552668dc96", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b6df45c9aa115f0d8187529970ae5587124fbeca4d71e51645b42f5847f980a8", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "9d5aae7b5c638e7080019e2530339a3568a11186284eb5e1a505b5a5c657ddeb", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "518a3c75fd872f10be629e0d28b13826a1b0d6fba64469877681392e293033f9", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "ab526335cbd422bc9512bd3eb109b6b7b41d8148a6e40ebb67949b72cecece66", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "3be3fe3ef2a20465e198d776ebaf7bd5493e9ade4ffc80d190692b77ccd56179", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "4b44961e1d97ea50ff0436d16bc0dc601841014fb90739a35116af123f3a74c3", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "1c14fac09c284744b78ad37217590d5cf16db908aed6f90ed3bcfa63a2a961ec", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "486a8eb9ad940ea7cf626ce4a6f12e7e311178794f07acf04a2b0e1bc68a9d9a", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "e093cb1de1151bcf00f239421f34df4150c13d7f823ff412b65820339e317bc9", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "5a76c9bc19244f3e36917059197aef3ef9d06a719845e87dae16cb95c38e007a", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "c2838614f7afdb5d305cd035709db0a6f91aeac230ee83c35d391ca4fced1027", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "3e821c7b19fe4cf391580224dc2a5a9c789de147861bd37cf60c80d4415e4cd4", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "3e821c7b19fe4cf391580224dc2a5a9c789de147861bd37cf60c80d4415e4cd4", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "3e821c7b19fe4cf391580224dc2a5a9c789de147861bd37cf60c80d4415e4cd4", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3e821c7b19fe4cf391580224dc2a5a9c789de147861bd37cf60c80d4415e4cd4", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "44d1a1687a21ecd673c33c28a56aa6ccf174cd560a3e8ed614e16b94a7eae0d9", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "44d1a1687a21ecd673c33c28a56aa6ccf174cd560a3e8ed614e16b94a7eae0d9", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "44d1a1687a21ecd673c33c28a56aa6ccf174cd560a3e8ed614e16b94a7eae0d9", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "44d1a1687a21ecd673c33c28a56aa6ccf174cd560a3e8ed614e16b94a7eae0d9", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "4ceefe89150a603f10c502a074bc9f01973650ea58e0e8b397d96d307b440121", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "4ceefe89150a603f10c502a074bc9f01973650ea58e0e8b397d96d307b440121", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "4ceefe89150a603f10c502a074bc9f01973650ea58e0e8b397d96d307b440121", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4ceefe89150a603f10c502a074bc9f01973650ea58e0e8b397d96d307b440121", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "75ec4732f592453e74aa5caa6817c656f07e36a989988fbf7f4ca16a7a2b6ef3", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "75ec4732f592453e74aa5caa6817c656f07e36a989988fbf7f4ca16a7a2b6ef3", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "75ec4732f592453e74aa5caa6817c656f07e36a989988fbf7f4ca16a7a2b6ef3", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "75ec4732f592453e74aa5caa6817c656f07e36a989988fbf7f4ca16a7a2b6ef3", "T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", @@ -18900,33 +18900,33 @@ "T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "401cb1195d4fc62d0026de7cf489adaca74a0f8e523552b247c3d3cfefcf25fd", "T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", "T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "00b23b217712ed7be94c1b238e6dd4ac24bd65cb5ba3a1d585fc30fea7668392", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "4bf5acbadaede5df93c00dd315b1b6566609b9bac9213413ef886788d30806e2", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "af66cda11b0c18aaf8e80d2d4d200ebb570af49a967b946284cc4ed7578f2f80", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "c771d151ac6519ff97b2315e34ed398fbd206c6a28d038201832d687ddd19a69", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "378bb26f4dc4c3f32d2f34f10e89adfc014cdede67c274fdbdce019eaa45332c", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "70aff3d970dc304b447a8d02743dbe7d63df98e79ee65e20f44a3feaf4ae8667", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c27d490b38a84937aef6b1c7d23d92ced613c4d3535923b05b2ab326f67568c8", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "e56e73f964131cd7158ffc22cc121568eedb9ade8c78645f3304cbd13e45e3a5", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "d670e9a78b80e81620cd2873d72fafa258edacc5410000598e3a61b0fd69b0ae", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "2b29c86f50003c3be00c718c17ba634ef9374b2f4e7a9497cb384de4c624396b", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "69b225aa9d1eb420f08e4afee45739efda3fef7e5628e3ebe410274215a7d33f", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "8bbca156f1e8131c71fe2263391a2ba9252bd7b958095744a16c44868df64d44", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "d1345e36c108fb57de0fda73cf8a6a202c3b6ee8d206f63afbb8944111e6749e", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f38ef8f9572e25aad2171a0f550b63d8f39772dc16f59e5a95e0c80d49cb0039", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "0a43672e3d39eee35725ced2407037db12c229ec8b60a02c02ed91a14e02e205", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "04ad5159d4888221da30b0ff0720932c2d299bed974fcb02fae21842311086d4", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5de31bfe1ab60fab96cc4783833051459f41e085e441a5d7aafdf8d9b5999a74", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "bf332a502f0ac83f182d8d79be0af77d1a2b7829e4dd9fe980917e36986bb9a7", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "bbe154592c61ef0d8bf89bb24f0d20a4088db340b903a93acfa457fb585efe47", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "96af854324b786d28ee150d344495071be3b7f6c48e792ac5338a63b5d99f363", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "5d2d977075e3a07eb0b0a751001222c27a72f972eb589c33357a6d4e2fdf2705", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "1fc885085ba5c814ce6d195f9c2ddee07fdcb55be1cc1e7cd9f71f542e6a3a58", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "025845b35e177009cd87a86791dc8cee4fb9eca06d5f3b032e19ba4e9b485894", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "b1a98bf69d83e3020519fffa343f2ed6229741ea1a33e0a56e68fa4578e1b8c4", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "1e0fb061720918dcaff97ff54e4cce707dbc26f2cf5753d27180279ee108fe2f", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "ea72e421f53db326043ff637cc629ad23f51465654ee0c3a4ca2886424c54fcc", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "c67accbbb8033cf68bd17718bb697dfba325c312bca250be792bbc1b804e25c9", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "c40a96bc7864afdeb5b0e5ff040f904147962fb91abe319de378e2eff20113bb", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "94cb61f180b2cd311fab1a1d53606700bbcf72c76b62d5723ab3fab0980b6d34", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "6fcb44187a809ec76ee56e5616f018faa49ee1cd7743f38d2d692f013573a70d", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "3506278c65fec220fab03f41157343c7642c350dfe9874ad4ad88498c0e0578a", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "35b0e158ee9c3357cc8b998d94868b0a7081aa40a1764595bbb9042bf3a16d32", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "3a8927e6025218bc3af28372d8e93fbfbd2625320a194961c051c769cdd8ec24", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "8352ec1fd0aa650ba68d8f73d2910972e115fc695c51eb541b082a7ab729f783", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "5bb378fbc2728b08ec67011a09f4d0d695f7145977097fb017922fcb3a3e8110", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "091d07613cb8c22fa4c92a0cde8b26a50310a5513711d511a1c0fb4b1cac666e", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "433155fa36b69a290e9690eaabb638a28ccf57787f1b250b29d234f3962dbc0b", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "8c65e23c79e57dba6ebb65deab16ea52e04f5aa835ec3e266f78d5099c26e060", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "4e13c2096628a906bb32cf81e3a34c150fd04236410c5c51fe8eb647a838a6d1", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "2a489073132caa83f052d08c2fd6585d7a362a46d307dd24475a05d74c2ed632", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "76427420312cb54340f73644ef94edb2e943d795ef42922a8b81c4bd794b1750", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "9af09e6e2affd0b69c6006daef21b1e80ccc91d7b64bcf042ef8703887fcfe92", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d662874555122c8a54cbe4039fd43653b0278ee0989d05fdd98042ce67f93081", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "a01ed170ecc90bc94f4ba26719a3f8985138d321315c97332f6053120e4fe9ae", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "feeeac9a878d537026e7df222a072864b02103890629138424e73c4abeff9167", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "61cdb2e71a1e6d1f1851c81448f4beeace5f852f65cd4a03fdd534b686bdc971", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2b72015108a5a713ace0bd0d90e453e0fe11decb218fddeb72e2a85962ca1b6e", "T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "88d58526264952186ba81bfd6298d816b1a1149d58b56440a665636f6cbb1be1", "T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "71a676bad2a459259545b997ffc300545efb3eba23194b0d31c2f726ed34986a", "T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "d462d410f996d14811777785397c7a6d85791883d80c3297b8ba1535da697b67", @@ -18942,9 +18942,9 @@ "T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "7f78d0af55c61199067a2e3847d8ca3f6add3b9c33f99de45ac9a3eece7816f4", "T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "5dc3109ddc1d1517261058fdd1985eaa0d4c53ece4f2338ccafac17de6818f4e", "T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "23666f5f9bbf4b7e4d41e2422e1cb477a14a0839dff970a876bda10e6e72eae2", -"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "4ef4d0fd5e36b2cdfafeb04fff9cecc9917a6c8bc15032388ab5d9797ae1e8e8", -"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "63ed11ff54c9fc7aae1f2c42427bce6b3b0e980a6840accecc6a497c2a46d7d6", -"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "d142d3943b9b32edeb76ab27c7bd55ed023da43965449da54c695a49ee0f8557", +"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "de8a5381458d9b59633ef115f63958e3739bea9cb93b5f7838081c1eb50f9eb0", +"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "a92eb76eaa07c1c505dd05cffe4822e822d7c938705534324f95de5fc899c71a", +"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "0c22e0d5a2e565721a2dc339b66fcb6d4a68590b1459e5b7a3f9551a6a4bfb8e", "T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "de69b20cc5f899cf37218a5448bfb47742b1469404b7ea115d81f844a666d71b", @@ -19324,12 +19324,12 @@ "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5ab192f09241c9d2fba7be8c4b5d45ab1d469ac1a3bf54e4b3f64b71ed1be3b2", "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "8070202080fdbe5018452fcf57e7b6c06fadfe68451d1428a28b6f1b2b1fba19", "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e2237ea3ede7735ec5bc0edac74c3eb28584728b74edb15ccea4e40f5cd113d7", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "00da677ded73a7128842c4ef14de6ed0ad871d8a85b984ce8bfcbf768e64ae04", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7332831b693394047d299348e32a156557eb50902ed4e396d1edf4984c8e0ff7", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "8b4baeade7dcb6b15c244d02c2c891c3351f2e9d429ea350247dd013559bc672", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "b9e8aa6398e4eae5697817ebcd9f909345ffd3aced288ef21d24cd8e5af149e8", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d2ccb8ef385cea4f35311b139a92c31db2fca352a5e4ccbf6857172e89e42cd6", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9bda6020ae9a6ad35822ca05ee7116f9f50fccfc55bfa31155994a1657ee4bd1", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "134d3875f95dc610ff3d28ddd760569c6e3595a4080cb65309a0efc6a09ae023", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "5734213123123f233b6ddf4c2d0b5c72e51cd94dc886cd8a69bda977dfe27be8", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "387d9e5e8a9ec017cb7f6acff9afcc13c6257d837d95f405d881f1644850e40f", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "ab2e52cd4aa4bf49db01ad0e8b288e1e96fabc7fe7469ec4ff1a0dfcb53179bf", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "42e6d092a83e010f3567c6d2f46ba1d34c0eea8f578d08cf9e3c351794d47417", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "aae8eb2a602403734fdf31277f7a6c9f233b359fbe21ae664e45479f912cef99", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", @@ -19434,12 +19434,12 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "2941d50d13b67ea6912b86299a2891d06df47327ed9c836d494b6656b271e945", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "2941d50d13b67ea6912b86299a2891d06df47327ed9c836d494b6656b271e945", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "eaff94d8c4d85d0b6cdbfae712d75e87b3b36157cd5f1f8a6b954c4688fe17c0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "eaff94d8c4d85d0b6cdbfae712d75e87b3b36157cd5f1f8a6b954c4688fe17c0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "ac9e30601729ed3134ebd800d9f900f10bdd1d79c1a818ac30193ba2d3d777a4", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "ac9e30601729ed3134ebd800d9f900f10bdd1d79c1a818ac30193ba2d3d777a4", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "ac6f9b753e108aa0326806404a8c0dfd10d2519dadb2bd1e6215b32791b9243b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "ac6f9b753e108aa0326806404a8c0dfd10d2519dadb2bd1e6215b32791b9243b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "a9845e28252e5a1eff1070b758e3bba518f1c2df718e742a50bd4ae786bad8b1", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "a9845e28252e5a1eff1070b758e3bba518f1c2df718e742a50bd4ae786bad8b1", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "09b3500b2ce7f52664e89dba7b877ea8d63c5f28bd119ce8a60916dfac566ce6", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "09b3500b2ce7f52664e89dba7b877ea8d63c5f28bd119ce8a60916dfac566ce6", "T3T1_en_misc-test_cosi.py::test_cosi_different_key": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_misc-test_cosi.py::test_cosi_nonce": "ebc1d9577c978337125d68b48c5b03ff7e68c8ccaa4903ed07a2551f45df8971", "T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", @@ -19493,9 +19493,9 @@ "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "926b4edb734b8d59fe46aea1de0603254383271c7196f4b75552c8333982e339", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "4ee0afb4b437c504bec00820ba879937bcab2b84f0236e28aa36110356e081fb", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "2b0c7138265c38be7606c7447aaf545057dd85f6d32a9d32bd32bf824cb8d994", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "bea64c5396d509ea36ebc25fe5fd7ef0463b67d493b783f5622c4d4d336d62a5", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "afa44deb4806d582b2c9aab03709771c284ad1205a7c4a1d0b9e4b6764f6e5a0", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "1118c892a0695365417103cab14972e8726c3dd64eb7f27846e1af2afe8499c9", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "fd4c051e83876718732ee3b2a472de4d1f8457e262fee8ef72a579adc3d711ba", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "b8306ddf96727979f28c47b6a4b67eccb3e9f7dede1425f939acfda05eab437a", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "32f1332af6088cef6f714cecce540ee864910d5db8bed9e24975f860d0a11b52", "T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "2c239acdc77c10b622652aab702630aa61a2a1f8bed87417b5b25c60c2c87454", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", @@ -19532,109 +19532,109 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4cb7bef1919018199a1a8879ba6e908d5a1069e913839d280e73f5582cf9c3e0", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f14939364479b7e007c34e07234557e3b1aaf3db682d1b90460f23b8088ca0db", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "819ae447555b7f61ea5b8d7a41247aee23c73101a06023e5854ed6a836533c25", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1666f76c9a348d98842ab08711e526ff869b3a7888394ef61af741dccfd82713", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7a4888b95c5f7778337ef118cd6d9e5aa824334741343fd65a0cfb5b0ca85c4b", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "bb05d7a97902aa97877f8fa47df86166e7d2becba65dca5702866bbe4c3d39a9", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "80c5f31e4058b73e58899e7a9d5846b8ebba50155f4f20b9aa1d3e9f0e2b4054", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b7bda44d24db83973da5bb05cf109c486aeb89d2b82a1954a58ecfbd6daec0ae", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "444750af0977e64b088ccf22965536475d5442dcf7a02c1df1a7c430902b8470", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "c25edfb0b39e5a997fe1635ddc7472dcb4cbbb6d507cfad23fc21cd3410b9aae", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4ce9db01dbc755917f84026cac0fa3af5357445c1c869a47be2f9e4f7813d028", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "5562d0c92c174039e7c4c66bc152448c842a88aa09e2062fb558f4d5229ad5eb", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9465b9acb2054437ce8adb95a448c8fdfccd359d7af6ebcb71700cde60f26a4d", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c4bd48de19f0ca51f6a739d2378fe2d3ffb3a67ab05242f162d4a1d330d56991", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fd2ddd190df63dad9be2bb9f604186765d5e85c4f118a5d13f3d5d6c714e97f5", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "8ee6e24941c549fff1fe60c49c36b14d0896fadb514f661d619ebacb0829f301", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "15ab6b16a44c5dc14dd2a72a2f47e0903a1cab2116588c3e2fb8d9287193b37a", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "7a3a041caa873e0c1c5667673734e25bc820571a112021de1eacb12fa6523554", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "288862c27f925ebdb328acb8b0ae6648500304e074d4472dd588620f8936feb2", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3414a6a08f6e6561cd6e26cb86a852199bfc7703fecd608530bcc62f69383f37", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "778068ef0354c29d1af38bdc681c3c3689bbcecad3fe28b737b10157b72029c4", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4a6f9b8590c88a3abc40ef6eb94e58b9a4574dbd9ebeea80dd00af414d05a9d6", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "57a05fd6854fc6d90b5c1c473f2c0674556e95264af184783b27e4a753e48b05", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2292ea7a17ff843f8275c9c78824928ecc29f3130bcfd352d6ae67bffb8cbe65", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "fa258df70b3d39fb6f646251abaae212350c459558c0490e7a30549428a2d724", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eb2fbb964b795e5525e34ccd907371c32a8196dcea1441a659e3c4986e28a3e1", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c6c5fceb6a34634b20e9d10cc9a8ef8a2bef4bbaa3fc1736f3d1f64b557d328a", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd2a4394c3627622864a7346084645b6749bf458682c7e8f6a34c80549c19030", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "fe0d6ccbb56f1b5d94fba987fe955a17801e2bff1bf256a3f162bc659a67928f", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "60bd320a3de0a6d8ffcb035c0b9695936ea9fe1c79c974f75e5167dce319c7b9", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "048b8deec796167ee2b24708a91bc2dca4a092936df2bdf7d163d25853e528a0", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6bc07920257bc658b8c0e84ff720eb4e5f130d046ec842e37510080f0abbfabe", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "60cdca2f6960ac334c2efee4ae942b2b2f3a26a023f61739968362162a78f6d6", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1fe23509933e09c004af2f1faa63ae05d345089a1282f2f1ef2fc50cb4a845e5", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c44e6ac09c10b91241a3de81f163d92ddf326c66c9da8911e6d1b074fabd171d", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d67d6565460d3fcf9e6e7561f7b95b85ad3441f4d4dda4bf4d9562c362383fce", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "6e79cb8f787adb6f164f4e36b13ad60820a6eaf7b497af0c0cc5e9f3ca34c062", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4667e38ccb890d6dd224bdca37b5649301412c610f752d64df3d28c74b946e7b", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "eae3f9702c8bfaf20e769234d8edac88c34a522a5b7467dbdd35e08290165dc5", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "c744cd83a5cc5570dd26011f4693c8ec6495067f62f43103775c5e3ca22a7c2b", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "ade6a2384186f69541563a474bbfe321976f4e669a98d5b2da92ce29a98d43bb", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "74f45563d1ccd333f193a24385f12170403224ece50a0ccafca5211f4b27793f", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "c9208065a73bf5dfb8fa9fbbb0b7810eec2fe0cb592ceb12283d390ce32e3d8b", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "5846ce62d3f8a25725cca04c5632ec2484690fe0fb041b9f3f4f5d5f063cab77", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "3e7497765ef22459ab427bf28b0886721f843334e52d0a7e2ff9d44b29c97274", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "2ea6775a67972a7e3a43d674d8306083a62e9df3ae3d9307cd3702f50c33b509", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "6954cc22b8425084624212b7d37331f9ac21a89ec541130254b8982fd0461415", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "767de55df39fedf524b135a5c55bfb853d3c494f11b33c0fbb990961935d53b7", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "0b44ad7676ecdcbf34dbac2ae371870c8742941c4a772a3f3e81229f2f465b8f", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8083c9ad19f038a9fceafc4afba51cb75ed3a9e224320faf624d3acf0815f864", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5dc0877a4ecf3916496ec810fd9a96a2e3262e489fccd3e3685d01023cb1c83e", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "70a6291e534c8530c9e4d60b6c613403959402e8c204c8214cbc79785b622c86", "T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8083c9ad19f038a9fceafc4afba51cb75ed3a9e224320faf624d3acf0815f864", "T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "5dc0877a4ecf3916496ec810fd9a96a2e3262e489fccd3e3685d01023cb1c83e", "T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "70a6291e534c8530c9e4d60b6c613403959402e8c204c8214cbc79785b622c86", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "ae9f4537606659416e2deb27221b338e8d9642f799f6097242e323b7d6e12b02", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "6cbb252f50ccdf03d70b70cd1c7ceabe9f1c51c77558bad1db3e49762e1f4a14", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "cd0d2a0217ef660134799990043aaa45e7211eafd78d831113596cb7919fabe5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "b2d45e42ad7223ed68b4cd6c9bcf8bfe5e22d10b23b35e3e20aef06eeb71601b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "81bfdcc48548c57ca9ba2769518923cfba79d2fb9f2edd02f207eb25b5ca877a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "21acaf6e1763c72dd7204517371b18909cd6f108f2625be3830b02dad8ce0a14", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "dac89454877043a42d5705757892dee6bcbc1c32b704716a3f55a7c07c50da81", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "4e2678cf060e4a42431c1e6bf900fbe24d2798387f06773cd69589a4ad0462ed", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "1acd4433d39fc2406e8dbdd696c10e703a752de296070f68d6f4d5f96409d8d5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "bae5dcc6ac368c64c755f790ed066d33df4de9bc4a9c043beb182f600ccce975", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "35ab2fb61d1bbb5de9a29af61e3e8ad2197f19a329fc9474456438bc7057a962", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "b7ca916ba18a3b7334f7163c9893a8ab45a42b9e8918bb009b58e96411ca18a3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "679c354d9aca175d4019eda06675505da128719afa1d4936fbd10b9c423e5830", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "0b85592be9f6431ad3fe18e39be44ed09846f465a0f8fd19cd5e140dd5867aaf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "ef198fdf93e986d6a80a592b8190714a61c06414484a06df10ee2534b81f4d6f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c3c889b001e33dbfb0a028e00773491dcbe484f4f510ff9e209305ef0d2abf17", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "ecccf3c774889a3cb5ea186de48e59ab4c4ed974fb873ad8e87aa4cbca997650", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "d3301122e92d3a71630bab1ee8cd82e4cb3f58cfdb129c3c253d498326c83fac", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "48b1f311ef643da7896052efa0ec335f8ad579877ee01efe5143b5802b40028e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "aa33422009fca2d0fed306a8a622a0e9e01b57eacddea7996b14020a55ea82ab", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "6f9e8115f7e93d566dcbf8ba9372367d1d86c7d6ef75a107c9410482089ca4f0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "6f9e8115f7e93d566dcbf8ba9372367d1d86c7d6ef75a107c9410482089ca4f0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "b8c97d7905684a950fc69f86548c1d62ed7e842f2ae44661804960695ab91adf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "efdd2b0917f89360ddeb5dfbd1b2db083ff8a52d0f2969f5c9e05b39a535a4b9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "71923d64188c14bdcfd72dd61a8836a5494400f7607af18f92aea589f10e9acf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "122b292d9b303e9e105f1f85cce778edf3c0d46a8d65275554e14a48ae96b687", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "8cd7d0e89a8d4ef98f104c7d674036bda19f21d882f88800866edba367b6ce7e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "42ffa2411f9f65a7f91c2fe9029127198186cde0648418cdb79646e13bd68e55", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c82baa8dd8279aa7e25763b39b6796cc1d5a2cb27606910b998d1f3107139e64", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "ed3855c3de5cf41aef512663e64c1f2aa585af80ba8ec46232d99397ad44a13c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "d1783b51bdc24bf5d8ac0cff1156e2c629c9086d7bfdb8d0bc7654f9e3348c8b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "fdf1917625b198793db9efeee22c7e9094a7c7aa347311eefe6d6801bcace57b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "cf475f7fc25d035f4341814d051a9cee12a553f73dfdba8f340494a6830ef54b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "00ecfdf602fcb460d9292d180e522b98aff6dfae37371f33ad0e2e4909291431", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "78d5c744e4b5e2774c062058914d25cea02ba1ce667cb170d29d51bd5a71f027", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "1b8ae5da3f7de23688bc56e07d5a4d3c3399593d7c6f1ed21cac8460f0dc9c04", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "708cdb2bc46e4cd77142395aa5a0910d8a5bf5e9b43265e6b4ffae6ab74f85da", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "b181900795207476b4421b220927e53fb88b453ebc653e8eda6ec1ba2eae68f4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "ba615410a34148c7e0726b73a561bdec56293ac56be3595f4470cb6b474e324f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "d524e87f6458d58622dd8d5ec485dae219e2cad206a1f19bb28c0231108b5795", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "238cf2b3f15338b0c1905ced002340f16f1ef6ec6962cc5a7b5eac1c1844d319", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "6558c64d951dd3de96374708372474370c2754bd73c34bc433320007aff994aa", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "333562ee50fc89b50612eb77ad2bf550c66c74f507c7d76c075007f881a0af2c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "ea17d5e9caea53f09eaf7ce5e938d139cf5f30fa65f2044b75d39e1ab59797e2", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "9c12a6012319e0676ffce373f28819bc7bc60b3d1f56c538bff6e9bc68e80581", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "23eee17d15ca811b7b893eac1beb07937dc6c8da8626f1000c6f65a3d442fb31", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "66b57dea07fc62aa2d7550dc794d795b4f3f1654af6957944b2ad32f804b9253", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "92051b3ddf4ab3b38833ea23d3afda575cce6ed53270b6638e2e2de2e1b4aec9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "58e5f82921bc3264022b20e18618407d833823770a5b842ab2aa934a791f59c1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a83851bb4885b4655bfaae6b8ad3220d7c0454244dcc792342980273e0a5f5c9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "7df75f075aa03d00e1e065a06dfb6fe7fc6dcaa38c304f118e76b95a10808fd8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "f4e3285ea50bdfa8f67686759c424a03e4b550290093121e4deb90f198d99942", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "cceaa9ba6b3bfecc973196779f873f3ad2390a66bbf2951115f3a2cc6b4edc65", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d60a2d88ab9eea3844252608557645f2a3a29c31bc99aeeb0b1b0028c4fc985d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7fa9383507cd5d313c68ad022d7cb5b5bde41d7ff62681a87d59eac8c2d45ba6", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "2fbb60a329201e40bb1eb3b38759bd91175629d2d7f7cd83a2d0d38535a9f55c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "a2a69c0189e47e1d78fc22ea7736005bd639061b9c069d2566c04433973f6caf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "732c26c2b26e13f21549354be90b4b2e46379f2811f00f337ac4d881ce7a71b9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6d98445bf67fd80cefbfc9ae76bec47b346161fddba368bb830aa216ac483a3a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "71923d64188c14bdcfd72dd61a8836a5494400f7607af18f92aea589f10e9acf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "93628c6ba1cd1a4b6ea9c2c8fe384a628414641aef132cc9a44615dfa9ac2a14", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "d5ac6bf625eea6093b86785ffee0a9d4712fa83377b4e4070afe843310f27984", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8493cd9b220ae5651a3d30bf11d8a622814c5bfd27ebba8d23eebdb2147a3946", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d0b151484a56e3b3a042d81c97718b8945d4d256b2311ec3f389a982a0251ef0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ddad0b8c56519b33380da46e338a4b799baa1fce0d27139352e7305fb98ff8b0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "a655ec56977d01fe2351eedd4d5006b41f4a1a0cb7c1d7f5dedff6e33c88b401", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c540464dae58d5ca46f416f6546e1c40c9af914bb5781506f42fc24868dca481", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "784b88376a75c0abdfc104d1205b4a2b1db45967f56d38335f1662f125c7cefe", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "da5de87ec7e12fbf4223cfda6d186d8eb99f9830cd2604bf270b7b5d981dbfbe", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "36a2cb37dfba334ec192a533da7b41e3a3b3c2df4a05211040bf8231ca077b2d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "eb235bc7115ec30a54d0559d88ea1ceec0c39670e940995ff2556bf4108ac6e0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d004319582d6aad83750f63da94488536666d49ac0be8ecd99f5fa114ec6a7ea", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "930c9a7ddbb4ad95be130a3dc77b26cd21751acac2c801d3b83f13e1df24edbb", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a9c7e9a1eba91411a44692fa15461cf22e2e4741307c8ff01623eb6ec9689ec5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "aa8c2035317eb457e24f307113ae52971092b21ff247dce8a07759094cd08927", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d2e20cb3ae6e3532151faf53137134105e228fa61dd7ca78f4881cb8d7b0dc0b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "478c44b1c15eba088181993dcf6e4e6b2d3618edce62c70d95d729ba00d5c1c6", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "619309c96708f4534fd19b35272fcd083f9f71560b8543cb0b631f0d888e6d2d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8fff6569b704c3e25bb9aebca7f81255895b74cf514e5aacba6dce0c3775c563", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "6b74201a039702ee44e4e4cda7fd5e959ff0a4eafa1f1ada321d67b341e95262", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "7e6d35cd2eb7283cb3423ea648dc34770fb9caeaa343d4f7646f5807986c5934", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ac568409f60c886936576c26ce896c88e0d6c5df124019c0f4972cc043543641", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "8e73f6915b914e464249c8117e95906793517499eb68fec9c388f226e4d7b971", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b786d65002875e46971e5f3a1331538154e381a051825a543d53538088640df0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "9e81201922bed5c33625289b1fa15fd23df3f86fb283a21b6e7aeeea679d9278", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "c8a59343861687f98e5fc1b6426f16a53af80c90c11cf42119fbf3b4967f5fa9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f581bfa3624838e5b126ae573636ccb4b7d81d23625b4afc48dc77a62d457962", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "507399dbf7d9bb51b2090920737d0bc205ae6f7b4d4de03121473a9a8b042d17", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "27bef02a5ba39350018226428f814ab81d0ca8f29ade1f33048ad5bd8630ca41", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "d9137d2d0b391a3b2f8b1e16b1bdf796a7346f7782a6732111429f552015dc45", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "d9137d2d0b391a3b2f8b1e16b1bdf796a7346f7782a6732111429f552015dc45", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "3ab20a1994149d8728e1398957926b4a5a299b88f9caaf7ab70d9b2c712c517e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "30bf6dafa11f28b901e8c5ecdd631d65f86a881ff12356ded9d4488091e3833d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "b6a4a613337b3002d108d447a62d105a8f352b59383d337ba51d4946d47f7995", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "cb72ec57d316307ae30ba05a1b64ce6bcffe52444dbd35763aba5d1a8c776db0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "17120373d1aa329b70eef3ab7aa5bfe4535255d2aab962536b5e7100717e5d61", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "77831c77ee152691c1b01422165b3f60b484a5844814ecd6b98875078f9685bd", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "e1fde8caee1cc31374071c0e286f573eb870d77dcd779666c8e7b9ba8af8501f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "e148e5909cd96738a6a87aa7ddcafbbf561bd92bf57632ebd4da25a8735d36e4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "e9685c6e0495a619296a905ca178dbc872a6b6a98b975d544e2c3e8cea7ec403", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "b9ab87aa664dce6559d65bf773509b808ac60d48f8daee20a5f38af472fb07b3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "debb8cf0c7bdd7995442d790e5195d76049965b51f045ad9bb7f70245a31177e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "6b8f6dcee42cea7f83330c85cad1ad05eb6dbfcb39db54ebd78ab156b2d25798", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "3df286707fc25b828ad9b9259e37303934cc864279d135fa45228689d292e4fc", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "136b9b8e58cd9c02928d3855604f92ced0faa68360b016187ebcb3d417b0a586", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "a7ed55ec9cf5b04711d03a4c2cc07702c287e25ef5624574b0fbccbf54e0bd74", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "0cc8db4d9b2b07e97f84355024d73c93a59947fd7f34840a1b534986fcc39704", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8da7e350501ad6fe58aaa5ca660ec66421a4e3e8bcd452e283e80e45c1cebfcb", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "17d6f17aca79eabb15aeb7ec1ecefde49ffbd999f75231abd6d2f5703f41ae86", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "bcb5b00fabaa01d3a4a0457c61e2062d0d7b49835588332abfa6a04dd4b33571", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "276919fc5a179d4cf6b11274a310a62b5a673696479a5adffb1d6b8e4fb7ad16", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "35d982d8430962c8c6d5c992cd152cf5b7335ea958dd301d1c6d740160263641", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "6532f746303d3448f6b5539ec490ea42144762e1f128059ff6a3a5e67d895277", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "0934bb6474c4e7466b3d5362c9c9112ac157db7b829547bbb4d458b3e99ee102", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "4f0629af86e96ddfb0e454729f86a144dd75ee6fed930def98be6abe5e2a40ad", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0bf680970211780784f6588f7de1c4185df158a72ea35c8d769ebf333590e692", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "30c3a3933d057be6a4d108d30a7e005b97b3f6c6792cd0afa56ee14276836c78", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "49b2eeaa8c477760f4904621584931d0ebbc43ef6ce1d928c78cf762ff9af78a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "de528a4615ec1796b94e06f73190d4a173d7ecf5c6e71fbda18b1ccab1dd6475", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "47a19c37b24dee4c4941292c356b9d1843daa92cd97d2aafdc72cd47da388121", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "f0d25e7fbacd9cf8736475ea5da4ba3a2f62541f87fc19565bd6be122599b347", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "6e57f2e8ed2467bc5c547a341bfcd965ecf21ce1e24a5965d10e5bc7231427c1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "4de5d6147a06fa00195a5ece0c4ad2bb8b227ce19221bd8e8ec11e7b4c2c2920", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "ec3d570eb28d03283992579a0aeb45d7bb1ad6e372fa680d142ba754699c8fb8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "748afd64a58166f055a859f08573471afe8f6087951c0e6350d1f56f2944b9db", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "4f87e9036b241b6d7221708e39f78ea137115293ca06ba530ff3f2248aaa1d1c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "63a68d216de2698a4be4e7b3aa21fceef50bcd91038b2b6fd5014b5114f7f42b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "52d98e5c4e50b2813007910749393c52803cd7d87dd26390d746bf20caaf6543", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "b6a4a613337b3002d108d447a62d105a8f352b59383d337ba51d4946d47f7995", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "edb01e7d258eeb3e2bf9abe577ee7a461602e3b6e973e9497cc774b032498385", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "c17c3cfb87bf013fa9f9f5af0df27550569ab43f47d96168408d0bae91ee5557", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "d75e2814cb5ffe86224be4f0bda80f189b072e8a411224309ca2a4100f834c55", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "c54b392bd375e0402403006e8f47b02da79252788de950d9cc7643a280ceb832", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "3d0d1db61d027204a019bf5ae30f5d42bebf737a93746b9678a151356387c8af", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "5dbf7b4bc94a78fba0ab404a436ecdecefebc9f245132d47177133668bec28f2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "99ad58a3c59312930f9d603f35bd0ad7c38d2f8d2aefd1b2d2c9f1a55c614702", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f2efe2f10d735853d8348d55ba6959397766d4574660ac0b841f738f6bc439a3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8464973c38be319f35867fdc98c35bebc4e85322e01dd282e0edb8f92da73c1e", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7a54040679b0f69d980e6c3bfe3c3883e3adec7ceb7806cde6d01a8289b35483", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "e46c1ef857aae2591a866c3204b25f584eebc40a85ddb86986d42fe9d957b381", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "6f8cd5d0b0c710465e769579045e5d613db225ee6996191b32a98b96ebf52b56", @@ -19645,16 +19645,16 @@ "T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "482ecad68d6d28a581214d10ea2417fdf73e8617e3024920a038ac55fd03564e", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "434be2b332354581c0d24fca8f25521197b38240369aea63ad309714fb23d3f6", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "e82fb145084b94b98f73b3cf418a21ad02d34f4216178efdb0dfdcfca6c215b6", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "1128b670979daa695f8d2870084a28adc101d4067a73e26621cda4689d0d1861", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "1369b51ad9b62e9649cb0d39edb84aaa4aefa1dc592dc6c8590acbbe0a6ab5d7", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "d5685087319cf93974e56ff8a28982bd516ce532094b52b825625864f213c903", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "47b1c537ce709b456f354a642644e7a9c771915a2b044c180c402559d85e87ee", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "167c962b25e53bf31ab7930be43f142dfa0b249f6dee71944faa722b8565dfe2", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "71e4f27badb2895fc6b4218db54633806a2e458cf81f6532161857a1e300c4b7", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "f170bf30d0b2f0336174fc382eb85a24aa865e3f41e034a3ff83f6226a216a6d", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "c7f49a62396a618959f6300335d7cace43e9408af5158c026a6c4d56a57b5763", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "67f9c8ad8f1cf64b2e273b1b7aaaa3edaca4d3eb67b000888df1387f16c245da", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "fb224dd222492873dee0d8d2bcffe1d40077bc90de5e4b22e4e49f8e61ca8d73", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5416650b5da06326448dd43486764735602e628eaeafb723713fc2f34b306cf3", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "65d44f2b11603f835b2614d8d68db1776f1c69ddab551d3d56372717de08f32f", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "31df1c3f7d0e858da5d65fd8db2bf70940938b78f5ae07f3b201b55ce4e658ed", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "18a17e4c3bbdb1077bcd025fb7d15d59df3e95e2be27d9b384a11b5f5ad1d641", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "47f11dedcc862bdec73b80d339a576ddee5f05d02381ba6f793b3da626413765", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "0cb5cdf80feca9643775c62a29dd76c61e813ab4186e744734239e82aa563221", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "36dbed95a9ab9bafaf8ce76f952f553d24529d1ab315666170d0dc6c33ff5e54", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "9d41be6d1db67775f6843babbbef26c4afb8cfe993b1b165451b91346399d952", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "fcaa4d4e6aec4cd0779c0c4f19965f79d298e6375c2698175304bf47df273327", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "41345f2e05057f47074ecac14ac6aeebe374331adb8948c018e8337f37da3416", "T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "9a913911eca91744951aa253ca4509b85aa6fc9903ac11d674325313b8d71c23", "T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "07e11f6b6a9ebd0dbbfd22a8a6e6dd7fddbab9ca070bd0c5e257b9a988170c5b", "T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3e7f7ddefe70bb3df975259f52b42fa3690fd47efebbc241be51f03a5baed482", @@ -19750,14 +19750,14 @@ "T3T1_en_test_msg_applysettings.py::test_experimental_features": "b79876b8a8b5905854c5bffb0a96892d0203f6fe2f5a0a844f7a27e95c13b210", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "3ee3a169fe24b2f680f17bc1632ef401523359dacf583a9bd0b899815a7c78b6", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "509d17df0ed9639b992e36ea06a2f402e99e21934911877a8e6ff594ed928b83", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ba6d78fe71d5eb79a0bf369e65991cf87a49a8080a68b6685ab85133f078b4a3", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e6ca6027f083fa20305a132d381246d4d7cbf5605895db82bd0211c6749b1475", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2fcc73bd2798f5ee55559f1f2e4f1a997610d9d874b448154c10309af9bfe883", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "aac37bf6af00a4acd9f35dce0c891fdbd83496a1d8775afcc1e32c5868d7acbd", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "5e90d01959497056308ef15eaf40364a4eab1b57d0d3f60d05688c0a9c3cb230", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1994e0bed87aac2b8eb966f66188ca85dd77ac80c679188c2da7fde1e9997a46", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "45d027af6a3c0f03313463eb391dfe992e0b6860d291f1a41ca17a64c159debb", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "39ed954ab096f743eb8b62836cda8625dc9ebf2159c2e5415a644d0a71cfbaf7", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "c3251955597d595d302087d00bf303948649c8e31dfbf0097d9b25502be5809b", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "202f4c127bcdc742cb356b36ba5772c2bd667c11a24ca853de262965131ce435", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "0828528b266f6346f975b46f0d0f722370544a5e5f6b1e85140efe5199719889", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5dca67467feb7f958c41fabdb67ff18837518b8a4695e105159e8b5d920e2527", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6a5d2d82f1263be0dc81b65a52aa384f3d4a5e3ab537af109dbd9f347d83345b", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "90ae44624c99e283d551b5b69346a155565584ea56fe0637009462d88ae258a6", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "449a5770dd8edf5c4c9529fe591f9a5f9f65c75d4a717cba5d51108d42813ab4", "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "396abc86b062e562ebbcd7cef8c01ed64d081beb3d0670d1b0508249c5a49c94", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "d4bbb98293f4ca280f8bb431f284fcaff39d5ccdb7d69e0452523f2926ecf2c8", "T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", @@ -19768,7 +19768,7 @@ "T3T1_en_test_msg_changepin_t2.py::test_change_failed": "274521520fd82e933e620019913620460210ccdc35e6d84a192a81c32320fa25", "T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "23ec3b779bdb57d14c902743b2b788da06fd6c5ac20dffb83b5f6501c33c5359", "T3T1_en_test_msg_changepin_t2.py::test_change_pin": "e6a0f9a478590386f0e96f7b370debac2319f074a506fdbb21070b1b886db7b9", -"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "72caa37cac2969545842e0fb10dd4908ff3e0b8edc2aa43d6096da496682fb64", +"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "57d3d9d6a0db3570832caa7ff8f931c461254f2d0e7db3198e599070eb9b5a27", "T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "b2c54b8a45013e956dbb5505318e026cfaaf4fd0a458b964fac3f0bce31c5ac8", "T3T1_en_test_msg_changepin_t2.py::test_set_failed": "0c52dd014b0672ad38dc32f56f934d5e94c1fb18566457afee929bcb98ecb1e5", "T3T1_en_test_msg_changepin_t2.py::test_set_pin": "7c1a64a63245add49190544310547b8d054870cfa9d62ba53ef025e1d05a61a4", @@ -19781,7 +19781,7 @@ "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "72827c95bf206de735894b16b1f63742087990073535d4994584462526737d7a", "T3T1_en_test_msg_sd_protect.py::test_refresh": "727e2fa36ae8cb429b4b0330033a57d858b09e253c8698097e9f8ffff85bbdaa", "T3T1_en_test_msg_sd_protect.py::test_wipe": "d414c2f06b267f70d43326a59b0f3c641fbf2a3153b6dcc73134ff650d980421", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "f113cad98a76d543683da95e37143b93f7d485c5a83185de5f18e0673cf98a18", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "81b91e388ba672e4e2ba1ce26e90d84fdc3b568b4ab2e54041406a0f6539a0dd", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "8c948210185ec3c8e3036fa7b04e41e2bd0101fb14a943aa8a838364d002ddcf", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e90a8f3008a58fa6616911b63dcab3bd74713a355c92e352686c82981aaef5bb", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e90a8f3008a58fa6616911b63dcab3bd74713a355c92e352686c82981aaef5bb", @@ -19803,7 +19803,7 @@ "T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6fc7096bd5c259f3bc451ba068907a387eea15afd88d91c4e479d675c0a9c433", "T3T1_en_test_protection_levels.py::test_ping": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", "T3T1_en_test_protection_levels.py::test_sign_message": "b5ddaf347412ac0fe78598e033bb31a96a49e8ccbe2b3ab6ea59f0685552c28f", -"T3T1_en_test_protection_levels.py::test_signtx": "af25aaecbcdca650764988c57b1d3a3975051beea5253982c3e06aabc5e992b2", +"T3T1_en_test_protection_levels.py::test_signtx": "fec37a462e8e2d2a6b7766340ce03fdb79a352673cfb72db327fce68804bab51", "T3T1_en_test_protection_levels.py::test_unlocked": "1cdbff929b2c72569905d20c9be63f413968646b2f8607ebdfbe34c692762527", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "037136e041707416dc09658b87366dec8f5f42d223fda6e65a91c02fceffdb7b", "T3T1_en_test_protection_levels.py::test_wipe_device": "6ee69aa8832a49a5b05740fb01c7a0297ce703a9880a26615d4ffa7394790ea0", @@ -19831,38 +19831,38 @@ "T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "73a17808672768cf145f7c2d7113fe57ff8fa74079bbec28e399ecd72e0c5495", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "05e14429a238cd248b620a0244448bdb7914008a6267c4c474cfae96c43321b0", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "a54154c8d8e510b7d79602442069e55819a70c494afcab9fc3f4288116e69a61", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "cff7ef84d14481b627f87e8792bf2ca10398535d75c117ace3f2d49326b45865", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "2c87b196e4240492e4de9e54e4821438c69e71f1e431bd5430f06a08bdef3ec3", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "fbd8947da08c0f6c171ffd2abf70c0caa65048c8871d8f90be97b68519fea49e", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "9d3230ce372678577a47ef597eea040cb3807c7777189c6ad2ae3abe56325641", "T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "f284d6e9b0461c58d6c83c99792ed69b22192d7376d881bc33a5d58474d90c69", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "494e458ad2db0110b953b07aec122210eaf1a23110cf91d861ce3e6e2eb58696", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b621650fb681c71afd7cb7b1815624fa436cc4e35df104f8846519a4b992fc67", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "06b225e8ca31b5d0d614d7888cb264027a6d03838108ff9e0d372bc40abc73d0", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "8efcae6c7e9e528e354227d23a67c94857e6ab64cca06e83f14a0862f4a5cc7f", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "c541f4f3ad5c915806358f2ca71dd0540c63cdeb0fcdcb39026fb9942985423c", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "1ecbc21305caa32794da8732c25fbb2f98115b9679d111a6574a5fcd2619d2aa", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "671ef8dafb5d59856afb6d1050f691da139b5ead642c01b7278e418bc4d87b44", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "abf814114c47d414b2f4d1ff70dc78d91e7e8a4d9392a92b6c7481a50175eb45", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "fd1d3f14a7164c017cb737728107d407cbad89df0b80d50e3551ecc836a377e9", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6432e6abbb4587898917c2c646d72b128802123d129e06abb73ebaec9f7004c1", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "02f6bba34a198d624816a14c324c6f63245c1129f36eb2f0dc4b2fee9c11bbb8", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "493971993419b02ee0e7824f1bfb693856b83f346ab7199469b5a877de1e4ed3", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "51550105866ea84ec029c5d57b7d209b9597cb8bbe4187e505fecd62a32bbc40", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "a4456d54d53f40092dc391381acb2b967f4cc79092143df0f1a1809d858813f0", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "1ee31a9ec14bf206222e1607de663e20d739b329ef5006234ac21518da4a737d", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "67d39cf849e40f2ebf1a0e96d271986336f641eb0bb5fd43e753d9f83c2d284e", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "9ed2a9476a6535683ad58b8e75e40e3644eefa8bbbc6d622a386f55ab0404561", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "0e9dfe65652917035070e2ccdbbd42e6ce97ac0741e3ad4e51cf676ea97216f6", "T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "fd53ad849976ec8ed5bf5d09286fb4e45fec06765f9b3ac6d8f03b752ac42ae9", "T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "224d2a62f362fb677de27f82c68b28c1958fc8034fd0a6556b29acadabeeb79f", -"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "4ef4d0fd5e36b2cdfafeb04fff9cecc9917a6c8bc15032388ab5d9797ae1e8e8", -"T3T1_en_zcash-test_sign_tx.py::test_one_two": "ea4ceef158203d9287e3e20f4eb08de8329edd7f5c63d01bcdcd7a0d954d1de9", +"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "de8a5381458d9b59633ef115f63958e3739bea9cb93b5f7838081c1eb50f9eb0", +"T3T1_en_zcash-test_sign_tx.py::test_one_two": "1c6b17ab71f882b40e98f7485b2f5beebc00cc1b49cb55c2f48648e3b000d10f", "T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "ace5fc8479eb2fd864302f8a10e3e2e0a4cd528be9b605b1b28a5e0b44b9a857", -"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "990a3a835bf0d578c71ec160624219784ae9be0f09b524bd1c1706d17bbfd549", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "ee639ddb8c946c63e435e1711e91ffd321339272b514c8f493556cf02d65600c", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "4f6a46dcf50fe7988f21f49d4c89bade0bf80cc45139f118a2a1ff298e5424d3", -"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "41e3ecd426e7104d5af352f26acb7053511efb08d21e1fa16c9a578bc5cc8767", +"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "5505756ee32e9eea8028b317612b8b4218376fe91736d64df75479f9df409e9b", +"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "defcd77f304993643ebf79cd88705c77a384328746cbbd12c145d823e70b9c01", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "2e9991ed370765cf7a8417545e65038f0b862cba97c2256ff310bfcd804824e1", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "b1509182dab307ff5db55745f7ead87428dc1d872bf66a9b4422b8cb195a265f", +"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "fa078d3b6d61e111f44e39911ce852d44270b2475f78c8b64967fa5f8e1c5e80", "T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7873587f7412f7bf5c44d85c9a5fbb1fe27f013070bc94ca724bcbc4c58d70a8", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "9338f7d1d49eaa1d12c004c4dcef08fff16c8eabca1bcb564b1cb2a9c318de88", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "01d1aeca5ada2eae30e952a667ebf0a04e6b11837f3038eed0f7002f4efe1583", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9b4848601fc95ac8e72bb30b55460a995ec07203f2db62166aee1a097d7bafc9", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "7b7ccb33fd319e3edce20712f82ec7345baa08846909b70f150a5e85712bfbc8", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "4f10696e8c848e8c85788d777fe40112c049a4324544857e7ff276cbba19011f", "T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "17349dd4fefea835984c89d5c86c4cdd465d9225c8e444cef2513c1385a58b3c", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "29174478adeeae88d31be71de8b24c2bdc85edcaf7b7213979d5642ad91a994b", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "a84bc958e75db85e832076ecd219f25ec26717e4926baf568d6c471c7488a6a4", @@ -19877,17 +19877,17 @@ "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "01caced5a8665434992ab80f3988dc3d968c58b02be725ea1331c9a2b6ce7ed2", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "01caced5a8665434992ab80f3988dc3d968c58b02be725ea1331c9a2b6ce7ed2", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "785bf8d74247be3cc558175201e96f39fdc073c3ebc89cf1f387a66f3ebb945a", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "b18c7bf74cf1c54e6d3350335437204b320ac0eb52e54232882461a6a57e0f9e", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7718af17515b92b115f40d3f2e9515a941b0db447ac65a651d4c00aa27cae5ac", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "e6b0675a232ba0debbb41da33dbbe79d249c4dbe7bbed1f521647fe8e0dbf2c6", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "351c6ab53bf87d8b0e6a076a6af04b9c2b42884a09719213d4b24a2f4aeaf248", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "123338351ea7e58c980a297d431885d35de6c1d652fec9c42e7361c66326107b", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "123338351ea7e58c980a297d431885d35de6c1d652fec9c42e7361c66326107b", -"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "49bdc73ea647c232e22bd3a581ebfa82886224ea4431963fa871f51f58af4d6d", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "49bdc73ea647c232e22bd3a581ebfa82886224ea4431963fa871f51f58af4d6d", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "6d6b5fed5dfed9e533fde9375ec0d5c42cea2cd04cdb999ea618fae3dad4b079", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "9223fb9d2f3a2396e3e36a10e4870ea20addfd868c70f352efba1462251a0e5a", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "fcb6b8ee98887b97e5a1cc75f6cb7b7ed0296530e5a705b8ab08601595c35c5f", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "1b183c0576da9d3fddf6f1464e7b79721e7c88c1dbdcf50709edc76fdccda8bf", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b600bed44cc8340cdbbf5236a7a617a53dd976468ba4635b29484ab8b6fa8e3e", +"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "6a8ab3388b1fcf677dd84c05c252ef2b3ae93ee95188a1625d1611e18ca6a32a", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "6a8ab3388b1fcf677dd84c05c252ef2b3ae93ee95188a1625d1611e18ca6a32a", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bc58edc3a943f5c407c7104048cdee73f84f3a14abe13ff442b785c1ef03fe10", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "31a6482959741c0ea2e806d8d7ba4e96c64a9820f435f9e63ae74a0fd17cc93b", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "93deed478b96daacd8168a6914fa2845543d40ca44d658b3b2bf07080567584e", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "6c5cf00d0edb746af249e4e921fb5684d7fa1ec123f509eea965908b7c6b6b2d", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "584ac0790f3953535188fa780d548327d8bad81b8d9f20c4a376aab55a8d613b", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "444543a07ed75c851985b01f37dcb83c697d5a3d88427e29a55311a5aae7ec5d", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "0a51d7c5dda33d05454f5e0920baf3130ae818f8767871dabd8576d3bbf4ae41", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "e97e64b413bb357433f33e187a59c8719c1920a228fd05cffd3319ea188290b1", @@ -19924,8 +19924,8 @@ "T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "87881528b57512dfd091abc0aeefa3b611862ef8f128e13f085ff7b07f73035e", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "69727c28963a101d25a75700f909e68220ac7810bcc351534595fb10ffead697", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "9a62f397f94fa7a8e8c94838fb7528eeb3508dde4da41f4be97bfc7c67b669bc", -"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "2a1e631eae3c3005ab01dfdc449c17dfef08c01f9b22367a1b223a180c031b04", -"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "32277f407077f911240b951b2013f90478442910268e18c4e0b965c802c33c6d", +"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "2d9b8d5d3fb5400bbcee37e5ab4ac5a484c6fd2ecb496a691cde62f6b3aa29a5", +"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "273f45c9c055ad52738f1927fd0f6b11e6c81a9587b6e60c3ddabf35885e44d9", "T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_getaddress.py::test_bch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", @@ -19984,10 +19984,10 @@ "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "5600eb5348e3c5c8d46eba952e99c3193ee997d4eef5764ad186bf9270a5d38c", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "0b8cb53e460a3b95f7eb2de8551638cbec3e4aca6217be79447ee47838b18987", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e29e8151a2664fcf4fef41730f5be8b0f378a5d1c8a336e17058a9641d38cb6f", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "168d61627a5671e067e98d00f7fe93c85a02bbb521085886f55251b366cd80cb", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "9bf9021c753a1c8e16f60e675cd733a3933fd83bef1b8f6753cdf3ad34a76bf8", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "1789fd74f928336d8e5c0d4d9d4df9cc2bd40b56c210988f14ed8fbd6e5c46ae", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "6d74b473946dd25f4f3a19379957c7c7b4d74fd5aa2a2049a963f00a4299a7a7", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "d4fc20b6f9d608f534b9388d7356b299fe5b43f053bad259e9d1713ff9000a4d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "e514d155df4e3868bf66cf7d0ff089032d1b5071da73055f712e935187932496", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "a084d0756f569d1b5d0d125747640d75af1320059a6f7ca9ca5e68a37be5f594", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6ea5a3366a0555bf66223bc9d8cbe9cbdd96dcc1b9eae8b5e34bf7220594ed35", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "0169b1338a9324716c86b9d1c40b0f3b3b02bc09f3f143ca5f6642d0f4f47095", @@ -19996,14 +19996,14 @@ "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ace624549d23f383ea3558df9b90a5faecece9b75fe63dfe4e625cb9caa36812", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "b211b8414780246f2e8fed19dd363d6a855e232c925985c9529167a16e0c4c17", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "93b6ee1d7607d27547f19c76c822a851c4af0ddaeffd66f9fa628aa38eeb6301", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "7731a0bc98b72411e0885440c2e8bda20c42e3f288ad839b772dd9772a214b5b", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "b18ee6f7527b61e7ae8e4f9251f35a984d8a4045d6b61d8e8c449dd9b8f29b8e", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "5a89d837a2c1f16fa7a5832ec37bd29d44936334eba9a72f4493daf1ad0bb174", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "da1463f62c06dde86930c4cbef7c91cb91f285596fd8f0f154104e49b253e370", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "f5493d535217c7522595b6d6b4daeef2b14d1155340ea32eee7ae478c56da1ad", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "29417014ddf9d0f3d2dbc10779dbe410e0df9d3cdce1e4446213e28987f764f9", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "791aabd5283c2bb3f3cdd1a80b2282dc975c8f891cb469b379b4053dad74fb78", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "f7daac6054b8ae57acca23d85368f847e5a77776f3ef3a9d998359da652aa238", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "ed63f7027d2a9d45c00e2c82758e5d2af62dbbd57d8ac7bebb0be8710a997271", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "075eadfe8cf0b0a3ca266020978ab11cc701ab23761abd15584d3904816b5697", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "05661e54bb15c108193b3325621ada5685eb714c9a07fd19bac61a15677a2036", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "4552c65e636080b5859ee482a66b9159087cff9e208c8354a6617fcbfaee1397", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "5a1943a5566c3aece9ffc44d45fcdbcf01e3991517d8ef7db42357238b0b2687", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "166dcb75c6c5255293e131a910e26e78e31b4e9d35daf02f9c23b12066f85279", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "5410db3799303ddce376c6b671697498aef43c6a1b70386ec12a1a35f3a29c2c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "4e7f9ccbace56bc49594258977cec9ed3a66b3cf0c84454ed23d32611c7d0fc7", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5fe6577d3b54e1bf3e5d21624f611dc7a5b50f5243ccc14b2cb8156d7ea51438", @@ -20053,28 +20053,28 @@ "T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_grs.py::test_legacy": "03f09349e1f6afe912b62510fac72f6c103c56a71e9e3ef7966539e70e3e447a", -"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "001dcb765ddd5ff3904ff65e65c050fb447cb066bcc882d9f1a29f1bd354dbad", -"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "5621a4f3761adbab6d61cb5ad5478fd70ee3845fef4b211e20698cbb365c9fe3", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "1118de9bb11efc7d712458fde44116d9eb9a2da6845dbfac074ee72e28cdce28", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "1c99cd5ad4a817c90f8b9afcf58ae3264333e3bc9f612c34d4f62f0a713648f9", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "bdf06ced16d2069e99faf7ffa30f336a9d7f6d7ffe1b88b23fb3b26cbbc92281", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "12227d1c4e6185fed809ffe78f98c9166b319598254ed1a80a98a3a49aae82bd", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "e02683289ef1b33aeb2398f1145c23bc14854a1b23280b80c6782129b00946e4", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "03bda6dc99d468150c9b2384532fb84caf9b0fd19b16834e4e742c34c07b3cb2", -"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "5aa405e09f52335e3991376e49a6be383ad82032ef947abb4ea3f3cac20bd243", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "b3fdc845b5d6cf031190e0ea05680fe66a0842a21e7faba940b557e31e605477", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "a26fbed18f20721329f4e9f6ba987663b4a23fe98912986586f5bacb18289505", -"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "0e4757f6be3ecd8cb967387578e700975b204cf73f15a6dc364ef4cb62d4063c", +"T3T1_es_bitcoin-test_grs.py::test_legacy": "245a2fc4974b153d3ee6d341b4fa3c6148d2288bb1bb4b1566a397a69a7e0da4", +"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "11af98d27f4050dc1382ae588d8e9f41ed58a183d22b339a937a176dca7fd92b", +"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "3a147e0e405f6b954c07262d7e1155f3e26a3f504ae42c3c135abe080d0c6a33", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "ff0ca8466d8eb3fca1810a423ceef9c0964e0e123637c5ee74768e7cf7317c23", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "841ef0c11044d8ec01e0ac1d35e02a453876496950ed48234886daffd41ca1db", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "0f4a7b2c30d62b7327bede1f25282712093dd7c0c42e1bbde3b1e9fa9bcb57fa", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "af5afc3cbbcf1f0150aa5c4a4cf0a90c7f874d83cc6346fccb384209189bca0e", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "862570d5d35f82d5b09194b59800c19605ceef244b3af296d4473f71ef0cc87d", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "5b0ec6c078f09a75791d394edf4a34fa0c140e8d436378f532d134eb445443f7", +"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "55316d305955203a02af1d992e88a808b1dd27945f303ad957a0e3b7dd50adee", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "f57d92423058b5e5e7df138084ad5d04c640e428316c43c1420401a40e6b1218", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "5dc79c1233e010dac9a4d82436ecc39826d65af5c05f552a8880bb0e4b0c616f", +"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "3db1ad1f60237be9fd5256efe8c0d3ac30408fb2aaf18490e4906e9a12b32eed", "T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "4a53f46bbad5c4e723b0a0476fe60574a508fd4ef7cff2a715c0d82792ce64c6", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "a5e66bca535d21bef02f7721e916f3fb4883e06f24caa5b4d8253176bc4a83ba", -"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "f5b37a14f1fa5bced379c2227eacb410a9b6cbe6476e59b73fff4fb0413f1f97", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "df767b67065b8de42bf4734a66d49129f42eeb329212f135bdceafb40edae2f5", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "0e87f2a32ee9c238b614832627724f843b8df67f353552f2398dfefdcbc3113e", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "c2ab7bfc8b6dfd8c1286c773148febed1d83cdcfed6509dc6be1e98212edc76b", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "bd96c94253c875dc0c82486e72b73bce54b67617a062d9b42b52bf284dba84b1", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "c8bf1b9f1d81f56d2936a7be879c207e5bfcc4f4bc1478b3579ecd40825ff6d7", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "61bb2063ece90399cac45f2398773a0a552205ce0edf536624adf08532e22511", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "e53d302d3beb05845eb64309889e569170480417e57bd95810e3406017c78ef5", +"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "8b4fc7d358899a72d6d3f239026e103077a181f9e1b443f6734a26e9988b4fd4", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "e52cc06f2c81596705dcabbf99554d701684be370356b8b707eee97b2474e905", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "66e2974b3c9b089ee42fac1bab795ef1c698d3c87694b7e071cfe65611ac8123", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "b29dfd1e2e43b2d2e449538c3818a3b369f932bce41517e3f1a4e68bcf9f27f1", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "e0f07488f95edb0994acb49bee806498cebeed7f358200f2b33d14a733356414", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "22bd5a08b8115ebe0ea6d02d4454ed27399d1390b55dcb7df85b8a7113454174", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "5632bb7838f1b02971476f6eefd0557bf22c56898ca937063e6609ff207c1d27", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "c0a5d79bbfffca5953ca2fa91117f5ef47deceff6b36e5bbe0fdff7e714ea779", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "3c07a233788c4193bbe6dbc4025c1db7ad7c5ae3ed9337ac3ae2634bdcca710c", @@ -20103,25 +20103,25 @@ "T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "4088d373ad8100cf3c17a5d3de310d607fc92d43c143d5a77b5ba4bea631ee90", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "e98899b8d8787aa61c406a8700ffae984afed1139f7761425d18712aa7086eb2", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "28ad3ee6a647c278cc42466140aca8cf8e8d2982eff985fbd2514d3e9f97e1ec", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "c797c4b35f2c7e17483b0652964d19e115d64de4d48dd1fa8bcf5ca3486b7d1b", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "a9cf7fc07015b32f20674c02d9fa7b356956e302a35f072d76fee1a16d647e9f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "2986e40cd08f7df6427138c16e28bc26c81db9c72c123efa9c8b1a7b32b64d56", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7fe876a67d64c3e950d647f6a0c49c09ab25298c040316552d8c3b04bb32cf37", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "5636a0da3f7fbcb52e989b1939c8ffeba91efaa0e8e6fd51956b0727ccb7c724", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "3243901fef37a45846841229769b538cd55eba439a2dd43c53f6f6e0c425c742", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "d9e89a070dd73cee65c9d29f3602b9509a00c07d10e5df0785c907c96f93e5ba", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "7f1c7884f3d139f0a4722ab82980fd066df76018bd80a9d705289c0bd0051d61", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d419a99f42e2ce9f178ab0be63f0b5e076e568dbc160158f2b59de0222fff468", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d9e89a070dd73cee65c9d29f3602b9509a00c07d10e5df0785c907c96f93e5ba", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d9e89a070dd73cee65c9d29f3602b9509a00c07d10e5df0785c907c96f93e5ba", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "d9e89a070dd73cee65c9d29f3602b9509a00c07d10e5df0785c907c96f93e5ba", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "e491dc71de5bb8cc08d66cb5099eddb78d6c01b25a6ec28dabf6baedba04d384", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "c4bd65f49a1fdd8a0d5787a96b239469898fffafb0794ed07cc0c0eddd457ed8", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "80684d967c615be06ef6efdc652281e328526bb19c0c9c013a87fc4a81485ba4", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "ef5d7a9063cd4e355cfd4455f4f0b0d381388eb0039452c5329ed9d77f6b8bb8", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "6683ac72e77f91fc28e716ee71c5610af5b0c25f25a875d00945a62bf1097a1d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "2f051fe36e2a0f25bbb3943b4c075b910078b73be311f9d42ce335744ac9fc66", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "f42a4575adc6a53b63cba44e714ba32882253a5d7a3cab8b1efa9248bf96a95a", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "e7ac56c430273e5a7d91a1da34aa794f4f3d2a76ccb19db40ab8c0a30a9fb7a2", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "a52f75959c0b1e1aca275afb20b6fdf1a285060b942b57cf945fa89374f369aa", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "0578a8b5796412b7ce0f53f851e0b34decbd8bb32edf08254f68219b150ccf9f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "e7ac56c430273e5a7d91a1da34aa794f4f3d2a76ccb19db40ab8c0a30a9fb7a2", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e7ac56c430273e5a7d91a1da34aa794f4f3d2a76ccb19db40ab8c0a30a9fb7a2", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "e7ac56c430273e5a7d91a1da34aa794f4f3d2a76ccb19db40ab8c0a30a9fb7a2", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "de961bb5571dac7566f17e5fa0934fabfb6753f2b93da177e96f9a5c793f1fad", "T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "df010f3bf4e1b88182036dbe76e61bc581818924d59e8511102438fa66295863", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "f905ffea80172ae54c5adb7b8d917c6c73ec4ba63b85090011999724a9bfd8ea", "T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "942d0d77c16eae7af830dcbf6f9f9585198da68fb6ead2a16829e5d97f4cbbbd", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "3ea3290247ce5086a2073527a5578bf052c1fb5c20e4a8a7aa68c5958eee7f98", "T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "42aa0d8502a5d8dc06849dd1480c407a62a4c4c3e1ce02038734a3a69588b066", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "3c616fdec56d9d377614dbbee8edc3d6da2a70d5bffd8f228fd88245722ad08b", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "2a98177555a6c04486c2ff4c1ab73e0020e7fb3a1a6f08680b20379ace22627b", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "2a98177555a6c04486c2ff4c1ab73e0020e7fb3a1a6f08680b20379ace22627b", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "830c523034b29d6d762689a8901528f4030253779aa4b68a11f55b087975246b", @@ -20168,102 +20168,102 @@ "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "739533b7337ecb9366b150474460689d44bdc484c1bb5df4b6aaf993a704480d", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "92db321ab564c89021dd51af6caa4c20090e87bd3f0ec8a997bcf18f720640b9", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "5b09f3d741663c719f7f6559bf67e826364e5a6eb3dc9919a35dffbb5311233f", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "707cc3987123f6b2823efe781d6127fabe9f21f2179c3238ead468ac3ac55a75", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "782239caa40a4beb190a844e6fa71949eb687c4e622e9a55386d3c9840ef06ba", -"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "f082b4984c7ca112669bc101944b034ea9c49c3397ff2bd73b3e5dff99f97483", -"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "f082b4984c7ca112669bc101944b034ea9c49c3397ff2bd73b3e5dff99f97483", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "5b04daa2fb544e1ed82989517fa5f5a86e765da05e7cee919af34a47ea3ad5fb", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "b3b88b2fc53374af242f45559a9e123ca90f033798dc08885b49d443c911def2", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "3c31eebf5b3d0cfb76b64ded551e8299664a0b1074fb3a9fd6f3131243fc1491", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "3949418841d8cc2f4fdd608b08afd4c7a1e599a6f189c2cbbede18232bb7c8c1", +"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "d5dc14788693963a6ec5a0effc130eeb1f59927dfc038e3459fb1a8ab0e7bffe", +"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "d5dc14788693963a6ec5a0effc130eeb1f59927dfc038e3459fb1a8ab0e7bffe", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "93c25247a26800cd8689920f140b33caa9b9bb70d4b791faefdc5aee3d5bb8db", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "118c7944cba589015060b7b2c014f1029f3ba9da69ec70dea9a8cf8fc063e0b4", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx.py::test_information": "5115a5c22e45eaebae118d7c2def9ca0d822b758ef7015b9d8c8739dad8b3abd", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "f689b69dccfd9df7a382b9a9cfa38f03195d91654dd2b0bc062fe9f42a5fc19f", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "6f4abe0ae3336da97ee09cbd43387ef297f242dbf514cf20e254a4dd6e444b86", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "b8d8aeeea809b862b11a0caaa4b650e1779c9eebc4fd228e1d24641cfd66798d", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7c0f3ddaa878076ac3cf613682f43999e9ac8dfff938e2d406f7286cd96e6257", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d51b7431766beee8334f579189858f48603391e8171324bb6a7d501b36530ddb", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7c0f3ddaa878076ac3cf613682f43999e9ac8dfff938e2d406f7286cd96e6257", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d51b7431766beee8334f579189858f48603391e8171324bb6a7d501b36530ddb", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "f780785f127acc7b447ebb254de2a260397bf90b8da7caeaa9238cc06760def7", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "24c3a0a9ea8b8f4105799ab36ca042fbc767328384a4e8b00ec0839dcb8ae8cd", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "fe24eb8adf0331fb1e0acc56731889551fc8efd8daeffa96be80296b8f040be7", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "a77d57f775f6b762cc32526fbf7446eb46b994e7b9e1b759b23c689e4a2fa3d6", +"T3T1_es_bitcoin-test_signtx.py::test_information": "c1a2dca6bd006116b537f6a90ee698d18ddfcf9be82887e6a2d287dd4749da8e", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "696a893a39d0142bf221dfc31302e1b0e75220ba35a8378373ec37d193b81d29", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "251409dabb5cd5fc59f6f76615b78b76839e4b5a8ea771f3a082ef5983c7b67a", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "6ae50c0cb44835ac1d454a56b0638cb2750e3d14934f1b5555d87f24332b4b95", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1317ef18960b247da4023d19a12db1e37e4b7d573bdd4db80584a973bfbbb204", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "8858ba4ad519aee2e770bd0a2a687a75a6c26e65c19fe07c4f107a76ed0c27f2", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "1317ef18960b247da4023d19a12db1e37e4b7d573bdd4db80584a973bfbbb204", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "8858ba4ad519aee2e770bd0a2a687a75a6c26e65c19fe07c4f107a76ed0c27f2", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5f08cf13695113d486010f7223fc119503263e08054b29709dedfd2151002226", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "ca73fae859d40e7f5790c0a895198fff3b52f8968f35de3d437762510395d0d4", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "a4622dbe0caeed35b7b3d213718f2aee3cf9c5473c0594c620ae497a86e36277", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "4a562afd3c27a456fdc75f5e954e4f863a2270ff5c20a515ff448cc8eab50463", "T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "29f5dbacb49a1159717271b18ebaa300c32590006f81aa8930d94406cdd2179a", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "7212960c448d7f291523176ae79a2d02b463285727d31de6f07aec4662bd79c5", -"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "6c55098c67c087d5375de900f94a865feea3bb61756698c9e508fa8b059c7920", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "69d2290b834380cf544ebf5f903d200d473dc9d42ffe6ded658f9475670af808", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "d1ba68cda6ce5d431f371a6675214ca6870cf474905dda069725d99ab781cfdc", -"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "b32fa82bb438ad783170c4998cfbc7c800fe0e60a1111a7238609f632b4e2206", -"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "d495663536711a4969c2ce38a8f841814c09a1059449d8be282340e74602801b", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "cdffb6730939246b5f1310d585044824c9853b0e3cea736342fa312241d29058", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "39f1c19b375d47662bda28550fbfae7ea71401ab562457fcc0183e8a323b4de6", +"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "e7754ee5bfdd1066c57d3be8ba8bdd2cd0cd4f61611315b4ad46b1b6116a6ceb", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "fef03b33b2d8cc5234bb016b59b9d847d3285cb69faf9b6c0af34c334fe465d6", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "3add21e4cfd3d9d9451733ecd88c3736b4b6ffefaa8ce83d6f8c62a26b41df10", +"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "e913d69e278ff518fca97eabbb4cdc567fee6c93567b2068444a0d4fb7df3cba", +"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "02456a8c2d08f3baa54d599a3858c0761965b9c7f041f480b400bdce5c79b5e9", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", "T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "bce6b69b82d286b02faab01fb63b42f5a5b621729e03a12cbbf21b77819480ce", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "6742fe65f5f9ee36a0dc137dcde00cb2b9dad4f1711566697ced06dd0d5b3e31", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "f894601f90cc09fdf5e519053e1ee52ac72d794f4d288323a08a7396f82e453e", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "f082b4984c7ca112669bc101944b034ea9c49c3397ff2bd73b3e5dff99f97483", -"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "b6cc5faa35124ba5574137a0c5be2f7655a290bc840127ebec11001e0a9cc19f", -"T3T1_es_bitcoin-test_signtx.py::test_two_two": "0688cb0707ad510036775b586cedae6116451d94f8fdf1cbe1ded82b439b8cae", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "6c55098c67c087d5375de900f94a865feea3bb61756698c9e508fa8b059c7920", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a178550fdd3926a6fa03f35c21a4bf8ae50ccecbedfad8071e9bf50a916c656c", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "4fc8dd5a094e580aed121381502d8243dc51d11fd1b1e593f10a54ad512b277f", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "dfc84e7f0b23780e6b30624ee1b9aa66b79e99b30d4fcf5cdc71f7ee7191c080", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "6c55098c67c087d5375de900f94a865feea3bb61756698c9e508fa8b059c7920", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ee11872ff14d55260dcb37020c37f059f92b31ab831bfc1914bd3704cf117487", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "40c0c6427ecc18ecc7c92113196d60a3b75cdd44950e34d0028e6ce6e41b5ef7", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "a55f966d2ce505777925a22052cca02a5be9c7cd9200548857090f0cb7101abd", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "31dc9d8f9bba385cf410e3ad3b7e907952909bb1cf2010f230d9c6350d123903", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ee11872ff14d55260dcb37020c37f059f92b31ab831bfc1914bd3704cf117487", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2044adbf5eb6ddbe51849742915a1d465a3a2637ff7b0b69869f692edac86b05", +"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "a787c76ef68947bc49000933118b6d3da9fbdd7fcfe46db00e2f692576515a13", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "e420399cd2860a6e32f2ad225ab5f82d95cd211359f98f1fdfcafc675cd2fd38", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "e20d11a6f61f069ee6b130484c98e2a880eb02c70404a4edb3080b37d81ef66c", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "d5dc14788693963a6ec5a0effc130eeb1f59927dfc038e3459fb1a8ab0e7bffe", +"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "f01d56fad8e8f45702f12883994f3a8db68323362dcce391279eee7311b81985", +"T3T1_es_bitcoin-test_signtx.py::test_two_two": "b6f63b4d0fa350565c870210b4a9233d8bf10f906bd199ffbdc0a94d4389b644", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "e7754ee5bfdd1066c57d3be8ba8bdd2cd0cd4f61611315b4ad46b1b6116a6ceb", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b610085031010706fedb94b654cf52c80a3b97ec64bdb656872a93aacc07efa3", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "44c9f767e35cfcbd51791155f75f173f579f37a93ae9ac7ccff958e9e211e8d0", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "8a7b47864d67e05eecc47b8b54e632ef038f2481aeb5f5558b4b7683dd83b90a", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "e7754ee5bfdd1066c57d3be8ba8bdd2cd0cd4f61611315b4ad46b1b6116a6ceb", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "96ed54d3338d0296bc6c9dcf33111463d374ec318c6693bdb0b3367f1189ebf5", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "f3158e59a8d3412d5868be7b829f2a85d58370d7f3d5a1f9f4ca832c40dae725", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "bbdc2e1f262514a601e66fc8dfc37cea7f4e7d2a182d5631b172ec4d6c0bd2bc", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "0b611d6e038ce75b7b4b65ce77c2e0b63cf4ba07c3ded85be66bf0f72230b67d", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "96ed54d3338d0296bc6c9dcf33111463d374ec318c6693bdb0b3367f1189ebf5", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "6169a97240bd48660c8690856cba328452575352a8ecfd26f1526604c67b06cc", "T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "1ae9c27ea6e08b1a1c477b5b92c4d936dfada72936df82d8116d1588f6863ac0", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "c930cb1eecb28b4176197a64888a4871d3b4518fd21d0662fad8d9a8128afdb0", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "e87c4b04ba44f20bf659c0d06d089ee824892996b8cc20c71f1980a75e6b288d", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "5650193af58136fb2f8491a7b761e69923c422cf70fe3b9ab5805599b6dc5b2b", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "bb28dae8d22af40157edaf48a72511c4bf1743bb9a71f478452878e406dfa2f1", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "72ca9ae692007b3b045827e1a36939a2458aca4a23cccd02393e1e64f9164858", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "0768f06cd584315683d66ce16601d3949c5cafda92e1677d330d9edf536c1478", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "21eb5b330cada416a1bad36653707f86cf272a966be852de2ea0374ff7d49755", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "ab7c0f7645364b60a2d49c62cb39a2c134ad05ef488e9a6d46f345ab6f009c9c", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ee522ccbd542f88929c1270212835e48424cf7bb9719f2e8cd460e9dce3f686a", "T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "c7ed2125e74108f0210247c69120761315c2fc269a523c3faaaefef4510d3067", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "9c2d23c6b61486ab781201d9a5040888b5e2df2a6ab384f0944bf40ee4dc28b4", "T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "d77ddc426e06558d7321af29d010ba3c6025fa6abde1bb0c3ae4b18fa1e013bf", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "0a632a593e3abcf0d10a8a667ee9ba90f61fb232590021128659986f38f8f3aa", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "73f570d27a97ed052d7ae4d8b3880d9b4221227221ceb6a173fbaee2db095a12", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "700e60fe1888565b4d8bed5711f81f4ab0f6983780b7939b106475d44d9fcb52", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e3f6b37eb11593ea97383cf7a63603a6a076085cfd10207de5ba1ddf2ecc9fd4", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ea75a37601df5ecec1684f020a2f977c1eff3bad84fdea24a2b5235afa27bf1e", "T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7a6454465b325d76916d8d614647e831b5759b6878c7a224c9ddebf169ab6509", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "0ab382e3cdffe3b98440b683b623ce036826320da459bbb3f508e38d038c140c", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3b59e425289680d0bc8a84c5982833e0676caf59a9d51f7be53a389993587bf1", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "8cd8f465d6642fcca3b4a6ad276190b02b983645e80192a62ed9fb1f7cb722ac", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3b59e425289680d0bc8a84c5982833e0676caf59a9d51f7be53a389993587bf1", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "8cd8f465d6642fcca3b4a6ad276190b02b983645e80192a62ed9fb1f7cb722ac", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "2a7f4356bab5cd8dc3d707018d31f4821473002aca2d172e7c0d775e1d88fe70", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "167e2c35c01f21685b3355d7808c892866cb9986eba7c41d833f329b5f692562", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "af7a96e8b23639ef79f47477819509f4a8222c5964002ac0a2882e09ce4a5bc7", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "47ebadb8e216cc7b920312fe4d145ff626f48d6de8a056d6e6ee42873f15cceb", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "af7a96e8b23639ef79f47477819509f4a8222c5964002ac0a2882e09ce4a5bc7", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "47ebadb8e216cc7b920312fe4d145ff626f48d6de8a056d6e6ee42873f15cceb", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "0200b771e0f1f7d9b6694438b5c8f5a2d5bfcda91dc049d3a51ceef4b14241b4", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "2753bc716dedb49437daa9c00ebf29767488b471081a7de97d67783841063aca", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5bd8aa681e6c3ce3da5938c9537f4ef7f9bee7901f862c48e4016a9d65dd5653", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "2f1940d90b7788ea352e66a0e5478d24e4cf67f84e605329fc8d0bda2361a664", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a1e607402c38de58fc383936d984d4fdd17d10b848c13c38d4617237b87d90fa", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "931a7c8a5db582896bf069475de32cf31a8b5759e0123aa29091d825d49668ca", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "71c6c8544bc4c806fb8cafb891595246fa14ebb4d42925f9da2891be41e85061", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "bf66f2ece8d0aecd48de9ed088d1af1757596fbf5e45d60be7fd2cd9eeaa6afa", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "fad1105c5103b2a84405567b196b5aeca7ac3ecccd445697cadddb11d9b132a6", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "092207cda753b47ec6986353c8a391994a7fc1b96d62ee17e7601d15bc8d64a9", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "d7ded47ab92c7e2bdf3550f85d0eaac36bc32299b0774242a98173c4a02833c3", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "c836a194217ff181b207d280ff6061187e2e77c03fccaa76756b0c8a17c95142", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "11ec7fe7a7eed281ba9275b22748a96e8f0e43c076131915b1846c647809886e", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "5d92afbdf1f57775cb04041957397bc6cde5aad9534f2a7a6231644f1ae018b8", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "a285b3b4bdde17ae6b80048b586908198e5fe476b23f189a185d176ff242fe72", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "a285b3b4bdde17ae6b80048b586908198e5fe476b23f189a185d176ff242fe72", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "a285b3b4bdde17ae6b80048b586908198e5fe476b23f189a185d176ff242fe72", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a285b3b4bdde17ae6b80048b586908198e5fe476b23f189a185d176ff242fe72", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "6fc01a0b6bffaffeea410a4e6e2799f18ceeaa7a266b450775e716cc22d1961a", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "6fc01a0b6bffaffeea410a4e6e2799f18ceeaa7a266b450775e716cc22d1961a", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "6fc01a0b6bffaffeea410a4e6e2799f18ceeaa7a266b450775e716cc22d1961a", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6fc01a0b6bffaffeea410a4e6e2799f18ceeaa7a266b450775e716cc22d1961a", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "1d398545391bfd6b705e4497b028b1cffef8490903491e766893dc5ace0aa89b", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "1d398545391bfd6b705e4497b028b1cffef8490903491e766893dc5ace0aa89b", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "1d398545391bfd6b705e4497b028b1cffef8490903491e766893dc5ace0aa89b", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1d398545391bfd6b705e4497b028b1cffef8490903491e766893dc5ace0aa89b", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "5e8c112c058e8f47088c1e2a38c4a34738da71b9641ded14ce31d6873d99cd9e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "5e8c112c058e8f47088c1e2a38c4a34738da71b9641ded14ce31d6873d99cd9e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "5e8c112c058e8f47088c1e2a38c4a34738da71b9641ded14ce31d6873d99cd9e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5e8c112c058e8f47088c1e2a38c4a34738da71b9641ded14ce31d6873d99cd9e", "T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", @@ -20282,33 +20282,33 @@ "T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "3cb825db93c8f80bca6b58882532f4c71a2e3756186d3f2cf71c8e91c3e8f9fb", "T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", "T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "6b7369f516e61fef0b307885e00db7bda8920ce1e980689bb8321c5b3fe59781", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "36426cfc9e0dda2f810d488a3724db1cc8b4470b43ac356eab9d7b4b02dcbcf5", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "c373593b4b5594fd9ee35807fdb99e1487a1d57895e55abca5c262ad76040348", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "2f3a59e44206a5efb37d89d403bb9809a36a155d5f61d2bd8ee7be7774259b46", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "aad59f6514324a5c80be3579f1b26467bcb23cc026686b362111de9a6fa0102f", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "777ab7ea09c687728346090500e625677a2c549fdaa1c0f375c437f63ead5239", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8e39ff902993ef49aad6bf4117546b48b4855459a95cd3faca7ecf28176b6121", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5ac220f4802ddba4730597ea5652d156a2b077b2f94cdebcba78c976297866c4", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "8fa12045619f4874e01b71cf88754f2132e8f18e37f8d2ca4acbcc461983a3e6", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "511ffab9ccfb2eb6f729857db5919cc0f171dab493f9b391b80ea7c123932e02", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "ee729ea7309ae9600f09dc0b3de683a81fdeaed47bf7330c0d1e8934567d972e", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "fba8f43aee384c8ea6c8e543524d727f0a4e3e2b5c245d0302cdedc6586e534f", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e0b8551e5646a1196e984693fb73c332c4e850a58ffff4e44cd237f2ad88627e", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "2a39674cb0fe04ab6bff687f574208f70beec202e3ce0f933f46ff773cc449b3", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "ee11872ff14d55260dcb37020c37f059f92b31ab831bfc1914bd3704cf117487", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "b16908fc7db41417e79a51ef970f4368674f1ed1ddc55be8b5c96607e16673f9", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5efe6590ecd021880422002c3ef8a668f01ff45f3be62d65e16c09a003be2c63", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "b731c0087e0d81446f5abb3d23ba1d0c1a07556ff732b443e8386686e19f10fb", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "24ed1acca45ca08a7915ef9c12f5e42f89bb0e4978fc8ce87bbd94804a0b287c", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "737650143cae36ef83aaae8c08f91d51f174167e3405ea61e37ef5195bf58678", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "77324246b4a9901f95733b2dbf64e005223181afb96c0be8d726b7aac9ab66e2", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "6c0d02bcfc3762ee313c68b43cc450ce3b882b4d6452cb604c3c9a367123af7c", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3f17b0366e74f28689e2757cae9380c416453b7a9c8fcc52f7796f0aab720366", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f670e3b39fbb680189c2c71fd4da767600d440be2dfbea8b47131ac1a58fe9d5", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "2e3ec7ac608d9304fbdf5cf8784c2596879ce8590b9985cd4c04543e59bc62b0", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "08e799772832d2f2186f6f0df4767ef7ef8ba63845eead5ecf11b216097fcfb0", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "891007b46a93a7e2e15e1fa102876d1128214c06084bfac98887324dd48af020", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ae4b09339b9615a1f552b499a8eef20ae263c11f33c1b3bc8bda8478105f1513", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "1243ad6694444f8a39c43403881214d812248833d1e369cfd97955361ed1335d", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "2f991f229a2bb48847d87a8deb7202fdfc7e614570d22b76f34bf8ca279b744f", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0ecf3327ea569310ecdf13f1fc972d4557cc5b27b3e4d6a8fb530c2898b31944", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c6404808d4dbef56d187462001e55853c1ef08ea6c9fe43468c00e3b2415b347", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "0be227dc68a37c80fa6b412ff62fecf9ae69f48be3b31564332aa0323f190094", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "96ed54d3338d0296bc6c9dcf33111463d374ec318c6693bdb0b3367f1189ebf5", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e6f79cc491f4d015ad846b7bda2ab995f34871a0ae44e208789138c4b5cc1684", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "3e00080dc3d43b17552c72ba588d3b04c4d3b59a7d988924465316e91a844e0a", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "cd57b2e604ab0779d22ee277842383156cf8a2e4e5f4abb9d284d4a5be46820c", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "f4402776a38d1c79058a1d8b9b7ea376094a0eb11ae0bb20c3b233d373ab383a", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "7914b08fc4a4a48306bd1624dabb1514d5c242504b59496cd3fb17d84f72cb6b", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "ccff47849c7fdc4958f113da9de62d56834438af6042cd6e0b0ddc399fcfa320", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "2696433775bb385c41395728c3ef5c7e08312b58d3e683c55861033ee8b5aacc", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "905b33d3a4238b027dd928597e71a0ebfeb165deeab7ac90f7945822dd6b42fe", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "49699441401b0d407734d16d6c57fd0a1016926819cac00e0d8153b6b149ad30", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "e75307a3d749c2ec4a7048a45086301fb612a12b4df490c5f7297d66a2dbdf84", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7378267506b55503dce1a31becb8820983b6da89c9949e664de919c80e06ee3e", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "fca4871491322d25293efc687ee5dad7e38688368f8fe78cb3b7bd6d85e47796", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "48e154977e3e6c4bb1700105db21ff40d1933154320c816fbb06a3f65fc7272f", "T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "e02c2930c43d490929e619ad6f624a44e7807ed91cecd6f9149c728194417f31", "T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "7857f87029a78bbd2b1424b7ff7a57ea8840a23d93b8c29fbc9dc0bb91ca969f", "T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "a60d0d2ac3fe9c85663fa100768beef86beefcfdd4b92c9b5a74af10ea05628c", @@ -20324,9 +20324,9 @@ "T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "e3f1276737792bc6dbf721715f5449c4c6400c659ff4d82190853ede7bc903d0", "T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "f365c54acc1d76d15665460a596809fdd830d9caecbfe8619173ca46969166e7", "T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "b5894124189637a6a54574e0e5f2d1dbfa5e43249c95cc8c047d1098b06e3381", -"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "6e90cd7046ee0b06067232770248229be2e891f2255355f71599541757a95437", -"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "be3ae679490a7948775f0790d52a5b2f1d31da7a1a530dababb625532dfb05c6", -"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "7edcdc95cd8f49b4b388e0e99a2951115e401b7da12ee14aae31660d1e4dbb0d", +"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "3ffcec12f3a89e1108ba82a4ffc22c700b88e36cb2fe8e3ad7e4be1053ba25a1", +"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "7f394ebd1caa73bdf2ef1f03016aaa9612f2f9c0a7c609a4c049a0b74227a1a9", +"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "348489355c8fb092293be4da8aa56ef57432c78b31db626c97fd598a5ca6d951", "T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "05bfb2c7e049973c2f2ceaeaa660ad190f105599e69f7496ddae563b8cb3ae71", @@ -20706,12 +20706,12 @@ "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "7390e110ba1b30a2b3ab8283eb8d344e2055c650346e702be2d8da7de345aa73", "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "0c8d14018fa6b34f54eab63bf394a4548d3a1263290098b5ec83186d4af58ed8", "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "14121a696d22c07e5ac41d4ce291430c3a5fa5e2624908e454a12ba0f03dd79e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "d374d7f1289df88e7ef357955bd6ec1e63e064085484f31975f750016793b49d", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "85e2ab49583a7d8a7ce623cabda2a6deb08c915b015c15fc452d23b5f602ff5d", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6fd94e07949e8f845123a16281502778f8674cb8310582e4cfa35d04de1a4194", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "3edecffa0fedbe6bd3e0e9bb206898dc7d038368da5ba384fd7a4ceee2d3d64e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "00f92c4556785118de93215b0cf2987f9d7d54fc7a1148c1705b75809acf17bc", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "be838233937880a5cebe0bd0fdd8b7baedd6ea21ab77cd8c578ebd8c10a105e3", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2c65f4768e0bd6a518a6dbf8a53776ee1e4f61f85acaf5bd481a34819cea4f73", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "ef18b69290b4ad5cf0de3089f61463c23341e424a8f0ba3ecbf9201d962b378e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "04d5e762a5cec5099a67a4f408236f4301e5d13709b80fab5d4868afdfa05463", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "92c25d5d38d94c1386ad907f3173cac6f689df935c7a7547c1f9fdb0240f41fb", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "34da2505220d24164ee44c6c05dbcf33d10c0005c233eef2830f2ffcdcc2938b", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "355da231bf2a068a7735e68325452e6ce875303177d97578155eefe11a263f07", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", @@ -20816,12 +20816,12 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "6800ae0b806730814e79ea5e5be0676d2025ad16749074060cae48c34a2a2b4a", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "6800ae0b806730814e79ea5e5be0676d2025ad16749074060cae48c34a2a2b4a", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "9e1c7e7fbecaae918f982cfdfa6e475eeb5abd4f74ae9fe8449c93b528620c2c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "9e1c7e7fbecaae918f982cfdfa6e475eeb5abd4f74ae9fe8449c93b528620c2c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "c2d47a1c0dd78b812db380150dc48fa47255f435431effb0ba49f66654795be0", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "c2d47a1c0dd78b812db380150dc48fa47255f435431effb0ba49f66654795be0", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "34470ce041d1eb904f0881cf584613b4c8e62f91583f86337fb71d045021d7f4", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "34470ce041d1eb904f0881cf584613b4c8e62f91583f86337fb71d045021d7f4", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "d5bca1c7d35e995901a01006982447192aad69241fcae4b280753b4357d6b390", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "d5bca1c7d35e995901a01006982447192aad69241fcae4b280753b4357d6b390", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "abef0446c44eb7f705ce2d38c7ab02e66564d3295dea8b8213fd8cbf23b86f02", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "abef0446c44eb7f705ce2d38c7ab02e66564d3295dea8b8213fd8cbf23b86f02", "T3T1_es_misc-test_cosi.py::test_cosi_different_key": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_misc-test_cosi.py::test_cosi_nonce": "62862b7c29ebfdd06b8ee54d72aac7bd206293422e04160fe7a81fb65a5f1350", "T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", @@ -20875,9 +20875,9 @@ "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "1b60c87eddc76857efa8228c178adf98c660fc5ef8bc43cd03b737ce6da4e814", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c7598925991a937654c7e847adce760c88c64a2bc9fc348fe7f5540aa24a3df5", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "8eb1df618893e60e06250334e79eb458e8e0aef73996327acb0b7bd24cf305d0", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "099346d7691979042029c24f74f335c464bc10da84f37f31ce3424056b51cac2", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "86459625b303f037bbb606c90bff790935b97c7fcbb5372a7f07add6536f5291", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "59bbf98ecdd39e37a62c0d36de2f118a041535c5c9152724ce0aff79b8283c4e", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "528994268a1bd55faca793ebf854e1969fb096190d7c88e694f56ddb25b114a6", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "f93795f10d5d108a4f10e2933254604d24a3ac37ead26147830c8e9269b3c2b6", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "978da28a2f543ed3646fd5d3ac9cf3dcb18c4f0a6f30cf91c86706704fecc702", "T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "e599167335e1405ff0692c9220c2058ba4c17baa88605a5005e36a8d9215df01", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", @@ -20914,109 +20914,109 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1b1a5debbb476ce5e49c83c8bccb2130b8f0eb60b1092488d60ba30cca214581", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d9496bd93e9a638a86893c1e498d7ec0c0233e4633c3b7e90929f7a37f3014c7", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "039995df38efd8cf0ecf8fdf3a9c7a75cf9f2218bdef54afc6787c4ae3f474bd", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "cf5dd4380f6b2d8d767c89700c212eb602c9b92f94f762d2f096b8d4e76bab36", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "17dab74b02abea67d33d520354d2d77710e9c466a1265b4953d5fe1d30eff28a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "56490fd03815191cf02284c6124e569afd386b1307a9faa6a98be5c4dfec980a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "05ebbd6d38229ccd3f5fa02d300bf143ac451c3097e1bc0eb07ce68f0b11410d", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "ec77b65fe4fc1bff2e4bf0c3de864b2b3af5d34cf1839808c8a406290b145f7e", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "364dfcfb97ad042376d99de8af5bbbee603600fb4b08ca68b8266df272350a01", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "641bea7dbae75d4606afdec95679c2d61e5747b4b1d4b8215efb2cc850c9d3e1", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4528c3c70980f400344f9da99bdb03d0b4499f0c71615c671b107a5e069ebd84", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9872a3ce2aa9bca25fa85cb2f4ec3599997994037882339aca43ad2715db60fd", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e684674098a8343d524be0b02c92c364848972acec3b07c126aaf795c9928763", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d030fa31f804db873a020900b7199fb61509187119c8662881e4d6392c2d077a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "4f0694fad7259e6377ba444cdb9248c9c93f917316a83aa4f5a95a4979db5acc", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a13a52379214fc1cf3da0364ae461393e1b243ece2bbbfe3271ddedaee3ae41c", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5022a385dcf18dbc1c345f44b302f0d4ee4a8b354eedd3e5231cd745f36b37cf", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b82e6cb28de70e18487dda4375e6ea4e0ced5058bed06cc4727b2dfef26d00f7", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e0cb1016c5ea06df770e938daf6818bd4c357279d5990ac54e235be1c5ca4872", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e81abd2eac0c68185b4b4daef99739c68e1e819c42ec8a4e4f841713b3f5a9ca", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "476969fb63fb87d43b5cf456e748f2fff3318bc76eff622bb8bcbcf61d32c2c8", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f0d96b47cc18f3a2e3436910d9da5960d4f949cf7d582a392f2aafde1492b43f", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9bf45a072aa401ca40163f2579ef38fb4b20835e0a418bf0b0154eb7f6fedfba", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1a651799e3fc0c782dde20aeeabb841cdd762de3cd6c2417d7b6f42eea4caa19", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c639016d26fa3b41588d040b9bc96ebc7f847067e557305d7df7d0657a72b217", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "30e7a3178ca1b3ec6eea321656f8223e3da5fdd563029f8951132f3c28cb76bf", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6330717db8f6dcbb18e6a12359b0e907229abf9b51a26a94f8b945f7e0aa7b66", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0880df86e593392283d17aa9182173c91df1d7fc58b3c2fda251508e082136b6", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "884cd689be2457e5f85c2d4ff0570680968f4aa6e4142abc0e7c5d221936a9cd", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "128d55b8d2e9e95d97972a98242ddce6c6134e752ccd15aefd044ef605165e9c", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d729de2dc7fbe989fa315876345587529c4e4e44d4ed86108a2c1676061e11c4", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f27cc1d463d6926c17face357b7e8b9162bc2a5a71cdc976155b5fd3e836e47d", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1ef602523bab91c5aa8a224f81cd06f86ec509783cd9c7e1e71bc4a5ae4556b2", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4f2253ec99c40418cf81f1d48aa56fa1b81b2cd10cf93db95a07921d612b6fcb", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "20b56bbca99634b64ff3dfe45e24df9e1725e0cb71af4f3d4ebdd5258069dd9b", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "da15f8cb776e04cd0492ed29abb86962d273eafea6ada5ad86b4c40b6d4878fa", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "3424b63d35b91e9c0876c2a1757e6f76985798e30927e15b0cf0c47487cad24d", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "e20f906199a9bb30f8f76a8264645a821ab2b1e1427a58f8c6694d500941d55e", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b91a3649be820c496c58ceec306e8f18003d97d031310540cc634516cd7df844", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "d1ee56a1a5e2156512bd5714d47fc6a6d135b341061c54321cc3d7e123b06db8", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "f43430da41434261a7d271938665af65bdd1fc484830f32c755efa43d41e3431", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "81d80dcdcff0fd0c0f38d010dcd4dd7e5e300600f0dedbad54c2aedd36ea8f29", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5f174adb934bcdfae3959db0ae998444c38e0e98201a0d661c60729e317b2669", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "a796f5a24072c816acba894a6050032bd85e2ebfe4abff14a0bf93731ebfe1cb", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "8497be369796d539b32ede55c89e605c2c478d073a12545df45e8364265906fd", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "0e9ad0eaccd748675f499af8ead2fcc883f7d9f4190d7b60f0dbfe644f12967d", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e71dc780cb94d49ae7d4f874184e8b39c9aad43239305ddf879b1a8e63bc37cc", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c749dacf1dadc8e909453af504f240a693ca34e00ecfa788c0e2c92c93d0cda8", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "4bd5c445bf9f8bc419f90a1d2344b8af3700bc917674685f57ad0bf26c84735a", "T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a0a1849cb73fb7459e3a6ba2ad37d5054c8b35497d0b8350fda0826e51f09f56", "T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "7ffd14ef9fc28ee62ff35a0948b0911633f497cabcc603c86296a4e2bd1d5332", "T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "ff9a482205bdb214866cb47ee32f7cb787b187d803a488efcbbad4615bcee7c6", "T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a0a1849cb73fb7459e3a6ba2ad37d5054c8b35497d0b8350fda0826e51f09f56", "T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "7ffd14ef9fc28ee62ff35a0948b0911633f497cabcc603c86296a4e2bd1d5332", "T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "ff9a482205bdb214866cb47ee32f7cb787b187d803a488efcbbad4615bcee7c6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "43609c4f1e608f3231d5168eb1b777db9b825df3b5639040469b6bdad7ccd2e3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "f600d8990145242d59ddcad1a4ae76849ab673a2bd84dbb8272958500aeb88ba", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "f5d7d4a09d289ed71744f04885826cd8e27f7fd2f15b6c74070e60965cfc4f14", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "64d3dfe493434cfd252470aab108759d66636dc926ad6424aeb595586fb67414", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "2113c5ac560720d33fa78fa02c680871c5b53cf042ccc35acd0c70dffb90e299", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "470001ccb2f69fc8351d0e3c77d65fef36715b858d0588bcd71bbcdd915edf5d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5660c956cd96bb4fba14c85e1a7c8c5c9f893e5305e63fdb9f9d70ac281998b3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "49a0483ddd566940ded331e2b30b25409133ff302db02ce17e857e395a46fd68", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a9effd21e196c27aca36caec9b365c705cc934890807dd668b120340aa34b713", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f1885601ed7496302255324f8bead3fb905a0ceca3276ad6076dfa81e464f743", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "71d41f7899365ecdfbde43745c921d16eccf816d79f2fa5783b30bf47f470697", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "bbb8cd5e7b6fdf3a5216514608278cf594fadba0eaec761c3b0d41624a4582a8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "3f1a32c9be0a6492fa07307f36854a10e494ba7ebd0fa617610b708667b6ccf3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "db53cbeb4fc9e3f43237294dfe640bbb8ad95d816ecf0544fe7e7c2aed1f82ee", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "9477f465873ef22b1403a63b813eefcba017c1b716c7b895e42f370da05f80dd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "0044e5f901e6c770fdbf9da729607d36c04f77968f83e3fc38934529dd57eb1c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "78a72a3ae414b2b3f61c9bd4347d45b0f758784397da85d99d3aa1747210f92b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "c1417be49370face35627b0783ccbf29807732194906ab602d1268e25a279fad", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "f49878793670d086866aa6b33e0b6e72ee1ba972c0a180f24e043978b4675ebe", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f93eab5b3bc08b901784f374c33ff36eb29cad037693b450a658c35086a81d75", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0de4951def3b7656961c534639cf76945095df84699fa3eb2f144d024c75f628", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0de4951def3b7656961c534639cf76945095df84699fa3eb2f144d024c75f628", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "c527eda09beb17b68eea5268246de896ce6064841226b70a41a24a39ebcb4127", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "fd40037990084f52626b7675dd59219d3d05e5b943e6296354dd691156f8bf11", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "46625d7672a34c12e63758681425b318ff34d70ba28dcbc8768ad8082a6f64ed", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "34ca3e2fea1ca9e44314c14a3ca4b4ae33d281e8b68d68cad1210d9eaf375956", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "c1444e548aa06fcea881740455e8eecc0902dad0e504ef17f48075c2d27f018a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "d44730eaf157f094ac46e96935d95bef40ae3258e116df1a544438c82205deeb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "98ffb68425487482c020cae65e9f496ef63b4952fbf7473597b03db142b4a68b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "99b08f183d581c198acb1312ae12e7f9aaa7369325ac594281d9fa5e15c92cb9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "bfd1cee396e593744dc7bab174d449d1906d3fe02c2ae114b721a4e506a002bd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5989fa0d0b690b35afbf6dee7106d2a0194bb8c655816177c9e7245c29986102", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "1277ae08aa6229be8286dea0a82b9ccc01caf2c0cedec65314e021a32ccfad44", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "1fa59a00dd575b2ee7fa99472d184f5abe92ab2ad042a7778c8abedf0259ffbe", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "2ad7d5dcaaf2c09d488cd80b3b28a857d2024994a26fe82d60d0ec3f8be2839d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "240e5c72f823672ab4eb193402ebb28d31b17f52018632657f0168614e5931f3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "238df4b32b444261d746f10ef7a10c2ab26e6767be3d0efbc4d1570a094d19f4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "714736789fc43ea71902269e2d2d6a57850ddb68b9ea108792686421b001bd16", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "6420859105113b454a604b301da4c541aae864376139ce5079673fe7e93046b3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3c3243b5caca55f37aa3f93823d3bd7b6692dca591c48f23dd5707f153430ccd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "66d1314820c4f6480698c702f026a530998be51c464ef8876d2b569f65cd7f20", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "75d37004b241f554e73422c0c066595e2da161991342d5eb7ce1c57231ed59c1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ecfcd990a5123e0a667d2e5ae182c134761f00b960e95bb33572341aa6f3d998", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "f2f0edbbeb1e3884989a618d72c3847828519df572f7f97d1273caf4d3930ad4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "2063579d4c352f132f7701a85bbe5bf7585bb01e34ef57b8f69c0d61a0f2c0f5", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "a88f5ae457ba2e9848c63e237eb8b5d2e414e8c1866d71d4b694301211c55ef8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2b95506268eca7beae5054b2159fa907864ea8bb612412cc19f9d27b46324e2d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "aab0498647036bf07e9af1beee405280e581fda09b7f27b08f1888a5a8db827b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "596b2e3378ea4b3c2a604c1ea86830fc625c501780d31c3199439e46730d2c79", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "01e9885a563eaf4475fe070906168970ff3da20df97efcb75df2730bc33e953b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "f1f209fe673b6fffc016b4c6d05ed388b7cf7eb1a112481a4b9cd0297921b1cb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3e0bb8fa968f8df54fe52e2d41f41d9b33a3a323deb69e5e0e1872f9300661df", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "9a808d62b9a6d24f8a1f05a9cba6599bf798219b7af58c7e64b8f708236df28e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "acb929b5a14e8a32990c8560f711d723ca1906fb9e00ef7d7dedd45d495aa073", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7bf39f70762b3ed1c2fd2f5364527f3ed9f67346e7d5561a8dab1c8a28ae4089", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "7ab54b9e86d258e114ed3037701c33c34cb74b238d989860092df42038da35f7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dd6d8c256f93219f961eff4e583842ade2657078b010bb2a8cdf2cc8236a3791", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "62e32d5eac50e0af1a3c831df96b92a4a3aedc9d0ade2c3c4bf097532a4ebb30", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "813f344bd228f0228b2dd0a76b724d3336208ebfe1a0fda0a250ba9ef5f64642", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "46625d7672a34c12e63758681425b318ff34d70ba28dcbc8768ad8082a6f64ed", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "820afe618f6df0f1fb3d14b278dc84ae6ae147118dfb26fa20432782e21ba81d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "3d18295c57c9d4ab17e405ae19b5faa5f97b84e04e461a8de990e93ebf89c656", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "7a5cd20beefd4f706e7067a523ff0f5f9421101d7aaec1ea392a0cf01816a296", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "b08d3954ba373150de06b681a033eadfc1336099b9586f190b964774777579ce", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "9ead4d26f801769921c1db28daf363ecbc687d1423de71083720ece29fbb527b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fd8ccb07a64903d523c59b45bad1081852b5e01163a6802d5b6e8f16fd185e65", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "309ccc7746b6acfa6ba640b9e0cc79e4734677b2f16930de4892ac378eddc890", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c2d3b433ca6915fc45dc8245ddf87fa6bc7f51323560a7404bdf32cbe2ead4fc", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "4a417c55f6bf4008abc2d46bb2a64ff22073386c0db5b68d1e19ed40a9cb1bde", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "4bfa061067f7eab75644c05b738a2238be352e5accd3e1a4a1ccde14ff3fe492", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "1f0914d6c241814705f2aa86e2445d0179b5abf0abaee0b6ba037328a997706e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "a9931e4b95a360af03a3cf4a58b5be72cdfab540a87440811bd3e18f0dcf87dd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "e5361405a0bdfc53d107575489b1113379648a60520cdb592b6c82f7272e7776", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c60a9d884fde96f691fe1bf324b63ade215ccb490d606d27563aa5671dcc711a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "d81479cf552a69f64c2978e6d06731ebc437950b4d4e3cb95001aacecdc4db06", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "7f0f5c1404e20bf04491edd17afef5cb84d4380571e6ab2ac707798d11c9def6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "a2ee33440448b11deb4077a05942f546b0b47146c2de51766ff503a657269b4e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "13af79bf78ed8b24156f98ff13a31d27fa895c2c5e6a0510b105a4ecc7bb9f0f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "65326cef5abd8ed618cee04940f546d07e15f66ae652a98fa6c67e013abfff98", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d3bd936b73bd53e61c84769c94a464fdd4b9b27da822e3e52e1aef4aab2c10d9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "1212e3e338342e038c946c20ed3b9c64b57b959a071e4e885047747ed911653a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "35c2038a5870e9cea2ae2f1d3025fa99afb9d11ec773fa5cfcf46a9fd1a5d2d5", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "3d554efea5be66b5a7892b49ab7855ba86358f276887e0939728da27cedeecd1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "de7db09b7c98470190ad84e444d19e0c180bb9c9e27fa8900d0cc99edbdc4b1f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "8493d67f403af4c71f9cede4c4da4058c5b81fed1c6acbc77f6416295a97caa0", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "c9d58b00fb64216e44e27a4d365080b4e4de16844ca4b0e632db889bd95df2e9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9e228958c7395a20bba687dffad1fa07329061f6e9ad6bd4caf7e3c4d1dc1445", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "9e2e0ab6d7f18f6819c1cdde61ef19cbd94a968bfe4042ac5083e153a15aca02", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "02be6c83ad428d882deccd6fffbff747eb1f0d5cbe355850b8f5f4b5157fdcc9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "2570d5846586dfe5397980f8faacba78b1faf26017006fb935a1acbebfab72b8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "2570d5846586dfe5397980f8faacba78b1faf26017006fb935a1acbebfab72b8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "20a76bbb5a3f55b6731bd51da0213cc31a4739e537182fe9d664665f45d71ff8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "4a4df652c029d7508be4d9906f676c8aa5d0833cdabda2e16f566d9a44b7dd73", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "6408df3f49cf50e2d8e3032dea314211876bfa6fe142ecdd822075d9ad749eb9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "a8f690a83b86db952c02f9e8c7543e539a25d69968dfe5a8155235b26b814d63", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "4a964962e688d677dc62e2fd53bd879581a2152bec986a53ba4036b83881b2e3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a1141ab1d2fdb7bb23997d597a5a19dcd580cc2e3cf9622b5615d12bc46fbb5f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "04d12dbf9dcd434ce2b1c1cc57df2e3fe50ae7c583dd84c603967a086045c3d1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "aa7a1cc77c9e1c86352ed1031fcc8eff4a784fa95274c6d9ed1a8d75fc5ab13d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "c709368e51a325d9f435d1a500c5d7ce3a7bb8d43d96f74842fce487d31dfe7d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "1de7171502b9783a823eb1addcd7cc167aca39acf4cecb6b3be7ebecf1bdab9b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "3c9a00b55e8ec9e87e7c6f7fc856a4d96d25754cab8e671ee395ae6fd330e041", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "a16f1d4b0c5494dadb6aa74a536f0a2983610f74cc107cd01ece35cfccf4f9e1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "ded132db8719bc9673a6b2892eb04a2df828007532aef2e3eca5100c27539c80", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "ef62f7478df93a48dd25fb0b6e977201e8dfd48eba7d291cc7b2d01c2c1c389c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "070bf81c9b44b63d1249edb009cc494c852e353b78ff7f87dbf59d68b356274a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "b608493d459ebcfe7d789e364c1ac2a2745e8053ef4bf6b6833ea919231f5e47", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "281dcb5373340fa43f0dc7311c2e3768263f4a3e82f06b354617824b05fd8668", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "7a0421c017ca0d822c7a6f561383e589f84dee0aa442fe715d918ad2a72797ac", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "546c0b58d4d0899fb3a4fb5571800216a36eab4e91198957c1ab0d34c5a45824", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "4f8f21edefb9e5a1a2fb20d57b29110a3fd16fd1568f7bbe722f00042c68a111", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "6cf0b64566a128c100f3a27bb9a4a7e780a4e336f81dd5e8c3c48de1014cf265", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "3e8a8991f879b17ef38b37ac3c525331ad64540b5e480ddd0cd799c4952fa54a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "394604acaa517f79010f73c8c16dbae21ad920466dd4130363f1aa5de5aa9753", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ebea3a287042c19cbe234d6c65f5039818f363ee18d8efc459e7066fc6b08e67", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "61f8c611ea831222a5f694bc36f05e609ab96adf09f56539ad8735654ea5aac9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "6c879bdc6f6142ed32e0b8bb37ff7a75951076bb9156259acd9e46d840c24be2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0e2940ef59c6d5373789fd14743b68e189ca02e75995651feefbfcf66316d0b2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a0b212e7bee1139ee926380ae7e3be324610c1eddefb270cb6904fba4f09bad3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "30b93176335d8e237ccff0cbd3d54669afc397e5b98f30c3cf872cabbbf51a5a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "8efc5283b652f34ceac4600c4debe9a6ca4b5b463705d664ad423fe14a5800bf", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8dbbaaabfaa361cb31100d57f84e2fd4b2486ec876e34d65abe93e5e9a8dd85e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "0f6a0c29956deede933fbb2f2656566634fda51a83476a8ae5f0e20bde55d5e2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "35755c801c415a154fab095d4e264d5fbfe00f64c78bce16d7f39b64a30026cc", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "3d92adf5ba5141d26b2fee330415c9343e2bb2dc928db2698176d1da2a093b68", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "608c476fcff7b5302311caa787ed36771ee215b034724e47e81ee0e77945a70f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "86cd08671020ce99428726ef3ca59cc0e049dd32458594906349df6ceb825d0c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "e0fc57ad83c736ced305cca5d5d0ddfb7e6c9466e8a873d2628953de690f6aa0", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "6408df3f49cf50e2d8e3032dea314211876bfa6fe142ecdd822075d9ad749eb9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "fe8971578e291f9ce6925d03d70c5ef3a21a1904807f9d529dc00ec942dd1784", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "2717b6f96c126833f1d52e6fdc0d06f0dce4d730db89f0e05b128ab66379501d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "4806446dc7bb70eb9a166f36bb25aea8997870e1f2197dda6052cc82e645afcc", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "7781f7e956fa7390433ca4382c80e37a31b0d1640b7536c1e069a58924513a99", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "b1d1bdaf4180c027b4c80399cc40fc0179db50f594b26647565ac47a09eba4a1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "24d2fef034e534c57f13a3f9eba69ff48364fe95272691aec5f917c848e010f6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "0e41f3e1e1d4ee99700d29425b6dd9def912b7f86d47f7cda69d222dcd74d8ff", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "32507cd708cf3d64a804efc8e552f1be3d95277cc7026409c03d1988a5318c40", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8d35bbba216c98f534a0e6744629b1b14d24b97e263118269cf0f46684882e1f", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "a9271a63a88b3f32a22a2b766ea0ef7e3ee961950f2e9d074d099aebb85b2cd1", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "1141dafb03ce376f0d2d796d74a77ca0018a8b614067e50598e03306f4dfd367", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "4d75bf3451852f73389bac7b500e81c6a2ecce237aad93540d37f4ef5635fc04", @@ -21027,16 +21027,16 @@ "T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0e773b8c3240187dc38935d477705d663232a94131d4ab761d3f2c17868eb72c", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "075eb9bbcec8be37e3603a152979498b7bd9ab4854a4e5c13693861cd049163a", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d06bf8e1df3f2976dc4acb2b48ca7b91a0521bdb36576c93d0722a0b8ae69e01", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "cf1b57b68d27b4d34e0db4142f6b48bd5676d6fd181ec2442bf9129b31189f0d", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3f0ead7abf6511a0f8ed83c2b57c81c758676e727826eb349400b7bbf15d0882", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1f038480549d2f736162749767753ce9e47152d1be20dc0cdafabb0e7ce991e7", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "6dbaf840fc93a457c18d4c8d1952e2830327e4bdc17d35937ac4ba7a74056ad2", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ec50c7a0559dfbf079cd6f745a23458e996af0b0d118cc702167fc059f2fd1cd", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "c50518286bb23cd3b59b53d8b253fa88dbb9302d3420eb40147e79328479d3e4", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a45ec58d7d7722d8daa2bb17cbd1fab7db3aebc66b414939c46159d717b37ef4", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "762ce365355448cbe383d57b4e22647a76c889b52fa74bef70f5f6223b4dfbbe", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "4718e81937d5705c148578cd651d13e0f611ec83b989b9f9b751f10ee4098dd6", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "8cd99d59ade87d8dcac47a9c9185198e5ec0739e3a83c683c1b4ca835f15f7d9", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a249df7c6c24f525c0b6e89fce57e973193f39ed69de7d52380ee19f6d783b46", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "379bc9a64471d31c2eeb06ad68faba4c42955c8d5fcc0eb02f6804cec7b15393", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1bfff643bfeeaea50aa9eb8fcb1e206fd25dfac8a03de206598084674a3dd92b", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "1ce673d9c33ea56852675f54a5a4a7471e18b01f2d8235c8b4bb5ff67ef14e21", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ca02c0ff9898afd3d4a52de622e759faaa0b4b8efa483f1e4bbb0113aea90ced", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "3c7a266b26c56a068435851c10c9f5f1c76f7d53900efb7382eb9088cf0714f5", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "1f820089023c37479302ace27e20c6bd65bafa1dce44059680e432b9dbf824e0", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f18ab0db7fc78c7dc75b0fb7c02d1f48d9bb59e653f1684f8d85d1c2b9b0e4ae", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "981ec9a7cf1fedc5340f1523cb1b5ac24f8aca35c8bf610c933c9ae407cb3249", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e827d3ada63c06ce2d93e52814513f0a628e0a66c2a906f9c6af1f7b5a269865", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ef93a930407628c387f222e0fc6da9bab9a16cf0fd0a7f7fb8ee7e1289a146a8", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6a1127d360f5560eb19dd0c86f4e79f159b6446a5318a9969be51f1736f055b3", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3b3eaf83c60202d9c9a4a0181b8c52bdd59ec1a8460cbf34ace3c93007608316", @@ -21132,14 +21132,14 @@ "T3T1_es_test_msg_applysettings.py::test_experimental_features": "8d760748478c36a852551bebda7cf42d50c68a4716303233f54fea9a0f6f746d", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "a0bfad9844e1a1f17db362f1bb73382d76d34885124a0505740864abf9e1a539", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "57fd65b28049aaa0b7cfe1690d8e9d386f44044bf43a89844fad3943a276bd81", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4a13b31098f8fcd9f658739e37843ad28fee657e58738bce86dd3ec91e381b37", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "2b96fd3fdbe982989b5ba4420f2de1e5e660ef15287331d827421a4bb784349b", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "c1061b8d8fb416a0d3c55a6d08429fc08942076c82f76f8c94d7ffc2a504090a", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "35701f48182534d66081ad3fd1e3ef04551dea997d6ae0aa0d4f0cb5ecdc81d5", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "9759330a148ab75ec394b6203a428893e28882436cbb26da94a85d0425a99784", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "8875d0e96dc594aa09aa853c3054b6c55f28a41960262ca5deb49a97e56006aa", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "020bdadf79023fae7967553cccb1b5ef1fda57cfdbb4163d6f6259cd260a94a0", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "c8220a4d3d24b40ce486edb80889a5126d83ecf4913038ab2f7ba2dfe6d17395", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "270f920503efd914ff536e871fa17f9e73e8ee717749c40fa62c676431111b37", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c87b851cd39402319c7c3890a6c417115ec8314d9a447686a661f647eeb460f9", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "3b649b0c3b632a9bb764df995f60b4df3f8366acc84ef8849d0f8eb35d9ee2a8", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "4da799346bf0d2a67159a44ce0e48b9910a4b395e5ed01d26e0d2a652ab31b51", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "3d797465fa709e025ed4795560e5bdaf17b1327b63314cd52184d99df22a06db", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "49e10a454162e4beab01131610b5d98b111374ea6f6529d314047cd63ea1cf03", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "83c41ffa8593a90971b7cd08feea47b7221e6a0186775320627d24de7952175c", "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "7aaac7fd63325a135eaa8c978165abb4146abbe02947d68cc68fa94f67b57157", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "22caf34dddc51053ac1efed40d4cb50810cbcc6991d15caac339a3a5cb7774bd", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", @@ -21150,7 +21150,7 @@ "T3T1_es_test_msg_changepin_t2.py::test_change_failed": "1ad17f8a5cf5737bddf22596cf7b3f75304ae311524065dfb05d9d1b7fef9535", "T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "7dcc3a622aaf36de144de230592c42d6ef8c296a309ebee63e039b19296f70e6", "T3T1_es_test_msg_changepin_t2.py::test_change_pin": "e966e4025c161fa43a90d8eab62e8165c32d331fac9364729fc8691244b56ab7", -"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "38d5af93c753dba0e21f485027c59b5ba60a05c1490cdc88a13a094c91d5b920", +"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "28046e6c7acb49146beaabb14bc20d5941c7e021dc02e20b6ec1a0e23ed570dc", "T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "4fabf880bdf04b33c95eb3bd858c0e61c4437a46b7e899e2603aba40475f45b2", "T3T1_es_test_msg_changepin_t2.py::test_set_failed": "62cae69d38feaf2d18876b7a79a61138918564384e667286decb0f6e855ea05d", "T3T1_es_test_msg_changepin_t2.py::test_set_pin": "d20d8a0a1164ca2b19850923c15ea6b87059302038388759ea874465c3025110", @@ -21163,7 +21163,7 @@ "T3T1_es_test_msg_sd_protect.py::test_enable_disable": "ef8dcf4ac94fc56f628f63a793aadf3c12e90a5b360380c4923d52757b97a04c", "T3T1_es_test_msg_sd_protect.py::test_refresh": "d89ae0e2e182b9d117bb4365d7852a733d2e63110fb8b0a213547fb92235f7bb", "T3T1_es_test_msg_sd_protect.py::test_wipe": "2ac537f263ab062b49cde9ab2a7c37982c0c8bf3c3f8aaf97bb939749027e8a8", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "93c89566aa6cbc4503b01febe5a67618a02d833e0fefc1404d6d2a3a5ddebfe9", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "3655b07930f73b0cb7a2cf94c239726843032face20105896158977afe4f2fc7", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "fbf2b71f3fddbbddff19d7148e2258e0518bb78fdd2d8a6fd07079e75c4eb964", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "1dbd29751e65470775e49a667bbcbd10ceed8fef87a454ec184abc8ca5516288", "T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "1dbd29751e65470775e49a667bbcbd10ceed8fef87a454ec184abc8ca5516288", @@ -21185,7 +21185,7 @@ "T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "b72394f7a154641b59caf29dbf1a4d81e53d264632367bdb696354ee067b1ed5", "T3T1_es_test_protection_levels.py::test_ping": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", "T3T1_es_test_protection_levels.py::test_sign_message": "7b34880a02445e1c68eb131bfda6788a4b8c67c83b64543865446e92ec78a75d", -"T3T1_es_test_protection_levels.py::test_signtx": "6a769f3886f2345d277c4433a1ecabdcae9801e022628010ed486b93f8e48461", +"T3T1_es_test_protection_levels.py::test_signtx": "ea38e79bff7223678aeec559ef65e09999acbca9fbfcea607ff68af1dbc3d62d", "T3T1_es_test_protection_levels.py::test_unlocked": "484e83723ba3c269b961e7b35dcb0f1a97bd8285b0e17d3edbb482e40eeefddf", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "c1772bc836aa5ca07d8091554e0eb426e3c62bf1daa8b89b5b8b20ee6f2174fa", "T3T1_es_test_protection_levels.py::test_wipe_device": "ccfca8e885975a3cf24ce192195e5c986910086511242110a7bdd2637102ed71", @@ -21213,38 +21213,38 @@ "T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "34476d6220bc505f28b5cbbd1f0ca26b33472d260d661273ec7165e1c354c529", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "145187c82caae497f253669eb3bc0b197a4152a9f1b5fdd3edb100c990a8441f", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4e15443732f4bee7118565619abedb1142c1230f9a42b0deef957790774a6fa2", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "0acb3ec1393bedf7a055b42cda4ddc431376c0f65cb3c4c0f3ab143fb07976f9", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "e55ca48c3ce732f17869e8dff361dfdd435063e216aa3efddd57ab62db446fd2", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "cf6bf041543fcbf0230d1e07f1953235da68a37835ee4bbb37532c3f3067598d", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "aca54a2d18b4c26c3f330ec7c5354719c675f3e56b76cc7d25f0e45b0b9e5925", "T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "136bf19ac6c942edf5ae540091814fb616619f848033f10eba0e9098de8b74e5", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "ea890425688c9c726bf74420006e8fefa0bc7ea2fc13a06f14f32d981a09f0ed", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "6a3c928deac657c8ff5823a10f720b3c646c9131f9d7fd4368c2cb7a38dabfa4", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "1b5ce08725990e5858e917806a9a790cb358562944beaec7d9c592d9e1205f71", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "6ca8ae43e2b4984473bb82b60cb1501538470839ff4502f51331ae3eb2111c33", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "9119573c2d30f2b236ed78858308847b56a867d2800ba9fae728587e96533ee2", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a56fcee17b746038ae8cffa818a6d444b94c81dbf4cdf3ecd8da22becf338dc8", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "60ccdc8295becc21ec6fec9624a0556b90e62c7265c4579e5f55a6b8a347f2f4", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "bd5256c0e55770a83da534a5d1a6e834468842fdf5a5b5aba7c8d3ff9b39d662", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "cf89b56a2fd5c6cbf6928a995cb88fa83c88e9cac560cda3a4c5afea6ef32502", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "bc97cb3526427a18d6e14356fe1c2b6d24b82a3009831a1da00f7c5e28f00e0b", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "a183e937ad9490959fe642bf4a822830fab9952111d59209c03eb4c88bbff733", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "6333bff6888ae4a3096e286707690314763f04381bd25b9eb955ff5e72477080", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "fce505b6657315cdb79bb1ffb70ddb69201fd4273f296f356e540239bd1c23db", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "47fe969151b519853551035c4b4b84d7b93668133215febf8361fac6a898777b", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "97eba0e88c3c5a1fda7f9c772e2d4e0ec4fef41510d37cbacc2d28ed9ec64c74", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b5cb3553009f2a51d1144da0e8f8feb58f1b431165b326e4226c4d72995bfd38", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "fbd7c78e198c6ee72f5527afb015fe5e11bfbb37ef8007998e5a9b8a2b69e63c", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "22ff5b80dc3c3c750ecf7b4c9f82e48b48987b54711ff285bfcffe844d77cfb9", "T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "ebbfc32b1eb720e9bdc7771eb85c8e2e30c0632e984f23d200b9c95cf4791898", "T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "422c769312e8399920a5da2d4483b8dffa8c8590087a20e64673dc763b3a5f34", -"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "6e90cd7046ee0b06067232770248229be2e891f2255355f71599541757a95437", -"T3T1_es_zcash-test_sign_tx.py::test_one_two": "a03a6e4e3503057d874dbfe0ee2cd7bb03c4c85d266cdbefd295429dd12b957c", +"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "3ffcec12f3a89e1108ba82a4ffc22c700b88e36cb2fe8e3ad7e4be1053ba25a1", +"T3T1_es_zcash-test_sign_tx.py::test_one_two": "8873c3a87a6a57be291d9a333a8f3085ec0d47834ecfc8a6dd464ab674573bc9", "T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "f2ac08439e1a5b7ce458215c0abdd09f54e60ec5e9aaafd3c7827133c094ff80", -"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "38ed2f95e8799a9ed81efa80e728b9b2e056d0e76a554014699d8df5240203ae", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "3e421448bd9a9b0c7b022d8a9bd6f61caaa5eb2f40d019afd9d538ca8ae247cb", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "fca52b0753a6daa3a53b0a4e966995fde073d4b3f86cd1bed9c584ff464471ec", -"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "fc691f2f92e5bf2cd054316d0af1ed5b3e71a79211537743caeb80611c5f7a35", +"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "6f33071e898cadbb32e6029f31d32170fd7d4bc9df7e7438c556d0ee62b04277", +"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "d81f6493fcaeeb514ff617eeaf7b79daba5e3e0c212649d69fab15afca1c9295", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "e3ea6c140ed860c8e9b706dd5d534cfb55bd213de8b3c6addcaafb7ad20e991c", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "d0907c6e002688cd0b6617e716979e361c510b42f9096b14dc461f023607eeca", +"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "6f108030db2e89d96e5b77c55d7bb88c206525eda6c3cf4a3f1932232dedf2c2", "T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "b374f55bdeee5421c95a679ea7e548bdd1d47feb748cb48d58cbf79ba45d986f", "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "1f62095e9b0496cd4053e527bdc7412f4f261702214b2e9748ccc28252180156", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "2c24f1958da422148f2d60c9b5fd7293e442ce6b2b8959d68f5c868601949b0a", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e149065d460ac3902e8c4dbb4485a5b3819b723dce655c1320205b66fbe4e704", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "59e844a365a7b2c93a294633e4d956da723ef71e0d455511f0945f9942cc151e", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "ea9032b961be1c82c444951465575def9321ac6256a27be77eaff8ed4124869e", "T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "e3d489dbbb1f90515c20ccee131539b9d4b6b0430c6446e6d203b5e66a4f4cb6", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "98e8e1ab2316b4d08396d75d72c28d457b1366e7f527fb1689383ddf5f170204", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8855bbf435873ebed4fce7f99e22d347760c6756e712edb5fece58d055968a19", @@ -21259,17 +21259,17 @@ "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "639bd602d580efcd770101364a482c9c47dc51620971b1802a146e9c5e413a93", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "639bd602d580efcd770101364a482c9c47dc51620971b1802a146e9c5e413a93", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ce22ef5acbd3f4ad23088e4ae7a9066cb7b67efa7228c5eabb2bf198408a6d5e", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "fbda700ac6d8459dd5c3f7ca6c7d22ee697094838ff0a90e3a9e7f136d545534", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7df3807d4e2b5f116c7a0292f51a3da23008ecd839a722835e8a6c002d03bbf7", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "469229e49ce48c19bbf08afe26e6d0f1cac216173c4f54e6195d1e8481e13b13", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a8fb026d67edbe3b9f6a528b9a4fbd3aa67abcc936e5a6cc47e3be09356b333d", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "b36feb8c065b5a16d4ac8bcb4407c44e9e225f253f760a3da0682e853a4a50f5", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "b36feb8c065b5a16d4ac8bcb4407c44e9e225f253f760a3da0682e853a4a50f5", -"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "05754a281825830df4fe0ecb6f6ebdd723098e0fd895ac81d28f68b4d82b0efd", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "05754a281825830df4fe0ecb6f6ebdd723098e0fd895ac81d28f68b4d82b0efd", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "14dc20f71aeab122ba00a822100c386a45772c8ebb1ad0df84f5b7b648068be4", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "a3bf9e28556f3503b7982ffbbc2c10476758191d0f52659347f191b3dba5961a", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "2fecdc2c539a3632daa92b33ff58687639236d05cb49ca37941bb55f22f2f5fe", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "da41349aa8d2d88973aa7a472421f2ea874ccf239d3fb563df324bc787f66f16", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b928c4313a2cd8e78fda20f75f4d3997384e5b513038bde710b73a2a622a2f97", +"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "d0e2a921bdc62bbd946178a715900a1c2e5716de5f36f3aad5683fefb116b833", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "d0e2a921bdc62bbd946178a715900a1c2e5716de5f36f3aad5683fefb116b833", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "09564bb645cf7d997763c9468cb951251abae1774942b7847e74fac19a42e206", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "07025939535e420205ac3b9f336a6ea175711211bf63d4fc922394a984324439", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "8f6c277b17e8c65f8e22f2e57f6c5a6a012f795f767ab4df33c82c358d38e875", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "47f428ee61dfff3e62d4ad5f22fde84dd8e815d5feb34357b52cb3024a2bb7eb", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d9b53e2e6d4ad48f1d13d93f63e642a3edd94dfb378eddcdc9b28f6e1872d400", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5dc6ad3d0e3d05b616a8aabcbe4da6766b243615b5a6a0296c27c0b2ed350e59", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "c99a7558c839fa11555f88d08fa013a39b14829cec0c8de110adcb67f87d0527", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f18fcf11303eda9660b717e22c676ad609196938e2c1091ea9dc35d1212f3a6f", @@ -21306,8 +21306,8 @@ "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "8d94f673cfc9b6301b8c4b4cc5e4f7ad1902e62e3f12a3d9b86f07cfe5b05091", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d61cee9588c8c81f99e3278b900f84de1ecd6a35b1c69b9f16cee4babc2e5c0a", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "8f05cd0fa8c55a750d7b5f26b92f15bce9b85011ed1a6035d529b4cea2cd7a48", -"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "3cb79517a6adad07a654ac23fac96b0d5fcebe304360b220b3eb01d5e113b3d2", -"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "0d336594076e29c85dc7a8e3fc75cb425e0fe6c7caf617531e01ed2046274dc0", +"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "81802c51e2a40a4421b42b25d74c43927abcb53a15e151b54d3bbbd1b8a2d145", +"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "6cff567a30bd84587bb249374c603696a88fd43561bc551eb3f8647eb0993441", "T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_getaddress.py::test_bch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", @@ -21366,10 +21366,10 @@ "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "282039d3537e45384d1c82782128ba1f9d705003bde47cfc0e38420f0ec13f97", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "8c239200243c61125cafa3acf82ef90a8674c2f6c0c269f9a8f4214f81c61e6e", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "d1cfaab220fcb5ab1b02101d69a2cf8cba2c03d9a8629cca667078b2218555a8", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "2cd076b22f088c78ea1a20f8ed326109333b2e77818dd7410cefe5331692f5a3", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8ed6dfddb178ab3033b393df23bce47cd547906899123f47dd7eee64808302c7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "a1a54358ca6c06559971f6a151114c8a236384d2b29db0491cabe5fceee3ec41", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e69c3070e2b83314b94f2f41a2ebdcd2fc191aa1ed1994b77f69f14aa2701be3", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "9e47d1f305f793e0998c8108776fc400e904eaae629294661bf9c7fd047e15ca", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "2a35009fa83cbdc88958a0652a625187342b9f0ab602cea7643841560035fbf4", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "19d701cc7668cdaf5ac5ec565f3fc95c88748bcf26cbf48bb95e8c7b502858a5", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "63f757ffa0f74f57e21a5f6bfc59f133edd306b4cd72381cdaf915039d146822", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "0debf2797f9de350614c83dd5cdfdc851410ed52a988942bf564f59e105f7e4f", @@ -21378,14 +21378,14 @@ "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "1de29e69b5b1f319c3e56578ac9c76017df6c600091dded327a07194a82d2a05", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "b47f81008d1a75fea48a82e24536c5014738efe412c71cb3507a49b50c2a45ba", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "f6a34e807724ea4bab8de8e0a85541f63bb4d2d97ad1ae94ced0164a797a16fd", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5a41ac9b05da72a7813d15790a830332c7f91eedcf7b220fd670cf6b0c072657", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "bf3e5bae7d79cf71c84487b12b8a7d3645d9a6b3ce3bfdd2dfc4cf19b75a7b9f", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "cf07c30a322fad84eb1bfe614bc989669fa2a3fd690c21d52796f22cf5648760", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "32904af8703a31eb823a85711eb07da7db9f91429f699d4ff7bbdc715c8036e3", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "c05fd54ff8505d610e4b0e17b042a59a3e6c763af91d237807c5af63ed052a62", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "bc7cfc8864438fa93a11b9d274bb2f07b2cfcda0b2da677aace9bc77f0d784e3", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "e0162341e9330a36c855548d21747080ac38db388010a50badb80ead9ad390a1", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "821c85e981d4c99b8fc14ca6abe3c96841c6446efb36dafe3b2a77d2fc38f499", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "d29684c2a0a26fc4ef041db6ce99590cbcd0db4a30f33eb2f850561a103b7dcd", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ed77c801ea61a01441232a190fc537764b6a1c03cab39bb9765732070d2a3eab", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "d9b9900ffb5db1a22a823cbaf990505d0d8f00b66dcbbb1666dfddaf87adcd34", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "5fd0eb4f9b39c54025901aa5acd41e2b51f231ae36d3caec6c9bf6aed958dbf9", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "bab7b0c5bebdc062a86c8445ca02f75cd54a100402f18eac52933f6d8a2005d2", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "4eb136b2dca63f951eea2330aebeeda00524ff95dd6c9a064890c3bd89712ff9", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "61423b8a7be86427946845b9c0f47ac0d9f27b96278dc75706fc232b2c769c66", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "a1f31ab62d544008f0b62de0794c490a49ce9fb41924c10db05346ed4189d875", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "390c819912013f7a8fcdc45e9c5631ed663e05a580cd69a48ae0429e7b1617a6", @@ -21435,28 +21435,28 @@ "T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_grs.py::test_legacy": "5c7929d64d157ba229b2ffd37c8bc544b787b834cf26737c37cb1ab703121c91", -"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "0d5f6b5e84e07d02111c435609e5354c47e95511af9d665da0128149da1084c9", -"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "ee7364c330c21b8d0dd50ce60122d109c200dcdf3714263f10b6713f79d397aa", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "ec5d93b1ec3a2d0e43b3827cb0cb6773ca12f8cefd381f9a4b45b1620ea60527", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "84198feec0193fd148fe19a00bc5aea97affac43f6ae8c2ce7cf246b43643906", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "93cb0397d22e5075bdb8b1f11245b2c8508777e03bb7d4890e7079c64b5e7f1b", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "37ad8787472ef7311b59be85911177b4d40c359e2450b8a38c0ceb28d87be361", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8b962b2b558a4df770da8c6a3bcd36fc662bda2997fa8d969d7d9864a41b9ad5", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "e4d9131fbf66b6dd2ae24350c24992bc4f62d7dc21dc868734c378e8ccc88c2e", -"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "43a5b44211c495782ba1261d2e1db204c55f3f9f01b1d0e7a64fe50d92bbc452", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "0b7d4ad8c89e8eebc8a61e297c0630118cbf75e63937e403c09001c63ed712ab", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "21cc3d4373ab6490eef891033dd8a77d0ae61a04fda67be7877361518545d59c", -"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "2697759120d0b9b77edcd5fc3cad86c6f3f5db02749bea62a18af79bf9de32d2", +"T3T1_fr_bitcoin-test_grs.py::test_legacy": "017abbac87c69f58570fb144fa8fd5a5fd89a99bb5df122fd88aa9049961f165", +"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "8faf53bf17c36a22abf3030cdf548c26b02e0a118c3dca3d228bb5653392b7e1", +"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "3ac910e4859d80a06a478302adb4a2fcb64143743af8f6f4b18bd1d8e53bc35d", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "fb04369c5db3e90e85ef3799bde5a65c87a13beae3152b29c2405e5bea405c97", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "cde3dcd8527e5a1bb7df5fc9e58821afe21017078d536088b4959338169afea4", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "d2ab4db4b4da7b4e90b6b06a55712c420f9e9a0deef4ebf60a5e710d90574ae7", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "94550bd4d8e7397ab36068051d96774de559d28caa6e8aac0980be71bbc69294", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "0bd6f6e77bef07cfc72e15fde75be942eeff6aca166e0281ac1761851e943c0c", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "b981fdcad23510a957dea339e15f69a6f997c9f8fb735bdd4983272f660602b7", +"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "c513960238ad53a56b009aded47d35a0ba7f345ef59a12b2eece6861256c47e9", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "3707206a4f491c173ec1dc4d273eedd80f12a2269ce394254998948e5ff6c4d6", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "20c820aa3e2bbf7e494477d1b1fff31de25c42816ffe346f983e130855296548", +"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "3a32f77bed95feea1a55591fe1141da099b81a7148d79479e6df68dfa3457165", "T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "f3716f717ce91ec1e70f5cc9ce837a44457620ca1bedadaac7730e46908ecfc5", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "b500650a1c04b0f3bb923cd36cd7c08719acf72b34c7c92e3aff8ef38bc4bc5d", -"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "b23d8600ff6194c791ce2e28eb9bba880f4d0348ecd84cd98536d027a40c2b82", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "32d9f5a69b502529855b13efeab19c8d56cbfc3b218ac8ad1e9f3ec0aa3f2427", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c6f762a6c813392b487f829888550bc97a5f18dc1e6e103c407b6a9c29b8e26a", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "b49f3a17862cdc74f8a12587494d566f13c10208d1107055687a2d50db989568", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "a30279bdc92c19ba954073fc309c2fcf261265d78bb3cf0916006304db4d0d5d", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "0ade224e622d6c8ac5aa75c6e8f69a21ab46dda4b44b4b6bc8da578380a2bdfa", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "4313b46c4aaa780359eb58beed96fb0820a401d66161c475a532f5652448d9a5", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "4967cfb962a363f1958e71e1b907f6d4d92a684e085ca73f99263478f12bbf31", +"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "813e77e73f5fecd08b2645e8a1d1a0303e0ebc2e61a64a49fcd0955c410fb3f6", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f2e4b04c6972b65eab168024bf51b2aa8b6e10dc26cc9949701a05c1d396fab8", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "cde7c7119c8f9ab89536c6d8acc5a1774f2754801a5510f31d3ca65094bf08b3", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "a7b304502549467ad60367c82d7742db44b83d2d36c5299d1b50cda3d443c8c7", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "2f804018d2ed8cf699b57a715d0255aad36f146da3b9e0b29eb3de96cbcb3ca1", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "e565e5ec008a76ca789c9689965e384f752e119166a0eb780541ef9d19261b60", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9f7c7aaf50d16bab2c4f002759b13bcf78b59b07471e5c81d62f8e8ef7a6cace", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "39cc217e9056d1aa0710b43f958d4bc58c080cd1225bc314f2a8260e21fc235b", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1ca710ed3ae704f870c606e08a568e2a4178d2c662e34bfc31a36805c608c4cd", @@ -21485,25 +21485,25 @@ "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ab51e96cc9fb841b505b8b8871066c31f2b4a54678ddc668474c3709b565a90d", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "9217a2b097269aa6dfde8e5f94463af269455ed2bc118a9afa8786b60f5939ba", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "84da79a26d22e6b49fd0d00c081018f38cd0a608e3771af64b4618b36853cfc3", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1008a66ebd906a7c0b6612cdc009b64a38b3d189565e3a7a13e302358a998345", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "2eccff4345427ef61666c76f21e522614d069103fb3009a861df9222fe232f47", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f04c26ce1bc9f5e772392f595205263b7c9bebefb03607bd874290235f7eba4b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "d627a83ba6c35d6d5f8898caaf60ff501899f2acc533979f7d84318680caef37", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "54b6e99f2f39a71fb94370b0c1aaccd8f1c8b9d6431137c7dd6f3ff3442520d4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "296d131f8026928540c8300c8006dbc5c082383e39671b68e1f9834114a4c7d3", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "92d3f89d1a55f4a3f07a30b4248a8521163390e952993fcfe08a064492bd040c", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "6d56e81edcb79355212e03626d4e26189deb2590d45c01ecdf59d12726f27f6f", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "db0793da4dd1f16165a64ba3467b4056ae5648e2b4fc0e9bbf87e1b248b50670", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "92d3f89d1a55f4a3f07a30b4248a8521163390e952993fcfe08a064492bd040c", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "92d3f89d1a55f4a3f07a30b4248a8521163390e952993fcfe08a064492bd040c", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "92d3f89d1a55f4a3f07a30b4248a8521163390e952993fcfe08a064492bd040c", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "17a01d85c39d02ed2a7fbafb06f849f6a493a7195737994074f0b7ef75ca33cc", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1579c09b155861da084d43861efd027f93895f1d32ff255edd5aba7f8639b0ff", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "99a7ddad429cdbf6874f2891f1088115435f5b7af5e4c0eee7daabdc2c8bbd6b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "1e5dad2e3e637e6eef87ef26a0a42dd29a423fdfc7c06fba8706a8dd1befec60", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "8ea007c71bcdefb7053f0da672dded1152c5dee47d21045c7aa79e780b4a628a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "5cca21c880a1ee41b0aabe03ba9cf4942702890b320d832057e32f3eb1ba7c55", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "209dac65255144ec7e40a82daddd93bff88f185608a4deb1a1659f43b8f8ff9a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "369f2abca54ed31841b1ca60a92ba4f38ba3786d03193a666596988d9f4d4cc0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "7247a9e79afef2434417bde7d97fb36a254b80311507c738d1c84c4728fb937b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d503b4f3b91d6c677b9ff556e5e73dc957dedbc7a3247ab222135c41d0507850", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "369f2abca54ed31841b1ca60a92ba4f38ba3786d03193a666596988d9f4d4cc0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "369f2abca54ed31841b1ca60a92ba4f38ba3786d03193a666596988d9f4d4cc0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "369f2abca54ed31841b1ca60a92ba4f38ba3786d03193a666596988d9f4d4cc0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "281247465e68394a7a99002804748669d0685d75c59d659035ddf5b576e92e8a", "T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "2258b6d675150b4063ccb2126f6a4ef8e2cf84b6eefe9b172a456af5508202c4", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "63381ffba404d3da3bf646a6cbe47df18263470d7389b2c7b679c0d327f01086", "T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "3e79ad7ea5ad471b9ac3e9a8c3894f0658edbf190455a21f822d7907cb51130a", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "c5d25c5acdeb689ef1f96feb7d0ce87c0ce3ac8e4cae67e5f1cba0b5cf5c564d", "T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "70e5e40ad5e516868071df86235305b77932664ac1408ad1a7c111a29cd9a610", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "6d69f7b6557d063d633f21060620d667a2302731e665edd12c0225ef1c4c9038", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "0ff28de8af241372d33953e67660839ace6a19d19d42faaa69476b50a075d04a", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "0ff28de8af241372d33953e67660839ace6a19d19d42faaa69476b50a075d04a", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4428fa3c0229981746fbc2fc161a29fdf729ac40fe3573e0e044ac571c461b85", @@ -21550,102 +21550,102 @@ "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e7a7eed135de41f6d0832f467922142ff6b2a2ba560d67ce93794a681f765fe3", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "833e9afdb29b73e207930ac727061d07c01ec3704d66a66f35a35f81c88a0884", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "3d31e8417be4670c9df973e408fba23f1cabe82e478aa35aa97644292044b09d", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "b4265f85979b291a0353f907f5f9c5fc3219325fb1ae5d78627509c86242add7", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "55e8d88857a56d24e8fe566579973e353782f383f9886927c66088ddfe21ae41", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "285e71c311297c5318db501da344a31918f0cef68ed078ad7c69213ca7b086fd", -"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "285e71c311297c5318db501da344a31918f0cef68ed078ad7c69213ca7b086fd", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "61fe30e411e2d40fcd849f81792505c363def59d6d4b8d9176b403b8df7279f4", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "98746778597b14176c45ece5f0c15cc5a73bb03329489c9cfa6dc0847328158b", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "94fd017fcbea6d27ee6f5b4f97f8da512109dca8e8d3add5fdea3d154dd8825c", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "7149eb459630a625e935162533ae2c602f0680d4eded1b2e33e956e766c3ec9c", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "fd55edf73803e1ade9bd32ef4c722a19b3b9b7babf230430f3fe4222e11276cc", +"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "fd55edf73803e1ade9bd32ef4c722a19b3b9b7babf230430f3fe4222e11276cc", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "0f373816319cabca1b6415d0f213bc73ea95552b96d63022ad27f7c3d01123c2", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "50469359cf4952e42f133af1e3c7721fe015cc2bbeec3caa3c335957f36b3c9c", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx.py::test_information": "8df402ee68eb47a456e93ab5a06108e030ec8743ec0b6da0f006bd38e411d1dd", -"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "b62941fcb02cf53269b9f27e95cab013e14ac3414289ea36c3d74774568f9ea2", -"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "daf64b1d94eccb024224402778ebda3ef39d44e78b4b21485148c133e161fa3a", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "ddf6dc8e31a4ab2508844f2e98171f5d2b0d0459fb453b948b2afb6264c88734", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "23f7dbf5c12bd716842540270caef8da4af901b10a3ba88a08cf60412c1c91c5", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "dc4bb23f0fa1df6cf7fbdcf82523218c90a9f11f3ec631700da9b2a216ed2e2d", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "23f7dbf5c12bd716842540270caef8da4af901b10a3ba88a08cf60412c1c91c5", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "dc4bb23f0fa1df6cf7fbdcf82523218c90a9f11f3ec631700da9b2a216ed2e2d", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "7e9a1aac4c983e1a12697dc5df062c699330fbbdcf56db9c04736d2bfaf2dd10", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "51ab5b351f23296896536165ad8a712ccc9d29e683ff5efd408c2160b31f5846", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "c667930f89fb1ad01e20eaadea1bbd03032cff67812af6f43c8bdac72a776c6b", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "b6101b0bae18d9dacb2f97801ffd437aeab3d0a484ad8e8b9b1ff51563211c58", +"T3T1_fr_bitcoin-test_signtx.py::test_information": "c82029c0ecef89ef5f8720ece7d6dcb6051f88aca4aca3569fc9fab7046f2225", +"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "f0e9dd2ef5f098ac19a759bda7b6c6e7982a67013c2d898e78ae7239223f6fbc", +"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "3a80fcfb4c4efdbd6323aae6bb5a59f252eef26ecb8677643a5e7963f1da9006", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "53b22e8f0a71b1d0d343b06170da236aef80c538b1eca89efd7dd9b16a535ebc", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "0aa0bc99bc5fb4ae5383c0504662c3bd2409377ad2f5cb01e0964b5d71457765", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "4db9f48b652297081795a63143a67289328c881f5cee1236056124d1617e5ce9", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "0aa0bc99bc5fb4ae5383c0504662c3bd2409377ad2f5cb01e0964b5d71457765", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "4db9f48b652297081795a63143a67289328c881f5cee1236056124d1617e5ce9", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "69065456b1fe10baecdf4c824715a8aad7940bf36dca5c828e13517e3214da92", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "d395e89f907799a36d97a11472b7f9558feb636fb28a7e2b09b8619d65502b91", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "e12d0eaccfb4db4527e1d3af594387742cedf23d9b0f9c8c694a144ca320e4a3", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "ce5895a4ce053006bf3c25400696d2cb39bf3c17e51356e6732fe9db48b5e52e", "T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "c97c8ead8e3043791cc77c661b5bf8795d8aff5ee371c5a26d90bbb0dc2324ee", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "f23daacdb887f4368d128f81f8d846a0e47b318b29b45b08b6464b866a542154", -"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "a8a35cee671e5d24bdb43126ffb1492ac1e030de383342b121e32b7a35da0eff", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "dfcb72573b68c8526da923e5c5bbaa62dab6ed24f2dcbbc3ab62162b44e1fa23", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "9aaa9c3ff78e850ea1752faa0601714b3c8ac6d3be0a4b0e2a4d8766cf10f529", -"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "f36b89e77aa0ce5244c732160903224b33a5f62c8c976dfca4d150d8044704b5", -"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "300c1965dfb37cdaa0aee9be1d9c9ad8c570cdeece0261c6c162877487f36e30", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "0b2db848a7b4f3a33b3819751660e887485dfe8e06637fb91c394684443b4c77", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "82d005d4788f4c0c605bf315491bc4c269a9eec8a18ab12a75b0a44307906f19", +"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "70fe1f861ea5603d30356e3fd5b2d0a340991afefd12512bd12603ee0c4c2133", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "3acf2aabe2c0302d3ae245ced866f31b71c6329748084baa898d531fbdc1223d", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "72f19e48f96b14c4d89e2774d12a4a96b8ef524747d8d9cdb206b450bad2a548", +"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "dc08b8b90944a56d8b2bf4df6315ae5a27eda8b24d3d28ae5453f21b8ba12fa2", +"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "c3fd19af884a05d861a6ffa76694a276e1d4ca2f64c9ce95d3ae6bca05a19d39", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", "T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "1773453e7dfac379cfabed05d580635188332dedc4f8ce31d870a59e9d9e37d4", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "56fab77280e0572e9f5da0fc02355cc6a2b845fb3bbc21c3d82d960907075ed5", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1a8edb3c905ecac38d67516ee03b19231cc22973efffbca045501312d8fbec11", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "285e71c311297c5318db501da344a31918f0cef68ed078ad7c69213ca7b086fd", -"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "7f194ec0abe748474fbf737f4010d5994014813dae22aa9eeec9e62e10c8a3ca", -"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "25f85a11289a5c6a66ca943099621b941723a402c42672b48679b0bcce0c9596", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "a8a35cee671e5d24bdb43126ffb1492ac1e030de383342b121e32b7a35da0eff", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "e728479172563427f65df748dcc7a651f7902b2fd956b731259befe6b8e05321", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "8e58bdd1a1a2b7e259ad3945a6dd764a3865a97eaf75eae56aa1da6a12c013a4", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1c2a974662722f9f85f1f6083aebd7372d1b41877797c5410e598ab84d78ddb0", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "a8a35cee671e5d24bdb43126ffb1492ac1e030de383342b121e32b7a35da0eff", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "af3269087afaeced97bb423de120dbd149f198773cf1392852cfd7283421b6ed", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "3c9af0805660070fe39d29d4d03dc380b9a1a7fc228a26b1a8643ab3cb2d4873", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "0cd7412f6c2d43c8c1112ab861d47557f3654d50e0dea0ad72faa7a710c2f378", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5d6e41cd8e9b9c1205b199ba9f92440e84c4cc7370b017dfa622b5097d925ef1", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "af3269087afaeced97bb423de120dbd149f198773cf1392852cfd7283421b6ed", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "9d3ec6e1a95adb5fc77c772744680acb01f1810b87283f34df8f36ea811c422a", +"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "4c34c292016b02baa1bd19062e46838eae16c8d1885d892ec5490d07231c0473", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "23c3e828d63cdcb6c01951b876ee96c70c814d793127ea887f22f93092e50880", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "0e6362c3b31b16990348754baf35cb66afa665dc807e1b14c66bcc1fd3934488", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "fd55edf73803e1ade9bd32ef4c722a19b3b9b7babf230430f3fe4222e11276cc", +"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "07cdd682317c939898615e43b5783c69078c357bcac9447f55afda9eb1f74960", +"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "18d62c2336bb22f5f4d8702cb45ef630acc91efbb08d4a3fe79522d98e6536ee", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "70fe1f861ea5603d30356e3fd5b2d0a340991afefd12512bd12603ee0c4c2133", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "0fc0a94695200a3dd69764056a9393b434dbdb9b0f600adce9207b52654ad41e", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "d7f7f2ffbb59c62736e17b93a4d39356c0dddfe438c1d8d62d7fcc4065d6adb1", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4c32d18fba61b3353157e4cad4ae817cdf1b3c3b8ab1d551e3b63bafb45da9b4", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "70fe1f861ea5603d30356e3fd5b2d0a340991afefd12512bd12603ee0c4c2133", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ed9e5ea1ca087fe94c7a5fb9034f8620822504f05691e9907b57340b195e76d4", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "601ca170f99043c2560b2783feeaaaddec8eee5eace3e770db9f7f26e99e0751", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "006b2f7e0a4ceb1cdebf44ab783442764f07452b18feb554b33e4749a56a0256", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1d74fe4af420f2c6e46d559bea67197fe5a22dc3550e0fbdf8ccc7272f78410d", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ed9e5ea1ca087fe94c7a5fb9034f8620822504f05691e9907b57340b195e76d4", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "3019f057f27a842d4c5296c23ef54d5818b7aa9579f4ee8d3fbd3fc64a3f0e52", "T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "781ceb499bd3b323259e27419984ad16c3ab334c1f120ff078e16840d36df1ce", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "68e752c86b3d35d51785f845c0ff62bd4edb7927622cbfde8aa97f3757ade5df", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "ed785c65b8a825a7127829a4a281e4473b31caa7fad7f8a75eb48bcf05baaf2d", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "d8414808db339289cb05718a807e72ddbad702e9333b31038ad4bb4941717a10", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4b3e82eb47164a53b66976cf09c153fb185e8c126727ae9bcb9afb164691086d", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "59092e376cbfc602416a784732cb9d697de61cb01ee5a7ccb8724b39b1c4c226", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "75334e25e52bfd1a626e51154a6a9152943cd0e4d7d1b3bb400c1296a0c7bb5b", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "9fd00c992720efffa5a6b77f215ea251f6c6a87d696c800152bdedfafd54ba6a", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "2e47ce1709af1b44a9caf71b75773aeeaf7b1bfd98d6902035bc7228e95d1d67", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "fa0aa57a71a8b88d3ffe7a5109a64b20fb2e6d0a242e91e8b56c5adc8ab01371", "T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "951c2ddc7d4d69e805643712bda7dd62766b04bacf40979795ff5ede334bfa1d", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f1343e9ba4504bf0dfab314aa71fb5c81dbcd0790db4a3188c929e34e3ef42c1", "T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "008b3aad64040b236e2ed56dcd7dde40109dc3cd43fc6b70916716b59eb52491", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "cd98212c5d44015ee56adf13a34448ae2ad2114ebd0da72c6afe6742778d9ce8", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "0a0a1428627e2a477e9b36b6e481d9552f65e0461f856fe619dbb27f49e60084", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "e2887da87528c0ff166060cd6c573a23fdd9b659d51f1ff00d217d8776bad837", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "2cc2827b69dadb8747949abdd3c0cbb84af47eed325a536aebac929908c12f11", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "9ad3ceb5c7265f69e2d63b41abd9a3f6abe53832e79e321fbadbed928c861f63", "T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7a9fe818e1cb826f553e74a56365e6186905991a683011b0cc682ce3b1d567eb", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "5343b008c7f35d5b10aa45c2049b2209bffee0bcb0ee998a72976be45b8955a8", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "5b4b2c20ef6f5a3f282633bf2dbeb079b84885d65e245aa801033fa580dcdea4", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "d68a70beea0e8bd33ee15f4371ab0e564ff60a56ad485666f92f40fd7d0e13b1", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "5b4b2c20ef6f5a3f282633bf2dbeb079b84885d65e245aa801033fa580dcdea4", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "d68a70beea0e8bd33ee15f4371ab0e564ff60a56ad485666f92f40fd7d0e13b1", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "0f8cb4f8375eb1dbe48ae69feb5e96d670e31d19ba6fc816f18ad5632a618f5b", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "94bc640f6daab2e292f5a55a92a3c1001ff4144b302c1950c67991b33775f8a9", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "6bc8089b0d2f3a30555d238ee97114bc351eb1471e783a2ea7b9f06495f9e422", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "643252a02afd3deeb8f58302844fa6c80ff045cde9c750cb16a27337c7878144", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "6bc8089b0d2f3a30555d238ee97114bc351eb1471e783a2ea7b9f06495f9e422", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "643252a02afd3deeb8f58302844fa6c80ff045cde9c750cb16a27337c7878144", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "791720091b4bfba1ff063aab3505ffa84078ab83a57f2100c3275121f2e13c57", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "2991f7740e73217abe26967b7b0e9dd3c82ca079d45bb041ec043da2525a0a7f", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "26fb33b7ce361ac7dd9589a4334b699823d3b5a2b99cbc70c09e6377db24c143", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "5e8f3232649307f3218b0e3bdf8e4c4528f021a56da62aa86029806fdfed56cb", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "2f2865b471396ea6682f4f6795a3f3ee3b6861ad0df31a1a07f877a1f09920b6", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "dcd6c5522056ad757eb3416b1ae0f6328d38e0c46f85d69bd420f8d3931bcedc", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "011f12620f99b36e2b68e4b8e8e4671ec6cf8b8e7e012da753ae1d9d2e52050e", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "bb17d411ff9445eb9d8c0d6576feb51ee8b17ff7f8533c5ba3533111dde1d4bb", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "dbfdd58f9f6318ae0f63dfb36a82259c1fccc0964f65b5212bb0a31677ad1b6d", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "9ff116e49cf936d36d3c1cb20dd7e2d7d733a063e720ebb575351af2e36aab50", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "0cdb1eac4cc19560e7d7143839ea6536fe25b8a83a586a5b894b448f16390915", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ae0cefc7698a9cf01c64e1d007a21304339dc7cfdafae39dc9eafa70ed1bffe4", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "8c0fd374bd442e7efbe92a3c6ff801602c5f6bdd0b686e4e85b951787668fceb", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "f6658113764af86b275398bccbdb3a1b3b83f62ad649fa48f4ab5fce65274320", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "bb5a64d5444c968825091f9ee4bced4879c7a7107b2e44a5fca76f3bafe8b66f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "bb5a64d5444c968825091f9ee4bced4879c7a7107b2e44a5fca76f3bafe8b66f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "bb5a64d5444c968825091f9ee4bced4879c7a7107b2e44a5fca76f3bafe8b66f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "bb5a64d5444c968825091f9ee4bced4879c7a7107b2e44a5fca76f3bafe8b66f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a4e4de8932a6348dc611a576ac88a99c1beaee245ceb4c72200bf7eabfefc405", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a4e4de8932a6348dc611a576ac88a99c1beaee245ceb4c72200bf7eabfefc405", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a4e4de8932a6348dc611a576ac88a99c1beaee245ceb4c72200bf7eabfefc405", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a4e4de8932a6348dc611a576ac88a99c1beaee245ceb4c72200bf7eabfefc405", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "3af1b0268573020d12c314adcee4507204cca1029cce149947faad536436df24", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "3af1b0268573020d12c314adcee4507204cca1029cce149947faad536436df24", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "3af1b0268573020d12c314adcee4507204cca1029cce149947faad536436df24", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3af1b0268573020d12c314adcee4507204cca1029cce149947faad536436df24", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "3f0585ec7e4b394ad2dca2cbe748deceaa68705891e0d3016739e1af608c8137", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "3f0585ec7e4b394ad2dca2cbe748deceaa68705891e0d3016739e1af608c8137", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "3f0585ec7e4b394ad2dca2cbe748deceaa68705891e0d3016739e1af608c8137", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3f0585ec7e4b394ad2dca2cbe748deceaa68705891e0d3016739e1af608c8137", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", @@ -21664,33 +21664,33 @@ "T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "d838912633206340ccc4b5502a0c6e45691f1519eec8c285985f1139a0baacc0", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "62200f0b7b4850c744d5eb8e06ffb6a2a73cd3f8eb74a114870eaeac86ec68fe", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "e229e95cd113e01c3f8e573ab57320baf9e11af862c72106cfac5a9b5dd62186", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "5efc925a503e8df89aa086db4f28f709533e6dd8c27ede0161c3410426f02ff9", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "0162ad002b621aae62af78031b359ad605fc80c7d5cbe1dd2f0956966e331dd3", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f3bc600ad3d1a5c584a617e1f6830d29cc4a7e14a73493fc1911a5816aecf696", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "2f49ef576abe217e4793540c1eff90294e3b346a452e2aea7e8ea11da0271da5", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "20896a332b0346cab5e3dd0c9fb7bf07d1f00e50e0c8f7905a7ea71979f676c9", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "298116c84aef96bda549aa5f1244627346a9a9d9f7d0d5fea2abb2a927174ef9", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "79e417a455940e3794627ad64ce4a7d515a30c0bc3f021918e42a2848ee045d2", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "292e2a1e6595ef036531603f1c198057ec86822f04f46a0c26dfbd86caaca87a", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "71b69b5f58ee8840731682d6cfd27dd6f409389a200d1ca4a922e49ceaee4258", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "44c2621d7fc30e919a116c7edd35bdd14425efb1dbc0d8c132121bd63cbb391a", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c1f12142d9f64905d4c356406663a4a9b2f0b2c317c0ee9d65261e4b7f6fc3be", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "87b5b2ee596732221bab9dee5ca00646f58c530e0d9fc2098fbc8ec62e7718fc", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "af3269087afaeced97bb423de120dbd149f198773cf1392852cfd7283421b6ed", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e0bb957747b279ac57af446c4e4e87621b4a2a503cb0391ae066e44a5c129d09", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "10feb9387e1f3dc866eea1dd24a3ba7cfbf927a3b00525561e29ca9e9d58fb41", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "4d4de2de4d8e6ee772d30138ce533aed3b39d4408577df25fa6c3c52c186dc78", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1e4a744fce700df2f58ed3500380894a066b5fe56670e4f48a41c2f4a66ba69e", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "a0920ce86292a4c5832af3b5d75036973526ceb9ddf1339d612d91c159cb807c", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9f1c9de0961188c673f7ed1d446069da86cbec7024ec0f621ba8f12bb9022796", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "c2db78324b8f4aff2bfdeee256d4f11b70ac30469175c41d524d4fb345c92d5e", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3c0794d9f5667ddd22ec18979155f5fc6b23b98ba6a79740409e5120b01edcfe", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "8248d862af9670a905088d0cd0dc9bdb399726aa2d8ce2c6f54de1b175dd9a13", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "41b85cfd481844600e92f8f4d66109b8a19e14a48b30088eca0a0d0f904a58b8", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c6b0db92ff05236ec445cf27f16e00e3114c159f0870dc62ed3535e098f3e620", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "e4d9bbcd5b2e37387a63d587afb7005045757ee0c26c4a4db1f9d3eab0e6c24d", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "a657530198592dafc4b1e6dbc8b300309d9fb366a430da023143bba5e032327e", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "49a8b104c470d37b6fddaeacc699e32a2b12b551a8376a8e527a99b80a928a72", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "a1427208a92ed9b01ff8f190146a6c3309c57218f2446486d2f817fcdea9543a", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "02145de27938b54675b72603dd2e71e52ae6988de5b6259b9eae77f7e0ead127", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b752e89f18fae6f23c06ac097f9a3e26b3c6c99bc866b75c014367b625e0108f", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c326f39bd648f7ab01a8e36649c98416bc4e8143ca14ed4d1f89a5622e1198e7", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "ed9e5ea1ca087fe94c7a5fb9034f8620822504f05691e9907b57340b195e76d4", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "3ac8ef028ed989208fba33eb9eb002f927b6aa3fcb1b636538126a4dff388c92", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a070707144d919d272fa79ccf4b27ee48eeb13f651bad0b62d8c762593302f1f", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a5ebb050734bfaf02529e60ea23e4b447ca89e81145b05926d99ca4c7b5162c6", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a4194dc55b453f81356a676ecbb1054bfea1cfadffdefcd76ff2d44173afaae7", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "713cc05bb5e93931ad89c8b52969bd2d144ee53937de0cab792a02eb6a59035f", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "76c6b45946ea3e94cbc38a5837d0d3da4dee48b6ae5990d2491e2398861d9f19", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "c2cc51643cb8c2fdc24cf027fc8beef91c2540b99ad3e28894922b52d3da65f5", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "726a0ba4e0c7ff1fc4c68b331902f10d25c9f1df3e5b100229b825790d63eaba", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "ebfbb628a7bf8a7775c357b805ba8a81ef9f9b058b5d8a99e77a37488add0e71", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "e0c00dbf1130626c0a43feac6b040f5d0cb6d8756082addd36f8064323210b20", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "882c5c6c8edac9e66863bd68fc6ed0499d513ea6323aa60bf6e09a16d76ad2c8", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "f4680980eda05313b599886a378fcb9052262acfddf7f145dd12c45a71a6be8a", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4c3b970ac2849293770200e31bce8f8354506a7e8f50c0fcfee923732e19363d", "T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "358c9b933d82771e464d5b507922f3e47b8650dcc6c878a4d23b52cbd797578d", "T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "78af5e4336cd4dbe73e2345769086b1450126e56dc9a51fc596284dd88aa6ea1", "T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "9b6bd395f2326d4b7117c4eab5f5564cefea1c57454dc2c860e740a38bca97b9", @@ -21706,9 +21706,9 @@ "T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "665adbb0fb0f58f8cf290d93073647c860fd9f01e8e1f10ea96ef10b15b80167", "T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "40649aec8fb0bbfd862aea51570806213467c9a206a16b053118f4cbe2119391", "T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "9d2e1a926b9ca94a62515cdf042e2c6e0d207ed725b15d547e71e4b5aeb9e537", -"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "5ba148746b1614bbab1b8bb6da1fce6078d254f9596d2728c832581b69a57c33", -"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3cfab4b4612354707a749ee19792a1b8a05da6340b1d4ca24a9fe676a1c25aeb", -"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "ce449a1eaaad1e5d23f6a6a73b11c7f26e24995c292b91af49cc3fc008377c6e", +"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "01aa40e086023a858170b41dc9f7ed3a3fabddcaed094b53a77010f60a8d911e", +"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "ab3d62fd3405d5a1821caa6e52a2cf4ebdd2e11f7f28899e2d0b76b4c044ced2", +"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "26c4c525ddc8e73cb4b1664b896d346c7ca32d09b1514285e2d3b43a0c800f88", "T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a471fc53adeca7fda41c8709c79caff45113d1f5579c275d9f541b204b7b8641", @@ -22088,12 +22088,12 @@ "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "a58263a48ef2ca6ef3aa284fba244c11eb95865c432f5d22450ec5fa86b757ab", "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "eb9c0ff089a0f264bdf096bd4d43f6303ef64619c951b9a517e22c8dd3af835a", "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "479711e4a3978dd8960266a35cfa8e8023cd6b9cc98e795aba39336872f50576", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "333fddeb636e2028a2eaf5125031b8e879c910a1c0b2435116a61490eccc50fe", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f41cb06de002b7f254433f0e46cd2a1251e88794fe5dd5a9ee33d88371c98dc7", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "b5698819789cc99148fae67c73b0a986dcdf657b4e17cff03cb1e8ecbf47c40b", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "8ae7d5f9de91f14aa8c4cf2ce1f7f286c092c8a5f118ed5ee7cd146b26b62283", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "573ad6e4d7519121b4a8d6f2aad3109960f298104f1130c57e0007b170f89e03", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "ec7e9fabf871cb857e7d25c4c95376eb0e84d122dd0c16ace93e035590919271", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "982edf64cedddaae815853e093ec8954df7fe974b49cee9c44739802b885b04c", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "67f71d7f9541c3f512014a76b0efc26cdf1dda8772e5f069e72bd6a76953d435", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "994a9bc11c14d52528abf4d77f99f483becf3d7c2c4cb5e10a3ec9f03ba6f0ea", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6b14bbf5fef058ed9842498cc6a20016eff9b7ad94b8d1dc93eae5d0243a2f94", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d29d3206604645109dbbb1e2991a5c0d689ef586421882de2dd09c3e510cd8f7", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "a2bc2bfe0ba5615e1476ff88d975916bc3f6909443e17aa1baff95fc5d94e47f", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", @@ -22198,12 +22198,12 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "97aadb21b412ea8bf48cade97daed123efd2536ed9f91d596227ef91b83a87b4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "97aadb21b412ea8bf48cade97daed123efd2536ed9f91d596227ef91b83a87b4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "5dfe63e8198fb02a7c4ce96859cec0aad5a0782601c6bc3982892a3fdd2708be", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "5dfe63e8198fb02a7c4ce96859cec0aad5a0782601c6bc3982892a3fdd2708be", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "05d4fb27b291e1c9c2d4d2af6e87fcee089c1aecf6069323411bc2bfe8cbda14", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "05d4fb27b291e1c9c2d4d2af6e87fcee089c1aecf6069323411bc2bfe8cbda14", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "03f485cc1ea53fa38d93222c79728d610b3f29ba331f69a888ded6ada8c1eed0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "03f485cc1ea53fa38d93222c79728d610b3f29ba331f69a888ded6ada8c1eed0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "88c8932ef54d750bc0fee596d340d3d2e972a3ed2475be77d6ce80ae09c6064b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "88c8932ef54d750bc0fee596d340d3d2e972a3ed2475be77d6ce80ae09c6064b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "087845a3adbc3f490d97802945c2a4102d31990356fc4cced0b3377516291193", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "087845a3adbc3f490d97802945c2a4102d31990356fc4cced0b3377516291193", "T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "795cb9e2c97e96bba9f1c44a962289295bbeb921531ce32b2c1cae1b8457a05c", "T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", @@ -22257,9 +22257,9 @@ "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "2e169645c2e73193d19645350f2f7a4cf72d94ab3b8f302e6d69f58a4afe44f3", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "58434b1d22c06ad8d695314e248a7aea3f0e7e188be91f30ad99160f36fbd89e", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "0f1f17cf277a11031118a6a845f277ffc949d90fc75631f48b9764aef3737099", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "8a058fbaac46b313a3354b8fefebf2a0833030e35a165d915d1cbb2f0c10d920", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "4431673da390071f936d1455cd4b51bda7d56d2f5a21ad6601f4230fb43e4ca7", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "2a7668dc84abeee12b31e95af2aa36f3c7b351d4fa336047a1212f0959d06d04", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "b387bdc6ed3a8a01478c5de7a1235b10c1feafb6bd0ab1af5ee3dfcb950a3365", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "6c4d67e0256ab14e15ccd3d723395cd1aafd02a8d104e9eb644b2bf7314ca3f6", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "3668e1b1e9b59ddef6aac476a02bdaa3057e36fb6646b170fc27e02b32447dc3", "T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0031ebf3d1f85ac9600100b4f6aba2ac6d944a3164eb05cdc860ce113b6eb733", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", @@ -22296,109 +22296,109 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f5af46d9e60d47807c2e48bf08a55732ba85bd1fd85a0c108de73a34128f2ab8", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "44b36438f196ea0f6545a1bdc8eb484236b0c2cea5d34210598a971dd3e76d0b", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "70c1ab66695a22ba2e21b52315694b978d6d6a72e2bb7f44e98e7e75fed4b56e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "04543179422435480135ea5d3d4116732ac70721c587f100ac085005d3c5b4c6", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "717cfd0e78eea4147b73181368c5fc008ab9923e1f6de1822ea61fe7692ccf54", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "42cb8d9412b0bcaba931df153a18ae7a9756990b4b26f0ec34eb0e509bb23bb8", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "20c120920eb6408c69a6f0c458f0ec156354afd8d95abb411eb1115c5923a5d4", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c9d7f7d483631af61df1a223151a7002262cabf62955d520cb31aea4e691f2e8", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "810db838dd9d738d88e3205218383eccc9d2a810af7913942bcfa5690f24d48c", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "719b8d9bc16f846aca6fc8376f327ed5d4ae9f91c3b0523015327eed8eda7753", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c4abe19fba491778540404d717396cccc450587e793a5e912ba6a0b0c14b302e", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "bcc5b0bc196073b60371715d2a4078d3c9f550a64061660220b8a334ce7c8ec1", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "aff90ed75921e56224957857dd52ff40cd485a0ac10d159db2ac626eb5daea0a", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2bad14c79ca500ea56c4b0c273530a3c0a1aef79121ba465f5b843a097e7de43", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fb0495fe5d2a8286ee77bb4899d4e3c1bc683798199a7c2ac1746f83cc800319", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "db6528bf8d39fc477374acaa211d834e303043794d3d77ebbb06bf44bb906bb2", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "d4012c0bfa057626a70559737f3c7e2169689c3e9ca874b837977b510e1f8ce5", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e2f180f82bc691e0cefff4300d164e055c6cea2c7fe5310c979b6d1b8fcc948c", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c95bd6a8cb80dd299c84cee22e7a062cce156929d2500231eed99d4354f23d4a", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "0369731d256cc3d2bd9f5eddac4668ac2807ba46020750ada02d88752f3335b1", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7f366551f9858798a2a9597cf802e27e79622db5a74b26ea22c313e18e188970", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a88093c31618e6f65c72ceaa256d27b76e50e2139146804cd20d12c7c4d3ebed", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bf06049d012111541835807140eba7f7ce5922aa9d5dfa6b8f7a47fa4a20c119", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "49e41a30c55fc3b7e34401cd694a7577b8629d1584061e9dde3b93a645217bf7", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b6a25f536a57b08477ac68373e9e90fb4f2b6a15d684e0a7dec5baba2e9a80c4", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "35f9fcb0c85c36f6411827a83f00fe4a97b1caf533446bc35f667eeed73fb9d6", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "54c8e92452060dedb0caa302fe94ee3c8bd5c61eb6b9d3582529fa124972b130", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b0d1fda56af0c0a5615af153d1f1db719149f527a62352d8e9233a456f54b3ea", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9046ec4b4d33015bad9aedf760b4bec0a427df48981c2eb7688dd4bce53263af", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8311f2bede7536c1437aa5c12480946c359ac25c3a63bba90f907d1c405e95fc", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b43dd2ac68293fafae1e6c4e550fca48b19f54f74cd62969c241b39807e0b60a", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4634dcb25d09583dd08b53944e5fd36cd5e89c7ecd76e269d72e3f84fe0ba4bc", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c5ca632d26f59c68345d6b835b9e124d8d22a6566cfaaf5c30622dde2d28738a", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "55701107a964c496d1f5ed84a5b99176d94c3bedb1387ebadb7707f635cc32de", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "e13918c05fbcc66dd2f5298a0f7c41f949db6c7163369449dda4eac9c3ec33c9", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cbbe6b8328b25190ec6c33f57d0453fc061c537e3db4da453b6f66d9f13c7650", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8e5c4239f52b95c808db82644091bc3e3631f44153a1cd408b8b65fe301bfbf5", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2ff7e359a8dd49215861838ef1c91c4cd194c68bc3699e9f3253159008f6afe5", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "110d596884fcbf9482666220516f255c4718771cce484f6b6e06a7dc2be41e0d", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "37dab03bcf32b27eca3223a0b82824601bbc8bbdcc90f83c239870ee6f29f267", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "41dc8cb58cb9f4ca594f1a642202d09efa101617d48baf168fc72a5bc92e2cbf", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "99807e782689927ceee97f5ac488ab0657760d4aa19ca6260229b0b81d43b7b2", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "d13c4abf8412b229212e4098c079abe6701cae9fedd6938bd5b5b3d889530aa7", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "25905c9baf2044ee5352e6f4383631de6b6473a5f22aa024aaf290af9c3d84e3", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "d731ccbb4caea27257ca32c7d61100a60af84792fb4a3aae63a3c5befc4df82f", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "e5731801f5a7f572556c3a823f4053dcb2fa2b9243bfb7014ae251f12d638679", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d5d542e86f6da953354f5a07ba479155bd6f770038a033b956a05b902f960177", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c01b584669cd139b99d41d62a741520037530e21fbd6b0cac4ab34b8d87b1d0f", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "eef1409becf4f8b6d5fe375cf13f2c063a95b134e9389e3c285181af7de3e1b4", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "54ea1879eaa331159e97adfe6b1ccb1d52602f42bba3531acd7d2cdfe29a861d", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "3573cd7a723733000eacd3f44ba62b03fd20e25beb734ab43c10538804e170f2", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "117d4822d99e0d02e278343df79df49af3bcb8abaeedfa023f038fcfaf1cda04", "T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "54ea1879eaa331159e97adfe6b1ccb1d52602f42bba3531acd7d2cdfe29a861d", "T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3573cd7a723733000eacd3f44ba62b03fd20e25beb734ab43c10538804e170f2", "T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "117d4822d99e0d02e278343df79df49af3bcb8abaeedfa023f038fcfaf1cda04", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e4047afec5c89c9f4ac3bb6c7d31ae8114adc70990bd74279af2dc124e838c70", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "7a83349577a62cb88baf3a42f9e887993a47de7f981127da71d9ed6bac0f147d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "0d8fe329494ac328f46510a4a3f3207c360cc16433f81089175aec58556e9741", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "498b23b8902340d94da3356428144fd826cd290249df52c9e8bb4bd42f9cbbcf", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c9d717c19cdc93fe4c715b63058068d9e2e5ed10d1bc95ac627025e5a1b1d649", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "8c83f62959a972e926c516f37af31d51d30c9473cebdd0a5a545e402e18f771c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "246828791d780f2db0c6a993066a77e744ce7613023c1809cdccc25baae9f7f4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "81d1dd179147d0229ec64bbcc4de811e8e2daa5d0f5cb9d21ac40d0599df33d8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "72af02c66717e10693abdcbfe42eeb382d528e2deac0853f8d19f282d4a61ce5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "0671b3644a9407eddb1407643c55e3e7315dd864ba8a72d257c02ed853266879", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4fc1ddf0a7b106ae8c5602333eed2188ae905f5c60f48e14533528e7532250cd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "a44a0d0125f9f357637bb11afb2d98b26170837679140e30f1621600e3c5f539", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "d1ef05c41c78c4762a56b4dc8e5c4b48bef9f1179a1c4707c19649f1caf38d17", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "cd72a3cdb805314f4ebb31f7720845f7a7994b31b9f2cc06839b9918b64d363c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "21d3acc3c4bad38819309c1edf377d4febbebc59cf778dab98b902e1b7f43f6e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "48c07aa39fe510e8e1ec637c07ba06d2e42de023dd2c5fe7fa2430a60ee5d1b4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "fb4dbccf6467c404f573dc17f8240709af2ba0bfe12149bc5bf3ebc173103ae1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "39291b327c76dd3191ea917d59e5419ac3e2c3c395f43f960ffb999431158f64", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "a8f5e9d712927ffafd795a0681d11bc05a790b9beccbc4ad03809f32b0565a94", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "45382d15fe4b22fe03c7439cc10763e1ab5ae34b9409de052677a416ad1c5dbe", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "eaf1652fee08ab3f83680cca8727b8c66864f7d9dc04ceeaed9cac5969c658b2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "eaf1652fee08ab3f83680cca8727b8c66864f7d9dc04ceeaed9cac5969c658b2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "dadeceb6a2ca29c94121a938d21934ba04fec2bd9ee0b6e2e0f56d1e5127cc91", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "673b69b79a37aa1248d321b689a32d07b7a70021102c08d354c57fa5d5a853f3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "3ed9059fd8f5b3102186ee4ea735b281549f01423451e9446aaae2d30fbb494e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "07ea59c36209aa47efd219df0c20de5ce5487d5ea3a1a9a28310c9113ceec80c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "ecb6f4c6f1a8323c748541b16538a7e08c28169af1689f5efaf8fa3b041b1883", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "ccdbc473323b648054c71ace2c607d411aba88b25f745b10042e4742605d3cde", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "b5b739871e7f411bedcecd7c8d0576f9b26b39365148ddcd46be8c5de1486154", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "133e4180cdf4936e9a2b0d9d956f523bbfda7a04de81f4ecfe7f211d3b694d66", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "7a1ec0fe4bccf3e72f4b8afdf577ecb3b2419da57eebfab059f97fdb40ed4f1f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "16bf47cf0f7562757d02bae25bdbbe0277626827d4783ffdc417c2b282c83d79", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "c011e58956baae329d36dc0ce0b0c697dad705b09813c3e4535bea58cd1b1360", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "b7d2f58d313e4682102349b053cfacb3df4fb1adf612c2c3a96bccd30d4b6b44", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "f48bf269071a05b6869e9821b5b39da47cdddaa4a55448c664df64acd5792040", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "0810ee45484fa6045307680db5f56b3d48fba094e8fc594ba78b77f7d3b4ef2a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "90d7960007c08e6a76a529674e1084c760fbc2810227e9661ce940c350a4a6a3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "d9da31aa851e7bc91729b99ab0033a9415454d2605ee1c1f1ad988504bdd4023", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "6dbe18ea79b31ad44790d954f0548ae75bae678297d88b2e9b82ebe66bfe2c6a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3f2d39c5c8b045378467a66939cb7716c599cebcc11757475f29f4f85e326f38", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "5ca75bb5ac8b0f41bc0f1d5ee5b3d8e7b82a62e9fa0d709bf77719ff3fead0d1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ced8f602b80c4bb313948eb03b8f4ce37bbd3f591d77127ce45dac6487684c7c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "e1205647441720e7bc12eedbde28831cca6a7a47b75fc3e385762603290c313b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "914adf364a3376d2278ab36020944699a5566bb1906753c04d554c1e6189412b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "30678f161c2449343e7f01bf96543268c8944986dcc84bda7c2c021719d2f77d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cd5a29aae047a63744362a722f09fa32e753a425d98188491adb6000f63902ba", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0e873757383e625fee7888b25108f80f4f8d964b080259bba6a483a13e03cba3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "c6635987e7c5f9d2a1f346a366e5bad064f1ed5a0b2dacc79a541596668ba5fd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "43b1286def9ab198c004d418f36eee074be68914575ffef9e78c9b768d260abc", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c3fccf7e9b18fb3dda23bd2b659a065b5568b79e9fb17fcb730dc54afd3b52c8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "30893cd567984e966257c728d0e4499c1db72886ac1ada9b75bb644b97c92b49", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "84adb2233fa010f4c0a2e56eb6b795a37ca53ece1ed9c37a6efaacc5d1460700", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "c60f4b10c0bcc9e4f377d3f3ecc0678807c1ab93c79f5b9b7df7604a1741b510", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "dfbcf5599eec940358909f5d71780984dcf52a8e1c11f9fe3551fc37839ef957", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "613be751eed72283897783e822de6b4177651ea84eb72e4e509810b6ed351cf8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "be4d7a03ad6fbb3305e10c246be80ce49972058626e6d325ad7349bab0b4710b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "b3bb24caa5cf38f5157b3bb4528cc9e0ee471b4fb50d5a8c584ee921c0076060", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "732165637afcdca5c37e1ff1378e7ba0727afa36e1be57464035abd57eb64995", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "28a21480aee01437ae0de0fc09cebe6dcda9cc32a0278ebab6e984d8d12c658d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "3ed9059fd8f5b3102186ee4ea735b281549f01423451e9446aaae2d30fbb494e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "f5dc86def5c60f3dbbd7aee88f7b5e21a48991896d3208a712c332970a19e5ae", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "0b82611326bd89701a6ccfd263675b4213f4891e0eda0843368122ca14d7e746", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "04ff5da8d0cf95fd62bbe75195c0e4eee759708d232d5d217cb205d7e83ab959", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2696732dd6a2d4e11b7a0df1b03b475927ef075e9cdec721b2106a9130e44666", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "e9f75ac24b409309fc7f3d1b2ed1e01eab70fe113436edf9503b7a21c4d1ad57", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f2f81a53865c2764c88b5bbcedfb0e5aa49351b7b4407ebc499ad3299bde3712", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "9bc6727f7259109071f5d9be95bb3d3c4a04eca5d24f319d079ac6eefe7cd66d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "6d66fe53323db9b20c35bc35cf3a6f1b3843694c66677f9cf5f70c911a651c15", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "98fcabbf2fd2a263c96ea5fbe87834accac16956b6803abad345f4933458a342", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "2aa9288b92578460f66c2d4f9f2b4d3eb2c5752168d31f0678d1ec06cb432a52", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "c54db6495fd9476369dcfc5792a6e1fa7c0cb75a2c18e88ed9a7f309865a45ee", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "58dbbfe4e90febc8f50ccefc1f59eddfbce65bf70293279daa53430c35f5066e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "fb4fb18ff39bb986f5a9b9cc44cfa87c1265d35c68dfe51e20c30ca1944591d6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8bb7f3867bade9bf47e2ce6f60774a0b0e94caf308811e50595b2b542af6fd26", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9d22d86ac3d2f15115b9e06d8e2972bb0f8a387fc4df3b6cb8a22a4477314b5d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5f289a951430f28a98620df22f50d340937f7fd832cfd9ee95ca10a5f6b95356", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b042b745ef997af5c4d871a11381bcd82c84d52f37d4c72f57644f26bb639bcc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "38dc8ef8fa2626cef096f16915487af2b53ebcbbb9d98ae19d1000ef198019af", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "b4d4f8b43962a0dd3eb4221b7cbfa59abef91e5070b0c26e54b58534e8f27dd9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "3ef93d4d487af1e0658b8504316e54c1f036bc518ea07b63d2be137a746b0735", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "dec3e2ea4a4dc4c67f0756080cdeae094a29db8239c62dd5a3633d0b90a16c13", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "7ef5f725a7a2ec8435a87c30c422e4cb1a9eb85aabfdcae14420187c526a43bd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f87e3b72b4d5786cd6bce240c7737d51590851f31ad96630a3e6a4c029c04595", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "a55dd3be39266f335fb2db7123894186d00a272981e4da2a6b4cb35c94e3867e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "dfd530265406df734dd030ccc76b917127d4922edf928d1eeb1b5b9cb4989ba2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5498b7b82c650a8ccb11fc97cf20e936e5ed843cd342771e39338ade343b9502", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "ec49f69ee1b47c21512a61d19a560359a107733a20d90ad4dbcc057bd0522d9f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "9de84be3131968200c895e96e1264bac69e998f4ef6bed30cb6239cae0ba2c90", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "739bd36e286c287da621530a62abde21c46449a42c8d02adcd4abc75f552cf85", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "bc9cd3b878412500abf198049afdbd08051772a6ed04e81d6500d32b767a7541", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "bc9cd3b878412500abf198049afdbd08051772a6ed04e81d6500d32b767a7541", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d7c6d6ee5c85d347a65b7e71cc604ff5744c31e5f4ca1ba9191d57efdd83dda0", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "46850e17a982b490e40061997911f252d9c5d22289334919788c4aafb5bc0266", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "5f17701d6e2daee8fc262b9a426795b0f411d206ec10b87af68bf1804057d1ba", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8179a91363a5a4ddb77c7f952deaef6c01ab05e66e9298bea101e78266f4cb9d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "55ab15b380c6bcff1cf2b58a92c8a51224afe63f2d2274a98166c2c87cd909e3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a31d37f29205b43f54395d69609c9de1a0ad31a4027df622be4bb06c5fd8f109", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "b42fadb6fa59df81021db494a39453ea8e09c9c41e33927c68bb929cff3a349c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "6082646bcbe5f5980d8bc5636d6495ff5ab816121c9440892012641a3173aa04", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "6377d80b7ed2c61cd1afc8dcb9a44e07de610caf9c180ca05f16ac6e3beadb55", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e20192e08b71e843e78c64dbd95ff71cef21c68a81746e0ed0be560418b54ced", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "8fa5e5eeef94be93a134a23fd6090c79863eae03276c1b9cc66785b1edf4dc73", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "fe1cdb44c29e9c642e9a2f211958a98882af078956febbe75be3de78624682a0", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "88b3932f22fea6548e7e92ddafa3f323c5686595ef02f35347a0b29c5bcc944e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "93639e84e2ee145be05cfa455956c7b790714f79b6d39f85ca6461ec9205c0bd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "406a05cfa25ddab489c2f04fb97ec8f2ad9184a74fee4cc629c79dfb367b1ddd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "441f47fe088ab25aa5d866b7c5addf8e917d223eff55ea0c4afba1b712224fbc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "30c50dd6de7a6e1e66cd9b3a2b6bbe61ea4571647ea94ce36902f9b63e1861cd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "c6008bc0fd059cd13a185331d5caf139e420103fa18c2dfffa303c116347a54f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "ce0fae8ab0d904308185d4b7e95725148fe5e00e0cfe517b1076b7b8d81063ea", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "65241fa6a0325bfedc9aa77a41b8c1be468dafb4aa2aa5f61f70d57cdef3fe75", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "74daec11999062f1864f4cc071b93cddbc896dafb752bc12538d526dacf4dd09", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9ba7903360f0c1b523246ced8fc45107b5d296eea43334b79beebe8b495a7b2d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "9b0b740ecb4e5371f889e7a7481643b933b93adb3dc8a017afedc557157d81b7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "c7fb8d0d78e12e02e1bad0d99cf1d37bbfac8b91d3d7ced53d1ec19bae11571e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "5a55a3ee3e1058ab44c0aab3341d4756c91891684e7e0a67aebaffdebd4ed717", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7c4987e0ce8a7ccdff0727104fb23464e7b99d207cb06870e429f8ea98c3d57e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "88305ccd14e4cfd9feed615b86e89273f1b05bfe3e487eb560d11a38ed2599a6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "6ea8698aa791aeae3440694c9e424b9d60987f1b8e1dd57eeaa83cdae4481ac3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "becc7396547ed9b8fdc964c69f4df1dc5acf479eaa9fb2c1dfa0c9334cf24412", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "b48a34c1f88f8f016678c2af3b5b3710ca570bd1b37690c030881ae5edb8e788", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ac7510611a42222269e728defcc99ae34d69f868491c12963a1c57531fadc6d0", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "ac4f58aff217b933e81c8ec9e2ee4189b5c3bc208bb53170dfd5c742999906a1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "a7773fe76c14c2a8036f1df8ee5670315295650add36402c089d7a3e5339df6c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "1e2fab94dccaa90bb6e0a72782a26f8b7302f7930115365b460a4d28fd4e1499", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "f774087af826d8de13e230905f47369c68d049d7e802261825fec21b561c7bcb", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "12a5db9c59fd1f1ead48914b891f0c419029f688ed9de10e20c65ae0be917011", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "5cdff59e8c244aacc9a0537d9ab9dd2b75a2c21c646bc5c17b8f160a0b4fc3a4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "5f17701d6e2daee8fc262b9a426795b0f411d206ec10b87af68bf1804057d1ba", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "eb62eb9c7f7690cc72e087c7f9886860d73e3da8e51fdb462ade5bc4ea59fca0", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "cab7b916576d853cbcd5934c410e9b5e43101935bd5670bfed2ba0bf3befa836", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "7982e061c11650d4e08a37df0a3b4c44e9ecdff5d96995d2b6fc249541161f2a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bcadccaa3e6bba7ce314c85a0e6bbe3678093483bed32ccf4091eeb0429a5f27", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "fe1fe2b0316ed78710022e7b833f2ef1ce2ab5e407c52a90d0f5ede55f06ef86", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "c6d6b56181a96a3ec2545cdbb4bc2f1ce17095d0acecf4dcf335c025682f7582", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "aae25da2372c21865dd66c7c14bad462572f42948e1eae6e7a08c1f905888821", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "04823410a63e55bf0104d2872690d598e0ab894098ca1ef6188c82873d319449", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "652144c446465453efcf92d7de54351259c97a52ca8dd0b198fe4f6fd05a55b4", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "c549fcbee679ed387661e69745dbfc02d2947f9758ee093ee5f7d65ea86a68a5", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a9d9aa850e0dc9f499063aab247cb085f0eac146dbf4b87e693916ea588e83e4", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "9ca1f121ca849a7196a8e9a604f9ddbee3429e34887d13ac1ce7920ff61eaae2", @@ -22409,16 +22409,16 @@ "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "828cea0ad498570bed961ebed0bdbe3a9fa1f36931fbc04041628f0e632dabe6", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "b885c89be65a174664eb798112d22f649322707af4a473d3b7534b3bed3fc7b9", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d6e42ab30a7ff0c6291c466b43ab14c63285f3bcb7ade7f1c6314600a22cf2bd", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "272ea49435b7f6231a483b2bc2684d3ae43bd89f5e273b590aae51f2ad92372c", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "9b61acedd0f04c31d1649d38f05abbf19ae1ff02845b1fe6b7964bc2320c4390", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "447a14cbc0a915e615ec479a36a93c9bdc6a625cca6366db6cc1421bb852a29e", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "854601b9281a62a5b0cb878dbb6a7a21afd90599b4563f559a28acda80ec7d50", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ab623ad45b74ea03e607cf5f72b96a4e7e557c5920ab930f27f99862540e7bc9", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a79e275bbdb38242f3566af9fb43527da39f9a2ebc0dd694fb4640a58ef63aba", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a9c76f53d5bf6f922ce45265aa751178a0500d23c8a1864296f75d610d739794", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a1e71659bdbe631b66970708f001a4b7cc43274506f0d715ca2be85f64d54df2", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "d5c4d6469bfc629a642ff0b39c9e80647a4ca01003ccdcbc3147dcbd870a48f4", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c88bd52810306c59b72db19d40eca9a295a18ae649de4662b5be8a821072d1c2", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a769e907ed44cb762a522c8a92617f1a5e94bba374586aedfd78d6988121b5b6", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "b8fc121f2d31dd871ced9e0b9242c90b8f27dc0f9d710a205fa935ef2299c051", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "07259da831b9e89f22abda282daf1a7b3035d66930c905f2ac49f731b7d2681a", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "c77cdc27b24abfee82fa901d316942be37c1e0e0f87880720eb68ebf18bed709", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "bb2d1b8d786a762db2d66ecd450fbbc3181ae472e5513a978d23d0616d76356d", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "64bafc5a381f2c8e0c24cdb7a9e4d041466cfb649a1ae76aad14a0efa9dfc5a1", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "c17c61bcab6da52a8a0b990241cb56ece4afca521866b667a187feee69e9e887", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2bd1aa11efab6c1964c902506ab09ac4d9d2ff92609ca3458adad8156f7d8557", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "0083238a7e69614ce48ebb0132f6ecd05b42cd7361f70ee4abfce625bc7cb1ea", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "ef51489aeccafca3a4957c9667d90a6bae8adb6e99eef3d531a98cbe043c1239", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "76e913f8b1aaafab106cb28c28552fcf58dd820b21edeb447685fd1ab917cdc0", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "ed18662dba8f57fce37020dcba58c71ee0b21757b9ac3c202d2961525155dbd8", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8b32689ca556b1f3cca021075d5775b3c92f54a4e005eea594c4ab485930166c", @@ -22514,14 +22514,14 @@ "T3T1_fr_test_msg_applysettings.py::test_experimental_features": "d307564377f94703e22fc02ab1498e97cbc5e2bfb71f7b88f00a2cce14f9a9a2", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "d3bb8edb64d7038e21484cbb7379340faf16451be1adc3ce098d5d3254230580", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "e61f1319d6cf5bac005a01bf8773e2f8b378c8e4cf4181f712cf1874783d6c64", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "49bdba55553d69c77fc0c8e2370f640b8818dd2afc21d132ca05dc39824c446a", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ee3ece48bf768e81165c0b11e91144e0f28fff9363eddb08b4f77dd75f99a6e6", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "207a75b2835365c7b291fc0bda2cb0fec9382cb8f3d6280f029c6be8125592c8", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "ce1d3352fa0f611d1da3f7f196f4c1d584f3f305b25ecd92fec34b8f911544d1", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "1fa1a3a0edcc27794ded3ed14d3b5a7c8a68b574cd76d0e1520acf960836252a", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "fc19dab81070ada7be7bb522d6794ff6789738ba2447ebd31f4bcb3d280e6ec5", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6b3adbae8a08f11fac69601a3bec2069aea1424be4b95dbe4ddb352d9c87826a", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "23eb7379b99543a997f442b8694dc027572463ee00bd8f4ecf2204743e0cfc8e", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "5d99cf05e141d1d66be8bc05f7e889ea660053e161381754a45c7f7243c69ff9", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4007a436e18701aca6a7737d3b004fc69934bda8e65053d492f20a1e21892338", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "cf4cd7db63d330e1fbd92bbf18fceef4822d19d03d3bf25019a8ef33305fce76", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f06709ea6e043921595de3d7e37bcb600ab24b8e7cde4d12ee62a1e42fb5d12d", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "770bf5684f527d834085009148c8219b805dc12d0003f7870b4fa9aed784762d", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b75bb4a8a9503fdc37a2bc91fe196d1b18c59b02cd4b6b2ee65573d92ef0dae5", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "3e81f371ed47389dd3c9d6b3f82d84ab2d4fe323a662dff55c83aa3f3168ceb1", "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "238a85409cb204a19d34f0c1288075f9b14a35c63908ed74637a35aeca064475", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "4541c52f9b734a9984da48cbeb25ea266760ab43d4b4f93f6aa18086fffe71a8", "T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", @@ -22532,7 +22532,7 @@ "T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "fe344e320d9bf95923f59dd2901805fb1bf94dd13f201d04bdef760c0c49b7d5", "T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "b055fdb057bb851be0b9842c7224ed571cce19187a1fe8152618e1ce21a56bd3", "T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "1b5da29d470ff250403e22c32dc7c72d939ea9131c3fe257ad3b2e166eaafeac", -"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "437021f75f4e52bd45e71f8ad6767683aa6adc9120f8926749739ed54ae492d8", +"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "7f940b682ff03e9ebad797ed5546f576529295960a8c700f964bd881e0e55e76", "T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "cf379dd9e6ebe635db5b3f6f1cbd9bc0e2a81fc29879cf59d6574ca38ea6849f", "T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "86a80d9daf6b1394691c00e85e71d4fabffd737e84287cace1ce273adc50df35", "T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "9023b19c028b543f5a13dab8bf53ef5fdc198a2dfc2025abda53f0485d0f58b6", @@ -22545,7 +22545,7 @@ "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "3b00810433dbae44f2090a178f71434f3cc1ef79dacec4ddc947366996ac1d7f", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "d328e030acef43ad90a4aa373b9bc5dfeeec50f39f0a30e0852615f70cd8e67a", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "bb2cde812e5fb5ec92620422ccb6340d3017f33050fe06fa85e9c7f002f3f1f5", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "e250ba0f4b9d750a51195c2bb1547b9b9978f78f91640bef6b0750a96d635eb7", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "89e896d8116c823bdd8d6be6cc6d28ec744308f497009cd3dd15102966ac5a65", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "e65e22ed008ff3ce622e3a12f9e4312ee11b8895cc921b4c22e324f787437b37", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "249126dc934c739fba96069923d7affcf98c3fe0015316ee8b7f877225c600f4", "T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "249126dc934c739fba96069923d7affcf98c3fe0015316ee8b7f877225c600f4", @@ -22567,7 +22567,7 @@ "T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "94cf2c0d6cfd7aa9d6cffa99e75817e7bfe367ac648f581d5dcd8c9fbffa8122", "T3T1_fr_test_protection_levels.py::test_ping": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", "T3T1_fr_test_protection_levels.py::test_sign_message": "8708d568120deade9ca5c5eeada6afbca38ccea643bddc080d84681df371830c", -"T3T1_fr_test_protection_levels.py::test_signtx": "22787fed4e11537e2ecd74666a01224144f3e25860c33500f82cfa7c5a36ff95", +"T3T1_fr_test_protection_levels.py::test_signtx": "53fe801b965b27cf752831f91de57a262bc744057e6f830e4f5039a217d795ae", "T3T1_fr_test_protection_levels.py::test_unlocked": "a9888f03963112135ed5ff1dbbf90b75cfbccdef1e687168cc1150cb7c1e6516", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "449d2b8af3f5cb9606b7eca7094c19ca21f84ae0d32963c4708b7003553f22cd", "T3T1_fr_test_protection_levels.py::test_wipe_device": "a89487cfe5a64aa94de52d34f7ad09e13d0d68f460a4f2b9ff84476ee35540e2", @@ -22595,33 +22595,33 @@ "T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "4fc7bacdb18f29394a5094080523a1ad52a534b82786fe9e6b3e2d6c7f8d88f1", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "43af231fae30fa95a5d69ed81ecea21b2cac20c82d9c33d540c1330b122f4b0c", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "6b492360f624b8d5447ebc3312d4096dd70d5a053dd8f03426c027ac045ac818", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "72fe7410c659778e342aa21bcd3d7e4e1fdfb8f76da52453d94bf5fd5429d9ae", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "a501b42ccf296dda582f5beded37ccaf9a2317ed6b109067f7737d07dfd38c3f", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "7db34af0b39d6eca4dbb70b3f32a85377588dba8b8f708b4d9af4feff34feea6", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "fc933260419f5bd8e9bca61701b89d21dcf9aa50951d743c743775c8a4950408", "T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "30c754673db2c83455b0d7b94fecf893b6fbd38637f7cc115d5b49478244dbd2", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "ffbb7892182cef01c08f8c0ca617dad1a14637ec07afc7dedda8ad8d5eafa7f9", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "7a1d88cb1eaf9447ec02eb52b20371ca0de483ffa63abc758ccbb63bac4985c8", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "058f50a0b4c428921bb78ef4f309a9a4d90111794d12b13f1697cf74387c4398", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "37f666d6737d49bc68d5aca78a96f124616d05c0d16c4e2bfd3bb8fbd93d2b18", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6b3dc62f1dec95b169e7da7326e33d77cc811ef43600ac7324c91f20780bb38f", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "158445ac2b63b0c1d4066b99b3e7863f1cdc1f4d714c2f053dfa53e6d2d3468e", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "cf25bffa22c713f975e39a5a7a0ba6c70875d4e5cf61e8f1d4c5ee2a96943efe", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6737a751cf112afba82c711c2634ba906938d618d5107c445cf8b59a1413592a", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "3315290b7d1707a91715ed217923c7dd9e8fa2cdaa4557cfeed84a7e92cd0130", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "2268c91696a04bd06df97e485b0655d55b7ca2fa0506e247952e987550d473a0", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "91cb495dd4f663a8be0edbe129056dfc6a809887a95fc23c9c542f9c9ee0ecd5", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "56600665f99f7caa4ba1dc1e9d26db7256b7562e0d42f047272706f6f1470919", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e8ddf8d8f86b130f9d6b9407f21642055050831d29a7e48b0decbaddafb731f7", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "582bff38c89c08e5480f64d652e8d4aaaad105274b89991fc52da34286c79411", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "86d7910227b5d7735a774293a9e5a8b86a0b5230e80ef450a22e040756bc3439", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "50c3f3a0a0ed946ee6508219d306ffe85f2fd2325a5de4ccf2bb9f3b2f95d006", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e53649001168d65814916806848247ccff4aaa43d7a12f2774636bd073ff08c5", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "13faabbd7e77ee33e0819d58b61a10210c14d77f492e397a4c93e71254e61ddb", "T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "a845d85e04e8f0f02cf7cfed2c20f798574d2e9640e0e2d7ed8198ef46f75127", "T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "b7c29e3fe7bae709772ec2cd6aace64b4288968855eba9c5e1fdc3f09b220532", -"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "5ba148746b1614bbab1b8bb6da1fce6078d254f9596d2728c832581b69a57c33", -"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "31b39889ba4d6a879e62e946e09368a697dc76b45ccbf9c360cbe4c5f47d6df1", +"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "01aa40e086023a858170b41dc9f7ed3a3fabddcaed094b53a77010f60a8d911e", +"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "1dd26a492b13a1d134e7dc1ff012c70bf72d78222819d5abd5118fad2a8077c4", "T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "5c69f6b2cacb961310d99c83d24e8c9c595c3837a8b93b47e4aa48b1f723fbee", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "2b2d943e42a9ddb6db104851155ceeaf447cdd417561e8165d4771b9ed316dd4", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "64677335afe72a6c33c2ee353a72857f5038e39b72227056361108c0d8717585", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "002ecc8a846393ee774a1d3fd73e8729fc61315ebcc1191c0910587697c05bdd", -"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "8d265e36d9a26c15db12bf59b2c06541b9c2e78a976e1bfe09e0eb4503be3f94", +"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "56bfb9a79325c89289e3811511b54adb6d0dcc1f47c4775fd5d29c22302bc97b", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "dfc668c3decd704e20321b025358de0abe314e8dec0d0bbe5ff88e78d28aa3bc", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "65c7b92069009f67f187e6df2bf5b4339a6bd751993e41460d5b1b8eed8f467b", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "46eeac5ac625932b336eac6040733200b9d22851f7a54fc7c86934bac3d88a3e", +"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "06d31a7b304a08ed52661c73c64b808808951d4162d81d3b36f7e57aeae2ba00", "T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06" }, "persistence_tests": { From 4d46e282676cb81f3afa4031cd34a32746814b11 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Fri, 31 May 2024 20:22:18 +0200 Subject: [PATCH 198/626] chore(core): update T2B1 UI fixtures [no changelog] --- tests/ui_tests/fixtures.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 57f48a7ccd..d1babe0c8f 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -4772,9 +4772,7 @@ "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "33604ff6224895a896ff97cc69237325edc67eb5b9093bdd749e1178fd46572f", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "64e2f28d05f5c1d02459172193ae1956a056b2fcbcdcbfac4ed26cdf84cdb2db", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e70389916e7a58f87f709f002200ba54352d05b3715a4e9a8d616fbf709b51de", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "e70389916e7a58f87f709f002200ba54352d05b3715a4e9a8d616fbf709b51de", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "ced567f9a35dc5dd086c8d28b5f9f5721eb7267bfb436ec7d2ab55e96d133201", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "632d84848b4b38186e772b96d6a8c1137874363b5dd0ceb9fdaf8352333ed88d", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "632d84848b4b38186e772b96d6a8c1137874363b5dd0ceb9fdaf8352333ed88d", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "66a583906aee3754172d9670ba98169e31adc9b9bf61d199e0fb6b8e09f5a08d", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "46ca781d6deb347d6c06930d8c209aac515f6ba141ba78f0f110c232e23a156b", @@ -4782,14 +4780,10 @@ "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "08f7755171d23b3157264db6408a7a2330e362a99a8843ab89b5c8b3baef2321", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "df5db3a22b80daa13cc5a45fe91d417a4d12adcad1cd6177976840c094929884", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "ca43dabc6954e3945a7a8878c826f0d2feae5b4cb076c8ba6aca9b1f66f294c5", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "bdc8d219d8127076ee309436abb238e1a255b676757520dac15b209b92ea2156", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9bea40efae135113c646798bde6736b74bc7c74d094bbb7b79ce7a06657d1f8b", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "d8ef8260f890dd4072d6a4652f6c7a38141e5ddef96bf4dc1ff7643e865840c4", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "5fb94deb7c2d55e89600363ddba3b40d4fc1469bdc755b4ef5afcf3b0c5c2a95", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "8ab2d7271579d094cddde9cc404734d9511bba5b0bb28ac55e8c9f5ce1420d3c", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "c059723025780fa9f24d93798093501f4840b47751ace37b7e2a515bf52e5601", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "de3723f8aebc4bf79442d729aaab802d1291bf808a868e2f1519f44f6b75756f", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "a68eab69c8e643754a227f175b04cc5ff96c7d4321d3ac1e9b693261985149d7", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "43d44475e0849ffe6d0bfee856e0c9577c9de743b1020f523f0504af0af77138", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ed4662a5df961dcdde60d11bdda2e8984f49de7be79b7dd5e7c184de265fc219", From 1be6208a02f876635be18c1f5956dd9c716adb43 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 17 May 2024 15:03:04 +0200 Subject: [PATCH 199/626] feat(core): remove mandatory startup wait for models other than T2T1 and T2B1 [no changelog] --- core/src/boot.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/boot.py b/core/src/boot.py index 5028bdba4d..cb7a8fd88e 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -20,7 +20,13 @@ from apps.common.request_pin import can_lock_device, verify_user_pin -_WELCOME_SCREEN_MS = 1000 # how long do we want to show welcome screen (minimum) +# have to use "==" over "in (list)" so that it can be statically replaced +# with the correct value during the build process +# pylint: disable-next=consider-using-in +if utils.INTERNAL_MODEL == "T2T1" or utils.INTERNAL_MODEL == "T2B1": + _WELCOME_SCREEN_MS = 1000 # how long do we want to show welcome screen (minimum) +else: + _WELCOME_SCREEN_MS = 0 def enforce_welcome_screen_duration() -> None: From b178c10e8b8f9b471a3e719089c68f77868ce898 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 22 May 2024 22:19:14 +0200 Subject: [PATCH 200/626] fix(core): prevent overloading app with touch events [no changelog] --- .../extmod/modtrezorio/modtrezorio-poll.h | 67 +++++++++++-------- core/embed/extmod/modtrezorio/modtrezorio.c | 2 + core/embed/trezorhal/stm32f4/touch/ft6x36.c | 7 +- core/embed/trezorhal/unix/touch/touch.c | 1 - 4 files changed, 46 insertions(+), 31 deletions(-) diff --git a/core/embed/extmod/modtrezorio/modtrezorio-poll.h b/core/embed/extmod/modtrezorio/modtrezorio-poll.h index 7f1feb54ec..77ffaa547a 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio-poll.h +++ b/core/embed/extmod/modtrezorio/modtrezorio-poll.h @@ -31,6 +31,7 @@ #define POLL_WRITE (0x0100) extern bool usb_connected_previously; +extern uint32_t last_touch_sample_time; /// package: trezorio.__init__ @@ -84,38 +85,46 @@ STATIC mp_obj_t mod_trezorio_poll(mp_obj_t ifaces, mp_obj_t list_ref, } #if defined USE_TOUCH else if (iface == TOUCH_IFACE) { + const uint32_t evt = touch_read(); + if (evt) { - mp_obj_tuple_t *tuple = MP_OBJ_TO_PTR(mp_obj_new_tuple(3, NULL)); - const uint32_t etype = (evt >> 24) & 0xFFU; // event type - const uint32_t ex = (evt >> 12) & 0xFFFU; // x position - const uint32_t ey = evt & 0xFFFU; // y position - uint32_t exr; // rotated x position - uint32_t eyr; // rotated y position - switch (display_orientation(-1)) { - case 90: - exr = ey; - eyr = DISPLAY_RESX - ex; - break; - case 180: - exr = DISPLAY_RESX - ex; - eyr = DISPLAY_RESY - ey; - break; - case 270: - exr = DISPLAY_RESY - ey; - eyr = ex; - break; - default: - exr = ex; - eyr = ey; - break; + // ignore TOUCH_MOVE events if they are too frequent + if ((evt & TOUCH_MOVE) == 0 || + (hal_ticks_ms() - last_touch_sample_time > 10)) { + last_touch_sample_time = hal_ticks_ms(); + + mp_obj_tuple_t *tuple = MP_OBJ_TO_PTR(mp_obj_new_tuple(3, NULL)); + const uint32_t etype = (evt >> 24) & 0xFFU; // event type + const uint32_t ex = (evt >> 12) & 0xFFFU; // x position + const uint32_t ey = evt & 0xFFFU; // y position + uint32_t exr; // rotated x position + uint32_t eyr; // rotated y position + switch (display_orientation(-1)) { + case 90: + exr = ey; + eyr = DISPLAY_RESX - ex; + break; + case 180: + exr = DISPLAY_RESX - ex; + eyr = DISPLAY_RESY - ey; + break; + case 270: + exr = DISPLAY_RESY - ey; + eyr = ex; + break; + default: + exr = ex; + eyr = ey; + break; + } + tuple->items[0] = MP_OBJ_NEW_SMALL_INT(etype); + tuple->items[1] = MP_OBJ_NEW_SMALL_INT(exr); + tuple->items[2] = MP_OBJ_NEW_SMALL_INT(eyr); + ret->items[0] = MP_OBJ_NEW_SMALL_INT(i); + ret->items[1] = MP_OBJ_FROM_PTR(tuple); + return mp_const_true; } - tuple->items[0] = MP_OBJ_NEW_SMALL_INT(etype); - tuple->items[1] = MP_OBJ_NEW_SMALL_INT(exr); - tuple->items[2] = MP_OBJ_NEW_SMALL_INT(eyr); - ret->items[0] = MP_OBJ_NEW_SMALL_INT(i); - ret->items[1] = MP_OBJ_FROM_PTR(tuple); - return mp_const_true; } } else if (iface == USB_DATA_IFACE) { bool usb_connected = usb_configured() == sectrue ? true : false; diff --git a/core/embed/extmod/modtrezorio/modtrezorio.c b/core/embed/extmod/modtrezorio/modtrezorio.c index b740a12dc9..a40ae96263 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio.c +++ b/core/embed/extmod/modtrezorio/modtrezorio.c @@ -35,6 +35,8 @@ // Whether USB data pins were connected on last check (USB configured) bool usb_connected_previously = true; +uint32_t last_touch_sample_time = 0; + #define CHECK_PARAM_RANGE(value, minimum, maximum) \ if (value < minimum || value > maximum) { \ mp_raise_ValueError(#value " is out of range"); \ diff --git a/core/embed/trezorhal/stm32f4/touch/ft6x36.c b/core/embed/trezorhal/stm32f4/touch/ft6x36.c index f2a7d96bce..eb2b4cf30a 100644 --- a/core/embed/trezorhal/stm32f4/touch/ft6x36.c +++ b/core/embed/trezorhal/stm32f4/touch/ft6x36.c @@ -266,7 +266,12 @@ uint32_t touch_read(void) { touching = 1; return TOUCH_START | xy; } else if ((number_of_touch_points == 1) && (event_flag == EVENT_CONTACT)) { - return TOUCH_MOVE | xy; + if (touching) { + return TOUCH_MOVE | xy; + } else { + touching = 1; + return TOUCH_START | xy; + } } else if ((number_of_touch_points == 0) && (event_flag == EVENT_LIFT_UP)) { touching = 0; return TOUCH_END | xy; diff --git a/core/embed/trezorhal/unix/touch/touch.c b/core/embed/trezorhal/unix/touch/touch.c index f0fc83072b..b90b418d91 100644 --- a/core/embed/trezorhal/unix/touch/touch.c +++ b/core/embed/trezorhal/unix/touch/touch.c @@ -211,7 +211,6 @@ uint32_t touch_read(void) { if (ev_type != 0) { _touch_x = ev_x; _touch_y = ev_y; - break; } } return ev_type | touch_pack_xy(ev_x, ev_y); From a34c2cb9ddbbbfe1f4dd2c192c04a262e03645e1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 22 May 2024 22:19:50 +0200 Subject: [PATCH 201/626] feat(core): animated lockscreen for mercury UI [no changelog] --- core/embed/firmware/memory_T3T1.ld | 10 +- .../model_mercury/component/homescreen/mod.rs | 149 ++++++++++++------ .../embed/rust/src/ui/model_mercury/layout.rs | 4 +- core/embed/rust/src/ui/model_mercury/mod.rs | 1 + .../embed/rust/src/ui/shape/utils/imagebuf.rs | 4 +- core/src/boot.py | 5 +- 6 files changed, 112 insertions(+), 61 deletions(-) diff --git a/core/embed/firmware/memory_T3T1.ld b/core/embed/firmware/memory_T3T1.ld index d7538891bf..98b24ae4d3 100644 --- a/core/embed/firmware/memory_T3T1.ld +++ b/core/embed/firmware/memory_T3T1.ld @@ -87,11 +87,6 @@ SECTIONS { . = ALIGN(4); } >SRAM1 - .buf : ALIGN(4) { - *(.buf*); - . = ALIGN(4); - } >SRAM1 - .stack : ALIGN(8) { . = 16K; /* Overflow causes UsageFault */ } >SRAM2 @@ -110,6 +105,11 @@ SECTIONS { . = ALIGN(4); } >SRAM3 + .buf : ALIGN(4) { + *(.buf*); + . = ALIGN(4); + } >SRAM3 + .heap : ALIGN(4) { . = 37K; /* this acts as a build time assertion that at least this much memory is available for heap use */ . = ABSOLUTE(sram3_end); /* this explicitly sets the end of the heap */ diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs index 7575110641..e5d71bd87d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs @@ -1,16 +1,12 @@ use crate::{ io::BinaryData, strutil::TString, - time::{Duration, Instant}, + time::{Duration, Instant, Stopwatch}, translations::TR, trezorhal::usb::usb_configured, ui::{ component::{Component, Event, EventCtx, TimerToken}, - display::{ - image::{ImageInfo, ToifFormat}, - toif::Icon, - Color, Font, - }, + display::{image::ImageInfo, toif::Icon, Color, Font}, event::{TouchEvent, USBEvent}, geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, layout::util::get_user_custom_image, @@ -18,12 +14,16 @@ use crate::{ shape::{self, Renderer}, }, }; +use core::mem; use crate::ui::{ constant::{screen, HEIGHT, WIDTH}, - model_mercury::theme::{ - GREEN_LIGHT, GREY_LIGHT, ICON_CENTRAL_CIRCLE, ICON_KEY, ICON_LOCKSCREEN_FILTER, + model_mercury::{ + cshape, + theme::{GREY_LIGHT, ICON_KEY}, }, + shape::{render_on_canvas, ImageBuffer, Rgb565Canvas}, + util::animation_disabled, }; use super::{theme, Loader, LoaderMsg}; @@ -194,9 +194,6 @@ impl Component for Homescreen { ImageInfo::Jpeg(_) => shape::JpegImage::new_image(AREA.center(), self.image) .with_align(Alignment2D::CENTER) .render(target), - ImageInfo::Toif(_) => shape::ToifImage::new_image(AREA.center(), self.image) - .with_align(Alignment2D::CENTER) - .render(target), _ => {} } @@ -273,20 +270,54 @@ impl crate::trace::Trace for Homescreen { } } +#[derive(Default)] +struct LockscreenAnim { + pub timer: Stopwatch, +} +impl LockscreenAnim { + const DURATION_MS: u32 = 1500; + + pub fn is_active(&self) -> bool { + true + } + + pub fn eval(&self) -> f32 { + if animation_disabled() { + return 0.0; + } + let anim = pareen::prop(30.0f32); + + let t: f32 = self.timer.elapsed().to_millis() as f32 / 1000.0; + + anim.eval(t) + } +} + pub struct Lockscreen<'a> { + anim: LockscreenAnim, label: TString<'a>, image: BinaryData<'static>, bootscreen: bool, coinjoin_authorized: bool, + bg_image: ImageBuffer<Rgb565Canvas<'static>>, } impl<'a> Lockscreen<'a> { pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { + let image = get_homescreen_image(); + let mut buf = unwrap!(ImageBuffer::new(AREA.size()), "no image buf"); + + render_on_canvas(buf.canvas(), None, |target| { + shape::JpegImage::new_image(Point::zero(), image).render(target); + }); + Lockscreen { + anim: LockscreenAnim::default(), label, - image: get_homescreen_image(), + image, bootscreen, coinjoin_authorized, + bg_image: buf, } } } @@ -298,10 +329,29 @@ impl Component for Lockscreen<'_> { bounds } - fn event(&mut self, _ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if event == Event::Attach { + ctx.request_anim_frame(); + } + + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if (!animation_disabled()) { + if !self.anim.timer.is_running() { + self.anim.timer.start(); + } + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + if let Event::Touch(TouchEvent::TouchEnd(_)) = event { + let bg_img = mem::replace(&mut self.bg_image, None); + if let Some(bg_img) = bg_img { + drop(bg_img); + } return Some(HomescreenMsg::Dismissed); } + None } @@ -310,43 +360,46 @@ impl Component for Lockscreen<'_> { } fn render<'s>(&self, target: &mut impl Renderer<'s>) { + const OVERLAY_SIZE: i16 = 170; + const OVERLAY_BORDER: i16 = (AREA.height() - OVERLAY_SIZE) / 2; + const OVERLAY_OFFSET: i16 = 9; + let center = AREA.center(); - match ImageInfo::parse(self.image) { - ImageInfo::Jpeg(_) => shape::JpegImage::new_image(center, self.image) - .with_align(Alignment2D::CENTER) - .with_blur(4) - .with_dim(102) - .render(target), - ImageInfo::Toif(_) => shape::ToifImage::new_image(center, self.image) - .with_align(Alignment2D::CENTER) - //.with_blur(5) - .render(target), - _ => {} - } + // shape::RawImage::new(AREA, self.bg_image.view()) + // .render(target); - shape::ToifImage::new(center, ICON_LOCKSCREEN_FILTER.toif) - .with_align(Alignment2D::CENTER) - .with_fg(Color::black()) + cshape::UnlockOverlay::new(center + Offset::y(OVERLAY_OFFSET), self.anim.eval()) .render(target); - shape::ToifImage::new(center + Offset::y(12), ICON_CENTRAL_CIRCLE.toif) - .with_align(Alignment2D::CENTER) - .with_fg(GREEN_LIGHT) + shape::Bar::new(AREA.split_top(OVERLAY_BORDER + OVERLAY_OFFSET).0) + .with_bg(Color::black()) + .render(target); + + shape::Bar::new(AREA.split_bottom(OVERLAY_BORDER - OVERLAY_OFFSET).1) + .with_bg(Color::black()) + .render(target); + + shape::Bar::new(AREA.split_left(OVERLAY_BORDER).0) + .with_bg(Color::black()) .render(target); - shape::ToifImage::new(center + Offset::y(12), ICON_KEY.toif) + shape::Bar::new(AREA.split_right(OVERLAY_BORDER).1) + .with_bg(Color::black()) + .render(target); + + shape::ToifImage::new(center + Offset::y(OVERLAY_OFFSET), ICON_KEY.toif) .with_align(Alignment2D::CENTER) .with_fg(GREY_LIGHT) .render(target); let (locked, tap) = if self.bootscreen { ( - TR::lockscreen__title_not_connected, + Some(TR::lockscreen__title_not_connected), TR::lockscreen__tap_to_connect, ) } else { - (TR::lockscreen__title_locked, TR::lockscreen__tap_to_unlock) + (None, TR::lockscreen__tap_to_unlock) }; let mut label_style = theme::TEXT_DEMIBOLD; @@ -367,16 +420,18 @@ impl Component for Lockscreen<'_> { offset += 6; - locked.map_translated(|t| { - offset += theme::TEXT_SUB_GREY.text_font.visible_text_height(t); + if let Some(t) = locked { + t.map_translated(|t| { + offset += theme::TEXT_SUB_GREY.text_font.visible_text_height(t); - let text_pos = Point::new(0, offset); + let text_pos = Point::new(0, offset); - shape::Text::new(text_pos, t) - .with_font(theme::TEXT_SUB_GREY.text_font) - .with_fg(theme::TEXT_SUB_GREY.text_color) - .render(target); - }); + shape::Text::new(text_pos, t) + .with_font(theme::TEXT_SUB_GREY.text_font) + .with_fg(theme::TEXT_SUB_GREY.text_color) + .render(target); + }) + }; tap.map_translated(|t| { offset = theme::TEXT_SUB_GREY.text_font.text_baseline(); @@ -398,26 +453,20 @@ impl Component for Lockscreen<'_> { } } -pub fn check_homescreen_format(image: BinaryData, accept_toif: bool) -> bool { +pub fn check_homescreen_format(image: BinaryData) -> bool { match ImageInfo::parse(image) { ImageInfo::Jpeg(info) => { info.width() == HOMESCREEN_IMAGE_WIDTH && info.height() == HOMESCREEN_IMAGE_HEIGHT && info.mcu_height() <= 16 } - ImageInfo::Toif(info) => { - accept_toif - && info.width() == HOMESCREEN_TOIF_SIZE - && info.height() == HOMESCREEN_TOIF_SIZE - && info.format() == ToifFormat::FullColorBE - } _ => false, } } fn get_homescreen_image() -> BinaryData<'static> { if let Ok(image) = get_user_custom_image() { - if check_homescreen_format(image, true) { + if check_homescreen_format(image) { return image; } } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index f51e4d7268..d1306c9eff 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -592,7 +592,7 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m jpeg = theme::IMAGE_HOMESCREEN.into(); } - if !check_homescreen_format(jpeg, false) { + if !check_homescreen_format(jpeg) { return Err(value_error!("Invalid image.")); }; @@ -1418,7 +1418,7 @@ extern "C" fn new_show_lockscreen(n_args: usize, args: *const Obj, kwargs: *mut pub extern "C" fn upy_check_homescreen_format(data: Obj) -> Obj { let block = || { let buffer = data.try_into()?; - Ok(check_homescreen_format(buffer, false).into()) + Ok(check_homescreen_format(buffer).into()) }; unsafe { util::try_or_raise(block) } diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/model_mercury/mod.rs index c73ee96a77..10376795af 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/mod.rs @@ -7,6 +7,7 @@ pub mod component; pub mod constant; pub mod theme; +pub mod cshape; #[cfg(feature = "micropython")] pub mod flow; #[cfg(feature = "micropython")] diff --git a/core/embed/rust/src/ui/shape/utils/imagebuf.rs b/core/embed/rust/src/ui/shape/utils/imagebuf.rs index ee93865475..cfbc824c87 100644 --- a/core/embed/rust/src/ui/shape/utils/imagebuf.rs +++ b/core/embed/rust/src/ui/shape/utils/imagebuf.rs @@ -4,8 +4,8 @@ use crate::ui::{ }; /// Size of image buffer in bytes -/// (up to 180x180 pixel, 16-bit RGB565 image) -const IMAGE_BUFFER_SIZE: usize = 64 * 1024; +/// (up to 240x240 pixel, 16-bit RGB565 image) +const IMAGE_BUFFER_SIZE: usize = 240 * 240 * 2; #[repr(align(16))] struct AlignedBuffer { diff --git a/core/src/boot.py b/core/src/boot.py index cb7a8fd88e..f606da3dcd 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -49,7 +49,6 @@ async def bootscreen() -> None: Any non-PIN loaders are ignored during this function. Allowing all of them before returning. """ - lockscreen = Lockscreen(label=storage.device.get_label(), bootscreen=True) while True: try: @@ -59,7 +58,9 @@ async def bootscreen() -> None: ui.display.orientation(storage.device.get_rotation()) if utils.USE_HAPTIC: io.haptic.haptic_set_enabled(storage.device.get_haptic_feedback()) - + lockscreen = Lockscreen( + label=storage.device.get_label(), bootscreen=True + ) await lockscreen await verify_user_pin() storage.init_unlocked() From e53e7cc13b9806bf12b48d189747b724363fafc6 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 22 May 2024 22:25:03 +0200 Subject: [PATCH 202/626] refactor(core): mercury ui: downgraded homescreen module to file [no changelog] --- .../model_mercury/component/{homescreen/mod.rs => homescreen.rs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename core/embed/rust/src/ui/model_mercury/component/{homescreen/mod.rs => homescreen.rs} (100%) diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/component/homescreen/mod.rs rename to core/embed/rust/src/ui/model_mercury/component/homescreen.rs From 429a558d782b30ecfd7b4a5b64488c2b68ebeb32 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 22 May 2024 22:30:46 +0200 Subject: [PATCH 203/626] fix(core): mercury ui animations only ask for frame on timer event [no changelog] --- .../src/ui/model_mercury/component/hold_to_confirm.rs | 9 ++++++--- .../rust/src/ui/model_mercury/component/status_screen.rs | 8 +++++--- .../src/ui/model_mercury/component/tap_to_confirm.rs | 8 +++++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs index 6ea0b1556f..ff29ba1f26 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -231,9 +231,12 @@ impl Component for HoldToConfirm { } _ => (), } - if self.anim.is_active() { - ctx.request_anim_frame(); - ctx.request_paint(); + + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if self.anim.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } } None } diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index 0ee73362d8..4c6dfba12b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -166,9 +166,11 @@ impl Component for StatusScreen { ctx.request_paint(); ctx.request_anim_frame(); } - if self.anim.is_active() { - ctx.request_anim_frame(); - ctx.request_paint(); + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if self.anim.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } } match self.dismiss_type { diff --git a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs index 237118d22e..4139ba0c82 100644 --- a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs @@ -179,9 +179,11 @@ impl Component for TapToConfirm { } _ => (), } - if self.anim.is_active() { - ctx.request_anim_frame(); - ctx.request_paint(); + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if self.anim.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } } if self.anim.is_finished() { return Some(()); From 88078db700f0bc5eb7d2290f03e1410f3c5ff170 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 23 May 2024 00:07:42 +0200 Subject: [PATCH 204/626] feat(core): mercury ui homescreen [no changelog] --- .../ui/model_mercury/component/homescreen.rs | 105 +++++++++--------- .../src/ui/model_mercury/component/mod.rs | 2 +- 2 files changed, 53 insertions(+), 54 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index e5d71bd87d..7ddcb3db95 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -8,7 +8,7 @@ use crate::{ component::{Component, Event, EventCtx, TimerToken}, display::{image::ImageInfo, toif::Icon, Color, Font}, event::{TouchEvent, USBEvent}, - geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, + geometry::{Alignment, Alignment2D, Offset, Point, Rect}, layout::util::get_user_custom_image, model_mercury::{constant, theme::IMAGE_HOMESCREEN}, shape::{self, Renderer}, @@ -17,10 +17,11 @@ use crate::{ use core::mem; use crate::ui::{ + component::Label, constant::{screen, HEIGHT, WIDTH}, model_mercury::{ cshape, - theme::{GREY_LIGHT, ICON_KEY}, + theme::{GREY_LIGHT, ICON_KEY, TITLE_HEIGHT}, }, shape::{render_on_canvas, ImageBuffer, Rgb565Canvas}, util::animation_disabled, @@ -51,7 +52,7 @@ pub struct HomescreenNotification { } pub struct Homescreen { - label: TString<'static>, + label: Label<'static>, notification: Option<(TString<'static>, u8)>, image: BinaryData<'static>, hold_to_lock: bool, @@ -70,7 +71,7 @@ impl Homescreen { hold_to_lock: bool, ) -> Self { Self { - label, + label: Label::new(label, Alignment::Start, theme::TEXT_DEMIBOLD).vertically_centered(), notification, image: get_homescreen_image(), hold_to_lock, @@ -81,10 +82,10 @@ impl Homescreen { fn level_to_style(level: u8) -> (Color, Icon) { match level { - 3 => (theme::YELLOW, theme::ICON_COINJOIN), - 2 => (theme::VIOLET, theme::ICON_MAGIC), - 1 => (theme::YELLOW, theme::ICON_WARN), - _ => (theme::RED, theme::ICON_WARN), + 3 => (theme::ORANGE_DARK, theme::ICON_COINJOIN), + 2 => (theme::ORANGE_DARK, theme::ICON_MAGIC), + 1 => (theme::ORANGE_DARK, theme::ICON_WARN), + _ => (theme::ORANGE_DARK, theme::ICON_WARN), } } @@ -170,6 +171,8 @@ impl Component for Homescreen { fn place(&mut self, bounds: Rect) -> Rect { self.loader.place(AREA.translate(LOADER_OFFSET)); + self.label + .place(bounds.split_top(TITLE_HEIGHT).0.translate(Offset::x(4))); bounds } @@ -190,65 +193,61 @@ impl Component for Homescreen { if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { - match ImageInfo::parse(self.image) { - ImageInfo::Jpeg(_) => shape::JpegImage::new_image(AREA.center(), self.image) + if let ImageInfo::Jpeg(_) = ImageInfo::parse(self.image) { + shape::JpegImage::new_image(AREA.center(), self.image) .with_align(Alignment2D::CENTER) - .render(target), - _ => {} + .render(target); } - self.label.map(|t| { - let r = Rect::new(Point::new(6, 198), Point::new(234, 233)); - shape::Bar::new(r) - .with_bg(Color::black()) - .with_alpha(89) - .with_radius(3) - .render(target); + let label_width = self + .label + .text() + .map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); - let style = theme::TEXT_DEMIBOLD; - let pos = Point::new(AREA.center().x, LABEL_Y); - shape::Text::new(pos, t) - .with_align(Alignment::Center) - .with_font(style.text_font) - .with_fg(theme::FG) - .render(target); - }); + let r = Rect::new(Point::new(-30, -30), Point::new(label_width + 12, 42)); + shape::Bar::new(r) + .with_bg(Color::black()) + .with_alpha(160) + .with_radius(16) + .render(target); + + self.label.render(target); if let Some(notif) = self.get_notification() { - const NOTIFICATION_HEIGHT: i16 = 36; - const NOTIFICATION_BORDER: i16 = 6; - const TEXT_ICON_SPACE: i16 = 8; - - let banner = AREA - .inset(Insets::sides(NOTIFICATION_BORDER)) - .with_height(NOTIFICATION_HEIGHT) - .translate(Offset::y(NOTIFICATION_BORDER)); - - shape::Bar::new(banner) - .with_radius(2) - .with_bg(notif.color) - .render(target); + const NOTIFICATION_HEIGHT: i16 = 34; + const NOTIFICATION_TOP: i16 = 202; + const NOTIFICATION_BORDER: i16 = 16; notif.text.map(|t| { let style = theme::TEXT_BOLD; - let icon_width = notif.icon.toif.width() + TEXT_ICON_SPACE; + + let text_width = style.text_font.text_width(t); + + let banner = Rect::new( + Point::new( + AREA.center().x - NOTIFICATION_BORDER - text_width / 2, + NOTIFICATION_TOP, + ), + Point::new( + AREA.center().x + NOTIFICATION_BORDER + text_width / 2, + NOTIFICATION_TOP + NOTIFICATION_HEIGHT, + ), + ); + let text_pos = Point::new( - style - .text_font - .horz_center(banner.x0 + icon_width, banner.x1, t), + style.text_font.horz_center(banner.x0, banner.x1, t), style.text_font.vert_center(banner.y0, banner.y1, "A"), ); - shape::Text::new(text_pos, t) - .with_font(style.text_font) - .with_fg(style.text_color) + shape::Bar::new(banner) + .with_radius(16) + .with_bg(theme::ORANGE_DARK) + .with_alpha(160) .render(target); - let icon_pos = Point::new(text_pos.x - icon_width, banner.center().y); - - shape::ToifImage::new(icon_pos, notif.icon.toif) - .with_fg(style.text_color) - .with_align(Alignment2D::CENTER_LEFT) + shape::Text::new(text_pos, t) + .with_font(style.text_font) + .with_fg(theme::ORANGE_LIGHT) .render(target); }); } @@ -266,7 +265,7 @@ impl Component for Homescreen { impl crate::trace::Trace for Homescreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Homescreen"); - t.string("label", self.label); + t.child("label", &self.label); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 5c0575efdb..fab985724b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -15,7 +15,7 @@ mod frame; #[cfg(feature = "translations")] mod hold_to_confirm; -#[cfg(feature = "micropython")] +#[cfg(feature = "translations")] mod homescreen; #[cfg(feature = "translations")] mod keyboard; From 0c4b1d6213364de950bf6c6014a1185c2cbd949c Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 23 May 2024 08:48:26 +0200 Subject: [PATCH 205/626] fix(core): fix framebuffer switching, was too fast so the change was sometimes not visible [no changelog] --- core/embed/trezorhal/bg_copy.h | 2 + .../stm32f4/xdisplay/st-7789/display_driver.c | 2 +- .../stm32f4/xdisplay/st-7789/display_fb.c | 73 ++++++++++++------- .../stm32f4/xdisplay/st-7789/display_fb.h | 2 + core/embed/trezorhal/stm32u5/bg_copy.c | 10 +++ 5 files changed, 62 insertions(+), 27 deletions(-) diff --git a/core/embed/trezorhal/bg_copy.h b/core/embed/trezorhal/bg_copy.h index a3cc2f2fa5..2bbc8959d7 100644 --- a/core/embed/trezorhal/bg_copy.h +++ b/core/embed/trezorhal/bg_copy.h @@ -22,4 +22,6 @@ void bg_copy_wait(void); */ void bg_copy_start_const_out_8(const uint8_t *src, uint8_t *dst, size_t size); +void bg_copy_abort(void); + #endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c index 44246ecafd..2a3cd3e6e6 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c @@ -84,7 +84,7 @@ void display_reinit(void) { void display_finish_actions(void) { #ifdef XFRAMEBUFFER #ifndef BOARDLOADER - bg_copy_wait(); + wait_for_fb_switch(); #endif #endif } diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c index 8c4400b0d3..8a53c48823 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c @@ -63,38 +63,35 @@ void display_physical_fb_clear(void) { } #ifndef BOARDLOADER -static volatile bool pending_fb_switch = false; +static volatile uint16_t pending_fb_switch = 0; static volatile uint32_t last_fb_update_time = 0; #endif #ifndef BOARDLOADER void DISPLAY_TE_INTERRUPT_HANDLER(void) { - HAL_NVIC_DisableIRQ(DISPLAY_TE_INTERRUPT_NUM); - - if (current_frame_buffer == 1) { - bg_copy_start_const_out_8((uint8_t *)physical_frame_buffer_1, - (uint8_t *)DISPLAY_DATA_ADDRESS, - DISPLAY_RESX * DISPLAY_RESY * 2); - + if (pending_fb_switch == 1) { + if (current_frame_buffer == 1) { + bg_copy_start_const_out_8((uint8_t *)physical_frame_buffer_1, + (uint8_t *)DISPLAY_DATA_ADDRESS, + DISPLAY_RESX * DISPLAY_RESY * 2); + + } else { + bg_copy_start_const_out_8((uint8_t *)physical_frame_buffer_0, + (uint8_t *)DISPLAY_DATA_ADDRESS, + DISPLAY_RESX * DISPLAY_RESY * 2); + } + last_fb_update_time = HAL_GetTick(); + pending_fb_switch = 2; + } else if (pending_fb_switch == 2) { + HAL_NVIC_DisableIRQ(DISPLAY_TE_INTERRUPT_NUM); + pending_fb_switch = 0; } else { - bg_copy_start_const_out_8((uint8_t *)physical_frame_buffer_0, - (uint8_t *)DISPLAY_DATA_ADDRESS, - DISPLAY_RESX * DISPLAY_RESY * 2); + HAL_NVIC_DisableIRQ(DISPLAY_TE_INTERRUPT_NUM); + pending_fb_switch = 0; } - - pending_fb_switch = false; - last_fb_update_time = HAL_GetTick(); __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); } -static void wait_for_fb_switch(void) { - while (pending_fb_switch) { - __WFI(); - } - bg_copy_wait(); -} -#endif - static void copy_fb_to_display(const uint16_t *fb) { for (int i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { // 2 bytes per pixel because we're using RGB 5-6-5 format @@ -102,6 +99,25 @@ static void copy_fb_to_display(const uint16_t *fb) { } } +void wait_for_fb_switch(void) { + if (is_mode_handler()) { + if (pending_fb_switch != 0) { + if (current_frame_buffer == 0) { + copy_fb_to_display((uint16_t *)physical_frame_buffer_1); + } else { + copy_fb_to_display((uint16_t *)physical_frame_buffer_0); + } + pending_fb_switch = 0; + } + } else { + while (pending_fb_switch != 0) { + __WFI(); + } + bg_copy_wait(); + } +} +#endif + static void switch_fb_manually(void) { // sync with the panel refresh while (GPIO_PIN_SET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) { @@ -131,7 +147,7 @@ static void switch_fb_in_background(void) { memcpy(physical_frame_buffer_0, physical_frame_buffer_1, sizeof(physical_frame_buffer_0)); - pending_fb_switch = true; + pending_fb_switch = 1; __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); svc_enableIRQ(DISPLAY_TE_INTERRUPT_NUM); } else { @@ -139,7 +155,7 @@ static void switch_fb_in_background(void) { memcpy(physical_frame_buffer_1, physical_frame_buffer_0, sizeof(physical_frame_buffer_1)); - pending_fb_switch = true; + pending_fb_switch = 1; __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); svc_enableIRQ(DISPLAY_TE_INTERRUPT_NUM); } @@ -165,12 +181,17 @@ display_fb_info_t display_get_frame_buffer(void) { void display_refresh(void) { #ifndef BOARDLOADER - wait_for_fb_switch(); - display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); if (is_mode_handler()) { + if (pending_fb_switch != 0) { + pending_fb_switch = 0; + bg_copy_abort(); + } + display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); switch_fb_manually(); } else { + wait_for_fb_switch(); + display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); switch_fb_in_background(); } #else diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h index 0afa1de2d2..437b546466 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h @@ -29,6 +29,8 @@ void display_physical_fb_clear(void); void display_ensure_refreshed(void); +void wait_for_fb_switch(void); + #endif // XFRAMEBUFFER #endif // TREZORHAL_DISPLAY_FB_H diff --git a/core/embed/trezorhal/stm32u5/bg_copy.c b/core/embed/trezorhal/stm32u5/bg_copy.c index d47f776d25..054328c962 100644 --- a/core/embed/trezorhal/stm32u5/bg_copy.c +++ b/core/embed/trezorhal/stm32u5/bg_copy.c @@ -95,3 +95,13 @@ void bg_copy_start_const_out_8(const uint8_t *src, uint8_t *dst, size_t size) { HAL_DMA_Start_IT(&DMA_Handle, (uint32_t)src, (uint32_t)dst, data_to_send); } + +void bg_copy_abort(void) { + dma_transfer_remaining = 0; + dma_data_transferred = 0; + HAL_DMA_Abort(&DMA_Handle); + HAL_DMA_DeInit(&DMA_Handle); + HAL_NVIC_DisableIRQ(GPDMA1_Channel0_IRQn); + data_src = NULL; + data_dst = NULL; +} From 5f30194a348315169bc09500cc052c9d3242db65 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 23 May 2024 13:21:24 +0200 Subject: [PATCH 206/626] fix(core): prevent unnecessary display refreshing [no changelog] --- core/src/trezor/ui/layouts/mercury/__init__.py | 3 ++- core/src/trezor/ui/layouts/mercury/fido.py | 4 ++-- core/src/trezor/ui/layouts/mercury/homescreen.py | 8 ++++---- core/src/trezor/ui/layouts/progress.py | 8 ++++---- core/src/trezor/ui/layouts/tr/__init__.py | 3 ++- core/src/trezor/ui/layouts/tr/homescreen.py | 8 ++++---- core/src/trezor/ui/layouts/tt/__init__.py | 3 ++- core/src/trezor/ui/layouts/tt/fido.py | 4 ++-- core/src/trezor/ui/layouts/tt/homescreen.py | 8 ++++---- 9 files changed, 26 insertions(+), 23 deletions(-) diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 51fdb01c00..4a3197875c 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -52,7 +52,8 @@ def _paint(self) -> None: painted = self.layout.paint() - ui.refresh() + if painted: + ui.refresh() if storage_cache.homescreen_shown is not None and painted: storage_cache.homescreen_shown = None diff --git a/core/src/trezor/ui/layouts/mercury/fido.py b/core/src/trezor/ui/layouts/mercury/fido.py index f4f628e469..390fb4b7e0 100644 --- a/core/src/trezor/ui/layouts/mercury/fido.py +++ b/core/src/trezor/ui/layouts/mercury/fido.py @@ -36,8 +36,8 @@ async def handle_debug_confirm(self) -> None: (io.TOUCH_END, 220, 220), ): msg = self.layout.touch_event(event, x, y) - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() if msg is not None: raise Result(msg) diff --git a/core/src/trezor/ui/layouts/mercury/homescreen.py b/core/src/trezor/ui/layouts/mercury/homescreen.py index bd608aefe0..da8021b2d8 100644 --- a/core/src/trezor/ui/layouts/mercury/homescreen.py +++ b/core/src/trezor/ui/layouts/mercury/homescreen.py @@ -19,8 +19,8 @@ def __init__(self, layout: Any) -> None: super().__init__(layout=layout) def _paint(self) -> None: - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() def _first_paint(self) -> None: if storage_cache.homescreen_shown is not self.RENDER_INDICATOR: @@ -76,8 +76,8 @@ async def usb_checker_task(self) -> None: while True: is_connected = await usbcheck self.layout.usb_event(is_connected) - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() def create_tasks(self) -> Tuple[loop.AwaitableTask, ...]: return super().create_tasks() + (self.usb_checker_task(),) diff --git a/core/src/trezor/ui/layouts/progress.py b/core/src/trezor/ui/layouts/progress.py index 53b960a83d..8fe3f6a108 100644 --- a/core/src/trezor/ui/layouts/progress.py +++ b/core/src/trezor/ui/layouts/progress.py @@ -36,8 +36,8 @@ def __init__( self.layout = layout ui.backlight_fade(ui.BacklightLevels.DIM) self.layout.attach_timer_fn(self.set_timer) - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() ui.backlight_fade(ui.BacklightLevels.NORMAL) def set_timer(self, token: int, deadline: int) -> None: @@ -46,8 +46,8 @@ def set_timer(self, token: int, deadline: int) -> None: def report(self, value: int, description: str | None = None): msg = self.layout.progress_event(value, description or "") assert msg is None - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() def progress( diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 58288a78f6..aaaa198230 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -56,7 +56,8 @@ def _paint(self) -> None: painted = self.layout.paint() - ui.refresh() + if painted: + ui.refresh() if storage_cache.homescreen_shown is not None and painted: storage_cache.homescreen_shown = None diff --git a/core/src/trezor/ui/layouts/tr/homescreen.py b/core/src/trezor/ui/layouts/tr/homescreen.py index ae82749c62..9bbd74738a 100644 --- a/core/src/trezor/ui/layouts/tr/homescreen.py +++ b/core/src/trezor/ui/layouts/tr/homescreen.py @@ -19,8 +19,8 @@ def __init__(self, layout: Any) -> None: super().__init__(layout=layout) def _paint(self) -> None: - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() def _first_paint(self) -> None: if storage_cache.homescreen_shown is not self.RENDER_INDICATOR: @@ -65,8 +65,8 @@ async def usb_checker_task(self) -> None: while True: is_connected = await usbcheck self.layout.usb_event(is_connected) - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() def create_tasks(self) -> Tuple[loop.AwaitableTask, ...]: return super().create_tasks() + (self.usb_checker_task(),) diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 089926ac72..25aefe2c55 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -58,7 +58,8 @@ def _paint(self) -> None: painted = self.layout.paint() - ui.refresh() + if painted: + ui.refresh() if storage_cache.homescreen_shown is not None and painted: storage_cache.homescreen_shown = None diff --git a/core/src/trezor/ui/layouts/tt/fido.py b/core/src/trezor/ui/layouts/tt/fido.py index f4f628e469..390fb4b7e0 100644 --- a/core/src/trezor/ui/layouts/tt/fido.py +++ b/core/src/trezor/ui/layouts/tt/fido.py @@ -36,8 +36,8 @@ async def handle_debug_confirm(self) -> None: (io.TOUCH_END, 220, 220), ): msg = self.layout.touch_event(event, x, y) - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() if msg is not None: raise Result(msg) diff --git a/core/src/trezor/ui/layouts/tt/homescreen.py b/core/src/trezor/ui/layouts/tt/homescreen.py index bd608aefe0..da8021b2d8 100644 --- a/core/src/trezor/ui/layouts/tt/homescreen.py +++ b/core/src/trezor/ui/layouts/tt/homescreen.py @@ -19,8 +19,8 @@ def __init__(self, layout: Any) -> None: super().__init__(layout=layout) def _paint(self) -> None: - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() def _first_paint(self) -> None: if storage_cache.homescreen_shown is not self.RENDER_INDICATOR: @@ -76,8 +76,8 @@ async def usb_checker_task(self) -> None: while True: is_connected = await usbcheck self.layout.usb_event(is_connected) - self.layout.paint() - ui.refresh() + if self.layout.paint(): + ui.refresh() def create_tasks(self) -> Tuple[loop.AwaitableTask, ...]: return super().create_tasks() + (self.usb_checker_task(),) From 288c8558683ad920fc8c3cf8d22eea9209c3ed95 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 23 May 2024 13:42:35 +0200 Subject: [PATCH 207/626] fix(core): prevent negative circle rendering [no changelog] --- core/embed/rust/src/ui/shape/canvas/common.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/embed/rust/src/ui/shape/canvas/common.rs b/core/embed/rust/src/ui/shape/canvas/common.rs index ebc88ff7a3..1502b2d7ba 100644 --- a/core/embed/rust/src/ui/shape/canvas/common.rs +++ b/core/embed/rust/src/ui/shape/canvas/common.rs @@ -375,7 +375,7 @@ pub trait Canvas: BasicCanvas { // Draws circle with the specified center and the radius. #[cfg(not(feature = "ui_antialiasing"))] fn draw_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { - if radius == 0 { + if radius <= 0 { return; } @@ -441,7 +441,7 @@ pub trait Canvas: BasicCanvas { /// Draws filled circle with the specified center and the radius. #[cfg(not(feature = "ui_antialiasing"))] fn fill_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { - if radius == 0 { + if radius <= 0 { return; } @@ -508,7 +508,7 @@ pub trait Canvas: BasicCanvas { /// radius. #[cfg(feature = "ui_antialiasing")] fn fill_circle(&mut self, center: Point, radius: i16, color: Color, alpha: u8) { - if radius == 0 { + if radius <= 0 { return; } @@ -602,7 +602,7 @@ pub trait Canvas: BasicCanvas { mut end: f32, color: Color, ) { - if radius == 0 { + if radius <= 0 { return; } @@ -731,7 +731,7 @@ fn fill_octant( mut u2: i16, fill: &mut impl FnMut(Option<Point>, u8, Point, u8), ) { - if radius == 0 { + if radius <= 0 { return; } From 813d9b7687f64dd4faeeb6dbca099031dcf91c27 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 29 May 2024 10:47:27 +0200 Subject: [PATCH 208/626] feat(core/rust): add option to Gc-allocate with finaliser [no changelog] --- core/embed/rust/build.rs | 1 + core/embed/rust/src/micropython/gc.rs | 39 ++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index 185f9b7a1f..e0de9d1681 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -235,6 +235,7 @@ fn generate_micropython_bindings() { .allowlist_var("mp_type_fun_builtin_var") // gc .allowlist_function("gc_alloc") + .allowlist_var("GC_ALLOC_FLAG_HAS_FINALISER") // iter .allowlist_type("mp_obj_iter_buf_t") .allowlist_function("mp_getiter") diff --git a/core/embed/rust/src/micropython/gc.rs b/core/embed/rust/src/micropython/gc.rs index ae29990eeb..e283cbd7db 100644 --- a/core/embed/rust/src/micropython/gc.rs +++ b/core/embed/rust/src/micropython/gc.rs @@ -21,8 +21,17 @@ impl<T: ?Sized> Copy for Gc<T> {} impl<T> Gc<T> { /// Allocate memory on the heap managed by the MicroPython garbage collector - /// and then place `v` into it. `v` will _not_ get its destructor called. - pub fn new(v: T) -> Result<Self, Error> { + /// and then place `v` into it. + /// + /// `flags` can be an int value built out of constants in the ffi module. + /// The current MicroPython only supports GC_ALLOC_FLAG_HAS_FINALISER, which + /// will cause the __del__ method to be called when the object is + /// garbage collected. + /// + /// SAFETY: + /// Flag GC_ALLOC_FLAG_HAS_FINALISER can only be used with Python objects + /// that have a base as their first element + unsafe fn alloc(v: T, flags: u32) -> Result<Self, Error> { let layout = Layout::for_value(&v); // TODO: Assert that `layout.align()` is the same as the GC alignment. // SAFETY: @@ -32,7 +41,7 @@ impl<T> Gc<T> { // or the MicroPython heap. // EXCEPTION: Returns null instead of raising. unsafe { - let raw = ffi::gc_alloc(layout.size(), 0); + let raw = ffi::gc_alloc(layout.size(), flags); if raw.is_null() { return Err(Error::AllocationFailed); } @@ -41,6 +50,30 @@ impl<T> Gc<T> { Ok(Self::from_raw(typed)) } } + + /// Allocate memory on the heap managed by the MicroPython garbage collector + /// and then place `v` into it. `v` will _not_ get its destructor called. + pub fn new(v: T) -> Result<Self, Error> { + unsafe { + // SAFETY: No flag is used + Self::alloc(v, 0) + } + } + + /// Allocate memory on the heap managed by the MicroPython garbage + /// collector, place `v` into it, and register for finalisation. + /// + /// `v` will **not** get its destructor called automatically! However, if + /// `v` is a Python-style object (has a base as its first field), and + /// has a `__del__` method, it will be called when the object is garbage + /// collected. You can use this to implement custom finalisation, in + /// which you can, e.g., invoke the Drop implementation. + /// SAFETY: + /// Can only be used with Python objects that have a base as their + /// first element + pub unsafe fn new_with_custom_finaliser(v: T) -> Result<Self, Error> { + unsafe { Self::alloc(v, ffi::GC_ALLOC_FLAG_HAS_FINALISER) } + } } impl<T: Default> Gc<[T]> { From e03d404dca28caae901f9a9e350680c8e4143c3e Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 28 May 2024 19:36:51 +0200 Subject: [PATCH 209/626] fix(core): ensure drop is called on layout objects [no changelog] --- core/embed/rust/librust_qstr.h | 1 + core/embed/rust/src/ui/component/base.rs | 38 +++++++++++----- core/embed/rust/src/ui/layout/obj.rs | 43 +++++++++++++++---- .../ui/model_mercury/component/homescreen.rs | 5 --- .../embed/rust/src/ui/model_mercury/layout.rs | 3 ++ core/embed/rust/src/ui/model_tt/layout.rs | 3 ++ core/mocks/generated/trezorui2.pyi | 4 ++ core/src/apps/homescreen/__init__.py | 19 ++++++-- core/src/boot.py | 1 + .../src/trezor/ui/layouts/mercury/__init__.py | 3 ++ core/src/trezor/ui/layouts/tr/__init__.py | 3 ++ core/src/trezor/ui/layouts/tt/__init__.py | 3 ++ 12 files changed, 98 insertions(+), 28 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 427d6ad647..257254cc5d 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -22,6 +22,7 @@ static void _librust_qstrs(void) { MP_QSTR_NORMAL; MP_QSTR_TR; MP_QSTR_TranslationsHeader; + MP_QSTR___del__; MP_QSTR___dict__; MP_QSTR___name__; MP_QSTR_account; diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 36f5963c17..ce77c93bfb 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -208,29 +208,45 @@ where /// Same as `Child` but also handles screen clearing when layout is first /// painted. pub struct Root<T> { - inner: Child<T>, + inner: Option<Child<T>>, marked_for_clear: bool, } impl<T> Root<T> { pub fn new(component: T) -> Self { Self { - inner: Child::new(component), + inner: Some(Child::new(component)), marked_for_clear: true, } } + pub fn inner_mut(&mut self) -> &mut Child<T> { + if let Some(ref mut c) = self.inner { + c + } else { + fatal_error!("deallocated", "Root object is deallocated") + } + } + pub fn inner(&self) -> &Child<T> { - &self.inner + if let Some(ref c) = self.inner { + c + } else { + fatal_error!("deallocated", "Root object is deallocated") + } } pub fn skip_paint(&mut self) { - self.inner.skip_paint() + self.inner_mut().skip_paint(); } pub fn clear_screen(&mut self) { self.marked_for_clear = true; } + + pub fn delete(&mut self) { + self.inner = None; + } } impl<T> Component for Root<T> @@ -240,15 +256,15 @@ where type Msg = T::Msg; fn place(&mut self, bounds: Rect) -> Rect { - self.inner.place(bounds) + self.inner_mut().place(bounds) } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - let msg = self.inner.event(ctx, event); + let msg = self.inner_mut().event(ctx, event); if ctx.needs_repaint_root() { self.marked_for_clear = true; let mut dummy_ctx = EventCtx::new(); - let paint_msg = self.inner.event(&mut dummy_ctx, Event::RequestPaint); + let paint_msg = self.inner_mut().event(&mut dummy_ctx, Event::RequestPaint); assert!(paint_msg.is_none()); assert!(dummy_ctx.timers.is_empty()); } @@ -256,7 +272,7 @@ where } fn paint(&mut self) { - if self.marked_for_clear && self.inner.will_paint() { + if self.marked_for_clear && self.inner().will_paint() { self.marked_for_clear = false; display::clear() } @@ -264,12 +280,12 @@ where } fn render<'s>(&self, target: &mut impl Renderer<'s>) { - self.inner.render(target); + self.inner().render(target); } #[cfg(feature = "ui_bounds")] fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.inner.bounds(sink) + self.inner().bounds(sink) } } @@ -279,7 +295,7 @@ where T: crate::trace::Trace, { fn trace(&self, t: &mut dyn crate::trace::Tracer) { - self.inner.trace(t) + self.inner().trace(t); } } diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 01130a3ccc..154b7f507c 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -54,6 +54,7 @@ pub trait ObjComponent: MaybeTrace { fn obj_bounds(&self, _sink: &mut dyn FnMut(Rect)) {} fn obj_skip_paint(&mut self) {} fn obj_request_clear(&mut self) {} + fn obj_delete(&mut self) {} } impl<T> ObjComponent for Root<T> @@ -105,6 +106,10 @@ where fn obj_request_clear(&mut self) { self.clear_screen() } + + fn obj_delete(&mut self) { + self.delete() + } } /// `LayoutObj` is a GC-allocated object exported to MicroPython, with type @@ -133,15 +138,25 @@ impl LayoutObj { let root = unsafe { Gc::from_raw(Gc::into_raw(Gc::new(wrapped_root)?) as *mut dyn ObjComponent) }; - Gc::new(Self { - base: Self::obj_type().as_base(), - inner: RefCell::new(LayoutObjInner { - root, - event_ctx: EventCtx::new(), - timer_fn: Obj::const_none(), - page_count: 1, - }), - }) + // SAFETY: This is a Python object and hase a base as first element + unsafe { + Gc::new_with_custom_finaliser(Self { + base: Self::obj_type().as_base(), + inner: RefCell::new(LayoutObjInner { + root, + event_ctx: EventCtx::new(), + timer_fn: Obj::const_none(), + page_count: 1, + }), + }) + } + } + + pub fn obj_delete(&self) { + let mut inner = self.inner.borrow_mut(); + + // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. + unsafe { Gc::as_mut(&mut inner.root) }.obj_delete(); } pub fn skip_first_paint(&self) { @@ -291,6 +306,7 @@ impl LayoutObj { Qstr::MP_QSTR_request_complete_repaint => obj_fn_1!(ui_layout_request_complete_repaint).as_obj(), Qstr::MP_QSTR_trace => obj_fn_2!(ui_layout_trace).as_obj(), Qstr::MP_QSTR_bounds => obj_fn_1!(ui_layout_bounds).as_obj(), + Qstr::MP_QSTR___del__ => obj_fn_1!(ui_layout_delete).as_obj(), Qstr::MP_QSTR_page_count => obj_fn_1!(ui_layout_page_count).as_obj(), Qstr::MP_QSTR_button_request => obj_fn_1!(ui_layout_button_request).as_obj(), }), @@ -526,3 +542,12 @@ extern "C" fn ui_layout_bounds(this: Obj) -> Obj { extern "C" fn ui_layout_bounds(_this: Obj) -> Obj { Obj::const_none() } + +extern "C" fn ui_layout_delete(this: Obj) -> Obj { + let block = || { + let this: Gc<LayoutObj> = this.try_into()?; + this.obj_delete(); + Ok(Obj::const_none()) + }; + unsafe { util::try_or_raise(block) } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index 7ddcb3db95..4cad5d68ed 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -14,7 +14,6 @@ use crate::{ shape::{self, Renderer}, }, }; -use core::mem; use crate::ui::{ component::Label, @@ -344,10 +343,6 @@ impl Component for Lockscreen<'_> { } if let Event::Touch(TouchEvent::TouchEnd(_)) = event { - let bg_img = mem::replace(&mut self.bg_image, None); - if let Some(bg_img) = bg_img { - drop(bg_img); - } return Some(HomescreenMsg::Dismissed); } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index d1306c9eff..a7c7f559ca 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1532,6 +1532,9 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def page_count(self) -> int: /// """Return the number of pages in the layout object.""" /// + /// def __del__(self) -> None: + /// """Calls drop on contents of the root component.""" + /// /// class UiResult: /// """Result of a UI operation.""" /// pass diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index aeba4a33d6..bcce7c6edc 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1679,6 +1679,9 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def button_request(self) -> tuple[int, str] | None: /// """Return (code, type) of button request made during the last event or timer pass.""" /// + /// def __del__(self) -> None: + /// """Calls drop on contents of the root component.""" + /// /// class UiResult: /// """Result of a UI operation.""" /// pass diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 67604acc07..0bd64c86a5 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -49,6 +49,8 @@ class LayoutObj(Generic[T]): """Paint bounds of individual components on screen.""" def page_count(self) -> int: """Return the number of pages in the layout object.""" + def __del__(self) -> None: + """Calls drop on contents of the root component.""" # rust/src/ui/model_mercury/layout.rs @@ -1122,6 +1124,8 @@ class LayoutObj(Generic[T]): """Return the number of pages in the layout object.""" def button_request(self) -> tuple[int, str] | None: """Return (code, type) of button request made during the last event or timer pass.""" + def __del__(self) -> None: + """Calls drop on contents of the root component.""" # rust/src/ui/model_tt/layout.rs diff --git a/core/src/apps/homescreen/__init__.py b/core/src/apps/homescreen/__init__.py index f07a7af621..3f29f1b42e 100644 --- a/core/src/apps/homescreen/__init__.py +++ b/core/src/apps/homescreen/__init__.py @@ -12,7 +12,11 @@ async def busyscreen() -> None: - await Busyscreen(busy_expiry_ms()) + obj = Busyscreen(busy_expiry_ms()) + try: + await obj + finally: + obj.__del__() async def homescreen() -> None: @@ -42,12 +46,17 @@ async def homescreen() -> None: elif storage.device.get_experimental_features(): notification = TR.homescreen__title_experimental_mode - await Homescreen( + obj = Homescreen( label=label, notification=notification, notification_is_error=notification_is_error, hold_to_lock=config.has_pin(), ) + try: + await obj + finally: + obj.__del__() + lock_device() @@ -58,10 +67,14 @@ async def _lockscreen(screensaver: bool = False) -> None: # Only show the lockscreen UI if the device can in fact be locked, or if it is # and OLED device (in which case the lockscreen is a screensaver). if can_lock_device() or screensaver: - await Lockscreen( + obj = Lockscreen( label=storage.device.get_label(), coinjoin_authorized=is_set_any_session(MessageType.AuthorizeCoinJoin), ) + try: + await obj + finally: + obj.__del__() # Otherwise proceed directly to unlock() call. If the device is already unlocked, # it should be a no-op storage-wise, but it resets the internal configuration # to an unlocked state. diff --git a/core/src/boot.py b/core/src/boot.py index f606da3dcd..8b94b379c1 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -62,6 +62,7 @@ async def bootscreen() -> None: label=storage.device.get_label(), bootscreen=True ) await lockscreen + lockscreen.__del__() await verify_user_pin() storage.init_unlocked() allow_all_loader_messages() diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 4a3197875c..3ce312c818 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -40,6 +40,9 @@ def __init__(self, layout: Any): self._send_button_request() self.backlight_level = ui.BacklightLevels.NORMAL + def __del__(self): + self.layout.__del__() + def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index aaaa198230..8e72314d99 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -44,6 +44,9 @@ def __init__(self, layout: trezorui2.LayoutObj[T]): self.layout.attach_timer_fn(self.set_timer) self._send_button_request() + def __del__(self): + self.layout.__del__() + def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 25aefe2c55..6d15501d54 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -46,6 +46,9 @@ def __init__(self, layout: trezorui2.LayoutObj[T]): self._send_button_request() self.backlight_level = ui.BacklightLevels.NORMAL + def __del__(self): + self.layout.__del__() + def set_timer(self, token: int, deadline: int) -> None: self.timer.schedule(deadline, token) From 51c1ff728d7b8b32e215a21246584d987340d4f4 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 29 May 2024 14:23:04 +0200 Subject: [PATCH 210/626] refactor(core): remove lockscreen lifetimes [no changelog] --- .../src/ui/model_mercury/component/homescreen.rs | 12 ++++++------ core/embed/rust/src/ui/model_mercury/layout.rs | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index 4cad5d68ed..ea4bbe6710 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -291,17 +291,17 @@ impl LockscreenAnim { } } -pub struct Lockscreen<'a> { +pub struct Lockscreen { anim: LockscreenAnim, - label: TString<'a>, + label: TString<'static>, image: BinaryData<'static>, bootscreen: bool, coinjoin_authorized: bool, bg_image: ImageBuffer<Rgb565Canvas<'static>>, } -impl<'a> Lockscreen<'a> { - pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { +impl Lockscreen { + pub fn new(label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool) -> Self { let image = get_homescreen_image(); let mut buf = unwrap!(ImageBuffer::new(AREA.size()), "no image buf"); @@ -320,7 +320,7 @@ impl<'a> Lockscreen<'a> { } } -impl Component for Lockscreen<'_> { +impl Component for Lockscreen { type Msg = HomescreenMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -468,7 +468,7 @@ fn get_homescreen_image() -> BinaryData<'static> { } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Lockscreen<'_> { +impl crate::trace::Trace for Lockscreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Lockscreen"); } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index a7c7f559ca..76e1f3e246 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -271,7 +271,7 @@ impl ComponentMsgObj for Homescreen { } } -impl ComponentMsgObj for Lockscreen<'_> { +impl ComponentMsgObj for Lockscreen { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { HomescreenMsg::Dismissed => Ok(CANCELLED.as_obj()), From f793e6d509490ae924ae1d4498642ffd27723895 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 29 May 2024 14:27:02 +0200 Subject: [PATCH 211/626] refactor(core): move mercury loader to cshape module [no changelog] --- core/embed/rust/src/ui/model_mercury/bootloader/mod.rs | 2 +- core/embed/rust/src/ui/model_mercury/component/loader.rs | 2 +- core/embed/rust/src/ui/model_mercury/component/progress.rs | 2 +- .../rust/src/ui/model_mercury/{shapes.rs => cshape/loader.rs} | 0 core/embed/rust/src/ui/model_mercury/cshape/mod.rs | 4 ++++ core/embed/rust/src/ui/model_mercury/mod.rs | 1 - 6 files changed, 7 insertions(+), 4 deletions(-) rename core/embed/rust/src/ui/model_mercury/{shapes.rs => cshape/loader.rs} (100%) diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 45c3c5abda..0acbce9665 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -38,7 +38,7 @@ use super::theme::BLACK; use crate::ui::{ display::{toif::Toif, LOADER_MAX}, geometry::{Alignment, Alignment2D}, - model_mercury::shapes::{render_loader, LoaderRange}, + model_mercury::cshape::{render_loader, LoaderRange}, shape, shape::render_on_display, }; diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index e55ad1022f..cbbd5bfe03 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -7,7 +7,7 @@ use crate::{ component::{Component, Event, EventCtx, Pad}, display::{self, toif::Icon, Color, LOADER_MAX}, geometry::{Alignment2D, Offset, Rect}, - model_mercury::shapes::{render_loader, LoaderRange}, + model_mercury::cshape::{render_loader, LoaderRange}, shape::{self, Renderer}, util::animation_disabled, }, diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index 604f1ef26d..e8d9030017 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -13,7 +13,7 @@ use crate::{ geometry::{Insets, Offset, Rect}, model_mercury::{ constant, - shapes::{render_loader, LoaderRange}, + cshape::{render_loader, LoaderRange}, }, shape::Renderer, util::animation_disabled, diff --git a/core/embed/rust/src/ui/model_mercury/shapes.rs b/core/embed/rust/src/ui/model_mercury/cshape/loader.rs similarity index 100% rename from core/embed/rust/src/ui/model_mercury/shapes.rs rename to core/embed/rust/src/ui/model_mercury/cshape/loader.rs diff --git a/core/embed/rust/src/ui/model_mercury/cshape/mod.rs b/core/embed/rust/src/ui/model_mercury/cshape/mod.rs index 0154be1fb7..f23b0faa47 100644 --- a/core/embed/rust/src/ui/model_mercury/cshape/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/cshape/mod.rs @@ -1,3 +1,7 @@ +mod loader; + mod unlock_overlay; pub use unlock_overlay::UnlockOverlay; + +pub use loader::{render_loader, LoaderRange}; diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/model_mercury/mod.rs index 10376795af..0c57214d19 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/mod.rs @@ -13,7 +13,6 @@ pub mod flow; #[cfg(feature = "micropython")] pub mod layout; pub mod screens; -pub mod shapes; pub struct ModelMercuryFeatures; From 4e1e3bc5507e5ccc89074c7c528afc3569dc3929 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 29 May 2024 16:07:32 +0200 Subject: [PATCH 212/626] fix(core): revert bad renderer lifetime changes [no changelog] --- core/embed/rust/src/ui/component/bar.rs | 2 +- core/embed/rust/src/ui/component/base.rs | 12 ++--- core/embed/rust/src/ui/component/border.rs | 2 +- .../rust/src/ui/component/button_request.rs | 2 +- core/embed/rust/src/ui/component/connect.rs | 2 +- core/embed/rust/src/ui/component/empty.rs | 2 +- core/embed/rust/src/ui/component/image.rs | 4 +- core/embed/rust/src/ui/component/jpeg.rs | 2 +- core/embed/rust/src/ui/component/label.rs | 2 +- core/embed/rust/src/ui/component/map.rs | 4 +- core/embed/rust/src/ui/component/marquee.rs | 4 +- core/embed/rust/src/ui/component/maybe.rs | 2 +- core/embed/rust/src/ui/component/pad.rs | 2 +- core/embed/rust/src/ui/component/placed.rs | 8 ++-- core/embed/rust/src/ui/component/qr_code.rs | 2 +- core/embed/rust/src/ui/component/swipe.rs | 2 +- .../rust/src/ui/component/text/formatted.rs | 2 +- .../rust/src/ui/component/text/paragraphs.rs | 4 +- core/embed/rust/src/ui/component/timeout.rs | 2 +- core/embed/rust/src/ui/flow/page.rs | 10 ++-- core/embed/rust/src/ui/flow/store.rs | 6 +-- core/embed/rust/src/ui/flow/swipe.rs | 6 +-- .../src/ui/model_mercury/bootloader/intro.rs | 2 +- .../src/ui/model_mercury/bootloader/menu.rs | 2 +- .../ui/model_mercury/bootloader/welcome.rs | 2 +- .../component/address_details.rs | 2 +- .../ui/model_mercury/component/bl_confirm.rs | 2 +- .../src/ui/model_mercury/component/button.rs | 2 +- .../component/coinjoin_progress.rs | 2 +- .../src/ui/model_mercury/component/dialog.rs | 4 +- .../src/ui/model_mercury/component/error.rs | 2 +- .../src/ui/model_mercury/component/fido.rs | 2 +- .../src/ui/model_mercury/component/footer.rs | 2 +- .../src/ui/model_mercury/component/frame.rs | 2 +- .../component/hold_to_confirm.rs | 2 +- .../ui/model_mercury/component/homescreen.rs | 9 ++-- .../model_mercury/component/keyboard/bip39.rs | 2 +- .../component/keyboard/mnemonic.rs | 2 +- .../component/keyboard/passphrase.rs | 4 +- .../model_mercury/component/keyboard/pin.rs | 4 +- .../component/keyboard/slip39.rs | 2 +- .../component/keyboard/word_count.rs | 2 +- .../src/ui/model_mercury/component/loader.rs | 2 +- .../model_mercury/component/number_input.rs | 4 +- .../component/number_input_slider.rs | 4 +- .../src/ui/model_mercury/component/page.rs | 2 +- .../ui/model_mercury/component/progress.rs | 2 +- .../model_mercury/component/prompt_screen.rs | 2 +- .../src/ui/model_mercury/component/result.rs | 4 +- .../src/ui/model_mercury/component/scroll.rs | 2 +- .../model_mercury/component/set_brightness.rs | 2 +- .../ui/model_mercury/component/share_words.rs | 2 +- .../ui/model_mercury/component/simple_page.rs | 2 +- .../model_mercury/component/status_screen.rs | 2 +- .../component/swipe_up_screen.rs | 2 +- .../model_mercury/component/tap_to_confirm.rs | 2 +- .../model_mercury/component/vertical_menu.rs | 2 +- .../model_mercury/component/welcome_screen.rs | 2 +- .../rust/src/ui/model_tr/bootloader/intro.rs | 2 +- .../rust/src/ui/model_tr/bootloader/menu.rs | 2 +- .../src/ui/model_tr/bootloader/welcome.rs | 2 +- .../ui/model_tr/component/address_details.rs | 2 +- .../src/ui/model_tr/component/bl_confirm.rs | 2 +- .../rust/src/ui/model_tr/component/button.rs | 2 +- .../model_tr/component/button_controller.rs | 8 ++-- .../ui/model_tr/component/changing_text.rs | 8 ++-- .../model_tr/component/coinjoin_progress.rs | 2 +- .../rust/src/ui/model_tr/component/error.rs | 2 +- .../rust/src/ui/model_tr/component/flow.rs | 2 +- .../src/ui/model_tr/component/flow_pages.rs | 2 +- .../rust/src/ui/model_tr/component/frame.rs | 4 +- .../ui/model_tr/component/hold_to_confirm.rs | 2 +- .../src/ui/model_tr/component/homescreen.rs | 24 +++++----- .../component/input_methods/choice.rs | 10 ++-- .../component/input_methods/number_input.rs | 2 +- .../component/input_methods/passphrase.rs | 2 +- .../model_tr/component/input_methods/pin.rs | 2 +- .../component/input_methods/simple_choice.rs | 2 +- .../component/input_methods/wordlist.rs | 2 +- .../rust/src/ui/model_tr/component/loader.rs | 6 +-- .../rust/src/ui/model_tr/component/page.rs | 2 +- .../src/ui/model_tr/component/progress.rs | 2 +- .../rust/src/ui/model_tr/component/result.rs | 2 +- .../src/ui/model_tr/component/scrollbar.rs | 4 +- .../src/ui/model_tr/component/share_words.rs | 6 +-- .../src/ui/model_tr/component/show_more.rs | 2 +- .../rust/src/ui/model_tr/component/title.rs | 2 +- .../ui/model_tr/component/welcome_screen.rs | 2 +- core/embed/rust/src/ui/model_tr/layout.rs | 2 +- .../rust/src/ui/model_tt/bootloader/intro.rs | 2 +- .../rust/src/ui/model_tt/bootloader/menu.rs | 2 +- .../src/ui/model_tt/bootloader/welcome.rs | 2 +- .../ui/model_tt/component/address_details.rs | 2 +- .../src/ui/model_tt/component/bl_confirm.rs | 2 +- .../rust/src/ui/model_tt/component/button.rs | 2 +- .../model_tt/component/coinjoin_progress.rs | 2 +- .../rust/src/ui/model_tt/component/dialog.rs | 4 +- .../rust/src/ui/model_tt/component/error.rs | 2 +- .../rust/src/ui/model_tt/component/fido.rs | 2 +- .../rust/src/ui/model_tt/component/frame.rs | 2 +- .../ui/model_tt/component/homescreen/mod.rs | 20 ++++---- .../ui/model_tt/component/keyboard/bip39.rs | 2 +- .../model_tt/component/keyboard/mnemonic.rs | 2 +- .../model_tt/component/keyboard/passphrase.rs | 4 +- .../src/ui/model_tt/component/keyboard/pin.rs | 4 +- .../ui/model_tt/component/keyboard/slip39.rs | 2 +- .../model_tt/component/keyboard/word_count.rs | 2 +- .../rust/src/ui/model_tt/component/loader.rs | 2 +- .../src/ui/model_tt/component/number_input.rs | 4 +- .../model_tt/component/number_input_slider.rs | 4 +- .../rust/src/ui/model_tt/component/page.rs | 2 +- .../src/ui/model_tt/component/progress.rs | 2 +- .../rust/src/ui/model_tt/component/result.rs | 4 +- .../rust/src/ui/model_tt/component/scroll.rs | 2 +- .../ui/model_tt/component/set_brightness.rs | 2 +- .../src/ui/model_tt/component/simple_page.rs | 2 +- .../rust/src/ui/model_tt/component/swipe.rs | 2 +- .../ui/model_tt/component/welcome_screen.rs | 2 +- core/embed/rust/src/ui/model_tt/layout.rs | 2 +- .../src/ui/shape/display/direct_canvas.rs | 8 ++-- .../rust/src/ui/shape/display/fake_display.rs | 8 ++-- .../rust/src/ui/shape/display/fb_mono8.rs | 12 +++-- .../rust/src/ui/shape/display/fb_rgb565.rs | 12 +++-- .../rust/src/ui/shape/display/fb_rgba8888.rs | 12 +++-- .../rust/src/ui/shape/display/nofb_rgb565.rs | 24 ++++++---- core/embed/rust/src/ui/shape/render.rs | 47 +++++++++++++++++++ 126 files changed, 286 insertions(+), 218 deletions(-) diff --git a/core/embed/rust/src/ui/component/bar.rs b/core/embed/rust/src/ui/component/bar.rs index a8127a19d7..604d382cab 100644 --- a/core/embed/rust/src/ui/component/bar.rs +++ b/core/embed/rust/src/ui/component/bar.rs @@ -41,7 +41,7 @@ impl Component for Bar { display::rect_fill_rounded(self.area, self.color, self.bg_color, self.radius as u8); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { shape::Bar::new(self.area) .with_bg(self.color) .with_radius(self.radius) diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index ce77c93bfb..6419caabba 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -63,7 +63,7 @@ pub trait Component { /// the `Child` wrapper. fn paint(&mut self); - fn render<'s>(&self, _target: &mut impl Renderer<'s>); + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>); #[cfg(feature = "ui_bounds")] /// Report current paint bounds of this component. Used for debugging. @@ -159,7 +159,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.component.render(target); } @@ -279,7 +279,7 @@ where self.inner.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner().render(target); } @@ -321,7 +321,7 @@ where self.1.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.0.render(target); self.1.render(target); } @@ -375,7 +375,7 @@ where self.2.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.0.render(target); self.1.render(target); self.2.render(target); @@ -408,7 +408,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if let Some(ref c) = self { c.render(target) } diff --git a/core/embed/rust/src/ui/component/border.rs b/core/embed/rust/src/ui/component/border.rs index 35bc3a390e..8ea403ca30 100644 --- a/core/embed/rust/src/ui/component/border.rs +++ b/core/embed/rust/src/ui/component/border.rs @@ -42,7 +42,7 @@ where self.inner.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } diff --git a/core/embed/rust/src/ui/component/button_request.rs b/core/embed/rust/src/ui/component/button_request.rs index f19eca1c3f..ce99492cd0 100644 --- a/core/embed/rust/src/ui/component/button_request.rs +++ b/core/embed/rust/src/ui/component/button_request.rs @@ -41,7 +41,7 @@ impl<T: Component> Component for OneButtonRequest<T> { self.inner.paint() } - fn render<'s>(&self, target: &mut impl crate::ui::shape::Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl crate::ui::shape::Renderer<'s>) { self.inner.render(target) } } diff --git a/core/embed/rust/src/ui/component/connect.rs b/core/embed/rust/src/ui/component/connect.rs index 9c5fc8ea31..3d7897bdf0 100644 --- a/core/embed/rust/src/ui/component/connect.rs +++ b/core/embed/rust/src/ui/component/connect.rs @@ -57,7 +57,7 @@ impl Component for Connect { }); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let font = Font::NORMAL; self.bg.render(target); diff --git a/core/embed/rust/src/ui/component/empty.rs b/core/embed/rust/src/ui/component/empty.rs index 2d5f92cd16..cce48b0cec 100644 --- a/core/embed/rust/src/ui/component/empty.rs +++ b/core/embed/rust/src/ui/component/empty.rs @@ -17,7 +17,7 @@ impl Component for Empty { fn paint(&mut self) {} - fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/image.rs b/core/embed/rust/src/ui/component/image.rs index 300933b219..959ccf2c49 100644 --- a/core/embed/rust/src/ui/component/image.rs +++ b/core/embed/rust/src/ui/component/image.rs @@ -50,7 +50,7 @@ impl Component for Image { self.draw(self.area.center(), Alignment2D::CENTER); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { shape::ToifImage::new(self.area.center(), self.toif) .with_align(Alignment2D::CENTER) .render(target); @@ -138,7 +138,7 @@ impl Component for BlendedImage { self.paint_image(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { shape::ToifImage::new(self.bg_top_left, self.bg.toif) .with_fg(self.bg_color) .render(target); diff --git a/core/embed/rust/src/ui/component/jpeg.rs b/core/embed/rust/src/ui/component/jpeg.rs index 23f73bf3f4..e8379b67ff 100644 --- a/core/embed/rust/src/ui/component/jpeg.rs +++ b/core/embed/rust/src/ui/component/jpeg.rs @@ -48,7 +48,7 @@ impl Component for Jpeg { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { shape::JpegImage::new_image(self.area.center(), self.image) .with_align(Alignment2D::CENTER) .with_scale(self.scale) diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 7061e659ff..087583d1f0 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -136,7 +136,7 @@ impl Component for Label<'_> { self.text.map(|c| self.layout.render_text(c)); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.text.map(|c| self.layout.render_text2(c, target)); } diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 82087c672a..89b19b88db 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -31,7 +31,7 @@ where self.inner.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } @@ -102,7 +102,7 @@ where self.inner.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } diff --git a/core/embed/rust/src/ui/component/marquee.rs b/core/embed/rust/src/ui/component/marquee.rs index ed07bb74cf..d6a91386c8 100644 --- a/core/embed/rust/src/ui/component/marquee.rs +++ b/core/embed/rust/src/ui/component/marquee.rs @@ -124,7 +124,7 @@ impl Marquee { .map(|t| display::marquee(self.area, t, offset, self.font, self.fg, self.bg)); } - pub fn render_anim<'s>(&self, target: &mut impl Renderer<'s>, offset: i16) { + pub fn render_anim<'s>(&'s self, target: &mut impl Renderer<'s>, offset: i16) { target.in_window(self.area, &|target| { let text_height = self.font.text_height(); let pos = self.area.top_left() + Offset::new(offset, text_height - 1); @@ -228,7 +228,7 @@ impl Component for Marquee { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let now = Instant::now(); match self.state { diff --git a/core/embed/rust/src/ui/component/maybe.rs b/core/embed/rust/src/ui/component/maybe.rs index d5a21b7f69..bbc843bca1 100644 --- a/core/embed/rust/src/ui/component/maybe.rs +++ b/core/embed/rust/src/ui/component/maybe.rs @@ -95,7 +95,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); if self.visible { self.inner.render(target); diff --git a/core/embed/rust/src/ui/component/pad.rs b/core/embed/rust/src/ui/component/pad.rs index 5e8371b1ff..fa6b5b065b 100644 --- a/core/embed/rust/src/ui/component/pad.rs +++ b/core/embed/rust/src/ui/component/pad.rs @@ -55,7 +55,7 @@ impl Pad { } } - pub fn render<'s>(&self, target: &mut impl Renderer<'s>) { + pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { shape::Bar::new(self.area) .with_bg(self.color) .render(target); diff --git a/core/embed/rust/src/ui/component/placed.rs b/core/embed/rust/src/ui/component/placed.rs index bc2af8ffa6..18fcc1e186 100644 --- a/core/embed/rust/src/ui/component/placed.rs +++ b/core/embed/rust/src/ui/component/placed.rs @@ -65,7 +65,7 @@ where self.inner.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } } @@ -112,7 +112,7 @@ where self.inner.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } } @@ -188,7 +188,7 @@ where self.inner.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } } @@ -283,7 +283,7 @@ where self.second.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.first.render(target); self.second.render(target); } diff --git a/core/embed/rust/src/ui/component/qr_code.rs b/core/embed/rust/src/ui/component/qr_code.rs index 7b930f3996..5786307fd9 100644 --- a/core/embed/rust/src/ui/component/qr_code.rs +++ b/core/embed/rust/src/ui/component/qr_code.rs @@ -143,7 +143,7 @@ impl Component for Qr { Self::draw(&qr, area, self.border, scale); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let mut outbuffer = [0u8; QR_MAX_VERSION.buffer_len()]; let mut tempbuffer = [0u8; QR_MAX_VERSION.buffer_len()]; diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index ecf0f1ddf0..6f69262857 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -155,5 +155,5 @@ impl Component for Swipe { fn paint(&mut self) {} - fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} } diff --git a/core/embed/rust/src/ui/component/text/formatted.rs b/core/embed/rust/src/ui/component/text/formatted.rs index 080b4fa8a1..9e881b725c 100644 --- a/core/embed/rust/src/ui/component/text/formatted.rs +++ b/core/embed/rust/src/ui/component/text/formatted.rs @@ -134,7 +134,7 @@ impl Component for FormattedText { self.layout_content(&mut TextRenderer); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.layout_content(&mut TextRenderer2::new(target)); } diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index f475698e6b..34ae7a9e0c 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -189,7 +189,7 @@ where ) } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { Self::foreach_visible( &self.source, &self.visible, @@ -713,7 +713,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.paragraphs.render(target); self.render_left_column(target); } diff --git a/core/embed/rust/src/ui/component/timeout.rs b/core/embed/rust/src/ui/component/timeout.rs index 708a106aa6..8aac3ba8dd 100644 --- a/core/embed/rust/src/ui/component/timeout.rs +++ b/core/embed/rust/src/ui/component/timeout.rs @@ -47,7 +47,7 @@ impl Component for Timeout { fn paint(&mut self) {} - fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 29a766c8bf..33af2c3fbc 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -67,7 +67,11 @@ impl<T: Component + Paginate + Clone> SwipePage<T> { finished } - fn render_transition<'s>(&self, transition: &Transition<T>, target: &mut impl Renderer<'s>) { + fn render_transition<'s>( + &'s self, + transition: &'s Transition<T>, + target: &mut impl Renderer<'s>, + ) { target.in_clip(self.bounds, &|target| { util::render_slide( |target| transition.cloned.render(target), @@ -106,7 +110,7 @@ impl<T: Component + Paginate + Clone> Component for SwipePage<T> { self.inner.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if let Some(t) = &self.transition { return self.render_transition(t, target); } @@ -197,7 +201,7 @@ impl<T: Component> Component for IgnoreSwipe<T> { self.0.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.0.render(target) } } diff --git a/core/embed/rust/src/ui/flow/store.rs b/core/embed/rust/src/ui/flow/store.rs index 62f5444d0b..cf1bd2d60a 100644 --- a/core/embed/rust/src/ui/flow/store.rs +++ b/core/embed/rust/src/ui/flow/store.rs @@ -22,7 +22,7 @@ pub trait FlowStore { fn event(&mut self, i: usize, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg>; /// Call `Component::render` on i-th element. - fn render<'s>(&self, i: usize, target: &mut impl Renderer<'s>); + fn render<'s>(&'s self, i: usize, target: &mut impl Renderer<'s>); #[cfg(feature = "ui_debug")] /// Call `Trace::trace` on i-th element. @@ -62,7 +62,7 @@ impl FlowStore for FlowEmpty { panic!() } - fn render<'s>(&self, _i: usize, _target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, _i: usize, _target: &mut impl Renderer<'s>) { panic!() } @@ -132,7 +132,7 @@ where } } - fn render<'s>(&self, i: usize, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, i: usize, target: &mut impl Renderer<'s>) { if i == 0 { self.as_ref().render(target) } else { diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 627dbff1cc..70bb21c1df 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -80,12 +80,12 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { ctx.request_paint(); } - fn render_state<'s>(&self, state: Q, target: &mut impl Renderer<'s>) { + fn render_state<'s>(&'s self, state: Q, target: &mut impl Renderer<'s>) { self.store.render(state.index(), target) } fn render_transition<'s>( - &self, + &'s self, prev_state: &Q, animation: &Animation<f32>, direction: &SwipeDirection, @@ -188,7 +188,7 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { fn paint(&mut self) {} - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { match &self.transition { Transition::None | Transition::Internal => self.render_state(self.state, target), Transition::External { diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs index 7b7c065130..1057a732ef 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs @@ -107,7 +107,7 @@ impl<'a> Component for Intro<'a> { self.menu.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); self.text.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs b/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs index 962f6a6c50..9ffccbc566 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs @@ -109,7 +109,7 @@ impl Component for Menu { self.reset.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); self.close.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs b/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs index 2a347ac9a4..3900459163 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/welcome.rs @@ -64,7 +64,7 @@ impl Component for Welcome { ); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); shape::Text::new(TEXT_ORIGIN, "Get started") diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index 2e44f4317e..79cde1c1f1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -161,7 +161,7 @@ impl Component for AddressDetails { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { match self.current_page { 0 => self.details.render(target), _ => self.xpub_view.render(target), diff --git a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs index 8fe2897c39..75ab740980 100644 --- a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs @@ -241,7 +241,7 @@ impl Component for Confirm<'_> { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.content_pad.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 8ff864d91f..2a031d07f9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -408,7 +408,7 @@ impl Component for Button { self.paint_content(style); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let style = self.style(); self.render_background(target, style, 0xFF); self.render_content(target, style, 0xFF); diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs index 1977d0c19b..7fc2c7837c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -124,7 +124,7 @@ where self.label.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); let center = constant::screen().center() + Offset::y(LOADER_OFFSET); diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index e65bef3828..0229e89051 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -72,7 +72,7 @@ where self.controls.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); self.controls.render(target); } @@ -202,7 +202,7 @@ where self.controls.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.image.render(target); self.paragraphs.render(target); self.controls.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/error.rs b/core/embed/rust/src/ui/model_mercury/component/error.rs index 664a2576f9..0999a06541 100644 --- a/core/embed/rust/src/ui/model_mercury/component/error.rs +++ b/core/embed/rust/src/ui/model_mercury/component/error.rs @@ -92,7 +92,7 @@ impl<'a> Component for ErrorScreen<'a> { self.footer.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); let icon = ICON_WARNING40; diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index f0e5a83f23..5506a24d70 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -211,7 +211,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.icon.render(target); self.controls.render(target); self.app_name.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index d21753c7e6..4161b2ba87 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -94,7 +94,7 @@ impl<'a> Component for Footer<'a> { todo!() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // show description only if there is space for it if self.area.height() == Footer::HEIGHT_DEFAULT { if let Some(description) = self.text_description { diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 5e49511739..c3735d2477 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -218,7 +218,7 @@ where self.footer.paint(); self.content.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.title.render(target); self.subtitle.render(target); self.button.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs index ff29ba1f26..025386be0d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -245,7 +245,7 @@ impl Component for HoldToConfirm { unimplemented!() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let elapsed = self.anim.eval(); shape::Bar::new(screen()) diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index ea4bbe6710..1eaf07e62d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -108,7 +108,7 @@ impl Homescreen { } } - fn render_loader<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_loader<'s>(&'s self, target: &mut impl Renderer<'s>) { TR::progress__locking_device.map_translated(|t| { shape::Text::new(TOP_CENTER + Offset::y(HOLD_Y), t) .with_align(Alignment::Center) @@ -188,7 +188,7 @@ impl Component for Homescreen { todo!() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { @@ -353,15 +353,14 @@ impl Component for Lockscreen { todo!() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { const OVERLAY_SIZE: i16 = 170; const OVERLAY_BORDER: i16 = (AREA.height() - OVERLAY_SIZE) / 2; const OVERLAY_OFFSET: i16 = 9; let center = AREA.center(); - // shape::RawImage::new(AREA, self.bg_image.view()) - // .render(target); + shape::RawImage::new(AREA, self.bg_image.view()).render(target); cshape::UnlockOverlay::new(center + Offset::y(OVERLAY_OFFSET), self.anim.eval()) .render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index c5ce0d1143..5fb9488af2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -107,7 +107,7 @@ impl Component for Bip39Input { todo!("remove when ui-t3t1 done"); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index a8451149ea..058a4f606e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -208,7 +208,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if self.input.inner().inner().is_empty() { self.prompt.render(target); if self.can_go_back { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 3332a3c098..2e4966bf8d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -372,7 +372,7 @@ impl Component for PassphraseKeyboard { todo!("remove when ui-t3t1 done") } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.next_btn.render(target); self.erase_btn.render(target); @@ -436,7 +436,7 @@ impl Component for Input { todo!("remove when ui-t3t1 done"); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let style = theme::label_keyboard(); let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index c5350f0dd9..600c10d452 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -237,7 +237,7 @@ impl Component for PinKeyboard<'_> { todo!("remove when ui-t3t1 done"); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.erase_btn.render(target); self.textbox_pad.render(target); @@ -433,7 +433,7 @@ impl Component for PinDots { // TODO: remove when ui-t3t1 done } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let dot_area = self.area.inset(HEADER_PADDING); self.pad.render(target); if self.display_digits { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index d4de52fa91..79173a1db0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -127,7 +127,7 @@ impl Component for Slip39Input { todo!("remove when ui-t3t1 done") } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs index 3b5ee6473d..720336473f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -67,7 +67,7 @@ impl Component for SelectWordCount { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { for btn in self.button.iter() { btn.render(target) } diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index cbbd5bfe03..0a0a59bf78 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -204,7 +204,7 @@ impl Component for Loader { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // TODO: Consider passing the current instant along with the event -- that way, // we could synchronize painting across the component tree. Also could be useful // in automated tests. diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index 7b2f1052e0..d3ff1c18fd 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -97,7 +97,7 @@ where todo!("remove when ui-t3t1 done"); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.paragraphs_pad.render(target); self.paragraphs.render(target); @@ -212,7 +212,7 @@ impl Component for NumberInput { todo!("remove when ui-t3t1 done"); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let mut buf = [0u8; 10]; if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs index 4075f1ad23..babc01014a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -92,7 +92,7 @@ impl Component for NumberInputSliderDialog { self.confirm_button.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); let mut str = ShortString::new(); @@ -193,7 +193,7 @@ impl Component for NumberInputSlider { display::bar_with_text_and_fill(self.area, None, theme::FG, theme::BG, 0, fill_to as _); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); shape::Bar::new(self.area) diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs index 606a56c3fb..4ab4b07178 100644 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/page.rs @@ -420,7 +420,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); match &self.loader { Some(l) if l.is_animating() => self.loader.render(target), diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index e8d9030017..744f4cbc6b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -110,7 +110,7 @@ impl Component for Progress { self.description.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.title.render(target); let center = constant::screen().center() + Offset::y(self.loader_y_offset); diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index c330100d94..2e63f41a6f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -60,7 +60,7 @@ impl Component for PromptScreen { todo!() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { match self { PromptScreen::Tap(t) => t.render(target), PromptScreen::Hold(h) => h.render(target), diff --git a/core/embed/rust/src/ui/model_mercury/component/result.rs b/core/embed/rust/src/ui/model_mercury/component/result.rs index 3eb7e0a5d9..f5e619f18c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/result.rs +++ b/core/embed/rust/src/ui/model_mercury/component/result.rs @@ -97,7 +97,7 @@ impl Component for ResultFooter<'_> { self.text.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // divider line let bar = Rect::from_center_and_size( Point::new(self.area.center().x, self.area.y0), @@ -182,7 +182,7 @@ impl<'a> Component for ResultScreen<'a> { self.footer.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.footer_pad.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/scroll.rs b/core/embed/rust/src/ui/model_mercury/component/scroll.rs index d091082b57..1ea96fd960 100644 --- a/core/embed/rust/src/ui/model_mercury/component/scroll.rs +++ b/core/embed/rust/src/ui/model_mercury/component/scroll.rs @@ -124,7 +124,7 @@ impl Component for ScrollBar { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { fn dotsize(distance: usize, nhidden: usize) -> Icon { match (nhidden.saturating_sub(distance)).min(2 - distance) { 0 => theme::DOT_INACTIVE, diff --git a/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs index e271a12a44..ebb4c3c3a0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs +++ b/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs @@ -55,7 +55,7 @@ impl Component for SetBrightnessDialog { self.0.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.0.render(target); } diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 9b8fb872f8..5cc6d52585 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -110,7 +110,7 @@ impl<'a> Component for ShareWords<'a> { // TODO: remove when ui-t3t1 done } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // corner highlights let (_, top_right_shape, bot_left_shape, bot_right_shape) = shape::CornerHighlight::from_rect(self.area_word, theme::GREY_DARK, theme::BG); diff --git a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs index d8c898b181..5e7a799071 100644 --- a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs @@ -170,7 +170,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.content.render(target); if self.scrollbar.has_pages() { diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index 4c6dfba12b..cc9d50e0e7 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -194,7 +194,7 @@ impl Component for StatusScreen { todo!() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let t = self.anim.eval(); shape::Circle::new(self.area.center(), self.anim.get_circle_radius(t)) diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index fcbbaf2813..05f90bab67 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -52,7 +52,7 @@ where todo!() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); } diff --git a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs index 4139ba0c82..0a4993a758 100644 --- a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs @@ -196,7 +196,7 @@ impl Component for TapToConfirm { unimplemented!() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { const PAD_RADIUS: i16 = 70; const PAD_THICKNESS: i16 = 20; const CIRCLE_RADIUS: i16 = 50; diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 39d31a57ff..6773be7a8c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -119,7 +119,7 @@ impl Component for VerticalMenu { // TODO remove when ui-t3t1 done } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // render buttons separated by thin bars for button in &self.buttons { button.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs b/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs index 6317b34137..35c0ef6589 100644 --- a/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/welcome_screen.rs @@ -54,7 +54,7 @@ impl Component for WelcomeScreen { ); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { shape::ToifImage::new( self.area.top_center() + Offset::y(ICON_TOP_MARGIN), theme::ICON_LOGO.toif, diff --git a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs index cbe3eda167..cf323dac41 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs @@ -106,7 +106,7 @@ impl<'a> Component for Intro<'a> { self.buttons.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); diff --git a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs index 16dfdbd732..6ba41fb6ea 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs @@ -184,7 +184,7 @@ impl Component for Menu { self.choice_page.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.choice_page.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs b/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs index 206312233c..ad261e3b17 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/welcome.rs @@ -60,7 +60,7 @@ impl Component for Welcome { ); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); let top_center = self.bg.area.top_center(); diff --git a/core/embed/rust/src/ui/model_tr/component/address_details.rs b/core/embed/rust/src/ui/model_tr/component/address_details.rs index e6714e36f7..14c38e3b0d 100644 --- a/core/embed/rust/src/ui/model_tr/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tr/component/address_details.rs @@ -260,7 +260,7 @@ impl Component for AddressDetails { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.buttons.render(target); match self.current_page { diff --git a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs index 8ac444980e..842c2ce224 100644 --- a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs @@ -218,7 +218,7 @@ impl Component for Confirm<'_> { self.buttons.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); let mut display_top_left = |text: TString| { diff --git a/core/embed/rust/src/ui/model_tr/component/button.rs b/core/embed/rust/src/ui/model_tr/component/button.rs index ffa82a8f16..7e630d5d21 100644 --- a/core/embed/rust/src/ui/model_tr/component/button.rs +++ b/core/embed/rust/src/ui/model_tr/component/button.rs @@ -263,7 +263,7 @@ impl Component for Button { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let style = self.style(); let fg_color = style.text_color; let bg_color = fg_color.negate(); diff --git a/core/embed/rust/src/ui/model_tr/component/button_controller.rs b/core/embed/rust/src/ui/model_tr/component/button_controller.rs index 63d46eea41..2809388790 100644 --- a/core/embed/rust/src/ui/model_tr/component/button_controller.rs +++ b/core/embed/rust/src/ui/model_tr/component/button_controller.rs @@ -95,7 +95,7 @@ impl ButtonType { } } - pub fn render<'s>(&self, target: &mut impl Renderer<'s>) { + pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { match self { Self::Button(button) => { button.render(target); @@ -167,7 +167,7 @@ impl ButtonContainer { self.button_type.paint(); } - pub fn render<'s>(&self, target: &mut impl Renderer<'s>) { + pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.button_type.render(target); } @@ -592,7 +592,7 @@ impl Component for ButtonController { self.right_btn.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.left_btn.render(target); self.middle_btn.render(target); @@ -778,7 +778,7 @@ impl Component for AutomaticMover { fn paint(&mut self) {} - fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { // Moving automatically only when we receive a TimerToken that we have diff --git a/core/embed/rust/src/ui/model_tr/component/changing_text.rs b/core/embed/rust/src/ui/model_tr/component/changing_text.rs index 302f2ced99..089566d10e 100644 --- a/core/embed/rust/src/ui/model_tr/component/changing_text.rs +++ b/core/embed/rust/src/ui/model_tr/component/changing_text.rs @@ -111,7 +111,7 @@ where common::display_left(baseline, &self.text, self.font); } - fn render_left<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_left<'s>(&'s self, target: &mut impl Renderer<'s>) { let baseline = Point::new(self.pad.area.x0, self.y_baseline()); shape::Text::new(baseline, self.text.as_ref()) .with_font(self.font) @@ -123,7 +123,7 @@ where common::display_center(baseline, &self.text, self.font); } - fn render_center<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_center<'s>(&'s self, target: &mut impl Renderer<'s>) { let baseline = Point::new(self.pad.area.bottom_center().x, self.y_baseline()); shape::Text::new(baseline, self.text.as_ref()) .with_align(Alignment::Center) @@ -136,7 +136,7 @@ where common::display_right(baseline, &self.text, self.font); } - fn render_right<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_right<'s>(&'s self, target: &mut impl Renderer<'s>) { let baseline = Point::new(self.pad.area.x1, self.y_baseline()); shape::Text::new(baseline, self.text.as_ref()) .with_align(Alignment::End) @@ -201,7 +201,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); if self.show_content { // In the case text cannot fit, show ellipsis and its right part diff --git a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs index af79043e7b..53e5892bd1 100644 --- a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs @@ -130,7 +130,7 @@ impl Component for CoinJoinProgress { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // TOP let center = self.area.center() + Offset::y(self.loader_y_offset); diff --git a/core/embed/rust/src/ui/model_tr/component/error.rs b/core/embed/rust/src/ui/model_tr/component/error.rs index 6678c4f8d5..9772bc9d81 100644 --- a/core/embed/rust/src/ui/model_tr/component/error.rs +++ b/core/embed/rust/src/ui/model_tr/component/error.rs @@ -102,7 +102,7 @@ impl Component for ErrorScreen<'_> { self.footer.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); if self.show_icons { diff --git a/core/embed/rust/src/ui/model_tr/component/flow.rs b/core/embed/rust/src/ui/model_tr/component/flow.rs index 2fccd204ab..eb4841673e 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow.rs @@ -315,7 +315,7 @@ where self.current_page.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); // Scrollbars are painted only with a title and when requested if self.title.is_some() { diff --git a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs b/core/embed/rust/src/ui/model_tr/component/flow_pages.rs index 1ae5e85cc6..c143c74232 100644 --- a/core/embed/rust/src/ui/model_tr/component/flow_pages.rs +++ b/core/embed/rust/src/ui/model_tr/component/flow_pages.rs @@ -122,7 +122,7 @@ impl Page { self.formatted.paint(); } - pub fn render<'s>(&self, target: &mut impl Renderer<'s>) { + pub fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.formatted.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/component/frame.rs b/core/embed/rust/src/ui/model_tr/component/frame.rs index 66c7bc7e7e..f47158d9e3 100644 --- a/core/embed/rust/src/ui/model_tr/component/frame.rs +++ b/core/embed/rust/src/ui/model_tr/component/frame.rs @@ -82,7 +82,7 @@ where self.content.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.title.render(target); self.content.render(target); } @@ -204,7 +204,7 @@ where self.content.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.title.render(target); self.scrollbar.render(target); self.content.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs index 1e1a18e76b..d0afb1e2cf 100644 --- a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs @@ -124,7 +124,7 @@ impl Component for HoldToConfirm { self.loader.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.loader.render(target); } } diff --git a/core/embed/rust/src/ui/model_tr/component/homescreen.rs b/core/embed/rust/src/ui/model_tr/component/homescreen.rs index 5a9cb4b09e..a8a5048697 100644 --- a/core/embed/rust/src/ui/model_tr/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_tr/component/homescreen.rs @@ -117,7 +117,7 @@ impl Homescreen { } } - fn render_homescreen_image<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_homescreen_image<'s>(&'s self, target: &mut impl Renderer<'s>) { if let Some(image) = self.custom_image { shape::ToifImage::new_image(TOP_CENTER, image) .with_align(Alignment2D::TOP_CENTER) @@ -159,7 +159,7 @@ impl Homescreen { } } - fn render_notification<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_notification<'s>(&'s self, target: &mut impl Renderer<'s>) { let baseline = TOP_CENTER + Offset::y(NOTIFICATION_FONT.line_height()); if !usb_configured() { shape::Bar::new(AREA.split_top(NOTIFICATION_HEIGHT).0) @@ -214,7 +214,7 @@ impl Homescreen { self.label.paint(); } - fn render_label<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_label<'s>(&'s self, target: &mut impl Renderer<'s>) { // paint black background to place the label let mut outset = Insets::uniform(LABEL_OUTSET); // the margin at top is bigger (caused by text-height vs line-height?) @@ -315,7 +315,7 @@ impl Component for Homescreen { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // Redraw the whole screen when the screen changes (loader vs homescreen) if self.show_loader { self.loader.render(target); @@ -329,8 +329,8 @@ impl Component for Homescreen { } } -pub struct Lockscreen { - label: Child<Label<'static>>, +pub struct Lockscreen<'a> { + label: Child<Label<'a>>, instruction: Child<Label<'static>>, /// Used for unlocking the device from lockscreen invisible_buttons: Child<ButtonController>, @@ -340,8 +340,8 @@ pub struct Lockscreen { screensaver: bool, } -impl Lockscreen { - pub fn new(label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool) -> Self { +impl<'a> Lockscreen<'a> { + pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { // Buttons will not be visible, we only need all three of them to be present, // so that even middle-click triggers the event. let invisible_btn_layout = ButtonLayout::arrow_armed_arrow("".into()); @@ -360,7 +360,7 @@ impl Lockscreen { } } -impl Component for Lockscreen { +impl Component for Lockscreen<'_> { type Msg = (); fn place(&mut self, bounds: Rect) -> Rect { @@ -400,7 +400,7 @@ impl Component for Lockscreen { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if self.screensaver { // keep screen blank return; @@ -484,7 +484,7 @@ impl Component for ConfirmHomescreen { self.buttons.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if self.image.is_empty() { render_default_image(target); } else { @@ -537,7 +537,7 @@ impl crate::trace::Trace for Homescreen { } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Lockscreen { +impl crate::trace::Trace for Lockscreen<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Lockscreen"); t.child("label", &self.label); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs index c1d2e8d2b5..4cd681b775 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/choice.rs @@ -257,7 +257,7 @@ where /// Display current, previous and next choices according to /// the current ChoiceItem. - fn render_choices<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_choices<'s>(&'s self, target: &mut impl Renderer<'s>) { // Getting the row area for the choices - so that displaying // items in the used font will show them in the middle vertically. let area_height_half = self.pad.area.height() / 2; @@ -341,7 +341,7 @@ where } /// Display the current choice in the middle. - fn show_current_choice2<'s>(&self, target: &mut impl Renderer<'s>, area: Rect) { + fn show_current_choice2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { self.get_current_item() .render_center(target, area, self.inverse_selected_item); } @@ -390,7 +390,7 @@ where /// Display all the choices fitting on the left side. /// Going as far as possible. - fn show_left_choices2<'s>(&self, target: &mut impl Renderer<'s>, area: Rect) { + fn show_left_choices2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { // NOTE: page index can get negative here, so having it as i16 instead of usize let mut page_index = self.page_counter as i16 - 1; let mut current_area = area.split_right(self.items_distance).0; @@ -473,7 +473,7 @@ where /// Display all the choices fitting on the right side. /// Going as far as possible. - fn show_right_choices2<'s>(&self, target: &mut impl Renderer<'s>, area: Rect) { + fn show_right_choices2<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { let mut page_index = self.page_counter + 1; let mut current_area = area.split_left(self.items_distance).1; while current_area.width() > 0 { @@ -720,7 +720,7 @@ where self.paint_choices(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.buttons.render(target); self.render_choices(target); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs index 3be90401b9..9d25e5db81 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs @@ -83,7 +83,7 @@ impl Component for NumberInput { self.choice_page.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.choice_page.render(target); } } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs index e818ee943d..d3f422a6ee 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs @@ -450,7 +450,7 @@ impl Component for PassphraseEntry { self.choice_page.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.passphrase_dots.render(target); self.choice_page.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs index b6e8fff18b..e977e4ea37 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs @@ -325,7 +325,7 @@ impl Component for PinEntry<'_> { self.choice_page.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.header_line.render(target); self.pin_line.render(target); self.choice_page.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs index 262268a587..f322c8cf17 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/simple_choice.rs @@ -117,7 +117,7 @@ impl Component for SimpleChoice { self.choice_page.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.choice_page.render(target); } } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs index c6bf18da0f..27bfd4fffe 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs @@ -316,7 +316,7 @@ impl Component for WordlistEntry { self.choice_page.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.chosen_letters.render(target); self.choice_page.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/component/loader.rs b/core/embed/rust/src/ui/model_tr/component/loader.rs index d0abd03093..799bfb19a9 100644 --- a/core/embed/rust/src/ui/model_tr/component/loader.rs +++ b/core/embed/rust/src/ui/model_tr/component/loader.rs @@ -168,7 +168,7 @@ impl Loader { } pub fn render_loader<'s>( - &self, + &'s self, target: &mut impl Renderer<'s>, style: &LoaderStyle, done: i32, @@ -271,7 +271,7 @@ impl Component for Loader { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // TODO: Consider passing the current instant along with the event -- that way, // we could synchronize painting across the component tree. Also could be useful // in automated tests. @@ -393,7 +393,7 @@ impl Component for ProgressLoader { self.loader.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.loader.render(target); } } diff --git a/core/embed/rust/src/ui/model_tr/component/page.rs b/core/embed/rust/src/ui/model_tr/component/page.rs index 6b82d1d785..935f184c88 100644 --- a/core/embed/rust/src/ui/model_tr/component/page.rs +++ b/core/embed/rust/src/ui/model_tr/component/page.rs @@ -217,7 +217,7 @@ where self.buttons.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.content.render(target); self.buttons.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/progress.rs b/core/embed/rust/src/ui/model_tr/component/progress.rs index c3906c4fd2..e44e39ed0e 100644 --- a/core/embed/rust/src/ui/model_tr/component/progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/progress.rs @@ -154,7 +154,7 @@ impl Component for Progress { self.description.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.title.render(target); let area = constant::screen(); diff --git a/core/embed/rust/src/ui/model_tr/component/result.rs b/core/embed/rust/src/ui/model_tr/component/result.rs index c8aa604b0b..32f20f418b 100644 --- a/core/embed/rust/src/ui/model_tr/component/result.rs +++ b/core/embed/rust/src/ui/model_tr/component/result.rs @@ -110,7 +110,7 @@ impl Component for ResultScreen<'_> { self.message_bottom.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.small_pad.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/scrollbar.rs b/core/embed/rust/src/ui/model_tr/component/scrollbar.rs index d5b11f8514..3e812ee91a 100644 --- a/core/embed/rust/src/ui/model_tr/component/scrollbar.rs +++ b/core/embed/rust/src/ui/model_tr/component/scrollbar.rs @@ -234,7 +234,7 @@ impl ScrollBar { } } - fn render_horizontal<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_horizontal<'s>(&'s self, target: &mut impl Renderer<'s>) { let mut top_right = self.pad.area.top_right(); for dot in self.get_drawable_dots().iter().rev() { self.render_dot(target, dot, top_right); @@ -274,7 +274,7 @@ impl Component for ScrollBar { } /// Displaying one dot for each page. - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // Not showing the scrollbar dot when there is only one page if self.page_count <= 1 { return; diff --git a/core/embed/rust/src/ui/model_tr/component/share_words.rs b/core/embed/rust/src/ui/model_tr/component/share_words.rs index 48a86c6043..c9ca066675 100644 --- a/core/embed/rust/src/ui/model_tr/component/share_words.rs +++ b/core/embed/rust/src/ui/model_tr/component/share_words.rs @@ -99,7 +99,7 @@ where } /// Display the final page with user confirmation. - fn render_final_page<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_final_page<'s>(&'s self, target: &mut impl Renderer<'s>) { let final_text = self.get_final_text(); text_multiline2( target, @@ -131,7 +131,7 @@ where } /// Display current set of recovery words. - fn render_words<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_words<'s>(&'s self, target: &mut impl Renderer<'s>) { let mut y_offset = 0; // Showing the word index and the words itself for i in 0..WORDS_PER_PAGE { @@ -191,7 +191,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // Showing scrollbar in all cases // Individual pages are responsible for not colliding with it self.scrollbar.render(target); diff --git a/core/embed/rust/src/ui/model_tr/component/show_more.rs b/core/embed/rust/src/ui/model_tr/component/show_more.rs index 60f1396715..c2a10e1b55 100644 --- a/core/embed/rust/src/ui/model_tr/component/show_more.rs +++ b/core/embed/rust/src/ui/model_tr/component/show_more.rs @@ -79,7 +79,7 @@ where self.buttons.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); self.buttons.render(target); } diff --git a/core/embed/rust/src/ui/model_tr/component/title.rs b/core/embed/rust/src/ui/model_tr/component/title.rs index 7b23e92164..a34e4a288d 100644 --- a/core/embed/rust/src/ui/model_tr/component/title.rs +++ b/core/embed/rust/src/ui/model_tr/component/title.rs @@ -135,7 +135,7 @@ impl Component for Title { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if self.needs_marquee { self.marquee.render(target); } else if self.centered { diff --git a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs b/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs index c97c74d79d..a824d85e77 100644 --- a/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_tr/component/welcome_screen.rs @@ -55,7 +55,7 @@ impl Component for WelcomeScreen { ); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { shape::ToifImage::new( self.area.bottom_center() - Offset::y(5), theme::ICON_DEVICE_NAME.toif, diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 29f0f4b9b9..8f4fae3882 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -204,7 +204,7 @@ impl ComponentMsgObj for Homescreen { } } -impl ComponentMsgObj for Lockscreen { +impl<'a> ComponentMsgObj for Lockscreen<'a> { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { Ok(CANCELLED.as_obj()) } diff --git a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs b/core/embed/rust/src/ui/model_tt/bootloader/intro.rs index 97c4d32444..c52d8a6804 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/intro.rs @@ -106,7 +106,7 @@ impl<'a> Component for Intro<'a> { self.menu.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); self.text.render(target); diff --git a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs b/core/embed/rust/src/ui/model_tt/bootloader/menu.rs index e97c4ebe9c..f542dea4b0 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/menu.rs @@ -109,7 +109,7 @@ impl Component for Menu { self.reset.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.title.render(target); self.close.render(target); diff --git a/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs b/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs index 7ccf6b241a..0e2e3302fb 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/welcome.rs @@ -59,7 +59,7 @@ impl Component for Welcome { ); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); shape::Text::new(screen().top_center() + Offset::y(102), "Get started with") diff --git a/core/embed/rust/src/ui/model_tt/component/address_details.rs b/core/embed/rust/src/ui/model_tt/component/address_details.rs index a6bc1bc57d..b8ce8f9161 100644 --- a/core/embed/rust/src/ui/model_tt/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tt/component/address_details.rs @@ -177,7 +177,7 @@ impl Component for AddressDetails { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { match self.current_page { 0 => self.qr_code.render(target), 1 => self.details.render(target), diff --git a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs index 1684f63f51..3bd1de1616 100644 --- a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs @@ -239,7 +239,7 @@ impl Component for Confirm<'_> { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.content_pad.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/button.rs b/core/embed/rust/src/ui/model_tt/component/button.rs index b3467cb589..46a11a2ae9 100644 --- a/core/embed/rust/src/ui/model_tt/component/button.rs +++ b/core/embed/rust/src/ui/model_tt/component/button.rs @@ -377,7 +377,7 @@ impl Component for Button { self.paint_content(style); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let style = self.style(); self.render_background(target, style); self.render_content(target, style); diff --git a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs index 79653855cd..411c91d355 100644 --- a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs @@ -125,7 +125,7 @@ where self.label.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); let center = constant::screen().center() + Offset::y(LOADER_OFFSET); diff --git a/core/embed/rust/src/ui/model_tt/component/dialog.rs b/core/embed/rust/src/ui/model_tt/component/dialog.rs index a3523af626..c66d37a91f 100644 --- a/core/embed/rust/src/ui/model_tt/component/dialog.rs +++ b/core/embed/rust/src/ui/model_tt/component/dialog.rs @@ -72,7 +72,7 @@ where self.controls.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); self.controls.render(target); } @@ -202,7 +202,7 @@ where self.controls.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.image.render(target); self.paragraphs.render(target); self.controls.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/error.rs b/core/embed/rust/src/ui/model_tt/component/error.rs index 0437d57e74..12d2bf064b 100644 --- a/core/embed/rust/src/ui/model_tt/component/error.rs +++ b/core/embed/rust/src/ui/model_tt/component/error.rs @@ -92,7 +92,7 @@ impl<'a> Component for ErrorScreen<'a> { self.footer.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); let icon = ICON_WARNING40; diff --git a/core/embed/rust/src/ui/model_tt/component/fido.rs b/core/embed/rust/src/ui/model_tt/component/fido.rs index 35af98f8a2..f17a2910de 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido.rs +++ b/core/embed/rust/src/ui/model_tt/component/fido.rs @@ -213,7 +213,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.icon.render(target); self.controls.render(target); self.app_name.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/frame.rs b/core/embed/rust/src/ui/model_tt/component/frame.rs index 4832a76cc5..a8e847f712 100644 --- a/core/embed/rust/src/ui/model_tt/component/frame.rs +++ b/core/embed/rust/src/ui/model_tt/component/frame.rs @@ -176,7 +176,7 @@ where self.content.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.title.render(target); self.subtitle.render(target); self.button.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs index ed6c125bf8..4874580bdf 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs @@ -125,7 +125,7 @@ impl Homescreen { self.loader.paint() } - fn render_loader<'s>(&self, target: &mut impl Renderer<'s>) { + fn render_loader<'s>(&'s self, target: &mut impl Renderer<'s>) { TR::progress__locking_device.map_translated(|t| { shape::Text::new(TOP_CENTER + Offset::y(HOLD_Y), t) .with_align(Alignment::Center) @@ -259,7 +259,7 @@ impl Component for Homescreen { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); @@ -353,15 +353,15 @@ impl crate::trace::Trace for Homescreen { } } -pub struct Lockscreen { - label: TString<'static>, - image: BinaryData<'static>, +pub struct Lockscreen<'a> { + label: TString<'a>, + image: BinaryData<'a>, bootscreen: bool, coinjoin_authorized: bool, } -impl Lockscreen { - pub fn new(label: TString<'static>, bootscreen: bool, coinjoin_authorized: bool) -> Self { +impl<'a> Lockscreen<'a> { + pub fn new(label: TString<'a>, bootscreen: bool, coinjoin_authorized: bool) -> Self { Lockscreen { label, image: get_homescreen_image(), @@ -371,7 +371,7 @@ impl Lockscreen { } } -impl Component for Lockscreen { +impl Component for Lockscreen<'_> { type Msg = HomescreenMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -451,7 +451,7 @@ impl Component for Lockscreen { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let center = constant::screen().center(); match ImageInfo::parse(self.image) { @@ -572,7 +572,7 @@ fn get_homescreen_image() -> BinaryData<'static> { } #[cfg(feature = "ui_debug")] -impl crate::trace::Trace for Lockscreen { +impl crate::trace::Trace for Lockscreen<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Lockscreen"); } diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs index 7a92bc4f96..2f29ae6525 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs @@ -156,7 +156,7 @@ impl Component for Bip39Input { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs index 92e954f328..6d70c89b9d 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs @@ -184,7 +184,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { if self.input.inner().inner().is_empty() { self.prompt.render(target); } else { diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs index cfc2bccedd..9b31d9fca8 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs @@ -301,7 +301,7 @@ impl Component for PassphraseKeyboard { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.scrollbar.render(target); self.confirm.render(target); @@ -395,7 +395,7 @@ impl Component for Input { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let style = theme::label_keyboard(); let text_baseline = self.area.top_left() + Offset::y(style.text_font.text_height()) diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index 1a5270cfb9..e0a27a83a2 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -266,7 +266,7 @@ impl Component for PinKeyboard<'_> { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.erase_btn.render(target); self.textbox_pad.render(target); if self.textbox.inner().is_empty() { @@ -530,7 +530,7 @@ impl Component for PinDots { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let dot_area = self.area.inset(HEADER_PADDING); self.pad.render(target); if self.display_digits { diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs index 55bf5972b4..0794d9c280 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs @@ -187,7 +187,7 @@ impl Component for Slip39Input { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let area = self.button.area(); let style = self.button.style(); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs index 5cb2fabc9d..c6614293e3 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs @@ -58,7 +58,7 @@ impl Component for SelectWordCount { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { for btn in self.button.iter() { btn.render(target) } diff --git a/core/embed/rust/src/ui/model_tt/component/loader.rs b/core/embed/rust/src/ui/model_tt/component/loader.rs index 39933e7b95..11429ec61d 100644 --- a/core/embed/rust/src/ui/model_tt/component/loader.rs +++ b/core/embed/rust/src/ui/model_tt/component/loader.rs @@ -223,7 +223,7 @@ impl Component for Loader { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // TODO: Consider passing the current instant along with the event -- that way, // we could synchronize painting across the component tree. Also could be useful // in automated tests. diff --git a/core/embed/rust/src/ui/model_tt/component/number_input.rs b/core/embed/rust/src/ui/model_tt/component/number_input.rs index 2954c201ed..07e855cfbe 100644 --- a/core/embed/rust/src/ui/model_tt/component/number_input.rs +++ b/core/embed/rust/src/ui/model_tt/component/number_input.rs @@ -121,7 +121,7 @@ where self.confirm_button.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.paragraphs_pad.render(target); self.paragraphs.render(target); @@ -236,7 +236,7 @@ impl Component for NumberInput { self.inc.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let mut buf = [0u8; 10]; if let Some(text) = strutil::format_i64(self.value as i64, &mut buf) { diff --git a/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs b/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs index 8af13045ad..c0a650f72a 100644 --- a/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs @@ -78,7 +78,7 @@ impl Component for NumberInputSliderDialog { self.confirm_button.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.cancel_button.render(target); self.confirm_button.render(target); @@ -167,7 +167,7 @@ impl Component for NumberInputSlider { display::bar_with_text_and_fill(self.area, None, theme::FG, theme::BG, 0, fill_to as _); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); shape::Bar::new(self.area) diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index 83ba81652f..075269a094 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -419,7 +419,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); match &self.loader { Some(l) if l.is_animating() => self.loader.render(target), diff --git a/core/embed/rust/src/ui/model_tt/component/progress.rs b/core/embed/rust/src/ui/model_tt/component/progress.rs index 2cc2ab1578..1d4f133279 100644 --- a/core/embed/rust/src/ui/model_tt/component/progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/progress.rs @@ -108,7 +108,7 @@ impl Component for Progress { self.description.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.title.render(target); let center = constant::screen().center() + Offset::y(self.loader_y_offset); diff --git a/core/embed/rust/src/ui/model_tt/component/result.rs b/core/embed/rust/src/ui/model_tt/component/result.rs index 8eb5456a7e..e14d82c31e 100644 --- a/core/embed/rust/src/ui/model_tt/component/result.rs +++ b/core/embed/rust/src/ui/model_tt/component/result.rs @@ -98,7 +98,7 @@ impl Component for ResultFooter<'_> { self.text.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { // divider line let bar = Rect::from_center_and_size( Point::new(self.area.center().x, self.area.y0), @@ -183,7 +183,7 @@ impl<'a> Component for ResultScreen<'a> { self.footer.paint(); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.bg.render(target); self.footer_pad.render(target); diff --git a/core/embed/rust/src/ui/model_tt/component/scroll.rs b/core/embed/rust/src/ui/model_tt/component/scroll.rs index d091082b57..1ea96fd960 100644 --- a/core/embed/rust/src/ui/model_tt/component/scroll.rs +++ b/core/embed/rust/src/ui/model_tt/component/scroll.rs @@ -124,7 +124,7 @@ impl Component for ScrollBar { } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { fn dotsize(distance: usize, nhidden: usize) -> Icon { match (nhidden.saturating_sub(distance)).min(2 - distance) { 0 => theme::DOT_INACTIVE, diff --git a/core/embed/rust/src/ui/model_tt/component/set_brightness.rs b/core/embed/rust/src/ui/model_tt/component/set_brightness.rs index e271a12a44..ebb4c3c3a0 100644 --- a/core/embed/rust/src/ui/model_tt/component/set_brightness.rs +++ b/core/embed/rust/src/ui/model_tt/component/set_brightness.rs @@ -55,7 +55,7 @@ impl Component for SetBrightnessDialog { self.0.paint() } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.0.render(target); } diff --git a/core/embed/rust/src/ui/model_tt/component/simple_page.rs b/core/embed/rust/src/ui/model_tt/component/simple_page.rs index aa851a0055..b14f9f7bea 100644 --- a/core/embed/rust/src/ui/model_tt/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_tt/component/simple_page.rs @@ -167,7 +167,7 @@ where } } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.pad.render(target); self.content.render(target); if self.scrollbar.has_pages() { diff --git a/core/embed/rust/src/ui/model_tt/component/swipe.rs b/core/embed/rust/src/ui/model_tt/component/swipe.rs index 541cb87793..3539900d45 100644 --- a/core/embed/rust/src/ui/model_tt/component/swipe.rs +++ b/core/embed/rust/src/ui/model_tt/component/swipe.rs @@ -160,5 +160,5 @@ impl Component for Swipe { fn paint(&mut self) {} - fn render<'s>(&self, _target: &mut impl Renderer<'s>) {} + fn render<'s>(&'s self, _target: &mut impl Renderer<'s>) {} } diff --git a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs b/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs index 5e1cbfad75..2a359ede10 100644 --- a/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs +++ b/core/embed/rust/src/ui/model_tt/component/welcome_screen.rs @@ -76,7 +76,7 @@ impl Component for WelcomeScreen { ); } - fn render<'s>(&self, target: &mut impl Renderer<'s>) { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let logo = if self.empty_lock { theme::ICON_LOGO_EMPTY } else { diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index bcce7c6edc..494d68d42d 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -245,7 +245,7 @@ impl ComponentMsgObj for Homescreen { } } -impl ComponentMsgObj for Lockscreen { +impl ComponentMsgObj for Lockscreen<'_> { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { HomescreenMsg::Dismissed => Ok(CANCELLED.as_obj()), diff --git a/core/embed/rust/src/ui/shape/display/direct_canvas.rs b/core/embed/rust/src/ui/shape/display/direct_canvas.rs index b59b5e2e6a..c4350ae7c1 100644 --- a/core/embed/rust/src/ui/shape/display/direct_canvas.rs +++ b/core/embed/rust/src/ui/shape/display/direct_canvas.rs @@ -1,6 +1,6 @@ use crate::ui::{ display::Color, - shape::{Canvas, DirectRenderer, DrawingCache}, + shape::{render::ScopedRenderer, Canvas, DirectRenderer, DrawingCache}, }; use super::bumps::run_with_bumps; @@ -12,13 +12,13 @@ use super::bumps::run_with_bumps; /// `bg_color` specifies a background color with which the canvas is filled /// before the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_canvas<C: Canvas, F>(canvas: &mut C, bg_color: Option<Color>, func: F) +pub fn render_on_canvas<'env, C: Canvas, F>(canvas: &mut C, bg_color: Option<Color>, func: F) where - F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, C>), + F: for<'alloc> FnOnce(&mut ScopedRenderer<'alloc, 'env, DirectRenderer<'_, 'alloc, C>>), { run_with_bumps(|bump_a, bump_b| { let cache = DrawingCache::new(bump_a, bump_b); - let mut target = DirectRenderer::new(canvas, bg_color, &cache); + let mut target = ScopedRenderer::new(DirectRenderer::new(canvas, bg_color, &cache)); func(&mut target); }); } diff --git a/core/embed/rust/src/ui/shape/display/fake_display.rs b/core/embed/rust/src/ui/shape/display/fake_display.rs index f7309b0f78..99a4dcd6f2 100644 --- a/core/embed/rust/src/ui/shape/display/fake_display.rs +++ b/core/embed/rust/src/ui/shape/display/fake_display.rs @@ -1,11 +1,13 @@ use crate::ui::{ display::Color, - shape::{DirectRenderer, Mono8Canvas, Viewport}, + shape::{render::ScopedRenderer, DirectRenderer, Mono8Canvas, Viewport}, }; -pub fn render_on_display<F>(_viewport: Option<Viewport>, _bg_color: Option<Color>, _func: F) +type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Mono8Canvas<'alloc>>; + +pub fn render_on_display<'env, F>(_viewport: Option<Viewport>, _bg_color: Option<Color>, _func: F) where - F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>), + F: for<'alloc> FnOnce(&mut ScopedRenderer<'alloc, 'env, ConcreteRenderer<'_, 'alloc>>), { unimplemented!(); } diff --git a/core/embed/rust/src/ui/shape/display/fb_mono8.rs b/core/embed/rust/src/ui/shape/display/fb_mono8.rs index de638ef2af..713978f3db 100644 --- a/core/embed/rust/src/ui/shape/display/fb_mono8.rs +++ b/core/embed/rust/src/ui/shape/display/fb_mono8.rs @@ -1,13 +1,17 @@ use crate::ui::{ display::Color, geometry::Offset, - shape::{BasicCanvas, DirectRenderer, DrawingCache, Mono8Canvas, Viewport}, + shape::{ + render::ScopedRenderer, BasicCanvas, DirectRenderer, DrawingCache, Mono8Canvas, Viewport, + }, }; use crate::trezorhal::display; use static_alloc::Bump; +type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Mono8Canvas<'alloc>>; + /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's /// function can utilize the `target` for drawing on the display. @@ -18,9 +22,9 @@ use static_alloc::Bump; /// `bg_color` specifies a background color with which the clip is filled before /// the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_display<F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +pub fn render_on_display<'env, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) where - F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, Mono8Canvas<'a>>), + F: for<'alloc> FnOnce(&mut ScopedRenderer<'alloc, 'env, ConcreteRenderer<'_, 'alloc>>), { const BUMP_SIZE: usize = DrawingCache::get_bump_a_size() + DrawingCache::get_bump_b_size(); @@ -48,7 +52,7 @@ where canvas.set_viewport(viewport); } - let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache); + let mut target = ScopedRenderer::new(DirectRenderer::new(&mut canvas, bg_color, &cache)); func(&mut target); } diff --git a/core/embed/rust/src/ui/shape/display/fb_rgb565.rs b/core/embed/rust/src/ui/shape/display/fb_rgb565.rs index f6756e4af5..8af5ebd79a 100644 --- a/core/embed/rust/src/ui/shape/display/fb_rgb565.rs +++ b/core/embed/rust/src/ui/shape/display/fb_rgb565.rs @@ -1,13 +1,17 @@ use crate::ui::{ display::Color, geometry::Offset, - shape::{BasicCanvas, DirectRenderer, DrawingCache, Rgb565Canvas, Viewport}, + shape::{ + render::ScopedRenderer, BasicCanvas, DirectRenderer, DrawingCache, Rgb565Canvas, Viewport, + }, }; use super::bumps; use crate::trezorhal::display; +type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Rgb565Canvas<'alloc>>; + /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's /// function can utilize the `target` for drawing on the display. @@ -18,9 +22,9 @@ use crate::trezorhal::display; /// `bg_color` specifies a background color with which the clip is filled before /// the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_display<F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +pub fn render_on_display<'env, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) where - F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, Rgb565Canvas<'a>>), + F: for<'alloc> FnOnce(&mut ScopedRenderer<'alloc, 'env, ConcreteRenderer<'_, 'alloc>>), { bumps::run_with_bumps(|bump_a, bump_b| { let width = display::DISPLAY_RESX as i16; @@ -41,7 +45,7 @@ where canvas.set_viewport(viewport); } - let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache); + let mut target = ScopedRenderer::new(DirectRenderer::new(&mut canvas, bg_color, &cache)); func(&mut target); }); diff --git a/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs b/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs index e54afe5475..e75941aadc 100644 --- a/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs +++ b/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs @@ -1,13 +1,17 @@ use crate::ui::{ display::Color, geometry::Offset, - shape::{BasicCanvas, DirectRenderer, DrawingCache, Rgba8888Canvas, Viewport}, + shape::{ + render::ScopedRenderer, BasicCanvas, DirectRenderer, DrawingCache, Rgba8888Canvas, Viewport, + }, }; use super::bumps; use crate::trezorhal::display; +type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Rgba8888Canvas<'alloc>>; + /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's /// function can utilize the `target` for drawing on the display. @@ -18,9 +22,9 @@ use crate::trezorhal::display; /// `bg_color` specifies a background color with which the clip is filled before /// the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_display<F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +pub fn render_on_display<'env, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) where - F: for<'a> FnOnce(&mut DirectRenderer<'_, 'a, Rgba8888Canvas<'a>>), + F: for<'alloc> FnOnce(&mut ScopedRenderer<'alloc, 'env, ConcreteRenderer<'_, 'alloc>>), { bumps::run_with_bumps(|bump_a, bump_b| { let width = display::DISPLAY_RESX as i16; @@ -41,7 +45,7 @@ where canvas.set_viewport(viewport); } - let mut target = DirectRenderer::new(&mut canvas, bg_color, &cache); + let mut target = ScopedRenderer::new(DirectRenderer::new(&mut canvas, bg_color, &cache)); func(&mut target); }); diff --git a/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs b/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs index 4ac7f7360b..b2d372e6d8 100644 --- a/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs +++ b/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs @@ -1,6 +1,9 @@ -use crate::trezorhal::{ - bitblt::{BitBltCopy, BitBltFill}, - display, +use crate::{ + trezorhal::{ + bitblt::{BitBltCopy, BitBltFill}, + display, + }, + ui::shape::render::ScopedRenderer, }; use crate::ui::{ @@ -14,6 +17,9 @@ use super::bumps; use static_alloc::Bump; +type ConcreteRenderer<'a, 'alloc> = + ProgressiveRenderer<'a, 'alloc, Bump<[u8; bumps::BUMP_A_SIZE]>, DisplayCanvas>; + /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's /// function can utilize the `target` for drawing on the display. @@ -24,11 +30,9 @@ use static_alloc::Bump; /// `bg_color` specifies a background color with which the clip is filled before /// the drawing starts. If the background color is None, the background /// is undefined, and the user has to fill it themselves. -pub fn render_on_display<F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) +pub fn render_on_display<'env, F>(viewport: Option<Viewport>, bg_color: Option<Color>, func: F) where - F: for<'a> FnOnce( - &mut ProgressiveRenderer<'_, 'a, Bump<[u8; bumps::BUMP_A_SIZE]>, DisplayCanvas>, - ), + F: for<'alloc> FnOnce(&mut ScopedRenderer<'alloc, 'env, ConcreteRenderer<'_, 'alloc>>), { bumps::run_with_bumps(|bump_a, bump_b| { let cache = DrawingCache::new(bump_a, bump_b); @@ -38,17 +42,17 @@ where canvas.set_viewport(viewport); } - let mut target = ProgressiveRenderer::new( + let mut target = ScopedRenderer::new(ProgressiveRenderer::new( &mut canvas, bg_color, &cache, bump_a, bumps::SHAPE_MAX_COUNT, - ); + )); func(&mut target); - target.render(16); + target.into_inner().render(16); }); } diff --git a/core/embed/rust/src/ui/shape/render.rs b/core/embed/rust/src/ui/shape/render.rs index a9658fc425..7551febc09 100644 --- a/core/embed/rust/src/ui/shape/render.rs +++ b/core/embed/rust/src/ui/shape/render.rs @@ -252,3 +252,50 @@ where } } } + +pub struct ScopedRenderer<'alloc, 'env, T> +where + 'env: 'alloc, + T: Renderer<'alloc>, +{ + pub renderer: T, + _env: core::marker::PhantomData<&'env mut &'env ()>, + _alloc: core::marker::PhantomData<&'alloc ()>, +} + +impl<'alloc, T> ScopedRenderer<'alloc, '_, T> +where + T: Renderer<'alloc>, +{ + pub fn new(renderer: T) -> Self { + Self { + renderer, + _env: core::marker::PhantomData, + _alloc: core::marker::PhantomData, + } + } + + pub fn into_inner(self) -> T { + self.renderer + } +} + +impl<'alloc, T> Renderer<'alloc> for ScopedRenderer<'alloc, '_, T> +where + T: Renderer<'alloc>, +{ + fn viewport(&self) -> Viewport { + self.renderer.viewport() + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.renderer.set_viewport(viewport); + } + + fn render_shape<S>(&mut self, shape: S) + where + S: Shape<'alloc> + ShapeClone<'alloc>, + { + self.renderer.render_shape(shape); + } +} From 42e001e6d38a0c4bfac74b86594448d0e3099fbe Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sat, 1 Jun 2024 22:18:23 +0200 Subject: [PATCH 213/626] fix(core): fix boot flags evaluation with new rendering [no changelog] --- core/embed/bootloader/bootui.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/embed/bootloader/bootui.c b/core/embed/bootloader/bootui.c index f860c2296a..0048ea2129 100644 --- a/core/embed/bootloader/bootui.c +++ b/core/embed/bootloader/bootui.c @@ -203,10 +203,10 @@ static void ui_screen_boot_click(void) { #ifdef NEW_RENDERING void ui_screen_boot(const vendor_header *const vhdr, const image_header *const hdr, int wait) { - bool show_string = ((vhdr->vtrust & VTRUST_STRING) == 0); + bool show_string = ((vhdr->vtrust & VTRUST_NO_STRING) == 0); const char *vendor_str = show_string ? vhdr->vstr : NULL; const size_t vendor_str_len = show_string ? vhdr->vstr_len : 0; - bool red_screen = ((vhdr->vtrust & VTRUST_RED) == 0); + bool red_screen = ((vhdr->vtrust & VTRUST_NO_RED) == 0); uint32_t vimg_len = *(uint32_t *)(vhdr->vimg + 8); screen_boot(red_screen, vendor_str, vendor_str_len, hdr->version, vhdr->vimg, From f837db048b83e32e0d04f13c38ce3420c26a7f64 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sat, 1 Jun 2024 22:20:17 +0200 Subject: [PATCH 214/626] chore(core): update T3T1 fixtures [no changelog] --- tests/ui_tests/fixtures.json | 14316 ++++++++++++++++----------------- 1 file changed, 7158 insertions(+), 7158 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index d1babe0c8f..76bb31f0f3 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15465,7168 +15465,7168 @@ }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ac67a6186ddbd139067a725765b9562cf96533f9dffc5a0881eb7e9cb7a32f1e", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "27940ae2ca1ee267af895fedd8f69a039b223a7a730d531400d08f7bf8c1f03b", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "c74f42626b961bebe469b9f59b2e29629cae0be2e239879059d6d4471e59b998", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "f0645c27e9ed32b657b92856b6c137e1347f62306ec1ac99ea5197af409fdf84", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "2607a8ddfaa850ab98c5fe09ca41e212f5538f6c792f8c135c5399bb9a2a11ac", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "c2dfe5a4968ec90ef6078a6608bef15147a53751f820f39b1518380244f2f846", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "ee776d69887f468c92457a3306c5b0aa3f175e6ba70755f2781c6eb3196494bd", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "ca720be36d9c8cf40ceff1b99ae3f0a1fe4e97a33d3c2002a45f27a5f30a45da", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "89bd54c7977e503fd708f8825ca1939867002e636d110894e26d8e251fd08b5e", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "73f9e82f9a089c643d57b476bb089574cbd0e9de5c9357988991d29b023da9d6", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "51a846a42c45538371f4229e359040230adb36215e3d8313a34ef0b795835fb9", -"T3T1_cs_test_lock.py::test_hold_to_lock": "ab815386c5f462ac347e2755013d367465b679c0991257ba9ff7b8f5108523d8", -"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "f7dbf4445377b08518906b4a25b7d65de109ca98cd000b7b6b5a020deb316c00", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "111548fc15dd051ce6bd87e6ea86cee7bb1dcab4e960f1d5ca8872ae891458c7", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "ff8a9b92da584cc732aade10326c38c9fe8b427002bd7c778c0e807d82c02219", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "314172be0a3a3221ec424db307526f4014f3b4b185c6018f3b30313a3df4c24c", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "5daa5e2edad8c5919dd7818069136e6319bdd82c092588e50df26d9b076cc57e", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "16640127a25f7e48156118d66d4ae3cb7adb8fe703c0a614c098633a69795d00", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "f00f63e8a4c55264598dd0a270d197245a031fcb9be951c0cbd87905f7a69f0e", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "560edc1168997b3b9eb2fcf1af860d1a73af2683eeef5783a15ae281532f6f50", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "9e631217b2a91882f9cbdf6dae0dd4a2cc68e3cc90721a9e395cb638bf65b808", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "a9f1029e69f0c2084651b7f0597936f6d24312287aee759e360a5fc567d2a8b6", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "9e631217b2a91882f9cbdf6dae0dd4a2cc68e3cc90721a9e395cb638bf65b808", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "78b32bfca1e2c1f075e0aab5ef90370d0e3ebe705979f4bddb1957eec9628bd1", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "3fda9e45ed73eb88f75c80e672558b920365f4cbcfdf26197454616003fc41c9", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "7c58308384a9180df87208297e2d9adc431eaa92dc2c6a8edc7a252550721a99", -"T3T1_cs_test_pin.py::test_pin_cancel": "f081d69f38a16b85e0203c5dee43a9a50a97ac9f76c48597869600bbee581167", -"T3T1_cs_test_pin.py::test_pin_change": "434d894fbd4f18c4b25f3fdf01da27c919e836054533a3806a5bb090e3b21cfe", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "e8d6e2dec9439368f36bca647724c7ba3e50ac96efa441df18702013db3331e1", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "6940b8863ee03a0a1f1df6225735287de063b4d38a5f979fb4629c6d2a033681", -"T3T1_cs_test_pin.py::test_pin_incorrect": "441332382993b43a3ddbfd8b6285cc300249ed467826516c2a164c8d9fef86e6", -"T3T1_cs_test_pin.py::test_pin_long": "b0da8fb96be6acfae27d1ec58f326093e6f9c5ebab99daa9c95f0deb62e3b3a3", -"T3T1_cs_test_pin.py::test_pin_long_delete": "c63f158d108eac84588fec3268cd082c8f2795e8c6b88744b3e2e72497314411", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "ed07aca616dcda7078d2ee05a97d1a06b7413536f8e588d5007f295b2d200359", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "bea52d47a9e20bcdd761f7bd6fa1871bfa798a375a87553a63867ce17dbed363", -"T3T1_cs_test_pin.py::test_pin_setup": "8023fc9a32d3723168f9f6418e41f155a5f321a60d72bd7bdb87e558d7299ee2", -"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "9882761b67e4e3f64b707162074127aa2a940e50e66d0c95c2d5540c3e6d8d87", -"T3T1_cs_test_pin.py::test_pin_short": "6940b8863ee03a0a1f1df6225735287de063b4d38a5f979fb4629c6d2a033681", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "7495aaa31aeed729767f62f83ea896149af76fc64e08e7f462814e0d80f3f59a", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "b62276bd776363271361ac4c7a4463a4c6f65b3d58621ec9da8b0ecb1cb7aeed", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "f0834c329cc1491a6ee7366cabff7fb73e64b99649a5dcec95079795cfaa9d01", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "b13cabe20b8adfa628d6b498a19406746cab21ef792d3925bdbc964c90d2673e", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "648e940fa077ab5095a22a4cc4cff8a9c524a46b8f70f63bf3e4539ecc84da6a", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "c845c1d13aa8e8096e904920d35938a9e4b9398b052bc7cfc047c8d9424550c5", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "165d6faa548adef9e36f45296c4d08caf5debc6a110e12081b0a320909488687", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "22e52c1e41869dafa917375e486e78f9b1ac51f58eecf73502f67ae5da0d72b8", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "9bac28c6e70ad62e3b80cf86b299b71062f1ab5f898bcf68c41daf4df5ad7e43", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d45fbdfe2efd848aa9a164006f8182e981b7bd46f4ddd852dc4928306ea0a7d4", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b61f4b5878793269b7207a67cb4e2697085ff8f8cba9362dc7459d280d082c9c", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "575a36c0cb19a3cf94d5eaef03d6ad68b5cb93adbfd5117ac2e1a2b553648afe", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7905ca51d068ab83e75bc41ed155ca9ea5350508dbc1c158a91d70755b59783f", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "0c748997cb5ee5189bf64c30a9ca7715160af36de740799533b3bccc798c5b4d", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "ff93135c594fd9003cb59fd49927b53999a1b75e0851394683dd194e3fe12146", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "093ebe89b64daac1970426853e84e99d27f7d4b491d7ddf65ef4bb867bd4358c", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "21c31be7e151acf37c2ff69a541ad871bb98ab797c94c1d1020f94eff68bc605", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "bda293f6f3b2d0b56aa6d876c8102562b71f1ebc808b2fac362138f00ef1680a", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6d1eb6918b0807926e38b3f488995984380262c1b2ac4d68efbee2a3df1a468b", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4e03cdaf37e40ff1e0b3c7ad2ffe74ff5e53e1c88c6758082a8e6c93e7a30ee3", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b85e9125633304f987e2e18540f120d163b79b97f524830d28ba582f346b0859", -"T3T1_de_test_lock.py::test_hold_to_lock": "1b1e29f86500569b2dd7e78fe51a8f9dcf244c9a419ffdabd866983fd47380cf", -"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "a2aa71e638459f399b1484119520eff4abf7ad0c5d435d785dcdb0e20886fef6", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "f601a2c7f5dfc10da5b4de1aae35768eb14c7eaefa00ed86d2ec014822e1c49e", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "03ea4a53765ad288cac0e79227c8cd58f81cc865797f551a5d8ee5a97c3cb031", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "c2c0100c315d4ac3c6c880e98e62a274fc58719746ffa824c29c3e0d6600dc80", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "d31d57aec015920993691a73ae127fb754e9e35acc5dd7d1cb01ec1c83bc9b0d", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "5a02f0ed2748877547bcc94bbb39584a425ffae32b63ab733d5643f87225c016", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "75bd8c02f9e9302c5e7e740023f9111618304b8134f096860a9b57702d8c9efc", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d18defeba3174fadb1ee7b71c8d8edf18d3a36b0171401d88ea35021874d2643", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "bbee65e32e0a7a502338e8aae6f5a59947d4702dd6989ee161c483d1d76bac59", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "b7ce727da33de6dfcf3a844581efccbc2337837f923479e6e98a32d2867d6d97", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "bbee65e32e0a7a502338e8aae6f5a59947d4702dd6989ee161c483d1d76bac59", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "37aab3d831ea8058cd039d95fc669c8f73a4913c0761e1bac595df09a69b14ee", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "02d097a96db0544723bd799b0591eb25f43f75fd473c4d92d114f8ee3ef2f93a", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "68fffc7d36fdf22b553436fec4bc9bd4cb2b8eceba547acaa4a20a25d4fc434c", -"T3T1_de_test_pin.py::test_pin_cancel": "8eef44bf201c0c1828177324e0be5c0c20fc69f2891231e74f35e601c522a98d", -"T3T1_de_test_pin.py::test_pin_change": "2a30ef26cf6c4b063bfc0ac327abb38aeef597a865a7627627622047f81e20f4", -"T3T1_de_test_pin.py::test_pin_delete_hold": "1f80f5ee8a6757dce5f8cef061d6ce3fca5b191c4420e4523a07b9de823c8739", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "0adf20f141674a807036925da7385c722100a9ae95e25f9a527cd83857067c04", -"T3T1_de_test_pin.py::test_pin_incorrect": "4660a40b7ce62ec40604b22f17e33b8b0bfc8714e2feda277865516a14eaa285", -"T3T1_de_test_pin.py::test_pin_long": "5eca540c4b8ea226b938a415aa79c12d19515070139a846df10d348ae3574025", -"T3T1_de_test_pin.py::test_pin_long_delete": "726bddbea5688ccafa77de845ddc145f880527e0a41db7c1da37c2b8ad391ea8", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "d41415bbcb1071fce9e28d6cf3fd557ccd5a201f9be7fc30c9dd77dac2f45b99", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "f57a7f9e5a6fa046889f6baa0bd36bcc15fe7f1eb0398dd71af886c4e13f45ef", -"T3T1_de_test_pin.py::test_pin_setup": "97c4cdefe97d427a87f7ef548db726ed4401081a316db632eb341ca25efd12bf", -"T3T1_de_test_pin.py::test_pin_setup_mismatch": "9f27112bf6a2e8757218156e31d86a8ed96b420f5150446217979533beebbbc4", -"T3T1_de_test_pin.py::test_pin_short": "0adf20f141674a807036925da7385c722100a9ae95e25f9a527cd83857067c04", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "9beb9faea17e3aa9b8a03be35e348ef7573c540c015a0b9cd31c106338c7c441", -"T3T1_de_test_pin.py::test_wipe_code_setup": "ecd23dd3e7288c58daeef2072e8be99cc001d6bc5241073312b0e51633c435ed", -"T3T1_de_test_recovery.py::test_recovery_bip39": "15f6d7bd3867e6463f9006d50f3258898d82c248e8f05976e977bf5d83dabde9", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "6415d9ed0abac403be474f556c595aa641bb1c72a4817e7211561299adfee0e2", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "e3df12a36ab08f8f895656078533f1eb122242a58a81ebbe84ff094402ffce12", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "c6c13076a550f10f2699f8281d735569f2d188d403b47cae7a16bb509921723d", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "7f91012dd18233171fb524bc15b1b72a515c091e517ad4e892c9cad584890c3a", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0537d3be68bff6fe73037ea82cbb1134cb355997284268b56714e3dc69984ffb", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5d0637e9e30396a6041a3ae5e12e285025ab8b35d81767f56a6b34a756ee637c", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "50dd042b646163128dd8b67caebd9d0fef38e6f255ffdc94a6b801b411269202", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "78b63a30649f282fad2be5c1db70d3b20491c3517fc77c7deafcc0fa9602de63", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "44d58c7a769b9a81383a3297505740517ef13d686b6ae5a94904b9b49ceafc6a", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "97751db637df03f06121b3f74efd24d2cf3c02faab99c14ba8212f087990c161", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "489087ea2f4697c1dbf28fd74ee844c2c24b77719c5a7077e5779f48e37869e8", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "dda7a9c378443375063e481174619dd777a4742c8f18d89ec2fcef8bc45025f9", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "efadd078c1028f68ffa0401b536ba36a99d716e96268d57e10e205b91bb5a18a", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "83c99265485a3cfa4373af80c14dbe72167a34f3e16bc716fce5dabdafda30fc", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "103da751954f4b5e7b647c3d1366906e99ed86b19dc4c49a98f88de4d1eec218", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7a6a4afd15be5016304cb14428bba6f1b4db7c4ece6b5f5143f6411bc708630c", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9c700310429fcb419b1603c825855f60f45b0b7c707d4c0b5da96bcda4c9668e", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f68850015988936702af659d3da93ab481381460d8af7fcb15357b922b9aa46f", -"T3T1_en_test_lock.py::test_hold_to_lock": "357626f19891dec50bdbd63de82a9a109a7a1b369dc80c57795821a61aa6517c", -"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "76f2e768206149132686e9a239df0c0d5761a7ad6e596f6a000c28da8ba87ae8", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "e73d3959b333059e1d3aa20f02378f00631596e7a2690ce6176cf2173153bd55", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "b65c806281d35e91f7cef0bf092e38f59218c3690107a2053a366003a88ea7ac", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "379ddfc5ca420c38ccf3fd2cec0a06b0d4b14a6cb04fded95589ea5e5b3dd195", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "46046b31a52ea8e7d3595256063dbb56d2505cf38655e61cd72e83bdef996e4f", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "1657467a2da1aa10a431ea49b2a29f782a127cf8ee288d837a55016c6e5ce1a5", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "4b9de62b5b3b3f710830dfb734888cdb0de3cd62d174d02a9f91e344bc7ddfa2", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "3bb2f09acd596c67ccb9ee9ebdcf5b517dcc8b39d2c5115cbd8af95de8f40780", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "868d240daef77f49964222e37ce45fb1922169a67d1dca26b996ea695c8822de", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4b2dfc90bbe721dd522f5a961bc992ddf043802f45bbd5a444d703f502c9bb89", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "868d240daef77f49964222e37ce45fb1922169a67d1dca26b996ea695c8822de", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "607e2f002b0b59f4b69d1f9342f12a9c6e28031803a1429afc9f36498af7d094", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "bff5c244dd709d65d5f3cfa52b2298a8a08df11a5e93861e73ca02f8b7512ddd", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "dc06defddf9eca05eaeec9c9169cbfa1bc616204a930052fc6470f420cf33622", -"T3T1_en_test_pin.py::test_pin_cancel": "fff24be4e52ed179ac26fa0e7ac8aaabcf2bba55767978eb5371de83e3880903", -"T3T1_en_test_pin.py::test_pin_change": "4c4969c330700297ff39fd02f2f3f2c4c76b924249740786e5950b7f601434c1", -"T3T1_en_test_pin.py::test_pin_delete_hold": "186f499e9db2dcade1e8343e8d8e4d31be18e6e93baf2ed9df4ef0211309bda3", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "843cc9e30809976553ea5d018cc1f09be2741365138b764799ca0c03adc470f1", -"T3T1_en_test_pin.py::test_pin_incorrect": "db2fe363db0c936c04060051530d74de7019d0de5ae81452a88e29466a702630", -"T3T1_en_test_pin.py::test_pin_long": "8ad76c3c005ed4d552837cd720f3229957e49cbb098668b702963bd6f3d24b1c", -"T3T1_en_test_pin.py::test_pin_long_delete": "c7c6bdf186dedf67185b4fddea1ad0ebab1ee6d22082c3995f903468e0be9ce9", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "8c8802026a799bc15e81e082828ff43867ad77b34ed9f9e6549f60916deaa0c0", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "686152781d383be4126258815fdaed4c6ea34fb3fcfba20745383bbcd10b8c67", -"T3T1_en_test_pin.py::test_pin_setup": "9d71fbf1841df474c364a343fd35fe8c751701423b242945ca056325d3d823e1", -"T3T1_en_test_pin.py::test_pin_setup_mismatch": "f5985ac445db316a2138462b0ac53fccdb5ac5268b788a79dce3cadb2b23ef31", -"T3T1_en_test_pin.py::test_pin_short": "843cc9e30809976553ea5d018cc1f09be2741365138b764799ca0c03adc470f1", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "7ba810661123c0391e395dc363e571868b7151f6dc2cbed401e2b973b6bf8eb3", -"T3T1_en_test_pin.py::test_wipe_code_setup": "c51583b78604e3c5f90767cbf36b884efe7b73fefbc7a880023a16e1870d53f7", -"T3T1_en_test_recovery.py::test_recovery_bip39": "a5c4c6d7b45a390363133fcadccd3f275fca0b3f95064ca3873686eac5b69679", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b9c54f11c943d9de5152f85e4d08f27730f8ac042321d86cd59273bf9b030031", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "87000616f6fa2d05c05b5fbfa5c9dbac5732d4328570dd0c00a3514fe244aade", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "55b4e0e19268ce349c6a48100878eb5069c34c1893ae6000758d3de303112945", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c355fde729ef67c71416ccb18b8d4dc0bbe20ca657eff3aa8d16102dde217941", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f93201c54fd30026f348dd0f1447a0c2d870a1a4058357e4fb22177650cebdeb", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "061b2460e3fedcf860438fab2cdaf0631e096b335d0aadddd3f562c64fd01692", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "97a1dd9f458fb4a569834f0b55379a54e0923bcc99d02391b068a60fca90ef00", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d5e022d2f8bc10aba212fcaf4dd17d2212d8dea16b61fee96d720e1713175141", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e2dae9825d2e0e0f486806acd1160eb5c247fd48f4ab8c64c018c74c0c9cf827", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "964c12942c4ae6341d0a77438651d64f3778e64f62587ec01020e551fe00b04b", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "285fbd23f5c9acbf92b076f5f065ed4f7ff4a079de6a6b4885f992dcda137adf", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "a3c951206f50b0ef4a14d07782251a1e06a3495e619e66c3cd125084d9dc23b1", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "45b88ea70e5b3a24b1e4a91bfad7df0ab50b348b76796b504193bd697dc7cf31", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "32dffe9b2fd28789b9d481b6be94af049e8319dd6312d2d945f994756a16fddd", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "03232e4a4b32939fc90ade69a96b20f5d241b4f0e513f3964aca36a8714622a1", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f737f81273b082cc5341ae9e13af7466e93f81bbc93e63002480b58168d6c353", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "91af2209a78cfe886ff4e0f9c5939e06ddc912773791abc6730acc3fbdf74e49", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "5220916b2da12f0b9390dfc7791c17d892e850ca5bf02deaed7b7b2d07e9e936", -"T3T1_es_test_lock.py::test_hold_to_lock": "f54801e048c2230c9cb28e3145b2e5304159d342e4292ade8c347860ab59d6b2", -"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "16ddaa112b64dc49c3f72d64f53923a51c7e00d91f3ec303c0e530ffc651aed5", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "d84b27ae2946e1aedf774d9cf53b4816c0f88f09fde4dfb0baa0770909f04862", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "f7a5c47ceae80474faa306b02d5bf1d30cfa7bbc860064c225d9bd5daef03e75", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "bf0ac3b435a0bb0304928b7755f313212c12bf8e26c8ee7c8c8478be39aa1aa8", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "48687a5628b0737f0519106175eab5096153aa2f0d4989ecf82ad75426326891", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9a1ac7258c87065bd3e55eb7cba12ce5f04a6aab1ae334306d4ec859eea4dfa7", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "06d76a98398ad9464fbb4044f31177ee30a524e94113a846147c045088216fff", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "75dd4dd3034306019988c36970a2f1aaa060b70ed4f171ea23814cdf293a7042", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "4348fab9c54bbbae084247233cd9e910c795387bacff3e08c9493b5c1764afa3", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "fd893488032616d001621908992483ca12db96e67201a60db75101bcf1ec7570", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "4348fab9c54bbbae084247233cd9e910c795387bacff3e08c9493b5c1764afa3", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "06c46daba3204be33dce32350c50bb384ea587ce6526ae5511e9c31feb29bddb", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "ef078e54391d176b1ad939a0c49d960ae30717ebe3d113625fa188ab2cc360af", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ae618920b2e0ea1f52ca8d0afb7005d1b25096dda92787004337f30515509f84", -"T3T1_es_test_pin.py::test_pin_cancel": "6f4d0b14aad1a610e512cac0cd8ea2967c3518aba27dde4d74b4620b93190858", -"T3T1_es_test_pin.py::test_pin_change": "8624327de05f6a301c77df4df634b87819e29bc810f37eec7d1c2c97e69d393b", -"T3T1_es_test_pin.py::test_pin_delete_hold": "ece7e8d296868ef89612c3dbcf2ff3d0fdaf1f58c51bd19e367a8b0c56349577", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "240ba4ce68be9dbf6e359ce23bb4dd6286132673cce393b8716f3af633b74957", -"T3T1_es_test_pin.py::test_pin_incorrect": "5ae8945ad10e67d52dbb1b49a21f4a475fd6725e3029c7efaa7f568bb1babea5", -"T3T1_es_test_pin.py::test_pin_long": "e1c19434c219ca73c168b8c6e6e2d5828a48a39bffb8ddf424baa4b2fb6b3fff", -"T3T1_es_test_pin.py::test_pin_long_delete": "9f53a08fedf8d0ab44a36a881e020125c9c57b51edc6a1ae04c000ea8540ea20", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "fdcfb06a51638b7974c5b88fe5193cda6d58814c8dab60ae323cd8f141fe720f", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "37069b3688d1e445f9525ac7b25de31d96531ef861a44563a8a2dc67204b2a12", -"T3T1_es_test_pin.py::test_pin_setup": "7ae4e657cf610686b99a2b2c12d6e54a564b3f9eaccfd4263422de30dd3dea50", -"T3T1_es_test_pin.py::test_pin_setup_mismatch": "efde0de41dff220b968b6691dc46694bb5efcc171d7fe4f512f1454045f6bafb", -"T3T1_es_test_pin.py::test_pin_short": "240ba4ce68be9dbf6e359ce23bb4dd6286132673cce393b8716f3af633b74957", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "da3a48bd3cf0f25ad083eee00f1209ec4900a83e460c4112eb340f6b3d96739f", -"T3T1_es_test_pin.py::test_wipe_code_setup": "c2707cb2f87be541adf786f2cf858bf3fd7200ad8294447642dd074501306631", -"T3T1_es_test_recovery.py::test_recovery_bip39": "58e77b20850802f93d05eeac57172461fc9d0219db41373f88495df9b7d07fab", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "dd7e305b6558721eac4b7b3a5588eab30b122ae336572809b717166147aab2d3", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "4410c661bf3a0e8abef2c51f9f7161a473ac57cad1c727799dcf650ab57ef110", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "5058cb85e0e971361d81c192310362cbedf222583d9dc88290b944aab366c483", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4ea10f805e11d8a8f5dc2d84b29a8d397430355d88f7a2bf84f9150507f528d2", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3818e1e1e37f9f20bf7ba615018ca06c10f1bb05e3a075142aa4c215f012fb94", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "84268fafff3d2ed241f52e3d93d060bda32c807ca98e167cd956b2fdd34ed95a", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "159e36d3484840de6a4f4eb9f3a3063df277d467de91972020f19cd5973431d2", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "fae052a37baadb776733afe27d8bdc78842b4fbef24d3961a8f1d0d8ef8a54d5", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "3c2faebbadcfe45409b37928362f1171005645853295a9ecc37a91d57daea640", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "0963090b34d40100fe350e2c1b43f9a342c0c90f2adf0d8472201e16e8fcc372", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "fdba521812b652c1669117b3d9aee098f366d40208388b0851f13f5669b9e64c", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b65a1ba474c106cd55ddb7dffd8f8723c65528750b0cc031d84b5522e84c5196", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "cb68a0a606a0f1a891dab8f1e3d70ba9c632021be8e84094a5e344175a7b22ad", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "293a6245e066bc298ba8665328a2c5290a88f3231a198213637a349012bc6570", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "268780a30a351292db3776b02c2d425290152c5ff8a760d55b0c0046f331301d", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d7f909fda58a57768bc0be0bc7a49449e9762c766f5c29457618ba24ff4826e7", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "bbe50610a98d411067be1f5e410c76b458f2f2b07cb7c6b20b35a04ac5356169", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "5148e4c3df1cfd589e1e6e136edad03f68bd3235138da6b9ecd6e991bb638f0c", -"T3T1_fr_test_lock.py::test_hold_to_lock": "cd258db17f1f52b1a406e81974312b65fd64e243d5448f7189e73109f334960b", -"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "f4ed613dcff69cb04af6dec1af26f36803144c43771a4020eaa84a47f4352ef6", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "fbd83d95ee071d303e1a366119475029bd5c1528db9e061d294ca32dcd70d946", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "d23591c8f450befd340802a280b4507a823238da6f32546403e337c5a65baa45", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "a0f1eecfd2c6bc026eb484d794ff8190ba38ec2cff44f73e2f9d4f25351de6df", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "aae3c3d8e8989ea17259b71979db3c055ea0a5920bd1be9bf7b64f17bf5e95d9", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9a67c967da069865b9342ac9816f1a318eb6f88b1a26fffec47fc994fbc8c762", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5af2bef7eaf37e8e00addd29bfb43f629a2c177a625677b04e5d1630a80bd633", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "97470b6f6ce02e181dc87af36575958df24d62156bcfaff2f20d7a2687ee8aab", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "53de59ec1f7c75253071982ba194a43129b86cd99997017a732fb82d00093158", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "a6a49468ba2f4dadcd2ec2dfaaabfe79f4e9b2d129e6641d4dd8e3ac985e0d35", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "53de59ec1f7c75253071982ba194a43129b86cd99997017a732fb82d00093158", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "9b0536862f6ba7e3ce14f877a5a9bd7316be4a27aae530fb599ec0d9a5ae1b77", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6bb2ecdcbce2a1e74b16ddc8283364b4725ec0d57e785b341eca3ec5f88046ab", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "8ed116460015a49cfed7632dfa5ce15e5cdc62e7351993c970f6ae39d03c7bab", -"T3T1_fr_test_pin.py::test_pin_cancel": "66cea5884b1b645b97dcd0afe298de7418cbd2de42021c8b0b2729d92e3294cf", -"T3T1_fr_test_pin.py::test_pin_change": "99e8cb7ac837b0152966d1151aa5d72bb2ed05abd62e67a4bad7255efa04b629", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "336633f3064fdffa5fdc3a74bcdf3d5b8b0c4f100ec5b9dc45a2b00ec02dad02", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "8255dd3e5f9f79e8c4067fe4c3b6db4ba0ae43912c1023212ad7cbbfd34138bd", -"T3T1_fr_test_pin.py::test_pin_incorrect": "13e8e54b74da032484e99b14fa7b1069bbbc081abe88d9fd0920315d81969b92", -"T3T1_fr_test_pin.py::test_pin_long": "874af96c9a95d6ec5475703518f83dbfff62c44cf0de5ea33aee0e86c5e8b422", -"T3T1_fr_test_pin.py::test_pin_long_delete": "37dca69cd9c980d0b4cb631d655d811cfbe7465f6b7b85e864669280f341d3b3", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "192833932b5e5efb37a36ca06f9dbe32a1e99828b6c7c09328e9963c392ef580", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "bab2e5d6bded9be11066437f30a0a778f5dd24fa929e13a6946058e23b4349db", -"T3T1_fr_test_pin.py::test_pin_setup": "69dae15f6596a47a0dac77f1586c74a2860479bd8b16583cc1aa48cfc0842dc2", -"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "85c1c4d3399de3e66ddec638866d634ff87f1c9faf2f5f0db750f71c050fe836", -"T3T1_fr_test_pin.py::test_pin_short": "8255dd3e5f9f79e8c4067fe4c3b6db4ba0ae43912c1023212ad7cbbfd34138bd", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "e85289f3d8d513641eecc3add9e6d76dac18b83cbf1f2d37255b5c2389d41218", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "6a1aaa5b655625d7138cf50d860467450007c217ed623cfca2ee4f741d074a02", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "9ef119922825f53d8751c61c78c6f598314e4f938e59da60410f681a2ce11722", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "a800c1c3a6c32ad6fe70e81e0998cd263682707e1cf6cb1904b35e9211db4d25", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "7a61c403721ce51dcac0774ee851c08b42b87f7d0a0f40293c53e2e9435d9482", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "a0b7a9c61b80ab8f3004c38190e7ca845bb77ab2d302315eb4dca2ac7a0eb105", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ad480160dcac09a0ce59ba4c45af21c233f07f6ce870a212876935b081013640", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d289e5d2a9a273c91e821440786e7e9cf73277ddd4efdfba80fcc2fc224e4278", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "05cc83bbf4af40e09c7001893fa3bc5d5183b34a7773f4cbf8662dc60367bcee", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "00392f50269476a0492ff2ae0a9d5574fe72ed3348d8de9cd5e38625594d79cf" +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bdd8ecd2c3457ee60b0bbb8a2e47fb4dbece11dbf7a453823fe9b99d5c20cb03", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "c06f48c1c304b0fd1e944ffea2b96107131fe3321ee0f67b858568fa2606cd75", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "fb6ca6ed76d70b26c7247718ddaddba043cd3a7b12caaf018b045c85554e80b3", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "156ff65d17c141d7426e18474e46235f249494a0a61c229dd3696cf9ff6c26c1", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "afcaeb8e837d9a09039cef5186bbe203a89be30064313065deade1ca96ab6835", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "101892fa0a24f33279d07fda4477178a7b45fc04c01acbbf901833d4d024158f", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "55cdac02cdd20ce5249fabd5e63ad68386a796634fa21e2ef7cb1701e98c0020", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "be2ba7ad30c636e7542ede4c2b39f6c65da16eed559557d559fa2a9afdb98de6", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9baac2b705a9f38453c784d97f7db405f78c3ddad7d32e75acd6c9cfe418b69a", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a289533058d32023964eecfaeaec3f0c5c489aa3ddacddb44c7944126a9e2c92", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "30add0f52ceec0d4aab7c8f4fbfa848b70748dc6b449fd35bb800ed65bfa6918", +"T3T1_cs_test_lock.py::test_hold_to_lock": "8e99b5897e849374c94b8bf9a581971bffa050bdf39a684967be642f66fca612", +"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "bf5322dcec0e6560aec763f04e4c2f6afd3e056968644414f3acfe4203745c66", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "9c272fbb29ebcf1d330827e863bdba92ef47b506843ef9108a43304c93dd9e86", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "0806ea4674a5bfdeabf69bc4950d49ec073a5197c8ced4733310067088e9b07e", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "ed17676adfc5450867185b6f40d8b82b70843ffbf4baf78ca99517946fb4deb4", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "7040b38e3e65ddcb8a60eae342c34e63e3155ac1dd375b8de617eb56c2ac45f6", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "fad6ac3c1167ffeecddbca151ead17bbf775bbdb0382d76b26144b73d3668d05", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "a29adc89559c3161ef1398d56bbd375cb0b82eecc9298a9122d1ea12514f2d8b", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "f05008c29731c518e67a859733b1e30b4389c4dbd44143bfa437b47761663f90", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "a5bd5ed255299ef49c04d5f0e855b516c0c6ea3094b994d33f0ccdf714b530b3", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "cfd865ec5f6e7aa18004c85b81dd714b95b1a2df17c4b04aa52ba64f170d0419", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "a5bd5ed255299ef49c04d5f0e855b516c0c6ea3094b994d33f0ccdf714b530b3", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "4b19af3f0a6867681038bafd2736d2c0d6a97575b89846b070970ca40cff2075", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "96bce0775d727c72d985a45fddfe615b79dfc0e358b953ccb8b1ee21b8331457", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "a842e5e52466d792bfb6b9d81c5e12bba6f3e618f71795629b7e731efa61b5a2", +"T3T1_cs_test_pin.py::test_pin_cancel": "6b225805544e2473e5bc911e271b068a3c6379b7b41ed1a5f55bf395ac3287bf", +"T3T1_cs_test_pin.py::test_pin_change": "bea7e35dd6c42f7af563fd839942c6adde847c23b37a6de86cf5d9c1defa95ce", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "0bbb8d6984c715b8f0b1d04a5e73f4b1c9b63f87b8ab340e08cb247b6f6a012d", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "7a74cff1076a2e2000feb7c9c5bd411f2b51ca4ca6ecda098533d948ed5134fb", +"T3T1_cs_test_pin.py::test_pin_incorrect": "6f5a85724c48a9a0af97b4c11df69b951fde13affb5f72a9a020fe111f75d773", +"T3T1_cs_test_pin.py::test_pin_long": "d3e8759c2b4febca759b498f6c863e6737a36d37e6a21c6632abae139dea382b", +"T3T1_cs_test_pin.py::test_pin_long_delete": "2ac06c94d2d437dea100f464b22508817b503aabbf1d7085857717e43869b111", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "e918ae86e079c09423f827d239ebc0f2227f2d925efd9bfceb893417710986eb", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "8f3cdd52277117972734323a68583be1a92890e7ac704e87931ff3b3ef32f20e", +"T3T1_cs_test_pin.py::test_pin_setup": "8be05caedf403abc98e04c8914b6d970d12d964058000dc1c9e34dd0f345b3b9", +"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "a91a1f4f4bbc6dcd0d73d45353a3af316f7346c147a4d44005d3515cb830b321", +"T3T1_cs_test_pin.py::test_pin_short": "7a74cff1076a2e2000feb7c9c5bd411f2b51ca4ca6ecda098533d948ed5134fb", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "7b7beb6805d943a29d28098ba5d23bd3d9a63231c12d1d6518eda0c8ee36c74d", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "d95c40e79c68bcd0f178895fd941724c72a1fa4114224376283d5c08a5411a78", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "18c8812c18b401f400ffdaada20bb4c27a6a41b4dc2f0688ff5097b4110b068a", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "b6662f23a3ff5d506f2f1d1bbf031631c3f679a5544909a5d93276a79accc373", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "c7ad24179dbfd03696098715a52b656d3f0163a7c92bcc1fb7cd187b0500ca68", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e28fb99da24382dc1837eb73b4dd931f25303f10183ed9a24a1a83f1c7670c25", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cf2402357fcc8abf2cba193738c748eb772beb83c7c6514f450769a6840a0ac6", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1a44e7bcc26d1ca6cb9fadc6cf0191785aee096418134e55190d5768ca6b5f3b", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "24635e8df7035f66d899670e00cc2cbfec8e9c6f1bdaf802a2c2fc0d69bbd265", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "193f6053460a2a67cba2022bc310bd3fa4d00c7af6408544ad62a1911b7f3121", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bf46b9b3ed4689164f9877140549c91649f9de4153f3b026d66497bac64b75a3", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "37716b158133986a37b9a803628f382abe3cf25e0ce8be8017605b066adae710", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "710c9b7c5dae8a373c26d1476e9e98c1c28b1d0ec01f53bfbb4c7f5b7e6393ba", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "756747cecf841b995f0e23545a05d22d6a1b8a783bdeda30cfac926a64f6f664", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "1cee0e0f9f58623f627685ee23750a53cec388d351f05dc2d875b61393ca4f00", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "2f123bac78e5f12dfea18414032142e3c6efd601aa60b84a5a9e0e10a46ff85c", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "5c221cc9751183eaa02e2347571819469c316bb1cde0d29a5a252cf0c7a5819e", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "5744408e0dc4ea581e209bf26abd86b29f34f89e39f8ceb125811670feee27f3", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f0d1307d9bb9e842726e8616d4ababa60df4dcfd8e48f9777583c5fdc1d529be", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1bf1275b1b0ae36c3df53e0df122c08ef0c1b11ad27dfda08a0e7ea4f9e13e5b", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2d820b034627bebf99a0a054ed7ec3b81ad06f2b14803f67566e1776da943990", +"T3T1_de_test_lock.py::test_hold_to_lock": "dfecbd90b394f3b35f0cc2a0248c35b50427a67ed647499e5652ac51d6cc786c", +"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "5532543c77b2c9f64c16cc9f31371decda359063067dac21143c1b318174750d", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "58bf45df88e43fdc94381e7d98320311daac04740851aacc8e9930d7fcf95245", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "277aa167742b546d6afdbd8bd9bae10c339321618b47a58407c8057b81f61964", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "7aaf8a87d151f7650ff4a5c5e43afc7beb2f5642e20cac4baf932086dd573719", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "e0ce51cf3c706f2175a73c78b3ab9b857f02a6ca094cccab3c0153b3caa2a3b9", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "c902be018fa4551069e27655d9349bf2c412f26c3914b2dd7a268c01fe3cbc14", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "f3e8f7b95e9b5d9c59721697bfe0dc850a61c1103d2fb0f45b072855bb21d72c", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "fa2302928b8fbd7f48a8ba602f02ce90e7fd5c206f2140c63e457b853a9ea94a", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "d2c2fd1db9dc74f056c4c18f25e73ed66ce80300f1175f48a6f363d342a5bf19", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "6810352d8b5b70a10885303f58feae0a24923d6bf57aec92ab326cd0e9732874", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "d2c2fd1db9dc74f056c4c18f25e73ed66ce80300f1175f48a6f363d342a5bf19", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "1418fc43424aef260edd3c2b432c74729be6c2e082fb275ca1c1655b89c59c40", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "ef5113188bbc4c84547b85f0b4359b823a8f95778cc907a3915d355be493501d", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f9b9792e7bad95e83d3bb2b2df917e1da5ed48dc7b13e7914be9aec6e10edf42", +"T3T1_de_test_pin.py::test_pin_cancel": "b3c20631d0fd1f39f4ec8cd4b76ffae6f0d7c62627210d9bfddf5c6c19af55fc", +"T3T1_de_test_pin.py::test_pin_change": "c7901ab88bcb588fea0b14a96592f55783861807a6f5aefc9cef7363ce272378", +"T3T1_de_test_pin.py::test_pin_delete_hold": "053ba3cd0c2425fce74f72fa4701e8b96d1194d2d2d4604fb66a95247c2af797", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "d8558b17ce1c0f1682ad76704b8fbd0794c3da25fbd42c9105ccb9f9394c9816", +"T3T1_de_test_pin.py::test_pin_incorrect": "3559c8d24d85dd4cf2a17b8c062e94801d10eb81c207cfd1a67c235902c6f49b", +"T3T1_de_test_pin.py::test_pin_long": "c8d6a20cacdae3ba3c4408ce8741fe9d4e3e4877512a1da51af15d9aed6aba0b", +"T3T1_de_test_pin.py::test_pin_long_delete": "9d0f150bdb166061afbd86dc69f165027266eb9c7bff03112b5fd6ccfa79d2ad", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "d17386ff2db1565a89c2dfafe999a8eaeb58033aa0fa248ac45c081e0b898da7", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "ac4234ef38fc011c71fb1447cc10ea94a9229ff4bded137eb3b3af41a1fc06f8", +"T3T1_de_test_pin.py::test_pin_setup": "023bbed028d7ea89e8d58e585a2256942b1951694c0a85297bcbae7387409c64", +"T3T1_de_test_pin.py::test_pin_setup_mismatch": "906f016999c6e77a1cf1f692399dc6d453bb8ffc6d0c97b5e2bf24b77b86b1c7", +"T3T1_de_test_pin.py::test_pin_short": "d8558b17ce1c0f1682ad76704b8fbd0794c3da25fbd42c9105ccb9f9394c9816", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "e6a921f028fb43f5996f88f63092df711629af7ffaced79fe8c2b863b78bf1a5", +"T3T1_de_test_pin.py::test_wipe_code_setup": "84e050d0cf5bd0f2289697e90ecf9b6332e3122999fb335ea98fa47c392c33b7", +"T3T1_de_test_recovery.py::test_recovery_bip39": "d83b2cee9cfa4797ab78e42a802a694229f678a3e57351f02a742aedfd1c2c91", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "8da9662ee48ee3329c17d30902bf5305091d4aa12eb64707e88084551aad00a6", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "fd7d77d98db12b3a8a0577c886b3c12e1ec5a5756bf0aa6bc3c51d6f94ede7b6", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "0ff514b16b04bb1f0074b7634c52b6b36ad329f414347a791fb15036bff453d2", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e36dce460a5e3079ae9cff437499e7888cdb6db0aa06351d2dbdd7cc2cb3ab36", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cf5b36770a72897133375b53da0e75af30020527805559fec6dbb0f23f36812c", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ef15c6815c5e53c98e500b8ec5d68b4b1cf852a0260f6e9eb9ae9af368bef4b8", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e7101bd80469df6762a01eef2d5112b408ac6f9ac859ad62335db656d5071c92", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6331aeab9c7bb97d1bc218f6782b5317054c8595e2fc9950b7ffdf6f4004cab0", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a6bf69b77418064b43795e13034fbcabb445d3a0a5533a10fe37e2429c2ee6a6", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "b544e27a7a322939f72ad41a699c3209fba9d07becba52f0c72fe571d36c2804", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f7a72381a602a235c75087034c33cb1f1a0a95b6b9b9a8689e3ea2f6db6add49", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d07c96600af2969ad75edff7d35c50c42371addc2a8269af85af3c003ff5c7ec", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f6862c4fdc00878f9c14339896139094701c34a89f4f9c32d4e03767540de60e", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "d2423bdeb2923a2c06b59bf114a6219e4b918d7d3c061750985531b3f6ae8329", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "5f36a5d9d88476467ba31078701529dfdcdea2344944a8952e69dbfec238598f", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "62e797bcac12d651ab64b33db19dae577a31fd002945e3f495899b3a7004e415", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ea977ed91b155f102f66fbaf519b9c764a3839bd47f64461d41a8d1677faeb1f", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "4c47a36836400172683dd2d47b38cbdde11bbbb702d4cac72a8b0778f24e2c2c", +"T3T1_en_test_lock.py::test_hold_to_lock": "1665b2e4984bcc7a2f307a89789dc2d6c8db9c04a5906729f769e0e8b76da04c", +"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "e0faf9f3c0c83f6762dfa00323d7a69ef4f1f71ef99160b88541e9068f04e55a", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "51c45f969237398ccc41494bca87694b061578042c71508c61994ea47907e033", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "be89fc7cefbfa0e03f0cfad7fa5f4cb3d42adf26921156d59f3ffcc1b06f2a38", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "db8b45f2eb9f0ed0d830043c8e3715b9186446b1ab5af1a2c6e6a34d8d52c7ba", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "e7c71e8d7afccc079ce77aebaae560abf309a9e09f9ad2561298181604f34646", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "15efede095491c618c1c8866260763cf673093c92bbbbc65929153ecfd8edc86", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "11e34eb00e39ce8854dc8d4c26577c4aa82f62fec8505e7074483dbef0766d46", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "0b09f18df7e875965ef27e4a9442d9478adeb3179d7e742c0a8a0a70b36464e2", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "81cf3f1b2994ba5d9f89e75c871695ce6e89e397c64364229608e95315ca5ef0", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "df47b8d3a2bb1d48c49fda7218a5e658169e80c5f5a45fa5a3725b2114183864", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "81cf3f1b2994ba5d9f89e75c871695ce6e89e397c64364229608e95315ca5ef0", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "d2a2dd8ffa128b524edd2084796b629cf6a66f70f6b8767d4064fb9728ab3378", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "2bd34db9e07c78c1c3d862ce87302343e4bcf6ddfbf79d11042958aacf783218", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "bb005eb9d24591e76f82c791232d405f2912c5ba7fc1430194cb30cc641dca56", +"T3T1_en_test_pin.py::test_pin_cancel": "bb4efc51df54d61f2ddfb15018f72c597d3df78e7a973db0abf6392ab4611bb2", +"T3T1_en_test_pin.py::test_pin_change": "6b231edfbdf58b01ceae46d96b641952f6e2b1a0bd1490a91516e23f1e4a61f0", +"T3T1_en_test_pin.py::test_pin_delete_hold": "8b7d3ab9f42f55a2c0dd7b0514a082b308606c8311ef830b144f662949b784f0", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "8d7c5a0b9985b4e002bde6a9412e0bb9fd475361c10655d2dd476236eba701e5", +"T3T1_en_test_pin.py::test_pin_incorrect": "aa094244afad9ccac7f72456cc6d6867d810a38df8f11518391b05d09518300c", +"T3T1_en_test_pin.py::test_pin_long": "79b0f19fa703f3c9e969381c0c05feb23a17d86188ae343ec570cd206ccbc1dc", +"T3T1_en_test_pin.py::test_pin_long_delete": "b9a1e44a216c4b2fa5d3015efcfa8f24375b55067754734f32ce193d98cb21a3", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "853017e310be9e4f8277a092924eab9bcbd0cc5586156d88ffe8158fe8bf412c", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "4d817ed5ac7ef97ab4455a856321452851940f46985481296cab92b7970d85ee", +"T3T1_en_test_pin.py::test_pin_setup": "a02f07704a93a1250f10158af9eff9e0d068d82503a907025ac90a3a4f3f825a", +"T3T1_en_test_pin.py::test_pin_setup_mismatch": "debc0852ad98018a29dbf59fe33275a9ee3f67b8d02c351009b165fcfe195871", +"T3T1_en_test_pin.py::test_pin_short": "8d7c5a0b9985b4e002bde6a9412e0bb9fd475361c10655d2dd476236eba701e5", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "e6cd31f468af280330b6040793b0ed740c664537ba4d46bc5f00978a75f6544d", +"T3T1_en_test_pin.py::test_wipe_code_setup": "4b317949ef4137b1877b7da61c044b0a79a8f31b1df1c691b8861831116b9909", +"T3T1_en_test_recovery.py::test_recovery_bip39": "187dad507b8f40708ac427df04320873a2c3c33dcd945940e5fbcce6315fb669", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "0504b66f958dd19d44317f31feab77d35a9b11eb2003e37ea982da938aad649d", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "2935d5cad9408dde53b8cf5b85ff8c790dbcaa430aac699a4c9b357624eacffc", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "f80c0528314bcd56f0d30c55e7dbbacc3c515e9373a2c30d1cacc207ae62d8d4", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2a2448f1351b0d8a9a6019ae50529ee7ea5941b00ee6a606104b8cf438477ef5", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bc17b8a30057c03723fe8295ccabb585a200adfaacecf58eacdddaa7bf60119b", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "28070fd570abd1f0e219a37d095bf1360b86fbf15663ca4596e767dcceb2f6a6", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3b3d3e5efdeb6c4e09c4aa3d685129e6863db8da99af7797bbc79dceaab89297", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "900575f3a90faa1a0a7c5955d408ad5590cb188297adbf84fe800d8b30705474", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "ea04a1231c8ecb5c62884a4ca232cba969552f7b48f0bbe8ea019ba853b5d15c", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "2c13834566012e8b7158330cc454087dffadcb5b80e2c7dd06a6f2a39c628f59", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "4280553d6953e41669553828201b60a207a4f5e70ec1746741a110a669b6698c", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "ee872a1f1ce437f6440cb04e2ad6c39b15ad70bbdace768f0c64c0e01834e7aa", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "106a9fa9cd8cf89aaa50ab3f808d86d499d43e28aba5fbe2803f6149112cfc2c", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "7218e00fc1fdbe36b56f2932a3109a0a8e763ee1f883b06642daacda09877279", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "29f4f3a3058289de697919cae0b62e23a55e7fdcbf1c6add6730a541222d516d", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "39a025bad0478d80f115bb72365d49177c8f0f76369e8a50ef5f4ea1420bcbcb", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "24d2efbb5b163a2cc4c7768ddbbc66e8b19ca90fa78e2a29aa4de6f8ef244932", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "82812a94906043d9ed794d628384daaa25e005ddc8d114246e8402f91aff3756", +"T3T1_es_test_lock.py::test_hold_to_lock": "c9fbce356bceef93565ad1a8ff282766661ba1b600ce018d41c8aaa0a4e81d85", +"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "4176b8cbcf38257db230e2cbbb686f9156b32569d476bbf7be0e5d10b33f2bdc", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "e052d67523e2195800dfdb6c3b6b7b0d58c0d54f6e4ca37a529ef8169d69e7f8", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "11c50624a98f2159af95311332f44b79b2d3778aecf4f0473fbdef1b20f6bc64", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "4d071efa18148f8cbf71ecde0b1590b87e02998226fe64488478f7839bea4be1", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "659591d1ee763a6ec2f0d1f514668797fd00d6d73b874e8383738432439d0ceb", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "231e0f91691d4fa305af69ac911df894d2197cbf48e2bed4737b05cdcced9faa", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5cc5e4edf96fe4dcc150a56116766b8d3a2a42b8c75faa532709c6040373fd0d", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d0b1bee18f5105efa74bacb3eb22345f453ba87801af565512c7703bf64ca758", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "1ea26841531b990683ca0dcc40f5b3eeb726563c86ed281162f4617162c4b759", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "fb0c0c48ac04855bea1cd1a8ddf4b1388847d5a430244e8089a615b29b7e36b4", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "1ea26841531b990683ca0dcc40f5b3eeb726563c86ed281162f4617162c4b759", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "bdd2980bd8f68aed01ab3459a3a717957d240527f455e1dfffbf210e4054ac7a", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a3087618f4217f0c8dca901041d2e472939a128f60d3ea01d28488a3bdcdb14", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "6b49ce68c6c023c47b0080ceb700c1e77767c82c2230e77ae43dac0dca79c7e2", +"T3T1_es_test_pin.py::test_pin_cancel": "88e2cb6a1d189b85b602a3d2446d8aee472af955a3852a0460964c77de652f15", +"T3T1_es_test_pin.py::test_pin_change": "b7dbfab5134c973551d3dac6f71c07f123c3b41ff46bd5ce8a5298793bb1f8ec", +"T3T1_es_test_pin.py::test_pin_delete_hold": "176f37667f29ba0ef75526308188d9dc9e493c996475ef76f93ddcae2b0e7711", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "48198148d76e6ca0de5dcbb3ce7945fa9516359785645c1ecd6dcad3db83f3ae", +"T3T1_es_test_pin.py::test_pin_incorrect": "000e5ac039efca9adb3aefec0a356df441375e67d25d796e6008fa95ca3b5d78", +"T3T1_es_test_pin.py::test_pin_long": "e81c79d465d6daeaf69a9354c91d688c3dd1bea5f29b814d2c60c277b6151b36", +"T3T1_es_test_pin.py::test_pin_long_delete": "3cf957ed8d23138134a49f410c84ea372a400f9f458e03ee828db6edb5702aec", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "f8e8387bb9fcd5d9a660b3b4c870022d9f887a94e6523370f28c4a452bb4fb02", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "d6d094bfd464bf7ff41107ad2c2a6ee6b5bd74b67f21727a93da8aa5adbcdc90", +"T3T1_es_test_pin.py::test_pin_setup": "17862768b59922bf3369c624823f072aad8bc751369dc57fa9554c69ddb3f983", +"T3T1_es_test_pin.py::test_pin_setup_mismatch": "7359d8e379f23a76772261b8fcb6e8c6d2ce0e8ad2853d8c2565eda81ad69464", +"T3T1_es_test_pin.py::test_pin_short": "48198148d76e6ca0de5dcbb3ce7945fa9516359785645c1ecd6dcad3db83f3ae", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "1905e9d32a7746b2f9beb73ea2951b011ec5c60279407fe3385b1caa51e56e2f", +"T3T1_es_test_pin.py::test_wipe_code_setup": "4fbaef2fd244e23427ab9d060342ecdd476fdfd0945338504923a322db12954d", +"T3T1_es_test_recovery.py::test_recovery_bip39": "871937fc5138f48093f14856a78e8e2698fe407aef57835c2a990c96a462b3e9", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "8984517a676690a5d26a4f7a578aa455285e444c933eac7a8b37905d51157808", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "d2c58b863e451bf92a2b0ad5cd2f33491ebf9b43b59029facb636008bd130998", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "2499fdabac63aa4a08d66bdfc8cf5a0fd1e43723275fe421efca3af92a7d40fa", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d0a4a63450a7fd91840fc9625342b602c7ee1b4f2afdd97e60804cd50dd8d6bd", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d9c3c13c8671cb73f53e49e1b47c9d48f8342b4d99f84554cfbb988b8c01e23b", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "80c41c76af46f2162640d87b968b677451d86d44417bf31a7f85121a1ff760f0", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e09f0296034ebaafa12348f9bd6ba7473ef9cd1d78105e6c279125cf69d276bf", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "c525f6b9604aaa28264e9502c92200f0d3b63ca009356ef9ede1a5875ba581b0", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "7863be843974eaac86f6020f6df344c9d71fe52a9f56c2be4f67910b0f94e518", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "7e04457fbb63ffe629779a4c2b08ed5e45d01204d785e033916f65cfab687aaf", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "5503a08d911c0066c1947f53a8c7c69f7819ea992d485b0cdf23afd882e3e5fe", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "5bea1b176f0a48b278b4a8ec251bb7f922c0193f1cea93986c295263f722df7b", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "34d230a8f446bdba5e037877d00aa8067c30c8b114fbd02940927a4681b1e5b0", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "96a492ce46c6993521eed4eb227a2beb122712400b83bed0715818c31cd39adc", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "533c64ed5e6907c712238799f312868557923fe2b4aa302a2cdbb6449d5d8cee", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "65f49ab55c3023a974b82b9b012e4101a677c470a95a0b47d3b32d8c99e3b135", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "af09503c133033dcd796527e9f52ad370685b20be3b50c93fa041323ea62060e", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "741eb41441de2c4cb3387c9cf641e368fef8203bd0c8bb9fe154c0612f15af86", +"T3T1_fr_test_lock.py::test_hold_to_lock": "a0f3fd6fffee4fc83a46bc2670b70a63f9bbb2566eb6599192f1d0fdfdc8d339", +"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "915edc252c0f9ff7f1a240f17634ca9c6695834c84f5a962a45d0198051f972b", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "83cb94413d8a4a54b78aac9ebc874c6138782d21c44d9a6eea2510985fe7d5f3", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b6adb7a960e361df4bb52e497d5c946fceee072be5cfeb532e68a4f5d901e147", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "d5f85588a41b63eddabbca3d3c0aa5c1b7b9af3cc688d1b5c8968c039ad1da6a", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "549b65bbb546e2a20464e064df84cf278f49b4975f076534b6183f502c4bad2a", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "0b8d7347146c1740b890f0712affa45ed9ec55fc8b67b90be0867798ef43b598", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "58a637a868600f2b4a0791e6846f7b0733f82dedc3fe2b3a48403c6185024012", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "fbd7dc7c9147b1535bb35281aaa26e1cd8e4a76c617e8d2acf49d9d07de4d4ec", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "76d4875fd0f0842cdd398ea6f826181ad37d3bd4097dd053c1431f5934b45d1f", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "f5b2fd0d4f45afca51e0cbfa119acfba7a55589c726437b723d452e46078ff68", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "76d4875fd0f0842cdd398ea6f826181ad37d3bd4097dd053c1431f5934b45d1f", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "cfa2b423c1e134a2c63f7e1294e50085fa5435a99e3f7e74cebad7d051c99286", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f75fd9506b7b1cf1e95d1ae9ee2da07c6f8fb3502fe036ce063eaa007f654f0b", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "e6f38fb6aefe76b451c1e4a1d6235c77994605322afc51927a4fc0ffea0d230f", +"T3T1_fr_test_pin.py::test_pin_cancel": "b01d0664f24f3c823028d9c93ce00501bc687e1334a23f3e5b3d2a6edcb9d780", +"T3T1_fr_test_pin.py::test_pin_change": "116679d27010214fa6943a7e44d19a4852bc2b4e5cf2bc0e57ac654c15c8c68c", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "7497f302db432bf6274703f76ae230efa559bf80c67e831b9ac26132c6e62a0d", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "447e181a6368eb64dcbb2d5141e2c1e34d6c6eb2be115ada8007b4208e217284", +"T3T1_fr_test_pin.py::test_pin_incorrect": "a0d0323c1b5cfb215c7f602865d0ed54b6424f4c6a067b840742a83fde5d11c2", +"T3T1_fr_test_pin.py::test_pin_long": "67a65f69c9c8296e3df67e995117c8d61ee5fff9efac6f96e19c83daadc7baf1", +"T3T1_fr_test_pin.py::test_pin_long_delete": "57ed6057bf784246e07d8e72a643a681f52759b10798cd49cd1d7d83d423ffcb", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "70148b8f773f417288ad885b018ae94a318a246d68bb0d385dc0200dbc42047a", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "6dabedf4295bcccdb997a32e69a3130a8bc33e93a2a8fa865b6e20ed5ecfeebb", +"T3T1_fr_test_pin.py::test_pin_setup": "a5171aec50040c4bd970ea26573f9173c0e5dc3c273e4754cddc73ba600a4188", +"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "3e41b37c521a451454051dcd3a0dd13044989f2ae6eaf45f112458e96d122b1b", +"T3T1_fr_test_pin.py::test_pin_short": "447e181a6368eb64dcbb2d5141e2c1e34d6c6eb2be115ada8007b4208e217284", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "af5071c7702be6f4f4b534a9f9d0e1ea62b53cc05fbd15423448d57313180f37", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "85850069264f60c6dda7bd915e908af4932b50293f6f006ef436dbf3c0405a30", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "4f284e9efe88666971e0393a9cc85afb8047b83ca624f0cfe6fca40d9ff1b188", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "cda4bfe6f5a79c2fbe98e7e41c55bdc485e51d579ed18c049b929e0bc58ecb2c", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "05b4e2cf341661ab300379b05b733f8f01eeeeb0f3ee8be599534112af834874", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "9a740aeba8b98e23a610f9a818c5795f4840c9266b08b19d8bf80424cb54731d", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "35a82795eb4679fdb6a1c487bde9921bdf32753ac84b896bb51a4a40e0c1491a", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7e8ace86befb58f6aa15069c167ece1173aceef84cd40658a710a6e50f2ba952", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5f673cfa9a1b9d42d59d89af6fe3321818ac3b569b658cee3db6f1e284c97639", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "02f7cbd4092b668d4c4cff97a932a77644f912f06be9b5c1acfd31eca6f5c7d3" }, "device_tests": { -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "06b89342216a3899627c2209dd92d4cdfd9efb3a0985937b793dba8d7a9c61c4", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "92df299435ada0a498ff2bed2f387fc69f2a4308094d7c47b3aacbae3642eb1a", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "3b8705af01df1058a9a509e22bb8a61d7364b8869e47e5c9a87741e595f980a3", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "47852d7be0d6a9312d57f341eb7dc03e7cc34d7d03c229494440d84ac4dc532e", -"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "621efbe47e39cda831db553353fb565bcdc3bbfb48f6f98190398e6d4854db62", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9ac8bd9db58a4a45f6680b62f8622c6740486b2e2f732ce7530b5ad507457287", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "05d49c5a132973769b4e2b8c18e3759435d432223454f81447aa655798e3ed8d", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "b5fbdc7d46b2b086b2cae11f2ec0566a8216f6c6e5fb540482ff6f00fad00832", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "9ac8bd9db58a4a45f6680b62f8622c6740486b2e2f732ce7530b5ad507457287", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "05d49c5a132973769b4e2b8c18e3759435d432223454f81447aa655798e3ed8d", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "b5fbdc7d46b2b086b2cae11f2ec0566a8216f6c6e5fb540482ff6f00fad00832", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1dec356ccf6e035a5c504cd39f54fccdb93504723899e3b931c343e0730583f9", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "bae411344378fe07bcd316396cc80e3f675b0b235370a674450d65a8e34371fd", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "cd6d74cdbf4ddf0741a5e25eebc89d193323f840b381a5ba0c53be1c09c742c4", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "12b2f16d91fd2abca561cb1f50e92beff541f32ef8e760f2b23c1e62e4ade2b1", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "383bb2a35fa3185d4d7c5d75d8e846eea38a0adb8572459bf99c1c4d32a03038", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "383bb2a35fa3185d4d7c5d75d8e846eea38a0adb8572459bf99c1c4d32a03038", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "c218d949d6c5cdbec4669779e71dd532e90fd2fb2c027bfc9e8065c3c194f386", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "880ba8e093e3b408f0ed0770c3fd1744f2d8c677b1c63688018baf32077362ce", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7ee5dd106f65d8018aba5fff8605bd8838aecbb29e1c05d6d23e84eb8eb40abf", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "277c0e0b7e3f75986e467d731bfe38b4c26d57616580101cac8606f28ad50d2c", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "277c0e0b7e3f75986e467d731bfe38b4c26d57616580101cac8606f28ad50d2c", -"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "19a4c265e9adb63d50b12191c1e49f2b9295ef4304a7c2a7a90b09ce002fc93a", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "19a4c265e9adb63d50b12191c1e49f2b9295ef4304a7c2a7a90b09ce002fc93a", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "54f3a0c741639278656947008eed7e2a2cc9bbcff02b5f51f22c10a92b2dcd04", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c48ee9eb76fe9681831f434f74d7399282262cfb7d3ac12eb50e5750cdc445b1", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "252919299d8afe25fc5681239631f291a7b67d01adfd39f80482a72d6c577967", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "f3186702cd5a154b3ae8a2c9627b8c54dcb4867ffa2f508388dc662744ef9332", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a607dcf32d563327a436153352ad4b0951933ef5a7f5bae48132c8596dce64f9", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "a88418842f867c12ccb1a39bf2d41899a40055495a5a29f90491c9bd8c0990fe", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "a2f9b6c1386d88332e3e23cf059907b745de48c115e0972641828618ff5b403d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f0c615bfd13720d0b91d29b61c46f2ac1f6d34213953c4021dc78b0c94e8f631", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "62eb649cc0d3bdc71f09b1aba80f0781b1ff2550d3a33f62eada34329c08428b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "daec02d241e00321d64f01439c789b31402ed15adf3da70b0f44c222eddc9b0f", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "30e03e435364bca7b3268734a9eff9d7b1c728f8d36f61302be76c8ca5ea0232", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "70ae86afab8c08c8952a97cd88965a99681ed71534fb9294c59a6d6506f53d1b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "22a824bedce6f3a68737c851388f7fc202f17e5e1f60079d49dfd9ed1c85d242", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "3df020569eb45fe0d62584ff5def134959546d155079928494a82e490a7c5cf4", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "7f269708a2b7c2f6859b314f65fe468a085fa31793bd481137fca7e75418c1e7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d83368bb21c0072dca15f19c3dccaeaaf1b2c28b5c41d2e0f795f9cda3f469b3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "860d06d3a5ea805a3e5c568cc15d5d09f8801a008f28f1eef55c860fd3359006", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "b30b34aa162982e050a1ab6d58e08d10101a0b6049c16a577d14e1239a75a2a9", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "68d8f0382f742cb5128b262ef01e6eb76c369a30c29697c9cbbc2722c8ce6150", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "d4f595be7862755914218b88d484137e51146121eb64d4ee6adb53db188d7680", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5bb1ebeedadacf97d0ac73c430a39969abbe7a71c5bb574c05af8f046138cf2c", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "234ad2e949edf27c0eaa4885f9a52114ed1292da6cbc554bc3ef46bcc5c3d72b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "a0559f0013abfe6e92c219bc39fc02a073ef1425d27c69862e9e0f2a90253d72", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "a88418842f867c12ccb1a39bf2d41899a40055495a5a29f90491c9bd8c0990fe", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "a2f9b6c1386d88332e3e23cf059907b745de48c115e0972641828618ff5b403d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f0c615bfd13720d0b91d29b61c46f2ac1f6d34213953c4021dc78b0c94e8f631", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "62eb649cc0d3bdc71f09b1aba80f0781b1ff2550d3a33f62eada34329c08428b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "daec02d241e00321d64f01439c789b31402ed15adf3da70b0f44c222eddc9b0f", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "30e03e435364bca7b3268734a9eff9d7b1c728f8d36f61302be76c8ca5ea0232", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "70ae86afab8c08c8952a97cd88965a99681ed71534fb9294c59a6d6506f53d1b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "22a824bedce6f3a68737c851388f7fc202f17e5e1f60079d49dfd9ed1c85d242", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "3df020569eb45fe0d62584ff5def134959546d155079928494a82e490a7c5cf4", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "7f269708a2b7c2f6859b314f65fe468a085fa31793bd481137fca7e75418c1e7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "d83368bb21c0072dca15f19c3dccaeaaf1b2c28b5c41d2e0f795f9cda3f469b3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "860d06d3a5ea805a3e5c568cc15d5d09f8801a008f28f1eef55c860fd3359006", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "b30b34aa162982e050a1ab6d58e08d10101a0b6049c16a577d14e1239a75a2a9", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "68d8f0382f742cb5128b262ef01e6eb76c369a30c29697c9cbbc2722c8ce6150", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "d4f595be7862755914218b88d484137e51146121eb64d4ee6adb53db188d7680", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5bb1ebeedadacf97d0ac73c430a39969abbe7a71c5bb574c05af8f046138cf2c", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "234ad2e949edf27c0eaa4885f9a52114ed1292da6cbc554bc3ef46bcc5c3d72b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "a0559f0013abfe6e92c219bc39fc02a073ef1425d27c69862e9e0f2a90253d72", -"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "aa428050533fe477f08064cff8f2fce35f81d5184dab57794c4173983c95e791", -"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "876a7e183ee8b52a51dd606071de6499a7a4a1875ea596590e72a7396176da8e", -"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "934c8baa24c4ad87b38e8c0adc99d3b482415633613b9738e1dda2e1d1f9bc66", -"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "d537fdf3ff4dc73261c193911901d987b94a93631eb1a884d19acc6dbfd4bfdd", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "15fac65448f626762328165a4c1bb733581b5a10e754b25414dfd5a9cbfad191", -"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "6875ba4ee3b8e14996fd76c12a4450e3f40a8cf3a3865af36be82a676ccee904", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "df4a754e92575023b64d541255d38d17b059b74b9d8046a24f9d2914a40e92ef", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fc89d31ee89d13d3f45d232962db61aa9691e01a838e1c641b2e6d22698f9d44", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "48526f95c4d0d0c0d4a725965b42b2d97088650fdb5752a29339aa4b54b68911", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "eaed70398fc8c5d179db72736bc6d20104c0a5390c0cda9ef4d4cbf1d12dcc6b", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "714f608887ca0e8769d37d3b3a447d244f62661ead9886186cf4fdb6d99470c0", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "605d82375bd836ceda89148279f4c070b151c84e542c9c0b90782c6e7145cdb7", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "bf409231fffbb24ba979bb30aa4cd8ac90e08323598d3fea8e46f9d75c414fae", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "08e69e0c5fb4732f9205d9bf928f1447bf083aa06d7bf1f2df434db8a36f9359", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b8775285c8cadac075c9a707bf0f5db0a4319b88b6141ce7224a50118bd18fca", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "4a9f14052b7027e3ab00dc6acaf2fdb60cbbfd44e1b791043daa5f208b2d5d9d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "7dfbec50d3566420a38caa511d2dd43654517bda716e748204d531ca00a8cf82", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ebb1b32b928d373455fccbe6953ae90874e3d4ff68c19476089d59b19a0e385e", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "cc433e9ac8a47253489c144f8506a7858353d51741c70e3f443f9690884473c8", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "571509580f66da3cc9ba2a51c775ff8020809746278e806c43521f2a97e1b2ff", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e5f361eab24a37a6083370c9caf68927b434b35e5760d7eec0229a072a1bc5a0", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "82704e8b45bac9b47beee5fae0a10f78208733d634c806b90f87ae7234edd1f1", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "03054ab464995ae26dc117b8ff95acca4c8755f5693cb223d9c833dde3a04fd7", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "26f25956873e481ca327719e875d6c84608dd0b91c0a0c33749ac8d5eb7836c5", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "4cb3511ba2c8ee55e476bac2beae7d5ed8f8582b3cb9fdc9a8971efe574f5160", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "0c71878687b3e1b864338eee0492dc0e9c5caf117e0e7e1ebbb8979cf56705a7", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a08cb48ecd09ea946a3c90c013d416304722a949a091b184382fe40bcafe2e5a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "109911eab0d10f2fd9d39ea4453ed050835a2c226e92703dbf7cff4d44032328", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "89cec8583fa52ce8b0062dfade0cc16918e9411fd4e507122d31c377abecbf88", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "54fcbb34dcf421416d87ffed2fe60e203236481bbaf22f4b7e1d6e50a7da33df", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "54fcbb34dcf421416d87ffed2fe60e203236481bbaf22f4b7e1d6e50a7da33df", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "6deceef9f5e9bb54912ca9d48660f7cf8204fbbbf73bd359a25c67e9c241f861", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ee68d96efd6774f5848d6eb0deb7404541e2e6847a2d1ed05aaa77dbd1ef6799", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "83780fc04872bbb75a4a3fb3ad10934f206e793f688d0d0cbd5b90c0f32343c2", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e22b48287fc8234b091f757fab6b8dfb9eac163af94cb43dd47b47805eda1e3c", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "e128ef1e9115145eb6e9c3f81dcee148819b6a66a608e049fe4b7954193b6ad8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "3e3c4379eb82dcacdf8465cbafe0903ffdafb181ebeab334b7351e8c47543764", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "a8b85aec3406706367309867f0b64c415bda164731b4d5b209090dc9354f5df9", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "30144582867c5cc9746d3a8237c50835e64744a3717aac9f1446a1fd6f35887d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "f0da226be6072ee535dca0adee829b40305b73b9d531aa40db3f986f606d2524", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "d0fbb5d65a0dfee750b2ea1235d5c118d7f24f517a5e9f9076827bf4ee96182d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6fe5922d190879079b77d0ff798de399c21c26e81d2c6584883b20aac188f3ed", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "f64b6bd3ea56c6b9bfbb2527ad876fac42e6fd94478fc855332572419ceab9cf", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "ec4c01644af591d7efd219231aecf984243e57c74b712b7f896b0619fb9e0969", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "e82cd7543614e45ecf1d7274bb36b0d5f84788f21a7db7fbd90622fa7d109da0", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "a2f9b6c1386d88332e3e23cf059907b745de48c115e0972641828618ff5b403d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ce5c9c706bf5ef4e2528b1f6881fdf64729d35794c71024f2baf5bddc6fe2a4f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "cdc965a4fa075bc9421a13a3507932fca0dfcf05dfedf2b10d91b5be22b1c7cc", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "bc87a822009a1e885cef6ea09b9e4d2c61f1865f6012871c288d4cc50b07f8b3", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "f5406fb70f613db1311885946fdfdd5be0c2c80eea9beb4bd3c198d774daadda", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "0323b92978a04d97099caabf9c0d7af77a7736cda323f954fe802fe262c1745d", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "23c27f1c87753a9e0a0457d5734ad7a0a3441c7b3fb28dabc62fecc67ce46de8", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "31d87710d28f836660f594faee94ce7ac3adc50acb9cbbd5f900ff1a2aa2af4b", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "cfa1cb5e9e478748518a59cd8bc46c8097786e00856d27c2ee7215e2032bf6d0", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d83368bb21c0072dca15f19c3dccaeaaf1b2c28b5c41d2e0f795f9cda3f469b3", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "12868d165b7b344c2dcf28ed2dfd950ae017f5d4f5a64beb58f611ab5e719aa6", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_grs.py::test_legacy": "2c525e5a9111f919d71af2569ff237be6ed3b0dde841de4386dce87d04396a86", -"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "cc77d569f296ddec327ad1c35213c9bf49897fd5b2dc64f2024a9d4bb2255b7e", -"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "6d7b62637cca3843eabb7c8ec7d6a15a910e44eea1d44a35cf7d3716eabbaeb2", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "f517c38116175817a6297b11d257bee923120ba784e19b95d6f3aa7dcb0f2c54", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "a1d628b9389002b88e3145fec730ea56cf85d8c936a999884326529f57f2ee99", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "35089ff15ac6e692ddc27e76dea6d4beba38d7f52eb76ac731d2632aee4f6912", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "58402483cf532234e4929c0bcf3e7d8b173547b6f4b5283a8c5b02333c8ff20f", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "f68b5f80e9cefe54c9f588c61185193997bb9394568310cb4975193aff138323", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "b40b01d045d069b131ae819d99d648ec05d306c31908a4412a2cc1cdf14fdc93", -"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "687d5af86544c9c03b5c838f2615516c0894cd465228ed5303a9dd68728b0788", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "c92f4f9c9214fadd477da3fc7f07de5d7b09b3749d5533602f03a465351fea32", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e9a966261c2421c24580aee93382e1aee5908ce48be2752663eb20d84309f7a2", -"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "8431e8fd0c220ae1279f5a4c42f3cb18c0454856f0da1fd8a5a875ac9e485078", -"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "59d97c9e7d7cac44ea0dc2128ac0201cf0667f054fa189d43b27e8effddf40b8", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "50361ab230b291be598fddc39cc4fbb68fb33e4d4c4e11e892b1d23343d0d9ea", -"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "c6b7e5d0b4c6e97479c80708fa13927c0575d1033be3f9ed6d388188f1354838", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "bf6fb7b0bf3a50d043da998300bdcae2a95131a5d98170e2140c2a15d29a8bac", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2168dd9d0275877c1f2d043799791d1062f45710f6b233cbe1f4aa24b4635d42", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "7f24966f73f6816c0827eb1378b6179a1a45e9959e91cce1d1fc1d0ae1a60f44", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8e0e9617965022b55061bc616d03230f09a67d640003f456ec5f35ce4bb2778d", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "2c61b54026ab91cdfa51819d5bf8a2528e8ada04565beb86e35cbcc279934b50", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "a885dbeeb1a70c49f19a08b5568ec2e1e2b1d7485f3e43a0f7970ba90e83cbcf", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "4b51f1dafdda22e4d6bd67247b0fe77e265275504e3d526941b3f1fae22f07b5", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "2c5d0389e6e17fde3a11a7f4c9246e4695559b8b7296191393c80e59373e2d5d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "008f96785d6fc25ae1e8f7bba106b85909e26621f48fad31c2b0d51798ff82ce", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "6500a4f30679c5db4218432599b7d0760a6e987a0e7d665863dbf136bb5c18c1", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "2f5f6de74f27664b6ad964114da0ab63029261c14133efc0d04a2604603cdd8b", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "0034146fb0f466d6292f5154a9b9370edb5a84befe60025f3c8c3257e283edf8", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "299939ac1cb9b406df506265dd9dfcf7124df0ec16063fc53f29b2c02295b979", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "e4b24c873a6610a7ead65093506b8c25dee3250f141538e0ad575644d2110f36", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f19099c412f5e16afae8f90f3f3902d1c4e9df94e69dde4a3cec8390615572ed", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "febeee3c6d18f76c1233bf228d21fd33291f7035f3b405b658a0886eb13a39a3", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "5661f564845b5d80a54a6bd65eba0498d1af9471158d42c11ff9a6845bb72e16", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c6bca2f91b49721f58aa8a2c7a24fba8cfafd9c354c831996bb255b322380af6", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "cfc6d908f3905993dfd87d84333f26e07b760b8e62dbb5a99a6be6b66a003040", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "7ee7c4cea04930d9a30973827de216cf65253ed8fde43b030dff0386d488a98f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a08e49507facf1792702f710f65afd9b30711249275df4285a42207058f38257", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "61cb4043b7624106d77fab20a7465a49c7e6b8b5125ea2ff999a63c85993c382", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "fcb16bd4c82068498c1493e4851d0ba44b07d39d98604ea0b7342aa30649eb95", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "a8511e9929f4c08b14c0f258ebda7c42f2fb606b300d76eb1d0f062a60e4a602", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1057cbf3c87000ecba8cfea2cdabd0eb7788b6eedc20f5c6d105ee2d5f88899a", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "25e791139dd4b67b0a423ec14b1adae7757e863445a640a576d5fe682e13b547", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "40dc9198db8485893619fff823d755aa632540b6351f231bcbbeefd8a98a121b", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "edc0723fda651a7d99bae865646f4e9cb9c14b08a0248c030f2e6880b0c444c4", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0ac4d6e99d9c9f5b4760a3fd31715b092b545dfa50718a1d435feeca7c394fe1", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6e15ac198951ef2ccc8e355eb9f1c7d9071f550e393d267e3ea7d7f3a37ff6f7", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "be82f95d9670e254af9d8a6e71e89d9563f0cfc168cbb9d21458b3b50585aa94", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "31acf6c8798ff86e26a18ef093b1e252fc8b0f82da33745fd114cb73be369b07", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3397ef7e463ef11346246c319b3164f96c7d2c6dc9563de1c7d01dfc39745cdf", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "5489c30a56b2a57a888b1e473b8549d9ad5eb1f47cd4603e3c771df390dba536", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4004771f9e693d5c77ff69e6c4531bd7c0f674170265884db91e628fb3cef474", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "738141170ac838db66acff2f8442d2de7507b31f6cdef1ff1f120b619ff66b3b", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "f8df30dec79cffb8a22d833401560b2da5d9cc4d37dcf44370bbb20f93b25d48", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "4004771f9e693d5c77ff69e6c4531bd7c0f674170265884db91e628fb3cef474", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4004771f9e693d5c77ff69e6c4531bd7c0f674170265884db91e628fb3cef474", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "4004771f9e693d5c77ff69e6c4531bd7c0f674170265884db91e628fb3cef474", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "1a1ae128820bb4d6199f7c211596e6e28e79f8973b0072adba6e5d4ec14ef7cf", -"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "14d3629b38cb7030ef9e8e31919ec3ecf665ed8225d8c5f785d8f507ada8ab87", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "42e33c4daa4e24942cc064c5a820c8815dc266cd81ca5cff55216ef241001bcc", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "bc6910702328fd8ecbf79f296ce0be23e4d9fe7363e2f5356bbd68784ba3b1b8", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "3f6e720712571babe34f4cbf2fbdc48c1b7e26316259926552ef47ea10f54bce", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "3f6e720712571babe34f4cbf2fbdc48c1b7e26316259926552ef47ea10f54bce", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "cf52b121f741e5cba02b8705015bd3945f1f05090820905f8b0109a89bbd4eae", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "bb77f4ec882e4dd97e7524fb2131c9bacdbf04916946007dcf6529a0018d351a", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "8eae8c1e6bb1eefed52936393aed5597fb5cdf37521b326b77161eb83a67349f", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6140e64561ae71646157b625830f6e2039e1af24f1b03d011336d5f538270078", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "9d4b63ddd47f800711c0f42626fd27f376991afd3df339e18273167939231074", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "03c725a9d9a4408dac4b1f07d4fa682ed7f37a14cd1adb8e3afd89acbb7ce1b8", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "03c725a9d9a4408dac4b1f07d4fa682ed7f37a14cd1adb8e3afd89acbb7ce1b8", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d915adbbf217c4cd981333f87c773dff70c4a11d6c0c4706eddb205d2efc23c1", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "884ef6ee12dfd360a4a57ee3b2e570b8bac4e8a8bf8d5d4a133198f515603e0a", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6c102c9b34feb9392d50fcf5b8529564847f9f03796e269735d99139f231416e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6c102c9b34feb9392d50fcf5b8529564847f9f03796e269735d99139f231416e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "6c3ae5a4f186416e1ea1d9baf276b19742254ddd953dc903c217cc2098270d64", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "3ae33f6ad4a22f3caac0d723e70cf028f1c8f88712a59b6c15e1e7313c2d8dce", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "f595ce811014c45018d6508d4798ace86666f2c7852b9ee9f66733501f592385", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "f595ce811014c45018d6508d4798ace86666f2c7852b9ee9f66733501f592385", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "0cf2ed87ef2ccb2d3132aadc885f742be113f436e8d1759235e1656abf12b5ce", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "501d99dc13ff509251f8c77fbb89dbf299b3c442364cd49c20bdea0a124d2b28", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "6adaacd47dd212e6e7045dca795614adf29f340d2980ec033add23c0f4c59e75", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "6adaacd47dd212e6e7045dca795614adf29f340d2980ec033add23c0f4c59e75", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "93c573d114863f31463f157f107007cf6407e4521a51716bfac1d847cc4f1b01", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "884c378bea07c7037a8b67e4083a3d3a3dd7c61667b032c74cb4cf951d2c151e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "367755fd108b6d69324c401b44d9de8ebeda8d152eaae40d635f8d31394d6645", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "1ddb217ca7fd05151d04b520e7b6f0209fc95451822ba046e2524ac70e36a755", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "56e6e2676ac84de8773aea88b2232cedb0d874029e82c33c0d644664e222889a", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "645e41f15fd9f0f358626bd889e5912ffaa789065e81a263822be20a522b4f0b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "645e41f15fd9f0f358626bd889e5912ffaa789065e81a263822be20a522b4f0b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "4c1fa77ca1e2d16e08bdae0a15b2463ddc2bbe9c86aee2e4ebf658ff88c9da00", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "bc8c718a6a39dce93812ad01a69a732a001d5e95318707c1ca782c9f8d5f1887", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "12b1b230c4b25476f9356c039ba5f38af98d48810fe0ffbac50b63d2124d3aa1", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "12b1b230c4b25476f9356c039ba5f38af98d48810fe0ffbac50b63d2124d3aa1", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "3142ae20a03ea96482e5e4d14e1563e55e23025ecbef5396e614b13420c1d947", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "013c548ce92f9cc6662f672e91b3d1453041476914fbff93ce5f41508b8de17c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "b13a72ce453adcb31d805cedb17b1fd50d8f80483206634d5e4f2371a3aa7958", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "b13a72ce453adcb31d805cedb17b1fd50d8f80483206634d5e4f2371a3aa7958", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "07e5bbdacd064dffc08923030293c15001514cabcd48e7a9fb24221546074a69", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "49f642d310d40aa8a149c2cae121d46e99a2250627f0516d29066a1e2cab1a84", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "aa2058c7a7ab2b5262c01da96c142d3e50049776483436aa4154933b3ad14b75", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "4c8507443970c5760da6f933d651c13a6b1b0514ac246512dceed4f7202e5be7", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "a2d473708ea512b21e63c9541b44f265f0c71adab686eb46cd759ff6b034e9d3", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "23223874e31a44b161d7960d525f16896bc21601afce1a563ccc5972b9b01296", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "d1b2972b65518974adb0c428f34b322c1d599fd05327e3ef7d452d46b0751548", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "78cb5386143cec7e36a9a41ceeea83c99a970a6a8fa9c9bc3100c2ce35945d82", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "66ba6c674a81993b0082e79bc5f9e614e539fbb3636c65281874b53c1c0ed6c5", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "35c8778c988beee6d3160f2f0795156fed1d4224af56762faafcad26c6c512aa", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "d0dd916b2b780bcea85e4d93cb947d18cac9deeb2c3b2c66b851e12c13ce5a78", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "fa1022e913f80cc0b2ad9737cb6a35d693d8052aeca805f307a65c2d5fc27251", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "224c0b15602e4bbd0ba047861de6573cc0b5368cc0f2047a513be57d2ad5269e", -"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "224c0b15602e4bbd0ba047861de6573cc0b5368cc0f2047a513be57d2ad5269e", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "c98995b77647f3cc7e5768e088f3b1f9e25c71b852cc06f6568047bdbe467e8c", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "95040fee17f9f236897801faac9873fb2ad060814d729aa48c511de72ed423eb", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "00525fd7900917c9e1511d4303615c6273876f77541d33bec3e1c2bfe10e66c0", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "e3692beff7bd84f1696ea7224955cf542f68f5f87c62cd2caf2c892f9d875595", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "772dfeeb2d1f081eac99af490eac34217b4414927bdfdf621aa34a09ae28516f", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "a1be63f56c59155bdb4c2b7711df5ddf56a494ac0d18de08a006e9695eac98bb", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7d6ef40d79a26eb4d93095c1639dbbff61c0c974c40f58818a8031bd87026672", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f02efc28661cc43082a1b4558629d2dd8efb82b0ce2572720bbf7404217aca70", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "7d6ef40d79a26eb4d93095c1639dbbff61c0c974c40f58818a8031bd87026672", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "f02efc28661cc43082a1b4558629d2dd8efb82b0ce2572720bbf7404217aca70", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "62245b5e264bdb62bcfb6a7d12560cc33cefd4a1d049384106fbd16582ef46f0", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "3a3e0deff507ccd1a4c966da37e45e0d203057783e817d3e7955fd83cc2d274f", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "e9a3c44c47680ef167f099af6137c5547321f3abe3168389d0f3e84a7d186627", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "1eb9c8a70f761441f91f273dc4ae5537395a3a6e048e547d5396d34361821b41", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "d6ba4d69999c47b40f57beb8573835509bf3896ce9d5dc8ac04fa2c504335faf", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "d7108d9a851a90065a967ed3a562bfb8e4f97a681d390ab45baf6ab10bf35dbc", -"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "5ddbc63533738120fbe77baff380d6b31253ecf974e16c0c6d2c3425723ee1d4", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "a39b87294851841339f161328315901828ac74b9e1105261b866cae60d89da32", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "c47bebde6d85ac2b2942bcd333713e1904b0732000af67d78ad3ac6c84a781b2", -"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "3144616ad2322fec573abc2a698620e0dba1aa6014c7e5c67ae79c7b6a8a8e68", -"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "e97e2b539276c8f71b98b1ed50a8fcf550d5fc77dde6c9596a87750696f81da4", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "ebdfc77778aca57db2fe62507a4afeb4f214cb433aa960725919409c4d6ad0f3", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "58b4fb8d519c8f5a8dfa4f82dc3ebaf8e97766d2977a2a3f2bd68f49dd7d66c4", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "b82463d4ef03316c37aeb4e0d4f4646a0621d1d01e26b895c055b02de8d8df62", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "020ed5f00cd69a3cc52e44ee34985bb28e3b2ca63b9b41107aebbeadc75307f9", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "224c0b15602e4bbd0ba047861de6573cc0b5368cc0f2047a513be57d2ad5269e", -"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "4e41a8b6367774b4614b66d48dcf8089cc26aecc027a0056730991b3037dfa52", -"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "61dde373cf790760f4083c9c0c57b60d93031140b5176e4c5e26d1ea2805d874", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "5ddbc63533738120fbe77baff380d6b31253ecf974e16c0c6d2c3425723ee1d4", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a132f7de74318d56f5df2d6e9d526b60dbcb8a6c13d148d25d1f7facb0d64844", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c05775e61d7a990f8345892aaf36a5051e6d444b84d0165c96d610841da90d55", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "201295286570937ce719f3a66b18b2f57d9e6ee3407b10531e6949e1984739e0", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "5ddbc63533738120fbe77baff380d6b31253ecf974e16c0c6d2c3425723ee1d4", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8a69f561ea0834f2aef0d9bbabc1f9a6aca63800ed3a9855b2776a5ba28d684d", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "e366fe0a5fd6c63534712c4259701994653caddd4b5d395af77649c6bb8ec69f", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "85b28d9eb750efe998ea5b1bd4f84505a64639bad849cd53be3991feeecfd0d1", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1227203373f7eb0f81a4e7dbf7ebd393c6efe6247b5d8e092ce770d2ea660fa5", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8a69f561ea0834f2aef0d9bbabc1f9a6aca63800ed3a9855b2776a5ba28d684d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "390e2614653eca294f0eec17ec829c9774541fd511bb42a3c09703f9f3e473c4", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "ef05aaa31a94c832a59e200346a61b7dc4aa7a7e1b7bd8e8658c1afe0dde1954", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f52ba0857dc97463b072b88b6e0b3c535f33e4ae46006b74d2f984f5ddfe31dc", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "aaae7cf1bd38296264bbb3d614bd650073db1b335fe83be48aa355d0b9edba62", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "5dc4d5c30a07f12e55ffa67204427ede5a25403a724eec43d5fbcde0c20c6f14", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c41d262c586548c28c8cd0879c903dd37774d18803a7bd06d1cd7857a50506d3", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "af76d9e1eb4e30ae99d33f17d69803467bbf6cfee6e45a2ab9718de642b08fb5", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "8307dfeac08ac6472ecc805170a00f9c59892b35a60cee3259ddb54638b80ddf", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e5634aeceb313adbedbf1244cd857084c3409a01d38418f7062ed57e2fcf9fe4", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "5b76ef6715585a5557365208a1e51593162cc31756c7dd4ba4cb71135da0ff6d", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "20a8220ee76c1e1f25e1191f6cbb4b1491ad9c67343da877012408061430d0d1", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "367493eb9bb3fca62f5e2c906b3493f5c8ed11979174a4890b03fd51f2f01cd7", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e7adbd8ce2a2ffd654819225bab87af383ade5347cba7283359e1ca75f86fc6c", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c037ffd8e4175d260cb368cdae639ca8a4b46151717bf81725d546221017df7f", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e7adbd8ce2a2ffd654819225bab87af383ade5347cba7283359e1ca75f86fc6c", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c037ffd8e4175d260cb368cdae639ca8a4b46151717bf81725d546221017df7f", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a45681b9fe18deb0c1bdd8c9c5d5e769b67496ca77a6760b417842188dbe2b01", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "61c7b97e3e8bf9abb30ff47272d239efceebe8b688be15f1118bc25d598c419a", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d22ab650967fa27d68b8256451bb2e49915ebcfb457a49d01e6864e403b0d433", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4378d1672437fd98b8521db497c437277be9364deb86b361f41611740529c04c", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "45a318e6949440caa510ae842ab7583a590484e86fd30aba7550d85949286ab8", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "76af7850854447b48737102488236a438501c4605c98f8c9dc7720e8d208dffd", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "caab8400ff3b83b4905d622cf59b2d521f69458fcca1f7b7b4d7a8df7eb7259d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "871242ee9f5027555673770eb9762e233863727670a8a1ca1d29c2283ec59a7c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "6d7b75a2b40b194de166863a134cc31fa3bab103f93796aa3e2926919e1b8091", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "6d7b75a2b40b194de166863a134cc31fa3bab103f93796aa3e2926919e1b8091", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "6d7b75a2b40b194de166863a134cc31fa3bab103f93796aa3e2926919e1b8091", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6d7b75a2b40b194de166863a134cc31fa3bab103f93796aa3e2926919e1b8091", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "9eb2bdd95621742650dee1f4cd28f8521500adf42bbdb341b9cc106c603a51c6", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "9eb2bdd95621742650dee1f4cd28f8521500adf42bbdb341b9cc106c603a51c6", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "9eb2bdd95621742650dee1f4cd28f8521500adf42bbdb341b9cc106c603a51c6", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9eb2bdd95621742650dee1f4cd28f8521500adf42bbdb341b9cc106c603a51c6", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "5bfae50c9e9d880d88807a93e2e30cf21e59c527cea8aa145c2e0295fffcf744", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "f160c0962c0fc3b01a02fd7cdb36a6d4799370586437bb558e16c939c8dcf952", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "47fa2cb81fc8ca5850ab3adfb186de1af4624d765b197e715680c312044bf6c9", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "47fa2cb81fc8ca5850ab3adfb186de1af4624d765b197e715680c312044bf6c9", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "f1f68aa8a18501e30749c82358957e24e821f3fefed83b361f88f6a43dc8efed", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bf804ecdd9d5b97581e4ba88ecfa42d5a6caa4eabbc19e570a4e463824703a5f", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "3fba928cb88ed4a4fafab6618f86ffb03b34d737b09a9fccedb938ddbb4aba01", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "f1f68aa8a18501e30749c82358957e24e821f3fefed83b361f88f6a43dc8efed", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "1fd0eb56b528d18f981f1c077c20954601d40e5f0fd0e3f3417135b5a0d6e060", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "adacfe69caf13e16d14e23a4f56a453113a9de73d9a8e5b074f8ea06545d8ec0", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b0214deac609cf54b884ec583ec79479db47ac4fc7c66c24c01cf4fa4ce05378", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "bfa58c23c6b3ebb991cbebf6534583eb60cd0d541951d0b9d2d4cf9b2f244fc1", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "35e1a9ca2fa5b2850fa7322e7cb65812afb35a5f8936cc3a8c34d83f24463e7a", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "8a50e5d1ca9ab121315d044184dee5a12024728fdb931603b3e9c8b51531ad73", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "d8cd6b7b1ab080f7119a06f595e38cfffe2f8797369d101f9b4807a5325f9dea", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "28ac0bd53b41532a20ef0da4a170d55f0fa4f7ec72679da5c16449571d821bdf", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "553cec169d82e11ad83365c011a29b44c7cc63fc4066547559678f380092995e", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "33b7d6c77f8fa4c473ce1c1676ec33f1d479a4e839e66a357f367cc2d2ff7dd7", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d5d1d150f504527c2779517264dc2e9745bab0b7f975078abd2575041a5da07a", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "87c62e22cdbe4868ab6839d127325c347ee320b11114716915210a385fcfdf62", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "9fe7ef2d883d0d87802cf8cfd2066badd5e1b9272229146719d73d837c075a57", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "3a6e7f22eb35838bc4d0fe3c3ef6ae3409e8d4d1d402cf714a204adf09086547", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "26fd80a250a4db425311a6ea1307111a3ba4d7e3047e1fa87c3f7bb1deb98f5c", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "ddcea55fd44cd02d72f8c56a2041e103343f0070721589371dbab21929ab41a6", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f206eb18225ccdc13a140d6e569d1a264cca09833ac09a6c63685ccd9a8dbe29", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "8a69f561ea0834f2aef0d9bbabc1f9a6aca63800ed3a9855b2776a5ba28d684d", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "dce0eeba965c839a80579dc3b2832831e3547cd123cf6454ffdd97af35e68381", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "717ea82002beaa53db0d76d5b542b7f830f0d763df0d203bab3604e83eb8a243", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "ba9ac88cb92ad225bfe2ecbd029623b1f5adb6467b2c5ca6437ca0e4bf9b7e48", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "b6a91eb526ab19bee45d34fd847b6ee389641ca6314f99249407c43f9ac1ab51", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0e8816e92065956847b2cf9c380f059d2ad56637fd2798b0020b2376ea87c86d", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "747f4952c3be6a6f8ac165dac8ff7d7076ece7eb48c098137fda59387f78a709", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "62a65ca18002fe6bb8e10cd47ef7ddbd8b176983d28905d1290103248d041ddf", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ccf0524dbc6dfe67fe07bbef275632542b2616bba510f581ed276befb2bf2ba9", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "18283060973ea1629dd38ea09ccf02ed27c40454a9c9b24370236fbca74aea05", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "7abdb835fcbcaa3f56be18e6065526bd2e136bd4153be9a20a38cfb019cb593b", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "e503c53a1746782a240416f4cb3493837475efc1122efc9ceb21f21d2363a201", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "2812a51d576704de92c6730604df659b5296ee030103e8737d074c90d242914a", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "3b277d734415d21b5798532fa97f0a507fa0a554455c30d36da5b2c82ff59990", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "3916c7065b6d3dc8f3c004730d89866560bc27a0cc67e3ff35c7c5e6e601bd1d", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "5c15075d8c7d39fbe68480d357403ec49f223fff632b1885c08a3e543490994d", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "a12aaca25baa1353b5390df40cea3bdc2a52c4b45ad5addbf2ba4801a8870777", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "afe2bec53b192ba36c20d2ede608e48309257fbabbfc3269e362a9462218c3c7", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "28fa474424c360284c032dc40f22c16848fbb056bb3636a2e2b119ba9a1dc678", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "5d529f1bdc86fba4d438fd7900d6f015673ef867360047eac3b528229a543c94", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "f588c14c2d246ea52f20f2da93fd827d1468345596a8750d5c874a15e90f42f2", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "df984f23866edab102c63dfb9e2859fe7339202c3670969c393d22fb65dbde7d", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "63e653cc5220566be1ca4038cf8d0af4a99697b0e2b1745d4cd5b2127651a690", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "14948e20f16f49f10ea331b9ca4affdb0455b379aa02638a88a8d8ea4e7e895a", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "235cab8fc2ce5422d6268d9bf17c6805271e583482c9447ddd627ece72536009", -"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "6309878bdae0b483c995b45a41828f8bc6ff2c9876625874f97a6f7440c574d6", -"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "a6b569dc40a5c3e13e94f20b4140f1bcc43090c284579c5998b2f7223ec45d0f", -"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "167ca4f1fd69b2697f8da96dddec974c71471ca49a20943a6e947099c165c35c", -"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "ce28267e7c2e9f808abcb590f773be9868a324b1ad5928995f92ab4eafb6b5f8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "bc101f7ac2ca5ecfb10392b40697021f59e938e7368da546751f90e0417bea29", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "13c1e5fbdc7626ff03e310855be54c30190923f03817b2d3f5ffa81319acfd98", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "c1dbe58dfadcef7c3062b7ca1dedc808f8a01d25630a50bb4acedbe346dd4c2a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "6b01e0d777b2752b77f94ed7fb59a051503df07a00dfe991500bb1911e7d2733", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "943dfd03124fc3bc3bb53ed170110e20d9a161f0edc1c7931f67741ede07b8ef", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4ac4bab945185cd14e74e894e9739e893d31968909e18b626c8ae57e2c764cac", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "beea9aa30e48ed9ebbd5bfc94f15381f6333a26889fb357c63b56c07dc5085d0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "b038a52b6772f6ad1ba5498abd90a9199c585e238b85a53ec240436a808209e2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "24be836fbe7c0d48fd3281f5c41c465032601f864e15f3d1e27ded54a4708e57", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "55f282db4d05079dad26970005eda3773ee357517486c5fd60bb2a6320b412c1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "232b2fefd02cf2a38471c5ff448bd156874161557f579d85b980ca6d74b9ee76", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "d248261ac930d2b1801a844787882a030720a6e902c3537f49d458f919b8ba9b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "36d449053779ab3a1f8f1dd31382014ac5d22c3e8966043180cb52553668606f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ece71f2de3bed6a5a2189f6a5e4ff806b67d3c72fbc6f8547819d3b5301f1f7a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "7a0891f54e107aca02357ef16a96ade4d59873edc17316f2d00576beb0baa6ac", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "da387ff81328ebcca7498fe46db53a94dd839233b98e1ea2af2259aa8133e9a5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "a6c816aa38da8ddaba60237e7665f4fe093c6f7119f2b628cd9ad7a9a292be85", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "9b9c3019ee9e558970d865b76276d613647ef0ebbd58f388123365d485f94429", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "7abec6e36241ac5b0107645d51a16131cb962ee6d64143372ade6f1470d42c09", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "62c22e517aa5ef5fec6a995608cc48530f6f67cca3cba3ec30aa54a724329fc8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "dd958432d1e8fe966bba17081a0cb2056fb9e64062298caa0a2130170e0120e1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "de37f15f2a91e2ef62b8fa8089b3576f9c5e357e3a04fc12c2606e43a6277010", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "53313f5fb2a2eadc8b22e79486f58bd0b368b5f844542132c4ff850b80e195d1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "22fe8beb9f8cb2b585507d4d5b2ad11de182cdec702ebac790e9fe677c358854", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "e563e06acd779bc65e35281f7e6b0f7be92a5c6506795706ff4ee250cc3afd1e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b4517e452ccbbff7763723e5241eda8a41490fec1491d2ab43079f33ccbace41", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "e0320d6ae435de35c9d7b397b5dfe4386da4c7c4583195209a813da0cdf9c884", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "5b2fb9c0e4378283160c5b11f7497054f0ecafd436d970214dec0774f2e43767", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "e8c1251b3691aef44e72ca738acf139f3eb963a839e7869a79f0ef44cd2d7bd0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "271c9169fc3a3464c41adee4e7589741439aa2fe044c5dcff3f2a17fb6b16fde", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "599b59a26496c3bb998fdb7b782d0a5248435a94661508ba65134f6c35554426", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2f30ece0e7d2ee751ca607e378ed0e2c1bd4a461f79bbfc52f75a346653e7d17", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "2a3355d85b2c3be6b499e6ca0e04e0c0c99a74fe4d7081462192cd784d48f698", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "9219354a7d7dfe29342f70c37a7b9fd31114fcf9020cf6b6f2d4d15e6b4efe3c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "fbac676c088cf04f5044983e20b007eabc73a7d26cd6a26fe9280c776c8de01d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a9da3f84530b5ab36cac24a1e8ef802f30fd4fe4d4c6d7f345880a30f40638cf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "34dc29f64cb938b0c6e14ef56055d9021f78a64444dfb3bddd82b599e769c6cb", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "41e0ef0d0783eaeebf24ddaa86ea6882241d96b125135866b7c141b1f664f66e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "8b9e9adaa0dd83e21197fb0a3dee4796dcb6e4e398db5059ad8918eaab5b7875", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "af1e59f9b95989264fd06a68ca8afc2682fdaa244a01b14dce605ac216fa7482", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "e86b3698e87ce3ed774963796b65c8165370fa2efa2f3896ad28b0fedf98a7df", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "47b83145c7c8eba4bc48277ed6239e5ed525324367edc09f26d5c494c38eb6b2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "004a9e2030cf88fe9452a43754885ae12493564f277de05c151c5dd5e366137c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "f32ee6826b7cc29b557338878b62832a3a35c4f17f283140a9970129860e820a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "57f641cf84b573f1a6abfc1b14de80fb4c305493c88f9aafab5a54dc4a90eb66", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8cb2f4ee08deee3d5c09f6b34609e2263ef37ffd301aac488795035a3301e188", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "7fdb4f53d7369099218d19752565341ac72a1c4511b4e6f92bc3fbcaace6f5c5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "14570518b655105f1c2cc0b754015293898729a86b8c680732f581589326610e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "a966e59e3075e035004f123d924b411f10376a52a7d42589ee47facba6d0e473", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "bbb0a46f75fd2fdc9a7460439eba58d9346716947863f208c207d6e557be1f34", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9afe0f571d74f1a3844a1e2a258f8e33744902ca2e004a70d4b6371273a10b2b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "6bc14088e0329a30f2164591d907e7ee96b97996c39dcba78ae2913c9f7535e6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "be4d0022b1b5cffe59fc4ac01731bc6f609aa15f7a366fca66217f6fa968b4b0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fe97c4baf78d7c7c38536db117baafc94d0a06409e30a676c3d948887afea621", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "409f661d9ba287ded10153e421b3fe6127a16bafcd7a6eecaf82285a1e110614", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "b742a20cd49548a8865647c1974f32864c49504bfec76e03f5102b6354bb83d8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "f6fddb9321e95fbb99996da0fad4c5927fb8105ce77b69e558d6a0d0e2b40ea8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "3b5cd38c9877a6bd067255832d13349cc5be3d12ffc79eca43bb716116e868fa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "28b25391773a58efc7117ff0cc812451189492df5d5c2d16727b0b211f0aa581", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "708b8c24bdfc4caa6a2bcc37827b59a0154c6453d8f9eace9eb366469b8608a3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9860ee476ecb090bc8c77e3c328f7b44fe149ef86f273bd6e1e174eb6f96ce17", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "10dd6942f1508c3d444203d0c4385103e9d4832c5057be90b9e7df35df4542aa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "47ffade895f97bde16067bc2fc9cbe1bc5de832be4037960f8dc0f74af13675f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "f981d5fda275be08ef9f0ec792e5d36e42f49a01a7e1c31c06101a94d89d9d06", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "9a4f1c0af6ed4cebb8f4a52a166f1c2f10fffe979fca2c885727031f0598e389", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "0a3b3c739f6062e6cfa77d8d9bad16f43f2694054e24509029c86d9c8169a5cd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ae3e715bf59fe02febc3ddbed7cd74b1011a4355872cd98c1e253619cda1e0ae", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "28aadc20b6700d16de182b98ff224afeb976f3f1b682bb065bc80b13fba6a4ca", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "0444b71a8061f48c89aad699889f26032028f9044c61e5a701dc94e709c812c1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "c15d313b29be21bd0d57cf530b4deee515121243c39e71eae68b3e4144526136", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "5fbdcf36f51c89d82eee015f342334721ab1fe6d3df7d854efdf744fd034e1e4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "d64cdb56577fbdbc74574ad684e7e1869a5749b9c000e82c8a85d883f91b47c3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "9358a7927ce4024b823b5c0f0e224984e4653e58c8b68133989fd4ff1f8f194d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "460e72776b98831c4de80562ed773aee6cf63eb9d7dd1164952462690bfcc1b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ecf1ff7a099526be70c8b9218f546d0b5d32083facd19baf0c0397ecdca6cd3c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "9497c28206b7d0292eecca6993dc52a23dab955a832e4811634779268ef51d6f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d6689e6463a5405aff4c33af6859d93e4747756fbf9ee580a5d0fc2d522f74d3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a64ada66326e90682bf6a465b6deca1d40f18a800525449db543f6addcdfac08", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "14b744f45236063a9b72df5048edf3ca9a644a38d7bb7a82ffa6afc5cddb2036", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "0b536b3369530fa2c488f04cf7d310fd87793fed0fc4411c7809587486ed4633", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "7c6e1620f64361a31a1b37f0ba150b2e3053d4d49260ae9cd8052ae4c46c23d6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "9b79926a95580088debefb1973741b566dabd717c1fbb82881ad8eed336e09bd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "57096c155c94bb1eb9ffba44922729c9394bf83afdcf678cd7471a4c8dd03507", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "73d5fdca5a0034d0bc1507248376812b036c53be27632056c9b3347354c0e39a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5ce099a68c2974494cfd2e28a13a8a62f8f49791b307a92da796216a3c003d9f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "af3f8c97d8e1b1837b294ae1f07affb136a141350d83edade963f9c5e5c728e5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "7395dd463e3219d903eaeaf874d06e84138c270e9a15ac49fffb07c2078fee40", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a3bcd89f49cb07378ae97b17cbee5170e298b3a5e7bb79fa9e288d22ed4f121f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "443d3775b6be8d5b39cd9ae22e637b63b028e2c44dcf110b58adc32369f03b58", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "be66da2aeea11c2b339c53be3323e2f438db857969dd29661a25e48786ba2d50", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "321af19853f882eefb306dc9b08deadbbe93a1b58b81e1866c70beb148a7da24", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "8d3c6bf2746d631333d65447550944f693ff11f8ed07e9078885c65d11fa4df1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "da0762fa0dde4eca2243d47dd5113366e2e49553de55d8fb0eca10c8fd3882ca", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "cb073a03a58cb27d9a8484cd355b619fc95e2200f96afaaead98ea0661eb0d47", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "7872c6f676666d0df559cbdaba493841a2f5f70b9abacea509812ec27d1d41b5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "e66b699c08fdd36ec4374a8144ad7bab48996d6510624ef748866daad1e7f1ec", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "3fd43dfafb9c029eba07c6060d036aa7bd9431a31448f9c7a0b0c89e0620487d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "1cd25402b563ce8431ef0b6ea064370ca0933f3ad11df664454f5dacb63253b3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f7825a86fb30407e5c503f146b78f456346e10b1325f81c146613da2f6346f52", -"T3T1_cs_cardano-test_derivations.py::test_bad_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "4138fe086c9c18b192823ec2ed672aacf348cf6f6fb3d455d2105a8b0077913b", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e416288c71c89e585b77c33bff18105652a8917ca516cc71f130b5ebfaa92247", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "17045c02cd799e77f80b1a610feb607352a4765b39e4018f619ebc7dcae39399", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "9c336a50461dc00791d1776d69cfb5af81d27ca564a2b61a5fd3867da3aaea62", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "b5ea1c0f84fa6d4b996d7d54f4bb43196604c9a358fdc4967d7ac668d6884469", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "bc068b1c65154f55374d6d2f44858cb2251bf86a3040ba4a80fe3e4136306706", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "abbabf76deb90f9789cd9a8f7e538c0688d1b9375aab9f1b3d899450c2a20b88", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "f9d51de676b2591684b02cbe0579b1239cb92e05a90b068bdb3acb87af697af9", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "3ca054793d07f46a7805029e4ba9a000f2932e3bb1536b9acb58c3e2b9af5228", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "82be3efd527d576541c23eae5388442b5278682fa3faad7e295364707a571a34", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "4177eecfcbae74949b3bba6195df38cb1d8b230ec90614bd360842ec75780b23", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "af7d1062ced3ab8b5c806780c9cfc1e39a1476174e0e830010976835e2b47bad", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "3a114e931056744eb217ab47f203189558097a51f3bf6dccae7079dd873e68bf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "c871aa36097cb5b2cdd6932a29ccd9408b62e22d447282eaa20b507d2d5518a5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "2f81dfbcaf08df903c8db31965a3f67f1b9e226be48d7a2a08358db6a417c44b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "40971a25cc5cd53a2bbd2c9c83c8c52d2aeb7eee7e8c8194465cb192d6f14faa", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f8ea1b9fffbfd84331688e92caded8a27a048efa2d71b1c4e78aeacc0897d4f9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "586826a625a82d5383f74bb6ba5dc9987c9fb32d73e4fb1067b303247288099a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "55414c2f0671245b0b40f39be4669e2c1d12a91e7cac71e37b3e5ff47fd33e18", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "db16ca07aa54cd518a4144d3c498651d89ca100a2bca5d901f8dcccc0c9eab63", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "94df40b1911c103d9533ac2f3958c98e9dc8091eb59c2ea409f6da0e328bb419", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "64d03e5739200f3ac06cf4d7280c2c71a4d2384bd2bd2ce37436896e938b256e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "3d8a680321be974d649ac1aee953451d285882f821c8f9e33700e17e1064e2a5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "87620fc64ab9e2811bb5637a8c678788fed17174b65b508904baa5f4e3819f1d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6e8185680a17aa6f0439e635631802d99d2ac7081ab98f238ea751e63ac16c00", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6e8185680a17aa6f0439e635631802d99d2ac7081ab98f238ea751e63ac16c00", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "95e6c53375fdfd187115d7381271cfc3c218b77087f40eb8ce20e721d0c99949", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "9020521436eb93df0c18045d838e086e42f6e468879cb60cdb96b54e177f246a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6b8e27da52538561341dcf1e292678e336be8509de058ce6f7c0605390fdbd01", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "cbf018b995e3769ca4cef2f09af165826f99cd719d938039030e6c36bcb5ce63", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "1a1cd0fd815adf74d19c6b19c18ede854c5bb1e5adfe8a3e64358aafe20df411", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "ba9485f6f41c5e7bfe9ee80dd04b03fd51702182e425c792ba2fcfa65b087313", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "a55040881a0be0229f950fd54568ba5ee300a238b17771ce85c022eaf7c001bf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "9331981b15253a58c0e2c92856c9830dac528e73870f279f29d3f238a5d8cf7a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a1f0fe01e006a382d264a810cca44eb39efadab0116ef4915998e17abebdb6b1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "1a1cd0fd815adf74d19c6b19c18ede854c5bb1e5adfe8a3e64358aafe20df411", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "ba9485f6f41c5e7bfe9ee80dd04b03fd51702182e425c792ba2fcfa65b087313", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "7b2e979b69729c8d6068e22e61f078f8a06b7306b284831291e642d38813b1cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "2ef44a31b8f774bff93cc5f013be4391264bed1fcb7c9e0020fcbbf8b2785f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "16aa7b6886e043b63edc1c0d106c50bd6a25b8b95ef8fe10c1438f16dff73bd9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "d60483db992e5c8133bc039c1459ca5dede940c432eb8f07a26177920abdc360", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "3d054c9a324c73ac9ef79154a2d4965b20474cd2d7dbe8ba39a794e92ae4ef5a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "d979c5e4b4af8ba739c4cf13c6f221a6b82a9b1493b2690ad56ba3f9d7b7e9c4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "ae4a60e640ac8f8ef555cc7a9bcca795ae5e366722f17a049c1618e60e35a206", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a8aacccbf62d2e750de93562c927dcc31220def2650408924c9593e634ad7ff3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "2ca9f0673d1210f328b9e0ae1c53395a1ce8fe806657c68aded5b9f049953223", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "f06bef87d7cd81dca234d40bf6df3c313af8e338b8b86df63f096ce6662cac28", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "64139bf9d6df3637a7db71c97911f8148f347b46313020dbeee9fd0ed417fd75", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e0512bc4b03a0c37c820fd9bfdbe6bd791f656058b6d9527a9523c2ef48ca3d0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "73600dfe99261899da53ed4f01e86f822240afbdbfa9b69ebf17fba624e98548", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "0e5f31cdc8aba2718be765af88e3fc393552fe1da1d065696aa1eadfc00b52c8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "c5f67db56d339733609c2f76bf5f4ccdc93bbc550d18cd5050ac233be39c7643", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "b059361c0ea5c544b0e7349fa2e623917761f01f021dff0d2601bb174d1d68ca", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "15ced0b52fa6abbec8f2fb01b0d1428317b904be08187fff4629024d87168dd9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "fa702fba91bc505a25b8756cbbf5fcb8bd678e80421f0d2acdef5958e11f5b75", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b718eadb76f847f0458b9565b9bce4d2096aea48d100fa7dcfccaf3107a3a7af", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "7a7d64cc428f903167bf99bca8fa62fdc825da6dad00142f69476a7dbeb5d46e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "4ddf6306f8759f87de8a8b8ecc948b2067706e850e8bcb2d5f98a7e5652c3aa4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "9dc0ddac14a90738cff5a7b5477fa7fbe20ecd5a81ae89435f3f524657d48586", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "0f47a6a1991890fb4a6843b7277ef302e8e8d0168834cb76becf38abd315cd7b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "75603516be2bc48785748c96e311b9ad7426309ffaac3b5ed4834730227f6062", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "02121546d298da870076443b81649df2ee09ab7361e5631f232b1100f2cff163", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "77b3793b6c5e34235d8b68b8e88fcec0b99366978e5e9bb53c041a62399ab50e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "51bcd1afb355d7eb0633e6694dcdc48e8c841bf268112aa5f61b98388cf14cff", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "79144d4789d62c012065f81b8e2a891bdce9d07e4ca72b4d2911e39266b064f9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2d472276205361b0fefc4fe5574a5bba767a228324355f38f26370ac0251be57", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "ee86b6a7f11c4cc00af07380fa9b7d3edcd9009c762ec84d13de9ba407a1477c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f8063d81a8a82504058f523b2a4358a929ea3e9bfdedd690a6f6e5c311f82186", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "445e567ad4fb988eaa399081e70e2b24a22e72219c4d851d90168710925de7f0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b05f0b9a31cdd3beff670e4dfeda7e944c27f37ba4061602840b60040fb1b172", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "0cc7fa947e7a67a5622382d0e9bd496135caba7025f2a71becbb87c2da326558", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "2197ddc14c24a8f5c006dc7947363afd56c807ddb0a76b1c2474a114a49565a4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "cbc3b4d4a62eb2e374381ad8b51540b51d98506e8a80b0c280d23f4e1165c649", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "9884977def9fb1d1dd95f83c7e933450731d26688cb6c8f8151245de9a0d03e8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "0af44f675e527038d822a90719d51a3dda32cd503559fe067379b7f76f17adcf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "909b13434ff5dc7849695b1c6d9efe8950906a57ac74224f175f1c87118f3c84", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "8d9b6f4ade95289e846c56b6c7b8b8fc035aa2b2f252259b87bf9f20c95667f4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "bc7e4b1a85e6cc1995ed7e1163e7eaaa60ad5b8c05cc388eac8258cb1365bd66", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "a784e2a27c66b362ab862d360765354c597e9f12235893e30ee4dcc5be15df6b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "4368393d78e52ea7955de6251735938df2bfeecad2b5e404ce4ba37bfce21fe8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ae55ee3b9f5ddc6c4946aebf7f175c59828b6a7a62e6d78fd0455126ada304d0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "76b468627a740f7cf54d43e47ab9dd2d02651b6c7e5f3e5a2e4dc7d35225973a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ff974257fe653340fc7586d972fe732941b7435e8fae8e18a80f18c518071f95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "de251903def2ed41a4d477851020e8131ba4f29c1880c05bebde13952b605580", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "865825971d9c9456a0a9f3e562ffeba828787b042c27aad2c15de8541f632630", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d3a16efce8e46dc060fc296a5108c37d2cfb5310440bfa50e6dd1881f816ab9f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "ead89a5157bcf3e53a424cdc0d1db1ac3b13cd9e0a642a64e16931eecde4e197", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "2e1c9ea6f904127f282127fbb7e78f0d986d3241d0ed8274652d00b9eadd5056", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5672a5e9e1e010f166ec6127685ef80efc2464e6ece629b2ec51c0734f622cb8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5672a5e9e1e010f166ec6127685ef80efc2464e6ece629b2ec51c0734f622cb8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "7996134e5fbeb63e8f8d3b5c9160f2524bc0bd8e245623a08188027b34d6c707", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "dce45932c5a453186ebed6ea5eef09b85d7d46fa0ba0006067364ab592315f74", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "dce45932c5a453186ebed6ea5eef09b85d7d46fa0ba0006067364ab592315f74", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "4fd9bd1730a19a83d1d67a4e0c5c4f0b61bc9f4fc52ce79b0006a383fd6312c6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "6ae5ec51c6e49bcd9b4e64bd79236f36286291a117502aa1758a44574c79a184", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "65aa42599c7f282adedcb1e4bf872255779c8e227ae172db06765765fecdb502", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "e0826716562155f7f73b6c3cc47992bc02d4dbe1c9f27699249e7affef7b3d89", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "1b2258967ffb74136591086de830d37e3dbff0c5ad33ae384626240c50b8e846", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6ff0ab59082dd6b010dfcbd2ef0363e4946adb5ebb991fdf047de75828af4133", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "b28cb8f2780c7a19c506c2deef4daa04a712a8a4e9256ea64cb8facc9de7d386", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "a16f27a89fca3df441b63f8c2ba8b36094dd544c1ddaf82802a98a8f1f398252", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "cbdf9fefcf24021cd9c52eeaf94d62b7b843485982de7e6db1054a92b39c0a47", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "43abc94a50312631fbbf8b4a1fd4b2cffadc60df7fddfbbf433e10e2436cf8ed", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "c871aa36097cb5b2cdd6932a29ccd9408b62e22d447282eaa20b507d2d5518a5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "db16ca07aa54cd518a4144d3c498651d89ca100a2bca5d901f8dcccc0c9eab63", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8479b9dc9b6b55cea9112ad9d76bd16f91acc93023f64516e4d91a897c22e978", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d6b7ef1b3991abaf9199bd2fbb4a75cdf9dfc217fb9f8f6c731f3ce9d599626d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d6b7ef1b3991abaf9199bd2fbb4a75cdf9dfc217fb9f8f6c731f3ce9d599626d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c9cb82fb7dad8700c86e20ece789cbf9ad98f2d0838938a77995ac9c1c8360b4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8e3e8f99bba0cf23051bf96bf5167d9b989d99d717264c08e6c5bd8ad93aa35e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "fdd8c0fafdf5f21b5d8efe5e99ebf0eb0d8d83a0e29dc45e4669fd516df35530", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "48adcf8612b4a526978edae9b2621d551637019d7d424a23c2aea731feb092f6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "dc3ae44c81871d21f6a67fb6ae9180ebade63400578f1b5aa70f2256cf5de5b6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "89520b79697be0f06270f0ffd8ac1a2be2c18985b40567335c02649dd457ddd5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "1406e3054c01d9efb1848c74839afe64c7eb4a1a24f9b929702396a8efa7a693", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "eb42a9f65f59abc25c518f7a4826cc245e3d71a6faeedd86284f1b1c578f6a31", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "eb42a9f65f59abc25c518f7a4826cc245e3d71a6faeedd86284f1b1c578f6a31", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "eb42a9f65f59abc25c518f7a4826cc245e3d71a6faeedd86284f1b1c578f6a31", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "eb42a9f65f59abc25c518f7a4826cc245e3d71a6faeedd86284f1b1c578f6a31", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "dc3ae44c81871d21f6a67fb6ae9180ebade63400578f1b5aa70f2256cf5de5b6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "9194e1a8c9c436350f43a99f1a26abff1424e117e94d406dde4ce6f8c0acab8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "22ba13514d386d42938ceb4b3e4bebd22a8b4cb298455e20b88cb179ab79b073", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "1a10f57ac83b0affcaf42f44e913457d179d6c53c36ef7b264263780c5b5423d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "adb6bff9df0de1ab6d9101fa3528255ee653f905519cd3210c4f8e65471b8c97", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "4e68593611df44e74e60d848bc7025dae806b70f43d06c355f0eca425ecdda2b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "73c8be0dbfc202eb35484f12b982463ba0044b1b758a0030db3b8b02852b096c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0c42a359e6ec13ac85791707d600c5f6869cf9b0a76c0323c5d8f00666a96689", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a72e93f8b32921bbeed9f2af196fa6f462656ea47cb09683aae6ac5300ffff90", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "7102adc067be54373e82daa1e206db1fafb6542670cc8be16b987778b79b48e4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a4806a8fbb5873416c39b1dade490554853449b27d69926373481d556307ac28", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "6536dc78ceace274f520d688acfdc36cdfcfa31a7d57ed20c2bea680eae1bd99", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d6b7ef1b3991abaf9199bd2fbb4a75cdf9dfc217fb9f8f6c731f3ce9d599626d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "aab3e089775f5bbe5628e34afde29f35910303ddfde887cd2933a4af76165ff4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "e30372743f2627825a9f3c645e87ff5a053a191b8f9f57c806e0041cbc851471", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "f1454a5be21a8ab6e2c7b6c0db9ca061c115811e76d1f3518747bd12b3ea9c20", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "db748289dd7a87b089172eca8a1e49848aa594de346724f9ca5c0a8b1c2ac0d4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "8966a8ee9ee7782896669b23ced5cabc3c52a178ae6a7cc95793a4c693c316cb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3d53da630390ed2205f5998b9914d13f6131971dfdd63cfa920d9d4a7f8da6cd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "4e2165113f49710bbbf2dd108dbdabd3c2a7487d53c788a6978a2b5e1e399831", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0c6ff2a8990d1b85b76a6bb4a02856593b2fefbf5c9b38b867e1acfc2b970f52", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "aad5adecc4f9acc3e1059630c48d0ce1ffda980bbd7de7868d5bb785dd7f70ba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "1fc35da55cf9052a339bdc395a4a3075e5cedcf5f8957c52fb6ffd19595c9374", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "473f8a17fc8488590d528a73a23670ebce1f7ced920bf9f69c61d2f397cb24f4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "845564d77917a9b87994d8ab13988fdf6fe3a86942497ba6b741a85f00a854c1", -"T3T1_cs_ethereum-test_definitions.py::test_builtin": "60f6192c7028a8205b45bf533d6d73170f92899ad0e76b6c840d16dbeeb0e488", -"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "f64d93d6a8d7da9f7e2ccd1e062c1309501546486d55934bdb20d31d0f196193", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "e9386c923baf6d1f6a43fa41f99504e4a4ea2d76084f90ecd7b0f0561e3b2401", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "57be480459b107ac44e5de3fd1630d1a0d90395fc4071d51031c1d870907c142", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "c5ef8d86c95cf834bacc65f7a5c7500f1a5f282f628ea64cb0cb78a45d7455d5", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "04b328710050f1f162dedcd8604e1ad11573e105c92b35a70293c1a222544544", -"T3T1_cs_ethereum-test_definitions.py::test_external_token": "d13105a5efd846d2000cec08ef83e5f22930c6202cdb441caefb63b797dbd01f", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5165b6ee86833b8cc3f6d70e7507fd958cc33e127792a6167ae689825e25d5bd", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "e7903f7e6f6eb5e2ea57fdba108435dc61b8bce96776607c6757f5bfa7e5b306", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3aab5f568925bf774cdb647b60be55e3ebd8beb71cdc1d6ea88227f16822674f", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "11e5441152c3c20e81b1134a7050bb14a6c60a9b1782657350c2375f790dd1b5", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "03e599751d81ff9254adb81c629ab88db9cdee861af4ebc72f4a3d2169e05bc0", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "24d76d27032a960155520967928d08e67d6631b4edcd163e9f6d30985227ca93", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "c64f9942f834ae47c29a19b9cf4714921874185e8bfef9e0cccb254cab6db566", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1fc5880a9ce522af11921f2432ef6f18e9c19d2caca89fdceab74c5e23a189a3", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c1ae63ee5b5429c727ca91f077258ff3321fc65dbb58884df0b17256aad23781", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "8948ca2d7e24cba30b37d8e0b061fa423ddc6803819655c229106a2040bde584", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cac4cc6591db42a3e3dd721913527526b0bc6bb2629b20760fea80ba11463997", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "495d85e08664acd6ec8d272d222a28cfd5ccfed2f24127773c7c9d75058e675c", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "4347fb1e0ff8d18cfcd439750fe1f4a9cb4c1c857f5d1cbed5e4803ae59176c6", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "72b94b17efb06d7303f66471461eea1547496986f5779eb0abaa963192dbd7ee", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "b58f3146f8014225fe630c05cf10cbdb9c8fa35e182c352805aeea427f034adc", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a8381ed2bf776de5bcf5ba461f3cf9ce89eae0996f61c47d4ffa04e522a07219", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9952762de3b22692548dacbb8e80c98ad906d0322afc7067cb9c248bd5a3d076", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e8fad8d371ee013d5e9c7e68c8e2809d1cf7929b7b7ebb033189bf005b66c68c", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "cb0e2f41dff8f1192004e9018d40555b9506ab3ea7b7dfdeb6d6bd0ec72945b1", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "4ac5becbb96358d996de02bf97bd3955b0b5b327430d3b7bd4515720fad2f6be", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "e24c4336f9f9515599acbe9d9bdd152b7102dca3275a3fc4b44d24a39a7bb1d3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "78d155cf8412f500f727f0fa504169dc329cc54504469122529f47eb0d9875d5", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e299339019b124462bbd73d7da866cb2e52e785a3be88144025d4f29194f1e59", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "4ac5becbb96358d996de02bf97bd3955b0b5b327430d3b7bd4515720fad2f6be", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "4ac5becbb96358d996de02bf97bd3955b0b5b327430d3b7bd4515720fad2f6be", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "4ac5becbb96358d996de02bf97bd3955b0b5b327430d3b7bd4515720fad2f6be", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5ca32c64e444c8163df85f9b40b58d9233be96d71af98f3cbcc5f13fd84d237f", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5ad619d520c3c1f52b9101751d652f254ea33e5ab41bbe127e71f880bedf8815", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "38707673f02f9a4ec6ef730420c69a28e567bc6db133bbf73eff1bca67ed2d7b", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d1a06c0424926b8b4fe755587c749d554581825ab8c70c19c7414431ebf2ca3c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5bb12e23b7b3e1e5d704d2edb13572b03c05e6d38924233c34ea3672a1086ea9", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "889e570263e9b591cfc1dba655be6b9669873c3241a2b4ffc4409bdc51f5f29a", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "f68885e6d9b63f7a61519dd53e22bc7c48cdf71c618e0c3e3ea332e32790d827", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "35590e1ed3e8222b3483fc654f806621bb46a655057f6ce12571797d9a883b4c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "b73280c183d7ce00147ade5ab6299d89feff5e9c356c7f729d1cc5854247dcb1", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "8aff4157e85664bef5fdb00f30f5712452a311cf6e2715c53cfc75ef85516a4c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "d66e6020fcdbe01aa5403e3f04f5516631eab2c3b27364119999c4ca10d34fba", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "8dcf408e29080d748571226966d615ece8f91d373003f4c5e7b8e9cb43d0d3d4", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "7e7494e8e95a1d1ceda613e911943b4034448fea314afe8c132bf84e78e794d3", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "9d062569786c838a54626287d25e2fc1705cd8842ccf2ba6a0185a8725187cc1", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "3f148fdca5e4186df234a70d9318e61f8c7fc6fee77e114071b06e500ccb864e", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "cf2cde993a6d8c9878c8c304438edf18d9ba5406f7a56423818ea2ac941bf078", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c1fdef2e5c44eb1132a2a16ac8a3e48708759070ad3f4bf2495bc955fa2dacd5", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "9def7301642d2ae9c56eec85411c999388cbd16602611a2dc6f6c04802013bb3", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "d66e6020fcdbe01aa5403e3f04f5516631eab2c3b27364119999c4ca10d34fba", -"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "156508c682e80bbecfe331e2709b0382a40d651a8b4b7de8f73b85f1563d4e81", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "a51309d831ee3f56b7d50d3f542da0ba5c368937b0b7a3280591940787ae0e9f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "5c6a2359fc8e563d5dd41f4352b8c6ffd86cfed24658b452799b18a27f61a01a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c688ebe73d5592bc3c95b66876fc4d799e8ad9758c4a6782908dae019f6fea57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "5c6a2359fc8e563d5dd41f4352b8c6ffd86cfed24658b452799b18a27f61a01a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "595fc648a0a67c582582951c25a6f645190d1a0016870a304c3f38ecb5994fd4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "595fc648a0a67c582582951c25a6f645190d1a0016870a304c3f38ecb5994fd4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "935a0cd133078611e56ed8f3f895ac0f3f6c443e896583adc4b35e0acd379c1f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "09432d271167b5a68297f9c13a21ab7816865485e89df167db24b29489ac4070", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4bf16342ac037fe429fbcc4a21ae2bef9dc51fe6513a5774808a55086b06a064", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "08e547086c68e1c256b2d81978efeaaba7a14cf5c0f70dddb11eb0e38ba32ee8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "4b4e33c2fc085022a88d7e4431ce87a2e8a8f969f9f40afa69f6f69faff723cf", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "ad4af2f6db98e9b99962b91921d42657598febd7e7e63913adadfc9140ccc8ab", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "844500987112c9d7ef8c21e0f68b536c9d4f4a07e0f7fd212a3162ee69912ea2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "dfeed41ea369d1d0e042558176bb3b43ce44a8a243956109469dcaeb09a4196e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "30303ea973b5684bdfcfff916d2bd0517f275477d937e0c08043a7b081713cdc", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "f0fca1249748a2df754550363e8677317e9216f22cec888991464859ec0d838e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7257d96c0b733167d0486de970b4b3bf81f5250e90834176a11ee74095698157", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "f0fca1249748a2df754550363e8677317e9216f22cec888991464859ec0d838e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a105b3bec40fee1ae0e55220b38aec6d400926eecde58b13ee3749d7e986652d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a105b3bec40fee1ae0e55220b38aec6d400926eecde58b13ee3749d7e986652d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "e45a6a1c6ab868da72342e575552ef97330f035c0dd39fd1afc126c436579be2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "3d2b41faed06df6a5a9bac70867a17139a3026d209ec38d2fce8f6099de2a02d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "1640a3a4c19ddc1e232a879d0ef3a44c8c7b6ef75f8a20bf26da0318d7f491ce", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "dbe38ddc080537d68b22dd0903dcfdaafbca020eb78bf7cbb0f0ab6b9e616de8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "4b4e33c2fc085022a88d7e4431ce87a2e8a8f969f9f40afa69f6f69faff723cf", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "55fbc0cf8fda41cda9c6949b40663d7100fac94e0bb50575b683af4073f35c3d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "400c5e44e980125955e761e96a1f77cb2259b7dd800db0075a46e12a663a6167", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "72b1f10158ead8fc74d5b9bf60d1687236c4c22a1f18b77a1dc37d048fa9899d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "f0c260e971f8ffb6ffa9b1e879b2117666f855ccd39c72276517f8424b1c4c3f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "488f056dc77d51494b18b5737130c1038f80ae72469b6ac6879f84b296c6abd8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "582b3ffee34cd1b6c744b7982b464bd4b4eec0e72f00766d3553c6ad6f1f89ef", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "ad4af2f6db98e9b99962b91921d42657598febd7e7e63913adadfc9140ccc8ab", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "935a0cd133078611e56ed8f3f895ac0f3f6c443e896583adc4b35e0acd379c1f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "af8c30ca6a9fb3365dbd3435946aabcdb272c1b12943700ddd11f77d2672cd38", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4bf16342ac037fe429fbcc4a21ae2bef9dc51fe6513a5774808a55086b06a064", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "a0e4b5b9679a451dc03b4c4f656d2688b483c877fac980736230fea6a29166ac", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "40f67e0da4c478a74f0dd247d32eff60e48dffa639a34e2d73de6f8e9cecae66", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "ad4af2f6db98e9b99962b91921d42657598febd7e7e63913adadfc9140ccc8ab", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "55fbc0cf8fda41cda9c6949b40663d7100fac94e0bb50575b683af4073f35c3d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "e45a6a1c6ab868da72342e575552ef97330f035c0dd39fd1afc126c436579be2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "cfa90e10a5cbcaffd562e76965bea4ed5b8213be0ea5655d86ad9c6ff8ef0b68", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "1640a3a4c19ddc1e232a879d0ef3a44c8c7b6ef75f8a20bf26da0318d7f491ce", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "190310014ae168ec5bcddc707c43ef0013f67d66fd10510228d2d4f1f28c176f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "317e8965337e8af83bbf372ae756b7aa61b6822b24ca00367d582ff2caf4016d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "55fbc0cf8fda41cda9c6949b40663d7100fac94e0bb50575b683af4073f35c3d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "cd2fcbc87290fb45d95eaeaa7dd4f3316654d68d8ff779dd7856be20e155b94f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "cd2fcbc87290fb45d95eaeaa7dd4f3316654d68d8ff779dd7856be20e155b94f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "3394e7f6e140d6e17dd4892f9a51517d3f585bad89a63ee08d3e22ba7ced3ba2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7afc2f3ec27d677916e476e829342565441cb4472353c3c1efe79f0a9dc831eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "3902d1ec8f72d12b970f69545baddb1ce3ea9222592916e45a05b8b0fb49ebb4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "3902d1ec8f72d12b970f69545baddb1ce3ea9222592916e45a05b8b0fb49ebb4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "b40299bfab0b38d22bb2c401b20b9bcd455000998a04ea208adb3119f55a9900", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "b40299bfab0b38d22bb2c401b20b9bcd455000998a04ea208adb3119f55a9900", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f00ae326c88eff9808063424fb7575328de6f3c6323c8ab320be738613e842f5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f00ae326c88eff9808063424fb7575328de6f3c6323c8ab320be738613e842f5", -"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "069622687f8433f8aff0f8e9b5a83da62ae813f83f3bfe5caa899b0a81345a7c", -"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "069622687f8433f8aff0f8e9b5a83da62ae813f83f3bfe5caa899b0a81345a7c", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "28f99231a92dd88b77957e2712f8458a32bdb494e2a504c2a8edd5be783cc85e", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "a93d454e3ddded371684fb00228103edbff9b435328ebe64b3c849071e70f811", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "06e7bd5654b9d721600ebe4d15aa930ea49f16743afc901b92383a538b28e1f9", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "16eaddb63ed5193cddcfd23cdc072bfae49d122accf8fb9a45412bdce4428277", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "00533eae4dc5df80acb9e45607ecf46bb225881b2c5723de7ec365ff647cdf67", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "1a9ad85245d85974b9d4633ce2ea88aa981bac90134a24809d9e277fbe1f5dc4", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "1b52b63b22f643ee93c16921567b6b303d629a47de1f0171814d188564ca4179", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "b95baa2b854fb27858c444399d14333af4847e5164f550f79dc361839fb7a0cf", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "1457d3c5403f1be99e9f9b41341d7f712d863e66567dcca0aa54f4a9edc6a30e", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "e7d6d4c22d59b863fe51253213dc9bb3268ceeef690773c1dd000e1cd3ac44fd", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "36d75ba7a014955876cca3c4d2d6fdb43e3f029cae4ea0c3bae3b28b7e55d690", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "42ef839fbc13d9e98854d4717e46a49418f4927e755fead7743de8fe4d834d0e", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "e18938b5a1325970ff57533073574839e60713a7bda293fcd25ab4516546aedb", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "2dde72cee60411eb2473c4d1df3651a041190339c23c9716c66bd21c31c2f918", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "08f086f9237c2165c5a6b60abfea322e74bb262fc528d29b4ed27e90877bd480", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "179d326dd4af252b856eb856c2dafa04f57dc218fc4c7febf0a6440462f46145", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "b23f3692fef100ec62b9b1fe7ada643dbc1ce2f0d7d38e460cb5cfabbd2dac83", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "dc7f6b7a3c207ed4a224b3e7620e12176b403dc75840ccae156ad875e53d9822", -"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "432e11cdb82af75001cb4d3d6a51f2436e4b57940fb74c1f51dd6253bc8e443a", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "c2b5cc309ed2e49384bc751e73f7bd33413b07022addbf857718e418c1fcee23", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "8aa96559619fd13cbc8f4febfe6c734547e3dfa48074832686932ee4c92aac07", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "1c8aa07d99be942dc9cff86ef14d4d995611b336744ad42a0955cc3e59cf1846", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "8274fc9b5695640c9f535aba5837173759c9704ab3be0dd79e1bf2e4d092191d", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "24f875479ea40dfaa5f103bf8e458550cdfa75087da14fba885b0583ae1e36ad", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "28b1c141eaf3c89d31ad67d122aa0e7d728fe7e909c0ef049fe8b25ee17603d5", -"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "1c65ec1534c77f4435edcb7cd68efeca32852cdd8212bcf0dc46ef2b4f75ea2c", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "07c1181e5b504507c6afd355b243477cfa7892f76a8515fbbc6f3bc869abb2aa", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f86bb0bc6ba6c45265830e546991d76437f559082fa3c8bffb0c5db3ea112db9", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "3ab077a4f374029556a5bc8d91e3880a331dbb0455e1eac751b5b7e3b16463c7", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "09feff3c689cbb7349b94a3dbb60e51c4fac731374950d142c5131f2f5247ee7", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a7a68d5219e785c681dba938ba02dba60a864b6579a6fd271d5b0f9a505a4531", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "192d863223411a79fac16780f49f3049139d8e6fa05df31a44d02e0c3ca2645f", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "d60a5a84c4e57c1878fc5be919388091f09d09fd74676beb9c769d8889d5a18b", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "76bafad59fb2bf3e428fc4298b27112b86097ca59b583f44b9886cd086f71c64", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "fe6af8fdf9c648f7e275ea98453f878e0359b737b0e6b20f957ae3d0d7a66dd0", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "562e993855748b0dbb9f4bf2a64763af9cac5b50f8f1c1d652ae2a77dd8a9cac", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "24bf7c5f639b9cfaebca0f788fb3b479ff317c3c06a43fe174e8fdcedd054387", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "ff75720dae7fd929bae984f27ec64528f2bf881ab2af6115e62cd6cdb1f469bc", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "2b4b5ae5894ed4d381ecb40979bc2abe17f1376faa393323d04eb0e2708c2e8c", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d21ca690d1d091b382d1b0e389cf60c34d88a95dbd61e58bd99268f28cc0deae", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "c59171888520938eb557847a60184288e3e49d7a610d3656cd2f4ab1568fa283", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "192d863223411a79fac16780f49f3049139d8e6fa05df31a44d02e0c3ca2645f", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "41447dd69d95c996259872b37495b7c9c4af9c63e071b93ee15bcdb13cab54b0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1e5bcd17b922d8e6c8a7c4eaa84e3db099555eef9a1550ea1c16202d14ae6e97", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "11ba30a651389cb48ec22d1650508f61d9298f6bbc1bd8a8a113375afebcd21f", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "82c74040acb08d346097efd8238f4fd82f45b40d0d74f0ea4bc5e3dede86e094", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7a53366acd203319a14a53739f1462a3ea0a30832467552c423f46d3c406f86c", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8138e55214779592dfe0b735b2c321a654f4b71635d920162945077b04e3cff2", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9cc6f136d00d30a6ab65398c677b6f36683c74a1c8aba9e9417708cd2a71baba", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "debd219426fdd83206c33c6988c6a4c1d51248a05dd57ab167069452ee05328f", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e70ea2080a999963d12b091013873e478d98223d48fb9472e5d8a1e1860d38dd", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f8354c3002e039d3b62118c1f18acd50d164165e8f58881ec7c0d6354a39e639", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f25df139132da6fd8c24178448dfe8d2a0832e9f3f86c1ec606102ac38414aed", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "54493c0b3fd690e08a7b6506a2e61aec3ec0d3abae72238962e2f91c566f50fc", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f2d8dc743220d22ff525db458acb3dbdb8c82f35415e14d0f75636fe1cbb5ab8", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "775f8090710af55ffb294536d761994f9f8cc826fc46cc77e119c345b69ceed7", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fbb02956fa579eccb5f8258a447ce49328df8d8f5377eec27f6b961bbb608846", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6c7dd7eecf824da503500b0096600aaaea89911b1f797feaf432b674f9405798", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "49f1ffdbef73ee720da840019ed22453f8fed152011db434de6727674dfabcaf", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "554fcc91833e38b261fce3a624866651778fcf60aeb4a01d4c4c22252cbc7c35", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8156e5b7627362a737560b64a72984cfc98676f4b64709fb0bc6be9967e55841", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "118d8db778beb9ee95bcb0bca3fc51006e91cdc40e94c4c8bffd40f30a3a910c", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "85e28064fcca36b5d9b3e9e2df89ba50edda96c6792e2f7c965bb6615071ff0f", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b755b9ecd27be5c849429287a59521d02514522da42270778da13725bd1edfae", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a7aceebf29b4d17ca5b744e637469135dff4d3a8fecd256100317570be6f0e3c", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "32b03e2b1f80dbb6f621eded761a88332dc06c4cbdf620b81bd4f0be794cfbbc", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3b593b8f4837e4a4364808b73477e6e09571d2fc817e8fb6612022dc40c4ad1b", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ccd4bab1982201e0342a75c949f4b2d3bd7af65b34740ec71ca57296d9f91a01", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2b6fa4d697913455427f8692f82fe6c896ed16d01ea6fd4c8ba054bd817b2c10", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "28b56fd82c2a80109b7959624ea7a75d80f8890ad543ea72910f025a1442114f", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3945df38af1912e19f284ad7b7eb429af94a79480865f776246702fa7b0ad3f7", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "dca5a8f1ab27f16150da94a32a26cd8ecc6fab58a4d037ca134b361dee0226eb", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f0033c01f51636f12fcc33962b4aee6f3a6e17224ca6248e505a036cc818b4c1", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1bbda7f5e61a663f70f730d74059a7c0899bcc318ed2ff5ef92bf22468700a3e", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a5026efcec9794281e64827d24e8972726179afa8fa8cb1cf39118a19632710e", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "2722df42606296a6ed0fb4c58aef139b4457db2b60d7511892e124d16cb453d2", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "5b2b0641e45869cd9b59fc991fe762fa9661854f1fed5f6db513d39123ef4a95", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "fccce8f26a3d7981a0e591d24f0e7936b001d83f6ffaabb06f7eafbb7e32cb83", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "d7976aead482602bd86dc192802fa1a288f4dbcd8d144c96d67bce7e4cdad0a9", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "726ec2a764bd580d0bd1de45a3b1ab29ff6f9dbd27c42a1a42eeb81732bd298e", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "03035c6e904724b4598abf1075f297ff90c10a24a906df1cf56a9f993c7de83a", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "d7fd608f4ec24d4b199872f8d91cc4435f7b1cf6f63060cb3242c8c45667709b", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "f8bf5b2cd701b27c82da8c3d1d6b1ba9f265e9f1bc0c1a58bb923c0fa0c64d02", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "03035c6e904724b4598abf1075f297ff90c10a24a906df1cf56a9f993c7de83a", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d7fd608f4ec24d4b199872f8d91cc4435f7b1cf6f63060cb3242c8c45667709b", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "f8bf5b2cd701b27c82da8c3d1d6b1ba9f265e9f1bc0c1a58bb923c0fa0c64d02", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "66946b882d2f15927c6e38efd67c1cbd35da5e0c84765aea3d50bc2b8ccd77cc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "2477586a544e093ca8496f828af4a0f36646b499fbc7d02462bd5b37c6aced02", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "40c7edbc236dbd13cc371943e0ce377fc61a7c1b3195a1a5951dd04faca3648f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "32256409292925b436a7322ad99c070b45d4adef4e243ee2ea26ad4e952ba263", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "60e7b25faf25b5b6f9e029d64eccacb477dbe9b2a3c3bcdadf7696c5484c28d8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "31e7b8566d79da40a422cf2a62a80efdd7252851edf0b3f53417d2f0ee4cb585", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "89d51473c63ee86f4d91822dcbd0a26d478a6c4eab54b8f311c13313688e6343", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "cce834c7c753af4e93b4dfebbe7913d8566ed1a9387ec3dc0eb2da6069a6ac84", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "dcc8460c41f67e5befdc508312cf01ac26200f46d6b751bb17aec502447e864e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f3ca3904ba996a604cf9d35aeb95d43b659a1e2b5fe77feb719e1229863bc067", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "2dd536d80f129ade0b970104dd927874e5a843c0fc97b2b44713d416859b5ec0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "ff21528b7cf0c950e8f74b31d182bbaeea7e5f75051846dc2cf601d8731f529b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "15d465ee5958c18581cfffef36e18c6504806fca28df8d25fafb24635ddee1df", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b30a895608d83c9a0e14b6b8c1a77918c5d3f37b0d4353af4097ea8a1139aa4e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "fa1d4b2cce37dcf8ba9bb180e8a9c51c335bc790382dae26244f36eb091536eb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c060d7f0113025915f50556cfc8acbd6c2fec52444cf272a451db1be3dd86d57", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "69efe1fcfb45979620472e36ae4f427a8a7fd20825dbe53577d1a6e752a2c21d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f1b4faef78bdbda34ba6949eff5772e921939ac186d638bba521f09ac7c334cc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "b7de6ea08abfa977e7d355c5b0b6c9b0d44e5648e0e8369b999ad8e71a99d3bb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "c3d1c6f8224d65875324b0156224d35a4753ca9382df1a1363c90c37b8bdc50a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "00082ea011b1f9b868b1e7e1eaa45b52760c9c853d2d93a05bac92f2bdccfa2c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "00082ea011b1f9b868b1e7e1eaa45b52760c9c853d2d93a05bac92f2bdccfa2c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "e5950a6f4b7acb49665e60846aa9299d8208ecc772cc464c1ad2648bd6d41e4b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "e40b430da14d46236974f7c8e3b65d533ff863c1511c2d6338a01ac1b81b80f5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "0ca97d8a1846a5eef5eadabbef1df5220fb06e2aaf9299496eb7a59314574944", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "de2bd7d6cf4f7b8919a96fff22c2cabe457f8e04c6f2562dff22c51bde8c6aae", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "70a0f7a14dabf92173bfc8756b5d507dbabe1453a4dc0820b054e6ea09076507", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "727b88b754a39bc5948c2a654b1ca35ecfc3b75490bd1f39f88b353b8bf7b16b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "ed80e9dff6ea85065b805ce5a4261f692efea580856f88a3f65b0a4f4b3b3dc7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "8a0b357d87429063f91db641d9c9a48e4183285bf928c1fce5c39953a819d51e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "6403802134d76cac11e9e11e4aeaea4f3a781f9b61863b8601775d368d8bd61d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "566cbcc45c35dcc9ffe8fc4bb1a8b1005d343a0c7224d51ecf9ee858b3257162", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "9e51c390d1ff07cfea07ec9b8c5dc1b41ad5b674632e393ef2a08a8a319badab", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "8b4169ef3b4b6d5940a2db3e45b29df8b2de11b1285445225c23fef1c55ea993", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "4db31866fc0fff4c32f43b24711885e4957b14d4f1eacb0501753a39fe9028d3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "7b7ed5faed83571decb765a702dd76ac04272fc7d884b55dbde971f60a464c96", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "ea106e20333f71a7d1023eebeac28b8c9a45cdf2f3957f36b4f7263d1fe89b18", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "8e069dd1450498e5ca4986c6f671d280f3d4914283f1501a1b89b2172ac1bc91", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "60c8e645db7fd9d9480eed76273184ed146945708d5b306abc2f4dba582397a2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "d9bea9bcc8795f13e05b852e5c5e4aaede2d25b1b1f5f0f6c56d3ebaff41354b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "f3cbc4632dbf76be71d4ec82d76d9acd1a00cb2d1be01fcd068201c3d70d27be", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "14e688d7baafe9ab60fb2170721ca61331f76f98fe57e6b982cc5b6010a4cb17", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "d921e65b44f5f2c2d0e340215ee45fd6c997147273de1ccc21f1837e16a37b72", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "28b52906efa4084732db4620b90b2febb8a5342c433f3c4b6b2ccd61c886febb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7285387ea9046898bb64d9eafa7284d66826bc04fa637ef306658f47fbe790f0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "6b5c593de2012e5fd5ae225b3068bd41b4af92e128c136a2c9f4d634a34a7f88", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "801eda6dd96d103d1c82d73749d4a700f9a281e8235dba5842d50b2583294b3d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "fb76117b549f50e606a2fd9e7d83c0e7775a9188b38d5dfde71b8f2806fd4e46", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f93f3ca7f22d45209a2e3fcde2bf719e8bf2d42901360a71e2744141c15ab047", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "783f8f953e9a152dbfefe2d6153abace1b3736aa3920797bbca22aae03205c9e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "dce7d1004d973264c0c1a3439a01fdc4ef0b5a336320c7618523b6bfdae776ab", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "199e83aabfbcc0fa026f1d7c783ee3886eb1d9cd2f6ca384bdb81ef207120991", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "d130d89fa6bff529c764db1b0dab119d86857885b735ed46213deb9e3f966f63", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6a8b197b5722ca1a9fd55db88ea0cb3fd17492d7ce34d176f881315eb40207ee", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "96a4043ba89f7145f55c4bbc24bbf62f1161bb80fb5aa2a3b16d32fe31df3bee", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "8d582f3beecf7314b135076e269626905374f6da898305d7e22b4a6e1e7826cc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "55ba5f1873cf97c1e4c0651098285055853701998b31d681debe290090ce128c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "854b1214b01665de1fec0ded7ea3d4099f80c4205f1a9299dafbfccb6e21d0fb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "f883c753098318a1c7995b83bef06636822ba1c9f8f31b6f36b97476f3df5487", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "0ca97d8a1846a5eef5eadabbef1df5220fb06e2aaf9299496eb7a59314574944", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "0f02211194554d0c2ea6f6109cfd3b492d5d9ea499fa6203287342cd8e0bf0d7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "0a98aa255dac5d703404dcc36527397cbb64a9adda796eae000dc6ca09c7e489", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a7b9a500b47c122bf4ab2612a6afa20595eaa70a7c0befc1801302b0b890dbab", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "f206908e0f7353fbfe71c9d6cd0a260bc82e710267e576749c4c01205afa954c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f16a37ab433695a4ae829931b64548cdb53f6ac7cf3c38df67d9911ffbe529bc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f09a35123e662b665a9388e1822f84020dc25313fbf54a5151480b2e789d89c5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "0ca967ae791552727651541a8b9da9599a00fe1f0199dc52e98fe008aabfdc7f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "8f715c5e5f7b96fa72a9aeefd4a3cc0dfb7762d45940676fcfd2c3a155c5dd33", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "dddce5a29434f4bb0a7461600a6dfcc371ea47ca2f2031548e596ff964000886", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "b6200b7a894da83ff9e07b5dc3e2ae19ae7b72ab589dad9bbf39e855c1b432a8", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "14292836c1ba52e1cc9326fbe8e9615927b3837084115a99cf517efe4f5399fb", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "f5a748d77ccb66956a6cca963907b23c3a9658c8de65c9a003be6c4bade48e1c", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "b6af9b2a5e5dfbc7f6679f12c7b0aa8ae3b3341b137cd7284b8687ca6d841e10", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "f29fc6c6ef1964a94700cb521687129407881a76a6a6aa17bc51e1afd97829e7", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "7ae46c34b39debf1cf1e897f6e8e0f8c79d3312450fa33ceba694dc1c6b05015", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "0c7e0df28083b9753614abef16b6cabe83f88218046cf33593b4c10086069885", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "41998d15e17bfac5ce28b8ef1ea13d7ec9d008b654742fcd2bd5b84f1c34c063", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "662cba75b415095a024933171394a4d10c8fe6e6892629a8cda5e81534d0c5b7", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d0d85cd1c9a40d05f67d4429026a0b7906589063e919fce36dcd39ac0c259bff", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "fb403235ff168388d3eedfb7ec43d8dced3c8bfd15aa8c424810e4b24c599b17", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "5e327e6eaacc4364753d43597b893e5f850e6eb7cc03631ad8dc35c6e9b35379", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "e5a94b3c14e4cbcf1554c2a935f7adb0600a4a49615cf943b7bd81e8e37ab3b5", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0c7820d51b591185a2c40a3f08e4179f4f6d0a701ae00460dcf42c33180ece8d", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3c8a4fd5acde6b605b08c06a8edff12a4696ea3a8cb38733e90a92dd77bf65bb", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "93b257a317cb6a4e6c7aa30088aa2bccef17307abe552f2ad0f5c402ee2a9fcc", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "9894118f9cae9fe8aec177f4237dd7e11d3da9a12e9a9349eca3f0510484c43d", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "722a545e3362ca825dbe29815f40943b4d05f882550f122eac9c179b7860aa33", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "57c40d0bf505d28bd2a6c6d486f1c36a23b6c661f215350dc37c9ce5e50b7f09", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "8f2fc9ce21f0a299d89228fac40391e50a1eaf6c26e38019abaa99cd363a3f55", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "f0bb2f709706152116d749264969b5e1176ba6f3cba4ae9da8577aaeda353205", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "15bda7df5cdef255259249cbc6cfdc0656d4a1c2aed4f4ae98d49bd5ca50e15f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "bab24ceb69526ed7ba1290f7ca2ebc82a7a7b51685c2890fff1e0e61c3109959", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "b35a274b564e01cb898002bdff2f919c275b333f8a5a91d223fbeb0423c91419", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "4dbfc04f822dee484c6e456e9f0dc5fd14be655246c10ea0ff23918f7b1acf0e", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "77d4023ea2f42faefc46709cec53737f14f7a9cae79554f4ce2cb218c8fbf79f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "4001d906276d52823f97df9d651ed28a20a5075b6bf964a99b01edea7c425b8a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "a8aa2785e38e57ff731fb99335ef3577b7f0bbc663fa86e75da85aca2a827f5a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "5cca183e787ba132a49f56d39126eac0ec58b07da8b41a77fd2ccc02c8d737a6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "8a150ebd45a024bbdc336f61fec35df4d4e1768ce15e91409a6e84309a6131d3", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "63f1c49dc129767b7663e30ed7b4f798ee531fb83e96522fb947811003732ff8", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "00172f3b3f36543c80e1e5a8341fabd96f121c963a1f8c26d5bba01a6d3a983d", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "e25d1522c76dd107ac0d8d6b0c9e813be6149fa8f30da8ff87cfd878a0b22a63", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "079d8eb8ab191324c6d2390550bd0e3b9a8c456390f974bc8567848ba7aaf1af", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "292ccaf4fb8476a76dd4dce575487b1edae8413a6203ede31ca76d3563736e41", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e3e19961f735901c8b33306bcf3447606bb092de100169c4d6930b7b3a2c3726", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4d0ef133760b68e9a80c127b44d2c3639b69fead0556147ccdb4b27c25fc110d", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "caa31d43dce5efcfa180664e0b864a44728321829d99953d00a6c9d90982ee88", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "2da296588c74b8aa9fff7ba2fc38f72119d903773e95ad4b8700f740f6e66147", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "fd5708c17e206c9516a74df824f17d62b9869f095021b1da711bc0f5c8f1a818", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "ea8fe7e8d09f0771d31019d8a7818d1befeb40b5f38259eef90ff5cb42b2d492", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "e7ecbfb0ce2042687803b609b103346964978af98f45bde3b30447b4d4fe2a1c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "c463b10fb6c93fe2bbbb3f1ece4bcc49fe97e875cdf27cc3cb373eee332e0d21", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "58d23b3eb0529fac7273571f16be0926ba77375acf62483c3e868b33832f3704", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "59830a8c75adef87342b297796075220c1e892282190e2c3d44b6c4428407774", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "8110a7de25b38737d6a564ca593c5b8a4b125df0302c49fe6c5e3ef445c8f22b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "d70f042d165a9853dd00dcd8b61b6934c8d36ab8ad63adb7600ea75890ef2f5b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "1c4ab859b04d7c07558c7cda76c57cd1ab3cbd69aaa174be0f71f02662f7310a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0bdaba536b82d2c0359d9f2d8ab06087c9fc509c42144ef12fa644e2591af457", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4d0ef133760b68e9a80c127b44d2c3639b69fead0556147ccdb4b27c25fc110d", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "0f605c720fa2a85a01ea44bbc2566a00105ee2557c67c25a968a6b3c15717342", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "6bde5d2d3d4bd8ddd5521dc4ca1e7d13a6aaa975fbf3c4d58902e5f13099d407", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c2efea6024b871be0dcce583f9a5706b82e2908b44121e5d486c5e8c27ef20eb", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "3c6ee3265229b3bfa4e73ce0898d0a11b9888fb4f76df330d2196830abecfcb6", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "75fb04c0015be566dab8a316613cba17bfaa62f63c7c74cbb84ae032a4baa55d", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "5bd4c9c54378b0953fab1f110965e89f5fd415a96e81ab2009510686f87ee26a", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "80be60ec4ab7a33c0a4ace92dca99f5ba2c27e1fe7a276c28de9173129015b91", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "412113454eae3c8c7257be3d1db39a1b78d17dd9df6fa9b7133819a620520f8a", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "479a677371c6f5a52fbc6cb23fc0e7cc79933869ceaeef31fb3c8a90c7439b11", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "6514bc4f9508de5f109990b1fe8c70ad54f818aa115bdb32728275fd1f210509", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "f84a2a4ae484f986fb978a9ed5aac4c91e23a9a0b437e72b87c0afd48e7732ad", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "f84a2a4ae484f986fb978a9ed5aac4c91e23a9a0b437e72b87c0afd48e7732ad", -"T3T1_cs_test_basic.py::test_capabilities": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_basic.py::test_device_id_different": "83c9b9445dbefdccd9d6909da2674fc2543354726d27383885194ac9e5fd847a", -"T3T1_cs_test_basic.py::test_device_id_same": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_basic.py::test_features": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_basic.py::test_ping": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_busy_state.py::test_busy_expiry": "b961a157bf87b4877d2dc41d57166ae1e7ca2aaa92d16b452df2bc5f92cee8b6", -"T3T1_cs_test_busy_state.py::test_busy_state": "a921886ce8abb645543bac48bf24c03c3ab50cb4df0f2e817b8c66b2932274f5", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "bc8a060fc3d9f329fed537734eb47a5429b257c1f3750ef08c90a10673b089c7", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "bc8a060fc3d9f329fed537734eb47a5429b257c1f3750ef08c90a10673b089c7", -"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "f45aaa4ff02315d353b2a53d1950cf180b57a93c43359a11507a02da90fd9c00", -"T3T1_cs_test_debuglink.py::test_softlock_instability": "6d2ad78e0e3c0d47549f7813df308480dc0b7baa8f5f20714ab2b0806211ddbc", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "b42e2594ebc5e759f8a865c4076df9635f88bd62cc28eef8d04a1b33f2945ec5", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_language.py::test_error_invalid_data_hash": "fe83badd4990fae983036a19365bf60c49bc38d5ee385d91ee6e5141896162fe", -"T3T1_cs_test_language.py::test_error_invalid_data_length": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", -"T3T1_cs_test_language.py::test_error_invalid_header_magic": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", -"T3T1_cs_test_language.py::test_error_invalid_signature": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", -"T3T1_cs_test_language.py::test_error_too_long": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", -"T3T1_cs_test_language.py::test_error_version_mismatch": "a1620c0670226c87bb8f378273234a8dfdb7861c70254ac62ba3fda7f0ebe684", -"T3T1_cs_test_language.py::test_full_language_change[cs]": "5aef7a3790af9dd9cbd3d569dff958c4054e965cb80cb7e883f7ef7389d587bc", -"T3T1_cs_test_language.py::test_full_language_change[de]": "7362e06dd24a0b9fac12746e3246b835fe0c625ebdc887592ac47b689f465168", -"T3T1_cs_test_language.py::test_full_language_change[en]": "6ab60ea482e612cbb4089f708d016dfb3d6571b3fefacd3905cd3ff2252a4866", -"T3T1_cs_test_language.py::test_full_language_change[es]": "73090805e865bdaca5efebd09bd856e524a6b8f4a0763f99399a1307c56271ad", -"T3T1_cs_test_language.py::test_full_language_change[fr]": "bdf1d20563f1a70fe72541e9bc2c0af5c2b9dc39ea2169ea41fce2e412f68593", -"T3T1_cs_test_language.py::test_header_trailing_data": "f080e50103c0381f21182c6c5c8e97f2b3fff49d88f2a188b9e4370af55f7444", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "f1e8bb1579ad13be2e9979110e4620e44ae4ea7811e9fae177bd92d4f7c46524", -"T3T1_cs_test_language.py::test_reject_update": "abea1f55cced8fd2109ee1d2c9c377f57c29bb24a04fa60047fbd174b7ed7a7a", -"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "4d59f5d577f3fb77213c3706ef7423bd75e4024082005d2a0d97419e32a092b9", -"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "4d59f5d577f3fb77213c3706ef7423bd75e4024082005d2a0d97419e32a092b9", -"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "a0227f73edc27402e7546cdc060035e2eb7e20fddf59f931c2b53c9404233054", -"T3T1_cs_test_language.py::test_switch_from_english[None]": "b3afa9d16149665639be02b9eb1bab5a4d5333798da482e7eefd031d2bec5332", -"T3T1_cs_test_language.py::test_switch_from_english[True]": "b3afa9d16149665639be02b9eb1bab5a4d5333798da482e7eefd031d2bec5332", -"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "4f456ad42b58f08cf15db4c8a45bb3e5da7b90151746a4921ef5351c5bc15f6f", -"T3T1_cs_test_language.py::test_switch_language": "455e1080e0d3ab1efc74636886268b774ecf00cc7012b80b9555ccebee97bdde", -"T3T1_cs_test_language.py::test_translations_renders_on_screen": "8f8116f195d3a47f8316d266aa02d75a3e761713533e56eb654684d4a0863ab1", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "4808517cd80b7335553ae5abbfb8334ee86e02d3cfee15d815f53601ad615729", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "a6c35373a8d6fa70e3cfeb2a15561975d5715123ef463f0baa3093f675e56fdc", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "94c9865e246a418cfa4d0d4881941916a9cdf35f01ff6fd56fb4e3937a2f56b7", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "84efc418df7d2157beb9d36b848ea5a63cd6d50dd8eef49cdf6c4727bdac973c", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "7739a48ae0fae18e2a0536a73929b83c788947ba6413b22fdb422141e15b95fe", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "ec9ea6fc079d058721b888d20ed7ca116b2a630e5355b0b549176b2058408fb7", -"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0f067c08d19faa7a2cab4b8b13f462c422074933889483aa142242d85c67f50e", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "41ba065c3c56c4e5d22d5701119327dc5397c24bba1cd0b0316cf402aa37c7f7", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "02df75fe53f791eb6a6ea26c8e7925b675ac00b7f9349ff4027a6d51de8b1e87", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "598661ae45b8e113b676bfc02bb19db9a2f664e66275105c6fa9296b76edffbb", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "951168d9ec9951454944b4359b331f93da492ea26e8086ef0aeb37d80c6cfabe", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f684db59ed580eb6cf26b0b87d439efd9fca6a03f73856f8e50aa08c14e14295", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d147a95d760102d2da9ec85252b2e589ac8fd83ce16b3a3398a02d1aad2e4df3", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "695d19b893b7278435b6a6aaf05e0fd72cd766ef5d990f1efcfe8b99fda5cffe", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "dfae6030948527ece05bec0290c2ca67e4bc3e3ce0dca2f6f68a9bd9f96f151f", -"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "81b5d33e9a6fe460018bbd0e6ab69fee249ca3fee16e867709458d682b79c9dc", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "9800a661f1b1d4e50f7c88cd4fb0e530c86d4bef3ee5ef15e189e148b97b2871", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "875d471bc5dc91636b57e50b4e20354eb78fb05e42e1df4f4ccbb48cb69948db", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3be5405c3769cead05f54045f42c7768735e94562287507a3b465daa468b5543", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "498d23eb99c9cbd576a15fe8b11005aeb262f9135c53f2d581b80a5bb9a49b7f", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c6a75460389a75789efa565a9be0cdbd86c5c0ffb4eb7ba28ddc2673e1da53d0", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "60e28f4d3b0c5622e288be6d5cd5d6430af4579abeadcc69f8786fdbcd807c11", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "ec61a74cac5a33fff00fa1d889f9452dc7f952ea762b6347c93e89eea016dd10", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "9657c5d37c5e64b7df523a9ca6d3bb037ed4ccc438aec29b135c09588aa97bc9", -"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "f826f0675245a6a3f7178b7863b53837c47e128409c90ff0799b5401c28bf1c7", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "cc8589bd4aab00934c3472437ce4298365e93f7d9061c99d4dac823e60300c15", -"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "4e990a507dcca5e13aed685e903cccd2a09cedc0c0034962df1330821110561e", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "792d15636d9ffa37a7cc5a6a1199aacda162a6710d87370a0ea05781cf9ae2e9", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "abfd8f38388d921607603f6ca87416bedf181af5f1952cd551ac81d931e3980e", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "6546ae92035f40ec94ddf44b98b59f8d86ee8a64fa91ffe57931f73d637f4c35", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "abfd8f38388d921607603f6ca87416bedf181af5f1952cd551ac81d931e3980e", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "abfd8f38388d921607603f6ca87416bedf181af5f1952cd551ac81d931e3980e", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "9d095fc9a2822bc030143848ab5cf0ddcb6e3e7e23fa6c12a08b134257afe39d", -"T3T1_cs_test_msg_ping.py::test_ping": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "d1f491f2ac96149345cdfd48828e6eae8a26eee98211414b0ba2a75576a03ace", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "a61dc072219ad7d54751b105b202c47cfca3fd9cf5a2db7eafe2d2761204d846", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "0bda66b18737b2806c53ee166e11e0be0cf871931345af98614cee163dee6a26", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "e59a11045f4c00e4bfd85a680f89dcecd534887e227e04d772c6e6690c6549bf", -"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "83c9b9445dbefdccd9d6909da2674fc2543354726d27383885194ac9e5fd847a", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e42496dfd20798a6e02d662f1ea78f0be3f18c3708d71665baafae025bcfdbec", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e42496dfd20798a6e02d662f1ea78f0be3f18c3708d71665baafae025bcfdbec", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b867033a86326b265e39430e9279dd5ab4a86e8a02934821cea72d6f57df6eac", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b867033a86326b265e39430e9279dd5ab4a86e8a02934821cea72d6f57df6eac", -"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b867033a86326b265e39430e9279dd5ab4a86e8a02934821cea72d6f57df6eac", -"T3T1_cs_test_pin.py::test_correct_pin": "05603a6ba4b9a1d14e47dc24864924b20b0d6d3466e43c0b29332d0a829709ca", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "b62f2d3a86440053f42eee2ee78d08045e429668c5a3ccdd5e6c327c8082ecac", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "22aacc7def9d0000b1fbdd0adde99ef6d45abc718ee2b7a20a791b1cc928c1fb", -"T3T1_cs_test_pin.py::test_no_protection": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "ea97cf18270703a637994f059e9307e7bc2e3df87e50d33692776910276bfa39", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "0205e78ca705227f220714edb74621014bde7e9ab542ea7dbd7e1d4c87bfd4a3", -"T3T1_cs_test_protection_levels.py::test_get_address": "f29f72373febef3ef04867897bffac3cfabcafed4a37720bfac9d101644bf6c2", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "d702c843001eeb6ffb4562e8ba69e83475d30a83ce97a84d10f36225420b339a", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "f29f72373febef3ef04867897bffac3cfabcafed4a37720bfac9d101644bf6c2", -"T3T1_cs_test_protection_levels.py::test_initialize": "70686d584e0e000e342b32eb2b505821e846d82eadb695ef65a8f3e81168fe39", -"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "0d88eddcb20880075fe872c857bb22fb09a1e779a2b527159e77c83143c74c4a", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "82e050d672d725010cc95bca01a0d8eff60664c87c2abe93c39a1ac26b9eb982", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "b88d04c206f26442a7e85c4e454cdeeb4dd6269ff6847f9b03e45453a00a7b7c", -"T3T1_cs_test_protection_levels.py::test_ping": "fcce4f574a3ee158b3d03dd9e2f643ef2018521ac120cf4bbaed1a8ce74bb4d5", -"T3T1_cs_test_protection_levels.py::test_sign_message": "81a27df186052493a17cdb622a4168fb1ae2aa6f1bc9aa1d5b04687184451d3c", -"T3T1_cs_test_protection_levels.py::test_signtx": "b79bdfb6c1ed32fce1f80be65f26ed63e99dda09cd90ebecd586084a91e0258f", -"T3T1_cs_test_protection_levels.py::test_unlocked": "43aa96efe8f9dd0a61fe9b112da7d7961e91204b1fcdf67fc5ebd244145fd0d3", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "af974d745fe38ebcf16215fb5debb7828f5297fc5fbb8d74c9edaa807631a2b1", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "f7e8dca79def3a360b848f01ba3cf5b66f04c06ce912b402edd71fd88edd2a08", -"T3T1_cs_test_sdcard.py::test_sd_format": "1c1ed02f51f8b1090267507e7c9caa3fa1fbb316b5f5b1b3df0c64845506c8ad", -"T3T1_cs_test_sdcard.py::test_sd_no_format": "966323b40e8590a2ea727edc4dbb38639d1ec86677ea0caa4bd4c23b97942fe4", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "9791f3d9d719e18409cb2019bc4732c23095bc648be5af3cfa94e238cafda09a", -"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_session.py::test_clear_session": "2d482f3af0153ebed989bfae5a47bb1c5094ce7e19e40a6d514e360ad1dc2eb7", -"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_session.py::test_derive_cardano_running_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_session.py::test_end_session": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_session.py::test_end_session_only_current": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_session.py::test_session_recycling": "b867033a86326b265e39430e9279dd5ab4a86e8a02934821cea72d6f57df6eac", -"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "08eead06ceea58891599b180233490b10391eabbca3192b4a95bc0cdd004b7b6", -"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "f2dd055d770f92f7872ec469b64a983f68f7c139daa4e2f9c08437244b12bf21", -"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "89a72f66f3e489f7747e31505da822fddb356db307d3f3cca6d37fbbd8b7f515", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "38e60009a69e573b8b754e3c2c1f11029407ce73a8df3fce32b9ab7ab8925eda", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "a00a11c9ce44813edff3d3c5dfde446cc5716a8e9e472cdbb1e6451ecb1a489b", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "043d9511cd993f3f35ee68b5e884b29f58895653a62e956861b58ce2ec7e52f0", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "746d3b6421546ad21f182725110389c9ab5c95a085be5aaffc23e5eac53d0bf1", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "0d88eddcb20880075fe872c857bb22fb09a1e779a2b527159e77c83143c74c4a", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "e6c7cb2d6504c089d436802917f542be8a9970589b7db4b6a83db6a4b0474c60", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0b851eaaf3b06c01195ae7bd78c2352e9ba0a530f08a72f3ed72472bb0d5f77d", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "fea5ad0b66b64cd5a85f999bdf7f921749831eab5dc35755a25d19949a414296", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c9f61cd6856c364cd280d778cbf65a28f61fe565a7e6f5627edea4b6ca6187e6", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "225d7ac01e06adb8ac83656219f219e8464f2cc727e229dde6725770f6065fcf", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a4ac6bb444830bf917cbc0b7f89724e3925f138855c542a5feef0a1cf3d18de8", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "afe318c7d4c4fd1d37e655615ec4518b134176c2b21dc2bba23741fc86367bce", -"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "207b08e6fedaca36ce60d2bfe2fbba550f5fcd1de622bfaa7628843f8347680c", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "3b04f0d531ae0d867794dbed01e374bbd8f2a3a254fdc06efab04720baafce3e", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b9a389bb159c7c3e678d106cc5b13dcc275e4eb17cee6a94dd18bc222cf86cc0", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "f4d5d96032d69b3e69f8cf70c33d81162ebc6440b0125c62dc698c158d933d8e", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "79b695c217a68c216aa54943277525c1670a93c20b8449aee6b4c967dd9cbb9c", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6acae79662bec8cb16abc60a64f5ba82b43b3b4aee288614738fe2db0a53aac1", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "80e5c6a4d4982c061a53505a6faf44ffec7a999d1487911b6e09b110d6290b85", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6c18f9a88628bf7e764374d42c259055a96a2e3349ff044e30e383464fd03fab", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "f881525327607a9a7e5a90f63d6d5eecb4b5964ba66c99ec143e8a1a365cdca8", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "e2c5112fb612c60c306d19730d55db412988e5f8193a4b40906e56289ab8c5dd", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "5b5daa22589a1c2d73edf8b1cf47deb70932bec988bd086188cbaa2d5d337a1c", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "46773971ea2a2f06d0fbc7b347f443cfa29c0de93f014673a2233cc91ca58ef5", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "1f39d160065a00854663f77f3cc128c702d9a8d8c69917ad8cc08c09e172edb6", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "05e0a12b13c934abd1c7cdde14be66c41244737b842d7fe9a99bbd43d54b5cd9", -"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "bffeb179d995eeca19ac8b8f5e2c590a62a7d41ccb40890cb43101009c8375f3", -"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "169293bedd99f00433a1d3f19a68ba531711105aaa8926d10522c301653c6684", -"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "6309878bdae0b483c995b45a41828f8bc6ff2c9876625874f97a6f7440c574d6", -"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "d3f6997d585eb2285fb03bc293bd25e04b6cc29d41eea33bdb46a7d48e086766", -"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a01c49fa7ecac5aaeb134e84c0428ca024b9966fe361d82b3577f133a02758be", -"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "719714623966225fb16a98d7f11ba43de9a2f478317283a600c8e16eb3fc684c", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "7bab9f7fe5e21ec37a2b56d7cde0b77b6f2adeef8e9e6c9b3a8a1e7ede270faa", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "280ee872df99689b250541aa8cffa839816a4feac081d3a94efc16b176ce6070", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "59bc2efdcb224011ef6b68af18e2c40517a3dc453ec0c3c4de04ddbed85ce6f0", -"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "000b1d8cf55f17072e9fd1463feef3a254b88d38d49e5ce39cbd96d1f2e20931", -"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "50e97b6daee4f5e255731468d0e0e811dcb94dfd8fef46e6668a014dc10b2e03", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "565acf768239c88014be5f11f420efe405894fe492902df20617398d6c11ff05", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "4691628455bd302703cd9b99dba8d243b43e97d5545951c516fbd36c03b89148", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "8ece49861660dcf5025044e6124cebf71cbb4e420d9ce47ee24f6458402047bb", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "a5d2819129e5653adf302e84dc854b3ebe11bafca3483c3bfca702370bdfbcbc", -"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "234296bebcd75f015d4dc038627d5e46f782ee48bf4518352c645c00340359b6", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "ab89cadb95aa2dbbdd859c77891d7376b85147bdf56a4e42be05019a3c8083be", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e61fed20971f9d3363224cd34e72efec3420c5a83c3074edab4a33c244dda3d0", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "2b264f6f3423bcefbf5b4b8249cfcd2200db06ca48f88554a7ad66f7f53f98de", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "ab89cadb95aa2dbbdd859c77891d7376b85147bdf56a4e42be05019a3c8083be", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e61fed20971f9d3363224cd34e72efec3420c5a83c3074edab4a33c244dda3d0", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "2b264f6f3423bcefbf5b4b8249cfcd2200db06ca48f88554a7ad66f7f53f98de", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "817923ffea77e056a6c2d5db222e8256b9cc28a10e444029703abbc16cad433e", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "f5abcf65372bce65b4d047b74398d140cd82b9edf9497d9fd50751cd3644f352", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7967a1b84bfac8fbf39506924de4fd1f8552c87bcf679d7ff4841f2a2382d1a1", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5063ab9522f26fbbb5a69c3eb710be837db8e7ec33d0c6e2e06f718c30d62d5f", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "7bfced53564a92196d3aef9153dc43c5031c58ed6b8e9431caebe549012d5d42", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "7bfced53564a92196d3aef9153dc43c5031c58ed6b8e9431caebe549012d5d42", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ee8af4b6d37407970da75a20bc770e4f611b6657e78d54a96e5b59b439837566", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "1e3db4d0ec2ff3a3fb53eef78aeb34d4ca682c0a53a6b0631aa31a0ab29975b8", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "01f8b1cd616fb5c34825730430cbb9c29aedd3d77dc7da9bb7058019936b16ce", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "48c823501d28513b9881671a4f278bbaab27a2a9ff899d8e13a3b03b8f93808b", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "48c823501d28513b9881671a4f278bbaab27a2a9ff899d8e13a3b03b8f93808b", -"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "36098c58f4b6b0e90abc5b4d9ba8297b67cc54e76a0316d880ade86c352c02dc", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "36098c58f4b6b0e90abc5b4d9ba8297b67cc54e76a0316d880ade86c352c02dc", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ce6b8d66e64740c2cf0e8e9c1d8ce82e5de7ab3921233538449f2ca98f9c6b1a", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b9faa78312e6121037848ac3f0fe1137c62e5041190e1e069f3f6b43d8d238cc", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "01dbb988a69cd12cb8ccd7064e475c42b7ad11fe4a03e8f4023fda16bbbc24ba", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "cb572df81e30276cf5a71b8660ee0b7592e4442c7d895993757969aebe3cb76d", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "4edf925676cb4281f667747c670df61f979817415d2deec973a5d1f92dd9d20c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "b0ce93f800b3c1d3438b1d18f58243323851d69f799e26c2e9d5f8f2acd876a8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "dddc885fe32ba573f49a7ff83cf7f6b7cbf47b6dd41ce324fdcfe0b1b63fcbaf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "e7fa0c775dca94de429c60600d2e7728ca9022932868c3b5c418e2ff05563bfd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "6c629696cd41c9e96659db4c9f0975faa49026994306c890d94f22b27231b7ef", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "5937ca08096d9a379a6c7d62a148cd4ce3cdead53eb6d77ef39024ad2edb87bb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "ef7ae6992ed29ce6e0e8416de0c0077b4dd4191ebea71196cfdecf1ca6c75f30", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "0ed99e7b4d98b8521ddf5443730c0cb17f5ac9e32b00101b80352af5734a9b90", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0a108300ac845befdb8ce63de55b854828c783a34a204075c41858f67d2a91bc", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "b54bbf769315d418251500ca9e0c5bca0ea10ad302a3d89fa309591ad5f19dc4", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "0b8fe4835d01f5918448d1c2439cb11024f34bdca3cf145f2b82f85c02ace883", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "73fb15b12afc783d2cbda9648101e314dc52d8176983ee403431ab3b4e8377d6", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "65e2823277ff32867b675d6ea8b9a6d53175674c93908d47cff510e0f4043d2f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2a5d489795775f77a793579933fe1cb47d2f72b69707fa08a3425270c9a890d8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f605dd1c1d0fbb8d286c9eb0162bd8dfe0bd15f3ba53f22e69fe35d37cbcf42d", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "1f6f9b6ce2c6a3b3c3ddbe2191d068db4f9a92c38093fce624056fd84cc4f456", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "e8c7e07d0e921be8ee1535a85afe55ef85901a3b5cc47e22174c2f932d579375", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "ecc8145348e518e6e58b65609ccdc9095711f848a8a05f477a20c26e9317c6c2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "4449021721d9476ae99b7ef9120299e9908e5532b5e7f674ff68bd7656b0171b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "b0ce93f800b3c1d3438b1d18f58243323851d69f799e26c2e9d5f8f2acd876a8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "dddc885fe32ba573f49a7ff83cf7f6b7cbf47b6dd41ce324fdcfe0b1b63fcbaf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "e7fa0c775dca94de429c60600d2e7728ca9022932868c3b5c418e2ff05563bfd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "6c629696cd41c9e96659db4c9f0975faa49026994306c890d94f22b27231b7ef", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "5937ca08096d9a379a6c7d62a148cd4ce3cdead53eb6d77ef39024ad2edb87bb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "ef7ae6992ed29ce6e0e8416de0c0077b4dd4191ebea71196cfdecf1ca6c75f30", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "0ed99e7b4d98b8521ddf5443730c0cb17f5ac9e32b00101b80352af5734a9b90", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "0a108300ac845befdb8ce63de55b854828c783a34a204075c41858f67d2a91bc", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "b54bbf769315d418251500ca9e0c5bca0ea10ad302a3d89fa309591ad5f19dc4", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "0b8fe4835d01f5918448d1c2439cb11024f34bdca3cf145f2b82f85c02ace883", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "73fb15b12afc783d2cbda9648101e314dc52d8176983ee403431ab3b4e8377d6", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "65e2823277ff32867b675d6ea8b9a6d53175674c93908d47cff510e0f4043d2f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2a5d489795775f77a793579933fe1cb47d2f72b69707fa08a3425270c9a890d8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f605dd1c1d0fbb8d286c9eb0162bd8dfe0bd15f3ba53f22e69fe35d37cbcf42d", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "1f6f9b6ce2c6a3b3c3ddbe2191d068db4f9a92c38093fce624056fd84cc4f456", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e8c7e07d0e921be8ee1535a85afe55ef85901a3b5cc47e22174c2f932d579375", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "ecc8145348e518e6e58b65609ccdc9095711f848a8a05f477a20c26e9317c6c2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4449021721d9476ae99b7ef9120299e9908e5532b5e7f674ff68bd7656b0171b", -"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "995b967e58b5fdcc29e85652cf57279ffc5348649c5aae086d3f66dcbfc20df5", -"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "ace8399e3fd05a1a6aebbd3553ff442173c9f3909e7d4d547492f776e1ec0102", -"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_bch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "cd46b86ad66a18e374a4ae6ca28838b09a300ea15c07aeb7ec073ea1bd180a02", -"T3T1_de_bitcoin-test_getaddress.py::test_btc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_crw": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_elements": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_grs": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "3e0cb6e562d680087f134c203c5db38986ce72933a574963332690d3afb3ad69", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "4f240107ae6a6297b46aaf28d42f39a2d2dafe301246c2e474d23795f1ddd6d4", -"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "7df0da8ef77b522ba3de7997dfbf5fec088f96fe4b0665d6ffa7dcfdcab053f3", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "b8fb66c5c13b9c7f9db3ab935d8314e5a08f002845d0c16b488b57b0d7b6a6ba", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "0f03fcc52a649eb4cbc7ccf9c32e2563eff40b588d2ace29b549405071da8773", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "2c54e145fd32a15e206d4c5af9d887a1ee125969fde6c80db8c81742df2200de", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "89d4a058c88e1a10f80fb234f3ab66c99b3f47465eac8cf752dcacc9f1a710d8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "98609b6bb17e5504a216fd8ddc592c7df77ce43d9b9dfb0dea6c6a1efcb212e3", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "9fd75a78453f68960e698f1f441496b8a81b9cc87b9ad80a09eda28289521aa9", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a75cb49e096527439a5042552bbd789a0abf65c6c55b34e190eb3146a9da012f", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "8bb0e93cd750baa3a3b1f29f3ff716a6d0666e438372e97ca677ce26522871a7", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "4cbf9f4541e5d069e4993a23789f5307126994c4fe45bc0726e992c06d1525b3", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "6bd8c098d0bc8aa9d22de60db1b93c6c5370dd343412280b9c9fed3e55766e16", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "d5d4a8e6651c79e67f2470d708e5e6c7049542eec5f29930bd439815b6942e8a", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "7ffe2fa340662b73cfa4e6ae2ec9ac30b63ebcb905016623301eb9e97b9cfedc", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "2421118b56dd5c3770660774df8894f04ea6a4c9cdc8a3f0d69f77b17841a5c3", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "eb7f3673f718dc3563bffe0b771cbc4aa1c1722d6b025dcd3bb05fd8c64afdbf", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "f6128514ed7ffdbe4d47240658cc242d51607deeb7acb46db09b7aaeac4a39b8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "e833f6f8607d0420a3c586e5ed70d4a73869f694eb935a0dfb76476233a6d2a0", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "c986bf5e923e5a969690a124505589be36d237c291cf470c414f2a6638b47749", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "849a4d6e8aa2d87c030d77985f915c5f7583e712fafe3e1e91c21dbd7be090dd", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "cf94e03392c31bbf3d3e336e90d6b63215fb576047ee8fa6a1f07a6f8c446f9c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "4bf70ae432998594e814b063e392ce9952daa7cfedc411ef1d56187f034d2acd", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "345bd819dca7f09367d355f905867f45f0fdf2292553081ed48536c42f3cccc1", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "7fe366d88a5a77be53d1952d4705cdc28db06605528aea7e90a8d911fc997d2c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "644ef41381f2b6da1446240a474c74ffe3bf59c476599a93879d2e66d822fd9d", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1e6c2ee1bbb56290a8a2bedeac17600e5a7ce5ddc7a81df129f65e14d069ce2f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1e6c2ee1bbb56290a8a2bedeac17600e5a7ce5ddc7a81df129f65e14d069ce2f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "d90593e75f436111851e8af1dc2c2100a16518600c6d6c8c461de5c71f092866", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "5ea89929221f7aa074001dc40cc346acfab795e0473de4de61dd90a7b217958b", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1f325fa1afc1056cadf6fc45f888d69d53d30a1af6cf933c7b96de3e2b6ab43e", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "c62bea1f5c9d777c4f5c4ab11b2f85126151332db5b4a020e12903468b289b86", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "29146fa3449c2975cf5be6bf3532980fa8c330521a9abe3aba84c8cf1b5417fe", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "750c3dca96fe30dee392239d49dfd27d38b6f8606f94bfa67369cd0417f068cc", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "715fe0fc3f1aadd5df8f453d228d44738b31ec39595f07379f7607ddeb26fd80", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "e111b18154f067695bfb47b5c7046cd5762132c79d461c8f678aeb748e7e157a", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "baf418827ac852043c2bdc8f63b27488324a317d30c745694291cf00e7268df1", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0f4519e64f6d4098aab8f0f39b978022f948dcf83bd20bc49c27a1357fff4c18", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "cef63b6f63e910b138ea9761e2b49d6fcd5d7800f13357f94452a091bd574d6e", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "1c22e671119ee81624428f8fe48ff9bb349beb96f939b435997d2efd31109d27", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "748c609529760c05f94c183ba5b4b8d23518f637036976413d69b910177c1b9d", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "fd5a1fb56bf32a0e26788953969cb227e4501f29af95f1721d946470534f3476", -"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "dddc885fe32ba573f49a7ff83cf7f6b7cbf47b6dd41ce324fdcfe0b1b63fcbaf", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "cd607ad0eb8a95c1b0e029ff66d31d63aed0bb28cf20083053ee5c39051cdc7e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "1accabad208e1d6d7ef13db6b01d0f15e1fe3aed54e6f911db0436499ad85335", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "de701ac7dd8727aad7b7d267ef90cc280f7ed485f8b7be91eb9c274d5e451302", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "ef04b2427489b099e20fb0072ed14be24d71f8c4b0e69d0cf0f5348834a2ff2c", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "0635dc81e4e8f847b32ea0c9ca5d03435a37b53539b145be107966177b4a6245", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "c6e65e0dedf811c860e34f01fdc5a18cf62128b416a6a26f58ae5472aaacbc4e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "06934817b3a65ee50a68c81d81757de12b56e72d3fd8878f54047049d37970a2", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "059b1859e95d74ee418dcd06b5836127315f3f18e45edc020aec0e723cc0a319", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "73fb15b12afc783d2cbda9648101e314dc52d8176983ee403431ab3b4e8377d6", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "d25b1ab410a3154aaf85dfc94d93f891cd1554f1bbcb0ff93b1f4f3cb521d50e", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_grs.py::test_legacy": "1c646aa927f89b85647594a4d0c07e01cbd264a7cb09560b63e6c89cfced5eeb", -"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "4d3f723a3bd46062432445da7d8045febf76b229ae23b4611361b857867478b6", -"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "205f54091ad2dad4473d09086b46f3e2701d3e9ef83055272e047e0c4c83bb23", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "46df110c19047d6421cf3c5a1eed17aeed4e7679f6d1cb604c6065191129823f", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "893c3b141bc2bb3137f6ef47fc9fd7364ba4b886613e35d076207b21a40c025e", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "68abe12467f22caf6a31920dd7081ace0deeff5a128c1a608551fefdf5097545", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "53e96ebdbd48bb91f5961d9a6ea3dd204343232ccb7a53b24599ab7efb6d55bc", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "1a968389159bd622dff3415766857f753e97d164ddbc8138d3003cbf759a55c3", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "ec8b33ac773218e7ea3b8f5a5c1cce91d8ea29cceec38e3cf5d1e6a5ae68adec", -"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "15c858baa54bba7e31ff7928ae897e734ceef0bee07f8ad72c1d8ab525d61530", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "4843e2303d469cbabc15a9cebc9ca17855217dc2622487b0b282ebddb4a4846a", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "1db35a2c69913afd92c0b619f53853726f62d8ea0ed8db433dd770cc6764a8f3", -"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "a5c7844343eab55b63180155caa0442c9a27ad226c38d8f75fc4b1039856e7bb", -"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "f5011e4aba5c97ab515306c1a58359b9bed78d35b594f3f3ee6c29c949554e94", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "11f491e0b347ca7936b5146c44018cc8427bf58ea34d6bb4cef411d9858ff64c", -"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "9bd224fa22ea9aa246d719bbcf45da7eed488800b17bf9ae2a7f69138856d53b", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f2d850075a7421261662d1c3cbfe774bc33c649b512891bb895294c580451d29", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "4fb5037fb852848b4762e5ec87430149c32ba2a7d8f08c57d73c7f16d56a42b1", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "dacd98d46cef25ee35931edd7a1e268b93523e9c910ff1ff6b4cfdf28fef8cc2", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "82f50f5c67e36d802b8fb6bdbb5abdbea0ccfbecae420c608eecad37e18258dd", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "59ee17f61bd39906118ce5a5b5fc8261bec2406cbee36b074254aa31847eacd0", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "bf88e8d37de838dcfe3425a969c0358b92ad662fa4229587822839bb170dc2ed", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "e3061e2c4bf5c359a5750e32993bdfcdf2a68a24460e59a0c04754a81cf95779", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "e595d5a8993ce0f08ecec52305fa1ae446bdbbb2c4450924abd933d38c907827", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "ca38c7155bd906152270a61039bf77b9bd414a78c541675bea6773e9932e111a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fab331caccf15dea0e2baf76ac7ca7f53100674caae2da6e8a1db486d80577e7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "2713a720a3de01702c95119e8a8a0afbc9c030e35fde02ac77a6e2b0b5280061", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "17987e0fb8a822b890b3376b1629fa8363cc5c5be5382e90ed4a5b935b77b447", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d31d922a2096f0ca0f7d0c71b02893e641fbaea220cbad4b2b580edff974e392", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "230c41f3c0b65d0e7ab5a5b11834aeac394980db3a54748757323f33c64a27d7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f410635ca493e405dec05706d28b4aab2a97ba55676368195fd25bbe36d0d003", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "33a82da6470e9987f1b47f2a0710286e689f901403d032938c26182b823decae", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "151f26eb200afe40ef5d46332ec81f585b4fc27639cf821f7975abaf37e0c5e9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "76c47d320b8308d52c6f543b11b72364702cb68d382dae2f5e78674a531d0c16", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "3ee1c01beae42f055c0198646f93b7bd830477efd4548e922fb866af73b0765d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "3308875622ce6685dc277669237ba5a60427a88e9babd916e5f679b38c857942", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "07e03930c5a9b0627e5e8ba68531bd98deaa37dbbf17ae77ad70feef2121a0c7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "9e834350692818d40dd04a006fdb5a6c63dda194e3becb88051d69f9654cef64", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "4793f14ea20c3d744f2fe02bef70ec6e76a33e02e99c202508ad4ddfcd997b2c", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "2549041ff2c9999ab6b20ef92aca49b8056e795a0cc4990c3af38abed867e079", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "21c6c43bf37aa8f9a1d372d98c1ac4e487ff06023a9c4e109fdfd63cea4cfa25", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "dac169ef455f07e9bcaf588d2baa5e0857f06e162b5b1eb12e52b7dd84de5611", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "fd1eb3d204264b190a07f9ddd460896fe641a0a73155e624ec7cd84a3bfe81ca", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "0f39d309c1eea1b313865824ea2196988d0b7f57c57e85d18471293f0ca2932e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "abb8bfcdeb912e11cc203ad79529634357505c12bb0d08f08238b29956bbdfb4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9962781ccfc7f4d06f79defdaa10f9f8aa806f275fc046a6b16d6a59e933b27a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "f5ca1aa57a0661c2c03e8746bd0085cf81304c9746bba31db802558b6186dec9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "8c783463ec1d65ff530c84207488d894fe4698d1db3ae8e49fa7b5ddd06406dc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "1a49153fabc7c85155893af263977aa4c85c31d2abd906edea3d99588c227935", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "1127a0a64f4eac6f7d294f9663c54a7830d1dc14a098b64c97ddec22723a6099", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "fe610efe772fd640a5f03ec30047e13d60130b42cbabec0389899342d2be15fe", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "9f2f73ecea21e26ae323ae4d46479c6618af46368941a2003df054e1ab8d5e0e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "ff426b3c0918cbdde09f324ad959c18108d9bb11f4e02cae5866f872f858c2e0", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "fe610efe772fd640a5f03ec30047e13d60130b42cbabec0389899342d2be15fe", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "fe610efe772fd640a5f03ec30047e13d60130b42cbabec0389899342d2be15fe", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "fe610efe772fd640a5f03ec30047e13d60130b42cbabec0389899342d2be15fe", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "c8450d6ee797b5cc14b5b80ef8ce9b9838febe7c5b2e451edd453b8e98af167f", -"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "d9d62cd5350e009ddafa6a1c0d3af5cfdfe28cd9b8da25ace3f0e48ac5a2ce3c", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "530ec0b0dd6f75e4e7e8c3c29867063ed583f2a4ae8f81fb4743b40596f680e6", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "6b17c1e6a4b6b52f317647a83a40f33777bc1c8e4c57d3342a91e862d931d266", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "cd808a708d9a125b53dbc2b5003eda1998a63f9e6f6be90c707369a7862de98f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "cd808a708d9a125b53dbc2b5003eda1998a63f9e6f6be90c707369a7862de98f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "733e4342d618d5e418bc3bc6bebb2eb87c3ee0407567c01de5befcf9d720a7c6", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "dfd9c66ba98621d0fca3f7f012ac1f56ec9a65dbba39f80f52527606bbec6b74", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "3fe1c53bb91f88bd6a56a713197bc5082c7c3d0c3c238ddbcedb84b7287a2b71", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "233c1af8da51c6451e1cc0df92174de06fd245f1a425a9c964c3bcf8c31cb368", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "2c08e6d5f4c5392995eae01219a701fb960d96b01d516a9b35a5492b362b039d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "93b85810cc48f181c5b87c056b99cc2ba08642b17b8bfc5e4140338ceec66346", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "93b85810cc48f181c5b87c056b99cc2ba08642b17b8bfc5e4140338ceec66346", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "e7ce6093c18b02689bda4ed85d7342360a562685c8cc0482f58eef8001bb9192", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "744fec27a243094ec8b55218a15f7fe848b00717668edeee491e99a250a8cb28", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "bfbf99113ff1df3a6a30a8742b3720a66e785717c010f79e976feeae400d74ec", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "bfbf99113ff1df3a6a30a8742b3720a66e785717c010f79e976feeae400d74ec", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "bbde9faf9ba5938b456024b0aefed28debffe744300caac0355c6e7bceaeb820", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "0861e235e4ba2b1b77cb93c23bbb95090e7cbfebf39a52d1b152c5f46982cf47", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "afc9b186b7c603d684330d82bd02238890fc8495fab7e9743217045e5c72652b", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "afc9b186b7c603d684330d82bd02238890fc8495fab7e9743217045e5c72652b", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "208e7db0b008753f60993d344bbc88fcf286ea5b80f888081ce8429b787c614c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "37cab831fe2807bf347f4687fefbe416d2da0375b55cca2d4e119634a8c91823", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "2470b7fcb34afbecc71082657a579085678dd94292bc7bc51c9450d657defe95", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "2470b7fcb34afbecc71082657a579085678dd94292bc7bc51c9450d657defe95", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "2a643e08833d2efac6e41fdcaf425cc55a3cb6545bdf103d8622eb0fbb30ae04", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "136b7495efec9af5a4ba41e2c13a1a834f406ce021676e7ebcf4fba20f5d82fc", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "0e87eddcb4edca9c565775f26c0dedd0b6e30d36dbaacffdc27488c04e8d6a84", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "bcd72da8a992bd0e038aed7788b0c6ef25f1130255ccdbe7282b4c12ed10860c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "3b9eb655a0378d2124abd3c34daa2c0ce59cab5f3f81251d539432d06c5603cd", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "5bd8bbdc7596628b9e8bfae6ad5f05241f8b9491df242c897157d58feb0b1798", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "5bd8bbdc7596628b9e8bfae6ad5f05241f8b9491df242c897157d58feb0b1798", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "57d712db03f0160917a21e6125d4b8152311e70359b355c773d303c212a4f2a3", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "b296d1e7997e029c8bae7a04fbfeaebaddb080e13c168b80dabb6f16033ec33c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "793e20898771f51e8556a6e96e065572874bd2b04e896b91ca4bde60bd92ef78", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "793e20898771f51e8556a6e96e065572874bd2b04e896b91ca4bde60bd92ef78", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "ad9b7ef3120fd31fc80984ad91ecc658569d1358bf4f367eb183d0e04cd4c745", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "2b4eb4e20bff4f965403d2e9e460e4606c0662be99e5ba85d8d6fb1ad3c36d94", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "98775adba31a027ba7c16505f04e566b679b4f8584397195fc3ba2e4adb51a7e", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "98775adba31a027ba7c16505f04e566b679b4f8584397195fc3ba2e4adb51a7e", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "d38c9fe1b7a718793636f776f4c322b28314a5c2c3ff1d12b5dbff7a232a021c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "1bff3837d8ffd82313581384ff561a3f02c7d840aac8c3d72988919140e0f7e6", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "84fa90175f075c1ac4b18f4f1813d7ce3881909d82c44487058f93ea0d03d65a", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "f9e6d3e52df9dca6d1da4ffc831fd270dd0337e2ab5086c5eb33b32359e5f526", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "863b988059cfdab8ba74aba8d1363b32bb3946d0d3ff5e0fecdc9dd91d277146", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "33480e1fd3e9f8a37f600a54ebd0757b2ba95d614b623712c90dd2227c5a5485", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "4601cd2b39bb82ebe7b0a6d1940ff11242e8f0d91e79c2a3e6e92ab2bd1fff8f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "87ae843db49632b85e8b2cc09d1801015c615299c59a9baf8b6d9438ff0ff757", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "93c1eb6142bb8e1503aa5981021fd8a57c73c8f9a9bfa0d4ff90c3ccf05f7242", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "97d449f19810f2d34202997c2aaa58353dfbf200cafc017dde26cb1ed8367482", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "e9e60109cf84517c814c683f70e302390c46e8f2a7f19ccfd52fbc74c6644947", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "c748bf97750c52aea4f9407c5dccd9528750b390b434dc116acf2e801c6e13c2", -"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "4002a35ccedc9f4a04c9a4865be30ebe3f5e5f718d361bbd4eb4c49e408f6e10", -"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "4002a35ccedc9f4a04c9a4865be30ebe3f5e5f718d361bbd4eb4c49e408f6e10", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "c7ae04d72a65b27da6f50dd006d0626c2d5f10caa91d8fcebb6fdf6ac93d264b", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "85c86aac79bfd16c12ce88108a9c017fc7fe576fbea916f7cbb66cc32a8804e0", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx.py::test_information": "429bcc7e7709429c7a6bd12d80e371099265b7ec71bc9a64fa1a158327e0c5b6", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "00c8e7e6293011e143bece9e53d74433d61585ab68a719848fef92878b56cd2a", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "8864ce03f995d0a51f026fd998f021e0ff47bf09be86a392ed3a73be342c340d", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "b726f8ecafe39011d7382c8f7e5e3f8b3aedd766a6097e4e021e2b5c632408fa", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "f11063a77ac0fa4b05610d3904e8101409621a8763e80962b36db3dfdd98e95b", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "c8803142ce88aabf58bb651dd433d5962a1f43e7527ba0e971e653f9d1e8cae4", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "f11063a77ac0fa4b05610d3904e8101409621a8763e80962b36db3dfdd98e95b", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "c8803142ce88aabf58bb651dd433d5962a1f43e7527ba0e971e653f9d1e8cae4", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "c0cb63f4c9cbf9374a27235fd599827056ee39dfdd2f59f8a50fbe2b044f5a0f", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "13d8d858b2752452336d5529878ff66ad899d7d76bd6faa252bbf03b29860414", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "00ce1f84a28f347ebc8bad4c0451e0ea60cc87ef1132d4b7a1c83354e6c1844d", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "ca97f1c7e24ae650625f027c68a956c0b700ba6b19554ebd93742ee23766ae92", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "e5218ac2b7e11356060069961d606eade9fcb6b259c4bb0a7461a8c623d7835c", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "78daf273220a62dd39dbc2eddbd846c8c139ce90e5357c3b4aad09f98a12249c", -"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "0e1121f8be00f038c125598d8c065ae7043e764ace5be27077535418d78f8921", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "55367453a5afe9db36a2361612f7b5870c4b00b706fb55fd200d2e5239a4f568", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "091b4fd079951260122e47348152e7ea8cf0788b769d978f1e0037824ca792f3", -"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "9a7b671a35c11cde2a8cb878f787e5091ff4f223bffb08cd56ed24c0a72b934b", -"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "d2f2a18cb313f35e4764d2a4a5bb36ff74ff1766c0f7b782cd8d0d211c413eea", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "f8aae9d1d32d6f320bd4c1046328f54c66675ceb0d95b77755220f55caf93529", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "a7cfe778ed26e53a1988e49c44a248288e9b2f65ff8b61e50e88830244a78486", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "9adc12f10b1c84d3708aad2ec9db3b8145db2ada1cb2bbafaa89983e74227ca8", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "ad9a3dff8237222efc6b03caa5502aae018b53684314c3ca6be917b4f580e1c2", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "4002a35ccedc9f4a04c9a4865be30ebe3f5e5f718d361bbd4eb4c49e408f6e10", -"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "9d298ffeb224a8caaa707253f0dd2d11ea65cbc78b2ab1bb33e8f1f07dae87f1", -"T3T1_de_bitcoin-test_signtx.py::test_two_two": "27e286200f05b7b00109e6dacdaf6a650ae46e458e71834d07633b6f39e4acd3", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "0e1121f8be00f038c125598d8c065ae7043e764ace5be27077535418d78f8921", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "43f7585058eb50cc0f7fba622675d4cad3d85c8e29a6c70faf682b7d27a55621", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "01a5b23322296c60f1fca29249737cf7143a95c0306ee6a1729788a116855b08", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "2916888d29ccd65b41a2e436fdbe713e707ed1ba6748e39a5b1224877569fc4f", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "0e1121f8be00f038c125598d8c065ae7043e764ace5be27077535418d78f8921", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "af17a89647ec84def2191e6afc03facd74c39dbdc472ca5faca99672b684eb9c", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6eeb0347d4b730d9aedaaa654114b59d2869ecb44d4ef92bf65f837b07b1e182", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "558d6047774a1e4ebed5354864feb4010af18d69e38566d3d39cfd3fb8b6ac9a", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "30faecad4838161ab7e101a893d8e5fd7e3010f884ee3fdfd4d99e2ba28eeb14", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "af17a89647ec84def2191e6afc03facd74c39dbdc472ca5faca99672b684eb9c", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "70acfee7ca86d28891358261b12445d4f1216dc1f324badbee6cd490d9ad39f3", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "24ad78a6133788c95c029c9440f9f5a7b07619c64e6ba8ffcb70acae1b423383", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "7e9d2d7f9a0be98b1fa02d565a50dd531e94d586b1431c5086c6bcce5e14edae", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "be1e21f68fe930aeb7fc95ce7274b15b2aeb13f2757770ad72c00a927c626b97", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "77ef03263c1d4701ff7bd521dcbe0c27b756c63f332fd043ac813611fa954b6e", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "51653d93d34db4ccd90df7e94087a79d200999b752b234cfd206c4f48b74fe60", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ff03e19b8faae41712f27f1ce627978f51a4912837c37d803f4b85baee0cb488", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "e0baf9d2fd45c3cf0bd5ce9e89fefec6f60ccbde97008636267b08974ea2616a", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "8c433dac2203c974c23ea5432713960387c9e9ee476117292be8a5f460d5ce45", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c23c14e339fb1defe88c22c9e52ed5120441afdbe53d8119ee67faab336030cd", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "96e5bc88a019df8982ab77c4d1d39ec4d7aa6a16522cc295430c32affbcdb03a", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "edca39892fb92c2e00b18c44b771f8a9f7a2bc86d6ce42ae46f635283a39d715", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "6481358a1ada327c0cdf3fc7c439b5dee543ef5cc3396f1e0abb0e9665ded509", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "27da0d44164db1ffbff240e414a72be2021730794332d2243b0c086a2939133f", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "6481358a1ada327c0cdf3fc7c439b5dee543ef5cc3396f1e0abb0e9665ded509", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "27da0d44164db1ffbff240e414a72be2021730794332d2243b0c086a2939133f", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "3ed6ffbdd0188eab05ac9c30a748b0b1211e839dcd97151acdc491ba8dc6935c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "e2142d488a44d9439c09c3ce206784f05f0b7bd288067cc55fff7fc57ce0f00b", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "522750baab261086f0e3ecbef3f3740bf9a7b3e0e5a8483fd04fa3c1e05ca07d", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b92c370bef37e54627f797fa01134d2944f199eb4a11aed3ba7cfda7aca46bf3", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "da523d5f80286971dc6c70b1c5886934627fa5dc9850416b9e2c4abd21361eee", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ca6372091d2e8dcf4769ed93333f463658fb7dbbeeb4c4f4b9c069ca95385bf3", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "7293c9079b5c204e0ad2819f087243d2417360909bc7435070da08a43c7de3af", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d80f75816d0d9ee831b099dcb812a02cae9505038283d4b737055bd9691029ac", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "9b48257a4fa68d01d086faddbad7483c5515a64bbe742073ecd4cf7292986c80", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "9b48257a4fa68d01d086faddbad7483c5515a64bbe742073ecd4cf7292986c80", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "9b48257a4fa68d01d086faddbad7483c5515a64bbe742073ecd4cf7292986c80", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9b48257a4fa68d01d086faddbad7483c5515a64bbe742073ecd4cf7292986c80", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "05029da12625613532de3148356a874462bd9d9776834757037c8548c017d446", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "05029da12625613532de3148356a874462bd9d9776834757037c8548c017d446", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "05029da12625613532de3148356a874462bd9d9776834757037c8548c017d446", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "05029da12625613532de3148356a874462bd9d9776834757037c8548c017d446", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "06871439cc6a1b01e0e457f03a725a6c37516cc00af57bc29ec2b998508e0cf3", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "c897d920bbc4353d9c32193a7713e0a1bb27d225d012c404f3eea02901854fcf", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "906af6f1db48a9fc28644bb5bd91e29b724d2754d6ab6a190ad1f509f6544fbb", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "906af6f1db48a9fc28644bb5bd91e29b724d2754d6ab6a190ad1f509f6544fbb", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "e9c4b64dea1e8e75a332c673ce00f585185405b24d217f0706a91be03f42110e", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "f090411605f08b50b514e078b6cc972be7992a35ab50a3f9822c6498ea07f4cf", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "dc7f8df0c99d9af78c76cb81fd5e526444aaa72a2c6b025cc95a5148668db9d7", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "e9c4b64dea1e8e75a332c673ce00f585185405b24d217f0706a91be03f42110e", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6be3fc0713a1edddae76fcd36bc1fc28abc61fca3eb50923808894ffc6efdeb1", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "ec1b0c41380c7d5d4598df23462d49e502042397d3687aa474d4b4a2aae304e7", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "f69110b5bb22317194afa380d3052d09a390710c86d64ddd91bb2dcaefe87704", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "478fada984fd36932ffee0ad5390f962145bd927d3506b3f5b64043beb82f3d3", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "8242a2e463f8b0ccd30f2f22990220004f2c549f89ee646d65ecdd2306cad906", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "fddda5973f61c87f552cc60e5db819121665c6e6e5d3c228bf111b58202810c0", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "22e9b353ecad375a523b08ff36fe7315768b26fde56feeeb43b0685242735c9f", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "9d5c74b94a2573b333a1bd69817c30695b5bbd4f4edc663be6d49285e0001a2f", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "cf94278b1ae8582542729c5be53c3545eb89901843c6b205ac82e460d80514ca", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "31ce60eb111f68237a402da1baa7ef01d5e6cb1c779cae527e588df8640037b4", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "852a21609a7a99609d618d4e1ec0b53a811f1451dd3923e5811ad37341c458ee", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4640450d3ab72a8c41d0849113eca80b44a532db5001bfeee0f9c902bdd54f2c", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "659126956fa1b5e1783038f8582cb252f6d964862ffc02bbef32b2f3dc963689", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "bb6da0aaadc43769ea9278a48722312a6ba987bcaedf7443c5999d46e183027d", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "38c6d8a663184ebf7816fd647dcab14332c8b3cce406b764548b76ae511192a0", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "73ca8af8e5b1704dd26da63d7e8d7f2662c4f96f72ec5fa8e42a51a78f5f2789", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d4e813bbd5991c2649df838d7ec9da54704291b40257f73f878b864e5cdf7f07", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "af17a89647ec84def2191e6afc03facd74c39dbdc472ca5faca99672b684eb9c", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "9f316f7ebd5913e097119688558fc302996779d3666c3b3bc33cafc445e7e63f", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "ed3cff707e5cbbb75687e293709518ace697c6e1e6115711b9d74727454980cd", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "2b61198a203dfd26b28dfa9e0fa7efa892751a2690df96cb8358da66cd2d0f78", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "69551053de1cb3c179caf02f7c65bc0c64ac957524bb1211cd87c9146d2ce206", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0fd43f4272cb90bb3a757bff00608f480426018f481a795b326d6eb8424a8158", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "d12f533c47fad15cb9475a891f1f97ed14206b5e24f54d8f4c529e50ce43b5cf", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "d56aa68a0003577a9f3a0813216e35a15c4bb370d3fd10ae5fde37e68e7539b3", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "e0c6109e30d3e462cb396452fb54d6980af49c768805babe1eb6398edd445fc7", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c25c46c078dab96936ce717873e186cafdb22d6041340d78d42d897f8c50d23d", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "03ac47c40083d572f4b95d89dadf3fd624e589ed68d44edc3dcad4d146ea4680", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "66a6845bba5d93610b3870520c7e97b66fd696bbd24979127fbf7dc765d0f56c", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "c06dabd67e039e3843cd9dfb6dfedd435746c9b95b5d111a58f9df6bedf86d11", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "844bccd54fac327dd13e026a18bb600616252ab68a59444a5c3d27641c16434e", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "7e8ebafd8bb9709228ac28c24f3c485bac5c6afb39fb0fed8a4a4316c2040fe9", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "1d53794b122f67c01f0c2904881cb7f77d9e0735869d3eb4a0f1c99cbe021bfc", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "cf863cfd7659e72c66c577c3162cbdb2e9f3db15394ac77b6e17ae3678c441d9", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "b80cf2b9da5fac3cbe1aa80bc622a51c49b874b2341aeee974adbf11b2901193", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "dedcde7dbebc42cfdfb3a4b7570afd3c99f562602486c1e03be04e5a352e7aa3", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "427a43aa9d9b94e517fb18b55d3b8e8416096419414efe103406f918feef0c5a", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "906025537d91c3258ac296ed525fcc2e562629fb5bc5741ff2d5833c636b5645", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "8f6672415ad81565653d53d7da1edefe865c1086b0c3efed0fdb9e0691b0504e", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "b7460d1b2cd995c20493eb6ba8aeaf3dbbcb8f29803234de4a6331d0b96c5ebb", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "bdfb64558bcd8594c3efe1189bdbc6179723f324d3eaac30ab4fccb7a5b2e438", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "62c921fcb85024b1d6853bc44ff42e5d3ed38a41ffa5324c50654a02228b86fa", -"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "e47e2ab79557c91a6f436135e3b690499f061d548c66679ca1bba6d0e300251a", -"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c31f4ced14b2eb9ca016469b07b8231da4e8e5ad176756bb632de3fbdfc601a3", -"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "4d485faf39dd856c8fab18c8b8cc7a6d09cc6a868825a8e37f00fe94f7d56dbe", -"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "52aa41da1e12caf36b21c4239949c1f96dce8bb1d486d8cdea3b91aff0278e3e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a9a460e8984643404bde3dc704a99e63d391495d72b871cd5dbbb741755eead3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "6177ee95bb0659b1e92a6df537b17a70a2bff70b7cbd1c0f6226f83e6757217c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "9701348b37601e18a2e2f20a0a00422802e1612bc472b5c56b84196208a74ef0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "0c85aa32975794fee5e8a793029e515f6204ec32f89df4e57fa73d515587d15c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4acb2edd4c511756f85b4715ed7a20de8d182ba3d0c062d5c7be8444ecb4d58b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "1d27c4449359f1439734f51c2461abed6c86c83c38e66f959fb1d3c5b9e19f5a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "f9154cddb956ba42e9fabf8a4cb0231c57c71a167e5b0a24f45aa9bc0b4c2d73", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "8b7056b91136225b0deb4f71a88a7ef689d8d8918404b3b7ca52192e812bd087", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "1fd0ae21b6da6342efc148ee03c52de1aa2bc30f31978e388bfe1b9218c23761", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "85ec0d80879f729491b71e4755e43d27ba4f9d488de97a04a26826bf261d5433", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "d6dd72b12dfac649702b46be5a7ca534a48741335be0ebcdca178f2129c2c072", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a56446f875414eecd3c45b8bd8bd4dff3a3911b926bc9c5a4729fa0ac60bea12", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d598ce7692e2a57fd0ef5256b6fe49815138ae68ca12fa06e964727f4f4595e6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "784d0f4536c09841be288a3c4e9be038de61f73e37f32d67e7728edbfac44889", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "e582c182bad226634d9c7daf5b57fe2a3eb4fcc916830955982395a1be33259d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "b54f0811e6eacee7951486d17ad29cd3f6ac33a4c9645e95e5ba01311ab43171", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "e7d630e80fdc8bb52068bbcc76c20808b897517b98dc860e279dba9e73b5e9b0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "5e2a1213383df56db327f21d82dc03f47f5021512c1cfdb95e6b3192e60302b8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "298b776849348b4ddd9894fc302a83f7278820cf5c9a94ff98b6f0caf5c19a21", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "81256dc4ded66f70f01a9ebbcf5e08c69e33aef87accdfc8c02d04c0f3feb274", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "d8c2005137e93e14e9133bccdc442bb833f5b60b9fb3a6563d176479bb893a66", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1efac2c0b0d120e0bb9f5b88e1375900139d7cdebb1dde3c7285aa49a510aae7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "c82e738218aa5c5624c9ea6933e1de7d9c8a61824262b177022eb71927911bea", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "c03b200d6729b116b481870b4d2c637301d7d585767ffb46f5ed17c832c26d71", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "21111e551fd76229d398a3832e28fab821141526fefe0eaa0a4ea804c0f73510", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b4c92a6c65b9094aa5717507d753222cf7e87b81a5e31a19817b47eb7f8bd834", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "97e37fe0c777d7dbbe996e921e665e0dd37d68aa129b2540971197f05ffaa9dd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "9eade678f19fe3b2748d8be452beee85bb4f1a59840ee0fb5ad4d73a4b08f4f3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "43c822a699071099b86a4c7020aa4a56ae218107ff8ba3c154c23fd89a4e4260", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "99b90e1040d0a9bf9f84ff001fa5fecb37351f0a1140c69646d5c33c94662704", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8e2220dafcff8ab99f58c1023ead047d563b2e9d09fe52189d13a42605dc88cd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "94582c038a63f8bad898cb9136da4f82dbbbadb17deed289ca185a62ad8c0ee6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e4d46f4375d9ef7307240dbae8f9592a21dc124d74d4a3666b08feb4f8ba33e1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "087570083aa5379e5c3a1cc614ac810eed1e069e2b77a43b555f92aeb5fc1f99", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "dab7c33ac89190a1d45c4c1573400f934fbd22e766f24b062d2d1ddbd1339a5b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "02455d6f012775827d359339c3b22d0d3281617c124bb7ad0cce00362e6b2d1f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "6bd4a89be372cbbd64b6bd5229f183918983bc6caf96510bcf25078a6aca371d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "c10660a34ccfafe4a16e2f2da2d630652700a08f984931311140413ff5562d17", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "ea6ed84819d780c5815fb0af5c92557d528301f227d3719801d5fc98c94e59a7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2f9c276dc5ab38a4f675ce85b4a82ea87c45973c9e5e23edfe1e8d5e306115d4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "af2568102f76a59b502ce09a487d77f5d3ad4008d3596bdc3b51a72d1c26cfd0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "4f98ffe683bff5ac5030963dea41ef30972dd7aee0e6c1c835973465af852654", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "67c6efbe1e4839ca6e49b0d9c47021f95b1d22489e0465e488e84bca9d7c1275", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "23d02102ea7f779a4b64a11e0c5b4c6b45324c959ac6a006604842799276d2d8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "0876f0bd6d0bcb06d0c1ab94935e9dd293eb3fea47d4c8ba8a1d56b47297f710", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d56313d25ed0d40eedc5572e852924d1c675bdc2b92e34876b24a1b203aa5805", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "8767ba6dffde4687a4adf5f0287fcbd5f137e9585d00f5b39d57c5fabb8ddaa6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "7e1f356f077ea7f3fc25ab966b799ca57fff1f2ad2b22ce1e41044f38001fe37", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "831fd11172c210746c667ce32ac7b26a4ed239353bfeb67f9443a15f7baec502", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "6809d36b360b71991d1355cd8481a02b215f4fa255b5092db707556787c3c3c8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9bb3fdf3a117af20d5528d8d27ee3032be6fceb03e6ad2ccaee1fa1b494764ac", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "3c402922b947c3d0926229ffe3acef2c451c176cf29301a6269e86aa7e6770b6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "0fc5685c106c8a478719bcd4b1d927d20f85bd06009f560eaa1e034194ecb2bc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cfead0e4db2749c6258474f74a467ba09ed18361af939d5ef58b8248c1e2fe6a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "024d8e190b38bf650a5d92080d1d3519850f13a08f073ccedaab69d7f2c10d35", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "428808082f6d24090c6f8a3efe239841c54bb85b386d4f3bdc11ac7b614bf73c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "64cfd03be3aa04faa3bfe2a2aee8ec1ae4de60a059408b66174c1a48b8a25975", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "8f3b003bd7de924bdcc51ee6ab85701eaed33b9df322c85300e930c1b2929313", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "3f13735f41f7e14e9bcef5a1026c9edafa392e2d9c99053fcd7a5a05d7b1dd8b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "5c2d9daad4ea37711013047c93708e78c0f892adc9ac7e87ed33677362f0c7c6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "7ecd3cf52fca220f9c4a98c336e35c872d58e4d2e425ed7c232afed37adaef57", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "101ed11bea5e4fa69cb8b434438895ebb73bb88876f9b223dc245d0863486077", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "1cbdb2ad82cc2fa615e989a0849a09e83923e2e5f9a070c4b2dc85f87c055bb5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "517e7399c4855bc10fb17cdb73fc922a429723ad54e18b5ef962a09b64c65016", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "db7e3b1eac4ad51c4f8cc2a4c844403495e696281392b67fb0f7e724c0a66acb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "ed3886bd75dc36bbb54f711f610cf45672e251fc1329d9c8748665af8e1a66af", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "8a83b55b1fe2e6f6707ea488a6895b93e055f13bd1e64796cbe52d3144f2b405", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "9ed075133f5d109bbb89908c64699444fa25abfb20cc4be892d9658d3b9d9162", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "171ae55e26d822ee1479aba3a2abdf143815d7f7e604215f47994cadbdb9475f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "d306bd3134603bbc633ef93625fd773f9ddd3163f3cdf26906344e657ef57129", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "d9a30b0f385ebd454397f2cca549940ea9dd1e4fe1fb7ca56a196bd76fd169e2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "50a1bf314c21e1d53bfbd9094b478cdddc60aa2f3b7ed516e393af732611c639", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "1bb196b9b23a07bc1c00a8fb5bfb67e192e1db66df1521e0c8960c12215da695", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "ee78cada580a0ad6b31f6facdc603b977ee1f68dcbb5bed680349122ca95b2fe", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "d9f5da34ac1b990747680307f25556ae414df304135b1f0802290649fe60f0d9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "56e1da752af5d525510b636478b3b7ab976d48511032d28fd59c483db34d17a6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "126d139414bfbe4f7eb2e4afec97c3bdd32afab139604cab156454725203d869", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "e13f811e99f673c94f3e93f05bd18ae92cf11b68e6f04cddc3a9a092c4047f59", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "06f085e7e4dcd62886a47b7b6e44414d995e16742322d50dab253b45535b12fb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a4e15bd4c19c31bc5e5a2e0438cf2fcf7fcb7819362298553a6456ab429de49e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "797bf39c04f975878203e89dfe9dd2ec366a125833fdc0ad79b7e1405f018a4f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b6d8dc75d9f90f867f8ef027d27e822f20725186d157f754bf5f6320ab7ee5d2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "c6139e3b3bd506503ebd857d2ba9fb6736e07d67d8005511a369309bbc9e41dd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2ab9cec130f72706670a9f5f7b3641d02b72439a8b6a61f2db2d159a25f5e259", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "f63bf7102a17e4adbe041f89b950724ec219a51ca5a62dd0c605f744d50fa536", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "41c6c168ae353b4f71fedafd5f422b2ac12c6f88d69046948d6cc45cf94bcc86", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "86b54c2867abbe248cc9941b7701c1a2d3758bce46d9142f089f379ad919c951", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9346da0d3846cfe1d805a95da3fd6e20b271c560b00afeafdd536a2ffdfeec54", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "9afe96c69f568d14112806832dc43ddac4385fbf0ca0a30cd4b5d9019ea3f549", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "a8111288b9f37360b978d82e8f26f3be95c6c0595a5a3b0d60ca81af570d6761", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6bdaca6bc7d2daae14dab3d2e24cc8525ae43c77eebcdb98b8cc8b5be3395423", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "316355393b57eed936ae96a8acc8c6d5db91b129cf9564c8a6c0e32a76b1a441", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "538d2640aa248c2649bcce51d4bd3b7b98377ac470b5e25915b28fd63c9d1c20", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "577f03b473e7a8d2322f78e1b1f27d7c6a3f3183c00e1bc3b4102ba8bd4a2616", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "3f3ae0f4d88ceb4054393bcc20f0dc88c358619ddbc42d1a89092d7cfe60b901", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "b6c802ba3f6d0e5c188ab2b0daa36a8908a1431882036b4b5d7bd9d10d332a21", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "1b117b70addaeec3fa774423925b0ee4da062cf52c539b69b588f5c97291ac16", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "b922f5939de7cf0beb158e6dd7bbd7074b5cb6cb6f4a59ee4bcd7de66f99441d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "6acb0f468cbfebe39d7e4c8049785a1ac777249dd099d8f7d355de4def4a6c02", -"T3T1_de_cardano-test_derivations.py::test_bad_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "fdac3282ecc668823ab518fcfd6b69901b0aaa481424699d67b6242aaf3ff460", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0f4ddc2349296774e06af4eb6233c0dbe5712414b88b610d004dcd6fe9d35e07", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "8e02b58544c7868961073291cd41301c81cd3af09a146a02f64e82cb0059b87b", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "eb059c83d4ae2f63e408762dea554814c88f59bdbc5367625e6ed8af1556f39d", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "800c7b8ef70e04f3dbfcc8e0d0339012eff8fe68f68f6d62519bff64023db62c", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "a9987bba55d53edb57c62ecfec9b553e4e9c7e6293865c7b3ebddc4af8a85478", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "638c808b22f1991757ad610f951db2cd89f4548bb2f234e8c2a6b6c4f7be2201", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "bc2ef0ddd1b4570d2499ef19c690767203a947c66e3b92b0a00fa32e7502c258", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "c2517e5ec2b182f45280bcdee909d122861db9a883f94add9cdcca2e4bb63521", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "d8dc651267c20e11df60cc53bc10a5e99a4c90b5e474a9aa55f81a940f5ff3aa", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "e424d231d7f14c2f42398809e90d6e70a5d794539e9cd03b06787fd57484552e", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "d6829a1d4c4fa80f710df093bba8b370f5e143aaeb30b615f0d06d6c8112342a", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "b405ec6c11567b04b495097e28472918857ce75f14095c48c2b4caaed7257f74", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "18fe1e4d9bfb817f9fccdc70ec46ad4633cd8171cc326fcd47700bc32dc9c1b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "33981188d82338d760ac076844e2a865653a3a4e306cb585eec650ffde9b11eb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "c2498e9d19bee056b6602582f12b10a9ca308cc0cab979aea3e287dde1aff25a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "7240349bd02c6ef5446ffec284700ed47b8fed6344507746ee0d0e82921fa442", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9af2676c6e90983dc85be7916b57fe7d03d0a4f5c66d3076ed73409b05df9016", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7060df4c3dff0b3aa74d286f15b0e6ac38f41c6918ce5e4931be51371271a4e7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "2f77b11011e26f6e42eff5cd27c061b38a73ca3ad2663243e9730fb80064d6b0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "2776809307592be512a38a776a781614d5287b94c5922a74ed67e4288b6b78d0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "6fc60616e11240e15425344106554c92ea976b2ac81f8185643e0557cf4a0afe", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "36e92d0c101ef4d00df83b815e6f56b1724d9726c13d91208003234b6b40c331", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "8528643812405045bcfbc573a65dcfa8d18c3770695f6e8d960882924ee9247c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "2aa815b6abc134407c607ac11224113db210f48ba9a6a8e095c26c0ed20d74c9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "2aa815b6abc134407c607ac11224113db210f48ba9a6a8e095c26c0ed20d74c9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2b93de46325b6997f9ce1bc3400e14e94717d6eac9fa5511328e1f90ada87524", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "10a0a1fb43a31b1918e752b2d2ca334c9a0e511fe27ac48c1ad71d5578ff0fe9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a185e8dcfb09b8d225f004ecbcd90186fcf2d6d77d1438837ee946dd0f862b62", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "3972c03c6485341bb7866de70bdbb316029564a7782698f2f65ddddf812737f9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "5d03d4b47c466ed2a5dae62af5a1b8dd09369fe089ca078de1548af8d486e437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "ee297e644f81f9e5b33246182d6b8f8572fb3169e61912d948b254e5087ac6bf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "04279e08d950c70c9a55904848db5f883d766b2b08a470bad49a5336847c138b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "4b7fcbe0c1530c523fe55714ad667b0a648ca5781d6664141355c6eda19f887d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "059dda2a14904b2832fa5626d361f01b237cf7bee40289ba3c462d8dee933966", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "5d03d4b47c466ed2a5dae62af5a1b8dd09369fe089ca078de1548af8d486e437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "ee297e644f81f9e5b33246182d6b8f8572fb3169e61912d948b254e5087ac6bf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3c382845367aa147a4d90afdc4b14b13bd4da5af16dbdfe84404365f8e630018", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "cf5056454a0dfb65e070385dd994da538a01026aaaff3e9e69d67f412b02061e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "a7ee98822eaac7734c9ad53f79322742ca28e2511548504bdfb63894517ecb66", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "942650566008c7d46eb5c7518ad442cc835ef7d65bd7ce6df2a9ae56f7463100", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "c4e8609b256aa6f55bd2dd7098dd17e07531003f1734c840e55e5046440ba75a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4836eb40df0b139fc80ac399a4804fe763136f0e39327f445b01bf76f9978ad2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "009d7a7022783c6f9ca57590b600dfba0c9866cc4c41fb060982b7d596240ef3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "01b223c282023c04fd629dad63e208c3a46084ee4e15c9aa12b68624e594c8a3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "ee90fafa2e12451dd20ec5222d97a112e85ee1b646df2946f6ea18dcb690054a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "674596693cf09fbd7e8b522aec68c274cfee25c69f19ed8d7a19314f535b5c43", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c34993af1128d59a0f0b6d0f6436d369fa664b33cf7d5d14650fe1f6351c6ff8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "73257be392caef581ab9751f11abe4024b0f916923882a9f8636bafd2ce55735", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "08077765bc342cb8823713756839abc4630fbff6adcac32f9c865ae94e5132b4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "9a2f3bf7378206fd4e9e4c688f5ffd3b3842b4cd8bdfbe4a6658dc0a90cd253c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "91cc25f107d378ffb348c061c82f9d31f0d6b323385e2f86e7ccc85cf6f7c8f7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "64d7a65b8a26534f91cf2fbdbca7eeca6a1dbd1863429cba4e8c9e3c105d237e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "63d20447c2c925c484c197bbb7fb5b8e5f36b8e2f01e89c1f025a6652e9e72c2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "c765f8c93a2cbc080e7ea7b55d70c622350ac0b112d558303787b24c979bf25e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "274166df4a0c39664700537a696a4b6d8c7ed2883435905871f6d6aa327574a4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "4cee42a6f3389d7e8df6ec935a66c9d2a7b6b16d59fc27c38e2d3282298b5db9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "d0e6b7e8c68ca4c69ae5b046fb33fe63cf927a0a4b242b9ae9b12dd2b6404638", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "db5956ca400fca3499ff1a2debb5ba6463a289e073ae4607dc30019d887c79cd", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "1c5464a8e0f30da32bb3b70437ac580a86c1ab061b2f70e510f6d5232430f908", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "9a742712806dcf98e84aca1c4bfb7a100718417b0ecb1bbdd81f5b506ae01ab6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f99c87f42cfb75cd00f41f7e43a8c26823caeab9c45c05d9069c96608bbf2b18", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "bcd5261e63729faec6e5c58b6748fa785478ecad43c4cecd91dc57a5dd5e9472", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "12c532bc76ac57539b2cc84cf1e85acf970395b7342c456c949bfb2837bcbe80", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "762a0ffcba2848410fe24c4624d851eb2bd7e68036b04a583682d680a2a4d478", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0470455edbfef27d240f01548c228e4b48281ff7d597278a5a14a8d821fa8271", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "b7228ce69af031793afaef67cc3a47e675aac0b8f6a290629ee19148f246a55b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "b60cf233e3a8961010a945891691328388af3af108170a62aae674824c48dd2c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "9b860a29f521dcf7a383ca3aca9aa452475ca79691a328791212ad94685084bb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "89a7770465dba08a92fe6db8ec31a968d50993e1bb26e9811599f57f6e58286b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "80dd1e69df6dcceaf51433c4fa0c5217e0e422da879154889e3701f1bf76426d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "9e48b3167fcd694b2d144f8a0b66e77b7c62698843353b8c390cc105808e09dc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a1be51864a32ddb44bfd62ead437e0b2729752b5ac46b0ffcd67cf6484c693be", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "c7c7d09877f8c6e24fc1f92f423517e219a4532ed68cfd8242fd2903cb5873ff", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5a341c7c55a19ecf919130a6cbb815f2dfcfed24077e3ff9439240af04773270", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5ebe7f5935ddb8eea765feceaf96332cecc2064557a7db2fc30bdb5edb681695", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "055d1cef6206103046e620821ebedebbc1e24afe2a9d4a4313dc524c632d689c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "1a9967c02fd8e5f345a8e624c701f3cc7067bad95fa4c28ad6d670b1f15238a9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "23e04958dc8a78e52402bb105be0a43b6fabea8fa50e2883facdbbe52854c2cc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "c9df6a29e0d7390fbec30b5ae5066f32135d38ad1211c940b0ffc7e3eecbd0e2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "c8d683ba132725cde6f85a4437cb8809a90d16913f1a46251c724de05321a475", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f5dfc6301c62281a895787758f6d79a3aee04743ad5ef3cedaf0c6bdc4260f82", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "9a707cc13b1c67bbde53bc3b63cc5fb6980fdfd352b65edd5b0cec074885d595", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4d240cd8f0da058ecb5b068b9bbd6e3c975d87310e1efb883ee966557f279866", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1032ba505ae4dc51e2e12a30ffa77de43667d33f73bd3d8d51667c54340527df", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "2a0e6b87e76e99e24dfbb8d2dec6495e9b377435fe76edcda3f66358ae9d035b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0d5b27c7a78116eb7275ce32ab98598dfda196ab4ea8a4a4f90d6ac44c30efae", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "257196a868ab855bde834a0a718be38a81c1f7623854e0e06102cba4201af40c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b7d0b1323805017a925045c1f2d031fa962903124317488828fc7ba389fd8f1e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b7d0b1323805017a925045c1f2d031fa962903124317488828fc7ba389fd8f1e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "e2b42a5467ad81c2690579e9a0f593220466dc4f28130f608503db41acf875c8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "93f5907b4e37e76b925bcc09ef2bdca082ce1bce7d326574cfe3fa417b3415eb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "93f5907b4e37e76b925bcc09ef2bdca082ce1bce7d326574cfe3fa417b3415eb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f46bc62f674855b6fc85bfd53bd49b07a2c2611cb93d9da26a9278c2123338f7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "4b8ac4d1be9785c6574ca8ae1b31f2a7d92e35544a837be33d9a75285a082e62", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e23a89a9c82cde79991d4a9bf4c51c82015dd6aa491454d394bb0ab9f179dc86", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "998486bad697d50070f4d1a01168a475cc1b5720b39febd250aae528603e9d4d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "ad3556c3dc50b20e30ba78d20f58857181d5021385a73c7fcd4a4fbe7034072b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "90e3df1a58c444c2ef2a30f177ee2465e47f565256b300813a80aed7d8f78592", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a0a84f34443465ff931402e4df248ee2a6b13691972ad82a74b6a6218ab78686", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "811facbbdf018fbb3d16506d74b893c983677c54eff656ed247a896f7934d9ce", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "12518a2266c2836ae4f9e8d14c05819ef9dcff1780134edce3fcf500293a6854", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "91df52348c0e4c6cefe6921dab6dac8f22d1a7edf22a0d121475bb3de9e073be", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "18fe1e4d9bfb817f9fccdc70ec46ad4633cd8171cc326fcd47700bc32dc9c1b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "2f77b11011e26f6e42eff5cd27c061b38a73ca3ad2663243e9730fb80064d6b0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f1bd8844c7148d64320a786f6857199064f0d107b0bc5c62cd3a9708ae5ececa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "f4658394005914a1901831fe48fd8d4f8842b62bb8f4bca1e99e646b5204ed44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "f4658394005914a1901831fe48fd8d4f8842b62bb8f4bca1e99e646b5204ed44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "0cc97d589a31be0dddb49022c7d9d49f66f94624398470a405d2d378df1a2316", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "437014fcac0829a54bf6e0676f3cccc3104350f285fdb0269a10e50fc8fba705", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "a9755fa07bb51caaa0d0d81ae9ae35dc50bc7925f6ce41b7b307d0ad16b889b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "c5e56460616b7d9eb7c02da4b68d310e5f88ad4a0286c9f6631156cefee82cac", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b7cb53ac20cc18e2b2d57f0c12ddeb8fb4045128e0e02ff14bfb5a5ba288b257", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "ca110e02505c72fa658592aeb1aec4231b540df4cb38fedf7722e66bb6f991d8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "5f42fda5332e19809b41583fd30e5252a25e5fc2f3aad6c95a776e864102aa80", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "4feb47566e07d3d26f774b904275e5220708283a800b407c78f029490d38b185", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "4feb47566e07d3d26f774b904275e5220708283a800b407c78f029490d38b185", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "4feb47566e07d3d26f774b904275e5220708283a800b407c78f029490d38b185", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "4feb47566e07d3d26f774b904275e5220708283a800b407c78f029490d38b185", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b7cb53ac20cc18e2b2d57f0c12ddeb8fb4045128e0e02ff14bfb5a5ba288b257", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "ce51ce71a838dc3a7647176a87cca80fb49da6b4aea3264629ff90d728ea1da2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "260d9a3bbbe897bd3f72c877c8fd3630bc795460957c3f9d395ef15d867c5ff6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7183a94e8d15be72e55365cdf589c6cfc38cde04f65ff1cd9c642e51da202e3b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "54352111e7d9850a59196dc19a4e5330b7edb702dbc67a65548cbf18ec391669", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "fdf071c3cf08a57af10fce8b790609a420444029fdb414c91b20826275ee01e6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "94eaee2636371a62dff83bdf88c572799682d4fe99d7430937d4c104a790bda4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "4a36501e68c896f66ae7437f5b04e495643db2012dc5cfb009630c226bd244f3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "ed7f7724d7509fffe98dc69c9579f2d5bf510f6b6c12aca2c6839718b37dd121", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "50377c19d36117c19150228f482a8ef28855d8c803c84ebafb3200cf0e0b9221", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "d5bcde7aa81627adb98fcdb62b3e94bef0f9c10b4b5b5648a623748d858a16a2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "3bf35c0ee79e5630d0b2c10ace7c24416410c99d94cd7d171c7dc3b3c94f9fb5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "f4658394005914a1901831fe48fd8d4f8842b62bb8f4bca1e99e646b5204ed44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4088c79b36cd48d05ba6380dc60ca0d391ca7333203ca6f4c7275f03a6b0542d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "e7072841907151a96d971c723005b0a9e755f77d764b97d55a72001042a187d4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5636fe85221b448c47d177334ab6b853bee370eaa93deeba9138cbf8dd959437", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "636de19aabdd3e2f4f15d6bf5b2bf1dd0315922e77c8f5b1279b95f4200b53f2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "5b4cc2abdb622f737846a219d03558a40fba17992c7a76e4111954adce7f6a8d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "3b25f3a11c3f3ea178766baed22dc781d0b443347dbf4f4f1bfc98fb01aa6b57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0e105a27545d6d7f7faccf36b41eee1df791d0c4292270485fc6cb7dd1eb8a81", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "e649c73b3304fd099ecd63f48d8ba830e15f80dea560c8f37dca687a6df0c98a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "cae4343cd7ab23d2999364f2a7db109d30321d211bb148fb53f0a481fd37c739", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "28b00439e7bd5328916aa99257298de4206f3aef6c6bc53e0769662bfdb7fb1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "b37f297c4cb0dfdc4e51d833f714b59a5a930ac4453db2b8396cf31923e66585", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "6fe1542158d772b6fba6afe0710db9f3ed24686a61ee640befedc1141cea8ef4", -"T3T1_de_ethereum-test_definitions.py::test_builtin": "0aaa9b5b9033a511be0e29bec6357bf5260540f55374e770642690fd6c184413", -"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "dc6b2544cb81fc03f8073dd3e627cba9423cbc63cc0aa0e60488d7061704b876", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "7906e32e5a687314109f34153ae3955d3da9b2fb21e56a1cfa2cd1942a9036b4", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "b1e902fbfee86aeff47c106b95c6a8957df07fd8629ea1a490261f0c7e9373b2", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "0aad9e5253eb7b407185e9f178ff1c360e071535b48f046d7ff8802064ce25e4", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "ab7b8b568e539f0170b4736d2625c17e13722b71955c676407dbc8c721e4a736", -"T3T1_de_ethereum-test_definitions.py::test_external_token": "36bb58a0a5e730d01899d9b1156b171c1b8a945b927156bd56e8ad577db4284d", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "167660f6f2de8ae7f20edb61a49fa2743e975aea1724fbc6a889cb87fee46a50", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "4a66bdb79f2402f5b794c0c107cab90f0343966e427129c9705085530822d9f8", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "389cf140e83a8f785d5c0c65def624b56ad78ef81d38a3523d85e5b0fa5ebd44", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "d7120ae4b97bfcc195b542481555329206353b50bcaf19e8d57ff4b47d2c8cce", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "45533c5c420c3b9a189d1025496b2eb2c2260bedaeb7b2eae028eb60101a2901", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "15f6a6de9e58eb7fc6a2137e63ee333733aa2d1057c27b7bffe4e7697d575bb9", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "ad32d21978cfc0df59c96957ff940bf4d111547e9340a62442f78f02e87eb8b6", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "138b1fe9458d4dea7fc61394a9fabf1e51691d39d840b2264e6d49d28b5d6023", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "eac15f64185785f0825fb65709f2c9d89024bae2a5e7097893f7c8147636680d", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "01edab9d64c43db1ee88aae581c43cf0b2fea80f994e85566ac3370b65f0c368", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "14786f7dbdc61174ce70aeef99f235481c18df97ff9710904d1aa061d846ecbe", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "69f40db7e2a4ca46c4204bd93fcc614dad43e5607379d263040fd06c0647677f", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "f41c467061b9504fd6e06f88fc66bbaaa2de7894fcc8e7d252344fed1e714b07", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "41c6a7d9a30d99a7807180c4d17811ffafcd9ac4e6ad7226dbc232629c848699", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "5ea252ad8704230de0b5b3cb7165f2a6f2d3c18e84c7519a247834e17af0e22c", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d48ac161723b8968256f02af2d3ff939616e4c136778577cf4693419516fc1b7", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "c57a886f5dc2bca33ed58848281b98e0a3a12fe7de9bd80df2f460b55f2efcd3", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "9668e9d96e71a0d4df05c085c6e645d45dde8a109023ba5ec9d24298e640241f", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "4f6fb71b4b5637f3dc216269c8b6bbc13f0488215d3e7c6ad1225ea7f66a5ab1", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "d465b8ad6037c84a28ae6b2635ea66306c86edc67a4a7ee62a34894936d8b1cf", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f42d3bb96d2b25a73f264dd405296d27183e093bfd620d96279fe62b115c5ec7", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "6d42f787f73279474aed2f078b5d814e335a84158aad91cda9ef2ce37281024b", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "79b7d536dcc4eaca87cea23b97a8e63dbcd249f317bd1d7fc688c9fc734592b9", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "d465b8ad6037c84a28ae6b2635ea66306c86edc67a4a7ee62a34894936d8b1cf", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "d465b8ad6037c84a28ae6b2635ea66306c86edc67a4a7ee62a34894936d8b1cf", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "d465b8ad6037c84a28ae6b2635ea66306c86edc67a4a7ee62a34894936d8b1cf", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "b2ca04b51c99336668e4ecd769797ad5bd936020b8ab3f5072aba650a21ba18f", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "d324b2ee56304f7026a9e2b64a4d3ba7cb31751a845898d88a64061625527295", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "8eb0d0dd75e315b4cab64931c8f81bee01ea7244bf455c66fdea4537da5723d7", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "fdc30cd8bc4786173f4eb1e6e4fa922eb03a79897d2893e5ab5bc4cbeafb7a0e", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "8799ec662c219b96152ed90e681a542e101f92fdaea46bad3b95defa2c901c2f", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "b445d2b7bf3b977b633c831b76bd6f17cb485754b2964be25d2518ec90aa6378", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "e0c5b1404a1db7a5c1f42a1e673f513f2233e304ac18049034d41ccfee08bd5b", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "8380cca2879ca26a8ee420e7c1e49e1a479e286e8e89b1ae8717d2e3ac94786a", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "409eef034b0168709e9e65a07078453d900bc54c13dfe82209c896b8e8a94e16", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "987035f7f5a0585b13f002c0f91ce1b34825153a9c29bbecadf06d5a2f283072", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "eca28830a5ca451442a5215f6b2f1b2f075c7fc9c4e1d64014c36d1af09975d8", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "0f729d1894d64364f1130a796e305dee115b043ea52b71ce1951187d277f0a28", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "abffbf9a002b1605ba9b717819e7f3f6de5e096502819ec6697c774204c53d6d", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "9d3777de43a4a7c61f8814d76623f1e16a7a8805ec188c75c074e3def4744de2", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "7b891577beb670f36fea65f2bed1b8606e007d5c7060d88be6e8cbf8d803ae74", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "8f144f7f0edb3dbbd10b38753d462e22a367c0dfbaff452efb3bf38a2b25a5a4", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "e484aa156ffb8ba2273f7ad39c3433333b11f11142b4af39276c984f0fab9b17", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "7cf627a08053b0fac6d557008ce7cca2062456d4875b30aa81510683549a83ec", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "eca28830a5ca451442a5215f6b2f1b2f075c7fc9c4e1d64014c36d1af09975d8", -"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "efc3e5cf6aaf18210e69e829d98edd96143a92c7fa73d66c56debb297ddcb2cc", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "7cdd28dbeed577c42cebd57c23587570d343805d237367a6cfa20df435ba5dbb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "499a3086549cab3f675ac876204f511fd4f398488050f8c7279cb2d2637d1949", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b04f7d9e1f790f906d7408a7271432b9e4971c0b29aa667fd73c6127933c88e9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "499a3086549cab3f675ac876204f511fd4f398488050f8c7279cb2d2637d1949", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "46dbc55fa82379a7e6b3f14385d6efccadb36c9c66e0fae8776fe936b7c85374", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "46dbc55fa82379a7e6b3f14385d6efccadb36c9c66e0fae8776fe936b7c85374", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d4bca9f19494bce06b254f7cca8475a45b495c07a6097cf5a2438ce02f88c8ee", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a5202608cb6bc477c88b7186c1b962999c4ddf9d55bc4ed2907c385e9ad0be54", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4aab75ac0fae293b1b200000b7a2ac492c1d62e46583da890d675841bc4ce77c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b14e9fcd577ac26a0daafa8330e49e530c64f9921ba93910f87fa22de4cf6305", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "5195a1436f0e5d517753366b96b0b23a486a23ad2351d1de7be35a1f4a9eff99", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "01fca946b28d26e9a97dad175612b73bd43ac8cb55f2aef3a2a3656766e34cb7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "dd78c4050ae23ceb15d0916851ab454297035ac748cff38dff3d37c7bae085bb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "f67efad7e686e4b5fe175d8d64ddcd4c011524f84da0691cae406532da287067", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "f3a258245eeacae006fbb469330552f020c1671d7235f43029c9988929b9bc06", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "deb76901b60c3277766def8a736685b87853755d0b64a3e9d1967641d4cfdd06", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a8743f021f803a1725031c990b9f1c3f3c71744e34af5d13dd989f75be41db8c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "deb76901b60c3277766def8a736685b87853755d0b64a3e9d1967641d4cfdd06", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "02ea2af1ee992bf231dffae8d2f5456a59462172f6aaf50a8f58548ec25f9b95", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "02ea2af1ee992bf231dffae8d2f5456a59462172f6aaf50a8f58548ec25f9b95", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "842327a2f789fbcaccb605b649f2f2dd5ccd6db954c1b53bac249b3896fbec8d", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "2d899d3141d4907ca40ca828daac73898e4547791194447b8629b4410b5a61d5", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "05320b96aacca7610704dddc60315c1b091be55120b8099700b9459e6e9a4765", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "0e3861702e9d89822165dded8ed97f069c6e2833ed57948b07c381458140cbf9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "5195a1436f0e5d517753366b96b0b23a486a23ad2351d1de7be35a1f4a9eff99", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "7e490334d295f2ba1a9562a172b9c7be47e5442aa8236bf0b9651e280f9dd25f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "a4ec275ee3b920ec84bdd9787c4e12dcf706cce7581b197911ca9c915f0f24ff", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "cda0f8812a81ca2a5e7519cf7711562750b1f0da55d281c2add27010076c5a48", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "0e10af39280777fb963226612f8b107c3dbfa1335c6f2d1bed6e6bb8b00ddb93", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "cbb9d69cd1d2cedad4b962ac5a7828b7b0c012c15ee41e110cb09008abb1420d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "afa415cc44cd88c8e5ee4bd37a141456f492be98efd12630fae6062c620940b3", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "01fca946b28d26e9a97dad175612b73bd43ac8cb55f2aef3a2a3656766e34cb7", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d4bca9f19494bce06b254f7cca8475a45b495c07a6097cf5a2438ce02f88c8ee", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "7c50ed1d1c6d32e0dfb37debea732222c2a0affd26fb6708601294ebc3e3e874", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4aab75ac0fae293b1b200000b7a2ac492c1d62e46583da890d675841bc4ce77c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "22cce92e4fa33c82fa73f4b8ac9303a524d14fe61ef5829839dab140a489c0c3", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "da24e416038a1c7196a0ba196899170165b93586bc4d8a6510c35782f5de5c28", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "01fca946b28d26e9a97dad175612b73bd43ac8cb55f2aef3a2a3656766e34cb7", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "7e490334d295f2ba1a9562a172b9c7be47e5442aa8236bf0b9651e280f9dd25f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "842327a2f789fbcaccb605b649f2f2dd5ccd6db954c1b53bac249b3896fbec8d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "97b8d3ca4bb7b7f2c711e58fd57be651c8be13a86b9e9f9818a15b9eb953e23b", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "05320b96aacca7610704dddc60315c1b091be55120b8099700b9459e6e9a4765", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "295d9a3f876766106744036f37cca593c497dadba52b3b4beedb5bffecad1de5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "178c9690b8af34aa2298d42f0336729dd9687e76d6d335d10b552c8f268c2f38", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "7e490334d295f2ba1a9562a172b9c7be47e5442aa8236bf0b9651e280f9dd25f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "dce08e47f79000f6d39c6e18b00270a0228221a972b8c81dea6294a8be1d4924", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "dce08e47f79000f6d39c6e18b00270a0228221a972b8c81dea6294a8be1d4924", -"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "93df97f2ada43fab8873a17848f4bc8bb0d2969e242e340dd941ce71662d4d64", -"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "6a478769a9a3ea069f83648ebff5872f1a4ca68f9a8ba2b3e0a3933831c79a2e", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "63ec95b0509f2d3ce535886d8d547badcdd1e374a8f9a49d29ee0e6aeae1af83", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "63ec95b0509f2d3ce535886d8d547badcdd1e374a8f9a49d29ee0e6aeae1af83", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "b33cde9063d2bc80dd9a29acb398394f70493bceacff71c57b1c3fc2a384d58a", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "b33cde9063d2bc80dd9a29acb398394f70493bceacff71c57b1c3fc2a384d58a", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "9e59beadd5d3c8f29b64072f613d41b72e0b54c78f3791ef570aef9b84367c76", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "9e59beadd5d3c8f29b64072f613d41b72e0b54c78f3791ef570aef9b84367c76", -"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "0b610ba4d85d8555c1e94cbb21318d9c2787beea47b5dd4a8c8ec2906e237e9b", -"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "0b610ba4d85d8555c1e94cbb21318d9c2787beea47b5dd4a8c8ec2906e237e9b", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "9a40deedd5fe1210e7ef5f155f1075f87b25a0dae7e9b84f8e6217d516ce8fb4", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "85bda2a9b766d56bbd8fbf09a024d490b24650cbe1ca39ab09e2380730896744", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "bec7a18209f2579be0454da62014b6be97569c7d4bad0beca31ad7c3e2dc4cc9", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "0c4aa4b2bc7367c36341a726fdaf1a26e054d1f384980ad37094d4fb62b00524", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "cb010bcd52f78290b538cd189ab5eaaa25700f00eefa9f20cb0d37d5ad07d90f", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "97f62b82b1ddb5b27b96067b58c116c8681722139e571acb314fd0717e67107e", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "7543fa70f5ee4a9fb4cdd0611fe3121fb8196af451949d4c8b8ae53fdb99b6aa", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "016ee5e1872b07b66d326f1befefc01996ef397ba892fc513037f0dad3599c1a", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "0272cf38065da81bfa738c1c82c57a35dadceff10373bfa424a06a7645bf1c69", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "8ed0ef63d430b89853bf252f99200c327b1c07e9554fab46730a2173259139bd", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "87e4f382ec1da0ac81604e9e23b783927d9d5dccf50948862ea59663364d211f", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "416b3e0b990dcfce6128279860c9aeeddd43f7263d2590fa1bbe523910fd8699", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "54e83c9130b80a02534330505ddd4c20bf2686c767994f44d35b2188d6fd41ed", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "136534e39bed6e187c9a768a72ad0d98f8fea1e0ff51f10ff99c99023954b4f6", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "64416774886dcd89ec630d204506197d9acbb7053a764d3fa7512f0d2f121bde", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "b3406ebff6374fb70b7b0991d2448490f7f26ec4d3f9ce0dfadb5e5bd004c312", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "69a28240b74db12655938ce6ad17208d6c92d93fb128b68dac69171e4d548a25", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "c19ee990211a55c80835052a60e494989cfe05db9480dcccc67b33e6b3a8dc23", -"T3T1_de_misc-test_msg_signidentity.py::test_sign": "def4bc79504b6b672549bbc5a4e838635e3ff15427b83cc67c9483a064d65c9b", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "75851fac6d447276c26aba0b1479570dcc687269e28eb047ba51e74699aabad5", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "807446633999368549dd8e3b9abfe48fafeea8bda549849f84827a6b908e3c31", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "abccee0b8a87f9a169bda2887f2b0c24de486ec401d6a04d7aaf31b499ca0265", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "ff174c055fb7ad3ba8718659d4138b4058e55a263c2f0ae5e3343b37cf6e19b7", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "6411c6f59a444790668016090b190bbf49c840369f8013e3d88601912b60003c", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "3ccf5eaf91efe5d30ddea9a58531b4087267888634405bbb35a8934c4172ffa7", -"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "6c9aa71b9c02166d8c398840efe42ace7c105b5334b04a5e56d1c85b8506f40e", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "eace643139fe9c9fd561672de767cdbd34f3fb9e58aab7280e86ef9eea2e8f6d", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e59056ebd51606c5caaf629a18f86f5b22fd816f8c8447aaf2cd9d14fa035901", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "3c7d53cacfeee42425d93ade89db130da66679bb4342efe00af6331f4cd3b6f3", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7010227e2653bcd0a1529690a4949e9494d9f0fa7750f6c8308820cfc17646b5", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f3ed034d87f8d2396f5fd5c0a60d1f112585112a959ffa4526e9eccad317af8d", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "02c055782dfb804079f8f99d6c30b6fa0db8e344d461bfbb3825e61389732d34", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "96a675f9dc4468a9ba9ef107911107a945415fa24bd266269834fc19e4f39bb8", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "50e0b7411230b6ea4e92318445c8003f4c56563a10dd9054039cfc95a346b4dd", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5988ed31926dae98500027cf86d003e15d179631d0761961d430f514fbf67549", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0ec239993ef49c2e4869ce695c329656f7f2d66cc107e10758449bddf146bbe6", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c553a7346763c299aa36a2dff38a6b5314d899d3887fe676902417ee10d17604", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5c41fd24b4f95974d4514eb04dc55b820ae507877128e2942d3130af545e47a9", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "036c5f26e23cffcf0a26c76688f7f82baf58c9cc1d99c1bce4dd1bcf6c4c8b19", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "6d95647df765180cd6df0beef1d0bf9a5b1695cef32c3773737a558463c90ece", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e3bee5fed0d37696dd4965d13bec511ba3a4d16e39303678a7089ef96d9b232c", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "02c055782dfb804079f8f99d6c30b6fa0db8e344d461bfbb3825e61389732d34", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fc5c90d36ae3f31e6a2852fa11aa1865055071151e307d41fba1f51b53893e1f", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4b5ce296a2e80acd7ea92a37be64b8465d2c0c4c8f343e8c14b3f08e75dfcafc", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7c95be89589061c9d3678ab8f5f7e913152a52ca5e032f3c71ccb1c9022997bd", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "e2c9ef3495386becdfc2db25a69ce5a4aa7c53a315e2fba0519876c6673f468d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "abea472ef88b3c9ad34ea3b2a370ee374973efab4df14a923ec11e8a62796e50", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3d3dd6f163ffa38b5000944a1b7f87aa6daeccb27d039968c2b7e45e37df11f5", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "cca42340d01b0dbe0d771131f081e1736a583142366602202edfb6df0d2a83e7", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7f6200fbf49e388ad3165aceec2da50f528e2a1d5a6ef0040eea4fa75912c21d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "1240536d26111819b8dfd85492c2bee02304d69610e59958730ff0bbed2192dc", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9b46b6516de39fc622b8277809483c43403aa0a15e52e4b17f7f53d32d73f780", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "34657b2cef4deefc48f64aa8e8754c2d7557bb1b866e83a6a10368e9ddc83442", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "84c52c20a9aa0b76077ea925bda957b2fb4b97c94c6e4c1ea713ee2b6c099fea", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "01e9048f2339e501d9bea561cab8ad3ab49750414f4da707626693a0405f397c", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e4d88be7ec4dd90ef9166e257c4caf59105825b10d1d290e6c253328ca08e6c7", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f1f710cf8a5e8ad69461fb0dc271287bc8272bd745af3a4ef88d7a2e7e5ebcde", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "64cd3d26fed16bd9bea05c2e8aa4ddf61487284ad19b590085820c372f7c130c", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a3c15ed9015dabebadbe953b29f3aa50b747a2c7264ba351a2db57f7a77ac6b6", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "383de910429c0e28c45d94075996b675f18d8dc60120f06e10ad340584ad3efb", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "1b8f16f2de16210a2fc2de23fafcdf8c524c4cffff7c3b13b255613e03ebe33f", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0f1d070413eb3b7603213f986555023576d56888338549a62bff2b9267f70232", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "d9db3b3c748e14eacd3f372cfc0a61ec9f15306615f2209f7f9e139f45a1f3e2", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e22193019c045c2715702b13c5a8b21e68c5f782489893782862827cb1fb4c9a", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "47613c3a1e314852b1b0a33e6c000deef3b1a696587139a4b3c5341adefef755", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ed981cb2b8e04b51603ae53307e837c6dfbb04fa0ac393670144b2b38a195d18", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "68f0a739435bee76e5a9183239e59568150285a199986e59613e9abce523b0ac", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5378d721540fa43b5d5cb4079dd5ff5ab7bfaf4d174391187dc5a4b5d6471137", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "fc290789bc61cb339bb76dfb90e7fa69ed9527dbb5dd26d77e0da06c28f67633", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "44abd485039b55c039c9b09d7216b346065b907668cc5532fbce90d41bea88d0", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4704e85567a8bb47baa145d451a0d8d98323486b75cc4f06750e63bb1c8db54a", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "5e2eac37053b24047a97804a5c7f7739874247c7efad78d6075f0c8cc5d4371e", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "7f14f5ac5a83439f79dd559602c5cbbdd2efdde6b0b6b28303b698937cf509ca", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "b7c60c025ae526dc672297df2627a56243be8b98d70afa785c7340597d321840", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "4c59475be93601d97c56986753f6c451632706477db76e252cb50362b934dff7", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "59b9263a4d9d255887b7705ec83eab95c73a7ffece1eb5adb821a5194939622e", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "e1153ab88cb2b2d773bc32cc00398f6894c899cb3b741ade3673e0cdf7d62873", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "359d031f8cfecf6e4d98667e27d2ed215d78911b66f38a9051210960df908cf5", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "200ceaad480d28acb707eac3ef4268f88cd494b485e1f6a6e5e52914ced18ec4", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "5f8ca7f8f7e2f54c7f6bd7807c9fe5d283cbec702e505fb8a9a7e67fed05635c", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "b020f0183b3e405689962040cf1d9629c07670c3186d476adae74a7fd03a7f83", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "ba7c087707dd79a90cd0c82a8d27de0c3790dd1279b6eebb9ea6a0badf13be50", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "95e933d07b748ccfa8aecc9fa5320e7a6a0d632729476174a6b0ce11e0059004", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b020f0183b3e405689962040cf1d9629c07670c3186d476adae74a7fd03a7f83", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "ba7c087707dd79a90cd0c82a8d27de0c3790dd1279b6eebb9ea6a0badf13be50", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "95e933d07b748ccfa8aecc9fa5320e7a6a0d632729476174a6b0ce11e0059004", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "6fb073200669fd6413066ffc3bf51f92e90834438e63c947a029af64ec95a404", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "958ac4c1418f8fbd6703edfbe22fe2b46746be9ba884d21ea7e731ef64570333", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "13e5eeac26702f56e1bdb90cc2fba310c50b2d678f10e4b6e2e4ad9081e03c6a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "2fa77d8ec31a4c54bb01f9a34a3005d5f66c30fbe41819233e195f6ca19b5982", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "678754f30ccb5689002c36ffe06045151e64ad44eebbc02cb4e8157c4d38e6d0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "edcb75e170f83e162894c757106a076481369a257f0f964b513e6c2739384d65", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "671ce02e4014dee6ece76bf0f4490c03c189ad1111c80b407c96535b29050ee0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "c2ab6b1bf5123bb2527edfe87ea4a4aa502c720b81d43281a2eb26ce1f1366b8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "03f7a521cef415d02d8ba314b7b2a41bfb0e41fc2da82629fcaff2239fd54a3d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "6aa13edb37442315c8216b003c4a191387e7983ad93f096513decae73ede8a66", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "622fc3b4bb27783c33a2836302ed597e0ba183a0abaf1240709818aeebd4ec30", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "beab8e2c099dfd891ff978ff8eb0745d18f42ccd30a320525b4c4916bc80c6f1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "54460916a64db4754a5929296fa81357a9b1110c8c2f5a018438677f7ca8eb7d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4c8fd8acd0364f875579a82415c38d59be9597d7ee3ccfe0acc07f68801428d0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "c8acda0f1a77304070846855a16892164922bce1e3bc1d927d494c99dd1903a0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "53821bc4e12b145c6a005e13791e9f541776a7e4e4d62a8c2a86922fa1f39910", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "3704d7a6236e4b896ab4e70d247f60f0e15f7aceecc5f3b090c3edcd87a4643d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "dfefb38443ca433976033804c13f71dcbabafed0d04aea6707976e574065363e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "9a51d0d6f2d220ffe3f4c53c08a4e2d6353fada027f747c4fc9ea46773eba97d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "da8049b9f54a6be3da7fe806543d3c453bf4964dcd91f525e3e35f0f7e27d442", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "874cef42cb8a5da8705c8dc395da10fece497efbcb1636c22e32110d975cfa80", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "874cef42cb8a5da8705c8dc395da10fece497efbcb1636c22e32110d975cfa80", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "27abbdf08c2ee691ad8ef03569049488f47eb527efc4a4aaa22ad705b523fddb", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "23dd532461b9e57eaf0f9505b37b77482b6556bbceec23f8d384d634f6317155", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "01063a75983ecfb58449307f81fae38ee725af15ef3d65e04c893ea6288a562d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "9ba7d9bea3937e14a9537000808e875e5be206f55eb05dd9181a6855935829ea", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "896a558f3e4acdd8dcf925c32c934d34113c631ab6578bad55e4e26dd3eed330", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "ed87ace34b3c70c0ff039e3f8d7d9a9b88e6b8adb048024fdd4bf23ee70f0092", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "0d4b82f0ea2aae06888acd1c2f8f1dead3a7500bfe84c32449df928e479ecda4", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "145bc11c18dde7b3d56eb04d414710f66f284e335082119b252909d309073a99", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "cf2f06b1d78d6227339f5312eb1dfd5f3cac0ed140500e000c710ea1adfd92c4", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "c63d8a84b9b57e938940decd2e594b1e0817dd4bde9e7a716e53498b7a305c17", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "cfe02d61f27832fef4eb39ea3f7f8749f2acf58303184f358ec90f85099bf742", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "c17f9183d3e2bbe6f4bb8e8f2251950b90ecc9024485bdba0da5fe4587fa87de", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "56436ba925510ac64cc3286c8a7c95343ac5706a4feac05a0ed995e4b1b351ff", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "410c31b4c28b316dfdbc8d8540baafb711b8b73f62ed66bd67e329d4df66853f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "fba41e3ba7e310a70051126731ae2830e9ee1cbbe94cd452db6a577d1eb6cb2a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "02b5b4a8cd67c95d2d23e01bd79e516df818efab4d1229b106b0801f8327a1b2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "7ce7e404ba8fb14358e5e5134f994a05bfed39a6520084289b7184844e7d14cc", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "b4fd4a0a7ad9198577b53058de4c0de42ae9de80f8a288e5e09eefe3e198f3db", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "82cc1deaebe0396a386948e62f9dc7d32253a92647f04bbede72b84bfa7fd00c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "21b4ebe6cb822e17b4203ec04b31d746f131129c133344da5ee8c6cbe6c26f69", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "a2ffc831908edeb4be2b507a918364f6b06f9f18a8aecf5946672f28a284f45a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "ebc4a9114e3174ed8079e3966bf7b8b90d0e0985d1ab7c6d6fd41da0ff6b4cc6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "2b8e3a1634913ee9adbd6582fb2bcec58a8cc9b58c16d93a1736d8166f46d70e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "9eba775847d4c89ae30e4a7470e6afde2d07395383e49912a6cb8ef24786432c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "e52999b7cb4a2a02ca124e8fbc77ea78c8f6a0950d71160adc5ff3c56a7a3611", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9b493ed9be608f3ade8dc9e8df354864f5a8bb2a780b940d29f264150e597659", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "4a95bb0bfdf91144aa9c1348f46aa42ea042f888998035cbaa90eafbb7e7d930", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "2f519b45c6847257d7dc45a815d289adcdaf6697a4daad2ef84c3b9eee655192", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "efc68edd54597954e92a5a8aa62b761af40e6cb591e9fa8c2dbaeb57d39ce9c7", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "215d629c3b3235355fc5bb844b60902f6749c5e51031f491cddd061e34d42644", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "891667197fed59ec69349d8c3ebacac44623ddc951f71901f6c94e7cf49927c6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "df7b37d7ede4d9e6e8e59bd23e9ea25ebee299a1764c556f36c5b4202e0967c1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "e16064600d36ce09efc7b8be4ec25de409854d6d86549a615ca07048b1e8607d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "e7953fcf0905f991a9967376f97bd2b944e4184e67ebc17d49fa947a28dfde9c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "da5aab4eb7d2be3f54bb3d8e80434e715425072b0643b1fdad41ead273df2e1e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "3088a43265514b6bee5530117df699b92813de16b27a1ca8dca1a71f9967f371", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "749559f0abc052f59eb5601e00518dad439f66926b6dab09614200b2accef83a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "01063a75983ecfb58449307f81fae38ee725af15ef3d65e04c893ea6288a562d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "87c756b13f3da07a57775afc55337f70a258ba1fd1149863e398f10ea6f8e8be", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "310901eebd4765cfc0f2a07ceab748b5d119b6edf49a6f435c9a832ec0e2cf77", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "e2d8d9882fe9c3d56272624172538b13c748555d5e87195d462b2b1444329956", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "532d6159b17b3da0370cbdc992fead11e1e4b20a1c58c6c955a579344cd32919", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "07ac341f51b4c083d1255d30a83e0aa27bc669e00b904c8a7b711120f56465ea", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "95d67c0367d5019f808a22cf31d1ad8e5cccab56271b14e27b6ff4ced6534cba", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a3613a3349802546b86e78b7bd88f5f7e89da354cfc5c00b5ac2309dee1ea9c4", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "3d661a1a2beebe14301c7872ef1b7b91d78412c70a870b1610dbc6d7721e0900", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "0ed84a3d643dcbaa855d25173206e3f1224da634805742a36eb3923aebcdcca6", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "11227c6167ed529bf76cbf856ab789457e67769bcea10514c2e12935ba68baee", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "63338cb4eeae2a080098189f678cbf4880d48f9efc16e9ae21b60e0e0ffdbc23", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "b82e3096a7c44d415132ff97bccf3a87ece7bbda09bed3d46479f86dc49c57c8", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "328eefa78cf77393e517761cf8be13e7497d7d0789a5241fabe4b270f5191593", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "8e7cfc1d6200be43b4d734ab074211a1e0364226bd9088304300d87cbf7058b8", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "c26c997987c0a68d2f0ceffef1a626a1d1f292d6c08037d823d597600b1e06ce", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "7448e0c3eae65bd5407a8efe72dacbc44eb3edc591d0474facac7c56d1b51718", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0d481310bf77a496af16e6ad44583f35fe4c81ee88dc4940b4cf00330c24cdf5", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "93e8311c53384e4b196c3abd53e37d02ebccbc0979ea5f19e0c64407be6a4835", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "142d64c9a38d3194d48c9c7d2229acb6b28db31093d683f6e6e3a42163e1a8dd", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "91d3cb06cfb75a16715f6e5c55c4432743a8ec16c3c14e0c3409487afeb69d89", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "23fa4c73efbcc039da1d7b2e756ba64d1bd9daf21466211cce533ba6c560bf45", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "dbe055ff407a96967c85d5f47460631678dec082ca2a4a9e3677bdc56d08d483", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "98fe560f52c10cff84b32e1d72fb2b95e5d9292fe6f3adf5420ac2f368377b71", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "74d7c9795dd5360ad26ad3b2339f16509e2e356af3fa60c5476ae765f4a00886", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "aae6bc0467f75c2ffa05475c14867221d15bb1e8236a80216de425b3ab48c86e", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "ecbe1580cbf6cb3f8de535d959cd409e9fe332e51ddf828f47cf3d38c3f85d86", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "1144a91615cb8e18cb6e7027877487181a59473a17b48d3c2e7f105fbf54e867", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "4e1ee91d714b6aa10c05576f3c47647f883eb3c32ac220b01cc547bb64976e53", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "9b670e1a96e7abf560d2761546416eda7403f3f0af2d80dfa271768e66ab08e4", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "37ee177c0b6f36e5669e366d3fe6775f9012272aed5e89dc3ed68a3886f4ad2c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "5acd6426fab422b7ca501facf2d2c1500dfe998362a0a51972966bea800beb47", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "0ba4b140a9e3b0ad70730203159627d63a83e4c35002ed5fe04034d35599721e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "5ad50495d8b217038cabc91bd0494821273aceb7b66d570bd8a466cdac4de495", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "eaaee1fdfaab7a0c51ddd07b81ba7fb2bab4ba65d9b75f8968bb0c6e99f52365", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "2fe5ef6d0a51fc78452206f0b6fa9ecb8c31301fadb26beb6173c6da32e05ee9", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "916cf260001cf5163aec2c2ac682b3bb3d78661ecf747c194555ad3e72a0047b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "89e3acf4da6fc523038908eaf56d4ea26ed57817b32873421895ebc93803adb6", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "8dabb3fb9b020013cad9f37a1fb063f24309ba58e9e0b5d86dfd934fafdae1e6", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "558f4ab7f40c9ab18444d6cda9cc381fbecbf0093a5f793e0d49b2cb2da56eb7", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "5e4b5b7c4add98cd067d2bc36375944dd572d9315a7adcdb210b2d0d5c8ad853", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "371b8ec3db7e4786492e424e19c4e3edc08e3e5c131152ae42955a90aec8703d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "db97e290447b36146ce352a892a824e2b2a63afaf38a9e3888bc9d24803b07db", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "2f0cf8452bba18c7f7550c85333cd510306fa8e5b14060f56e1103118396a28a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "ed7b2417b91c687334cde5758d24a357c202be49dc21b048ed62c5e21ad49e0e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "7d40bd72b61ae5577d3d9bdb889bc760215dfa90e8386cdf6c82a48e3cb0a2c6", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4254cd46f6d72938d9dcfe47e1ed461f90b50e2fc6909b1475c9e825487aefcf", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "8400263dd2881a9b48de2fa9727df9826b70758ec55bcdb60f6660ffa9cb53f4", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "e135500eddb53bbd6cd2649683ef9c77f994e15bd554d17de19ad012952eaa1b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "c1f58ba389f0c47f9c80349a9054f30bfb935c76ed894551f13ffacc8e656d96", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "7c8dc39e58204860134bc7166cba49f99cbcb158e1a485564b96c3be159a1f8a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "8b3f028e78458dd1bebf08449076473483831609caba22af04bdf5f1151a054d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "6a0b74e4ef38155995ca7393732617e5cfdb9f6248f0c067fc325602e8515c7c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "dc5c0e44b1a428cf56536204b48334825a528391ff5dc01f86251de99efc53f5", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "272b9fa6f989bcd56c40da2bf53361d78a535d2da002f13182c9f90fd32cb365", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ea80135dd6b38823c314e66ee2400e29404cad35fa1dbbdb2faa0f29f5f71abf", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5df12e4549de462d2d860a7dd69ff4eea83fd00686e0afaff49e31c22835d363", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "d2b67f35423d51951ff8207a71021927c73d8a47d418575f6e978c9287875fa0", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "70f1a43e3b134408a2c244fea76a170502faa8ffe4abd4f54e92a97e091ae846", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4254cd46f6d72938d9dcfe47e1ed461f90b50e2fc6909b1475c9e825487aefcf", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "267c66a7150d4e95c39e709a1bcc5eec2e504a9b46e82a950c276e8b126df07b", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "55c7e5aa5b4298556cb2a8bf68a8d7bcd2142a68efab094d27fcc4a15399c87e", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "60f392f502d33764296265248c76afe3b713c0a1e621548cf2de79a7323f3e73", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "b15773f72859f69017b89130e6e410527fc18abc3f4a02543efc5223ed19ea0e", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "07afde877f001241c18eeb54552bf116ab512a1cc77f32b4287e83235ab8ffc5", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "7e3b578e6b8b38ef8ccb8038f1ba7424633deeb47a65723384c66306013e1944", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "cd9d4c5983b842bdf9e955dfa244ff9234dbd6d2b01a9e7cbee4643a81fc588c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a469bbc3457cb72a0b01b260a604e2b7c9b84d0629c09b0f09a0ba925e98fcc9", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "7c21500b228f89f45f2b3c5f74cb3d30c1ff0d2e123d682465a870dfbd42239c", -"T3T1_de_test_autolock.py::test_autolock_default_value": "cde22d719777e5c06972943bc0a250ebc37d4692ca154940d1477b5cef9e332e", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "3b5495b9fe7d81a5fd252e8474312cae54a98f07cc4ccea0c59099b8f48ab6cb", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "3b5495b9fe7d81a5fd252e8474312cae54a98f07cc4ccea0c59099b8f48ab6cb", -"T3T1_de_test_basic.py::test_capabilities": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_basic.py::test_device_id_different": "bb8041ac898a8c976612f15f0d3692d80f94158b7b51ab259913a57162f7ee04", -"T3T1_de_test_basic.py::test_device_id_same": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_basic.py::test_features": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_basic.py::test_ping": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_busy_state.py::test_busy_expiry": "6a305f339c530bf79302e6c477615f855633577e07e086d75b88e997fa075f59", -"T3T1_de_test_busy_state.py::test_busy_state": "abbe0cf35ca8ab65a7d25d24026c9e20a6a656a986072a89b649e6df8e31558f", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "3a657ea8de469c343ae5f414bd0c6b9a16f2607233e3a51712b8d6f947453bdd", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "3a657ea8de469c343ae5f414bd0c6b9a16f2607233e3a51712b8d6f947453bdd", -"T3T1_de_test_cancel.py::test_cancel_on_paginated": "b7d469e7f95af14bb59733b43e8a1809a73574a5fcb79f236e12eeca10f1628d", -"T3T1_de_test_debuglink.py::test_softlock_instability": "41b44bb00bdc7477de35a85a8ea9604b7b6f7f6b8c21c472416919a34f504bb8", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "821426e2132179f03508ed647c903f2aeb26171e3627f4babf38ef2a4752f3bd", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_language.py::test_error_invalid_data_hash": "557a7bd03eb3861d00f6964842c0935ad1b505beec7fbb6d2f1252944c4009cc", -"T3T1_de_test_language.py::test_error_invalid_data_length": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", -"T3T1_de_test_language.py::test_error_invalid_header_magic": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", -"T3T1_de_test_language.py::test_error_invalid_signature": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", -"T3T1_de_test_language.py::test_error_too_long": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", -"T3T1_de_test_language.py::test_error_version_mismatch": "11666969d0e7e6375696f3ffa5684aa2156af1b42c723cd8e19d7fbd95f074de", -"T3T1_de_test_language.py::test_full_language_change[cs]": "a43fa00b570d3e624eb3b43eafdb9c09bfc87184214a52f01a96f94f76f42114", -"T3T1_de_test_language.py::test_full_language_change[de]": "b6065018fb819fb23507cd6a86c24a329aa4c79d1bf7cb1c11915949abfd64cd", -"T3T1_de_test_language.py::test_full_language_change[en]": "e3f73f84745811999b68d27f31e83f9651f551a62355862cdf93826323b4c495", -"T3T1_de_test_language.py::test_full_language_change[es]": "65cce7fbbcd33777a64b1c2e645c4fc8dbdf7fa7b2ecd3d734c11f80304fa129", -"T3T1_de_test_language.py::test_full_language_change[fr]": "183cdb2ca4d7221d221cb8b57d3de327bb5e394a1216ab14b2c181324eb73737", -"T3T1_de_test_language.py::test_header_trailing_data": "2ef2f51ffbf7f81d954d7c7e33c8a06b136ae6ae59ab682bf4948855d2034e13", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "56ceaa47fb817fab61054f3c61863bdde0a9a4340c9070ac2b0bbe167af11bb7", -"T3T1_de_test_language.py::test_reject_update": "22371c5c2d94c259930891cb42897a354f3605d5fd1ddc676ef3cf2bdf1f5689", -"T3T1_de_test_language.py::test_silent_first_install[False-False]": "bfe5f35a6f4cb28a1bae61864ddded889effe20ecd3ca1504481cfbbe2389fca", -"T3T1_de_test_language.py::test_silent_first_install[None-False]": "bfe5f35a6f4cb28a1bae61864ddded889effe20ecd3ca1504481cfbbe2389fca", -"T3T1_de_test_language.py::test_silent_first_install[True-True]": "c01be9445767e8752f82581af4ab3efbbb6907b239bbd4f58d1c60fc9641163f", -"T3T1_de_test_language.py::test_switch_from_english[None]": "b57ad1eb4ad4924b8d4b1afa9e4108dc6856ca3433327e873a82ea7ec582be7f", -"T3T1_de_test_language.py::test_switch_from_english[True]": "b57ad1eb4ad4924b8d4b1afa9e4108dc6856ca3433327e873a82ea7ec582be7f", -"T3T1_de_test_language.py::test_switch_from_english_not_silent": "f9f00f9519da4089fc80668617c3876f9ad4f7d64d6711ab535d8e344d964c97", -"T3T1_de_test_language.py::test_switch_language": "113fb0887f817ee7e3a936572c76cf083c20cc9c925ad8e3c24334a3006959ff", -"T3T1_de_test_language.py::test_translations_renders_on_screen": "fdabe5604170bef5371972d01db81769e925c18ba5a16baab8aadf35a6b4335f", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "98e08a8e45a3fa7c554b0542d7b35ed7d01d511f6ef65275ebdb48773bb82323", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "caa2888fe26a5b9f0f0d27e99f1438c2cc0046ea5bb43d828933168b0bfd54c7", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "e4bdf069a56e92bc4eb6b3167f7826e0a390b4cfba8f6d4d9676d65848eeb5a5", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a85dca9eb05a99f61c38e7ff1eb66e983edd6b11cbee812fd88f6d12bcfa9ac6", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "3c1d7c81176266a31b4ceb8f3243cab2f610d6dd12723d800277420c8932f833", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "5c2e235e5b2f43e10d07727c0edf5e51830802fde61b5272bd69896af5816d32", -"T3T1_de_test_msg_applysettings.py::test_label_too_long": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_msg_applysettings.py::test_safety_checks": "3e989d2b0266aeb6d72c35964bf0723491c5fd57cffea8b187f6aa72368b9b1f", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "ce0d51cb1165fe27e874224c8af2e634632f2a19336a89345676bf5710a4eeb1", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e363c453cc928ec11d847eadb4a0c777d2ea66f08593d7c5f9241b702ddd1c21", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "309ab2f33f5de3334b78b436b3a08717bc4cc6efecbb0c5aec56452d29be12cb", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2e96c2febce96779c6cea39269323cb1b35da3a85273cd93c28959e6305122e4", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5273be1e0d177bb5b5018f729bdaaf8aea14c973b0446bc46f7e0396d49015cf", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6806b6c1fbf773970a3a3b14df84332a3d00ff0252c092707c9ece8eebf5537b", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "add38bd2ca7f1f3536542f42b1ff25639d741d5207e70e654699901e0ca530bc", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "9b42a9f44c3b1398dbbf9da1c70c24f5b4ab7e70c44860a9e845df752b006ecd", -"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "37bda2df4490d81a301217f1b1b57856e4fdecf0e89962708cd68f302c749545", -"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "5e2d615f24eeeecf0c50e07377015cd16be02bbbca6224b2ffbace6de128d3de", -"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "d5b923bd8a830170343bcff7cae220ab2bed4853261cab70da358a5742cfa1bb", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9ee4d787d0d8e293baad0b2e347e8b1c1bce45b9c0e6209929ddb2aea3be44bf", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "147bce8c2d91b59fb805cef029806aa1caafdbf33797dab5b74f70daa41a6b62", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "8df8af0acb2b62481b894ea0f93f4b0abc413a1f148d1151a1955016b0683958", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "86ff80f261522b9d9ce5d6d56b9fa05f2d3c083d4fcce8e1dd53dd2499f68267", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "298f105350617b5d689e8d571e41b970dcd00bf43a06c6a62584e6835a5b2dfc", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "4844f7d8dd9e3bf4f0ec4a76508057072aa7c50eae45a7366b20ead4516fa458", -"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "0f6c6e5b75b4359c09427cc000eb61054a99acd17109c07e5bd251d5f69e269e", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "8f496f504708267d40b210cc636264525d57238f4c7df2a55e771dfb506e9b8d", -"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "c1b0306fc99e0b0d605974e2c80fe1d0f2609cf9cfd33848d6c43ef705da418f", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "e09083a0c0c3e51ac20cda6ce4f0c0ad7631cc5e88b1e66254ac450454d53ce9", -"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "72c3fb1dbbb9544de35b9e04a0794596b5c4a4d01a7d4fce2d07aa594bb79f20", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "b31eefcc3fed22667e1a6049820564ba02567f3dd7745fd512a8350a727f1c08", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "72c3fb1dbbb9544de35b9e04a0794596b5c4a4d01a7d4fce2d07aa594bb79f20", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "72c3fb1dbbb9544de35b9e04a0794596b5c4a4d01a7d4fce2d07aa594bb79f20", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "c3d2ceb1d57cad1908f97bb5465a20210dfbbc52ad33fa2b41b8af604120b740", -"T3T1_de_test_msg_ping.py::test_ping": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "e24498a20b58f79e9e7c67b7cdbdf13229fa5e0c5a37a105cf9bef9662647bda", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "733a100b6551c12390d73f71ec39fbd1273a7e2ab04f3eb7ba439560556cf63f", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "f7f0bc822a4fc140ce98499583d50f3a540f2cb335479c3daaa5d90f70d70af2", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "75eea91b672051003a77456efe8f31e2ef2bd9eb08cd4a07bafe3c3dcd1dc42d", -"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "bb8041ac898a8c976612f15f0d3692d80f94158b7b51ab259913a57162f7ee04", -"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "64789f174ff2cb0f408eb68f316761b74de38058fc88c55c45fa6a87357e8533", -"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "64789f174ff2cb0f408eb68f316761b74de38058fc88c55c45fa6a87357e8533", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "3bc4e01fc068ae97999c4ced61faef89daa69e864292781c95f06304c48519ea", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3bc4e01fc068ae97999c4ced61faef89daa69e864292781c95f06304c48519ea", -"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3bc4e01fc068ae97999c4ced61faef89daa69e864292781c95f06304c48519ea", -"T3T1_de_test_pin.py::test_correct_pin": "8f08458def27f0a8e18942eb2b9831965b47640886cf3d4eeeec73d5c3d81be9", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "01d24d7d17914107a22397313a5c1182e4ee6326b4919667ec2affdede574075", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "855cb18642f89778b2668e87c48bc6db63b630b732a995921349db57eab20842", -"T3T1_de_test_pin.py::test_no_protection": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_protection_levels.py::test_apply_settings": "a6405d063f03c31dd3780c483f7aa7793ba92e7927991566e7616ebe45887ec5", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "a5e34306b56d21bb4c28919718898f73b2de37c3fa30908f92cd8d4e5674858d", -"T3T1_de_test_protection_levels.py::test_get_address": "1a6426a69dfc9c8e176f9201db7727e643bad62af566f1c784f8005a0662bbb5", -"T3T1_de_test_protection_levels.py::test_get_entropy": "04358f17ec06b046a974d7f6eacbc16552fedcb0450106b2ebe2cb5557b1fbd7", -"T3T1_de_test_protection_levels.py::test_get_public_key": "1a6426a69dfc9c8e176f9201db7727e643bad62af566f1c784f8005a0662bbb5", -"T3T1_de_test_protection_levels.py::test_initialize": "6c9e20ed59e70a4ef780f64c8bceab219a70205febb33989ca40fc62c1e0c1d2", -"T3T1_de_test_protection_levels.py::test_passphrase_cached": "33d42a9fe5f71f6b06835be4bb506a909464517201ddd4ec5790c6932e1e8266", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "6c2034a73dfbd2c024db3f2751fab9304d290b1d9fe0d0069be11004a8bacfd3", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "0bc2987a677716d4e1921d889fe7b6f7c258f5c12c130127c13b1e55bb0957b2", -"T3T1_de_test_protection_levels.py::test_ping": "2139a9c55d64f474d33e69083bb15f6e04b04ac77d7db1ba686d8efba17ffd10", -"T3T1_de_test_protection_levels.py::test_sign_message": "94f46f3384afd80187ee4f8ebda5116d7c210644624dce182fde7a5223066fc3", -"T3T1_de_test_protection_levels.py::test_signtx": "c928cde15ce564358f34ff19dca229ce44fa4b5cd849bfab03f724cffadfc70e", -"T3T1_de_test_protection_levels.py::test_unlocked": "f64e842f2decf30ea37978033b2049f8f98e10bcd4f14c224b3bb2fb24de5414", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "3b9f4021770e20edf2e53ab082e0b1258fee109fe928326f0c687d5fda9253b6", -"T3T1_de_test_protection_levels.py::test_wipe_device": "e2d96273b3a26d7f2143a471fe8247fdce638c24717ce4fa9ed104ccb076f5cf", -"T3T1_de_test_sdcard.py::test_sd_format": "907750d3bc860e163a8de09809c981b62b6a695262c4948392158e2b190747ea", -"T3T1_de_test_sdcard.py::test_sd_no_format": "bbd77e119f315c5bb18d00b853ddf6db9a7ff727d17a0e2e1696ba905a29b0e0", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "baab8c75f87d9507dbf5ca7181bd392f4b6f1775499d19ce2594e2fd2cda8a02", -"T3T1_de_test_session.py::test_cannot_resume_ended_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_session.py::test_clear_session": "032e215060ed21701844e9d3f0499e320ab1d2ba1db9f6220f38f9652a9318d1", -"T3T1_de_test_session.py::test_derive_cardano_empty_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_session.py::test_derive_cardano_running_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_session.py::test_end_session": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_session.py::test_end_session_only_current": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_session.py::test_session_recycling": "3bc4e01fc068ae97999c4ced61faef89daa69e864292781c95f06304c48519ea", -"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "9965191a5f7b681d68fc1b992084cce3b25cd90ef19f4694f227891124232879", -"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e0930bf2bc41822307836da0cab0d54f05fccfe794c7691eb0b81e7ef6b2e3ed", -"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "64927d9dfe75fc310fe65c18b0ef60bac9fd470a41f3429d1a2445631379317f", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "77c691e8f89bfc9f17ef06bc49c22e4c7949e316872061d17a597c7933b70536", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "a548662a75b2a4d3c27a7e3761d2fba61f7571779109929a46f0d42cd22ce571", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "c7013356e4ac37931e87b5f404807e4569cbf58da4ffbd1f4a2e22869877cfd1", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "22c6755c65d668da8b25a6bfdfeb6e44fc2f7c795696e34b007883387ceec1ae", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "33d42a9fe5f71f6b06835be4bb506a909464517201ddd4ec5790c6932e1e8266", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "885c8d684fc6152e54fd7201328047083cba32567a815c76b59bba62fb968cba", -"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0d5cb525361953ef1195f48710471765c9797caee8ab29a37486fb2d4971c02b", -"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "08c43f43d811acdb6ac86e29277cc8f2cb3a485ccfd5fbc6e54b092ec4fe998b", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "1b2e66c340c1560791d4065e73c02b3971869579d3d883c7557a2b7acedd6ce2", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "ac024409d641a7a075c155f8bcf7f39215e21e01e4abac29eba9ca18f45e39a3", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "93bd611b320b425c7995fc99a160ff976955ad6be4bfce971cd23323ac51b27d", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "061ac701a4692a8506e05d13d32a1e029a5185abd7990994304a076bd8e46fda", -"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ad904846c709d1accf0e8e5a20ee33cfa9fa86d87a87bfb4d735133e04cd9899", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "c617ab4739bbf924c710020a67386519077e7e349a18728af2dd51c01d666b24", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "0d16cd2a9688c3352454b83674d5adb53d4b07e2db4c12133071d35acae5f338", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "b16ba76895fc5e465f3db0f7d45569acf9417c5174e4096ca3f20372cceb8d53", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "67699da2088438dd27c4827b37bc7b95a060c76490996f42e47951b28b58c34a", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "475875ba61c0669a04b2f08d87e1b1b38aa81e4b49937d663a10b8ceac718408", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "10662d0e3cc1aa0fd329cb6f85a9aabf131eec2cc6fa2f1a013fbc3fbada3994", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "b12b80657a91e80cbbac768677fd22788fff88a68ebeae4bfb88138918347ff6", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "408acb8501b4ded97825f852e4382dfbc0a8e83b67de174d324007c8ecf290f7", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "38b3a921fee39b81ce3de9138817f645b0030620edec7eeef23cff40b3053b90", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "41603484f96a675fb22261b5001f164eceec0af20732487413595aac0a802a87", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "0fe68cbfb76cd25a69bb8d40fac4fd52a03873850cc5c34b0bc8b477b5bf3eab", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "ac572e43f748b5cb94a9da70554861ae34713d43e0c9f5d3ae6f107645f31f36", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "cbcdf101824ff325df996002f06dda3fb9ab87c3906dbde06105cfde0b140936", -"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "8520e5e4b52dc2ce39c975c393e5f982351c5d4da035f168b69dc9a5c36948e7", -"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "172cddb079c4c93bf3ddc53b56a8cfd9a03cbdad869764c00be653a3cddc2d46", -"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "e47e2ab79557c91a6f436135e3b690499f061d548c66679ca1bba6d0e300251a", -"T3T1_de_zcash-test_sign_tx.py::test_one_two": "13f7b31acaa74b5ee2f879126102273a6e1ed28ac41a9fb4a1c84dc90b550035", -"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "bd1795c55aeae94c614048399a2587e6b14926f9773a15c7dfe51d9532369ba7", -"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "abb0d35b6cfddf26a3049398f8f9cd23a86c05313b10c35a1d541fd1fe26af1b", -"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "13fdd67e2484daab2897b8e0bbc864591ab89c0ae2ee32312eb23da8a43dccde", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "997905317fc74e8b231acfa81e73be5c2bd859766d78a03168b522669cd39347", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "e2a1f9f8bf26894ef78acaf674bb40975ee736986b193c0a95658c387b95c82e", -"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "c68202a220f1f3ded996a759796ffeb2a90cc696026001c9acba5f69a5a73560", -"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "61f9c0551e6229d12e757943d571a34bc5e3e842a6f7337ce56960e15bd38442", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "4ae127d6eb537a0a9b238e5fdc945ecb29b4b4376fbca96c1cd0d770e6e34b04", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "58c4e45dedd03aed1dcd8cce492dd6d149cea75b74c0ed44acc7c011a268459a", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "390cc10982a597d3ff852e7d6793e5f1f01a6597855bc680452dcab6be13b04d", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "b06aabe1e61f0935af132fc0b38fcef9cdf0d7927e4dbd001dd3c650eb9afe0e", -"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "234738266b5d33cca25f07f73382c10c806ce40934f06c5d45f3b568dac4263a", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "a42f7716fc4ebcf23704734dca63fb6eb925f38d993d9b902286f75738eca349", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "13fb49714ea5917f812d1d4cbf823370353707ec49ae4b54903ffff5ba074ebe", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "dbc4b886ed7072024874da7f20fb881874dd4c6c8d4c92cb8b57771ff492d8be", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "a42f7716fc4ebcf23704734dca63fb6eb925f38d993d9b902286f75738eca349", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "13fb49714ea5917f812d1d4cbf823370353707ec49ae4b54903ffff5ba074ebe", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "dbc4b886ed7072024874da7f20fb881874dd4c6c8d4c92cb8b57771ff492d8be", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "aa3acc6408fb95bb0f2c5709ba31233d678ef9f93d8334c73784f40ae1e899e9", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "2c62d79485094a6d3182e72aaa96784b12266cb2138a0b1ca6efc0a02642a7b4", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f585606d16b36e296c147c584f0688ea2b1efa0ec8e8f3861ef4a10b9180eb04", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ec46f3fe1fc5f9e8abee2eccff29138ff2fe9d17ce7854e45ff861543bca1762", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "8194452a1606d0ddbacdfa346771e8e32e5677ee72c88d8f3888470731e401f4", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "8194452a1606d0ddbacdfa346771e8e32e5677ee72c88d8f3888470731e401f4", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a352e048890ba8d0c06eb8772a297d8e2dc3270f57662ca3e8cd55fae6a30c42", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "89cfa83d0edf88290876fbf733f45f048a225947510e815e8b89c90453475990", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a5d11588a89f2a286a4abbb840e06ea71beccbb08c8ea940e6893e4f58f9aac7", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "53a2fb47b95e1534dac980bf05ec3dbd2c1833b29f0411d301ac8d100ac89dae", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "53a2fb47b95e1534dac980bf05ec3dbd2c1833b29f0411d301ac8d100ac89dae", -"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "d5ad22658424b8236f0289126ba2f16ebd1e843712663df936f66f1f0a182419", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "d5ad22658424b8236f0289126ba2f16ebd1e843712663df936f66f1f0a182419", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "24ff076ef73c0dfa920ac3307169fa26ce6dce315a52728092adc352af9acbb2", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b2299cdab701ca5d810c486a1679f7a4d5ca712482075bbafc24f57164799d2b", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "85e85b759d828d556d1369ca07d15a03a75667c5abd550d818b16995b27fe3b5", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "364636c0297d478486ecf2a7f7dde4b7ae85628c05eb882835b78da73b8f791c", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "9a2f753465f778ac4fadecdd3819133c17ceaf3354610eb1f32e3af320824c81", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5e4e8d99c1705b5777826a96860a4d99fc80c97e49494a6b5c28795a114ec50e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "1ceb19ade1cfef07b497c9f76a4a167410b187fbae7191ac1f5641b3df41234e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "684e4befc58a9f3792b0bf9155674f5f308396474058c23f2feb5c458a02636f", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "f9f2c2f472ba627ea19842b17da884b9a65a5f03b290793e7e0163466f83952b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6858c3df8e4c3d616e5b28c9e85ec130ef19c99eb8b2ed76e52ec07089992cb5", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "3407de20c6e931b0b994602d3ddbd9e3830d86ed8728852431db13a29f70b7b5", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "318ca30cc750a6ca901eb0b05d88aa5c2039cb7b04294cadb1628aa9dcb780aa", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "355d14285bf5bbd12a77d32b26465a97fd8cbc81bc4323a68e630063a07fa601", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "683d77dddda2960f3812f030f0897952ad239ee1c3e754c632c4227a57d82c27", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "5ca8449e08b0dc52df7f64a3e9e7d191aeda1578dfc0d57c1eb5f8eb10b53e0c", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "31c29bd88e760d549e44cfb858cfb7acc9100026a23b0584ba7a5ecc73aac8df", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "589813f9ccfa934b62ca2bd13cd60fcc9d940d37edfa448f23b8cadb80673bdf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "44d9fcb15659ccb77b462e49a71f43f1404eca6dd51538cfa4375bc706505203", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "9a5e4d4271c0d4ce3b94280ada82620cf11509d6717b45a53391aa56765bd5f1", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "dd36e75caff39e542d84932a39110a459e6c3d37744845c5d98d662be40e9a7e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "db76628ad7d6e2f98c952467f24223c0a3e89ea70ad167b76eb62837a02b385c", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "69a73a79e4800e878bd400ae8c9fefc33031c9b321b3098235c1d5404a8481d2", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "f9c9e3af6a3f16c96542de861c947831ab27e818aaa76a1906fe44023798842e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5e4e8d99c1705b5777826a96860a4d99fc80c97e49494a6b5c28795a114ec50e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "1ceb19ade1cfef07b497c9f76a4a167410b187fbae7191ac1f5641b3df41234e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "684e4befc58a9f3792b0bf9155674f5f308396474058c23f2feb5c458a02636f", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "f9f2c2f472ba627ea19842b17da884b9a65a5f03b290793e7e0163466f83952b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "6858c3df8e4c3d616e5b28c9e85ec130ef19c99eb8b2ed76e52ec07089992cb5", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "3407de20c6e931b0b994602d3ddbd9e3830d86ed8728852431db13a29f70b7b5", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "318ca30cc750a6ca901eb0b05d88aa5c2039cb7b04294cadb1628aa9dcb780aa", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "355d14285bf5bbd12a77d32b26465a97fd8cbc81bc4323a68e630063a07fa601", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "683d77dddda2960f3812f030f0897952ad239ee1c3e754c632c4227a57d82c27", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "5ca8449e08b0dc52df7f64a3e9e7d191aeda1578dfc0d57c1eb5f8eb10b53e0c", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "31c29bd88e760d549e44cfb858cfb7acc9100026a23b0584ba7a5ecc73aac8df", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "589813f9ccfa934b62ca2bd13cd60fcc9d940d37edfa448f23b8cadb80673bdf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "44d9fcb15659ccb77b462e49a71f43f1404eca6dd51538cfa4375bc706505203", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "9a5e4d4271c0d4ce3b94280ada82620cf11509d6717b45a53391aa56765bd5f1", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "dd36e75caff39e542d84932a39110a459e6c3d37744845c5d98d662be40e9a7e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "db76628ad7d6e2f98c952467f24223c0a3e89ea70ad167b76eb62837a02b385c", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "69a73a79e4800e878bd400ae8c9fefc33031c9b321b3098235c1d5404a8481d2", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "f9c9e3af6a3f16c96542de861c947831ab27e818aaa76a1906fe44023798842e", -"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "e47d867d849b1189827c31769e1f6eb2f49cf5ecc5a5b23c96b67f8dd6375b47", -"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "444add25bdba92e4bd25ad76f624082aa362479516f9f11765684518d542d50e", -"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_bch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "cdda774823d4aa7a57811482d232830d3ca8d5ead429f33980dea9fbb210cb75", -"T3T1_en_bitcoin-test_getaddress.py::test_btc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_crw": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_elements": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_grs": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "803d970d9885cbdf69dc14e4b66055eec852dcc1873a2bb3716f067f0679824d", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "fe1187112763c512ed209f356e0bd807ffee045955c874cbba9381986413574a", -"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "3c27d0f020147af965148dba508454a2cca3897b78684b4c79f5a0111eec9618", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f3fd0d2e378c4dc102b40b81ee54e36eb711cd61e37a7c9feb9469d8f719800b", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "9cc588cce0fa95df160daefb5236ac7af5270e756f4421119724b4e4618f4055", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "cbd33ea73902e2afe3dc51a9809dd45af0e01d8cbc9252d17e74f1b4a71bb3a7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "65a637dd4deafac298c7a7098fe4e6206a502a0095662d9fe7ceb680208c1376", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "b578eb0579659e2b583ff8ee262c73fb56bcfe4cbcd715d8bb5af2e9bbbe5e1a", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "697c3e282c61be3399be4d83f4ce5fd9d178043581e83cea8b30b2d72505f97f", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "590627251da72d7217e6ca3eb048942431c941220a226892c596d20d3c190787", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "561e96e373c1b06caf3e181a02c05006cf8d3cf030942dcec8b72e2692d93081", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "cefb76c78e0c254334a60494722cb61ffa7abab6575605bc66b6b65a6a2b0386", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "98a2c7f9357c3496b6893aac45f154bf8d5c4c78d80567a03f718253f4ae8963", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "a960d66dfbb6558d7ef5117d6ef2c4e06c00840b30eeb0f03ff886716c7b3122", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "b91e1c80a6a4038cdd6975cabf84b2d307d182936fc91a96f181942d12d7ea9d", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "b06b8c4336aecef9d29c32d0edffa8311faf3625b66a438d39df424398a6b350", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bc04a2fc5bb8312bc0b87fac2cc272224e6eda91e5221fc89238cd5111b5b258", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "11127aec8805163f9a6cbc8aca7bf8324df16ce51c5a9d55fb94d959c1969dbb", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "424bbd866cfd4053bbec8f91587bec1fadf89e4875250e8e773fd71f943aca08", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "92856a5d4f582bb9e7599f7fee81069959a31f53683f59d814f4d56c5e6ac2df", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "0d48d2e986d2e676f2ee0ea2c8b98c083b98bfcb62a53d961601c3014fd8925b", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "28becab7100d141758ea2638fea39efd5a7f348dc83738ce2befc82c68b0f18a", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "dd4034fd99d4c3e6cad0f0783afc1bb0be19cd86536120316693101c544aa9b3", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8651e2ba33eb62fad312e18d1bf9fef6331a8b0405b859a6815ae45e6473b916", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "79fbb96f3aab9e2dfe16a56c24c99cdee4b56fb3363469614788269039b6c476", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "9d7de537cc6a425e66a5dc041f9cf8370838da47606ef0105a4457c42ff79aa1", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "894f819df7b41955b0a481ab6ad8c28812b8e869be9da7cf648ac3655837eee0", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "894f819df7b41955b0a481ab6ad8c28812b8e869be9da7cf648ac3655837eee0", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "a037411f4990dbca9406069afeccdd565f8b5bf069297c62be02eb90b13bf841", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "07299509721b2f25a7f5521fdd8735cc97689859556f0b73d058970694d9a226", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "5541c8920737ae060c7b8bb2f9ddd5ccd1af752177c708f001dc52554773949c", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "9b597dd4c396d27f02acb3696eba37cbb682308555574d2205847df12b35d3c8", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "6c5c2e629e097a7913f58334a345044549d5792bae589855510df259cb4e51d6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "707af8d4d8492c082d4a26793fde8d3156a75b30be24863252c0ab76318714b7", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f51b657afe026f73cbbf5b552ce6953136334754b571ceb49a45a8da48621efe", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "54c2f3b7e8b5de23e74d5d2ae3caf7f764177f654de01e377021180be3ca2403", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "2187eb44a9a6326ebd2dce17721b9fb3da3cecbe0b20b870b956c8b4785383f3", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "73fb8e3ba524d3fbbceab68fd1ff878b69fc306d1fb1cc9bf99c651ae11f1ae4", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "92b6bba191f7230f32bb2a94e17b5c25adc632aac592e126075a5e2663b507d7", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "1e43c9c7349dfed358f1b8de5d42f205b979a3163313e2900dc368b03c472212", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b4ee7b4c8f6c5e8090a22be2befb8fbf5c0e7dc9c12820a75ffb503b75220036", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "2f90abdad13c8b8749bdfd8e5c26b0a17d6f080e36a39744608f783c0e5053ee", -"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "1ceb19ade1cfef07b497c9f76a4a167410b187fbae7191ac1f5641b3df41234e", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ea653dc230d002e3e7bb7236a3364e166f5332126463743974fb5a0e8f7e8da0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "d80a1e9e15ff17f3714f4740df7f7bb97d78d71ac375da2c9a1fdeb89dc3e209", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ae1f9de815c12d841e42d812c53eaa9fd634f72d52a2828fb07f744c029d0ffb", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "57799251549702c7de585e19ee0c38cc8ea9e3910f94cce4073361dd7f8c2128", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d1d7281ec6a6c84cf49907a1c6bb2dfd41a614916f38b4b6a183089ffdfd61df", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "4ab1b67c3b653b850152b4bc475ae35ceed781f431f17d156cc1423d1552aa9f", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "dbae058d93e8ca7c4d1cf2f0a4c4f68bebf7717c41d98a4503d2b4ceaeb30822", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "aa03fce38d0919b3e005aede2209c957b5116925711809d85140e801410f432f", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "31c29bd88e760d549e44cfb858cfb7acc9100026a23b0584ba7a5ecc73aac8df", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2416f0126e852461f6c41e8f6507c03ce2b2189093a0d424c0cdb1e86b0b714b", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_grs.py::test_legacy": "d184bef22ca5a57ffaf4b3702b85d1b7f09d051cffabaa990bb54f1dd8a18b75", -"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "35d3d75c1bbf4465f4f5d571c8c95f4afe335084267b60da66a4877fac911bf3", -"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "b98c8bd72a23212f973b752589878e219c1079bfa26f95a8b49b8e95de0545ce", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "e9e25360658bd91f8ae8e46de781dda2463ca0e30f0249ab631da271ddb53182", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "3f367316bdc1e3e57b44f81a5608793380452a15428781043e10df8d6bda6cff", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "165cd3f6aa8d582543f4988c9e8b60faf7d157bff2669d852841f3c61ef081f6", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "292b4bc807553ffbf54276a3a3bf7280373ba5f724b8b84c576dc55b75bea95c", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8cf6f9717af2cf94efa6704f2d9fcda33aa6a86475fdc7d1bc12e8e33e4eee4e", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "99f5c0fe3c70da81021918062ce653103bae0b12f8cd686c4065b94aa13693fa", -"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "4fe5d774a4dcb81f463a5ff50ed49cfc73bc8760b090159b01a4ba0897b7397d", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "1f0dcd409c2a93739e49508d77c8eb9a66aff26b3213cde03ca49c8fd104590d", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "03f1a715c2bf7e6e69af6bc810315862bb636ecae1e7822b5b34498389f527b0", -"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "740e5f9291ed4fbcbd4d2c35d3f240c79c8059b087ac76190934938924632855", -"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "3578731907cffbe992eba72a601699fc4b5db776cf4444ddd0ca49bbcc41f201", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "95027df8154cac111d3e5e3590aca297b726b5c0bdf710c228231109a5eae7ff", -"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "a5ac6d42c93536673eeea984c9cedb93001066ee03043624af73c4d73b447bc8", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "cc16c6fb8c36b127f63326fd64fc01de2f65ceeed0fd21a6ab530d39ed3922e4", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "486e7a9dfea8e67e79f4dcda765abe850ff2bee859ab129b614601f86f8cee51", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "ef97d6f2da4a6390bfe6633b17697100b8e0ed4a309ef4b390ba7f951b2be058", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "ee9ffe210f83b9b385b88fa9653fd89e23f1648082a8f4baa2fa78c8124da964", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "f9e770fceefa1430a92689608730469afd96716ecc4dc25c92acb363a2ccdb42", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "37cdf1507a03428427a616702fa405a7dfcc7fd85a18fe3362130bf44bfbd9a3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ffd3ffbfe6e15785676a943993dfc6dc47df2fb5f1805ce611d031fcdef12c90", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "cd34a364bd32fc7819561bc651948d92eb462a9161c38d6c72b0bddd4d759837", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "d1e1b81481bb8f7738b23faabdcbd501918fa15817eb2ff484c7ec9737b24415", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "6f44f31d49aaa9a672279a3ed5ad9339f9dc988f0ab02b00af34dff444ed5a58", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "da9bddd51dbd2f1bd4dd2d60266150a379d123076ebe5de8230c12636f5e2cb1", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "fee7eca9075aa9967a5ddc2eef5d8ccd0459bc471b833e4bebaeb102ccdcbd8c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "1af5afbad7968c908ba2bf9927dc1664aa9ba9be00208ca9615c3cb505246269", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "9405b34f6df3d8b9a898f31c4f57110a06704d95cb95a9f35cfad7ecb4d43def", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "49364f1fb626f276105f205f3539ae6906fdd6a3ba704ae7431b02c2794d07da", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "fcbc9cb53e614dd534000149b3ed0547c3e43797f41560cc6314373413fae9ed", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "9a4a33c6c2ed666f08c56c52fb84f5a3858c75f40b09e3f1413c414187fbf435", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "a45f433142fc9f42d0b70cdbfd798a84d57592e84609d8e2ad9053c6e1b59252", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e883aec9dcc29a1cb734351bdc7b92b6a49299980ef327045ce97be7f5707d4f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "07826b4257783c101137e5c6bd10feaf0237e66813e1e19b144b96862d3554ed", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ba1affca5be433e15490bab6df3eef5d6eed5542d4f4c9732d43c750a2f5a1e3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "a067ee89038f5ae068c63b01523c4ae0efde9690503cc44cbb2541c89e8023de", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "318fdcf35a073affc6578953e10543d5dbc8981dd7de518ad4a05851569090c4", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "02eae1b00ee1300b7d0803c4c3445ea3a5438d5b646f99a664127f8aaadb8762", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "6fb644ce1f154a6adf756a86203302e31134c63c00874164172a462fb72a2db9", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "baa6ceecbd6a076c7bf068f8b95746ca1d6434ae73c061b059bfea73b451f24a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7c145e01523f81e95b35b892e384baa7f337397ddd97891e627e106e022468e6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "c8cd4b4bf51b83affdc770a4fd615ed47e89edc9da36a17d9c6d0d5b0946c399", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "558beb077f89978abdc8abdd990641b885ce0953b9ca0c9760439feb3ad38c1e", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "b776684de388df16820075302eb53e07509ba642f5d132d8b5bf4f52dc12f323", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "bc852e01b4cdfe353bf416a5aadd874a6cd96bc9bea4d43f5475f04a4736cffc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c77a7ee94576cc53e0587e965dabdadfc9346f5217ce7286f6ceaed13732d77f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "62c7f88fc56882fce99b05b2bf117877302442e2c2e0a6131ff47684552bb167", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "b68d56612fff85d770b62731339eeca37a0ac893e35bb685dd4401292c5c8802", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "907dd8b19ecd8dca3970237ce46ba0d8a687c5b1619a42b1ba5029ca9ca9dd38", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "bfefbca943a5987f1b4911d11b2866b3443b721ab1cc9c0c63cbe496b0539b47", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "b85d8eda0975bd81cb5b023f5d784baae0927b02db793727ae6462d2e4c8acca", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "907dd8b19ecd8dca3970237ce46ba0d8a687c5b1619a42b1ba5029ca9ca9dd38", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "907dd8b19ecd8dca3970237ce46ba0d8a687c5b1619a42b1ba5029ca9ca9dd38", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "907dd8b19ecd8dca3970237ce46ba0d8a687c5b1619a42b1ba5029ca9ca9dd38", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "466b6d463e0eaa17308d6aa5711893b6f7330f39ca4c1b0f30fb6237e9e4afe6", -"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "5226237679fde6df5fc4880312e68caa8c1495e8ab945d6e8fb770c74b4d5011", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "deb19b81fade0bfb4e6c99fa3a9872ff7c5548aa0a20cb53afe92cfef3bd7168", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "9c9cb73c34ff4f7c71a7a88f4bfb2820cc8d485fe0f200fec20806a5d794d3ef", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "9814ac071bd0ffbc5c73d6dcfbd9a2f6c5ad8a24a2a17befbcd76ca36c436bdf", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "9814ac071bd0ffbc5c73d6dcfbd9a2f6c5ad8a24a2a17befbcd76ca36c436bdf", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "09cab64e8c378640582ed1bc03d15dda0f9bd06dd558ce991a4bf82d3ba222a6", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "d3ccc89a402e528b3468cc7363c0adf8ca776acf5c2eb41d4119abc9f714bfc2", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "20b87f2209f531a82afae75344a0a67d18eceb978c38ebedb72b449f4b47e056", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "b2c785501fd5c4c758800e09221e3ffe9c7380d70bdc2ccaf7ac995c0422096b", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "9d29ed8af0968f84836ecc31eef287e8863b9552cf183eea8c27f10abdb3bd08", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "ff22088c47be82e3a85f9e8b6d636062dd2109681bd30c0fb34a7a053460ea90", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "ff22088c47be82e3a85f9e8b6d636062dd2109681bd30c0fb34a7a053460ea90", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "cabf97b0cf0120d5c75b51ae5dc6689f6d994b11ca0b3bfdca473f03ce57f30c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "4ace6478de4b122e321b5ee8b0465274e8c74cddf6912242392844c181053880", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "e4087cc1940cf4cedccd710bb6fa5629e986b7dea97da0b541d27bd1fb217279", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "e4087cc1940cf4cedccd710bb6fa5629e986b7dea97da0b541d27bd1fb217279", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "ce81306f241fe3404aa67d84d22a5cf6b7e3875f61d8033f02c5f992eae0b89c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "7b2d39755fe2ffe86369576ae04bd2488ae447c5ddc7212a66b8e2f6fc106b92", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "2911b85d8e9cc48cf5cbb12105256d8ca07d77856297eb918d46889d27ee342c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "2911b85d8e9cc48cf5cbb12105256d8ca07d77856297eb918d46889d27ee342c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "c81fd9c479e989680a242bd77bbff3ef297d0fd7f616419ef545b4166d5ac814", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "36342ff65d9b1c0dfd3b9dbc638bc7f4c12dda2e6a3ab4c6f4c9263f93c9228b", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "92c9db122927e1416646385565858f999e2eb6206f5a5b35eda7df947cabbe27", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "92c9db122927e1416646385565858f999e2eb6206f5a5b35eda7df947cabbe27", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "a89fbaab1b1ef8597b4fae7e4caa08e44934ff60766cf241a05628c7317a1318", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "e129977c8650228e3824cad61b3cdb4588536791a518dc3c22dcd23a9a529a46", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "67de99c28d419077750ebff2cb8e39f17a89908f1843c4f29b5bfbfffc95daf5", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "842f4ad977419b00cb86b81f2d622fb3b52dd53a74f26f3d3f4424af6b6bbe70", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "84b98ef282d47c51e91affa3d232cfe8a8171992f4f7254fdde6bfc0365221c9", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "1bf8b2da4c77a1cd5fe4931a7db8e76479a92bd8759829bc88b1a5232a0633c6", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "1bf8b2da4c77a1cd5fe4931a7db8e76479a92bd8759829bc88b1a5232a0633c6", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "cedae376f1723e6f996eb9422e41017ff35ba06937fb1447743c277ab132986b", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "1cd26c9b250aa555c9f4ce130f63c6a828460f3fab5db161840b3c6a9cc07982", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "b247a8b8be38c11a7fc0bfa525c528867fa33dfaa4cb631512e0b23c4c7a1750", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "b247a8b8be38c11a7fc0bfa525c528867fa33dfaa4cb631512e0b23c4c7a1750", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "fe071ab2bc7daa2dceef20d924f83824ef765c0c58cd850342193ac18e71c61c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "f26e41110e5c102eb623f44e6bec69abb778a78cf3479f431a1aae6aab46cd83", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "fd64b70f9d02e3b54ce1880f5d5a34c8f2de0b222921bd38f606c10d9ccb7149", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "fd64b70f9d02e3b54ce1880f5d5a34c8f2de0b222921bd38f606c10d9ccb7149", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "c73cc0c4256270fd5db6ff20ead4e3e6ad35dc1a0b5593473f3f54c14dc0e8ec", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "0ff90cdb68199d61c6b46f60d7c62f884ef6aa9ca43044baadc33d78bae500be", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "269f1e52da32bf99dbd6662e4c4de41aeb6fc3b81bfe108742c2dd29194b2841", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "10fdcd0f78d9e7fa253b60ef38140f1e6e6d2e4396c4e86de063f5254bafe57e", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "7415fd46e71b6ab29da90ac783970ff74816d069eb6bcb92bf5083358e5577f3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "89c3a781ca9c34e33820bec5803e647d51a58f9856421e9b9f0c2c62d6f401bb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "f187c140af1efa9b243a6a34e31063038c09f06428e08b35a6cbfcc522e26d73", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "ec1a82c85fea4dd2a49115d33b70ce8dad4ced326f0b8fe32f00640d9dbcfebb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "e955a47189a8228fdca86561623577d9b0a84117d03081059f5ba2426fa53677", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "8fed9ec6914abcc3d1c89b2b4d09e5c1e149e55188e0580bcc121718cd27fb54", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "285907589c8e97f22fd7a27707348762b02e4ed2a2276e9b6ab1e166d53cf20d", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "0d476d0aa0ec9da767fb12b156b21c5db07d497c92632b543a288293eaa4ee25", -"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "b717ede6952185754ff51cb00656bf7f2921f6fcca2536cd629262f157714e05", -"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "b717ede6952185754ff51cb00656bf7f2921f6fcca2536cd629262f157714e05", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "a980968c1d8e2c8c0df88a437d4acf434cc62c17c569d1554cc2807bad717c4c", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "961678c79703e6d8228d01d7b6c6cc463aafd0361063916aa7d782e3e67b42c6", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx.py::test_information": "ce69c3788a2789d907ef7e3b456b18ad75b84a5f6a615af273f07e44c4f71b9a", -"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "78a3480b46e914af70ca4b479c0e4c27db218937b2e26c44a53f318ee5900bda", -"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "05ceb0ca37ccf8720540b9ee1a6cd543c8d920939a5d021b598b5aefc3f3243a", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "76e6fb265c6dc658ef2bcfe9d62d183b05bbffbfa981df842eb6ffb6b8e37b95", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6649ff6d1d6f61d4e316ee1e7d336d88bce9337c80a04b126ae71f820c69424b", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "aaec5605fc25b5219284b45ec6c05b001737caaef7d8a4a258c01cbd30a56995", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "6649ff6d1d6f61d4e316ee1e7d336d88bce9337c80a04b126ae71f820c69424b", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "aaec5605fc25b5219284b45ec6c05b001737caaef7d8a4a258c01cbd30a56995", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "2b427e48625c887bdc993c0f8e44df707994dd35c854c66de59a3f5aa2f70e04", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "44bca1467c1e7375dcab550765146775be316e04d27a0501ccadc00f877c3e6d", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "dec1234d171caf74da53a868f3ea96b46e373300c67b82a8d767c26cc9cf30c6", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "73cd136c85a4d39c1ab59a7a7d83027d677921d794cabf5f7756c6a1fb70ccc3", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "74d40c73f4893a015b94bc6cf44b3633512ddbbde0b2283f5ebd466d564ba3b9", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "df95790ac78b09611d220780e5fd528962a989054b91513fa6a464aa60b507c3", -"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "7becd49db4788af0b38df0586313a4eaa1e33158ccf034a4e061a769f2626e30", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "0212619e766a64d9c0664a97c5d9ff6ba166d1f6b21fbcfd3e502eca2c12ac32", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "2ff810cb638a049e1cca65d33ef1401b0495fddc4cd062148d5bb22c611098d2", -"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "b1201ec8a7e1ca51f959b4a0e57788ee8108106518f440ab6adb05291c15a303", -"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "eb59b88086aa0b34d67f4f8a53a2924533a933538402d3c16b5e902c94fabe55", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a90a4f1b97fff35fbb16f4ce5fcbc67694b48da1c110c343b0773db0f57b718c", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "0b2aa21e23fa295be9eefa4631dc17834275dcb084a7621e3ac7f5030452ca97", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "b59610edbc2447b74b63c082e3e128ea3cee39b007feaa85e731f59a266255e8", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "bfb0c14bdc23f9f664166b3a50ab34c90da3dc089c0a0080bb33c5c1f2a95e57", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "b717ede6952185754ff51cb00656bf7f2921f6fcca2536cd629262f157714e05", -"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "cf3159ec0ad366bc41aeba47fedd35baf77760a64c4a4b1e1a92ed7434b527b1", -"T3T1_en_bitcoin-test_signtx.py::test_two_two": "8ee39f6df723a4b252cbb71331cdb67b9821038cf444f1039be93ab40f0e2491", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "7becd49db4788af0b38df0586313a4eaa1e33158ccf034a4e061a769f2626e30", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "37da0c9c1fe86d60fa1302b07296eb58c5a88755535a2e6f49488bb8ee111528", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "71f19ddfa113a3d590f468c006df815afa4a09b9fcda6dcf21c942090b51961a", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "86cc39d8a3960427f9c7ba59c448078329acb883436eab7f422843aa99dafaed", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "7becd49db4788af0b38df0586313a4eaa1e33158ccf034a4e061a769f2626e30", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8352ec1fd0aa650ba68d8f73d2910972e115fc695c51eb541b082a7ab729f783", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "1643c8a8f0dcb39bb22fcdd5057f1b662ecc9531bd08596a9a9a42dd622308ca", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "50b9c5924147c1c083db4b822825eab2394784e0edc7f8fafbdcabdc9516a858", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e00cf6f13431797812098c147dd76abe41ea4afdbb1b2ae343c6d3c243aa2310", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8352ec1fd0aa650ba68d8f73d2910972e115fc695c51eb541b082a7ab729f783", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "b9dfaa712a5ae0d54d46f16937fcef910e2cc1fcd7c1e5b0690b33c8822b7605", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "44fae59c4129c54464830c412c3e9290d1725de448ba19c5d6037d0db6f953c3", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "57bb04004329015e96fef212def0b0c2bca95643d454d01ba3bce535408a4099", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c6933a7aea828048a591f85fc8d2c77ea1ddabad6095616550be9b360f2e5781", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "ac1322d8002c123eaf6226eb81964a668b1eb589d4fa4231d35a4fa2fb0dac10", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "1bae5a119d6873e427b766b17a32f94c8e7424ac213597fe70d1555607cabb82", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "370da20cc8417b8d042f6aab2e9818c14a5668ce6174d565fd2c4ff1d01ce088", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "6ad03832b922d7478a91460c7c1ebbec120b081a507b44c348e0d7ce105f6e4d", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "2f7060fa853811a2e672903eaff41630e2f3e1ff1aa5a649c7d17ab3d5427a33", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "715220cbfcbeb723644a0afc50db3e03b820042a885db5f9121f23211ef109ea", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "8fa45833f7db07eebf918a4e82ae9a1d6a5890fbc85a053025bb732c12032bcb", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "4ce75532018e46ce9f04179b5d52436f76bc03f34193bcfdb9e38bb09e7f0ab6", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3eea7b841685dba8cb1c5cc5324fdad5718ee84c99914665d4f2c7c4206e94b5", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "02f48759769b07f3f6beb4d3c45ed758bf580f5293be12ba2c9f62a5ef849b5d", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3eea7b841685dba8cb1c5cc5324fdad5718ee84c99914665d4f2c7c4206e94b5", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "02f48759769b07f3f6beb4d3c45ed758bf580f5293be12ba2c9f62a5ef849b5d", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "4c97210bf64a3ecbbf004b2629ffea26b1ff4aa7f3ce94471416c36d23e86587", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "48370001c5c687d31d7f4fe6437b4fd985394ee5ac4cb6ea512b21e7d992b2f0", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "4b44961e1d97ea50ff0436d16bc0dc601841014fb90739a35116af123f3a74c3", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "1c14fac09c284744b78ad37217590d5cf16db908aed6f90ed3bcfa63a2a961ec", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "486a8eb9ad940ea7cf626ce4a6f12e7e311178794f07acf04a2b0e1bc68a9d9a", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "e093cb1de1151bcf00f239421f34df4150c13d7f823ff412b65820339e317bc9", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "5a76c9bc19244f3e36917059197aef3ef9d06a719845e87dae16cb95c38e007a", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "c2838614f7afdb5d305cd035709db0a6f91aeac230ee83c35d391ca4fced1027", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "4ceefe89150a603f10c502a074bc9f01973650ea58e0e8b397d96d307b440121", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "4ceefe89150a603f10c502a074bc9f01973650ea58e0e8b397d96d307b440121", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "4ceefe89150a603f10c502a074bc9f01973650ea58e0e8b397d96d307b440121", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4ceefe89150a603f10c502a074bc9f01973650ea58e0e8b397d96d307b440121", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "75ec4732f592453e74aa5caa6817c656f07e36a989988fbf7f4ca16a7a2b6ef3", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "75ec4732f592453e74aa5caa6817c656f07e36a989988fbf7f4ca16a7a2b6ef3", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "75ec4732f592453e74aa5caa6817c656f07e36a989988fbf7f4ca16a7a2b6ef3", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "75ec4732f592453e74aa5caa6817c656f07e36a989988fbf7f4ca16a7a2b6ef3", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "e10e3b516e379222f2011e1afdb196f23944597a9166970277c30fdedf474962", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "ee4da3c943ed7785f0a72d3bc08aadae0cc3a6a3184758ae4612d57e6c9ef0ed", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "1a292152e9655586db0ac0d99bcb4278724d6f8310c6f3f5ff53122d7d227ab2", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "1a292152e9655586db0ac0d99bcb4278724d6f8310c6f3f5ff53122d7d227ab2", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "cc55a95f8b49f186f79c0e3227e2343a84732cbf0ebe651ab4a0ccc15bc89e13", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "b252d573cfa106776aabebaae1bec7d5cca79ee5f71c7995bb7971518e490c79", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "87d468786bb0d549035b17bbd852d1261b5aa8838dd45290c2ca4890b8a2c787", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "cc55a95f8b49f186f79c0e3227e2343a84732cbf0ebe651ab4a0ccc15bc89e13", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "bc4c43f9c78982e0e9801db3fe41e189285460a7518ef77bd231a4d05152d7c1", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "401cb1195d4fc62d0026de7cf489adaca74a0f8e523552b247c3d3cfefcf25fd", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "586a2fe040cb663016d9963c8d7a708f6eaacb5188ebe303230e02acd16c4a3c", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "00b23b217712ed7be94c1b238e6dd4ac24bd65cb5ba3a1d585fc30fea7668392", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "5d2d977075e3a07eb0b0a751001222c27a72f972eb589c33357a6d4e2fdf2705", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "1fc885085ba5c814ce6d195f9c2ddee07fdcb55be1cc1e7cd9f71f542e6a3a58", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "025845b35e177009cd87a86791dc8cee4fb9eca06d5f3b032e19ba4e9b485894", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "b1a98bf69d83e3020519fffa343f2ed6229741ea1a33e0a56e68fa4578e1b8c4", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "1e0fb061720918dcaff97ff54e4cce707dbc26f2cf5753d27180279ee108fe2f", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "ea72e421f53db326043ff637cc629ad23f51465654ee0c3a4ca2886424c54fcc", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "c67accbbb8033cf68bd17718bb697dfba325c312bca250be792bbc1b804e25c9", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "c40a96bc7864afdeb5b0e5ff040f904147962fb91abe319de378e2eff20113bb", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "94cb61f180b2cd311fab1a1d53606700bbcf72c76b62d5723ab3fab0980b6d34", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "6fcb44187a809ec76ee56e5616f018faa49ee1cd7743f38d2d692f013573a70d", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "3506278c65fec220fab03f41157343c7642c350dfe9874ad4ad88498c0e0578a", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "35b0e158ee9c3357cc8b998d94868b0a7081aa40a1764595bbb9042bf3a16d32", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "3a8927e6025218bc3af28372d8e93fbfbd2625320a194961c051c769cdd8ec24", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "8352ec1fd0aa650ba68d8f73d2910972e115fc695c51eb541b082a7ab729f783", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "5bb378fbc2728b08ec67011a09f4d0d695f7145977097fb017922fcb3a3e8110", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "091d07613cb8c22fa4c92a0cde8b26a50310a5513711d511a1c0fb4b1cac666e", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "433155fa36b69a290e9690eaabb638a28ccf57787f1b250b29d234f3962dbc0b", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "8c65e23c79e57dba6ebb65deab16ea52e04f5aa835ec3e266f78d5099c26e060", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "4e13c2096628a906bb32cf81e3a34c150fd04236410c5c51fe8eb647a838a6d1", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "a01ed170ecc90bc94f4ba26719a3f8985138d321315c97332f6053120e4fe9ae", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "feeeac9a878d537026e7df222a072864b02103890629138424e73c4abeff9167", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "61cdb2e71a1e6d1f1851c81448f4beeace5f852f65cd4a03fdd534b686bdc971", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2b72015108a5a713ace0bd0d90e453e0fe11decb218fddeb72e2a85962ca1b6e", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "88d58526264952186ba81bfd6298d816b1a1149d58b56440a665636f6cbb1be1", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "71a676bad2a459259545b997ffc300545efb3eba23194b0d31c2f726ed34986a", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "d462d410f996d14811777785397c7a6d85791883d80c3297b8ba1535da697b67", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "a38c5a1d82f42ef64a828653ed3b229dda4bcdadd89236b8f7d4a76f9bb5ac59", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "56b7637c7bcce8bf11801689e76182e6021054c8bbda443d7f9efd9dbfea57d8", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "5c26ce1c32bce78bb0227a6c50cf52d4e50b9dc5ebd9c45a20fd36ff8184b134", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "66009a18afc6f6acbe94c765d11aa6feeb0197a1362e9b94d5b187f7ab3c0884", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "d58599b272ad95ad46b170d659726720eac11b1974a5be999ed4ab5ceb3e4570", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "c8c0afe5fce504e024f1a63b831a48e4afc4bf47fb6883d479f29ba9117c787f", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "821043ad79cc2dda2fe938e8866ee08cb4a4f71c50037b4371bac3970a8ddc20", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "f50cf07ced380703bb4da3ee07f31cad16d7a20d9622b03f7d809a1453cf6790", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "2b950e7cae8bd3868f1e60f5c2ec773f9f6e335a37781ebba33144b20112be49", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "7f78d0af55c61199067a2e3847d8ca3f6add3b9c33f99de45ac9a3eece7816f4", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "5dc3109ddc1d1517261058fdd1985eaa0d4c53ece4f2338ccafac17de6818f4e", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "23666f5f9bbf4b7e4d41e2422e1cb477a14a0839dff970a876bda10e6e72eae2", -"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "de8a5381458d9b59633ef115f63958e3739bea9cb93b5f7838081c1eb50f9eb0", -"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "a92eb76eaa07c1c505dd05cffe4822e822d7c938705534324f95de5fc899c71a", -"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "0c22e0d5a2e565721a2dc339b66fcb6d4a68590b1459e5b7a3f9551a6a4bfb8e", -"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "de69b20cc5f899cf37218a5448bfb47742b1469404b7ea115d81f844a666d71b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "c7f03fdc0e47593a2c4a785f607691a7611b17c30cdd18fdb73028cc7e42b3ca", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "4cf3e76e3b4aacc8e76d1f27d0444077e668c108bd885120c2954f19d2ac66e3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "581b5e491e71966aadf8cd40cead74a7f1eb42519159798b0485085ee010e62c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "ba6a0032bb6d4b8de5e8806727d7349ec1724365040e915448372089f2097bd2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "7d347020f9c62c782e0d32f5d47b589f443e7d228165f87954396a89ba579e5e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "2338d4fb81c53fc669a19c06a5feef502890118694fbd6724b4451f0395d8897", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "6ad7f67b8f34f5249f9113ff4b7c4902651cf1a6dcf31b0a884efcbbdf6bd3e9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "69c3ca50d59fc98d2bf3658d5aa720594cd1d934413d2c378aee6242f1441af7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "3655e0e8ba21192fdf63972fa7e82eb8f7577104ac37175bc35871851faa2546", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "527553ab684a54eda8f07e8d2aafaa41f7dc9bbb19564e0c4ff46c52626d915a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "70aab93ab48898f8a3635b4fd2649f7aefecef843dac6aed0a36f03448da8dc8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "4ce0d07f2f52c24b9701c98db398bf88586dd5cfd0eeebff635542963bea303f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "8a709968a16458d472c1f5589fbbd6e2f2b93452d4247f3c4e90c62d8e393486", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "23126f7e2761f97812fe8747901402f68f564e5d6522f077403149eafbbc17ee", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "7cb49a7868f6fc0ed212e89392dceb05ab1c6b92cccbfcb32c0beb2cea4bec21", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "787ad82da941e81c5726ba0199ff6ce169f07ea4c62d340ada4197f815d8478c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "182edc94edfb2199a19ea24ec243b955afdd7b6120aa24c1622005d6178674b1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "5eb9cf753749b81e154c0abca3431dfd98f1e38a42a66691a90ac6392030216d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "f6da344c4197502830a2b3f904c164c1e249819a065d501f19f375fae64972cb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "03047bf1085f37ff07f0b8ad2640dc5b4b43e08cd023e740e44e8d413c726844", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "bf2b8e13ad7d293cc0affd2c8d0487316720076d28e6042b0ddd8e3538f9dba3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "3edaaeba7eeb892626d114eb9c5b5c105fa5762b95f1255bd44f728ce1f6260f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "92ed2414edfa7d4ff91ea262d012a51f09c539e9ec1524779464b8b5b538ef4f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "2bfd760ba8b2b25009ab3c37a7ec85be7b8240313497ce5ff0d385be4b77d063", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "55442d8832f41c2e596f6daea91624cebef98ed10868b3d383e69ae09f4628fb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a624aaad8f393298502546260dc20f5019484dcaa7bb44a74c614a9b97adae0b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "9336cee5c71aebebba992fe2f321f91d830ae016ca02a75d3b2188a1fdc73a66", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "66ca97b163389d335d2e07173f12a5c9c77f05dab12eff9c54f886daf283e236", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "36841a21f895ae63505376574692690d8a5bb56e21531baac316bc74679cdb06", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "74db136030ee8acd2029689ed5ebe8091d1709261070797a23a3486af5f0ed94", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "dbf002d9ce3898fa5aebe3e418e4050914729a4289935ab2d4e4ae1e91983e41", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "144a11c682592b453c9d4433d4e96f72e84d06b8410b050f2803ff19b166a602", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "faf0ac9bc7104c015876da5e31eac77330cfebafd4cc5d5c74a8b6f691817ebb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "d308120191035fc24161a9fb96c5ef8d50f8989dfa8c656fd2e9e322ae442095", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "e2d1c9099d27b026c80cdec0d06f826dac2e9ab2dda1bbaaabbeb1778b19dbe9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "bf8c830ed7b908c0d161864a9884d06070e62854234380dfce61ff4470626340", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b0e8ed0001cc6f72ffb5bedcef9aea4baea2b109f4a7f80d950a4959466fedef", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "91391cf3254ee47643c3ee83b6a3c1b4ebfe39db859b1f4319a83c7be2dcfd60", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "1cc3cd8512bc31932c54be632e9650910cf1df352f690b90e0840054bc60774b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "95b43853e69819e1099051dc89d607a5b1cf2da3085f20832de4a6553a00e082", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "91a8e9d9e09dc2f1d7292a41297f95a8ce3a40c20b7d526c1b2d7bfdd1330a00", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "899a96043206e03dd5fa3129d0e7aa7458927765f5d47704c2bc8fa9fdf0a698", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fb91d02b8f34fbfc48c4b80bcbc2137dc45a3c2c860c888d5d29992ba45a5b4e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "a9b1046751b9b9da65d0fd7cfad127f56427b73186d7479df11ca0b5426784df", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "735c1c554a5b138c9c1326737d92a6a4609ba59fdc60eb7ad10991d2d9d89f87", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "398e58560a53ba680a9a87367c3e823c692fb2ff52fe92995974edc1af11e223", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "13eb9a05eeea15c9b1ac339146d8f49c70bb6b046031594f76181a4a1ebf53eb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "bd4fd090b98d48e71ea1bf7d3ef68983703d498a5e1c0ec6c452242b6151ac15", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "45a30fd8fb628bc87435647a074e6c99142628815fc9c0490e9347c6d04fa9a6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "fd5b3bed3f4fd519ed77457cccd226f60935b2211802042f14c5c5d859bf598d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "6b6806354c13e8c10b8d49b41d77c1ab0b63fec766060be4cd099d460c9d218a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c74aa37eea42d62364993c3539c3924257539b981a483e12cc14b7813a1a8ea9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8c8816617f679a53adb92061dabc52cf7b7e161dac29d53482928d2e5f0aeee4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "bb92fbb32511bdb781a4d46adc1dfa33e2f515635c78aa9fcd2bff69162414dc", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "3e6bf94533811bdf30c0a56e9bc8e68f593020a8938163cffaa6be27ae64e09b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "c77802b2701467415cf0bda67c056aee45002b82cff6b6b2b08350e8522fb7bf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "448f3520875d29d75d0963e0afdd7bc1fdb562040a1c90321972356a816db2be", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "0affef20ad560e3c2a2a5d6522c6857321a574363d15469af2f3b7289dd7e96a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "27e3fcf72b573492db642feb4e21a00efbc4a6642ae0255f3abb6ef66caa0f77", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "bef34c7307dea2b49e190b519eb64fdec2f88c91c5140de152d8e7962b0a6b68", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "b0f2c7ab8a2a6571c32aacecf191fe50d158191bbe3f5629d81d7115f1cdd4e5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4a40fa20315f16728e9532162bca5e20ee03985db72bebb51a302613c748c98c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "ae94d9b7c188afa484e8fe50730ec1d24a8b6ee566e69fae303c8846abe16e27", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "3a7b7a759dea8a3272c15cb05bb00e1c685c1050acab1b03cc786e28fefdda21", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b92f44320a58e1375ccf28d016b2cbc161f87641c636b8159f9780a5e12e694a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "75638c51ee73e900582ce553e1401c763e1a43b133af4233beeec8034e6d91e6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "009f0a47306e5371e65c7703be47c4aec55ca648e0c11773dd67545d935f6e8b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "e39d4ac33f562b7d6a6b40cfef0c7289bbc69a84a3ca80450d3dce0f7f65da4d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "2cd690a0c178713db0cdbf912a2f319f2947d785b0c7653fee5e78e3faedb710", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4c0f032511321b01ec0dcab08778b9bcd47ad2b673bcc2b5615d14c7a2d4f872", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "efa240d27e5dfcfc89092be4d3a266b1c56cb073ccf7286c085278e03a0a4ae6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "552e70a907dec9fccf0f8ed0b92d091e00a2df0e9016308276cf74dee668437d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "f39c044bd07b7e162075a98239d1ded94f999a3c4dcb337dc82c7ff5e3507f86", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "97f3ccc85f8fac4c85fdead9971627bd28aa7f71dee4e7782f2b8eebc580deaf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "d64140e08566f8cda583f4fbb668cbc9aea2ed5317eebe663e04fe2914109bff", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "758752ceed93afaefea5ef9810ff89dc04d79ea725782c9fbf189aa35e25ef87", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "9fbc3476271433d9274762406a2aad58ffc613f108724a602571b92fed3589dd", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "38e4cc7089c453310cf9956348efa69ea6e3dfa534b0e036f8fba74a6f8da5b0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "c0073022430f59d9b8e34519e768fdfdb9b8f103eec6cc4492586ac0b3cccdff", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "8601d87f6e0b3ac76ce8b4f4abdb08930111beaab01f14d732e3818e3c246d8d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "72f0c3d91f00c28b891933677e2caa59b6b77de4469f0b7d1fb1534feb9e180b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "39edc4a196d948eabcf7a3cde7ee946ac2e1242eb71d5a1dd9c2f9bddaf2ab7b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "9c3a627f879ec540888aa181f33fca365aa2b983d4ab8aab83122d8258259c69", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "6902bd49b571edf01976a6f0cd507e37f14f5977c3e41ada6f2ec0dcf5d5e979", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "476d1113fbd66e120d1463a359c3a87a118ebfaa63a2cf8649eb9f84fd6a8568", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "3edb7818762a0d1c2a49b173667c31fe8f96386a9c94ffae660068f082c833c8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "106881ef942d04bea8b404b3bf3f9472e99186ba252a5c3321a3291ae6ebf300", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a3f84ed6495a9dc6869636fdbe963280792a09124b5a517f0c98d76e4bf827e4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "2939d7f7d058f97e9e4817fbb04bbcbf4f809a2292d647f12cfad51498227406", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "61558a8bd98b963a6716acd1f3d2a64bf0ae80df72dec8a1b295a4f2aba4c7f2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "a01078b1d298ba920d1528374cbcc6b2e855c04d3e57a41ac7d9db7be450e03e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "19882a631b29ea5daa74b4f389bef0fb5ade84ff9484ad9af0dd4b8a38008e58", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "24ccd444dc851cda697581e78e6cdeb258ac86dc33b2f15c40269a2632a10e14", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "2bd5396c045884a6707bf778614dec2d1bc19918593797607b6f990f6bcc99f2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "9931afc5e49a4ade84c196e46b1fc3d00992fdcc0979524a21679aedd46a79b6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d79c787746909ad87531ab506428e86fb44593985250a112f1a3bfc6c424f661", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "6fb7ae5dcd2d64e5416aba170b5029a77c4e89a47032a0ae7e8c4d8261b97885", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "ef89f3b5cd312d7e4c95ed24bc7a91214fec18d43fc58977c3330f1053b02af4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "13c45d5f13a62e4c0bd03f03729b751945ba2451a2b5df1a4227543fb02927a2", -"T3T1_en_cardano-test_derivations.py::test_bad_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "deb009a495daef393ec125cacbbb7c55633505ea98ec1a525ef45c3c1514881c", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "bd9ae4418b9835a2ce0fb4ecf93348061c451e16adf20947add3fcf4e27b15d5", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "34391a3010b79389063f6701e48e99ec630b86e9650c1be4759d53b38174fe2f", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "656c87a5a30d36ae64a39633881dc90d13e7d92efc22e296fe5463b2e5115a29", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "25eb1ac1b0379ddd456acc2eaa1439612ba0c72f0f2b1a4abf03c403a5c6845f", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "56805d961ca9608d437964860c23c6108334013d8b9be4b3429573b0168759be", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "184afc11db140ce55adbbeca55a204c2706a1153c85627d14438fe4517152c8d", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "015f4704bd6668fa3180b9d3655c11b2a2199dc3a1790c8ada7d15f576045314", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "e950539c971b4c85a2c7c2b5130aacca3b7cc73ca690b380ecc995b87896f498", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "01374383e61eb7653aefce095a69b043cc320c0a121ab9f4b25ad6b8acde0e13", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "a5ced3ce072b05868f1c727c2c0c4db9cd420551c3f5d69b28e6b6758f4e61cf", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "ed8fbc9eacbd113ace2fd464d110d74ecc7b9bbfd1fc8ba75a38ebe2b7e4a1bb", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "bdaf567ba0b8f7085157c75f0a0a129ca01e8bc1f1840bfef190554532714f15", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "10ab42ad8f68910dfec96ae6275120239148370e5d34df301dffc9b3434835c7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "1b0271832a3223645e8200e0dfc8dd4382e0e80b5f3e127a4e308abc5585961e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "6c4b21560bed9b089f48f0478f8f0a9e8c2530bcf578db675f7456b1169e2382", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "9eeceb22303d87f2f0b2b3b0065c1f5d09bc54ca6354373a775bbafedc4271d6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "e0c17256b33f0caf4acdc6d97faaf9f76cce2864edf337c56b8bbe5ae3587bc9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "c815dfb37da7cd54fd506a1c1eb85c097fe8c49ecfe5cedd9e9b6c4b594dc46a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "f0eb3bfb655916a86f90d074f1eaab0b1c29a594ae824fbe661458910b57a42a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c5e1735aa70099dc405532c282f6696ee00425f29341524d81d540bb3b68878f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "950d21ffcd8e6b3cb529c51a784de897085fc6c58b0698d332851b08c6157ce6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "70255071912ce54296c12a3ad0e0b99f1c89169b237c85b3a57730f5b3cfb411", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "3eff48d0485cab11e8c169f50d6c3e5e90a4e68a47d6c8bf65a290c344f54ceb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "3bca28813689472f0d0528226b0c932a88b3fb2e007cb0a56961174d962763cc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "3bca28813689472f0d0528226b0c932a88b3fb2e007cb0a56961174d962763cc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e4716a940e5db4eb3b1190d89107003347a1a7172020dbd0163fd46b730b105f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "78c2eab7b4036afe59d198749848155609ee358866a8805f7b3bb1f237720b68", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "374e7972e67f430c67bdc89168f0e3bc0935ea68f4c274f1e378aa7b6f0fd18f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "21798e6df34936263e10b2d7c4624f146a313c60bec35600dc9a44cd1d5b6bbd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "576fdf5c692d40ae0b95412027dfe3e3b8cf36a692f84389f3048c86690b6f0e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "0bc348b5b00ca58c179780b8c86afc6e39d84a7d6c397e6a43f14343590252f4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "56f3b8c416a383088b4054f5f9b69da6bb8b25659114d23fb2c63ee594c75dea", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a04b8e0a7b18c8e4e91eaac3ef3806323ad42f15afaa0861ceecc35af8b7c7e5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a0be26a782a3015195f20c010e3edcc933cda507dfa7ad7951a06f7f6debd26b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "576fdf5c692d40ae0b95412027dfe3e3b8cf36a692f84389f3048c86690b6f0e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "0bc348b5b00ca58c179780b8c86afc6e39d84a7d6c397e6a43f14343590252f4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "66837def020eb82fe010aabbdc31b095eabd96a3679577d6958689df71cc0609", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "ae02fe725ada1aecc42cbcbb272718e7f8ad32ad331cb0eb64b9a1ebf73998d0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "1a0b2eba2ec48416a80a79fb8ce21cc44fc4203f093404647cc3ed82367a1142", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "87b065d1af59c44ce8539857bcbd3fdac94ad70059b5cfb06bf248d261ee44e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1e6cd667fcf5ed087b440b1c15ce52f5e735c7c319f49d0fd414784c0bc3bfe9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "b7955122ec7ba78a9d9a76c81589436f0c6cba1f04bc5efbf721978e920b681d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "3c64ac3897d740245be6832658525ecfcc0feb4f74376f5fc75f6164cb9d3294", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "9e1df4f87cd4d103d5d793c62f164c06f6674f90dfbe42f296eb78bfb2544ed5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "98bd20f281fb0b9bc88cf640324dc772186c30327ed2e3f455d087e4f694fce1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "740cfbb780582c07efb094301904c7e8a4f11bcf47b8ccface74998260f5425a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c45e5825997b2568d2566225bb46ea23dfed466b13062ec529536ac8f13e1965", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "ea0d55df07512ce3aa3112108f87bc3c2d0672bc3c95c28c29d057a2927024db", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "79532a4f78e274031a3b6b15d0bab6b6989a67b1caa2f4be3675cf124e9d7bf0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3af2d377608f782084ad5370d4b3bfb4b18dd6ea2a5bb2426acb3f1b3ac8a71b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "c05f5e837bb12eb90f06b94feea44b0737b1bff05097ed05068c4e39e78636a5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "86e7a06c442a94126866803d5a290413b4d9bdd6472693f94e77a98c234b017b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "e24e202317a0eb4acd7845171a564aaf09ce5e0c1c9a20609ac08a316bfa790c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "2888758acb22343e1e932a7bd9ab0f389a366048c4b95582f289cbe50bb9591a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fef279b27a5d5c0cf6ae1caca7a6243805137fc0889e17f54d5525df2874021a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "67380c00e194411470f96f7781ec381a7397ec80f12d5cc6326504b798fe8d95", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "0ac53c38c96ad079e43308853ad662cd3c4a18e81ae0a0d756498af00086fb02", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "c4d21b44c3142521bf37519187131bdbd3ee732c167b5a23511e854254756bcd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a6236cc568e261f8a1c21fdb4c92472117d4cef78cdda1ef91d7b4cb35752302", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "9425c3c4360f3ccf7f93833fb55b7aca3c7a8ea95a3382f1fec450ea8295adea", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "2ecf691836d1577253b08d118bfa3547ba26562f652d1179a464d9a7bf7a5fc3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "0a547025fdea1c395dcfd2dad5e0c47099dc54c312ce2954e3364322cc48daad", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "7acaff16bffcea9fca139750d6fabcae1f6975c9551826ef518a9e699724ec4d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "361a1b8656c9eeb36e38fe24f04292c9529aec7fa5611d5591db44af5ff21bb2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "878f0a6564f17a284893a258e9844ffd08effecbb7c348982ea4238521601f00", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "eb908f5739b7716ad0a8bfa8c42b1193bf6efed5cba71d4519f0f5ff4c90ca58", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "733557bb9d1d636228e70bc7938e8c4c2a83a459f6d223acaa7aef177e5785bf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "45fbd279dca7f341ec27251f2d7a6e72c80ab0e733e351193c5e1f58c06d28e6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "3363bf316e332aaad3fee0d1e4b6b08090cb24f63c3fb1103fd52e810f8b6ac4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "b7647ee9923a0dc2b1760db83dd83fcfaca181c0c73adcaee2b6ce3c8068a0ca", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "737a6da0dabe600602052c3324c8e6c15248a52ecfb12b5692ee2651367df370", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b5063e46a306e15300f6e61378f628abf2ccdea7717078ce8f7986d14137a285", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "92162eaaaaf41692f3b6d661e5e20e18b025c86ea1eeeacc5a152915862d4921", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e9d87535c99cbdf7ef17e4d7eec83d2a8c5ee0d4fc0c1ef4b1ddd8dc800786b0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "305fb2a857fce83ca0e082e2e7aac103b9604547a32d540db4c0620d6d32ef54", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "1d719ce55870c9a230c993af999fe83abc56d07417b65cb279bb778d6ec8b133", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f715dd0638ae1438c4d9760e8ac1473852540a0a1b802fb91462fea2fb4d9f25", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "d5432626bd4d043dfde6c936211488f08982ef8aa837f680e1c4745354546b73", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "178ab464ea9c1bc33311567c0c34ff5d68bce5cde31e4b7043d7fe936498eddd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "5bf7f15d07f135bb2f9dc452e425cb0cb1be0ec5d51192b7fda94076f794b761", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "6509051c1824d3e040b9a298daca2176a765f7ac3d3e04c50f49c7797ef32536", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "714f43649696c0e1b395834fa6523a40c45bceec7b8547b5056f00c4e52ff96e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "bf33179a4c11fa2d2b65753686cd54e82bd7b441b1ac1b439c84692924a13604", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4e41304b4040a17528f012c37dc66727475e4fd661dc7ef6375ac6e0544efc24", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "fcc0ef4cfe56107034e1eff8d946f20720b6a828484aeb55d8f960f3031e4c5d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "dfe427e763080e9999bb7069734bf45edd580b3ba2c4fdbf95c98afaa406a8ed", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "6d660fb3184d182db91c5ef1c510f962910ae88ec01c2b30b61f97ab31df23c8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "a373f165ac88e310930cb9aa4dd170b4ba146470c0feee291650fd58859de801", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "a373f165ac88e310930cb9aa4dd170b4ba146470c0feee291650fd58859de801", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "1f68f46856e48071e3c8a5b4016dd99b196282419a0407675135e6cb1e893536", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "8f89ddb0996ffccb3e28b5096e231cdb2d5cb8edfbc81c8b1fa3d04698acc07a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "8f89ddb0996ffccb3e28b5096e231cdb2d5cb8edfbc81c8b1fa3d04698acc07a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "89c178a3b290ae3c3e000e05add022a0a19db49e0f1fa906462135eca3fff1c7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "39234fb0210629896b27f7942c64271e88d391f04f0d9290cd861d455881e4e5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "42d5b7dfe7366c2855c0dc2244170439d93b2abf65dfcfea57740e47fb42ecfe", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "bf35758866bc87654e15d67ed1e45d10f86357038c5dd9f2530293bf65663945", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "80f012c5b709360f5438d84238294bf301e268915e83b02521b3e8135189ecdc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "750806cb0aed91bc078e09553391e614e8a2f4adda56e3647bf4ff4064e2fa32", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "47650082c92af73f408f58252913033934d448fc43967febaea8fc71bf68937a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2585c5b5904eff5d1a5abe06d1f8469285507ac0e89657edbec40184696649a7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "d8812f35d77fd29f2a03987ec1aef0ed6ec20d44cda5b71d633ada2304386af5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "c25a885f71e9e0f99e460e02e258fdf5c5faaeaad0fae12b1d2398310fe5103f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "10ab42ad8f68910dfec96ae6275120239148370e5d34df301dffc9b3434835c7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "f0eb3bfb655916a86f90d074f1eaab0b1c29a594ae824fbe661458910b57a42a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f72694803d630a748e0483060c7cf9b996692b403a38c3caee4462b02853a6f3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "457d373c7270fb90be6cbb0bdda957f338ea0364603bc4af9754b191516e72ef", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "457d373c7270fb90be6cbb0bdda957f338ea0364603bc4af9754b191516e72ef", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "3fcdbb6ab837b25000b3abf28fd02ec4ae151252c2f4a5252de48802d826b43d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "5242b58470ce5873107e76970a4c9cb09a445076a0c120c9be52cd2489735ae6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "5a56a1ae23f2a0fc77a6204250593146b583bfd8d6548a234243d7031dadc199", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "bf32b52fbaf81e1fbcc2b97d35dea981de6256d4676480783a5bf23ee1c4e4f5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "abf328c30aef8ffed7a5d5aa7024c864ad8ecbc590ec73db1f28d4befb9d20d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "8dab44a7f5896aaa72aa911141fc9e33c4af89b97e1bcba436ddc6b915e0a6d6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "026b307fb78f4d8be825ead6546a6fa6e05b73ec8abd82d101b72c22735f721e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "4b09ea37ce02b3a28d8e426d65cfb1014fd3a7cbf7f039ab3a332b33658915b1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "4b09ea37ce02b3a28d8e426d65cfb1014fd3a7cbf7f039ab3a332b33658915b1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "4b09ea37ce02b3a28d8e426d65cfb1014fd3a7cbf7f039ab3a332b33658915b1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "4b09ea37ce02b3a28d8e426d65cfb1014fd3a7cbf7f039ab3a332b33658915b1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "abf328c30aef8ffed7a5d5aa7024c864ad8ecbc590ec73db1f28d4befb9d20d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "58c14f6b883cb2b4f1af9174ff6db272978e226d04f02a311478a96174707320", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f1812c72a44002a5318527ffeee6f4be4e21f941b147b3aa02f794158010f9db", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "e8b75d5843dfd3002501c14a737ae5b76c8e6e70129ba752c1ee5dadf0075b63", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "bd4e08b2e982a931887cccd5bf9d6e4e229c417955dcda120f3ccc3d41ac3e7d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8b70d884b06d18d5aed785585e77a5c8be2420c371d2d66f4cc1e56bf226b5ac", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b6b21884116b900017ca49ce390ecee24dd29998eea9585630bd9b5c0b2b0263", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "3db678b439b7f7ff579f571e3e383907604cb3312f10f0858811f0d0df6c2479", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a5d549f4dcac0cd3a0faa8a53b55ed4bb69c62fc4dea88bd283850670ffc49c6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "327b00e1cb17b33fdbbdee8f1c7e30e20aaa97891894305b22b37cd350ad269d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a5bf65c1c96377c6af48d25a9ce1e0dac5f06c5a20f6a6d8b7fdb9c1becf848f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "07bc519d5416c1b8d8faddd5926f93745e9b9cbc384f19cc8a992d2651142952", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "457d373c7270fb90be6cbb0bdda957f338ea0364603bc4af9754b191516e72ef", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "49a023af8849fa8921ed5eaa898369d828691ed8c68c7860a4fec1d189c214b7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "af43b8fcf01632ac99db14696630e3f999c652cc104e2b623725f01c13bb5309", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "0c1494b5fb4d088a8c811abde3f5ea9c941ac57d453d36aa62f1603b080fcf83", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a1ee04995eaba3d2facdf7ded1ec4d2459ac506bf11cece7d6bec5b239fa3690", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "4c7c44567f4172a083b6d9f68aeaa72241c041bd0330b80cd67d6adb63c73401", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "404b1b1baef3b3f943f3a924da2d288174849829c1ef3772e2d26ea75c60b368", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "fb4d0748000cadcb15656aa4ded338ff37ec92986baa72d0478053514929b8cc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "61173b4c5c57a90d8ba3355e9ab83d65b670fc235bfcaa4f32eea9f63b41b93b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "2e0c2f60217eb140ea6d3bed6cf382a54d2a32610b5ab8925383100d9b63725b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "2ce15fe89814bd463cc1d4fbb7987f265176adfd8c8da8348da1ff53ab894b82", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "9535e9d614065bee287ac7d182729e7aa31a680d9623595227036dae392bc4e2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "5fba507a6c89b64f427cda5071654bc01eecdf8632a65f5d8ee706cb9ae18621", -"T3T1_en_ethereum-test_definitions.py::test_builtin": "3b09fcd749e7da31c6fbc6f6ce095e79079717c4d283a5fad6e2558ad27cb134", -"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "b0c5318c7e09888756d6ff92b7025cffe9b1532d63d190e85ba755b5a91259f6", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "0f6fe9fbecc9f28655680ee6bfb165cfc82507a469c636a805aa8cac8832be57", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "551cb1f4547989e57e7c976345ed069a819693193573606d835df3e8cc009ae5", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "c546f6984b2c55f81fa322181b517975413d867ea9d2f5b102c259e00c42cb25", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "4b51050e9799fbf0563a80b2a558691e9da4112ba9008414bb53a2b900956440", -"T3T1_en_ethereum-test_definitions.py::test_external_token": "46892be93975d073880f0a6dfded4f36d8dc70d5123caf8da2cc0b50581ba9f5", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "8521d5bd06bd1f30843f13ab2792fc94884c0363a936a4087c7a6e625269c8de", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "8832e8e69952d4663b82dff0c40115d3b5ba2946a31da3699687eced203cf209", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d304b5a047a47f6fc0739a79e36833a5ec5d6c32c830d0ffd57aecf66d33ce8c", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "52aee5589eb4ae2a94802189a9c429343771b741facaf804d92008ce62b65bdb", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "5ce36c5531538ee19db4a67848dd355056666fd8eb35d098762632766405e183", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "209d1462c3b0d8a51f330b5409f76b49b7dbc6de8cc9050d3705c23ae60c50dc", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "5042325e993b5aae0f187ca02afa1d24c838db78188e4f5cde11c3f23416d642", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "793fad20ce9d24b0da3ad93656aa915f3cc2f547343ddbf9705d3f47d34c982a", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5ab192f09241c9d2fba7be8c4b5d45ab1d469ac1a3bf54e4b3f64b71ed1be3b2", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "8070202080fdbe5018452fcf57e7b6c06fadfe68451d1428a28b6f1b2b1fba19", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e2237ea3ede7735ec5bc0edac74c3eb28584728b74edb15ccea4e40f5cd113d7", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "134d3875f95dc610ff3d28ddd760569c6e3595a4080cb65309a0efc6a09ae023", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "5734213123123f233b6ddf4c2d0b5c72e51cd94dc886cd8a69bda977dfe27be8", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "387d9e5e8a9ec017cb7f6acff9afcc13c6257d837d95f405d881f1644850e40f", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "ab2e52cd4aa4bf49db01ad0e8b288e1e96fabc7fe7469ec4ff1a0dfcb53179bf", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "42e6d092a83e010f3567c6d2f46ba1d34c0eea8f578d08cf9e3c351794d47417", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "aae8eb2a602403734fdf31277f7a6c9f233b359fbe21ae664e45479f912cef99", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "ab390607fd4c4f879d1b1daa2b1da8fe9265122b637d1c3a56f36dbbf8338b03", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "3f71b25ef9bbfe2e382ee6eb95cf03d5b3f74cb6af68057f293cf77ac24263d0", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "f24b33aeee7479353b55ee7700dd5b9fa17641626d91d52091135ee4f061ff7b", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "7fff734d12ed1157c71c285dc37c3cf1704410e26d87ec84e22a7930e46229e4", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "77bacd4782d22c21a1246b11d08dd29e40ee208dfcb903cbb4a01bbb4cc3f516", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "9139ac01e7ac5b277edb71023f433db8e397c060c2252826405445c9778bbaa6", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "f24b33aeee7479353b55ee7700dd5b9fa17641626d91d52091135ee4f061ff7b", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "f24b33aeee7479353b55ee7700dd5b9fa17641626d91d52091135ee4f061ff7b", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "f24b33aeee7479353b55ee7700dd5b9fa17641626d91d52091135ee4f061ff7b", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "28780800e60d84e035e9fecc60be6c44b127d35ad4ae16ade7421a4e5f2fef2f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "43420316696d377420acba39648abd90dc69bc7b58dbf77dfa6f19f28fc39426", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "124a89920d36935e9015038dfde5f4ff955cb3635236afc51fd02523d292a734", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "1de53ea62c7866b07e4c9470aabdb4f0a0587169aa8a4e51d415ae63f38c720f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "d31f4e2392148c28601e7a4e143388970d069d54fe0f35e2a5b353e3cbaf115e", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "adc733bcf2180b8c13960ff6ce35807b42f2f26f58c775396ee92a33dc993e07", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "e016ecaacfa48a866019dba498ad3b0a9f90df0c66ef6a16b2c2d6a054d9e531", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "d56c491922f121f2b6c7b6ff908eefdb27047fb28aeeb8913101949da247f3e1", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "849f4ca16900e9d5cf8f25f27cf2197067ff485cdb63677ea9c0f93ca03d3658", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "99fa8e2e9eb0fa2f3460bc58646942d795f376e75b1fcf3ff150ff540a79a27f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "2fb0fdb74ecd9c7e3f59a462636ede65514f161eb9b64a0b48ba592e5dfdd4c5", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "789054a64803f19969f2a49307e624a9e9e3a14124b2da0da7f239121cb48040", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "ea0a5e9e23d9d2a74537d7e09cfb38788c61dfee25e273fc25ec01e3981714c4", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "437360fcd74b9c68f3df4e8730d65fb3241323d0ae202dfa551cc89e938b8973", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "4e5ec1e07cc7e189dadc5c4f02d0b52ad7e32601ba90522d113f743164dc22bd", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "4111e085c293d2aa10cd9a087eede5c98004622ecce05bc455f54b74f232054e", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6fd3cdc78f1ae85cb89a0bc3d66a340566c5f897dff861a786b361fef3c96e98", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "d9b87a418b7b9cc5e96f5e2c9a86a956757a850423535f3f5d003a4bfb25111a", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "2fb0fdb74ecd9c7e3f59a462636ede65514f161eb9b64a0b48ba592e5dfdd4c5", -"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "8065a16f001aae51f9a852de0b767e8f68de7871bc0ee9dd61010985814ce98e", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "c8ffb464020e759a4b121e20daa702d768c849686065f7121078eb0e62f12f09", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9e953a03b6aae0414474abc477a1e62694c1e3e907405500faa7166f94257100", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b7f1dd4ad0428146bf22e0c99135596fcea97b4b8d94c394694117d7b42e3269", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9e953a03b6aae0414474abc477a1e62694c1e3e907405500faa7166f94257100", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "1f958c8052b41284f6f5c2fdc248de7477516fda4d438ba0b78c5269184beb2d", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "1f958c8052b41284f6f5c2fdc248de7477516fda4d438ba0b78c5269184beb2d", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "70afd8c2470fe2f44e41bc4731fc6e18fc844e639d92fc880cd43fc8780cefd6", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "82a28f4a35a4af8a20a38d4ef63c7752873e55073ec9caaaa3dbc9ab8f7f776d", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "eab9056f112b6694894b508489a19baa9bbcd53770f844f33753d662f1d367f9", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "518ace933e0b0c9c94dd20ff3345ac5f66e4f29a0ff1ab9138776479d0d0d585", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f3c5ea8e9605098d0a321430ff849eefc108a6837a5ffbaf295c9cef747a9868", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7af8260f46732b74f8867c39bbf8f2a85449a6795ac7d11546dfa3a6c10d2411", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fec4c687314cbd3983ce8c0acf2ba9ffb90382e506b8f5b1f0816b85e3572335", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "f8ca3034acecb6542406329b26ea56a1b2ea8914d708b6511fa98a348964acdb", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "2aa1e73b604e6470941e3ef1a1517258a86b854249a7c5fa417ab0dafb8c5dab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "533d83a03655c1c4133cb9fa4f433cd0988447aa034facc6e31e0f197da80fab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "37a4828db03ed0b977ac59b6cd77b261e1d49ea72c9fc1b416e86c77b080b620", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "533d83a03655c1c4133cb9fa4f433cd0988447aa034facc6e31e0f197da80fab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "edaa2090313898eaa6e7566d3523c55790c1c22df341d3abbaec8c903197ccce", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "edaa2090313898eaa6e7566d3523c55790c1c22df341d3abbaec8c903197ccce", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "a9f752858f44d5aa1e2d2e5b7383fdb37efb29e76f4d1c97ee502c779d6b9a3f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "1c3561ba869e0ea707a67b5a35847e9d1b916267650c42c1c2ed0364cd1fe702", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "f3b7ec4f680aa4e0e59a0fce9874618f28fa300a3fcc41afe4140012e4923b86", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "17c2673ffebb8a21e8431748757665da38fcff22af10d7f67a7d04fcac7be17f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f3c5ea8e9605098d0a321430ff849eefc108a6837a5ffbaf295c9cef747a9868", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "960366a231ababcc4649fa5a7f30d447bd0f0cc75863ae333a94585b7963706e", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "0fccdac0f8325f6f393e64d3d7d6dbcaf3507d90935ba375a52f4360054fad10", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "1253db116e1f4f9ade2b6206627a950b8f5fbd3b2b014e6465098ff2d6b71e39", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "cd5f3ebf2847ed227757a45ae7361297ecb0f5509e85f0f9b7996829003f1cf6", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "9bea4dc0d02eaa5a34e923c937f985faa15d6ce2dc6ac126a0002988df724d55", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "df1ca55e43a2f7b17fa9c70e1383dc7ee1919859d1e6cce975bd654392c061f9", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7af8260f46732b74f8867c39bbf8f2a85449a6795ac7d11546dfa3a6c10d2411", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "70afd8c2470fe2f44e41bc4731fc6e18fc844e639d92fc880cd43fc8780cefd6", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "3aa5532afec011763270b7892920e1d94720d1f026d4e4a0313921b81d6dfc20", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "eab9056f112b6694894b508489a19baa9bbcd53770f844f33753d662f1d367f9", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "c17b3575b82bb50b5fc4517483d0658b11b4648fa296fa2427263f9a61b20955", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "691169626bbf345ad352e13bd030dacdc421a4c69254e7e3b4a008e83a137806", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7af8260f46732b74f8867c39bbf8f2a85449a6795ac7d11546dfa3a6c10d2411", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "960366a231ababcc4649fa5a7f30d447bd0f0cc75863ae333a94585b7963706e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "a9f752858f44d5aa1e2d2e5b7383fdb37efb29e76f4d1c97ee502c779d6b9a3f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "b251e66ec834a4fa5b2489f1f0b391267811fcfbb05c55a9373d433089997265", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f3b7ec4f680aa4e0e59a0fce9874618f28fa300a3fcc41afe4140012e4923b86", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "ed2e275f082b5d879cc76ac629723a3b077fa9bfc5608278609a3430483e856e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "a0c95f660b9c387bc83ef0325414845bd47dc3640c55c87d055c1c40942877d5", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "960366a231ababcc4649fa5a7f30d447bd0f0cc75863ae333a94585b7963706e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "3004ef67e9c9f69b2fbc41ccfdc6c7d46e08d0f4618078280aeb44976b4d75d5", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3004ef67e9c9f69b2fbc41ccfdc6c7d46e08d0f4618078280aeb44976b4d75d5", -"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "d441a9c097dd73257d481fb9e9f50341aed9a7c41bf9087a78ae3c0719c19997", -"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "2df47fd8cc78f1eb316d120be47594d09d6d0db8ca73bd97cbb2c36b82f905e6", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "ac6f9b753e108aa0326806404a8c0dfd10d2519dadb2bd1e6215b32791b9243b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "ac6f9b753e108aa0326806404a8c0dfd10d2519dadb2bd1e6215b32791b9243b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "a9845e28252e5a1eff1070b758e3bba518f1c2df718e742a50bd4ae786bad8b1", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "a9845e28252e5a1eff1070b758e3bba518f1c2df718e742a50bd4ae786bad8b1", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "09b3500b2ce7f52664e89dba7b877ea8d63c5f28bd119ce8a60916dfac566ce6", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "09b3500b2ce7f52664e89dba7b877ea8d63c5f28bd119ce8a60916dfac566ce6", -"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "ebc1d9577c978337125d68b48c5b03ff7e68c8ccaa4903ed07a2551f45df8971", -"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "ebc1d9577c978337125d68b48c5b03ff7e68c8ccaa4903ed07a2551f45df8971", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "55a2a68bf98bd9300b7e1de8d041b5705a9b4b1430f665c8d813a2a2c7e5c50b", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "b87fcd0697302a592c1300865b608a4bf3e9841a3c64f8f129709113ce3f60b7", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "2a48ead3bba9a6c1e3c327b03c99c301d536e593d1eee5f2997c49c2e314329f", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a8d8c6650ae562abdbbfad66b1f1e760c71c93fe41ae11cf821d5628b54bc3f9", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "573bd76df3601fa2f4dff93fffc2439128296e1aef2f5e426c8ed1e30bf5d041", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "300e0c020839bd376177cb2c4c78a2f4f2012db887e7f04b7e98d86155758931", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "ecf75382175a9bf9a0bc9f66c14ee0c4eddb03d69a5a04a7ebf443a98a18e842", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "f696fe48cd04866313c7db5e6cd72bb46b055f175dc517209eb00b9ae933c1f9", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "6a12d6ece86873934475254aacfcfcc676c80b2af72df1f7a139277b58506f35", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "f2aa795906ebbbc2f9b5b2aecce94d87a1215d0a715fcffcb28df1952913aed2", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "903a0f9477fc100c820692265d6b0a130a50d295989389146ff6aeaacfcc422b", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "e65bf89bd08c5c9ef612ca608f2d77a20ba41987f538f4a68aa8bc62d59334fc", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b8df3f7f55a597f36ac0976e12714ce7f4d94a5e04a6430911dc0bb7bbc567f5", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "32ebbc66fe8d8b19825873b103166ebae5a120e3c733af4f6a34f57e1b25bedb", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "787b5f19dd39bcd2e08d204964767af768736a8a56cc311bee62ab1800199baa", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "fdaddfa9cda1f29da8900d71a0e1960300a95afe4615f93252bdc3b15ca176c5", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "e48709b89cb60dece885882a3866c1b3b7896f5a119a053ada6719f128b91603", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "06cd4406438aab20ddb13fd546466cc38f46a63b31a6e5272d81baa0b19d3b2e", -"T3T1_en_misc-test_msg_signidentity.py::test_sign": "f03b5d189e713611ae735000a7f0185d17706e00bb2be7be52f20def07f8b18f", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "926b4edb734b8d59fe46aea1de0603254383271c7196f4b75552c8333982e339", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "4ee0afb4b437c504bec00820ba879937bcab2b84f0236e28aa36110356e081fb", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "2b0c7138265c38be7606c7447aaf545057dd85f6d32a9d32bd32bf824cb8d994", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "fd4c051e83876718732ee3b2a472de4d1f8457e262fee8ef72a579adc3d711ba", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "b8306ddf96727979f28c47b6a4b67eccb3e9f7dede1425f939acfda05eab437a", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "32f1332af6088cef6f714cecce540ee864910d5db8bed9e24975f860d0a11b52", -"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "2c239acdc77c10b622652aab702630aa61a2a1f8bed87417b5b25c60c2c87454", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "f572c5a5f4e6b8e69deba37aa8d546c1cd80533343ca3b3d9bc63492cefe358a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "cde6208bdc1a24cd2287d66435fad75c272259b4f606a418ceb0e8853df723ed", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c16f34c80ae6bf30c9d7aa1e8dff51119f3de1f503feef6a5bee467d2f47616c", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "96fa7c26b169f0440542be99ff1708d26499dd979ae06e1e24dcd629022aa87b", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f203784a54d62f66bb2ee3f62f58dee1183380aca5bb20f117b6119eaa33f4a5", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "76608e88332d7f17c4373263a072e6032a6532d3ea97284347fbfd88cc0c5af4", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "b1bb15be798919d14844e0b793392300805e032e88ff0d5e79d07776ced5805f", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "5b3aa7b7e51e3fcabd2ce102fec5dfb2cefc6a4b49eef99a3a936f56c655a496", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "42dfdb857ff8cfd3b1aeb0b635e6af76d0e89e3eea8e42f4d57aec13980789ba", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3a6af386646296c04b412a98996439b5f1dc80cbc097ca63997a555a4d23dfbc", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "216887287e07f97dc49d7d16b8443c5fe2d42da14365f1d373a0447f049751a2", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "2639a46e2ef546a3ff2cdfe6ead3a2ab6f0148217fa21b34d180905e6fe25b6d", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "5feb59891c060d9728a3d0ffac167c66b4cb7aecc557620df7d5f0921caf179a", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "6e34188a432a2423eca6288bcab829d355037f73c4b39fc7caf015bfd4ae68d0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "78ceaf1eb126f959ca81eaf64aa887e63efe4a287c68f6a14f4e408272860689", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "76608e88332d7f17c4373263a072e6032a6532d3ea97284347fbfd88cc0c5af4", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c1d57e9f23b20e842bb7b88ff8b31d802cbf16fe61812997a342c99ca5b5825f", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "89bf5193e07c9d8f1d7d302de340470a4b221d32c6d07cb38316fda64046d4f1", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "e2935ad2766941508060b064d95a92ff362a0f9e593152a70d71ab2de6561ab9", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c7c8e1227edb1dff2eefe803c54077eb06200eb24cd184f5dafc89047d6b0ca4", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "fd89a72b9673be407f7a5816d9d076598ba22b4ba6d47546099e59ea9de55695", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "37b06070d30f88b3be7956dec4a6e61f3398967ccbe72d72d8fb79414bda9e00", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9ab02bf93a95ab6c318d3f343a32d87fef44ef1ffd859ab6dd8653fbeff4acf4", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "e83a782781a094f32d6acf0b32f291b878ff8d0bb54644fcaebdd315f8a02edc", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "316c40015e3f3ad09892a340b0dcdc90d80f2283124bad719ec6a4c7659207e1", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "a1a1e2c9350bd26370334a7c3dfc606ce36517122eadd694ff57875b935849df", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4cb7bef1919018199a1a8879ba6e908d5a1069e913839d280e73f5582cf9c3e0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f14939364479b7e007c34e07234557e3b1aaf3db682d1b90460f23b8088ca0db", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "819ae447555b7f61ea5b8d7a41247aee23c73101a06023e5854ed6a836533c25", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "c25edfb0b39e5a997fe1635ddc7472dcb4cbbb6d507cfad23fc21cd3410b9aae", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4ce9db01dbc755917f84026cac0fa3af5357445c1c869a47be2f9e4f7813d028", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "5562d0c92c174039e7c4c66bc152448c842a88aa09e2062fb558f4d5229ad5eb", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9465b9acb2054437ce8adb95a448c8fdfccd359d7af6ebcb71700cde60f26a4d", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c4bd48de19f0ca51f6a739d2378fe2d3ffb3a67ab05242f162d4a1d330d56991", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fd2ddd190df63dad9be2bb9f604186765d5e85c4f118a5d13f3d5d6c714e97f5", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "8ee6e24941c549fff1fe60c49c36b14d0896fadb514f661d619ebacb0829f301", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c6c5fceb6a34634b20e9d10cc9a8ef8a2bef4bbaa3fc1736f3d1f64b557d328a", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd2a4394c3627622864a7346084645b6749bf458682c7e8f6a34c80549c19030", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "fe0d6ccbb56f1b5d94fba987fe955a17801e2bff1bf256a3f162bc659a67928f", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "60bd320a3de0a6d8ffcb035c0b9695936ea9fe1c79c974f75e5167dce319c7b9", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "048b8deec796167ee2b24708a91bc2dca4a092936df2bdf7d163d25853e528a0", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6bc07920257bc658b8c0e84ff720eb4e5f130d046ec842e37510080f0abbfabe", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "60cdca2f6960ac334c2efee4ae942b2b2f3a26a023f61739968362162a78f6d6", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1fe23509933e09c004af2f1faa63ae05d345089a1282f2f1ef2fc50cb4a845e5", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "c44e6ac09c10b91241a3de81f163d92ddf326c66c9da8911e6d1b074fabd171d", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d67d6565460d3fcf9e6e7561f7b95b85ad3441f4d4dda4bf4d9562c362383fce", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "6e79cb8f787adb6f164f4e36b13ad60820a6eaf7b497af0c0cc5e9f3ca34c062", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4667e38ccb890d6dd224bdca37b5649301412c610f752d64df3d28c74b946e7b", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "eae3f9702c8bfaf20e769234d8edac88c34a522a5b7467dbdd35e08290165dc5", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "c9208065a73bf5dfb8fa9fbbb0b7810eec2fe0cb592ceb12283d390ce32e3d8b", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "5846ce62d3f8a25725cca04c5632ec2484690fe0fb041b9f3f4f5d5f063cab77", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "3e7497765ef22459ab427bf28b0886721f843334e52d0a7e2ff9d44b29c97274", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "767de55df39fedf524b135a5c55bfb853d3c494f11b33c0fbb990961935d53b7", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "0b44ad7676ecdcbf34dbac2ae371870c8742941c4a772a3f3e81229f2f465b8f", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8083c9ad19f038a9fceafc4afba51cb75ed3a9e224320faf624d3acf0815f864", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "5dc0877a4ecf3916496ec810fd9a96a2e3262e489fccd3e3685d01023cb1c83e", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "70a6291e534c8530c9e4d60b6c613403959402e8c204c8214cbc79785b622c86", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8083c9ad19f038a9fceafc4afba51cb75ed3a9e224320faf624d3acf0815f864", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "5dc0877a4ecf3916496ec810fd9a96a2e3262e489fccd3e3685d01023cb1c83e", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "70a6291e534c8530c9e4d60b6c613403959402e8c204c8214cbc79785b622c86", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "36a2cb37dfba334ec192a533da7b41e3a3b3c2df4a05211040bf8231ca077b2d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "eb235bc7115ec30a54d0559d88ea1ceec0c39670e940995ff2556bf4108ac6e0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d004319582d6aad83750f63da94488536666d49ac0be8ecd99f5fa114ec6a7ea", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "930c9a7ddbb4ad95be130a3dc77b26cd21751acac2c801d3b83f13e1df24edbb", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a9c7e9a1eba91411a44692fa15461cf22e2e4741307c8ff01623eb6ec9689ec5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "aa8c2035317eb457e24f307113ae52971092b21ff247dce8a07759094cd08927", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d2e20cb3ae6e3532151faf53137134105e228fa61dd7ca78f4881cb8d7b0dc0b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "478c44b1c15eba088181993dcf6e4e6b2d3618edce62c70d95d729ba00d5c1c6", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "619309c96708f4534fd19b35272fcd083f9f71560b8543cb0b631f0d888e6d2d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8fff6569b704c3e25bb9aebca7f81255895b74cf514e5aacba6dce0c3775c563", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "6b74201a039702ee44e4e4cda7fd5e959ff0a4eafa1f1ada321d67b341e95262", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "7e6d35cd2eb7283cb3423ea648dc34770fb9caeaa343d4f7646f5807986c5934", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ac568409f60c886936576c26ce896c88e0d6c5df124019c0f4972cc043543641", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "8e73f6915b914e464249c8117e95906793517499eb68fec9c388f226e4d7b971", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b786d65002875e46971e5f3a1331538154e381a051825a543d53538088640df0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "9e81201922bed5c33625289b1fa15fd23df3f86fb283a21b6e7aeeea679d9278", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "c8a59343861687f98e5fc1b6426f16a53af80c90c11cf42119fbf3b4967f5fa9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f581bfa3624838e5b126ae573636ccb4b7d81d23625b4afc48dc77a62d457962", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "507399dbf7d9bb51b2090920737d0bc205ae6f7b4d4de03121473a9a8b042d17", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "27bef02a5ba39350018226428f814ab81d0ca8f29ade1f33048ad5bd8630ca41", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "d9137d2d0b391a3b2f8b1e16b1bdf796a7346f7782a6732111429f552015dc45", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "d9137d2d0b391a3b2f8b1e16b1bdf796a7346f7782a6732111429f552015dc45", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "3ab20a1994149d8728e1398957926b4a5a299b88f9caaf7ab70d9b2c712c517e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "30bf6dafa11f28b901e8c5ecdd631d65f86a881ff12356ded9d4488091e3833d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "b6a4a613337b3002d108d447a62d105a8f352b59383d337ba51d4946d47f7995", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "cb72ec57d316307ae30ba05a1b64ce6bcffe52444dbd35763aba5d1a8c776db0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "17120373d1aa329b70eef3ab7aa5bfe4535255d2aab962536b5e7100717e5d61", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "77831c77ee152691c1b01422165b3f60b484a5844814ecd6b98875078f9685bd", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "e1fde8caee1cc31374071c0e286f573eb870d77dcd779666c8e7b9ba8af8501f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "e148e5909cd96738a6a87aa7ddcafbbf561bd92bf57632ebd4da25a8735d36e4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "e9685c6e0495a619296a905ca178dbc872a6b6a98b975d544e2c3e8cea7ec403", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "b9ab87aa664dce6559d65bf773509b808ac60d48f8daee20a5f38af472fb07b3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "debb8cf0c7bdd7995442d790e5195d76049965b51f045ad9bb7f70245a31177e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "6b8f6dcee42cea7f83330c85cad1ad05eb6dbfcb39db54ebd78ab156b2d25798", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "3df286707fc25b828ad9b9259e37303934cc864279d135fa45228689d292e4fc", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "136b9b8e58cd9c02928d3855604f92ced0faa68360b016187ebcb3d417b0a586", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "a7ed55ec9cf5b04711d03a4c2cc07702c287e25ef5624574b0fbccbf54e0bd74", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "0cc8db4d9b2b07e97f84355024d73c93a59947fd7f34840a1b534986fcc39704", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8da7e350501ad6fe58aaa5ca660ec66421a4e3e8bcd452e283e80e45c1cebfcb", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "17d6f17aca79eabb15aeb7ec1ecefde49ffbd999f75231abd6d2f5703f41ae86", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "bcb5b00fabaa01d3a4a0457c61e2062d0d7b49835588332abfa6a04dd4b33571", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "276919fc5a179d4cf6b11274a310a62b5a673696479a5adffb1d6b8e4fb7ad16", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "35d982d8430962c8c6d5c992cd152cf5b7335ea958dd301d1c6d740160263641", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "6532f746303d3448f6b5539ec490ea42144762e1f128059ff6a3a5e67d895277", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "0934bb6474c4e7466b3d5362c9c9112ac157db7b829547bbb4d458b3e99ee102", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "4f0629af86e96ddfb0e454729f86a144dd75ee6fed930def98be6abe5e2a40ad", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0bf680970211780784f6588f7de1c4185df158a72ea35c8d769ebf333590e692", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "30c3a3933d057be6a4d108d30a7e005b97b3f6c6792cd0afa56ee14276836c78", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "49b2eeaa8c477760f4904621584931d0ebbc43ef6ce1d928c78cf762ff9af78a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "de528a4615ec1796b94e06f73190d4a173d7ecf5c6e71fbda18b1ccab1dd6475", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "47a19c37b24dee4c4941292c356b9d1843daa92cd97d2aafdc72cd47da388121", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "f0d25e7fbacd9cf8736475ea5da4ba3a2f62541f87fc19565bd6be122599b347", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "6e57f2e8ed2467bc5c547a341bfcd965ecf21ce1e24a5965d10e5bc7231427c1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "4de5d6147a06fa00195a5ece0c4ad2bb8b227ce19221bd8e8ec11e7b4c2c2920", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "ec3d570eb28d03283992579a0aeb45d7bb1ad6e372fa680d142ba754699c8fb8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "748afd64a58166f055a859f08573471afe8f6087951c0e6350d1f56f2944b9db", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "4f87e9036b241b6d7221708e39f78ea137115293ca06ba530ff3f2248aaa1d1c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "63a68d216de2698a4be4e7b3aa21fceef50bcd91038b2b6fd5014b5114f7f42b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "52d98e5c4e50b2813007910749393c52803cd7d87dd26390d746bf20caaf6543", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "b6a4a613337b3002d108d447a62d105a8f352b59383d337ba51d4946d47f7995", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "edb01e7d258eeb3e2bf9abe577ee7a461602e3b6e973e9497cc774b032498385", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "c17c3cfb87bf013fa9f9f5af0df27550569ab43f47d96168408d0bae91ee5557", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "d75e2814cb5ffe86224be4f0bda80f189b072e8a411224309ca2a4100f834c55", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "c54b392bd375e0402403006e8f47b02da79252788de950d9cc7643a280ceb832", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "3d0d1db61d027204a019bf5ae30f5d42bebf737a93746b9678a151356387c8af", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "5dbf7b4bc94a78fba0ab404a436ecdecefebc9f245132d47177133668bec28f2", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "99ad58a3c59312930f9d603f35bd0ad7c38d2f8d2aefd1b2d2c9f1a55c614702", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f2efe2f10d735853d8348d55ba6959397766d4574660ac0b841f738f6bc439a3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8464973c38be319f35867fdc98c35bebc4e85322e01dd282e0edb8f92da73c1e", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7a54040679b0f69d980e6c3bfe3c3883e3adec7ceb7806cde6d01a8289b35483", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "e46c1ef857aae2591a866c3204b25f584eebc40a85ddb86986d42fe9d957b381", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "6f8cd5d0b0c710465e769579045e5d613db225ee6996191b32a98b96ebf52b56", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a01a3ec437223202f020ded2c028fffc88cff118f7fcd7184a76361d695cc0bc", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "4359e30402d42a9925dfdbebe1180b9409a4d77879ac298f8488d8aa596e4c46", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "599fd6a5c2f6adef04cfead16c9f49e816a8b29f25007d6bdefa438cd89fb4d9", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "3e7a1bf63502affa99ee46fc8ea5ea510200a92e2ce81529ca5c13c52804a08e", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "482ecad68d6d28a581214d10ea2417fdf73e8617e3024920a038ac55fd03564e", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "434be2b332354581c0d24fca8f25521197b38240369aea63ad309714fb23d3f6", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "e82fb145084b94b98f73b3cf418a21ad02d34f4216178efdb0dfdcfca6c215b6", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5416650b5da06326448dd43486764735602e628eaeafb723713fc2f34b306cf3", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "65d44f2b11603f835b2614d8d68db1776f1c69ddab551d3d56372717de08f32f", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "31df1c3f7d0e858da5d65fd8db2bf70940938b78f5ae07f3b201b55ce4e658ed", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "18a17e4c3bbdb1077bcd025fb7d15d59df3e95e2be27d9b384a11b5f5ad1d641", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "47f11dedcc862bdec73b80d339a576ddee5f05d02381ba6f793b3da626413765", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "0cb5cdf80feca9643775c62a29dd76c61e813ab4186e744734239e82aa563221", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "36dbed95a9ab9bafaf8ce76f952f553d24529d1ab315666170d0dc6c33ff5e54", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "9d41be6d1db67775f6843babbbef26c4afb8cfe993b1b165451b91346399d952", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "fcaa4d4e6aec4cd0779c0c4f19965f79d298e6375c2698175304bf47df273327", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "41345f2e05057f47074ecac14ac6aeebe374331adb8948c018e8337f37da3416", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "9a913911eca91744951aa253ca4509b85aa6fc9903ac11d674325313b8d71c23", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "07e11f6b6a9ebd0dbbfd22a8a6e6dd7fddbab9ca070bd0c5e257b9a988170c5b", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3e7f7ddefe70bb3df975259f52b42fa3690fd47efebbc241be51f03a5baed482", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "f726f5d484c2f2a9b8c097fd7870b700b090e1fa6e0b4c5bd5fdd09f93d6c869", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "9cfb26a8e6ba9eae233f4628164e17366e5989c39d07a2ccfefae3172890db56", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "e527428324a5a88b4e8e2d331a49e667b14a3fea0dc6e462811dd6492be9c1f7", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "46d5623b1bf52c053762c7513c5c3c9baeb6cf6b62f014c48cdd46579eaf2b53", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "fcdcc4de9bb33f5c9e945ea82c22804a03c3c9836c93064dba4aea96c273c284", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "56e7abc2c4508b137d9b401a18ad25887a63aa4ebfa5f1ab8dde691bb418db1b", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "15f894bf288b666c6d3f544e1054027dcb84536c1c6b39cd2df295e3ff2563b8", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "59393601abb5d0d9b29835c9ca71a208c01fa14c918f1a40ccb9301817877a35", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "64bcdacb4cd17963dd781c77335bdf230769fe5b341568e3b46eaca7bc85bee2", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "1571d2ddda734a6659c1affa76c5c4a020802d92d0e1ea0121ec2fc6a70aaa1e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "f795e1a8e1583163ea039c9cbe1845f982d0a82c0e48d674e47844b6e4130275", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "03fef8c5de12fde481d838659311b98202e3cece4da66f14d47cd1e4a4832272", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "116aeb678952729ea70599595305461ae4628d427ca9b939d85b348cd5ac457b", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "050764e9f060831c4d794043364415b1759a8f4a274f0cd5ad83a195e3083126", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0fce3352e1a06379cc450a2604294cbe82fcde4f250099437ab9ab71ec333607", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "6434bbd9e01691663eb4442ca32d945b0bffe32d845a05efb0563a670c1a9a76", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "c555ff7275006d9f8f205c31e412910a68dfe31c67bd829fab138263dd070ec5", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "627343ab8c8c31cad1b3ce2b68a98431915a5de4cb96a87157288942337a6763", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "8aa235c6d231d71d9deacf8f9cd6ec2d912b84dbc54c644a22be540a3139c5be", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "256ec6ca04767336db4d6e3606f836b587fc61e4d2cedd2908741d8da815e0f6", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "474d61309bdb7f95bcbb1c3be4cb157d600d7b032a26c0a9672b908a7c4bc1bf", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a865c9937db08b1c47066e9054fb072a92984935c19e367c7f68fb00d2866462", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ac2d540731f610ea6b81b601e7d9aa7df668fa350d1de5aa71913b0f230759e5", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "e0a921804f11b0565f313e2a415925a3cb4da69fe7aaca444e4593cc87e7cd13", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "f1f7a028213851f580727dc33356a943ae814d9c762fd26b01d93690e19c4ae8", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "451a89f66a3fee36991a4f732779486af514ccb77648fb1e48ffe0100e3952f0", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "050764e9f060831c4d794043364415b1759a8f4a274f0cd5ad83a195e3083126", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "dacbe2e6caee7433f28a74ca0d5bd470cf52d135d5d538d754d22b4824042110", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "1ff5cb269c89893585ec1945f73f2510b77a7541a4a7696920c916870df84cf5", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "59f815fe4fb6187c30ee3b480361499c502b46a97185ff88a157464fc213a9c9", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "20e7c3127bf85f906c3953137396f6134690d7b1f1c0ce192634992eeb65c8b4", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "f2ba0a60b127bb1449e18028483991462f53e6bd2ca9d484d4092c10704f9d42", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "83f09a746b8ffde1f82e9f44f2b62d3d9ff7aaf4bbae32d15de015582cab4a6a", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a618a19e45c81ec3e5a4ca9cf94a671230afc59339f2ad9782b0b7904eeb46b8", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b7eae1db58325941d1ec09106d6e3bf676d6b58ba59fa44e18eccf3c9a690d15", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "91549054fcdc3261ada6372a2c1c8d3099e7c2960c663f6454874e3a1554ab67", -"T3T1_en_test_autolock.py::test_autolock_default_value": "542f5a9bd427f55885ab0c66c81ef31cc98ebb3f86d2a4c5b27b78c25292e884", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "31a69b9b228370c69195ac13b304335de87589bee67bef16d16bffdfa6c3351e", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "31a69b9b228370c69195ac13b304335de87589bee67bef16d16bffdfa6c3351e", -"T3T1_en_test_basic.py::test_capabilities": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_basic.py::test_device_id_different": "8c948210185ec3c8e3036fa7b04e41e2bd0101fb14a943aa8a838364d002ddcf", -"T3T1_en_test_basic.py::test_device_id_same": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_basic.py::test_features": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_basic.py::test_ping": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_busy_state.py::test_busy_expiry": "cc47521091a6f821fc422cf17a8346fabe77ff831d78c582b9fe247c50a1f87b", -"T3T1_en_test_busy_state.py::test_busy_state": "deab792545727402a99ca426aac438ef3a68578f7a523724c5aa040f04fd29ac", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "0736f7cb1264e016309c5fa53d4194b8b2bc2af02e3530ee0d06d7552d829787", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "0736f7cb1264e016309c5fa53d4194b8b2bc2af02e3530ee0d06d7552d829787", -"T3T1_en_test_cancel.py::test_cancel_on_paginated": "7e17424e2a5161822b7a7142925906b66bc9875c1e38f70ea269b3339824053c", -"T3T1_en_test_debuglink.py::test_softlock_instability": "6f256bbf2af93222dd758abd5bce55a20a274e5c63b2c15f2ebf3796f4cf7d9e", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "4a25c68ba3e143fab97092a78d9463565634ef90e99234ee216b4ee9c8fd3656", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_language.py::test_error_invalid_data_hash": "0820cc7a3378682ffe43a480dc3bbc1cba7d0e305b04d32a2dad57c1ca7851df", -"T3T1_en_test_language.py::test_error_invalid_data_length": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_language.py::test_error_invalid_header_magic": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_language.py::test_error_invalid_signature": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_language.py::test_error_too_long": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_language.py::test_error_version_mismatch": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_language.py::test_full_language_change[cs]": "c135968a2e73efad2207eb312ae6093b27c31d6f7e7db6ef21376011eb34b2ef", -"T3T1_en_test_language.py::test_full_language_change[de]": "28b9563599a242d7d662bc65f97efec336afed72a658af407f44a202352d76c8", -"T3T1_en_test_language.py::test_full_language_change[en]": "e88ef535a25d21ab323c1fa3c889072aec3fab6fc1054bc9510ff3f1485dec1c", -"T3T1_en_test_language.py::test_full_language_change[es]": "316ee466151fa0d79a68afa0c8cdc83fce92ac36eee006b5455422703dddb26c", -"T3T1_en_test_language.py::test_full_language_change[fr]": "54ca79d2934556e8270e559ae3d8c2a7c5eff440160bd5517ec58ebef73049ca", -"T3T1_en_test_language.py::test_header_trailing_data": "80bc81829a373c770a9a06907a0baaf16c4b42643241baaf5bac67690c5a1213", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "6a67b582217b8d9a1efffc9d1a20022942521a184a4d2b1b11913d194efa6451", -"T3T1_en_test_language.py::test_reject_update": "eeb0a1f2e2d37a66d6faa8b031d142d2b307d707221e5e1826be7748051c1829", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "0e3a09b593202a607e80232665b6655235cd7da33e5899c0853ebfd2102cd937", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "0e3a09b593202a607e80232665b6655235cd7da33e5899c0853ebfd2102cd937", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "fc8fa5757035edcb5f8556ec255fcebfee21895d0a97648595eaa753de227288", -"T3T1_en_test_language.py::test_switch_from_english[None]": "8bd713585e79b2ae44f92589d427a9532b0e964b71b85b48f07e174966e2fa3d", -"T3T1_en_test_language.py::test_switch_from_english[True]": "8bd713585e79b2ae44f92589d427a9532b0e964b71b85b48f07e174966e2fa3d", -"T3T1_en_test_language.py::test_switch_from_english_not_silent": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_language.py::test_switch_language": "ae944139d9e67e1e6249efbdb6b2320e5172d20a9e561480c6bf0ff61a9a6a5a", -"T3T1_en_test_language.py::test_translations_renders_on_screen": "3ad5144876a3fa5144851326c2de9cc80ca0dfa25b4de935c9dee1b3c323bc05", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "3c2f798214f5d8d243be5e2f4097aa4863806408c1e03856bd6db99d18dd986d", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "8b79fa0872a75f671c9ce16cda3dfa83dba022dd55756fe7047d2119f2b15f37", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "09890808ee251d9dbb48d03fc6000675e1aa3753a4af8ef8b1b906611f561006", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e2d5df4a688977b772d9b48601149bbe40662273ab153b3bd3b3421c07eb9977", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "acb6a6f5af2b302d5a3b32d0a9e6f3d6423c602a8fb6606cf915d2c3406abf69", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "b79876b8a8b5905854c5bffb0a96892d0203f6fe2f5a0a844f7a27e95c13b210", -"T3T1_en_test_msg_applysettings.py::test_label_too_long": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_msg_applysettings.py::test_safety_checks": "3ee3a169fe24b2f680f17bc1632ef401523359dacf583a9bd0b899815a7c78b6", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "39ed954ab096f743eb8b62836cda8625dc9ebf2159c2e5415a644d0a71cfbaf7", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "c3251955597d595d302087d00bf303948649c8e31dfbf0097d9b25502be5809b", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "202f4c127bcdc742cb356b36ba5772c2bd667c11a24ca853de262965131ce435", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "0828528b266f6346f975b46f0d0f722370544a5e5f6b1e85140efe5199719889", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5dca67467feb7f958c41fabdb67ff18837518b8a4695e105159e8b5d920e2527", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6a5d2d82f1263be0dc81b65a52aa384f3d4a5e3ab537af109dbd9f347d83345b", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "90ae44624c99e283d551b5b69346a155565584ea56fe0637009462d88ae258a6", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "449a5770dd8edf5c4c9529fe591f9a5f9f65c75d4a717cba5d51108d42813ab4", -"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "396abc86b062e562ebbcd7cef8c01ed64d081beb3d0670d1b0508249c5a49c94", -"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "d4bbb98293f4ca280f8bb431f284fcaff39d5ccdb7d69e0452523f2926ecf2c8", -"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c27c3010c44723d1a8ba3c47a7cf1b7a35e022fded7e939c1578b2370989975a", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "484ffdb19b931ad9875f5897706a0924be7e370535251f4b0ec770c35f4155ba", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1ef3b917ab5960fd088d6f4f70a1d896c2ddc5a72f885e048e6b8ce232acf9cc", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "159bd07e44accccffcb835de82cb97a41d8111d9e5919680e27c7f1acbba4df7", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "274521520fd82e933e620019913620460210ccdc35e6d84a192a81c32320fa25", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "23ec3b779bdb57d14c902743b2b788da06fd6c5ac20dffb83b5f6501c33c5359", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "e6a0f9a478590386f0e96f7b370debac2319f074a506fdbb21070b1b886db7b9", -"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "57d3d9d6a0db3570832caa7ff8f931c461254f2d0e7db3198e599070eb9b5a27", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "b2c54b8a45013e956dbb5505318e026cfaaf4fd0a458b964fac3f0bce31c5ac8", -"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "0c52dd014b0672ad38dc32f56f934d5e94c1fb18566457afee929bcb98ecb1e5", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "7c1a64a63245add49190544310547b8d054870cfa9d62ba53ef025e1d05a61a4", -"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "f6a8870031b5ab83d0fb04d5ae45dded68902c5feb00f93ee350bdb384bcbe3d", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "44bdfaea51270fd8c13e45b78e35212b49de1581f003820919310a4c8a42d1dc", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "f6a8870031b5ab83d0fb04d5ae45dded68902c5feb00f93ee350bdb384bcbe3d", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "f6a8870031b5ab83d0fb04d5ae45dded68902c5feb00f93ee350bdb384bcbe3d", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "0199197df445c047eff5cd2e0523dc0a38700a4150e69d3265221d329a724e18", -"T3T1_en_test_msg_ping.py::test_ping": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "72827c95bf206de735894b16b1f63742087990073535d4994584462526737d7a", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "727e2fa36ae8cb429b4b0330033a57d858b09e253c8698097e9f8ffff85bbdaa", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "d414c2f06b267f70d43326a59b0f3c641fbf2a3153b6dcc73134ff650d980421", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "81b91e388ba672e4e2ba1ce26e90d84fdc3b568b4ab2e54041406a0f6539a0dd", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "8c948210185ec3c8e3036fa7b04e41e2bd0101fb14a943aa8a838364d002ddcf", -"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e90a8f3008a58fa6616911b63dcab3bd74713a355c92e352686c82981aaef5bb", -"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e90a8f3008a58fa6616911b63dcab3bd74713a355c92e352686c82981aaef5bb", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "7e0f4f24f93d7440ee8bc6d3d5be414974762730239680f2b3aa7b869197cfbe", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "7e0f4f24f93d7440ee8bc6d3d5be414974762730239680f2b3aa7b869197cfbe", -"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "7e0f4f24f93d7440ee8bc6d3d5be414974762730239680f2b3aa7b869197cfbe", -"T3T1_en_test_pin.py::test_correct_pin": "b8be3fe02f4e4f4627a665f1bc098c47c055947c2d5c3c58ed01d5226a0553e8", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "ac262df4488dd3fb06510e930e17f808607afd992aa9228e018ea0ea84413097", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "75df2003a1d68917e6bf6ac629e655e3253363adc2ed0fcafc92aa920a17112f", -"T3T1_en_test_pin.py::test_no_protection": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_protection_levels.py::test_apply_settings": "0c8ac21e8dc0c2815aa53f5dbe182071639e3998fee471dd15b39217fdf3b230", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "d0bfe17b8d59cae023d6ad4762422ebf4f1d818d5f6006be0c4fa09b847e21ff", -"T3T1_en_test_protection_levels.py::test_get_address": "f76f43df4ac51e88b5cca01bea9413e0dfa0cf470e8f628b4c7064447ba15fd0", -"T3T1_en_test_protection_levels.py::test_get_entropy": "f25ee5711c015f064d9a0a0ed78429fbe3853924f15e961b32ed07013889d8d9", -"T3T1_en_test_protection_levels.py::test_get_public_key": "f76f43df4ac51e88b5cca01bea9413e0dfa0cf470e8f628b4c7064447ba15fd0", -"T3T1_en_test_protection_levels.py::test_initialize": "8b221614c9dde7122331435454090d4bb0efabf74acaeee48411426a06ced70e", -"T3T1_en_test_protection_levels.py::test_passphrase_cached": "4da688b1737ca690a545dd78039e89a840562d935df2c42be4c9f029d657cf0d", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "4119c0debbeb7f4a8cdb0b8d21af8eb4467e6d6f8aea6891940701af6ca544c1", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6fc7096bd5c259f3bc451ba068907a387eea15afd88d91c4e479d675c0a9c433", -"T3T1_en_test_protection_levels.py::test_ping": "ab190a2e89961408082d61bfe016df6d207f1610174112bf0023533b83404af0", -"T3T1_en_test_protection_levels.py::test_sign_message": "b5ddaf347412ac0fe78598e033bb31a96a49e8ccbe2b3ab6ea59f0685552c28f", -"T3T1_en_test_protection_levels.py::test_signtx": "fec37a462e8e2d2a6b7766340ce03fdb79a352673cfb72db327fce68804bab51", -"T3T1_en_test_protection_levels.py::test_unlocked": "1cdbff929b2c72569905d20c9be63f413968646b2f8607ebdfbe34c692762527", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "037136e041707416dc09658b87366dec8f5f42d223fda6e65a91c02fceffdb7b", -"T3T1_en_test_protection_levels.py::test_wipe_device": "6ee69aa8832a49a5b05740fb01c7a0297ce703a9880a26615d4ffa7394790ea0", -"T3T1_en_test_sdcard.py::test_sd_format": "a91395368e3b9377b0c4542369025540f70e5f99f6a06f438204a36fdb3b082a", -"T3T1_en_test_sdcard.py::test_sd_no_format": "18e75c30acf427b0a635760d220d58e19ba2dde481e7838b9cd503da0611886f", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "2239d88234361188ca693a42a8faab6e05414473a656bc29de3475bb84c835d4", -"T3T1_en_test_session.py::test_cannot_resume_ended_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_session.py::test_clear_session": "2760ba1c6cbb3d685f23d48581a7e9628a6e71483d8514f0ae3dfd57cc401928", -"T3T1_en_test_session.py::test_derive_cardano_empty_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_session.py::test_derive_cardano_running_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_session.py::test_end_session": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_session.py::test_end_session_only_current": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_session.py::test_session_recycling": "7e0f4f24f93d7440ee8bc6d3d5be414974762730239680f2b3aa7b869197cfbe", -"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "b269d12a412830fec1b8780558ce9228f68a89794bc5d723df799b93c88d2442", -"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "740cc865180ab047e36a15474d6ae6f70b45fdb968ba7c701948e6b003c2b90d", -"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6ab443e1e19c7f67320ec6f1bdff7f23a78b615a490e172fa355422b0ebfe9ba", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "b1d82390be26fb79d37f940131573927883842571e2e7dc5824e2fa6e52b7281", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "4e4b12b09d26753b22694a38776b6b40d81aa8f55a8a8d0b647d046f1177e214", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "a4742ac3dd5f186a515599dbf72ddd3bc8037d3e114ef78af51d70537b04e1a9", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "3ce87aee8ae1ccf35ab846730ada9dc1c466963104efb3f5bcbb2b552d7c1f8b", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "4da688b1737ca690a545dd78039e89a840562d935df2c42be4c9f029d657cf0d", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "cd6369d228dca6bb9fbdf632d00cebfb0c03a53f11c7a43eda754f24a90494ab", -"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "ad8e7e2e8d2ce9fd477cd92e04d992033e186c890f5af063c8f3cdd63970d5f9", -"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "73a17808672768cf145f7c2d7113fe57ff8fa74079bbec28e399ecd72e0c5495", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "05e14429a238cd248b620a0244448bdb7914008a6267c4c474cfae96c43321b0", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "a54154c8d8e510b7d79602442069e55819a70c494afcab9fc3f4288116e69a61", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "fbd8947da08c0f6c171ffd2abf70c0caa65048c8871d8f90be97b68519fea49e", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "9d3230ce372678577a47ef597eea040cb3807c7777189c6ad2ae3abe56325641", -"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "f284d6e9b0461c58d6c83c99792ed69b22192d7376d881bc33a5d58474d90c69", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "494e458ad2db0110b953b07aec122210eaf1a23110cf91d861ce3e6e2eb58696", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "b621650fb681c71afd7cb7b1815624fa436cc4e35df104f8846519a4b992fc67", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "06b225e8ca31b5d0d614d7888cb264027a6d03838108ff9e0d372bc40abc73d0", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "8efcae6c7e9e528e354227d23a67c94857e6ab64cca06e83f14a0862f4a5cc7f", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "abf814114c47d414b2f4d1ff70dc78d91e7e8a4d9392a92b6c7481a50175eb45", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "fd1d3f14a7164c017cb737728107d407cbad89df0b80d50e3551ecc836a377e9", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6432e6abbb4587898917c2c646d72b128802123d129e06abb73ebaec9f7004c1", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "02f6bba34a198d624816a14c324c6f63245c1129f36eb2f0dc4b2fee9c11bbb8", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "493971993419b02ee0e7824f1bfb693856b83f346ab7199469b5a877de1e4ed3", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "51550105866ea84ec029c5d57b7d209b9597cb8bbe4187e505fecd62a32bbc40", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "a4456d54d53f40092dc391381acb2b967f4cc79092143df0f1a1809d858813f0", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "9ed2a9476a6535683ad58b8e75e40e3644eefa8bbbc6d622a386f55ab0404561", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "0e9dfe65652917035070e2ccdbbd42e6ce97ac0741e3ad4e51cf676ea97216f6", -"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "fd53ad849976ec8ed5bf5d09286fb4e45fec06765f9b3ac6d8f03b752ac42ae9", -"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "224d2a62f362fb677de27f82c68b28c1958fc8034fd0a6556b29acadabeeb79f", -"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "de8a5381458d9b59633ef115f63958e3739bea9cb93b5f7838081c1eb50f9eb0", -"T3T1_en_zcash-test_sign_tx.py::test_one_two": "1c6b17ab71f882b40e98f7485b2f5beebc00cc1b49cb55c2f48648e3b000d10f", -"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "40bc24a88d0431e4a6c94a348e8d970ed6b04bf7d317bb5314f8d829fb3f23b6", -"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "5505756ee32e9eea8028b317612b8b4218376fe91736d64df75479f9df409e9b", -"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "defcd77f304993643ebf79cd88705c77a384328746cbbd12c145d823e70b9c01", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "2e9991ed370765cf7a8417545e65038f0b862cba97c2256ff310bfcd804824e1", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "b1509182dab307ff5db55745f7ead87428dc1d872bf66a9b4422b8cb195a265f", -"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "fa078d3b6d61e111f44e39911ce852d44270b2475f78c8b64967fa5f8e1c5e80", -"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "944f7bd7533295a23f6b24836772acbfbd096390096e77f5e36964c591139c22", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7873587f7412f7bf5c44d85c9a5fbb1fe27f013070bc94ca724bcbc4c58d70a8", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "9338f7d1d49eaa1d12c004c4dcef08fff16c8eabca1bcb564b1cb2a9c318de88", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "7b7ccb33fd319e3edce20712f82ec7345baa08846909b70f150a5e85712bfbc8", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "4f10696e8c848e8c85788d777fe40112c049a4324544857e7ff276cbba19011f", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "17349dd4fefea835984c89d5c86c4cdd465d9225c8e444cef2513c1385a58b3c", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "29174478adeeae88d31be71de8b24c2bdc85edcaf7b7213979d5642ad91a994b", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "a84bc958e75db85e832076ecd219f25ec26717e4926baf568d6c471c7488a6a4", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "62f7aecff9332d9ddc453cba0d8df8f2f6a55883b265a2be230d7db73e51af71", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "29174478adeeae88d31be71de8b24c2bdc85edcaf7b7213979d5642ad91a994b", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "a84bc958e75db85e832076ecd219f25ec26717e4926baf568d6c471c7488a6a4", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "62f7aecff9332d9ddc453cba0d8df8f2f6a55883b265a2be230d7db73e51af71", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3f15b0ba0bc16856a2417c716ca3265b78e7f0813eccf4d2ccd0b0ba49019e0e", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "70ce5e01f488e0325fc80928f68e87b6d2a7f026fd938bfaa9aaf9e05c66eb6d", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "717d0a94c4f157115f85507896cf6801b741bb51fd51a221c5db463032fbf29d", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6cc6d25ba124ff47af11f0dc936ceb519fc12280974e0f4ac72b003100509ebc", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "01caced5a8665434992ab80f3988dc3d968c58b02be725ea1331c9a2b6ce7ed2", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "01caced5a8665434992ab80f3988dc3d968c58b02be725ea1331c9a2b6ce7ed2", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "785bf8d74247be3cc558175201e96f39fdc073c3ebc89cf1f387a66f3ebb945a", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "e6b0675a232ba0debbb41da33dbbe79d249c4dbe7bbed1f521647fe8e0dbf2c6", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "351c6ab53bf87d8b0e6a076a6af04b9c2b42884a09719213d4b24a2f4aeaf248", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "123338351ea7e58c980a297d431885d35de6c1d652fec9c42e7361c66326107b", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "123338351ea7e58c980a297d431885d35de6c1d652fec9c42e7361c66326107b", -"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "6a8ab3388b1fcf677dd84c05c252ef2b3ae93ee95188a1625d1611e18ca6a32a", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "6a8ab3388b1fcf677dd84c05c252ef2b3ae93ee95188a1625d1611e18ca6a32a", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bc58edc3a943f5c407c7104048cdee73f84f3a14abe13ff442b785c1ef03fe10", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "31a6482959741c0ea2e806d8d7ba4e96c64a9820f435f9e63ae74a0fd17cc93b", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "93deed478b96daacd8168a6914fa2845543d40ca44d658b3b2bf07080567584e", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "6c5cf00d0edb746af249e4e921fb5684d7fa1ec123f509eea965908b7c6b6b2d", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "584ac0790f3953535188fa780d548327d8bad81b8d9f20c4a376aab55a8d613b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "444543a07ed75c851985b01f37dcb83c697d5a3d88427e29a55311a5aae7ec5d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "0a51d7c5dda33d05454f5e0920baf3130ae818f8767871dabd8576d3bbf4ae41", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "e97e64b413bb357433f33e187a59c8719c1920a228fd05cffd3319ea188290b1", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "a6ed04706095f0d9028306445cb82e8f2d604ccee3ffd7c03e68520e9631c1ed", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "b0ab052d4923c88dc23c7925e6a9bfa10a73949a671ffafcc09fa2d239fd30f4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d0ecb8890eccd323a996de4ccdc0abc89ebc383a0afe07e9e7f95403bf9f996f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "8d7987692a6ca4840c8eb6315c7abd4040f5a1c145129451648cbf9563f76a9f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0761ac5f555546e88248ef368bd9e6020f32ee18407a2d3403bbb7514136e0c4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "abe0078a6bb5684ad0d677d33e4cf8bfbece9444fc7a612ebda10aa26bb299f6", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "4f41cef31e336b56ee42eebc8356354b79c60fdbb1e3d5987ebe85166e75348f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "0be11914581762dddafe36ef82eafd7d7f9f16ffbf31452521789af95b7142be", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "83350b9713c6624bb9bbe084822fe2d7ff615f9f6ed7de7442d7c542e58f87ae", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "30cc327d70a55acf6fac9b5d144fae11f9dea4e340132357205ce31f2a4851b6", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "e6682619531ac2c66355395a3ba0e60047855264caf1716cca888cebbe6acb0c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a3929cfcd4144737b38d7482c00a8acdc1caceb7077c3e554e21ce4b0ddf73f8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "87881528b57512dfd091abc0aeefa3b611862ef8f128e13f085ff7b07f73035e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "69727c28963a101d25a75700f909e68220ac7810bcc351534595fb10ffead697", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "9a62f397f94fa7a8e8c94838fb7528eeb3508dde4da41f4be97bfc7c67b669bc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "444543a07ed75c851985b01f37dcb83c697d5a3d88427e29a55311a5aae7ec5d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "0a51d7c5dda33d05454f5e0920baf3130ae818f8767871dabd8576d3bbf4ae41", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "e97e64b413bb357433f33e187a59c8719c1920a228fd05cffd3319ea188290b1", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "a6ed04706095f0d9028306445cb82e8f2d604ccee3ffd7c03e68520e9631c1ed", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "b0ab052d4923c88dc23c7925e6a9bfa10a73949a671ffafcc09fa2d239fd30f4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d0ecb8890eccd323a996de4ccdc0abc89ebc383a0afe07e9e7f95403bf9f996f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "8d7987692a6ca4840c8eb6315c7abd4040f5a1c145129451648cbf9563f76a9f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "0761ac5f555546e88248ef368bd9e6020f32ee18407a2d3403bbb7514136e0c4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "abe0078a6bb5684ad0d677d33e4cf8bfbece9444fc7a612ebda10aa26bb299f6", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "4f41cef31e336b56ee42eebc8356354b79c60fdbb1e3d5987ebe85166e75348f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "0be11914581762dddafe36ef82eafd7d7f9f16ffbf31452521789af95b7142be", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "83350b9713c6624bb9bbe084822fe2d7ff615f9f6ed7de7442d7c542e58f87ae", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "30cc327d70a55acf6fac9b5d144fae11f9dea4e340132357205ce31f2a4851b6", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "e6682619531ac2c66355395a3ba0e60047855264caf1716cca888cebbe6acb0c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a3929cfcd4144737b38d7482c00a8acdc1caceb7077c3e554e21ce4b0ddf73f8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "87881528b57512dfd091abc0aeefa3b611862ef8f128e13f085ff7b07f73035e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "69727c28963a101d25a75700f909e68220ac7810bcc351534595fb10ffead697", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "9a62f397f94fa7a8e8c94838fb7528eeb3508dde4da41f4be97bfc7c67b669bc", -"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "2d9b8d5d3fb5400bbcee37e5ab4ac5a484c6fd2ecb496a691cde62f6b3aa29a5", -"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "273f45c9c055ad52738f1927fd0f6b11e6c81a9587b6e60c3ddabf35885e44d9", -"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_bch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "9b9afa0b1b20d2935b8cd2579307c5627ee60d6b0bc6d055a9d3967da9f833f6", -"T3T1_es_bitcoin-test_getaddress.py::test_btc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_crw": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_elements": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_grs": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "a9617a92dcf97c478d00570b71512bb108c23c5e067d3ce5c7880fbb0e2345f4", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "6ba7eafa2e95bd23bbf398c26e0cb40c4cfb95f71aa37c633620c830e328388d", -"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "8b3cfa4bdfee3f23b059479c2dae8369532aabeb21caea9cdffe0fc34bc51764", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "a92bef2485f436df72db9aa9a0d25f0db8279dc65f1680842990f7a192d87866", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "dd8092e96a5d321de6ec58cd52cb9b88f33c683f548706f4ad9551543dcb67a7", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "7131a2bee7e60689d27ccf40dcef72b30a6559f3297b24c092bf3b1113aed16c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "cde766988d8ab2b83a7a9527986399fc776af5182cd76c69c7e546c2595a93b0", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "b93ed477971ef6be62449abd022896acdbb3710f5262c04f0260d3a7194e8bac", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "40117deeb9705d71df4543ba4a5cb02b29a58edf3e5ff3c2c66dde1a5a7f09a1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "cf0a9a630edceefb833493f7c7e04ee172ffa748dd538eb35dbf549d4b1e9e02", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "de24c1a9b9f2d3bb8d6d8c065de386d88ddd8d1c86dfb55c7a3e047fd2ec8833", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "68c7bc05fe9c79c92470a1b0dba0a329ecd3df3a7e0ca664f9e1cbd608fc9c5f", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "b577bf65379cf74624146ed6080efed70ad62af2cf2adb170de6c748f2704b5b", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "c5ec7d747afcd2912eb094a375797d3b785f69afca438cdf03afafb4479facc3", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "685b41954fae7701532df454f5838c03b34da0f439c09ffb8045279f64b12b23", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "46856c986e557ea8f5971e7c36c51311f53208f095458d722def3d2992cb860a", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ab718c099642a032280a74e04ff39bcb4ea9ce97e6647fe417c09872ba015a61", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "1aa52f0ac0c84e3ca9a5c8eaa78528853af25cfee2b8b14e1e4af634cc152cb0", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "439e7d4ce6ac84678cd834cf5e60fdc3a4d2aa74654c9dcf2e617c369ffe984c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "5600eb5348e3c5c8d46eba952e99c3193ee997d4eef5764ad186bf9270a5d38c", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "1789fd74f928336d8e5c0d4d9d4df9cc2bd40b56c210988f14ed8fbd6e5c46ae", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "6d74b473946dd25f4f3a19379957c7c7b4d74fd5aa2a2049a963f00a4299a7a7", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "d4fc20b6f9d608f534b9388d7356b299fe5b43f053bad259e9d1713ff9000a4d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "e514d155df4e3868bf66cf7d0ff089032d1b5071da73055f712e935187932496", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "a084d0756f569d1b5d0d125747640d75af1320059a6f7ca9ca5e68a37be5f594", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6ea5a3366a0555bf66223bc9d8cbe9cbdd96dcc1b9eae8b5e34bf7220594ed35", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "0169b1338a9324716c86b9d1c40b0f3b3b02bc09f3f143ca5f6642d0f4f47095", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "0169b1338a9324716c86b9d1c40b0f3b3b02bc09f3f143ca5f6642d0f4f47095", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "9da653329e607a494eaa820001f15099f30a9cc6ee8b77e4fed90cba22ffd468", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ace624549d23f383ea3558df9b90a5faecece9b75fe63dfe4e625cb9caa36812", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "b211b8414780246f2e8fed19dd363d6a855e232c925985c9529167a16e0c4c17", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "93b6ee1d7607d27547f19c76c822a851c4af0ddaeffd66f9fa628aa38eeb6301", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "ed63f7027d2a9d45c00e2c82758e5d2af62dbbd57d8ac7bebb0be8710a997271", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "075eadfe8cf0b0a3ca266020978ab11cc701ab23761abd15584d3904816b5697", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "05661e54bb15c108193b3325621ada5685eb714c9a07fd19bac61a15677a2036", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "4552c65e636080b5859ee482a66b9159087cff9e208c8354a6617fcbfaee1397", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "5a1943a5566c3aece9ffc44d45fcdbcf01e3991517d8ef7db42357238b0b2687", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "166dcb75c6c5255293e131a910e26e78e31b4e9d35daf02f9c23b12066f85279", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "5410db3799303ddce376c6b671697498aef43c6a1b70386ec12a1a35f3a29c2c", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "4e7f9ccbace56bc49594258977cec9ed3a66b3cf0c84454ed23d32611c7d0fc7", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5fe6577d3b54e1bf3e5d21624f611dc7a5b50f5243ccc14b2cb8156d7ea51438", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "6641c67b92c2d6ba2880bb140999d53aff8f55f10ebcbbeba9b9ebbe0fd37d61", -"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "0a51d7c5dda33d05454f5e0920baf3130ae818f8767871dabd8576d3bbf4ae41", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "dd02f8d34a0a53ac60238881618d0a6ff49d36d2967f4b31415104c3c006d72c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "92c76431054366228e53f90214de47ac1ad9d721fb0fbc204624c4d8471afd0e", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "fdd0cf6c88140b31039fe76dfc906815f4dbb70187c062aa5197fcc75b14b692", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "149aa904c9d7d3fd11f824bb53915c3ced066a6b1c79860c6d83111deb7b2698", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "93674e363768e132fb6b025c66beb558c6f37dc653693b31dddae0bc913987fa", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "5782343366cd3b3745fae8535b3950f6a0f993c9024a2b8a1c80ec611d658d4c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "65fc6894e8fcbd8ead4dc015e3e285945c0e398d8e1f1b76fe5a74daaded4a28", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "c719fb013040c8a11e9e14898aeec67b52bdc8bd1d4ffbe34955b445a7210118", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "0be11914581762dddafe36ef82eafd7d7f9f16ffbf31452521789af95b7142be", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "101fbc6fbf6f3f2c770a891c49d5b3ebfe06a86ea3bea6107e095bcee57f5b12", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_grs.py::test_legacy": "245a2fc4974b153d3ee6d341b4fa3c6148d2288bb1bb4b1566a397a69a7e0da4", -"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "11af98d27f4050dc1382ae588d8e9f41ed58a183d22b339a937a176dca7fd92b", -"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "3a147e0e405f6b954c07262d7e1155f3e26a3f504ae42c3c135abe080d0c6a33", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "ff0ca8466d8eb3fca1810a423ceef9c0964e0e123637c5ee74768e7cf7317c23", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "841ef0c11044d8ec01e0ac1d35e02a453876496950ed48234886daffd41ca1db", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "0f4a7b2c30d62b7327bede1f25282712093dd7c0c42e1bbde3b1e9fa9bcb57fa", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "af5afc3cbbcf1f0150aa5c4a4cf0a90c7f874d83cc6346fccb384209189bca0e", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "862570d5d35f82d5b09194b59800c19605ceef244b3af296d4473f71ef0cc87d", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "5b0ec6c078f09a75791d394edf4a34fa0c140e8d436378f532d134eb445443f7", -"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "55316d305955203a02af1d992e88a808b1dd27945f303ad957a0e3b7dd50adee", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "f57d92423058b5e5e7df138084ad5d04c640e428316c43c1420401a40e6b1218", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "5dc79c1233e010dac9a4d82436ecc39826d65af5c05f552a8880bb0e4b0c616f", -"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "3db1ad1f60237be9fd5256efe8c0d3ac30408fb2aaf18490e4906e9a12b32eed", -"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "61bb2063ece90399cac45f2398773a0a552205ce0edf536624adf08532e22511", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "e53d302d3beb05845eb64309889e569170480417e57bd95810e3406017c78ef5", -"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "8b4fc7d358899a72d6d3f239026e103077a181f9e1b443f6734a26e9988b4fd4", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "e52cc06f2c81596705dcabbf99554d701684be370356b8b707eee97b2474e905", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "66e2974b3c9b089ee42fac1bab795ef1c698d3c87694b7e071cfe65611ac8123", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "b29dfd1e2e43b2d2e449538c3818a3b369f932bce41517e3f1a4e68bcf9f27f1", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "e0f07488f95edb0994acb49bee806498cebeed7f358200f2b33d14a733356414", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "22bd5a08b8115ebe0ea6d02d4454ed27399d1390b55dcb7df85b8a7113454174", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "5632bb7838f1b02971476f6eefd0557bf22c56898ca937063e6609ff207c1d27", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "c0a5d79bbfffca5953ca2fa91117f5ef47deceff6b36e5bbe0fdff7e714ea779", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "3c07a233788c4193bbe6dbc4025c1db7ad7c5ae3ed9337ac3ae2634bdcca710c", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "45fb39140771fd113282f2ea9ecee22e3c8dcdef00d6a8af2ab08f59652d2f5b", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "9eee873401521974aa05e09048db276d10b61a4260bee3c74144238fd7f980e6", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "645f3c4340eb8bd30e042a2a72d52359b1fc7b84a3deed9027a8cfc617301c68", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "a54519b770528fe38058a4ccdbc8ef303ef51faeaee908cf2dd04f75cf1acdfc", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "8cbed80fbea88c110fa533c6929cf2faccfe1032923314cc74392db36d811fc6", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "5e44ee41fff0b1a05a94c73bf5f4a96defc013bad36b91b762cdfbca6c164ce5", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "53b601969757a446b27bb3ea2c05bd5490e3384f294b552a471f3e6c92df80c6", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "87bf2d661f1cdfa10a98b68c6b1cb988b3e5f07edbfe1c739e862357af1343a0", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "18ee4f611334a7ae3ee5d5e080af1cdb448d8c36abd455d7a1df1748e30df3c8", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "e2742635353f047a49004fee800c22b5b7921e1716f1949ccd7183adf74557fa", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "d77a4a4500ee213566f3a199073b1c722ef8c7f8b7584c48f6bc2ac18f15b64a", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "e856f7b5242ca53d1d76dc7eed5e5be3142092747820e7770e0e577e875bbfb0", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "60a9c0380c99dd36d205787e696112783349a659f288efc3333615399f2c17b0", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "d8777f1cf7f4e811ba3c7cabdd176815af2ec763acccd8bd6f604b193721675b", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "5dde8dab55bfdea45f6df7e6b36b35f8698a14d6c6cfd7c1f57e6c4437e60637", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "bff62dfcd04943428f8cdeb0723775c22f81dc547d145779c7774fd83385d7da", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "b2f0d1e516f024ab89eca8b72f2a59f32894afd9176e95a66ba17670cdf5148d", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "4088d373ad8100cf3c17a5d3de310d607fc92d43c143d5a77b5ba4bea631ee90", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "e98899b8d8787aa61c406a8700ffae984afed1139f7761425d18712aa7086eb2", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "28ad3ee6a647c278cc42466140aca8cf8e8d2982eff985fbd2514d3e9f97e1ec", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "c4bd65f49a1fdd8a0d5787a96b239469898fffafb0794ed07cc0c0eddd457ed8", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "80684d967c615be06ef6efdc652281e328526bb19c0c9c013a87fc4a81485ba4", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "ef5d7a9063cd4e355cfd4455f4f0b0d381388eb0039452c5329ed9d77f6b8bb8", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "6683ac72e77f91fc28e716ee71c5610af5b0c25f25a875d00945a62bf1097a1d", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "2f051fe36e2a0f25bbb3943b4c075b910078b73be311f9d42ce335744ac9fc66", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "f42a4575adc6a53b63cba44e714ba32882253a5d7a3cab8b1efa9248bf96a95a", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "e7ac56c430273e5a7d91a1da34aa794f4f3d2a76ccb19db40ab8c0a30a9fb7a2", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "a52f75959c0b1e1aca275afb20b6fdf1a285060b942b57cf945fa89374f369aa", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "0578a8b5796412b7ce0f53f851e0b34decbd8bb32edf08254f68219b150ccf9f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "e7ac56c430273e5a7d91a1da34aa794f4f3d2a76ccb19db40ab8c0a30a9fb7a2", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e7ac56c430273e5a7d91a1da34aa794f4f3d2a76ccb19db40ab8c0a30a9fb7a2", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "e7ac56c430273e5a7d91a1da34aa794f4f3d2a76ccb19db40ab8c0a30a9fb7a2", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "de961bb5571dac7566f17e5fa0934fabfb6753f2b93da177e96f9a5c793f1fad", -"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "f905ffea80172ae54c5adb7b8d917c6c73ec4ba63b85090011999724a9bfd8ea", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "3ea3290247ce5086a2073527a5578bf052c1fb5c20e4a8a7aa68c5958eee7f98", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "3c616fdec56d9d377614dbbee8edc3d6da2a70d5bffd8f228fd88245722ad08b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "2a98177555a6c04486c2ff4c1ab73e0020e7fb3a1a6f08680b20379ace22627b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "2a98177555a6c04486c2ff4c1ab73e0020e7fb3a1a6f08680b20379ace22627b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "830c523034b29d6d762689a8901528f4030253779aa4b68a11f55b087975246b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "83bbeafcb05d7979179b75119cb4bde5d73701a22884b7d4e0194933e1314bd6", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "2199daf0c6d0e1313b4afaadcde40abd02914d9745d221811b16260d80a880b9", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "43f02e8b98d164067b25f85c1925b518afe993f2f06bc52dce17b501d6800f48", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "11d6ca2558519db880a01f53e2ca1675ad8de01bbfc28e8ccab94cb037186103", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "97e6217d8a1b23402f1e85a3d136b71b5bb43161ad8c7fd32204c67701306b69", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "97e6217d8a1b23402f1e85a3d136b71b5bb43161ad8c7fd32204c67701306b69", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "b9bfa62452d71da807c69c747b4f7900929f0007581ea39fbac173087eafcdc1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "be6277db601ca10771e43e290292d8573f223b7671a04a533c70cf1ccd8f5798", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "bf06f08001a109c43fdfa6ca358cee417a09c951e34817e13ab6acb99422549e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "bf06f08001a109c43fdfa6ca358cee417a09c951e34817e13ab6acb99422549e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "686cf56df0f794957c03034738f1c471515ac1534cc7d07a175e9a8a2fd0ef17", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "550aa2b09108f4bfb7a8639bee663de050788d7b7163c37b9d64aa58d9105569", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "0514d37ad0924befed072d9304fd5db1c35c38841183aee306176fe451e27d84", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "0514d37ad0924befed072d9304fd5db1c35c38841183aee306176fe451e27d84", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "4c75a2216353982b46daa65a079d53d94e57d6aab2ff7c5f262c30b3c408f8a4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "6daf03abbf86c5a2ccfce92c8acc2623eaaf9c5cd983e3a1971b3643b39b9607", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "04ed8b9957250eda15ff2c6dbc3cf6b5469c74e2079b6e108cc322207601f2de", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "04ed8b9957250eda15ff2c6dbc3cf6b5469c74e2079b6e108cc322207601f2de", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "53fc81a0a184480a868cefa0cfdc274182da4cbdf321f33002cf33f2442ee33b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "341dbfe838a08ee00da9a1d6f75b08495782a13f33648ab9d0d314430ba87994", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "baf3995a37d66ff6adb092fefca8c721ff47569783121e6a9dd4a2f5cfe2f566", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "ff6026af88a1cd8297cc372c0a66631aa01912f146b948bb73f6c76fc5da1df1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "ba4832ef0336354a68fdfc8b7350619878a13ad3b36e17f6e4448d97777846a5", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "497930c4ab43d3312637a4a65582d7f7707fe00a7b866f2d0baf192b452440b3", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "497930c4ab43d3312637a4a65582d7f7707fe00a7b866f2d0baf192b452440b3", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "e08cc4cd57b4ef7a1158cf3a6d9b0eadb51591fbba784d0f4875558a129ec4d1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "78f9378705d53c07e5d982956861356b8ed8de93280b8a2590baef03930adeaf", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "73ff3d149669bcfaa03656fc0c179fa25db9e78876ec07a2ddbad73f24894b1b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "73ff3d149669bcfaa03656fc0c179fa25db9e78876ec07a2ddbad73f24894b1b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "d2067eed8ac1517ecfed9e1a937a6a2ec600b81086db26508ad4a44acf57e602", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "d285aabc12f82a7c2162396f64ec17e65cba504d11c84870fd9760a2662f2b18", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "305a7ec150643f0ecc4e86e067151b67b7748d660c08c576957c3a462845a873", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "305a7ec150643f0ecc4e86e067151b67b7748d660c08c576957c3a462845a873", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "5d4e5c9aaa61afb5e8effb2c074950a0ca0cf34571712e79f937233f3b177d3e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "bdd38676ef0a43d91da203734ba39eabbb02ab3266039cf5977b8cbb6f878ccc", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "c3ad38b68d9de4c29240d1665af05641063834ab27f7a9ca6ddcdfddc4a09a5d", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "5c5044ebfa074dca2981c4829213316c847f97c8f5ad9cd8a8aadd1081e671d2", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bf911a7ad252af558708afd06b203108d326b7cab38c4ad7b0535a2d203d978c", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "04cb6d5a1b6892edd373d8dfb578561fb3535387ee93b1caf7b4094963d91a98", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ac37559a76bc29070dfabf692b464ae3fd10cc16db8af2c0dae56a94201789fd", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "739533b7337ecb9366b150474460689d44bdc484c1bb5df4b6aaf993a704480d", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "92db321ab564c89021dd51af6caa4c20090e87bd3f0ec8a997bcf18f720640b9", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "5b09f3d741663c719f7f6559bf67e826364e5a6eb3dc9919a35dffbb5311233f", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "3c31eebf5b3d0cfb76b64ded551e8299664a0b1074fb3a9fd6f3131243fc1491", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "3949418841d8cc2f4fdd608b08afd4c7a1e599a6f189c2cbbede18232bb7c8c1", -"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "d5dc14788693963a6ec5a0effc130eeb1f59927dfc038e3459fb1a8ab0e7bffe", -"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "d5dc14788693963a6ec5a0effc130eeb1f59927dfc038e3459fb1a8ab0e7bffe", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "93c25247a26800cd8689920f140b33caa9b9bb70d4b791faefdc5aee3d5bb8db", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "118c7944cba589015060b7b2c014f1029f3ba9da69ec70dea9a8cf8fc063e0b4", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx.py::test_information": "c1a2dca6bd006116b537f6a90ee698d18ddfcf9be82887e6a2d287dd4749da8e", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "696a893a39d0142bf221dfc31302e1b0e75220ba35a8378373ec37d193b81d29", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "251409dabb5cd5fc59f6f76615b78b76839e4b5a8ea771f3a082ef5983c7b67a", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "6ae50c0cb44835ac1d454a56b0638cb2750e3d14934f1b5555d87f24332b4b95", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1317ef18960b247da4023d19a12db1e37e4b7d573bdd4db80584a973bfbbb204", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "8858ba4ad519aee2e770bd0a2a687a75a6c26e65c19fe07c4f107a76ed0c27f2", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "1317ef18960b247da4023d19a12db1e37e4b7d573bdd4db80584a973bfbbb204", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "8858ba4ad519aee2e770bd0a2a687a75a6c26e65c19fe07c4f107a76ed0c27f2", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5f08cf13695113d486010f7223fc119503263e08054b29709dedfd2151002226", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "ca73fae859d40e7f5790c0a895198fff3b52f8968f35de3d437762510395d0d4", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "a4622dbe0caeed35b7b3d213718f2aee3cf9c5473c0594c620ae497a86e36277", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "4a562afd3c27a456fdc75f5e954e4f863a2270ff5c20a515ff448cc8eab50463", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "29f5dbacb49a1159717271b18ebaa300c32590006f81aa8930d94406cdd2179a", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "39f1c19b375d47662bda28550fbfae7ea71401ab562457fcc0183e8a323b4de6", -"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "e7754ee5bfdd1066c57d3be8ba8bdd2cd0cd4f61611315b4ad46b1b6116a6ceb", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "fef03b33b2d8cc5234bb016b59b9d847d3285cb69faf9b6c0af34c334fe465d6", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "3add21e4cfd3d9d9451733ecd88c3736b4b6ffefaa8ce83d6f8c62a26b41df10", -"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "e913d69e278ff518fca97eabbb4cdc567fee6c93567b2068444a0d4fb7df3cba", -"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "02456a8c2d08f3baa54d599a3858c0761965b9c7f041f480b400bdce5c79b5e9", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "c7f102fbced90f1077e6e89d06ae096bd6be60265f1716042c2bf9d6be7a288d", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "a787c76ef68947bc49000933118b6d3da9fbdd7fcfe46db00e2f692576515a13", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "e420399cd2860a6e32f2ad225ab5f82d95cd211359f98f1fdfcafc675cd2fd38", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "e20d11a6f61f069ee6b130484c98e2a880eb02c70404a4edb3080b37d81ef66c", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "d5dc14788693963a6ec5a0effc130eeb1f59927dfc038e3459fb1a8ab0e7bffe", -"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "f01d56fad8e8f45702f12883994f3a8db68323362dcce391279eee7311b81985", -"T3T1_es_bitcoin-test_signtx.py::test_two_two": "b6f63b4d0fa350565c870210b4a9233d8bf10f906bd199ffbdc0a94d4389b644", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "e7754ee5bfdd1066c57d3be8ba8bdd2cd0cd4f61611315b4ad46b1b6116a6ceb", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b610085031010706fedb94b654cf52c80a3b97ec64bdb656872a93aacc07efa3", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "44c9f767e35cfcbd51791155f75f173f579f37a93ae9ac7ccff958e9e211e8d0", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "8a7b47864d67e05eecc47b8b54e632ef038f2481aeb5f5558b4b7683dd83b90a", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "e7754ee5bfdd1066c57d3be8ba8bdd2cd0cd4f61611315b4ad46b1b6116a6ceb", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "96ed54d3338d0296bc6c9dcf33111463d374ec318c6693bdb0b3367f1189ebf5", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "f3158e59a8d3412d5868be7b829f2a85d58370d7f3d5a1f9f4ca832c40dae725", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "bbdc2e1f262514a601e66fc8dfc37cea7f4e7d2a182d5631b172ec4d6c0bd2bc", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "0b611d6e038ce75b7b4b65ce77c2e0b63cf4ba07c3ded85be66bf0f72230b67d", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "96ed54d3338d0296bc6c9dcf33111463d374ec318c6693bdb0b3367f1189ebf5", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "6169a97240bd48660c8690856cba328452575352a8ecfd26f1526604c67b06cc", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "72ca9ae692007b3b045827e1a36939a2458aca4a23cccd02393e1e64f9164858", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "0768f06cd584315683d66ce16601d3949c5cafda92e1677d330d9edf536c1478", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "21eb5b330cada416a1bad36653707f86cf272a966be852de2ea0374ff7d49755", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "ab7c0f7645364b60a2d49c62cb39a2c134ad05ef488e9a6d46f345ab6f009c9c", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ee522ccbd542f88929c1270212835e48424cf7bb9719f2e8cd460e9dce3f686a", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "9c2d23c6b61486ab781201d9a5040888b5e2df2a6ab384f0944bf40ee4dc28b4", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "700e60fe1888565b4d8bed5711f81f4ab0f6983780b7939b106475d44d9fcb52", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e3f6b37eb11593ea97383cf7a63603a6a076085cfd10207de5ba1ddf2ecc9fd4", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ea75a37601df5ecec1684f020a2f977c1eff3bad84fdea24a2b5235afa27bf1e", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "2a7f4356bab5cd8dc3d707018d31f4821473002aca2d172e7c0d775e1d88fe70", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "167e2c35c01f21685b3355d7808c892866cb9986eba7c41d833f329b5f692562", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "af7a96e8b23639ef79f47477819509f4a8222c5964002ac0a2882e09ce4a5bc7", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "47ebadb8e216cc7b920312fe4d145ff626f48d6de8a056d6e6ee42873f15cceb", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "af7a96e8b23639ef79f47477819509f4a8222c5964002ac0a2882e09ce4a5bc7", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "47ebadb8e216cc7b920312fe4d145ff626f48d6de8a056d6e6ee42873f15cceb", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "0200b771e0f1f7d9b6694438b5c8f5a2d5bfcda91dc049d3a51ceef4b14241b4", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "2753bc716dedb49437daa9c00ebf29767488b471081a7de97d67783841063aca", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "fad1105c5103b2a84405567b196b5aeca7ac3ecccd445697cadddb11d9b132a6", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "092207cda753b47ec6986353c8a391994a7fc1b96d62ee17e7601d15bc8d64a9", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "d7ded47ab92c7e2bdf3550f85d0eaac36bc32299b0774242a98173c4a02833c3", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "c836a194217ff181b207d280ff6061187e2e77c03fccaa76756b0c8a17c95142", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "11ec7fe7a7eed281ba9275b22748a96e8f0e43c076131915b1846c647809886e", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "5d92afbdf1f57775cb04041957397bc6cde5aad9534f2a7a6231644f1ae018b8", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "1d398545391bfd6b705e4497b028b1cffef8490903491e766893dc5ace0aa89b", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "1d398545391bfd6b705e4497b028b1cffef8490903491e766893dc5ace0aa89b", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "1d398545391bfd6b705e4497b028b1cffef8490903491e766893dc5ace0aa89b", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1d398545391bfd6b705e4497b028b1cffef8490903491e766893dc5ace0aa89b", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "5e8c112c058e8f47088c1e2a38c4a34738da71b9641ded14ce31d6873d99cd9e", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "5e8c112c058e8f47088c1e2a38c4a34738da71b9641ded14ce31d6873d99cd9e", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "5e8c112c058e8f47088c1e2a38c4a34738da71b9641ded14ce31d6873d99cd9e", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5e8c112c058e8f47088c1e2a38c4a34738da71b9641ded14ce31d6873d99cd9e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "8d4485d71f1b3d5dfd459f30124dff3e4595f6e30db42cd176b238495f179a49", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "14d6ade5c529d831106219d98305524dcba7eeaec9dced076a0e3ab4a0d8b52c", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "f6404c4d7088df3573401c6c0e0019b5948fd7437579f76950a75640c7ae13c0", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "f6404c4d7088df3573401c6c0e0019b5948fd7437579f76950a75640c7ae13c0", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "46fab0dfe6ba48ace42e1cd0fbed1ef76ed06319aa03db8d7f3d0c6bc788b15e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "2c88247e7e598dd65b00d244fac9a473e521cd40b92f8484848d5f4572d6dc92", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "8dd212eb8ae54cb6f282127e28c90050da8500843afe649b1b166901eb2051a4", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "46fab0dfe6ba48ace42e1cd0fbed1ef76ed06319aa03db8d7f3d0c6bc788b15e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6f08943a5edc61580d4648e53cae5b4909d3b19d118abf381e15758bacae366a", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "3cb825db93c8f80bca6b58882532f4c71a2e3756186d3f2cf71c8e91c3e8f9fb", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "a27b9675f2bc2b92e7db8c678d6988c0c074d4f739ad77b2701511c885e1ba4f", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "6b7369f516e61fef0b307885e00db7bda8920ce1e980689bb8321c5b3fe59781", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "77324246b4a9901f95733b2dbf64e005223181afb96c0be8d726b7aac9ab66e2", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "6c0d02bcfc3762ee313c68b43cc450ce3b882b4d6452cb604c3c9a367123af7c", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3f17b0366e74f28689e2757cae9380c416453b7a9c8fcc52f7796f0aab720366", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f670e3b39fbb680189c2c71fd4da767600d440be2dfbea8b47131ac1a58fe9d5", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "2e3ec7ac608d9304fbdf5cf8784c2596879ce8590b9985cd4c04543e59bc62b0", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "08e799772832d2f2186f6f0df4767ef7ef8ba63845eead5ecf11b216097fcfb0", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "891007b46a93a7e2e15e1fa102876d1128214c06084bfac98887324dd48af020", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ae4b09339b9615a1f552b499a8eef20ae263c11f33c1b3bc8bda8478105f1513", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "1243ad6694444f8a39c43403881214d812248833d1e369cfd97955361ed1335d", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "2f991f229a2bb48847d87a8deb7202fdfc7e614570d22b76f34bf8ca279b744f", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0ecf3327ea569310ecdf13f1fc972d4557cc5b27b3e4d6a8fb530c2898b31944", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c6404808d4dbef56d187462001e55853c1ef08ea6c9fe43468c00e3b2415b347", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "0be227dc68a37c80fa6b412ff62fecf9ae69f48be3b31564332aa0323f190094", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "96ed54d3338d0296bc6c9dcf33111463d374ec318c6693bdb0b3367f1189ebf5", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e6f79cc491f4d015ad846b7bda2ab995f34871a0ae44e208789138c4b5cc1684", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "3e00080dc3d43b17552c72ba588d3b04c4d3b59a7d988924465316e91a844e0a", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "cd57b2e604ab0779d22ee277842383156cf8a2e4e5f4abb9d284d4a5be46820c", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "f4402776a38d1c79058a1d8b9b7ea376094a0eb11ae0bb20c3b233d373ab383a", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "7914b08fc4a4a48306bd1624dabb1514d5c242504b59496cd3fb17d84f72cb6b", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "e75307a3d749c2ec4a7048a45086301fb612a12b4df490c5f7297d66a2dbdf84", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7378267506b55503dce1a31becb8820983b6da89c9949e664de919c80e06ee3e", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "fca4871491322d25293efc687ee5dad7e38688368f8fe78cb3b7bd6d85e47796", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "48e154977e3e6c4bb1700105db21ff40d1933154320c816fbb06a3f65fc7272f", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "e02c2930c43d490929e619ad6f624a44e7807ed91cecd6f9149c728194417f31", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "7857f87029a78bbd2b1424b7ff7a57ea8840a23d93b8c29fbc9dc0bb91ca969f", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "a60d0d2ac3fe9c85663fa100768beef86beefcfdd4b92c9b5a74af10ea05628c", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "a2438eb39a3f600fd724c93379956dd31f9e834d16365346212d00fd3d2c6301", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "7b862c3cb6b9641ec8e2ea459ff62cb543acd9fd918c8aa7800fd668e17c9da2", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "13a729d4360b79a03ecee5165eb1ee9629fbdd2dadb104c53bfec362c8175c51", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "895da68b96cf390fb5c94dfa033d7af70d561ffd223bd819feac70328bf06d24", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "c6db740f2f4aff5aed9b4c1895dc65d3b900759b4592837c30afdd45ba9e7f87", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "dce3ef2fbe315f47f3002e31d19007b46ad684052cda0da42a37b4cd84e669fa", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "73f97bba1fa207a546ebce51b26def2964b828ea2f1ff43ae84683e308063216", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "5ce3094ac03a5cd637d662f699e5d61ebe8cc821b5abe4215943fb3b21c03084", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "80b5ee9dc80ce38ae7bc0bffac0d5f20ecaf2a5251c33e1dc263430b31c90b29", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "e3f1276737792bc6dbf721715f5449c4c6400c659ff4d82190853ede7bc903d0", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "f365c54acc1d76d15665460a596809fdd830d9caecbfe8619173ca46969166e7", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "b5894124189637a6a54574e0e5f2d1dbfa5e43249c95cc8c047d1098b06e3381", -"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "3ffcec12f3a89e1108ba82a4ffc22c700b88e36cb2fe8e3ad7e4be1053ba25a1", -"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "7f394ebd1caa73bdf2ef1f03016aaa9612f2f9c0a7c609a4c049a0b74227a1a9", -"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "348489355c8fb092293be4da8aa56ef57432c78b31db626c97fd598a5ca6d951", -"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "05bfb2c7e049973c2f2ceaeaa660ad190f105599e69f7496ddae563b8cb3ae71", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "7d47dab4961e17632adf85d0eb1388308f88d0bf522c341b52e0af7b95c56c05", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "93f25b68dedd7dd38a19237946504c1e187751ffc387a31a661abd9faa567660", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "694328964b11a5545528b3e919cb6e5a790ac3b9d9cc05e7e002751588e6d167", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "c6007a2e26c9550615ba1f0b7299a2fb13965d5f7ebf431096a820b2f56356d3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "687076727e7722d10476febbed06c81a370de27fa6a2d856c4cff07617d5dac3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "ab4fa9a22a09567c46cdc75b83a476ad7ca5bf0eb5d35ac3793d64348c6d1cd4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "1668649a10bb9cb318af42ff1b166e555c74736c22dbade52abb2236d6402acc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "ae499fc93f9fc60616e3a3c9f972e24cef3a1672c1f998a8c2210ae209aba050", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "b7557984cbd15b15ab62f783959a092419bff242521ac34808adbf08e71fce51", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "566703e84f9830f427bf43fc5979b2cbb55a7c216e1752fab45252460e58514d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5cd4036b9c913c51dab3b6bfd5570cbe7a0a21a515c04a367c1ea7efeb7d2c06", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "5f9694b6d3613c5906829381edbc5505b737d63383d13a9b99fc217e6476eab5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "1aaa61d58f690a8c87b61a76f981d3ad2c31fa7167dc1a0a685e80c83b4aedac", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "41efa3ab6948cff12d4833e71ff93a76ca4f6dd2e1344d3bc042728f9f5352d4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "b2fbd8543a80b6a612ba1edf23673f16a507421fcf348aef4517124a7176c60f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "6cacb8bbc939b18317577ab3804f2e43ba7dddd6956b52e4c5bd3e995f27486c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "33bb4d01918797aa02b160add3037e382ff37130f3d2d72045a87d42eb6adac4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "cebf58f18a12ce86747b0db8b993895869fc6d86c21d84b1e16dd3b5e55b2537", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "6dd1224cfb70b6d09d1ed5d982e6212940ecdb87a75a366660c65c47a56d42ec", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f3cf5fc63ef522d715d5c96babd52fa0c4415326fca198fdf738c3ff36b2ab0a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "714f8a294cbec95a9a1bd4cc85821776896395b69a77ec6fc0970d0b24405915", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "20c313de741d0969176b5f549dc44699b20451509c9c4d4f4dfc6dc697539673", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "10a47b045bfee10abc3968cebfb4f0ff4fffc8d636d7ffe23c7e82df4eb496ce", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "96ec8a676c3920c4a6729c426afd2c88b2d822d5308f93895a8acba74d324a1c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "19c46c4b9eb890a2e0028a6eb2986771b4bc2c938bd969cf9ca508463d4f1fda", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "be4679ac0143d08867693bf943a489a2c64cf2dfe29eb0ca5f0287415c3eae86", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5bcdd0fbc1af1d75a5ff6e0ac4c11b859aec10ae82a68ac1dcbb5156ebd1aab7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ebdc4ccf1578df89e1e56a7ecb527ad638e64137f383a4cc033605017471059a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "fc00dd56f0c19c0cbdbd412d428a8898511face8c59bc2918f64ee9735d83387", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3782c8d6f3b80e469f5e2b8ec7b2eb190870b53d6ec6d9e1b81d1e3f43bc8b33", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "3bf132253a1a462f9714948cf1959013dbd8fdab64611da7c9d88a0acd40f87a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "5c6b58e52611d4b51830fd7626aa43d3e8dd8e3957c97ddcd6c90303773e6a45", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "5da4445a9878397310a8ac07f9f9e21a6d78a8350a756213968c0c43dddf8a80", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "c631e3a16770e2dd677bd8119fbf63d2d047599c445bb24a4ca3b0a4866cf30d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b02d8a63bcddc6b0f87069e45159139fb6ad546fbab3e079e55002b0db96b384", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "17bdf93dbe13b850cdc2a5c1bc60a7f5062b9eeac462556e05a80ff7451e55f5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "a1dba8a5746c2b7037a0d17193c890942682d09d9ad976ff61a02e9c9a3ae559", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5f3b540db3e9a46f292445fb8a353fd55aa4ab4f2f00f8575312771b427facdc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "60ef37b079b88b93329131d5aafeb82dc16b70679dfc3ae1aa4f8bb2fd4194e5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "0b94d43f863c776318144798a95aadbc01f2d4d24b9eccf8c9a990f937119b18", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "5e5302230612d1e78abdfe2170c51759788e16c27a56031f99fc68dd5045fba8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "d8093e28ee65c2bc627d4a6f2cca4356d2481276056f4e1ff745c561574532bc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "af9e5a73ad279a2adbffc9c10a7b4648d38a8c60ef861a00fcf2dd51e3b9720e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "f8c9df9a860082d0605e3398c85da01604a29a5f0b48d762dd310990056ae174", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "e611f9ec2e4cdf7324c4219480bc5157d52337da983781a3c1c68f55aac1dfd9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "112d129387923ddd5b64b84f90c8cf0beb10ab09af7091aaeb1d5142b120c2d8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "062b6a026075b17f76fb69cf5a684a1150b787dbaefb3738d592d278dffd757f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "6269eedbf5d8b6a4695fe5f910ae1afe1b2aead90812a00cdd24f9f57158917c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6c40a3c05b0c978cb74b812063a2094c6ccb99f9484ddd248bfb41e9a475e753", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "1341249b4ac5beb4bcbfa64a6f5afd5b714c02050ddfc92ab7395e1531bc203a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "a1ed017ab598a4d52cbb88308ed9201edbfb96ba82fd57229149b10a6c7c1519", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "9276c099ebda5ef6eb8634fbd087807b8c87cbf525ddb4a8daf7b573a1f1548f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "31b345cd318355e50b4c3df7618710de0e3d94d9bb335bad045f15b0e4b4b97c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "01d80d5eaec15fedeaa8e47a04c7c348199db6ee991288ece1efdc831b17ea51", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "9305c3fbded9167e2431400667eb859ac5ca4e269ba87298ea29a4145b8d1ecb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "a0c3dcc9a1294ff1696928c3218c5dc3c9c554f15c4b0c1b596238bd51d71cad", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "dd78aea8892da7b8b3e8436597fff369bd8db2e9165fcb292a44f1a17161cf27", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "b91ae6fc974f02d728fb0d2a737898b0d3c17099de5562d5129c37d30769c6d6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "d46a1331b02359876de80b9cf92a343c2cb76762c5ece0daff370070d2347c04", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "8818d7437b4f152e860a626518f0667e605c512820ba005933294e8aeb01fef5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "95cb31cf1045b7e39d411e9f3d322705dc2f400a14775e86f6557386e709172c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "c1ea5e5208bb7be1ea2b055f933a72483ccf0ff02cd37510b82c2feb767f0f89", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "66e7ec0e27fb3ebc4511a078b0c1235f8a948c90c33a6586d6ba91c99bbb63cb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "e4efde920a645be6dea0702e96fe58d41105e85331623f20204d28521c041a86", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "0049ea1e6e732589d9ddad82750e894efb48e1c9b0d6271a40dedceed2fd6f91", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "79109cc5fdb23834f0fab3430531fa837e37c07e874a3837e6fb69881be07c20", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ed78c374b25b9d7724787975baf4c3570889b13f336b8f1bdc5bd8baecb618ca", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "9fd31c613e8bbdf4233100b32b19fc7c27f7f7327d7177d0df558df2d92611d9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "ef96b36719473997f45161fc5a0925e490188b69807a630593025b39a9962be9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "1005098b37a5d4df6db3f78fef26ff496f6557df4988b8649baa4123b2782f92", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "d97c8f9daef195e7dfd5474f68aca5d4ab708e3c81f3124f61257e7059a1fe6b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "ff3cf1156ad5b689206384b97348faf5683f8a82d43377da2d399370bfdec160", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0ce546859b6db31a302ff8887c8ca769cfcf1aebb52138e68a5395a57829b83b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "eef306caf3bbc4dec06209c536cb29569c45022f75236418eeb1e37b6b0cea9c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "bb3a5dfe672f2929269714fde57425408e2d947fe4c8826df3ed974bad09fd0f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "3bb1cf0fcff40ab5e1bb9b4d440f8de8717020293d24df50878b975370358b7c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "054cd3bf1c28f845eae8696d65d189ee05282cd1a637a3f1a71b775cba5bd5cc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "9780421ff515424e43ba6edd1caf1787ed1555b852a698228cb3f202aeceb2c1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "16b876c1ba61bbf23e7c9d87e2a36c1be86711381c6ec69afc25e187f3b7bef0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "0c59fd2a1b3bb7c6ec3b59f61b843e69ddbf5a14688462f7aa13a32e028e69a0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "f4a984e826a5f7b6c7831bf79758557fd721170416a5dbfa223ee586c1fc5e83", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "fe16370ac48b27c8ebc6d5f671cee99352e63f5a41bcb946aa7ab8a93dff82f1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "5466474bf7c7d4e782156d4b30ceff7966483e97b1163b97e8e34442451f3b53", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "0e597fee62de6daeff89ca34436c13e5d59e2b7ab3e630aea028e088966c2369", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "06d8efcf1dbf176bab6fb4d382d50b5ebcb4aea5a179b3b40a7bc0366438fa4a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8c424957aa93709ffed768fc13662c65a39db0555bb84e6a69cf8237d3042deb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "85161f66e3ca2cf5f0f409bdb873ebfb7349977d98c67e5c6e8a8f1bdfa96cf7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "7125fa72c66b746220c8452eb6080470865e4713d47f2c67ce40b4c980e8e2e9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "e7d8b36253baef40ab5acf7bab27fde4af4feaf8b193abe629151d662fef18a1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8df1c68b96cdff80bbf9add7adb17365a560e564cded3cb5779312d31b47cd21", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "63a4a82f4d4e0c22785512f82f181b4a684894c1e7f3d32381192a0defe41b2c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "9feec97f4a7b33bf055b63ca0025be9bc2d93e137d120eb0584315024559a604", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "13da45e520db7a9b5a4aa619da78558fa416739bb42b44150deaedd3662c37f7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "4b4e2f37280ae77ced296a438bdc8ce34b204a468b1b1f2ec98054a3467c15fc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "77086dd819fa7c2f049ddd4c8e87188e560454a70bed252c42341030e1b3fa56", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0c34365f2cc647e480482a239d9a431e2d64ce783ee45012abc001d4a202587c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "6a009edeef6b3c1ed917d82c18ae68cf0dd9f8adb9318984a6396aad3557a7e0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "d327fff7fcb3c618e67c113b9809cc6dd8d38fa03d3b64e58dd9c5afaca94db6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "484af8b2cde95b62a8134baa352e66ac46cbac94db45494c1f9f210132773219", -"T3T1_es_cardano-test_derivations.py::test_bad_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "d1abc075f5baf5d954e8d3355efc39581d9cff57cabd2cf8d20fb86dd0aa8e67", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "de3ed6fa49352e7649a4147a77050a80acae4642a27d5eb7d2654c9f321a5ac9", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d45db9f1465f5e852e72ae18e737a9e8fadc930310da8eebf7d4b2532aa75a58", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "e7da8bce65938da1d163b05b517e03e617863964da7021d2bb8edd002826b30d", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "54628782b3028680636ddf89f83d23fdf3590d7e7e38ea2ee101797019e90606", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "b313289b114e26a29f722b559f566084480fbbdb9c9ed14dc5de4cd5a431860e", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "823b7d208944c1126b2175ab4663fc8f5636fa4d0bbc14d8c558f923fc4a2f2e", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "40cdc9230531b632e3848cafe5e5e10cad6cc69d789d22430ac8b5878eda7b3b", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "62dcf9c9eb9b8403112430350e6e5a7c81ef3d8674a1f1f50fadfd87116710bb", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "229ca232ef571a2f7061ea6c0ae5d48b9fc0c42bd5489821fada3712be39bbf6", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "c96acea1e4b073fb62502884dd5bf0f86e1698ec260b4a725286b15ab528da73", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "e9a51c7112bed32339e6dc346a3417cf4e57724a9adb5778f9f72f5181282784", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "de081e095953189e6c0cbce6b12fb0595bca85b45da1bd73f582b540ef749b37", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "00259cb1e49e498773bd0be39214723d5803b8eff71f2946939f3091e8f8879f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9343d81da82b5ce36afe10f051ed8f0f4a459301af33d17ad88bdd0694b84217", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b652a69d8a97c483d4034fce866b230573cf743c139195417c869e2ba89d9356", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "83231a19dbaa9e21f43d77ccdcfa43dd7c8cd2f33bcb1bffb03a632a2eeda6b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "cfdd18199a252a169550170a17509d99905595f1b36427b26e219fc5a8ba14ac", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "4d9a281fcb76e46f7fbd522bd97914182d71003567bff9b495d20249151514cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "e0e42dba14f8e53ff579bc272228560d0a136df90b92d9305cd519f45deb17d2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "7207c4d4afac2ceb8f6da0c8b73c5591f8e1aa68c50661896c67450d0213d2a7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "ffba45c1d23faefb6739e8948c56591fa77ca5498841fcfcf21a5dbdc8394258", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "b202ab1dbb16d171f66f03a97776c02db6b8c1dcfb02af9ab48c369cb3e777e7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "3697495eb2891feaffbcd9015f2349976a8276250bd721dd2cb6f384d7f5e153", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "75b85e65a99de9d8c181e55760514da8cf0cf5746d2699cea63a4c19e002e8f6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "75b85e65a99de9d8c181e55760514da8cf0cf5746d2699cea63a4c19e002e8f6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e493b74b13f65480a5128e86327bc54882f8c048f9fdd0774318e6602f6b971c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "787e7e1717d5a1ad255d1b688d182f13dc9ca932fabd01bcf8ca4a8bab093d0b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "3c0a2d26d5a7bea4cc1564ebb606ae8bedfde00f74bcf94e38eebabe2059bf79", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "bec693e8daafc71e7d72e82f03bc0ab6de2d3fb48069a5a76f98ef4a1cc921f8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "20dfb2fe76643d7cdfdd9e0d199d78b3382a9b87306a7a64fddc87cf4c922f4f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "170008a74ccba2cbff87f6f6e03da6524cfad61395b8ce2ec71c6841ab80d2cf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "09b1261b9e9ac9ce5682336ed6a276f4aff9fc2848cdc1166d20afe0fe8eb4e1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "2be3b28b4cb86595df62dbfbd64f8fff63c3c7a64277308bd82fe3d0222d7417", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "300e6cbfc2d9a45fefabc09acad9fbc22e3bd38c0bae83c98d9191a7960903d4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "20dfb2fe76643d7cdfdd9e0d199d78b3382a9b87306a7a64fddc87cf4c922f4f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "170008a74ccba2cbff87f6f6e03da6524cfad61395b8ce2ec71c6841ab80d2cf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "4e022c250675e7dcbe4f03a68d449ccbde3839df7e11c112acb77a30a6c86a86", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "785883a04c3781d7787c339c017c880808bd038178201979894d9c7ef7e9fd76", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b3bc0da8f8296b5fec5259e416bbd656a958c58fa5ba22a54cc6893f4e60b06c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "558d4defb095c2e5cf6b42cc238d276e89e212984ef2dd3b58e3e1e5805bd965", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "29aadddeb33797a445b69f27c9b37f7442417b941d7b836a886029defe136a3f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "d7e27e33cccd66aa8300840951c67124b871c53805d6aa5394eca4919b8bc154", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7e62a8c2b6829022a502a977cd6c96711af4c06902eb030106dcfef1a3595ee7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "770cd0a3290548313b10051de75d363961b3942909dfe7a3ef19583ea35a5257", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "3bb9cbc6d56452d9634d1126501bf3684d28b08c8777f26016c94c4c0fbb6355", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "dd7010dcf95b1d47e1713c7de45f499275adae2dbcb3245f80c410ece14b422d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "2f62d93f5312f598863fb5bd3bf6628cf28012fcdc4bd1eb0f3b86c580b275b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "9bd670350844d195e40b2a182e35351253a4999ceef6394fffe4d6973f9f528d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "1159c892eadd24cca1f94683129a15d21699c494afc44b009e3332b5e6c4df66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "7e4a620c5044df16b7597b4e30be5ec54524c3c967e1fdeafd9c8879f4041ce4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "40bd62a6b99365f099e5b186f092bbbd8c5e55a31e4ed2e8ddf1dd5b1e9b8a66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "d66f0320a47ed6d7897327ef47b7cd939cad926460152adc9b259b1ab55cedbe", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "aff7ae9f5c2cfa2dfee901750ab65702a2331847ace823fdacf72af1600433fd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "d28f539b36d1b456163d3c79a07fe37975cd7bae2834965c2369530ff54564bf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "3b75440b272cca6528eb685ceb05b37613317928e2142a90252d2046f2540e53", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "3266332c6ca04b81e698a030f9b1ac2a376df844598b80b69894d660d9d1fb16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "69f2023e71d3e324955590bd481e0714e53bddfd86b8591c8929b55744c848ec", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "b4b600810c3aca55bc3c47d1cd57fa8d4f9f7b35e939cebbc93c370fcf5d0228", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "13800c1fa43d61a6d29caebfe0fc95335bf6b5c3caa48045571b406d1f90b42f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "24ace7b4d1ca82706089b28e454a7ce01a983878507963bc4d880c2f716182a0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "a0cd91bcfdad0cfbec305c4765849665c2e720a545e29a8bdfb34a7576885d78", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5f735c1cd78e7a9ce7755250c6ca2c8d93f250ca3d13ae74ba84c1b15d3c1245", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "6f0ee7bcda89c69fa4f401c440fbcfee8c62d8c069c852814166c81a23e2ba84", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "d52b7b096dbfe8ca45f5daf597ca900c16dc34485ccfc67272d13a705964265d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ea326dd2e7633c682dbdd6ccce1aa10a4b9ce5f7a910d0934682767cdea13f1e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "c038c6f251945cba9b55520d70ea99f946d36816dbe5880a3d61ff968559b786", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "bd4f6c1d673592f0903123635bac45052d9c0179c0df5cc8f1cc97024b84a8f8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "b1829e724eaa419e08892ea6963e67a578c148c545733504b9002d315e750a66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "2cda9a84f66a1aea0ffadfde42a1fc68cb7aa0fd3344364f60ae15cd08f1bd9f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "12795b79cbf908ce6342d8411823a871ef6cddd5e0d26eea0d990d444a87a9a4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "806f6a77a535ca869bffe00554706ced83c57203cd961db4a158991bebae99c9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "5dac26057bae8f951b7f117d0f499dcea5dedd461ba8ed421bbeb30d365ae955", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2efd0ef50f904e3e4905ad7c613bd6b047dd986ae16d72dd513d4d582469778c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9d52f56c62ee82230c2c37187919aaa49ea58a83ca5117f0995d47215a2013d2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "917fdd4a543d678d44d89c052c9ee47743a1d78fd414be73d77ae8f88aa0cd95", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2eaa6a2592860c8ff9c1e09cf92c9318ea8a8fedbeb0ddbd1cf8a81faf78f848", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "bd7fe399dbd623ce3e3853853f8ce4b46b92ff4bb098f68a1c27d3717563b1a9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "14f69f84cc0f169dca4a722f83857b6e14431638b023a19b4897a16e1d0760a7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6073fbbf8e34ba8fa7553337758b16c6a921e01d1a96ff9c055cbd29d189f75d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "440e15a55f918845df0c7b41db88e931c37230a917ff50f467781ba880bcbf26", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "1de23151f4724ccda58e0434e011817d7c3e981a9de6e7e57654012a6a43a499", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ee62025f36fc9d59367673b911d8aaa1234efbaa9edb86cadfa548d92f97673b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "18d3daaf28e1339282ba3a41d116e1971f106fba9a9ee857b677b60d90182b7c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "dda94a4c86941965a6ca30c3190deaec19a2a322802329471488ba5c83373626", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6ee08fcfc4b6c10ebee9c884229204b75536f04168fe73e697de40bc51a6ab25", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "14d5cd9ef24566c02f9f4e90148c3147f24b6b3b4f331629ecf1de7e0f145152", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "980ecf31571050905b90727e3534f4b7526423a180b4ed05ea16882461a1d37e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "c8142e1c2730adbe64e256b8c3283bf090b9eaabbebff55f62fc4cb98825157a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "c8142e1c2730adbe64e256b8c3283bf090b9eaabbebff55f62fc4cb98825157a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0528159bc0ecf7b90d86323208b4fa255e1791dfd5455796dae39e54f4f0baff", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "17a19b07d05cafc0dfadf30d3b6f8fef1978ebc5a5cb1d8e1d621629648159bb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "17a19b07d05cafc0dfadf30d3b6f8fef1978ebc5a5cb1d8e1d621629648159bb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "50908c0cbb20c5fe1dac3445b3d6269a892c70edad5322771a3a0795fbb73af5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "0bbb6966780c9838cf6687e9fec216ac7693fa6d0f65556b1816abcc959b3444", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "963600700405ecf70dcc4f459517f305d3f102a9613d38452c9d20a607d3cd40", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "99fc2359dd494b5f79ec470f31460a155440750e7d15851226d1b7ae773a68e9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f1708ae380bef3d8dab1ad908de67ec8511a66bb2e7be28695df19a833380115", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "80fa8d0c04c2b91f125e0914ae9de249e7cf93eaaf21a61d3adc3ff7e573a61b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "d849babe6b86c207d78c09caacf9ad0c4df251a6fc9dd51f6f2cb2aa4e253aab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "e4d213dcba06876ab1275cbc03a21b26c078ca5633693e7a6c68eaf76709a1a3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9ffe814926c47913b68ebb581f81feb83ef5cccc6d8540d8609ae2862d753ad5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "35a417e44d178895bbdf157045d64ad2b90bc4080697ff097fd795e033b92459", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "00259cb1e49e498773bd0be39214723d5803b8eff71f2946939f3091e8f8879f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "e0e42dba14f8e53ff579bc272228560d0a136df90b92d9305cd519f45deb17d2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f5eebeb3262f70323de3b42b693fd53b9073f8ffe362a6bb8bac69d81e2b932a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "b60c6cb661369405cdc80cd3aebf21e581e46e98ae3472010a953e827f45770c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "b60c6cb661369405cdc80cd3aebf21e581e46e98ae3472010a953e827f45770c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "8153167aa5feb6fe4050e9daa9bb9645512eadaeb6bdf2ac29d6465d6fd48082", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "d509ce261091e10f99e5c3f6eea354eec494ea4d2a75548c583c8ab90772e70f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "d47ff7f1437cf752f3ac95273beee9f426fd948a3382973f477d675d95f8d74a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "4707194f7f37a4ebdd9c45eb55b1fc8ee7e2724b6384c7a941d6ed8c51271ff4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "0e0b9106d972662a1fe3df37a2364c950f1d2ffc0d2667bf3a46bed9a910e1e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "e3c562442e872b7e84988343fe126934fb63a6a1d6c435ea70bcb5cf6f80d79f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "ab9d79c5cc1d5fea7571eec6c8c5903f19e00676436591cd5f6e6797a6c8b451", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f94b47d5cfe1ce25945f52d0db820f03b8be2fa9568c897b0f46db5725aeecc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f94b47d5cfe1ce25945f52d0db820f03b8be2fa9568c897b0f46db5725aeecc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f94b47d5cfe1ce25945f52d0db820f03b8be2fa9568c897b0f46db5725aeecc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f94b47d5cfe1ce25945f52d0db820f03b8be2fa9568c897b0f46db5725aeecc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "0e0b9106d972662a1fe3df37a2364c950f1d2ffc0d2667bf3a46bed9a910e1e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "2a5a9eff24aee3074d126824ad53ab30e75db742e84220cf57837e6f0a31a718", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "1119308fb302b495be3ece798327c0fabb6fb73a8424c0b4aecd6b59784cadd2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "971d8d7dd9a864c07ad83e483f07446c9af3e0270d26e4558a45a5cc0d490ad7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "dd5c98504320d4e9cd398fdaa238e71d9fb98519a4653e3168cdc076784f37d6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "70d21cbe6e68a957d0208372b96516acdfc2c02c9e934a531ac8d3826f44742e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "bc66fd674fc163c1ff262dd940a79dcb8955ebebf54489adb2ba7705738a8145", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "29215cd5dcb38777bf32f4a45ba07d1f136ccaf7aa491c4b557b38d41303b146", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "3cddc57b5bf6e7ba409e41a0268e747d2903ec45e30a4ec868019085b5f7c39c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "215eea4001e46a4bc514960435a54ffa6079eae162fc7f40e8d7c61ef0166b62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "8c06c4efc1339fdcabc45772824ef1466cb57a1307efe4e8ecb99d3be2f5a003", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "c3ab96ea2ba693829e18032651af9ff69714f363b276b2d50079a8050e9e6dd8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "b60c6cb661369405cdc80cd3aebf21e581e46e98ae3472010a953e827f45770c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2d34a0875cd9929a65ed2f5dc281cb507d394182736adcffd3657c9401a42c27", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "45cd2d300e963a411a5fc759402e6de33f184c30dd0de58d645a1bd5901c9633", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "c1a1ecd296cb3346b9eeb82b21ec305c65ddd6f89a1ec04a0f6659834a1ba58b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a381940eef538d4b4b5cee5196ece6a1bd6593a52b80afb3bc20288c948e6f07", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "24ffab0b7d4a309bc71688117ac8733b9da11969d113e5f0d37f06b70917fbf3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "997ec0f4fc170606e6566940bebc5eb0f4820f65ee997b0592c87e7b4465732a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0e2bea6eaac3f3d3a6bb690ca598715b4f837078465d674f4ff8d400b01138fe", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4d9aae8bdf228312fcb04ab7c1dbb704a5e33acaf1624923aeff3c76bbcf3293", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "3eddb3792b95dbcd861696558f504ee1d226877f2c2e3e8886f77e4d134e644a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "f9413be167c3527f25ea88d80cebae85e044db8f5a139bd7f0b478afb66264ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "eadf28b436dc41e1b43eeab10d69aa65277ea0533d9241a14384915e06bbff1a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0630d3cae8fd06be63664ff21c7ca503df38308b7106e430bdf99d56dcfad5e0", -"T3T1_es_ethereum-test_definitions.py::test_builtin": "b77a5859a8e67f66f11e66fbbab7c2ddf8ab453c40a5f389bcbfc2bd9cd8ddc0", -"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "f4c423efc7021095558b847739838961ebca2aaf59012296b46b48cde036efea", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "1ddc9152c09841d674b53c8eb4e855036c26f21fb3078f6063b9e719c4290638", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "ddef39638c64e5e5d6e14bc1d06e036866818c8513725c1af9582120a73692c5", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "107c842e292175ce3555100d33873e13e465fc4bf970b42ca97a72d16f1ab757", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "5f1583374ba6544a61185ee35a4cfb71ce42745c646b9dd924b3fb661288d52d", -"T3T1_es_ethereum-test_definitions.py::test_external_token": "b1584131bbdd723915a4436601f7e8a124c88adb520316026c386f19d227c11b", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "2bb30fd79a67c232b3043c64d81075bf4d848a42f8a5f455b83e231bcdcaedbd", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "7fb25a7ea743be0560bf2b0fc7042847b9cdfb1cabd5eefff444308c1886f372", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3485fe852a19aeb38d8bb2e8af39379b72491e98db2114c31c382fd274095b49", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "44695e1bfabf9b78b44ee2d47ae95b298f2e67d6a1444e227c86e10f1d4428df", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "75f4b2cee1d2bbcbb7092c61e14eef33af4560346795fb0a7c60fdddc8946b73", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "7360986ad5632618fcab316bf1a2cb90def0e7c9492f8fe4c58bb7abce06b0ce", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d93c3aa811418a4f177b253cd6ad9920c01075bec5d397b50fc38bc006c2aa60", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "8410eae24d6d8b972df8b7f564ff1b6f05d4c19e0b1d44c45dc9029cb9b88337", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "7390e110ba1b30a2b3ab8283eb8d344e2055c650346e702be2d8da7de345aa73", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "0c8d14018fa6b34f54eab63bf394a4548d3a1263290098b5ec83186d4af58ed8", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "14121a696d22c07e5ac41d4ce291430c3a5fa5e2624908e454a12ba0f03dd79e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2c65f4768e0bd6a518a6dbf8a53776ee1e4f61f85acaf5bd481a34819cea4f73", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "ef18b69290b4ad5cf0de3089f61463c23341e424a8f0ba3ecbf9201d962b378e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "04d5e762a5cec5099a67a4f408236f4301e5d13709b80fab5d4868afdfa05463", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "92c25d5d38d94c1386ad907f3173cac6f689df935c7a7547c1f9fdb0240f41fb", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "34da2505220d24164ee44c6c05dbcf33d10c0005c233eef2830f2ffcdcc2938b", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "355da231bf2a068a7735e68325452e6ce875303177d97578155eefe11a263f07", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "9a0f417621f800144630978bd298c7fa51ca6cf25aeb499b6a2335a573b5153a", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "6ada8e715e88439b1b4fc878b44e820489ffcc49b3780c17ed445429d63e46ce", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "45fb02bf693eea8029a032204afcb17abcc99bf3e112029285084715e1e7114a", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "162715783134125b92e562c70a01666cd24b7f907d10d81f2505c6535e85528f", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "87cb1b2e8140cbd38b781f6ae0da12e51455ff7ffa01cfdf33ba121655d5bc18", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "5facee746185960b3999fc73ac096257a0752853c5a03f149c54fd4ddc906000", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "45fb02bf693eea8029a032204afcb17abcc99bf3e112029285084715e1e7114a", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "45fb02bf693eea8029a032204afcb17abcc99bf3e112029285084715e1e7114a", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "45fb02bf693eea8029a032204afcb17abcc99bf3e112029285084715e1e7114a", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "e7be124797902938b2eb40e407833010063d66b1f74b24a0392818cdc985a6f7", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "9e900116a8da90db26a98731237a5c5f1de5df86896a9124964f4b8993646c26", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "7c35e611f5bf49716ebea36355e2a12094354b01e55e57eed8e8fff146d5feac", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "0b682454afdae303eb8b711f3bdb7bb87b37efdd52bc744e15f883b26a89a077", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "f2cc1c1e649d0405af4f5f9565e7b4a825181621116654d9b80847a129d596fe", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "11d694b108202f51ada97f3f6f64dd633d6c06a920dc269718ba9977ea3db803", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "c6ecbb5c18c4ff4b580c41d4d36ec56df8585100085f4baaba45e5577e07c38c", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "42ec17b229fd6224d20eadaeca27351407c076ef6937a3caddbccb086ddad25a", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "f117dd9545c76e57b4689c9fa81a23d3a4d3baa17e4c7f4b4a6ebd52b5429013", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "27db586b62f8aa46d51dd071028b3ad4948ccf519d4ae2b1caf644bb463ebdf7", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "4cfa8a500e2a99bfd6a20a1e89100ae2ab7d9c1283d9f52f4404d05be2a00d48", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "95c644ba407bc223543380662c8cd4d47758e527926dec935304dad486b947a9", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "08c701f0e8a840eb38253158c1a8eb872ab156d00a9b9d14b7141932adc2966e", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "e8bfc97eeacaa248e1abad625a8a554093e78bf371424443e16be4746b1f2830", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "26870aabca64d3e8f6d24d8be0ff8014eb7456fff9144e027fef590f8dbd2bda", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "323eac66c52a502f1bbcd8a7640b498d6a29c5b19e5d12009f6cfeaaebacd530", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "90a3f6154ce172f7a62802ccadd4eac37441a43ae7c889f9bc5c14e057c2158a", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "5e1eb768c3afa1a5c59e6561b371b3658a5b27ec36eefb19a8ab2422dea42bf7", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "4cfa8a500e2a99bfd6a20a1e89100ae2ab7d9c1283d9f52f4404d05be2a00d48", -"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "a2258887501a2ad86cc10f72bfd99b6647fbf1a973decf856a522f3c7bd2c240", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "54f82358cb036036fe79b6cc08bde2c68d23caaa77482e2ad4c787018035dd26", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "eb07514112ff93688e29c4b3e937fab60059c9c7ccc3d13364784dd1f250f278", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "a9f9c735aad8bf8d9cbec2f23667ca96fad19f1944c8cc8b64ef87f21537ff7f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "eb07514112ff93688e29c4b3e937fab60059c9c7ccc3d13364784dd1f250f278", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f8222495eee1f07d9c316e7b5f366c61ced9d45fbc58670b96b11dc673749b85", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f8222495eee1f07d9c316e7b5f366c61ced9d45fbc58670b96b11dc673749b85", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "2593c3e20fcb086636e03f9866b46b1573231369bf6195b577901915d06d1812", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "5b7ea9c279bee950e22c33c5938bce42edb144de9bd91eeae53b3e0b7752ed7b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "56e9331072066e12bc55bb38857e162360045f7ae8a364dddb569c1dca42a002", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "bb30ba3face0d986cdd4c9d9545528c762cef508b6e6445502f8d36f23c31378", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a086e7322655a41f7d96612b877b2b2ae760883721c3a58e4cadbd6a9d9d16fc", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "18f1bc65fcb70a28e3765dc3536b0268b117aef5fbc50b9ede137a66be0fb11b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "83a8ee39a4a360e5f3d4b9e85a2991add19f0b470f1464b05a8cee8f4e766633", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "f1dd66518845d2605bde964f4407e2cae72a4f800fce48821e2687f6685dfa60", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "4da6c55a686a34fe13e2701a82d856772e6427120c1a590861653b09bf70cc15", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "1dab92c4b7ac45fd0e0979b7ecb8975b80538b52f19eb2833d711f8955175783", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "5878dea782b61dce878ba223d86d399c17e7aa9009c791be0f478bb37723621c", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1dab92c4b7ac45fd0e0979b7ecb8975b80538b52f19eb2833d711f8955175783", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "5efab0863bd303ad8c60ed099623b384d882bec3f9e741aa331307a93577416b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "5efab0863bd303ad8c60ed099623b384d882bec3f9e741aa331307a93577416b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "5e13438d4313159fbefb11e3d0ea5c70d569def19f47bb468882b78835d32fd6", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "e3d32bcf4dd635fab119d0434e397c89d27b853d529d5a639d1712ef77d7f058", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4bfa60faa05215d0aa8f764b8a57637d452613ca2d65ff95b0c8a5d04059b7dc", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c87c81f0a81eb31b84f5b545d26b23bdbc86afdf4e44616b3f6afe294796bd1e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a086e7322655a41f7d96612b877b2b2ae760883721c3a58e4cadbd6a9d9d16fc", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "0dd0f22913703c0cb01d0d63c5c69c6338371ce6c29b9d3ed2955e1ce44a413e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "d665f8323991d2e1d612165a30e2715125fecda51675947489666dacf7af2442", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "571f9141f71d02da79bce32fd314be8025259772d098cafc2b2102db2de9ceb4", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "e9d9e96d949de276234acb3fbee765546d6d2c73bcd10f4b6a4d1a4f52a605dc", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "614eb140b5a68d1f2dff92cb91d1a3f27c940a1af50129af42471a50c349c27e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "390da062775ba332e867e8f2b001dc0e495da99797c04ea8e217fcb6c43b9d13", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "18f1bc65fcb70a28e3765dc3536b0268b117aef5fbc50b9ede137a66be0fb11b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2593c3e20fcb086636e03f9866b46b1573231369bf6195b577901915d06d1812", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "153f54f2a6a8671f735ddc0f1b422c0e537769fa4216e0fe739230ebc6f5f945", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "56e9331072066e12bc55bb38857e162360045f7ae8a364dddb569c1dca42a002", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e095773ed4d2d8582f22e833f11816d302e58705fff5f2870ddf8d570c7f3cdc", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "53ad83838c9a44845853f65dd4cc5534a23b89d639b250a9749ea828272ae9d2", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "18f1bc65fcb70a28e3765dc3536b0268b117aef5fbc50b9ede137a66be0fb11b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "0dd0f22913703c0cb01d0d63c5c69c6338371ce6c29b9d3ed2955e1ce44a413e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "5e13438d4313159fbefb11e3d0ea5c70d569def19f47bb468882b78835d32fd6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "4104af188354604797eab6d1c62cff3c2fa3d49b56b6f321718dfe01b1c269a9", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4bfa60faa05215d0aa8f764b8a57637d452613ca2d65ff95b0c8a5d04059b7dc", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "62fceff799b2519950696b1f57a6ac2277cfd5fca792b753f996bd54eeb30137", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "419704f35c249eb217c83e86ae9361cd91e1f21076643a9ca80c36732a8ab15b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "0dd0f22913703c0cb01d0d63c5c69c6338371ce6c29b9d3ed2955e1ce44a413e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "f573647dbd9c628a273a94d0a05a2720484580ff37dc0173cbb1b67daaf06811", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "f573647dbd9c628a273a94d0a05a2720484580ff37dc0173cbb1b67daaf06811", -"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "d77b4d6a23f631744c46527f8946107944521b0c5420e875cf287290300271a2", -"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "8508bb270d93d4acec08d2d1d41e86cd4a4e5298e0ef3e3874f4445f1d29f244", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "34470ce041d1eb904f0881cf584613b4c8e62f91583f86337fb71d045021d7f4", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "34470ce041d1eb904f0881cf584613b4c8e62f91583f86337fb71d045021d7f4", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "d5bca1c7d35e995901a01006982447192aad69241fcae4b280753b4357d6b390", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "d5bca1c7d35e995901a01006982447192aad69241fcae4b280753b4357d6b390", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "abef0446c44eb7f705ce2d38c7ab02e66564d3295dea8b8213fd8cbf23b86f02", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "abef0446c44eb7f705ce2d38c7ab02e66564d3295dea8b8213fd8cbf23b86f02", -"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "62862b7c29ebfdd06b8ee54d72aac7bd206293422e04160fe7a81fb65a5f1350", -"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "62862b7c29ebfdd06b8ee54d72aac7bd206293422e04160fe7a81fb65a5f1350", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "0e21a4345e58a668a6bec57d762657a0f12b74aa936fee316ae58ca90652f394", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "fb01b932400fbedd6cd538b2230819bd0444364f568d9b06bcc536e6cbad1deb", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "6ad9e4f5c25a71ee5af69891b88c1ca32632c9b368aa626a1f99bdbc61d0e865", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "e77d0bae84ba109d2535b0538efa9b4c2fe7a1c704f777c9d9e9b17e1a545014", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "c7e7611306e8aba7457f4e3fe0bb2caaf8edc621f984efe1cc994a0c82ab3c2d", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a5343f0aecf6afc8f36ddfccbe8a7d10d61819a54220c6b42f2aca8f89ee7b91", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "207035f22b72a1096ff924674bb1b189c02598a790223bcfd95be9166a189bf3", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "4b6aa6d8a853da35d44abdc6c2f6960af6159c85b4f10ea5b99e2021aed8d697", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "7d7b7b3239ac73536bbb2acc4e5e1e3beabfc6c760a1f4caacee09d842c750a3", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "4b5183da1f4ade554f3fdb6d1b8e2a02f9d63c32bf146258fb45950a482a769d", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "901d341c9d9070fc1cc3f75cdb7bcd6783d8136a0f44d7ffdfc4ae83fe818f06", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "4ebeafadfa4378e456a94b1cd525f61ed49d3b013d47e0c16423bfb569619732", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "a605dce0d28b37e4ef95f58df002fad41d038af4882dcc91ea1a9c8ebc8c2ac0", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "b3af46c4a19400e9e170e821f7db0894034d07ec342673eb41061ad1834439b0", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a261b4d8407042ba2b48c2610d6388a23252729ddf7557213aad9b8cfbf61be5", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2edd7262191bf6f11a8565d7cd886487db9faf42c3a5a64f177e66858f7c18d0", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "4850a449fffa0e8bcf5c5519b8b8dac8c665278d11f4561a75de0256fc4b5513", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "ffdf52c552f57e8584768a50599f0f79ff35e031877803fc83e0bfd54c32d6bf", -"T3T1_es_misc-test_msg_signidentity.py::test_sign": "2073c3ccf810f240e585c4ca01a35707002a1fab73d06085cee02840ce72b0ab", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "1b60c87eddc76857efa8228c178adf98c660fc5ef8bc43cd03b737ce6da4e814", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c7598925991a937654c7e847adce760c88c64a2bc9fc348fe7f5540aa24a3df5", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "8eb1df618893e60e06250334e79eb458e8e0aef73996327acb0b7bd24cf305d0", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "528994268a1bd55faca793ebf854e1969fb096190d7c88e694f56ddb25b114a6", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "f93795f10d5d108a4f10e2933254604d24a3ac37ead26147830c8e9269b3c2b6", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "978da28a2f543ed3646fd5d3ac9cf3dcb18c4f0a6f30cf91c86706704fecc702", -"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "e599167335e1405ff0692c9220c2058ba4c17baa88605a5005e36a8d9215df01", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "ac10ee24d7bad8cfe1a0b65a19c9ff6b3f58a20621ee76aba7e99dd6fb1261b4", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "1900ff5ff7e4f5090792100c0e4373f77c776ebe0756a136c716fcb8d5b637f6", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "945df57edd2a7072be8165431e3923bf3c35ba26d2fd75b4b091f1df6b88dbe1", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ba6c7aed332f283db48a36876fe4069379fa5fdf33ed55c35b20646cc5c0547b", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8a9c887771745a369e1710c7216f473a2ea28f389423013a83ce8f0715d2427c", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c33b69ae0ae5ffc4d99527d937dd4de0e6ea8e862268cbf9a3ea0773fb29ba2c", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "6da5c4f4e79671d91e1e8128ac7508d62e0ae4b6713d2a92628401c617445435", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "0c6574882ae6f4b87734af99193ecb7a34e59d2178f387aa7f44b7988a4bfa7f", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5ef8f1302e0f1e46b3d9a4273e4054ea2e9dd0a86b2eda548aa006b873090af5", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b0b116f9213c36944091279795be58adc11807bc76e47a53755855188397ca11", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fed1406710a00674d932d94a41c32df81caf98897c63322b81e0d23b2aca3c93", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "9d0a917c0df498e76acde847a548bc7b44f064ee2e245f8f97e0c7cedff5d9f5", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c6976b8333c98e897493160ad2981f01cd3515382962e48634d4edd560a74728", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "de6c79c6885806f5cd6f4852e681f23d59ec206a72f1e3190574d4b38641f3d4", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "bf56077b3a88a8dc9a00b3203660961f0079de5fb4ad6888791d151655f46279", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c33b69ae0ae5ffc4d99527d937dd4de0e6ea8e862268cbf9a3ea0773fb29ba2c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "ced766790737c00ea0a5c687598057bf4fe1f1b0dc4a3980966373eca8c5ba63", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "831023aed8c56fa9e0cefe40bc72be7cbb93485b6a363959db8d59b301561775", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "19618c389511c478384edde6b2b34963fca0c3006990955f97a7463e7e0b877d", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "33feb6c6ac090a8503e5567b0ac07116dbcfdafabf106f8e6601ce8c51cbff5e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ebce4c45bc3763fa02829da9f93db48dd663c8e81e70ca3731474739cec5f4f9", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "5a2e8151916788cdbff518845e73cfdef08ef3e45f42db6f81e96e96fb97a165", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b07d7801522d968ed8ce08a9b8cf5890740f177428a644991347675feb3a83ab", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "5256b4b031ba1da754c3b737f782206fc36ddca0516f8625cb3f6556bc7aa7cc", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f2ecd3901261e1ba7ac7d882ea2b5723dd1df31abff4243a1267835bff5a2875", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "50511eced58cb15ce50498ad74691bfb72be2a4f713b91621277d00b17827c17", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1b1a5debbb476ce5e49c83c8bccb2130b8f0eb60b1092488d60ba30cca214581", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d9496bd93e9a638a86893c1e498d7ec0c0233e4633c3b7e90929f7a37f3014c7", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "039995df38efd8cf0ecf8fdf3a9c7a75cf9f2218bdef54afc6787c4ae3f474bd", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "641bea7dbae75d4606afdec95679c2d61e5747b4b1d4b8215efb2cc850c9d3e1", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4528c3c70980f400344f9da99bdb03d0b4499f0c71615c671b107a5e069ebd84", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9872a3ce2aa9bca25fa85cb2f4ec3599997994037882339aca43ad2715db60fd", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e684674098a8343d524be0b02c92c364848972acec3b07c126aaf795c9928763", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d030fa31f804db873a020900b7199fb61509187119c8662881e4d6392c2d077a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "4f0694fad7259e6377ba444cdb9248c9c93f917316a83aa4f5a95a4979db5acc", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a13a52379214fc1cf3da0364ae461393e1b243ece2bbbfe3271ddedaee3ae41c", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6330717db8f6dcbb18e6a12359b0e907229abf9b51a26a94f8b945f7e0aa7b66", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0880df86e593392283d17aa9182173c91df1d7fc58b3c2fda251508e082136b6", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "884cd689be2457e5f85c2d4ff0570680968f4aa6e4142abc0e7c5d221936a9cd", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "128d55b8d2e9e95d97972a98242ddce6c6134e752ccd15aefd044ef605165e9c", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d729de2dc7fbe989fa315876345587529c4e4e44d4ed86108a2c1676061e11c4", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f27cc1d463d6926c17face357b7e8b9162bc2a5a71cdc976155b5fd3e836e47d", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1ef602523bab91c5aa8a224f81cd06f86ec509783cd9c7e1e71bc4a5ae4556b2", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4f2253ec99c40418cf81f1d48aa56fa1b81b2cd10cf93db95a07921d612b6fcb", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "20b56bbca99634b64ff3dfe45e24df9e1725e0cb71af4f3d4ebdd5258069dd9b", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "da15f8cb776e04cd0492ed29abb86962d273eafea6ada5ad86b4c40b6d4878fa", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "3424b63d35b91e9c0876c2a1757e6f76985798e30927e15b0cf0c47487cad24d", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "e20f906199a9bb30f8f76a8264645a821ab2b1e1427a58f8c6694d500941d55e", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b91a3649be820c496c58ceec306e8f18003d97d031310540cc634516cd7df844", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5f174adb934bcdfae3959db0ae998444c38e0e98201a0d661c60729e317b2669", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "a796f5a24072c816acba894a6050032bd85e2ebfe4abff14a0bf93731ebfe1cb", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "8497be369796d539b32ede55c89e605c2c478d073a12545df45e8364265906fd", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c749dacf1dadc8e909453af504f240a693ca34e00ecfa788c0e2c92c93d0cda8", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "4bd5c445bf9f8bc419f90a1d2344b8af3700bc917674685f57ad0bf26c84735a", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a0a1849cb73fb7459e3a6ba2ad37d5054c8b35497d0b8350fda0826e51f09f56", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "7ffd14ef9fc28ee62ff35a0948b0911633f497cabcc603c86296a4e2bd1d5332", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "ff9a482205bdb214866cb47ee32f7cb787b187d803a488efcbbad4615bcee7c6", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a0a1849cb73fb7459e3a6ba2ad37d5054c8b35497d0b8350fda0826e51f09f56", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "7ffd14ef9fc28ee62ff35a0948b0911633f497cabcc603c86296a4e2bd1d5332", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "ff9a482205bdb214866cb47ee32f7cb787b187d803a488efcbbad4615bcee7c6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "4bfa061067f7eab75644c05b738a2238be352e5accd3e1a4a1ccde14ff3fe492", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "1f0914d6c241814705f2aa86e2445d0179b5abf0abaee0b6ba037328a997706e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "a9931e4b95a360af03a3cf4a58b5be72cdfab540a87440811bd3e18f0dcf87dd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "e5361405a0bdfc53d107575489b1113379648a60520cdb592b6c82f7272e7776", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c60a9d884fde96f691fe1bf324b63ade215ccb490d606d27563aa5671dcc711a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "d81479cf552a69f64c2978e6d06731ebc437950b4d4e3cb95001aacecdc4db06", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "7f0f5c1404e20bf04491edd17afef5cb84d4380571e6ab2ac707798d11c9def6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "a2ee33440448b11deb4077a05942f546b0b47146c2de51766ff503a657269b4e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "13af79bf78ed8b24156f98ff13a31d27fa895c2c5e6a0510b105a4ecc7bb9f0f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "65326cef5abd8ed618cee04940f546d07e15f66ae652a98fa6c67e013abfff98", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d3bd936b73bd53e61c84769c94a464fdd4b9b27da822e3e52e1aef4aab2c10d9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "1212e3e338342e038c946c20ed3b9c64b57b959a071e4e885047747ed911653a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "35c2038a5870e9cea2ae2f1d3025fa99afb9d11ec773fa5cfcf46a9fd1a5d2d5", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "3d554efea5be66b5a7892b49ab7855ba86358f276887e0939728da27cedeecd1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "de7db09b7c98470190ad84e444d19e0c180bb9c9e27fa8900d0cc99edbdc4b1f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "8493d67f403af4c71f9cede4c4da4058c5b81fed1c6acbc77f6416295a97caa0", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "c9d58b00fb64216e44e27a4d365080b4e4de16844ca4b0e632db889bd95df2e9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9e228958c7395a20bba687dffad1fa07329061f6e9ad6bd4caf7e3c4d1dc1445", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "9e2e0ab6d7f18f6819c1cdde61ef19cbd94a968bfe4042ac5083e153a15aca02", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "02be6c83ad428d882deccd6fffbff747eb1f0d5cbe355850b8f5f4b5157fdcc9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "2570d5846586dfe5397980f8faacba78b1faf26017006fb935a1acbebfab72b8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "2570d5846586dfe5397980f8faacba78b1faf26017006fb935a1acbebfab72b8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "20a76bbb5a3f55b6731bd51da0213cc31a4739e537182fe9d664665f45d71ff8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "4a4df652c029d7508be4d9906f676c8aa5d0833cdabda2e16f566d9a44b7dd73", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "6408df3f49cf50e2d8e3032dea314211876bfa6fe142ecdd822075d9ad749eb9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "a8f690a83b86db952c02f9e8c7543e539a25d69968dfe5a8155235b26b814d63", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "4a964962e688d677dc62e2fd53bd879581a2152bec986a53ba4036b83881b2e3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a1141ab1d2fdb7bb23997d597a5a19dcd580cc2e3cf9622b5615d12bc46fbb5f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "04d12dbf9dcd434ce2b1c1cc57df2e3fe50ae7c583dd84c603967a086045c3d1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "aa7a1cc77c9e1c86352ed1031fcc8eff4a784fa95274c6d9ed1a8d75fc5ab13d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "c709368e51a325d9f435d1a500c5d7ce3a7bb8d43d96f74842fce487d31dfe7d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "1de7171502b9783a823eb1addcd7cc167aca39acf4cecb6b3be7ebecf1bdab9b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "3c9a00b55e8ec9e87e7c6f7fc856a4d96d25754cab8e671ee395ae6fd330e041", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "a16f1d4b0c5494dadb6aa74a536f0a2983610f74cc107cd01ece35cfccf4f9e1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "ded132db8719bc9673a6b2892eb04a2df828007532aef2e3eca5100c27539c80", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "ef62f7478df93a48dd25fb0b6e977201e8dfd48eba7d291cc7b2d01c2c1c389c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "070bf81c9b44b63d1249edb009cc494c852e353b78ff7f87dbf59d68b356274a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "b608493d459ebcfe7d789e364c1ac2a2745e8053ef4bf6b6833ea919231f5e47", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "281dcb5373340fa43f0dc7311c2e3768263f4a3e82f06b354617824b05fd8668", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "7a0421c017ca0d822c7a6f561383e589f84dee0aa442fe715d918ad2a72797ac", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "546c0b58d4d0899fb3a4fb5571800216a36eab4e91198957c1ab0d34c5a45824", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "4f8f21edefb9e5a1a2fb20d57b29110a3fd16fd1568f7bbe722f00042c68a111", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "6cf0b64566a128c100f3a27bb9a4a7e780a4e336f81dd5e8c3c48de1014cf265", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "3e8a8991f879b17ef38b37ac3c525331ad64540b5e480ddd0cd799c4952fa54a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "394604acaa517f79010f73c8c16dbae21ad920466dd4130363f1aa5de5aa9753", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ebea3a287042c19cbe234d6c65f5039818f363ee18d8efc459e7066fc6b08e67", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "61f8c611ea831222a5f694bc36f05e609ab96adf09f56539ad8735654ea5aac9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "6c879bdc6f6142ed32e0b8bb37ff7a75951076bb9156259acd9e46d840c24be2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0e2940ef59c6d5373789fd14743b68e189ca02e75995651feefbfcf66316d0b2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a0b212e7bee1139ee926380ae7e3be324610c1eddefb270cb6904fba4f09bad3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "30b93176335d8e237ccff0cbd3d54669afc397e5b98f30c3cf872cabbbf51a5a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "8efc5283b652f34ceac4600c4debe9a6ca4b5b463705d664ad423fe14a5800bf", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8dbbaaabfaa361cb31100d57f84e2fd4b2486ec876e34d65abe93e5e9a8dd85e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "0f6a0c29956deede933fbb2f2656566634fda51a83476a8ae5f0e20bde55d5e2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "35755c801c415a154fab095d4e264d5fbfe00f64c78bce16d7f39b64a30026cc", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "3d92adf5ba5141d26b2fee330415c9343e2bb2dc928db2698176d1da2a093b68", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "608c476fcff7b5302311caa787ed36771ee215b034724e47e81ee0e77945a70f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "86cd08671020ce99428726ef3ca59cc0e049dd32458594906349df6ceb825d0c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "e0fc57ad83c736ced305cca5d5d0ddfb7e6c9466e8a873d2628953de690f6aa0", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "6408df3f49cf50e2d8e3032dea314211876bfa6fe142ecdd822075d9ad749eb9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "fe8971578e291f9ce6925d03d70c5ef3a21a1904807f9d529dc00ec942dd1784", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "2717b6f96c126833f1d52e6fdc0d06f0dce4d730db89f0e05b128ab66379501d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "4806446dc7bb70eb9a166f36bb25aea8997870e1f2197dda6052cc82e645afcc", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "7781f7e956fa7390433ca4382c80e37a31b0d1640b7536c1e069a58924513a99", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "b1d1bdaf4180c027b4c80399cc40fc0179db50f594b26647565ac47a09eba4a1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "24d2fef034e534c57f13a3f9eba69ff48364fe95272691aec5f917c848e010f6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "0e41f3e1e1d4ee99700d29425b6dd9def912b7f86d47f7cda69d222dcd74d8ff", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "32507cd708cf3d64a804efc8e552f1be3d95277cc7026409c03d1988a5318c40", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8d35bbba216c98f534a0e6744629b1b14d24b97e263118269cf0f46684882e1f", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "a9271a63a88b3f32a22a2b766ea0ef7e3ee961950f2e9d074d099aebb85b2cd1", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "1141dafb03ce376f0d2d796d74a77ca0018a8b614067e50598e03306f4dfd367", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "4d75bf3451852f73389bac7b500e81c6a2ecce237aad93540d37f4ef5635fc04", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "0b084691d23c76f3a7aa471640aa7d1eadd071220b7953deac2181a484372520", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "642dbf654c3aebebf396ff8c4087f5495ccd6795c11f270399b00a81cc77b0f6", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "4a1809b93e7176d5760421020e0d76fa11edebe2acdd2c5321706767a419727b", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "0102defffb8d3a8381273d96dce7a32f5ef976c44ea2243b0f9c56a0d893bc37", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "0e773b8c3240187dc38935d477705d663232a94131d4ab761d3f2c17868eb72c", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "075eb9bbcec8be37e3603a152979498b7bd9ab4854a4e5c13693861cd049163a", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d06bf8e1df3f2976dc4acb2b48ca7b91a0521bdb36576c93d0722a0b8ae69e01", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a249df7c6c24f525c0b6e89fce57e973193f39ed69de7d52380ee19f6d783b46", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "379bc9a64471d31c2eeb06ad68faba4c42955c8d5fcc0eb02f6804cec7b15393", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1bfff643bfeeaea50aa9eb8fcb1e206fd25dfac8a03de206598084674a3dd92b", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "1ce673d9c33ea56852675f54a5a4a7471e18b01f2d8235c8b4bb5ff67ef14e21", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ca02c0ff9898afd3d4a52de622e759faaa0b4b8efa483f1e4bbb0113aea90ced", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "3c7a266b26c56a068435851c10c9f5f1c76f7d53900efb7382eb9088cf0714f5", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "1f820089023c37479302ace27e20c6bd65bafa1dce44059680e432b9dbf824e0", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f18ab0db7fc78c7dc75b0fb7c02d1f48d9bb59e653f1684f8d85d1c2b9b0e4ae", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "981ec9a7cf1fedc5340f1523cb1b5ac24f8aca35c8bf610c933c9ae407cb3249", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e827d3ada63c06ce2d93e52814513f0a628e0a66c2a906f9c6af1f7b5a269865", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ef93a930407628c387f222e0fc6da9bab9a16cf0fd0a7f7fb8ee7e1289a146a8", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6a1127d360f5560eb19dd0c86f4e79f159b6446a5318a9969be51f1736f055b3", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3b3eaf83c60202d9c9a4a0181b8c52bdd59ec1a8460cbf34ace3c93007608316", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "cbf510ac67e9c548935dc343c00d760ff4670d0931ca53da0bfaa86a3f900163", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "9f50926d60ca19c2af79b8ee2c6957872d4eeb188125b49529e2b88e77c0a0de", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "1c4c4503186ef62ae4a6fe7fb7df19883c210d637bcfb9d5f0bd1255da5f5a99", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "4ba0cf2b27a71ac5161cc75337b02adf92277693697aac596f9bac1851779577", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "85195eb4bc06b816529fc518a8eacefbc7393cc08f7c2bcc7499547554634194", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "8c112c854dbae22a21c67a2ed804f384e82af83e2c79493ea594f7a4b6a97e01", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "f6df03b51d40b588cc59682f4bb9410e102378054850245bf3a6f86fdec87036", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "f2ec08f3fc63b54f0ed0e698083be175b4d2ce73b0f94b0c0698c64314470153", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "77a9a735816eba7392df78a65f52754c3181ce772d1919f93c276569fe4daf69", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "04493eafa3a28cc8b5508ede7e3c9956a03b2d5387cf1f40c478b5954b3e9e85", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "59e4c7d844b32c7754975510e1a10d206ba27659fd6ff555950cb3f21a4905f5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "abd0063f1b47b6840c334c603b1c1d79094bc5dd769e71a482bc0bcfac2ee00c", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f5f0bdf51812fc61e2464cecbbc42f55e85f246b4a626106bdb2977037159bbd", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "a6d8edc6bf2ca2683323dcf8f91a092dbe3c760a9bff86eb4fbca9f8dc4220bd", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "b4507663fa775eb4f101e1a5c7da1532dccd0a76a545b6f6fc71ce7bea1254ef", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "84d9144689972986423fdea1e12af22ab1e63f6340115961164057dfe2fc2f21", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "8ae406c9125300d44f73b4abe998e4188a59586494bd171d86ef97ba9ad1ae3b", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "0a4381864ed1b3e77ecf5d912c130394d188e0d4d667a81798fb9140cb3dc40c", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "2b936649b2831385e102effd0d0b3e8dd6068724ca23def8919385f779e3fc6f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "20f9995d675f834f4245daf737a4aa71429d99f1077cfc1f502276ded084497b", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "7bf20a89d92a6608d0019245489a7eb591e7929f22e381b9faf61cd6f47b55b3", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "f30b4a18751a2a3f84c1b96f3beb4d70ed639b5b04d40f78a13e66c224f002db", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "fef127a2f06b4b7cabbc9bfb3d2f1095a2c4082f2df94ba3d803959d9608e6a8", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "cf72b242316093fd635dd5c59dc43ca0ac864ada1fb51e3fd6ed04f98277c728", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b94391ac66b1e25d063a5d0b58f8380f731aeb9f3b568bca0c378ad1d51cdc9b", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "79dfd47dd18e08f0202bbc047f167f286dcfd783891a40204d262ffafbd69f44", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "a6d8edc6bf2ca2683323dcf8f91a092dbe3c760a9bff86eb4fbca9f8dc4220bd", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "246366ddf561dfd5e2d8cf4910c27d9124e92c4d25657f01f4011e039052de4a", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "42c771a3443c9317f0055ac2bc22071613de1057872ac562027c5f94d677e319", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b4e874e15ad13e214a9e07137012fbaee3628b50d2e23a17b2c86cbbfbb082c5", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "99239ddf271a4df43145829904f3f92fe84bec54d659478a20c97ffeec73fe17", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "e86e8b1fbfb1d1ef3f869988f4061c97483665deb2010559a93126dbdb1a7f6c", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b8ffca0ddd0734a493d89007838657d7a4ba47958edb7cdb683b38330f417e6d", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "62c150edb7f7a1b3fd71428225864247fccb0e27be648fe63fcbc206d51ac85e", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7d6e0aab9f4792979c64e1980277ddf74c7659863eb30cae5b9ff0eaba8a33ef", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "209dd9609507affe76989fb26918c1ef78a340dd4727e50a1a85991f1ed6ff81", -"T3T1_es_test_autolock.py::test_autolock_default_value": "dfdedfdf365b7502cf7d36b2db1ec177316f7154fe8f7f577ff2a79090ce2fc3", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "2542bb42ae11c502143870888430f743cbafbaa83f43e81d8bc33837335de58b", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "2542bb42ae11c502143870888430f743cbafbaa83f43e81d8bc33837335de58b", -"T3T1_es_test_basic.py::test_capabilities": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_basic.py::test_device_id_different": "fbf2b71f3fddbbddff19d7148e2258e0518bb78fdd2d8a6fd07079e75c4eb964", -"T3T1_es_test_basic.py::test_device_id_same": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_basic.py::test_features": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_basic.py::test_ping": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_busy_state.py::test_busy_expiry": "98858080099cfc1998413f39a437b7adafea6be858f4996c5f091dde62a339cb", -"T3T1_es_test_busy_state.py::test_busy_state": "51175f3b0a41609177d76950cb461687670e901d4d1127e3e04b3bb1f151a008", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "1201273c03fbf71b08f3f12c612a823e684094d9eebe1376efbc0378952598ce", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "1201273c03fbf71b08f3f12c612a823e684094d9eebe1376efbc0378952598ce", -"T3T1_es_test_cancel.py::test_cancel_on_paginated": "5b0c508e05c6cba8f447f5ed8ff9b95d4631ea146017c9d3c6fec9df0cd5d1c0", -"T3T1_es_test_debuglink.py::test_softlock_instability": "665100d7d763c9ce88de2adc9095fa684677f3a969c1643afe7c8a0b44c8a69c", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "ed5f69d7d8769f26b4428b4e42d1a4d426fdd7eea8f4f54e4722c0ea78e90f3e", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_language.py::test_error_invalid_data_hash": "cbeae25b021974d661b704b6c87f50a9114b4388f04e2111de729aff875cd950", -"T3T1_es_test_language.py::test_error_invalid_data_length": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", -"T3T1_es_test_language.py::test_error_invalid_header_magic": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", -"T3T1_es_test_language.py::test_error_invalid_signature": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", -"T3T1_es_test_language.py::test_error_too_long": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", -"T3T1_es_test_language.py::test_error_version_mismatch": "d314293ca41ed45acbd1d2aef739885afefa3f9d91c88b94c1831081c59c5df2", -"T3T1_es_test_language.py::test_full_language_change[cs]": "7f78134eeaf4d0ba1785fb0466469fbb5075b25b6d262a463c0f806ba78fa0fd", -"T3T1_es_test_language.py::test_full_language_change[de]": "e37208e6351f5bbc24888ca76f7f0da9777d18f15338407326633b570634be0f", -"T3T1_es_test_language.py::test_full_language_change[en]": "113c20e7e5c9fd750da2a877d1d9762b7481c5c5c2e3144e025fc4db0c8f9ce7", -"T3T1_es_test_language.py::test_full_language_change[es]": "eadd8df28d81d24ce32c5559459eb54891242aaec76cb1b92cebb2b20f5bc4a8", -"T3T1_es_test_language.py::test_full_language_change[fr]": "ef6dae18157a8e0519e5ca43edd5875fb7be2234d8aadfe69b10372c44e0fa88", -"T3T1_es_test_language.py::test_header_trailing_data": "3b74a7a6801573ff498eaa7a8913267668d6e0bf978981fb4103feff611f3e1c", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "3d79efaff46fc716886ce752171775064c432558c7fcce15852f56423b7342a0", -"T3T1_es_test_language.py::test_reject_update": "cab917ad6910c0d44b434bc529ab540ef29575638bc53ba247734bf3d2b8cdff", -"T3T1_es_test_language.py::test_silent_first_install[False-False]": "e56ff9617e61f1693c7dee3bf52ee9ab7b6e783587e98f916a683616a1dfed9f", -"T3T1_es_test_language.py::test_silent_first_install[None-False]": "e56ff9617e61f1693c7dee3bf52ee9ab7b6e783587e98f916a683616a1dfed9f", -"T3T1_es_test_language.py::test_silent_first_install[True-True]": "a48ca8d67645fba8046428b61eea5ba4fa7a19d179dc0304883484ffbc4b9ebd", -"T3T1_es_test_language.py::test_switch_from_english[None]": "596d1fc6ee3c22e2d8ecd662be7a9ec16abd3e2fffbb5a186b23a673819b32c2", -"T3T1_es_test_language.py::test_switch_from_english[True]": "596d1fc6ee3c22e2d8ecd662be7a9ec16abd3e2fffbb5a186b23a673819b32c2", -"T3T1_es_test_language.py::test_switch_from_english_not_silent": "9b01f2c68f14f1cb193cd0729247e63db7805f090401458f7cd7ec9112f13b38", -"T3T1_es_test_language.py::test_switch_language": "5750074703a02cfe85517108cfb43e7302085731e0b19be7c33119b6326e0d57", -"T3T1_es_test_language.py::test_translations_renders_on_screen": "4b424a7c31ba3e9c0ed98e906ddf8c337aeab4c4f016fcaf3697dcda72e5af8b", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "466fd9ea66bfb9198a6d30a37b5557ed72a7827de76a2404ed1b9b84cddc1983", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "76c0484d963bfdc97a969d7101090ced3674f751a33e48d79c2ce78a96172942", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "1aa3a5a00cdd48508987d1b1532d5c0d14bb8dfd4c1d7b484a8b5b04e6b2ce89", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0d82d20484cae589e0b9ea07cacf9d529fa84a5d717ab56ef8f1484d2f103c41", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "9bc51854f32af8ee0725b663b8f007b38804f61c3bee4682e3178d77fbae0fe6", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "8d760748478c36a852551bebda7cf42d50c68a4716303233f54fea9a0f6f746d", -"T3T1_es_test_msg_applysettings.py::test_label_too_long": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_msg_applysettings.py::test_safety_checks": "a0bfad9844e1a1f17db362f1bb73382d76d34885124a0505740864abf9e1a539", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "c8220a4d3d24b40ce486edb80889a5126d83ecf4913038ab2f7ba2dfe6d17395", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "270f920503efd914ff536e871fa17f9e73e8ee717749c40fa62c676431111b37", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c87b851cd39402319c7c3890a6c417115ec8314d9a447686a661f647eeb460f9", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "3b649b0c3b632a9bb764df995f60b4df3f8366acc84ef8849d0f8eb35d9ee2a8", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "4da799346bf0d2a67159a44ce0e48b9910a4b395e5ed01d26e0d2a652ab31b51", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "3d797465fa709e025ed4795560e5bdaf17b1327b63314cd52184d99df22a06db", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "49e10a454162e4beab01131610b5d98b111374ea6f6529d314047cd63ea1cf03", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "83c41ffa8593a90971b7cd08feea47b7221e6a0186775320627d24de7952175c", -"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "7aaac7fd63325a135eaa8c978165abb4146abbe02947d68cc68fa94f67b57157", -"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "22caf34dddc51053ac1efed40d4cb50810cbcc6991d15caac339a3a5cb7774bd", -"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "3478c2c2b31169ccabbe9ac9ebad1715b8e077a0da99f3493a4981fc6ee54058", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "75c30a0202029c61b7c87d4e2e40e62996392944111f85defef7a9569f12fa05", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "15e0d67ab3da0b9779b886cffdd6071d7c7464c9185ec360cca84c62d2d93be8", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "3411600547f0f1d4d7ddcadfd8b3c290b997e8ff04eaf5d33c81484f602d32bf", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "1ad17f8a5cf5737bddf22596cf7b3f75304ae311524065dfb05d9d1b7fef9535", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "7dcc3a622aaf36de144de230592c42d6ef8c296a309ebee63e039b19296f70e6", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "e966e4025c161fa43a90d8eab62e8165c32d331fac9364729fc8691244b56ab7", -"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "28046e6c7acb49146beaabb14bc20d5941c7e021dc02e20b6ec1a0e23ed570dc", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "4fabf880bdf04b33c95eb3bd858c0e61c4437a46b7e899e2603aba40475f45b2", -"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "62cae69d38feaf2d18876b7a79a61138918564384e667286decb0f6e855ea05d", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "d20d8a0a1164ca2b19850923c15ea6b87059302038388759ea874465c3025110", -"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "17a9879e53ad00cb26c6da534898a306d3f203603dcb22ff9a1f6351bc6f552f", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "48650897a08ff7fba67d4f66c6cf638f307f8d77a6c2a41168b870b52ef907be", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "17a9879e53ad00cb26c6da534898a306d3f203603dcb22ff9a1f6351bc6f552f", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "17a9879e53ad00cb26c6da534898a306d3f203603dcb22ff9a1f6351bc6f552f", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "8e8b935cf89c58f784d9d9d576a282927f563eaa8f0759968aff400fefa0ce8f", -"T3T1_es_test_msg_ping.py::test_ping": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "ef8dcf4ac94fc56f628f63a793aadf3c12e90a5b360380c4923d52757b97a04c", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "d89ae0e2e182b9d117bb4365d7852a733d2e63110fb8b0a213547fb92235f7bb", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "2ac537f263ab062b49cde9ab2a7c37982c0c8bf3c3f8aaf97bb939749027e8a8", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "3655b07930f73b0cb7a2cf94c239726843032face20105896158977afe4f2fc7", -"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "fbf2b71f3fddbbddff19d7148e2258e0518bb78fdd2d8a6fd07079e75c4eb964", -"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "1dbd29751e65470775e49a667bbcbd10ceed8fef87a454ec184abc8ca5516288", -"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "1dbd29751e65470775e49a667bbcbd10ceed8fef87a454ec184abc8ca5516288", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1dcdc79da321065cae234457ae3db881250399ec8eea3e93634227f7f5317296", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1dcdc79da321065cae234457ae3db881250399ec8eea3e93634227f7f5317296", -"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1dcdc79da321065cae234457ae3db881250399ec8eea3e93634227f7f5317296", -"T3T1_es_test_pin.py::test_correct_pin": "0da7d33d6ef9c324ee52e9bc858eb9ed702c512dcc18a4c0959e2eccaceb2f6e", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "1bfd0833b1f5a18241404f93b5d26dac143007d8aea05b6b8ea37c50e62e63bf", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "8ae439ea2f72fc6d55ad59628c7920b7e9fab89365dc358507bda483c49310ea", -"T3T1_es_test_pin.py::test_no_protection": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_protection_levels.py::test_apply_settings": "1d067fb9d3a9b58cc49714946b8ee0ff73793dbe35fd0887e55ee3c5369f65c3", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "987300ff3e093ef296619407a3f5ef6deb116289da2e952119e6192066acf658", -"T3T1_es_test_protection_levels.py::test_get_address": "736688b4c3c3c0788788bd47c871d5ddd6b1161a8bfad8a811938711ebc463cd", -"T3T1_es_test_protection_levels.py::test_get_entropy": "c9b586ac7aad2e9557c5ed7ff52aaaa48b601e401964ac0e061d3c803171d23b", -"T3T1_es_test_protection_levels.py::test_get_public_key": "736688b4c3c3c0788788bd47c871d5ddd6b1161a8bfad8a811938711ebc463cd", -"T3T1_es_test_protection_levels.py::test_initialize": "420c99fa13487eb4337e5e33db885397fbe84fc18baba6f1f96eec95d7950272", -"T3T1_es_test_protection_levels.py::test_passphrase_cached": "097cf7a8da36a37eced8d29ffe05732ff41211b13d5e2c11905144f8a1f1a2b4", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "360f0ed1a89cdb0b9e932ac0d358d7c66c480b4f4e34148afcb6adc4ede5805f", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "b72394f7a154641b59caf29dbf1a4d81e53d264632367bdb696354ee067b1ed5", -"T3T1_es_test_protection_levels.py::test_ping": "b57346894cd0d05b95c93ec31c6f6536f541f0a3126795e71583c7620c874aa6", -"T3T1_es_test_protection_levels.py::test_sign_message": "7b34880a02445e1c68eb131bfda6788a4b8c67c83b64543865446e92ec78a75d", -"T3T1_es_test_protection_levels.py::test_signtx": "ea38e79bff7223678aeec559ef65e09999acbca9fbfcea607ff68af1dbc3d62d", -"T3T1_es_test_protection_levels.py::test_unlocked": "484e83723ba3c269b961e7b35dcb0f1a97bd8285b0e17d3edbb482e40eeefddf", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "c1772bc836aa5ca07d8091554e0eb426e3c62bf1daa8b89b5b8b20ee6f2174fa", -"T3T1_es_test_protection_levels.py::test_wipe_device": "ccfca8e885975a3cf24ce192195e5c986910086511242110a7bdd2637102ed71", -"T3T1_es_test_sdcard.py::test_sd_format": "2a26ca64b1dccc70d3e0dec46fe7330329740072b1e1cf4ee78491f670bfdf8c", -"T3T1_es_test_sdcard.py::test_sd_no_format": "18102467cd799788545f6d9bff146e6eca9ec06ad71c07c239b3af6738b9840f", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "d0feea36283e3e665d290564e531464195d0c9febc01228ff4c75d97224093d7", -"T3T1_es_test_session.py::test_cannot_resume_ended_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_session.py::test_clear_session": "82b26d4507a3d0b0092dfe696996da2a6244513e6749f1401bc9886ab6340e69", -"T3T1_es_test_session.py::test_derive_cardano_empty_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_session.py::test_derive_cardano_running_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_session.py::test_end_session": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_session.py::test_end_session_only_current": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_session.py::test_session_recycling": "1dcdc79da321065cae234457ae3db881250399ec8eea3e93634227f7f5317296", -"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "7606ea68b17003db2473440ef57dee17e25c4bf63ad7a7f788c5a0eb4624f9c4", -"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "f2972e061973427918e57365ae4862c5efaa83b3dfade9cb50a13560acc455bb", -"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6f88cc4832c80f66746f2ce5d119961292445e35aadbdd2e67d2ff031d5e7735", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "5cc7f0f648ffa70bc1c52a3c31dcd0f53313678598c8be5be7db672bd2a65a7b", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "150cc502bc87d0b1a7422f3cdabd4622ab40f91a9156af8af68019e5d66620ea", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f1ad390003e637ff1a513ce939c47733c3f735ab3fb90e4c2cdcc0a3119b2a1b", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "300e54e19ed26e3e55a1089806b400bda8a7eaf7cd92e773cd8eb2e5e3532670", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "097cf7a8da36a37eced8d29ffe05732ff41211b13d5e2c11905144f8a1f1a2b4", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "c3682377e57fb1f7a5833b18029d14f9f93303d24481f83e2813c0934a8b5d1f", -"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "286adf4ab9f6ddbb0464c3d54de13e67736bd488c4e717cafcdd8b18cd2c286f", -"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "34476d6220bc505f28b5cbbd1f0ca26b33472d260d661273ec7165e1c354c529", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "145187c82caae497f253669eb3bc0b197a4152a9f1b5fdd3edb100c990a8441f", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4e15443732f4bee7118565619abedb1142c1230f9a42b0deef957790774a6fa2", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "cf6bf041543fcbf0230d1e07f1953235da68a37835ee4bbb37532c3f3067598d", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "aca54a2d18b4c26c3f330ec7c5354719c675f3e56b76cc7d25f0e45b0b9e5925", -"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "136bf19ac6c942edf5ae540091814fb616619f848033f10eba0e9098de8b74e5", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "ea890425688c9c726bf74420006e8fefa0bc7ea2fc13a06f14f32d981a09f0ed", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "6a3c928deac657c8ff5823a10f720b3c646c9131f9d7fd4368c2cb7a38dabfa4", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "1b5ce08725990e5858e917806a9a790cb358562944beaec7d9c592d9e1205f71", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "6ca8ae43e2b4984473bb82b60cb1501538470839ff4502f51331ae3eb2111c33", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "bd5256c0e55770a83da534a5d1a6e834468842fdf5a5b5aba7c8d3ff9b39d662", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "cf89b56a2fd5c6cbf6928a995cb88fa83c88e9cac560cda3a4c5afea6ef32502", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "bc97cb3526427a18d6e14356fe1c2b6d24b82a3009831a1da00f7c5e28f00e0b", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "a183e937ad9490959fe642bf4a822830fab9952111d59209c03eb4c88bbff733", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "6333bff6888ae4a3096e286707690314763f04381bd25b9eb955ff5e72477080", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "fce505b6657315cdb79bb1ffb70ddb69201fd4273f296f356e540239bd1c23db", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "47fe969151b519853551035c4b4b84d7b93668133215febf8361fac6a898777b", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "fbd7c78e198c6ee72f5527afb015fe5e11bfbb37ef8007998e5a9b8a2b69e63c", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "22ff5b80dc3c3c750ecf7b4c9f82e48b48987b54711ff285bfcffe844d77cfb9", -"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "ebbfc32b1eb720e9bdc7771eb85c8e2e30c0632e984f23d200b9c95cf4791898", -"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "422c769312e8399920a5da2d4483b8dffa8c8590087a20e64673dc763b3a5f34", -"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "3ffcec12f3a89e1108ba82a4ffc22c700b88e36cb2fe8e3ad7e4be1053ba25a1", -"T3T1_es_zcash-test_sign_tx.py::test_one_two": "8873c3a87a6a57be291d9a333a8f3085ec0d47834ecfc8a6dd464ab674573bc9", -"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "e64818c13d67feb9b5870a8ada3819212510dd93b80904faaa5156c7d038b428", -"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "6f33071e898cadbb32e6029f31d32170fd7d4bc9df7e7438c556d0ee62b04277", -"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "d81f6493fcaeeb514ff617eeaf7b79daba5e3e0c212649d69fab15afca1c9295", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "e3ea6c140ed860c8e9b706dd5d534cfb55bd213de8b3c6addcaafb7ad20e991c", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "d0907c6e002688cd0b6617e716979e361c510b42f9096b14dc461f023607eeca", -"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "6f108030db2e89d96e5b77c55d7bb88c206525eda6c3cf4a3f1932232dedf2c2", -"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "74cfb4a4984cb7180d558dc47582e304c01cf15b6474fbb3f8f477f860481839", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "b374f55bdeee5421c95a679ea7e548bdd1d47feb748cb48d58cbf79ba45d986f", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "1f62095e9b0496cd4053e527bdc7412f4f261702214b2e9748ccc28252180156", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "59e844a365a7b2c93a294633e4d956da723ef71e0d455511f0945f9942cc151e", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "ea9032b961be1c82c444951465575def9321ac6256a27be77eaff8ed4124869e", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "e3d489dbbb1f90515c20ccee131539b9d4b6b0430c6446e6d203b5e66a4f4cb6", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "98e8e1ab2316b4d08396d75d72c28d457b1366e7f527fb1689383ddf5f170204", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8855bbf435873ebed4fce7f99e22d347760c6756e712edb5fece58d055968a19", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "6dfb8adef95e298866e8e3d347d6ace45c54675fa3f294279e0b50f28ed4daa0", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "98e8e1ab2316b4d08396d75d72c28d457b1366e7f527fb1689383ddf5f170204", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "8855bbf435873ebed4fce7f99e22d347760c6756e712edb5fece58d055968a19", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "6dfb8adef95e298866e8e3d347d6ace45c54675fa3f294279e0b50f28ed4daa0", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "8209ffee1d1a2691e80733095d0fbedfe0ffdae56ba942a5f25e910d796416a3", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "b880353261396e9a2d1ae1bfc85712881efd2f1016987ad2b8c8001dd4ae7279", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "008ecdf1a6cfe858415d82f4f43613edf343a0ca0e758867dc50060be1732544", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "64c7866bcf1838faacc0d527c0cfbe97fcf1a78d5e92bbf94c343f68b09793f8", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "639bd602d580efcd770101364a482c9c47dc51620971b1802a146e9c5e413a93", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "639bd602d580efcd770101364a482c9c47dc51620971b1802a146e9c5e413a93", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ce22ef5acbd3f4ad23088e4ae7a9066cb7b67efa7228c5eabb2bf198408a6d5e", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "469229e49ce48c19bbf08afe26e6d0f1cac216173c4f54e6195d1e8481e13b13", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a8fb026d67edbe3b9f6a528b9a4fbd3aa67abcc936e5a6cc47e3be09356b333d", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "b36feb8c065b5a16d4ac8bcb4407c44e9e225f253f760a3da0682e853a4a50f5", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "b36feb8c065b5a16d4ac8bcb4407c44e9e225f253f760a3da0682e853a4a50f5", -"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "d0e2a921bdc62bbd946178a715900a1c2e5716de5f36f3aad5683fefb116b833", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "d0e2a921bdc62bbd946178a715900a1c2e5716de5f36f3aad5683fefb116b833", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "09564bb645cf7d997763c9468cb951251abae1774942b7847e74fac19a42e206", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "07025939535e420205ac3b9f336a6ea175711211bf63d4fc922394a984324439", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "8f6c277b17e8c65f8e22f2e57f6c5a6a012f795f767ab4df33c82c358d38e875", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "47f428ee61dfff3e62d4ad5f22fde84dd8e815d5feb34357b52cb3024a2bb7eb", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d9b53e2e6d4ad48f1d13d93f63e642a3edd94dfb378eddcdc9b28f6e1872d400", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5dc6ad3d0e3d05b616a8aabcbe4da6766b243615b5a6a0296c27c0b2ed350e59", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "c99a7558c839fa11555f88d08fa013a39b14829cec0c8de110adcb67f87d0527", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f18fcf11303eda9660b717e22c676ad609196938e2c1091ea9dc35d1212f3a6f", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d8202719cb54280b6da210ffddcc21ae1b6dcdc13b247ddf95c0ec1037513468", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "665d7efe4d9d1d92526b5ed8d76c092204d8a3f197ac31c62eebfcbc2925fd2b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "040ea3615cc213e90c434fb2acadd0714851b5515b4bb663a054f2419421455b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "3676a9e46e4b81d6bff10c227763da0bef2605dc54e1ea35868818e566b121a7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3d98db3df4378692ff3ad066e8aece2e60d47f84e501dc5b46ebd74fea0e846d", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "75eee88712beea17216d64d9b4b90af1b88e1fd26dc73b2897ae88b33e1ac669", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "7bfc5d2380d93735decfcfad248c7f2f3a89bbb6f26eed9fbf354ed4268a8d0e", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "fba628d20ee765ffa559ca8bbf7ee444e6f907b205717e184d8c8aaf09a91bc6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "c258874a350e7f2072a204ce5b1aeb83e3b07c16a2834f11b8ce87d6b226fcd2", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "75b377824be680df8ca8b3be5ac1b05476ce7dc05d7fabe7fb6e084537d83181", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "602c9e8b194092da9be10f918295c5459e79d570244ca50e333d77a6a692dfcc", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ecede6d39d9b00dded1c069804e20bc987e3278b50e7c61bdb65d5d9802e4c29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "8d94f673cfc9b6301b8c4b4cc5e4f7ad1902e62e3f12a3d9b86f07cfe5b05091", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "d61cee9588c8c81f99e3278b900f84de1ecd6a35b1c69b9f16cee4babc2e5c0a", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "8f05cd0fa8c55a750d7b5f26b92f15bce9b85011ed1a6035d529b4cea2cd7a48", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5dc6ad3d0e3d05b616a8aabcbe4da6766b243615b5a6a0296c27c0b2ed350e59", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "c99a7558c839fa11555f88d08fa013a39b14829cec0c8de110adcb67f87d0527", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f18fcf11303eda9660b717e22c676ad609196938e2c1091ea9dc35d1212f3a6f", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d8202719cb54280b6da210ffddcc21ae1b6dcdc13b247ddf95c0ec1037513468", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "665d7efe4d9d1d92526b5ed8d76c092204d8a3f197ac31c62eebfcbc2925fd2b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "040ea3615cc213e90c434fb2acadd0714851b5515b4bb663a054f2419421455b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "3676a9e46e4b81d6bff10c227763da0bef2605dc54e1ea35868818e566b121a7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "3d98db3df4378692ff3ad066e8aece2e60d47f84e501dc5b46ebd74fea0e846d", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "75eee88712beea17216d64d9b4b90af1b88e1fd26dc73b2897ae88b33e1ac669", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "7bfc5d2380d93735decfcfad248c7f2f3a89bbb6f26eed9fbf354ed4268a8d0e", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "fba628d20ee765ffa559ca8bbf7ee444e6f907b205717e184d8c8aaf09a91bc6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "c258874a350e7f2072a204ce5b1aeb83e3b07c16a2834f11b8ce87d6b226fcd2", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "75b377824be680df8ca8b3be5ac1b05476ce7dc05d7fabe7fb6e084537d83181", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "602c9e8b194092da9be10f918295c5459e79d570244ca50e333d77a6a692dfcc", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ecede6d39d9b00dded1c069804e20bc987e3278b50e7c61bdb65d5d9802e4c29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "8d94f673cfc9b6301b8c4b4cc5e4f7ad1902e62e3f12a3d9b86f07cfe5b05091", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d61cee9588c8c81f99e3278b900f84de1ecd6a35b1c69b9f16cee4babc2e5c0a", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "8f05cd0fa8c55a750d7b5f26b92f15bce9b85011ed1a6035d529b4cea2cd7a48", -"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "81802c51e2a40a4421b42b25d74c43927abcb53a15e151b54d3bbbd1b8a2d145", -"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "6cff567a30bd84587bb249374c603696a88fd43561bc551eb3f8647eb0993441", -"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "ebd6739f4daf2ad0c1433e70cae5900376871681a534d7aa81ea6ae9b16cf6b1", -"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "91e438eb4aa0fe40211a1d704ff874087865ff546c33b4221afd5e0163d07221", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "c9578be22ec4db1703b34782782354fbfd387dbd8d9a64ad561321f5f531aa95", -"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "077ef4c379fda63370081ac4b3cc5d81c433b1466f44d947207d53680cf9aa25", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "607df8e99d4256f56099b238800564e0cf27883f091bfb61c5ffa268be5e5824", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "2dc9fd7d798cc779a38666e8c7257af24e81faa1ad14336459c920d5620b5536", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "258679c2e7ad828cdea3cc77a9eac4bea926c46fe17d3e04d7e3b91ffe61c3ca", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "0598293860c9a438f3c438baa3fcb2ecd7be85f318723990a405a259d1d488ea", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "86ecc483ea1828d5aa64b8307b689d773247be450289415049efb2771f7ec333", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "5d001ea4ecd47395d855ee816395d28df995ce082873e6831bd4899283589f53", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "6e15bcf18c23b45967af2e159de66f063a3681867693227854746f4f371745ae", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "4bbfdaf2ad08127ce359221501b13772fdf769e7a4362c41fb25a5039db3da83", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "bb212c93d58cb0d4bd28fb357cb5f6ed474d4e8b3dd83b7d53e15f7f149962d6", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "a11b974bd1d319cb7a723a5e9b2ce2731c036a246829c209f5692ea737a87a37", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "96014c6bc13f1f15514854edbfebae2efd842435ee45a228a4659fdfcf097d01", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "e5e1328271e13701844d1c98bc8aed7867700a093ab6f4afde82009d5a889eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "f310335067a875b0b14f70383f921aa5923292a4c2e64c3ab59a85d71e9687c4", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "882807b055328e4ce66eab5fbfe1189aa7ef485c567b79419e364461437b0bab", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "32fb8a578361d1be98a50484b9e3a1fcd91ad80af1a320e4e684c02ca97bfe7b", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "0b9b64dc769344081d6c648452f35277ec78c7425694052c6c25c371c5635494", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "282039d3537e45384d1c82782128ba1f9d705003bde47cfc0e38420f0ec13f97", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "a1a54358ca6c06559971f6a151114c8a236384d2b29db0491cabe5fceee3ec41", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e69c3070e2b83314b94f2f41a2ebdcd2fc191aa1ed1994b77f69f14aa2701be3", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "9e47d1f305f793e0998c8108776fc400e904eaae629294661bf9c7fd047e15ca", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "2a35009fa83cbdc88958a0652a625187342b9f0ab602cea7643841560035fbf4", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "19d701cc7668cdaf5ac5ec565f3fc95c88748bcf26cbf48bb95e8c7b502858a5", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "63f757ffa0f74f57e21a5f6bfc59f133edd306b4cd72381cdaf915039d146822", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "0debf2797f9de350614c83dd5cdfdc851410ed52a988942bf564f59e105f7e4f", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "0debf2797f9de350614c83dd5cdfdc851410ed52a988942bf564f59e105f7e4f", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "fcc88b0226ac1e9d9d3c27dacf256187ac8df7907a98afa16ec32df6e894b630", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "1de29e69b5b1f319c3e56578ac9c76017df6c600091dded327a07194a82d2a05", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "b47f81008d1a75fea48a82e24536c5014738efe412c71cb3507a49b50c2a45ba", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "f6a34e807724ea4bab8de8e0a85541f63bb4d2d97ad1ae94ced0164a797a16fd", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "d29684c2a0a26fc4ef041db6ce99590cbcd0db4a30f33eb2f850561a103b7dcd", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ed77c801ea61a01441232a190fc537764b6a1c03cab39bb9765732070d2a3eab", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "d9b9900ffb5db1a22a823cbaf990505d0d8f00b66dcbbb1666dfddaf87adcd34", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "5fd0eb4f9b39c54025901aa5acd41e2b51f231ae36d3caec6c9bf6aed958dbf9", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "bab7b0c5bebdc062a86c8445ca02f75cd54a100402f18eac52933f6d8a2005d2", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "4eb136b2dca63f951eea2330aebeeda00524ff95dd6c9a064890c3bd89712ff9", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "61423b8a7be86427946845b9c0f47ac0d9f27b96278dc75706fc232b2c769c66", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "a1f31ab62d544008f0b62de0794c490a49ce9fb41924c10db05346ed4189d875", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "390c819912013f7a8fcdc45e9c5631ed663e05a580cd69a48ae0429e7b1617a6", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "e569428deca2a32887e46b02e77e65d49c8d57573c35a02ba3304bd2fd5f5cde", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "c99a7558c839fa11555f88d08fa013a39b14829cec0c8de110adcb67f87d0527", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8616843471c4718bd485fac190131c80ccbde23df88c68a0a10036b8e5e357a3", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "1268a9be3cff35ba0a6d000a7613188de8a5534b0f2d077829bc414283cebafa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "489c09da7935d2c74be49328fbe73621413eb7344b72fba7dba03eb2924115fa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "db95430b9b01bb617b58c57417dba66713457475a84e7f81d26ab96f6f5303a9", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "038d4880e4d82562b7ad80ba3228a584497aacca0a1a80bac2d6d1426f2dd83c", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "d3a7dca112d30972c29b27a0f8ec50e086cc3c4304ebe067eb4d93aea1722291", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "4663cccc3dba80abb8702d81a1e4fac9cd973f20789ad40eedeae922f73c9f19", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "80691279faa552bea1e837e582ed3447ac63e8d512186f7912efb831564dbeba", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "fba628d20ee765ffa559ca8bbf7ee444e6f907b205717e184d8c8aaf09a91bc6", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fdf483f01f795875a5955109a9e19df32eb9921676b2927d9c4dd47478f10477", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_grs.py::test_legacy": "017abbac87c69f58570fb144fa8fd5a5fd89a99bb5df122fd88aa9049961f165", -"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "8faf53bf17c36a22abf3030cdf548c26b02e0a118c3dca3d228bb5653392b7e1", -"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "3ac910e4859d80a06a478302adb4a2fcb64143743af8f6f4b18bd1d8e53bc35d", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "fb04369c5db3e90e85ef3799bde5a65c87a13beae3152b29c2405e5bea405c97", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "cde3dcd8527e5a1bb7df5fc9e58821afe21017078d536088b4959338169afea4", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "d2ab4db4b4da7b4e90b6b06a55712c420f9e9a0deef4ebf60a5e710d90574ae7", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "94550bd4d8e7397ab36068051d96774de559d28caa6e8aac0980be71bbc69294", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "0bd6f6e77bef07cfc72e15fde75be942eeff6aca166e0281ac1761851e943c0c", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "b981fdcad23510a957dea339e15f69a6f997c9f8fb735bdd4983272f660602b7", -"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "c513960238ad53a56b009aded47d35a0ba7f345ef59a12b2eece6861256c47e9", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "3707206a4f491c173ec1dc4d273eedd80f12a2269ce394254998948e5ff6c4d6", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "20c820aa3e2bbf7e494477d1b1fff31de25c42816ffe346f983e130855296548", -"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "3a32f77bed95feea1a55591fe1141da099b81a7148d79479e6df68dfa3457165", -"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "4313b46c4aaa780359eb58beed96fb0820a401d66161c475a532f5652448d9a5", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "4967cfb962a363f1958e71e1b907f6d4d92a684e085ca73f99263478f12bbf31", -"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "813e77e73f5fecd08b2645e8a1d1a0303e0ebc2e61a64a49fcd0955c410fb3f6", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "f2e4b04c6972b65eab168024bf51b2aa8b6e10dc26cc9949701a05c1d396fab8", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "cde7c7119c8f9ab89536c6d8acc5a1774f2754801a5510f31d3ca65094bf08b3", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "a7b304502549467ad60367c82d7742db44b83d2d36c5299d1b50cda3d443c8c7", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "2f804018d2ed8cf699b57a715d0255aad36f146da3b9e0b29eb3de96cbcb3ca1", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "e565e5ec008a76ca789c9689965e384f752e119166a0eb780541ef9d19261b60", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9f7c7aaf50d16bab2c4f002759b13bcf78b59b07471e5c81d62f8e8ef7a6cace", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "39cc217e9056d1aa0710b43f958d4bc58c080cd1225bc314f2a8260e21fc235b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1ca710ed3ae704f870c606e08a568e2a4178d2c662e34bfc31a36805c608c4cd", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "fc1a7f3e29c37c8a40d68a7a1ce909144a8a1f74636b3c52ce4093623ff4948d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "5e541675023c67ac5012bf832fcc8e3cb7c0b2117738ba129a43f5d685c19837", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "30638c3c0121f47a608a232c8a3b000a832a33fa565520edfd7b42e666881d97", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "07cf6d01890a344f4c67da021c9a3d7f5b04ea56335222843b886ee8f5d462ba", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "10f30f12c7219a36513679a3c7477f970655139289954b40aa756446195b18c0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c4d10618bfa87e172c930428cc8ffafd6e72dc49537fd79c05989dcdfc76191f", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "46407ad0bcc11c09926194a059c4179717657db5e4e0a96afc947c79c01ed01a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "2acd98ef1e21ddc7765473f037efabf653e93555108e718f22fa299715df7e6a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "bbf86729bc1bcf1118e90bc60a8c77c7facfe5a7c3dbfd50d067f96e4689222f", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "31f995096fa0f38f45dd2162ea0030d36e4101fc887ba25a2958503b139ab4ca", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "97a19074f6a01e57c5b21a857afcf9600068b61b8ef10e640cf6595663ca5596", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "ba5bf053e93823742a41f22949fb19560df6c4ba2ab445c81f2ce8d8e3883b2c", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f658892efec605d8b691a5d5120e9e022c77bbfd7f7efa1642640ec004071f2d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "6a7c1a62d1ed89ce9b964b0ce019003413521a1c20d90d65e44c564fc2f04c56", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "f9e0bbb1e8031fef104a76ea84e21d1adb8bca04b363556a60a7d91a352e14e0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "fb7d836358ba0b0c6e6f65dbc3f451732fb09688e5f9259c73807b308edff1e0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "93fefdb320cb30a74de0705cdcb464293c4890b0ea860b3b067803a3b2ffaac2", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ab51e96cc9fb841b505b8b8871066c31f2b4a54678ddc668474c3709b565a90d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "9217a2b097269aa6dfde8e5f94463af269455ed2bc118a9afa8786b60f5939ba", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "84da79a26d22e6b49fd0d00c081018f38cd0a608e3771af64b4618b36853cfc3", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1579c09b155861da084d43861efd027f93895f1d32ff255edd5aba7f8639b0ff", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "99a7ddad429cdbf6874f2891f1088115435f5b7af5e4c0eee7daabdc2c8bbd6b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "1e5dad2e3e637e6eef87ef26a0a42dd29a423fdfc7c06fba8706a8dd1befec60", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "8ea007c71bcdefb7053f0da672dded1152c5dee47d21045c7aa79e780b4a628a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "5cca21c880a1ee41b0aabe03ba9cf4942702890b320d832057e32f3eb1ba7c55", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "209dac65255144ec7e40a82daddd93bff88f185608a4deb1a1659f43b8f8ff9a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "369f2abca54ed31841b1ca60a92ba4f38ba3786d03193a666596988d9f4d4cc0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "7247a9e79afef2434417bde7d97fb36a254b80311507c738d1c84c4728fb937b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d503b4f3b91d6c677b9ff556e5e73dc957dedbc7a3247ab222135c41d0507850", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "369f2abca54ed31841b1ca60a92ba4f38ba3786d03193a666596988d9f4d4cc0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "369f2abca54ed31841b1ca60a92ba4f38ba3786d03193a666596988d9f4d4cc0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "369f2abca54ed31841b1ca60a92ba4f38ba3786d03193a666596988d9f4d4cc0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "281247465e68394a7a99002804748669d0685d75c59d659035ddf5b576e92e8a", -"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "63381ffba404d3da3bf646a6cbe47df18263470d7389b2c7b679c0d327f01086", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "c5d25c5acdeb689ef1f96feb7d0ce87c0ce3ac8e4cae67e5f1cba0b5cf5c564d", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "6d69f7b6557d063d633f21060620d667a2302731e665edd12c0225ef1c4c9038", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "0ff28de8af241372d33953e67660839ace6a19d19d42faaa69476b50a075d04a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "0ff28de8af241372d33953e67660839ace6a19d19d42faaa69476b50a075d04a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4428fa3c0229981746fbc2fc161a29fdf729ac40fe3573e0e044ac571c461b85", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "e9199b86ae5edfe18ab67c162369c3ab52054f5be4520c3550142a76e5c76691", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "1b0897f89669baa2d5fe6eae7a1d0a48d42db91d9c6fd94c3f3a3a9b6d3ff13f", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "75a76adc9e00ce92da2838f7b0ae36a6383c99eb16ef182518a6481ecb6e6c57", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "40f6a57f29368674d886835deca0b8b830dd3d9054f8d38814ad48b6be391d33", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "540d5cd163730fb05da2359ff55530199f89386287f28812c9d90b606d060376", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "540d5cd163730fb05da2359ff55530199f89386287f28812c9d90b606d060376", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "0eaac55fd99b658fa5f67e3c1ea06e4d84218697a3410297c2bc5972de4198b3", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6a27ca4faafb505f4f4a78836c6d547fd8100dc1b302e4f8ad02dc71f0ed56cd", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "4f655e5d7a4a731fc413653ee97bd03cd8419fd2dae2c86e1dc4e06fc890d081", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "4f655e5d7a4a731fc413653ee97bd03cd8419fd2dae2c86e1dc4e06fc890d081", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "051bb8032d58a93bc6276c03c593f8de494acfe5a6e34a593bf1119d929f3ea1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "be35c88cdfad5555ad960b5a96f7355b201e07dee6bd437e7a6bd623eaca425a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "c231854b1562b9fa1bea5b4fb10bf26ac70551a2da855d35e5c24bd0386634e9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "c231854b1562b9fa1bea5b4fb10bf26ac70551a2da855d35e5c24bd0386634e9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "244759b55bf0cc653b9f18fe484fc0dd5e538cd7b2fa2c28827aef65595fe7c6", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "fc7088b4c95d52f8d452d8b84077d4db42246f11b1b1a1ee3248985643787bb5", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "ff32ca2708dc9f7e8bfb58dad280c436d4f9a4c1cb235caffd64e9d443330c4d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "ff32ca2708dc9f7e8bfb58dad280c436d4f9a4c1cb235caffd64e9d443330c4d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "9005308a388aae7dc139dddc2a9051df57b0134e4e7ccf873ea67fc3fd76f0e9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "64b085d53f8e8394444c39274f1d7f99bc78f0d060e06a376b8edf6581936999", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "d0058a33109715bcf269989008a9567b72fe5cc70e5fe20ef14a6827d432842c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "758a9d85ff91f566dcea28324cdbc944f96e57abbba8d89b645782636d2b5bc5", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "3598701868101878b89d3d50d978ad2631b9c34b09c600d7780a018c38a98842", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "e994fe6de9606ee03698756ced48d33577022127bf150a0fd74669d650e09a54", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "e994fe6de9606ee03698756ced48d33577022127bf150a0fd74669d650e09a54", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "8c3589346a51d03910f0d928a1259f77aad576176407c1f865f433f1634446cd", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "5aeea00f413870c299d46108ce7193dd7016314b02c2212c92ec306f1a914748", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "cc828af41d01716674559a0fb2149d24ed617186914f098698082a5cc56b01ad", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "cc828af41d01716674559a0fb2149d24ed617186914f098698082a5cc56b01ad", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "9f65f972dd53e19db36e06577f9f7eccb370f6ff895dd3e40ccc6f9663c511c2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "8d91c2f198f50519504b5dfe14e93e18cfdff9d7dad7a32a7e60fbf82a751f9c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "de1d203c046574bbbc282a4033d9fe3c0f160810f555e0190227111c2b46792a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "de1d203c046574bbbc282a4033d9fe3c0f160810f555e0190227111c2b46792a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "8ccb27676cb8d6e8dd03e6104088c0a865c2510b19184f54546278c4d6249a4e", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "3c4029598019963462e571e27c46f3ffe0ed8d87e4f09f7c4841186819455f5c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "acd93ceb7bae2864046ff07f6ce3218f57c474df41d2ec6f4a3186087c5f7d7d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "6eebbe8da8b79626815b5869b9bb5d449cd93310e43998148233b5d19c90eb9e", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "54281742415b54ab3c669160a7e49c23c45c7774ca83032ae9339bb4e4922b0f", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "d26f839675544f52fd7154ddfb7deae00a15a4109221acaeef259ada8d351ad4", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "2bf8e48fdd6a9385e1410c4ef24adc2276641608e82150041608f37adf1fd0b2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e7a7eed135de41f6d0832f467922142ff6b2a2ba560d67ce93794a681f765fe3", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "833e9afdb29b73e207930ac727061d07c01ec3704d66a66f35a35f81c88a0884", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "3d31e8417be4670c9df973e408fba23f1cabe82e478aa35aa97644292044b09d", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "94fd017fcbea6d27ee6f5b4f97f8da512109dca8e8d3add5fdea3d154dd8825c", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "7149eb459630a625e935162533ae2c602f0680d4eded1b2e33e956e766c3ec9c", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "fd55edf73803e1ade9bd32ef4c722a19b3b9b7babf230430f3fe4222e11276cc", -"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "fd55edf73803e1ade9bd32ef4c722a19b3b9b7babf230430f3fe4222e11276cc", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "0f373816319cabca1b6415d0f213bc73ea95552b96d63022ad27f7c3d01123c2", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "50469359cf4952e42f133af1e3c7721fe015cc2bbeec3caa3c335957f36b3c9c", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx.py::test_information": "c82029c0ecef89ef5f8720ece7d6dcb6051f88aca4aca3569fc9fab7046f2225", -"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "f0e9dd2ef5f098ac19a759bda7b6c6e7982a67013c2d898e78ae7239223f6fbc", -"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "3a80fcfb4c4efdbd6323aae6bb5a59f252eef26ecb8677643a5e7963f1da9006", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "53b22e8f0a71b1d0d343b06170da236aef80c538b1eca89efd7dd9b16a535ebc", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "0aa0bc99bc5fb4ae5383c0504662c3bd2409377ad2f5cb01e0964b5d71457765", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "4db9f48b652297081795a63143a67289328c881f5cee1236056124d1617e5ce9", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "0aa0bc99bc5fb4ae5383c0504662c3bd2409377ad2f5cb01e0964b5d71457765", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "4db9f48b652297081795a63143a67289328c881f5cee1236056124d1617e5ce9", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "69065456b1fe10baecdf4c824715a8aad7940bf36dca5c828e13517e3214da92", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "d395e89f907799a36d97a11472b7f9558feb636fb28a7e2b09b8619d65502b91", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "e12d0eaccfb4db4527e1d3af594387742cedf23d9b0f9c8c694a144ca320e4a3", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "ce5895a4ce053006bf3c25400696d2cb39bf3c17e51356e6732fe9db48b5e52e", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "c97c8ead8e3043791cc77c661b5bf8795d8aff5ee371c5a26d90bbb0dc2324ee", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "82d005d4788f4c0c605bf315491bc4c269a9eec8a18ab12a75b0a44307906f19", -"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "70fe1f861ea5603d30356e3fd5b2d0a340991afefd12512bd12603ee0c4c2133", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "3acf2aabe2c0302d3ae245ced866f31b71c6329748084baa898d531fbdc1223d", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "72f19e48f96b14c4d89e2774d12a4a96b8ef524747d8d9cdb206b450bad2a548", -"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "dc08b8b90944a56d8b2bf4df6315ae5a27eda8b24d3d28ae5453f21b8ba12fa2", -"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "c3fd19af884a05d861a6ffa76694a276e1d4ca2f64c9ce95d3ae6bca05a19d39", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "97ab3b4d0e87e666ee825c46d74108c8b76d3d5c3516075494498ba902ae980a", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "4c34c292016b02baa1bd19062e46838eae16c8d1885d892ec5490d07231c0473", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "23c3e828d63cdcb6c01951b876ee96c70c814d793127ea887f22f93092e50880", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "0e6362c3b31b16990348754baf35cb66afa665dc807e1b14c66bcc1fd3934488", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "fd55edf73803e1ade9bd32ef4c722a19b3b9b7babf230430f3fe4222e11276cc", -"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "07cdd682317c939898615e43b5783c69078c357bcac9447f55afda9eb1f74960", -"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "18d62c2336bb22f5f4d8702cb45ef630acc91efbb08d4a3fe79522d98e6536ee", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "70fe1f861ea5603d30356e3fd5b2d0a340991afefd12512bd12603ee0c4c2133", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "0fc0a94695200a3dd69764056a9393b434dbdb9b0f600adce9207b52654ad41e", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "d7f7f2ffbb59c62736e17b93a4d39356c0dddfe438c1d8d62d7fcc4065d6adb1", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4c32d18fba61b3353157e4cad4ae817cdf1b3c3b8ab1d551e3b63bafb45da9b4", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "70fe1f861ea5603d30356e3fd5b2d0a340991afefd12512bd12603ee0c4c2133", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ed9e5ea1ca087fe94c7a5fb9034f8620822504f05691e9907b57340b195e76d4", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "601ca170f99043c2560b2783feeaaaddec8eee5eace3e770db9f7f26e99e0751", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "006b2f7e0a4ceb1cdebf44ab783442764f07452b18feb554b33e4749a56a0256", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1d74fe4af420f2c6e46d559bea67197fe5a22dc3550e0fbdf8ccc7272f78410d", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ed9e5ea1ca087fe94c7a5fb9034f8620822504f05691e9907b57340b195e76d4", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "3019f057f27a842d4c5296c23ef54d5818b7aa9579f4ee8d3fbd3fc64a3f0e52", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "59092e376cbfc602416a784732cb9d697de61cb01ee5a7ccb8724b39b1c4c226", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "75334e25e52bfd1a626e51154a6a9152943cd0e4d7d1b3bb400c1296a0c7bb5b", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "9fd00c992720efffa5a6b77f215ea251f6c6a87d696c800152bdedfafd54ba6a", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "2e47ce1709af1b44a9caf71b75773aeeaf7b1bfd98d6902035bc7228e95d1d67", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "fa0aa57a71a8b88d3ffe7a5109a64b20fb2e6d0a242e91e8b56c5adc8ab01371", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f1343e9ba4504bf0dfab314aa71fb5c81dbcd0790db4a3188c929e34e3ef42c1", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "e2887da87528c0ff166060cd6c573a23fdd9b659d51f1ff00d217d8776bad837", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "2cc2827b69dadb8747949abdd3c0cbb84af47eed325a536aebac929908c12f11", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "9ad3ceb5c7265f69e2d63b41abd9a3f6abe53832e79e321fbadbed928c861f63", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "0f8cb4f8375eb1dbe48ae69feb5e96d670e31d19ba6fc816f18ad5632a618f5b", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "94bc640f6daab2e292f5a55a92a3c1001ff4144b302c1950c67991b33775f8a9", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "6bc8089b0d2f3a30555d238ee97114bc351eb1471e783a2ea7b9f06495f9e422", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "643252a02afd3deeb8f58302844fa6c80ff045cde9c750cb16a27337c7878144", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "6bc8089b0d2f3a30555d238ee97114bc351eb1471e783a2ea7b9f06495f9e422", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "643252a02afd3deeb8f58302844fa6c80ff045cde9c750cb16a27337c7878144", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "791720091b4bfba1ff063aab3505ffa84078ab83a57f2100c3275121f2e13c57", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "2991f7740e73217abe26967b7b0e9dd3c82ca079d45bb041ec043da2525a0a7f", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "dbfdd58f9f6318ae0f63dfb36a82259c1fccc0964f65b5212bb0a31677ad1b6d", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "9ff116e49cf936d36d3c1cb20dd7e2d7d733a063e720ebb575351af2e36aab50", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "0cdb1eac4cc19560e7d7143839ea6536fe25b8a83a586a5b894b448f16390915", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ae0cefc7698a9cf01c64e1d007a21304339dc7cfdafae39dc9eafa70ed1bffe4", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "8c0fd374bd442e7efbe92a3c6ff801602c5f6bdd0b686e4e85b951787668fceb", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "f6658113764af86b275398bccbdb3a1b3b83f62ad649fa48f4ab5fce65274320", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "3af1b0268573020d12c314adcee4507204cca1029cce149947faad536436df24", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "3af1b0268573020d12c314adcee4507204cca1029cce149947faad536436df24", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "3af1b0268573020d12c314adcee4507204cca1029cce149947faad536436df24", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3af1b0268573020d12c314adcee4507204cca1029cce149947faad536436df24", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "3f0585ec7e4b394ad2dca2cbe748deceaa68705891e0d3016739e1af608c8137", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "3f0585ec7e4b394ad2dca2cbe748deceaa68705891e0d3016739e1af608c8137", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "3f0585ec7e4b394ad2dca2cbe748deceaa68705891e0d3016739e1af608c8137", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3f0585ec7e4b394ad2dca2cbe748deceaa68705891e0d3016739e1af608c8137", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "a935471ca7dd0a8f98f0aae0a58b8c6d0b6243563e1eb5e9480132899cfad233", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "ccea698ffbfe00b9a9888a64e27a3eebde0d46e694f28ed7c78bc6dd26288b5e", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "cc03a570763a31bc11f5723fac87f25b0f3c314269d538610914ae316a7cc69a", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "cc03a570763a31bc11f5723fac87f25b0f3c314269d538610914ae316a7cc69a", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "62a3ea09225c07fb5cebbcd1e46ea3e2f4e63c714ade492dfd336ebcc6d78641", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "781f8286d96618cb6af54a70769f9c45e25bf77217656f2dc5bafcd91b2d5617", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "16947e54517c6a90eaa721649efac807ebae05a1306cee393f5dbff9abb0be5a", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "62a3ea09225c07fb5cebbcd1e46ea3e2f4e63c714ade492dfd336ebcc6d78641", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6a6e3bbec5404c50be7e40ddcd1282c17aadc24b98822855e68eb7431443cf20", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "d838912633206340ccc4b5502a0c6e45691f1519eec8c285985f1139a0baacc0", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "47a8dd49a868cfa49aa6867389406320f048a80aa3b7a09b25b9dc091d8dc24d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "62200f0b7b4850c744d5eb8e06ffb6a2a73cd3f8eb74a114870eaeac86ec68fe", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9f1c9de0961188c673f7ed1d446069da86cbec7024ec0f621ba8f12bb9022796", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "c2db78324b8f4aff2bfdeee256d4f11b70ac30469175c41d524d4fb345c92d5e", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3c0794d9f5667ddd22ec18979155f5fc6b23b98ba6a79740409e5120b01edcfe", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "8248d862af9670a905088d0cd0dc9bdb399726aa2d8ce2c6f54de1b175dd9a13", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "41b85cfd481844600e92f8f4d66109b8a19e14a48b30088eca0a0d0f904a58b8", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c6b0db92ff05236ec445cf27f16e00e3114c159f0870dc62ed3535e098f3e620", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "e4d9bbcd5b2e37387a63d587afb7005045757ee0c26c4a4db1f9d3eab0e6c24d", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "a657530198592dafc4b1e6dbc8b300309d9fb366a430da023143bba5e032327e", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "49a8b104c470d37b6fddaeacc699e32a2b12b551a8376a8e527a99b80a928a72", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "a1427208a92ed9b01ff8f190146a6c3309c57218f2446486d2f817fcdea9543a", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "02145de27938b54675b72603dd2e71e52ae6988de5b6259b9eae77f7e0ead127", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b752e89f18fae6f23c06ac097f9a3e26b3c6c99bc866b75c014367b625e0108f", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c326f39bd648f7ab01a8e36649c98416bc4e8143ca14ed4d1f89a5622e1198e7", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "ed9e5ea1ca087fe94c7a5fb9034f8620822504f05691e9907b57340b195e76d4", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "3ac8ef028ed989208fba33eb9eb002f927b6aa3fcb1b636538126a4dff388c92", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a070707144d919d272fa79ccf4b27ee48eeb13f651bad0b62d8c762593302f1f", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a5ebb050734bfaf02529e60ea23e4b447ca89e81145b05926d99ca4c7b5162c6", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a4194dc55b453f81356a676ecbb1054bfea1cfadffdefcd76ff2d44173afaae7", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "713cc05bb5e93931ad89c8b52969bd2d144ee53937de0cab792a02eb6a59035f", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "e0c00dbf1130626c0a43feac6b040f5d0cb6d8756082addd36f8064323210b20", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "882c5c6c8edac9e66863bd68fc6ed0499d513ea6323aa60bf6e09a16d76ad2c8", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "f4680980eda05313b599886a378fcb9052262acfddf7f145dd12c45a71a6be8a", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4c3b970ac2849293770200e31bce8f8354506a7e8f50c0fcfee923732e19363d", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "358c9b933d82771e464d5b507922f3e47b8650dcc6c878a4d23b52cbd797578d", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "78af5e4336cd4dbe73e2345769086b1450126e56dc9a51fc596284dd88aa6ea1", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "9b6bd395f2326d4b7117c4eab5f5564cefea1c57454dc2c860e740a38bca97b9", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "2acf1a8491243cf39ad1fc73962db9fa9ac08c887119a786fbe7da6a49817dfa", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "5c542c108b809700caa70cb6798d63cc781bb52d4bb4849357e622596f6fd47c", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "5eacb7f619f86d6c4e12c679e33c42da3d0252c0c4cb9da226a1fd2d76e40b32", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "f16433b756e1c1bc896ebe9a94ac8604492246194b9cf6ba0b80c88af267d930", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "983382eb53c5ee0296ea883ce1c595af8fca65b24b3792a7cb15c4f2c6690793", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "a18503eceb07ada35c2f0e7dd9ed9e9c54c0fa837f79055a6d2c9628c14a0286", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "32df00dd28d2c36aee1e30189853ba9dcf26ada2afc67d3bbe61d8bd659c60b8", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "3356eb9bd8cc87d8e70195ed29f4173a3921058476b36be1475b9112ef4bac6f", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "23e1c1d18a5a5b74340df788a280a918a743bc3af3b709e5896144930f97a7ad", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "665adbb0fb0f58f8cf290d93073647c860fd9f01e8e1f10ea96ef10b15b80167", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "40649aec8fb0bbfd862aea51570806213467c9a206a16b053118f4cbe2119391", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "9d2e1a926b9ca94a62515cdf042e2c6e0d207ed725b15d547e71e4b5aeb9e537", -"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "01aa40e086023a858170b41dc9f7ed3a3fabddcaed094b53a77010f60a8d911e", -"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "ab3d62fd3405d5a1821caa6e52a2cf4ebdd2e11f7f28899e2d0b76b4c044ced2", -"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "26c4c525ddc8e73cb4b1664b896d346c7ca32d09b1514285e2d3b43a0c800f88", -"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a471fc53adeca7fda41c8709c79caff45113d1f5579c275d9f541b204b7b8641", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "7beb448ea8c4b698ac8414a32ca621a4f8b44ff0f91984979b1121221aee46f9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "13f46d12319371559acf8e075d8ea2856e0b4c22b4b5971470f78035dbd651fd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "9fcde798fccc1ec1ee0467418064696b71d9fab99378381cc68441ee1fe88d6e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "0529b43b8532a8fd88250f87fade708f0f71ab8078c8171627c17d435d96202f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3ac675d1faf168cd23f72e00c35f58628535798448e28f3fec8934cf84ffb5de", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "6073bc93c0081e972ae6a5459c16163017372fa6a04fbc79b7ba852a4a334a1e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "573023c6eee65e1eb78656ab080553042ba7be9b6b37f44ddca34f8e5ff76639", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "1a79b982215b18f9bbcbccc254a3279800a4b6bb8126923157b37e5ea59522b6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "9e9e15266b394bbfe7bdf79b49ee8ef3b3f9631e524afef98495f4ba1faceb58", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "e709b178049d4474fc3580234f33b6c601a7458da0824be590f6dd7956bd2f6f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "e5a09aaf653dac5e3ac17d5b5b52e7736d55a9c4bdd542a9e5ee8be4cc1a0bd8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "dcf8fb0d06dd17a8b6c72a167a194db95f9c6fe1012f1a9801bb99570039a41b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d40e844cd9afb62e7bdb2b96a7d036c1aa670f9e0e516e5bddb62176a7fde03e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "12a94681712c936431bd84ae1559813ed7224a0c3c030bfe93383f02aa3bb1d2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "164527792f52d0853c3b1a1a2496089e8b8e3de719138decda6f5c125bf21cd3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "f3f4dd9066b2af7306202a3705fac5b0583ee1103da2b782f09f063382394c95", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "36ba81308e844d37616ea77410c4633f798b957cf6cdd4f66f32f3ea35c80ed6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "4518eb50d4636a7626a1cb16001304bb2933a41c901ef3c03f474b74cd50f8cb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "c4df138e87467fcc10aee2e83bc47d0e3d0f56d86e1b8da71d57853d460ed1ce", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "c3be1ce8ccdf13c5cee64e6a54a3bb73d63e367a815fb985bce9498c96d53138", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "c4cac52fa0705466ec3aa744e422832223619c8dba645a1003eb39598494d7fb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "63e9d734853f3b8b433034076ad75e407bd424b67479c4aab9798d78047b4089", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "1d29b3806fa5e6d45ca16d9cb01a70bd8c02e0cc42bf04e0aca088d26c83dbb2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "19823590d7e333d3c5c3c13ff6384149c44ecd0a822875e392c8885f22fee4d9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "5e735ffc3a99daeb99a1cab04aaf1a00529c4f6e03762aa65d4a30cd8492d113", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "57405d0ca2203c9dceca5ff93eacd2c3b06eebbe3238c1a15f13c337243dc846", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "c910de4db7dddf55a743d238d5a587ca1588e538cd7ea5aad0cd8c9f85ef6dbc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "b411666388a85cec0ceb1081006e605e8af3fc6d35bbbfe28e0224fdd5131728", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "f83be2c1ed1426ff4879e867c3b5a7abdc6aad48e2a4ca1baa931b1d03e1865a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "6b40590f214010fcd7bae0c3f207a37a382aa030f1d5e7318836726a74d5e300", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "fba8e655bd1c20be7b4d621e040bb8d8ae0c7e84419d30610735907d2c9032cb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "af03345ba6fff6f94275c0abcf2e60d2044e49c24603b51cfad76d28cb70321a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "3146ddd8ecb1fdf0d9d8025a48490dd06599b31bd46b319ba5bded6298c64a54", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "4a0bc1d427bdb5d47899ef4525a82201cebfaa5957f9cc625f479fafbb72df14", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "ece15bc4cbdcb1d25a688e10ef8d77e00bdc5db9b12c7f4b3be4469cd5ebb69d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "8ec6d4edb9deace41059ae87d880b0a4875358de511d217d84cbf631af1c57ae", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3f0f46dd97fdf222b300c55a4a5162f21085f4038c2357947c70cc5fd4faa195", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "9ca51f52e973cde2592768fd2ec34c3ab50474c0007a43442a641135ddf09b10", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bcd4b5cfc421bcf6753ba8a839f956f27f0a7c965904638f625e85d6b56b8986", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "ad0b006231e74289982c5b5416ae8bf6d11c5bde88a1fb3c1fafa9850b233e0b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "eb03e5bce4827f56669236968cdd424f0ac915af9ba869b39d144d30f34427a3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "d4a09ad7a564747a4945000fc50d61c447a4ec1e5842cd58651391eb0d22898c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "676a1e045a33349831531a401f2028fc208f6fc1639b40a0781bb5f4e37847a1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "979b588a65e4e0d0e9ae50288c9740284a97ee3674f7b208fa6a259a3e25a527", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "0065cc288cb9a6aaa443f5b987489e5ec9caa876232a1adef764223a2e983d28", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "3d1d07a8164e2e5f2c909d1706f38fdb2d306700c8bc06b13fb0c2f94ba6c937", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "dca6fbb9c2f3fa6935fe614dfeb696b4bf1db3c58d9c37a65922734e474feed3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "c31bf4c43c09bf2122637d544514bbff48487052d311cc454831bfebe975e782", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "f128c82fb8a109a8234fee767d43747e4b2cd9cd1eb2223154dfb58b643076d4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "85087bac6e5f21f3d4f8b09651dea4c86a133c76ef006d0bb7cc95288f2b34c9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "a996ccaf42231d02507f42ec7d7634634646568b92ca3f37df5080923b0388b7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "27b619b7ca4eb8637c2905dd8f5a5904e14a769d256f89938dc5fee7dad38059", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "93efce4c2e0e598e21331737e0c8c0734fa3340508ea40202badcd7486f2c4cd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "19a5b6660c3fe81c4c2af49f6d8d102a3fc1cb9fd5394feb236a8125ae819ecc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "880e2ad029d03a0a19cd517b59018c64762ddc960a16a71d721e82a1eba0df87", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "5350477d6dde72c33c1b6108402f28cb9670430bd239deeb08a72130c213cd13", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "66f81b66fac7563524279c5d44bb22e9ad339860c5e2bb2a31d307c70aff03c0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "3ee78a4a7a36a632a76fbd54c5989da987d74ba5bafc12f161e50ae84bc89187", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "4661be9fd3a1617e5e80f874d1e50ef5c34f44930dd472cfd44ae3e1c2b1671e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "cdbbedac93c8cefaee007b570ae06083aba633d2b110c84cc8c2558dbf5440b0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "7752ec7ae40e0117d9bd8e00caf5336c5da51967d19cb0cd792d73ed19e01240", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "dc5c402616893b224908f25a5777a1a83f542cfb5f6ed66d2fee22dada1b9e9f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2aadf6bf277e748e35d0d2a0cc5ac7da4f049e9e5c553359fc71270b90ce107b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "94bdc2b36d691f547644728d306617f82250de235f04a7c852c4096331ead104", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "4460f2f200597a2078a8f421861521cbba5588ef9ae202dd548cb587996a2603", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "b2732f26422f215347c0a319dd6f708aabe3e25e7fd81efb6ce56b171db92f55", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9f1a4494b417cb0cb1ccaf29fb1eaa42440e0e75a5d4da1b5d0fb75293d8b0fb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "36db6f1c68dac428d42e9ca5b86443d9fe8fd627f2ca8f44c5cf77946dac0abe", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "bcba90a5bdc78b9412c9085f591629c3cf80972dba49ae8ee39e1618e9a3cae5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "ddb46d23e66963b5a828693a88f82b6c35a35bd69529f9f489ae793674180778", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "7c6144dc2154be93186c63556ae6d412f2fa54d127f657cb1b7ed68b325a9bb5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "115990a0cdc77385a70a548fe60eb3001d83217f8289241fcce3e62f1964bedd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "84962d06329f9551d99382d0584483d712c9d42e7789a9ba22679cac50c9d3e5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2ede6e720295a40a47c00b42a488a257b298024e6ce0e5a004afc8253b222796", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ce832b0ea870d6a566df9c812f2e5edacb15fa031bda1898182c496e018d0d27", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "d96ab7b9fb2eba17e868ea6177d3d8867cad5e24a7bcfc77e6a00133b2824ae2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "9d42d2c30afadd1b50e794070487b1489995a63f957da5c8448b6c555a9fcfbf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "469f3107419ad73fb78588208ee9ae4ba13ea90b66d46f88d24c9de6f63d6a34", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "32a8bbb3ca4edde22dde47f8815a1bf03c4bae5903f6cb36ea5fe377c778de5d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "54ed950eef34b0f3fdfe5436f0bc70aee697c239439d35c4e35f7199ced0a9de", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a96460dcd94c7ba3ba2ccc0a60e99a99f4361a64956d87f306175a7c665d0344", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "c8872a414ba21dc530ee77a94ebc2b5b95ab99e4a035486f2b1e5dfbf19e425e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "f06301d41ad90e13e9c37daddab4190f1b80f87f6db4bb6f09704b45eb260b15", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "86abffd0ac4f36744950900a3287c6c5d3acbf501bf19c79f1ff244d6064a915", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "93246d14488a9c9e690f6ae91afe8d433c0883608b971e25a3d13286df3e9c2b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "5f349e1e1208cfd012b89c11b5e005bdb1542520befcc2a0e279a6616667c237", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "815581bdf7b9e88e6f9ba45e6e9d835c0d1b6ed66b2daf4661bf3b0b5682ca18", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "1a82e12b1dd03819e97cef8b02a9b1467d95baebeb5da5ab49358e8dc6042ddd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c01a3328c2f1b50b8e8c965a0e7ebff5fa320ae07fbe663bada0f9adf8f52b76", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "3a440693ba8c804a6c4513b150dca6923218f14713fa7d50d5f43924b94ca874", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d52b2fa245145530950759840d5c028c113a77a2b7ba63dcc2f343606b562a1c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "001cb2c10fa20783a4c4c89c928a19a212162c07e073a05ea0017320a3cdb3af", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "c59d63addcf22917190e04515cc4f565d89f76eeb69fa62d937bbac1a9de3271", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "050e02d69187c6fba92a5473d223fb05770d3f084efc7cfc0c614372e82e5185", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "3ca97609cc3ae577abb921d922f57b8273ba744ba8039193ca65e1cb2a2775a7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "737e40dcbb49b4ccaf613cae6976a2c3b6f36edf41b0646ab1198e450d3a7b60", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "31b40a213c130d21910e574fd8eb312b8d25992ba70dd4099eb7275d33a0f146", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "adc471c7f9790bb5e9cd5cadb4aa707513827aa212f090416f834bb8678a2e24", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "594ec070b00830238e7c97bb75fa084dda4c17172ecf16de36815b7824391866", -"T3T1_fr_cardano-test_derivations.py::test_bad_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "73fc20e9c1929320579d788b7275f632b215e29a4ffe4dcd63da6df8cf3f7a16", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b259ab2bae482da96fb73590030698c945b5fe7e3bfa18267b3697b0b2d778e7", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "56c27d32ba5796d3f330ab16631b99928535627f918eb95f86045a1cd82ff9a2", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "f76ce8ea02b94257aea9f9dc1e600bf3bce129a4fa8859f466f81b8ae46e6080", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "ead27ff5627ca0c5fb50b8e5d204f5eaef0c1632f15c5cb8f3d453c843276401", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "ee701b4c42dfc45e8777dfa6e3db9d6f84a2c1204754f3959386ae2cc86d95ee", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "660494fb954bc46166949ea4ac936ad42b37b4687a1c34f2fe404624987cb807", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "7168cd6b3cec30e47991e4961af808e080fe74953de9f77ef60dab33d4c563ee", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "fc20132c179e95f0ac6d43c601ff4889d339198d7e5768f222963c9d932f3714", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "8de3f2ac056bf8327f97f6705e77d02e6f7399bbffef278dbde0a1cafe30e8da", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "35a382e8cf094a089cd309149122cb68ebfd2dc7d68d20ea968183deaed69262", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "9e0b93d184354c891a3177329afd6e403603fd6b800791616b2d8c1e5a5d7f5a", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "592ad88ad8d23a53289f8d53033f0b7daf25c42e8ef379cf0f9099cf801f020e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "af5389a1d5256706bed483f6b47fe632ea87c08b17262d3a8612102d7f87d0a5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "e21b37877a108e27796610970e672c1e6158cdf2ffbe5035090d51f526a404f9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "22b65e5ad0c65b7fe4ef180d7d628e987ba21e1fb4f4aa43f616fffc1bd352cf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cae4afc23ef20952a7cd0f2101f6832264db051706f6491021117911b566d7ec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ce39f51553349fbf7a4abb28ad053d572704b02450bd38346a68323f4b064031", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e2a39dce1b0e6442b2cd1ba416c75b07da8ecb41e41c0f7912084d3fab1cedf4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "a3987f3db4b431e30f4a57d99ea6e855188b404b632cc9231ba37cf5bee80023", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "7d3a6a1449fec5d7fa840d5c8569d9a2eb439a7906390bdf6e91a15d7ddc8fef", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "4c575bc2322ff2e4ea1b97080602d91e0fc678cf06dec3ec09a1e6a608834a9c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "d01f2770b5c7f1b3e035a1f2fb6a1f129d15d626437bed6ef78efd7295f2523f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "cd73d619ab5ac71dc50a2ed8019790e3bd764b3fa83f0bd3ef304ad42bce68b9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "15ac679f9e6b0ab6c1d88d72d19af8edd5164ecdfa1a80120c53e9125eb39a22", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "15ac679f9e6b0ab6c1d88d72d19af8edd5164ecdfa1a80120c53e9125eb39a22", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "3140260af406e1780de868eeb9a069263c31ce72fa7e892dfffaf6175805f017", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "659ee56cb0c1bca3c01817e4c53f84a0dc963692430038c2caeba687554b08e2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "23b8c104b08cccbc4549352961cf80cddff94b4006604df664a7704a01676e51", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "424ffc35fa090739067ba061e27dbd784140f46f9428d8378c87f16b9b084ed1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "2ce4bae455cc9c0b9892cfc5210c92518d28f0fe3010faa18cd8ea6490fc95e9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "4950f865c19e00f96ea046c170a7d45ae85809e6cfa1d5d5406ebaabacd7440c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "c8deef0d001418fb7f27a65e4d8cf96f27890b596ccfa0e97fcb06bcaeaec41d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "e1e9e7e285912830b89454e0441c376116c085afeb2ab09440f0f10ec78c50a5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "099b38317981dd01b02487a4e06cc0be384f61c9371386e84fc3f91bd332ac64", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "2ce4bae455cc9c0b9892cfc5210c92518d28f0fe3010faa18cd8ea6490fc95e9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "4950f865c19e00f96ea046c170a7d45ae85809e6cfa1d5d5406ebaabacd7440c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "fe081c6595e8540ba0e3dc2e8d93e05c70869423ae7e4eac4e83d0eb0d24e787", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "a4ae291a7629e5d84f5829b34fa3ed45e154fd305fb6ffa4b39796539a7ecf30", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "eb7b18c2e45c4d514dbfd0f5d66c014c0dd672ea46fa022ce999500c79366cd4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "71b4b0ea33b90cc307c4b4b8ea3ce8aa48240efe51a3b0b727fc02032b05f852", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "138f7f89cd63a25fa4f6b48c3f0ef91b89b400aace567ec6b134d4afa89776d2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "ed5d7ffc5ac365998e29b4994d8935ffb9c4a0452472f8b95b63907e15752e51", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "24a0aadc82644d5abdb7e981cee5a56f6a862ee79b607cb8eaffdab605bb9fb2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "25a17e06346ef2019f68f3490c4faa84db7eb69e60e080a737cab303dba8af6a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a0cc183b3bd4f02ce21ed7cfa02735fcce06ba3ac0247312ba0e0142902e0bd5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "81c779ad6319d5c6a9d73f6f3ec0754cc718f34b019b2b9ae0361250622be73a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "925d3ae6257c1a11ff9ed9288c928806d23cd95d77358a71c8b982ab066a3602", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "6f7c88fd6a6d24d9049e58605173534b7cf51a0bfa640c725b42959f5e52b27a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "a6df9bd026137021be7733242f758cddf6c29c614976f3bc4a00c09d904c2c2f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "e702990bd95dc9808d19ef522d2a13925f6d4837382d511ac9eaa02a2ea2892f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "5082b9315cf964c1d57520f44396724e410a2aa04eb3664abb27920863e079b1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "aed70958141685a159cf97973d8138218466b1abcb7c4171e7c301d06f75aa52", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "57e20be72693183124a02bb222f166616beae8a4f6a257b827311c3c811e9aa8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "318ace359c3a03296275010ddb622dad0d2c493c313a186c01163760428eb535", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a51e3415d0c48347776acd5e29b92c9a7c95e5f33179dd017e0a1c807b99e896", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d9930746587bda156ec5747dbbd24d15ceec9d931079d755f78046f47b97535f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "58f9d1333e8146cb1623ee0a9716c2ce8db7e6b192af258d5908a9c281da5ed8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "87f03fef4985e120261458b4fe52bc0c5031f9610a6c4d21a6b7b81656c52c22", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "ed076e21eec3760c847552ac34cff32fce4b18b792e1ce2cc353a35a4329710e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "271bc3bdea9945df5e2b69e69115341bb2061060ad425f3e83f9447c5e2087b3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b8817d182fd0d378565864a61abf97abb7608513a76772cd8285fbb243457454", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "b27fa44627ce4c814bc5c4c31542d614edca6f5d3fc0718625d440d2184412d2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "4f89ab9bf00ae013b01abe9d6a7edc73d397117d104ae931ba0b4c96be8d1163", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "5c3619f8ca6fa7814a7d2231b8a6e469badb33975972b1cdcf09b580906a467c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ecbde05c45f4adcbc86006e235e94317c5dd1f7fae0e272e15dad5498c9a1ed9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "fcd803cdf6daf5b8eeae1d626da2d0540d66c8eab68783d479313f8760529378", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "53829017e42fa6b5d525c2112f40b823eb7dd4551067f3005aba6270cbe08cfe", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "982413da634ed6f02694a2ef42795fce73248a63b91162bfb0df9dfa6d7d4a4a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "89565b3f06a2fdfe3e35b122b903bdd0c8cdb8d61770ad2e940597eeba46a61e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "64efcbe5bbd0b4f5f94c0ea96ae8e3a6a81d0f1ba3739593f0cb0736cd0b8d89", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "5db76753c0f2c9c5a69ed0dc306f9f0a1f185ed6a481efd0f6a7cd6a0da10ef1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "5c6911c5af32d28c894ea385708545f12bec7a64b6d8258f4179e6f1d0bb19a1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "9b2a11e0b9d30c4807f3939419f473c8fd57d49e24a2de17edbde48914327aa6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7d1361b5223231576951b769e0ff7e1b6e329fc4f69590e3525e144a2c801dfa", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "71d8c35ba20b7988d572b6b3628801e08d3b0eeb6266a54e0ff886f592536ff4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e86e0a369ef50a13b2d2b2e4dc37dd88fec980041428cf613c1915199b80a92", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "bbec8245fa29c8802c776f203df8df6eb358d32db43cc3be1a0af6f1a0eb56d2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "73ce25e3ca53d324ecbd92ec2b6d6da288d3d2a19837b3b1ac4979ade4c4c4b5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0a2c9467cd8c2f50f746364a0eb89ff2842af1d761820263c3ac76f8175d497c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "f52b56905c1219933e3937166f621b8ee6948547142fc914cd4e6408761f7dd5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "bfa7b69740e796a50889b5c9d7f500f953041439881c35a08d4be79534c56753", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "b7d1f3be1b5093cab7f702749a41999ad8e57b68366e504ed022187739a5df75", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "30c6413dea0cd76727bdfccb459d7a92699b42d2d2945b7ce72bef7357cef338", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d55f31f4ae896f65c648075359a811fe786e105806db02a631c78d7551e073dc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d86b11138fd58dc4a9e696fb5fd885f75a163956bd6a7e8eabcbc46ce6c47588", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "fdc932dd525514d77fd6a4b4860ccbbbf7fd4f09ec2e05a10da3bc683c799b63", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "c1eb6bf808971e48eb7d0a412ad02945575970850ed7f15cfe88c6722b428ca3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "34ee50169604585e784e2ac0762e8bba4832fa65ec7bfffaa1ef15d1f2ac6fd9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "34ee50169604585e784e2ac0762e8bba4832fa65ec7bfffaa1ef15d1f2ac6fd9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "9f14ca988755fa51512077e00821891d6080c7db1583314e770113f380146d3c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6efbf1a4744914cd57c1a0952b9a6d5edfcbc10e9bb851894ffe0fa191a0faa1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6efbf1a4744914cd57c1a0952b9a6d5edfcbc10e9bb851894ffe0fa191a0faa1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "146c0bac8341ff22e1a48793f548ad6469351fa7f00fc4a9a30cc8357705189b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "be1a1a6bc287f3af45b59a24ef3998ba5e5bfa2e5458acf4f64fb97853b69956", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "bcc774b346d9dfdcb34e4c4a0c4b0c2f3675caf7049ab87dc9a3b504f9962870", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9de8394d50f081f250084f689a09eaa1a79d2e9f09a0cbc61b18e80f68d17d11", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "04fad3612cd0e052159e824b61fc661444deb465c17e76cf2f432ba40b5a5c5e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "37c96316f5c199a27a2cdccea5f29f981cc73198d340ed6cce9ea3d28330ea75", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "0979efe5cac33ecfd64cc4ba77896c7e369b1bdac8e2ce4550efeb27eca5492b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2e8a0c320a7e4652c43956a2f9c4070b2d6e1fa077e11f6d468c9508ea85925d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "7fa07a0f21083a921b9eaf7d970540613e53bc1fdbe9e63f84695c184ff4e2ec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "038b8fbed0769ca657b5265341be15ccbfd7fd7e90d42970049e75e89d0a6cd0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "af5389a1d5256706bed483f6b47fe632ea87c08b17262d3a8612102d7f87d0a5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "a3987f3db4b431e30f4a57d99ea6e855188b404b632cc9231ba37cf5bee80023", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "b10f1dd1bfc5cbbd3bd623d54270e406a16eafe6deac05480d82a9dedb4489b4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "1bb66183ac5e8d595147ac9e9fed9522a42acbb8d141666e95bb060a4e1660da", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "1bb66183ac5e8d595147ac9e9fed9522a42acbb8d141666e95bb060a4e1660da", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "ef6e1ad4f9d56a206724e67a2a9e0b68cffd818396a7aa146448c94daea09013", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "6436c8286dd13a12805a1d6de43b26f518e1a19b7dd4ad1d2e9c0fa4afbff850", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4705759c257c65a9aa3f1302aa4a568803b626075d2c015b95400f951662dc3d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "82e41b3803e60aa6a52398413cf20f16c063fe82ab7eec3c9b44e7029cc7fa6f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d7b4b04789ffc2c120e0c52a7ad9bfa8410e3968f4b1d39cbcb95f0f877f2b20", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "bdd48f310445455573d8b89d02fa0f71222588a643b4d23c6fe23f57170ec2a9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "419c7a45002bfd972baa00e0e8aba263095aadd775507013f6eb03733a710e04", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "5d22bd28379e8e32c4a10c050bed34510721ee7802a2a7ea38a8528710cc6aa7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "5d22bd28379e8e32c4a10c050bed34510721ee7802a2a7ea38a8528710cc6aa7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "5d22bd28379e8e32c4a10c050bed34510721ee7802a2a7ea38a8528710cc6aa7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "5d22bd28379e8e32c4a10c050bed34510721ee7802a2a7ea38a8528710cc6aa7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d7b4b04789ffc2c120e0c52a7ad9bfa8410e3968f4b1d39cbcb95f0f877f2b20", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e55413c04dcc4eeed38acb929da44984d6587c6d55358865396728d9e28fb9e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "9b97ef90e13edc6292e46ec688de96c6da77649108c0339b406b91204c2cc37d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "bf1777bddf82b210656c7e10718dc93868991097f3831cb6969493a77be09206", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "42094de427049471f0a7560c5e64e38a5216ff9e35863a8c2a311045ec2bb70f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "5b4b171a1e50b1f18d00f590b4da2ee026c3ddf3dc70aaed38576ed8c634eecd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "1293caa60b963557111203edb47a5f5a0ad6ccb676340169a3fdc63fc9e788ea", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "cb6390e2fc2808093e82f3eb3f82d60793d11adbd1c69256d9046d694f20a3ee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "8edd173c295ea53ed11abecd75a8d5d30df5a75b958464ec2e70a5137e360cf7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "3dafdd848a3b6070eb06ac712faeba8f1feb14dc451a10ed65eb09c9b3df375d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "b5af066a262285f8e00dde563a48a1df4d70e2d027bec52eab845126d3561e42", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "28974a23ec7b863a7b63765d4d3e602fdda729169e3417c94adef0ae75aaf3bc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "1bb66183ac5e8d595147ac9e9fed9522a42acbb8d141666e95bb060a4e1660da", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "82def8314b299daa517c6a09ce3b31c31653ef60bc199f490b7bb25257ad450f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "dc1dedf826423b0acec7e12e8dadfcff342d7158d6236c0a1cf5abef1194a461", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "6d755c099b59f328355a9daa6732ab175365127a4c9880b7e920cc6dbdb535a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "afb4df96dacd2e744c8c44f24296fc6ff772c47f514c8251116721f88ae9ce38", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "cecb6bd29adcf2efccdfd93364430480d4912edd537936ff81fc7b1f80605b37", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "7a8799f9a0726f4ad2672dcb20cb3e62c301c0c004276a301ee15671ebf5fdf9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "375d546aa44d6cb5a32cb16f3e5c5352b823e76332a4de1109680dd003519579", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "d92d70c35f280264e8a36683c0c8a75fbda5aeb88ef5200738b35c99bd48a437", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c484fb41caf322c9606dd294e28edd09d8675e7fb416ebd80bb1f6575d49d384", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "3d875ba8e8cd3e3c85e1de4bae49b31949536cb20cd612c2a0ddfe2f21dff8b6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "0cf0fe906e12739bf348693823cf45d4c3c5f8044a4dda6e4280aa4a3cbc0b64", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "1ac74c32e4370577fee94698be736a981f76ce777b80f2fe25b89a7975397882", -"T3T1_fr_ethereum-test_definitions.py::test_builtin": "36a9ff6a5dbbdc2b6e84dff2ceb4d037cc7f9ea128bd8f5612d29c124bad0698", -"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "af729a7b312f74ea1400b0ad459b58e9b308abd4ddf16ab7be4cb0e3981f7c57", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "878a36e49d7727a0771fe048cdfcc53c101e55c9a09083339933fe336b0c7de5", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "19b66452287e8e41c9be40c6049e3963a04599563b9dbf9bf30cf12d9f0c555b", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "943fa0c22d708e2b684b244066634e06adb7ec134886611d432b33b41bcf3fda", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "37efb05a193767ea30e11385b8b1921dc446dbfa7f59ec0b319f770d3e698d45", -"T3T1_fr_ethereum-test_definitions.py::test_external_token": "47d4f3fed9bdc2e84b3a1aaa7bcb92dc7cc469bb1f3ac0658da3fa19b162255e", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5acbe0523099ad0fa5052d37b4bf2809a1c95452882be97781ebcf6a2e7baa48", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "897dec6bc960094a9495a61f0b648f36bdff0bd0939275ac050b43ef38107526", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d3f71243eb09299ba58e7ab8a6469ddd65babfbe0a78c44513974d67cbbd92d0", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "1ef7ce0c01ff0f88be1b9bc46c83afa663b00c0708d59260a9e03f727cf9b627", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "bc0973c8afbb17f7891f386a31f4430e35bba6ba8fbef6a0f8381fa121fb8d83", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "ecd4c10609683553a39f701f0f6d67970458670be54d581eeb594c7e100963f9", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "192114b67dc48bcee4746189e1e17ae1ec74ff9bfc3046f7a493a0af15c6699f", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "05a8150448fe7171ef0a757bac4dfa8cc5a65ab5f05812ddb641e1b23585fc34", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "a58263a48ef2ca6ef3aa284fba244c11eb95865c432f5d22450ec5fa86b757ab", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "eb9c0ff089a0f264bdf096bd4d43f6303ef64619c951b9a517e22c8dd3af835a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "479711e4a3978dd8960266a35cfa8e8023cd6b9cc98e795aba39336872f50576", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "982edf64cedddaae815853e093ec8954df7fe974b49cee9c44739802b885b04c", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "67f71d7f9541c3f512014a76b0efc26cdf1dda8772e5f069e72bd6a76953d435", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "994a9bc11c14d52528abf4d77f99f483becf3d7c2c4cb5e10a3ec9f03ba6f0ea", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6b14bbf5fef058ed9842498cc6a20016eff9b7ad94b8d1dc93eae5d0243a2f94", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d29d3206604645109dbbb1e2991a5c0d689ef586421882de2dd09c3e510cd8f7", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "a2bc2bfe0ba5615e1476ff88d975916bc3f6909443e17aa1baff95fc5d94e47f", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "6d26ebbe7700ace402514828a7de479a5a0442d3338c5ed4d6b351c4fcdaaa8a", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "4761095aa563060ed6e5a8d2800b0aebe58e50de0707c8ccfb82c2e3cde9374d", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "41f0a8df018243ec31a548b2938e1a0b98eb1027d823cfb010be5d0b2ff0bd54", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "a44ed6dbce0adec2d9b2110a67bc0559b1d3a760a52748204d8ad5e788b03718", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "271e0fbdf91d0a7028eaf92327e89a8c2eb5ba9a58374f1de2ec3b5750aff715", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "f17dfba1e51f314631c0a701478a36e08c7f74b2b5400a5d16942aa165168566", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "41f0a8df018243ec31a548b2938e1a0b98eb1027d823cfb010be5d0b2ff0bd54", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "41f0a8df018243ec31a548b2938e1a0b98eb1027d823cfb010be5d0b2ff0bd54", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "41f0a8df018243ec31a548b2938e1a0b98eb1027d823cfb010be5d0b2ff0bd54", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "9a4bb04445e0fe3e5ac597a15d6c950e94d4c33af2d876ccaa3b093a948b55d6", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "7a4adb3780eb340df5a5dcce52a93ca2c9c18e66dc6e7c57150c06b6a130542c", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3824f692a1a9ce7672edef1799f7605aa5473f288932ce15ec4ed9047fa61ada", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "52fcf47de94efcc3672338f7e00a027d3f780f4aed3589d329692568de83d9eb", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "57593930a2eed629910e9881a706699d54362a0dfc7fdffca646288e5cbb5f5f", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "24ae915ab55455fe5c38d4ae809d6b1813671a24d2fd710eb0f8ab0a64b332d8", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6abf99fbb05e63ed1c9f9e6adfcd2b7b85eb07241f304a3d8d35a45fae90d98d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1d239dcaa8259b27614c93ab1c0cf2bc7d690c4d071c19e944515d048c4b3d50", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "bef35b46c9ab4edf4f5b9ab4aba141df72be14b1bc139c25d601d8d9ee7e7881", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "cc07f16ca620c8ff3302b45cb6140a700e3d803f0d01eb3ff27ab3a7125a09ec", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "ce64caa128dfba4302e29a723d0ebb4bae16990120588f8f83f0572ed0215554", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "6e2c8a6efa391e775b9a64b249147d04dca9eac515024d0fe4e9a9bd7954eced", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "4242f07abdd343bbcc0f3fe0ad878169dd03a749ef6d2335df45e91e8fe6e309", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "33fba7c72f8384938aea6ef440baf60ad10243669cb22a1d663701d437aade7f", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "1b4cf081b7fc31401dbe6d8e27c51e15741e421bb63c75621fa2cc69c687583d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "ea9ca8775e1a938ef9a6e119547f46f8267044bb5d35d9e9431dd09ece4d763a", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9af6ef497759ef99982bc2435f68fb6b966cf625e29c881092ad76d2e6239e90", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "83a268d1d5b8861927b1b81a2a1022070b3e2a5a8b61c06f05ca37f41479a6f8", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "ce64caa128dfba4302e29a723d0ebb4bae16990120588f8f83f0572ed0215554", -"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "8252d8f8c805869c658b151701984b0244aae7948be24fc09c9e9ada8aa570d9", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "a09fefc027d05faeb2635273f7023a400437950e036416067bf0ecd32d0380d9", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0f5618dc4b1466668854eda610cba7fe6631ddfdbe5cdbf689659035488810c2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "46c202828d811e66b9af63369c87f3efc2606666db12c29c3c6caa9a886abd9b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0f5618dc4b1466668854eda610cba7fe6631ddfdbe5cdbf689659035488810c2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "9f8695e1f82ec144c84988d94a42cbea04f69cf7e41041ade3c9f06ed0104c07", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "9f8695e1f82ec144c84988d94a42cbea04f69cf7e41041ade3c9f06ed0104c07", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "8a22fb14ea2d19e50dadcf080623e434d98009250f09d848c31603631e530dad", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4052a27c01e44a1804b45a043c248e7ce4fe8969ba9f7ad4a7fef08a76f04b3a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1d79f95e7c5d14c5a62b64d297986bcf1a60ee4d6f98f9097734cd9e785a826d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "e052771eaa447c63cf70a70a926a29bb36c6dc913bd5264e5e95c86e5be855e3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "477094ddd9091501fa4e11989e45c9836524cbf4412a156000eccd3642e8b5a2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7b1f9cc39b14f3a5d245ac1114ac25356766937d37d353906689fcbffe4ca8d0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d1c20c08c3285ebb4b2c9ae77ee3e6244eb167a024ae10a443b5ea86efb37527", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5c6c274f7dd373badf2160260d4f64499a1801f10da9fd890ff0ed4a90b7ebd8", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "d6017fb22feb15d9475967ac1b11778924b7552e88cd4a95ebc39355b1634e13", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ddc487ca41cedb7cdea05a96c69de8fecf1f7304bb4151c10d0b56f7f7f5d061", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "fba2499b6bb776bde8175994d5e66eb3a79946f3ba3a46592d6453fbdd7ebdb4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ddc487ca41cedb7cdea05a96c69de8fecf1f7304bb4151c10d0b56f7f7f5d061", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "4ad8af99cd40647aac27b4c62149d307918a8307ac3d03c9082b085dd9badfe0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "4ad8af99cd40647aac27b4c62149d307918a8307ac3d03c9082b085dd9badfe0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "c74b25dca135954fabb72c636efb7e43eb9f358a1159198739a24d3c9acee8f0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "a5f1c84c246598913fee47537497e7b3afe9301078880dfe29c015c97f04e67e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "3b250f3bc93089980ff59927768207dc6fc790631e9e6424fac235c05f45cb64", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "82d7967b5676462352f3e54e0c393af336e81223139137aab95346776094223e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "477094ddd9091501fa4e11989e45c9836524cbf4412a156000eccd3642e8b5a2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8723f1bd984996f6bd05b5edbdd4f74bdc637964a49b318294d958aa31510777", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "3c6d6a1b6cb741b15f93270f7a6826956c1e7fe272887409d517b1c1b0f7aec1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "27532c5f38a483a5614c1e49c6b6de53dc9cd97d1fa1806f4441173777d0fe65", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "b7c43da4bac8403f404017c063173f6cc9394f83767041fba3198104dedadff1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "6811ef3786acab3c125f52fc091b981ea565fbdd49f27241a19de5d6c5d82f5e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "858e2f72f49547be22590227065da51b3db9e6f4bcc559d80986f6290215b6fc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7b1f9cc39b14f3a5d245ac1114ac25356766937d37d353906689fcbffe4ca8d0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "8a22fb14ea2d19e50dadcf080623e434d98009250f09d848c31603631e530dad", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "a95c8a8b06a9d08e1c7b34e2d7e64b3bdb362c8f571af1e031e8713e66200233", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1d79f95e7c5d14c5a62b64d297986bcf1a60ee4d6f98f9097734cd9e785a826d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "5d1af00249070c7ecc26d35217fb2ab0ff1f839e8b7994f0d4b748f270fee0c2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4cfc8525e9cffd37cd185ac63ad7162421d644dc39c6902d89187d81067f3c44", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7b1f9cc39b14f3a5d245ac1114ac25356766937d37d353906689fcbffe4ca8d0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8723f1bd984996f6bd05b5edbdd4f74bdc637964a49b318294d958aa31510777", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "c74b25dca135954fabb72c636efb7e43eb9f358a1159198739a24d3c9acee8f0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "a8025a0c5003ff1b7a2760bdda408a4c141f58bae91699e92a0522a3781af87b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "3b250f3bc93089980ff59927768207dc6fc790631e9e6424fac235c05f45cb64", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "3138e483bc0f2e582c0ef6f7c780d323dba102b2a9f6db9f1f9e1c1f0e595265", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8adef9ff6bb8cf20e06fb4c458fc550bc17e94c7e5f53e7219da3ac2d9352b93", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8723f1bd984996f6bd05b5edbdd4f74bdc637964a49b318294d958aa31510777", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "cfbbf7ab7a01f297b2ef8f85cb09bbda0fd83f4abc17e1539a645c1530c08cba", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "cfbbf7ab7a01f297b2ef8f85cb09bbda0fd83f4abc17e1539a645c1530c08cba", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "a2327f9a87a0121a399b8b0a4227cce37fa06542e1a8cd090ff0bba00bb4b7bf", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "94154e3d86fa4b06fd005ce8e5d34f11dd05ef0e9b03872876fe697673ee706b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "03f485cc1ea53fa38d93222c79728d610b3f29ba331f69a888ded6ada8c1eed0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "03f485cc1ea53fa38d93222c79728d610b3f29ba331f69a888ded6ada8c1eed0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "88c8932ef54d750bc0fee596d340d3d2e972a3ed2475be77d6ce80ae09c6064b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "88c8932ef54d750bc0fee596d340d3d2e972a3ed2475be77d6ce80ae09c6064b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "087845a3adbc3f490d97802945c2a4102d31990356fc4cced0b3377516291193", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "087845a3adbc3f490d97802945c2a4102d31990356fc4cced0b3377516291193", -"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "795cb9e2c97e96bba9f1c44a962289295bbeb921531ce32b2c1cae1b8457a05c", -"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "795cb9e2c97e96bba9f1c44a962289295bbeb921531ce32b2c1cae1b8457a05c", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "feeef84a1e74033e8665a4d89265e937c2e277606aa882898566e8b020ff3b1d", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "eb54514d86e0112fd09cd30c74ebb06e0c0526b238d52cb4dd87d0f2f661d81a", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "c51062ae24902edc72261c820104c280e44caccd9630bbf08d40cb99eed61c83", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "ece4344a351f81a7e932edbef399c02a8e8531a836ebb4b271f56808355ce885", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a35ae7db33f6352e0533df4e28e5bc447f2c97b15487144fc834eef2ccb27acf", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "e38accd30ba37ed26517debc8a93551fecd9944b7afb58dad6e08776441c76ce", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "9128c8f3ece11aefcac64fb0d3ff358b490868e75287c1578008180ac879f0bf", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "ac29081ff0e9436d13e1cd83ff73907fa3bed1393709720f0cca699fb5a73777", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "dfe3b7c30402288950383a5e5d1d9ef417a3efec3b40d8a58aa76de0599d402f", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "b6d13c877d2dd1e799eda7ab16e23e760be5b4197fef6eb4ffdbebf58eebdda8", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "909d181270a3b0f88a53baf806398dd834f2a876bf12c39ac23bba994c9ecffa", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2e7e440ca75b1482e53b8d5b65a8c9b0c64acd70bc748876fb735b9f649519e1", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "358748d0bd543794591e432ea64ab356c58990c673a488aee5d5858bc34d84eb", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "c5467e7c077c82c5b4931e867d69097f9912097554d449930c1e112d88e42c50", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "0f9a4999dc1c766233530c58e441f28a686e61cfa274e0c73d6849dd607cadbe", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ae9d7d7f371208c74f9d71291fc3950eb7fa1d918cebf05021fe8d782b29c01a", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "098b5da32c78726e377e13cc6b01ccd0f906ed673b0060e707f3b87a5607a70d", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "2c511d26f3df76d9a772246e7e780d939de14a50fd7ea52e91f9546e77f9f383", -"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "9f2d63208ea7ccf264a57fffcaf19f3c36942971f7f865ea5def2b82d5541c72", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "2e169645c2e73193d19645350f2f7a4cf72d94ab3b8f302e6d69f58a4afe44f3", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "58434b1d22c06ad8d695314e248a7aea3f0e7e188be91f30ad99160f36fbd89e", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "0f1f17cf277a11031118a6a845f277ffc949d90fc75631f48b9764aef3737099", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "b387bdc6ed3a8a01478c5de7a1235b10c1feafb6bd0ab1af5ee3dfcb950a3365", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "6c4d67e0256ab14e15ccd3d723395cd1aafd02a8d104e9eb644b2bf7314ca3f6", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "3668e1b1e9b59ddef6aac476a02bdaa3057e36fb6646b170fc27e02b32447dc3", -"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0031ebf3d1f85ac9600100b4f6aba2ac6d944a3164eb05cdc860ce113b6eb733", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8a37daf2353904bc34cb622b2c8b3c2773c34f4d2fa31cdad82dce30c463e23a", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6c8915a1392b9ba8ce9dc98ef8eea44c58f0a2e8514ecad2a6c66e0dcb027951", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ce9d23617e3a4485ac57b5f64960d10698414543eb30329ec1eff5eab71b6d84", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "54e7c93d73283b8525441469ab1913a28762a00d0ffadf1b554c988e443e7415", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "70f9d7b04e7d8bc2608b0dd9e0987cd88fa8686d769e90c47f47f0c46d697011", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "71c7ce7946f2f04c60752c81ce0e42958bb85bcb80fc4b605b207df32c4347bf", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3cb7e0308c8d3965c74ebe177cdb9607d6bdf42e5342d40e5f58ee3960cae693", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c32e6f892859297b09c64c562009f31f9e00ff776ff2e8fc0bbfa423961021ef", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "b203f622b903de356cd4039a6d0a21fdf43b1baf366aa0021f19e492aa0b8b4d", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4de1a87cf18c89b53a2102e7c4381f7b0ac438c8e045edf09c833c7526290240", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2b6fb00720e8d7f5fc1c767828ffd3c6d40283238ff7cd9b74e695c94ef77c7d", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "de241519be8da504c92049502ed20349e96cde52b50f5d34260fca9518de42a6", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "6f9cfaf3411c3f8319a65295801b30504ad7ef459df65bfb8f1edf54e7eba305", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7a0f818fd1e4a26b9210cbec49efe882a769770fd8adfbd8620c6ac6e37655a1", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "434ff1722975e94acc087c80a41bfa848a4a88ec8762331f260f39d41cc0528f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "71c7ce7946f2f04c60752c81ce0e42958bb85bcb80fc4b605b207df32c4347bf", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2af95582dc42448aab09f85c1a1cace6a6d158081444ada1ca213802e3e5f1a7", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "cd0d4bf4f7c59d1222bd24de3400c6e74a4e2278ca888705ce266d66605a847e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "2ac7c4fa95b0753bf96f7610d74eb73e0019b4786af9c818fa87a04cb3870144", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a8f4f16e02e5f4e67b9d9386292ea13390583cc67cd4eef424707d5d8199a106", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9dda356ce680abac4a6a3e1bb947ec611051ed8154b4f7370843b94c4968d92c", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "17db46f4319b63df47720fe27176e7b2209a65fd5dc927f5c9725edc8544b03a", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9f4ee18abb255555c89e3ab730f3af175a552b42a228a1219a73c54cc333ddc3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "df507b0d7126f8d901c248acb535837c2c023640766dea28a28ec08553adda45", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "d1fc2811ed300d5bfe1e0861120cd5adfbaa66761b24ff2e64eb59d7e922e2a8", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5f7bf1ad50a6bde16357bd0c352bbc5d06bb99b0bf87f7f641d330ba83d02373", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f5af46d9e60d47807c2e48bf08a55732ba85bd1fd85a0c108de73a34128f2ab8", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "44b36438f196ea0f6545a1bdc8eb484236b0c2cea5d34210598a971dd3e76d0b", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "70c1ab66695a22ba2e21b52315694b978d6d6a72e2bb7f44e98e7e75fed4b56e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "719b8d9bc16f846aca6fc8376f327ed5d4ae9f91c3b0523015327eed8eda7753", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c4abe19fba491778540404d717396cccc450587e793a5e912ba6a0b0c14b302e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "bcc5b0bc196073b60371715d2a4078d3c9f550a64061660220b8a334ce7c8ec1", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "aff90ed75921e56224957857dd52ff40cd485a0ac10d159db2ac626eb5daea0a", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2bad14c79ca500ea56c4b0c273530a3c0a1aef79121ba465f5b843a097e7de43", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fb0495fe5d2a8286ee77bb4899d4e3c1bc683798199a7c2ac1746f83cc800319", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "db6528bf8d39fc477374acaa211d834e303043794d3d77ebbb06bf44bb906bb2", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "54c8e92452060dedb0caa302fe94ee3c8bd5c61eb6b9d3582529fa124972b130", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b0d1fda56af0c0a5615af153d1f1db719149f527a62352d8e9233a456f54b3ea", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9046ec4b4d33015bad9aedf760b4bec0a427df48981c2eb7688dd4bce53263af", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8311f2bede7536c1437aa5c12480946c359ac25c3a63bba90f907d1c405e95fc", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b43dd2ac68293fafae1e6c4e550fca48b19f54f74cd62969c241b39807e0b60a", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4634dcb25d09583dd08b53944e5fd36cd5e89c7ecd76e269d72e3f84fe0ba4bc", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c5ca632d26f59c68345d6b835b9e124d8d22a6566cfaaf5c30622dde2d28738a", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "55701107a964c496d1f5ed84a5b99176d94c3bedb1387ebadb7707f635cc32de", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "e13918c05fbcc66dd2f5298a0f7c41f949db6c7163369449dda4eac9c3ec33c9", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cbbe6b8328b25190ec6c33f57d0453fc061c537e3db4da453b6f66d9f13c7650", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8e5c4239f52b95c808db82644091bc3e3631f44153a1cd408b8b65fe301bfbf5", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2ff7e359a8dd49215861838ef1c91c4cd194c68bc3699e9f3253159008f6afe5", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "110d596884fcbf9482666220516f255c4718771cce484f6b6e06a7dc2be41e0d", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "d13c4abf8412b229212e4098c079abe6701cae9fedd6938bd5b5b3d889530aa7", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "25905c9baf2044ee5352e6f4383631de6b6473a5f22aa024aaf290af9c3d84e3", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "d731ccbb4caea27257ca32c7d61100a60af84792fb4a3aae63a3c5befc4df82f", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c01b584669cd139b99d41d62a741520037530e21fbd6b0cac4ab34b8d87b1d0f", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "eef1409becf4f8b6d5fe375cf13f2c063a95b134e9389e3c285181af7de3e1b4", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "54ea1879eaa331159e97adfe6b1ccb1d52602f42bba3531acd7d2cdfe29a861d", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "3573cd7a723733000eacd3f44ba62b03fd20e25beb734ab43c10538804e170f2", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "117d4822d99e0d02e278343df79df49af3bcb8abaeedfa023f038fcfaf1cda04", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "54ea1879eaa331159e97adfe6b1ccb1d52602f42bba3531acd7d2cdfe29a861d", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3573cd7a723733000eacd3f44ba62b03fd20e25beb734ab43c10538804e170f2", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "117d4822d99e0d02e278343df79df49af3bcb8abaeedfa023f038fcfaf1cda04", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "2aa9288b92578460f66c2d4f9f2b4d3eb2c5752168d31f0678d1ec06cb432a52", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "c54db6495fd9476369dcfc5792a6e1fa7c0cb75a2c18e88ed9a7f309865a45ee", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "58dbbfe4e90febc8f50ccefc1f59eddfbce65bf70293279daa53430c35f5066e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "fb4fb18ff39bb986f5a9b9cc44cfa87c1265d35c68dfe51e20c30ca1944591d6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8bb7f3867bade9bf47e2ce6f60774a0b0e94caf308811e50595b2b542af6fd26", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9d22d86ac3d2f15115b9e06d8e2972bb0f8a387fc4df3b6cb8a22a4477314b5d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5f289a951430f28a98620df22f50d340937f7fd832cfd9ee95ca10a5f6b95356", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b042b745ef997af5c4d871a11381bcd82c84d52f37d4c72f57644f26bb639bcc", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "38dc8ef8fa2626cef096f16915487af2b53ebcbbb9d98ae19d1000ef198019af", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "b4d4f8b43962a0dd3eb4221b7cbfa59abef91e5070b0c26e54b58534e8f27dd9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "3ef93d4d487af1e0658b8504316e54c1f036bc518ea07b63d2be137a746b0735", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "dec3e2ea4a4dc4c67f0756080cdeae094a29db8239c62dd5a3633d0b90a16c13", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "7ef5f725a7a2ec8435a87c30c422e4cb1a9eb85aabfdcae14420187c526a43bd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f87e3b72b4d5786cd6bce240c7737d51590851f31ad96630a3e6a4c029c04595", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "a55dd3be39266f335fb2db7123894186d00a272981e4da2a6b4cb35c94e3867e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "dfd530265406df734dd030ccc76b917127d4922edf928d1eeb1b5b9cb4989ba2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5498b7b82c650a8ccb11fc97cf20e936e5ed843cd342771e39338ade343b9502", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "ec49f69ee1b47c21512a61d19a560359a107733a20d90ad4dbcc057bd0522d9f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "9de84be3131968200c895e96e1264bac69e998f4ef6bed30cb6239cae0ba2c90", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "739bd36e286c287da621530a62abde21c46449a42c8d02adcd4abc75f552cf85", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "bc9cd3b878412500abf198049afdbd08051772a6ed04e81d6500d32b767a7541", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "bc9cd3b878412500abf198049afdbd08051772a6ed04e81d6500d32b767a7541", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d7c6d6ee5c85d347a65b7e71cc604ff5744c31e5f4ca1ba9191d57efdd83dda0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "46850e17a982b490e40061997911f252d9c5d22289334919788c4aafb5bc0266", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "5f17701d6e2daee8fc262b9a426795b0f411d206ec10b87af68bf1804057d1ba", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8179a91363a5a4ddb77c7f952deaef6c01ab05e66e9298bea101e78266f4cb9d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "55ab15b380c6bcff1cf2b58a92c8a51224afe63f2d2274a98166c2c87cd909e3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a31d37f29205b43f54395d69609c9de1a0ad31a4027df622be4bb06c5fd8f109", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "b42fadb6fa59df81021db494a39453ea8e09c9c41e33927c68bb929cff3a349c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "6082646bcbe5f5980d8bc5636d6495ff5ab816121c9440892012641a3173aa04", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "6377d80b7ed2c61cd1afc8dcb9a44e07de610caf9c180ca05f16ac6e3beadb55", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e20192e08b71e843e78c64dbd95ff71cef21c68a81746e0ed0be560418b54ced", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "8fa5e5eeef94be93a134a23fd6090c79863eae03276c1b9cc66785b1edf4dc73", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "fe1cdb44c29e9c642e9a2f211958a98882af078956febbe75be3de78624682a0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "88b3932f22fea6548e7e92ddafa3f323c5686595ef02f35347a0b29c5bcc944e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "93639e84e2ee145be05cfa455956c7b790714f79b6d39f85ca6461ec9205c0bd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "406a05cfa25ddab489c2f04fb97ec8f2ad9184a74fee4cc629c79dfb367b1ddd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "441f47fe088ab25aa5d866b7c5addf8e917d223eff55ea0c4afba1b712224fbc", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "30c50dd6de7a6e1e66cd9b3a2b6bbe61ea4571647ea94ce36902f9b63e1861cd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "c6008bc0fd059cd13a185331d5caf139e420103fa18c2dfffa303c116347a54f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "ce0fae8ab0d904308185d4b7e95725148fe5e00e0cfe517b1076b7b8d81063ea", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "65241fa6a0325bfedc9aa77a41b8c1be468dafb4aa2aa5f61f70d57cdef3fe75", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "74daec11999062f1864f4cc071b93cddbc896dafb752bc12538d526dacf4dd09", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9ba7903360f0c1b523246ced8fc45107b5d296eea43334b79beebe8b495a7b2d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "9b0b740ecb4e5371f889e7a7481643b933b93adb3dc8a017afedc557157d81b7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "c7fb8d0d78e12e02e1bad0d99cf1d37bbfac8b91d3d7ced53d1ec19bae11571e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "5a55a3ee3e1058ab44c0aab3341d4756c91891684e7e0a67aebaffdebd4ed717", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7c4987e0ce8a7ccdff0727104fb23464e7b99d207cb06870e429f8ea98c3d57e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "88305ccd14e4cfd9feed615b86e89273f1b05bfe3e487eb560d11a38ed2599a6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "6ea8698aa791aeae3440694c9e424b9d60987f1b8e1dd57eeaa83cdae4481ac3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "becc7396547ed9b8fdc964c69f4df1dc5acf479eaa9fb2c1dfa0c9334cf24412", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "b48a34c1f88f8f016678c2af3b5b3710ca570bd1b37690c030881ae5edb8e788", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ac7510611a42222269e728defcc99ae34d69f868491c12963a1c57531fadc6d0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "ac4f58aff217b933e81c8ec9e2ee4189b5c3bc208bb53170dfd5c742999906a1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "a7773fe76c14c2a8036f1df8ee5670315295650add36402c089d7a3e5339df6c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "1e2fab94dccaa90bb6e0a72782a26f8b7302f7930115365b460a4d28fd4e1499", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "f774087af826d8de13e230905f47369c68d049d7e802261825fec21b561c7bcb", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "12a5db9c59fd1f1ead48914b891f0c419029f688ed9de10e20c65ae0be917011", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "5cdff59e8c244aacc9a0537d9ab9dd2b75a2c21c646bc5c17b8f160a0b4fc3a4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "5f17701d6e2daee8fc262b9a426795b0f411d206ec10b87af68bf1804057d1ba", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "eb62eb9c7f7690cc72e087c7f9886860d73e3da8e51fdb462ade5bc4ea59fca0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "cab7b916576d853cbcd5934c410e9b5e43101935bd5670bfed2ba0bf3befa836", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "7982e061c11650d4e08a37df0a3b4c44e9ecdff5d96995d2b6fc249541161f2a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bcadccaa3e6bba7ce314c85a0e6bbe3678093483bed32ccf4091eeb0429a5f27", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "fe1fe2b0316ed78710022e7b833f2ef1ce2ab5e407c52a90d0f5ede55f06ef86", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "c6d6b56181a96a3ec2545cdbb4bc2f1ce17095d0acecf4dcf335c025682f7582", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "aae25da2372c21865dd66c7c14bad462572f42948e1eae6e7a08c1f905888821", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "04823410a63e55bf0104d2872690d598e0ab894098ca1ef6188c82873d319449", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "652144c446465453efcf92d7de54351259c97a52ca8dd0b198fe4f6fd05a55b4", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "c549fcbee679ed387661e69745dbfc02d2947f9758ee093ee5f7d65ea86a68a5", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a9d9aa850e0dc9f499063aab247cb085f0eac146dbf4b87e693916ea588e83e4", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "9ca1f121ca849a7196a8e9a604f9ddbee3429e34887d13ac1ce7920ff61eaae2", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "d7c3a90a3a628aa607c72093055d5eacfca8cf992798d983d380d2349069d7eb", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "b6f555b4c7ed0fcebf8dac50db68effc95c85f14e83a04736295580213c2289c", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8009745b74f61ba31665e3be97f17454699ccd6c9709c427afba12ba8780298b", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "286eb72727e01c820a85a9789002493b8f18e1da7465abbf1ae4d1c89be391c9", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "828cea0ad498570bed961ebed0bdbe3a9fa1f36931fbc04041628f0e632dabe6", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "b885c89be65a174664eb798112d22f649322707af4a473d3b7534b3bed3fc7b9", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d6e42ab30a7ff0c6291c466b43ab14c63285f3bcb7ade7f1c6314600a22cf2bd", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a769e907ed44cb762a522c8a92617f1a5e94bba374586aedfd78d6988121b5b6", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "b8fc121f2d31dd871ced9e0b9242c90b8f27dc0f9d710a205fa935ef2299c051", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "07259da831b9e89f22abda282daf1a7b3035d66930c905f2ac49f731b7d2681a", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "c77cdc27b24abfee82fa901d316942be37c1e0e0f87880720eb68ebf18bed709", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "bb2d1b8d786a762db2d66ecd450fbbc3181ae472e5513a978d23d0616d76356d", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "64bafc5a381f2c8e0c24cdb7a9e4d041466cfb649a1ae76aad14a0efa9dfc5a1", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "c17c61bcab6da52a8a0b990241cb56ece4afca521866b667a187feee69e9e887", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2bd1aa11efab6c1964c902506ab09ac4d9d2ff92609ca3458adad8156f7d8557", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "0083238a7e69614ce48ebb0132f6ecd05b42cd7361f70ee4abfce625bc7cb1ea", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "ef51489aeccafca3a4957c9667d90a6bae8adb6e99eef3d531a98cbe043c1239", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "76e913f8b1aaafab106cb28c28552fcf58dd820b21edeb447685fd1ab917cdc0", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "ed18662dba8f57fce37020dcba58c71ee0b21757b9ac3c202d2961525155dbd8", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8b32689ca556b1f3cca021075d5775b3c92f54a4e005eea594c4ab485930166c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "93c37c6469cf29cd710e9edf572da08a4e0713f1222564608241aff772762874", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "bacd7b5a04530e6a0ab8c9f04f71c3586646c9b953815032f8731ff903e9224d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "5e8b3301f8f9a81ebd3fd1b0417bc51ba9de7c08dcf96fd3a857fa648f53e10a", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "81d77c42b46eaa9bf19afb5231a620153539f45b85dde003b055630fb3e692bc", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "3561d6ee6a4dd833af233963df4e80decc8a358465ffbaee09dda82d6ff880d5", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "2463fada359ae09ea276b723eae8af233bf19ef467932f136b7c7e360f6e3ad5", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6d74260c45ef7e4e19e6ea6eec6f60ea5eb1cb3ba6a4bd8c5f8eb6ea87267334", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "87a9793c714f1e16ff1a27bb8d18691e6e397a6befc0e1d0792dc04c8bf53d19", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "be547fdd1c74dcf2e32c54f90b59e29af34018dd197e65dd08a9ebaf2a147af7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "0c14ea22c1a8b6ec9190792400c7f92bded614e594a51f0ce5f792efcce4c348", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "faeda9f126cd29cda05977614f4b42096301102ee6d3b21bf5b0194eec97b6be", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "4de2ebf746d5697c92f5ea796045a33536c228f40983c9712bc0e22bb8b09e1c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "7b09894a0598eb9d50a60ccc97ee5956045b3a588a2d139fd0881d6b573c9e3f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "7364b5feb6e1edc342bad66dc927056e903842a0b7368a26cd6d15921762c079", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "7d718215eccdbf6d319682b14a14a13d58a6ecac5d3b1a6a3fa83af616848c70", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "58700bdffde8e3d219b5a262dc2eb08309abb0ee6412aabae7deada6a18e0095", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2450317b8a6034bd650139953dbbe692effacfdb8fd912382de8b11c5dc661eb", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "b5dffa4cc5dfbc9690c37440734bd8f6bda1aac4c5ce612f8826e58650febd0a", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "64572fc1b94eec9bfd338fbc3de85bc98fb46a57106e00d4bb4af0cf3fe74d69", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "823d02d4435e6bf60d8242906c4b7fe25ea5b69942eceb934434cc23c0b51067", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "4a618de8320816c337b6b0a591f694b22ff9e0b3b098e27f411df76bce28a60c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "13523bc7aa3dae6cdc7b685cbbc58327ec7c885a55cbeb268d2fab8b47425dda", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "d8942083d8cabc7b473658045c97f43dd6261f085c3c5122a7076b40682b510b", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "91b9409c9a794217f87874021c9cb4d68448613fe572edcb8c9298c38ac77c4c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "7cf7305c8b5682fcae7993fe4a99f8ae4f8ee70df7feb33416d9994d666e5294", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "4fc3dc1cde2339f60b4a0960119ed3b7e87c219b272d5eec1e1393ddad058255", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "7364b5feb6e1edc342bad66dc927056e903842a0b7368a26cd6d15921762c079", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "24b58d626eeb33c79a14bcdcb431dca5545728dd4409d94b00a3c0bd82cd8d57", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "eb8a66360334877d54abbceb1a41e1fa5165bc72fede1ed9a389e9249cbebd85", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f071aa41d9d549e5d442446126784553b1abe6c417bcc6f41f5423d7ed2d567a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aad7979e0d8261ac404b645e5546bbd3630b742b03a4289521db95128c0fe4fe", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "608ee43b09be0bfbd09990a27e4be27145874e2b7a5a2c58608ac9e948d69a0a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "fdb4141b35093c5c5033b5f502a039d73457402d75ef91c99d3eea7a10d4917a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d5911c9b3822088ce402ca5ed210f7280ec3ce2ea2577659068075fc7323a2ef", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7a8e55f5014073c2763d6d25f53360dcfa1d5c5165489b7e8ddf314835239370", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "9435eb54b0a7ed37ffffb3af2aaaae78b808463f22022f767133adbb238a9550", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "4a17020b0b2c77419d8192032a1d3e1f432fed6b719dfcb945283821fe12b764", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "a23893c074619852fbe051d244fe6e5f2941d46a4cdfc61c1feba2873905257e", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "a23893c074619852fbe051d244fe6e5f2941d46a4cdfc61c1feba2873905257e", -"T3T1_fr_test_basic.py::test_capabilities": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_basic.py::test_device_id_different": "e65e22ed008ff3ce622e3a12f9e4312ee11b8895cc921b4c22e324f787437b37", -"T3T1_fr_test_basic.py::test_device_id_same": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_basic.py::test_features": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_basic.py::test_ping": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_busy_state.py::test_busy_expiry": "50a4e60edf5c86102cbfcb3d7cbae52a8fb71d95c0724480abaf0fef94fbb50f", -"T3T1_fr_test_busy_state.py::test_busy_state": "563ec4d3db797cfb24d1df9dd1618ca6f5491164a30bdf6a2600d55c0cead922", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "3a7277215930e245500e8cb494b6b5f832de05e5bfd885cc408b0fc2fd8664d5", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "3a7277215930e245500e8cb494b6b5f832de05e5bfd885cc408b0fc2fd8664d5", -"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "932a23f20bd4a4630b866de0f3fe358521f9fa8a8301cf63b3111aeec9f589b0", -"T3T1_fr_test_debuglink.py::test_softlock_instability": "e7ec6dc02861876dfc313bca6371e2ca8ebb17a83955549756fee12db97305a5", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "198a9ba1e68ab93aecc30fb76c064b495296276a2845c07eff598a1927e93b9c", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_language.py::test_error_invalid_data_hash": "a76f775a354f701c8f195e3a5c239991829e4c0cd06dc1e19ad4e7cec95a093e", -"T3T1_fr_test_language.py::test_error_invalid_data_length": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", -"T3T1_fr_test_language.py::test_error_invalid_header_magic": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", -"T3T1_fr_test_language.py::test_error_invalid_signature": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", -"T3T1_fr_test_language.py::test_error_too_long": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", -"T3T1_fr_test_language.py::test_error_version_mismatch": "471bc4fb10264a9a4467a8174741c0d6a18e69ebc69b72f73c22fac209228b70", -"T3T1_fr_test_language.py::test_full_language_change[cs]": "0d1f8a8177505d1015732d2e6130f2d6be6e2e35aa63a3561112bda529a08134", -"T3T1_fr_test_language.py::test_full_language_change[de]": "4479785a4309a6af5fe999360863844364a4eb0f28ceac56037235ad1e5f310f", -"T3T1_fr_test_language.py::test_full_language_change[en]": "20c465087983c0bfcbfcc947d587b50b7bf68e7986d3a0dcdffdf23c83a94ed1", -"T3T1_fr_test_language.py::test_full_language_change[es]": "b16a607922fbf147a4c5fced01321668b0584b7f54e7dc79214dac45dfd19af7", -"T3T1_fr_test_language.py::test_full_language_change[fr]": "7d9905ab40ca7e232201051f18ebfeaa7746a3ffa2bd311e2ff35dcedfb53e83", -"T3T1_fr_test_language.py::test_header_trailing_data": "e3235e63f4ff06f11034bb5bd4f55db0a48d4581f7d06dfa7a1d7a9b8db99c4b", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "f6baec0b96c3f66784533ee5ef1203d4910b75fe9b9cacc6e2db6868b03d5a27", -"T3T1_fr_test_language.py::test_reject_update": "188210331d8d22698ae2ab7661b0e969b77e0d2c5be960201dc8dcde65041699", -"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "e3cbd04bd3992fc9e4ee99c1bd1fd4587300084364f26cfcb2dd447b40663451", -"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "e3cbd04bd3992fc9e4ee99c1bd1fd4587300084364f26cfcb2dd447b40663451", -"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "27ef2500cbb8ea20552b18dc015c6050117e2b0f74723b742e7ec7ae167f174e", -"T3T1_fr_test_language.py::test_switch_from_english[None]": "c6276143ad159588903746e695f280484141059e35274fdd5590c079027dae73", -"T3T1_fr_test_language.py::test_switch_from_english[True]": "c6276143ad159588903746e695f280484141059e35274fdd5590c079027dae73", -"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "1db44ef119cc63d8a5789bef3f6fcaa28bd7df643fdd8bf79107b1812f003c49", -"T3T1_fr_test_language.py::test_switch_language": "85e1519f380fa7dd76a199ba7e20c79da58307b258544ff209f79acd439f0933", -"T3T1_fr_test_language.py::test_translations_renders_on_screen": "a47b3657372377f67e5caaf4a7230f2924e58afac3bbf5e68862c1af69163182", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "436c942f681c639659dff1d87726e9952442c6a9e1b0dfa095d55c05cd2e0bd1", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "780739c73205e7391bfe9ff96ba222eee839768bc6afc084b5a5297d7f03141d", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "64629377498ab734208a32bc31a777b8800a6f272be35067fba8e8b579088761", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e0c10287433994fcee3a87bf0801d56ce66cbaab924dbe96318c84ce54a8aa8c", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "b2dd68e52692035c5c0996ee85730d10973c39f76bef93c024e282b23761018a", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "d307564377f94703e22fc02ab1498e97cbc5e2bfb71f7b88f00a2cce14f9a9a2", -"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "d3bb8edb64d7038e21484cbb7379340faf16451be1adc3ce098d5d3254230580", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "23eb7379b99543a997f442b8694dc027572463ee00bd8f4ecf2204743e0cfc8e", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "5d99cf05e141d1d66be8bc05f7e889ea660053e161381754a45c7f7243c69ff9", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4007a436e18701aca6a7737d3b004fc69934bda8e65053d492f20a1e21892338", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "cf4cd7db63d330e1fbd92bbf18fceef4822d19d03d3bf25019a8ef33305fce76", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f06709ea6e043921595de3d7e37bcb600ab24b8e7cde4d12ee62a1e42fb5d12d", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "770bf5684f527d834085009148c8219b805dc12d0003f7870b4fa9aed784762d", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b75bb4a8a9503fdc37a2bc91fe196d1b18c59b02cd4b6b2ee65573d92ef0dae5", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "3e81f371ed47389dd3c9d6b3f82d84ab2d4fe323a662dff55c83aa3f3168ceb1", -"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "238a85409cb204a19d34f0c1288075f9b14a35c63908ed74637a35aeca064475", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "4541c52f9b734a9984da48cbeb25ea266760ab43d4b4f93f6aa18086fffe71a8", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "548131f0206007684e9fb938a5469acdd4a9c242d588696aa301b264f5d328c6", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "047ba64c10e41b6cfa03ddc3978940be1eb2e39a0fbd9db443254ca674c78924", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "90c43a3c9203615ff59d354105613d27fdb52dd1af968f20b1e7a8adb1489ae7", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "d2f3523790b2f81f7641b3d0a454c5868d18cd56c1ff33279caaec9f36bbd7d6", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "fe344e320d9bf95923f59dd2901805fb1bf94dd13f201d04bdef760c0c49b7d5", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "b055fdb057bb851be0b9842c7224ed571cce19187a1fe8152618e1ce21a56bd3", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "1b5da29d470ff250403e22c32dc7c72d939ea9131c3fe257ad3b2e166eaafeac", -"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "7f940b682ff03e9ebad797ed5546f576529295960a8c700f964bd881e0e55e76", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "cf379dd9e6ebe635db5b3f6f1cbd9bc0e2a81fc29879cf59d6574ca38ea6849f", -"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "86a80d9daf6b1394691c00e85e71d4fabffd737e84287cace1ce273adc50df35", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "9023b19c028b543f5a13dab8bf53ef5fdc198a2dfc2025abda53f0485d0f58b6", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "e9e04ac84d6c617ab8b2276de632c36259a9c10076db4ea52d6c65e9aaf5e7cf", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "4890a4640d0ccf9c396d4dc864d9f492dff7f92866e903f57d1df8e641c383bf", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "e9e04ac84d6c617ab8b2276de632c36259a9c10076db4ea52d6c65e9aaf5e7cf", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "e9e04ac84d6c617ab8b2276de632c36259a9c10076db4ea52d6c65e9aaf5e7cf", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "176d86ba233acb6577f7b27c76dc46628b8a5d717bfa690c5896b12740c017e8", -"T3T1_fr_test_msg_ping.py::test_ping": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "3b00810433dbae44f2090a178f71434f3cc1ef79dacec4ddc947366996ac1d7f", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "d328e030acef43ad90a4aa373b9bc5dfeeec50f39f0a30e0852615f70cd8e67a", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "bb2cde812e5fb5ec92620422ccb6340d3017f33050fe06fa85e9c7f002f3f1f5", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "89e896d8116c823bdd8d6be6cc6d28ec744308f497009cd3dd15102966ac5a65", -"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "e65e22ed008ff3ce622e3a12f9e4312ee11b8895cc921b4c22e324f787437b37", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "249126dc934c739fba96069923d7affcf98c3fe0015316ee8b7f877225c600f4", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "249126dc934c739fba96069923d7affcf98c3fe0015316ee8b7f877225c600f4", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "5ba577cc62f116627d8bd2943f0bd1f2064137c1e13e4f5a7b419dc98219f388", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5ba577cc62f116627d8bd2943f0bd1f2064137c1e13e4f5a7b419dc98219f388", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5ba577cc62f116627d8bd2943f0bd1f2064137c1e13e4f5a7b419dc98219f388", -"T3T1_fr_test_pin.py::test_correct_pin": "7e5dc03033417fdda38a941949b6ae283c7cb70964c04feea44153bd163cf834", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "ce917a2fd01a017c3dad8fe6b802f4803d7f7109959916df8de5bd2b0c1f4d1c", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "6f7037e3d1da746e7ef0ebcd693d5dafa66e533d1a441a4c41f0521b24ff22c1", -"T3T1_fr_test_pin.py::test_no_protection": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "31920962e8fc2a4383f80805ca5452be8e42eaba211a32b2c4dcc411d460982b", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "c4acb5b5ec6a9fa1deab2ea65333e03ce6b75e74053da757d0fbd5cdc985bfd1", -"T3T1_fr_test_protection_levels.py::test_get_address": "c1db32209790b00569ff43e14767182e3ab3d942a4a747e7137d6a1dedbc6146", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "de2ef4f4e129acfa32916fd4693c016fb4338c826b0684c6671a2c6aad4290b8", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "c1db32209790b00569ff43e14767182e3ab3d942a4a747e7137d6a1dedbc6146", -"T3T1_fr_test_protection_levels.py::test_initialize": "35fa2a2fcb6114d8f6b6381bcc5f0dff46e35da7e68d95b4374ca5261877eb41", -"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "1fbb5784d1c4367e93f091c67a9390d644bed47c904bcf285fda0f85a72b4dd5", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "b80ffe05278531958b12989aac8547421b2165b95d8c51466f8de7e63d7a2672", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "94cf2c0d6cfd7aa9d6cffa99e75817e7bfe367ac648f581d5dcd8c9fbffa8122", -"T3T1_fr_test_protection_levels.py::test_ping": "c720a08f98bd1e376af61329b36a359c6b017bcf7a97006f7a5de3aa4fcb3cba", -"T3T1_fr_test_protection_levels.py::test_sign_message": "8708d568120deade9ca5c5eeada6afbca38ccea643bddc080d84681df371830c", -"T3T1_fr_test_protection_levels.py::test_signtx": "53fe801b965b27cf752831f91de57a262bc744057e6f830e4f5039a217d795ae", -"T3T1_fr_test_protection_levels.py::test_unlocked": "a9888f03963112135ed5ff1dbbf90b75cfbccdef1e687168cc1150cb7c1e6516", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "449d2b8af3f5cb9606b7eca7094c19ca21f84ae0d32963c4708b7003553f22cd", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "a89487cfe5a64aa94de52d34f7ad09e13d0d68f460a4f2b9ff84476ee35540e2", -"T3T1_fr_test_sdcard.py::test_sd_format": "406648d849eff533f8e3651d10c7e31ea11683f01f7bbcf9b706295ecb57eeaf", -"T3T1_fr_test_sdcard.py::test_sd_no_format": "42185dd467f9daae884f7d3e78bb9f100d0fb9d6411d3f5ea7839676d63847ee", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "a39a273dc42c4b69e020de26f7860507511cb8f99036bd609ee6728e9b2569ec", -"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_session.py::test_clear_session": "66cd96df9bef70af712450eaca6c13bac8e1f85356fbd4681e94430e1f56563e", -"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_session.py::test_derive_cardano_running_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_session.py::test_end_session": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_session.py::test_end_session_only_current": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_session.py::test_session_recycling": "5ba577cc62f116627d8bd2943f0bd1f2064137c1e13e4f5a7b419dc98219f388", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "6f9aa650ffc11b02895641a9dc62bf99b13aa2b1e3e8639cea66f5e62655d6f5", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "52e05def3afdbcd2c5ff4fba40b646b365707eac71b69953432352a8c3aadc14", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "462fe545892dd506b9bf63f955372f7092305d52fdc4475c9f639b13fe819cdf", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "577adfed1fe3faff1964ac391c2f8a2558a7657af02d3730b2b7a07ffb4eae00", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "40e07e176484208e4a5535a1966dc0001bd844087588d7f8a5a5fb50c1d402ca", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "b24d1b72fc89ba03d097df9a15cbf68fa6a2de21448fd1bbad5a2798c8f45056", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "b2e0fb33b8869647bd1376cb9b4c4a1d78c40d92b573233282017513fe35ecb9", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1fbb5784d1c4367e93f091c67a9390d644bed47c904bcf285fda0f85a72b4dd5", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "153857c23301e819b6bdbcba1687634bae98d7aa14b28866948644785d410f82", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "953e4d3df120d598361f6e260191966315f452b7fcf00d06abcd1e420654428a", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "4fc7bacdb18f29394a5094080523a1ad52a534b82786fe9e6b3e2d6c7f8d88f1", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "43af231fae30fa95a5d69ed81ecea21b2cac20c82d9c33d540c1330b122f4b0c", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "6b492360f624b8d5447ebc3312d4096dd70d5a053dd8f03426c027ac045ac818", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "7db34af0b39d6eca4dbb70b3f32a85377588dba8b8f708b4d9af4feff34feea6", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "fc933260419f5bd8e9bca61701b89d21dcf9aa50951d743c743775c8a4950408", -"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "30c754673db2c83455b0d7b94fecf893b6fbd38637f7cc115d5b49478244dbd2", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "ffbb7892182cef01c08f8c0ca617dad1a14637ec07afc7dedda8ad8d5eafa7f9", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "7a1d88cb1eaf9447ec02eb52b20371ca0de483ffa63abc758ccbb63bac4985c8", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "058f50a0b4c428921bb78ef4f309a9a4d90111794d12b13f1697cf74387c4398", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "37f666d6737d49bc68d5aca78a96f124616d05c0d16c4e2bfd3bb8fbd93d2b18", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6737a751cf112afba82c711c2634ba906938d618d5107c445cf8b59a1413592a", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "3315290b7d1707a91715ed217923c7dd9e8fa2cdaa4557cfeed84a7e92cd0130", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "2268c91696a04bd06df97e485b0655d55b7ca2fa0506e247952e987550d473a0", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "91cb495dd4f663a8be0edbe129056dfc6a809887a95fc23c9c542f9c9ee0ecd5", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "56600665f99f7caa4ba1dc1e9d26db7256b7562e0d42f047272706f6f1470919", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e8ddf8d8f86b130f9d6b9407f21642055050831d29a7e48b0decbaddafb731f7", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "582bff38c89c08e5480f64d652e8d4aaaad105274b89991fc52da34286c79411", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e53649001168d65814916806848247ccff4aaa43d7a12f2774636bd073ff08c5", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "13faabbd7e77ee33e0819d58b61a10210c14d77f492e397a4c93e71254e61ddb", -"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "a845d85e04e8f0f02cf7cfed2c20f798574d2e9640e0e2d7ed8198ef46f75127", -"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "b7c29e3fe7bae709772ec2cd6aace64b4288968855eba9c5e1fdc3f09b220532", -"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "01aa40e086023a858170b41dc9f7ed3a3fabddcaed094b53a77010f60a8d911e", -"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "1dd26a492b13a1d134e7dc1ff012c70bf72d78222819d5abd5118fad2a8077c4", -"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a950f5fc28724a9a3ecb87fa686bfb18fe24b7979164ff89d4c2c19c5a1b8d6f", -"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "56bfb9a79325c89289e3811511b54adb6d0dcc1f47c4775fd5d29c22302bc97b", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "dfc668c3decd704e20321b025358de0abe314e8dec0d0bbe5ff88e78d28aa3bc", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "65c7b92069009f67f187e6df2bf5b4339a6bd751993e41460d5b1b8eed8f467b", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "46eeac5ac625932b336eac6040733200b9d22851f7a54fc7c86934bac3d88a3e", -"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "06d31a7b304a08ed52661c73c64b808808951d4162d81d3b36f7e57aeae2ba00", -"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "53a0a1fed6bd81a8a09d31ddf2a630b0ac1ea456482f412498afe4ce4411dc06" +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "989b953b806cac90b693da6f65160603ca473b6e5d6490ec43111615e7df42a3", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "f98ce7d0c63b8986dbecb312a2b2b4327ef46cfebf8a11ff159049b655555066", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "9dc8b3921727e97604d587bdeb9ca7b2597ddacf2800bd3ec1758d2a5441ceab", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "ecd00f6ab6431a29cf1e06fca035b0e6c0d291a718ab9e696b20ea2e9cbc0276", +"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "4f28cff9f6cc0fb762dc39ec4b80bb1c55a9de2ccdf9923e4c723cd64989b04e", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "bcbfed93d684ac6a75d873e27a1226de4d220088d654381ddb657c6ca3652aa2", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e67d013cc0d622c095e1b4b7c2ede2aafecf158522ef343cbb7b07fbeb55dbd8", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1f3179cb3b763c7338267ff043c00ff4e7cf86d92b155a4c4c80bf651af58464", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "bcbfed93d684ac6a75d873e27a1226de4d220088d654381ddb657c6ca3652aa2", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e67d013cc0d622c095e1b4b7c2ede2aafecf158522ef343cbb7b07fbeb55dbd8", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "1f3179cb3b763c7338267ff043c00ff4e7cf86d92b155a4c4c80bf651af58464", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "288c2a4e389426245ebf1d06c8a086b2ee174812635ab0f72142ae4a4f8f58ae", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b9ebf93f0f5aa6f8a8836232a99de25e3792f3ac01615fdbc7578d52aa1d985d", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "c2411dc8d00debc4890c23a8b80de822edf68689928c7016a62480ac28c9cacd", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "19bed66f9dff1dffa50aac89f76f626e154a7a7239c22a594e59c9852b23338a", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "93edecb8fd7a77aa6989edb452c967d5898fe3c80c828b698d568ca33a724c9a", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "93edecb8fd7a77aa6989edb452c967d5898fe3c80c828b698d568ca33a724c9a", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "d182c7ba98d021d6d3ecc0f52647f5fa10b1314ee53479207a541ea2bcc19d44", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "7819228f015525f7ec3c2cc5fe69baca0d9fe40d53bcf6a1d146ddcd97d14bb4", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ae96c88206306c0e5faf53af92fd3a088fecd7da88102df7bcc42896dee0c8e4", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "951295a89368409ee40f1c368eb27fa28cccd6a9a02e52307c29d3eee2de6536", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "951295a89368409ee40f1c368eb27fa28cccd6a9a02e52307c29d3eee2de6536", +"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "4bbbcaa51686b563c67290e030ba592f96cc52bdeb67a8484f1b2b718f58b8c6", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "4bbbcaa51686b563c67290e030ba592f96cc52bdeb67a8484f1b2b718f58b8c6", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "77874c36c93618808b173c7c8e438a572dd6b090b50f7b79df7a55e4d0908571", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b40151bb84ae6696cdded5c300e2d0a6dc2dbccb0a5d97bc518a2b0b3424200b", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f0ab55eb2f1c7b341cfdc660e91983b19bf18c8129ef03e48c975d18e987e1bc", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "680469daaecdb022097470947a0c17f537cdc1394457e935558b9849ee1a80a0", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6d49e9b9df9c11641f6e7f5c37ec541fb41b38603b8dbe144aaf584d8746948d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "ae93d107ddbfaf4b3af0b42f3d71fb214195c42508213b48c0ad03bb4fe1e63a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "fd5ce4547ea206a0b37b76fc9add5f93b028df9c7fa082fc57a184af9b0274ef", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0f2788ff23bd1498071c3f9608ff412fbb13d07c09cc6b8717de47ec339ff2c7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d2a6144f351c8dc8d9497dabd0964b86c9a6b3b510cde51fd50cfb0c3a64bca8", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "17fefc57e167c60e72b1f2a1301132ab9c9481fe783cc3e5636ca66c700c26a0", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "3d48532473c3c735c4a81c6f18bb26481b590840e868a39f45994f4c34c15374", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "941467ee852a1fbc4b603575ba24b46ffa69661b1ecf2d6e07c5b445b2371c67", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e1f3ee512049a4c18bb983ab782f4c369da6e7335a3af693990a6c5f5bd2f1e3", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "8de97cc97cda382df1d815606d044baa6fe02969e1b9be11b61f3376469cd4e8", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "83b45fcb8bd9447ed0f13c3c2f96706a95d994f9233b50ed848aa58aebbdb5f1", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "03c776192a692b649aea5336e9131f96e46fe1566430917ac8498badf2735eb6", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "32fc9184bb513382b879c30107ab8c8fa9ca639954f1e57151636a1aa98eff9a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "db72402e690b943e9ecc1fce5ef1edcec496b73e7cd483798e58b4a34963f297", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "0565a3f9f8477e9ffc75dcfc2cd2615c8c093af44c764aa1c71c80d1c608ec7c", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "64521ba2a9fab185ea0de33988a813c2effbc1f52a3957e225b0c728a22157d3", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "13d37153108da3bb9804d9d5116e48df718bd7b1158930a0dc0f0987fcea1944", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "4f127a63843d2f719ff4a01a1f37b232e7c970b6c742ee2ac8007d824986c835", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "847df24b3937b7f135385bcde1eda98fb97ad770873ddc1047fefaa0dbeed608", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "ae93d107ddbfaf4b3af0b42f3d71fb214195c42508213b48c0ad03bb4fe1e63a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "fd5ce4547ea206a0b37b76fc9add5f93b028df9c7fa082fc57a184af9b0274ef", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "0f2788ff23bd1498071c3f9608ff412fbb13d07c09cc6b8717de47ec339ff2c7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d2a6144f351c8dc8d9497dabd0964b86c9a6b3b510cde51fd50cfb0c3a64bca8", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "17fefc57e167c60e72b1f2a1301132ab9c9481fe783cc3e5636ca66c700c26a0", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "3d48532473c3c735c4a81c6f18bb26481b590840e868a39f45994f4c34c15374", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "941467ee852a1fbc4b603575ba24b46ffa69661b1ecf2d6e07c5b445b2371c67", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e1f3ee512049a4c18bb983ab782f4c369da6e7335a3af693990a6c5f5bd2f1e3", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "8de97cc97cda382df1d815606d044baa6fe02969e1b9be11b61f3376469cd4e8", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "83b45fcb8bd9447ed0f13c3c2f96706a95d994f9233b50ed848aa58aebbdb5f1", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "03c776192a692b649aea5336e9131f96e46fe1566430917ac8498badf2735eb6", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "32fc9184bb513382b879c30107ab8c8fa9ca639954f1e57151636a1aa98eff9a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "db72402e690b943e9ecc1fce5ef1edcec496b73e7cd483798e58b4a34963f297", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "0565a3f9f8477e9ffc75dcfc2cd2615c8c093af44c764aa1c71c80d1c608ec7c", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "64521ba2a9fab185ea0de33988a813c2effbc1f52a3957e225b0c728a22157d3", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "13d37153108da3bb9804d9d5116e48df718bd7b1158930a0dc0f0987fcea1944", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "4f127a63843d2f719ff4a01a1f37b232e7c970b6c742ee2ac8007d824986c835", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "847df24b3937b7f135385bcde1eda98fb97ad770873ddc1047fefaa0dbeed608", +"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "eda8f648a3930e834f91327f29a2dfec346a58c8b3bbcf4474cc185617caee5f", +"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "380a50ce13a7988cb1efa4927e38aa1e6d48ded76a60b531c047f05f42c7b756", +"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "eefb9e1e138fd98a4500c5fc3d78177adc3202d4012d91b4e6bee568e4aea0d3", +"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "cc51cc67755ef71510ccf0992a85553b0d3a9360cd248bdd2b4fb93dbc3abb9f", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ac5d665726e000b07386db17e3273ff8d795a987727ef77cb198461f5f10983f", +"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "c9a1b13155d012323ed84502fd53b17330c4bbfcd5e40fbf4265a4a0e89ae3ab", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "7ee571d11858d4d2007174f2ed563696166c813c93367be88dfbf14f2d12bf77", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1475ed924aeaa8dc25115d1bf9eda76c4d6efdf172db97be0b5057ac519d8947", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "18d32fbe6558bd6e851bc971548eeb8877570ba0da079dc50ebc76ff4c8668d2", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "2edb89a3e4404214fb25efca3e0d4944a489583456e1d3fd5500d8dfb305428b", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "fc0181e8cbc9a445b62500ae5b21563b7c25d4cc1f64284de167415e2be8181b", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "a3c576fb8508d5919837d3dd43febe9794f86dda99daa5a7bba288375417e386", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "6489a52be4b190289105f49ecd86426ea1927171b6b4b0c716614aff5c88bbfa", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "539bc5898a308f9e407c9df046f57a4b2d9be55a8d8c91833f82dae34331a089", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "e20067d02d4af219774fd6464aac4d4eea6cfb1fcc6fc8a76267cce588dc019c", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "2b7241ecdc36352307ee7fde8bf41866de01c87f1bb0dfe1d8940df39aa7d571", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "66810c8d2b598250f2a232c0a68526c0b3efa77ff1252d2690847d3aa5065be8", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "e7f35bb2de7ccac7e5d0c9b44cd44baa100f9d9598f8117393a39007c1fd6448", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "aed0e1e7acd1497bb0a54078ab44501c10fcbadc1333f0d868471c1477238f6a", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "550ae63c46b45fcbfd1b0721fcea85fdd95ed04aabfcdebecf9b35adebff7197", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "843938dc18786e52b274f0f3dc530c78d7c77b801de09c310b95e775f924fd30", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "bffbfb9bed7fa401bb0894f1a2039c88985589351e8cdec99b3958b317cb5360", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "3b1c13f6790c457835dcffd774372d32e1d2fcab3d3f985700785224ee88676b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "cffcbb6aa6305815db8c41ed97c2dfce5fab3bb0fae60d5a37f3c30ccb3abe1b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "23935f07bc71439f9242cc3eda42587c98c4df2d2e1c57c6d92c725aec76cbf0", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "0b53e9d4d9929c706da5b4cf53225161343f2a1607e0b702b5b4d2e61b2ac86a", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "e142b18c1eba5854f2bf68b59a3e92fb734ed95071431a5f9b7eca91b068167c", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "eea7bb3081a22e93d3e0e02cd0f34e2ba3cc2b5df4a1a9e82ccdef9c7879a17e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "56b6422a3de28a1df28aef69a0ae89e7dcba80dc775357f3414332ac28e8f0ea", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1c6e72a769f52f927bf5d5891680ea6c984626a5ddac0aee91102fac30fc6638", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1c6e72a769f52f927bf5d5891680ea6c984626a5ddac0aee91102fac30fc6638", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "e52d7c01b424f36557c5165f65cf593b3a0e7f83ab6a3ce781141f612ba2b9ed", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "f619ae3793faa223e3923359fddfc226046e59a85cef562604eb8fe1782b2612", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e5b219143abd74d4b1aac4da986f0e224648a18d2a1b7ae5aa296feb4dc0849b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "bc014cb3f8dc12802fdedb0ec3319418a29ae16f65416ed93ec2a40b0afa4c17", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "086a9c0ee5d872097ac1a89f2777cca217378c79824aa662901779ee7a1a3a45", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "a42261947f52a57b30ffd95ac4624ae78baaeaf4a446fec0db498d71387159d0", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "be209caf605283c9407a5220f296f2491967a8d87e9929598bee0e1052112c57", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "663a292b8b5c373d69f563a913fa8fb337bae886dfccfa54efcffb83a3d58f1f", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "bb1032ddf2fe4836f1fade41b6405f370f63ab38a607ac6f037e0dd98a8cbbd3", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "f007abc42bf75f914438abdbeb78aae2b352d552c5780c0dedd8e2e63a2468de", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6d100ea4acac896cd30adc91e112d891377018ee77895c36966f9b64486fcfa3", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "b066495152052b0e4fa7d1c2b2d64cdf2547345e1d78ca059e267596e6cb4268", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "22a5cfca4a9170e1b750accb6d78cf5b45ec28cdb0795f7f6ae09c91d4585cf2", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "b32aff8c618fc87a376a90745aef7af1695de98f27b8695dbffeb4752b2db7d2", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "fd5ce4547ea206a0b37b76fc9add5f93b028df9c7fa082fc57a184af9b0274ef", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ed779a110c649a575e88bd12d1cf6f6b8425d5038a62ea5d293e8d7320d1fbfb", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "d9de757e7cd20578d8c5a99f095c923299e99e8030fa0e30f4f87aea5080ca16", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "3f4ae96d142a4502fcc9ee7a880871fbcbf4e093150ca192337f1c4721919142", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "2e1e070ccd3825813c012c7f5fdb071e36e9dddc49bbaf883fde65be7522d59b", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "577b587db1a694506521bfe50c543aba9dec50c57b7c99f4335c5ffa41664636", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "3ea2b8e66fe250d7a0283c3195bc10635893a817ea123db0035453706b848d19", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "b08be9883fe9b01384d12a55bd3047bd72f558f21326e91dd2e8d41d966c68c5", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "84ee7fed57edbc251f8ee6b91c860c0ddf51ada2cac20ffb5bf1863943f09740", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "03c776192a692b649aea5336e9131f96e46fe1566430917ac8498badf2735eb6", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "f2cd938768e301d0443846cfc231d133eba5a52380a8c8e92b832a9dd1c267a0", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_grs.py::test_legacy": "3fd83ddf6ab229802849155b57604b042920fbe74af7867b267041f69575ec57", +"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "12726f38e8a7898db7f6e0c52026291cf25e9c7e309b3ca7d5689b077512a71c", +"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "9c6b13eca2b51c0fd88ee664729073c69533531038e5b72214b6e16c215034ef", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "81dbe29b67b6e941871917b906d15f9c7f3932c49a9b622077d0590d31bec366", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "09afe1638112cf860650158f6a182c9579481478c60cc197c088504defede710", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "b46c9319c90afd5535979f71858d12709af210791ec8389f2c928388234b8e92", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "b2eadb590be5ba7ddfd6401f8d3575e5f6d680b7ac5922a2e09f3d498eff215f", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "dff879911366460431b97a4beb32f749bce4cc7ab897cb09b4e088d6e4a9554b", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "87754cfbe2762be145e03ef9798438ec22b39a36cc16cfa44d142c8cca7a93ab", +"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "a4cb8f8fcbd2229591d88ef4094bc6271406275c468480146c2d5cafad377989", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "185370f405fb6cfe3d2b6edbe4d134a646bdbafefc53dd51cab18d12385e7070", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "45c2e645407c8d51868864bed5cb7ddb8d9625b84e925e86044b7718d73fc630", +"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "62ad26cc87ab9d1f835fb0a09ef320f5d152243332be3cd81263960aca146e29", +"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "4352889f8ef746e285f1030c46b97c70f9ddfb7677eb6b30ba08e3917719cc00", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "6feff1d941778819210ae3bdb9c55ee220d059ee0d5f55496aed32416dc005b4", +"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "48076132d2d31a67dbd79ff7188a099b6b6002edbb9d15770f765c4056057bdc", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "66b9ee775f7c704adc5a8c11099daa12e2904330c08c11bf53bf5cff75f529bc", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "277aa633661bf7d96acb33ed3f14bfbcf1f896aa37c0b8c11baae5c02068d9b6", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "157753c12e7f44fba15b0987812a154832cb86c21f05f90701b8844e88d9c33b", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "e781a41a154e8386ed291e4ace5415486f952d408e6a81216fae72a709c034a3", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "101678b43d96fc6b252301d469067165291f49f11da4a4b87a212e2db8994b6f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "c528fc02e14ec1c8a012c19374b6c00a699429d57f844a44754cb975ff0c84e1", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "013c8ef0738bf4d292fac2bb109cd4c60116e4c163ceb75430badf4a587ca32d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "90e94d2620e56ca05fae39cc3558332476e8ebc7bfa62085161115ec45c74c9c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "87d7903fa45ef842a4e3a99ead808c97dfd9814420564749f1a5943455fc4c27", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "6e4ced50785749d1243dda129bf32cb20ff100f42ef882b1dfec0df517529250", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "1a2c9bcfc1ccc8dbddd5147d54b5759f50008619d52d409a0d169fd61cfbba07", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "108fe8e1cc28d8f14b2c70506162d51bb969347873f6a60f0abf1b8672d4bb0c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "6b074bc392963ccac18dd3215fd37d7d4f5600afc92c88ab238de75f6d4cf4b5", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "e948a745c53569ab7f53cd63de0180ed4c467a5f9d4477fa730660cb8f582af7", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "46415a5ab31404de7d413e0b96fdd23a5fb548a294fb5e1653c2434e54deddc6", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "4dd854656bd3f2b62bee0279ba2a0794e2386bbebd53fff9afefd0c4aaba58fb", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "4e0a7995149eb606de9179a11822c013b22833c6895551b86197a8398ef08849", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "78acc5ace6be20e0a8d1692958b753f2f70ddb24fc0e3f241eb77c6b21f76ea8", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "18828ee98120b2c7f700366ca29f40a54dded0c0b9948516cecea0bc81f9e0f8", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "07cf7250b957f2e3f9afaa56ef1dc4c1d6392696e80f0ad84353289fb99ee83e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9b5063daa05e45e69720c6ececbb9b1383d7c8d4c3baf7a1c8a21cc6448cbcc4", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "8c565bb41ceaded4d050759e8bf3befd6e010bbedd9a0f6345e148e919f17593", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "0c4628e7449518b9ab3f6d316a0a0f6e59446e7ddbf5c8ccce9e89dc3487812b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "6a0a1893a9594cdb25e14baca852492c3cfa6dc1a42878b1c5a83926f94748ae", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "3778b6de5f666552a73ee5848bacb55bd141bf86734420a1c0874faac3dac870", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "1c56906d3fdc73505a4cf79b86bf3e84a077964c15a490312a2863d3f504391a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "af9e22420a1f884954a1ba9dae8813cb78873e7489f3ebbe7c967a38a106b252", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "ddaa265781f44cc486bebf9ebd210dc1e10571caecda184f8d7d65ece6e5535c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "5a83eef923ed23de74f0898db58ae0738ecbaf959bc65dc0feb19c86bc20e428", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "15ffb72694957dc808278af09f2fd0083f3b9a037c422405eeb22c225e1d03dc", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "04d0ebc1bce4e36888f51c307aa9206df56686fdba06052e026b227418b4f9e5", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "12ea98e77ba8e5cf30c5634ec1157c3f1f65bd130812d3080154211817ea743d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "1901be3846c81f93c174005307cfcae78a2a83f6225968aaa4492024a9d93df0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "1c7e91de42acaea716010b14fcb0b1ae7c58e07d760b77d8ee88623541b6b99c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d6b061870e7f73917a57388518d7901cc7175a4e52a94967686802361b21897c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d512436202d9ba44fbb1c268a06ed5f8c4093302b0b41f91f95614b7c201c66b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "c456e72f294723a9d31d7d3cd20f6ae5940beceabd171631d7a7654a8ffb65b1", +"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "2cb54d6f8646ebe38969bed3b5a006df5b7f8ab5c5d6bb6deabcf53f4c671bc8", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "1b9d56e048761ddd0374121a3d77808a0a220ce62a1fbe3b923ae0438610d1b1", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "8609560b8b6286daefe549c3a1f8c5cc7604ded75c7b8e04167ab823fee2cfdb", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "061bf6be542dfa87a174f4488a88ae4e8ba71e85d750bc3179a71dcdbee2678b", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "061bf6be542dfa87a174f4488a88ae4e8ba71e85d750bc3179a71dcdbee2678b", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "bcc086e1e70113715d367633195ce42b8354d3bb9917856bc0bf475a99e4b505", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "8b9e663a2c5921a8da3010b10476617420669d10ee5c479ec95c6a0b7e6286bb", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "d29298e0912775c8af440f3339e31a1f48ac41efa64cda1a6a9fdd075ca47a1c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6685116d26e3855935eb860244f7066fe27a695a2793f02a53da54fd5046686f", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d8bb958664994fd9f4baded03f8fa93ece8ba14ed77f49024d159e7d201d0824", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "007710dbf2ff2a270d6b3782abb2cedd76e9b3a49f4f1930052634c996ea948f", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "007710dbf2ff2a270d6b3782abb2cedd76e9b3a49f4f1930052634c996ea948f", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "4f033d0b073c5fbb85ddddb68f8b4ec29eab08f80cdeaf32db6964a3a9d6ed1f", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "050dd5e507fd9458f8841ffbbd60a0f437f04253d0ba870c1bb4efd476fef4cc", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "f49ee8f991e177d5a5d5dba1b490537993b378adbdf7a42a19e0c5797c0e8657", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "f49ee8f991e177d5a5d5dba1b490537993b378adbdf7a42a19e0c5797c0e8657", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "49870a10d2d0f548455f490ee59bc11a354584800a4d0a7f037319d7652d2133", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a6f12c4a240d70b370b764b875397518bd5d4d7e28f9a087c866194aedff2e1e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "16b148f0de1fba73057a97e824917c3ab9823ea4bf51f5a230744c770ad2b97c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "16b148f0de1fba73057a97e824917c3ab9823ea4bf51f5a230744c770ad2b97c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "d704bd46dd8f2da584fb88571b26ee6540e9e170933b77fec851d4d0e5cb3d86", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "940dfda420e1fb627dccfaf00468ae19672871d7577a37a01f53835e446100fa", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "1eda272da8df864e60b95b37fe9415ec53717a833fbe7fc521084e58253e76e6", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "1eda272da8df864e60b95b37fe9415ec53717a833fbe7fc521084e58253e76e6", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "8a85ea6b9acafa6c8e1b20f814c9cd81c38f29cc576cd97d04fe51de911fe544", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "ab56c1c9f4eebbd35f3e9976dd14026298b5a585a46c629a970c0faf04acc028", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "2fb1bc19ae5048ecdeb73dd0199b6cd47f6a5b7d5d9cf4bd971346010d5a3ddb", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "3e79a4aaef6c51a09334ae416d9a27ee89fffceb8e9dbef25ffedf55c7548eea", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "975cce535b0f120a0a4ed56eec3a0c402714249eaf064242802db09caf3ddc76", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "0e51b91a0a373752d9641ff86d45d4b058030f2cdf5c097030bcaedc9aac7c9c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "0e51b91a0a373752d9641ff86d45d4b058030f2cdf5c097030bcaedc9aac7c9c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "66cca3d78fbfa9f253a25d2d5e6a193830cd46c727a2316b10e89984b2aa72e2", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "9501705d68d07bd8a20f52d05abf7b5dd3fdde5ff1c658d7542c68c2c8acfc67", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "22bd3bb2dc168d64725bcb41562d05b0d268d7f372d774bd70ef24ce037c1385", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "22bd3bb2dc168d64725bcb41562d05b0d268d7f372d774bd70ef24ce037c1385", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "2e23a0ca04b6b67856673edbbb038a4aadbc3888b5ba1972881bbd687e7e98d8", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "1d19b8294a1879e6f56273cc68bd99131b34c86529628cd6cd79b0421ff02f10", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "f99f93317a536fb28553efaa680dbdffbfaab4aa6260d9e80f382580ae6879ff", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "f99f93317a536fb28553efaa680dbdffbfaab4aa6260d9e80f382580ae6879ff", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "df097cd05e9840d15ef8c1cd7a5dcd824d682a1585c394ee78a2c4f77ba2d24a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "d1f2e1713bb0aa226a9af5a421b2fcafe189738c2bd7d8c3ccc5d4b853a0e5c0", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "866d40cd042bb9dacf2b879884a62c82aafc982555c163bb7febf4e2e44c8f81", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "6a2dd87510bb0aa60c7e376657090a764c25f623e853ba5b1df604acbf17f253", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bd72fb70d97d70aafeca57be4831bbbca05cb1ad0f37878fcee2f479577012f9", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "f314ba7f8e129698cd1764e802d6169dcb5248b0320c0ce06cbe9448788bd5d2", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "1f28c6f40a9177ecf9d5a81f46cc84db98d99849ee6443ca7aff9e09fe6d55c5", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e6ebc7e9c4a0b93cf97c748aebd6f6dbe9726313835794901e4c6569953b8b4a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "243c879eb4fabc173246e23d5b6525265f10feaf02bb721511b45baee7e4711c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "d31dda6bff492656ee4ac099998348931ce2a29d85d82cb05b5f36938c6507e7", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "0b0686fd1e33755cac9c4ccb47f874f1c739c14312375988f367440ec9cd11d5", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "140f4eab4b8162e86d5a37d6f8e7bd8dd1bca8e7b30232acac8f3069c8bd665a", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "a726b0f464ad5cff7dfe52ad198fdb55f96317b0ede545a7e6574c605c4b96c9", +"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "a726b0f464ad5cff7dfe52ad198fdb55f96317b0ede545a7e6574c605c4b96c9", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "289c1dcc821345d4824596613eecae0044d1fae8b5524b60da34819cdac71403", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "3cc6763558595960975615e147aa41ebfe533e0f9103a38b9f88f4655b2e5409", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "e51490fccd1f700d78332228f5aa98d8e6f300b8d5cd8c896da331b2e80ccf29", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "c3fcbf87236243222e78985aa1c1161d7a1d326d89a3385b6c12781a4335acc0", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "a64a4e5b4619257efefd1007e3feaef7dd6fbf3e9e2f1e71bb4d7cef61defcff", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0a10283a2a223cb2c1d547c76f49415c5bf5866797ece4d8ab89e5f87cba116d", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7d41ed4cf475198e0a3fd7cdcf7e85aacc82098cd73f9d7e9ce9ed42cdaf18ec", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "a585bbd0c5350f72304ad03e8561f312dd85ee30ec6cadfea469d9b5fd8868c6", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "7d41ed4cf475198e0a3fd7cdcf7e85aacc82098cd73f9d7e9ce9ed42cdaf18ec", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "a585bbd0c5350f72304ad03e8561f312dd85ee30ec6cadfea469d9b5fd8868c6", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "35cf8fb1721206eee82be3a5c76d28f6e1ff54384d29b03c2b50f90788811932", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "7128b412693ccabd55655ab21ed7b74ba19c2592062065ae5d11d3c41485e9e0", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "b204f6ff03c3d9180e520f61a7f0abb50301365fc90cd3a4104b93298ce93069", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "b6feda8efe090a0ba8bbd566ea3814bf7bbb20db402a22a1e917aba16d4161b8", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "c0b1cb2cd2da726fee6b741fb333ce6cfbdb1357d32ed5e332ef77934ccd62b3", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "42a57d03054e734cce4135be1c0f8c62cc6f945122adc55fb4f3bad9320bff65", +"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "d881c7596e8493eb56a3cba5c705fce9e4310b1fda544ed4856ff49766dc6f23", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "95e1ec7d556d7d2796e155b8b360c5c7903e1e4d97518ccdaecdca04ce2c2611", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "333cbcfac4c52cb73e28246ff6d64c80e3a3025415ca8f4bfc619d089508f750", +"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "7e14453345ab05b2a89cf19d3b4aae90436440fafff750058220f620ae12bd27", +"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "a7de57c35531d3acfcc8c6f00b119db507f4be5193b1ef0c27af47c85873fa61", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "a606717e62353c29232fab2d623d270b4f284e78bd05985142908dfd306c3977", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "8ee0ae2c75a0e44bb871e29702334820d4a888fdb88aa451d095cc7bb9c54eba", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "ebd1407bd90d260642cfdc591a6f253f71e8d002b1648c28cf643262016227d0", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "a726b0f464ad5cff7dfe52ad198fdb55f96317b0ede545a7e6574c605c4b96c9", +"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "cddec108d2734bc5d36fe1b11dd53b9c28a5f233a71cee38a44fa8c198623ed8", +"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "bc41fc2a0c267bba5fd7dbe162d14b2de7913a726c493195172065c35abc840f", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "d881c7596e8493eb56a3cba5c705fce9e4310b1fda544ed4856ff49766dc6f23", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "014512a401e65e3ca11d07709a45afa6cee4d7859d0b601a309cd97ac37139c0", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "a3d3a6a964916d4f3af4bec1a906de68a5151623e31c159664d45b91f2df4e94", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "ee756cc9461d2858cb0ce6428e8f22f6c7153309bc25a8c70a8113b844138a9d", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "d881c7596e8493eb56a3cba5c705fce9e4310b1fda544ed4856ff49766dc6f23", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "d5a9049d93209212bfd05d1320b3ab0aa4b1732ce23ac691330403be9c61131a", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "d99a4a382c9d81f6955a20ba6acd870d932d8735410b6af7c7ce94fd1a925d2c", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "bde02ec3fd2712533bdabe902b519741b0f6b0de929351130f89913fe57da698", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "37ca71bc9f7683bd8e56276fd94b144e74963cdb13a1560eefdde14477d476d3", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "d5a9049d93209212bfd05d1320b3ab0aa4b1732ce23ac691330403be9c61131a", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c5b8c509b9bd2172bf406af55d113c962fa5ff88f7c07cd8e3b85d5c025af951", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "cf8c65c84e83970cd8c4f5896575fb3702733a8d3bcedf4f055ddc21e170fbea", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "b71fa1351cb6ede187a016f8f33db877047903519b075f6c1c067b732f0501cf", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "d3a4b5dafbeb5fd86c80da1afc370bf84ae6320da7fcfd69218c14dcbc30ca3b", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0a41f9b52afaf911cfbbe18e522333e5a4950eb6496eb441e221ebe3fbf4541d", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "525d6898eaa77ccbec50f669970f6b98bbb2390f83746ad46a35bd6d62d0617f", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ee3dbf2f2a40cc71c6b3399201fae524dbbe12601c7577139bcd1e2c6cc2eac6", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "a66b5b0fe4668ff92777f935e31212ae6bc847cbd8c5f4f28605ef4e458105de", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e3accb48eb15d8efdff49f49d7b682f822162415e9afb4a8579c5ecb5ea07a26", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "2c940f011faf66ec64c3492c991572f86d3202796ae158d685fba5fe373b6190", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "b485c3403bc1679d97a68887556610a114c9b582ec39058d015240da6d858e0f", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "bee6f895a3c415c934a85e3d103cc973274400884cd21efbb20f7c7d536b898d", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "21e15c69f6b1bd02fb9810c82ef7f825927fdaaf1d183d4b731c61ad314c51ca", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "178ab6502d35f71b9be83c953f3935012c9b09aafd2df00a9fc697b2172ce179", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "21e15c69f6b1bd02fb9810c82ef7f825927fdaaf1d183d4b731c61ad314c51ca", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "178ab6502d35f71b9be83c953f3935012c9b09aafd2df00a9fc697b2172ce179", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "48f995234c5cfa302af3392f7ad51974ec94cabea6c0f893ad74eb1ce71a3085", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ec2e9fe0634c266135a5e51d1ef65a3bdd9a15c9ca4aa38c29fa82fe0566f1ea", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "8f6d6bb223b82a7cca7e9c3d3898806a9e3c894c2dbbf63486c38f5315ebdc9d", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c0e5b0d4ade0b1fef20dc14573ce8bfe18ecdd3bb3451f23a99b91823e005371", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "0eeb14f36a2b41114b4e4e5ab13aacceb026a498f8caf9634dbf9f8a8b16c90e", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "83572f65cc4d0336d1f41e910388723b70cadddce91614ae4c04eea282477252", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "870a046e82624113e363d65c9587684ab467639e9c052df1b55cb9658794a7e8", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "11327eba1149f3f65c1bea1cf1dc3f9d0de8f3561b99de7be0414d6e106e1d1f", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "4978611f40fcd3d77dc4c1cccf5afe89c4e94fd00b61bcf7de822a102120726e", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "4978611f40fcd3d77dc4c1cccf5afe89c4e94fd00b61bcf7de822a102120726e", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "4978611f40fcd3d77dc4c1cccf5afe89c4e94fd00b61bcf7de822a102120726e", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4978611f40fcd3d77dc4c1cccf5afe89c4e94fd00b61bcf7de822a102120726e", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "500c44c2b403051dd72f29595347a4d9623956f29db1d0379cd0b36e98a3ea47", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "500c44c2b403051dd72f29595347a4d9623956f29db1d0379cd0b36e98a3ea47", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "500c44c2b403051dd72f29595347a4d9623956f29db1d0379cd0b36e98a3ea47", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "500c44c2b403051dd72f29595347a4d9623956f29db1d0379cd0b36e98a3ea47", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "481967e6e3803c6efcc094eca8bf981c687bebf528e2e9329d353f7d80b0af69", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "008ee096b4e4cee04404a7360a37502b19beb88bd3cf8962cf3070e5af453828", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "ae6e65dcaba383f66acd139f583a3bd8541e67d4ab369bfb9b40e5634d34ad5d", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "ae6e65dcaba383f66acd139f583a3bd8541e67d4ab369bfb9b40e5634d34ad5d", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "148aac465d939eeae3bbca10ed2649f2c9d3efa295d0b14874f96d32a2413def", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "9c2476e9aa560687bf7f529b7cb4d1401ad875028ff4b1e291f89e9a3bca4275", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "5e33d092561f569b1e6b4e86621eb1a766da5261b1a3b9d4d42462dcd032cebb", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "148aac465d939eeae3bbca10ed2649f2c9d3efa295d0b14874f96d32a2413def", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "d48f6df8d2f59869e7b83580182305b9142f63da70091728b2db706fc38dea15", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "ce74e4487e509c09435b72f1d3b8c6258e632594669b3eac06e9b64b43281957", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "ce74e4487e509c09435b72f1d3b8c6258e632594669b3eac06e9b64b43281957", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "ce74e4487e509c09435b72f1d3b8c6258e632594669b3eac06e9b64b43281957", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "21acf16b1749665727fbae8d397a9ad361ffa336ee1dbbca8857ee4b1ef54102", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "ce74e4487e509c09435b72f1d3b8c6258e632594669b3eac06e9b64b43281957", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "d836d60ad1d707e106be571cdce9556de9a4234cd61f2e88c0b0514812df27b3", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "83a39369b31c22c691d15306633dd4ec99415b0af859a7b5202f089e9b69900a", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "10207961ec5da3919464c643cc0d581738145d668297e292cc47a3c7e3ef0317", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "606e0052f5e74be4152a9b9d27f692a3d082e208e5b7867fd3b7b1d9e3d01ee6", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "4e3d922fb7820c3367570a9700107cd03951de9f50a6bb45d3ad4cf8366541af", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "461ceaea1c84565fa806b8e0996a98c03387a743f21ff0a932b465b60ccf15e3", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8a91b6596f8eec3199f808853fdd205fd51de09145c9470880626b913cebfa5a", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "fb3d4bf1df6c77123ec1daa0a0e97ffc38ec58bbe0115b11aa32149443c40fc3", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "b30d71a3aa84bfecf4f4a0c31f8e4d1a283d1a55d2809367181603f6a5bb1740", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "dfab840b66537304c000c54fd2f590ccf5ebfff9014565fd6152db6e2f5124cc", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "361d8eeb63341faea0b1afbc1080053003b505b29fa91ba07df74acaec13eb3c", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "a1989a20a141fe9e55e5f537dee4a6e120b116babbf839717a65e393b5a7f1c8", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "caef4ab7f2961bea5db26e14858620f292cd66f06d05707234af8ec388a7c95a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "5ab2604d10fe7f1ffd3f390e90d456d958e8f36f56682d36a213b3864180ab2a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "d5a9049d93209212bfd05d1320b3ab0aa4b1732ce23ac691330403be9c61131a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "167193e38d4997253aca7080f2694afd38cb9a606d40ec25e2194532838f29b6", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a411c8c67c8e22e99fb306a82c0a9dd59384e0101fc7bff999b3fbc2dd2fcfc7", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "f99c7ea46bef4d1ab31beab4ac0e256eeea74a279f131f1a05443a68fc32c635", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "bff44f4cf53dc9458a47cdbd635bd6d61a4d5fd3abc419b85b33921ec47b4835", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "1380274c1aa7951d174886b205c2a1c18f9ab4b9fd2a16bed871f0abff7e93fd", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "07f78bcccfbac579642a8050b29725f0d12cb4aaef21cbd6dc1e92e0b2338f1c", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "59fcc5012e22b78c850ab6fde5835f6edb52fb6ef9c83e2b49ff5f3d16145d10", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "be9fe9fc5420c96fbf68fc239753fe51e05c8f71b229378549e9321e7d8ebcb4", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "59efab49cde588e4d1eb13c52149ecf9c03ac59991e9bcca65a098f087708cb1", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "518e23131e69c87686fc4ccbfae80b038d5c75d083559670b1d47fbbb7d6fdda", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "ec5f93add674aa8f43a30e3ff3887b06df0f9621453bb0570503f2d35e3d17bc", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "dacb3cf9daaa78c513ba751577e66364906f8367e900b68313adbd991c2c50ec", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "d3d563b3237bff4c68483802c7c2e794113f5c8c8338fd345b47341952a28410", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "f09570c1aed4f118dfe08ab25600756a978a33e028e407e9f9324e73584240d8", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "eaa7a3d5587442e25a7be954e2c326709ddb7e29dc226c27713ce9daa27cee04", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "36adc6b6bd2bd32abb4c586438f6da1accf5d9592f4f8557b83dd0fb289d7a13", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "d2e57edf7dca8e63c9efa3b1e208328b16217c6057a2fd1afd6291e7a2c92546", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "701b08ecbf63c554f5e3677a56aea7ab57654f9e152bc2b12d9c03401bdf7e4f", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "9c1c4ce0feb6e187b1c3fa03b8bc83223e69bbf4a5adef3c1a36b03ca03073bf", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "4058f3f93c0bc59c18499fe71a32198169ef7794d621b065cea8e7d7eee75cec", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "75fb304eb98ebb2f1455c40bb00003eff2388ec5f251d2a4b60afec7701e1b8d", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "f8bc2cabd3b7d29a9331409f56a2aa0be49bfb36000527ff4797f4339e275042", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "e6a47daab75617abfed728eed77c2110c65a2d02101d2770b86ef1c23a3d77ab", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d3a225ce95b922a2a2ce53da3ebba649baad7e65b12ab7d19c73ad14dd472551", +"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "406306bb072bb7c29f6c796ca64800c9b185ec9499ec8b6b3e621c6be36e9220", +"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "439c6d49f5261fde56a9eedf9afa14983838839f766309ffbe4af05f592c5055", +"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "b4407217521939394831d0b8eb145493766f293449cb023309e499eb5893eb16", +"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "56bf1f644106078b3a91c1713243bbd0efd1402efc1b1733faa25a7a2eac27ad", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "abf8ebc73f277fb3836faadd746c975494cfe0520068001250578817b925029b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "11e00b2a650696800095fc44322eb70a3334a31367a9d3ac1605c5e903d7d877", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "af57638321b7ca49a095df60247bd7ca97471bbb06e045b72f0ce83638406259", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "225fae6db2262654136ea281ca99ad2c44f4c95ce6301d1bcc06f82bf489e328", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "73ef439bf63562e1e8bdd8d03058c36347f1fb06596c11607c6fa22fcca44cf6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "699128225d720e9cb1ce8de309c21da97f4a2f3fee7f2b0704bfb93032725af9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "e02a46ad1ee148d8e3f1730f5ea4d9055da6c2e205304c5ecbd8c24808c28fa7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "36462aec93793066e887f81666d8cdf12059865bf4c0ab0766ff2100cc7b924c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "0224caa6a29f4e8cb8030a369f4656697ecb8acb28043cc8c2ee0c507d6b07a6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "0bc063dc9ca34e0e973418b8060bdb3328461dc2a25487ac09130fe0616ad41b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "56096f8933917760db5ce77237006f3aa43434eccef45ef2f344fc144444216a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "dce37147a97ef66ce9d758ccdc2d6797502f4ac8bde4d5d2693167c7b09ca3c9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7da67f3f064d59e6666b1229e23261e1a472332fad77836ceea401362740ca7f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c09133eea1b79a3bd49ce7ab1c4223838ec329318613d010afaf646a1f690e43", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "8a5950adf6dbbd0fbe8b311fcc976a9e80a0a220ad598d012db4ea25727fcff3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "348cbea958c6eed521f666b312fe0a07188520d18e02997e5adabcfd8d049529", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "72b378590ad24de449fbabdbbb230e29370cefe323a6d64a4116678ada6d1d9c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "8458d768f893351249cf7a4590e5f07bdc75bcdeecf65b0a8044c2732e0829e2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9f35824c12cb697280e7daf59984114ed24600c467eff50cec91b8a8bdd75f31", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7feac87f6b6989bfc8db23a3870d3ab9821f9ab48fabc2fcd68d711b91a6b908", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "7e80869b7a6d2eab571fd3ad3035c7a9991bc804d779ac86aa4ef8f77b264388", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "92e3497f49186ae4917a5e907dd6b2c677f86fab1547b8b622beae2b03efc7f5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "2c894ce9b0311ec0c922a47f5523a6d1740c6de61dc2d85576fd0f9f16c4378c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "b5e259ad962b99e1445e46e7938e726902f563bf92d3db6cabb7aa267010d31a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "38140f0109cd7016bdb9869f0b70e99e121b045bc6cbd20a544ca82029e67df6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "c4348cdf2ef9dbdb7308fad3bbbd6b4bc66409edbb4593ecbc3a0e2f2d04d8d5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "3800ecd5f4100dd1579b004d628d1be84a2fea60020e261f002fc9b33a21c913", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "95c328e44f2443352530fc9a60ba05fa5d82af1d6988e5eaf33df545a4aa0cc4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "b6fc4fc18f6c214cf76ca4793521bd410030a38203625a184661732411fa266e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "f922ae40197b3e1061a707d1536d8d83525c4c332e4c4f24be9587f7147684c2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "18c61c1c544162048ee709e68043bfa9554fe1f00b1e888c522015aecab888a3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "37dca2651d192cb870b23ac1b7b42a4034ae2c41c26ef22578f4b462da418a0d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "ea9851d142bb8997c73516bf020badf884ab1f05ed96090878cdef4eee376b21", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "bd72ffd2c1a7611053a50a77a504884a6391e1e8b78ba13281642b4de99b6695", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "9271c352c0aae31ffda48fb093e5384eadc330ff80c31df15a4209442093e338", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "1a0c1e77533cce1b1fb89f700f718a8521270270d6286dbc049658e0e13b023e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "51f3f863f802011f5d67278dc613bb9d0c343b80788a41dab50c82f6fec0dca3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "c0cea7966006633e46803f3dd31d66faa290317aa0fa4aff9353356c3c68ec6c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "064a128b0860b8b856799ec85ca61cb36126d717b059b8d3b0e3d03f59d9e590", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "b3574d77edfa61117a5ebbaf1e11623780a71dbc79ae16441280967a73f6674b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "046c33831b713d5f3963237e002fd710c5720d3eb54bdb07093c5da79a0436d8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "223a3850fcc8cdf9f7036cf602ee2a1391f2967e1875ae89da62ab981d144ecc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "753b29e1519a59a4229858ec2f712f098df5478cdebbf75e1f43e44882dc896c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "bf15359f270be3f9b0b641e6dce7b767413d9d6c20de88184141dbcf7d6398a6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "afc51303886406d6585636a45feb18b62e1beeb9db83567b4ccc6e4b41a04291", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "59fbd8ba79bc64dac4b749c39c725b678768f78774da8ce9586c0d0d0f965cc5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "a5de118de3070cdef51d9f23d3800eb089686f1061b028ff80a0495a32264f42", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "cec9df9efe6e7706a89c84eca88c99f1cb063003a24ebcaf41ba74cf0f1bdb40", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "b03dac9c21042d3200def02a1447abe380343e915551c109171a6b7152a0f60a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "ab90fdd968daacb0ecbe4951a630397bc7bb95318375d5dd689c15e0820fcc16", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b7d3f73753d0162441ef1975d113046b91d02868d440fb668d4eaf7a8c12d482", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "049ac6ac980139ad0e82cbf2e3c79db038146f3a5a89b89cde12717a530a222b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8977443fdffa8854ae4f154c60ad5d983ee6ef88eb21bce8c4d97ae52d362f9b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "214b6a3760904eff57bdefbf87552b4e0da8c1aea0851b1554e4bb7d7255cfa6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "12f8cc7ebce36778f6e18b0f5352da81106577c9733d8aa7bde2b26bb36317a1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "d74559ce6d439e394ad77c5c9222d265a8d47262c94d209a94d0f089740f0d10", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "fd6037b8b85aec557340d3e8aa25f260394eec77c0f718880d1430716dc287bb", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "a6293424caf10806a2cde685159ef934e050b876fbe27f2e70ba3ad1a4649471", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "54008e136d41fbd715f315eef206e94e157f108bf2e0ea335d5c6bd744192424", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "87f9d4f1953be4ac60b1a4c9f21a64a2ac2188b09fc03fc4725cbc218b9279c7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c112d04a5cfb494190d2e0214848ddb8977c55b2214b21c25dfac7a5629029b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "0d242e5175dbf591f68eca6e228d2469397910b049407da4d9aabfa6ad8330d5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "39f9bce0ece5b82f94bc1817c2f9db13cd64096fb12a969516dca4af37a1ceba", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "725a58fb356abaa380e9bec016008ba75b8ef536b1c5a0a91df63ebd6f3233b6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "aab7ad642a0b1d9d63fc2476e21a849475064d20c9b30f8e0e841dd5cb50b844", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "434ee1e5e7a8584f1bd6ed807359ab072f425e328071ce2423be84a5e2f4ecfa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "1f21977ea4ffa6f5e9f9bb57a34c5b71894fd59a1da1d310446a86866d2311df", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "26bd3b9c8a3efd3daf6f3fc6d9b3349614438c26f9f5aeff87c933a13b7afee5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "02e5f93f03dec391bc3470c265225814cacdae5659cae3e20df4c9a4b3a1fb4d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e999ea6217d3f0d7b68ce782624052dfb8520d1497fbc3bf09ee22762c1f4304", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "9840bae293e78c4a7e39e001abde75385a1e0c0c0ac51f859a1dd7504de73fff", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "11387b6f452238a40815cca980aae0a4dfc534509bca09eaede90d7ae0b28f00", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0776ede0d7ee5ac0b9a9aa420c19f7e2178d4db4cf18b0c9bdb0f79245d8626f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "7813779db8c70dd803dde3f5cb6c2eb3ffd678ff73ba3576f872a42692101b4d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "38b7dabad4ed4356c84df678ac271e60802541e983dbfb35d78c16dc72ffb0b0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4069bb59f8c7497c84bbd8f6a55ac664112ff0af3aa4f579da24f883da6a42b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4bd16ebbb9973224edc06feddf8227c5faecd76332823c592cdd5ae0a409a0e9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "befc695b4481ce24b89cb1cd7bf0fc3fd284e2bf665687bfe5cc642accd20c02", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "edf375ff3ac0837dcf939818446580e6715628f4a4c85ffd34ba9d04c7a5dc7b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "b41421ff90b0687d6551e7ada1e43c64604c3d342232aa14e954a1704039d66b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "f40b02d95b31f7d204b05deb9935a1f2304bfef43a5abb93e8b1b6fe0438a00f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a4e790e6c8d39557e2e566aac2abd885bbddb30fa8ab796e4f204e38788a0400", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1640ce62ac02c773ce0257f642ff23eec2ed6d341946bd2fabe3db09ec8578d9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "076106f101fd128bdd7fbeb7dc365b599a8e0f5c124334c5e5960416bd486238", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "f4ff6d3f8d68322a7f874285fae218edf2850127aa0fd13971bd781b2bf194b5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "db0a84bd791d2f8a608d10c3432c3afbbded5472173a1a0f115ea3fcac4f3425", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "75221ae28ff5abe59ef877eee66dea029619f312983a8e3ad7dc7ff1b92c12f7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "39965f4e1b1df3e23062862f4f7fe6c498fea97539a8a5d9b8c9484afeac40ae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4abf2f7953f0ead0dad5a33ad5a79e6834174b6668a727256dc19f9136925fa8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "35543a2b8897316161783845dbbac8eb7dcde7d8190379f76aa05a7444942f21", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1a3eb766dc9c56e842a51adc91201db8950a35f96e92ca19018012b51c1f17f9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "8d795546100b0e000aa49573555881fd2a5cd17960519e97f6dd618e07226276", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9d7e4ed94598bd06f679efb55b2679daf98d521c6b5d466fde9642626d261afd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5a56b6ffe6495cfe8134d55ad7992e93525203cca3e17c708b689417904dd736", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "aa819ee434a392a610d3432becf77e9b9f30a603deb3741f84d88eff9c5916a7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "8135a75d809da6fb26f157c831823d9bbfc78fb8181c43f768990008da5b91c5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "dad4de6e6170d0bdf16f4545df0479608ba4975d771300d35a9ed8847124a84b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "17beaa2e049d293f29c6806042104ba81215d5ccf8cf3369ac67c00f7ed61d59", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e6a12b5967bd6b761f0102df7a1c709058a271857a84308995f78bf14ab02890", +"T3T1_cs_cardano-test_derivations.py::test_bad_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "38cd5a49220fdf4fe9f4bec99243634b6a826fed488e174ce6c345f03656e9e3", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e516f88f211e7bf211cd3ecd46de87a0a8a41b6bf969e816a048775c60ac052f", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "23dfae004505fabe72185db81304a53684c8e966ba73bfc17c27228dc0e74cde", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "d3ac474d2605b895dee63190084406d1d90fe121c355ed7fa5bd79ef20f72869", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "896ce29b92ab7ab33d3b1c11e71b3efdb2ebf4ebec317148d205095b950918e3", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "8e393fa3754995fb225eaab2c5f6a5ad4db0245261adcd78271573723a11f81b", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "6aa2e837a5371ce0049b71bd1321253a60b4740c4495b6b644b0a2484cd9ae86", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "6795b2bc95a0f20f5c5feb1b89d67f685f568395de3b5985c4c6009c303a01ea", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "11ae843d0273abe22af5b141cabd8ef71ea558168f78343cc8bf3c295ea72662", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "a5d4d14d92113e2863c08297674c3e2f1ab9a48c52451d6ef3e9352bebe894b8", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "9834a7b76482cd9dbc34baa13a676f39dad977d3fc590e197a8cb06b80a3accb", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "3f5cb82af3cc169eb82d99c60b78ce3a5bc1340b56130c526282f1b1815e38fd", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "829154d1bea9c356dd017d72b58cfd0b28e9f1cac767aaee65f22741aa476705", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "52fca0398cec84e5c6a5b32619480374d731397cc76131fe4122f5e94aa97f36", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "2797a4077f06a0be5d566a2f5f2fa689e0115800c35c88618523f6db1cf285d7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9bf6b48417a223529626d35bdbf9e07b99c630191b02421c98dc6f59651cb488", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b41497bea18f61a88d92b52c917e52a2f0cdf72d814d1dd7362293c43a378db2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ba09e9131092e8f983aa8bde4ac5a2ada325793c7ad5418293d016a1158bec92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e7ea3bae35a3365f268e41dadaac3e688226ee328bd54faa4eb13bfd69da9271", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "fa114f3f1275dcd44681739eb27b55d2acdf046735213cffef92df7f48b00274", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d3c0eea8799e8b1b165a87963c5b5616a8e1110bf44787db793de0c460c9805d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "2f31d1ba7c011209df1b78fb5062ac767f919ed6fca749e5329e4efccb458923", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "aeba9072231715d851c04de716d2f77d10426c8c6e12dd4d58a478c27e1580f5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "e81336105ad5c1ff1d367fb4557d3591557e876aafaeee5d21bde35c353dd9c8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "eb8d77f601c3f5d26ddda79709ae35aabd7325330062511bb725a8343ec8366e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "eb8d77f601c3f5d26ddda79709ae35aabd7325330062511bb725a8343ec8366e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "90b4e3659dc30517bbe9d5e2b8ab07df980a9176bf77e825a17795a790a6ed82", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "90094864486a16351a8aa9ff574c2a98fdb3cbcb18ee7f01f4e4b28fa871c024", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "441dca8da1558d58fe72b419558b97d186ed6cb9f948e0430a884712098a6fa3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "3594d29fe048cbbcfb39112d29237107c429e008136ffc10072c3076834c6d9d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "c904d88a181775c76360af1d4091fa68d9b1324d888669fc3dfafa0202f0e526", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "853b9442c970017775115f38f5ad1b4ab8b1b68549e4ba1e0be272aa235e05b9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "58a7ad440706812fa4d86094238827db624904090ffd75613d37e8c9a0278998", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "8b6412a0902ad079562aa3d2b1f1ba54ebb1af1260487c06f9b0f512f4a146db", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "98b599f4e6f7178a4f954c2cdba5c5c6ada4c4bbbec2bf4c8548872420aacd64", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "c904d88a181775c76360af1d4091fa68d9b1324d888669fc3dfafa0202f0e526", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "853b9442c970017775115f38f5ad1b4ab8b1b68549e4ba1e0be272aa235e05b9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "dfa22ea5ba4c763d5df73f16dc156be871a92c86ee817eebdfaa78eec293f0dc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "363d8411f5a7af47296896117209952f2510a32bdbccb1c002aeb1bc98a9f24c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "c87c2a1bdf12e377d4a71dfad1d9aaca8770b3c3bd3624bc932084f5285e03d6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3a391aa1920cfbcd7e77e77d6ba033eec9d509ce5106616f5c89947f566bac5b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "90d2d1799bd2241efce6ed225805152b5dc430c8ab0757344203b6cdbb6cdaf1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4e0a20d70f4c29c81c99b857145a82ee48d863f2113497075544048b112eb67c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9c2e3f8b43873a137bcb19d2b2a629bab523f691a291458f665d1f1c05beb8c3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "4818b9eda12a81ae5c4c261d59a51732f5455fe0c795f8000e641c37ee0453bd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "7129feb02c760dde1a2722bf6a8b50150b8c0b1b369e12da9841e81f35bbc30e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "daa9eaa42eadcad9c3fa0e7049c5a3d7f6bb0022193fbd54e3de14bb3e3c0967", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "02e196fbd519031d1d0e24a29d07c686c5f505d40723f8d62b14a01960c2f900", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8f13f0f3e5c5865cf6285673d7bf846e83b7d9689c3176e633dc3b049c3d7efc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "453f451ada86646dcfac8b8f9a9bbf18f7126c031b3439fd398faffdb71d412a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4f5c5acd5966ae082219c92e0d7257d9074a37702b23d6d6ccbbc946392f723a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "cab5f768ba89de227a232dec90b84bcddac9356f67d2c85b047d6b8eb6b27fac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "b725fcb567e243237c0a2c85601efed95b077101296f1f2a78fa428aae94c997", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "d8914000abd4088e151346208380bf935944dd331429a98a8a014c5003d733a1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "aceb3af6c251104d9e3dc3b14b93cef168acae58c65a0d58e4e7e4cd0a87bf14", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "ba67429cfd2272dae8fa4aad17d8952ef57c8edbbca20a58bbe414a2695aef9d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "cf3a5237327f773c5ff14702602b3561cc7edc381f51740539606ea9d9e95941", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "4e87bf29d41aa3a02c048af879b3d11f2a59e7a02a521d3c3b7107bad21fdd87", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "6070a20fae382cefd4af2ef58dc702391c8ef13d9758cd82ce69a4bc78ea73f7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "d3b411d5af6b30fe684879d6543756ffb077e6bc27c494c953fa08651b86af5b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c25563352280e3a218430311ed946b3c7a9f050b03464fd8bc130a7819eb62ca", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "cdbc45dd7a3517562c931b23a463341433659a922a64556a67e42098177e117b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "9921c4235adcf15f6512f1b5567015a68116482c99cc5476ae4e3bdc2ee35eb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "37a37a36c77f07efe7b5bbb1908912b61b6685fd2fa68eaaaa83bcebe6ad2a10", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "cc6547e8b4160778b5253b224f0136f54db7e3542321cd9c074142492ab2f6d0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "baa4340099cc2670ada2cb8804c0f6d9e86f1aa2abce75228789d832205aaba1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "720a410b9e61d69fc27292bbeab233e62b11264f39a38fa90f1b50020e985604", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "061597d5526bfd303f716c3457e29d19aa1e16512d877e51f6409e36d7acf8f9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "bfd3dfdbac2b5481fcb6432e02847f1cafcdd1ee9f3c555f2da8b8b5a7daaa1e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "72e0b56c80d945d3fd57d3a63af0b5db78eeaf65933b67bbbd9b0189360c5b5a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "88d18e06c49e67e5fb6f20ebf6914f66d7400e4dd53edeb637503612c06542f5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c50a41f6118386d9e5aa0b54040bc7c882e464b17a235e72d661555ea0407a3c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "98d4acd33a0d40a6ad6b4967f29445139642a694299b6b2edf7bb340baed2e0b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "3111efbdf512a7c85a1e985f7ae22225f18f2112247de6ef13dcdc37968e9489", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "0f34497b13de52c817de154b072df2cfc0fa80f558d242e9f50d487cade586b3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "48fbcbba83d05547bd220b988e0fc3d54ff8f9b529b1a887b2d625faf4f8f1d9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "e1144ebe570d676d39ab9cbf208dfaddb2a046d30c7164656c1ffa610a05b61b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "25275657e7fb5d95d04efaf8dbdff68f3fb3717b74e995378218fc99d69a7776", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "8747ccf3e4b5b5635701ea268327f513a2c4fd2caaa1111aaa96c4bd8dc482b2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "107c5436bcca2709e2c56ba637e761bba2f18e70a9edf9535c6d100e0f1b331e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4ea93e68a662f71fdaf40e5e55f77ea497c298c6e6378eaf123a977b90edb6c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "021484d5505335a7c2acb6ac806c7994a77fb5705d7613bec70957b95fb891da", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "56186f77a7ec32fc67a7ecb606cdf0d6969b448d6b73785a9b9dd8f4ceb64d47", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "a3080f4c8b0b907ccf89edecc1b4d4811740d72beb88c0ed95b5b8742aafa226", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "c136f373efb68c9af2aa77e5fad196797c557ed5c216168550a03f1b7e2f13fb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "b95d1145b2ad60dccde1a84b4f79ebd35cdabcd71feab384b6afe74119f8195f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "9c4619da200aa626ef1e6bd36ed32da61f8f02474d33c0c2e810ed064736b45c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "a6b2a35fdd2bd3d81e3997c3f073c142d47ab336fa5a251849e777b651879f0d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "2728d2a8747232004fc0ff437479a2ad16bd5505dc1692bc214e2d56ed2f2dfa", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "2728d2a8747232004fc0ff437479a2ad16bd5505dc1692bc214e2d56ed2f2dfa", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "369f035e2c23afe09027f4fe579843518b46640178ed2685d20ff618c1168beb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "e09a04d59ea77fe53a8dc653778fb17290526872d63656cf54eebc9d15012722", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "e09a04d59ea77fe53a8dc653778fb17290526872d63656cf54eebc9d15012722", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "c4857031b46940ca979e4b942aeaefbda0030fd7677140d04df14fba43678b6d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "09251d03fe804ef1fa0fd0207cdee09010c749f2aabeda71561c21be4d170a36", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "f99671df435a35b419dc525d004cc33bfb77e839c633ffec133b6fe7c9770931", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "10f28f2d1aeb2bb2281e3fe9ae3d63273045ba0d742fa2e9fbf1dd352bbb902c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "1f4c67c57e902062997f783e722052ce048ebab6fd64d9708565cb38c22d7b29", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d547890c96793b2780e85ef8575d8f84d9a572de239c2186fbf0dc170e6c6476", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "885562bd9fa12f9fbe38b4d0da532d18786af480181d7eefc3c2f56abbae5c18", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6825434b058014c59ce4edef9495af87380b292a674cdf0417e21101ebdc830c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "40c63f6895c31e4e0f3621490904ccd57d7553867d6d35cc93b396954448702f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "52fca0398cec84e5c6a5b32619480374d731397cc76131fe4122f5e94aa97f36", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "fa114f3f1275dcd44681739eb27b55d2acdf046735213cffef92df7f48b00274", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "01297001052c1d399ce7ff401b7ca0b47470637573021b954a22141eea5866bc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "72998bd8887713a456dd4ee2d3f3d1f1fbcfcd44f8d1c5626693ef5dad12a1df", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "72998bd8887713a456dd4ee2d3f3d1f1fbcfcd44f8d1c5626693ef5dad12a1df", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f00f1a1b6db32419ade71fe24873a8ebc714593ba969ec6c59d3afe1ca4a249f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "f7cdb0d2edb5287b80942b730695ce6dece1d60ef8061316879cbc9f6d0e536e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "00fb9d115c010e30bce69784b245e5e771a5ce424d91b87d85d9d14880d7b5e8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8f9671f4b596ddfb83204842d53c5aba9bd4ba2646fa6870afa165213ae452f0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "f76717b5ebde132101d67451cdc9e7f03a62429269c05b63c92f9f4fa7545664", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "cbfd50a015cf91bfa8c5743c815c66c1478e56b8f713c48c527b1e5a861b2a4b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "615fb3a5c8b9225ccd49b5f628340c6d203d5124ce3b076437b38daafae23743", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "615fb3a5c8b9225ccd49b5f628340c6d203d5124ce3b076437b38daafae23743", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "615fb3a5c8b9225ccd49b5f628340c6d203d5124ce3b076437b38daafae23743", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "615fb3a5c8b9225ccd49b5f628340c6d203d5124ce3b076437b38daafae23743", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8f9671f4b596ddfb83204842d53c5aba9bd4ba2646fa6870afa165213ae452f0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d02d038ac9674b1c8add8199c4b17edb0f7cee6d12a9580800fade76f3839bc5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a1bfd13f49f91b695cfb80b0d64c6c39a3df6a9fc89ac3304fd3de055c9a6e8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "f8764adad977670cbf3d571c20d782f631216e6b3ee78b62b4215d270dd68c28", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "25015ae53af30bd3c3b1618f6ae6cddbeafe1d4ef29a206926d4ac1d1b8f85e2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8d822c8cce4bc90c51c3908d3004e5460d5e2b006069b9f1d358474adcce925f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "97f3ba02ae06c2b6babc45763f2895ba4a0270a14eb99df3ddb26ae412a293f3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "41cbce417aa8e07ee44c0548628b4f2df60766aacf6a66045da11ac1e9dc0ea5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a845eff198d02ca859225045819f46ff099be7e70d9133becafed35ae9827e7c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "6eec78bdc1338ef552c57e63e7bded005c4d4906c22428a6a3a41de099ddf35f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "b9d1201e309021b6eb0d4da8164a1f395f7198b8ee360e1c4e53272b6e3d74f0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "433a292d5e5b55213ff9482c31d720a41658bfe255ccb9491641a88f797e87cb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "72998bd8887713a456dd4ee2d3f3d1f1fbcfcd44f8d1c5626693ef5dad12a1df", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "f9c92e09bddda94635af38948f661a0d19f8b4c56cda1d4a1cd6f946dc82c162", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "b75b6f3910054339fd6649c300471b32106b3fc1ee7cc411c392b5c9e1130159", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "ebe8a91dd03bae00eafb502d8ade8610f53114198ef75c509815c6acf54b4c3d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "399d5853d48dfd03c1cef26e463804b85d43bc80a2b04484dac8553ec0ac9d3e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "c5483fc082e649f4db823a53d0099f19eacb9c7213880f3560619f4b1e5e2435", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_ethereum-test_definitions.py::test_builtin": "bedc72da4e26f8ef8141b882aa7de1bd65623202f1d02eb667254c8ffe1e6ea5", +"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "a314daf049af840d1d8acbf17a18154cdaf45e4dd246882e4fe5ed6221705613", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "c10548d3e39489154c8db3a921dd62094e854b32fd1af4dda51495bca2de0077", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "61eb650f1acd1f2a31921c9e0e9fc8a78a3757db662b263c4ceb9e8f96cd9562", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "f592ce7a142308effdfa810ee01dbe112f41fd9e5b76c91fbc09eee7c1ca0d4f", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "5754334972378f48c2c33a4bb0c154ab12dfa8bc1e33c56180b5c887da1f175a", +"T3T1_cs_ethereum-test_definitions.py::test_external_token": "e5b762d5e6390db1231f109d2dbe14e63e416e7bcb98c0a3205a3ea03fa6a3ed", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "910b927503a6d0b9da44da26bfb7c5f270414d4a89c8360d5399fce40bbff251", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "f033f62203bc7ea8e6ef1260de29c60af6639773abaafb30be51ce12a4d1dd9c", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "9f9ce367253b17b28f936713f7ddb2f1b7ea3e44c2b0fd1940d2ff3f121e20c2", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "5265b98857c2e156a0a3c68d5d0f5f9f69d2558884e60c817f5c551281b30411", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "bcbeefb119b5d92332cbf5bb7eb6f376702ae89fe297e8d859f6055b099eebdb", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "dbb832ab79f090b6eaa7a242379a9cc89b181a9a69be4ab12878f1a34187fbdc", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d15dcc1ebcf16bc33ff631ac219d7463e1e1f5e7360d606ff3c27155dcf2b5cc", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "527f7e8555c21cafcd018e5e11adca68cbaf18283cb0d336fddcb4f008a1ed15", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "de4482d733615d45f7ffaba72fc617880f1e32bc8fd6ca7109a13afb58f95754", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "65cc3faedffe18d9c00662af8a12aef71d4649bf6700454dd0e695604b6d3555", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "637453f1d026ca7fb7e675a90733ca497b7d921a3cab598c3ec44eff644f9d1f", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8b802295b421d27d8453686da64c05e8effc18e72da090cee81d565ba9cae3ae", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "9fdc258714544abdff1a1aef3881596489d403095639ecd88d5f80f0d85ae765", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "2fbae5b21465651842019c1da143df1020447a578c8d1b857d42f7179fbf57c2", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "ac36d5279cd550dd0b98ab7926c7d3bcd18d56089b44ef403ffc22d95c496af7", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "ec1272b52e3158c1172003be645e50838ec909109a793da4840f669844f42262", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8956726352d140c532471735065ec64334cbf9c7df7cec0e7dec2bf0b8458332", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "9571eb83ca3a5a7f686010ffedf05ccf9dbc8671d43761c41792b45611f1b76d", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c67a0e4e9a27a3112eb09bf5fd038f1cab96cd6ae8c2695379ce2c13f008e131", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "07ba10cfc87bfbaa5d552d859584a794435451f2afc3ea42859059fc833b5033", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "fa3a3a4fe94a3f011ec415d8738bda809fc8edc0e00c853b8d50a129a7ab6ba0", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0f1ab4a2a6640a1f69bca1bcd1e828367872cd2839d438cf86d8a8f40d92439a", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "021fa88c6baff2fc0b8efee4def5b1ce0311a4292263def1edbeb1408b2b5cc4", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "07ba10cfc87bfbaa5d552d859584a794435451f2afc3ea42859059fc833b5033", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "07ba10cfc87bfbaa5d552d859584a794435451f2afc3ea42859059fc833b5033", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "07ba10cfc87bfbaa5d552d859584a794435451f2afc3ea42859059fc833b5033", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "b3fc9b1959e1fe486eaaaa91fe7749fcd933c6648b0ab7b5f7ef3340a6144d9c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "73ec8161898c0040c9cac299ac61444b0af6537fb4454b4752754f6f3403b0f5", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b91dd5c8e3a6afdbd5961e964bbfd51496568803750b7f435fc0d149ab3b17c5", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "2b106023ae33bba84c5c71dd76b77e1617cd8e23cd5ccc603badf01b6d164dfc", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "068716ef035a3e9de8389f1e9d3ba597866b2beb339dbf96d04a3331b01cbf1a", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "544b7bb00c619982f76de5491f99e1bce5c9fbcd89c86463b1dbb849b14eaebd", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "8afae26705362df616f203061dbad5b5188d969a4434cf9a3863b9785ea0b81f", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "b763b52cc6bfe43bdaef6ed0c3db4e0542c70d7bb0225173116004d794f6a8c8", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e0ff495c3637e76a3a3444ccc6b3e947dd87924fca6ec26aa2c6457e4ab06dd5", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "dc459f24321b6697de03224182845c40a79fba79db8b8b4ff6838097e0b2c20b", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "c7caa9ba6cbf6d74e35fe4bf6069f72e614ccecfe90cb08d3996a76b5e2e9cb3", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "cfd406d86a2216b2f8fef8eb0ca7ef3f7f625be5f03ebce1272402a970a9d0d2", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "d7ca175233b465474de7c9b75d09f1f7d20dc122de6f83a2f005bd36cce1641e", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "75f8b3d5afcf8a0bb08461b5d68af04221a2d31992cf801bc9b5c4981caff312", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "e08f590bd201689d927cd288f4b8c80e27d40bc764440a91ac1b72fcd6361945", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "899cacf9a9fa661a90b11276c8f28e133abfef20dd2e33679b4fcdb00099e06f", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "b9fc94268fd7cc5adfffbd7d8505ca0747a5fe9ac347820e5ecd3dc580bb5b07", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "32f14ac18edaf8f0092af21eb541197edd2360b826f0444a3b1f02dbb280c815", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "c7caa9ba6cbf6d74e35fe4bf6069f72e614ccecfe90cb08d3996a76b5e2e9cb3", +"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "68858ec1b110668dcf7040ea70e1292b273770b97429f0983b957cb61f283518", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "3c83c97e823986be66b132718af930fe3fd1a03eb507e2edf16f34e332f7e650", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "e101a0e146441144ab6d410a8086c7bccc818b8839b5789fab5d6fa2e4e9133b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "6a1472610452094137283403c445e1b4ef57b2440ce83fd0c5fd281f9dbf69a4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "e101a0e146441144ab6d410a8086c7bccc818b8839b5789fab5d6fa2e4e9133b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "6dd2dbb12b604aca1ea9313b8982ce66924dd48166c5e4aa2c2f9724f30afa37", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "6dd2dbb12b604aca1ea9313b8982ce66924dd48166c5e4aa2c2f9724f30afa37", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "af767b777b9fb87232a99345ebe2df2b67d120b3615d20dff950cfa64ed55a58", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a755e6af12127258f939a51e08f606add13e2cf49dce54589b30d5faeddb966f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "861b0c8c336bd15e05840173ed7e9843f3f89af54e14f0e43ebf403f12b85f80", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "014558ec2f985643aa0ef3568b230818d6217c5bff7801ea3ea8246ec4054c69", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "18dbf37f650a41b25d7bdabb4d8157503bfe1f2692c4981e90066ed25e19c61d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fd152605adb0d2862687b8daf0bfc89a4b4552b52fca51020d0ac0c449c33015", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9133b7947ff868b0c6a60375bb11e07994c524d25017887538c9cdd3d673be2c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "05ae4eefb0561e9e4a7251df8bbdfe3d1da43df8c199a90f8278859a0c73f174", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "748e25658fd45b5dacb6ff57fc4ed1da1d5affcf6d28936ec93728618592409f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "35eb40687a1b051a17a90ef0eb37a0db0d544635db9d39b7cf3a4ee0900d87c3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "748e25658fd45b5dacb6ff57fc4ed1da1d5affcf6d28936ec93728618592409f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0b5e13ba07ef1869ee5834ddcb22601a200a9d51279c1822c8c26ba82b42b61f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0b5e13ba07ef1869ee5834ddcb22601a200a9d51279c1822c8c26ba82b42b61f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "981ee57bc65ccc4da0c91b466ca7e77fad593b09d8df57bc12d02342f9fec1af", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "ddfc544a4dec1827c23639c59404218a9e181e0e24a826798adc53e3d0d3408d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4fef0de7e51a42a0acc6c642a96494d77d4cf88665986b958007426f86a3f264", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "014558ec2f985643aa0ef3568b230818d6217c5bff7801ea3ea8246ec4054c69", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "b89029548e085f5906c760fb44aeb9bde52f7a3470fc74c87ffcbe1472c65952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "493937805acdbf729119fcbfb7479f581cc7481212afc2bb9b437bcea38a3277", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "ed38ca4fd2b829dab37be1146b93609776b4dbfd4fcf0aa991b91435fd7a9d69", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "d54fc4a712c40550dbe94c22c0e54ac59fa3838fce16deb6a6185a2bd8ebd2d2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "ea2b1558edffa6d99dfec184ec28346aa3085c635b4c2bd89f3066e476fd6749", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0673575e494ceff1813c4bd3bbf09f932983291e6f250d4707857e18826dd490", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "18dbf37f650a41b25d7bdabb4d8157503bfe1f2692c4981e90066ed25e19c61d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "af767b777b9fb87232a99345ebe2df2b67d120b3615d20dff950cfa64ed55a58", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "00d57714f843f0c84e8e038d0f0c84cdbb2fb2a9f303d860c01ce5955bc0806d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "861b0c8c336bd15e05840173ed7e9843f3f89af54e14f0e43ebf403f12b85f80", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "91c7b24b1e64aa3554db789fb1dc9d7d539afbfc8dec27dad8707b8f26cd2fed", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "32650b0357fc1a9aa16a5852d392852ee80896b7dad34d73165bb12bdd805355", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "18dbf37f650a41b25d7bdabb4d8157503bfe1f2692c4981e90066ed25e19c61d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b89029548e085f5906c760fb44aeb9bde52f7a3470fc74c87ffcbe1472c65952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "981ee57bc65ccc4da0c91b466ca7e77fad593b09d8df57bc12d02342f9fec1af", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "e23b5999b0a14587e1f54d5f77b72a69b9c8fb39add44fbba518967a5b62780b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4fef0de7e51a42a0acc6c642a96494d77d4cf88665986b958007426f86a3f264", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "3455e7b09149a64ab1a1f80b5f1147f6c869be87ca8b28d99141ca5073253099", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f40dba7c49074b982196d498deed029d203a6aa6ccb1e0363bf18270bfeafed1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b89029548e085f5906c760fb44aeb9bde52f7a3470fc74c87ffcbe1472c65952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "55f55a3fe4bae98c148784931af37d0761f3e180fd2ae8d93b58f11855ed1a9e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "55f55a3fe4bae98c148784931af37d0761f3e180fd2ae8d93b58f11855ed1a9e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "388ea466857b528ff96c6bdd2e8d0c2602aee0b9149c27c87e86f44506548ba2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "b8a3f0b565262e974c76f4e2a4f56cbe634e9fc4b1f36c9760c27c0f1dd6d646", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "04d81bbd8c796f8f9b2aa639b18e45bf00322cfd6c37eacd06fb0943b452e0d9", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "04d81bbd8c796f8f9b2aa639b18e45bf00322cfd6c37eacd06fb0943b452e0d9", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "6efee587b0266de4d7b9c658c49bb91102fcc85ba55fc4f4756015f2908e2195", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "6efee587b0266de4d7b9c658c49bb91102fcc85ba55fc4f4756015f2908e2195", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "feb04a7ca62b7b69f38cf20a505b7f3ed99531344f7247f8c34ee08d0510130d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "feb04a7ca62b7b69f38cf20a505b7f3ed99531344f7247f8c34ee08d0510130d", +"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "dbbd874d575d8f5dc935c4ef4490ea9f746218b60f30a89cbe3989dfc61d70b2", +"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "dbbd874d575d8f5dc935c4ef4490ea9f746218b60f30a89cbe3989dfc61d70b2", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "4741901cafb7b70f80376affc4418fd177ae83421b92e756a254fd4772fa307c", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "d3fd91e050a44114fac9eb6952a0f1ab2628cd35a6d597e8fb78cdbf63488380", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "e73f928982a26f650fadf5ce91c67e7920414bf0c59d7a86764ebbec9d4cbd3c", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "266b168901be9685a8e2fe3db87ad027cf66a77c19c7e0c88497a893c1c2face", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "0b9c74e0a6e03470135f222ca0ed57d16855859eeb89fa61f82f27aed910c06d", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "cdea333f72b8574aad3bae13e6ddf4dab04b6e7791ec1d5dd2527abddb5e2a92", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e17adfc379a7226283678fcf8d8e1813ed125a17fc5197f51ce228d0a1da3f06", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3617fbcefd913e183d976e40c2bab9409b2142d5d2073e7a7067664c6cab8deb", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "c6c559b391260cf6101cb82d6761af7b225633ef8a826c0f5cafb2cc7a976d05", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3c3fadc11864fe03ab033ca0b249b6922d3a1a3f9eede42e4ba67dd530cd7a18", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "b6a384c7b2eb0877297934ec384cb50564505c1e20df7ed92cc611902b092ccb", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "03d86bda97fdee6bc07728f9bef8168fb6bfe988c2c105e4f91efd7aa3491d1f", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "49105207ebe0845669724f54f5b78b886ef3b9ecbb614a6de32b52d783fa0e24", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "e93ebd601beec1d33f309d5a3635ba887c16428e3c74aba000ae32745603bce1", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "80a7864dab15917f55753bed31c441de25f40ebc028a360f9790310d2962b33b", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "dd11774a581d8ee3230b5dfc8c97c43e095dcee11e93a6ec1ba12cac57873469", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "4828e580111e6e58d9d4da29b3bc83b55c8148b4795e6b9939a52ad31d018933", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", +"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "f68fb96fcdd1992b7d4862aae552e45ca0adbd18a9d8ebae1983ed0fbd87753e", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "82d29029aeadea530de943a18c96ef2091ece8f10454cadc0b48e82c6ab9669d", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "eec861d66687cd2907c8b67e3f347dc276a621f4b9cf9501072350070ea13c25", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "877bb0866a8acac4aa7722b88ffe92edee82fd524099742dd10d1580f46df406", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "53ded9eefceb81ac5207604ccff6ba4e656abd5d1f50f69fcbc1015446440eff", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "1a0164d9064cf321d1d7a72d7ecd20b5ffb08a063916d4be8a3f9dcec685e52c", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "113fe8402a6016138495093b820772e3e3f613e87e0b26ab1b47d3af3a755407", +"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "c2ad4fba3f839d600f818f17eb4d158c32f1ffae993b8b420cf33a1ef9527562", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "52db7098a3a2bd1981dc9ce4bd52f9980eec0fc8afc22c1adb84ee5f0e137874", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5af8b7625ad91151eae81a53742608039c463bb644c980d293e7033f47bda547", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1f0629bda84c9c622005d3d10eadff3f5a0c07b8e19ba29342c700304b82c0ee", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7f9424a38701b785a6cd6facb722e0519aeacef8ba27b26aa633fae78d61c117", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "4405597b9c2c344d5f84a224f8b195e072c07bd7af0dcdef97a1a8c8e0d43945", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "eea86d11e0a9c8ac3aa5270c8c75f4ecfbc1ea76193459fd21ce9e376050a0c5", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "72d4d031ff5f53effffbc5fca666385d2a4f8c1369e85423f34f0c076b39fe69", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c84360eafe6f8f9e79397dc60e6d25d1158737942046375ea777fcdd93b2366c", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "877034fc23e3ce5ccac6a91d7e121e3e6b22c675820211f60c725d24c2ab602a", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "f706eec467ecae40f9ab0f067a58834ee28a6db38f2d5402624d43453d67260e", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f3affcd35144a75f48127bf591741513f381987a374a7f3f7048f84d42aefc45", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0bf50d0a98458cc9e9408524a070252426512435153e3386917eabfea78d8bbb", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "4fda97546076ae27f37cfb702dc872b02a1598fc2028000dc17c3c16951465e9", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "42f4036e0e9edd2e0bbfb749d7eb5d984823682258d0be8a566655c5e9795e4d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "265d30042ced7134404b7cd9c966e16ea2ceeb7d6b01a09d6bc380d18f37bbdf", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "eea86d11e0a9c8ac3aa5270c8c75f4ecfbc1ea76193459fd21ce9e376050a0c5", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3b90d4ab4ac667555cce35cbdfd6e9e3bac3af48065df8400d57d5c2bf8a0d66", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "581393a829dbc191f8f954c42a867b957266f3aa117c3db452363f6f98652aa8", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b7b273bdcfc162a1e89925751b8ba093e0bcb7b3ca1894ca0cf2d88b6ce9b511", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "61bd8ea84f4cd8675174825acca01c66256479fbec980ffd452f5dbe8d6f91a9", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5d4c3a2bbc7501b0a27c3332b9df57335bb8bd85f420f76cf86a462269319dcf", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "aba7adf8c3283c14744fa1fc5ee64bcfbbf948e1baeb0c9b23ced30347558dde", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fabac827b1ccae6f0a3c683d7c37dbbe1118bc5edc26d3b4c7be870a3ae49db7", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "76c044f76f5215c7573ebf032f9599af4c7b7f12d4e7d7b781c15669608319de", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "50aa1432387a36ddaedb62a79bf9dde301209e0635aebc6eff5577549159ac98", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bc5c2bddeade8a17421cd42c8a32d56d7b373eb4190ca2d55be784255dcbbba0", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a004391eed80bfe3a85e716311e04bcaea4223178ce2c24dd3a478c1103b3ae0", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "627937945fa769ac6f8a05d1538f0fadceac61a1347ed748a7c9280e7a223b66", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "901d35e416e91c264ebedd47854e9eed3601cfd851cfae5ca57940c1b5c3abc0", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "df132e2ca8201b12311cd4b525e108ace38049a4b95675579eaf2c4cfc0c379f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "bc727f137c9bfa6926f9da4645217b6003ef1b6c686bb165b1417afc15697214", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "03717e33ab843a8706c5cd373d2b979351e0408d578109f4a1cc1ddd1bfe916a", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d64a0585937fd4c01c4771b8fff082dea3b864da5588f88637f01210bd07e3c6", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5459bb41b69480ccf1850e3cd3edf8cce8b85457403a929f98cab17aa6d432a5", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "17db466823df48752dc7f66b86d46fc4c9242d4af92668aa282985f64e520130", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "b81c0adf31a42588f04333364365ae4a2a17c41bba10f739839598768698f644", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "17d88765a91d0123005233bbc9f943d67a021a7eb424f161aa80af98dd64d462", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "952df9449bc60fb782cae120bbf0ecdc39655f3d38496e9255fb182a48ba2920", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "82ff531ed0eb97c06266389db316df7a545c6067112f1633857d3187d1647764", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "09050e337c6400aa065c92d9c510c91ae8eaae346f3bf7b49ec368c5b7f1e034", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "97d97000da7a1cebb9a08bcf2d270df40393219acc40110b921d6a5d9e2f45a7", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9a1a20e008f16db6bd4d8f5d90ea9fc4d22afe30649e9e89d17cd4f6c135cfbb", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1835087a8d2a395640c278a5f63eb64622b489d8c6b30d22ee8317ee657340dc", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a2f0370e5a37eb2d77174256c5705da7f42f4538ae4500ead7b77a6347e901b9", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "01409726e771dbbcab57c49442ea30596abc3c5346e9d867e2254715fcfee23b", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "39b4f104836bcff59da1c1c5bb1d78c08ca53cf187a129997d06605911f74816", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "199dc2a8ec65fbc43836d8860362ea50d6eb6735f5626fa83f5d1210b65fadca", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2e335d0e2f8b532d3d7cdb1301d245cbd718ac65dcd6f3352c6c248bece4f369", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "85eab8d97905a70aa5be9a1286c6f46a0b1d2ba29abf1fe0d0a739936b6095c5", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "2fbda11c73b556fd2a5f595715a62ff466764bcb36e20dddffaa9bc02635ad13", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "b4715a2227510a184239ba6339b6f1a513035f1482a3a6e80eb97ade49613c2f", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "7d7acd472d29f57ce696f6f828fd38ac0c10b275195cc732891d068efcff213c", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cee5084399a8f4b5883a07d1f4e9304c46e873e72d877364889ff21833c3e9f9", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e4b843c22a5e37ceca78bdc3d40af5a5afec81e75f6333b55b30f0e79a45674b", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "5575f9075557997925ede41da1b52169847b9ec9c281b6567e44e50deccbff3d", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "7c036397a8389d730ba5dd3e7a2f1b3d30181c6950e91646211dbe4f6d99c20d", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4daba35b95525f64c127d341e52fdb3c4e60f9c48e4fd19dae1963b5f6380ab1", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "5575f9075557997925ede41da1b52169847b9ec9c281b6567e44e50deccbff3d", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "7c036397a8389d730ba5dd3e7a2f1b3d30181c6950e91646211dbe4f6d99c20d", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "4daba35b95525f64c127d341e52fdb3c4e60f9c48e4fd19dae1963b5f6380ab1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "d68925d21e5054b7ed3a144ebc1f2642fc170d6d71ce21cde7601d6d7dc5be0f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "9769b4a2e2527639b6076ed58eb36b85d8d6e9a3716b66d3d9e652fddc95a75a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "519961050798c1b8f7e9cc72125536bc4e404f7e809d8f819fa36839d34f9880", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "407ab994374981c37ef9e4ffaf65807396908fe6c3e8e93a37bdbbd2fd34ebef", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "5c0cb421defc27ed2aa06d29e13fa433e0e593067198529f78e8bc0abbc1ea62", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "d5e4efb9bb87547573b6671512656171cc9fe8641f75ee52d76c0ab8ddfd18af", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "6fcdae6d4ea015c3069692300bde8f39242d394ab058644f7842f97b47534ed1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "39766bf8a1b392d82cfeace3f271452afd47bb5f34edbd20c5a6f6de707c4a6b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "7a1708da08425af2d2d69a0d94eb8dc5f3fc36876f4544f0d7697b66c9d47300", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "be0514f6bfaebd5abfa72f0c1621349b132f31abc2f54b71fe30d79fb345bce6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "3c8466820460cdcb74ea2844ee15e9b7d8b89e353545837fe69a38fe9c60ecf5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "0c030c3e230859ffdd7b74bdd7f44b542e4d7ed8933e1114fba69040c9b16b60", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "15e4a164a234035a502a0404ad8cebb571bbb40241f421afaa3d5434685adf9d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "de50a8be8d2c82def4dc3d6557f6992e14df5b56aaa1fc4777a1fb290f808937", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "4413f64368aa65600c2eef8bba380fdb0ebd5fa6aa1e96bff3fe257ca33ebf15", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "8ec7b10b73130703bb989ab657127891a881e820ad2add435c3e112ca6ce5a3b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "03a07a82fdbc5d15c4f70bbe1c3b45ec8f73548e19c56e70d9d5240f6c322e7f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "0262e2420f5ff5d0d361a0ba318fed2ac235c764babc545d591495b8f6d47e51", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "e38db95a6e6ee5c4b7ddfdda419c6b96bb0370a756a55f243f48c56616235d19", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "831f407f68106a8f99b95228700805f5cf931acc0527afa1b17f397f9e85487c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "72eeaa191e20c1a5ebd70eb694a30c8c95be49eaab84440dd831b4629df043f8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "72eeaa191e20c1a5ebd70eb694a30c8c95be49eaab84440dd831b4629df043f8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "017e43fad631b5e9f8e767b10452013d6f7ba24c78414541fbc1ead0c6a1f5bb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8986eeb6fa815fc279576579003af4f33300d7f8d9e9e83255e578ce0e755530", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "fb1703c8aa6172dea0fb1d0e0e336059bff2b66dc6750939cd8b1fa0b4cfd325", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f0e439064b98fcd30fe96c75407cafc4f0d2688ff066ab016ba6be1e7841ff08", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "3b600bcd4867626782834a3397121ed7829612df0dd27aef9b31631937bef7f8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "9f86c24cff4d0ed905ced05485e866a19d453f02c7af64176ff13104b5d27907", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "dbb3c7a06e0852972bdc245d84af82331ce73cce8691adfe9634c2a4c041e4fb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "e06045ee8993c40bc1f3af0f52ebbc94ae6ae6d50fbc4ab403e759564bb58c4d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "8541983a434aa2fc1b3d6243ca94b101a7118bf1d4bb0a3b4f555536b166e027", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e4ea0f7c3bd9626722b162d4893d06c9c82efb8cf624cc8600a6eac02562b053", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "f095c1b0d2e849c90530c85c697a1a6d32e6d6f3bdb60962a23ada9fc0571e6a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "a470fd4ce8174ac29fa748ad7731a9911ce66ddca83f07e4187f08e2aadb2912", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "9b7b859a926f061dbab20ac12fcaa2c3bf0eb65e5077001dcea133664dc1e4de", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "ee378ace31e56b3bbe3cd4c9b0754a021d4b4e14dbd270d96ae99efa65ebd951", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "8b3c4d5d318b794ebf13de23a4be2ac8c4e360623bb5d48d5bd80f00a1b83541", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "29cab40f3188a05a75fb1b6d3efa02c1bb089aca859b6e356377631c51b08eaa", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "33cdf87021ef73ea36fbbc15648566c55ecd5518c7bdd22786b6da5eb72414eb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "14cbcdcb62f6df7bb16040f9f8f4cae466c0ff9afa4d266f1ac5636486d6d765", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "60b2321884b4076a8ddb9c24f58c786b46e8b47af656177207c5fc34cd49fec9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "948f2babf288369c3b2395d52a410df06e1a61313eb5c0d9b1fe7c06e3d709f6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "a0cde3aa6d02d7069702c4980e80c424246ec0e11d310f902d1f60d435738602", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d870f2c5f50c3ead795feac72b91fc77e80ac8cc24ac27273f57c66b84a6bddf", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "d7ad58f457c0414084e9dd655138d0556174d03e4be58f1a4f8dfbc2437c902f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "c8116ed1de66dfbe36038bee97ccf4118deaa42f29e03ddf089a60633dfe085f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "206b3d9c654689743db3fbdd7b35998789494d4cc924fcbdf96857cc12ee61b8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "1bb110a9fd6e2b7a71ef06e93666db8a819e7a203076f06ed281ff89dcb56995", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "923e35d7ed5d217832ee68dc29563fb06dfd292447a145f458fdf1be46f16682", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "29ef0836974c95d92117c7983515d943adad30dde4ee39b80fe34edcd0823d8b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "cef921b51c63663f5f951a3c20d0cefcc9981c3c14e7b8d0720b87c130340750", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "8497766292fbe04db6ede47c9dc31bb71e6d74de1cb27a427d446ca36dfed9c8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "84961bbe095e300f343675652857642d15bdbf258ab10be7d5884316c8bdd8c4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "feee0b2e87cf095e9b8865931d2788c3be00b4491cce8e33e2c3ab8dbc073272", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "007cd22939b68e9a2d5d746f86d1fd2c78d075047991e77764537f81fe6fd2c8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "836e16d51844a8b1e442451246254fbaa0ce7b4e97b28ce6140d3503e6470175", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "e2ceffb1d261816c4152b052cbb520b4d9ab95e22b167044cce8b9230f6a19c1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "fefeae02d27f57945166f024c32ec5d09c0ae1b2bc88aaaea9d0e5bd9a105a83", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "e4726ede7115a673df46fd727eaa6926eabeb3665936ac23fac4e122ce29b786", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "fb1703c8aa6172dea0fb1d0e0e336059bff2b66dc6750939cd8b1fa0b4cfd325", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "a705adb4a33bc9ac88fcd2d911af43da4573281291a5d021fe971e13b0dc503d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "621e41002a63c73a2989209c5b996d787bb8de2e1ff8387eadf7864f05d5b4b1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "ef91e4736a3401df7b7b7ac04da86b145537d9f0ac4546cc269d04f1ecfd47cc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bdb536b12bf6bb24d78f8a46fa02445710bd7f4de7f5fc6a143168d27cca066d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "cc9378088516cebd3098c9745fe508f5ad373ceda72d31fe1d78b7be7c45daf9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "452fd8c64a7c1f68b118abb244b3af39fa18190db979525f98c7f510f2d532e0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "e62247465ff7b66dbe313372b3356dfad05ec3c5170acd470e6b57e58c3f32fd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "970754cb71d9fc1253abe1ee287b4f4dca63d6fd213d6007f2e101cc3f6274b5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "ac149cbd3582975d1a1a321768a42b3eed0a6549ae7ec2caa6d9812edc567416", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "5abbbcb384956b5db36269708136ceea56e14dcf664683f2eaa5f12a20030487", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "efc7535641a9fcbd922fd969ee6d1b86bf9a2dc972bd588ea2f0d7c1c47039d3", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "105d4e05b5be217a519088660a98b46cedd40713f3d6cba26b881c4b66bdc720", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ec61f9f63a1c1add37cca7425015c6ffa25a261a2ca446f9f5e8b56e23dde258", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ae578bf3a1dbe54416aa618b6e1ceeaaee0ae1a8dcad2678361bc77cea14bc17", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "0e266b352a0e53f2e898b41a0af3661cc9e5a3bf16dd5330c8c13c475cc3337f", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "f3b135e825b7f01b4a7a34a44b155e2e2d9417818e56bd410193a1a6b5dcb4e3", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "dbf5d187412eabadf3789d9f20e4b4c918803594dee8ae32217e9a85314f9f6d", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "567bad28da9ad453803be84ee35a526ba002c8fb8371aabe4c04f07dd6e3e885", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "722a5f39f08d25d0bad6d3338842d812f2d4a46a846efd55aa76c58c34a783ca", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "638d9378a6bd685bbcaa25eae5bf3a26f08c3b393de4e033608ac188fc0cdb50", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "ff7eff495b1805442711c52b3ea0eec39d0f152b5d6ed6fce8a05daf0ca6ea29", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9eb7fc80e8c457cb8d5e4bfea8dd8f49239ae09d6cd964cf951c8c609ff9145b", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0fa15a78a3a2198d5f00d03e5d7da0aab208ee84847e328d27d6307504d647f3", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "fa9df1988e68133fccb5da5442665b48042d692f16f60142c6a9f49c0cdb6501", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5ad3e05e2a9e68591f6aca07446fadf0a0f6dbf42a0b477822fb0c6bde106b69", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "8879ca43a5f3d7c02059e974f40ee73830eadaf9aed3a33da6b50abc8d55a8c8", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "75ae7e21243bda6fceca8c3f1bc18b2f39cbc072dfe87673fdeb180bbaf06edc", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9c2552ca2482d24154b10a7033e3b1f1d8e9a3560c30c1451084de1c02683a9d", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c65a2192ec2e2bd7ad8e8f1a3a096d8059b4448119c6a4d668608e9cda27f685", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "f39731e6443a68f839b9a3d906d46f2b3ca2c276b17ef088ad4395cebf5beece", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "0d61dbc1333ba2059fe0dedcc448c245c8bee77146d2e52685c5db38b804b40d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8e8660f4a640083bd9c47a02e15114fed54fd873f63c1315f8b7b8c156653480", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "37fa589fc8cd858f0ec7490e3165f1f7f157ed0e000afa29245a20de0ef4cc6a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "49c4ccb1cc29cf7203ac6906abbda45feeb083f0516644103d473db24c588a86", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "748bc387083b0422777ed9f3055189b9d38131f4d7d5d40c7e0bd48815cec6a2", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "d3899b9e4999ca57a057f2867ea5a29b2f05c4fd28d2c7f4266438d21a2ee5f3", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "6e87f7144800449104bd04e18cb546098be49de2c564f8050d675e77eb51bf1f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "873c7bd7be075b1e917819b019fd490840dc4d076abf9052498702c195160a72", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "69a03a8308112e7caeef5fe0a66ff1d4d59c3c8461c51a3b74a5e699d631fdb6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "25909a2de313676045e96764afa3dccae439b1a9b43c223d0f9ed2e515dd777a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "1634d613f74b7a927645b477da8a87315adc5bae59a18eb47660d3be9b690f43", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "925b8182f7983d5a7bd19f9ad5e4fb90a5f905e8e9999d367446129b1b9a0e38", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "a35d841544daba5fcbcf91c8d2db500a2e2bfdd8bfba1d8df8e1e6d5995802d8", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "82104c889d2c324694ed8de5bc795e12b1a8c0ce3d8320b0171fd769a630ed64", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "a8127e58ca4d65edaf42174dbc411867d32c71d9a6b4d05eeb34961d75c0ec63", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "a51af9f3815bf5e4a2cdae4a7d09d99a097a823fa76daa7afd4ab2915380bf60", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "e5911e5bfcce0117e92b69e5e5d611a219f2639b461edbce7f50441fff4ef37b", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ac2cb895831f6bacfc96d7fc81c13b79f8e32e374468af63f439027e02e0c6b4", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "a1908292ee86bc795433b4c0035d5a8a31a19c2fe410eb640dad44b51d25fdd4", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4be44bb7c2d3b7d955169c697d8880e0b48a30ed4999f304233aba77d7b2fe6c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "c259a1c02d53ecbdf68a8050ca79e30614a4f8c32b911d8e11a991d4fef9c8c5", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "4458e22ea9cc7c53ed36d88f5d9de2a308085e9be21e46045dd116b07c0c19b8", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "820a7e8f63a9333f7f058c191573ae64fe84b454712b902cd353632ee7338d01", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "82286befcf3394543b4721f68fb7788ff7863d35291f4f66c087d292f2e521e6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "e10cecf1f6a379c1fb46742ca416d7ebc6c7a9d2efe09cf99e6ee1d9cc1fc403", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "13b7be4db18f2f15a2a4dd259007153d3c2583645c07f57a293e85af4bec208e", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "2dd58b78cb48f985da96a43bbfcdb0fe1856a38ae13018388ac0ecaacc140596", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "4776082c805e028c352d8b98447915c892391a342771f8814f6508bed1b4c4b6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "a51af9f3815bf5e4a2cdae4a7d09d99a097a823fa76daa7afd4ab2915380bf60", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8119c8269e4d60b6eb622c7e837f3ce1efdf5672df07bd3065a1513c41e62012", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "b2873afe20badad6da21f7d58b0885ae34803ed06e73b84c58ccf8137b5a83b7", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "00ce0214d3013b1294dd264dbf2dbac0384cf2adece74e50449d2aa59a51cc61", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "f083b60a9154f9c29e5e2085928eee02959389ce5981f36ccf537f93c7f5fbaf", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "b6855f4d7e4a47c59d75023a76d3bfc45f3294a36bfab47c5a462539189ab071", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "002f41fff6c3259e61b6307095d3b50019b7e3ba8cb4bb735413b5281b7de715", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "04c05144171ebe3ed2e40ff0e6af377e352329c00a61db14efd932fa1f8509d6", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "57da1a745d63ea7bbba99c1441ffe0861ece541ddd98a300b54deb0405b6b58c", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "08e8cb5cfe5bedf7de1de32f07df35b035c53ff987e32373f08f4d75adc2131a", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "49318ea696540f450d78db3b0f2200fd164171b1345822857ef985d5b6bbc13b", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "805ef0ea38be85311f97d12d2534512568e6100c84ac4c4997f49f5f76c5bfa4", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "805ef0ea38be85311f97d12d2534512568e6100c84ac4c4997f49f5f76c5bfa4", +"T3T1_cs_test_basic.py::test_capabilities": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_basic.py::test_device_id_different": "2f03f2f391cb5aa5869185bd3ec61c6950ab1840df7d080374da4cbbc0fcd5a3", +"T3T1_cs_test_basic.py::test_device_id_same": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_basic.py::test_features": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_basic.py::test_ping": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_busy_state.py::test_busy_expiry": "a8eb606df59503e493251b5a6160c7b879d94d8b0f759576824c5ba791683f93", +"T3T1_cs_test_busy_state.py::test_busy_state": "97942c41e15c2b4493409490623175bc2e64528eec73bfcc433749578dc9fd7a", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "582a62f5e0fb8e708b4baf2f9ae96b28b50534490c649a9c490469fab9960d5f", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "582a62f5e0fb8e708b4baf2f9ae96b28b50534490c649a9c490469fab9960d5f", +"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "b2fa01ccafe792100b10cbe3e782b81467a41eb691fc472c049964a6de3eeeb4", +"T3T1_cs_test_debuglink.py::test_softlock_instability": "b15f7b01f3a6e894fa328ee2af40a36609188c128c45cfac2883b93c605243bc", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "a8e155905e496567054ce0c74ca400b689873426fdcc4d14152a8458bf944772", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_language.py::test_error_invalid_data_hash": "e6d6d7f9bd44e0285df8e3e1b15233ac17b6f657369e23cb20a3e3e722aafc91", +"T3T1_cs_test_language.py::test_error_invalid_data_length": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", +"T3T1_cs_test_language.py::test_error_invalid_header_magic": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", +"T3T1_cs_test_language.py::test_error_invalid_signature": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", +"T3T1_cs_test_language.py::test_error_too_long": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", +"T3T1_cs_test_language.py::test_error_version_mismatch": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", +"T3T1_cs_test_language.py::test_full_language_change[cs]": "b7418558244b103f203406ba3ae3d1de0e90604d56d3c575a24cb5435ab5b6a7", +"T3T1_cs_test_language.py::test_full_language_change[de]": "9e89ed74f1c68ee828833824deae7b5d610710d507cecc869a6e0af05fba7dad", +"T3T1_cs_test_language.py::test_full_language_change[en]": "223dd6ed3fcc8599dafad1aee7396704264c7dce9eedbb1b0bf2d3808bda040c", +"T3T1_cs_test_language.py::test_full_language_change[es]": "fbbb954ff6962e38c3a21a26fa9d2f90350ad0ab1e067b9ca054f3c24c9fdbcd", +"T3T1_cs_test_language.py::test_full_language_change[fr]": "e72336760b7208e70dcf6498a80379a718eb6e266b71f4d61d977666312ef7be", +"T3T1_cs_test_language.py::test_header_trailing_data": "a58473afb390df2e2cf8fb41524e7646bd21ca21b46202340a359c1ca9bb5b50", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "4f72a6f31afef818e20170036826d9df710faadeb05fa23fdd3b5de26f4deb4d", +"T3T1_cs_test_language.py::test_reject_update": "7ec313974c92ed96611986639eb7be0e088f29a0b0217b496a2f3d6b61356d44", +"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "ee85f0bfcd58a0b00522ed20a85fdcac6a68ea0714eed0c5a3b2582c373a1763", +"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "ee85f0bfcd58a0b00522ed20a85fdcac6a68ea0714eed0c5a3b2582c373a1763", +"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "87f80a5b709fbaf73f7ebc45ddc28f77b44a81b8e718ca4cbd56a002edd8111d", +"T3T1_cs_test_language.py::test_switch_from_english[None]": "21aedd508efc0c75b8da70f60711ed76f64e97700b9bd8ccd501d660d0ff59b2", +"T3T1_cs_test_language.py::test_switch_from_english[True]": "21aedd508efc0c75b8da70f60711ed76f64e97700b9bd8ccd501d660d0ff59b2", +"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "64e4f351a09ef700c7d93cc37c044f8484970cca8cdaa750c4c76e88e1f21637", +"T3T1_cs_test_language.py::test_switch_language": "e92c907cfd5e5c08d41c57f81328c1ac6a7d8346080eba67f7c9641aaa8f6cfe", +"T3T1_cs_test_language.py::test_translations_renders_on_screen": "ee1f3ed7cab49937f4cdb5d3b6131768140993499b47d00dda4908817bf53c38", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c14ecb32236855485e72ef80939b96674cb451b2794d5fcac6da94ebbbb08317", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "cdb49dc72c3fbd6b470647819b90ff5f89ec4726acf5a360e33092ff435a93fb", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "67cacb999dfc6ff39c7598850509d69dbd83ae75a6d71792a670f511629724d7", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "1285f24ecf91592713459fb08eef26fea8ad3e991430a036683898ee3331143c", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "2a740a799aee1e445fd3cd0cac9887f07bbebd7c7a53241bd3942de7e4a4fe6e", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "be3369ac665b4e859fe90b6d11adf963cffe97507893cd07a8c7c1da429337f4", +"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "1360e95fc16a0104ae5084aac8bae2ea6f5bf8c9319683be5082d2ea6eaa7e56", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "6812c868aeb4528fbca8e80e1525dfb8ed2d3391826d9243bc27eea8c5237c7a", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0881843a5a92c112441ca4dadaedf6ce4c3afc54876c720074910c13760cfedb", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b79cc6e32cb4f7eaee24d040fa935f0ea62366df696af7822e05dbe3df187d9e", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f81b507c05786d86adbfb49d79d4dc04ee80b765b156ae6536dc93a44f0fea30", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "317e2efae827c651b56e659b0f306c6bd4c972413f2ea905b8844c505b67e236", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a7d109a6d982c5bd39008980b1fa21c1b4b6c3787667594951267b2d274837aa", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "adddf01ae5b0a07b725921839aaec838d086febde6e84673792e4c16fe286350", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "58498fb179f6161b64552bc27bcea5f716bfddb21db51cec015eee557dc063b1", +"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3aafd3773ae4a7d30619159cec7caeee0d49fd4ad4c8071d59087e076163278d", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "7e9648fcdd3ccbfff6961cbfbfb114630a0b942975759b7ee1a009d223c4c018", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "fcf4943e64e331730c0141968503b939723242a30fff50684141f49829f1010c", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "231fb7ff44f1aff750280602718f84348de4457bf952e8598a334fc7a27e2822", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "03280b56e105ab8f285a435f737f116cb7a2dec875a8eff3bc08339169656e93", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "eea0b91313856bd365e052f5a363ed46928bafff235e344f804b8b12cb5f1cad", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "1c81b081fb05d47982bdd595e3f71d4a911530e08dadfd5fbfe118421d0a66e7", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "e508b79f30baea0c05b6989aafcda142c1eb4751af38b3a0bfea05e30bb8d56d", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "7e6a3b80d28d7d3496ab9e94c392b3a1a66a618fbd12d2552a327f8d017d5586", +"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "d57405f5be43c7d0771c6153bb27e6abeca32cd50b0f048a4010d5aa15e3182a", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "730b9ea97861bb3a2d375ab44ebeb81418949966246946ca906c9135e0cdbdf0", +"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "69928e6b1ff42739a3dbdc07f6ef6ac0aae3b6983dac3018b03b325b96462f87", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "ebf8a6aac47b252d84ad970de97f83ad0f8e00fe5baef5d1cf46362900b5adba", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "27079a140e0d36a7e735fc5052cf1ed9a0a9e6fd8ebf38e129d55ec54a0bdbb1", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "16c6b236d1e7d0ba1f24fa0921203afb2a2d4508d86ecf4c35d0e816bfe77e8d", +"T3T1_cs_test_msg_ping.py::test_ping": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "d761f9a9ba40ca640572cbb95daaefdd8a6fb828f91547b41ae9e9cc4b071bdc", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "3ba6fe4f822ad730666aa7df1b129c49432fec58819d843368308aafbbdb4f7b", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "404eeec69de878aaad93ad8bf14c5614daa704ff84220ef288e4f5975fef2ea3", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "35d5299b8abb4b410bbb37e808a588b3f57191739ce433a23c9c671b0230a84d", +"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "2f03f2f391cb5aa5869185bd3ec61c6950ab1840df7d080374da4cbbc0fcd5a3", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a13cb96104505549e4ca94f033982cfdd70638c9b99aee3aba62bcdb77c2cd8b", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a13cb96104505549e4ca94f033982cfdd70638c9b99aee3aba62bcdb77c2cd8b", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "8ac6289bf543b5b315741e4a042a1155720b0a253bd7410f87495cfa94db1542", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "8ac6289bf543b5b315741e4a042a1155720b0a253bd7410f87495cfa94db1542", +"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "8ac6289bf543b5b315741e4a042a1155720b0a253bd7410f87495cfa94db1542", +"T3T1_cs_test_pin.py::test_correct_pin": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "a40f3726f1b5a2145a1eb0745803cd0086a6c550d0d9846c2175d1ec0b638881", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "ff6c97768bc0fe1be25b76a13ee4c7ac7c08ff271f40feb59b857c528a7c828b", +"T3T1_cs_test_pin.py::test_no_protection": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "fee897460806664e2ffda41e1ab8bf78898027943334e5f2479d9eda964709ac", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "0781ec4ac04e6fdccc7a45aa668242dbc428b8d299225c4ece7bf3e4d6cf093f", +"T3T1_cs_test_protection_levels.py::test_get_address": "9bb7f802ac319ed51025b097d1b6b5698667a2bd8c90aa0ca913db0a8ba58b4e", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "a6956bf9e27b1a439e284617753dd47d8ff049ffbd464b60a4b5536ccabbb688", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "9bb7f802ac319ed51025b097d1b6b5698667a2bd8c90aa0ca913db0a8ba58b4e", +"T3T1_cs_test_protection_levels.py::test_initialize": "10bf68a44aa2d0ac5ce5cb6c2af0f15eded996ce80d3387b34a36ef1f27637c6", +"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "8aec63309b030668079890b7f371c1a4ebaad083b393c9a53040cbad4dbda112", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "54e12d70d2d08d7813d0a4ac80503f7823f6bf39ea492c62cd9eaf25462ad01b", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "7f712e6d4c2ce9d2769b56c298898e943f28a417000405e5c3fab99590e9b44a", +"T3T1_cs_test_protection_levels.py::test_ping": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", +"T3T1_cs_test_protection_levels.py::test_sign_message": "96ff151cadd7028343663e5511d3d5fa85ee2b78c87208723294236c617e3578", +"T3T1_cs_test_protection_levels.py::test_signtx": "1b6511c341fa12141f1689e680966bd29378a57e16dc45592f9a106925b0c336", +"T3T1_cs_test_protection_levels.py::test_unlocked": "854ce0adfc5484833dfc53d50576360845bccb7b90f79b483390de89d1110ad4", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "6ae0f587d7912085cabb946b309ef40bbdf395f6262874528b131c802cb91de1", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "2f8c6a82c0ef95ba95aaa61ca51f5ce5d6e41eaa393eb77888a787ace26e62f9", +"T3T1_cs_test_sdcard.py::test_sd_format": "b63a9b869f151749ed52f553205efe47cf27e739d619207a2da01edcc45fe25b", +"T3T1_cs_test_sdcard.py::test_sd_no_format": "211314ec715ae96a1f1d7b617189a8bb9675c3d73cc10c057c6529ec9b8f4d05", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "2d1a02d63396c5f1f40cd11ca6f4fc8dcead9d7a55f8d65fbff608d2f62a324a", +"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_session.py::test_clear_session": "3d578cdd2c7e331cad784d6ec6f4c3e239478b5fdd3761e34ed5e2b792a0e658", +"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_session.py::test_derive_cardano_running_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_session.py::test_end_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_session.py::test_end_session_only_current": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_session.py::test_session_recycling": "8ac6289bf543b5b315741e4a042a1155720b0a253bd7410f87495cfa94db1542", +"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "866e27c4c59c27ebd60afc8d4d1c3a3fadd5d08070ae6f4d0d98e71e4254a0b1", +"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "bfc71ce0b23b4f72b13ffc2af3e002b29f592f3e1fea1fb7af318b1a2e91dbf2", +"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "4267b115b3dc46904aff4af7ddf84bb4d64b35fd709babf77fb3a08d8d425182", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "3e74baa179612fd184faa29e0dac12cc90a8a177c0885ceabab7e5c71a8ebb1e", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "b1fa3c7e1abf533516550ca0848507bd4df09b6ab18a5f225ddfe470946067af", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "2a3707e58ae4b9d59e1d6fa5cf149d1d021a90f749976759b0eade9c433dc99c", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "8aec63309b030668079890b7f371c1a4ebaad083b393c9a53040cbad4dbda112", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "ccbc7ae08e03db98d0a1d5e30b2f820e4436cef744b14cea023dd28a85ff362c", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "bd9359b538b621f74321ec1471deebadb2115319523ef86e527e9e9771ddbb18", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "1625ed20bc99c6715b5c98e674df141c197d175cfa4b34acb363b6844801f6f8", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "8e04a2f86ecbc6322a3287114e0e8371d2166ee43707be8635a463e6698ae99d", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4d44868cdb6079e858e6df1ab729e96fc90af0fa31467480ee2a563b1801088f", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "370180296eec655545bac24a6073b2a17049c60fb994b6b155b1964085b260e4", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f01e76a8670bbef776f509e08ac39d0946433317c7db8cea9fbd08bfc8a6ae47", +"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "5da9bc0eb9520eaeb805194fa49d92d9bfb65f089454364ee4c875861d9f2eb7", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "a67b7018c6dda8995445f40665569af862969f091b2d90acf800296afcaf018b", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "1b5221a702751a6cc6711b1a17d218a71acaf71dd0cc6da926f80daff149b616", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "c93dd3f5e4e929c71f4d71dbfffe3c7d7e3031e226578c45150d6627786b6197", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "13b39b2a69de1a9098ef6268430d549da1ec7707ed5886016015bdc3f8e1ffc3", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "bdeccd52c9e50313f9f7e5a7365bad791117e9ed26745d0b452de6b669766a85", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a439926dcab61340a77192521df5be95f82395b8baf34f2b0cd1de57f5a866fe", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "da6475e0cc8df4639bf72954475530b9178ede67d32dd7f8356cb6dbd3e2bc8c", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e23ab3a5734058eaf08cb9da7e2fec8b5ce596006763e4991170984acfd1d3b4", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "97febf9f32a9a50bf74c3020aed0881df6d70074f7ab01fabb3556019e2cd7c6", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "c7dc9f0b8e66d093cc48fe1e04b72178feda2f522927ea8e289036b7aab9816e", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "ae398f7b64990c58b9ee1c91ec5d4e75c3c48daf3bd359b8a09e3c723771c3fc", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "05bd92436aedcbcd7e641eaf2bd82b9f46e9b3f3bd610dba24b0774dcfb09948", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "8aa6ed1d1ffc8e8116ef483474181810d87ec8c429e738901dc44b8540379c2a", +"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "59d1af33983ef29c4b81f494d6b6ec8ad7c35cb7180c4bf172714976c13e2a5c", +"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "04665a8cb7f66dc80986034f65e74891410324069615160789c29af8c4dbfda2", +"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "406306bb072bb7c29f6c796ca64800c9b185ec9499ec8b6b3e621c6be36e9220", +"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "8e49fedd0061d7a49456834ad647a27b3abfc30e49885aa585adc5366f54adc9", +"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", +"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "787319b044d04a9fc9ddb760b40b4c5c73b763aad13ebba309c54432254758f9", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "9da0e0161b6bc3bb99ee7f776ba6548c7ff07c70d41d1b7e0aa9935814f24f5c", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "223f9feb419ecafbc1a4df88f45e448b711dd325500a97e95085f3ebddd6515d", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "62804bc8c25e5d7beb752b082543c5e4cbff4d73c24f716cea75baeb98253f1d", +"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "1aa2dc79c2ebccd4a011a12603ad8f52eaa72c8213d92600d8ab76660b154135", +"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8d9e5a25b44240c66d469ed1daaff4fc438c61ca63f88687d345c57244f7779c", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "08f7b648f1e834a2c78fd9d0299370425279f9e8e0b21fa79a5bf5630002c4ff", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "85a5e96db5591a3d6039bc09b05c39b95e787e4d4df2f317c5ae7adaff4758db", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9320527fa4c22ddc216b57ce8497a2923b1421fe1db82cc717d2f0e0033cab59", +"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "9fd562981606315e13cab64fcd17f41185b006b36eb1ced9c0bfa88fd6707376", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "6c44240938612393353f5d8c9e4ef763706e93438a53f29c01d6775736aa19cf", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "b64cb53b1808ced8c5e57a5f65ca2b023b2d560f212019fb694614cdbd6cc52b", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "903f4bd8bcb692db06c8d2c40296a96ea12bfd473e61d572383ae3128318c596", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "6c44240938612393353f5d8c9e4ef763706e93438a53f29c01d6775736aa19cf", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "b64cb53b1808ced8c5e57a5f65ca2b023b2d560f212019fb694614cdbd6cc52b", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "903f4bd8bcb692db06c8d2c40296a96ea12bfd473e61d572383ae3128318c596", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "b35056fa7fbc86cbb7bfabb779b68937e61747a8531c84048a72010942d8452a", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "824cc304f4dec6f41f917b988b61e22940ba3e6d6706c79ad98f8e10018321f2", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f2404a835334d0a7ce6eba5173409085de7ab11bb2786ddba24c0611582166df", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "9c1ea474b6e464920b76b3d03a72799ce0da9ca046536f92b1dc8f81c53037cd", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "d492be11d1932fa4de33703f4cdb07f3d97acb92f8cca81b4d578cfd5afcee26", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "d492be11d1932fa4de33703f4cdb07f3d97acb92f8cca81b4d578cfd5afcee26", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "66425ec5e7fb12f162566b731ad03f9308c1d2966d43ed484b334a5acca5b400", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "b0ce89a7f6fb227d24e2ddde6c17638ac12871364adbdfec6190325a5046f4bf", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "8285f1ed276ded94dc4c3732ab6bedcd914b2e2e2c3b92c9b3438f5c01979c89", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "6ab0d7c158f6055e6e72d79767f96c745ebaf25909eff18be2595af32015ac96", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "6ab0d7c158f6055e6e72d79767f96c745ebaf25909eff18be2595af32015ac96", +"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "eb7719abe1c31fc06f5650a320a6b2ff4b57cfa975684b61354ec37f9d714d31", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "eb7719abe1c31fc06f5650a320a6b2ff4b57cfa975684b61354ec37f9d714d31", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "a2edf522ed74e35bb7d59fe6e38efa3eff4a5d3d1971888174f09617774e2fba", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e7082de3a7d4e131ff165888000ea0f4aba9279e58fc94e626209dfe29260d42", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "d85dc92b67eeb7481fe88c12d46cff0b01f124d7b038adc45fe4e93e9814c20e", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "f3f75db20f618ee3a01c75ebb39a6cfb31e2616f53eddc5624684f7dd5729170", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "940784a99d74d66fbc47bd91d1744345cc1893fe6b34b15f2dd0e91865a50587", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "ae44907a335cfbf4a16064fb7a85b1943d06f2a9f419fde5dfc5b16472ebada3", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "2af68e081afa71e926d9b9c613f1f2a75541c70793a904914b53b8f265a40f7c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "627e05094aedd5d975cc53c58a4ad85d7837c0cdd72b300875ad0043d8903b00", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "140969ce61b985c3c9266c28456e77a2fe9a447ab8262b9321956dcdd336a20e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c1b6fc5f843a9d5efca39ed97d4872a4c1783f9c3fb1c9dea910e4a699b22387", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "611314b574a1b6ff6157fc312b1fe1f27c539c7538ecc79c314c05147270ba7c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "8aad91ba19da1529d1f2b159c009f74383eba0b51ce791d7fa74a906293a0c02", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e581e9be5adb52e240fd18af4526e2f61cd54ad1615446dceb50a350124b2f36", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "cebc94dc4501b50519692cb991228b5436ee207b54714c6d65b61bd7271f6ffc", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "2a1cee20408b59ea325f890a2914312cd11ab4b71c29720c7d5a0a6b6210da79", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "39f71fc1ea10f85ec5348754b0dfa087aafd9b9e850d491bbfc472221f554e02", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "0571fbf3181eeb2eff15b88a4dc18f6749f5942f9a05fe1402474cf09f4661ff", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0073d7b9fcb4253ec180b0fafb6de40d58e4e53d8b972a30ec3b5699e3e1e2c7", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "27b60e14f58e409d234f0c1233451bfd4104df2139e7479870839e8d69f6bc7e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "8c82653b27031c164d894fb29156dc08ae074da5102ebeda3f2242ab0d9460fe", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "c7a87393c50b22c4975a208654a84ee29b5a09e77b44f7591060e34edd9af216", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "1a2d4c6cb1eb7570e85e9b20b7c99b6ee2e296e3780f3dc9575496f0282a33b7", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "9840c8c58eaa585e7d57011428915cb3ac8dc55cdaab10834be8ee74fb045adf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "ae44907a335cfbf4a16064fb7a85b1943d06f2a9f419fde5dfc5b16472ebada3", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "2af68e081afa71e926d9b9c613f1f2a75541c70793a904914b53b8f265a40f7c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "627e05094aedd5d975cc53c58a4ad85d7837c0cdd72b300875ad0043d8903b00", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "140969ce61b985c3c9266c28456e77a2fe9a447ab8262b9321956dcdd336a20e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "c1b6fc5f843a9d5efca39ed97d4872a4c1783f9c3fb1c9dea910e4a699b22387", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "611314b574a1b6ff6157fc312b1fe1f27c539c7538ecc79c314c05147270ba7c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "8aad91ba19da1529d1f2b159c009f74383eba0b51ce791d7fa74a906293a0c02", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e581e9be5adb52e240fd18af4526e2f61cd54ad1615446dceb50a350124b2f36", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "cebc94dc4501b50519692cb991228b5436ee207b54714c6d65b61bd7271f6ffc", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "2a1cee20408b59ea325f890a2914312cd11ab4b71c29720c7d5a0a6b6210da79", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "39f71fc1ea10f85ec5348754b0dfa087aafd9b9e850d491bbfc472221f554e02", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "0571fbf3181eeb2eff15b88a4dc18f6749f5942f9a05fe1402474cf09f4661ff", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0073d7b9fcb4253ec180b0fafb6de40d58e4e53d8b972a30ec3b5699e3e1e2c7", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "27b60e14f58e409d234f0c1233451bfd4104df2139e7479870839e8d69f6bc7e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "8c82653b27031c164d894fb29156dc08ae074da5102ebeda3f2242ab0d9460fe", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "c7a87393c50b22c4975a208654a84ee29b5a09e77b44f7591060e34edd9af216", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "1a2d4c6cb1eb7570e85e9b20b7c99b6ee2e296e3780f3dc9575496f0282a33b7", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "9840c8c58eaa585e7d57011428915cb3ac8dc55cdaab10834be8ee74fb045adf", +"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "5cd4b6ab4dd9acdb12637a9642e213ca1d28f91bba15cae10313596ffd55d233", +"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "8a0e56f92130a17d02518eaf3b99bf501c04fc7e7a4e8c3e7e5d288b21c07a44", +"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_bch": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "96482f7709ff16f2cbece01a48ec9eab3560804dc93c57a00fa771045dfe5295", +"T3T1_de_bitcoin-test_getaddress.py::test_btc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_crw": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_elements": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_grs": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "54a7b3f0a411b35d06209a3cead7e97589d77670dfb6e7240865a387ed425f37", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "8e0d7322080a4942ebd646e6bead78b08b02796d74e828c9039f8948a56f29a5", +"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "4dc120517434ad9bfe128fc90239b5219e39eb934205a8fab3d00c0a9ff2d73f", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "aae6395b52d96d51ea96b7425e6d8b513364655d067f1814cdbf6805e0f418fc", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "bc2c5e3912985f1b1151a2712d85eca70a1057f390d3d27eb52fcff39b5f5d88", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "e3137b2e0c19fcd9a33498d40ba6adf4d839aafced883873f5c433390c4b8417", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "e927e877a682bb46b3517743bfc0f0003f64c656bd76df307c4d7c6d8b8d0ba8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "7ac4d91699145537d3a41953593a13423f961d08830b664f390cb590009bcf74", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "b739d75a50ae4913551fd3a9019b374fe2d032e9b327b7f264dc3d8768119bca", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "b5d03df09cd7a99818398dd3df036e2441d956458158a0244e97f38d34078db7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "09d6fcab49d2a46328131ba461495f3f3d88820405d4e55154ed65304da17bd5", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "801069c777373fe26316ff95bce47c2235e8cb670726d4dd047767718f7f7ecd", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "34a48ed75da0f9475770aeef2a18b9425df8307a7138a0f08807d921c65aea0c", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "96b0185859576cbc7e9dd5a6db1190d19c5eaa204286bc7ee150030aa8c7cc85", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "84b6bcfdc33645bd51d2e3f0fd54811c1b1e172d1fbd5d0b4191cc1da237303f", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "325399a9ac127397b3f043641194c9b486739df6966695b3af5b8c3537d6238e", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "9d54354525bb70eb8f64aae51635bd7f92b8a228f34c8a068c998ff180d4d02c", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "78c08d9295815aaa150bda4f789ba39b79d3dde4630c9a39e8570f1f901a07c0", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "7013bbefab8eec1f89fe129be278ccc0248d83d40baa065cfd1589c1acfb42e4", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "7a593dd364be6b71f48d295e8d467458177c9dc0b5e245e0bb721d9ecfc5e6cb", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "0811b01abd20da8657076df1cd793b9598b7c55ed8cbbbb7a5baf7a203b7352f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "bd992d269d14d15256c56a612f85263938102f4127f4a0811045b6527272be20", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "b07135700d0024b635a0771f1f58b2274334400c0457a42484b19c06bf00d8b6", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "72a816355db6e9c4e8afe40d78c8557e5c31c8403726f9091a73b43cd79743f2", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "30e615c57cb7256f06be630b092c670e9bab839def272ccd78a301d2c2322ee1", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "189210b6a19ea4b5c5a07b1a6e05db4f3ec7ef013b880a2b873b9307440eeb92", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "cbcb6cda0d34a018c07a6326af0c3c5fa3c26e6b401fc2069d97c6cd7e00c4b5", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "cbcb6cda0d34a018c07a6326af0c3c5fa3c26e6b401fc2069d97c6cd7e00c4b5", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "e36719e8f27c2c269bd41ddf5af78cc6bd7a4d9ecc31612314bab73c8b62e0fd", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d573895ea7ffc80ee4d61aedffd5739a8193d1cb681d1ddefba9b02dc575a17d", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c5dcaed7e07583e66625e49477c9501d2bf6dfbf97c666f9e58e8e323832ed63", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "2da784db2c9c492bd9c37ae697446d97ce8186ab41d5414e922253e680cbee90", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "095b85ca9fa4984b26ab4064c345be93e3da2ce8e95b189aceb2374a2c603b07", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "b7e37951314050be101d808a0924e7ecf45e58461aa63cda6e03cd91b935597f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "4787e3f14fceb5c76b350d06eccd16e2584c27abafdf6d6bd147eefdd43a949d", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "e5581dc05b799b0fd6d1a87afb7e2fac43c87f164f91fd1cd777989d0959cc0a", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "dd0977024a1e9e9f71bcfd0d29d7d28debc67b7ef7556ad0b45e54519bdd636b", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "d957b89479ea707ec0fcbb91f8d7440e97208b16cd68ba850c6e8f6ee6ce7452", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "34dc5225b1b8fbee3ffeb7f1e5794392367350027035210de3bcd55eff3e794f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "dc70e288180a9fbb37239a99a374f13b64e67fd2dfc8c13ba1a8bc65936e9dcb", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "630440f06959876d5a4e4db0c08d2c5296aaf3e9cf8cf19bd7a7cb0ef5431558", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "d7eda03697aadf970ab7ef0a174834d7c43743c7b47fc2c877b0c57861ed9b41", +"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "2af68e081afa71e926d9b9c613f1f2a75541c70793a904914b53b8f265a40f7c", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "f59f3ef89e7cd0d88ea90feb90d34eb80331e5b0053020182d4b2400f6d6126e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "9de072e683d59debe0265d87f1ce6a9557b6cab67adb44b231e26b540a09b2ae", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "c4dc276b782691f66c751fd006eeacd8cb50777baed314b4218315d155bb4c91", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "339a01688f2b22c21778b265e9f971a50b891cf6f64c201d0216821e9eb428d2", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "939e7f57e0cd52d6d8cd02ffc9d0df773c3328a0803f4fab6c4721a354b9437e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "a60b5bc966fae2bc81ae8dc4474d39265f7a6b0c6817764900fde0d5cfe83d15", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "19c982cc1c19ebe02c750a5deb5304322d0b692c0639964fefd5af79e09ab6cc", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "82e9bb28f37e085356b069c0ef03fab0964b246e781e84bfc83c9a27c6c59515", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "39f71fc1ea10f85ec5348754b0dfa087aafd9b9e850d491bbfc472221f554e02", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "10f9152814e234e7e3ed77456868ce4f2ee4aff805cbd083604369147a55f690", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_grs.py::test_legacy": "06e20ed495dd1a5a3e4ebbcde394ad9374f9c5695a8976bf584b12875dd8aa60", +"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "ac9e9966dd625c39a1baad2b234ecc619868194f8c4fc58895428c1c6224b452", +"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "0a772e3ec0d5472f161cc3c3d68b338ad1cb9b57c0773023adde498a93b57699", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "40d9ae1dc65fe7378b125fef7c42bc43ae9e09ece4dc73e9c8abfafa12fb5504", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "c94e0c19e2e3596d4455220a44f7f01dff21b28fa28643ec0ba61337a79d379b", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "dd61ad41ebce6f9072e7271161da04df3650e094019fa08097063f3ba8cededf", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "17bf5d03d5affe2d37edf681b80a9fce1e42949c7fe565082119dd149cc8e77d", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "fd612d42eb82371ce032e07e0e287f9f47660209a43d266a2724c293ae5ed012", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "8866f2618895dba936297f421832965b70397b0d49a373f43ab7e98b96145b3f", +"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "d9c11793a11323fa7f5148b038491e1ddfacc8e8a7c8e868f0e78f96df3c06e3", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "fb4636da79632a43a5971ec36cd3d656301eb2df37c7a35e618cf6715f09cd0a", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "fc3d3dd643e5acb34085c644dbbbd79103eb470097852643c85fe03392bced77", +"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "1e93fb9767b6117a3965dddf9c4affc28399e8bdd71ff65e0a7aac6133defe4f", +"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "9e6b8366643b72a19aa5230cd072d0f1997e216a7ff8a1a3afc4ac29813595c4", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "5320df337290cca484840f7f26553df6a25922fa7d589f23c537c777f4ad888c", +"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "3ffe8d6f27a4e1b4ebee36f006927958b068df0b6e7c3b71054c09ef1600f5ae", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "cd22f3da86e7b9cce7fa32fe1ce7d2b1490509a4b804e090efe8aa43f16c09dd", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2d119e9649302e5a41d6cd13f86a009c190062a73ad3ecb991e29f684fb93a06", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "cb27b53adc50ae8427217637d416d83dccc98fce0b974a34a2dad22142ec5042", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "74aa04a9f947eef441a46abe74874735e43cb55bcaac025bf0d376aaf114d90f", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8597aef8602b6fc8a141d3cf61d35376703d0d1fca099bdc7fe25601e9eff922", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "dd220605fd459ef66eca1630fc7ee87fa6c1aded642fbd3cd84dea26fdb846bb", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "5005e4e06bd7843cd490a62457e77c481d4f02508e30075ed0cb7780862cc1a1", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "8711058980abd6363f07df10ce6714ff72797c2bdca854b3d51a060d3d49b2c4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "02ca8a9fb72ea93c1a0efcf7a21070d11e18d7a2eda4509876f552b531adf795", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "61f88e26ecd4a0436aa0ff4b2341bc378941a25be3825804c3f14e2c965cd8a3", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "cdc3b5f9acb64ef0534a40a2e149da111f34b1d716eb0413dad24a8ff869b01e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "34c086619597fd8fa17620202451caad8ffbc456227470d09361d5ded8d3f809", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "aeb8000589d9c5100350ba86c92ca88bbef3784cfd95e4e973156c7b24ed039f", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "03327535adf2e638594974de46457a2afeb9e9883ff574c44b09a1daf53703cd", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "b88b2884bb84e2a76069764d1c3a72d929dfbd1d49c6540909ac5210d56e1fed", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "5ea7d95bcf47fd61e756e892d732abd24a5210ee955f67bc8193406ab4c1445c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "9063f34cbb804aa68bb61a4e28e300da34abd9e02887f9524adfa4822df119cd", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c2f79a0e24c8cdf739cc70199d715cad39b79809e0952efde65a2ee9246d4c39", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "ae9b44adf563494416e7ed0776c5028dbcaa50c70c25391adf380df6d5952c7e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9c018ded7e9baedb4660aa8fdffa5cad1468132277fd10c53e29147c94c9afab", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "11706efabacf8db14e935a0f96790b6767179b681a2b4de981496764cd01e269", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "f1cd27d94ea1f5d06783afdfb281ea3255e468442f21003189633201d8639e5f", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "210b91c20f0dcc25d525a40751a6a5fce4dc2dab255fb03781476f8052458a65", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "afeb21f013d64209662611c09e9687fcb098616f0d3e8334e2e3b22546e87af8", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "468acc93fbccc535d487af73455bc341e5757c29e2d295fc1583a440d2786a69", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "df5a368494af1635c38c9926f21d9ebb146b43191e1d5654c029dcb6b5eb756e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "ad5e2b372941b5cfe9a936c6fbe51d08b7987410d1f387111584f33cd48abdf6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "2100b9569db8f2d17fa5eb8e8e8bb4e5d5aa550e1229cd81d071e9adbae1ff2e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "09d2c011e7830f8b9f0f5f566b5d36c1cf5af0e057ec73ed32651b7b4efd7939", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "a9773dc6ed1da7f1687652e7b8fe1920e8934e5ffdc98f046f39d0d836b2c681", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "d1ff9188fd18ea7dcdab52e936c4865f2d32ce88fc49a4ca532fc1a77844a255", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "0bf9996e176c91c8bde284adfe68bed04b151ee31e57f09e35eb9b3e3b3953a0", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "c31a366e4b172943ba714d30591e35990e39a3c1d41f7c41c50f4b0bf68a3ee7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "64366de579a31ab66d2f44397aaf57e876e4946c147d08ad0a674ce62755226c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "e61999ec5d687a3af86080d628bb4af0d9efd2c5c41d8dce908dc11f9f9b2513", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "292473593b6d8c03797aa1e359eb8ba9b41b4004b4068d6d5c5f245efcb0e96f", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "597466195030ba0c1addd6574f3cc120a4f86471ade00d12119cc71de802ab23", +"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "007565b090b3e7b0e3902df2fa186329a8c443675fd5b5cee7b2aa7b650787fe", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "184128ffac7e2331e9bd4451b6c70a382c6f2d25c78bdd6e499211fe44511f8f", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "3d1a9d41be32421fd5e775438e006668cd5052e2a0ff28fc5641f5b4adf11116", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "6a26d5abbd63323a71c85a555bce5374d9b16f24f278927447aa9890200bdf37", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "6a26d5abbd63323a71c85a555bce5374d9b16f24f278927447aa9890200bdf37", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4f02c8377c17c871e4cb01beec797b60819fd6c10d50b89364eabda58bae8db4", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "18ad68a1edb49307a41a8cdc6bb4dd7e0b3be358e2d30dbf0003f1190970d34f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "c70b74a1aee779429994ec06d7b882d0cc0509cba6497c37bb19463f9dc7791c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "4f658a0e48041849a95b631bd20879e8d67e8f4addba68ed23eca21eaa3e79d2", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d5616fb7a13a8adf2bb2b9c6f675f88bc3bad106e544b99ac13edfef3fe14dee", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "4deb5d3b33cd1336981e96737b995b5d758074f638cfaf32f7d5dc41ede642ee", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "4deb5d3b33cd1336981e96737b995b5d758074f638cfaf32f7d5dc41ede642ee", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "197dbc33800dd37d4ca324d67a578b5561798450cd6dc208fbfea1f724d8377f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "2798fc35163eeb9b5dc41076a2ade79b4a62f5c67331da22e7896afe3696edfb", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "294d37b7d308c2f23ed1001620d97a2996b88fb2ecfa036b2125a77cffbc587c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "294d37b7d308c2f23ed1001620d97a2996b88fb2ecfa036b2125a77cffbc587c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "be9290fadbb3bdcaa8d160ff7b1a4ca9047b099c8c924d42a7bda21d9f48499c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "e9df0c18cb4162f76f5eef186e1ec6909694e233be10fea922821c99101cdb3d", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "77c786d4a754bd8d34bb55eaa24e071bb4326ebcec5c2b26e362eeb957191e2f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "77c786d4a754bd8d34bb55eaa24e071bb4326ebcec5c2b26e362eeb957191e2f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "69f069b1d23e7518b1ebbc6f7014b9510d38121a125c8cbc661d4e026b3acef9", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "ffa345dc47c5e97fe690043460f2db6b25dd8d626a91d96eb29da64ee7ef992c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "379e53ca1fffcd89ac53b504f296bf5696756c1b961d56bc6282c746261def21", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "379e53ca1fffcd89ac53b504f296bf5696756c1b961d56bc6282c746261def21", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "a38837756267142e138e0b5bc34b03aa0da4041825285981c7fd3b572afaad16", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "5dc2e9e0c5dd173e81e417532bee6d31fd561c1ce23664b1498d1df338932287", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "1b0966cc1175e6402f6b397feb55ed00d588a4568abc8ded32aa5993301a7338", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "bfc8ecf73ee9e81837756e93016ccdef81f6d2426ca6f7bfa3cb6496692fd78c", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "eb8aeab298e3e473136758802ebf4f96b658b79f6977e8e8cd3652d8beb74273", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "a625e8b0d12c9fdbbf5f9643713d1b34ab340e1b2cf82aff43b65eb5db90bbdf", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "a625e8b0d12c9fdbbf5f9643713d1b34ab340e1b2cf82aff43b65eb5db90bbdf", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "e2266e9cd2b86e212d255d8a4813c8732b3d15764c6e9c7e08f12ed1691fb55f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "8aa5fc0b1e5e25e9ab837e69f94a35be3e4666cbd154345be9770f6e86ea0510", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "959c78d3628f817df2ae127ff9dcadd0142e17e0d62b3fe0493cdd10a56675fc", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "959c78d3628f817df2ae127ff9dcadd0142e17e0d62b3fe0493cdd10a56675fc", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "5c37c852809f4b45168377d3c97ee5353a880d4279961b061546c296b57291e8", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "e2f158f75134bc8412dd962c9c5f485f63ae156ce6360f05e8fb19ee9986785b", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "ad77a5515aa06df64f6491ec5f2be24d75ab9b450845dabbc05eb7e832856f5f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "ad77a5515aa06df64f6491ec5f2be24d75ab9b450845dabbc05eb7e832856f5f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "a2f9ce32532ef26bf4c57cb2cf2be5501a20d8af1c2ab374032c302bd61eceeb", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "3703d87b97f139ae8fc699225b5e2234a98d4ec39586a21001c2a051c67186e9", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "aeff952872558565e2ae5c626adc33120179c626a1831d1e6105fd472a9809be", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "de6c33915ece8676a5b14c1b1d27a2614052341c5ef74b9ff2efa3623c7406b3", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "0d5c64965bdd33c9ba85592daabc00289e6fea92beb12f26c140ca4593e99f8e", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "35c799699480e2f02538b65750c119cd244018f0bbd9cf5eef8b5ff4c6542394", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "056d159002ff99aae03042d4a448c971dd9a9b46799ed1094f111e89c6db1500", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "1fa5a24665e2d9cda27758c4530205d2247778fbafee80a1f311ad2821952bc9", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "9491661b3302f09bc7b5646027682ceac8ba068625d911a483fd03ebec07b5ad", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "4f367954ced699a00d88fa4ebccc8e5173feae20000c0c923d57dfad0ecd3e12", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "4041a771edbb186b7561a28e76074ceb75ad39fe5c3b7ed3200bd64ac1f29d88", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "568b5e753eabaa035c26cccb4c99d1fffc4534a3d158a399e774c5dc5ede5941", +"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "8f84c171ba6e94b933e0ba08649cb4d75b87d210dfb674e92cea664e6deeaed8", +"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8f84c171ba6e94b933e0ba08649cb4d75b87d210dfb674e92cea664e6deeaed8", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "7e4ca21b9705871f4242a6b5125db43d319def3d2b16fec0ee20296365525106", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "330200460ae86b98850636c88f5cb644614546dc8bed38d2ba89f9241b6652e7", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx.py::test_information": "b64ec9ba9f114f679489cd34b6467f0861e9e43f8173be26fe44bd167839b785", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "3acfbb4991af2a21800ecece5ef68e437cd9b54ba5197dd727b7b415d93b4e9a", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "a8139ec50fd8329caac7595ad172daa16c906e6a88b900dd6a20a7ffd4cbcd26", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "81b69e324c4b0ea04e739f9a6fd73242907f4b27bea4a66a7b84cd4aec8e3673", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1f5b9b61aad14293f131fe1f6dd4310b0ebd2897e0797d09e25a024b4df275b7", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f9272b18973e536d7964b8eab841491641e2353c037f354d98ef2b9f9e48f9b6", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "1f5b9b61aad14293f131fe1f6dd4310b0ebd2897e0797d09e25a024b4df275b7", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "f9272b18973e536d7964b8eab841491641e2353c037f354d98ef2b9f9e48f9b6", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "eea749abe0c3992e8935b11a245138df9792a9e9b6c4be07065aaafb0afe83f9", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "9a8e019cd3d8d159e29ecb9db8a4832105efddca6725d33a8a33f42efbc05528", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "2e78e493c63ed1ab158f0b3044d754997f82a58f5b8bc5cbfd95df992fdc94b7", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "7ea1145fcbc1e7801f127e550e6c0dda59b7f6c606b6bd1508bd664c8cd9482f", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "f2c1c9cc1f27bec8efff9abcbbc1dff2e795cc2e53cee8b1310ba597fd5ec9f3", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "d7a5c3c17685dddc14323e046c0072d0d699d344d5e812c7b6acf3388e64ad24", +"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "494baa681a661718ad775bbfe78a785bd6ca40cdbfb19313086421656c9eed49", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "dd306f7627b69ef520662a7da4773c93bbf15ceec0f6e5f4ed7c763497a6cb42", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "e5a9d63cf61ce1ab68160a4f03f363229e127a2f7ca73f884f78cee4ebd02895", +"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "9f1417959e127eddb3c93885a8d6bad9c113e784f1a844082340a9e4bd6b76bc", +"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "63d1d9441a7199843eb387fa164adbf6559461f426317a3693e606f2da8f2771", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "80ccb6bb23d91b1403addf953e8721ba6610c4bf0f745874f52d257743814104", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "64db667ee6cb2af6fa59aa064eab005c12fe2e0f0ec9d211461c8cd750481603", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "6267fd7587bb1177df68b4378a4e99c11a94996287f6b65a1a3836f79431ec1b", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8f84c171ba6e94b933e0ba08649cb4d75b87d210dfb674e92cea664e6deeaed8", +"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "68e3b8f430a4fdd56e57381d86c6d047344c95807f48952c061a5ac2014747c9", +"T3T1_de_bitcoin-test_signtx.py::test_two_two": "fa564f90db45875f32d3a606e33916365ae658b9dec635d7eb3151f4ce33febd", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "494baa681a661718ad775bbfe78a785bd6ca40cdbfb19313086421656c9eed49", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4665a75d2cf0952a89bdef6cb0c57d6dc34a22dc4ed5a656c954df705ffabc5c", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "a12a95d4bfcf8eed49d9da9a9d20f1e844698051bbb2382057f25e4abfa4ad3f", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "fadcc0d944de1508fb225171b1f736b03be7a2f3a3e2ea394837f4e648187a43", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "494baa681a661718ad775bbfe78a785bd6ca40cdbfb19313086421656c9eed49", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "5af955461ddab377c02ef2e5ab033d01e3ce10f453687fa68f9e74d05eadb2e8", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "2d5d4f8826c7d2a36821b619a402a5ac3cedd4b4b4e172b9584875e254fbb139", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "509d47ed53fdcc860a40eb3d04f69102a9abbb77e254cdc6b71a26a73aa2a09f", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1bb7ac912c83bf16cc7bb8f19e33219b93896f22cbe2535c043eb11581ba3da2", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "5af955461ddab377c02ef2e5ab033d01e3ce10f453687fa68f9e74d05eadb2e8", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "92876d75cebccb88dfe711fb21a660bb8e909e2eb8f7fa701fa6205c837d5bb1", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "ed5d0d0d2ad6ddb2517e264ef30127ea5d84909c5eb594489a94a795854fbf86", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "d6d9f963ee2ae530b211923378524a76717b53c7c84c3663670d91e86bb0b87f", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "48e511bfd164e03d12488bfb8dd98aa5a9f5b03c82960b5b6744677e1d0c84b4", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "130d958894202b2964198b9d4cc9630862416e02b57c71030c9cbcb61fcd4d4f", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "91ce10f44ff5f8f4d60709c47ed3216fd9caf814fed861ba9e1188efaf5fafdf", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "b1be22d2d0e445f84792b1c50ec9d5b121fd24c2f1a3f6c9e1ac6262cb1e026c", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "4ba90c49f4c88650416601f8a71fc6725767ea31798d00a6dc83fd2127bda87c", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5a2111f9f5b661b62c920f722105782980a7a939440c05133c82b21cc2a0879c", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "932efef66c68e1dd513c11b3311b1bec51a2b0a3b0fd156dbf9b2da269ba638b", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "685cb27f67398286e8f5bf99f985e834ca261b132efa869e5da83dd89ceed019", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "91dda51a3205d12a0a24392210dfc2d757852b1c664c079d937c78204325410c", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "80f1d31c2b118adaaad8822dfc7df1c24554a55a3b55895dad7e906a7e4f249e", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "d260217ee1f196cebccedd486f00cdc1e82e799114355a3e87e48fecded605b5", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "80f1d31c2b118adaaad8822dfc7df1c24554a55a3b55895dad7e906a7e4f249e", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "d260217ee1f196cebccedd486f00cdc1e82e799114355a3e87e48fecded605b5", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "eb8985b34aecd18ca11537043fe52d34dc12cd61ed88885dca4a3d5571be5d39", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "3751a1bcfe7bf20da9d4017c4fcb556b3eecd6e0f631cb34d4b75219f9e726ed", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "f36dd429ffdd720f1414e1a8cd4e1d03d8a46cb1ff5b1097bcc243ec9e10d81c", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "140015184560c247e9f310b4b644b7dad6e08d6a9a0467f6fd080d3f09667a32", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "d6b84177ceddb8502d86c954e9c879f28305ab07ba41841e70b8ed9e309ce636", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "86285d75ce4f9f4e291781bf522723dd3eb24b61b93df1e450c2bf73192b5316", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "0162099adba678dbc8b16adc93f935da363f30be67ea1397c25548308908dad7", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "12855df6a330c2ed5b73d413d0fc707664ad1d9a54fc614d6cd9431f89688461", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d5a47bb0eacd3ba4a47dbb813c218ffb99cb65b2902a186dededd2447742efb4", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d5a47bb0eacd3ba4a47dbb813c218ffb99cb65b2902a186dededd2447742efb4", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d5a47bb0eacd3ba4a47dbb813c218ffb99cb65b2902a186dededd2447742efb4", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d5a47bb0eacd3ba4a47dbb813c218ffb99cb65b2902a186dededd2447742efb4", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "98d9b486b4be1467cca50ea71edd7d92f67851fc879ff59d4e5fafe2f5bc7bf5", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "98d9b486b4be1467cca50ea71edd7d92f67851fc879ff59d4e5fafe2f5bc7bf5", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "98d9b486b4be1467cca50ea71edd7d92f67851fc879ff59d4e5fafe2f5bc7bf5", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "98d9b486b4be1467cca50ea71edd7d92f67851fc879ff59d4e5fafe2f5bc7bf5", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "6020c12752b576b43eb9ffa808577cf6cf84b79221d22358c5873b315d4e2c69", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "501f380312b92cfa654b343319b632dbee320acc3dc396a03699740fa6ee0d3a", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "e5d903fe9bf324e470cfbd4d96211dafb787078034206ab70802714b7d215b0d", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "e5d903fe9bf324e470cfbd4d96211dafb787078034206ab70802714b7d215b0d", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "b0a800f93569435291eecda24ceb68c45fa5670e485646e4dbc036ad996ae17b", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "1e26f09f5cd331a92dafe762ae2297bb2a3f049d263dd5950363cfc8d0d7f28b", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "a965e23fa5143b0d6c9a289ec7cdcbe831ecd740e2c578ea751d6004c0529f9f", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "b0a800f93569435291eecda24ceb68c45fa5670e485646e4dbc036ad996ae17b", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "8b9c38e2e71b83ca2a694454937675d3eab760d7bc40d4c2db38e3a723f6c2fe", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "426ab2b9b99019aff0c0934d3e75e9b634412510de358f4326fb1b282f5e96ca", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "426ab2b9b99019aff0c0934d3e75e9b634412510de358f4326fb1b282f5e96ca", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "426ab2b9b99019aff0c0934d3e75e9b634412510de358f4326fb1b282f5e96ca", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "6c454c457ca3cee83d60107746a30b5f3194bee67d06328cd331560db41dbd8a", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "426ab2b9b99019aff0c0934d3e75e9b634412510de358f4326fb1b282f5e96ca", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "0c4db455990d38d3f1ab02d944b342be8ea2c9e2de9d08c1a3f0b2e28a711ea5", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "5ada680c764f0fa7d10cb5ce781f9aba6a6cacb7417f52a3688013c50ee6501d", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "683cc8a0fb46cd839fb6486e30cd914d5602da8f2272074c24596b887790a16e", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "837344960e9632297ff8fe0733b64819b5c5fae1f6714ec60c8d33a38bb92385", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1394cf58cfa3aece6a7e75d7733084dc19a8d91baa5661caaaba9783f62844dd", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "871caf1dde0a0054a2c0af152ccf5daf0686354f5d735a4cf6a8b404ca7f854f", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "48583f1217a9682998c1f194c059b39266ef17777a9b73ddd3987924c8b923fe", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "143b4612dd4226cf24f6f66eff74410c7ba009512d46092b2d36a13b3c44758b", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "08cff952c04dfc62a90dd6a5cd6ee50660425303a00304694e756bf2f96c6f4f", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "79d4d4342f134866d9fb6385464394550c03cf597c6669f4dc73d73004399c31", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "f041c5a90acbb09f5c44e953e94dbeeb478b7a4c2f0fbec6ecb8e28d93b097f2", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "bb12967bd8876772345e4875f4db10f9faa9d413f1a2ff2c1ece974c3764d9ce", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e30ce11a94a80c56979611d2a47f14e74a64973b0a773c443d15ae54f0a651c1", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "ca391cc42986f15363ea5926dde23acf60f919809a2ba0c9e8001656c62c8167", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "5af955461ddab377c02ef2e5ab033d01e3ce10f453687fa68f9e74d05eadb2e8", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "6ae669bdda0679bc578316a18ee849817f17b7cc8a328b2b719fe20a31f851d3", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "d754c1bc7877aa8b59b0524f51149785f091ad9774ccc2588e847af0afaaca62", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "c5799f5fc0524526154f8275bcdf6faacc43bcac64c16e82582fda01105cb247", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "64aa8a292db5af60f595b07973494fcfe27200b0a736e7b0e29aa215e7b6611e", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "9e86285b1df9e6ba8800e504ce418e1e21ebcceddf17f6322b1890a506d5eef1", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "e01f237fe21b7143a710bec8cd1dd992c0a5920f3e73d1188188ab0a759c423e", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "d406db73992a659a31fb9711c213f7ace17d9fe53fd5a668adef5b7619f24758", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "7767bf6f5c55107235542da729394a732b134823049c95464e855e4e617c9bba", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4f8c214cc0e63d5bed3ef34c33b9b0b57a723b58a9def908b46bc292585186b5", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "5d87f20eacde4b79983d2592a4c1624e4fac7c5d38a54b1b20c3129b6257a044", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "86e1f261e494b40a4d41776409032884fd8b80bedf2a8cc1e2bba956d79c454a", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "ceed1f40e0f30001ce14c746af4cfa0132192446e7b1f36a8f9b6b1694f7d10d", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "3efd91c5c093ebdaec76c4ebae9d9d61593d846b60415cc1930d4bf92abd1891", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "5744782c0d8c98af1c4f42d93053b02df433c5644d4a56dd62258a15f9f8eac7", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "49200f8fb3faa33d09ceefd5a325f6b6e6d95068697472913434355603c4b000", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "8afaaf3114bc1e9f6344e165ff53b81c14d1d363c91065fb1e6be8164be99c9e", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "1fc06b13006d1f8db555e1dbbbf8bfeebf83b7627faac4f88b1b7d760f7b7756", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "ac07bb53bcfb50830f57d9990c7d383bf705d507e6125ad7077937347e9aad46", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "d785493fbbca301ffe6d964be482cc704615b8d31477831467c5be10779d90a5", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "1371cf71618a4398b7478d812df2f4375cae9fbd4c96ac8d533e07a25ba53d94", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "bb0bfd146db6757973d480bdbce25324ff76e0946f5f48240637c8ba3f5d0dff", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "a6d46d52191773c4854dc4272937aadef03f12a6c2ef9641646e6140131fa5d0", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "105c80671e387fbfa343ec2559241feb08141ef3537853f53e6729489fb111aa", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f13e7ceae1ecf29960c914c41ecd494fca6490e490dc65fe2930023bb52451a1", +"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "cfa53be3e6999e185944fd2ead993ee82ebd7abeaeaeb37724380745e8cf8aac", +"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "fd3c0c94716001bd38930845651822ba523e3f9f3c70df5bfd2f72730c8c9536", +"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "baeba3cd590eda9aa9cb81cf8630b82a2fc17f85ba3db923de341bba80d06c31", +"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "dc26d4cb258e64500db5c890155c43fc7faa107653c849d3282e9c6b750b7e18", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "d97c1b3dbe8d0688bf19aa67435365bf9df5291d3b2344837e422baa023161f4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "99d21e40d1d85107944077669622c90ccd2ac827294120692dc84d463736fc79", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "7b1f6e40c023accbd4034ee485de69139786e5628ffee48953f78edcb01be23d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "dd07cd57ac92da0dceca4cd0c19205d38dfef68bd94c305b4b23bef5e8bcaa60", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3fb7ab5483348ee43b65c0911eb0e861a021df78ac3199f377d78729f4bceb8c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "fa91d2f1e75e5d771bd0d35310d3acbde316f83eaf1efaa1e234ee5f5b6ff7a0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2bf3158073c52dfcd3ef7e38c6af8596f4ee59c9d6ae183c4437d8c11cd7369d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5abdabee31fe63e20d4b08f31414f9a637553658744c19a806d633fd7e909684", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "c87aba48b2201cf89856fd5c75d09bdd63365759b306f1d07a9cb910d7de1eda", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "95ec2f2407ae9489cdc7c4b3b3c9298fb62722bf3c6a8f1545db281f8922635e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "88091f3e1b478391b2c8b523254bc0af2d1d7a2abec0e4033586a3ee08f81922", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "c1efefdd0b9ca9ca877f455dbd7b21cd31a5fb27d2f7fef841034c589883fe56", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "ad9627b2b1ec242313b471c9322241c2d3869db059461e48458c5e4247715ce1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "233a88835c5c4a5c1ba0e4a4ac57be8442b0128ad9333ad7d7734c914380289d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "e74c39477b4c2ace97a9fd3629a54aae78aa47016716fa689819524b9b120c0e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "db63918254fd92d827ff6dbe3656110c0aaa08d5764ae567172b99dc6850d7d6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3a2b539d801fa72f31f9958e3bb238adc6c0f8d90a6692f8f4e738e66cc6c36b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "97fcadf9f6cd242d90870bf4111b631631305f0c9ece2118023bd6d13bd9f012", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "6af5f8ccdb477a420c6f0b530a66fd3e7dd0de57ff989f80c4a4ff0832e4ce14", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "17ff7bbf5afebd8ce430010425513fd9142da3b741e44b4a7699882536f70520", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "8557d1d8f94f7d7ea619cd3ba5d8ee32187780f22d3c397e83483738b4a02704", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d71aa3aa23aeba39b3994f446aa77a1516729746afc708bfda7b933872107745", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "98af56454adea995360abb58df53edaea504ec61d7d5d2748c24ad3f68462400", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "ca2e0029c3924ac29fa0033e542aefec62d08388441aa2a2449d022394355dcb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "79062e5d33c9403a738f88c0bd0a6f4982a11ffb70bd3457f687fa952ef4c6ae", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "5c21474a26c02d7ea5526b0bb00ebce06273fcf0f25121d089fa840be39efd04", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8a634c9224351be7f024b3a5dc216f4a77e3bfae9d4fbc85a830f1d655e82864", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "4d618eb2949c2da21808c00ee6f13e575e3011e7028c42a0bb5d632f5baf5179", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "018a1b7876f2b6a84ab1761a5e68f38befa156d0f4595e174d6250bab6eaed28", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "dd877ba6a52921df25c693ea3cc5a8f0ba094a8fa92c2dfdb1a66b84e5d42216", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8c3bbccc8f5b15e2c62705195bb3033b6c9eeaf439c94b4737870475f2ee0392", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "d60eb1f8a36cf39ca7ed4d6bae5ca2685a6041a35d7872c27ad5aeaec23dbd78", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "3fda2da8b67e7c1c7e9c05eb32376360b0e5bd7b4f96423e7ac248804eae652e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "e37fe5e029b53434065c6cb50c1cbf263178e3caddbd66eef9e1ee79c8995f97", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "28307afb282c793390901a8066c2988cf293e2b9370f6e8c6f4aac29b0169fe6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "93b1e9bbe3b2b8905474adb32bd4173b33ad80bbcef954831e427cda408a7e85", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "538570456265e4019e289ccb9f834f41e2b5454896d921daedd726b3cba8b026", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "72c59a7aa3d5c5d3c77f7d3fb1a2c07a04ed0cc641427bad23e62ad05d06eea5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4a70e147e14b2662dec742808aa222dce36d09e76c83d95638831a92cdf39d75", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "c0889aa22da3a333502a34b7ffb1fcd318c2243c45c3bb0bb29e5bf202b7d3b1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "59541ee4f661ff5db80f5c237b5aa4a088207b94d9004a899a924e65a00e8de5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "0dab4c991d9483c8c78a9f617d0bfd7576abc664d39d7adbba0087e060eae74e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "b25a868da2d0f8178f86102a1649ac5d0a711f5deffa602b7cf98ab0d1b9f57d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "aa2993b7ae0318d0c6aaa2711d3be75bc6c6efe64c9e7834d4d97508e4464ca4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "8681fc9eba136f0c7a5390144149ce72428de0e602bcbc7e9d60af0aa4d7c4f1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "65e3210435798a58629fa132d1015fb3c6dd1938db18ea0c0715ed431dc5471d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "6baa5de319124ce295cf0c15b83eaf3c0a5864282f202c57dc06a30491c2cc6e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "b04ab9f8c2730b87020e3496867036cbc2f04ceed8408452028b9f0741775046", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "82082cd74502e1885102c14c3f06d669306f4677872c130daa794fbe99c98316", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "2acd08259708a1343914e76c89b447a003f838faf2e870f989fe7ad527de420c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b0f9d237787b4a7fb883cf18a36a2cd2340bdac8f4a6383f9c6084b1ca998d11", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "62b61e4de7e7fd239749181d43ab3d9a06b4a7c993cbcdb678077c2f239902e6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "742c2bed1e4a157667f3f81c7d737c9746877493889cef273bf3b76025a54bdc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "6d4ae1b8ba79f3629fb7d5506fd4ca9f7e7ec8ca8bdc58cd3a06f7a01c3a9bc1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ccbdb0116a6401c880649f9f3bae563e0c7033ae20b16a5ddb5c56be2daa91bd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "6baa3ef351d379f4f15ca960da4a06b1ca8f1ddb696ec5fd9030ad6fbf1062a6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d73c579a22f9ade9e5c7ce33c39736742e71d42ae042fb1b2fbbbcaddc089c0b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "05a3716e8ac78f0b5392103c7512cb4bc95d5be087144269051139063c3c8e09", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "2602a0a83c9b777bd7074b59edceaaf3dabda18667ceed49c8abe488a7b52cdb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "ac988262c975b58598a6722ddc385cfd7702528db352baab32cfc095907bcc24", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "433e8e4db8e591d4ce4865f94cd7917dad4539bcb805b1b72c38ef2854fcb26d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "19dd7a7c262570312cd876ef45a6003fe29d849dce0f4005e62b925458c7fc18", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "994ce3d260b8cda0b11532c5bcc8bb2d2b2a6a6d329cb464f8bc3919a76a8579", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "7fac9ed81c9bb7d68b28ba1daab6c3959b38aaf84a777a66df0a657e6c4da89b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "95ce2f7ed292760e5ce74fa4a9cce4190993d5248456dcbb81dc576ec2b61b1b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "36afe61a1169d10cd127c52843916f3d5f692384045dbd3c5f14757cfea8674d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "380dffdae7c97378226d052a987afec8d45dec82cdb134015fbabde7042b40ac", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ed43ddc1c3d8adb5cec1b53b02ed2e1d4268857a249555bc8f5acadc75769206", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "096b57f9dce63fc27aba56353f0b70a802f04c6cdb4791d73140c8f7139843c7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "dbef410f9e8ebf0dfec9d9e160f39a1b525ccafbda79651758c29c770722b1de", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "7804d01f74f301b459fd623959842abfce588e4d3734a796cf35e153b07337d7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "e519a89633b6f7958c9c66cdaa50389e950d7d08e5f7ac1d0aca564999912757", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "f768cf658b21eee220714bdc731a6a20cb2cad9773b4581ecc795ddf170f9da6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f5e45bb5aae1f007ece68303c200465631c48b724504e6b55879d38855a6ec0e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "611d726e7c30402a8bcf25fcdf0f3b14143ec899fb55ee40859c49ef04696113", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "b4ab2e19cafe3650c92f8a2c150e601172bc5db53dbde240780f23c786b40ae5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a7c8ea9ce76cddffd0137e5684edf9264eadde112d7a389a439341a382d17257", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "5ddfca0b649f66636545e4ff7a38fad5e93c72915c31f2385042b78ef8813cd2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "615e88e000e526d81a008f356cfea065e449a5f858d2c813803784a11b15b5e6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "c5bbd372949aaa135a7009bb964f37d3edd420a94eabbfdfe28a78a154215f3f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "6f4bafd4d10c29757d2a9a977d1397615c0f3a7f8dae05896ac36ffde824e21c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b7c152b60694ee668b44389c570020636566338c1c365bd4022c70ff3af8e876", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "e50b9d4bc32cbec757db344ade544c6cdabe4165ec6e14f0fa92ec872b34ff52", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "53b8c17d76c5c9c1414e1934cfe627cbfc47af33403a7a66b32613d0effdb99d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "bd3b9590b18bf383d53b32697b903e2f7d62a74fb4cbe5d490fe6a2f5b092a5d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "ed593c2dc9146840f105fe00438e0101d4711ccd558fd12ca7d1ad340ad4eb6c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "8ae9bd6f708d9236517b5ce94e74f1734a909a7b30aa6e5eb119e67e9eefd7f3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a823f28130922b9aa1d9a6567e01e8cd36e3630eb2f12cc702c6e8331f6a2c3e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "1e097f4fb41939cf6c989b03b3d8498008af0ad196d6f3578f71249370a57349", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "4131ce44cdd68e1e06f2d7907e5bbf096f567abf77637bd56ec3c60215fad274", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "3d5515b8e9aabff512f66a9084ae5f1fc743a455345ad9e452f276de616ef28e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "9e47816340a6890e0133427874054b6d6871ecd3f4ba1c33870e687fd5f223c1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "86fac7cf0e161363f2f3c4ddd9aa0fbdeabd76e21ca46e95d2ee53369f15e00a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "c7a49ee4f0c18e806b7a7b49243ece948d6d8c08837413d20fe35e702ac40671", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "73ae09a2924803d075d0c7ecaf705bc1ce9350714bb4c3a44b9278f2d8e6d14c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a0a106eff846809615261a5eb375eec116d9d6302c562dfc6280c2e8fa07f121", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "f9f034e3621aa5b614ce915f76f940aa4234f4db2ad90dc7ef88d0c8ac38d623", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "c9a1f72c4e5c0edb9d2a8a60c0b3db8c8ccbf3c7ff29bba48741478933f34772", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f3e7112309fdccd757b4e2bc0541f7f96f880cd485fa9a2ea82658362b263b96", +"T3T1_de_cardano-test_derivations.py::test_bad_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "436ca53d3f6259cbdf4009547487819ea373253d8759c6f8498efff5ac66be65", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "cb7310db278b33590aed47fc9d28b5d8d963eca6b7e07094970c84ba36780e11", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "5e380e8b70db99655d1f2eaf5824ea5e2ce036c0b0352ccf9859c704e738941b", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "98a6f643de9b50952ae0768d8d0a7a2bb77f784f0285eae28c6bfce8492129a1", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "d4f4ba34143e9e9e0e694fc6b70f749e467e8f169ff271697669ee9da3ea38eb", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "24c1daaa9ca8b5ee6a58a44e04de844b7de16358342a7c05f943accd8f9aab5a", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "62ca21086bebae6f7ef753be71a3c027fb662f2ac71d641a980fb085d8a1e3db", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "78b646cfbf7acba72fe37aac627ed360da74b6b3dd8fead8cb22143380028d7a", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "7af0120404a887da5cfbc1af8f9080f560d15dfa14e925c34f3bd04225221c07", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "26d2e0eaae7eb05ab820240e0e521825a7e2399f0bd068751e8efa2f07b5bca0", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "34a791a839d2576d9d634cc3813b3387aecc6ed9e68bf385d567d48dee537af4", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "ca26c79694c37b4933657bfb69ca72e04fcabef0fb7ee98270cdf2d03504364e", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "01363b538ce7f8e6859d578afc731e32bf3a3657df13709e3c287d23b9d3ac9d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7df8af6f63cec9501869e3fde0b94a9c7798876520b7d56e83b740ec3742362e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b4ef59febac88bde44da0be3a9d986fca570ce540ed45c49bffd18ff45cd06c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "13dafcaf2ca42e83a99ae31b6e326fda075ed8889b2c4a8d5ddc033508da555e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "22d95b214b22a52490fcaa6146316bb41b64d5a8221c4a90c73742a6e3619c60", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "3e4f682dd87f67f4de1b7a8e88da763a05c7c0c080c2403e993f497cb49a321e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "33da9555a34a1a3923e76a45679dfeb3b25c62b7a132c449e3bfea6af9730452", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "2da3ac20df09de49273841f3a01d4194a10bda46731a111e4687423dea5c34c6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6b2f794098f1f6ef6c8fdca472384ef753fd6ab94664824ca101a20279caf5d7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "86813d2fb047b2dd61dc15f111f3c43657b70a54922a781a2cbed45e4f8abf76", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "74ef0885df8ee72dd8cb9bd5de206db5453c570699a6ee507816a65c33cf193c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "209a6468b3a15eca343c768090854ff47133763e23311e2ba3e8385ff2a9d7c8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "5909511f41cc24ec659e7a002fad6d4733a6f198cc8cc58d5d54eda74cc85b5e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "5909511f41cc24ec659e7a002fad6d4733a6f198cc8cc58d5d54eda74cc85b5e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "fc639a451c79702d9697161fe2895f440e46242a0cefad4379753907846b0031", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e848a69ce0b782978f3c6f8af253ca232f2fa67363bcd364602cf115007b01c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "0a142c9dd39b03f956e90b2e867c4673915c759ca7eb73245b4c92e9eaf01789", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "0fdec72608f1266b6557c4a8d515f65d5673869ed645aeb88f2b43cd744dc2c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0007d36d107afaeea7d6ed3a74202df62f3320b1743624c510285641a1f54f3e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "78188aaa2ad3b35b0f8a9a956da93b87d7de0de45cfdb3a5cd32be7b70cb9e9c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "067ff7a29fdc0d6b107684bb9c07c61f04aa7cdb31a37129c9d70cbf9db140a3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a32dab137c23fac337d9b2a991ed76bdbef2aaaa202326dc727fa5a25e2d599e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "4589aa5815235825c55f8f7fb5dd8d792e35d0a6a80e8e073bb7ed0b7ca9f8f4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0007d36d107afaeea7d6ed3a74202df62f3320b1743624c510285641a1f54f3e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "78188aaa2ad3b35b0f8a9a956da93b87d7de0de45cfdb3a5cd32be7b70cb9e9c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "572031151d16a19ef0ce44e277aa74952fd0fb9198d8928a584c77e10cadec11", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "ed928372498e6ced58aa1e358715591ec6175cabddafc0670b1a6e8b3ba90847", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "4fd5432a6e0f7dbb6ab96ff3a001bf26b404ad30a10c3268caf77f9b85854780", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "93823fcd46ee747be8c4d15584692034c7e621bb89def219717fb6864d4b2146", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "e2521c2e4ab6c55c0b6ad9da3783ff312721abdb9f53d39680fe98d9860c0ba6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "42750abdf911dd21aef74c77c9d354eae9450a011e9a3af81acb00e75c0d768d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "c81c4835baf85f87e2cc92f0b8a168344e581865aba1c453911ac723b55727b9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "012a955fa433431ecb3d76a2bc2a739ffe75968666e63535da8efa810a032cac", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "134f2d2784c01cb015c75cb99b4a329d5fc42b169874e279d68161423f4f8bc9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "9ccef05462f93419365be57eaf7436af548fa16763f065b53da07859a4c28938", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "90f6c1d177276831577d32924081db7093ce8c2e8bf7227ccd54ab14f63f3757", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "aa0d90504b752f681a13a25c35e24d3d26ce9f4fb7d9eebffcef7d6e639dacc2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "c2e209fd5e22caa557dba9085f995d972cba37b612884a4ddb4fae404302a49b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "d9245d2fe38b9374773ac0ec9aeea97ff6e999fc9c829585ba1567d432477d75", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "ae4bfd677f52903cd9702b9ed2852bb938b32729c39a008c0fd8acc732691690", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "898b2d966e4bcf53ecb7aeb1b90e06b02821b424dea524938aec29fc461ab856", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f5199b27aff31100ea9c3919806887eb4632bf751f43749b6c640bab273f943d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "55900955b208ebea8e451a2000fc1dfc7ea016c3ea55ec3fd4171dcfc20cb2d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "5f0e82c8d3bcc95edb1606c498d67b538a5b8def8d2837588bb0d98c955d66a8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "4eef7eb07826182884e1cbc29de5171230f693ad6cb283cc1638ddd87789a45c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "20d0c33a21069f98bd6f9353c84b7667d17a565a539426cf50c4898a685f3e72", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "0cbb9d1ea90847542e3f588139a56f9f602d79106df894a3b8518f5afa15586b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "7db51ecd879f9be2ae013123aa9612348dd6393cb0a7214ee99f4f5292901599", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "673bbf8740f6a9c64a73d851d74a16edc57a8d7f3f7e598ff6c13b0328d737f7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "d5e5fbcfacda04d8106f0fccdd9b12ec6b4b464b5c6c79fe8826f46068da7ac4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "dcb904e77fe69e3b5db3b0de5b9515cf444a6a92960aae5a39375afb4a161c22", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "2278b37329cbe6a125e7e8fb8b4aff810c7ac9f080ee1f526a52f300b85dc7e4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "3f2cea582a6e70a5847f144156c83b1efc2c93f4c1967de8bd409b0066587be9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "e03cc0463f9d9be910aec777ee0984b46192af95650b705304a17128b6bb5621", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e5a14679f38acf4807833fbb0dd4214bbb5c29a06bc379349eaa51e621e9208d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "39f96a6c440aaa21a5dde5b012fcb4349c0de87e6358cc4e3e34cfa62935dd22", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "6a826e95a6e39602d8f71dda6f8f57a2d965a1cdf8787b65b976d669c3ef23e2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "4c392fbb3104959c4b24e7d838ce3d974ddb42e8e234d2b2a64a00c0083fc5af", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "13b9a445ac84410d6b3c7790880e7670e3de1a8297a291447ed3495cd35d74f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "4a2430302c56befac6b4e3973b81d0b8185545a27551a569c6eefa067838c2d7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "3d62c2a5a499d709f34ad244fcd9ca90a0bee12f3005d2ac8904ebb31422986e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2d4cc179456f464e2b4cc74c83ae04a2ebc45ec217c841a71e720ca93f2ec970", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "aa5745866cdc55c72931757003d437f77d60e751e31acfcf4400ceeda57de292", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "a2e42d439a08be18aba4005f02bdd2e223aabfe3971e6a8f2bb894f545051a6c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6f78e51c3ddf855095d86ea38cb83964fb8e846ac9fab76d4f62fe60ddad924e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f40439e09d4cbb31da8b0e7299f5b749b89fd2b1ad87a95c2093d1f02d3322c4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f51298040b0718117532149a841b7f84035b9bcb41b2548b7d46627f888c51cf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a19436d3461fd7b0e3d43f4c20ca84533c708a36002ec93348c4181a71178940", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "9d3f8dac2eef578f067358f2d3e3937ed1dab6dc40031e0182b644a8c0d78c37", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "ac6aef58d39d5ad514426b0c0582a2554a604652419b56e5df4bfa1e0417372d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "05b2c1e50adb587686d0a77fd81b07d87a8d99f2813cecfa0d12f094807ed45b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d0343b52483cbe8e092959166b04d10335b07994e0bd7c612e60e13f0164cd2d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e71312dd3e094fd8aad49bf45c2f62053f49c8fc17dfbe17da8836ffa776850", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c04dd9d0529e7a34cfb2a20ae251308f2edd77c39895ec9ac626e647a59f2a0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b7fc46c84948f60303ef2bde199d39f3f4ad8e3bf6d714ef94cfcfc419dd26aa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "daa6a96cd27c9cc499e6fcfc9f339543325b8f28b7415de2d352a6ccb115938e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "e6b8a5075aa700a56e2f5ac3072bb4e842d2d1eae0b9af2bd4db2cad7fa1170f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "e6b8a5075aa700a56e2f5ac3072bb4e842d2d1eae0b9af2bd4db2cad7fa1170f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "04954034cdd511bd96538c60b834d1d6c6e0908145bfd4fdb737a75469dc9521", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "968787cae7504b6276f999a1709394dffac4d0a9aa48282ef17f96236f926b53", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "968787cae7504b6276f999a1709394dffac4d0a9aa48282ef17f96236f926b53", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "6e5cbad8ca8812b829a7bd670c6f8d1fc91335b99c053542289db2550d64f6b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "0722a6924cb17763ec6cdb6d1051c11ec8199a780a34ffa61a10bc88200bd724", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "3419a8f9d185c6eb26029e565d459843b211885e8b48ee32aa19c05ca52adea3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "8905d8486874c95801089a3c27ee976ae3f20c54b63f68304d2823d6477002d0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "91d40c41ebe715d6b574bf477991ffe5995d1a3574270b03301aff0e69736802", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6fb953a646265e516782f0fa6fbb2d057ce68e6b37615b2f17ec72a954d5cff1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2c9088c9e672c1b1bb47e6ffc086d5be883cf05d8d11d2a94adf1fce595de328", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "dfbe592fd9a626c60afd8bb71d8666423083150bba7b636b1f1cbc272887c48d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "c634169c6c28c5e6d0b46322c65cb1a13331a344909f103044ac2e9d54a700b7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "7df8af6f63cec9501869e3fde0b94a9c7798876520b7d56e83b740ec3742362e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "2da3ac20df09de49273841f3a01d4194a10bda46731a111e4687423dea5c34c6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "bc01813e3e84c3acdb546f3bb888130260c1a8dabd008f7be3e5d76c90a4f72f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "0ef7136621336be72d7cbdaaa12d9b95bf179008b9b11d05e22829997b862054", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "0ef7136621336be72d7cbdaaa12d9b95bf179008b9b11d05e22829997b862054", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f2a9468c3723234585cd19606eefef4f563fc305322a048b7b5ada63484bd600", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "ac342802d0934e35f91ebab032a6efcf573a701739a8d896071235f0141b679d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "832543a113534fb34eb527be8ca95a61537579b76a00e17a7081f028565b9ffc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b14cc350bb42356de1b2b1874d186efeae35bc311099018ea18b962b650114b7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "5b8a6c0de780d85cf9315ceba9c1f5b71ad3923ff97dd8201cb2d2ff3e883979", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "534f2a9e4ae7032149d7ab870eb40484ec277e3d1885011287ac4bc78b109ee1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "b43dfeddc10ec669fe781fd06a1e01d07d4e9c3e4cb04f85835f355536fa8f97", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "b43dfeddc10ec669fe781fd06a1e01d07d4e9c3e4cb04f85835f355536fa8f97", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "b43dfeddc10ec669fe781fd06a1e01d07d4e9c3e4cb04f85835f355536fa8f97", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "b43dfeddc10ec669fe781fd06a1e01d07d4e9c3e4cb04f85835f355536fa8f97", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b14cc350bb42356de1b2b1874d186efeae35bc311099018ea18b962b650114b7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "fb7c552e196bc950c4756bc773f48405dbf6cab469619f2d498cf774ead6d8c3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "b6abf5e1aeb60505e5eebdb3018bebb1a041a56c7462b4f67e56428e011ec516", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "8a93e8e1a1fd474ffca4096c3d794b3c509825f7fd7933fcb019899b4dca0dfe", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "cc41384f435df43dc3c58e51251af2e2a99b1a76cc33b76f0bce6d67c3fd1bf8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "bba1f6fc9faf4df3c35c77b604f052e5f13b6eb5eda6948c989e60367810fedb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "7d067a0fc54c8f48ed0affd7e0c57d43b7f71cda05a43bfbb49abb8a1dfe07dc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "b8d313ac126f8fb02c339a4eebe1fa95c72c576033119e37eec9b577c56ccebb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "af0e945859bd145c20be0df3ae08461edd8736b2c06bf77f1542e1c6293a2e8b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "40c8e21d666bc308d41716996c8d2877fc797275d747aec7d67e974564cd19b7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "f91135b127f69f5c6a9cef6103eeef7c76deeb7cfb2733bab3e04bf7f4f61ba4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1db872cfc3fc6d5475cd485ee41a2066a031708aa37ecb81fff1eb81acfe85be", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "0ef7136621336be72d7cbdaaa12d9b95bf179008b9b11d05e22829997b862054", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "e551157f24e233ab6be99df6116b94cfdaeac4f1ad76764db1d13da1d82e3649", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "b7c928a02733e6776d9347e9b35f724514afe155a7525a51e79eee27253d3b28", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "68a3eae30f0309affa6cbe7bdbb22dfc129f20c92d0062a4fbd5320103dbc551", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "06a7032b3940d3741c89c8b42967d5609ff1928724fa1a3b86afa896a52ee8a7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "79110c7fb22dc91ae3a2af549b71686aa6d5c896130a4efcf6492bc938a45c52", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_ethereum-test_definitions.py::test_builtin": "913e346b05c16a63a19036fb79341c5acfff6f9f179c834d9c66c50b8d088b02", +"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "7507b7a46d84fe2b24e43858c2375dc6659327249c4da36fc31b946802b04a32", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "fdbef8af8f1e3051bc2e063b0a90136f53b619c8c15ad4bb3455732195dd725c", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "c48b422ea5ef851abb464939b94012880cd760fb87b5f58483be602155dbdb1e", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "e2d4182b6fd858ed26e714654e2e5fe5b28ec47c84035094427a18e0d29bb4df", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "c3accf4e99ac23996f36d5c31f99a37419aec8635feec3a661d820549dd48da4", +"T3T1_de_ethereum-test_definitions.py::test_external_token": "2ea23fb1e88e313d9c04858ce34f48ca4fa54e1d5811a29bb54566ece0b918b8", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "09470feaf762bb071170ee0c8bc564914f236ca24ba819bd6b23bb7d69ec1dc8", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "572db943f659151a13792574e48b0001836f10ffaf6629bc182760da9f70400a", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "5e5170529ae94cd9ff6f388458dc78c986cd5be97ed4cba54f279aba33381151", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "7b13276390d523f808f795b0da3d4faef52f873c2babe2b1e03c8f71fa41f818", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "4bc245ba34ce20b2f7eb301314df30d44347c803a69500ec50ba8e89961c834d", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "bf81d668b56da3de8a2c52dc65944599ef99355dd753beb37dba237aa751fc51", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "34fc7ac0a8f22dace9619f227cf7772c15bb4fbd2cafa09b337e7104d8b169c1", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "d10e86dcdbcc260c9ce7b92532a889624a910c6771cde959d2ffceec5cb61072", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "eb931dc383b8f562f6cb355d445d793e2b8ff94a6387fb894689431438d9b521", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a1e35f4fb9fe1d4371ba75e979ccf420926b7ca21ba706191f509a8082f10939", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e0a282d3e127bc29ff0c16c0e29bda3e3c80db11322b7d0fd6e96c8c6defe994", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "d3dea63489a186eb18876c761d65c52f6185692ea47a8589bfb4f21d55415a89", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0cd69d60ec183b58ed86babe17074cdb07413c3cc979a2a7b4667a48b8c2ec33", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "80f420162854b7a2358f7bd74d4484931ef4ae0c895760036c52f15c52280437", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f869c25f118014ddfc77dc2239564c131682313b442f8dc06a84d40d2f199e45", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "395edec4a2c15d7275de6ce04e02c4a8001dc1826a731a28db5cb642f3afed86", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9ad450d005d34eeb0fd69e2ec52d0ec2975d743fc0c44398f697a542a260a5fb", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "2c064b32e3573746baa6f3d4b1a286c5a299186184b48a1abc4149c6e9888e76", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "a3331b5d71adade7ea3a347258ea27faace9d0c0508dfceecea102b447760756", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "79c0c9620415515d8043786575a14151207f3ef41bba4afbb0d9773d94a38c27", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "180abee3652af9b96839d63e568571be9c6d48bab638fbf23deb63b8fdbab29f", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "60222fe7ae7f5446d1c2f3bfb8df169f498bb769ba4aa4da995302693fb4fcaa", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "1643803ae4840696b4fb023a9e852895fcfa8dbf3322af00f832c10a373db512", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "79c0c9620415515d8043786575a14151207f3ef41bba4afbb0d9773d94a38c27", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "79c0c9620415515d8043786575a14151207f3ef41bba4afbb0d9773d94a38c27", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "79c0c9620415515d8043786575a14151207f3ef41bba4afbb0d9773d94a38c27", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3e21871e3170977ab591a71fc956c203de419b26cb7b30dfc24d6cde6f00af90", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "83daa88715ccadb81e8513f89e7ae312c90d86f3086ce7fcc434361250e06ba1", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "9cf339e92320a7b1f0c5130c3ddc3ea21152ab6bea31dce2b33bca2ec0f22cbd", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "8e1ff037f2e04e12049ea59cac5b2d9f051f2ebb8ed617b729d43ee585608a1a", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "2f1ab7d7ae29e994427101d4d70d753764ec2a218aaa1748af3f432c22daf99e", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "329cad75e4cbfa929419eb8785ad0bfbb5736b86f88506acf95ca4fb1e5f9adb", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "d256f75a041cb9ddb8d7ee7913da11f3ea29b08466e15f2f1bc38717e7917681", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "7a8b4fb6de8988c006fc16ada212e7c76d12344e9fd645873facbd459cbeb9ac", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "601fb223c18adb1f9885a669f31e56e0b313af2d7b3863c9b40c446ec43ed069", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ff698f748e992c45bb226c30e7cbb91c96c6f984070daa0ccc67352a97fa97d7", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "71f038f6ce458b1654dbc391f51acf44fbb1b680b8ae66a973fedfcbe34e80e3", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "2bbd3ebe85f182556b9a0236deed89a8ff60977aea075f56dac051392ae46c82", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "43ee1724fc09b5df73f116470a665b8f53eb15997dc0c784be76006220be5347", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "0b919b16a8daada2618ae93e494659a116be4d6f23aab142c2aead63b13d7a33", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "ec79b33878f1a6f282c35554c1ab1b04c9d91e0e33396db65146433d9b69b0c4", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "29272a036c1d7f21fb7b57cd3fe15f76bccc35614a4d47845827d602d21b6307", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "02d017a10ce56e06a2a3b8b41cb415f7f97f23b49503ac2fb2c24a66f2d59764", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "66292f8f43bdddd016439035fe812378ea7370c82714b770dcf6fb7b15d66998", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "71f038f6ce458b1654dbc391f51acf44fbb1b680b8ae66a973fedfcbe34e80e3", +"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "e41460d482a8d93f8a4501fdb4c9c7b81bb69751a5bab4e844cf3740a8d007cb", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "a44b14013039db7c1a5a55ec77d8553a67fff300b00ff18adf32df61289b2440", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "e36c67b1ee47c7191477fc22595873ae12dcf2a31f0158c879e3a7aaf4b318ae", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "1c9fa14a6537ca34da6dc915037e216fd327701655f54f9b097e60bef818e62a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "e36c67b1ee47c7191477fc22595873ae12dcf2a31f0158c879e3a7aaf4b318ae", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "535d36333ac15fff65639d6685cd2e6d8314057cbee7dd4ec48042678e1763d2", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "535d36333ac15fff65639d6685cd2e6d8314057cbee7dd4ec48042678e1763d2", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "afb64dd73c9fe092c7c07357327ffa1afc8d882bb162ed1e03c13ae29936568b", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "ddb9674a5c1589ab5d7190ef03f63e5a9c3d660fb15f3f3ce6d7b64689719dd2", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4d83a5479589eeafa1eaf2f0c189841434fd1c4fc04f3b8c7ee3d13d1873d40d", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "7169370241377b249824163d17d582e66f780692e20d7e6e5b63ae4a5c183749", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "15927e1bb1440dddc8d57e27a826c9980f91e1d7572bf89421337d73d3bccc7c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "366ef6e3a7aa92a23e1205fb2ebc56a838614e661f41b8f1300572171f2ec840", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5fa2030b11a0691faf6a05a38067d595c08ad218591974d757fcb71ac3e6d6e4", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "69808960d98925d4450de03fc46e352a27ff9ca29cec86263154336ff54a949f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "392266a08822e7a9875c6c356112222c3d05fc0a2abee72aff1af758b8ae1b39", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1541efc60034aa2e13ca156cac26110954b7ad1f993634ead580592a4f73b977", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "392266a08822e7a9875c6c356112222c3d05fc0a2abee72aff1af758b8ae1b39", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a04412e9b3119fca5d4e4cbbdedc2d3aaa427676614ab4cd7fe5e7b5a58fe0fb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a04412e9b3119fca5d4e4cbbdedc2d3aaa427676614ab4cd7fe5e7b5a58fe0fb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "beabf0e142722d25d1cdd594fcd33e613d842ccbfe26ede259fe3488010fb220", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "fa93e8ae88dc55f318850affa9b6dff81bc070eae41868e7e15212f8674ad2ca", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "d3db65bfff8b8aa641449d364f9aa1f3e90589450885d70374855a477dff9cbc", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "7169370241377b249824163d17d582e66f780692e20d7e6e5b63ae4a5c183749", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e9b59537fe4ffc9b222243bcc3c89800d6f179c66bd8901fb5d0e1c95d74618f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "535660c11637d3387ffe070b4265f7bb5f41477b17b60cda1d8037507a947809", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "498769052c24a333b2189f1c2946e4d9df6b1dfb10a91ec2522a8e0cfc2553f1", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c7ab323ba8efae710c0c46b064617a889cc1fb3a19346b2596e0043d9632f5f0", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1e160f9bfca70ebfaa3a78b8e22a091c00bdffddbc1619844d5c11c06c885f66", +"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "20a6d009b70e026b6b899783fe16832ccb35aa913793be790de355d87abd9bc6", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "15927e1bb1440dddc8d57e27a826c9980f91e1d7572bf89421337d73d3bccc7c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "afb64dd73c9fe092c7c07357327ffa1afc8d882bb162ed1e03c13ae29936568b", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "1dbf86718e60a369db93f836bdde8978a8b0b6feb92d5d3ba8fd99256bfbc895", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4d83a5479589eeafa1eaf2f0c189841434fd1c4fc04f3b8c7ee3d13d1873d40d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "f6db6ddbb80b8ac8e994231c7d43ebc0381e3cdc4ac90deec85c83de82ad0b20", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "c618729a7ee9edc8c1b6bf3a239e32a108172f6642f73eb61c1b2e09d842c9bb", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "15927e1bb1440dddc8d57e27a826c9980f91e1d7572bf89421337d73d3bccc7c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e9b59537fe4ffc9b222243bcc3c89800d6f179c66bd8901fb5d0e1c95d74618f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "beabf0e142722d25d1cdd594fcd33e613d842ccbfe26ede259fe3488010fb220", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "1e24e71ce41793e4ba3216c8bdb3654e638e09c654765f6a5f5a3ea3f213e8d6", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "d3db65bfff8b8aa641449d364f9aa1f3e90589450885d70374855a477dff9cbc", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "f79c5e2f2998774e83bbafe3d1064d79b0a72b80602df1ab799a89d7196b2e7f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "d6d829c10618e559e337260d4e28f263a860a4ac819ed4f8ed388a0f26ccf140", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e9b59537fe4ffc9b222243bcc3c89800d6f179c66bd8901fb5d0e1c95d74618f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a1471d4f910996ae7cc8addd2798532e3a1d2eac0b7d5e0a2f6e634fbc17d56c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a1471d4f910996ae7cc8addd2798532e3a1d2eac0b7d5e0a2f6e634fbc17d56c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "19628ad1edeb109010d0243b917493bf05ea17ac681414306bad17ba67dae7ee", +"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7a71ebfb03639dcbe9e086c1596019abf32281de7b532588f4e744e0743e5c67", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "f3d41f2f018adaa8f93cb137f9974134d4997be0fe111e1648cf031a6a9ecc06", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "f3d41f2f018adaa8f93cb137f9974134d4997be0fe111e1648cf031a6a9ecc06", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "22308272ee6a8fb51df402bee6d717305b90c4e2b28c6a252c58b2db8234ee1f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "22308272ee6a8fb51df402bee6d717305b90c4e2b28c6a252c58b2db8234ee1f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dd7014585c3473fdb3562b14f0e8e2901197eccf969c7b48556b66f14415ebba", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dd7014585c3473fdb3562b14f0e8e2901197eccf969c7b48556b66f14415ebba", +"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "3f2d6c30d313438fd2df4f71acf5cb70d9eeb02b0c403dbe2192417d05984764", +"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "3f2d6c30d313438fd2df4f71acf5cb70d9eeb02b0c403dbe2192417d05984764", +"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "8662f6f2582eddf30f160c07eb922fa79a3c46cc56415cccb9d2480d10ef60de", +"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "e8ab1e56ae5eabf717dd756c0eb90e1fec18af57cfaf8cd4a1ab9154e5e6b845", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "13ccd1f7c04981f0f2807e43641c8bd1fe936bb05a3a7c65efc7bde1dd037d75", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "3eebfa4ce124644fd95cbea683133470c3a68a5ec337a760add495ef213ed9f0", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "09ebdf0ff31579195cb9c4f286fa8cfa711e19b3747518d6e4f9a4300993f322", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "c99dfc7bbe3748d80b3114b8b3e653f60f25a0ff706a423ef07050c81c6f25bc", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "7a3f136ae0c8b2d768e870bb473209d77e08e6d26d9127aa14c58820ea4873a8", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "c43f86a981d4aa4839301e673fb4acb82ad29e66855704de63f9ff4400afbbc9", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "a67a327a59bc0972c51dda9b009e51d838ff8d7ef747ccbe04b2cda090ca1047", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "43d5c8720f25d7b940ccbe2ad3f12e69f62c6fbd957cceb842ea090759cfeeef", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "82d5bd16c2c19acf8625d1fc6dd578603bb05abae2fb1b9124e206358c40a2ee", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "d75fa858d8c5f5734710ad64244aacdf2299b7f953498fdf42ddcbb6bdc3d3fe", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "8c6e1a9a5237e1de09c79ecdbe80d59a3ff844714395c34ed93df2e424ce22e1", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "87b6d5049f6304592bc3e97c7c032d597c6a48788163541e2e671c8be8ab3e1f", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "5a7c393e5f2b5091d487fd43ccd34f29898239dd5f5fc7d21eeaac6602503433", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2db7df72cbba79d3750252d9c42212510140d887d19b495f28b16d4b51b9b393", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "f274d710066d5c314e907aeb32e3483032b664086ecb857d16a4922212fd56e2", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", +"T3T1_de_misc-test_msg_signidentity.py::test_sign": "c3e221179697e38333866918f401f88424737898242f31158045e7a8a63d7938", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "3bedb5d4afbeab77e28829dc2ee3756198717284a022c62a177d6ec24bba4251", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "bf40575800501dc051a6572f97afa3245a8879856c1a7b7287aa279c7a010a6c", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "8c4daf241042d7c01dfba84a8da2e9ad4df455377f96c56ba3933e17c31c0948", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "a59260291fb4a9558a3facfcb8b89ee5f0d71f2e9a30fa36b73d7915db111129", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "9d5174215908f560a36bf481e1be810080f565c8c8d085bfc4c677c629bb3abe", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "3f25c1f293b1e8a4389848d5369155b4359ff51f119dc994fe5efe1a5a6d7539", +"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "2cec14836c413576d5152dfd24d24561d6677fbc0bc2c17f3f7053dd62f912a8", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b645b966bd46850db539cc8e683f631726f7261c444742eb71908f97c5b70156", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4464b8010e2bf9592871a26f8fa169ed70a3d7d445546c8be0506d19600de981", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "a4cc9056ea9b8991ddc836e1fbec7fc50723524dbddc3d77e63bdd04b0065be7", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "3b6159a0c4998b97d47272ca5eb8535fedbf6eba87db6d4f2eac298c67caaac6", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8385543f01e230becee4bc5e8916e614a70f13aabf3ef201d185b193b5a73f30", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0d1933d7f92f0f39f4c237fbb49f7d4327da627e92af5138c291a2e0d4b79b89", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "adf1ebecc6f1994986695f440aa333c6ebc7a8c7c24085976784d07a9612d31e", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e02634af6de0fe0ef885bd355991175c112dd5150ae3c792608cbddd6c9f0d16", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a99d7454691bd70d701a867eeaacf4b88bb367bb84906dd06cbbd529ce70cce8", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "77f908648074f6e03d1c362b1a5e51ffcda14c8f05a32480ee49b7d8fa000e95", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "6cf7c03732e8beb888cade336ce2c1d918c3287eb34f1f129f1b97ce9c3fd0cd", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c70c73689c7012ad7381edaa530c9e6f3e0edcd8326e1d518f5e79af3319206a", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "3882ec3923481f43341f143b6d70aa4340f4cd607ffef0c07aa78284aee6333c", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "2cb11002df0dc1b9cc44287a02eebe1118e1800860064649cab337b2478b3ce6", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "77ba9edf98c247a909b40cd90a092b8b532e606af6f4eea6fb962a8645772add", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0d1933d7f92f0f39f4c237fbb49f7d4327da627e92af5138c291a2e0d4b79b89", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fcf686f6587e3bdd85dbf4f1218419e835de4ea6a704d5efd2af4e3ff30b7d04", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bc8c3d50be6d28156c76b9b15a2e675e7ec361fa4bbfe00024b37c90f0bf6f16", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "74b7d4339ef9b354b093f2dea09ad9093de86b6f4cc6497862f8403d38347044", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "490a3d9df6118639acb3f660ae81c6084c77be89121336061c3e2eef4365e0fb", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "efcf0865d027e0d1fc5644e6145e2a28c87d15010893b4cc5ef8aa432c1e058d", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2ab094656e62c738b7bae58b61661986172404498829d5631ff8130b0488b58d", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e19a7709632559bcfb3284c0db4ee78d73fe18aee9c64607e8544be9bf459336", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "800b13d6475239afcac999220e9e0e76b3d7327107fa4c5054898e81381ec240", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "705d7c97f9f3b84a1c6a1c77d53a0e6eb41f71e9d000401614280989028f92c0", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d8eb3a479e160da63ce3a11b959a2f9b22f75702fc1f3f4bbfe8a8aa5cf07b53", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f0fc86ffb3f74456a9c6282789bb4f71a319fc125da5fd5616636e311fd23eae", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a04bf47e9b8ad1f7bc6545f6a2049fb0bb4211f66d340a501367eef323a173ab", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "093169b644e8cc008ea7caead9d2b1c59c18805359488924c501f90e6f5cd5b6", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "ed212433613715e7aaa5a80bb0b2111dc8988487820cc83d239059b7e8cd7584", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "430a25654df0daf86c5ca74296ec129640aacfd5694810b1ca98cc97a8ed3bcc", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "eeb3d9c92d56d99254a6bf9045da0547b4461a8b7b311eae5b12fc434be19d61", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "363a46acab4a0ac5cf5fa8733848a5ffb135740e9c99a4d15a06beba2301ae6e", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2ad7b98efd5be80e34d1f37323b2206813e294e162ac3e8b79f69cf022868821", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fe3e24d59b677a462d31cc44549d57101f439ad380114dfc027e9ff71d8863c1", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d8bd2de90bec49d4175cab2f5104193f754f672c99efc83a0692c7d13157a7e7", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8ae6882dd2413c176b79798b2ed43bec9467e0635817ea8b848f04d91a7af7e4", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "288e6316b865ab767149abf5bf65dfbb71c4172fc563094e7651501946973643", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "44122ac0bbdbe930e13c0520dddedff372db7161084e54993cb003abbcca7740", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "004c633a5bcf9a5168ffa0e6a1dda32692618ef8c477ad1c3d63a88b3826cdcd", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0348880a4cbcbd84129baa89cc279aabef2e31dcb9e0fcea7355d4bdcaea9ad8", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a696bf49c6f69be31ab25db057fce855d985f356b509733c4db821f8de68cbaf", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "12a84a99620bdd5d05a90c2e90fe119cb43e6b90120dfa5e52bc061da5206fac", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "58a875a564314d2325d564dbc4d810c88804243f0acd9638a92fcebec26f9212", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8d695d0baa80b750459d15582320957cc3d5ea9be95bd9ec36dd861b4946c8b3", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "232772bcacc846b2cb061cbdb319be5910c7547ef4f83a4c03d4998a1e334e83", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "aa06589dba4bd9429e55c1981aae51bd6e0845d370290dac3900e497f2f7dfa1", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "dad10acbf89b6101f57d63b88865229f1d515e6c2154991c9c81e1a567d296c1", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "76ca027a6e06c3804a2000fcf8e7261369e14dd2d2b4a149f9b52a05982f0d51", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "ab04df990bc505790ae24fe59222e365b5658560ca5b27fa3c69d426825ff9c3", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "a6f70bbfdc5aafd9fab725e7b5c162cd3a5b101e63559fef90551ed2456529e9", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "23299d22f676d237e562a898a1b4f5e734cf4de3551695fe9228a2be92cd09f0", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c914acc2e5c2cbbf371eb5f53d24e2d2d1c4c3bde94cd1da88c9ea8ba9177867", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "eb6403e30469a4706ae708060215e6a12bc56da91c8f1b99aa07c9dc6c29dc4d", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57474d270b568b57b67c8713ddfa93317ca850c59c29bb1c53e055d5500ea034", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "864ae3f49900cce042864a6d5f218851738236e8e1005d4978422250ee9be133", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "a1b5a7baca2c1c52363185ca5a09bf7e163f15a1ba4342de3cefef5297e1d7da", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "57474d270b568b57b67c8713ddfa93317ca850c59c29bb1c53e055d5500ea034", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "864ae3f49900cce042864a6d5f218851738236e8e1005d4978422250ee9be133", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "a1b5a7baca2c1c52363185ca5a09bf7e163f15a1ba4342de3cefef5297e1d7da", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e090db776e880c278ff94d57b7b3c68c6744b6372dd1b723a4594adbeeaf2d79", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "1cf65f1c6f799f6f5c83776652302940325aa4b7df78be58d3f7957d48dc193e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "0374e192e7b1a786d0f74947531b1d4983b5a805a578ce049e98e1e9e812d8fd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "a7eadd1b4563542ba37280b244012cb14bfec95a73a8a0aa707544a34e94f5ea", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "fcc6be892e06b0214e64882900a5f4956e21e0ddf405828854bbca62d55857b0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "187b82f071ff43da52aee16022353c0380d02337b8dfcdd80813f0d9bacb78e3", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "ca37399c9c02372e96768acbc90336b487afdfc4b781976075f595d8bbd5c484", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "527fba7a7b26f3f5caae5de3a9e6df8d7047d8aca3667c5bac4d970548fbb9c6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a0796408e357657147ae6c43f5ed09f3d8e67e59c6e5422aafd3ac549ff7a4a5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "a73f66a9e3525d31ea3365891a03d104663b8eac9ff76ea36af59454a2f475b8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "a78ec30d84634fcd40013b37050c4b69e5a0f5d22354cedaf5701f3ed2d2862f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "09fc58fb9c743c5a8c879b2ab11fa12c1ccec36e7090c9d73bd9012f700c3ab5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c109acb6c829fe4294381dcca3fa206a975303b9127eb6e60114566e8e03893c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "eaa1e167c90386d1f70b44bfd4e79b8351e1ec4f2a49221f5d483ec04ffaeb98", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "3b79e7e4df7b3d09d0018a3c5cd0bcbdc1687cb30e5487bc16e4a87644a2d6ec", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b12399cbda7d8a7b55791c4815091bca2e76e5c0647bb39a886abeb9513d5a7b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "9524cf76759ea252cecd896b42f81baf04cb319c1fc6cf101f089c02ec96f29b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "e54accf58109867c6d2609c1a0d5c9b92bce3dd2415f42905a9fe16ab54e8e22", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d09150b8f9745f6ccbb638a16deeef798a6bd9cb296f77a80bea7810546a05ae", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "8397989541f029bbf45a9e722d459d0ab452ca698183080ba4af3e1649e6df07", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f894d3f28868ad43ed84281634e1e1f408b0c2c7c2b2b5eb30cc6027ec14d984", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f894d3f28868ad43ed84281634e1e1f408b0c2c7c2b2b5eb30cc6027ec14d984", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "a194b33286220bf055f3c06523c1a4f1586377e168bfe31026404d2f9916e389", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "0be78a5919520a10e0afdd6451c245444e68b7fdb77f28a9ba051a0103b551bd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "25d685c281d464bf3519a68a26acec3c152864a3a9c941785b433b7a75bd8c51", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "76950b007cd13a5964bc1dcbb1facd971ed2ecfaee5fef2173bc6c94d834c5e2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b0302eda8dcb47b2cf7a3cea1ee3ecf4e13a25b4a4e33633a2b517bb59b56ca0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "1e868640e1c62f8b24ff7cef9d3667ce5700f3cc349840bca4835d4d24a41508", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "0e0f8814ea14fb4a47b2faf3fcce0dc81bd7757836077a905b712479c44adade", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "523d0746c054e6b805f96fd1c621cf077ace189dd62068bac1fe59f7c4de21be", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "539012f1053609ebfad9f8b96ae21d66cb7c6705baff82253bf81be2703acff5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "309c304b54cacce623e6e669a2cc10f576e019e18a395e6c5478964cdc6d2a87", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "848ec4f21f2163d25462d24ea0fd5a7048e9f8a48b9a7a156b6dfe1fe4b5c36e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "b01ba90c78e91495d1f8424623e40f2030560cdeca4e92fff8d3ff87540793a4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "de5e109a17cfc3db2f156ac82e8de3b77e5604a3fad47748f8b514e87db3879d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8d4f261d4886dc982ff1b614ec8058ab381429c4033222c295ea4e44c3b0d188", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "25c9955a96ae48840b9ce89505c74b3bfe9ff6a6185906870c97d88d0ff17bcc", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "1842c5e203ffa3e67825484adc2b0028e0ad862c82202be8e269e498f64a4d5f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "76915307557aaf6851dee78b22e094934fb698b9b6dd770fa1a6396f9a8b119c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "ebdba70671aaae2befbefd7255eb7d80bf579a21536e0c152f7eb45d3494aa50", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "ed8626a75cbaac6aabd6fe54b7dc81b0d43ad588db1449c6430749ba417f59d1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "1ef57c6e80dcac74b19101bc73f59350009ab02b8d4d0aed29984e979a0deed9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "8220edbc73a6d091f7e027ae7af05d3871ca9917ddc1ffa5177e40198ed25d2f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "0161e2f5dee0ea6a011435b7036ada9d1c466a3283f4c1b5e9098faaf53d825f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "723b904ccd66d1238dfc5135e0799ecb82ef655c86ac9eade3567692666f9fcd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "c853702bd19dbe461770a5856dc0c0aea973db9d3872c4429c1055732145509d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "bcc00a110756d734a2274b94c939f3c4da760860c480ab91670801853313388e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9e2647e4963775e7795baedb640a062ea7d80d36804bc2fb8f131820d7dab89c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "607702e18f0ee2f6912706f29eb1305865cb3404c48963d441f9612b33b6b755", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "3bbbd6e5b10e5b7d6b55b16ff66e4b33d48c3a934dcc409a4f35dcf90ebec4f6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ef6d76a93fd43671a5a08c955c85f6102ce8b06d33ccb497ef422ed79fe2ee02", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "045bb7e48e87fa12a985d06e9440bfd7357dbf347e27fbc53474b4adb63425c7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7c388fb2cfce0f760a35ddb30b9fc1aa7ef81931605245b9e1cc096dc3cb1d0c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "9f8c9cb86015c474139f6e60b396ace05537ff07762fcb659010d4a240ef6f4d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "4c4075cc0f10aea8fba02c8a3f7f0e12f5c7bef5fe770c1e68ae75cd58d88c44", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "dace1a14fe2817a82671ffd64c0da36d339f39a2ef0ae386694491075c537216", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "381c4fb34240beba1a2935aeb837f372e8a5ca6cdbe2fee14cadeed75d1d7e71", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "59868ce2b000b2f71aca05b279d63e87f8903caf0e834c0a40bd80787e31c2da", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "d4dc22fef593a05fff7b26d1009265152aca7ca276736722292643e229a489d9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "25d685c281d464bf3519a68a26acec3c152864a3a9c941785b433b7a75bd8c51", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "d45eeaa801e430de499f814fbd70e4d2ec6d9b37e978f69d344f5a95f4f0a3c5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "efcb78f5c4fc23100ce42d2f84a43043cc9af47e1f4f542ce55b1b382f6b99b0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "5d12e7430424a11a185f9ae0c6b0a25338d64c85cf1f6573f20194ad7cf6ec29", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "1d6f8cbc2996ab8b7fba4baf776f7c9dd5b238600ed1c5dae03a78f3feb86e45", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "74075111580fe52c54ccc2fc66d46b3f07976f32b14c2106481564a37a8f5391", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d4f78c7eb3702a532f28b0bf769589bed5bb51fdd0de3e9d94dfc7bddf623e67", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "5ba91e71cab34ed33334eaf7e8daa9c5db0466a5d6dd939e22dc4919399987b3", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "76f8aff4fc625ecb8536603af76e0621b0985c8fa9b98f029f61e696fdbbc821", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "12038816453bb006f9536c594088eb7c65e0627eefd70c17f82940f08c9e5346", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "ca7e2a1fc2d0844463ad17ae445b7b00b99712d114f29bd6a585f0c0ee115d70", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "fef6d430a0f793e455d79186f32ca48b5904cac8244ce7b2b91493393986b74d", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "98877fed310fa2dd9cc38f9354d4f9adbde1fd9a37b11d9f50d190acf5b89619", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "9b160275b05d0fea403838bd9390c58efdaa213a963aa5cac0a2b9b479b1e7ca", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "3c33dc8ab976fa4801a8006a0ef7b21eebde32d43d4279bed927e8620957c944", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "c69a8d12c32574739dcaa49a8fe5fcb32a4b5a346f3be6c068bb50327f700ff3", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "31d819ecce0b0f9d72f7b9f2bc8513b5e398482f29deb911e79cfef69901ad5b", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3f1a483ad4ebea982db16b9338a430ee1b305f7f78afc03dc84e16d274cbefe4", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "cd3ff415f42c0b8e46d7f32686b36f9f7a0428fa6898969f1f6ed508d49874fa", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "1efb1a489fcd49bc6aacb32fb17df69137210c5cba4475f5c23ae9a7809ab5f3", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "57311efe0cb6ca8e64cc7e3ee15271c29687b12344c65e2c58fdcbfda4f63890", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "d7778e00360664f67c545391d9814555961fb423192e89f618398866379f26e9", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "7a64bb475848ef721b4885e7afd2226d42d9690cd0193d9dcea84b75c3a385b2", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0ba950eab7ef3f12e78a9c58343dc8e0970f8d11048dc5c6b0ad2a7b02499cb1", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "bdc0de237778c126b2a444048ba42ade89c6b737b4a1b20a48a2273609a2a2d5", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "49a1e9233713ee49a183eb13ec9996425644acd122d739a6737b99b61cea7fae", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a49aa6c599b2f69ae31b1b39704cf685ce1670f7842ca6aeb6eecf32f982ed3f", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "1938a32b08827966ad7fb7827327864fd74c90b6564c7b6936207f43b27ddcb3", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3f6e5c8eabd75c2c1941e11a04f5c00e08813a88f2050998a16872c9ff34eb1c", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3b93c6528d3a2590fe5ed52fa8f8cbf8003ff20d9e3cc06d354743964463c5af", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "0836bd0f17a7da9fa087cc037d10719af47783062669a674422982f175951a72", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "485e9b8cf6ab9581f33c3012dcfd764ffff422dc778028288952825cccb474b8", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "adc1575b0948fd41fafcd6faf98346f94d63330657123a3b32e3f2e99c143ef7", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "3311b3e6a18440d4e6100386287863d31aa294130cad82a75649e46ce62aa03f", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "dbc7f5ab56f67f72cb2eb737c223c8c082d975a66cc875985debd9ae014968cf", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "0c5395e6e3c3ed9796c490667d72754c524b0e169a2a6373eeec054c14b6ec56", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "be5f7c0c814f7434d4142f2238a064a72cbae14bbff9be832c503059614b939c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "69f7bbbd1faa8b49e338eeb7707b5d4a5fb55f4f4d1d01dc858d9e859c0155b7", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "e6c4425ad7da7e4e9397b60ecd2ab954bf95fd77af32f40f6a56f8af9ab46068", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "687a8dd4ae03b9ca19915e1e67d54ac520f3957cf7eae63b63e1ff4834662f6a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "ce246117630587bc0cc4515ecb9b945032624fa4dd27b6cb47a8a8a814fdbf38", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "aac010fd9e659919a978ad6067c9a25c1a199d2420be064886dcf69b37a47cb3", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "deb4cd8c0c2b0df877e71282f5b38190952673580c9286a6dea3a71add6f99d9", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "db82cf0bb3c9a1d764b9a61d8c381af6b26fa1040ec7ef76d8ac119c023a2aa1", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "7f1c714adbb598472526aa75a60944d4298c268eba4f58d2310394be43c004e7", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "792a257d2ca162f264b8d3faedf4da31991549a651130898051c7089b96d037d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "0d71d785e13ac19522ccf689ded7e1d6182afbcf48c88c315f33ef9277feeaee", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "b4747f1d9dfde6026ee613cf9dd64b094a5a2882ad69c66b0486125f854160da", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "cc6b8703e6cdf143597f2c1f8efd98a10b4fb79040254d247a5a8b618f80eea6", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "a6622a1a1d3333a346ec4ccfc3c9386fcd74a290ffab34f11fa231086e7838d0", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "c59b05ae459fb8b6cfaedcbe8032926539d52c5cac81315ff8706229c64ac086", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "f82b7436fea5a49fd74fbddd8bc447f596ea714bb7894b2b6c6b2dd85fa7700a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "1e3868a36b5860bf672adc036557aec470082f2b8306e6d916b32f514864ad10", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "945aa4c05bdec6295c1187c391a95d030ca6bca1b2946b57c09da3b7346bc02c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "1b1bd04b7f67732be47b7faacc5f781df080ef41cf712332060ef853da2a01ad", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "01c21a0fe5097a5d66370c306ce8ac384a0e361dbb62d61038ca5724aa4870e6", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c5d5cbdadbce463386f3abb540cbd524c7f0456f8d034b6f33f634c4df2104fd", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "cb9e7503cf30fe25598c04b9c896d4290392e51420c5bf6dcf4de08361195055", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9a82fc1e8e608814bb8c7e9f6ad57a47ec0939aabcef739bb8776b13a8da5754", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "0d71d785e13ac19522ccf689ded7e1d6182afbcf48c88c315f33ef9277feeaee", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "305d0c783e7fd81dc6d2ef74fd62cacea55f98ab216be1551253479cc22faf94", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e262e20eeb06ecb849694c08a51944bf6bc6a168f49d5910cd5af3a30e9090dd", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0b39d2bf40b699e70e2cc4ed6989213f8bcb484f98adaab8a71cd977f28f7737", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aee9e1033dbc5330d189798f6a3acfe6816ed0cd76d3834609c295a57c758b3d", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "6f5227af92a7581bf1868dbb7fc458777c0b97f6b43fd9a93400284566e07700", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "9de91d001db46ecd308c1adca338063e4cca66cc13d2ea66249755b7ef1bb313", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4d95f8f6d617a1a088b7192a4dd39eff2e25648f881ff6a2fc79ab7678980ed4", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "ef60cf1a41029d32b71f1c910e8b86e7bda6be9ec88f131751662356ab0ae0fd", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "ea09fbf3108406f34b2b6abe46d8e16e069fda4b07f83bd9060e4e2fea3597c6", +"T3T1_de_test_autolock.py::test_autolock_default_value": "741debf3c6a09613f30788095675edbeb9cf8512b9b97f239460cbd45ea014fa", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "c0faa90f695b8798d897317bc23a72fa9a83580bc6442406c3f6edc2fdf9b78d", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "c0faa90f695b8798d897317bc23a72fa9a83580bc6442406c3f6edc2fdf9b78d", +"T3T1_de_test_basic.py::test_capabilities": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_basic.py::test_device_id_different": "92363bb8c8f23b9f81f1ce004de2e911fc517b17f63c7866047e257e414342c1", +"T3T1_de_test_basic.py::test_device_id_same": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_basic.py::test_features": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_basic.py::test_ping": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_busy_state.py::test_busy_expiry": "6b1aaf7e1f929828e5cfea061dc615d54addd5f136b003b4256d8f9a371754fc", +"T3T1_de_test_busy_state.py::test_busy_state": "ddbc2033edf8004081b0160ea76ed8f5aef7310bd456e624ef13632a3bd350eb", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "c214bd92a169d4a3bee4e28950dd5737eb2662ad002a651aa16c23a987ce0ca1", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "c214bd92a169d4a3bee4e28950dd5737eb2662ad002a651aa16c23a987ce0ca1", +"T3T1_de_test_cancel.py::test_cancel_on_paginated": "a57b3a7a90612b238f712c1e4e7cde1a79800fbd7762b8642bd5870ea24d0bc0", +"T3T1_de_test_debuglink.py::test_softlock_instability": "9fa7657aa757145c4c25e77c144f9b66e796e9421f0f9f4a322995d7289d1d26", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "3c18afa823fc44b6b4148132b66de0f75191f796f49d006f17abda14c263ce93", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_language.py::test_error_invalid_data_hash": "6a20a85ca4fe3deca178d673e1938f83e3404c2c0bbd2ccb153195f437ffc2f0", +"T3T1_de_test_language.py::test_error_invalid_data_length": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", +"T3T1_de_test_language.py::test_error_invalid_header_magic": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", +"T3T1_de_test_language.py::test_error_invalid_signature": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", +"T3T1_de_test_language.py::test_error_too_long": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", +"T3T1_de_test_language.py::test_error_version_mismatch": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", +"T3T1_de_test_language.py::test_full_language_change[cs]": "c40fc38df66b442cf658270a6e2b0d2cf6e083d3e85fb83df87d4b7b56a8c0f9", +"T3T1_de_test_language.py::test_full_language_change[de]": "394f3baa7e308ea95261823571b184c91431d779562d090d1b3d613605325957", +"T3T1_de_test_language.py::test_full_language_change[en]": "cfb7fcc764e59a1cbb0fa391ce18d8ba73c32882c931a1e3112dc65c913af558", +"T3T1_de_test_language.py::test_full_language_change[es]": "188dd44f237b2ce71269e9fb9cfa66a4e0ff23fd56322c34db6df0bb33b2ec86", +"T3T1_de_test_language.py::test_full_language_change[fr]": "4b947be7075e2170428319fbf29963b27daff56a20fddb790209671191f3c6c2", +"T3T1_de_test_language.py::test_header_trailing_data": "9d0e4d400cd7970951b1fa9f124ab638e14a771ed117b863cc4d8ca69c53b1e1", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "a512a76f1bf932f820f085e0b9d8a3473d5b067b2ceaad98af777ddd66babba2", +"T3T1_de_test_language.py::test_reject_update": "31b87e7ced4dd70a5e47dc224db0a56cfcaea700f336372815574100d1a26a66", +"T3T1_de_test_language.py::test_silent_first_install[False-False]": "9573311a2e557b29646a5503482249093edba4acbc02f69c9059ec6502bdbbcc", +"T3T1_de_test_language.py::test_silent_first_install[None-False]": "9573311a2e557b29646a5503482249093edba4acbc02f69c9059ec6502bdbbcc", +"T3T1_de_test_language.py::test_silent_first_install[True-True]": "9e36bf87c07aceaf51face1a2a41d8d25c9bfc9b26b48e977f4b08236a30bf31", +"T3T1_de_test_language.py::test_switch_from_english[None]": "4080fa9659f16900aba05c9aae2201f5831b8c3f28086125e49c99faa2c3ec29", +"T3T1_de_test_language.py::test_switch_from_english[True]": "4080fa9659f16900aba05c9aae2201f5831b8c3f28086125e49c99faa2c3ec29", +"T3T1_de_test_language.py::test_switch_from_english_not_silent": "4049561bc0f2fbe184e64d558488a19138c8e2ad28900b94714bc648f882a1bb", +"T3T1_de_test_language.py::test_switch_language": "1b72066d4e04dbe46f26f088c4a18c8853b01115d927c71b9f928dbfc6a6ca4c", +"T3T1_de_test_language.py::test_translations_renders_on_screen": "f6743b72b8ce5ea913e7f48ccadfb8b45eb1a21bacc812fca7d067265d2b23c5", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "d4a96a4db02f4c3783dee67cccbe57bfb666637aa8db68abc29c8de87a71a5f0", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "cd17bd1855926901095c01d6da7fe87484b9c1fa88f965cdeff8fc6ec7559483", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "c0b201207c1d23f1232bd88665495a219932f0f7427981368c8fd32923c15b7f", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3e0fbb7d180d785e329ded2df7e886870b2982ced9037ebca6134cc465daf6e0", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "947b3d32e1d6e4b7f64299f53907f3b76ae6f69f8c9165560ed6045a92c05c59", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "d72004795cda7ff4b951c52b53343215e4e2f33782851a60ce72f6c576af3ced", +"T3T1_de_test_msg_applysettings.py::test_label_too_long": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_msg_applysettings.py::test_safety_checks": "a4d80e4d9af887bed0b6189f661fbd7ef1963a6603f6cd19d691c87436900161", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "4b4b26221b1928d33922887c88a06a10c8b539a96909dcac47200669daa31c77", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "9cd5c14e555486122d07fbda3c054824e542d74365eaebb007af1732aa2b407b", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e891c6cd183dd3fdaa29e205dd6c9af59a4fceaf887f3ae6a7655906c2001338", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f0290d031882acda57aef1ea2fbfdf67379988eaca7fae8f2eb31072e369546e", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c1a2a0b031b31f3168075fa001748d2dbf11abc53342d5590cec17867f8383b7", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d2f72c309414f212f481d9d92d3f3904b3faf18aab1e4a63e460e90867a88ffc", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "8affcd975666d73b7d39fd632e81b98c20b2151de9fe102b4ae1ec43f04a3976", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fb26d9d95c387d61bb3f98eb75c0743bbb5b9b3f8abb2fa0ebdb068c7c993627", +"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "e073d32b9a703688ef992d6c086d3ab05982da280ce7144a9a69b61b9bf31ef9", +"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "2800146305af076fc090d99909b415ca460359d08f25f2c0892137c07756613b", +"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c408aadfb3531f525b7eed8dccb90fe89addaddb3dbd652b89b2e3c88e254d4b", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ce4682f8f5b6eb6669c65d26d9a6a1230dbf669e99f5457e8d750f7432187d89", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "57551c93e520706abd48710c9277e52cf3599470fc309c02744bf3f4e51eee7e", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "6b9160ef57f0992145f1b0fc18939bb83c6e8984b065af8d8d2c763050f24019", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "4cd2cca8836ebc77b09313f05f905d2b9f11c8684b2191242fbef92692433337", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "306ce6895ef75875f16e4f35b3c5f05a004bdd67967faad504402d772b2f0cef", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "bb540789300781e12ec7b711f142ccfcf2f79d6c5e7ae98aaaba54cabf722e5d", +"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "d708ac7f0bd9a5a640c68b6c0540a2f5c7414a93dbd6bcc9979bed6faac11a36", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "367e749689b96e5b0e3fa39ff8f5378abb4fac06cce6f78abdf393a5f6587d73", +"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "894b365102246efd03f8fe53dcfbaa1808d6f77b846b91ef62b5da2d66b4d60a", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "16c1f995ca4a929e2b4ca18324039906b831f9f9e8c969b9db008351d03f92cd", +"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "620df07f70930aa8b8b00cf97bf352ec167f5b92e54449720e5760ca35b1008b", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "41d00a473ded753ee61cb63acf50b83a70a757acf1e3792e0d8bc3d8bd002d6b", +"T3T1_de_test_msg_ping.py::test_ping": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "fe8a1f97e89304079cc295b418d5eac75ee441ccab46e0207db549863849b477", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "c643c038a11b3a301b20316fa0d2837c69841f5e074d9bdd0de0841d1f7b18d0", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "619f5d025dfd71d0e15ba018c7ecfd844e6f43be7896cf612a003398993462f0", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "49e224d28671db584b0ed3524d8efb4f414bc1f03231b838172598f27886f755", +"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "92363bb8c8f23b9f81f1ce004de2e911fc517b17f63c7866047e257e414342c1", +"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0807342605b4bbcb2a62d17f1bb8468f89ad7242d8d5523151b7f0f91c68663c", +"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0807342605b4bbcb2a62d17f1bb8468f89ad7242d8d5523151b7f0f91c68663c", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "34a34d92ee6f5cc49828b61273239e640e4fb4d4c139675ffe522d1a23650c4d", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "34a34d92ee6f5cc49828b61273239e640e4fb4d4c139675ffe522d1a23650c4d", +"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "34a34d92ee6f5cc49828b61273239e640e4fb4d4c139675ffe522d1a23650c4d", +"T3T1_de_test_pin.py::test_correct_pin": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "686e3ec64f8b3fff60d7be5b112e1e5b0eb37129d34db9974a0095886bc8383c", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "3aaa5ee13ad55b609624b2b9c42d5224594fe435a9ca14b0b3705eb1dc114221", +"T3T1_de_test_pin.py::test_no_protection": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_protection_levels.py::test_apply_settings": "a8dd340e5c9aa5805566b9c8fb3dbfd9730263dba0e545e68c8dc8d24eba119c", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "7989641a588d529a50f4629013d48e581be0c6c3cfadd8e306093aa951d6bff9", +"T3T1_de_test_protection_levels.py::test_get_address": "6ff2e8177497cf45b3234581b00c66ac820373b1e8fbdd298aa6d1a2039c70ff", +"T3T1_de_test_protection_levels.py::test_get_entropy": "c47ff2291c5642d363c5aff79cbe6eb02ccbed0744a810bc49484a0862f275e8", +"T3T1_de_test_protection_levels.py::test_get_public_key": "6ff2e8177497cf45b3234581b00c66ac820373b1e8fbdd298aa6d1a2039c70ff", +"T3T1_de_test_protection_levels.py::test_initialize": "265a80fe648f2986ba20e20b288e13f78323a5b872e501e10d140d0552a8ef75", +"T3T1_de_test_protection_levels.py::test_passphrase_cached": "a08a02fa2308e836d6088016b59f7293cecf443711f38a83749db957d82391b9", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "83139ef22a60cd0daf183a6263255d05a55673ebda8b4d22cc5b32045b484c0c", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "0d78ab5a9ccd2d32c8e6224041b377b88b19bd98d67ce356b3c90167ddabb232", +"T3T1_de_test_protection_levels.py::test_ping": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", +"T3T1_de_test_protection_levels.py::test_sign_message": "d01bbfb2b34fb502a410f08397cfdb3c77c500bb4946c3a037af4666af0798d5", +"T3T1_de_test_protection_levels.py::test_signtx": "e88bda7fc755763d416ee38fdeea4cd3e031b18920e133564b0461040362f49a", +"T3T1_de_test_protection_levels.py::test_unlocked": "6eb345e6e13315dadd852980389140e0f86e3e88c4d600b2f1a23b75bb67f21d", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "789d2139229a19875ae544dd3c674507c3c5529c4db1b280f3ac58e061fc798d", +"T3T1_de_test_protection_levels.py::test_wipe_device": "77f586b70d92b151c51ccfae935eed1440c07ebbadc9b65126afedc1ddcc0ce5", +"T3T1_de_test_sdcard.py::test_sd_format": "0e6df7ed3603f447d88657afe33057877c7651c8a0a2f745845be8382e3327d7", +"T3T1_de_test_sdcard.py::test_sd_no_format": "0e559e831f007e7cbc37f6f59673781a1dedbb5410ec9eaade877157e8af4f82", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "e76e8ed1145f4c0d70e54331fe599916a9f977fb285936ca0350f970befba1fe", +"T3T1_de_test_session.py::test_cannot_resume_ended_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_session.py::test_clear_session": "af88a313c55edb3bc61c5c2fdc3ab0cd7a388550f48abeb34077be3c323f9478", +"T3T1_de_test_session.py::test_derive_cardano_empty_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_session.py::test_derive_cardano_running_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_session.py::test_end_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_session.py::test_end_session_only_current": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_session.py::test_session_recycling": "34a34d92ee6f5cc49828b61273239e640e4fb4d4c139675ffe522d1a23650c4d", +"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "010895abebf9bc92b5a8548a4c07a16d5268535dfbed3ce627d61f3e74317bb4", +"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "231bc4945e94d28faa16095e7b034004ffa7b233d1b40c6489a9317ca1813971", +"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "17902d79745712bc581ba44e622ae30fa1ca071d85f5c2b76e65567974b73209", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "2036d34b3744a12b2f568fcb6e35b8b086872e634b42f878e95322b2e741a354", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "63f43046440ee656b344efa1de8a563d750500aa01d4d2eb1f9c6b5c2ce113a8", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "5ed7eeefcc4951236a0715be60a3ae80aac9da7f49cffcf8406d3beef50907f7", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "a08a02fa2308e836d6088016b59f7293cecf443711f38a83749db957d82391b9", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "ef7fc8bf7941df6229a90e7e84a325b8e490c8d63ce3edb53edd105a2230c43e", +"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6d39b84fc9927a895cbdc70c1052123296b82d53a89349fe327c52e10b21dd13", +"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "d017454de5e4a33489024ab11b680202ba5e853d7b6e5f71a5dc75c1c1714d75", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c9a97477cf07bb87d17597140741cb74ba3058019c03619c1fac363b16ee32b1", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "aa2429168ca5faf17948faa68d20ef3ec6ad26d981c0c89ff3d16c21ab59ee27", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "fd12f6b2c54d5e9535cdc350f82a93f32365a40f1fca3d7d5679278e22f097f0", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "d9c117fc7acf5afe620a43aca10282aea26fbff0e4f892dbaff6babc885e7b05", +"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ef0b71e00d87b467e992d1d382df16112de96cb40a2d4fd80333fe275648b752", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "a2ae142f62a241e8fc59d6f86df2686f386d1c4a8484ab38571ca9d28b7b775f", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "dd8ca12f3755ed78cec4cdfac25dbc5457fe26d1c3109eacef8d27197de0e20f", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "c3158a1251f22b52c04b3ad9cba7b203404a6e447a08dd106c6f1cf0b04506d9", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "1d30f487e5f2022c2f0e51ff70411059d5c37510fe7b873f46ca10293a5b997e", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "87c26aa7cf5d26af8ec5486d2a69fe2eeb9a75eba731ed13871cde1ca30ceacb", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "17b9007e4a558665357149412782c6ba77843d56040e3a6ce3f007597d1a70d9", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "ad88bcb671175b6f28366e9e69c08498f10de97c8169b19c2367cc582890d89e", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "23275b3fbac01bf80c3d714e10e7c835c9088307f80b59492d259c87bcec36d7", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "f6932bfcf26dcbb4e99df072ee1491df832358fa6e60e38ab36287ca96aa9de4", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "ac1b005da71c33b943ac2daa67ab1338ce1bbdbe50e270ff69fb7ee9af0601da", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "1e486ddf171f311daf9be0960532c1d86df65e770434e3b235d43aab73745fa7", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "d6b15fdc2f90fc81166cafec95b70bc0e31407d6f0f90580478466e28c44da57", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "5375b1a71c158baad2cff50d56be118e382ff1fecc63fad655c13cf6057bc730", +"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "4c92ccfbd2b9724513da4f0770bc6ca35e1e37a1e9c2d4dc59fc8b435662be24", +"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "8e17fa4adf98fb9ff1f96e33754957482a651d83aa41826c2c0b1f03218cac2c", +"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "cfa53be3e6999e185944fd2ead993ee82ebd7abeaeaeb37724380745e8cf8aac", +"T3T1_de_zcash-test_sign_tx.py::test_one_two": "ecbd90b666b0acd695f89fe16dfcba0531e2f763ff6ff03731c1ae3190a52960", +"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", +"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "c1d6558110eef5d99ed21d74ccc7aef2762a1ab923c0ebc204a621f1b942000a", +"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "255661af8f744bf82bebc4857fe6a3f3697b8629697cf5efcd1b0a3e1d5e3671", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "4a07033926585ae1a6cbbfdf8863d09a9398dee4fb6c41405cb4413260bbead5", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "2e59aad9655fe1648834781a6b2d6c2ed40d3bfcc88540549b9e3775e25f7522", +"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "9e5bf34f7e0ef533ad4e9e7fd60c555e16a114b08688599c2a2e63241f5f9057", +"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "44f23bfcbc1cf90b76ff811fb7d0ce96c7f28e954125fc8405b7d5f7a40c1947", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "8fe8c1d56ea7794fcfc72f858a41efb39494897759407625a8763fc302d6fc6c", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "16bec6ab85f7ccec2eed3f2d9f273ab561fa4edc2779a8333e96e325e39a87ca", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "ef31054cf45938b5cba8bf2b7d8f5b691f74a436ee7fa417cf678d7517856255", +"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "69fcdf948ddc30dcc97f6901b82fe80376c7b0c0428099010490521ca37d788a", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "01f8fd01fc6dacca738224f7eec1ff8dc79acc7f5c5e172aef6ccd460592c6b2", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "7adbbc301984f9ea5c78dc9e6dfc1af774869e4d87d81363ad14346b94c12b03", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "0b46d6e740b98bfa899618291cad1bb90efa9384b6755b361b45673cd95f3639", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "01f8fd01fc6dacca738224f7eec1ff8dc79acc7f5c5e172aef6ccd460592c6b2", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "7adbbc301984f9ea5c78dc9e6dfc1af774869e4d87d81363ad14346b94c12b03", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "0b46d6e740b98bfa899618291cad1bb90efa9384b6755b361b45673cd95f3639", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "5fb0f48e4136f400eea4c1958c9a28b0cd205f0a78a6ed2142e1567703b7e242", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "67ef3bfb498805795a5c111437e9e31e9996dc2b2a3d7ed410b820a76879737a", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1a34efcfdc19f56e11bd7a5a888644efd3e17b1d122c0fbc1e8cb7933da07870", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "15cdff9ad1bc9e2d1fd11bed1c1ecdea556d2abc277f33b70034a99821cee76b", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "0ca4bcbaa1a549cb84429dbc77d607ab2cba4c6ce3174699a675251891e8b7f9", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "0ca4bcbaa1a549cb84429dbc77d607ab2cba4c6ce3174699a675251891e8b7f9", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "7500e2783981dbb877e46acf18016f79675cfc89fbc32bccfcff9b2e32f89599", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "6c35025a5a714e4b7bb147186b755672b66c29f72bafaabab02da3d901d60e21", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "8b7dcef01953de33d6a52a40951134b9a2b8daec4066df5ffa2e8b238f4e07a4", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "8a9aa98a0099a826ee682dc6983059d38c3abbe9dfc2caf8937e3b6e99090e6e", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "8a9aa98a0099a826ee682dc6983059d38c3abbe9dfc2caf8937e3b6e99090e6e", +"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "3fe9761bcc0b60cc685d9c0f7e557a3cb2ec18046de63b499670cca7040bdd40", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "3fe9761bcc0b60cc685d9c0f7e557a3cb2ec18046de63b499670cca7040bdd40", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "2863996beef75967773099e62aaea6d7d5494856dd98e936ef664163b56b5601", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "fb6d21fd692633c407fb451910ce47114cb9f9b9e0f442e28f0e556240fdd291", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "82ff4f4de8f48e880ef95003390fd1ff286ba688a77d91b95c61d31aeb215342", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "e791f6e6826367871b11ad6faad81f9884be01195c878781a9c140edba265018", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "4708d337368b283ead6c5748821e6be76c5bc3da0bc9f7e2d8d650f06f1903ea", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5939c9117f5693902df37a493eb0642b3f19c649b49e62a4dab75627cdde8846", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "35f83cabfec81faba8f43de92005108622c103b736e67950dafb16734ec57fb4", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "e2e38b35b015e8bade1300b3c9eda59b6eccfa4e75033ee52e4bcf69d97573f0", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "1d219ffbf1d7045f95e72447cfabbc7619d2e82a5922ea80b87f7448784a9309", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "bf63af7889bfccd7ac50d5d91bbacad386263711bc4aa61698000bb84f752449", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "bab9d61175aed5a4d0a5576ab7080dbe1fadc320b197c5978e74036411098708", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "0143276c80440da3b706128d2465b5234fcb5876a8dc1539bd65ce6323bbdc60", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "86393856753716f9f61036df490306ef1c6e56867bbad329615665d0452cea78", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "74525967435fad62239963a3fbab7232cb61696f943f8f4ffdb423a08c2fb096", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "da30fe502a7998ba02e89e53af85a3bc070b01d46b001bfe78876483ee107dea", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "e9b50a9aa56215c413e8cb3e46a07499be58d21ea0d96c8a87eac1bd28f49d1d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "ec3e6e1c4d4b45ea6a95a63a75b236e2cf2968e1821f518c1ebdcd447a43c6bc", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0a7d9e10264555d0bef7d4b82a74553e41371a53a9f9e204dba85c9bb1714105", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f0234493ad3ac30afde79d2d2be71d4dbab426012050f0b4d1a91065100d4f3b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "e29e0113e30dfd72844f0de8b05043b513768821aa4bf26687b72ee3dda73486", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6ec31b76e735f088eec6ab3685b324a93002414ad373ed4a5eabaf4bfa4b0616", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a39eb80fea81a17906c8b03156ea3d163f8b40ce8e2031f297e63a3dea4b6076", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "402aebeda304793460c77ca022e14f00166c4d123bdbe03df0347c8328a2996d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5939c9117f5693902df37a493eb0642b3f19c649b49e62a4dab75627cdde8846", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "35f83cabfec81faba8f43de92005108622c103b736e67950dafb16734ec57fb4", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "e2e38b35b015e8bade1300b3c9eda59b6eccfa4e75033ee52e4bcf69d97573f0", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "1d219ffbf1d7045f95e72447cfabbc7619d2e82a5922ea80b87f7448784a9309", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "bf63af7889bfccd7ac50d5d91bbacad386263711bc4aa61698000bb84f752449", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "bab9d61175aed5a4d0a5576ab7080dbe1fadc320b197c5978e74036411098708", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "0143276c80440da3b706128d2465b5234fcb5876a8dc1539bd65ce6323bbdc60", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "86393856753716f9f61036df490306ef1c6e56867bbad329615665d0452cea78", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "74525967435fad62239963a3fbab7232cb61696f943f8f4ffdb423a08c2fb096", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "da30fe502a7998ba02e89e53af85a3bc070b01d46b001bfe78876483ee107dea", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "e9b50a9aa56215c413e8cb3e46a07499be58d21ea0d96c8a87eac1bd28f49d1d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "ec3e6e1c4d4b45ea6a95a63a75b236e2cf2968e1821f518c1ebdcd447a43c6bc", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0a7d9e10264555d0bef7d4b82a74553e41371a53a9f9e204dba85c9bb1714105", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f0234493ad3ac30afde79d2d2be71d4dbab426012050f0b4d1a91065100d4f3b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "e29e0113e30dfd72844f0de8b05043b513768821aa4bf26687b72ee3dda73486", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6ec31b76e735f088eec6ab3685b324a93002414ad373ed4a5eabaf4bfa4b0616", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a39eb80fea81a17906c8b03156ea3d163f8b40ce8e2031f297e63a3dea4b6076", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "402aebeda304793460c77ca022e14f00166c4d123bdbe03df0347c8328a2996d", +"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "527ed5aeba0aeb170b9256d22571a1fff931bafa1cee1c9b2dcc12b1228bc2eb", +"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "0235e7d8cd3fd61e145288e2fc41989892755f3570d0f36d05fb30539c12e373", +"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_bch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "0a553db2e817e3b62e95ea2ca2a04d96d8086bcf282ad2c41ade74e2a5ea0963", +"T3T1_en_bitcoin-test_getaddress.py::test_btc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_crw": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_elements": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_grs": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "4baa70d21ef2f067df6868cf908bbfb41e9e285644f99da613ab7db71f33b662", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "44be5847691da0c50f50192ef9d37fde359a0d47367b23003ece62b72618ec2e", +"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "113ac9ab91987c08c3fe4dd06090487a89e449796137ba3406ffddd9bfef802e", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "68270098e255cb3484706e08d9172353f774a900a49a0de22184e9001f037f54", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "c30b233eb3530e9378685c56887faf18c9e6f0f172aab77c63adea52aefb5692", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "f2948296acb056b7769b6a3d6f7060c77349e036cfb8fb03921ffa4e7a2ff21b", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "c96da3225156e81bf2cdb18e8931e3fb751fe5da72970196f4c7b007f2b785dc", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "7ddfb1482968f00d7401903a4fbe0b0b25653f23b875ea8b6d48546fba41c157", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6c198d1d5c656fd90abba15dda5799446315da8ecd39e2826df6b8df80367098", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "4e237267c8a17c7a07b177441b0fec6f9f2ad75e3ff81785907dd8aae3dcad95", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "83c7c2df3a3e78ce9e9b803e5da09899f47396399fe4a634eb8127bfc4ab0b58", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "f5b95ef2e45054cc8f7bd3c05059953b2cebe002b112d5262eb2a36b79cbb480", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "03a9c75fc8b0714289db51b6d66d9b60a6afc72f3595a6191fa42e281be06edc", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "dadf7a53ac6eed8d1b50da38a554de74f81b1fa5b0232d9c8d6fe3bb7b467b9f", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "5a7f7540d16f7f610bf02f438003c3c170b81ffe0c6560ab55db508c5ab52f8e", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "56223cd9ff91d56a6f3be22d45b74c822ba7f0caebab7550e39660fd017fab18", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "a37e129efb58a0b9f0ef62b20f71929b78ce3454ebb14230cf075f034d880760", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4bc6a2a42ed7dd698ccb314fa6f8669f1b91cbbf6d04785bb852afb40eaa7f0e", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "86c8446230dbbbf412b84b3e7a5befec4f551b4111608dc8990b41de568fa695", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "1c0c2b9c640cc464759f0d47558b3a6aa7f1aaa708feeaca4731e7d7516b7a57", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "9d995069d33a9b977e5de89f47a35822d02cd7e0972e7628a6fd00c6a3745023", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e12478defcc6997ea76d95f075936643c7213b0ce729df0c7bcdd460f7f1e469", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "7726e5c5eefa8c177ef8989e8a3dc442153790846fd8b74dab5c73822e10d0d1", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a170ba0d9621f2e36038c2ab9bcbed38dbc28481c1fb7a990ee72e1b3c276f1f", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "fbda8983c8ae77a3e511712f1c9915ac46c9697f4414302a085553cbac52dfbc", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "fc0109ae21e364fc9b225ca78f81ad57e578a5fc2d167b60ab775264c8bb5f90", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "83065a421ba0c0298873447bcc3ea3c5dd4510798a9d88602f8111c2adead0a6", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "83065a421ba0c0298873447bcc3ea3c5dd4510798a9d88602f8111c2adead0a6", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "cd9a89c068745a0348916231c346dbc76dd39d2398982296dd173019d5cdba3e", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "801a01b0b157c723509efbac2a20fa278a5ab03c4c9e6f1880e356e1a8743b31", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "cecee31665d7ba970be6819bee3b3999e8e19bbfd4c41005ff83c21cc0521653", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e94f1d596b813b2147900827c507660db26dacf30e2b5a6c7ea4b8a5289f6500", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c860508b80c61b4c7fee0688ce64322b376b7f49a12c413d775d70804ccf48be", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "e8fd3a645f497a481e6350342503a16d60a737d4a779ff6399306ca6fe083669", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f068b7b25d768f361fc69c8141e1d8ef99033552e40986bf49814e85df2324d3", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "564cb2dfb4e4f3e036a65c3fa330d2b432f9d80a352b4811485e704bf84b72b0", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "e9a08793f129a03539e4783bad1ab10b43dec63f2fe9a66bf54b231c2d4b15ff", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "3d697582031cff5ec4ca4cedf0c77283a336276e735219b262ffc4059c7534ee", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "54a1be952e7a9fb9850da3b9e98b342a6de33f1cfe92667e0d552cab99ef4a3a", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "7d28ad758dabfa250a2a1ecf96fc2972c4de5d008235b413893fc27ba4fa22e3", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b4922986081bb4338ae19635dd50a885ff995203d7cc6e602b0d361a598ef7f8", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "02b7c1c261f1a74b6a19821024dd04fd8846a978a5ea87497c031226877eb54c", +"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "35f83cabfec81faba8f43de92005108622c103b736e67950dafb16734ec57fb4", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b7e7f205db33f0a831efdb8bbf6f227b432dae0ecee0967e0a32709be95ecee7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "c0e7216c1522b3e11c4331a040833985940989332651c58115d140c277be8a24", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "422ba422b37a66868e7d351b2a77b5c5e8382fc1ac06818424afa0753c5bc5e3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "d9fc6297b739ce6931c6b4008eafb882952b768070019899815771f9c0c34bf1", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3aee4d002a8f2924a6ce28da861050f54e6afba8644946c26e5ad986c60743e2", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "02c22ce34a90baad72099db31f96e8bca7b2af43b2e7787c565821850381a5dc", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "213be39d70ee440a85091d210ac40e43398897e4a663a6c3a8c0b2d5018aee42", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "60e6eb2f7d661f8b590e739ed1dc9ed32b253fd7e95748d85666655db861f312", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "e9b50a9aa56215c413e8cb3e46a07499be58d21ea0d96c8a87eac1bd28f49d1d", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5290080a9edef98d1162b91e74ae458e2c7393afea0fa68b94db5c6c20f4457b", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_grs.py::test_legacy": "7a775b657d3b508b96ea9045425a13ca57d2b46cee09cd6045ff117c0b83ed37", +"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "92a83c797d71f91b5f09a6a64d765e319ad3b2fe41336571f6a1d176aab8050d", +"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "4c5534668ad0ed09535098358718bc3cdc53cfb74a949c82bdc3b0f63a93cd4f", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "8b37503be86e35ec015fa304744f9e9713539069088b46aa9456f1a383cf3b87", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "84b906dab4468073d34fa0e3ab5e76943f7f448e64f7236326e3b67fae419278", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "9eeb75c199629d7f74891845f824f5add7893aab62b1d086a9bbe8ece4bf76f9", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f94450148dcb7de8ffb6074e9528f813f6de07a4732b4159d0b343ea4af46865", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "0c251f0d7733d746914058808ce762ca033e0c966ce1591f83c7044ac1e4115d", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "044d397646a5c5c46883b5a44d4d7cd1a5746ec0fbb1c6d1e3d6f9f3ab975e5f", +"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "689d3b44964b5a1856e56590e170eb6f60c6fa2a0b7a085034a418640fc91d08", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "3912ec9a2777928352a18848d07685c823f78f8f38a518339b8b87a0d1f9fdd8", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "eb237ff505bdd2fdc838c61b646890a2b7ab63f16988033f2251069e7e220ceb", +"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "d34191bc068b963da85bf023354920cf1086ab8a72da85e4c2650f1d134f4c42", +"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "bc9ff6912913ebd42f17fe8318adf438b3bb625c4a4105364ef3c3ff32726a3b", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "289238bbd18ccf34f933292a8444c78e1b591816d428a206f76c0311ab81b04b", +"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "fda506335f486d0b161d4c75d0c082f8de349ffbe83552b61e868ec9253b7b67", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "e7d9ef56a1c79eaa295fadf126ab024361f68069e60e4104ccfddc8a58684cb3", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c852694e684ba89c2de32a3e642376b8ff5165aac587d552525ed08cb3f350ba", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "479a0477cec3185b7086a7ba56b63101afc7579440ef49d348c7862338bdb331", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "b3f76205324f8edb2e56b070ce577b735096c8e3589a25866fb6e6c05b5ee945", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8cf01d50176362d503133ca799c276078de64b705e93006ea7382fb2a94c340d", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "37f4774342f07ba11c999911662513e9860fb42e8f0068ddda4c6d05652149dc", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "acb249c90afb9c04444f0be8d58e97a556c6f75c03fa8f000fe8a0beea449b8a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "a71671a4075a339aebd12d7a9149d42e33725b1d0104b102412924ff08b88ef4", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "f3bb815b19b5b2114c2793d43f43bd93b21d3d646f11741ff30bd66c9e2c0999", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e9e35c2274bb058c22cac63ee4b9d9e96fb7fcbd3cbfe3afaf53ce2951e195dc", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "571f80b0cfc899305aa756b71a92dda40422224b20dcec2c8fcf7f6bc885373d", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "32ef7f98ebfe2055b74ccbaf11bf1eaf349bd848dd2a0f3f0b1a832b7f555cad", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d134619e5b48c28314abddbd45867fc93f4ee4e27c8225f826f89b06ca516cf3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "b8d5ef33aceebc7673f63a68dbeaacd07ccb64c23a8f32bf95c152e6b2e718a8", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "2c8e2b17c50ed4fd221253a1bb18640a6079007856bbc762356245978f3bff92", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "c29a54de5acc33f7e79eccc3ee2420427acc25346a34136f268b204319112bf6", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "c634ada9b58b7cf85bb43c032c1ac7b4b340d65862106c80732b37626a4073d6", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "0fa28dd2a5cc4d16aaed14bb8e431056c1d62a63afb0c23300dfbcac896bed3c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "8a7ab126d1239b70690cb2d547dafdf6b9d6e14de4fb23f9add78dce1a80b7c3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "771dbbad31a22b120ea37e1ee847c4866603f79c2bad6e329da171ae51e0c8ab", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9ecc9f4640ee05956710c4156968f48274739d436a24232763e7e256caa8d497", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "d406678c161efc33dabb82ae433e5ac887e1c68eee0779d8db070522941acb82", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "c1ad95cd83016dc8b41753e93744fd79cac6a5ea59fdf0df04ad888714610c74", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "728660776f62f628e3bc48034dc19bc92560f7e1eb3b228e3e086e512240bd11", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "06c3732134ec930d8f1b50c5f4c21ac15106ae5adda319835c6d89d34e7aa09c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "f18f3f737c6610f5a6c1da1f96cad6050aed20b4c9db5745160675eefd08b924", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "82206cbfa43366c0562ab93109da5e5ef680b230e3ac3befbe4f2e5623c23118", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "bb9daa1fda9dd7b5329d15c43dd587dca5678433f551d96d38e919cc307e613c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "884923a572f62240cb5472321cff4b7bc66b168d7afe022beb64d2474631a5d7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "095604e9b8497113a4845d928ca72798f3adbf3d7a89b68b6de846dfba8298d0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4127933c0fd4d1708aa666dc912b17fb92576f83519e17f11fdefc7f85b8516b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "4715cc819eaab8b7d664111e4dae7b1cc5996d8b7b6f0cd34779f918ce0c7bf2", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "738639ae6342903bf0c2cd2f61e38b83aa2894784ac3b528ccb27348ab487da8", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "21cec4d5fd781ce071c423553367f6cd4a589a4ae3089a5a6508b682a9ca5237", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "4bea8f0e8dee67caac5ca0baf27014630d4bf3b27f6d1358a5466b984f1532b1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "86240c3869e881279e932f8cb0d9802da128c972ae6806a73f9efc4e1dd174ca", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "47ae6b1afd4f757506bd41c4af016a68889c2ee7763c0ac824884b532239c95b", +"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "ca403a7c018486e5bb253be67953a372677608c54c0b39facbf7ea3eba852bbf", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "2df967ba9a788011f8dc1f73dc8dd818027a10c245ec00d24958150ff9a55484", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "53f7cffed7f0140f04d33a4d7b0981a4e82eff6e9c6d671203edfb37fed54574", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "e9f3d5df4d1bd04be1a6f6ddbd761d31699316b1a19c3bfc92ad52a394a90287", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "e9f3d5df4d1bd04be1a6f6ddbd761d31699316b1a19c3bfc92ad52a394a90287", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "f4adb0934b1f3df13e2c649936319bda77cc5e9bd91fa167bee225c7af6265cf", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "05b3d84d111da58af6482f53d764e6931842c6f93b6e98ec9c0b0e30cc6df616", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "6720b09e96f003adafb45042c6f79d456891de8a0d238963870fef7aac61cbb9", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "b23e559e7612a09ef187d721b217acbbdd31593c8d32add8a05d25815a6a4d3d", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "67f67220227c6945b3d202693ecdfad497e03f4c14428db9a2881e4188aaa3ac", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "b6c475a7e2cf0149f78a803b15bd0bbc3a40704da9fd89f06802668b2719123e", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "b6c475a7e2cf0149f78a803b15bd0bbc3a40704da9fd89f06802668b2719123e", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "a7b84107f82a334ce4233c5d848314a42fcb8517d86ddc5dbbcd9083af66ed65", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6c65e6a24dd82d066574ffe9f6ca739d1afb8a34e1dd0735cd7e82248c115189", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "799646e7845719d4aad141f7875eb4e924c08743498d69adf91284359d5f8871", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "799646e7845719d4aad141f7875eb4e924c08743498d69adf91284359d5f8871", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "374321a97826ef612d94d191ac4d3530842b2026780fd53cba251a7cca64e34d", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "3d06e0814afd67a805d00d7b75a438cc5517a61a794c883b3b982c664a2b0299", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "57313215dcf9c3dac621ade2419b5e101a160a6165551f9aef75b3ecfb382aae", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "57313215dcf9c3dac621ade2419b5e101a160a6165551f9aef75b3ecfb382aae", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "3ab152ef1bd8cb7ffd91c26b8b8e22d371d6d04057aa832300af6bc6c762e192", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "28ff073d1c6b6e1ade0c569e86987578bbc8bb0f2a516d57c011964c2b6d8acc", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "bab75ef4bcfc8757a610befce5077796c5f07a4521c4da2caf3a3e688355fcd5", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "bab75ef4bcfc8757a610befce5077796c5f07a4521c4da2caf3a3e688355fcd5", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "005fce2151d5d00041216b8df4c7a1b7c44b3d1fea44e2c53d2ac93eded687ec", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "63b80d24787d21a3734ef875f9cbc506830b57511f6a41832988939a063a39f9", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "25715b14066b081975e3e82e47c0d73dbec6885d1672bbc7ad1b3bf68941d7e4", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "d8f8bc5393264b0d717f9a760cb8ba8cbdda82aea0d077b30ce1070094a99466", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "227985471ce8341a82962a2a634c3786a5f7feb18addc95f92393f4c60c1beba", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "ab00467d9e4fdc9c3e63afc53926072a50ce89e9c140c26f636b65a6e205ce72", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "ab00467d9e4fdc9c3e63afc53926072a50ce89e9c140c26f636b65a6e205ce72", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "e5cc85d2e4803c96aeefae36b4638f02e2c0f674d0a038fb8fe75832b5eb8d43", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "33bf48ac4364c7557daa97a5c13e1208604f85bbd45077d3b9364fde921b1f47", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "283acfdd4526d7775c15c6de32b69f5de0b32611ea7db8cf910a32c25c931b57", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "283acfdd4526d7775c15c6de32b69f5de0b32611ea7db8cf910a32c25c931b57", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "cfff484653d935cb3e294a5ea168ae1174194c4cce408100c96156d8c26445df", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "757ebd325ab076d705f7ac805f03f8cdc964fd1b3b6d3e6f30d30a4007e77900", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "8c0eaf50ecc37645397cb4bf74418e12cbd6a1fac9cd187cdfe32077bc4a375a", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "8c0eaf50ecc37645397cb4bf74418e12cbd6a1fac9cd187cdfe32077bc4a375a", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "815ff0f02676e74d04e527de234a7739d58d04d455ac9978614d698022ad3979", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "28fa7d38bc1252c346b57361aad936f399fbf73555d25b64987b019f55129523", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "341394d80b5d0d6b9d65f3bebf184ef81ada6fc6af3d2bfe50445dc4e421cc52", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "29fa0814bcca57c8df1d3475cf7df720a739ab54fd41343ac61ed645d3216513", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bb613b0198d0cd8a1823db142019b79b9b6a0d6a6d2f1ca7023c4fa4b64d5684", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "3ab717646032afcce058e08d9fbde406c3101df7e309334a648761f925d3560f", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6a56d56bbbfab1f910b49fda5059ed4ec84815687a7dc9b0de1b2586cb1211ce", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "35c95744c026a93759f795953851beff19cbab1883423d2535db610fe91de8d4", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "cba6c516d1699aa0134a0a05e514681295870cfd56a5f806d1cebff0a232d643", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "969b3c76206be865afeb09fd7b0d25d08f0a026061b1717988b9c2b65f4c517c", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "62f927a78bcb0b89e65ded4e2d349143e687f3a947a5827e936dcbefa337a8ae", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "8ac53a90eafa8b8d392cf36ab42c797577928258c9205fd1847a1fff64d2be2b", +"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", +"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "a8e77f34b212e39694998113d64e581e54cf9f82b4c3ecd04ab486410a9250c4", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "59533c327ecb4428d8074dffdecb2355f26f64ff95884075367b8719d7706d55", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx.py::test_information": "b19adda03b9b17ac6ff56f5dd49ef3341d052c44eaac7bdac78628c48ae65bba", +"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "7eb48804d24f33d227091cf2c80ab206ee745270541b4be4694dfdf551a5fb5c", +"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "876a09389f454e30177a588e8da436b511a2cfab75c1a2177098655233e66313", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "635c164fa797b98cea1e8f4bae0f60705514509eae0f6f5451db1d35dc857783", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7ae7a6ffb811507147816df0f30ea96d46c50250b956004387c332e78f6ccb95", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "587e6cd9d098a905a24d59311e99136c307c5816c50df853098e9286a2196082", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "7ae7a6ffb811507147816df0f30ea96d46c50250b956004387c332e78f6ccb95", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "587e6cd9d098a905a24d59311e99136c307c5816c50df853098e9286a2196082", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "0fbdcd70ef86c04b09b39668a74efdb449dd862dae8abc9fdf353f819caa094b", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "16e10b48e65866c55a39d6877b96e2e65e008bf1c7b0064760f16b4a29a5347e", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "85da4f6904441ce72544de8e807740acb1426a4db2a247f8decec663bb2809dc", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "4bf6755887cb9f10804c32139feca29e03c249f3adfd2a469e9ab7e50c382a4e", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "32f8eddadae838f44739a5e17880a3fc671251381555903fc3acb509a5809b38", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "7b57fed73612c79fcd38564f682ef4f76fa292bb8db7eec2e6752f936f8a9cc7", +"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "d343e69eeef83e376ca490e42fdfb4420c79aea2b5c1cfc829bda377c9078b41", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "3a738301575d30a7346dce3cd4e12c88629b799d8bbb5e884216de06246b99aa", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "57344a67deffbb964ac559afaef27ecb91ab1640ced28a5172fac4a53358a22d", +"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "47ff09483997b925147292538e3ccec7a1a20151240693787d24439da721883d", +"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "b86c10d8dfb35f388719daeafb9607798d5630fbfa914a62a3db93e6a84a0d0a", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "07d4965f087b356e51e3ca0e179fa37890ff18ae481223bc04e92ddd5e52f341", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "2fd4234cdae39b1eea7cacfe4d3f2c443a476832450370cbfd127b2861f6f3ec", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "8f0ce9b898bbc97b311e0d649eb00a733f281a44c77a721d0249101c1086d459", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", +"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "a466a373b99d9f7757a30a697892c1754319e4e8d759577e5475f1c011da5a9e", +"T3T1_en_bitcoin-test_signtx.py::test_two_two": "6ae4e682c8336eb83472a6b087dbba62048ed3611bd6fafce6e295640c79b44a", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "d343e69eeef83e376ca490e42fdfb4420c79aea2b5c1cfc829bda377c9078b41", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "bb2b97a44dc5fd74700da267758419e16e7e32304c4de38876b8b6d29d489caf", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "0e60af72eb1134c99d74401a03007f29715b6fd5f3e9d781ab1a078e1c30b379", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "862b503d8145193874a3b53d779ac894568e0b31a5004af4b5669d3d5df148cf", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "d343e69eeef83e376ca490e42fdfb4420c79aea2b5c1cfc829bda377c9078b41", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "833779ecfdc74d5b6e6f07a9375e441afbbd4eea0e049aec7760ebcd22e22c0e", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "3a80d3159c8c2e2100337fe6d29d477106f9a9957da2b7599674bd344f4948ad", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "6721e9680e9955912cf5b144575fe3350ed5b97955d40e24c8a59ca354521446", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "70e27c184815ca1ff052219d449a9bb7efcb622b93a2d48057728567d0fab6fb", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "833779ecfdc74d5b6e6f07a9375e441afbbd4eea0e049aec7760ebcd22e22c0e", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fda1d98847e0ef3cc65ba1bbd36ec42d1eccfc78f29ac8f1ba86b2914dee514b", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "51891acb0d758f8155e076b1fc684e50e2ea12d5e4b69c69b35633dcd3f08526", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "d8b7afd929e3d32b5db5ee5abd6aba62a47f798ea61700f37db5802f25a04b5f", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "06fc5d9b9ea23273c45e5fc7c58532376dcb9e69609518e82b822dafb790158b", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "3c653fa366db7f01eccc0342f1476d0c81eda4b56de9704d41eac36ff8409b5b", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "e782150f0d818b385889c163a8b01d872afc64b6eb1ec6a60deddd27a565d6a8", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "6e8f277d3943a00630d7befc064b854157786b5e6848373b1b2cc153cef51cf1", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "a97b36b95d0d5c6e14183643343e7ec24f3cf4e3c06cda16e0092994b85115d6", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "a83be479bb8559e01caef964aa7fad07e7d26ff581f3c02766f545caa01eb517", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "a22a653215f4b46b9fa0a6ca9014e05d877aefcb27162c40d47f4db62b4c0965", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bc1b09999633d061d0a4b8614eef06c6b73517cfa59719224ca2509882ec70e0", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "8e9fe0cc514d3088e33eaef3bf87c0dc0f5cb61c339ac350cabacbbeed8a2fb1", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "09064758623d5372712046fce8deb4bd1ad7e7de6f4552dc210c6bed69a4a022", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "f873be74d9aacdb92cb3abb4a018adc35f959d6bd30a7606a1113af216494e6b", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "09064758623d5372712046fce8deb4bd1ad7e7de6f4552dc210c6bed69a4a022", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "f873be74d9aacdb92cb3abb4a018adc35f959d6bd30a7606a1113af216494e6b", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "33f8f5ecc180b41527d39f51773a17a477413307f91bac719f30676db12e9a9b", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "be1cb44d0b47ac2148dd7eeba3af973119e642727ffa400a6c08ade0cc7ed2db", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d5ec750103d67e84ca173784c576ea0156e3c374e85d19dd2065f7aea913f676", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "bf2300c6e702c9fd66df7872d222c26a32c277718486eef768093280360da6ee", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "4f04edac1d1dc25f3aa8a08abfd62e073bc4cdc7f8f8f56c3d07d50a72737ac3", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "77ef3b8e525a825ea70699c978b0a8b70b3e368e5fe4390f34c67031763f3029", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "7f65ed233f388cee20792eab49a04dd9c64a28a81de696fc3300f4202da4d698", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d820e595f31689581c2f770c204688dfb2a688e6d6936e720f1dc84bf8e6a137", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "ed05b9b4381d7fd56787c358893094736c86993b1c94e449c2e6594c62729a4a", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "ed05b9b4381d7fd56787c358893094736c86993b1c94e449c2e6594c62729a4a", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "ed05b9b4381d7fd56787c358893094736c86993b1c94e449c2e6594c62729a4a", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ed05b9b4381d7fd56787c358893094736c86993b1c94e449c2e6594c62729a4a", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "6f91b10e16ea2c08b3289804275ba846d7db5aa007aa7264d71cb9f46d046764", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "6f91b10e16ea2c08b3289804275ba846d7db5aa007aa7264d71cb9f46d046764", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "6f91b10e16ea2c08b3289804275ba846d7db5aa007aa7264d71cb9f46d046764", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6f91b10e16ea2c08b3289804275ba846d7db5aa007aa7264d71cb9f46d046764", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "eddfd5d4f22a92a2503e0b2833fd26de6953d80969b544060a114be78d9bf2be", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6d8f89e11eca81d8e687d176c7b14ea3764553154022f2bb6f039ae69a5256c7", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "8285a585b01ff0054bd344aed9c3e9055edacd5972e4e4cd60b9933615bc1c2f", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "8285a585b01ff0054bd344aed9c3e9055edacd5972e4e4cd60b9933615bc1c2f", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a62ac27c0342a74192837966c77e38ba4d82f377c0e4ce8074b3087ce02d8756", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "0596e91cff20aa6da154e8e5753882a4b58e165e7e41fb583f4d24ee067f551f", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "f22ff77ee65aba671cb7a2b1a39fb92975296f9e691c354a0d69a4e488c1fe41", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a62ac27c0342a74192837966c77e38ba4d82f377c0e4ce8074b3087ce02d8756", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "83dbacf2f3b231319637f1ff5d4116579dc84ab9e9581d7739cd0676bbb77643", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "4e1ca98fa61533e58fe8cdfcf3705361141d3bcbee1b17a259390859b8fa813b", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "4e1ca98fa61533e58fe8cdfcf3705361141d3bcbee1b17a259390859b8fa813b", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "4e1ca98fa61533e58fe8cdfcf3705361141d3bcbee1b17a259390859b8fa813b", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "f3d804182a9fefb60da132a7ae5e5789cb6e6fe01c07a817d3b8dd71fbcbacdf", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "4e1ca98fa61533e58fe8cdfcf3705361141d3bcbee1b17a259390859b8fa813b", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "2a022df40f31a0ce2905aba645653fb91d2f87b9e6c3663d77c3d27de96cca8b", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "e22f890d7458b9c741ce8ecd999a207a1659c770fd77a4e4889d344917ea55fa", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "fd97142f750f95de7e064c2688891d538aca03fe6a393857cfb19dd7a6794cbb", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "a63c4ad2efe9947d758ed16f395f73499b03b1d358396fdb201be35093ee39b8", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "056501811bc3d1c029a2a78bad2d079a70b41aad72261f9cd9496bfaf9e629ef", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "a09b50d680f5d1fc8bd6fc776b8f5b4ed89273d41d868eff5421f1a135eb372d", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "f1d30aa397604008c55b25477d833d822c921dbfa32a3166239d0262f493f0ab", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "972fb121f7655022e618fbefb28e98f06a990df69d09bd1605dda5e3ae48c0ec", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "243e4d157dbb3ca2568f04683d3a96984a1a336c452e29e273282983be662449", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "f4504f3edb63db367128cfdfe9aadacb3ce22323e635a865c04178db4be302ad", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "25d7ec802a3553039090698c1de2818d5afe21127b708b2597d616cccefc69d0", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0c7200e280965716bc8dc2c4b193053a4730d95c4b4826e47709b71c273d82d3", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "9d60709ca110bed06b8b0458a7f7c6fc34d722ae1e84b2dd780e36e9a2082b96", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "4a4cd6483abfcc3cdd4629617b9a76c186074294182f44cd032edcbb3a96fd89", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "833779ecfdc74d5b6e6f07a9375e441afbbd4eea0e049aec7760ebcd22e22c0e", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "9cb23b95027c1c8ffc309b633767ab16568e5c7c40b8cbc76b1e5c9e3b86ecf0", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "06fd10526793e0c82fa84729c4086f1e24b5f5680295137dff606ca138678263", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "123967d183181dcc659e61d7fd21c44d6b2eb667ebdcc0466832fdd0944b1da0", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "0cb7859458f709f0f8ac5e8631e5b1b86d5767a2b49374ad385553a605840387", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ed9fa5d8cd8da37c3e31bef713fa3a79fd4d202fdfacaf586e81a6bbdf34afa4", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "974cbb51487b077b9a40d7041b6ccd47b8d88332c82779c133a36b71dbd74a18", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "53511d2b2ccfa47ccc114861cc6c62a8cbd9aa5a1cda65d17488fed9d03c478f", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ca34314cd4ed59516fe95514ca020017739374b19d315c622e901b2a173d4baf", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2091037ff45d876fc3f2c47cbaf4fe67882fb97cb1b07afafbd6e7d7db116278", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "8774222aa7ffaca6d767fa0d323c39ffbf53cdd113bdaa68070b2b0a01375fc2", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "63976f9d8e033d1d72c2a5567f5de2828aadecaa561bca7a797330e29743d773", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "c87d4f66667ee698d8fc1a2f25642e4efd71a8f4a1f6176ce7a9e6067150384a", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "49b82a5d4384741da8cc06d844adfe64c4e9710dc805cfa50f7a31dcfcfdf3b9", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "66cad602f6a8aa960fe0a7c040baaaf2a9be29a8b35663b24e4c6de6ee6fa33b", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "3fe7a318c6c5f6b729151274fc045ef7613bb8a788b31407f4bd1f89f981315d", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "2e61cd8165e9367a2235fc4e1c0699ddf8e928719efd7777069ee5f94c949a2a", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "adfc1326cc4b4df2f316932ec847b261d444f967d959c08e4ba4ef07cac3c2ee", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "8b0d1ac04237051807cc3741007ed7f81a8a6964ff1d7d12ce9da07dd1c51ef8", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "511b3abdc5312161852b65b919d2c533f67cb6f7833f5604e635886bbd640f32", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "4561c7a72fe2512d6db042348f91e41f17df8cf60f41ec530684bf5c7bcd1ef9", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "0a771818ba81808bcf0691ab1e7e60493f460141b4eb3056cd797f9636be66d9", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "1f3ffb6945ea54f4abff98e2531dfb03f17cce71b4278c75859d1df65d52e345", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "c0d9b5df36bd7b52e9cbb369736023c6b9ffd3158d6138ac7f4640d68b6e2697", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "457e4a8083428bcd5085900c2f571067cc75e968ceeddca98ecc44622a2723b0", +"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "e516a868683d108e916edee64ae6b6de68cb3bfc6a018aade8483202f7b7c26a", +"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5a87239937a388a1a3ba4e371142e0e488e8270d13b3f4ffde9b3970b9575767", +"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "7464fc1bb6d19d9a3670ff58b04490684f1163ad03426f578654f3817f1554fb", +"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "f211de77880be8a23db9fc2f72608187d8208e71153d4c40e9a1c479df3ab952", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "82d7e0728d25c53370d6c9e9d41f89ce97da7a6a08e4fc474dc45d9541c75b1d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "6798e0952f28c3ccdc2a82ac6cd6a03acb7cd5a5ea0e07ddc7b4c6f71ef9c920", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "7243606f3f3caba700998845340dc10586a4ddea0bf66521e7026ec2ff9387b9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "95f3e5e60032bcf86efd9010633d17713fc4c6bb98a47eac6461850603bb8965", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "49c75f1dc6ed1e6a563935e6e0ef69c568c82f562a33c9e73eef5dd499d9258e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c0518455ba79331ffeaffb9cc5e70dbb1c4b26dbb446bfa24ff53ae29475e8c1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "9c59585e277f3a4c5733f644ec489ef2d399b1c0ddcd8e165ffb60be93aa8bdc", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "dec6e16405f8c05f422002dad60a0a038b30f5db7d0b8bb20018569ca6b6e7a2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "c69684263f4f5dbb5b1592c2ba90fc9396e670f8bbe9386efd77579fd6dab404", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "68af5ac099f34812be8781e79c98e0bf0b9f64c3d274ceb7ba4b37999d06fcba", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "2f1f671ebb07299c01c5507d9b46ac5838141b0d5ef1057a32541a9e0833b649", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "5c9a4b2d6cfac2d2e34ee04d22151daffbd1a666425d6d2f5bd9a2992548b071", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "4a7b12ca6595edf43822b78d678b0d637dbb93e0718432cbb40379aab018c45e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "eeb47d56226d4706075f5dd739ac7411e39f4f3ff6ab76dd663c054da2197e87", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "cd7ea963b2b30576e8a36044eeeb47dd49b314a56f91c256f37c9646d9fb04a1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "efe30af4d8c8db38ade7899e46360b429cffe8d3fa02570632e9561ba791c089", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3b088bf38674dab1efa15daca50c1979a083e2d2b12bbbfcad28526b545b1040", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "3cefd0982e57e8f256d212148ebf656da89944796b6b0a879af0993d757e3964", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "1be6b556e7d091d286860c97390ba47e35368596eb1a69765cee574213ed2c27", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ae128c998e195a6efd7d0e57dbab83cb03922091f8f63ac6d50a7f5af730ff03", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "7ad0bf0fb461eb211dd992588a559fa674246bfd707fd3571349e3c60f145e6f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "563f5f867b22e751cfef394239d788a634709a1ba2a7bb6256709ba276b6697f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "a45e0089b9b46dc4e2e801157236f6a3dc75741e90d5cb4d6502bc1461bc72c7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "9bcc4b819bf4572e1d4f3808c04018dc53ddee7d5e10af169e92886c6772c7d1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "0f5bef655069f5981d7105f852900c72869318d1751308edbab7be1aae90ca82", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "cb6feb61cdc2b880c07c2a46413122faf2e71951590a3e463ad3ad3c42a4bd05", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5bb555550ca12517de4934b268b800dc1b64c562467bfd3d6f9530550b186f3e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "045b3bb5952fec4ce2fd084340329c722672f27fab0a32cd86ee7e07fb3335f6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "d2b0bb098aacce718b2a88fad47e9fb38d3d7f88f30b11ac32d098e63b20a230", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3b533d5495c8aa72d91a4fcd973eb40f71f4b1d0c476a5c0a586c31667a06e63", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "f5842aa754c6880682a162e23fc9445b40710b3f98ab91fd8b3019b4c18f2e65", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0782d6964ef480cf532e85f5e128cb7e0fe43161bb1106653ba1e60615dfa919", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "f26580abb55e3043472888590a70293d109ce3d737ce885448d37deb6843adb2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "21856333efe7875b726236050c9f326fe15f41f8079300ba3003530481be61c1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "244886dc665abf5eae2a45e47e346dfbd1d101b809c69840a2700d6dea7c59b8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a50d03ae89dc363d2499a3391271c2b0f8a85b04020065a15845af71106a3877", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "0e281d0b3182f88ea1191c7af6cc3d3caafd6df597be24cbc60881e595061c9f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "f71883b2b2b773d7dd61a9343b623469b120fb9891bca9e64d972e46b29fac30", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f2cd1166a0387e85fe0159b31b62da32c766bb8c33def1f99ca7ebe0910195bf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2ccb4903eefb11b9dd625da83d20bde4bbfa06459c5ee654a9ad339d98b2c6b4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "0a0fe1e2a52d78644d2be790fdb4b0f96c136f4690ebf7567dcb5593cc7e7b08", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "d8991ef31bdaea095859fea209bf724d1f0d40c75a463dfc5df2804fa5a7f80e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "528d8158b70956ab39aeece199abd5fd4cb7cdb6a715baa6f793f68d70cc792d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "b88953a0efcbe76c8bf50f1c2a342a9823495f0e5bd86f647b6c335344b151b9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "9d29b0acad109f8b7ac580f079d25f64be097bd3d52d92ab8fac9bd8c5e207c4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "591a790b5c0a6b8505994bba9c28a2e89cab90b11240a6df0a4948d21ccc0c79", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "f8551c7f2a8c0e24fe4824065bea5190a50d04374b24425d83ec865950204622", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "1e7719ed83d2958c8f629e6fdfcac2b2ecab14007aa347fded0fc3f8c96102b2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5785e8556202b795258b01aca7098114bc9b386c738f7ab860e8b828ac1b5190", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "fd47aafbcdb3f6b523e8deedb518dfa2586aeceb41dbd86176d3be5b0dd2f32c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "744f0cfd1fa1e13694954f5c6aac09ebe5cb5acf4e963d0e2a019c05ccde1dde", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "f076a2e8aa8ea10fe1c7850aa4e03d282134fd209614dcb8a8e4bbdc62944cef", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "aed42ca5783efa71c6086201241d97c8af1c02a43c67c874cfb329f5a6681538", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "2503b5f47b062dcc3fcb24637ddd1ed65ea4eac42f82a4cc84066273eff3b200", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "53e66e83ceb306a728ec825413dd9c27ca5a3bbe642ccf7b634c8a4f01064e22", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "f2cc20c85e9f31cae0f5218ff153221ef28431ab1697dac8c6978afa1514bab9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "36ddf6a564385ca62d5eeac484311fea2fd6cc0f30dbbda64acb592a6a898562", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "8715a39369fd7fdce7ddc64af99576433385b8549e3d142a9bbb81267385f7f8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "fea9e7b08cd4361167876cab4253c4b28d37a8ca0fca4b097869e895fb262f21", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "645d8278823821e9aca94387e30e9e36cac486c6229bda35acb12f0fb60004c3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9e110397badb8df6e6215b2fa88912293e18d46f356bd1abb78a729662e863a8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4c1cb7e418e1e4917e9ca3c36456bc63ca44b4eaaf26b508ff0d6cbf9d393573", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "4e136ac060cc68cd666cb1006be94e315adece1eeffe95b3c2c683fc4e0d26c8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "754d1ad0a2c6e51456f3b8cd30bcd480209dbe0482de8f1a551418726b58c675", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "1f698437c4bcdc1e3a61cd13dd7374786600c23de5933831c036e1c49ab789a9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2c9db21c8d514f84adb2e8e57ba2352b29e689f65492ccf4907ebb3ef4830e8c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "7b6466934653e17af19b298dc663b243925de80c3a885ff0b063839619465a9f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "aef71cf5066907ba4a9048848fefb7f269430ff5853e1899692cff4c86211a9e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "cf21e885c6ad4ec96d689da2d765ffdb5445af6b84271ecfcc6533bf5a40477f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "750d46865494e68cb5737f3e7825be64d0f38a57be5d37d817b662e6786c0d32", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "e2a891f703c767099f96bc28cadd696804d922c69b393a80ccf86525118156da", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "926ba65a27d4513a7a046c20dfa3de360321baefb94831adddc9c2e9e88e9a95", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d71726b219f78db0a56d863329b8e3315a174178fce5da2654469c19508ab407", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "7deccf7111ab3d621c0c0ef2c21f58f82d0da598019b5e4ef0428e70d14aba8a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "0ce30887ba8c8f7b9e58354beb37b034a4aad23f4b55b8521abb0086654baafc", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e7a151eb15fcd89d0e654d3e3ea9e73ec558e90bb405a69285e1199a90bc73a3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "cd7a950b59b1d083c2276c92ece1a37ebea95f3bbeed2dece3204fc124ea0272", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "2532ce5bc20a408702e50bc06cb2683ef1dc2161f44ec1e844454d2e2e473cd9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a24f36853d7f8a6d69f62ce8ce584e9459b75331ec0b688a74de6b4e2e626455", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a99a76833b0310342db62f278cd3c7ed134c579bb7f284f77cadb66d645edfeb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "5e92b8a5f67e491c3d611b6f1857e177300ad813ec9284529885fcbf26cd62c6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bba6b5160204921e6c002343a24bf7eb3f8dc1754f3bf0666010cff6f864c8fc", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "cd1b588bf0511fb661755fc55a6e6701500db89a30efeefba499ccd84d7ea30d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2616b35c1d9404906f01cd068ff6e69cd1e6359162a1e98aa09e0ef2ad6e6327", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "1e15d837f0279fb9ca53f1c9ee8ab2dd05b9460b37f190e6d23334b42bdbcee0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "f2d2a5673ec1aa20b0f7f8197454f86534a690338825f7d4ae1921df189f015a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "0b616160d357188340704483d772e3805e390bbebb17a9a4d81fc9fbbf0fd5a4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "f4fad9852a2febdd8ba606dbd9112f08d2dec1b3171ba6e4f7bac0f126ab291c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "3578e8191beac6589500ddbbbedc7bd7c1de9bfc074921a62f84a6e7ff0ee055", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "619e6816513e345bd283005429ce4b447c9af3e66a35c73f106992bf5fa618ce", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "5fdb4d77c39cdd91bffadd070271483fcb3add02e92774e1a2dbac4a039bd8b3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "e028c2509d7f7fc24d20cd55d81397f1b6012feb76c0d447d3448706066a6574", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "340d7c546e89c3e670f7328d8223ca4dda4a0c5d17c6145061b43589f7845c4b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "409208bf0cad063c6b965b3a6dd628de701f6258b8e247b6f43b7e7f2652bf26", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "96cf039573ba7f5b06a29b5f41abb428fab4cd0136c3b50f1c33e7af92586ac3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d5ca25b513cc3f0294b7207fea43ec844c832073378246102785724da0a99f51", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fb730292415709cc2170fad988b544b34e5c9d786ace7540cea1121ff2e0ac0a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "9c917141766139534157fd640bbd76cdc393c317db52947c17a0fff535388812", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "bb6af9acabb8d5717c4323d9eb21f6b9a768863ee8e51ed72bbe169439b105fe", +"T3T1_en_cardano-test_derivations.py::test_bad_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "8fa38f0a49522a439a0e0b94f6d81bee0563d05fa5700b3340f829e3ad7e1f7a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "ad17ac1d243d7842a86c34c869884158a3cf156c136eb540e2775ce74beafd0a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "b42514b27ed1e4e8aa6a841a6633d55a34667406eb21f814950f4e0696cccbaf", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "f5aaac8600f598cb7bf0303ac99d4b82967edd1baeb0cc6605d5fd4f36a45ef2", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "9f89e29c56a14a9cdc22a89b259994f39415cc8e56c35d8aed7ccf192e4ee6b2", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4ebcdfe5d470957bef448a4f260a0dde4b2958abb1970380361600eed3d461fc", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "2557ec42a950d717ecd63b26b30117155638c333ec4c02e145cf1d2c981b14d2", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "f594371ffbdad0e1c5571c7019c4244f892994667fae6de2ca04a85899bfe263", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "bed5719bd4d2ef7d465bc212e688ca392855f59ae7d2d2f3cea9e68b59ca5629", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "5dae732dde3179e5861dd212d6d8170f9fe85bea0582773ffda7415f08a6fdee", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "fb35c8347b97b3bb81419f9346d38bc78c920f864475d5862b990f86af3691ac", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "b5d6defe62039cd765d85526ae017a2f02d76b2fb57634f242225e9bb3424bec", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "47c6b1a288c53e469aef9d6420008bb0e0a94eff1989a0a21c9e142aa52ee581", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7325c1252cf85e69c4904fe6e6ee762a9d6afb301743eb2ef0a372f56c78e759", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "be39b589717c3d373720caa6972c9cffade698acb5f6ab6b89c6432e236ec0bc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b663cc5a78a75347b78b8f39d0baee9b61912878fa777d6c2ffb559e7dd8f85e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "1ddb74df14f71d31c1ef593ae0b50119decda05c20d58b33cebf43d783f095cd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "dfc977de0e28249da990eb3806b3edfdeccb53808149966a6bd761ea2d597a17", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "581be5d9bd1a74370080b6cbc0c32c2912ff15691c3efe79f303a76c03e60b98", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "7d531841c632837bec4367912f7c7809a11ba32dc472be41bd56315a6eebf10c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "ab425b3b864924e78b3c977ef1db0a5b65d90b3e0ac88883beaab0bd64b3ff50", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "764fb53d6293d29f5e8b29c8fd74118bb0068a99005b09339ae40409872a50b2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "6ea5479d2da00a9b23a94b304838ab949451bf4a40241e64e32d0c54c12eb497", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9aeeb3fb760344abe0cced0047ee0a3bf8722a0d9493b5adc2341623fc34eaad", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6b55e08561c2300910cb6ef6f7f5171dced369e80e36874f746b4789309eb93c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6b55e08561c2300910cb6ef6f7f5171dced369e80e36874f746b4789309eb93c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "ec73b4687910d52c4f7100544d8097f44bd55a1f0342002814229a9382560162", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "676ffc6940c8000a57040a986ae67e620815972874093aaf3a3d163adfc0c333", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "8240ad115cce717faffea9d409af7ed4303999a6444af8fd170364b561cdac0f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c6819427286ed696aa02f905d52cf08baa9a969c06502cc69e5b450f80db5905", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "5f4db8351ac25ff2d6848f84e0582816e4e3c8da0bef5c9814174f90da7198b1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "5a58f7ab0742838d4229be3e837d9d5a44f4b320b5bddde4fbee42566713603b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "900dd2c12213a8ef9454bf84c6efa168093646ff7b9aeb4cb5d66e7946feadda", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "d0268877940e5df9270f229b360f0535d95c10f409ea4a7b5301d27e6248f885", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "c8510e87117dde463ee69ea1d14f3f2e7e0a4a63e712308e16b1485964f2751e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "5f4db8351ac25ff2d6848f84e0582816e4e3c8da0bef5c9814174f90da7198b1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "5a58f7ab0742838d4229be3e837d9d5a44f4b320b5bddde4fbee42566713603b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "c9c93f1432c785d9a4767a859b49870f08f8378b5928b239020e77acaa200b69", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "89667172b1e974148e0e4f75e008c1b5509b0ca847ca5719428c9d18aecb0386", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "976ce180d7019b09ac2f2351c0b6b0aebaa2f7a52ba2626e3af71915cf6ab7c1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "41fac639accb926108a35ac2a2379658be9442f4cb57a16fc900ad4281aa3b1a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "3d2ddf5000a5f82efc4962c7a8ab4661838933aa10fefa75f452abeda5788e40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "68983cb318a7d3380997632081fa53c88fbf1f4769c9eb985070b993bd6f4ddf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "d3168d1afed925a3d1037c3feae06ae5983a0ddea344e91ddf5e4da24d550be9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "ac5fa91040a4603d5d870f83b2c9495fc29ac0d17b02dc6d84ba2acc36d71b11", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "979d1267f4ade4cadda60aff42ddad5ed5ed3c5e5445aa96c09a4045424cf11c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "49acf3b93306722f9d7e93ff20df3a56226b2e6c8b46b47c212da4c9b1d3fe69", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "f4c9a3b0ce739698208edba141a67ff1a3fffb9428ee678c103de3540dd82e79", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "dd9667b9542bd779f0fa97b16ce84514db5e236830f10f5d852cbed1fb5e2715", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "87164cb7a437e37eab2e74516688d61b1a485bf23e208db048a4d9954fa53b13", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "7e74afec9df314f80473e1a4fb16e4bad3ca5c32b862d2e1eab71a7b305a1e51", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "829b42c3e8fdf6720e4627487080c5aaeb6ddc4389d381f2b6e3db9ef8f4da6b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c862e55ff3737de5e223ba18c144ffeebc3463228accce3f72e66d17544e39ec", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "41957967f4fc1022946f615496e9907a854e4c924e6a983a9ab863af4da5634b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "989231f796eec13255c76f8c7b5e043cecf022e4d16b82b248a8e4894a1c723c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7836cfead8fc8af8c116e338299225c1c1062a57a447993e8e01012630901109", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "cb7dee4fb4293a298c9b03e0dbf88957c052b57aafaf9536baa4dc76722035ca", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "372ac3152cfdcf4a7c105e87a7ddd65ba3a70ba511488ba8b27be59074784b64", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "9e9baa0691e259477bcd499fd8cf404aca82b53bc0f17cc8cdf9c9d3939ebb52", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "cbb983965dc570c693a1c2c35858cba0ae595034065da80d1c935b5b800a1cd9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "30bc166f6517e2e1515b74b8c6ff4becc19ca7415b43e8d2a1144a253c821491", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "5ffc59e504c7500df477b1589bf2cbbc4c77f14ad0f9b8c2f8db6e91534080e3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "a9bf70391c91efc4b69653a109ea5b81a923ffd24cdc4c0390c63f0a68622e20", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d5b6b40ecfef9bc596efe9acf29958271f0a258d7f2e306a932b655d07d61938", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "b59d2c8dd5f34a755aeceb1d772b35884d64838f7d8f532ae93c2258749f1311", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "94651c52ab09cf400c52473303c67d37db9ef8a1d0d7b9076c086e2f290660a1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "13a3f2af06721dc22fabc102dffe60c155794f02de4af3833c8045348dcebe4e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "d1fdc5aff63339e8cc22919e22976ea0a2a2f3c0f83c94e67b975c391b11dd8c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "1da8ba8e4e0e86a61a4fb6afa97f5514cc74d8fe9eee7691b0de2ef2c551b3c1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "6240664bc04b5eb039cb31db38cdb76777f673487d162dcde1467d278f8681cb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "ed7aec9829b002e7ca6cf2cf87c70e19d5bb54dc331a176c920903e8e7b517d4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "aae7f6da2415a122b67a0b9a558f0841f547f577f5db1ff9d0109492801d1e11", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "57ec0b3cb9ce1db248f12e86ff191d3cf646ccaf7d35644e1bd656d69e1518d0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "c48d3fb0b39c3833a37079b75fe9ee05c019fd94ee5a02c8068f5965fc318780", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "16e38ed59c7c3e8cd346dd8849e40b47d0ab7f1e3b9b2ccf2ea6170265fac6bf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "e1c1434d69ff562154abcdab3b98229cdd25306221f0458c0f880775046a0b92", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b76ebf62dd3353142cdece751233f39be9043bb48c10ff1fe7a768a3948baf39", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "79f622c7ce929f805d5d1ad8e5cdc1b3cd9049b51438446e40855d304a7e9ea6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "82211b29ac1e051e137312eba58971405a17549dd801763ad749cbecfd67d5d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "9810d982c680cd687dd7343fdd9d163e2184785d356cba8f65a778e85afe97fa", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "81de053ac9f81b9bfe20935d152b03600385d2127496c21bdf113877ab7dde0f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "a296461346c24ff105c0bef2c8e6dd66507e441cedc29be60a94c9ca3a817dac", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "9df41e9c380bf17bbea4464212909bb424eb1b25b9a3dacd144c7a3ac39efa2a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d74f0e92d22338ca580c50069818efc7e514ad14bb05a8a72ac4d420121e1520", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "69c7d90a23959182c00e5d316ddbd8ee61161348560286a1c1bd64e7dc0581fc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "2466d228807a5f630b6120dad9b352a11d60ca31b71f4ae97daac7fffbd963c2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "8899667d55f7978a30d49fef610ce6d8fb87368b8c0843b125b1dfaa89ab9238", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "281b4f43c14c9c1cf623b383ceae6f8500babd06998f31b10282b5a48d7b6041", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0aedaffde8159f67418746d4a3af1a72262a7b563ae64fc57577a8969d926c99", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0aedaffde8159f67418746d4a3af1a72262a7b563ae64fc57577a8969d926c99", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "2e495190685b5a15966b8cdc4e266332ec2f0b6c3aeaef4226ef50d6270670e5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "bfd979df7941ac83b27497c0fab381649c0c60317f0e5773e3029dfa93628a28", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "bfd979df7941ac83b27497c0fab381649c0c60317f0e5773e3029dfa93628a28", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "7293a2b19ec71b7a208c5634e4ef8b3136ae8045ce3139cd9c05b3b29cb9ae4e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "141c1f9b76264e67ecfc0f532f915581941228faea1cd407bb687d6c9034c716", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e6840f69e0ffe61f05177a9772eb7394b72dbd0bba62309eac739bedc425477c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "bb6cc278786b64012d67f8ad2c998aca5a98c1c07ee6e4995feb7e7893fca3fd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "99008a604d8213be39d127f738a8d1614b579e3b34feeb1eb478cf3c3d6cbdc5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "146fc25a58d60125f0500c3001d7b45dd0711a840b4118cedfc0b1cac64f040c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "a382a7396c7dc4d1b2cc6fc69dce184da2675b69bc40a2f2544f257727250520", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "0125655577217368d4497fbc17f8d09d76b4fa9c201b4bfa8ab01b179209c5f4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "cd931c2e29063832502f9dfb76b577c62e9afb8b833d1831e3bdd5c3c8826f41", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "7325c1252cf85e69c4904fe6e6ee762a9d6afb301743eb2ef0a372f56c78e759", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "7d531841c632837bec4367912f7c7809a11ba32dc472be41bd56315a6eebf10c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "2db8d7a1e42d01fcb8a08c388092984588e4807ab2c6aee9296b274a6a0c2001", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "83e8d508ed0655f6afcac5bbcd2071f6781e8773a96ec7d83b0c2f43cf4c6b73", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "83e8d508ed0655f6afcac5bbcd2071f6781e8773a96ec7d83b0c2f43cf4c6b73", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "a1eb6db63a566928616cb11a502c8a6073eb74f7ee0a8183ad3c8b1daed382b9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "9c9f8fed783476250090c2f2587a738bf6d762caf258469bd124ce07db8cb7c1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "b34666948bd576c1c090a9bcbe6c550a60aec1c28b0aed5026098de78e834d94", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "6cd042a102ebbfa4f5b37e5ad0bf3fa9a28b1c8be13a17a27df681a106bff372", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "e2a5ab7d056ee884a6be8d591d8d151c1159ae9c935900a041eddb8029c634cb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "07f94747e5ac3ab90773d5fa894da459055e30452e57eb0feb5ae161c1fc3dad", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "2f32ac06d6c10e37ca6c024d4b15a1b30db2fb7d6d142fc9976ae4600a0faeda", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "2f32ac06d6c10e37ca6c024d4b15a1b30db2fb7d6d142fc9976ae4600a0faeda", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "2f32ac06d6c10e37ca6c024d4b15a1b30db2fb7d6d142fc9976ae4600a0faeda", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "2f32ac06d6c10e37ca6c024d4b15a1b30db2fb7d6d142fc9976ae4600a0faeda", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "6cd042a102ebbfa4f5b37e5ad0bf3fa9a28b1c8be13a17a27df681a106bff372", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "46d793e198ed8e416c7685da6e3b05c3821e651e71174a9ec819b4e2e2ad31b1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "9f9e3b5f8f17b8e7bc456579d5d70c8c5940fb6ae74cdd8961f014e7ebb3ffcd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "792587e7fc13157f797cc7d04d9eaed409bf850912a044bb07844420a2cf4285", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "158f505fe204f3aee0f7937c45f25010259dc1741e4127ba16b3bd67e6428679", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "6ebd76b0a842fafeca26bdd3cd295fe6e67ce0c29f65251042cb1c97d62ca387", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "91231e9a3c5a05ece4006ff490dc9b164a8c596a5c3bb45aa8ff5fffc84118c7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "c4e86ecf378307fce151f7bc4930210f19ba658e7447ea5d7d363ea6fbff35b4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "f3b269583f379a7936b6a731d1db321edf5d122afdb9a8bc6acafe38c1b0a5c3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "e8f9c92487c2fc10efdfad3a27ce6e856ab3c8cf275932d7fab438f64b6fffec", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "96570af3f004fb1e7a16fd3fe25625b8cca70f887bf1ae2cdd524bc1aec30aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "ad44a16931d9879b6ef2c27cae340dc9a8497a125a929ccdda93a85f23811492", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "83e8d508ed0655f6afcac5bbcd2071f6781e8773a96ec7d83b0c2f43cf4c6b73", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4b470de9b8c3c3f32dee9f682cdb0f4a388c998f1804fc0af30cb6559e80136e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "e236fa5632fea31f04a0bfc3a17f15ce07f1dcb32c7d67195af48037ee4a56e3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "67a93c6c8a2afc63e2a85b7ab8c2036ed504114a453e460af4e49a6c856affec", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "84b9231082063bd2d01f341a02f11cd0530b0d54542e8076fb2c54761c7572fb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "d996d55c9c7a83d3e1d5feba0ac7b25aa3088d94501bde7e3308cece15f8c073", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", +"T3T1_en_ethereum-test_definitions.py::test_builtin": "db748d9ef4dc8910868c961d409b6e3da234e8425e6f17b6e23fd20b496d9d4b", +"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "92144c87befb083d0c466776b1796bbf85ffbf74f5d87d8eefdc1fa82a627f78", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "7daae0a73f578b588d7051e8da25b2121ddc971a550fb2a65a288f770ba23d07", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "5594f33aad9731a6575ed40bf8362b03d1a2d39411e88e2b11f7749eb11b9d80", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "4b512d783707893aee5e52e1709fbacf286e14aaa0ac85e7c4786d3952a00af2", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "2d3e0f7eeacf34df053401319a02b9f91da70f8c6a07ad933ea537dc83e11ce9", +"T3T1_en_ethereum-test_definitions.py::test_external_token": "f48184a187991499473244d4872ae4ef5bd7b80adcf71f7a577ab95d8922aa46", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "e01d348cd36c2b0775395209bbdf0bdb7fa778b16ceb7ff56bc5917802c5f3b2", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "8777026a6234d2a6b8d898a15c60901bb6b81630786f31cff975712e7424b1f3", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "f48878155ccd25dbb6b59613108e79f51bb72f3147370f9a7ac17bc0f083e814", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "0dfd0b1703c3ccbb4a4a752d497ec4e5f2d6014bfe65099afdb0684ab2bbd5f3", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "4458d1110986ddcb4fd7aed32c018978cc3221f29151321f7b174f89cc2f273d", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "0219fd1dfa7f307c78295235bd091e65df5311b9197d2d601ea6055a304062af", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "48a38d0a4f53715fcd8739111bd1213988378278a69030c621491e1175740b29", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "56489963f30c357f07d1ab123f15ae58e7c1ea7f12a5e04db454c80f5f501576", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "bee5a829ce002aec05ebc38a5810a8b5a3eb8d54bf9147b50b8738d8da779474", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "e815d90cae0cd64bc8bab2a1c486658aad649799490e5f5c0a418ae4c5d10857", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "7acdada43c7974aab7c6507d90cc50a777fcc540b2028cb924b3e25c4eb8935c", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "525f350a3561279e4b021bf6f7b5756a97ffeead781efa98edeb00118a003a89", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0b71acccb165e095202f9b83032a42e283ba1b2678e0536a9f5eebb8c7e82824", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "cfa0a4cfa8617ee6f79654c8c9989695b16d357ddb11608b6272825a3e741b85", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e0ca078074500e3da9beb485b530a57cb37f991164b055a0d1f4728025bc44d4", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "075326b2adfc25dfdb07349ed8b5b7eca7dbad3a735f8d3dbe870d7d358e7a3a", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "318b7670b46c9397b04806541c75ad09b32ec39a56fe668be2fb3592236b9d97", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "d9bc21fd2ed9f20ccb09346d55a12dee1bd3f1edd55652cb6822dc9ecab8d7a3", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "bdff54914413226df4fdaadbd07cc1524e140259692523d028a5bacbf6772d63", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "ac6bd4da2861cf4f55dfd357e53a3a02376c33cfb488a0b3b76579a4288c2788", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f5668977045ebb45f18c857b9d143a1f25d5c33adda1aba442db220a70aaa81c", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "3991158fd430af9ab94a43fbecd060b771e704dee9f57c4a9fb559244721b433", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "5df19156369c18a38d0164025ad433ec85e311c4ae56a96b839f8774788c8ef7", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "ac6bd4da2861cf4f55dfd357e53a3a02376c33cfb488a0b3b76579a4288c2788", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "ac6bd4da2861cf4f55dfd357e53a3a02376c33cfb488a0b3b76579a4288c2788", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "ac6bd4da2861cf4f55dfd357e53a3a02376c33cfb488a0b3b76579a4288c2788", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3c9b233b7821be43f521216a4a1362bbfb4cf01023f3c8dc866ce248acd89cdc", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "b09a4267bc9d558460ab0cda3241b9fe4efe0b28434d15838907c42b5ff4a30c", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "944e55bb8849c65a7f2ac151bc7648efb453f320e0307bdefae778d91f264653", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "b232e2f958fc417e80e4893013821b88dd8f6362f32f0c614d63359542096191", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "63320987883df4a1de15b3316531d94409c4507d79526544a6760ff2e3a69f81", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ae24d85cf8f966063812686193186fda5c6eddc5d251dfc0268217fe228d7666", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "c84e1d6e3ee7a1d36c8880d456013b19b989eb71d53cefe3a2536a9a3c9bc4b7", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "ec8b95f180278c3ec14e9fc58d248cec535f4a17075e367731caa9a4627b9aec", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "88603de37c2b9d77a9acba2f06538e41bf579de324268d6f10b0d2a973a0f2ce", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "9d5bb2949dbd50136474af3699488365b1c849d7f0a476253c37004ceb96ec0b", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "a086232aeb076d4e4e0f18e8a0648542ddf8bb45d0a3d5abbf1c66dfa180a4a5", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "71ae86d19602431c02b553d165e1028248f45bd8073c2b03006675148d4aca7c", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "ef93346251587041da6c5b9ae6b9424f44ac5442a1602d43173c03a2c5c647ba", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "07b7d5e41757246a935385cc094704292d9f9bd725f8e939b3b745e64a036f99", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "4e8ac0288afe889e963ca9e91901c1218e0a03628d9a97ee8c244949742027cc", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "4ba22258b4b0fdb82ba2c2949706da0198ea57afbe7d13a16ca5ea34ace91775", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "eac4a59ca296aebb32b9e3db54adb64b158decf7c71d0762d0e88d9a65e0cc83", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "d6ed1bd176831850674664da5d004b66d3d9023e855f78f3b6f33bdc5d4b752c", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "a086232aeb076d4e4e0f18e8a0648542ddf8bb45d0a3d5abbf1c66dfa180a4a5", +"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9595dbdb8acaea72947ab7c4e46df733d735ca16074d3e13d15fe76ec963f0cf", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "bb1df503f7b7258ac74818bad2612d342241cf5f3e1191f10b23ebe9341ba27b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "388e8281340cdb69c33f648da7928630af4c9a5ab11fc120e8febb9e1358d49a", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "02c775284f4f9f02a28c86e20a1f39f30634b0a41d2af9f07ef58b21207d8337", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "388e8281340cdb69c33f648da7928630af4c9a5ab11fc120e8febb9e1358d49a", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "4db4d7e6958e8522cac9cf7c2e9b6e95039334c0df7eace59fcb3726d2ad38ad", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "4db4d7e6958e8522cac9cf7c2e9b6e95039334c0df7eace59fcb3726d2ad38ad", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "ed762c1ecbfccab10f4494f22c724b5445f3e32a9a528074da50486e29cef389", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a2e601b069f253e97e8b7a05a5e49a6a4698fda508db57cad93668bb50bdd761", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "491aca3f327a15ec2a521f9fbc562ea3d826de96ce6101c63010d5110b7680b5", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "3b79b61f5ca92ef1b05c33a8248e2b72b432ddf6878355b12bb23fd5fffd3843", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "780991e7dbcb070e3b2f5d2b6ea0dacfb9bdd610c0304960b25f7b7ab89568ea", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "24b4ba61f8e37adc2efbb0cd0057b2edd9a0418c14f5bf4df82b445b47ebafa2", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3494feb45495c59847921f3c95e48bbfe05cd65920c56562c1fc3dea257a8453", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "8609f002af12eae6bd07cf674c8e1ead51b22fdea83b69246c922179940655e7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6530c1d8bfc609f001c0c36872da508cca9450423d24975fc24b4ede2ecac9a7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "b8d479b2534d6dc86909733e2f4dd5e24f4ffdf70a5523a0621e7fdb9f623808", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6530c1d8bfc609f001c0c36872da508cca9450423d24975fc24b4ede2ecac9a7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "774b30e499fde39c71e5ede07a48fb0f3eac6840ee211d429a61843afdc93cbc", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "774b30e499fde39c71e5ede07a48fb0f3eac6840ee211d429a61843afdc93cbc", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "4f9cc0ed54a1e70782c32bd8fe4352f88cd77678714d1be11b7b90d68f5fffa8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "5d243dd04b31c247c090d55a212e5956ec4a22a0c3c7eb3f9181c6d8d5b01b98", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "2dd0a8968caec5366701563b1946f855bdac0de9a04705502c242753d9b9df43", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "3b79b61f5ca92ef1b05c33a8248e2b72b432ddf6878355b12bb23fd5fffd3843", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9daf4514da804e89d82feb397d146965fdd99e055e6df0bb439ba1a558841ef3", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b58db3bb271939f7e20549d91323992862e466bb9c4e22a539644eb554d26b22", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "8ac449423877076eccda6dd675899b3f175e708c6a94ebde57351c5886cb40b4", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "9b995b6b5c16c46ae079e8227720d71b58705edb4c5167fe666c91c90c448ef9", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "63c38b214e565e33ab8d9e9bcb60f4ba3693b927734ddfe6c40c845640ccb0b9", +"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2f1793e987d2e666be02f3b475cc2febed54b158ee0f5f7759d5ceb1ec4c71a0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "780991e7dbcb070e3b2f5d2b6ea0dacfb9bdd610c0304960b25f7b7ab89568ea", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "ed762c1ecbfccab10f4494f22c724b5445f3e32a9a528074da50486e29cef389", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ef55c8eff3c51285e485b3fa457fda174a96ee62702337bff94dc522f05adec6", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "491aca3f327a15ec2a521f9fbc562ea3d826de96ce6101c63010d5110b7680b5", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "1bff3d88b80d988c73fba1b6ece245eba706dc27fc0b7245423ab4d7b794530a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "87d21f563d6c9b75b55b8bdad3de811257c2f35a3f9511a8052f22fb0e3da7ec", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "780991e7dbcb070e3b2f5d2b6ea0dacfb9bdd610c0304960b25f7b7ab89568ea", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9daf4514da804e89d82feb397d146965fdd99e055e6df0bb439ba1a558841ef3", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "4f9cc0ed54a1e70782c32bd8fe4352f88cd77678714d1be11b7b90d68f5fffa8", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "367d4f780b9c41ccd98b422374d2cf534a8e20ed50c11e863e0b37f5e9b7df2a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "2dd0a8968caec5366701563b1946f855bdac0de9a04705502c242753d9b9df43", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a8c8f6d1a1804adf54f30d4c680a209c549bd1787c9fbaa036dc957d4feb1c37", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "2cfee33b6b6725155b018ee355bde97e27b2776a19e1918d30e06512f26e6dd9", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9daf4514da804e89d82feb397d146965fdd99e055e6df0bb439ba1a558841ef3", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "b573feaa28da9d85c19e8d40783b6dbef74bf11282a6a999aeb0cb7fb58c4af7", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "b573feaa28da9d85c19e8d40783b6dbef74bf11282a6a999aeb0cb7fb58c4af7", +"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "5d337c43cda947b63c3811ac7a50a9c334269bd2ea2f769796da30bfe31da0e2", +"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "d3b0b8e3049dda9cd11255640aaf7fa6a68f1d893661b0a9e6fa8952ab437b53", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "fac1419ee29d6ab815ac6b3b8543472cd2a14afcbbdd1bece02479e7e8c34c26", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "fac1419ee29d6ab815ac6b3b8543472cd2a14afcbbdd1bece02479e7e8c34c26", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "b9fea2bceda99a3dc7c2b4823de86cc8970129fdc672778ee17890bcd82a0402", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "b9fea2bceda99a3dc7c2b4823de86cc8970129fdc672778ee17890bcd82a0402", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d147b2f52bd6f93972157f52e18f8d18b60f4da188e53d22e3a0190079ffe4ce", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d147b2f52bd6f93972157f52e18f8d18b60f4da188e53d22e3a0190079ffe4ce", +"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "35e10a26068f717bcc71c2c1bcdc3455c6fe4a3087fdfb8be89eacfeaec4eede", +"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "35e10a26068f717bcc71c2c1bcdc3455c6fe4a3087fdfb8be89eacfeaec4eede", +"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "d6c3324db6300b4b18ad0ae80c558a3dab6da3b3ffd4642cbcc2d36662de5fc3", +"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "04c2c2925bfb543de2216bfff36d76c83766a3241742ae0420195b56403b0167", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "ec08b76bdfd4c6411f9f04f7f9d35f388af94c7ec20961d3927b4b01ddcf784c", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "618b79863f9085cef28a3c1182fd83cccd1ce12bedd0bbf3ce107c216fc70200", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "5b50208285246fbcae68f927e01cd18935ea90d7d4da0f1885b2151dfd82351a", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "4f200fe7f9b62310c8788caa87edef87f7367f563da0e14af69366150e7597e5", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "474b2765da3fab9f750e662daa8fa7ca58ccdca58cb0fe6dbac1089104385f47", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3daff61912f4fad431c9b6e6c1f78604e30ff0a91529246bff4f6a4bdf0a6b73", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "88fc2b1ad644f3db80ed5aceb1c41df778dd361d3fb45bf9ebb490d636348123", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "e4053cade369c601246a891af97d445afcde482eda335ff318fffb15296a76dc", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "876cb54a4d410a93875f1450c7a21d2bc370bcff6f842de39a00f801ffd3af3b", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "12e9a5ae5edd41f38eb27ff9085694e494263e41ae1e73b202edd6bd99f5787f", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "78c9091f0e8ef2b12ba0131db1dde20f0e4b8d343d7f7ae7a82197a7dc081454", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "cc4ca7d8d4f1cc848178c4a5661a71ac7aca95d5a609f646261f9659a8e1aa73", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "db2bcedad8f05dc3922ffd4f24bc66c6e76f170f2017dd4f1da0abfd26b000a7", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "377fd780ceaa9ea7602bfb8fb942d2a4cb8d8f66d061b8510f3644a06eaed2db", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "e5cacc2f12120483584e84cbd0e307922d07672a94996decabb5874b470c6cb4", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", +"T3T1_en_misc-test_msg_signidentity.py::test_sign": "07c4299c8505560af08d361e56a8fb38bf998515262e5ffa1dc59ab933fde403", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "169b4255fdf78d3acc5e66bea7cadc0df17568a527333a75d454eff787b6f9f5", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "2c31d9ce769eaeba420d634932d6dc8cd5c3088407a0ca520f5cf6369464d9e3", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ff6290aa5adf276abc2d1a8410f85d8776e7a7eda2745766e474c1766d306aa8", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "d91c7340482557960be74a4e5a2552e1c1308b60d5f9c6f0a5ab98a8ac3a37a9", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "06356ab96d377eddf5f3b6f458c45913b1d94a970ee5bfac73240e5af548dce9", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "7c512a05b2b66c354a5d9001f017373964fcb999a7e3389329a343e91b9d5391", +"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "ea22ea019695d59357090049f4236839a6c87051b2303ec6a18ae2d9f0db8e59", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "11d98f4aa4c7a173c0a0ec2ffdc250324c843e8aadc1ee2fb9df2adae7707b0b", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0805a415cdcd38a899ba870a624001a857cced372adb2d0753a90a04e749bfd3", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "2371d13c0b9e14f6351f7d72ef9f9b2b6a9a600fe51c0a54bd0a2aec3e950a9a", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "335a5a9a1b71d445f5528aefcf664689baa2cbc30a7350c5f97a949f4813dda7", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d91852e23f8a089b9f3c38f20fa5bd24a27365f7a47284ea059e6174cf5f0bd2", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "587a9d7ebe9f38edb69ed2ef3ebce72274f13ece62ac77566d5d106d3112b878", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "f50972880eacfadb02252ddd77cf95f75b9bfef68e8d0a5d14da5b6f765d3a31", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "1e10bf06c3f6ee2322a5b18407afcd56ae00cd1050f8d478797f71b0f01c15bb", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d9069164bffce9ffcd768986bd9f6b9091d1a93b42d1031531755f8559accded", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "251a0f02d357a1634ece78931d3d0a5ea5e2ed1db59709420170da3c44b24cfc", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "38d2728275c00a63b2f42d868fc51ff7067268418f123ef62b3fee229c15d489", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "22368230917b79e6ddd9c05c94fb9707829ca3ea344972e71ea9167fdbab512d", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8b7f0f8a29a71df1561aa347caf57410dbb80c4fc5eb15f2c1b08fa8ccaea3f2", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c19ef735f3a4f28b1d151230548f60aabeef4e99a053d1883971fcf1bd2c83f5", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "01238e49c12e7419cbddf33b535a57e1d1283cd60f308462b7644e95a03d13d0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "587a9d7ebe9f38edb69ed2ef3ebce72274f13ece62ac77566d5d106d3112b878", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3c8d138bd4f0485864a6d3c1786a5bcb2267ce85d48e7e6ca1a9425b2b76b748", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4e9a22122d679ebd6943c48243bc0e93b8a5f2a188e3cfa60d9942265221ecb7", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fdcd49c0f2db3a66bb2789370cce28ae7c4ce5d5f4452f1ef3348f8c3f2370ce", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5907086030e9527cb303d584095087d54864cbdd9b907681dd594cd3b0a83527", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9e0e6303579dde360040a5723718e30ffc76b47b676dcf4d39a476b3d3158b73", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "34e6a378400bde943fc936417f8c1da588aa574f87366fb945a5b0186d935b03", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "df0796bcf1ef62a7ec2a1d1934aeaf0851bab2e94dbb4bc632d7003f423bce77", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "4ec9426f39c55fdeff9eb5a9cc8636f16052e99d13c17c3de79049d9fd43cee0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4c00b7e3106723d32ac223f0f66dc31d3b210010c3652c9845f1676e345fd8bf", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "47f2a93e044589692ba1ec5bfde4dac4d437f590041497d01275c76c0ec80238", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "974c222954a10307ffcdcf4f2cfc458443d45f6158293ea9dfb91e613d5eaa63", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0dcdbc898a66346a2781b20eed15ea9d2abe4ba6d968160d808f36bda4cc17a0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a805d3037b5eb7a4a87d264aa6d2a97097509f4b5d0a4d4c030321b741ad3ef3", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e669290e2feef97631bfab5fb0d04401c5e5f00acbb2d259393c874934d1b65d", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7e7c5cd831de5a6bb145f68bcb8b7f75e944242ba076caa1d9dc57411d5b5c56", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "d00dcc98c2ae1cfa0d36c9c6067839b88d32c29728883140d5b47fba84e21c11", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "cbc02f1465fe548c6a8d4bfbcdcbce11f84aab8331ef61780978be4f70fbf139", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "744cd1e9a722d50a1c841940f707292ad235df72ab404d72711f3eafef556df9", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a77e280cc35809d034b7809a5556f642238b8c54b012bd1fc00e2b7525294366", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "24e59539ea9627589fb6f660d90a5c61e1a7f91c50540cf43c360c5162dc85b6", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9bfefe78931ad0662da0d3a811b90986ac615b306fbab341db6a93606e703b4d", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "1437133dd893797b5eb8ce8bb4af786dacd9123237ac36e8b2894fdeb59ae547", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "4dcc0c3cbcd4f5e2be1e79488fd62f53b3bcad149162b7abe94d6f0bac1c4b06", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f9885944e44f725181557c1198cb09f62f01cb1280a5326e70d7a8a28cdaa022", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7e91aa227df848d3e9a9970261d5367ff1d89ceec0bc658df5ae8c061ad93dbc", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0ce7464f6d5af12445a90f3b67392702dd7d49aaebb9538f5aa48787a0d0f344", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ee1c47bf8a8fc74dea4d47d309b98bb754cdf4b10a5833241049978505943e25", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9a6156d81ff433060d0bfa03b60a1e35fb2b8ae6f92bf09bfa213b1c493f5605", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4f8e587e4d1fdb29ffff23ac55df1af78e0abf161f6f9717d4f2f6614f1958c6", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7c6ea47126f805d2021b893fc0a664eff04c7d19c6e329060a18a244f191b4fb", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "aa350eb701959f0381cf2f1c54e9732ce74569e1ae999fa6b3d2045b061d56b6", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ba3ce2d4a0844ad0afd1cedd9326c2937a5591ee13e5730aab382f3e2f0a596b", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3004f97128859f93c79599860f705be344068adf7e39ee047191d0528d11fc78", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "0b3e59e0f206d2f3b842f4ac7620acd1e46612b659dbdf2af9b1e98d530d4264", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "c3fdb3a8cf6e0ef93ca4a564a293a792eb46cfac6906de761b1ad37067ec9a6c", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "514b77b3bb234eb1eb4957a58b05e6f41e08818ac70a12bc95135de96b196be4", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "24c13a2cc30628f314522d15fd7464b19c788c55ae470b9431b9185b33f8e8bf", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "fa417f4f33e1f0bc794c8534050cee424254463f76907c14f2914ba5d3e40cb2", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "d184b085872b818033d73afcce4ea4f0519e7f62b4089a916fad36a19c08ec55", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "300e7e242a409e8523cc43430b2abf1dd60a2f56176b85fc5739a4213746225f", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "ffb515f1c943a3a50846def9080a6190009a5800b18d1910e3faf4bbebe2e55b", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "d184b085872b818033d73afcce4ea4f0519e7f62b4089a916fad36a19c08ec55", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "300e7e242a409e8523cc43430b2abf1dd60a2f56176b85fc5739a4213746225f", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "ffb515f1c943a3a50846def9080a6190009a5800b18d1910e3faf4bbebe2e55b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "61da157402f8855a5a04900f754d080c4704aa5f0bef77793422810fbf9a5e27", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e4bed21beb9a735cd3a02e7aae9a9dafd1296283eae824617c5eabb69f36f854", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "7b4a31e1ba0b245337227cf5ff3874227dea960304ce19f519156c1e2b258abf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "099aeadfa7762dcc05d14c32f1a41ba021a4f75fa917b92acf7e94c7a15918a4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "757dd243d20e119e9c293449c377be40aca182805acf674e0809ed09b7f8b588", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "e8e69c1208bc48f016640b39801d4c3d76c0a0816419c2e22a33dbd70421bb03", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "4ebf268ed1218ea8f0db28ad2353fe09584894d4217435f8e2ee1a63e847cca8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "633bb85ee312065eb894a9638a8ec30561ef635185cec2880c1e3d1c849d4c86", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "26bb20418d7fdb5fa2f3199689ff7ea78bbffcbd990f3c5002665049e809a31b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "5e74f9fe64c81b7aa1ffd95d5b20c669871ef20da6945f5b7a66a07ddebb5940", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "e649a550535920b3c10741607606fcd508b4355416a798d1ea3038d6fa8cbb6c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "96eab0884fc8a44457425a1748bbf3559454f8bd597b113a485f1494fcc90b8f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "bba0122e63c81c74a01cd561db57ffdbd29414ea68d5508112f0c39d3ded4163", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "316c452422a1e1d5030b188df5601e0344e696b38d98ea5af8d018d402633eac", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "0b2e138bfb6e2633523a0c16e3631857d8f0c70f977d279de27212d38961d687", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "ab6c91ed90b710df4407733f1a51c52ba8af145f77e8b6ddc6e230993dadaaa9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b980b386a79bb8cfea4e14254e12daf7f09bf36bfcd9d7b9959e9dd2f0350d34", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "27dcb19b0577327f7ff3381f16547348531b8b3f0f4b79f218cbb165a9f654a1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "44fff8ac52c3b0df80db3260c802645b35ceaa62d520107d67dda2d0a6e09951", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b4ac7db98f245dedf2c7c52711e660f2b65129d22f199d9d92b21ab8e76cf6be", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "8fff828598de6b3d5d06cfe877796c95a47d11a2b89ed0619fe56e5c9ac146f4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8fff828598de6b3d5d06cfe877796c95a47d11a2b89ed0619fe56e5c9ac146f4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "545be0ab040baf298712302a3988b1195733331d0b1f501e19240a3c6c6a4c25", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "be578cdc45e46529c3af6d3afea7339196a1f65ea46f1b00030d280c7e802221", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "8f46b0b8864a7390e5ebc555b433b6288ba1d9b43547ff244dccdc5babdf1fd7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "7e621290b87b40a51cdf297cbeb3e983610326d6ff5c833cefe3dbbae855b6bd", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "701cd410ac199da2652ca2cded1aa1d1dcd2f739d79faf596cb1ff3ef65303cc", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "f6fc8f2768eec807b26406dd16b14151339f35663491ff840baab93a64d34af3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c1563085425f4547d07b6dad5f21a2990a9af3b00174f9454816dbb37b6c4e1e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "68b14dba3fd87b7f83e3d5cbe0966ab35e4a152fdfb910f09b730c73118f3a53", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "832b355a6f4ce515861a27945352526c12110a4905d6d4b2e7bfba85ca337657", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "d6ec7eeba357aff0d8127b71c25630736ce4d1033d2be21b21098d26cbdd2375", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "60b2d88dcf4ef0d24586478ef9805139eac9567349be450f8775bce79e111777", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "802b0644ee320d97e3887dfb32bd766ca7d47c5160552f732dff3ecc72a1b587", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "39d544ea14b45ed7af36419b1fa7847fd2048049817b7f5858ae0d342fb5b13c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "f9d404ae46ab3f496fb8f1c7684339d8fc59d528f0cd8d06bdac5de2353cc622", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "1e94600812a039d465018717331f27188365c1f46261550e6ec772708189cffb", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "4a8737c35f1af059b4c9d61138d289afd5c2f82fb4f3b37e6bd6b3f855a7b250", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "fa93df845fc8a4d750a6c0d842cfbe69366a0716e610c6544deae7a9dcb423a0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "70b065178a4de8c0d849d87162244a37d895d06574764c5a785f8747ad3e5cd0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "24aabcba745784ca047e2c688876124d2b2201edc7402532fab9ca145849d786", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "9063064ec962722642eaf32ef1166178a30fef9c004c17bb74784d5a89d89ffa", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ac2b753e1ec885419e564d15a664b128dcbafb22e5e5951104fc9097b0754325", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d546083714ca4b0e61e0f861848632e50559db8f936c1e2c7b3f87932cc6e0f7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "30caa4b565bf1f7dfb60ad6c8535c7c3a95030f079576bf96995168b7027368e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "424ac651529856c4187100dc5c92841b70f41b146e4cbc430f03f5178af1c99c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "f987bbbf0bd0488f99731fd272e937d020a18802144f3bbe8c0499fd9558827d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "149730f111b37f98a40ee0d377c8ba9128b0259c65e4773975c702afa3b25caa", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "b66d25ae5358ea3b227c57ed6287e08fee54356e31e2e61ea9887dddd162fb73", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a377dd33b7f2b1708e1183e6665ceb12376bb30cd93362c4612d7f70e4a21a44", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "6215757024edc82c409e24cb04704120cb1d687d3d658c023646a48ba5606507", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3038ae1cd3b64ecf53ea88296fd3ac79a929550a64a3f2f84ebc58660eada308", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "b48c47504cee19d2d1435fb6e803394332defaaaa3f509c430e7e64106a4c942", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "00ae04a3623ea0b58543f563c8b60eae13b9b16c66a9725b5002dbbc8ae8033d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "189dee55b9df2c499c92b0558e935df9b17b69ef69ad6e5990c95cb3efab631a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "a0be29e75e41255d3ac3799413a20853e145819d2beccd56cb40cd8ab2c93074", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "8d1eeb5b7f2f548a4a88cebd8560dd333d4df535865343df557fadba7a02405f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "e208adaac466e234f3c920575ca3fe9736b5439519845eb30786d27fd098ab7b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "2f288f92230799b23e8bb237b1f1642abaae9146a0e5c7218f249453d36a1ad2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "8f46b0b8864a7390e5ebc555b433b6288ba1d9b43547ff244dccdc5babdf1fd7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "d0ec81814bf78317e3a76497c88f2637cc734084fea217a9f40dfacd20383973", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "e57e633234db5ea2ee3c50125c099d91c2aa4e9f1ef2a78fe68a45a71bc52757", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "c56adedb78883dff64af7a327d7ef9efef9b2fc4d6ec0dbe381867914e1536dc", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "9feb0040c4ebd8ce0058bf0877a1e23c4cbb77c1d7aeca5803350b5c141fd701", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "43ca1a8c81dc496eabb2c672323ebd9e415ef315821e5a7188a424e167a7effe", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f61a086a6653b61830abd981be4598d1e613b7adc12a8168689d3cddc7670a36", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "823d7a01d2ac8815c8776e36601be8542dec3d61defed56d6ff92ca0094c438e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "4c3e7aae03db61288b50dacd79d2b7ce51045177f7cd578c95eb531e2897363c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "5c1caa2e342f889bd4fe6fb9c32fd5d938869f261cc1067200be9750f8e9129e", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7110bd8f7bf638a8d7e0fe8d016db71c09ed1529e66615a79363f98750665bae", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "67bf944c37326696b1531037ad9d4911db2f6f1468631d5724c506190b745d82", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "1531923d4b10b5f2d8efe3603779ebb74445a1c74b685a815bfb21bb798dc684", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "8191a7b699b666704d466829e27f00b600a37186893e0cc695d5fe0e5e65cd1e", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "15fa1dafdb9b8c8d9d90c2c382109e64b4298d1c78b497531bc5fd44074a054e", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "3dd72c64ce4915f05093fc781458476b8c8241a22ffe3cab86f1297f905ca9b6", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "53ee4fb40fb3b0712cf3dbbdaabefdb24979ec118d5b5ac46125512011117634", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "16802d024ccebfd0bfc6123723975cdeb7059290466434679259282a3c5f2fdd", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "443e01c737d72b46ac0524693766a859e80b306ec9631f386e8fe07aff7c9040", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d2ed204a8b3ebb367a40fcefa45bc0fcdeb8e9f9caef04e9459818f36dbbcd47", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "4725c11451e09ab4a88005327f5680e0cb4a2a29c02878983f031ae04f598631", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "79c5691cea6ca94b0e4a3c9d2970238679dc5d0aae15180f28636cf54573debb", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "d69336608491a8ede606623d1c47e4ddece63cda250b64861452bda25ac43fd4", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "9b44429661d44d6af0a343832cfa0340a99c0fb08373ff8726b8a14b0c1e8f02", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ea689defa257410e94da049dd7e129d4f7e924f3093473cecd99598e395a94dd", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5e53d0254e67fa18abaa7162415765b1e4b6f9f83e0cb95a8f2b4e31c29a3dbb", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "4456a4672975edacd63b795f7272668309e77ba6dda4e4aa8602164ba19ffc91", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "406956e0bd55987063769c5cea5cc289ce2947b1b5b89a23ad86f068fc3af886", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "a8b204b09e62a83de2758b957e6cf1a2dbd107f2668bffeeb627e89e6a5d32fc", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3e4ce8208675747bf7b4dfffc81ee5f0f388e7e3972d932fb110cc63171d8f12", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "e68c0a43b8a26c14aaac6403ce70525a29ef737fdf589f60fad058cb622d1b67", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "eb9ac14e1dba720ce2c5ec2c4e215b18dc0561441dba075f686f66a46686bc23", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3936fed5aa98f45c5d784db97dbb92c42fc20ac80d029c53e5ec20368c9a2229", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "bf1e4ed65ea478f7be7721ae4aebbca21e5eceba1103638d06135f7040589b2c", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "97877de1c171f467e0e08f4297f8ab5edec76f93eaff1925a28332343ffc385a", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a1e654a9c89afff1d6f9a39b910749a5cbd420879d798bf759c61b3272f1c0bc", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "8c7b6a57ad4c2654ca746847295f6c87ac79402dd47520a5a6491b84ef8528d4", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "16463b003e9ac3b6311b31d49daaa0c95ca446a490fc4a73066cb6c1f7b323c2", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "65eb50b5ebfe154b93a636544729f9d3bf0efc3204538bec5848358300656e9c", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e201d846b39acaffc5a6856616b12f626e0d364f488625a7535e749e82b4263e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "bd24e91f432f5da749b02c939810eaed1a8835ad0a49b9cc260c5a6fdf35e658", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "f7f9f48ec10ef23fbb67b0c0f676d49cf37333deec6841f7a097864ece2a6159", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "609064b559946049976e4b263c05a68b877395f6b8e5afb0f255dc5b7c845e13", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "6b6dc9508e7213a169357a2c9b8d201ed392de850d64e026ec95e15c9f1043b0", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "98e9aa06c4c6b2ba875c2ff56687e2123b0ddb7d80791254c0bb745b9d529860", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e242b5933d18e0830be63c2633c49ae69e07f8a86122483ef60a2c373cfc21c4", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "26c2086d0c407c248b884add5d316ef4bdcb02ca89981645ee9cc8b7c47780ed", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "482ad751571cf3b80876edd0f571fc776e097ea5822e77b09cfb55609da694d8", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "3c165f58f2ab2b69a7c4bf1b04bac728e49ecf3c85d4f0edbe535f6fff4e4ebd", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2b32a285f34f614b3562866b6863d3a6d092738fa5ede1a68ba49c51dd57f872", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4224f4b9fe0fdbecd12a5dc223dd6de1e0d8848fe0b3b40f3c506d5c4cee4e88", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "e30d1015fbfa674b29b18d8b070a8f99aa27252a14b8564e41d4e893b40e4f98", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "70e9680035579962ff639cd955930ca7113b349afb78a9104ecbc14425ac9769", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "d80bd63d1d653ecc5b1843f3f2d1a7f40af47f3364c2cb4bf09ce8df2ec86287", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "0ba83f7e4f20f4f4e59bfae2ac2ce8830284a7eb80912ceb970643df229e4590", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "85aa59e5f188d1b821575970766af7ee703dbf25da8b189054e611ffd0d2d4d7", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "1174d60425a38e2e217b2cfd6e3c457e3871122201de55a3829599e7bc62180b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "95f2dc4e7b8c06e7c7f99c3d869bf508dadb82837bde0ead2ef06cfa74c36878", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "662c8525399ff20bd1770b1c5ac75e533695453c0f883d84673d16014021eab1", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "26c2086d0c407c248b884add5d316ef4bdcb02ca89981645ee9cc8b7c47780ed", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "91181ad7fbd5654d0f309b1d17b45d3eec7dfeecc188f2212168dcc74c052f4a", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "47e284a9ad7bfa916d9edaa8fefc62d4bdf07881c050f129b43200acf7f38436", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "4294f342569bd0d838663a59eb6be49e6bc010254fdf9269250ee158a89a972b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "abd7dd525785eb8a0cde1fcb1b865abd13fdde379fbbeb0b59a950ba6ffa162c", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "c02bd5eff6ca5c4f6fcedb815c3435844295a1982a2a24f7a5a0c2805e65805f", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "39e034215ed5a8099997aa0d1236367fce3139511b5921b3f4489281fdbb627a", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d5dacbfada3fd814942e9ecf45f949b9471533ee2e8f0abc120afca3eb94a2b9", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "72cfddf432bd7f4a21f7e5598b6670b44e37ffcdd4b8d7e766f7efe2524ee3de", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "107fef3042f43e6426bdb3fa75e5796c3c543062a63ca1d7800b83ded3c080f3", +"T3T1_en_test_autolock.py::test_autolock_default_value": "cea810ad632407b1e8fbfdac17ccc89b1789895d113997657a42562f06717fc8", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "b2c6e6edbc2a19419193502dc652cd8c0aeeac08c9126905d655e7431422b9b9", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "b2c6e6edbc2a19419193502dc652cd8c0aeeac08c9126905d655e7431422b9b9", +"T3T1_en_test_basic.py::test_capabilities": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_basic.py::test_device_id_different": "7c70b9ef9a09cec7bbdb4ee343b6d54bfe8e013dea28ab40894a72f8625ccea6", +"T3T1_en_test_basic.py::test_device_id_same": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_basic.py::test_features": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_basic.py::test_ping": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_busy_state.py::test_busy_expiry": "88c91cf5387aa26c92cad4c663ddf12bc571cfc68a72078e9b0d2a94525071f2", +"T3T1_en_test_busy_state.py::test_busy_state": "bb4a57bdd629f4dcc1f98cda870af8ab600355d3f3ba20118c3c12c77bad3d9b", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "f6141a836a60dbcac25e4fcc453bc67b14b79322f4e2ffe9a0b8577faf681694", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "f6141a836a60dbcac25e4fcc453bc67b14b79322f4e2ffe9a0b8577faf681694", +"T3T1_en_test_cancel.py::test_cancel_on_paginated": "ef5ee04a83bd0230975fb30d0c5209d8bae58a510fb50925007eb21c0da89f63", +"T3T1_en_test_debuglink.py::test_softlock_instability": "e53e5b069d1bb110d3145692a59d658042ec12aaa6496335662db05d6c4eea0f", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "37e638adc4cbf197c41ab8033dc32d53f6891fdad490443e9742fffb315eaef7", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_language.py::test_error_invalid_data_hash": "c92f0183cf6bc7c05a10619419c5ad6b9a371df6722f7b4cec6ac90f9f2c627c", +"T3T1_en_test_language.py::test_error_invalid_data_length": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_language.py::test_error_invalid_header_magic": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_language.py::test_error_invalid_signature": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_language.py::test_error_too_long": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_language.py::test_error_version_mismatch": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_language.py::test_full_language_change[cs]": "70c194f18831ad5fef7969d21de56598a1c6115996b12a145718b5f7e7d6d60f", +"T3T1_en_test_language.py::test_full_language_change[de]": "9983678e0d3caffa78c20edadfe985c50b59b0578c115531e1c2f84859f95605", +"T3T1_en_test_language.py::test_full_language_change[en]": "d59c2ac70ec56cd09f89de262812656435fdbb49efeb2db9595ad57c1673663c", +"T3T1_en_test_language.py::test_full_language_change[es]": "7ec638c429e66c329bb5400b0e817a3f9cbbfdfb83a6008aed6c778ec40c7e55", +"T3T1_en_test_language.py::test_full_language_change[fr]": "ab5e75b9c7200d86764d4ecff1dd3f5970562015371ff0e7e7127115db293f6e", +"T3T1_en_test_language.py::test_header_trailing_data": "7d7fe0f88840f9f46f3a9875c25d5881034bb629aab050e220e917cfbe71621b", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "e0a8f79dfac37e28d457fff7aff46d232464062c9cf7bad535361271bf762dbf", +"T3T1_en_test_language.py::test_reject_update": "066d1c7e03d310f64d139a1264ba6b082ad1262096ab106a2eb62c4e0a05ab29", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "96fcbc459bf8d87a22d0691eaa938d198dae4f6f6412b5c33332aaa61c54de9b", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "96fcbc459bf8d87a22d0691eaa938d198dae4f6f6412b5c33332aaa61c54de9b", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "d48917a12fab09acadd38ddafaf551f01e685b736c76c08be61474ecb6c5b055", +"T3T1_en_test_language.py::test_switch_from_english[None]": "af62f50554d2694e8402f72f43f9779c9e9e21ebeb310c5881008e0e162b0d6f", +"T3T1_en_test_language.py::test_switch_from_english[True]": "af62f50554d2694e8402f72f43f9779c9e9e21ebeb310c5881008e0e162b0d6f", +"T3T1_en_test_language.py::test_switch_from_english_not_silent": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_language.py::test_switch_language": "f0e2703955ee26c7d9918a510b6b2744a8d6df0f83e0dcc8031be465dd1b77b4", +"T3T1_en_test_language.py::test_translations_renders_on_screen": "386d167297cc9f3f421fd44e816f5643adf63b74bef472730bd2d84a3858fb25", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "6d357a26a304a5626d93418ca9fc40de0acc4d98dc78d7cc16b913be680a3fe4", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "32ab92c6244ed354fbe9eacac290fc387cf4cd69ff0321f85b253e4fbb6dbccc", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "f94f6a29ef26d7f65da8b654eb2af8fd62d980317f76236fe8fcff757e610c32", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "34dd7ad1f185a666c2383500eac5825887286b307839995cd8514d2f3aa1349a", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "51675a9ea00ff4b3978e8f9d3f162ea6b83c806af17f710d4c0c4dc98941c9a5", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "5c7dfd9d9149551760fc232353de0e85d855f2b0825e7b74c50156bc4c7c2615", +"T3T1_en_test_msg_applysettings.py::test_label_too_long": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_msg_applysettings.py::test_safety_checks": "473b63c5bad33d22c9a3249b36244591ea31af43421d36b126f199841c885c40", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "9a1005431cbe80dff773b55dd1daeaae135dda1e450539442b825b113e4f2dd6", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "38553e9d6e04c203db6e553f63d658c24960f00915092194b2e1187e58c767e4", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ec9596cff9853865d2e58cdc120648b0e9289ce8914c47a79c0b3720a60e4043", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2a993b1922e0e51cd810826efcab42c5a6c1e261ec7d64ae0bf80a2a56f3b887", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "91ce67c91a85d7d7c43e5c71ded973614921ea6a3c45c462bc8678979a1c710c", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a1d9bdbb8eb3d65bf5c02155c7284276ac11f841cb694862bb62f3dd1dc79058", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "6e58dc3936741c2f2ff84d411b59d2849f22488e910fb2945e2eb2b1f2940ae1", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "8cec6d822f46e150260b1baea40b5db72a906f4058c5dfc49bfbf8b140d57ff1", +"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "a44a253686610420825bf1468f83184979a55a4d150842c19ddd043050c82b73", +"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "d0450adecb908408e529cacc614414a1f6661a667eb7049238a2cd30b465712c", +"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c1eb70dd6b53b2e25ce53fe0a1d35c45e78094306dbf8c8c8f727ff58fa2033f", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ab0bf3f5d88b3de3205ae2e2aff3b0e025614af19d1abc059d803acf63fc1184", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "fc019c7a629311255dec0d0a776cbbec37ab80c96ab6cee4b89538146b35467f", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2c2eb73f52c48244771b9245e8f5242c494b06105227f67225e91aea80e828d2", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "f3c671c723ce01ca2ccea0bfa4d07b442634d0fd7d5bbc649966309d8998034d", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "ea829f2c9af3d95e87fe72448b50fcc07fb2a72235811706f7394cf96f3fd2a9", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "5293c5f59d99d5d741afafa202e4ca20f1d89c50e9d6b51adc2cf12f7ab151e3", +"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "dc7a0e78034630a77c8e1a204f6df95a40df66b34dd1f764e89151174826b3ee", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "f4fb7e28e42a490ac1d970eb91be9ee07faa2dd4b3b0c0d8ec70e2fb31922eb9", +"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "0ebc831cb8454d21ff85175b67599c51bdc3af2018e2555ab786460d7c758bb8", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "be7f33fa7cbe3b8601c974a1c313f8efd13a0507e6f7e4667899da8263d5a391", +"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "cb4bed9d89d11a4671b48bda061b2187f6227d24e9fa0f1daf9fba933edd42ac", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "5efc39bbe2045d0cb2847a8183d15fc903357f60a51e90cec1ff1e4895966d2d", +"T3T1_en_test_msg_ping.py::test_ping": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "aca3981d378d8ed504c5a4475941af91b57eb78d919a1c9c452fd437af696f78", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "b0a88717e57ee4b5af18527d282a8ee4f0f68563f70f4c0fd7165b145018f5d4", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "7482be64b3596739a22d970843085e1433b510e735fca6769e95382e5f4d0a65", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "e7370d47a0d56e88fd4c59b3519a35ca7303b8915ce4e3ed16cdd7a03914592f", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "7c70b9ef9a09cec7bbdb4ee343b6d54bfe8e013dea28ab40894a72f8625ccea6", +"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2e8ce270ebe538a0576f6faceda02cc1b7e558be2a945b9798c17f7c60f33e72", +"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2e8ce270ebe538a0576f6faceda02cc1b7e558be2a945b9798c17f7c60f33e72", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", +"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", +"T3T1_en_test_pin.py::test_correct_pin": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "85bc6103083b98789b73b809df3cd45803a9e89c2f3a4334a7cf1a3c532f549f", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "69fa725e16af6d0cd6f9b5c4440282fdd5ec80200376f4ffba445c798bdce043", +"T3T1_en_test_pin.py::test_no_protection": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_protection_levels.py::test_apply_settings": "998907bde7cbe1e7afeb78f4f56d9165f070dce66a9b06375c720a0c9a02b27b", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "0cd0600f8bb370687294425789e58921615413e222e3949cfc94706438fc78f6", +"T3T1_en_test_protection_levels.py::test_get_address": "7e2c30ff43ce96d7e26c3395a5fe012b0b64c19fb21f93f3c6a879c147ba6288", +"T3T1_en_test_protection_levels.py::test_get_entropy": "20ddf6dec3fb767b5d7b1976e3ea0774b71759b503dc3f9a472ec13bd7e29418", +"T3T1_en_test_protection_levels.py::test_get_public_key": "7e2c30ff43ce96d7e26c3395a5fe012b0b64c19fb21f93f3c6a879c147ba6288", +"T3T1_en_test_protection_levels.py::test_initialize": "9bab9b30097a2c34c82983555d6fbeafa62617624261feb31c893c79914ee0f9", +"T3T1_en_test_protection_levels.py::test_passphrase_cached": "b44c36e5bfbe88722e29d0a0ae1495fc06cbf8ef2bb28a96fd4125192dd99c5d", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "f16a38d967d236cd20055eb23a9578213c1b7f1b3f19f61eec3cc7f7abc2a63b", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "938776173ce378338f9718d64aec84cabdcb23f15166dfce42c4835b718a26fc", +"T3T1_en_test_protection_levels.py::test_ping": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", +"T3T1_en_test_protection_levels.py::test_sign_message": "7432ee6b0e803593b8f181df186e3c9cb615295d4980fc33d368526f97d52667", +"T3T1_en_test_protection_levels.py::test_signtx": "55c0f5c105b4bd2681fd9bcbfabd00a5c2d47eaa462269d49c462cc35f099bbb", +"T3T1_en_test_protection_levels.py::test_unlocked": "e08a96b24f115b72eb3f17fa5ee9628d1ae3321f0f5d0d4686da930e7f0e5081", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "f9687ed380da703aff31ea1cfbf280ec78dee613f75082a5a295ffd0843f5634", +"T3T1_en_test_protection_levels.py::test_wipe_device": "2975d9b2fd1e6118e259de6ef3b3fbe7c016a7579c282287ae22c4ff02896187", +"T3T1_en_test_sdcard.py::test_sd_format": "85e8d653d42a1f84de35ebd00cee1ada97ee367f9f0bff5ad3bb1c07782d0c38", +"T3T1_en_test_sdcard.py::test_sd_no_format": "266a9ae0966cb0720c2515bcf91bfe3315103d0e174387cf389e998d6994d5e1", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "dd0572acab338caa3ca3c4b493dc7f857cbd8e89ef7f74144e122cf22e1283d6", +"T3T1_en_test_session.py::test_cannot_resume_ended_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_session.py::test_clear_session": "e565d2a7d1fc9f7e62cf64e2f431e67c2bf4600a132f561f29be8f7388814131", +"T3T1_en_test_session.py::test_derive_cardano_empty_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_session.py::test_derive_cardano_running_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_session.py::test_end_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_session.py::test_end_session_only_current": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_session.py::test_session_recycling": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", +"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "c0d1b2e8e75d184b1386cf038428d4dcbd40eb083e0380e9a0c80aadbcd6f030", +"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "f82eb9234ac3b0de4954d333570f284b64a87d6f3d3e4e9dcd3b8bc1e5ded418", +"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "24ae537211d9cdd015f883185240ef4ffe0439c2300b7a29ce3fb13340d3b468", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "6084576089e22b31932c937600a7a5f4bb503bc95dfc1f19a7d6094f1816d134", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "5e27eeffe4b9f6f453ef3650660e62ad48e373c986867d7b08c4ab8baaa80e82", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "f5bc8c2ca2a0f1cbe651dd54912465d2ae4f69ee6c971cb2da3bbfe4b3edc34c", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "b44c36e5bfbe88722e29d0a0ae1495fc06cbf8ef2bb28a96fd4125192dd99c5d", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "a000f521b445022e3a0b9d36c6cd773ea1917154b6562a2b8cbc1aa04caa6015", +"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "088ab04d5f5582a1280f0672348ef319209f3cac84a650f20d2de84acacdefad", +"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "b0911b1f508826e7eb1b5a03a2c4af753ae7631e763dd9b825d7d6e6c24ec1a2", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a1563ce1f7d0efae0a02871947e7acb92a5ccf0d8b696ffd6119eab9d2585623", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "0c527eaf180724846a79e870865417e4c79849aedb9d31bc0e4ae858c191cf52", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "285fce8c1cdd0ff0981fbb2d25ee18b297c38e044ecce27eddd206086d1e96e6", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "fa0c77e0b5cf823861aacb58a2348627fe4dd3f50c530e6ee95a64c6b719a895", +"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ea8eefd4f448825c9620bb9a0cd506a708c32dcaf68e15605678b9ba2a235fc4", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "07891071797e2cb780f87a7cf30deb111c66f628dca6dfb3a7cf2b553efcfba0", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c3434e524cd74fc78be8d148c55836ffd794b5c584c941df0d34bf9ba99b66f7", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dd59de8e11698d3b4570017ce5f4a68ac63a6bfbf1f9cfa3ff416eec1b097915", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "8c2c41e9f0e6de932891cfbfc1504a9f356f9d3035e97c779a4ac034a5b2ff9f", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "42964bd4d48ed06d4cbbb8eafa12ef8ac6ebbb097419061c208b7d81c387ed75", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "3d5093f2c4e9c537fcfee53b8051d25987519341581a61b52b5f08ee7a6cabb3", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "a7d9ab2ba97435d2b11102c4b6289821a460f4dbaf90a778e5d4200593b23997", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "3ef44fc050f0f1981767b50c04410679cc6f9ab6517b29cad728ea3382abb301", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "e845dcf7d338cb212a3466a2c90a64c43de071a322d13fff41a447544ee94773", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "8ba4269b2ee75a05edb9211540739c4d0808266a4c9c3ead7673bf5e10fc41d5", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5840d2f68747d7bd072280f43a8a447925aea5d421cf70f9c9be5ba171ad2978", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "0115545ae23acc57e5eb3ecd2d821b504d91be9d94b64b00e812ffd88e2151e4", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "f88813d1982478a440d5e5f87d25fff8c12576e5e9d4a5e1f4ddc307275e1129", +"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "01c534328aac95e8e6d0b968b580aaa97fdfa8e58e6efd6f1b816d0626220e19", +"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "3640936949bd2639d225c5ca8db3cdcdd3fed7794d5b25d2c7be0ba5846a63ff", +"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "e516a868683d108e916edee64ae6b6de68cb3bfc6a018aade8483202f7b7c26a", +"T3T1_en_zcash-test_sign_tx.py::test_one_two": "5f9aea98854c230e7d664fac14e6b525fa90bd171d28402ce0e22ee3aee4af0d", +"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", +"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "9c8d0a05995aac8d68dcef5af0fb3498eec3462cce762d06f7adab8c9a2ddff8", +"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "a70fdcfb2a648aabaaf0fb046b947934b6560e5db768c4a0ded44a4623bd83e4", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "59b6b249b419f0bb8d2994eac279167b3c2281deefca17ee179a794239fa1a6e", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "2357ea487c38c3cb5cb8110b2e8b2b9c6af15cde63a4f1abc50885d78a6933af", +"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "e65e6ddfae25d16086321e5d3af84f57cab6006491b1380dd41c253643b7375d", +"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "27d5a5586521ae66cd1148ee571fe1e3007476990f05c1c30e8d4951b4885ea0", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "686710df9a9891b018a6fb7ac364fdd0300a5de32d93bde74a73cd3d744376a2", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f351277351741466c4ef1698bf97ce56b0228adab2c479c0a06edabeb7da2d7e", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "97520268e042421144c5d234919d0ae34771e1b76c3e3344ca49d907536000ba", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "a392037cc44bad4450d6bd89ba30b79e33c185a3c710d6f43dcb60b8b062840d", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "709fb4458b720969f0ce546823ef1c5e6691e259175d2151ff9bd16e55402fd1", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "fc4dcd4a5ea542f9a722ff1b2a2ef7e41bd8d56be1229056990cab7fde86abe5", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "dd80731c77f4b1ee2688720df851d8aab1d2bc73f747257a379d1bdec2e30a26", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "709fb4458b720969f0ce546823ef1c5e6691e259175d2151ff9bd16e55402fd1", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "fc4dcd4a5ea542f9a722ff1b2a2ef7e41bd8d56be1229056990cab7fde86abe5", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "dd80731c77f4b1ee2688720df851d8aab1d2bc73f747257a379d1bdec2e30a26", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "48a09d6b6655b6e4722ba6f598e81800c436f22c1e4adbcb1d4cfae85e11c9af", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "9c414cd372f1dd5acbdfddbe629a71835da0af7d47c137196eb0ac6ae1db01b9", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "183f9c808cb58b64a6fe83f5b45eed64f36146da39b7391cb88be6069933a5bd", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "a87f9c2ed69544dd5312a6dee4ffb0fb438748b77c6b27f406dd787b21f79dff", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "074515a1f27e17c5f3663754cf6c915eff3a0c2fb886f2ed70a6ba1045f3af1b", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "074515a1f27e17c5f3663754cf6c915eff3a0c2fb886f2ed70a6ba1045f3af1b", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "dde86b43392852b28744618294c6e18082409676e753e495f4b0d29cc3ccef82", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cad5396bb4958050da6b889243bf7fb19cdea27c5895af971bd33c8f4825a6ff", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "fcc71ea234111661ead77d395546948ce5c30fabd601b1c4189ce3db8781fcbd", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4a9a6c19e5cee79e6dcdf5723600cfe7c4c67064b84280ca702b3699e2c3b373", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4a9a6c19e5cee79e6dcdf5723600cfe7c4c67064b84280ca702b3699e2c3b373", +"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "e16946f31a01440037330710b3f4fd08a2bf1c6ee88a27ef5c2d6a3d7341ed04", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "e16946f31a01440037330710b3f4fd08a2bf1c6ee88a27ef5c2d6a3d7341ed04", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ea0c3106e38c8f864e0a7b42673232c5f3614e6d98b8c75b39480db94f6cb888", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "117ed7d19dd69227f62b1d924aba25b0860d7ee765ff6ce1a8e535ea3eeb1315", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "9c53f034c49732e698af0a3b7145269e1e1a0bbb433d028e47d0d8c433380956", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "2db97123573c1c3a18bb16bd52c9002d6061600b23deec4bce897ee8a35471c6", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "4bcdd6ff78d2c537909cb4fcf99d71568248feae6ee94eb7713cc2dc3e9590a2", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c5ac9aa8953a2d2a71f4a84866d6e6913297bd40f383848de12ae373eb36514e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "be62178e95ebb1e76bbd80742dd22ed5f4339e0c21b86286570f20464b2bb162", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "058c2d5cf34d57735848222ef1a9bce606fdfe3173963680d995ac40b0e82712", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e959a92c7d1e733ae630c8446b7808d0639b3ca438491a821f49bb9d050f76bd", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "a7e82f78f9796d1d5a6dab60850bdbdeebfc491b8754e449299a8060f572678b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c439e12437e39b6ef06c33810967c8c3d359365451b1a25103a8ad285ee755b4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "23371cf5d062872b32e6ac0b1b653be273f3d79a7e94ce0052041d9d7096902a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "dd5ddf2a4d55b60bf573e30cc17f97143edeb9b315cecb52007da6d0501d81a4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "785883a915b23f07daf664212b474ccdc92612c085ddf47f4b10e89eb7f25500", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "eafd5bae462e2864f8396c10e7f88e63874894f1a0476f4202ede452b09c6453", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "6c55cc228aff80cda38710ba866821d54da0465f2a55eabfe9f0d88bbce69a98", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "70871285156862c2e4b81695177cbfdc3ea49a1d3f2fb6b281382b2d0231777e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "353871fb4637c8317dc2196027a9be34c26ef44845ae75a68783723eb5957f8c", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "b032745a32a41e173eacc13ca03c04e4e396f1f829313a3e67936e694689d7c5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "7cdcca9cc465cd3da9b8efdd29b94a75a578ab4423ab257dc081ff0946546bd8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "b34113239f79a4956c227431edcd215943c3d41efd403364ea02865e39a5973b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "3a5ec6b5213b84f78ce3092e871f579b065c25ff07d2cc1f7bbfdf51da418317", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e6cc5d09f5ce06b7bf6dc28da651273c0acfc13ca1ea9e9d3a43c261a8d5f765", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c5ac9aa8953a2d2a71f4a84866d6e6913297bd40f383848de12ae373eb36514e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "be62178e95ebb1e76bbd80742dd22ed5f4339e0c21b86286570f20464b2bb162", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "058c2d5cf34d57735848222ef1a9bce606fdfe3173963680d995ac40b0e82712", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e959a92c7d1e733ae630c8446b7808d0639b3ca438491a821f49bb9d050f76bd", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "a7e82f78f9796d1d5a6dab60850bdbdeebfc491b8754e449299a8060f572678b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "c439e12437e39b6ef06c33810967c8c3d359365451b1a25103a8ad285ee755b4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "23371cf5d062872b32e6ac0b1b653be273f3d79a7e94ce0052041d9d7096902a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "dd5ddf2a4d55b60bf573e30cc17f97143edeb9b315cecb52007da6d0501d81a4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "785883a915b23f07daf664212b474ccdc92612c085ddf47f4b10e89eb7f25500", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "eafd5bae462e2864f8396c10e7f88e63874894f1a0476f4202ede452b09c6453", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "6c55cc228aff80cda38710ba866821d54da0465f2a55eabfe9f0d88bbce69a98", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "70871285156862c2e4b81695177cbfdc3ea49a1d3f2fb6b281382b2d0231777e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "353871fb4637c8317dc2196027a9be34c26ef44845ae75a68783723eb5957f8c", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "b032745a32a41e173eacc13ca03c04e4e396f1f829313a3e67936e694689d7c5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "7cdcca9cc465cd3da9b8efdd29b94a75a578ab4423ab257dc081ff0946546bd8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "b34113239f79a4956c227431edcd215943c3d41efd403364ea02865e39a5973b", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "3a5ec6b5213b84f78ce3092e871f579b065c25ff07d2cc1f7bbfdf51da418317", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "e6cc5d09f5ce06b7bf6dc28da651273c0acfc13ca1ea9e9d3a43c261a8d5f765", +"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "4bd5f452dcdb5d25e492be81340dcd74185cfdd258e5e8ee913ab800783d15f0", +"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "5a2fd886f53fd5d2a8bf8300301ac394959517afd86c5d51121a08c83b3fa986", +"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_bch": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "6f1887592c158905a3e4ef72cbf039a2717f96d2da2754500880594ff82c1c01", +"T3T1_es_bitcoin-test_getaddress.py::test_btc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_crw": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_elements": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_grs": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "6691392a305ae1e3f900442b6ff46d57ee9819e76c4a619a6032ac8e975306d9", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ef6605a7264b7cecffa2ccb6aae02dfece015377f00ac6a543a6b1aebb0f1921", +"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "f829040cf23429bb2c724d72b352676836a7b94d8c726b9d56254faeaefa400d", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "d5664f0c02939873d9bfc471ae0795ae4d9f9003f740170bb14c04d8171fcc4f", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "828c97a91c55e2437ab110d0b7a7916d8201af270fb3a67aa45568594b48b1eb", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "a3518f6014ab15c04b985e6a2fc4e08d55e49bb99f8cf39c73b7f7d1f592bced", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "7da8de0e0cedfe0e6e40400d4e64a0a2a6a0c3ed7d093c92acf5132501787917", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "52268cb986a2031f5ebffabe44164b6301584d046a0d82d9da2b03cbb9e3443d", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "72c82bf4e39c70b78db95b32c3c5b44f37f4e71ab968a3f82d076bd0fe66e0f5", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "54cae7e3e6b78701c004b92b4dca2845dbc759638a7a10aa9ceffa7f6bde6c55", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "e35ba810b4ecc7dfaf8d96a49611b5cc5d82c9d48e8276d5c522b12929ac757a", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "17fe570e9d2b90d52864d5c9df5ff036af0e60edcd71c730733c209cecc6d099", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "0ca2d972329af35ce97046b293ee9cb319ad592f36a1f87cd5ef8ba381059c24", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "374d1ddf896d03d3897dd67914a83ef08d6a0c9bc49599e619afe736836bb63b", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "28fe02dbb9704cf6f384a972c160f9fba734e0bc94e08d6a52c412bdb6f7f73f", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "3ee9f04b468d545504cb09709338d9c2458bcf1e59e119ed2edd64149c0c0ddb", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "8e0f69fa322dc309e080dd1c9c364e92444ab916d8ddd451ba21b6daa69e7cb2", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4bd8b18fed9f6a5efe308552ec40df461eef30a8cba72e4a96df5ab8e4f014ed", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "77672386dc68f2290ec1fd0cd0be5415dfbcd32aae98dc5086dfea861aa465a0", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "c8ec620feaa3299d05577a00fecfe08c15aed6c417a4dd243c69d24f25b96b47", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "bb108fb2f2d438b33426a3ec6566e932844d9acdfb5997f5917f107030011066", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "7d68bee8d042fe0d2ce28d95499dd496aef818a17ec09f388f96ad78186e6628", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "4374803bf0c6e58f32b6890aea76a06c35141a96b3267f52c2c0a8c7bca9bd2a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "748399382f4b0df726942e315d617549aa366b9e27a65f7eb5638042a0a08f5d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "dc2baeec0e7afd4fead15dc0503535dbac0a4c98e5cd861e51f02a802bc8ceb2", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "80661941329e4fc46d9fbb3e62fc0b23c0139e174737ca2a3584cf346708304b", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "e6390db9ad3314726fd295feaedf0ddaac10782bd37c25b662bd68b308b28f09", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "e6390db9ad3314726fd295feaedf0ddaac10782bd37c25b662bd68b308b28f09", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "20e8a801ec75b4166bb3f0909ae0dabbaa906ed97017fa723e1bc828166b46ec", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "8eb1f6765b17b64bca762cdb4fdcdaf2e1f0f385e8fc970f40d55c4052323dcc", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "977bfc442512a5acb3a4d8bad4c2da3ae1daa1b9a09f9da5ae7871309fdb1a5e", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "80130b0dbcdd68bea66a7e100c1af5ea7d66a6a38efe5e729dad1137be5b0916", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "a6a2370cca2e718d052e2ece293ec4d6fa1ffb80752302961302096779ec9476", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "f98828ea99e0020c49431710aec8820544a69b49ece137f75c659d501a4a3916", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "fffc41d450e7ae3a5124bcb0f27c0e03d9246ccb0e1a67a5c252a7daab22b4d4", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "7bb122b58434db4bf796964348c352d85b5cbe33883a898f6e8fc9c8f140efc1", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "e75197de96e769dcd1fd6ed8f7778dfc4bbece34b506413a2ce5eed82a5389e7", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "31a6e0720729c67b3c63ebaeb5cc55d32b5ba2888ace15e12b35b5375b09768d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "738c72be9c1fc2a7cfda4d984a6df09a9776b87b0537e72ea0bb390a2025cbba", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "c966847fa975270c809818ff81bd73c60cbfc604554b27973517b2ff1e20f942", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5f8e897a8bc0670c453852248a8f20671e6bda038f9190c4aec21eaa947ae912", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "859e7ae03bf3c7f5f354fd70408b702fc694750a801c1742d554dee4c8e74680", +"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "be62178e95ebb1e76bbd80742dd22ed5f4339e0c21b86286570f20464b2bb162", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "bd72d4a44e2dc52dea9fec15d94397342f6868f653a6f1466b408fcd850689d9", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "4d5adab4966c24579cb3c35aa9415b89a7e3c7b68ff6eb46ec5e90db1231ce53", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "62a3e08d612148ec4e8f1ead57275855b1cd4cdd63faf1a8d353fb28707145e4", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "39c826703521dad7ecffb6a803620812f2be776df3e167f1d2ff9d6dfaea4d6e", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "c00da94aa0377ac3d61f19696e73d372b4666b8bd3e2a3405953bd93ed13d448", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "8233e058146d49959b97ed0029a37c535f82b67fff5db9061ee8bccd5f8771b7", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "eda6b948c9ffc8584775fdce24e50f50e516de7823d0db705fca0b0bc0ed75ac", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "5140a27be7aff3c4d8d1ec0e92c509b93f1191e30d3126cb1f9b140456d982ea", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "6c55cc228aff80cda38710ba866821d54da0465f2a55eabfe9f0d88bbce69a98", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "d8bda811ed8828f067658146887213d20e2b227045b16b3c21831447252c5ff7", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_grs.py::test_legacy": "029ddb76996568afc205ad4e8cef7f41c7222616b7f0bfbc2b608d417cf06ce6", +"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "a62ef2d4fab09545a1d6cd299ed52c5f8de827002a63e7e530d8c58cc8ef66f6", +"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "75757ed398913958efb5150ed0403ef01faa6f099c20b81a572dc4bb1f073d0a", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "f3d21ae53e8adf9460031510ab83e451cb662c10334d784b79862f39f5ee60a5", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "bc831aa9a8cae5d7bcbfe8376cbccbda1a17a9977c27d184ecac37bd72226a8b", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "983995e4c546ad86a46ff2f75e855d02b9084386abfbb89da86cf9cf3da7a508", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "2017f7bde3bcda8b466fada706f2d87125a2fa400d66f82e3115e1c6ff86992c", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "23ff322a3d794c7eba777434c475533a6ad7fce508581385231272545a39b250", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "96de918896d27b9bdad0343619ca386b33bc65cb63f1fa8f93fed95e930db296", +"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "adc710a0becbb926398e77c3bb1ebedfb2c7bb0c1b4275a9d6bf9eb73690beb7", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "f1f08b8ccacba5f7d9c156cc003c89e70560d72a642ea0d0bd4ed91a04188e71", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "d7872ae87cb232262a1118f571b9d6069fee7253005ebb5c024a7bc8220833a0", +"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "59e26a2c09737a28ed8a2a6b891dc2df3ffbca706172ce8dc10ceb13500e4c1b", +"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "57e127ca24c81a443b12524d770778b9cce67db6202824368de398afe5325ef9", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "b31220178389878db89613e1c1a0e79037eb0309c8c6019125d2950d3a098041", +"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "c40f63190d9807b7733da5c457a5dce33a465bb6df7ebd68e6699d7fb19c235b", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "580721bc08a15a821de05d991fc61d7f410895fc33867e5e4484f6b5785787eb", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "0d07797093a056a9ef56489d77941496004ea10b0295b87c8f43dd303ab7ff19", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "14dcef29ce17eed7aa524f97d2734b6e5a4c86cb2c5af106e15ad820a9f5dcd0", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "c442703d24ea807d9585cf4d965023d0fc7e7a98bd201569bf8e54505a23133b", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "d58087b6de5daeb50986fbe845e465306b4d788d395ca38b6e64ebfdc4604938", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "dbbb56d8decb96006386da6a786946d7f8dbf6163e5f627d3694b558e0bb9453", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "1016b4299a82bf3c145f369b52641db363ada81a369cf2ccad1c21e6ec855317", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "32f70597648620c61ab1f1b8fc74a8819ae4954066005b399a516cf89fd1c66a", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "296834b45a6ed21a8dcf0c644ad991b0c26600330c161bbbb430703193c6856b", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "315afb2fd72d2dc0f71be1fe9d139c5cfd21e07010b5388f6dbf9db5f1926f05", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "3bb5d069defbfeb109b9f14d4efc121654ae47534d5ebabc229b5c5dc3a6fce0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "1cae634a683fc475261274e6c765a4006032802e188321428915682eb11b21b2", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "8e51792d0d2ebf21baee50edfa2dad10ae1fd5d9fdfe279cc7a3d3a5abfd1adb", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "181a6cb76796c2008acd15c75d462028c7b6a01c134fe89090360740163b8179", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "969cdd58cbc029b2bad8cee05ce73a46d48cb765889de863e150a41bbf240c38", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "9a19eb3be89af38b068ffa97712ba3c4768874abdefbe154137b7fdf0e75411f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f47b3f137c10767ef7e8727794338506dd7986decc13d281c26f80473c3812ef", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "aa0ac0566d60cc989055c18634abece96768fccf60497a34f8aff8fb54a84954", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "1ba41980337f4307f3d62e48c411c5c2477c36ba73f5ff1d0e42405024eee8dc", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "081897004c04c596bcff9ba5f814cbdf60d0d85a14a8af3b9354f4eb622794c2", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f42500aefa3120b8cf19b09b6c961d280d8bf194f209c75a927e8aa5d1bbfe4d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "b8722c72e84d7c20b06d4bef0f85fb6e117364b3f4f7f1593a5096294a5dd66c", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "25ad2fd35affa7b4bd7f0ca8abc655938f03a238e38f561ecc2d37c17cc3e504", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "bf5672b81d9ecaf0975ea6f6f8e2427341fe1c2b7edea87ae20a7b99fcc15af7", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "d3e9b47835914100bbf24ca973b5c88e55049f33d65d6d6b2b1b94a542574f3d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "da44f156c72a550f85b2e8d35baed6b1190b19a5bf02d8f82f28f1356e37919d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "1c769b8a8d7b10b09c3f358f943358681ace65bc95e893140e13e43053c967de", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "5f5740f7c64fbf79fb907eb939365077c40add22adc209edda155b74f1857702", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "de77de61ab0cd369ed90c0fd997ef5d097e8ccf4a2f824e176fef2c42e79a8fe", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c1f144f87c2b650507a865d684a6540ba0fdc515a291b2f86d52ef7b175551df", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a542fdd4e2834fd078d7560ad0c7c317048d541ad6df60551b8a8d9c2d69a16e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "0d6fca63d6a08aa3f679aae1513e66020f35874c978c40651836e5b151de5971", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a84f83b7a923f6845acaf8b10a46ec3fe6564270552aeaf22a53683588947667", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "77c439d38559db01064b7f28bbecf64224c4f96f7074e2a88e0d3531a160f62e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "cf5fd1f35dde9b768c113a1068ba255d53428f3e6bb1b59f8931b09101c2bc79", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "c4a1164141955a6d8752eebaba9298c9740c797234d439141a50675af23aff87", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "006824cc743f06ebc7c97ad8e46f52be4c53d1201c893d14db96d128a7ae1dfd", +"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "2b893b06db0e47d50041e56cc0a204b9bcca2bad2b74a764d9b588bfa2216a80", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "ea162a0640ac0c26166e9cecc982aeb914d434ef4cca529642484ceb2322f526", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "7889b05fbc6a65887452b6b0a09316663e4438315d60ce71dd44f8fc78ecd6ae", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "19e1d02646f8244c0d9aad7164627b8c2ad4943e5db40fa7d4a8f34709771b7c", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "19e1d02646f8244c0d9aad7164627b8c2ad4943e5db40fa7d4a8f34709771b7c", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3a180bcc49338b847e8075aed7cae8b0c4856b3a1f290a7e40fde5fa7c339d46", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "8494c538d3619ad96b0fe9fe15257e4ec8ea1cbdf9d9f9e85af61fbc7287dc55", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "0b41c6a593ed7a414e5036388f30bc0d1dc49ec1ec729557af6e1bdbea72e55b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d0acd17e493fb01d087ca9637e9a6378f50bac668a38a18ba777babbe3519173", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "4466fe7430054315a412df26c86cd23947e5b402a7d7302997e3ede82958c489", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "70030dc44d2e5a0453c27fae99f342d3c6f05840c1dc16ef37d00f57887795e4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "70030dc44d2e5a0453c27fae99f342d3c6f05840c1dc16ef37d00f57887795e4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d6e3fa5f9c0cb04ec13e0c616e529607acaf521f20e677d2ee533a10d37ac62c", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "fcbe46fb6547f83b5b769b880736eca221e171dc36d738c595fe92432360bbd3", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "33e27cf4b3b5b73d49cc0e213662b760540781b7464a76227f7d86586794c741", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "33e27cf4b3b5b73d49cc0e213662b760540781b7464a76227f7d86586794c741", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "46eca3ab551dbb983bde95a8db2ada0395913a04ec893fb085eb2239ef2dd191", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "84b89428c6e2b50b1419b5982257adfa5d3cf7b0b3ced9dd43fbaa3d234fe78c", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "fbfb47d523b069861b520f3ec465b71e18d54b76b741e055bdf4d97ed4476e05", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "fbfb47d523b069861b520f3ec465b71e18d54b76b741e055bdf4d97ed4476e05", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "c0ab92045798b127b97b086b29a218589e959cd819f4d05908b64fe7ea0a95d7", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "5a8af0affe57a5baf76490033bd5836cbd745ea779678ff667e788b1bf5648ad", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "553f34c6933b4b3c89cb6b1641415f87ea26e72397ec5cccdf22c15cc63d665f", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "553f34c6933b4b3c89cb6b1641415f87ea26e72397ec5cccdf22c15cc63d665f", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "853c25b10b682e3909f734038ea78f2d6e7d55ffc9dcf4dc8d7898f25817be0b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "30d78766b0bcc38844d17595612d4563976ccd3cafd3c4bb8e23f68614212761", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "91dde0b0ba0180b0c378479ff89440ca3ee7422a59dd9e3f64159e1fdf0f9102", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "eebd457a578eece9f78589d62e5d022c658d3cf4340e2c7cde7bdc012378532f", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "f28abf7e45a7e7847ad0b3606260dde37e98e2b4ec3481e760e474e752f58930", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "edc0ee6fbea10a121be2d62b60b37d25cae13251d4239dca6e8edbdb9573017c", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "edc0ee6fbea10a121be2d62b60b37d25cae13251d4239dca6e8edbdb9573017c", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "680eb574dff5ea98e6e135ed5da7385c5d4c8daa10bd63a1b3c3186c857cdfd5", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "ff84491ed37d9143ba9861183358ea50541db8ffd5d6572b67142c3252d9c30e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "dddeec562ee438c00634347054af4d91dc91176eeeaf97f75b573d3ab0b53aa6", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "dddeec562ee438c00634347054af4d91dc91176eeeaf97f75b573d3ab0b53aa6", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "fdde0e55c303f2c1cca8296db02d6f7449f3af28199bc57f4be68d631581149b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "4fe28bb669c2875639e4acd1c51089dca86873aa5dd6a4b6e63c7d18f781f7f0", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "a3f7cb24d3a5bdf878df9a9fd30db7534f7ab025dc25879d287d3ce1cdc9510b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "a3f7cb24d3a5bdf878df9a9fd30db7534f7ab025dc25879d287d3ce1cdc9510b", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "8264534123d594c7654a9522e328e623f1d42331080bb6ea972352958ff58f25", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "aa14320ae955c74ca739be9af433984f373104552b9d681d889c5e804a490def", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "86187fe3c87eb01e5146aec8063a0af7872fb4d18e080377a03817abbe04698e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "56845278b0ace1afbbf2be82ed739350174f06149584348a3ac0c5a742e25d37", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bbf085533daf2689b889722f519fa0517de24a6a6bdcbe18ce317eed6601bfbc", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "2b46264cdb546a623221c7bf3d63571ef08c8a09d1db8d8602d60e82da007287", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "83ce865f0198b3fb6e4e0832829798f5376dc813812602b969824e8b60496748", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "1a82f1e1ed6c5564c3acee6f2dbfd5e1c4c838d675d8bccb3983e6eab13f62ff", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "3ebecbcb22c51e5df810a6e35008a0dc7f385261b6ee221c7229b66499921311", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "da5ff79caca2ff9eec626e11bad898616683a4d65d32593e1a67c2bef2eb118b", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "dfad8f8a6ee580e61959d174fef801f33bd9587931adb9b75886f55e6a5c9216", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "aad018b0a0f8c327538ca18dca84ee3f93d0c66d85531d0a29011ff64c974764", +"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "afd9b949f6d85708e2ef177b13270ee82177f752afee8cd6325e410b300e79a1", +"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "afd9b949f6d85708e2ef177b13270ee82177f752afee8cd6325e410b300e79a1", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "bccf1091c7d6e769d762dafae1f6edf1b597862f71a139e723cdf232de3d5295", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "4d2acecb4b6feb9c5afa5924d2306809c12f8c1f5c2f70144dd55d1ba8f5018e", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx.py::test_information": "b07836f7b6ef7062f20fc19497f47ef885b1dc6495660252610d6ad4e2fd1541", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "53c8b0826669a7a6494cb20f5362396d6fe1514e8bddf9d0d77f3441d75ee6c2", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "1ddba95aba04c22b68cd856d409a517f9ddfc6d4ee5bc45aa41d3e12851fe3db", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7a01a7d020da5bff5bf472172c3f7f3e34c6a030fc942ba85d6208887f45b2a8", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7eb04408a774f5ec1dbdcf3ce550775b6b1a17377838d4ad1c1b5f3233171c9f", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "04596c73cf6a65ac787d5dbf4ca94d19917b8d7d28f5e1578872b81f4974b39d", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7eb04408a774f5ec1dbdcf3ce550775b6b1a17377838d4ad1c1b5f3233171c9f", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "04596c73cf6a65ac787d5dbf4ca94d19917b8d7d28f5e1578872b81f4974b39d", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "554a0ebb7ff1fe611dcb36837c365ac4a2609fafabb487fcc16e471a6924c12d", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "780331d3d924b9ca725917b29f15716334cf8a2c876a5e3c78b23c3675460ee2", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "9ff8b75093c66692876efe5fefe9ae716271364ab433ea33c13e39e2b9a83996", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "3394015fddaf07df75710288c106a99400a1c3eacafd71cc3a35bbb9c1bad089", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "86cdddb8a65fb9b31888355535d881c4edeaf167a72c9f839d0738d2f4f18a71", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "b213a91ad69575efd285d66f58fc5520f72b12290f6c62b685692a994441a8dc", +"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "867fb95e46e45ac42cf83258db683a650a2d02cf3d404611ce9c900c740c2c3f", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "ebccdcf606b61d74f936d5078dbb63ae50b01a2fdd293ba5d7d7585b91cb9b93", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "68d12c95f2c2ccea5e0111c58ec5a9a2fe92c4deb36c59d65f27737bf6a51342", +"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "458c61c7e33b6aa32bce3d07f2dc329983ad72e18a7702e60ea7cd416c50cb11", +"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "d6d6e5c70d9d163178eb246886d6a75809f0d3749951e1c0c207ef7b54539757", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "7f86859b8a7d4f46637f395e0302f92880584234a29fb972c785159df3cf630e", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "9665d14997a5ad216285afb177829f9c5ce49fc828880acfa0e5367ac6fb3505", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "941ff383b66be24da69d46c09ec5bf48912d14e2c47f6ef8cc48932303b26f40", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "afd9b949f6d85708e2ef177b13270ee82177f752afee8cd6325e410b300e79a1", +"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "5e353789b343b34f75673d28ed1693020cc93ac1430314a41289520a9149f499", +"T3T1_es_bitcoin-test_signtx.py::test_two_two": "044a054ebbe3715d952e68d58d4e91af7abbf3587140e204aa89b444187fb4e3", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "867fb95e46e45ac42cf83258db683a650a2d02cf3d404611ce9c900c740c2c3f", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "f3736030b93e4d6684b9d92b9614e895cfd3b6bbf582cb9f292c7a3a77e16e11", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "3c5a8166615c162f2247fc941a4f107c7c398d21284a8017594fb6a9a6b8451f", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "5cdff9979f27e8ea902c8df95f2eb95300d909d7f6ea72c4e4a805393021218f", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "867fb95e46e45ac42cf83258db683a650a2d02cf3d404611ce9c900c740c2c3f", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "e0401eeaf73672c74b2f38ce2b6bf8e0c3525d98aea4e8bc1e3d42892db9d749", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b6ca96163d1394837ab31cddfac6ad30314280e6edde86693bbfce71d514ae09", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "f17298653e270c2ab24451e20e27dc5ca983e5cbbaf22e9e66cc80166caa0c2f", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "276a4a9f3154cddc285d1b0986750c07eccc96ab3a920b416dde096ffd31946e", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "e0401eeaf73672c74b2f38ce2b6bf8e0c3525d98aea4e8bc1e3d42892db9d749", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "8b682cd5c2fdb4ec503fe057e18f824dd6f148e6c3f5e4dbec30aab465620576", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0bb185d2eb528bffa468641a90d0616cbe4a4d3663eee191c96d7e0718d50261", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "3beb43dc9b7149b190abe4b993243d95d1e2b2679a5f881f72916a1d17a26107", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "a550f07c8fb006a832bd0efdb1fe9b21819f404fe1586bddb54933fef86fe242", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "52948047d73e6f4eb3a8d8a5a1de8a6ae7c558f94e36aaa803facd4235b68f86", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "e867697192738e951ca790b5d023c978f7c4693d598ed33e58a163f225e01a18", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "4c57b6df2eb9fb386b3f5870cc0ce1bf197f45c6532621364768653dbc6e0637", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "22be670fc40d29a48d35beeb4bd5f92e04c664277c760a436bb3e55af2a436b5", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "b80eb0dc4866ac5f5bfb981459862315267818274642ceec1feb17535e5c2c5b", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ea66b207e6a9b96d083481f894afb7a839534e47c555f81e759c8d4b9e6023e6", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "4b1f0763ba1438cd3a2632b9233de30d8735a850bec462272b4a74bae8c9ce12", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "1a0ddbebb931ed3b73f6842f2608be4d92db20b4b8a11e8f6918bc626dfee2e8", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "28fc508b400bcd6d3bf50a65683ac2fa6e96a2cd04e6e1aae6e70da45702d9a3", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9d13973482e92f90e9b5921c5034399fb345e38bca88dd90efb3fdf1838e2bdd", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "28fc508b400bcd6d3bf50a65683ac2fa6e96a2cd04e6e1aae6e70da45702d9a3", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "9d13973482e92f90e9b5921c5034399fb345e38bca88dd90efb3fdf1838e2bdd", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "8e4d9f9f8e90ea4420e899d4f779ab73849d4a3ba7b7d11953977ca91b65cef0", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "1fdfe0d59922b68189e8e9ede650f75d0a4a1dbcc4d346e5c1f3828405ee4ee1", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d59c1699da759129f99e60adcab6ff4d3cd4bffd26eb7d588bd8423aeabb0808", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "16c7cbe011d6e0d4ca9f3ae4a8ab61dacc8c0f4a31579fb6097973b9af24f4d2", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "1b51ca08793274f6140ff8daa9ebb3b35be912898242f7a3ad47078cb9c0b512", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "2727e42e4a988329c5bda081152b85271ece3c2c889dc50d3130e3acc7af8930", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "7a5343ca3c4feabbefbcccb26338e0bc334a3338abcbc777b729fd1f8ed16844", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9388e67b8bbc7d3d4665e747cacc672256ca06be8c34e0f7ed938bfd70226315", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "483762335c04510b3a353a3b8ee81f489b2608f10e391e6a6ee186ddf384c88d", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "483762335c04510b3a353a3b8ee81f489b2608f10e391e6a6ee186ddf384c88d", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "483762335c04510b3a353a3b8ee81f489b2608f10e391e6a6ee186ddf384c88d", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "483762335c04510b3a353a3b8ee81f489b2608f10e391e6a6ee186ddf384c88d", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d1b2f49eadf6e44f0f09deb110719323476e6d6b019a5a5fbfca9487cc938ddc", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d1b2f49eadf6e44f0f09deb110719323476e6d6b019a5a5fbfca9487cc938ddc", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d1b2f49eadf6e44f0f09deb110719323476e6d6b019a5a5fbfca9487cc938ddc", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d1b2f49eadf6e44f0f09deb110719323476e6d6b019a5a5fbfca9487cc938ddc", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "4fb482b7e44a5a65a189d6fc785d7d0a1269d8639f721d622383e3aa35732a8c", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "5ecae74eb89703495ef901b55704308af2a8d7c67b224b8b1c26375f33120734", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "5180d8fcccb291ee2fad50c3e7411ab719dc7256eba952c8d1cc67477e6f4d95", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "5180d8fcccb291ee2fad50c3e7411ab719dc7256eba952c8d1cc67477e6f4d95", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "32ccb30ca6cb06f32bd323353093f5ba1ab30a70119fd73a0009ac4cd7173c8e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "b0e16f673a286e37b73a4cf2e4042750d24ed43b08e010e9113aa90279651d51", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "477fd209f2b58dce88619a5cde2c288bf1129414f3bff0ebdd0cfd96092ebf9d", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "32ccb30ca6cb06f32bd323353093f5ba1ab30a70119fd73a0009ac4cd7173c8e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "ae2b5ca1eb554a268e03b913a9d6fc9c697339a96593d3f3c4297436bddcb2e0", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "8b90b6d73ea798d6e4ce97b700e7ce782f151fc0b53672d22d12311e0738c795", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "8b90b6d73ea798d6e4ce97b700e7ce782f151fc0b53672d22d12311e0738c795", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "8b90b6d73ea798d6e4ce97b700e7ce782f151fc0b53672d22d12311e0738c795", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "ed7c6d25e229fb92ac8ef44f1277441382c4ed3d5f79f3bcd01c4088ec687ec7", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "8b90b6d73ea798d6e4ce97b700e7ce782f151fc0b53672d22d12311e0738c795", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "c72c02d6b3ce4edcdea5e682dac832d67372778e4bd1db08983dea5598ccb25d", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9f1e2a61e146de5cd9bb8b737f65c2967aa5a56a04f4a355fe17b1d532469aa5", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "91c13b7ad3336668a64599fe9c92a8b1f15d03d3197cf7ffe6d41b7e9598fe06", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "016e16d7bb654e50b7b44833f3d06af9113f8af776e7ea62f169c9e21a129325", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "be31f34883172ca2fcec799f403acb5362c954902554d7e22543751d19096798", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "178b02f8129c4a5e1ce087c61eef02972d1d483708f067a8483a1ee5dc6caf8c", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "841a2b5791dccdb3caa9b6b779504669c9ba3058c944360b0f3dfae306616caa", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5d26dc015f885f25e7ba63b9862279310010d1adb99e6e156446210d8b8fa1d8", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "9a1845928d9e612f6903c952c921d779314dffd3ceb1f13d5b9fe0bbaa317288", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "7249a0508f4dc1a752fba739bb7ee6d9cf2d275e6da266d2150799d83b6ffe5f", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "6795514f65e29df994256c343d5cb90f0de14e54ec8348fb5faa730b018e6851", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "5938f798778e2e4a554660fff85eb22ef3c655123a140452571b4f2e4e797dfd", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "37e05df74d0ce7e002895ac115c658ffd901152ec3cd627bf29388c346cef3f3", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "7f65bc5a07e187f4f1531b0d4ecd1d99e20b5785a3a01fc31fd79fcb5106289f", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "e0401eeaf73672c74b2f38ce2b6bf8e0c3525d98aea4e8bc1e3d42892db9d749", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "27e7ccd9323d71147c4094c61b024411d3b52e4db2fe858d17d74a393263c96b", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "71a6d7ad7b5628ceba6dc639266c5a23cedbacc156964cffb2d4351fa57b5f80", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "02bfa52834990aa215bcc2217b87a8a23066f6f62df82aa67415d6febf17dbbf", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "e48ec1ab8b30472564f3525357aa79401910c5374a56beba16621dfea15f1f76", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "edb8578b031fe4339406ee2c4f9eed675b3875e2bf9d49ba72b04d129751455e", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "b9411b65251e5dd557afe74b2b76f0280af3f55e673b6f48c8014df14a1bc73f", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "fb82b274bb1784a97f7e3ea617af8f9c2e44d929f9332ab30c691028b704cee2", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ff0535334fe20a13900687e45cfd2dd55d40c2d173b68b9a62c2dff2a0aad093", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "1553a7173dd6798f74255a02cd8d69ce96394a3bdb5d02af8ce2b0423e8b8ae5", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "370eb9126f3a8dd5e545ac218dbb0d3ea8e7c587360b2d1c236f47ef7f68e4f8", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "5820197cd8d51bec41e0f977218a043f79c203472bad966812b04b296b8cbeab", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "96bdb67ba6b79b861d3c1480cbdfb24e667748c28ea7990a33f8f7e65b7aa435", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "bdf0f5d214a996373e6ffdfd42261d90ab463d77027a488621e89440bcf9c67e", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "c6e8732abe2f3849162b9230401585d04e7353691418ba810475234a039f0ddf", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "51dfa28cb9fa3adcee36b66b6a7c78afe96e5ec5a32f5cbd8e327b26cce433da", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "88654f42e74d8a964dd1b3ce6e30dfb2e035c296c999117f06a77a4b5f585e56", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "183d50f16e8c76d3a080a399abd06cc295970fe3ab48c5818f7a38dcdb82c0ba", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "4d3d0c5011c9bb57ed2a15f91b5d7a53b3be07350f738a8784261abb8b805380", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "c1f2635913ca475c1fd728a0ec9bc6616f9c51a697f0a2a6a3b82768f34b248a", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "631eb9cdd56a030879f86fcf84f1a230450b2420de25d5e2df332d44995d1289", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "2013351d56c3c049b9b3c0ab9dab716b90545e39f2d0f31beddfc5e57ab0a394", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "cb2b3d3637159a3b5fd13592cfb7b7fd6e45c4b8cd10213ce75086e9d020b7d6", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "9ddbe2ec5b944605dfe10a934dd40262c504e0b5f3f756154a2e0f4f83e8902d", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "e2cf79c8d22a44d1c42cb0a575c8fb77d48a2c9302a219e979b37d1833796b79", +"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "69012e7c19c7096a8b6526422a4fc9d2aef25005f97c6a8d71c63473f56eae4f", +"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "ef39077188b939c8503bcf749ed14a448c261b60ff05be89f638c0aeb5a22200", +"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "f1a4a3ca0af0a8b59330871f1669e294ad3c3ca4e8406e97ddf8f91849f6d44a", +"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "1bd5ebea39bfd825b3098f7d8743860d5a74d97416e99f6f74ca8b9d030a75a6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "09202fe489e6ea2a6170a30441974547cb0e56583784d419e7166fb80691867b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "6afd8a4fbf8682ea280232f76b77dcf27c8140a14413bd12e4750c1e3991465c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "65cbfbbb0e0311155c6859a6e6adc569195de73bfc42b470cf26433ca5bb0097", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "32f41f30cb286fe2a6b52ef6699621e35d51974d6cd561176a7e37b8037b12d7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "0f5d5f1291c86d5ca7377092016b4423fd946efb8d10558cd68b5263b727557f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "001a0572c280eeca09ffe9b3c161909d4e2bb4083e024652eeb95669dfb0275a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "3e14f653946f8a4fcd55e84215f5d115841e01cf61c856760687e0cdaa5c62d4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "04c57b03aa4f944a34fdb90c0b1247802e7ad3b0d9757f231bcdbda78c26581e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "84f04bb44bfffb9fbe4c62db8686ccc9eca4e8f171828997aba54281b873fe57", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "78caeaa54f79e9d469b156e713a6e06c3c6e26148c3b11c81f9ab790d95950bb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "547025ab3bf8f096805a3e3ce52426113b369a6b501fb4a4c19752135658f823", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e61f23f52bb385c75bec33019e4f27181224df0d8bf66a82e32872bf706e6802", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "b2c9702a82b75ebff0f45098ee830a08ba0cef685120754b9f64343ad36aadd4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ced343201e87906337bd8664bd95b78d79290ac473e8ff00f4ce1d563879eca6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "b3d18c527b2dceb8b071e1851ba46aef7617329ba8e95cc15a537feebfe8b42e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "b03c9c906c3c29fa271e18049236611d513453cfcb6c428a998d8086b2118e88", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "55b9fb59c228aad186a117a9d8ae55faca7294e25747a98c567d465575474786", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "48db6c4c518db9e496832bef9e9e979efbb239cc52b6fe264b753266a4ff0415", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "0ec81a89deb5742d9ab991279297cc82cbec9083f7a1839bc2eeaccb730376aa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "bded96064f04e81511afc2905de585c8c91f03d9dfbf5be8c1fe24e820014c25", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "6890d7d521cadc5594df80ab52ab1ae0b985157919cdbb1881ef65eb92bd82bf", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "92fc1d5e12c9dc3984fa94c90027c10fc925942f48ef969663153ac268318962", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "b6dbc4e7a53442ee4a803efee6baefd4127bc75836163109f86816984e4c238c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4573c2f868df3ae899f5bc1c10d8c2612e4b932100105238cc4397e84c0af694", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "080e31ec1a97913d141601eb61aa0708f3019bae3b4fba07c2446a3a319cbf15", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "fb9efab84c47d1e67606f5be2966405826575000afcab96f726ca26b1b55c2a5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "a34c3d11ea42c761b0cca6ff97ea6ac5bcebce798dfb23bdc5a2f0f3c6c752af", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "1b48d82ad28a7870814e6f0428046f060ee98997c7563b1d2625757ee1fcd9c2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "7af89e078754e6585e2ed73ad1959acc9dc61bed3db0e6f7f3fa49e2fe3f1516", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "61e2108a31aff8238b5681a10457028d8fc9f489cffd79386ee938e7f5d711b8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "3f0b8c6479e6596341c6ee65e1caff5ee6b2a9aabdfc7ba55f0ea292ac961da7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "293f9bf71625e6f8602728db9524400cdc9bf243a03e57eed91fd8fb0d14be5a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4e74376e036a6f95eaf2983043bfff81e3f4063d0fe80b4eff62f37724cdc002", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "4455a87bdfc0999104c2cf0777f4daf7a6092b4275c3383a70c516303c0621e3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3180d9dca4f45d08d373de3b8768ebaea12cf1db16bdab518f313b3e224a44c0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "69ba280c6e16cd26740079d4ec54cb1e4b8038f30139c435bef718b8aac16eaa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e2fadf180048b7657b8f43b4a9834299c97e71d6a1632958008349f3c2f945fe", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "434a30d769bbd462e9ccb19b767f5d387dc5a63f7f00b382f137a195136dfbae", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "755f98232346df9d73a9615d48bb3305eed727916037667f790ccc827800828a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "bc14391453764cdee1477bf91f43a638bde901ef966180b9bb82a5b5bdf26b51", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "635c41856814e0cd2e399648be14230d38d57dce3be218081bad80b9d0997e33", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "1866fc86e4bfa15a370249a523f45b422efb8d85c327ac6c20f8d1f5dba0e60d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "8dd5afa0af0eb11d2d99e5eb622337c4c703107b44d5859e55dd683cff042735", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "84c9e8ad55a44fc8a39dbcdc3a30610bbf3c7b44057c2427ff432ceb855fec46", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "cc43a45b74840758ddfd75dea4b06fc2310fd8b0e26f0381eee8d252b0c9ac14", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "e0c68d7ca42727ab4ab4a5e99f49ac68852e844a35df25ede15fbab0fd09fc97", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "40e7cfa70c7ce3bcba1541d1d0155d968b4631e74911f5fd4485309f1c4f4a38", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "26a4381c332cf2e3fad032f417db2dfc1ea0c27f92cb53f40e65036559c54074", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "1d4de82467b4fa230bad9ef52adfdd1bca018dc29e95fb0c30f74022ffb446e7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "f34237b3befe5de31cfe0de692d3bf91f57afa235c0d071ca2b93b76cb6e2dab", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9916a53f3f84f386ccccb250c0b249f26242c92ad794203e5e194a4231346688", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ef749b826bff9b6d1a87e97ace162f9e853a61423f2ed2113070e908da73079b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "31227bc5117e4e8ea02ca09b397ad909469e1167661657783b19ece13153dc99", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cefdd0cdde48b0d911fceefc97ba9e0d37ddb8d13edb3c64fc700d0191ca86db", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ab46de3d39946abc0d0237d6d7b0fb5ee0e8ab9992ed1276b637a23f1f5f4e16", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "02a3504a52edcc917ad60591bf517ae1b1da390c8ccb72cdd0d7bd761ca2c701", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "a31411f0aea4b5e85b8a64191e7680f990544fc9f79f5c0f8bd096a4b1d04de5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "6ca5f4df0ae30b2818b55e9bfdaa6d84b64191ce5ddc410e043bf2992ab1d661", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "d6aefe08c60502fab4109f7a8dbc870aaaea74f22a33e92f47beee4f9be03c0c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "d5604a0c47ffcf79826474b322c924c068ada47142279e253c0fbbcaafc4fefe", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "23a78af761b7317215b91af6e3e231391535798164c6ffa4de70e3664d2a073b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "c248fe42b05cd914f050805a42548b636aa657b236c410028c7571059153ebd9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "b9089333bb851df2990196c1380733e7fd2e47efbdcb067910d343d6714390e4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "6d9615e4e1445a15f02b3fc36ba9ae05ac6f13909d3eef946d01d241ae4e3f0b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "1d001d154d89a97b627de9baa4b5e704c112a1db102164fd5331bff7c1b5ad78", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "1dbb1cc981c9ceec92d5e4b83d7b05071042785670706d639dde536bfe7fc771", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c95efe1913a578e4505b7cffc3564f7654567a4faadeff5ae4f044ce1aa34e1a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "675fe2a7af7bf2423070802e4bd1939b5e658e0ff20727aa264a5c4cb554b622", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a20d881272924c3f4d3e9757768b697e7b91df6a75e743434243872231a19f90", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "07f7695b9a17fe03b882b2db04022d9d349f273b86c8f45e82335cefc9b16ff0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "edebfd1401e4ca928a09435120b968a9e11de011927f14893f71d98778b6b91d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "400dc4706f66e67a8d1aa734207c51fc311f87bfc7a05e760ddf478e5ee38027", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "07794b3c5c672c0e88c4b7c33d9b586b5b8cf862ecdccad789aeff1e8e1065a6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "c74e37b07e55d1f5d5010b343ed38ea55bcb88a626647601eeb45a4a40306639", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ce45bbbf51e8fdc1a6b1e1128803f0986f067a69f9d204453a539197da0fee56", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "67717a3c37cc0d5b5d323e9afa30f820e068000e2472b48c28bc662f745bcd70", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d2ee569098d1ca5af7b6440e435a631ee923b41290b1d850678e5470f1ad5952", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "137cb289c299517fae9555bd2f82904af5ebdb24209f32181836974c313ad43d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "dc64b5ce0d8391cd1277fac5c8be9b4a0a24c0a10e090375060569a26df421e5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a591257bb2eb61d469601fe31c54d1cbde4f672cb60c674da0b7d8db47f05437", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ece85b2c3bbfd7d112c8062522f99502122d4a4b7e2f8b317500622347b2f399", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "edc35c389b6262b827f595b75533379c27f977a4f3310738d8e80758f3b6356b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "a52a84ffb5d5a0409fb75c9d7ff0ef925d936897cbb96365d067924852d72c21", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "99a047fc6b6ec75de68255810f365abda12a1808152dce52330dcbbddb38d19d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5ab20da00fa3a1bd7438e3ed72345d6c548848262ab162867934fae2c644d1ec", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "f4d6a5c996e8b3a67ceb638e753e190699ee40252fbc5746d0cb84f386931823", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "88abe2c1c33956d6a0bbbaa68111cd34178ae17aaf7f3ae78be5f6bd267c8deb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "506a7506dcae391fbfc33b4a51f4e056cf4efedb3821c9ff699fc9ae6ed4d899", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "7834eb281c7e0d92d8e3df5cc354d6eafa761d9290dc2450caeb7017dc79808f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "317ff13ba8fc94bda8ff1e627af1d8c822f26aa76654ce08a4c0ba29e721ed72", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d700942cffe52ca2e210c3ff216a42c14cebfbb47cc0ba0134faa5fe1de43c86", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "650ce87e2fd436f551152b21f0570d7a32337d983952c4d3b6b8a705d9e76bac", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "dfdebd8b7bbc45de3a27dfd3ea249bc509e6e7667decb499758239849bb38ac9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "a411dc16e6b227ee9bed1e82e67699b4197425f1b3245de2af5a5464c5db5d8d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e724b58073f579ebebd0bcc1b852f810ca33d9ed17c821f4d626ff1ff2bd17d0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "1fa195fa8f63ec12e04e6d0b7b2ab3a3887b9ab4f09255486b83ca09c8ce81b8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7e828f6b63b82ac97b014e1583ebf9c34c34c11cc2508c8aa58fd3bdb150fc47", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "3b939f7efdb567d729fa094b2497924274b7a92dbda6cecaad33902ee0ab395d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "a8f288747670600e22f100c54fff1d3dbffbe5f4d8bd36f20a249069fe95f6cd", +"T3T1_es_cardano-test_derivations.py::test_bad_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "a7a4f145f96a55f5a3e4184e49c2094104227b9d3a3214c20df7fb34001c519a", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "da61d144c176763f0b184ab0a1c1ca319b4f380a3894336b994abc1dd3d25c7e", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4096301093ff0a95421108d77156d64457911ef7dd41da5d1766d0c5bb9c959b", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "76ee6f64d93412b331f9d4203b27e96798800108e373e5eb528f9b7819a3793f", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c28c2b849d9c6a2b61d88ad692a5b943bb5f1e3efe9a7499193b18d7b477e1f5", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fdd25e24a692fc058e8ac02a9e04ab39a3a87c396bb0108abf71487bcd32eb44", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "befe8d7a0e701967415d956b0f5f67266c3f3d5b48b79ada7eb59ff06a4335a0", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "2fe719fd1b0924fdd075e0dcaa1fd4188588b9cc6b18a443898fccdd896bdd07", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "573cc5b42a663576b20852ae5cbc471769063a463bc40805c28a414385c4a34d", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "89ce94c57eb685404016547f705a2fe0293c4034e855ebeb7b92c7b1b91116b1", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "afc5e9ece7c4f2cd74808f6bf58808470968e473c208f015e89eeea89b634cfc", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "46dd0e092cc31ea2da7ac4f963d5811697c2e52065199db4f73ea40a43f96421", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "a19fb6933126a40c25e4a7f7fb4f9174ed5b2b87538c1c059efea444cc4d747d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "3d02782d96aa768fa247ccc5163fab112e45309bdd40c74c6b3d83b9445a32dd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "208c16a5c3180a52765b27601431ddfc4eedd6ac259ec0222ea94947c9c9cf0b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "2b07f5980cecf1f22e0fb8ce14137ffaa029ad72cd00bd02f532cc6cc027e86e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "6f1c92f94e601a260f5b51b5c85e604b52e46d589c84c3542d686f952127df61", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "78774a9cbec51b253c218fac512a62bbf4d65e0a1c4911cce687b2378dd11923", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "bcc883036b9d85da5ffcb981ee082f8783d5b70fb637e45e3b866a54684f4035", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6183e1700d0efde1d088642375d113cd2b39909fcda555a42db0daa0ba4ba1b7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "16f1ed84e87db95de5924b4cc5623f64ac99c312825f20583adbf0f222316825", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "83ff3ade314f3242394a81ff3ddbdc4b3cf8999a1260578823fbb52a4760b59e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "ff9a75c957004466c40091ef17b81687930c8846de294aebfd4c2b63132a79f8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "d3a0b5519e776c74cdee4c4087b0689719cf4fab2507acd970534b1e79eca8cb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "c2d4c017814b8b6fc74b54fb5ed97ca935c38442e333ea52c56a52d963e9cffc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "c2d4c017814b8b6fc74b54fb5ed97ca935c38442e333ea52c56a52d963e9cffc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "55636167e69022fab0ec532bce180620b9fa7f8d81518427ccc401c7df8b9018", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "551c4e4ea3b069a6d4deaa487a755ee726415734de8e1c9ba3bb66ea1aab07d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f726dba34bba626927526cf48444789757a94aebe80330eacf9c588b4008f713", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c2ac7cfe097096c9a1c20382d5b4c176cc819836e0c04731ad6f8a127debdcbc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "16f467b8643d91859d7979df97eb511a392de06554b6a0163283a7ccbc1df31a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "7c93c67aae9b4b05b77a59e6af0e4c2b9f304480f310b3415af10d828740b16c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "75aeb7e3ae9ffe25eba83d5db2cfefb7ed1ca57098ad2df22f32cfa6ec909de7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "7f0773f9a19cb58841f6b78f5c37860f985889f35d84fcf3f43d90b281af9337", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "54856b10f1e00f93c843d0b1a238f651aafbd9ee2b5ca759fce7bcea27994397", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "16f467b8643d91859d7979df97eb511a392de06554b6a0163283a7ccbc1df31a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "7c93c67aae9b4b05b77a59e6af0e4c2b9f304480f310b3415af10d828740b16c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "d05bedea99e9405fa13499c19677d90142194a0a7d7879f38adae7a7adc8e447", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "37edb426f88aa7004024d0999c5470f369e709049ae11ff146d73a8a49f32eba", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "2c2f91e82f01acf0e962d108cbe4bacc70940cb8ba64ed17e68635002f87710b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3b827126a4a03284c610978fd0d2b2189aba0d6499516c68e5500334b907b3ae", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "6cabd176818b1a7523a68a71e854ae1e3372d8b9bdfa9ef6c26e77caecd20b6c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "f5f31a30454e80d0ab504f69a1d2a6e684fbea6dbb8171d442a3b1676e102474", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "b0e1661765450effeb20827c69fbc067e4cf9847f398d3c2cfd9ab12eeb02df3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "724806b0423637432961111d28698e0d8cc72182904bdb8365c0d895a6d6d6c4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "55659c0522e085fbbdee3945f0b6574ebe5c4056933f18434d1cb02899346e30", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "c45830c6e364046af4b49be50604353d07612928a276a7374e712866c15d22cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "50a5048be22a6d28c30f3c57d6c49a6188493bee427d7aeac8ec810235b3da2d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "11045ca8cdfc8fde6d5e140fcd74dc1f2f121a9d8c01313c01072bd45e4d7581", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "9275caa9f1cb6c3990fb45aa6fd8499d558c7835738e566255880ebc69b1fac0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "d6ca6e420b73680bf9e24f34184b6d6ef9c9634dfc332d51ebb9fd901e3ed5d4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "c5dff36dcddc7e4fed47c36f99e40132e03bcd01113e7ec78eb1ae807df05b14", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "5ccd2086636c50b38df98bf9f7a7046a1dec88e9ef3038d806bd77fd3629c754", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "45c200255f8c86df5d0cd6065d825909294d6b8e5e69a8a13b73c3a3ee36127d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "273153988f07b3e9c1583ff14b28ef581b4f2e9cdf36cd9fd34890433c7ae3de", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4f9d954a79ef9e47aba426b28b4421ae5da6e30b4ccb28a4aad1728c8c716f48", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "b9c76877cdae856a71d16855c2953ca566f2cd1e95fc249b79c2d67798e93e44", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "49875a9a77c9940f70be6affb95c9d5dfdd1f59301742ad34963f1c527ba5087", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "b498d8fcfe1f31eda96b731d3335c368bdf9a54a7a1853a9aef1b229fca910f4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "547bb72f6ebd63836421d17e1af55a9805e4fe7dec78f59702e2e77000be5658", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "8c822d065222d1e4f63726533bc04868706e5edb76db6d23506355905ad706ae", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "2c154e69110032f3ee9ad958afe698c38297db17bbb4c8336355208f1256f451", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "b64f1ae5cadc1cc0ccf2c619d5d1e24c5cacc611efd266fba8fb43e485e016a6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "103d66a45984827e56ca15c8bdf8c54ac5d7d2d26a83620a2b2433d1c572d721", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "88996d72e11340f36727f2ea0198ba1ffb9cbde067f7fa60ab6e8cfe52c1d0f2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "707ebcbbc86f4e1b19902d108331f634739855b9adc18be93114440923656a5f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a0e32fe4b9e05e980188f279b3488c6c3074ce8bf86d190cf74f3bc343a72643", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "6a0ebfa78eef816c33c04c3e340b161d5b557045f11d128f16e5ffb458cd00e0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "139514c754bbf2105f245f127089b5e846002f78cc3928cda2bb7fe5ac730f27", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "8a4570de7aef28eca3cf3551fc92962101eb3c1add74036984ce32fc0c2bff58", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "b35f9388e94d03e96c9aec5318cde125c3b4e4057808ecd6358c56372055bf44", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "3cba5c8215a3256309a9900916abac56eb4813e563d5aa3661cb9d073e6045fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7e12d255fb2aca4a8922b07d8bce567bec12c9b3a92303d03be49e47010f2148", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "05c0169692d4fd213bb9eaf1f85f53918a4b8f049c25c879a1bebdfba8521937", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5fd7dc286e9965726c53cfd2c1ce17447f234f59c2f69d1e88de6addb1dc65d6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "82c93e96babcda57c8ea41e3ef419f88e6e4304e4a13daba5db993dab2997de0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "43695d30e49f3491bd967da1f968b9be5883beba8101b1f62cf1aa62dfa114a2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e21821bda1d48e042461c9f33bbc3f33683e01ab39ecc3bdc29dbabada0e63f6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "74b7fbdf01a713c83a48cf7c55ec84779b6b8f581fafd2a3e7d7aba2259245c9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "2701cf377455dd373316b34dfe398ae76c980dc7b83c6463b8de89ad2d599cc1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e6b39c82767ec34bf5e802cd649aba2252fc8af7e5c3a046f774a5171878cd0b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "97e5f787ffd09f674041eb0a665b3c920cf64ddb9a099223bc73317ce15e9f33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "018a1dcabd3836873cf3835507f2713e8ab4ad3b4a79b51cb1666223332377eb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "9fe1ea0600a3726c35c36fb9eb6b3e71c96ce8eccfd3309b9ab38e97b71521b4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "e7663e306967ad28fedab652ad3800905d39f47506cb1a5bf40fb4280d075899", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6c4b6cbd5435b1b892bd2a552bfff80a335183e02c0a5a35c089f1aae2344980", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "00e0c05170c9be163e6f1039d6ec4c42192aeccb2166d646e7a2b9a30e194e21", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "2606cfabc909b3bd06697c637c7a65ae108b2db3f88d50b989006ac67db9d6da", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "c46f41fe208a0c1bae5f1ded3776e284e01b009fe144699d669b37ddddfaf2d5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "c46f41fe208a0c1bae5f1ded3776e284e01b009fe144699d669b37ddddfaf2d5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "bf39a981aaf8c48b61ed0e60de75278e490d5ff041da61dfd2cb2db681175dda", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ea73b277ef435c9f0a80d07236e9a251245eb886ccea2afe8d3f07cb35cc5e51", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ea73b277ef435c9f0a80d07236e9a251245eb886ccea2afe8d3f07cb35cc5e51", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "24c4744ce98890f412f8ef0018150e71c56e2c1924c575ce59720b7171c04888", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b314e0f1a0412b375e1d6f82967c0f2822be9528a841dc2dc6e3a45d68270337", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "35a604c3e1d7a51aeda4e76c92efddce2ee25561967ae3e6fb06ae57afcbfb66", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "d45642b6118eb947866ea84769b3fd5ea43c0f30bea3c84aad787b4815160443", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "08436f0095a630bca6031abe5f73e6eae5320ac43021d9509caee838cfe316df", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6ea67f3339219d6d6b1cc60b48a3cf2df9beecd2d6ea072f239073b75440a284", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c9fc6179c044c89afb9cc5256ad199a8921c25828a1028fdb3450dffcb84bf10", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "b9b835a300a3b3e0f5c89300c4e0229e94f4ce922c6db8bb12b70fee143d1396", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8dfc46978259721114a14309715f45cea4825fb0529a6409474c7225d4c3f642", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "3d02782d96aa768fa247ccc5163fab112e45309bdd40c74c6b3d83b9445a32dd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6183e1700d0efde1d088642375d113cd2b39909fcda555a42db0daa0ba4ba1b7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "aeec0147e3ca7757a9fd159b3572ed0e1dbeb6a449e013c831948fa2307d6c22", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "db7e0a364bdacb7cabb850039ede8444e08eb40f542daca5b4669626ae9170c4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "db7e0a364bdacb7cabb850039ede8444e08eb40f542daca5b4669626ae9170c4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "524f04954066e06f495f2442e6277c30d24e1b6f0fc652f0dee524cafcb146c6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "72cf0e70e3adb45ae2def420bbb5d53fc7ca373881505cdd6a879e2a6cd4d168", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "0c3f8b536271fa588f070a49a222a406b81ee7204f898cf1e7e3bb7256dce5f1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "5e504977e58c0f4677e3a7d0a317c04bf2cbb0f35caa7e3a710c62e17c1b9c70", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "074b7b204357d6aaf45e941f6d0f4cd37e9bd0518b476063f6af060b58f5c605", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "f8284ccb469a1787a9a30b257a7f71927237bd9492347cd7e597128b13d58c4d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "28885f0779bbfc9710ac14813b1dea630e18f48e4f6f68ea135b92a4871b9764", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "28885f0779bbfc9710ac14813b1dea630e18f48e4f6f68ea135b92a4871b9764", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "28885f0779bbfc9710ac14813b1dea630e18f48e4f6f68ea135b92a4871b9764", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "28885f0779bbfc9710ac14813b1dea630e18f48e4f6f68ea135b92a4871b9764", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "5e504977e58c0f4677e3a7d0a317c04bf2cbb0f35caa7e3a710c62e17c1b9c70", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "2d7ccdd6fe2431943e90dcd5d8c3e2c4a7c118a2816391b13bfaa558f9a033ee", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5921854b7eea13aad7b3cadf6002c18e8068100855e1cebde188bb99df57eace", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "874bb1a55089642151ac6f39f51dcccda75f994588dae64bcc2a60c1e9415fd6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "d6e5dd129ff19b7d0cdc6c671220c559646bbc7c3153b577a68717c626c750c2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "22de2acaa4e716c7d7bdda81612812efc9807ce90604a5c406c8e3bfa2bbc5d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b85197b0fc59dcc434eb7fdea1e691c5230619229ef3d1ae840f0d57e1b2dbfb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e0f1f2267aa0525fbbf7e886e02ec28361c02a6e466d27dba3b6b992b8082bc9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "9adb12892a95cfb423fa389d9da241c59bc99fc209027b6389c93d58ab193067", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "c301a5d4bcb4e5ab3685e30200ac4793ab10f525c40f35ac4ea99e3302ce1c10", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "683e98c06e246068c97723bbf96be0b22825d5e90f72f0ef9ea4d2d85cb09811", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "d81e4a63f9f5afc097e53b98da9400a58c6f6e76baf78466ddf98f7f38ea0757", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "db7e0a364bdacb7cabb850039ede8444e08eb40f542daca5b4669626ae9170c4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "de111635e955c01f8dff4f4ba3f34abfcec1d4b04be1ff8dcfbed952cabc32c4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "495c1457247d3fe547e0b18075e33da77d4075d96e2ee506907c73ade9f95a77", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "275c533e909dfb3e44676c415da060aa0a72df9d3fb37d610aa3546ef1a2c80a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "114f9b02b2243d9a15d1b562952f039a6b24c5fe3fe8891c83150a50b8725205", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "5f32c2f6d6a9366970311fa916b613e36ff7992fa5c70331e2018bc5956eb460", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_ethereum-test_definitions.py::test_builtin": "07bf80fca6f7c9e8e57dc7aef792435d959962e054161e44ebe72e9ab578cf6c", +"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "48377961ba0ad46bb299998bdfde90e3eca35488475e703e2ae98efc3001512e", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "765f52d2873c86cf86728f9c848f4a6b4730c35fac29218232ba62496eaa2b44", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "37c1c923e6f1b23a47dca3b16ddaab1d57e88f14480cd8004128ab14714e6101", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "6062b8bd9bcb5bfd46e984deeafe7c07ee77efafe61892b1137127000ca1b1a6", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "b0478268d1042e15b639c1edff2443ec0bb9e4c7c863e482572ab2a424afec24", +"T3T1_es_ethereum-test_definitions.py::test_external_token": "2eadd2187c5e647231840bd7f7c30b833df6e453387327abc6ef88b644cefc05", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5686550fb42c45b472b84c13a05642059bea0abede8e43458801770513758a1b", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "99a62a730d6d0984302932220974d588abd6f6145c3c0f554a9bfcd59a864b4f", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "bf8b587021be730929be24b08ba6a589c0b7ce9ab0d090a55c3ed8c661485b3f", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "5490e268669e8f00735ba8d5134b7af2a29bd3b94a2bff7e9b1a396195da8980", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "bd9060c60b3c8160f9df721d5977b18616fe7d8c9455a1bb6b5564789c45ef6a", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "5eed1553f5d93185374e2bffec5f67f2c05222f5e18a75089204c6479aaa28e5", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "6a50daf34e6ad816fa8ce8545b56bbe8ee86751bfcbb554e3c705c0b888248db", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1dd457529fb27bbd7c0b043fcc4b3232d2381819627bab20f947cca2cd874560", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "ee1fb8695dbd9cf8124262ee79fc29870b7496711f367470aef4bf4a20801b17", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "254822edddf0de4724e434f9e5de6bd6e5b57a0c9127acc813d4af1342de5c7f", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cad01eebdaf5299794f7cc5c9c25f9d2c9102b26916d9d14fa05bfffed448520", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "6566c99bfeb7a5f50082380f056d5481b4435f71f0d5a2ef8c2cb900b1da6321", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "b9a23dff089020be0b6f19e40cb0063e1d59bf8996a5d4e5e5b5ccac4c0d06ec", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "ea8681316783deb2a0aedafa7fe6bc56825f77996529b4675beeeb6862a1fa3c", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "9bb51e4300384592f81cd650cec9b5c4c671ae7fe8f3103c8030a66eaa5ebce1", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "024c86d1cf17fa906e04b8d78ec826a12d983355c983cbe3eba425b079702b70", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "ce70b522baede7b6a24a2a95fd62ec758184da648ceee243f6210564bc38a38a", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e2716ea44f0f6f76540be30afef83549e50206af7d5b5a803bb552cebc8d571b", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "14dabd46f5d0c76b856dc9381fc034014f8a7cf59352d13028c7428889ec0b11", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "50e5a0f27a104cf5778684ddc34776157469044c83d73bfaa2ef134d54d68166", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "4e4e4d6958d4ee1cc3adfab59c597e18acde1360a41210fd738e34fd243b0154", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "9b99060e5d10a0c19df06f36dd089d5e21138771cd85f364dea1d6bb343f9f95", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "055cdfe30d968d7f7f1cc3ce6ae081c3eb5a37811119488744796b04f31688b8", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "50e5a0f27a104cf5778684ddc34776157469044c83d73bfaa2ef134d54d68166", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "50e5a0f27a104cf5778684ddc34776157469044c83d73bfaa2ef134d54d68166", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "50e5a0f27a104cf5778684ddc34776157469044c83d73bfaa2ef134d54d68166", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "11411da2e4c2e168f982419afc3faab67cff9a2c936467e6465da312c62ff153", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5916412c4e51d26649d3d5aa86bdc4071a8d2829c66a711077060411cdafce62", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "f7b9be31347809cfd6699d7c585907ea444fc63d14d24d28bfc525bb717984d7", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "37918c3f732596c9cd4fa4a773f1a4754fa371475310c81cd99c78ee89a488c2", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "8fe1fd166e2160aecec8eabfb55147189c7e33fa7278ff6b24c1886fdf43555c", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "3a8ba7ee90503181bae6718cb9e9aa68df25f998437c77582677c2479e47cf7b", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "4221fc4dfd647b13dd575cf305f8142fb4d3ef92e80fcc38eb3a9ecac4c53f9f", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "deeac7043bf10eb0cce4b3117f15d8ff7e0ce853102aef6279f194a93f77e9f6", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e712f2ddd696f35c294dfe82f3ae2a0e0dbb61cde854aa3ada3c9c04c4d7064b", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e0cd3d9ae851786f4f07c64936d475acd75b9b5e8cdef817faad939463912c43", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "7e5b4fcd834000647e94e6e2f318ee8b3d4f74fdcf4aefb827747d6e31e1eea7", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "d84abd581e7a8df55345db26ab424cc62bc39daf8d4350e29b4c6ec670fe72eb", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "a5698e91d14b2f17838d911c8ad61f9a9710a07dde087fa02df33b5db4ba4b03", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "3f5f1310e4d466f0d149b722304b4ed1b9066385694d243541ddbf7b10f14dea", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "f5776ca38ff4065ed607e2e32525695c5bde9668742d78d9122464c7534842c0", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "160cea071a3b6cc9f11be5d5a8ba7e137b3c40c6e9354ecda4988dd2c7a52114", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "f6dad9b8b5750c63589fee4df4b51c0e3b7c97018aa33433f713c3bae5328fdd", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "2485943eb107fcd3519c8118da2e15cd41dff066036f5ec0bf34c40cbe782b8a", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "7e5b4fcd834000647e94e6e2f318ee8b3d4f74fdcf4aefb827747d6e31e1eea7", +"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "1efe52c0906d31f418462a97fbc9c642ab467b8d92b6a242b20bb9020386e619", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "341da874923cc59ce1f2d0d60ad1549c0410ab8f7b578849a94b390083e62bfb", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "8c974a34a4532fc93ef5b078ca8d5ae8b7c561ed45546f9a8796730662171da7", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b01f8293d05e3d7ea32138891827c38eb36d0b6d56f5c034b8e02477c97cb9b5", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "8c974a34a4532fc93ef5b078ca8d5ae8b7c561ed45546f9a8796730662171da7", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "2d38f4d1592edb1308ceb9376b0ba0d03679b2d4466dce4cc099ece55bfa2748", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "2d38f4d1592edb1308ceb9376b0ba0d03679b2d4466dce4cc099ece55bfa2748", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "4648f29959e8723d8413271036fe0d22e7f9884a49b53f1e3a6ff6a2a316bb00", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "00ab54a29b32fbf3c30270f9c0b62729ce3bd019bddeaa6e8d9a28d98dbfca63", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "7cc50673c504b9b2094da2a6697db5a9084a0e25b9b792bfd74e7522c6af335f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c6e796e57a41ee62180971c4a88868f642d23000fe57771396ad3bddb9aedb32", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "0c6e9f52bdf06fe2f627538eadf8f4d61df88640893d22f5382d93b67187e164", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "3e3b5ee296e172684277999c444cd01eda441afdffaa0fa20f6681184c94a3dc", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "c31b5deb0de762c1738823bc2ef6b31d4fb6111b862999862d02d5cf6515774e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "6b8c3af3abac48a68b6a48d7c7874b58ac782a57722c2d166f6c99f9e21c1eb9", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "321bcf1d1afae548b756fc2646982e8f4a3e219e829c8a47cb18c0e94bac9d05", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a76faf704ecf7031e9b2d95007a42ae1a6fba19fb8ecc127f6c4cb99bf6cf087", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "321bcf1d1afae548b756fc2646982e8f4a3e219e829c8a47cb18c0e94bac9d05", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "b57e069c7e6d4db68d217a2f42ae000194400548f7e895645f0bbdf376d63b9a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "b57e069c7e6d4db68d217a2f42ae000194400548f7e895645f0bbdf376d63b9a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "157c47a93e18c84fe933552380332829a5323101e67b79c6c528f7870e829fdb", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "ed04827918f9d8b66a06cf82bf24d328952843d1b15da1dbb1e771fc49b9481f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "f30728a45844f86d0be6df44c1772a3c416c497eba502b2bb0e43b8f31c1ced6", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c6e796e57a41ee62180971c4a88868f642d23000fe57771396ad3bddb9aedb32", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "3ea0f38cb4ff0dd028fd8d23d19f44e11272765d2f8a3cb4637daee2fd73ab16", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "210b9ac88b6c42bf235a371d9ab250c0097f70ded5baaf174e118101dd7bead5", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d8efbf23b49cef185ccadc1d701b5d65bc8ba083228bf0c5fdce93b19e97b231", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "da6ab5a6cd4370e8f86f12da96bd66ae6690d7e92152995d1e5d8f3fe767ea7f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "9d18ef927f40a7863422d38da79815ca251ada3374265002291be5dc2187ef5f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "96268efde0150d2b5b57c5feea6435a7fbb01dc39e68af9603ba0eb68e04fda6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "0c6e9f52bdf06fe2f627538eadf8f4d61df88640893d22f5382d93b67187e164", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "4648f29959e8723d8413271036fe0d22e7f9884a49b53f1e3a6ff6a2a316bb00", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "1608910d1f2c8ab343d95dab823575ebeed908b9d29c6ec657df6d8905c9f26f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "7cc50673c504b9b2094da2a6697db5a9084a0e25b9b792bfd74e7522c6af335f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "a035e7901524dd5612389afe03a0d3c55724c52fcf67b26097df82f7b6aab02d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "b260e381b90b45715cd6056e61f1e4626d560d730210a920d0a8a63633463022", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "0c6e9f52bdf06fe2f627538eadf8f4d61df88640893d22f5382d93b67187e164", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "3ea0f38cb4ff0dd028fd8d23d19f44e11272765d2f8a3cb4637daee2fd73ab16", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "157c47a93e18c84fe933552380332829a5323101e67b79c6c528f7870e829fdb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8e7793ef1ee6fecdf325ad8c348c641184b23a94fb9bcb81f784f4b09eed6e19", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f30728a45844f86d0be6df44c1772a3c416c497eba502b2bb0e43b8f31c1ced6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "525bd042f9d436641421bffd4698fe323757b2f2cdc8e2be5c4aa97604699183", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8ac29824dc1b5e0c94606cb4fb804fd02796928294e281b465299df704c8dce4", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "3ea0f38cb4ff0dd028fd8d23d19f44e11272765d2f8a3cb4637daee2fd73ab16", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "1d9510be06f83d8985017ad946c497172c76552f6bb61e35f01e164f06fb33f7", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "1d9510be06f83d8985017ad946c497172c76552f6bb61e35f01e164f06fb33f7", +"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "b3ab43844114d92ec20f8b89acfc5c95f629df742754da1da8ae194a6683203b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "12f62135ff7cc308440f2eb72692f297e73c5856b40e8cc48d227e93d40d6fc1", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "eec7a0f538e254206eb9ffc040c7bfa4be10b1fb654fb1328d1903a49b98f6d6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "eec7a0f538e254206eb9ffc040c7bfa4be10b1fb654fb1328d1903a49b98f6d6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "330c84a7583f6f5875b123b3a3e1197f5f0a51e7c130bff5ed7b7e60211fd268", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "330c84a7583f6f5875b123b3a3e1197f5f0a51e7c130bff5ed7b7e60211fd268", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f842137343f11d302f674e19799d19ef70de81dfbe4e4337c2fc57f1ebdf6bb4", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f842137343f11d302f674e19799d19ef70de81dfbe4e4337c2fc57f1ebdf6bb4", +"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "fa6564bea6739ddfadf7d5c31c663f4b11d1aeda579827b271cc5bdd5823883d", +"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "fa6564bea6739ddfadf7d5c31c663f4b11d1aeda579827b271cc5bdd5823883d", +"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "4a897b0313dbdade10f0a90d0735908972902c2186d5878a7b718d3583e604e4", +"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "adfaad059b5150905ed18998716dbaafc81eddcfb04ac3af5e581e2895736474", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "a7028081ae625243914881076973b1ba6d2972a657ce9087674deb4b6500e01b", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "9e03a41f5dd06f0f8d983d56a5e4bb658c7a0cee0890d872bb76e6af280f8e9c", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "417ca199fef3b3c947f4359a63ab42a3f36e284c1f41ed92cb6106ab5cfb169a", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "efdb88619295b143166dc5f5331b66e7ff5bf3673ca02d29987b1b6d336292ae", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "948921602de3a2ad8194b971f2a438cdd8237b628b6e29d0b7fab1f1a0a0dfb1", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "17a695d5e9683a7a1f08f6733b213887f8b70c1e913053c2e72c122b322d56ac", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8a30b00a2cd018ac11a68a70a70051cf928ba9bed4570efc24f1982801bc33e5", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "41158cdccd99ba7a2c8e03137cc9e67475b0a1ad1fe0b33ac756f2526cd0e7f7", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "85353c447bbff6d744c766e24a44248a842a976b8de090bca645dd4a3767051e", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "5f75195eb93dcdb55e955015b45ea6636dd09b61a62c6f91de017ebafbc3fa12", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "37d1f095ddac785bdd12b26c19196363e70e7b7f48b6f12f86b02704f13e6254", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "3bfcf16ce0604fa15623513b4cc0a119ebf7ff48ec9e68197c4033bb28433d31", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "f39c33b924d1cdd93b914e8a11d4d5dd7e11aa31f843185d87c41f693b80a38e", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "16271698ba41c1717c1ffc25df7014b15e86f4962c1e3bc391d6cf27281728f8", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1abe3ab03dc03b3fd8c79c7be83a358b581c5077a6cf1770738d91421ebdf42a", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", +"T3T1_es_misc-test_msg_signidentity.py::test_sign": "52de60313d23f06d49d96015e52fc04643372021d8725ce3942e4263a631be60", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "5f0574bf0806cafafcba1f9b4722229610068ad2a2b921c561a2163fc88879e8", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "d3b8443dffca821d1ff0f8f1deb1bd5322475934b08ba8a566584d093808d4dc", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f1624a1526ed17ed6df6dc1d3aa7408979359306d6a84456ca46e57865d7c6d3", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "c27ba84937c41a571cfaa6ddf7bc09f13e9fc75c2c0ada36f30be1a94ab14db9", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "f59e9d8560ed9c0585b4fbfc148b07bcb589075456612d191f7ec4f942f97b52", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "d686ab4b24115e269b69b6757e57ca552afd97849a5d61d7f3afd3c7354ec3d0", +"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "8191350548b19b33337369f59b401f71001736cbf0182f8068ddea1e78561752", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9457fc42b636a928d2a64f3d8f5e7212a0d6351d2e45f623cad1940bab3e710f", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "ce588a528e117cf5cc88b561b61b39fb799e0deaecda3f349f0599fb0b8f9ca3", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c9b50c76bd822cd406b8df4cd21c7c22d0da48469025ac64385dd8790d4aa9a3", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "273142ded2e7fcb95f64b8e13b46f5498006163cb974bc7f292634a68df459b5", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "1fd294f025660e0f8135b9407bebc34b1db075c7f7a79a5a0b62f886aa6fc47f", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "6987a1dc524db37b02ed9516f3b074ccaa4bc5f2f23ab2ada39654e0c3090000", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "841ba98765e8e5765319726cf3ff0954f2643ff26d35417b4925f18978fd78df", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "75ed1753e3fe914f2c37ade95e91cfae540bb83e7cce4d3f60074ad3ce356a7c", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "bc01cd84756bba102aba661f9e22ecf87d961f9c77a965aecdca1368604fc0cd", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7e92304d64a4ee8e120f44ac180cf4e598c3161d6d840d0fbad05e14aeb6cd9a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a546999eb72f3fd1367ec2a632d633a006ebdab92e4c5c083454b1a3d90f5a8a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4ab3293d377ccd411bf9bdf338daca2de4b40eb563d2d15534263a614a5ccd15", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "2abe34de41c501d67e70cbd80bb03e07ec64d5c01307d476220cdbd6fad842ce", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "f418201ba970d7c6ce9a31184e65f375e0ce0ada25a73dd851b5852249a26a2a", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "25d2b0cc9383ba609307fedfb2fd3d7a566d3d15af8527d8ed60669b48eb272d", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "6987a1dc524db37b02ed9516f3b074ccaa4bc5f2f23ab2ada39654e0c3090000", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2e886a5204a03f07a51b7996e66e6c4c4542fc166f850bcb377f39cbbb3f7817", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "19d8a636fc2b9f68de62e6faeca5ef8f64ac964b9645fddc71bfd480c447fd1c", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "c96d7d2b2fbaff90f6aed7ddc71a5f1741d5c82609b7581c652ade7e7994d477", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9277d6bfd01a30f30ced9052cf2f477b5f2dde4eb500ab8cd9545a87aaf8d37e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "8a0e6363599bfd7f48f628d5dd4ce8e08cff4511f6705a8cbc6305f5e2ab39a6", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6ae3100fe97db2f758b7d4c2137f27882edc6fd91e4b102aa04877a9958edf5c", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9f1de4b615b5730aa006e07f47fc7dc6f66bde053ace2abff7ee54386b8a5b1d", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "6a2d5efc275d87685ebd9b6ee740a28944474ace88c9637287dd8adfc53b2451", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "02dca7e6b402f99c21faf10adda882af1921671ddc45ed7c7d92b1a20c5069e4", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f534799e29c2539407b1663c2750f3dfd15e0ece4f7d2a29525a70235c3ffd14", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "bb2dc585d9d705c542f34b1cf6ed8086aaea686fb77498cc0c75f3aa368d6818", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "660366d7b08d251cb33a7b5b1da27bd1e478149ed55d8087999954b45a1b0933", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "e83bb0f4c900af7f1d208923e02c75a07ef4827323d0d53fba564579b15d6ce8", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e560aa51f59a467867e41bbb069974b6e740aba9a8169c150daf1402befbb0b7", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "57b6c381f7361899802ce21d871605e859dfef7eb943a7ec5fd93743e0a1829a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1df76019e7a0562395646764e95d8abdd57c8fd7c2b385ddfcb2f841b8bc59aa", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f626272bcacb67d2026d4520e9c73fbab18a22042abb2e6cf018209b1f596d2f", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f111268d442946eaaaf83fb3dfd73204818209a2bf950362909d1f1aee60a521", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "06e04b255274f24596888f9df669d159de5ade615d4d7ed6fdd51c2b03c6e3a9", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a5b72bc9ed0ba937409ede49b561f4b989924177848b7c974110aa8212c051ae", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "231e903b28c210ca2e4b5e3c9fab250ad96159b750e3ab9bf931941428a5b74a", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d5f923a5ad495ecfd7381b93d19a2069ea5ce714de3b07a799f0c5d994576f6c", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1bda0f33f3ae349938d781d9c8dd5cd9b5f8714ef8daf288163b9f3ce53db3eb", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "03b4644ad341a23a90afee24d3bc31429be0641f0004ddfdcab3c01985cc507a", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "44fec143e8095450b03288ff7654764dc81c8f08392702cecbf46d7cdb865b7e", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b5f28a410065d34d4f093c67c997f13a7acdd04be6366dfb5adfd3e6ca15c657", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1b25fe5424b87f7b3a29eca7237fc9bf133b94cc554f56a417c5b85d20f4f142", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ae5cb19cb80d34caa3613ee9102d697817d525219807cc05902d0472a8c3bf4d", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6817e7217fe5ae5f7f5ee8300326f4cf1166e9478f3ed76464e84ec5735d00f5", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6051f540fb2dd93ad4779520dff20520365360df6e696df98dd593059f4db773", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8a4ea576af33546c02cca1b5c8eb36d074497faba72d1786153ecf30ae57461d", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d1cec1a5da0ef330c434c29e58a593cbf1f7f19db20180f3f59cc6841f7c995d", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "ebf24ab3839b45a61d7a158b5394229102f168fb75b7726f022b29a92fe18d43", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "8a6c3d2edd51df10ed97d4dea9a883705668bc9bd332826b201d606c0c4e044a", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "8a63fd9b6a35713bd4f21cf165b6a19835f1017f3240bbd524c6614187a7e64d", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "46eb04e2ae4f1e96fa4b618ea066fd4031382d9e61c2b441571b3301f8d96a4b", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "50596f9114229d36fb43349ce8a5057292a74418091d07ec3411a3c3bb0054f6", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "689f27d4529017992c3f8bc2d50d2f729206f5e9a36df9c58d61ce3b0991c1ed", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "ce90310463751157adfa118c9b43b3f5cd9e930659694b89f22c9ff0443f02fd", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "3aeafae2e6eab3878796550cd6f9db5e1f438568631b20355f7f14d4be332e0c", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "5ebc1f38b38a5adabe89645d5dfe7c1e868c9590980e34ee660dd2d8401c8033", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "ce90310463751157adfa118c9b43b3f5cd9e930659694b89f22c9ff0443f02fd", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3aeafae2e6eab3878796550cd6f9db5e1f438568631b20355f7f14d4be332e0c", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "5ebc1f38b38a5adabe89645d5dfe7c1e868c9590980e34ee660dd2d8401c8033", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e0184118cbac1327160216190cf6dad5ce2ad87e7cc658f3ceee3b861a506f7c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "2513439912963d7019557cc280c7b181baaf95aa2970353336768a66e1062277", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "77071601b32976ac9ead5c932a8fff43d038af419b501edb33bb8663ced3748e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "cb24cb271ce2121be41bb0ec39e135102fbf1ac95ede0b1a668005d1f8949515", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "d2f3e7da84afbfdd3f00da24be26c71db54de4b5f84d1da0bc8c12348f993149", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "6a1d5d913f189147ee730c37294d22323ae0c6b770c69667773982b2b8f583ad", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "7cd6ee5837f8a2083451c29a77ecf813bdaab8644aeb47536849811790350d9f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "9fe9667051cbeab8e6b5395992be452fbcf934c7c0583f846b7c257bf0cc54f8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "ad824fc889fa0876bd2e8389c113f52c4d209dfafe0c469d8db6ccffcac729ae", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "9aebae22eb09310ab8a00d19fd03883ebcc83d2aec46ad8ea37c3dbf32c57111", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "cc05184411099dc39e032dbfcd1548077733856334b8e55ee1bad9f0edc54c27", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "3076f2c74d5d4b849431b3db04af7a9b393813319fca35763d2c880695744f05", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "277b1f33488c3783c3590eabe285f39ce45faf903141c0bde698acf0f4f957c1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4e2b92739c1e93c174a48e042eae01b215943d9e4552edde48ce9f2134d7c1b1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "38547a770d176492150ed6e467248fe83a9616442a1e6d9ed99215dfa9bcb509", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6ee4a66cb74ad10e4ea88ae5d17db2df36f1b771d556b07ce9483c94fac523e7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "09833e2394dfe1caed276a20d8f2b2faf24568bd6e1fa6fc1b2466f53bf0462e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f5589c7ba4d09dea0b572096e5164192f0f570c16d6bb131bc6f384d3cdbebb3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "0cebc184798afd8c4cab0f00e8b7b0e28413cf3cd8c0f40869ee9acb0a0f5b73", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b23852af6374eb40cb4fd92301cbadb269ce0b95b982de34d817b53b9bb27f73", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3caf33db7e332fa196fc3d646772dc636e377e5ef26942cad6a118cc645fbf70", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3caf33db7e332fa196fc3d646772dc636e377e5ef26942cad6a118cc645fbf70", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "41dacbec9789996deb06a4980445c01ae896481775601a65dd2ebe3b1a73b41b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "283722a305d42c2046341aa9849797b172a2c58a7f7987fd96858f497fdf3896", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "3fbebc0a10eeb5a4ed6213dfaca6402e91b0c80ccf9d0785d00db44236852f87", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f6a363f4375a6c9be49eaf139d552513c70036ff9cc71258bdeb500628e81cc1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "37d8317ab866353fa5f72d6dfdf3b48849edb01ff7fefb6ccbd736e6b8fedb00", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "e7d2bffa35a91dccd949c240375af2f8eade45f4b024ee8fe79383baf1700a20", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "039e78cc62aaef8ae2665df0177a056cac7840d3ca947a35a1d9e3089ce2adfc", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "f508e0e3961105ebcaea57e4330616d0d5c6735af23433134e75393305470a97", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "9b342c6e4a58ce9f8b9709692906a58caf397cecdea8b8fa0ba145a70e8d4228", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "213c95254a0e2fbc86911c8e06348303860f4d3f6702058529aa500ce665cd85", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "48558b47d17d2dbfd9e2db32deea53fda919c8681f92ae84f120d36c6bc0f97c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "5fbf8b8cc8ea568107da2ee8452c48ac5d76cc5162532bf918da95c9d9ca0b52", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8e422962da1974e16cdb8f12b42f34965709f0f354aec55604b086b2a8721e00", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "db8a5ffdac25f7ddbe1058603ae8258af87c4cd3d8f452388a2d140b9016a040", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "bc66b56fac1b829bb4bbda18486ac88fa10d697c676fd112f96d2ad321787e1e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "e98b18d6478ea3abbd43553552d8b4ed7061b5dab2eab427f17c549b2ebca075", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "e4fa693a17552bec4777b8b8779f31b59cbacdfb761b7fbc81bc76d72845b626", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e204d2df13784008e72451f6aafa68e234de3f4d26655432ed4d73475882cc59", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "33b954b78ef1bda89d165d760d8b2e9095b8f381cc6cd564f384a9902f2532ea", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "8ab7e1b6762534ed812d7dd97eea8167dc78c3d411906ab1cff9a805fc451a36", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "50b38be237301dcda8dff308cb8a8da06c1f4568a340d72db55edf1544f5d0d1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a493b4dc4c4049430c94a633faa756bd90b02c16b888eea9c2be8a36d2cb1ee6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "085103b7aa291c31faac2e74669982399dd93e896122b48ee20810efdeb8fee7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "99e965fe5ab0621d12307d4c97c1ac4c024e7094640feeabecc9cc56e6936aaf", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2d3529ff3e52cd9bed982cd0b69e5a5b654eee77cf4b62858b2d8a40dffd44ae", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7125aa85edfb4df2413bb5efea33d7ea453284cb8ee43c5be63577782b5f587d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "3ed903c49b22a702d609deaf05e012062b526c36d828d5971c539116c781f5a8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "6fd06f6088e448457285ed1215ad153cffda3efb6f731a6dac48c854c9aaab34", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a47b0214af8042fcfda717ddff8f1ef5438c155b18f192bd41532a66da9c7999", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3a379688e90a71be8f84b2d5a4c3d7f3df2af83839dbb9ca0272343af9b404e4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "95ea320a1606b01553edf1434f588b9828079a73ef4b4ab77a46428cd08a93ec", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "930b01a9446801b4d415c610068e9e5d792bdb3a5eb3a44469b1be53160917c2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "d03e91d460ed2d0e5c081084f2b2b7d783fa8089e71a89982e65dfd71e5a704f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "b6fb901ae25cedbd03b1801c453f77f0439f978b068023d9744a7061fc4d0e23", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "18465cfa719f438c7a3d452e15e8e71fa0d7e4cbb29ebf7ccf97df4876712a08", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "b2557ebde729e67cf6a82d7f8450cb9beebb0167d17064680819b0012cfc496c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "52da6a90b9738281c3abe61e6e514c3807f9524c41883a88831b8aacd8daa3db", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "3fbebc0a10eeb5a4ed6213dfaca6402e91b0c80ccf9d0785d00db44236852f87", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "c70a8485efa323f127f65917a1dcb45e4ac92618fe501c57157866d113190844", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "bc8e45c0b78c58aa4ca05ba0ed972407cd7379da5137c4e6e1a87b2a3345fa9d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8916bc25b7de0d10e899bc20d83813763f7096bbe0078f25ee6c1bd80188af60", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "33645872879ccbf7edeb6c40b483b8e34f57c7aae3e90caf45049c9b28333510", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "cf3f1a0a3db042f46889baaa567b4bcbec018e63c6f32277af114a3a3d849c85", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "57f44965f7846f16315aff5f47da3498bf15841e662994111b7052bd18ca8b6c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c1ef2485001e23c1f808880ca498bcbad0adb20fdc380b401b52bebbbd9e0768", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "dae333b97c1fd458cd705a1017def6c8821b648c269197d19c388385ce5330af", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "43738d7261d82d33d9942057f343ba21ee4459e226cfa4b878daefe79e8dc7cf", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "5d14b6e72f9f362eafeae20e9cc28be0c1d38381b6fdbe9dfeb2a11591fe39dd", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "0317872739c70528decc8da3893a5885e7f163acdc8bb0306ccbe1f5942d1395", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "ca40719207aa4272840f726893030708816a60ddfe40e5d1ff6df65dbfdee2c2", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "14f8faeeae90274722b116e7b678557e1e3fe984677688627724d5f133c278fd", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ea8320d46f3db3beeaa779db898620deb907c6bb520a3918330d31dbddf8ab86", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "f988cf237722b6691e4b351835c575f2f5f6f6adb4a57de880955cf2d9a2aa73", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "d43da96f430fee7aca966214634bda7681a465b9f907f3e66720ebad35457d90", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "dd90fb2c420a18420ee2e6518579566469495c5b4b8abda46820f5a4644948b0", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "59bbbd06f7e0e8c147a00915ed762b6c43713ad723224f1f8d53f7cc43456ce9", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "a91fedd6c428df062d129565334ad5dccc326f3644efc9678e39cb7fe9033728", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "159b87fb560c9029c9f370c6f5ac571813c2c885feb1de906369552ed7cc94ae", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "4bd71c6dfc9c33d457f1c87b31d4a0ef6ceec4799ffacbb6947ca40be8399089", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9258eefdfdc848824dd5f6ac4e4416a7084fbb5bd9c2f0f4f7112b7036c78279", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f55af4a7d4371af1bba1493538dfcd7328dd3782b5c26c8a307395a6ecd3d16e", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "89404c3c998a51eb563d02ea5cbf76cb533c18cabb696a92a163e851f89398f5", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "b6915fe26f796eb6232b8cfb32dec08afd9b9cb57596976ea964effeed26edbd", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "8d188bf837d601660e4bea29f0e2497ffda33f82eba4ed7d6bd95c820e34b11d", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4b592f8427ddec8bf62ae5e70dae1c318d06d051df7d61adfad979a81cc6a7e0", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c11ffecdce26dcb42c2c0347fdf40cdd412d0decfbac587b5513cbff466017dc", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "2510e76ef13a5340484c5e8f888ae776de36d4d2feba93318fe89aef967be1b5", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "7d5fd933783e254f5f13fdb2be2d6213842dcbbd4378c9e72fd68900380503bf", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "c6fd4123be49d5d9d7bc028c333fe4253986f4203c33f74c71325a9395ab18c1", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "1d86557a5fbf2ee3db104be85b9c6a331a7393b7ff81734b09160b19f54da941", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "fa7f402d35a920e2abaec8075ea460a32cec97242bcf350fa4627a1ee84e34af", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "a1ac9a9be95d9c05b32fa14fde5b9878dd6dc407c11d96f984b9fec0cf0bebd2", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "70293e4e7246df3d6197ff174b32624b6f73d031617f090389ceac4f97dc69e2", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "9d65104a7e641259c20ddec1344f5cd60188060697c1e6ff55a8a87341b75a40", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "ba06cce67267fa236e706895351fa7272d8e99700e1e522463e7172361b362e3", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "1c0646576f0876558a188508150e7017b8587dfa6278cc24e476f1991f18f916", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bdedbde929c100184496e241486383491602d913740acc6b4c2ccd3c5665503e", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "1b0a4c4d22eabb55de1b2532fa0ad9f80827e16dd2a7579fef18570bd464c862", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "29779c1232bc0fe39c6ceb72a21734e84a0270e225c9217626307bb2772f6161", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "caa951b28c8cd4568cb348d05d337c054da25365035e15f14743099ff2a8ade8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "ed71952c93fc5ff511e5e2e173f3f973056cf96b4ae9592c07bd00817e4f3c40", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "8502dff66d3d87b0c6a2a3c72272e674d397a988dc4f1c98c81bb5fca8ef3929", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "117f61873d5d2ff68fb493199f9005ce6899b8e853abbb50bf269d5897d72311", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "ab110bd209cbb4fffb34dacdf08f83ea64f6faac70953d4c08ce0bdd3dfca6a9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0f3f5c8b4fec9d9452add483dd23b9dc22ce815f19ef0bc1d3e964a08aa9f36f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "900bec65e585849b66183cd975ab2335e6ccc972594dea4bebe930638e2aea04", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "882e276a6b14725f20f14d3ad1911f5128a1d60cdb35e80dc90da92df6e9ecc3", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d212657b4583d5852600bb54047069f5146dc3a462097fe76295807eddf2884f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "0c2be7c32344241f8d7980b4e1165476a7a8190a22a7b00cbdde11dadefe913d", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "74ec4760354fba19a16c1253dd484a95fff7f7148c90ad9b8f3fbd9dccd8b7df", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "195cab3b577eaf4510031ed42f68bb68b84a965f0ffe5db8a0e4b8fee136c1e9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "0fb04e6e5364e773d964cfe315a6decb25ae7be18506e6f8d5074dafed561f12", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "3aff5514aedd49ba4f5284d53a87aaebedeb853ba29380aef00dbb5e4c52b4eb", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "d42ecdb2dc2ad2c72c27ece32bbf9b4437c73093974898ae2221370e0512caf0", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "21e4a5a64c1b1d348484fef593b49bdea7101a05ec21c1b031598b344a50a0b0", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "8dab338d9361622f680d4e3ee7b337bfe8ac7b36a38f65f27453293ec42a81d7", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "ab110bd209cbb4fffb34dacdf08f83ea64f6faac70953d4c08ce0bdd3dfca6a9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "bc40789880d3e22bc07d4c604b91b434f6c94a13891fc977777aff868a98543a", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "f01f66974d812a5b6302d15c2325143e15e0f4ccd52ddd3c091fb7e91b384ec5", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f43d304db7f39041f7b40b43249b83adabb8c011ab3b23a2cea3db83e1227bab", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "5656931150e534e19025e1b2afb262f8bbdaea4f85fa63c35318754e8b106862", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "17498e5787934b0b5c3d633f35d061996b6136f11b40801c6bc7c8eb0d9b6bb1", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "aef9744ac4ab868eef920d1e49053c4c31d62f5224989b4d4c7a8e3ffc86f813", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "31e9909359349fd10de03158a5e7db150f1eb9d32a1d77a765356fbf6db4db3c", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "ee0a5bf1735f0a257a11d1343e3fde4c8c366c310826429561a78fb8ef818802", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "dbac9ad1d6b924c1fb3c13f0859abdd633654df57cfcc1af4748c765d6389eb9", +"T3T1_es_test_autolock.py::test_autolock_default_value": "cecc4b1ae9b194598599d40a4cdd34ddd6702cc1f7f8d50f0ea0a9d9c1502272", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "2be09f48094663b6f93faee2c001d02d8ff959b958aa4228bc4a88accb7516b6", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "2be09f48094663b6f93faee2c001d02d8ff959b958aa4228bc4a88accb7516b6", +"T3T1_es_test_basic.py::test_capabilities": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_basic.py::test_device_id_different": "ecfb9c94ecdb25cf3b97997452871323a764600eb5f2f68c6759358b331c28f4", +"T3T1_es_test_basic.py::test_device_id_same": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_basic.py::test_features": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_basic.py::test_ping": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_busy_state.py::test_busy_expiry": "2f7cd808bd0b7fe8c0e9c14488b837909f7118fe32194c6f632f75efdf50222a", +"T3T1_es_test_busy_state.py::test_busy_state": "a7171ffea41428bc4f0ee5ba68b097974adb0f5a475a38394688764102a49544", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "b005e7238dcb269a9c0f72ab33caacf176d5bf4d9c8607f4d3442d641f971119", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "b005e7238dcb269a9c0f72ab33caacf176d5bf4d9c8607f4d3442d641f971119", +"T3T1_es_test_cancel.py::test_cancel_on_paginated": "e233a585ccafd7c2913854e2f4b9ddef0f760b226dc0da923cddb38fabc52ffd", +"T3T1_es_test_debuglink.py::test_softlock_instability": "0ad1427b0fd921e1a439c3e3f48f18f2d3a74f17b32f66c8b6e2951d5f9ee6d5", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "23e79f9f150aa8ff476632968078d21f3f1918226b82820171aad4adacb8d6f7", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_language.py::test_error_invalid_data_hash": "3f7416cfe495266821ac79cc49f8fd0955ab1b9e21f1571bbfec83aeff63a2d8", +"T3T1_es_test_language.py::test_error_invalid_data_length": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", +"T3T1_es_test_language.py::test_error_invalid_header_magic": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", +"T3T1_es_test_language.py::test_error_invalid_signature": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", +"T3T1_es_test_language.py::test_error_too_long": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", +"T3T1_es_test_language.py::test_error_version_mismatch": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", +"T3T1_es_test_language.py::test_full_language_change[cs]": "5f407bb4748886dbdc4b2e94816515dda0d87c52d88a696dcd37fbb463b6da69", +"T3T1_es_test_language.py::test_full_language_change[de]": "c970c3f8500c149b06b61c53625e1dbb8f4baef2daf656be7d8eed77237d3e12", +"T3T1_es_test_language.py::test_full_language_change[en]": "09e5c108090a224a9d498685f0d0f5b11dbde7821a53ed292a8d57f3f48f7cd5", +"T3T1_es_test_language.py::test_full_language_change[es]": "5f8b82ccca02dc97d24b75d843b327c1e6a04948a9aece2197800639a7978e30", +"T3T1_es_test_language.py::test_full_language_change[fr]": "f5beecfc2feb45d559480464961675a7078efef746ea8675f7a3e730f3eeebc2", +"T3T1_es_test_language.py::test_header_trailing_data": "35131ffe5c6204cf0f38bbab70e0b63c2ac842c7e1eb7af231aa96982cc46b0b", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "f562a2000af18978782fc238da57e62328e6d9f803495a8523ce257f1efd17e3", +"T3T1_es_test_language.py::test_reject_update": "d9e846f21836ddb503aedc4650ac7ab6cc575f17cc6651f814d1b7bebc24885d", +"T3T1_es_test_language.py::test_silent_first_install[False-False]": "a64e6baacb2d67de2507588fb6e526be7bc4574b8d71c0220eef3db75c252cf0", +"T3T1_es_test_language.py::test_silent_first_install[None-False]": "a64e6baacb2d67de2507588fb6e526be7bc4574b8d71c0220eef3db75c252cf0", +"T3T1_es_test_language.py::test_silent_first_install[True-True]": "434ad08d30bc7a2710c8248ac545cee76f5750ac32d930b90e31fc0b307c3e9f", +"T3T1_es_test_language.py::test_switch_from_english[None]": "78af7fb8773a1b5a2a25b03fd817923403841a3fdfb4df6b61b6297bd944fe6c", +"T3T1_es_test_language.py::test_switch_from_english[True]": "78af7fb8773a1b5a2a25b03fd817923403841a3fdfb4df6b61b6297bd944fe6c", +"T3T1_es_test_language.py::test_switch_from_english_not_silent": "acf7ccea893b2a21bc0be5d9d6d3f9fb7bb2254423de7f54a151687e23bb302b", +"T3T1_es_test_language.py::test_switch_language": "313176638e6b61714354d0a345d91d749c97dbcd64a6c76b595a95965b2967aa", +"T3T1_es_test_language.py::test_translations_renders_on_screen": "72c1f31c40e8d942897cce5b6bfb1553a27fa9ec5b8ce8135e36c0eedefd21c7", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "f057dfaedd7266b9a472311d4ce36c7850b989e8f617a4f566aeca4fe02a5249", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "9aaa47ee13bb48eb50d539ddacb8f228df6761c393a7f609437697101f65ccd1", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "580ef403d2f66fdf6ccab4946e96be36cb8db578f68175c4757d2a787a31f290", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3fd10a8c8227bb9843677765934c995982510b536d5bb2c6a612a0e14cf772ef", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "87927b22bc8ea55a5aaacc5d27ee3495d95c9dcecc9a51805c9cf6e8b1a69f8e", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "472b3d8e3ccf65d91c8b3328600dc35caf5cdf09fdba24ac7752775e42078ae4", +"T3T1_es_test_msg_applysettings.py::test_label_too_long": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_msg_applysettings.py::test_safety_checks": "7cc360c4fbde3446c24fae8175a20aaabe5e1a97859281782bfcc5ced5683dfa", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "3e975fada515b3d09dd9bba4d61cb54a548b124558209bef4ed7c033b0d12394", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4802a19b32c35f96dd5c9f04782f16159607585db958cce81437501ded398ee5", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "fc674d2f7aed64ae9fc7680ad47966116e0e1878cba6e93d376e23dd9a0c0c64", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "0882a2ad63d4cb7ab985eb12ab97e43980890680a7ee4c55333bc87f39464080", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a0082ab29b405c636e3524aed4c6d46785ebc5b4d23e79f0ed049f03508771b2", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "ebdc15d7e1f28170f929e89f6f08c55e648291873523bec2169a94e6def4252e", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "fb141045cd21e4160b4dd236d738658d2c3b33b757a950a3111cc9fd9bb5e0e8", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "e6c4d8ec7577e9962bb7c36bb86633348f5fc48f854528f95b31dad790bcba90", +"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "711285abcc862295a644ac3ab11eeafe1f3059b10aa82b158d7712598646f61f", +"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "09f17981a23bf1acfecb6fdc5bb226cddd4d7bce19f059e2a313575b7ffe76c0", +"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ae5a3ea1cbcee557ed21eaf868727776b69995fa22fe039e4141ac8331f60712", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "d8fd0b8dddfb0988117821c8656d919356bb915061b14e9e6005b00aaf0e064e", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "914848263ff0b35f8ff0754c30a50c8f31b9650ff7bd16f7c83fa85461201a38", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "a1b8b78417352d99d7335625d3cb66fe7f8e796a7e4f2e35b91fbd4e595edead", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "cf34861b756e67194af9bf13d66ed38d81f2cefcdee6cb3dc7b73101f5181c44", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "a51a09fa99c92db42b33c3919356e76386c0137f9f18c72d99fea1f5fb336190", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "7d04ba6364d581672182199a77aee88cf7e05ed59a6587010f22a5e56c0cac6a", +"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "ac2f68918cce94178caac9792d79862ab34f48ffcff9ce6ff48a1f7ddd9453b7", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "ca3662b345f050b10e769937808e786c95afba19bb1a755960c7802abe1ad953", +"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "766442b0767cb521bf4e0551a904e90313463dcadec2aaf85b53bd9c444ff285", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "bbaf6250a83c4974a628b5d0a835b6dcb38d08b60f4eb1fe5c948b6a83de382d", +"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "fcd97907eab0b6d991629e979d4cfd9618b4bb1e2d1d06804341fa3c9542b8c9", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "5e6564689a1e76d022c565b90c8e59c35556dd19bfd38e7f7aa12cb238714238", +"T3T1_es_test_msg_ping.py::test_ping": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "45c58c09e49cd3fff8664bac0268db826846daff8fabd5d4c5501d1d6087b78b", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "2c3259563ebb8f873165fcb008a48faa079583449a9999074186465977b1a222", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "1fd9119b81dfe75c901c7c0cfcb54be6ae71b4c73816300eb741b33ec6f54926", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "e8c33d603279736df820d9724fd3de0ce55d4db186ba226fe3d475dd1414f7f2", +"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "ecfb9c94ecdb25cf3b97997452871323a764600eb5f2f68c6759358b331c28f4", +"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "00f0e7916e78181dcb9081a3ca3bdf740408426043c1cc62a1b2daa1ace95fdc", +"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "00f0e7916e78181dcb9081a3ca3bdf740408426043c1cc62a1b2daa1ace95fdc", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "4caf532febb95488b7ddd19a5c5c911620f1450e81d6989da4b0a7582eadd408", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "4caf532febb95488b7ddd19a5c5c911620f1450e81d6989da4b0a7582eadd408", +"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "4caf532febb95488b7ddd19a5c5c911620f1450e81d6989da4b0a7582eadd408", +"T3T1_es_test_pin.py::test_correct_pin": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "818200287e749818550de41abbf9ce4e0018e019d6eedd2b164751d306c0ed83", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "2bfeaafa46718d0efe411953ededb08621380909764831d9b4719d6befd75953", +"T3T1_es_test_pin.py::test_no_protection": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_protection_levels.py::test_apply_settings": "098fd2fd9026f38af4d6950456aa01302a0c3443b9811fa5abfe471248334f29", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "cb56dbe365058395344aa019ff64f25589ac5d1ef60399178b8b488af7c99aa7", +"T3T1_es_test_protection_levels.py::test_get_address": "b7a5c7a69b0a2dd1560779253c5990f43a54bb882650394b96455542180b8319", +"T3T1_es_test_protection_levels.py::test_get_entropy": "357a923bc547b59188ea0418302c5dd198f53f4c3ba84af57dae1c99c165c5fe", +"T3T1_es_test_protection_levels.py::test_get_public_key": "b7a5c7a69b0a2dd1560779253c5990f43a54bb882650394b96455542180b8319", +"T3T1_es_test_protection_levels.py::test_initialize": "2311312920f6dcd014bc52d5af70582ca4cc5a7ea69eb3c399aa632999582032", +"T3T1_es_test_protection_levels.py::test_passphrase_cached": "bef4b38a90497d7223fed5459e580e76b111b9c30fab9c689a3ace8d4ebe8496", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "65b44e988e9d98a327eae4f7e40004cd74389d0b9f150ff19c9b73b76164d4c8", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "9fc755397dac0c39356d40a3ab90355f30ce60c51ae8fcaa85c435e6fc1fffcf", +"T3T1_es_test_protection_levels.py::test_ping": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", +"T3T1_es_test_protection_levels.py::test_sign_message": "53088d873708b14d374cf17e2bcb2bd9c0180ffaec26ed90d80b48837ee1cfcd", +"T3T1_es_test_protection_levels.py::test_signtx": "55fae33aa72b52222e049f16cc4086d91a68567472d5e68855da690ee2f277c0", +"T3T1_es_test_protection_levels.py::test_unlocked": "f405182f1a710776b7c10478c62f2b11c7cd010782a042d6b815948f7e395ab0", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "ddcd6d07feeaf593ca84319b84f862046f249a75727cfc05ccdc3c77d9f63a2d", +"T3T1_es_test_protection_levels.py::test_wipe_device": "d3986f59a058c52b372a414cd5cb5c0e0285dd303496c7d99c586354554fdde9", +"T3T1_es_test_sdcard.py::test_sd_format": "1e8ceaa3c419aab4e97088704eb487daa132d4262c490c626efd9d18eecf66e5", +"T3T1_es_test_sdcard.py::test_sd_no_format": "1df941e39cb0f5ae7ad5fd0ed61dcd1458a62e256be7faf19f106f9ae9fea197", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "7b3f9196da8bae50bc4b5688101bf65e71437555b9329598f775e5b0bfd137a0", +"T3T1_es_test_session.py::test_cannot_resume_ended_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_session.py::test_clear_session": "2054c124d94999397561ef41e294b3b688ed6c37553ea485ee4a9693f74aea68", +"T3T1_es_test_session.py::test_derive_cardano_empty_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_session.py::test_derive_cardano_running_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_session.py::test_end_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_session.py::test_end_session_only_current": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_session.py::test_session_recycling": "4caf532febb95488b7ddd19a5c5c911620f1450e81d6989da4b0a7582eadd408", +"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "77415cb67b3f28fb2982e0458fdfc2da7ee5dbcf653d7669b6a51d53e90991c2", +"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "0f566d30fb9ae0916ebd0546a5bb2b0a5ad39a051b32612b046ad3c90ef45426", +"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "fa7064fccf4ffd2347b5ac754344ea3343c7c6909463d9aaa33224cbb0abeabd", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "3f730a9ebf652064a6785eee7a9db12c380e7d62ee8d8b604150800fc66848fe", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "17411166fefe1c86892ea3deabfcdaae2d28f4d7bd475d48787bc261f7362a88", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "507941e4aa93402e229cbf5e4338fa7759aa5595d5d53f2ec712ffcf28e120e4", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "bef4b38a90497d7223fed5459e580e76b111b9c30fab9c689a3ace8d4ebe8496", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "20a7b4c7430d45d17a880b8fe928d73c81aa4957f75fb84dabf2c4c701f69a6d", +"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "b3eb60be9ae44ed41b0e9a35493053654a38808868115d009d916f56f198444e", +"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "0111dbbcf253f21d1af1e5c74365e5f08fa46c7abaaf1c87a3661a25448b9096", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "6003ddb449cd8992439d294a04b0fff100c35c3a395b6c1943ceaf406309628f", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "43959f06326272517861dd5c74c8af0ea30dbd3460e60baaf310ffafb0c92b55", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "332ebe7092343e759c73089b5f8f6e612087d443119682bad904823fc7cbec2e", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "2a400e7ceb68f751411bc0fc2ee7903e115df1e4796382173301f7b1717b1f77", +"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "961d7062d5526267e7e1f063072d3e8c00f46ae7eee7620fcfb542633c8c79bd", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d221d82eca981951b0aca8645581c3a5b95c4dfea7f3f4e45bbdf56c5a9725ea", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "4acccf33fffac421e5997593d5a2fba6a510bd1d9cf49eb661df71c662365f58", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4b0839f6d638f8a35e21d6ada278aa333027085ecd6914c5fbc3b55da0ed7aa3", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "a729e9ccc29b360e8521542090418bbae50fe0903b890f51ad3f9125d11e5a2f", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "fc20cb607ffbb415616d5f80ed985f2ab6f26c46d89c75bf93dfe6ca82a940cc", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "c045929cc1b146400494345ae7e63a0e255eae96715bdf18d68bb07ee7619889", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "5159bda519ec69f995fa4ee83f1c7e392c2f10f4b533c6df22a6c18bf64757c3", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "26ee2b7013447c83bb79dfa166e1eb5b52b52129d014217cc2c7c3bc1b72524a", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "b76bc22a7ad33972db1a9005b6c56166443d95f40f3db1bf9b32c1e1bd6b2e9c", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "c062a94b8c590881ad6730895446846e7d6b265c05174d633a80529485f7d72e", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "6e3c2daf5a692970fce61eea2abccc5b3dbac255f0473544ec7ef53a09d7a144", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "6e26a14d87748ccb6e450786a560b7c3aaf198983a26480672d46b5a9f54f64a", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "62d5b76f054e11e8e0e90f54d07d08bf0d80240af3f65ced936026c57428afbe", +"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "e4bf2dfd7f736f000fbe8dc742c92b89a1803fe4fdb1e0012ce3e182b5cedc78", +"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "9a4395a8e5fabc86a4dbf82f85a3d16bd2706bdf1d84b870dd5bed700c871d99", +"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "69012e7c19c7096a8b6526422a4fc9d2aef25005f97c6a8d71c63473f56eae4f", +"T3T1_es_zcash-test_sign_tx.py::test_one_two": "6b840ccfa582db6680cf2a22ddc56e19da529f38d614ededf0bd179fd156905d", +"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", +"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "df0b4cb61e4fc93470a1590ceaaf7acd04257a4fa82bcdd2d788bdf2d9cad5ac", +"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "10d788453f1fec62f655f2631a47ee6d800c3be755e5a35fa14813fc73363185", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "e5fd01f8f9a49ab80d696b67b551e28f6e6c737ed189a725e01a8bf3b7797914", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "1cdb69531adbdc4cd0774929e52de465d2035101574f2a2552811b713a0513d8", +"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "be8017a9c4e9e68e90d6fb5f8a15314b4a07a866e8c5f46ad9f7fb594d9fe606", +"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f4cea3225b3814a48b3e07df40c92e9af49aab06168c8e70a36a37f39e96e46e", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "992966c04907b69215c8e429071091571cf28241c611c830059153109a50b877", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "bf7fa7a8dfe2239ddfd3f656723dbc1e7bb063f7fe694909a41f0cdc116f4d15", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "795fac94cb02f2ed0ee4b6ef1f0001504a074aeab868e130c686100ed2f72315", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "954c39c55c118e2b12a97f024661267c7a97147d3790a447c90d047a4f2584d7", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "00ba5135f819f0f81549901ae087ab864783dfb93a41ff09bb8e2ac77fe0dcfc", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "fc7a83c1207a49a9c774aed926e347ecfcdfa38c570a96a0af1c72087b105e43", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "181f6086f2653a212e029b316f0bd20b1ee395ad44479b39665afcf0a927df6b", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "00ba5135f819f0f81549901ae087ab864783dfb93a41ff09bb8e2ac77fe0dcfc", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "fc7a83c1207a49a9c774aed926e347ecfcdfa38c570a96a0af1c72087b105e43", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "181f6086f2653a212e029b316f0bd20b1ee395ad44479b39665afcf0a927df6b", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "9aefdd5b4c914b6d26dc63458763ec51551fd115002500e4269a71369e1a456a", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "3c5f2e258c686e776ded3bbebeffbb8baf96d6b1e893538db14dd25a74d591d6", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "06e2e845a2bf8bfcf495e7827096b9cbe2e4b69ca06b861973243ee40f72656f", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5695631009538f60154bd972a14a1361c97c114e7e556e8557a775ad87197d0b", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "6c7a7637ecea02390f4e4908c9910674716506be1b4316698cf14940c9e89537", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "6c7a7637ecea02390f4e4908c9910674716506be1b4316698cf14940c9e89537", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b231f015294d1e45d5b1f82c3b4a956d8bec3e659d8e799ef57c28aa6b42a126", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d1228baef61329f97828d7c94c4bc5b10e99801450a1915b7aa48286ae8b2059", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "1b55c0357fb79da6649f60764e3dfde469036f3b4aaf1220ba05929cea84830f", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "e71c81450ce5c0ce5ee4d792a3a640c3c802810f351a96f3af65ffb468bb4ee4", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "e71c81450ce5c0ce5ee4d792a3a640c3c802810f351a96f3af65ffb468bb4ee4", +"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "550756d167a088dad4599a7d2bf44b406fdc25cbc63e488df6fed00e6aeee264", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "550756d167a088dad4599a7d2bf44b406fdc25cbc63e488df6fed00e6aeee264", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "7c7978cde28ea4c09f2bef4cc92dec5e4209d3d62a6c6499651510d36abbce14", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "adf42f4edbd0afb4267f31bba25cb9d0e9817bed9d6a76dbfa3286c8d285f014", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f561501b23ce6a3f8f710578b6f2753a4d86c09a79cad0217fd3109983dbb465", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "980df3ab054edff8858d19f903a8cbcfb2496b16701defe2645d95f8fc990583", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "cb1ed914242cb8cc6a854c735565c3b0863644f81c6b5c7f70b1d0ca5aa65d6d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "2a7f7f4f6205dc9a8b566d3f693dbff523e48d5ebb12d9020e1243190ca2c997", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "733474b88cec5c9058b68154f8fc2599837a07d60862494eced8cb3b13e7d0ea", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "33fb92736c78af02c44d313aad86e6976a5b3e5524a2cefb2c90cdeed3f37502", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "7b5cc0dc55048cd68ab4cd39b5c0fdcead7a3032d508c15f52e2b8c9daaf6789", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "bd0fcd017b07837aaa49212c5c5daf89dfbee6cdaa0a6a6093c7ea11cc427394", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "61e9e5ca501b46410ddff734d8f1ac7f88c63dead33971a6cf8297ae7932fc3b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "93b0e6575d52172e2a32f1d348ddf9fbc3ac2267ca077459699a63d805ad0d04", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "85bb3de35954a4f26757dc94192930498874f6c1978cfba3cf5b0ce6e510b5b3", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "3bcf371b60450ff3b082354ebf5c8b201a3ba79a2408acc3c625c3b00e924358", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "da572ab7dfb593bab75431ef1673c4113634720bd37d01a09afe14e4a958ba13", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "64ab7e2ee9cd56c0290835420d9d67031ac1b4647f46c89648fac0634c019a04", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "e0e8b3c804643a28f39e833f6664ec57b418825248652e4e98151f5a774ca09f", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "589982878b1f19976c1b64277a576efc113eeb3205059b3214498434b0082d82", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f85ad8e70af711cf13f1b2788aeb23cb6725b65678adae46e4bc68b519f62e91", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "675ee604d9488c2caa8f47f35835b622161cfb63e846bce94c7a180c0012f139", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "576ec7ac1c61261d79a591e39d151946037d5308f0adc2883980f36e6df7b607", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "7e5ee35b0ed0baa0b58a7c3d211029678e9f93ec824aed4d5355e38e62e2e2e1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "b88750aecf81e9baaba247ee9ef0c83c12ef024b0e114f5e2b3b1020396ca7d6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "2a7f7f4f6205dc9a8b566d3f693dbff523e48d5ebb12d9020e1243190ca2c997", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "733474b88cec5c9058b68154f8fc2599837a07d60862494eced8cb3b13e7d0ea", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "33fb92736c78af02c44d313aad86e6976a5b3e5524a2cefb2c90cdeed3f37502", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "7b5cc0dc55048cd68ab4cd39b5c0fdcead7a3032d508c15f52e2b8c9daaf6789", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "bd0fcd017b07837aaa49212c5c5daf89dfbee6cdaa0a6a6093c7ea11cc427394", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "61e9e5ca501b46410ddff734d8f1ac7f88c63dead33971a6cf8297ae7932fc3b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "93b0e6575d52172e2a32f1d348ddf9fbc3ac2267ca077459699a63d805ad0d04", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "85bb3de35954a4f26757dc94192930498874f6c1978cfba3cf5b0ce6e510b5b3", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "3bcf371b60450ff3b082354ebf5c8b201a3ba79a2408acc3c625c3b00e924358", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "da572ab7dfb593bab75431ef1673c4113634720bd37d01a09afe14e4a958ba13", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "64ab7e2ee9cd56c0290835420d9d67031ac1b4647f46c89648fac0634c019a04", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "e0e8b3c804643a28f39e833f6664ec57b418825248652e4e98151f5a774ca09f", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "589982878b1f19976c1b64277a576efc113eeb3205059b3214498434b0082d82", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f85ad8e70af711cf13f1b2788aeb23cb6725b65678adae46e4bc68b519f62e91", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "675ee604d9488c2caa8f47f35835b622161cfb63e846bce94c7a180c0012f139", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "576ec7ac1c61261d79a591e39d151946037d5308f0adc2883980f36e6df7b607", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "7e5ee35b0ed0baa0b58a7c3d211029678e9f93ec824aed4d5355e38e62e2e2e1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "b88750aecf81e9baaba247ee9ef0c83c12ef024b0e114f5e2b3b1020396ca7d6", +"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "031b04763a0bd90f7c4bf722538466b04b137b1b507fc7b23e04466e27702aff", +"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "da55076b4c93d9565f869fc8b084a8f23ab921141f3d723f2c6d7da0b0bbb18a", +"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "f861829aea7f76696a88bc718bf86328fa8082e5872529fb88cc5b2591c71f37", +"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "ae18cc13631448d58d0566ca1e70c7654276476634e460c742b27b7308d7b0e7", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f8bbf81aff32b088ae78ccb175b7c2a02a1e327a75262b1493f96b6cc21e68ce", +"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "16b6c6c0ed00bec17a80fbea73b3aa3b17163da43813ef55acded94250749333", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "e17d7aab1da47563c5e70bd737e460377a2548c92d194a386a2470f7886dcc2f", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "97d81c0b934dce5ec55c88a24053bf90b5e2944423c1e06ed0e6b88777cde45f", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "7d6c6d10426e49bb769e60e2e5d444faa9ba938229e80dabe44178f742d79328", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "5dbfb2dfff891af8c23d2b70e593d403ec93ad28de8ee87e7fdbc7a501e49fc7", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "63e3f560536bb2f0c42ac5aaf25963ed3f58b1fcecad20ebc40c8fd1877f5681", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "4760b4cb46bdecae9523642fd5a6a2bf9241d4ec6237e84872c110bd86115cc7", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "85bb3d758702ec0ad82b549e291027df546b771993cb7db621fa5ebe0d32a73d", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "bf55f8fdda23088d507ed8da5f011a7675220c160922498fd3569592ff6df5fb", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "284386b8782a11e66f037650f39f98d31539d7bbd866bf5fa49e03f53ec2e3da", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "84cd467cf2a694df16105dbfcda87b9640f4a0bf22c2e80a630857b057480921", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "8bdde3b6ab580afaa4e72c59cd1b543c8e81171b31c527256715a9ba36bbc426", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "580556b5709d065a27a85f36a2d046e498b21973ed7b46006a31a36935a55250", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "1029d8091d0147ed92ac4a10cd87ee54c33b55ce641570f030d29c19543f7e83", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "97d79cfcf848cc3ed960c3f922f65d3ef1b062f103d1be46eb41e2f77646375d", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e58576dcea5bad9839f492dab676926970946fda5561b051877d8bd67e6caffc", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "5dab1b4e4479032d448cbf39a2c09511dab1ad35dbc3d65fe5d21347f19ab8e4", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f20aad0cce187a47c71cc379793dd3cab0d8c97e3427b0c71cb8b4d9abe3e29d", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "fb7c8fe388f7bf5898b800475b71fce62684cf9bdd2ff4a95fa1ce5b82e375d9", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "167023b27df8ca24e1b5acc5fec7dfccb6314b811b889469d8e8fb1d7092afd1", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "07f8cef8afbbe14cd85c14bd94f1aab57d39bdedce7dc833bee9fff031a2a6f5", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "2bfcba2020392d5eac08cf4c45003f8b2f6e46647d3d48eeef72ddf4747b1572", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "aecfe05ee87ed174dd8c8cdf8d7d0d01acad459172ffdcd850d9238408291a13", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "72218b6928f5e04673eb2e380a1fab523cc087dd1c591111524236914151a5bf", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1d832fba74ed8fc1c2cc838a3be463e29862ec6128305578ee2e05bc02f3fdd7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1d832fba74ed8fc1c2cc838a3be463e29862ec6128305578ee2e05bc02f3fdd7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "4de01ea8f88cf2bb6c8ea54685584687168dcc3ed059b48ec624cdc378484eea", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "edf69a70ca0242ec025b7b5019fda20d4719688832d0d5055f4fc2f6a129bc88", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "818bb6606ae7877f53d06e2e1b6bacf4a3c63fb185fcee7e7e973479006df867", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "311136412d5763c394d48cfbae5ee9e14ddba075ef2eeb0d102cb71bd6df9349", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "a0f32b69189f9c66765e9ac3ee198821aabca6ecfc0b54d789bbe437c9c203b5", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c6cdbd753816e9a9b92abf7e9b6aa2b443e16d7da7c65ae47d5f25aceecf22a6", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "310d48d8ec25f3394454e1c4e4d2d1fc6d9c38d77f4f0397a754246754eb4565", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "fe73fe3f684edd53f56bb14557b943f734060cc67afb5451375a709bb4e32b54", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "3f265e4b79320945c6672ba7b2726fd6a18871bdbd30ccc89310eaed1ff1ba8a", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "1389109e8d032789b9549a0af0adf8fc3e7f7f11207b3ccc52128276e344d6fd", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9837623d256dec47ed81f66d06ff460fe195d8f17ec7a40aa9d761b9b7299a89", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "56c891303e22b790420bc1c961ad385f1f9cdb678da1948a2173a47b95aa1de7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "3b4fa6b04ee904338bf771ba98121b3729cdcb3a92591d8a21f4217834744b2a", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "55cbf28198aa0e5c1f0298c4402057919225919651e6abef4a0db223eead8e49", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "733474b88cec5c9058b68154f8fc2599837a07d60862494eced8cb3b13e7d0ea", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "4d5c863ecd596238e414987ed77648de0026af263a6b25442eb21f57a012b570", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "b4ee453a0765680fbff6b860caafc611215e2822286aa51bae6f5e201584ab59", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "5d5e24bea2d586d00bdb6645654404ba572ef6b1fde0471512459f9e9d58623b", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "3c67244ca557a154e8c7f14e12a392acc27a0e5d8e65458f92d70d3d749ba2a4", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "f1b6dc7bd2dd2d313ee5bfe0cb477a635ad0285e3481bf7c7649ae02886dd068", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "90e944bd904e00a8eeaa5f74054d2a23c1fce91a17568963a0f9d2f958b463f8", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "6000c7d2a0a84989cf46d3fbaab03e50e227a2101865cbab3aae32259dd356f1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "0a8638690a313202855cf006216d9facc1988871ab7806eb72ddb10cec3e7d50", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "64ab7e2ee9cd56c0290835420d9d67031ac1b4647f46c89648fac0634c019a04", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5e783c4154e27d2552b3f8ba150c8f824f1d1dc230bc0ba03c3d29a6c7030d3e", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_grs.py::test_legacy": "be99d97b8b4de3b05503c7d282f37c9d4e94100b05f9736219d950c2039561c9", +"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "df82a181215f10d1d4ab066a3383218e91a6544864f30640d5dcfbd3c4a57dd0", +"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "6f1047ad5e2308be391677ea21477d85f495914b2ed6b4e872618b95df9c496e", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "016c2573561c93095525a97d7cf66511f4e4c3c05be88c12cd47aac126a82814", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "b5eec23fd10bdbde987c908ddcabe25edc6f56dbe2735ae5a8d811eeb48e5954", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "01f66e42a1bee61be50112dfb9edef142336296f0b22e25bd6504d697545182c", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8f91d0ee80e4e2ce9eaaf73cfb74aab411cb00d051d002c8af405fe7bc434522", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "4e2fb58b95713f5edad6d9b180a40b9f94ec84d59add6620181bbcb161ed1c54", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "279a9c6c01e26c20018be0a8221fe8c031b4cbccb7bb9442286360f234e11a06", +"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "6c8989f2f2efeb0daac7f520e2ac8394243501a204c5361e0fda87f0d7af6717", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "f4fd0e6a2437bb91de2d2b6e0067bf1fda3feacd28294e1705dfeb96701d1dc5", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "bf2e6819e6bb985a3cc1b87c6fa16b243770ecfe81d01641715055306d8ca8c0", +"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "52bb7e54e28962c04f055b6541b69bffb297176e65c11768348c405d19a75d8c", +"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "ff41cbbc4ad7eeee4e8b833b7bac00866fe49fc37f533921b0aa9e9723a30e88", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "4ddec71e6b2bb700ba1b69c2c8c7dbb006d84014d48b97232ca88a1d40aa23be", +"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "8adc758439034a2703614e38c24baed045b12d0a2a68cae051cf9638a5c524ea", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "40e97250493547459df6b1cf4bf31ebf9079f46aed2a7b019abd22408592d95b", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "dd0f09115fe9752856dbea38385e1007e2e8097289a1f81dd66c61983f786589", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "6584e6b04345fb9f6dbfee4675e172f4623d99f64359569eddd140643643ef7d", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "4da2c534589968fd661a8bcbb411a7b27a5d59d60c8558877948cad684a04daf", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "873614b7ef1fdc4bde14b2bdc4562cc981abef6609ecbcc05310109fc8aae71f", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "e1a96752a2e0e77a208883ddda8f9ba6f4a7875f051ac9af084892013250be45", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "818f13eeded2c1490dede1d4fca85ee09bdbd95bd2fb6bb0c1bb52ed7d8f121e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "5be44b7dc454c50ebd5bb4ef7ba514f5e675a78b895102dab4f92685ee7bdbc5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "64e0fc1f46edd3305d0086f7ab8ab0f185991f7c958e8e73fdb620679bf23b5d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d75fe4d441eb9bf2368680984ef173b36623b054434e3150b6d5ac2ad8b4a27e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "a8a89f1de842a677280887924408e903536ec10b8731ef3d4904eafe9e43cf0d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "d5654cb6db02db06e336f12231f208aa809fa3bce9136a1805121eba40298470", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "9b82a303cec3c0423aa1f0ff1bb093a00b47014d5aa2a3c87e8cf46deef6bd21", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c1cf7fd0f3ae19d0f05400ac6e0b229f857880048b651e708670b2a30916f4d4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "882eb463f067bb631a13de2716fe6c86430c0cc64e74eeafe1411a139adb068a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "41cc8e1943eb361e8dbb1f07fccb6e773df055a3d87327894333acd1c4ee84fd", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "b73227f6ee3db473fa0c8e2ab92645edf01fa4d0393cff148f064d1454c3c86a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "8ac9e2452aed8d9a7d6bf871f18703bbb5e05a84b94278a2f4bb520e0175201a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "338251f79861ac4bf1f9ee5225f5f2924625ca5062648593b384fca23ca3d7c9", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "b7f1bae41e20f5b797094e141be43605eae9ac2eaf4423ace9e01ac88377615b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "dfe36a4eccbfa6d8b6768b04c9b653a8bd87112b9797b5b2ea44f427030e22e8", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "66dff55e207616a0165453030f14e166abe999eaa8f668009d375bef566a25ef", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "5fe48cbd746614c274ebc6b2f21c49a6eca3dd592caef892abfe53b033842cdc", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "c77f93ebb29a3494ae82bf26ba0bb55e5a2d88a49eff41cebcf998827c43797b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "5709b0bdbc3b4ed91cf246cda8793ae9d1dc918ddfaf8b52683ce9efbdb5480d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "faac11dd5675b72e81690ef03bf0ae315152fb32035fd20c9017095ce91555fa", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "ad8f5105097d2d603660c9b94b4a4efff197ed9159058ac657e4d779c5d05b0a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "dc188936960326b056ab10c69d0dbc92dbacb6033628641734e18739927f1ccb", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "83aa653efedbc76b391f087b61c8fed9ad11bc9dad11ae4ca08001cddb5cc6be", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "e70e6417555754d9ff2e285cbe4139730416213df19ff091b94416a8f678e00a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "0c10bafa0ee9d8737006e4f4724cc0b15a97fd1c77950a5d858f47fc175d210d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "b05bb936407a9901d61cb4c46866cf39ff203efd79a8daadbf1ad40d892603d0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "d40936481d24180183aeb1ee7ee619b58566a3a8ee6f3d09c557c2fdff9058de", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "6caf36e29ab072224f33c56104e99cceaa2114db27f00575a2851cf973f79ba3", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "b2d90a2d3103bcdf84bb34f6a64eff83a043df27e2ca210f706ad485a83e77de", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "8fd69f6f0497b9f7aa1a872a72fb6306c189c36c672d6bec1c5472fde49be416", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "557e11bada80007136a438cb8341c1b476a3c431946d18bb0f1fd32e339525d7", +"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "b5fe51804777803e76e7f8213a531079b5a7496ef90d7a283aa400e9444dc1de", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "3a106c9ee2f055af336a6aaf57426b48c567f34ff046a459b551cee125d4076d", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "327a81dcb14186287e5fb149328b22a906f2feb2aed3035a0baafe12fc9786b3", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b300fa0558c0c5ae6ef2458d540d3dab90ccbbaf37057466b37d6844f377d6ab", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b300fa0558c0c5ae6ef2458d540d3dab90ccbbaf37057466b37d6844f377d6ab", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "e53345b2e6fe34acac7da7a86e9760eb7da8b653550234e6ac34b9ee984c8550", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "8f7e26dea89e4849bd668bbfcdf323ff8f09a3af5412589680f6d368d6a9da33", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "0ec4b30aa87231ee2b5b971c5852a93bdf1417405571f799de34c586893f7540", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "61d0ce560721c508d04d7fe59040efab6a105eee68299f46e5a56bd7ba8f02c9", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d5969ec071d9048997b5994026d6e1cc7600b41910496aa8684767b8ba23fab6", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "da015983d2cbfad9b5611ac37276c11c6f5391cfe18662868dfaddfef700d341", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "da015983d2cbfad9b5611ac37276c11c6f5391cfe18662868dfaddfef700d341", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "3545dc3f9c20473b353db14f221966a32667731aafbb2f37ad2a08ee2059043f", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "c147f69c5ce2ee6fd937bf9e26e1b7b51f553895c84fa8e867d1ddeb0022ab1a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "3b35b7eb9fadc841fc63b7f032fb443f2495e47287b798ba3d89226341f8aadf", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "3b35b7eb9fadc841fc63b7f032fb443f2495e47287b798ba3d89226341f8aadf", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "5b148faaa846f2e0999af3a16efa23c3183cf36b831df21e989d17fba0a760b2", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "62cdf5d6375f0f90901f4437d096210a7952d95307e4cf7153722a0c1dfbe255", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "bb7e1d8e243bf0b22dd7205ec965baccddde0f7257b0e15faee93ebd44a33218", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "bb7e1d8e243bf0b22dd7205ec965baccddde0f7257b0e15faee93ebd44a33218", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "d21818619a18e2a534a012d0409b37231bb8ec7abd80f105c98f92b9710014ac", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "7ddefa94bcff5a09bef18c17b20c869b24f313b376e74bac884fef536ea300cd", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "af2a71125d6172755a2dc741a810361993f2bb7d320d073fc2ed1ee748b05f97", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "af2a71125d6172755a2dc741a810361993f2bb7d320d073fc2ed1ee748b05f97", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "5c88ea3661c56f1ee0e9d4e73dc71db720b1a12e89f06c0034da17da71a7458d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "86911f98bdf266099141190a4c182fbafdfab12bb2941f9e1cbddce077ee9e25", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "9a8b433cad6c25b77a51b96351946dce7b062f28d49fdfa1f0037f4365aced47", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "99381ffdce23a27c92ee6785d772100f22382adf652451facded9760d33369e1", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "afe783410b8d8c260c16c0eb70a73b9ef3ab5c1ec8ac0d940884d9121e3b886e", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "efbb71256f778a9ad83315e355786a1eb0b7580b3409cb291d56f6946a5b49b2", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "efbb71256f778a9ad83315e355786a1eb0b7580b3409cb291d56f6946a5b49b2", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "1b9361eb018c2fea54c8a2a15aad880ed553bcf42d657a1e1b074ff4378ff4ea", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "6a3f129b56bcfb4137d71233ff80b54672c0864615b92c2260aeafa4ea2dc24d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "3cd13652fa55d392ec8869f318e30dc9b7982848b55d592672a744ee889f3b26", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "3cd13652fa55d392ec8869f318e30dc9b7982848b55d592672a744ee889f3b26", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "4ea5a2606302a10f98e623df421aa79ce263dc6833ed0752da4ed28b9c1523f1", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "c3842280da21f806a100e6b25a99cd6b88fc57a5cf3c1704141f85ae51610ab9", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "3ff1340e3bac238889358f521241832d8b6ba0e210a4b7dea16213992c788ec2", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "3ff1340e3bac238889358f521241832d8b6ba0e210a4b7dea16213992c788ec2", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "447df016292909a1235329a669e89e8adba7470da2a0dfeedd18bef836c68a56", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "375b8978b36a01077a42b90257079f663b996fcaca5df82796b2a4ef277c27ee", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "632329af9d2e7b30dec1f08992a0bb4ff8ad7b89559615a72c744e13d0d3e763", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "565706706d500d2a80d8045ce8bce54eaae8295f04fa37619d2d7d6d6fff0838", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "71188edfd39aa447f7a29840af76c42f6904c1556c9df19b08847c28fe776b38", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "ee5183f7f29e2b4768b82f978f3f0db857f67ea1f90a0b01ad21c31c1fec5e61", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "c0c68103ee11ec2e03cd43162d587f291ccec2959a8ccf7a7c5bcb7a0813ddd1", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "2edbbcc062581811a705cd371d30548a6987661e8848639b0aa31c06d6e06126", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "5c184aa6f6441be4eee492aac1b25dfcc421c88d1476c90f2823b112393d3ed6", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "550ee9b583cc580ac31555ba28ba3f7c487eb496e9ea4dca64556b8526629f4f", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "b3f103fca4334f067d6c4371472defddafb9ea0fec55e21f78182c6055c6b26a", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "a2516d713e1912261629270aead505eb4a8e0172f918376c8ec081c914e461d8", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "31e720457d45817820cadbef544830d6ec3f21c1e24c470e3e4e8e2889aea2d2", +"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "31e720457d45817820cadbef544830d6ec3f21c1e24c470e3e4e8e2889aea2d2", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "6163b9bc2f1ebb6d9b100a4644088ebcec42f0e2197488d2fe877a7a288a730b", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "efc4e6f6e043d755bc45b405970ea18fe4a1f63fd34b080ae356b75ba6fc928f", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx.py::test_information": "dacc0fabc22aad097411fbae5d298e3a22bb24d0a2de8f69b6295b456c93875b", +"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "15eea1d28cdc9622e245436cdba71d7aadf9ca6b32f72917115a84362120082e", +"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "9bbb99749d00f6e3932e2707330769e2661960e08cac9eaa3e73ac3a3faa6969", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "1537005e4c553a45a5175f38a2645dadf34f54f15d30b86d1cc01623ae266efb", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "68e22e79b44e93be5556e95e21ca37c3f7b422bcaffd32dbacc6bd976e26e2c8", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "59f64854e8799bed84a21bec56fe66ae62ca5383d05ddcc1aeb002178ba9e15f", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "68e22e79b44e93be5556e95e21ca37c3f7b422bcaffd32dbacc6bd976e26e2c8", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "59f64854e8799bed84a21bec56fe66ae62ca5383d05ddcc1aeb002178ba9e15f", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "0f73bd41cb182855f32747ae792250c38bc7db5a914c1fb8c68236a163bf2b2e", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "46e9c2c9208833bdffad5a34d429c2b098aa7dba3aea78f052ffc4ade205ed66", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "765466ee775a81a806b1b96ae67454fedbb7aa9b2a1265740bfff5f952cec4b9", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "de3aed944469381f805edf3495c56a2883de67c63e04e299ec60ee8397041911", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "b01c85a065803008d6339244065d3735cbe1e7cf8c89d05496f7e2d0d0a22859", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "a4766a9ed6423c65102ff0d7226b68b8b29eb67c8bd25ccf22356b2921c46beb", +"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "dfd430c8fd3bb256fc2acbb7207a6f638e9f1c25068fa4e2b6592b29ba0e0d7a", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "10c58cbebd20d58b818d154eae799c576085e71bb6fd30a63100315c954bd59c", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "4f657a569278424f5e2d1bf88f688a3939d7801b03f0df0fe8b8f286b2f03174", +"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "1691e752aae6d2f10766dd4dc829aea46f8fbe8a92e36348cf5dd2ea062593cf", +"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "d347246eecf891b91f40fec460df5473eebc7d37459c89c15a3b884f34ffc456", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "c83152f82d2ad7de5cd5ba66e626ec96311a18ed30f128580792db9d9b461d73", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "f28f3f3f1dac275e096f7f87b428e8d391825d21ad5a7f90845e127f44db28b1", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "31373b636e6e7eae6bbf8ceb453bf6b4ba4ba0b44213896845ec1f7b212314cd", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "31e720457d45817820cadbef544830d6ec3f21c1e24c470e3e4e8e2889aea2d2", +"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "5855325cbd2f05391091ccf6e98334928d55a570ccfcae970e27d21b99e74911", +"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "3dffc6a3f6f2f26276026c964e500a5a43e508cd1a12c3dc159be1587a571c61", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "dfd430c8fd3bb256fc2acbb7207a6f638e9f1c25068fa4e2b6592b29ba0e0d7a", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "de019038cf5eb75ca43b14b132b0d6b42060f975ac69fdbf4304d2de6f9a4c9c", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "f83bf45159e8f62798e7b1c0f68079e69ac6f8a83a7990f6f0fc8c15b5e8ba26", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "5f45551042beb69c8af4ea492d715a1b9dc55d732ddd90969268fa2d24093410", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "dfd430c8fd3bb256fc2acbb7207a6f638e9f1c25068fa4e2b6592b29ba0e0d7a", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "144d13e3b625bc9d1c5c8e47b32a835c467b2ae18e7f76b145cea08ea274b698", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6b43148eaae330b2726f36072ad7a141501b037656f8aa2b43b2cba6a26784b4", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "36b353c6c30a425f0b1af44f1e47e64e58e478b7240b86adbdd215899b913f0c", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "c71ae1d43f998240247fa4e1d659e17ca52b3ec425a5fd1ff81a184fea373f89", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "144d13e3b625bc9d1c5c8e47b32a835c467b2ae18e7f76b145cea08ea274b698", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "7dcf5f3c53b9d56168e5fc0c93b3c5e7638717c98fbf85626b3280b9eef40f6a", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "247f0527e5ccc064ca80480748e200a5db3c1d4ddbbade2e60693d3fafce92ba", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "63828867ada712e6762ca4e322eaad355a1112663b20df9adeca41dda851a952", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "fa0d40f7d5d39501fe22fa349a7e6d81975f2e38e9c1b39988bab0c527d4e8ac", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "ec560dae70126663c75fdbcf285ba06d1352afd34554ec85f935e372fa5028ed", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4f3531120cde5187a6881107ab65ff4d65331b09913bee6c4d5a54b29cadfc11", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "d9eccd2d3ed1f6222a4412bb7bee7fffc1deacb6cc58ba0466c3c887949379ef", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "73284a54f0108308e1eb87fab90a9d9e4caa70cbe48ece46a54e80da03276487", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "7cd517a12df60c7a9066a58d189e1d3c43f947cb8cb0834c9320b0707b36083d", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "1f2d64a66a68df42826a6696f50d57565117679a9d52f11daa53237fd9d46c60", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "d65086d477aaf1848fa16713e902cb26d4ba5a43b16931045d8a1cf29e2e6b4f", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "0578ace8f827c78674377aff5360076ee8b84e507190bcc464db039a4ea1cdac", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e832115f55f5403da2d43ac5963aa37f057cabb76b7b7843eb4f470db1df654d", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "2e352f56345f3dd1b5e618de94f1414052fefc9fdb1e40d73fa2878450838bfd", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e832115f55f5403da2d43ac5963aa37f057cabb76b7b7843eb4f470db1df654d", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "2e352f56345f3dd1b5e618de94f1414052fefc9fdb1e40d73fa2878450838bfd", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "e30c0034a8170cab6f7ceeff239c0652647a421e47c82de6acb91f66456791a3", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "8fb6659ffe4fb80e3dcc23e130555921ee4f3016a882081a42c17d67a02114a0", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5af9fa820a897334011bf71aa226f3b099d0c4d06ef650613e7a90908446a5a3", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "e67652cc4585615cf6d2a8a05b34e3ec77dae6ed606f9bd26c60d9e478b76d78", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "85dc333096440ae135c4afe0b419bcbfe9e51e58b48fa38051ad817ba9f51af7", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "5b62c5c453112ca8de804fcddd43ce51732b2d7cf4ba6e399b1a0488acc7dbdc", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "dbd15e65c6d03329028348d6c3bb52d9243e42135d162ca1a74937b098a73fca", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "b80775ea3e8a7639fe8c7eb5e8aaa32353050b2d12c1560f657f7465d9a16ffd", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "2d58310d1a3be273efe0013cff4717f417a90c8b994a5f711379d94fe9a65293", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "2d58310d1a3be273efe0013cff4717f417a90c8b994a5f711379d94fe9a65293", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "2d58310d1a3be273efe0013cff4717f417a90c8b994a5f711379d94fe9a65293", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2d58310d1a3be273efe0013cff4717f417a90c8b994a5f711379d94fe9a65293", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "20bfa811169cc72c72a636f8e7a34969b32d7e7deef6ecc71134efa360bac416", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "20bfa811169cc72c72a636f8e7a34969b32d7e7deef6ecc71134efa360bac416", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "20bfa811169cc72c72a636f8e7a34969b32d7e7deef6ecc71134efa360bac416", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "20bfa811169cc72c72a636f8e7a34969b32d7e7deef6ecc71134efa360bac416", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "aa9d6ce81a5fc06f125e99918570577042485c656591c917ed02e40ea842c78a", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "3ddcc5dd4a5a17fd2f9551a901dcbb72ec62d2d335ecce9c4b5bb45c8b29bc44", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "e616374910b08a968745f96c1cc60b9b795fc21aa12331e4b75b4095159c9699", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "e616374910b08a968745f96c1cc60b9b795fc21aa12331e4b75b4095159c9699", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "e10a6b55f2b2abfbf076494b9148edd7a7e2e36a742f566586a45867f0136534", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5f40c058a5ff09489e53897f189f821b6e26d0985c03f7f1bae6ed9eeba25f59", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "cfc6a8dc8e420ad366600e89fffab68fe288948fce3d0e95bb332d996331b64d", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "e10a6b55f2b2abfbf076494b9148edd7a7e2e36a742f566586a45867f0136534", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "8bd8498c64adc028064d48bd869cb49365f82ab33822cd7987fbf68bf0cebdf4", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "97c909f9928754727e437bb8cd6dae463e9b7c75aff6c98a050beae009046b71", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "97c909f9928754727e437bb8cd6dae463e9b7c75aff6c98a050beae009046b71", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "97c909f9928754727e437bb8cd6dae463e9b7c75aff6c98a050beae009046b71", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "d6bc2dfc7d636d52308b96b1369addd5610df297dcd251212aab9f8fa5b0d9bb", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "97c909f9928754727e437bb8cd6dae463e9b7c75aff6c98a050beae009046b71", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "01357ebe1e4154c0ec3293763ce504455ec0d6dd36f6b11eb1b23960c826c30f", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "d20595c485d96abcd96416f2d56d1e001edb25ddbb7fa692768ddd1e279e0983", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "dfe09c41ebcf8897f1fb7dcbe4b479f356bf50ce00e142d44b07b8f883940387", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "cdccdd024e7c9586a9b4d3ff886ea819f6d1584d193b07cce13e7b01f7600b99", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1e05bdf18ed34894bf25178fb5e605898f24b9c64b935ac5873efea505b7bf85", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "4f9f2529bd2ad2f559ed3890bcdef65f829e4ef02f54a2373c24fb94e4e8b13b", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "806b765273918b3b9d1baca4d0cf38a4671465fd355be9166ee5b4162c4760a7", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "1c8774e71df61f85b8f00ef7bf71f7381bdf422d39c155a1c9258ef02b7945eb", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ee25799ce00d8de08aab54b33c773d3f4f75ece65d7fc35ac55bdd5584d76ab8", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "8f3ca60ab5ba2fa3ba00b98be2d663e63077209cc19bc5c95e93784ae0d86498", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "2d2a997b63ec848b4d4a7b87f58f50f66ddbf115924e377d16c63811477c9c32", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "b5d4913f20569c6f0f2a5690d1c339033ce4897d71aa7bc632b624bc765e78a7", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "cace6c835f773b600b4a4930d9f6840d7ab0a808c0d3326cc85d8099a25a5928", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c1e5845151c8d4d9c0c4d2bbd19fb559eb605077e102456718a4a8ec9207e7d9", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "144d13e3b625bc9d1c5c8e47b32a835c467b2ae18e7f76b145cea08ea274b698", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "44e5e807ef05cf43a8abbb9b2621a902faef3561529c7fe31248568dedeade40", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "8f336aee871869e3939142e16bf2d0fa924121e8e24d8e9d06baf54edfb370da", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "14b65260503bd00c75f50ab948a0936fa0468c5ddace8be6593b2df9d399e4c0", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "cd004afee16259c5a7705f0d574c446139e719a1f5feff0f13f8c5aa2f9b0bc3", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "77620bb91b8c84db3c610e0c630c1efae68eddc7998b36e12011a8dfa5cffa16", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "56569367cf12a8e9ded3306336081f43120b797a4e96787b8b2db76cee9e2400", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7a5aac9ba5d2b513a730ec3e76d28c9db1b8fb12468b62736b6263de2869b200", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "4227552ff69b56618476a231bb790389a6b1573b770af97c1f343a7ac3aa331a", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "e67f0da266a9c07195e5d3d678cca4e689ed2b43ec61de447f387806f9856882", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "cf3d1e79cb00706e23d94cf9a1ac32d3f42f0513e7bc87cfe063352ffea58950", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "ea56e00208f99dadd9bd5d3e1e75b67c206482e811ae69d22abcac8da9c6adb6", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "a899e87c9051aab631c88c79225ffd556eeaa9d46461cc0f55286fe4e598fc8e", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "a854e4e578a5629ba5c8b74dbc6519c9e1f1764cfdd1d884da36676b69451714", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "168176d0e211723ef833f2f590fb3ab7231d0b4bfd0403b4f5824bf618abeff8", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "2ec77022be37aede9e6b6a09f462c2afbe5802925880cffc1b676e82c54e1470", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "7c709cf520bf86bc737cfe278a666c013c5e38c0f3f5374f317a49b965add59d", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "510517ef59bdcb8fd9e15230fb0a40696b584ee42d45c85a5a4ea43a410a390c", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "1a2cd9ea5076a654924f41bfeb5f49c54eccaf09f7f50cfa4001274ac6237b62", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "278b597e7ef047e80dded4a6fa0a294b955892165c0956e6a3dfa9689e2ef861", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "8a68104f433ec8f9b327c6826ddb71b4cc5be88ec852e357ab5b380e4f934fdc", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "7e9c2be855241bd0c96755ced9d3beb6c411749dde0d918e88df7d03236a2e40", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "1af177b236b272328a29e9d4441c64d0ed6a7bcdb67a6235eac3f243c68539fa", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "26defd93cb1fbba6aedbe794181b5b078299ecc4d5fce9dae4f870f57f10f6cc", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "4a79b1201b78fd45273c61a6edd8aa01d717e2c6507232fa0cb08267c9e5b287", +"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "f1fb1ee67386807393a362f6910daedc198fe2c6d06360bb2c6590c9f9445ccc", +"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "8af14f69bec0a8f64ffa1996ee974c9280f7cacd9447d24e3dc8e148088f295f", +"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "7e519594a5411f337f7c93bb20233b00d23bc1e7ec7d0d3976f759771dc836a9", +"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "ca4d2dc3517af2041aa099ba826aa1fe7a8c8381ef6025d0fefe3a24a582f434", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a89dfea39c76bc715ae57ce57ed1de24941eacaa072a30546fe241b6fa1e6427", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9d12244430ec6f1427d59cf3d59af1b909a91003ea3f9657268aed8590297095", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "70ab3b02e5d7c610df1e65cf42ad9f184d91d40cca4a26dced86005071e2ba89", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4cf9f2f1e7243ed1f2024c181adcda12fcd82a212f210b072dbf273a406c38e7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "7e369c16c4cfd8d1e09b299203b5ebcc0af70c9dbd664d1bc04d8828baefb90d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "f5d0e2fcfbbcefe05f046a2dbf54fd2ed74c76e9c926b763eb7a46de91f75238", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "0ed0c54d3ba36cd5e205e330a50879ef237a8a8b6b0e6234ab2330e79fa3fa2d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "70c576d094e4f7720560138de30b6078d973fad21f44967f1a59bcca16cbbf1d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "0d1a16e3f42ac18850365e424e9710bbe4dfedf73df2043f499108aa778295e3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "49968d037e5ff2424ab89a2b0fb629242e5e6fb3294a05d73e3bedaa29530908", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "675194822729bcfc76090d811cb9d55ceb82140f4aa0073996d868a0c5c16fef", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "3b25fae33614a1e984defb09565d1b46cf3b579c53f10417e94fc483b2fc05f5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "daebbf1a17c78a828724ffe6f15432657cd782507a4b846542b54b6c7153b113", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "0e3948efaa5909ae8ee6385f8f57b10cc6e9522fae2bbf9236db8cf6a646bb97", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "f33742168766450d4863ee0aa0b96e718af471d9688ad86be4bb5fffaa442ea0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "3eea256c0810654f4eb94e989aa97b0157c0d301f96403a9a22051603b91abfb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5f1926b6adb005d7377f96b9cb4b6d3be095774d2ef1d31aee9cee8a50169088", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "287ed69a86765fdd547c1834068c3355cc35d6681979866656a71f773223cbca", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "7523a6dca943f55750cec8df8170f9bdbb56b973f5248bb6df31257b8706bf8d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "a3a28645c57ea731297caaf61b3f22dcf88f5f77f68d62c3a3acb91c57aec891", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "dc4e84da3190e8bfeb2c6890e2ec6c32b8e642eac12a1fae5651115b7e64ca3a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "9820effaaf3edbc603866bf3a49dbe9071f9d1792bdd62f89d2dfc5715030a43", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "07dc82fdbe7a1c3a124fbf8a6c68c6c9a8d02bc86492a02287bfde19d2a1e500", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4b510796dea4cd364017e51fbba74eb1ad28d2e4c3b0df3c34ba8ae567994bad", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "7ac47a91be86c364117ea2362db45b376b5009355d3c1b92da55562e8a8ad254", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "35816bcec7ed4aed350d63889c95dc64fbe801756d97470a97fbc7c19780f9de", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "70569a9b47e9f1f2265b415760f498f8ac211f7112d1090d6c1e42595ab719c0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "383feeae8bbedadef027ada9813483331358f36883788a09bdae5f6104638bc5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "5ea6a34c0e6e1dd1464e0aab5a6817f34d24b836c690d31312bb5c540972bfa7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "fa712b190eaab994362a9e0f68799bb46f6f671a49ec38216e97c8012afd02fc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8870874357dcc7b34ed0135a660b9eac3636c34c3fc8c27a428dbc69368d6662", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "a1215867d681d2d73dcafe5171d7f87b68dbb3524fc147905ee3b163cab160d8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "edb30cb5e0d14b4076ca5d27a6bbd9b34a4a2f0edddbbd8810ee58f50974942d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "b92f07a6de65babcdeaa5d5b01c790b172a86eb9c1872caf5c3e4dae28563f6e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "27d4881c8f1c62b52b7febea9203df03759adc2d6bd19a10ec1ec7378480af34", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "bc8e20bef8e08e126b297d83f044f51ca998d29d93d2c7bc8a7af32ff8dc5dfd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "518890c2ca5f896470361153a7e2d6b3c78abb5d8b8a3804208a033b6fbd6bb0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3808bb61937effe345eb77ef9f2bdb29447a0a31bb238b6854f361141fec8e75", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "0ab06855c6a751f3e3af0080c22bbda27e1390b9779c37c4157f66f7d63b1557", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "c65fdcfd180b28b6f42adf1e9bc47adcecead74e61b0637cb219d144553a2092", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "75c53b9bf5cd53b90bf638b626e7797d8683f2f1293aaf5feea8e32718b079db", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a0497d2c8a7204e7d577a4dbfaf931d23b2ff338b3b13e2fa54ee896ab782983", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "8384664cb7c897f03659b622f22dd68c3a960b48de982d1fc81cbbd10d00f85f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "5b2228aa754753a6b41083a02ef28ff327cb700f052354dd44d672f814092b6e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "541ff465ebde7347ab44d1863dd4b7f3ae46e5e470b89bd2a2ec3ccc07bc4f5b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "813b855b86e1ae3296d89b16385277d956fae39ab47d2e177edfb7017c109328", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "6d06d7c2c13be1b8f83d85f495e3c0948c9c2fc95ae04aac338470d46dbb5ed7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "93d27d31874b1bfe9757af963211e3caf71a39da00b2cfb12cc3e963ac4f5b9d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "79e06f0b1a0206f6f7e1ca4914115bd3d569e98701f83bccb684c70b464da0d5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "e89cece565e92bcb04cfd3a2d7438ed451c20966b06c0db055acf7fc836204c8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "857a23a5fddfaf66af24a5e507afe03820b13a756ec0e7efc72459162c840d80", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ae225bfa8478017ef1bf520fec9294db04699d26971a77aaee682f26bd60679e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "c51d199f92eeb48bb8a3b0f949793090608085603367ac1f0d5a60b9ea4761a0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "05fd447a18daa4d1c028e020d2a2cfb26c9552addc0acfcd12582344acc221fe", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "6d59fc285723f653af222e13ef301e83fbe0df124ae4be9f37a504505a6e3947", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "f4e87c25b120f376f25a5924845cd7f810fbf6ddf4e73e12cca20655e20bed2e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "b3e43cde05d77956602b4ff8f89df5f258333f2c38d1064dab2c6d4f8bfb42c5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "9df3eb4dab4eafba7db60992159afa96b38807620f8042ef2bda303c8dc31c3a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "34707619806b490e07d3cdb5b26879e012b9cad06b435e5c722d6f78378b3e72", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "4eb0fdf3b32928ffdcfe4d72aa58918491d0eaaf9487ce5dbbcea57237e9d892", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "dcafb0621979381629e580dcf323dc815cfab7c3eb2d1bd003c85bfef5700d5f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e53e7fe45f5824fa5490ce10093cdc68d34d447fa90316c65736965e8d1e1c38", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "7675b216fc48ebda8c0e7c2c3ca8b93e7ee759894ba3b80ccdb401ecb986bed8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "dbe4e16517eac34de14fb79a1826a9333d19ee0e9109f8ba0b26374e811df690", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "969a41305bc68d07f91748e1350b2fe967623d2d6c5efc7d536009bcfaa979cf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "4b41e610966fbdc45dc3bf5a9ae01f646e399a510b24be4b8ac2299424c1bd41", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "2a4456cac86e87adcff7ef399823a4f790a0a409bd58839954c20c3d61316959", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "393ef2d99678f6a52cfc1c65ee0d060f1a16dca7c9cf43c2ac3d09ea33d00666", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "2803c91fed7471354d355523a7890a8036a7c41be286d089426f7e6d2d43ca7d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "5f2906b7bb6b4913880ca683eca52bc0429014e7b7ec09af33a2244f7a562ccb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "5ca6919ab0aeafef2c79fa03f22ab69e819aa01c31f3387b60272099dbe1375b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "58f5fe4fd0caa1c11e0f0f3fedf110f0e63685dd78d7fb3b303849417efc5c7a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "e18fe9fec7b8ce2a06554c364df22a6dc416d77bbfbd77b03b8888be0ab5f271", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2fa89cd2235744bdcd75b409b9d5c2d7eeb5e7fcae79e2394df947bfd9b49cdc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5ae15f516098a8f22602a7b17247eb49f0c3c545a09cc06f198f26d81b8a4ef2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4df33b852bf51d2ab75f171e3b37a7676b2eff56a7a6dab6eb0113594b7502d6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "92887ead70ef866928d5a0519d4411e023f94d3a4cef0421dcf552f2224fb211", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "73e6eaedcbe62f9566db6226752c6bfa3872d92fdb7e1fc8954b137cf51a9886", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "eb191ddbcbd48434df76cd917e41d7f59c0fafb802e2cb9deb99d1e26432dd1f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "7d0dfc10b8ce12767ed39aa56ac6ace9cfb2dc709c25b7d45127236d69268c9e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c375419413db2147a3b5095b4f6fe416a29a0c89964a18337150e7873af15751", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7c51f725de17a8c9a5207c5eac31a8e865a8bda2b0d2e1c785962def959b0283", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "c206fc84780ba3f2cbc6652ef35d02d66d1046ca9492c6ba807769624557a95e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2f260d448f202192c886d10b95b3d3efb4aa394c28092394999beae23ee87dc5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "253944b8129bc57e0cd020618111de6d70aa0d6cf48d89cd639d20055ea484f2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "2ec3976fa2f01f8869a9347b58ebe83d53b4a8968c7af481eaaf7142bac66f5c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "5e1b31078950f1af40b5228e99980921e1e12077449071e4518394a93f463a74", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "ca9ca31cd419bd7fbef6affb75ecb07fc75717e8262a65aa02fd6a3c5fdde0de", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c75b564121ef84db2ccbe17a2435c00b29da46250261ef32cea3f8286374f60c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "82bdfc162101a400e438ab1b6789c9eee05ec478c5781fe138c5bda9b33bc1a8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6f533a1a5b3fada14afbc0e892a8ef63e7002fc408f52744b034b70b66b1d3dd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "7602715af550cb7c702bb78ca604f482ed5c32dad773660908126f6f964321df", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "6502ee2a9f05bb936ba8764f15faeab580140bf136f349ff3c5a404c7df2c8dd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "94fef67f0d425fc2eced710497c5df158286974bdcdd96dd2a2cc89a02c9fd35", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "38a614eab8115b2587f1538ea6b972fe16de72415fb25c1c39c9acd3ce630f53", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "fb5a00f69cd126908dfe4d6626c66336616b835d00361ddb161fade6623fd591", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "9584d1dff13c0b781406e6653c63a3dc7858efe2150eb8c24492e8c9422275a3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "fbe420f46793cffa07d5ddc9f91f67b4afd756f436dfcfd2dac50cc33a16650a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "4e8aad72ff0eba78c8ecfff80a66fe1edba38c44219e9cd4c3e97237f904d067", +"T3T1_fr_cardano-test_derivations.py::test_bad_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "0034c23aa81ccf5ba0634c27b36ecb52e500bdf836ead6ef614ac0bf795405ea", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "2bb895e99e7d55d3fcbd57265e2789fd2a1ebe1ca6ca5ccbd194c07f75b7c0ef", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "e7695517ed9da7731f7abf846d2a50edb8628480c7e9237a4087b1696aafaed4", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "73c103d509ff5f1f1b6a55375237908da703d7219263f23cf56f62d24cb7de82", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "08763fd829edc79d494a6e32f9255cf7edb03ab0230236da21ad5bdb96e4b559", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "741f993d4e89974a44e0751b2f274b8c4a83c97ab4a92e7b55053c36f7938ba5", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "9b703427215c6fef7a3b06c3f370eaa9229fce7aad55b05227d417db36aad2e5", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "29543c0d99df8fee20c06ebf4a2e0b33ef386dadaf6f861c88a3dc8075f36733", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "a90b9fd59cd4a84f2e7609b342998667118a24f918064fc4a95cd72b1a2cdf6e", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "60c3aa5cf332139830571709b9294733e3e21a83abbe13f15c0f0f8cb60de700", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "1a3a795f924a89d88a6ae7c8f388d4ff9ee62e8720b74f3dd917a23f938f8a71", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "3d1ee9608c44c7e4121cccd2fea2eca37302cd747385623d946127987da05bdb", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "bc5e5647991426815fc7ac8441fc6927e32928a1e089ca05cb60c85bc55bf00e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "9322cea48a2146a0ce3d91c5b861dd9f9fcecadba175a057f4676d7bb4ecfea4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "4de7fc46fd600e835602305063f683e439c1d711162dc78cfb42b6c82397aa55", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "96392f22cfac2f73f9f56f630b49ce9ff17ea2ebadd2da0100081cd6739a7562", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "afe53165cef5bb38cdbb7aa6b41a425c9446d02808a5125fc8c0cfb7a220391c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "2bd921dc55acdcf7438c3e2e902ae9039c2323cc1069ee61eb491fe611c5ca8e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "edcbad5ab0769ea6ced664b4276506fc0ee01d87c3b573f291586b29628b9f96", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "7c3477ba403ce7163a6d0cbabe796785d87fb255fd630fc567854bb939307ffe", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "850f07ee446360dca5463213ebe4c1a7838311063afbb150185c7431c55d5de3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "ced4a954e5ff089559aeffc3d23c432c31238633f81d272c0b6c3ffd24bb3f79", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "840432b0cf857be4a38964abcf29824cb5988250ebf337c67b2fa54861ebc6a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9d835a084a859e791a6399fba4422bc5b33fe7c2138181ec27a05bafef5ccc0e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "8b4000d997a14ba48a31e66b905e49b7bb1440b84c7b9caf1283889ab3f9648f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "8b4000d997a14ba48a31e66b905e49b7bb1440b84c7b9caf1283889ab3f9648f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e6d7e982a40484b7b32f125843f43cfb376165291d141b7998242ffe5f27491a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "7131808794124636475d4006a5692961627361a4f2d0677c7730175dc0c5bd35", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "b84630e2985ad770172478b24b08efa8c3d74c606ae6e29a544a45208692ea21", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "df2a90ff989358979d271e81d4d131054fda83af36537eef58b4f39a3b4e3fe6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "79685af242a9f47a3ce3400bbca787d379a4f9d15f6ad93da4b22575cc491353", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "40c15a8bcef32606f457429d8182b576c9d54ba03566b62f989780beacd8f24c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "ae65007dd3539889db0e81c5ccf40edeb0a19d7b51c1acaecf9d43899fa6a11e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "51dc27e948b87f14125eba3427390eb02788a6e647dabcbce898351e398a0440", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "1c7ba3f0131b174911643412ce9fec1e4d80712b5b00d7d9fe856cf0df9dcab8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "79685af242a9f47a3ce3400bbca787d379a4f9d15f6ad93da4b22575cc491353", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "40c15a8bcef32606f457429d8182b576c9d54ba03566b62f989780beacd8f24c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cd5991b9252e8383070701617e21097ebb8e071d2c74401d4881ab9404958ce9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "86852fc7a9ea2283eacb1e67800bd61a6134767c97ca2119400f77ce5a97cf87", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b4e9dbdcfbf85c5162b7e8199b421a944f820a48c136fedd249c5524e7f96d18", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "cb922eb9a8ce311bdbdb69f34bec922db0c332c8235dc10d3da475743acacc20", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "875519bd84f64d0773913b725eff90b4f75156445c19f152c009bf67703166f8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "01cb8203466f6b8451f12d0adcb9486b9f723e68ae405ee632a0779ec5df84fd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "611cce105ff935951174415a2480f6c038a1904b9d88d1482b35ee6ea8cc64b5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "afd10bdd1f003a3b726e48128d96b53caeefe4a6b0f19fc0cbb5d992f0316ad9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a716ff6e49230c579997fb092209106cfad232727b188215d89e23e5811e1a62", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "bccf211174a44229f024ec465b12dca861dee9f9c8e2dfab3a6a753ef487f034", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "b60429c745ae0becb1c315a6076e503a7e256387e5b7c98401229076431bf7a0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "1185915d8e543bdbfe404189183bd7fa13cb8eb52ab96de7da349ac85706780e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cf57cf2bddbfa41a0a880c08370f91a8a3094e518bc48fb933298e91e547b35c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "2c203e8b9fde9d869f714fcbdd0ab8cf3bbae429091c72cdb920e82cbc561912", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "64d08b5f47d5578e045798142e02f5cf35c10262a4a8a37bde1f91f771ec6de4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2858dd586d3189df28e43fd8f2817438a9f5b3df08672477ea288dd4c5385e35", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "bbd809c63edcab4acf948ae89be0599b5dacfef1c002904cb7cf64e65500a7d6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "1e86489272f9c3a20e20a12a68a9b249a880b9316627bc0b4274810192c61428", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fc311e76173a334db4729cb93e2d394eef58371c7f3a64b50c41eeaa2da99086", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "11add003559ad7a6054b29b50e48d949037642569c3122f4e917e9895d7cd0fe", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e57fbebbe1ac79c0779a63622e4aa54b48b8b210877c0606c7e9427e424072f0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "c421d807cfc376eb673d0d6cfdff3e7351cf28f4d87f8138decb59eb4d6816dd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "05866a0df1693f530c003c1b1ada47487a81bcfcf4776270242da44c60292730", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "a590a401d340bef86b264988dbb5bdffffb22942514cf52347b1a27276c6961d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "1bd18ef412c1e82b483e5530212695ea0a6befb002e84289d687b496aabadea1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "c711d608d4842140ab05745b8837295c6bec48749281b1f1cb39a81da9db7225", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d7edc9c63a7d575907fc20071632bb724a7de1e2d074e877a8b2e12fc384ac87", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "fbdab8aa7beaa25fe453015a5bf0b45a4a13140ce5d669521f3dbe55b6aa29ec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "826bd0eeb3bb4622e78003c3c8feff47d1efbd3bae32b44635fc421ebc64cd4b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e40946bebf58a02599f6b15b925dd6f5ae0f18e2bb6c7fd22ae8eb7881261c23", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "300c2a859fe17bdd65513dfe40f6655b258de213e6e43463ca6da441f3d1ee1d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "2622280beb6b9b4746c58f67dd6421669b1121359e64605fde1a9dd1a5b29a3a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "e6ee915c8582103253269e0a9cbf2d4473f4288b7ad654d867c892411339a1c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a3e3ff8944c384b512b2fe8537fdcd53e99920bc89c8462dd5eddc80d5fce20d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "1440e5b1c20d4744b7a2fa5c2d9a848bd5add4ad2fa87eae90ff566cb5f45057", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "42e2a42f832a53ae07fca5388a33e1f07e3d2b3eec8a29fb406f8ca560286719", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "03320e010e7c08ac28d41cbb102e5654b891f6964a39fd33656f3f6e33cd720c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a755fc41677c3628e40ff4508a972667bd44deb23c46258832303dcc7711d81d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5abce6911400d989f08cb75ae408607c2f5771088bb91a55575b78d88808ef1b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "aedb32ca8568039c1cc71ac483000934d7a5188076f061edaebd7f6ea49f1cad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "24f0e9dc5cbba451ac3119697ea4569ea1d2a0be75cd571423fe33ec30fe668f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "a5a9b8eb38554cee95231111dcddfce7ee7838ab5e9c5c42fcc97228c36c9451", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "ba9e2e3e07c47325ac69898f168b6ce0e74edd35ddac6f063c42dc7ddbfab311", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7ffa274bcf94b72bfbd7072df810a8b1dd899d28c81d0482415d38a25c8bee4c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "e7b338cc1107eddbfdf76659417dfa32322e366c035ef673f1d0d38f471dad65", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "397471939486310d725939be4789857aabd2fbddf18a9f882d68833592e68f71", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "c48830f1fe486be37cc61a2a62ae9dbc25d0c7757f710349c171f60b32c70881", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b949e172ce64e738a8e260e0d95b95caa9f8a9b20862958041856af8b3c0eeed", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "f8ce3e5f85548ce0475a2a11b822e154186036b18739c84babb49950c9da20f5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "297db90d90fa9565785612ca42edf556837c7670ac803d398debf817dd429ac8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "416ed75db7169529f85f3cf75893a0caa6c4c3106ecec8514b522fc54e7a6144", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5464af7649c93fb4988d441e5bd1b186e70e58bb242b2485cf6e09834c252b76", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5464af7649c93fb4988d441e5bd1b186e70e58bb242b2485cf6e09834c252b76", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dd95da252686be6ee0ceb3755392b85ccbe0e490ec01cfc1fde9502e6bc245cc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e443db04506a13963ffff4b25baee68da344192abc2a6abbd333ebf2132855f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e443db04506a13963ffff4b25baee68da344192abc2a6abbd333ebf2132855f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "2e017db83648dd85b9fc58ffa0526bbce7d2e6a181f5201ca9d792a36fdb9221", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "098e3f653c834de2863812a34bc0f2b3e3de4836e00c33e1fe7127b64740c2b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1c349fe6ad4fd2eca7925d17e0ed535069e7f61aa123d8d76bd5f545aefbeefc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "669595a09dcb786c58b25ff463b96a38027a02529d0ec13e09d9bf190305a0f8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "2047989b638c547ed289705651ccfa2dbedfbe0d493657801ed781e945afb75f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "ddc4a9f7ed0f54076707ee844abcbe7d0e66439b0cd21b74a4fa38b6e1a30947", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "3d28395c7969924d6b9bd18c713ad6c41db94dd1cdb28f0c9ab4164e96df6084", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "e1551347f8089d3d7a2ce54b8817636f1f46367f0423fc3ca3ec6dce5ed69283", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "65e1cc8868891f4b01f64429f1442069d144c02cdd6e4b7833fc30ffc99629d4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "9322cea48a2146a0ce3d91c5b861dd9f9fcecadba175a057f4676d7bb4ecfea4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "7c3477ba403ce7163a6d0cbabe796785d87fb255fd630fc567854bb939307ffe", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0fdc58e809113559e3f9a3f739a006a106dfa01e1757c50d316029c11005f372", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6db89bbddc6de5b9f3ae744fbe765e78b36abe1d2426ab95134c70c64db9ffa8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6db89bbddc6de5b9f3ae744fbe765e78b36abe1d2426ab95134c70c64db9ffa8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c39f9083d2ff858fcd1e04b31f0146b7a1074dc4c3c941d3105c7a138e65c222", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "ca04585557133975682fe71f920fbeb57b0ebb2738f956e10ab8cb7da80afcd4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "e3d8a3f3bc458b71a78e4b01fc51a1f2a02efb1d67b2f154eacbc86ec10a8706", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "2e4519ac104c6b70fa9d3c42269473e414ba7183915822757cd3ac7457fd4cee", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "933b649dd0f682c6254d1bffb029bcadbe4e58127912ccc8a7ed893ecf3fe85d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "13a98e80ce505dd5ce8ae9cbb1657dd615350f1da18e44fda085e0d1ebc4eefc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "401c484a9ad40a075b293a80dc19c80086c7c1eb55fa8f5592f4b7d6e8cfe133", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "401c484a9ad40a075b293a80dc19c80086c7c1eb55fa8f5592f4b7d6e8cfe133", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "401c484a9ad40a075b293a80dc19c80086c7c1eb55fa8f5592f4b7d6e8cfe133", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "401c484a9ad40a075b293a80dc19c80086c7c1eb55fa8f5592f4b7d6e8cfe133", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "2e4519ac104c6b70fa9d3c42269473e414ba7183915822757cd3ac7457fd4cee", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "1663d57d48d694cae77da75016726ae83505e72c3ec6c648589c6bff4843ea8e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "3b72b41651bb6878466f04593e1b173a48ca77a89753c192e07b1280d7fa9cbf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "f38fe20d7d941da05e007e4310b7c960dd933eb46794ec4bf5df719bf1bb5dbb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "04517510797ed068991218b02800b5b76d8d3bb54c4f0e6bbcad818b1f67fd17", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "ee7d55f049b9a644bf39ed30507c8fd315c2f239e138212f11468c9fbe160c50", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "79ffa47696b5a55a5bd2cd1ce287c56e3b17336bf609019edb634528e15bdf70", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "115bb9e2349595148cb549e92314ba61e4134abe0aee27b94361b4f3e443c256", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "dff2aeb447be4dbe6ee18c6f06858ed8473b03fae005b131589d3acec94c09e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "240d427fc67d9fe9b355a0c338b2ca21e0f24202d7a4bc84f6393c7ec0e7cfde", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "4bc510c7688cd09bb7ad1c10031368a8cd50a3c72065a46710e5f9a12dbe0d13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "e78ca5170b2f6b1733d5d7bb1e0471e837b69cd76fa12205d6c15ba78b347da6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6db89bbddc6de5b9f3ae744fbe765e78b36abe1d2426ab95134c70c64db9ffa8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "f1fea7cfefe7db049657d51a5dcb09a3fc7bd7a5efb13bcdcdd5b04f758e0bac", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "6f1d766df944c28c2da2bb57e9298034faf9898f28dd41f1cd383cc70df11ed3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "754265df4d711a1b557dea77e24e43c247c43dd181344fe6c17216bf9732cb0b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "8f6a78bba61bf198cd55b82181a5de743cfe8031c76f912a2c5748d16ea96b68", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "f971b0da19675bc65aa7a83264b262054702ea58b834506d2536b071ddb08391", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_ethereum-test_definitions.py::test_builtin": "67c8767e9df44dbf8e1d7690fab63c1ca05d1528334c009a6af0589df5237466", +"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "4bd6d3311a0864951360d8fe0175723ebfe8ad58ca48c778aa33cb9b5e1b7186", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "c91068b117db6eeb00422f80147eaf45c4b2df4e78cc7492357ebf4878d86d0b", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "6577cb648044de03d3a464565ad031ea0259b05d57429973ba357a233d20174d", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "aace16c09bb50a5df0361d4ddb5e4027ceb5b238e3037ef8bae8d46f5f21fe9c", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "d37a7508c7ae422772d472b6d4f947c9b378c9010c0eda899adbd80ef093bf09", +"T3T1_fr_ethereum-test_definitions.py::test_external_token": "7762db7c0f9f4b403bf784c40d0242b12ff6418549392f24d67d388ea3ea54d2", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "9c870359a090c12b5a76c581e97cd1c9467afa04e6bad3e016512236fda4414e", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "9e7549dc5cacff7ccdc25757cce1520a399e085709637d7aa2d28a3fe0ecc474", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "478a1220607e3730d360a53f46afc7a74c654b701044e79b0b18afa28d8acebe", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "bf3ec4014e517a77f5f0c9d1cd17cdca3b1cd72a4d56d7eee2ebe797e651dacf", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "d0293dd3be56b373121cb9bc1bcfd2a81d5083c092099383a275446f1ce2a234", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "8f26090117591e281d635c7dac48e4e12295ada3447f5bc2cda78bda5317201d", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "350310ff9e822579ac8df1f94559fab2c11ed7b134ac2e71993250cc3186dee6", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "816545cc8ccb4de413470060c29c69b2795ac24e2646d718180c53606f27a3ff", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "e91addae17c24445ae6ff571ecb13862fb134a5513fe909ba3720ba8358dcb36", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "6dd7174da90b4e7931d3053ad82f72d701da353c500d7286c1e67386a2226187", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "17b47e89318a65fe336fc4d74ddc0b8ec66460f75c1f8bd9d0c24a7dbd9f6ea0", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "db88fc10d364e8a57a7167de449f85a711720587bb839becfed1f4ac61afa58e", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a196ff5110fd9abaa1ee18434dff02ca90c2ddf606ba89f2346e4cb7f33a611a", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "abe869a2c4cb3ee12ff630631f01673bcba28bfa7f5d15ae1df509d5816259c0", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "80625393faef56793943429409134569b2965ff917281d6a039eea9fadb5bb5e", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "53b7b4bda666efc233a161b2cd3b6f064f66ddc81606dc5ec788db695aa1ddd5", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "5a58071d5323292b93df023cb79cee8255c1063becc5ea7a6053ef4847db6a17", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e34617b6fda23ae7337a33c5e2ef7af7bc9bd2aee25d2229441ce38aedfc28cf", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "68546cd962abe4d13dc92860da39023e1ec58d023b1207aba28fb32e08f0e5c2", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "b1b9af6eb83d0952be8abee6d186d67db22076dd8087465d1351af5d0e55cf72", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "a174eaa47577896a5e8581acf46bb3c0a4952dce75578afdadba6b67ed9548eb", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "dd2d46b06eeb9233f7fff3906c7374e7ffc1f40631f0e14fcace38d5778b116f", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "2bdf652a0396e516223d135c5a3b569075d6b428f8f598002c5530f461784d78", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "b1b9af6eb83d0952be8abee6d186d67db22076dd8087465d1351af5d0e55cf72", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "b1b9af6eb83d0952be8abee6d186d67db22076dd8087465d1351af5d0e55cf72", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "b1b9af6eb83d0952be8abee6d186d67db22076dd8087465d1351af5d0e55cf72", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "363c6c4b9fa4b00a7604f3c61582ba9d025e195fbf1c428a957c993531994b14", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "45a4d5ece81d0d31c0e1c3e4dee1695736cd2ee5c4b9fd64af05ac8cacc7c3cb", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "73bf27350482361ff21831e68688448b871117ece67a0488b725b093c02252d3", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "a144153b0f528621adc29999aef7e392cfdd1dc7b1e466aad0d9c8008df4371b", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "ee54a86d26127692693bfc99dbb1e2f5bf64c9922f4afe22190d1f55f861d2e0", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "332337c13bb16571be061b83e34752404bcd80593da0f6e33015b10ccaf6fa0c", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "e3a3c1b64ced0634b04935660ad73f1335cf74cf77979f22e9fd9f5fd7f0c419", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "5873dfef9dcace64cd306bb7956dfadece4d10522805b24eaad9f6849d96db5e", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "92007879556df055fda5094671f03dc49abc0ab029eb42af952c69c65887a6c0", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0dfb3317cddcf8dbb14874653218a8b6157ab9ed378a13a9647d8a9469ffd2ee", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "4a790fb1f68d4483457b9127d421219d067bcd4cee8361d799bee6268bf73bfa", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "041d3c08c76e1c5326d804c3bcaaf10ef564a0d8029e332a97e4fcee06729241", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "4e1651f81d5268ceebac04bec2af8b9c7db696a4e5ead8dcfbb9a38758b118f5", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "f884e70a64acd742354df5219ec9093817d5de883bc3dbc0880e5582d394e75d", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "40a481679ca0cdb32ad6622c1e8e34a4a6959a6035ea6d681c40379230f50e9e", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "d9dd3262c777733f3ea508e36e966767cd6c9b31a209cebdf4ac49e22862009f", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "1385c4f806dfaaff617bf7d8d52c26515f0acdd3df59d724a4d13f5c46b1ea20", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "ffc3e24341d468a005828fa8eb82640f94a9a2564f04abb5ecfc2e348ee610ba", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "4a790fb1f68d4483457b9127d421219d067bcd4cee8361d799bee6268bf73bfa", +"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "8d421792e66da05af8f5d1cf1df4790e195763ae82068cf84cac3c8882cadd89", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "acaf80106083e7325d3e7477ffb2d0b60a6dfeeaca6466878d3c788ed5562fc5", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "bbcb4a4da91189d40e86781c8902c214b74f7a12415565807e61fe8f711a36df", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "319256b1815cab2c8da99f520c284858dcf22f69fd0c752a11fc379bc7f737f8", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "bbcb4a4da91189d40e86781c8902c214b74f7a12415565807e61fe8f711a36df", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "6d601fb28218fbd4d22a1898bd04b70b84794f3fdce55ca29b689901e45b356d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "6d601fb28218fbd4d22a1898bd04b70b84794f3fdce55ca29b689901e45b356d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "ae28f28ebc1e29edbb789208dde51416cd7726cc2fe1fd15544c143038ad3ca4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4af80f2349efcfa852dafc0d741259a2d1960d59fb3edf04b59bd47b63de36db", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "27e4e1947dfcae55dffd6c1ed099d745b979f299db981a2bad2e6ef80a29afa0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "4d8b627605265a99fcf77cedd98a2ea440fc15d343347aed1d074e58aa915c2b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "82aaf7cd3831f2943b8f1304f51bcb2566fccb139db63e17ec7d3f7d820b72bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "99e852c65e7dc561806b3ffa46a1502afc5ead4dc86916945180d096f2a965ff", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "1751c8e092d3f919a8ad7ad7d304ab88ccd0bf3c5108c9d102519bcf0bfb1b59", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "f241c0de1caff316d2a3daac54d9f0302dc71c22456dcc5fb998323c815703da", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ea8983209137f41b99fbff964ff4271fe0be0c474f7bacd1ebecec71f57cd786", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "602cac0e496107343f58ac68b37aa77d7b1b0e847d62c8f873989446f7a0928e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ea8983209137f41b99fbff964ff4271fe0be0c474f7bacd1ebecec71f57cd786", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "25a4c60713a6a9ec3dbafc760462ab8a378fbeba9a998dbab5095c57fc1e574b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "25a4c60713a6a9ec3dbafc760462ab8a378fbeba9a998dbab5095c57fc1e574b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "2ff563b81231cf4f785443e8931cc0342070271f73c8653cf4baa605c41fa5f1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "fc051c8b9ab6eb9a7f3883a7b3ab91cd4668b9966062099429b63326ef83e9f6", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "ad2ac9a7528213f77ec210cd63d272c0ef417c7b51b54a2c8c7a2742f653ba06", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "4d8b627605265a99fcf77cedd98a2ea440fc15d343347aed1d074e58aa915c2b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8cdbd9a9cde54bf0e6eff279d0333e5fbf68484bcda8b23ac8374663b8b58847", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6a31e73692b546ef11e335c303f3145c574c85d6c60d2e7333b1f62413268fdc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b408d13fecc869247144b6bf4b6952fb7148d3419bd19fad2fa00988407ef46d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "50092b33252ef25bf10784a0654d29c7694488ca6aa0d0850b2b1f1045c46752", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3217bcb9bb34f65abbb635493b78d0fbf52c8f6ae149907048ae47c9135d5564", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "12310fcc418711017eb0015d6acbdc6064f1f53d1bc76caa8d9ea4313cfb8db9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "82aaf7cd3831f2943b8f1304f51bcb2566fccb139db63e17ec7d3f7d820b72bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "ae28f28ebc1e29edbb789208dde51416cd7726cc2fe1fd15544c143038ad3ca4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "38b2697f12dc56a4328c8f938f3b0884f6bb70b42069bdddf06a86153402c55d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "27e4e1947dfcae55dffd6c1ed099d745b979f299db981a2bad2e6ef80a29afa0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "8404c0643303db713f629dc454aeacd376562faaf00f1bbb6f62383c9aceacfd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "02079836284ca88edc2d4326bc38edc8f3abc146b61169ac163439fe7a0de450", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "82aaf7cd3831f2943b8f1304f51bcb2566fccb139db63e17ec7d3f7d820b72bc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8cdbd9a9cde54bf0e6eff279d0333e5fbf68484bcda8b23ac8374663b8b58847", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "2ff563b81231cf4f785443e8931cc0342070271f73c8653cf4baa605c41fa5f1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "6f9946fbe6b68cdddc1f5d696702290a9dea6fa3089faf4a21ed5b026eb553d2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "ad2ac9a7528213f77ec210cd63d272c0ef417c7b51b54a2c8c7a2742f653ba06", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "0be25aedf194561e3b72c28b31f72b6536f9d2797c56e5e1ec6e7096d608bbe2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "16d3b88032ef4c3d3e067bdc5e09b8f971cf95a41245c8b96d5a68a55309ef49", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8cdbd9a9cde54bf0e6eff279d0333e5fbf68484bcda8b23ac8374663b8b58847", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "c4627c506708f42826c4dbda612b46e2ce96008bcc50eec857b8a153ea911f4e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "c4627c506708f42826c4dbda612b46e2ce96008bcc50eec857b8a153ea911f4e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "19ad0ff14d26ba7f57652e7476ce02dbd9eabd50db2345c4f9ddbff5eb95b4a1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "77435aebc290219b35664b4a52d2648e6878ee5f8dfdad4dbc22282e7df95d45", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "acbd170515091ec2d15d344a9577e38d205dd99f929d6c69af4cd4af59bf4dee", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "acbd170515091ec2d15d344a9577e38d205dd99f929d6c69af4cd4af59bf4dee", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "a2d8b1329bded90a2e99f8e5920a28cf4135e49af84c447ad1440e0daf37e00f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "a2d8b1329bded90a2e99f8e5920a28cf4135e49af84c447ad1440e0daf37e00f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "751905bc09cdbc9a353ad517d46848d45caf8f63e7aca7e371cff78a00cb9fdc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "751905bc09cdbc9a353ad517d46848d45caf8f63e7aca7e371cff78a00cb9fdc", +"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "b24b7f15c76dadf1138aa483e567b2390d66ecea987c3a09af7879fede9a1103", +"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "b24b7f15c76dadf1138aa483e567b2390d66ecea987c3a09af7879fede9a1103", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "2d1b18bb02eaddcc9c99a6010fbfedce78221c90a3e55183986ecb73962f4717", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "2ac0170e500a2d24630ac88331bfcce6e9ebecb35f2c7b2f06ee370b2047cd47", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "8ce10a04960bd8e0abe391c0f63697ad322d38f334f991c20e8123d5337e9dc5", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "421e0f0780a90abdbb1ab50c1547fb01669f04d6b28acf5127b3ea5ac7bae0ae", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "38cd8d8ade9decb1930e240a3b490b31ebf69027d7b581018a9ff188c9ffcb07", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a63b906ecbb6b311ecfe544b2109e7d545254bab598cb73f134f72c842b0dc08", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "cb8f5e180306894e1c7cfa7921f85776603bdf871d71a3be925a83d72c7c16cb", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "ffa4cba84a299c1c33301bd3f13d678a255f23b96332997bbb86441182255959", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "be89eb803e0a58da4ec7a050031cf3e0727be7b4a331d44192745107d6e9ef2a", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "1e9f3de67a43953a5c9d19aeff9f3e15b5bf482a63f54aed108a038b16051d55", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "b25da5b80fdf5e80c59f792a39168bf3e8041655c98c9c893fd86a2ad114bedf", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "c6de82bcadf41a3208ab39abc11f9421f85a46aacf5c36c3fc646afe4f7ea87c", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "685253d40429a0edd28ad832f06b339f2705f07bbff4b203464ac6b02dc908f4", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "a195bbaa33940c1a2a0523993b8c00638a7672f1a24f4d35dad04718b34e1ae7", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "799a93454f3a3a9d5f4b70010eb4eb9292a8aea36765209317708b244d89ebbd", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ab4995c64be749a49e6fd82f08ba45446225493a0ecac052f706142e3f273999", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "f1a3a002fa35c2003757b6bc1b40c46d9938a1829c342687ce206f795cc0294c", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", +"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "b7f780b9208648554f05e24301c4960d9c36f4f006ad808055d829f0cef87df0", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "e1f7bdf0e367666daa35c0b23b79b3bab6aff0ce79279098e1f6bd2a9d956bc3", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "8175582ccfe1872cf7f8d01cad6b0fee8932bbb69258a227f8f672bee1ea663f", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "a629fb76ca70ec0abe463431bfb39f039c7d3303b7a6ae9fddfbed2602cf0239", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "c7fc56e70f525059b150204a6cde742d16bff349388df734f3cef04d90749ed3", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "44a46761cf9531f8d1e96d91a2025ea0974dba5a7bd10d40b544fd0ec93e83df", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "7bc7bc8ad76cf11bc82889eb8818073668f3f3cc8f8da9aba423d21a7d82f345", +"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "bdc34e8d827b81d397336e835b4b901e0b6c83ea49d4e3110197b3dea7db3ccb", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b9faced16e759ec0c430f3388c7bb3f60c4c52c389182828631d02b86b72626b", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "caeb6a82201f2727fd832e380510fc06058ea69754c3aefccb198c5109f3bbd0", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0f8d21bf40fff1a7996d720621cd55af05b5d814e61b214588d32f07e07b768d", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c884a42a6ea5495cd42c465463680b79d28e446336789243074a8dd745ffc941", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "b143b00f8c6678c279414aa7266756f7514f35e7a75491c0a21a4abc52e6f009", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c4b62749b1e0aca6bf0d0f8951144d6019f1e78f088f664bc4c8a2d296c20fa5", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "5c8d8dcc4b2553dd0be5cd9fbc69c184a376af43fbfac71e88790a765a662131", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "51888a3a8a96160884652b8e65a1cc325d7fc9ba31f60e9ee5b125cac80b2006", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "74f7f48e2f426c5b459eacfeb6d36a4a6bb56c54538a4b9214d6525874b846b6", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "74a9b7d09b501794e830075ea76da402211dd23f8211ceffd743742a22a226c5", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a6cffd84b01c5bacb7b40d240b8d4c8e2a54becc63017d81d49441463be148e8", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c5fc0281d244e66ee511d9a93e117a8e9417dbaa758d1957ef7972f472b84aaa", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c1e0f33dee786dcf2eb40fcb9813ae47f0abf64419b295fae4b9f19cee913f43", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c0d2372421e9b0ec7621f8b18ae95a8dcde4223e0038f885286f3ddaf112852d", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "95dc24a40c282dcd6ea597a8e72b0a16c0f5881b157a1efa5111d342713d58cf", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c4b62749b1e0aca6bf0d0f8951144d6019f1e78f088f664bc4c8a2d296c20fa5", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e05fab455d68b55ca7831dbdf4e08c3a53311e23f7a2c44b3b8bda0ca439c516", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "48e5fcdbb33d62434dd7b51cf28c19f4d9091bf1a48fbb78d42a0e028cf5f56b", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "83239fcbfadb135314cdb7b4eae78b51dc9a01e0f3c332d38d922a503ee654eb", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "e0691f0d1395d64de66bb48056fc6b31a0088020155e3ab79cb9c632e53a4d45", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "1e0da201b9e1a0394b1086cc671ce46abaad762d585ade31cefe9668aaa08b0f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "aee0025e0a75ea7925f877af6858a68392c6a834f6704838ae4fe6e78040998c", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8e7cb8ad1ecd59b241fb75cb230911de8b7e8d609345d0a2f53bbd84cc3e9fe6", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "511dc0a8ea3c40bb09f63d4f09517a41967d7563668d80fe13c1bbb29c28396f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b2a5a7011028f184d6da753b1c437d3f31f4e98332ff7960d28a7423c8de5605", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "516d32157b752a89874510597a26892e53dbbd4f677b1b6c86020a33b14f8694", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2e0b814a835653d912cbe9a761b547bdf79a7026964abdcb9071ec3aef826c20", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d1f3fd3a58191fd28af2db767adbe42160f1a5d3ee0947392c87e7c5ecbd0662", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "998efd6d46bbf1cdd62343b003c88e38d56f7a3e130d99ba180ae2037cc42a2f", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dabe3aef1f340109bc10dfd8ca1f4c19b7c7766a49d6c66cd34223333d5b1327", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4b394e48a88d3c9c54c06e5141ba118af44d8c86dfbccaa615cc1f3ae3efb493", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "13a7258b9b282483e203754485aa63eabff5404f798086483edc3d31612dbb86", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f4c697f10bfbe14542781136515db8914d66e1c39741fd8cab76a2be8609a754", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f1f8f71d34b041b9987c6ea2675565c8d292a53600e8f29aa59874b0656eb4fa", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "7586403febf60ba0242cb7fdfc17d000175161e40071db42015a4ad526a10a47", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0e568c9ddc56d77ad6265d8c294bf720d31ef8b5d3103803221fddfdd7ab51f1", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "087c6611dfb320dd50493a08e28762a837bdcf01583701805b0cad85621b3897", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "77974eea37c268b70e570186342021338d92d2a7bfaa93925674d62262c2ff4d", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "abcc683287e1450e51a7769cce5f869fa5dfc0380d6e8d8a7070fb296338bb8f", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b4f333fbf6ff2ddb6e7c31194bf9aca345ab79be81951b753cd978b1e2109db7", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "55f90ebfbc26b5606c2770978c4b3f3643235e78c35bced3c86a30ccd1f9ff44", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a40663596ba86b4fdec86ce1c23712702c635d2a9835f6117a2a015774d93182", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "752c880de37f1903d39d8803bd8d8a65893f0e48094fad1b0760579ce6ab865c", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "c23ec7f739fb1d8d9f046fd629d8608e929c9d07708e4a61f06bd75f078edb8b", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8aaeb6aeafaac55e9084ee5ca3a44bda8ec541f80323f52e5dca6b1d30be7228", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "fa0c465fd593b2102abc289f2600d65762ef69f68b98da8c27f0e94d90b8d6a5", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "be3a950fee335a2f4d690cc4022c944cb234c898981370680c4cfff63d727d4e", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "924624ca84abf41d92c3b22bde4eef5a4bf7d108b4c288ec5308f1612a1413df", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c631e73a5014c08d4046a7b37eec16d75fcd36b5dd01b57b69de5825f47a31ea", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "166b32ada10b4775a94b3c1ad9ca66d2bc2e6a3bfb3700b0eab6c46120d6b28a", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1ee1b0a577e07d2790765390bcd14122b6130c8acc3ebc13573387fffe176e33", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "9ca7952bb8641f76a8cdcb7195b5cf1a9fdf3e46c758307bc11e1ec59694c653", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b7b60fc965dd4bb068f47a5f475cd35c79e5715363df2f735697bda9c7dce8d9", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "1815a21af0bf176d0d5a0fb3125aa1e74a269f3f0d730c539b4820dc86538cab", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "73138a1c573217ba207be30cac763c3beed33e18c72156ef5c7d4ce36b06c581", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "121665ebe0581e91c394a54a65296898e0b3298dd819d096ee87e026cc1466f7", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "2bc54704fed75626399acee49cfeb8bd8fb58134448b0ee91fc169df2b9488fe", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "73138a1c573217ba207be30cac763c3beed33e18c72156ef5c7d4ce36b06c581", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "121665ebe0581e91c394a54a65296898e0b3298dd819d096ee87e026cc1466f7", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "2bc54704fed75626399acee49cfeb8bd8fb58134448b0ee91fc169df2b9488fe", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "06a15bb2e40d3348eac005aaaa45ff9e4c7d6cf08523ec0bcdcf2ac808673a73", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "692713e518b464ae16556e585c88a2b1830e93dcd8f7440594341e1098769268", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "eb2527a3eab1fb4091d4664c37a75080621c7af9ded9620043bcab591b19bd6d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "dd582ba26d3e421b5e5c2ee107abbb0e01a3a83c04021e719f9a446d3f0022c3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "e31b1f4cf2bebe485cbe90822e475305f6cd855ac6e1a6c553dfa8ca8d3d7c66", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "8fe22dfd78404b0f77b1ba6b73545031de1fff3a8439537294d6a7bb6480916d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "74c58b5c539c766fd5bedd22dca9a365e7ea3ba4c68989f48b5696d4fbf42a96", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "107cb3085f65d4d7b9e93824b1ce864c154b13bc58e5cd53d166ff813cea9b89", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "b1b2aab9d44ecb5ce9f113b087eb9bf664a64501e25acc9c8655bcfd8389f1fc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "fdc2bff3ed2f7086b5d79893402b79e1b6888d61be550974dfa13ee45edb63a1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "3c32ddfeae2472fdca8ce944bccbe63cfacec1d575f0f268f183d59cca517215", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "3bcffd74fb3f7cc8418b282d13b0ec26aca86a718b95ee6e83a8934afa0dfb04", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "af85911c006ab50e66721e5f42ca084b727698087e117bf39b3150a9bb33b0dd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "9492403652cde04a307bd174ea49c03f28be1635fe3f2c1e701c1309cf57db7f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2c62e6cb2ea6692f0677b95ad5a9d0c05676a548c49139217a33a1e3ea42b776", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "8c523153906ecef92b4ebc1eb7e21f8224bf133f1b5af580b89529c8f95a2182", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "56d8adcbf5458c927c8e5bb203a81f849fcf59c7450df810cc96d0dc7ef06619", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "bca56da9f719f2f4e77be7110d5d0a6f03c582cd4b5859618d41b9fa8ea74ae0", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "063294d2fe7907ee6933b675c4fce6460972499430850ef65852ead0679bf0d8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "5d519b11d9af0182e840955ca698f2af891490c2d3a6eed42eeeb7031e506e45", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f6ec1f89fddd32fe6e5059968b821edf9f2e3f50f1a8668e97729ccefcffe61a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f6ec1f89fddd32fe6e5059968b821edf9f2e3f50f1a8668e97729ccefcffe61a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "20ec88d9558ed2615dac83623f501c68d90a6c3c0cfcfc2fbf79b4b07e01d775", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9f8b68347904deb2ee2fbcf56d1c8d10b2707d1f518941a06abe81e61655f2d6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "eb9936fdb75464608e5885b0180cf91c9346cb108ada8ec10c6a404e83fde187", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "dd17f604c3b8e96eef876c5b51483d76b75d586f9897a8b12dd79e092bc25c6b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "cfb4b89ee275bfcc344a17fd352df98028ca131d2be472b83fe5998a44071b47", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b03c3e468157b485a78230275ca85c27c1d30181fdc2d511411eefd237f6fbed", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "5edfa81a27847fe899fd6b93b00c72c427a66dc46b701a50d2ad40b5ccd3461c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "1ba1d38d29b1cb1f4372c12c07091bdf2d359f9794ff15799075fe078221c72d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "cf2ae3a58c849547e8f58434c10ef72e7ac3a9829eb284fc2918f1fffefa89c6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "b4c06082d7ad15bbe29aa5239c4e4d8ffb4b140389e6cfbbb9fc1ca4729d332a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "9237d7a90233e8e0bbb4793e800b34aa67fe4ddd786388679b9852345f67c269", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "79f6c8b99a4fdab4c05651f716b5d4852c41d936eb3894b3177d9932b8d2a869", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "33a93c29bf97fd66ef052903eb8da7334e19b0c8f257fc7debf8bad7c034e999", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "21f8b51833cc2e05aec163eb0c9274ac50e12a9619ee0f7a8c880688a5d3b78b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "008d874de89226097496b0d1cf3628bfb0fe8868c205324b735b37ab7373cf93", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "fc71fc83e207e9cdff4b3d3b15307857db446e95dc25560505ca9b499513b00f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "d5d9f2222a9b407a18392655ad1c802964de763f205695623e6aacc613e2b2f3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "ec68f00e9b35fc6399dd109cb711d236366336039c3e48eb5e683530e9201361", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "c2bcb9712395045acab520e3adf53f1a9c0d2d83f869d19fe509e5f5dde20af3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "4ee4bc848a3c2bc1ed5fa31b2e73979a0a651fc515f9d065c7555a8ecabbb8c1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "4cf8a9618392383121de68309d69d9f3c4bd9cfce43f78aaedfa60917655086a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "f7de3fd9f2ca6c659e4b230227489e2babc96445c28891dac47d1823a9ffd9ae", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "aa02a2309ef4a62a6a008fe1881b608dfa5b49c9e6d87565e5c5724e7e10cdf7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cb7c30dc4729a5dd3150702b88b746a21bc3b89cbdfc9e90d096479366fae852", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "c378d5b4300de763ee0d59a47d479ad1df8d56d8985a1c7ba61b7bbb83329c7d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9435a4e0a42823e3a77435eb0068f557f3c7bcfd058bf033f767919477a54098", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0acb6748bff9cf01cc611ca1faf84319b2ed6917bcf5f5b6e23f2e7732a11552", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "d8d911fa85dc6456b662cac5b08d6fff315ae14533d52f07e671ac2a644207cd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "613b1be22f63cefe19e8199a49051ca461aab1085f3667bbf52f573cd2edfc5b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "174da7516b314fdac74535a055b09adcb73de121da3b29ab6c981911c0587a9a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "1f680df399fba16148c64ad3de8341b8b312c44f8fe0e2f2b56fcfaac01dd3b5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "1cc130381b448bd6c0fd0162195136bf0b437c91696abf46b3926a8a559699df", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "cb618edb50815d9025d3c5d6fe28d947af77b9a883bcf1bb035c1937f4bbb0e6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "54c0b7c28dc12aeb137b71cb560161637b61368b94eeb56cff6d43e0422400c4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "788e3ff0803302f9918fd4b7d10af68d03fbac7890e5a0fd3025b0a5b2a79e28", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "6952a72377557fed590a81f39d56abb190175441f68fe56f83480ccc76cdab12", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "2c9c8be70e8ea9e5c886bef3fafa85c9a881302869e44a4c7b2718e7908af859", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "eb9936fdb75464608e5885b0180cf91c9346cb108ada8ec10c6a404e83fde187", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "8d00a37b189c174e6058031699effc83bbe7a446c45412d659eb5081fabb13b7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "3b64c7f2005595ee781927e7e9c967dda474c78c2d34685abb8307d09fba3dc8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "783d201240d8433c9dd84dde8387d141e60d91fcbcae4e91855a88a3c854d1a5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d53c4c828d25b5e0a3c9fe6a9e17cc4b9fb3f547f701257ab7891ff5bfd66b4c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "d32a8ab3109b27058efffbad17520884f43ce3839787c8fb1f97e41c643bef8e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "11c6dd578c7468bfc443cb97967bd4c6b6fb03338084621a27ba7feb08a1fe94", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "2ca0090afff7e7ed9aead35e22f2f57e517a2e1b341536e6595ff84631ee4224", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "173e16d469ec05775cb9dd5b67f1993347b7ebaa0392dff6b1fe943af2e96699", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d1f620a8618935f4b5692f0420728a89021db57e48451eb5e2f1d4c83ac08ca7", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "6f4bd1e638b63688556e59da4b78a0ae40abeb4e0be97ca417273f25af4fb56d", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "37e5a71e19cd843154317036427e23b4453b3b0223305d03fd29924351270b09", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "c7c995c751b9d82207007f7d1948e7038f38dd1081fbb96a1c9b791058a263bc", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ca94e42faebb95cd099d37b0956cb1de235fffb4f296cdd0849b89f656bd380e", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "df16c57f0a03fd3e5e31cf14b00ccd4ffd4a2ac2b68cdafc30a825bfc491c2b5", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "a1d152c41fc19f1bd00917d44059a9a78b7128e681fc70818ed14ecf72d6f1c1", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a31b0d634de69afaa4b08f134363f5ac88830ba7e6d0f506c8ad1c8330c5f707", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "6568ac06c7513709d31ee17381621c51082536791818c370ddff35edeb33d522", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "4e4ca7e97cf27a1827b5fe5b77fdcb0b41a1ddaf297daeed9ba78e6dc17b02e1", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d4ef793bf444bb68467e07a3ad3e5cceba6de352653c58eff49db1e7fcbac5c9", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5db408a9d5e841f1b79986a5a20dfd03918d059f525da825d3ed9766b192d5c3", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "62073a601e77acdf7c64ff1a4b6d5cda71812eeed9832d456f2a6f86a06aaaac", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "74265e372e971a44aa6bbdda6a596121bfaaa30240b1f2ae0219c0730419a2a4", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "93596bc284aa970b4c1609eee148901813bce796f56880a7f67bc0b011a79c50", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "d930db526ee011c18ef9a6380440bdf7d6632024141203bb1ef982bf42603fb0", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "937b3a35442d0bd2f37a2dec6b35ecb829f1eb8cbee21830898d463d197cae45", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "769efd2f1e9f5a7e9acf09b3f02d8d69438884ac7ee132d2ab84e6d86e65e748", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "e8d0e2477d0552220bacbab96f383b9c31aa0a41e1104910a1fe5dd8df81e6d8", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "06a1b7aa371008a322f903430ea9f267817f434030a54771e5a710b26ed0d353", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c45b02ce0916c96a2efe644aa88472597acbc3d191c7f60d4e38a9ac27cd5c9c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "d4c9a9ee5e5b1e3915194f3cf795e8e230013724908f5166c3af48a67c7c5530", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "7e3078655f11e7297c13b7c25260bae6c6d4901a9e45765f8f89077089f2aa6f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "0ff6e4693b9855eb677557e166ba73f33c3f628e80e260ed06be723e00cd0b53", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "886c89a92893700943c11ff73504369fe0411ef2f70f107f0925ab3bf022aaf3", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "67667d51f389501e2318d672e31d7078dc6253179f4f7da83fd633c73a8f2932", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "c8bd9f43b97db529c6946129e557a3b0423806a6932aadb2d85eb7de4159c387", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "764fa563201805eaec26531206de251416c845d6da163271aa42b246359ad332", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "65108dac0fa1b7669b063fed883f6ead0775958c4fc48a536d0c4ad772de72c3", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "bd1a6c044d89f1acc450deb67284559f0bb570d1ab7b47e40424036ed272debb", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "b036fe0ff2b45d7ff70ae990e08da460a250d7eee13dc54e0c2f8d6b91e6c0e1", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "aeecb15944e5d39d7c733f1d94ad0731e0d10a974b8d5b645bd8c040971185de", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "a0da8509681ef430bc7600dd9b1a0d2119e5ec8ffb21263a2e35a3c44f59cec5", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "eeb106c31b7e8dc4f83e757fdf6ce1b70d7af45e912e35184d7d8ad270c2c737", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "a66fe9ebbfb8fcd4500efbff76a5f22e87a4da58bf7140881ce0b30219b4437c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "be72cf17cbbf62b7251238d8cadd1b3043db0503d3140038c954037956835bd5", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "9e7fe5b04847e4f6902156a86548ec8f81fc1fd5dcc076aa1f56b7b74fdc7c1f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "759e67239bb395d20ce07669675a659a792a19cd8e470bc65d4574c976129a18", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "eaa8e81efe518a715f7e28d373128c7c20e7e828eaa0128a8fa7fb25d865bdc6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "95cd8519feff0bf3756dad4133cf914a683145cc6563dc77877d322a3db186fc", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "1094dd80f6c96bd2ff43d67fb053e56fe1a7e87d52ed0a7c4465b7b430d1e4cd", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "63481d0d961da33caf43a001ead7c386a22c0afe3452e9c60c7cd2c7d2c89089", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "3c000c9b4b9ea1e48fe9d809d5cfac8cc35bab6d289f5260a546513c6db7f636", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "e0d7651e54df29375f7b5221bb94b983cb7f349e5abffebc3488b602d32ea06a", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "82a04cce8c5c38f119d4649d69e42b261f727ae8ad511b896f818136cd2be1ef", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "f10186d619035805ee45f38aacf21022f078f541fbd4ff45076fd8107b7f692e", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "8b16638e88ca26e4dcddd4812a4f09f9af331a04037b04bfb0556a537ecc2cfc", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "4f14a82155a08aa514be252eb9d4f01b38b6ea7b43e981e32111882b9f173bf4", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "5e4edd577fb0562b4c0c0d7908a4ea6b90fc1389147d5887bc0173b666aaa561", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "110b726c2d0b8210860d0e00661bd0b29ed0f299958bc6db121e4dc8839f2aa2", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "759e67239bb395d20ce07669675a659a792a19cd8e470bc65d4574c976129a18", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "d5b5d074f305b78b2ccddaf9630a59c7b8a8641b764992b60df02549d98acf80", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "dc3ad0a199122a1d9a040565201c2ad67ec548f566f2d59d785ebf26c0be3464", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "eaa3fc7d1383daac658bbcfc2dd21c416b7149e110fee29f33492c6def8a5826", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "3ffc14a4dc97479c966faff6e316ab28a65e0532d4159487d924a7013bb80aa4", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a80b6429553b4949006520d0a0105ea4fc01d87953c709f13159a8a2bc5da9d9", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ae926fda5ddab590b6dda1f98b9685e536555efba45091b5b8fbe71825960b0a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "60b6c45ef4969e4d4df1c70fb5f7733644a16fefe8333ac0f7f16374b138d6af", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8ca70b65b8298335f00b0cee5ef6eb7f1cbea8bfb81a58f52c7a876e6d9fb0a7", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "399b51028eec60498c5e9af6153a804991e9291f4ece2164efb9686cd836ec45", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "3014ce763a78c5752c1382b262d3cb822e877271367b5e38a0f42b6be8a59fe5", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "22f3d9ee97ea4f881bf6b5442f97555c474af2d56de0f33eb6698f6e5ade4254", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "22f3d9ee97ea4f881bf6b5442f97555c474af2d56de0f33eb6698f6e5ade4254", +"T3T1_fr_test_basic.py::test_capabilities": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_basic.py::test_device_id_different": "aef9233d55505622e52aaf7153102f6f74f7f23d66061e47c71f8d5e026da24c", +"T3T1_fr_test_basic.py::test_device_id_same": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_basic.py::test_features": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_basic.py::test_ping": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_busy_state.py::test_busy_expiry": "93c796b8a32e1df45e41b51c642ca5520a4a46205e56926a1b6ed5e80b7b7032", +"T3T1_fr_test_busy_state.py::test_busy_state": "f869087a0ca873af2cecdc79bcbe0bd596460998e874fafccd1ae8d5d5cceb8c", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "f66f81b78b85e5ed092df0ba31fd92e3dcb63475c54d015a0ebbeed01d7874b7", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "f66f81b78b85e5ed092df0ba31fd92e3dcb63475c54d015a0ebbeed01d7874b7", +"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "efb389fe4d8990f77ab4f865dc35267b52e31df02cd8382d46eed9caeb023cf4", +"T3T1_fr_test_debuglink.py::test_softlock_instability": "16c8bde73907f9ccfb35f9edc1c89e93ffe9cfd4dc450269a8ce21bd79a22b15", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "664bf9dd2dd83c620027a8b5b2655af8ebffbaecc62b5264db88080f50f90c3a", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_language.py::test_error_invalid_data_hash": "cb10a9556cc64baff9b6f3c627d1d973fb1f0b9ce9e10a9ecf766e8089b68733", +"T3T1_fr_test_language.py::test_error_invalid_data_length": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", +"T3T1_fr_test_language.py::test_error_invalid_header_magic": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", +"T3T1_fr_test_language.py::test_error_invalid_signature": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", +"T3T1_fr_test_language.py::test_error_too_long": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", +"T3T1_fr_test_language.py::test_error_version_mismatch": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", +"T3T1_fr_test_language.py::test_full_language_change[cs]": "d79ded054364974aaf434f98e5528df0f15397ca7c1e9e47dcdc86820ce6913c", +"T3T1_fr_test_language.py::test_full_language_change[de]": "163f74bcd17daa89e0791399e554d5687f17cddd957b008c0f8cbe57201b18e1", +"T3T1_fr_test_language.py::test_full_language_change[en]": "e9bba06c8f3c8a43b9d414769ef720d53fbde8bfb2e32d76d6528708bd43d41e", +"T3T1_fr_test_language.py::test_full_language_change[es]": "7a497e4446436f88cab668fc8f786a9cfe4897521bfa08571b5493583a947dd0", +"T3T1_fr_test_language.py::test_full_language_change[fr]": "f416ba69d4598f6e4c4bb5cabacd42f16b3dca3f7a83e6743774db9283c8488f", +"T3T1_fr_test_language.py::test_header_trailing_data": "d4257be91f1406ae3cbcd13a5890604627b221d3881e4a77891c82109c62042a", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "95c7df30b6c98d92752840b23e7673c05c21ba898ce3b20420e7cae8ec996bb2", +"T3T1_fr_test_language.py::test_reject_update": "393f95c27c87343201ab87a437d01abfe0c6af837cd707ccd3ede3209e304656", +"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "41148a08e65b9e223fdac119cdd39f412308c42bf7a79312e5aa19460d32fe83", +"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "41148a08e65b9e223fdac119cdd39f412308c42bf7a79312e5aa19460d32fe83", +"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "30f37fbfeb7ee82c0a31b00cdbccfa14e5bba379c0621beaad7054e7841495fb", +"T3T1_fr_test_language.py::test_switch_from_english[None]": "4e22243325365674d42ca7aad871d9883cd1ffb084718dc84c8847ca2919a582", +"T3T1_fr_test_language.py::test_switch_from_english[True]": "4e22243325365674d42ca7aad871d9883cd1ffb084718dc84c8847ca2919a582", +"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "259921b42e454bb1b2d519c1c50d6b3d7936e4b2a38617a4fbf1ecb3b4fd6e84", +"T3T1_fr_test_language.py::test_switch_language": "17f46db6a55607da2cbb74eb5503eeec1154f2e9c25d423b780a00b0c94c053f", +"T3T1_fr_test_language.py::test_translations_renders_on_screen": "3ace8ab5615b909fc31c7cc87989abc0e0ad7102cb684d9cfcf921b176b8ae3d", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "054e29c29f2f19c961e4832d17da944d96b58934e72d3c5ed2601535aa54eff2", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "ed0e7cfa80651c67cb8805f1ef7960aeb6e06e86f77cf3e3fcf0c48ae8e5850a", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "cc6ad54a17a79cfe9884942800019626f80071539e0ff6503eb9785fd5811e33", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "ae5c561408a3e4844cf098c3272c4ec8241a90de766c4a459504a68abe1e2f0f", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "6fdfeded020f074c4c8e863d86a32d0f37f01dd5ecc49f6d51833665e9a6a561", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "d0f3fb78183f8cd0e19d7d288837e6f44e77c9c37c9a962781401669a97761a5", +"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "045c0fb3c2f54fe1c9d839f4fe6bff2221f390e16d6e2f31472be437c10bc0d8", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "3047d0fb377b5cf82a02bf33ad2d5e89c49900216f752fe121110a94abde77a2", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2dbb3e319126679795d7c03b963be7208b8bb4c04a5226b9997a8f2a11c7d8f6", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "fdb7b0583dbf3f5b6b6dde2bf914be1da0ccd14b9199979ea9a775725f7be874", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "787109243f440b92b18e22eb325ecb0d8849639d9468d28251b9e3a720cf8fdd", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "b69199e1b05a42a9953cc85823d2d0e563fd13d157895332d570f3e88c1b8936", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c0e401e30513f561fedeca9e6f4245d980f16ccd40ea24ac64a44c5ee099542c", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "729135e9c5cfbd83e1d9126abdbb08c03ebb7910ee443b8f89c05a9162346e36", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "de360de74f35fa5bcc4ada71c752cafe929a25766dfcfb494dd23a239f2e8592", +"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "a1e7367bb6df058660bb06ae28412ee3ec2ee7fd210a03316a16bef15fdbd913", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "c4e841fb438bf330e278f7cdf2110573b19e1a5d6aae1fc69abb29118e05fe1b", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "f1e5eeaa82135fc87460d0b3bfe9a58a5a6d64e7acfc8faa49482bd6f911e464", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ffa08e6c11d4f4d5be654d375aec5baf8d81e98b3be3db02c39497d8df0099aa", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "ce79ffad6e71dfc914177fbe32db7c9f12265bf50e10800c985ae383b0efce3f", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c90954b8c03ce88be2f83ab96a9bde24760c8884deb8d4d2cf7e13829c44299a", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "2db4f33d712fd1247c6398c18a51d7ffa86babc1850d5f9a1b5214b0a97a7abc", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "9ed0663d13769ce3c6b3f6fbca5628b97f3eca648bbb12bd4237aaed2d429222", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "f2edfad549046730e689036fa8617be7a48c7a6c59ee76288fbb16266d3c3ded", +"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "aeda4c49dc073e39d2e9fdbf2c0a9728c8ac02f30d9d09d529adee05c7166430", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "35ff023eda33be1e8df40717b15041d8cbce83603745ade3a4c84b87ed61bd08", +"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "1e1d751cf97b96914433d76e68ef24935c4a65b3be1c29f9ad0b74fe97a49b5d", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "b3200b44b9fc2978c0ad7a72d1d75648b26482d965cc5fb4898ec0bcaf2ec4e3", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "5af585df2051cebbe9c27c365f3db48b1a7e6f46bd2544b7e5547794c31759de", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "b49ded7c118ab81301bb8222d572cb130324773bb688b14322d847a0fc08c2f0", +"T3T1_fr_test_msg_ping.py::test_ping": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "bfcffd19bad0f473b5b4d236367eeee9a91a050cc1067e7e5a8d3d86d37adba7", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "6c2afbbba9d488c75629a063fdccbba0a61b70da35bc6230249fb268ba82a42f", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "69aca25dd013ab68574188a967bac6cb83e4eef0faea023f5d06b53f225bb079", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "83b7a00242b21aff565d876ee713502c6178af25fd71b3698e0efd2cb21dbeaa", +"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "aef9233d55505622e52aaf7153102f6f74f7f23d66061e47c71f8d5e026da24c", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "32dcd4537bf5069ccf80df33ea5abf581363858e73fee57e3cab3bbcd950a09c", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "32dcd4537bf5069ccf80df33ea5abf581363858e73fee57e3cab3bbcd950a09c", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "cc30a63c04384579f243afa2c8c6bcf3f188597e972141655338c69d66ff3888", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "cc30a63c04384579f243afa2c8c6bcf3f188597e972141655338c69d66ff3888", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "cc30a63c04384579f243afa2c8c6bcf3f188597e972141655338c69d66ff3888", +"T3T1_fr_test_pin.py::test_correct_pin": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "bc90b0c6381ac70c66b9ece8b7342bdb41640284c0446bcf59a38a886c5c69dd", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "48827f835b6d239c8abd11e6038deb9f1b19446b872765ba65badeb8c43a5c57", +"T3T1_fr_test_pin.py::test_no_protection": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "fdb64f6a6e37ac687776c229c28ccbb9f83d4365e79fd04ea11013c0ada06626", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "306fecdb4bedefac5a810c08a4a719a73addd4ea6c78a55c2658bb39a7d730ce", +"T3T1_fr_test_protection_levels.py::test_get_address": "73f35fb93a20def7cc50b6fdaa7b3321daddad0ca09ff6aaa2861cf7154e568d", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "60d63e296bc2486450cfe435c0c3aa9d4998b582eb92af7c9a1f81f74fae31ea", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "73f35fb93a20def7cc50b6fdaa7b3321daddad0ca09ff6aaa2861cf7154e568d", +"T3T1_fr_test_protection_levels.py::test_initialize": "9cad81174a364b39a0ad160501e6b35f9a1eb0258fd2bb2556839de802340cc5", +"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "6912c4f299225c229b5386a6e007d4d525c6e696d7f4129531500f724da0af5a", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "6ed0c0b3bd43d59659fb528f7d19a1fde863eccfff5c93e7176d0582d16b1913", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "983aff240d8a52d184f5a8795b02be39cf3901a5e0c8102000bb5f286b0dd6f5", +"T3T1_fr_test_protection_levels.py::test_ping": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", +"T3T1_fr_test_protection_levels.py::test_sign_message": "18debe3ce9bcd83ae5244e5a245299a9012a06e371a5f6f6c6c9e6b0dad30ce8", +"T3T1_fr_test_protection_levels.py::test_signtx": "302de5b04c24c0c1970011bd41265bc6806b6640f4c25e34526e61461d4e900a", +"T3T1_fr_test_protection_levels.py::test_unlocked": "a4424a33b98437db465a6f6210207566290124a2cefd4c19fec3a3dc9a868b6f", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c0433481942e7e93e5488b819637a3412741694b106213a72dbb164521d4fb1b", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "004dc079ae5d42d366094c23ed0bacf2b97f637ef6ae22d7124d8db293e1b2cb", +"T3T1_fr_test_sdcard.py::test_sd_format": "5731b0f2b788c135ba4f226ff6ef4ac95068a639eb02b79a2286f0ca33baa6a3", +"T3T1_fr_test_sdcard.py::test_sd_no_format": "43e6b840991931da598895059d9e9bdb75b50bd56ba15b2de0abf6323f308053", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "89bc355f195af4a376c40ddb556a51e2aee85a3a183c997857f4cb51cb99b3cd", +"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_session.py::test_clear_session": "e8ae6b65143fb444134cb3bc64a325d83f2ca5ccd9e79cddcfc06bf6de68114a", +"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_session.py::test_derive_cardano_running_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_session.py::test_end_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_session.py::test_end_session_only_current": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_session.py::test_session_recycling": "cc30a63c04384579f243afa2c8c6bcf3f188597e972141655338c69d66ff3888", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "e6da8bbe03857dd733f4c60267c5d980850807fc76c554fbee1f248d3f7f1fdd", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "ea630c09f23db102f2d9cf4bbf5751c01140918f4c0fccffc0fcd17664ad9d2b", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "dddb4eb6582de7bc07911c95fad7ec137089f92ca0eefb0aa8cc57537149a5f9", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "fd4d3f36ee49a050eb5cd4d41ff2f9bc3d04b0f23f70eb576deb6e189c90b398", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "b84aa3cac2ca190cd0b427b105da1282a902f7c869ae8f6767863709a395c424", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "38bec13c015379ec9f8200098cca815579ba93450e96cbf226bda5a7563ff3f3", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "6912c4f299225c229b5386a6e007d4d525c6e696d7f4129531500f724da0af5a", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "69a8459defe227fbbf6227a6c2abd9a8510633da80eed407ca86b9f44954c04f", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "f724253ffd5ad4459834f0318563c419c312b33ffd62419ba1bb21d562c6335f", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "e9781e24ae4b6d321e6e6866df9c357898c2a1b90c2e05608ba1847533ab6678", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "16e0feaaa358310318ee25bbd0de60d5ded8f3ca90c8a1902b48a03a4fa3a096", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "f1c5712278fbc1f77b3d58802ce7254ce8ac2da619b77f4c961032d2dac8fb74", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "879a576e296d03968d76618d9ee15fa60f2c00c5b2072eee7282fe5b56efaa25", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "31ea9c1732c0b113dcf461a019fc8d3ed11f4dc0a58dff0810a4439d5a261558", +"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "43f48cdf94256eb554ca74cac799397fc1a5aae71992bacbde0d08096cc3c361", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "1cb43d2d989a4aa23174e22089b47b88b39d696d54009e7f5997cc16d7860712", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "80e9be7b3c52f9e6907db342093c81a4f12a917f97407943e0a62274af00a8d7", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "06c210154e3b49379436d5ee4c1d1b24ae10ff7516690cfaf6eceac57f2bd939", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "edf7a64bb7458a1965190a6bf0d2e03876f32a9c2b6d927bac41ec32e69ad86b", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "694301c73d4bc432a54e623539afe356f48a5d750159c1f08b63cad41e9fd047", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "71015daf34d96443aface5fbb820cd89f9836eeed9e2c3ae3bb0416acf8494d7", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "353429b76632599da8b3ae466b6c41b02aa1b5b1b29c812178039c0a45e0b47a", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "47aa964ddfe640d206350ade5bd32cc3e439f9418535c22297434fc0bbdb72d9", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "e55fd659b907c1a10e81d73ec2abf345ab755be208d50689f6df0820fb21ae9e", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "f9d96311acf2f56c5ba95b90f9e36cd4f11f64192d1f97d511e46fcd425fc96a", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "ae816488821b0b73893a78867736340fa2776a1546c6922b6800be54e720dc21", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "2f35e4e6c64bf3964239c5faafb4916b807d7392e1afcb091d8708ba1b5d2892", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "afee811af565fc2eb6a9d6c21f017fda4e6adc9569da55ba916803323de4c56c", +"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "3da3ec6d7fd773e274d39d77fccc7e577db4252a2316f979e365e1f97da665e8", +"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "90a2de8cad44f8936f7ce42e5d3c3856a4a5920935f2cbd93e2b474c37e9b6e4", +"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "f1fb1ee67386807393a362f6910daedc198fe2c6d06360bb2c6590c9f9445ccc", +"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "d4db2bae2ea213b0969e8f7bf6734339160a9ecb9d755ff6933370e46553a2e4", +"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", +"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "1e00748e8d01826be62688bf50d14043f838283e3c4cb4c4b292b9aa0a1b2f0b", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "45f8c5812aed2e1739b48642134c32f0971b91c78d0017e7e8f9290ea452d713", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "1f13789e97d682d03d34c7e1af32161c5930097014c841c80a11406512cb37cc", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "ea111692efc63bb9137575beac97aa46941fea262bcd989177d6b7541a34fad5", +"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "f32734389f7431ac1b3e6dc717fef2774414ac234a7a435737e3c361c6e4a387", +"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "3230349ce17f212acc7b3ff0373fd54c376fecdd68b53c82e3e1a4cf9d6b4c5a", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "846da139434b63a65783ef5441f1076b0290e852ba2bae5c0cff163ff5bd1e2c", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "5e09df88502ceb652a4a8bcca4c22e03021c2fcc79a19aea3ddbe281fd011b3d", -"T3T1_en_test_shamir_persistence.py::test_abort": "1cad3eca4b2cc266547625e987c3bdb3735918f829b3a6dd3f065617270f3ea3", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "7340a81575f66887262f1e093f7b8700c8d0df25b0f9d48bb4a67aa2c37dd91e", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "9edbc80f6de2fb63c2fab12d2f1ea26d46efc68124513e24cf5d61f1633ea48b", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "ab5307c063babcf64af761bb50a3b4e7d6a13aec1cba64fb631d0fedd9d7e75b", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "3f2d00d26678af6f4f02f6e7674b1af43e1d7f21177e760bdd679bb70cdbfa18" +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "50c4e1d8495ac7984dcbf46e180769019ee0d306ddbbb3e66f36f54463eb2188", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "22a4b35e9ffca23d723285ccbdde8786637fb5bdc15b45d1be4677c9b0f940f6", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "43ece0c802dffed4f0982daf8802de8df2a29ca5ab16c5390475f697d1ac61fb", +"T3T1_en_test_shamir_persistence.py::test_abort": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "eb7f05a015e78939669902d95f47e8312d4312a364168343e51969ed03e6dec1", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "a4c00fba813a30af023ce02cf7f554f736852f15f68241d88e1a1085cbc23b03", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "7c1d0aa16d3a4c19815262ef18bf53796d3cefa5d71f19775ddf95acc153055a", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "74483206af4a9ffa769eb4ee55f44ad4a9ab9429ca76169f8e01ee3d496826b4" } } } From 8ef7dfab0dc381c80cf56d51311e6cf06e0e81ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 23 Apr 2024 12:26:46 +0200 Subject: [PATCH 215/626] feat(core): implement repeated backup --- common/protob/messages-management.proto | 80 +-- core/.changelog.d/3640.added | 1 + core/embed/rust/librust_qstr.h | 4 + .../generated/translated_string.rs | 13 +- core/embed/rust/src/ui/model_tr/layout.rs | 15 +- core/embed/rust/src/ui/model_tt/layout.rs | 19 +- core/mocks/generated/trezorui2.pyi | 4 +- core/mocks/trezortranslate_keys.pyi | 4 +- core/src/all_modules.py | 4 + core/src/apps/base.py | 58 +- core/src/apps/management/backup_device.py | 16 +- .../management/recovery_device/__init__.py | 84 +-- .../management/recovery_device/homescreen.py | 131 ++++- .../apps/management/recovery_device/layout.py | 8 +- core/src/storage/cache.py | 27 +- core/src/storage/recovery.py | 29 +- core/src/trezor/enums/RecoveryKind.py | 7 + core/src/trezor/enums/RecoveryStatus.py | 8 + core/src/trezor/enums/__init__.py | 11 + core/src/trezor/messages.py | 10 +- core/src/trezor/ui/layouts/tr/recovery.py | 8 +- core/src/trezor/ui/layouts/tt/recovery.py | 6 +- core/tools/translations/rules.json | 1 - core/translations/cs.json | 1 - core/translations/de.json | 1 - core/translations/en.json | 4 +- core/translations/es.json | 1 - core/translations/fr.json | 1 - core/translations/order.json | 5 +- core/translations/signatures.json | 6 +- docs/common/message-workflows.md | 16 +- legacy/firmware/fsm_msg_common.h | 6 +- python/src/trezorlib/cli/device.py | 13 +- python/src/trezorlib/device.py | 31 +- python/src/trezorlib/messages.py | 25 +- rust/trezor-client/src/client/mod.rs | 6 +- .../protos/generated/messages_management.rs | 501 ++++++++++++------ tests/click_tests/recovery.py | 60 ++- tests/click_tests/reset.py | 6 +- .../click_tests/test_backup_slip39_custom.py | 2 +- tests/click_tests/test_recovery.py | 2 +- tests/click_tests/test_repeated_backup.py | 218 ++++++++ tests/click_tests/test_reset_bip39.py | 2 +- .../click_tests/test_reset_slip39_advanced.py | 4 +- tests/click_tests/test_reset_slip39_basic.py | 2 +- .../test_recovery_bip39_dryrun.py | 13 +- .../reset_recovery/test_recovery_bip39_t1.py | 8 +- tests/device_tests/test_repeated_backup.py | 110 ++++ tests/input_flows.py | 14 +- tests/input_flows_helpers.py | 6 + .../test_shamir_persistence.py | 25 +- tests/translations.py | 6 + tests/ui_tests/fixtures.json | 7 + tests/upgrade_tests/test_firmware_upgrades.py | 6 +- 54 files changed, 1259 insertions(+), 397 deletions(-) create mode 100644 core/.changelog.d/3640.added create mode 100644 core/src/trezor/enums/RecoveryKind.py create mode 100644 core/src/trezor/enums/RecoveryStatus.py create mode 100644 tests/click_tests/test_repeated_backup.py create mode 100644 tests/device_tests/test_repeated_backup.py diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index e13857a51e..3150f517f8 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -91,8 +91,38 @@ message Features { // optional bytes fw_vendor_keys = 26; // obsoleted, use fw_vendor optional bool unfinished_backup = 27; // report unfinished backup (equals to Storage.unfinished_backup) optional bool no_backup = 28; // report no backup (equals to Storage.no_backup) - optional bool recovery_mode = 29; // is recovery mode in progress + optional RecoveryStatus recovery_status = 29; // whether or not we are in recovery mode and of what kind repeated Capability capabilities = 30; // list of supported capabilities + optional BackupType backup_type = 31; // type of device backup (BIP-39 / SLIP-39 basic / SLIP-39 advanced) + optional bool sd_card_present = 32; // is SD card present + optional bool sd_protection = 33; // is SD Protect enabled + optional bool wipe_code_protection = 34; // is wipe code protection enabled + optional bytes session_id = 35; + optional bool passphrase_always_on_device = 36; // device enforces passphrase entry on Trezor + optional SafetyCheckLevel safety_checks = 37; // safety check level, set to Prompt to limit path namespace enforcement + optional uint32 auto_lock_delay_ms = 38; // number of milliseconds after which the device locks itself + optional uint32 display_rotation = 39; // in degrees from North + optional bool experimental_features = 40; // are experimental message types enabled? + optional bool busy = 41; // is the device busy, showing "Do not disconnect"? + optional HomescreenFormat homescreen_format = 42; // format of the homescreen, 1 = TOIf, 2 = jpg, 3 = TOIG + optional bool hide_passphrase_from_host = 43; // should we hide the passphrase when it comes from host? + optional string internal_model = 44; // internal model name + optional uint32 unit_color = 45; // color of the unit/device + optional bool unit_btconly = 46; // unit/device is intended as bitcoin only + optional uint32 homescreen_width = 47; // homescreen width in pixels + optional uint32 homescreen_height = 48; // homescreen height in pixels + optional bool bootloader_locked = 49; // bootloader is locked + optional bool language_version_matches = 50 [default=true]; // translation blob version matches firmware version + optional uint32 unit_packaging = 51; // unit/device packaging version + optional bool haptic_feedback = 52; // haptic feedback is enabled + + enum RecoveryStatus { + NoRecovery = 0; + InNormalRecovery = 1; + InDryRunRecovery = 2; + InUnlockRepeatedBackupRecovery = 3; + } + enum Capability { option (has_bitcoin_only_values) = true; @@ -118,28 +148,6 @@ message Features { Capability_Brightness = 20 [(bitcoin_only) = true]; Capability_Haptic = 21 [(bitcoin_only) = true]; } - optional BackupType backup_type = 31; // type of device backup (BIP-39 / SLIP-39 basic / SLIP-39 advanced) - optional bool sd_card_present = 32; // is SD card present - optional bool sd_protection = 33; // is SD Protect enabled - optional bool wipe_code_protection = 34; // is wipe code protection enabled - optional bytes session_id = 35; - optional bool passphrase_always_on_device = 36; // device enforces passphrase entry on Trezor - optional SafetyCheckLevel safety_checks = 37; // safety check level, set to Prompt to limit path namespace enforcement - optional uint32 auto_lock_delay_ms = 38; // number of milliseconds after which the device locks itself - optional uint32 display_rotation = 39; // in degrees from North - optional bool experimental_features = 40; // are experimental message types enabled? - optional bool busy = 41; // is the device busy, showing "Do not disconnect"? - optional HomescreenFormat homescreen_format = 42; // format of the homescreen, 1 = TOIf, 2 = jpg, 3 = TOIG - optional bool hide_passphrase_from_host = 43; // should we hide the passphrase when it comes from host? - optional string internal_model = 44; // internal model name - optional uint32 unit_color = 45; // color of the unit/device - optional bool unit_btconly = 46; // unit/device is intended as bitcoin only - optional uint32 homescreen_width = 47; // homescreen width in pixels - optional uint32 homescreen_height = 48; // homescreen height in pixels - optional bool bootloader_locked = 49; // bootloader is locked - optional bool language_version_matches = 50 [default=true]; // translation blob version matches firmware version - optional uint32 unit_packaging = 51; // unit/device packaging version - optional bool haptic_feedback = 52; // haptic feedback is enabled } /** @@ -434,16 +442,16 @@ message EntropyAck { * @next WordRequest */ message RecoveryDevice { - optional uint32 word_count = 1; // number of words in BIP-39 mnemonic - optional bool passphrase_protection = 2; // enable master node encryption using passphrase - optional bool pin_protection = 3; // enable PIN protection - optional string language = 4 [deprecated=true]; // deprecated (use ChangeLanguage) - optional string label = 5; // device label - optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process - // 7 reserved for unused recovery method - optional RecoveryDeviceType type = 8; // supported recovery type - optional uint32 u2f_counter = 9; // U2F counter - optional bool dry_run = 10; // perform dry-run recovery workflow (for safe mnemonic validation) + optional uint32 word_count = 1; // number of words in BIP-39 mnemonic (T1 only) + optional bool passphrase_protection = 2; // enable master node encryption using passphrase + optional bool pin_protection = 3; // enable PIN protection + optional string language = 4 [deprecated=true]; // deprecated (use ChangeLanguage) + optional string label = 5; // device label + optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process (T1 only) + reserved 7; // unused recovery method + optional RecoveryDeviceType type = 8; // supported recovery type (T1 only) + optional uint32 u2f_counter = 9; // U2F counter + optional RecoveryKind kind = 10 [default=NormalRecovery]; // the kind of recovery to perform /** * Type of recovery procedure. These should be used as bitmask, e.g., * `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix` @@ -457,6 +465,12 @@ message RecoveryDevice { RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order RecoveryDeviceType_Matrix = 1; // matrix recovery type } + + enum RecoveryKind { + NormalRecovery = 0; // recovery from seedphrase on an uninitialized device + DryRun = 1; // mnemonic validation + UnlockRepeatedBackup = 2; // unlock SLIP-39 repeated backup + } } /** diff --git a/core/.changelog.d/3640.added b/core/.changelog.d/3640.added new file mode 100644 index 0000000000..ec047d5b0a --- /dev/null +++ b/core/.changelog.d/3640.added @@ -0,0 +1 @@ +Added support for repeated backups. diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 257254cc5d..96218e25f2 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -293,6 +293,7 @@ static void _librust_qstrs(void) { MP_QSTR_joint__title; MP_QSTR_joint__to_the_total_amount; MP_QSTR_joint__you_are_contributing; + MP_QSTR_kind; MP_QSTR_label; MP_QSTR_language; MP_QSTR_language__change_to_template; @@ -440,7 +441,10 @@ static void _librust_qstrs(void) { MP_QSTR_recovery__title_dry_run; MP_QSTR_recovery__title_recover; MP_QSTR_recovery__title_remaining_shares; + MP_QSTR_recovery__title_unlock_repeated_backup; MP_QSTR_recovery__type_word_x_of_y_template; + MP_QSTR_recovery__unlock_repeated_backup; + MP_QSTR_recovery__unlock_repeated_backup_verb; MP_QSTR_recovery__wallet_recovered; MP_QSTR_recovery__wanna_cancel_dry_run; MP_QSTR_recovery__wanna_cancel_recovery; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 0485a6139e..60bde8df17 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -798,7 +798,7 @@ pub enum TranslatedString { recovery__num_of_words = 511, // "Select the number of words in your backup." recovery__only_first_n_letters = 512, // "You'll only have to select the first 2-4 letters of each word." recovery__progress_will_be_lost = 513, // "All progress will be lost." - recovery__select_num_of_words = 514, // "Select the number of words in your backup." + recovery__select_num_of_words = 514, // "\"\"" recovery__share_already_entered = 515, // "Share already entered" recovery__share_from_another_multi_share_backup = 516, // "You have entered a share from a different backup." recovery__share_num_template = 517, // "Share {0}" @@ -1330,6 +1330,9 @@ pub enum TranslatedString { words__try_again = 930, // "Try again." reset__slip39_checklist_num_groups_x_template = 931, // "Number of groups: {0}" brightness__title = 932, // "Set brightness" + recovery__title_unlock_repeated_backup = 933, // "Multi-share backup" + recovery__unlock_repeated_backup = 934, // "Do you want to unlock the seed for repeated backup?" + recovery__unlock_repeated_backup_verb = 935, // "Unlock backup" } impl TranslatedString { @@ -2123,7 +2126,7 @@ impl TranslatedString { Self::recovery__num_of_words => "Select the number of words in your backup.", Self::recovery__only_first_n_letters => "You'll only have to select the first 2-4 letters of each word.", Self::recovery__progress_will_be_lost => "All progress will be lost.", - Self::recovery__select_num_of_words => "Select the number of words in your backup.", + Self::recovery__select_num_of_words => "\"\"", Self::recovery__share_already_entered => "Share already entered", Self::recovery__share_from_another_multi_share_backup => "You have entered a share from a different backup.", Self::recovery__share_num_template => "Share {0}", @@ -2655,6 +2658,9 @@ impl TranslatedString { Self::words__try_again => "Try again.", Self::reset__slip39_checklist_num_groups_x_template => "Number of groups: {0}", Self::brightness__title => "Set brightness", + Self::recovery__title_unlock_repeated_backup => "Multi-share backup", + Self::recovery__unlock_repeated_backup => "Do you want to unlock the seed for repeated backup?", + Self::recovery__unlock_repeated_backup_verb => "Unlock backup", } } @@ -3981,6 +3987,9 @@ impl TranslatedString { Qstr::MP_QSTR_words__try_again => Some(Self::words__try_again), Qstr::MP_QSTR_reset__slip39_checklist_num_groups_x_template => Some(Self::reset__slip39_checklist_num_groups_x_template), Qstr::MP_QSTR_brightness__title => Some(Self::brightness__title), + Qstr::MP_QSTR_recovery__title_unlock_repeated_backup => Some(Self::recovery__title_unlock_repeated_backup), + Qstr::MP_QSTR_recovery__unlock_repeated_backup => Some(Self::recovery__unlock_repeated_backup), + Qstr::MP_QSTR_recovery__unlock_repeated_backup_verb => Some(Self::recovery__unlock_repeated_backup_verb), _ => None, } } diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 8f4fae3882..a1cda06cbe 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -228,6 +228,9 @@ impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { } } +const RECOVERY_KIND_DRY_RUN: u32 = 1; +const RECOVERY_KIND_UNLOCK_REPEATED_BACKUP: u32 = 2; + /// Function to create and call a `ButtonPage` dialog based on paginable content /// (e.g. `Paragraphs` or `FormattedText`). /// Has optional title (supply empty `TString` for that) and hold-to-confirm @@ -1395,7 +1398,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let block = move |_args: &[Obj], kwargs: &Map| { let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; + let kind: u32 = kwargs.get(Qstr::MP_QSTR_kind)?.try_into()?; let show_info: bool = kwargs.get(Qstr::MP_QSTR_show_info)?.try_into()?; let mut paragraphs = ParagraphVecShort::new(); @@ -1412,10 +1415,10 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut )); } - let title = if dry_run { - TR::recovery__title_dry_run - } else { - TR::recovery__title + let title = match kind { + RECOVERY_KIND_DRY_RUN => TR::recovery__title_dry_run, + RECOVERY_KIND_UNLOCK_REPEATED_BACKUP => TR::recovery__title_unlock_repeated_backup, + _ => TR::recovery__title, }; content_in_button_page( @@ -1965,7 +1968,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, # unused on TR /// description: str, /// button: str, - /// dry_run: bool, + /// kind: int, # RecoveryKind enum, passed as an int /// info_button: bool, # unused on TR /// show_info: bool, /// ) -> LayoutObj[UiResult]: diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 494d68d42d..c56fd04510 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -310,6 +310,9 @@ impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { } } +const RECOVERY_KIND_DRY_RUN: u32 = 1; +const RECOVERY_KIND_UNLOCK_REPEATED_BACKUP: u32 = 2; + extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1365,7 +1368,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; + let kind: u32 = kwargs.get(Qstr::MP_QSTR_kind)?.try_into()?; let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; let paragraphs = Paragraphs::new([ @@ -1374,10 +1377,12 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut ]) .with_spacing(theme::RECOVERY_SPACING); - let notification: TString = if dry_run { - TR::recovery__title_dry_run.into() - } else { - TR::recovery__title.into() + let notification = match kind { + RECOVERY_KIND_DRY_RUN => TR::recovery__title_dry_run.into(), + RECOVERY_KIND_UNLOCK_REPEATED_BACKUP => { + TR::recovery__title_unlock_repeated_backup.into() + } + _ => TR::recovery__title.into(), }; let obj = if info_button { @@ -1415,7 +1420,7 @@ extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mu let paragraphs = Paragraphs::new(Paragraph::new( &theme::TEXT_DEMIBOLD, - TR::recovery__select_num_of_words, + TR::recovery__num_of_words, )); let obj = LayoutObj::new(Frame::left_aligned( @@ -2042,7 +2047,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// description: str, /// button: str, - /// dry_run: bool, + /// kind: int, # RecoveryKind enum, passed as an int /// info_button: bool = False, /// ) -> LayoutObj[UiResult]: /// """Device recovery homescreen.""" diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 0bd64c86a5..d1bf1a6caf 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -980,7 +980,7 @@ def confirm_recovery( title: str, # unused on TR description: str, button: str, - dry_run: bool, + kind: int, # RecoveryKind enum, passed as an int info_button: bool, # unused on TR show_info: bool, ) -> LayoutObj[UiResult]: @@ -1515,7 +1515,7 @@ def confirm_recovery( title: str, description: str, button: str, - dry_run: bool, + kind: int, # RecoveryKind enum, passed as an int info_button: bool = False, ) -> LayoutObj[UiResult]: """Device recovery homescreen.""" diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index c1a18b1ff7..c072657a8b 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -573,7 +573,6 @@ class TR: recovery__num_of_words: str = "Select the number of words in your backup." recovery__only_first_n_letters: str = "You'll only have to select the first 2-4 letters of each word." recovery__progress_will_be_lost: str = "All progress will be lost." - recovery__select_num_of_words: str = "Select the number of words in your backup." recovery__share_already_entered: str = "Share already entered" recovery__share_does_not_match: str = "Share doesn't match" recovery__share_from_another_multi_share_backup: str = "You have entered a share from a different backup." @@ -584,7 +583,10 @@ class TR: recovery__title_dry_run: str = "Backup check" recovery__title_recover: str = "Recover wallet" recovery__title_remaining_shares: str = "Remaining shares" + recovery__title_unlock_repeated_backup: str = "Multi-share backup" recovery__type_word_x_of_y_template: str = "Type word {0} of {1}" + recovery__unlock_repeated_backup: str = "Do you want to unlock the seed for repeated backup?" + recovery__unlock_repeated_backup_verb: str = "Unlock backup" recovery__wallet_recovered: str = "Wallet recovery completed" recovery__wanna_cancel_dry_run: str = "Are you sure you want to cancel the backup check?" recovery__wanna_cancel_recovery: str = "Are you sure you want to cancel the recovery process?" diff --git a/core/src/all_modules.py b/core/src/all_modules.py index dcaf23bf02..2aa7062667 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -121,6 +121,10 @@ import trezor.enums.PinMatrixRequestType trezor.enums.RecoveryDeviceType import trezor.enums.RecoveryDeviceType +trezor.enums.RecoveryKind +import trezor.enums.RecoveryKind +trezor.enums.RecoveryStatus +import trezor.enums.RecoveryStatus trezor.enums.RequestType import trezor.enums.RequestType trezor.enums.SafetyCheckLevel diff --git a/core/src/apps/base.py b/core/src/apps/base.py index fdf3f6afba..c25774d84e 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -60,7 +60,7 @@ def _language_version_matches() -> bool | None: def get_features() -> Features: import storage.recovery as storage_recovery from trezor import translations - from trezor.enums import Capability + from trezor.enums import Capability, RecoveryKind, RecoveryStatus from trezor.messages import Features from trezor.ui import HEIGHT, WIDTH @@ -160,7 +160,16 @@ def get_features() -> Features: f.unfinished_backup = storage_device.unfinished_backup() f.no_backup = storage_device.no_backup() f.flags = storage_device.get_flags() - f.recovery_mode = storage_recovery.is_in_progress() + if storage_recovery.is_in_progress(): + kind = storage_recovery.get_kind() + if kind == RecoveryKind.NormalRecovery: + f.recovery_status = RecoveryStatus.InNormalRecovery + elif kind == RecoveryKind.DryRun: + f.recovery_status = RecoveryStatus.InDryRunRecovery + elif kind == RecoveryKind.UnlockRepeatedBackup: + f.recovery_status = RecoveryStatus.InUnlockRepeatedBackupRecovery + else: + f.recovery_status = RecoveryStatus.NoRecovery f.backup_type = mnemonic.get_type() # Only some models are capable of SD card @@ -216,6 +225,7 @@ async def handle_GetFeatures(msg: GetFeatures) -> Features: async def handle_Cancel(msg: Cancel) -> Success: + workflow.close_others() raise wire.ActionCancelled @@ -370,7 +380,7 @@ def set_homescreen() -> None: def lock_device(interrupt_workflow: bool = True) -> None: if config.has_pin(): config.lock() - wire.find_handler = get_pinlocked_handler + wire.find_handler = _get_pinlocked_handler set_homescreen() if interrupt_workflow: workflow.close_others() @@ -409,7 +419,7 @@ async def unlock_device() -> None: wire.find_handler = workflow_handlers.find_registered_handler -def get_pinlocked_handler( +def _get_pinlocked_handler( iface: wire.WireInterface, msg_type: int ) -> wire.Handler[wire.Msg] | None: orig_handler = workflow_handlers.find_registered_handler(iface, msg_type) @@ -432,6 +442,38 @@ async def wrapper(msg: protobuf.MessageType) -> protobuf.MessageType: return wrapper +_ALLOW_WHILE_REPEATED_BACKUP_UNLOCKED = ( + MessageType.Initialize, + MessageType.GetFeatures, + MessageType.EndSession, + MessageType.BackupDevice, + MessageType.WipeDevice, + MessageType.Cancel, +) + + +def _get_backup_handler( + iface: wire.WireInterface, msg_type: int +) -> wire.Handler[wire.Msg] | None: + orig_handler = workflow_handlers.find_registered_handler(iface, msg_type) + if orig_handler is None: + return None + + if __debug__: + import usb + + if iface is usb.iface_debug: + return orig_handler + + if msg_type in _ALLOW_WHILE_REPEATED_BACKUP_UNLOCKED: + return orig_handler + + async def wrapper(_msg: protobuf.MessageType) -> protobuf.MessageType: + raise wire.ProcessError("Operation not allowed when in repeated backup state") + + return wrapper + + # this function is also called when handling ApplySettings def reload_settings_from_storage() -> None: from trezor import ui @@ -464,7 +506,9 @@ def boot() -> None: workflow_handlers.register(msg_type, handler) reload_settings_from_storage() - if config.is_unlocked(): - wire.find_handler = workflow_handlers.find_registered_handler + if not config.is_unlocked(): + wire.find_handler = _get_pinlocked_handler + elif storage_cache.get_bool(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED): + wire.find_handler = _get_backup_handler else: - wire.find_handler = get_pinlocked_handler + wire.find_handler = workflow_handlers.find_registered_handler diff --git a/core/src/apps/management/backup_device.py b/core/src/apps/management/backup_device.py index 6bbe866d19..bfa34a7c63 100644 --- a/core/src/apps/management/backup_device.py +++ b/core/src/apps/management/backup_device.py @@ -10,17 +10,25 @@ async def backup_device(msg: BackupDevice) -> Success: + import storage.cache as storage_cache import storage.device as storage_device from trezor import wire from trezor.messages import Success + from apps import workflow_handlers from apps.common import backup_types, mnemonic from .reset_device import backup_seed, backup_slip39_custom, layout + # do this early before we show any UI + # the homescreen will clear the flag right after its own UI is gone + repeated_backup_unlocked = storage_cache.get_bool( + storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED + ) + if not storage_device.is_initialized(): raise wire.NotInitialized("Device is not initialized") - if not storage_device.needs_backup(): + if not storage_device.needs_backup() and not repeated_backup_unlocked: raise wire.ProcessError("Seed already backed up") mnemonic_secret, backup_type = mnemonic.get() @@ -40,7 +48,10 @@ async def backup_device(msg: BackupDevice) -> Success: elif len(groups) > 0: raise wire.DataError("group_threshold is missing") - storage_device.set_unfinished_backup(True) + if not repeated_backup_unlocked: + storage_device.set_unfinished_backup(True) + + storage_cache.delete(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED) storage_device.set_backed_up() if group_threshold is not None: @@ -51,6 +62,7 @@ async def backup_device(msg: BackupDevice) -> Success: storage_device.set_unfinished_backup(False) + wire.find_handler = workflow_handlers.find_registered_handler await layout.show_backup_success() return Success(message="Seed successfully backed up") diff --git a/core/src/apps/management/recovery_device/__init__.py b/core/src/apps/management/recovery_device/__init__.py index a4f349ba8b..c52dd721fe 100644 --- a/core/src/apps/management/recovery_device/__init__.py +++ b/core/src/apps/management/recovery_device/__init__.py @@ -1,12 +1,14 @@ from typing import TYPE_CHECKING +from trezor.enums import RecoveryKind + if TYPE_CHECKING: from trezor.messages import RecoveryDevice, Success # List of RecoveryDevice fields that can be set when doing dry-run recovery. -# All except `dry_run` are allowed for T1 compatibility, but their values are ignored. +# All except `kind` are allowed for T1 compatibility, but their values are ignored. # If set, `enforce_wordlist` must be True, because we do not support non-enforcing. -DRY_RUN_ALLOWED_FIELDS = ("dry_run", "word_count", "enforce_wordlist", "type") +DRY_RUN_ALLOWED_FIELDS = ("kind", "word_count", "enforce_wordlist", "type") async def recovery_device(msg: RecoveryDevice) -> Success: @@ -20,9 +22,10 @@ async def recovery_device(msg: RecoveryDevice) -> Success: import storage.device as storage_device import storage.recovery as storage_recovery from trezor import TR, config, wire, workflow - from trezor.enums import ButtonRequestType + from trezor.enums import BackupType, ButtonRequestType from trezor.ui.layouts import confirm_action, confirm_reset_device + from apps.common import mnemonic from apps.common.request_pin import ( error_pin_invalid, request_pin_and_sd_salt, @@ -31,68 +34,79 @@ async def recovery_device(msg: RecoveryDevice) -> Success: from .homescreen import recovery_homescreen, recovery_process - dry_run = msg.dry_run # local_cache_attribute + recovery_kind = msg.kind # local_cache_attribute # -------------------------------------------------------- # validate - if not dry_run and storage_device.is_initialized(): - raise wire.UnexpectedMessage("Already initialized") - if dry_run and not storage_device.is_initialized(): - raise wire.NotInitialized("Device is not initialized") - if msg.enforce_wordlist is False: - raise wire.ProcessError( - "Value enforce_wordlist must be True, Trezor Core enforces words automatically." - ) - if dry_run: + if recovery_kind == RecoveryKind.NormalRecovery: + if storage_device.is_initialized(): + raise wire.UnexpectedMessage("Already initialized") + elif recovery_kind in (RecoveryKind.DryRun, RecoveryKind.UnlockRepeatedBackup): + if not storage_device.is_initialized(): + raise wire.NotInitialized("Device is not initialized") + if ( + recovery_kind == RecoveryKind.UnlockRepeatedBackup + and mnemonic.get_type() == BackupType.Bip39 + ): + raise wire.ProcessError("Repeated Backup not available for BIP39 backups") # check that only allowed fields are set for key, value in msg.__dict__.items(): if key not in DRY_RUN_ALLOWED_FIELDS and value is not None: raise wire.ProcessError(f"Forbidden field set in dry-run: {key}") + else: + raise RuntimeError # Unknown RecoveryKind + + if msg.enforce_wordlist is False: + raise wire.ProcessError( + "Value enforce_wordlist must be True, Trezor Core enforces words automatically." + ) # END validate # -------------------------------------------------------- if storage_recovery.is_in_progress(): return await recovery_process() - # -------------------------------------------------------- - # _continue_dialog - if not dry_run: + if recovery_kind == RecoveryKind.NormalRecovery: await confirm_reset_device(TR.recovery__title_recover, recovery=True) - else: - await confirm_action( - "confirm_seedcheck", - TR.recovery__title_dry_run, - description=TR.recovery__check_dry_run, - br_code=ButtonRequestType.ProtectCall, - verb=TR.buttons__check, - ) - # END _continue_dialog - # -------------------------------------------------------- - if not dry_run: # wipe storage to make sure the device is in a clear state storage.reset() - # for dry run pin needs to be entered - if dry_run: - curpin, salt = await request_pin_and_sd_salt(TR.pin__enter) - if not config.check_pin(curpin, salt): - await error_pin_invalid() - - if not dry_run: # set up pin if requested if msg.pin_protection: newpin = await request_pin_confirm(allow_cancel=False) config.change_pin("", newpin, None, None) storage_device.set_passphrase_enabled(bool(msg.passphrase_protection)) + if msg.u2f_counter is not None: storage_device.set_u2f_counter(msg.u2f_counter) + if msg.label is not None: storage_device.set_label(msg.label) + elif recovery_kind in (RecoveryKind.DryRun, RecoveryKind.UnlockRepeatedBackup): + title = ( + TR.recovery__title_dry_run + if recovery_kind == RecoveryKind.DryRun + else TR.recovery__title_unlock_repeated_backup + ) + await confirm_action( + "confirm_seedcheck", + title, + description=TR.recovery__check_dry_run, + br_code=ButtonRequestType.ProtectCall, + verb=TR.buttons__check, + ) + + curpin, salt = await request_pin_and_sd_salt(TR.pin__enter) + if not config.check_pin(curpin, salt): + await error_pin_invalid() + storage_recovery.set_in_progress(True) - storage_recovery.set_dry_run(bool(dry_run)) + + storage_recovery.set_kind(int(recovery_kind)) workflow.set_default(recovery_homescreen) + return await recovery_process() diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 774876e59f..df5614a84d 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +import storage.cache as storage_cache import storage.device as storage_device import storage.recovery as storage_recovery import storage.recovery_shares as storage_recovery_shares @@ -11,7 +12,7 @@ from . import layout, recover if TYPE_CHECKING: - from trezor.enums import BackupType + from trezor.enums import BackupType, RecoveryKind async def recovery_homescreen() -> None: @@ -19,35 +20,84 @@ async def recovery_homescreen() -> None: from apps.homescreen import homescreen - if not storage_recovery.is_in_progress(): + if storage_cache.get_bool(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED): + await _continue_repeated_backup() + elif not storage_recovery.is_in_progress(): workflow.set_default(homescreen) - return - - await recovery_process() + else: + await recovery_process() async def recovery_process() -> Success: import storage - from trezor.enums import MessageType + from trezor.enums import MessageType, RecoveryKind + + is_special_kind = storage_recovery.get_kind() in ( + RecoveryKind.DryRun, + RecoveryKind.UnlockRepeatedBackup, + ) - wire.AVOID_RESTARTING_FOR = (MessageType.Initialize, MessageType.GetFeatures) + wire.AVOID_RESTARTING_FOR = ( + MessageType.Initialize, + MessageType.GetFeatures, + MessageType.EndSession, + ) try: return await _continue_recovery_process() except recover.RecoveryAborted: - dry_run = storage_recovery.is_dry_run() - if dry_run: + if is_special_kind: storage_recovery.end_progress() else: storage.wipe() raise wire.ActionCancelled +async def _continue_repeated_backup() -> None: + from trezor import workflow + from trezor.enums import ButtonRequestType, MessageType + from trezor.ui.layouts import confirm_action + from trezor.wire import ActionCancelled + + from apps import workflow_handlers + from apps.common import mnemonic + from apps.homescreen import homescreen + from apps.management.reset_device import backup_seed + + wire.AVOID_RESTARTING_FOR = ( + MessageType.Initialize, + MessageType.GetFeatures, + MessageType.EndSession, + ) + + try: + await confirm_action( + "confirm_repeated_backup", + TR.recovery__title_unlock_repeated_backup, + description=TR.recovery__unlock_repeated_backup, + br_code=ButtonRequestType.ProtectCall, + verb=TR.recovery__unlock_repeated_backup_verb, + ) + + mnemonic_secret, backup_type = mnemonic.get() + if mnemonic_secret is None: + raise RuntimeError + + await backup_seed(backup_type, mnemonic_secret) + except ActionCancelled: + workflow.set_default(homescreen) + finally: + storage_cache.delete(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED) + wire.find_handler = workflow_handlers.find_registered_handler + storage_recovery.end_progress() + + async def _continue_recovery_process() -> Success: from trezor import utils + from trezor.enums import RecoveryKind from trezor.errors import MnemonicError # gather the current recovery state from storage - dry_run = storage_recovery.is_dry_run() + kind = storage_recovery.get_kind() word_count, backup_type = recover.load_slip39_state() # Both word_count and backup_type are derived from the same data. Both will be @@ -59,7 +109,7 @@ async def _continue_recovery_process() -> Success: if not is_first_step: assert word_count is not None # If we continue recovery, show starting screen with word count immediately. - await _request_share_first_screen(word_count) + await _request_share_first_screen(word_count, kind) secret = None while secret is None: @@ -72,9 +122,9 @@ async def _continue_recovery_process() -> Success: TR.buttons__continue, TR.recovery__num_of_words ) # ask for the number of words - word_count = await layout.request_word_count(dry_run) + word_count = await layout.request_word_count(kind == RecoveryKind.DryRun) # ...and only then show the starting screen with word count. - await _request_share_first_screen(word_count) + await _request_share_first_screen(word_count, kind) assert word_count is not None # ask for mnemonic words one by one @@ -94,23 +144,22 @@ async def _continue_recovery_process() -> Success: await layout.show_invalid_mnemonic(word_count) assert backup_type is not None - if dry_run: + if kind == RecoveryKind.DryRun: result = await _finish_recovery_dry_run(secret, backup_type) + elif kind == RecoveryKind.UnlockRepeatedBackup: + result = await _finish_recovery_unlock_repeated_backup(secret, backup_type) else: result = await _finish_recovery(secret, backup_type) return result -async def _finish_recovery_dry_run(secret: bytes, backup_type: BackupType) -> Success: +def _check_secret_against_stored_secret(secret: bytes, is_slip39: bool, backup_type: BackupType) -> bool: from trezor import utils from trezor.crypto.hashlib import sha256 from apps.common import mnemonic - if backup_type is None: - raise RuntimeError - digest_input = sha256(secret).digest() stored = mnemonic.get_secret() digest_stored = sha256(stored).digest() @@ -132,6 +181,17 @@ async def _finish_recovery_dry_run(secret: bytes, backup_type: BackupType) -> Su == storage_recovery.get_slip39_iteration_exponent() ) + return result + + +async def _finish_recovery_dry_run(secret: bytes, backup_type: BackupType) -> Success: + if backup_type is None: + raise RuntimeError + + is_slip39 = backup_types.is_slip39_backup_type(backup_type) + + result = _check_secret_against_stored_secret(secret, is_slip39, backup_type) + storage_recovery.end_progress() await layout.show_dry_run_result(result, is_slip39) @@ -142,6 +202,27 @@ async def _finish_recovery_dry_run(secret: bytes, backup_type: BackupType) -> Su raise wire.ProcessError("The seed does not match the one in the device") +async def _finish_recovery_unlock_repeated_backup( + secret: bytes, backup_type: BackupType +) -> Success: + import storage.cache as storage_cache + + if backup_type is None: + raise RuntimeError + + is_slip39 = backup_types.is_slip39_backup_type(backup_type) + + result = _check_secret_against_stored_secret(secret, is_slip39, backup_type) + + if result: + storage_cache.set_bool( + storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED, True + ) + return Success(message="Backup unlocked") + else: + raise wire.ProcessError("The seed does not match the one in the device") + + async def _finish_recovery(secret: bytes, backup_type: BackupType) -> Success: from trezor.ui.layouts import show_success @@ -191,15 +272,23 @@ async def _process_words(words: str) -> tuple[bytes | None, BackupType]: return secret, backup_type -async def _request_share_first_screen(word_count: int) -> None: +async def _request_share_first_screen(word_count: int, kind: RecoveryKind) -> None: + from trezor.enums import RecoveryKind + if backup_types.is_slip39_word_count(word_count): remaining = storage_recovery.fetch_slip39_remaining_shares() if remaining: await _request_share_next_screen() else: + if kind == RecoveryKind.UnlockRepeatedBackup: + text = TR.recovery__enter_backup + button_label = TR.buttons__continue + else: + text = TR.recovery__enter_any_share + button_label = TR.buttons__enter_share await layout.homescreen_dialog( - TR.buttons__enter_share, - TR.recovery__enter_any_share, + button_label, + text, TR.recovery__word_count_template.format(word_count), show_info=True, ) diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index 086b5da7ec..1475d669de 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -149,21 +149,23 @@ async def homescreen_dialog( show_info: bool = False, ) -> None: import storage.recovery as storage_recovery + from trezor.enums import RecoveryKind from trezor.ui.layouts.recovery import continue_recovery from trezor.wire import ActionCancelled from .recover import RecoveryAborted + kind = storage_recovery.get_kind() + while True: - dry_run = storage_recovery.is_dry_run() if await continue_recovery( - button_label, text, subtext, info_func, dry_run, show_info + button_label, text, subtext, info_func, kind, show_info ): # go forward in the recovery process break # user has chosen to abort, confirm the choice try: - await _confirm_abort(dry_run) + await _confirm_abort(kind != RecoveryKind.NormalRecovery) except ActionCancelled: pass else: diff --git a/core/src/storage/cache.py b/core/src/storage/cache.py index 1e1afdd845..ee36b3e60d 100644 --- a/core/src/storage/cache.py +++ b/core/src/storage/cache.py @@ -34,7 +34,7 @@ APP_COMMON_BUSY_DEADLINE_MS = const(4 | _SESSIONLESS_FLAG) APP_MISC_COSI_NONCE = const(5 | _SESSIONLESS_FLAG) APP_MISC_COSI_COMMITMENT = const(6 | _SESSIONLESS_FLAG) - +APP_RECOVERY_REPEATED_BACKUP_UNLOCKED = const(7 | _SESSIONLESS_FLAG) # === Homescreen storage === # This does not logically belong to the "cache" functionality, but the cache module is @@ -57,7 +57,7 @@ class InvalidSessionError(Exception): class DataCache: - fields: Sequence[int] + fields: Sequence[int] # field sizes def __init__(self) -> None: self.data = [bytearray(f + 1) for f in self.fields] @@ -145,6 +145,7 @@ def __init__(self) -> None: 8, # APP_COMMON_BUSY_DEADLINE_MS 32, # APP_MISC_COSI_NONCE 32, # APP_MISC_COSI_COMMITMENT + 0, # APP_RECOVERY_REPEATED_BACKUP_UNLOCKED ) super().__init__() @@ -233,13 +234,17 @@ def set(key: int, value: bytes) -> None: _SESSIONS[_active_session_idx].set(key, value) -def set_int(key: int, value: int) -> None: +def _get_length(key: int) -> int: if key & _SESSIONLESS_FLAG: - length = _SESSIONLESS_CACHE.fields[key ^ _SESSIONLESS_FLAG] + return _SESSIONLESS_CACHE.fields[key ^ _SESSIONLESS_FLAG] elif _active_session_idx is None: raise InvalidSessionError else: - length = _SESSIONS[_active_session_idx].fields[key] + return _SESSIONS[_active_session_idx].fields[key] + + +def set_int(key: int, value: int) -> None: + length = _get_length(key) encoded = value.to_bytes(length, "big") @@ -250,6 +255,14 @@ def set_int(key: int, value: int) -> None: set(key, encoded) +def set_bool(key: int, value: bool) -> None: + assert _get_length(key) == 0 # skipping get_length in production build + if value: + set(key, b"") + else: + delete(key) + + if TYPE_CHECKING: @overload @@ -276,6 +289,10 @@ def get_int(key: int, default: T | None = None) -> int | T | None: # noqa: F811 return int.from_bytes(encoded, "big") +def get_bool(key: int) -> bool: # noqa: F811 + return get(key) is not None + + def get_int_all_sessions(key: int) -> builtins.set[int]: sessions = [_SESSIONLESS_CACHE] if key & _SESSIONLESS_FLAG else _SESSIONS values = builtins.set() diff --git a/core/src/storage/recovery.py b/core/src/storage/recovery.py index 6816209fc6..17c63b9192 100644 --- a/core/src/storage/recovery.py +++ b/core/src/storage/recovery.py @@ -1,14 +1,18 @@ from micropython import const +from typing import TYPE_CHECKING from storage import common +if TYPE_CHECKING: + from trezor.enums import RecoveryKind + # Namespace: _NAMESPACE = common.APP_RECOVERY # fmt: off # Keys: _IN_PROGRESS = const(0x00) # bool -_DRY_RUN = const(0x01) # bool +_KIND = const(0x01) # int _SLIP39_IDENTIFIER = const(0x03) # bytes _REMAINING = const(0x05) # int _SLIP39_ITERATION_EXPONENT = const(0x06) # int @@ -37,14 +41,27 @@ def is_in_progress() -> bool: return common.get_bool(_NAMESPACE, _IN_PROGRESS) -def set_dry_run(val: bool) -> None: +def set_kind(val: int) -> None: _require_progress() - common.set_bool(_NAMESPACE, _DRY_RUN, val) + common.set_uint8(_NAMESPACE, _KIND, val) + +def get_kind() -> RecoveryKind: + from trezor.enums import RecoveryKind -def is_dry_run() -> bool: _require_progress() - return common.get_bool(_NAMESPACE, _DRY_RUN) + recovery_kind = common.get_uint8(_NAMESPACE, _KIND) + if recovery_kind is None: + recovery_kind = RecoveryKind.NormalRecovery + + if recovery_kind not in ( + RecoveryKind.NormalRecovery, + RecoveryKind.DryRun, + RecoveryKind.UnlockRepeatedBackup, + ): + # Invalid recovery kind + raise RuntimeError + return recovery_kind def set_slip39_identifier(identifier: int) -> None: @@ -129,7 +146,7 @@ def end_progress() -> None: _require_progress() for key in ( _IN_PROGRESS, - _DRY_RUN, + _KIND, _SLIP39_IDENTIFIER, _REMAINING, _SLIP39_ITERATION_EXPONENT, diff --git a/core/src/trezor/enums/RecoveryKind.py b/core/src/trezor/enums/RecoveryKind.py new file mode 100644 index 0000000000..8806a3063a --- /dev/null +++ b/core/src/trezor/enums/RecoveryKind.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +# fmt: off +# isort:skip_file + +NormalRecovery = 0 +DryRun = 1 +UnlockRepeatedBackup = 2 diff --git a/core/src/trezor/enums/RecoveryStatus.py b/core/src/trezor/enums/RecoveryStatus.py new file mode 100644 index 0000000000..828fd7f89e --- /dev/null +++ b/core/src/trezor/enums/RecoveryStatus.py @@ -0,0 +1,8 @@ +# Automatically generated by pb2py +# fmt: off +# isort:skip_file + +NoRecovery = 0 +InNormalRecovery = 1 +InDryRunRecovery = 2 +InUnlockRepeatedBackupRecovery = 3 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 757ecf5acf..96fea755b1 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -440,6 +440,12 @@ class HomescreenFormat(IntEnum): Jpeg = 2 ToiG = 3 + class RecoveryStatus(IntEnum): + NoRecovery = 0 + InNormalRecovery = 1 + InDryRunRecovery = 2 + InUnlockRepeatedBackupRecovery = 3 + class Capability(IntEnum): Bitcoin = 1 Bitcoin_like = 2 @@ -472,6 +478,11 @@ class RecoveryDeviceType(IntEnum): ScrambledWords = 0 Matrix = 1 + class RecoveryKind(IntEnum): + NormalRecovery = 0 + DryRun = 1 + UnlockRepeatedBackup = 2 + class WordRequestType(IntEnum): Plain = 0 Matrix9 = 1 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index e8afe64751..610e4eb01d 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -54,6 +54,8 @@ def __getattr__(name: str) -> Any: from trezor.enums import OutputScriptType # noqa: F401 from trezor.enums import PinMatrixRequestType # noqa: F401 from trezor.enums import RecoveryDeviceType # noqa: F401 + from trezor.enums import RecoveryKind # noqa: F401 + from trezor.enums import RecoveryStatus # noqa: F401 from trezor.enums import RequestType # noqa: F401 from trezor.enums import SafetyCheckLevel # noqa: F401 from trezor.enums import SdProtectOperationType # noqa: F401 @@ -2140,7 +2142,7 @@ class Features(protobuf.MessageType): fw_vendor: "str | None" unfinished_backup: "bool | None" no_backup: "bool | None" - recovery_mode: "bool | None" + recovery_status: "RecoveryStatus | None" capabilities: "list[Capability]" backup_type: "BackupType | None" sd_card_present: "bool | None" @@ -2194,7 +2196,7 @@ def __init__( fw_vendor: "str | None" = None, unfinished_backup: "bool | None" = None, no_backup: "bool | None" = None, - recovery_mode: "bool | None" = None, + recovery_status: "RecoveryStatus | None" = None, backup_type: "BackupType | None" = None, sd_card_present: "bool | None" = None, sd_protection: "bool | None" = None, @@ -2600,7 +2602,7 @@ class RecoveryDevice(protobuf.MessageType): enforce_wordlist: "bool | None" type: "RecoveryDeviceType | None" u2f_counter: "int | None" - dry_run: "bool | None" + kind: "RecoveryKind" def __init__( self, @@ -2612,7 +2614,7 @@ def __init__( enforce_wordlist: "bool | None" = None, type: "RecoveryDeviceType | None" = None, u2f_counter: "int | None" = None, - dry_run: "bool | None" = None, + kind: "RecoveryKind | None" = None, ) -> None: pass diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index db40ae9efc..dd5cf3da3c 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -2,7 +2,7 @@ import trezorui2 from trezor import TR -from trezor.enums import ButtonRequestType +from trezor.enums import ButtonRequestType, RecoveryKind from ..common import interact from . import RustLayout, raise_if_not_confirmed, show_warning @@ -76,7 +76,7 @@ async def continue_recovery( text: str, subtext: str | None, info_func: Callable | None, - dry_run: bool, + kind: RecoveryKind, show_info: bool = False, ) -> bool: # TODO: implement info_func? @@ -84,7 +84,7 @@ async def continue_recovery( # (and having middle button would mean shortening the right button text) # Never showing info for dry-run, user already saw it and it is disturbing - if dry_run: + if kind in (RecoveryKind.DryRun, RecoveryKind.UnlockRepeatedBackup): show_info = False if subtext: @@ -95,8 +95,8 @@ async def continue_recovery( title="", description=text, button=button_label, + kind=kind, info_button=False, - dry_run=dry_run, show_info=show_info, # type: ignore [No parameter named "show_info"] ) ) diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index 82310480a9..5607ceea8c 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -2,7 +2,7 @@ import trezorui2 from trezor import TR -from trezor.enums import ButtonRequestType +from trezor.enums import ButtonRequestType, RecoveryKind from ..common import interact from . import RustLayout, raise_if_not_confirmed @@ -116,7 +116,7 @@ async def continue_recovery( text: str, subtext: str | None, info_func: Callable | None, - dry_run: bool, + kind: RecoveryKind, show_info: bool = False, # unused on TT ) -> bool: from ..common import button_request @@ -132,8 +132,8 @@ async def continue_recovery( title=text, description=description, button=button_label, + kind=kind, info_button=info_func is not None, - dry_run=dry_run, ) ) diff --git a/core/tools/translations/rules.json b/core/tools/translations/rules.json index 7b87a61fcd..cb550232b5 100644 --- a/core/tools/translations/rules.json +++ b/core/tools/translations/rules.json @@ -516,7 +516,6 @@ "recovery__num_of_words": "text,2", "recovery__only_first_n_letters": "text,4", "recovery__progress_will_be_lost": "text,2", - "recovery__select_num_of_words": "text,3", "recovery__share_already_entered": "text,2", "recovery__share_from_another_multi_share_backup": "text,3", "recovery__share_num_template": "text,1", diff --git a/core/translations/cs.json b/core/translations/cs.json index c2beae0e28..5b9dc29524 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -562,7 +562,6 @@ "recovery__num_of_words": "Vyberte počet slov v záloze.", "recovery__only_first_n_letters": "Musíte vybrat pouze první 2-4 písmena každého slova.", "recovery__progress_will_be_lost": "Veškerý postup bude ztracen.", - "recovery__select_num_of_words": "Vyberte počet slov v záloze.", "recovery__share_already_entered": "Část jste již zadali", "recovery__share_from_another_multi_share_backup": "Zadali jste část z jiné zálohy Shamir.", "recovery__share_num_template": "Část {0}", diff --git a/core/translations/de.json b/core/translations/de.json index 683e5273c5..ba52b1a4ac 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -562,7 +562,6 @@ "recovery__num_of_words": "Wörteranzahl in deinem Backup auswählen.", "recovery__only_first_n_letters": "Du musst nur die ersten 2-4 Buchstaben jedes Worts auswählen.", "recovery__progress_will_be_lost": "Alle Fortschritte gehen verloren.", - "recovery__select_num_of_words": "Wörteranzahl in deinem Backup auswählen.", "recovery__share_already_entered": "Share wurde bereits eingegeben", "recovery__share_from_another_multi_share_backup": "Share eines anderen Shamir-Backups eingegeben.", "recovery__share_num_template": "Share {0}", diff --git a/core/translations/en.json b/core/translations/en.json index ddb44814b0..0b22682da8 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -577,7 +577,6 @@ "recovery__num_of_words": "Select the number of words in your backup.", "recovery__only_first_n_letters": "You'll only have to select the first 2-4 letters of each word.", "recovery__progress_will_be_lost": "All progress will be lost.", - "recovery__select_num_of_words": "Select the number of words in your backup.", "recovery__share_already_entered": "Share already entered", "recovery__share_does_not_match": "Share doesn't match", "recovery__share_from_another_multi_share_backup": "You have entered a share from a different backup.", @@ -588,7 +587,10 @@ "recovery__title_dry_run": "Backup check", "recovery__title_recover": "Recover wallet", "recovery__title_remaining_shares": "Remaining shares", + "recovery__title_unlock_repeated_backup": "Multi-share backup", "recovery__type_word_x_of_y_template": "Type word {0} of {1}", + "recovery__unlock_repeated_backup": "Do you want to unlock the seed for repeated backup?", + "recovery__unlock_repeated_backup_verb": "Unlock backup", "recovery__wallet_recovered": "Wallet recovery completed", "recovery__wanna_cancel_dry_run": "Are you sure you want to cancel the backup check?", "recovery__wanna_cancel_recovery": "Are you sure you want to cancel the recovery process?", diff --git a/core/translations/es.json b/core/translations/es.json index fb42195c67..24ba4726b9 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -562,7 +562,6 @@ "recovery__num_of_words": "Elige el nro.de p. de la copia seg.", "recovery__only_first_n_letters": "Solo tendrás que seleccionar las primeras 2-4 letras de cada palabra.", "recovery__progress_will_be_lost": "Se perderá todo el progreso.", - "recovery__select_num_of_words": "Elige el nro.de p. de la copia seg.", "recovery__share_already_entered": "Ya se ha introducido el recurso compartido", "recovery__share_from_another_multi_share_backup": "El rec. comp. es de otra copia de seguridad de Shamir.", "recovery__share_num_template": "Recurso compartido {0}", diff --git a/core/translations/fr.json b/core/translations/fr.json index 8ce8d483e5..f3854d1333 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -562,7 +562,6 @@ "recovery__num_of_words": "Sélect. le nbre de mots dans votre sauv.", "recovery__only_first_n_letters": "Il vous suffit de sélectionner les 2 ou 4 premières lettres de chaque mot.", "recovery__progress_will_be_lost": "Toute progression sera perdue.", - "recovery__select_num_of_words": "Sélect. le nbre de mots dans votre sauv.", "recovery__share_already_entered": "Fragment déjà saisi", "recovery__share_from_another_multi_share_backup": "Vous avez saisi un fragm. d'une autre sauv. Shamir.", "recovery__share_num_template": "Fragment {0}", diff --git a/core/translations/order.json b/core/translations/order.json index 6915cbcc3d..172418c8df 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -931,5 +931,8 @@ "929": "words__settings", "930": "words__try_again", "931": "reset__slip39_checklist_num_groups_x_template", - "932": "brightness__title" + "932": "brightness__title", + "933": "recovery__title_unlock_repeated_backup", + "934": "recovery__unlock_repeated_backup", + "935": "recovery__unlock_repeated_backup_verb" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 7515775c18..070161e6a7 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "1e9cb4df51f267f250b45ba4c130f2e46487dc60d8f5e0e19bd398ec4a613f24", - "datetime": "2024-05-28T09:19:32.720044", - "commit": "ebb35e8de3ea870b13d85891096136c16bac2cc5" + "merkle_root": "45979e4f395fcad03d843869023d35047483512ec797063806998dc553823c72", + "datetime": "2024-06-03T12:43:57.548072", + "commit": "510121bad342d1f900ca123e131448d577a25e39" }, "history": [ { diff --git a/docs/common/message-workflows.md b/docs/common/message-workflows.md index 7a72f9be4f..e0fbabc713 100644 --- a/docs/common/message-workflows.md +++ b/docs/common/message-workflows.md @@ -279,14 +279,24 @@ entering PIN) or standard recovery (with entering the seed to the host computer one by one in random order). The process continues with optional check of the seed validity and optional setting up the PIN, which has to be confirmed. Finally the recovered wallet is saved into -device storage. The same process is used with the dry run recovery, the +device storage. + +The same process is used with the dry run recovery, the differences are that this process can be done only with already -initialized deviice and that the mnemonic is not saved into the device +initialized device and that the mnemonic is not saved into the device but it is only compared to the mnemonic already loaded into the device with the successful result (The seed is valid and matches the one in the -device) or unsuccessful result(The seed is valid but does not match the +device) or unsuccessful result (The seed is valid but does not match the one in the device). +A third kind of recovery is one that is done in order to +unlock a repeated backup. This is similar to the dry run recovery in that +the device needs to be already initialized and that the mnemonic entered +is compared against the one stored in the device. Once successful, +a special mode is activated, which allows an additional backup +to be performed. This is useful for upgrading SLIP39 backups +to multiple shares. + ## LoadDevice Load device lets user to load the device with the specific recovery diff --git a/legacy/firmware/fsm_msg_common.h b/legacy/firmware/fsm_msg_common.h index 77a6ae43be..43fe926b31 100644 --- a/legacy/firmware/fsm_msg_common.h +++ b/legacy/firmware/fsm_msg_common.h @@ -491,7 +491,11 @@ void fsm_msgApplyFlags(const ApplyFlags *msg) { void fsm_msgRecoveryDevice(const RecoveryDevice *msg) { CHECK_PIN_UNCACHED - const bool dry_run = msg->has_dry_run ? msg->dry_run : false; + CHECK_PARAM(!msg->has_kind || msg->kind == RecoveryKind_NormalRecovery || + msg->kind == RecoveryKind_DryRun, + _("UnlockRepeatedBackup not supported")) + + const bool dry_run = msg->has_kind ? msg->kind == RecoveryKind_DryRun : false; if (!dry_run) { CHECK_NOT_INITIALIZED } else { diff --git a/python/src/trezorlib/cli/device.py b/python/src/trezorlib/cli/device.py index 1949749f64..47dc313307 100644 --- a/python/src/trezorlib/cli/device.py +++ b/python/src/trezorlib/cli/device.py @@ -151,6 +151,7 @@ def load( "-t", "--type", "rec_type", type=ChoiceType(RECOVERY_TYPE), default="scrambled" ) @click.option("-d", "--dry-run", is_flag=True) +@click.option("-b", "--unlock-repeated-backup", is_flag=True) @with_client def recover( client: "TrezorClient", @@ -162,6 +163,7 @@ def recover( u2f_counter: int, rec_type: messages.RecoveryDeviceType, dry_run: bool, + unlock_repeated_backup: bool, ) -> "MessageType": """Start safe recovery workflow.""" if rec_type == messages.RecoveryDeviceType.ScrambledWords: @@ -170,6 +172,15 @@ def recover( input_callback = ui.matrix_words click.echo(ui.RECOVERY_MATRIX_DESCRIPTION) + if dry_run and unlock_repeated_backup: + raise click.ClickException("Cannot use -d and -b together.") + + recovery_kind = None + if dry_run: + recovery_kind = messages.RecoveryKind.DryRun + if unlock_repeated_backup: + recovery_kind = messages.RecoveryKind.UnlockRepeatedBackup + return device.recover( client, word_count=int(words), @@ -179,7 +190,7 @@ def recover( u2f_counter=u2f_counter, input_callback=input_callback, type=rec_type, - dry_run=dry_run, + recovery_kind=recovery_kind, ) diff --git a/python/src/trezorlib/device.py b/python/src/trezorlib/device.py index af473442be..dabec6f8e9 100644 --- a/python/src/trezorlib/device.py +++ b/python/src/trezorlib/device.py @@ -160,8 +160,10 @@ def recover( language: Optional[str] = None, input_callback: Optional[Callable] = None, type: messages.RecoveryDeviceType = messages.RecoveryDeviceType.ScrambledWords, - dry_run: bool = False, + dry_run: Optional[bool] = None, u2f_counter: Optional[int] = None, + *, + recovery_kind: Optional[messages.RecoveryKind] = None, ) -> "MessageType": if language is not None: warnings.warn( @@ -169,13 +171,34 @@ def recover( DeprecationWarning, ) + if dry_run is not None: + warnings.warn( + "Use recovery_kind=RecoveryKind.DryRun instead!", + DeprecationWarning, + ) + + if recovery_kind is not None: + raise ValueError( + "Cannot use both dry_run and recovery_kind simultaneously." + ) + elif dry_run: + recovery_kind = messages.RecoveryKind.DryRun + else: + recovery_kind = messages.RecoveryKind.NormalRecovery + + if recovery_kind is None: + recovery_kind = messages.RecoveryKind.NormalRecovery + if client.features.model == "1" and input_callback is None: raise RuntimeError("Input callback required for Trezor One") if word_count not in (12, 18, 24): raise ValueError("Invalid word count. Use 12/18/24") - if client.features.initialized and not dry_run: + if ( + client.features.initialized + and recovery_kind == messages.RecoveryKind.NormalRecovery + ): raise RuntimeError( "Device already initialized. Call device.wipe() and try again." ) @@ -184,10 +207,10 @@ def recover( u2f_counter = int(time.time()) msg = messages.RecoveryDevice( - word_count=word_count, enforce_wordlist=True, type=type, dry_run=dry_run + word_count=word_count, enforce_wordlist=True, type=type, kind=recovery_kind ) - if not dry_run: + if recovery_kind == messages.RecoveryKind.NormalRecovery: # set additional parameters msg.passphrase_protection = passphrase_protection msg.pin_protection = pin_protection diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index bd50df1918..e2df9676c8 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -472,6 +472,13 @@ class HomescreenFormat(IntEnum): ToiG = 3 +class RecoveryStatus(IntEnum): + NoRecovery = 0 + InNormalRecovery = 1 + InDryRunRecovery = 2 + InUnlockRepeatedBackupRecovery = 3 + + class Capability(IntEnum): Bitcoin = 1 Bitcoin_like = 2 @@ -507,6 +514,12 @@ class RecoveryDeviceType(IntEnum): Matrix = 1 +class RecoveryKind(IntEnum): + NormalRecovery = 0 + DryRun = 1 + UnlockRepeatedBackup = 2 + + class WordRequestType(IntEnum): Plain = 0 Matrix9 = 1 @@ -3241,7 +3254,7 @@ class Features(protobuf.MessageType): 25: protobuf.Field("fw_vendor", "string", repeated=False, required=False, default=None), 27: protobuf.Field("unfinished_backup", "bool", repeated=False, required=False, default=None), 28: protobuf.Field("no_backup", "bool", repeated=False, required=False, default=None), - 29: protobuf.Field("recovery_mode", "bool", repeated=False, required=False, default=None), + 29: protobuf.Field("recovery_status", "RecoveryStatus", repeated=False, required=False, default=None), 30: protobuf.Field("capabilities", "Capability", repeated=True, required=False, default=None), 31: protobuf.Field("backup_type", "BackupType", repeated=False, required=False, default=None), 32: protobuf.Field("sd_card_present", "bool", repeated=False, required=False, default=None), @@ -3297,7 +3310,7 @@ def __init__( fw_vendor: Optional["str"] = None, unfinished_backup: Optional["bool"] = None, no_backup: Optional["bool"] = None, - recovery_mode: Optional["bool"] = None, + recovery_status: Optional["RecoveryStatus"] = None, backup_type: Optional["BackupType"] = None, sd_card_present: Optional["bool"] = None, sd_protection: Optional["bool"] = None, @@ -3348,7 +3361,7 @@ def __init__( self.fw_vendor = fw_vendor self.unfinished_backup = unfinished_backup self.no_backup = no_backup - self.recovery_mode = recovery_mode + self.recovery_status = recovery_status self.backup_type = backup_type self.sd_card_present = sd_card_present self.sd_protection = sd_protection @@ -3783,7 +3796,7 @@ class RecoveryDevice(protobuf.MessageType): 6: protobuf.Field("enforce_wordlist", "bool", repeated=False, required=False, default=None), 8: protobuf.Field("type", "RecoveryDeviceType", repeated=False, required=False, default=None), 9: protobuf.Field("u2f_counter", "uint32", repeated=False, required=False, default=None), - 10: protobuf.Field("dry_run", "bool", repeated=False, required=False, default=None), + 10: protobuf.Field("kind", "RecoveryKind", repeated=False, required=False, default=RecoveryKind.NormalRecovery), } def __init__( @@ -3797,7 +3810,7 @@ def __init__( enforce_wordlist: Optional["bool"] = None, type: Optional["RecoveryDeviceType"] = None, u2f_counter: Optional["int"] = None, - dry_run: Optional["bool"] = None, + kind: Optional["RecoveryKind"] = RecoveryKind.NormalRecovery, ) -> None: self.word_count = word_count self.passphrase_protection = passphrase_protection @@ -3807,7 +3820,7 @@ def __init__( self.enforce_wordlist = enforce_wordlist self.type = type self.u2f_counter = u2f_counter - self.dry_run = dry_run + self.kind = kind class WordRequest(protobuf.MessageType): diff --git a/rust/trezor-client/src/client/mod.rs b/rust/trezor-client/src/client/mod.rs index 052a2fa8ad..400ea62c6e 100644 --- a/rust/trezor-client/src/client/mod.rs +++ b/rust/trezor-client/src/client/mod.rs @@ -169,7 +169,11 @@ impl Trezor { req.set_pin_protection(pin_protection); req.set_label(label); req.set_enforce_wordlist(true); - req.set_dry_run(dry_run); + if dry_run { + req.set_kind(protos::recovery_device::RecoveryKind::DryRun); + } else { + req.set_kind(protos::recovery_device::RecoveryKind::NormalRecovery); + } req.set_type( protos::recovery_device::RecoveryDeviceType::RecoveryDeviceType_ScrambledWords, ); diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index 4961d6cb78..f2f23992b4 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -416,8 +416,8 @@ pub struct Features { pub unfinished_backup: ::std::option::Option<bool>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.no_backup) pub no_backup: ::std::option::Option<bool>, - // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.recovery_mode) - pub recovery_mode: ::std::option::Option<bool>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.recovery_status) + pub recovery_status: ::std::option::Option<::protobuf::EnumOrUnknown<features::RecoveryStatus>>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.capabilities) pub capabilities: ::std::vec::Vec<::protobuf::EnumOrUnknown<features::Capability>>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.backup_type) @@ -1110,23 +1110,26 @@ impl Features { self.no_backup = ::std::option::Option::Some(v); } - // optional bool recovery_mode = 29; + // optional .hw.trezor.messages.management.Features.RecoveryStatus recovery_status = 29; - pub fn recovery_mode(&self) -> bool { - self.recovery_mode.unwrap_or(false) + pub fn recovery_status(&self) -> features::RecoveryStatus { + match self.recovery_status { + Some(e) => e.enum_value_or(features::RecoveryStatus::NoRecovery), + None => features::RecoveryStatus::NoRecovery, + } } - pub fn clear_recovery_mode(&mut self) { - self.recovery_mode = ::std::option::Option::None; + pub fn clear_recovery_status(&mut self) { + self.recovery_status = ::std::option::Option::None; } - pub fn has_recovery_mode(&self) -> bool { - self.recovery_mode.is_some() + pub fn has_recovery_status(&self) -> bool { + self.recovery_status.is_some() } // Param is passed by value, moved - pub fn set_recovery_mode(&mut self, v: bool) { - self.recovery_mode = ::std::option::Option::Some(v); + pub fn set_recovery_status(&mut self, v: features::RecoveryStatus) { + self.recovery_status = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); } // optional .hw.trezor.messages.management.BackupType backup_type = 31; @@ -1724,9 +1727,9 @@ impl Features { |m: &mut Features| { &mut m.no_backup }, )); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "recovery_mode", - |m: &Features| { &m.recovery_mode }, - |m: &mut Features| { &mut m.recovery_mode }, + "recovery_status", + |m: &Features| { &m.recovery_status }, + |m: &mut Features| { &mut m.recovery_status }, )); fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>( "capabilities", @@ -1949,7 +1952,7 @@ impl ::protobuf::Message for Features { self.no_backup = ::std::option::Option::Some(is.read_bool()?); }, 232 => { - self.recovery_mode = ::std::option::Option::Some(is.read_bool()?); + self.recovery_status = ::std::option::Option::Some(is.read_enum_or_unknown()?); }, 240 => { self.capabilities.push(is.read_enum_or_unknown()?); @@ -2113,8 +2116,8 @@ impl ::protobuf::Message for Features { if let Some(v) = self.no_backup { my_size += 2 + 1; } - if let Some(v) = self.recovery_mode { - my_size += 2 + 1; + if let Some(v) = self.recovery_status { + my_size += ::protobuf::rt::int32_size(29, v.value()); } for value in &self.capabilities { my_size += ::protobuf::rt::int32_size(30, value.value()); @@ -2269,8 +2272,8 @@ impl ::protobuf::Message for Features { if let Some(v) = self.no_backup { os.write_bool(28, v)?; } - if let Some(v) = self.recovery_mode { - os.write_bool(29, v)?; + if let Some(v) = self.recovery_status { + os.write_enum(29, ::protobuf::EnumOrUnknown::value(&v))?; } for v in &self.capabilities { os.write_enum(30, ::protobuf::EnumOrUnknown::value(v))?; @@ -2384,7 +2387,7 @@ impl ::protobuf::Message for Features { self.fw_vendor = ::std::option::Option::None; self.unfinished_backup = ::std::option::Option::None; self.no_backup = ::std::option::Option::None; - self.recovery_mode = ::std::option::Option::None; + self.recovery_status = ::std::option::Option::None; self.capabilities.clear(); self.backup_type = ::std::option::Option::None; self.sd_card_present = ::std::option::Option::None; @@ -2439,7 +2442,7 @@ impl ::protobuf::Message for Features { fw_vendor: ::std::option::Option::None, unfinished_backup: ::std::option::Option::None, no_backup: ::std::option::Option::None, - recovery_mode: ::std::option::Option::None, + recovery_status: ::std::option::Option::None, capabilities: ::std::vec::Vec::new(), backup_type: ::std::option::Option::None, sd_card_present: ::std::option::Option::None, @@ -2488,6 +2491,78 @@ impl ::protobuf::reflect::ProtobufValue for Features { /// Nested message and enums of message `Features` pub mod features { + #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] + // @@protoc_insertion_point(enum:hw.trezor.messages.management.Features.RecoveryStatus) + pub enum RecoveryStatus { + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.NoRecovery) + NoRecovery = 0, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.InNormalRecovery) + InNormalRecovery = 1, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.InDryRunRecovery) + InDryRunRecovery = 2, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.InUnlockRepeatedBackupRecovery) + InUnlockRepeatedBackupRecovery = 3, + } + + impl ::protobuf::Enum for RecoveryStatus { + const NAME: &'static str = "RecoveryStatus"; + + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option<RecoveryStatus> { + match value { + 0 => ::std::option::Option::Some(RecoveryStatus::NoRecovery), + 1 => ::std::option::Option::Some(RecoveryStatus::InNormalRecovery), + 2 => ::std::option::Option::Some(RecoveryStatus::InDryRunRecovery), + 3 => ::std::option::Option::Some(RecoveryStatus::InUnlockRepeatedBackupRecovery), + _ => ::std::option::Option::None + } + } + + fn from_str(str: &str) -> ::std::option::Option<RecoveryStatus> { + match str { + "NoRecovery" => ::std::option::Option::Some(RecoveryStatus::NoRecovery), + "InNormalRecovery" => ::std::option::Option::Some(RecoveryStatus::InNormalRecovery), + "InDryRunRecovery" => ::std::option::Option::Some(RecoveryStatus::InDryRunRecovery), + "InUnlockRepeatedBackupRecovery" => ::std::option::Option::Some(RecoveryStatus::InUnlockRepeatedBackupRecovery), + _ => ::std::option::Option::None + } + } + + const VALUES: &'static [RecoveryStatus] = &[ + RecoveryStatus::NoRecovery, + RecoveryStatus::InNormalRecovery, + RecoveryStatus::InDryRunRecovery, + RecoveryStatus::InUnlockRepeatedBackupRecovery, + ]; + } + + impl ::protobuf::EnumFull for RecoveryStatus { + fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("Features.RecoveryStatus").unwrap()).clone() + } + + fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { + let index = *self as usize; + Self::enum_descriptor().value_by_index(index) + } + } + + impl ::std::default::Default for RecoveryStatus { + fn default() -> Self { + RecoveryStatus::NoRecovery + } + } + + impl RecoveryStatus { + pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData { + ::protobuf::reflect::GeneratedEnumDescriptorData::new::<RecoveryStatus>("Features.RecoveryStatus") + } + } + #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] // @@protoc_insertion_point(enum:hw.trezor.messages.management.Features.Capability) pub enum Capability { @@ -7768,8 +7843,8 @@ pub struct RecoveryDevice { pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<recovery_device::RecoveryDeviceType>>, // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.u2f_counter) pub u2f_counter: ::std::option::Option<u32>, - // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.dry_run) - pub dry_run: ::std::option::Option<bool>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.kind) + pub kind: ::std::option::Option<::protobuf::EnumOrUnknown<recovery_device::RecoveryKind>>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.management.RecoveryDevice.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -7975,23 +8050,26 @@ impl RecoveryDevice { self.u2f_counter = ::std::option::Option::Some(v); } - // optional bool dry_run = 10; + // optional .hw.trezor.messages.management.RecoveryDevice.RecoveryKind kind = 10; - pub fn dry_run(&self) -> bool { - self.dry_run.unwrap_or(false) + pub fn kind(&self) -> recovery_device::RecoveryKind { + match self.kind { + Some(e) => e.enum_value_or(recovery_device::RecoveryKind::NormalRecovery), + None => recovery_device::RecoveryKind::NormalRecovery, + } } - pub fn clear_dry_run(&mut self) { - self.dry_run = ::std::option::Option::None; + pub fn clear_kind(&mut self) { + self.kind = ::std::option::Option::None; } - pub fn has_dry_run(&self) -> bool { - self.dry_run.is_some() + pub fn has_kind(&self) -> bool { + self.kind.is_some() } // Param is passed by value, moved - pub fn set_dry_run(&mut self, v: bool) { - self.dry_run = ::std::option::Option::Some(v); + pub fn set_kind(&mut self, v: recovery_device::RecoveryKind) { + self.kind = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); } fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { @@ -8038,9 +8116,9 @@ impl RecoveryDevice { |m: &mut RecoveryDevice| { &mut m.u2f_counter }, )); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "dry_run", - |m: &RecoveryDevice| { &m.dry_run }, - |m: &mut RecoveryDevice| { &mut m.dry_run }, + "kind", + |m: &RecoveryDevice| { &m.kind }, + |m: &mut RecoveryDevice| { &mut m.kind }, )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RecoveryDevice>( "RecoveryDevice", @@ -8085,7 +8163,7 @@ impl ::protobuf::Message for RecoveryDevice { self.u2f_counter = ::std::option::Option::Some(is.read_uint32()?); }, 80 => { - self.dry_run = ::std::option::Option::Some(is.read_bool()?); + self.kind = ::std::option::Option::Some(is.read_enum_or_unknown()?); }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; @@ -8123,8 +8201,8 @@ impl ::protobuf::Message for RecoveryDevice { if let Some(v) = self.u2f_counter { my_size += ::protobuf::rt::uint32_size(9, v); } - if let Some(v) = self.dry_run { - my_size += 1 + 1; + if let Some(v) = self.kind { + my_size += ::protobuf::rt::int32_size(10, v.value()); } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); @@ -8156,8 +8234,8 @@ impl ::protobuf::Message for RecoveryDevice { if let Some(v) = self.u2f_counter { os.write_uint32(9, v)?; } - if let Some(v) = self.dry_run { - os.write_bool(10, v)?; + if let Some(v) = self.kind { + os.write_enum(10, ::protobuf::EnumOrUnknown::value(&v))?; } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) @@ -8184,7 +8262,7 @@ impl ::protobuf::Message for RecoveryDevice { self.enforce_wordlist = ::std::option::Option::None; self.type_ = ::std::option::Option::None; self.u2f_counter = ::std::option::Option::None; - self.dry_run = ::std::option::Option::None; + self.kind = ::std::option::Option::None; self.special_fields.clear(); } @@ -8198,7 +8276,7 @@ impl ::protobuf::Message for RecoveryDevice { enforce_wordlist: ::std::option::Option::None, type_: ::std::option::Option::None, u2f_counter: ::std::option::Option::None, - dry_run: ::std::option::Option::None, + kind: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -8285,6 +8363,73 @@ pub mod recovery_device { ::protobuf::reflect::GeneratedEnumDescriptorData::new::<RecoveryDeviceType>("RecoveryDevice.RecoveryDeviceType") } } + + #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] + // @@protoc_insertion_point(enum:hw.trezor.messages.management.RecoveryDevice.RecoveryKind) + pub enum RecoveryKind { + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryKind.NormalRecovery) + NormalRecovery = 0, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryKind.DryRun) + DryRun = 1, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryKind.UnlockRepeatedBackup) + UnlockRepeatedBackup = 2, + } + + impl ::protobuf::Enum for RecoveryKind { + const NAME: &'static str = "RecoveryKind"; + + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option<RecoveryKind> { + match value { + 0 => ::std::option::Option::Some(RecoveryKind::NormalRecovery), + 1 => ::std::option::Option::Some(RecoveryKind::DryRun), + 2 => ::std::option::Option::Some(RecoveryKind::UnlockRepeatedBackup), + _ => ::std::option::Option::None + } + } + + fn from_str(str: &str) -> ::std::option::Option<RecoveryKind> { + match str { + "NormalRecovery" => ::std::option::Option::Some(RecoveryKind::NormalRecovery), + "DryRun" => ::std::option::Option::Some(RecoveryKind::DryRun), + "UnlockRepeatedBackup" => ::std::option::Option::Some(RecoveryKind::UnlockRepeatedBackup), + _ => ::std::option::Option::None + } + } + + const VALUES: &'static [RecoveryKind] = &[ + RecoveryKind::NormalRecovery, + RecoveryKind::DryRun, + RecoveryKind::UnlockRepeatedBackup, + ]; + } + + impl ::protobuf::EnumFull for RecoveryKind { + fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("RecoveryDevice.RecoveryKind").unwrap()).clone() + } + + fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { + let index = *self as usize; + Self::enum_descriptor().value_by_index(index) + } + } + + impl ::std::default::Default for RecoveryKind { + fn default() -> Self { + RecoveryKind::NormalRecovery + } + } + + impl RecoveryKind { + pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData { + ::protobuf::reflect::GeneratedEnumDescriptorData::new::<RecoveryKind>("RecoveryDevice.RecoveryKind") + } + } } // @@protoc_insertion_point(message:hw.trezor.messages.management.WordRequest) @@ -10839,7 +10984,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x0emessages.proto\"\x80\x01\n\nInitialize\x12\x1d\n\nsession_id\x18\x01\ \x20\x01(\x0cR\tsessionId\x12,\n\x10_skip_passphrase\x18\x02\x20\x01(\ \x08R\x0eSkipPassphraseB\x02\x18\x01\x12%\n\x0ederive_cardano\x18\x03\ - \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xe1\x14\n\x08Featur\ + \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\x8f\x16\n\x08Featur\ es\x12\x16\n\x06vendor\x18\x01\x20\x01(\tR\x06vendor\x12#\n\rmajor_versi\ on\x18\x02\x20\x02(\rR\x0cmajorVersion\x12#\n\rminor_version\x18\x03\x20\ \x02(\rR\x0cminorVersion\x12#\n\rpatch_version\x18\x04\x20\x02(\rR\x0cpa\ @@ -10861,22 +11006,23 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x07fwMinor\x12\x19\n\x08fw_patch\x18\x18\x20\x01(\rR\x07fwPatch\x12\x1b\ \n\tfw_vendor\x18\x19\x20\x01(\tR\x08fwVendor\x12+\n\x11unfinished_backu\ p\x18\x1b\x20\x01(\x08R\x10unfinishedBackup\x12\x1b\n\tno_backup\x18\x1c\ - \x20\x01(\x08R\x08noBackup\x12#\n\rrecovery_mode\x18\x1d\x20\x01(\x08R\ - \x0crecoveryMode\x12V\n\x0ccapabilities\x18\x1e\x20\x03(\x0e22.hw.trezor\ - .messages.management.Features.CapabilityR\x0ccapabilities\x12J\n\x0bback\ - up_type\x18\x1f\x20\x01(\x0e2).hw.trezor.messages.management.BackupTypeR\ - \nbackupType\x12&\n\x0fsd_card_present\x18\x20\x20\x01(\x08R\rsdCardPres\ - ent\x12#\n\rsd_protection\x18!\x20\x01(\x08R\x0csdProtection\x120\n\x14w\ - ipe_code_protection\x18\"\x20\x01(\x08R\x12wipeCodeProtection\x12\x1d\n\ - \nsession_id\x18#\x20\x01(\x0cR\tsessionId\x12=\n\x1bpassphrase_always_o\ - n_device\x18$\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_c\ - hecks\x18%\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevel\ - R\x0csafetyChecks\x12+\n\x12auto_lock_delay_ms\x18&\x20\x01(\rR\x0fautoL\ - ockDelayMs\x12)\n\x10display_rotation\x18'\x20\x01(\rR\x0fdisplayRotatio\ - n\x123\n\x15experimental_features\x18(\x20\x01(\x08R\x14experimentalFeat\ - ures\x12\x12\n\x04busy\x18)\x20\x01(\x08R\x04busy\x12\\\n\x11homescreen_\ - format\x18*\x20\x01(\x0e2/.hw.trezor.messages.management.HomescreenForma\ - tR\x10homescreenFormat\x129\n\x19hide_passphrase_from_host\x18+\x20\x01(\ + \x20\x01(\x08R\x08noBackup\x12_\n\x0frecovery_status\x18\x1d\x20\x01(\ + \x0e26.hw.trezor.messages.management.Features.RecoveryStatusR\x0erecover\ + yStatus\x12V\n\x0ccapabilities\x18\x1e\x20\x03(\x0e22.hw.trezor.messages\ + .management.Features.CapabilityR\x0ccapabilities\x12J\n\x0bbackup_type\ + \x18\x1f\x20\x01(\x0e2).hw.trezor.messages.management.BackupTypeR\nbacku\ + pType\x12&\n\x0fsd_card_present\x18\x20\x20\x01(\x08R\rsdCardPresent\x12\ + #\n\rsd_protection\x18!\x20\x01(\x08R\x0csdProtection\x120\n\x14wipe_cod\ + e_protection\x18\"\x20\x01(\x08R\x12wipeCodeProtection\x12\x1d\n\nsessio\ + n_id\x18#\x20\x01(\x0cR\tsessionId\x12=\n\x1bpassphrase_always_on_device\ + \x18$\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\ + \x18%\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\x0c\ + safetyChecks\x12+\n\x12auto_lock_delay_ms\x18&\x20\x01(\rR\x0fautoLockDe\ + layMs\x12)\n\x10display_rotation\x18'\x20\x01(\rR\x0fdisplayRotation\x12\ + 3\n\x15experimental_features\x18(\x20\x01(\x08R\x14experimentalFeatures\ + \x12\x12\n\x04busy\x18)\x20\x01(\x08R\x04busy\x12\\\n\x11homescreen_form\ + at\x18*\x20\x01(\x0e2/.hw.trezor.messages.management.HomescreenFormatR\ + \x10homescreenFormat\x129\n\x19hide_passphrase_from_host\x18+\x20\x01(\ \x08R\x16hidePassphraseFromHost\x12%\n\x0einternal_model\x18,\x20\x01(\t\ R\rinternalModel\x12\x1d\n\nunit_color\x18-\x20\x01(\rR\tunitColor\x12!\ \n\x0cunit_btconly\x18.\x20\x01(\x08R\x0bunitBtconly\x12)\n\x10homescree\ @@ -10885,120 +11031,125 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20\x01(\x08R\x10bootloaderLocked\x12>\n\x18language_version_matches\ \x182\x20\x01(\x08:\x04trueR\x16languageVersionMatches\x12%\n\x0eunit_pa\ ckaging\x183\x20\x01(\rR\runitPackaging\x12'\n\x0fhaptic_feedback\x184\ - \x20\x01(\x08R\x0ehapticFeedback\"\xc2\x04\n\nCapability\x12\x1c\n\x12Ca\ - pability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x17Capability\ - _Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Binance\x10\x03\x12\x16\n\ - \x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capability_Crypto\x10\x05\ - \x1a\x04\x80\xa6\x1d\x01\x12\x12\n\x0eCapability_EOS\x10\x06\x12\x17\n\ - \x13Capability_Ethereum\x10\x07\x12\x17\n\x0fCapability_Lisk\x10\x08\x1a\ - \x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\x12\n\x0eCapabilit\ - y_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\x12\x16\n\x12Capabili\ - ty_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\x10\r\x12\x12\n\x0eCapa\ - bility_U2F\x10\x0e\x12\x1b\n\x11Capability_Shamir\x10\x0f\x1a\x04\x80\ - \xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\x10\x1a\x04\x80\xa6\ - \x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\x11\x1a\x04\x80\xa6\ - \x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x12!\n\x17Capability_Tra\ - nslations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\x15Capability_Bright\ - ness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x11Capability_Haptic\x10\ - \x15\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\"\x0c\n\nLockDevice\ - \"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\x20\x01(\rR\x08expiryMs\"\ - \x0c\n\nEndSession\"\xc4\x04\n\rApplySettings\x12\x1e\n\x08language\x18\ - \x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x02\x20\ - \x01(\tR\x05label\x12%\n\x0euse_passphrase\x18\x03\x20\x01(\x08R\rusePas\ - sphrase\x12\x1e\n\nhomescreen\x18\x04\x20\x01(\x0cR\nhomescreen\x120\n\ - \x12_passphrase_source\x18\x05\x20\x01(\rR\x10PassphraseSourceB\x02\x18\ - \x01\x12+\n\x12auto_lock_delay_ms\x18\x06\x20\x01(\rR\x0fautoLockDelayMs\ - \x12)\n\x10display_rotation\x18\x07\x20\x01(\rR\x0fdisplayRotation\x12=\ - \n\x1bpassphrase_always_on_device\x18\x08\x20\x01(\x08R\x18passphraseAlw\ - aysOnDevice\x12T\n\rsafety_checks\x18\t\x20\x01(\x0e2/.hw.trezor.message\ - s.management.SafetyCheckLevelR\x0csafetyChecks\x123\n\x15experimental_fe\ - atures\x18\n\x20\x01(\x08R\x14experimentalFeatures\x129\n\x19hide_passph\ - rase_from_host\x18\x0b\x20\x01(\x08R\x16hidePassphraseFromHost\x12'\n\ - \x0fhaptic_feedback\x18\r\x20\x01(\x08R\x0ehapticFeedback\"T\n\x0eChange\ - Language\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\x12!\n\ - \x0cshow_display\x18\x02\x20\x01(\x08R\x0bshowDisplay\"Z\n\x16Translatio\ - nDataRequest\x12\x1f\n\x0bdata_length\x18\x01\x20\x02(\rR\ndataLength\ - \x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\ndataOffset\"3\n\x12Transl\ - ationDataAck\x12\x1d\n\ndata_chunk\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\ - \n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\x02(\rR\x05flags\"#\n\tCha\ - ngePin\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"(\n\x0eChang\ - eWipeCode\x12\x16\n\x06remove\x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\ - \n\tSdProtect\x12]\n\toperation\x18\x01\x20\x02(\x0e2?.hw.trezor.message\ - s.management.SdProtect.SdProtectOperationTypeR\toperation\">\n\x16SdProt\ - ectOperationType\x12\x0b\n\x07DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\ - \x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Ping\x12\x1a\n\x07message\x18\x01\ - \x20\x01(\t:\0R\x07message\x12+\n\x11button_protection\x18\x02\x20\x01(\ - \x08R\x10buttonProtection\"\x08\n\x06Cancel\"\x20\n\nGetEntropy\x12\x12\ - \n\x04size\x18\x01\x20\x02(\rR\x04size\"#\n\x07Entropy\x12\x18\n\x07entr\ - opy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\x0fGetFirmwareHash\x12\x1c\n\t\ - challenge\x18\x01\x20\x01(\x0cR\tchallenge\"\"\n\x0cFirmwareHash\x12\x12\ - \n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\"2\n\x12AuthenticateDevice\x12\ - \x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\tchallenge\"U\n\x11AuthenticityP\ - roof\x12\"\n\x0ccertificates\x18\x01\x20\x03(\x0cR\x0ccertificates\x12\ - \x1c\n\tsignature\x18\x02\x20\x02(\x0cR\tsignature\"\x0c\n\nWipeDevice\"\ - \xad\x02\n\nLoadDevice\x12\x1c\n\tmnemonics\x18\x01\x20\x03(\tR\tmnemoni\ - cs\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\x03pin\x123\n\x15passphrase_prot\ - ection\x18\x04\x20\x01(\x08R\x14passphraseProtection\x12\x1e\n\x08langua\ - ge\x18\x05\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\ - \x06\x20\x01(\tR\x05label\x12#\n\rskip_checksum\x18\x07\x20\x01(\x08R\ - \x0cskipChecksum\x12\x1f\n\x0bu2f_counter\x18\x08\x20\x01(\rR\nu2fCounte\ - r\x12!\n\x0cneeds_backup\x18\t\x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tn\ - o_backup\x18\n\x20\x01(\x08R\x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\ - \n\x0edisplay_random\x18\x01\x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08s\ - trength\x18\x02\x20\x01(\r:\x03256R\x08strength\x123\n\x15passphrase_pro\ - tection\x18\x03\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_prot\ - ection\x18\x04\x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\ - \x05\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\ - \x01(\tR\x05label\x12\x1f\n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCount\ - er\x12\x1f\n\x0bskip_backup\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\ - \tno_backup\x18\t\x20\x01(\x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\ - \x20\x01(\x0e2).hw.trezor.messages.management.BackupType:\x05Bip39R\nbac\ - kupType\"\xe5\x01\n\x0cBackupDevice\x12'\n\x0fgroup_threshold\x18\x01\ - \x20\x01(\rR\x0egroupThreshold\x12O\n\x06groups\x18\x02\x20\x03(\x0b27.h\ - w.trezor.messages.management.BackupDevice.Slip39GroupR\x06groups\x1a[\n\ - \x0bSlip39Group\x12)\n\x10member_threshold\x18\x01\x20\x02(\rR\x0fmember\ - Threshold\x12!\n\x0cmember_count\x18\x02\x20\x02(\rR\x0bmemberCount\"\ - \x10\n\x0eEntropyRequest\"&\n\nEntropyAck\x12\x18\n\x07entropy\x18\x01\ - \x20\x02(\x0cR\x07entropy\"\xd8\x03\n\x0eRecoveryDevice\x12\x1d\n\nword_\ - count\x18\x01\x20\x01(\rR\twordCount\x123\n\x15passphrase_protection\x18\ - \x02\x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\ - \x03\x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\x04\x20\x01(\ - \tR\x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x05\x20\x01(\tR\x05l\ - abel\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\x08R\x0fenforceWordlist\ - \x12T\n\x04type\x18\x08\x20\x01(\x0e2@.hw.trezor.messages.management.Rec\ - overyDevice.RecoveryDeviceTypeR\x04type\x12\x1f\n\x0bu2f_counter\x18\t\ - \x20\x01(\rR\nu2fCounter\x12\x17\n\x07dry_run\x18\n\x20\x01(\x08R\x06dry\ - Run\"Z\n\x12RecoveryDeviceType\x12%\n!RecoveryDeviceType_ScrambledWords\ - \x10\0\x12\x1d\n\x19RecoveryDeviceType_Matrix\x10\x01\"\xc5\x01\n\x0bWor\ - dRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw.trezor.messages.manage\ - ment.WordRequest.WordRequestTypeR\x04type\"f\n\x0fWordRequestType\x12\ - \x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\x17WordRequestType_Matri\ - x9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02\"\x1d\n\x07WordA\ - ck\x12\x12\n\x04word\x18\x01\x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\ - \x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNext\ - U2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\ - \x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\x16\n\x14Preauthorized\ - Request\"\x15\n\x13CancelAuthorization\"\x9a\x02\n\x12RebootToBootloader\ - \x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.hw.trezor.messages.manage\ - ment.RebootToBootloader.BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\ - \n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14\ - language_data_length\x18\x03\x20\x01(\r:\x010R\x12languageDataLength\"5\ - \n\x0bBootCommand\x12\x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UP\ - GRADE\x10\x01\"\x10\n\x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\ - \x14\n\x05nonce\x18\x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\ - \nUnlockPath\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\ - \x10\n\x03mac\x18\x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\ - \x12\x10\n\x03mac\x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTuto\ - rial\"\x12\n\x10UnlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\ - \x18\x01\x20\x01(\rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\ - \x10\0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\ - \x10\x02\x12\x1c\n\x18Slip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip\ - 39_Basic_Extendable\x10\x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\ - \x05*G\n\x10SafetyCheckLevel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPrompt\ - Always\x10\x01\x12\x15\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenF\ - ormat\x12\x08\n\x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04T\ - oiG\x10\x03BB\n#com.satoshilabs.trezor.lib.protobufB\x17TrezorMessageMan\ - agement\x80\xa6\x1d\x01\ + \x20\x01(\x08R\x0ehapticFeedback\"p\n\x0eRecoveryStatus\x12\x0e\n\nNoRec\ + overy\x10\0\x12\x14\n\x10InNormalRecovery\x10\x01\x12\x14\n\x10InDryRunR\ + ecovery\x10\x02\x12\"\n\x1eInUnlockRepeatedBackupRecovery\x10\x03\"\xc2\ + \x04\n\nCapability\x12\x1c\n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\ + \xa6\x1d\x01\x12\x1b\n\x17Capability_Bitcoin_like\x10\x02\x12\x16\n\x12C\ + apability_Binance\x10\x03\x12\x16\n\x12Capability_Cardano\x10\x04\x12\ + \x1b\n\x11Capability_Crypto\x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\n\ + \x0eCapability_EOS\x10\x06\x12\x17\n\x13Capability_Ethereum\x10\x07\x12\ + \x17\n\x0fCapability_Lisk\x10\x08\x1a\x02\x08\x01\x12\x15\n\x11Capabilit\ + y_Monero\x10\t\x12\x12\n\x0eCapability_NEM\x10\n\x12\x15\n\x11Capability\ + _Ripple\x10\x0b\x12\x16\n\x12Capability_Stellar\x10\x0c\x12\x14\n\x10Cap\ + ability_Tezos\x10\r\x12\x12\n\x0eCapability_U2F\x10\x0e\x12\x1b\n\x11Cap\ + ability_Shamir\x10\x0f\x1a\x04\x80\xa6\x1d\x01\x12!\n\x17Capability_Sham\ + irGroups\x10\x10\x1a\x04\x80\xa6\x1d\x01\x12$\n\x1aCapability_Passphrase\ + Entry\x10\x11\x1a\x04\x80\xa6\x1d\x01\x12\x15\n\x11Capability_Solana\x10\ + \x12\x12!\n\x17Capability_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\ + \x12\x1f\n\x15Capability_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x12\ + \x1b\n\x11Capability_Haptic\x10\x15\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\ + \xf3\x18\x01\"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\ + \x18\x01\x20\x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\xc4\x04\n\rApplyS\ + ettings\x12\x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\ + \x01\x12\x14\n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passp\ + hrase\x18\x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\ + \x20\x01(\x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\ + \rR\x10PassphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\ + \x06\x20\x01(\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\x07\ + \x20\x01(\rR\x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_device\ + \x18\x08\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\ + \x18\t\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\ + \x0csafetyChecks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14\ + experimentalFeatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01\ + (\x08R\x16hidePassphraseFromHost\x12'\n\x0fhaptic_feedback\x18\r\x20\x01\ + (\x08R\x0ehapticFeedback\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\ + \x18\x01\x20\x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\x01(\ + \x08R\x0bshowDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_le\ + ngth\x18\x01\x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\ + \x20\x02(\rR\ndataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_chun\ + k\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\ + \x18\x01\x20\x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\ + \x01\x20\x01(\x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\ + \x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperatio\ + n\x18\x01\x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProte\ + ctOperationTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07\ + DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\ + \n\x04Ping\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\ + \x11button_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\ + \x06Cancel\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04\ + size\"#\n\x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entro\ + py\"/\n\x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tc\ + hallenge\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\ + \x04hash\"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02\ + (\x0cR\tchallenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\ + \x01\x20\x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\ + \x0cR\tsignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\t\ + mnemonics\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\ + \x01(\tR\x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\ + \x14passphraseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08la\ + nguageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\ + \n\rskip_checksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f\ + _counter\x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\ + \x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\ + \x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\ + \x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\ + \x03256R\x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\ + \x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\ + \x08R\rpinProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08langua\ + geB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\ + \n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_back\ + up\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\ + \x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.m\ + essages.management.BackupType:\x05Bip39R\nbackupType\"\xe5\x01\n\x0cBack\ + upDevice\x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\x0egroupThreshold\ + \x12O\n\x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.messages.management.B\ + ackupDevice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10membe\ + r_threshold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_coun\ + t\x18\x02\x20\x02(\rR\x0bmemberCount\"\x10\n\x0eEntropyRequest\"&\n\nEnt\ + ropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\xef\x04\ + \n\x0eRecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCoun\ + t\x123\n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphrasePro\ + tection\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\ + \x12\x1e\n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\ + \x14\n\x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\ + \x18\x06\x20\x01(\x08R\x0fenforceWordlist\x12T\n\x04type\x18\x08\x20\x01\ + (\x0e2@.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceTypeR\ + \x04type\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12^\n\ + \x04kind\x18\n\x20\x01(\x0e2:.hw.trezor.messages.management.RecoveryDevi\ + ce.RecoveryKind:\x0eNormalRecoveryR\x04kind\"Z\n\x12RecoveryDeviceType\ + \x12%\n!RecoveryDeviceType_ScrambledWords\x10\0\x12\x1d\n\x19RecoveryDev\ + iceType_Matrix\x10\x01\"H\n\x0cRecoveryKind\x12\x12\n\x0eNormalRecovery\ + \x10\0\x12\n\n\x06DryRun\x10\x01\x12\x18\n\x14UnlockRepeatedBackup\x10\ + \x02J\x04\x08\x07\x10\x08\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\ + \x01\x20\x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordReques\ + tTypeR\x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plai\ + n\x10\0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordRe\ + questType_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\ + \x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\ + \x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2\ + FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\ + \n\x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelA\ + uthorization\"\x9a\x02\n\x12RebootToBootloader\x12o\n\x0cboot_command\ + \x18\x01\x20\x01(\x0e2=.hw.trezor.messages.management.RebootToBootloader\ + .BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\n\x0ffirmware_header\ + \x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14language_data_length\ + \x18\x03\x20\x01(\r:\x010R\x12languageDataLength\"5\n\x0bBootCommand\x12\ + \x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01\"\x10\n\ + \x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\x14\n\x05nonce\x18\ + \x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\nUnlockPath\x12\ + \x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\ + \x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\ + \x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10U\ + nlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\x18\x01\x20\x01(\ + \rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0c\ + Slip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18S\ + lip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\ + \x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckL\ + evel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\ + \x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\ + \x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.sat\ + oshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -11064,13 +11215,15 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(UnlockBootloader::generated_message_descriptor_data()); messages.push(SetBrightness::generated_message_descriptor_data()); messages.push(backup_device::Slip39Group::generated_message_descriptor_data()); - let mut enums = ::std::vec::Vec::with_capacity(8); + let mut enums = ::std::vec::Vec::with_capacity(10); enums.push(BackupType::generated_enum_descriptor_data()); enums.push(SafetyCheckLevel::generated_enum_descriptor_data()); enums.push(HomescreenFormat::generated_enum_descriptor_data()); + enums.push(features::RecoveryStatus::generated_enum_descriptor_data()); enums.push(features::Capability::generated_enum_descriptor_data()); enums.push(sd_protect::SdProtectOperationType::generated_enum_descriptor_data()); enums.push(recovery_device::RecoveryDeviceType::generated_enum_descriptor_data()); + enums.push(recovery_device::RecoveryKind::generated_enum_descriptor_data()); enums.push(word_request::WordRequestType::generated_enum_descriptor_data()); enums.push(reboot_to_bootloader::BootCommand::generated_enum_descriptor_data()); ::protobuf::reflect::GeneratedFileDescriptor::new_generated( diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 65e4adae88..3f46fede21 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -48,25 +48,27 @@ def enter_word( raise ValueError("Unknown model") -def confirm_recovery(debug: "DebugLink") -> None: +def confirm_recovery(debug: "DebugLink", title: str = "recovery__title") -> None: layout = debug.wait_layout() - TR.assert_equals(layout.title(), "recovery__title") + TR.assert_equals(layout.title(), title) if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) elif debug.model in (models.T3T1,): debug.swipe_up(wait=True) elif debug.model in (models.T2B1,): debug.press_right(wait=True) - debug.press_right() def select_number_of_words( - debug: "DebugLink", num_of_words: int = 20, wait: bool = True + debug: "DebugLink", + num_of_words: int = 20, + wait: bool = True, + unlock_repeated_backup=False, ) -> None: if wait: debug.wait_layout() - TR.assert_equals(debug.read_layout().text_content(), "recovery__num_of_words") if debug.model in (models.T2T1,): + TR.assert_equals(debug.read_layout().text_content(), "recovery__num_of_words") # click the number word_option_offset = 6 word_options = (12, 18, 20, 24, 33) @@ -102,12 +104,14 @@ def select_number_of_words( else: raise ValueError("Unknown model") - if num_of_words in (20, 33): + if unlock_repeated_backup: + TR.assert_in(layout.text_content(), "recovery__enter_backup") + elif num_of_words in (20, 33): TR.assert_in_multiple( layout.text_content(), ["recovery__enter_any_share", "recovery__only_first_n_letters"], ) - else: + else: # BIP-39 TR.assert_in_multiple( layout.text_content(), ["recovery__enter_backup", "recovery__only_first_n_letters"], @@ -115,7 +119,10 @@ def select_number_of_words( def enter_share( - debug: "DebugLink", share: str, is_first: bool = True + debug: "DebugLink", + share: str, + is_first: bool = True, + before_title: str = "recovery__title_recover", ) -> "LayoutContent": if debug.model in (models.T2B1,): TR.assert_in(debug.read_layout().title(), "recovery__title_recover") @@ -136,13 +143,21 @@ def enter_share( return layout -def enter_shares(debug: "DebugLink", shares: list[str]) -> None: +def enter_shares( + debug: "DebugLink", + shares: list[str], + enter_share_before_title: str = "recovery__title_recover", + text: str = "recovery__enter_any_share", + after_layout_text: str = "recovery__wallet_recovered", +) -> None: TR.assert_in_multiple( debug.read_layout().text_content(), - ["recovery__enter_any_share", "recovery__only_first_n_letters"], + ["recovery__enter_any_share", "recovery__only_first_n_letters", text], ) for index, share in enumerate(shares): - enter_share(debug, share, is_first=index == 0) + enter_share( + debug, share, is_first=index == 0, before_title=enter_share_before_title + ) if index < len(shares) - 1: # FIXME: when ui-t3t1 done for shamir, we want to check the template below TR.assert_in(debug.read_layout().title(), "recovery__title_recover") @@ -152,16 +167,22 @@ def enter_shares(debug: "DebugLink", shares: list[str]) -> None: # template=(index + 1, len(shares)), # ) - TR.assert_in(debug.read_layout().text_content(), "recovery__wallet_recovered") + TR.assert_in(debug.read_layout().text_content(), after_layout_text) -def enter_seed(debug: "DebugLink", seed_words: list[str]) -> None: - prepare_enter_seed(debug) +def enter_seed( + debug: "DebugLink", + seed_words: list[str], + is_slip39=False, + prepare_layout_text: str = "recovery__enter_backup", + after_layout_text: str = "recovery__wallet_recovered", +) -> None: + prepare_enter_seed(debug, prepare_layout_text) for word in seed_words: - enter_word(debug, word, is_slip39=False) + enter_word(debug, word, is_slip39=is_slip39) - TR.assert_in(debug.read_layout().text_content(), "recovery__wallet_recovered") + TR.assert_in(debug.read_layout().text_content(), after_layout_text) def enter_seed_previous_correct( @@ -209,10 +230,12 @@ def enter_seed_previous_correct( # TR.assert_in(debug.read_layout().text_content(), "recovery__wallet_recovered") -def prepare_enter_seed(debug: "DebugLink") -> None: +def prepare_enter_seed( + debug: "DebugLink", layout_text: str = "recovery__enter_backup" +) -> None: TR.assert_in_multiple( debug.read_layout().text_content(), - ["recovery__enter_backup", "recovery__only_first_n_letters"], + ["recovery__enter_backup", "recovery__only_first_n_letters", layout_text], ) if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) @@ -221,7 +244,6 @@ def prepare_enter_seed(debug: "DebugLink") -> None: debug.swipe_up(wait=True) elif debug.model in (models.T2B1,): debug.press_right(wait=True) - TR.assert_equals(debug.read_layout().title(), "recovery__title_recover") debug.press_right() layout = debug.press_right(wait=True) assert "MnemonicKeyboard" in layout.all_components() diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index afaf14944b..ea82c538d2 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -3,7 +3,7 @@ from shamir_mnemonic import shamir # type: ignore -from trezorlib import messages, models +from trezorlib import models from .. import buttons from .. import translations as TR @@ -81,9 +81,7 @@ def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> Non debug.press_middle(wait=True) -def read_words( - debug: "DebugLink", backup_type: messages.BackupType, do_htc: bool = True -) -> list[str]: +def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: words: list[str] = [] if debug.model in (models.T2B1,): diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index 02e2b5363f..24524b03ba 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -82,7 +82,7 @@ def test_backup_slip39_custom( all_words: list[str] = [] for _ in range(share_count): # read words - words = reset.read_words(debug, messages.BackupType.Slip39_Basic) + words = reset.read_words(debug) # confirm words reset.confirm_words(debug, words) diff --git a/tests/click_tests/test_recovery.py b/tests/click_tests/test_recovery.py index 5f16433156..5292bf8ce4 100644 --- a/tests/click_tests/test_recovery.py +++ b/tests/click_tests/test_recovery.py @@ -47,7 +47,7 @@ def prepare_recovery_and_evaluate( assert isinstance(device_handler.result(), messages.Success) features = device_handler.features() assert features.initialized is True - assert features.recovery_mode is False + assert features.recovery_status == messages.RecoveryStatus.NoRecovery @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/click_tests/test_repeated_backup.py b/tests/click_tests/test_repeated_backup.py new file mode 100644 index 0000000000..6edca7e020 --- /dev/null +++ b/tests/click_tests/test_repeated_backup.py @@ -0,0 +1,218 @@ +# This file is part of the Trezor project. +# +# Copyright (C) 2012-2024 SatoshiLabs and contributors +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the License along with this library. +# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. + +from typing import TYPE_CHECKING + +import pytest + +from trezorlib import device, messages + +from .. import buttons +from ..common import WITH_MOCK_URANDOM +from . import recovery, reset +from .common import go_next + +if TYPE_CHECKING: + from ..device_handler import BackgroundDeviceHandler + + +pytestmark = [pytest.mark.skip_t1b1] + + +@pytest.mark.setup_client(uninitialized=True) +@WITH_MOCK_URANDOM +def test_repeated_backup( + device_handler: "BackgroundDeviceHandler", +): + features = device_handler.features() + debug = device_handler.debuglink() + + assert features.initialized is False + + device_handler.run( + device.reset, + strength=128, + backup_type=messages.BackupType.Slip39_Basic, + pin_protection=False, + ) + + # confirm new wallet + reset.confirm_new_wallet(debug) + + # confirm back up + reset.confirm_read(debug) + + # confirm backup warning + reset.confirm_read(debug, middle_r=True) + + # let's make a 1-of-1 backup to start with... + + # shares=1 + reset.set_selection(debug, buttons.RESET_MINUS, 5 - 1) + + # confirm checklist + reset.confirm_read(debug) + + # threshold=1 + reset.set_selection(debug, buttons.RESET_PLUS, 0) + + # confirm checklist + reset.confirm_read(debug) + + # confirm backup warning + reset.confirm_read(debug, middle_r=True) + + # read words + initial_backup_1_of_1 = reset.read_words(debug) + + # confirm words + reset.confirm_words(debug, initial_backup_1_of_1) + + # confirm share checked + reset.confirm_read(debug) + + # confirm backup done + reset.confirm_read(debug) + + # Your backup is done + go_next(debug) + + # great ... device is initialized, backup done, and we are not in recovery mode! + assert device_handler.result() == "Initialized" + features = device_handler.features() + assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.initialized is True + assert features.needs_backup is False + assert features.no_backup is False + assert features.recovery_status == messages.RecoveryStatus.NoRecovery + + # run recovery to unlock backup + device_handler.run( + device.recover, + recovery_kind=messages.RecoveryKind.UnlockRepeatedBackup, + ) + + recovery.confirm_recovery(debug, "recovery__title_unlock_repeated_backup") + + recovery.select_number_of_words(debug, num_of_words=20, unlock_repeated_backup=True) + recovery.enter_seed( + debug, + initial_backup_1_of_1, + True, + "recovery__enter_backup", + "recovery__unlock_repeated_backup", + ) + + # backup is enabled + go_next(debug) + + assert device_handler.result().message == "Backup unlocked" + + # we are now in recovery mode + features = device_handler.features() + assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.initialized is True + assert features.needs_backup is False + assert features.no_backup is False + assert ( + features.recovery_status + == messages.RecoveryStatus.InUnlockRepeatedBackupRecovery + ) + + # at this point, the backup is unlocked... + + # ... so let's try to do a 2-of-3 backup + + # confirm checklist + reset.confirm_read(debug) + + # shares=3 + reset.set_selection(debug, buttons.RESET_MINUS, 5 - 3) + + # confirm checklist + reset.confirm_read(debug) + + # threshold=2 + reset.set_selection(debug, buttons.RESET_MINUS, 1) + + # confirm checklist + reset.confirm_read(debug) + + # confirm backup warning + reset.confirm_read(debug, middle_r=True) + + second_backup_2_of_3: list[str] = [] + for _ in range(3): + # read words + words = reset.read_words(debug, do_htc=False) + + # confirm words + reset.confirm_words(debug, words) + + # confirm share checked + reset.confirm_read(debug) + + second_backup_2_of_3.append(" ".join(words)) + + # we are not in recovery mode anymore, because we finished the backup process! + features = device_handler.features() + assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.initialized is True + assert features.needs_backup is False + assert features.no_backup is False + assert features.recovery_status == messages.RecoveryStatus.NoRecovery + + # try to unlock backup again... + device_handler.run( + device.recover, + recovery_kind=messages.RecoveryKind.UnlockRepeatedBackup, + ) + + recovery.confirm_recovery(debug, "recovery__title_unlock_repeated_backup") + + # ... this time with the 2 shares from the *new* backup, which was a 2-of-3! + recovery.select_number_of_words(debug, num_of_words=20, unlock_repeated_backup=True) + recovery.enter_shares( + debug, + second_backup_2_of_3[-2:], + "recovery__title_unlock_repeated_backup", + "recovery__enter_backup", + "recovery__unlock_repeated_backup", + ) + + assert device_handler.result().message == "Backup unlocked" + + # we are now in recovery mode again! + features = device_handler.features() + assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.initialized is True + assert features.needs_backup is False + assert features.no_backup is False + assert ( + features.recovery_status + == messages.RecoveryStatus.InUnlockRepeatedBackupRecovery + ) + + # but if we cancel the backup at this point... + reset.cancel_backup(debug) + + # ...we are out of recovery mode! + features = device_handler.features() + assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.initialized is True + assert features.needs_backup is False + assert features.no_backup is False + assert features.recovery_status == messages.RecoveryStatus.NoRecovery diff --git a/tests/click_tests/test_reset_bip39.py b/tests/click_tests/test_reset_bip39.py index 9433efcc6e..9e990ee9a9 100644 --- a/tests/click_tests/test_reset_bip39.py +++ b/tests/click_tests/test_reset_bip39.py @@ -56,7 +56,7 @@ def test_reset_bip39(device_handler: "BackgroundDeviceHandler"): reset.confirm_read(debug, middle_r=True) # read words - words = reset.read_words(debug, messages.BackupType.Bip39) + words = reset.read_words(debug) # confirm words reset.confirm_words(debug, words) diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index e37965db87..1b518227c6 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -114,9 +114,7 @@ def test_reset_slip39_advanced( for _ in range(group_count): for _ in range(share_count): # read words - words = reset.read_words( - debug, messages.BackupType.Slip39_Advanced, do_htc=False - ) + words = reset.read_words(debug, do_htc=False) # confirm words reset.confirm_words(debug, words) diff --git a/tests/click_tests/test_reset_slip39_basic.py b/tests/click_tests/test_reset_slip39_basic.py index 790e98bb6d..ab90ebc391 100644 --- a/tests/click_tests/test_reset_slip39_basic.py +++ b/tests/click_tests/test_reset_slip39_basic.py @@ -93,7 +93,7 @@ def test_reset_slip39_basic( all_words: list[str] = [] for _ in range(num_of_shares): # read words - words = reset.read_words(debug, messages.BackupType.Slip39_Basic) + words = reset.read_words(debug) # confirm words reset.confirm_words(debug, words) diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py index 5e6494a766..ed1f1cf52f 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py @@ -40,7 +40,7 @@ def input_callback(_): ret = device.recover( client, - dry_run=True, + recovery_kind=messages.RecoveryKind.DryRun, word_count=len(mnemonic), type=messages.RecoveryDeviceType.ScrambledWords, input_callback=input_callback, @@ -56,7 +56,7 @@ def do_recover_core(client: Client, mnemonic: list[str], mismatch: bool = False) client.watch_layout() IF = InputFlowBip39RecoveryDryRun(client, mnemonic, mismatch=mismatch) client.set_input_flow(IF.get()) - return device.recover(client, dry_run=True) + return device.recover(client, recovery_kind=messages.RecoveryKind.DryRun) def do_recover(client: Client, mnemonic: list[str], mismatch: bool = False): @@ -105,7 +105,7 @@ def test_uninitialized(client: Client): DRY_RUN_ALLOWED_FIELDS = ( - "dry_run", + "kind", "word_count", "enforce_wordlist", "type", @@ -131,6 +131,8 @@ def _make_bad_params(): yield field.name, True elif field.type == "string": yield field.name, "test" + elif field.type == "RecoveryKind": + yield field.name, 1 else: # Someone added a field to RecoveryDevice of a type that has no assigned # default value. This test must be fixed. @@ -140,13 +142,14 @@ def _make_bad_params(): @pytest.mark.parametrize("field_name, field_value", _make_bad_params()) def test_bad_parameters(client: Client, field_name: str, field_value: Any): msg = messages.RecoveryDevice( - dry_run=True, + kind=messages.RecoveryKind.DryRun, word_count=12, enforce_wordlist=True, type=messages.RecoveryDeviceType.ScrambledWords, ) setattr(msg, field_name, field_value) with pytest.raises( - exceptions.TrezorFailure, match="Forbidden field set in dry-run" + exceptions.TrezorFailure, + match="Forbidden field set in dry-run", ): client.call(msg) diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py b/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py index 4717a0f430..12df18116f 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py @@ -202,10 +202,10 @@ def test_already_initialized(client: Client): with pytest.raises(RuntimeError): device.recover( client, - 12, - False, - False, - "label", + word_count=12, + pin_protection=False, + passphrase_protection=False, + label="label", input_callback=client.mnemonic_callback, ) diff --git a/tests/device_tests/test_repeated_backup.py b/tests/device_tests/test_repeated_backup.py new file mode 100644 index 0000000000..abe1a70b39 --- /dev/null +++ b/tests/device_tests/test_repeated_backup.py @@ -0,0 +1,110 @@ +# This file is part of the Trezor project. +# +# Copyright (C) 2012-2024 SatoshiLabs and contributors +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the License along with this library. +# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. + + +import pytest + +from trezorlib import device, messages +from trezorlib.debuglink import TrezorClientDebugLink as Client +from trezorlib.exceptions import Cancelled, TrezorFailure + +from ..common import WITH_MOCK_URANDOM, MNEMONIC_SLIP39_BASIC_20_3of6 +from ..input_flows import InputFlowSlip39BasicBackup, InputFlowSlip39BasicRecoveryDryRun + + +@pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6) +@pytest.mark.skip_t1b1 +@WITH_MOCK_URANDOM +def test_repeated_backup(client: Client): + assert client.features.needs_backup is True + + # initial device backup + mnemonics = [] + with client: + IF = InputFlowSlip39BasicBackup(client, False) + client.set_input_flow(IF.get()) + device.backup(client) + mnemonics = IF.mnemonics + + assert len(mnemonics) == 5 + + # cannot backup, since we already just did that! + with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): + device.backup(client) + + # unlock repeated backup by entering 3 of the 5 shares we have got + with client: + IF = InputFlowSlip39BasicRecoveryDryRun( + client, mnemonics[:3], unlock_repeated_backup=True + ) + client.set_input_flow(IF.get()) + ret = device.recover( + client, recovery_kind=messages.RecoveryKind.UnlockRepeatedBackup + ) + assert ret == messages.Success(message="Backup unlocked") + + # we can now perform another backup + with client: + IF = InputFlowSlip39BasicBackup(client, False) + client.set_input_flow(IF.get()) + device.backup(client) + + # the backup feature is locked again... + with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): + device.backup(client) + + +@pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6) +@pytest.mark.skip_t1b1 +@WITH_MOCK_URANDOM +def test_repeated_backup_cancel(client: Client): + assert client.features.needs_backup is True + + # initial device backup + mnemonics = [] + with client: + IF = InputFlowSlip39BasicBackup(client, False) + client.set_input_flow(IF.get()) + device.backup(client) + mnemonics = IF.mnemonics + + assert len(mnemonics) == 5 + + # cannot backup, since we already just did that! + with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): + device.backup(client) + + # unlock repeated backup by entering 3 of the 5 shares we have got + with client: + IF = InputFlowSlip39BasicRecoveryDryRun( + client, mnemonics[:3], unlock_repeated_backup=True + ) + client.set_input_flow(IF.get()) + ret = device.recover( + client, recovery_kind=messages.RecoveryKind.UnlockRepeatedBackup + ) + assert ret == messages.Success(message="Backup unlocked") + + client.debug.wait_layout() + + # send a Cancel message + + with pytest.raises(Cancelled): + client.call(messages.Cancel()) + + # the backup feature is locked again... + with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): + device.backup(client) diff --git a/tests/input_flows.py b/tests/input_flows.py index 9e99f74dde..5d630658ba 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -1979,15 +1979,25 @@ def input_flow_common(self) -> BRGeneratorType: class InputFlowSlip39BasicRecoveryDryRun(InputFlowBase): - def __init__(self, client: Client, shares: list[str], mismatch: bool = False): + def __init__( + self, + client: Client, + shares: list[str], + mismatch: bool = False, + unlock_repeated_backup=False, + ): super().__init__(client) self.shares = shares self.mismatch = mismatch + self.unlock_repeated_backup = unlock_repeated_backup self.word_count = len(shares[0].split(" ")) def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_dry_run() - yield from self.REC.setup_slip39_recovery(self.word_count) + if self.unlock_repeated_backup: + yield from self.REC.setup_repeated_backup_recovery(self.word_count) + else: + yield from self.REC.setup_slip39_recovery(self.word_count) yield from self.REC.input_all_slip39_shares(self.shares) if self.mismatch: yield from self.REC.warning_slip39_dryrun_mismatch() diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 9c0a2860d0..343b363f61 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -73,6 +73,12 @@ def setup_slip39_recovery(self, num_words: int) -> BRGeneratorType: yield from self.input_number_of_words(num_words) yield from self.enter_any_share() + def setup_repeated_backup_recovery(self, num_words: int) -> BRGeneratorType: + if self.client.model is models.T2B1: + yield from self.tr_recovery_homescreen() + yield from self.input_number_of_words(num_words) + yield from self.enter_your_backup() + def setup_bip39_recovery(self, num_words: int) -> BRGeneratorType: if self.client.model is models.T2B1: yield from self.tr_recovery_homescreen() diff --git a/tests/persistence_tests/test_shamir_persistence.py b/tests/persistence_tests/test_shamir_persistence.py index 6b919a018d..d2eae5ac90 100644 --- a/tests/persistence_tests/test_shamir_persistence.py +++ b/tests/persistence_tests/test_shamir_persistence.py @@ -18,6 +18,7 @@ from trezorlib import device, models from trezorlib.debuglink import DebugLink +from trezorlib.messages import RecoveryStatus from .. import buttons from ..click_tests import recovery @@ -43,7 +44,7 @@ def test_abort(core_emulator: Emulator): if debug.model is models.T3T1: pytest.skip("abort not supported on T3T1") - assert features.recovery_mode is False + assert features.recovery_status == RecoveryStatus.NoRecovery device_handler.run(device.recover, pin_protection=False) @@ -55,7 +56,7 @@ def test_abort(core_emulator: Emulator): debug = _restart(device_handler, core_emulator) features = device_handler.features() - assert features.recovery_mode is True + assert features.recovery_status == RecoveryStatus.InNormalRecovery # no waiting for layout because layout doesn't change assert "number of words" in debug.read_layout().text_content() @@ -71,7 +72,7 @@ def test_abort(core_emulator: Emulator): assert layout.main_component() == "Homescreen" features = device_handler.features() - assert features.recovery_mode is False + assert features.recovery_status == RecoveryStatus.NoRecovery @core_only @@ -81,7 +82,7 @@ def test_recovery_single_reset(core_emulator: Emulator): features = device_handler.features() assert features.initialized is False - assert features.recovery_mode is False + assert features.recovery_status == RecoveryStatus.NoRecovery device_handler.run(device.recover, pin_protection=False) @@ -91,7 +92,7 @@ def test_recovery_single_reset(core_emulator: Emulator): debug = _restart(device_handler, core_emulator) features = device_handler.features() - assert features.recovery_mode is True + assert features.recovery_status == RecoveryStatus.InNormalRecovery # we need to enter the number of words again, that's a feature recovery.select_number_of_words(debug, wait=False) @@ -100,7 +101,7 @@ def test_recovery_single_reset(core_emulator: Emulator): features = device_handler.features() assert features.initialized is True - assert features.recovery_mode is False + assert features.recovery_status == RecoveryStatus.NoRecovery @core_only @@ -118,7 +119,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): features = device_handler.features() assert features.initialized is False - assert features.recovery_mode is False + assert features.recovery_status == RecoveryStatus.NoRecovery # enter recovery mode device_handler.run(device.recover, pin_protection=False) @@ -128,7 +129,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): # restart to get into stand-alone recovery debug = _restart(device_handler, core_emulator) features = device_handler.features() - assert features.recovery_mode is True + assert features.recovery_status == RecoveryStatus.InNormalRecovery # enter number of words recovery.select_number_of_words(debug, wait=False) @@ -167,7 +168,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): # check that the recovery succeeded features = device_handler.features() assert features.initialized is True - assert features.recovery_mode is False + assert features.recovery_status == RecoveryStatus.NoRecovery @core_only @@ -191,7 +192,7 @@ def enter_shares_with_restarts(debug: DebugLink) -> None: features = device_handler.features() assert features.initialized is False - assert features.recovery_mode is False + assert features.recovery_status == RecoveryStatus.NoRecovery # start device and recovery device_handler.run(device.recover, pin_protection=False) @@ -204,7 +205,7 @@ def enter_shares_with_restarts(debug: DebugLink) -> None: # restart debug = _restart(device_handler, core_emulator) features = device_handler.features() - assert features.recovery_mode is True + assert features.recovery_status == RecoveryStatus.InNormalRecovery # enter the number of words again, that's a feature! recovery.select_number_of_words(debug, wait=False) @@ -216,4 +217,4 @@ def enter_shares_with_restarts(debug: DebugLink) -> None: features = device_handler.features() assert features.initialized is True - assert features.recovery_mode is False + assert features.recovery_status == RecoveryStatus.NoRecovery diff --git a/tests/translations.py b/tests/translations.py index c9be7881c5..3be33e88e8 100644 --- a/tests/translations.py +++ b/tests/translations.py @@ -90,10 +90,16 @@ def _resolve_path_to_texts( texts: list[str] = [] lookups = path.split(".") for language_data in all_language_data: + language_data_missing = False data: dict[str, t.Any] | str = language_data for lookup in lookups: assert isinstance(data, dict), f"{lookup} is not a dict" + if lookup not in data: + language_data_missing = True + break data = data[lookup] + if language_data_missing: + continue assert isinstance(data, str), f"{path} is not a string" if template: data = data.format(*template) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 76bb31f0f3..be1dd8a58d 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -864,6 +864,9 @@ "T2B1_en_test_recovery.py::test_recovery_bip39": "fd055e526b66f7d0eb3b6968f3889eb4a3e589fd3700b6688e68ea5d6c0c18dd", "T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "10c4d76d4f636878540dcb6ba258a2d28489012298cf273af3808bcadbe38754", "T2B1_en_test_recovery.py::test_recovery_slip39_basic": "771d9bd01496b0fea72d5faca60fcc564e83d4a69e5fe02770238071dec7274d", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "cbdb2fc033538e4995a9ba5fc658a2e58936c209e5165244f3f13d65de7125bd", +"T2B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", +"T2B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", "T2B1_en_test_reset_bip39.py::test_reset_bip39": "6d229eb212360ffad2bc72154588ec82f699ae6d0cbbf87fa950dd4c8e2ea9c9", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5cd7eb5b96673f7f9dc066d2860ef4ab42926488a5117a2bc89caa667c3916e1", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cb815314c0607f0d6f678f5a9b9b99d6e50cbb670a83b3463ad2bf8635f9319a", @@ -7995,6 +7998,7 @@ "T2T1_en_test_recovery.py::test_recovery_bip39": "ee619ed8e0cf0fbd75a685830d1873e23896dcca6477b2bbf39eaa8d9b4c8531", "T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b41a576c6e879512c80337f5d58fdaa93d2259ed42f164f808e52e0d3ccf1211", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "81bc28e27af3667606f0479720e4dbdfdb97805b9d94a6f3dfe9d9cb3b045c65", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "4ee56b338d37f74f892ad80e3ad35bb8f9113b4de602b57136899f52711ac0d9", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "e7d4a85f9ebfaec35006a566e0a25167f276620d50d847a08721da861cac725a", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "259315387e0837ac718654d9180f5730370fa76d77318d620288885ebbddb0fb", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "878b828c11353fbfcd854fd54ed172dc7d395c753195d5444b5b57e3499e2bca", @@ -12447,6 +12451,9 @@ "T2T1_en_test_protection_levels.py::test_unlocked": "4488e2b6f06fdff05749ac271d080182f1c95645de37898457ff12f0fb190381", "T2T1_en_test_protection_levels.py::test_verify_message_t2": "cc09f0acf9e48b1355dae0be65a2a97abbe2811808feee08d46ae7146ce6bb6f", "T2T1_en_test_protection_levels.py::test_wipe_device": "7ff017de646b7cf70832605e1750c635d0eb661d51534b56007b49e82b927011", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "321a6c7a274e20fbddcc0dbdff31181950a613c97a77ad48ce1bb31845ffdc0e", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "9ab2f1f9e49582efa1e98c728b38ce1a21c4f09d398b20f616507f67a6a292b2", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "dc906965730138e588e4efb5e7eb71609c504f5910352ce04bd926358184af36", "T2T1_en_test_sdcard.py::test_sd_format": "83d0d9b4eab3bf0eafc22d7d95e8b70bce477ba9c8b4ba13eeca9380ad5fdafa", "T2T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", "T2T1_en_test_sdcard.py::test_sd_protect_unlock": "1302f9a0835cac621142a17031d2150553e676261a3eeeefd32fcf1e69c7bd1a", diff --git a/tests/upgrade_tests/test_firmware_upgrades.py b/tests/upgrade_tests/test_firmware_upgrades.py index a878b46ff0..5abd379812 100644 --- a/tests/upgrade_tests/test_firmware_upgrades.py +++ b/tests/upgrade_tests/test_firmware_upgrades.py @@ -21,7 +21,7 @@ from shamir_mnemonic import shamir from trezorlib import btc, debuglink, device, exceptions, fido, models -from trezorlib.messages import ApplySettings, BackupType, Success +from trezorlib.messages import ApplySettings, BackupType, RecoveryStatus, Success from trezorlib.tools import H_ from ..common import MNEMONIC_SLIP39_BASIC_20_3of6, MNEMONIC_SLIP39_BASIC_20_3of6_SECRET @@ -291,7 +291,7 @@ def test_upgrade_shamir_recovery(gen: str, tag: Optional[str]): with EmulatorWrapper(gen, tag) as emu, BackgroundDeviceHandler( emu.client ) as device_handler: - assert emu.client.features.recovery_mode is False + assert emu.client.features.recovery_status == RecoveryStatus.NoRecovery emu.client.watch_layout(True) debug = device_handler.debuglink() @@ -312,7 +312,7 @@ def test_upgrade_shamir_recovery(gen: str, tag: Optional[str]): with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id - assert emu.client.features.recovery_mode + assert emu.client.features.recovery_status == RecoveryStatus.InNormalRecovery debug = emu.client.debug emu.client.watch_layout(True) From 49daeaa746758cb0c6bd1f9466507910f4248827 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 20 May 2024 11:15:58 +0200 Subject: [PATCH 216/626] refactor(core): introduce wire filters --- core/src/all_modules.py | 2 + core/src/apps/base.py | 61 +++++++------------ core/src/apps/common/backup.py | 7 +++ core/src/apps/management/backup_device.py | 6 +- .../management/recovery_device/homescreen.py | 18 +++--- core/src/trezor/wire/__init__.py | 56 +++++++++++++---- 6 files changed, 86 insertions(+), 64 deletions(-) create mode 100644 core/src/apps/common/backup.py diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 2aa7062667..a6bf61cd02 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -287,6 +287,8 @@ import apps.common.address_type apps.common.authorization import apps.common.authorization +apps.common.backup +import apps.common.backup apps.common.backup_types import apps.common.backup_types apps.common.cbor diff --git a/core/src/apps/base.py b/core/src/apps/base.py index c25774d84e..2765e31f99 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -23,6 +23,7 @@ Ping, SetBusy, ) + from trezor.wire import Handler, Msg _SCREENSAVER_IS_ON = False @@ -380,7 +381,7 @@ def set_homescreen() -> None: def lock_device(interrupt_workflow: bool = True) -> None: if config.has_pin(): config.lock() - wire.find_handler = _get_pinlocked_handler + wire.filters.append(_pinlock_filter) set_homescreen() if interrupt_workflow: workflow.close_others() @@ -416,28 +417,16 @@ async def unlock_device() -> None: _SCREENSAVER_IS_ON = False set_homescreen() - wire.find_handler = workflow_handlers.find_registered_handler + wire.filters.remove(_pinlock_filter) -def _get_pinlocked_handler( - iface: wire.WireInterface, msg_type: int -) -> wire.Handler[wire.Msg] | None: - orig_handler = workflow_handlers.find_registered_handler(iface, msg_type) - if orig_handler is None: - return None - - if __debug__: - import usb - - if iface is usb.iface_debug: - return orig_handler - +def _pinlock_filter(msg_type: int, prev_handler: Handler[Msg]) -> Handler[Msg]: if msg_type in workflow.ALLOW_WHILE_LOCKED: - return orig_handler + return prev_handler - async def wrapper(msg: protobuf.MessageType) -> protobuf.MessageType: + async def wrapper(msg: Msg) -> protobuf.MessageType: await unlock_device() - return await orig_handler(msg) + return await prev_handler(msg) return wrapper @@ -452,26 +441,18 @@ async def wrapper(msg: protobuf.MessageType) -> protobuf.MessageType: ) -def _get_backup_handler( - iface: wire.WireInterface, msg_type: int -) -> wire.Handler[wire.Msg] | None: - orig_handler = workflow_handlers.find_registered_handler(iface, msg_type) - if orig_handler is None: - return None - - if __debug__: - import usb - - if iface is usb.iface_debug: - return orig_handler - +def _repeated_backup_filter(msg_type: int, prev_handler: Handler[Msg]) -> Handler[Msg]: if msg_type in _ALLOW_WHILE_REPEATED_BACKUP_UNLOCKED: - return orig_handler - - async def wrapper(_msg: protobuf.MessageType) -> protobuf.MessageType: + return prev_handler + else: raise wire.ProcessError("Operation not allowed when in repeated backup state") - return wrapper + +def remove_repeated_backup_filter(): + try: + wire.filters.remove(_repeated_backup_filter) + except ValueError: + pass # this function is also called when handling ApplySettings @@ -506,9 +487,9 @@ def boot() -> None: workflow_handlers.register(msg_type, handler) reload_settings_from_storage() + + if storage_cache.get_bool(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED): + wire.filters.append(_repeated_backup_filter) if not config.is_unlocked(): - wire.find_handler = _get_pinlocked_handler - elif storage_cache.get_bool(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED): - wire.find_handler = _get_backup_handler - else: - wire.find_handler = workflow_handlers.find_registered_handler + # pinlocked handler should always be the last one + wire.filters.append(_pinlock_filter) diff --git a/core/src/apps/common/backup.py b/core/src/apps/common/backup.py new file mode 100644 index 0000000000..1807ebcdc9 --- /dev/null +++ b/core/src/apps/common/backup.py @@ -0,0 +1,7 @@ + +def disable_repeated_backup(): + import storage.cache as storage_cache + from apps import base + + storage_cache.delete(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED) + base.remove_repeated_backup_filter() diff --git a/core/src/apps/management/backup_device.py b/core/src/apps/management/backup_device.py index bfa34a7c63..61b67c95a5 100644 --- a/core/src/apps/management/backup_device.py +++ b/core/src/apps/management/backup_device.py @@ -15,8 +15,7 @@ async def backup_device(msg: BackupDevice) -> Success: from trezor import wire from trezor.messages import Success - from apps import workflow_handlers - from apps.common import backup_types, mnemonic + from apps.common import backup, backup_types, mnemonic from .reset_device import backup_seed, backup_slip39_custom, layout @@ -51,7 +50,7 @@ async def backup_device(msg: BackupDevice) -> Success: if not repeated_backup_unlocked: storage_device.set_unfinished_backup(True) - storage_cache.delete(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED) + backup.disable_repeated_backup() storage_device.set_backed_up() if group_threshold is not None: @@ -62,7 +61,6 @@ async def backup_device(msg: BackupDevice) -> Success: storage_device.set_unfinished_backup(False) - wire.find_handler = workflow_handlers.find_registered_handler await layout.show_backup_success() return Success(message="Seed successfully backed up") diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index df5614a84d..009365f384 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -32,10 +32,9 @@ async def recovery_process() -> Success: import storage from trezor.enums import MessageType, RecoveryKind - is_special_kind = storage_recovery.get_kind() in ( - RecoveryKind.DryRun, - RecoveryKind.UnlockRepeatedBackup, - ) + from apps.common import backup + + kind = storage_recovery.get_kind() wire.AVOID_RESTARTING_FOR = ( MessageType.Initialize, @@ -45,7 +44,10 @@ async def recovery_process() -> Success: try: return await _continue_recovery_process() except recover.RecoveryAborted: - if is_special_kind: + if kind == RecoveryKind.DryRun: + storage_recovery.end_progress() + elif kind == RecoveryKind.UnlockRepeatedBackup: + backup.disable_repeated_backup() storage_recovery.end_progress() else: storage.wipe() @@ -58,8 +60,7 @@ async def _continue_repeated_backup() -> None: from trezor.ui.layouts import confirm_action from trezor.wire import ActionCancelled - from apps import workflow_handlers - from apps.common import mnemonic + from apps.common import backup, mnemonic from apps.homescreen import homescreen from apps.management.reset_device import backup_seed @@ -86,8 +87,7 @@ async def _continue_repeated_backup() -> None: except ActionCancelled: workflow.set_default(homescreen) finally: - storage_cache.delete(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED) - wire.find_handler = workflow_handlers.find_registered_handler + backup.disable_repeated_backup() storage_recovery.end_progress() diff --git a/core/src/trezor/wire/__init__.py b/core/src/trezor/wire/__init__.py index 09991914d5..45cd28ef19 100644 --- a/core/src/trezor/wire/__init__.py +++ b/core/src/trezor/wire/__init__.py @@ -119,13 +119,13 @@ async def _handle_single_message( res_msg: protobuf.MessageType | None = None - # We need to find a handler for this message type. Should not raise. - handler = find_handler(ctx.iface, msg.type) # pylint: disable=assignment-from-none - - if handler is None: - # If no handler is found, we can skip decoding and directly - # respond with failure. - await ctx.write(unexpected_message()) + # We need to find a handler for this message type. + try: + handler = find_handler(ctx.iface, msg.type) + except Error as exc: + # Handlers are allowed to exception out. In that case, we can skip decoding + # and return the error. + await ctx.write(failure(exc)) return None if msg.type in workflow.ALLOW_WHILE_LOCKED: @@ -259,12 +259,46 @@ async def handle_session( log.exception(__name__, exc) -def _find_handler_placeholder(iface: WireInterface, msg_type: int) -> Handler | None: - """Placeholder handler lookup before a proper one is registered.""" - return None +def find_handler(iface: WireInterface, msg_type: int) -> Handler: + import usb + from apps import workflow_handlers + + handler = workflow_handlers.find_registered_handler(iface, msg_type) + if handler is None: + raise context.UnexpectedMessage(msg="Unexpected message") + + if __debug__ and iface is usb.iface_debug: + # no filtering allowed for debuglink + return handler + + for filter in filters: + handler = filter(msg_type, handler) + return handler + + +filters: list[Callable[[int, Handler], Handler]] = [] +"""Filters for the wire handler. + +Filters are applied in order. Each filter gets a message id and a preceding handler. It +must either return a handler (the same one or a modified one), or raise an exception +that gets sent to wire directly. + +Filters are not applied to debug sessions. + +The filters are designed for: + * rejecting messages -- while in Recovery mode, most messages are not allowed + * adding additional behavior -- while device is soft-locked, a PIN screen will be shown + before allowing a message to trigger its original behavior. + +For this, the filters are effectively deny-first. If an earlier filter rejects the +message, the later filters are not called. But if a filter adds behavior, the latest +filter "wins" and the latest behavior triggers first. +Please note that this behavior is really unsuited to anything other than what we are +using it for now. It might be necessary to modify the semantics if we need more complex +usecases. +""" -find_handler = _find_handler_placeholder AVOID_RESTARTING_FOR: Container[int] = () From 8870869f93f9aa9174659de51c049ff8e34d5a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 23 May 2024 16:09:16 +0200 Subject: [PATCH 217/626] chore(core): rename recovery type & kind and tweak feature flags --- common/protob/messages-management.proto | 49 +- core/embed/rust/librust_qstr.h | 2 +- .../generated/translated_string.rs | 4 +- core/embed/rust/src/ui/model_tr/layout.rs | 16 +- core/embed/rust/src/ui/model_tt/layout.rs | 28 +- core/mocks/generated/trezorui2.pyi | 8 +- core/mocks/trezortranslate_keys.pyi | 2 +- core/src/all_modules.py | 10 +- core/src/apps/base.py | 56 +- core/src/apps/common/backup.py | 40 +- core/src/apps/management/backup_device.py | 11 +- .../management/recovery_device/__init__.py | 24 +- .../management/recovery_device/homescreen.py | 60 +- .../apps/management/recovery_device/layout.py | 8 +- core/src/storage/recovery.py | 34 +- core/src/trezor/enums/BackupAvailability.py | 7 + ...ceType.py => RecoveryDeviceInputMethod.py} | 0 core/src/trezor/enums/RecoveryStatus.py | 7 +- .../{RecoveryKind.py => RecoveryType.py} | 0 core/src/trezor/enums/__init__.py | 24 +- core/src/trezor/messages.py | 19 +- core/src/trezor/ui/layouts/tr/recovery.py | 12 +- core/src/trezor/ui/layouts/tt/recovery.py | 10 +- core/src/trezor/wire/__init__.py | 18 +- core/translations/en.json | 2 +- legacy/firmware/fsm_msg_common.h | 15 +- legacy/firmware/recovery.c | 6 +- legacy/firmware/recovery.h | 4 +- python/src/trezorlib/cli/device.py | 27 +- python/src/trezorlib/device.py | 32 +- python/src/trezorlib/messages.py | 48 +- rust/trezor-client/examples/features.rs | 3 +- rust/trezor-client/src/client/mod.rs | 8 +- .../protos/generated/messages_management.rs | 583 +++++++++++------- .../click_tests/test_backup_slip39_custom.py | 2 +- tests/click_tests/test_recovery.py | 2 +- tests/click_tests/test_repeated_backup.py | 42 +- tests/click_tests/test_reset_bip39.py | 2 +- .../click_tests/test_reset_slip39_advanced.py | 2 +- tests/click_tests/test_reset_slip39_basic.py | 2 +- .../test_recovery_bip39_dryrun.py | 19 +- .../reset_recovery/test_recovery_bip39_t1.py | 3 +- .../reset_recovery/test_reset_backup.py | 10 +- .../test_reset_bip39_skipbackup.py | 8 +- .../reset_recovery/test_reset_bip39_t1.py | 4 +- .../reset_recovery/test_reset_bip39_t2.py | 6 +- .../test_reset_recovery_bip39.py | 4 +- .../test_reset_recovery_slip39_advanced.py | 4 +- .../test_reset_recovery_slip39_basic.py | 4 +- .../test_reset_slip39_advanced.py | 4 +- .../reset_recovery/test_reset_slip39_basic.py | 4 +- tests/device_tests/test_msg_backup_device.py | 34 +- tests/device_tests/test_repeated_backup.py | 12 +- .../test_shamir_persistence.py | 24 +- tests/upgrade_tests/test_firmware_upgrades.py | 26 +- 55 files changed, 785 insertions(+), 610 deletions(-) create mode 100644 core/src/trezor/enums/BackupAvailability.py rename core/src/trezor/enums/{RecoveryDeviceType.py => RecoveryDeviceInputMethod.py} (100%) rename core/src/trezor/enums/{RecoveryKind.py => RecoveryType.py} (100%) diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index 3150f517f8..955d3cdf6c 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -81,7 +81,7 @@ message Features { optional bool unlocked = 16; // is the device unlocked? called "pin_cached" previously optional bool _passphrase_cached = 17 [deprecated=true]; // is passphrase already cached in session? optional bool firmware_present = 18; // is valid firmware loaded? - optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup) + optional BackupAvailability backup_availability = 19; // does storage need backup? is repeated backup unlocked? optional uint32 flags = 20; // device flags (equals to Storage.flags) optional string model = 21; // device hardware model optional uint32 fw_major = 22; // reported firmware version if in bootloader mode @@ -107,20 +107,29 @@ message Features { optional HomescreenFormat homescreen_format = 42; // format of the homescreen, 1 = TOIf, 2 = jpg, 3 = TOIG optional bool hide_passphrase_from_host = 43; // should we hide the passphrase when it comes from host? optional string internal_model = 44; // internal model name - optional uint32 unit_color = 45; // color of the unit/device - optional bool unit_btconly = 46; // unit/device is intended as bitcoin only - optional uint32 homescreen_width = 47; // homescreen width in pixels - optional uint32 homescreen_height = 48; // homescreen height in pixels + optional uint32 unit_color = 45; // color of the unit/device + optional bool unit_btconly = 46; // unit/device is intended as bitcoin only + optional uint32 homescreen_width = 47; // homescreen width in pixels + optional uint32 homescreen_height = 48; // homescreen height in pixels optional bool bootloader_locked = 49; // bootloader is locked optional bool language_version_matches = 50 [default=true]; // translation blob version matches firmware version optional uint32 unit_packaging = 51; // unit/device packaging version optional bool haptic_feedback = 52; // haptic feedback is enabled + optional RecoveryType recovery_type = 53; // what type of recovery we are in. NB: this works in conjunction with recovery_status + + enum BackupAvailability { + /// Device is already backed up, or a previous backup has failed. + NotAvailable = 0; + /// Device is not backed up. Backup is required. + Required = 1; + /// Device is already backed up and can be backed up again. + Available = 2; + } enum RecoveryStatus { - NoRecovery = 0; - InNormalRecovery = 1; - InDryRunRecovery = 2; - InUnlockRepeatedBackupRecovery = 3; + Nothing = 0; // we are not in recovery mode + Recovery = 1; // we are in "Normal" or "DryRun" recovery + Backup = 2; // we are in repeated backup mode } enum Capability { @@ -449,28 +458,28 @@ message RecoveryDevice { optional string label = 5; // device label optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process (T1 only) reserved 7; // unused recovery method - optional RecoveryDeviceType type = 8; // supported recovery type (T1 only) + optional RecoveryDeviceInputMethod input_method = 8; // supported recovery input method (T1 only) optional uint32 u2f_counter = 9; // U2F counter - optional RecoveryKind kind = 10 [default=NormalRecovery]; // the kind of recovery to perform + optional RecoveryType type = 10 [default=NormalRecovery]; // the type of recovery to perform /** * Type of recovery procedure. These should be used as bitmask, e.g., - * `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix` + * `RecoveryDeviceInputMethod_ScrambledWords | RecoveryDeviceInputMethod_Matrix` * listing every method supported by the host computer. * * Note that ScrambledWords must be supported by every implementation * for backward compatibility; there is no way to not support it. */ - enum RecoveryDeviceType { + enum RecoveryDeviceInputMethod { // use powers of two when extending this field - RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order - RecoveryDeviceType_Matrix = 1; // matrix recovery type + ScrambledWords = 0; // words in scrambled order + Matrix = 1; // matrix recovery type } +} - enum RecoveryKind { - NormalRecovery = 0; // recovery from seedphrase on an uninitialized device - DryRun = 1; // mnemonic validation - UnlockRepeatedBackup = 2; // unlock SLIP-39 repeated backup - } +enum RecoveryType { + NormalRecovery = 0; // recovery from seedphrase on an uninitialized device + DryRun = 1; // mnemonic validation + UnlockRepeatedBackup = 2; // unlock SLIP-39 repeated backup } /** diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 96218e25f2..17dbfa03b4 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -293,7 +293,6 @@ static void _librust_qstrs(void) { MP_QSTR_joint__title; MP_QSTR_joint__to_the_total_amount; MP_QSTR_joint__you_are_contributing; - MP_QSTR_kind; MP_QSTR_label; MP_QSTR_language; MP_QSTR_language__change_to_template; @@ -454,6 +453,7 @@ static void _librust_qstrs(void) { MP_QSTR_recovery__x_more_shares_needed_template_plural; MP_QSTR_recovery__x_of_y_entered_template; MP_QSTR_recovery__you_have_entered; + MP_QSTR_recovery_type; MP_QSTR_request_bip39; MP_QSTR_request_complete_repaint; MP_QSTR_request_number; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 60bde8df17..86056ad150 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1331,7 +1331,7 @@ pub enum TranslatedString { reset__slip39_checklist_num_groups_x_template = 931, // "Number of groups: {0}" brightness__title = 932, // "Set brightness" recovery__title_unlock_repeated_backup = 933, // "Multi-share backup" - recovery__unlock_repeated_backup = 934, // "Do you want to unlock the seed for repeated backup?" + recovery__unlock_repeated_backup = 934, // "Create additional backup?" recovery__unlock_repeated_backup_verb = 935, // "Unlock backup" } @@ -2659,7 +2659,7 @@ impl TranslatedString { Self::reset__slip39_checklist_num_groups_x_template => "Number of groups: {0}", Self::brightness__title => "Set brightness", Self::recovery__title_unlock_repeated_backup => "Multi-share backup", - Self::recovery__unlock_repeated_backup => "Do you want to unlock the seed for repeated backup?", + Self::recovery__unlock_repeated_backup => "Create additional backup?", Self::recovery__unlock_repeated_backup_verb => "Unlock backup", } } diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index a1cda06cbe..b694452e83 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -228,8 +228,8 @@ impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { } } -const RECOVERY_KIND_DRY_RUN: u32 = 1; -const RECOVERY_KIND_UNLOCK_REPEATED_BACKUP: u32 = 2; +const RECOVERY_TYPE_DRY_RUN: u32 = 1; +const RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP: u32 = 2; /// Function to create and call a `ButtonPage` dialog based on paginable content /// (e.g. `Paragraphs` or `FormattedText`). @@ -1398,7 +1398,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let block = move |_args: &[Obj], kwargs: &Map| { let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let kind: u32 = kwargs.get(Qstr::MP_QSTR_kind)?.try_into()?; + let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; let show_info: bool = kwargs.get(Qstr::MP_QSTR_show_info)?.try_into()?; let mut paragraphs = ParagraphVecShort::new(); @@ -1415,9 +1415,9 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut )); } - let title = match kind { - RECOVERY_KIND_DRY_RUN => TR::recovery__title_dry_run, - RECOVERY_KIND_UNLOCK_REPEATED_BACKUP => TR::recovery__title_unlock_repeated_backup, + let title = match recovery_type { + RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run, + RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP => TR::recovery__title_dry_run, _ => TR::recovery__title, }; @@ -1968,7 +1968,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, # unused on TR /// description: str, /// button: str, - /// kind: int, # RecoveryKind enum, passed as an int + /// recovery_type: RecoveryType, /// info_button: bool, # unused on TR /// show_info: bool, /// ) -> LayoutObj[UiResult]: @@ -1977,7 +1977,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def select_word_count( /// *, - /// dry_run: bool, # unused on TR + /// recovery_type: RecoveryType, # unused on TR /// ) -> LayoutObj[int | str]: /// """Select mnemonic word count from (12, 18, 20, 24, 33).""" Qstr::MP_QSTR_select_word_count => obj_fn_kw!(0, new_select_word_count).as_obj(), diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index c56fd04510..873b016c8f 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -310,8 +310,8 @@ impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { } } -const RECOVERY_KIND_DRY_RUN: u32 = 1; -const RECOVERY_KIND_UNLOCK_REPEATED_BACKUP: u32 = 2; +const RECOVERY_TYPE_DRY_RUN: u32 = 1; +const RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP: u32 = 2; extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { @@ -1368,7 +1368,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let kind: u32 = kwargs.get(Qstr::MP_QSTR_kind)?.try_into()?; + let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; let paragraphs = Paragraphs::new([ @@ -1377,11 +1377,9 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut ]) .with_spacing(theme::RECOVERY_SPACING); - let notification = match kind { - RECOVERY_KIND_DRY_RUN => TR::recovery__title_dry_run.into(), - RECOVERY_KIND_UNLOCK_REPEATED_BACKUP => { - TR::recovery__title_unlock_repeated_backup.into() - } + let notification = match recovery_type { + RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run.into(), + RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP => TR::recovery__title_dry_run.into(), _ => TR::recovery__title.into(), }; @@ -1411,11 +1409,11 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; - let title: TString = if dry_run { - TR::recovery__title_dry_run.into() - } else { - TR::recovery__title.into() + let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + let title: TString = match recovery_type { + RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run.into(), + RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP => TR::recovery__title_dry_run.into(), + _ => TR::recovery__title.into(), }; let paragraphs = Paragraphs::new(Paragraph::new( @@ -2047,7 +2045,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// description: str, /// button: str, - /// kind: int, # RecoveryKind enum, passed as an int + /// recovery_type: RecoveryType, /// info_button: bool = False, /// ) -> LayoutObj[UiResult]: /// """Device recovery homescreen.""" @@ -2055,7 +2053,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def select_word_count( /// *, - /// dry_run: bool, + /// recovery_type: RecoveryType, /// ) -> LayoutObj[int | str]: # TT returns int /// """Select mnemonic word count from (12, 18, 20, 24, 33).""" Qstr::MP_QSTR_select_word_count => obj_fn_kw!(0, new_select_word_count).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index d1bf1a6caf..ddb7c3c70d 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -980,7 +980,7 @@ def confirm_recovery( title: str, # unused on TR description: str, button: str, - kind: int, # RecoveryKind enum, passed as an int + recovery_type: RecoveryType, info_button: bool, # unused on TR show_info: bool, ) -> LayoutObj[UiResult]: @@ -990,7 +990,7 @@ def confirm_recovery( # rust/src/ui/model_tr/layout.rs def select_word_count( *, - dry_run: bool, # unused on TR + recovery_type: RecoveryType, # unused on TR ) -> LayoutObj[int | str]: """Select mnemonic word count from (12, 18, 20, 24, 33).""" @@ -1515,7 +1515,7 @@ def confirm_recovery( title: str, description: str, button: str, - kind: int, # RecoveryKind enum, passed as an int + recovery_type: RecoveryType, info_button: bool = False, ) -> LayoutObj[UiResult]: """Device recovery homescreen.""" @@ -1524,7 +1524,7 @@ def confirm_recovery( # rust/src/ui/model_tt/layout.rs def select_word_count( *, - dry_run: bool, + recovery_type: RecoveryType, ) -> LayoutObj[int | str]: # TT returns int """Select mnemonic word count from (12, 18, 20, 24, 33).""" diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index c072657a8b..90dc945342 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -585,7 +585,7 @@ class TR: recovery__title_remaining_shares: str = "Remaining shares" recovery__title_unlock_repeated_backup: str = "Multi-share backup" recovery__type_word_x_of_y_template: str = "Type word {0} of {1}" - recovery__unlock_repeated_backup: str = "Do you want to unlock the seed for repeated backup?" + recovery__unlock_repeated_backup: str = "Create additional backup?" recovery__unlock_repeated_backup_verb: str = "Unlock backup" recovery__wallet_recovered: str = "Wallet recovery completed" recovery__wanna_cancel_dry_run: str = "Are you sure you want to cancel the backup check?" diff --git a/core/src/all_modules.py b/core/src/all_modules.py index a6bf61cd02..49ebfe40d6 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -91,6 +91,8 @@ import trezor.crypto.slip39 trezor.enums.AmountUnit import trezor.enums.AmountUnit +trezor.enums.BackupAvailability +import trezor.enums.BackupAvailability trezor.enums.BackupType import trezor.enums.BackupType trezor.enums.BootCommand @@ -119,12 +121,12 @@ import trezor.enums.OutputScriptType trezor.enums.PinMatrixRequestType import trezor.enums.PinMatrixRequestType -trezor.enums.RecoveryDeviceType -import trezor.enums.RecoveryDeviceType -trezor.enums.RecoveryKind -import trezor.enums.RecoveryKind +trezor.enums.RecoveryDeviceInputMethod +import trezor.enums.RecoveryDeviceInputMethod trezor.enums.RecoveryStatus import trezor.enums.RecoveryStatus +trezor.enums.RecoveryType +import trezor.enums.RecoveryType trezor.enums.RequestType import trezor.enums.RequestType trezor.enums.SafetyCheckLevel diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 2765e31f99..f8779a0d90 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -61,11 +61,11 @@ def _language_version_matches() -> bool | None: def get_features() -> Features: import storage.recovery as storage_recovery from trezor import translations - from trezor.enums import Capability, RecoveryKind, RecoveryStatus + from trezor.enums import BackupAvailability, Capability, RecoveryStatus from trezor.messages import Features from trezor.ui import HEIGHT, WIDTH - from apps.common import mnemonic, safety_checks + from apps.common import backup, mnemonic, safety_checks v_major, v_minor, v_patch, _v_build = utils.VERSION @@ -157,20 +157,22 @@ def get_features() -> Features: if config.is_unlocked(): # passphrase_protection is private, see #1807 f.passphrase_protection = storage_device.is_passphrase_enabled() - f.needs_backup = storage_device.needs_backup() + if storage_device.needs_backup(): + f.backup_availability = BackupAvailability.Required + elif backup.repeated_backup_enabled(): + f.backup_availability = BackupAvailability.Available + else: + f.backup_availability = BackupAvailability.NotAvailable f.unfinished_backup = storage_device.unfinished_backup() f.no_backup = storage_device.no_backup() f.flags = storage_device.get_flags() if storage_recovery.is_in_progress(): - kind = storage_recovery.get_kind() - if kind == RecoveryKind.NormalRecovery: - f.recovery_status = RecoveryStatus.InNormalRecovery - elif kind == RecoveryKind.DryRun: - f.recovery_status = RecoveryStatus.InDryRunRecovery - elif kind == RecoveryKind.UnlockRepeatedBackup: - f.recovery_status = RecoveryStatus.InUnlockRepeatedBackupRecovery + f.recovery_status = RecoveryStatus.Recovery + f.recovery_type = storage_recovery.get_type() + elif backup.repeated_backup_enabled(): + f.recovery_status = RecoveryStatus.Backup else: - f.recovery_status = RecoveryStatus.NoRecovery + f.recovery_status = RecoveryStatus.Nothing f.backup_type = mnemonic.get_type() # Only some models are capable of SD card @@ -417,7 +419,7 @@ async def unlock_device() -> None: _SCREENSAVER_IS_ON = False set_homescreen() - wire.filters.remove(_pinlock_filter) + wire.remove_filter(_pinlock_filter) def _pinlock_filter(msg_type: int, prev_handler: Handler[Msg]) -> Handler[Msg]: @@ -431,30 +433,6 @@ async def wrapper(msg: Msg) -> protobuf.MessageType: return wrapper -_ALLOW_WHILE_REPEATED_BACKUP_UNLOCKED = ( - MessageType.Initialize, - MessageType.GetFeatures, - MessageType.EndSession, - MessageType.BackupDevice, - MessageType.WipeDevice, - MessageType.Cancel, -) - - -def _repeated_backup_filter(msg_type: int, prev_handler: Handler[Msg]) -> Handler[Msg]: - if msg_type in _ALLOW_WHILE_REPEATED_BACKUP_UNLOCKED: - return prev_handler - else: - raise wire.ProcessError("Operation not allowed when in repeated backup state") - - -def remove_repeated_backup_filter(): - try: - wire.filters.remove(_repeated_backup_filter) - except ValueError: - pass - - # this function is also called when handling ApplySettings def reload_settings_from_storage() -> None: from trezor import ui @@ -469,6 +447,8 @@ def reload_settings_from_storage() -> None: def boot() -> None: + from apps.common import backup + MT = MessageType # local_cache_global # Register workflow handlers @@ -488,8 +468,8 @@ def boot() -> None: reload_settings_from_storage() - if storage_cache.get_bool(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED): - wire.filters.append(_repeated_backup_filter) + if backup.repeated_backup_enabled(): + backup.activate_repeated_backup() if not config.is_unlocked(): # pinlocked handler should always be the last one wire.filters.append(_pinlock_filter) diff --git a/core/src/apps/common/backup.py b/core/src/apps/common/backup.py index 1807ebcdc9..48fe93e070 100644 --- a/core/src/apps/common/backup.py +++ b/core/src/apps/common/backup.py @@ -1,7 +1,39 @@ +from typing import TYPE_CHECKING -def disable_repeated_backup(): - import storage.cache as storage_cache - from apps import base +import storage.cache as storage_cache +from trezor import wire +from trezor.enums import MessageType +if TYPE_CHECKING: + from trezor.wire import Handler, Msg + + +def repeated_backup_enabled() -> bool: + return storage_cache.get_bool(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED) + + +def activate_repeated_backup(): + storage_cache.set_bool(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED, True) + wire.filters.append(_repeated_backup_filter) + + +def deactivate_repeated_backup(): storage_cache.delete(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED) - base.remove_repeated_backup_filter() + wire.remove_filter(_repeated_backup_filter) + + +_ALLOW_WHILE_REPEATED_BACKUP_UNLOCKED = ( + MessageType.Initialize, + MessageType.GetFeatures, + MessageType.EndSession, + MessageType.BackupDevice, + MessageType.WipeDevice, + MessageType.Cancel, +) + + +def _repeated_backup_filter(msg_type: int, prev_handler: Handler[Msg]) -> Handler[Msg]: + if msg_type in _ALLOW_WHILE_REPEATED_BACKUP_UNLOCKED: + return prev_handler + else: + raise wire.ProcessError("Operation not allowed when in repeated backup state") diff --git a/core/src/apps/management/backup_device.py b/core/src/apps/management/backup_device.py index 61b67c95a5..243e50de02 100644 --- a/core/src/apps/management/backup_device.py +++ b/core/src/apps/management/backup_device.py @@ -10,7 +10,6 @@ async def backup_device(msg: BackupDevice) -> Success: - import storage.cache as storage_cache import storage.device as storage_device from trezor import wire from trezor.messages import Success @@ -21,13 +20,11 @@ async def backup_device(msg: BackupDevice) -> Success: # do this early before we show any UI # the homescreen will clear the flag right after its own UI is gone - repeated_backup_unlocked = storage_cache.get_bool( - storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED - ) + repeated_backup_enabled = backup.repeated_backup_enabled() if not storage_device.is_initialized(): raise wire.NotInitialized("Device is not initialized") - if not storage_device.needs_backup() and not repeated_backup_unlocked: + if not storage_device.needs_backup() and not repeated_backup_enabled: raise wire.ProcessError("Seed already backed up") mnemonic_secret, backup_type = mnemonic.get() @@ -47,10 +44,10 @@ async def backup_device(msg: BackupDevice) -> Success: elif len(groups) > 0: raise wire.DataError("group_threshold is missing") - if not repeated_backup_unlocked: + if not repeated_backup_enabled: storage_device.set_unfinished_backup(True) - backup.disable_repeated_backup() + backup.deactivate_repeated_backup() storage_device.set_backed_up() if group_threshold is not None: diff --git a/core/src/apps/management/recovery_device/__init__.py b/core/src/apps/management/recovery_device/__init__.py index c52dd721fe..08eb02b412 100644 --- a/core/src/apps/management/recovery_device/__init__.py +++ b/core/src/apps/management/recovery_device/__init__.py @@ -1,14 +1,14 @@ from typing import TYPE_CHECKING -from trezor.enums import RecoveryKind +from trezor.enums import RecoveryType if TYPE_CHECKING: from trezor.messages import RecoveryDevice, Success # List of RecoveryDevice fields that can be set when doing dry-run recovery. -# All except `kind` are allowed for T1 compatibility, but their values are ignored. +# All except `type` are allowed for T1 compatibility, but their values are ignored. # If set, `enforce_wordlist` must be True, because we do not support non-enforcing. -DRY_RUN_ALLOWED_FIELDS = ("kind", "word_count", "enforce_wordlist", "type") +DRY_RUN_ALLOWED_FIELDS = ("type", "word_count", "enforce_wordlist", "input_method") async def recovery_device(msg: RecoveryDevice) -> Success: @@ -34,18 +34,18 @@ async def recovery_device(msg: RecoveryDevice) -> Success: from .homescreen import recovery_homescreen, recovery_process - recovery_kind = msg.kind # local_cache_attribute + recovery_type = msg.type # local_cache_attribute # -------------------------------------------------------- # validate - if recovery_kind == RecoveryKind.NormalRecovery: + if recovery_type == RecoveryType.NormalRecovery: if storage_device.is_initialized(): raise wire.UnexpectedMessage("Already initialized") - elif recovery_kind in (RecoveryKind.DryRun, RecoveryKind.UnlockRepeatedBackup): + elif recovery_type in (RecoveryType.DryRun, RecoveryType.UnlockRepeatedBackup): if not storage_device.is_initialized(): raise wire.NotInitialized("Device is not initialized") if ( - recovery_kind == RecoveryKind.UnlockRepeatedBackup + recovery_type == RecoveryType.UnlockRepeatedBackup and mnemonic.get_type() == BackupType.Bip39 ): raise wire.ProcessError("Repeated Backup not available for BIP39 backups") @@ -54,7 +54,7 @@ async def recovery_device(msg: RecoveryDevice) -> Success: if key not in DRY_RUN_ALLOWED_FIELDS and value is not None: raise wire.ProcessError(f"Forbidden field set in dry-run: {key}") else: - raise RuntimeError # Unknown RecoveryKind + raise RuntimeError # Unknown RecoveryType if msg.enforce_wordlist is False: raise wire.ProcessError( @@ -66,7 +66,7 @@ async def recovery_device(msg: RecoveryDevice) -> Success: if storage_recovery.is_in_progress(): return await recovery_process() - if recovery_kind == RecoveryKind.NormalRecovery: + if recovery_type == RecoveryType.NormalRecovery: await confirm_reset_device(TR.recovery__title_recover, recovery=True) # wipe storage to make sure the device is in a clear state @@ -85,10 +85,10 @@ async def recovery_device(msg: RecoveryDevice) -> Success: if msg.label is not None: storage_device.set_label(msg.label) - elif recovery_kind in (RecoveryKind.DryRun, RecoveryKind.UnlockRepeatedBackup): + elif recovery_type in (RecoveryType.DryRun, RecoveryType.UnlockRepeatedBackup): title = ( TR.recovery__title_dry_run - if recovery_kind == RecoveryKind.DryRun + if recovery_type == RecoveryType.DryRun else TR.recovery__title_unlock_repeated_backup ) await confirm_action( @@ -105,7 +105,7 @@ async def recovery_device(msg: RecoveryDevice) -> Success: storage_recovery.set_in_progress(True) - storage_recovery.set_kind(int(recovery_kind)) + storage_recovery.set_type(int(recovery_type)) workflow.set_default(recovery_homescreen) diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 009365f384..68eb7891d6 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -1,6 +1,5 @@ from typing import TYPE_CHECKING -import storage.cache as storage_cache import storage.device as storage_device import storage.recovery as storage_recovery import storage.recovery_shares as storage_recovery_shares @@ -12,15 +11,17 @@ from . import layout, recover if TYPE_CHECKING: - from trezor.enums import BackupType, RecoveryKind + from trezor.enums import BackupType, RecoveryType async def recovery_homescreen() -> None: from trezor import workflow + from apps.common import backup from apps.homescreen import homescreen - if storage_cache.get_bool(storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED): + if backup.repeated_backup_enabled(): + storage_recovery.end_progress() await _continue_repeated_backup() elif not storage_recovery.is_in_progress(): workflow.set_default(homescreen) @@ -30,11 +31,11 @@ async def recovery_homescreen() -> None: async def recovery_process() -> Success: import storage - from trezor.enums import MessageType, RecoveryKind + from trezor.enums import MessageType, RecoveryType from apps.common import backup - kind = storage_recovery.get_kind() + recovery_type = storage_recovery.get_type() wire.AVOID_RESTARTING_FOR = ( MessageType.Initialize, @@ -44,24 +45,18 @@ async def recovery_process() -> Success: try: return await _continue_recovery_process() except recover.RecoveryAborted: - if kind == RecoveryKind.DryRun: - storage_recovery.end_progress() - elif kind == RecoveryKind.UnlockRepeatedBackup: - backup.disable_repeated_backup() - storage_recovery.end_progress() - else: + storage_recovery.end_progress() + backup.deactivate_repeated_backup() + if recovery_type == RecoveryType.NormalRecovery: storage.wipe() raise wire.ActionCancelled async def _continue_repeated_backup() -> None: - from trezor import workflow from trezor.enums import ButtonRequestType, MessageType from trezor.ui.layouts import confirm_action - from trezor.wire import ActionCancelled from apps.common import backup, mnemonic - from apps.homescreen import homescreen from apps.management.reset_device import backup_seed wire.AVOID_RESTARTING_FOR = ( @@ -84,20 +79,17 @@ async def _continue_repeated_backup() -> None: raise RuntimeError await backup_seed(backup_type, mnemonic_secret) - except ActionCancelled: - workflow.set_default(homescreen) finally: - backup.disable_repeated_backup() - storage_recovery.end_progress() + backup.deactivate_repeated_backup() async def _continue_recovery_process() -> Success: from trezor import utils - from trezor.enums import RecoveryKind + from trezor.enums import RecoveryType from trezor.errors import MnemonicError # gather the current recovery state from storage - kind = storage_recovery.get_kind() + recovery_type = storage_recovery.get_type() word_count, backup_type = recover.load_slip39_state() # Both word_count and backup_type are derived from the same data. Both will be @@ -109,7 +101,7 @@ async def _continue_recovery_process() -> Success: if not is_first_step: assert word_count is not None # If we continue recovery, show starting screen with word count immediately. - await _request_share_first_screen(word_count, kind) + await _request_share_first_screen(word_count, recovery_type) secret = None while secret is None: @@ -122,9 +114,9 @@ async def _continue_recovery_process() -> Success: TR.buttons__continue, TR.recovery__num_of_words ) # ask for the number of words - word_count = await layout.request_word_count(kind == RecoveryKind.DryRun) + word_count = await layout.request_word_count(recovery_type) # ...and only then show the starting screen with word count. - await _request_share_first_screen(word_count, kind) + await _request_share_first_screen(word_count, recovery_type) assert word_count is not None # ask for mnemonic words one by one @@ -144,9 +136,9 @@ async def _continue_recovery_process() -> Success: await layout.show_invalid_mnemonic(word_count) assert backup_type is not None - if kind == RecoveryKind.DryRun: + if recovery_type == RecoveryType.DryRun: result = await _finish_recovery_dry_run(secret, backup_type) - elif kind == RecoveryKind.UnlockRepeatedBackup: + elif recovery_type == RecoveryType.UnlockRepeatedBackup: result = await _finish_recovery_unlock_repeated_backup(secret, backup_type) else: result = await _finish_recovery(secret, backup_type) @@ -154,7 +146,9 @@ async def _continue_recovery_process() -> Success: return result -def _check_secret_against_stored_secret(secret: bytes, is_slip39: bool, backup_type: BackupType) -> bool: +def _check_secret_against_stored_secret( + secret: bytes, is_slip39: bool, backup_type: BackupType +) -> bool: from trezor import utils from trezor.crypto.hashlib import sha256 @@ -205,7 +199,7 @@ async def _finish_recovery_dry_run(secret: bytes, backup_type: BackupType) -> Su async def _finish_recovery_unlock_repeated_backup( secret: bytes, backup_type: BackupType ) -> Success: - import storage.cache as storage_cache + from apps.common import backup if backup_type is None: raise RuntimeError @@ -215,9 +209,7 @@ async def _finish_recovery_unlock_repeated_backup( result = _check_secret_against_stored_secret(secret, is_slip39, backup_type) if result: - storage_cache.set_bool( - storage_cache.APP_RECOVERY_REPEATED_BACKUP_UNLOCKED, True - ) + backup.activate_repeated_backup() return Success(message="Backup unlocked") else: raise wire.ProcessError("The seed does not match the one in the device") @@ -272,15 +264,17 @@ async def _process_words(words: str) -> tuple[bytes | None, BackupType]: return secret, backup_type -async def _request_share_first_screen(word_count: int, kind: RecoveryKind) -> None: - from trezor.enums import RecoveryKind +async def _request_share_first_screen( + word_count: int, recovery_type: RecoveryType +) -> None: + from trezor.enums import RecoveryType if backup_types.is_slip39_word_count(word_count): remaining = storage_recovery.fetch_slip39_remaining_shares() if remaining: await _request_share_next_screen() else: - if kind == RecoveryKind.UnlockRepeatedBackup: + if recovery_type == RecoveryType.UnlockRepeatedBackup: text = TR.recovery__enter_backup button_label = TR.buttons__continue else: diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index 1475d669de..3925a923d7 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -149,23 +149,23 @@ async def homescreen_dialog( show_info: bool = False, ) -> None: import storage.recovery as storage_recovery - from trezor.enums import RecoveryKind + from trezor.enums import RecoveryType from trezor.ui.layouts.recovery import continue_recovery from trezor.wire import ActionCancelled from .recover import RecoveryAborted - kind = storage_recovery.get_kind() + recovery_type = storage_recovery.get_type() while True: if await continue_recovery( - button_label, text, subtext, info_func, kind, show_info + button_label, text, subtext, info_func, recovery_type, show_info ): # go forward in the recovery process break # user has chosen to abort, confirm the choice try: - await _confirm_abort(kind != RecoveryKind.NormalRecovery) + await _confirm_abort(recovery_type != RecoveryType.NormalRecovery) except ActionCancelled: pass else: diff --git a/core/src/storage/recovery.py b/core/src/storage/recovery.py index 17c63b9192..daaeef2d30 100644 --- a/core/src/storage/recovery.py +++ b/core/src/storage/recovery.py @@ -4,7 +4,7 @@ from storage import common if TYPE_CHECKING: - from trezor.enums import RecoveryKind + from trezor.enums import RecoveryType # Namespace: _NAMESPACE = common.APP_RECOVERY @@ -12,7 +12,7 @@ # fmt: off # Keys: _IN_PROGRESS = const(0x00) # bool -_KIND = const(0x01) # int +_TYPE = const(0x01) # int _SLIP39_IDENTIFIER = const(0x03) # bytes _REMAINING = const(0x05) # int _SLIP39_ITERATION_EXPONENT = const(0x06) # int @@ -41,27 +41,27 @@ def is_in_progress() -> bool: return common.get_bool(_NAMESPACE, _IN_PROGRESS) -def set_kind(val: int) -> None: +def set_type(val: int) -> None: _require_progress() - common.set_uint8(_NAMESPACE, _KIND, val) + common.set_uint8(_NAMESPACE, _TYPE, val) -def get_kind() -> RecoveryKind: - from trezor.enums import RecoveryKind +def get_type() -> RecoveryType: + from trezor.enums import RecoveryType _require_progress() - recovery_kind = common.get_uint8(_NAMESPACE, _KIND) - if recovery_kind is None: - recovery_kind = RecoveryKind.NormalRecovery - - if recovery_kind not in ( - RecoveryKind.NormalRecovery, - RecoveryKind.DryRun, - RecoveryKind.UnlockRepeatedBackup, + recovery_type = common.get_uint8(_NAMESPACE, _TYPE) + if recovery_type is None: + recovery_type = RecoveryType.NormalRecovery + + if recovery_type not in ( + RecoveryType.NormalRecovery, + RecoveryType.DryRun, + RecoveryType.UnlockRepeatedBackup, ): - # Invalid recovery kind + # Invalid recovery type raise RuntimeError - return recovery_kind + return recovery_type def set_slip39_identifier(identifier: int) -> None: @@ -146,7 +146,7 @@ def end_progress() -> None: _require_progress() for key in ( _IN_PROGRESS, - _KIND, + _TYPE, _SLIP39_IDENTIFIER, _REMAINING, _SLIP39_ITERATION_EXPONENT, diff --git a/core/src/trezor/enums/BackupAvailability.py b/core/src/trezor/enums/BackupAvailability.py new file mode 100644 index 0000000000..04c0a2659e --- /dev/null +++ b/core/src/trezor/enums/BackupAvailability.py @@ -0,0 +1,7 @@ +# Automatically generated by pb2py +# fmt: off +# isort:skip_file + +NotAvailable = 0 +Required = 1 +Available = 2 diff --git a/core/src/trezor/enums/RecoveryDeviceType.py b/core/src/trezor/enums/RecoveryDeviceInputMethod.py similarity index 100% rename from core/src/trezor/enums/RecoveryDeviceType.py rename to core/src/trezor/enums/RecoveryDeviceInputMethod.py diff --git a/core/src/trezor/enums/RecoveryStatus.py b/core/src/trezor/enums/RecoveryStatus.py index 828fd7f89e..4e1c754ed5 100644 --- a/core/src/trezor/enums/RecoveryStatus.py +++ b/core/src/trezor/enums/RecoveryStatus.py @@ -2,7 +2,6 @@ # fmt: off # isort:skip_file -NoRecovery = 0 -InNormalRecovery = 1 -InDryRunRecovery = 2 -InUnlockRepeatedBackupRecovery = 3 +Nothing = 0 +Recovery = 1 +Backup = 2 diff --git a/core/src/trezor/enums/RecoveryKind.py b/core/src/trezor/enums/RecoveryType.py similarity index 100% rename from core/src/trezor/enums/RecoveryKind.py rename to core/src/trezor/enums/RecoveryType.py diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 96fea755b1..a3a13ef27d 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -440,11 +440,20 @@ class HomescreenFormat(IntEnum): Jpeg = 2 ToiG = 3 + class RecoveryType(IntEnum): + NormalRecovery = 0 + DryRun = 1 + UnlockRepeatedBackup = 2 + + class BackupAvailability(IntEnum): + NotAvailable = 0 + Required = 1 + Available = 2 + class RecoveryStatus(IntEnum): - NoRecovery = 0 - InNormalRecovery = 1 - InDryRunRecovery = 2 - InUnlockRepeatedBackupRecovery = 3 + Nothing = 0 + Recovery = 1 + Backup = 2 class Capability(IntEnum): Bitcoin = 1 @@ -474,15 +483,10 @@ class SdProtectOperationType(IntEnum): ENABLE = 1 REFRESH = 2 - class RecoveryDeviceType(IntEnum): + class RecoveryDeviceInputMethod(IntEnum): ScrambledWords = 0 Matrix = 1 - class RecoveryKind(IntEnum): - NormalRecovery = 0 - DryRun = 1 - UnlockRepeatedBackup = 2 - class WordRequestType(IntEnum): Plain = 0 Matrix9 = 1 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index 610e4eb01d..8772236bd2 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -17,6 +17,7 @@ def __getattr__(name: str) -> Any: if TYPE_CHECKING: from typing import TypeGuard from trezor.enums import AmountUnit # noqa: F401 + from trezor.enums import BackupAvailability # noqa: F401 from trezor.enums import BackupType # noqa: F401 from trezor.enums import BinanceOrderSide # noqa: F401 from trezor.enums import BinanceOrderType # noqa: F401 @@ -53,9 +54,9 @@ def __getattr__(name: str) -> Any: from trezor.enums import NEMSupplyChangeType # noqa: F401 from trezor.enums import OutputScriptType # noqa: F401 from trezor.enums import PinMatrixRequestType # noqa: F401 - from trezor.enums import RecoveryDeviceType # noqa: F401 - from trezor.enums import RecoveryKind # noqa: F401 + from trezor.enums import RecoveryDeviceInputMethod # noqa: F401 from trezor.enums import RecoveryStatus # noqa: F401 + from trezor.enums import RecoveryType # noqa: F401 from trezor.enums import RequestType # noqa: F401 from trezor.enums import SafetyCheckLevel # noqa: F401 from trezor.enums import SdProtectOperationType # noqa: F401 @@ -2133,7 +2134,7 @@ class Features(protobuf.MessageType): imported: "bool | None" unlocked: "bool | None" firmware_present: "bool | None" - needs_backup: "bool | None" + backup_availability: "BackupAvailability | None" flags: "int | None" model: "str | None" fw_major: "int | None" @@ -2166,6 +2167,7 @@ class Features(protobuf.MessageType): language_version_matches: "bool" unit_packaging: "int | None" haptic_feedback: "bool | None" + recovery_type: "RecoveryType | None" def __init__( self, @@ -2187,7 +2189,7 @@ def __init__( imported: "bool | None" = None, unlocked: "bool | None" = None, firmware_present: "bool | None" = None, - needs_backup: "bool | None" = None, + backup_availability: "BackupAvailability | None" = None, flags: "int | None" = None, model: "str | None" = None, fw_major: "int | None" = None, @@ -2219,6 +2221,7 @@ def __init__( language_version_matches: "bool | None" = None, unit_packaging: "int | None" = None, haptic_feedback: "bool | None" = None, + recovery_type: "RecoveryType | None" = None, ) -> None: pass @@ -2600,9 +2603,9 @@ class RecoveryDevice(protobuf.MessageType): pin_protection: "bool | None" label: "str | None" enforce_wordlist: "bool | None" - type: "RecoveryDeviceType | None" + input_method: "RecoveryDeviceInputMethod | None" u2f_counter: "int | None" - kind: "RecoveryKind" + type: "RecoveryType" def __init__( self, @@ -2612,9 +2615,9 @@ def __init__( pin_protection: "bool | None" = None, label: "str | None" = None, enforce_wordlist: "bool | None" = None, - type: "RecoveryDeviceType | None" = None, + input_method: "RecoveryDeviceInputMethod | None" = None, u2f_counter: "int | None" = None, - kind: "RecoveryKind | None" = None, + type: "RecoveryType | None" = None, ) -> None: pass diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index dd5cf3da3c..90ffe55e18 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -2,15 +2,15 @@ import trezorui2 from trezor import TR -from trezor.enums import ButtonRequestType, RecoveryKind +from trezor.enums import ButtonRequestType, RecoveryType from ..common import interact from . import RustLayout, raise_if_not_confirmed, show_warning -async def request_word_count(dry_run: bool) -> int: +async def request_word_count(recovery_type: RecoveryType) -> int: count = await interact( - RustLayout(trezorui2.select_word_count(dry_run=dry_run)), + RustLayout(trezorui2.select_word_count(recovery_type=recovery_type)), "word_count", ButtonRequestType.MnemonicWordCount, ) @@ -76,7 +76,7 @@ async def continue_recovery( text: str, subtext: str | None, info_func: Callable | None, - kind: RecoveryKind, + recovery_type: RecoveryType, show_info: bool = False, ) -> bool: # TODO: implement info_func? @@ -84,7 +84,7 @@ async def continue_recovery( # (and having middle button would mean shortening the right button text) # Never showing info for dry-run, user already saw it and it is disturbing - if kind in (RecoveryKind.DryRun, RecoveryKind.UnlockRepeatedBackup): + if recovery_type in (RecoveryType.DryRun, RecoveryType.UnlockRepeatedBackup): show_info = False if subtext: @@ -95,7 +95,7 @@ async def continue_recovery( title="", description=text, button=button_label, - kind=kind, + recovery_type=recovery_type, info_button=False, show_info=show_info, # type: ignore [No parameter named "show_info"] ) diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index 5607ceea8c..0e266ab65b 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -2,7 +2,7 @@ import trezorui2 from trezor import TR -from trezor.enums import ButtonRequestType, RecoveryKind +from trezor.enums import ButtonRequestType, RecoveryType from ..common import interact from . import RustLayout, raise_if_not_confirmed @@ -25,8 +25,8 @@ async def _is_confirmed_info( return result is CONFIRMED -async def request_word_count(dry_run: bool) -> int: - selector = RustLayout(trezorui2.select_word_count(dry_run=dry_run)) +async def request_word_count(recovery_type: RecoveryType) -> int: + selector = RustLayout(trezorui2.select_word_count(recovery_type=recovery_type)) count = await interact(selector, "word_count", ButtonRequestType.MnemonicWordCount) return int(count) @@ -116,7 +116,7 @@ async def continue_recovery( text: str, subtext: str | None, info_func: Callable | None, - kind: RecoveryKind, + recovery_type: RecoveryType, show_info: bool = False, # unused on TT ) -> bool: from ..common import button_request @@ -132,7 +132,7 @@ async def continue_recovery( title=text, description=description, button=button_label, - kind=kind, + recovery_type=recovery_type, info_button=info_func is not None, ) ) diff --git a/core/src/trezor/wire/__init__.py b/core/src/trezor/wire/__init__.py index 45cd28ef19..fae3de0c81 100644 --- a/core/src/trezor/wire/__init__.py +++ b/core/src/trezor/wire/__init__.py @@ -31,7 +31,7 @@ from trezor.enums import FailureType from trezor.messages import Failure from trezor.wire import codec_v1, context -from trezor.wire.errors import ActionCancelled, DataError, Error +from trezor.wire.errors import ActionCancelled, DataError, Error, UnexpectedMessage # Import all errors into namespace, so that `wire.Error` is available from # other packages. @@ -261,11 +261,12 @@ async def handle_session( def find_handler(iface: WireInterface, msg_type: int) -> Handler: import usb + from apps import workflow_handlers handler = workflow_handlers.find_registered_handler(iface, msg_type) if handler is None: - raise context.UnexpectedMessage(msg="Unexpected message") + raise UnexpectedMessage("Unexpected message") if __debug__ and iface is usb.iface_debug: # no filtering allowed for debuglink @@ -297,8 +298,21 @@ def find_handler(iface: WireInterface, msg_type: int) -> Handler: Please note that this behavior is really unsuited to anything other than what we are using it for now. It might be necessary to modify the semantics if we need more complex usecases. + +NB: `filters` is currently public so callers can have control over where they insert +new filters, but removal should be done using `remove_filter`! +We should, however, change it such that filters must be added using an `add_filter` +and `filters` becomes private! """ + +def remove_filter(filter): + try: + filters.remove(filter) + except ValueError: + pass + + AVOID_RESTARTING_FOR: Container[int] = () diff --git a/core/translations/en.json b/core/translations/en.json index 0b22682da8..d3b648f735 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -589,7 +589,7 @@ "recovery__title_remaining_shares": "Remaining shares", "recovery__title_unlock_repeated_backup": "Multi-share backup", "recovery__type_word_x_of_y_template": "Type word {0} of {1}", - "recovery__unlock_repeated_backup": "Do you want to unlock the seed for repeated backup?", + "recovery__unlock_repeated_backup": "Create additional backup?", "recovery__unlock_repeated_backup_verb": "Unlock backup", "recovery__wallet_recovered": "Wallet recovery completed", "recovery__wanna_cancel_dry_run": "Are you sure you want to cancel the backup check?", diff --git a/legacy/firmware/fsm_msg_common.h b/legacy/firmware/fsm_msg_common.h index 43fe926b31..43dc33f49a 100644 --- a/legacy/firmware/fsm_msg_common.h +++ b/legacy/firmware/fsm_msg_common.h @@ -60,8 +60,11 @@ bool get_features(Features *resp) { resp->has_imported = config_getImported(&(resp->imported)); resp->has_unlocked = true; resp->unlocked = session_isUnlocked(); - resp->has_needs_backup = true; - config_getNeedsBackup(&(resp->needs_backup)); + resp->has_backup_availability = true; + bool needs_backup = false; + config_getNeedsBackup(&needs_backup); + resp->backup_availability = needs_backup ? BackupAvailability_Required + : BackupAvailability_NotAvailable; resp->has_unfinished_backup = true; config_getUnfinishedBackup(&(resp->unfinished_backup)); resp->has_no_backup = true; @@ -491,11 +494,11 @@ void fsm_msgApplyFlags(const ApplyFlags *msg) { void fsm_msgRecoveryDevice(const RecoveryDevice *msg) { CHECK_PIN_UNCACHED - CHECK_PARAM(!msg->has_kind || msg->kind == RecoveryKind_NormalRecovery || - msg->kind == RecoveryKind_DryRun, + CHECK_PARAM(msg->type == RecoveryType_NormalRecovery || + msg->type == RecoveryType_DryRun, _("UnlockRepeatedBackup not supported")) - const bool dry_run = msg->has_kind ? msg->kind == RecoveryKind_DryRun : false; + const bool dry_run = msg->has_type ? msg->type == RecoveryType_DryRun : false; if (!dry_run) { CHECK_NOT_INITIALIZED } else { @@ -516,7 +519,7 @@ void fsm_msgRecoveryDevice(const RecoveryDevice *msg) { msg->has_language ? msg->language : 0, msg->has_label ? msg->label : 0, msg->has_enforce_wordlist && msg->enforce_wordlist, - msg->has_type ? msg->type : 0, + msg->has_input_method ? msg->input_method : 0, msg->has_u2f_counter ? msg->u2f_counter : 0, dry_run); } diff --git a/legacy/firmware/recovery.c b/legacy/firmware/recovery.c index 9ed3b7b435..d26c635a80 100644 --- a/legacy/firmware/recovery.c +++ b/legacy/firmware/recovery.c @@ -474,8 +474,8 @@ void next_word(void) { void recovery_init(uint32_t _word_count, bool passphrase_protection, bool pin_protection, const char *language, const char *label, - bool _enforce_wordlist, uint32_t type, uint32_t u2f_counter, - bool _dry_run) { + bool _enforce_wordlist, uint32_t input_method, + uint32_t u2f_counter, bool _dry_run) { if (_word_count != 12 && _word_count != 18 && _word_count != 24) return; recovery_mode = RECOVERY_NONE; @@ -510,7 +510,7 @@ void recovery_init(uint32_t _word_count, bool passphrase_protection, } // Prefer matrix recovery if the host supports it. - if ((type & RecoveryDeviceType_RecoveryDeviceType_Matrix) != 0) { + if ((input_method & RecoveryDeviceInputMethod_Matrix) != 0) { recovery_mode = RECOVERY_MATRIX; next_matrix(); } else { diff --git a/legacy/firmware/recovery.h b/legacy/firmware/recovery.h index a5e49c92ba..afcb650032 100644 --- a/legacy/firmware/recovery.h +++ b/legacy/firmware/recovery.h @@ -25,8 +25,8 @@ void recovery_init(uint32_t _word_count, bool passphrase_protection, bool pin_protection, const char *language, const char *label, - bool _enforce_wordlist, uint32_t type, uint32_t u2f_counter, - bool _dry_run); + bool _enforce_wordlist, uint32_t input_method, + uint32_t u2f_counter, bool _dry_run); void recovery_word(const char *word); void recovery_abort(void); const char *recovery_get_fake_word(void); diff --git a/python/src/trezorlib/cli/device.py b/python/src/trezorlib/cli/device.py index 47dc313307..f06a4fe2fd 100644 --- a/python/src/trezorlib/cli/device.py +++ b/python/src/trezorlib/cli/device.py @@ -28,9 +28,9 @@ from ..protobuf import MessageType from . import TrezorConnection -RECOVERY_TYPE = { - "scrambled": messages.RecoveryDeviceType.ScrambledWords, - "matrix": messages.RecoveryDeviceType.Matrix, +RECOVERY_DEVICE_INPUT_METHOD = { + "scrambled": messages.RecoveryDeviceInputMethod.ScrambledWords, + "matrix": messages.RecoveryDeviceInputMethod.Matrix, } BACKUP_TYPE = { @@ -148,7 +148,12 @@ def load( @click.option("-l", "--label") @click.option("-u", "--u2f-counter", default=None, type=int) @click.option( - "-t", "--type", "rec_type", type=ChoiceType(RECOVERY_TYPE), default="scrambled" + "-i", + "--input_method", + "-t", + "--type", + type=ChoiceType(RECOVERY_DEVICE_INPUT_METHOD), + default="scrambled", ) @click.option("-d", "--dry-run", is_flag=True) @click.option("-b", "--unlock-repeated-backup", is_flag=True) @@ -161,12 +166,12 @@ def recover( passphrase_protection: bool, label: Optional[str], u2f_counter: int, - rec_type: messages.RecoveryDeviceType, + input_method: messages.RecoveryDeviceInputMethod, dry_run: bool, unlock_repeated_backup: bool, ) -> "MessageType": """Start safe recovery workflow.""" - if rec_type == messages.RecoveryDeviceType.ScrambledWords: + if input_method == messages.RecoveryDeviceInputMethod.ScrambledWords: input_callback = ui.mnemonic_words(expand) else: input_callback = ui.matrix_words @@ -175,11 +180,11 @@ def recover( if dry_run and unlock_repeated_backup: raise click.ClickException("Cannot use -d and -b together.") - recovery_kind = None + type = None if dry_run: - recovery_kind = messages.RecoveryKind.DryRun + type = messages.RecoveryType.DryRun if unlock_repeated_backup: - recovery_kind = messages.RecoveryKind.UnlockRepeatedBackup + type = messages.RecoveryType.UnlockRepeatedBackup return device.recover( client, @@ -189,8 +194,8 @@ def recover( label=label, u2f_counter=u2f_counter, input_callback=input_callback, - type=rec_type, - recovery_kind=recovery_kind, + input_method=input_method, + type=type, ) diff --git a/python/src/trezorlib/device.py b/python/src/trezorlib/device.py index dabec6f8e9..97b42297c3 100644 --- a/python/src/trezorlib/device.py +++ b/python/src/trezorlib/device.py @@ -159,11 +159,11 @@ def recover( label: Optional[str] = None, language: Optional[str] = None, input_callback: Optional[Callable] = None, - type: messages.RecoveryDeviceType = messages.RecoveryDeviceType.ScrambledWords, + input_method: messages.RecoveryDeviceInputMethod = messages.RecoveryDeviceInputMethod.ScrambledWords, dry_run: Optional[bool] = None, u2f_counter: Optional[int] = None, *, - recovery_kind: Optional[messages.RecoveryKind] = None, + type: Optional[messages.RecoveryType] = None, ) -> "MessageType": if language is not None: warnings.warn( @@ -173,21 +173,19 @@ def recover( if dry_run is not None: warnings.warn( - "Use recovery_kind=RecoveryKind.DryRun instead!", + "Use type=RecoveryType.DryRun instead!", DeprecationWarning, ) - if recovery_kind is not None: - raise ValueError( - "Cannot use both dry_run and recovery_kind simultaneously." - ) + if type is not None: + raise ValueError("Cannot use both dry_run and type simultaneously.") elif dry_run: - recovery_kind = messages.RecoveryKind.DryRun + type = messages.RecoveryType.DryRun else: - recovery_kind = messages.RecoveryKind.NormalRecovery + type = messages.RecoveryType.NormalRecovery - if recovery_kind is None: - recovery_kind = messages.RecoveryKind.NormalRecovery + if type is None: + type = messages.RecoveryType.NormalRecovery if client.features.model == "1" and input_callback is None: raise RuntimeError("Input callback required for Trezor One") @@ -195,10 +193,7 @@ def recover( if word_count not in (12, 18, 24): raise ValueError("Invalid word count. Use 12/18/24") - if ( - client.features.initialized - and recovery_kind == messages.RecoveryKind.NormalRecovery - ): + if client.features.initialized and type == messages.RecoveryType.NormalRecovery: raise RuntimeError( "Device already initialized. Call device.wipe() and try again." ) @@ -207,10 +202,13 @@ def recover( u2f_counter = int(time.time()) msg = messages.RecoveryDevice( - word_count=word_count, enforce_wordlist=True, type=type, kind=recovery_kind + word_count=word_count, + enforce_wordlist=True, + input_method=input_method, + type=type, ) - if recovery_kind == messages.RecoveryKind.NormalRecovery: + if type == messages.RecoveryType.NormalRecovery: # set additional parameters msg.passphrase_protection = passphrase_protection msg.pin_protection = pin_protection diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index e2df9676c8..61ea1bb10f 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -472,11 +472,22 @@ class HomescreenFormat(IntEnum): ToiG = 3 +class RecoveryType(IntEnum): + NormalRecovery = 0 + DryRun = 1 + UnlockRepeatedBackup = 2 + + +class BackupAvailability(IntEnum): + NotAvailable = 0 + Required = 1 + Available = 2 + + class RecoveryStatus(IntEnum): - NoRecovery = 0 - InNormalRecovery = 1 - InDryRunRecovery = 2 - InUnlockRepeatedBackupRecovery = 3 + Nothing = 0 + Recovery = 1 + Backup = 2 class Capability(IntEnum): @@ -509,17 +520,11 @@ class SdProtectOperationType(IntEnum): REFRESH = 2 -class RecoveryDeviceType(IntEnum): +class RecoveryDeviceInputMethod(IntEnum): ScrambledWords = 0 Matrix = 1 -class RecoveryKind(IntEnum): - NormalRecovery = 0 - DryRun = 1 - UnlockRepeatedBackup = 2 - - class WordRequestType(IntEnum): Plain = 0 Matrix9 = 1 @@ -3245,7 +3250,7 @@ class Features(protobuf.MessageType): 16: protobuf.Field("unlocked", "bool", repeated=False, required=False, default=None), 17: protobuf.Field("_passphrase_cached", "bool", repeated=False, required=False, default=None), 18: protobuf.Field("firmware_present", "bool", repeated=False, required=False, default=None), - 19: protobuf.Field("needs_backup", "bool", repeated=False, required=False, default=None), + 19: protobuf.Field("backup_availability", "BackupAvailability", repeated=False, required=False, default=None), 20: protobuf.Field("flags", "uint32", repeated=False, required=False, default=None), 21: protobuf.Field("model", "string", repeated=False, required=False, default=None), 22: protobuf.Field("fw_major", "uint32", repeated=False, required=False, default=None), @@ -3278,6 +3283,7 @@ class Features(protobuf.MessageType): 50: protobuf.Field("language_version_matches", "bool", repeated=False, required=False, default=True), 51: protobuf.Field("unit_packaging", "uint32", repeated=False, required=False, default=None), 52: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None), + 53: protobuf.Field("recovery_type", "RecoveryType", repeated=False, required=False, default=None), } def __init__( @@ -3301,7 +3307,7 @@ def __init__( unlocked: Optional["bool"] = None, _passphrase_cached: Optional["bool"] = None, firmware_present: Optional["bool"] = None, - needs_backup: Optional["bool"] = None, + backup_availability: Optional["BackupAvailability"] = None, flags: Optional["int"] = None, model: Optional["str"] = None, fw_major: Optional["int"] = None, @@ -3333,6 +3339,7 @@ def __init__( language_version_matches: Optional["bool"] = True, unit_packaging: Optional["int"] = None, haptic_feedback: Optional["bool"] = None, + recovery_type: Optional["RecoveryType"] = None, ) -> None: self.capabilities: Sequence["Capability"] = capabilities if capabilities is not None else [] self.major_version = major_version @@ -3352,7 +3359,7 @@ def __init__( self.unlocked = unlocked self._passphrase_cached = _passphrase_cached self.firmware_present = firmware_present - self.needs_backup = needs_backup + self.backup_availability = backup_availability self.flags = flags self.model = model self.fw_major = fw_major @@ -3384,6 +3391,7 @@ def __init__( self.language_version_matches = language_version_matches self.unit_packaging = unit_packaging self.haptic_feedback = haptic_feedback + self.recovery_type = recovery_type class LockDevice(protobuf.MessageType): @@ -3794,9 +3802,9 @@ class RecoveryDevice(protobuf.MessageType): 4: protobuf.Field("language", "string", repeated=False, required=False, default=None), 5: protobuf.Field("label", "string", repeated=False, required=False, default=None), 6: protobuf.Field("enforce_wordlist", "bool", repeated=False, required=False, default=None), - 8: protobuf.Field("type", "RecoveryDeviceType", repeated=False, required=False, default=None), + 8: protobuf.Field("input_method", "RecoveryDeviceInputMethod", repeated=False, required=False, default=None), 9: protobuf.Field("u2f_counter", "uint32", repeated=False, required=False, default=None), - 10: protobuf.Field("kind", "RecoveryKind", repeated=False, required=False, default=RecoveryKind.NormalRecovery), + 10: protobuf.Field("type", "RecoveryType", repeated=False, required=False, default=RecoveryType.NormalRecovery), } def __init__( @@ -3808,9 +3816,9 @@ def __init__( language: Optional["str"] = None, label: Optional["str"] = None, enforce_wordlist: Optional["bool"] = None, - type: Optional["RecoveryDeviceType"] = None, + input_method: Optional["RecoveryDeviceInputMethod"] = None, u2f_counter: Optional["int"] = None, - kind: Optional["RecoveryKind"] = RecoveryKind.NormalRecovery, + type: Optional["RecoveryType"] = RecoveryType.NormalRecovery, ) -> None: self.word_count = word_count self.passphrase_protection = passphrase_protection @@ -3818,9 +3826,9 @@ def __init__( self.language = language self.label = label self.enforce_wordlist = enforce_wordlist - self.type = type + self.input_method = input_method self.u2f_counter = u2f_counter - self.kind = kind + self.type = type class WordRequest(protobuf.MessageType): diff --git a/rust/trezor-client/examples/features.rs b/rust/trezor-client/examples/features.rs index dc95d35011..8f098e8b89 100644 --- a/rust/trezor-client/examples/features.rs +++ b/rust/trezor-client/examples/features.rs @@ -78,8 +78,7 @@ fn do_main() -> Result<(), trezor_client::Error> { //optional bool pin_cached = 16; // is PIN already cached in session? //optional bool passphrase_cached = 17; // is passphrase already cached in session? //optional bool firmware_present = 18; // is valid firmware loaded? - //optional bool needs_backup = 19; // does storage need backup? (equals to - // Storage.needs_backup) optional uint32 flags = 20; // device flags (equals + //optional uint32 flags = 20; // device flags (equals // to Storage.flags) optional string model = 21; // device hardware model //optional uint32 fw_major = 22; // reported firmware version if in bootloader // mode optional uint32 fw_minor = 23; // reported firmware version if in diff --git a/rust/trezor-client/src/client/mod.rs b/rust/trezor-client/src/client/mod.rs index 400ea62c6e..502b2687d5 100644 --- a/rust/trezor-client/src/client/mod.rs +++ b/rust/trezor-client/src/client/mod.rs @@ -170,13 +170,11 @@ impl Trezor { req.set_label(label); req.set_enforce_wordlist(true); if dry_run { - req.set_kind(protos::recovery_device::RecoveryKind::DryRun); + req.set_type(protos::RecoveryType::DryRun); } else { - req.set_kind(protos::recovery_device::RecoveryKind::NormalRecovery); + req.set_type(protos::RecoveryType::NormalRecovery); } - req.set_type( - protos::recovery_device::RecoveryDeviceType::RecoveryDeviceType_ScrambledWords, - ); + req.set_input_method(protos::recovery_device::RecoveryDeviceInputMethod::ScrambledWords); //TODO(stevenroose) support languages req.set_language("english".to_owned()); self.call(req, Box::new(|_, _| Ok(()))) diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index f2f23992b4..b7e87556a8 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -398,8 +398,8 @@ pub struct Features { pub _passphrase_cached: ::std::option::Option<bool>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.firmware_present) pub firmware_present: ::std::option::Option<bool>, - // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.needs_backup) - pub needs_backup: ::std::option::Option<bool>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.backup_availability) + pub backup_availability: ::std::option::Option<::protobuf::EnumOrUnknown<features::BackupAvailability>>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.flags) pub flags: ::std::option::Option<u32>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.model) @@ -464,6 +464,8 @@ pub struct Features { pub unit_packaging: ::std::option::Option<u32>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.haptic_feedback) pub haptic_feedback: ::std::option::Option<bool>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.recovery_type) + pub recovery_type: ::std::option::Option<::protobuf::EnumOrUnknown<RecoveryType>>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.management.Features.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -905,23 +907,26 @@ impl Features { self.firmware_present = ::std::option::Option::Some(v); } - // optional bool needs_backup = 19; + // optional .hw.trezor.messages.management.Features.BackupAvailability backup_availability = 19; - pub fn needs_backup(&self) -> bool { - self.needs_backup.unwrap_or(false) + pub fn backup_availability(&self) -> features::BackupAvailability { + match self.backup_availability { + Some(e) => e.enum_value_or(features::BackupAvailability::NotAvailable), + None => features::BackupAvailability::NotAvailable, + } } - pub fn clear_needs_backup(&mut self) { - self.needs_backup = ::std::option::Option::None; + pub fn clear_backup_availability(&mut self) { + self.backup_availability = ::std::option::Option::None; } - pub fn has_needs_backup(&self) -> bool { - self.needs_backup.is_some() + pub fn has_backup_availability(&self) -> bool { + self.backup_availability.is_some() } // Param is passed by value, moved - pub fn set_needs_backup(&mut self, v: bool) { - self.needs_backup = ::std::option::Option::Some(v); + pub fn set_backup_availability(&mut self, v: features::BackupAvailability) { + self.backup_availability = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); } // optional uint32 flags = 20; @@ -1114,8 +1119,8 @@ impl Features { pub fn recovery_status(&self) -> features::RecoveryStatus { match self.recovery_status { - Some(e) => e.enum_value_or(features::RecoveryStatus::NoRecovery), - None => features::RecoveryStatus::NoRecovery, + Some(e) => e.enum_value_or(features::RecoveryStatus::Nothing), + None => features::RecoveryStatus::Nothing, } } @@ -1593,8 +1598,30 @@ impl Features { self.haptic_feedback = ::std::option::Option::Some(v); } + // optional .hw.trezor.messages.management.RecoveryType recovery_type = 53; + + pub fn recovery_type(&self) -> RecoveryType { + match self.recovery_type { + Some(e) => e.enum_value_or(RecoveryType::NormalRecovery), + None => RecoveryType::NormalRecovery, + } + } + + pub fn clear_recovery_type(&mut self) { + self.recovery_type = ::std::option::Option::None; + } + + pub fn has_recovery_type(&self) -> bool { + self.recovery_type.is_some() + } + + // Param is passed by value, moved + pub fn set_recovery_type(&mut self, v: RecoveryType) { + self.recovery_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(50); + let mut fields = ::std::vec::Vec::with_capacity(51); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "vendor", @@ -1682,9 +1709,9 @@ impl Features { |m: &mut Features| { &mut m.firmware_present }, )); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "needs_backup", - |m: &Features| { &m.needs_backup }, - |m: &mut Features| { &mut m.needs_backup }, + "backup_availability", + |m: &Features| { &m.backup_availability }, + |m: &mut Features| { &mut m.backup_availability }, )); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "flags", @@ -1846,6 +1873,11 @@ impl Features { |m: &Features| { &m.haptic_feedback }, |m: &mut Features| { &mut m.haptic_feedback }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "recovery_type", + |m: &Features| { &m.recovery_type }, + |m: &mut Features| { &mut m.recovery_type }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Features>( "Features", fields, @@ -1925,7 +1957,7 @@ impl ::protobuf::Message for Features { self.firmware_present = ::std::option::Option::Some(is.read_bool()?); }, 152 => { - self.needs_backup = ::std::option::Option::Some(is.read_bool()?); + self.backup_availability = ::std::option::Option::Some(is.read_enum_or_unknown()?); }, 160 => { self.flags = ::std::option::Option::Some(is.read_uint32()?); @@ -2026,6 +2058,9 @@ impl ::protobuf::Message for Features { 416 => { self.haptic_feedback = ::std::option::Option::Some(is.read_bool()?); }, + 424 => { + self.recovery_type = ::std::option::Option::Some(is.read_enum_or_unknown()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -2089,8 +2124,8 @@ impl ::protobuf::Message for Features { if let Some(v) = self.firmware_present { my_size += 2 + 1; } - if let Some(v) = self.needs_backup { - my_size += 2 + 1; + if let Some(v) = self.backup_availability { + my_size += ::protobuf::rt::int32_size(19, v.value()); } if let Some(v) = self.flags { my_size += ::protobuf::rt::uint32_size(20, v); @@ -2188,6 +2223,9 @@ impl ::protobuf::Message for Features { if let Some(v) = self.haptic_feedback { my_size += 2 + 1; } + if let Some(v) = self.recovery_type { + my_size += ::protobuf::rt::int32_size(53, v.value()); + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -2245,8 +2283,8 @@ impl ::protobuf::Message for Features { if let Some(v) = self.firmware_present { os.write_bool(18, v)?; } - if let Some(v) = self.needs_backup { - os.write_bool(19, v)?; + if let Some(v) = self.backup_availability { + os.write_enum(19, ::protobuf::EnumOrUnknown::value(&v))?; } if let Some(v) = self.flags { os.write_uint32(20, v)?; @@ -2344,6 +2382,9 @@ impl ::protobuf::Message for Features { if let Some(v) = self.haptic_feedback { os.write_bool(52, v)?; } + if let Some(v) = self.recovery_type { + os.write_enum(53, ::protobuf::EnumOrUnknown::value(&v))?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -2378,7 +2419,7 @@ impl ::protobuf::Message for Features { self.unlocked = ::std::option::Option::None; self._passphrase_cached = ::std::option::Option::None; self.firmware_present = ::std::option::Option::None; - self.needs_backup = ::std::option::Option::None; + self.backup_availability = ::std::option::Option::None; self.flags = ::std::option::Option::None; self.model = ::std::option::Option::None; self.fw_major = ::std::option::Option::None; @@ -2411,6 +2452,7 @@ impl ::protobuf::Message for Features { self.language_version_matches = ::std::option::Option::None; self.unit_packaging = ::std::option::Option::None; self.haptic_feedback = ::std::option::Option::None; + self.recovery_type = ::std::option::Option::None; self.special_fields.clear(); } @@ -2433,7 +2475,7 @@ impl ::protobuf::Message for Features { unlocked: ::std::option::Option::None, _passphrase_cached: ::std::option::Option::None, firmware_present: ::std::option::Option::None, - needs_backup: ::std::option::Option::None, + backup_availability: ::std::option::Option::None, flags: ::std::option::Option::None, model: ::std::option::Option::None, fw_major: ::std::option::Option::None, @@ -2466,6 +2508,7 @@ impl ::protobuf::Message for Features { language_version_matches: ::std::option::Option::None, unit_packaging: ::std::option::Option::None, haptic_feedback: ::std::option::Option::None, + recovery_type: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -2491,17 +2534,82 @@ impl ::protobuf::reflect::ProtobufValue for Features { /// Nested message and enums of message `Features` pub mod features { + #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] + // @@protoc_insertion_point(enum:hw.trezor.messages.management.Features.BackupAvailability) + pub enum BackupAvailability { + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.BackupAvailability.NotAvailable) + NotAvailable = 0, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.BackupAvailability.Required) + Required = 1, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.BackupAvailability.Available) + Available = 2, + } + + impl ::protobuf::Enum for BackupAvailability { + const NAME: &'static str = "BackupAvailability"; + + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option<BackupAvailability> { + match value { + 0 => ::std::option::Option::Some(BackupAvailability::NotAvailable), + 1 => ::std::option::Option::Some(BackupAvailability::Required), + 2 => ::std::option::Option::Some(BackupAvailability::Available), + _ => ::std::option::Option::None + } + } + + fn from_str(str: &str) -> ::std::option::Option<BackupAvailability> { + match str { + "NotAvailable" => ::std::option::Option::Some(BackupAvailability::NotAvailable), + "Required" => ::std::option::Option::Some(BackupAvailability::Required), + "Available" => ::std::option::Option::Some(BackupAvailability::Available), + _ => ::std::option::Option::None + } + } + + const VALUES: &'static [BackupAvailability] = &[ + BackupAvailability::NotAvailable, + BackupAvailability::Required, + BackupAvailability::Available, + ]; + } + + impl ::protobuf::EnumFull for BackupAvailability { + fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("Features.BackupAvailability").unwrap()).clone() + } + + fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { + let index = *self as usize; + Self::enum_descriptor().value_by_index(index) + } + } + + impl ::std::default::Default for BackupAvailability { + fn default() -> Self { + BackupAvailability::NotAvailable + } + } + + impl BackupAvailability { + pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData { + ::protobuf::reflect::GeneratedEnumDescriptorData::new::<BackupAvailability>("Features.BackupAvailability") + } + } + #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] // @@protoc_insertion_point(enum:hw.trezor.messages.management.Features.RecoveryStatus) pub enum RecoveryStatus { - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.NoRecovery) - NoRecovery = 0, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.InNormalRecovery) - InNormalRecovery = 1, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.InDryRunRecovery) - InDryRunRecovery = 2, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.InUnlockRepeatedBackupRecovery) - InUnlockRepeatedBackupRecovery = 3, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.Nothing) + Nothing = 0, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.Recovery) + Recovery = 1, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.Features.RecoveryStatus.Backup) + Backup = 2, } impl ::protobuf::Enum for RecoveryStatus { @@ -2513,29 +2621,26 @@ pub mod features { fn from_i32(value: i32) -> ::std::option::Option<RecoveryStatus> { match value { - 0 => ::std::option::Option::Some(RecoveryStatus::NoRecovery), - 1 => ::std::option::Option::Some(RecoveryStatus::InNormalRecovery), - 2 => ::std::option::Option::Some(RecoveryStatus::InDryRunRecovery), - 3 => ::std::option::Option::Some(RecoveryStatus::InUnlockRepeatedBackupRecovery), + 0 => ::std::option::Option::Some(RecoveryStatus::Nothing), + 1 => ::std::option::Option::Some(RecoveryStatus::Recovery), + 2 => ::std::option::Option::Some(RecoveryStatus::Backup), _ => ::std::option::Option::None } } fn from_str(str: &str) -> ::std::option::Option<RecoveryStatus> { match str { - "NoRecovery" => ::std::option::Option::Some(RecoveryStatus::NoRecovery), - "InNormalRecovery" => ::std::option::Option::Some(RecoveryStatus::InNormalRecovery), - "InDryRunRecovery" => ::std::option::Option::Some(RecoveryStatus::InDryRunRecovery), - "InUnlockRepeatedBackupRecovery" => ::std::option::Option::Some(RecoveryStatus::InUnlockRepeatedBackupRecovery), + "Nothing" => ::std::option::Option::Some(RecoveryStatus::Nothing), + "Recovery" => ::std::option::Option::Some(RecoveryStatus::Recovery), + "Backup" => ::std::option::Option::Some(RecoveryStatus::Backup), _ => ::std::option::Option::None } } const VALUES: &'static [RecoveryStatus] = &[ - RecoveryStatus::NoRecovery, - RecoveryStatus::InNormalRecovery, - RecoveryStatus::InDryRunRecovery, - RecoveryStatus::InUnlockRepeatedBackupRecovery, + RecoveryStatus::Nothing, + RecoveryStatus::Recovery, + RecoveryStatus::Backup, ]; } @@ -2553,7 +2658,7 @@ pub mod features { impl ::std::default::Default for RecoveryStatus { fn default() -> Self { - RecoveryStatus::NoRecovery + RecoveryStatus::Nothing } } @@ -7839,12 +7944,12 @@ pub struct RecoveryDevice { pub label: ::std::option::Option<::std::string::String>, // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.enforce_wordlist) pub enforce_wordlist: ::std::option::Option<bool>, - // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.type) - pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<recovery_device::RecoveryDeviceType>>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.input_method) + pub input_method: ::std::option::Option<::protobuf::EnumOrUnknown<recovery_device::RecoveryDeviceInputMethod>>, // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.u2f_counter) pub u2f_counter: ::std::option::Option<u32>, - // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.kind) - pub kind: ::std::option::Option<::protobuf::EnumOrUnknown<recovery_device::RecoveryKind>>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.RecoveryDevice.type) + pub type_: ::std::option::Option<::protobuf::EnumOrUnknown<RecoveryType>>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.management.RecoveryDevice.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -8009,26 +8114,26 @@ impl RecoveryDevice { self.enforce_wordlist = ::std::option::Option::Some(v); } - // optional .hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceType type = 8; + // optional .hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceInputMethod input_method = 8; - pub fn type_(&self) -> recovery_device::RecoveryDeviceType { - match self.type_ { - Some(e) => e.enum_value_or(recovery_device::RecoveryDeviceType::RecoveryDeviceType_ScrambledWords), - None => recovery_device::RecoveryDeviceType::RecoveryDeviceType_ScrambledWords, + pub fn input_method(&self) -> recovery_device::RecoveryDeviceInputMethod { + match self.input_method { + Some(e) => e.enum_value_or(recovery_device::RecoveryDeviceInputMethod::ScrambledWords), + None => recovery_device::RecoveryDeviceInputMethod::ScrambledWords, } } - pub fn clear_type_(&mut self) { - self.type_ = ::std::option::Option::None; + pub fn clear_input_method(&mut self) { + self.input_method = ::std::option::Option::None; } - pub fn has_type(&self) -> bool { - self.type_.is_some() + pub fn has_input_method(&self) -> bool { + self.input_method.is_some() } // Param is passed by value, moved - pub fn set_type(&mut self, v: recovery_device::RecoveryDeviceType) { - self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); + pub fn set_input_method(&mut self, v: recovery_device::RecoveryDeviceInputMethod) { + self.input_method = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); } // optional uint32 u2f_counter = 9; @@ -8050,26 +8155,26 @@ impl RecoveryDevice { self.u2f_counter = ::std::option::Option::Some(v); } - // optional .hw.trezor.messages.management.RecoveryDevice.RecoveryKind kind = 10; + // optional .hw.trezor.messages.management.RecoveryType type = 10; - pub fn kind(&self) -> recovery_device::RecoveryKind { - match self.kind { - Some(e) => e.enum_value_or(recovery_device::RecoveryKind::NormalRecovery), - None => recovery_device::RecoveryKind::NormalRecovery, + pub fn type_(&self) -> RecoveryType { + match self.type_ { + Some(e) => e.enum_value_or(RecoveryType::NormalRecovery), + None => RecoveryType::NormalRecovery, } } - pub fn clear_kind(&mut self) { - self.kind = ::std::option::Option::None; + pub fn clear_type_(&mut self) { + self.type_ = ::std::option::Option::None; } - pub fn has_kind(&self) -> bool { - self.kind.is_some() + pub fn has_type(&self) -> bool { + self.type_.is_some() } // Param is passed by value, moved - pub fn set_kind(&mut self, v: recovery_device::RecoveryKind) { - self.kind = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); + pub fn set_type(&mut self, v: RecoveryType) { + self.type_ = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); } fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { @@ -8106,9 +8211,9 @@ impl RecoveryDevice { |m: &mut RecoveryDevice| { &mut m.enforce_wordlist }, )); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "type", - |m: &RecoveryDevice| { &m.type_ }, - |m: &mut RecoveryDevice| { &mut m.type_ }, + "input_method", + |m: &RecoveryDevice| { &m.input_method }, + |m: &mut RecoveryDevice| { &mut m.input_method }, )); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "u2f_counter", @@ -8116,9 +8221,9 @@ impl RecoveryDevice { |m: &mut RecoveryDevice| { &mut m.u2f_counter }, )); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "kind", - |m: &RecoveryDevice| { &m.kind }, - |m: &mut RecoveryDevice| { &mut m.kind }, + "type", + |m: &RecoveryDevice| { &m.type_ }, + |m: &mut RecoveryDevice| { &mut m.type_ }, )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<RecoveryDevice>( "RecoveryDevice", @@ -8157,13 +8262,13 @@ impl ::protobuf::Message for RecoveryDevice { self.enforce_wordlist = ::std::option::Option::Some(is.read_bool()?); }, 64 => { - self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?); + self.input_method = ::std::option::Option::Some(is.read_enum_or_unknown()?); }, 72 => { self.u2f_counter = ::std::option::Option::Some(is.read_uint32()?); }, 80 => { - self.kind = ::std::option::Option::Some(is.read_enum_or_unknown()?); + self.type_ = ::std::option::Option::Some(is.read_enum_or_unknown()?); }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; @@ -8195,13 +8300,13 @@ impl ::protobuf::Message for RecoveryDevice { if let Some(v) = self.enforce_wordlist { my_size += 1 + 1; } - if let Some(v) = self.type_ { + if let Some(v) = self.input_method { my_size += ::protobuf::rt::int32_size(8, v.value()); } if let Some(v) = self.u2f_counter { my_size += ::protobuf::rt::uint32_size(9, v); } - if let Some(v) = self.kind { + if let Some(v) = self.type_ { my_size += ::protobuf::rt::int32_size(10, v.value()); } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); @@ -8228,13 +8333,13 @@ impl ::protobuf::Message for RecoveryDevice { if let Some(v) = self.enforce_wordlist { os.write_bool(6, v)?; } - if let Some(v) = self.type_ { + if let Some(v) = self.input_method { os.write_enum(8, ::protobuf::EnumOrUnknown::value(&v))?; } if let Some(v) = self.u2f_counter { os.write_uint32(9, v)?; } - if let Some(v) = self.kind { + if let Some(v) = self.type_ { os.write_enum(10, ::protobuf::EnumOrUnknown::value(&v))?; } os.write_unknown_fields(self.special_fields.unknown_fields())?; @@ -8260,9 +8365,9 @@ impl ::protobuf::Message for RecoveryDevice { self.language = ::std::option::Option::None; self.label = ::std::option::Option::None; self.enforce_wordlist = ::std::option::Option::None; - self.type_ = ::std::option::Option::None; + self.input_method = ::std::option::Option::None; self.u2f_counter = ::std::option::Option::None; - self.kind = ::std::option::Option::None; + self.type_ = ::std::option::Option::None; self.special_fields.clear(); } @@ -8274,9 +8379,9 @@ impl ::protobuf::Message for RecoveryDevice { language: ::std::option::Option::None, label: ::std::option::Option::None, enforce_wordlist: ::std::option::Option::None, - type_: ::std::option::Option::None, + input_method: ::std::option::Option::None, u2f_counter: ::std::option::Option::None, - kind: ::std::option::Option::None, + type_: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -8303,114 +8408,47 @@ impl ::protobuf::reflect::ProtobufValue for RecoveryDevice { /// Nested message and enums of message `RecoveryDevice` pub mod recovery_device { #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] - // @@protoc_insertion_point(enum:hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceType) - pub enum RecoveryDeviceType { - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceType.RecoveryDeviceType_ScrambledWords) - RecoveryDeviceType_ScrambledWords = 0, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceType.RecoveryDeviceType_Matrix) - RecoveryDeviceType_Matrix = 1, - } - - impl ::protobuf::Enum for RecoveryDeviceType { - const NAME: &'static str = "RecoveryDeviceType"; - - fn value(&self) -> i32 { - *self as i32 - } - - fn from_i32(value: i32) -> ::std::option::Option<RecoveryDeviceType> { - match value { - 0 => ::std::option::Option::Some(RecoveryDeviceType::RecoveryDeviceType_ScrambledWords), - 1 => ::std::option::Option::Some(RecoveryDeviceType::RecoveryDeviceType_Matrix), - _ => ::std::option::Option::None - } - } - - fn from_str(str: &str) -> ::std::option::Option<RecoveryDeviceType> { - match str { - "RecoveryDeviceType_ScrambledWords" => ::std::option::Option::Some(RecoveryDeviceType::RecoveryDeviceType_ScrambledWords), - "RecoveryDeviceType_Matrix" => ::std::option::Option::Some(RecoveryDeviceType::RecoveryDeviceType_Matrix), - _ => ::std::option::Option::None - } - } - - const VALUES: &'static [RecoveryDeviceType] = &[ - RecoveryDeviceType::RecoveryDeviceType_ScrambledWords, - RecoveryDeviceType::RecoveryDeviceType_Matrix, - ]; - } - - impl ::protobuf::EnumFull for RecoveryDeviceType { - fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("RecoveryDevice.RecoveryDeviceType").unwrap()).clone() - } - - fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { - let index = *self as usize; - Self::enum_descriptor().value_by_index(index) - } - } - - impl ::std::default::Default for RecoveryDeviceType { - fn default() -> Self { - RecoveryDeviceType::RecoveryDeviceType_ScrambledWords - } - } - - impl RecoveryDeviceType { - pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData { - ::protobuf::reflect::GeneratedEnumDescriptorData::new::<RecoveryDeviceType>("RecoveryDevice.RecoveryDeviceType") - } - } - - #[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] - // @@protoc_insertion_point(enum:hw.trezor.messages.management.RecoveryDevice.RecoveryKind) - pub enum RecoveryKind { - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryKind.NormalRecovery) - NormalRecovery = 0, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryKind.DryRun) - DryRun = 1, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryKind.UnlockRepeatedBackup) - UnlockRepeatedBackup = 2, + // @@protoc_insertion_point(enum:hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceInputMethod) + pub enum RecoveryDeviceInputMethod { + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceInputMethod.ScrambledWords) + ScrambledWords = 0, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceInputMethod.Matrix) + Matrix = 1, } - impl ::protobuf::Enum for RecoveryKind { - const NAME: &'static str = "RecoveryKind"; + impl ::protobuf::Enum for RecoveryDeviceInputMethod { + const NAME: &'static str = "RecoveryDeviceInputMethod"; fn value(&self) -> i32 { *self as i32 } - fn from_i32(value: i32) -> ::std::option::Option<RecoveryKind> { + fn from_i32(value: i32) -> ::std::option::Option<RecoveryDeviceInputMethod> { match value { - 0 => ::std::option::Option::Some(RecoveryKind::NormalRecovery), - 1 => ::std::option::Option::Some(RecoveryKind::DryRun), - 2 => ::std::option::Option::Some(RecoveryKind::UnlockRepeatedBackup), + 0 => ::std::option::Option::Some(RecoveryDeviceInputMethod::ScrambledWords), + 1 => ::std::option::Option::Some(RecoveryDeviceInputMethod::Matrix), _ => ::std::option::Option::None } } - fn from_str(str: &str) -> ::std::option::Option<RecoveryKind> { + fn from_str(str: &str) -> ::std::option::Option<RecoveryDeviceInputMethod> { match str { - "NormalRecovery" => ::std::option::Option::Some(RecoveryKind::NormalRecovery), - "DryRun" => ::std::option::Option::Some(RecoveryKind::DryRun), - "UnlockRepeatedBackup" => ::std::option::Option::Some(RecoveryKind::UnlockRepeatedBackup), + "ScrambledWords" => ::std::option::Option::Some(RecoveryDeviceInputMethod::ScrambledWords), + "Matrix" => ::std::option::Option::Some(RecoveryDeviceInputMethod::Matrix), _ => ::std::option::Option::None } } - const VALUES: &'static [RecoveryKind] = &[ - RecoveryKind::NormalRecovery, - RecoveryKind::DryRun, - RecoveryKind::UnlockRepeatedBackup, + const VALUES: &'static [RecoveryDeviceInputMethod] = &[ + RecoveryDeviceInputMethod::ScrambledWords, + RecoveryDeviceInputMethod::Matrix, ]; } - impl ::protobuf::EnumFull for RecoveryKind { + impl ::protobuf::EnumFull for RecoveryDeviceInputMethod { fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor { static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("RecoveryDevice.RecoveryKind").unwrap()).clone() + descriptor.get(|| super::file_descriptor().enum_by_package_relative_name("RecoveryDevice.RecoveryDeviceInputMethod").unwrap()).clone() } fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { @@ -8419,15 +8457,15 @@ pub mod recovery_device { } } - impl ::std::default::Default for RecoveryKind { + impl ::std::default::Default for RecoveryDeviceInputMethod { fn default() -> Self { - RecoveryKind::NormalRecovery + RecoveryDeviceInputMethod::ScrambledWords } } - impl RecoveryKind { + impl RecoveryDeviceInputMethod { pub(in super) fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData { - ::protobuf::reflect::GeneratedEnumDescriptorData::new::<RecoveryKind>("RecoveryDevice.RecoveryKind") + ::protobuf::reflect::GeneratedEnumDescriptorData::new::<RecoveryDeviceInputMethod>("RecoveryDevice.RecoveryDeviceInputMethod") } } } @@ -10979,12 +11017,79 @@ impl HomescreenFormat { } } +#[derive(Clone,Copy,PartialEq,Eq,Debug,Hash)] +// @@protoc_insertion_point(enum:hw.trezor.messages.management.RecoveryType) +pub enum RecoveryType { + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryType.NormalRecovery) + NormalRecovery = 0, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryType.DryRun) + DryRun = 1, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.management.RecoveryType.UnlockRepeatedBackup) + UnlockRepeatedBackup = 2, +} + +impl ::protobuf::Enum for RecoveryType { + const NAME: &'static str = "RecoveryType"; + + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option<RecoveryType> { + match value { + 0 => ::std::option::Option::Some(RecoveryType::NormalRecovery), + 1 => ::std::option::Option::Some(RecoveryType::DryRun), + 2 => ::std::option::Option::Some(RecoveryType::UnlockRepeatedBackup), + _ => ::std::option::Option::None + } + } + + fn from_str(str: &str) -> ::std::option::Option<RecoveryType> { + match str { + "NormalRecovery" => ::std::option::Option::Some(RecoveryType::NormalRecovery), + "DryRun" => ::std::option::Option::Some(RecoveryType::DryRun), + "UnlockRepeatedBackup" => ::std::option::Option::Some(RecoveryType::UnlockRepeatedBackup), + _ => ::std::option::Option::None + } + } + + const VALUES: &'static [RecoveryType] = &[ + RecoveryType::NormalRecovery, + RecoveryType::DryRun, + RecoveryType::UnlockRepeatedBackup, + ]; +} + +impl ::protobuf::EnumFull for RecoveryType { + fn enum_descriptor() -> ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().enum_by_package_relative_name("RecoveryType").unwrap()).clone() + } + + fn descriptor(&self) -> ::protobuf::reflect::EnumValueDescriptor { + let index = *self as usize; + Self::enum_descriptor().value_by_index(index) + } +} + +impl ::std::default::Default for RecoveryType { + fn default() -> Self { + RecoveryType::NormalRecovery + } +} + +impl RecoveryType { + fn generated_enum_descriptor_data() -> ::protobuf::reflect::GeneratedEnumDescriptorData { + ::protobuf::reflect::GeneratedEnumDescriptorData::new::<RecoveryType>("RecoveryType") + } +} + static file_descriptor_proto_data: &'static [u8] = b"\ \n\x19messages-management.proto\x12\x1dhw.trezor.messages.management\x1a\ \x0emessages.proto\"\x80\x01\n\nInitialize\x12\x1d\n\nsession_id\x18\x01\ \x20\x01(\x0cR\tsessionId\x12,\n\x10_skip_passphrase\x18\x02\x20\x01(\ \x08R\x0eSkipPassphraseB\x02\x18\x01\x12%\n\x0ederive_cardano\x18\x03\ - \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\x8f\x16\n\x08Featur\ + \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xb7\x17\n\x08Featur\ es\x12\x16\n\x06vendor\x18\x01\x20\x01(\tR\x06vendor\x12#\n\rmajor_versi\ on\x18\x02\x20\x02(\rR\x0cmajorVersion\x12#\n\rminor_version\x18\x03\x20\ \x02(\rR\x0cminorVersion\x12#\n\rpatch_version\x18\x04\x20\x02(\rR\x0cpa\ @@ -10999,17 +11104,18 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x18\x0f\x20\x01(\x08R\x08imported\x12\x1a\n\x08unlocked\x18\x10\x20\x01\ (\x08R\x08unlocked\x120\n\x12_passphrase_cached\x18\x11\x20\x01(\x08R\ \x10PassphraseCachedB\x02\x18\x01\x12)\n\x10firmware_present\x18\x12\x20\ - \x01(\x08R\x0ffirmwarePresent\x12!\n\x0cneeds_backup\x18\x13\x20\x01(\ - \x08R\x0bneedsBackup\x12\x14\n\x05flags\x18\x14\x20\x01(\rR\x05flags\x12\ - \x14\n\x05model\x18\x15\x20\x01(\tR\x05model\x12\x19\n\x08fw_major\x18\ - \x16\x20\x01(\rR\x07fwMajor\x12\x19\n\x08fw_minor\x18\x17\x20\x01(\rR\ - \x07fwMinor\x12\x19\n\x08fw_patch\x18\x18\x20\x01(\rR\x07fwPatch\x12\x1b\ - \n\tfw_vendor\x18\x19\x20\x01(\tR\x08fwVendor\x12+\n\x11unfinished_backu\ - p\x18\x1b\x20\x01(\x08R\x10unfinishedBackup\x12\x1b\n\tno_backup\x18\x1c\ - \x20\x01(\x08R\x08noBackup\x12_\n\x0frecovery_status\x18\x1d\x20\x01(\ - \x0e26.hw.trezor.messages.management.Features.RecoveryStatusR\x0erecover\ - yStatus\x12V\n\x0ccapabilities\x18\x1e\x20\x03(\x0e22.hw.trezor.messages\ - .management.Features.CapabilityR\x0ccapabilities\x12J\n\x0bbackup_type\ + \x01(\x08R\x0ffirmwarePresent\x12k\n\x13backup_availability\x18\x13\x20\ + \x01(\x0e2:.hw.trezor.messages.management.Features.BackupAvailabilityR\ + \x12backupAvailability\x12\x14\n\x05flags\x18\x14\x20\x01(\rR\x05flags\ + \x12\x14\n\x05model\x18\x15\x20\x01(\tR\x05model\x12\x19\n\x08fw_major\ + \x18\x16\x20\x01(\rR\x07fwMajor\x12\x19\n\x08fw_minor\x18\x17\x20\x01(\r\ + R\x07fwMinor\x12\x19\n\x08fw_patch\x18\x18\x20\x01(\rR\x07fwPatch\x12\ + \x1b\n\tfw_vendor\x18\x19\x20\x01(\tR\x08fwVendor\x12+\n\x11unfinished_b\ + ackup\x18\x1b\x20\x01(\x08R\x10unfinishedBackup\x12\x1b\n\tno_backup\x18\ + \x1c\x20\x01(\x08R\x08noBackup\x12_\n\x0frecovery_status\x18\x1d\x20\x01\ + (\x0e26.hw.trezor.messages.management.Features.RecoveryStatusR\x0erecove\ + ryStatus\x12V\n\x0ccapabilities\x18\x1e\x20\x03(\x0e22.hw.trezor.message\ + s.management.Features.CapabilityR\x0ccapabilities\x12J\n\x0bbackup_type\ \x18\x1f\x20\x01(\x0e2).hw.trezor.messages.management.BackupTypeR\nbacku\ pType\x12&\n\x0fsd_card_present\x18\x20\x20\x01(\x08R\rsdCardPresent\x12\ #\n\rsd_protection\x18!\x20\x01(\x08R\x0csdProtection\x120\n\x14wipe_cod\ @@ -11031,35 +11137,37 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20\x01(\x08R\x10bootloaderLocked\x12>\n\x18language_version_matches\ \x182\x20\x01(\x08:\x04trueR\x16languageVersionMatches\x12%\n\x0eunit_pa\ ckaging\x183\x20\x01(\rR\runitPackaging\x12'\n\x0fhaptic_feedback\x184\ - \x20\x01(\x08R\x0ehapticFeedback\"p\n\x0eRecoveryStatus\x12\x0e\n\nNoRec\ - overy\x10\0\x12\x14\n\x10InNormalRecovery\x10\x01\x12\x14\n\x10InDryRunR\ - ecovery\x10\x02\x12\"\n\x1eInUnlockRepeatedBackupRecovery\x10\x03\"\xc2\ - \x04\n\nCapability\x12\x1c\n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\ - \xa6\x1d\x01\x12\x1b\n\x17Capability_Bitcoin_like\x10\x02\x12\x16\n\x12C\ - apability_Binance\x10\x03\x12\x16\n\x12Capability_Cardano\x10\x04\x12\ - \x1b\n\x11Capability_Crypto\x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\n\ - \x0eCapability_EOS\x10\x06\x12\x17\n\x13Capability_Ethereum\x10\x07\x12\ - \x17\n\x0fCapability_Lisk\x10\x08\x1a\x02\x08\x01\x12\x15\n\x11Capabilit\ - y_Monero\x10\t\x12\x12\n\x0eCapability_NEM\x10\n\x12\x15\n\x11Capability\ - _Ripple\x10\x0b\x12\x16\n\x12Capability_Stellar\x10\x0c\x12\x14\n\x10Cap\ - ability_Tezos\x10\r\x12\x12\n\x0eCapability_U2F\x10\x0e\x12\x1b\n\x11Cap\ - ability_Shamir\x10\x0f\x1a\x04\x80\xa6\x1d\x01\x12!\n\x17Capability_Sham\ - irGroups\x10\x10\x1a\x04\x80\xa6\x1d\x01\x12$\n\x1aCapability_Passphrase\ - Entry\x10\x11\x1a\x04\x80\xa6\x1d\x01\x12\x15\n\x11Capability_Solana\x10\ - \x12\x12!\n\x17Capability_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\ - \x12\x1f\n\x15Capability_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x12\ - \x1b\n\x11Capability_Haptic\x10\x15\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\ - \xf3\x18\x01\"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\ - \x18\x01\x20\x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\xc4\x04\n\rApplyS\ - ettings\x12\x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\ - \x01\x12\x14\n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passp\ - hrase\x18\x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\ - \x20\x01(\x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\ - \rR\x10PassphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\ - \x06\x20\x01(\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\x07\ - \x20\x01(\rR\x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_device\ - \x18\x08\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\ - \x18\t\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\ + \x20\x01(\x08R\x0ehapticFeedback\x12P\n\rrecovery_type\x185\x20\x01(\x0e\ + 2+.hw.trezor.messages.management.RecoveryTypeR\x0crecoveryType\"C\n\x12B\ + ackupAvailability\x12\x10\n\x0cNotAvailable\x10\0\x12\x0c\n\x08Required\ + \x10\x01\x12\r\n\tAvailable\x10\x02\"7\n\x0eRecoveryStatus\x12\x0b\n\x07\ + Nothing\x10\0\x12\x0c\n\x08Recovery\x10\x01\x12\n\n\x06Backup\x10\x02\"\ + \xc2\x04\n\nCapability\x12\x1c\n\x12Capability_Bitcoin\x10\x01\x1a\x04\ + \x80\xa6\x1d\x01\x12\x1b\n\x17Capability_Bitcoin_like\x10\x02\x12\x16\n\ + \x12Capability_Binance\x10\x03\x12\x16\n\x12Capability_Cardano\x10\x04\ + \x12\x1b\n\x11Capability_Crypto\x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\ + \n\x0eCapability_EOS\x10\x06\x12\x17\n\x13Capability_Ethereum\x10\x07\ + \x12\x17\n\x0fCapability_Lisk\x10\x08\x1a\x02\x08\x01\x12\x15\n\x11Capab\ + ility_Monero\x10\t\x12\x12\n\x0eCapability_NEM\x10\n\x12\x15\n\x11Capabi\ + lity_Ripple\x10\x0b\x12\x16\n\x12Capability_Stellar\x10\x0c\x12\x14\n\ + \x10Capability_Tezos\x10\r\x12\x12\n\x0eCapability_U2F\x10\x0e\x12\x1b\n\ + \x11Capability_Shamir\x10\x0f\x1a\x04\x80\xa6\x1d\x01\x12!\n\x17Capabili\ + ty_ShamirGroups\x10\x10\x1a\x04\x80\xa6\x1d\x01\x12$\n\x1aCapability_Pas\ + sphraseEntry\x10\x11\x1a\x04\x80\xa6\x1d\x01\x12\x15\n\x11Capability_Sol\ + ana\x10\x12\x12!\n\x17Capability_Translations\x10\x13\x1a\x04\x80\xa6\ + \x1d\x01\x12\x1f\n\x15Capability_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\ + \x01\x12\x1b\n\x11Capability_Haptic\x10\x15\x1a\x04\x80\xa6\x1d\x01\x1a\ + \x04\xc8\xf3\x18\x01\"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpi\ + ry_ms\x18\x01\x20\x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\xc4\x04\n\rA\ + pplySettings\x12\x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\ + \x18\x01\x12\x14\n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_p\ + assphrase\x18\x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\ + \x04\x20\x01(\x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\ + \x01(\rR\x10PassphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\ + \x18\x06\x20\x01(\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\ + \x07\x20\x01(\rR\x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_devic\ + e\x18\x08\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_check\ + s\x18\t\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\ \x0csafetyChecks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14\ experimentalFeatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01\ (\x08R\x16hidePassphraseFromHost\x12'\n\x0fhaptic_feedback\x18\r\x20\x01\ @@ -11107,25 +11215,23 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ackupDevice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10membe\ r_threshold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_coun\ t\x18\x02\x20\x02(\rR\x0bmemberCount\"\x10\n\x0eEntropyRequest\"&\n\nEnt\ - ropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\xef\x04\ + ropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\x8d\x04\ \n\x0eRecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCoun\ t\x123\n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphrasePro\ tection\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\ \x12\x1e\n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\ \x14\n\x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\ - \x18\x06\x20\x01(\x08R\x0fenforceWordlist\x12T\n\x04type\x18\x08\x20\x01\ - (\x0e2@.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceTypeR\ - \x04type\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12^\n\ - \x04kind\x18\n\x20\x01(\x0e2:.hw.trezor.messages.management.RecoveryDevi\ - ce.RecoveryKind:\x0eNormalRecoveryR\x04kind\"Z\n\x12RecoveryDeviceType\ - \x12%\n!RecoveryDeviceType_ScrambledWords\x10\0\x12\x1d\n\x19RecoveryDev\ - iceType_Matrix\x10\x01\"H\n\x0cRecoveryKind\x12\x12\n\x0eNormalRecovery\ - \x10\0\x12\n\n\x06DryRun\x10\x01\x12\x18\n\x14UnlockRepeatedBackup\x10\ - \x02J\x04\x08\x07\x10\x08\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\ - \x01\x20\x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordReques\ - tTypeR\x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plai\ - n\x10\0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordRe\ - questType_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\ + \x18\x06\x20\x01(\x08R\x0fenforceWordlist\x12j\n\x0cinput_method\x18\x08\ + \x20\x01(\x0e2G.hw.trezor.messages.management.RecoveryDevice.RecoveryDev\ + iceInputMethodR\x0binputMethod\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\r\ + R\nu2fCounter\x12O\n\x04type\x18\n\x20\x01(\x0e2+.hw.trezor.messages.man\ + agement.RecoveryType:\x0eNormalRecoveryR\x04type\";\n\x19RecoveryDeviceI\ + nputMethod\x12\x12\n\x0eScrambledWords\x10\0\x12\n\n\x06Matrix\x10\x01J\ + \x04\x08\x07\x10\x08\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\ + \x20\x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordRequestTyp\ + eR\x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\ + \x10\0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordReq\ + uestType_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\ \x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\ \x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2\ FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\ @@ -11148,8 +11254,10 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckL\ evel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\ \x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\ - \x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03BB\n#com.sat\ - oshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\ + \x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03*H\n\x0cReco\ + veryType\x12\x12\n\x0eNormalRecovery\x10\0\x12\n\n\x06DryRun\x10\x01\x12\ + \x18\n\x14UnlockRepeatedBackup\x10\x02BB\n#com.satoshilabs.trezor.lib.pr\ + otobufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -11215,15 +11323,16 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(UnlockBootloader::generated_message_descriptor_data()); messages.push(SetBrightness::generated_message_descriptor_data()); messages.push(backup_device::Slip39Group::generated_message_descriptor_data()); - let mut enums = ::std::vec::Vec::with_capacity(10); + let mut enums = ::std::vec::Vec::with_capacity(11); enums.push(BackupType::generated_enum_descriptor_data()); enums.push(SafetyCheckLevel::generated_enum_descriptor_data()); enums.push(HomescreenFormat::generated_enum_descriptor_data()); + enums.push(RecoveryType::generated_enum_descriptor_data()); + enums.push(features::BackupAvailability::generated_enum_descriptor_data()); enums.push(features::RecoveryStatus::generated_enum_descriptor_data()); enums.push(features::Capability::generated_enum_descriptor_data()); enums.push(sd_protect::SdProtectOperationType::generated_enum_descriptor_data()); - enums.push(recovery_device::RecoveryDeviceType::generated_enum_descriptor_data()); - enums.push(recovery_device::RecoveryKind::generated_enum_descriptor_data()); + enums.push(recovery_device::RecoveryDeviceInputMethod::generated_enum_descriptor_data()); enums.push(word_request::WordRequestType::generated_enum_descriptor_data()); enums.push(reboot_to_bootloader::BootCommand::generated_enum_descriptor_data()); ::protobuf::reflect::GeneratedFileDescriptor::new_generated( diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index 24524b03ba..a99f8d54da 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -106,7 +106,7 @@ def test_backup_slip39_custom( assert device_handler.result() == "Seed successfully backed up" features = device_handler.features() assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.NotAvailable assert features.pin_protection is False assert features.passphrase_protection is False assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable diff --git a/tests/click_tests/test_recovery.py b/tests/click_tests/test_recovery.py index 5292bf8ce4..537cdaed7a 100644 --- a/tests/click_tests/test_recovery.py +++ b/tests/click_tests/test_recovery.py @@ -47,7 +47,7 @@ def prepare_recovery_and_evaluate( assert isinstance(device_handler.result(), messages.Success) features = device_handler.features() assert features.initialized is True - assert features.recovery_status == messages.RecoveryStatus.NoRecovery + assert features.recovery_status == messages.RecoveryStatus.Nothing @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/click_tests/test_repeated_backup.py b/tests/click_tests/test_repeated_backup.py index 6edca7e020..8361f24cb3 100644 --- a/tests/click_tests/test_repeated_backup.py +++ b/tests/click_tests/test_repeated_backup.py @@ -93,16 +93,16 @@ def test_repeated_backup( # great ... device is initialized, backup done, and we are not in recovery mode! assert device_handler.result() == "Initialized" features = device_handler.features() - assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.NotAvailable assert features.no_backup is False - assert features.recovery_status == messages.RecoveryStatus.NoRecovery + assert features.recovery_status == messages.RecoveryStatus.Nothing # run recovery to unlock backup device_handler.run( device.recover, - recovery_kind=messages.RecoveryKind.UnlockRepeatedBackup, + type=messages.RecoveryType.UnlockRepeatedBackup, ) recovery.confirm_recovery(debug, "recovery__title_unlock_repeated_backup") @@ -123,14 +123,11 @@ def test_repeated_backup( # we are now in recovery mode features = device_handler.features() - assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.Available assert features.no_backup is False - assert ( - features.recovery_status - == messages.RecoveryStatus.InUnlockRepeatedBackupRecovery - ) + assert features.recovery_status == messages.RecoveryStatus.Backup # at this point, the backup is unlocked... @@ -169,16 +166,16 @@ def test_repeated_backup( # we are not in recovery mode anymore, because we finished the backup process! features = device_handler.features() - assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.NotAvailable assert features.no_backup is False - assert features.recovery_status == messages.RecoveryStatus.NoRecovery + assert features.recovery_status == messages.RecoveryStatus.Nothing # try to unlock backup again... device_handler.run( device.recover, - recovery_kind=messages.RecoveryKind.UnlockRepeatedBackup, + type=messages.RecoveryType.UnlockRepeatedBackup, ) recovery.confirm_recovery(debug, "recovery__title_unlock_repeated_backup") @@ -188,7 +185,7 @@ def test_repeated_backup( recovery.enter_shares( debug, second_backup_2_of_3[-2:], - "recovery__title_unlock_repeated_backup", + "recovery__title_dry_run", "recovery__enter_backup", "recovery__unlock_repeated_backup", ) @@ -197,22 +194,19 @@ def test_repeated_backup( # we are now in recovery mode again! features = device_handler.features() - assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.Available assert features.no_backup is False - assert ( - features.recovery_status - == messages.RecoveryStatus.InUnlockRepeatedBackupRecovery - ) + assert features.recovery_status == messages.RecoveryStatus.Backup # but if we cancel the backup at this point... reset.cancel_backup(debug) # ...we are out of recovery mode! features = device_handler.features() - assert features.backup_type is messages.BackupType.Slip39_Basic + assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.NotAvailable assert features.no_backup is False - assert features.recovery_status == messages.RecoveryStatus.NoRecovery + assert features.recovery_status == messages.RecoveryStatus.Nothing diff --git a/tests/click_tests/test_reset_bip39.py b/tests/click_tests/test_reset_bip39.py index 9e990ee9a9..9e845f260b 100644 --- a/tests/click_tests/test_reset_bip39.py +++ b/tests/click_tests/test_reset_bip39.py @@ -72,7 +72,7 @@ def test_reset_bip39(device_handler: "BackgroundDeviceHandler"): assert device_handler.result() == "Initialized" features = device_handler.features() assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.NotAvailable assert features.pin_protection is False assert features.passphrase_protection is False assert features.backup_type is messages.BackupType.Bip39 diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index 1b518227c6..0e25d2a1da 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -139,7 +139,7 @@ def test_reset_slip39_advanced( features = device_handler.features() assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.NotAvailable assert features.pin_protection is False assert features.passphrase_protection is False assert features.backup_type is messages.BackupType.Slip39_Advanced_Extendable diff --git a/tests/click_tests/test_reset_slip39_basic.py b/tests/click_tests/test_reset_slip39_basic.py index ab90ebc391..83c01651d8 100644 --- a/tests/click_tests/test_reset_slip39_basic.py +++ b/tests/click_tests/test_reset_slip39_basic.py @@ -117,7 +117,7 @@ def test_reset_slip39_basic( assert device_handler.result() == "Initialized" features = device_handler.features() assert features.initialized is True - assert features.needs_backup is False + assert features.backup_availability == messages.BackupAvailability.NotAvailable assert features.pin_protection is False assert features.passphrase_protection is False assert features.backup_type is messages.BackupType.Slip39_Basic_Extendable diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py index ed1f1cf52f..c8d749a395 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py @@ -28,7 +28,7 @@ ) -def do_recover_legacy(client: Client, mnemonic: list[str], **kwargs: Any): +def do_recover_legacy(client: Client, mnemonic: list[str]): def input_callback(_): word, pos = client.debug.read_recovery_word() if pos != 0 and pos is not None: @@ -40,11 +40,10 @@ def input_callback(_): ret = device.recover( client, - recovery_kind=messages.RecoveryKind.DryRun, + type=messages.RecoveryType.DryRun, word_count=len(mnemonic), - type=messages.RecoveryDeviceType.ScrambledWords, + input_method=messages.RecoveryDeviceInputMethod.ScrambledWords, input_callback=input_callback, - **kwargs ) # if the call succeeded, check that all words have been used assert all(m is None for m in mnemonic) @@ -56,7 +55,7 @@ def do_recover_core(client: Client, mnemonic: list[str], mismatch: bool = False) client.watch_layout() IF = InputFlowBip39RecoveryDryRun(client, mnemonic, mismatch=mismatch) client.set_input_flow(IF.get()) - return device.recover(client, recovery_kind=messages.RecoveryKind.DryRun) + return device.recover(client, type=messages.RecoveryType.DryRun) def do_recover(client: Client, mnemonic: list[str], mismatch: bool = False): @@ -105,10 +104,10 @@ def test_uninitialized(client: Client): DRY_RUN_ALLOWED_FIELDS = ( - "kind", + "type", "word_count", "enforce_wordlist", - "type", + "input_method", "show_tutorial", ) @@ -131,7 +130,7 @@ def _make_bad_params(): yield field.name, True elif field.type == "string": yield field.name, "test" - elif field.type == "RecoveryKind": + elif field.type == "RecoveryType": yield field.name, 1 else: # Someone added a field to RecoveryDevice of a type that has no assigned @@ -142,10 +141,10 @@ def _make_bad_params(): @pytest.mark.parametrize("field_name, field_value", _make_bad_params()) def test_bad_parameters(client: Client, field_name: str, field_value: Any): msg = messages.RecoveryDevice( - kind=messages.RecoveryKind.DryRun, + type=messages.RecoveryType.DryRun, word_count=12, enforce_wordlist=True, - type=messages.RecoveryDeviceType.ScrambledWords, + input_method=messages.RecoveryDeviceInputMethod.ScrambledWords, ) setattr(msg, field_name, field_value) with pytest.raises( diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py b/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py index 12df18116f..fc50b26df0 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py @@ -211,7 +211,8 @@ def test_already_initialized(client: Client): ret = client.call_raw( messages.RecoveryDevice( - word_count=12, type=messages.RecoveryDeviceType.ScrambledWords + word_count=12, + input_method=messages.RecoveryDeviceInputMethod.ScrambledWords, ) ) assert isinstance(ret, messages.Failure) diff --git a/tests/device_tests/reset_recovery/test_reset_backup.py b/tests/device_tests/reset_recovery/test_reset_backup.py index 680b84d8d0..9c50c0b599 100644 --- a/tests/device_tests/reset_recovery/test_reset_backup.py +++ b/tests/device_tests/reset_recovery/test_reset_backup.py @@ -20,7 +20,7 @@ from trezorlib import device from trezorlib.debuglink import TrezorClientDebugLink as Client -from trezorlib.messages import BackupType +from trezorlib.messages import BackupAvailability, BackupType from ...common import WITH_MOCK_URANDOM from ...input_flows import ( @@ -85,7 +85,7 @@ def test_skip_backup_msg(client: Client, backup_type, backup_flow): ) assert client.features.initialized is True - assert client.features.needs_backup is True + assert client.features.backup_availability == BackupAvailability.Required assert client.features.unfinished_backup is False assert client.features.no_backup is False assert client.features.backup_type is backup_type @@ -94,7 +94,7 @@ def test_skip_backup_msg(client: Client, backup_type, backup_flow): client.init_device() assert client.features.initialized is True - assert client.features.needs_backup is False + assert client.features.backup_availability == BackupAvailability.NotAvailable assert client.features.unfinished_backup is False assert client.features.backup_type is backup_type @@ -119,7 +119,7 @@ def test_skip_backup_manual(client: Client, backup_type: BackupType, backup_flow ) assert client.features.initialized is True - assert client.features.needs_backup is True + assert client.features.backup_availability == BackupAvailability.Required assert client.features.unfinished_backup is False assert client.features.no_backup is False assert client.features.backup_type is backup_type @@ -128,7 +128,7 @@ def test_skip_backup_manual(client: Client, backup_type: BackupType, backup_flow client.init_device() assert client.features.initialized is True - assert client.features.needs_backup is False + assert client.features.backup_availability == BackupAvailability.NotAvailable assert client.features.unfinished_backup is False assert client.features.backup_type is backup_type diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py b/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py index 0492fda5d8..f5d16a20a7 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py @@ -53,7 +53,7 @@ def test_reset_device_skip_backup(client: Client): # Check if device is properly initialized ret = client.call_raw(messages.Initialize()) assert ret.initialized is True - assert ret.needs_backup is True + assert ret.backup_availability == messages.BackupAvailability.Required assert ret.unfinished_backup is False assert ret.no_backup is False @@ -120,7 +120,7 @@ def test_reset_device_skip_backup_break(client: Client): # Check if device is properly initialized ret = client.call_raw(messages.Initialize()) assert ret.initialized is True - assert ret.needs_backup is True + assert ret.backup_availability == messages.BackupAvailability.Required assert ret.unfinished_backup is False assert ret.no_backup is False @@ -131,7 +131,7 @@ def test_reset_device_skip_backup_break(client: Client): ret = client.call_raw(messages.Initialize()) assert isinstance(ret, messages.Features) assert ret.initialized is True - assert ret.needs_backup is False + assert ret.backup_availability == messages.BackupAvailability.NotAvailable assert ret.unfinished_backup is True assert ret.no_backup is False @@ -143,7 +143,7 @@ def test_reset_device_skip_backup_break(client: Client): ret = client.call_raw(messages.Initialize()) assert isinstance(ret, messages.Features) assert ret.initialized is True - assert ret.needs_backup is False + assert ret.backup_availability == messages.BackupAvailability.NotAvailable assert ret.unfinished_backup is True assert ret.no_backup is False diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t1.py b/tests/device_tests/reset_recovery/test_reset_bip39_t1.py index a43a8c2e38..1ad8725e7b 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t1.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t1.py @@ -80,7 +80,7 @@ def reset_device(client: Client, strength: int): # Check if device is properly initialized resp = client.call_raw(messages.Initialize()) assert resp.initialized is True - assert resp.needs_backup is False + assert resp.backup_availability == messages.BackupAvailability.NotAvailable assert resp.pin_protection is False assert resp.passphrase_protection is False @@ -177,7 +177,7 @@ def test_reset_device_256_pin(client: Client): # Check if device is properly initialized resp = client.call_raw(messages.Initialize()) assert resp.initialized is True - assert resp.needs_backup is False + assert resp.backup_availability == messages.BackupAvailability.NotAvailable assert resp.pin_protection is True assert resp.passphrase_protection is True diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py index f7235d6b5d..c05a972d58 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py @@ -57,7 +57,7 @@ def reset_device(client: Client, strength: int): # Check if device is properly initialized resp = client.call_raw(messages.Initialize()) assert resp.initialized is True - assert resp.needs_backup is False + assert resp.backup_availability == messages.BackupAvailability.NotAvailable assert resp.pin_protection is False assert resp.passphrase_protection is False assert resp.backup_type is messages.BackupType.Bip39 @@ -106,7 +106,7 @@ def test_reset_device_pin(client: Client): # Check if device is properly initialized resp = client.call_raw(messages.Initialize()) assert resp.initialized is True - assert resp.needs_backup is False + assert resp.backup_availability == messages.BackupAvailability.NotAvailable assert resp.pin_protection is True assert resp.passphrase_protection is True @@ -140,7 +140,7 @@ def test_reset_failed_check(client: Client): # Check if device is properly initialized resp = client.call_raw(messages.Initialize()) assert resp.initialized is True - assert resp.needs_backup is False + assert resp.backup_availability == messages.BackupAvailability.NotAvailable assert resp.pin_protection is False assert resp.passphrase_protection is False assert resp.backup_type is messages.BackupType.Bip39 diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py index 56e55d3544..2bea52908a 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py @@ -55,7 +55,9 @@ def reset(client: Client, strength: int = 128, skip_backup: bool = False) -> str # Check if device is properly initialized assert client.features.initialized is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) assert client.features.pin_protection is False assert client.features.passphrase_protection is False diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py index 1a0dfec671..8fd3b426b1 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py @@ -75,7 +75,9 @@ def reset(client: Client, strength: int = 128) -> list[str]: # Check if device is properly initialized assert client.features.initialized is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) assert client.features.pin_protection is False assert client.features.passphrase_protection is False assert client.features.backup_type is BackupType.Slip39_Advanced_Extendable diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py index 885a4aab0c..da3a1b0499 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py @@ -65,7 +65,9 @@ def reset(client: Client, strength: int = 128) -> list[str]: # Check if device is properly initialized assert client.features.initialized is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) assert client.features.pin_protection is False assert client.features.passphrase_protection is False assert client.features.backup_type is BackupType.Slip39_Basic_Extendable diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py index 9855381483..5940c9a4e5 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py @@ -20,7 +20,7 @@ from trezorlib import device from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure -from trezorlib.messages import BackupType +from trezorlib.messages import BackupAvailability, BackupType from ...common import EXTERNAL_ENTROPY, WITH_MOCK_URANDOM, generate_entropy from ...input_flows import InputFlowSlip39AdvancedResetRecovery @@ -58,7 +58,7 @@ def test_reset_device_slip39_advanced(client: Client): # Check if device is properly initialized assert client.features.initialized is True - assert client.features.needs_backup is False + assert client.features.backup_availability == BackupAvailability.NotAvailable assert client.features.pin_protection is False assert client.features.passphrase_protection is False assert client.features.backup_type is BackupType.Slip39_Advanced_Extendable diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py index e2db24ab76..ae64392333 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py @@ -22,7 +22,7 @@ from trezorlib import device from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure -from trezorlib.messages import BackupType +from trezorlib.messages import BackupAvailability, BackupType from ...common import EXTERNAL_ENTROPY, WITH_MOCK_URANDOM, generate_entropy from ...input_flows import InputFlowSlip39BasicResetRecovery @@ -57,7 +57,7 @@ def reset_device(client: Client, strength: int): # Check if device is properly initialized assert client.features.initialized is True - assert client.features.needs_backup is False + assert client.features.backup_availability == BackupAvailability.NotAvailable assert client.features.pin_protection is False assert client.features.passphrase_protection is False assert client.features.backup_type is BackupType.Slip39_Basic_Extendable diff --git a/tests/device_tests/test_msg_backup_device.py b/tests/device_tests/test_msg_backup_device.py index 1cce57d96f..aa233e8013 100644 --- a/tests/device_tests/test_msg_backup_device.py +++ b/tests/device_tests/test_msg_backup_device.py @@ -40,7 +40,7 @@ @pytest.mark.skip_t1b1 # TODO we want this for t1 too @pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC12) def test_backup_bip39(client: Client): - assert client.features.needs_backup is True + assert client.features.backup_availability == messages.BackupAvailability.Required with client: IF = InputFlowBip39Backup(client) @@ -50,7 +50,9 @@ def test_backup_bip39(client: Client): assert IF.mnemonic == MNEMONIC12 client.init_device() assert client.features.initialized is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) assert client.features.unfinished_backup is False assert client.features.no_backup is False assert client.features.backup_type is messages.BackupType.Bip39 @@ -65,7 +67,7 @@ def test_backup_slip39_basic(client: Client, click_info: bool): if click_info and client.model is models.T2B1: pytest.skip("click_info not implemented on T2B1") - assert client.features.needs_backup is True + assert client.features.backup_availability == messages.BackupAvailability.Required with client: IF = InputFlowSlip39BasicBackup(client, click_info) @@ -74,7 +76,9 @@ def test_backup_slip39_basic(client: Client, click_info: bool): client.init_device() assert client.features.initialized is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) assert client.features.unfinished_backup is False assert client.features.no_backup is False assert client.features.backup_type is messages.BackupType.Slip39_Basic @@ -93,7 +97,7 @@ def test_backup_slip39_advanced(client: Client, click_info: bool): if click_info and client.model is models.T2B1: pytest.skip("click_info not implemented on T2B1") - assert client.features.needs_backup is True + assert client.features.backup_availability == messages.BackupAvailability.Required with client: IF = InputFlowSlip39AdvancedBackup(client, click_info) @@ -102,7 +106,9 @@ def test_backup_slip39_advanced(client: Client, click_info: bool): client.init_device() assert client.features.initialized is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) assert client.features.unfinished_backup is False assert client.features.no_backup is False assert client.features.backup_type is messages.BackupType.Slip39_Advanced @@ -122,7 +128,7 @@ def test_backup_slip39_advanced(client: Client, click_info: bool): ids=["1_of_1", "2_of_2", "3_of_5"], ) def test_backup_slip39_custom(client: Client, share_threshold, share_count): - assert client.features.needs_backup is True + assert client.features.backup_availability == messages.BackupAvailability.Required with client: IF = InputFlowSlip39CustomBackup(client, share_count) @@ -133,7 +139,9 @@ def test_backup_slip39_custom(client: Client, share_threshold, share_count): client.init_device() assert client.features.initialized is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) assert client.features.unfinished_backup is False assert client.features.no_backup is False @@ -150,7 +158,9 @@ def test_no_backup_fails(client: Client): client.ensure_unlocked() assert client.features.initialized is True assert client.features.no_backup is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) # backup attempt should fail because no_backup=True with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): @@ -162,7 +172,7 @@ def test_no_backup_fails(client: Client): def test_interrupt_backup_fails(client: Client): client.ensure_unlocked() assert client.features.initialized is True - assert client.features.needs_backup is True + assert client.features.backup_availability == messages.BackupAvailability.Required assert client.features.unfinished_backup is False assert client.features.no_backup is False @@ -174,7 +184,9 @@ def test_interrupt_backup_fails(client: Client): # check that device state is as expected assert client.features.initialized is True - assert client.features.needs_backup is False + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) assert client.features.unfinished_backup is True assert client.features.no_backup is False diff --git a/tests/device_tests/test_repeated_backup.py b/tests/device_tests/test_repeated_backup.py index abe1a70b39..b27b9fd049 100644 --- a/tests/device_tests/test_repeated_backup.py +++ b/tests/device_tests/test_repeated_backup.py @@ -29,7 +29,7 @@ @pytest.mark.skip_t1b1 @WITH_MOCK_URANDOM def test_repeated_backup(client: Client): - assert client.features.needs_backup is True + assert client.features.backup_availability == messages.BackupAvailability.Required # initial device backup mnemonics = [] @@ -51,9 +51,7 @@ def test_repeated_backup(client: Client): client, mnemonics[:3], unlock_repeated_backup=True ) client.set_input_flow(IF.get()) - ret = device.recover( - client, recovery_kind=messages.RecoveryKind.UnlockRepeatedBackup - ) + ret = device.recover(client, type=messages.RecoveryType.UnlockRepeatedBackup) assert ret == messages.Success(message="Backup unlocked") # we can now perform another backup @@ -71,7 +69,7 @@ def test_repeated_backup(client: Client): @pytest.mark.skip_t1b1 @WITH_MOCK_URANDOM def test_repeated_backup_cancel(client: Client): - assert client.features.needs_backup is True + assert client.features.backup_availability == messages.BackupAvailability.Required # initial device backup mnemonics = [] @@ -93,9 +91,7 @@ def test_repeated_backup_cancel(client: Client): client, mnemonics[:3], unlock_repeated_backup=True ) client.set_input_flow(IF.get()) - ret = device.recover( - client, recovery_kind=messages.RecoveryKind.UnlockRepeatedBackup - ) + ret = device.recover(client, type=messages.RecoveryType.UnlockRepeatedBackup) assert ret == messages.Success(message="Backup unlocked") client.debug.wait_layout() diff --git a/tests/persistence_tests/test_shamir_persistence.py b/tests/persistence_tests/test_shamir_persistence.py index d2eae5ac90..aa958d49e7 100644 --- a/tests/persistence_tests/test_shamir_persistence.py +++ b/tests/persistence_tests/test_shamir_persistence.py @@ -44,7 +44,7 @@ def test_abort(core_emulator: Emulator): if debug.model is models.T3T1: pytest.skip("abort not supported on T3T1") - assert features.recovery_status == RecoveryStatus.NoRecovery + assert features.recovery_status == RecoveryStatus.Nothing device_handler.run(device.recover, pin_protection=False) @@ -56,7 +56,7 @@ def test_abort(core_emulator: Emulator): debug = _restart(device_handler, core_emulator) features = device_handler.features() - assert features.recovery_status == RecoveryStatus.InNormalRecovery + assert features.recovery_status == RecoveryStatus.Recovery # no waiting for layout because layout doesn't change assert "number of words" in debug.read_layout().text_content() @@ -72,7 +72,7 @@ def test_abort(core_emulator: Emulator): assert layout.main_component() == "Homescreen" features = device_handler.features() - assert features.recovery_status == RecoveryStatus.NoRecovery + assert features.recovery_status == RecoveryStatus.Nothing @core_only @@ -82,7 +82,7 @@ def test_recovery_single_reset(core_emulator: Emulator): features = device_handler.features() assert features.initialized is False - assert features.recovery_status == RecoveryStatus.NoRecovery + assert features.recovery_status == RecoveryStatus.Nothing device_handler.run(device.recover, pin_protection=False) @@ -92,7 +92,7 @@ def test_recovery_single_reset(core_emulator: Emulator): debug = _restart(device_handler, core_emulator) features = device_handler.features() - assert features.recovery_status == RecoveryStatus.InNormalRecovery + assert features.recovery_status == RecoveryStatus.Recovery # we need to enter the number of words again, that's a feature recovery.select_number_of_words(debug, wait=False) @@ -101,7 +101,7 @@ def test_recovery_single_reset(core_emulator: Emulator): features = device_handler.features() assert features.initialized is True - assert features.recovery_status == RecoveryStatus.NoRecovery + assert features.recovery_status == RecoveryStatus.Nothing @core_only @@ -119,7 +119,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): features = device_handler.features() assert features.initialized is False - assert features.recovery_status == RecoveryStatus.NoRecovery + assert features.recovery_status == RecoveryStatus.Nothing # enter recovery mode device_handler.run(device.recover, pin_protection=False) @@ -129,7 +129,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): # restart to get into stand-alone recovery debug = _restart(device_handler, core_emulator) features = device_handler.features() - assert features.recovery_status == RecoveryStatus.InNormalRecovery + assert features.recovery_status == RecoveryStatus.Recovery # enter number of words recovery.select_number_of_words(debug, wait=False) @@ -168,7 +168,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): # check that the recovery succeeded features = device_handler.features() assert features.initialized is True - assert features.recovery_status == RecoveryStatus.NoRecovery + assert features.recovery_status == RecoveryStatus.Nothing @core_only @@ -192,7 +192,7 @@ def enter_shares_with_restarts(debug: DebugLink) -> None: features = device_handler.features() assert features.initialized is False - assert features.recovery_status == RecoveryStatus.NoRecovery + assert features.recovery_status == RecoveryStatus.Nothing # start device and recovery device_handler.run(device.recover, pin_protection=False) @@ -205,7 +205,7 @@ def enter_shares_with_restarts(debug: DebugLink) -> None: # restart debug = _restart(device_handler, core_emulator) features = device_handler.features() - assert features.recovery_status == RecoveryStatus.InNormalRecovery + assert features.recovery_status == RecoveryStatus.Recovery # enter the number of words again, that's a feature! recovery.select_number_of_words(debug, wait=False) @@ -217,4 +217,4 @@ def enter_shares_with_restarts(debug: DebugLink) -> None: features = device_handler.features() assert features.initialized is True - assert features.recovery_status == RecoveryStatus.NoRecovery + assert features.recovery_status == RecoveryStatus.Nothing diff --git a/tests/upgrade_tests/test_firmware_upgrades.py b/tests/upgrade_tests/test_firmware_upgrades.py index 5abd379812..7b9d393c36 100644 --- a/tests/upgrade_tests/test_firmware_upgrades.py +++ b/tests/upgrade_tests/test_firmware_upgrades.py @@ -21,7 +21,13 @@ from shamir_mnemonic import shamir from trezorlib import btc, debuglink, device, exceptions, fido, models -from trezorlib.messages import ApplySettings, BackupType, RecoveryStatus, Success +from trezorlib.messages import ( + ApplySettings, + BackupAvailability, + BackupType, + RecoveryStatus, + Success, +) from trezorlib.tools import H_ from ..common import MNEMONIC_SLIP39_BASIC_20_3of6, MNEMONIC_SLIP39_BASIC_20_3of6_SECRET @@ -197,7 +203,7 @@ def asserts(client: "Client"): assert not client.features.passphrase_protection assert client.features.initialized assert client.features.label == LABEL - assert not client.features.needs_backup + assert client.features.backup_availability == BackupAvailability.NotAvailable assert not client.features.unfinished_backup assert not client.features.no_backup @@ -228,7 +234,7 @@ def asserts(client: "Client"): assert not client.features.passphrase_protection assert client.features.initialized assert client.features.label == LABEL - assert client.features.needs_backup + assert client.features.backup_availability == BackupAvailability.Required assert not client.features.unfinished_backup assert not client.features.no_backup @@ -260,7 +266,7 @@ def asserts(client: "Client"): assert not client.features.passphrase_protection assert client.features.initialized assert client.features.label == LABEL - assert not client.features.needs_backup + assert client.features.backup_availability == BackupAvailability.NotAvailable assert not client.features.unfinished_backup assert client.features.no_backup @@ -291,7 +297,7 @@ def test_upgrade_shamir_recovery(gen: str, tag: Optional[str]): with EmulatorWrapper(gen, tag) as emu, BackgroundDeviceHandler( emu.client ) as device_handler: - assert emu.client.features.recovery_status == RecoveryStatus.NoRecovery + assert emu.client.features.recovery_status == RecoveryStatus.Nothing emu.client.watch_layout(True) debug = device_handler.debuglink() @@ -312,7 +318,7 @@ def test_upgrade_shamir_recovery(gen: str, tag: Optional[str]): with EmulatorWrapper(gen, storage=storage) as emu: assert device_id == emu.client.features.device_id - assert emu.client.features.recovery_status == RecoveryStatus.InNormalRecovery + assert emu.client.features.recovery_status == RecoveryStatus.Recovery debug = emu.client.debug emu.client.watch_layout(True) @@ -361,19 +367,21 @@ def test_upgrade_shamir_backup(gen: str, tag: Optional[str]): emu.client.use_passphrase("TREZOR") address_passphrase = btc.get_address(emu.client, "Bitcoin", PATH) - assert emu.client.features.needs_backup + assert emu.client.features.backup_availability == BackupAvailability.Required storage = emu.get_storage() with EmulatorWrapper(gen, storage=storage) as emu: assert emu.client.features.device_id == device_id # Create a backup of the encrypted master secret. - assert emu.client.features.needs_backup + assert emu.client.features.backup_availability == BackupAvailability.Required with emu.client: IF = InputFlowSlip39BasicBackup(emu.client, False) emu.client.set_input_flow(IF.get()) device.backup(emu.client) - assert not emu.client.features.needs_backup + assert ( + emu.client.features.backup_availability == BackupAvailability.NotAvailable + ) # Check the backup type. assert emu.client.features.backup_type == backup_type From cab6fd0799264efdc421f5d8dd83fead5d278f57 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 30 May 2024 12:08:18 +0200 Subject: [PATCH 218/626] refactor(core/wire): move restarting control to handle_single_message that way it is possible to avoid restarting if we failed to find a handler for a message (makes it faster with no ill effects because "failed to find handler" (a) shouldn't happen and (b) doesn't cause any significant fragmentation) --- core/src/trezor/wire/__init__.py | 52 ++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/core/src/trezor/wire/__init__.py b/core/src/trezor/wire/__init__.py index fae3de0c81..4c67a2ae8d 100644 --- a/core/src/trezor/wire/__init__.py +++ b/core/src/trezor/wire/__init__.py @@ -89,20 +89,19 @@ def wrap_protobuf_load( async def _handle_single_message( ctx: context.Context, msg: codec_v1.Message, use_workflow: bool -) -> codec_v1.Message | None: +) -> bool: """Handle a message that was loaded from USB by the caller. Find the appropriate handler, run it and write its result on the wire. In case a problem is encountered at any point, write the appropriate error on the wire. - If the workflow finished normally or with an error, the return value is None. - - If an unexpected message had arrived on the wire while the workflow was processing, - the workflow is shut down with an `UnexpectedMessage` exception. This is not - considered an "error condition" to return over the wire -- instead the message - is processed as if starting a new workflow. - In such case, the `UnexpectedMessage` is caught and the message is returned - to the caller. It will then be processed in the next iteration of the message loop. + The return value indicates whether to override the default restarting behavior. If + `False` is returned, the caller is allowed to clear the loop and restart the + MicroPython machine (see `session.py`). This would lose all state and incurs a cost + in terms of repeated startup time. When handling the message didn't cause any + significant fragmentation (e.g., if decoding the message was skipped), or if + the type of message is supposed to be optimized and not disrupt the running state, + this function will return `True`. """ if __debug__: try: @@ -126,7 +125,7 @@ async def _handle_single_message( # Handlers are allowed to exception out. In that case, we can skip decoding # and return the error. await ctx.write(failure(exc)) - return None + return True if msg.type in workflow.ALLOW_WHILE_LOCKED: workflow.autolock_interrupts_workflow = False @@ -158,16 +157,21 @@ async def _handle_single_message( # results of the handler. res_msg = await task - except context.UnexpectedMessage as exc: + except context.UnexpectedMessage: # Workflow was trying to read a message from the wire, and # something unexpected came in. See Context.read() for # example, which expects some particular message and raises # UnexpectedMessage if another one comes in. - # In order not to lose the message, we return it to the caller. - # TODO: - # We might handle only the few common cases here, like - # Initialize and Cancel. - return exc.msg + # + # We process the unexpected message by aborting the current workflow and + # possibly starting a new one, initiated by that message. (The main usecase + # being, the host does not finish the workflow, we want other callers to + # be able to do their own thing.) + # + # The message is stored in the exception, which we re-raise for the caller + # to process. It is not a standard exception that should be logged and a result + # sent to the wire. + raise except BaseException as exc: # Either: @@ -189,7 +193,9 @@ async def _handle_single_message( # perform the write outside the big try-except block, so that usb write # problem bubbles up await ctx.write(res_msg) - return None + + # Look into `AVOID_RESTARTING_FOR` to see if this message should avoid restarting. + return msg.type in AVOID_RESTARTING_FOR async def handle_session( @@ -230,9 +236,16 @@ async def handle_session( next_msg = None try: - next_msg = await _handle_single_message( + do_not_restart = await _handle_single_message( ctx, msg, use_workflow=not is_debug_session ) + except context.UnexpectedMessage as unexpected: + # The workflow was interrupted by an unexpected message. We need to + # process it as if it was a new message... + next_msg = unexpected.msg + # ...and we must not restart because that would lose the message. + do_not_restart = True + continue except Exception as exc: # Log and ignore. The session handler can only exit explicitly in the # following finally block. @@ -246,8 +259,7 @@ async def handle_session( # workflow running on wire. utils.unimport_end(modules) - if next_msg is None and msg.type not in AVOID_RESTARTING_FOR: - # Shut down the loop if there is no next message waiting. + if not do_not_restart: # Let the session be restarted from `main`. loop.clear() return # pylint: disable=lost-exception From ed584098882746a8357f916bce74be7a636ea85c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 4 Jun 2024 12:47:09 +0200 Subject: [PATCH 219/626] chore(core): update tests --- core/embed/rust/librust_qstr.h | 1 - .../embed/rust/src/ui/model_mercury/layout.rs | 21 ++--- core/mocks/generated/trezorui2.pyi | 4 +- core/src/apps/base.py | 4 +- .../management/recovery_device/homescreen.py | 3 +- .../src/trezor/ui/layouts/mercury/recovery.py | 10 +-- tests/click_tests/recovery.py | 24 +++-- tests/click_tests/reset.py | 9 +- .../click_tests/test_backup_slip39_custom.py | 2 +- tests/click_tests/test_recovery.py | 8 +- tests/click_tests/test_repeated_backup.py | 13 ++- tests/device_tests/test_repeated_backup.py | 90 ++++++++++++++++++- tests/ui_tests/fixtures.json | 54 +++++++++-- 13 files changed, 200 insertions(+), 43 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 17dbfa03b4..ece0cbd029 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -212,7 +212,6 @@ static void _librust_qstrs(void) { MP_QSTR_device_name__change_template; MP_QSTR_device_name__title; MP_QSTR_disable_animation; - MP_QSTR_dry_run; MP_QSTR_encode; MP_QSTR_encoded_length; MP_QSTR_entropy__send; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 76e1f3e246..0f6c920cd3 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -488,6 +488,9 @@ impl ConfirmBlobParams { } } +const RECOVERY_TYPE_DRY_RUN: u32 = 1; +const RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP: u32 = 2; + extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1250,15 +1253,15 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let _title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let _button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; + let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; let _info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; let paragraphs = Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]); - let notification: TString = if dry_run { - TR::recovery__title_dry_run.into() - } else { - TR::recovery__title.into() + let notification = match recovery_type { + RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run.into(), + RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP => TR::recovery__title_dry_run.into(), + _ => TR::recovery__title.into(), }; let content = SwipeUpScreen::new(paragraphs); @@ -1274,10 +1277,8 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let _dry_run: bool = kwargs.get(Qstr::MP_QSTR_dry_run)?.try_into()?; - let obj = LayoutObj::new(Frame::left_aligned( - TR::recovery__select_num_of_words.into(), + TR::recovery__num_of_words.into(), SelectWordCount::new(), ))?; Ok(obj.into()) @@ -1903,7 +1904,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// description: str, /// button: str, - /// dry_run: bool, + /// recovery_type: RecoveryType, /// info_button: bool = False, /// ) -> LayoutObj[UiResult]: /// """Device recovery homescreen.""" @@ -1911,7 +1912,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def select_word_count( /// *, - /// dry_run: bool, + /// recovery_type: RecoveryType, /// ) -> LayoutObj[int | str]: # TT returns int /// """Select mnemonic word count from (12, 18, 20, 24, 33).""" Qstr::MP_QSTR_select_word_count => obj_fn_kw!(0, new_select_word_count).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index ddb7c3c70d..f58b64cce9 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -449,7 +449,7 @@ def confirm_recovery( title: str, description: str, button: str, - dry_run: bool, + recovery_type: RecoveryType, info_button: bool = False, ) -> LayoutObj[UiResult]: """Device recovery homescreen.""" @@ -458,7 +458,7 @@ def confirm_recovery( # rust/src/ui/model_mercury/layout.rs def select_word_count( *, - dry_run: bool, + recovery_type: RecoveryType, ) -> LayoutObj[int | str]: # TT returns int """Select mnemonic word count from (12, 18, 20, 24, 33).""" diff --git a/core/src/apps/base.py b/core/src/apps/base.py index f8779a0d90..36de3a71e5 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -352,6 +352,8 @@ async def handle_CancelAuthorization(msg: CancelAuthorization) -> protobuf.Messa def set_homescreen() -> None: import storage.recovery as storage_recovery + from apps.common import backup + set_default = workflow.set_default # local_cache_attribute if storage_cache.is_set(storage_cache.APP_COMMON_BUSY_DEADLINE_MS): @@ -369,7 +371,7 @@ def set_homescreen() -> None: set_default(screensaver, restart=True) - elif storage_recovery.is_in_progress(): + elif storage_recovery.is_in_progress() or backup.repeated_backup_enabled(): from apps.management.recovery_device.homescreen import recovery_homescreen set_default(recovery_homescreen) diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 68eb7891d6..3455ccab77 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -21,7 +21,6 @@ async def recovery_homescreen() -> None: from apps.homescreen import homescreen if backup.repeated_backup_enabled(): - storage_recovery.end_progress() await _continue_repeated_backup() elif not storage_recovery.is_in_progress(): workflow.set_default(homescreen) @@ -208,6 +207,8 @@ async def _finish_recovery_unlock_repeated_backup( result = _check_secret_against_stored_secret(secret, is_slip39, backup_type) + storage_recovery.end_progress() + if result: backup.activate_repeated_backup() return Success(message="Backup unlocked") diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index f49ef08f45..89d411b7b8 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -2,7 +2,7 @@ import trezorui2 from trezor import TR -from trezor.enums import ButtonRequestType +from trezor.enums import ButtonRequestType, RecoveryType from ..common import interact from . import RustLayout, raise_if_not_confirmed @@ -25,8 +25,8 @@ async def _is_confirmed_info( return result is CONFIRMED -async def request_word_count(dry_run: bool) -> int: - selector = RustLayout(trezorui2.select_word_count(dry_run=dry_run)) +async def request_word_count(recovery_type: RecoveryType) -> int: + selector = RustLayout(trezorui2.select_word_count(recovery_type=recovery_type)) count = await interact(selector, "word_count", ButtonRequestType.MnemonicWordCount) return int(count) @@ -116,7 +116,7 @@ async def continue_recovery( text: str, subtext: str | None, info_func: Callable | None, - dry_run: bool, + recovery_type: RecoveryType, show_info: bool = False, # unused on TT ) -> bool: from ..common import button_request @@ -133,7 +133,7 @@ async def continue_recovery( description=description, button=button_label, info_button=info_func is not None, - dry_run=dry_run, + recovery_type=recovery_type, ) ) diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 3f46fede21..c6e31027bc 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -105,11 +105,18 @@ def select_number_of_words( raise ValueError("Unknown model") if unlock_repeated_backup: - TR.assert_in(layout.text_content(), "recovery__enter_backup") + if debug.model in (models.T2B1,): + TR.assert_in(layout.text_content(), "recovery__enter_backup") + else: + TR.assert_in(layout.text_content(), "recovery__only_first_n_letters") elif num_of_words in (20, 33): TR.assert_in_multiple( layout.text_content(), - ["recovery__enter_any_share", "recovery__only_first_n_letters"], + [ + "recovery__enter_backup", + "recovery__enter_any_share", + "recovery__only_first_n_letters", + ], ) else: # BIP-39 TR.assert_in_multiple( @@ -125,14 +132,14 @@ def enter_share( before_title: str = "recovery__title_recover", ) -> "LayoutContent": if debug.model in (models.T2B1,): - TR.assert_in(debug.read_layout().title(), "recovery__title_recover") + TR.assert_in(debug.read_layout().title(), before_title) layout = debug.wait_layout() for _ in range(layout.page_count()): layout = debug.press_right(wait=True) elif debug.model in (models.T3T1,): layout = debug.swipe_up(wait=True) else: - TR.assert_in(debug.read_layout().title(), "recovery__title_recover") + TR.assert_in(debug.read_layout().title(), before_title) layout = debug.click(buttons.OK, wait=True) assert "MnemonicKeyboard" in layout.all_components() @@ -152,7 +159,12 @@ def enter_shares( ) -> None: TR.assert_in_multiple( debug.read_layout().text_content(), - ["recovery__enter_any_share", "recovery__only_first_n_letters", text], + [ + "recovery__enter_backup", + "recovery__enter_any_share", + "recovery__only_first_n_letters", + text, + ], ) for index, share in enumerate(shares): enter_share( @@ -160,7 +172,7 @@ def enter_shares( ) if index < len(shares) - 1: # FIXME: when ui-t3t1 done for shamir, we want to check the template below - TR.assert_in(debug.read_layout().title(), "recovery__title_recover") + TR.assert_in(debug.read_layout().title(), enter_share_before_title) # TR.assert_in( # debug.read_layout().text_content(), # "recovery__x_of_y_entered_template", diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index ea82c538d2..475af9a2f8 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -41,15 +41,18 @@ def confirm_read(debug: "DebugLink", middle_r: bool = False) -> None: debug.press_right(wait=True) -def cancel_backup(debug: "DebugLink", middle_r: bool = False) -> None: +def cancel_backup( + debug: "DebugLink", middle_r: bool = False, confirm: bool = False +) -> None: if debug.model in (models.T2T1,): debug.click(buttons.CANCEL, wait=True) debug.click(buttons.CANCEL, wait=True) elif debug.model in (models.T3T1,): debug.click(buttons.CORNER_BUTTON, wait=True) debug.click(buttons.VERTICAL_MENU[0], wait=True) - debug.swipe_up(wait=True) - debug.click(buttons.TAP_TO_CONFIRM) + if confirm: + debug.swipe_up(wait=True) + debug.click(buttons.TAP_TO_CONFIRM) elif debug.model in (models.T2B1,): debug.press_left(wait=True) debug.press_left(wait=True) diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index a99f8d54da..66c0d80338 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -62,7 +62,7 @@ def test_backup_slip39_custom( reset.confirm_new_wallet(debug) # cancel back up - reset.cancel_backup(debug) + reset.cancel_backup(debug, confirm=True) assert device_handler.result() == "Initialized" diff --git a/tests/click_tests/test_recovery.py b/tests/click_tests/test_recovery.py index 537cdaed7a..eab50c2d5f 100644 --- a/tests/click_tests/test_recovery.py +++ b/tests/click_tests/test_recovery.py @@ -19,7 +19,7 @@ import pytest -from trezorlib import device, messages +from trezorlib import device, messages, models from ..common import MNEMONIC12, MNEMONIC_SLIP39_BASIC_20_3of6 from . import recovery @@ -54,6 +54,8 @@ def prepare_recovery_and_evaluate( def test_recovery_slip39_basic(device_handler: "BackgroundDeviceHandler"): with prepare_recovery_and_evaluate(device_handler) as debug: recovery.confirm_recovery(debug) + if debug.model is models.T2B1: + recovery.confirm_recovery(debug) recovery.select_number_of_words(debug) recovery.enter_shares(debug, MNEMONIC_SLIP39_BASIC_20_3of6) @@ -64,6 +66,8 @@ def test_recovery_slip39_basic(device_handler: "BackgroundDeviceHandler"): def test_recovery_bip39(device_handler: "BackgroundDeviceHandler"): with prepare_recovery_and_evaluate(device_handler) as debug: recovery.confirm_recovery(debug) + if debug.model is models.T2B1: + recovery.confirm_recovery(debug) recovery.select_number_of_words(debug, num_of_words=12) recovery.enter_seed(debug, MNEMONIC12.split()) @@ -74,6 +78,8 @@ def test_recovery_bip39(device_handler: "BackgroundDeviceHandler"): def test_recovery_bip39_previous_word(device_handler: "BackgroundDeviceHandler"): with prepare_recovery_and_evaluate(device_handler) as debug: recovery.confirm_recovery(debug) + if debug.model is models.T2B1: + recovery.confirm_recovery(debug) recovery.select_number_of_words(debug, num_of_words=12) seed_words: list[str] = MNEMONIC12.split() diff --git a/tests/click_tests/test_repeated_backup.py b/tests/click_tests/test_repeated_backup.py index 8361f24cb3..8568e1aff8 100644 --- a/tests/click_tests/test_repeated_backup.py +++ b/tests/click_tests/test_repeated_backup.py @@ -60,14 +60,17 @@ def test_repeated_backup( # let's make a 1-of-1 backup to start with... + assert debug.model is not None + model_name: str = debug.model.internal_name + # shares=1 - reset.set_selection(debug, buttons.RESET_MINUS, 5 - 1) + reset.set_selection(debug, buttons.reset_minus(model_name), 5 - 1) # confirm checklist reset.confirm_read(debug) # threshold=1 - reset.set_selection(debug, buttons.RESET_PLUS, 0) + reset.set_selection(debug, buttons.reset_plus(model_name), 0) # confirm checklist reset.confirm_read(debug) @@ -133,17 +136,19 @@ def test_repeated_backup( # ... so let's try to do a 2-of-3 backup + debug.wait_layout() + # confirm checklist reset.confirm_read(debug) # shares=3 - reset.set_selection(debug, buttons.RESET_MINUS, 5 - 3) + reset.set_selection(debug, buttons.reset_minus(model_name), 5 - 3) # confirm checklist reset.confirm_read(debug) # threshold=2 - reset.set_selection(debug, buttons.RESET_MINUS, 1) + reset.set_selection(debug, buttons.reset_minus(model_name), 1) # confirm checklist reset.confirm_read(debug) diff --git a/tests/device_tests/test_repeated_backup.py b/tests/device_tests/test_repeated_backup.py index b27b9fd049..d236a78145 100644 --- a/tests/device_tests/test_repeated_backup.py +++ b/tests/device_tests/test_repeated_backup.py @@ -21,7 +21,7 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import Cancelled, TrezorFailure -from ..common import WITH_MOCK_URANDOM, MNEMONIC_SLIP39_BASIC_20_3of6 +from ..common import TEST_ADDRESS_N, WITH_MOCK_URANDOM, MNEMONIC_SLIP39_BASIC_20_3of6 from ..input_flows import InputFlowSlip39BasicBackup, InputFlowSlip39BasicRecoveryDryRun @@ -30,6 +30,7 @@ @WITH_MOCK_URANDOM def test_repeated_backup(client: Client): assert client.features.backup_availability == messages.BackupAvailability.Required + assert client.features.recovery_status == messages.RecoveryStatus.Nothing # initial device backup mnemonics = [] @@ -42,6 +43,10 @@ def test_repeated_backup(client: Client): assert len(mnemonics) == 5 # cannot backup, since we already just did that! + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) + assert client.features.recovery_status == messages.RecoveryStatus.Nothing with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): device.backup(client) @@ -53,6 +58,10 @@ def test_repeated_backup(client: Client): client.set_input_flow(IF.get()) ret = device.recover(client, type=messages.RecoveryType.UnlockRepeatedBackup) assert ret == messages.Success(message="Backup unlocked") + assert ( + client.features.backup_availability == messages.BackupAvailability.Available + ) + assert client.features.recovery_status == messages.RecoveryStatus.Backup # we can now perform another backup with client: @@ -61,6 +70,10 @@ def test_repeated_backup(client: Client): device.backup(client) # the backup feature is locked again... + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) + assert client.features.recovery_status == messages.RecoveryStatus.Nothing with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): device.backup(client) @@ -70,6 +83,7 @@ def test_repeated_backup(client: Client): @WITH_MOCK_URANDOM def test_repeated_backup_cancel(client: Client): assert client.features.backup_availability == messages.BackupAvailability.Required + assert client.features.recovery_status == messages.RecoveryStatus.Nothing # initial device backup mnemonics = [] @@ -82,6 +96,10 @@ def test_repeated_backup_cancel(client: Client): assert len(mnemonics) == 5 # cannot backup, since we already just did that! + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) + assert client.features.recovery_status == messages.RecoveryStatus.Nothing with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): device.backup(client) @@ -93,6 +111,10 @@ def test_repeated_backup_cancel(client: Client): client.set_input_flow(IF.get()) ret = device.recover(client, type=messages.RecoveryType.UnlockRepeatedBackup) assert ret == messages.Success(message="Backup unlocked") + assert ( + client.features.backup_availability == messages.BackupAvailability.Available + ) + assert client.features.recovery_status == messages.RecoveryStatus.Backup client.debug.wait_layout() @@ -101,6 +123,72 @@ def test_repeated_backup_cancel(client: Client): with pytest.raises(Cancelled): client.call(messages.Cancel()) + client.refresh_features() + # the backup feature is locked again... + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) + assert client.features.recovery_status == messages.RecoveryStatus.Nothing + with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): + device.backup(client) + + +@pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6) +@pytest.mark.skip_t1b1 +@WITH_MOCK_URANDOM +def test_repeated_backup_send_disallowed_message(client: Client): + assert client.features.backup_availability == messages.BackupAvailability.Required + assert client.features.recovery_status == messages.RecoveryStatus.Nothing + + # initial device backup + mnemonics = [] + with client: + IF = InputFlowSlip39BasicBackup(client, False) + client.set_input_flow(IF.get()) + device.backup(client) + mnemonics = IF.mnemonics + + assert len(mnemonics) == 5 + + # cannot backup, since we already just did that! + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) + assert client.features.recovery_status == messages.RecoveryStatus.Nothing with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): device.backup(client) + + # unlock repeated backup by entering 3 of the 5 shares we have got + with client: + IF = InputFlowSlip39BasicRecoveryDryRun( + client, mnemonics[:3], unlock_repeated_backup=True + ) + client.set_input_flow(IF.get()) + ret = device.recover(client, type=messages.RecoveryType.UnlockRepeatedBackup) + assert ret == messages.Success(message="Backup unlocked") + assert ( + client.features.backup_availability == messages.BackupAvailability.Available + ) + assert client.features.recovery_status == messages.RecoveryStatus.Backup + + client.debug.wait_layout() + + # send a GetAddress message + + resp = client.call_raw( + messages.GetAddress( + coin_name="Testnet", + address_n=TEST_ADDRESS_N, + show_display=True, + script_type=messages.InputScriptType.SPENDADDRESS, + ) + ) + assert isinstance(resp, messages.Failure) + assert "not allowed" in resp.message + + assert client.features.backup_availability == messages.BackupAvailability.Available + assert client.features.recovery_status == messages.RecoveryStatus.Backup + + # we are still on the confirmation screen! + assert client.debug.read_layout().text_content() == "Create additional backup?" diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index be1dd8a58d..a14f27ac14 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -774,6 +774,7 @@ "T2B1_cs_test_recovery.py::test_recovery_bip39": "b39bed5f9adcbcfb54a2c6da36aa1f694cd3fa17c94a262ce1f53000084852f3", "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "48dde6e5b926c445947b344bef1fff91f4016f4033a5b5693837d8e5757cd1a1", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "78a2ce9924b7758a97853d1ab27bbbc2f8be1dfe9f2d14014de803aa0bb62d30", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "36c95325fbb7fa1824a3a73f5c06db616bebea55519a045c87a676201c8f2944", "T2B1_cs_test_reset_bip39.py::test_reset_bip39": "e6ab28c1220196c73e1b73d59545788da3b71deea10189e31b3e2359d22017d5", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b385569c40eca2a1aa8538d03cdc9d639f98fbab78cf92aadb3ea6d2a6545eca", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b74fd6a67276594a8cd46fe94e9bd42913850dc90969977586d4f380587ebd0c", @@ -819,6 +820,7 @@ "T2B1_de_test_recovery.py::test_recovery_bip39": "4982804edb96e55b635b24f64ee07e5ab98d4a7c5aa999870c318d49f64e6bce", "T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "ae7d2ea0bf92eb7da2a2604f285687995849b267318ac5229f663784c448fcf1", "T2B1_de_test_recovery.py::test_recovery_slip39_basic": "26f47dfda39e927f17ded8054a2e892a24d56d0c04fead1e0ac30160c20d5f66", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "a6a47cb4922ad5b322212b81acfe2767e4a449e492ce60d1894088c26a86c4aa", "T2B1_de_test_reset_bip39.py::test_reset_bip39": "21b8c8ac69aaca28bbc7a8e64f2fa412be949dd61581567c9c9217400fe87392", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "8b7ae72358d1329f82ccaaa9a81b1c83ffa0585a2f345661b7b9299130a709e3", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "45a70b97b6285db99a3e826c2f243126c06ed04d1a544f48ee41275352291368", @@ -827,6 +829,8 @@ "T2B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", "T2B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", "T2B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", +"T2B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", +"T2B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", "T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a67277433c9ad7c59332178eb5f280711273eb8555c1edf40cc523896c2d4425", "T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "ad5313372d860f1bc3462da66e43b8c12226fc6b392ed48535c39f69f9bc4d38", "T2B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "e73c51702985c2970a12ce1caa885cba2e7619e42dbcbfec52544af60b7fddfd", @@ -864,9 +868,7 @@ "T2B1_en_test_recovery.py::test_recovery_bip39": "fd055e526b66f7d0eb3b6968f3889eb4a3e589fd3700b6688e68ea5d6c0c18dd", "T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "10c4d76d4f636878540dcb6ba258a2d28489012298cf273af3808bcadbe38754", "T2B1_en_test_recovery.py::test_recovery_slip39_basic": "771d9bd01496b0fea72d5faca60fcc564e83d4a69e5fe02770238071dec7274d", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "cbdb2fc033538e4995a9ba5fc658a2e58936c209e5165244f3f13d65de7125bd", -"T2B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", -"T2B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "27c7fb9c9a9428f51060c4c4516b38f0c98e17360357576c55f7e3853adebdc6", "T2B1_en_test_reset_bip39.py::test_reset_bip39": "6d229eb212360ffad2bc72154588ec82f699ae6d0cbbf87fa950dd4c8e2ea9c9", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5cd7eb5b96673f7f9dc066d2860ef4ab42926488a5117a2bc89caa667c3916e1", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cb815314c0607f0d6f678f5a9b9b99d6e50cbb670a83b3463ad2bf8635f9319a", @@ -912,6 +914,7 @@ "T2B1_es_test_recovery.py::test_recovery_bip39": "d836420b4c87a47c4f6d764fa87917d64f40b9cd8154c1b0739e76c9b4226712", "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "fb6366eb8f5862120aaecae5567e934546bf06bce43fce91305f4130b3e47640", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "40d49a424c770eae159c3ffa8d22709f014caf940e6600861c18e78538f5edb6", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "cad5adb87bf7e7904b43c6d2b94b06f3416eb7af549a1b6681b0a52c6d5826b2", "T2B1_es_test_reset_bip39.py::test_reset_bip39": "4c7a5cc6b7a02d600995bd5f4e0adf2fd2668eefcfb95bba353b693c9dbecf76", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "eaf165395e06b064f0a7c04443b94d1cf3c820ce2cdb84af79572765d06ff701", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a6a4f83b123f5c17374408570b224661c6d9475973d6fe9e650f9a0f4bcc4417", @@ -957,6 +960,7 @@ "T2B1_fr_test_recovery.py::test_recovery_bip39": "7345536d86da59f83e498ac6fc6ee42f2b5c9ead902c41caae6d08c57f6129b6", "T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "2293f0baf03ca5850988b736c0e6e684c116291a54108a77134a3e1dc16405f7", "T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "af734abbec86878d07875a03fd264547e00ad61d11999d4f1ab5582ff46b2e15", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "876b97800c34e78d911e3cc6b9babdeff31c7f8587fa51f044f332d8c81e80c0", "T2B1_fr_test_reset_bip39.py::test_reset_bip39": "ad5080eb9cd9d9b3ca2b3b6f966963836d0771eea4f747c443965b6dd3a55b8b", "T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "7b5796f5dbaea0517898616bc3a273b658e8b22cbd381bc6d63192eda5445da3", "T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "08a6bd98addc455004a97f148f85f22868640279ab222c9f65755f950be8108e", @@ -7902,6 +7906,7 @@ "T2T1_cs_test_recovery.py::test_recovery_bip39": "e8fc42659087a3b41e0e2db70cb3211895478d20fe7a775675ca6e2c06c1e77a", "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9fce49fe5cd46312732a8643f9f0dd2694b376722b344d7106d3f4ee57f30a57", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "c5e7eb0fb076bc6f1122a463c3b05c058dc3d59fed14d36e97b81b8bc34ccd15", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "642f8cad1b9cd84827278c63ef2aa51fef50a4abb5c147d2f2ab995390a9d00a", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "537205ff560808738cb7f92a975db4f901822513dc6e04765644119009b53983", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "10a2069bf16df7a0c32b5a5bd06a5c18ddb2c8e0fa537bc4323dd996fe863147", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7acbdf0286d917ead84b51545a6aaeee1cef56aa7d04599313860f2cb54b3c4b", @@ -7950,6 +7955,7 @@ "T2T1_de_test_recovery.py::test_recovery_bip39": "0e420d2c4ce7afee8e6f53557bc4117e4f93301d675c5706a46e9c46c8330a46", "T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "385fd9b6db99191f374ef6bf1885769270b04ed4c83b898410a820f5c1bfe795", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "44fa35cc2ffa836301818fa5c9fe5823e485da113a3329e878715bafb51ec154", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "5e752716e692f11f1f7f77278c082eb4e430f7a2338625d5f669fbc57c1f5c28", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "f8f3be3e3f9a4aae2d38861d9a97ab186f65d8acb266074743a24c17e92898a2", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "6da2196b020cb7e6f05c32e11a0e9e2da6e501bb0ecfffe5974919158ba36444", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f85bf415b444eacb4ae61ca3168dda8a11ba5b368171ca0df49888caff436680", @@ -7998,7 +8004,7 @@ "T2T1_en_test_recovery.py::test_recovery_bip39": "ee619ed8e0cf0fbd75a685830d1873e23896dcca6477b2bbf39eaa8d9b4c8531", "T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b41a576c6e879512c80337f5d58fdaa93d2259ed42f164f808e52e0d3ccf1211", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "81bc28e27af3667606f0479720e4dbdfdb97805b9d94a6f3dfe9d9cb3b045c65", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "4ee56b338d37f74f892ad80e3ad35bb8f9113b4de602b57136899f52711ac0d9", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "7a36c6a237b8e7d0cce7a6fc7e6f20975e1c9abe0ed355acffde54dde903610c", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "e7d4a85f9ebfaec35006a566e0a25167f276620d50d847a08721da861cac725a", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "259315387e0837ac718654d9180f5730370fa76d77318d620288885ebbddb0fb", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "878b828c11353fbfcd854fd54ed172dc7d395c753195d5444b5b57e3499e2bca", @@ -8047,6 +8053,7 @@ "T2T1_es_test_recovery.py::test_recovery_bip39": "5d80d9545989e7fdf8f8d25433956f1a0b527fa0931725816c84fa9de88597c3", "T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "0e74c799e720952caf98271764e8151da2f3f79a5456a1b8fdd4bea13ea780bc", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "db5ec08707ea408f9d08a8f0cfc42aba44358ee6ce94ff73af542ef8ca5993ec", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "2631bd836f3eed96c21f211a604d83ffd4f9fab24a50832d2e8fc612741067f2", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "644226a8736f10de7878950e41d189b207474a40022365b87ea1ea24912c1eb3", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4688e4198ef55ff8253965b16a612845cc9c29ae3dc9911723ac9c3d170738ef", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0af93fcceb4cbc33d6a3bd9022bc3bc774cfca36a23bf05d6d181846fb3631d3", @@ -8095,6 +8102,7 @@ "T2T1_fr_test_recovery.py::test_recovery_bip39": "ee49084821d8836b2c6774c80b6f382af28bed1e110118b96fe55697cf76e215", "T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "5bcecb9c0d7ff67fd388e13aa5daf4bf849a886efe7b9ae64a4579b15202be23", "T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "676c1eaf8983dd9d07e476303f2c0370006740a4c2a34a11ae68735fdfdd3ee7", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "13d382cde3a90905602a48886ae69dcb88f309bc73fc2d55da739ebfa11f5ff8", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "5d9a35bf67c9520002ee41abac5c556f1932b9fc2073a259c3a8acf4443fc64d", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d1e765a363f3e24219cef132d94ecc48d27a5564ca90b69a2231f7ec0a6ce89a", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c68e1a6538bf2b96293b23c4482f50f9a6de907ca3f0744bb88a74618ad9d306", @@ -9517,6 +9525,9 @@ "T2T1_cs_test_protection_levels.py::test_unlocked": "03c60806a17607d7e3b39d76d3d82144ceef92ebbf90bc25ecdd6233bc0081cf", "T2T1_cs_test_protection_levels.py::test_verify_message_t2": "7cbc1f75a41c00a6d53fe6372113fdba190489e8819fb6d4a7f6d9898b0115c1", "T2T1_cs_test_protection_levels.py::test_wipe_device": "e2f47c3779d782bb71d8dfd553560ef36b4d6fa67a629719e380e30af8727229", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "6cdff3d90975350249abb78f90136fa0a5aa534e14483160c44a934a55850c0e", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "2d34bfb184b3b67bb073d4a8c9f944318b353d7ebf7554d5ccbe67e100040125", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "da2c71dd408d8ad4546b43a78353561fc6b2654b354239e9a13fef13cfaf6aa1", "T2T1_cs_test_sdcard.py::test_sd_format": "8f1ca58187e0eb32b6e23e369b1e9a3f68ee244023e2a0d25930d887f9bff5f2", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "f919e4e387fcb3806adb43f7b8f71ae3b14a30970b3d79bb4c9bd063804a084c", @@ -10984,6 +10995,9 @@ "T2T1_de_test_protection_levels.py::test_unlocked": "97cde4874c0952f2da6f2f41845b8ce279e4015ea95ef38bd8c0e0d55039b80d", "T2T1_de_test_protection_levels.py::test_verify_message_t2": "b0298371e1eb13ab94bd944dbfca4079e5e6751003fb9e0a2bb4dc35d02db844", "T2T1_de_test_protection_levels.py::test_wipe_device": "2b6b86e0caebab7123f67264d3082849c56ee4d94ce8da13fede6d1012b866cc", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "56831fe1a4a60cb5d0f2df41b9a7cd2170de42a411abab9c4dc2bd232fb6e020", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "ca70ffbb6b6979ea00e2f746ad940edf1f54a030be9bbdbaa77a97899261cd26", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "15a17645203e88c272f965d20dc725015f2a0c8e4dc0c3b9b6b52dfc4239a669", "T2T1_de_test_sdcard.py::test_sd_format": "3e307eee23db4db1a7f3810af0d90d6720da8e5bd81cbd4e924579ff4528b51c", "T2T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", "T2T1_de_test_sdcard.py::test_sd_protect_unlock": "89dfea5d01815a7927af69127a7fbece5b8ba3bd36713298ea2edc8f860d6d32", @@ -12451,9 +12465,9 @@ "T2T1_en_test_protection_levels.py::test_unlocked": "4488e2b6f06fdff05749ac271d080182f1c95645de37898457ff12f0fb190381", "T2T1_en_test_protection_levels.py::test_verify_message_t2": "cc09f0acf9e48b1355dae0be65a2a97abbe2811808feee08d46ae7146ce6bb6f", "T2T1_en_test_protection_levels.py::test_wipe_device": "7ff017de646b7cf70832605e1750c635d0eb661d51534b56007b49e82b927011", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "321a6c7a274e20fbddcc0dbdff31181950a613c97a77ad48ce1bb31845ffdc0e", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "9ab2f1f9e49582efa1e98c728b38ce1a21c4f09d398b20f616507f67a6a292b2", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "dc906965730138e588e4efb5e7eb71609c504f5910352ce04bd926358184af36", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "ac745f23dd716f1ddfc16321f076ce9c2a09104016d4fd5a3bb6f0c087b35f4b", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "87df4f0e06f4b330181c948e8026c2196cfe28442d4b52b6625bb524f8ca41dc", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "76245bc793c903336b45693c44d8baf3d5dfef5a2134edef03c164dbfb552592", "T2T1_en_test_sdcard.py::test_sd_format": "83d0d9b4eab3bf0eafc22d7d95e8b70bce477ba9c8b4ba13eeca9380ad5fdafa", "T2T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", "T2T1_en_test_sdcard.py::test_sd_protect_unlock": "1302f9a0835cac621142a17031d2150553e676261a3eeeefd32fcf1e69c7bd1a", @@ -13939,6 +13953,9 @@ "T2T1_es_test_protection_levels.py::test_unlocked": "6bf1c8d03bbf9a844f5fc4e31fe7faad8d6c49a9d5d8edcd9c0e04e975386632", "T2T1_es_test_protection_levels.py::test_verify_message_t2": "c970730c7f45321957056c9c1c47ed605d50ec6030a61c093cc82e4b910dd26a", "T2T1_es_test_protection_levels.py::test_wipe_device": "9aaa390ea2296772b8715597159be66d6660d5c418ee783eb44d8443afaee71b", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "7b6dad1637154eb006c908b1d42a4ac586095124ef181b52b95a2227b51948cb", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "3aa092960cfd10022c75571dd4bcda206c5859147a2a0bd6e563baa3d3cc1cf9", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8d9ac03652d328978d3005af4cb00397f78fead4cb6ce73a5834675c6fe9cfdd", "T2T1_es_test_sdcard.py::test_sd_format": "96fa6f12c78fc4f0e0d0e65e07d29772b9a27291564a7c12b0ec18a441b4b2fc", "T2T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", "T2T1_es_test_sdcard.py::test_sd_protect_unlock": "7296463f55e2a2142ace309c3a6665e398103e24b015ec0aeff34d2c2537c697", @@ -15406,6 +15423,9 @@ "T2T1_fr_test_protection_levels.py::test_unlocked": "ac2d18bf535dd2478eb723fa3d3779561dec2e724c3c4f52303505e124a31383", "T2T1_fr_test_protection_levels.py::test_verify_message_t2": "43cbe7d1e773a37c12dfebceb242c36af16bbf4e2fdb4b8ecf6f9cece3ba1980", "T2T1_fr_test_protection_levels.py::test_wipe_device": "0ed047d904ef99bb35e8e37dcff3d930706c77be2f4c7312233f2e3c956d1f6e", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "6389f52c62503b077c8fb39d2885698832c1742809e30024fdbbdbcea395bf14", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "61811c1d10a51d08328aec611e2c2d0246ea87af1d39b6654f5fdca4f5b18534", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f8eddf3a2cb156bdae3f3f7bab97bd6e983dba427e3b7003d6144668600453a3", "T2T1_fr_test_sdcard.py::test_sd_format": "9654a743fdad9525d04b1ee8129874d437113d1d3d3cbb0793dca406cfb65d53", "T2T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", "T2T1_fr_test_sdcard.py::test_sd_protect_unlock": "6b793848153a9bbc263cd1c97b536ceaad0e278344e353e8d2ba331b95369836", @@ -15515,6 +15535,7 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39": "18c8812c18b401f400ffdaada20bb4c27a6a41b4dc2f0688ff5097b4110b068a", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "b6662f23a3ff5d506f2f1d1bbf031631c3f679a5544909a5d93276a79accc373", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "c7ad24179dbfd03696098715a52b656d3f0163a7c92bcc1fb7cd187b0500ca68", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "15806a9c477e81aea6b787073c234c08e9ae73743a8c0a64e813c0b26c0a2dbf", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e28fb99da24382dc1837eb73b4dd931f25303f10183ed9a24a1a83f1c7670c25", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cf2402357fcc8abf2cba193738c748eb772beb83c7c6514f450769a6840a0ac6", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1a44e7bcc26d1ca6cb9fadc6cf0191785aee096418134e55190d5768ca6b5f3b", @@ -15563,6 +15584,7 @@ "T3T1_de_test_recovery.py::test_recovery_bip39": "d83b2cee9cfa4797ab78e42a802a694229f678a3e57351f02a742aedfd1c2c91", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "8da9662ee48ee3329c17d30902bf5305091d4aa12eb64707e88084551aad00a6", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "fd7d77d98db12b3a8a0577c886b3c12e1ec5a5756bf0aa6bc3c51d6f94ede7b6", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "7765d462b04db75e7126820bc4965e248ca6223cf4f6a474a0b476a13dfc4b0a", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "0ff514b16b04bb1f0074b7634c52b6b36ad329f414347a791fb15036bff453d2", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e36dce460a5e3079ae9cff437499e7888cdb6db0aa06351d2dbdd7cc2cb3ab36", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cf5b36770a72897133375b53da0e75af30020527805559fec6dbb0f23f36812c", @@ -15611,6 +15633,7 @@ "T3T1_en_test_recovery.py::test_recovery_bip39": "187dad507b8f40708ac427df04320873a2c3c33dcd945940e5fbcce6315fb669", "T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "0504b66f958dd19d44317f31feab77d35a9b11eb2003e37ea982da938aad649d", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "2935d5cad9408dde53b8cf5b85ff8c790dbcaa430aac699a4c9b357624eacffc", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "a15baa2dc5551b8c4cb6e9a80e5a790168dc1c8942b2c771a33872d6ee9bcdbc", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "f80c0528314bcd56f0d30c55e7dbbacc3c515e9373a2c30d1cacc207ae62d8d4", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2a2448f1351b0d8a9a6019ae50529ee7ea5941b00ee6a606104b8cf438477ef5", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bc17b8a30057c03723fe8295ccabb585a200adfaacecf58eacdddaa7bf60119b", @@ -15659,6 +15682,7 @@ "T3T1_es_test_recovery.py::test_recovery_bip39": "871937fc5138f48093f14856a78e8e2698fe407aef57835c2a990c96a462b3e9", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "8984517a676690a5d26a4f7a578aa455285e444c933eac7a8b37905d51157808", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "d2c58b863e451bf92a2b0ad5cd2f33491ebf9b43b59029facb636008bd130998", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "024820fe86519b7d64b5611b5ad909a066e523602a093b886e5402754c68da78", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "2499fdabac63aa4a08d66bdfc8cf5a0fd1e43723275fe421efca3af92a7d40fa", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d0a4a63450a7fd91840fc9625342b602c7ee1b4f2afdd97e60804cd50dd8d6bd", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d9c3c13c8671cb73f53e49e1b47c9d48f8342b4d99f84554cfbb988b8c01e23b", @@ -15707,6 +15731,7 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39": "4f284e9efe88666971e0393a9cc85afb8047b83ca624f0cfe6fca40d9ff1b188", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "cda4bfe6f5a79c2fbe98e7e41c55bdc485e51d579ed18c049b929e0bc58ecb2c", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "05b4e2cf341661ab300379b05b733f8f01eeeeb0f3ee8be599534112af834874", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "bfa127da6f3ed4b101c03629cf914757824c9c48376e900862f14094b649c374", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "9a740aeba8b98e23a610f9a818c5795f4840c9266b08b19d8bf80424cb54731d", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "35a82795eb4679fdb6a1c487bde9921bdf32753ac84b896bb51a4a40e0c1491a", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7e8ace86befb58f6aa15069c167ece1173aceef84cd40658a710a6e50f2ba952", @@ -17044,6 +17069,9 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "854ce0adfc5484833dfc53d50576360845bccb7b90f79b483390de89d1110ad4", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "6ae0f587d7912085cabb946b309ef40bbdf395f6262874528b131c802cb91de1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "2f8c6a82c0ef95ba95aaa61ca51f5ce5d6e41eaa393eb77888a787ace26e62f9", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "1530169e1bb9417ac7508687b10969347b6ad96e8cba41d5d47b594f137d649c", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "4c877d5f4af05261ea9472334b76809b4a7c0288ae48ac3603066cd305cc56ab", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fec56b8b9b10b19929e3d164b7e0619fe70a337df1a2e670488ec2cb7a45085d", "T3T1_cs_test_sdcard.py::test_sd_format": "b63a9b869f151749ed52f553205efe47cf27e739d619207a2da01edcc45fe25b", "T3T1_cs_test_sdcard.py::test_sd_no_format": "211314ec715ae96a1f1d7b617189a8bb9675c3d73cc10c057c6529ec9b8f4d05", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "2d1a02d63396c5f1f40cd11ca6f4fc8dcead9d7a55f8d65fbff608d2f62a324a", @@ -18426,6 +18454,9 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "6eb345e6e13315dadd852980389140e0f86e3e88c4d600b2f1a23b75bb67f21d", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "789d2139229a19875ae544dd3c674507c3c5529c4db1b280f3ac58e061fc798d", "T3T1_de_test_protection_levels.py::test_wipe_device": "77f586b70d92b151c51ccfae935eed1440c07ebbadc9b65126afedc1ddcc0ce5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "ca0355e458cc41ed2ecd6f8befdec56b379e94d050b46cec1a88fd04a813f04e", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "755dd6aa88cf49222fd0b3e0b14f80498b7d9d4b37aaa1efe8317c654e2d598b", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "2feeac0a912b21191dc24d64a677118ff7e6f2e5373b82b92c9f6bcd6c1b2481", "T3T1_de_test_sdcard.py::test_sd_format": "0e6df7ed3603f447d88657afe33057877c7651c8a0a2f745845be8382e3327d7", "T3T1_de_test_sdcard.py::test_sd_no_format": "0e559e831f007e7cbc37f6f59673781a1dedbb5410ec9eaade877157e8af4f82", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "e76e8ed1145f4c0d70e54331fe599916a9f977fb285936ca0350f970befba1fe", @@ -19808,6 +19839,9 @@ "T3T1_en_test_protection_levels.py::test_unlocked": "e08a96b24f115b72eb3f17fa5ee9628d1ae3321f0f5d0d4686da930e7f0e5081", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "f9687ed380da703aff31ea1cfbf280ec78dee613f75082a5a295ffd0843f5634", "T3T1_en_test_protection_levels.py::test_wipe_device": "2975d9b2fd1e6118e259de6ef3b3fbe7c016a7579c282287ae22c4ff02896187", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "ab8ff27b0d2aa4793b58c172d8656058bba8b267caf08240975e752fb758fd95", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "16a8b9333a55c1632057775c26ab4d2be68a8e031ff07d92cff2a637462cea8b", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "96fce6572203403798314678a3d2ffd082dca7954b2f470251c66323bc804cb1", "T3T1_en_test_sdcard.py::test_sd_format": "85e8d653d42a1f84de35ebd00cee1ada97ee367f9f0bff5ad3bb1c07782d0c38", "T3T1_en_test_sdcard.py::test_sd_no_format": "266a9ae0966cb0720c2515bcf91bfe3315103d0e174387cf389e998d6994d5e1", "T3T1_en_test_sdcard.py::test_sd_protect_unlock": "dd0572acab338caa3ca3c4b493dc7f857cbd8e89ef7f74144e122cf22e1283d6", @@ -21190,6 +21224,9 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "f405182f1a710776b7c10478c62f2b11c7cd010782a042d6b815948f7e395ab0", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "ddcd6d07feeaf593ca84319b84f862046f249a75727cfc05ccdc3c77d9f63a2d", "T3T1_es_test_protection_levels.py::test_wipe_device": "d3986f59a058c52b372a414cd5cb5c0e0285dd303496c7d99c586354554fdde9", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "201745a4d2d588124650751e31f5842bb41c987a4f914e643aa722e910de5775", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "4faa4b2d679bdbe2e190ba93fb1140dc179cacc767fe1cef0c4d49e63eb21b3a", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "2b6b56e7fd69f22973ef2a4b80b3dfa18f5c1089b937e7b40cfb3145e8c705d1", "T3T1_es_test_sdcard.py::test_sd_format": "1e8ceaa3c419aab4e97088704eb487daa132d4262c490c626efd9d18eecf66e5", "T3T1_es_test_sdcard.py::test_sd_no_format": "1df941e39cb0f5ae7ad5fd0ed61dcd1458a62e256be7faf19f106f9ae9fea197", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "7b3f9196da8bae50bc4b5688101bf65e71437555b9329598f775e5b0bfd137a0", @@ -22572,6 +22609,9 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "a4424a33b98437db465a6f6210207566290124a2cefd4c19fec3a3dc9a868b6f", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c0433481942e7e93e5488b819637a3412741694b106213a72dbb164521d4fb1b", "T3T1_fr_test_protection_levels.py::test_wipe_device": "004dc079ae5d42d366094c23ed0bacf2b97f637ef6ae22d7124d8db293e1b2cb", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "dcc58095596457261a7ff1d0118fd3ef80d3b7b3786edcdfde5f3776e553fcd8", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "c8a2086b7128ac2d39f900e3c6f70c27191e855547d299e027ffff421619cbb6", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1745fc4e388d18bfc3c0124542c4f0d82fe8ad0081998fe913437ae4f90767d3", "T3T1_fr_test_sdcard.py::test_sd_format": "5731b0f2b788c135ba4f226ff6ef4ac95068a639eb02b79a2286f0ca33baa6a3", "T3T1_fr_test_sdcard.py::test_sd_no_format": "43e6b840991931da598895059d9e9bdb75b50bd56ba15b2de0abf6323f308053", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "89bc355f195af4a376c40ddb556a51e2aee85a3a183c997857f4cb51cb99b3cd", From a67bc19bace8ccf162d12412eb96e26a910a84fc Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 26 May 2024 12:35:42 +0200 Subject: [PATCH 220/626] feat(core) screen transitions for mercury UI [no changelog] --- core/embed/firmware/memory_T3T1.ld | 2 +- core/embed/rust/src/ui/animation.rs | 1 + core/embed/rust/src/ui/component/base.rs | 40 +- .../rust/src/ui/component/button_request.rs | 34 +- core/embed/rust/src/ui/component/map.rs | 52 +-- core/embed/rust/src/ui/component/mod.rs | 4 + core/embed/rust/src/ui/component/swipe.rs | 2 +- .../rust/src/ui/component/swipe_detect.rs | 415 ++++++++++++++++++ core/embed/rust/src/ui/component/timeout.rs | 2 +- core/embed/rust/src/ui/event.rs | 10 + core/embed/rust/src/ui/flow/base.rs | 48 +- core/embed/rust/src/ui/flow/mod.rs | 4 +- core/embed/rust/src/ui/flow/page.rs | 181 ++------ core/embed/rust/src/ui/flow/store.rs | 74 ++-- core/embed/rust/src/ui/flow/swipe.rs | 297 +++++++------ core/embed/rust/src/ui/layout/obj.rs | 3 +- .../component/address_details.rs | 45 +- .../src/ui/model_mercury/component/button.rs | 4 + .../component/coinjoin_progress.rs | 2 +- .../src/ui/model_mercury/component/dialog.rs | 3 - .../src/ui/model_mercury/component/footer.rs | 144 ++++-- .../src/ui/model_mercury/component/frame.rs | 137 ++++-- .../component/hold_to_confirm.rs | 7 +- .../ui/model_mercury/component/homescreen.rs | 4 +- .../model_mercury/component/keyboard/pin.rs | 2 +- .../src/ui/model_mercury/component/mod.rs | 4 + .../model_mercury/component/number_input.rs | 26 +- .../model_mercury/component/prompt_screen.rs | 3 - .../ui/model_mercury/component/share_words.rs | 118 ++--- .../model_mercury/component/status_screen.rs | 33 +- .../model_mercury/component/swipe_content.rs | 258 +++++++++++ .../component/swipe_up_screen.rs | 39 +- .../model_mercury/component/tap_to_confirm.rs | 47 +- .../model_mercury/component/vertical_menu.rs | 135 +++++- .../ui/model_mercury/flow/confirm_action.rs | 45 +- .../ui/model_mercury/flow/confirm_output.rs | 15 +- .../flow/confirm_reset_create.rs | 46 +- .../flow/confirm_reset_recover.rs | 18 +- .../model_mercury/flow/confirm_set_new_pin.rs | 35 +- .../ui/model_mercury/flow/confirm_summary.rs | 14 +- .../src/ui/model_mercury/flow/get_address.rs | 83 ++-- .../ui/model_mercury/flow/prompt_backup.rs | 36 +- .../ui/model_mercury/flow/request_number.rs | 30 +- .../ui/model_mercury/flow/show_share_words.rs | 14 +- .../rust/src/ui/model_mercury/flow/util.rs | 50 ++- .../ui/model_mercury/flow/warning_hi_prio.rs | 22 +- .../embed/rust/src/ui/model_mercury/layout.rs | 115 ++--- .../model_tr/component/coinjoin_progress.rs | 2 +- .../model_tt/component/coinjoin_progress.rs | 2 +- .../src/ui/model_tt/component/keyboard/pin.rs | 2 +- core/src/apps/management/change_pin.py | 1 + tests/ui_tests/fixtures.json | 68 +-- 52 files changed, 1920 insertions(+), 858 deletions(-) create mode 100644 core/embed/rust/src/ui/component/swipe_detect.rs create mode 100644 core/embed/rust/src/ui/model_mercury/component/swipe_content.rs diff --git a/core/embed/firmware/memory_T3T1.ld b/core/embed/firmware/memory_T3T1.ld index 98b24ae4d3..35674f169d 100644 --- a/core/embed/firmware/memory_T3T1.ld +++ b/core/embed/firmware/memory_T3T1.ld @@ -88,7 +88,7 @@ SECTIONS { } >SRAM1 .stack : ALIGN(8) { - . = 16K; /* Overflow causes UsageFault */ + . = 32K; /* Overflow causes UsageFault */ } >SRAM2 .confidential : ALIGN(512) { diff --git a/core/embed/rust/src/ui/animation.rs b/core/embed/rust/src/ui/animation.rs index 66039faba8..f724242078 100644 --- a/core/embed/rust/src/ui/animation.rs +++ b/core/embed/rust/src/ui/animation.rs @@ -4,6 +4,7 @@ use crate::{ }; /// Running, time-based linear progression of a value. +#[derive(Clone)] pub struct Animation<T> { /// Starting value. pub from: T, diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 6419caabba..16929b8cd1 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -16,11 +16,13 @@ use crate::{ #[cfg(feature = "button")] use crate::ui::event::ButtonEvent; -#[cfg(feature = "touch")] -use crate::ui::event::TouchEvent; use crate::ui::event::USBEvent; +#[cfg(feature = "touch")] +use crate::ui::event::{SwipeEvent, TouchEvent}; use super::Paginate; +#[cfg(feature = "touch")] +use super::SwipeDirection; /// Type used by components that do not return any messages. /// @@ -466,6 +468,13 @@ where } } +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum AttachType { + Initial, + #[cfg(feature = "touch")] + Swipe(SwipeDirection), +} + #[derive(Copy, Clone, PartialEq, Eq)] pub enum Event { #[cfg(feature = "button")] @@ -480,10 +489,13 @@ pub enum Event { Progress(u16, TString<'static>), /// Component has been attached to component tree. This event is sent once /// before any other events. - Attach, + Attach(AttachType), /// Internally-handled event to inform all `Child` wrappers in a sub-tree to /// get scheduled for painting. RequestPaint, + /// Swipe and transition events + #[cfg(feature = "touch")] + Swipe(SwipeEvent), } #[derive(Copy, Clone, PartialEq, Eq)] @@ -511,6 +523,8 @@ pub struct EventCtx { page_count: Option<usize>, button_request: Option<ButtonRequest>, root_repaint_requested: bool, + swipe_disable_req: bool, + swipe_enable_req: bool, } impl EventCtx { @@ -538,6 +552,8 @@ impl EventCtx { page_count: None, button_request: None, root_repaint_requested: false, + swipe_disable_req: false, + swipe_enable_req: false, } } @@ -612,6 +628,22 @@ impl EventCtx { self.timers.pop() } + pub fn disable_swipe(&mut self) { + self.swipe_disable_req = true; + } + + pub fn disable_swipe_requested(&self) -> bool { + self.swipe_disable_req + } + + pub fn enable_swipe(&mut self) { + self.swipe_enable_req = true; + } + + pub fn enable_swipe_requested(&self) -> bool { + self.swipe_enable_req + } + pub fn clear(&mut self) { self.place_requested = false; self.paint_requested = false; @@ -621,6 +653,8 @@ impl EventCtx { assert!(self.button_request.is_none()); self.button_request = None; self.root_repaint_requested = false; + self.swipe_disable_req = false; + self.swipe_enable_req = false; } fn register_timer(&mut self, token: TimerToken, deadline: Duration) { diff --git a/core/embed/rust/src/ui/component/button_request.rs b/core/embed/rust/src/ui/component/button_request.rs index ce99492cd0..3e0bff1509 100644 --- a/core/embed/rust/src/ui/component/button_request.rs +++ b/core/embed/rust/src/ui/component/button_request.rs @@ -4,6 +4,9 @@ use crate::ui::{ geometry::Rect, }; +#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] +use crate::ui::component::swipe_detect::SwipeConfig; + /// Component that sends a ButtonRequest after receiving Event::Attach. The /// request is only sent once. #[derive(Clone)] @@ -29,7 +32,7 @@ impl<T: Component> Component for OneButtonRequest<T> { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if matches!(event, Event::Attach) { + if matches!(event, Event::Attach(_)) { if let Some(button_request) = self.button_request.take() { ctx.send_button_request(button_request.code, button_request.br_type) } @@ -46,6 +49,17 @@ impl<T: Component> Component for OneButtonRequest<T> { } } +#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] +impl<T: crate::ui::flow::Swipable> crate::ui::flow::Swipable for OneButtonRequest<T> { + fn get_swipe_config(&self) -> SwipeConfig { + self.inner.get_swipe_config() + } + + fn get_internal_page_count(&self) -> usize { + self.inner.get_internal_page_count() + } +} + #[cfg(feature = "ui_debug")] impl<T: crate::trace::Trace> crate::trace::Trace for OneButtonRequest<T> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { @@ -63,21 +77,3 @@ pub trait ButtonRequestExt { } impl<T: Component> ButtonRequestExt for T {} - -#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] -impl<T> crate::ui::flow::Swipable<T::Msg> for OneButtonRequest<T> -where - T: Component + crate::ui::flow::Swipable<T::Msg>, -{ - fn swipe_start( - &mut self, - ctx: &mut EventCtx, - direction: crate::ui::component::SwipeDirection, - ) -> crate::ui::flow::SwipableResult<T::Msg> { - self.inner.swipe_start(ctx, direction) - } - - fn swipe_finished(&self) -> bool { - self.inner.swipe_finished() - } -} diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 89b19b88db..48cdebd67a 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -1,6 +1,9 @@ use super::{Component, Event, EventCtx}; use crate::ui::{geometry::Rect, shape::Renderer}; +#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] +use crate::ui::component::swipe_detect::SwipeConfig; + pub struct MsgMap<T, F> { inner: T, func: F, @@ -41,32 +44,26 @@ where } } -#[cfg(feature = "ui_debug")] -impl<T, F> crate::trace::Trace for MsgMap<T, F> +#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] +impl<T, F> crate::ui::flow::Swipable for MsgMap<T, F> where - T: Component + crate::trace::Trace, + T: Component + crate::ui::flow::Swipable, { - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - self.inner.trace(t) + fn get_swipe_config(&self) -> SwipeConfig { + self.inner.get_swipe_config() + } + fn get_internal_page_count(&self) -> usize { + self.inner.get_internal_page_count() } } -#[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] -impl<T, F, U> crate::ui::flow::Swipable<U> for MsgMap<T, F> +#[cfg(feature = "ui_debug")] +impl<T, F> crate::trace::Trace for MsgMap<T, F> where - T: Component + crate::ui::flow::Swipable<T::Msg>, - F: Fn(T::Msg) -> Option<U>, + T: Component + crate::trace::Trace, { - fn swipe_start( - &mut self, - ctx: &mut EventCtx, - direction: super::SwipeDirection, - ) -> crate::ui::flow::SwipableResult<U> { - self.inner.swipe_start(ctx, direction).map(&self.func) - } - - fn swipe_finished(&self) -> bool { - self.inner.swipe_finished() + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.inner.trace(t) } } @@ -123,19 +120,14 @@ where } #[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] -impl<T, F> crate::ui::flow::Swipable<T::Msg> for PageMap<T, F> +impl<T, F> crate::ui::flow::Swipable for PageMap<T, F> where - T: Component + crate::ui::flow::Swipable<T::Msg>, + T: Component + crate::ui::flow::Swipable, { - fn swipe_start( - &mut self, - ctx: &mut EventCtx, - direction: super::SwipeDirection, - ) -> crate::ui::flow::SwipableResult<T::Msg> { - self.inner.swipe_start(ctx, direction) + fn get_swipe_config(&self) -> SwipeConfig { + self.inner.get_swipe_config() } - - fn swipe_finished(&self) -> bool { - self.inner.swipe_finished() + fn get_internal_page_count(&self) -> usize { + self.inner.get_internal_page_count() } } diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index 53f3fb908f..a7d80d7368 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -19,6 +19,8 @@ pub mod placed; pub mod qr_code; #[cfg(feature = "touch")] pub mod swipe; +#[cfg(feature = "touch")] +pub mod swipe_detect; pub mod text; pub mod timeout; @@ -39,6 +41,8 @@ pub use placed::{FixedHeightBar, Floating, GridPlaced, Split}; pub use qr_code::Qr; #[cfg(feature = "touch")] pub use swipe::{Swipe, SwipeDirection}; +#[cfg(feature = "touch")] +pub use swipe_detect::{SwipeDetect, SwipeDetectMsg}; pub use text::{ formatted::FormattedText, layout::{LineBreaking, PageBreaking, TextLayout}, diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index 6f69262857..ece3d22b6b 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -5,7 +5,7 @@ use crate::ui::{ shape::Renderer, }; -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Eq, PartialEq)] pub enum SwipeDirection { Up, Down, diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs new file mode 100644 index 0000000000..5e2c2c4893 --- /dev/null +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -0,0 +1,415 @@ +use crate::{ + time::{Duration, Instant}, + ui::{ + animation::Animation, + component::{Event, EventCtx, SwipeDirection}, + event::TouchEvent, + geometry::{Offset, Point}, + util::animation_disabled, + }, +}; + +#[derive(Clone)] +pub struct SwipeSettings { + pub duration: Duration, +} + +impl SwipeSettings { + pub const fn new(duration: Duration) -> Self { + Self { duration } + } + + pub const fn default() -> Self { + Self { + duration: Duration::from_millis(333), + } + } + + pub const fn immediate() -> Self { + Self { + duration: Duration::from_millis(0), + } + } +} + +#[derive(Clone, Default)] +pub struct SwipeConfig { + pub horizontal_pages: bool, + pub vertical_pages: bool, + pub up: Option<SwipeSettings>, + pub down: Option<SwipeSettings>, + pub left: Option<SwipeSettings>, + pub right: Option<SwipeSettings>, +} + +impl SwipeConfig { + pub const fn new() -> Self { + Self { + horizontal_pages: false, + vertical_pages: false, + up: None, + down: None, + left: None, + right: None, + } + } + + pub fn with_swipe(&self, dir: SwipeDirection, settings: SwipeSettings) -> Self { + let mut new = self.clone(); + match dir { + SwipeDirection::Up => new.up = Some(settings), + SwipeDirection::Down => new.down = Some(settings), + SwipeDirection::Left => new.left = Some(settings), + SwipeDirection::Right => new.right = Some(settings), + } + new + } + + pub fn is_allowed(&self, dir: SwipeDirection) -> bool { + match dir { + SwipeDirection::Up => self.up.is_some(), + SwipeDirection::Down => self.down.is_some(), + SwipeDirection::Left => self.left.is_some(), + SwipeDirection::Right => self.right.is_some(), + } + } + + pub fn duration(&self, dir: SwipeDirection) -> Option<Duration> { + match dir { + SwipeDirection::Up => self.up.as_ref().map(|s| s.duration), + SwipeDirection::Down => self.down.as_ref().map(|s| s.duration), + SwipeDirection::Left => self.left.as_ref().map(|s| s.duration), + SwipeDirection::Right => self.right.as_ref().map(|s| s.duration), + } + } + pub fn has_horizontal_pages(&self) -> bool { + self.horizontal_pages + } + + pub fn has_vertical_pages(&self) -> bool { + self.vertical_pages + } + + pub fn with_horizontal_pages(&self) -> Self { + let mut new = self.clone(); + new.horizontal_pages = true; + new + } + + pub fn with_vertical_pages(&self) -> Self { + let mut new = self.clone(); + new.vertical_pages = true; + new + } +} + +#[derive(Copy, Clone, Eq, PartialEq)] +pub enum SwipeDetectMsg { + Move(SwipeDirection, i16), + Trigger(SwipeDirection), +} + +#[derive(Clone)] +pub struct SwipeDetect { + origin: Option<Point>, + locked: Option<SwipeDirection>, + final_animation: Option<Animation<i16>>, + moved: i16, +} + +impl SwipeDetect { + const DISTANCE: i16 = 120; + pub const PROGRESS_MAX: i16 = 1000; + + const DURATION_MS: u32 = 333; + const TRIGGER_THRESHOLD: f32 = 0.3; + const DETECT_THRESHOLD: f32 = 0.1; + + pub fn new() -> Self { + Self { + origin: None, + locked: None, + final_animation: None, + moved: 0, + } + } + + fn min_lock(&self) -> i16 { + (Self::DISTANCE as f32 * Self::DETECT_THRESHOLD) as i16 + } + + fn min_trigger(&self) -> i16 { + (Self::DISTANCE as f32 * Self::TRIGGER_THRESHOLD) as i16 + } + + fn progress(&self, val: i16) -> i16 { + ((val.max(0) as f32 / Self::DISTANCE as f32) * Self::PROGRESS_MAX as f32) as i16 + } + + pub fn trigger(&mut self, ctx: &mut EventCtx, dir: SwipeDirection, config: SwipeConfig) { + ctx.request_anim_frame(); + ctx.request_paint(); + + let duration = config + .duration(dir) + .unwrap_or(Duration::from_millis(Self::DURATION_MS)); + + self.locked = Some(dir); + self.final_animation = Some(Animation::new( + 0, + Self::PROGRESS_MAX, + duration, + Instant::now(), + )); + } + + pub(crate) fn reset(&mut self) { + self.origin = None; + self.locked = None; + self.final_animation = None; + self.moved = 0; + } + + pub(crate) fn event( + &mut self, + ctx: &mut EventCtx, + event: Event, + config: SwipeConfig, + ) -> Option<SwipeDetectMsg> { + match (event, self.origin) { + (Event::Touch(TouchEvent::TouchStart(pos)), _) => { + // Mark the starting position of this touch. + self.origin.replace(pos); + } + (Event::Touch(TouchEvent::TouchMove(pos)), Some(origin)) => { + if self.final_animation.is_none() { + // Compare the touch distance with our allowed directions and determine if it + // constitutes a valid swipe. + let ofs = pos - origin; + let ofs_min = ofs.abs() - Offset::new(self.min_lock(), self.min_lock()); + + let mut res = None; + if self.locked.is_none() { + if ofs.x > 0 && ofs_min.x > 0 && config.is_allowed(SwipeDirection::Right) { + self.locked = Some(SwipeDirection::Right); + res = Some(SwipeDetectMsg::Move( + SwipeDirection::Right, + self.progress(ofs_min.x), + )); + } + if ofs.x < 0 && ofs_min.x > 0 && config.is_allowed(SwipeDirection::Left) { + self.locked = Some(SwipeDirection::Left); + res = Some(SwipeDetectMsg::Move( + SwipeDirection::Left, + self.progress(ofs_min.x), + )); + } + if ofs.y < 0 && ofs_min.y > 0 && config.is_allowed(SwipeDirection::Up) { + self.locked = Some(SwipeDirection::Up); + res = Some(SwipeDetectMsg::Move( + SwipeDirection::Up, + self.progress(ofs_min.y), + )); + } + if ofs.y > 0 && ofs_min.y > 0 && config.is_allowed(SwipeDirection::Down) { + self.locked = Some(SwipeDirection::Down); + res = Some(SwipeDetectMsg::Move( + SwipeDirection::Down, + self.progress(ofs_min.y), + )); + } + } else { + res = match self.locked.unwrap() { + SwipeDirection::Left => { + if ofs.x > 0 { + Some(SwipeDetectMsg::Move(SwipeDirection::Left, 0)) + } else { + Some(SwipeDetectMsg::Move( + SwipeDirection::Left, + self.progress(ofs_min.x), + )) + } + } + SwipeDirection::Right => { + if ofs.x < 0 { + Some(SwipeDetectMsg::Move(SwipeDirection::Right, 0)) + } else { + Some(SwipeDetectMsg::Move( + SwipeDirection::Right, + self.progress(ofs_min.x), + )) + } + } + SwipeDirection::Up => { + if ofs.y > 0 { + Some(SwipeDetectMsg::Move(SwipeDirection::Up, 0)) + } else { + Some(SwipeDetectMsg::Move( + SwipeDirection::Up, + self.progress(ofs_min.y), + )) + } + } + SwipeDirection::Down => { + if ofs.y < 0 { + Some(SwipeDetectMsg::Move(SwipeDirection::Down, 0)) + } else { + Some(SwipeDetectMsg::Move( + SwipeDirection::Down, + self.progress(ofs_min.y), + )) + } + } + }; + } + + // Todo trigger an action if distance is met + + if let Some(SwipeDetectMsg::Move(_, ofs)) = res { + self.moved = ofs; + } + + if animation_disabled() { + return None; + } + + return res; + } + } + (Event::Touch(TouchEvent::TouchEnd(pos)), Some(origin)) => { + if self.final_animation.is_none() { + // Touch interaction is over, reset the position. + self.origin.take(); + + // Compare the touch distance with our allowed directions and determine if it + // constitutes a valid swipe. + let ofs = pos - origin; + let ofs_min = ofs.abs() - Offset::new(self.min_trigger(), self.min_trigger()); + + match self.locked { + // advance in locked direction only + Some(locked) if config.progress(locked, ofs, 0) > 0 => (), + // advance in direction other than locked clears the lock -- touch ends + // without triggering + Some(_) => self.locked = None, + None => { + for dir in SwipeDirection::iter() { + // insta-lock if the movement went at least the trigger distance + if config.progress(dir, ofs, self.min_trigger()) > 0 { + self.locked = Some(dir); + break; + } + } + } + }; + + let Some(locked) = self.locked else { + // No direction is locked. Touch ended without triggering a swipe. + return None; + }; + + ctx.request_anim_frame(); + ctx.request_paint(); + + if !animation_disabled() { + let done = self.moved as f32 / Self::PROGRESS_MAX as f32; + let ratio = 1.0 - done; + + let duration = config + .duration(locked) + .unwrap_or(Duration::from_millis(Self::DURATION_MS)); + + let duration = ((duration.to_millis() as f32 * ratio) as u32).max(0); + self.final_animation = Some(Animation::new( + self.moved as i16, + Self::PROGRESS_MAX, + Duration::from_millis(duration), + Instant::now(), + )); + } else { + // clear animation + self.final_animation = None; + self.moved = 0; + self.locked = None; + return Some(SwipeDetectMsg::Trigger(locked)); + } + + if finalize { + if !animation_disabled() { + ctx.request_anim_frame(); + ctx.request_paint(); + + let done = self.moved as f32 / Self::PROGRESS_MAX as f32; + let ratio = 1.0 - done; + + let duration = config + .duration(self.locked.unwrap()) + .unwrap_or(Duration::from_millis(Self::DURATION_MS)); + + let duration = ((duration.to_millis() as f32 * ratio) as u32).max(0); + self.final_animation = Some(Animation::new( + self.moved, + final_value, + Duration::from_millis(duration), + Instant::now(), + )); + } else { + ctx.request_anim_frame(); + ctx.request_paint(); + self.final_animation = None; + self.moved = 0; + let locked = self.locked.take(); + if final_value != 0 { + return Some(SwipeDetectMsg::Trigger(locked.unwrap())); + } + } + } + + return None; + } + } + (Event::Timer(EventCtx::ANIM_FRAME_TIMER), _) => { + if self.locked.is_some() { + let mut finish = false; + let res = if let Some(animation) = &self.final_animation { + if animation.finished(Instant::now()) { + finish = true; + if animation.to != 0 { + Some(SwipeDetectMsg::Trigger(self.locked.unwrap())) + } else { + Some(SwipeDetectMsg::Move(self.locked.unwrap(), 0)) + } + } else { + ctx.request_anim_frame(); + ctx.request_paint(); + if animation_disabled() { + None + } else { + Some(SwipeDetectMsg::Move( + self.locked.unwrap(), + animation.value(Instant::now()), + )) + } + } + } else { + None + }; + + if finish { + self.locked = None; + ctx.request_anim_frame(); + ctx.request_paint(); + self.final_animation = None; + self.moved = 0; + } + + return res; + } + } + _ => { + // Do nothing. + } + } + None + } +} diff --git a/core/embed/rust/src/ui/component/timeout.rs b/core/embed/rust/src/ui/component/timeout.rs index 8aac3ba8dd..bd0466c109 100644 --- a/core/embed/rust/src/ui/component/timeout.rs +++ b/core/embed/rust/src/ui/component/timeout.rs @@ -32,7 +32,7 @@ impl Component for Timeout { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { match event { // Set up timer. - Event::Attach => { + Event::Attach(_) => { self.timer = Some(ctx.request_timer(Duration::from_millis(self.time_ms))); None } diff --git a/core/embed/rust/src/ui/event.rs b/core/embed/rust/src/ui/event.rs index fd1f555543..c92d24d395 100644 --- a/core/embed/rust/src/ui/event.rs +++ b/core/embed/rust/src/ui/event.rs @@ -1,6 +1,9 @@ use crate::{error, ui::geometry::Point}; use core::convert::TryInto; +#[cfg(feature = "touch")] +use crate::ui::component::SwipeDirection; + #[derive(Copy, Clone, PartialEq, Eq)] pub enum PhysicalButton { Left, @@ -65,3 +68,10 @@ pub enum USBEvent { /// USB host has connected/disconnected. Connected(bool), } + +#[cfg(feature = "touch")] +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum SwipeEvent { + Move(SwipeDirection, i16), + End(SwipeDirection), +} diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index 264525e527..6f25dbfdbe 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -1,50 +1,10 @@ -use crate::ui::component::{EventCtx, SwipeDirection}; +use crate::ui::component::{swipe_detect::SwipeConfig, SwipeDirection}; use num_traits::ToPrimitive; -/// Component must implement this trait in order to be part of swipe-based flow. -/// -/// Default implementation ignores every swipe. -pub trait Swipable<T> { - /// Attempt a swipe. Return `Ignored` if the component in its current state - /// doesn't accept a swipe in that direction. Return `Animating` if - /// component accepted the swipe and started a transition animation. The - /// `Return(x)` variant indicates that the current flow should be terminated - /// with the result `x`. - fn swipe_start( - &mut self, - _ctx: &mut EventCtx, - _direction: SwipeDirection, - ) -> SwipableResult<T> { - SwipableResult::Ignored - } - - /// Return true when transition animation is finished. SwipeFlow needs to - /// know this in order to resume normal input processing. - fn swipe_finished(&self) -> bool { - true - } -} +pub trait Swipable { + fn get_swipe_config(&self) -> SwipeConfig; -pub enum SwipableResult<T> { - Ignored, - Animating, - Return(T), -} - -impl<T> SwipableResult<T> { - pub fn map<U>(self, func: impl FnOnce(T) -> Option<U>) -> SwipableResult<U> { - match self { - SwipableResult::Ignored => SwipableResult::Ignored, - SwipableResult::Animating => SwipableResult::Animating, - SwipableResult::Return(x) => { - if let Some(res) = func(x) { - SwipableResult::Return(res) - } else { - SwipableResult::Ignored - } - } - } - } + fn get_internal_page_count(&self) -> usize; } /// Component::Msg for component parts of a flow. Converting results of diff --git a/core/embed/rust/src/ui/flow/mod.rs b/core/embed/rust/src/ui/flow/mod.rs index 91c69e4c53..a165854797 100644 --- a/core/embed/rust/src/ui/flow/mod.rs +++ b/core/embed/rust/src/ui/flow/mod.rs @@ -3,7 +3,7 @@ pub mod page; mod store; mod swipe; -pub use base::{FlowMsg, FlowState, Swipable, SwipableResult}; -pub use page::{IgnoreSwipe, SwipePage}; +pub use base::{FlowMsg, FlowState, Swipable}; +pub use page::SwipePage; pub use store::{flow_store, FlowStore}; pub use swipe::SwipeFlow; diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 33af2c3fbc..f3be3a044b 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -1,25 +1,10 @@ -use crate::{ - micropython::gc::Gc, - time::Instant, - ui::{ - animation::Animation, - component::{Component, Event, EventCtx, Paginate, SwipeDirection}, - flow::base::{Swipable, SwipableResult}, - geometry::{Axis, Rect}, - shape::Renderer, - util, - }, +use crate::ui::{ + component::{Component, Event, EventCtx, Paginate, SwipeDirection}, + event::SwipeEvent, + geometry::{Axis, Rect}, + shape::Renderer, }; -pub struct Transition<T> { - /// Clone of the component before page change. - cloned: Gc<T>, - /// Animation progress. - animation: Animation<f32>, - /// Direction of the slide animation. - direction: SwipeDirection, -} - /// Allows any implementor of `Paginate` to be part of `Swipable` UI flow. /// Renders sliding animation when changing pages. pub struct SwipePage<T> { @@ -28,7 +13,6 @@ pub struct SwipePage<T> { axis: Axis, pages: usize, current: usize, - transition: Option<Transition<T>>, } impl<T: Component + Paginate + Clone> SwipePage<T> { @@ -39,7 +23,6 @@ impl<T: Component + Paginate + Clone> SwipePage<T> { axis: Axis::Vertical, pages: 1, current: 0, - transition: None, } } @@ -50,38 +33,8 @@ impl<T: Component + Paginate + Clone> SwipePage<T> { axis: Axis::Horizontal, pages: 1, current: 0, - transition: None, } } - - fn handle_transition(ctx: &mut EventCtx, event: Event, transition: &mut Transition<T>) -> bool { - let mut finished = false; - if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { - if transition.animation.finished(Instant::now()) { - finished = true; - } else { - ctx.request_anim_frame(); - } - ctx.request_paint() - } - finished - } - - fn render_transition<'s>( - &'s self, - transition: &'s Transition<T>, - target: &mut impl Renderer<'s>, - ) { - target.in_clip(self.bounds, &|target| { - util::render_slide( - |target| transition.cloned.render(target), - |target| self.inner.render(target), - transition.animation.value(Instant::now()), - transition.direction, - target, - ); - }); - } } impl<T: Component + Paginate + Clone> Component for SwipePage<T> { @@ -95,14 +48,33 @@ impl<T: Component + Paginate + Clone> Component for SwipePage<T> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { ctx.set_page_count(self.pages); - if let Some(t) = &mut self.transition { - let finished = Self::handle_transition(ctx, event, t); - if finished { - // FIXME: how to ensure the Gc allocation is returned? - self.transition = None + + if let Event::Swipe(SwipeEvent::End(direction)) = event { + match (self.axis, direction) { + (Axis::Vertical, SwipeDirection::Up) => { + self.current = (self.current + 1).min(self.pages - 1); + self.inner.change_page(self.current); + ctx.request_paint(); + } + (Axis::Vertical, SwipeDirection::Down) => { + self.current = self.current.saturating_sub(1); + self.inner.change_page(self.current); + ctx.request_paint(); + } + (Axis::Horizontal, SwipeDirection::Left) => { + self.current = (self.current + 1).min(self.pages - 1); + self.inner.change_page(self.current); + ctx.request_paint(); + } + (Axis::Horizontal, SwipeDirection::Right) => { + self.current = self.current.saturating_sub(1); + self.inner.change_page(self.current); + ctx.request_paint(); + } + _ => {} } - return None; } + self.inner.event(ctx, event) } @@ -111,62 +83,10 @@ impl<T: Component + Paginate + Clone> Component for SwipePage<T> { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - if let Some(t) = &self.transition { - return self.render_transition(t, target); - } self.inner.render(target) } } -impl<T: Component + Paginate + Clone> Swipable<T::Msg> for SwipePage<T> { - fn swipe_start( - &mut self, - ctx: &mut EventCtx, - direction: SwipeDirection, - ) -> SwipableResult<T::Msg> { - match (self.axis, direction) { - // Wrong direction - (Axis::Horizontal, SwipeDirection::Up | SwipeDirection::Down) => { - return SwipableResult::Ignored - } - (Axis::Vertical, SwipeDirection::Left | SwipeDirection::Right) => { - return SwipableResult::Ignored - } - // Begin - (_, SwipeDirection::Right | SwipeDirection::Down) if self.current == 0 => { - return SwipableResult::Ignored - } - // End - (_, SwipeDirection::Left | SwipeDirection::Up) if self.current + 1 >= self.pages => { - return SwipableResult::Ignored; - } - _ => {} - }; - self.current = match direction { - SwipeDirection::Left | SwipeDirection::Up => (self.current + 1).min(self.pages - 1), - SwipeDirection::Right | SwipeDirection::Down => self.current.saturating_sub(1), - }; - if util::animation_disabled() { - self.inner.change_page(self.current); - ctx.request_paint(); - return SwipableResult::Animating; - } - self.transition = Some(Transition { - cloned: unwrap!(Gc::new(self.inner.clone())), - animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION_MS, Instant::now()), - direction, - }); - self.inner.change_page(self.current); - ctx.request_anim_frame(); - ctx.request_paint(); - SwipableResult::Animating - } - - fn swipe_finished(&self) -> bool { - self.transition.is_none() - } -} - #[cfg(feature = "ui_debug")] impl<T> crate::trace::Trace for SwipePage<T> where @@ -176,44 +96,3 @@ where self.inner.trace(t) } } - -/// Make any component swipable by ignoring all swipe events. -pub struct IgnoreSwipe<T>(T); - -impl<T> IgnoreSwipe<T> { - pub fn new(inner: T) -> Self { - IgnoreSwipe(inner) - } -} - -impl<T: Component> Component for IgnoreSwipe<T> { - type Msg = T::Msg; - - fn place(&mut self, bounds: Rect) -> Rect { - self.0.place(bounds) - } - - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - self.0.event(ctx, event) - } - - fn paint(&mut self) { - self.0.paint() - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.0.render(target) - } -} - -impl<T: Component> Swipable<T::Msg> for IgnoreSwipe<T> {} - -#[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for IgnoreSwipe<T> -where - T: crate::trace::Trace, -{ - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - self.0.trace(t) - } -} diff --git a/core/embed/rust/src/ui/flow/store.rs b/core/embed/rust/src/ui/flow/store.rs index cf1bd2d60a..188eab5297 100644 --- a/core/embed/rust/src/ui/flow/store.rs +++ b/core/embed/rust/src/ui/flow/store.rs @@ -3,17 +3,21 @@ use crate::{ maybe_trace::MaybeTrace, ui::{ component::{Component, Event, EventCtx}, - flow::base::{FlowMsg, Swipable}, + flow::base::FlowMsg, geometry::Rect, shape::Renderer, }, }; -use crate::micropython::gc::Gc; +use crate::{ + micropython::gc::Gc, + ui::{component::swipe_detect::SwipeConfig, flow::Swipable}, +}; -/// `FlowStore` is essentially `Vec<Gc<dyn Component + Swipable>>` except that -/// `trait Component` is not object-safe so it ends up being a kind of +/// `FlowStore` is essentially `Vec<Gc<dyn Component + SimpleSwipable>>` except +/// that `trait Component` is not object-safe so it ends up being a kind of /// recursively-defined tuple. +/// Implementors are something like the V in MVC. pub trait FlowStore { /// Call `Component::place` on all elements. fn place(&mut self, bounds: Rect) -> Rect; @@ -28,15 +32,15 @@ pub trait FlowStore { /// Call `Trace::trace` on i-th element. fn trace(&self, i: usize, t: &mut dyn crate::trace::Tracer); - /// Forward `Swipable` methods to i-th element. - fn map_swipable<T>( - &mut self, - i: usize, - func: impl FnOnce(&mut dyn Swipable<FlowMsg>) -> T, - ) -> T; + /// Forward `SimpleSwipable` methods to i-th element. + fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T; + + fn get_swipe_config(&self, i: usize) -> SwipeConfig; + + fn get_internal_page_count(&mut self, i: usize) -> usize; /// Add a Component to the end of a `FlowStore`. - fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable<FlowMsg>>( + fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( self, elem: E, ) -> Result<impl FlowStore, error::Error> @@ -62,7 +66,7 @@ impl FlowStore for FlowEmpty { panic!() } - fn render<'s>(&'s self, _i: usize, _target: &mut impl Renderer<'s>) { + fn render<'s>(&self, _i: usize, _target: &mut impl Renderer<'s>) { panic!() } @@ -71,29 +75,31 @@ impl FlowStore for FlowEmpty { panic!() } - fn map_swipable<T>( - &mut self, - _i: usize, - _func: impl FnOnce(&mut dyn Swipable<FlowMsg>) -> T, - ) -> T { + fn map_swipable<T>(&mut self, _i: usize, _func: impl FnOnce(&mut dyn Swipable) -> T) -> T { panic!() } - fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable<FlowMsg>>( + fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( self, elem: E, ) -> Result<impl FlowStore, error::Error> where Self: Sized, { - Ok(FlowComponent { + Ok(FlowComponent2 { elem: Gc::new(elem)?, next: Self, }) } + fn get_swipe_config(&self, _i: usize) -> SwipeConfig { + SwipeConfig::new() + } + fn get_internal_page_count(&mut self, _i: usize) -> usize { + 1 + } } -struct FlowComponent<E: Component<Msg = FlowMsg>, P> { +struct FlowComponent2<E: Component<Msg = FlowMsg>, P> { /// Component allocated on micropython heap. pub elem: Gc<E>, @@ -101,7 +107,7 @@ struct FlowComponent<E: Component<Msg = FlowMsg>, P> { pub next: P, } -impl<E: Component<Msg = FlowMsg>, P> FlowComponent<E, P> { +impl<E: Component<Msg = FlowMsg>, P> FlowComponent2<E, P> { fn as_ref(&self) -> &E { &self.elem } @@ -113,9 +119,9 @@ impl<E: Component<Msg = FlowMsg>, P> FlowComponent<E, P> { } } -impl<E, P> FlowStore for FlowComponent<E, P> +impl<E, P> FlowStore for FlowComponent2<E, P> where - E: Component<Msg = FlowMsg> + MaybeTrace + Swipable<FlowMsg>, + E: Component<Msg = FlowMsg> + MaybeTrace + Swipable, P: FlowStore, { fn place(&mut self, bounds: Rect) -> Rect { @@ -149,11 +155,7 @@ where } } - fn map_swipable<T>( - &mut self, - i: usize, - func: impl FnOnce(&mut dyn Swipable<FlowMsg>) -> T, - ) -> T { + fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T { if i == 0 { func(self.as_mut()) } else { @@ -161,16 +163,28 @@ where } } - fn add<F: Component<Msg = FlowMsg> + MaybeTrace + Swipable<FlowMsg>>( + fn add<F: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( self, elem: F, ) -> Result<impl FlowStore, error::Error> where Self: Sized, { - Ok(FlowComponent { + Ok(FlowComponent2 { elem: self.elem, next: self.next.add(elem)?, }) } + + fn get_swipe_config(&self, i: usize) -> SwipeConfig { + if i == 0 { + self.as_ref().get_swipe_config() + } else { + self.next.get_swipe_config(i - 1) + } + } + + fn get_internal_page_count(&mut self, i: usize) -> usize { + self.map_swipable(i, |swipable| swipable.get_internal_page_count()) + } } diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 70bb21c1df..faf593d6a1 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -1,13 +1,15 @@ use crate::{ error, - time::Instant, ui::{ - animation::Animation, - component::{Component, Event, EventCtx, Swipe, SwipeDirection}, - flow::{base::Decision, FlowMsg, FlowState, FlowStore, SwipableResult}, + component::{ + base::AttachType, swipe_detect::SwipeSettings, Component, Event, EventCtx, SwipeDetect, + SwipeDetectMsg, SwipeDirection, + }, + event::SwipeEvent, + flow::{base::Decision, FlowMsg, FlowState, FlowStore}, geometry::Rect, shape::Renderer, - util, + util::animation_disabled, }, }; @@ -22,131 +24,72 @@ pub struct SwipeFlow<Q, S> { state: Q, /// FlowStore with all screens/components. store: S, - /// `Transition::None` when state transition animation is in not progress. - transition: Transition<Q>, /// Swipe detector. - swipe: Swipe, -} - -enum Transition<Q> { - /// SwipeFlow is performing transition between different states. - External { - /// State we are transitioning _from_. - prev_state: Q, - /// Animation progress. - animation: Animation<f32>, - /// Direction of the slide animation. - direction: SwipeDirection, - }, - /// Transition runs in child component, we forward events and wait. - Internal, - /// No transition. - None, + swipe: SwipeDetect, + /// Swipe allowed + allow_swipe: bool, + /// Current internal state + internal_state: u16, + /// Internal pages count + internal_pages: u16, + /// If triggering swipe by event, make this decision instead of default + /// after the swipe. + decision_override: Option<Decision<Q>>, } impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { pub fn new(init: Q, store: S) -> Result<Self, error::Error> { Ok(Self { state: init, + swipe: SwipeDetect::new(), store, - transition: Transition::None, - swipe: Swipe::new().down().up().left().right(), + allow_swipe: true, + internal_state: 0, + internal_pages: 1, + decision_override: None, }) } - fn goto(&mut self, ctx: &mut EventCtx, direction: SwipeDirection, state: Q) { - if util::animation_disabled() { - if state == self.state { - assert!(self - .store - .map_swipable(state.index(), |s| s.swipe_finished())); - } - self.state = state; - self.store.event(state.index(), ctx, Event::Attach); - ctx.request_paint(); - return; - } - if state == self.state { - self.transition = Transition::Internal; - return; - } - self.transition = Transition::External { - prev_state: self.state, - animation: Animation::new(0.0f32, 1.0f32, util::SLIDE_DURATION_MS, Instant::now()), - direction, - }; self.state = state; - ctx.request_anim_frame(); - ctx.request_paint(); - } + self.swipe = SwipeDetect::new(); + self.allow_swipe = true; - fn render_state<'s>(&'s self, state: Q, target: &mut impl Renderer<'s>) { - self.store.render(state.index(), target) - } - - fn render_transition<'s>( - &'s self, - prev_state: &Q, - animation: &Animation<f32>, - direction: &SwipeDirection, - target: &mut impl Renderer<'s>, - ) { - util::render_slide( - |target| self.render_state(*prev_state, target), - |target| self.render_state(self.state, target), - animation.value(Instant::now()), - *direction, - target, + self.store.event( + state.index(), + ctx, + Event::Attach(AttachType::Swipe(direction)), ); - } - fn handle_transition(&mut self, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg> { - let i = self.state.index(); - let mut finished = false; - let result = match &self.transition { - Transition::External { animation, .. } - if matches!(event, Event::Timer(EventCtx::ANIM_FRAME_TIMER)) => - { - if animation.finished(Instant::now()) { - finished = true; - ctx.request_paint(); - self.store.event(i, ctx, Event::Attach) - } else { - ctx.request_anim_frame(); - ctx.request_paint(); - None - } + self.internal_pages = self.store.get_internal_page_count(state.index()) as u16; + + match direction { + SwipeDirection::Up => { + self.internal_state = 0; } - Transition::External { .. } => None, // ignore all events until animation finishes - Transition::Internal => { - let msg = self.store.event(i, ctx, event); - if self.store.map_swipable(i, |s| s.swipe_finished()) { - finished = true; - }; - msg + SwipeDirection::Down => { + self.internal_state = self.internal_pages.saturating_sub(1); } - Transition::None => unreachable!(), - }; - if finished { - self.transition = Transition::None; + _ => {} } - result + + ctx.request_paint(); } - fn handle_swipe_child(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) -> Decision<Q> { - let i = self.state.index(); - match self - .store - .map_swipable(i, |s| s.swipe_start(ctx, direction)) - { - SwipableResult::Ignored => Decision::Nothing, - SwipableResult::Animating => Decision::Goto(self.state, direction), - SwipableResult::Return(x) => Decision::Return(x), - } + fn render_state<'s>(&'s self, state: Q, target: &mut impl Renderer<'s>) { + self.store.render(state.index(), target) + } + + fn handle_swipe_child( + &mut self, + _ctx: &mut EventCtx, + direction: SwipeDirection, + ) -> Decision<Q> { + self.state.handle_swipe(direction) } fn handle_event_child(&mut self, ctx: &mut EventCtx, event: Event) -> Decision<Q> { let msg = self.store.event(self.state.index(), ctx, event); + if let Some(msg) = msg { self.state.handle_event(msg) } else { @@ -159,44 +102,146 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { type Msg = FlowMsg; fn place(&mut self, bounds: Rect) -> Rect { - self.swipe.place(bounds); self.store.place(bounds) } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if !matches!(self.transition, Transition::None) { - return self.handle_transition(ctx, event); - } + let mut decision: Decision<Q> = Decision::Nothing; + + let mut attach = false; + + let e = if self.allow_swipe { + let mut config = self.store.get_swipe_config(self.state.index()); + + self.internal_pages = self.store.get_internal_page_count(self.state.index()) as u16; + + // add additional swipe directions if there are more internal pages + // todo can we get internal settings from config somehow? + // might wanna different duration or something + if config.vertical_pages && self.internal_state > 0 { + config = config.with_swipe(SwipeDirection::Down, SwipeSettings::default()) + } + if config.horizontal_pages && self.internal_state > 0 { + config = config.with_swipe(SwipeDirection::Right, SwipeSettings::default()) + } + if config.vertical_pages && self.internal_state < self.internal_pages - 1 { + config = config.with_swipe(SwipeDirection::Up, SwipeSettings::default()) + } + if config.horizontal_pages && self.internal_state < self.internal_pages - 1 { + config = config.with_swipe(SwipeDirection::Left, SwipeSettings::default()) + } + + match self.swipe.event(ctx, event, config.clone()) { + Some(SwipeDetectMsg::Trigger(dir)) => { + if let Some(override_decision) = self.decision_override.take() { + decision = override_decision; + } else { + decision = self.handle_swipe_child(ctx, dir); + } - let mut decision = Decision::Nothing; - if let Some(direction) = self.swipe.event(ctx, event) { - decision = self - .handle_swipe_child(ctx, direction) - .or_else(|| self.state.handle_swipe(direction)); + let states_num = self.internal_pages; + if states_num > 0 { + if config.has_horizontal_pages() { + let current_state = self.internal_state; + if dir == SwipeDirection::Left && current_state < states_num - 1 { + self.internal_state += 1; + decision = Decision::Nothing; + attach = true; + } else if dir == SwipeDirection::Right && current_state > 0 { + self.internal_state -= 1; + decision = Decision::Nothing; + attach = true; + } + } + if config.has_vertical_pages() { + let current_state = self.internal_state; + if dir == SwipeDirection::Up && current_state < states_num - 1 { + self.internal_state += 1; + decision = Decision::Nothing; + attach = true; + } else if dir == SwipeDirection::Down && current_state > 0 { + self.internal_state -= 1; + decision = Decision::Nothing; + attach = true; + } + } + } + + Some(Event::Swipe(SwipeEvent::End(dir))) + } + Some(SwipeDetectMsg::Move(dir, progress)) => { + Some(Event::Swipe(SwipeEvent::Move(dir, progress))) + } + _ => Some(event), + } + } else { + Some(event) + }; + + if let Some(e) = e { + match decision { + Decision::Nothing => { + decision = self.handle_event_child(ctx, e); + + // when doing internal transition, pass attach event to the child after sending + // swipe end. + if attach { + if let Event::Swipe(SwipeEvent::End(dir)) = e { + self.store.event( + self.state.index(), + ctx, + Event::Attach(AttachType::Swipe(dir)), + ); + } + } + + if ctx.disable_swipe_requested() { + self.swipe.reset(); + self.allow_swipe = false; + } + if ctx.enable_swipe_requested() { + self.swipe.reset(); + self.allow_swipe = true; + }; + + let config = self.store.get_swipe_config(self.state.index()); + + if let Decision::Goto(_, direction) = decision { + if config.is_allowed(direction) { + if !animation_disabled() { + self.swipe.trigger(ctx, direction, config); + self.decision_override = Some(decision); + decision = Decision::Nothing; + } + self.allow_swipe = true; + } + } + } + _ => { + //ignore message, we are already transitioning + self.store.event(self.state.index(), ctx, event); + } + } } - decision = decision.or_else(|| self.handle_event_child(ctx, event)); match decision { - Decision::Nothing => None, Decision::Goto(next_state, direction) => { self.goto(ctx, direction, next_state); None } - Decision::Return(msg) => Some(msg), + Decision::Return(msg) => { + self.swipe.reset(); + self.allow_swipe = true; + Some(msg) + } + _ => None, } } fn paint(&mut self) {} fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - match &self.transition { - Transition::None | Transition::Internal => self.render_state(self.state, target), - Transition::External { - prev_state, - animation, - direction, - } => self.render_transition(prev_state, animation, direction, target), - } + self.render_state(self.state, target); } } diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 154b7f507c..3b62139329 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -25,6 +25,7 @@ use crate::{ }, }; +use crate::ui::component::base::AttachType; #[cfg(feature = "new_rendering")] use crate::ui::{display::Color, shape::render_on_display}; @@ -379,7 +380,7 @@ extern "C" fn ui_layout_attach_timer_fn(this: Obj, timer_fn: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; this.obj_set_timer_fn(timer_fn); - let msg = this.obj_event(Event::Attach)?; + let msg = this.obj_event(Event::Attach(AttachType::Initial))?; assert!(msg == Obj::const_none()); Ok(Obj::const_none()) }; diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index 79cde1c1f1..01e9c6f528 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -6,9 +6,12 @@ use crate::{ translations::TR, ui::{ component::{ + swipe_detect::{SwipeConfig, SwipeSettings}, text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, - Component, Event, EventCtx, Paginate, + Component, Event, EventCtx, Paginate, SwipeDirection, }, + event::SwipeEvent, + flow::Swipable, geometry::Rect, shape::Renderer, }, @@ -56,12 +59,15 @@ impl AddressDetails { } let result = Self { details: Frame::left_aligned(details_title, para.into_paragraphs()) - .with_cancel_button(), + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .with_horizontal_pages(), xpub_view: Frame::left_aligned( " \n ".into(), Paragraph::new(&theme::TEXT_MONO_GREY_LIGHT, "").into_paragraphs(), ) - .with_cancel_button(), + .with_cancel_button() + .with_horizontal_pages(), xpubs: Vec::new(), xpub_page_count: Vec::new(), current_page: 0, @@ -113,8 +119,7 @@ impl AddressDetails { impl Paginate for AddressDetails { fn page_count(&mut self) -> usize { - let total_xpub_pages: u8 = self.xpub_page_count.iter().copied().sum(); - 1usize.saturating_add(total_xpub_pages.into()) + self.get_internal_page_count() } fn change_page(&mut self, to_page: usize) { @@ -144,6 +149,22 @@ impl Component for AddressDetails { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + ctx.set_page_count(self.page_count()); + match event { + Event::Swipe(SwipeEvent::End(SwipeDirection::Right)) => { + let to_page = self.current_page.saturating_sub(1); + self.change_page(to_page); + } + Event::Swipe(SwipeEvent::End(SwipeDirection::Left)) => { + let to_page = self + .current_page + .saturating_add(1) + .min(self.page_count() - 1); + self.change_page(to_page); + } + _ => {} + } + let msg = match self.current_page { 0 => self.details.event(ctx, event), _ => self.xpub_view.event(ctx, event), @@ -177,6 +198,20 @@ impl Component for AddressDetails { } } +impl Swipable for AddressDetails { + fn get_swipe_config(&self) -> SwipeConfig { + match self.current_page { + 0 => self.details.get_swipe_config(), + _ => self.xpub_view.get_swipe_config(), + } + } + + fn get_internal_page_count(&self) -> usize { + let total_xpub_pages: u8 = self.xpub_page_count.iter().copied().sum(); + 1usize.saturating_add(total_xpub_pages.into()) + } +} + #[cfg(feature = "ui_debug")] impl crate::trace::Trace for AddressDetails { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 2a031d07f9..89a6acafa1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -350,6 +350,7 @@ impl Component for Button { if let Some(duration) = self.long_press { self.long_timer = Some(ctx.request_timer(duration)); } + ctx.disable_swipe(); return Some(ButtonMsg::Pressed); } } @@ -360,6 +361,7 @@ impl Component for Button { State::Pressed if !touch_area.contains(pos) => { // Touch is leaving our area, transform to `Released` state. self.set(ctx, State::Released); + ctx.enable_swipe(); return Some(ButtonMsg::Released); } _ => { @@ -375,11 +377,13 @@ impl Component for Button { State::Pressed if touch_area.contains(pos) => { // Touch finished in our area, we got clicked. self.set(ctx, State::Initial); + ctx.enable_swipe(); return Some(ButtonMsg::Clicked); } _ => { // Touch finished outside our area. self.set(ctx, State::Initial); + ctx.enable_swipe(); self.long_timer = None; } } diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs index 7fc2c7837c..bda59ffbff 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -92,7 +92,7 @@ where _ if animation_disabled() => { return None; } - Event::Attach if self.indeterminate => { + Event::Attach(_) if self.indeterminate => { ctx.request_anim_frame(); } Event::Timer(EventCtx::ANIM_FRAME_TIMER) => { diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs index 0229e89051..26e0221f5a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ b/core/embed/rust/src/ui/model_mercury/component/dialog.rs @@ -228,6 +228,3 @@ where t.child("controls", &self.controls); } } - -#[cfg(feature = "micropython")] -impl<U: Component> crate::ui::flow::Swipable<U::Msg> for IconDialog<U> {} diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index 4161b2ba87..e8e9a12816 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -1,9 +1,13 @@ use crate::{ strutil::TString, ui::{ - component::{text::TextStyle, Component, Event, EventCtx, Never}, + component::{text::TextStyle, Component, Event, EventCtx, Never, SwipeDirection}, + display::Color, + event::SwipeEvent, geometry::{Alignment, Offset, Rect}, + lerp::Lerp, model_mercury::theme, + shape, shape::{Renderer, Text}, }, }; @@ -21,6 +25,10 @@ pub struct Footer<'a> { text_description: Option<TString<'a>>, style_instruction: &'static TextStyle, style_description: &'static TextStyle, + swipe_allow_up: bool, + swipe_allow_down: bool, + progress: i16, + dir: SwipeDirection, } impl<'a> Footer<'a> { @@ -36,6 +44,10 @@ impl<'a> Footer<'a> { text_description: None, style_instruction: &theme::TEXT_SUB_GREY, style_description: &theme::TEXT_SUB_GREY_LIGHT, + swipe_allow_down: false, + swipe_allow_up: false, + progress: 0, + dir: SwipeDirection::Up, } } @@ -73,6 +85,19 @@ impl<'a> Footer<'a> { Footer::HEIGHT_SIMPLE } } + + pub fn with_swipe_up(self) -> Self { + Self { + swipe_allow_up: true, + ..self + } + } + pub fn with_swipe_down(self) -> Self { + Self { + swipe_allow_down: true, + ..self + } + } } impl<'a> Component for Footer<'a> { @@ -85,7 +110,29 @@ impl<'a> Component for Footer<'a> { bounds } - fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { + fn event(&mut self, _ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + match event { + Event::Attach(_) => { + self.progress = 0; + } + Event::Swipe(SwipeEvent::Move(dir, progress)) => match dir { + SwipeDirection::Up => { + if self.swipe_allow_up { + self.progress = progress; + self.dir = dir; + } + } + SwipeDirection::Down => { + if self.swipe_allow_down { + self.progress = progress; + self.dir = dir; + } + } + _ => {} + }, + _ => {} + }; + None } @@ -95,41 +142,68 @@ impl<'a> Component for Footer<'a> { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - // show description only if there is space for it - if self.area.height() == Footer::HEIGHT_DEFAULT { - if let Some(description) = self.text_description { - let area_description = self.area.split_top(Footer::HEIGHT_SIMPLE).0; - let text_description_font_descent = self - .style_description - .text_font - .visible_text_height_ex("Ay") - .1; - let text_description_baseline = - area_description.bottom_center() - Offset::y(text_description_font_descent); - - description.map(|t| { - Text::new(text_description_baseline, t) - .with_font(self.style_description.text_font) - .with_fg(self.style_description.text_color) - .with_align(Alignment::Center) - .render(target); - }); + let progress = self.progress as f32 / 1000.0; + + let shift = pareen::constant(0.0).seq_ease_out( + 0.0, + easer::functions::Cubic, + 1.0, + pareen::constant(1.0), + ); + + let offset = i16::lerp(0, 20, shift.eval(progress)); + + let mask = u8::lerp(0, 255, shift.eval(progress)); + + let offset = match self.dir { + SwipeDirection::Up => Offset::y(-offset), + SwipeDirection::Down => Offset::y(3 * offset), + _ => Offset::zero(), + }; + + target.with_origin(offset, &|target| { + // show description only if there is space for it + if self.area.height() == Footer::HEIGHT_DEFAULT { + if let Some(description) = self.text_description { + let area_description = self.area.split_top(Footer::HEIGHT_SIMPLE).0; + let text_description_font_descent = self + .style_description + .text_font + .visible_text_height_ex("Ay") + .1; + let text_description_baseline = + area_description.bottom_center() - Offset::y(text_description_font_descent); + + description.map(|t| { + Text::new(text_description_baseline, t) + .with_font(self.style_description.text_font) + .with_fg(self.style_description.text_color) + .with_align(Alignment::Center) + .render(target); + }); + } } - } - let area_instruction = self.area.split_bottom(Footer::HEIGHT_SIMPLE).1; - let text_instruction_font_descent = self - .style_instruction - .text_font - .visible_text_height_ex("Ay") - .1; - let text_instruction_baseline = - area_instruction.bottom_center() - Offset::y(text_instruction_font_descent); - self.text_instruction.map(|t| { - Text::new(text_instruction_baseline, t) - .with_font(self.style_instruction.text_font) - .with_fg(self.style_instruction.text_color) - .with_align(Alignment::Center) + let area_instruction = self.area.split_bottom(Footer::HEIGHT_SIMPLE).1; + let text_instruction_font_descent = self + .style_instruction + .text_font + .visible_text_height_ex("Ay") + .1; + let text_instruction_baseline = + area_instruction.bottom_center() - Offset::y(text_instruction_font_descent); + self.text_instruction.map(|t| { + Text::new(text_instruction_baseline, t) + .with_font(self.style_instruction.text_font) + .with_fg(self.style_instruction.text_color) + .with_align(Alignment::Center) + .render(target); + }); + + shape::Bar::new(self.area) + .with_alpha(mask) + .with_fg(Color::black()) + .with_bg(Color::black()) .render(target); }); } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index c3735d2477..d93ccb2af8 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -2,11 +2,20 @@ use crate::{ strutil::TString, ui::{ component::{ - base::ComponentExt, label::Label, text::TextStyle, Child, Component, Event, EventCtx, + base::ComponentExt, + label::Label, + swipe_detect::{SwipeConfig, SwipeSettings}, + text::TextStyle, + Child, Component, Event, + Event::Swipe, + EventCtx, SwipeDetect, SwipeDirection, }, display::Icon, - geometry::{Alignment, Insets, Rect}, + event::SwipeEvent, + geometry::{Alignment, Insets, Point, Rect}, + lerp::Lerp, model_mercury::theme::TITLE_HEIGHT, + shape, shape::Renderer, }, }; @@ -18,13 +27,17 @@ const BUTTON_EXPAND_BORDER: i16 = 32; #[derive(Clone)] pub struct Frame<T> { border: Insets, + bounds: Rect, title: Child<Label<'static>>, subtitle: Option<Child<Label<'static>>>, button: Option<Child<Button>>, button_msg: CancelInfoConfirmMsg, content: Child<T>, footer: Option<Footer<'static>>, - overlapping_content: bool, + swipe: SwipeConfig, + internal_page_cnt: usize, + progress: i16, + dir: SwipeDirection, } pub enum FrameMsg<T> { @@ -41,13 +54,17 @@ where title: Child::new( Label::new(title, alignment, theme::label_title_main()).vertically_centered(), ), + bounds: Rect::zero(), subtitle: None, border: theme::borders(), button: None, button_msg: CancelInfoConfirmMsg::Cancelled, content: Child::new(content), footer: None, - overlapping_content: false, + swipe: SwipeConfig::new(), + internal_page_cnt: 1, + progress: 0, + dir: SwipeDirection::Up, } } @@ -155,6 +172,31 @@ where res }) } + + pub fn with_swipe(self, dir: SwipeDirection, settings: SwipeSettings) -> Self { + Self { + footer: self.footer.map(|f| match dir { + SwipeDirection::Up => f.with_swipe_up(), + SwipeDirection::Down => f.with_swipe_down(), + _ => f, + }), + swipe: self.swipe.with_swipe(dir, settings), + ..self + } + } + + pub fn with_horizontal_pages(self) -> Self { + Self { + swipe: self.swipe.with_horizontal_pages(), + ..self + } + } + pub fn with_vertical_pages(self) -> Self { + Self { + swipe: self.swipe.with_vertical_pages(), + ..self + } + } } impl<T> Component for Frame<T> @@ -164,6 +206,8 @@ where type Msg = FrameMsg<T::Msg>; fn place(&mut self, bounds: Rect) -> Rect { + self.bounds = bounds; + let (mut header_area, mut content_area) = bounds.split_top(TITLE_HEIGHT); content_area = content_area.inset(Insets::top(theme::SPACING)); header_area = header_area.inset(Insets::sides(theme::SPACING)); @@ -190,18 +234,37 @@ where footer.place(footer_area); content_area = remaining; } - if self.overlapping_content { - self.content.place(bounds); - } else { - self.content.place(content_area); - } + + self.content.place(content_area); + bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Event::Attach(_) = event { + self.progress = 0; + } + + if let Swipe(SwipeEvent::Move(dir, progress)) = event { + if self.swipe.is_allowed(dir) { + match dir { + SwipeDirection::Left | SwipeDirection::Right => { + self.progress = progress; + self.dir = dir; + } + _ => {} + } + } + } + self.title.event(ctx, event); self.subtitle.event(ctx, event); + self.footer.event(ctx, event); let msg = self.content.event(ctx, event).map(FrameMsg::Content); + if let Some(count) = ctx.page_count() { + self.internal_page_cnt = count; + } + if msg.is_some() { return msg; } @@ -224,6 +287,32 @@ where self.button.render(target); self.footer.render(target); self.content.render(target); + + if self.progress > 0 { + match self.dir { + SwipeDirection::Left => { + let shift = pareen::constant(0.0).seq_ease_out( + 0.0, + easer::functions::Circ, + 1.0, + pareen::constant(1.0), + ); + + let p = Point::lerp( + self.bounds.top_right(), + self.bounds.top_left(), + shift.eval(self.progress as f32 / SwipeDetect::PROGRESS_MAX as f32), + ); + + shape::Bar::new(Rect::new(p, self.bounds.bottom_right())) + .with_fg(theme::BLACK) + .with_bg(theme::BLACK) + .render(target); + } + SwipeDirection::Right => {} + _ => {} + } + } } #[cfg(feature = "ui_bounds")] @@ -236,6 +325,17 @@ where } } +#[cfg(feature = "micropython")] +impl<T> crate::ui::flow::Swipable for Frame<T> { + fn get_swipe_config(&self) -> SwipeConfig { + self.swipe + } + + fn get_internal_page_count(&self) -> usize { + self.internal_page_cnt + } +} + #[cfg(feature = "ui_debug")] impl<T> crate::trace::Trace for Frame<T> where @@ -256,22 +356,3 @@ where } } } - -#[cfg(feature = "micropython")] -impl<T> crate::ui::flow::Swipable<FrameMsg<T::Msg>> for Frame<T> -where - T: Component + crate::ui::flow::Swipable<T::Msg>, -{ - fn swipe_start( - &mut self, - ctx: &mut EventCtx, - direction: crate::ui::component::SwipeDirection, - ) -> crate::ui::flow::SwipableResult<FrameMsg<T::Msg>> { - self.update_content(ctx, |ctx, inner| inner.swipe_start(ctx, direction)) - .map(|x| Some(FrameMsg::Content(x))) - } - - fn swipe_finished(&self) -> bool { - self.inner().swipe_finished() - } -} diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs index 025386be0d..b769dd9f7b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -36,6 +36,10 @@ impl HoldToConfirmAnim { const DURATION_MS: u32 = 2200; pub fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + self.timer .is_running_within(Duration::from_millis(Self::DURATION_MS)) } @@ -332,9 +336,6 @@ impl Component for HoldToConfirm { } } -#[cfg(feature = "micropython")] -impl crate::ui::flow::Swipable<()> for HoldToConfirm {} - #[cfg(feature = "ui_debug")] impl crate::trace::Trace for HoldToConfirm { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index 1eaf07e62d..06a3cbb4cc 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -328,12 +328,12 @@ impl Component for Lockscreen { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if event == Event::Attach { + if let Event::Attach(_) = event { ctx.request_anim_frame(); } if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { - if (!animation_disabled()) { + if !animation_disabled() { if !self.anim.timer.is_running() { self.anim.timer.start(); } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index 600c10d452..8abda3993b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -186,7 +186,7 @@ impl Component for PinKeyboard<'_> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { match event { // Set up timer to switch off warning prompt. - Event::Attach if self.major_warning.is_some() => { + Event::Attach(_) if self.major_warning.is_some() => { self.warning_timer = Some(ctx.request_timer(Duration::from_secs(2))); } // Hide warning, show major prompt. diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index fab985724b..a1e7acc4d6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -36,6 +36,8 @@ mod set_brightness; mod share_words; mod simple_page; mod status_screen; +mod swipe_content; +#[cfg(feature = "translations")] mod swipe_up_screen; #[cfg(feature = "translations")] mod tap_to_confirm; @@ -85,6 +87,8 @@ pub use set_brightness::SetBrightnessDialog; pub use share_words::ShareWords; pub use simple_page::SimplePage; pub use status_screen::StatusScreen; +pub use swipe_content::SwipeContent; +#[cfg(feature = "translations")] pub use swipe_up_screen::{SwipeUpScreen, SwipeUpScreenMsg}; #[cfg(feature = "translations")] pub use tap_to_confirm::TapToConfirm; diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index d3ff1c18fd..d906b9e025 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -9,7 +9,7 @@ use crate::{ Child, Component, Event, EventCtx, Pad, SwipeDirection, }, display::Font, - flow::{Swipable, SwipableResult}, + event::SwipeEvent, geometry::{Alignment, Grid, Insets, Offset, Rect}, shape::{self, Renderer}, }, @@ -89,6 +89,10 @@ where if let Some(NumberInputMsg::Changed(i)) = self.input.event(ctx, event) { self.update_text(ctx, i); } + + if let Event::Swipe(SwipeEvent::End(SwipeDirection::Up)) = event { + return Some(NumberInputDialogMsg(self.input.inner().value)); + } self.paragraphs.event(ctx, event); None } @@ -111,26 +115,6 @@ where } } -impl<F> Swipable<NumberInputDialogMsg> for NumberInputDialog<F> -where - F: Fn(u32) -> TString<'static>, -{ - fn swipe_start( - &mut self, - _ctx: &mut EventCtx, - direction: SwipeDirection, - ) -> SwipableResult<NumberInputDialogMsg> { - match direction { - SwipeDirection::Up => SwipableResult::Return(NumberInputDialogMsg(self.value())), - _ => SwipableResult::Ignored, - } - } - - fn swipe_finished(&self) -> bool { - true - } -} - #[cfg(feature = "ui_debug")] impl<F> crate::trace::Trace for NumberInputDialog<F> where diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 2e63f41a6f..755ef28e2c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -68,9 +68,6 @@ impl Component for PromptScreen { } } -#[cfg(feature = "micropython")] -impl crate::ui::flow::Swipable<()> for PromptScreen {} - #[cfg(feature = "ui_debug")] impl crate::trace::Trace for PromptScreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 5cc6d52585..6390db49fa 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -1,12 +1,12 @@ use super::theme; use crate::{ strutil::TString, - time::{Duration, Instant}, + time::Duration, translations::TR, ui::{ animation::Animation, component::{Component, Event, EventCtx, Never, SwipeDirection}, - flow::{Swipable, SwipableResult}, + event::SwipeEvent, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, model_mercury::component::Footer, shape, @@ -25,14 +25,15 @@ const ANIMATION_DURATION_MS: Duration = Duration::from_millis(166); pub struct ShareWords<'a> { area: Rect, share_words: Vec<TString<'a>, MAX_WORDS>, - page_index: usize, - prev_index: usize, + page_index: i16, + next_index: i16, /// Area reserved for a shown word from mnemonic/share area_word: Rect, /// `Some` when transition animation is in progress animation: Option<Animation<f32>>, /// Footer component for instructions and word counting footer: Footer<'static>, + progress: i16, } impl<'a> ShareWords<'a> { @@ -43,10 +44,11 @@ impl<'a> ShareWords<'a> { area: Rect::zero(), share_words, page_index: 0, - prev_index: 0, + next_index: 0, area_word: Rect::zero(), animation: None, footer: Footer::new(TR::instructions__swipe_up), + progress: 0, } } @@ -55,12 +57,15 @@ impl<'a> ShareWords<'a> { } fn is_final_page(&self) -> bool { - self.page_index == self.share_words.len() - 1 + self.page_index == self.share_words.len() as i16 - 1 } - fn render_word<'s>(&self, word_index: usize, target: &mut impl Renderer<'s>) { + fn render_word<'s>(&self, word_index: i16, target: &mut impl Renderer<'s>) { // the share word - let word = self.share_words[word_index]; + if word_index >= self.share_words.len() as _ || word_index < 0 { + return; + } + let word = self.share_words[word_index as usize]; let word_baseline = target.viewport().clip.center() + Offset::y(theme::TEXT_SUPER.text_font.visible_text_height("A") / 2); word.map(|w| { @@ -93,16 +98,43 @@ impl<'a> Component for ShareWords<'a> { self.area } - fn event(&mut self, ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { - // ctx.set_page_count(self.share_words.len()); - if let Some(a) = &self.animation { - if a.finished(Instant::now()) { - self.animation = None; - } else { - ctx.request_anim_frame(); + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + ctx.set_page_count(self.share_words.len()); + + match event { + Event::Attach(_) => { + self.progress = 0; } - ctx.request_paint(); + Event::Swipe(SwipeEvent::End(dir)) => match dir { + SwipeDirection::Up if !self.is_final_page() => { + self.progress = 0; + self.page_index = (self.page_index + 1).min(self.share_words.len() as i16 - 1); + ctx.request_paint(); + } + SwipeDirection::Down if !self.is_first_page() => { + self.progress = 0; + self.page_index = self.page_index.saturating_sub(1); + ctx.request_paint(); + } + _ => {} + }, + Event::Swipe(SwipeEvent::Move(dir, progress)) => { + match dir { + SwipeDirection::Up => { + self.next_index = self.page_index + 1; + self.progress = progress; + } + SwipeDirection::Down => { + self.next_index = self.page_index - 1; + self.progress = progress; + } + _ => {} + } + ctx.request_paint(); + } + _ => {} } + None } @@ -132,13 +164,20 @@ impl<'a> Component for ShareWords<'a> { .with_fg(theme::GREY) .render(target); - if let Some(animation) = &self.animation { + if self.progress > 0 { target.in_clip(self.area_word, &|target| { + let progress = pareen::constant(0.0).seq_ease_out( + 0.0, + easer::functions::Cubic, + 1.0, + pareen::constant(1.0), + ); + util::render_slide( - |target| self.render_word(self.prev_index, target), |target| self.render_word(self.page_index, target), - animation.value(Instant::now()), - if self.prev_index < self.page_index { + |target| self.render_word(self.next_index, target), + progress.eval(self.progress as f32 / 1000.0), + if self.page_index < self.next_index { SwipeDirection::Up } else { SwipeDirection::Down @@ -160,48 +199,11 @@ impl<'a> Component for ShareWords<'a> { fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} } -impl<'a> Swipable<Never> for ShareWords<'a> { - fn swipe_start( - &mut self, - ctx: &mut EventCtx, - direction: SwipeDirection, - ) -> SwipableResult<Never> { - match direction { - SwipeDirection::Up if !self.is_final_page() => { - self.prev_index = self.page_index; - self.page_index = (self.page_index + 1).min(self.share_words.len() - 1); - } - SwipeDirection::Down if !self.is_first_page() => { - self.prev_index = self.page_index; - self.page_index = self.page_index.saturating_sub(1); - } - _ => return SwipableResult::Ignored, - }; - if util::animation_disabled() { - ctx.request_paint(); - return SwipableResult::Animating; - } - self.animation = Some(Animation::new( - 0.0f32, - 1.0f32, - ANIMATION_DURATION_MS, - Instant::now(), - )); - ctx.request_anim_frame(); - ctx.request_paint(); - SwipableResult::Animating - } - - fn swipe_finished(&self) -> bool { - self.animation.is_none() - } -} - #[cfg(feature = "ui_debug")] impl<'a> crate::trace::Trace for ShareWords<'a> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ShareWords"); - let word = &self.share_words[self.page_index]; + let word = &self.share_words[self.page_index as usize]; let content = word.map(|w| build_string!(50, inttostr!(self.page_index as u8 + 1), ". ", w, "\n")); t.string("screen_content", content.as_str().into()); diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index cc9d50e0e7..4d42f5e7e1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -1,7 +1,7 @@ use crate::{ time::{Duration, Stopwatch}, ui::{ - component::{Component, Event, EventCtx, Swipe, SwipeDirection, Timeout}, + component::{Component, Event, EventCtx, Timeout}, constant::screen, display::{Color, Icon}, geometry::{Alignment2D, Insets, Rect}, @@ -23,13 +23,17 @@ struct StatusAnimation { impl StatusAnimation { pub fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + self.timer .is_running_within(Duration::from_millis(TIMEOUT_MS)) } pub fn eval(&self) -> f32 { if animation_disabled() { - return 1.0; + return TIMEOUT_MS as f32 / 1000.0; } self.timer.elapsed().to_millis() as f32 / 1000.0 } @@ -96,7 +100,7 @@ pub struct StatusScreen { #[derive(Clone)] enum DismissType { - SwipeUp(Swipe), + SwipeUp, Timeout(Timeout), } @@ -117,7 +121,7 @@ impl StatusScreen { theme::ICON_SIMPLE_CHECKMARK, theme::GREEN_LIME, theme::GREEN_LIGHT, - DismissType::SwipeUp(Swipe::new().up()), + DismissType::SwipeUp, ) } @@ -135,7 +139,7 @@ impl StatusScreen { theme::ICON_SIMPLE_CHECKMARK, theme::GREY_EXTRA_LIGHT, theme::GREY_DARK, - DismissType::SwipeUp(Swipe::new().up()), + DismissType::SwipeUp, ) } @@ -154,14 +158,11 @@ impl Component for StatusScreen { fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; - if let DismissType::SwipeUp(swipe) = &mut self.dismiss_type { - swipe.place(bounds); - } bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if let Event::Attach = event { + if let Event::Attach(_) = event { self.anim.start(); ctx.request_paint(); ctx.request_anim_frame(); @@ -173,17 +174,9 @@ impl Component for StatusScreen { } } - match self.dismiss_type { - DismissType::SwipeUp(ref mut swipe) => { - let swipe_dir = swipe.event(ctx, event); - if let Some(SwipeDirection::Up) = swipe_dir { - return Some(()); - } - } - DismissType::Timeout(ref mut timeout) => { - if timeout.event(ctx, event).is_some() { - return Some(()); - } + if let DismissType::Timeout(ref mut timeout) = self.dismiss_type { + if timeout.event(ctx, event).is_some() { + return Some(()); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs new file mode 100644 index 0000000000..1c7adc8687 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs @@ -0,0 +1,258 @@ +use crate::{ + time::{Duration, Stopwatch}, + ui::{ + component::{base::AttachType, Component, Event, EventCtx, SwipeDirection}, + display::Color, + event::SwipeEvent, + geometry::{Offset, Rect}, + lerp::Lerp, + shape, + shape::Renderer, + util::animation_disabled, + }, +}; + +#[derive(Default, Clone)] +struct AttachAnimation { + pub timer: Stopwatch, +} + +impl AttachAnimation { + const DURATION_MS: u32 = 500; + pub fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + + self.timer + .is_running_within(Duration::from_millis(Self::DURATION_MS)) + } + + pub fn eval(&self) -> f32 { + if animation_disabled() { + return 1.0; + } + + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + pub fn get_offset(&self, t: f32, attach_type: Option<AttachType>) -> Offset { + let value = pareen::constant(0.0).seq_ease_in( + 0.0, + easer::functions::Linear, + Self::DURATION_MS as f32 / 1000.0, + pareen::constant(1.0), + ); + + match attach_type { + Some(AttachType::Swipe(dir)) => match dir { + SwipeDirection::Up => { + Offset::lerp(Offset::new(0, 20), Offset::zero(), value.eval(t)) + } + SwipeDirection::Down => { + Offset::lerp(Offset::new(0, -20), Offset::zero(), value.eval(t)) + } + _ => Offset::zero(), + }, + _ => Offset::zero(), + } + } + + pub fn get_opacity(&self, t: f32, attach_type: Option<AttachType>) -> u8 { + let value = pareen::constant(0.0).seq_ease_in_out( + 0.0, + easer::functions::Cubic, + 0.2, + pareen::constant(1.0), + ); + match attach_type { + Some(AttachType::Swipe(SwipeDirection::Up)) + | Some(AttachType::Swipe(SwipeDirection::Down)) => {} + _ => { + return 255; + } + } + u8::lerp(0, 255, value.eval(t)) + } + + pub fn start(&mut self) { + self.timer.start(); + } + + pub fn reset(&mut self) { + self.timer = Stopwatch::new_stopped(); + } +} + +pub struct SwipeContent<T> { + inner: T, + bounds: Rect, + progress: i16, + dir: SwipeDirection, + normal: Option<AttachType>, + attach_animation: AttachAnimation, + attach_type: Option<AttachType>, +} + +impl<T: Component> SwipeContent<T> { + pub fn new(inner: T) -> Self { + Self { + inner, + bounds: Rect::zero(), + progress: 0, + dir: SwipeDirection::Up, + normal: Some(AttachType::Swipe(SwipeDirection::Down)), + attach_animation: AttachAnimation::default(), + attach_type: None, + } + } + + pub fn with_normal_attach(self, attach_type: Option<AttachType>) -> Self { + Self { + normal: attach_type, + ..self + } + } +} + +impl<T: Component> Component for SwipeContent<T> { + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.bounds = self.inner.place(bounds); + self.bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Event::Attach(attach_type) = event { + self.progress = 0; + if let AttachType::Initial = attach_type { + self.attach_type = self.normal; + } else { + self.attach_type = Some(attach_type); + } + self.attach_animation.reset(); + ctx.request_anim_frame(); + } + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if !animation_disabled() { + if !self.attach_animation.timer.is_running() { + self.attach_animation.timer.start(); + } + if self.attach_animation.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + } + + if let Event::Swipe(SwipeEvent::Move(dir, progress)) = event { + match dir { + SwipeDirection::Up | SwipeDirection::Down => { + self.dir = dir; + self.progress = progress; + } + _ => {} + } + ctx.request_paint(); + ctx.request_anim_frame(); + } + + match event { + Event::Touch(_) => { + if self.attach_animation.is_active() { + None + } else { + self.inner.event(ctx, event) + } + } + _ => self.inner.event(ctx, event), + } + } + + fn paint(&mut self) { + self.inner.paint() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let progress = self.progress as f32 / 1000.0; + + let shift = pareen::constant(0.0).seq_ease_out( + 0.0, + easer::functions::Cubic, + 1.0, + pareen::constant(1.0), + ); + + let offset = i16::lerp(0, 50, shift.eval(progress)); + + let mask = u8::lerp(0, 255, shift.eval(progress)); + + if self.progress > 0 { + match self.dir { + SwipeDirection::Up => { + let offset = Offset::y(-offset); + target.in_clip(self.bounds, &|target| { + target.with_origin(offset, &|target| { + self.inner.render(target); + shape::Bar::new(self.bounds) + .with_alpha(mask) + .with_fg(Color::black()) + .with_bg(Color::black()) + .render(target); + }); + }); + } + SwipeDirection::Down => { + let offset = Offset::y(offset); + target.with_origin(offset, &|target| { + self.inner.render(target); + shape::Bar::new(self.bounds) + .with_alpha(mask) + .with_fg(Color::black()) + .with_bg(Color::black()) + .render(target); + }); + } + _ => {} + }; + } else { + let t = self.attach_animation.eval(); + let offset = self.attach_animation.get_offset(t, self.attach_type); + let opacity = self.attach_animation.get_opacity(t, self.attach_type); + + if offset.x != 0 || offset.y != 0 { + target.in_clip(self.bounds, &|target| { + target.with_origin(offset, &|target| { + self.inner.render(target); + shape::Bar::new(self.bounds) + .with_alpha(255 - opacity) + .with_fg(Color::black()) + .with_bg(Color::black()) + .render(target); + }); + }); + } else { + // some components draw outside their bounds during animations + // let them do that unless we are animating here + self.inner.render(target); + shape::Bar::new(self.bounds) + .with_alpha(255 - opacity) + .with_fg(Color::black()) + .with_bg(Color::black()) + .render(target); + } + } + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for SwipeContent<T> +where + T: crate::trace::Trace, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("SwipeContent"); + t.child("content", &self.inner); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index 05f90bab67..43e70e393f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -1,5 +1,7 @@ use crate::ui::{ - component::{Component, Event, EventCtx, Swipe, SwipeDirection}, + component::{Component, Event, EventCtx, SwipeDetect, SwipeDetectMsg}, + event::SwipeEvent, + flow::Swipable, geometry::Rect, shape::Renderer, }; @@ -7,7 +9,7 @@ use crate::ui::{ /// Wrapper component adding "swipe up" handling to `content`. pub struct SwipeUpScreen<T> { content: T, - swipe: Swipe, + swipe: SwipeDetect, } pub enum SwipeUpScreenMsg<T> { @@ -19,33 +21,40 @@ impl<T> SwipeUpScreen<T> where T: Component, { - pub fn new(content: T) -> Self { + pub fn new(content: T) -> Self + where + T: Swipable, + { Self { content, - swipe: Swipe::new().up(), + swipe: SwipeDetect::new(), } } } -impl<T> Component for SwipeUpScreen<T> -where - T: Component, -{ +impl<T: Swipable + Component> Component for SwipeUpScreen<T> { type Msg = SwipeUpScreenMsg<T::Msg>; fn place(&mut self, bounds: Rect) -> Rect { - self.swipe.place(bounds); self.content.place(bounds); bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if let Some(SwipeDirection::Up) = self.swipe.event(ctx, event) { - return Some(SwipeUpScreenMsg::Swiped); - } - self.content - .event(ctx, event) - .map(SwipeUpScreenMsg::Content) + let e = match self + .swipe + .event(ctx, event, self.content.get_swipe_config()) + { + Some(SwipeDetectMsg::Trigger(_)) => { + return Some(SwipeUpScreenMsg::Swiped); + } + Some(SwipeDetectMsg::Move(dir, progress)) => { + Event::Swipe(SwipeEvent::Move(dir, progress)) + } + _ => event, + }; + + self.content.event(ctx, e).map(SwipeUpScreenMsg::Content) } fn paint(&mut self) { diff --git a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs index 0a4993a758..e56b8f6b16 100644 --- a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs @@ -25,6 +25,10 @@ impl TapToConfirmAmin { const DURATION_MS: u32 = 600; pub fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + self.timer .is_running_within(Duration::from_millis(Self::DURATION_MS)) } @@ -161,33 +165,27 @@ impl Component for TapToConfirm { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { let btn_msg = self.button.event(ctx, event); - match btn_msg { - Some(ButtonMsg::Pressed) => { - self.anim.start(); - ctx.request_anim_frame(); - ctx.request_paint(); + if let Some(ButtonMsg::Clicked) = btn_msg { + if animation_disabled() { + return Some(()); } - Some(ButtonMsg::Released) => { - self.anim.reset(); - ctx.request_anim_frame(); - ctx.request_paint(); - } - Some(ButtonMsg::Clicked) => { - if animation_disabled() { - return Some(()); - } - } - _ => (), + self.anim.start(); + ctx.request_anim_frame(); + ctx.request_paint(); } - if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { - if self.anim.is_active() { - ctx.request_anim_frame(); - ctx.request_paint(); + + if !animation_disabled() { + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if self.anim.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } } + if self.anim.is_finished() { + ctx.enable_swipe(); + return Some(()); + }; } - if self.anim.is_finished() { - return Some(()); - }; None } @@ -245,9 +243,6 @@ impl Component for TapToConfirm { } } -#[cfg(feature = "micropython")] -impl crate::ui::flow::Swipable<()> for TapToConfirm {} - #[cfg(feature = "ui_debug")] impl crate::trace::Trace for TapToConfirm { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 6773be7a8c..15223c800a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -3,12 +3,16 @@ use heapless::Vec; use super::theme; use crate::{ strutil::TString, + time::{Duration, Stopwatch}, ui::{ component::{base::Component, Event, EventCtx}, - display::Icon, - geometry::Rect, + constant::screen, + display::{Color, Icon}, + geometry::{Offset, Rect}, + lerp::Lerp, model_mercury::component::button::{Button, ButtonMsg, IconText}, shape::{Bar, Renderer}, + util::animation_disabled, }, }; @@ -33,6 +37,84 @@ const MENU_SEP_HEIGHT: i16 = 2; type VerticalMenuButtons = Vec<Button, N_ITEMS>; type AreasForSeparators = Vec<Rect, N_SEPS>; +#[derive(Default, Clone)] +struct AttachAnimation { + pub timer: Stopwatch, + pub active: bool, +} + +impl AttachAnimation { + const DURATION_MS: u32 = 350; + fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + + self.timer + .is_running_within(Duration::from_millis(Self::DURATION_MS)) + } + + fn eval(&self) -> f32 { + if animation_disabled() { + return 1.0; + } + + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + fn get_offset(&self, t: f32) -> Offset { + let value = pareen::constant(0.0).seq_ease_in( + 0.0, + easer::functions::Cubic, + Self::DURATION_MS as f32 / 1000.0, + pareen::constant(1.0), + ); + + Offset::lerp(Offset::new(-40, 0), Offset::zero(), value.eval(t)) + } + + fn get_mask_width(&self, t: f32) -> i16 { + let value = pareen::constant(0.0).seq_ease_in( + 0.0, + easer::functions::Circ, + 0.15, + pareen::constant(1.0), + ); + //todo screen here is incorrect + i16::lerp(screen().width(), 0, value.eval(t)) + } + + fn start(&mut self) { + self.active = true; + self.timer.start(); + } + + fn reset(&mut self) { + self.active = false; + self.timer = Stopwatch::new_stopped(); + } + + fn lazy_start(&mut self, ctx: &mut EventCtx, event: Event) { + if let Event::Attach(_) = event { + self.reset(); + ctx.request_anim_frame(); + } + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if !self.timer.is_running() { + self.start(); + } + if self.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } else if self.active { + self.active = false; + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + } +} + #[derive(Clone)] pub struct VerticalMenu { area: Rect, @@ -40,6 +122,8 @@ pub struct VerticalMenu { buttons: VerticalMenuButtons, /// areas for visual separators between buttons areas_sep: AreasForSeparators, + + attach_animation: AttachAnimation, } impl VerticalMenu { @@ -48,6 +132,7 @@ impl VerticalMenu { area: Rect::zero(), buttons, areas_sep: AreasForSeparators::new(), + attach_animation: AttachAnimation::default(), } } pub fn select_word(words: [TString<'static>; 3]) -> Self { @@ -107,9 +192,13 @@ impl Component for VerticalMenu { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - for (i, button) in self.buttons.iter_mut().enumerate() { - if let Some(ButtonMsg::Clicked) = button.event(ctx, event) { - return Some(VerticalMenuChoiceMsg::Selected(i)); + self.attach_animation.lazy_start(ctx, event); + + if !self.attach_animation.is_active() { + for (i, button) in self.buttons.iter_mut().enumerate() { + if let Some(ButtonMsg::Clicked) = button.event(ctx, event) { + return Some(VerticalMenuChoiceMsg::Selected(i)); + } } } None @@ -120,16 +209,31 @@ impl Component for VerticalMenu { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - // render buttons separated by thin bars - for button in &self.buttons { - button.render(target); - } - for area in self.areas_sep.iter() { - Bar::new(*area) - .with_thickness(MENU_SEP_HEIGHT) - .with_fg(theme::GREY_EXTRA_DARK) + let t = self.attach_animation.eval(); + + let offset = self.attach_animation.get_offset(t); + let mask_width = self.attach_animation.get_mask_width(t); + + target.with_origin(offset, &|target| { + // render buttons separated by thin bars + for button in &self.buttons { + button.render(target); + } + for area in self.areas_sep.iter() { + Bar::new(*area) + .with_thickness(MENU_SEP_HEIGHT) + .with_fg(theme::GREY_EXTRA_DARK) + .render(target); + } + + // todo screen here is incorrect + let r = Rect::from_size(Offset::new(mask_width, screen().height())); + + Bar::new(r) + .with_fg(Color::black()) + .with_bg(Color::black()) .render(target); - } + }); } #[cfg(feature = "ui_bounds")] @@ -149,6 +253,3 @@ impl crate::trace::Trace for VerticalMenu { }); } } - -#[cfg(feature = "micropython")] -impl crate::ui::flow::Swipable<VerticalMenuChoiceMsg> for VerticalMenu {} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 73f73b217a..75f4871d55 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -4,10 +4,8 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::{ - text::paragraphs::Paragraph, Component, ComponentExt, Paginate, SwipeDirection, - }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + component::{text::paragraphs::Paragraph, ComponentExt, SwipeDirection}, + flow::{base::Decision, FlowMsg, FlowState, FlowStore}, }, }; @@ -107,8 +105,14 @@ impl FlowState for ConfirmActionSimple { use crate::{ micropython::{map::Map, obj::Obj, qstr::Qstr, util}, ui::{ - component::text::paragraphs::{ParagraphSource, ParagraphVecShort, VecExt}, + component::{ + swipe_detect::SwipeSettings, + text::paragraphs::{ParagraphSource, ParagraphVecShort, VecExt}, + Component, Paginate, + }, + flow::{flow_store, SwipeFlow, SwipePage}, layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; @@ -154,16 +158,22 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err paragraphs.into_paragraphs() }; - let mut content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None); + let mut content_intro = + Frame::left_aligned(title, SwipeContent::new(SwipePage::vertical(paragraphs))) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .with_vertical_pages(); if let Some(subtitle) = subtitle { content_intro = content_intro.with_subtitle(subtitle); } - let content_intro = - content_intro.map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + let content_intro = content_intro.map(move |msg| match msg { + FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, + }); let content_menu = if let Some(verb_cancel) = verb_cancel { Frame::left_aligned( @@ -177,6 +187,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err ) } .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(move |msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(_)) => Some(FlowMsg::Choice(0)), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), @@ -199,9 +210,11 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err ) }; - let mut content_confirm = Frame::left_aligned(title, prompt) + let mut content_confirm = Frame::left_aligned(title, SwipeContent::new(prompt)) .with_footer(prompt_action, None) - .with_menu_button(); + .with_menu_button() + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()); if let Some(subtitle) = subtitle { content_confirm = content_confirm.with_subtitle(subtitle); @@ -228,9 +241,12 @@ pub fn new_confirm_action_simple<T: Component + Paginate + Clone + MaybeTrace + verb: Option<TString<'static>>, verb_cancel: Option<TString<'static>>, ) -> Result<Obj, error::Error> { - let mut frame = Frame::left_aligned(title, SwipePage::vertical(content)) + let mut frame = Frame::left_aligned(title, SwipeContent::new(SwipePage::vertical(content))) .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), verb); + .with_footer(TR::instructions__swipe_up.into(), verb) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::immediate()) + .with_vertical_pages(); if let Some(subtitle) = subtitle { frame = frame.with_subtitle(subtitle) } @@ -249,6 +265,7 @@ pub fn new_confirm_action_simple<T: Component + Paginate + Clone + MaybeTrace + ) } .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(move |msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index df5850dca2..12caa1a217 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -6,7 +6,7 @@ use crate::{ ui::{ button_request::ButtonRequest, component::{ButtonRequestExt, ComponentExt, SwipeDirection}, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, }, }; @@ -76,7 +76,10 @@ impl FlowState for ConfirmOutput { use crate::{ micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, + ui::{ + component::swipe_detect::SwipeSettings, layout::obj::LayoutObj, + model_mercury::component::SwipeContent, + }, }; #[allow(clippy::not_unsafe_ptr_arg_deref)] @@ -117,6 +120,7 @@ impl ConfirmOutput { .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) .with_text_mono(text_mono) + .with_swipe_down() .into_layout()? .one_button_request(ButtonRequest::from_num(br_code, br_type)); @@ -128,6 +132,7 @@ impl ConfirmOutput { .danger(theme::ICON_CANCEL, "Cancel sign".into()), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), @@ -135,15 +140,17 @@ impl ConfirmOutput { // AccountInfo let ad = AddressDetails::new(TR::send__send_from.into(), account, account_path)?; - let content_account = SwipePage::horizontal(ad).map(|_| Some(FlowMsg::Cancelled)); + let content_account = ad.map(|_| Some(FlowMsg::Cancelled)); // CancelTap let content_cancel_tap = Frame::left_aligned( TR::send__cancel_sign.into(), - PromptScreen::new_tap_to_cancel(), + SwipeContent::new(PromptScreen::new_tap_to_cancel()), ) .with_cancel_button() .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index 27d1f137f9..c4df045075 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -6,16 +6,18 @@ use crate::{ ui::{ button_request::ButtonRequestCode, component::{ + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, Paragraphs}, ButtonRequestExt, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, layout::obj::LayoutObj, + model_mercury::component::{PromptScreen, SwipeContent}, }, }; use super::super::{ - component::{Frame, FrameMsg, HoldToConfirm, VerticalMenu, VerticalMenuChoiceMsg}, + component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, theme, }; @@ -32,15 +34,18 @@ impl FlowState for ConfirmResetCreate { (ConfirmResetCreate::Intro, SwipeDirection::Left) => { Decision::Goto(ConfirmResetCreate::Menu, direction) } - (ConfirmResetCreate::Menu, SwipeDirection::Right) => { - Decision::Goto(ConfirmResetCreate::Intro, direction) - } (ConfirmResetCreate::Intro, SwipeDirection::Up) => { Decision::Goto(ConfirmResetCreate::Confirm, direction) } + (ConfirmResetCreate::Menu, SwipeDirection::Right) => { + Decision::Goto(ConfirmResetCreate::Intro, direction) + } (ConfirmResetCreate::Confirm, SwipeDirection::Down) => { Decision::Goto(ConfirmResetCreate::Intro, direction) } + (ConfirmResetCreate::Confirm, SwipeDirection::Left) => { + Decision::Goto(ConfirmResetCreate::Menu, direction) + } _ => Decision::Nothing, } } @@ -57,6 +62,9 @@ impl FlowState for ConfirmResetCreate { (ConfirmResetCreate::Confirm, FlowMsg::Confirmed) => { Decision::Return(FlowMsg::Confirmed) } + (ConfirmResetCreate::Confirm, FlowMsg::Info) => { + Decision::Goto(ConfirmResetCreate::Menu, SwipeDirection::Left) + } _ => Decision::Nothing, } } @@ -81,9 +89,11 @@ impl ConfirmResetCreate { Paragraph::new(&theme::TEXT_SUB_GREY_LIGHT, TR::reset__tos_link), ]; let paragraphs = Paragraphs::new(par_array); - let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + let content_intro = Frame::left_aligned(title, SwipeContent::new(paragraphs)) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) .one_button_request(ButtonRequestCode::ResetDevice.with_type("setup_device")); @@ -92,21 +102,25 @@ impl ConfirmResetCreate { VerticalMenu::empty().danger(theme::ICON_CANCEL, "Cancel".into()), // TODO: use TR ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - let content_confirm = - Frame::left_aligned(TR::reset__title_create_wallet.into(), HoldToConfirm::new()) - .with_footer(TR::instructions__hold_to_confirm.into(), None) - .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), - _ => Some(FlowMsg::Cancelled), - }) - .one_button_request( - ButtonRequestCode::ResetDevice.with_type("confirm_setup_device"), - ); + let content_confirm = Frame::left_aligned( + TR::reset__title_create_wallet.into(), + SwipeContent::new(PromptScreen::new_hold_to_confirm()), + ) + .with_menu_button() + .with_footer(TR::instructions__hold_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Info), + }) + .one_button_request(ButtonRequestCode::ResetDevice.with_type("confirm_setup_device")); let store = flow_store() .add(content_intro)? diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs index 35a46486bf..4a76b3e6c3 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs @@ -7,12 +7,12 @@ use crate::{ text::paragraphs::{Paragraph, Paragraphs}, ButtonRequestExt, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, }, }; use super::super::{ - component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, theme, }; @@ -54,7 +54,11 @@ impl FlowState for ConfirmResetRecover { use crate::{ micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, + ui::{ + component::swipe_detect::SwipeSettings, + layout::obj::LayoutObj, + model_mercury::component::{PromptScreen, SwipeContent}, + }, }; #[allow(clippy::not_unsafe_ptr_arg_deref)] @@ -77,10 +81,12 @@ impl ConfirmResetRecover { let paragraphs = Paragraphs::new(par_array); let content_intro = Frame::left_aligned( TR::recovery__title_recover.into(), - SwipePage::vertical(paragraphs), + SwipeContent::new(paragraphs), ) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) .one_button_request(ButtonRequestCode::ProtectCall.with_type("recover_device")); @@ -92,6 +98,7 @@ impl ConfirmResetRecover { ), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), @@ -99,9 +106,10 @@ impl ConfirmResetRecover { let content_confirm = Frame::left_aligned( TR::reset__title_create_wallet.into(), - PromptScreen::new_hold_to_confirm(), + SwipeContent::new(PromptScreen::new_hold_to_confirm()), ) .with_footer(TR::instructions__hold_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .map(|msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), _ => Some(FlowMsg::Cancelled), diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs index 2fe3ee9ce9..d7d459b9ec 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs @@ -8,7 +8,7 @@ use crate::{ text::paragraphs::{Paragraph, Paragraphs}, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + flow::{base::Decision, FlowMsg, FlowState, FlowStore}, }, }; @@ -31,13 +31,21 @@ impl FlowState for SetNewPin { fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { match (self, direction) { (SetNewPin::Intro, SwipeDirection::Left) => Decision::Goto(SetNewPin::Menu, direction), + (SetNewPin::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + + (SetNewPin::Menu, SwipeDirection::Right) => Decision::Goto(SetNewPin::Intro, direction), (SetNewPin::CancelPinIntro, SwipeDirection::Up) => { Decision::Goto(SetNewPin::CancelPinConfirm, direction) } + (SetNewPin::CancelPinIntro, SwipeDirection::Right) => { + Decision::Goto(SetNewPin::Intro, direction) + } (SetNewPin::CancelPinConfirm, SwipeDirection::Down) => { Decision::Goto(SetNewPin::CancelPinIntro, direction) } - (SetNewPin::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + (SetNewPin::CancelPinConfirm, SwipeDirection::Right) => { + Decision::Goto(SetNewPin::Intro, direction) + } _ => Decision::Nothing, } } @@ -54,7 +62,7 @@ impl FlowState for SetNewPin { Decision::Goto(SetNewPin::Intro, SwipeDirection::Right) } (SetNewPin::CancelPinIntro, FlowMsg::Cancelled) => { - Decision::Goto(SetNewPin::Menu, SwipeDirection::Right) + Decision::Goto(SetNewPin::Intro, SwipeDirection::Right) } (SetNewPin::CancelPinConfirm, FlowMsg::Cancelled) => { Decision::Goto(SetNewPin::CancelPinIntro, SwipeDirection::Right) @@ -69,7 +77,12 @@ impl FlowState for SetNewPin { use crate::{ micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, + ui::{ + component::swipe_detect::SwipeSettings, + flow::{flow_store, SwipeFlow}, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, + }, }; #[allow(clippy::not_unsafe_ptr_arg_deref)] @@ -86,9 +99,11 @@ impl SetNewPin { let par_array: [Paragraph<'static>; 1] = [Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)]; let paragraphs = Paragraphs::new(par_array); - let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + let content_intro = Frame::left_aligned(title, SwipeContent::new(paragraphs)) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| { matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) }); @@ -98,6 +113,7 @@ impl SetNewPin { VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::pin__cancel_setup.into()), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), @@ -111,13 +127,15 @@ impl SetNewPin { let paragraphs_cancel_intro = Paragraphs::new(par_array_cancel_intro); let content_cancel_intro = Frame::left_aligned( TR::pin__cancel_setup.into(), - SwipePage::vertical(paragraphs_cancel_intro), + SwipeContent::new(paragraphs_cancel_intro), ) .with_cancel_button() .with_footer( TR::instructions__swipe_up.into(), Some(TR::pin__cancel_description.into()), ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, @@ -125,9 +143,12 @@ impl SetNewPin { let content_cancel_confirm = Frame::left_aligned( TR::pin__cancel_setup.into(), - PromptScreen::new_tap_to_cancel(), + SwipeContent::new(PromptScreen::new_tap_to_cancel()), ) + .with_cancel_button() .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index ccf50743a7..55ec755a58 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -78,7 +78,10 @@ impl FlowState for ConfirmSummary { use crate::{ micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, + ui::{ + component::swipe_detect::SwipeSettings, layout::obj::LayoutObj, + model_mercury::component::SwipeContent, + }, }; #[allow(clippy::not_unsafe_ptr_arg_deref)] @@ -98,7 +101,8 @@ impl ConfirmSummary { // Summary let mut summary = ShowInfoParams::new(title) .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None); + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe_up(); for pair in IterBuf::new().try_iterate(items)? { let [label, value]: [TString; 2] = util::iter_into_array(pair)?; summary = unwrap!(summary.add(label, value)); @@ -112,10 +116,12 @@ impl ConfirmSummary { // Hold to confirm let content_hold = Frame::left_aligned( TR::send__sign_transaction.into(), - PromptScreen::new_hold_to_confirm(), + SwipeContent::new(PromptScreen::new_hold_to_confirm()), ) .with_menu_button() .with_footer(TR::instructions__hold_to_sign.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Info), @@ -130,6 +136,7 @@ impl ConfirmSummary { .danger(theme::ICON_CANCEL, "Cancel sign".into()), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), @@ -158,6 +165,7 @@ impl ConfirmSummary { ) .with_cancel_button() .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 2710264892..7bdb03d7ed 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -9,10 +9,7 @@ use crate::{ text::paragraphs::{Paragraph, ParagraphSource, Paragraphs}, ButtonRequestExt, ComponentExt, Qr, SwipeDirection, }, - flow::{ - base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, - SwipePage, - }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, layout::util::ConfirmBlob, }, }; @@ -49,6 +46,7 @@ impl FlowState for GetAddress { (GetAddress::Tap, SwipeDirection::Down) => { Decision::Goto(GetAddress::Address, direction) } + (GetAddress::Tap, SwipeDirection::Left) => Decision::Goto(GetAddress::Menu, direction), (GetAddress::Menu, SwipeDirection::Right) => { Decision::Goto(GetAddress::Address, direction) } @@ -56,7 +54,7 @@ impl FlowState for GetAddress { Decision::Goto(GetAddress::Menu, direction) } (GetAddress::AccountInfo, SwipeDirection::Right) => { - Decision::Goto(GetAddress::Menu, direction) + Decision::Goto(GetAddress::Menu, SwipeDirection::Right) } (GetAddress::Cancel, SwipeDirection::Up) => { Decision::Goto(GetAddress::CancelTap, direction) @@ -67,6 +65,9 @@ impl FlowState for GetAddress { (GetAddress::CancelTap, SwipeDirection::Down) => { Decision::Goto(GetAddress::Cancel, direction) } + (GetAddress::CancelTap, SwipeDirection::Right) => { + Decision::Goto(GetAddress::Menu, direction) + } _ => Decision::Nothing, } } @@ -81,6 +82,10 @@ impl FlowState for GetAddress { Decision::Goto(GetAddress::Confirmed, SwipeDirection::Up) } + (GetAddress::Tap, FlowMsg::Info) => { + Decision::Goto(GetAddress::Menu, SwipeDirection::Left) + } + (GetAddress::Confirmed, _) => Decision::Return(FlowMsg::Confirmed), (GetAddress::Menu, FlowMsg::Choice(0)) => { @@ -124,7 +129,10 @@ impl FlowState for GetAddress { use crate::{ micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, + ui::{ + component::swipe_detect::SwipeSettings, flow::SwipePage, layout::obj::LayoutObj, + model_mercury::component::SwipeContent, + }, }; #[allow(clippy::not_unsafe_ptr_arg_deref)] @@ -167,30 +175,34 @@ impl GetAddress { data_font: data_style, } .into_paragraphs(); - let content_address = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) - .one_button_request(ButtonRequest::from_num(br_code, br_type)) - // Count tap-to-confirm screen towards page count - .with_pages(|address_pages| address_pages + 1); + let content_address = + Frame::left_aligned(title, SwipeContent::new(SwipePage::vertical(paragraphs))) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .with_vertical_pages() + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) + .one_button_request(ButtonRequest::from_num(br_code, br_type)) + // Count tap-to-confirm screen towards page count + .with_pages(|address_pages| address_pages + 1); // Tap - let content_tap = Frame::left_aligned(title, PromptScreen::new_tap_to_confirm()) - .with_footer(TR::instructions__tap_to_confirm.into(), None) - .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), - _ => None, - }); - - let content_confirmed = IgnoreSwipe::new( - Frame::left_aligned( - TR::address__confirmed.into(), - StatusScreen::new_success_timeout(), - ) - .with_footer(TR::instructions__continue_in_app.into(), None), + let content_tap = + Frame::left_aligned(title, SwipeContent::new(PromptScreen::new_tap_to_confirm())) + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Info), + }); + + let content_confirmed = Frame::left_aligned( + TR::address__confirmed.into(), + StatusScreen::new_success_timeout(), ) + .with_footer(TR::instructions__continue_in_app.into(), None) .map(|_| Some(FlowMsg::Confirmed)); // Menu @@ -205,6 +217,7 @@ impl GetAddress { .danger(theme::ICON_CANCEL, TR::address__cancel_receive.into()), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), @@ -213,11 +226,9 @@ impl GetAddress { // QrCode let content_qr = Frame::left_aligned( title, - IgnoreSwipe::new( - address_qr - .map(|s| Qr::new(s, case_sensitive))? - .with_border(QR_BORDER), - ), + address_qr + .map(|s| Qr::new(s, case_sensitive))? + .with_border(QR_BORDER), ) .with_cancel_button() .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)); @@ -228,18 +239,20 @@ impl GetAddress { let [xtitle, text]: [TString; 2] = util::iter_into_array(i)?; ad.add_xpub(xtitle, text)?; } - let content_account = SwipePage::horizontal(ad).map(|_| Some(FlowMsg::Cancelled)); + let content_account = ad.map(|_| Some(FlowMsg::Cancelled)); // Cancel let content_cancel_info = Frame::left_aligned( TR::address__cancel_receive.into(), - SwipePage::vertical(Paragraphs::new(Paragraph::new( + SwipeContent::new(Paragraphs::new(Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, TR::address__cancel_contact_support, ))), ) .with_cancel_button() .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)); // CancelTap @@ -249,6 +262,8 @@ impl GetAddress { ) .with_cancel_button() .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index 84ff800004..fbce08f018 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -7,7 +7,7 @@ use crate::{ text::paragraphs::{Paragraph, Paragraphs}, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + flow::{base::Decision, FlowMsg, FlowState, FlowStore}, }, }; @@ -32,13 +32,24 @@ impl FlowState for PromptBackup { (PromptBackup::Intro, SwipeDirection::Left) => { Decision::Goto(PromptBackup::Menu, direction) } + (PromptBackup::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + + (PromptBackup::Menu, SwipeDirection::Right) => { + Decision::Goto(PromptBackup::Intro, direction) + } + (PromptBackup::SkipBackupIntro, SwipeDirection::Up) => { Decision::Goto(PromptBackup::SkipBackupConfirm, direction) } + (PromptBackup::SkipBackupIntro, SwipeDirection::Right) => { + Decision::Goto(PromptBackup::Intro, direction) + } (PromptBackup::SkipBackupConfirm, SwipeDirection::Down) => { Decision::Goto(PromptBackup::SkipBackupIntro, direction) } - (PromptBackup::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + (PromptBackup::SkipBackupConfirm, SwipeDirection::Right) => { + Decision::Goto(PromptBackup::Intro, direction) + } _ => Decision::Nothing, } } @@ -70,7 +81,12 @@ impl FlowState for PromptBackup { use crate::{ micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, + ui::{ + component::swipe_detect::SwipeSettings, + flow::{flow_store, SwipeFlow}, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, + }, }; #[allow(clippy::not_unsafe_ptr_arg_deref)] @@ -88,9 +104,11 @@ impl PromptBackup { TString::from_str("Your wallet backup contains words in a specific order."), )]; let paragraphs = Paragraphs::new(par_array); - let content_intro = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + let content_intro = Frame::left_aligned(title, SwipeContent::new(paragraphs)) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| { matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) }); @@ -100,6 +118,7 @@ impl PromptBackup { VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::backup__title_skip.into()), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), @@ -116,13 +135,15 @@ impl PromptBackup { let paragraphs_skip_intro = Paragraphs::new(par_array_skip_intro); let content_skip_intro = Frame::left_aligned( TR::backup__title_skip.into(), - SwipePage::vertical(paragraphs_skip_intro), + SwipeContent::new(paragraphs_skip_intro), ) .with_cancel_button() .with_footer( TR::instructions__swipe_up.into(), Some(TR::words__continue_anyway.into()), ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, @@ -130,9 +151,12 @@ impl PromptBackup { let content_skip_confirm = Frame::left_aligned( TR::backup__title_skip.into(), - PromptScreen::new_tap_to_cancel(), + SwipeContent::new(PromptScreen::new_tap_to_cancel()), ) + .with_cancel_button() .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs index de5654ac00..df940c9d81 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -9,7 +9,7 @@ use crate::{ text::paragraphs::{Paragraph, Paragraphs}, ButtonRequestExt, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, }, }; @@ -67,7 +67,10 @@ impl FlowState for RequestNumber { use crate::{ micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, + ui::{ + component::swipe_detect::SwipeSettings, layout::obj::LayoutObj, + model_mercury::component::SwipeContent, + }, }; #[allow(clippy::not_unsafe_ptr_arg_deref)] @@ -102,14 +105,17 @@ impl RequestNumber { let number_input_dialog = NumberInputDialog::new(min_count, max_count, count, description_cb)?; - let content_number_input = Frame::left_aligned(title, number_input_dialog) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .map(|msg| match msg { - FrameMsg::Button(_) => Some(FlowMsg::Info), - FrameMsg::Content(NumberInputDialogMsg(n)) => Some(FlowMsg::Choice(n as usize)), - }) - .one_button_request(ButtonRequest::from_num(br_code, br_type)); + let content_number_input = + Frame::left_aligned(title, SwipeContent::new(number_input_dialog)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Button(_) => Some(FlowMsg::Info), + FrameMsg::Content(NumberInputDialogMsg(n)) => Some(FlowMsg::Choice(n as usize)), + }) + .one_button_request(ButtonRequest::from_num(br_code, br_type)); let content_menu = Frame::left_aligned( "".into(), @@ -118,6 +124,7 @@ impl RequestNumber { .danger(theme::ICON_CANCEL, TR::backup__title_skip.into()), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), @@ -130,9 +137,10 @@ impl RequestNumber { )); let content_info = Frame::left_aligned( TR::backup__title_skip.into(), - SwipePage::vertical(paragraphs_info), + SwipeContent::new(paragraphs_info), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index 9840ac9d3e..0b4f74b11c 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -6,11 +6,13 @@ use crate::{ ui::{ button_request::ButtonRequestCode, component::{ + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, Paragraphs}, ButtonRequestExt, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow, SwipePage}, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; use heapless::Vec; @@ -84,35 +86,41 @@ impl ShowShareWords { let content_instruction = Frame::left_aligned( title, - SwipePage::vertical(Paragraphs::new(Paragraph::new( + SwipeContent::new(Paragraphs::new(Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, text_info, ))), ) .with_subtitle(TR::words__instructions.into()) .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Content(_)).then_some(FlowMsg::Confirmed)) .one_button_request(ButtonRequestCode::ResetDevice.with_type("share_words")) .with_pages(move |_| nwords + 2); let content_words = Frame::left_aligned(title, ShareWords::new(share_words_vec)) .with_subtitle(subtitle) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_vertical_pages() .map(|_| None); let content_confirm = Frame::left_aligned(text_confirm, PromptScreen::new_hold_to_confirm()) .with_footer(TR::instructions__hold_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .map(|_| Some(FlowMsg::Confirmed)); let content_check_backup_intro = Frame::left_aligned( TR::reset__check_backup_title.into(), - SwipePage::vertical(Paragraphs::new(Paragraph::new( + SwipeContent::new(Paragraphs::new(Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, TR::reset__check_backup_instructions, ))), ) .with_subtitle(TR::words__instructions.into()) .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .map(|_| Some(FlowMsg::Confirmed)); let store = flow_store() diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/model_mercury/flow/util.rs index 7c5efb6e22..8a0f0ef90b 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/util.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/util.rs @@ -10,11 +10,13 @@ use crate::{ ui::{ component::{ base::ComponentExt, + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, VecExt}, - Component, + Component, SwipeDirection, }, flow::{FlowMsg, Swipable, SwipePage}, layout::util::ConfirmBlob, + model_mercury::component::SwipeContent, }, }; use heapless::Vec; @@ -30,6 +32,7 @@ pub struct ConfirmBlobParams { menu_button: bool, chunkify: bool, text_mono: bool, + swipe_down: bool, } impl ConfirmBlobParams { @@ -49,6 +52,7 @@ impl ConfirmBlobParams { menu_button: false, chunkify: false, text_mono: true, + swipe_down: false, } } @@ -67,6 +71,11 @@ impl ConfirmBlobParams { self } + pub const fn with_swipe_down(mut self) -> Self { + self.swipe_down = true; + self + } + pub const fn with_footer( mut self, instruction: TString<'static>, @@ -89,7 +98,7 @@ impl ConfirmBlobParams { pub fn into_layout( self, - ) -> Result<impl Component<Msg = FlowMsg> + Swipable<FlowMsg> + MaybeTrace, Error> { + ) -> Result<impl Component<Msg = FlowMsg> + Swipable + MaybeTrace, Error> { let paragraphs = ConfirmBlob { description: self.description.unwrap_or("".into()), extra: self.extra.unwrap_or("".into()), @@ -107,7 +116,7 @@ impl ConfirmBlobParams { } .into_paragraphs(); - let page = SwipePage::vertical(paragraphs); + let page = SwipeContent::new(SwipePage::vertical(paragraphs)); let mut frame = Frame::left_aligned(self.title, page); if let Some(subtitle) = self.subtitle { frame = frame.with_subtitle(subtitle); @@ -117,7 +126,16 @@ impl ConfirmBlobParams { } if let Some(instruction) = self.footer_instruction { frame = frame.with_footer(instruction, self.footer_description); + frame = frame.with_swipe(SwipeDirection::Left, SwipeSettings::default()); + } + + if self.swipe_down { + frame = frame.with_swipe(SwipeDirection::Down, SwipeSettings::default()); } + + frame = frame.with_swipe(SwipeDirection::Up, SwipeSettings::default()); + frame = frame.with_vertical_pages(); + Ok(frame.map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info))) } } @@ -130,6 +148,7 @@ pub struct ShowInfoParams { footer_instruction: Option<TString<'static>>, footer_description: Option<TString<'static>>, chunkify: bool, + swipe_up: bool, items: Vec<(TString<'static>, TString<'static>), 4>, } @@ -143,6 +162,7 @@ impl ShowInfoParams { footer_instruction: None, footer_description: None, chunkify: false, + swipe_up: false, items: Vec::new(), } } @@ -185,9 +205,14 @@ impl ShowInfoParams { self } + pub const fn with_swipe_up(mut self) -> Self { + self.swipe_up = true; + self + } + pub fn into_layout( self, - ) -> Result<impl Component<Msg = FlowMsg> + Swipable<FlowMsg> + MaybeTrace, Error> { + ) -> Result<impl Component<Msg = FlowMsg> + Swipable + MaybeTrace, Error> { let mut paragraphs = ParagraphVecShort::new(); let mut first: bool = true; for item in self.items { @@ -212,19 +237,30 @@ impl ShowInfoParams { let mut frame = Frame::left_aligned( self.title, - SwipePage::vertical(paragraphs.into_paragraphs()), + SwipeContent::new(SwipePage::vertical(paragraphs.into_paragraphs())), ); if let Some(subtitle) = self.subtitle { frame = frame.with_subtitle(subtitle); } if self.cancel_button { - frame = frame.with_cancel_button(); + frame = frame + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()); } else if self.menu_button { - frame = frame.with_menu_button(); + frame = frame + .with_menu_button() + .with_swipe(SwipeDirection::Left, SwipeSettings::default()); } if let Some(instruction) = self.footer_instruction { frame = frame.with_footer(instruction, self.footer_description); } + + if self.swipe_up { + frame = frame.with_swipe(SwipeDirection::Up, SwipeSettings::default()); + } + + frame = frame.with_vertical_pages(); + Ok(frame.map(move |msg| { matches!(msg, FrameMsg::Button(_)).then_some(if self.cancel_button { FlowMsg::Cancelled diff --git a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs index 2b94ddc880..acee0c6b2d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs @@ -8,10 +8,7 @@ use crate::{ text::paragraphs::{Paragraph, ParagraphSource}, ComponentExt, SwipeDirection, }, - flow::{ - base::Decision, flow_store, FlowMsg, FlowState, FlowStore, IgnoreSwipe, SwipeFlow, - SwipePage, - }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, }, }; @@ -63,7 +60,10 @@ impl FlowState for WarningHiPrio { use crate::{ micropython::{map::Map, obj::Obj, util}, - ui::layout::obj::LayoutObj, + ui::{ + component::swipe_detect::SwipeSettings, layout::obj::LayoutObj, + model_mercury::component::SwipeContent, + }, }; #[allow(clippy::not_unsafe_ptr_arg_deref)] @@ -89,10 +89,12 @@ impl WarningHiPrio { .with_top_padding(Self::EXTRA_PADDING), ] .into_paragraphs(); - let content_message = Frame::left_aligned(title, SwipePage::vertical(paragraphs)) + let content_message = Frame::left_aligned(title, SwipeContent::new(paragraphs)) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), Some(cancel)) .with_danger() + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); // .one_button_request(ButtonRequestCode::Warning, br_type); @@ -104,17 +106,17 @@ impl WarningHiPrio { .danger(theme::ICON_CHEVRON_RIGHT, confirm), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); // Cancelled - let content_cancelled = IgnoreSwipe::new( + let content_cancelled = Frame::left_aligned(done_title, StatusScreen::new_neutral_timeout()) - .with_footer(TR::instructions__continue_in_app.into(), None), - ) - .map(|_| Some(FlowMsg::Cancelled)); + .with_footer(TR::instructions__continue_in_app.into(), None) + .map(|_| Some(FlowMsg::Cancelled)); let store = flow_store() .add(content_message)? diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 0f6c920cd3..da9135bbc2 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -12,11 +12,12 @@ use crate::{ ui::{ backlight::BACKLIGHT_LEVELS_OBJ, component::{ - base::ComponentExt, + base::{AttachType, ComponentExt}, connect::Connect, image::BlendedImage, jpeg::Jpeg, paginated::{PageMsg, Paginate}, + swipe_detect::SwipeSettings, text::{ op::OpTextLayout, paragraphs::{ @@ -25,15 +26,16 @@ use crate::{ }, TextStyle, }, - Border, Component, Empty, FormattedText, Label, Never, Timeout, + Border, Component, Empty, FormattedText, Label, Never, SwipeDirection, Timeout, }, + flow::Swipable, geometry, layout::{ obj::{ComponentMsgObj, LayoutObj}, result::{CANCELLED, CONFIRMED, INFO}, util::{upy_disable_animation, ConfirmBlob, PropsList}, }, - model_mercury::component::check_homescreen_format, + model_mercury::component::{check_homescreen_format, SwipeContent}, }, }; @@ -209,10 +211,7 @@ impl ComponentMsgObj for PromptScreen { } } -impl<T> ComponentMsgObj for SwipeUpScreen<T> -where - T: Component, -{ +impl<T: Component + Swipable> ComponentMsgObj for SwipeUpScreen<T> { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { SwipeUpScreenMsg::Content(_) => Err(Error::TypeError), @@ -736,7 +735,8 @@ extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(TR::modify_amount__title.into(), paragraphs) .with_cancel_button() - .with_footer(TR::instructions__swipe_up.into(), None), + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; Ok(obj.into()) }; @@ -778,7 +778,8 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(title, paragraphs) .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None), + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; Ok(obj.into()) }; @@ -860,20 +861,21 @@ extern "C" fn new_show_error(n_args: usize, args: *const Obj, kwargs: *mut Map) let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let allow_cancel: bool = kwargs.get(Qstr::MP_QSTR_allow_cancel)?.try_into()?; - let content = SwipeUpScreen::new(Paragraphs::new([Paragraph::new( - &theme::TEXT_MAIN_GREY_LIGHT, - description, - )])); + let content = Paragraphs::new([Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)]); let frame = if allow_cancel { - Frame::left_aligned(title, content) + Frame::left_aligned(title, SwipeContent::new(content)) .with_cancel_button() .with_danger() .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) } else { - Frame::left_aligned(title, content) + Frame::left_aligned(title, SwipeContent::new(content)) .with_danger() .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) }; + + let frame = SwipeUpScreen::new(frame); let obj = LayoutObj::new(frame)?; Ok(obj.into()) }; @@ -918,15 +920,16 @@ extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; let action: Option<TString> = kwargs.get(Qstr::MP_QSTR_button)?.try_into_option()?; - let content = SwipeUpScreen::new(Paragraphs::new([ + let content = Paragraphs::new([ Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description), Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, value), - ])); - let obj = LayoutObj::new( - Frame::left_aligned(title, content) + ]); + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, SwipeContent::new(content)) .with_warning_button() - .with_footer(TR::instructions__swipe_up.into(), action), - )?; + .with_footer(TR::instructions__swipe_up.into(), action) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + ))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -936,10 +939,11 @@ extern "C" fn new_show_success(n_args: usize, args: *const Obj, kwargs: *mut Map let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let content = StatusScreen::new_success(); - let obj = LayoutObj::new( - Frame::left_aligned(title, content) - .with_footer(TR::instructions__swipe_up.into(), None), - )?; + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, SwipeContent::new(content).with_normal_attach(None)) + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + ))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -949,14 +953,12 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let content = SwipeUpScreen::new(Paragraphs::new([Paragraph::new( - &theme::TEXT_MAIN_GREY_LIGHT, - description, - )])); - let obj = LayoutObj::new( - Frame::left_aligned(title, content) - .with_footer(TR::instructions__swipe_up.into(), None), - )?; + let content = Paragraphs::new([Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)]); + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, SwipeContent::new(content)) + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + ))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1070,7 +1072,8 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(title, paragraphs.into_paragraphs()) .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), Some(button)), + .with_footer(TR::instructions__swipe_up.into(), Some(button)) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; Ok(obj.into()) }; @@ -1227,22 +1230,26 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M paragraphs.add(Paragraph::new(style, text)); } - let checklist_content = SwipeUpScreen::new( - Checklist::from_paragraphs( - theme::ICON_CHEVRON_RIGHT, - theme::ICON_BULLET_CHECKMARK, - active, - paragraphs - .into_paragraphs() - .with_spacing(theme::CHECKLIST_SPACING), + let checklist_content = Checklist::from_paragraphs( + theme::ICON_CHEVRON_RIGHT, + theme::ICON_BULLET_CHECKMARK, + active, + paragraphs + .into_paragraphs() + .with_spacing(theme::CHECKLIST_SPACING), + ) + .with_check_width(theme::CHECKLIST_CHECK_WIDTH) + .with_icon_done_color(theme::GREEN); + + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned( + title, + SwipeContent::new(checklist_content) + .with_normal_attach(Some(AttachType::Swipe(SwipeDirection::Up))), ) - .with_check_width(theme::CHECKLIST_CHECK_WIDTH) - .with_icon_done_color(theme::GREEN), - ); - let obj = LayoutObj::new( - Frame::left_aligned(title, checklist_content) - .with_footer(TR::instructions__swipe_up.into(), None), - )?; + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + ))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1264,12 +1271,12 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut _ => TR::recovery__title.into(), }; - let content = SwipeUpScreen::new(paragraphs); - let obj = LayoutObj::new( - Frame::left_aligned(notification, content) + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(notification, SwipeContent::new(paragraphs)) .with_footer(TR::instructions__swipe_up.into(), None) - .with_subtitle(TR::words__instructions.into()), - )?; + .with_subtitle(TR::words__instructions.into()) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + ))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } diff --git a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs index 53e5892bd1..2256af3edb 100644 --- a/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/coinjoin_progress.rs @@ -63,7 +63,7 @@ impl Component for CoinJoinProgress { // Determinate ones are receiving Event::Progress events. if self.indeterminate { match event { - Event::Attach => { + Event::Attach(_) => { ctx.request_anim_frame(); } Event::Timer(EventCtx::ANIM_FRAME_TIMER) => { diff --git a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs index 411c91d355..4837c88ac9 100644 --- a/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/coinjoin_progress.rs @@ -93,7 +93,7 @@ where _ if animation_disabled() => { return None; } - Event::Attach if self.indeterminate => { + Event::Attach(_) if self.indeterminate => { ctx.request_anim_frame(); } Event::Timer(EventCtx::ANIM_FRAME_TIMER) => { diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index e0a27a83a2..930965bcbe 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -199,7 +199,7 @@ impl Component for PinKeyboard<'_> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { match event { // Set up timer to switch off warning prompt. - Event::Attach if self.major_warning.is_some() => { + Event::Attach(_) if self.major_warning.is_some() => { self.warning_timer = Some(ctx.request_timer(Duration::from_secs(2))); } // Hide warning, show major prompt. diff --git a/core/src/apps/management/change_pin.py b/core/src/apps/management/change_pin.py index 8c2636503b..cf0cc95179 100644 --- a/core/src/apps/management/change_pin.py +++ b/core/src/apps/management/change_pin.py @@ -81,6 +81,7 @@ def _require_confirm_change_pin(msg: ChangePin) -> Awaitable[None]: TR.pin__title_settings, description=TR.pin__change, verb=TR.buttons__change, + prompt_screen=False, ) if not msg.remove and not has_pin: # setting new pin diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index a14f27ac14..17dc5b377e 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15500,9 +15500,9 @@ "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "101892fa0a24f33279d07fda4477178a7b45fc04c01acbbf901833d4d024158f", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "55cdac02cdd20ce5249fabd5e63ad68386a796634fa21e2ef7cb1701e98c0020", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "be2ba7ad30c636e7542ede4c2b39f6c65da16eed559557d559fa2a9afdb98de6", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9baac2b705a9f38453c784d97f7db405f78c3ddad7d32e75acd6c9cfe418b69a", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a289533058d32023964eecfaeaec3f0c5c489aa3ddacddb44c7944126a9e2c92", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "30add0f52ceec0d4aab7c8f4fbfa848b70748dc6b449fd35bb800ed65bfa6918", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cf939a63908ea803ff46919cdf957e24fc1eaf9a830fb16033b910a1ad0b4c82", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "79241bbf8d46ac4497e668e7705152553c9c34c59658ed3b38fb52d70b613e24", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "d03f87e6020b3c9e47a5464a8a68752683b96746612274d91301c7ab4ffbca3e", "T3T1_cs_test_lock.py::test_hold_to_lock": "8e99b5897e849374c94b8bf9a581971bffa050bdf39a684967be642f66fca612", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "bf5322dcec0e6560aec763f04e4c2f6afd3e056968644414f3acfe4203745c66", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "9c272fbb29ebcf1d330827e863bdba92ef47b506843ef9108a43304c93dd9e86", @@ -15549,9 +15549,9 @@ "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "2f123bac78e5f12dfea18414032142e3c6efd601aa60b84a5a9e0e10a46ff85c", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "5c221cc9751183eaa02e2347571819469c316bb1cde0d29a5a252cf0c7a5819e", "T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "5744408e0dc4ea581e209bf26abd86b29f34f89e39f8ceb125811670feee27f3", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f0d1307d9bb9e842726e8616d4ababa60df4dcfd8e48f9777583c5fdc1d529be", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1bf1275b1b0ae36c3df53e0df122c08ef0c1b11ad27dfda08a0e7ea4f9e13e5b", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2d820b034627bebf99a0a054ed7ec3b81ad06f2b14803f67566e1776da943990", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a7fcfa798f05f90df7ecf9a4e7b0f16c3c41999b995cfddd3249a890c21a50b1", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f976c56e7f7e4302d27df9eb54f30cfce19d6dd553e5dbf42608ee579605fed0", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ce7fc86f644dcbaae77fbd45f6e12004c3175fef69d5cb80b7eace5b38f0195f", "T3T1_de_test_lock.py::test_hold_to_lock": "dfecbd90b394f3b35f0cc2a0248c35b50427a67ed647499e5652ac51d6cc786c", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "5532543c77b2c9f64c16cc9f31371decda359063067dac21143c1b318174750d", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "58bf45df88e43fdc94381e7d98320311daac04740851aacc8e9930d7fcf95245", @@ -15598,9 +15598,9 @@ "T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f6862c4fdc00878f9c14339896139094701c34a89f4f9c32d4e03767540de60e", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "d2423bdeb2923a2c06b59bf114a6219e4b918d7d3c061750985531b3f6ae8329", "T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "5f36a5d9d88476467ba31078701529dfdcdea2344944a8952e69dbfec238598f", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "62e797bcac12d651ab64b33db19dae577a31fd002945e3f495899b3a7004e415", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ea977ed91b155f102f66fbaf519b9c764a3839bd47f64461d41a8d1677faeb1f", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "4c47a36836400172683dd2d47b38cbdde11bbbb702d4cac72a8b0778f24e2c2c", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1cc207d1d95529d71febcf656c29e54272aa67d4853291e7bda746b0e01234c5", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "12a6032073d94c4f1be1176f087faea05d4393e2fce5d889375b7c84891de3d3", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6b80f5fe9beede5b34269bd8747d86e93c11de489758f35eac92d8a6ce09a786", "T3T1_en_test_lock.py::test_hold_to_lock": "1665b2e4984bcc7a2f307a89789dc2d6c8db9c04a5906729f769e0e8b76da04c", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "e0faf9f3c0c83f6762dfa00323d7a69ef4f1f71ef99160b88541e9068f04e55a", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "51c45f969237398ccc41494bca87694b061578042c71508c61994ea47907e033", @@ -16794,12 +16794,12 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a004391eed80bfe3a85e716311e04bcaea4223178ce2c24dd3a478c1103b3ae0", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "627937945fa769ac6f8a05d1538f0fadceac61a1347ed748a7c9280e7a223b66", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "901d35e416e91c264ebedd47854e9eed3601cfd851cfae5ca57940c1b5c3abc0", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "df132e2ca8201b12311cd4b525e108ace38049a4b95675579eaf2c4cfc0c379f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "bc727f137c9bfa6926f9da4645217b6003ef1b6c686bb165b1417afc15697214", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "03717e33ab843a8706c5cd373d2b979351e0408d578109f4a1cc1ddd1bfe916a", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d64a0585937fd4c01c4771b8fff082dea3b864da5588f88637f01210bd07e3c6", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5459bb41b69480ccf1850e3cd3edf8cce8b85457403a929f98cab17aa6d432a5", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "17db466823df48752dc7f66b86d46fc4c9242d4af92668aa282985f64e520130", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d57198c00b1fbc8d8aff6e9ceb7a28b33e13b0a497fbde18bb5338a706509fbf", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fffde13cd2189fd285cfba584b6257471be1703f5f3bea57d340fc80f5c4124e", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "57630bbab5d3566a14403ca11cc93e21e9742ac0de27b6c9700744682a587cb1", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5504101b5bccffc7c99f0b7306c8e4ee0d8f030c210b6b233993e0e961321fec", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "10069d5e7c8aed9894fd038ecf70c16f0196f6c6f0c0bf3e305760efe3deab32", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2643a0a963c0178087d7432eef8a1217979e7d064082dbc3dd96cd91805954de", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "b81c0adf31a42588f04333364365ae4a2a17c41bba10f739839598768698f644", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "17d88765a91d0123005233bbc9f943d67a021a7eb424f161aa80af98dd64d462", @@ -17030,7 +17030,7 @@ "T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "1c81b081fb05d47982bdd595e3f71d4a911530e08dadfd5fbfe118421d0a66e7", "T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "e508b79f30baea0c05b6989aafcda142c1eb4751af38b3a0bfea05e30bb8d56d", "T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "7e6a3b80d28d7d3496ab9e94c392b3a1a66a618fbd12d2552a327f8d017d5586", -"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "d57405f5be43c7d0771c6153bb27e6abeca32cd50b0f048a4010d5aa15e3182a", +"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "5435aba8f069b05c13fd1570cc39fe108195256267747d4cc1143b6789394a72", "T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "730b9ea97861bb3a2d375ab44ebeb81418949966246946ca906c9135e0cdbdf0", "T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "69928e6b1ff42739a3dbdc07f6ef6ac0aae3b6983dac3018b03b325b96462f87", "T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "ebf8a6aac47b252d84ad970de97f83ad0f8e00fe5baef5d1cf46362900b5adba", @@ -17043,7 +17043,7 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "d761f9a9ba40ca640572cbb95daaefdd8a6fb828f91547b41ae9e9cc4b071bdc", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "3ba6fe4f822ad730666aa7df1b129c49432fec58819d843368308aafbbdb4f7b", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "404eeec69de878aaad93ad8bf14c5614daa704ff84220ef288e4f5975fef2ea3", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "35d5299b8abb4b410bbb37e808a588b3f57191739ce433a23c9c671b0230a84d", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "1ba139c8e4297f637d67bb5338794fe012e2b4b907eadb06323e5b72e39509cc", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "2f03f2f391cb5aa5869185bd3ec61c6950ab1840df7d080374da4cbbc0fcd5a3", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a13cb96104505549e4ca94f033982cfdd70638c9b99aee3aba62bcdb77c2cd8b", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a13cb96104505549e4ca94f033982cfdd70638c9b99aee3aba62bcdb77c2cd8b", @@ -18179,12 +18179,12 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f0fc86ffb3f74456a9c6282789bb4f71a319fc125da5fd5616636e311fd23eae", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a04bf47e9b8ad1f7bc6545f6a2049fb0bb4211f66d340a501367eef323a173ab", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "093169b644e8cc008ea7caead9d2b1c59c18805359488924c501f90e6f5cd5b6", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "ed212433613715e7aaa5a80bb0b2111dc8988487820cc83d239059b7e8cd7584", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "430a25654df0daf86c5ca74296ec129640aacfd5694810b1ca98cc97a8ed3bcc", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "eeb3d9c92d56d99254a6bf9045da0547b4461a8b7b311eae5b12fc434be19d61", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "363a46acab4a0ac5cf5fa8733848a5ffb135740e9c99a4d15a06beba2301ae6e", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2ad7b98efd5be80e34d1f37323b2206813e294e162ac3e8b79f69cf022868821", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fe3e24d59b677a462d31cc44549d57101f439ad380114dfc027e9ff71d8863c1", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a56344d6a6c46392d9565ce735add8e44e8f88b7eef39a2377f89a4463e3121f", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "275d962f906bcbef3246543bcf4621debc70f0d3cd79e9a0e3d543bec4361545", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "b5f858d874b814ce5a35fc1cf50cd0aafc521962d9d91c57c342813d7146f926", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "05883449c72ccfbc18fafcf0ceab1706bcad730508d5bda3d52966d8cbef6c6d", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "ce55afaceb64b9996cbb9235f3f9ec8e61fca5a1fb3c147f32c3796931ffa395", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "56baa91ccc304e729befbd8e086eecfaf88560babddcc8920f8f9096688dc398", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d8bd2de90bec49d4175cab2f5104193f754f672c99efc83a0692c7d13157a7e7", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8ae6882dd2413c176b79798b2ed43bec9467e0635817ea8b848f04d91a7af7e4", @@ -18415,7 +18415,7 @@ "T3T1_de_test_msg_changepin_t2.py::test_change_failed": "4cd2cca8836ebc77b09313f05f905d2b9f11c8684b2191242fbef92692433337", "T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "306ce6895ef75875f16e4f35b3c5f05a004bdd67967faad504402d772b2f0cef", "T3T1_de_test_msg_changepin_t2.py::test_change_pin": "bb540789300781e12ec7b711f142ccfcf2f79d6c5e7ae98aaaba54cabf722e5d", -"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "d708ac7f0bd9a5a640c68b6c0540a2f5c7414a93dbd6bcc9979bed6faac11a36", +"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "8213ade8e7cfd4e496e6f28dc5a4c98b924a09be32930deb694eb1467bc5d490", "T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "367e749689b96e5b0e3fa39ff8f5378abb4fac06cce6f78abdf393a5f6587d73", "T3T1_de_test_msg_changepin_t2.py::test_set_failed": "894b365102246efd03f8fe53dcfbaa1808d6f77b846b91ef62b5da2d66b4d60a", "T3T1_de_test_msg_changepin_t2.py::test_set_pin": "16c1f995ca4a929e2b4ca18324039906b831f9f9e8c969b9db008351d03f92cd", @@ -18428,7 +18428,7 @@ "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "fe8a1f97e89304079cc295b418d5eac75ee441ccab46e0207db549863849b477", "T3T1_de_test_msg_sd_protect.py::test_refresh": "c643c038a11b3a301b20316fa0d2837c69841f5e074d9bdd0de0841d1f7b18d0", "T3T1_de_test_msg_sd_protect.py::test_wipe": "619f5d025dfd71d0e15ba018c7ecfd844e6f43be7896cf612a003398993462f0", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "49e224d28671db584b0ed3524d8efb4f414bc1f03231b838172598f27886f755", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "96fd8ddab0dbb82d6d0c116aea86f7f2eeb63372a084cdadb8c898de4d1461ec", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "92363bb8c8f23b9f81f1ce004de2e911fc517b17f63c7866047e257e414342c1", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0807342605b4bbcb2a62d17f1bb8468f89ad7242d8d5523151b7f0f91c68663c", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0807342605b4bbcb2a62d17f1bb8468f89ad7242d8d5523151b7f0f91c68663c", @@ -19564,12 +19564,12 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "974c222954a10307ffcdcf4f2cfc458443d45f6158293ea9dfb91e613d5eaa63", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0dcdbc898a66346a2781b20eed15ea9d2abe4ba6d968160d808f36bda4cc17a0", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a805d3037b5eb7a4a87d264aa6d2a97097509f4b5d0a4d4c030321b741ad3ef3", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e669290e2feef97631bfab5fb0d04401c5e5f00acbb2d259393c874934d1b65d", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7e7c5cd831de5a6bb145f68bcb8b7f75e944242ba076caa1d9dc57411d5b5c56", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "d00dcc98c2ae1cfa0d36c9c6067839b88d32c29728883140d5b47fba84e21c11", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "cbc02f1465fe548c6a8d4bfbcdcbce11f84aab8331ef61780978be4f70fbf139", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "744cd1e9a722d50a1c841940f707292ad235df72ab404d72711f3eafef556df9", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a77e280cc35809d034b7809a5556f642238b8c54b012bd1fc00e2b7525294366", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7bed2cc8a8c0e35148b48d2323e4fcded2b2cc35cfdf3063f89410d6b4029e58", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "66054413e53b696cdd65ac3274794bfb8943125af6b08db88f8c19a8c9533fcd", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "68bfe53e51bccd3efdc1c4c6e1e14ce46756648307f336fdc3b9aa062b13601a", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a03996ea71e63ced4ba94d24bea15a7ee63a3798dd1a145a4f7b36accc838f4a", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "3fec77c8c814c4dfeaeb35a8207cd6e001bdd84c3d103bf3f7b6d3c33532c260", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "94b9b9477ed2c637f2356e3e27da01ebadeafa5b4d90d35d9ea3a63f91043ecc", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "24e59539ea9627589fb6f660d90a5c61e1a7f91c50540cf43c360c5162dc85b6", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9bfefe78931ad0662da0d3a811b90986ac615b306fbab341db6a93606e703b4d", @@ -19800,7 +19800,7 @@ "T3T1_en_test_msg_changepin_t2.py::test_change_failed": "f3c671c723ce01ca2ccea0bfa4d07b442634d0fd7d5bbc649966309d8998034d", "T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "ea829f2c9af3d95e87fe72448b50fcc07fb2a72235811706f7394cf96f3fd2a9", "T3T1_en_test_msg_changepin_t2.py::test_change_pin": "5293c5f59d99d5d741afafa202e4ca20f1d89c50e9d6b51adc2cf12f7ab151e3", -"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "dc7a0e78034630a77c8e1a204f6df95a40df66b34dd1f764e89151174826b3ee", +"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "c0501e1a2c84d9311ec207d3e819880fa8fee09de9b242e0fef1bc923b9bd1d6", "T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "f4fb7e28e42a490ac1d970eb91be9ee07faa2dd4b3b0c0d8ec70e2fb31922eb9", "T3T1_en_test_msg_changepin_t2.py::test_set_failed": "0ebc831cb8454d21ff85175b67599c51bdc3af2018e2555ab786460d7c758bb8", "T3T1_en_test_msg_changepin_t2.py::test_set_pin": "be7f33fa7cbe3b8601c974a1c313f8efd13a0507e6f7e4667899da8263d5a391", @@ -19813,7 +19813,7 @@ "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "aca3981d378d8ed504c5a4475941af91b57eb78d919a1c9c452fd437af696f78", "T3T1_en_test_msg_sd_protect.py::test_refresh": "b0a88717e57ee4b5af18527d282a8ee4f0f68563f70f4c0fd7165b145018f5d4", "T3T1_en_test_msg_sd_protect.py::test_wipe": "7482be64b3596739a22d970843085e1433b510e735fca6769e95382e5f4d0a65", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "e7370d47a0d56e88fd4c59b3519a35ca7303b8915ce4e3ed16cdd7a03914592f", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "2428552c5d27675cbfe2c19f01c317fbd7891b785badb59b21e739198f4e64a0", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "7c70b9ef9a09cec7bbdb4ee343b6d54bfe8e013dea28ab40894a72f8625ccea6", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2e8ce270ebe538a0576f6faceda02cc1b7e558be2a945b9798c17f7c60f33e72", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2e8ce270ebe538a0576f6faceda02cc1b7e558be2a945b9798c17f7c60f33e72", @@ -22670,7 +22670,7 @@ "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "22a4b35e9ffca23d723285ccbdde8786637fb5bdc15b45d1be4677c9b0f940f6", "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "43ece0c802dffed4f0982daf8802de8df2a29ca5ab16c5390475f697d1ac61fb", "T3T1_en_test_shamir_persistence.py::test_abort": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "eb7f05a015e78939669902d95f47e8312d4312a364168343e51969ed03e6dec1", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "6da13841e94b968ebf1871dd18e20b73ff464f07eb21ebf6d510675505b22945", "T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "a4c00fba813a30af023ce02cf7f554f736852f15f68241d88e1a1085cbc23b03", "T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "7c1d0aa16d3a4c19815262ef18bf53796d3cefa5d71f19775ddf95acc153055a", "T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "74483206af4a9ffa769eb4ee55f44ad4a9ab9429ca76169f8e01ee3d496826b4" From fbfb000d62ca31932544b3300486ae38fc0b4d36 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 4 Jun 2024 16:06:08 +0200 Subject: [PATCH 221/626] refactor(core): optimize copyabilitity in swipe_detect --- .../rust/src/ui/component/swipe_detect.rs | 69 ++++++++++--------- core/embed/rust/src/ui/flow/swipe.rs | 2 +- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs index 5e2c2c4893..6bcac5cae7 100644 --- a/core/embed/rust/src/ui/component/swipe_detect.rs +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -9,7 +9,7 @@ use crate::{ }, }; -#[derive(Clone)] +#[derive(Copy, Clone)] pub struct SwipeSettings { pub duration: Duration, } @@ -32,7 +32,7 @@ impl SwipeSettings { } } -#[derive(Clone, Default)] +#[derive(Copy, Clone, Default)] pub struct SwipeConfig { pub horizontal_pages: bool, pub vertical_pages: bool, @@ -54,33 +54,17 @@ impl SwipeConfig { } } - pub fn with_swipe(&self, dir: SwipeDirection, settings: SwipeSettings) -> Self { - let mut new = self.clone(); - match dir { - SwipeDirection::Up => new.up = Some(settings), - SwipeDirection::Down => new.down = Some(settings), - SwipeDirection::Left => new.left = Some(settings), - SwipeDirection::Right => new.right = Some(settings), - } - new + pub fn with_swipe(mut self, dir: SwipeDirection, settings: SwipeSettings) -> Self { + self[dir] = Some(settings); + self } pub fn is_allowed(&self, dir: SwipeDirection) -> bool { - match dir { - SwipeDirection::Up => self.up.is_some(), - SwipeDirection::Down => self.down.is_some(), - SwipeDirection::Left => self.left.is_some(), - SwipeDirection::Right => self.right.is_some(), - } + self[dir].is_some() } pub fn duration(&self, dir: SwipeDirection) -> Option<Duration> { - match dir { - SwipeDirection::Up => self.up.as_ref().map(|s| s.duration), - SwipeDirection::Down => self.down.as_ref().map(|s| s.duration), - SwipeDirection::Left => self.left.as_ref().map(|s| s.duration), - SwipeDirection::Right => self.right.as_ref().map(|s| s.duration), - } + self[dir].as_ref().map(|s| s.duration) } pub fn has_horizontal_pages(&self) -> bool { self.horizontal_pages @@ -90,16 +74,38 @@ impl SwipeConfig { self.vertical_pages } - pub fn with_horizontal_pages(&self) -> Self { - let mut new = self.clone(); - new.horizontal_pages = true; - new + pub fn with_horizontal_pages(mut self) -> Self { + self.horizontal_pages = true; + self + } + + pub fn with_vertical_pages(mut self) -> Self { + self.vertical_pages = true; + self + } +} + +impl core::ops::Index<SwipeDirection> for SwipeConfig { + type Output = Option<SwipeSettings>; + + fn index(&self, index: SwipeDirection) -> &Self::Output { + match index { + SwipeDirection::Up => &self.up, + SwipeDirection::Down => &self.down, + SwipeDirection::Left => &self.left, + SwipeDirection::Right => &self.right, + } } +} - pub fn with_vertical_pages(&self) -> Self { - let mut new = self.clone(); - new.vertical_pages = true; - new +impl core::ops::IndexMut<SwipeDirection> for SwipeConfig { + fn index_mut(&mut self, index: SwipeDirection) -> &mut Self::Output { + match index { + SwipeDirection::Up => &mut self.up, + SwipeDirection::Down => &mut self.down, + SwipeDirection::Left => &mut self.left, + SwipeDirection::Right => &mut self.right, + } } } @@ -109,7 +115,6 @@ pub enum SwipeDetectMsg { Trigger(SwipeDirection), } -#[derive(Clone)] pub struct SwipeDetect { origin: Option<Point>, locked: Option<SwipeDirection>, diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index faf593d6a1..7644a2219e 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -131,7 +131,7 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { config = config.with_swipe(SwipeDirection::Left, SwipeSettings::default()) } - match self.swipe.event(ctx, event, config.clone()) { + match self.swipe.event(ctx, event, config) { Some(SwipeDetectMsg::Trigger(dir)) => { if let Some(override_decision) = self.decision_override.take() { decision = override_decision; From d1cf36097a3eb606f6f93a1d36e52476054ae21a Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 4 Jun 2024 16:07:09 +0200 Subject: [PATCH 222/626] refactor(core): optimize repeated code for swipe directions --- core/embed/rust/src/ui/component/swipe.rs | 32 +++ .../rust/src/ui/component/swipe_detect.rs | 214 +++++++----------- core/embed/rust/src/ui/flow/swipe.rs | 2 +- .../component/swipe_up_screen.rs | 2 +- 4 files changed, 116 insertions(+), 134 deletions(-) diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index ece3d22b6b..b614d7d7eb 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -22,6 +22,38 @@ impl SwipeDirection { SwipeDirection::Right => Offset::x(size.x), } } + + pub fn iter() -> SwipeDirectionIterator { + SwipeDirectionIterator::new() + } +} + +pub struct SwipeDirectionIterator { + current: Option<SwipeDirection>, +} + +impl SwipeDirectionIterator { + pub fn new() -> Self { + SwipeDirectionIterator { + current: Some(SwipeDirection::Up), + } + } +} + +impl Iterator for SwipeDirectionIterator { + type Item = SwipeDirection; + + fn next(&mut self) -> Option<Self::Item> { + let next_state = match self.current { + Some(SwipeDirection::Up) => Some(SwipeDirection::Down), + Some(SwipeDirection::Down) => Some(SwipeDirection::Left), + Some(SwipeDirection::Left) => Some(SwipeDirection::Right), + Some(SwipeDirection::Right) => None, + None => None, + }; + + core::mem::replace(&mut self.current, next_state) + } } #[derive(Clone)] diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs index 6bcac5cae7..435f1f7d1e 100644 --- a/core/embed/rust/src/ui/component/swipe_detect.rs +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -63,6 +63,36 @@ impl SwipeConfig { self[dir].is_some() } + /// Calculate how much progress over `threshold` was made in the swipe + /// direction. + /// + /// If the swipe direction is not allowed, this will return 0. + pub fn progress(&self, dir: SwipeDirection, movement: Offset, threshold: u16) -> u16 { + if !self.is_allowed(dir) { + return 0; + } + + let correct_movement = match dir { + SwipeDirection::Right => movement.x > 0, + SwipeDirection::Left => movement.x < 0, + SwipeDirection::Down => movement.y > 0, + SwipeDirection::Up => movement.y < 0, + }; + + if !correct_movement { + return 0; + } + + let movement = movement.abs(); + + match dir { + SwipeDirection::Right => (movement.x as u16).saturating_sub(threshold), + SwipeDirection::Left => (movement.x as u16).saturating_sub(threshold), + SwipeDirection::Down => (movement.y as u16).saturating_sub(threshold), + SwipeDirection::Up => (movement.y as u16).saturating_sub(threshold), + } + } + pub fn duration(&self, dir: SwipeDirection) -> Option<Duration> { self[dir].as_ref().map(|s| s.duration) } @@ -111,7 +141,7 @@ impl core::ops::IndexMut<SwipeDirection> for SwipeConfig { #[derive(Copy, Clone, Eq, PartialEq)] pub enum SwipeDetectMsg { - Move(SwipeDirection, i16), + Move(SwipeDirection, u16), Trigger(SwipeDirection), } @@ -119,17 +149,20 @@ pub struct SwipeDetect { origin: Option<Point>, locked: Option<SwipeDirection>, final_animation: Option<Animation<i16>>, - moved: i16, + moved: u16, } impl SwipeDetect { - const DISTANCE: i16 = 120; + const DISTANCE: u16 = 120; pub const PROGRESS_MAX: i16 = 1000; const DURATION_MS: u32 = 333; const TRIGGER_THRESHOLD: f32 = 0.3; const DETECT_THRESHOLD: f32 = 0.1; + const MIN_LOCK: u16 = (Self::DISTANCE as f32 * Self::DETECT_THRESHOLD) as u16; + const MIN_TRIGGER: u16 = (Self::DISTANCE as f32 * Self::TRIGGER_THRESHOLD) as u16; + pub fn new() -> Self { Self { origin: None, @@ -139,16 +172,16 @@ impl SwipeDetect { } } - fn min_lock(&self) -> i16 { - (Self::DISTANCE as f32 * Self::DETECT_THRESHOLD) as i16 + const fn min_lock(&self) -> u16 { + Self::MIN_LOCK } - fn min_trigger(&self) -> i16 { - (Self::DISTANCE as f32 * Self::TRIGGER_THRESHOLD) as i16 + const fn min_trigger(&self) -> u16 { + Self::MIN_TRIGGER } - fn progress(&self, val: i16) -> i16 { - ((val.max(0) as f32 / Self::DISTANCE as f32) * Self::PROGRESS_MAX as f32) as i16 + fn progress(&self, val: u16) -> u16 { + ((val as f32 / Self::DISTANCE as f32) * Self::PROGRESS_MAX as f32) as u16 } pub fn trigger(&mut self, ctx: &mut EventCtx, dir: SwipeDirection, config: SwipeConfig) { @@ -191,87 +224,31 @@ impl SwipeDetect { // Compare the touch distance with our allowed directions and determine if it // constitutes a valid swipe. let ofs = pos - origin; - let ofs_min = ofs.abs() - Offset::new(self.min_lock(), self.min_lock()); - - let mut res = None; - if self.locked.is_none() { - if ofs.x > 0 && ofs_min.x > 0 && config.is_allowed(SwipeDirection::Right) { - self.locked = Some(SwipeDirection::Right); - res = Some(SwipeDetectMsg::Move( - SwipeDirection::Right, - self.progress(ofs_min.x), - )); - } - if ofs.x < 0 && ofs_min.x > 0 && config.is_allowed(SwipeDirection::Left) { - self.locked = Some(SwipeDirection::Left); - res = Some(SwipeDetectMsg::Move( - SwipeDirection::Left, - self.progress(ofs_min.x), - )); - } - if ofs.y < 0 && ofs_min.y > 0 && config.is_allowed(SwipeDirection::Up) { - self.locked = Some(SwipeDirection::Up); - res = Some(SwipeDetectMsg::Move( - SwipeDirection::Up, - self.progress(ofs_min.y), - )); - } - if ofs.y > 0 && ofs_min.y > 0 && config.is_allowed(SwipeDirection::Down) { - self.locked = Some(SwipeDirection::Down); - res = Some(SwipeDetectMsg::Move( - SwipeDirection::Down, - self.progress(ofs_min.y), - )); + + let res = match self.locked { + Some(locked) => { + // advance in locked direction only + let moved = config.progress(locked, ofs, self.min_lock()); + Some(SwipeDetectMsg::Move(locked, self.progress(moved))) } - } else { - res = match self.locked.unwrap() { - SwipeDirection::Left => { - if ofs.x > 0 { - Some(SwipeDetectMsg::Move(SwipeDirection::Left, 0)) - } else { - Some(SwipeDetectMsg::Move( - SwipeDirection::Left, - self.progress(ofs_min.x), - )) - } - } - SwipeDirection::Right => { - if ofs.x < 0 { - Some(SwipeDetectMsg::Move(SwipeDirection::Right, 0)) - } else { - Some(SwipeDetectMsg::Move( - SwipeDirection::Right, - self.progress(ofs_min.x), - )) - } - } - SwipeDirection::Up => { - if ofs.y > 0 { - Some(SwipeDetectMsg::Move(SwipeDirection::Up, 0)) - } else { - Some(SwipeDetectMsg::Move( - SwipeDirection::Up, - self.progress(ofs_min.y), - )) - } - } - SwipeDirection::Down => { - if ofs.y < 0 { - Some(SwipeDetectMsg::Move(SwipeDirection::Down, 0)) - } else { - Some(SwipeDetectMsg::Move( - SwipeDirection::Down, - self.progress(ofs_min.y), - )) + None => { + let mut res = None; + for dir in SwipeDirection::iter() { + let progress = config.progress(dir, ofs, self.min_lock()); + if progress > 0 { + self.locked = Some(dir); + res = Some(SwipeDetectMsg::Move(dir, self.progress(progress))); + break; } } - }; - } + res + } + }; // Todo trigger an action if distance is met - if let Some(SwipeDetectMsg::Move(_, ofs)) = res { - self.moved = ofs; + if let Some(SwipeDetectMsg::Move(_, progress)) = res { + self.moved = progress; } if animation_disabled() { @@ -289,27 +266,32 @@ impl SwipeDetect { // Compare the touch distance with our allowed directions and determine if it // constitutes a valid swipe. let ofs = pos - origin; - let ofs_min = ofs.abs() - Offset::new(self.min_trigger(), self.min_trigger()); - - match self.locked { - // advance in locked direction only - Some(locked) if config.progress(locked, ofs, 0) > 0 => (), - // advance in direction other than locked clears the lock -- touch ends - // without triggering - Some(_) => self.locked = None, + + let final_value = match self.locked { + // advance in locked direction only trigger animation towards ending + // position + Some(locked) if config.progress(locked, ofs, self.min_trigger()) > 0 => { + Self::PROGRESS_MAX + } + // advance in direction other than locked trigger animation towards starting + // position + Some(_) => 0, None => { + let mut res = 0; for dir in SwipeDirection::iter() { // insta-lock if the movement went at least the trigger distance if config.progress(dir, ofs, self.min_trigger()) > 0 { self.locked = Some(dir); - break; + res = Self::PROGRESS_MAX; } } + + res } }; let Some(locked) = self.locked else { - // No direction is locked. Touch ended without triggering a swipe. + // Touch ended without triggering a swipe. return None; }; @@ -327,7 +309,7 @@ impl SwipeDetect { let duration = ((duration.to_millis() as f32 * ratio) as u32).max(0); self.final_animation = Some(Animation::new( self.moved as i16, - Self::PROGRESS_MAX, + final_value, Duration::from_millis(duration), Instant::now(), )); @@ -338,51 +320,19 @@ impl SwipeDetect { self.locked = None; return Some(SwipeDetectMsg::Trigger(locked)); } - - if finalize { - if !animation_disabled() { - ctx.request_anim_frame(); - ctx.request_paint(); - - let done = self.moved as f32 / Self::PROGRESS_MAX as f32; - let ratio = 1.0 - done; - - let duration = config - .duration(self.locked.unwrap()) - .unwrap_or(Duration::from_millis(Self::DURATION_MS)); - - let duration = ((duration.to_millis() as f32 * ratio) as u32).max(0); - self.final_animation = Some(Animation::new( - self.moved, - final_value, - Duration::from_millis(duration), - Instant::now(), - )); - } else { - ctx.request_anim_frame(); - ctx.request_paint(); - self.final_animation = None; - self.moved = 0; - let locked = self.locked.take(); - if final_value != 0 { - return Some(SwipeDetectMsg::Trigger(locked.unwrap())); - } - } - } - return None; } } (Event::Timer(EventCtx::ANIM_FRAME_TIMER), _) => { - if self.locked.is_some() { + if let Some(locked) = self.locked { let mut finish = false; let res = if let Some(animation) = &self.final_animation { if animation.finished(Instant::now()) { finish = true; if animation.to != 0 { - Some(SwipeDetectMsg::Trigger(self.locked.unwrap())) + Some(SwipeDetectMsg::Trigger(locked)) } else { - Some(SwipeDetectMsg::Move(self.locked.unwrap(), 0)) + Some(SwipeDetectMsg::Move(locked, 0)) } } else { ctx.request_anim_frame(); @@ -391,8 +341,8 @@ impl SwipeDetect { None } else { Some(SwipeDetectMsg::Move( - self.locked.unwrap(), - animation.value(Instant::now()), + locked, + animation.value(Instant::now()).max(0) as u16, )) } } diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 7644a2219e..c47b8ce12f 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -170,7 +170,7 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { Some(Event::Swipe(SwipeEvent::End(dir))) } Some(SwipeDetectMsg::Move(dir, progress)) => { - Some(Event::Swipe(SwipeEvent::Move(dir, progress))) + Some(Event::Swipe(SwipeEvent::Move(dir, progress as i16))) } _ => Some(event), } diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index 43e70e393f..33c9ebfa44 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -49,7 +49,7 @@ impl<T: Swipable + Component> Component for SwipeUpScreen<T> { return Some(SwipeUpScreenMsg::Swiped); } Some(SwipeDetectMsg::Move(dir, progress)) => { - Event::Swipe(SwipeEvent::Move(dir, progress)) + Event::Swipe(SwipeEvent::Move(dir, progress as i16)) } _ => event, }; From 9cd933b88ee86cdb3c263ca07c332721188aa269 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 4 Jun 2024 16:48:57 +0200 Subject: [PATCH 223/626] perf(core/ui): save flash by forbidding some inlining [no changelog] --- core/embed/rust/src/ui/layout/obj.rs | 1 + .../src/ui/model_mercury/component/frame.rs | 22 ++++++++++--------- .../rust/src/ui/model_mercury/flow/util.rs | 5 +++++ 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 3b62139329..315744e612 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -131,6 +131,7 @@ struct LayoutObjInner { impl LayoutObj { /// Create a new `LayoutObj`, wrapping a root component. + #[inline(never)] pub fn new(root: impl ComponentMsgObj + MaybeTrace + 'static) -> Result<Gc<Self>, Error> { // Let's wrap the root component into a `Root` to maintain the top-level // invalidation logic. diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index d93ccb2af8..14005fd891 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -68,14 +68,17 @@ where } } + #[inline(never)] pub const fn left_aligned(title: TString<'static>, content: T) -> Self { Self::new(Alignment::Start, title, content) } + #[inline(never)] pub const fn right_aligned(title: TString<'static>, content: T) -> Self { Self::new(Alignment::End, title, content) } + #[inline(never)] pub const fn centered(title: TString<'static>, content: T) -> Self { Self::new(Alignment::Center, title, content) } @@ -90,6 +93,7 @@ where self } + #[inline(never)] pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { let style = theme::TEXT_SUB_GREY; self.title = Child::new(self.title.into_inner().top_aligned()); @@ -173,16 +177,14 @@ where }) } - pub fn with_swipe(self, dir: SwipeDirection, settings: SwipeSettings) -> Self { - Self { - footer: self.footer.map(|f| match dir { - SwipeDirection::Up => f.with_swipe_up(), - SwipeDirection::Down => f.with_swipe_down(), - _ => f, - }), - swipe: self.swipe.with_swipe(dir, settings), - ..self - } + pub fn with_swipe(mut self, dir: SwipeDirection, settings: SwipeSettings) -> Self { + self.footer = self.footer.map(|f| match dir { + SwipeDirection::Up => f.with_swipe_up(), + SwipeDirection::Down => f.with_swipe_down(), + _ => f, + }); + self.swipe = self.swipe.with_swipe(dir, settings); + self } pub fn with_horizontal_pages(self) -> Self { diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/model_mercury/flow/util.rs index 8a0f0ef90b..7b7c4324c8 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/util.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/util.rs @@ -175,21 +175,25 @@ impl ShowInfoParams { } } + #[inline(never)] pub const fn with_subtitle(mut self, subtitle: Option<TString<'static>>) -> Self { self.subtitle = subtitle; self } + #[inline(never)] pub const fn with_menu_button(mut self) -> Self { self.menu_button = true; self } + #[inline(never)] pub const fn with_cancel_button(mut self) -> Self { self.cancel_button = true; self } + #[inline(never)] pub const fn with_footer( mut self, instruction: TString<'static>, @@ -210,6 +214,7 @@ impl ShowInfoParams { self } + #[inline(never)] pub fn into_layout( self, ) -> Result<impl Component<Msg = FlowMsg> + Swipable + MaybeTrace, Error> { From a66dd78ef7c1920fbfca334ea92ed9ce9448c66e Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 4 Jun 2024 09:27:00 +0200 Subject: [PATCH 224/626] fix(core): fix missing hold to confirm screen [no changelog] --- .../ui/model_mercury/flow/confirm_action.rs | 4 +- tests/ui_tests/fixtures.json | 142 +++++++++--------- 2 files changed, 74 insertions(+), 72 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 75f4871d55..494e8182bb 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -193,7 +193,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - if !prompt_screen { + if !prompt_screen && !hold { let store = flow_store().add(content_intro)?.add(content_menu)?; let res = SwipeFlow::new(ConfirmActionSimple::Intro, store)?; Ok(LayoutObj::new(res)?.into()) @@ -210,6 +210,8 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err ) }; + let content_intro = content_intro.with_pages(|p| p + 1); + let mut content_confirm = Frame::left_aligned(title, SwipeContent::new(prompt)) .with_footer(prompt_action, None) .with_menu_button() diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 17dc5b377e..8ce7b3d712 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -18592,7 +18592,7 @@ "T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "113ac9ab91987c08c3fe4dd06090487a89e449796137ba3406ffddd9bfef802e", +"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "9d8f6b73163fb6678f27e32d160b267b42d8afae8271117abcce3771686522dd", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -18822,7 +18822,7 @@ "T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "8ac53a90eafa8b8d392cf36ab42c797577928258c9205fd1847a1fff64d2be2b", "T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", "T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "a8e77f34b212e39694998113d64e581e54cf9f82b4c3ecd04ab486410a9250c4", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "371769b446cf08cd06fe288a2474d36bc82b1609276e53014fff1805d82d6800", "T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "59533c327ecb4428d8074dffdecb2355f26f64ff95884075367b8719d7706d55", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", @@ -18875,20 +18875,20 @@ "T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fda1d98847e0ef3cc65ba1bbd36ec42d1eccfc78f29ac8f1ba86b2914dee514b", "T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "51891acb0d758f8155e076b1fc684e50e2ea12d5e4b69c69b35633dcd3f08526", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "d8b7afd929e3d32b5db5ee5abd6aba62a47f798ea61700f37db5802f25a04b5f", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f3afd26cab962de456c9566af59f4bddd45cb72c278c3e5bcef8aa851fb1c351", "T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "06fc5d9b9ea23273c45e5fc7c58532376dcb9e69609518e82b822dafb790158b", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "3c653fa366db7f01eccc0342f1476d0c81eda4b56de9704d41eac36ff8409b5b", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "26b3fb78f4d85effe4c7dbbaa786c517f2227920c0f6ac9419ca8f0db76d8369", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "e782150f0d818b385889c163a8b01d872afc64b6eb1ec6a60deddd27a565d6a8", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "6e8f277d3943a00630d7befc064b854157786b5e6848373b1b2cc153cef51cf1", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "a97b36b95d0d5c6e14183643343e7ec24f3cf4e3c06cda16e0092994b85115d6", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "a83be479bb8559e01caef964aa7fad07e7d26ff581f3c02766f545caa01eb517", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "a22a653215f4b46b9fa0a6ca9014e05d877aefcb27162c40d47f4db62b4c0965", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "aa61ab37dc7bbe08f190ef8dcbc8fd77eb655e457fc6da0d9b74b729a456d493", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bc1b09999633d061d0a4b8614eef06c6b73517cfa59719224ca2509882ec70e0", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "8e9fe0cc514d3088e33eaef3bf87c0dc0f5cb61c339ac350cabacbbeed8a2fb1", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "9fd4dfb7d17917c83b341d566d06e24a9771929e852a92c893230b2abc0a7ee9", "T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "09064758623d5372712046fce8deb4bd1ad7e7de6f4552dc210c6bed69a4a022", "T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "f873be74d9aacdb92cb3abb4a018adc35f959d6bd30a7606a1113af216494e6b", "T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "09064758623d5372712046fce8deb4bd1ad7e7de6f4552dc210c6bed69a4a022", @@ -19152,7 +19152,7 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "cbb983965dc570c693a1c2c35858cba0ae595034065da80d1c935b5b800a1cd9", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "30bc166f6517e2e1515b74b8c6ff4becc19ca7415b43e8d2a1144a253c821491", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c6a5ae5a206b03345d1bc85133919fde907240ffe6bb143a9769ff32eda0e927", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "5ffc59e504c7500df477b1589bf2cbbc4c77f14ad0f9b8c2f8db6e91534080e3", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "a9bf70391c91efc4b69653a109ea5b81a923ffd24cdc4c0390c63f0a68622e20", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d5b6b40ecfef9bc596efe9acf29958271f0a258d7f2e306a932b655d07d61938", @@ -19173,8 +19173,8 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "79f622c7ce929f805d5d1ad8e5cdc1b3cd9049b51438446e40855d304a7e9ea6", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "82211b29ac1e051e137312eba58971405a17549dd801763ad749cbecfd67d5d8", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "9810d982c680cd687dd7343fdd9d163e2184785d356cba8f65a778e85afe97fa", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "81de053ac9f81b9bfe20935d152b03600385d2127496c21bdf113877ab7dde0f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "71964df6b629f14dd2638fa362a8137c2032fb27dbe03abbecb6b344c86117c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7eaf2149c8573441410bc93569981a24678618d95736e0dc8392b0ffda7923f9", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "a296461346c24ff105c0bef2c8e6dd66507e441cedc29be60a94c9ca3a817dac", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "9df41e9c380bf17bbea4464212909bb424eb1b25b9a3dacd144c7a3ac39efa2a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d74f0e92d22338ca580c50069818efc7e514ad14bb05a8a72ac4d420121e1520", @@ -19187,7 +19187,7 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "2e495190685b5a15966b8cdc4e266332ec2f0b6c3aeaef4226ef50d6270670e5", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "bfd979df7941ac83b27497c0fab381649c0c60317f0e5773e3029dfa93628a28", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "bfd979df7941ac83b27497c0fab381649c0c60317f0e5773e3029dfa93628a28", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "7293a2b19ec71b7a208c5634e4ef8b3136ae8045ce3139cd9c05b3b29cb9ae4e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "ae3065ead87bb39ed0878452580603e81d74f1a19f3c842b46a5f7f7b4a4e38c", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "141c1f9b76264e67ecfc0f532f915581941228faea1cd407bb687d6c9034c716", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e6840f69e0ffe61f05177a9772eb7394b72dbd0bba62309eac739bedc425477c", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "bb6cc278786b64012d67f8ad2c998aca5a98c1c07ee6e4995feb7e7893fca3fd", @@ -19322,13 +19322,13 @@ "T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "2d3e0f7eeacf34df053401319a02b9f91da70f8c6a07ad933ea537dc83e11ce9", "T3T1_en_ethereum-test_definitions.py::test_external_token": "f48184a187991499473244d4872ae4ef5bd7b80adcf71f7a577ab95d8922aa46", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "e01d348cd36c2b0775395209bbdf0bdb7fa778b16ceb7ff56bc5917802c5f3b2", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "eab5a0fb53c4503b745f12fdd2db6f320caf7fd359d6f0bf14b393e0adef9af0", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "8777026a6234d2a6b8d898a15c60901bb6b81630786f31cff975712e7424b1f3", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "f48878155ccd25dbb6b59613108e79f51bb72f3147370f9a7ac17bc0f083e814", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "b4a5ef45384156b0d8b22905b82d22e72020b3a844e3a33be466caa5ad7392ae", "T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "0dfd0b1703c3ccbb4a4a752d497ec4e5f2d6014bfe65099afdb0684ab2bbd5f3", "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -19367,15 +19367,15 @@ "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", "T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "d9bc21fd2ed9f20ccb09346d55a12dee1bd3f1edd55652cb6822dc9ecab8d7a3", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "bdff54914413226df4fdaadbd07cc1524e140259692523d028a5bacbf6772d63", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "ac6bd4da2861cf4f55dfd357e53a3a02376c33cfb488a0b3b76579a4288c2788", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f5668977045ebb45f18c857b9d143a1f25d5c33adda1aba442db220a70aaa81c", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "3991158fd430af9ab94a43fbecd060b771e704dee9f57c4a9fb559244721b433", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "5df19156369c18a38d0164025ad433ec85e311c4ae56a96b839f8774788c8ef7", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "ac6bd4da2861cf4f55dfd357e53a3a02376c33cfb488a0b3b76579a4288c2788", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "ac6bd4da2861cf4f55dfd357e53a3a02376c33cfb488a0b3b76579a4288c2788", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "ac6bd4da2861cf4f55dfd357e53a3a02376c33cfb488a0b3b76579a4288c2788", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e8496b038e8ca13413c6045fa29739d5c9796f51837b724364185e3b310edb00", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "3bb53a82a4dfc14a3c3f5bb8f5d123f16263b2a72e4d300647b43bcbae3adc21", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "956f75f9487200ae22feff465340b66b11a2d1322e060f6f2b34db3ca2e1073e", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "e491492ac02e465979a8f307edac303480a5e003761af2eddb1cee36a30b1312", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "bd93b123d857521be96cfee5aeeb8be46f70b466c1c74c3de528af33b0c7dcb7", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", "T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3c9b233b7821be43f521216a4a1362bbfb4cf01023f3c8dc866ce248acd89cdc", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "b09a4267bc9d558460ab0cda3241b9fe4efe0b28434d15838907c42b5ff4a30c", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "944e55bb8849c65a7f2ac151bc7648efb453f320e0307bdefae778d91f264653", @@ -19576,9 +19576,9 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "1437133dd893797b5eb8ce8bb4af786dacd9123237ac36e8b2894fdeb59ae547", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "4dcc0c3cbcd4f5e2be1e79488fd62f53b3bcad149162b7abe94d6f0bac1c4b06", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f9885944e44f725181557c1198cb09f62f01cb1280a5326e70d7a8a28cdaa022", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7e91aa227df848d3e9a9970261d5367ff1d89ceec0bc658df5ae8c061ad93dbc", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0ce7464f6d5af12445a90f3b67392702dd7d49aaebb9538f5aa48787a0d0f344", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ee1c47bf8a8fc74dea4d47d309b98bb754cdf4b10a5833241049978505943e25", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "bd377ef66bf9b054a1886ad432702c26d2bc61f6d24968b43ac47099801c62d1", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c636813668a516f428218637658dad94435214e527dc653d31337405f8c2014f", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "6afb0370fbb8519740eafffd5f292cf3b88ce4810eed498eb0ca9487acdf6f57", "T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9a6156d81ff433060d0bfa03b60a1e35fb2b8ae6f92bf09bfa213b1c493f5605", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4f8e587e4d1fdb29ffff23ac55df1af78e0abf161f6f9717d4f2f6614f1958c6", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7c6ea47126f805d2021b893fc0a664eff04c7d19c6e329060a18a244f191b4fb", @@ -19687,37 +19687,37 @@ "T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "406956e0bd55987063769c5cea5cc289ce2947b1b5b89a23ad86f068fc3af886", "T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "a8b204b09e62a83de2758b957e6cf1a2dbd107f2668bffeeb627e89e6a5d32fc", "T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3e4ce8208675747bf7b4dfffc81ee5f0f388e7e3972d932fb110cc63171d8f12", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "e68c0a43b8a26c14aaac6403ce70525a29ef737fdf589f60fad058cb622d1b67", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "eb9ac14e1dba720ce2c5ec2c4e215b18dc0561441dba075f686f66a46686bc23", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3936fed5aa98f45c5d784db97dbb92c42fc20ac80d029c53e5ec20368c9a2229", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "bf1e4ed65ea478f7be7721ae4aebbca21e5eceba1103638d06135f7040589b2c", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "97877de1c171f467e0e08f4297f8ab5edec76f93eaff1925a28332343ffc385a", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a1e654a9c89afff1d6f9a39b910749a5cbd420879d798bf759c61b3272f1c0bc", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "8c7b6a57ad4c2654ca746847295f6c87ac79402dd47520a5a6491b84ef8528d4", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "16463b003e9ac3b6311b31d49daaa0c95ca446a490fc4a73066cb6c1f7b323c2", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "65eb50b5ebfe154b93a636544729f9d3bf0efc3204538bec5848358300656e9c", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "e201d846b39acaffc5a6856616b12f626e0d364f488625a7535e749e82b4263e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "bd24e91f432f5da749b02c939810eaed1a8835ad0a49b9cc260c5a6fdf35e658", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "f7f9f48ec10ef23fbb67b0c0f676d49cf37333deec6841f7a097864ece2a6159", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "609064b559946049976e4b263c05a68b877395f6b8e5afb0f255dc5b7c845e13", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "6b6dc9508e7213a169357a2c9b8d201ed392de850d64e026ec95e15c9f1043b0", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "98e9aa06c4c6b2ba875c2ff56687e2123b0ddb7d80791254c0bb745b9d529860", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e242b5933d18e0830be63c2633c49ae69e07f8a86122483ef60a2c373cfc21c4", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "26c2086d0c407c248b884add5d316ef4bdcb02ca89981645ee9cc8b7c47780ed", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "482ad751571cf3b80876edd0f571fc776e097ea5822e77b09cfb55609da694d8", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "3c165f58f2ab2b69a7c4bf1b04bac728e49ecf3c85d4f0edbe535f6fff4e4ebd", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2b32a285f34f614b3562866b6863d3a6d092738fa5ede1a68ba49c51dd57f872", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4224f4b9fe0fdbecd12a5dc223dd6de1e0d8848fe0b3b40f3c506d5c4cee4e88", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "e30d1015fbfa674b29b18d8b070a8f99aa27252a14b8564e41d4e893b40e4f98", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "70e9680035579962ff639cd955930ca7113b349afb78a9104ecbc14425ac9769", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "d80bd63d1d653ecc5b1843f3f2d1a7f40af47f3364c2cb4bf09ce8df2ec86287", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "0ba83f7e4f20f4f4e59bfae2ac2ce8830284a7eb80912ceb970643df229e4590", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "85aa59e5f188d1b821575970766af7ee703dbf25da8b189054e611ffd0d2d4d7", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "1174d60425a38e2e217b2cfd6e3c457e3871122201de55a3829599e7bc62180b", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "95f2dc4e7b8c06e7c7f99c3d869bf508dadb82837bde0ead2ef06cfa74c36878", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "662c8525399ff20bd1770b1c5ac75e533695453c0f883d84673d16014021eab1", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "26c2086d0c407c248b884add5d316ef4bdcb02ca89981645ee9cc8b7c47780ed", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "91181ad7fbd5654d0f309b1d17b45d3eec7dfeecc188f2212168dcc74c052f4a", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "3bd4558190e5b49a6c09d7612f880fe188ff92a5edb7f95d3fe6ed056f8ba09d", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "3a30b531cc017dcccefa0634b4f41b32e7299aa60b72a92b4d74c26c6f2c1bed", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "f67edbc19711249b588262c2da9d88adbfb04ecdaa6fc79e2f27748f47f128a1", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "f9e6fc21d109df63d8c218c3e6b52db0f5da246ba6f9bffc31ed09e673c397cf", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "f17a6395ca055376a764d0417bcc0a93df17574ee578f9e24936df8b35a49919", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "95914fbaf3c535cdc619e3e60d4bf9955b825512a970c7760a0dcb92e054ecbe", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fa5e4762a610327129dd0cbf487c5708256c69ade8e568f44042bc3590bde5ea", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "57ee992c51454db9394ba9585e35a5f32b03336a9fe048ff10a2a44224fa671f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6660bf8e3af0c64e6fd6d4da183a6bed66bdeee61f12a35c0e195d81f227f8f6", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "836636fe45129ce2adacbd98418985d0043ad89cdcf7c1ddfb3be2b91a66e811", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "411d52f08526ade6a4713388876ec1abaf2f71bc718a75d8d9cca46fc342f404", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "dd79e443db5a428e8b501b736c937b2c07652232baeaa17eee2bbf37ab215361", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "6060d9abdaeb1c3ef5a27cd05f04fcbb07d5eda0de26c194596ecb0f163cdd30", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "97cf29f10673cc2af63938d94e5bd1684c7efef4da75e10c43c438272245d4f2", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "46602528015b892d463118d25aa79fe2ad9fe0efa5804fa1a4e2898ae444c2d2", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "ddb75c298686be9bd2c0cb9200ce3c640cb8bd9a1c4d0f124765a38615181019", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4e37008d00a77dffb11141ed98d94fcd8f5645d0f4df629fd0d8a03c07276a2f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "583e61a524e337c0110b374ad1607ca9950908bfc220bde35aa8af798a2618ef", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "92626f76e2f84213d337efb2b810d995c31cd87ad8181467dd7c336551e72c9d", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "0d4e38665a1e45e41d409158393aa55caad6940ad5b0126d5259170189f7744d", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "0893e266001575d8e42a5633a02c3356138b0dcbe899cbe495fa8f1b4918c141", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "e45d1a8d5d091eaf7a7e0fd7c28e503a6d641f5ed5f1d745453514ca544a6f30", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "993d14d21144d04ffb9e25ec496777709d5ccdeb7aa8c60cf3350087bd75f988", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "c2d54f46491d68684129e28bff5848153a018dc6ca0d7a00cf40838b2796f15c", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "028b97af2113d7c3a5f3663eb3f87d5874362bec317196ba90d5ec0a782c1092", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f67ff4559c6cb2d5d4507b54275c252a881bf56b912eccd2e6a5654842b9478d", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "94b1ecd89972b7c869871abb8fc54c75509fc54fed5c0d91b56feae09a70aab6", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6c9e8b66ddae93dfbc3b87aae1f9c60cf6d8e1e73d31806d1463d4e05cf51a09", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "b0082db9824f68ade4b92655500132357ac68225d44c39352d9ee675187fa592", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4e37008d00a77dffb11141ed98d94fcd8f5645d0f4df629fd0d8a03c07276a2f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "4c2aa820795e97c1941ba1159f826abae9a5ebb781ac204325ef97ca7a99a626", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "47e284a9ad7bfa916d9edaa8fefc62d4bdf07881c050f129b43200acf7f38436", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", @@ -19735,7 +19735,7 @@ "T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "b2c6e6edbc2a19419193502dc652cd8c0aeeac08c9126905d655e7431422b9b9", "T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "b2c6e6edbc2a19419193502dc652cd8c0aeeac08c9126905d655e7431422b9b9", "T3T1_en_test_basic.py::test_capabilities": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_basic.py::test_device_id_different": "7c70b9ef9a09cec7bbdb4ee343b6d54bfe8e013dea28ab40894a72f8625ccea6", +"T3T1_en_test_basic.py::test_device_id_different": "499dcc97c56d812933b4b2aedca14bf0d281761d94316485b51e0b09c1e4d917", "T3T1_en_test_basic.py::test_device_id_same": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_test_basic.py::test_features": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_test_basic.py::test_ping": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -19746,7 +19746,7 @@ "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "f6141a836a60dbcac25e4fcc453bc67b14b79322f4e2ffe9a0b8577faf681694", "T3T1_en_test_cancel.py::test_cancel_on_paginated": "ef5ee04a83bd0230975fb30d0c5209d8bae58a510fb50925007eb21c0da89f63", -"T3T1_en_test_debuglink.py::test_softlock_instability": "e53e5b069d1bb110d3145692a59d658042ec12aaa6496335662db05d6c4eea0f", +"T3T1_en_test_debuglink.py::test_softlock_instability": "b674295850e35159e495faedfab3c2eb8e53d58c5d9dce0094c6cdd237e52447", "T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "37e638adc4cbf197c41ab8033dc32d53f6891fdad490443e9742fffb315eaef7", "T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_test_language.py::test_error_invalid_data_hash": "c92f0183cf6bc7c05a10619419c5ad6b9a371df6722f7b4cec6ac90f9f2c627c", @@ -19761,7 +19761,7 @@ "T3T1_en_test_language.py::test_full_language_change[es]": "7ec638c429e66c329bb5400b0e817a3f9cbbfdfb83a6008aed6c778ec40c7e55", "T3T1_en_test_language.py::test_full_language_change[fr]": "ab5e75b9c7200d86764d4ecff1dd3f5970562015371ff0e7e7127115db293f6e", "T3T1_en_test_language.py::test_header_trailing_data": "7d7fe0f88840f9f46f3a9875c25d5881034bb629aab050e220e917cfbe71621b", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "e0a8f79dfac37e28d457fff7aff46d232464062c9cf7bad535361271bf762dbf", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "b1c8ea911a43e9d11f6fdc7f467e7ec56ec23e575e929cf7b2d65de26e73193c", "T3T1_en_test_language.py::test_reject_update": "066d1c7e03d310f64d139a1264ba6b082ad1262096ab106a2eb62c4e0a05ab29", "T3T1_en_test_language.py::test_silent_first_install[False-False]": "96fcbc459bf8d87a22d0691eaa938d198dae4f6f6412b5c33332aaa61c54de9b", "T3T1_en_test_language.py::test_silent_first_install[None-False]": "96fcbc459bf8d87a22d0691eaa938d198dae4f6f6412b5c33332aaa61c54de9b", @@ -19781,7 +19781,7 @@ "T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "51675a9ea00ff4b3978e8f9d3f162ea6b83c806af17f710d4c0c4dc98941c9a5", "T3T1_en_test_msg_applysettings.py::test_experimental_features": "5c7dfd9d9149551760fc232353de0e85d855f2b0825e7b74c50156bc4c7c2615", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_msg_applysettings.py::test_safety_checks": "473b63c5bad33d22c9a3249b36244591ea31af43421d36b126f199841c885c40", +"T3T1_en_test_msg_applysettings.py::test_safety_checks": "2fa4cfafc8252551e45da6e53ff029ddf3661639e3108d79920cb2300f85ffea", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "9a1005431cbe80dff773b55dd1daeaae135dda1e450539442b825b113e4f2dd6", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "38553e9d6e04c203db6e553f63d658c24960f00915092194b2e1187e58c767e4", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ec9596cff9853865d2e58cdc120648b0e9289ce8914c47a79c0b3720a60e4043", @@ -19808,13 +19808,13 @@ "T3T1_en_test_msg_loaddevice.py::test_load_device_2": "cb4bed9d89d11a4671b48bda061b2187f6227d24e9fa0f1daf9fba933edd42ac", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "5efc39bbe2045d0cb2847a8183d15fc903357f60a51e90cec1ff1e4895966d2d", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "3007d4af69ee1510315a25c72eb60ffd54ede49a85c6d5113b21c04e2a572c72", "T3T1_en_test_msg_ping.py::test_ping": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "aca3981d378d8ed504c5a4475941af91b57eb78d919a1c9c452fd437af696f78", "T3T1_en_test_msg_sd_protect.py::test_refresh": "b0a88717e57ee4b5af18527d282a8ee4f0f68563f70f4c0fd7165b145018f5d4", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "7482be64b3596739a22d970843085e1433b510e735fca6769e95382e5f4d0a65", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "2428552c5d27675cbfe2c19f01c317fbd7891b785badb59b21e739198f4e64a0", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "7c70b9ef9a09cec7bbdb4ee343b6d54bfe8e013dea28ab40894a72f8625ccea6", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "f5c252f4ff6ada6d7a9bfe53619117965dedc1de54e74c7f58761e3bd3a459c2", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b8283d83415bdbef2b2fe74af47197c0b7d4c78be46a2eb7ce67885dda527ba3", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "499dcc97c56d812933b4b2aedca14bf0d281761d94316485b51e0b09c1e4d917", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2e8ce270ebe538a0576f6faceda02cc1b7e558be2a945b9798c17f7c60f33e72", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2e8ce270ebe538a0576f6faceda02cc1b7e558be2a945b9798c17f7c60f33e72", "T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", @@ -19853,7 +19853,7 @@ "T3T1_en_test_session.py::test_end_session_only_current": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_test_session.py::test_session_recycling": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", "T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "c0d1b2e8e75d184b1386cf038428d4dcbd40eb083e0380e9a0c80aadbcd6f030", -"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "f82eb9234ac3b0de4954d333570f284b64a87d6f3d3e4e9dcd3b8bc1e5ded418", +"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "6108dddec12ea511231c99a9ddc8a09152e8268e8eea267cb1593b373156492b", "T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "24ae537211d9cdd015f883185240ef4ffe0439c2300b7a29ce3fb13340d3b468", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "6084576089e22b31932c937600a7a5f4bb503bc95dfc1f19a7d6094f1816d134", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -19869,8 +19869,8 @@ "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "285fce8c1cdd0ff0981fbb2d25ee18b297c38e044ecce27eddd206086d1e96e6", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "fa0c77e0b5cf823861aacb58a2348627fe4dd3f50c530e6ee95a64c6b719a895", "T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ea8eefd4f448825c9620bb9a0cd506a708c32dcaf68e15605678b9ba2a235fc4", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "07891071797e2cb780f87a7cf30deb111c66f628dca6dfb3a7cf2b553efcfba0", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "c9b19776cbfb63581e73a7bf8e0ae34820f4f38190d7ca41d45a787f0ca247be", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d5a43a3b4adefa0018a0da31d373100019c8ed164e3f2ab08adfdddf6d76e89d", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c3434e524cd74fc78be8d148c55836ffd794b5c584c941df0d34bf9ba99b66f7", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dd59de8e11698d3b4570017ce5f4a68ac63a6bfbf1f9cfa3ff416eec1b097915", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "8c2c41e9f0e6de932891cfbfc1504a9f356f9d3035e97c779a4ac034a5b2ff9f", @@ -19880,7 +19880,7 @@ "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "3ef44fc050f0f1981767b50c04410679cc6f9ab6517b29cad728ea3382abb301", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "e845dcf7d338cb212a3466a2c90a64c43de071a322d13fff41a447544ee94773", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "8ba4269b2ee75a05edb9211540739c4d0808266a4c9c3ead7673bf5e10fc41d5", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5840d2f68747d7bd072280f43a8a447925aea5d421cf70f9c9be5ba171ad2978", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "8c22d1af7719299d824c3f5e5521dc42dd4a7d70150aeabfcc30bc846a4f3707", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "0115545ae23acc57e5eb3ecd2d821b504d91be9d94b64b00e812ffd88e2151e4", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "f88813d1982478a440d5e5f87d25fff8c12576e5e9d4a5e1f4ddc307275e1129", "T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "01c534328aac95e8e6d0b968b580aaa97fdfa8e58e6efd6f1b816d0626220e19", @@ -22666,14 +22666,14 @@ "T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "50c4e1d8495ac7984dcbf46e180769019ee0d306ddbbb3e66f36f54463eb2188", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "22a4b35e9ffca23d723285ccbdde8786637fb5bdc15b45d1be4677c9b0f940f6", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "43ece0c802dffed4f0982daf8802de8df2a29ca5ab16c5390475f697d1ac61fb", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "5d970f956013d770ac3b9836c8958b1c24b6294079c259b7146071e168bba628", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "9fdd5f4f77b63affc70af34ee0c55be5522f0389340ceb31e644b964610503e9", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "67c493757e3dc5228907e3db9dd853788c37be93295d247ae988b3ab7f988ec0", "T3T1_en_test_shamir_persistence.py::test_abort": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", "T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "6da13841e94b968ebf1871dd18e20b73ff464f07eb21ebf6d510675505b22945", "T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "a4c00fba813a30af023ce02cf7f554f736852f15f68241d88e1a1085cbc23b03", "T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "7c1d0aa16d3a4c19815262ef18bf53796d3cefa5d71f19775ddf95acc153055a", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "74483206af4a9ffa769eb4ee55f44ad4a9ab9429ca76169f8e01ee3d496826b4" +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "d43d9181b68b25ee2520976f899898a9882fdbcf2bd77c0bef92a47ca0487d04" } } } From 6ad41aa06ed36b2a423a4d6b881efa967accee56 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 4 Jun 2024 09:27:13 +0200 Subject: [PATCH 225/626] feat(core): improve hold to confirm animation [no changelog] --- .../component/hold_to_confirm.rs | 80 +++++++++++++------ 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs index b769dd9f7b..18ef711a46 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -34,6 +34,7 @@ struct HoldToConfirmAnim { impl HoldToConfirmAnim { const DURATION_MS: u32 = 2200; + const LOCK_TIME_MS: u32 = 2000; pub fn is_active(&self) -> bool { if animation_disabled() { @@ -44,6 +45,17 @@ impl HoldToConfirmAnim { .is_running_within(Duration::from_millis(Self::DURATION_MS)) } + pub fn is_locked(&self) -> bool { + if animation_disabled() { + return false; + } + + (!self + .timer + .is_running_within(Duration::from_millis(Self::LOCK_TIME_MS))) + && self.timer.is_running() + } + pub fn eval(&self) -> f32 { if animation_disabled() { return 0.0; @@ -65,9 +77,9 @@ impl HoldToConfirmAnim { pub fn get_header_opacity(&self, t: f32) -> u8 { let header_opacity = pareen::constant(0.0).seq_ease_out( - 0.1, + 0.15, easer::functions::Cubic, - 0.3, + 0.2, pareen::constant(1.0), ); @@ -76,9 +88,9 @@ impl HoldToConfirmAnim { pub fn get_header_opacity2(&self, t: f32) -> u8 { let header_opacity2 = pareen::constant(1.0).seq_ease_in( - 2.0, + 2.1, easer::functions::Cubic, - 0.2, + 0.1, pareen::constant(0.0), ); @@ -100,7 +112,7 @@ impl HoldToConfirmAnim { let pad_color = pareen::constant(0.0).seq_ease_in_out( 0.1, easer::functions::Cubic, - 1.9, + 2.1, pareen::constant(1.0), ); @@ -108,10 +120,10 @@ impl HoldToConfirmAnim { } pub fn get_circle_max_height(&self, t: f32) -> i16 { - let circle_max_height = pareen::constant(0.0).seq_ease_in( - 0.1, - easer::functions::Cubic, - 1.5, + let circle_max_height = pareen::constant(0.0).seq_ease_in_out( + 0.25, + easer::functions::Linear, + 1.95, pareen::constant(1.0), ); @@ -119,10 +131,10 @@ impl HoldToConfirmAnim { } pub fn get_circle_radius(&self, t: f32) -> i16 { - let circle_radius = pareen::constant(0.0).seq_ease_in( - 1.6, + let circle_radius = pareen::constant(0.0).seq_ease_out( + 1.8, easer::functions::Cubic, - 0.6, + 0.4, pareen::constant(1.0), ); @@ -133,7 +145,7 @@ impl HoldToConfirmAnim { let haptic = pareen::constant(0.0).seq_ease_in( 0.0, easer::functions::Linear, - Self::DURATION_MS as f32 / 1000.0, + Self::LOCK_TIME_MS as f32 / 1000.0, pareen::constant(1.0), ); @@ -160,6 +172,7 @@ pub struct HoldToConfirm { circle_pad_color: Color, circle_inner_color: Color, anim: HoldToConfirmAnim, + finalizing: bool, } #[derive(Clone)] @@ -187,6 +200,7 @@ impl HoldToConfirm { circle_inner_color: theme::GREEN_LIGHT, button, anim: HoldToConfirmAnim::default(), + finalizing: false, } } } @@ -209,14 +223,20 @@ impl Component for HoldToConfirm { let btn_msg = self.button.event(ctx, event); match btn_msg { Some(ButtonMsg::Pressed) => { - self.anim.start(); - ctx.request_anim_frame(); - ctx.request_paint(); + if !self.anim.is_locked() { + self.anim.start(); + ctx.request_anim_frame(); + ctx.request_paint(); + self.finalizing = false; + } } Some(ButtonMsg::Released) => { - self.anim.reset(); - ctx.request_anim_frame(); - ctx.request_paint(); + if !self.anim.is_locked() { + self.anim.reset(); + ctx.request_anim_frame(); + ctx.request_paint(); + self.finalizing = false; + } } Some(ButtonMsg::Clicked) => { if animation_disabled() { @@ -224,13 +244,15 @@ impl Component for HoldToConfirm { haptic::play(HapticEffect::HoldToConfirm); return Some(()); } - self.anim.reset(); - ctx.request_anim_frame(); - ctx.request_paint(); + if !self.anim.is_locked() { + self.finalizing = false; + self.anim.reset(); + ctx.request_anim_frame(); + ctx.request_paint(); + } } Some(ButtonMsg::LongPressed) => { - #[cfg(feature = "haptic")] - haptic::play(HapticEffect::HoldToConfirm); + self.finalizing = false; return Some(()); } _ => (), @@ -240,6 +262,14 @@ impl Component for HoldToConfirm { if self.anim.is_active() { ctx.request_anim_frame(); ctx.request_paint(); + + if self.anim.is_locked() && !self.finalizing { + self.finalizing = true; + #[cfg(feature = "haptic")] + haptic::play(HapticEffect::HoldToConfirm); + } + } else if self.anim.is_locked() { + return Some(()); } } None @@ -329,7 +359,7 @@ impl Component for HoldToConfirm { #[cfg(feature = "haptic")] { let hap = self.anim.get_haptic(elapsed); - if hap > 0 { + if hap > 0 && !self.anim.is_locked() { haptic::play_custom(hap as i8, 100); } } From 2f6ade5911b8d9668127071568398d658495ad3b Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 4 Jun 2024 10:40:24 +0200 Subject: [PATCH 226/626] feat(core): word quiz enter animation [no changelog] --- core/embed/rust/src/time.rs | 2 +- .../model_mercury/component/vertical_menu.rs | 115 ++++++++++++++---- 2 files changed, 95 insertions(+), 22 deletions(-) diff --git a/core/embed/rust/src/time.rs b/core/embed/rust/src/time.rs index 72eb7455c6..abdb8bedf0 100644 --- a/core/embed/rust/src/time.rs +++ b/core/embed/rust/src/time.rs @@ -7,7 +7,7 @@ use crate::trezorhal::time; const MILLIS_PER_SEC: u32 = 1000; -#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Default)] pub struct Duration { millis: u32, } diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 15223c800a..8b80759a38 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -5,7 +5,10 @@ use crate::{ strutil::TString, time::{Duration, Stopwatch}, ui::{ - component::{base::Component, Event, EventCtx}, + component::{ + base::{AttachType, Component}, + Event, EventCtx, SwipeDirection, + }, constant::screen, display::{Color, Icon}, geometry::{Offset, Rect}, @@ -39,19 +42,19 @@ type AreasForSeparators = Vec<Rect, N_SEPS>; #[derive(Default, Clone)] struct AttachAnimation { + pub attach_top: bool, pub timer: Stopwatch, pub active: bool, + pub duration: Duration, } impl AttachAnimation { - const DURATION_MS: u32 = 350; fn is_active(&self) -> bool { if animation_disabled() { return false; } - self.timer - .is_running_within(Duration::from_millis(Self::DURATION_MS)) + self.timer.is_running_within(self.duration) } fn eval(&self) -> f32 { @@ -63,25 +66,69 @@ impl AttachAnimation { } fn get_offset(&self, t: f32) -> Offset { - let value = pareen::constant(0.0).seq_ease_in( - 0.0, - easer::functions::Cubic, - Self::DURATION_MS as f32 / 1000.0, - pareen::constant(1.0), - ); - - Offset::lerp(Offset::new(-40, 0), Offset::zero(), value.eval(t)) + let value = if self.attach_top { + 1.0 + } else { + pareen::constant(0.0) + .seq_ease_in( + 0.0, + easer::functions::Cubic, + self.duration.to_millis() as f32 / 1000.0, + pareen::constant(1.0).eval(t), + ) + .eval(t) + }; + + Offset::lerp(Offset::new(-40, 0), Offset::zero(), value) } fn get_mask_width(&self, t: f32) -> i16 { - let value = pareen::constant(0.0).seq_ease_in( - 0.0, - easer::functions::Circ, - 0.15, - pareen::constant(1.0), - ); + let value = if self.attach_top { + 1.0 + } else { + pareen::constant(0.0) + .seq_ease_in(0.0, easer::functions::Circ, 0.15, pareen::constant(1.0)) + .eval(t) + }; + //todo screen here is incorrect - i16::lerp(screen().width(), 0, value.eval(t)) + i16::lerp(screen().width(), 0, value) + } + + pub fn get_mask_item1_opacity(&self, t: f32) -> u8 { + let value = if self.attach_top { + pareen::constant(0.0) + .seq_ease_in(0.0, easer::functions::Cubic, 0.15, pareen::constant(1.0)) + .eval(t) + } else { + 1.0 + }; + + u8::lerp(255, 0, value) + } + + pub fn get_mask_item2_opacity(&self, t: f32) -> u8 { + let value = if self.attach_top { + pareen::constant(0.0) + .seq_ease_in(0.1, easer::functions::Cubic, 0.15, pareen::constant(1.0)) + .eval(t) + } else { + 1.0 + }; + + u8::lerp(255, 0, value) + } + + pub fn get_mask_item3_opacity(&self, t: f32) -> u8 { + let value = if self.attach_top { + pareen::constant(0.0) + .seq_ease_in(0.2, easer::functions::Cubic, 0.15, pareen::constant(1.0)) + .eval(t) + } else { + 1.0 + }; + + u8::lerp(255, 0, value) } fn start(&mut self) { @@ -96,6 +143,15 @@ impl AttachAnimation { fn lazy_start(&mut self, ctx: &mut EventCtx, event: Event) { if let Event::Attach(_) = event { + if let Event::Attach(AttachType::Swipe(SwipeDirection::Up)) + | Event::Attach(AttachType::Swipe(SwipeDirection::Down)) + | Event::Attach(AttachType::Initial) = event + { + self.attach_top = true; + self.duration = Duration::from_millis(350); + } else { + self.duration = Duration::from_millis(350); + } self.reset(); ctx.request_anim_frame(); } @@ -213,17 +269,34 @@ impl Component for VerticalMenu { let offset = self.attach_animation.get_offset(t); let mask_width = self.attach_animation.get_mask_width(t); + let item1_opacity = self.attach_animation.get_mask_item1_opacity(t); + let item2_opacity = self.attach_animation.get_mask_item2_opacity(t); + let item3_opacity = self.attach_animation.get_mask_item3_opacity(t); + + let opacities = [item1_opacity, item2_opacity, item3_opacity]; target.with_origin(offset, &|target| { // render buttons separated by thin bars - for button in &self.buttons { + for (i, button) in (&self.buttons).into_iter().enumerate() { button.render(target); + + Bar::new(button.area()) + .with_fg(Color::black()) + .with_bg(Color::black()) + .with_alpha(opacities[i]) + .render(target); } - for area in self.areas_sep.iter() { + for (i, area) in self.areas_sep.iter().enumerate() { Bar::new(*area) .with_thickness(MENU_SEP_HEIGHT) .with_fg(theme::GREY_EXTRA_DARK) .render(target); + + Bar::new(*area) + .with_fg(Color::black()) + .with_bg(Color::black()) + .with_alpha(opacities[i]) + .render(target); } // todo screen here is incorrect From 0cd36cd41b1818e0b3f29164955f33843fc83df1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 4 Jun 2024 11:49:59 +0200 Subject: [PATCH 227/626] fix(core): fix lockscreen animation cutting from right and bottom [no changelog] --- .../rust/src/ui/model_mercury/component/homescreen.rs | 8 ++++---- .../rust/src/ui/model_mercury/cshape/unlock_overlay.rs | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index 06a3cbb4cc..e09e0b71c1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -354,8 +354,8 @@ impl Component for Lockscreen { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - const OVERLAY_SIZE: i16 = 170; - const OVERLAY_BORDER: i16 = (AREA.height() - OVERLAY_SIZE) / 2; + const OVERLAY_RADIUS: i16 = 85; + const OVERLAY_BORDER: i16 = (AREA.height() / 2) - OVERLAY_RADIUS; const OVERLAY_OFFSET: i16 = 9; let center = AREA.center(); @@ -369,7 +369,7 @@ impl Component for Lockscreen { .with_bg(Color::black()) .render(target); - shape::Bar::new(AREA.split_bottom(OVERLAY_BORDER - OVERLAY_OFFSET).1) + shape::Bar::new(AREA.split_bottom(OVERLAY_BORDER - OVERLAY_OFFSET - 2).1) .with_bg(Color::black()) .render(target); @@ -377,7 +377,7 @@ impl Component for Lockscreen { .with_bg(Color::black()) .render(target); - shape::Bar::new(AREA.split_right(OVERLAY_BORDER).1) + shape::Bar::new(AREA.split_right(OVERLAY_BORDER - 2).1) .with_bg(Color::black()) .render(target); diff --git a/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs b/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs index 36dbfde060..f6285a77ed 100644 --- a/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs +++ b/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs @@ -69,7 +69,7 @@ impl UnlockOverlay { canvas.fill_sector(center, r, 180.0 + angle, 280.0 + angle, transp); canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); - // Innner fixed circle + // Inner fixed circle let r = Self::RADIUS - (9 * Self::SPAN) / 2; canvas.fill_circle(center, r, transp, 255); canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); @@ -78,9 +78,10 @@ impl UnlockOverlay { impl<'a> Shape<'a> for UnlockOverlay { fn bounds(&self) -> Rect { + // +1 pixel because middle pixel is not counted in circle radius Rect::new( - self.pos - Offset::uniform(Self::RADIUS), - self.pos + Offset::uniform(Self::RADIUS + 1), + self.pos - Offset::uniform(Self::RADIUS + 1), + self.pos + Offset::uniform(Self::RADIUS + 2), ) } From 9ee670a440e6dae2411a4f33ee318ce21918abce Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 4 Jun 2024 15:46:36 +0200 Subject: [PATCH 228/626] feat(core): change default homescreen image for mercury the default homescreen is rendered algorithmically, when changing homescreen to default we now use text message due to lack of scaling [no changelog] --- core/embed/rust/librust_qstr.h | 1 + .../generated/translated_string.rs | 3 + .../ui/model_mercury/component/homescreen.rs | 118 +++++++++++++----- .../ui/model_mercury/cshape/unlock_overlay.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 40 +++--- .../rust/src/ui/model_mercury/res/hs_lock.png | Bin 0 -> 8384 bytes .../src/ui/model_mercury/res/hs_lock.toif | Bin 0 -> 224 bytes .../rust/src/ui/model_mercury/theme/mod.rs | 2 +- core/mocks/trezortranslate_keys.pyi | 1 + core/translations/en.json | 1 + core/translations/order.json | 3 +- core/translations/signatures.json | 6 +- tests/ui_tests/fixtures.json | 16 +-- 13 files changed, 131 insertions(+), 62 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/res/hs_lock.png create mode 100644 core/embed/rust/src/ui/model_mercury/res/hs_lock.toif diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index ece0cbd029..99bc9e2056 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -250,6 +250,7 @@ static void _librust_qstrs(void) { MP_QSTR_hold_danger; MP_QSTR_homescreen__click_to_connect; MP_QSTR_homescreen__click_to_unlock; + MP_QSTR_homescreen__set_default; MP_QSTR_homescreen__title_backup_failed; MP_QSTR_homescreen__title_backup_needed; MP_QSTR_homescreen__title_coinjoin_authorized; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 86056ad150..e037ae6237 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1333,6 +1333,7 @@ pub enum TranslatedString { recovery__title_unlock_repeated_backup = 933, // "Multi-share backup" recovery__unlock_repeated_backup = 934, // "Create additional backup?" recovery__unlock_repeated_backup_verb = 935, // "Unlock backup" + homescreen__set_default = 936, // "Do you really want to set default homescreen image?" } impl TranslatedString { @@ -2661,6 +2662,7 @@ impl TranslatedString { Self::recovery__title_unlock_repeated_backup => "Multi-share backup", Self::recovery__unlock_repeated_backup => "Create additional backup?", Self::recovery__unlock_repeated_backup_verb => "Unlock backup", + Self::homescreen__set_default => "Do you really want to set default homescreen image?", } } @@ -3990,6 +3992,7 @@ impl TranslatedString { Qstr::MP_QSTR_recovery__title_unlock_repeated_backup => Some(Self::recovery__title_unlock_repeated_backup), Qstr::MP_QSTR_recovery__unlock_repeated_backup => Some(Self::recovery__unlock_repeated_backup), Qstr::MP_QSTR_recovery__unlock_repeated_backup_verb => Some(Self::recovery__unlock_repeated_backup_verb), + Qstr::MP_QSTR_homescreen__set_default => Some(Self::homescreen__set_default), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index e09e0b71c1..99a1692b8c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -10,7 +10,7 @@ use crate::{ event::{TouchEvent, USBEvent}, geometry::{Alignment, Alignment2D, Offset, Point, Rect}, layout::util::get_user_custom_image, - model_mercury::{constant, theme::IMAGE_HOMESCREEN}, + model_mercury::constant, shape::{self, Renderer}, }, }; @@ -20,7 +20,7 @@ use crate::ui::{ constant::{screen, HEIGHT, WIDTH}, model_mercury::{ cshape, - theme::{GREY_LIGHT, ICON_KEY, TITLE_HEIGHT}, + theme::{GREY_LIGHT, HOMESCREEN_ICON, ICON_KEY}, }, shape::{render_on_canvas, ImageBuffer, Rgb565Canvas}, util::animation_disabled, @@ -43,6 +43,46 @@ pub const HOMESCREEN_IMAGE_WIDTH: i16 = WIDTH; pub const HOMESCREEN_IMAGE_HEIGHT: i16 = HEIGHT; pub const HOMESCREEN_TOIF_SIZE: i16 = 144; +fn render_default_hs<'a>(target: &mut impl Renderer<'a>) { + const OVERLAY_OFFSET: i16 = 9; + + const RADIUS: i16 = 85; + + const SPAN: i16 = 10; + + const THICKNESS: i16 = 6; + + const NUM_CIRCLES: i16 = 5; + + let area = AREA.translate(Offset::y(OVERLAY_OFFSET)); + + shape::Bar::new(area) + .with_fg(theme::BG) + .with_bg(theme::BG) + .render(target); + + #[cfg(any(feature = "universal_fw", feature = "ui_debug"))] + let colors = [0x0BB671, 0x247553, 0x235C44, 0x1D3E30, 0x14271F]; + #[cfg(not(any(feature = "universal_fw", feature = "ui_debug")))] + let colors = [0xEEA600, 0xB27C00, 0x775300, 0x463100, 0x2C1F00]; + + for i in 0..NUM_CIRCLES { + let r = RADIUS - i * SPAN; + let fg = Color::from_u32(colors[i as usize]); + let bg = theme::BG; + let thickness = THICKNESS; + shape::Circle::new(area.center(), r) + .with_fg(fg) + .with_bg(bg) + .with_thickness(thickness) + .render(target); + } + + shape::ToifImage::new(area.center(), HOMESCREEN_ICON.toif) + .with_align(Alignment2D::CENTER) + .render(target); +} + #[derive(Clone, Copy)] pub struct HomescreenNotification { pub text: TString<'static>, @@ -52,8 +92,10 @@ pub struct HomescreenNotification { pub struct Homescreen { label: Label<'static>, + label_width: i16, + label_height: i16, notification: Option<(TString<'static>, u8)>, - image: BinaryData<'static>, + image: Option<BinaryData<'static>>, hold_to_lock: bool, loader: Loader, delay: Option<TimerToken>, @@ -69,8 +111,13 @@ impl Homescreen { notification: Option<(TString<'static>, u8)>, hold_to_lock: bool, ) -> Self { + let label_width = label.map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); + let label_height = label.map(|t| theme::TEXT_DEMIBOLD.text_font.visible_text_height(t)); + Self { - label: Label::new(label, Alignment::Start, theme::TEXT_DEMIBOLD).vertically_centered(), + label: Label::new(label, Alignment::Center, theme::TEXT_DEMIBOLD).vertically_centered(), + label_width, + label_height, notification, image: get_homescreen_image(), hold_to_lock, @@ -171,7 +218,7 @@ impl Component for Homescreen { fn place(&mut self, bounds: Rect) -> Rect { self.loader.place(AREA.translate(LOADER_OFFSET)); self.label - .place(bounds.split_top(TITLE_HEIGHT).0.translate(Offset::x(4))); + .place(bounds.split_top(38).0.split_left(self.label_width + 12).0); bounds } @@ -192,10 +239,14 @@ impl Component for Homescreen { if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { - if let ImageInfo::Jpeg(_) = ImageInfo::parse(self.image) { - shape::JpegImage::new_image(AREA.center(), self.image) - .with_align(Alignment2D::CENTER) - .render(target); + if let Some(image) = self.image { + if let ImageInfo::Jpeg(_) = ImageInfo::parse(image) { + shape::JpegImage::new_image(AREA.center(), image) + .with_align(Alignment2D::CENTER) + .render(target); + } + } else { + render_default_hs(target); } let label_width = self @@ -203,7 +254,7 @@ impl Component for Homescreen { .text() .map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); - let r = Rect::new(Point::new(-30, -30), Point::new(label_width + 12, 42)); + let r = Rect::new(Point::new(-30, -30), Point::new(label_width + 12, 38)); shape::Bar::new(r) .with_bg(Color::black()) .with_alpha(160) @@ -293,8 +344,10 @@ impl LockscreenAnim { pub struct Lockscreen { anim: LockscreenAnim, - label: TString<'static>, - image: BinaryData<'static>, + label: Label<'static>, + label_width: i16, + label_height: i16, + image: Option<BinaryData<'static>>, bootscreen: bool, coinjoin_authorized: bool, bg_image: ImageBuffer<Rgb565Canvas<'static>>, @@ -306,12 +359,21 @@ impl Lockscreen { let mut buf = unwrap!(ImageBuffer::new(AREA.size()), "no image buf"); render_on_canvas(buf.canvas(), None, |target| { - shape::JpegImage::new_image(Point::zero(), image).render(target); + if let Some(image) = image { + shape::JpegImage::new_image(Point::zero(), image).render(target); + } else { + render_default_hs(target); + } }); + let label_width = label.map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); + let label_height = label.map(|t| theme::TEXT_DEMIBOLD.text_font.visible_text_height(t)); + Lockscreen { anim: LockscreenAnim::default(), - label, + label: Label::new(label, Alignment::Center, theme::TEXT_DEMIBOLD), + label_width, + label_height, image, bootscreen, coinjoin_authorized, @@ -324,6 +386,8 @@ impl Component for Lockscreen { type Msg = HomescreenMsg; fn place(&mut self, bounds: Rect) -> Rect { + self.label + .place(bounds.split_top(38).0.split_left(self.label_width + 12).0); bounds } @@ -395,29 +459,15 @@ impl Component for Lockscreen { (None, TR::lockscreen__tap_to_unlock) }; - let mut label_style = theme::TEXT_DEMIBOLD; - label_style.text_color = theme::GREY_LIGHT; - - let mut offset = 0; - - self.label.map(|t| { - offset = theme::TEXT_DEMIBOLD.text_font.visible_text_height(t); - - let text_pos = Point::new(0, offset); - - shape::Text::new(text_pos, t) - .with_font(theme::TEXT_DEMIBOLD.text_font) - .with_fg(theme::GREY_LIGHT) - .render(target); - }); + self.label.render(target); - offset += 6; + let mut offset = 6 + self.label_height; if let Some(t) = locked { t.map_translated(|t| { offset += theme::TEXT_SUB_GREY.text_font.visible_text_height(t); - let text_pos = Point::new(0, offset); + let text_pos = Point::new(6, offset); shape::Text::new(text_pos, t) .with_font(theme::TEXT_SUB_GREY.text_font) @@ -457,13 +507,13 @@ pub fn check_homescreen_format(image: BinaryData) -> bool { } } -fn get_homescreen_image() -> BinaryData<'static> { +fn get_homescreen_image() -> Option<BinaryData<'static>> { if let Ok(image) = get_user_custom_image() { if check_homescreen_format(image) { - return image; + return Some(image); } } - IMAGE_HOMESCREEN.into() + None } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs b/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs index f6285a77ed..1b2075f316 100644 --- a/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs +++ b/core/embed/rust/src/ui/model_mercury/cshape/unlock_overlay.rs @@ -70,7 +70,7 @@ impl UnlockOverlay { canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); // Inner fixed circle - let r = Self::RADIUS - (9 * Self::SPAN) / 2; + let r = Self::RADIUS - (9 * Self::SPAN) / 2 - 1; canvas.fill_circle(center, r, transp, 255); canvas.fill_circle(center, r - Self::THICKNESS, opaque, 255); } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index da9135bbc2..587703e8d2 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -586,24 +586,36 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let image: Obj = kwargs.get(Qstr::MP_QSTR_image)?; - let mut jpeg: BinaryData = image.try_into()?; + let jpeg: BinaryData = image.try_into()?; if jpeg.is_empty() { // Incoming data may be empty, meaning we should - // display default homescreen image. - jpeg = theme::IMAGE_HOMESCREEN.into(); - } - - if !check_homescreen_format(jpeg) { - return Err(value_error!("Invalid image.")); - }; + // display default homescreen message. + let buttons = Button::cancel_confirm_text(None, Some(TR::buttons__change.into())); + let obj = LayoutObj::new(Frame::centered( + title, + Dialog::new( + Paragraphs::new([Paragraph::new( + &theme::TEXT_DEMIBOLD, + TR::homescreen__set_default, + ) + .centered()]), + buttons, + ), + ))?; + Ok(obj.into()) + } else { + if !check_homescreen_format(jpeg) { + return Err(value_error!("Invalid image.")); + }; - let buttons = Button::cancel_confirm_text(None, Some(TR::buttons__change.into())); - let obj = LayoutObj::new(Frame::centered( - title, - Dialog::new(Jpeg::new(jpeg, 1), buttons), - ))?; - Ok(obj.into()) + let buttons = Button::cancel_confirm_text(None, Some(TR::buttons__change.into())); + let obj = LayoutObj::new(Frame::centered( + title, + Dialog::new(Jpeg::new(jpeg, 1), buttons), + ))?; + Ok(obj.into()) + } }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } diff --git a/core/embed/rust/src/ui/model_mercury/res/hs_lock.png b/core/embed/rust/src/ui/model_mercury/res/hs_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..82bdd2114febc7a4fda517afa785781fb049339e GIT binary patch literal 8384 zcmeHMXH-*Lw?!$^1yMQ}LXj3y2rUqLub~PkVh8~O1VRS^>AedmO%PF}NmZnXG#f>v z2ukl&5fG$_@B(`8ckg)LpF75T|8B-ONzUGL&9&BCYwwY>6NA#%prdA|CLtlA)6!Hm zB7Ophml!1(@qN~B;4BFVL*)$<b5A3*4}jqAYKL>i0zCZ)SOC@+XGcQfJMu6K=ROB1 z4?o&G??Ltzkkl?QGd{%?B%l0kWN`F}$W`G|J~2%|O0e_L(b1&j(ex#=DggnZ`UU5` z7zwk<UDTJKxW(~d---80K`&<3z>5ji+pE;}q;CjEqI>m+tIz!}PI0s6^*;*f^nI~p z-CVT6)*QgGlqt9r>*=@2RwPeK9@I>DPqOOLwO~27$-G|^wpaVgJt*M?dHt0jj=3L` zhLsb#IkXcMQ=#+7aQjnAK?PI^XZN0Kh<WBXAFTM(ezl;Y@WVdZ$?J@*6_a@Je2GSQ zyjlJ8YU*C1+17jh>Fkuv9~<+2v;9sciOUM_IJ-7Gf{<&Gn?7ojWfjf-@2lVE4y(nn z886x!yIzsWt1B0e(6^%1=`!2ZqvcsN^}F!=M)1g!cJFKLri&p?jZ1}2E{$G^?R2+U zf5NWqPW@b;&Jk4#_|7YM)6m+*pGu+|rRdK23A4WD<YqtO7$sA4!7evZrwIe`nL6sa zvp34IJ%l3k$iIFAGQYFq=zKf>?Xv8hkm%7Q!vW~}=;t3vGwh0x;&cgB;mB2==-jb0 zOyQ)SQ*AFdBI8o`XoF)i5LK)!iX<PdYKqB<OvHJxR+FGG%Vf!GfGMMIscQSI$`si% zUXCt|K4RZHJVprIFwz*+msFoV^pc3Y4nNWq-9_o}yh=0DzolJLJfDowm$C2Aj@1iQ z<<+W=K409gEm-y7R$Q8qBW~~`39c}!^n;NTK0$_qSL&<F)n3aT<kqLu<$4`()3zib zk5Pl&@2y}#qU29nro#-sPSKj4+Of8Dv#Ypy{?f9Bk=KLX5ZSL!Hg8*bkFRn`?1ZoG ze6+r|!2RJsNgJHz^FdnVn`F2#LMxUn*pG=TI!-xQ#s5_|GfTncx%1*zkcKI8ak{a? zp0TWyujd0szS7Cgg73$UDNNh(-E4h#RPmNA;ww1i2jjELMS6NFvjFb`RDvUE-<zFM zxOJ95V-hA0D%$vtJD-81>&md7v&&m#LOtda+Zn2YHGS<39ow3!Dzi?1P@|)TY}=Fg zYtL5I)%ClgmT%uJeuJ>G9++ns8oBv!oQcv~a?Oa9han_gZqY(BG(J1N_nC@9MiDQ1 zaonuj`CRHC!?U!P5vhXZrlDsPO8Gj&-73<Cf*m(&J%+4UfhMU=9!$~gMVWp-deEZ2 z4f^ytayMBmed6XFXY|AhSu~#MPK-W99ynv}OhkR&rRaHULh^(?Stie8OqxFj-__P} znf=u}6I(6Io?>hQz6$()5%*)PF|wyO0Qz!gP-@9su_{)duIubV_dsW5_0<(zA%p)J znE`jJn6p;yD~}PEp)P51oi9f<0T1$!9vA&Ca2bRIdBLsqlfBvq)%aCjFRccvWuYAy zp8lx@X8<}vE!YH1W?|_u^@$8$jeIlHxIfU6daGLyw0O(1MTME;o!g+QXFWdvx-K%r z%~bg@zqK&RVciLM?$J|58oy$iQA~l0@eJvUoDt!}JEQ#tehSl6SsyZTqO+Ucy@=Mx z1Wh+XX1nvBDIZ*t-OzpruQ+6@>4sLQ2zUv*yr(;0r>{Q)owZC#34Rw=cG1dZpt>O8 zjse|5)&L-MW1go{5jH0j6OH0oW56qMQaG-kyLx%N9QbL(=YIPlIcaE_5BdF2>4J7& z9MoM=l|jt6kNqJp^oyAI7ctnv*sXLyiuO0dUGyN{b02eQAloZeEUBZlSNvL@10p>> z;Jld$YlZ@!TFb)Op3Fhp+=d(cdj<I`-#VrHWd?~p5T$QfnT>pN=e6Wk%MAkd>J1;M z4L9JW8e83V2!gYbB0E>_ZMA>J?&)&1xheXM?x=M^nT;w?x#p?P&Q5=qMOhM2i0pYw zi;oj6lbg0_Dma>^wS`!|ED{z)_+6(|72j9pIcKpE;kWHKHNtW~z^kL$-m!Gi(lvyL zd@?PBymFzFclE2r(fN7_Jh!ZAi^ZOo1(NdUl%Tt)K2c=GJxycU`ywEiPtS)jvdY>x z;CHmj=ExQ440F>5TDkEZG@_r@)FyQ2&<$O!n&z~xbH36yo9MUoBoqeMkJ?aU{<x+N z;dkI(mM)Zu)LTwYeeA)4vgY3r3Na=;Tat2kP_>xf)@aupmE-z6SLjo;-d(2YtZcfJ z_WM%=P|Z+8g-8jhWQu-~DCKyq%s}*)+^#@nfkj6%W%EX!UY1P8)YrxuDYw!I8RRww zUyAAo+X)8OgQur`B%_4Vl@{fT0_|#3hs|0{DWDP-hd}ehhwRJv%bd|aYCoG)(k3tu z*Cq$*x@ED%)C?m!*2l=!=4l0NE0C9pIn=Mj18Ge{5rqw(#i(TUZEPC>X%++L9`?3F z$Fpqv^Cx0!->ZZOBonH*whb~s4oj%m&_^(^QJj*Zu$gWMwfWtbHE{;^r$xDbqV-!Z z3FzKP?QRt3NNA{cYtico9&jG!pW}c*x7vHf&BzS+SRT)5HKpAq-4KU|FoFG_$kTZP z+I++o&G=Wn$I!~9Wv&R-+J5eN2Kda(3M=lNX5|;5rA%_5YC#M)Ri&Zx^aq_+7tU2J z0n*>Lok?ZxSmtI7YG>l&p^wb^5>ysFWRB0uF_(%s<%Zz*8x`Jf5i4cvj2+B0ok2C? z&vWLy;97A3lv5}nQVASJ*vtm+V3!TFbuD&}Jl!<Ynq3SAn2WFw&yV(*M7<P|3Ndf5 z;w?rAb$7oPIfJQeU#Csf(KRJ?;7~MCcwXzYGECW*V7=upQ0ZJF|9VeaTh{OzPlvn9 znHyF;S&Kuf>c$m`rs{H^9ec(Mo8~wuu@4IlX3^(cY`q}!^{h3wddXq*Y7EMC-qv+> z5ha3-gz_}g@7P<Xbu}ZShLJo4tXn;@OZ(-yA-x}vw}0|aa_&Hzzg<)!p{x>z&^-5- zqfAuhEv0{diE%pVJnK_-_+<Q)mq{T_`u*$+w``I)hAz@=4`0>xORDe2fF)a4KAHps z>hhbi)OKRu=ZQ3`ye;Gd>6KBl-eNyRTVSo<|AA~SC^~<SdPannA8}m}p{1Htof2}2 zt++e%X5WpF7}^NN-PSRU+>+b87CW)mG6&z6wb|j|_uT|T2U?sj;7uqp?`~b0zLU?5 zIqWW#Kq#lqSjc5|ESJF7c&rjRHM3VVHI;W?Q%lo1cfA%0t0pTEFhx;M>^42izWnvD z-zX0dK#IEJ{j*x``$!-26+;s{7qCvTf^=4M)AVMQ=!Mn{MMp{BCIf8!49`3r?~h=} z>%-Q(^D!b~RLdD^;tk68*~TY6+%+XD0%v+YP;$qOfl8F?Sc=u_%#71pqBMZdxqHSo z4g;k({rrw#IeTu;jz$R!_OE}8PIp&S?QTw+I6RC;Dcdewd5?N*kJo<iC|9c-_v)%E zvLIch^ighzV<CkzyCv7t$;+s@`u2#;l|XpffV%Al9a}zUa@v7a!|4O}9pyMprF_9f zO5Nbd!K{wMp}}{Ho|Qe_2HI-!wM-eq{CXvZKO~B*qhp)t2gbi!m5aZ)Sgq1sYAYPX zjw7t6JQYj}Zd0JwVqY7va&r^*7w7F@>~p6X5P9+ha@SsYrQ}-)OhQ3wYe@CZtENTd z>B}|O<SfoIwfQ_ctvo7t&`=ld>N)zl%5YOJuexYzS0W=%$;-~s+m~Tb&L0|~2`*tV ziP$=$=ymU`=DWQ9Pa#_(_s-@ZaJmbmhPpRuK62a-A}`uwH0*hf-Y4n29TdEEnxKeG z&a$@I=g@THBLA-FC=VI*Qz+<UzwpsMqT^Z+qW1;K(1Cy5wd?Piqdp_Eg3f-VDc}1{ zP&+F~Zs|z1BEMqCDBC0zrkj^i8kiPyoyTz7EOncvxHYQeW_XX%Tbq3^p}OHL+3f55 zBbTWhfZ}7TgDsOi5sbYV8iIPO0)Z}~j$Ba$A^N-h0coi3dsDht`z7DZ7cL*3OYJbz z8{Ui82+YSATJur%l<qs~INgObbzKgupQq>;mv(RRrk*jZHo~Z54JUAmg9$OQs$sk@ zt*kMrR>_Fg$)3{MsNkts!e$YH*+hOYtI1;ZLx3PW)@uxmVR;;k45PSUo3<E#o8R~Y z!^@H4j#9A|cb7!-<Zl71(MP6f_0E0TWwBYYaJ3G$&}}_XNe}kPJcH9#6^puTAbYGd zU$yb31Evn8_o!Yp)Z|ue!J_W7uIez&xSpghPZ%@@>`12y&OOUF;OXP0bS+iO?lGX> z*2>nrget!&Y7+2LzSW6I|J6wRHgDl%)yJo13%B)G#4?d6En9pxUlorr>E|uhFz9F3 zZ<aWSviYNW9`S1wE%}aj9=x0d&aN^yF(c}w&q)q_bBV7j`WRfCh@|MeQiN&rhTLXa zm85-a*x7My^_+I5<!5;M1sv|KoKIWni1Pw-=c$zD^^aFBy?MR`T`EpBC_`OJs*qSH z_||pJQl{JD-EyR{mDT`=@ocbY@fl&#KvqM=%)w8-{^Za44yhS7&oS=&00i2kDYq3` zy=1d(E)jeDxaj(p424)j?c|7SVKk-8+;eraDNhvJ2tBX<n>Ax^u%$}cizIO59AYa> zHjY-?0M24)?qtrYd~xiFIVC;D$#CPTP_Ynsal%fqU8;Neg1L={YCw9jzT;^;=KTF; z<Lwr1(jqx-bH&HTRNVv9{gtL!^0#AqDdPzldaK5vjmX0O+$ZZ33hX>LJhBS29MT5u zy7p|R`=9Q1mcQv=Sf<gF{hlB54A)bQRCKVH^5ry$D|MWTi8B{YRdU@&r#g+v38cs0 zALqg=I_2FFEh>Byzg#;eHk;8Fj-o$xgi7@Gda95Eo+p#q>g#J89E^*pdl*0PG%nRt z5MLqJN2e2RQJ=i-3~hLgt80;ny~$H0U=*5%zx8u^@YDhFY;DdZCR2@oTHffQ>dZU9 z)EhTrvz&%87^A|Ea)Tzm--~~gmnuc7x(P$>g|Rh8an71FOF`{^+LKY&j=u6~e6ST2 zF^MM|f0&V17SXUTFQlDN7Lv;NRnOmwC4TsH<o&EOirQ~q#$JzyK9X<4a3QbY`4UC< zIcNE<=itQLVdZT5>)P~-)&jZ0KR;=Vb=qP2#p-m%KbdjHt1$OU77K#!9-0maa_jlu zV|Q!S$8Vbnk-mJ`dIgj<xYaS@eC<vji%dw2HgHxyTGC{tKyYFuRZW?zS169zY_f(% zLRK~F?Ji80f4%jd)7+fIBbed4nvdv<YY`LJo36P(3GgV>Pf_w|e8$Fsc?(4}jAr~G zI$aCoXZgZ0LG#O1%)=bwyPQvDqtU7LH*Qxl)fd0{uH$Jid)nwZh;CtEJUQeO2OFi| z11inD-3v354y_ezOLFTfC~T6A&Un;VSVI`~cxuQ#&crb?X3@_vt!_&}*QU2zK(Y<V ztCYmKiq7ew|6+DVSc{|V{(GZRV~dRtrqd2@ZZrlI-P<&0*<EBQT0aD`bMEho)B3Or zOdGeW`p4{($=U|0TSGwCY8tDA16;!bi=!F8;foM_J=>s}fmkWf7HQM#@Na?NeOm%^ z@(tuR_R5o-L+B&h+^CC|RdzLfDbBZZ-rSBHRVrBGGvKjOsSqqtJcI^@Jy2J04}6h6 zBYDxAyy%gE>fpV{;&@#1PO`^5{dF6$ZH!6BAS)F~U{+*f)cqssjrt(n)kA+6#8Ni% z=rp!JIJ-dqd=?4GDIiWo1*N5;^2gZ)@x&tMZgQ1&JL-I7^OJ|#eOio+QMBdcEaLSh z5dguL=B+Df0z%BGthdr;ICcg0AzWmw_5?G+c5`2AtLQc9gNsofhes1MAX%z`>KYoH z*@bciR;$GFFAt>}JeT_H#3{Q1ru;6!bKhSUEdU434$AE;E~~q-X|t4wcE?ed1y+ey zxVH-rxker4?<zTK;Fx3bUdkG>vq?7I%<68tXyB2ZF5M_C6*wp<_9kZrEpGQZEj;!G z+<1{P3R$e9)Pm&Chx3@ZmS@It7z$mwL)wRWFbbc;5BlXAz5bTb*~K@O(m61PKHTwN zoh_SqBFXHBBJ(PJ?5HQOen?r$YwjO8;iWS4ZS9#vxAgaJg~?s=_)e6RML8D_@dSt+ zM?C2<*V9E{T=8OPTUQ&bm@l3{JP9HpkyG#`pfOHZPk;^99_NAtt~E9T0XSPE@Uny+ zM310?b--!faK{?o&^N){aKgyg0u|(`<$MuD0zB3e4e-S~yLcdck-!sP1o8XvFc=6p zfp|J0f#!NBfQqX-762E6i$OqYzBq3fP@Wnf=Wc6<Fj7_jO+mav0v$X(2?#LQ$Hzy^ zM_kO+-5v~;k&yvIU|<*wL_~l*{9HWIz91J5-eZbi9I99kj606tiF0)U9CM;=T)jMz zKp=4*@JD=jf}Y-=^e!I1RUqmC_C*uGP%#J?j|czN!oyR|n@I9Ip#N&&VM07G0~=vI zT)o^eST%2~izn}2DQq!++7rCoolnxS#elKSSUeHxLG%j!n@bHXJ=C8T#}e4%@Prd9 zqS${!dgAQ<Bi7$yJDxd7=dXbf&Hv>68~TsjPryW!o*qKg72|aro|Y;Sc<dix>x#kI zB7S|9l7>myLNFk#G!_klOT%Fx8?1~t2#$urAT|<G5^yNyFH~AC9-e3y4EC6cNG^sW z@?a&T&~Pa!I0$Qpu>-+jP#ci6v>g<L6_>)o?Zn}57!3Uv3Ilf>u`AKee~s#x%9cn4 zg<zpJaF`7UDv6N*!NqMbAR8h#NJa`GgO;?#!X>33Csei=gu1Ic9!)GK4v)6Sf(b76 zClkklBa~2DNFYq?7xZKV<&5^UBN`xqx;Pgv-~T{OaCoe-C;C`Ts1#HRE+Z)+36qu- zhd}>gZH9ICAa>$0Cln$k{%hvAEC^yUL}Ag#eM%(wBTIyeI~MKf>Tcrd>Wl;)2LL#> zJZW!$+^?c&;yj25zvGVo-Sfs+w_kU^mVh(vWC{Q{X<Gyu^UH|`+8b+o;)rPXYYO9l zcCp72*Z1#+`ePjTUy3CyBS|bTM3Sg0u|#kwtT^aIa0!eZgt#mvF&I18-`PD}?L2+Z z?pP&zVy47whz)d-4M6ZjN}<1_eH^gIIzeD?5YY()ZUTiNU@!z6CIW#WAP^w<cf#P~ zRsBcCa^U}^iQEa`FWUgo?$;P`dm-*t;6Jyk-<loE`2YC&U5o!m4@ByJo%|zx|CQ@s zx&Dy?{|NkVcl|5ZKT_Zyf&cBU|1-I$|MS3ubs_!=@*zIX<QtkE|51M0Mn^-H<R~hs zyP0@LMbNbHAR(b)I=)VkWaY3D2hVtF>8YJrq9CJY7Cta7awR^ADru=InP|RQHS6+f zgD_m3cS}M<BU+YQ_<K(YhtS_+x<xJ6`Zf5$=@e>b;SA2o)Rd;`3+`_hp_eR1G6NfL zl`$HgiUSFgktl{yb4YiPbLQSd=kbSLV1K|+nN?5$jrxARNs(TAAwv_Oc@-;C0sIEZ zKz0=1o*u||dK`3zSC1xfb2J6>MsTW^p0Rwqb$8K47JJv{&Gx3xMMiS9j|=egkjHWZ z_E6@j99PGLF=;90x^oKP>kJJk7jy<4&qVNE+ovQw_|6@0<vLVac#*aTDPhdlfR+Dz z=NYC`!C^*kN?@IX{I&%rhjmYWL`GeI<$50twW7(znZajnrG6}0S#0jALf_N?y1pq$ z&d%`pm2+0{Y6(uL)ZxqyalPE{QL}BGxYW$A+F@MIiN@b!HMwQJIfrm&ADzoob$n_S a?qjsu{FT)ZxJuNQL`zLywOsjn=>GsGZW>wu literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/res/hs_lock.toif b/core/embed/rust/src/ui/model_mercury/res/hs_lock.toif new file mode 100644 index 0000000000000000000000000000000000000000..b2b7dc24edf76c1d30e8feaea4698085426a4b96 GIT binary patch literal 224 zcmV<603ZKUPf15004@O30001EU;qMv?SJ1_Gcmw`!ms~8Fdr`P^gkHHLb(C|p@0>_ z{|w{%L->Dz%yV~u#C=8(Hv!1<VPLodq}W0H1ONZ82hl)FxIy&C|NnJC^uz!E<w5k9 z|Nl8b^aQAZ-~RvS0MQNq|L2p=zkB!J|Nr;y0>Rt=|IhE<{hxC14h|rEHdr_{3{O4> zj6VUwzYkTA_y-yw_tik$!hi4(x~~c6{)LEWE`iD<{6P-N^DGPwzfica)CW$1ERf`Q a3&QPVgr(1GC|n=_3gjSh85oZFKp6nj*mFDp literal 0 HcmV?d00001 diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 71d8d639b7..af3d6fe282 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -173,7 +173,7 @@ include_icon!(IMAGE_BG_BACK_BTN_TALL, "model_tt/res/bg-back52.toif"); include_icon!(ICON_LOGO_EMPTY, "model_tt/res/lock_empty.toif"); // Default homescreen -pub const IMAGE_HOMESCREEN: &[u8] = include_res!("model_tt/res/bg.jpg"); +include_icon!(HOMESCREEN_ICON, "model_mercury/res/hs_lock.toif"); pub const fn label_default() -> TextStyle { TEXT_NORMAL diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 90dc945342..701cb3be44 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -356,6 +356,7 @@ class TR: haptic_feedback__title: str = "Haptic feedback" homescreen__click_to_connect: str = "Click to Connect" homescreen__click_to_unlock: str = "Click to Unlock" + homescreen__set_default: str = "Do you really want to set default homescreen image?" homescreen__title_backup_failed: str = "Backup failed" homescreen__title_backup_needed: str = "Backup needed" homescreen__title_coinjoin_authorized: str = "Coinjoin authorized" diff --git a/core/translations/en.json b/core/translations/en.json index d3b648f735..c5520e499b 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -366,6 +366,7 @@ "homescreen__title_pin_not_set": "PIN not set", "homescreen__title_seedless": "Seedless", "homescreen__title_set": "Change homescreen?", + "homescreen__set_default": "Do you really want to set default homescreen image?", "inputs__back": "BACK", "inputs__cancel": "CANCEL", "inputs__delete": "DELETE", diff --git a/core/translations/order.json b/core/translations/order.json index 172418c8df..54dd2a1b68 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -934,5 +934,6 @@ "932": "brightness__title", "933": "recovery__title_unlock_repeated_backup", "934": "recovery__unlock_repeated_backup", - "935": "recovery__unlock_repeated_backup_verb" + "935": "recovery__unlock_repeated_backup_verb", + "936": "homescreen__set_default" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 070161e6a7..29509e9cb6 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "45979e4f395fcad03d843869023d35047483512ec797063806998dc553823c72", - "datetime": "2024-06-03T12:43:57.548072", - "commit": "510121bad342d1f900ca123e131448d577a25e39" + "merkle_root": "886b12bcb1eb7dd11f8f8509fb5ee2eb13e1ca6ae968ca0e6732b440ba465416", + "datetime": "2024-06-05T13:23:30.327902", + "commit": "9ad44f311cad1eee987452c8de21d18d931df44e" }, "history": [ { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 8ce7b3d712..fee4f52bff 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -22666,14 +22666,14 @@ "T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "5d970f956013d770ac3b9836c8958b1c24b6294079c259b7146071e168bba628", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "9fdd5f4f77b63affc70af34ee0c55be5522f0389340ceb31e644b964610503e9", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "67c493757e3dc5228907e3db9dd853788c37be93295d247ae988b3ab7f988ec0", -"T3T1_en_test_shamir_persistence.py::test_abort": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "6da13841e94b968ebf1871dd18e20b73ff464f07eb21ebf6d510675505b22945", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "a4c00fba813a30af023ce02cf7f554f736852f15f68241d88e1a1085cbc23b03", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "7c1d0aa16d3a4c19815262ef18bf53796d3cefa5d71f19775ddf95acc153055a", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "d43d9181b68b25ee2520976f899898a9882fdbcf2bd77c0bef92a47ca0487d04" +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "7d18d65883b195be762f7d2e7ca1337d19caf65eb4c2c439484a8abc0b7a9f32", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "b01f34ba8953a78b2fb235e345c862a54b91dd0ff4b072fa7172d0f24977558f", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "5856901cae7d000f7db9a185676fcd2a32a748c42cbbeb50c1069ea842ce3247", +"T3T1_en_test_shamir_persistence.py::test_abort": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "cca49682544d6fce18e06c9d7f626787b7ebae95821c82a56fdc168d2c89a179", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "6bd027b12b00011e7fda75b13286751c67c7e279ff32e285f2a7ee7078f00aee", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "8f2c5939c72cbd699820a81d4edd0b9a082684a6a79739312f9de067bdd47603", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "d250aad4cba370f28bdac1c2e59b1dc59ba9fcbfd6ed7be5f0e74544a7851424" } } } From e268f79749ba932dd6f2da18c2e91787899e52dd Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 3 Jun 2024 23:10:44 +0200 Subject: [PATCH 229/626] fix(core/ui): T3T1: improve passphrase prompt [no changelog] --- .../embed/rust/src/ui/model_mercury/layout.rs | 26 +- core/src/apps/common/passphrase.py | 2 +- .../src/trezor/ui/layouts/mercury/__init__.py | 1 - .../test_session_id_and_passphrase.py | 7 +- tests/ui_tests/fixtures.json | 5474 ++++++++--------- 5 files changed, 2744 insertions(+), 2766 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 587703e8d2..6d579ae9bf 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1020,39 +1020,17 @@ extern "C" fn new_show_simple(n_args: usize, args: *const Obj, kwargs: *mut Map) let block = move |_args: &[Obj], kwargs: &Map| { let title: Option<TString> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; - let button: TString = kwargs.get_or(Qstr::MP_QSTR_button, "".into())?; let obj = if let Some(t) = title { LayoutObj::new(Frame::left_aligned( t, - Dialog::new( - Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]), - theme::button_bar(Button::with_text(button).map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) - })), - ), - ))? - .into() - } else if !button.is_empty() { - LayoutObj::new(Border::new( - theme::borders(), - Dialog::new( - Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]), - theme::button_bar(Button::with_text(button).map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) - })), - ), + Paragraphs::new(Paragraph::new(&theme::TEXT_NORMAL, description)), ))? .into() } else { LayoutObj::new(Border::new( theme::borders(), - Dialog::new( - Paragraphs::new( - [Paragraph::new(&theme::TEXT_DEMIBOLD, description).centered()], - ), - Empty, - ), + Paragraphs::new(Paragraph::new(&theme::TEXT_DEMIBOLD, description)), ))? .into() }; diff --git a/core/src/apps/common/passphrase.py b/core/src/apps/common/passphrase.py index 0a9e222af6..b09ed92c03 100644 --- a/core/src/apps/common/passphrase.py +++ b/core/src/apps/common/passphrase.py @@ -62,7 +62,7 @@ async def _request_on_host() -> str: await confirm_action( "passphrase_host1_hidden", TR.passphrase__hidden_wallet, - description=f"{TR.passphrase__access_hidden_wallet}\n{TR.passphrase__from_host_not_shown}", + description=TR.passphrase__from_host_not_shown, ) else: await confirm_action( diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 3ce312c818..4036cbf907 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -728,7 +728,6 @@ async def confirm_blob( ask_pagination: bool = False, chunkify: bool = False, ) -> None: - verb = verb or TR.buttons__confirm # def_arg layout = RustLayout( trezorui2.confirm_blob( title=title, diff --git a/tests/device_tests/test_session_id_and_passphrase.py b/tests/device_tests/test_session_id_and_passphrase.py index ee197be84a..5cc9f37026 100644 --- a/tests/device_tests/test_session_id_and_passphrase.py +++ b/tests/device_tests/test_session_id_and_passphrase.py @@ -398,9 +398,10 @@ def test_hide_passphrase_from_host(client: Client): def input_flow(): yield - TR.assert_in( - client.debug.wait_layout().text_content(), - "passphrase__access_hidden_wallet", + content = client.debug.wait_layout().text_content().lower() + assert any( + (s[:50].lower() in content) + for s in TR.translate("passphrase__from_host_not_shown") ) if client.model in (models.T2T1, models.T3T1): client.debug.press_yes() diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index fee4f52bff..e7a952577f 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -5071,7 +5071,7 @@ "T2B1_en_test_session.py::test_end_session_only_current": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_session_recycling": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", "T2B1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "821014bc5fae08a678fa4c40dc79f1e37d4b6286ee1e5c94b75299a1d01111d6", -"T2B1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "53d7289a6b3fd5426fe6bc400b5ba7576402469456a2a26a48fe3c79b54b2a64", +"T2B1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "910fa5c855393bfaa9a188b8260bcd473103e6d013427368b0452a3050dc0f11", "T2B1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "31f3aa9306778474ba10ba975cda6afbb2bd486ac642722d8ac3269572b8aad7", "T2B1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "d421a35cba172f71b504b7196de3045237527c5b3eade7fe5d10ae668ead82c3", "T2B1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -9539,7 +9539,7 @@ "T2T1_cs_test_session.py::test_end_session_only_current": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_session.py::test_session_recycling": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", "T2T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "099800e8e1478d2a71f6daa0bd9a59904ed69610b4f99af4f82bc7735f863e40", -"T2T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e3626c8545ffdf8d8060858fbe64f275e13b87a0a82bdcba53e1cd54574bddf7", +"T2T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "c15d2ea5023ee21d809f8a56e3a9d2dbd2cc550d7caa3f8d9a308afc0c51cb39", "T2T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "cf2453bd1a01b8ff3747432bcc5eb9f348bbdf393cf6eeba8256839a6a88829a", "T2T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "a400d365c69461b637388c8e52d7b30e51688edb21430031fa51baffc7e1d43b", "T2T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -11009,7 +11009,7 @@ "T2T1_de_test_session.py::test_end_session_only_current": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_session.py::test_session_recycling": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", "T2T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "ea7c6c9417da7523bf8367b0ed5ed69df287a72a1deca438b3fdf501676fd2e1", -"T2T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "453f5464c067a5359dc9605153809169dc41e034409f521a454f236bcfc04b27", +"T2T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4f9f879824df90193b0f7f9f6a5204680f26048c5c97c54570276027519cedea", "T2T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "652c86a57e3e794d2aebb9d8b12d3fa0c7f287153762790d8651c45f25b703f3", "T2T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "0cbdb61ec21cb9f0e0dbe72f749f54928c5d33da6274e4f304e0ace98deabedc", "T2T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -12479,7 +12479,7 @@ "T2T1_en_test_session.py::test_end_session_only_current": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session.py::test_session_recycling": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", "T2T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "70a4470f371bf7c7b081e3db757be32e075380fe016f7995f8c809425787d1ec", -"T2T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4b168c313ec48ff938dae0dfe5ad06a7b22d1f5faa9f8400fb3b800ae87d8226", +"T2T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "adbc00b3ed594251df5a77a3ea9837ab44c6f6de54ae761acf76956d48f67561", "T2T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "9d0dc62af74dfcd2979b54fd422b0055b45fc2f827fe804f5f1adf81f2e8ccd1", "T2T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "4e44fc968b3fd257aeda319d16ad27fa23ad8d4e4b954bf314931ea847520292", "T2T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", @@ -13967,7 +13967,7 @@ "T2T1_es_test_session.py::test_end_session_only_current": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session.py::test_session_recycling": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", "T2T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "c1b4f8209829a6da7445b6167738988883a0bc694075490e75783ceecf537ff2", -"T2T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "ce77813e7227ff5af41faf8f6150af2b87d0d0ae7509e6447f826ac3caf36cba", +"T2T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "6abbcd253e47a6efebc1d3ff0866ea84e0426b2f55fe3d8881cebd020282ccef", "T2T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5198c4b55df400132abc4eaf03daf53c552a93e7b13ca7baa2eba39c7065cc82", "T2T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "cbb2afccd5ef1938d1d86aba062807c58a365b3708f93d85c8b6fdbd3ab99fc4", "T2T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -15437,7 +15437,7 @@ "T2T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_session_recycling": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", "T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "40a58d0f0072a17f9f52b30fcd4741db16aa35b9cca7418cf33328c5b69fc6d9", -"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "2c455a7df6cd8ea51b882090a2879c58c8f7d9ddbf4715056d21d58919d21b54", +"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e1c91d58198204ff63eada6306677d78cb6c7b07ddffbc048c19a45aa54f674e", "T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5c3ee50ed554d815add3d28dd95be64da4755c57b0ad1c8d4fa355f9c9aa8c53", "T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "4b068c0a109ca07d0eb805af47f80a14fd1f541802a13198c56572265267ddfe", "T2T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -15494,9 +15494,9 @@ "click_tests": { "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bdd8ecd2c3457ee60b0bbb8a2e47fb4dbece11dbf7a453823fe9b99d5c20cb03", "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "c06f48c1c304b0fd1e944ffea2b96107131fe3321ee0f67b858568fa2606cd75", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "fb6ca6ed76d70b26c7247718ddaddba043cd3a7b12caaf018b045c85554e80b3", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "629beff51dd5113afffb8ba1fedb38b155249665bbbadc15f8a1626ef78a365d", "T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "156ff65d17c141d7426e18474e46235f249494a0a61c229dd3696cf9ff6c26c1", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "afcaeb8e837d9a09039cef5186bbe203a89be30064313065deade1ca96ab6835", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "3d04fd47562aed18fba6ed8b8982600b9f208f26d498efe71ce3a8ae83daf479", "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "101892fa0a24f33279d07fda4477178a7b45fc04c01acbbf901833d4d024158f", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "55cdac02cdd20ce5249fabd5e63ad68386a796634fa21e2ef7cb1701e98c0020", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "be2ba7ad30c636e7542ede4c2b39f6c65da16eed559557d559fa2a9afdb98de6", @@ -15504,20 +15504,20 @@ "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "79241bbf8d46ac4497e668e7705152553c9c34c59658ed3b38fb52d70b613e24", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "d03f87e6020b3c9e47a5464a8a68752683b96746612274d91301c7ab4ffbca3e", "T3T1_cs_test_lock.py::test_hold_to_lock": "8e99b5897e849374c94b8bf9a581971bffa050bdf39a684967be642f66fca612", -"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "bf5322dcec0e6560aec763f04e4c2f6afd3e056968644414f3acfe4203745c66", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "9c272fbb29ebcf1d330827e863bdba92ef47b506843ef9108a43304c93dd9e86", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "0806ea4674a5bfdeabf69bc4950d49ec073a5197c8ced4733310067088e9b07e", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "ed17676adfc5450867185b6f40d8b82b70843ffbf4baf78ca99517946fb4deb4", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "7040b38e3e65ddcb8a60eae342c34e63e3155ac1dd375b8de617eb56c2ac45f6", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "fad6ac3c1167ffeecddbca151ead17bbf775bbdb0382d76b26144b73d3668d05", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "a29adc89559c3161ef1398d56bbd375cb0b82eecc9298a9122d1ea12514f2d8b", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "f05008c29731c518e67a859733b1e30b4389c4dbd44143bfa437b47761663f90", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "a5bd5ed255299ef49c04d5f0e855b516c0c6ea3094b994d33f0ccdf714b530b3", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "cfd865ec5f6e7aa18004c85b81dd714b95b1a2df17c4b04aa52ba64f170d0419", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "a5bd5ed255299ef49c04d5f0e855b516c0c6ea3094b994d33f0ccdf714b530b3", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "4b19af3f0a6867681038bafd2736d2c0d6a97575b89846b070970ca40cff2075", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "96bce0775d727c72d985a45fddfe615b79dfc0e358b953ccb8b1ee21b8331457", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "a842e5e52466d792bfb6b9d81c5e12bba6f3e618f71795629b7e731efa61b5a2", +"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "7a7398ae1acf862987ee376b63a20b0dbe920f63932235e43e771f40a650083d", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ea973c070a29705da85b6002aad54489a1a1ae5996f64627cd02c9824c919913", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "6ee483af2148d83ed1b785abbc71bd8beaf36c139fecc56a737b1c699da00008", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "a690b0c229dfd347efaba52e15b5459f84a17f61acb3ac233e874f519cad07cd", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "2475873009d2957d4d838334caf475d92f2bf8b36f563ac5de33ad231823810d", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "0de13e7eafe6679c6c45fcd2e7718a2b231006d0101e63f57ee3ee40dc480fc0", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "61be59a545057321fdfef2a9e0dcb9702eee76802727fe77c7167caa26092a68", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "24d9c321c1bfaa7e996e12a4fd0b410ef7a630386d088f219002758a483763bc", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "26fb130e56cc866f5f22e4377a9cccda30f6157464a466f9d49941251bb841c3", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "bca6ee1ff23531057087249768a49b441548a92795b1830f7b133b9e21bb7953", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "26fb130e56cc866f5f22e4377a9cccda30f6157464a466f9d49941251bb841c3", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "8c57f885d0e05ba0ef2e53d1382903c6103ea1f40569ebe60b010568800ac384", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "98d330ecfe424966250b220a38664b374de02a41d43e1c34762c9ade8f1bdfca", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "22ec8b84fb49b59ff2b94bbe51fa92dfa0db92b76cc6bf6ef595fa057f738352", "T3T1_cs_test_pin.py::test_pin_cancel": "6b225805544e2473e5bc911e271b068a3c6379b7b41ed1a5f55bf395ac3287bf", "T3T1_cs_test_pin.py::test_pin_change": "bea7e35dd6c42f7af563fd839942c6adde847c23b37a6de86cf5d9c1defa95ce", "T3T1_cs_test_pin.py::test_pin_delete_hold": "0bbb8d6984c715b8f0b1d04a5e73f4b1c9b63f87b8ab340e08cb247b6f6a012d", @@ -15543,9 +15543,9 @@ "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "193f6053460a2a67cba2022bc310bd3fa4d00c7af6408544ad62a1911b7f3121", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bf46b9b3ed4689164f9877140549c91649f9de4153f3b026d66497bac64b75a3", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "37716b158133986a37b9a803628f382abe3cf25e0ce8be8017605b066adae710", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "710c9b7c5dae8a373c26d1476e9e98c1c28b1d0ec01f53bfbb4c7f5b7e6393ba", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a8d03f1df5234fc59ed79253e54ca0478c0c63e8392fa42f19b061a02cd008fa", "T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "756747cecf841b995f0e23545a05d22d6a1b8a783bdeda30cfac926a64f6f664", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "1cee0e0f9f58623f627685ee23750a53cec388d351f05dc2d875b61393ca4f00", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "7a16b88310bbab2f456602c6f73cb00832265823407438d7f241511b6f52283a", "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "2f123bac78e5f12dfea18414032142e3c6efd601aa60b84a5a9e0e10a46ff85c", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "5c221cc9751183eaa02e2347571819469c316bb1cde0d29a5a252cf0c7a5819e", "T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "5744408e0dc4ea581e209bf26abd86b29f34f89e39f8ceb125811670feee27f3", @@ -15553,20 +15553,20 @@ "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f976c56e7f7e4302d27df9eb54f30cfce19d6dd553e5dbf42608ee579605fed0", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ce7fc86f644dcbaae77fbd45f6e12004c3175fef69d5cb80b7eace5b38f0195f", "T3T1_de_test_lock.py::test_hold_to_lock": "dfecbd90b394f3b35f0cc2a0248c35b50427a67ed647499e5652ac51d6cc786c", -"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "5532543c77b2c9f64c16cc9f31371decda359063067dac21143c1b318174750d", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "58bf45df88e43fdc94381e7d98320311daac04740851aacc8e9930d7fcf95245", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "277aa167742b546d6afdbd8bd9bae10c339321618b47a58407c8057b81f61964", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "7aaf8a87d151f7650ff4a5c5e43afc7beb2f5642e20cac4baf932086dd573719", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "e0ce51cf3c706f2175a73c78b3ab9b857f02a6ca094cccab3c0153b3caa2a3b9", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "c902be018fa4551069e27655d9349bf2c412f26c3914b2dd7a268c01fe3cbc14", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "f3e8f7b95e9b5d9c59721697bfe0dc850a61c1103d2fb0f45b072855bb21d72c", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "fa2302928b8fbd7f48a8ba602f02ce90e7fd5c206f2140c63e457b853a9ea94a", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "d2c2fd1db9dc74f056c4c18f25e73ed66ce80300f1175f48a6f363d342a5bf19", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "6810352d8b5b70a10885303f58feae0a24923d6bf57aec92ab326cd0e9732874", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "d2c2fd1db9dc74f056c4c18f25e73ed66ce80300f1175f48a6f363d342a5bf19", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "1418fc43424aef260edd3c2b432c74729be6c2e082fb275ca1c1655b89c59c40", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "ef5113188bbc4c84547b85f0b4359b823a8f95778cc907a3915d355be493501d", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f9b9792e7bad95e83d3bb2b2df917e1da5ed48dc7b13e7914be9aec6e10edf42", +"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "9dd62a30ba3d71fd7d664fed8a8e24377d4b8f487b44e9f0e704e9d629513849", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "3396e178efb66b5172963498df91a8d378c18a147e05a1d5e277855b16531fc8", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "f0d591c567d203fb43a59722340d57048aa66d32af11292e94b20ce7509af159", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "20908127682e76eba205028eccd952d41c137042282661b271229b26f3674a54", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "2a0368b9b07ba9e5c4d55078bc897172b59e2fdb6985e074b5d9777418527c7a", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "3b48b1f16429754c78bf7349711c651d8c262fc2971c030a1bfd4874d8b35c13", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "3beeeb6043cd90384ccc6250ab0554938e7cc248079790ea42a6ec86955c735b", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "0d6651e576e950295f7cea2eec1d9eaca2454e282ca7ffe56cdfd08654ab291f", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "39050016bf0fd947a8a3bd88eb1dadbabaafc78fc00f425b336c03b47de218ee", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "e048f06eefeeabeef198ef99e7aef02e570ade75f41b426fdec5769a96611e63", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "39050016bf0fd947a8a3bd88eb1dadbabaafc78fc00f425b336c03b47de218ee", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "706ebccdbe01d125ee18516e0b974d474104a1badb1a44405ecc31a5b0364f52", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f7038aee617d7a39ca15e7e4f1cbd796267c49dce9c28c040fb6d98a28203de7", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "fee43204ca14a74cfac93d881d735a993f0d69c106513e9475d45c2fad68ba7c", "T3T1_de_test_pin.py::test_pin_cancel": "b3c20631d0fd1f39f4ec8cd4b76ffae6f0d7c62627210d9bfddf5c6c19af55fc", "T3T1_de_test_pin.py::test_pin_change": "c7901ab88bcb588fea0b14a96592f55783861807a6f5aefc9cef7363ce272378", "T3T1_de_test_pin.py::test_pin_delete_hold": "053ba3cd0c2425fce74f72fa4701e8b96d1194d2d2d4604fb66a95247c2af797", @@ -15592,9 +15592,9 @@ "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e7101bd80469df6762a01eef2d5112b408ac6f9ac859ad62335db656d5071c92", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6331aeab9c7bb97d1bc218f6782b5317054c8595e2fc9950b7ffdf6f4004cab0", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a6bf69b77418064b43795e13034fbcabb445d3a0a5533a10fe37e2429c2ee6a6", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "b544e27a7a322939f72ad41a699c3209fba9d07becba52f0c72fe571d36c2804", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "10a0896d4555c03aa5bb3a4dcfdc8f320955605dcae92fcbd98d39f7598f6e18", "T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f7a72381a602a235c75087034c33cb1f1a0a95b6b9b9a8689e3ea2f6db6add49", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d07c96600af2969ad75edff7d35c50c42371addc2a8269af85af3c003ff5c7ec", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "e584f4934f8ef515c4d41f773670386e90b6dcc20bf22b1e5114a41faaca95b6", "T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f6862c4fdc00878f9c14339896139094701c34a89f4f9c32d4e03767540de60e", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "d2423bdeb2923a2c06b59bf114a6219e4b918d7d3c061750985531b3f6ae8329", "T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "5f36a5d9d88476467ba31078701529dfdcdea2344944a8952e69dbfec238598f", @@ -15602,20 +15602,20 @@ "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "12a6032073d94c4f1be1176f087faea05d4393e2fce5d889375b7c84891de3d3", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6b80f5fe9beede5b34269bd8747d86e93c11de489758f35eac92d8a6ce09a786", "T3T1_en_test_lock.py::test_hold_to_lock": "1665b2e4984bcc7a2f307a89789dc2d6c8db9c04a5906729f769e0e8b76da04c", -"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "e0faf9f3c0c83f6762dfa00323d7a69ef4f1f71ef99160b88541e9068f04e55a", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "51c45f969237398ccc41494bca87694b061578042c71508c61994ea47907e033", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "be89fc7cefbfa0e03f0cfad7fa5f4cb3d42adf26921156d59f3ffcc1b06f2a38", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "db8b45f2eb9f0ed0d830043c8e3715b9186446b1ab5af1a2c6e6a34d8d52c7ba", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "e7c71e8d7afccc079ce77aebaae560abf309a9e09f9ad2561298181604f34646", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "15efede095491c618c1c8866260763cf673093c92bbbbc65929153ecfd8edc86", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "11e34eb00e39ce8854dc8d4c26577c4aa82f62fec8505e7074483dbef0766d46", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "0b09f18df7e875965ef27e4a9442d9478adeb3179d7e742c0a8a0a70b36464e2", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "81cf3f1b2994ba5d9f89e75c871695ce6e89e397c64364229608e95315ca5ef0", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "df47b8d3a2bb1d48c49fda7218a5e658169e80c5f5a45fa5a3725b2114183864", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "81cf3f1b2994ba5d9f89e75c871695ce6e89e397c64364229608e95315ca5ef0", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "d2a2dd8ffa128b524edd2084796b629cf6a66f70f6b8767d4064fb9728ab3378", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "2bd34db9e07c78c1c3d862ce87302343e4bcf6ddfbf79d11042958aacf783218", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "bb005eb9d24591e76f82c791232d405f2912c5ba7fc1430194cb30cc641dca56", +"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "2f921ff47fb723b9d9b9634df1f1761c64e37a6924c02717b38ced73036fbf5a", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "391d74473f3c1197f72e0705a90cc2ea2b3f02e21050b7ed51d7f1af6fabe2f7", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "924b1add41dbe5819d1e9b02307ce6c0064f4560f95d3521a950836490ac6895", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "37e986cb461037359ef558a540ffa5cea99e21ad97b5e8ddd8d4bb67fed3a939", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "fff6517511e3a422d8774700766f263322580b63f573f0092f050754465ccf5f", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9c21931c2cef2710d4355f2b797e868e4ff90e53a20106eab7870d1e0d9ca2f3", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "d6827d2d0afdd0bb80fba3bae5ba19c85f181f101e002a08e0035f00c7e59f0e", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ff4d85b759ff3fafce7067f0badb8b1626b824e725db1d9a4fe25737ba8c20af", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "69b3469c5d96675e8556cafff55f626e7aae92bb66f5e73d236fe3d5e9ff72b7", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "103503c1ec9e516ae9ed65b6efbce37c5de8de6d6321e724e2628a66517606d3", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "69b3469c5d96675e8556cafff55f626e7aae92bb66f5e73d236fe3d5e9ff72b7", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "a289a5c48ae558399168ed6f54e87118c78ae6f320f4c8acc75f8e8ae27d620f", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "48a9852bc6dfe718ae34b14b05272a6699912aef223e89b3decf498a0bad40e2", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "9b20baa0c320001cd29949cadeaf493833f8e46b3842bb428ce05e3491efe288", "T3T1_en_test_pin.py::test_pin_cancel": "bb4efc51df54d61f2ddfb15018f72c597d3df78e7a973db0abf6392ab4611bb2", "T3T1_en_test_pin.py::test_pin_change": "6b231edfbdf58b01ceae46d96b641952f6e2b1a0bd1490a91516e23f1e4a61f0", "T3T1_en_test_pin.py::test_pin_delete_hold": "8b7d3ab9f42f55a2c0dd7b0514a082b308606c8311ef830b144f662949b784f0", @@ -15641,9 +15641,9 @@ "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3b3d3e5efdeb6c4e09c4aa3d685129e6863db8da99af7797bbc79dceaab89297", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "900575f3a90faa1a0a7c5955d408ad5590cb188297adbf84fe800d8b30705474", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "ea04a1231c8ecb5c62884a4ca232cba969552f7b48f0bbe8ea019ba853b5d15c", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "2c13834566012e8b7158330cc454087dffadcb5b80e2c7dd06a6f2a39c628f59", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "f3f13899fa21c603c4ea8aa7015e5cd9649e91ee7c04bc2ec930e2b75c2877da", "T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "4280553d6953e41669553828201b60a207a4f5e70ec1746741a110a669b6698c", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "ee872a1f1ce437f6440cb04e2ad6c39b15ad70bbdace768f0c64c0e01834e7aa", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "5de9b67ee9464d31f35f066e9364b89714a71723c367449188425813808d3a27", "T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "106a9fa9cd8cf89aaa50ab3f808d86d499d43e28aba5fbe2803f6149112cfc2c", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "7218e00fc1fdbe36b56f2932a3109a0a8e763ee1f883b06642daacda09877279", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "29f4f3a3058289de697919cae0b62e23a55e7fdcbf1c6add6730a541222d516d", @@ -15651,20 +15651,20 @@ "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "24d2efbb5b163a2cc4c7768ddbbc66e8b19ca90fa78e2a29aa4de6f8ef244932", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "82812a94906043d9ed794d628384daaa25e005ddc8d114246e8402f91aff3756", "T3T1_es_test_lock.py::test_hold_to_lock": "c9fbce356bceef93565ad1a8ff282766661ba1b600ce018d41c8aaa0a4e81d85", -"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "4176b8cbcf38257db230e2cbbb686f9156b32569d476bbf7be0e5d10b33f2bdc", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "e052d67523e2195800dfdb6c3b6b7b0d58c0d54f6e4ca37a529ef8169d69e7f8", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "11c50624a98f2159af95311332f44b79b2d3778aecf4f0473fbdef1b20f6bc64", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "4d071efa18148f8cbf71ecde0b1590b87e02998226fe64488478f7839bea4be1", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "659591d1ee763a6ec2f0d1f514668797fd00d6d73b874e8383738432439d0ceb", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "231e0f91691d4fa305af69ac911df894d2197cbf48e2bed4737b05cdcced9faa", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5cc5e4edf96fe4dcc150a56116766b8d3a2a42b8c75faa532709c6040373fd0d", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "d0b1bee18f5105efa74bacb3eb22345f453ba87801af565512c7703bf64ca758", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "1ea26841531b990683ca0dcc40f5b3eeb726563c86ed281162f4617162c4b759", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "fb0c0c48ac04855bea1cd1a8ddf4b1388847d5a430244e8089a615b29b7e36b4", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "1ea26841531b990683ca0dcc40f5b3eeb726563c86ed281162f4617162c4b759", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "bdd2980bd8f68aed01ab3459a3a717957d240527f455e1dfffbf210e4054ac7a", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a3087618f4217f0c8dca901041d2e472939a128f60d3ea01d28488a3bdcdb14", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "6b49ce68c6c023c47b0080ceb700c1e77767c82c2230e77ae43dac0dca79c7e2", +"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "300af537b5476bf048768fbb670f24316e3942940f7090cb454326b7e2a0d1eb", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "040152b60442623a9c37e38e601ae08b7c1b05303f12b23b40c1ae180bf090d8", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "5878cb3be9a4c2f0a9f97624a3a1468f451082e54eb088cdc326fa444dc9b70f", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "4157240a947947782ef6d0b8884d3c22defc858fd9804570fb4fe2eaad058efa", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "5398e48c51c619d39b1da99d74e777d85c59dcb7b357f511db729e26774ac7c3", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "c4988ba9e2aa55177a5f74fd8823067f94e5faabf5b6834438371ad8acb86337", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "19d54e44f4bc804918cd89a6e763596a11f00a3a6ec9ec49256f36f25f019338", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "62f053e88d01c298ee0a523539a20db423d386d60ae7f833b386cad80f05a406", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "5d6e067cb8ee309ff525f09c82e8a0279fe74b527b1c1475989bbc01a322a680", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "52ac38aaa79c41b5f94fff5cf65fedbfed46ee7c8831c18ca2409a046aeed190", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "5d6e067cb8ee309ff525f09c82e8a0279fe74b527b1c1475989bbc01a322a680", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b7d90a43afa725e4413fb8a0e3ae770a926cc24517c896a62d1caa3ecf540b6f", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "51957cf1e388d506fde278edb5b8719e2f3ed561f4b7054fd4fe45af6c4acb64", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "627e3b894a4438e00e93a0394668bdaffcf76fbb78099ddd7138f593343d3ca5", "T3T1_es_test_pin.py::test_pin_cancel": "88e2cb6a1d189b85b602a3d2446d8aee472af955a3852a0460964c77de652f15", "T3T1_es_test_pin.py::test_pin_change": "b7dbfab5134c973551d3dac6f71c07f123c3b41ff46bd5ce8a5298793bb1f8ec", "T3T1_es_test_pin.py::test_pin_delete_hold": "176f37667f29ba0ef75526308188d9dc9e493c996475ef76f93ddcae2b0e7711", @@ -15690,9 +15690,9 @@ "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e09f0296034ebaafa12348f9bd6ba7473ef9cd1d78105e6c279125cf69d276bf", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "c525f6b9604aaa28264e9502c92200f0d3b63ca009356ef9ede1a5875ba581b0", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "7863be843974eaac86f6020f6df344c9d71fe52a9f56c2be4f67910b0f94e518", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "7e04457fbb63ffe629779a4c2b08ed5e45d01204d785e033916f65cfab687aaf", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "660974e99c062a30936f6b5a3aa31b66af92763c5dcd3a99fbc7b3978363d03b", "T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "5503a08d911c0066c1947f53a8c7c69f7819ea992d485b0cdf23afd882e3e5fe", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "5bea1b176f0a48b278b4a8ec251bb7f922c0193f1cea93986c295263f722df7b", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "a7a55db5e7521dc732eb0211e016efdf80cfdf23da076ad087909fbb6cf062d8", "T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "34d230a8f446bdba5e037877d00aa8067c30c8b114fbd02940927a4681b1e5b0", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "96a492ce46c6993521eed4eb227a2beb122712400b83bed0715818c31cd39adc", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "533c64ed5e6907c712238799f312868557923fe2b4aa302a2cdbb6449d5d8cee", @@ -15700,20 +15700,20 @@ "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "af09503c133033dcd796527e9f52ad370685b20be3b50c93fa041323ea62060e", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "741eb41441de2c4cb3387c9cf641e368fef8203bd0c8bb9fe154c0612f15af86", "T3T1_fr_test_lock.py::test_hold_to_lock": "a0f3fd6fffee4fc83a46bc2670b70a63f9bbb2566eb6599192f1d0fdfdc8d339", -"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "915edc252c0f9ff7f1a240f17634ca9c6695834c84f5a962a45d0198051f972b", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "83cb94413d8a4a54b78aac9ebc874c6138782d21c44d9a6eea2510985fe7d5f3", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b6adb7a960e361df4bb52e497d5c946fceee072be5cfeb532e68a4f5d901e147", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "d5f85588a41b63eddabbca3d3c0aa5c1b7b9af3cc688d1b5c8968c039ad1da6a", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "549b65bbb546e2a20464e064df84cf278f49b4975f076534b6183f502c4bad2a", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "0b8d7347146c1740b890f0712affa45ed9ec55fc8b67b90be0867798ef43b598", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "58a637a868600f2b4a0791e6846f7b0733f82dedc3fe2b3a48403c6185024012", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "fbd7dc7c9147b1535bb35281aaa26e1cd8e4a76c617e8d2acf49d9d07de4d4ec", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "76d4875fd0f0842cdd398ea6f826181ad37d3bd4097dd053c1431f5934b45d1f", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "f5b2fd0d4f45afca51e0cbfa119acfba7a55589c726437b723d452e46078ff68", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "76d4875fd0f0842cdd398ea6f826181ad37d3bd4097dd053c1431f5934b45d1f", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "cfa2b423c1e134a2c63f7e1294e50085fa5435a99e3f7e74cebad7d051c99286", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f75fd9506b7b1cf1e95d1ae9ee2da07c6f8fb3502fe036ce063eaa007f654f0b", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "e6f38fb6aefe76b451c1e4a1d6235c77994605322afc51927a4fc0ffea0d230f", +"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "52fed61dac211307a1a95f5a68b080ceb8b57b8315ca1d64390348e49b223a44", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "fb58513c13c7c4ce53c9c4c1907b294dac8943e13b65033fe05bce180c73ee55", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "144fe58629a7c1ecd971f129b7fd8fbe8bbd9c928947266e4e0514b4ec94c5b5", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "d4de68c34673a0617b6246a3ac976f93201c4aab90222c48190af0a08bdd5057", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "d88dcee8118a475c55bb741bc8180dbc4f70bcc4a4183dbef190b70445a49caf", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "12d4d41dd28b7a2b1ba5b016a1635d0ee60f443d6492aa02d1aa01eb34951bb0", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "0f927d24c47591eb480c0a3127e622d44f0b6f0121351ab64ad1b0e6dc8c7d0c", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "2975a4d53a8db80a76cde2162c32b8e8cd3c67dffe696a6f83bbc1e6cb29f4bb", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "10a26a73af9203dd693301678a8497f504fe2497d3976d82fc60177aff16d93f", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "b579a7396e4385f8ed6d76b585625c0352e922b4468eea08dcb932c0ae1d8db2", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "10a26a73af9203dd693301678a8497f504fe2497d3976d82fc60177aff16d93f", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "40098e485e21b84038597ed6b67c6642f18be0b46971bb477ca0ee32533b6f34", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "3ba7527fd4b517d30583577a91aa4d41767ff00ac80876d38a69fb93cbddd4db", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "b9f62d8fdfa4cf42486afcb90672e9ee1e1af0b9d2cff08b010297d652ad459d", "T3T1_fr_test_pin.py::test_pin_cancel": "b01d0664f24f3c823028d9c93ce00501bc687e1334a23f3e5b3d2a6edcb9d780", "T3T1_fr_test_pin.py::test_pin_change": "116679d27010214fa6943a7e44d19a4852bc2b4e5cf2bc0e57ac654c15c8c68c", "T3T1_fr_test_pin.py::test_pin_delete_hold": "7497f302db432bf6274703f76ae230efa559bf80c67e831b9ac26132c6e62a0d", @@ -15887,7 +15887,7 @@ "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "22a5cfca4a9170e1b750accb6d78cf5b45ec28cdb0795f7f6ae09c91d4585cf2", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "b32aff8c618fc87a376a90745aef7af1695de98f27b8695dbffeb4752b2db7d2", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "dd317eb429efc859ec1c7a0075a557ad739dbe87039df57b98e477ef51760b4e", "T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", @@ -15997,7 +15997,7 @@ "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "c456e72f294723a9d31d7d3cd20f6ae5940beceabd171631d7a7654a8ffb65b1", "T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "2cb54d6f8646ebe38969bed3b5a006df5b7f8ab5c5d6bb6deabcf53f4c671bc8", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "df11e98d4873441d1491b33e042aa4f9ea6dfdc7484271b0219f435b60ce03e1", "T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", "T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "1b9d56e048761ddd0374121a3d77808a0a220ce62a1fbe3b923ae0438610d1b1", "T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", @@ -16185,7 +16185,7 @@ "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "07f78bcccfbac579642a8050b29725f0d12cb4aaef21cbd6dc1e92e0b2338f1c", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "a04885174003384af97e2168f729068c1304ebb36e73b656820fefdc34754502", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "59fcc5012e22b78c850ab6fde5835f6edb52fb6ef9c83e2b49ff5f3d16145d10", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "be9fe9fc5420c96fbf68fc239753fe51e05c8f71b229378549e9321e7d8ebcb4", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "59efab49cde588e4d1eb13c52149ecf9c03ac59991e9bcca65a098f087708cb1", @@ -16209,339 +16209,339 @@ "T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "b4407217521939394831d0b8eb145493766f293449cb023309e499eb5893eb16", "T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "56bf1f644106078b3a91c1713243bbd0efd1402efc1b1733faa25a7a2eac27ad", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "abf8ebc73f277fb3836faadd746c975494cfe0520068001250578817b925029b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "11e00b2a650696800095fc44322eb70a3334a31367a9d3ac1605c5e903d7d877", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "af57638321b7ca49a095df60247bd7ca97471bbb06e045b72f0ce83638406259", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "225fae6db2262654136ea281ca99ad2c44f4c95ce6301d1bcc06f82bf489e328", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "73ef439bf63562e1e8bdd8d03058c36347f1fb06596c11607c6fa22fcca44cf6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "699128225d720e9cb1ce8de309c21da97f4a2f3fee7f2b0704bfb93032725af9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "e02a46ad1ee148d8e3f1730f5ea4d9055da6c2e205304c5ecbd8c24808c28fa7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "36462aec93793066e887f81666d8cdf12059865bf4c0ab0766ff2100cc7b924c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "0224caa6a29f4e8cb8030a369f4656697ecb8acb28043cc8c2ee0c507d6b07a6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "0bc063dc9ca34e0e973418b8060bdb3328461dc2a25487ac09130fe0616ad41b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "56096f8933917760db5ce77237006f3aa43434eccef45ef2f344fc144444216a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "dce37147a97ef66ce9d758ccdc2d6797502f4ac8bde4d5d2693167c7b09ca3c9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7da67f3f064d59e6666b1229e23261e1a472332fad77836ceea401362740ca7f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c09133eea1b79a3bd49ce7ab1c4223838ec329318613d010afaf646a1f690e43", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "8a5950adf6dbbd0fbe8b311fcc976a9e80a0a220ad598d012db4ea25727fcff3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "348cbea958c6eed521f666b312fe0a07188520d18e02997e5adabcfd8d049529", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "72b378590ad24de449fbabdbbb230e29370cefe323a6d64a4116678ada6d1d9c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "8458d768f893351249cf7a4590e5f07bdc75bcdeecf65b0a8044c2732e0829e2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9f35824c12cb697280e7daf59984114ed24600c467eff50cec91b8a8bdd75f31", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7feac87f6b6989bfc8db23a3870d3ab9821f9ab48fabc2fcd68d711b91a6b908", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "7e80869b7a6d2eab571fd3ad3035c7a9991bc804d779ac86aa4ef8f77b264388", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "92e3497f49186ae4917a5e907dd6b2c677f86fab1547b8b622beae2b03efc7f5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "2c894ce9b0311ec0c922a47f5523a6d1740c6de61dc2d85576fd0f9f16c4378c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "b5e259ad962b99e1445e46e7938e726902f563bf92d3db6cabb7aa267010d31a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "38140f0109cd7016bdb9869f0b70e99e121b045bc6cbd20a544ca82029e67df6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "c4348cdf2ef9dbdb7308fad3bbbd6b4bc66409edbb4593ecbc3a0e2f2d04d8d5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "3800ecd5f4100dd1579b004d628d1be84a2fea60020e261f002fc9b33a21c913", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "95c328e44f2443352530fc9a60ba05fa5d82af1d6988e5eaf33df545a4aa0cc4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "b6fc4fc18f6c214cf76ca4793521bd410030a38203625a184661732411fa266e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "f922ae40197b3e1061a707d1536d8d83525c4c332e4c4f24be9587f7147684c2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "18c61c1c544162048ee709e68043bfa9554fe1f00b1e888c522015aecab888a3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "37dca2651d192cb870b23ac1b7b42a4034ae2c41c26ef22578f4b462da418a0d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "ea9851d142bb8997c73516bf020badf884ab1f05ed96090878cdef4eee376b21", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "bd72ffd2c1a7611053a50a77a504884a6391e1e8b78ba13281642b4de99b6695", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "9271c352c0aae31ffda48fb093e5384eadc330ff80c31df15a4209442093e338", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "1a0c1e77533cce1b1fb89f700f718a8521270270d6286dbc049658e0e13b023e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "51f3f863f802011f5d67278dc613bb9d0c343b80788a41dab50c82f6fec0dca3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "c0cea7966006633e46803f3dd31d66faa290317aa0fa4aff9353356c3c68ec6c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "064a128b0860b8b856799ec85ca61cb36126d717b059b8d3b0e3d03f59d9e590", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "b3574d77edfa61117a5ebbaf1e11623780a71dbc79ae16441280967a73f6674b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "046c33831b713d5f3963237e002fd710c5720d3eb54bdb07093c5da79a0436d8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "223a3850fcc8cdf9f7036cf602ee2a1391f2967e1875ae89da62ab981d144ecc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "753b29e1519a59a4229858ec2f712f098df5478cdebbf75e1f43e44882dc896c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "bf15359f270be3f9b0b641e6dce7b767413d9d6c20de88184141dbcf7d6398a6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "afc51303886406d6585636a45feb18b62e1beeb9db83567b4ccc6e4b41a04291", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "59fbd8ba79bc64dac4b749c39c725b678768f78774da8ce9586c0d0d0f965cc5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "a5de118de3070cdef51d9f23d3800eb089686f1061b028ff80a0495a32264f42", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "cec9df9efe6e7706a89c84eca88c99f1cb063003a24ebcaf41ba74cf0f1bdb40", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "b03dac9c21042d3200def02a1447abe380343e915551c109171a6b7152a0f60a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "ab90fdd968daacb0ecbe4951a630397bc7bb95318375d5dd689c15e0820fcc16", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b7d3f73753d0162441ef1975d113046b91d02868d440fb668d4eaf7a8c12d482", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "049ac6ac980139ad0e82cbf2e3c79db038146f3a5a89b89cde12717a530a222b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8977443fdffa8854ae4f154c60ad5d983ee6ef88eb21bce8c4d97ae52d362f9b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "214b6a3760904eff57bdefbf87552b4e0da8c1aea0851b1554e4bb7d7255cfa6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "12f8cc7ebce36778f6e18b0f5352da81106577c9733d8aa7bde2b26bb36317a1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "d74559ce6d439e394ad77c5c9222d265a8d47262c94d209a94d0f089740f0d10", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "fd6037b8b85aec557340d3e8aa25f260394eec77c0f718880d1430716dc287bb", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "a6293424caf10806a2cde685159ef934e050b876fbe27f2e70ba3ad1a4649471", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "54008e136d41fbd715f315eef206e94e157f108bf2e0ea335d5c6bd744192424", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "87f9d4f1953be4ac60b1a4c9f21a64a2ac2188b09fc03fc4725cbc218b9279c7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c112d04a5cfb494190d2e0214848ddb8977c55b2214b21c25dfac7a5629029b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "0d242e5175dbf591f68eca6e228d2469397910b049407da4d9aabfa6ad8330d5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "39f9bce0ece5b82f94bc1817c2f9db13cd64096fb12a969516dca4af37a1ceba", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "725a58fb356abaa380e9bec016008ba75b8ef536b1c5a0a91df63ebd6f3233b6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "aab7ad642a0b1d9d63fc2476e21a849475064d20c9b30f8e0e841dd5cb50b844", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "434ee1e5e7a8584f1bd6ed807359ab072f425e328071ce2423be84a5e2f4ecfa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "1f21977ea4ffa6f5e9f9bb57a34c5b71894fd59a1da1d310446a86866d2311df", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "26bd3b9c8a3efd3daf6f3fc6d9b3349614438c26f9f5aeff87c933a13b7afee5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "02e5f93f03dec391bc3470c265225814cacdae5659cae3e20df4c9a4b3a1fb4d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e999ea6217d3f0d7b68ce782624052dfb8520d1497fbc3bf09ee22762c1f4304", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "9840bae293e78c4a7e39e001abde75385a1e0c0c0ac51f859a1dd7504de73fff", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "11387b6f452238a40815cca980aae0a4dfc534509bca09eaede90d7ae0b28f00", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0776ede0d7ee5ac0b9a9aa420c19f7e2178d4db4cf18b0c9bdb0f79245d8626f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "7813779db8c70dd803dde3f5cb6c2eb3ffd678ff73ba3576f872a42692101b4d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "38b7dabad4ed4356c84df678ac271e60802541e983dbfb35d78c16dc72ffb0b0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4069bb59f8c7497c84bbd8f6a55ac664112ff0af3aa4f579da24f883da6a42b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4bd16ebbb9973224edc06feddf8227c5faecd76332823c592cdd5ae0a409a0e9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "befc695b4481ce24b89cb1cd7bf0fc3fd284e2bf665687bfe5cc642accd20c02", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "edf375ff3ac0837dcf939818446580e6715628f4a4c85ffd34ba9d04c7a5dc7b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "b41421ff90b0687d6551e7ada1e43c64604c3d342232aa14e954a1704039d66b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "f40b02d95b31f7d204b05deb9935a1f2304bfef43a5abb93e8b1b6fe0438a00f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a4e790e6c8d39557e2e566aac2abd885bbddb30fa8ab796e4f204e38788a0400", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1640ce62ac02c773ce0257f642ff23eec2ed6d341946bd2fabe3db09ec8578d9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "076106f101fd128bdd7fbeb7dc365b599a8e0f5c124334c5e5960416bd486238", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "f4ff6d3f8d68322a7f874285fae218edf2850127aa0fd13971bd781b2bf194b5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "db0a84bd791d2f8a608d10c3432c3afbbded5472173a1a0f115ea3fcac4f3425", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "75221ae28ff5abe59ef877eee66dea029619f312983a8e3ad7dc7ff1b92c12f7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "39965f4e1b1df3e23062862f4f7fe6c498fea97539a8a5d9b8c9484afeac40ae", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4abf2f7953f0ead0dad5a33ad5a79e6834174b6668a727256dc19f9136925fa8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "35543a2b8897316161783845dbbac8eb7dcde7d8190379f76aa05a7444942f21", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1a3eb766dc9c56e842a51adc91201db8950a35f96e92ca19018012b51c1f17f9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "8d795546100b0e000aa49573555881fd2a5cd17960519e97f6dd618e07226276", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9d7e4ed94598bd06f679efb55b2679daf98d521c6b5d466fde9642626d261afd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5a56b6ffe6495cfe8134d55ad7992e93525203cca3e17c708b689417904dd736", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "aa819ee434a392a610d3432becf77e9b9f30a603deb3741f84d88eff9c5916a7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "8135a75d809da6fb26f157c831823d9bbfc78fb8181c43f768990008da5b91c5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "dad4de6e6170d0bdf16f4545df0479608ba4975d771300d35a9ed8847124a84b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "17beaa2e049d293f29c6806042104ba81215d5ccf8cf3369ac67c00f7ed61d59", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e6a12b5967bd6b761f0102df7a1c709058a271857a84308995f78bf14ab02890", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a740c66cc1a7eb208fcf745e454d16cd60cdfe1627418d5f9a7ce75870c79067", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "c7f55d1a619520c1b42ccb1822ca28da4ee3b6bac93ca7259d2f367058007b93", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "e69310dee3ee4fa78b9abfcf7fcd512e97b39e4f889112bee7875b6ebccdf82b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "65dbe76c433df570388b503b778c0f5b1c01f11017ac9b20c59f37bb8af8c7af", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "93391c36fc8e0b6269538591e9732f5ad8b11762c438ef96d66fdbd834394d59", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "29c4536bc9e3dfa161e9d19d9b39fd0cb98f119c61b5ca4305ddd1f848a438dd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c9641273031d85e6a1880506f1c448dc30fe05daa4091df187e19d8b0ff857c7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "e5d9201f0ffa6b69b512ad2e92e44a68a2828d85bd59be4a5f116293478b7cde", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "57e328fc118351a0aa0fc62b3e039058e1a8f22bdcd4f428a5b141317bc60437", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "98f64e12851c597ab7d9c30063daf0be585c26e33400f9a975c61b41b22fa5de", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "684a755d49081fca21d3627aa3faa690bb5a5e6a30cd85f5ea29ce6ebf0bd88f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "b1e08d28bbd3a443a7deb8e9a303f381f7b431b5d8a93dccad1b959e08190309", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "34567f4875057d0364b443f61028cc9c121a3a920fba667feaff2260b77114f5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "f37e49eccbbca764d71b0cca8f6142818dedd579c9ffa1d8e5b7c7799d20f3d3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a2aebc520d34ccda831f1d4c298578aeb1af8b2719f21aa167b821c0a9a64ce4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "f50c31819b7c5b6cbdb9b236f8fc961c27fcdc4f0f224150ace66d86151c0b90", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "452f81c77ab3b9d1b74a7c29dbee73a74d0b64f1b685f18beab16a35b8ec6d50", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "8db52379f2e795527c4f6ece0c23f6b1393ca835a14724961d4296b3471f7fa1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "ab6251019db212a5ee1bdea41f3acf2141bc509c0ec445466a1c609f17a1a99c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8f7a078389fdef84f48cab3a5d158a042f936733fd3b3b44259e4037a96018cf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "cd6ab7549f1a1f7e8a2bfbead143d303f4e128740e2223f0f9ff3429b57e485d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "3910b49c55719e77f15a8cf5deccc7beca64078991cda95ac6634f3901217e13", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "b4f9a0c7c2d1ed1fc5e87128fe4a674f065445320066144959d5fd83cf5ad352", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "bd9f5d9cf97507fe719efde134372f6f3f4cdd4593cb8a5cbd822eb696157aa0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "26f1c25fb67ab9fa538efc8cc8d9a108550342ab0b43c634dffc5008fba584ca", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "dfd110c013c56da2ef2e58c06344cbe5b5d5307a0342a15812916eb44733f24b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b075cae15f3c681cca681d88a5c4e586df0faabb352c115ee93735091d7711be", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "9b75ea5ec46782b4c2177a9bd4d62e46a2b731ad0bbe0fe568077d49becdecc7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "19c4f1743cff5a792a94db9c81c0dac95d87b37be7254b3724b2fd3d1826bbc2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "adbb886c07c1aafa4af10b37fd094f671e6fe6b3f4ea88f3cac3dd48872cc8d8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "7560783985b3df3b2739a51243083dcc2883c79d6867683bb0d5b383256f94a4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "bd5a02a0d5f8c298c5a69b8907bf67c98aa0726f0089b5a9d170a207fc09f752", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "b947c777647fa1c470243e4d88c9f442712b494e8a980ed8b02d706e2095a1eb", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "50d1ade7fe212110b1d1d377a20ee0d158d5fe7c10378f3e1ff59fd4f3275cd7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "0e39c6d74627d2d9ac51ff706745441bfaebcaabd1676d3eaa61af471c5e6979", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "ca74c856d57573331ac7a218a126f97006fc8faa84cc9ea4f8f853129b0272d9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d5cd275e99d98627a5847558179cc820f5a7163f8292b9f74c48ebe161b7ed19", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "f246f8d4fc39958fbfd2f550c3959d71dc52ddc63e5f3fb121767e7e433d94aa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a0fff711af5ca43dd8ffb826d3794c16bdb20ef57a9cf5ce6256dffb75d59a21", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "96002d99e2d5d3f1770f8731db70f9f9dd028f97150b17c45939061f35abd570", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "64db76f2c81e7f5b6b153f1a4cd39a8700f692934bae54df20347727d3f07a52", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "d04cde99784f99baeaffca166e25acff12efe47ef4a54c529e3a9d72a94c5662", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "54764e910b5609c3a46593351adb594237f331b9a8367be011123f24affa39e4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "ca0a07ff7f8ff374c4db9ec63fe1b6c33b9526a24014944e5a51e0d1c1dfbcf5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "66fc3bea92665a0a2a51c9bb6799118821ad7e5fe8e8978de352ed80b427e7b7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "df2a2c2d5609129a88ae5450f4c741a1caeb2f42b5f3188bed2d6bc855a88f4d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "5eccd47e91c7bd007be04a1386d662b7e21a3caed05a7c3f9bd2828854f63876", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "fce4973650e6a639ba794635dc1e6a428630ea9ea3d823e42cd0d0866141004b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "0b619cb8e29fa384add0994a6958213496b55d6b11712102a414614085b43a08", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "b2366cbbe1452d60a2b07ff88499a45e8bb099210161764bdd97c39f5beaf338", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "4320a0c6afdc8bd5de8a8f1e66f5265077689a37d44be13af30112fea17b5f13", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "51ba5869b4bffdd340b98fec877c10e6cdfd39b31165f45ceb671de78676ae4d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "e661edb87f8b8bd2c5fd0fe1d9f7e3fe0eefbd09eb5d5fe3d04deeda66dfe0ff", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3b2f1f3071d32f9e86f310f9c6b66d68d9930086ea6c909452a3a0b11d3ca1bf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "83df391d431f292e6b697d95e150e8b827249afeb9f32d75931110d8f5fb52b2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "0e793118e32ca10344603791e1972ee29f85401f90a1bb43aed25fa4182a23d0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "983a2ff8e56379c301891908fbda96989f6c5d5f6f7c9486e008a2e007c248a8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "305f9b9e4bdf1d8f30c890eda9322fca9fbe7fdbf757e0515f4e3204cc2b342b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "3d9086f8238d0bf851761739bfecd51343b337f7da6304ebaca8becb9790a59b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "975e4ff7e802afc29565a6b04d1a96dbe50d9d786493b528aa671bb208f8ed70", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "3cbf1bd8723c8934e904cd105be3ff689d00679ef93247bceafe235e1daddb2b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "03a4659c97b33f46c10a94e97766ac5b88fb071f6f0c6a9b07f0a378f9034594", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ddf13e8f109e56be3319324af1ed6c02ecf318105071baa5f225f377b0bbb331", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "169bcb285c161c271f39cfd5b6cfe7f3983c98a8328253da9de1c428cc06b9ce", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "a6849f206e805ea9f52f224b0514205d0617baf233f20f77d42c6c2fbed153b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f0a7714e26d72a3d29dbecaaef069dc96f56195cd31af52fc3bd45bd9d02c289", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "c39f05a79dc2374ae9e74a7ce985d4d94903347a49fd5792aac5a546094137b5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "768f0e83e55fc16bf296cb8dd02a609bcfa691dcbf58edf3d14f5137c80f917d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "9a24d406b5fd1bc83e5c067ed1fdf155fa63af21fa5dffae2d5952325abec064", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f62778e5ab38a86add6e875b9e42c09f2e6a12e7eee9b74eb4f90d769b7e6b56", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e66717e0a563d535d7d2ab9c6d2826f2492eb8014fb0827ff35b42f4b7d9e814", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6948f4c7cb05ca6939c25bc1557074e6354b282ff1b694ae6cc47b5dece1e6fa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "c896cb9c54857e0ed98d640529630728bbbe4daca69c842a12c66c93b2a225bf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "827c2ae3e687b5b39c0be02efd647393dcf8ee129b082271d8d539ed447c0a77", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "d5daf7cee7e922d8c83770dffef122a23add33db342a29be107261c1f55eecfc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b353f6880e63c57cc416ee21224526c75874ee82557e8ecbd1af58dc7c301b30", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "8ffe2ca05c7df2273e6c05c51070cd10e06c9569541079b731675d0851d6a298", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "cbd72435181e299345015e471c8e9f283264d6b9fae011afcc09daf521e199b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "2ac4e6e83b37569cdbb963efa2d0fa160737c26d897bf09aee1dc446558e78ac", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "f0133ebface46144280dacf2bdbc5c6ad1f87dd0b6a418dc167934deaefc03c1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "c1a876e88b7938782dc4b1b4413d313eddafb9e80d8a03d08f3194c0edb17db4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "fe19d99191d4a4111f573b1764ad77840d3428e289e4721b160c6a221a4d6887", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "01b23637fa462a4bfe8a26f45d50599162cc256a1a713c8e4f420bd75cf492b4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1cdcc221245e51df1443679b34b0167aa68b98c2520634c3a808a9d19b1a1a6f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "90bea598f54a0a575aa1e061c2372c278903e08563f2476d665360ba207f8e17", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "e52d35cb7b575e0fd4fc893d63304ea46963db5bcf0412fedc3030c4e8086a45", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "f40eddf56ac2be006952714b841bd3474306eb6274f8c1905a7d5568795e0ec6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "4ba6745864d95f31f4e36e895e66bfedcacf7a896beee471462e8448586c472a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "78f2e7346d1f96f5d9fda45568f881ed361f499f651b71c9a45c63a0d2c44fd1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "ab2a5a7d410a0ef3fa96939f6cbbce5e8bf9956743f24ff8a2ea12eabdba5b0d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "2ddd3aef676d3f817a641a09a7a32ddbf3b67af7b8b0f896373d8571c7216b62", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d7b542b3796591c10fe3afb5a4b6c6a557b0155e93ca0eb6f18efc746f7049b6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "26a918e33c8a88844c00210bb3566d22937866d31f87fad371cc95d16be08dc4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "ccc5ef1bfeca2c8474b0ee9fcb41e231552b10147bf9fd2ceb211b4aef3289dc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "1722a01aaf06f528456b0d26cb7148f8ca85e8973e17dbe9670c03b089f545a1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "c21f7e52606fcc8d1fac96bece699abb095932770d7e68e189ec417560c0ce5d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0d2cd6fd006fdf08771598ab620cb672ec953de5ffd132f12e928a7388dbcebc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "84e00bbbd356a4b634e8925cf41aad08f4a914ab7d74d5607f41956f70e1a4ba", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "65214b6d98bb8c1a5d25bb8650234e3057cea3f703e99b63a90dcd1e1319a4c2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "689a7b973593695ff38106501bc8df6f328553545fc305410419536d0b181696", "T3T1_cs_cardano-test_derivations.py::test_bad_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "38cd5a49220fdf4fe9f4bec99243634b6a826fed488e174ce6c345f03656e9e3", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e516f88f211e7bf211cd3ecd46de87a0a8a41b6bf969e816a048775c60ac052f", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "23dfae004505fabe72185db81304a53684c8e966ba73bfc17c27228dc0e74cde", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "d3ac474d2605b895dee63190084406d1d90fe121c355ed7fa5bd79ef20f72869", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "896ce29b92ab7ab33d3b1c11e71b3efdb2ebf4ebec317148d205095b950918e3", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "8e393fa3754995fb225eaab2c5f6a5ad4db0245261adcd78271573723a11f81b", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "6aa2e837a5371ce0049b71bd1321253a60b4740c4495b6b644b0a2484cd9ae86", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "6795b2bc95a0f20f5c5feb1b89d67f685f568395de3b5985c4c6009c303a01ea", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "11ae843d0273abe22af5b141cabd8ef71ea558168f78343cc8bf3c295ea72662", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "a5d4d14d92113e2863c08297674c3e2f1ab9a48c52451d6ef3e9352bebe894b8", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "9834a7b76482cd9dbc34baa13a676f39dad977d3fc590e197a8cb06b80a3accb", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "3f5cb82af3cc169eb82d99c60b78ce3a5bc1340b56130c526282f1b1815e38fd", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "829154d1bea9c356dd017d72b58cfd0b28e9f1cac767aaee65f22741aa476705", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "52fca0398cec84e5c6a5b32619480374d731397cc76131fe4122f5e94aa97f36", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "2797a4077f06a0be5d566a2f5f2fa689e0115800c35c88618523f6db1cf285d7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9bf6b48417a223529626d35bdbf9e07b99c630191b02421c98dc6f59651cb488", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b41497bea18f61a88d92b52c917e52a2f0cdf72d814d1dd7362293c43a378db2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ba09e9131092e8f983aa8bde4ac5a2ada325793c7ad5418293d016a1158bec92", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e7ea3bae35a3365f268e41dadaac3e688226ee328bd54faa4eb13bfd69da9271", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "fa114f3f1275dcd44681739eb27b55d2acdf046735213cffef92df7f48b00274", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d3c0eea8799e8b1b165a87963c5b5616a8e1110bf44787db793de0c460c9805d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "2f31d1ba7c011209df1b78fb5062ac767f919ed6fca749e5329e4efccb458923", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "aeba9072231715d851c04de716d2f77d10426c8c6e12dd4d58a478c27e1580f5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "e81336105ad5c1ff1d367fb4557d3591557e876aafaeee5d21bde35c353dd9c8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "eb8d77f601c3f5d26ddda79709ae35aabd7325330062511bb725a8343ec8366e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "eb8d77f601c3f5d26ddda79709ae35aabd7325330062511bb725a8343ec8366e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "90b4e3659dc30517bbe9d5e2b8ab07df980a9176bf77e825a17795a790a6ed82", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "90094864486a16351a8aa9ff574c2a98fdb3cbcb18ee7f01f4e4b28fa871c024", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "441dca8da1558d58fe72b419558b97d186ed6cb9f948e0430a884712098a6fa3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "3594d29fe048cbbcfb39112d29237107c429e008136ffc10072c3076834c6d9d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "c904d88a181775c76360af1d4091fa68d9b1324d888669fc3dfafa0202f0e526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "853b9442c970017775115f38f5ad1b4ab8b1b68549e4ba1e0be272aa235e05b9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "58a7ad440706812fa4d86094238827db624904090ffd75613d37e8c9a0278998", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "8b6412a0902ad079562aa3d2b1f1ba54ebb1af1260487c06f9b0f512f4a146db", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "98b599f4e6f7178a4f954c2cdba5c5c6ada4c4bbbec2bf4c8548872420aacd64", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "c904d88a181775c76360af1d4091fa68d9b1324d888669fc3dfafa0202f0e526", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "853b9442c970017775115f38f5ad1b4ab8b1b68549e4ba1e0be272aa235e05b9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "dfa22ea5ba4c763d5df73f16dc156be871a92c86ee817eebdfaa78eec293f0dc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "363d8411f5a7af47296896117209952f2510a32bdbccb1c002aeb1bc98a9f24c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "c87c2a1bdf12e377d4a71dfad1d9aaca8770b3c3bd3624bc932084f5285e03d6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3a391aa1920cfbcd7e77e77d6ba033eec9d509ce5106616f5c89947f566bac5b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "90d2d1799bd2241efce6ed225805152b5dc430c8ab0757344203b6cdbb6cdaf1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4e0a20d70f4c29c81c99b857145a82ee48d863f2113497075544048b112eb67c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9c2e3f8b43873a137bcb19d2b2a629bab523f691a291458f665d1f1c05beb8c3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "4818b9eda12a81ae5c4c261d59a51732f5455fe0c795f8000e641c37ee0453bd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "7129feb02c760dde1a2722bf6a8b50150b8c0b1b369e12da9841e81f35bbc30e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "daa9eaa42eadcad9c3fa0e7049c5a3d7f6bb0022193fbd54e3de14bb3e3c0967", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "02e196fbd519031d1d0e24a29d07c686c5f505d40723f8d62b14a01960c2f900", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8f13f0f3e5c5865cf6285673d7bf846e83b7d9689c3176e633dc3b049c3d7efc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "453f451ada86646dcfac8b8f9a9bbf18f7126c031b3439fd398faffdb71d412a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4f5c5acd5966ae082219c92e0d7257d9074a37702b23d6d6ccbbc946392f723a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "cab5f768ba89de227a232dec90b84bcddac9356f67d2c85b047d6b8eb6b27fac", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "b725fcb567e243237c0a2c85601efed95b077101296f1f2a78fa428aae94c997", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "d8914000abd4088e151346208380bf935944dd331429a98a8a014c5003d733a1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "aceb3af6c251104d9e3dc3b14b93cef168acae58c65a0d58e4e7e4cd0a87bf14", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "ba67429cfd2272dae8fa4aad17d8952ef57c8edbbca20a58bbe414a2695aef9d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "cf3a5237327f773c5ff14702602b3561cc7edc381f51740539606ea9d9e95941", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "4e87bf29d41aa3a02c048af879b3d11f2a59e7a02a521d3c3b7107bad21fdd87", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "6070a20fae382cefd4af2ef58dc702391c8ef13d9758cd82ce69a4bc78ea73f7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "d3b411d5af6b30fe684879d6543756ffb077e6bc27c494c953fa08651b86af5b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c25563352280e3a218430311ed946b3c7a9f050b03464fd8bc130a7819eb62ca", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "cdbc45dd7a3517562c931b23a463341433659a922a64556a67e42098177e117b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "9921c4235adcf15f6512f1b5567015a68116482c99cc5476ae4e3bdc2ee35eb3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "37a37a36c77f07efe7b5bbb1908912b61b6685fd2fa68eaaaa83bcebe6ad2a10", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "cc6547e8b4160778b5253b224f0136f54db7e3542321cd9c074142492ab2f6d0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "baa4340099cc2670ada2cb8804c0f6d9e86f1aa2abce75228789d832205aaba1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "720a410b9e61d69fc27292bbeab233e62b11264f39a38fa90f1b50020e985604", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "061597d5526bfd303f716c3457e29d19aa1e16512d877e51f6409e36d7acf8f9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "bfd3dfdbac2b5481fcb6432e02847f1cafcdd1ee9f3c555f2da8b8b5a7daaa1e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "72e0b56c80d945d3fd57d3a63af0b5db78eeaf65933b67bbbd9b0189360c5b5a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "88d18e06c49e67e5fb6f20ebf6914f66d7400e4dd53edeb637503612c06542f5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c50a41f6118386d9e5aa0b54040bc7c882e464b17a235e72d661555ea0407a3c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "98d4acd33a0d40a6ad6b4967f29445139642a694299b6b2edf7bb340baed2e0b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "3111efbdf512a7c85a1e985f7ae22225f18f2112247de6ef13dcdc37968e9489", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "0f34497b13de52c817de154b072df2cfc0fa80f558d242e9f50d487cade586b3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "48fbcbba83d05547bd220b988e0fc3d54ff8f9b529b1a887b2d625faf4f8f1d9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "e1144ebe570d676d39ab9cbf208dfaddb2a046d30c7164656c1ffa610a05b61b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "25275657e7fb5d95d04efaf8dbdff68f3fb3717b74e995378218fc99d69a7776", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "8747ccf3e4b5b5635701ea268327f513a2c4fd2caaa1111aaa96c4bd8dc482b2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "107c5436bcca2709e2c56ba637e761bba2f18e70a9edf9535c6d100e0f1b331e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4ea93e68a662f71fdaf40e5e55f77ea497c298c6e6378eaf123a977b90edb6c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "021484d5505335a7c2acb6ac806c7994a77fb5705d7613bec70957b95fb891da", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "56186f77a7ec32fc67a7ecb606cdf0d6969b448d6b73785a9b9dd8f4ceb64d47", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "a3080f4c8b0b907ccf89edecc1b4d4811740d72beb88c0ed95b5b8742aafa226", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "c136f373efb68c9af2aa77e5fad196797c557ed5c216168550a03f1b7e2f13fb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "b95d1145b2ad60dccde1a84b4f79ebd35cdabcd71feab384b6afe74119f8195f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "9c4619da200aa626ef1e6bd36ed32da61f8f02474d33c0c2e810ed064736b45c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "a6b2a35fdd2bd3d81e3997c3f073c142d47ab336fa5a251849e777b651879f0d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "2728d2a8747232004fc0ff437479a2ad16bd5505dc1692bc214e2d56ed2f2dfa", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "2728d2a8747232004fc0ff437479a2ad16bd5505dc1692bc214e2d56ed2f2dfa", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "369f035e2c23afe09027f4fe579843518b46640178ed2685d20ff618c1168beb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "e09a04d59ea77fe53a8dc653778fb17290526872d63656cf54eebc9d15012722", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "e09a04d59ea77fe53a8dc653778fb17290526872d63656cf54eebc9d15012722", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "c4857031b46940ca979e4b942aeaefbda0030fd7677140d04df14fba43678b6d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "09251d03fe804ef1fa0fd0207cdee09010c749f2aabeda71561c21be4d170a36", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "f99671df435a35b419dc525d004cc33bfb77e839c633ffec133b6fe7c9770931", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "10f28f2d1aeb2bb2281e3fe9ae3d63273045ba0d742fa2e9fbf1dd352bbb902c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "1f4c67c57e902062997f783e722052ce048ebab6fd64d9708565cb38c22d7b29", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d547890c96793b2780e85ef8575d8f84d9a572de239c2186fbf0dc170e6c6476", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "1eb20792aeff6b179015a2f8dfc0a103fde920018a9c5d815cc4b5cb4b5e58e6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "885562bd9fa12f9fbe38b4d0da532d18786af480181d7eefc3c2f56abbae5c18", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6825434b058014c59ce4edef9495af87380b292a674cdf0417e21101ebdc830c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "40c63f6895c31e4e0f3621490904ccd57d7553867d6d35cc93b396954448702f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "52fca0398cec84e5c6a5b32619480374d731397cc76131fe4122f5e94aa97f36", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "fa114f3f1275dcd44681739eb27b55d2acdf046735213cffef92df7f48b00274", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "01297001052c1d399ce7ff401b7ca0b47470637573021b954a22141eea5866bc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "72998bd8887713a456dd4ee2d3f3d1f1fbcfcd44f8d1c5626693ef5dad12a1df", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "72998bd8887713a456dd4ee2d3f3d1f1fbcfcd44f8d1c5626693ef5dad12a1df", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f00f1a1b6db32419ade71fe24873a8ebc714593ba969ec6c59d3afe1ca4a249f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "f7cdb0d2edb5287b80942b730695ce6dece1d60ef8061316879cbc9f6d0e536e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "7836647644708fababcf562cc0b9eff67838b2b8bc4af417c40ddf012408613e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "00fb9d115c010e30bce69784b245e5e771a5ce424d91b87d85d9d14880d7b5e8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8f9671f4b596ddfb83204842d53c5aba9bd4ba2646fa6870afa165213ae452f0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "f76717b5ebde132101d67451cdc9e7f03a62429269c05b63c92f9f4fa7545664", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "cbfd50a015cf91bfa8c5743c815c66c1478e56b8f713c48c527b1e5a861b2a4b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "615fb3a5c8b9225ccd49b5f628340c6d203d5124ce3b076437b38daafae23743", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "615fb3a5c8b9225ccd49b5f628340c6d203d5124ce3b076437b38daafae23743", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "615fb3a5c8b9225ccd49b5f628340c6d203d5124ce3b076437b38daafae23743", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "615fb3a5c8b9225ccd49b5f628340c6d203d5124ce3b076437b38daafae23743", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8f9671f4b596ddfb83204842d53c5aba9bd4ba2646fa6870afa165213ae452f0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d02d038ac9674b1c8add8199c4b17edb0f7cee6d12a9580800fade76f3839bc5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a1bfd13f49f91b695cfb80b0d64c6c39a3df6a9fc89ac3304fd3de055c9a6e8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "f8764adad977670cbf3d571c20d782f631216e6b3ee78b62b4215d270dd68c28", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "25015ae53af30bd3c3b1618f6ae6cddbeafe1d4ef29a206926d4ac1d1b8f85e2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8d822c8cce4bc90c51c3908d3004e5460d5e2b006069b9f1d358474adcce925f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "97f3ba02ae06c2b6babc45763f2895ba4a0270a14eb99df3ddb26ae412a293f3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "41cbce417aa8e07ee44c0548628b4f2df60766aacf6a66045da11ac1e9dc0ea5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a845eff198d02ca859225045819f46ff099be7e70d9133becafed35ae9827e7c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "6eec78bdc1338ef552c57e63e7bded005c4d4906c22428a6a3a41de099ddf35f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "b9d1201e309021b6eb0d4da8164a1f395f7198b8ee360e1c4e53272b6e3d74f0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "433a292d5e5b55213ff9482c31d720a41658bfe255ccb9491641a88f797e87cb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "72998bd8887713a456dd4ee2d3f3d1f1fbcfcd44f8d1c5626693ef5dad12a1df", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "f9c92e09bddda94635af38948f661a0d19f8b4c56cda1d4a1cd6f946dc82c162", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "0915d0e4959ce3c318fb60f2d15037d93f9de0ce36b0efcd5499b577770693cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "ecc7527f8f6364c00b42d1b225f2f3e045de08f4575c182c52d6b4dc52002a4c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "b75b6f3910054339fd6649c300471b32106b3fc1ee7cc411c392b5c9e1130159", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "ebe8a91dd03bae00eafb502d8ade8610f53114198ef75c509815c6acf54b4c3d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "11ae8ac8f28f8d42bccd11223a616457bed5295c3d25cee8504d53edd5b45272", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "399d5853d48dfd03c1cef26e463804b85d43bc80a2b04484dac8553ec0ac9d3e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "fc3859460e5c7d83ef1996bfed57508e2662ecc4309d2928b5a8dee8596deb8a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "49660fec7ede1797073755498379a62d2ddb139ce8ca1cabad14fa68a06b5322", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "a073c0f27afeb486667cd2e2f072f4e93a00df163f62c7d786c5042f6593d8cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "c5483fc082e649f4db823a53d0099f19eacb9c7213880f3560619f4b1e5e2435", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "4dfebace0952d6fa7cf9b87a19d614993aad6af40888e3ba00718c2c79a27c03", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "46ead273bee5093eaa88afe27004035128141b07960719043cd62d780b1114fb", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "a7751c9a008db9bfb3891e9dd1dd64a106f401d51ce82724e74af1a92331e161", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "83bdd92dbdc504faa706a2d23b1dd1205ed202db6d6c149bd23ae1ccaf2191e6", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "8ab377d1ffb0a460b504c858b92c42f6c6a84d80b986cd26e0cc06a983edc852", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7d72371cb772164aa6d894808323fcd6f387041425c81bebfb3d1f2d1cdee07a", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "932968e1f04e14091052484a73d7f6e66a97e43918a6498676e380833ff35941", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "a083c51cfbe8e67ce239305f135fe3cd0b160ff8e4d70079c03451b0c23a3728", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "7de0033cf281e7e11cf09ce7591f69ee368a0a81eac0acd33618034459940ab6", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "b2a67af9bc0d231e3fc35ae52fcf6dcb050d08666b7b3b215804886e5b7c52fb", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "cc4a6273878364e8ce49b98b6af5b9e43cce085f0dbba679ae2803a49d193ef0", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "3515fa1aa7ee66c35f74f12da721b745e13d8b59d353a43405f5ca2f6010f877", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "864a24ac42a652c97fb8d39b1035a9fa7e8a05d7188bc43cf59be673c9becf15", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "8e4ce6f48d14d79bf1f32f50f0b9dc6450af1f40fd8609de584201d55d479339", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "22079ae88333c6369b2d2284b3b01b19335a327211a62c68c4513b156a1592c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "f6155b0afcf92649621c9bbe2491dcc82b608f7b8abb7453f18337dc359bf246", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "7b4b53ad44cbe4bbe837b05e3fae647289b77a5b3efb21f552e3c568f93010d1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f5b02c3964889c1c3a8ba4bc1c48f70c25b65eaa2be2c7d14cb17d71418b3277", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "7de17db5c78dc8d1b97d8763590b567b7c96ec1720169b11d529e25eaa32fa2c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e184eda7e2f759903a19602407300ecf97d025cdc14db24a351ce58d595a317f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "2efd9f17294ff04974753951c045390dc3f0f0d5ea1c03d2ad91acd6613babc8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "dc4e3e1d0bc449bc751fad29d94880c0b3f6aba25eb80d644edf56204dd1c91e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "d2475cbdbd52a3790a8fea62497f0a6b9158d167cd98a7b68d455dec52961421", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "28ac91d76110b86437c5537af034674a54d436cfd8fa50c7ee808d2749610160", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "cbcdc54e969bc0d3405db2909c57253e59e9c7df01db6587f3d58b166c47726d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "63a749559798f0aeeaced1d08d52ab13485a7eda9a027bb3e6f8a10f10c83233", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "63a749559798f0aeeaced1d08d52ab13485a7eda9a027bb3e6f8a10f10c83233", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "b190890e73b9406a5b8226c3bc6791497e729f010b5bfbc4267b8ae63d8b78e0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "2abf3e2d59e43277587b8bd9c426c7380f78ff7bd4930ecb99ecee6497cce8b1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "33e9a818984839275b6a04be7a70ee7ea3c7c124fcb828887c55ebbafd64a366", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "37aecac1d30c86fea22ddf59f0f114794c2de1165266a0e67cabebcb07f32319", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "6157a854b693c15175395b74049115175838deea76f8f226c62f0813b27e5698", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "24b71782e169758af21aed865b0d51d951d427be92ea54943a61173e601edbd0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "53f91871d5fee48f13fbd7508333cba46ad32c497014fa76f0577240d0db5167", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "5680edba573a7ba48449a3d26c5bd0b8eb4cf22f0f0d9098d6f81a85e4552a5d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a914e4903950fbe62c21a39d5496ff8970b093eb4c9090a876b5224505219c60", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "6157a854b693c15175395b74049115175838deea76f8f226c62f0813b27e5698", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "24b71782e169758af21aed865b0d51d951d427be92ea54943a61173e601edbd0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "93682fe8cc15813f09cfb46887bb4a15bb0b91af1eb9618c00816928b395a98b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "31ee755ceb309c029d4cbc9eb4e20f227f1a35a4d827ea4c14902b23d9a78da8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "aa63682170abdd850d2d2a4b35d06ecd9d44d1b364200574118febae0f601694", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "217bc687f06a4f36c3ce59bd1d5d2363a8001da8741e435e6e2945dfd63bb037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "7de2d3f039ffa4f5d168c1876fff9ce78325b4a9b74c63625d293cc8c9636d94", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "a585b74faea2a646468c0d88a0fd91e9fdd647a98e9d5de8e0e06272d681fc2e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "65ded97a83f08623326a31acfb5631bb1dd2065f86ed46ee3f7dc12261aea622", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "29fb2b053391181714e903d8b0cc84f9bf181a14c6e5223e669ea6f19bbb0352", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "734074e9d9b9bcfaf6b4b1a4e5f9bd3e739690b9a62171bc644a09ff38d2e99d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d32dfdeb5039fdd910f6554394330d3fbf8097229c8725b716ede9089884a1e8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "dbc6dfac0d844310ea154b9507aecd3c6bef403dbe6e8c30635665e00c599cd0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8bb9bd41349157b40f1ef9d55854b975ef1c99db7fb0bae1b54255be63ca461d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "e86687cf5626d5008c681ba53fdccb9aaecf0c9214b27ed1d6d7de3d1a13d56f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "fc4e8b1abfc70d4a5e88b42da846c0f67eb7a01828e8cbb028520b459501d235", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "8a2ca91745c4e1961557575adcb4137d1e864288332e3a54691a5d11370f0bae", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c85757c2eab3f8b3bee28072f794438f617b17486e4a63552c2353ca0ed96999", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2df384071125af34b59dfbd61e603f408e8c9d072f16e6f45341f389233cd4cb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "07caf7946c5fbc7a2535a032e97e35cf99207a272dd4d67a978f2f4b665cfc0e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "af8ae3e02b2f1bb26826d626675b88eb2f0c4d2a3989b7889b570a548ca76c02", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "7b1a757b67bc8e916d93d434897e1bba4f3a6436efe18d3519a43fb78beebc9d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "1a3b5a23d1e115f507d6604e618351abbd4e710e8518a71b9e581b4ef06921bf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "a6860fb2598b0438e4aba4c4f913f13e5c242295f75335027e8803e550806ed3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "b86d986a1d7b5886acaf9d28148445be4e161ba84f877314f5a5f97f3c0640a0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6828c75fc83ad715f7a6fe7a05ee3d3ec3dd5044ee257fe2d4c591daef08ab67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e7a6fbc9320b92824f51dd6ab9c72eff189812fe4e01de98770c9517215899ee", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7f73fd52f281fb49ea7481ad41787d844755b99111f2a8998ad88dbc2de5a2b4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "1899f4d285023dd9cdeb67fcc9058147b25029e3442891652e9f23a5a7248ac7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "9fb0a0c828651eafd4a4c5290bca3144465d6f8bcff9d0034b6200249fb84c0a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "009fbb280582e2c7c292217183bd19033e5d5ed4eb3cb98cc9be731795d8bd67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "fadb032f7b245ec4216a657cbeb2be357868d38655ee844068c87b54eef41daf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "beac626afd784e50cf6f8862a358b97223eb726537f56eb1af8e23e3b4b232e0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "c382a451d92483a9d6825831558e0260aa114a72740926ef60274cba4bc28d3e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "5e629be8273aea6d0c854524a9b37e0c2b44b78176c6a94eb590e8943e6d9ad6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "b1728caba3103b44ba1b16ba1a7721926c3cacd1d98b0b33e0ccc1fe37720e0f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "6b944fdbf9c8c5c00b160d7d3e83efb5ea024f6bb25387db76b8e7699121b2f9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "9c24b7fe193798fa768012319570383642c086f866066522a27c06eef76d2a50", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "c0c98469e0b081e2a1b8d8509d310a45d245dbeba900d50d8b57d5a7ecb2e777", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e2dcfa96154b0208d60dc57f28367324eaf73cd482000a26ac90d8fd30f66e1f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "d14c7e53bad43996e7297c02d3a2ae775f445a467ac0b4b43cb8533fe4f5446f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "0bedb119de8edb194c08fca3bb3c3be3ed3b2ddae1bfc64a25888027aa835567", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "2e50bf0a440638f73fc676d2e30f86647f451401dea8ae2f36b39b9448edb99f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "21e43a35bfdc12013da337d8f096d5e45afbc42fc4dae1c984b53ab32e842870", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "ec90d482ea30c7a38ab5ab612c932c670eb505f069244b7852a121366ac33bae", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ff2165803d36bd4d3b8a5aa3c2abd941be87d90324922439ce6495510f78845f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f8264f9b52f367f0309c34f14fb6fe933822fc2b1f8baff704589c180f006238", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "c80287a6c13fc22b20118c84e7413b42aca1dc80b641ecc3aeff57fda09522a9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "677b5c6ec743f9c603eff9b4dd9dfabe0637b9b4178b8205de284c7177c7ea48", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e62b567e2f709858b3b7b18eafb6247266c826583f800817532037ff0950d1f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "82a4807f0f2057ab1ab526407b6af6a52618e2efea01503275b313be6061a33f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "585f57ab6cafc04f2c6633aec3f4a543b618e6c32c623ace5eae4e00a57804d9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "b33c2e05c801c6ee727fd5deaa1ba7307df5c7c5b745af33afcfcd454939785b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "c259d2103041f673901e721700cea1d7cf95ce8e9ed93a2916cf51d0dc17b1ae", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "c259d2103041f673901e721700cea1d7cf95ce8e9ed93a2916cf51d0dc17b1ae", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "3e82d76c02dc8b4f6f1f25d16215e5dfd3a5fe3ce90a17ec7d27f22e7d189376", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "74bad4f49f4a593f7c8a5ebecbc021e658e4f6560a95ec28824d2ef89aa79762", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "74bad4f49f4a593f7c8a5ebecbc021e658e4f6560a95ec28824d2ef89aa79762", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a4b31c99e56bf01011c81c4a432d83fa6069d01e70f699ad04c705865396ce1b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "5d5253a9b4db6d7a7789892e654c20c0ed49a36c5bd0530287e818297d702f82", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "d58816196642577596e740426a5b2d71c9e021421e6439706a237ad82c96981c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "b9e75e7304913a566fede2413617db70dac41f7322e043da2b50c0e7d6876f5d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "790ad07cac82dc2fcea1b516e22adee56e3e26125388d6ac4c02f9643210e2dd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "7b3df242b4ea64b87f82c72e310251a7b716b05d75f2273abb004c7f65811e21", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "aaa823e6717d7242044b4daf6243642d461e7fe746531dcdba74b25dece166f9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "b0f7fc706c5620bdec3c41f14b65da3f1e22cd8a8f41235b86207ce4d74effde", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "2ebcf6e7a76ab62d702424d7b37438f3e932c63cc3b516b2fe2a2678c310aef6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "22079ae88333c6369b2d2284b3b01b19335a327211a62c68c4513b156a1592c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "2efd9f17294ff04974753951c045390dc3f0f0d5ea1c03d2ad91acd6613babc8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f8d03ae3df078fddbb8cacc278f7532d5452c3dd877f74aaf9d60ada2833afc4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "04b493b6c51a15c642add2d33684d9fb4e46e5d3ffe57e84840db71899bbdbb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "04b493b6c51a15c642add2d33684d9fb4e46e5d3ffe57e84840db71899bbdbb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c3e4a14369574bf43c516acb37c0a5b7ebdd8b35f211b767c822f9b498e8cec4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "83363f2ddcddbc3688fffa201b4d87ec4d5ed514465522a4d158187382a196c6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "b197b5ef3957372c4693c89bd570f19ab09bd70ca027961fa733ed64b5be51fd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "ea6b2081f51ea7cf600a4a7380dd229da05a71d8062a3a74d18c23b7aa3d23bb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "31f8335f43ced54d3872dc690ccdb92cd75302b8ed9ec20f779a13f38b780d37", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "0ea7d902b9bdac383276a6e9a1bbf608909ba8cd89edd2931adc2d4cabcb9841", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "40f68690e4dacbe4707498f3f994cab7f0cef61feb8d64b4673493775595e1e1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "40f68690e4dacbe4707498f3f994cab7f0cef61feb8d64b4673493775595e1e1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "40f68690e4dacbe4707498f3f994cab7f0cef61feb8d64b4673493775595e1e1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "40f68690e4dacbe4707498f3f994cab7f0cef61feb8d64b4673493775595e1e1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "ea6b2081f51ea7cf600a4a7380dd229da05a71d8062a3a74d18c23b7aa3d23bb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "c09170e56d802d07d8fd60d36426aae1f49f9780aea4f9cd2e9b61b4e4f89f3e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "0d47045152a55909c47040972484f02801aca9b7dd2ed3b7ccbbe76707cb7f3c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "ebc5aa14b718251821bd31bd130385336a8238a5de1938495af10626e26fc5cf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "d83ae3a90fad20205429ab971053a9c76f1c33fb091e54b0e3982d4612c98055", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "2bd3115b585c2936cb770e9cda4aa0348aa94c7c829e833a04ad2a5c29facce1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "02a3aab1b610779613bb169501a61300538b6d45e8e5aa67fee960f256afaf4b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0ced7f911c37dbd368e33741ab359f9d4049c64224903aa4f0f5bf94715fef23", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "1c1df372b2d26b0bed659bf6c43fadf7255194038d799416cd1a6d39f83a0366", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "9d507e44a00619e71949ac891f9dc5ef6ab8ada15c810e6eb34891653d4401a4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "3a582ebad2046bc1ef8a374e68ad0a9ee4f5730c6ae6277d6aa140cdcf9d2ab8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "4c348ecba5f0e3cea04da677879ab8e92926405f2aa575f451a7facb243f2851", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "04b493b6c51a15c642add2d33684d9fb4e46e5d3ffe57e84840db71899bbdbb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "55c6ec33a5514545faaea9f8faa99bfd6c6d95a8d5c39a872dbd98b993336303", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "722e3f674faea4266af9b990d71ddd8c57466de4551a57a1e20bc2fc99cb7752", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "052f76e7545662f1c01e30364fbe2be9218c88dda8afd35c6b0fe22658e0e1df", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "e950bb0b40fbc17f3053ae02707503c5ec49593f75c11c151c34e05dd5425edc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4bac0f8ff2707cd8654137aae7fc613f7c7afbdf8dfd0bd0a264ab55102634cb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", "T3T1_cs_ethereum-test_definitions.py::test_builtin": "bedc72da4e26f8ef8141b882aa7de1bd65623202f1d02eb667254c8ffe1e6ea5", "T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "a314daf049af840d1d8acbf17a18154cdaf45e4dd246882e4fe5ed6221705613", "T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "c10548d3e39489154c8db3a921dd62094e854b32fd1af4dda51495bca2de0077", @@ -16580,42 +16580,42 @@ "T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "dbb832ab79f090b6eaa7a242379a9cc89b181a9a69be4ab12878f1a34187fbdc", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d15dcc1ebcf16bc33ff631ac219d7463e1e1f5e7360d606ff3c27155dcf2b5cc", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "527f7e8555c21cafcd018e5e11adca68cbaf18283cb0d336fddcb4f008a1ed15", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "de4482d733615d45f7ffaba72fc617880f1e32bc8fd6ca7109a13afb58f95754", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "65cc3faedffe18d9c00662af8a12aef71d4649bf6700454dd0e695604b6d3555", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "637453f1d026ca7fb7e675a90733ca497b7d921a3cab598c3ec44eff644f9d1f", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8b802295b421d27d8453686da64c05e8effc18e72da090cee81d565ba9cae3ae", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "9fdc258714544abdff1a1aef3881596489d403095639ecd88d5f80f0d85ae765", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "2fbae5b21465651842019c1da143df1020447a578c8d1b857d42f7179fbf57c2", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "ac36d5279cd550dd0b98ab7926c7d3bcd18d56089b44ef403ffc22d95c496af7", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "ec1272b52e3158c1172003be645e50838ec909109a793da4840f669844f42262", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8956726352d140c532471735065ec64334cbf9c7df7cec0e7dec2bf0b8458332", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "fcc04b193638f82a219d847204453a8fbf82e473cce54314474c477ce244c6b0", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "0ee86707fc18e2c99f516e3922849d4435668b14db6fe00a410238554bb0edac", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "327b1e0e496b3a1212e62d5ad75c0dc8084fcaa9dbef6412aa5955a2c385a479", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c28be5c47085bc4d13eb33d9099f19166ec264868402f374267961282761e8ea", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "de139fb39f229ebcdedcd12e86e9a4a80e2ea7e09c286893e5b09b35249537f3", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "8f26b63228a10dbc1c18cdb508db55e59db0751d9ef8acb5820bfa6992c665fd", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "888a81c1d1320b0d1aef4e1019bf91df4ac5fb3e5ac86d25276ca9b63ee82b82", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7d992a2b12210d9eeaeb62643b0f875ebbd71550ee5d16b3273be074c63dd7e1", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "9e31dfbe51f3aae9e7fdb5052b2a5cd76ae068ccab505525b9e20f06e1ca5fcd", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "7b29e461efed7dc680a02470393b0be5fa92a12d018dc2786447d3f7935e1d2c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "cee087246c8b4325fc1c938d21fcb9b7802c87cca6c19858e501225ba1a2aeb7", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "3f9b1caec4c1ceefe5a19319d323d6ae70c45e1fe3b5be5bbe44277b04df24dc", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", "T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "9571eb83ca3a5a7f686010ffedf05ccf9dbc8671d43761c41792b45611f1b76d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c67a0e4e9a27a3112eb09bf5fd038f1cab96cd6ae8c2695379ce2c13f008e131", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "07ba10cfc87bfbaa5d552d859584a794435451f2afc3ea42859059fc833b5033", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "fa3a3a4fe94a3f011ec415d8738bda809fc8edc0e00c853b8d50a129a7ab6ba0", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0f1ab4a2a6640a1f69bca1bcd1e828367872cd2839d438cf86d8a8f40d92439a", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "021fa88c6baff2fc0b8efee4def5b1ce0311a4292263def1edbeb1408b2b5cc4", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "07ba10cfc87bfbaa5d552d859584a794435451f2afc3ea42859059fc833b5033", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "07ba10cfc87bfbaa5d552d859584a794435451f2afc3ea42859059fc833b5033", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "07ba10cfc87bfbaa5d552d859584a794435451f2afc3ea42859059fc833b5033", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "a12e41b25b3df26cb0ffddaac9c8428e14294aba4890209a816667225797f237", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "286197ac062b97bfb5c4025907b01e8edf73c7c3de5509641ef2459769a62bf0", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "3cd9c7a8bf58714b586608fff23bb63d94e035bf58f406f826c587c419bd9254", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "5ab174822183d24d6015fa22aec4dc75b4b45c505d3cdf1cc4b80f1690b844d8", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0f4ccbeab6134ad934c9dcdc3f4506a066e402dacd01d5059c2ff0aee3bb5662", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "f603767483ce345e26493d8cb924820da5b8392b37b2272cad0966ec5f25172d", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "3cd9c7a8bf58714b586608fff23bb63d94e035bf58f406f826c587c419bd9254", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "3cd9c7a8bf58714b586608fff23bb63d94e035bf58f406f826c587c419bd9254", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "3cd9c7a8bf58714b586608fff23bb63d94e035bf58f406f826c587c419bd9254", "T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "b3fc9b1959e1fe486eaaaa91fe7749fcd933c6648b0ab7b5f7ef3340a6144d9c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "73ec8161898c0040c9cac299ac61444b0af6537fb4454b4752754f6f3403b0f5", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b91dd5c8e3a6afdbd5961e964bbfd51496568803750b7f435fc0d149ab3b17c5", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "2b106023ae33bba84c5c71dd76b77e1617cd8e23cd5ccc603badf01b6d164dfc", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "068716ef035a3e9de8389f1e9d3ba597866b2beb339dbf96d04a3331b01cbf1a", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "544b7bb00c619982f76de5491f99e1bce5c9fbcd89c86463b1dbb849b14eaebd", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "8afae26705362df616f203061dbad5b5188d969a4434cf9a3863b9785ea0b81f", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "b763b52cc6bfe43bdaef6ed0c3db4e0542c70d7bb0225173116004d794f6a8c8", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e0ff495c3637e76a3a3444ccc6b3e947dd87924fca6ec26aa2c6457e4ab06dd5", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "dc459f24321b6697de03224182845c40a79fba79db8b8b4ff6838097e0b2c20b", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "26edbeec5e9421ad8d82ecd4f7c42304670e855d4e0156f9fab149ffc493b12a", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "4769d401d91bb0003c9ce011d387cfea7609a886eb448c163d15b1dee9217426", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "e86c206be8d0fe3c4b2697a6c61ad09a0bbe3951bf1cbc7eb8ed902e21b1a571", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "3424188f8ff13204774dd9e566440865bcd1fd91cc1fc8064aaf4323aa8ada60", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "7ff0be93604f8a75f33b4130f4fbdb79097074a4c244bfcfc461943a87b3bf9c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "cff58229e7716c88fb2090dde48f35cbd1fa900401f9d8d080575272a3d6b60e", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "6667c673dbb6eaadf8e7ca5c7c512097c5e141dca6be728e23e7341ed02750eb", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "aad0fa984417dfbffd4bbe533304b86a088f62d0412fc81f3b8b790b1548689c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e42bbc7f1567302a2aaf8c8f13b195428d26b4810ad6733c970b3058aa7be748", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "c7caa9ba6cbf6d74e35fe4bf6069f72e614ccecfe90cb08d3996a76b5e2e9cb3", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "cfd406d86a2216b2f8fef8eb0ca7ef3f7f625be5f03ebce1272402a970a9d0d2", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "d7ca175233b465474de7c9b75d09f1f7d20dc122de6f83a2f005bd36cce1641e", @@ -16628,104 +16628,104 @@ "T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "68858ec1b110668dcf7040ea70e1292b273770b97429f0983b957cb61f283518", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "3c83c97e823986be66b132718af930fe3fd1a03eb507e2edf16f34e332f7e650", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "e101a0e146441144ab6d410a8086c7bccc818b8839b5789fab5d6fa2e4e9133b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "6a1472610452094137283403c445e1b4ef57b2440ce83fd0c5fd281f9dbf69a4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "e101a0e146441144ab6d410a8086c7bccc818b8839b5789fab5d6fa2e4e9133b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "6dd2dbb12b604aca1ea9313b8982ce66924dd48166c5e4aa2c2f9724f30afa37", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "6dd2dbb12b604aca1ea9313b8982ce66924dd48166c5e4aa2c2f9724f30afa37", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "af767b777b9fb87232a99345ebe2df2b67d120b3615d20dff950cfa64ed55a58", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a755e6af12127258f939a51e08f606add13e2cf49dce54589b30d5faeddb966f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "861b0c8c336bd15e05840173ed7e9843f3f89af54e14f0e43ebf403f12b85f80", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b3e3a0142d2fd005d8cb80b61f4d3845cdea3ebfedba19f88c37a0a3a39ae993", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "014558ec2f985643aa0ef3568b230818d6217c5bff7801ea3ea8246ec4054c69", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "18dbf37f650a41b25d7bdabb4d8157503bfe1f2692c4981e90066ed25e19c61d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fd152605adb0d2862687b8daf0bfc89a4b4552b52fca51020d0ac0c449c33015", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9133b7947ff868b0c6a60375bb11e07994c524d25017887538c9cdd3d673be2c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "05ae4eefb0561e9e4a7251df8bbdfe3d1da43df8c199a90f8278859a0c73f174", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "748e25658fd45b5dacb6ff57fc4ed1da1d5affcf6d28936ec93728618592409f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "35eb40687a1b051a17a90ef0eb37a0db0d544635db9d39b7cf3a4ee0900d87c3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "748e25658fd45b5dacb6ff57fc4ed1da1d5affcf6d28936ec93728618592409f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0b5e13ba07ef1869ee5834ddcb22601a200a9d51279c1822c8c26ba82b42b61f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0b5e13ba07ef1869ee5834ddcb22601a200a9d51279c1822c8c26ba82b42b61f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "981ee57bc65ccc4da0c91b466ca7e77fad593b09d8df57bc12d02342f9fec1af", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "ddfc544a4dec1827c23639c59404218a9e181e0e24a826798adc53e3d0d3408d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4fef0de7e51a42a0acc6c642a96494d77d4cf88665986b958007426f86a3f264", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9c36feaed109357f6492385ebcf74ac718442523ec56a7bc847f5c64d02b0959", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "014558ec2f985643aa0ef3568b230818d6217c5bff7801ea3ea8246ec4054c69", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "b89029548e085f5906c760fb44aeb9bde52f7a3470fc74c87ffcbe1472c65952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "493937805acdbf729119fcbfb7479f581cc7481212afc2bb9b437bcea38a3277", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "ed38ca4fd2b829dab37be1146b93609776b4dbfd4fcf0aa991b91435fd7a9d69", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "d54d084fd08fe64bc39c96f387620e46a6a53be46ddbb8da6f699946fd454c92", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "32a20a4502fb7755494c27f1ef443b8eb4fe25aa5304f32998d5ab9edbe1b32f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "3c03dd6b1947588e6aba972358e25ddfe5ed95856b0d6070704a93bd735aa969", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "32a20a4502fb7755494c27f1ef443b8eb4fe25aa5304f32998d5ab9edbe1b32f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "4f505e444863a14266902a47ba3270d14afcc096ad723d932c27ff5e12f23a65", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "4f505e444863a14266902a47ba3270d14afcc096ad723d932c27ff5e12f23a65", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "3ca326f0332f2b09e7ddd4a394ea7d0e57b499553831014e11915c946a6df8c7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "775262ede6f72390f8ea914e666391e795ed36cb9c3cb315306579afacd20d51", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "cdaf65c6a1eea5a57998e77a2e6b8e33d9713f8200b70871eff14e029f922c62", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a292c934e60f42dd4756f6c69af91e320bca40bc323bd079ffafddd262aecc08", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "2aa5bd3789c252cde65089583d6f9de6518d4555ce4ee482cb13f2d4ac08079e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "0802bf3af904f8c146b81d43c383982553efc32cfc51397d7737ca974748c391", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "4cde31647b919f290e28c89a6cbbb432471dd40439233a499f7f92159aed4330", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "3aad2621c6c709e26488c31cb3559ec541b3cecb79ae3828c41e54ba25f164c8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "3ec65f2170ddeb568119725e865647809a816fb40292ea50b5a0302af06c389c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "dbb1ad0b6afae9eee370dda7ddad2a9855f71af72dcda9d250cb6f7610b1dc3e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "3ec65f2170ddeb568119725e865647809a816fb40292ea50b5a0302af06c389c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "9033735c7e91bb9a47ed9ec34e97cec5830216aa4d79d9bb2d44bf1bd3e43525", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "9033735c7e91bb9a47ed9ec34e97cec5830216aa4d79d9bb2d44bf1bd3e43525", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "6d851bd01ebd977af2d0e2704e438ee79f69a543bcf752624090ec11d7d43111", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b174d29814ab28a8a5df9fd3cb92cbea01cf86e0ecd0c6fff006b33048e6d86d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4afc3d724e0bd4d798304f6af8425dad0163916aa8ba66862921a89d7664ca6f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a292c934e60f42dd4756f6c69af91e320bca40bc323bd079ffafddd262aecc08", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9631e4a40b16405cd9036d1a6c31403a284290c6f781775c57be84e249762b47", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c1559b143a6eabfdb6926f20d7e7243c673160600412afe253b4fca397eb8368", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "78bf3c0207d8e2d68c245be3f18981a71883411d12f55150db0f0c049f007b44", "T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "d54fc4a712c40550dbe94c22c0e54ac59fa3838fce16deb6a6185a2bd8ebd2d2", "T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "ea2b1558edffa6d99dfec184ec28346aa3085c635b4c2bd89f3066e476fd6749", "T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0673575e494ceff1813c4bd3bbf09f932983291e6f250d4707857e18826dd490", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "18dbf37f650a41b25d7bdabb4d8157503bfe1f2692c4981e90066ed25e19c61d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "af767b777b9fb87232a99345ebe2df2b67d120b3615d20dff950cfa64ed55a58", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "00d57714f843f0c84e8e038d0f0c84cdbb2fb2a9f303d860c01ce5955bc0806d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "861b0c8c336bd15e05840173ed7e9843f3f89af54e14f0e43ebf403f12b85f80", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "91c7b24b1e64aa3554db789fb1dc9d7d539afbfc8dec27dad8707b8f26cd2fed", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "32650b0357fc1a9aa16a5852d392852ee80896b7dad34d73165bb12bdd805355", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "18dbf37f650a41b25d7bdabb4d8157503bfe1f2692c4981e90066ed25e19c61d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b89029548e085f5906c760fb44aeb9bde52f7a3470fc74c87ffcbe1472c65952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "981ee57bc65ccc4da0c91b466ca7e77fad593b09d8df57bc12d02342f9fec1af", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "e23b5999b0a14587e1f54d5f77b72a69b9c8fb39add44fbba518967a5b62780b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4fef0de7e51a42a0acc6c642a96494d77d4cf88665986b958007426f86a3f264", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "3455e7b09149a64ab1a1f80b5f1147f6c869be87ca8b28d99141ca5073253099", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f40dba7c49074b982196d498deed029d203a6aa6ccb1e0363bf18270bfeafed1", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b89029548e085f5906c760fb44aeb9bde52f7a3470fc74c87ffcbe1472c65952", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "2aa5bd3789c252cde65089583d6f9de6518d4555ce4ee482cb13f2d4ac08079e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "3ca326f0332f2b09e7ddd4a394ea7d0e57b499553831014e11915c946a6df8c7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "789d0a15b15201c25401b12e0a842ee71c6a8db8f9048566c4b164fa1858a0f0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "cdaf65c6a1eea5a57998e77a2e6b8e33d9713f8200b70871eff14e029f922c62", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "02982bd33626ba3f02670f15a96180bb7f1e6249f874b41af945fa1872df9689", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "b14c1dbf7b55c01e52ff791e303848540b5b1e7ee778df6184362d7d975b2b05", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "2aa5bd3789c252cde65089583d6f9de6518d4555ce4ee482cb13f2d4ac08079e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9631e4a40b16405cd9036d1a6c31403a284290c6f781775c57be84e249762b47", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6d851bd01ebd977af2d0e2704e438ee79f69a543bcf752624090ec11d7d43111", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "2a035401c06ef4705f2cd7fafcd5bd30c6dc4eac91e4eb425e9367afef0f8450", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4afc3d724e0bd4d798304f6af8425dad0163916aa8ba66862921a89d7664ca6f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "948f2e34bc604270cbb27c8c7fb1bcd61ed8a9136aa1c2450dd05f4624bfb9a3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "66191122d0a876934d0a1e4663ae1ec8803508ef48a28eafe4dcdc7641a97390", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9631e4a40b16405cd9036d1a6c31403a284290c6f781775c57be84e249762b47", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "55f55a3fe4bae98c148784931af37d0761f3e180fd2ae8d93b58f11855ed1a9e", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "55f55a3fe4bae98c148784931af37d0761f3e180fd2ae8d93b58f11855ed1a9e", "T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "388ea466857b528ff96c6bdd2e8d0c2602aee0b9149c27c87e86f44506548ba2", "T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "b8a3f0b565262e974c76f4e2a4f56cbe634e9fc4b1f36c9760c27c0f1dd6d646", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "04d81bbd8c796f8f9b2aa639b18e45bf00322cfd6c37eacd06fb0943b452e0d9", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "04d81bbd8c796f8f9b2aa639b18e45bf00322cfd6c37eacd06fb0943b452e0d9", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "6efee587b0266de4d7b9c658c49bb91102fcc85ba55fc4f4756015f2908e2195", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "6efee587b0266de4d7b9c658c49bb91102fcc85ba55fc4f4756015f2908e2195", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "feb04a7ca62b7b69f38cf20a505b7f3ed99531344f7247f8c34ee08d0510130d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "feb04a7ca62b7b69f38cf20a505b7f3ed99531344f7247f8c34ee08d0510130d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "595eef57d98044f824929379a30020185d2ba6a04263f3e702df331ca36ed29c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "595eef57d98044f824929379a30020185d2ba6a04263f3e702df331ca36ed29c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "c56b9127db6ca2f24521587bc21b3b2a1866609ed95cbeefbb3e49025e3c1815", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "c56b9127db6ca2f24521587bc21b3b2a1866609ed95cbeefbb3e49025e3c1815", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "3da5ed8178ad3386226b90946f8a4e7a89569b591cec0a697d7ecd4e978c2263", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "3da5ed8178ad3386226b90946f8a4e7a89569b591cec0a697d7ecd4e978c2263", "T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "dbbd874d575d8f5dc935c4ef4490ea9f746218b60f30a89cbe3989dfc61d70b2", +"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "57154ec93252be006f6b13f1cc47517ed66b509c8f361f11ddf1303886fcd3e3", "T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "dbbd874d575d8f5dc935c4ef4490ea9f746218b60f30a89cbe3989dfc61d70b2", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "4741901cafb7b70f80376affc4418fd177ae83421b92e756a254fd4772fa307c", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "d3fd91e050a44114fac9eb6952a0f1ab2628cd35a6d597e8fb78cdbf63488380", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "57154ec93252be006f6b13f1cc47517ed66b509c8f361f11ddf1303886fcd3e3", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "b39b8fb6d1bbc6a3f665f04043a40adcb33ce63b13321671bd412893c47ed6eb", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "78ef8619eb579a8f70a349462763bcc31047d3e0f87d2fd2fb6d87d0ea96e15e", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "e73f928982a26f650fadf5ce91c67e7920414bf0c59d7a86764ebbec9d4cbd3c", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "266b168901be9685a8e2fe3db87ad027cf66a77c19c7e0c88497a893c1c2face", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "0b9c74e0a6e03470135f222ca0ed57d16855859eeb89fa61f82f27aed910c06d", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "cdea333f72b8574aad3bae13e6ddf4dab04b6e7791ec1d5dd2527abddb5e2a92", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e17adfc379a7226283678fcf8d8e1813ed125a17fc5197f51ce228d0a1da3f06", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3617fbcefd913e183d976e40c2bab9409b2142d5d2073e7a7067664c6cab8deb", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "c6c559b391260cf6101cb82d6761af7b225633ef8a826c0f5cafb2cc7a976d05", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3c3fadc11864fe03ab033ca0b249b6922d3a1a3f9eede42e4ba67dd530cd7a18", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "b6a384c7b2eb0877297934ec384cb50564505c1e20df7ed92cc611902b092ccb", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "03d86bda97fdee6bc07728f9bef8168fb6bfe988c2c105e4f91efd7aa3491d1f", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "49105207ebe0845669724f54f5b78b886ef3b9ecbb614a6de32b52d783fa0e24", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "e93ebd601beec1d33f309d5a3635ba887c16428e3c74aba000ae32745603bce1", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "916b21897f9b94180171fe42e3c30f99cbb9247c0ed2637af0152aa9f346ca76", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "5dce2960388a0512863faff12bf132884d034b8eb3be66aabae016ae4102da13", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "96e683e13e1a1b5125a493d57a90ecd6caa69b1def0981ef10305a5474c7cfe7", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "c6f9e80b55f832fafe224c62d10fee48f08d86e7ca98014912208e0293ba216c", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bd3c0b0ef54d5768c4389661ee240011b0779567b8df26434a47de7efac83c92", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "d25be24e94c8bd8eb8e02dfdea17a4267c040068f6ed1d768fd152858330d215", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "dd04da821fe8d1f9bf348e68452eb7b228c5f63be6828ed8dfce8523dfb412ab", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "c2a67080c8a1a844c00858fbf31880d0e9d3832520c4158287a6d47a9524e5e8", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "d0e3af2562a595bc0cce1c6812671dddd85aa3beabf27c6465c4fbbbab67fe3f", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "8f8016d0e7e9defd14afdd37e224d5fa14ab007b52dd7fc742ecaf53b671d036", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d0f0ab8a2ec131ba7a41588c6b9f0ed4111c6437e3d5a28c484ea6bafbf9d53e", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "8e823ae825c4fcac8305775cfebf749237fba6d11c5a6e3cca55ff9c5d9c2056", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "80a7864dab15917f55753bed31c441de25f40ebc028a360f9790310d2962b33b", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "dd11774a581d8ee3230b5dfc8c97c43e095dcee11e93a6ec1ba12cac57873469", @@ -16751,7 +16751,7 @@ "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "f68fb96fcdd1992b7d4862aae552e45ca0adbd18a9d8ebae1983ed0fbd87753e", +"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "0191617622807296ebef13b01b9c84a4e3e6969fe607e84de43d56881d7b6e1b", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "82d29029aeadea530de943a18c96ef2091ece8f10454cadc0b48e82c6ab9669d", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "eec861d66687cd2907c8b67e3f347dc276a621f4b9cf9501072350070ea13c25", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "877bb0866a8acac4aa7722b88ffe92edee82fd524099742dd10d1580f46df406", @@ -16804,7 +16804,7 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "b81c0adf31a42588f04333364365ae4a2a17c41bba10f739839598768698f644", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "17d88765a91d0123005233bbc9f943d67a021a7eb424f161aa80af98dd64d462", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "952df9449bc60fb782cae120bbf0ecdc39655f3d38496e9255fb182a48ba2920", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "82ff531ed0eb97c06266389db316df7a545c6067112f1633857d3187d1647764", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5b6e83115f141e20d60977a95d5a032347fe64ac3be115419dfb10f80e8b1b89", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "09050e337c6400aa065c92d9c510c91ae8eaae346f3bf7b49ec368c5b7f1e034", "T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "97d97000da7a1cebb9a08bcf2d270df40393219acc40110b921d6a5d9e2f45a7", "T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9a1a20e008f16db6bd4d8f5d90ea9fc4d22afe30649e9e89d17cd4f6c135cfbb", @@ -16822,132 +16822,132 @@ "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cee5084399a8f4b5883a07d1f4e9304c46e873e72d877364889ff21833c3e9f9", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e4b843c22a5e37ceca78bdc3d40af5a5afec81e75f6333b55b30f0e79a45674b", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "5575f9075557997925ede41da1b52169847b9ec9c281b6567e44e50deccbff3d", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "7c036397a8389d730ba5dd3e7a2f1b3d30181c6950e91646211dbe4f6d99c20d", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4daba35b95525f64c127d341e52fdb3c4e60f9c48e4fd19dae1963b5f6380ab1", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "5575f9075557997925ede41da1b52169847b9ec9c281b6567e44e50deccbff3d", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "7c036397a8389d730ba5dd3e7a2f1b3d30181c6950e91646211dbe4f6d99c20d", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "4daba35b95525f64c127d341e52fdb3c4e60f9c48e4fd19dae1963b5f6380ab1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "d68925d21e5054b7ed3a144ebc1f2642fc170d6d71ce21cde7601d6d7dc5be0f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "9769b4a2e2527639b6076ed58eb36b85d8d6e9a3716b66d3d9e652fddc95a75a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "519961050798c1b8f7e9cc72125536bc4e404f7e809d8f819fa36839d34f9880", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "407ab994374981c37ef9e4ffaf65807396908fe6c3e8e93a37bdbbd2fd34ebef", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "5c0cb421defc27ed2aa06d29e13fa433e0e593067198529f78e8bc0abbc1ea62", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "d5e4efb9bb87547573b6671512656171cc9fe8641f75ee52d76c0ab8ddfd18af", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "6fcdae6d4ea015c3069692300bde8f39242d394ab058644f7842f97b47534ed1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "39766bf8a1b392d82cfeace3f271452afd47bb5f34edbd20c5a6f6de707c4a6b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "7a1708da08425af2d2d69a0d94eb8dc5f3fc36876f4544f0d7697b66c9d47300", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "be0514f6bfaebd5abfa72f0c1621349b132f31abc2f54b71fe30d79fb345bce6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "3c8466820460cdcb74ea2844ee15e9b7d8b89e353545837fe69a38fe9c60ecf5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "0c030c3e230859ffdd7b74bdd7f44b542e4d7ed8933e1114fba69040c9b16b60", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "15e4a164a234035a502a0404ad8cebb571bbb40241f421afaa3d5434685adf9d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "de50a8be8d2c82def4dc3d6557f6992e14df5b56aaa1fc4777a1fb290f808937", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "4413f64368aa65600c2eef8bba380fdb0ebd5fa6aa1e96bff3fe257ca33ebf15", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "8ec7b10b73130703bb989ab657127891a881e820ad2add435c3e112ca6ce5a3b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "03a07a82fdbc5d15c4f70bbe1c3b45ec8f73548e19c56e70d9d5240f6c322e7f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "0262e2420f5ff5d0d361a0ba318fed2ac235c764babc545d591495b8f6d47e51", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "e38db95a6e6ee5c4b7ddfdda419c6b96bb0370a756a55f243f48c56616235d19", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "831f407f68106a8f99b95228700805f5cf931acc0527afa1b17f397f9e85487c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "72eeaa191e20c1a5ebd70eb694a30c8c95be49eaab84440dd831b4629df043f8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "72eeaa191e20c1a5ebd70eb694a30c8c95be49eaab84440dd831b4629df043f8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "017e43fad631b5e9f8e767b10452013d6f7ba24c78414541fbc1ead0c6a1f5bb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8986eeb6fa815fc279576579003af4f33300d7f8d9e9e83255e578ce0e755530", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "fb1703c8aa6172dea0fb1d0e0e336059bff2b66dc6750939cd8b1fa0b4cfd325", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f0e439064b98fcd30fe96c75407cafc4f0d2688ff066ab016ba6be1e7841ff08", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "3b600bcd4867626782834a3397121ed7829612df0dd27aef9b31631937bef7f8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "9f86c24cff4d0ed905ced05485e866a19d453f02c7af64176ff13104b5d27907", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "dbb3c7a06e0852972bdc245d84af82331ce73cce8691adfe9634c2a4c041e4fb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "e06045ee8993c40bc1f3af0f52ebbc94ae6ae6d50fbc4ab403e759564bb58c4d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "8541983a434aa2fc1b3d6243ca94b101a7118bf1d4bb0a3b4f555536b166e027", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e4ea0f7c3bd9626722b162d4893d06c9c82efb8cf624cc8600a6eac02562b053", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "f095c1b0d2e849c90530c85c697a1a6d32e6d6f3bdb60962a23ada9fc0571e6a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "a470fd4ce8174ac29fa748ad7731a9911ce66ddca83f07e4187f08e2aadb2912", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "9b7b859a926f061dbab20ac12fcaa2c3bf0eb65e5077001dcea133664dc1e4de", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "ee378ace31e56b3bbe3cd4c9b0754a021d4b4e14dbd270d96ae99efa65ebd951", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "8b3c4d5d318b794ebf13de23a4be2ac8c4e360623bb5d48d5bd80f00a1b83541", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "29cab40f3188a05a75fb1b6d3efa02c1bb089aca859b6e356377631c51b08eaa", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "33cdf87021ef73ea36fbbc15648566c55ecd5518c7bdd22786b6da5eb72414eb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "14cbcdcb62f6df7bb16040f9f8f4cae466c0ff9afa4d266f1ac5636486d6d765", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "60b2321884b4076a8ddb9c24f58c786b46e8b47af656177207c5fc34cd49fec9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "948f2babf288369c3b2395d52a410df06e1a61313eb5c0d9b1fe7c06e3d709f6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "a0cde3aa6d02d7069702c4980e80c424246ec0e11d310f902d1f60d435738602", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d870f2c5f50c3ead795feac72b91fc77e80ac8cc24ac27273f57c66b84a6bddf", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "d7ad58f457c0414084e9dd655138d0556174d03e4be58f1a4f8dfbc2437c902f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "c8116ed1de66dfbe36038bee97ccf4118deaa42f29e03ddf089a60633dfe085f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "206b3d9c654689743db3fbdd7b35998789494d4cc924fcbdf96857cc12ee61b8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "1bb110a9fd6e2b7a71ef06e93666db8a819e7a203076f06ed281ff89dcb56995", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "923e35d7ed5d217832ee68dc29563fb06dfd292447a145f458fdf1be46f16682", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "29ef0836974c95d92117c7983515d943adad30dde4ee39b80fe34edcd0823d8b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "cef921b51c63663f5f951a3c20d0cefcc9981c3c14e7b8d0720b87c130340750", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "8497766292fbe04db6ede47c9dc31bb71e6d74de1cb27a427d446ca36dfed9c8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "84961bbe095e300f343675652857642d15bdbf258ab10be7d5884316c8bdd8c4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "feee0b2e87cf095e9b8865931d2788c3be00b4491cce8e33e2c3ab8dbc073272", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "007cd22939b68e9a2d5d746f86d1fd2c78d075047991e77764537f81fe6fd2c8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "836e16d51844a8b1e442451246254fbaa0ce7b4e97b28ce6140d3503e6470175", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "e2ceffb1d261816c4152b052cbb520b4d9ab95e22b167044cce8b9230f6a19c1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "fefeae02d27f57945166f024c32ec5d09c0ae1b2bc88aaaea9d0e5bd9a105a83", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "e4726ede7115a673df46fd727eaa6926eabeb3665936ac23fac4e122ce29b786", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "fb1703c8aa6172dea0fb1d0e0e336059bff2b66dc6750939cd8b1fa0b4cfd325", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "a705adb4a33bc9ac88fcd2d911af43da4573281291a5d021fe971e13b0dc503d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "621e41002a63c73a2989209c5b996d787bb8de2e1ff8387eadf7864f05d5b4b1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "ef91e4736a3401df7b7b7ac04da86b145537d9f0ac4546cc269d04f1ecfd47cc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bdb536b12bf6bb24d78f8a46fa02445710bd7f4de7f5fc6a143168d27cca066d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "cc9378088516cebd3098c9745fe508f5ad373ceda72d31fe1d78b7be7c45daf9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "452fd8c64a7c1f68b118abb244b3af39fa18190db979525f98c7f510f2d532e0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "e62247465ff7b66dbe313372b3356dfad05ec3c5170acd470e6b57e58c3f32fd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "970754cb71d9fc1253abe1ee287b4f4dca63d6fd213d6007f2e101cc3f6274b5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "ac149cbd3582975d1a1a321768a42b3eed0a6549ae7ec2caa6d9812edc567416", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "5abbbcb384956b5db36269708136ceea56e14dcf664683f2eaa5f12a20030487", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "efc7535641a9fcbd922fd969ee6d1b86bf9a2dc972bd588ea2f0d7c1c47039d3", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "105d4e05b5be217a519088660a98b46cedd40713f3d6cba26b881c4b66bdc720", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ec61f9f63a1c1add37cca7425015c6ffa25a261a2ca446f9f5e8b56e23dde258", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ae578bf3a1dbe54416aa618b6e1ceeaaee0ae1a8dcad2678361bc77cea14bc17", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "0e266b352a0e53f2e898b41a0af3661cc9e5a3bf16dd5330c8c13c475cc3337f", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "f3b135e825b7f01b4a7a34a44b155e2e2d9417818e56bd410193a1a6b5dcb4e3", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "dbf5d187412eabadf3789d9f20e4b4c918803594dee8ae32217e9a85314f9f6d", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "567bad28da9ad453803be84ee35a526ba002c8fb8371aabe4c04f07dd6e3e885", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "722a5f39f08d25d0bad6d3338842d812f2d4a46a846efd55aa76c58c34a783ca", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "638d9378a6bd685bbcaa25eae5bf3a26f08c3b393de4e033608ac188fc0cdb50", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "ff7eff495b1805442711c52b3ea0eec39d0f152b5d6ed6fce8a05daf0ca6ea29", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9eb7fc80e8c457cb8d5e4bfea8dd8f49239ae09d6cd964cf951c8c609ff9145b", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0fa15a78a3a2198d5f00d03e5d7da0aab208ee84847e328d27d6307504d647f3", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "fa9df1988e68133fccb5da5442665b48042d692f16f60142c6a9f49c0cdb6501", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5ad3e05e2a9e68591f6aca07446fadf0a0f6dbf42a0b477822fb0c6bde106b69", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "8879ca43a5f3d7c02059e974f40ee73830eadaf9aed3a33da6b50abc8d55a8c8", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "75ae7e21243bda6fceca8c3f1bc18b2f39cbc072dfe87673fdeb180bbaf06edc", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9c2552ca2482d24154b10a7033e3b1f1d8e9a3560c30c1451084de1c02683a9d", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c65a2192ec2e2bd7ad8e8f1a3a096d8059b4448119c6a4d668608e9cda27f685", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "f39731e6443a68f839b9a3d906d46f2b3ca2c276b17ef088ad4395cebf5beece", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "0d61dbc1333ba2059fe0dedcc448c245c8bee77146d2e52685c5db38b804b40d", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "8e8660f4a640083bd9c47a02e15114fed54fd873f63c1315f8b7b8c156653480", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "37fa589fc8cd858f0ec7490e3165f1f7f157ed0e000afa29245a20de0ef4cc6a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "49c4ccb1cc29cf7203ac6906abbda45feeb083f0516644103d473db24c588a86", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "748bc387083b0422777ed9f3055189b9d38131f4d7d5d40c7e0bd48815cec6a2", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "d3899b9e4999ca57a057f2867ea5a29b2f05c4fd28d2c7f4266438d21a2ee5f3", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "6e87f7144800449104bd04e18cb546098be49de2c564f8050d675e77eb51bf1f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "873c7bd7be075b1e917819b019fd490840dc4d076abf9052498702c195160a72", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "69a03a8308112e7caeef5fe0a66ff1d4d59c3c8461c51a3b74a5e699d631fdb6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "25909a2de313676045e96764afa3dccae439b1a9b43c223d0f9ed2e515dd777a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "1634d613f74b7a927645b477da8a87315adc5bae59a18eb47660d3be9b690f43", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "925b8182f7983d5a7bd19f9ad5e4fb90a5f905e8e9999d367446129b1b9a0e38", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "a35d841544daba5fcbcf91c8d2db500a2e2bfdd8bfba1d8df8e1e6d5995802d8", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "82104c889d2c324694ed8de5bc795e12b1a8c0ce3d8320b0171fd769a630ed64", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "a8127e58ca4d65edaf42174dbc411867d32c71d9a6b4d05eeb34961d75c0ec63", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "a51af9f3815bf5e4a2cdae4a7d09d99a097a823fa76daa7afd4ab2915380bf60", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "e5911e5bfcce0117e92b69e5e5d611a219f2639b461edbce7f50441fff4ef37b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ac2cb895831f6bacfc96d7fc81c13b79f8e32e374468af63f439027e02e0c6b4", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "a1908292ee86bc795433b4c0035d5a8a31a19c2fe410eb640dad44b51d25fdd4", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4be44bb7c2d3b7d955169c697d8880e0b48a30ed4999f304233aba77d7b2fe6c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "c259a1c02d53ecbdf68a8050ca79e30614a4f8c32b911d8e11a991d4fef9c8c5", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "4458e22ea9cc7c53ed36d88f5d9de2a308085e9be21e46045dd116b07c0c19b8", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "820a7e8f63a9333f7f058c191573ae64fe84b454712b902cd353632ee7338d01", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "82286befcf3394543b4721f68fb7788ff7863d35291f4f66c087d292f2e521e6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "e10cecf1f6a379c1fb46742ca416d7ebc6c7a9d2efe09cf99e6ee1d9cc1fc403", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "13b7be4db18f2f15a2a4dd259007153d3c2583645c07f57a293e85af4bec208e", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "2dd58b78cb48f985da96a43bbfcdb0fe1856a38ae13018388ac0ecaacc140596", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "4776082c805e028c352d8b98447915c892391a342771f8814f6508bed1b4c4b6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "a51af9f3815bf5e4a2cdae4a7d09d99a097a823fa76daa7afd4ab2915380bf60", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8119c8269e4d60b6eb622c7e837f3ce1efdf5672df07bd3065a1513c41e62012", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "390bef9edc58361586e455f6252cc834e11619e6dc006fc65d52c9a522342042", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "4e710ac24cd0da0fcf07cfa818133ae7c74da4eefa74f6b933c641297b072c75", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "1dcfa1952d1bf750c04188423b17d7c7e9ea78b1e01dbc96c422e0723366a008", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "390bef9edc58361586e455f6252cc834e11619e6dc006fc65d52c9a522342042", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "4e710ac24cd0da0fcf07cfa818133ae7c74da4eefa74f6b933c641297b072c75", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "1dcfa1952d1bf750c04188423b17d7c7e9ea78b1e01dbc96c422e0723366a008", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "c00869c38391df8f8818d3e7755f5e5b93ca8b05c75eb085dcdbd7950701a776", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4a0151d69cb34b626f2eddd8964f11dfd3059af3a1163c1a49d2fbd788d79974", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e059239c10acbff5390362f2ead7b71340722d693109e44be874c1d207478790", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "ab9fe80af2185f5171433dcaabe7d732f84c1690220d8f5bd56ab4840a250372", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "dea5ef41688482b736d887ade059d50cfd878160438b555989d651b242a6f2c1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "c33c0a4033cab94926892b02211ce49b07c8daf209b74a963dcf6e9ec8265b14", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "f8b82d6cad752b3c0125ecefa7d5f75a27a88e76f35a78539efe02ded0821faf", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "7db70b7711162d60a30628973c3ed2542cfb53148ede58cfc71c114ed59395e5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "1270517994bdc23217781d84cd2e20640ee997d755864ace5470f2217c782678", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "a8921d9d772101a63d1e91c16b4bfe3e146652e4da3d1ec8f912f442d8a59d64", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ba84ab10087bb549fc452f7d98fc80a0b0b3a1eb762b20517bc3e8a259f39588", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "600489bc16c256f993e514ee5b0a043dbcf3d8438f808d91e32f90d884315f78", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "75d1035e350db17adedff37642ea9be70743cf5e2379511dacaf9eb80aaecd3e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "39e73a5157707aad0b8e18e8807d165241b370d4c8b9bc42212f94e6099c6e9b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b74cab8af79f16f8aecddb01e46cd6249a32cd33f5f9815dfe5ffd85bdcd692b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "17f976df20f3cce4a8fa432f1ebe07f896a7ddcd8f7c08060d4b3a7ace1d4f08", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "d88c5c631d34ba0f88db3431c5e8d110b405d3324c68d1beee20869a3a2892e3", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "7c543c2425559cc74df4902bf65afcc8598b06443f9428047efe5c5cdb087e4c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "9c99677e4e01dd54cf65f7c1d3ca49d735c66299732868b9bb8199904b24fdbc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ea60ed58ce96362e90634bfed21c34b0e60f249ebf97f99c418b2dda443569a4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "05e9dbd1443bf8940bb383600dc6e088f2a0017eb1055872017542dc5991b4b6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "05e9dbd1443bf8940bb383600dc6e088f2a0017eb1055872017542dc5991b4b6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "f2dc561a021af1c66140f2fbd5eb5f5b87eae65c2d90415210d19a4645b5a106", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "04e722b8ded512554cb6255e7e9cf87b0fa75189307ca69357fb0b6abc3f8d23", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "7ff13811467a167553f902239e86e419214550b5f9664ab60aa168fb9be09bed", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "0741aecb4b1417db91e20461ea6f92542149dcc8dd6a61813a820bc47a6721c4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "3fe5b51140afee5aab3f010291d0ab519ac275d4358143aaf116a51e53f62b32", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "be2bbbb612fc86dba4f5bab4767930a1dbee2ad1e6a212055b74b8f524ebe218", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "63e3fa9f37c8a3e1c87e02fa4d35c157b9f0ed7f8749ae1f2b56e890c81711d7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "ab20c2220da58f2883c9a183ac8dc85364b3460abdca78fee101d47e62c7365b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "bed338b6032619ea5f3a182f423a45668e5450a649bc49f8fbc29217a01d6d80", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "7c21c9c8aab3619f311110aa894d6284b2d700ab6739e311fb16c214b5ce75f1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "4e11f34f97386e31e27d3dcc2ed48fdc9b1d99d905f66639edf275507d813eed", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "87c413d83bd092f2754f6db4e2d7ed2b3e16868165fee4d3ce10061a12d093d2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "211a74a55a2c8500ba39c3fe01cf20a2231e42c0ea86b611e50f79247add463b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "c7d4891a5e8a64c1fd546f10c0d49be6d16731381601f83a8300fe096b240a11", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "86151e961d57ad13091a0c1c7472b46c32efc16e9ab45be58d1575284bee3e41", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "4ad6772b79aec109e8ad787da556bb204b18d7aeda87d434e4723cdcb3c6eaf4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "785338ef997a8bb21b165a2f46668d58f23376c09076bba4bee4d04cdbe5aa76", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "abdb2339ce1985783496eb49159b44bfc59df7462381d0f59b7468a8dacf63b3", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "aa12323b83d477bcd619e1c1b163069980a215be36b884a58659648c6c2db1e0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "8aaf1ba4c448b908a90996264ab6db940350787afdda35e9f65c9f39cdfee949", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ec2da7884f2a21b8bdec345a5cbc22dc5a7727aa44197ff2f53973a66a37a8bd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a0a4c50c955bfe1b0411d1072d39e0010bf5462e428a975bae14467d0a732027", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7d4057daceda8e3a0fe9f9fdfa75183915fb3b6081e699c5d62aa006e6c7b399", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "5aab52182ba02f11c90b78ef93348954426d4cde40b0c68753fd242de7d18fc3", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "c0223da2d8fa5d8d0ea995c1f1e9c9ea4b0d510cb4f8a6d2f7ae4ebd6598718b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9f14981ce264a5a042db70f0b4ad3d7d79637ab8edda43ab8e58b8f8b28cf02e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0b9b4093cd0253063d7d2f3516fecb0d4b914ee92601463d4b1291d7d328ec36", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "1f0a4b0efb67d830757e1798fbc1d3c9513f3ef48c9c079258ba218babcd9ebb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "abb687ef59f60746f3aebdbaba805178c17c8788d251e2b1baf3807b10aa0306", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "ff35e003f1368e9cfdb0005d842f38d43a74b65ed83fe86808ea1c659a3a5410", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "5067a974a656a6b4c23d932fae67191d810a62ca1daca6ea046a9e1402b64f29", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "f6e74b09a3cd34930db08c171f1b4d3aa452c60317faa1b9096a5498fe448b9b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "93277d4253ae94fbaf96a4624e1465b1241a742db749b84d1a7eb5d44792a0f1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "968c7a0e8c7c56135c3e05afd4bdce7c5069019b0058f13a806d59b9c0076e89", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "ff47cc46e1571865391099c7a8dd89865a9e84a80f521d80474b3cf5ca80aa07", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "5c827127b99dfb47fd84304832ec4588a66659bc2d939372d3e6fe88845ac601", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "aa8a1289d88ffbd75e0300297929e3d03020509ae65cc65dbf87dadfec9b1f5c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "7ff13811467a167553f902239e86e419214550b5f9664ab60aa168fb9be09bed", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b2104f3c0997c4eeb4e1a1f85a74228479c8467e819624705d6279a6c5d59008", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "b8f176e0cebe20b692dc35b2e15ddabfe3ed6d787e99201b494b4783444e38ed", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "bafa955bd5de8f266f087d28da6ccb5a37f49328c5420da3676fbec62cae07a6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "fa9189d1f817cbd46558171f4e46ac9dd0d91339c1f697435ba8c363c373a896", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "a7fa9963a11ba0797ad004a78f684bdff3763f5fed246fd3798dc5115929f683", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fb48afd641f390ea5d7703490e31f5114e687be96a7a7da0e78fbfe6ee8e1c4d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "144c1fa2ca522ada51830c58bb13ea9c42b739c5773ab747245d047a70c851fc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "0bcad441d6cf3464b45849e8e744fe9d151407fbc7862e9f4f418607b668e213", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "eef7279952c4a8eea0e828ef57cbf15371c0239e2ddf396169d8db9245175391", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7a9e77d96da64766e3497ffb180557d0d63bc00b53b1b4e576b4c775b67c2472", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "6cf7b4ca21e7f1aeccb671ea079181bf907b95ba1a72659a5148c22707b20b68", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "cd5950d8b1ae670b2d2a84f63284b8a878a7e3212ad7d43ce7e34ee0608acc93", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "54cc9e9577720f658c1b0f919b0c076355b9e15609ee8a0ab55f5c5632faeaea", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "fb060bced2f515041674cb3a06d9a592b2e1dc4cbd5bf0bf81c8bc05799925f8", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "89b7846ccfe01cc93c8a2af13f30aa7b99d5e955f685af83af9ea6d4135bf2b3", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "767ce43018826e60925cdb858443215727b403205d210dd72322e09befcd6456", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "34b378471eeec741d1dd9c7e4cec6dfb3716538a2624d4902384924540d28331", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "d80bf9027a12d9b44aa02742bb1c9461738c5615a22988a6790a1e1c7173d6cc", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4fdc046222b8bfb285245a007bf8ad222d7df4a6887e417ca1afec52a4be03e3", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "46f801f9b17d6d23c39fbb5f337fd47fab4f1d7fcd12ee2a007b941c3deb4f53", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "358c48ff37553d7ea224ee288ce85dabe9fe1c6528bc0e0d0f7064407e2c3659", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "8db147ce07d706518de38880680b55ac0dfa05f4e8d9284cb1b2d0f46cc08484", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "094315a2215ccd77fc6f68b8f159b77a6d1a96270f07017d0d4e921c756a5920", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "87c3067c7429a7974421ff4df2447b83f2ab50b632cce37f81a1309512c38f20", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "d7fc88f45ae9c8f2b31ac5fe90ed96f0845eb70e5529cb351d5d350b729c2853", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "cfa351e42835d8bc2c0dec81bdef38e524516e88c1d84c25a5f770b384812e3d", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "8d7cce9b2280ad09504e8856fe69284e1770fbbdf3469938fc7518fb447c107f", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c449ae7e3ca1c37ac81cfdbcacbcb126067517c90d754b3e0f383c9369505102", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "57a32ffb39c79a8591a74eaa260e7055924b09034e14906c02f628423de918a6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "715e3cbcc3bd55a27106b5be5688c99d489a14b966b31a22235087aa9a96a16c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "2e24f5f0051f29676c181e15bf3c42eac22bd6f309d45325660212ea89abcd9d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "4d69f524eade1079ab7d0bba4d73b1cb8f9b918034d2fc3100543987b43f3f61", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "2a97c24303c5b1c62ef49fca117f3614d9868fcac7638bb371963f8d95ee2ef2", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "38cd22e978e562cef103c616a8d4648e358c220e0d44b759c35f35427f2a2332", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "8294c3702041e74f38e6a3cf1ab508ff7c3ff326d96bb1266edd1973f6e26fc6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e3855e6a10bcbe585d4a7887146470936d4c49cab70fd58e7457a5a86b02d4ac", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "44dca8d981e6d714444c05f52619e941fac2c474b1a9a930ea51f0cd492f6c4c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6dd056dc2e695485aaef094320ce3e2d7bbff5ca0dfca161af2d370e2089fd61", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "c5898082901d875df5c91adf71e6baea6f1df429d9c03e8da816adffda0c2577", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "7b6cbb4c6795001c6f07f7f57ea0be172cb8b6052d8e27edb982de6a26bc68e1", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "52f941921b9ea2f792069e39296811a1724afc24295f775712a36e9c61b2fae1", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "56fbd818437649ddb44fc2926825bc04e9726189217c3a21b52729a1eef8c664", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "deaa32582077cc05d7e95c73e80e178edbc9147dc76970f93c0e7c3bca571d74", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "bf6d6dd2f432289cbf7aaa3c8ff02ad882c0aafd4caa5ef78c90a2e328620c5d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "020ce64bf7df4e69928259bc10252a100edbbc63dc55a4b0232d119086ad2e0c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "d9f6ecf312fc43db26158223a72536e1f946fcd12e323b74aa4ea9abbbbf4baf", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "76dad06338c7eaf636fbab93a725a36281ce10c248f3a2198c92622e3d2f779b", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "6ae2a525153222ab20c42cd761020bfb6f6b0d3870f7afe5080d2b2c5cb995c0", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2abb80c45ec7ecd68d2f1c5831c7ce4b3a760562c556ade78cb353917c2fff6a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "a3aa3d764d57067503ec152b1db749d5f7795c171261cb39242ef81f0c77e201", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "d88e054fd3d2d370286c1184b052abb323fd4719f7b1316e8a9185dce66ee90f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "e4503041698315a1aa8b32b360a734dd3e25cb4f1c64cb0eb9b10bf4daebfb10", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "68511c2b269df1cc03c9e2f79a98a828c8726efe01a86e6910e158eb82aa08c6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "c6dbc05859d793f8c8029c669c7b53e00b45130e1bd267ae1a840244d75b5e2e", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "d2f0a2a2aff1e6763d5e327fee8f7a100994394d47547a498a3d5f99fb663364", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "841fb50a1a6d19a1468819b2fe6acf93290f370126f1693958b6f90cb82f8e02", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "e5a1f139a35abb117780f2190b3b4851de87f6b8b5188bdf84cb02877dc2e465", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "d1d79fd4067f9a2fe31427f4b74fbcde9fe29f5525a2984300402e391b1935e1", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "d9f6ecf312fc43db26158223a72536e1f946fcd12e323b74aa4ea9abbbbf4baf", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "f219da8aa2bd3303cdb0f65ae2caf5c35172071785a6f66562d00c478768f2d9", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "b2873afe20badad6da21f7d58b0885ae34803ed06e73b84c58ccf8137b5a83b7", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", @@ -17035,37 +17035,37 @@ "T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "69928e6b1ff42739a3dbdc07f6ef6ac0aae3b6983dac3018b03b325b96462f87", "T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "ebf8a6aac47b252d84ad970de97f83ad0f8e00fe5baef5d1cf46362900b5adba", "T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "27079a140e0d36a7e735fc5052cf1ed9a0a9e6fd8ebf38e129d55ec54a0bdbb1", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "ec0a15a9dd7667a536a6876fc61083f4ea4d9f561e01d7fba983a2e3ae556573", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "16c6b236d1e7d0ba1f24fa0921203afb2a2d4508d86ecf4c35d0e816bfe77e8d", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "8bdad728dd503c413cc1e53e97d9930a9708a1b5090ee30b28d970033432d8dc", "T3T1_cs_test_msg_ping.py::test_ping": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "d761f9a9ba40ca640572cbb95daaefdd8a6fb828f91547b41ae9e9cc4b071bdc", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "3ba6fe4f822ad730666aa7df1b129c49432fec58819d843368308aafbbdb4f7b", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "404eeec69de878aaad93ad8bf14c5614daa704ff84220ef288e4f5975fef2ea3", "T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "1ba139c8e4297f637d67bb5338794fe012e2b4b907eadb06323e5b72e39509cc", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "2f03f2f391cb5aa5869185bd3ec61c6950ab1840df7d080374da4cbbc0fcd5a3", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a13cb96104505549e4ca94f033982cfdd70638c9b99aee3aba62bcdb77c2cd8b", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a13cb96104505549e4ca94f033982cfdd70638c9b99aee3aba62bcdb77c2cd8b", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "8ac6289bf543b5b315741e4a042a1155720b0a253bd7410f87495cfa94db1542", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "8ac6289bf543b5b315741e4a042a1155720b0a253bd7410f87495cfa94db1542", -"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "8ac6289bf543b5b315741e4a042a1155720b0a253bd7410f87495cfa94db1542", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "817f52ac5530a9f05770e65cadc5551280af2baddf6a6a1befe55e69d8d1eea9", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "817f52ac5530a9f05770e65cadc5551280af2baddf6a6a1befe55e69d8d1eea9", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "36c6e071ec55dea1bd82d138f7aecf5bdfa45027121a363dac665ad0a5ce43b6", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "36c6e071ec55dea1bd82d138f7aecf5bdfa45027121a363dac665ad0a5ce43b6", +"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "36c6e071ec55dea1bd82d138f7aecf5bdfa45027121a363dac665ad0a5ce43b6", "T3T1_cs_test_pin.py::test_correct_pin": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", "T3T1_cs_test_pin.py::test_exponential_backoff_t2": "a40f3726f1b5a2145a1eb0745803cd0086a6c550d0d9846c2175d1ec0b638881", "T3T1_cs_test_pin.py::test_incorrect_pin_t2": "ff6c97768bc0fe1be25b76a13ee4c7ac7c08ff271f40feb59b857c528a7c828b", "T3T1_cs_test_pin.py::test_no_protection": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "fee897460806664e2ffda41e1ab8bf78898027943334e5f2479d9eda964709ac", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "0781ec4ac04e6fdccc7a45aa668242dbc428b8d299225c4ece7bf3e4d6cf093f", -"T3T1_cs_test_protection_levels.py::test_get_address": "9bb7f802ac319ed51025b097d1b6b5698667a2bd8c90aa0ca913db0a8ba58b4e", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "a6956bf9e27b1a439e284617753dd47d8ff049ffbd464b60a4b5536ccabbb688", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "9bb7f802ac319ed51025b097d1b6b5698667a2bd8c90aa0ca913db0a8ba58b4e", -"T3T1_cs_test_protection_levels.py::test_initialize": "10bf68a44aa2d0ac5ce5cb6c2af0f15eded996ce80d3387b34a36ef1f27637c6", -"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "8aec63309b030668079890b7f371c1a4ebaad083b393c9a53040cbad4dbda112", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "4c8a1fa8f385d824357d9f8f97da3224ab675215ef4d8dd0222b32b7bb2013dc", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "6c5fac2e4b472033143f2fa85f5f9ca040ca39f83856373288b31a24b09ee5ad", +"T3T1_cs_test_protection_levels.py::test_get_address": "5995e7d737f06f7bd246cb4e715d5513f8a0f63d4e9eb31f8c3d6dbd8ba22b81", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "100a39167eb95e4b3712586a56dc5cf6639e8d5085ed09100fc5242ebe97edb1", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "5995e7d737f06f7bd246cb4e715d5513f8a0f63d4e9eb31f8c3d6dbd8ba22b81", +"T3T1_cs_test_protection_levels.py::test_initialize": "cd790aedde27dd0bd83ba08e1f84a82f59f5f81227f0cb8096a4267c1a5c95aa", +"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "8329f76662ec9416f1ecadadb9861106f9d05146716f63e1e0e170ffa55973fb", "T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "54e12d70d2d08d7813d0a4ac80503f7823f6bf39ea492c62cd9eaf25462ad01b", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "7f712e6d4c2ce9d2769b56c298898e943f28a417000405e5c3fab99590e9b44a", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "cc1e449b96905699d581c7004faeda36d5521760fcfaccbb3dca9d9f1d3d45de", "T3T1_cs_test_protection_levels.py::test_ping": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", -"T3T1_cs_test_protection_levels.py::test_sign_message": "96ff151cadd7028343663e5511d3d5fa85ee2b78c87208723294236c617e3578", -"T3T1_cs_test_protection_levels.py::test_signtx": "1b6511c341fa12141f1689e680966bd29378a57e16dc45592f9a106925b0c336", +"T3T1_cs_test_protection_levels.py::test_sign_message": "2288c3458018eda2e7919fe1a76b5b28b97d622e072df2b9b7c87bcd24b93b0f", +"T3T1_cs_test_protection_levels.py::test_signtx": "9821a681cf14e0f96252618fdaf15e842cdc58126a3b63ba4a18cf4f22bda91a", "T3T1_cs_test_protection_levels.py::test_unlocked": "854ce0adfc5484833dfc53d50576360845bccb7b90f79b483390de89d1110ad4", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "6ae0f587d7912085cabb946b309ef40bbdf395f6262874528b131c802cb91de1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "2f8c6a82c0ef95ba95aaa61ca51f5ce5d6e41eaa393eb77888a787ace26e62f9", @@ -17076,24 +17076,24 @@ "T3T1_cs_test_sdcard.py::test_sd_no_format": "211314ec715ae96a1f1d7b617189a8bb9675c3d73cc10c057c6529ec9b8f4d05", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "2d1a02d63396c5f1f40cd11ca6f4fc8dcead9d7a55f8d65fbff608d2f62a324a", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session.py::test_clear_session": "3d578cdd2c7e331cad784d6ec6f4c3e239478b5fdd3761e34ed5e2b792a0e658", +"T3T1_cs_test_session.py::test_clear_session": "27dddd7e69e87c90c4630dc804c5a80dee4b324ae462fe446cbd2cea05611ffd", "T3T1_cs_test_session.py::test_derive_cardano_empty_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_test_session.py::test_derive_cardano_running_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_test_session.py::test_end_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", "T3T1_cs_test_session.py::test_end_session_only_current": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session.py::test_session_recycling": "8ac6289bf543b5b315741e4a042a1155720b0a253bd7410f87495cfa94db1542", -"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "866e27c4c59c27ebd60afc8d4d1c3a3fadd5d08070ae6f4d0d98e71e4254a0b1", -"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "bfc71ce0b23b4f72b13ffc2af3e002b29f592f3e1fea1fb7af318b1a2e91dbf2", -"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "4267b115b3dc46904aff4af7ddf84bb4d64b35fd709babf77fb3a08d8d425182", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "3e74baa179612fd184faa29e0dac12cc90a8a177c0885ceabab7e5c71a8ebb1e", +"T3T1_cs_test_session.py::test_session_recycling": "36c6e071ec55dea1bd82d138f7aecf5bdfa45027121a363dac665ad0a5ce43b6", +"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "145f6e2cc3567e7c2e06c683121243c5f658c481f6c74c97594ac4b937560aaf", +"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "8acb6e26f6546b9ae1882915519b7cfc69d73376749427a15c1268c318e9cceb", +"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "8e01118457d783de4145dd0af9d8cc08890063a9f9e3d72907f874e2f9f5389c", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "491a139ce3af4c150b182609da6164f7ae496c1d345d279aea0ed0567280bf7f", "T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "cda2638a93864c07d040ef11615e3c801eb4b093b2b1189146389260ca163952", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "b1fa3c7e1abf533516550ca0848507bd4df09b6ab18a5f225ddfe470946067af", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "2a3707e58ae4b9d59e1d6fa5cf149d1d021a90f749976759b0eade9c433dc99c", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "8aec63309b030668079890b7f371c1a4ebaad083b393c9a53040cbad4dbda112", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "ccbc7ae08e03db98d0a1d5e30b2f820e4436cef744b14cea023dd28a85ff362c", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "bd9359b538b621f74321ec1471deebadb2115319523ef86e527e9e9771ddbb18", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "1625ed20bc99c6715b5c98e674df141c197d175cfa4b34acb363b6844801f6f8", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "bafecab6f3f598a7c54d92e961ae0f6766ad2a1e7f203f396e813d052d03b192", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "8329f76662ec9416f1ecadadb9861106f9d05146716f63e1e0e170ffa55973fb", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "0ef33b9e0f729a0f4fd270ff0db19b64a800e2d9dbb71a6f0f6be8e4ec35a062", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "160484149f946c5da3ef467875d9ece770a08336bb400fc7652aadb16b3ec971", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "3448676961aa14272a8cb19479de9a86bccf339b9aa135a79530a8de63a2d176", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "8e04a2f86ecbc6322a3287114e0e8371d2166ee43707be8635a463e6698ae99d", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4d44868cdb6079e858e6df1ab729e96fc90af0fa31467480ee2a563b1801088f", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "370180296eec655545bac24a6073b2a17049c60fb994b6b155b1964085b260e4", @@ -17272,7 +17272,7 @@ "T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "630440f06959876d5a4e4db0c08d2c5296aaf3e9cf8cf19bd7a7cb0ef5431558", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "d7eda03697aadf970ab7ef0a174834d7c43743c7b47fc2c877b0c57861ed9b41", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8e132c61cdda70f6c1293f75509f152a89e532e285ad84609fe0f03743e0a354", "T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", @@ -17382,7 +17382,7 @@ "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "597466195030ba0c1addd6574f3cc120a4f86471ade00d12119cc71de802ab23", "T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "007565b090b3e7b0e3902df2fa186329a8c443675fd5b5cee7b2aa7b650787fe", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "849eb7400b046f3d41a07bfe5a2387ca2109f45f18a9eb478e548070aaa32b0a", "T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", "T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "184128ffac7e2331e9bd4451b6c70a382c6f2d25c78bdd6e499211fe44511f8f", "T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", @@ -17570,7 +17570,7 @@ "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "e01f237fe21b7143a710bec8cd1dd992c0a5920f3e73d1188188ab0a759c423e", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "2964f66c82e5f4e553f3ca3b1c152e81692f7fea629fddd49ea6fe2ecac4cc11", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "d406db73992a659a31fb9711c213f7ace17d9fe53fd5a668adef5b7619f24758", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "7767bf6f5c55107235542da729394a732b134823049c95464e855e4e617c9bba", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4f8c214cc0e63d5bed3ef34c33b9b0b57a723b58a9def908b46bc292585186b5", @@ -17594,339 +17594,339 @@ "T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "baeba3cd590eda9aa9cb81cf8630b82a2fc17f85ba3db923de341bba80d06c31", "T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "dc26d4cb258e64500db5c890155c43fc7faa107653c849d3282e9c6b750b7e18", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "d97c1b3dbe8d0688bf19aa67435365bf9df5291d3b2344837e422baa023161f4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "99d21e40d1d85107944077669622c90ccd2ac827294120692dc84d463736fc79", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "7b1f6e40c023accbd4034ee485de69139786e5628ffee48953f78edcb01be23d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "dd07cd57ac92da0dceca4cd0c19205d38dfef68bd94c305b4b23bef5e8bcaa60", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3fb7ab5483348ee43b65c0911eb0e861a021df78ac3199f377d78729f4bceb8c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "fa91d2f1e75e5d771bd0d35310d3acbde316f83eaf1efaa1e234ee5f5b6ff7a0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2bf3158073c52dfcd3ef7e38c6af8596f4ee59c9d6ae183c4437d8c11cd7369d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5abdabee31fe63e20d4b08f31414f9a637553658744c19a806d633fd7e909684", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "c87aba48b2201cf89856fd5c75d09bdd63365759b306f1d07a9cb910d7de1eda", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "95ec2f2407ae9489cdc7c4b3b3c9298fb62722bf3c6a8f1545db281f8922635e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "88091f3e1b478391b2c8b523254bc0af2d1d7a2abec0e4033586a3ee08f81922", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "c1efefdd0b9ca9ca877f455dbd7b21cd31a5fb27d2f7fef841034c589883fe56", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "ad9627b2b1ec242313b471c9322241c2d3869db059461e48458c5e4247715ce1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "233a88835c5c4a5c1ba0e4a4ac57be8442b0128ad9333ad7d7734c914380289d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "e74c39477b4c2ace97a9fd3629a54aae78aa47016716fa689819524b9b120c0e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "db63918254fd92d827ff6dbe3656110c0aaa08d5764ae567172b99dc6850d7d6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3a2b539d801fa72f31f9958e3bb238adc6c0f8d90a6692f8f4e738e66cc6c36b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "97fcadf9f6cd242d90870bf4111b631631305f0c9ece2118023bd6d13bd9f012", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "6af5f8ccdb477a420c6f0b530a66fd3e7dd0de57ff989f80c4a4ff0832e4ce14", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "17ff7bbf5afebd8ce430010425513fd9142da3b741e44b4a7699882536f70520", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "8557d1d8f94f7d7ea619cd3ba5d8ee32187780f22d3c397e83483738b4a02704", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d71aa3aa23aeba39b3994f446aa77a1516729746afc708bfda7b933872107745", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "98af56454adea995360abb58df53edaea504ec61d7d5d2748c24ad3f68462400", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "ca2e0029c3924ac29fa0033e542aefec62d08388441aa2a2449d022394355dcb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "79062e5d33c9403a738f88c0bd0a6f4982a11ffb70bd3457f687fa952ef4c6ae", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "5c21474a26c02d7ea5526b0bb00ebce06273fcf0f25121d089fa840be39efd04", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8a634c9224351be7f024b3a5dc216f4a77e3bfae9d4fbc85a830f1d655e82864", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "4d618eb2949c2da21808c00ee6f13e575e3011e7028c42a0bb5d632f5baf5179", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "018a1b7876f2b6a84ab1761a5e68f38befa156d0f4595e174d6250bab6eaed28", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "dd877ba6a52921df25c693ea3cc5a8f0ba094a8fa92c2dfdb1a66b84e5d42216", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8c3bbccc8f5b15e2c62705195bb3033b6c9eeaf439c94b4737870475f2ee0392", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "d60eb1f8a36cf39ca7ed4d6bae5ca2685a6041a35d7872c27ad5aeaec23dbd78", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "3fda2da8b67e7c1c7e9c05eb32376360b0e5bd7b4f96423e7ac248804eae652e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "e37fe5e029b53434065c6cb50c1cbf263178e3caddbd66eef9e1ee79c8995f97", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "28307afb282c793390901a8066c2988cf293e2b9370f6e8c6f4aac29b0169fe6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "93b1e9bbe3b2b8905474adb32bd4173b33ad80bbcef954831e427cda408a7e85", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "538570456265e4019e289ccb9f834f41e2b5454896d921daedd726b3cba8b026", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "72c59a7aa3d5c5d3c77f7d3fb1a2c07a04ed0cc641427bad23e62ad05d06eea5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4a70e147e14b2662dec742808aa222dce36d09e76c83d95638831a92cdf39d75", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "c0889aa22da3a333502a34b7ffb1fcd318c2243c45c3bb0bb29e5bf202b7d3b1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "59541ee4f661ff5db80f5c237b5aa4a088207b94d9004a899a924e65a00e8de5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "0dab4c991d9483c8c78a9f617d0bfd7576abc664d39d7adbba0087e060eae74e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "b25a868da2d0f8178f86102a1649ac5d0a711f5deffa602b7cf98ab0d1b9f57d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "aa2993b7ae0318d0c6aaa2711d3be75bc6c6efe64c9e7834d4d97508e4464ca4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "8681fc9eba136f0c7a5390144149ce72428de0e602bcbc7e9d60af0aa4d7c4f1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "65e3210435798a58629fa132d1015fb3c6dd1938db18ea0c0715ed431dc5471d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "6baa5de319124ce295cf0c15b83eaf3c0a5864282f202c57dc06a30491c2cc6e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "b04ab9f8c2730b87020e3496867036cbc2f04ceed8408452028b9f0741775046", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "82082cd74502e1885102c14c3f06d669306f4677872c130daa794fbe99c98316", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "2acd08259708a1343914e76c89b447a003f838faf2e870f989fe7ad527de420c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b0f9d237787b4a7fb883cf18a36a2cd2340bdac8f4a6383f9c6084b1ca998d11", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "62b61e4de7e7fd239749181d43ab3d9a06b4a7c993cbcdb678077c2f239902e6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "742c2bed1e4a157667f3f81c7d737c9746877493889cef273bf3b76025a54bdc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "6d4ae1b8ba79f3629fb7d5506fd4ca9f7e7ec8ca8bdc58cd3a06f7a01c3a9bc1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ccbdb0116a6401c880649f9f3bae563e0c7033ae20b16a5ddb5c56be2daa91bd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "6baa3ef351d379f4f15ca960da4a06b1ca8f1ddb696ec5fd9030ad6fbf1062a6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d73c579a22f9ade9e5c7ce33c39736742e71d42ae042fb1b2fbbbcaddc089c0b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "05a3716e8ac78f0b5392103c7512cb4bc95d5be087144269051139063c3c8e09", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "2602a0a83c9b777bd7074b59edceaaf3dabda18667ceed49c8abe488a7b52cdb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "ac988262c975b58598a6722ddc385cfd7702528db352baab32cfc095907bcc24", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "433e8e4db8e591d4ce4865f94cd7917dad4539bcb805b1b72c38ef2854fcb26d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "19dd7a7c262570312cd876ef45a6003fe29d849dce0f4005e62b925458c7fc18", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "994ce3d260b8cda0b11532c5bcc8bb2d2b2a6a6d329cb464f8bc3919a76a8579", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "7fac9ed81c9bb7d68b28ba1daab6c3959b38aaf84a777a66df0a657e6c4da89b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "95ce2f7ed292760e5ce74fa4a9cce4190993d5248456dcbb81dc576ec2b61b1b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "36afe61a1169d10cd127c52843916f3d5f692384045dbd3c5f14757cfea8674d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "380dffdae7c97378226d052a987afec8d45dec82cdb134015fbabde7042b40ac", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ed43ddc1c3d8adb5cec1b53b02ed2e1d4268857a249555bc8f5acadc75769206", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "096b57f9dce63fc27aba56353f0b70a802f04c6cdb4791d73140c8f7139843c7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "dbef410f9e8ebf0dfec9d9e160f39a1b525ccafbda79651758c29c770722b1de", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "7804d01f74f301b459fd623959842abfce588e4d3734a796cf35e153b07337d7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "e519a89633b6f7958c9c66cdaa50389e950d7d08e5f7ac1d0aca564999912757", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "f768cf658b21eee220714bdc731a6a20cb2cad9773b4581ecc795ddf170f9da6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f5e45bb5aae1f007ece68303c200465631c48b724504e6b55879d38855a6ec0e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "611d726e7c30402a8bcf25fcdf0f3b14143ec899fb55ee40859c49ef04696113", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "b4ab2e19cafe3650c92f8a2c150e601172bc5db53dbde240780f23c786b40ae5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a7c8ea9ce76cddffd0137e5684edf9264eadde112d7a389a439341a382d17257", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "5ddfca0b649f66636545e4ff7a38fad5e93c72915c31f2385042b78ef8813cd2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "615e88e000e526d81a008f356cfea065e449a5f858d2c813803784a11b15b5e6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "c5bbd372949aaa135a7009bb964f37d3edd420a94eabbfdfe28a78a154215f3f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "6f4bafd4d10c29757d2a9a977d1397615c0f3a7f8dae05896ac36ffde824e21c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b7c152b60694ee668b44389c570020636566338c1c365bd4022c70ff3af8e876", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "e50b9d4bc32cbec757db344ade544c6cdabe4165ec6e14f0fa92ec872b34ff52", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "53b8c17d76c5c9c1414e1934cfe627cbfc47af33403a7a66b32613d0effdb99d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "bd3b9590b18bf383d53b32697b903e2f7d62a74fb4cbe5d490fe6a2f5b092a5d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "ed593c2dc9146840f105fe00438e0101d4711ccd558fd12ca7d1ad340ad4eb6c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "8ae9bd6f708d9236517b5ce94e74f1734a909a7b30aa6e5eb119e67e9eefd7f3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a823f28130922b9aa1d9a6567e01e8cd36e3630eb2f12cc702c6e8331f6a2c3e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "1e097f4fb41939cf6c989b03b3d8498008af0ad196d6f3578f71249370a57349", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "4131ce44cdd68e1e06f2d7907e5bbf096f567abf77637bd56ec3c60215fad274", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "3d5515b8e9aabff512f66a9084ae5f1fc743a455345ad9e452f276de616ef28e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "9e47816340a6890e0133427874054b6d6871ecd3f4ba1c33870e687fd5f223c1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "86fac7cf0e161363f2f3c4ddd9aa0fbdeabd76e21ca46e95d2ee53369f15e00a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "c7a49ee4f0c18e806b7a7b49243ece948d6d8c08837413d20fe35e702ac40671", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "73ae09a2924803d075d0c7ecaf705bc1ce9350714bb4c3a44b9278f2d8e6d14c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a0a106eff846809615261a5eb375eec116d9d6302c562dfc6280c2e8fa07f121", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "f9f034e3621aa5b614ce915f76f940aa4234f4db2ad90dc7ef88d0c8ac38d623", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "c9a1f72c4e5c0edb9d2a8a60c0b3db8c8ccbf3c7ff29bba48741478933f34772", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "f3e7112309fdccd757b4e2bc0541f7f96f880cd485fa9a2ea82658362b263b96", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "eab8fdd33e95cfb8a55ec46333a275d6684bdb963e5c2aecfe4a6b1740e23517", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "593343d7429a645536d2a1ff656a7b560f11a7d6a54fbc13a37d777efa0058c0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "142734eed3027e5b903a53738a3e39ca057bfd5815495c82f49762d801383070", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "0d447acdc7f87b253b395f0df98ab4a25141f615e0528c67403f9e7681cb415e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "7222ad0a72ca6379561c1635294ae63f3a0f6caf206318d3e66f2a11f53b1213", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8cf8d39b927ffdcfaeaec2b2dd27e4b47f860c222377f8e22e2016c350c7e622", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "da2e9a7db7bbcc46c5f028112c13e49f16ff623645da9269dc3114280340a885", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "58a2ddb12a77f4914b32ea1590ea448e70ddd93847ae1ac8a36fd5f2e60de9ad", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "d827283b9a312ce3360e5b9d20958e7317164e29bbfb29c20b255b86cbb79744", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "802858336808c12dbb9320333423804eb2d1723010a31a97dfb1f41b14da5ce3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "4796446623096f5316fac9de1281f7ab96b2935126ac6439083c9ff006974b2a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "9156addd7f6fd418b96e0f70f12da2166755392ec4ad90f9b0f868ad78fcb901", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "9f89c53f8f3c93f9545763c56f138f3bb8ba42283c89f3489cb8328b28a17f86", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "bc89219981166ec0188bd73d4c27fc46ea40b06dfaae4b2a0a1839fa4e1eed63", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "277c5b0176a56c2cd8899415157b5055934eb892f2801c2111cb3d862536ceb8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "4d8725c194ef3c27e2985b24dc63103e56ec812bc5ebbb2260825a7d1de4b84d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "1cff50560b91f44659c49f2342e4b07015c311ae9bb035150a0a54f6fc691ebd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "da309bdd6c91a1807432c98b8e04ed030325b7fda38f846721d8552971d5ab84", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "0f2ab75a2b051abbe987f2933ae6bfce990bd1500e75ec038c03fb797b1f8c44", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "678233965fc69c59029a5f3e93d8d9844855fa354ab4a010af825c14466bee68", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5c66788eb0246c7e5a4da94869cf0290ac41bf0c5c95ba9937e9e353495ec868", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "548abebd28075ad6fb2e359a27e5ecc59b865cdb8de201b2ce2a7759f630cdfa", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4599865cf6c7635da3cae6684a46def7b9180756b03bb0c89d9784cfe2b57921", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "9c85d0136d3dca2e89cbe2b1646737788f3b76592f16f5b5889d3eefdc3e1655", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "b2978beca8e718d6c5f866cb5823443b4a7d2010d7bfb52f955b7e6cef3a5aba", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "9fc00c9ef2d96c033a711b1e34521c3f818ef367a4e36fab3158f72790a0811c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "272d277db7c77de26663fce63665535259f5964a733e1d11c274ffc1313b1b57", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "93c8ce267ec47d4cd91828ac8ce89994978c822a275a8ba0345bc29fbe3f154c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "53fdbabb8f3d71426bf4aad7aef79bcb1cf6ab59baacc7f79bde379c8b0576d1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "a35a9d1375c40e6968ff314f4f4f9032228cf35211ef164f6446881e859548ac", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e1460e2a1b0a629c27e244e5102fcc8e68e3a4f4035d45518dd368662911acda", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "6afb3b8ad9316dd05f44071596bc723cb30275172d547ab9cc180b51d168af4b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0ffbf61c3f6e663e87feb8d39519643efdec5f680fd4b30f254314a3c767e775", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e5508d0eef8a142b368552b0a0b89545358ff62b9f4f29f2cdf098cb4d37068b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "2dc7d871618b099998171bf7ba1592ec0a547bfd9a8979a68346ffd4f5df82a8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3ef882df9208b45a4794b434d63f6c6c66f0baf88f12910372dcd5456ce67c13", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "7215ea8151d9ac93ec647637d8ade78c5a78eabc88309b20442f9029dc55f6a5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b711b6abdd59c56df91078599044edc2bc3b83e494aad6a64f0c6806fae84565", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3d047ebc8dab73d8d2b43518c859f32fda11a3dfe6f876bb2e80070d50d23d2b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f80c997344a9b8cbcb975c4e6c3700826687b6f7a0a887fd01625a6edd71269b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "f7cd587150ce4a96c5fb953719f6f35733d8a70a495777318bcb2afa0e54d565", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "92cb55e67de4527fc47f6d5822b690255c4b424ac8bdbec97d9f46c4ccf42b47", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a542b95f2492a73c1f3935dfa9e04aac332866c360bcc8847fc3019a1c5057fd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "ffdeeb24cd781f7eeb27712d77977ffc3bd3dfa3aa19bc1dc7cbd5eeafc5a970", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "50043c0b6d0d29380ee6653f3b6533d68fdf78ad1d9294dcb72f299c3a643176", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5f705c863a4b5d88dbdc804795956d32dfc2af1e2e8e53fc7504290010305a85", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "98ad88d9ca81153e82c090f2d250259fd7311b24520b9699c32790285ff9672b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b39ca9e0102d8b0ac76c8deeaf4ae81470fd8c91d0e9a4fd6efeb4a3878f301c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "b206c23fb9fdb7964379d47f9cbdb513a3f3508f8e0a62bf84fca6b62923b80f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cae94f0d67cd4203a3fcb4eea8cf1c6ec2b30628ae1ec067935cf052cfef0a41", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "706f86febf79ca01b4e5bd3d7f934f03d4f670cfd7145d6eaf10631c00d8b762", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "869cb5d5ddc5fa00e701643f83a6ae5b2c561bbdb3acf0e2a70132a0dd370ae9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "d42591426d4113b6d2d3d96e077c913c27dd816b5db03c20985080d52b5119c7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "a4700af3b9c883cf3247bef446f66d83dc86e0bab8a423a4bb3c20497ed43d5f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "17c088d7631e932b4a1002628ed638461d0a6595d308a40f631c92d0599d770d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "fb51bf32a8996a143b81ad795ad2f3dbf439592d3985e9325a50762609558e59", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "9e2eb9a7299f531d2fcc21b25c75cf50f602cb40233fa1ffe8ee7c3ced31b8e5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "6b5a7dd70e98a0fa7f2b9d374fef997b89595717e7d32356473dbf43d4799842", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "e364750f156c0d4995990250d45059b995d4b875ca2aa55e65a5c6c7ae407c5d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "278085028ebe966e00901a077197efa14e4207854a69b8043e057b8ab59d8e18", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "88c308059b4bbcb0f9d99340566e3b64651b0d199e9a9c8c428e4792d1bd523f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c0ed9003bce807494ffcfd1590e1730c0b341dbde34c06ea9133af811a0033cd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "38f5cefd1bbbdcdb481f7855f168d2ab1830ec618b180a9a1bfa9d643ccfb769", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "3c73b8bc1e314efa0dec2f4a589ac5e5ba762aee6572836710af6a68b908277b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "687f360bcea87c5dc28c7508d60f9cc0dee309a0ebc95e20cbc0225603ee74e8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b440339b09d4f93a3589590957be34ca747a4f1b5d59a73f372e1e7b3b4fe403", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "fb8e86e397e141c5e679deb9e6e7894344d6454aede9ef3c4623f013e156011d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "cd682f311bd259f446b5f09d14381c99f7283fe644e9f75512a9cd8ae4196309", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "190a0636d37f7a94e5efa3ca71259310751d1821838b3ae01267d2df55df8e5f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "19b1ca53e98aa0d106de7ef8b6c42b9b433c11144a8908d890d33c9c619972cd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4c3aed59d9666576589dc0a7c2588d22ba510cbbc83c5d08a160c66f72e54987", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "8b0b47635bcf7492609ee2228910266e546b24326b46a663b960eb12569d0875", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "3efea3a85fbbfd2dded48b2727622968ebffb85004c63ee7e9b31fa0203d3447", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "eee6d86fe959a259789c139850c95744a5a8bea5e921d1e1d9bbb067433d0b9c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "a7a6f47134750b822eefc7446e13ba0d215a8de5a6c99a3d61aea0a84a838a11", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "8892014f001c0d26cc8675fddea76be560816175afd6fbcc14dbf3f0a5b0e4a4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4b0e7c0dae55130432f09ca79b43922999148d30bbb937d00bd7be9e424070e2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "2ef8d2c1f3dbe0873df44b0486d03992cf4f14692fb30e7a0e07ee4c5dd9e126", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "88f65e6508200d7703e727e1c8d53e3b4d6784f129d9a3c51b916dfaa99ef191", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "3cbcfaf257c9b2aa84598c50833fb58f329f8fe404708ee6c5d2fc810381d34e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "063bce56397230b88702e2621bd7d58c650741ed6569144f34c65e6bbee72d86", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "cb7d243c60b932ca8589725823be06e915680a49e189859ffa99633d1508f614", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "6f2969b92e602ba46bbcccb0bc4c710b173248aa4e2930d44a2a5efafa6f0b14", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "6e5b5c048494e932e08138a659085d06edf3b3973c53432fa27de1a9e4e99c6c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "5463465d726e6009ab5bde878b3d2b8d5f7d22a71df2b6296b4bf64f5ca8fa2d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "18d117e3c19eddd98228f0a202ca5937393bcadae9adb8db6b93b61fa8a44562", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "4d814a56f84fd0614574641f2b96d5607a5317205c9fe3b06f38012f7f8affde", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1185c45f047c8ff396ce5e2e7637d4384e0c08b25775afec788cc46b98d5e158", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "8fee793e71c51240fb6a3822c8eb9b4ecd11782f249dd046cd847412a769b07f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "34cb745de316f5c711895f440f5f5bf5ebd88010d71663c03b0c13488bb7ba26", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "5983d3716baf336b6b450254f83ef00b2a264e2af7510becb3308407b4f6aed0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "aa63032283dc574faba21b99932bca0e23370745ecc71b76a2d897f7fdeb657f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "4704836e96123c24716692e61897055d1f46658ae1a7013dea2bfba9c65ba19f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "66fc94399955b5938a0aca57786f094506cc4bb256a0e8681f752c021bb8e244", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "54709ff5ab6a0f6c36740ceb057dfe53d8b440ab43e7178e666fe0825152f8b7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "8307991d9e8363a24fcb2d7646df5b0735c34414a11ba7072c424434fc2da0ca", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "6f9c84e314f3e87eb2d6e3cb8446bc50c7973ab557210ab2e0f283a9e624901f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "e6f5132f997450f7230f8ccf5c1d6ef185f023b7a5f6f5ab9c4f955851f52da6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "da346c5ad161f8e2ec8ce640db61406f498c2f2b628f5998e2465d3a423d669f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "551e2ca6ae53ba80e222e9766dd3f26b1012c3e80a1fd00126e381937503ce4a", "T3T1_de_cardano-test_derivations.py::test_bad_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "436ca53d3f6259cbdf4009547487819ea373253d8759c6f8498efff5ac66be65", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "cb7310db278b33590aed47fc9d28b5d8d963eca6b7e07094970c84ba36780e11", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "5e380e8b70db99655d1f2eaf5824ea5e2ce036c0b0352ccf9859c704e738941b", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "98a6f643de9b50952ae0768d8d0a7a2bb77f784f0285eae28c6bfce8492129a1", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "d4f4ba34143e9e9e0e694fc6b70f749e467e8f169ff271697669ee9da3ea38eb", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "24c1daaa9ca8b5ee6a58a44e04de844b7de16358342a7c05f943accd8f9aab5a", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "62ca21086bebae6f7ef753be71a3c027fb662f2ac71d641a980fb085d8a1e3db", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "78b646cfbf7acba72fe37aac627ed360da74b6b3dd8fead8cb22143380028d7a", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "7af0120404a887da5cfbc1af8f9080f560d15dfa14e925c34f3bd04225221c07", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "26d2e0eaae7eb05ab820240e0e521825a7e2399f0bd068751e8efa2f07b5bca0", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "34a791a839d2576d9d634cc3813b3387aecc6ed9e68bf385d567d48dee537af4", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "ca26c79694c37b4933657bfb69ca72e04fcabef0fb7ee98270cdf2d03504364e", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "01363b538ce7f8e6859d578afc731e32bf3a3657df13709e3c287d23b9d3ac9d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7df8af6f63cec9501869e3fde0b94a9c7798876520b7d56e83b740ec3742362e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b4ef59febac88bde44da0be3a9d986fca570ce540ed45c49bffd18ff45cd06c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "13dafcaf2ca42e83a99ae31b6e326fda075ed8889b2c4a8d5ddc033508da555e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "22d95b214b22a52490fcaa6146316bb41b64d5a8221c4a90c73742a6e3619c60", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "3e4f682dd87f67f4de1b7a8e88da763a05c7c0c080c2403e993f497cb49a321e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "33da9555a34a1a3923e76a45679dfeb3b25c62b7a132c449e3bfea6af9730452", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "2da3ac20df09de49273841f3a01d4194a10bda46731a111e4687423dea5c34c6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6b2f794098f1f6ef6c8fdca472384ef753fd6ab94664824ca101a20279caf5d7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "86813d2fb047b2dd61dc15f111f3c43657b70a54922a781a2cbed45e4f8abf76", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "74ef0885df8ee72dd8cb9bd5de206db5453c570699a6ee507816a65c33cf193c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "209a6468b3a15eca343c768090854ff47133763e23311e2ba3e8385ff2a9d7c8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "5909511f41cc24ec659e7a002fad6d4733a6f198cc8cc58d5d54eda74cc85b5e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "5909511f41cc24ec659e7a002fad6d4733a6f198cc8cc58d5d54eda74cc85b5e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "fc639a451c79702d9697161fe2895f440e46242a0cefad4379753907846b0031", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e848a69ce0b782978f3c6f8af253ca232f2fa67363bcd364602cf115007b01c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "0a142c9dd39b03f956e90b2e867c4673915c759ca7eb73245b4c92e9eaf01789", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "0fdec72608f1266b6557c4a8d515f65d5673869ed645aeb88f2b43cd744dc2c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0007d36d107afaeea7d6ed3a74202df62f3320b1743624c510285641a1f54f3e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "78188aaa2ad3b35b0f8a9a956da93b87d7de0de45cfdb3a5cd32be7b70cb9e9c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "067ff7a29fdc0d6b107684bb9c07c61f04aa7cdb31a37129c9d70cbf9db140a3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a32dab137c23fac337d9b2a991ed76bdbef2aaaa202326dc727fa5a25e2d599e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "4589aa5815235825c55f8f7fb5dd8d792e35d0a6a80e8e073bb7ed0b7ca9f8f4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0007d36d107afaeea7d6ed3a74202df62f3320b1743624c510285641a1f54f3e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "78188aaa2ad3b35b0f8a9a956da93b87d7de0de45cfdb3a5cd32be7b70cb9e9c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "572031151d16a19ef0ce44e277aa74952fd0fb9198d8928a584c77e10cadec11", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "ed928372498e6ced58aa1e358715591ec6175cabddafc0670b1a6e8b3ba90847", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "4fd5432a6e0f7dbb6ab96ff3a001bf26b404ad30a10c3268caf77f9b85854780", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "93823fcd46ee747be8c4d15584692034c7e621bb89def219717fb6864d4b2146", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "e2521c2e4ab6c55c0b6ad9da3783ff312721abdb9f53d39680fe98d9860c0ba6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "42750abdf911dd21aef74c77c9d354eae9450a011e9a3af81acb00e75c0d768d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "c81c4835baf85f87e2cc92f0b8a168344e581865aba1c453911ac723b55727b9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "012a955fa433431ecb3d76a2bc2a739ffe75968666e63535da8efa810a032cac", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "134f2d2784c01cb015c75cb99b4a329d5fc42b169874e279d68161423f4f8bc9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "9ccef05462f93419365be57eaf7436af548fa16763f065b53da07859a4c28938", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "90f6c1d177276831577d32924081db7093ce8c2e8bf7227ccd54ab14f63f3757", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "aa0d90504b752f681a13a25c35e24d3d26ce9f4fb7d9eebffcef7d6e639dacc2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "c2e209fd5e22caa557dba9085f995d972cba37b612884a4ddb4fae404302a49b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "d9245d2fe38b9374773ac0ec9aeea97ff6e999fc9c829585ba1567d432477d75", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "ae4bfd677f52903cd9702b9ed2852bb938b32729c39a008c0fd8acc732691690", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "898b2d966e4bcf53ecb7aeb1b90e06b02821b424dea524938aec29fc461ab856", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f5199b27aff31100ea9c3919806887eb4632bf751f43749b6c640bab273f943d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "55900955b208ebea8e451a2000fc1dfc7ea016c3ea55ec3fd4171dcfc20cb2d3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "5f0e82c8d3bcc95edb1606c498d67b538a5b8def8d2837588bb0d98c955d66a8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "4eef7eb07826182884e1cbc29de5171230f693ad6cb283cc1638ddd87789a45c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "20d0c33a21069f98bd6f9353c84b7667d17a565a539426cf50c4898a685f3e72", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "0cbb9d1ea90847542e3f588139a56f9f602d79106df894a3b8518f5afa15586b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "7db51ecd879f9be2ae013123aa9612348dd6393cb0a7214ee99f4f5292901599", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "673bbf8740f6a9c64a73d851d74a16edc57a8d7f3f7e598ff6c13b0328d737f7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "d5e5fbcfacda04d8106f0fccdd9b12ec6b4b464b5c6c79fe8826f46068da7ac4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "dcb904e77fe69e3b5db3b0de5b9515cf444a6a92960aae5a39375afb4a161c22", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "2278b37329cbe6a125e7e8fb8b4aff810c7ac9f080ee1f526a52f300b85dc7e4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "3f2cea582a6e70a5847f144156c83b1efc2c93f4c1967de8bd409b0066587be9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "e03cc0463f9d9be910aec777ee0984b46192af95650b705304a17128b6bb5621", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e5a14679f38acf4807833fbb0dd4214bbb5c29a06bc379349eaa51e621e9208d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "39f96a6c440aaa21a5dde5b012fcb4349c0de87e6358cc4e3e34cfa62935dd22", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "6a826e95a6e39602d8f71dda6f8f57a2d965a1cdf8787b65b976d669c3ef23e2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "4c392fbb3104959c4b24e7d838ce3d974ddb42e8e234d2b2a64a00c0083fc5af", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "13b9a445ac84410d6b3c7790880e7670e3de1a8297a291447ed3495cd35d74f0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "4a2430302c56befac6b4e3973b81d0b8185545a27551a569c6eefa067838c2d7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "3d62c2a5a499d709f34ad244fcd9ca90a0bee12f3005d2ac8904ebb31422986e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2d4cc179456f464e2b4cc74c83ae04a2ebc45ec217c841a71e720ca93f2ec970", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "aa5745866cdc55c72931757003d437f77d60e751e31acfcf4400ceeda57de292", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "a2e42d439a08be18aba4005f02bdd2e223aabfe3971e6a8f2bb894f545051a6c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6f78e51c3ddf855095d86ea38cb83964fb8e846ac9fab76d4f62fe60ddad924e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f40439e09d4cbb31da8b0e7299f5b749b89fd2b1ad87a95c2093d1f02d3322c4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f51298040b0718117532149a841b7f84035b9bcb41b2548b7d46627f888c51cf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a19436d3461fd7b0e3d43f4c20ca84533c708a36002ec93348c4181a71178940", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "9d3f8dac2eef578f067358f2d3e3937ed1dab6dc40031e0182b644a8c0d78c37", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "ac6aef58d39d5ad514426b0c0582a2554a604652419b56e5df4bfa1e0417372d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "05b2c1e50adb587686d0a77fd81b07d87a8d99f2813cecfa0d12f094807ed45b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d0343b52483cbe8e092959166b04d10335b07994e0bd7c612e60e13f0164cd2d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e71312dd3e094fd8aad49bf45c2f62053f49c8fc17dfbe17da8836ffa776850", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "1c04dd9d0529e7a34cfb2a20ae251308f2edd77c39895ec9ac626e647a59f2a0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b7fc46c84948f60303ef2bde199d39f3f4ad8e3bf6d714ef94cfcfc419dd26aa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "daa6a96cd27c9cc499e6fcfc9f339543325b8f28b7415de2d352a6ccb115938e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "e6b8a5075aa700a56e2f5ac3072bb4e842d2d1eae0b9af2bd4db2cad7fa1170f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "e6b8a5075aa700a56e2f5ac3072bb4e842d2d1eae0b9af2bd4db2cad7fa1170f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "04954034cdd511bd96538c60b834d1d6c6e0908145bfd4fdb737a75469dc9521", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "968787cae7504b6276f999a1709394dffac4d0a9aa48282ef17f96236f926b53", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "968787cae7504b6276f999a1709394dffac4d0a9aa48282ef17f96236f926b53", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "6e5cbad8ca8812b829a7bd670c6f8d1fc91335b99c053542289db2550d64f6b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "0722a6924cb17763ec6cdb6d1051c11ec8199a780a34ffa61a10bc88200bd724", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "3419a8f9d185c6eb26029e565d459843b211885e8b48ee32aa19c05ca52adea3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "8905d8486874c95801089a3c27ee976ae3f20c54b63f68304d2823d6477002d0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "91d40c41ebe715d6b574bf477991ffe5995d1a3574270b03301aff0e69736802", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6fb953a646265e516782f0fa6fbb2d057ce68e6b37615b2f17ec72a954d5cff1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "5fc14fdcbacab1b4d0826bd61870123901daca956c7961d704d93ebaa6bda611", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2c9088c9e672c1b1bb47e6ffc086d5be883cf05d8d11d2a94adf1fce595de328", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "dfbe592fd9a626c60afd8bb71d8666423083150bba7b636b1f1cbc272887c48d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "c634169c6c28c5e6d0b46322c65cb1a13331a344909f103044ac2e9d54a700b7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "7df8af6f63cec9501869e3fde0b94a9c7798876520b7d56e83b740ec3742362e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "2da3ac20df09de49273841f3a01d4194a10bda46731a111e4687423dea5c34c6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "bc01813e3e84c3acdb546f3bb888130260c1a8dabd008f7be3e5d76c90a4f72f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "0ef7136621336be72d7cbdaaa12d9b95bf179008b9b11d05e22829997b862054", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "0ef7136621336be72d7cbdaaa12d9b95bf179008b9b11d05e22829997b862054", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f2a9468c3723234585cd19606eefef4f563fc305322a048b7b5ada63484bd600", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "ac342802d0934e35f91ebab032a6efcf573a701739a8d896071235f0141b679d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "254135ab477115ec54c2e72ba6f089560504d49759eca846fa7034646672515e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "832543a113534fb34eb527be8ca95a61537579b76a00e17a7081f028565b9ffc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b14cc350bb42356de1b2b1874d186efeae35bc311099018ea18b962b650114b7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "5b8a6c0de780d85cf9315ceba9c1f5b71ad3923ff97dd8201cb2d2ff3e883979", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "534f2a9e4ae7032149d7ab870eb40484ec277e3d1885011287ac4bc78b109ee1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "b43dfeddc10ec669fe781fd06a1e01d07d4e9c3e4cb04f85835f355536fa8f97", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "b43dfeddc10ec669fe781fd06a1e01d07d4e9c3e4cb04f85835f355536fa8f97", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "b43dfeddc10ec669fe781fd06a1e01d07d4e9c3e4cb04f85835f355536fa8f97", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "b43dfeddc10ec669fe781fd06a1e01d07d4e9c3e4cb04f85835f355536fa8f97", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b14cc350bb42356de1b2b1874d186efeae35bc311099018ea18b962b650114b7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "fb7c552e196bc950c4756bc773f48405dbf6cab469619f2d498cf774ead6d8c3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "b6abf5e1aeb60505e5eebdb3018bebb1a041a56c7462b4f67e56428e011ec516", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "8a93e8e1a1fd474ffca4096c3d794b3c509825f7fd7933fcb019899b4dca0dfe", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "cc41384f435df43dc3c58e51251af2e2a99b1a76cc33b76f0bce6d67c3fd1bf8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "bba1f6fc9faf4df3c35c77b604f052e5f13b6eb5eda6948c989e60367810fedb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "7d067a0fc54c8f48ed0affd7e0c57d43b7f71cda05a43bfbb49abb8a1dfe07dc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "b8d313ac126f8fb02c339a4eebe1fa95c72c576033119e37eec9b577c56ccebb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "af0e945859bd145c20be0df3ae08461edd8736b2c06bf77f1542e1c6293a2e8b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "40c8e21d666bc308d41716996c8d2877fc797275d747aec7d67e974564cd19b7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "f91135b127f69f5c6a9cef6103eeef7c76deeb7cfb2733bab3e04bf7f4f61ba4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1db872cfc3fc6d5475cd485ee41a2066a031708aa37ecb81fff1eb81acfe85be", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "0ef7136621336be72d7cbdaaa12d9b95bf179008b9b11d05e22829997b862054", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "e551157f24e233ab6be99df6116b94cfdaeac4f1ad76764db1d13da1d82e3649", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "94e47fd9c5de85e0901e65232fff3cf21415c19e08682c4d53bc367ab7f7303c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "e954ce35ec5b3f6c2eab1a4e2afbfbfe74fc2c6592490dd04e67848b9714ab99", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "b7c928a02733e6776d9347e9b35f724514afe155a7525a51e79eee27253d3b28", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "68a3eae30f0309affa6cbe7bdbb22dfc129f20c92d0062a4fbd5320103dbc551", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "5281c42dbc1f8c28b404cc0d9ec60ce726b96dd0c1b9eae686c033e129b27545", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "06a7032b3940d3741c89c8b42967d5609ff1928724fa1a3b86afa896a52ee8a7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "bd7932f1d0afdac28fb48b68f8d1aef99787b786ff66117cf6c5fe15745b7bf9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "b86feba1a8a91f97a4581c607e4f20d3cd802992bb33e07e4e4ed778d3e4947d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "1abe41e56e75259b9b5b92740b3657ba8c08020880ad32ca6ca82d53d086e727", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "79110c7fb22dc91ae3a2af549b71686aa6d5c896130a4efcf6492bc938a45c52", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "7af7f343d183ccdbdb93a23b0da7b7d0d52e3d68ccc3e8a08b8da640e983c123", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "ca00e64964a5f310c22870ac41088449f2d0434e019de86535ed146bec35f7a3", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "21399033b4314f72830c7e601281dfd7730f0e33d7886f3433018d41e573a3e1", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a47d9f4b753b2afb7ba7f10eb80567987515ee66f0a8cb360cdc11e105967e6f", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "47a4883e4192a5e2ad9238be356e6ac07a1f39e8cd843c76a2a4fa8dbaf6a2a5", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "144f13cce75c89dd11c7e17498d6c5c228bac517efffea1c1742b77f5a796875", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "d7a55967e80668fea53b43c748ef6dd375963ce2440f8b0707bd3ac9f8f151d7", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "115b7c545930c124797480fb1a93123ffdcaa280b7eb05178a919ef610efa6c6", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8c53cf01bed2b3c8acd85d1b987dc71c8de57d09ea3c6a2b6674038244fc0cc6", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "3e49ca223312e1556971012e3b1d0e5bce488fb564767d2e054a41b8fbf87713", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "3b390fc0a8a26033414524262e96f6e1f4e5ec68fbbcccb2cd8aa051377905be", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "45980e258277fb893ee721b76157ebb5a0380b63c05fd6a95d0dbdb52080e3ef", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "61f438c8f976da4df60ecd91aa3edf827f289f6b983b0047fe37235689b1c911", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "6f17acc81ceab31d6f740a8024bc2241b4e8c1c5b494003b81fb04d37a3b1028", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7760f1cda693a220450b0ddc070ebf57fec1097381e881811c06a858e8c95044", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "69b86a3d6a9c54e782ca674baa267618af840cbfac64d4374541a78b862efd59", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "e8978874f8eeb5c88c7cd7964f6285fa1c755726aab2ed7f19ecaab7dd78f7fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cc27394b1507749a6310466fdfc4c92fa980098d74fc87ca53bdf7cbebc2be55", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b5a582255df2e43abb708ceaf735be845acadab9d244f265c3604132bb27dddf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3b60c2017af32617438bcf49f4048036e237c0f6e110cb252936811dc7c650d4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "845641547c19960d515d2c3cc4eb935f2d126a007c9903ed3b7b5efc0a0aa2f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "2948e54648c66d908f31aea17af934bba52ebae6242fa8f18f6e4723011d3d5a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "aa06418b3e865758f42eb81fbdd88d0dc685b373360e54f7a3483e196f223898", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "23c2c78d959e2b3576c8679b3b6cbe10058bbe0684e0f7c7a6f153fff42d27da", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "c70ec8298b765524b4ee9dcc8d78abfde6dec75c73c157deac39e4f1e3454b93", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "41e30717ad9435c0783bfd80bebd1c71e2e68a82d9651e6d88728fdca898e575", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "41e30717ad9435c0783bfd80bebd1c71e2e68a82d9651e6d88728fdca898e575", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "ae6df52baa4a154990473446583843f6effee2178b374c6aea2e4338bafcb63b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "7884cccb5fd24362f646b138ffa69eca11968d0f58fb1a4084a8210b5d80568a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "abd3d19712ed5eb43b86556c49a23aef50449f062a111e406de7372838eac6f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "9eceb8ce7890790c2ac2747f4846e91b1aadf55d1be1b46a88a94b74a4783bdc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "20f6ced7769c951ed37c9cd395b590160741d8e1610312b710dd445b3ffc15ec", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "2f5e3c44966b9b9b793b66bb4a13b440c2fedb39448aeb7d4ed6972b5d13d425", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "8e334d455f4cfd8008f4acac1ceeefc256ac7de08fad7ccfc6f571eee6842bf1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "8cbf1f3160e62a402a68e67f21efe0ca6959803749af623841d74467c849a0cc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "aada10788299783de98a67d3446e0584ab3365fdd14d73a1e76852471646521e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "20f6ced7769c951ed37c9cd395b590160741d8e1610312b710dd445b3ffc15ec", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "2f5e3c44966b9b9b793b66bb4a13b440c2fedb39448aeb7d4ed6972b5d13d425", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "7a50c27940033b08e67bde1809d2552af38f25e82a48255897d8190b2759c38e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "12578a4345cb4a8836874fd91f916e5689c010f972e0e64de417011a35aec655", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "425a3bf9d3a267196b5f36e2b36ff18f04bbd06711af0a2f460268826dd2af9f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3b64c579eb78aeb275a1a7b184f5fd48944b485727c52d6d5e15dfd6584c9160", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "38cac09d5e71cc7ee70297daf54967b6515ddfef34741f37c549c5bdfdf01224", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "c6897b993503a5afa8c6cf0483663a1bd9df32ff08577648eb53bf0252fb3520", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "36ea0ae3dbc4c5c81b60ed5782742d808bdfa3fdaf19e298b4e87f894ead3d21", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f702fc922b835e6d6675d5384e40b8afd62333790f7032c0706f7462ac10dae7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "50d8adfaaa31d03fb961f2cb6da7260cb2f043f63986e4076e45f7077331fa8e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "cbf74f4a20209fab50996592cf0d33c56b922188c5976d2d9a7285b1bf2a177f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "fd51b909c5b68c7c9438d0378d04e57d1a4f1e4aabd88304bf39951e0a6f92e3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e49554a1840d0766cac62df3c16c72bfca7527f79b7844b1b2c5e2d834ec9578", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "e9de367ab33d0e702ddeb1b7f136246196573c97bbff9cd239b16b15ef59d067", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "53ffa7bc2ad9020424474fc853100c8d179ada4b8a2ac16432123549a588d2f5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "3c01a7c8ade3d9c0cabe2f4e452f3aa0132999d218ee877a9abc46a2a305b469", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "60b25a82977a519b97818a75ea6ea6fb7c5923a399b04591ff247d3f63c837f6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "15fcdd0f44d67b4c825e8980103a5ec8d1cef5007f1535220ccaa235967342e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "1cc1ddf00ca12064f9cd6a0653c842c5d440ea96d7e4c86a3c823beac2f5219b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "8395d1cefe3adcdaa24b5fea5f82b85397c2bdb9cfcd2e52cf8a19eadd4717d6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "a6acc321c82123b012df3aa3659b656de47d638d09659eff0af8951784ce50e1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "26610a38b0a7002f6e23775414b1e5ade3d31679e453c3e92c4ddbf8e030eea4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "4805fb4eb36e36482d307f8bff4f127ae5b45441ad1b7e029a5df3c4a715d3d0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "3761b2d4ff0d8489b3eb18e9edee8eb38620b9299a380e1855573289d80e9cb0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "5f5d9f7e1ac4db4c844e090de70495b3f6a9a82b7efc1c0d6f13b9ea3be9aae1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "26b53e7b72caeef4c0b83183c29241c34c47cb6fa8e82714d080c0bc2c4a77fa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "3fc55d8252cb4bd96122edfd60dbb1a1cd18f8128ae43ddb73a34fc2d05b0f1e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "874843d0ec1d4daa3790155501856db508273421406ece1e29507b050d459a14", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "25451270c3254b5e52c9cf7ce8698670f7635c48069c50533b0a8a2247ef8491", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "edcd97b85186459c5d2ecef0f92c66f84b87126d6e81dba0c9eba25d75492209", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e8b7f0ff9cb68d34712b05dfe8bc97098b0849deafaa0fc5a76efb99e2780e2e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "8463c2f7bf1394fd85e4dd7a57148a3adcaf38b0db43f0046649b77c72b064c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "f52beee973120e3ad8d0852040174b541705c818e7f44508d63762e408932ff0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "490c7d6a02246747ff2cff807d59d0dfaaeac30ed7843e66bde18483f37ba243", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "660de8dfc53c9afe001a3d7ec1df64ba3116aa93e077cbeb87366d96c9fa09aa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "a942698a7c99b9f7a590510bcb568a08d9fe06801e90381224637b7feb5371e4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "4f2b9acc9820f3e1b1eafec4d47f3ba761a3a95f03e538281e3d83213bcc3737", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "861b00969221a2a60ed49bc549a677be358c1326bbea972ac52521048061e4e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7e3c93955d8e3ec5a17dea14e057509ee56ae2117d6e28d8bbcd8244b4839dd5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "9209c982899ba68737c6371bb834a9eaac6bd59260d96a56cab89b8bc7d24569", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "9ccdfac9e67d32991919d88fb32e2e968e1f1f16bc7564f01e18604096d3ff8f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ce3cc38f35c9d6068371f452545823fdede3b6ab70ebd5c20700b8b0698fda6c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "41fe3ea72e1d9a32f00d0e1da15feac806d633e0a6ed1684e0476532bf5e6972", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f31c7fe9a40ce6a2a1175e534d99e4eb124f7a4b6f26d80b46d5676d702dac1a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "a661f7845481c845643515279b3e5c9b2f512c3213bf6113ceeaa987208c58db", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "65c1f2cbd6c361b7c77c75fa9a52be8bf3d31a8c5515ff45d7d4f46af1abb1d6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "c374e2370c5cd692cbc7b73f662e420ad791539836e1f0f270a6bf9c91a59185", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4863517c49913983373454e498db4f3b99ebefb0b3205406145b02672f1311c9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "745c9acd215f80d3d0f073af2d0d64b070b00419d265ed2af66514f403b40362", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "49cbaee80691a6790fabff0346eeabce290222da7dfcd70e6ec94d33ae92318d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d9dc3fdf89a56393cf21621f9fc972e2d5c4060d63aca362af406a18b780175a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "fbbfff49beac4fb83b37385c956421cc3b17b9ea8cf58497db1463321fbee6c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "a6fc135f45a9a3a721915f09919f10650df6761cc2689ac3fe8439996e700cd5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "a6fc135f45a9a3a721915f09919f10650df6761cc2689ac3fe8439996e700cd5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0c85cb94d1fcca360c22a845cb4ed8d31215f4451525a9c7119d0b6683312c0a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "85e98e73a4b7b73d983278d266323f330b4fa981445378a5468cbc3f9320053f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "85e98e73a4b7b73d983278d266323f330b4fa981445378a5468cbc3f9320053f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "fc2675d20e17db5ab141b4a7ef9fee53a59a5bc499c2c6c823d9c4c54095ad1c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "57ad8ad60121d88a94a83911756af1029be524f1abfc069689ede10e2fdf03fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "2a197e834e106cca07b3fa122e46891280b1a2679555031947ea9dc5cdb50abc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "eede774fec34531800275d869173bf97c60a132002d9cb8f6ebf9ab5c003fc27", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "de8ae2168992ea50bb318c78d51a399bae87d283f3c6c60f6791d86311a0e24c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "ad4101591ed5f26078a2697da51f87dc931e59278e52ee84786f47a56c1f252d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2035aff7cf7ecc921708e09e1d48e4a6fd5c73e82730c9e91a1ecd451a1f8253", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "89cdde39e2801dbdfeeb838448476d128dd7a1987415d766b4c3b592c9065283", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "944e428f5bcb65742f14babc467cd12fdd5d02103f0b9902bcb53a56f08c265c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "7760f1cda693a220450b0ddc070ebf57fec1097381e881811c06a858e8c95044", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "845641547c19960d515d2c3cc4eb935f2d126a007c9903ed3b7b5efc0a0aa2f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0763f07344dc00b6d122dcecc5988a42a802ecbc2cf01b5b0a3245506541b451", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "c3fa783f98eeb88821c33ab07c73e8297c850f48f781a9d7872c6cf2117df5db", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "c3fa783f98eeb88821c33ab07c73e8297c850f48f781a9d7872c6cf2117df5db", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "62b181d2dd042862c12241cb39428ab630c1dfc06d07cf4a0e6ec8648b603be7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8dc087db2ee96e81e06c36c98b52a76b2e581f6138351b85b1fc2f46ff93b3b1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "839e2dce1c7b5221512f2ddec3e433aa0a3ac02ccb66604292eaa5644aec5e57", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "78bb0c343b0aa49bfd1b0dfb68c9780e65f0595966e90d32d1ef0e774c8e474d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "26d7709c75132c6758caee2db4e4b81de18dcb8bed19cd80f9fe3b35a283e1bd", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "79a201b629f372086e613154b9ce58258654cd65741869712c40444d926ff804", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "5adbb0b435bbdba45ce36a0fc688a9300079ca6260206984249e0a5201e00958", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "5adbb0b435bbdba45ce36a0fc688a9300079ca6260206984249e0a5201e00958", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "5adbb0b435bbdba45ce36a0fc688a9300079ca6260206984249e0a5201e00958", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "5adbb0b435bbdba45ce36a0fc688a9300079ca6260206984249e0a5201e00958", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "78bb0c343b0aa49bfd1b0dfb68c9780e65f0595966e90d32d1ef0e774c8e474d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e0aeb1b56d85902f820165f5cee4351152fa38a53533bab13c653ffb00a6ffbf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "7f5f47b4a8084b6233b3df418fb9dc0284e62d32328523fc37a132ccd7cdedae", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "cc763e2129125e3f791ea9cd6273eac60c731458602788687dff765dd80dc611", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "c009d8e42b7ae0086f2f9a61ee0df3c3a6417b4fcf0cd5e6b4b4f894aaee5997", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "6427a4f338c88dc34052e31fbc0af542c9094191ada315da890ee6bea560bd01", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "8f8167d300f17f116b0c6e437476550e434d35bf22a258de57d8666edc40fcab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "02a11911249a9d3ad7ded40d304a96c419452f2b5b3a0d25693e80e702150e1d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "82ba797908f13f37714f0a42c395d96141ecc781fed91a22c324bd3cd9a6da8c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "8c108567108a9306d2a8e20c09a8504d1c3c4b8e1929dca1867aa0058ff5ed09", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "0ed259af131ba03f77e549711c7f3ae0745899a126f53e2b565261777cf86bf5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "c4d22b177c4a6028dfa1a840c71c55c81a0711d95fc3972ea8bfc88bad88fc37", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "c3fa783f98eeb88821c33ab07c73e8297c850f48f781a9d7872c6cf2117df5db", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "a75b309a16fdc48cf60bbc72050d6fbfc75144a2204c92f8ac218a2a9f035e0c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "09e829a482ae2c4c0f72f68594fa3bf6d1828b3457d02c4bd62cb629ee952a30", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "0b6b072f11778c89ab318a941273ad6c8d839a6a7619501691c3ff479ba3a948", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "79a7c62f18bd12869eb2198e1f14307da6ed04372ae40b56cab01af46743eaef", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "be6e4c8c00cb3e3b3073be4b5cec3c7d519213d2eadc6eec76e0b91e39984b21", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", "T3T1_de_ethereum-test_definitions.py::test_builtin": "913e346b05c16a63a19036fb79341c5acfff6f9f179c834d9c66c50b8d088b02", "T3T1_de_ethereum-test_definitions.py::test_builtin_token": "7507b7a46d84fe2b24e43858c2375dc6659327249c4da36fc31b946802b04a32", "T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "fdbef8af8f1e3051bc2e063b0a90136f53b619c8c15ad4bb3455732195dd725c", @@ -17965,42 +17965,42 @@ "T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "bf81d668b56da3de8a2c52dc65944599ef99355dd753beb37dba237aa751fc51", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "34fc7ac0a8f22dace9619f227cf7772c15bb4fbd2cafa09b337e7104d8b169c1", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "d10e86dcdbcc260c9ce7b92532a889624a910c6771cde959d2ffceec5cb61072", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "eb931dc383b8f562f6cb355d445d793e2b8ff94a6387fb894689431438d9b521", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a1e35f4fb9fe1d4371ba75e979ccf420926b7ca21ba706191f509a8082f10939", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e0a282d3e127bc29ff0c16c0e29bda3e3c80db11322b7d0fd6e96c8c6defe994", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "d3dea63489a186eb18876c761d65c52f6185692ea47a8589bfb4f21d55415a89", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0cd69d60ec183b58ed86babe17074cdb07413c3cc979a2a7b4667a48b8c2ec33", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "80f420162854b7a2358f7bd74d4484931ef4ae0c895760036c52f15c52280437", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f869c25f118014ddfc77dc2239564c131682313b442f8dc06a84d40d2f199e45", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "395edec4a2c15d7275de6ce04e02c4a8001dc1826a731a28db5cb642f3afed86", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9ad450d005d34eeb0fd69e2ec52d0ec2975d743fc0c44398f697a542a260a5fb", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "21e7a5effc3b1bf4d3c9faf59a40b747cc878576434583af71e41276b2f72752", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "6d71368fcc6765bafc808730e4ca24f685c740f4cede4f6ba8a5e7c0c75398ff", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "bb9175b613fab2f47e85a3cd9f07e6e231796b630510a6afac9863ccee709b2b", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5cb140f6d9d3f49f25c360402994b7ca12cdf34d0a5aa66540cd105200d79a69", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "47e03e89c2214a6db682dffa38236c2e07bc7d0a3b9c0b63b604b42a3f0f6993", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "7e42978a18b1bd440c494582fcf1ad53c377eb12b63bb695a7b6b6c6df231f8c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "1c8dc5085ad940c1b0da068f4d73b210317f25a03844dabf4e0e18707b769289", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "58bb77a80fa52165d0251c6cab1926de9db93c32e1f553431640f2001aff3dad", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "292d8bae254887fb2ac10fb1a97cc17633991f3fd48caec265ce1d5c146d0a7d", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "83f21b5fab1d2db7accc04787cc6af64e402a34b44d71217c4fb4d8601a5f9c6", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f230d08347a2c4c4629b9d5aad3282e8f23294a8a2de59492712fced32e60a5d", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "3aa712363ada901e8267c11878111c05b9fecdd7e6580ebb5185f24a99b735aa", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", "T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "2c064b32e3573746baa6f3d4b1a286c5a299186184b48a1abc4149c6e9888e76", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "a3331b5d71adade7ea3a347258ea27faace9d0c0508dfceecea102b447760756", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "79c0c9620415515d8043786575a14151207f3ef41bba4afbb0d9773d94a38c27", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "180abee3652af9b96839d63e568571be9c6d48bab638fbf23deb63b8fdbab29f", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "60222fe7ae7f5446d1c2f3bfb8df169f498bb769ba4aa4da995302693fb4fcaa", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "1643803ae4840696b4fb023a9e852895fcfa8dbf3322af00f832c10a373db512", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "79c0c9620415515d8043786575a14151207f3ef41bba4afbb0d9773d94a38c27", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "79c0c9620415515d8043786575a14151207f3ef41bba4afbb0d9773d94a38c27", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "79c0c9620415515d8043786575a14151207f3ef41bba4afbb0d9773d94a38c27", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "eda3230f650bb0e354a8176cd588e221b567eecf76e6bcb1bd72bc796a43096c", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "3616f33677ba59216defd8f7eff4169a40f2c5531864a9a8d03d1bbdd718ae80", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "62333d9cfe42a4c01fecd82a5901f0a1d9b09688753675ea6f29a080ddbe3c83", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "d342c97f4781bb98d997d32ec8342c890527a06d6b78348294df7ab2b0111940", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "b13eee309e9d3d5082f06afe81ad5e2098c9f84833b7ad57ee13396bcf8df6d2", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a55273bb0208d422478f9f094811026da0333888d209a0cf03887fe7db2a9e18", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "62333d9cfe42a4c01fecd82a5901f0a1d9b09688753675ea6f29a080ddbe3c83", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "62333d9cfe42a4c01fecd82a5901f0a1d9b09688753675ea6f29a080ddbe3c83", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "62333d9cfe42a4c01fecd82a5901f0a1d9b09688753675ea6f29a080ddbe3c83", "T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3e21871e3170977ab591a71fc956c203de419b26cb7b30dfc24d6cde6f00af90", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "83daa88715ccadb81e8513f89e7ae312c90d86f3086ce7fcc434361250e06ba1", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "9cf339e92320a7b1f0c5130c3ddc3ea21152ab6bea31dce2b33bca2ec0f22cbd", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "8e1ff037f2e04e12049ea59cac5b2d9f051f2ebb8ed617b729d43ee585608a1a", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "2f1ab7d7ae29e994427101d4d70d753764ec2a218aaa1748af3f432c22daf99e", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "329cad75e4cbfa929419eb8785ad0bfbb5736b86f88506acf95ca4fb1e5f9adb", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "d256f75a041cb9ddb8d7ee7913da11f3ea29b08466e15f2f1bc38717e7917681", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "7a8b4fb6de8988c006fc16ada212e7c76d12344e9fd645873facbd459cbeb9ac", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "601fb223c18adb1f9885a669f31e56e0b313af2d7b3863c9b40c446ec43ed069", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ff698f748e992c45bb226c30e7cbb91c96c6f984070daa0ccc67352a97fa97d7", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "f9c765c0688231bf5eb798c240e3fb800f8dd7282b68e953b272798ba382b75d", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "c386078ffb8ae9ea62079c41c49c88b0119dab880787505b65df783b8a459545", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "e40cf2c945ef60a5fac6cc66020c1a962a79b05b90ad43467fad24a4121da71a", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "b4fe9a037a3b17af4d675dbbb53af2bafce57b0c693e02f87f8bab6b29f24367", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "cd0da74faf776c05ead27c471d81d4aa60ad7a86bf15b157f1e53b00bd5d4ac8", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "0b889ce8a52caa36dbac31e43dcc4a73de06edadf74eb185f6ecb794a95b3eab", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "306098e6b37dacc026801a9ff256a84295f6d129aa7876d517ae10c758a13b4a", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "4ef3a2bfb85b8c55522390f47b2a5b571e2d1aa161a09c5852a3562e19c20b98", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "9c868efc8fe699ddaacea23455ebf03056b951874d75e7a220af36444be6e765", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "71f038f6ce458b1654dbc391f51acf44fbb1b680b8ae66a973fedfcbe34e80e3", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "2bbd3ebe85f182556b9a0236deed89a8ff60977aea075f56dac051392ae46c82", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "43ee1724fc09b5df73f116470a665b8f53eb15997dc0c784be76006220be5347", @@ -18013,104 +18013,104 @@ "T3T1_de_ethereum-test_signtx.py::test_data_streaming": "e41460d482a8d93f8a4501fdb4c9c7b81bb69751a5bab4e844cf3740a8d007cb", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "a44b14013039db7c1a5a55ec77d8553a67fff300b00ff18adf32df61289b2440", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "e36c67b1ee47c7191477fc22595873ae12dcf2a31f0158c879e3a7aaf4b318ae", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "1c9fa14a6537ca34da6dc915037e216fd327701655f54f9b097e60bef818e62a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "e36c67b1ee47c7191477fc22595873ae12dcf2a31f0158c879e3a7aaf4b318ae", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "535d36333ac15fff65639d6685cd2e6d8314057cbee7dd4ec48042678e1763d2", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "535d36333ac15fff65639d6685cd2e6d8314057cbee7dd4ec48042678e1763d2", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "afb64dd73c9fe092c7c07357327ffa1afc8d882bb162ed1e03c13ae29936568b", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "ddb9674a5c1589ab5d7190ef03f63e5a9c3d660fb15f3f3ce6d7b64689719dd2", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4d83a5479589eeafa1eaf2f0c189841434fd1c4fc04f3b8c7ee3d13d1873d40d", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "33aa3d48a19444364b7c55086784e6ca3e8002810bbf22ba45944d4214476fa0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "7169370241377b249824163d17d582e66f780692e20d7e6e5b63ae4a5c183749", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "15927e1bb1440dddc8d57e27a826c9980f91e1d7572bf89421337d73d3bccc7c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "366ef6e3a7aa92a23e1205fb2ebc56a838614e661f41b8f1300572171f2ec840", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5fa2030b11a0691faf6a05a38067d595c08ad218591974d757fcb71ac3e6d6e4", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "69808960d98925d4450de03fc46e352a27ff9ca29cec86263154336ff54a949f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "392266a08822e7a9875c6c356112222c3d05fc0a2abee72aff1af758b8ae1b39", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "1541efc60034aa2e13ca156cac26110954b7ad1f993634ead580592a4f73b977", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "392266a08822e7a9875c6c356112222c3d05fc0a2abee72aff1af758b8ae1b39", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a04412e9b3119fca5d4e4cbbdedc2d3aaa427676614ab4cd7fe5e7b5a58fe0fb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a04412e9b3119fca5d4e4cbbdedc2d3aaa427676614ab4cd7fe5e7b5a58fe0fb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "beabf0e142722d25d1cdd594fcd33e613d842ccbfe26ede259fe3488010fb220", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "fa93e8ae88dc55f318850affa9b6dff81bc070eae41868e7e15212f8674ad2ca", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "d3db65bfff8b8aa641449d364f9aa1f3e90589450885d70374855a477dff9cbc", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "45199c33aebbc65a13dacb74a007808a57006d9a01c4fde5deda5d010341a04c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "7169370241377b249824163d17d582e66f780692e20d7e6e5b63ae4a5c183749", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e9b59537fe4ffc9b222243bcc3c89800d6f179c66bd8901fb5d0e1c95d74618f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "535660c11637d3387ffe070b4265f7bb5f41477b17b60cda1d8037507a947809", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "498769052c24a333b2189f1c2946e4d9df6b1dfb10a91ec2522a8e0cfc2553f1", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "c5f46fde3b21a5757ff64e4a401a4ef23df04df9ba8b0c4e10e9b98d51b134f9", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "da3b1a31529e4fa30a541c9d6d7690bef925fc52e354c5d57ffbc63c4d4b8331", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "1c6ae7a0b00bc4bc88fbfdf6c4bad810f3a3522cf08de0f2dddec2e33fd36e1f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "da3b1a31529e4fa30a541c9d6d7690bef925fc52e354c5d57ffbc63c4d4b8331", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "140d09c24583c094d43588ac82fd87b0e3bd0e7e2acef44d3ae1edceaa938b33", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "140d09c24583c094d43588ac82fd87b0e3bd0e7e2acef44d3ae1edceaa938b33", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d250e2a96bfadd06bbecc35400f4577d4149df7d51150dea7912fcf5e11f7873", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "c549410614b4294e9bc07e9f0c3c19fc250f6f0fe366652ec58f96e968eb24b8", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "ecd51104d1b07f103808c18533e9923497ff4e141fe0170114fda8bd414f789c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "308a31210ae4e8104545d2b70a5efac60737102dd03bba751e48396158080d75", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7aecf6a3b4ced06983a74873ff20328842281c7a0b3db6cf4c77fa42c70eec40", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d27fc2d4dc63028b8403a0c126c8c780b0ba83743d743d557ec9cd78fcda175a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "62184e572bfa10954ccb24d2d00a81d69a3b6595280d7a3103e3635112b0feb5", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "ca2e6d2b50c20fe61913d23f4277831f61671179c6dc37b0ae04408d643ca18f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "8fe3cf7f610373693e0400afd8aa1b1bf1a33a3188670f552f2cf4c75ac419ab", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "12482be5980fb88e82946e4c9aba5a43384209cd33a54ccc61039ba57e3e77c2", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "8fe3cf7f610373693e0400afd8aa1b1bf1a33a3188670f552f2cf4c75ac419ab", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f858de4a7ddea78f05c6991fb9fe6740abfbfd751427838efd88f7dab11855ad", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f858de4a7ddea78f05c6991fb9fe6740abfbfd751427838efd88f7dab11855ad", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "79080833d02349b4c499dce8e82214d629d98b24caec21dd0cbb577424de22a4", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "d2c74e9ee93b4c6ddd1388546676cbbc666168b96e4e7e8a7658de250b43102e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "517f07381310440c2f7402f32d27dc5683357afe12ee023abbd2ebdae55d7da0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "308a31210ae4e8104545d2b70a5efac60737102dd03bba751e48396158080d75", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "0567e0917f8488bc5a05666d5b0b7b925ffd19825a3f475ab9785a6ba9090e5b", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b6f4c82ee0112ad715a31ea76920c3e2545365551ee88eefb0c1985abf150043", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "2fe3799c034942a4d54c20d0ead39e4b0cc8d8653b994c73792b062fe696c3fe", "T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c7ab323ba8efae710c0c46b064617a889cc1fb3a19346b2596e0043d9632f5f0", "T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1e160f9bfca70ebfaa3a78b8e22a091c00bdffddbc1619844d5c11c06c885f66", "T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "20a6d009b70e026b6b899783fe16832ccb35aa913793be790de355d87abd9bc6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "15927e1bb1440dddc8d57e27a826c9980f91e1d7572bf89421337d73d3bccc7c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "afb64dd73c9fe092c7c07357327ffa1afc8d882bb162ed1e03c13ae29936568b", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "1dbf86718e60a369db93f836bdde8978a8b0b6feb92d5d3ba8fd99256bfbc895", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4d83a5479589eeafa1eaf2f0c189841434fd1c4fc04f3b8c7ee3d13d1873d40d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "f6db6ddbb80b8ac8e994231c7d43ebc0381e3cdc4ac90deec85c83de82ad0b20", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "c618729a7ee9edc8c1b6bf3a239e32a108172f6642f73eb61c1b2e09d842c9bb", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "15927e1bb1440dddc8d57e27a826c9980f91e1d7572bf89421337d73d3bccc7c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e9b59537fe4ffc9b222243bcc3c89800d6f179c66bd8901fb5d0e1c95d74618f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "beabf0e142722d25d1cdd594fcd33e613d842ccbfe26ede259fe3488010fb220", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "1e24e71ce41793e4ba3216c8bdb3654e638e09c654765f6a5f5a3ea3f213e8d6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "d3db65bfff8b8aa641449d364f9aa1f3e90589450885d70374855a477dff9cbc", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "f79c5e2f2998774e83bbafe3d1064d79b0a72b80602df1ab799a89d7196b2e7f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "d6d829c10618e559e337260d4e28f263a860a4ac819ed4f8ed388a0f26ccf140", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e9b59537fe4ffc9b222243bcc3c89800d6f179c66bd8901fb5d0e1c95d74618f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7aecf6a3b4ced06983a74873ff20328842281c7a0b3db6cf4c77fa42c70eec40", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d250e2a96bfadd06bbecc35400f4577d4149df7d51150dea7912fcf5e11f7873", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "b1d8926bd5493709cd6b2c95a5790710db4c5c0e15cad867abf667ebe0a4e2d7", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "ecd51104d1b07f103808c18533e9923497ff4e141fe0170114fda8bd414f789c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "f0f1dcabe1a1d11abe6f0c5f74b45fddc651ec2da122c865b1ebcafd82790ee4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "5f845fef5fbcc2d54eb69894e0fff0d8196acaefd7f965545f4d950d5a5cfd17", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7aecf6a3b4ced06983a74873ff20328842281c7a0b3db6cf4c77fa42c70eec40", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "0567e0917f8488bc5a05666d5b0b7b925ffd19825a3f475ab9785a6ba9090e5b", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "79080833d02349b4c499dce8e82214d629d98b24caec21dd0cbb577424de22a4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "3e8e0d342f285f30a3f9da519abc6c8efb3e13ca6c119167f6fa43b2d1f4f818", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "517f07381310440c2f7402f32d27dc5683357afe12ee023abbd2ebdae55d7da0", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "04b9977838b9acdda204e15debf3a994f47c9b6e5d89e311266c04b8d3bbd707", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "aab413292e41df81946b5d52a581344239a0a0bbd4855b12a15332f72c2d4eb1", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "0567e0917f8488bc5a05666d5b0b7b925ffd19825a3f475ab9785a6ba9090e5b", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a1471d4f910996ae7cc8addd2798532e3a1d2eac0b7d5e0a2f6e634fbc17d56c", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a1471d4f910996ae7cc8addd2798532e3a1d2eac0b7d5e0a2f6e634fbc17d56c", "T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "19628ad1edeb109010d0243b917493bf05ea17ac681414306bad17ba67dae7ee", "T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7a71ebfb03639dcbe9e086c1596019abf32281de7b532588f4e744e0743e5c67", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "f3d41f2f018adaa8f93cb137f9974134d4997be0fe111e1648cf031a6a9ecc06", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "f3d41f2f018adaa8f93cb137f9974134d4997be0fe111e1648cf031a6a9ecc06", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "22308272ee6a8fb51df402bee6d717305b90c4e2b28c6a252c58b2db8234ee1f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "22308272ee6a8fb51df402bee6d717305b90c4e2b28c6a252c58b2db8234ee1f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dd7014585c3473fdb3562b14f0e8e2901197eccf969c7b48556b66f14415ebba", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dd7014585c3473fdb3562b14f0e8e2901197eccf969c7b48556b66f14415ebba", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "104669014f8e414524387aea9a30b41d0aa4505fe93190f9ac83ad451c62fea9", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "104669014f8e414524387aea9a30b41d0aa4505fe93190f9ac83ad451c62fea9", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "bf1d13fdee21168c1a3fef5100b856daad2203e98d5048d5c3d4bc532a45a764", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "bf1d13fdee21168c1a3fef5100b856daad2203e98d5048d5c3d4bc532a45a764", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "e4b7da13e7d06660c25d409a9b93b050dc11ef3f90e3598f7f728c785dd97c4d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "e4b7da13e7d06660c25d409a9b93b050dc11ef3f90e3598f7f728c785dd97c4d", "T3T1_de_misc-test_cosi.py::test_cosi_different_key": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "3f2d6c30d313438fd2df4f71acf5cb70d9eeb02b0c403dbe2192417d05984764", +"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "7ac8a30a528ea666e335e680d858b1e3294daf0c04fda33abd4e8916cf9d875f", "T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "3f2d6c30d313438fd2df4f71acf5cb70d9eeb02b0c403dbe2192417d05984764", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "8662f6f2582eddf30f160c07eb922fa79a3c46cc56415cccb9d2480d10ef60de", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "e8ab1e56ae5eabf717dd756c0eb90e1fec18af57cfaf8cd4a1ab9154e5e6b845", +"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "7ac8a30a528ea666e335e680d858b1e3294daf0c04fda33abd4e8916cf9d875f", +"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "4d435e5f9bc4929db28d8239b30644933ea07ca047c663b7804d831509ce9331", +"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "3c36f1da563d392cdb8c8e2af97cea5af18cac79db88e93f429eb72ad1be3a70", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "13ccd1f7c04981f0f2807e43641c8bd1fe936bb05a3a7c65efc7bde1dd037d75", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "3eebfa4ce124644fd95cbea683133470c3a68a5ec337a760add495ef213ed9f0", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "09ebdf0ff31579195cb9c4f286fa8cfa711e19b3747518d6e4f9a4300993f322", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "c99dfc7bbe3748d80b3114b8b3e653f60f25a0ff706a423ef07050c81c6f25bc", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "7a3f136ae0c8b2d768e870bb473209d77e08e6d26d9127aa14c58820ea4873a8", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "c43f86a981d4aa4839301e673fb4acb82ad29e66855704de63f9ff4400afbbc9", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "a67a327a59bc0972c51dda9b009e51d838ff8d7ef747ccbe04b2cda090ca1047", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "43d5c8720f25d7b940ccbe2ad3f12e69f62c6fbd957cceb842ea090759cfeeef", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "82d5bd16c2c19acf8625d1fc6dd578603bb05abae2fb1b9124e206358c40a2ee", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "d75fa858d8c5f5734710ad64244aacdf2299b7f953498fdf42ddcbb6bdc3d3fe", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "8c6e1a9a5237e1de09c79ecdbe80d59a3ff844714395c34ed93df2e424ce22e1", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "87b6d5049f6304592bc3e97c7c032d597c6a48788163541e2e671c8be8ab3e1f", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "9a8e81df1a98a683c77868ce9412d898ae74fe63c46b46008aa37b6c9d958717", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "db1c9df1b2b602dcecf637b05eb89bcdfd87cc95a398986fb3318119eba5bce9", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "52c66b37ea58800540f4ea216cf7884c88ad0d5d684864020675033918e76a40", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "5b9875eec7fc0b26356f291737da55c142c560b25876860cec74deafc7e64b46", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "4b6598fce79f7f97fc4d43cdf5a0e1c679f9c69a48294541c39ff76d04181e14", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "c641c0e150f06d73702ed6e8584102d8d9544e45d7599a415efe6268cc6a3e22", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "5ac0ca426eca9f2dfa14f89c1cad72830b5492dc0ca53fc47d28e6d0e0a4c26c", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "c87f1228f62c669f9ebd527f89d75404049547928e1fc6391c5955044f5ebda5", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "9ce069ec6c09653d2013db0b88507f252e0f846bf6a85afd591638eba451d71e", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "6df9bfa42a13ca319cf04e169de62e895d58edc5c4df6ca1ba76cde3175a17af", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "57877093765e3ba1829ae6f11920fdcb1aec2e9c0a532c4a86694961d11be6ca", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "f050864902369811040c37df85cb22b92d71b25ffb8347256f46c79811074f43", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "5a7c393e5f2b5091d487fd43ccd34f29898239dd5f5fc7d21eeaac6602503433", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2db7df72cbba79d3750252d9c42212510140d887d19b495f28b16d4b51b9b393", @@ -18136,7 +18136,7 @@ "T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_signidentity.py::test_sign": "c3e221179697e38333866918f401f88424737898242f31158045e7a8a63d7938", +"T3T1_de_misc-test_msg_signidentity.py::test_sign": "b5c94bdc6a1268e1f52f81eff2cb66fef4dbd6b414cee2fda745b288062bdde2", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "3bedb5d4afbeab77e28829dc2ee3756198717284a022c62a177d6ec24bba4251", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "bf40575800501dc051a6572f97afa3245a8879856c1a7b7287aa279c7a010a6c", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "8c4daf241042d7c01dfba84a8da2e9ad4df455377f96c56ba3933e17c31c0948", @@ -18189,7 +18189,7 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d8bd2de90bec49d4175cab2f5104193f754f672c99efc83a0692c7d13157a7e7", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8ae6882dd2413c176b79798b2ed43bec9467e0635817ea8b848f04d91a7af7e4", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "288e6316b865ab767149abf5bf65dfbb71c4172fc563094e7651501946973643", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "44122ac0bbdbe930e13c0520dddedff372db7161084e54993cb003abbcca7740", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "bbe31ff7cf9cfc2a4681d402a242d3675d099a396e405dabc3b5af9bd259cfa2", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "004c633a5bcf9a5168ffa0e6a1dda32692618ef8c477ad1c3d63a88b3826cdcd", "T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0348880a4cbcbd84129baa89cc279aabef2e31dcb9e0fcea7355d4bdcaea9ad8", "T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a696bf49c6f69be31ab25db057fce855d985f356b509733c4db821f8de68cbaf", @@ -18207,132 +18207,132 @@ "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c914acc2e5c2cbbf371eb5f53d24e2d2d1c4c3bde94cd1da88c9ea8ba9177867", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "eb6403e30469a4706ae708060215e6a12bc56da91c8f1b99aa07c9dc6c29dc4d", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57474d270b568b57b67c8713ddfa93317ca850c59c29bb1c53e055d5500ea034", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "864ae3f49900cce042864a6d5f218851738236e8e1005d4978422250ee9be133", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "a1b5a7baca2c1c52363185ca5a09bf7e163f15a1ba4342de3cefef5297e1d7da", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "57474d270b568b57b67c8713ddfa93317ca850c59c29bb1c53e055d5500ea034", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "864ae3f49900cce042864a6d5f218851738236e8e1005d4978422250ee9be133", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "a1b5a7baca2c1c52363185ca5a09bf7e163f15a1ba4342de3cefef5297e1d7da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e090db776e880c278ff94d57b7b3c68c6744b6372dd1b723a4594adbeeaf2d79", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "1cf65f1c6f799f6f5c83776652302940325aa4b7df78be58d3f7957d48dc193e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "0374e192e7b1a786d0f74947531b1d4983b5a805a578ce049e98e1e9e812d8fd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "a7eadd1b4563542ba37280b244012cb14bfec95a73a8a0aa707544a34e94f5ea", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "fcc6be892e06b0214e64882900a5f4956e21e0ddf405828854bbca62d55857b0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "187b82f071ff43da52aee16022353c0380d02337b8dfcdd80813f0d9bacb78e3", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "ca37399c9c02372e96768acbc90336b487afdfc4b781976075f595d8bbd5c484", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "527fba7a7b26f3f5caae5de3a9e6df8d7047d8aca3667c5bac4d970548fbb9c6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a0796408e357657147ae6c43f5ed09f3d8e67e59c6e5422aafd3ac549ff7a4a5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "a73f66a9e3525d31ea3365891a03d104663b8eac9ff76ea36af59454a2f475b8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "a78ec30d84634fcd40013b37050c4b69e5a0f5d22354cedaf5701f3ed2d2862f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "09fc58fb9c743c5a8c879b2ab11fa12c1ccec36e7090c9d73bd9012f700c3ab5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c109acb6c829fe4294381dcca3fa206a975303b9127eb6e60114566e8e03893c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "eaa1e167c90386d1f70b44bfd4e79b8351e1ec4f2a49221f5d483ec04ffaeb98", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "3b79e7e4df7b3d09d0018a3c5cd0bcbdc1687cb30e5487bc16e4a87644a2d6ec", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b12399cbda7d8a7b55791c4815091bca2e76e5c0647bb39a886abeb9513d5a7b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "9524cf76759ea252cecd896b42f81baf04cb319c1fc6cf101f089c02ec96f29b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "e54accf58109867c6d2609c1a0d5c9b92bce3dd2415f42905a9fe16ab54e8e22", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d09150b8f9745f6ccbb638a16deeef798a6bd9cb296f77a80bea7810546a05ae", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "8397989541f029bbf45a9e722d459d0ab452ca698183080ba4af3e1649e6df07", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f894d3f28868ad43ed84281634e1e1f408b0c2c7c2b2b5eb30cc6027ec14d984", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f894d3f28868ad43ed84281634e1e1f408b0c2c7c2b2b5eb30cc6027ec14d984", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "a194b33286220bf055f3c06523c1a4f1586377e168bfe31026404d2f9916e389", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "0be78a5919520a10e0afdd6451c245444e68b7fdb77f28a9ba051a0103b551bd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "25d685c281d464bf3519a68a26acec3c152864a3a9c941785b433b7a75bd8c51", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "76950b007cd13a5964bc1dcbb1facd971ed2ecfaee5fef2173bc6c94d834c5e2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b0302eda8dcb47b2cf7a3cea1ee3ecf4e13a25b4a4e33633a2b517bb59b56ca0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "1e868640e1c62f8b24ff7cef9d3667ce5700f3cc349840bca4835d4d24a41508", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "0e0f8814ea14fb4a47b2faf3fcce0dc81bd7757836077a905b712479c44adade", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "523d0746c054e6b805f96fd1c621cf077ace189dd62068bac1fe59f7c4de21be", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "539012f1053609ebfad9f8b96ae21d66cb7c6705baff82253bf81be2703acff5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "309c304b54cacce623e6e669a2cc10f576e019e18a395e6c5478964cdc6d2a87", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "848ec4f21f2163d25462d24ea0fd5a7048e9f8a48b9a7a156b6dfe1fe4b5c36e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "b01ba90c78e91495d1f8424623e40f2030560cdeca4e92fff8d3ff87540793a4", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "de5e109a17cfc3db2f156ac82e8de3b77e5604a3fad47748f8b514e87db3879d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8d4f261d4886dc982ff1b614ec8058ab381429c4033222c295ea4e44c3b0d188", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "25c9955a96ae48840b9ce89505c74b3bfe9ff6a6185906870c97d88d0ff17bcc", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "1842c5e203ffa3e67825484adc2b0028e0ad862c82202be8e269e498f64a4d5f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "76915307557aaf6851dee78b22e094934fb698b9b6dd770fa1a6396f9a8b119c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "ebdba70671aaae2befbefd7255eb7d80bf579a21536e0c152f7eb45d3494aa50", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "ed8626a75cbaac6aabd6fe54b7dc81b0d43ad588db1449c6430749ba417f59d1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "1ef57c6e80dcac74b19101bc73f59350009ab02b8d4d0aed29984e979a0deed9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "8220edbc73a6d091f7e027ae7af05d3871ca9917ddc1ffa5177e40198ed25d2f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "0161e2f5dee0ea6a011435b7036ada9d1c466a3283f4c1b5e9098faaf53d825f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "723b904ccd66d1238dfc5135e0799ecb82ef655c86ac9eade3567692666f9fcd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "c853702bd19dbe461770a5856dc0c0aea973db9d3872c4429c1055732145509d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "bcc00a110756d734a2274b94c939f3c4da760860c480ab91670801853313388e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9e2647e4963775e7795baedb640a062ea7d80d36804bc2fb8f131820d7dab89c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "607702e18f0ee2f6912706f29eb1305865cb3404c48963d441f9612b33b6b755", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "3bbbd6e5b10e5b7d6b55b16ff66e4b33d48c3a934dcc409a4f35dcf90ebec4f6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ef6d76a93fd43671a5a08c955c85f6102ce8b06d33ccb497ef422ed79fe2ee02", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "045bb7e48e87fa12a985d06e9440bfd7357dbf347e27fbc53474b4adb63425c7", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7c388fb2cfce0f760a35ddb30b9fc1aa7ef81931605245b9e1cc096dc3cb1d0c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "9f8c9cb86015c474139f6e60b396ace05537ff07762fcb659010d4a240ef6f4d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "4c4075cc0f10aea8fba02c8a3f7f0e12f5c7bef5fe770c1e68ae75cd58d88c44", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "dace1a14fe2817a82671ffd64c0da36d339f39a2ef0ae386694491075c537216", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "381c4fb34240beba1a2935aeb837f372e8a5ca6cdbe2fee14cadeed75d1d7e71", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "59868ce2b000b2f71aca05b279d63e87f8903caf0e834c0a40bd80787e31c2da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "d4dc22fef593a05fff7b26d1009265152aca7ca276736722292643e229a489d9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "25d685c281d464bf3519a68a26acec3c152864a3a9c941785b433b7a75bd8c51", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "d45eeaa801e430de499f814fbd70e4d2ec6d9b37e978f69d344f5a95f4f0a3c5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "efcb78f5c4fc23100ce42d2f84a43043cc9af47e1f4f542ce55b1b382f6b99b0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "5d12e7430424a11a185f9ae0c6b0a25338d64c85cf1f6573f20194ad7cf6ec29", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "1d6f8cbc2996ab8b7fba4baf776f7c9dd5b238600ed1c5dae03a78f3feb86e45", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "74075111580fe52c54ccc2fc66d46b3f07976f32b14c2106481564a37a8f5391", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d4f78c7eb3702a532f28b0bf769589bed5bb51fdd0de3e9d94dfc7bddf623e67", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "5ba91e71cab34ed33334eaf7e8daa9c5db0466a5d6dd939e22dc4919399987b3", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "76f8aff4fc625ecb8536603af76e0621b0985c8fa9b98f029f61e696fdbbc821", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "12038816453bb006f9536c594088eb7c65e0627eefd70c17f82940f08c9e5346", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "ca7e2a1fc2d0844463ad17ae445b7b00b99712d114f29bd6a585f0c0ee115d70", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "fef6d430a0f793e455d79186f32ca48b5904cac8244ce7b2b91493393986b74d", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "98877fed310fa2dd9cc38f9354d4f9adbde1fd9a37b11d9f50d190acf5b89619", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "9b160275b05d0fea403838bd9390c58efdaa213a963aa5cac0a2b9b479b1e7ca", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "3c33dc8ab976fa4801a8006a0ef7b21eebde32d43d4279bed927e8620957c944", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "c69a8d12c32574739dcaa49a8fe5fcb32a4b5a346f3be6c068bb50327f700ff3", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "31d819ecce0b0f9d72f7b9f2bc8513b5e398482f29deb911e79cfef69901ad5b", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3f1a483ad4ebea982db16b9338a430ee1b305f7f78afc03dc84e16d274cbefe4", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "cd3ff415f42c0b8e46d7f32686b36f9f7a0428fa6898969f1f6ed508d49874fa", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "1efb1a489fcd49bc6aacb32fb17df69137210c5cba4475f5c23ae9a7809ab5f3", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "57311efe0cb6ca8e64cc7e3ee15271c29687b12344c65e2c58fdcbfda4f63890", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "d7778e00360664f67c545391d9814555961fb423192e89f618398866379f26e9", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "7a64bb475848ef721b4885e7afd2226d42d9690cd0193d9dcea84b75c3a385b2", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0ba950eab7ef3f12e78a9c58343dc8e0970f8d11048dc5c6b0ad2a7b02499cb1", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "bdc0de237778c126b2a444048ba42ade89c6b737b4a1b20a48a2273609a2a2d5", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "49a1e9233713ee49a183eb13ec9996425644acd122d739a6737b99b61cea7fae", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a49aa6c599b2f69ae31b1b39704cf685ce1670f7842ca6aeb6eecf32f982ed3f", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "1938a32b08827966ad7fb7827327864fd74c90b6564c7b6936207f43b27ddcb3", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3f6e5c8eabd75c2c1941e11a04f5c00e08813a88f2050998a16872c9ff34eb1c", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3b93c6528d3a2590fe5ed52fa8f8cbf8003ff20d9e3cc06d354743964463c5af", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "0836bd0f17a7da9fa087cc037d10719af47783062669a674422982f175951a72", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "485e9b8cf6ab9581f33c3012dcfd764ffff422dc778028288952825cccb474b8", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "adc1575b0948fd41fafcd6faf98346f94d63330657123a3b32e3f2e99c143ef7", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "3311b3e6a18440d4e6100386287863d31aa294130cad82a75649e46ce62aa03f", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "dbc7f5ab56f67f72cb2eb737c223c8c082d975a66cc875985debd9ae014968cf", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "0c5395e6e3c3ed9796c490667d72754c524b0e169a2a6373eeec054c14b6ec56", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "be5f7c0c814f7434d4142f2238a064a72cbae14bbff9be832c503059614b939c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "69f7bbbd1faa8b49e338eeb7707b5d4a5fb55f4f4d1d01dc858d9e859c0155b7", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "e6c4425ad7da7e4e9397b60ecd2ab954bf95fd77af32f40f6a56f8af9ab46068", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "687a8dd4ae03b9ca19915e1e67d54ac520f3957cf7eae63b63e1ff4834662f6a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "ce246117630587bc0cc4515ecb9b945032624fa4dd27b6cb47a8a8a814fdbf38", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "aac010fd9e659919a978ad6067c9a25c1a199d2420be064886dcf69b37a47cb3", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "deb4cd8c0c2b0df877e71282f5b38190952673580c9286a6dea3a71add6f99d9", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "db82cf0bb3c9a1d764b9a61d8c381af6b26fa1040ec7ef76d8ac119c023a2aa1", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "7f1c714adbb598472526aa75a60944d4298c268eba4f58d2310394be43c004e7", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "792a257d2ca162f264b8d3faedf4da31991549a651130898051c7089b96d037d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "0d71d785e13ac19522ccf689ded7e1d6182afbcf48c88c315f33ef9277feeaee", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "b4747f1d9dfde6026ee613cf9dd64b094a5a2882ad69c66b0486125f854160da", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "cc6b8703e6cdf143597f2c1f8efd98a10b4fb79040254d247a5a8b618f80eea6", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "a6622a1a1d3333a346ec4ccfc3c9386fcd74a290ffab34f11fa231086e7838d0", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "c59b05ae459fb8b6cfaedcbe8032926539d52c5cac81315ff8706229c64ac086", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "f82b7436fea5a49fd74fbddd8bc447f596ea714bb7894b2b6c6b2dd85fa7700a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "1e3868a36b5860bf672adc036557aec470082f2b8306e6d916b32f514864ad10", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "945aa4c05bdec6295c1187c391a95d030ca6bca1b2946b57c09da3b7346bc02c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "1b1bd04b7f67732be47b7faacc5f781df080ef41cf712332060ef853da2a01ad", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "01c21a0fe5097a5d66370c306ce8ac384a0e361dbb62d61038ca5724aa4870e6", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c5d5cbdadbce463386f3abb540cbd524c7f0456f8d034b6f33f634c4df2104fd", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "cb9e7503cf30fe25598c04b9c896d4290392e51420c5bf6dcf4de08361195055", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9a82fc1e8e608814bb8c7e9f6ad57a47ec0939aabcef739bb8776b13a8da5754", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "0d71d785e13ac19522ccf689ded7e1d6182afbcf48c88c315f33ef9277feeaee", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "305d0c783e7fd81dc6d2ef74fd62cacea55f98ab216be1551253479cc22faf94", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "266b8b8d59306866e1fc51ab0c565bf34b02195f92ecf26e071fe5bd9cce1113", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "d757bab1953deb8fd4b6863c494697b79ccaf86b6d7479f05eb5cd3e4cd9e7ea", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "c0dbdc4982b57935aac587d91b56911078ef5ca8959d3f347d2da8e15e7319db", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "266b8b8d59306866e1fc51ab0c565bf34b02195f92ecf26e071fe5bd9cce1113", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d757bab1953deb8fd4b6863c494697b79ccaf86b6d7479f05eb5cd3e4cd9e7ea", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "c0dbdc4982b57935aac587d91b56911078ef5ca8959d3f347d2da8e15e7319db", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "aa44fa1c3791eda4f48d30a4f0bfc70d90b2a88dbe4e20889c973fd95e5adbba", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "c2e20c63a26cce5fd027aabcf6967f40ee68d9797f6d50fa608db60c8d1694be", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "b436dc425a8b63130a96f9908ef152b59f90a849d5428a1c85da0d2f3163bee8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "1ed68041a8341188141baa3d48a24a293b16dea555ba4d2ff3719e1af1f35fc2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8a81c100a8bb57e427ceb9b79c4762ff95027b8b72815bab585c26116c341555", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b6ee642bb6842905abbcae7d714ed4bdbccda7355c0eacf00d9c322b356bc5dd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5e66de9c608a729b1df25322b9a5288d669cad1fad19af622aae1732462f1028", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "02d252639a38ea95548186237efdd3dd1b4452fef3fe3ec908c96c9a1dd96bb5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "33b0bdfda77467de5f097052b79bf7e9f12705cbcd3cd622abcb45b165a63944", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "e715005e0993cca12127458aad648618ee0029647749b671c60887723eb266ed", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "347415b58246d51fc8cf2dbe1ab5945bacac712f6d20cfb29ed0a0771d9cb153", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "a4771319c07e0c7a46b0effcc010c4bf5f67f41108be9d5d11a062fa1d55d5b6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "5650800e95ac8cdbf5ad8e720119e29a989f32a2e05f60b105d349ca44f724aa", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "58c599a2794cf226aea6bbbd4a130c92c1e7e9e76f7bad1438c1376df90b5853", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "9dac340827456b542fdc436b430a1d6d6b477ea9f6446105c08d1bb22782247c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b1d9798d807560f72e431b99cf3f44c88e708f9519b35b841b83d38052454cd1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "1ce6b626cf4d146b23e172bf3d9a9e2ea1626cb6842e7eff70ff59c130cfd8cd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "71b7db72d0f7de64d99b59cb81155b46de34978aabe37eda6fa57c52c76346e3", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "776d3304b712a3f0d9704ac4dfcf62f9c0ff1f84a12b4d501f1784881ff88371", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "484d6b78ea877112aca2be7e43a6fcb7c1b32a0602746d9f30cf07b038d1ada5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "677b013bc4fad4c1ede50f3b7d28766f2b54addc7d5f852e7d28e21bf2ce8cde", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "677b013bc4fad4c1ede50f3b7d28766f2b54addc7d5f852e7d28e21bf2ce8cde", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "8b81c623824c65178545c39e745e1202dab06baf4b1c853ef6cf3c40a7377fac", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "b83bb79a0ca0748cf16bf0daf437b832126795b4bc16ea22c3154404285b2b72", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "505a5a66d0c2cca2568d7d2aa65861cf5632fce1be646cc3f434b4b546c29032", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "74c1772dae588cff1d11490b6327f1960d593883b8ec9ffd8d797755a492db78", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "ceb22393f80336ed09e2ed5b207d5fec7cf76cc6130cb908d6b2b25afb76b5b2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "7ce4c70e6a20ce6c18997e5a0831bba36e47fee56224aee989cddfcab69bc42f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "357ac839792756cd012e364ae0398c500ee29928d25d8cc3a392af7bd14f5a52", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "4b485f1f337f5dd4a29169ac06a37d8e0915c5c39e5c83cc9332392b6de9a230", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "a165cdeec8022733c18f6ac0e35a9f8503d7166eb287d96d7d4a86e800e3bc30", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e926928f2d8301bd80c772aec8a76597f7e45d8bf46828b86fdf101ca6a39eec", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "09ded397ec74fd17e43432236428ef0ae9dacde01dbac1bca250163d8c23a223", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "a9d833eaeaa330f4676c7306349ad97d2105f675a21785e5b2e956c2716880b0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "5dc0b2f18416824ea1312b2ed6880185532fbafee9480bf8638e2403910af6b2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "2e9dd75ea99f1a8cf043100b232c0415080448b642c59fab594d489bbc82dea8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "bc537ac7adb9562534af3b3986498d5ed967681dbd80cf7285fefe64965ed3f1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "a3d240e51cf69511bb40c336ae3d2aafc488bfe3c09eacf65698dcb3bed3e605", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "11a8b47c5bcf67bab874cf3eac56bee58501fe212cfa2a3747ca78b0fc049011", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "77d2ae475e4343598e2801411f83684d3dbfa63e7e4a0e13a0a1097bf199b314", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "48d328cb582911aac6489c0fcad96170324577d7248bce6b7c9c2830241d2f7f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ab2af8b413d0689b33fe202dc5bb1aaeafd924fac6b0da5a6ce0823764812935", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3d198a14ae0541e608bc39c78592ef9ed4ead3fe75d54d89cadbc2af3e71d2e8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "3f3c99433c3b24505bd06eff800652a12ed982f2b215b60818c4486e761ea8af", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "0eca3342ef14bdb981d83285241f60eec8bb595b481ccee9455d55e9fd6d9dff", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "bd89437c813dc4d06463d750e989c23f9f97784dd013e5d09dbfb73f1d8011b1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "16796cffcef0b73344b878b16fea0e51efd2b3410454be3a1fe01a61c5b5f105", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "c1e7e7c76200f0888a22d04a37d2c49611aa596304c102b2ef74487c77bebf59", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8eafd355d6ae116947fa719ea2a0801c00f88cfa10260b4c0dc7bdbe6131a4d9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "05531dc2f48cbc94d9e63854cc5a55744b2eec43a7b199d7466e0ef1b4b9a0bb", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "cf351dc1b5474b75ac0536f59bdebe13557bfa8a7483e965bed5822dcd670676", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "a6d1786950d2c4dfae978a65c1ff1f2d994bbb15b91db937b7c1788df0ed7d8f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "b9a243c08945d870354f16ed7eed3c7ca720791131e0b99e9964f5d8d61ea961", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "1e204a31054c21aeebb0b78e23585b6ca6e7e8b1b0f26185c740b03699d60e8e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3868e36adb52e42f80a16f7cb048c504def9369f9e61cfeb8ef77cc33b86e383", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "f692ab71b8c8b9eb3bd67bd250378294edb83da3c2d8dcc7ba36b48b58d8cde2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "f1bd4521d0be0a01ef62f60c8f7113dfe6db2539a1fd7f6f79e18c7d1dd9f2de", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "4974ea51ac87bae8755040d53313f320b5015b6ae0e6350f5b69c9ce0e01a78a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "ede473cd78e3b73b62975c9d6245ce594863ab4b5c7d7255b93bf6493de8ac9c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "505a5a66d0c2cca2568d7d2aa65861cf5632fce1be646cc3f434b4b546c29032", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "0f83197ea5b7eeb4ebb47ff54e1121b984d92bdc46b9ed38a02252f00aa36bd0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "b7996900b47cd2c403c957ddf7214ec866725f5062a6953460c6c9277912b905", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0455b54bc979f17ec810a3fa021ce332411471ef629e557d3786fd0fc788f8b7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "02c5f4117be9421dd96fb1d856705ae7c4a2bf6522d82410139db55cfcc1ee6a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "55171a970f93ec0622afa63ac2bc71c6e49b75efd7db86139904abbb78760fd6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "64cb18c5752cdefff368bf796cc04456d677342c85a4a5f8a0ef233429e39c6e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "4bb7ab4da5306f35d75dc4fdd15d35bdc094d626ac289bbdca0e7fc43b1216f0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c6fad6492415bee7e45c9c9844f7dd85c8d239a8ce136858cfa96aa95e02b7e5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "7439ca862664f9d620c9f2f7b32113d3f12182a1e1c47473a3ca1dcde7afe612", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "0b9e2ae813ddceab5966b089a91d6a98cc8018ef11df7ef909dfac08e21cdb51", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "abc08bc5fe81ad863a76e2f6d27fe3d511a8d5ebb1b9983509109eba8907dc50", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "a8282a8551202a79f344ccd449529eca7231941dcd2313e7c6f78785538c03bc", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "bdb5e9387122480adc20acd4920246f81846324990b944d9e080e0478336b3f6", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "904a57a7ef7d4ebce9a0ade157296b5651c45d39c360d75f645ebcf4e341b1bf", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "e75c6474b9c0c6590caaa2cf3c7afb9142213a562423b80476e1821cc813fc0a", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "54bec5009480e002dad61c941fb77f40b9ccbf739bbb675af19bb96293c9aab3", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "aa8bafb102de05b3971df61764a9eeb9947f95f49c80805cbfc6b2af881a7c59", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "68411aad5913f74233594d36a52841ad59e44fa8b2710fbadbfabd66b73f73e7", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "b77695a9212d6bdea58f9fdad0eaea531af04b8688e8ec21ef4fa19da496ec6f", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "d98a925d275ff1370a14faddf1df2b89ec4955df42a512ea9f90aaedadb871b0", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "c2428f2c4870d660072a59163bec6174fd75db2ebf9b4c4c6b948179587fd58d", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "401ab90c8c17bce465cc9855089b9414d46e8216dd333be417dd2a073f2e01de", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "371de89c8647a978f5ab24e71c98c56154670b4d0cd42349d4d2ec32a2ade876", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "7fafcff3e4de94d71f49f6138726702d66520d6200ec571833550d4ffad6c8d1", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "cefb7edb23a05488ffc132a02f384112f75096cf7b2b4295058c20db3673cec2", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "79995728442aea2d050f6af0d57894a0fccd2f204e9dbeb2f7530ff82a88c96c", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "5d1152f4e5f8ed6a6ec41dab341b7dec5366ed5e26d87ea974ddb33228ef7985", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "174cad2ae325b94c5f2c954ddabecf485a3eb8f34772ca853eba4608d53b0f0e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "6dceef0072f699f475faf795c09ce922a0463e0a9a124a019d86eb90816c01eb", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "63477a2f945a434072477528d9c4d08a4df520e4cc3832bd050dbc8b4560a4fe", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "bdea893b77bc93381acd8ecd992c89cae08d61936bab553339529dfcc9f333a4", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "1e23be6c23b61b79feaa42520b07716a21a218cfc997f80467a530af5938a771", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "96f06f1ed61602843612b7ac15a767fc957ff0c65e016f5fd6c2da59bc8a135b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "9827aa1f52d8578154cebd3193940d8b38ddcb4c0021d9717f339cf247083b20", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3f9047238e705b58a8c1cb692094d6b7f0958b499bb977553874cd4344f13e18", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "d399204aee0e309d41a04c122aa5d1a84c948a0c0909cadd79fa1ab7c82e5059", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "f53177219c8549055a2faaab1d784a2ea33dae91e1695fb2c48a1d330d3d0666", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "904b3abc54360e50c2f777a441145e6f921e8775872a08e20bc9c6e6df84b1ca", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "acdf64cc0b7650bb53b033872d9abcd5945dca8ec9b5f7426d62f612cdd3f5e1", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "eee3e9274472db323569957f3ad9a9a22fce535568588525e4e677662f3e59e1", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "6a6be7a98827ca8c1aab88b4bb24d4eba0dc2fddb1e40f9b910a8909af17dc2a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "ec4bd3cfab5749249d15baf6fa619d376c24279f00b927805a1545b02a546b12", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "87662ffe0257690bcfce4e143bec5ad045d3fc175aa95393a1a8238b09b17133", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "42fae71f42c0cbd21b7c94bca2bb3145c5f79b0bea900f12bb968f17c683ad49", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f5ae47e46e158d5e746c38d23d44150532fc2822bdb7fb66480ecc175a652810", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "772bd6dac319ef419a487f1e72b13d7672123ba1cc6321384c0e695ca1b475e5", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "e35c88e030045a5d498a8dcb1f93f15ad304c71ec5e00675be9a23ae530626bb", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "c8dbb1dc58d5bfd9c594f1f09f612d236fa0951c3ebc7395279f25d5506bc967", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "87066a422b4a3e7e8963fc2af5eb1e8684a5010663608a4fe75b1473b1d10c0b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "cfda8fbe504d011b5c2d89b4c09b9b701055df5f3137ce1f8385ca534a0e8b94", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "dbee5f777d7d78b7e90e690b6af42b7b1b83effd073a3eaf41f50ea133d65a0f", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "76f050563d6ae7ce1c85436fd994ea45b30d1d20d2e1fee6a5b6a783cef50e03", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "7b6f094869d6d034c6050888b5ecb4a8c410633823c61c944a0ae26c781c3fd8", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4d25f2b1db54d93e55ffaa0c7c20871ac7b1b1b889db749a1569108d45716dfa", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f777e99f00b34dfa766e56180c7e5046b65daad89cbac62c3b22371b2843603b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "17392c4efaf38976a7b4fa5d5b26d7668f6b7ebd6173c26bc1fa1367b01b878d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "054aa0279a987082217fed044404fa8a17afe83b92d83f36bb96a21a27b98752", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "b099822161f6400328944fb11afd051ad4bd7617a9ffc64b86e515e675021ae8", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "772bd6dac319ef419a487f1e72b13d7672123ba1cc6321384c0e695ca1b475e5", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "d650cc23e28e36c5491769b53fb8a1a208ca7c32b96b77256db360818553ec65", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e262e20eeb06ecb849694c08a51944bf6bc6a168f49d5910cd5af3a30e9090dd", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", @@ -18420,37 +18420,37 @@ "T3T1_de_test_msg_changepin_t2.py::test_set_failed": "894b365102246efd03f8fe53dcfbaa1808d6f77b846b91ef62b5da2d66b4d60a", "T3T1_de_test_msg_changepin_t2.py::test_set_pin": "16c1f995ca4a929e2b4ca18324039906b831f9f9e8c969b9db008351d03f92cd", "T3T1_de_test_msg_loaddevice.py::test_load_device_1": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "620df07f70930aa8b8b00cf97bf352ec167f5b92e54449720e5760ca35b1008b", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "a73bf9e64d893405275987763d2b12c435f2a00e230cf22e68a2bc6f91c8274f", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "41d00a473ded753ee61cb63acf50b83a70a757acf1e3792e0d8bc3d8bd002d6b", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "2f0d3a60797dc289b20e0e08239fd6c0b2441b6e9dbd8de3f4c8070307b54c0d", "T3T1_de_test_msg_ping.py::test_ping": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "fe8a1f97e89304079cc295b418d5eac75ee441ccab46e0207db549863849b477", "T3T1_de_test_msg_sd_protect.py::test_refresh": "c643c038a11b3a301b20316fa0d2837c69841f5e074d9bdd0de0841d1f7b18d0", "T3T1_de_test_msg_sd_protect.py::test_wipe": "619f5d025dfd71d0e15ba018c7ecfd844e6f43be7896cf612a003398993462f0", "T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "96fd8ddab0dbb82d6d0c116aea86f7f2eeb63372a084cdadb8c898de4d1461ec", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "92363bb8c8f23b9f81f1ce004de2e911fc517b17f63c7866047e257e414342c1", -"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0807342605b4bbcb2a62d17f1bb8468f89ad7242d8d5523151b7f0f91c68663c", -"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0807342605b4bbcb2a62d17f1bb8468f89ad7242d8d5523151b7f0f91c68663c", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "34a34d92ee6f5cc49828b61273239e640e4fb4d4c139675ffe522d1a23650c4d", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "34a34d92ee6f5cc49828b61273239e640e4fb4d4c139675ffe522d1a23650c4d", -"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "34a34d92ee6f5cc49828b61273239e640e4fb4d4c139675ffe522d1a23650c4d", +"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c2dad0344893071a6efde9297e2cb542f87066af3cd4475e1d519f1f4189676b", +"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c2dad0344893071a6efde9297e2cb542f87066af3cd4475e1d519f1f4189676b", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "585a5d43600ea44d88a9ab770db6b39e49e76a245e8a7522ab1a74c731d5ed3b", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "585a5d43600ea44d88a9ab770db6b39e49e76a245e8a7522ab1a74c731d5ed3b", +"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "585a5d43600ea44d88a9ab770db6b39e49e76a245e8a7522ab1a74c731d5ed3b", "T3T1_de_test_pin.py::test_correct_pin": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", "T3T1_de_test_pin.py::test_exponential_backoff_t2": "686e3ec64f8b3fff60d7be5b112e1e5b0eb37129d34db9974a0095886bc8383c", "T3T1_de_test_pin.py::test_incorrect_pin_t2": "3aaa5ee13ad55b609624b2b9c42d5224594fe435a9ca14b0b3705eb1dc114221", "T3T1_de_test_pin.py::test_no_protection": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_protection_levels.py::test_apply_settings": "a8dd340e5c9aa5805566b9c8fb3dbfd9730263dba0e545e68c8dc8d24eba119c", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "7989641a588d529a50f4629013d48e581be0c6c3cfadd8e306093aa951d6bff9", -"T3T1_de_test_protection_levels.py::test_get_address": "6ff2e8177497cf45b3234581b00c66ac820373b1e8fbdd298aa6d1a2039c70ff", -"T3T1_de_test_protection_levels.py::test_get_entropy": "c47ff2291c5642d363c5aff79cbe6eb02ccbed0744a810bc49484a0862f275e8", -"T3T1_de_test_protection_levels.py::test_get_public_key": "6ff2e8177497cf45b3234581b00c66ac820373b1e8fbdd298aa6d1a2039c70ff", -"T3T1_de_test_protection_levels.py::test_initialize": "265a80fe648f2986ba20e20b288e13f78323a5b872e501e10d140d0552a8ef75", -"T3T1_de_test_protection_levels.py::test_passphrase_cached": "a08a02fa2308e836d6088016b59f7293cecf443711f38a83749db957d82391b9", +"T3T1_de_test_protection_levels.py::test_apply_settings": "467083159922058905b191d6a7584f29493a1c3f21ce8dcd08ea222c12712a89", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "8b0168d1f9f102fd75a7a8bca1e4665fb8d66c8c0dfae4731162cdca04cbfc15", +"T3T1_de_test_protection_levels.py::test_get_address": "3eb8868672db8e60feb331ec5a54bf22049705673700c3efbe876b57fd7ddd7b", +"T3T1_de_test_protection_levels.py::test_get_entropy": "4835dfeac22fb4e92b0d3a0c0fe9e0f58ee1598f9645815a252325ef375100ba", +"T3T1_de_test_protection_levels.py::test_get_public_key": "3eb8868672db8e60feb331ec5a54bf22049705673700c3efbe876b57fd7ddd7b", +"T3T1_de_test_protection_levels.py::test_initialize": "35f9c2f95819e4975a3cb82d4df34f5aa4b78d77c9b180a4f85e705fd8604819", +"T3T1_de_test_protection_levels.py::test_passphrase_cached": "1c2c3918230e12552636ba6978ac469c841b6073049ff1bc609fd3ca5da280a5", "T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "83139ef22a60cd0daf183a6263255d05a55673ebda8b4d22cc5b32045b484c0c", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "0d78ab5a9ccd2d32c8e6224041b377b88b19bd98d67ce356b3c90167ddabb232", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "a009df2b0a6152a6dd8a11ec63d688493a6d261b2bcb9cb16a3beb2751c0f44d", "T3T1_de_test_protection_levels.py::test_ping": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", -"T3T1_de_test_protection_levels.py::test_sign_message": "d01bbfb2b34fb502a410f08397cfdb3c77c500bb4946c3a037af4666af0798d5", -"T3T1_de_test_protection_levels.py::test_signtx": "e88bda7fc755763d416ee38fdeea4cd3e031b18920e133564b0461040362f49a", +"T3T1_de_test_protection_levels.py::test_sign_message": "c0c836f05c966303ed9f6f2c3bd7be3799427872bcf4e9a2c641c9d1bc33d6e6", +"T3T1_de_test_protection_levels.py::test_signtx": "1196e3555fc94f763a48c9cc5ebb51cb14be666a1fd0aa032331c3ad2fd748ee", "T3T1_de_test_protection_levels.py::test_unlocked": "6eb345e6e13315dadd852980389140e0f86e3e88c4d600b2f1a23b75bb67f21d", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "789d2139229a19875ae544dd3c674507c3c5529c4db1b280f3ac58e061fc798d", "T3T1_de_test_protection_levels.py::test_wipe_device": "77f586b70d92b151c51ccfae935eed1440c07ebbadc9b65126afedc1ddcc0ce5", @@ -18461,24 +18461,24 @@ "T3T1_de_test_sdcard.py::test_sd_no_format": "0e559e831f007e7cbc37f6f59673781a1dedbb5410ec9eaade877157e8af4f82", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "e76e8ed1145f4c0d70e54331fe599916a9f977fb285936ca0350f970befba1fe", "T3T1_de_test_session.py::test_cannot_resume_ended_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session.py::test_clear_session": "af88a313c55edb3bc61c5c2fdc3ab0cd7a388550f48abeb34077be3c323f9478", +"T3T1_de_test_session.py::test_clear_session": "a3d9f9f466d14f3d4b94e008f415cbac1475662bc3e61bec56a0c376e2705fe5", "T3T1_de_test_session.py::test_derive_cardano_empty_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_test_session.py::test_derive_cardano_running_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_test_session.py::test_end_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", "T3T1_de_test_session.py::test_end_session_only_current": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session.py::test_session_recycling": "34a34d92ee6f5cc49828b61273239e640e4fb4d4c139675ffe522d1a23650c4d", -"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "010895abebf9bc92b5a8548a4c07a16d5268535dfbed3ce627d61f3e74317bb4", -"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "231bc4945e94d28faa16095e7b034004ffa7b233d1b40c6489a9317ca1813971", -"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "17902d79745712bc581ba44e622ae30fa1ca071d85f5c2b76e65567974b73209", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "2036d34b3744a12b2f568fcb6e35b8b086872e634b42f878e95322b2e741a354", +"T3T1_de_test_session.py::test_session_recycling": "585a5d43600ea44d88a9ab770db6b39e49e76a245e8a7522ab1a74c731d5ed3b", +"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "0dc7ed8ad7b7382b71f410bc3d88bd77b35cbe9bb2e5195a1122cfb29a78aaf9", +"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "63a57bd662300652f7f6bd1d530dcc15a4dce1968227c1f258863b16989ca316", +"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "fa8430384bb574280c08775f39e6388142e70bb805f2b3089f7c23a1a2d2e94a", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "3c73d123c5b0461ef9840253939a3c676160145a826a0e9dc25d35ceb79b4399", "T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b1eff1a4cbb2af4a4496d0529acdaf84af859566ad96758dd8ac91a4b73da220", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "63f43046440ee656b344efa1de8a563d750500aa01d4d2eb1f9c6b5c2ce113a8", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "5ed7eeefcc4951236a0715be60a3ae80aac9da7f49cffcf8406d3beef50907f7", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "a08a02fa2308e836d6088016b59f7293cecf443711f38a83749db957d82391b9", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "ef7fc8bf7941df6229a90e7e84a325b8e490c8d63ce3edb53edd105a2230c43e", -"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6d39b84fc9927a895cbdc70c1052123296b82d53a89349fe327c52e10b21dd13", -"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "d017454de5e4a33489024ab11b680202ba5e853d7b6e5f71a5dc75c1c1714d75", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "6e22493481de4e3010ec7f2ae3b15c83c3237447215a4aa91e991f3ee2f2862b", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "1c2c3918230e12552636ba6978ac469c841b6073049ff1bc609fd3ca5da280a5", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "ebe13d02939b73533caedec59c277be7fa262d29450a8ab00bf8237f56573d29", +"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8cfe21c11de9d7394ad60a9500e31fa0f1edb0b951fe22b8fbde17ca4521873e", +"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "3b1abc74828d9fb8d1a5197cc855cc2c541bb198214dc04d190a0a00d4a7efad", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c9a97477cf07bb87d17597140741cb74ba3058019c03619c1fac363b16ee32b1", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "aa2429168ca5faf17948faa68d20ef3ec6ad26d981c0c89ff3d16c21ab59ee27", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "fd12f6b2c54d5e9535cdc350f82a93f32365a40f1fca3d7d5679278e22f097f0", @@ -18657,7 +18657,7 @@ "T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b4922986081bb4338ae19635dd50a885ff995203d7cc6e602b0d361a598ef7f8", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "02b7c1c261f1a74b6a19821024dd04fd8846a978a5ea87497c031226877eb54c", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "491ff9f62f050af6191f92a499a45a663bab631d1d4b3f894e2e9ff8c35e5a7a", "T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -18767,7 +18767,7 @@ "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "47ae6b1afd4f757506bd41c4af016a68889c2ee7763c0ac824884b532239c95b", "T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "ca403a7c018486e5bb253be67953a372677608c54c0b39facbf7ea3eba852bbf", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "960f37e982b2e1339067dd781cb78e8f211ec43aa183bff7ba9cc3ed2e22c27f", "T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", "T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "2df967ba9a788011f8dc1f73dc8dd818027a10c245ec00d24958150ff9a55484", "T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -18955,7 +18955,7 @@ "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "974cbb51487b077b9a40d7041b6ccd47b8d88332c82779c133a36b71dbd74a18", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "be5bd061d4b3a6e86719ba679770fa5f703d64a36fd820dd6034e122e3129404", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "53511d2b2ccfa47ccc114861cc6c62a8cbd9aa5a1cda65d17488fed9d03c478f", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ca34314cd4ed59516fe95514ca020017739374b19d315c622e901b2a173d4baf", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2091037ff45d876fc3f2c47cbaf4fe67882fb97cb1b07afafbd6e7d7db116278", @@ -18979,106 +18979,106 @@ "T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "7464fc1bb6d19d9a3670ff58b04490684f1163ad03426f578654f3817f1554fb", "T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "f211de77880be8a23db9fc2f72608187d8208e71153d4c40e9a1c479df3ab952", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "82d7e0728d25c53370d6c9e9d41f89ce97da7a6a08e4fc474dc45d9541c75b1d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "6798e0952f28c3ccdc2a82ac6cd6a03acb7cd5a5ea0e07ddc7b4c6f71ef9c920", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "7243606f3f3caba700998845340dc10586a4ddea0bf66521e7026ec2ff9387b9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "95f3e5e60032bcf86efd9010633d17713fc4c6bb98a47eac6461850603bb8965", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "49c75f1dc6ed1e6a563935e6e0ef69c568c82f562a33c9e73eef5dd499d9258e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c0518455ba79331ffeaffb9cc5e70dbb1c4b26dbb446bfa24ff53ae29475e8c1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "9c59585e277f3a4c5733f644ec489ef2d399b1c0ddcd8e165ffb60be93aa8bdc", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "dec6e16405f8c05f422002dad60a0a038b30f5db7d0b8bb20018569ca6b6e7a2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "c69684263f4f5dbb5b1592c2ba90fc9396e670f8bbe9386efd77579fd6dab404", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "68af5ac099f34812be8781e79c98e0bf0b9f64c3d274ceb7ba4b37999d06fcba", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "2f1f671ebb07299c01c5507d9b46ac5838141b0d5ef1057a32541a9e0833b649", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "5c9a4b2d6cfac2d2e34ee04d22151daffbd1a666425d6d2f5bd9a2992548b071", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "4a7b12ca6595edf43822b78d678b0d637dbb93e0718432cbb40379aab018c45e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "eeb47d56226d4706075f5dd739ac7411e39f4f3ff6ab76dd663c054da2197e87", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "cd7ea963b2b30576e8a36044eeeb47dd49b314a56f91c256f37c9646d9fb04a1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "efe30af4d8c8db38ade7899e46360b429cffe8d3fa02570632e9561ba791c089", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3b088bf38674dab1efa15daca50c1979a083e2d2b12bbbfcad28526b545b1040", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "3cefd0982e57e8f256d212148ebf656da89944796b6b0a879af0993d757e3964", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "1be6b556e7d091d286860c97390ba47e35368596eb1a69765cee574213ed2c27", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ae128c998e195a6efd7d0e57dbab83cb03922091f8f63ac6d50a7f5af730ff03", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "7ad0bf0fb461eb211dd992588a559fa674246bfd707fd3571349e3c60f145e6f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "563f5f867b22e751cfef394239d788a634709a1ba2a7bb6256709ba276b6697f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "a45e0089b9b46dc4e2e801157236f6a3dc75741e90d5cb4d6502bc1461bc72c7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "9bcc4b819bf4572e1d4f3808c04018dc53ddee7d5e10af169e92886c6772c7d1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "0f5bef655069f5981d7105f852900c72869318d1751308edbab7be1aae90ca82", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "cb6feb61cdc2b880c07c2a46413122faf2e71951590a3e463ad3ad3c42a4bd05", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5bb555550ca12517de4934b268b800dc1b64c562467bfd3d6f9530550b186f3e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "045b3bb5952fec4ce2fd084340329c722672f27fab0a32cd86ee7e07fb3335f6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "d2b0bb098aacce718b2a88fad47e9fb38d3d7f88f30b11ac32d098e63b20a230", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3b533d5495c8aa72d91a4fcd973eb40f71f4b1d0c476a5c0a586c31667a06e63", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "f5842aa754c6880682a162e23fc9445b40710b3f98ab91fd8b3019b4c18f2e65", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0782d6964ef480cf532e85f5e128cb7e0fe43161bb1106653ba1e60615dfa919", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "f26580abb55e3043472888590a70293d109ce3d737ce885448d37deb6843adb2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "21856333efe7875b726236050c9f326fe15f41f8079300ba3003530481be61c1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "244886dc665abf5eae2a45e47e346dfbd1d101b809c69840a2700d6dea7c59b8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a50d03ae89dc363d2499a3391271c2b0f8a85b04020065a15845af71106a3877", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "0e281d0b3182f88ea1191c7af6cc3d3caafd6df597be24cbc60881e595061c9f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "f71883b2b2b773d7dd61a9343b623469b120fb9891bca9e64d972e46b29fac30", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f2cd1166a0387e85fe0159b31b62da32c766bb8c33def1f99ca7ebe0910195bf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2ccb4903eefb11b9dd625da83d20bde4bbfa06459c5ee654a9ad339d98b2c6b4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "0a0fe1e2a52d78644d2be790fdb4b0f96c136f4690ebf7567dcb5593cc7e7b08", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "d8991ef31bdaea095859fea209bf724d1f0d40c75a463dfc5df2804fa5a7f80e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "528d8158b70956ab39aeece199abd5fd4cb7cdb6a715baa6f793f68d70cc792d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "b88953a0efcbe76c8bf50f1c2a342a9823495f0e5bd86f647b6c335344b151b9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "9d29b0acad109f8b7ac580f079d25f64be097bd3d52d92ab8fac9bd8c5e207c4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "591a790b5c0a6b8505994bba9c28a2e89cab90b11240a6df0a4948d21ccc0c79", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "f8551c7f2a8c0e24fe4824065bea5190a50d04374b24425d83ec865950204622", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "1e7719ed83d2958c8f629e6fdfcac2b2ecab14007aa347fded0fc3f8c96102b2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5785e8556202b795258b01aca7098114bc9b386c738f7ab860e8b828ac1b5190", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "fd47aafbcdb3f6b523e8deedb518dfa2586aeceb41dbd86176d3be5b0dd2f32c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "744f0cfd1fa1e13694954f5c6aac09ebe5cb5acf4e963d0e2a019c05ccde1dde", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "f076a2e8aa8ea10fe1c7850aa4e03d282134fd209614dcb8a8e4bbdc62944cef", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "aed42ca5783efa71c6086201241d97c8af1c02a43c67c874cfb329f5a6681538", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "2503b5f47b062dcc3fcb24637ddd1ed65ea4eac42f82a4cc84066273eff3b200", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "53e66e83ceb306a728ec825413dd9c27ca5a3bbe642ccf7b634c8a4f01064e22", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "f2cc20c85e9f31cae0f5218ff153221ef28431ab1697dac8c6978afa1514bab9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "36ddf6a564385ca62d5eeac484311fea2fd6cc0f30dbbda64acb592a6a898562", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "8715a39369fd7fdce7ddc64af99576433385b8549e3d142a9bbb81267385f7f8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "fea9e7b08cd4361167876cab4253c4b28d37a8ca0fca4b097869e895fb262f21", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "645d8278823821e9aca94387e30e9e36cac486c6229bda35acb12f0fb60004c3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9e110397badb8df6e6215b2fa88912293e18d46f356bd1abb78a729662e863a8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4c1cb7e418e1e4917e9ca3c36456bc63ca44b4eaaf26b508ff0d6cbf9d393573", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "4e136ac060cc68cd666cb1006be94e315adece1eeffe95b3c2c683fc4e0d26c8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "754d1ad0a2c6e51456f3b8cd30bcd480209dbe0482de8f1a551418726b58c675", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "1f698437c4bcdc1e3a61cd13dd7374786600c23de5933831c036e1c49ab789a9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2c9db21c8d514f84adb2e8e57ba2352b29e689f65492ccf4907ebb3ef4830e8c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "7b6466934653e17af19b298dc663b243925de80c3a885ff0b063839619465a9f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "aef71cf5066907ba4a9048848fefb7f269430ff5853e1899692cff4c86211a9e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "cf21e885c6ad4ec96d689da2d765ffdb5445af6b84271ecfcc6533bf5a40477f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "750d46865494e68cb5737f3e7825be64d0f38a57be5d37d817b662e6786c0d32", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "e2a891f703c767099f96bc28cadd696804d922c69b393a80ccf86525118156da", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "926ba65a27d4513a7a046c20dfa3de360321baefb94831adddc9c2e9e88e9a95", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d71726b219f78db0a56d863329b8e3315a174178fce5da2654469c19508ab407", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "7deccf7111ab3d621c0c0ef2c21f58f82d0da598019b5e4ef0428e70d14aba8a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "0ce30887ba8c8f7b9e58354beb37b034a4aad23f4b55b8521abb0086654baafc", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e7a151eb15fcd89d0e654d3e3ea9e73ec558e90bb405a69285e1199a90bc73a3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "cd7a950b59b1d083c2276c92ece1a37ebea95f3bbeed2dece3204fc124ea0272", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "2532ce5bc20a408702e50bc06cb2683ef1dc2161f44ec1e844454d2e2e473cd9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a24f36853d7f8a6d69f62ce8ce584e9459b75331ec0b688a74de6b4e2e626455", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a99a76833b0310342db62f278cd3c7ed134c579bb7f284f77cadb66d645edfeb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "5e92b8a5f67e491c3d611b6f1857e177300ad813ec9284529885fcbf26cd62c6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bba6b5160204921e6c002343a24bf7eb3f8dc1754f3bf0666010cff6f864c8fc", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "cd1b588bf0511fb661755fc55a6e6701500db89a30efeefba499ccd84d7ea30d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2616b35c1d9404906f01cd068ff6e69cd1e6359162a1e98aa09e0ef2ad6e6327", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "1e15d837f0279fb9ca53f1c9ee8ab2dd05b9460b37f190e6d23334b42bdbcee0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "f2d2a5673ec1aa20b0f7f8197454f86534a690338825f7d4ae1921df189f015a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "0b616160d357188340704483d772e3805e390bbebb17a9a4d81fc9fbbf0fd5a4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "f4fad9852a2febdd8ba606dbd9112f08d2dec1b3171ba6e4f7bac0f126ab291c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "3578e8191beac6589500ddbbbedc7bd7c1de9bfc074921a62f84a6e7ff0ee055", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "619e6816513e345bd283005429ce4b447c9af3e66a35c73f106992bf5fa618ce", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "5fdb4d77c39cdd91bffadd070271483fcb3add02e92774e1a2dbac4a039bd8b3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "e028c2509d7f7fc24d20cd55d81397f1b6012feb76c0d447d3448706066a6574", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "340d7c546e89c3e670f7328d8223ca4dda4a0c5d17c6145061b43589f7845c4b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "409208bf0cad063c6b965b3a6dd628de701f6258b8e247b6f43b7e7f2652bf26", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "96cf039573ba7f5b06a29b5f41abb428fab4cd0136c3b50f1c33e7af92586ac3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d5ca25b513cc3f0294b7207fea43ec844c832073378246102785724da0a99f51", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fb730292415709cc2170fad988b544b34e5c9d786ace7540cea1121ff2e0ac0a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "9c917141766139534157fd640bbd76cdc393c317db52947c17a0fff535388812", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "bb6af9acabb8d5717c4323d9eb21f6b9a768863ee8e51ed72bbe169439b105fe", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "ad18751da69cefbffe139d46df1553ddbf217ec957a198f96df494db16376de0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "fe8e7d2ed1181e1ef66f12d502234209d20f915565410c43d20ba57258409032", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "fce61971f75e37ca5633d0c5dfa3513640f312ad6e1ff387e96b9ca3ec0f9c83", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "9cc9a50541d5e1d33af1a8b8d1cf56d075416b84bf46ad966b9d46244a50711e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "67e71a2ffdbc8e5dfd8800fb78cf0bb4b895a358af4c3441a89c8c066ece6154", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "5f2ec1abd704ce23347090ccca63040a40db38217c8594f2fbc8e4e59ba554ee", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "3c48f197b526e76fc8efc9c64b353e075b4461795f3286a871f9ce87e48c042b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "df83dbd13ab677a077ab95b656da233bd2714d69fbd02b059eea54f1a14c293c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "3eb297487b71d2ffa275dad8c453025e0f8157f6ad6ad0a622c0d7628a4b83f5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6e9a453b2790a14f952f2c15c470647ea4ac56500f0fcb1575f668c0e51adde0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "169860b5374e8f9a61d2d78b94771b6404ab67eefd28d507054304ef85edd065", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "da21a767c80692435320e6fab84d68f32b2d8fc2e5f9184eb7d9b5fdda76c127", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "eb78523503ccb1058600f1d046adf51c53af85d97eb04c823adf76e0c13e20e3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2dda84b64e457229d80c53c95e0c2286eaa834b2aaf40c2c185a530914ad7c46", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "941d62233922beb4c5273d59cdf7d015f03d2ecb5c06810b0a6698ff085d189f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "850dc5667ece984cdd80079a5a969b29b6812d7e78f5ccbc74e171fb3384d289", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "470d977327ab5db64afb6084842733505e4915ded46c09cea6f0bddd2e892b1c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "e9a65e32251af2a9b7c55f957346c72925007e3b5d50883683814f54da834d2b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "24c95ad06f3958c2ce25ddef0bead6b0fa16dd30b9da942262c6e92679738a8d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "25008eae6df86d0abb61d93d8114ca2449cf02aa4f669cf5c95221aaddbffefa", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "94e3ccce6d44cf62f0be5a0e6e1e4661b4591cbbdfc48cc32351ee67196b1748", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "f083dff35eebf1007c5450f5c53821fd0b1219066e12207199d3473744c7a465", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "7dfe61158335028161bbc7c39f6de0ab5a09d05d715b3963a4cf7754dd390727", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "bdd203babec00fae70075b9d9c27e6dc57b6d27a26aac6ba59a204f7634f0b40", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "8091fd422080ef36cd2507310d4a1405c9a155d8db8e379bf3b2e002c418e010", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "9ec049a92b6f8c93856655c74b23219a19d40019fe1876a5383bfb22906a8873", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "f5403e191a099a21a7b3921da8a76bbf7958fe406b0eb79e5e5e3ddf107de2ac", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "e5f12e379bd6ace3867687d83c0667d9a2afc12168c85131dcfba715f0801d8a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "9fe4551903e2655459b704a27af9370122286ff62d6a17d6e89e2b01de9ac435", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "dc60a7fcffef61ec9e8be02b88e0caf5ad15be2c42147a9c6a79c345dfa81975", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "1f4fed9421168b02c973343ff8fc18fda00c3272634289ee9680bc1c26384b5b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "5dee587bdb0fba31f44a1f0bb6ab1970ed5a352c61db1c532e6279892170b259", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "adda8f7b65b710e89a6f4ccc47bdad48b73312701bc7a8392f00ff5f77b89f52", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "7b98bad4f58b30df4615b03e0ddb1915ed5022d01755731b7e9aff3f976ea67c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3f82f27c86c54339d6e09c5ddb3bfd85262a60ff972f213c93ac14f88b4ef559", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "9038ec7249d7f97b5ce5c443514d2d55dca661e0333d5ba77d7a78d24bd69546", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "5e988223bf4eee242c56ff8ef9c17a7bf82132b42a212876faa974256b8ec2b7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "53cf61c70f786970c4a5bd0a2168df02728dba76c352d1a0166f7a95482c5dc4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ee01668b9bf4db42a129eedd5c64cf333b4f8d958ba2d109dc02d0344fbc1f2a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "6b7a3ea12403ccfc205c80fde91c7ac6d26a2b9595e5285c810237b34341a2e0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "0aabdbc02a86930b7e87f4b6b037041e9577d39f41c91a96e3b063e9780c7929", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "b1e93709b79f6bc88e77ebcb05d1f78175012410f2614f6420c5ab4fa88f3e0e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "eede19684cdc5820ecf572edb286b43c59687398cc0ddc693c555b10724d96e7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "b76b5ddd72a43f0cb96edb4fb33ddcc335d142b5f8b55b19c5d71c7735e3b37a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "02892fd2c313977d0cb49a888e5742fe58257aebcaa9a9830322b38113a1ae66", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "3f4a9c1756d06f24f0826c6c23cb9637b3efbf78cca19c5fad7af2dcc87add9a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "fa5004d7d486a6cadf3ab83f6057a2f8b8f5ea1fd134edadd187069c302e0867", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "1f5cad401fcbf8360298a0e5aad8261c4ec2b4e332ba5e2004043f0ffb0e863f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "c17fe396b3a88f11714b34c06d650555ef3e1b823f7192ebe7c8c4342c21a34e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cc1a2c3901d31e5e61df2f7930b165260eadfd9861c716975ed2a731dfec7ce3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "e29d664e27679aa395aa0943247008916e83d915cd1fbbcd119e26e79971b6cc", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "2fc068b6c52c60fa08d17e22d1f2cae5cccd1f7a07195186c06039de16a1d8d5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "badbd400a038e03f0a497b58c5d899197a52be989bd0ffac21f89b82df6276c3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8dd0d8767fda850b9a01df36e0b3a2958a9a9901aeddcbfbb77f6432be7c680d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "1e45f3ae63a5dbbd8a032e6fc7c4886562564e31980df8938c800389f1530523", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "b2fb218e52aab14bd69fa259cac13b2d80532a09ba8cff32c942d7949fe439fc", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "d660115d0c4e49f63f32691468a09a63b169a9594a3f8eabb327dc95e1f085b2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5fc8a1e64a9b3def8809796d290729dc79bb6948114b64c9a67c616d72884124", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "5926455da6b6ab912f2340999760b4df29e8c05962f4cba1292e8ad165194f10", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "29da34baabddba5ae59a8f4522d96cb1560b2f19f182929676d3e4b5524d72da", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "cb0f0e97b7eeed21b668d3a06ee5009dce33593c21e555ec11c5d7b5547b71e2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "0dc3825c5727d6fdf310eb968b15cf686ef9ab4ceb5c0039815f7d84939edc9b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "662e2b21b557bf9011471e69423119ecbbd2b08cd411da2ead2dc191894bfb4b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "eabdd448d62955b9033f3b2fa055a25f54c7614995d9af7b04fe4e478e7a052a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "b3fe1d694bc5defd16d902bef5a382baff8a1947828ea0e348a7c2a903af6c0d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "00ce75b1d92c4a31e9c34c5a39e8370ba57bd62818784a6331ef4e549076a9f0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "635f9f133496fcec99a8010fc54c5cf6b081941e598443fbf46ebe003473e70e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "baa456a095a25b80e4b2c6643055a8eda935677594882f7ef7723d19f64c8927", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "0d088924b3c6ddc89bbea7115336aeaa50ab766ed223cb2f876d38dd75ae8299", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "553de46acf422b2ea33cd0f9216f081736d2ab652cf8086e4001a228bca0d643", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "a60d032c190be462fd2b9f9796e9e0ef44c9e3b22d2f577c69b0c5c6861281fe", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "1795aa449f613f82afc3f093c8058430a037447ca07b3b6c766fdc1d76f74f79", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "c75ebcdd1e2dbd9b9e0f7d3058b174fa7b11d1107c3713244db1f8674073a516", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "3d8af4a70942a719a5e142371ee5dae2642e59e281d44d54d594238e64a79fe1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "42418b24e80f9ff2f42bda325348e8c039f0d9a71164c62590f481a31dda479e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "70c63b5164ddb9e91b39ff671de051add9f79802a5e3a708b08ce6a56d3366ea", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "494a1d32712badac3474f36dfd3f8e60daf520a17f3310dca6555d56b01d326c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "95aa9b20f379a9b95ff80df082535da3cf3c8f390f2b3aed2b903dbe4e6e8472", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "62e763e991d2cd1554427d37f4c340ebc53bf54bd1e6faad25f2c7685419793c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "bee3d995359b6995b61366dde526b2c7cc0f2862ff5402bd33c09b2be1cc4775", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "02ca8553134274b29e3a5503366caf8cd56922843bbb8e7d3b0a8ef29c92b388", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0cc91d686c40bdbb4d9bee046756bb9e12c475750f4218840e6223046b3935f1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "fbd5f38aa9e3bc2b9a839e0e06a4df37077334f73300ee754aaefc763770ac37", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "179e0e7f34eecac343f4d183dfb116daa6ea751f68b4551a6012a394151401da", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2b44941f69511c27bdb495932d004e03381084d85c9f88b90e358fb3ba3b51d3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "73e24e0f8a8b6932e79f006bb3a905b1ea410048f43492901beb5e1ecfdcb7ba", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "333f5b4e233bb163b959e5ac819cf40074303f9da4810b5eb7c3fd78c5a72ec7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "58c311886293a63e5f71ce1dc986473c7c8007ecc90078a57e6a696b1b51c57b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9fcfb45193778d5f8e4ba1c489b27deb0a437a7dc549dfc2d40d71a382dd31c0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "74fc9ee505ce82354e49b8e73b8ef8a5cd01a0fbed54a1a6ea965dcea952b624", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "18aa0a473d211461f2d3607fdd30f8c3b3eb92cb558553fc353c4724c7ea677c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "a50351087cd58baf1e2019a0e811cb2e380ce95e712f9062544da1f90a86f1b1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "571e331163564e05539c072f0efdf61b0169e569c5ff3412a492ba4a77746a92", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "21de1e27ce2baab6e4c4249a81da796135b352189a5084fb17787e16b1e31776", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "4fbaa6ef1c51dfcf7596458422301c2ba3b78df7dbd6fd614d82ceb5d8a83334", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "3482c6bc11069b7b14c996ae71330a2ab6edc647299de3c73bf787b75fc68ee1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c05a8c2a0c1fdba01525b8339502adde6db4d98d1215fdaba378eb0000ee0155", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "d8c09614b458ead1670efc1c7fb7e1c18d6faae79c70026671ded33a72ef67a6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "9145c3ca28a7f8800442dcd838254d067182e0b5ccc40982674eee3c61e0e85a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "4c61661e9e3edd2224b4c3288076ea2bc4e373fb3c4f79e2f50998f8e6888348", "T3T1_en_cardano-test_derivations.py::test_bad_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -19350,22 +19350,22 @@ "T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "0219fd1dfa7f307c78295235bd091e65df5311b9197d2d601ea6055a304062af", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "48a38d0a4f53715fcd8739111bd1213988378278a69030c621491e1175740b29", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "56489963f30c357f07d1ab123f15ae58e7c1ea7f12a5e04db454c80f5f501576", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "bee5a829ce002aec05ebc38a5810a8b5a3eb8d54bf9147b50b8738d8da779474", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "e815d90cae0cd64bc8bab2a1c486658aad649799490e5f5c0a418ae4c5d10857", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "7acdada43c7974aab7c6507d90cc50a777fcc540b2028cb924b3e25c4eb8935c", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "525f350a3561279e4b021bf6f7b5756a97ffeead781efa98edeb00118a003a89", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0b71acccb165e095202f9b83032a42e283ba1b2678e0536a9f5eebb8c7e82824", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "cfa0a4cfa8617ee6f79654c8c9989695b16d357ddb11608b6272825a3e741b85", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e0ca078074500e3da9beb485b530a57cb37f991164b055a0d1f4728025bc44d4", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "075326b2adfc25dfdb07349ed8b5b7eca7dbad3a735f8d3dbe870d7d358e7a3a", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "318b7670b46c9397b04806541c75ad09b32ec39a56fe668be2fb3592236b9d97", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "6107bba5c7d05cc7fca275a8cd39a565e50dcd0a27be5df555ac31cb86373477", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "0b32d0b78b5ef33ce82dba85f1aa8941a448624715e7d8599036b927985a1864", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "3fe7410a53a84941f0b0ef1b11ac9b4d7c9d33909829c4af0d23b81151040319", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3f336e83e25475dbc8a47bdc54df1433e5f5fdbb0ed27fe146d88181d83c4387", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "438525c48e46a1404537769ad4fb195676c15c831c6cdf97033274e9137c99c7", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "b9228161eb94126b6c272a26e182dac0575b8fb41f38f7bf408f51c874e2a369", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "63e53ac8359d313132c0db6929b3ac327549906c9c3e3d88b97ae6205650a321", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6ef8b5276018434ca955475ab8eb9aa4b06f43a9ab6dedc7283f175e4d29b439", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "55b812527b0d297dea83d52c8dda78c35dd27f1e612d76a1101c09f465ef553b", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "01578224e12d182eb110f6a2db84cf195090375580c308cebb6c853920d49042", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "1a15a8a6ff70f106dd683968d840c12ce01538103524f9532e57cdcc6853ac88", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "4550f7ff4e2e082bd511f2971d989e4148faf8b895c8b3945ef7f21b6a0aa30b", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", "T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e8496b038e8ca13413c6045fa29739d5c9796f51837b724364185e3b310edb00", "T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "3bb53a82a4dfc14a3c3f5bb8f5d123f16263b2a72e4d300647b43bcbae3adc21", @@ -19377,15 +19377,15 @@ "T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", "T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", "T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3c9b233b7821be43f521216a4a1362bbfb4cf01023f3c8dc866ce248acd89cdc", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "b09a4267bc9d558460ab0cda3241b9fe4efe0b28434d15838907c42b5ff4a30c", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "944e55bb8849c65a7f2ac151bc7648efb453f320e0307bdefae778d91f264653", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "b232e2f958fc417e80e4893013821b88dd8f6362f32f0c614d63359542096191", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "63320987883df4a1de15b3316531d94409c4507d79526544a6760ff2e3a69f81", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ae24d85cf8f966063812686193186fda5c6eddc5d251dfc0268217fe228d7666", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "c84e1d6e3ee7a1d36c8880d456013b19b989eb71d53cefe3a2536a9a3c9bc4b7", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "ec8b95f180278c3ec14e9fc58d248cec535f4a17075e367731caa9a4627b9aec", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "88603de37c2b9d77a9acba2f06538e41bf579de324268d6f10b0d2a973a0f2ce", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "9d5bb2949dbd50136474af3699488365b1c849d7f0a476253c37004ceb96ec0b", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "6985a5f0758555688f914ccd6e495b26bc13f57661b4985cc0c08fd29e0338fb", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b796391e289be2af053f0a5fd01ea0d37c16a1269acc0d5c5dc9f542f6062ed5", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "9392a3afa65ea220ee3377c2ede7a2afdfbd9f34a87ac305e9d730e762193560", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "b14aba8f4e3debd55c29f89d78f486e72ff217214d846bb318244ed55c058bb5", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "5cc72c85d96426a9be6dcea6d804ec38fc83dc6ac5c80cc77c5a050056fbb91d", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "1072b38f8041f86849b0b6c3c2e3d3fed6d0d0f3cd2601435b9a52ecad5c0e36", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1c5aaf1abaca82bd7ff4311c2b0feae597960f8730750a39925851deeb5a5267", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "395124e805ff3aadd6c5de317979d5e3a849758b40c7e0b86494aa605c582484", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "798447dc3cc19bcb0bf2623b2067b8c83585e7557d74b00aabbfdf60e736d5e1", "T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "a086232aeb076d4e4e0f18e8a0648542ddf8bb45d0a3d5abbf1c66dfa180a4a5", "T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "71ae86d19602431c02b553d165e1028248f45bd8073c2b03006675148d4aca7c", "T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "ef93346251587041da6c5b9ae6b9424f44ac5442a1602d43173c03a2c5c647ba", @@ -19398,104 +19398,104 @@ "T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9595dbdb8acaea72947ab7c4e46df733d735ca16074d3e13d15fe76ec963f0cf", "T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "bb1df503f7b7258ac74818bad2612d342241cf5f3e1191f10b23ebe9341ba27b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "388e8281340cdb69c33f648da7928630af4c9a5ab11fc120e8febb9e1358d49a", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "02c775284f4f9f02a28c86e20a1f39f30634b0a41d2af9f07ef58b21207d8337", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "388e8281340cdb69c33f648da7928630af4c9a5ab11fc120e8febb9e1358d49a", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "4db4d7e6958e8522cac9cf7c2e9b6e95039334c0df7eace59fcb3726d2ad38ad", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "4db4d7e6958e8522cac9cf7c2e9b6e95039334c0df7eace59fcb3726d2ad38ad", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "ed762c1ecbfccab10f4494f22c724b5445f3e32a9a528074da50486e29cef389", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a2e601b069f253e97e8b7a05a5e49a6a4698fda508db57cad93668bb50bdd761", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "491aca3f327a15ec2a521f9fbc562ea3d826de96ce6101c63010d5110b7680b5", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "9675a0454600f0c82ccceabbe3870fc874f12b98e8e74f257f1771d5c344f8ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "3b79b61f5ca92ef1b05c33a8248e2b72b432ddf6878355b12bb23fd5fffd3843", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "780991e7dbcb070e3b2f5d2b6ea0dacfb9bdd610c0304960b25f7b7ab89568ea", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "24b4ba61f8e37adc2efbb0cd0057b2edd9a0418c14f5bf4df82b445b47ebafa2", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3494feb45495c59847921f3c95e48bbfe05cd65920c56562c1fc3dea257a8453", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "8609f002af12eae6bd07cf674c8e1ead51b22fdea83b69246c922179940655e7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6530c1d8bfc609f001c0c36872da508cca9450423d24975fc24b4ede2ecac9a7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "b8d479b2534d6dc86909733e2f4dd5e24f4ffdf70a5523a0621e7fdb9f623808", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6530c1d8bfc609f001c0c36872da508cca9450423d24975fc24b4ede2ecac9a7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "774b30e499fde39c71e5ede07a48fb0f3eac6840ee211d429a61843afdc93cbc", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "774b30e499fde39c71e5ede07a48fb0f3eac6840ee211d429a61843afdc93cbc", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "4f9cc0ed54a1e70782c32bd8fe4352f88cd77678714d1be11b7b90d68f5fffa8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "5d243dd04b31c247c090d55a212e5956ec4a22a0c3c7eb3f9181c6d8d5b01b98", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "2dd0a8968caec5366701563b1946f855bdac0de9a04705502c242753d9b9df43", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2b2fe03d6a1303d7bab8ac33953e39be4406afdf1af4b6ff257c89b06f819eb7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "3b79b61f5ca92ef1b05c33a8248e2b72b432ddf6878355b12bb23fd5fffd3843", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9daf4514da804e89d82feb397d146965fdd99e055e6df0bb439ba1a558841ef3", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b58db3bb271939f7e20549d91323992862e466bb9c4e22a539644eb554d26b22", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "8ac449423877076eccda6dd675899b3f175e708c6a94ebde57351c5886cb40b4", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "5d53372717ab646112723bb822c472b9c11d8fb7375bad3e185e66161fe95f01", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "217dd45c27267ed0ee61c22144dd97db158b7568f4fdc7621c873e0e6771cccc", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "9c6a5f26a773ea3b5992b108a20e1af999a578f7eba0c33ee8dfd54a323e65af", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "217dd45c27267ed0ee61c22144dd97db158b7568f4fdc7621c873e0e6771cccc", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "c9156ce2c5298545c9bca0b2d6739b2d5f3f3493dc67f0aa18376e1870f7a7bf", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "c9156ce2c5298545c9bca0b2d6739b2d5f3f3493dc67f0aa18376e1870f7a7bf", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "38237d5eb81a6e0feaa3b61bb848dd841732d6690f55b7e1c89f552c6067a6c3", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "809a97a5b21ca4717f4a458b1bdb02d182f498c564875bc0059473b6a7b35fbd", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "758263c13d4e67e9f37c381d5ee792f2795d210d3716c6c8e7b1336983f81716", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "560bcc24a1cfd88410ec75269103e03d262d0b958caeb6b1140d028ece0029cd", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "864bd37828859631cc043c98033aa63d9d3d5d83a0e08bbb2008643518329ba1", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fa412199ae98717497b515dd299ba49fce20b820cb889276a22e331f01bf7196", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b07a54384b76604955c6a47e717bb3363863b87aa480910cd19b5b5507d491fb", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "c4ddfe38cfc2dc8412b9ee54a0d455234ff2964cb77d6a0845dc64dfc2262174", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "b4c4416511c892d8c9cb5b85161969b54892cdb6bb691e8b19e53a857bb7af92", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "aca993fa0adea131b4ca1bfb14e22d48cda0135c763f28797ae51d860d59ba47", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "b4c4416511c892d8c9cb5b85161969b54892cdb6bb691e8b19e53a857bb7af92", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a0cba15eba6f4817442fa9caeeb565d807bfde52006d461c167417ba705aef19", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a0cba15eba6f4817442fa9caeeb565d807bfde52006d461c167417ba705aef19", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "8896fe98b96cd95beed359d19635a69105e41028084bc01c852dd8881eca9721", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f004e6ed69d4c31fed4577b63411e0328082b1ae43086fcbc0d2031ee5baa917", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "10f898a6cb6dc0c8ae70c3ac5c63955de520130776592da584e40251d48eb9a9", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "560bcc24a1cfd88410ec75269103e03d262d0b958caeb6b1140d028ece0029cd", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "2eba6e722e2b61a10f61fa188909e314e0d72607faadbb756cba127c240d4776", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "82327619dc6e7543d14948cf8738d4ef6c246dba676c27c8555b97af70c315e7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "0e003ae3b5d3d7d1b3632740c856e7c70267e6cfd43f248a8631e5abf3d37b9e", "T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "9b995b6b5c16c46ae079e8227720d71b58705edb4c5167fe666c91c90c448ef9", "T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "63c38b214e565e33ab8d9e9bcb60f4ba3693b927734ddfe6c40c845640ccb0b9", "T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2f1793e987d2e666be02f3b475cc2febed54b158ee0f5f7759d5ceb1ec4c71a0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "780991e7dbcb070e3b2f5d2b6ea0dacfb9bdd610c0304960b25f7b7ab89568ea", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "ed762c1ecbfccab10f4494f22c724b5445f3e32a9a528074da50486e29cef389", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ef55c8eff3c51285e485b3fa457fda174a96ee62702337bff94dc522f05adec6", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "491aca3f327a15ec2a521f9fbc562ea3d826de96ce6101c63010d5110b7680b5", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "1bff3d88b80d988c73fba1b6ece245eba706dc27fc0b7245423ab4d7b794530a", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "87d21f563d6c9b75b55b8bdad3de811257c2f35a3f9511a8052f22fb0e3da7ec", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "780991e7dbcb070e3b2f5d2b6ea0dacfb9bdd610c0304960b25f7b7ab89568ea", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9daf4514da804e89d82feb397d146965fdd99e055e6df0bb439ba1a558841ef3", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "4f9cc0ed54a1e70782c32bd8fe4352f88cd77678714d1be11b7b90d68f5fffa8", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "367d4f780b9c41ccd98b422374d2cf534a8e20ed50c11e863e0b37f5e9b7df2a", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "2dd0a8968caec5366701563b1946f855bdac0de9a04705502c242753d9b9df43", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a8c8f6d1a1804adf54f30d4c680a209c549bd1787c9fbaa036dc957d4feb1c37", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "2cfee33b6b6725155b018ee355bde97e27b2776a19e1918d30e06512f26e6dd9", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9daf4514da804e89d82feb397d146965fdd99e055e6df0bb439ba1a558841ef3", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "864bd37828859631cc043c98033aa63d9d3d5d83a0e08bbb2008643518329ba1", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "38237d5eb81a6e0feaa3b61bb848dd841732d6690f55b7e1c89f552c6067a6c3", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "47e7c4eea9fbc133cdab4c640988fdef56fd4f99f6633969796339d28b886b23", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "758263c13d4e67e9f37c381d5ee792f2795d210d3716c6c8e7b1336983f81716", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "1d7d31eb57e5c5e36e81d71aae34d7af89302ff503ed2760ac90a4648eaf64d0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "37b0ab837d4f81677ab1c83cdb48f782d203906a836b014d92e6ae7ac0c50525", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "864bd37828859631cc043c98033aa63d9d3d5d83a0e08bbb2008643518329ba1", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "2eba6e722e2b61a10f61fa188909e314e0d72607faadbb756cba127c240d4776", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "8896fe98b96cd95beed359d19635a69105e41028084bc01c852dd8881eca9721", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "cf945c0494bd928b21dddd0d65552eee2edddd504c7b0e35bda99039e2e7ca19", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "10f898a6cb6dc0c8ae70c3ac5c63955de520130776592da584e40251d48eb9a9", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "0028d5e70a342a057d9f487ca9790e195b4cc70c9528b15f33f2107a6c2fea43", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "e790981c0e430a0dea8da58d3b25f52b30ff472bd39417a03feb919e58d3ff35", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "2eba6e722e2b61a10f61fa188909e314e0d72607faadbb756cba127c240d4776", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "b573feaa28da9d85c19e8d40783b6dbef74bf11282a6a999aeb0cb7fb58c4af7", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "b573feaa28da9d85c19e8d40783b6dbef74bf11282a6a999aeb0cb7fb58c4af7", "T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "5d337c43cda947b63c3811ac7a50a9c334269bd2ea2f769796da30bfe31da0e2", "T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "d3b0b8e3049dda9cd11255640aaf7fa6a68f1d893661b0a9e6fa8952ab437b53", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "fac1419ee29d6ab815ac6b3b8543472cd2a14afcbbdd1bece02479e7e8c34c26", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "fac1419ee29d6ab815ac6b3b8543472cd2a14afcbbdd1bece02479e7e8c34c26", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "b9fea2bceda99a3dc7c2b4823de86cc8970129fdc672778ee17890bcd82a0402", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "b9fea2bceda99a3dc7c2b4823de86cc8970129fdc672778ee17890bcd82a0402", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d147b2f52bd6f93972157f52e18f8d18b60f4da188e53d22e3a0190079ffe4ce", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d147b2f52bd6f93972157f52e18f8d18b60f4da188e53d22e3a0190079ffe4ce", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "78cecea3d81ec5e6127d0d7c1867ed5d911cf20e429720cb293003c48bc3b1cd", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "78cecea3d81ec5e6127d0d7c1867ed5d911cf20e429720cb293003c48bc3b1cd", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "0dd81ee96c152f54ab9e83dad203994ef83b7d19204330b9884e0d130a11593e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "0dd81ee96c152f54ab9e83dad203994ef83b7d19204330b9884e0d130a11593e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "1c90fec7cf58a2535da12380b64a58b5a39cb48e95e0df1d830d41fde639e6d8", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "1c90fec7cf58a2535da12380b64a58b5a39cb48e95e0df1d830d41fde639e6d8", "T3T1_en_misc-test_cosi.py::test_cosi_different_key": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "35e10a26068f717bcc71c2c1bcdc3455c6fe4a3087fdfb8be89eacfeaec4eede", +"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "53be76082d6550492f00f32fd102b8cd9732a50b81fa12114530a731748a301d", "T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "35e10a26068f717bcc71c2c1bcdc3455c6fe4a3087fdfb8be89eacfeaec4eede", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "d6c3324db6300b4b18ad0ae80c558a3dab6da3b3ffd4642cbcc2d36662de5fc3", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "04c2c2925bfb543de2216bfff36d76c83766a3241742ae0420195b56403b0167", +"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "53be76082d6550492f00f32fd102b8cd9732a50b81fa12114530a731748a301d", +"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "487c53184cbef945408e652274ddea13712f22c3873bee38a8eb06d3546c9f3d", +"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "9e58f206de7bb3a52a171f19e1977ae31b7ad6bf503008c4c7786e790a656aa7", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "ec08b76bdfd4c6411f9f04f7f9d35f388af94c7ec20961d3927b4b01ddcf784c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "618b79863f9085cef28a3c1182fd83cccd1ce12bedd0bbf3ce107c216fc70200", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "5b50208285246fbcae68f927e01cd18935ea90d7d4da0f1885b2151dfd82351a", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "4f200fe7f9b62310c8788caa87edef87f7367f563da0e14af69366150e7597e5", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "474b2765da3fab9f750e662daa8fa7ca58ccdca58cb0fe6dbac1089104385f47", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3daff61912f4fad431c9b6e6c1f78604e30ff0a91529246bff4f6a4bdf0a6b73", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "88fc2b1ad644f3db80ed5aceb1c41df778dd361d3fb45bf9ebb490d636348123", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "e4053cade369c601246a891af97d445afcde482eda335ff318fffb15296a76dc", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "876cb54a4d410a93875f1450c7a21d2bc370bcff6f842de39a00f801ffd3af3b", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "12e9a5ae5edd41f38eb27ff9085694e494263e41ae1e73b202edd6bd99f5787f", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "78c9091f0e8ef2b12ba0131db1dde20f0e4b8d343d7f7ae7a82197a7dc081454", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "cc4ca7d8d4f1cc848178c4a5661a71ac7aca95d5a609f646261f9659a8e1aa73", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "5708771ab14aa46e2a7ec831d80a5e2785edd50a1c9d446ac6dc8a61b40b36ef", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a26837bfc545ff91edba434f0dc9d397efe025c755eaf27bfb17f18e352a082b", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "87b1f36acc0da81d3073174e1cf21aae5176e91649459d2322c7c12a6e03e26e", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "618c2fe6220a7250c1e8b90cc1a4014e60b7f5e17a954e1530d159a56a5416af", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "847eb6658e4f112e2e57b945363c429e8a6549eb4b3638a63e1bfb924fa9ec56", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "e7ab5b922fbdfda5c3183b07549a10aaea1af1c2e27aa77cbdee627f68ce8866", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "41c0f24f4291a0016b3e88f52a4916a8a9b93a14b505218716ac76a9de5c0402", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "b54889ebf13e743d273c67fef21e721800957172b145bebb16ad278662d2b76e", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "64480888c55c9323a129fccb0ecf2b5c70ca92e2fbcc9dcd80141ccaee4a59c4", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "63e67cd5b13ca28e3382791f39fa726bf3687ad1cb487bc8e83a38229747a4da", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "adce967f74c6a8824bc219bb3c087bf9a49f67c8556ae621ee611a4de9e3f5ab", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "9e0c99fc614867d36ba50c9b1cef806403d8f2d93b171f1bb9a7a77a7b81dba8", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "db2bcedad8f05dc3922ffd4f24bc66c6e76f170f2017dd4f1da0abfd26b000a7", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "377fd780ceaa9ea7602bfb8fb942d2a4cb8d8f66d061b8510f3644a06eaed2db", @@ -19521,7 +19521,7 @@ "T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_signidentity.py::test_sign": "07c4299c8505560af08d361e56a8fb38bf998515262e5ffa1dc59ab933fde403", +"T3T1_en_misc-test_msg_signidentity.py::test_sign": "0466d78f3ad22c26630bfba58eb069b656290981733dd3ae83e4efa1670cba42", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "169b4255fdf78d3acc5e66bea7cadc0df17568a527333a75d454eff787b6f9f5", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "2c31d9ce769eaeba420d634932d6dc8cd5c3088407a0ca520f5cf6369464d9e3", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ff6290aa5adf276abc2d1a8410f85d8776e7a7eda2745766e474c1766d306aa8", @@ -19574,7 +19574,7 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "24e59539ea9627589fb6f660d90a5c61e1a7f91c50540cf43c360c5162dc85b6", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9bfefe78931ad0662da0d3a811b90986ac615b306fbab341db6a93606e703b4d", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "1437133dd893797b5eb8ce8bb4af786dacd9123237ac36e8b2894fdeb59ae547", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "4dcc0c3cbcd4f5e2be1e79488fd62f53b3bcad149162b7abe94d6f0bac1c4b06", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f7ce94eed9a4bef10c517e37c583d882a59c58b0b382870f423868a1e67a9083", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f9885944e44f725181557c1198cb09f62f01cb1280a5326e70d7a8a28cdaa022", "T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "bd377ef66bf9b054a1886ad432702c26d2bc61f6d24968b43ac47099801c62d1", "T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c636813668a516f428218637658dad94435214e527dc653d31337405f8c2014f", @@ -19805,7 +19805,7 @@ "T3T1_en_test_msg_changepin_t2.py::test_set_failed": "0ebc831cb8454d21ff85175b67599c51bdc3af2018e2555ab786460d7c758bb8", "T3T1_en_test_msg_changepin_t2.py::test_set_pin": "be7f33fa7cbe3b8601c974a1c313f8efd13a0507e6f7e4667899da8263d5a391", "T3T1_en_test_msg_loaddevice.py::test_load_device_1": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "cb4bed9d89d11a4671b48bda061b2187f6227d24e9fa0f1daf9fba933edd42ac", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "ecb56b8d604ad046c966500455d4069d2b59766d6867f546d5382781d5dcc7c4", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", "T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "3007d4af69ee1510315a25c72eb60ffd54ede49a85c6d5113b21c04e2a572c72", @@ -19824,18 +19824,18 @@ "T3T1_en_test_pin.py::test_exponential_backoff_t2": "85bc6103083b98789b73b809df3cd45803a9e89c2f3a4334a7cf1a3c532f549f", "T3T1_en_test_pin.py::test_incorrect_pin_t2": "69fa725e16af6d0cd6f9b5c4440282fdd5ec80200376f4ffba445c798bdce043", "T3T1_en_test_pin.py::test_no_protection": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_protection_levels.py::test_apply_settings": "998907bde7cbe1e7afeb78f4f56d9165f070dce66a9b06375c720a0c9a02b27b", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "0cd0600f8bb370687294425789e58921615413e222e3949cfc94706438fc78f6", -"T3T1_en_test_protection_levels.py::test_get_address": "7e2c30ff43ce96d7e26c3395a5fe012b0b64c19fb21f93f3c6a879c147ba6288", -"T3T1_en_test_protection_levels.py::test_get_entropy": "20ddf6dec3fb767b5d7b1976e3ea0774b71759b503dc3f9a472ec13bd7e29418", -"T3T1_en_test_protection_levels.py::test_get_public_key": "7e2c30ff43ce96d7e26c3395a5fe012b0b64c19fb21f93f3c6a879c147ba6288", -"T3T1_en_test_protection_levels.py::test_initialize": "9bab9b30097a2c34c82983555d6fbeafa62617624261feb31c893c79914ee0f9", -"T3T1_en_test_protection_levels.py::test_passphrase_cached": "b44c36e5bfbe88722e29d0a0ae1495fc06cbf8ef2bb28a96fd4125192dd99c5d", +"T3T1_en_test_protection_levels.py::test_apply_settings": "604818dda3e0dd16f894bb1db91db988c69778112cf248a2361efd91599e0bea", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "a52a68dd61dc84ba5c4df3d4db97647945455b71226359d525862985b2a40e29", +"T3T1_en_test_protection_levels.py::test_get_address": "1b3777b70f68e380350a8026cfd95a12cb7f8f47175acb85eeef917851e470a9", +"T3T1_en_test_protection_levels.py::test_get_entropy": "955535bd43f6de58e4b7db682d594a3d7ea35d5fdc766312cea04169388ba24b", +"T3T1_en_test_protection_levels.py::test_get_public_key": "1b3777b70f68e380350a8026cfd95a12cb7f8f47175acb85eeef917851e470a9", +"T3T1_en_test_protection_levels.py::test_initialize": "43f7a88635b45d8fd6045d5b7488a3183698b866b626527913bb5579875ddca9", +"T3T1_en_test_protection_levels.py::test_passphrase_cached": "6514c2e60187f80be1fcd667c9cee392ec98c946994a572b14f24c59d0161610", "T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "f16a38d967d236cd20055eb23a9578213c1b7f1b3f19f61eec3cc7f7abc2a63b", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "938776173ce378338f9718d64aec84cabdcb23f15166dfce42c4835b718a26fc", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "0a57dc7f2d0bb91694bd88295756f4a7faf56d5f8411755cddc23e8ede179081", "T3T1_en_test_protection_levels.py::test_ping": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_protection_levels.py::test_sign_message": "7432ee6b0e803593b8f181df186e3c9cb615295d4980fc33d368526f97d52667", -"T3T1_en_test_protection_levels.py::test_signtx": "55c0f5c105b4bd2681fd9bcbfabd00a5c2d47eaa462269d49c462cc35f099bbb", +"T3T1_en_test_protection_levels.py::test_sign_message": "7b2ba93a14065b4fb15dcbb99188bbd0626481421172b597642f2f42d1cde767", +"T3T1_en_test_protection_levels.py::test_signtx": "9d51a8e08dd32b6e08e68f270ea4d35287170ac9d6617f82d08d7c721229f689", "T3T1_en_test_protection_levels.py::test_unlocked": "e08a96b24f115b72eb3f17fa5ee9628d1ae3321f0f5d0d4686da930e7f0e5081", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "f9687ed380da703aff31ea1cfbf280ec78dee613f75082a5a295ffd0843f5634", "T3T1_en_test_protection_levels.py::test_wipe_device": "2975d9b2fd1e6118e259de6ef3b3fbe7c016a7579c282287ae22c4ff02896187", @@ -19846,7 +19846,7 @@ "T3T1_en_test_sdcard.py::test_sd_no_format": "266a9ae0966cb0720c2515bcf91bfe3315103d0e174387cf389e998d6994d5e1", "T3T1_en_test_sdcard.py::test_sd_protect_unlock": "dd0572acab338caa3ca3c4b493dc7f857cbd8e89ef7f74144e122cf22e1283d6", "T3T1_en_test_session.py::test_cannot_resume_ended_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_session.py::test_clear_session": "e565d2a7d1fc9f7e62cf64e2f431e67c2bf4600a132f561f29be8f7388814131", +"T3T1_en_test_session.py::test_clear_session": "efe26d8c5e027aca6403f25343ee69535687fcf6d4bc6b8d98a3abd91f1977dd", "T3T1_en_test_session.py::test_derive_cardano_empty_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_test_session.py::test_derive_cardano_running_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_test_session.py::test_end_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -19857,13 +19857,13 @@ "T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "24ae537211d9cdd015f883185240ef4ffe0439c2300b7a29ce3fb13340d3b468", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "6084576089e22b31932c937600a7a5f4bb503bc95dfc1f19a7d6094f1816d134", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "2a60f99bd00450ca4975d5d781a9e027af5cac40409a7626db4c75db0299341e", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "5e27eeffe4b9f6f453ef3650660e62ad48e373c986867d7b08c4ab8baaa80e82", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "f5bc8c2ca2a0f1cbe651dd54912465d2ae4f69ee6c971cb2da3bbfe4b3edc34c", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "b44c36e5bfbe88722e29d0a0ae1495fc06cbf8ef2bb28a96fd4125192dd99c5d", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "a000f521b445022e3a0b9d36c6cd773ea1917154b6562a2b8cbc1aa04caa6015", -"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "088ab04d5f5582a1280f0672348ef319209f3cac84a650f20d2de84acacdefad", -"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "b0911b1f508826e7eb1b5a03a2c4af753ae7631e763dd9b825d7d6e6c24ec1a2", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "a6b4caad9912bdec009338898694de1fd99ec791e115c16ac01bbc7b466e0274", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "6514c2e60187f80be1fcd667c9cee392ec98c946994a572b14f24c59d0161610", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "8d8db28df9a3568f0dc2a1aca2dca2b4b5b32da3812444801e7334311eddb161", +"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "d505c094526efb992843e679429890b1c78944c07c5ac6f5f9a11d1e479ef4fc", +"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "65f9a629c522075701b9b874eb059d51d0a1e7ca1e21a449788a4bec49c55707", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a1563ce1f7d0efae0a02871947e7acb92a5ccf0d8b696ffd6119eab9d2585623", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "0c527eaf180724846a79e870865417e4c79849aedb9d31bc0e4ae858c191cf52", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "285fce8c1cdd0ff0981fbb2d25ee18b297c38e044ecce27eddd206086d1e96e6", @@ -20042,7 +20042,7 @@ "T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5f8e897a8bc0670c453852248a8f20671e6bda038f9190c4aec21eaa947ae912", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "859e7ae03bf3c7f5f354fd70408b702fc694750a801c1742d554dee4c8e74680", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "7c7e4466883209529d891bd9250d514906eb8e98c937efa037e4be46a6b9164c", "T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", @@ -20152,7 +20152,7 @@ "T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "006824cc743f06ebc7c97ad8e46f52be4c53d1201c893d14db96d128a7ae1dfd", "T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "2b893b06db0e47d50041e56cc0a204b9bcca2bad2b74a764d9b588bfa2216a80", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "a28bcdc31d761d3e8ecd6da158c856c9e05239620c7a17fef66cbaf67e1f4c7b", "T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", "T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "ea162a0640ac0c26166e9cecc982aeb914d434ef4cca529642484ceb2322f526", "T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", @@ -20340,7 +20340,7 @@ "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "b9411b65251e5dd557afe74b2b76f0280af3f55e673b6f48c8014df14a1bc73f", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "b2d9d9ae55e5cf6a73abf53db7e0bb813c4587384e5424a210777ec9b944a44a", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "fb82b274bb1784a97f7e3ea617af8f9c2e44d929f9332ab30c691028b704cee2", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ff0535334fe20a13900687e45cfd2dd55d40c2d173b68b9a62c2dff2a0aad093", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "1553a7173dd6798f74255a02cd8d69ce96394a3bdb5d02af8ce2b0423e8b8ae5", @@ -20364,339 +20364,339 @@ "T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "f1a4a3ca0af0a8b59330871f1669e294ad3c3ca4e8406e97ddf8f91849f6d44a", "T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "1bd5ebea39bfd825b3098f7d8743860d5a74d97416e99f6f74ca8b9d030a75a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "09202fe489e6ea2a6170a30441974547cb0e56583784d419e7166fb80691867b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "6afd8a4fbf8682ea280232f76b77dcf27c8140a14413bd12e4750c1e3991465c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "65cbfbbb0e0311155c6859a6e6adc569195de73bfc42b470cf26433ca5bb0097", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "32f41f30cb286fe2a6b52ef6699621e35d51974d6cd561176a7e37b8037b12d7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "0f5d5f1291c86d5ca7377092016b4423fd946efb8d10558cd68b5263b727557f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "001a0572c280eeca09ffe9b3c161909d4e2bb4083e024652eeb95669dfb0275a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "3e14f653946f8a4fcd55e84215f5d115841e01cf61c856760687e0cdaa5c62d4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "04c57b03aa4f944a34fdb90c0b1247802e7ad3b0d9757f231bcdbda78c26581e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "84f04bb44bfffb9fbe4c62db8686ccc9eca4e8f171828997aba54281b873fe57", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "78caeaa54f79e9d469b156e713a6e06c3c6e26148c3b11c81f9ab790d95950bb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "547025ab3bf8f096805a3e3ce52426113b369a6b501fb4a4c19752135658f823", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e61f23f52bb385c75bec33019e4f27181224df0d8bf66a82e32872bf706e6802", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "b2c9702a82b75ebff0f45098ee830a08ba0cef685120754b9f64343ad36aadd4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ced343201e87906337bd8664bd95b78d79290ac473e8ff00f4ce1d563879eca6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "b3d18c527b2dceb8b071e1851ba46aef7617329ba8e95cc15a537feebfe8b42e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "b03c9c906c3c29fa271e18049236611d513453cfcb6c428a998d8086b2118e88", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "55b9fb59c228aad186a117a9d8ae55faca7294e25747a98c567d465575474786", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "48db6c4c518db9e496832bef9e9e979efbb239cc52b6fe264b753266a4ff0415", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "0ec81a89deb5742d9ab991279297cc82cbec9083f7a1839bc2eeaccb730376aa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "bded96064f04e81511afc2905de585c8c91f03d9dfbf5be8c1fe24e820014c25", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "6890d7d521cadc5594df80ab52ab1ae0b985157919cdbb1881ef65eb92bd82bf", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "92fc1d5e12c9dc3984fa94c90027c10fc925942f48ef969663153ac268318962", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "b6dbc4e7a53442ee4a803efee6baefd4127bc75836163109f86816984e4c238c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4573c2f868df3ae899f5bc1c10d8c2612e4b932100105238cc4397e84c0af694", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "080e31ec1a97913d141601eb61aa0708f3019bae3b4fba07c2446a3a319cbf15", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "fb9efab84c47d1e67606f5be2966405826575000afcab96f726ca26b1b55c2a5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "a34c3d11ea42c761b0cca6ff97ea6ac5bcebce798dfb23bdc5a2f0f3c6c752af", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "1b48d82ad28a7870814e6f0428046f060ee98997c7563b1d2625757ee1fcd9c2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "7af89e078754e6585e2ed73ad1959acc9dc61bed3db0e6f7f3fa49e2fe3f1516", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "61e2108a31aff8238b5681a10457028d8fc9f489cffd79386ee938e7f5d711b8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "3f0b8c6479e6596341c6ee65e1caff5ee6b2a9aabdfc7ba55f0ea292ac961da7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "293f9bf71625e6f8602728db9524400cdc9bf243a03e57eed91fd8fb0d14be5a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4e74376e036a6f95eaf2983043bfff81e3f4063d0fe80b4eff62f37724cdc002", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "4455a87bdfc0999104c2cf0777f4daf7a6092b4275c3383a70c516303c0621e3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3180d9dca4f45d08d373de3b8768ebaea12cf1db16bdab518f313b3e224a44c0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "69ba280c6e16cd26740079d4ec54cb1e4b8038f30139c435bef718b8aac16eaa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e2fadf180048b7657b8f43b4a9834299c97e71d6a1632958008349f3c2f945fe", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "434a30d769bbd462e9ccb19b767f5d387dc5a63f7f00b382f137a195136dfbae", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "755f98232346df9d73a9615d48bb3305eed727916037667f790ccc827800828a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "bc14391453764cdee1477bf91f43a638bde901ef966180b9bb82a5b5bdf26b51", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "635c41856814e0cd2e399648be14230d38d57dce3be218081bad80b9d0997e33", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "1866fc86e4bfa15a370249a523f45b422efb8d85c327ac6c20f8d1f5dba0e60d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "8dd5afa0af0eb11d2d99e5eb622337c4c703107b44d5859e55dd683cff042735", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "84c9e8ad55a44fc8a39dbcdc3a30610bbf3c7b44057c2427ff432ceb855fec46", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "cc43a45b74840758ddfd75dea4b06fc2310fd8b0e26f0381eee8d252b0c9ac14", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "e0c68d7ca42727ab4ab4a5e99f49ac68852e844a35df25ede15fbab0fd09fc97", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "40e7cfa70c7ce3bcba1541d1d0155d968b4631e74911f5fd4485309f1c4f4a38", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "26a4381c332cf2e3fad032f417db2dfc1ea0c27f92cb53f40e65036559c54074", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "1d4de82467b4fa230bad9ef52adfdd1bca018dc29e95fb0c30f74022ffb446e7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "f34237b3befe5de31cfe0de692d3bf91f57afa235c0d071ca2b93b76cb6e2dab", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "9916a53f3f84f386ccccb250c0b249f26242c92ad794203e5e194a4231346688", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ef749b826bff9b6d1a87e97ace162f9e853a61423f2ed2113070e908da73079b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "31227bc5117e4e8ea02ca09b397ad909469e1167661657783b19ece13153dc99", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cefdd0cdde48b0d911fceefc97ba9e0d37ddb8d13edb3c64fc700d0191ca86db", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ab46de3d39946abc0d0237d6d7b0fb5ee0e8ab9992ed1276b637a23f1f5f4e16", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "02a3504a52edcc917ad60591bf517ae1b1da390c8ccb72cdd0d7bd761ca2c701", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "a31411f0aea4b5e85b8a64191e7680f990544fc9f79f5c0f8bd096a4b1d04de5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "6ca5f4df0ae30b2818b55e9bfdaa6d84b64191ce5ddc410e043bf2992ab1d661", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "d6aefe08c60502fab4109f7a8dbc870aaaea74f22a33e92f47beee4f9be03c0c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "d5604a0c47ffcf79826474b322c924c068ada47142279e253c0fbbcaafc4fefe", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "23a78af761b7317215b91af6e3e231391535798164c6ffa4de70e3664d2a073b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "c248fe42b05cd914f050805a42548b636aa657b236c410028c7571059153ebd9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "b9089333bb851df2990196c1380733e7fd2e47efbdcb067910d343d6714390e4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "6d9615e4e1445a15f02b3fc36ba9ae05ac6f13909d3eef946d01d241ae4e3f0b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "1d001d154d89a97b627de9baa4b5e704c112a1db102164fd5331bff7c1b5ad78", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "1dbb1cc981c9ceec92d5e4b83d7b05071042785670706d639dde536bfe7fc771", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c95efe1913a578e4505b7cffc3564f7654567a4faadeff5ae4f044ce1aa34e1a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "675fe2a7af7bf2423070802e4bd1939b5e658e0ff20727aa264a5c4cb554b622", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a20d881272924c3f4d3e9757768b697e7b91df6a75e743434243872231a19f90", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "07f7695b9a17fe03b882b2db04022d9d349f273b86c8f45e82335cefc9b16ff0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "edebfd1401e4ca928a09435120b968a9e11de011927f14893f71d98778b6b91d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "400dc4706f66e67a8d1aa734207c51fc311f87bfc7a05e760ddf478e5ee38027", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "07794b3c5c672c0e88c4b7c33d9b586b5b8cf862ecdccad789aeff1e8e1065a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "c74e37b07e55d1f5d5010b343ed38ea55bcb88a626647601eeb45a4a40306639", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ce45bbbf51e8fdc1a6b1e1128803f0986f067a69f9d204453a539197da0fee56", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "67717a3c37cc0d5b5d323e9afa30f820e068000e2472b48c28bc662f745bcd70", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d2ee569098d1ca5af7b6440e435a631ee923b41290b1d850678e5470f1ad5952", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "137cb289c299517fae9555bd2f82904af5ebdb24209f32181836974c313ad43d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "dc64b5ce0d8391cd1277fac5c8be9b4a0a24c0a10e090375060569a26df421e5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a591257bb2eb61d469601fe31c54d1cbde4f672cb60c674da0b7d8db47f05437", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ece85b2c3bbfd7d112c8062522f99502122d4a4b7e2f8b317500622347b2f399", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "edc35c389b6262b827f595b75533379c27f977a4f3310738d8e80758f3b6356b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "a52a84ffb5d5a0409fb75c9d7ff0ef925d936897cbb96365d067924852d72c21", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "99a047fc6b6ec75de68255810f365abda12a1808152dce52330dcbbddb38d19d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5ab20da00fa3a1bd7438e3ed72345d6c548848262ab162867934fae2c644d1ec", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "f4d6a5c996e8b3a67ceb638e753e190699ee40252fbc5746d0cb84f386931823", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "88abe2c1c33956d6a0bbbaa68111cd34178ae17aaf7f3ae78be5f6bd267c8deb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "506a7506dcae391fbfc33b4a51f4e056cf4efedb3821c9ff699fc9ae6ed4d899", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "7834eb281c7e0d92d8e3df5cc354d6eafa761d9290dc2450caeb7017dc79808f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "317ff13ba8fc94bda8ff1e627af1d8c822f26aa76654ce08a4c0ba29e721ed72", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d700942cffe52ca2e210c3ff216a42c14cebfbb47cc0ba0134faa5fe1de43c86", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "650ce87e2fd436f551152b21f0570d7a32337d983952c4d3b6b8a705d9e76bac", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "dfdebd8b7bbc45de3a27dfd3ea249bc509e6e7667decb499758239849bb38ac9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "a411dc16e6b227ee9bed1e82e67699b4197425f1b3245de2af5a5464c5db5d8d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e724b58073f579ebebd0bcc1b852f810ca33d9ed17c821f4d626ff1ff2bd17d0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "1fa195fa8f63ec12e04e6d0b7b2ab3a3887b9ab4f09255486b83ca09c8ce81b8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7e828f6b63b82ac97b014e1583ebf9c34c34c11cc2508c8aa58fd3bdb150fc47", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "3b939f7efdb567d729fa094b2497924274b7a92dbda6cecaad33902ee0ab395d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "a8f288747670600e22f100c54fff1d3dbffbe5f4d8bd36f20a249069fe95f6cd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "69c62341158438efd63eca3a345f439210c3a02a3f57eaceb23ca83e322dda6d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "b4e332c913f9ff9ec56b15380770379741f4fc1acc44553b3802d1263fc55171", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "93cc7746128a97bfd4068d34f3e27a6cb5a54d97279f6f14a1c31aaa8c9c47fe", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "947e633a8847ef0d5cbd835d957e1b8a3da9119d6fc1f4e7d9169297692b3fd2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "6068850fa81b51cb81d20c6a5f31f4e6fb02e27c59be856277bc1f1ff06c1441", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4c10152ac84d474545a64270c3e7a23cb23c5e0f0ee528a9ce615063a21283ae", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "99880828b7273a45a0f64e44cb0f41e04e712516abbdb498af1d733ca235d41a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da934abb78e7c5f8667cdbd22d7c847fb9d812fb78112a09a253f2163e49227b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "47e997593d0d5602267b32d4121f6e632e745b6318143ec77adda7c836f7add5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "73e02643f3a496e859e45e2890f424023e2ec37c973c44ee0619ff178de85192", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "90ff9b60e69376bc4c82195c9a473b03086c622ce269fdc424bcc8dd5cfeffd9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "7b3f86d6c16ab077e0d1992bd8428d5daf6ae80a7d60629f4dee5418ce4398ea", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b82e92bcdda2940b7964ab50a8f5e55a588630d71cda44a2f1a979b7725f6be6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "750d536747c4c3075b5637b34e67c0365eccf905063294e5cc9e127181912af5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "e1eae5b26e82886161d1725db64b7fbaec011f0ec115e088885c6029b1a90fb5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "36635c9c0e282b2db80d138b5b9fb5a8911f7bd4aa0126cf61ed1718eb5c947f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "e75696e4e5907ffb75b2d2e780cb0afa82e28ef59eea79980b27438a2bd3d073", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "827da2df3f1df5b1c074868b9cb0ecef818dd5d5ec2a84e97a8097f8349331e3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "fc8c856824663b7cc2e0adc852089a578bdabfeaac290d26c33e6b471b7029aa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "945c94921fc4ef43c1df2cb8da16abd38e07ad3be4e4854044a70ffaa82d519a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "1aa154ce24eb438bd316abbf6f9deb2b6427165509ffd793cacbe00a4d2906cb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "51d603fda9b55c4feb6385ac7fdfcf6e58a5bde046779ceafea9d1ba6500a719", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "a345b2bfb9dafe21d500baa91bd1acb4851e32e2b6d070006116f680e4a30c9d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "6d34e17bb7bdd69eca2512b0db3f4edec1e24ca06264f1ebcef93bfdb5b8c332", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d9c57fc2bb143a9a4a56562f39fb4b837c790fa1bda03390e1074146480f2614", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "d15501d189a37f949bc34d8abb60c037373f8da0af2977a8ff5afb44e23d2d75", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "31d801ce54f532bac5c13f8d58af523d5d357b9a8d609aadcce65c96727103a1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "635c71ac5d67c811f64c2bcfad6a521018262e0038282b19b12f8aca812cd39c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "7e671a655665711adf36dfe3f7ab57f6c01d42b6aa99ee162666251a806d11a6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "09f039aa68386166af16a4377bf902b612877760efaba33a0ed9d63c3419ba0d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "8edf598c4dd51f7d69048b5d23b497da17903a7fd6f37cf30cba40df8fa9c6df", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "61bd649e0d8b4c9424abd47d36a5cb0f256296062d9d6e1e8081c316530bf17b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "d818def2d41a30ff81c1b20e45d530e1921b6920dde01c789449cf05f0c58612", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "291a4a75e998f96cab7894dbaf5ed07d47c80f1e1d318a76512eda7c869eb1f5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "d548c2d14939b26644d19e7e2be9dbeae7f73b81bb7d99d3bb7ebe47a50a7b7d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "a6d3487fa58a41fe37c9cfb483a48e2b47be173bac5eb4cd803f57dfb5c97f19", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "171e7bfd7e47c7126f49691c765c719c4a855846e928e6fcca7e2eb0c13f459a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "049f861731522933520a42eff3649e2695b8ed927a5413bfb406bc86d01225db", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4cdc0da60c410b41ca26d78e61fc404bab9acd4a79275c4a6ab443e84b7232e5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "5d98f72792a9f0ad91c7052e2085edca6ac0c3fe0da6346c53c888a30fe1115f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "1156ee0314ff7f6c11b280a21f7bfccfc34c3d78657ecb498b6bf8ccde71a776", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "ba30de0732aaf50ffcef9315dce3a15841c91ffa05e8e5d561f21a7700a37b47", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "b70dc31a671947bca974f3cbc5b35faf289c4d4d170f6340a705b8dd3be134fb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "ddf0989de382e3b65df52fd7ced4dced1c9c2ef3ffc681d946c5bbe3f7bdda92", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "d57ebf9f13c0d1be9a2d9e1b503149a984fa3a9358a71bee82e16ba7db49da9c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "e38fe6c07095e0e50d1da4e022715e1e36a9d04729555c022ae972cd137e977b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1f980734075f2200124b14944a3fd60bcf7b2b09227a427c2206c9b4f501478a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "06b965fbab630cc83a58f7cf5f08bfd38f06c2b8e65682fcdc12668285145941", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ad636e417e0e9da091a8940e718f3e715513eb7c6203e96e42a74ea8640a0742", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "57db4aaada3be9d7b3a2d55a9795be8157d4f76ce9b63095f94dda3d9f907f74", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "262ad4d07124ecad85fe9206dd937810e6bd52cb64c7a2b6d6100d336dc09291", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "7e7416e753c1e34812a347b7c76771ac84381cae8207de8bb2e591a3871d71b6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c060c3b799c255864a9a48ccfb7ebbd6a1f2a04291c75cef7d45ac7da5f0f0fe", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "9eb8be2368d60135f910b537345575cf4b4cf1af04e6310a5d2e394d353998d1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "8307932a29b2b6613069f00d4d79542d9b843296a3caee64e58ff79606b80970", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "b9df2481dee13e0e86bf61b4dfd69226b461ae4b4a486b9ee9ce886ef37e0254", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "4e2a20d768255719dc13347d4b34c260d0988b9c1cdec98bf75c9c778b08a779", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "98bbf2eaeccc609c64ab28296502885f47ba097271ebc7c145594b3a3c1fee23", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "1561f899f3676a4e4a3c05628324bd52e995364be8fbfb5cbd3d4a553fe0a8d9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "add5bebc5d9b8778171d501ce6483be0b443305dd6f3d0fb607c5f36d406bf31", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "bdcdf893e2e9fda3a0454432dce95c5e464edd785311ce9d1765e2a7d8791c91", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "374dcfcd45d2e371a1c8804efc0ed469913e76323d638b50e9a7e656b04d99e7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "a0ac3db24c64c73f5d4519b582619b9b363405fa81405615f846836431d77e4f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "46c5c4e83aeed1fb27ce30c60d75e6ac7cd4c74f2e8e45507b08f0829a9aae2f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "b7fe55ab64593d65544a1f2127788c387c83bb908538ab5f042dc3238d33f3d7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "01580536544ff19dd8ef63a59e2778a9da075a50420500e1baeef9a9e135936f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "afaea43fb24bc39ecf6f7117b2475d693928e14f01ef7f681fb8f061d8877c5b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "607b4b18e0a178cfc4cc605f2d813cadfe0dd52164932ee8cf7b4c4525ef4789", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "efb23ab454f1b9944391ddac09419c01e8862063dff747b522db0f6922933d10", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a1aed6b55d3e0e28b525f69bb0263bcc7f8a6110e458ac247bc903e566005371", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "f22053ac85677b30496a681e5957e1aa3b94b8524068166bd71bfb5c478ec6ba", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "e394a8df8c0d8f7cb3f0395b159aa7b646be2a060a2c805322865ccb496d8a3e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "cd475d831cdd89f0bc96736736ff96eec3f6c7aea685edefba2c79d756bf4bbf", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "487dc046a246d644b4755ea51cbc9bbfa97ec7ee37f589ed8e416cc71e063a12", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "27b5a3a62a4fbec1789fc3bec3fd945246cfce5e6fd630938129b282d2871425", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5ea1e78bcc2ad214ff522abbf601c63de1f78d1285d6a2ad002ec43987f4ffbe", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7d8a2b65336e4f321d068f9b254e8537c89ad9dad1546007f5cbcbd471617dd6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "c967780186fe0d4e01a4f81b0d6733cdeeb9b795c5563bb81d24dcddada67e08", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b1ea5a52b04d44d76f6c11ad2baf0b61f21ccc673377e76db4446cda8e0168c4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "5179a2387e984a6f786e1b2f7a223f756eec5e662a353339e80a5ac6b735337b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "73e0acc8b52f2e839a1ed346253849bb6ec6509abc947253ad74d653b2d20337", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "584ec0178c515b8ad13e33fb2b11030211f3635565cc7aabd60961c4bcdbc6fa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a782654d28a0f479892d0d3c4305cf46b281f74a687b94a8465dd25e8adc7429", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "bc57f2f902e151ef2630dea04b26f7a4b645b0ffcf34bc87833508a06bb9f624", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "ffe6eec5e0a95a6c3302c13eb7761b617b3b828c1201c80a49d4b68a5db65d50", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "b0aabe77759b56246d804babd09a5e813dab1c4adce20768eadd43c2f02c75c2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "11c62ba0bc20f3c8442380abaeb91aa3086645c0e11f078f7d409f2011f4ef92", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "76b08f440b0976c021850e1914104cf6b596e783cfb20b99ef2e575fa26eb033", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "b9cd550aacec68f92c89ad3e9d71cb418278a02bd95b565ea904f8610a6c10ea", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "516666df32cf5011ad91aa28fbbd8469f4f8bd7c33ab42f0456f08bd80326f55", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "221ff975d7c393b0f8788f38b51f95c5c39f544cb4edbe41c4035f25cd891a6b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "341afc9f88fc2b9a453be4adfe503edb1130b80adf724e637bc65d408421dbdf", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "825fa1d6a3e9cac138b6837bf48df0b03f1cf70ed7cf8d733c738f088d7acc59", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "b38a7899d856da02cfca28bd954feccf485bbb815569f7bdc1aa8fdbcad47be7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9161f42ffec79df462f3d5f5b08ddee79e6b3baf485d783f7415f462b3ff5e07", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "60f24c8d9e855e5d5fc4bfd4292b7cf4abcb04b45ef25e943941ffc437a5836a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "e997b0003e8f20450fcc2635822141ffd4a1b1bda9d9329091c9aab3aa745f8c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "adeed4ea78dd016d869c91fbfa7bab37c0ec978446c8a340d755472e6d356fd8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "201d576747c43eeeeede9bce45880f7c077eb33d665af29dbd491dbcbc6de483", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "8a0f476ad8ef2f2049df14acbf13965171bff6ccadd11822bcde78ebcc8c8582", "T3T1_es_cardano-test_derivations.py::test_bad_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "a7a4f145f96a55f5a3e4184e49c2094104227b9d3a3214c20df7fb34001c519a", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "da61d144c176763f0b184ab0a1c1ca319b4f380a3894336b994abc1dd3d25c7e", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4096301093ff0a95421108d77156d64457911ef7dd41da5d1766d0c5bb9c959b", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "76ee6f64d93412b331f9d4203b27e96798800108e373e5eb528f9b7819a3793f", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c28c2b849d9c6a2b61d88ad692a5b943bb5f1e3efe9a7499193b18d7b477e1f5", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fdd25e24a692fc058e8ac02a9e04ab39a3a87c396bb0108abf71487bcd32eb44", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "befe8d7a0e701967415d956b0f5f67266c3f3d5b48b79ada7eb59ff06a4335a0", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "2fe719fd1b0924fdd075e0dcaa1fd4188588b9cc6b18a443898fccdd896bdd07", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "573cc5b42a663576b20852ae5cbc471769063a463bc40805c28a414385c4a34d", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "89ce94c57eb685404016547f705a2fe0293c4034e855ebeb7b92c7b1b91116b1", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "afc5e9ece7c4f2cd74808f6bf58808470968e473c208f015e89eeea89b634cfc", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "46dd0e092cc31ea2da7ac4f963d5811697c2e52065199db4f73ea40a43f96421", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "a19fb6933126a40c25e4a7f7fb4f9174ed5b2b87538c1c059efea444cc4d747d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "3d02782d96aa768fa247ccc5163fab112e45309bdd40c74c6b3d83b9445a32dd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "208c16a5c3180a52765b27601431ddfc4eedd6ac259ec0222ea94947c9c9cf0b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "2b07f5980cecf1f22e0fb8ce14137ffaa029ad72cd00bd02f532cc6cc027e86e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "6f1c92f94e601a260f5b51b5c85e604b52e46d589c84c3542d686f952127df61", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "78774a9cbec51b253c218fac512a62bbf4d65e0a1c4911cce687b2378dd11923", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "bcc883036b9d85da5ffcb981ee082f8783d5b70fb637e45e3b866a54684f4035", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6183e1700d0efde1d088642375d113cd2b39909fcda555a42db0daa0ba4ba1b7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "16f1ed84e87db95de5924b4cc5623f64ac99c312825f20583adbf0f222316825", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "83ff3ade314f3242394a81ff3ddbdc4b3cf8999a1260578823fbb52a4760b59e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "ff9a75c957004466c40091ef17b81687930c8846de294aebfd4c2b63132a79f8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "d3a0b5519e776c74cdee4c4087b0689719cf4fab2507acd970534b1e79eca8cb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "c2d4c017814b8b6fc74b54fb5ed97ca935c38442e333ea52c56a52d963e9cffc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "c2d4c017814b8b6fc74b54fb5ed97ca935c38442e333ea52c56a52d963e9cffc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "55636167e69022fab0ec532bce180620b9fa7f8d81518427ccc401c7df8b9018", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "551c4e4ea3b069a6d4deaa487a755ee726415734de8e1c9ba3bb66ea1aab07d2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f726dba34bba626927526cf48444789757a94aebe80330eacf9c588b4008f713", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c2ac7cfe097096c9a1c20382d5b4c176cc819836e0c04731ad6f8a127debdcbc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "16f467b8643d91859d7979df97eb511a392de06554b6a0163283a7ccbc1df31a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "7c93c67aae9b4b05b77a59e6af0e4c2b9f304480f310b3415af10d828740b16c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "75aeb7e3ae9ffe25eba83d5db2cfefb7ed1ca57098ad2df22f32cfa6ec909de7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "7f0773f9a19cb58841f6b78f5c37860f985889f35d84fcf3f43d90b281af9337", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "54856b10f1e00f93c843d0b1a238f651aafbd9ee2b5ca759fce7bcea27994397", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "16f467b8643d91859d7979df97eb511a392de06554b6a0163283a7ccbc1df31a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "7c93c67aae9b4b05b77a59e6af0e4c2b9f304480f310b3415af10d828740b16c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "d05bedea99e9405fa13499c19677d90142194a0a7d7879f38adae7a7adc8e447", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "37edb426f88aa7004024d0999c5470f369e709049ae11ff146d73a8a49f32eba", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "2c2f91e82f01acf0e962d108cbe4bacc70940cb8ba64ed17e68635002f87710b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3b827126a4a03284c610978fd0d2b2189aba0d6499516c68e5500334b907b3ae", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "6cabd176818b1a7523a68a71e854ae1e3372d8b9bdfa9ef6c26e77caecd20b6c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "f5f31a30454e80d0ab504f69a1d2a6e684fbea6dbb8171d442a3b1676e102474", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "b0e1661765450effeb20827c69fbc067e4cf9847f398d3c2cfd9ab12eeb02df3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "724806b0423637432961111d28698e0d8cc72182904bdb8365c0d895a6d6d6c4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "55659c0522e085fbbdee3945f0b6574ebe5c4056933f18434d1cb02899346e30", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "c45830c6e364046af4b49be50604353d07612928a276a7374e712866c15d22cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "50a5048be22a6d28c30f3c57d6c49a6188493bee427d7aeac8ec810235b3da2d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "11045ca8cdfc8fde6d5e140fcd74dc1f2f121a9d8c01313c01072bd45e4d7581", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "9275caa9f1cb6c3990fb45aa6fd8499d558c7835738e566255880ebc69b1fac0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "d6ca6e420b73680bf9e24f34184b6d6ef9c9634dfc332d51ebb9fd901e3ed5d4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "c5dff36dcddc7e4fed47c36f99e40132e03bcd01113e7ec78eb1ae807df05b14", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "5ccd2086636c50b38df98bf9f7a7046a1dec88e9ef3038d806bd77fd3629c754", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "45c200255f8c86df5d0cd6065d825909294d6b8e5e69a8a13b73c3a3ee36127d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "273153988f07b3e9c1583ff14b28ef581b4f2e9cdf36cd9fd34890433c7ae3de", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4f9d954a79ef9e47aba426b28b4421ae5da6e30b4ccb28a4aad1728c8c716f48", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "b9c76877cdae856a71d16855c2953ca566f2cd1e95fc249b79c2d67798e93e44", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "49875a9a77c9940f70be6affb95c9d5dfdd1f59301742ad34963f1c527ba5087", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "b498d8fcfe1f31eda96b731d3335c368bdf9a54a7a1853a9aef1b229fca910f4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "547bb72f6ebd63836421d17e1af55a9805e4fe7dec78f59702e2e77000be5658", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "8c822d065222d1e4f63726533bc04868706e5edb76db6d23506355905ad706ae", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "2c154e69110032f3ee9ad958afe698c38297db17bbb4c8336355208f1256f451", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "b64f1ae5cadc1cc0ccf2c619d5d1e24c5cacc611efd266fba8fb43e485e016a6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "103d66a45984827e56ca15c8bdf8c54ac5d7d2d26a83620a2b2433d1c572d721", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "88996d72e11340f36727f2ea0198ba1ffb9cbde067f7fa60ab6e8cfe52c1d0f2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "707ebcbbc86f4e1b19902d108331f634739855b9adc18be93114440923656a5f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a0e32fe4b9e05e980188f279b3488c6c3074ce8bf86d190cf74f3bc343a72643", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "6a0ebfa78eef816c33c04c3e340b161d5b557045f11d128f16e5ffb458cd00e0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "139514c754bbf2105f245f127089b5e846002f78cc3928cda2bb7fe5ac730f27", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "8a4570de7aef28eca3cf3551fc92962101eb3c1add74036984ce32fc0c2bff58", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "b35f9388e94d03e96c9aec5318cde125c3b4e4057808ecd6358c56372055bf44", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "3cba5c8215a3256309a9900916abac56eb4813e563d5aa3661cb9d073e6045fc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7e12d255fb2aca4a8922b07d8bce567bec12c9b3a92303d03be49e47010f2148", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "05c0169692d4fd213bb9eaf1f85f53918a4b8f049c25c879a1bebdfba8521937", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "5fd7dc286e9965726c53cfd2c1ce17447f234f59c2f69d1e88de6addb1dc65d6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "82c93e96babcda57c8ea41e3ef419f88e6e4304e4a13daba5db993dab2997de0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "43695d30e49f3491bd967da1f968b9be5883beba8101b1f62cf1aa62dfa114a2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e21821bda1d48e042461c9f33bbc3f33683e01ab39ecc3bdc29dbabada0e63f6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "74b7fbdf01a713c83a48cf7c55ec84779b6b8f581fafd2a3e7d7aba2259245c9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "2701cf377455dd373316b34dfe398ae76c980dc7b83c6463b8de89ad2d599cc1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e6b39c82767ec34bf5e802cd649aba2252fc8af7e5c3a046f774a5171878cd0b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "97e5f787ffd09f674041eb0a665b3c920cf64ddb9a099223bc73317ce15e9f33", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "018a1dcabd3836873cf3835507f2713e8ab4ad3b4a79b51cb1666223332377eb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "9fe1ea0600a3726c35c36fb9eb6b3e71c96ce8eccfd3309b9ab38e97b71521b4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "e7663e306967ad28fedab652ad3800905d39f47506cb1a5bf40fb4280d075899", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6c4b6cbd5435b1b892bd2a552bfff80a335183e02c0a5a35c089f1aae2344980", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "00e0c05170c9be163e6f1039d6ec4c42192aeccb2166d646e7a2b9a30e194e21", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "2606cfabc909b3bd06697c637c7a65ae108b2db3f88d50b989006ac67db9d6da", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "c46f41fe208a0c1bae5f1ded3776e284e01b009fe144699d669b37ddddfaf2d5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "c46f41fe208a0c1bae5f1ded3776e284e01b009fe144699d669b37ddddfaf2d5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "bf39a981aaf8c48b61ed0e60de75278e490d5ff041da61dfd2cb2db681175dda", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ea73b277ef435c9f0a80d07236e9a251245eb886ccea2afe8d3f07cb35cc5e51", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ea73b277ef435c9f0a80d07236e9a251245eb886ccea2afe8d3f07cb35cc5e51", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "24c4744ce98890f412f8ef0018150e71c56e2c1924c575ce59720b7171c04888", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b314e0f1a0412b375e1d6f82967c0f2822be9528a841dc2dc6e3a45d68270337", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "35a604c3e1d7a51aeda4e76c92efddce2ee25561967ae3e6fb06ae57afcbfb66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "d45642b6118eb947866ea84769b3fd5ea43c0f30bea3c84aad787b4815160443", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "08436f0095a630bca6031abe5f73e6eae5320ac43021d9509caee838cfe316df", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6ea67f3339219d6d6b1cc60b48a3cf2df9beecd2d6ea072f239073b75440a284", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "2926bcbd0de90569a7648643e02459fdfc67b4c79bafe617fda7002a04a83b04", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c9fc6179c044c89afb9cc5256ad199a8921c25828a1028fdb3450dffcb84bf10", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "b9b835a300a3b3e0f5c89300c4e0229e94f4ce922c6db8bb12b70fee143d1396", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8dfc46978259721114a14309715f45cea4825fb0529a6409474c7225d4c3f642", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "3d02782d96aa768fa247ccc5163fab112e45309bdd40c74c6b3d83b9445a32dd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6183e1700d0efde1d088642375d113cd2b39909fcda555a42db0daa0ba4ba1b7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "aeec0147e3ca7757a9fd159b3572ed0e1dbeb6a449e013c831948fa2307d6c22", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "db7e0a364bdacb7cabb850039ede8444e08eb40f542daca5b4669626ae9170c4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "db7e0a364bdacb7cabb850039ede8444e08eb40f542daca5b4669626ae9170c4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "524f04954066e06f495f2442e6277c30d24e1b6f0fc652f0dee524cafcb146c6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "72cf0e70e3adb45ae2def420bbb5d53fc7ca373881505cdd6a879e2a6cd4d168", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "239b3500d21a6fddbd9759bcc5eff22c96f0788c7664cd3b5efc1e3d0de5d08a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "0c3f8b536271fa588f070a49a222a406b81ee7204f898cf1e7e3bb7256dce5f1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "5e504977e58c0f4677e3a7d0a317c04bf2cbb0f35caa7e3a710c62e17c1b9c70", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "074b7b204357d6aaf45e941f6d0f4cd37e9bd0518b476063f6af060b58f5c605", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "f8284ccb469a1787a9a30b257a7f71927237bd9492347cd7e597128b13d58c4d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "28885f0779bbfc9710ac14813b1dea630e18f48e4f6f68ea135b92a4871b9764", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "28885f0779bbfc9710ac14813b1dea630e18f48e4f6f68ea135b92a4871b9764", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "28885f0779bbfc9710ac14813b1dea630e18f48e4f6f68ea135b92a4871b9764", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "28885f0779bbfc9710ac14813b1dea630e18f48e4f6f68ea135b92a4871b9764", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "5e504977e58c0f4677e3a7d0a317c04bf2cbb0f35caa7e3a710c62e17c1b9c70", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "2d7ccdd6fe2431943e90dcd5d8c3e2c4a7c118a2816391b13bfaa558f9a033ee", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5921854b7eea13aad7b3cadf6002c18e8068100855e1cebde188bb99df57eace", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "874bb1a55089642151ac6f39f51dcccda75f994588dae64bcc2a60c1e9415fd6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "d6e5dd129ff19b7d0cdc6c671220c559646bbc7c3153b577a68717c626c750c2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "22de2acaa4e716c7d7bdda81612812efc9807ce90604a5c406c8e3bfa2bbc5d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b85197b0fc59dcc434eb7fdea1e691c5230619229ef3d1ae840f0d57e1b2dbfb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e0f1f2267aa0525fbbf7e886e02ec28361c02a6e466d27dba3b6b992b8082bc9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "9adb12892a95cfb423fa389d9da241c59bc99fc209027b6389c93d58ab193067", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "c301a5d4bcb4e5ab3685e30200ac4793ab10f525c40f35ac4ea99e3302ce1c10", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "683e98c06e246068c97723bbf96be0b22825d5e90f72f0ef9ea4d2d85cb09811", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "d81e4a63f9f5afc097e53b98da9400a58c6f6e76baf78466ddf98f7f38ea0757", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "db7e0a364bdacb7cabb850039ede8444e08eb40f542daca5b4669626ae9170c4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "de111635e955c01f8dff4f4ba3f34abfcec1d4b04be1ff8dcfbed952cabc32c4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "1469ca3664db64a248d309b737df7f387430a35303091490370167abe1349dfa", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "c61a67cea4ab56b3b43e51c27a741dda864621231b7ec0ee9c24e04a597b7f20", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "495c1457247d3fe547e0b18075e33da77d4075d96e2ee506907c73ade9f95a77", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "275c533e909dfb3e44676c415da060aa0a72df9d3fb37d610aa3546ef1a2c80a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "7d0f236e8aa321eeae89b19f0099fd082f0c47b6e71191f419bed702607bf84b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "114f9b02b2243d9a15d1b562952f039a6b24c5fe3fe8891c83150a50b8725205", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "02fdfbb8197429c810fb845f65fac61247154a4e8ce00de34f778e21a110cef9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "669e7ce08cd9d71acb9bc4fde172ad63b20dd67b0e819aea4f609e39f7b2b627", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "c4f03e2a3599473aefc714133e502e1a5608bb96961be1ed7e8b0babf62fdc1d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "5f32c2f6d6a9366970311fa916b613e36ff7992fa5c70331e2018bc5956eb460", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "d2b2a93753af0c1230c076299b2e14933367161fdccbbc28664912ff29dd4dc7", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "4a00052afca0f101e15c36671824577f6b5106c62b049ba64eae346f28e142fe", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "f277842547868e079acf716946ea18b80b3ea04e28496638d8ec0a030882a174", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "878ce5503d3eb7638710cfd645b5e68bffd30a3cccafa3186e764fe9f76fb1ac", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "421d1e3d5536df670b356bf7c693866a0ccf4e424ec7f492b08770da4f90bef9", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "86619dd30fd883330e10d4fa126aafe435b31b4397eea05031bc6238dd59d0f1", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "c6b2d83742d6785b8e2aa6bf93defa3bef4254e5c445aa02c65aacab063f1c01", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "0504f9ed35261a01d0e50b5a9b395ba523c07097403f41c755c65839b75b2697", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "9fc1ddfd80dde9b1f1c3cfadb129642f24588c095d3f0804df5df5003aa1c360", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "8744537783017f7a944aa0c1a4cac06f3906f8077dfe7617418e3ef84654cae8", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "d47e9dcd7acd5c7faab2bddbd2876ea4536509361c9ec543572d2603562ecb2b", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "e583a7858ecafedbe610464a31773f0f07c66155541865541cb3912835d43866", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "8c999cfe2e1de8eb46b6f585920a13523c20a2e232e3329fe1d9be51cd0ce3e7", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "8a1729e25a02865bf9a0d4744e00447406fdc252a163fb8d084577dcd34b70e5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "41c7a708dd4e81bdb14cd401ef19f320c047e097351c7e970e3413777b807a81", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0ff067fab83938a774fab0edea7989712c81beb08c17f807dae56e4de63dc298", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "41c11b05e55e22957f9c404f1fe1550c48cf208ebdb74060ce68f23fbd07c8be", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3c3a553af8d91b35f84106b0bcd9ff1f922d1524184632a9b8db3b293b8db7a5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ba20387166438699a9d08ea750248e1d6a2f18df014cef53c785367c1c469879", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "8e22b14e9ebf8c84b653b32e61d424e417eaf10ea7ec2a03288f92be121e0175", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "a878bfa26c6fb1f7295875d2d8c13497b0119504d0a418ae53de8972a87558bc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1a2ea434616a8cf92e9c17715ae579800102d56572c7c8e7655d7b39adde55a5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "91a542f48427cb85700b3fe569fe04ed6443261a8b4b434a940dfc3d4aaf4c7c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "9310cc6ac80b56a24c14a5c2e4b5c8cf043b5d925e52b55473e211759d436c39", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "fbfd813e494174d533273823bab214e605f80bec90b3cf6dd016c06c31424c2e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "7e1c11fe61421c8f97c54931e7d106bef602f95edc7bf30004e64f91fff4b9d3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "7e1c11fe61421c8f97c54931e7d106bef602f95edc7bf30004e64f91fff4b9d3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "489392a54eb670cdd18cdd3c7d78887346bdcde7174bad844df4478a3c0fdb26", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c71d45bd773fa4411424ecf86cb83859ef4f8645439fd3f08dafa952f654515e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "3469f3deeaf179aebb1220889bb90781746fc564f4f5e442d52eb5ebd06c4379", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "e9fb6a01ec1a24b6f799fab694b4198251d9fc31e93dcbadcd71b7b7058fb3cf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "39bc5b18b73bc4968ea650ab011abe42136e80a138cca99daefd25e936671ddd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "b9342436cee36298e094456f831f6bb0818fce31483e12846eb1ed15391b024a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "b5701b00671db96d59daf17ef091247fd0e1864da48eae457115a9c097533a15", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "c6cfcbc8c151e36f7311d4545184ac95d614bf97b9cdd362c7a41d90a9b6f9e9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "e3fdc579c428b06584b2b291571a60d7bb8ed6f50dc02dba758e73bc0b10cb92", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "39bc5b18b73bc4968ea650ab011abe42136e80a138cca99daefd25e936671ddd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "b9342436cee36298e094456f831f6bb0818fce31483e12846eb1ed15391b024a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "edf6bbca08badacb1bdd491e7ed69ab46767f33c7de7869d4b857cc0f6229430", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "01f362c7c35a4f985bd4b49d3d413f423a23306ab7b95ba15d6e6e2217ffb143", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "e3df1de18befd377f96022e52b289e3febe6f1ccee68d73df7bc07d5b94283cb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "157aad7b8d83813b85ec536ee9bec4ba2e7cc9e557a19ecfcb2be3ed9d983c88", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "92476483223e8fb7873f6d6ad60798388dc9fa81826337f218f320672afad04d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "c92b973042acba36f864cae4ed6b6590b645ada79319eb202fb0bf46a4cee33f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "8f0229468be01cb4a2b0c9d304ca7e4ffc1204b6c1f1b79815b0e5616c817885", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "fe00a43e4069af5515209fb5ba8a2ea7fcf0734084671ab909c58d0bde405024", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6dcf7653f3d243b960905e2bca9e4ef5f8401a43a815a3a54a142491a409abc8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "da17beef99bac91472e9676d60eabdd507a2b2b6144ad7816470cf417cf9d003", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "227aa25dd71a00819fe38b80dad878f8d19df6c63a011eb6bda7eefc122d53ca", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "96dc65ee59b22eaeb0abc3c795f27ddb77512a7073640fed351ffabb0a8198cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "7ac2448eaecf0b1dd15355810e94cf5ab7ae485b15a074456c61214ac087bdac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "7b0eff81524c31bcb0e1081ca9baca162c7674f8ac612f61edd5e6f3960e7268", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "1bbc1f5c79dd1daac86abd9a8eb8b5ab4d871881559493903a673c764cdfb439", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "b86be122a6a5e40df67d4cf08cbf43daf22284d5634dca28119f0e9ff25e1a89", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f8999ba7b394587198a264bcb2409784f53a1c3f31119db03e1a960d0fa3649f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "6a7b0fe8e7efed821948a12c901a793e5bd4aba375c93039f4db37fa64962b70", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fe67a6f71aacdb23b353abee9df3da3f9c5c3c8d8f1105320b3406e049dcad47", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "7df8923f10facfa49adf2ef6fa42c37d489aa484a21ece83242b355a4b300523", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "c06d42b563b71fae5eb14f47d7259f80267ca2ab4129871575945af26de07f9b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "a515aae9d513c08848c854fe32987d2859544e3c30685042a025d4567e579b7f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "2469ffc81e4d75e28bbd0bd171d77036e9ef436c1a2df838fc9bbd200e1a3fc0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "5a3dc99981aa83fe6ed4cb040546b25b85607cf506d64024808dec985ff7cb86", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "29dc6474e7abeb177702a45f1061443a1a6270a0eab8b445e897cea949af20da", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "6a0b23a1dacc53fc60120e7f806fabd28609ad33f01a56c76988634396497913", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "5f84e5d343dca6234df3d9ab34f53b78bf1bb3030dcaba62dd62aaab793a1bb9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "13dad19a1f834eaa1ac51a1faae05f3a934d2c9c26b52168bd3c6cafd9c00f7e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "856a69eb53276d5d884ba2141ccc11b436c8853788d8b1beea8fd838c72dcef6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a92084720b1bf88060b7a260f319dd732f5afce7be8cdbb5663dcb4609ebadc3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "60246a590c31ed2d2a89ca47ad3457666764a62c868496b1853a5177aba3a5cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "d607280ec2757a9bc18c4f99f5df138b5fadf28685e69c883d09c15650863a63", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ce49836ca7c00e99f3350943f2bf5e25760bba37027b152993754ad3aa847fe0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "834ee81e7bfc5c28bc942673d7167a4c52391fe1e59f08248dc2618be6e9a852", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "224b7f4cd9e77c9b0d87bb3e604b27bb045cd11b08e8ed32f198d1dcf5da8f66", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "10ae0b9c3c13dc0f6163ede18755d3abb547a08e904c347bf09ee64b0932bc63", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "4cca16b05ac679af154f23df422f90d2bba92f6210e2020f183744ab0f4bb006", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9bcb98e971a27262863a0a63beb56ee71e22d36d134ec4436bd89fd924decafb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "765906a61bf9d2f9942749c24679526c3cff688c96df762ce1489dd80359e02d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "bec918f09e6ecbd4724c9dddf9ce006d14447e4d51839b89059ff896bd1cbfb9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "b4bacd4610b6a247dcab291d147ec071ee4090df8bf136fd651b24a035a241d3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "41f5dbf34c1afd1bcf6376fc8e8807f08c399892d9b52702142cb803cb242be7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "9c2fb0bd8799978c6d3d6c22872dcce1755be8586e81a9cf0a01d472fd3bd4e9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7b7759d71727a55679765c6e547a113c4e80ab1aac76aceb7f3a3b2c2a4c0492", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "04e74677171acfb8d0425db089383b39d1b98f5444427e04e3c6ae62eaf26d35", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d5d8a252e580b61be39c9dcf8db62110759e3bd658c3b4dcab4ec64dcc5c9a5b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "1c56cf98821595cbb85a1b77a97d5c3e1c79c2107585bfdf3592fb27169d7933", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d32eaf8db334f3df56a84cd810cc27251315bb8b31dce7835ec8e35ecf7f6f17", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "87329e0567390a8a149651fdf37dcdb47ddb2a7986084b096b1e22ec4bafeddb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "8939726170f23a2f3e3258ea263a92cc0ed1ae119af8079ceb8172a1320d7833", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "c87a6a85e4bf4696a6e5b491064c297c9c1dbc343693c59daa29b0a1759cb8bb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d3a57cdc4bc1e9563ac8fb97614093c02e922ff90ecd8d373d773585646e6d6a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d3a57cdc4bc1e9563ac8fb97614093c02e922ff90ecd8d373d773585646e6d6a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "f34e9a199359bbdc65865ed4c46aada899abf1e53f0f99fabbb12095a3efc77f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2c0ab9d086103f8204c58f4d46089ad6d8facad69ba133bca21d9e342eb149c3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2c0ab9d086103f8204c58f4d46089ad6d8facad69ba133bca21d9e342eb149c3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "85840c00b37072b254b5abf39b6bfafef9dda14432c59434f62cb05f82fae67e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d142073a5a1332858cd104b07b72e37c8a104fe580843c1b3b3f4dc2cca3e0fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "7df802b05dff57feba777abfc87471773de0a75a796eaa19fbde000ae2769f50", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "fe53d5e5ee8eb3d2c0f727269955c7cd66b365067c39d423f4a0c5093728dd8a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "847dd0dd55888e250cee3c1f62a8ac7bd5f2ddff9a4bc8ff2e7a38daa45d3c2e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "a738defcfc7886d43cb7c3fdd2de08c24779e76524001df66fdd76bec32025f9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c78e295d120674548f41119ee62c65893378638c89a2af2ae7e9dc1cff2b6b18", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "875efb930d496b66ff2e24e4def68e00250db1caa64e29d0937945588b1ba9d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "b79bf92e53468ea630078036efabf204e3ff9b9b921add5e65af35330e4e0aab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "41c7a708dd4e81bdb14cd401ef19f320c047e097351c7e970e3413777b807a81", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "a878bfa26c6fb1f7295875d2d8c13497b0119504d0a418ae53de8972a87558bc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "87b91af082f9db1a47314d0cee9950356322adacf8a4a32c55a3600171d44012", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "4ff3d301655765bdfb28b5d259a409abcf3dc62007cc427d262f43c4c85565fb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "4ff3d301655765bdfb28b5d259a409abcf3dc62007cc427d262f43c4c85565fb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c99d26771a253c51cb9effb8b9473b6125e9c305ffffde3f57487ac468a3bd45", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "6f7771e79ad15de0504c54f05fd67687001ce0a3d0a8e7e46c7671ffa241af83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "2553db9f44821b7936934f62dc67c96f8fabe63892393199b8be0b7e2e1e7b87", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "f0cbdac6e6027d376fba2aa09bdb6513637f74ab0369a5201ab093b5f8ef8c60", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "f6455a1e18705d1cf29c79b2f6ae3e6367e25dd56dba4a4b38e3e438614e8dbd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "5bafa37f9aaa8d92aed18af98876be3dcb46a7a9c28ce6bb8a620dd466aab68f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f93c567afc5b801e922d9176331b9227113a536d91cd249d71338a0d28047327", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f93c567afc5b801e922d9176331b9227113a536d91cd249d71338a0d28047327", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f93c567afc5b801e922d9176331b9227113a536d91cd249d71338a0d28047327", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f93c567afc5b801e922d9176331b9227113a536d91cd249d71338a0d28047327", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "f0cbdac6e6027d376fba2aa09bdb6513637f74ab0369a5201ab093b5f8ef8c60", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "3eb42cd26866ace8cfa68ce48d902620b300cfde2b80cb516fff03d6fdf15348", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "1120e2f205dadbabb46018d9b50671e8e67cc257082755c1e19cd6a7c7042d3e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "6409eb7705300cfd8d85d69e7f83b54162c8aff548966395786c7382ba58f2b6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "1aac47295eebbda6997af2f5c04d7396d3b9818d7902f32230a943e64a9af22b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "4b1f4b8c9c1f66ccdc0c626ea602eeb6c8ab2af947f40e268f0297892449d5e6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "0aaa20808b929d49c0d45182347761847e00a5ab90883fa3b17abd6359924bac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0b7ebc0e4e0874499620c91b87a3259817687cdb9730952823d84ee7b73c3252", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "87973b0f586b52d020cf5679417d3e040b80cd33b34e57be38c9d1ca13b77284", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "f4e6727a7411907d7cf039cebd0a0e5b420bdbf18890a8b020bc2f1091c0cf9f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "99eef4826e79dc335dcab217aa81b62cc7ee6257ea19f862a4b3dd2e1d0eb551", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "465ec150a2b05add1a1d33f77077bf35c95a252539298e96b8f38728f0c42630", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "4ff3d301655765bdfb28b5d259a409abcf3dc62007cc427d262f43c4c85565fb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "b53b07d3243a44826458581f942f4ecc9065878f5f33e2bfec4e674efce609c9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "6e296d533b140259eac2b450dcce8de90249833c8e6ca9e94cfdd5e98d10079f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "c2133bd8f5947a822c046a97c3433df63d2c20c2e3aad9b8ec5dc8e120b8136b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "b3648c0a93dea01e50b1cddf0eaf3a313f1834e55ed6753f9744233004545431", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "1ae6aa24ad98b63f7e918af0488c596e35ae50e35a3c416fccc1aff04f5634f3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", "T3T1_es_ethereum-test_definitions.py::test_builtin": "07bf80fca6f7c9e8e57dc7aef792435d959962e054161e44ebe72e9ab578cf6c", "T3T1_es_ethereum-test_definitions.py::test_builtin_token": "48377961ba0ad46bb299998bdfde90e3eca35488475e703e2ae98efc3001512e", "T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "765f52d2873c86cf86728f9c848f4a6b4730c35fac29218232ba62496eaa2b44", @@ -20735,42 +20735,42 @@ "T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "5eed1553f5d93185374e2bffec5f67f2c05222f5e18a75089204c6479aaa28e5", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "6a50daf34e6ad816fa8ce8545b56bbe8ee86751bfcbb554e3c705c0b888248db", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1dd457529fb27bbd7c0b043fcc4b3232d2381819627bab20f947cca2cd874560", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "ee1fb8695dbd9cf8124262ee79fc29870b7496711f367470aef4bf4a20801b17", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "254822edddf0de4724e434f9e5de6bd6e5b57a0c9127acc813d4af1342de5c7f", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cad01eebdaf5299794f7cc5c9c25f9d2c9102b26916d9d14fa05bfffed448520", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "6566c99bfeb7a5f50082380f056d5481b4435f71f0d5a2ef8c2cb900b1da6321", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "b9a23dff089020be0b6f19e40cb0063e1d59bf8996a5d4e5e5b5ccac4c0d06ec", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "ea8681316783deb2a0aedafa7fe6bc56825f77996529b4675beeeb6862a1fa3c", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "9bb51e4300384592f81cd650cec9b5c4c671ae7fe8f3103c8030a66eaa5ebce1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "024c86d1cf17fa906e04b8d78ec826a12d983355c983cbe3eba425b079702b70", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "ce70b522baede7b6a24a2a95fd62ec758184da648ceee243f6210564bc38a38a", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "6785cc7a1b4669764c114892eafd80692a304957fc48ff51a984a2f248b24c6e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "fbba35983f96e53d4931475e53cefe2efe3b5eed4b49afd6ae4018095902119c", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "a4d0170014dc94c5aff9f9cc85e74395b539b3df7436d1031ccfa709995b7d30", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "1c3ca94afa8229319a4a538e9604444eec716b3a6bc75f8f3f294e9bbc1a3bc9", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d72b2dbac26c94b3c3f357fe05385aa4af904f893f51385011b5dbf20b05a9d1", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e3d4b583e104e43e595572f08611bc70e740871fbeac213e7d9714553ff311e1", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8c5c72d26610811ab3e608f1cd6cc83cf249e480e7a0bf4c5570d248b834f4ed", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "b41b162853a4d678ca8a1537ca7840dfe227b0f5b9bbecfaf107633885f30354", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "ea64dd496c447311d0dbf3613d4b130e3fc2d6a0d7ad60c195fc7290236ce497", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f7db5379d51c619ab3f7f77129f098e77ab687c29348844d7648801c32f6eeba", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d1ade87b864c096990a74f3ddc69c59a58b6bcd2400ef20de6a87ffe8576ff10", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8ac57aad932f9f7a80d9ab6417cfc4d2e56bc6adfdb077534bd3ae27c6fe4122", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", "T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e2716ea44f0f6f76540be30afef83549e50206af7d5b5a803bb552cebc8d571b", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "14dabd46f5d0c76b856dc9381fc034014f8a7cf59352d13028c7428889ec0b11", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "50e5a0f27a104cf5778684ddc34776157469044c83d73bfaa2ef134d54d68166", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "4e4e4d6958d4ee1cc3adfab59c597e18acde1360a41210fd738e34fd243b0154", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "9b99060e5d10a0c19df06f36dd089d5e21138771cd85f364dea1d6bb343f9f95", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "055cdfe30d968d7f7f1cc3ce6ae081c3eb5a37811119488744796b04f31688b8", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "50e5a0f27a104cf5778684ddc34776157469044c83d73bfaa2ef134d54d68166", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "50e5a0f27a104cf5778684ddc34776157469044c83d73bfaa2ef134d54d68166", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "50e5a0f27a104cf5778684ddc34776157469044c83d73bfaa2ef134d54d68166", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "6c9bcff697496f35aa7802004985ba06456242b0ea9fdaf22d17547300359b65", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "410e47aad793bbf9c88280e594526c93ac955a97e9a9a7c26f2561ecd98309e4", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "8e585b41ad02d35ae93ee1f9a6b5c85a76e58f650a6f65c4f406700974584607", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "1c607bf7a5d68bdc11cfaebe7bf94d4b682d4d69beda8467c89c2dd663dfee2d", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "e0e79766cc8d59493054c72118726f45252db4e385287405b52b69fd7b7bd887", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "3d8611dedc058548ed092a2e1d35b53bcd0a9e98ededcb1ef3ec1dac68a57e7a", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "8e585b41ad02d35ae93ee1f9a6b5c85a76e58f650a6f65c4f406700974584607", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "8e585b41ad02d35ae93ee1f9a6b5c85a76e58f650a6f65c4f406700974584607", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "8e585b41ad02d35ae93ee1f9a6b5c85a76e58f650a6f65c4f406700974584607", "T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "11411da2e4c2e168f982419afc3faab67cff9a2c936467e6465da312c62ff153", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5916412c4e51d26649d3d5aa86bdc4071a8d2829c66a711077060411cdafce62", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "f7b9be31347809cfd6699d7c585907ea444fc63d14d24d28bfc525bb717984d7", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "37918c3f732596c9cd4fa4a773f1a4754fa371475310c81cd99c78ee89a488c2", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "8fe1fd166e2160aecec8eabfb55147189c7e33fa7278ff6b24c1886fdf43555c", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "3a8ba7ee90503181bae6718cb9e9aa68df25f998437c77582677c2479e47cf7b", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "4221fc4dfd647b13dd575cf305f8142fb4d3ef92e80fcc38eb3a9ecac4c53f9f", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "deeac7043bf10eb0cce4b3117f15d8ff7e0ce853102aef6279f194a93f77e9f6", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e712f2ddd696f35c294dfe82f3ae2a0e0dbb61cde854aa3ada3c9c04c4d7064b", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e0cd3d9ae851786f4f07c64936d475acd75b9b5e8cdef817faad939463912c43", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "8e5341fbe948dad1584889d9ef624c6cd675779389aeaf2e3e031bb3013d0877", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "697b42895da25e41d283ce69ef54ff271432cd615a6e80bbf8b3533b70c36b3c", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "ac22ec40d7756dd89b2e2ec1bc64950dce60c51d83c53e5a6d65fd2bcd6c647d", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "1462973fefb6a3f917cdd2c7ac737ba8feba423c482b856737376cdb35ae3054", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "5abb45c899319e97d7c434d464172571b85a89048ee971e58879af9ca6674216", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "09e74d9b438e1aaafd5995a75059181097354372a1602001d010644355cc8b8a", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1735f4c1c88d05212cb9a1cfb2f362ba05c2e2454b3b98e93ef2829d0cf62c0c", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "132fbb543a0a5ce638624c6faf57a51e50774ab9e00895fcb5d27c0494e5e1f0", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0b7b8cbe1e7c15c9cc49954814068b641982fd94f1a80f1baaa565fd5f14b6e9", "T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "7e5b4fcd834000647e94e6e2f318ee8b3d4f74fdcf4aefb827747d6e31e1eea7", "T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "d84abd581e7a8df55345db26ab424cc62bc39daf8d4350e29b4c6ec670fe72eb", "T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "a5698e91d14b2f17838d911c8ad61f9a9710a07dde087fa02df33b5db4ba4b03", @@ -20783,104 +20783,104 @@ "T3T1_es_ethereum-test_signtx.py::test_data_streaming": "1efe52c0906d31f418462a97fbc9c642ab467b8d92b6a242b20bb9020386e619", "T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "341da874923cc59ce1f2d0d60ad1549c0410ab8f7b578849a94b390083e62bfb", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "8c974a34a4532fc93ef5b078ca8d5ae8b7c561ed45546f9a8796730662171da7", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b01f8293d05e3d7ea32138891827c38eb36d0b6d56f5c034b8e02477c97cb9b5", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "8c974a34a4532fc93ef5b078ca8d5ae8b7c561ed45546f9a8796730662171da7", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "2d38f4d1592edb1308ceb9376b0ba0d03679b2d4466dce4cc099ece55bfa2748", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "2d38f4d1592edb1308ceb9376b0ba0d03679b2d4466dce4cc099ece55bfa2748", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "4648f29959e8723d8413271036fe0d22e7f9884a49b53f1e3a6ff6a2a316bb00", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "00ab54a29b32fbf3c30270f9c0b62729ce3bd019bddeaa6e8d9a28d98dbfca63", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "7cc50673c504b9b2094da2a6697db5a9084a0e25b9b792bfd74e7522c6af335f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "59403c4af43bec44bb30fab70f03505612389fd37194914fca968215aea9171d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c6e796e57a41ee62180971c4a88868f642d23000fe57771396ad3bddb9aedb32", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "0c6e9f52bdf06fe2f627538eadf8f4d61df88640893d22f5382d93b67187e164", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "3e3b5ee296e172684277999c444cd01eda441afdffaa0fa20f6681184c94a3dc", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "c31b5deb0de762c1738823bc2ef6b31d4fb6111b862999862d02d5cf6515774e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "6b8c3af3abac48a68b6a48d7c7874b58ac782a57722c2d166f6c99f9e21c1eb9", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "321bcf1d1afae548b756fc2646982e8f4a3e219e829c8a47cb18c0e94bac9d05", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a76faf704ecf7031e9b2d95007a42ae1a6fba19fb8ecc127f6c4cb99bf6cf087", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "321bcf1d1afae548b756fc2646982e8f4a3e219e829c8a47cb18c0e94bac9d05", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "b57e069c7e6d4db68d217a2f42ae000194400548f7e895645f0bbdf376d63b9a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "b57e069c7e6d4db68d217a2f42ae000194400548f7e895645f0bbdf376d63b9a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "157c47a93e18c84fe933552380332829a5323101e67b79c6c528f7870e829fdb", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "ed04827918f9d8b66a06cf82bf24d328952843d1b15da1dbb1e771fc49b9481f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "f30728a45844f86d0be6df44c1772a3c416c497eba502b2bb0e43b8f31c1ced6", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "5e7c09abd6121dd1b0107271a2f45677e3de89fa16d8b5523a337dbcfaf83942", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c6e796e57a41ee62180971c4a88868f642d23000fe57771396ad3bddb9aedb32", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "3ea0f38cb4ff0dd028fd8d23d19f44e11272765d2f8a3cb4637daee2fd73ab16", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "210b9ac88b6c42bf235a371d9ab250c0097f70ded5baaf174e118101dd7bead5", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d8efbf23b49cef185ccadc1d701b5d65bc8ba083228bf0c5fdce93b19e97b231", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "d0d809ca8596568c00df86aed29ddd8201b7403edcafcd5f65516b1950b4f3c5", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "ad0665bdead5d1ceb8bcd5b85d6cb1b59e8f1a936b419f3a06160273ff348fcd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f3e4752619151cf51634b5a2896f28421eedd5634f38cc2cce87f78499f1867f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "ad0665bdead5d1ceb8bcd5b85d6cb1b59e8f1a936b419f3a06160273ff348fcd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "16780fb57e5c04719e33e435ef697969a9d82f509980e52e958ac038931ceebb", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "16780fb57e5c04719e33e435ef697969a9d82f509980e52e958ac038931ceebb", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "2d6d20727ca7e844ffe2e92196eab0d85b24508e4bdc15d59dd97853ecb41abf", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "587ffc595230455d66515f303231792f56766de94190f245b9498e4648915464", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "5b5f83681a8d74528b63ceadae52ed9514fd5bc96821c53ebb910d0e9336e449", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "1d05fab01f7d2563e142c7f08097bf7c161755f9981d84b23f128df26ce14157", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d82febb1391e48fdf1178fa98c0879121111c1685e4ae6d7393a35cf6969c210", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "da0903e4fc61465d722d6225d37474570d9079b82f1e4569c56be70d3fbde9c1", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "610e572d1bf04bafd8771a59898c99ec7f9e4f7d87f6befcc83fb76294e38c32", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "d81cae7c8c1e775885466f8386087ae849146d03e2d4e8bab22dbd825d312780", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "49712d9e2a5905580f477d464856b3a61992524bcb0b41a1b47457980f1be7fd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "aa69f618896e227212c01208b45ed57a98820356b21c5717eafb5012a86d397b", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "49712d9e2a5905580f477d464856b3a61992524bcb0b41a1b47457980f1be7fd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "22a674ec6611b66ef994fa220c7c19689c8bfb1213d11186117d599dba928b5a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "22a674ec6611b66ef994fa220c7c19689c8bfb1213d11186117d599dba928b5a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "a1a81c4602d92482e211ad53933c65b6757e913f67f78c77cf24ac45488e31ba", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "feebf167337ab857391c20644b0a5b17d2a3e661c1bd5c47f425f84f6ea40115", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "786c8abca09d79fd5b4a5476aef973a4dceee3db7badd1d1073ea189ef7a2bb2", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "1d05fab01f7d2563e142c7f08097bf7c161755f9981d84b23f128df26ce14157", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8e661f1fc984e8bf0506b8e7061c5ff185112379f0ef250904a10adc091c5403", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "bb470ace0a4d3b30c52c5d982e238082845c90e759cc649fe81e06d84e67473a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "36882b62eb481ce8e0c35097a20150ee549c3589aee3e7840c66df94caa14670", "T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "da6ab5a6cd4370e8f86f12da96bd66ae6690d7e92152995d1e5d8f3fe767ea7f", "T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "9d18ef927f40a7863422d38da79815ca251ada3374265002291be5dc2187ef5f", "T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "96268efde0150d2b5b57c5feea6435a7fbb01dc39e68af9603ba0eb68e04fda6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "0c6e9f52bdf06fe2f627538eadf8f4d61df88640893d22f5382d93b67187e164", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "4648f29959e8723d8413271036fe0d22e7f9884a49b53f1e3a6ff6a2a316bb00", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "1608910d1f2c8ab343d95dab823575ebeed908b9d29c6ec657df6d8905c9f26f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "7cc50673c504b9b2094da2a6697db5a9084a0e25b9b792bfd74e7522c6af335f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "a035e7901524dd5612389afe03a0d3c55724c52fcf67b26097df82f7b6aab02d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "b260e381b90b45715cd6056e61f1e4626d560d730210a920d0a8a63633463022", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "0c6e9f52bdf06fe2f627538eadf8f4d61df88640893d22f5382d93b67187e164", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "3ea0f38cb4ff0dd028fd8d23d19f44e11272765d2f8a3cb4637daee2fd73ab16", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "157c47a93e18c84fe933552380332829a5323101e67b79c6c528f7870e829fdb", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8e7793ef1ee6fecdf325ad8c348c641184b23a94fb9bcb81f784f4b09eed6e19", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f30728a45844f86d0be6df44c1772a3c416c497eba502b2bb0e43b8f31c1ced6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "525bd042f9d436641421bffd4698fe323757b2f2cdc8e2be5c4aa97604699183", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8ac29824dc1b5e0c94606cb4fb804fd02796928294e281b465299df704c8dce4", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "3ea0f38cb4ff0dd028fd8d23d19f44e11272765d2f8a3cb4637daee2fd73ab16", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "d82febb1391e48fdf1178fa98c0879121111c1685e4ae6d7393a35cf6969c210", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2d6d20727ca7e844ffe2e92196eab0d85b24508e4bdc15d59dd97853ecb41abf", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "1b19c4b7073882a6e54aaf9cc4e073f4a20bc9605bf03bac4e72f0f00be7720f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "5b5f83681a8d74528b63ceadae52ed9514fd5bc96821c53ebb910d0e9336e449", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "528fbd180a88b26fd9afee47f4bd27f222a3ada10ab738330d4aa08e2e40711a", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "be21297a8aff2a033e9002824a53443a6a40b0877c6099188f0c8ed6f88a8e2d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "d82febb1391e48fdf1178fa98c0879121111c1685e4ae6d7393a35cf6969c210", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8e661f1fc984e8bf0506b8e7061c5ff185112379f0ef250904a10adc091c5403", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "a1a81c4602d92482e211ad53933c65b6757e913f67f78c77cf24ac45488e31ba", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "e6aabe272b432ca3484e45b921dc8359b8269d056a57357285990c5783c6c9b7", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "786c8abca09d79fd5b4a5476aef973a4dceee3db7badd1d1073ea189ef7a2bb2", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "b2f894ef67feccf776296971ab84239f1233765b7953ef408fb6dc73b73fcc8f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "31af2cc4bea0a2146dfc907b9a6d722d00356ac6c99cde720eedd577fc513d77", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8e661f1fc984e8bf0506b8e7061c5ff185112379f0ef250904a10adc091c5403", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "1d9510be06f83d8985017ad946c497172c76552f6bb61e35f01e164f06fb33f7", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "1d9510be06f83d8985017ad946c497172c76552f6bb61e35f01e164f06fb33f7", "T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "b3ab43844114d92ec20f8b89acfc5c95f629df742754da1da8ae194a6683203b", "T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "12f62135ff7cc308440f2eb72692f297e73c5856b40e8cc48d227e93d40d6fc1", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "eec7a0f538e254206eb9ffc040c7bfa4be10b1fb654fb1328d1903a49b98f6d6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "eec7a0f538e254206eb9ffc040c7bfa4be10b1fb654fb1328d1903a49b98f6d6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "330c84a7583f6f5875b123b3a3e1197f5f0a51e7c130bff5ed7b7e60211fd268", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "330c84a7583f6f5875b123b3a3e1197f5f0a51e7c130bff5ed7b7e60211fd268", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f842137343f11d302f674e19799d19ef70de81dfbe4e4337c2fc57f1ebdf6bb4", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f842137343f11d302f674e19799d19ef70de81dfbe4e4337c2fc57f1ebdf6bb4", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "dfd3abe5384e2485423704d78557c3fca1766dcceea4b7247f53db885c38cb6e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "dfd3abe5384e2485423704d78557c3fca1766dcceea4b7247f53db885c38cb6e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "dab80c1ac8e6c78a151112dcb9c3709c9356a3f20b57dec58c6677bc83df3f29", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "dab80c1ac8e6c78a151112dcb9c3709c9356a3f20b57dec58c6677bc83df3f29", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d2fd5961d09956402d288199c2ecac019cdd5acd0fa3c2e2828f726990cc9dba", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d2fd5961d09956402d288199c2ecac019cdd5acd0fa3c2e2828f726990cc9dba", "T3T1_es_misc-test_cosi.py::test_cosi_different_key": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "fa6564bea6739ddfadf7d5c31c663f4b11d1aeda579827b271cc5bdd5823883d", +"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "6ead89672b48fa3254c801a88c51cd30568e828bed4c4fcc2287ea539c6cb127", "T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "fa6564bea6739ddfadf7d5c31c663f4b11d1aeda579827b271cc5bdd5823883d", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "4a897b0313dbdade10f0a90d0735908972902c2186d5878a7b718d3583e604e4", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "adfaad059b5150905ed18998716dbaafc81eddcfb04ac3af5e581e2895736474", +"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "6ead89672b48fa3254c801a88c51cd30568e828bed4c4fcc2287ea539c6cb127", +"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "2be3a0792297487add58100e68c96572973029ea4f01eb2ab370953316189204", +"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "152e4d06dd840dad7472920154bbdbc1f37d4eda8d642e6e9a664c9a6c3fa73b", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "a7028081ae625243914881076973b1ba6d2972a657ce9087674deb4b6500e01b", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "9e03a41f5dd06f0f8d983d56a5e4bb658c7a0cee0890d872bb76e6af280f8e9c", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "417ca199fef3b3c947f4359a63ab42a3f36e284c1f41ed92cb6106ab5cfb169a", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "efdb88619295b143166dc5f5331b66e7ff5bf3673ca02d29987b1b6d336292ae", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "948921602de3a2ad8194b971f2a438cdd8237b628b6e29d0b7fab1f1a0a0dfb1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "17a695d5e9683a7a1f08f6733b213887f8b70c1e913053c2e72c122b322d56ac", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8a30b00a2cd018ac11a68a70a70051cf928ba9bed4570efc24f1982801bc33e5", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "41158cdccd99ba7a2c8e03137cc9e67475b0a1ad1fe0b33ac756f2526cd0e7f7", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "85353c447bbff6d744c766e24a44248a842a976b8de090bca645dd4a3767051e", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "5f75195eb93dcdb55e955015b45ea6636dd09b61a62c6f91de017ebafbc3fa12", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "37d1f095ddac785bdd12b26c19196363e70e7b7f48b6f12f86b02704f13e6254", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "3bfcf16ce0604fa15623513b4cc0a119ebf7ff48ec9e68197c4033bb28433d31", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "681879d3af13892a6ec6c0b3f27a7f5ac88e83c1fce9ed007163d7d2eeca647a", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "f837371af37d514378ece9a6544ebd97a549e8a262c7b09c9f664b8f670af2c0", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "93e0ea94a61128cc8f154a32889963a7e80853fa16591bf2f2c2355869c5d48b", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b6dc54fc0cb6dc3480474489ede29bfdd7ebac0a0a48685d8da6c7b93cf4e4b7", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "497441b24db5cb532d4365e04d6cad828c8556d407f12c6ee58daacc7d16e227", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "b01c02d73dba4fcbe561b6572edfca2f1cd63b35bfac03d5cbd52ce6a38692fc", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "fe34ae83f04bd5b68f1660fdbb6b3350308e30b9d2b79ff632fc6b37debb00f1", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "24feac8e6afe6abb67091d6f27cca0fb8ba6afb3139dc72b2287e135d25d6637", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "dca1e5d73b3a172496bf4f85b568a20db3d10f276d71d01a14b006404daecb54", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "6b802e4256680e9afa9d575aba900ae471774a4c35bdfab4987fc7d0b8813527", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "ab921cd26131404fa4e4fc2b1fcb108c176e7c535cb0bf602c91cb185b9f97c4", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "e0e0640037c8b9e385a75cd1bb1ea1d802733492a92db9ef9de3abd2b9a56d2b", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "f39c33b924d1cdd93b914e8a11d4d5dd7e11aa31f843185d87c41f693b80a38e", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "16271698ba41c1717c1ffc25df7014b15e86f4962c1e3bc391d6cf27281728f8", @@ -20906,7 +20906,7 @@ "T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_signidentity.py::test_sign": "52de60313d23f06d49d96015e52fc04643372021d8725ce3942e4263a631be60", +"T3T1_es_misc-test_msg_signidentity.py::test_sign": "6dba641d530f90c48f9aaecdba8fe1063e56c33908d30f52e746ee67a9d03fbd", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "5f0574bf0806cafafcba1f9b4722229610068ad2a2b921c561a2163fc88879e8", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "d3b8443dffca821d1ff0f8f1deb1bd5322475934b08ba8a566584d093808d4dc", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f1624a1526ed17ed6df6dc1d3aa7408979359306d6a84456ca46e57865d7c6d3", @@ -20959,7 +20959,7 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a5b72bc9ed0ba937409ede49b561f4b989924177848b7c974110aa8212c051ae", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "231e903b28c210ca2e4b5e3c9fab250ad96159b750e3ab9bf931941428a5b74a", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d5f923a5ad495ecfd7381b93d19a2069ea5ce714de3b07a799f0c5d994576f6c", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1bda0f33f3ae349938d781d9c8dd5cd9b5f8714ef8daf288163b9f3ce53db3eb", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "71d58826a242dc8d0fd8bae568d62b6903bbf92e0f4be1ae0e9c9141769645ab", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "03b4644ad341a23a90afee24d3bc31429be0641f0004ddfdcab3c01985cc507a", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "44fec143e8095450b03288ff7654764dc81c8f08392702cecbf46d7cdb865b7e", "T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b5f28a410065d34d4f093c67c997f13a7acdd04be6366dfb5adfd3e6ca15c657", @@ -20977,132 +20977,132 @@ "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "50596f9114229d36fb43349ce8a5057292a74418091d07ec3411a3c3bb0054f6", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "689f27d4529017992c3f8bc2d50d2f729206f5e9a36df9c58d61ce3b0991c1ed", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "ce90310463751157adfa118c9b43b3f5cd9e930659694b89f22c9ff0443f02fd", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "3aeafae2e6eab3878796550cd6f9db5e1f438568631b20355f7f14d4be332e0c", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "5ebc1f38b38a5adabe89645d5dfe7c1e868c9590980e34ee660dd2d8401c8033", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "ce90310463751157adfa118c9b43b3f5cd9e930659694b89f22c9ff0443f02fd", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3aeafae2e6eab3878796550cd6f9db5e1f438568631b20355f7f14d4be332e0c", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "5ebc1f38b38a5adabe89645d5dfe7c1e868c9590980e34ee660dd2d8401c8033", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e0184118cbac1327160216190cf6dad5ce2ad87e7cc658f3ceee3b861a506f7c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "2513439912963d7019557cc280c7b181baaf95aa2970353336768a66e1062277", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "77071601b32976ac9ead5c932a8fff43d038af419b501edb33bb8663ced3748e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "cb24cb271ce2121be41bb0ec39e135102fbf1ac95ede0b1a668005d1f8949515", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "d2f3e7da84afbfdd3f00da24be26c71db54de4b5f84d1da0bc8c12348f993149", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "6a1d5d913f189147ee730c37294d22323ae0c6b770c69667773982b2b8f583ad", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "7cd6ee5837f8a2083451c29a77ecf813bdaab8644aeb47536849811790350d9f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "9fe9667051cbeab8e6b5395992be452fbcf934c7c0583f846b7c257bf0cc54f8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "ad824fc889fa0876bd2e8389c113f52c4d209dfafe0c469d8db6ccffcac729ae", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "9aebae22eb09310ab8a00d19fd03883ebcc83d2aec46ad8ea37c3dbf32c57111", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "cc05184411099dc39e032dbfcd1548077733856334b8e55ee1bad9f0edc54c27", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "3076f2c74d5d4b849431b3db04af7a9b393813319fca35763d2c880695744f05", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "277b1f33488c3783c3590eabe285f39ce45faf903141c0bde698acf0f4f957c1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "4e2b92739c1e93c174a48e042eae01b215943d9e4552edde48ce9f2134d7c1b1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "38547a770d176492150ed6e467248fe83a9616442a1e6d9ed99215dfa9bcb509", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6ee4a66cb74ad10e4ea88ae5d17db2df36f1b771d556b07ce9483c94fac523e7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "09833e2394dfe1caed276a20d8f2b2faf24568bd6e1fa6fc1b2466f53bf0462e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f5589c7ba4d09dea0b572096e5164192f0f570c16d6bb131bc6f384d3cdbebb3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "0cebc184798afd8c4cab0f00e8b7b0e28413cf3cd8c0f40869ee9acb0a0f5b73", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b23852af6374eb40cb4fd92301cbadb269ce0b95b982de34d817b53b9bb27f73", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3caf33db7e332fa196fc3d646772dc636e377e5ef26942cad6a118cc645fbf70", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3caf33db7e332fa196fc3d646772dc636e377e5ef26942cad6a118cc645fbf70", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "41dacbec9789996deb06a4980445c01ae896481775601a65dd2ebe3b1a73b41b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "283722a305d42c2046341aa9849797b172a2c58a7f7987fd96858f497fdf3896", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "3fbebc0a10eeb5a4ed6213dfaca6402e91b0c80ccf9d0785d00db44236852f87", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f6a363f4375a6c9be49eaf139d552513c70036ff9cc71258bdeb500628e81cc1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "37d8317ab866353fa5f72d6dfdf3b48849edb01ff7fefb6ccbd736e6b8fedb00", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "e7d2bffa35a91dccd949c240375af2f8eade45f4b024ee8fe79383baf1700a20", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "039e78cc62aaef8ae2665df0177a056cac7840d3ca947a35a1d9e3089ce2adfc", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "f508e0e3961105ebcaea57e4330616d0d5c6735af23433134e75393305470a97", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "9b342c6e4a58ce9f8b9709692906a58caf397cecdea8b8fa0ba145a70e8d4228", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "213c95254a0e2fbc86911c8e06348303860f4d3f6702058529aa500ce665cd85", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "48558b47d17d2dbfd9e2db32deea53fda919c8681f92ae84f120d36c6bc0f97c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "5fbf8b8cc8ea568107da2ee8452c48ac5d76cc5162532bf918da95c9d9ca0b52", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8e422962da1974e16cdb8f12b42f34965709f0f354aec55604b086b2a8721e00", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "db8a5ffdac25f7ddbe1058603ae8258af87c4cd3d8f452388a2d140b9016a040", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "bc66b56fac1b829bb4bbda18486ac88fa10d697c676fd112f96d2ad321787e1e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "e98b18d6478ea3abbd43553552d8b4ed7061b5dab2eab427f17c549b2ebca075", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "e4fa693a17552bec4777b8b8779f31b59cbacdfb761b7fbc81bc76d72845b626", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e204d2df13784008e72451f6aafa68e234de3f4d26655432ed4d73475882cc59", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "33b954b78ef1bda89d165d760d8b2e9095b8f381cc6cd564f384a9902f2532ea", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "8ab7e1b6762534ed812d7dd97eea8167dc78c3d411906ab1cff9a805fc451a36", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "50b38be237301dcda8dff308cb8a8da06c1f4568a340d72db55edf1544f5d0d1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a493b4dc4c4049430c94a633faa756bd90b02c16b888eea9c2be8a36d2cb1ee6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "085103b7aa291c31faac2e74669982399dd93e896122b48ee20810efdeb8fee7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "99e965fe5ab0621d12307d4c97c1ac4c024e7094640feeabecc9cc56e6936aaf", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2d3529ff3e52cd9bed982cd0b69e5a5b654eee77cf4b62858b2d8a40dffd44ae", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7125aa85edfb4df2413bb5efea33d7ea453284cb8ee43c5be63577782b5f587d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "3ed903c49b22a702d609deaf05e012062b526c36d828d5971c539116c781f5a8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "6fd06f6088e448457285ed1215ad153cffda3efb6f731a6dac48c854c9aaab34", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a47b0214af8042fcfda717ddff8f1ef5438c155b18f192bd41532a66da9c7999", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3a379688e90a71be8f84b2d5a4c3d7f3df2af83839dbb9ca0272343af9b404e4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "95ea320a1606b01553edf1434f588b9828079a73ef4b4ab77a46428cd08a93ec", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "930b01a9446801b4d415c610068e9e5d792bdb3a5eb3a44469b1be53160917c2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "d03e91d460ed2d0e5c081084f2b2b7d783fa8089e71a89982e65dfd71e5a704f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "b6fb901ae25cedbd03b1801c453f77f0439f978b068023d9744a7061fc4d0e23", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "18465cfa719f438c7a3d452e15e8e71fa0d7e4cbb29ebf7ccf97df4876712a08", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "b2557ebde729e67cf6a82d7f8450cb9beebb0167d17064680819b0012cfc496c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "52da6a90b9738281c3abe61e6e514c3807f9524c41883a88831b8aacd8daa3db", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "3fbebc0a10eeb5a4ed6213dfaca6402e91b0c80ccf9d0785d00db44236852f87", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "c70a8485efa323f127f65917a1dcb45e4ac92618fe501c57157866d113190844", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "bc8e45c0b78c58aa4ca05ba0ed972407cd7379da5137c4e6e1a87b2a3345fa9d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8916bc25b7de0d10e899bc20d83813763f7096bbe0078f25ee6c1bd80188af60", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "33645872879ccbf7edeb6c40b483b8e34f57c7aae3e90caf45049c9b28333510", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "cf3f1a0a3db042f46889baaa567b4bcbec018e63c6f32277af114a3a3d849c85", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "57f44965f7846f16315aff5f47da3498bf15841e662994111b7052bd18ca8b6c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c1ef2485001e23c1f808880ca498bcbad0adb20fdc380b401b52bebbbd9e0768", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "dae333b97c1fd458cd705a1017def6c8821b648c269197d19c388385ce5330af", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "43738d7261d82d33d9942057f343ba21ee4459e226cfa4b878daefe79e8dc7cf", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "5d14b6e72f9f362eafeae20e9cc28be0c1d38381b6fdbe9dfeb2a11591fe39dd", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "0317872739c70528decc8da3893a5885e7f163acdc8bb0306ccbe1f5942d1395", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "ca40719207aa4272840f726893030708816a60ddfe40e5d1ff6df65dbfdee2c2", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "14f8faeeae90274722b116e7b678557e1e3fe984677688627724d5f133c278fd", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ea8320d46f3db3beeaa779db898620deb907c6bb520a3918330d31dbddf8ab86", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "f988cf237722b6691e4b351835c575f2f5f6f6adb4a57de880955cf2d9a2aa73", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "d43da96f430fee7aca966214634bda7681a465b9f907f3e66720ebad35457d90", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "dd90fb2c420a18420ee2e6518579566469495c5b4b8abda46820f5a4644948b0", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "59bbbd06f7e0e8c147a00915ed762b6c43713ad723224f1f8d53f7cc43456ce9", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "a91fedd6c428df062d129565334ad5dccc326f3644efc9678e39cb7fe9033728", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "159b87fb560c9029c9f370c6f5ac571813c2c885feb1de906369552ed7cc94ae", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "4bd71c6dfc9c33d457f1c87b31d4a0ef6ceec4799ffacbb6947ca40be8399089", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9258eefdfdc848824dd5f6ac4e4416a7084fbb5bd9c2f0f4f7112b7036c78279", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f55af4a7d4371af1bba1493538dfcd7328dd3782b5c26c8a307395a6ecd3d16e", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "89404c3c998a51eb563d02ea5cbf76cb533c18cabb696a92a163e851f89398f5", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "b6915fe26f796eb6232b8cfb32dec08afd9b9cb57596976ea964effeed26edbd", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "8d188bf837d601660e4bea29f0e2497ffda33f82eba4ed7d6bd95c820e34b11d", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4b592f8427ddec8bf62ae5e70dae1c318d06d051df7d61adfad979a81cc6a7e0", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c11ffecdce26dcb42c2c0347fdf40cdd412d0decfbac587b5513cbff466017dc", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "2510e76ef13a5340484c5e8f888ae776de36d4d2feba93318fe89aef967be1b5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "7d5fd933783e254f5f13fdb2be2d6213842dcbbd4378c9e72fd68900380503bf", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "c6fd4123be49d5d9d7bc028c333fe4253986f4203c33f74c71325a9395ab18c1", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "1d86557a5fbf2ee3db104be85b9c6a331a7393b7ff81734b09160b19f54da941", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "fa7f402d35a920e2abaec8075ea460a32cec97242bcf350fa4627a1ee84e34af", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "a1ac9a9be95d9c05b32fa14fde5b9878dd6dc407c11d96f984b9fec0cf0bebd2", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "70293e4e7246df3d6197ff174b32624b6f73d031617f090389ceac4f97dc69e2", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "9d65104a7e641259c20ddec1344f5cd60188060697c1e6ff55a8a87341b75a40", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "ba06cce67267fa236e706895351fa7272d8e99700e1e522463e7172361b362e3", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "1c0646576f0876558a188508150e7017b8587dfa6278cc24e476f1991f18f916", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bdedbde929c100184496e241486383491602d913740acc6b4c2ccd3c5665503e", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "1b0a4c4d22eabb55de1b2532fa0ad9f80827e16dd2a7579fef18570bd464c862", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "29779c1232bc0fe39c6ceb72a21734e84a0270e225c9217626307bb2772f6161", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "caa951b28c8cd4568cb348d05d337c054da25365035e15f14743099ff2a8ade8", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "ed71952c93fc5ff511e5e2e173f3f973056cf96b4ae9592c07bd00817e4f3c40", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "8502dff66d3d87b0c6a2a3c72272e674d397a988dc4f1c98c81bb5fca8ef3929", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "117f61873d5d2ff68fb493199f9005ce6899b8e853abbb50bf269d5897d72311", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "ab110bd209cbb4fffb34dacdf08f83ea64f6faac70953d4c08ce0bdd3dfca6a9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0f3f5c8b4fec9d9452add483dd23b9dc22ce815f19ef0bc1d3e964a08aa9f36f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "900bec65e585849b66183cd975ab2335e6ccc972594dea4bebe930638e2aea04", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "882e276a6b14725f20f14d3ad1911f5128a1d60cdb35e80dc90da92df6e9ecc3", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "d212657b4583d5852600bb54047069f5146dc3a462097fe76295807eddf2884f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "0c2be7c32344241f8d7980b4e1165476a7a8190a22a7b00cbdde11dadefe913d", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "74ec4760354fba19a16c1253dd484a95fff7f7148c90ad9b8f3fbd9dccd8b7df", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "195cab3b577eaf4510031ed42f68bb68b84a965f0ffe5db8a0e4b8fee136c1e9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "0fb04e6e5364e773d964cfe315a6decb25ae7be18506e6f8d5074dafed561f12", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "3aff5514aedd49ba4f5284d53a87aaebedeb853ba29380aef00dbb5e4c52b4eb", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "d42ecdb2dc2ad2c72c27ece32bbf9b4437c73093974898ae2221370e0512caf0", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "21e4a5a64c1b1d348484fef593b49bdea7101a05ec21c1b031598b344a50a0b0", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "8dab338d9361622f680d4e3ee7b337bfe8ac7b36a38f65f27453293ec42a81d7", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "ab110bd209cbb4fffb34dacdf08f83ea64f6faac70953d4c08ce0bdd3dfca6a9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "bc40789880d3e22bc07d4c604b91b434f6c94a13891fc977777aff868a98543a", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "fc096e16aca752278dd7bb0e5f568e2204a08e58209318de4c00ece6bd6a9104", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "a4286f99dd3d6a61b22b5e3732f6a5b1a00de217fe081e75593fdcce88592254", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "12decc5b02c8653096ae5b484402a3609736af930c5a8f108dea911ca9ad69c9", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "fc096e16aca752278dd7bb0e5f568e2204a08e58209318de4c00ece6bd6a9104", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "a4286f99dd3d6a61b22b5e3732f6a5b1a00de217fe081e75593fdcce88592254", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "12decc5b02c8653096ae5b484402a3609736af930c5a8f108dea911ca9ad69c9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "711742bc031a7b0e66e4885e6cfa64c2407d3107fcf83baa4309d82c999d4bc9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "6244e3298c1aeec31724db0454abfb4238c0873334316120bcca830da9cc76db", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "251759df954a5187fc3b7ced80cf1e81dd533cace8106a35535ddfba67d1ce15", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9c5c02b4bd42f99743a23208c5312666c404958068fe69452e70235f421cbf20", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "d3e7d448ded5a56cb463ad5d907ed5a9fcba8176d404266d0e1590e484f7c49c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "052049e6bdc3f86c8829718a2108d5f45763c878c78724f45c0ac6c20dfeb47e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "8f794d9e9ed07370f2d6e08d92063a9381b7bebb9a0deb265b1bbfd3da27c65a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "ffea0d214b6c06de9c3c2f0a3e5c504019e1b46d8224762d712c3b6cd0509d69", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "35eaf3a07d1a177e6a088a2f1ba9e1a2e8b67d82bd2aa0b4fe4a9f0f32b394b5", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "87c46472a2ce06563287a9bb5a1c95aa44381cc9f708929bcc57cfc261e20585", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d7ba099206ffc22a14a54c55b6f80a1c950502f297562e48049362fa4c588aa2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "b7fd558c64294d5ccca0fa5d203a750f790a9be565b25f5094062cb7d3735f25", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "334419df78e939773a28632f08389acef0cd7f006aad9f69826048aa16f9bb45", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "eda3e158df6521b892077b9db48b948ed3a441778444f673ff3a55116f9ded34", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2b4ed898ae74a76fe52db8d3d41172044c2bf97b3d747c770a15ba5eee7800d7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "97711edcf6c8661ce34d99c6124cae881cbe9fb504846eaba02c4cba092e9c1c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "ce368b716d57624e2423c78a37ee3e6e2c6a957b9c4595635d25f8e795d42981", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2988e42ea59d44781620b447d1429af49df98e3637e7afc8340218768a037a18", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6d6a0b46c05d88d0a617a89604e86fb3f603c9a5809042074f204a90d2b07ca6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "18673988de2f63d234c889921599d7b2b73eb5448aa7dcf8c91d8ad7b1b9ea42", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "fe86ae0cf87f7842384af9c40a5d8393aa442b4993be077d9719e86f61021ee1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "fe86ae0cf87f7842384af9c40a5d8393aa442b4993be077d9719e86f61021ee1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "afa64dea5aa15a22fe64a0d8e9a08e1f16979d0eab5cb23221e4cd22ef40b64d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "41ac32b4e59c66cb0f865108be671eb5eb3c41f016799b5ce2462301739781a3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "525a2e1cd97b70b98f7b0f6e8e0d6a1b91a794b247f8331611f81d1c287704d6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "e2fc49d1825f38152f1c61fa2e34b6607904a731722773863a1f3fa2fdd3d94c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "c3c281f8e7627e01f4e167fcf38e245636efe1720bc60724cedfa8850c26c46a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "58d883196fb156a197f3f4233a5de7ce9cbe060c31404e9f49274d7f3541a098", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c2ba6e47098c507b813da4582771bf7093db530b3bac6af3629847c66b5dacb8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "24135a10a4201464640cf053add8604c0bd5f4b01c7d1c04b9a058f40e2962f2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "7151d181003536bd6d4e437be8cd3dc6cdf8844252df2ba51f3e13322169fa5c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "0c549dc4c9a4a1277cc2efd63cc0a39fd9bb97fd310b5c8891b0b41e7c082d10", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "6819db71f9898529497a70ff7e86371ae5e9dd5b1ab8bdecc8cbdd97e0cc7421", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "20e2d3c6fe006204d8ae246a52baee14c1428a89cd9b8c6c3e7c1f63037e3935", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "396c38da93779940a7a021e120aa96c61e5b63d444b4c5a0a47afdedecdc64a8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "7ffce39d6bef0255068db513d8f1ccba4d06e17a77cd5a5358b0ac9f7b28bb90", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "4c943d8fc15a26d0dc58cf60e0d40289459c35100301ea645d817f6f986d38d1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "1e76808e740faebb913eed95e45413dd726cc391004734db18a4e428399c62e1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "a8b2b4934d59a370e4d28bfeaf7e5593b112d33fd697744e090cd6b53a7f9edd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "32699ca738863f558ce325c45dcb30f12de49e7169ad4751a76f3ed04da471f7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "1bc8737b6e05cf445e61cca05dbeffae784a93bb70b2aa559825217ed37b7bf0", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "a3f035d0c4ad4bbbe668c4778f7940cd454a2de7c172ff494c84841f4d08cd23", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "d0d42cf75cbe1e835138a50f4f9517cda8db87150cf198826db92888aab1bb06", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "c3f023ac43f3e7573b6b3c705883a94fa90a0e11ef7a5093bb1cf578b68135c7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "9cd97f038ef28cab0c0c3ec5c0567952c2f5e4fea8a55236cf93fd189b9b54d4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "1a9b32c385cbe774feebc1e7eb66ac846299e8b97c009a535521a0467e9e0e60", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7a0d75cd751b9c00c422d7184621945bcfd8eeeb10a5421c6c1c4abfbfa90115", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "71f7a553d14d6314f04b3f3f5d89f0b5ecdb70cee3d994ef7bae2ed2087eb946", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "913065df4f55b576798b89c56f02e6b6a42c2d9ca3aa1046040c5b6fd0a03f27", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "81f86d1bd76bebbb7a38f3f372325930d9396a0a41628359c080ab9b3d21a9e1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c00dc6d8d7f7bbbb24856937dae326b4d65ee46adfbf38b9573305fe0adbe7fa", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "294f733e383e1a48370c81f067fab46e32107f2e0c8f5e7b96f0daa44fbbcc39", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "6fa981d1b38feff2fab66cc24ce0e0164446a36cabfae40a73a41a85c46c95c4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "ca40ba2ef98fc4f64b8d432f6854fe1a7703d54c0400502da44591926dd3b381", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "0373cf22329d730bad90dc957dc9bcd4e1a843a55b385558437018ab787205af", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "699b999c36deac67715e757b685821b0eddae2676a0c25908d23a25dc2a4c070", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "b9bb434e42fa05db88190c7bb02bcda15320e22238bf65b1e023419e74fa6e2f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "12cd4cf94837b9faf9b7a3f1784cde43d5772572cf55aabf7413d167d2d859ea", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "c6c1162a57eb37141c544f10fa41c87afb40af531e5ba32279fd9a6e2d8ebd34", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "525a2e1cd97b70b98f7b0f6e8e0d6a1b91a794b247f8331611f81d1c287704d6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "d08020b28b24b8bdeb960c95797b20bf0832db2be3fe3211b25895f03a585eb3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "811af503627b4d010bdb6150883e2928b7b338f667b11e5b4ff2ea129f826129", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "9c5b50aa6906062b2c5176ff0dbb9691edbe87a0a3abdeeab8eaee49d634453f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bdc5c4c2ab7a12f0a29fe1e1eddef2fc3e5ca47e6db9aa796ff7b657194ac8a7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "278543cd786037cf834938d4482d854452f26d3346dab90e81af817fea0684ac", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d5942b7fa3e6253e2d6ece01844e085f1f96b21b3f1d5b9b95edadcffe1babf8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "12b17fbc74369ac09ed626e1b24c3a58d14b49d46083e7d4a276f08647900fe4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7101c32b38a878e242340f3902c84357de0db03f015fd87de404d01b5212c5aa", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "fbbb032d6464b21a2c320535a27576996613ddcb5e3fc243414352c8350e0525", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "cab8919a31e6e06a26e1e727d21eff542b748c56b3658b06a8de7e2a3c4c1b4c", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "1be449518412a45bd532fc20aab363bd07d118884968e6182af2c8998b5bc369", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "20c765500ed7de4d21b2eef656e66d08f3717b8fcd4ba457c867d71c4ea192f4", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "9a9fa988d4a9e64c909ca0bf06cc4ffb75a3bdb8472b9b5171c2ebd56b582699", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "cf737b94cbee294d10e7c47f61f78ad8913c211755c0ad104901dab972890eb3", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "69a3fa788aadb354a78baeff77b157ff2eea7a251ff71aa49c746852b940d8bc", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "de3a0a0652773fe8a481d70c3aa52dd45fa2c0a23060ea4279e4b9826ecc8c05", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "eaceb7f8fd2448c22b041f90a6e0fd43829af3253d5ddf435f6ceb4e5e6db6ef", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "59a160b8c3f418944ab7c8f70b6af8d46e245d31ecd42d5082d74873beab5baf", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "490855643453b6f6758dc5dc9881d5984952ec3bbbf6a646f9ac309e5afb87ce", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "bf59a2cefb979f88ab7efcc09fdbb3a688872e3fb1d249864203b86205fbcdfc", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "cf58fac70803ccf9d213c25f121122bef1d80b52706b9d49b92b4c3ddd10eb99", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "ded674c6fba3c7b7c0fc3e50ade15dd1aca9bdab809d6607d11e1fc00265598b", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "67b4d28972c369632e692e5d4533f09e82fcf4d8304caad65a43548e18e30893", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "545741ca32cfc4058808ccb7cdbf08f39f63d8c71788fd42c45008d8ff8436e6", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "4cf15d25b26d42db744255148b8cda312df40dc433ee1c8abccd4caa402d48e6", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "f85d737f37722dd9577cad3c50b0276c9f934da41b9ad74ca9523ec3096af608", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f2cd15056f84a2faba7dd421872afec9557ad40e5f65e98dd502d4de27a7db3b", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9cdb9ff454cea52dfe531980ec6c3226ea0b7b6a781b39d84bb774f20a9d744f", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "bb2e3dc159b50f7dfffab666008d3616e34e041572754033e94a8776b9352652", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "c461f6f6f12b15220f319ef2146e63454f4769a36acc0509b30d4b7dfab00bf8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "ba0b320a8431537265e1620a54e147548b15c3bb9242a9ded62455d69ffcd6f3", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "1e768a7b531bbf2da1ce6e8b091cd76607f713366a6339c7ca79eb94bdba8aa9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "29a3059118ecbe280d670dcf7f2af8728c151a8d7af96d24efdcca1500b72250", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "af96e3e1449d6908ba7e4790c550248832e4a1e34e5cdf9497bfc99e5a96bc22", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "891afa3c8edc1415d1b83b7de1b05a729778dcd6e63ffb45c2ca1a34085d24f8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "1a3f25dd233bd454c0cc4d77ef7a22f964e26e17f780797c61ffb8ba62e985dc", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "ce893b7713c9039ef71dde720c5f8e7d4fb4d755303ae37c9e50f0385b5d95a7", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "927596928f982b46a2420d22d2fa7ed862489fe2285484fa3c07e281a5312894", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2065c0738268b8238773590a8e30b578114e0ea227c0c2d537f38b468fc5162b", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "467b0d2dba80e392df88c80d4279d40c814524c00759b04763a293ac9d4d397f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "80a3345009f703511645d7a4147bce35b9a3587fd9d6af953f74d6a4587154b8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "140e661b49069ed462103bd1d387dd3a8b0281384046a78757043d1ac1b05e93", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b463107df0b86960bc04115d935b87eb8ebd22468dfcbb7d8004a808a1cce052", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "17fe6b31e810e2023224849a4d7810a34965334a39a4c41f1767ef33bad236dc", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "448ac1e8822f1c9d5753c977c64f19e77d0581fdaecbd4846e08b3807aa8f16f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "da60ade0900a290e5ef66a2a05b8f99a6c41f0238465eacb86f37b18d2a9c854", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "f2569d5e2ef0e3984817b9e32d6815e133b038455b339c8976a39ec3b1863a3e", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "b144dfd983385b11160c72499d4414dfec7a8a1aeb202591ce6e3444e49a2438", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "cfa65d6d04cc7a79099909b01cf80ed452029e85af50f1cea1b202839115fab8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "28f4114e6d1132d923a5cbdc859e5bb1ad2f8cf0c79f83b474147d4fd2181a81", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "04f5fb96ce02a99865597b6f4d6a8a0cd0a5da123fafe710365eaae539423ce7", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "8b39a4fe08165461c043b0b9458a6b0e938b90a398628f1d8d5b6a545a08bd9c", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "9cea0781d3baeefb29728b2a70d29527f8b0d33c9e5462dae8df24bcc974864e", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "8bcb6e673e5ea271f938e441081552739c894ed45d810590196b39b860105c78", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "910c42f5dc55a916ec3f311befb4ff78c155f3b621f3d4f217321ed8d379654d", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "fb376b3856d550d9f02230e61114394839e75db7f3664d17aeecb01419f22ef9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "df6af8103ffed312b7a3d97241fb770dc2295e241a34608fe7d7e2db23600317", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "815cd7c6d770e10820d934f06820ebbfa9f2d4e660732bc751ddbd19da2df1fd", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "da60ade0900a290e5ef66a2a05b8f99a6c41f0238465eacb86f37b18d2a9c854", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "3e4d9a617d4121dfa39f1935927c13fb78e65ed16c6e033753c6c2180b0b4288", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "f01f66974d812a5b6302d15c2325143e15e0f4ccd52ddd3c091fb7e91b384ec5", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", @@ -21190,37 +21190,37 @@ "T3T1_es_test_msg_changepin_t2.py::test_set_failed": "766442b0767cb521bf4e0551a904e90313463dcadec2aaf85b53bd9c444ff285", "T3T1_es_test_msg_changepin_t2.py::test_set_pin": "bbaf6250a83c4974a628b5d0a835b6dcb38d08b60f4eb1fe5c948b6a83de382d", "T3T1_es_test_msg_loaddevice.py::test_load_device_1": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "fcd97907eab0b6d991629e979d4cfd9618b4bb1e2d1d06804341fa3c9542b8c9", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "362d848ae4e19755b96e46963ff2e6002eec4268ad314ba81913d117dbb481cd", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "5e6564689a1e76d022c565b90c8e59c35556dd19bfd38e7f7aa12cb238714238", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "287c48bd7bab717eca16d48c752504f8d38ef5d78256e7f3b9a707d573648be3", "T3T1_es_test_msg_ping.py::test_ping": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", "T3T1_es_test_msg_sd_protect.py::test_enable_disable": "45c58c09e49cd3fff8664bac0268db826846daff8fabd5d4c5501d1d6087b78b", "T3T1_es_test_msg_sd_protect.py::test_refresh": "2c3259563ebb8f873165fcb008a48faa079583449a9999074186465977b1a222", "T3T1_es_test_msg_sd_protect.py::test_wipe": "1fd9119b81dfe75c901c7c0cfcb54be6ae71b4c73816300eb741b33ec6f54926", "T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "e8c33d603279736df820d9724fd3de0ce55d4db186ba226fe3d475dd1414f7f2", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "ecfb9c94ecdb25cf3b97997452871323a764600eb5f2f68c6759358b331c28f4", -"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "00f0e7916e78181dcb9081a3ca3bdf740408426043c1cc62a1b2daa1ace95fdc", -"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "00f0e7916e78181dcb9081a3ca3bdf740408426043c1cc62a1b2daa1ace95fdc", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "4caf532febb95488b7ddd19a5c5c911620f1450e81d6989da4b0a7582eadd408", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "4caf532febb95488b7ddd19a5c5c911620f1450e81d6989da4b0a7582eadd408", -"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "4caf532febb95488b7ddd19a5c5c911620f1450e81d6989da4b0a7582eadd408", +"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b6f0e75fa0db32a6b8d0102ab583b06466b6f727c356f54900837e922d138079", +"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b6f0e75fa0db32a6b8d0102ab583b06466b6f727c356f54900837e922d138079", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "61f6f75aa752c9ed53b028023bdb681d61e80cc33d6fb0b3f80dabef1bfac002", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "61f6f75aa752c9ed53b028023bdb681d61e80cc33d6fb0b3f80dabef1bfac002", +"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "61f6f75aa752c9ed53b028023bdb681d61e80cc33d6fb0b3f80dabef1bfac002", "T3T1_es_test_pin.py::test_correct_pin": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", "T3T1_es_test_pin.py::test_exponential_backoff_t2": "818200287e749818550de41abbf9ce4e0018e019d6eedd2b164751d306c0ed83", "T3T1_es_test_pin.py::test_incorrect_pin_t2": "2bfeaafa46718d0efe411953ededb08621380909764831d9b4719d6befd75953", "T3T1_es_test_pin.py::test_no_protection": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_protection_levels.py::test_apply_settings": "098fd2fd9026f38af4d6950456aa01302a0c3443b9811fa5abfe471248334f29", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "cb56dbe365058395344aa019ff64f25589ac5d1ef60399178b8b488af7c99aa7", -"T3T1_es_test_protection_levels.py::test_get_address": "b7a5c7a69b0a2dd1560779253c5990f43a54bb882650394b96455542180b8319", -"T3T1_es_test_protection_levels.py::test_get_entropy": "357a923bc547b59188ea0418302c5dd198f53f4c3ba84af57dae1c99c165c5fe", -"T3T1_es_test_protection_levels.py::test_get_public_key": "b7a5c7a69b0a2dd1560779253c5990f43a54bb882650394b96455542180b8319", -"T3T1_es_test_protection_levels.py::test_initialize": "2311312920f6dcd014bc52d5af70582ca4cc5a7ea69eb3c399aa632999582032", -"T3T1_es_test_protection_levels.py::test_passphrase_cached": "bef4b38a90497d7223fed5459e580e76b111b9c30fab9c689a3ace8d4ebe8496", +"T3T1_es_test_protection_levels.py::test_apply_settings": "ef63d1fc8484480f3965afc213e7f43c409f17dded49f2578eed85d7846f5ad9", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "558d6d4f339a69c9066a0c028e897db46a403fd52e8805713b1c4d0b0208a70b", +"T3T1_es_test_protection_levels.py::test_get_address": "4dfa321a08fd0b1a8adc2e5d37ebd4c9e2bff11cccded082ec98048f5145a3db", +"T3T1_es_test_protection_levels.py::test_get_entropy": "52579e9e8ffe9cabc5fc9bac426276bc0b5a825b7adb13db35f129358cd87c9f", +"T3T1_es_test_protection_levels.py::test_get_public_key": "4dfa321a08fd0b1a8adc2e5d37ebd4c9e2bff11cccded082ec98048f5145a3db", +"T3T1_es_test_protection_levels.py::test_initialize": "fd73050e75c23b94e8a8ea25e746194d424aeaa9baeb1bc24c151e2881293d24", +"T3T1_es_test_protection_levels.py::test_passphrase_cached": "aba6b49318ffaf8a08e26caabfec4716b1f6f388736869daab050e396ae53f6d", "T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "65b44e988e9d98a327eae4f7e40004cd74389d0b9f150ff19c9b73b76164d4c8", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "9fc755397dac0c39356d40a3ab90355f30ce60c51ae8fcaa85c435e6fc1fffcf", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "e8a5853b921acccef3f9ec366f43270b6d315853b1f3cc0b4bcd5cde89c172ec", "T3T1_es_test_protection_levels.py::test_ping": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", -"T3T1_es_test_protection_levels.py::test_sign_message": "53088d873708b14d374cf17e2bcb2bd9c0180ffaec26ed90d80b48837ee1cfcd", -"T3T1_es_test_protection_levels.py::test_signtx": "55fae33aa72b52222e049f16cc4086d91a68567472d5e68855da690ee2f277c0", +"T3T1_es_test_protection_levels.py::test_sign_message": "1c5e7b003f95d25426f95dff6dcb85465146e109f1a216f9f081811ae073eafc", +"T3T1_es_test_protection_levels.py::test_signtx": "b9b3dcf5c8d59d1d498f1868e8bfd18b58e5c209825cc3095229ea96cf4fef78", "T3T1_es_test_protection_levels.py::test_unlocked": "f405182f1a710776b7c10478c62f2b11c7cd010782a042d6b815948f7e395ab0", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "ddcd6d07feeaf593ca84319b84f862046f249a75727cfc05ccdc3c77d9f63a2d", "T3T1_es_test_protection_levels.py::test_wipe_device": "d3986f59a058c52b372a414cd5cb5c0e0285dd303496c7d99c586354554fdde9", @@ -21231,24 +21231,24 @@ "T3T1_es_test_sdcard.py::test_sd_no_format": "1df941e39cb0f5ae7ad5fd0ed61dcd1458a62e256be7faf19f106f9ae9fea197", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "7b3f9196da8bae50bc4b5688101bf65e71437555b9329598f775e5b0bfd137a0", "T3T1_es_test_session.py::test_cannot_resume_ended_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session.py::test_clear_session": "2054c124d94999397561ef41e294b3b688ed6c37553ea485ee4a9693f74aea68", +"T3T1_es_test_session.py::test_clear_session": "a2956ef18d3371724bc021fbc5df2a94960ca9b2ce1b3e33a4a47f24fe991bb4", "T3T1_es_test_session.py::test_derive_cardano_empty_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_test_session.py::test_derive_cardano_running_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_test_session.py::test_end_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", "T3T1_es_test_session.py::test_end_session_only_current": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session.py::test_session_recycling": "4caf532febb95488b7ddd19a5c5c911620f1450e81d6989da4b0a7582eadd408", -"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "77415cb67b3f28fb2982e0458fdfc2da7ee5dbcf653d7669b6a51d53e90991c2", -"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "0f566d30fb9ae0916ebd0546a5bb2b0a5ad39a051b32612b046ad3c90ef45426", -"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "fa7064fccf4ffd2347b5ac754344ea3343c7c6909463d9aaa33224cbb0abeabd", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "3f730a9ebf652064a6785eee7a9db12c380e7d62ee8d8b604150800fc66848fe", +"T3T1_es_test_session.py::test_session_recycling": "61f6f75aa752c9ed53b028023bdb681d61e80cc33d6fb0b3f80dabef1bfac002", +"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "5e94f134b35244f4b5408d6b2dc3f7b3fbd15c904be7683c28fa5498b113cecb", +"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b0fe9484fd42dec4feb8e0a96ad102ab9eaf711c82be443e3aaafba23073b172", +"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "8bb557145f7c327002b537d0474b6bfa688b38e4024cc3e3593697325ba3fe7c", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "735edfb1fa57894c8810f58ca7a108d2f0284a6852e3c5b8fc45a8842050d3a9", "T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "59bb59b7786c1a39dbc1f5670bec238ac44422e96f8ea4a647dafb74e1628e28", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "17411166fefe1c86892ea3deabfcdaae2d28f4d7bd475d48787bc261f7362a88", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "507941e4aa93402e229cbf5e4338fa7759aa5595d5d53f2ec712ffcf28e120e4", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "bef4b38a90497d7223fed5459e580e76b111b9c30fab9c689a3ace8d4ebe8496", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "20a7b4c7430d45d17a880b8fe928d73c81aa4957f75fb84dabf2c4c701f69a6d", -"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "b3eb60be9ae44ed41b0e9a35493053654a38808868115d009d916f56f198444e", -"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "0111dbbcf253f21d1af1e5c74365e5f08fa46c7abaaf1c87a3661a25448b9096", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "c0bd625142ac60945cd48ab63855f1694a2973e327154862fc812264adfe46d6", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "aba6b49318ffaf8a08e26caabfec4716b1f6f388736869daab050e396ae53f6d", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "c6fa7dc74014525debb6ae85ca2a8f84f670cf3b8b54a0c3a02da8ccb9c4611b", +"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "4ebad52897a1f73adb33ae1127d6bb85d1f24ebb403dc2a94961825b77c1a136", +"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "30185a44ee8480fb7f97c316d5d3a1725bdd6c27278197c1babf90eb130e3fca", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "6003ddb449cd8992439d294a04b0fff100c35c3a395b6c1943ceaf406309628f", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "43959f06326272517861dd5c74c8af0ea30dbd3460e60baaf310ffafb0c92b55", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "332ebe7092343e759c73089b5f8f6e612087d443119682bad904823fc7cbec2e", @@ -21427,7 +21427,7 @@ "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "3b4fa6b04ee904338bf771ba98121b3729cdcb3a92591d8a21f4217834744b2a", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "55cbf28198aa0e5c1f0298c4402057919225919651e6abef4a0db223eead8e49", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "e0251f7bd14622cbb3e619645ed170e813b2bbcd62ea8be8cc8a20d8aa3e9b5f", "T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", @@ -21537,7 +21537,7 @@ "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "557e11bada80007136a438cb8341c1b476a3c431946d18bb0f1fd32e339525d7", "T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "b5fe51804777803e76e7f8213a531079b5a7496ef90d7a283aa400e9444dc1de", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "7af33c44db5f0d1c11b4d8b867ab3e418e481aebebc60b6aca3eac1b81a6f99c", "T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", "T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "3a106c9ee2f055af336a6aaf57426b48c567f34ff046a459b551cee125d4076d", "T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", @@ -21725,7 +21725,7 @@ "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "56569367cf12a8e9ded3306336081f43120b797a4e96787b8b2db76cee9e2400", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "8d3de87ba0ae4949621ee539157522bb24192f55bd17d7ef8b6a85e093373d16", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7a5aac9ba5d2b513a730ec3e76d28c9db1b8fb12468b62736b6263de2869b200", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "4227552ff69b56618476a231bb790389a6b1573b770af97c1f343a7ac3aa331a", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "e67f0da266a9c07195e5d3d678cca4e689ed2b43ec61de447f387806f9856882", @@ -21749,339 +21749,339 @@ "T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "7e519594a5411f337f7c93bb20233b00d23bc1e7ec7d0d3976f759771dc836a9", "T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "ca4d2dc3517af2041aa099ba826aa1fe7a8c8381ef6025d0fefe3a24a582f434", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a89dfea39c76bc715ae57ce57ed1de24941eacaa072a30546fe241b6fa1e6427", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9d12244430ec6f1427d59cf3d59af1b909a91003ea3f9657268aed8590297095", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "70ab3b02e5d7c610df1e65cf42ad9f184d91d40cca4a26dced86005071e2ba89", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4cf9f2f1e7243ed1f2024c181adcda12fcd82a212f210b072dbf273a406c38e7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "7e369c16c4cfd8d1e09b299203b5ebcc0af70c9dbd664d1bc04d8828baefb90d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "f5d0e2fcfbbcefe05f046a2dbf54fd2ed74c76e9c926b763eb7a46de91f75238", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "0ed0c54d3ba36cd5e205e330a50879ef237a8a8b6b0e6234ab2330e79fa3fa2d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "70c576d094e4f7720560138de30b6078d973fad21f44967f1a59bcca16cbbf1d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "0d1a16e3f42ac18850365e424e9710bbe4dfedf73df2043f499108aa778295e3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "49968d037e5ff2424ab89a2b0fb629242e5e6fb3294a05d73e3bedaa29530908", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "675194822729bcfc76090d811cb9d55ceb82140f4aa0073996d868a0c5c16fef", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "3b25fae33614a1e984defb09565d1b46cf3b579c53f10417e94fc483b2fc05f5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "daebbf1a17c78a828724ffe6f15432657cd782507a4b846542b54b6c7153b113", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "0e3948efaa5909ae8ee6385f8f57b10cc6e9522fae2bbf9236db8cf6a646bb97", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "f33742168766450d4863ee0aa0b96e718af471d9688ad86be4bb5fffaa442ea0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "3eea256c0810654f4eb94e989aa97b0157c0d301f96403a9a22051603b91abfb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5f1926b6adb005d7377f96b9cb4b6d3be095774d2ef1d31aee9cee8a50169088", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "287ed69a86765fdd547c1834068c3355cc35d6681979866656a71f773223cbca", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "7523a6dca943f55750cec8df8170f9bdbb56b973f5248bb6df31257b8706bf8d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "a3a28645c57ea731297caaf61b3f22dcf88f5f77f68d62c3a3acb91c57aec891", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "dc4e84da3190e8bfeb2c6890e2ec6c32b8e642eac12a1fae5651115b7e64ca3a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "9820effaaf3edbc603866bf3a49dbe9071f9d1792bdd62f89d2dfc5715030a43", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "07dc82fdbe7a1c3a124fbf8a6c68c6c9a8d02bc86492a02287bfde19d2a1e500", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4b510796dea4cd364017e51fbba74eb1ad28d2e4c3b0df3c34ba8ae567994bad", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "7ac47a91be86c364117ea2362db45b376b5009355d3c1b92da55562e8a8ad254", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "35816bcec7ed4aed350d63889c95dc64fbe801756d97470a97fbc7c19780f9de", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "70569a9b47e9f1f2265b415760f498f8ac211f7112d1090d6c1e42595ab719c0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "383feeae8bbedadef027ada9813483331358f36883788a09bdae5f6104638bc5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "5ea6a34c0e6e1dd1464e0aab5a6817f34d24b836c690d31312bb5c540972bfa7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "fa712b190eaab994362a9e0f68799bb46f6f671a49ec38216e97c8012afd02fc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8870874357dcc7b34ed0135a660b9eac3636c34c3fc8c27a428dbc69368d6662", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "a1215867d681d2d73dcafe5171d7f87b68dbb3524fc147905ee3b163cab160d8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "edb30cb5e0d14b4076ca5d27a6bbd9b34a4a2f0edddbbd8810ee58f50974942d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "b92f07a6de65babcdeaa5d5b01c790b172a86eb9c1872caf5c3e4dae28563f6e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "27d4881c8f1c62b52b7febea9203df03759adc2d6bd19a10ec1ec7378480af34", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "bc8e20bef8e08e126b297d83f044f51ca998d29d93d2c7bc8a7af32ff8dc5dfd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "518890c2ca5f896470361153a7e2d6b3c78abb5d8b8a3804208a033b6fbd6bb0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3808bb61937effe345eb77ef9f2bdb29447a0a31bb238b6854f361141fec8e75", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "0ab06855c6a751f3e3af0080c22bbda27e1390b9779c37c4157f66f7d63b1557", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "c65fdcfd180b28b6f42adf1e9bc47adcecead74e61b0637cb219d144553a2092", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "75c53b9bf5cd53b90bf638b626e7797d8683f2f1293aaf5feea8e32718b079db", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a0497d2c8a7204e7d577a4dbfaf931d23b2ff338b3b13e2fa54ee896ab782983", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "8384664cb7c897f03659b622f22dd68c3a960b48de982d1fc81cbbd10d00f85f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "5b2228aa754753a6b41083a02ef28ff327cb700f052354dd44d672f814092b6e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "541ff465ebde7347ab44d1863dd4b7f3ae46e5e470b89bd2a2ec3ccc07bc4f5b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "813b855b86e1ae3296d89b16385277d956fae39ab47d2e177edfb7017c109328", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "6d06d7c2c13be1b8f83d85f495e3c0948c9c2fc95ae04aac338470d46dbb5ed7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "93d27d31874b1bfe9757af963211e3caf71a39da00b2cfb12cc3e963ac4f5b9d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "79e06f0b1a0206f6f7e1ca4914115bd3d569e98701f83bccb684c70b464da0d5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "e89cece565e92bcb04cfd3a2d7438ed451c20966b06c0db055acf7fc836204c8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "857a23a5fddfaf66af24a5e507afe03820b13a756ec0e7efc72459162c840d80", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ae225bfa8478017ef1bf520fec9294db04699d26971a77aaee682f26bd60679e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "c51d199f92eeb48bb8a3b0f949793090608085603367ac1f0d5a60b9ea4761a0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "05fd447a18daa4d1c028e020d2a2cfb26c9552addc0acfcd12582344acc221fe", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "6d59fc285723f653af222e13ef301e83fbe0df124ae4be9f37a504505a6e3947", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "f4e87c25b120f376f25a5924845cd7f810fbf6ddf4e73e12cca20655e20bed2e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "b3e43cde05d77956602b4ff8f89df5f258333f2c38d1064dab2c6d4f8bfb42c5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "9df3eb4dab4eafba7db60992159afa96b38807620f8042ef2bda303c8dc31c3a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "34707619806b490e07d3cdb5b26879e012b9cad06b435e5c722d6f78378b3e72", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "4eb0fdf3b32928ffdcfe4d72aa58918491d0eaaf9487ce5dbbcea57237e9d892", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "dcafb0621979381629e580dcf323dc815cfab7c3eb2d1bd003c85bfef5700d5f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e53e7fe45f5824fa5490ce10093cdc68d34d447fa90316c65736965e8d1e1c38", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "7675b216fc48ebda8c0e7c2c3ca8b93e7ee759894ba3b80ccdb401ecb986bed8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "dbe4e16517eac34de14fb79a1826a9333d19ee0e9109f8ba0b26374e811df690", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "969a41305bc68d07f91748e1350b2fe967623d2d6c5efc7d536009bcfaa979cf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "4b41e610966fbdc45dc3bf5a9ae01f646e399a510b24be4b8ac2299424c1bd41", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "2a4456cac86e87adcff7ef399823a4f790a0a409bd58839954c20c3d61316959", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "393ef2d99678f6a52cfc1c65ee0d060f1a16dca7c9cf43c2ac3d09ea33d00666", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "2803c91fed7471354d355523a7890a8036a7c41be286d089426f7e6d2d43ca7d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "5f2906b7bb6b4913880ca683eca52bc0429014e7b7ec09af33a2244f7a562ccb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "5ca6919ab0aeafef2c79fa03f22ab69e819aa01c31f3387b60272099dbe1375b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "58f5fe4fd0caa1c11e0f0f3fedf110f0e63685dd78d7fb3b303849417efc5c7a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "e18fe9fec7b8ce2a06554c364df22a6dc416d77bbfbd77b03b8888be0ab5f271", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2fa89cd2235744bdcd75b409b9d5c2d7eeb5e7fcae79e2394df947bfd9b49cdc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5ae15f516098a8f22602a7b17247eb49f0c3c545a09cc06f198f26d81b8a4ef2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4df33b852bf51d2ab75f171e3b37a7676b2eff56a7a6dab6eb0113594b7502d6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "92887ead70ef866928d5a0519d4411e023f94d3a4cef0421dcf552f2224fb211", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "73e6eaedcbe62f9566db6226752c6bfa3872d92fdb7e1fc8954b137cf51a9886", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "eb191ddbcbd48434df76cd917e41d7f59c0fafb802e2cb9deb99d1e26432dd1f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "7d0dfc10b8ce12767ed39aa56ac6ace9cfb2dc709c25b7d45127236d69268c9e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c375419413db2147a3b5095b4f6fe416a29a0c89964a18337150e7873af15751", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7c51f725de17a8c9a5207c5eac31a8e865a8bda2b0d2e1c785962def959b0283", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "c206fc84780ba3f2cbc6652ef35d02d66d1046ca9492c6ba807769624557a95e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2f260d448f202192c886d10b95b3d3efb4aa394c28092394999beae23ee87dc5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "253944b8129bc57e0cd020618111de6d70aa0d6cf48d89cd639d20055ea484f2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "2ec3976fa2f01f8869a9347b58ebe83d53b4a8968c7af481eaaf7142bac66f5c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "5e1b31078950f1af40b5228e99980921e1e12077449071e4518394a93f463a74", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "ca9ca31cd419bd7fbef6affb75ecb07fc75717e8262a65aa02fd6a3c5fdde0de", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c75b564121ef84db2ccbe17a2435c00b29da46250261ef32cea3f8286374f60c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "82bdfc162101a400e438ab1b6789c9eee05ec478c5781fe138c5bda9b33bc1a8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "6f533a1a5b3fada14afbc0e892a8ef63e7002fc408f52744b034b70b66b1d3dd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "7602715af550cb7c702bb78ca604f482ed5c32dad773660908126f6f964321df", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "6502ee2a9f05bb936ba8764f15faeab580140bf136f349ff3c5a404c7df2c8dd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "94fef67f0d425fc2eced710497c5df158286974bdcdd96dd2a2cc89a02c9fd35", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "38a614eab8115b2587f1538ea6b972fe16de72415fb25c1c39c9acd3ce630f53", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "fb5a00f69cd126908dfe4d6626c66336616b835d00361ddb161fade6623fd591", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "9584d1dff13c0b781406e6653c63a3dc7858efe2150eb8c24492e8c9422275a3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "fbe420f46793cffa07d5ddc9f91f67b4afd756f436dfcfd2dac50cc33a16650a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "4e8aad72ff0eba78c8ecfff80a66fe1edba38c44219e9cd4c3e97237f904d067", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "e7fde1ea85113d320299be52a2babfe8edb53f17ccbf282a72e0f30a0f3f6788", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "589dc071f873baf2b1637e12ff6f5776c043ebaea62a41407c41f43cd0ac0b24", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "48e0721a979e2ac69ce917d94154395b823f7b6ab8121451298639825954d607", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "c091a8b4a5b8bc17dce0c9f3b6612a11eeadfaa332dee724dfe08f68e8846e21", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "94eaeff66461b0c1dd24ae787e0dd9d11df5c6a0670c8a47b6614fe9285b4883", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "89ee29753fb88599ebd4323674b7e8b8aede4db15a88cc64b77ba5195ec443cf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "d027ecefa0fc91fd404e0af2a76b356b2889db8f3d36c4d7f42b27a536e785da", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "3c250232834deac2a7f426b0d9210a14d9d74ec83c97f31c9fd917d0f2d8892d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "b244c116d208eb9c466bf426059a5833088ebd72bc72a1377eb0c5a7a3990fdc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "7f5ea0b985087046882d91de80ebcef186fb95d8391ce03380fb428e15f1f167", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "4a99e59439c79c6ec93b534cfe6d348a552c80f52f88615d6a8e8410aa845d32", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5c4bd2a5c7273dc5e07695f8cce0c6b67377c751a3d4d129b3b4ceb572eb32c5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "ea986600f571a1073e23dea3f0af5c91b4f7f22f45b7fc616e476b6874d59171", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "c29f38aa9122defcd869617735f9e8601a511973e0e5b50e656b6e753786b628", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "9dc54326abbef10818cf6175f19ac174e1fddba34557069f1682ed9f600d0113", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "46dafa6bd4086a8683aa02fb588e7de6313b4e3ccf66101a028375c33ba04c76", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "76384f2835cb02ac6b9031e3c97239349e156ce99b6df13d321e54edb2af83b6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "56a8a64fe921707cc3be47b3667148a0019efa35116179ae5ba2c2ea1b0812b8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "1e9b641443eb521a44fe0fdfa84aa8ee5e7a71986bde13fe2ca08731c153b617", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "2d4aa2e5e68c20324052dd54050c22015614e40d850308a4894e16e1b892080d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "b5038cdf6d01f266749065f46d014360aa8d9663da838fcf96dc7eb66c0cec15", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "3a48b0145adc49b9a046725e5b71ad60187cee346b26ac1651d0d6a8070a3f1b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "5272d4e31a5a42c5d4a777af4e859cec3f648179b8c6a000967d0d68dd258128", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "bd5f3ac6e0b6dd10b17c90bf47299bfbe669363be97f08dcbcac8559586d69fa", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "34c396cbc07c177d386559c127033f35bfd09df633ac845cd96409eb326007e1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "bcfe4e526cde8386e4da56aeb7e48c7789690b872820e8471ae42a05d5a0fea8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "9ec513521237d301de0429f131bbcfdcdb62782ef565ebc54057607df225d940", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "03f32c1575435304a71627913f7e80cbc09a4d077ca5fea82f8614663d7313e4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "eb031989e2de629147768e9621a50aeb6e34d93de9048171f604f15990eac079", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "ad22f8e478cd14a415df40478601e65c4e507d04581a89adeea2d3fc6d07f672", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "8e75ba648a90f42df16b6209f3f6cfc1d4b9bdfa87a9632b361fa5b047e122b6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "9b58d9da47d064587b9f0426e5c8ae272fcca87fb35d25acbcb07d9dd36b2822", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ad161e81eb3b1882e4cd7169f8dd7d518c62ac823eabb0924d478ac4e37930f8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "eae2d81fc7ce7401f2c6da610f589faa5f121339740e88ab5c6366b39ab79ccc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "a8dffb5891ab00298f53c6adeab80a9a02032367c22a6bbb20e628dead3a5f7f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3c028b5f7da91b126147ba1e8611154b0bf5ce8ac171c302837b7ef024680268", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d561570f7348c2cd36605a118bf40f50519362c6d2ec6495ea69713220da45f4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "483c87e32be4ec9bfe94267d663d38eb7bafd17af46430923c36672f6816fc4c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "e034bfcaaccde4c7588dadeada9ae3fc07ec22953b46797b09c04bd8d6c77844", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "68fe32afce56036f3697470d9c2e328d923b9130ef9d9b6abcc08e6c4d4037ad", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "e369f09bb96d3646b07a01844b33aaf0b87ba0e7653929c4ed01a57352a70754", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "54fe948969597c3ba0bc14816ac9fca81cd23b0af2279f5d3fa40f0e12da261e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "59b0a8cdba585785c12e81ac83764999b5c15e295e5f86dac5795c65992fda3b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "20e63b113a27f64913790209e7a8221c7bf6e8086b10432edc4ea9c03559179e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "8b5af421a5489cca1cdfeffdb9bbc2df0cbee2dbbc052316b5e94d72f2fdb6d7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "f3988496fb56799e0563b62e3fdf26d88f25a44b12a4f6d9fd62a3e776219de3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "f13311a8b0810f65c7302500ef5560ee172d3af06f839d5bf073f9087f810ebd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "3029eb646126707fe88371e1c6fa80a1ef852fa2c30cda8c72247ec92f3cc32b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ff4141b2d18f0e5823b0fb2eb272af243be560b06b511a8855c633120dce78d1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "c7a3e3caea4eee31897dc9c41899ee610c6086028b4092cd83d99192fc3a7620", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "49ce175395a0c1b742ccd45f2f1adde0f6ae901cbbc121115c40833f33a6c423", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "1572ef50858c40a5c40d90dcbe63ddf70555c5b644ce435aa7db3ad1b4cb5f3b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "19e626a5a31cd047cfdbc7dc0106b7e178dd1c6afbbaf4c44c0a97901334610d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "82c9a4f1edf71cebcb5c0db5408363aab8a91336006141369edbf6f4a9eb906c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "52f1e15728e3cc92b8f35730456603a4fec43bec10735907cc11996348d02fff", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "3fea701892b787692772beb3daf14d9b4a16859b101ce3c0e923f29651c30318", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "27d4fcb173ebd121f5d40f7b8bb0572b4fba326430c42ecbf7352758c9acb72e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5855df1d0ee9023ef782a733db231a7393ccde52a08a2794d52eabd1e3896d0c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "efeaf83db0a0ed894c0643c5dfcef4270320d667a38181d91f76fe7dbf345533", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "936d7e77793cddb0e61c29d741eadd61523753fdaa23cf533ed839242583ccb9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "bf7c9f82043518be81f680560330279b1d37e8a9166e86a94058e81866a81d10", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "66bc79219db3750a16873c7a61c586f7f190dfe76b0dd1fbe1fce18fb5650020", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "fff2b97c9d6d9c066ef1a9b3ece85fc31353d722aff59feb086190c19f171d94", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "f4fb5b2a23428b9fba8685eaee4ae592775795f22ba6d28230a720828872ab1d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "978b9ef18fc5e2bd101ac89373024bbd4e3b55a8d217faf19e535747f774297c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "3e97099c11a3cb3c5af39124b46ded74e50286e84107adff193d937681d74f4e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "883c6c8001686663792d1aa0d9becffa40c45718929f3ba5bd359990e2d482e3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "4566871738b6509ac626c867bed7e654da825368caad308f9a101565061f1827", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "4a92b3933804d2dd7d970f541da9dedae05c54045292cd946d5f017975c755f2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "0d83acc948fa95d2d721e25c87a85e4e2d23703ba04e754257af49696c333523", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "26849a51ba387e54b11d000eca54a95dc5c7b3c8fc56e5ea34c24d562f3e281f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "ed88fd4ed5e8214c2035b1de9ae95e119739257b4cc0f7cc56ab8c153f31f424", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "5def1ce44556d4340c4d35b17d98a51668283bc1f7bd2af14729cdcbac625080", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "43936617b2120010a0d8233cd1fa4791d8b205f0c824df380ec5f7ef88b51b18", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "aee2dc0b96e4037db5e0e1e0b1b9747d20d904d5ce5f3dc1ac3c6b228b5037fe", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "927ecbbefe666867af618c363ea31bd5f2c556355d12cf3a8bb8de078a5ebb2b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e8fe86ba16ff68ee39188382fa18971bcb11d8dcc5ddadc808eb31196c8dc613", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "65cb1bc9ecf216f2108ebb57a8f8c5a1637b8f1cff56de3df5496bf033907868", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "fd30978a1e5919bb7ff2dc6bc73d007a427623b6f13fb290c58c17494d82d3f7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "22bef1fb42ff185ea1e57d1bbb78e376a3bb3ed12fdcafaa4996218371846ea3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "ccac209ac6baf990cebebd6ea0394863836db257d503de6058330dd132f1d399", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2d4a526bad72165c7ac481ab1d46b7de89372d8d3f1c5116397f9e66ccaef917", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "9a95824183f349b18bd81d586091414dca7857f350d6ebd9320e8d3a7965b1a9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1306fa2f53fbc23b0543c3fe0b7bb40afbc00ed7a7b451ed9a672fb2efe08d4a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "c0f4bc4fcd8f961e59a0b9e8aac26a440ea6cdcbf89fe5e6f9b70ff36ac5f55a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "78dca3c03ca791ffdc8c020c3856a26d6b331e90bdb340ace63b53c81a28a82f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "de542736369be54a8f2a526a438d32b159092ca4f135d49b31159972725abcf1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "712090e46f213fa437f87ce9604d0ccac58821b12f1170fe240a206f81fe291a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2691c0a0f251376942de97466e5510eec285c896291986501058d5ae011c9fcd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "580f1a97538b5284c879771831574e0d291419ea1b4685310edbbe50d1b34267", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "4a786f841d8258f662e8d77dee9c78d8d4399c410fd93680af64c803c716a283", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "86321610af5463a60ac33f936412663b84d7cf72d1fc45ea30da829fd393f6c7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "117c83b64aa7907db3fef575d470fa1c3abe37d83981e221dbae95c2f4f20333", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "2f21d9ced48a13cbd98754306b5e1db6ac0b7e79d72557babb4e21b261814b4a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "6ef2dbcb6da0d9c2a1e1b49b433fe76b0979073eb8278a50b90a64c474051022", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "9ed165b7fe19a0700a5c3e641225bcc7c09f2611f46071d3b9f2c348c4a4ea9e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "84fcd7fd3cf6ebf028748f1404a6b4172ad71c0867196974bd31f471e7bdf164", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "60a6add5f3e3c9a3ab40a7c95953b4c616ce5c3aafc6f0b7b1bad1ac6055ae09", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "eae3749f08f6676ba31954ff382534806d0ca0490e743e3ce4a8f7b5b9223b76", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "10ac2c250682d42c07c0d96f77b9103ae006f2743a2e511320d098d3146771fb", "T3T1_fr_cardano-test_derivations.py::test_bad_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "0034c23aa81ccf5ba0634c27b36ecb52e500bdf836ead6ef614ac0bf795405ea", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "2bb895e99e7d55d3fcbd57265e2789fd2a1ebe1ca6ca5ccbd194c07f75b7c0ef", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "e7695517ed9da7731f7abf846d2a50edb8628480c7e9237a4087b1696aafaed4", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "73c103d509ff5f1f1b6a55375237908da703d7219263f23cf56f62d24cb7de82", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "08763fd829edc79d494a6e32f9255cf7edb03ab0230236da21ad5bdb96e4b559", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "741f993d4e89974a44e0751b2f274b8c4a83c97ab4a92e7b55053c36f7938ba5", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "9b703427215c6fef7a3b06c3f370eaa9229fce7aad55b05227d417db36aad2e5", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "29543c0d99df8fee20c06ebf4a2e0b33ef386dadaf6f861c88a3dc8075f36733", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "a90b9fd59cd4a84f2e7609b342998667118a24f918064fc4a95cd72b1a2cdf6e", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "60c3aa5cf332139830571709b9294733e3e21a83abbe13f15c0f0f8cb60de700", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "1a3a795f924a89d88a6ae7c8f388d4ff9ee62e8720b74f3dd917a23f938f8a71", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "3d1ee9608c44c7e4121cccd2fea2eca37302cd747385623d946127987da05bdb", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "bc5e5647991426815fc7ac8441fc6927e32928a1e089ca05cb60c85bc55bf00e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "9322cea48a2146a0ce3d91c5b861dd9f9fcecadba175a057f4676d7bb4ecfea4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "4de7fc46fd600e835602305063f683e439c1d711162dc78cfb42b6c82397aa55", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "96392f22cfac2f73f9f56f630b49ce9ff17ea2ebadd2da0100081cd6739a7562", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "afe53165cef5bb38cdbb7aa6b41a425c9446d02808a5125fc8c0cfb7a220391c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "2bd921dc55acdcf7438c3e2e902ae9039c2323cc1069ee61eb491fe611c5ca8e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "edcbad5ab0769ea6ced664b4276506fc0ee01d87c3b573f291586b29628b9f96", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "7c3477ba403ce7163a6d0cbabe796785d87fb255fd630fc567854bb939307ffe", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "850f07ee446360dca5463213ebe4c1a7838311063afbb150185c7431c55d5de3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "ced4a954e5ff089559aeffc3d23c432c31238633f81d272c0b6c3ffd24bb3f79", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "840432b0cf857be4a38964abcf29824cb5988250ebf337c67b2fa54861ebc6a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9d835a084a859e791a6399fba4422bc5b33fe7c2138181ec27a05bafef5ccc0e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "8b4000d997a14ba48a31e66b905e49b7bb1440b84c7b9caf1283889ab3f9648f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "8b4000d997a14ba48a31e66b905e49b7bb1440b84c7b9caf1283889ab3f9648f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e6d7e982a40484b7b32f125843f43cfb376165291d141b7998242ffe5f27491a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "7131808794124636475d4006a5692961627361a4f2d0677c7730175dc0c5bd35", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "b84630e2985ad770172478b24b08efa8c3d74c606ae6e29a544a45208692ea21", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "df2a90ff989358979d271e81d4d131054fda83af36537eef58b4f39a3b4e3fe6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "79685af242a9f47a3ce3400bbca787d379a4f9d15f6ad93da4b22575cc491353", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "40c15a8bcef32606f457429d8182b576c9d54ba03566b62f989780beacd8f24c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "ae65007dd3539889db0e81c5ccf40edeb0a19d7b51c1acaecf9d43899fa6a11e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "51dc27e948b87f14125eba3427390eb02788a6e647dabcbce898351e398a0440", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "1c7ba3f0131b174911643412ce9fec1e4d80712b5b00d7d9fe856cf0df9dcab8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "79685af242a9f47a3ce3400bbca787d379a4f9d15f6ad93da4b22575cc491353", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "40c15a8bcef32606f457429d8182b576c9d54ba03566b62f989780beacd8f24c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cd5991b9252e8383070701617e21097ebb8e071d2c74401d4881ab9404958ce9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "86852fc7a9ea2283eacb1e67800bd61a6134767c97ca2119400f77ce5a97cf87", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b4e9dbdcfbf85c5162b7e8199b421a944f820a48c136fedd249c5524e7f96d18", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "cb922eb9a8ce311bdbdb69f34bec922db0c332c8235dc10d3da475743acacc20", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "875519bd84f64d0773913b725eff90b4f75156445c19f152c009bf67703166f8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "01cb8203466f6b8451f12d0adcb9486b9f723e68ae405ee632a0779ec5df84fd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "611cce105ff935951174415a2480f6c038a1904b9d88d1482b35ee6ea8cc64b5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "afd10bdd1f003a3b726e48128d96b53caeefe4a6b0f19fc0cbb5d992f0316ad9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a716ff6e49230c579997fb092209106cfad232727b188215d89e23e5811e1a62", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "bccf211174a44229f024ec465b12dca861dee9f9c8e2dfab3a6a753ef487f034", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "b60429c745ae0becb1c315a6076e503a7e256387e5b7c98401229076431bf7a0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "1185915d8e543bdbfe404189183bd7fa13cb8eb52ab96de7da349ac85706780e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cf57cf2bddbfa41a0a880c08370f91a8a3094e518bc48fb933298e91e547b35c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "2c203e8b9fde9d869f714fcbdd0ab8cf3bbae429091c72cdb920e82cbc561912", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "64d08b5f47d5578e045798142e02f5cf35c10262a4a8a37bde1f91f771ec6de4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2858dd586d3189df28e43fd8f2817438a9f5b3df08672477ea288dd4c5385e35", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "bbd809c63edcab4acf948ae89be0599b5dacfef1c002904cb7cf64e65500a7d6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "1e86489272f9c3a20e20a12a68a9b249a880b9316627bc0b4274810192c61428", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fc311e76173a334db4729cb93e2d394eef58371c7f3a64b50c41eeaa2da99086", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "11add003559ad7a6054b29b50e48d949037642569c3122f4e917e9895d7cd0fe", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e57fbebbe1ac79c0779a63622e4aa54b48b8b210877c0606c7e9427e424072f0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "c421d807cfc376eb673d0d6cfdff3e7351cf28f4d87f8138decb59eb4d6816dd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "05866a0df1693f530c003c1b1ada47487a81bcfcf4776270242da44c60292730", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "a590a401d340bef86b264988dbb5bdffffb22942514cf52347b1a27276c6961d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "1bd18ef412c1e82b483e5530212695ea0a6befb002e84289d687b496aabadea1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "c711d608d4842140ab05745b8837295c6bec48749281b1f1cb39a81da9db7225", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d7edc9c63a7d575907fc20071632bb724a7de1e2d074e877a8b2e12fc384ac87", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "fbdab8aa7beaa25fe453015a5bf0b45a4a13140ce5d669521f3dbe55b6aa29ec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "826bd0eeb3bb4622e78003c3c8feff47d1efbd3bae32b44635fc421ebc64cd4b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e40946bebf58a02599f6b15b925dd6f5ae0f18e2bb6c7fd22ae8eb7881261c23", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "300c2a859fe17bdd65513dfe40f6655b258de213e6e43463ca6da441f3d1ee1d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "2622280beb6b9b4746c58f67dd6421669b1121359e64605fde1a9dd1a5b29a3a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "e6ee915c8582103253269e0a9cbf2d4473f4288b7ad654d867c892411339a1c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a3e3ff8944c384b512b2fe8537fdcd53e99920bc89c8462dd5eddc80d5fce20d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "1440e5b1c20d4744b7a2fa5c2d9a848bd5add4ad2fa87eae90ff566cb5f45057", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "42e2a42f832a53ae07fca5388a33e1f07e3d2b3eec8a29fb406f8ca560286719", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "03320e010e7c08ac28d41cbb102e5654b891f6964a39fd33656f3f6e33cd720c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a755fc41677c3628e40ff4508a972667bd44deb23c46258832303dcc7711d81d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5abce6911400d989f08cb75ae408607c2f5771088bb91a55575b78d88808ef1b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "aedb32ca8568039c1cc71ac483000934d7a5188076f061edaebd7f6ea49f1cad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "24f0e9dc5cbba451ac3119697ea4569ea1d2a0be75cd571423fe33ec30fe668f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "a5a9b8eb38554cee95231111dcddfce7ee7838ab5e9c5c42fcc97228c36c9451", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "ba9e2e3e07c47325ac69898f168b6ce0e74edd35ddac6f063c42dc7ddbfab311", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7ffa274bcf94b72bfbd7072df810a8b1dd899d28c81d0482415d38a25c8bee4c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "e7b338cc1107eddbfdf76659417dfa32322e366c035ef673f1d0d38f471dad65", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "397471939486310d725939be4789857aabd2fbddf18a9f882d68833592e68f71", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "c48830f1fe486be37cc61a2a62ae9dbc25d0c7757f710349c171f60b32c70881", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b949e172ce64e738a8e260e0d95b95caa9f8a9b20862958041856af8b3c0eeed", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "f8ce3e5f85548ce0475a2a11b822e154186036b18739c84babb49950c9da20f5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "297db90d90fa9565785612ca42edf556837c7670ac803d398debf817dd429ac8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "416ed75db7169529f85f3cf75893a0caa6c4c3106ecec8514b522fc54e7a6144", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5464af7649c93fb4988d441e5bd1b186e70e58bb242b2485cf6e09834c252b76", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5464af7649c93fb4988d441e5bd1b186e70e58bb242b2485cf6e09834c252b76", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dd95da252686be6ee0ceb3755392b85ccbe0e490ec01cfc1fde9502e6bc245cc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e443db04506a13963ffff4b25baee68da344192abc2a6abbd333ebf2132855f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e443db04506a13963ffff4b25baee68da344192abc2a6abbd333ebf2132855f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "2e017db83648dd85b9fc58ffa0526bbce7d2e6a181f5201ca9d792a36fdb9221", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "098e3f653c834de2863812a34bc0f2b3e3de4836e00c33e1fe7127b64740c2b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1c349fe6ad4fd2eca7925d17e0ed535069e7f61aa123d8d76bd5f545aefbeefc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "669595a09dcb786c58b25ff463b96a38027a02529d0ec13e09d9bf190305a0f8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "2047989b638c547ed289705651ccfa2dbedfbe0d493657801ed781e945afb75f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "ddc4a9f7ed0f54076707ee844abcbe7d0e66439b0cd21b74a4fa38b6e1a30947", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "a40a1cc647b3d3d1ebb1e67a425a8ecd6ae361b9e9ef80e324fc6ec3a229169f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "3d28395c7969924d6b9bd18c713ad6c41db94dd1cdb28f0c9ab4164e96df6084", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "e1551347f8089d3d7a2ce54b8817636f1f46367f0423fc3ca3ec6dce5ed69283", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "65e1cc8868891f4b01f64429f1442069d144c02cdd6e4b7833fc30ffc99629d4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "9322cea48a2146a0ce3d91c5b861dd9f9fcecadba175a057f4676d7bb4ecfea4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "7c3477ba403ce7163a6d0cbabe796785d87fb255fd630fc567854bb939307ffe", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0fdc58e809113559e3f9a3f739a006a106dfa01e1757c50d316029c11005f372", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "6db89bbddc6de5b9f3ae744fbe765e78b36abe1d2426ab95134c70c64db9ffa8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "6db89bbddc6de5b9f3ae744fbe765e78b36abe1d2426ab95134c70c64db9ffa8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c39f9083d2ff858fcd1e04b31f0146b7a1074dc4c3c941d3105c7a138e65c222", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "ca04585557133975682fe71f920fbeb57b0ebb2738f956e10ab8cb7da80afcd4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "283ad85fbc4a9507053b372b8b53769587dbcabbdd400248f589e41cc7edfaff", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "e3d8a3f3bc458b71a78e4b01fc51a1f2a02efb1d67b2f154eacbc86ec10a8706", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "2e4519ac104c6b70fa9d3c42269473e414ba7183915822757cd3ac7457fd4cee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "933b649dd0f682c6254d1bffb029bcadbe4e58127912ccc8a7ed893ecf3fe85d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "13a98e80ce505dd5ce8ae9cbb1657dd615350f1da18e44fda085e0d1ebc4eefc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "401c484a9ad40a075b293a80dc19c80086c7c1eb55fa8f5592f4b7d6e8cfe133", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "401c484a9ad40a075b293a80dc19c80086c7c1eb55fa8f5592f4b7d6e8cfe133", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "401c484a9ad40a075b293a80dc19c80086c7c1eb55fa8f5592f4b7d6e8cfe133", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "401c484a9ad40a075b293a80dc19c80086c7c1eb55fa8f5592f4b7d6e8cfe133", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "2e4519ac104c6b70fa9d3c42269473e414ba7183915822757cd3ac7457fd4cee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "1663d57d48d694cae77da75016726ae83505e72c3ec6c648589c6bff4843ea8e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "3b72b41651bb6878466f04593e1b173a48ca77a89753c192e07b1280d7fa9cbf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "f38fe20d7d941da05e007e4310b7c960dd933eb46794ec4bf5df719bf1bb5dbb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "04517510797ed068991218b02800b5b76d8d3bb54c4f0e6bbcad818b1f67fd17", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "ee7d55f049b9a644bf39ed30507c8fd315c2f239e138212f11468c9fbe160c50", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "79ffa47696b5a55a5bd2cd1ce287c56e3b17336bf609019edb634528e15bdf70", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "115bb9e2349595148cb549e92314ba61e4134abe0aee27b94361b4f3e443c256", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "dff2aeb447be4dbe6ee18c6f06858ed8473b03fae005b131589d3acec94c09e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "240d427fc67d9fe9b355a0c338b2ca21e0f24202d7a4bc84f6393c7ec0e7cfde", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "4bc510c7688cd09bb7ad1c10031368a8cd50a3c72065a46710e5f9a12dbe0d13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "e78ca5170b2f6b1733d5d7bb1e0471e837b69cd76fa12205d6c15ba78b347da6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "6db89bbddc6de5b9f3ae744fbe765e78b36abe1d2426ab95134c70c64db9ffa8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "f1fea7cfefe7db049657d51a5dcb09a3fc7bd7a5efb13bcdcdd5b04f758e0bac", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "336d99874a5600a296cbaf1fd1e6eb51fb1bff7b2e70bdf08cc7fd64d30bab5f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "fca1f6e4c41b5e7fbe2104143cf7eed1912f59a53f6faf1e7c64c64e455f71fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "6f1d766df944c28c2da2bb57e9298034faf9898f28dd41f1cd383cc70df11ed3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "754265df4d711a1b557dea77e24e43c247c43dd181344fe6c17216bf9732cb0b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "dd7366acac6a5f6b4682b4d7804a702b90040f12bd39000562f4aa33e7b6731b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "8f6a78bba61bf198cd55b82181a5de743cfe8031c76f912a2c5748d16ea96b68", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "a4759b39c84cc597ee693ed1c7ea39316bc8c50b9e1e101f5ef7933d39c42876", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e922fa4d04f4743d94d24b16861311d4bb9fa98f95e175da3a033869e5032819", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "cae9d9fc71619258ecf4cb04a48fea12e0fc24f22e154d41af0bf9e9c87e54e8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "f971b0da19675bc65aa7a83264b262054702ea58b834506d2536b071ddb08391", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b6f90ccfac95d85d4d37873ab3f3f6ca948740e26835ca6774561eef25615861", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "348f36bbd28a87f984a883807fad4cc8abbe229e25fd96dba3b63c7d2a752c51", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "10cef1404d565fefe6acaf41f38bb51b312aafd0c18172e80d08fa00c48ad158", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "6ba57282a6b222010d76b1d5e4d9634261a3d1eb3bf9b57e85ef84f3cb127ec0", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "1b8b98cf3c4736d15609776029b1d6a1d7f60c892b7dc0ede97cd0f7aa7aa1e1", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "1229f7f99cbdd05efba4adc64a211bd4607a310f7e19cae9d18965cce113050b", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "083f9b179732044477a98a6d6509d07e65cb3e74791b3174037312b0dd07423b", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "b098912ecbf65dc895ad329931639a080d7a572a47eccae86ce1a26885b9f3f4", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "946f552c09e94fc29089c4ca18f58357f5731c24141bd0f0c6bb1b22a71796e9", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "b6abc957f9c2d35deb0d07d6c800b2dbd1ca45c71259ca0272a53c4d97a8f648", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "97904eb3d465f6c8e40d7bf99175d5d4f0d6cb4c649885a0b196284dbbd1aae9", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "9d33b2a7aa71b5f8a227b5b77c9f9dd33d7f83d3f533d0aef17d393a5d30f592", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "b23c6e5de33233b455e46072b71beaac299e261621bfcac44f5d010e5f0e35e1", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "31b8427d5d73da44f945ae63179877af261c20ae190f8565139018a786fe1679", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a247a96d043c6c34750d1d440737356a9d89295fb744ae4e1144ac63e722ce73", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6dd92ac11aac4020e36b2263a119cbc2f4d296867f2e699f4880ecfe2452325b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d46b9066946d1051c6e9c8be596f20f12e6df153e072fb569ea9de3151a7eb7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4368b9ace836da6c57686ed466a2edcc5169e4228623cf4503fb6a9d25e95ff2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c3e46d5fd4011be753b0275bde413142da68ff7b64df04f0ccf835f8ad2ef815", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "721a67c17cabe7f2187652fc8538ea8dc1f352cec9bff870753ab647176f7aee", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "f44feeda372d3762f976e4eeb614b18b6e36a105e095dc5900e17cb83296e1ee", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "5230915c922e47a9b3036f3f4524fa6b6410567bb8dbce17ff2d7afd9c85e8b4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "f6b8def397c8914caadb1c83729b768b406abccc9e8ea76997b330fe26dfbd90", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "180ea1f5056e98dd08af1ade3da6c2931542a1b1fe724dc10b0db0344859bdb9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "6eb8cbfb5beb04dfa512492ced392dfa13b2c78c0229bc8ab821d49b3619e75c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "200cb95eff1040327aa5535e3cae0deac251dd3e1a2f865325380d9bf550d4d5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "200cb95eff1040327aa5535e3cae0deac251dd3e1a2f865325380d9bf550d4d5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "6206e110b3f3ccda424afdec551fc11a1d72208ec605fc0d09572bfd674ac9a5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "da8318f687e7f4a199a728b6e5090f20acfa98766fe10f7f852e2415260b9d38", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "37a26efae14024f70fcd875a41330c8ac784c68f26f4e3364a9e602277d7d46e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "e082e2963ae857df58fcc25d3c8e874f1b9ff38c6bb3de91e36179bdc2c855b9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "98afe06e1da13fff4af6746555a53aca5903b8872b8219677384e24f13a393bf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e299700e15a1dfcc70ef7f6c639d185bc94c1716351a251a17b58eae8d6eb122", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "6b40ae839dbcad640630a0f59be971d763438f317d3196c5571d39f478d60390", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "965ad5d3a51137b866506a881ff9ebf45e0f10f0c06291551a7ba2fa16d01f9f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "020464c3d9e7b8bc30068fc37b8b9652952443214008bb0284e1ea399637b02a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "98afe06e1da13fff4af6746555a53aca5903b8872b8219677384e24f13a393bf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e299700e15a1dfcc70ef7f6c639d185bc94c1716351a251a17b58eae8d6eb122", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "2330a36dfa9443ab7f84dc03d3dc5bd4d45b75aa8680b2f00184c58858806ab2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "290975661c25127e4f193d263f01f7043a7f6cac56fa94b74b98d4f32452aff6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "91c95f5805a7c91dbb175ca1eec8e617122709cfe682d428c46337e7dd30d34a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "e37a58c98d941f787913fc28891879801f787d8127c43d6836c99699623af5c6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "d6ed6f67312f711557facd7bbd18c490d75a8cb4a4bd68ba45170e59985a2a00", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "3c45438dbc26c79e1eae654b5ef6f67017821505fe496ca63adcc701ee0b5e26", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "6604c71da8aca55d7f21b3cdf505298450b07a016f03e8fb5625eecb29a9442f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "bfecd3336d6f8ea91ba704910c81c62c20b54d1e2d3705be6a1d0e7de08b8045", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "cc8f8b3b3c30bf42fc070527464aed40544d6f69ae5328321685c454c2d1ba43", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "20a1c290f62aa22d954e103f948fd2488b6f8189131fefb9e4a89130e20cc66f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "f605d91b475732c322e3d46d7b9de595073f0d4151eefbc334e3bbed033f12fd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "73200634473aaca0cc261fdfb6464e12ce7bb10afd6d7a799da8ae9b23f98f9d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "0e8367c5539fd931257a87d6b86bb39ac4e79bfdf28194ff35ba6277a7ebabcb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4008b7de0da81e06ba2ea9b1f41b64d94ac570b501da60102dc2525b3290741c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "230f0541068c521791431d35de593af89c658fab41acd6585d7828d5a2821f3b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "222ce22f4a9573bfadec3b4bbfb8e5d1e7e5743cbfaa12b20d9df0edd609b1a9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "848d70c6300d05eec597a7e49224b0cee42b7829b52ee94bc0f2f0fc57f75660", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "c5ae622e2eae9c824cfef0ad35b0ff1a83d64fa2ef2059a0997f34bbb3d30377", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4fc2e47e542e8abfcd24aba3cc804b657500203decc52db30f4f82376474075c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "db6c6a843711bcc4403c1e97eb578671c148c44bac35aeb8bc7f8538eec73c23", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e63d48d6b6e10963123d3e2486f487b9491733e9e7ff83dd478623b79a6b6228", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "ee3518be3da2b70b6388d7ba5187fa009b2adf1499411598d9c14e18064950b7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "e48d2a00df47c898ab64e121285e9437f4acc3e564bda6e43d66bf99ef2aa0cc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6153f26077e179f04d91c89d3093e255cfb0965d8b14dda55f795405814e8b6b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "22172ed4988d51d0efdacb06e389ac9249804247f78377b90c090a408e5643ee", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "f402188507a2e32ad545cf8a76e674fba688a427cc53c94fb9dfdbd03bdd471b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "8dbfc0d37ada2ba012efe4be30ccd86fae4ede85b25323bce7421cd19a2477a1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "fc78b140c3fef605ac144e55adaf4c9118d350f3bb6c4e4550ef3f90a185c9fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "4a95ab663eb457f875b5371db489701d3a6d94e2ac8f4709d5507d403c6c0272", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "ee98405d0d5c5f40f46b1a964a7501ad627d865924027b6660117b755d1ccf9d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "a3bd2ba1e5ca2d1e45d8e80e32af70b3563e2290434edc3bc6ea521651245fb7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "b916f1ef8486dbe21911605d221abd1717172d8dbea855f20877df51ba328a19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "1036b3f14ce98e975e7c30f0ff7cbea024defa38290b3d99304337702bb57150", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "c7237a7dc8634f7f108c2e92a54d45f47972e4221b0d36338dc1f42864c4e85b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "081072ee6565c1eb68fa36d8a836d51dfc0c79cf2ae41407e57f0f959b1ea06c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "dcaa76601a2d1f35e80d823b64549cbe70f08e497a9e94fe7ca01b9a78e29c64", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0747ec3ada8094289f67bada14035d515cc01372f13f1c221f7cfe99a1c03c4e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9e906b70befd9ca8c569c66505c34465201127561449e52ca2e6f96333d26dcb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "441a58070d8bd181ef5235c1383facbbf39d0abd08417ba32f136862e039b61d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "a83dba693d4867f83ceaf0cadb5e56332101c40b170145afe73f91dab20ab140", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d23453f3a51a7cdea1f0e136feecae14ec5e50a11a7883e334e0986d6a90042", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "01edb3b1f00e99171c0c67448108ba40faf322dd521f6ed669606e97b2cce1f7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "e6c0a67b3ec82ba119ce34bc9b1b834c4e9408a7e7ac50ffe20feff174b68fec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "5967a3a8fed1f910fe239b2722e4075c43f7707cc40d252a2335ddec643083d1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "02df484e4aeb3bf3a17cce2ba353ba05f9ae38cbe6a4a3f454831fc50dc3c0a4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "55e581d98e055610c2d926d4432c898f57b9154114cb12fdd014a0d09a888d43", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "172e95238e5a4cefa9061191c94ee5819f5d0fe2b1456118f9002854053d3bf0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b99d88505ea3ff5c55740c4f5fa8730d6f10665fe23a48595b1f6ab9578d5b4b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9180821bd169bec3ba03d5e8927ee5a6dea67bbb6eb259d78b827d81c124dc3e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "409184c7c817140622c36ea247fd1a93f08fa700fdbef8273353830edea44f7e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "bdfc61cbaaa1282755f90c319acf70e1f234a8e8dae447bd8c435f27f56cd079", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "e79191d0f48daf82b98c81dd1ba7817f583434830e79348d838855ea88d80810", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "e79191d0f48daf82b98c81dd1ba7817f583434830e79348d838855ea88d80810", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c53cf72db3aa6fe988c61d0976e5ddab0ef0549d5e843b0b361d1111442bdaab", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ee4e27b295894cb7b729920fd8ba01d10c31dc4a6ef9000700cd6827476124fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ee4e27b295894cb7b729920fd8ba01d10c31dc4a6ef9000700cd6827476124fc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "1d44bb18575b67adaf4b563103e7cbeecd4b14066d7301d48f691fcaf6037d05", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "11ab3ad9d47667e96bde9cb0fc48d0fb3d64dcc425cb7fede2f568f18e09f4a1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "3f066218d52f0a13cea698d272c148df06959e465d224579f986ff23da6357a9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "2faf9a603e8020daaeeb820df36cc697ac25c4371d69faa1207d79e5dab0b4b1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "d7bf0417f0593d2a31ad5f72aa73df64c4adc215b7961dba1b82482caeff1f86", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "56c4ce7829a0f0cff638a59d4fbae5044e669c42daf8d9486c34debc53fa0d93", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "eafa373e1c8dcc2485feb5518f09a7d6819243458320a73f94409fbfe673b31d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "4a2197237b330dee82b1e8aa94925ee8960556899e03071cf7f9a4fe1dbcf730", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "b9c94c88588f73df1d6a87ff4586a77cd567cc7d0d22090c78ab03ee41068661", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "a247a96d043c6c34750d1d440737356a9d89295fb744ae4e1144ac63e722ce73", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "f44feeda372d3762f976e4eeb614b18b6e36a105e095dc5900e17cb83296e1ee", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "b987951967e05158d2ed4fc75bdc1aaf115e5c94a02834a770a83a12d1ac3c8e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "df72ee7c4f39d26e1351eb75947da6f52925f50c201e764be2086b55a0c9b5d8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "df72ee7c4f39d26e1351eb75947da6f52925f50c201e764be2086b55a0c9b5d8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "9f4df2413a0c4fb1b0e1408f0402bfa24d09eeafcf31c0774c7f3c4c79d79750", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "b9d971941eeff6e06fa55cab19477c7ea5ac5377941ff05e1b3ce60ca7443d0d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "58caf49ce150f39f86730826d8e2f76ee10aa0aeec94aa73086e9260c6c3770d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d9b018c810f7b1ecdb59f4f955430f0e6701f64c84bb6b90e00a5bcea69f51e2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "7643d62a7b5c42bf307df5ade1b414ed3a57bf39784fd3596065093f429a0057", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "434cf32f05ed1b5f4c8513fa43aa755959850764c91755f26795d60a35b5a91b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "de26f71c862d3cff0902aab7a58c0896ef0e6a3c212c5600727321bccafccc19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "de26f71c862d3cff0902aab7a58c0896ef0e6a3c212c5600727321bccafccc19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "de26f71c862d3cff0902aab7a58c0896ef0e6a3c212c5600727321bccafccc19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "de26f71c862d3cff0902aab7a58c0896ef0e6a3c212c5600727321bccafccc19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d9b018c810f7b1ecdb59f4f955430f0e6701f64c84bb6b90e00a5bcea69f51e2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "fa400bbcb2b0e4414004643f471246a8d740e141d366af13d836dc0d98ddacf6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a999c7f640a0049e96cdb26b3cc79dafde8be50fe35763c6839fb6ec985b3a48", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "4bf5e96a0f55d129dc7ce621be473d7d33631d1442b7d6cd6527b6816b0db68f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "8c2bba424e6173268c943cf28588e2cc81dd0bd597cd3b2f15a23c8ec3b8565b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "b7032b9c855121e807d593fd8bc04c47d6ab45afea113b7678a2cdfb97add2b3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "e8059d0cad745d08e9024e8fe42ca30216352fa66b3d639b24dd02053ba426db", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "6b68d1f69b5bb4dbfc25b5a66ef9fabbe7cf9dbddcbd92117cb697759aea25c9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "75de63570e643f7d9e14bad7dcf1645a7ea7abbf5777bd899d31bf8dc334a4ff", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "b4a35ef68dbc92d4be37f46ba85a305cedfb7d2e03cd4bd6dbfb06d36b2859a3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "51900ba5e18ab7eacf6b5d84deb7d131037da13a08a714ab48cb6ac553920e70", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "4b2acf5ef0e4f01e7d210a8841b995335d65587da2d8ad40169fb6b0e09c1c87", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "df72ee7c4f39d26e1351eb75947da6f52925f50c201e764be2086b55a0c9b5d8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "a604e9df54c65c1ca39b91236381b4509303ba24e81c7b4d301a8f65f66173c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "646b7fa572e0cdfcf38be5ca1ab98cf6e2fde93a054d200c2e4679afa13e27c2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "9a19177eb4ade4cd4177e446692370c76b6a2367f1078de728b0a5b92bc496d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "cfcecfa6bf5e13c6b71349fe84cdcb33cda543d6b564d2d6eb7678eb0d43c446", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "0506e0240398bf4dbc914de98c94ac4af788b2304369236290e8591a53c3362d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", "T3T1_fr_ethereum-test_definitions.py::test_builtin": "67c8767e9df44dbf8e1d7690fab63c1ca05d1528334c009a6af0589df5237466", "T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "4bd6d3311a0864951360d8fe0175723ebfe8ad58ca48c778aa33cb9b5e1b7186", "T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "c91068b117db6eeb00422f80147eaf45c4b2df4e78cc7492357ebf4878d86d0b", @@ -22120,42 +22120,42 @@ "T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "8f26090117591e281d635c7dac48e4e12295ada3447f5bc2cda78bda5317201d", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "350310ff9e822579ac8df1f94559fab2c11ed7b134ac2e71993250cc3186dee6", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "816545cc8ccb4de413470060c29c69b2795ac24e2646d718180c53606f27a3ff", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "e91addae17c24445ae6ff571ecb13862fb134a5513fe909ba3720ba8358dcb36", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "6dd7174da90b4e7931d3053ad82f72d701da353c500d7286c1e67386a2226187", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "17b47e89318a65fe336fc4d74ddc0b8ec66460f75c1f8bd9d0c24a7dbd9f6ea0", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "db88fc10d364e8a57a7167de449f85a711720587bb839becfed1f4ac61afa58e", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a196ff5110fd9abaa1ee18434dff02ca90c2ddf606ba89f2346e4cb7f33a611a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "abe869a2c4cb3ee12ff630631f01673bcba28bfa7f5d15ae1df509d5816259c0", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "80625393faef56793943429409134569b2965ff917281d6a039eea9fadb5bb5e", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "53b7b4bda666efc233a161b2cd3b6f064f66ddc81606dc5ec788db695aa1ddd5", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "5a58071d5323292b93df023cb79cee8255c1063becc5ea7a6053ef4847db6a17", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "ad584c33c829b14e2cfd1a0dc99078146801a7b576e59c1636e19a59ff035c4f", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "bcd765ab6b2a2b59fce37a522edd26223235ea7cc7896f08cfbaaed24853e615", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "f6e11a65855c14784d281a2ee830950da69f2b428358c47631fbe6f14963de95", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "b2ee2d2227207afa17351378f8e49485a9ffe694ebed9981a0ad1c4921a73c27", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a7b531082f7f52c5dc7d30afcd074dfa1b22de915ac7ccea8c94cfba5038ac9c", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "31b8e85b40e9b4ae2969140598cea01731290461af81cb38074a545dfe488e3c", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2e0940c62dc48d6a47560c45388cb519e60d18f924eded1ff2c448fc326e385a", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "acf36cf0d98e21e8490b86a9b2066617410516eb2ae7157a4ad1ef399dbc6164", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "e46279b14959efcf80624411ab3588332495a515a988adca8012be6a22fb6bdf", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "9a0d52e511fe50200716fe7d87f88f04ca944a5c1278220a68bdffeb8457034f", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d7f72aed84f7aca5be20ae724a397f8dce2a4a715cd3fbd99749b71a176e3e2a", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "a5fec7528270a467d012ed5281472fdc41bb278caadd216339a8fce355d158c9", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", "T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e34617b6fda23ae7337a33c5e2ef7af7bc9bd2aee25d2229441ce38aedfc28cf", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "68546cd962abe4d13dc92860da39023e1ec58d023b1207aba28fb32e08f0e5c2", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "b1b9af6eb83d0952be8abee6d186d67db22076dd8087465d1351af5d0e55cf72", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "a174eaa47577896a5e8581acf46bb3c0a4952dce75578afdadba6b67ed9548eb", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "dd2d46b06eeb9233f7fff3906c7374e7ffc1f40631f0e14fcace38d5778b116f", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "2bdf652a0396e516223d135c5a3b569075d6b428f8f598002c5530f461784d78", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "b1b9af6eb83d0952be8abee6d186d67db22076dd8087465d1351af5d0e55cf72", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "b1b9af6eb83d0952be8abee6d186d67db22076dd8087465d1351af5d0e55cf72", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "b1b9af6eb83d0952be8abee6d186d67db22076dd8087465d1351af5d0e55cf72", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "7583b7a3cec055454dfcef1328b687d6508d053f7b2cf5670915dd312d3d1088", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "ab11e6993bfd55900553a0fc7db9746853719426c9010d6006014709bb884d56", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "d6356b9b94dbe50530a6c2359b1c253e093bcbedbc93bd12c0802643a71a70e9", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "c6f843a2df6a91698672303a08e26b7f2838ab50ec97e24beac36d5fc680ae88", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "4d9091c4bf4fd2acdb29eeb5221806ac1097a5176fb0558a03023d02aeea80fd", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "c9f4e7b4996946b1e4ed73dc0cf50ef5354086966053140a792250c2d764b0d2", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "d6356b9b94dbe50530a6c2359b1c253e093bcbedbc93bd12c0802643a71a70e9", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "d6356b9b94dbe50530a6c2359b1c253e093bcbedbc93bd12c0802643a71a70e9", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "d6356b9b94dbe50530a6c2359b1c253e093bcbedbc93bd12c0802643a71a70e9", "T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "363c6c4b9fa4b00a7604f3c61582ba9d025e195fbf1c428a957c993531994b14", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "45a4d5ece81d0d31c0e1c3e4dee1695736cd2ee5c4b9fd64af05ac8cacc7c3cb", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "73bf27350482361ff21831e68688448b871117ece67a0488b725b093c02252d3", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "a144153b0f528621adc29999aef7e392cfdd1dc7b1e466aad0d9c8008df4371b", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "ee54a86d26127692693bfc99dbb1e2f5bf64c9922f4afe22190d1f55f861d2e0", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "332337c13bb16571be061b83e34752404bcd80593da0f6e33015b10ccaf6fa0c", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "e3a3c1b64ced0634b04935660ad73f1335cf74cf77979f22e9fd9f5fd7f0c419", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "5873dfef9dcace64cd306bb7956dfadece4d10522805b24eaad9f6849d96db5e", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "92007879556df055fda5094671f03dc49abc0ab029eb42af952c69c65887a6c0", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0dfb3317cddcf8dbb14874653218a8b6157ab9ed378a13a9647d8a9469ffd2ee", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "ca17310a5da02ca90b04c27ce2698d8820c54c4d79900a619c1e4f30fd700a54", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "9f561c6ea254df05336a6402f3159748f0a571783913d626604bed7e172216a6", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "67b0439f9bc40377298b3adf0f94cc35cc1777b90075e30fbf3176341c2292cf", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "69d3aec9845ccebe0c2a740a948c3f07e09b8ea87eb62404122956567001ba04", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "030df26b77a8baeefed155719ccd8863c6c54dce2bd02a29ca4f79f9a6204700", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "5c417eee9edf0ec625fab097fba7f7d7d3eae96b83a1d88cf74e22674288fcd5", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "cddd13b83b8ed7c583f2491856586b615a9490570130ca92cd7731e6db198d6c", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "a5e76e44453e226e5cc9faba0c670fa2225fe0cd2b7d9748b0ee5634ebbbce95", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "5b5963daba1354f589963e6742afa9f7b59351478e5300e53e850e9d41a95ecd", "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "4a790fb1f68d4483457b9127d421219d067bcd4cee8361d799bee6268bf73bfa", "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "041d3c08c76e1c5326d804c3bcaaf10ef564a0d8029e332a97e4fcee06729241", "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "4e1651f81d5268ceebac04bec2af8b9c7db696a4e5ead8dcfbb9a38758b118f5", @@ -22168,104 +22168,104 @@ "T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "8d421792e66da05af8f5d1cf1df4790e195763ae82068cf84cac3c8882cadd89", "T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "acaf80106083e7325d3e7477ffb2d0b60a6dfeeaca6466878d3c788ed5562fc5", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "bbcb4a4da91189d40e86781c8902c214b74f7a12415565807e61fe8f711a36df", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "319256b1815cab2c8da99f520c284858dcf22f69fd0c752a11fc379bc7f737f8", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "bbcb4a4da91189d40e86781c8902c214b74f7a12415565807e61fe8f711a36df", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "6d601fb28218fbd4d22a1898bd04b70b84794f3fdce55ca29b689901e45b356d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "6d601fb28218fbd4d22a1898bd04b70b84794f3fdce55ca29b689901e45b356d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "ae28f28ebc1e29edbb789208dde51416cd7726cc2fe1fd15544c143038ad3ca4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4af80f2349efcfa852dafc0d741259a2d1960d59fb3edf04b59bd47b63de36db", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "27e4e1947dfcae55dffd6c1ed099d745b979f299db981a2bad2e6ef80a29afa0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "a30ba1b382216c1aa60de66ef6f431f0bee18ae13e57b18236766c7235b653bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "4d8b627605265a99fcf77cedd98a2ea440fc15d343347aed1d074e58aa915c2b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "82aaf7cd3831f2943b8f1304f51bcb2566fccb139db63e17ec7d3f7d820b72bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "99e852c65e7dc561806b3ffa46a1502afc5ead4dc86916945180d096f2a965ff", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "1751c8e092d3f919a8ad7ad7d304ab88ccd0bf3c5108c9d102519bcf0bfb1b59", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "f241c0de1caff316d2a3daac54d9f0302dc71c22456dcc5fb998323c815703da", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ea8983209137f41b99fbff964ff4271fe0be0c474f7bacd1ebecec71f57cd786", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "602cac0e496107343f58ac68b37aa77d7b1b0e847d62c8f873989446f7a0928e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ea8983209137f41b99fbff964ff4271fe0be0c474f7bacd1ebecec71f57cd786", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "25a4c60713a6a9ec3dbafc760462ab8a378fbeba9a998dbab5095c57fc1e574b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "25a4c60713a6a9ec3dbafc760462ab8a378fbeba9a998dbab5095c57fc1e574b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "2ff563b81231cf4f785443e8931cc0342070271f73c8653cf4baa605c41fa5f1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "fc051c8b9ab6eb9a7f3883a7b3ab91cd4668b9966062099429b63326ef83e9f6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "ad2ac9a7528213f77ec210cd63d272c0ef417c7b51b54a2c8c7a2742f653ba06", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "55fe4cf9851c35c1abedf700695e2e75b1a7b48b2504b01be969067ab9126afd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "4d8b627605265a99fcf77cedd98a2ea440fc15d343347aed1d074e58aa915c2b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8cdbd9a9cde54bf0e6eff279d0333e5fbf68484bcda8b23ac8374663b8b58847", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6a31e73692b546ef11e335c303f3145c574c85d6c60d2e7333b1f62413268fdc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b408d13fecc869247144b6bf4b6952fb7148d3419bd19fad2fa00988407ef46d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "7c34911e9d4f3eb977d1cb86a056c3ce7349d34dcf08bdc10aa2dffa93b7e0ca", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "2cfb122f5f3207cadfcc9b2f941ea20f6546af3ea8f2f074872ec9d9d8cc1d32", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "29170562e73830e866b7aeed3b316f346f29ed2b62e05b5d0c16a348ed8b4009", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "2cfb122f5f3207cadfcc9b2f941ea20f6546af3ea8f2f074872ec9d9d8cc1d32", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0d688aad6939ed0df04dc8a20ea400a626b17fcfac7779e693632a2e355b5856", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0d688aad6939ed0df04dc8a20ea400a626b17fcfac7779e693632a2e355b5856", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "d3cb00adf6762bb54020fea723bbb83787e95369ac40c823d79468ec4e57c37e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "400c762ad06d1b04875ee6d006a41baf608ab97b27a9bab74353a0ad66c8139b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a6d45590af317ce6a2042209336464e83c8d553260ed028eefc6ac2390c38f81", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "de22945f05986b652091a496baa53fcb44a57880acb7f3b5cc2bb664aca7ea4a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d5f707c265a96afb9d5a644d4716a1600057659d9f57dac692359835d0239857", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "90b187d30d5ddaba7e4670ed597a0fbb535ec3198209ff5932a6ca160ad2b726", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "e5ae7ab85dadeba9554a3f5ec90e70eb579ac2542a9f6463160978ffcc3e0770", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "0e4e8e0cdba887778f4673f8d5bdb94bce33aae726c1d8650e5ecbd13a0c59e5", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "658ffab3c026aaa7e4a843aa94bb604c2f6d37827f3b917d7501b21c726e95cf", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "35526193948a63caa0010e10252ea398c0ab14f38867b4efc6919cbdbafe34cf", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "658ffab3c026aaa7e4a843aa94bb604c2f6d37827f3b917d7501b21c726e95cf", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "4314f2588c7747028100637e782cc644647315e1dd4eca372834dec72ef50c4f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "4314f2588c7747028100637e782cc644647315e1dd4eca372834dec72ef50c4f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "6637628c947d89d5ea68c63b98c3d68ec7ec65da0d699177fc0d46cc769caa1f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "583ed5b7d7638b247fbd2963d17c4c03b8fb5b457ab50128d861cef70704ca14", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "bf0b9b9bed5f87eac9bfa86e80b9663026caded6932f9a3a413712e92846f003", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "de22945f05986b652091a496baa53fcb44a57880acb7f3b5cc2bb664aca7ea4a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "99aebca391dc658736b1be679c00ed67a611613bf70501b56ef1404d84b7ec94", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "5abd83c9b5a307afc27b0ab080bc9cf1b5e13fcaadac30ce15892e53d1f95294", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "504764a3cf64c2c5712259ae8df3f1a9e19cc8d737a7ff36d9e1718cb5e36247", "T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "50092b33252ef25bf10784a0654d29c7694488ca6aa0d0850b2b1f1045c46752", "T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3217bcb9bb34f65abbb635493b78d0fbf52c8f6ae149907048ae47c9135d5564", "T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "12310fcc418711017eb0015d6acbdc6064f1f53d1bc76caa8d9ea4313cfb8db9", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "82aaf7cd3831f2943b8f1304f51bcb2566fccb139db63e17ec7d3f7d820b72bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "ae28f28ebc1e29edbb789208dde51416cd7726cc2fe1fd15544c143038ad3ca4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "38b2697f12dc56a4328c8f938f3b0884f6bb70b42069bdddf06a86153402c55d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "27e4e1947dfcae55dffd6c1ed099d745b979f299db981a2bad2e6ef80a29afa0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "8404c0643303db713f629dc454aeacd376562faaf00f1bbb6f62383c9aceacfd", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "02079836284ca88edc2d4326bc38edc8f3abc146b61169ac163439fe7a0de450", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "82aaf7cd3831f2943b8f1304f51bcb2566fccb139db63e17ec7d3f7d820b72bc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8cdbd9a9cde54bf0e6eff279d0333e5fbf68484bcda8b23ac8374663b8b58847", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "2ff563b81231cf4f785443e8931cc0342070271f73c8653cf4baa605c41fa5f1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "6f9946fbe6b68cdddc1f5d696702290a9dea6fa3089faf4a21ed5b026eb553d2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "ad2ac9a7528213f77ec210cd63d272c0ef417c7b51b54a2c8c7a2742f653ba06", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "0be25aedf194561e3b72c28b31f72b6536f9d2797c56e5e1ec6e7096d608bbe2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "16d3b88032ef4c3d3e067bdc5e09b8f971cf95a41245c8b96d5a68a55309ef49", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8cdbd9a9cde54bf0e6eff279d0333e5fbf68484bcda8b23ac8374663b8b58847", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "d5f707c265a96afb9d5a644d4716a1600057659d9f57dac692359835d0239857", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d3cb00adf6762bb54020fea723bbb83787e95369ac40c823d79468ec4e57c37e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "3a66280a60e237e538d0d456fa9e79caaecf2c9f3557532e726cba14160ba267", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a6d45590af317ce6a2042209336464e83c8d553260ed028eefc6ac2390c38f81", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "6b9dc6332054e9bed06c2bbec54ea61b3496d7a00f40d0fc6685cdec7c18d563", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "58cb2634496e9216e963259a29b32477e3d17fddb14c4f535250f22d4e9a0709", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "d5f707c265a96afb9d5a644d4716a1600057659d9f57dac692359835d0239857", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "99aebca391dc658736b1be679c00ed67a611613bf70501b56ef1404d84b7ec94", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6637628c947d89d5ea68c63b98c3d68ec7ec65da0d699177fc0d46cc769caa1f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "6d8007b3f3b8f804cf6bfbc516ccae660b95c4bf7ac2547c8a8983f0f3359570", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "bf0b9b9bed5f87eac9bfa86e80b9663026caded6932f9a3a413712e92846f003", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a0c487e650835c84683c6a91b3ebcc5f0f13aba403a89ff6ce1f343df4d97f3a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "de56e59595ad0911b72ec1baccc91866abf3372789f54e4e0c96aa38a0d57197", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "99aebca391dc658736b1be679c00ed67a611613bf70501b56ef1404d84b7ec94", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "c4627c506708f42826c4dbda612b46e2ce96008bcc50eec857b8a153ea911f4e", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "c4627c506708f42826c4dbda612b46e2ce96008bcc50eec857b8a153ea911f4e", "T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "19ad0ff14d26ba7f57652e7476ce02dbd9eabd50db2345c4f9ddbff5eb95b4a1", "T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "77435aebc290219b35664b4a52d2648e6878ee5f8dfdad4dbc22282e7df95d45", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "acbd170515091ec2d15d344a9577e38d205dd99f929d6c69af4cd4af59bf4dee", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "acbd170515091ec2d15d344a9577e38d205dd99f929d6c69af4cd4af59bf4dee", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "a2d8b1329bded90a2e99f8e5920a28cf4135e49af84c447ad1440e0daf37e00f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "a2d8b1329bded90a2e99f8e5920a28cf4135e49af84c447ad1440e0daf37e00f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "751905bc09cdbc9a353ad517d46848d45caf8f63e7aca7e371cff78a00cb9fdc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "751905bc09cdbc9a353ad517d46848d45caf8f63e7aca7e371cff78a00cb9fdc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "deadd662e6d2661c12fbd491c93b02a69fe6df823dd0c0ce47447b5bddadc8a2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "deadd662e6d2661c12fbd491c93b02a69fe6df823dd0c0ce47447b5bddadc8a2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "04cbfa51b75d2daeaefc796728a3179b82582829d67e4b064972c335cecf23a8", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "04cbfa51b75d2daeaefc796728a3179b82582829d67e4b064972c335cecf23a8", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f29ea6cc96e115c04991c5fb7f70e02bcde2d8e9e11d1335573989e39a947492", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f29ea6cc96e115c04991c5fb7f70e02bcde2d8e9e11d1335573989e39a947492", "T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "b24b7f15c76dadf1138aa483e567b2390d66ecea987c3a09af7879fede9a1103", +"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "74e2842339726b07a9f6f44d161a7591208d87a89b2c94c4e86ec41a164e5ff7", "T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "b24b7f15c76dadf1138aa483e567b2390d66ecea987c3a09af7879fede9a1103", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "2d1b18bb02eaddcc9c99a6010fbfedce78221c90a3e55183986ecb73962f4717", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "2ac0170e500a2d24630ac88331bfcce6e9ebecb35f2c7b2f06ee370b2047cd47", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "74e2842339726b07a9f6f44d161a7591208d87a89b2c94c4e86ec41a164e5ff7", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "d296c3ea399f8fecbb2053e4754bad3e2a986671d9b2ea63bc1c44c05ec0f368", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "adc4dfbd8b40710c88e0980209906875cf7a6660a1346d849727d408a41d6288", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "8ce10a04960bd8e0abe391c0f63697ad322d38f334f991c20e8123d5337e9dc5", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "421e0f0780a90abdbb1ab50c1547fb01669f04d6b28acf5127b3ea5ac7bae0ae", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "38cd8d8ade9decb1930e240a3b490b31ebf69027d7b581018a9ff188c9ffcb07", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a63b906ecbb6b311ecfe544b2109e7d545254bab598cb73f134f72c842b0dc08", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "cb8f5e180306894e1c7cfa7921f85776603bdf871d71a3be925a83d72c7c16cb", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "ffa4cba84a299c1c33301bd3f13d678a255f23b96332997bbb86441182255959", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "be89eb803e0a58da4ec7a050031cf3e0727be7b4a331d44192745107d6e9ef2a", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "1e9f3de67a43953a5c9d19aeff9f3e15b5bf482a63f54aed108a038b16051d55", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "b25da5b80fdf5e80c59f792a39168bf3e8041655c98c9c893fd86a2ad114bedf", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "c6de82bcadf41a3208ab39abc11f9421f85a46aacf5c36c3fc646afe4f7ea87c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "685253d40429a0edd28ad832f06b339f2705f07bbff4b203464ac6b02dc908f4", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "a195bbaa33940c1a2a0523993b8c00638a7672f1a24f4d35dad04718b34e1ae7", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "ef959beefde607e191715c39826ba5cdb78e301da58ec2147cdbefb93ad3359c", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "4b454f70c73e0cabea843da06833393ee0137bd487d9059c3de72f3d9ebaf2cb", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "10eab0a525ec2989dd30ec03a065f034ec1f733c119683c2440389562201bcfb", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "e891291ced474bf7c5df9caf3ef7262043a313c26eb5b06fb1d9b30d8462c0f6", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "dc9a5d6f051f9ffb79830f13873a9b28cf5049fc4e0212c3dc36b07155c15753", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "aa25784f7428d825156e3253f7aef0072311365286fdc32eb77614c7d2c1c822", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "69d4201cf19efc109b13e014e77075923e47bb33c0b7c6eedcdf6cf25bc11652", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "6b9b03af2f0793bb00be9d168c28709bc9d0dd07bc9db56d84d0da55f9f366c7", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "904641a345e24e8372889499458af47dbb0271ea0826b24fe73ac1aed7c4979e", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "a9f31474838cf9be0b107cfc36f182e6465c79c44e8d3e7a089e28d7b86bc391", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "daf1103e1697023891e41623b771433dc5adf83127f9288ba134013891f75ec7", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "2463cfb384fc75718ed81adea1c1818f8e803abb9878226852e325f961285c39", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "799a93454f3a3a9d5f4b70010eb4eb9292a8aea36765209317708b244d89ebbd", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ab4995c64be749a49e6fd82f08ba45446225493a0ecac052f706142e3f273999", @@ -22291,7 +22291,7 @@ "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "b7f780b9208648554f05e24301c4960d9c36f4f006ad808055d829f0cef87df0", +"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "c281e3929bb3b15cb6e322e528e3df8958158dc7a7e2f7bac12c1b093d4aad85", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "e1f7bdf0e367666daa35c0b23b79b3bab6aff0ce79279098e1f6bd2a9d956bc3", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "8175582ccfe1872cf7f8d01cad6b0fee8932bbb69258a227f8f672bee1ea663f", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "a629fb76ca70ec0abe463431bfb39f039c7d3303b7a6ae9fddfbed2602cf0239", @@ -22344,7 +22344,7 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0e568c9ddc56d77ad6265d8c294bf720d31ef8b5d3103803221fddfdd7ab51f1", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "087c6611dfb320dd50493a08e28762a837bdcf01583701805b0cad85621b3897", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "77974eea37c268b70e570186342021338d92d2a7bfaa93925674d62262c2ff4d", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "abcc683287e1450e51a7769cce5f869fa5dfc0380d6e8d8a7070fb296338bb8f", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9ea574627fb7f7066c93537c27773bdee1d5255525fd93854f2d74852dab5282", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b4f333fbf6ff2ddb6e7c31194bf9aca345ab79be81951b753cd978b1e2109db7", "T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "55f90ebfbc26b5606c2770978c4b3f3643235e78c35bced3c86a30ccd1f9ff44", "T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a40663596ba86b4fdec86ce1c23712702c635d2a9835f6117a2a015774d93182", @@ -22362,132 +22362,132 @@ "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b7b60fc965dd4bb068f47a5f475cd35c79e5715363df2f735697bda9c7dce8d9", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "1815a21af0bf176d0d5a0fb3125aa1e74a269f3f0d730c539b4820dc86538cab", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "73138a1c573217ba207be30cac763c3beed33e18c72156ef5c7d4ce36b06c581", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "121665ebe0581e91c394a54a65296898e0b3298dd819d096ee87e026cc1466f7", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "2bc54704fed75626399acee49cfeb8bd8fb58134448b0ee91fc169df2b9488fe", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "73138a1c573217ba207be30cac763c3beed33e18c72156ef5c7d4ce36b06c581", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "121665ebe0581e91c394a54a65296898e0b3298dd819d096ee87e026cc1466f7", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "2bc54704fed75626399acee49cfeb8bd8fb58134448b0ee91fc169df2b9488fe", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "06a15bb2e40d3348eac005aaaa45ff9e4c7d6cf08523ec0bcdcf2ac808673a73", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "692713e518b464ae16556e585c88a2b1830e93dcd8f7440594341e1098769268", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "eb2527a3eab1fb4091d4664c37a75080621c7af9ded9620043bcab591b19bd6d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "dd582ba26d3e421b5e5c2ee107abbb0e01a3a83c04021e719f9a446d3f0022c3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "e31b1f4cf2bebe485cbe90822e475305f6cd855ac6e1a6c553dfa8ca8d3d7c66", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "8fe22dfd78404b0f77b1ba6b73545031de1fff3a8439537294d6a7bb6480916d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "74c58b5c539c766fd5bedd22dca9a365e7ea3ba4c68989f48b5696d4fbf42a96", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "107cb3085f65d4d7b9e93824b1ce864c154b13bc58e5cd53d166ff813cea9b89", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "b1b2aab9d44ecb5ce9f113b087eb9bf664a64501e25acc9c8655bcfd8389f1fc", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "fdc2bff3ed2f7086b5d79893402b79e1b6888d61be550974dfa13ee45edb63a1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "3c32ddfeae2472fdca8ce944bccbe63cfacec1d575f0f268f183d59cca517215", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "3bcffd74fb3f7cc8418b282d13b0ec26aca86a718b95ee6e83a8934afa0dfb04", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "af85911c006ab50e66721e5f42ca084b727698087e117bf39b3150a9bb33b0dd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "9492403652cde04a307bd174ea49c03f28be1635fe3f2c1e701c1309cf57db7f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2c62e6cb2ea6692f0677b95ad5a9d0c05676a548c49139217a33a1e3ea42b776", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "8c523153906ecef92b4ebc1eb7e21f8224bf133f1b5af580b89529c8f95a2182", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "56d8adcbf5458c927c8e5bb203a81f849fcf59c7450df810cc96d0dc7ef06619", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "bca56da9f719f2f4e77be7110d5d0a6f03c582cd4b5859618d41b9fa8ea74ae0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "063294d2fe7907ee6933b675c4fce6460972499430850ef65852ead0679bf0d8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "5d519b11d9af0182e840955ca698f2af891490c2d3a6eed42eeeb7031e506e45", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f6ec1f89fddd32fe6e5059968b821edf9f2e3f50f1a8668e97729ccefcffe61a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f6ec1f89fddd32fe6e5059968b821edf9f2e3f50f1a8668e97729ccefcffe61a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "20ec88d9558ed2615dac83623f501c68d90a6c3c0cfcfc2fbf79b4b07e01d775", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9f8b68347904deb2ee2fbcf56d1c8d10b2707d1f518941a06abe81e61655f2d6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "eb9936fdb75464608e5885b0180cf91c9346cb108ada8ec10c6a404e83fde187", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "dd17f604c3b8e96eef876c5b51483d76b75d586f9897a8b12dd79e092bc25c6b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "cfb4b89ee275bfcc344a17fd352df98028ca131d2be472b83fe5998a44071b47", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b03c3e468157b485a78230275ca85c27c1d30181fdc2d511411eefd237f6fbed", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "5edfa81a27847fe899fd6b93b00c72c427a66dc46b701a50d2ad40b5ccd3461c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "1ba1d38d29b1cb1f4372c12c07091bdf2d359f9794ff15799075fe078221c72d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "cf2ae3a58c849547e8f58434c10ef72e7ac3a9829eb284fc2918f1fffefa89c6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "b4c06082d7ad15bbe29aa5239c4e4d8ffb4b140389e6cfbbb9fc1ca4729d332a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "9237d7a90233e8e0bbb4793e800b34aa67fe4ddd786388679b9852345f67c269", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "79f6c8b99a4fdab4c05651f716b5d4852c41d936eb3894b3177d9932b8d2a869", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "33a93c29bf97fd66ef052903eb8da7334e19b0c8f257fc7debf8bad7c034e999", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "21f8b51833cc2e05aec163eb0c9274ac50e12a9619ee0f7a8c880688a5d3b78b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "008d874de89226097496b0d1cf3628bfb0fe8868c205324b735b37ab7373cf93", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "fc71fc83e207e9cdff4b3d3b15307857db446e95dc25560505ca9b499513b00f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "d5d9f2222a9b407a18392655ad1c802964de763f205695623e6aacc613e2b2f3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "ec68f00e9b35fc6399dd109cb711d236366336039c3e48eb5e683530e9201361", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "c2bcb9712395045acab520e3adf53f1a9c0d2d83f869d19fe509e5f5dde20af3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "4ee4bc848a3c2bc1ed5fa31b2e73979a0a651fc515f9d065c7555a8ecabbb8c1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "4cf8a9618392383121de68309d69d9f3c4bd9cfce43f78aaedfa60917655086a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "f7de3fd9f2ca6c659e4b230227489e2babc96445c28891dac47d1823a9ffd9ae", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "aa02a2309ef4a62a6a008fe1881b608dfa5b49c9e6d87565e5c5724e7e10cdf7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cb7c30dc4729a5dd3150702b88b746a21bc3b89cbdfc9e90d096479366fae852", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "c378d5b4300de763ee0d59a47d479ad1df8d56d8985a1c7ba61b7bbb83329c7d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9435a4e0a42823e3a77435eb0068f557f3c7bcfd058bf033f767919477a54098", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0acb6748bff9cf01cc611ca1faf84319b2ed6917bcf5f5b6e23f2e7732a11552", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "d8d911fa85dc6456b662cac5b08d6fff315ae14533d52f07e671ac2a644207cd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "613b1be22f63cefe19e8199a49051ca461aab1085f3667bbf52f573cd2edfc5b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "174da7516b314fdac74535a055b09adcb73de121da3b29ab6c981911c0587a9a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "1f680df399fba16148c64ad3de8341b8b312c44f8fe0e2f2b56fcfaac01dd3b5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "1cc130381b448bd6c0fd0162195136bf0b437c91696abf46b3926a8a559699df", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "cb618edb50815d9025d3c5d6fe28d947af77b9a883bcf1bb035c1937f4bbb0e6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "54c0b7c28dc12aeb137b71cb560161637b61368b94eeb56cff6d43e0422400c4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "788e3ff0803302f9918fd4b7d10af68d03fbac7890e5a0fd3025b0a5b2a79e28", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "6952a72377557fed590a81f39d56abb190175441f68fe56f83480ccc76cdab12", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "2c9c8be70e8ea9e5c886bef3fafa85c9a881302869e44a4c7b2718e7908af859", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "eb9936fdb75464608e5885b0180cf91c9346cb108ada8ec10c6a404e83fde187", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "8d00a37b189c174e6058031699effc83bbe7a446c45412d659eb5081fabb13b7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "3b64c7f2005595ee781927e7e9c967dda474c78c2d34685abb8307d09fba3dc8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "783d201240d8433c9dd84dde8387d141e60d91fcbcae4e91855a88a3c854d1a5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d53c4c828d25b5e0a3c9fe6a9e17cc4b9fb3f547f701257ab7891ff5bfd66b4c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "d32a8ab3109b27058efffbad17520884f43ce3839787c8fb1f97e41c643bef8e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "11c6dd578c7468bfc443cb97967bd4c6b6fb03338084621a27ba7feb08a1fe94", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "2ca0090afff7e7ed9aead35e22f2f57e517a2e1b341536e6595ff84631ee4224", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "173e16d469ec05775cb9dd5b67f1993347b7ebaa0392dff6b1fe943af2e96699", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d1f620a8618935f4b5692f0420728a89021db57e48451eb5e2f1d4c83ac08ca7", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "6f4bd1e638b63688556e59da4b78a0ae40abeb4e0be97ca417273f25af4fb56d", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "37e5a71e19cd843154317036427e23b4453b3b0223305d03fd29924351270b09", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "c7c995c751b9d82207007f7d1948e7038f38dd1081fbb96a1c9b791058a263bc", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ca94e42faebb95cd099d37b0956cb1de235fffb4f296cdd0849b89f656bd380e", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "df16c57f0a03fd3e5e31cf14b00ccd4ffd4a2ac2b68cdafc30a825bfc491c2b5", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "a1d152c41fc19f1bd00917d44059a9a78b7128e681fc70818ed14ecf72d6f1c1", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a31b0d634de69afaa4b08f134363f5ac88830ba7e6d0f506c8ad1c8330c5f707", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "6568ac06c7513709d31ee17381621c51082536791818c370ddff35edeb33d522", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "4e4ca7e97cf27a1827b5fe5b77fdcb0b41a1ddaf297daeed9ba78e6dc17b02e1", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d4ef793bf444bb68467e07a3ad3e5cceba6de352653c58eff49db1e7fcbac5c9", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5db408a9d5e841f1b79986a5a20dfd03918d059f525da825d3ed9766b192d5c3", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "62073a601e77acdf7c64ff1a4b6d5cda71812eeed9832d456f2a6f86a06aaaac", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "74265e372e971a44aa6bbdda6a596121bfaaa30240b1f2ae0219c0730419a2a4", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "93596bc284aa970b4c1609eee148901813bce796f56880a7f67bc0b011a79c50", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "d930db526ee011c18ef9a6380440bdf7d6632024141203bb1ef982bf42603fb0", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "937b3a35442d0bd2f37a2dec6b35ecb829f1eb8cbee21830898d463d197cae45", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "769efd2f1e9f5a7e9acf09b3f02d8d69438884ac7ee132d2ab84e6d86e65e748", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "e8d0e2477d0552220bacbab96f383b9c31aa0a41e1104910a1fe5dd8df81e6d8", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "06a1b7aa371008a322f903430ea9f267817f434030a54771e5a710b26ed0d353", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c45b02ce0916c96a2efe644aa88472597acbc3d191c7f60d4e38a9ac27cd5c9c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "d4c9a9ee5e5b1e3915194f3cf795e8e230013724908f5166c3af48a67c7c5530", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "7e3078655f11e7297c13b7c25260bae6c6d4901a9e45765f8f89077089f2aa6f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "0ff6e4693b9855eb677557e166ba73f33c3f628e80e260ed06be723e00cd0b53", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "886c89a92893700943c11ff73504369fe0411ef2f70f107f0925ab3bf022aaf3", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "67667d51f389501e2318d672e31d7078dc6253179f4f7da83fd633c73a8f2932", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "c8bd9f43b97db529c6946129e557a3b0423806a6932aadb2d85eb7de4159c387", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "764fa563201805eaec26531206de251416c845d6da163271aa42b246359ad332", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "65108dac0fa1b7669b063fed883f6ead0775958c4fc48a536d0c4ad772de72c3", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "bd1a6c044d89f1acc450deb67284559f0bb570d1ab7b47e40424036ed272debb", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "b036fe0ff2b45d7ff70ae990e08da460a250d7eee13dc54e0c2f8d6b91e6c0e1", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "aeecb15944e5d39d7c733f1d94ad0731e0d10a974b8d5b645bd8c040971185de", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "a0da8509681ef430bc7600dd9b1a0d2119e5ec8ffb21263a2e35a3c44f59cec5", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "eeb106c31b7e8dc4f83e757fdf6ce1b70d7af45e912e35184d7d8ad270c2c737", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "a66fe9ebbfb8fcd4500efbff76a5f22e87a4da58bf7140881ce0b30219b4437c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "be72cf17cbbf62b7251238d8cadd1b3043db0503d3140038c954037956835bd5", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "9e7fe5b04847e4f6902156a86548ec8f81fc1fd5dcc076aa1f56b7b74fdc7c1f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "759e67239bb395d20ce07669675a659a792a19cd8e470bc65d4574c976129a18", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "eaa8e81efe518a715f7e28d373128c7c20e7e828eaa0128a8fa7fb25d865bdc6", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "95cd8519feff0bf3756dad4133cf914a683145cc6563dc77877d322a3db186fc", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "1094dd80f6c96bd2ff43d67fb053e56fe1a7e87d52ed0a7c4465b7b430d1e4cd", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "63481d0d961da33caf43a001ead7c386a22c0afe3452e9c60c7cd2c7d2c89089", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "3c000c9b4b9ea1e48fe9d809d5cfac8cc35bab6d289f5260a546513c6db7f636", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "e0d7651e54df29375f7b5221bb94b983cb7f349e5abffebc3488b602d32ea06a", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "82a04cce8c5c38f119d4649d69e42b261f727ae8ad511b896f818136cd2be1ef", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "f10186d619035805ee45f38aacf21022f078f541fbd4ff45076fd8107b7f692e", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "8b16638e88ca26e4dcddd4812a4f09f9af331a04037b04bfb0556a537ecc2cfc", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "4f14a82155a08aa514be252eb9d4f01b38b6ea7b43e981e32111882b9f173bf4", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "5e4edd577fb0562b4c0c0d7908a4ea6b90fc1389147d5887bc0173b666aaa561", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "110b726c2d0b8210860d0e00661bd0b29ed0f299958bc6db121e4dc8839f2aa2", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "759e67239bb395d20ce07669675a659a792a19cd8e470bc65d4574c976129a18", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "d5b5d074f305b78b2ccddaf9630a59c7b8a8641b764992b60df02549d98acf80", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a6bf1b6953f28581c6438e22c2a6222ddce96dcbe04bbe75348380e1a61297e4", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "65c33f63f9145cb2bb4d6643f7fa2e3ef18d8892a55243c8855f5bf5a102d16a", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "16d80c7b6bb0bb14f8c8e5d171e8ce3d61268ea67cce6b472ee8a3c1117957a1", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a6bf1b6953f28581c6438e22c2a6222ddce96dcbe04bbe75348380e1a61297e4", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "65c33f63f9145cb2bb4d6643f7fa2e3ef18d8892a55243c8855f5bf5a102d16a", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "16d80c7b6bb0bb14f8c8e5d171e8ce3d61268ea67cce6b472ee8a3c1117957a1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "d9227381811316858a1ce16d2ef31a3991f744482df12099c80ba92b040f77ed", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "0a1cf2366ca9a6905ca9a97357e3411bf8ec3cc00223ac9111471ba7d2bb5250", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "eed55d0232953eadaba8196e7b0002e9668f388f69abb4c49b937f66ac641794", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "2a1a109ef0452a02cfb2ef95567f95935fa1546873f7380e9963f97d0f51a80f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "3eb37a30470bcc652f44837285578094b4effdff7c9dd52e3783bfac35423510", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9ae3c98cd3dbf6f61d2663f58f5e9f243887f15d59e66cf244973a33d5aa0d15", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "38365e9bb629844dd174a5266cbf56249ad9c396a3dcb3190fea5fa156369db7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "68790225ab4d0a065c73704b6c1471381d1dc8025c8558bc5ecb7636a2a33220", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "fd7408eb5f80ff59445004e5d4b932638fd754605e38498d5ef77f419c31faff", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "6ebef79b897c14674dbb604402e3d2c78023f7b9f4a384a25045d4a74e77c2a6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "a25a96fb4220c7c066fef240a133ddee181eeab47baa268aad228c55d4096c9e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "8333403c02cbaf20d4657378821ff549ac8b8b6d91fe948ffd5348a1e170a7f4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ec903114714d0d417e701513aacdfc8fea27a8cea498aa9e87638a392038e4cc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "69f2e66cd5dafe04608fa452e215a1f053d77a62251bdc3c1953a2d19023bbd9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6ac01033c7c648ca8526ce0b3a5062d3bce440f2b2fa3864e14f917d9d31ea99", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "7bcd129d720f41329091faef8f666f6a1bd2707034bb4ef4ceb399735a1fc4f7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "f94081fcc2c71c7aaf5a1276fc3f5943d629ceedac1cfb27ed0dbbe9867a49ae", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "24cec4a6828f68c87c65586d835f3de7d2f5e87a9243decfc2f9583861832036", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "4d1e515843bda624f8ba33d411a2ad0800aa96d54469f18e868a9040fa7022ec", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "13a5de1bf3b93b2f2c01946c29c9a490bf2174fbe1d0726bcbab8e9615e59cb5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "05a21652cd4da44097fde4bbe26e2cc367f05c5bc9b8a5d2864f5e14e47f6a57", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "05a21652cd4da44097fde4bbe26e2cc367f05c5bc9b8a5d2864f5e14e47f6a57", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "787af5e008cf869b91347ef6a9b9272134ade4ced5d5acfe56b2adc0fda6624c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "d91f8101814407eaec72744da9264093c980a912f0da239362b8c81234eacb48", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "d9ba515de4f88f3279bbeca674f9981e18c184dd445b2895ad65fdd024808128", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f8be87c45b00471af850339be35e6de3b4de62485ea6ce209adf8538bfe9744d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "ad1395f01d5a535c28adef530ecde159225183f3bbefaf31764fb368e1ca85fb", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "97ef57bc26fd88408059d2fe621dfb82b1de0733e2e7dca114d412d36ffff312", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "bb802a59e543a8dbbc91f846709fcadd557b05e8bca6c0531f7cce7322362296", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a6489c91a87eb48a9b72f646bb8740c0db645917d317826bdc2d9862bf49ae15", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "2b9e46fdaeee1001e23fcd07031001c0650d248e56b5c1e6abfd785c03b89d81", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "488e8e91f9d08b7defab99a3776173f9bc385647baa72c63c2d0fbb272d8d082", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "e8f128ca37cb63dba96761f13b5cbdbd7d43d61042d3988543c9a7f6ffa10955", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "435d2a52ae460f12b30730ecbb664f391999926d11923cc0bfe591ea71576e31", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "1091a55aa7b8c428d3966a45722e418db2d8f8bcb8d4a50c7038a43daef0681b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "96d2345f05c18de8e719e6a6802443a0ce36310623814c5e3802b5249a02a31d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "fb7062abf7c1332c820ad803f5a8aa31eed761d9b71d1e9cbac238982eda8001", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "3d655cd703774f7a5877bec9dbce72d279e8d41e0e07616185248ecd9e962666", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "31a26434e99fed6ae034d3b635904e31d2547738efc9abcac60af858098dbed1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "458c0100f2754d0bd520b0df968761b71d4505456ce3e0dfbc72e29797eb9687", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "be14c31886d7f62d2f937449cb23575f42be61e2805da9ee58ee87052ac7baa1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "0b64d7b238f2270e77fa7e1a8fc23dcb2eac52315240d8399d3f7b50de43d74e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "0f54cb35e8c8f267478d9ac3f1bea8242b56b1cb4bf3e4330b340e180702a19b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "0506512ae9e30c55452611350ad6a602031ccf20eee0eace4124d2ff6cd76436", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "3f75936d549b043c613418b098b075724a32b520b7ea2e3ee1dedd26088caed2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "922f35fb7fa6687470784c3d831eea7b1a3f4c419c71c4d99fb54022ce91c7e0", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "dfa2095b57fca9a9622b74769d61bf54b973a334f56acfad9ac101e38f1e2988", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "35f6d80c05ca014e41f76765238ee21b080480d75bddbcca4c65df0b87ad62a0", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d3737160db2429bdf0dfcf645e9c14eb74690a46edb88e3777a88401f3449e98", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c6dbf5be625b172d71236f0c386cc518c120996585c4165e107d9d332810cb57", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "d7182d3d1a94ac1b42369105ae2cc41d6a71444a0f284372520d542a50b438a8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "c3ef3d1a10c1e80dde2de80ee7a3698e2758b7f3fa8cf462043e126f24172cf4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "f0d6327549ea9ad112a6a33de7944bebed441bd513735863e91340af0d486e5f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6d73f89cd37c61cc7f142f61c09d8fb306e7679f6922c4d96d1cf286a47fc4dd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7bb61bd375af21c2d055d3ffe54cf1f2c9df033d116ab39bb993e50f796bd53e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "0eaeddae1d02d73b4ecfdb206f533ac60971850515db8a2c7506dc3d1e104d3f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "300775c2327ab4666bc02c9a4276ade8d2625b7a42b8ec6c980abfa48cf733ee", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "51392228ba9f45845f5dd30ca6240f664a1da5345c3d53ee31dcb072ea64ce98", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "c1cd9fe39c2881e87f262b8338aecadbeb35058343a77ad951bad4386ef7561f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "d9ba515de4f88f3279bbeca674f9981e18c184dd445b2895ad65fdd024808128", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "8bd8f9eb9dccacd6449e4581667fbd7a426dfbb5ff95b71179c4694dacd5cf90", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a39404506bdd13a54ebe06c1c336d011bb107fe4ad5369ff9aa24ee58b409803", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "ee69b4f0159d32dcc2fee462ce34d78db97773dbbf565cf747e98b25bc4928e3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "4758fd9b199f378142ec5ecde5f71d169101494d9064c13f437e0336c0549f68", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0b4dbd1aa82419a3d0a3fd3b7d57b62a33335ca62c8847b2552d8a9e735a76e2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "7d2e9319a3f28cd7696fdd837e84cebd411c4575d97871563a78c49746b985c6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "21812fada6942a7381fcbd8da3c4b1531315c181bf78b6b7790803e3413f336b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "0d29e3442fdd442c1f2111566c0dcef22b52fd4cc1b31661b69bbc8588528c1d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8d427c35a4d716d7cd0f04ba276f4c5ea5b6669c76564a3662e5244a3a4ef05e", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "dce8ad6c80b18b695a83fbc1d3ebc1c51bdc1e487295e356c5782c490836dde6", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b9137a2580d2601ecfe74bbf0dfc89c2b4c129ae1d24bff5170bd6d05fcf1e71", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "06749f018decf09a8f3fbf56dd912beff086a79af7c0239703f41c71a9715c3b", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "9dba0b9519a4cf078c8f1bc979c7586f09f839cd490cb1901b11316b91168181", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ff9b26b36017d65612f94162ee81b9c1e7c248b7e8d7e193c7516ffa453d3fc7", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "7231ca199a8e096348d7e5900b261086dc98fd14bd6bae5f2f2f1b81b34c9c88", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "7f520e16ae4858757783a638b937d02b33cf11b001f67f58945b748b8a493217", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "8197910539b1191925ea4857b5781fbf140c40ba8666620235c3401e4515c4b9", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "02d659ad12f7efc7e489e1df470554f921641fa0f6a7b7b04ef61241e5e0defd", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "558ca5c2db78a320cfd1733fc236385d243bfa6859d07e69c6f343fde6347be9", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5cb8c1a7b18cdca61fd6c288baf819f31f7feb0bb8f0aaa884f7be4eb37ef516", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "cb67ffe81a88aeb3eb48044059449c91f5d29b82d0eecc08ce43ce9538e2fab2", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "eca15f215552a68808391565dc759767dea549b437a7c587e705172de51f5314", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "5c25e104880a0888152d5a33d2d95bd865dc4be632006af303334030b3c68b34", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "fce64380040fe2c6201e3c2a5fba19177f3a97a8a831a0f40f8a0c67dd3777bd", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e1a287fb33c7fcd0e12fe521a5fb1b6925a3b143156b992c346da1ac5a307b83", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "91b8e12d172a5d1191b2e63458a4aa2ad847f830160690f84d714985a3dab5e5", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "25be9366ab3df2d1da494f6d37347eb332c0e486c340c347749aaa56d821e2c7", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "5e373bed1b4141eac934fd79e688572a02ae01feb58115d0b549bf88880981ff", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "5194945dda99c3170a739044df5b9395858a6051dc95dc07819ae2e1eea148e1", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "54797a7b6cae862ac776766b890bb72fa721a940d07863526f29a1672f7dd707", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "e2c2f24c067813222137d959eab6b804160d0e29e0d802cde5771b22e36f4697", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "dbbacf8bf43207dedf540a1a1794d51c8c4cb985c3e0959398e1895454c331cd", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "740af3cfd9aa6f375809eb4f530e76466bbbe108be876bb923970e17bc822dc6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "7c18823f0647122526b75d7dbbf04cb9f31bc8652010a16265624f6c52f7934c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "df84b4408eaee663f1e132352e08f732d78a76f5c2daaf00c2a6b9017083a39a", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "3c4e860e229c0d2d0d4b63eab350b96985ff879422cd53124471e9c79a3cf78e", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "b26dea175795b867b5116a49801282a6f1475bef3bc5a0ee92eedc8620f7bd57", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "1f35eb501e2ef2cc50f5b22bbbe34315e4be244042c899c2ca11ca05c1832364", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1566d114169ca0be1881d02091cd652725ee8025960ad88d0b5d159af45e3ed6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "c5dfc2d3d0cdb0158af799f65ce447e873841d55e156f25f937213ce5547f117", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "59cfb2b4575baa7be0f0b8af66b20b34618e9db82a688c93e9b352cd48941e3d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "1779e38a0ff52d00036ea08ae441acc6fa5559bfaa5b453679202650a6828412", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "df36656d475aaa0aa94720a932b1211074ab37164431ebb6d51345b69741fdbd", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "4dba0565a4574b10d07549cac891ca46decf81b709cdd22a3b9b481225a19787", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "43940fa074d70365bf7a4fa405a17a158937ecbc7f9741497dd5c974693d6132", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "0a36ddea903e069c7915326027d8ea007a4da8fb2967bfa6aa75efaa8e954a21", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "764d6bb8925890f55da9a6f38cab3b9904438cf4614559459bdfe37341bbd5ca", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "8173edb92ab50b3cd41d349b129d5e83fde22c55b06812104764dc59479ebe6b", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "46c9580327ea10611860a75bbe888ec08d2e5fe7b436d650dafec43e69da3fc3", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "45ded58ddbd27947774744aff41f7a19e54453d3e9fe0649644281f45e00bae3", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "81bc91486282664d377ad55056c3c885fc79023904d6e273c7d44337498c35bc", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "f33a93009a62e4fc9cbcecfef86a12e37632651fd8ca4e875f3d7b0c4b989a5d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "04f9b69fc911b35221bbd4a1112a18efac62897c44fd1668a3fe3775e7c7cfee", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a6e47ed656a64da372b164827ba010f7daa96b53c19eed7b3db4fd8674bd0999", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "dea00c26f718afd86ecb1bb12ee40e6ba9051ecc6af9b6bfb6fd4c1509099425", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5946ecf935092c4bc471249e8d911bdcfd47c5fd5b11778bc9396fe3de29f811", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "3fdc3298536fa94d6edc319e4fb0adcc59e808d526f728f254a201c2cf4c6c6b", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2a7ba46fcd8ebf414b2678e1d4578a647a3db8c6430d1bcc497cee29f30a529d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "0a36ddea903e069c7915326027d8ea007a4da8fb2967bfa6aa75efaa8e954a21", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "77742166caabbfef724ee6e97578bc93c7cc2291260fd94e84d2974fb7314108", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "dc3ad0a199122a1d9a040565201c2ad67ec548f566f2d59d785ebf26c0be3464", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", @@ -22575,37 +22575,37 @@ "T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "1e1d751cf97b96914433d76e68ef24935c4a65b3be1c29f9ad0b74fe97a49b5d", "T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "b3200b44b9fc2978c0ad7a72d1d75648b26482d965cc5fb4898ec0bcaf2ec4e3", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "5af585df2051cebbe9c27c365f3db48b1a7e6f46bd2544b7e5547794c31759de", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "2ba30a024f74ea61dca08d302f5e53e92edf5c40fa2248c8520c991e16c0fc69", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "b49ded7c118ab81301bb8222d572cb130324773bb688b14322d847a0fc08c2f0", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "6f0616d489bc2b9a99a853707fdd40c2aece7f8861c91a4832fe09c21a5791e4", "T3T1_fr_test_msg_ping.py::test_ping": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "bfcffd19bad0f473b5b4d236367eeee9a91a050cc1067e7e5a8d3d86d37adba7", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "6c2afbbba9d488c75629a063fdccbba0a61b70da35bc6230249fb268ba82a42f", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "69aca25dd013ab68574188a967bac6cb83e4eef0faea023f5d06b53f225bb079", "T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "83b7a00242b21aff565d876ee713502c6178af25fd71b3698e0efd2cb21dbeaa", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "aef9233d55505622e52aaf7153102f6f74f7f23d66061e47c71f8d5e026da24c", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "32dcd4537bf5069ccf80df33ea5abf581363858e73fee57e3cab3bbcd950a09c", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "32dcd4537bf5069ccf80df33ea5abf581363858e73fee57e3cab3bbcd950a09c", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "cc30a63c04384579f243afa2c8c6bcf3f188597e972141655338c69d66ff3888", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "cc30a63c04384579f243afa2c8c6bcf3f188597e972141655338c69d66ff3888", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "cc30a63c04384579f243afa2c8c6bcf3f188597e972141655338c69d66ff3888", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "04d531a28042e963be46f2943d235f647c3e1f786de87b88f66aa8f17835f1b8", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "04d531a28042e963be46f2943d235f647c3e1f786de87b88f66aa8f17835f1b8", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "58fd10638da01638e8ff0a25aaae8a90a11a1f5f444b0257c6b7baf5072209ef", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "58fd10638da01638e8ff0a25aaae8a90a11a1f5f444b0257c6b7baf5072209ef", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "58fd10638da01638e8ff0a25aaae8a90a11a1f5f444b0257c6b7baf5072209ef", "T3T1_fr_test_pin.py::test_correct_pin": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", "T3T1_fr_test_pin.py::test_exponential_backoff_t2": "bc90b0c6381ac70c66b9ece8b7342bdb41640284c0446bcf59a38a886c5c69dd", "T3T1_fr_test_pin.py::test_incorrect_pin_t2": "48827f835b6d239c8abd11e6038deb9f1b19446b872765ba65badeb8c43a5c57", "T3T1_fr_test_pin.py::test_no_protection": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "fdb64f6a6e37ac687776c229c28ccbb9f83d4365e79fd04ea11013c0ada06626", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "306fecdb4bedefac5a810c08a4a719a73addd4ea6c78a55c2658bb39a7d730ce", -"T3T1_fr_test_protection_levels.py::test_get_address": "73f35fb93a20def7cc50b6fdaa7b3321daddad0ca09ff6aaa2861cf7154e568d", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "60d63e296bc2486450cfe435c0c3aa9d4998b582eb92af7c9a1f81f74fae31ea", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "73f35fb93a20def7cc50b6fdaa7b3321daddad0ca09ff6aaa2861cf7154e568d", -"T3T1_fr_test_protection_levels.py::test_initialize": "9cad81174a364b39a0ad160501e6b35f9a1eb0258fd2bb2556839de802340cc5", -"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "6912c4f299225c229b5386a6e007d4d525c6e696d7f4129531500f724da0af5a", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "1177bdf151577b7ab0693be3a5984d3ad9011ed19ffd542a3f69f1ac933cd614", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "446e9951209becd66225465ad55cee24496f4f70574ef741f20879807c75b4a2", +"T3T1_fr_test_protection_levels.py::test_get_address": "8ba5c6e0b2ee69876e68c428aa1241ccc43414d7f6e385c8eaf55c830df9afff", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "7caf258ccba772e7ab9c43b1bbd2f20ed91d87e4fd107e84cd6bf8690a782f67", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "8ba5c6e0b2ee69876e68c428aa1241ccc43414d7f6e385c8eaf55c830df9afff", +"T3T1_fr_test_protection_levels.py::test_initialize": "617199d34f971156ec5e44171ca21b06e936e5c979bc77dc8716e7545047cdee", +"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "5c126975a25ce1f4a9cce3eb60037596a46a423e589386c196931f6789b04a64", "T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "6ed0c0b3bd43d59659fb528f7d19a1fde863eccfff5c93e7176d0582d16b1913", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "983aff240d8a52d184f5a8795b02be39cf3901a5e0c8102000bb5f286b0dd6f5", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "b820c25ab981d5333bac8901b7303aa73e6812b83def6806439107353994f89b", "T3T1_fr_test_protection_levels.py::test_ping": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", -"T3T1_fr_test_protection_levels.py::test_sign_message": "18debe3ce9bcd83ae5244e5a245299a9012a06e371a5f6f6c6c9e6b0dad30ce8", -"T3T1_fr_test_protection_levels.py::test_signtx": "302de5b04c24c0c1970011bd41265bc6806b6640f4c25e34526e61461d4e900a", +"T3T1_fr_test_protection_levels.py::test_sign_message": "349ecf8bb517637822b542cf65c750e2781926c3850c4c8a53d152576334327e", +"T3T1_fr_test_protection_levels.py::test_signtx": "874dd7ee724c261d42d25689c3a3fb37c0657c786e1c0b2aa92b6ca132e2f767", "T3T1_fr_test_protection_levels.py::test_unlocked": "a4424a33b98437db465a6f6210207566290124a2cefd4c19fec3a3dc9a868b6f", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c0433481942e7e93e5488b819637a3412741694b106213a72dbb164521d4fb1b", "T3T1_fr_test_protection_levels.py::test_wipe_device": "004dc079ae5d42d366094c23ed0bacf2b97f637ef6ae22d7124d8db293e1b2cb", @@ -22616,24 +22616,24 @@ "T3T1_fr_test_sdcard.py::test_sd_no_format": "43e6b840991931da598895059d9e9bdb75b50bd56ba15b2de0abf6323f308053", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "89bc355f195af4a376c40ddb556a51e2aee85a3a183c997857f4cb51cb99b3cd", "T3T1_fr_test_session.py::test_cannot_resume_ended_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session.py::test_clear_session": "e8ae6b65143fb444134cb3bc64a325d83f2ca5ccd9e79cddcfc06bf6de68114a", +"T3T1_fr_test_session.py::test_clear_session": "fb522e46e267edb1bd932d532a42f9b294744933f80813b4e7db99a5b385425d", "T3T1_fr_test_session.py::test_derive_cardano_empty_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_test_session.py::test_derive_cardano_running_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_test_session.py::test_end_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", "T3T1_fr_test_session.py::test_end_session_only_current": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session.py::test_session_recycling": "cc30a63c04384579f243afa2c8c6bcf3f188597e972141655338c69d66ff3888", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "e6da8bbe03857dd733f4c60267c5d980850807fc76c554fbee1f248d3f7f1fdd", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "ea630c09f23db102f2d9cf4bbf5751c01140918f4c0fccffc0fcd17664ad9d2b", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "dddb4eb6582de7bc07911c95fad7ec137089f92ca0eefb0aa8cc57537149a5f9", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "fd4d3f36ee49a050eb5cd4d41ff2f9bc3d04b0f23f70eb576deb6e189c90b398", +"T3T1_fr_test_session.py::test_session_recycling": "58fd10638da01638e8ff0a25aaae8a90a11a1f5f444b0257c6b7baf5072209ef", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "d147d305c3ee174b587569ad3d1456fc46fd552dce30d5482aac00fb9689bdac", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "cd39e1f0620e3bf442af1c123dc669bf1e164336632b298524d48dfa0837b504", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "872c80a4f13af69e745ecd1c5d5ed20003d1f734eaebea70d59ea8949fc11618", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "224c8374581f246ecea21129e3544404457e2dc094fd57908ab4f32d7eda4f89", "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "ef0d7dc18165c677c0879687dbfb91e8c3961a50a8299f689707b6d74138d895", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "b84aa3cac2ca190cd0b427b105da1282a902f7c869ae8f6767863709a395c424", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "38bec13c015379ec9f8200098cca815579ba93450e96cbf226bda5a7563ff3f3", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "6912c4f299225c229b5386a6e007d4d525c6e696d7f4129531500f724da0af5a", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "69a8459defe227fbbf6227a6c2abd9a8510633da80eed407ca86b9f44954c04f", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "f724253ffd5ad4459834f0318563c419c312b33ffd62419ba1bb21d562c6335f", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "e9781e24ae4b6d321e6e6866df9c357898c2a1b90c2e05608ba1847533ab6678", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "d473ba28450a77221ce7ab4ef1d6ff16fefe85c8fb11e0940e5932b80815bc95", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "5c126975a25ce1f4a9cce3eb60037596a46a423e589386c196931f6789b04a64", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "c0d9671674aac283d0d772054165c7342fcf3bfa66e828a139db992837b00171", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "9c34dd830d8e86c26b1ef680df4f26d02c6aa8386bf587864c2a488b514307ea", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "1e8279c36fa7bff05ab78b3456a37655c1a804b2c00514d1cec1608983c9b80e", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "16e0feaaa358310318ee25bbd0de60d5ded8f3ca90c8a1902b48a03a4fa3a096", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "f1c5712278fbc1f77b3d58802ce7254ce8ac2da619b77f4c961032d2dac8fb74", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "879a576e296d03968d76618d9ee15fa60f2c00c5b2072eee7282fe5b56efaa25", From 4d6af487f4b3e481afab15996a637190fdc28f6f Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 5 Jun 2024 00:27:48 +0200 Subject: [PATCH 230/626] fix(core/ui): T3T1: remove ButtonPage, Dialog, IconDialog [no changelog] --- core/embed/rust/src/ui/flow/page.rs | 4 +- .../src/ui/model_mercury/component/dialog.rs | 230 ----- .../src/ui/model_mercury/component/mod.rs | 9 - .../src/ui/model_mercury/component/page.rs | 852 ------------------ .../ui/model_mercury/component/simple_page.rs | 204 ----- .../ui/model_mercury/flow/confirm_action.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 476 +++------- .../src/ui/model_mercury/res/circle48.toif | Bin 264 -> 0 bytes .../src/ui/model_mercury/res/fg-check48.toif | Bin 84 -> 0 bytes .../rust/src/ui/model_mercury/theme/mod.rs | 15 - .../device_tests/bitcoin/test_signmessage.py | 1 + tests/device_tests/ethereum/test_signtx.py | 1 + tests/ui_tests/fixtures.json | 169 ++-- 13 files changed, 189 insertions(+), 1774 deletions(-) delete mode 100644 core/embed/rust/src/ui/model_mercury/component/dialog.rs delete mode 100644 core/embed/rust/src/ui/model_mercury/component/page.rs delete mode 100644 core/embed/rust/src/ui/model_mercury/component/simple_page.rs delete mode 100644 core/embed/rust/src/ui/model_mercury/res/circle48.toif delete mode 100644 core/embed/rust/src/ui/model_mercury/res/fg-check48.toif diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index f3be3a044b..247a0399b5 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -15,7 +15,7 @@ pub struct SwipePage<T> { current: usize, } -impl<T: Component + Paginate + Clone> SwipePage<T> { +impl<T: Component + Paginate> SwipePage<T> { pub fn vertical(inner: T) -> Self { Self { inner, @@ -37,7 +37,7 @@ impl<T: Component + Paginate + Clone> SwipePage<T> { } } -impl<T: Component + Paginate + Clone> Component for SwipePage<T> { +impl<T: Component + Paginate> Component for SwipePage<T> { type Msg = T::Msg; fn place(&mut self, bounds: Rect) -> Rect { diff --git a/core/embed/rust/src/ui/model_mercury/component/dialog.rs b/core/embed/rust/src/ui/model_mercury/component/dialog.rs deleted file mode 100644 index 26e0221f5a..0000000000 --- a/core/embed/rust/src/ui/model_mercury/component/dialog.rs +++ /dev/null @@ -1,230 +0,0 @@ -use crate::{ - strutil::TString, - ui::{ - component::{ - image::BlendedImage, - text::{ - paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, - TextStyle, - }, - Child, Component, Event, EventCtx, Never, - }, - geometry::{Insets, LinearPlacement, Rect}, - shape::Renderer, - }, -}; - -use super::theme; - -pub enum DialogMsg<T, U> { - Content(T), - Controls(U), -} - -pub struct Dialog<T, U> { - content: Child<T>, - controls: Child<U>, -} - -impl<T, U> Dialog<T, U> -where - T: Component, - U: Component, -{ - pub fn new(content: T, controls: U) -> Self { - Self { - content: Child::new(content), - controls: Child::new(controls), - } - } - - pub fn inner(&self) -> &T { - self.content.inner() - } -} - -impl<T, U> Component for Dialog<T, U> -where - T: Component, - U: Component, -{ - type Msg = DialogMsg<T::Msg, U::Msg>; - - fn place(&mut self, bounds: Rect) -> Rect { - let controls_area = self.controls.place(bounds); - let content_area = bounds - .inset(Insets::bottom(controls_area.height())) - .inset(Insets::bottom(theme::BUTTON_SPACING)) - .inset(Insets::left(theme::CONTENT_BORDER)); - self.content.place(content_area); - bounds - } - - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - self.content - .event(ctx, event) - .map(Self::Msg::Content) - .or_else(|| self.controls.event(ctx, event).map(Self::Msg::Controls)) - } - - fn paint(&mut self) { - self.content.paint(); - self.controls.paint(); - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.content.render(target); - self.controls.render(target); - } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.content.bounds(sink); - self.controls.bounds(sink); - } -} - -#[cfg(feature = "ui_debug")] -impl<T, U> crate::trace::Trace for Dialog<T, U> -where - T: crate::trace::Trace, - U: crate::trace::Trace, -{ - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("Dialog"); - t.child("content", &self.content); - t.child("controls", &self.controls); - } -} - -pub struct IconDialog<U> { - image: Child<BlendedImage>, - paragraphs: Paragraphs<ParagraphVecShort<'static>>, - controls: Child<U>, -} - -impl<U> IconDialog<U> -where - U: Component, -{ - pub fn new(icon: BlendedImage, title: impl Into<TString<'static>>, controls: U) -> Self { - Self { - image: Child::new(icon), - paragraphs: Paragraphs::new(ParagraphVecShort::from_iter([Paragraph::new( - &theme::TEXT_DEMIBOLD, - title, - ) - .centered()])) - .with_placement( - LinearPlacement::vertical() - .align_at_center() - .with_spacing(Self::VALUE_SPACE), - ), - controls: Child::new(controls), - } - } - - pub fn with_paragraph(mut self, para: Paragraph<'static>) -> Self { - if !para.content().is_empty() { - self.paragraphs.inner_mut().add(para); - } - self - } - - pub fn with_text(self, style: &'static TextStyle, text: impl Into<TString<'static>>) -> Self { - self.with_paragraph(Paragraph::new(style, text).centered()) - } - - pub fn with_description(self, description: impl Into<TString<'static>>) -> Self { - self.with_text(&theme::TEXT_NORMAL_GREY_EXTRA_LIGHT, description) - } - - pub fn with_value(self, value: impl Into<TString<'static>>) -> Self { - self.with_text(&theme::TEXT_MONO, value) - } - - pub fn new_shares(lines: [impl Into<TString<'static>>; 4], controls: U) -> Self { - let [l0, l1, l2, l3] = lines; - Self { - image: Child::new(BlendedImage::new( - theme::IMAGE_BG_CIRCLE, - theme::IMAGE_FG_SUCCESS, - theme::SUCCESS_COLOR, - theme::FG, - theme::BG, - )), - paragraphs: ParagraphVecShort::from_iter([ - Paragraph::new(&theme::TEXT_NORMAL_GREY_EXTRA_LIGHT, l0).centered(), - Paragraph::new(&theme::TEXT_DEMIBOLD, l1).centered(), - Paragraph::new(&theme::TEXT_NORMAL_GREY_EXTRA_LIGHT, l2).centered(), - Paragraph::new(&theme::TEXT_DEMIBOLD, l3).centered(), - ]) - .into_paragraphs() - .with_placement(LinearPlacement::vertical().align_at_center()), - controls: Child::new(controls), - } - } - - pub const ICON_AREA_PADDING: i16 = 2; - pub const ICON_AREA_HEIGHT: i16 = 60; - pub const VALUE_SPACE: i16 = 5; -} - -impl<U> Component for IconDialog<U> -where - U: Component, -{ - type Msg = DialogMsg<Never, U::Msg>; - - fn place(&mut self, bounds: Rect) -> Rect { - let bounds = bounds - .inset(theme::borders()) - .inset(Insets::top(Self::ICON_AREA_PADDING)); - - let controls_area = self.controls.place(bounds); - let content_area = bounds.inset(Insets::bottom(controls_area.height())); - - let (image_area, content_area) = content_area.split_top(Self::ICON_AREA_HEIGHT); - - self.image.place(image_area); - self.paragraphs.place(content_area); - bounds - } - - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - self.paragraphs.event(ctx, event); - self.controls.event(ctx, event).map(Self::Msg::Controls) - } - - fn paint(&mut self) { - self.image.paint(); - self.paragraphs.paint(); - self.controls.paint(); - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.image.render(target); - self.paragraphs.render(target); - self.controls.render(target); - } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.image.bounds(sink); - self.paragraphs.bounds(sink); - self.controls.bounds(sink); - } -} - -#[cfg(feature = "ui_debug")] -impl<U> crate::trace::Trace for IconDialog<U> -where - U: crate::trace::Trace, -{ - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("IconDialog"); - t.child("image", &self.image); - t.child("content", &self.paragraphs); - t.child("controls", &self.controls); - } -} diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index a1e7acc4d6..760367fa02 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -4,7 +4,6 @@ pub mod bl_confirm; mod button; #[cfg(feature = "translations")] mod coinjoin_progress; -mod dialog; mod fido; mod footer; mod vertical_menu; @@ -12,7 +11,6 @@ mod vertical_menu; mod fido_icons; mod error; mod frame; - #[cfg(feature = "translations")] mod hold_to_confirm; #[cfg(feature = "translations")] @@ -23,8 +21,6 @@ mod loader; #[cfg(feature = "translations")] mod number_input; pub mod number_input_slider; -#[cfg(feature = "translations")] -mod page; mod progress; #[cfg(feature = "translations")] mod prompt_screen; @@ -34,7 +30,6 @@ mod scroll; mod set_brightness; #[cfg(feature = "translations")] mod share_words; -mod simple_page; mod status_screen; mod swipe_content; #[cfg(feature = "translations")] @@ -51,7 +46,6 @@ pub use button::{ }; #[cfg(feature = "translations")] pub use coinjoin_progress::CoinJoinProgress; -pub use dialog::{Dialog, DialogMsg, IconDialog}; pub use error::ErrorScreen; pub use fido::{FidoConfirm, FidoMsg}; pub use footer::Footer; @@ -74,8 +68,6 @@ pub use loader::{Loader, LoaderMsg, LoaderStyle, LoaderStyleSheet}; pub use number_input::{NumberInputDialog, NumberInputDialogMsg}; #[cfg(feature = "translations")] pub use number_input_slider::NumberInputSliderDialog; -#[cfg(feature = "translations")] -pub use page::ButtonPage; pub use progress::Progress; #[cfg(feature = "translations")] pub use prompt_screen::PromptScreen; @@ -85,7 +77,6 @@ pub use scroll::ScrollBar; pub use set_brightness::SetBrightnessDialog; #[cfg(feature = "translations")] pub use share_words::ShareWords; -pub use simple_page::SimplePage; pub use status_screen::StatusScreen; pub use swipe_content::SwipeContent; #[cfg(feature = "translations")] diff --git a/core/embed/rust/src/ui/model_mercury/component/page.rs b/core/embed/rust/src/ui/model_mercury/component/page.rs deleted file mode 100644 index 4ab4b07178..0000000000 --- a/core/embed/rust/src/ui/model_mercury/component/page.rs +++ /dev/null @@ -1,852 +0,0 @@ -use crate::{ - error::Error, - strutil::TString, - time::Instant, - translations::TR, - ui::{ - component::{ - paginated::PageMsg, Component, ComponentExt, Event, EventCtx, Pad, Paginate, Swipe, - SwipeDirection, - }, - constant, - display::{self, Color}, - geometry::{Insets, Rect}, - shape::Renderer, - util::animation_disabled, - }, -}; - -use super::{ - theme, Button, ButtonContent, ButtonMsg, ButtonStyleSheet, Loader, LoaderMsg, ScrollBar, -}; - -use core::cell::Cell; - -/// Allows pagination of inner component. Shows scroll bar, confirm & cancel -/// buttons. Optionally handles hold-to-confirm with loader. -pub struct ButtonPage<T> { - /// Inner component. - content: T, - /// Cleared when page changes. - pad: Pad, - /// Swipe controller. - swipe: Swipe, - scrollbar: ScrollBar, - /// Hold-to-confirm mode whenever this is `Some(loader)`. - loader: Option<Loader>, - button_cancel: Option<Button>, - button_confirm: Button, - button_prev: Button, - button_next: Button, - /// Show cancel button instead of back button. - cancel_from_any_page: bool, - /// Whether to pass-through left swipe to parent component. - swipe_left: bool, - /// Whether to pass-through right swipe to parent component. - swipe_right: bool, - /// Fade to given backlight level on next paint(). - fade: Cell<Option<u16>>, -} - -impl<T> ButtonPage<T> -where - T: Paginate, - T: Component, -{ - pub fn with_hold(mut self) -> Result<Self, Error> { - self.button_confirm = - Button::with_text(TR::buttons__hold_to_confirm.into()).styled(theme::button_confirm()); - self.loader = Some(Loader::new()); - Ok(self) - } -} - -impl<T> ButtonPage<T> -where - T: Paginate, - T: Component, -{ - pub fn new(content: T, background: Color) -> Self { - Self { - content, - pad: Pad::with_background(background), - swipe: Swipe::new(), - scrollbar: ScrollBar::vertical(), - loader: None, - button_cancel: Some(Button::with_icon(theme::ICON_CANCEL)), - button_confirm: Button::with_icon(theme::ICON_CONFIRM).styled(theme::button_confirm()), - button_prev: Button::with_icon(theme::ICON_UP).initially_enabled(false), - button_next: Button::with_icon(theme::ICON_DOWN), - cancel_from_any_page: false, - swipe_left: false, - swipe_right: false, - fade: Cell::new(None), - } - } - - pub fn without_cancel(mut self) -> Self { - self.button_cancel = None; - self - } - - pub fn with_cancel_confirm( - mut self, - left: Option<TString<'static>>, - right: Option<TString<'static>>, - ) -> Self { - let cancel = match left { - Some(verb) => verb.map(|s| match s { - "^" => Button::with_icon(theme::ICON_UP), - "<" => Button::with_icon(theme::ICON_BACK), - _ => Button::with_text(verb), - }), - _ => Button::with_icon(theme::ICON_CANCEL), - }; - let confirm = match right { - Some(verb) => Button::with_text(verb).styled(theme::button_confirm()), - _ => Button::with_icon(theme::ICON_CONFIRM).styled(theme::button_confirm()), - }; - self.button_cancel = Some(cancel); - self.button_confirm = confirm; - self - } - - pub fn with_back_button(mut self) -> Self { - self.cancel_from_any_page = true; - self.button_prev = Button::with_icon(theme::ICON_BACK).initially_enabled(false); - self.button_cancel = Some(Button::with_icon(theme::ICON_BACK)); - self - } - - pub fn with_cancel_arrow(mut self) -> Self { - self.button_cancel = Some(Button::with_icon(theme::ICON_UP)); - self - } - - pub fn with_confirm_style(mut self, style: ButtonStyleSheet) -> Self { - self.button_confirm = self.button_confirm.styled(style); - self - } - - pub fn with_swipe_left(mut self) -> Self { - self.swipe_left = true; - self - } - - pub fn with_swipe_right(mut self) -> Self { - self.swipe_right = true; - self - } - - fn setup_swipe(&mut self) { - self.swipe.allow_up = self.scrollbar.has_next_page(); - self.swipe.allow_down = self.scrollbar.has_previous_page(); - self.swipe.allow_left = self.swipe_left; - self.swipe.allow_right = self.swipe_right; - } - - fn change_page(&mut self, ctx: &mut EventCtx, step: isize) { - // Advance scrollbar. - self.scrollbar.go_to_relative(step); - - // Adjust the swipe parameters according to the scrollbar. - self.setup_swipe(); - - // Enable/disable prev button. - self.button_prev - .enable_if(ctx, self.scrollbar.has_previous_page()); - - // Change the page in the content, make sure it gets completely repainted and - // clear the background under it. - self.content.change_page(self.scrollbar.active_page); - self.content.request_complete_repaint(ctx); - self.pad.clear(); - - // Swipe has dimmed the screen, so fade back to normal backlight after the next - // paint. - self.fade - .set(Some(theme::backlight::get_backlight_normal())); - } - - fn is_cancel_visible(&self) -> bool { - self.cancel_from_any_page || !self.scrollbar.has_previous_page() - } - - /// Area for drawing loader (and black rectangle behind it). Can be outside - /// bounds as we repaint entire UI tree after hiding the loader. - const fn loader_area() -> Rect { - constant::screen() - .inset(theme::borders()) - .inset(Insets::bottom(theme::BUTTON_HEIGHT + theme::BUTTON_SPACING)) - } - - fn handle_swipe( - &mut self, - ctx: &mut EventCtx, - event: Event, - ) -> HandleResult<<Self as Component>::Msg> { - if let Some(swipe) = self.swipe.event(ctx, event) { - match swipe { - SwipeDirection::Up => { - // Scroll down, if possible. - return HandleResult::NextPage; - } - SwipeDirection::Down => { - // Scroll up, if possible. - return HandleResult::PrevPage; - } - SwipeDirection::Left if self.swipe_left => { - return HandleResult::Return(PageMsg::SwipeLeft); - } - SwipeDirection::Right if self.swipe_right => { - return HandleResult::Return(PageMsg::SwipeRight); - } - _ => { - // Ignore other directions. - } - } - } - - HandleResult::Continue - } - - fn handle_button( - &mut self, - ctx: &mut EventCtx, - event: Event, - ) -> HandleResult<(Option<<Self as Component>::Msg>, Option<ButtonMsg>)> { - if self.scrollbar.has_next_page() { - if let Some(ButtonMsg::Clicked) = self.button_next.event(ctx, event) { - return HandleResult::NextPage; - } - } else { - let result = self.button_confirm.event(ctx, event); - match result { - Some(ButtonMsg::Clicked) => { - return HandleResult::Return((Some(PageMsg::Confirmed), result)) - } - Some(_) => return HandleResult::Return((None, result)), - None => {} - } - } - if self.is_cancel_visible() { - if let Some(ButtonMsg::Clicked) = self.button_cancel.event(ctx, event) { - return HandleResult::Return((Some(PageMsg::Cancelled), None)); - } - } else if let Some(ButtonMsg::Clicked) = self.button_prev.event(ctx, event) { - return HandleResult::PrevPage; - } - - HandleResult::Continue - } - - fn handle_hold( - &mut self, - ctx: &mut EventCtx, - event: Event, - button_msg: &Option<ButtonMsg>, - ) -> HandleResult<<Self as Component>::Msg> { - let Some(loader) = &mut self.loader else { - return HandleResult::Continue; - }; - let now = Instant::now(); - - if let Some(LoaderMsg::ShrunkCompletely) = loader.event(ctx, event) { - // Switch it to the initial state, so we stop painting it. - loader.reset(); - // Re-draw the whole content tree. - self.content.request_complete_repaint(ctx); - // Loader overpainted our bounds, repaint entire screen from scratch. - ctx.request_repaint_root() - // This can be a result of an animation frame event, we should take - // care to not short-circuit here and deliver the event to the - // content as well. - } - match button_msg { - Some(ButtonMsg::Pressed) => { - loader.start_growing(ctx, now); - loader.pad.clear(); // Clear the remnants of the content. - } - Some(ButtonMsg::Released) => { - loader.start_shrinking(ctx, now); - } - Some(ButtonMsg::Clicked) => { - if loader.is_completely_grown(now) || animation_disabled() { - return HandleResult::Return(PageMsg::Confirmed); - } else { - loader.start_shrinking(ctx, now); - } - } - _ => {} - } - - HandleResult::Continue - } -} - -enum HandleResult<T> { - Return(T), - PrevPage, - NextPage, - Continue, -} - -impl<T> Component for ButtonPage<T> -where - T: Paginate, - T: Component, -{ - type Msg = PageMsg<T::Msg>; - - fn place(&mut self, bounds: Rect) -> Rect { - let small_left_button = match (&self.button_cancel, &self.button_confirm) { - (None, _) => true, - (Some(cancel), confirm) => match (cancel.content(), confirm.content()) { - (ButtonContent::Text(t), _) => t.len() <= 4, - (ButtonContent::Icon(_), ButtonContent::Icon(_)) => false, - _ => true, - }, - }; - let layout = PageLayout::new(bounds, small_left_button); - self.pad.place(bounds); - self.swipe.place(bounds); - self.button_cancel.place(layout.button_left); - self.button_confirm.place(layout.button_right); - self.button_prev.place(layout.button_left); - self.button_next.place(layout.button_right); - self.scrollbar.place(layout.scrollbar); - - // Layout the content. Try to fit it on a single page first, and reduce the area - // to make space for a scrollbar if it doesn't fit. - self.content.place(layout.content_single_page); - let page_count = { - let count = self.content.page_count(); - if count > 1 { - self.content.place(layout.content); - self.content.page_count() // Make sure to re-count it with the - // new size. - } else { - count // Content fits on a single page. - } - }; - - if page_count == 1 && self.button_cancel.is_none() { - self.button_confirm.place(layout.button_both); - } - - // Now that we finally have the page count, we can setup the scrollbar and the - // swiper. - self.scrollbar.set_count_and_active_page(page_count, 0); - self.setup_swipe(); - - self.loader.place(Self::loader_area()); - bounds - } - - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - ctx.set_page_count(self.scrollbar.page_count); - - match self.handle_swipe(ctx, event) { - HandleResult::Return(r) => return Some(r), - HandleResult::PrevPage => { - self.change_page(ctx, -1); - return None; - } - HandleResult::NextPage => { - self.change_page(ctx, 1); - return None; - } - HandleResult::Continue => {} - } - - if let Some(msg) = self.content.event(ctx, event) { - return Some(PageMsg::Content(msg)); - } - - let mut confirm_button_msg = None; - let mut button_result = None; - - match self.handle_button(ctx, event) { - HandleResult::Return((Some(r), None)) => return Some(r), - HandleResult::Return((r, m)) => { - button_result = r; - confirm_button_msg = m; - } - HandleResult::PrevPage => { - self.change_page(ctx, -1); - return None; - } - HandleResult::NextPage => { - self.change_page(ctx, 1); - return None; - } - HandleResult::Continue => {} - } - - if self.loader.is_some() { - return match self.handle_hold(ctx, event, &confirm_button_msg) { - HandleResult::Return(r) => Some(r), - HandleResult::Continue => None, - _ => unreachable!(), - }; - } - button_result - } - - fn paint(&mut self) { - self.pad.paint(); - match &self.loader { - Some(l) if l.is_animating() => self.loader.paint(), - _ => { - self.content.paint(); - if self.scrollbar.has_pages() { - self.scrollbar.paint(); - } - } - } - if self.button_cancel.is_some() && self.is_cancel_visible() { - self.button_cancel.paint(); - } else { - self.button_prev.paint(); - } - if self.scrollbar.has_next_page() { - self.button_next.paint(); - } else { - self.button_confirm.paint(); - } - if let Some(val) = self.fade.take() { - // Note that this is blocking and takes some time. - display::fade_backlight(val); - } - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.pad.render(target); - match &self.loader { - Some(l) if l.is_animating() => self.loader.render(target), - _ => { - self.content.render(target); - if self.scrollbar.has_pages() { - self.scrollbar.render(target); - } - } - } - if self.button_cancel.is_some() && self.is_cancel_visible() { - self.button_cancel.render(target); - } else { - self.button_prev.render(target); - } - if self.scrollbar.has_next_page() { - self.button_next.render(target); - } else { - self.button_confirm.render(target); - } - if let Some(val) = self.fade.take() { - // Note that this is blocking and takes some time. - display::fade_backlight(val); - } - } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.pad.area); - self.scrollbar.bounds(sink); - self.content.bounds(sink); - self.button_cancel.bounds(sink); - self.button_confirm.bounds(sink); - self.button_prev.bounds(sink); - self.button_next.bounds(sink); - } -} - -#[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for ButtonPage<T> -where - T: crate::trace::Trace, -{ - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("ButtonPage"); - t.int("active_page", self.scrollbar.active_page as i64); - t.int("page_count", self.scrollbar.page_count as i64); - t.bool("hold", self.loader.is_some()); - t.child("content", &self.content); - } -} - -pub struct PageLayout { - /// Content when it fits on single page (no scrollbar). - pub content_single_page: Rect, - /// Content when multiple pages. - pub content: Rect, - /// Scroll bar when multiple pages. - pub scrollbar: Rect, - /// Controls displayed on last page. - pub button_left: Rect, - pub button_right: Rect, - pub button_both: Rect, -} - -impl PageLayout { - const SCROLLBAR_WIDTH: i16 = 8; - const SCROLLBAR_SPACE: i16 = 5; - - pub fn new(area: Rect, small_left_button: bool) -> Self { - let (area, button_both) = area.split_bottom(theme::BUTTON_HEIGHT); - let area = area.inset(Insets::bottom(theme::BUTTON_SPACING)); - let (_space, content) = area.split_left(theme::CONTENT_BORDER); - let (content_single_page, _space) = content.split_right(theme::CONTENT_BORDER); - let (content, scrollbar) = - content.split_right(Self::SCROLLBAR_SPACE + Self::SCROLLBAR_WIDTH); - let (_space, scrollbar) = scrollbar.split_left(Self::SCROLLBAR_SPACE); - - let width = if small_left_button { - theme::BUTTON_WIDTH - } else { - (button_both.width() - theme::BUTTON_SPACING) / 2 - }; - let (button_left, button_right) = button_both.split_left(width); - let button_right = button_right.inset(Insets::left(theme::BUTTON_SPACING)); - - Self { - content_single_page, - content, - scrollbar, - button_left, - button_right, - button_both, - } - } -} - -#[cfg(test)] -mod tests { - use serde_json; - - use crate::{ - trace::tests::trace, - ui::{ - component::text::paragraphs::{Paragraph, Paragraphs}, - event::TouchEvent, - geometry::Point, - model_mercury::{constant, theme}, - }, - }; - - use super::*; - - const SCREEN: Rect = constant::screen().inset(theme::borders()); - - fn swipe(component: &mut impl Component, points: &[(i16, i16)]) { - let last = points.len().saturating_sub(1); - let mut first = true; - let mut ctx = EventCtx::new(); - for (i, &(x, y)) in points.iter().enumerate() { - let p = Point::new(x, y); - let ev = if first { - TouchEvent::TouchStart(p) - } else if i == last { - TouchEvent::TouchEnd(p) - } else { - TouchEvent::TouchMove(p) - }; - component.event(&mut ctx, Event::Touch(ev)); - ctx.clear(); - first = false; - } - } - - fn swipe_up(component: &mut impl Component) { - swipe(component, &[(20, 100), (20, 60), (20, 20)]) - } - - fn swipe_down(component: &mut impl Component) { - swipe(component, &[(20, 20), (20, 60), (20, 100)]) - } - - #[test] - fn paragraphs_empty() { - let mut page = ButtonPage::new(Paragraphs::<[Paragraph<'static>; 0]>::new([]), theme::BG); - page.place(SCREEN); - - let expected = serde_json::json!({ - "component": "ButtonPage", - "active_page": 0, - "page_count": 1, - "content": { - "component": "Paragraphs", - "paragraphs": [], - }, - "hold": false, - }); - - assert_eq!(trace(&page), expected); - swipe_up(&mut page); - assert_eq!(trace(&page), expected); - swipe_down(&mut page); - assert_eq!(trace(&page), expected); - } - - #[test] - fn paragraphs_single() { - let mut page = ButtonPage::new( - Paragraphs::new([ - Paragraph::new( - &theme::TEXT_NORMAL, - "This is the first paragraph and it should fit on the screen entirely.", - ), - Paragraph::new( - &theme::TEXT_BOLD, - "Second, bold, paragraph should also fit on the screen.", - ), - ]), - theme::BG, - ); - page.place(SCREEN); - - let expected = serde_json::json!({ - "component": "ButtonPage", - "active_page": 0, - "page_count": 1, - "content": { - "component": "Paragraphs", - "paragraphs": [ - ["This is the first", "\n", "paragraph and it should", "\n", "fit on the screen", "\n", "entirely."], - ["Second, bold,", "\n", "paragraph should also", "\n", "fit on the screen."], - ], - }, - "hold": false, - }); - - assert_eq!(trace(&page), expected); - swipe_up(&mut page); - assert_eq!(trace(&page), expected); - swipe_down(&mut page); - assert_eq!(trace(&page), expected); - } - - #[test] - fn paragraphs_one_long() { - let mut page = ButtonPage::new( - Paragraphs::new( - Paragraph::new( - &theme::TEXT_BOLD, - "This is somewhat long paragraph that goes on and on and on and on and on and will definitely not fit on just a single screen. You have to swipe a bit to see all the text it contains I guess. There's just so much letters in it.", - ) - ), - theme::BG, - ); - page.place(SCREEN); - - let first_page = serde_json::json!({ - "component": "ButtonPage", - "active_page": 0, - "page_count": 2, - "content": { - "component": "Paragraphs", - "paragraphs": [ - [ - "This is somewhat long", "\n", - "paragraph that goes", "\n", - "on and on and on and", "\n", - "on and on and will", "\n", - "definitely not fit on", "\n", - "just a single screen.", "\n", - "You have to swipe a", "...", - ], - ], - }, - "hold": false, - }); - let second_page = serde_json::json!({ - "component": "ButtonPage", - "active_page": 1, - "page_count": 2, - "content": { - "component": "Paragraphs", - "paragraphs": [ - [ - "bit to see all the text it", "\n", - "contains I guess.", "\n", - "There's just so much", "\n", - "letters in it." - ], - ], - }, - "hold": false, - }); - - assert_eq!(trace(&page), first_page); - swipe_down(&mut page); - assert_eq!(trace(&page), first_page); - swipe_up(&mut page); - assert_eq!(trace(&page), second_page); - swipe_up(&mut page); - assert_eq!(trace(&page), second_page); - swipe_down(&mut page); - assert_eq!(trace(&page), first_page); - } - - #[test] - fn paragraphs_three_long() { - let mut page = ButtonPage::new( - Paragraphs::new([ - Paragraph::new( - &theme::TEXT_BOLD, - "This paragraph is using a bold font. It doesn't need to be all that long.", - ), - Paragraph::new( - &theme::TEXT_MONO, - "And this one is using MONO. Monospace is nice for numbers, they have the same width and can be scanned quickly. Even if they span several pages or something.", - ), - Paragraph::new( - &theme::TEXT_BOLD, - "Let's add another one for a good measure. This one should overflow all the way to the third page with a bit of luck.", - ), - ]), - theme::BG, - ); - page.place(SCREEN); - - let first_page = serde_json::json!({ - "component": "ButtonPage", - "active_page": 0, - "page_count": 3, - "content": { - "component": "Paragraphs", - "paragraphs": [ - [ - "This paragraph is", "\n", - "using a bold font. It", "\n", - "doesn't need to be all", "\n", - "that long.", - ], - [ - "And this one is u", "\n", - "sing MONO. Monosp", "\n", - "ace is nice f", "...", - ], - ], - }, - "hold": false, - }); - let second_page = serde_json::json!({ - "component": "ButtonPage", - "active_page": 1, - "page_count": 3, - "content": { - "component": "Paragraphs", - "paragraphs": [ - [ - "...", "or numbers, t", "\n", - "hey have the same", "\n", - "width and can be", "\n", - "scanned quickly.", "\n", - "Even if they span", "\n", - "several pages or", "\n", - "something." - ], - ], - }, - "hold": false, - }); - let third_page = serde_json::json!({ - "component": "ButtonPage", - "active_page": 2, - "page_count": 3, - "content": { - "component": "Paragraphs", - "paragraphs": [ - [ - "Let's add another one", "\n", - "for a good measure.", "\n", - "This one should", "\n", - "overflow all the way to", "\n", - "the third page with a", "\n", - "bit of luck.", - ], - ], - }, - "hold": false, - }); - - assert_eq!(trace(&page), first_page); - swipe_down(&mut page); - assert_eq!(trace(&page), first_page); - swipe_up(&mut page); - assert_eq!(trace(&page), second_page); - swipe_up(&mut page); - assert_eq!(trace(&page), third_page); - swipe_up(&mut page); - assert_eq!(trace(&page), third_page); - swipe_down(&mut page); - assert_eq!(trace(&page), second_page); - swipe_down(&mut page); - assert_eq!(trace(&page), first_page); - swipe_down(&mut page); - assert_eq!(trace(&page), first_page); - } - - #[test] - fn paragraphs_hard_break() { - let mut page = ButtonPage::new( - Paragraphs::new([ - Paragraph::new(&theme::TEXT_NORMAL, "Short one.").break_after(), - Paragraph::new(&theme::TEXT_NORMAL, "Short two.").break_after(), - Paragraph::new(&theme::TEXT_NORMAL, "Short three.").break_after(), - ]), - theme::BG, - ); - page.place(SCREEN); - - let first_page = serde_json::json!({ - "component": "ButtonPage", - "active_page": 0, - "page_count": 3, - "content": { - "component": "Paragraphs", - "paragraphs": [ - [ - "Short one.", - ], - ], - }, - "hold": false, - }); - let second_page = serde_json::json!({ - "component": "ButtonPage", - "active_page": 1, - "page_count": 3, - "content": { - "component": "Paragraphs", - "paragraphs": [ - [ - "Short two.", - ], - ], - }, - "hold": false, - }); - let third_page = serde_json::json!({ - "component": "ButtonPage", - "active_page": 2, - "page_count": 3, - "content": { - "component": "Paragraphs", - "paragraphs": [ - [ - "Short three.", - ], - ], - }, - "hold": false, - }); - - assert_eq!(trace(&page), first_page); - swipe_up(&mut page); - assert_eq!(trace(&page), second_page); - swipe_up(&mut page); - assert_eq!(trace(&page), third_page); - swipe_up(&mut page); - assert_eq!(trace(&page), third_page); - } -} diff --git a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs b/core/embed/rust/src/ui/model_mercury/component/simple_page.rs deleted file mode 100644 index 5e7a799071..0000000000 --- a/core/embed/rust/src/ui/model_mercury/component/simple_page.rs +++ /dev/null @@ -1,204 +0,0 @@ -use crate::ui::{ - component::{ - base::ComponentExt, Component, Event, EventCtx, Pad, PageMsg, Paginate, Swipe, - SwipeDirection, - }, - display::{self, Color}, - geometry::{Axis, Insets, Rect}, - shape::Renderer, -}; - -use super::{theme, ScrollBar}; -use core::cell::Cell; - -const SCROLLBAR_HEIGHT: i16 = 18; -const SCROLLBAR_BORDER: i16 = 4; - -pub struct SimplePage<T> { - content: T, - pad: Pad, - swipe: Swipe, - scrollbar: ScrollBar, - axis: Axis, - swipe_right_to_go_back: bool, - fade: Cell<Option<u16>>, -} - -impl<T> SimplePage<T> -where - T: Paginate, - T: Component, -{ - pub fn new(content: T, axis: Axis, background: Color) -> Self { - Self { - content, - swipe: Swipe::new(), - pad: Pad::with_background(background), - scrollbar: ScrollBar::new(axis), - axis, - swipe_right_to_go_back: false, - fade: Cell::new(None), - } - } - - pub fn horizontal(content: T, background: Color) -> Self { - Self::new(content, Axis::Horizontal, background) - } - - pub fn vertical(content: T, background: Color) -> Self { - Self::new(content, Axis::Vertical, background) - } - - pub fn with_swipe_right_to_go_back(mut self) -> Self { - self.swipe_right_to_go_back = true; - self - } - - pub fn inner(&self) -> &T { - &self.content - } - - fn setup_swipe(&mut self) { - if self.is_horizontal() { - self.swipe.allow_left = self.scrollbar.has_next_page(); - self.swipe.allow_right = - self.scrollbar.has_previous_page() || self.swipe_right_to_go_back; - } else { - self.swipe.allow_up = self.scrollbar.has_next_page(); - self.swipe.allow_down = self.scrollbar.has_previous_page(); - self.swipe.allow_right = self.swipe_right_to_go_back; - } - } - - fn change_page(&mut self, ctx: &mut EventCtx, step: isize) { - // Advance scrollbar. - self.scrollbar.go_to_relative(step); - // Adjust the swipe parameters according to the scrollbar. - self.setup_swipe(); - - // Change the page in the content, make sure it gets completely repainted and - // clear the background under it. - self.content.change_page(self.scrollbar.active_page); - self.content.request_complete_repaint(ctx); - self.pad.clear(); - - // Swipe has dimmed the screen, so fade back to normal backlight after the next - // paint. - self.fade - .set(Some(theme::backlight::get_backlight_normal())); - } - - fn is_horizontal(&self) -> bool { - matches!(self.axis, Axis::Horizontal) - } -} - -impl<T> Component for SimplePage<T> -where - T: Paginate, - T: Component, -{ - type Msg = PageMsg<T::Msg>; - - fn place(&mut self, bounds: Rect) -> Rect { - self.swipe.place(bounds); - - let (content, scrollbar) = if self.is_horizontal() { - bounds.split_bottom(SCROLLBAR_HEIGHT + SCROLLBAR_BORDER) - } else { - bounds.split_right(SCROLLBAR_HEIGHT + SCROLLBAR_BORDER) - }; - - self.content.place(bounds); - if self.content.page_count() > 1 { - self.pad.place(content); - self.content.place(content); - } else { - self.pad.place(bounds); - } - - if self.is_horizontal() { - self.scrollbar - .place(scrollbar.inset(Insets::bottom(SCROLLBAR_BORDER))); - } else { - self.scrollbar - .place(scrollbar.inset(Insets::right(SCROLLBAR_BORDER))); - } - - self.scrollbar - .set_count_and_active_page(self.content.page_count(), 0); - self.setup_swipe(); - - bounds - } - - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - ctx.set_page_count(self.scrollbar.page_count); - if let Some(swipe) = self.swipe.event(ctx, event) { - match (swipe, self.axis) { - (SwipeDirection::Left, Axis::Horizontal) | (SwipeDirection::Up, Axis::Vertical) => { - self.change_page(ctx, 1); - return None; - } - (SwipeDirection::Right, _) - if self.swipe_right_to_go_back && self.scrollbar.active_page == 0 => - { - return Some(PageMsg::Cancelled); - } - (SwipeDirection::Right, Axis::Horizontal) - | (SwipeDirection::Down, Axis::Vertical) => { - self.change_page(ctx, -1); - return None; - } - _ => { - // Ignore other directions. - } - } - } - self.content.event(ctx, event).map(PageMsg::Content) - } - - fn paint(&mut self) { - self.pad.paint(); - self.content.paint(); - if self.scrollbar.has_pages() { - self.scrollbar.paint(); - } - if let Some(val) = self.fade.take() { - // Note that this is blocking and takes some time. - display::fade_backlight(val); - } - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.pad.render(target); - self.content.render(target); - if self.scrollbar.has_pages() { - self.scrollbar.render(target); - } - if let Some(val) = self.fade.take() { - // Note that this is blocking and takes some time. - display::fade_backlight(val); - } - } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.pad.area); - self.scrollbar.bounds(sink); - self.content.bounds(sink); - } -} - -#[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for SimplePage<T> -where - T: crate::trace::Trace, -{ - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("SimplePage"); - t.int("active_page", self.scrollbar.active_page as i64); - t.int("page_count", self.scrollbar.page_count as i64); - t.child("content", &self.content); - } -} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 494e8182bb..b9d63ee911 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -236,7 +236,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err } } -pub fn new_confirm_action_simple<T: Component + Paginate + Clone + MaybeTrace + 'static>( +pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static>( content: T, title: TString<'static>, subtitle: Option<TString<'static>>, diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 6d579ae9bf..66329789e9 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -14,9 +14,7 @@ use crate::{ component::{ base::{AttachType, ComponentExt}, connect::Connect, - image::BlendedImage, jpeg::Jpeg, - paginated::{PageMsg, Paginate}, swipe_detect::SwipeSettings, text::{ op::OpTextLayout, @@ -26,7 +24,7 @@ use crate::{ }, TextStyle, }, - Border, Component, Empty, FormattedText, Label, Never, SwipeDirection, Timeout, + Border, Component, FormattedText, Label, Never, SwipeDirection, Timeout, }, flow::Swipable, geometry, @@ -41,13 +39,12 @@ use crate::{ use super::{ component::{ - AddressDetails, Bip39Input, Button, ButtonMsg, ButtonPage, ButtonStyleSheet, - CancelConfirmMsg, CancelInfoConfirmMsg, CoinJoinProgress, Dialog, DialogMsg, FidoConfirm, - FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, - MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, PassphraseKeyboardMsg, - PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, SelectWordCount, SelectWordCountMsg, - SetBrightnessDialog, SimplePage, Slip39Input, StatusScreen, SwipeUpScreen, - SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, + AddressDetails, Bip39Input, Button, CancelConfirmMsg, CancelInfoConfirmMsg, + CoinJoinProgress, FidoConfirm, FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, + Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, + PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, + SelectWordCount, SelectWordCountMsg, SetBrightnessDialog, Slip39Input, StatusScreen, + SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, }, flow, theme, }; @@ -108,33 +105,6 @@ where } } -impl<T, U> ComponentMsgObj for Dialog<T, U> -where - T: ComponentMsgObj, - U: Component, - <U as Component>::Msg: TryInto<Obj, Error = Error>, -{ - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - DialogMsg::Content(c) => Ok(self.inner().msg_try_into_obj(c)?), - DialogMsg::Controls(msg) => msg.try_into(), - } - } -} - -impl<U> ComponentMsgObj for IconDialog<U> -where - U: Component, - <U as Component>::Msg: TryInto<Obj, Error = Error>, -{ - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - DialogMsg::Controls(msg) => msg.try_into(), - _ => unreachable!(), - } - } -} - impl ComponentMsgObj for PinKeyboard<'_> { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { @@ -220,21 +190,6 @@ impl<T: Component + Swipable> ComponentMsgObj for SwipeUpScreen<T> { } } -impl<T> ComponentMsgObj for ButtonPage<T> -where - T: Component + Paginate, -{ - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - PageMsg::Content(_) => Err(Error::TypeError), - PageMsg::Confirmed => Ok(CONFIRMED.as_obj()), - PageMsg::Cancelled => Ok(CANCELLED.as_obj()), - PageMsg::SwipeLeft => Ok(INFO.as_obj()), - PageMsg::SwipeRight => Ok(CANCELLED.as_obj()), - } - } -} - // Clippy/compiler complains about conflicting implementations // TODO move the common impls to a common module #[cfg(not(feature = "clippy"))] @@ -289,19 +244,6 @@ where } } -impl<T> ComponentMsgObj for SimplePage<T> -where - T: ComponentMsgObj + Paginate, -{ - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - PageMsg::Content(inner_msg) => Ok(self.inner().msg_try_into_obj(inner_msg)?), - PageMsg::Cancelled => Ok(CANCELLED.as_obj()), - _ => Err(Error::TypeError), - } - } -} - impl ComponentMsgObj for AddressDetails { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { Ok(CANCELLED.as_obj()) @@ -350,12 +292,13 @@ extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *m } } - let obj = LayoutObj::new(Frame::left_aligned( + flow::new_confirm_action_simple( + FormattedText::new(ops).vertically_centered(), title, - ButtonPage::new(FormattedText::new(ops).vertically_centered(), theme::BG) - .with_cancel_confirm(None, verb), - ))?; - Ok(obj.into()) + None, + verb, + None, + ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -423,42 +366,6 @@ impl ConfirmBlobParams { self } - fn into_layout(self) -> Result<Obj, Error> { - let paragraphs = ConfirmBlob { - description: self.description.unwrap_or("".into()), - extra: self.extra.unwrap_or("".into()), - data: self.data.try_into()?, - description_font: &theme::TEXT_NORMAL, - extra_font: &theme::TEXT_DEMIBOLD, - data_font: if self.chunkify { - let data: TString = self.data.try_into()?; - theme::get_chunkified_text_style(data.len()) - } else if self.text_mono { - &theme::TEXT_MONO - } else { - &theme::TEXT_NORMAL - }, - } - .into_paragraphs(); - - let mut page = ButtonPage::new(paragraphs, theme::BG); - if let Some(verb) = self.verb { - page = page.with_cancel_confirm(self.verb_cancel, Some(verb)) - } - if self.hold { - page = page.with_hold()? - } - let mut frame = Frame::left_aligned(self.title, page); - if let Some(subtitle) = self.subtitle { - frame = frame.with_subtitle(subtitle); - } - if self.info_button { - frame = frame.with_menu_button(); - } - let obj = LayoutObj::new(frame)?; - Ok(obj.into()) - } - fn into_flow(self) -> Result<Obj, Error> { let paragraphs = ConfirmBlob { description: self.description.unwrap_or("".into()), @@ -521,7 +428,6 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; - let verb: TString = kwargs.get_or(Qstr::MP_QSTR_verb, TR::buttons__confirm.into())?; let extra: Option<TString> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; let data: Obj = kwargs.get(Qstr::MP_QSTR_data)?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; @@ -543,16 +449,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut } .into_paragraphs(); - let obj = LayoutObj::new( - Frame::left_aligned( - title, - ButtonPage::new(paragraphs, theme::BG) - .with_swipe_left() - .with_cancel_confirm(None, Some(verb)), - ) - .with_menu_button(), - )?; - Ok(obj.into()) + flow::new_confirm_action_simple(paragraphs, title, None, None, None) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -560,7 +457,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; + let _hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; // FIXME let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let paragraphs = PropsList::new( @@ -569,14 +466,14 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m &theme::TEXT_MONO, &theme::TEXT_MONO, )?; - let page = if hold { - ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()? - } else { - ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) - .with_cancel_confirm(None, Some(TR::buttons__confirm.into())) - }; - let obj = LayoutObj::new(Frame::left_aligned(title, page))?; - Ok(obj.into()) + + flow::new_confirm_action_simple( + paragraphs.into_paragraphs(), + title, + None, + Some(TR::buttons__confirm.into()), + None, + ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -588,34 +485,41 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m let jpeg: BinaryData = image.try_into()?; - if jpeg.is_empty() { + let obj = if jpeg.is_empty() { // Incoming data may be empty, meaning we should // display default homescreen message. - let buttons = Button::cancel_confirm_text(None, Some(TR::buttons__change.into())); - let obj = LayoutObj::new(Frame::centered( - title, - Dialog::new( - Paragraphs::new([Paragraph::new( + LayoutObj::new(SwipeUpScreen::new( + Frame::centered( + title, + SwipeContent::new(Paragraphs::new([Paragraph::new( &theme::TEXT_DEMIBOLD, TR::homescreen__set_default, ) - .centered()]), - buttons, - ), - ))?; - Ok(obj.into()) + .centered()])), + ) + .with_cancel_button() + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::buttons__change.into()), + ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + )) } else { if !check_homescreen_format(jpeg) { return Err(value_error!("Invalid image.")); }; - let buttons = Button::cancel_confirm_text(None, Some(TR::buttons__change.into())); - let obj = LayoutObj::new(Frame::centered( - title, - Dialog::new(Jpeg::new(jpeg, 1), buttons), - ))?; - Ok(obj.into()) - } + LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, Jpeg::new(jpeg, 1)) + .with_cancel_button() + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::buttons__change.into()), + ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + )) + }; + Ok(obj?.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -625,7 +529,7 @@ extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; - let horizontal: bool = kwargs.get_or(Qstr::MP_QSTR_horizontal, false)?; + let _horizontal: bool = kwargs.get_or(Qstr::MP_QSTR_horizontal, false)?; // FIXME let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; let mut paragraphs = ParagraphVecShort::new(); @@ -645,19 +549,10 @@ extern "C" fn new_show_info_with_cancel(n_args: usize, args: *const Obj, kwargs: } } - let axis = match horizontal { - true => geometry::Axis::Horizontal, - _ => geometry::Axis::Vertical, - }; - - let obj = LayoutObj::new( - Frame::left_aligned( - title, - SimplePage::new(paragraphs.into_paragraphs(), axis, theme::BG) - .with_swipe_right_to_go_back(), - ) - .with_cancel_button(), - )?; + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, SwipeContent::new(paragraphs.into_paragraphs())) + .with_cancel_button(), + ))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -698,8 +593,6 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; - let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; - let cancel_arrow: bool = kwargs.get_or(Qstr::MP_QSTR_cancel_arrow, false)?; let mut paragraphs = ParagraphVecShort::new(); @@ -708,18 +601,14 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma paragraphs.add(Paragraph::new(&theme::TEXT_NORMAL, label).no_break()); paragraphs.add(Paragraph::new(&theme::TEXT_MONO, value)); } - let mut page = ButtonPage::new(paragraphs.into_paragraphs(), theme::BG).with_hold()?; - if cancel_arrow { - page = page.with_cancel_arrow() - } - if info_button { - page = page.with_swipe_left(); - } - let mut frame = Frame::left_aligned(title, page); - if info_button { - frame = frame.with_menu_button(); - } - let obj = LayoutObj::new(frame)?; + + // FIXME: hold + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, SwipeContent::new(paragraphs.into_paragraphs())) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + ))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -798,82 +687,13 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -fn new_show_modal( - kwargs: &Map, - icon: BlendedImage, - button_style: ButtonStyleSheet, -) -> Result<Obj, Error> { - let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; - let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; - let button: TString = kwargs.get_or(Qstr::MP_QSTR_button, TR::buttons__continue.into())?; - let allow_cancel: bool = kwargs.get_or(Qstr::MP_QSTR_allow_cancel, true)?; - let time_ms: u32 = kwargs.get_or(Qstr::MP_QSTR_time_ms, 0)?; - - let no_buttons = button.is_empty(); - let obj = if no_buttons && time_ms == 0 { - // No buttons and no timer, used when we only want to draw the dialog once and - // then throw away the layout object. - LayoutObj::new( - IconDialog::new(icon, title, Empty) - .with_value(value) - .with_description(description), - )? - .into() - } else if no_buttons && time_ms > 0 { - // Timeout, no buttons. - LayoutObj::new( - IconDialog::new( - icon, - title, - Timeout::new(time_ms).map(|_| Some(CancelConfirmMsg::Confirmed)), - ) - .with_value(value) - .with_description(description), - )? - .into() - } else if allow_cancel { - // Two buttons. - LayoutObj::new( - IconDialog::new( - icon, - title, - Button::cancel_confirm( - Button::with_icon(theme::ICON_CANCEL), - Button::with_text(button).styled(button_style), - false, - ), - ) - .with_value(value) - .with_description(description), - )? - .into() - } else { - // Single button. - LayoutObj::new( - IconDialog::new( - icon, - title, - theme::button_bar(Button::with_text(button).styled(button_style).map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) - })), - ) - .with_value(value) - .with_description(description), - )? - .into() - }; - - Ok(obj) -} - extern "C" fn new_show_error(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let allow_cancel: bool = kwargs.get(Qstr::MP_QSTR_allow_cancel)?.try_into()?; - let content = Paragraphs::new([Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)]); + let content = Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)); let frame = if allow_cancel { Frame::left_aligned(title, SwipeContent::new(content)) .with_cancel_button() @@ -965,7 +785,7 @@ extern "C" fn new_show_info(n_args: usize, args: *const Obj, kwargs: *mut Map) - let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let content = Paragraphs::new([Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)]); + let content = Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)); let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(title, SwipeContent::new(content)) .with_footer(TR::instructions__swipe_up.into(), None) @@ -983,33 +803,17 @@ extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Ma let url: TString = TR::addr_mismatch__support_url.into(); let button: TString = TR::buttons__quit.into(); - let icon = BlendedImage::new( - theme::IMAGE_BG_OCTAGON, - theme::IMAGE_FG_WARN, - theme::WARN_COLOR, - theme::FG, - theme::BG, - ); - let obj = LayoutObj::new( - IconDialog::new( - icon, - title, - Button::cancel_confirm( - Button::with_icon(theme::ICON_BACK), - Button::with_text(button).styled(theme::button_default()), - true, - ), - ) - .with_paragraph( - Paragraph::new(&theme::TEXT_NORMAL, description) - .centered() - .with_bottom_padding( - theme::TEXT_NORMAL.text_font.text_height() - - theme::TEXT_DEMIBOLD.text_font.text_height(), - ), - ) - .with_text(&theme::TEXT_DEMIBOLD, url), - )?; + let paragraphs = Paragraphs::new([ + Paragraph::new(&theme::TEXT_NORMAL, description).centered(), + Paragraph::new(&theme::TEXT_DEMIBOLD, url).centered(), + ]); + + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, SwipeContent::new(paragraphs)) + .with_cancel_button() + .with_footer(TR::instructions__swipe_up.into(), Some(button)) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + ))?; Ok(obj.into()) }; @@ -1018,24 +822,14 @@ extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Ma extern "C" fn new_show_simple(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let title: Option<TString> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; - let obj = if let Some(t) = title { - LayoutObj::new(Frame::left_aligned( - t, - Paragraphs::new(Paragraph::new(&theme::TEXT_NORMAL, description)), - ))? - .into() - } else { - LayoutObj::new(Border::new( - theme::borders(), - Paragraphs::new(Paragraph::new(&theme::TEXT_DEMIBOLD, description)), - ))? - .into() - }; + let obj = LayoutObj::new(Border::new( + theme::borders(), + Paragraphs::new(Paragraph::new(&theme::TEXT_DEMIBOLD, description)), + ))?; - Ok(obj) + Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -1044,7 +838,6 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let info_button: TString = kwargs.get(Qstr::MP_QSTR_info_button)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let mut paragraphs = ParagraphVecShort::new(); @@ -1060,7 +853,7 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu } let obj = LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned(title, paragraphs.into_paragraphs()) + Frame::left_aligned(title, SwipeContent::new(paragraphs.into_paragraphs())) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), Some(button)) .with_swipe(SwipeDirection::Up, SwipeSettings::default()), @@ -1073,7 +866,6 @@ extern "C" fn new_confirm_with_info(n_args: usize, args: *const Obj, kwargs: *mu extern "C" fn new_confirm_more(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let mut paragraphs = ParagraphVecLong::new(); @@ -1085,12 +877,11 @@ extern "C" fn new_confirm_more(n_args: usize, args: *const Obj, kwargs: *mut Map paragraphs.add(Paragraph::new(style, text)); } - let obj = LayoutObj::new(Frame::left_aligned( - title, - ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) - .with_cancel_confirm(None, Some(button)) - .with_confirm_style(theme::button_default()) - .with_back_button(), + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, SwipeContent::new(paragraphs.into_paragraphs())) + .with_cancel_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; Ok(obj.into()) }; @@ -1109,11 +900,8 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut Paragraph::new(&theme::TEXT_MONO, max_feerate), ]); - let obj = LayoutObj::new(Frame::left_aligned( - TR::coinjoin__title.into(), - ButtonPage::new(paragraphs, theme::BG).with_hold()?, - ))?; - Ok(obj.into()) + // FIXME: hold + flow::new_confirm_action_simple(paragraphs, TR::coinjoin__title.into(), None, None, None) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -1253,7 +1041,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; let _info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; - let paragraphs = Paragraphs::new([Paragraph::new(&theme::TEXT_NORMAL, description)]); + let paragraphs = Paragraphs::new(Paragraph::new(&theme::TEXT_NORMAL, description)); let notification = match recovery_type { RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run.into(), @@ -1292,12 +1080,21 @@ extern "C" fn new_show_group_share_success( let lines_iterable: Obj = kwargs.get(Qstr::MP_QSTR_lines)?; let lines: [TString; 4] = util::iter_into_array(lines_iterable)?; - let obj = LayoutObj::new(IconDialog::new_shares( - lines, - theme::button_bar(Button::with_text(TR::buttons__continue.into()).map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) - })), + let paragraphs = ParagraphVecShort::from_iter([ + Paragraph::new(&theme::TEXT_NORMAL_GREY_EXTRA_LIGHT, lines[0]).centered(), + Paragraph::new(&theme::TEXT_DEMIBOLD, lines[1]).centered(), + Paragraph::new(&theme::TEXT_NORMAL_GREY_EXTRA_LIGHT, lines[2]).centered(), + Paragraph::new(&theme::TEXT_DEMIBOLD, lines[3]).centered(), + ]) + .into_paragraphs() + .with_placement(geometry::LinearPlacement::vertical().align_at_center()); + + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned("".into(), SwipeContent::new(paragraphs)) + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; + Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1315,12 +1112,13 @@ extern "C" fn new_show_remaining_shares(n_args: usize, args: *const Obj, kwargs: .add(Paragraph::new(&theme::TEXT_NORMAL, description).break_after()); } - let obj = LayoutObj::new(Frame::left_aligned( - TR::recovery__title_remaining_shares.into(), - ButtonPage::new(paragraphs.into_paragraphs(), theme::BG) - .with_cancel_confirm(None, Some(TR::buttons__continue.into())) - .with_confirm_style(theme::button_default()) - .without_cancel(), + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned( + TR::recovery__title_remaining_shares.into(), + SwipeContent::new(paragraphs.into_paragraphs()), + ) + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; Ok(obj.into()) }; @@ -2046,59 +1844,3 @@ pub static mp_module_trezorui2: Module = obj_module! { /// mock:global Qstr::MP_QSTR_BacklightLevels => BACKLIGHT_LEVELS_OBJ.as_obj(), }; - -#[cfg(test)] -mod tests { - use serde_json; - - use crate::{ - trace::tests::trace, - ui::{component::text::op::OpTextLayout, geometry::Rect, model_mercury::constant}, - }; - - use super::*; - - const SCREEN: Rect = constant::screen().inset(theme::borders()); - - #[test] - fn trace_example_layout() { - let buttons = Button::cancel_confirm( - Button::with_text("Left".into()), - Button::with_text("Right".into()), - false, - ); - - let ops = OpTextLayout::new(theme::TEXT_NORMAL) - .text_normal("Testing text layout, with some text, and some more text. And ") - .text_bold("parameters!"); - let formatted = FormattedText::new(ops); - let mut layout = Dialog::new(formatted, buttons); - layout.place(SCREEN); - - let expected = serde_json::json!({ - "component": "Dialog", - "content": { - "component": "FormattedText", - "text": ["Testing text layout, with", "\n", "some text, and some", "\n", - "more text. And ", "parame", "-", "\n", "ters!"], - "fits": true, - }, - "controls": { - "component": "FixedHeightBar", - "inner": { - "component": "Split", - "first": { - "component": "Button", - "text": "Left", - }, - "second": { - "component": "Button", - "text": "Right", - }, - }, - }, - }); - - assert_eq!(trace(&layout), expected); - } -} diff --git a/core/embed/rust/src/ui/model_mercury/res/circle48.toif b/core/embed/rust/src/ui/model_mercury/res/circle48.toif deleted file mode 100644 index bd2c156490630660b0ad9ec0d2130aef881c939f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmV+j0r&n?Pf15G05Aaj0001$(!XlLP!tC6&wv`JgQJsXD!9~F@d-qnbgAtV)XCM& zRp?&u1w`K<yAGn@9CWB!HK$EXOs@C4LccA);rzKdz%|AG+?Pq)f|~b}gmIr$_9ad= z#cv6V<ZtYpQ!L9{kBum4#8u=jQKkL8e}r5YE!n`=y1xW|(cNWTgV?~1c^Nn|AHZQO zUZzQ1>>2l`9rwyN_wJGV=)`?`;lAW7p8PYu!A*UC40D?HGQGo=du`0U(Bqyf@&zm$ z=s3WNwgq~IyTX~g!lS!w8tz=5Xb`gA*}gh9D!)byNBKFf6}wW&vytR8;S$nmMcYkP O{_8PZi1*dW#NWRGVT^YG diff --git a/core/embed/rust/src/ui/model_mercury/res/fg-check48.toif b/core/embed/rust/src/ui/model_mercury/res/fg-check48.toif deleted file mode 100644 index 408f4bd6d58201bdf58f821350649972bf76f6de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84 zcmV-a0IUC0Pf14<01g010001EV1NJzF(`xKYdw^a@ZTOL^q&pF2>74Rz`zU>nsA;G qDm3B03{;iCpYx1hAqIwn|7D;W1^(QJ2!RA)W(oYshgq4(0;T{j$|9Wr diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index af3d6fe282..faa1b31f2f 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -99,7 +99,6 @@ include_icon!( ICON_LOCKSCREEN_FILTER, "model_mercury/res/lockscreen_filter.toif" ); -include_icon!(ICON_CENTRAL_CIRCLE, "model_mercury/res/central_circle.toif"); // Scrollbar/PIN dots - taken from model T include_icon!(DOT_ACTIVE, "model_mercury/res/scroll-active.toif"); @@ -127,14 +126,6 @@ include_icon!( // Icon for "next keyboard layout" for special characters include_icon!(ICON_ASTERISK, "model_mercury/res/asterisk16.toif"); -// Large, three-color icons. -pub const WARN_COLOR: Color = ORANGE_LIGHT; -pub const INFO_COLOR: Color = GREY_LIGHT; -pub const SUCCESS_COLOR: Color = GREEN; -pub const ERROR_COLOR: Color = ORANGE_DIMMED; -include_icon!(IMAGE_FG_SUCCESS, "model_mercury/res/fg-check48.toif"); -include_icon!(IMAGE_BG_CIRCLE, "model_mercury/res/circle48.toif"); - // Welcome screen. include_icon!(ICON_LOGO, "model_mercury/res/lock_full.toif"); @@ -160,12 +151,6 @@ include_icon!(ICON_LOCK_BIG, "model_tt/res/lock24.toif"); include_icon!(ICON_COINJOIN, "model_tt/res/coinjoin16.toif"); include_icon!(ICON_MAGIC, "model_tt/res/magic.toif"); -include_icon!(IMAGE_FG_WARN, "model_tt/res/fg-warning48.toif"); -include_icon!(IMAGE_FG_ERROR, "model_tt/res/fg-error48.toif"); -include_icon!(IMAGE_FG_INFO, "model_tt/res/fg-info48.toif"); -include_icon!(IMAGE_FG_USER, "model_tt/res/fg-user48.toif"); -include_icon!(IMAGE_BG_OCTAGON, "model_tt/res/octagon48.toif"); - // Non-square button backgrounds. include_icon!(IMAGE_BG_BACK_BTN, "model_tt/res/bg-back40.toif"); include_icon!(IMAGE_BG_BACK_BTN_TALL, "model_tt/res/bg-back52.toif"); diff --git a/tests/device_tests/bitcoin/test_signmessage.py b/tests/device_tests/bitcoin/test_signmessage.py index b5d47b64f4..0a5e8a7967 100644 --- a/tests/device_tests/bitcoin/test_signmessage.py +++ b/tests/device_tests/bitcoin/test_signmessage.py @@ -316,6 +316,7 @@ def test_signmessage( @pytest.mark.skip_t1b1 @pytest.mark.skip_t2b1 +@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") @pytest.mark.parametrize( "coin_name, path, script_type, no_script_type, address, message, signature", VECTORS ) diff --git a/tests/device_tests/ethereum/test_signtx.py b/tests/device_tests/ethereum/test_signtx.py index 752cd37e4b..5e4f0e2849 100644 --- a/tests/device_tests/ethereum/test_signtx.py +++ b/tests/device_tests/ethereum/test_signtx.py @@ -430,6 +430,7 @@ def input_flow_data_go_back(client: Client, cancel: bool = False): @pytest.mark.parametrize( "flow", (input_flow_data_skip, input_flow_data_scroll_down, input_flow_data_go_back) ) +@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") @pytest.mark.skip_t1b1 def test_signtx_data_pagination(client: Client, flow): def _sign_tx_call(): diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index e7a952577f..536712b6be 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -18514,23 +18514,23 @@ "T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "16bec6ab85f7ccec2eed3f2d9f273ab561fa4edc2779a8333e96e325e39a87ca", "T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "ef31054cf45938b5cba8bf2b7d8f5b691f74a436ee7fa417cf678d7517856255", "T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "69fcdf948ddc30dcc97f6901b82fe80376c7b0c0428099010490521ca37d788a", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "01f8fd01fc6dacca738224f7eec1ff8dc79acc7f5c5e172aef6ccd460592c6b2", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "7adbbc301984f9ea5c78dc9e6dfc1af774869e4d87d81363ad14346b94c12b03", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "89b890924880b128afeaad4f93de40be28cbbcfeeab46e491b2936d81274752d", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "0d928a4dc6873a2a79441bb1964491f4f22f683e14ff47bbc68d4204db85754c", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "0b46d6e740b98bfa899618291cad1bb90efa9384b6755b361b45673cd95f3639", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "01f8fd01fc6dacca738224f7eec1ff8dc79acc7f5c5e172aef6ccd460592c6b2", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "7adbbc301984f9ea5c78dc9e6dfc1af774869e4d87d81363ad14346b94c12b03", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "89b890924880b128afeaad4f93de40be28cbbcfeeab46e491b2936d81274752d", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "0d928a4dc6873a2a79441bb1964491f4f22f683e14ff47bbc68d4204db85754c", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "0b46d6e740b98bfa899618291cad1bb90efa9384b6755b361b45673cd95f3639", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "5fb0f48e4136f400eea4c1958c9a28b0cd205f0a78a6ed2142e1567703b7e242", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "e08e582ace0266765662772d8676497b2f540166fa784420016c14c35f27789f", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "67ef3bfb498805795a5c111437e9e31e9996dc2b2a3d7ed410b820a76879737a", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1a34efcfdc19f56e11bd7a5a888644efd3e17b1d122c0fbc1e8cb7933da07870", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "15cdff9ad1bc9e2d1fd11bed1c1ecdea556d2abc277f33b70034a99821cee76b", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "0ca4bcbaa1a549cb84429dbc77d607ab2cba4c6ce3174699a675251891e8b7f9", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "0ca4bcbaa1a549cb84429dbc77d607ab2cba4c6ce3174699a675251891e8b7f9", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "7500e2783981dbb877e46acf18016f79675cfc89fbc32bccfcff9b2e32f89599", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "70b9d19990ec21925a41d0a20778698dc7a3648e4de15f0f9a8d5252c4fb8712", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5e68efc63caa84a88f9490f00adaca1c7a97d92ae35911778b3818ace34b6be4", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5e68efc63caa84a88f9490f00adaca1c7a97d92ae35911778b3818ace34b6be4", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "507bee28bfee7cc86a6f12f812f8f52bed2c78d64390514a4d3392a8c2707ad3", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "6c35025a5a714e4b7bb147186b755672b66c29f72bafaabab02da3d901d60e21", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "8b7dcef01953de33d6a52a40951134b9a2b8daec4066df5ffa2e8b238f4e07a4", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "8a9aa98a0099a826ee682dc6983059d38c3abbe9dfc2caf8937e3b6e99090e6e", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "8a9aa98a0099a826ee682dc6983059d38c3abbe9dfc2caf8937e3b6e99090e6e", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "2a30f5df79cd7071056cf8111c858f58881225c19513fb1cdb85d92e687eefd1", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "2a30f5df79cd7071056cf8111c858f58881225c19513fb1cdb85d92e687eefd1", "T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "3fe9761bcc0b60cc685d9c0f7e557a3cb2ec18046de63b499670cca7040bdd40", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "3fe9761bcc0b60cc685d9c0f7e557a3cb2ec18046de63b499670cca7040bdd40", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "2863996beef75967773099e62aaea6d7d5494856dd98e936ef664163b56b5601", @@ -18748,11 +18748,11 @@ "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "728660776f62f628e3bc48034dc19bc92560f7e1eb3b228e3e086e512240bd11", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "06c3732134ec930d8f1b50c5f4c21ac15106ae5adda319835c6d89d34e7aa09c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "f18f3f737c6610f5a6c1da1f96cad6050aed20b4c9db5745160675eefd08b924", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "82206cbfa43366c0562ab93109da5e5ef680b230e3ac3befbe4f2e5623c23118", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "bb9daa1fda9dd7b5329d15c43dd587dca5678433f551d96d38e919cc307e613c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "02fbd513872b7b00f65e6373d6c6d5b98b6bcf828a29678aa0031b6802bcf145", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "a360e6195514444bf22144a7b8790eacaab32535c6c39dbb04345cf617ff5fa6", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "b69dbb3b01109c9ed8c7a47a4a595287d04c2c80751dec5dc186eb4708ae8b73", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "dcb6bd72011dbcdccf5e833c9a15d228af212430838894c5bd358e385064411a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "5956c3900f013afb69b450ccb1b8c95398b0f29862f0d37f35d240fc3da8f65c", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "884923a572f62240cb5472321cff4b7bc66b168d7afe022beb64d2474631a5d7", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "095604e9b8497113a4845d928ca72798f3adbf3d7a89b68b6de846dfba8298d0", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4127933c0fd4d1708aa666dc912b17fb92576f83519e17f11fdefc7f85b8516b", @@ -18772,52 +18772,33 @@ "T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "2df967ba9a788011f8dc1f73dc8dd818027a10c245ec00d24958150ff9a55484", "T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "53f7cffed7f0140f04d33a4d7b0981a4e82eff6e9c6d671203edfb37fed54574", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "e9f3d5df4d1bd04be1a6f6ddbd761d31699316b1a19c3bfc92ad52a394a90287", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "e9f3d5df4d1bd04be1a6f6ddbd761d31699316b1a19c3bfc92ad52a394a90287", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "f4adb0934b1f3df13e2c649936319bda77cc5e9bd91fa167bee225c7af6265cf", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "05b3d84d111da58af6482f53d764e6931842c6f93b6e98ec9c0b0e30cc6df616", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "6720b09e96f003adafb45042c6f79d456891de8a0d238963870fef7aac61cbb9", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "b23e559e7612a09ef187d721b217acbbdd31593c8d32add8a05d25815a6a4d3d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "67f67220227c6945b3d202693ecdfad497e03f4c14428db9a2881e4188aaa3ac", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "b6c475a7e2cf0149f78a803b15bd0bbc3a40704da9fd89f06802668b2719123e", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "b6c475a7e2cf0149f78a803b15bd0bbc3a40704da9fd89f06802668b2719123e", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "a7b84107f82a334ce4233c5d848314a42fcb8517d86ddc5dbbcd9083af66ed65", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6c65e6a24dd82d066574ffe9f6ca739d1afb8a34e1dd0735cd7e82248c115189", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "799646e7845719d4aad141f7875eb4e924c08743498d69adf91284359d5f8871", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "799646e7845719d4aad141f7875eb4e924c08743498d69adf91284359d5f8871", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "374321a97826ef612d94d191ac4d3530842b2026780fd53cba251a7cca64e34d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "3d06e0814afd67a805d00d7b75a438cc5517a61a794c883b3b982c664a2b0299", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "57313215dcf9c3dac621ade2419b5e101a160a6165551f9aef75b3ecfb382aae", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "57313215dcf9c3dac621ade2419b5e101a160a6165551f9aef75b3ecfb382aae", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "3ab152ef1bd8cb7ffd91c26b8b8e22d371d6d04057aa832300af6bc6c762e192", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "28ff073d1c6b6e1ade0c569e86987578bbc8bb0f2a516d57c011964c2b6d8acc", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "bab75ef4bcfc8757a610befce5077796c5f07a4521c4da2caf3a3e688355fcd5", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "bab75ef4bcfc8757a610befce5077796c5f07a4521c4da2caf3a3e688355fcd5", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "005fce2151d5d00041216b8df4c7a1b7c44b3d1fea44e2c53d2ac93eded687ec", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "63b80d24787d21a3734ef875f9cbc506830b57511f6a41832988939a063a39f9", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "25715b14066b081975e3e82e47c0d73dbec6885d1672bbc7ad1b3bf68941d7e4", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "d8f8bc5393264b0d717f9a760cb8ba8cbdda82aea0d077b30ce1070094a99466", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "227985471ce8341a82962a2a634c3786a5f7feb18addc95f92393f4c60c1beba", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "ab00467d9e4fdc9c3e63afc53926072a50ce89e9c140c26f636b65a6e205ce72", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "ab00467d9e4fdc9c3e63afc53926072a50ce89e9c140c26f636b65a6e205ce72", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "e5cc85d2e4803c96aeefae36b4638f02e2c0f674d0a038fb8fe75832b5eb8d43", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "33bf48ac4364c7557daa97a5c13e1208604f85bbd45077d3b9364fde921b1f47", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "283acfdd4526d7775c15c6de32b69f5de0b32611ea7db8cf910a32c25c931b57", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "283acfdd4526d7775c15c6de32b69f5de0b32611ea7db8cf910a32c25c931b57", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "cfff484653d935cb3e294a5ea168ae1174194c4cce408100c96156d8c26445df", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "757ebd325ab076d705f7ac805f03f8cdc964fd1b3b6d3e6f30d30a4007e77900", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "8c0eaf50ecc37645397cb4bf74418e12cbd6a1fac9cd187cdfe32077bc4a375a", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "8c0eaf50ecc37645397cb4bf74418e12cbd6a1fac9cd187cdfe32077bc4a375a", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "815ff0f02676e74d04e527de234a7739d58d04d455ac9978614d698022ad3979", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "28fa7d38bc1252c346b57361aad936f399fbf73555d25b64987b019f55129523", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "341394d80b5d0d6b9d65f3bebf184ef81ada6fc6af3d2bfe50445dc4e421cc52", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "29fa0814bcca57c8df1d3475cf7df720a739ab54fd41343ac61ed645d3216513", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bb613b0198d0cd8a1823db142019b79b9b6a0d6a6d2f1ca7023c4fa4b64d5684", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "3ab717646032afcce058e08d9fbde406c3101df7e309334a648761f925d3560f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6a56d56bbbfab1f910b49fda5059ed4ec84815687a7dc9b0de1b2586cb1211ce", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "35c95744c026a93759f795953851beff19cbab1883423d2535db610fe91de8d4", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "cba6c516d1699aa0134a0a05e514681295870cfd56a5f806d1cebff0a232d643", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "969b3c76206be865afeb09fd7b0d25d08f0a026061b1717988b9c2b65f4c517c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "16e4ca277fa5920f39772c5a9e183b78507ba9c43c5bf18eb01ca948305f1ecd", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "16e4ca277fa5920f39772c5a9e183b78507ba9c43c5bf18eb01ca948305f1ecd", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4d83b12408caf5d986b00e4353096e33dab7c40e301b191b475aab7f1b0815f9", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "8c9b98de0aa76a35a383e098613cde939fb6f2af4b789ce664377838d2d0c8ac", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "62f2b3c454c9f2e3b292a1ad814cfff6e7afc6900232a950d36b35f6ddf0a485", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "9dfba44e949bbcf3cd4960e1bdbe0bbdc17393d6273417af878faf9e38e5904d", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "37a07035fd875bd3988323c6fd2ccc324f0f574d6fa39ed5842105487ba74bab", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "027f3af245cab497f274e0b4856722b30a90691cab36e12f9ce32adf45f840eb", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "027f3af245cab497f274e0b4856722b30a90691cab36e12f9ce32adf45f840eb", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "77f8a0e4bcc8ebd74b689ecf6920963dfa5489c57d8fe354215def74293757bf", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6abee9ee8b76c0a7a750bc6a0e5f78f86ba298312ab554b809f285984eb0114b", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "3e2fc00ceaa1a0e5719164a069b9172c3e8829db1cfa2852400661a141aa3e08", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "3e2fc00ceaa1a0e5719164a069b9172c3e8829db1cfa2852400661a141aa3e08", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "84b55eee88be0a06e6445f7fb3a0d922e63bffef1e1544857415916b40e0fbd1", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "25b6ac2fb4e1bf9c9603ba2892bc499c28f2a0e0962f6c4b3340517dd2638238", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "128354a0f8d2c2f4e45001d0b0dbe5c88f1af680fe5e894cdecf8dbee964536c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "128354a0f8d2c2f4e45001d0b0dbe5c88f1af680fe5e894cdecf8dbee964536c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "76c8b7803e444a17a5c22916126706ede2fd494876e8701e88cbb8ae655ddaea", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "3d9031a4bcb61c4d0fdf9f02371bed19ad57942cf1bce3f8ef399d456c0e52a3", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "139a959ffc1a87e6c9709b5a80fa731851054e8b4cac0a626544aefafff46eb2", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "86242ecc0b5c04d410448c90843dd3be267ee410b57526c73b3680df3e82994d", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bcb4cd069c4ae56051792831a36385722fc95ea63e0f8a78417f9cf479dd7389", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "22567b74d504a0a3b9e6676888224dfac10eb2509bf1bebec05ffb7c8f3c54cc", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "56d6ad0fa3828981feed2211dc236e502eb0c37e7c18b75fb26417ee6e6fd34f", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "85e814ffda72370f0e7f054713811a8cf1a765cba7905001ca64dc1a2f794f97", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "9fcb1d0d499c190314bb4cf9d161a4a20994d867572f9b3c9e523b0b6fec5108", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "520e8e8518c199461e835a7d84635f013e4b665f2a3dc290ea0cdfc8ffeb33dc", "T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "62f927a78bcb0b89e65ded4e2d349143e687f3a947a5827e936dcbefa337a8ae", "T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "8ac53a90eafa8b8d392cf36ab42c797577928258c9205fd1847a1fff64d2be2b", "T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", @@ -18959,21 +18940,21 @@ "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "53511d2b2ccfa47ccc114861cc6c62a8cbd9aa5a1cda65d17488fed9d03c478f", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ca34314cd4ed59516fe95514ca020017739374b19d315c622e901b2a173d4baf", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2091037ff45d876fc3f2c47cbaf4fe67882fb97cb1b07afafbd6e7d7db116278", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "8774222aa7ffaca6d767fa0d323c39ffbf53cdd113bdaa68070b2b0a01375fc2", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "63976f9d8e033d1d72c2a5567f5de2828aadecaa561bca7a797330e29743d773", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "c87d4f66667ee698d8fc1a2f25642e4efd71a8f4a1f6176ce7a9e6067150384a", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "49b82a5d4384741da8cc06d844adfe64c4e9710dc805cfa50f7a31dcfcfdf3b9", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "66cad602f6a8aa960fe0a7c040baaaf2a9be29a8b35663b24e4c6de6ee6fa33b", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "3fe7a318c6c5f6b729151274fc045ef7613bb8a788b31407f4bd1f89f981315d", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "2e61cd8165e9367a2235fc4e1c0699ddf8e928719efd7777069ee5f94c949a2a", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "adfc1326cc4b4df2f316932ec847b261d444f967d959c08e4ba4ef07cac3c2ee", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "8b0d1ac04237051807cc3741007ed7f81a8a6964ff1d7d12ce9da07dd1c51ef8", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "511b3abdc5312161852b65b919d2c533f67cb6f7833f5604e635886bbd640f32", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "4561c7a72fe2512d6db042348f91e41f17df8cf60f41ec530684bf5c7bcd1ef9", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "0a771818ba81808bcf0691ab1e7e60493f460141b4eb3056cd797f9636be66d9", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "1f3ffb6945ea54f4abff98e2531dfb03f17cce71b4278c75859d1df65d52e345", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "c0d9b5df36bd7b52e9cbb369736023c6b9ffd3158d6138ac7f4640d68b6e2697", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "457e4a8083428bcd5085900c2f571067cc75e968ceeddca98ecc44622a2723b0", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "6d4a8d4604f601f80be82f0f038d6caef866c82054949846e4f115e9774faef0", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "770a0b7933a14b5a3b9911bdd25ea5c96e271c9849a29175ee77b96498777862", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "92d844b2ec51ead7b5013343a4ea7a8ef683f8cba3b505938e8ddb7debe465f6", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "6e071435d62a5beba33278d1036957b499309cd989a05ab0a9f28f005520f02e", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "5607540bd05406c5ac9526ee02377b92f30c410db113de3e1fa220c7bf5e1c1e", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "4ca1c66ba5403e14c7141e80505f622f5db40bd1bc38cad4224a74fdfe665d91", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "8b2a3b5e55dfa774d83e8d21142a035330b437e4e94d8beb0878b4ef7cf74b2c", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "0efff3f4184c7488064ccfdddb05a330bbd049137a45def0235be3dbda2e3219", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "96e66eb12925d1c4b31ab1fa7c4afb688e8203edb09ab5624d9a8628a3487a7d", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "c183e117bdbfd04081265528c103136bc22af9854faa0a63b601193c19774c08", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "c08c7e64e166dbf3c122ed6c7181899b3882bc6e03ef6c2a708cee85b9e99450", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "b6dc72bd8a8e9f6d27a2142329a9ccae258221921a4ca5d52deb0dc9063717bd", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "b067955e593bdca92c2fde93ee342a285a63dd14ea1ea36afab87085dd5a02a3", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "846acdbfaa7973769a82ba4b5fbd88d3bc61c02916438f6b1c517b013cbfaef2", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "127c596ccf2bcaabffd7f7942eae69b8ec3ab6691132c846dc8dd9ff32759271", "T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "e516a868683d108e916edee64ae6b6de68cb3bfc6a018aade8483202f7b7c26a", "T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5a87239937a388a1a3ba4e371142e0e488e8270d13b3f4ffde9b3970b9575767", "T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "7464fc1bb6d19d9a3670ff58b04490684f1163ad03426f578654f3817f1554fb", @@ -19317,10 +19298,10 @@ "T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "7daae0a73f578b588d7051e8da25b2121ddc971a550fb2a65a288f770ba23d07", "T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "5594f33aad9731a6575ed40bf8362b03d1a2d39411e88e2b11f7749eb11b9d80", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "4b512d783707893aee5e52e1709fbacf286e14aaa0ac85e7c4786d3952a00af2", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "2d3e0f7eeacf34df053401319a02b9f91da70f8c6a07ad933ea537dc83e11ce9", -"T3T1_en_ethereum-test_definitions.py::test_external_token": "f48184a187991499473244d4872ae4ef5bd7b80adcf71f7a577ab95d8922aa46", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "cbf597551b5c08a3c5d8e777ab3a9df39ec0652813f8c3f2f137d457c7aeb838", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "d7d82df450b05a26c35d639b2dc527fa4a356fa3fb3da8c9c3ab8e1b12ec7bbc", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "78f90c45fc4919f6a2e5da233be493e90b9691e908ccc983c9340850a645cde8", +"T3T1_en_ethereum-test_definitions.py::test_external_token": "e1449f004dd877f4d96ed2636cd0f96b3f154a6240f3f37d4e396060d79839b4", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "eab5a0fb53c4503b745f12fdd2db6f320caf7fd359d6f0bf14b393e0adef9af0", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "8777026a6234d2a6b8d898a15c60901bb6b81630786f31cff975712e7424b1f3", @@ -19334,7 +19315,7 @@ "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "4458d1110986ddcb4fd7aed32c018978cc3221f29151321f7b174f89cc2f273d", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "3a3abfd3700491806152e6589c095f8ff509b0e1fc94e25db12c577f00913572", "T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -19541,14 +19522,14 @@ "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "335a5a9a1b71d445f5528aefcf664689baa2cbc30a7350c5f97a949f4813dda7", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d91852e23f8a089b9f3c38f20fa5bd24a27365f7a47284ea059e6174cf5f0bd2", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "587a9d7ebe9f38edb69ed2ef3ebce72274f13ece62ac77566d5d106d3112b878", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "f50972880eacfadb02252ddd77cf95f75b9bfef68e8d0a5d14da5b6f765d3a31", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "1e10bf06c3f6ee2322a5b18407afcd56ae00cd1050f8d478797f71b0f01c15bb", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d9069164bffce9ffcd768986bd9f6b9091d1a93b42d1031531755f8559accded", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "251a0f02d357a1634ece78931d3d0a5ea5e2ed1db59709420170da3c44b24cfc", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "38d2728275c00a63b2f42d868fc51ff7067268418f123ef62b3fee229c15d489", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "22368230917b79e6ddd9c05c94fb9707829ca3ea344972e71ea9167fdbab512d", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8b7f0f8a29a71df1561aa347caf57410dbb80c4fc5eb15f2c1b08fa8ccaea3f2", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c19ef735f3a4f28b1d151230548f60aabeef4e99a053d1883971fcf1bd2c83f5", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "8fa4c189c7a584755be4e7cd02ffb954040065c00eb9ff15a93c2408ba656ec3", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9ab79f7aa8130f98fa24cc653c883a9a341bcac08ea2de6483bccf28d031907c", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1cd935cab0ba2407a31ccd7105c5e44883ee293d76a68437c3f617d9e2da7cc3", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b746b024274f7008bcb15d5cc1b9df818165b95da8d0e236c21cb7c1c0886e61", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "dedd702fdfd3d7131088bf8b1c2ef803a822f779315fad0a5a75ae7f7b313ff6", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "071494931a255961687a551e6575ec911a532402fff59aaeb5a564837ddd2ba7", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e28016b19934e6c465a342111432fc16dd4edd8b4ad584d502ce74aa34afa170", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "04284464e108c182d2def58391cbd72815ef5747a7baf0564145522b49025061", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "01238e49c12e7419cbddf33b535a57e1d1283cd60f308462b7644e95a03d13d0", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "587a9d7ebe9f38edb69ed2ef3ebce72274f13ece62ac77566d5d106d3112b878", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3c8d138bd4f0485864a6d3c1786a5bcb2267ce85d48e7e6ca1a9425b2b76b748", @@ -19731,7 +19712,7 @@ "T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d5dacbfada3fd814942e9ecf45f949b9471533ee2e8f0abc120afca3eb94a2b9", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "72cfddf432bd7f4a21f7e5598b6670b44e37ffcdd4b8d7e766f7efe2524ee3de", "T3T1_en_test_autolock.py::test_autolock_cancels_ui": "107fef3042f43e6426bdb3fa75e5796c3c543062a63ca1d7800b83ded3c080f3", -"T3T1_en_test_autolock.py::test_autolock_default_value": "cea810ad632407b1e8fbfdac17ccc89b1789895d113997657a42562f06717fc8", +"T3T1_en_test_autolock.py::test_autolock_default_value": "ce7bdbdc4938e4725951ebbc00cfc8f242a3fa430c2206a7905e528acc3b4048", "T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "b2c6e6edbc2a19419193502dc652cd8c0aeeac08c9126905d655e7431422b9b9", "T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "b2c6e6edbc2a19419193502dc652cd8c0aeeac08c9126905d655e7431422b9b9", "T3T1_en_test_basic.py::test_capabilities": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", @@ -19771,15 +19752,15 @@ "T3T1_en_test_language.py::test_switch_from_english_not_silent": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_test_language.py::test_switch_language": "f0e2703955ee26c7d9918a510b6b2744a8d6df0f83e0dcc8031be465dd1b77b4", "T3T1_en_test_language.py::test_translations_renders_on_screen": "386d167297cc9f3f421fd44e816f5643adf63b74bef472730bd2d84a3858fb25", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "6d357a26a304a5626d93418ca9fc40de0acc4d98dc78d7cc16b913be680a3fe4", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "51232e5df87a3709e68602d4a223cd4e910ad3a78114febd53b7e7c1db98b25d", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "32ab92c6244ed354fbe9eacac290fc387cf4cd69ff0321f85b253e4fbb6dbccc", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "cd172368ef0a87f66c26666a8984c1b3b4abe8a740dc588968400587d19cf83b", "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "f94f6a29ef26d7f65da8b654eb2af8fd62d980317f76236fe8fcff757e610c32", "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "34dd7ad1f185a666c2383500eac5825887286b307839995cd8514d2f3aa1349a", "T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "51675a9ea00ff4b3978e8f9d3f162ea6b83c806af17f710d4c0c4dc98941c9a5", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "5c7dfd9d9149551760fc232353de0e85d855f2b0825e7b74c50156bc4c7c2615", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "a9dc0aad862b5d5d3443272a3e7fa5ebc414e7836c4a4d70266e900185af4b0f", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "2fa4cfafc8252551e45da6e53ff029ddf3661639e3108d79920cb2300f85ffea", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "9a1005431cbe80dff773b55dd1daeaae135dda1e450539442b825b113e4f2dd6", From 320fa0612201a6b1e08107dc140cf726b016d0fb Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 5 Jun 2024 13:29:27 +0200 Subject: [PATCH 231/626] fix(core/ui): T3T1: prompt screen for confirm_action [no changelog] --- core/embed/rust/librust_qstr.h | 1 + .../ui/model_mercury/flow/confirm_action.rs | 87 +++++++------------ .../embed/rust/src/ui/model_mercury/layout.rs | 51 +++++++---- core/embed/rust/src/ui/model_tr/layout.rs | 2 + core/embed/rust/src/ui/model_tt/layout.rs | 2 + core/mocks/generated/trezorui2.pyi | 6 ++ core/src/apps/common/passphrase.py | 2 + .../src/trezor/ui/layouts/mercury/__init__.py | 5 ++ core/src/trezor/ui/layouts/tr/__init__.py | 2 + core/src/trezor/ui/layouts/tt/__init__.py | 2 + 10 files changed, 90 insertions(+), 70 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 99bc9e2056..5fc2d0da5b 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -398,6 +398,7 @@ static void _librust_qstrs(void) { MP_QSTR_progress_event; MP_QSTR_prompt; MP_QSTR_prompt_screen; + MP_QSTR_prompt_title; MP_QSTR_qr_title; MP_QSTR_reboot_to_bootloader__just_a_moment; MP_QSTR_reboot_to_bootloader__restart; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index b9d63ee911..394dff2b23 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -141,6 +141,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; // let hold_danger: bool = kwargs.get_or(Qstr::MP_QSTR_hold_danger, false)?; let prompt_screen: bool = kwargs.get_or(Qstr::MP_QSTR_prompt_screen, false)?; + let prompt_title: TString = kwargs.get_or(Qstr::MP_QSTR_prompt_title, title)?; let paragraphs = { let action = action.unwrap_or("".into()); @@ -158,8 +159,27 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err paragraphs.into_paragraphs() }; + new_confirm_action_simple( + paragraphs, + title, + subtitle, + verb_cancel, + prompt_screen.then_some(prompt_title), + hold, + ) +} + +#[inline(never)] +pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static>( + content: T, + title: TString<'static>, + subtitle: Option<TString<'static>>, + verb_cancel: Option<TString<'static>>, + prompt_screen: Option<TString<'static>>, + hold: bool, +) -> Result<Obj, error::Error> { let mut content_intro = - Frame::left_aligned(title, SwipeContent::new(SwipePage::vertical(paragraphs))) + Frame::left_aligned(title, SwipeContent::new(SwipePage::vertical(content))) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) @@ -170,10 +190,13 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err content_intro = content_intro.with_subtitle(subtitle); } - let content_intro = content_intro.map(move |msg| match msg { - FrameMsg::Button(_) => Some(FlowMsg::Info), - _ => None, - }); + let prompt_pages: usize = prompt_screen.is_some().into(); + let content_intro = content_intro + .map(move |msg| match msg { + FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, + }) + .with_pages(move |intro_pages| intro_pages + prompt_pages); let content_menu = if let Some(verb_cancel) = verb_cancel { Frame::left_aligned( @@ -193,11 +216,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - if !prompt_screen && !hold { - let store = flow_store().add(content_intro)?.add(content_menu)?; - let res = SwipeFlow::new(ConfirmActionSimple::Intro, store)?; - Ok(LayoutObj::new(res)?.into()) - } else { + if let Some(prompt_title) = prompt_screen { let (prompt, prompt_action) = if hold { ( PromptScreen::new_hold_to_confirm(), @@ -210,9 +229,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err ) }; - let content_intro = content_intro.with_pages(|p| p + 1); - - let mut content_confirm = Frame::left_aligned(title, SwipeContent::new(prompt)) + let mut content_confirm = Frame::left_aligned(prompt_title, SwipeContent::new(prompt)) .with_footer(prompt_action, None) .with_menu_button() .with_swipe(SwipeDirection::Down, SwipeSettings::default()) @@ -233,47 +250,9 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err .add(content_confirm)?; let res = SwipeFlow::new(ConfirmAction::Intro, store)?; Ok(LayoutObj::new(res)?.into()) - } -} - -pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static>( - content: T, - title: TString<'static>, - subtitle: Option<TString<'static>>, - verb: Option<TString<'static>>, - verb_cancel: Option<TString<'static>>, -) -> Result<Obj, error::Error> { - let mut frame = Frame::left_aligned(title, SwipeContent::new(SwipePage::vertical(content))) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), verb) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()) - .with_swipe(SwipeDirection::Left, SwipeSettings::immediate()) - .with_vertical_pages(); - if let Some(subtitle) = subtitle { - frame = frame.with_subtitle(subtitle) - } - let content_intro = - frame.map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); - - let content_menu = if let Some(verb_cancel) = verb_cancel { - Frame::left_aligned( - "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, verb_cancel), - ) } else { - Frame::left_aligned( - "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), - ) + let store = flow_store().add(content_intro)?.add(content_menu)?; + let res = SwipeFlow::new(ConfirmActionSimple::Intro, store)?; + Ok(LayoutObj::new(res)?.into()) } - .with_cancel_button() - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(move |msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }); - - let store = flow_store().add(content_intro)?.add(content_menu)?; - let res = SwipeFlow::new(ConfirmActionSimple::Intro, store)?; - Ok(LayoutObj::new(res)?.into()) } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 66329789e9..1656dfb83a 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -271,10 +271,6 @@ impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let verb: Option<TString> = kwargs - .get(Qstr::MP_QSTR_verb) - .unwrap_or_else(|_| Obj::const_none()) - .try_into_option()?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let mut ops = OpTextLayout::new(theme::TEXT_NORMAL); @@ -296,8 +292,9 @@ extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *m FormattedText::new(ops).vertically_centered(), title, None, - verb, None, + Some(title), + false, ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -312,6 +309,7 @@ struct ConfirmBlobParams { verb: Option<TString<'static>>, verb_cancel: Option<TString<'static>>, info_button: bool, + prompt: bool, hold: bool, chunkify: bool, text_mono: bool, @@ -324,6 +322,7 @@ impl ConfirmBlobParams { description: Option<TString<'static>>, verb: Option<TString<'static>>, verb_cancel: Option<TString<'static>>, + prompt: bool, hold: bool, ) -> Self { Self { @@ -335,6 +334,7 @@ impl ConfirmBlobParams { verb, verb_cancel, info_button: false, + prompt, hold, chunkify: false, text_mono: true, @@ -388,8 +388,9 @@ impl ConfirmBlobParams { paragraphs, self.title, self.subtitle, - self.verb, self.verb_cancel, + self.prompt.then_some(self.title), + self.hold, ) } } @@ -414,11 +415,20 @@ extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map .try_into_option()?; let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + let prompt_screen: bool = kwargs.get_or(Qstr::MP_QSTR_prompt_screen, true)?; - ConfirmBlobParams::new(title, data, description, verb, verb_cancel, hold) - .with_extra(extra) - .with_chunkify(chunkify) - .into_flow() + ConfirmBlobParams::new( + title, + data, + description, + verb, + verb_cancel, + prompt_screen, + hold, + ) + .with_extra(extra) + .with_chunkify(chunkify) + .into_flow() }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -449,7 +459,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut } .into_paragraphs(); - flow::new_confirm_action_simple(paragraphs, title, None, None, None) + flow::new_confirm_action_simple(paragraphs, title, None, None, None, false) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -457,7 +467,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let _hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; // FIXME + let hold: bool = kwargs.get_or(Qstr::MP_QSTR_hold, false)?; let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let paragraphs = PropsList::new( @@ -471,8 +481,9 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m paragraphs.into_paragraphs(), title, None, - Some(TR::buttons__confirm.into()), None, + hold.then_some(title), + hold, ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -579,7 +590,7 @@ extern "C" fn new_confirm_value(n_args: usize, args: *const Obj, kwargs: *mut Ma let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; let text_mono: bool = kwargs.get_or(Qstr::MP_QSTR_text_mono, true)?; - ConfirmBlobParams::new(title, value, description, verb, verb_cancel, hold) + ConfirmBlobParams::new(title, value, description, verb, verb_cancel, hold, hold) .with_subtitle(subtitle) .with_info_button(info_button) .with_chunkify(chunkify) @@ -900,8 +911,14 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut Paragraph::new(&theme::TEXT_MONO, max_feerate), ]); - // FIXME: hold - flow::new_confirm_action_simple(paragraphs, TR::coinjoin__title.into(), None, None, None) + flow::new_confirm_action_simple( + paragraphs, + TR::coinjoin__title.into(), + None, + None, + Some(TR::coinjoin__title.into()), + true, + ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -1367,6 +1384,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// hold_danger: bool = False, /// reverse: bool = False, /// prompt_screen: bool = False, + /// prompt_title: str | None = None, /// ) -> LayoutObj[UiResult]: /// """Confirm action.""" Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, flow::confirm_action::new_confirm_action).as_obj(), @@ -1399,6 +1417,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// verb_cancel: str | None = None, /// hold: bool = False, /// chunkify: bool = False, + /// prompt_screen: bool = False, /// ) -> LayoutObj[UiResult]: /// """Confirm byte sequence data.""" Qstr::MP_QSTR_confirm_blob => obj_fn_kw!(0, new_confirm_blob).as_obj(), diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index b694452e83..8f4033ffcf 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -1652,6 +1652,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// hold_danger: bool = False, # unused on TR /// reverse: bool = False, /// prompt_screen: bool = False, + /// prompt_title: str | None = None, /// ) -> LayoutObj[UiResult]: /// """Confirm action.""" Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(), @@ -1674,6 +1675,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// verb_cancel: str | None = None, /// hold: bool = False, /// chunkify: bool = False, + /// prompt_screen: bool = False, /// ) -> LayoutObj[UiResult]: /// """Confirm byte sequence data.""" Qstr::MP_QSTR_confirm_blob => obj_fn_kw!(0, new_confirm_blob).as_obj(), diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 873b016c8f..8e638bb3d3 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1721,6 +1721,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// hold_danger: bool = False, /// reverse: bool = False, /// prompt_screen: bool = False, + /// prompt_title: str | None = None, /// ) -> LayoutObj[UiResult]: /// """Confirm action.""" Qstr::MP_QSTR_confirm_action => obj_fn_kw!(0, new_confirm_action).as_obj(), @@ -1753,6 +1754,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// verb_cancel: str | None = None, /// hold: bool = False, /// chunkify: bool = False, + /// prompt_screen: bool = False, /// ) -> LayoutObj[UiResult]: /// """Confirm byte sequence data.""" Qstr::MP_QSTR_confirm_blob => obj_fn_kw!(0, new_confirm_blob).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index f58b64cce9..e680d2a87a 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -85,6 +85,7 @@ def confirm_action( hold_danger: bool = False, reverse: bool = False, prompt_screen: bool = False, + prompt_title: str | None = None, ) -> LayoutObj[UiResult]: """Confirm action.""" @@ -120,6 +121,7 @@ def confirm_blob( verb_cancel: str | None = None, hold: bool = False, chunkify: bool = False, + prompt_screen: bool = False, ) -> LayoutObj[UiResult]: """Confirm byte sequence data.""" @@ -632,6 +634,7 @@ def confirm_action( hold_danger: bool = False, # unused on TR reverse: bool = False, prompt_screen: bool = False, + prompt_title: str | None = None, ) -> LayoutObj[UiResult]: """Confirm action.""" @@ -656,6 +659,7 @@ def confirm_blob( verb_cancel: str | None = None, hold: bool = False, chunkify: bool = False, + prompt_screen: bool = False, ) -> LayoutObj[UiResult]: """Confirm byte sequence data.""" @@ -1160,6 +1164,7 @@ def confirm_action( hold_danger: bool = False, reverse: bool = False, prompt_screen: bool = False, + prompt_title: str | None = None, ) -> LayoutObj[UiResult]: """Confirm action.""" @@ -1195,6 +1200,7 @@ def confirm_blob( verb_cancel: str | None = None, hold: bool = False, chunkify: bool = False, + prompt_screen: bool = False, ) -> LayoutObj[UiResult]: """Confirm byte sequence data.""" diff --git a/core/src/apps/common/passphrase.py b/core/src/apps/common/passphrase.py index b09ed92c03..0d57cd1785 100644 --- a/core/src/apps/common/passphrase.py +++ b/core/src/apps/common/passphrase.py @@ -63,6 +63,8 @@ async def _request_on_host() -> str: "passphrase_host1_hidden", TR.passphrase__hidden_wallet, description=TR.passphrase__from_host_not_shown, + prompt_screen=True, + prompt_title=TR.passphrase__access_hidden_wallet, ) else: await confirm_action( diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 4036cbf907..ad8f5c6c8f 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -296,6 +296,7 @@ async def confirm_action( exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, prompt_screen: bool = False, + prompt_title: str | None = None, ) -> None: if description is not None and description_param is not None: description = description.format(description_param) @@ -314,6 +315,7 @@ async def confirm_action( hold_danger=hold_danger, reverse=reverse, prompt_screen=prompt_screen, + prompt_title=prompt_title or title, ) ), br_type, @@ -727,6 +729,7 @@ async def confirm_blob( br_code: ButtonRequestType = BR_TYPE_OTHER, ask_pagination: bool = False, chunkify: bool = False, + prompt_screen: bool = True, ) -> None: layout = RustLayout( trezorui2.confirm_blob( @@ -738,6 +741,7 @@ async def confirm_blob( verb=verb, verb_cancel=verb_cancel, chunkify=chunkify, + prompt_screen=prompt_screen, ) ) @@ -987,6 +991,7 @@ async def confirm_ethereum_tx( recipient, verb=TR.buttons__continue, chunkify=chunkify, + prompt_screen=False, ) try: diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 8e72314d99..edebfa046e 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -387,6 +387,7 @@ def confirm_action( exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, prompt_screen: bool = False, + prompt_title: str | None = None, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg if description is not None and description_param is not None: @@ -860,6 +861,7 @@ def confirm_blob( br_code: ButtonRequestType = BR_TYPE_OTHER, ask_pagination: bool = False, chunkify: bool = False, + prompt_screen: bool = True, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg layout = RustLayout( diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 6d15501d54..48fef1b043 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -302,6 +302,7 @@ def confirm_action( exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_TYPE_OTHER, prompt_screen: bool = False, + prompt_title: str | None = None, ) -> Awaitable[None]: if description is not None and description_param is not None: description = description.format(description_param) @@ -825,6 +826,7 @@ def confirm_blob( br_code: ButtonRequestType = BR_TYPE_OTHER, ask_pagination: bool = False, chunkify: bool = False, + prompt_screen: bool = True, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg layout = RustLayout( From b64c8ef6a29643eb25bee45e24fa84862f6697a2 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 5 Jun 2024 13:31:21 +0200 Subject: [PATCH 232/626] perf(core/ui): remove Child from T3T1 Frame [no changelog] --- .../src/ui/model_mercury/component/frame.rs | 53 ++++++++----------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 14005fd891..a2f80b6884 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -2,11 +2,10 @@ use crate::{ strutil::TString, ui::{ component::{ - base::ComponentExt, label::Label, swipe_detect::{SwipeConfig, SwipeSettings}, text::TextStyle, - Child, Component, Event, + Component, Event, Event::Swipe, EventCtx, SwipeDetect, SwipeDirection, }, @@ -28,11 +27,11 @@ const BUTTON_EXPAND_BORDER: i16 = 32; pub struct Frame<T> { border: Insets, bounds: Rect, - title: Child<Label<'static>>, - subtitle: Option<Child<Label<'static>>>, - button: Option<Child<Button>>, + title: Label<'static>, + subtitle: Option<Label<'static>>, + button: Option<Button>, button_msg: CancelInfoConfirmMsg, - content: Child<T>, + content: T, footer: Option<Footer<'static>>, swipe: SwipeConfig, internal_page_cnt: usize, @@ -51,15 +50,13 @@ where { pub const fn new(alignment: Alignment, title: TString<'static>, content: T) -> Self { Self { - title: Child::new( - Label::new(title, alignment, theme::label_title_main()).vertically_centered(), - ), + title: Label::new(title, alignment, theme::label_title_main()).vertically_centered(), bounds: Rect::zero(), subtitle: None, border: theme::borders(), button: None, button_msg: CancelInfoConfirmMsg::Cancelled, - content: Child::new(content), + content, footer: None, swipe: SwipeConfig::new(), internal_page_cnt: 1, @@ -83,36 +80,34 @@ where Self::new(Alignment::Center, title, content) } + #[inline(never)] pub const fn with_border(mut self, border: Insets) -> Self { self.border = border; self } pub fn title_styled(mut self, style: TextStyle) -> Self { - self.title = Child::new(self.title.into_inner().styled(style)); + self.title = self.title.styled(style); self } #[inline(never)] pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { let style = theme::TEXT_SUB_GREY; - self.title = Child::new(self.title.into_inner().top_aligned()); - self.subtitle = Some(Child::new(Label::new( - subtitle, - self.title.inner().alignment(), - style, - ))); + self.title = self.title.top_aligned(); + self.subtitle = Some(Label::new(subtitle, self.title.alignment(), style)); self } + #[inline(never)] fn with_button(mut self, icon: Icon, msg: CancelInfoConfirmMsg, enabled: bool) -> Self { let touch_area = Insets::uniform(BUTTON_EXPAND_BORDER); - self.button = Some(Child::new( + self.button = Some( Button::with_icon(icon) .with_expanded_touch_area(touch_area) .initially_enabled(enabled) .styled(theme::button_default()), - )); + ); self.button_msg = msg; self } @@ -132,11 +127,12 @@ where pub fn button_styled(mut self, style: ButtonStyleSheet) -> Self { if self.button.is_some() { - self.button = Some(Child::new(self.button.unwrap().into_inner().styled(style))); + self.button = Some(self.button.unwrap().styled(style)); } self } + #[inline(never)] pub fn with_footer( mut self, instruction: TString<'static>, @@ -156,27 +152,24 @@ where } pub fn inner(&self) -> &T { - self.content.inner() + &self.content } pub fn update_title(&mut self, ctx: &mut EventCtx, new_title: TString<'static>) { - self.title.mutate(ctx, |ctx, t| { - t.set_text(new_title); - t.request_complete_repaint(ctx) - }) + self.title.set_text(new_title); + ctx.request_paint(); } pub fn update_content<F, R>(&mut self, ctx: &mut EventCtx, update_fn: F) -> R where F: Fn(&mut EventCtx, &mut T) -> R, { - self.content.mutate(ctx, |ctx, c| { - let res = update_fn(ctx, c); - c.request_complete_repaint(ctx); - res - }) + let res = update_fn(ctx, &mut self.content); + ctx.request_paint(); + res } + #[inline(never)] pub fn with_swipe(mut self, dir: SwipeDirection, settings: SwipeSettings) -> Self { self.footer = self.footer.map(|f| match dir { SwipeDirection::Up => f.with_swipe_up(), From b567d1573210529f3a5e825ed8a476fba11956f7 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 5 Jun 2024 13:36:06 +0200 Subject: [PATCH 233/626] perf(core/ui): T3T1: reduce ParagraphSources to save flash [no changelog] --- .../embed/rust/src/ui/model_mercury/layout.rs | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 1656dfb83a..16111d4dfb 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -637,12 +637,13 @@ extern "C" fn new_confirm_modify_output(n_args: usize, args: *const Obj, kwargs: TR::modify_amount__increase_amount }; - let paragraphs = Paragraphs::new([ + let paragraphs = ParagraphVecShort::from_iter([ Paragraph::new(&theme::TEXT_NORMAL, description), Paragraph::new(&theme::TEXT_MONO, amount_change), Paragraph::new(&theme::TEXT_NORMAL, TR::modify_amount__new_amount), Paragraph::new(&theme::TEXT_MONO, amount_new), - ]); + ]) + .into_paragraphs(); let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(TR::modify_amount__title.into(), paragraphs) @@ -680,12 +681,13 @@ extern "C" fn new_confirm_modify_fee(n_args: usize, args: *const Obj, kwargs: *m ), }; - let paragraphs = Paragraphs::new([ + let paragraphs = ParagraphVecShort::from_iter([ Paragraph::new(&theme::TEXT_NORMAL, description), Paragraph::new(&theme::TEXT_MONO, change), Paragraph::new(&theme::TEXT_NORMAL, total_label), Paragraph::new(&theme::TEXT_MONO, total_fee_new), - ]); + ]) + .into_paragraphs(); let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(title, paragraphs) @@ -763,10 +765,11 @@ extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; let action: Option<TString> = kwargs.get(Qstr::MP_QSTR_button)?.try_into_option()?; - let content = Paragraphs::new([ + let content = ParagraphVecShort::from_iter([ Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description), Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, value), - ]); + ]) + .into_paragraphs(); let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(title, SwipeContent::new(content)) .with_warning_button() @@ -814,10 +817,11 @@ extern "C" fn new_show_mismatch(n_args: usize, args: *const Obj, kwargs: *mut Ma let url: TString = TR::addr_mismatch__support_url.into(); let button: TString = TR::buttons__quit.into(); - let paragraphs = Paragraphs::new([ + let paragraphs = ParagraphVecShort::from_iter([ Paragraph::new(&theme::TEXT_NORMAL, description).centered(), Paragraph::new(&theme::TEXT_DEMIBOLD, url).centered(), - ]); + ]) + .into_paragraphs(); let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(title, SwipeContent::new(paragraphs)) @@ -904,12 +908,13 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut let max_rounds: TString = kwargs.get(Qstr::MP_QSTR_max_rounds)?.try_into()?; let max_feerate: TString = kwargs.get(Qstr::MP_QSTR_max_feerate)?.try_into()?; - let paragraphs = Paragraphs::new([ + let paragraphs = ParagraphVecShort::from_iter([ Paragraph::new(&theme::TEXT_NORMAL, TR::coinjoin__max_rounds), Paragraph::new(&theme::TEXT_MONO, max_rounds), Paragraph::new(&theme::TEXT_NORMAL, TR::coinjoin__max_mining_fee), Paragraph::new(&theme::TEXT_MONO, max_feerate), - ]); + ]) + .into_paragraphs(); flow::new_confirm_action_simple( paragraphs, From 09fc0ebf3e91e2b1146cc8a6e5c6c4b735f4becb Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 5 Jun 2024 10:52:50 +0200 Subject: [PATCH 234/626] fix(core): add missing tap to confirm screens to mercury [no changelog] --- core/src/apps/base.py | 1 + core/src/apps/management/apply_settings.py | 9 +++++++++ core/src/apps/management/authenticate_device.py | 1 + core/src/apps/management/change_language.py | 1 + core/src/apps/management/change_wipe_code.py | 1 + .../src/apps/management/get_next_u2f_counter.py | 1 + .../src/apps/management/reboot_to_bootloader.py | 1 + core/src/apps/management/sd_protect.py | 4 +++- core/src/apps/management/set_u2f_counter.py | 1 + core/src/apps/misc/cipher_key_value.py | 8 +++++++- core/src/apps/misc/get_entropy.py | 1 + core/src/apps/monero/layout.py | 4 ++++ core/src/apps/stellar/layout.py | 1 + core/src/trezor/ui/layouts/mercury/fido.py | 1 + tests/click_tests/common.py | 11 +++++++++++ tests/click_tests/test_autolock.py | 4 +++- tests/click_tests/test_pin.py | 17 +++++++++++++++-- 17 files changed, 62 insertions(+), 5 deletions(-) diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 36de3a71e5..02621f252a 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -328,6 +328,7 @@ async def handle_UnlockPath(msg: UnlockPath) -> protobuf.MessageType: title="Coinjoin", description=TR.coinjoin__access_account, verb=TR.buttons__access, + prompt_screen=True, ) wire_types = (MessageType.GetAddress, MessageType.GetPublicKey, MessageType.SignTx) diff --git a/core/src/apps/management/apply_settings.py b/core/src/apps/management/apply_settings.py index 0ce4ae6a77..1f06cd1e18 100644 --- a/core/src/apps/management/apply_settings.py +++ b/core/src/apps/management/apply_settings.py @@ -155,6 +155,7 @@ async def _require_confirm_change_passphrase(use: bool) -> None: description=description, verb=verb, br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) @@ -171,6 +172,7 @@ async def _require_confirm_change_passphrase_source( TR.passphrase__title_source, description=description, br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) @@ -192,6 +194,7 @@ async def _require_confirm_change_display_rotation(rotation: int) -> None: description=TR.rotation__change_template, description_param=label, br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) @@ -211,6 +214,7 @@ async def _require_confirm_change_autolock_delay(delay_ms: int) -> None: description=TR.auto_lock__change_template, description_param=format_duration_ms(delay_ms, unit_plurals), br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) @@ -223,6 +227,7 @@ async def _require_confirm_safety_checks(level: SafetyCheckLevel) -> None: TR.safety_checks__title, description=TR.safety_checks__enforce_strict, br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) elif level in (SafetyCheckLevel.PromptAlways, SafetyCheckLevel.PromptTemporarily): description = ( @@ -239,6 +244,7 @@ async def _require_confirm_safety_checks(level: SafetyCheckLevel) -> None: verb=TR.buttons__hold_to_confirm, reverse=True, br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) else: raise ValueError # enum value out of range @@ -253,6 +259,7 @@ async def _require_confirm_experimental_features(enable: bool) -> None: TR.experimental_mode__enable, reverse=True, br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) @@ -263,6 +270,7 @@ async def _require_confirm_hide_passphrase_from_host(enable: bool) -> None: TR.passphrase__title_hide, description=TR.passphrase__hide, br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) @@ -275,4 +283,5 @@ async def _require_confirm_haptic_feedback(enable: bool) -> None: TR.haptic_feedback__enable if enable else TR.haptic_feedback__disable, subtitle=TR.haptic_feedback__subtitle, br_code=BRT_PROTECT_CALL, + prompt_screen=True, ) diff --git a/core/src/apps/management/authenticate_device.py b/core/src/apps/management/authenticate_device.py index 2ea2f9d1fb..d1c2fbe6e9 100644 --- a/core/src/apps/management/authenticate_device.py +++ b/core/src/apps/management/authenticate_device.py @@ -25,6 +25,7 @@ async def authenticate_device(msg: AuthenticateDevice) -> AuthenticityProof: TR.authenticate__header, description=TR.authenticate__confirm_template.format(utils.MODEL_FULL_NAME), verb=TR.buttons__allow, + prompt_screen=True, ) header = b"AuthenticateDevice:" diff --git a/core/src/apps/management/change_language.py b/core/src/apps/management/change_language.py index d942e8c09a..88c8dcbf4d 100644 --- a/core/src/apps/management/change_language.py +++ b/core/src/apps/management/change_language.py @@ -169,6 +169,7 @@ async def _require_confirm_change_language( description=TR.language__change_to_template.format(lang), verb="OK", # going for an international word, so it does not need translations br_code=ButtonRequestType.ProtectCall, + prompt_screen=True, ) diff --git a/core/src/apps/management/change_wipe_code.py b/core/src/apps/management/change_wipe_code.py index 7516f665e2..b5256fd459 100644 --- a/core/src/apps/management/change_wipe_code.py +++ b/core/src/apps/management/change_wipe_code.py @@ -68,6 +68,7 @@ def _require_confirm_action( TR.wipe_code__title_settings, description=TR.wipe_code__turn_off, verb=TR.buttons__turn_off, + prompt_screen=True, ) if not msg.remove and has_wipe_code: diff --git a/core/src/apps/management/get_next_u2f_counter.py b/core/src/apps/management/get_next_u2f_counter.py index e97536df32..90035d4a74 100644 --- a/core/src/apps/management/get_next_u2f_counter.py +++ b/core/src/apps/management/get_next_u2f_counter.py @@ -20,6 +20,7 @@ async def get_next_u2f_counter(msg: GetNextU2FCounter) -> NextU2FCounter: TR.u2f__title_get, description=TR.u2f__get, br_code=ButtonRequestType.ProtectCall, + prompt_screen=True, ) return NextU2FCounter(u2f_counter=storage_device.next_u2f_counter()) diff --git a/core/src/apps/management/reboot_to_bootloader.py b/core/src/apps/management/reboot_to_bootloader.py index b1fa64297d..85596c0268 100644 --- a/core/src/apps/management/reboot_to_bootloader.py +++ b/core/src/apps/management/reboot_to_bootloader.py @@ -83,6 +83,7 @@ async def reboot_to_bootloader(msg: RebootToBootloader) -> NoReturn: TR.reboot_to_bootloader__title, TR.reboot_to_bootloader__restart, verb=TR.buttons__restart, + prompt_screen=True, ) boot_command = BootCommand.STOP_AND_WAIT boot_args = None diff --git a/core/src/apps/management/sd_protect.py b/core/src/apps/management/sd_protect.py index b21a818070..74717fea02 100644 --- a/core/src/apps/management/sd_protect.py +++ b/core/src/apps/management/sd_protect.py @@ -171,4 +171,6 @@ def require_confirm_sd_protect(msg: SdProtect) -> Awaitable[None]: else: raise ProcessError("Unknown operation") - return confirm_action("set_sd", TR.sd_card__title, description=text) + return confirm_action( + "set_sd", TR.sd_card__title, description=text, prompt_screen=True + ) diff --git a/core/src/apps/management/set_u2f_counter.py b/core/src/apps/management/set_u2f_counter.py index 19959f8752..85d32085ae 100644 --- a/core/src/apps/management/set_u2f_counter.py +++ b/core/src/apps/management/set_u2f_counter.py @@ -23,6 +23,7 @@ async def set_u2f_counter(msg: SetU2FCounter) -> Success: description_param=str(msg.u2f_counter), verb=TR.buttons__set, br_code=ButtonRequestType.ProtectCall, + prompt_screen=True, ) storage_device.set_u2f_counter(msg.u2f_counter) diff --git a/core/src/apps/misc/cipher_key_value.py b/core/src/apps/misc/cipher_key_value.py index 823f863161..c4f130ee60 100644 --- a/core/src/apps/misc/cipher_key_value.py +++ b/core/src/apps/misc/cipher_key_value.py @@ -36,7 +36,13 @@ async def cipher_key_value(msg: CipherKeyValue) -> CipheredKeyValue: title = TR.misc__decrypt_value verb = TR.buttons__confirm - await confirm_action("cipher_key_value", title, description=msg.key, verb=verb) + await confirm_action( + "cipher_key_value", + title, + description=msg.key, + verb=verb, + prompt_screen=True, + ) node = keychain.derive(msg.address_n) diff --git a/core/src/apps/misc/get_entropy.py b/core/src/apps/misc/get_entropy.py index dae1c238a7..b3b654268d 100644 --- a/core/src/apps/misc/get_entropy.py +++ b/core/src/apps/misc/get_entropy.py @@ -17,6 +17,7 @@ async def get_entropy(msg: GetEntropy) -> Entropy: TR.entropy__send, TR.words__know_what_your_doing, br_code=ButtonRequestType.ProtectCall, + prompt_screen=True, ) size = min(msg.size, 1024) diff --git a/core/src/apps/monero/layout.py b/core/src/apps/monero/layout.py index bf37b473f6..127c1eb986 100644 --- a/core/src/apps/monero/layout.py +++ b/core/src/apps/monero/layout.py @@ -65,6 +65,7 @@ async def require_confirm_watchkey() -> None: TR.monero__confirm_export, description=TR.monero__wanna_export_watchkey, br_code=BRT_SignTx, + prompt_screen=True, ) @@ -74,6 +75,7 @@ async def require_confirm_keyimage_sync() -> None: TR.monero__confirm_ki_sync, description=TR.monero__wanna_sync_key_images, br_code=BRT_SignTx, + prompt_screen=True, ) @@ -83,6 +85,7 @@ async def require_confirm_live_refresh() -> None: TR.monero__confirm_refresh, description=TR.monero__wanna_start_refresh, br_code=BRT_SignTx, + prompt_screen=True, ) @@ -95,6 +98,7 @@ async def require_confirm_tx_key(export_key: bool = False) -> None: TR.monero__confirm_export, description=description, br_code=BRT_SignTx, + prompt_screen=True, ) diff --git a/core/src/apps/stellar/layout.py b/core/src/apps/stellar/layout.py index 72f8c206b6..3d3a5107d0 100644 --- a/core/src/apps/stellar/layout.py +++ b/core/src/apps/stellar/layout.py @@ -89,6 +89,7 @@ async def require_confirm_memo(memo_type: StellarMemoType, memo_text: str) -> No TR.stellar__no_memo_set, TR.stellar__exchanges_require_memo, br_code=ButtonRequestType.ConfirmOutput, + prompt_screen=True, ) await layouts.confirm_blob( diff --git a/core/src/trezor/ui/layouts/mercury/fido.py b/core/src/trezor/ui/layouts/mercury/fido.py index 390fb4b7e0..b7bcacbd54 100644 --- a/core/src/trezor/ui/layouts/mercury/fido.py +++ b/core/src/trezor/ui/layouts/mercury/fido.py @@ -84,6 +84,7 @@ async def confirm_fido_reset() -> bool: action=TR.fido__erase_credentials, description=TR.words__really_wanna, reverse=True, + prompt_screen=True, ) ) return (await confirm) is trezorui2.CONFIRMED diff --git a/tests/click_tests/common.py b/tests/click_tests/common.py index 781cfb47bf..e85fc2b956 100644 --- a/tests/click_tests/common.py +++ b/tests/click_tests/common.py @@ -56,6 +56,17 @@ def go_next(debug: "DebugLink", wait: bool = False) -> "LayoutContent" | None: raise RuntimeError("Unknown model") +def tap_to_confirm(debug: "DebugLink", wait: bool = False) -> "LayoutContent" | None: + if debug.model in (models.T2T1,): + return debug.read_layout() # type: ignore + elif debug.model in (models.T2B1,): + return debug.read_layout() # type: ignore + elif debug.model in (models.T3T1,): + return debug.click(buttons.TAP_TO_CONFIRM, wait=wait) + else: + raise RuntimeError("Unknown model") + + def go_back( debug: "DebugLink", wait: bool = False, r_middle: bool = False ) -> "LayoutContent" | None: diff --git a/tests/click_tests/test_autolock.py b/tests/click_tests/test_autolock.py index 14e81ba39e..e2ec5729d9 100644 --- a/tests/click_tests/test_autolock.py +++ b/tests/click_tests/test_autolock.py @@ -29,7 +29,7 @@ from ..device_tests.bitcoin.payment_req import make_coinjoin_request from ..tx_cache import TxCache from . import recovery -from .common import go_next, unlock_gesture +from .common import go_next, tap_to_confirm, unlock_gesture if TYPE_CHECKING: from trezorlib.debuglink import DebugLink, LayoutContent @@ -70,6 +70,8 @@ def set_autolock_delay(device_handler: "BackgroundDeviceHandler", delay_ms: int) ) layout = go_next(debug, wait=True) + if debug.model in (models.T3T1,): + layout = tap_to_confirm(debug, wait=True) assert layout.main_component() == "Homescreen" assert device_handler.result() == "Settings applied" diff --git a/tests/click_tests/test_pin.py b/tests/click_tests/test_pin.py index 48845c50fc..410cf43e5d 100644 --- a/tests/click_tests/test_pin.py +++ b/tests/click_tests/test_pin.py @@ -74,6 +74,7 @@ class Situation(Enum): PIN_SETUP = 2 PIN_CHANGE = 3 WIPE_CODE_SETUP = 4 + PIN_INPUT_CANCEL = 5 @contextmanager @@ -88,10 +89,16 @@ def prepare( # without reseeding "again", the results are still random. debug.reseed(0) + tap = False + # Setup according to the wanted situation if situation == Situation.PIN_INPUT: # Any action triggering the PIN dialogue device_handler.run(device.apply_settings, auto_lock_delay_ms=300_000) # type: ignore + tap = True + if situation == Situation.PIN_INPUT_CANCEL: + # Any action triggering the PIN dialogue + device_handler.run(device.apply_settings, auto_lock_delay_ms=300_000) # type: ignore elif situation == Situation.PIN_SETUP: # Set new PIN device_handler.run(device.change_pin) # type: ignore @@ -130,7 +137,13 @@ def prepare( debug.wait_layout() _assert_pin_entry(debug) yield debug - go_next(debug) + + if debug.model in (models.T3T1,) and tap: + go_next(debug, wait=True) + debug.click(buttons.TAP_TO_CONFIRM) + else: + go_next(debug) + device_handler.result() @@ -290,7 +303,7 @@ def test_pin_incorrect(device_handler: "BackgroundDeviceHandler"): @pytest.mark.skip_t2b1("TODO: will we support cancelling on T2B1?") @pytest.mark.setup_client(pin=PIN4) def test_pin_cancel(device_handler: "BackgroundDeviceHandler"): - with PIN_CANCELLED, prepare(device_handler) as debug: + with PIN_CANCELLED, prepare(device_handler, Situation.PIN_INPUT_CANCEL) as debug: _input_pin(debug, PIN4) _see_pin(debug) _delete_pin(debug, len(PIN4)) From 6911870654ffd5dd2799e64a0881ca61b6125dd3 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 5 Jun 2024 20:33:14 +0200 Subject: [PATCH 235/626] fix(core/ui): T3T1: ethereum signtx hold [no changelog] --- .../ui/model_mercury/flow/confirm_action.rs | 36 ++++++++++--------- .../embed/rust/src/ui/model_mercury/layout.rs | 25 +++++++------ 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 394dff2b23..72f001816a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -63,6 +63,7 @@ impl FlowState for ConfirmAction { Decision::Goto(ConfirmAction::Intro, SwipeDirection::Right) } (ConfirmAction::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + (ConfirmAction::Menu, FlowMsg::Choice(1)) => Decision::Return(FlowMsg::Info), (ConfirmAction::Confirm, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Confirmed), (ConfirmAction::Confirm, FlowMsg::Info) => { Decision::Goto(ConfirmAction::Menu, SwipeDirection::Left) @@ -97,6 +98,7 @@ impl FlowState for ConfirmActionSimple { Decision::Goto(ConfirmActionSimple::Intro, SwipeDirection::Right) } (ConfirmActionSimple::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + (ConfirmActionSimple::Menu, FlowMsg::Choice(1)) => Decision::Return(FlowMsg::Info), _ => Decision::Nothing, } } @@ -166,6 +168,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err verb_cancel, prompt_screen.then_some(prompt_title), hold, + false, ) } @@ -177,6 +180,7 @@ pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static> verb_cancel: Option<TString<'static>>, prompt_screen: Option<TString<'static>>, hold: bool, + info: bool, ) -> Result<Obj, error::Error> { let mut content_intro = Frame::left_aligned(title, SwipeContent::new(SwipePage::vertical(content))) @@ -198,23 +202,23 @@ pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static> }) .with_pages(move |intro_pages| intro_pages + prompt_pages); - let content_menu = if let Some(verb_cancel) = verb_cancel { - Frame::left_aligned( - "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, verb_cancel), - ) - } else { - Frame::left_aligned( - "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), - ) + let mut menu_choices = VerticalMenu::empty().danger( + theme::ICON_CANCEL, + verb_cancel.unwrap_or(TR::buttons__cancel.into()), + ); + if info { + menu_choices = menu_choices.item( + theme::ICON_CHEVRON_RIGHT, + TR::words__title_information.into(), + ); } - .with_cancel_button() - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(move |msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(_)) => Some(FlowMsg::Choice(0)), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }); + let content_menu = Frame::left_aligned("".into(), menu_choices) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); if let Some(prompt_title) = prompt_screen { let (prompt, prompt_action) = if hold { diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 16111d4dfb..2b821713bf 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -295,6 +295,7 @@ extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *m None, Some(title), false, + false, ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -391,6 +392,7 @@ impl ConfirmBlobParams { self.verb_cancel, self.prompt.then_some(self.title), self.hold, + self.info_button, ) } } @@ -459,7 +461,7 @@ extern "C" fn new_confirm_address(n_args: usize, args: *const Obj, kwargs: *mut } .into_paragraphs(); - flow::new_confirm_action_simple(paragraphs, title, None, None, None, false) + flow::new_confirm_action_simple(paragraphs, title, None, None, None, false, false) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -484,6 +486,7 @@ extern "C" fn new_confirm_properties(n_args: usize, args: *const Obj, kwargs: *m None, hold.then_some(title), hold, + false, ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -613,14 +616,15 @@ extern "C" fn new_confirm_total(n_args: usize, args: *const Obj, kwargs: *mut Ma paragraphs.add(Paragraph::new(&theme::TEXT_MONO, value)); } - // FIXME: hold - let obj = LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned(title, SwipeContent::new(paragraphs.into_paragraphs())) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()), - ))?; - Ok(obj.into()) + flow::new_confirm_action_simple( + paragraphs.into_paragraphs(), + title, + None, + None, + Some(title), + true, + true, + ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } @@ -923,6 +927,7 @@ extern "C" fn new_confirm_coinjoin(n_args: usize, args: *const Obj, kwargs: *mut None, Some(TR::coinjoin__title.into()), true, + false, ) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1083,7 +1088,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut } extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { + let block = move |_args: &[Obj], _kwargs: &Map| { let obj = LayoutObj::new(Frame::left_aligned( TR::recovery__num_of_words.into(), SelectWordCount::new(), From aa0b353511f2012c49e11b4c616c0379a90df305 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 5 Jun 2024 21:14:30 +0200 Subject: [PATCH 236/626] chore(core): T3T1: update fixtures.json --- tests/ui_tests/fixtures.json | 2834 +++++++++++++++++----------------- 1 file changed, 1417 insertions(+), 1417 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 536712b6be..7883f11e86 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15590,55 +15590,55 @@ "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cf5b36770a72897133375b53da0e75af30020527805559fec6dbb0f23f36812c", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ef15c6815c5e53c98e500b8ec5d68b4b1cf852a0260f6e9eb9ae9af368bef4b8", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e7101bd80469df6762a01eef2d5112b408ac6f9ac859ad62335db656d5071c92", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6331aeab9c7bb97d1bc218f6782b5317054c8595e2fc9950b7ffdf6f4004cab0", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a6bf69b77418064b43795e13034fbcabb445d3a0a5533a10fe37e2429c2ee6a6", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "10a0896d4555c03aa5bb3a4dcfdc8f320955605dcae92fcbd98d39f7598f6e18", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f7a72381a602a235c75087034c33cb1f1a0a95b6b9b9a8689e3ea2f6db6add49", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "e584f4934f8ef515c4d41f773670386e90b6dcc20bf22b1e5114a41faaca95b6", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f6862c4fdc00878f9c14339896139094701c34a89f4f9c32d4e03767540de60e", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "d2423bdeb2923a2c06b59bf114a6219e4b918d7d3c061750985531b3f6ae8329", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "5f36a5d9d88476467ba31078701529dfdcdea2344944a8952e69dbfec238598f", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1cc207d1d95529d71febcf656c29e54272aa67d4853291e7bda746b0e01234c5", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "12a6032073d94c4f1be1176f087faea05d4393e2fce5d889375b7c84891de3d3", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6b80f5fe9beede5b34269bd8747d86e93c11de489758f35eac92d8a6ce09a786", -"T3T1_en_test_lock.py::test_hold_to_lock": "1665b2e4984bcc7a2f307a89789dc2d6c8db9c04a5906729f769e0e8b76da04c", -"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "2f921ff47fb723b9d9b9634df1f1761c64e37a6924c02717b38ced73036fbf5a", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "391d74473f3c1197f72e0705a90cc2ea2b3f02e21050b7ed51d7f1af6fabe2f7", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "924b1add41dbe5819d1e9b02307ce6c0064f4560f95d3521a950836490ac6895", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "37e986cb461037359ef558a540ffa5cea99e21ad97b5e8ddd8d4bb67fed3a939", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "fff6517511e3a422d8774700766f263322580b63f573f0092f050754465ccf5f", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9c21931c2cef2710d4355f2b797e868e4ff90e53a20106eab7870d1e0d9ca2f3", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "d6827d2d0afdd0bb80fba3bae5ba19c85f181f101e002a08e0035f00c7e59f0e", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ff4d85b759ff3fafce7067f0badb8b1626b824e725db1d9a4fe25737ba8c20af", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "69b3469c5d96675e8556cafff55f626e7aae92bb66f5e73d236fe3d5e9ff72b7", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "103503c1ec9e516ae9ed65b6efbce37c5de8de6d6321e724e2628a66517606d3", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "69b3469c5d96675e8556cafff55f626e7aae92bb66f5e73d236fe3d5e9ff72b7", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "a289a5c48ae558399168ed6f54e87118c78ae6f320f4c8acc75f8e8ae27d620f", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "48a9852bc6dfe718ae34b14b05272a6699912aef223e89b3decf498a0bad40e2", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "9b20baa0c320001cd29949cadeaf493833f8e46b3842bb428ce05e3491efe288", -"T3T1_en_test_pin.py::test_pin_cancel": "bb4efc51df54d61f2ddfb15018f72c597d3df78e7a973db0abf6392ab4611bb2", -"T3T1_en_test_pin.py::test_pin_change": "6b231edfbdf58b01ceae46d96b641952f6e2b1a0bd1490a91516e23f1e4a61f0", -"T3T1_en_test_pin.py::test_pin_delete_hold": "8b7d3ab9f42f55a2c0dd7b0514a082b308606c8311ef830b144f662949b784f0", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "8d7c5a0b9985b4e002bde6a9412e0bb9fd475361c10655d2dd476236eba701e5", -"T3T1_en_test_pin.py::test_pin_incorrect": "aa094244afad9ccac7f72456cc6d6867d810a38df8f11518391b05d09518300c", -"T3T1_en_test_pin.py::test_pin_long": "79b0f19fa703f3c9e969381c0c05feb23a17d86188ae343ec570cd206ccbc1dc", -"T3T1_en_test_pin.py::test_pin_long_delete": "b9a1e44a216c4b2fa5d3015efcfa8f24375b55067754734f32ce193d98cb21a3", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "853017e310be9e4f8277a092924eab9bcbd0cc5586156d88ffe8158fe8bf412c", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "4d817ed5ac7ef97ab4455a856321452851940f46985481296cab92b7970d85ee", -"T3T1_en_test_pin.py::test_pin_setup": "a02f07704a93a1250f10158af9eff9e0d068d82503a907025ac90a3a4f3f825a", -"T3T1_en_test_pin.py::test_pin_setup_mismatch": "debc0852ad98018a29dbf59fe33275a9ee3f67b8d02c351009b165fcfe195871", -"T3T1_en_test_pin.py::test_pin_short": "8d7c5a0b9985b4e002bde6a9412e0bb9fd475361c10655d2dd476236eba701e5", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "e6cd31f468af280330b6040793b0ed740c664537ba4d46bc5f00978a75f6544d", -"T3T1_en_test_pin.py::test_wipe_code_setup": "4b317949ef4137b1877b7da61c044b0a79a8f31b1df1c691b8861831116b9909", -"T3T1_en_test_recovery.py::test_recovery_bip39": "187dad507b8f40708ac427df04320873a2c3c33dcd945940e5fbcce6315fb669", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "0504b66f958dd19d44317f31feab77d35a9b11eb2003e37ea982da938aad649d", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "2935d5cad9408dde53b8cf5b85ff8c790dbcaa430aac699a4c9b357624eacffc", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "a15baa2dc5551b8c4cb6e9a80e5a790168dc1c8942b2c771a33872d6ee9bcdbc", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "f80c0528314bcd56f0d30c55e7dbbacc3c515e9373a2c30d1cacc207ae62d8d4", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2a2448f1351b0d8a9a6019ae50529ee7ea5941b00ee6a606104b8cf438477ef5", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bc17b8a30057c03723fe8295ccabb585a200adfaacecf58eacdddaa7bf60119b", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "28070fd570abd1f0e219a37d095bf1360b86fbf15663ca4596e767dcceb2f6a6", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3b3d3e5efdeb6c4e09c4aa3d685129e6863db8da99af7797bbc79dceaab89297", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "cb21bc7cc23f43dda1e015a495179c2024b896f8028d3e45360678644c7b1551", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a503cea4aa2373105c26d1739e8088609d063610b419aa8b3f1c2bafac98c657", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "060ebce8a030206c583046927ac2d763c80b48298653e94d01a3539c93a108a3", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "6949a677ae87e5e82e2d6616506c88eb04cba51b9b97bb95254ba9988ff6fcdc", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "6b7cd861f1226572041dad96833fdf9a96f313cacae538440944fc07891d111f", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f6957b2fd713c191a3f33ea67d3f43d38c22e00ad44cc4ee3112c5b91d4268e7", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "87d99249d2250f91ca5eb33c4dc95936f9f23f18b04ba3af71e132fc0fd4f127", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "2118860f04c6fb7edbd46a3e7d068a32954798081a05eaec00db49b46666a690", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a8638f863c02e6b420e58a4e1d62867a0dbdfdbd84070132ccc5ad04bb771aac", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "20cf266bf00d135205abdc39e68ee40702e46e60a7ee0704e44989cc14008167", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "8a3cdc72659732ed5334bf6f0a004a60ac739be53f9155a36e7d02fd7fc4c5ae", +"T3T1_en_test_lock.py::test_hold_to_lock": "5fb3a71d4a3b1141a0162ee8ef4c05d5fb457eca6955569916dec084762f440b", +"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "04fe9bf02faa4b261a2e2c105de6130bd0bdc85ea143b520c677aad6b50421d8", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2f35a9daaebd8a78a57987cb4f556f33e0ad43881b22410d8af7547887b779af", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "a9ccd9c60dbb8ce2084be680627baad4daa8ba2ae02675f605b1884a210089f4", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "4aeaa0254df4513c2c6a823b1137b77ce61ca8dacfcf8c92804cb4970cc65b3a", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "ab8e2dc201933f0e8583de64981e527dc3305257c7ca630e8dfec797f0466ce7", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "549e1c64f6b8437753e5f4c47bfdacf40d150515344eb5419307ba970761e4db", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "106cdb7a55149eecf0aca2a51d4a2b9db02ba3af39cc7961678fe4cac1e2b905", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "042e0e40ab62804f9a05075089ecd72ed1a61de1d010ae903b123a13ff53dc42", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "c7af1f9093271f3f8ad6259b0a32737e4bd7c64f438cbe68714737d6fad46141", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "0846675ea5c074ba842dec95be4c4c2bee7505e3d6cdba64d12a7d90c94638c9", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "c7af1f9093271f3f8ad6259b0a32737e4bd7c64f438cbe68714737d6fad46141", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b6d5f87b87d21d260f54e48530b87bc98991889cdf50c37ce49dfa6a6e6518f4", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "68e6e3eae0794b66f3ec627b9a77678e45194bd95860d2b4a97d86f01645a0d5", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "60c0141a187af6bf093c2e0379b597aed744bba07d26e7a7c7b7c17d6590e4de", +"T3T1_en_test_pin.py::test_pin_cancel": "c387a29daa533698d520155eae09c9f5b070cbacd7dec7f61de2afc230c276c2", +"T3T1_en_test_pin.py::test_pin_change": "8054226baf2c7593f3bf92e3cc5987c8a132a525d2ccb3e9b9ce8b84738087ae", +"T3T1_en_test_pin.py::test_pin_delete_hold": "558e90aba211cd20e086157d5f323e5274a5022f13c152b9a2875026d3b048ae", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "c0aa1a82536a10f106a75f8b805a6e31fa660b5484a70e3be755407fef9b4f3c", +"T3T1_en_test_pin.py::test_pin_incorrect": "2b23777453c59caebac3e229c60c2f75818afcb940f7e5810fe6081129da5ac4", +"T3T1_en_test_pin.py::test_pin_long": "2247f95b084026ed5a5c0f02ef065b0c94492d639b40626651a8d6d9d4c48ec2", +"T3T1_en_test_pin.py::test_pin_long_delete": "cf73a41852b9827afd079f0e6583fe4c3f828f616531e16c97697c9caa0dec9f", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "7b0c05d7b1b3aaad3c1cdc6383f7788fe829b96ba37413707aa3759cfba2e8b6", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "ec5550577d563999b5beb0fd879d4b5cd74f3dfcbf2ea3673e9c40041cdc4473", +"T3T1_en_test_pin.py::test_pin_setup": "cffa27b1fc549d1f3847b55ec81e34684cd3ebfe510f830b4c60ca993d634b6b", +"T3T1_en_test_pin.py::test_pin_setup_mismatch": "7a5acd0b7d27d5f29e6bf6b173bec4a5a716846721adf5e606983e0a63611918", +"T3T1_en_test_pin.py::test_pin_short": "c0aa1a82536a10f106a75f8b805a6e31fa660b5484a70e3be755407fef9b4f3c", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "d4bf6af382a31e4d586cdfa47d08d00431ddbbedf7c6059e20a6c19b1dccde09", +"T3T1_en_test_pin.py::test_wipe_code_setup": "96fe8bedb4ec78ac27f68a93f8ecc776cc2e79dad87a2f1affa1f4c7f6eee33c", +"T3T1_en_test_recovery.py::test_recovery_bip39": "629a00705682125eadbf465bfe315c412bc8ab25de43cafaec18b3b3ea5d1291", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "adb783319247016c63124d03bb77b802af8f770ea5e4af2458c7ebcdfc0b8f80", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "e644791573aeeb873e7e4357b9120ce33af3266caf8499f5ef682b982292cef9", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "909efd4d1fcdd8599ad49e640cbbcab0eadee4c01e63f398df2e422a8f1a0d05", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "91d6d4825efa715bb6e713dea010d66dfa6727eb46188476584d269a64c71315", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "939166a0b018b42048873ee16a7fc27c67bcfd1324caf4087488e3554893f9d0", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "dfd3eba2e3a0bdde6d2ebc06587dc7defd4bcebac46d5a47a41f3d7c592dcb48", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "078edb2712f7991e3cdf0a83b17ef8237607196715b15ea0c6ab480572cad774", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9b415e5964630df152d2b33e5c918706c735fb7b660b6c16c0dd75b43da39b77", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "900575f3a90faa1a0a7c5955d408ad5590cb188297adbf84fe800d8b30705474", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "ea04a1231c8ecb5c62884a4ca232cba969552f7b48f0bbe8ea019ba853b5d15c", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "f3f13899fa21c603c4ea8aa7015e5cd9649e91ee7c04bc2ec930e2b75c2877da", @@ -18509,1372 +18509,1372 @@ "T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "2e59aad9655fe1648834781a6b2d6c2ed40d3bfcc88540549b9e3775e25f7522", "T3T1_de_zcash-test_sign_tx.py::test_unified_address": "9e5bf34f7e0ef533ad4e9e7fd60c555e16a114b08688599c2a2e63241f5f9057", "T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "44f23bfcbc1cf90b76ff811fb7d0ce96c7f28e954125fc8405b7d5f7a40c1947", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "8fe8c1d56ea7794fcfc72f858a41efb39494897759407625a8763fc302d6fc6c", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "16bec6ab85f7ccec2eed3f2d9f273ab561fa4edc2779a8333e96e325e39a87ca", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "ef31054cf45938b5cba8bf2b7d8f5b691f74a436ee7fa417cf678d7517856255", -"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "69fcdf948ddc30dcc97f6901b82fe80376c7b0c0428099010490521ca37d788a", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "89b890924880b128afeaad4f93de40be28cbbcfeeab46e491b2936d81274752d", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "0d928a4dc6873a2a79441bb1964491f4f22f683e14ff47bbc68d4204db85754c", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "0b46d6e740b98bfa899618291cad1bb90efa9384b6755b361b45673cd95f3639", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "89b890924880b128afeaad4f93de40be28cbbcfeeab46e491b2936d81274752d", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "0d928a4dc6873a2a79441bb1964491f4f22f683e14ff47bbc68d4204db85754c", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "0b46d6e740b98bfa899618291cad1bb90efa9384b6755b361b45673cd95f3639", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "e08e582ace0266765662772d8676497b2f540166fa784420016c14c35f27789f", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "67ef3bfb498805795a5c111437e9e31e9996dc2b2a3d7ed410b820a76879737a", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1a34efcfdc19f56e11bd7a5a888644efd3e17b1d122c0fbc1e8cb7933da07870", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "70b9d19990ec21925a41d0a20778698dc7a3648e4de15f0f9a8d5252c4fb8712", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5e68efc63caa84a88f9490f00adaca1c7a97d92ae35911778b3818ace34b6be4", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5e68efc63caa84a88f9490f00adaca1c7a97d92ae35911778b3818ace34b6be4", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "507bee28bfee7cc86a6f12f812f8f52bed2c78d64390514a4d3392a8c2707ad3", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "6c35025a5a714e4b7bb147186b755672b66c29f72bafaabab02da3d901d60e21", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "8b7dcef01953de33d6a52a40951134b9a2b8daec4066df5ffa2e8b238f4e07a4", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "2a30f5df79cd7071056cf8111c858f58881225c19513fb1cdb85d92e687eefd1", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "2a30f5df79cd7071056cf8111c858f58881225c19513fb1cdb85d92e687eefd1", -"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "3fe9761bcc0b60cc685d9c0f7e557a3cb2ec18046de63b499670cca7040bdd40", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "3fe9761bcc0b60cc685d9c0f7e557a3cb2ec18046de63b499670cca7040bdd40", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "2863996beef75967773099e62aaea6d7d5494856dd98e936ef664163b56b5601", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "fb6d21fd692633c407fb451910ce47114cb9f9b9e0f442e28f0e556240fdd291", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "82ff4f4de8f48e880ef95003390fd1ff286ba688a77d91b95c61d31aeb215342", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "e791f6e6826367871b11ad6faad81f9884be01195c878781a9c140edba265018", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "4708d337368b283ead6c5748821e6be76c5bc3da0bc9f7e2d8d650f06f1903ea", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5939c9117f5693902df37a493eb0642b3f19c649b49e62a4dab75627cdde8846", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "35f83cabfec81faba8f43de92005108622c103b736e67950dafb16734ec57fb4", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "e2e38b35b015e8bade1300b3c9eda59b6eccfa4e75033ee52e4bcf69d97573f0", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "1d219ffbf1d7045f95e72447cfabbc7619d2e82a5922ea80b87f7448784a9309", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "bf63af7889bfccd7ac50d5d91bbacad386263711bc4aa61698000bb84f752449", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "bab9d61175aed5a4d0a5576ab7080dbe1fadc320b197c5978e74036411098708", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "0143276c80440da3b706128d2465b5234fcb5876a8dc1539bd65ce6323bbdc60", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "86393856753716f9f61036df490306ef1c6e56867bbad329615665d0452cea78", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "74525967435fad62239963a3fbab7232cb61696f943f8f4ffdb423a08c2fb096", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "da30fe502a7998ba02e89e53af85a3bc070b01d46b001bfe78876483ee107dea", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "e9b50a9aa56215c413e8cb3e46a07499be58d21ea0d96c8a87eac1bd28f49d1d", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "ec3e6e1c4d4b45ea6a95a63a75b236e2cf2968e1821f518c1ebdcd447a43c6bc", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0a7d9e10264555d0bef7d4b82a74553e41371a53a9f9e204dba85c9bb1714105", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f0234493ad3ac30afde79d2d2be71d4dbab426012050f0b4d1a91065100d4f3b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "e29e0113e30dfd72844f0de8b05043b513768821aa4bf26687b72ee3dda73486", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6ec31b76e735f088eec6ab3685b324a93002414ad373ed4a5eabaf4bfa4b0616", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a39eb80fea81a17906c8b03156ea3d163f8b40ce8e2031f297e63a3dea4b6076", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "402aebeda304793460c77ca022e14f00166c4d123bdbe03df0347c8328a2996d", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5939c9117f5693902df37a493eb0642b3f19c649b49e62a4dab75627cdde8846", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "35f83cabfec81faba8f43de92005108622c103b736e67950dafb16734ec57fb4", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "e2e38b35b015e8bade1300b3c9eda59b6eccfa4e75033ee52e4bcf69d97573f0", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "1d219ffbf1d7045f95e72447cfabbc7619d2e82a5922ea80b87f7448784a9309", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "bf63af7889bfccd7ac50d5d91bbacad386263711bc4aa61698000bb84f752449", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "bab9d61175aed5a4d0a5576ab7080dbe1fadc320b197c5978e74036411098708", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "0143276c80440da3b706128d2465b5234fcb5876a8dc1539bd65ce6323bbdc60", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "86393856753716f9f61036df490306ef1c6e56867bbad329615665d0452cea78", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "74525967435fad62239963a3fbab7232cb61696f943f8f4ffdb423a08c2fb096", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "da30fe502a7998ba02e89e53af85a3bc070b01d46b001bfe78876483ee107dea", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "e9b50a9aa56215c413e8cb3e46a07499be58d21ea0d96c8a87eac1bd28f49d1d", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "ec3e6e1c4d4b45ea6a95a63a75b236e2cf2968e1821f518c1ebdcd447a43c6bc", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0a7d9e10264555d0bef7d4b82a74553e41371a53a9f9e204dba85c9bb1714105", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f0234493ad3ac30afde79d2d2be71d4dbab426012050f0b4d1a91065100d4f3b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "e29e0113e30dfd72844f0de8b05043b513768821aa4bf26687b72ee3dda73486", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6ec31b76e735f088eec6ab3685b324a93002414ad373ed4a5eabaf4bfa4b0616", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a39eb80fea81a17906c8b03156ea3d163f8b40ce8e2031f297e63a3dea4b6076", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "402aebeda304793460c77ca022e14f00166c4d123bdbe03df0347c8328a2996d", -"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "527ed5aeba0aeb170b9256d22571a1fff931bafa1cee1c9b2dcc12b1228bc2eb", -"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "0235e7d8cd3fd61e145288e2fc41989892755f3570d0f36d05fb30539c12e373", -"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_bch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "0a553db2e817e3b62e95ea2ca2a04d96d8086bcf282ad2c41ade74e2a5ea0963", -"T3T1_en_bitcoin-test_getaddress.py::test_btc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_crw": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_elements": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_grs": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "4baa70d21ef2f067df6868cf908bbfb41e9e285644f99da613ab7db71f33b662", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "44be5847691da0c50f50192ef9d37fde359a0d47367b23003ece62b72618ec2e", -"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "9d8f6b73163fb6678f27e32d160b267b42d8afae8271117abcce3771686522dd", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "68270098e255cb3484706e08d9172353f774a900a49a0de22184e9001f037f54", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "c30b233eb3530e9378685c56887faf18c9e6f0f172aab77c63adea52aefb5692", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "f2948296acb056b7769b6a3d6f7060c77349e036cfb8fb03921ffa4e7a2ff21b", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "c96da3225156e81bf2cdb18e8931e3fb751fe5da72970196f4c7b007f2b785dc", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "7ddfb1482968f00d7401903a4fbe0b0b25653f23b875ea8b6d48546fba41c157", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6c198d1d5c656fd90abba15dda5799446315da8ecd39e2826df6b8df80367098", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "4e237267c8a17c7a07b177441b0fec6f9f2ad75e3ff81785907dd8aae3dcad95", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "83c7c2df3a3e78ce9e9b803e5da09899f47396399fe4a634eb8127bfc4ab0b58", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "f5b95ef2e45054cc8f7bd3c05059953b2cebe002b112d5262eb2a36b79cbb480", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "03a9c75fc8b0714289db51b6d66d9b60a6afc72f3595a6191fa42e281be06edc", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "dadf7a53ac6eed8d1b50da38a554de74f81b1fa5b0232d9c8d6fe3bb7b467b9f", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "5a7f7540d16f7f610bf02f438003c3c170b81ffe0c6560ab55db508c5ab52f8e", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "56223cd9ff91d56a6f3be22d45b74c822ba7f0caebab7550e39660fd017fab18", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "a37e129efb58a0b9f0ef62b20f71929b78ce3454ebb14230cf075f034d880760", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4bc6a2a42ed7dd698ccb314fa6f8669f1b91cbbf6d04785bb852afb40eaa7f0e", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "86c8446230dbbbf412b84b3e7a5befec4f551b4111608dc8990b41de568fa695", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "1c0c2b9c640cc464759f0d47558b3a6aa7f1aaa708feeaca4731e7d7516b7a57", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "9d995069d33a9b977e5de89f47a35822d02cd7e0972e7628a6fd00c6a3745023", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e12478defcc6997ea76d95f075936643c7213b0ce729df0c7bcdd460f7f1e469", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "7726e5c5eefa8c177ef8989e8a3dc442153790846fd8b74dab5c73822e10d0d1", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a170ba0d9621f2e36038c2ab9bcbed38dbc28481c1fb7a990ee72e1b3c276f1f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "fbda8983c8ae77a3e511712f1c9915ac46c9697f4414302a085553cbac52dfbc", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "fc0109ae21e364fc9b225ca78f81ad57e578a5fc2d167b60ab775264c8bb5f90", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "83065a421ba0c0298873447bcc3ea3c5dd4510798a9d88602f8111c2adead0a6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "83065a421ba0c0298873447bcc3ea3c5dd4510798a9d88602f8111c2adead0a6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "cd9a89c068745a0348916231c346dbc76dd39d2398982296dd173019d5cdba3e", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "801a01b0b157c723509efbac2a20fa278a5ab03c4c9e6f1880e356e1a8743b31", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "cecee31665d7ba970be6819bee3b3999e8e19bbfd4c41005ff83c21cc0521653", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e94f1d596b813b2147900827c507660db26dacf30e2b5a6c7ea4b8a5289f6500", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c860508b80c61b4c7fee0688ce64322b376b7f49a12c413d775d70804ccf48be", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "e8fd3a645f497a481e6350342503a16d60a737d4a779ff6399306ca6fe083669", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f068b7b25d768f361fc69c8141e1d8ef99033552e40986bf49814e85df2324d3", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "564cb2dfb4e4f3e036a65c3fa330d2b432f9d80a352b4811485e704bf84b72b0", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "e9a08793f129a03539e4783bad1ab10b43dec63f2fe9a66bf54b231c2d4b15ff", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "3d697582031cff5ec4ca4cedf0c77283a336276e735219b262ffc4059c7534ee", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "54a1be952e7a9fb9850da3b9e98b342a6de33f1cfe92667e0d552cab99ef4a3a", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "7d28ad758dabfa250a2a1ecf96fc2972c4de5d008235b413893fc27ba4fa22e3", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b4922986081bb4338ae19635dd50a885ff995203d7cc6e602b0d361a598ef7f8", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "491ff9f62f050af6191f92a499a45a663bab631d1d4b3f894e2e9ff8c35e5a7a", -"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "35f83cabfec81faba8f43de92005108622c103b736e67950dafb16734ec57fb4", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b7e7f205db33f0a831efdb8bbf6f227b432dae0ecee0967e0a32709be95ecee7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "c0e7216c1522b3e11c4331a040833985940989332651c58115d140c277be8a24", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "422ba422b37a66868e7d351b2a77b5c5e8382fc1ac06818424afa0753c5bc5e3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "d9fc6297b739ce6931c6b4008eafb882952b768070019899815771f9c0c34bf1", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3aee4d002a8f2924a6ce28da861050f54e6afba8644946c26e5ad986c60743e2", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "02c22ce34a90baad72099db31f96e8bca7b2af43b2e7787c565821850381a5dc", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "213be39d70ee440a85091d210ac40e43398897e4a663a6c3a8c0b2d5018aee42", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "60e6eb2f7d661f8b590e739ed1dc9ed32b253fd7e95748d85666655db861f312", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "e9b50a9aa56215c413e8cb3e46a07499be58d21ea0d96c8a87eac1bd28f49d1d", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5290080a9edef98d1162b91e74ae458e2c7393afea0fa68b94db5c6c20f4457b", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_grs.py::test_legacy": "7a775b657d3b508b96ea9045425a13ca57d2b46cee09cd6045ff117c0b83ed37", -"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "92a83c797d71f91b5f09a6a64d765e319ad3b2fe41336571f6a1d176aab8050d", -"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "4c5534668ad0ed09535098358718bc3cdc53cfb74a949c82bdc3b0f63a93cd4f", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "8b37503be86e35ec015fa304744f9e9713539069088b46aa9456f1a383cf3b87", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "84b906dab4468073d34fa0e3ab5e76943f7f448e64f7236326e3b67fae419278", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "9eeb75c199629d7f74891845f824f5add7893aab62b1d086a9bbe8ece4bf76f9", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f94450148dcb7de8ffb6074e9528f813f6de07a4732b4159d0b343ea4af46865", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "0c251f0d7733d746914058808ce762ca033e0c966ce1591f83c7044ac1e4115d", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "044d397646a5c5c46883b5a44d4d7cd1a5746ec0fbb1c6d1e3d6f9f3ab975e5f", -"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "689d3b44964b5a1856e56590e170eb6f60c6fa2a0b7a085034a418640fc91d08", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "3912ec9a2777928352a18848d07685c823f78f8f38a518339b8b87a0d1f9fdd8", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "eb237ff505bdd2fdc838c61b646890a2b7ab63f16988033f2251069e7e220ceb", -"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "d34191bc068b963da85bf023354920cf1086ab8a72da85e4c2650f1d134f4c42", -"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "bc9ff6912913ebd42f17fe8318adf438b3bb625c4a4105364ef3c3ff32726a3b", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "289238bbd18ccf34f933292a8444c78e1b591816d428a206f76c0311ab81b04b", -"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "fda506335f486d0b161d4c75d0c082f8de349ffbe83552b61e868ec9253b7b67", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "e7d9ef56a1c79eaa295fadf126ab024361f68069e60e4104ccfddc8a58684cb3", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c852694e684ba89c2de32a3e642376b8ff5165aac587d552525ed08cb3f350ba", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "479a0477cec3185b7086a7ba56b63101afc7579440ef49d348c7862338bdb331", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "b3f76205324f8edb2e56b070ce577b735096c8e3589a25866fb6e6c05b5ee945", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8cf01d50176362d503133ca799c276078de64b705e93006ea7382fb2a94c340d", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "37f4774342f07ba11c999911662513e9860fb42e8f0068ddda4c6d05652149dc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "acb249c90afb9c04444f0be8d58e97a556c6f75c03fa8f000fe8a0beea449b8a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "a71671a4075a339aebd12d7a9149d42e33725b1d0104b102412924ff08b88ef4", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "f3bb815b19b5b2114c2793d43f43bd93b21d3d646f11741ff30bd66c9e2c0999", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e9e35c2274bb058c22cac63ee4b9d9e96fb7fcbd3cbfe3afaf53ce2951e195dc", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "571f80b0cfc899305aa756b71a92dda40422224b20dcec2c8fcf7f6bc885373d", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "32ef7f98ebfe2055b74ccbaf11bf1eaf349bd848dd2a0f3f0b1a832b7f555cad", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "d134619e5b48c28314abddbd45867fc93f4ee4e27c8225f826f89b06ca516cf3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "b8d5ef33aceebc7673f63a68dbeaacd07ccb64c23a8f32bf95c152e6b2e718a8", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "2c8e2b17c50ed4fd221253a1bb18640a6079007856bbc762356245978f3bff92", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "c29a54de5acc33f7e79eccc3ee2420427acc25346a34136f268b204319112bf6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "c634ada9b58b7cf85bb43c032c1ac7b4b340d65862106c80732b37626a4073d6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "0fa28dd2a5cc4d16aaed14bb8e431056c1d62a63afb0c23300dfbcac896bed3c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "8a7ab126d1239b70690cb2d547dafdf6b9d6e14de4fb23f9add78dce1a80b7c3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "771dbbad31a22b120ea37e1ee847c4866603f79c2bad6e329da171ae51e0c8ab", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9ecc9f4640ee05956710c4156968f48274739d436a24232763e7e256caa8d497", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "d406678c161efc33dabb82ae433e5ac887e1c68eee0779d8db070522941acb82", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "c1ad95cd83016dc8b41753e93744fd79cac6a5ea59fdf0df04ad888714610c74", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "02fbd513872b7b00f65e6373d6c6d5b98b6bcf828a29678aa0031b6802bcf145", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "a360e6195514444bf22144a7b8790eacaab32535c6c39dbb04345cf617ff5fa6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "b69dbb3b01109c9ed8c7a47a4a595287d04c2c80751dec5dc186eb4708ae8b73", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "dcb6bd72011dbcdccf5e833c9a15d228af212430838894c5bd358e385064411a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "5956c3900f013afb69b450ccb1b8c95398b0f29862f0d37f35d240fc3da8f65c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "884923a572f62240cb5472321cff4b7bc66b168d7afe022beb64d2474631a5d7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "095604e9b8497113a4845d928ca72798f3adbf3d7a89b68b6de846dfba8298d0", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4127933c0fd4d1708aa666dc912b17fb92576f83519e17f11fdefc7f85b8516b", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "4715cc819eaab8b7d664111e4dae7b1cc5996d8b7b6f0cd34779f918ce0c7bf2", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "738639ae6342903bf0c2cd2f61e38b83aa2894784ac3b528ccb27348ab487da8", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "21cec4d5fd781ce071c423553367f6cd4a589a4ae3089a5a6508b682a9ca5237", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "4bea8f0e8dee67caac5ca0baf27014630d4bf3b27f6d1358a5466b984f1532b1", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "86240c3869e881279e932f8cb0d9802da128c972ae6806a73f9efc4e1dd174ca", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "8392a5d3dec5c9d68fcf9c82638c8e375d1a96325eec60b104cb0ace240edf6a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "47ae6b1afd4f757506bd41c4af016a68889c2ee7763c0ac824884b532239c95b", -"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "960f37e982b2e1339067dd781cb78e8f211ec43aa183bff7ba9cc3ed2e22c27f", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "2df967ba9a788011f8dc1f73dc8dd818027a10c245ec00d24958150ff9a55484", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "53f7cffed7f0140f04d33a4d7b0981a4e82eff6e9c6d671203edfb37fed54574", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "16e4ca277fa5920f39772c5a9e183b78507ba9c43c5bf18eb01ca948305f1ecd", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "16e4ca277fa5920f39772c5a9e183b78507ba9c43c5bf18eb01ca948305f1ecd", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4d83b12408caf5d986b00e4353096e33dab7c40e301b191b475aab7f1b0815f9", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "8c9b98de0aa76a35a383e098613cde939fb6f2af4b789ce664377838d2d0c8ac", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "62f2b3c454c9f2e3b292a1ad814cfff6e7afc6900232a950d36b35f6ddf0a485", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "9dfba44e949bbcf3cd4960e1bdbe0bbdc17393d6273417af878faf9e38e5904d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "37a07035fd875bd3988323c6fd2ccc324f0f574d6fa39ed5842105487ba74bab", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "027f3af245cab497f274e0b4856722b30a90691cab36e12f9ce32adf45f840eb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "027f3af245cab497f274e0b4856722b30a90691cab36e12f9ce32adf45f840eb", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "77f8a0e4bcc8ebd74b689ecf6920963dfa5489c57d8fe354215def74293757bf", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6abee9ee8b76c0a7a750bc6a0e5f78f86ba298312ab554b809f285984eb0114b", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "3e2fc00ceaa1a0e5719164a069b9172c3e8829db1cfa2852400661a141aa3e08", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "3e2fc00ceaa1a0e5719164a069b9172c3e8829db1cfa2852400661a141aa3e08", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "84b55eee88be0a06e6445f7fb3a0d922e63bffef1e1544857415916b40e0fbd1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "25b6ac2fb4e1bf9c9603ba2892bc499c28f2a0e0962f6c4b3340517dd2638238", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "128354a0f8d2c2f4e45001d0b0dbe5c88f1af680fe5e894cdecf8dbee964536c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "128354a0f8d2c2f4e45001d0b0dbe5c88f1af680fe5e894cdecf8dbee964536c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "76c8b7803e444a17a5c22916126706ede2fd494876e8701e88cbb8ae655ddaea", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "3d9031a4bcb61c4d0fdf9f02371bed19ad57942cf1bce3f8ef399d456c0e52a3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "139a959ffc1a87e6c9709b5a80fa731851054e8b4cac0a626544aefafff46eb2", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "86242ecc0b5c04d410448c90843dd3be267ee410b57526c73b3680df3e82994d", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bcb4cd069c4ae56051792831a36385722fc95ea63e0f8a78417f9cf479dd7389", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "22567b74d504a0a3b9e6676888224dfac10eb2509bf1bebec05ffb7c8f3c54cc", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "56d6ad0fa3828981feed2211dc236e502eb0c37e7c18b75fb26417ee6e6fd34f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "85e814ffda72370f0e7f054713811a8cf1a765cba7905001ca64dc1a2f794f97", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "9fcb1d0d499c190314bb4cf9d161a4a20994d867572f9b3c9e523b0b6fec5108", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "520e8e8518c199461e835a7d84635f013e4b665f2a3dc290ea0cdfc8ffeb33dc", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "62f927a78bcb0b89e65ded4e2d349143e687f3a947a5827e936dcbefa337a8ae", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "8ac53a90eafa8b8d392cf36ab42c797577928258c9205fd1847a1fff64d2be2b", -"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", -"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "371769b446cf08cd06fe288a2474d36bc82b1609276e53014fff1805d82d6800", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "59533c327ecb4428d8074dffdecb2355f26f64ff95884075367b8719d7706d55", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx.py::test_information": "b19adda03b9b17ac6ff56f5dd49ef3341d052c44eaac7bdac78628c48ae65bba", -"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "7eb48804d24f33d227091cf2c80ab206ee745270541b4be4694dfdf551a5fb5c", -"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "876a09389f454e30177a588e8da436b511a2cfab75c1a2177098655233e66313", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "635c164fa797b98cea1e8f4bae0f60705514509eae0f6f5451db1d35dc857783", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7ae7a6ffb811507147816df0f30ea96d46c50250b956004387c332e78f6ccb95", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "587e6cd9d098a905a24d59311e99136c307c5816c50df853098e9286a2196082", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "7ae7a6ffb811507147816df0f30ea96d46c50250b956004387c332e78f6ccb95", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "587e6cd9d098a905a24d59311e99136c307c5816c50df853098e9286a2196082", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "0fbdcd70ef86c04b09b39668a74efdb449dd862dae8abc9fdf353f819caa094b", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "16e10b48e65866c55a39d6877b96e2e65e008bf1c7b0064760f16b4a29a5347e", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "85da4f6904441ce72544de8e807740acb1426a4db2a247f8decec663bb2809dc", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "4bf6755887cb9f10804c32139feca29e03c249f3adfd2a469e9ab7e50c382a4e", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "32f8eddadae838f44739a5e17880a3fc671251381555903fc3acb509a5809b38", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "7b57fed73612c79fcd38564f682ef4f76fa292bb8db7eec2e6752f936f8a9cc7", -"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "d343e69eeef83e376ca490e42fdfb4420c79aea2b5c1cfc829bda377c9078b41", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "3a738301575d30a7346dce3cd4e12c88629b799d8bbb5e884216de06246b99aa", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "57344a67deffbb964ac559afaef27ecb91ab1640ced28a5172fac4a53358a22d", -"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "47ff09483997b925147292538e3ccec7a1a20151240693787d24439da721883d", -"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "b86c10d8dfb35f388719daeafb9607798d5630fbfa914a62a3db93e6a84a0d0a", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "350d335c5e719694517abda6cb13b19ca58cb5b1a1f9e4002a84ca25fe2ec0ae", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "07d4965f087b356e51e3ca0e179fa37890ff18ae481223bc04e92ddd5e52f341", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "2fd4234cdae39b1eea7cacfe4d3f2c443a476832450370cbfd127b2861f6f3ec", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "8f0ce9b898bbc97b311e0d649eb00a733f281a44c77a721d0249101c1086d459", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "1f6941265d2cf09bfbf79db2526242c8caa44a187e24f01a848ff02e9e84f244", -"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "a466a373b99d9f7757a30a697892c1754319e4e8d759577e5475f1c011da5a9e", -"T3T1_en_bitcoin-test_signtx.py::test_two_two": "6ae4e682c8336eb83472a6b087dbba62048ed3611bd6fafce6e295640c79b44a", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "d343e69eeef83e376ca490e42fdfb4420c79aea2b5c1cfc829bda377c9078b41", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "bb2b97a44dc5fd74700da267758419e16e7e32304c4de38876b8b6d29d489caf", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "0e60af72eb1134c99d74401a03007f29715b6fd5f3e9d781ab1a078e1c30b379", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "862b503d8145193874a3b53d779ac894568e0b31a5004af4b5669d3d5df148cf", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "d343e69eeef83e376ca490e42fdfb4420c79aea2b5c1cfc829bda377c9078b41", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "833779ecfdc74d5b6e6f07a9375e441afbbd4eea0e049aec7760ebcd22e22c0e", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "3a80d3159c8c2e2100337fe6d29d477106f9a9957da2b7599674bd344f4948ad", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "6721e9680e9955912cf5b144575fe3350ed5b97955d40e24c8a59ca354521446", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "70e27c184815ca1ff052219d449a9bb7efcb622b93a2d48057728567d0fab6fb", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "833779ecfdc74d5b6e6f07a9375e441afbbd4eea0e049aec7760ebcd22e22c0e", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fda1d98847e0ef3cc65ba1bbd36ec42d1eccfc78f29ac8f1ba86b2914dee514b", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "51891acb0d758f8155e076b1fc684e50e2ea12d5e4b69c69b35633dcd3f08526", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f3afd26cab962de456c9566af59f4bddd45cb72c278c3e5bcef8aa851fb1c351", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "06fc5d9b9ea23273c45e5fc7c58532376dcb9e69609518e82b822dafb790158b", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "26b3fb78f4d85effe4c7dbbaa786c517f2227920c0f6ac9419ca8f0db76d8369", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "e782150f0d818b385889c163a8b01d872afc64b6eb1ec6a60deddd27a565d6a8", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "6e8f277d3943a00630d7befc064b854157786b5e6848373b1b2cc153cef51cf1", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "a97b36b95d0d5c6e14183643343e7ec24f3cf4e3c06cda16e0092994b85115d6", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "a83be479bb8559e01caef964aa7fad07e7d26ff581f3c02766f545caa01eb517", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "aa61ab37dc7bbe08f190ef8dcbc8fd77eb655e457fc6da0d9b74b729a456d493", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "bc1b09999633d061d0a4b8614eef06c6b73517cfa59719224ca2509882ec70e0", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "9fd4dfb7d17917c83b341d566d06e24a9771929e852a92c893230b2abc0a7ee9", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "09064758623d5372712046fce8deb4bd1ad7e7de6f4552dc210c6bed69a4a022", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "f873be74d9aacdb92cb3abb4a018adc35f959d6bd30a7606a1113af216494e6b", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "09064758623d5372712046fce8deb4bd1ad7e7de6f4552dc210c6bed69a4a022", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "f873be74d9aacdb92cb3abb4a018adc35f959d6bd30a7606a1113af216494e6b", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "33f8f5ecc180b41527d39f51773a17a477413307f91bac719f30676db12e9a9b", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "be1cb44d0b47ac2148dd7eeba3af973119e642727ffa400a6c08ade0cc7ed2db", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d5ec750103d67e84ca173784c576ea0156e3c374e85d19dd2065f7aea913f676", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "bf2300c6e702c9fd66df7872d222c26a32c277718486eef768093280360da6ee", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "4f04edac1d1dc25f3aa8a08abfd62e073bc4cdc7f8f8f56c3d07d50a72737ac3", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "77ef3b8e525a825ea70699c978b0a8b70b3e368e5fe4390f34c67031763f3029", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "7f65ed233f388cee20792eab49a04dd9c64a28a81de696fc3300f4202da4d698", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "d820e595f31689581c2f770c204688dfb2a688e6d6936e720f1dc84bf8e6a137", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "ed05b9b4381d7fd56787c358893094736c86993b1c94e449c2e6594c62729a4a", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "ed05b9b4381d7fd56787c358893094736c86993b1c94e449c2e6594c62729a4a", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "ed05b9b4381d7fd56787c358893094736c86993b1c94e449c2e6594c62729a4a", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "ed05b9b4381d7fd56787c358893094736c86993b1c94e449c2e6594c62729a4a", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "6f91b10e16ea2c08b3289804275ba846d7db5aa007aa7264d71cb9f46d046764", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "6f91b10e16ea2c08b3289804275ba846d7db5aa007aa7264d71cb9f46d046764", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "6f91b10e16ea2c08b3289804275ba846d7db5aa007aa7264d71cb9f46d046764", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6f91b10e16ea2c08b3289804275ba846d7db5aa007aa7264d71cb9f46d046764", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "eddfd5d4f22a92a2503e0b2833fd26de6953d80969b544060a114be78d9bf2be", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6d8f89e11eca81d8e687d176c7b14ea3764553154022f2bb6f039ae69a5256c7", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "8285a585b01ff0054bd344aed9c3e9055edacd5972e4e4cd60b9933615bc1c2f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "8285a585b01ff0054bd344aed9c3e9055edacd5972e4e4cd60b9933615bc1c2f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a62ac27c0342a74192837966c77e38ba4d82f377c0e4ce8074b3087ce02d8756", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "0596e91cff20aa6da154e8e5753882a4b58e165e7e41fb583f4d24ee067f551f", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "f22ff77ee65aba671cb7a2b1a39fb92975296f9e691c354a0d69a4e488c1fe41", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a62ac27c0342a74192837966c77e38ba4d82f377c0e4ce8074b3087ce02d8756", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "83dbacf2f3b231319637f1ff5d4116579dc84ab9e9581d7739cd0676bbb77643", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "4e1ca98fa61533e58fe8cdfcf3705361141d3bcbee1b17a259390859b8fa813b", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "4e1ca98fa61533e58fe8cdfcf3705361141d3bcbee1b17a259390859b8fa813b", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "4e1ca98fa61533e58fe8cdfcf3705361141d3bcbee1b17a259390859b8fa813b", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "f3d804182a9fefb60da132a7ae5e5789cb6e6fe01c07a817d3b8dd71fbcbacdf", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "4e1ca98fa61533e58fe8cdfcf3705361141d3bcbee1b17a259390859b8fa813b", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "2a022df40f31a0ce2905aba645653fb91d2f87b9e6c3663d77c3d27de96cca8b", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "e22f890d7458b9c741ce8ecd999a207a1659c770fd77a4e4889d344917ea55fa", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "fd97142f750f95de7e064c2688891d538aca03fe6a393857cfb19dd7a6794cbb", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "a63c4ad2efe9947d758ed16f395f73499b03b1d358396fdb201be35093ee39b8", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "056501811bc3d1c029a2a78bad2d079a70b41aad72261f9cd9496bfaf9e629ef", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "a09b50d680f5d1fc8bd6fc776b8f5b4ed89273d41d868eff5421f1a135eb372d", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "f1d30aa397604008c55b25477d833d822c921dbfa32a3166239d0262f493f0ab", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "972fb121f7655022e618fbefb28e98f06a990df69d09bd1605dda5e3ae48c0ec", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "243e4d157dbb3ca2568f04683d3a96984a1a336c452e29e273282983be662449", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "f4504f3edb63db367128cfdfe9aadacb3ce22323e635a865c04178db4be302ad", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "25d7ec802a3553039090698c1de2818d5afe21127b708b2597d616cccefc69d0", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0c7200e280965716bc8dc2c4b193053a4730d95c4b4826e47709b71c273d82d3", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "9d60709ca110bed06b8b0458a7f7c6fc34d722ae1e84b2dd780e36e9a2082b96", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "4a4cd6483abfcc3cdd4629617b9a76c186074294182f44cd032edcbb3a96fd89", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "833779ecfdc74d5b6e6f07a9375e441afbbd4eea0e049aec7760ebcd22e22c0e", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "9cb23b95027c1c8ffc309b633767ab16568e5c7c40b8cbc76b1e5c9e3b86ecf0", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "06fd10526793e0c82fa84729c4086f1e24b5f5680295137dff606ca138678263", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "123967d183181dcc659e61d7fd21c44d6b2eb667ebdcc0466832fdd0944b1da0", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "0cb7859458f709f0f8ac5e8631e5b1b86d5767a2b49374ad385553a605840387", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ed9fa5d8cd8da37c3e31bef713fa3a79fd4d202fdfacaf586e81a6bbdf34afa4", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "be5bd061d4b3a6e86719ba679770fa5f703d64a36fd820dd6034e122e3129404", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "53511d2b2ccfa47ccc114861cc6c62a8cbd9aa5a1cda65d17488fed9d03c478f", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ca34314cd4ed59516fe95514ca020017739374b19d315c622e901b2a173d4baf", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2091037ff45d876fc3f2c47cbaf4fe67882fb97cb1b07afafbd6e7d7db116278", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "6d4a8d4604f601f80be82f0f038d6caef866c82054949846e4f115e9774faef0", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "770a0b7933a14b5a3b9911bdd25ea5c96e271c9849a29175ee77b96498777862", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "92d844b2ec51ead7b5013343a4ea7a8ef683f8cba3b505938e8ddb7debe465f6", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "6e071435d62a5beba33278d1036957b499309cd989a05ab0a9f28f005520f02e", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "5607540bd05406c5ac9526ee02377b92f30c410db113de3e1fa220c7bf5e1c1e", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "4ca1c66ba5403e14c7141e80505f622f5db40bd1bc38cad4224a74fdfe665d91", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "8b2a3b5e55dfa774d83e8d21142a035330b437e4e94d8beb0878b4ef7cf74b2c", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "0efff3f4184c7488064ccfdddb05a330bbd049137a45def0235be3dbda2e3219", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "96e66eb12925d1c4b31ab1fa7c4afb688e8203edb09ab5624d9a8628a3487a7d", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "c183e117bdbfd04081265528c103136bc22af9854faa0a63b601193c19774c08", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "c08c7e64e166dbf3c122ed6c7181899b3882bc6e03ef6c2a708cee85b9e99450", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "b6dc72bd8a8e9f6d27a2142329a9ccae258221921a4ca5d52deb0dc9063717bd", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "b067955e593bdca92c2fde93ee342a285a63dd14ea1ea36afab87085dd5a02a3", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "846acdbfaa7973769a82ba4b5fbd88d3bc61c02916438f6b1c517b013cbfaef2", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "127c596ccf2bcaabffd7f7942eae69b8ec3ab6691132c846dc8dd9ff32759271", -"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "e516a868683d108e916edee64ae6b6de68cb3bfc6a018aade8483202f7b7c26a", -"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "5a87239937a388a1a3ba4e371142e0e488e8270d13b3f4ffde9b3970b9575767", -"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "7464fc1bb6d19d9a3670ff58b04490684f1163ad03426f578654f3817f1554fb", -"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "ad18751da69cefbffe139d46df1553ddbf217ec957a198f96df494db16376de0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "fe8e7d2ed1181e1ef66f12d502234209d20f915565410c43d20ba57258409032", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "fce61971f75e37ca5633d0c5dfa3513640f312ad6e1ff387e96b9ca3ec0f9c83", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "9cc9a50541d5e1d33af1a8b8d1cf56d075416b84bf46ad966b9d46244a50711e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "67e71a2ffdbc8e5dfd8800fb78cf0bb4b895a358af4c3441a89c8c066ece6154", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "5f2ec1abd704ce23347090ccca63040a40db38217c8594f2fbc8e4e59ba554ee", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "3c48f197b526e76fc8efc9c64b353e075b4461795f3286a871f9ce87e48c042b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "df83dbd13ab677a077ab95b656da233bd2714d69fbd02b059eea54f1a14c293c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "3eb297487b71d2ffa275dad8c453025e0f8157f6ad6ad0a622c0d7628a4b83f5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6e9a453b2790a14f952f2c15c470647ea4ac56500f0fcb1575f668c0e51adde0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "169860b5374e8f9a61d2d78b94771b6404ab67eefd28d507054304ef85edd065", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "da21a767c80692435320e6fab84d68f32b2d8fc2e5f9184eb7d9b5fdda76c127", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "eb78523503ccb1058600f1d046adf51c53af85d97eb04c823adf76e0c13e20e3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2dda84b64e457229d80c53c95e0c2286eaa834b2aaf40c2c185a530914ad7c46", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "941d62233922beb4c5273d59cdf7d015f03d2ecb5c06810b0a6698ff085d189f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "850dc5667ece984cdd80079a5a969b29b6812d7e78f5ccbc74e171fb3384d289", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "470d977327ab5db64afb6084842733505e4915ded46c09cea6f0bddd2e892b1c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "e9a65e32251af2a9b7c55f957346c72925007e3b5d50883683814f54da834d2b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "24c95ad06f3958c2ce25ddef0bead6b0fa16dd30b9da942262c6e92679738a8d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "25008eae6df86d0abb61d93d8114ca2449cf02aa4f669cf5c95221aaddbffefa", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "94e3ccce6d44cf62f0be5a0e6e1e4661b4591cbbdfc48cc32351ee67196b1748", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "f083dff35eebf1007c5450f5c53821fd0b1219066e12207199d3473744c7a465", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "7dfe61158335028161bbc7c39f6de0ab5a09d05d715b3963a4cf7754dd390727", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "bdd203babec00fae70075b9d9c27e6dc57b6d27a26aac6ba59a204f7634f0b40", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "8091fd422080ef36cd2507310d4a1405c9a155d8db8e379bf3b2e002c418e010", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "9ec049a92b6f8c93856655c74b23219a19d40019fe1876a5383bfb22906a8873", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "f5403e191a099a21a7b3921da8a76bbf7958fe406b0eb79e5e5e3ddf107de2ac", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "e5f12e379bd6ace3867687d83c0667d9a2afc12168c85131dcfba715f0801d8a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "9fe4551903e2655459b704a27af9370122286ff62d6a17d6e89e2b01de9ac435", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "dc60a7fcffef61ec9e8be02b88e0caf5ad15be2c42147a9c6a79c345dfa81975", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "1f4fed9421168b02c973343ff8fc18fda00c3272634289ee9680bc1c26384b5b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "5dee587bdb0fba31f44a1f0bb6ab1970ed5a352c61db1c532e6279892170b259", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "adda8f7b65b710e89a6f4ccc47bdad48b73312701bc7a8392f00ff5f77b89f52", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "7b98bad4f58b30df4615b03e0ddb1915ed5022d01755731b7e9aff3f976ea67c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3f82f27c86c54339d6e09c5ddb3bfd85262a60ff972f213c93ac14f88b4ef559", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "9038ec7249d7f97b5ce5c443514d2d55dca661e0333d5ba77d7a78d24bd69546", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "5e988223bf4eee242c56ff8ef9c17a7bf82132b42a212876faa974256b8ec2b7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "53cf61c70f786970c4a5bd0a2168df02728dba76c352d1a0166f7a95482c5dc4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ee01668b9bf4db42a129eedd5c64cf333b4f8d958ba2d109dc02d0344fbc1f2a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "6b7a3ea12403ccfc205c80fde91c7ac6d26a2b9595e5285c810237b34341a2e0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "0aabdbc02a86930b7e87f4b6b037041e9577d39f41c91a96e3b063e9780c7929", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "b1e93709b79f6bc88e77ebcb05d1f78175012410f2614f6420c5ab4fa88f3e0e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "eede19684cdc5820ecf572edb286b43c59687398cc0ddc693c555b10724d96e7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "b76b5ddd72a43f0cb96edb4fb33ddcc335d142b5f8b55b19c5d71c7735e3b37a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "02892fd2c313977d0cb49a888e5742fe58257aebcaa9a9830322b38113a1ae66", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "3f4a9c1756d06f24f0826c6c23cb9637b3efbf78cca19c5fad7af2dcc87add9a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "fa5004d7d486a6cadf3ab83f6057a2f8b8f5ea1fd134edadd187069c302e0867", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "1f5cad401fcbf8360298a0e5aad8261c4ec2b4e332ba5e2004043f0ffb0e863f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "c17fe396b3a88f11714b34c06d650555ef3e1b823f7192ebe7c8c4342c21a34e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cc1a2c3901d31e5e61df2f7930b165260eadfd9861c716975ed2a731dfec7ce3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "e29d664e27679aa395aa0943247008916e83d915cd1fbbcd119e26e79971b6cc", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "2fc068b6c52c60fa08d17e22d1f2cae5cccd1f7a07195186c06039de16a1d8d5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "badbd400a038e03f0a497b58c5d899197a52be989bd0ffac21f89b82df6276c3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8dd0d8767fda850b9a01df36e0b3a2958a9a9901aeddcbfbb77f6432be7c680d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "1e45f3ae63a5dbbd8a032e6fc7c4886562564e31980df8938c800389f1530523", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "b2fb218e52aab14bd69fa259cac13b2d80532a09ba8cff32c942d7949fe439fc", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "d660115d0c4e49f63f32691468a09a63b169a9594a3f8eabb327dc95e1f085b2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5fc8a1e64a9b3def8809796d290729dc79bb6948114b64c9a67c616d72884124", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "5926455da6b6ab912f2340999760b4df29e8c05962f4cba1292e8ad165194f10", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "29da34baabddba5ae59a8f4522d96cb1560b2f19f182929676d3e4b5524d72da", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "cb0f0e97b7eeed21b668d3a06ee5009dce33593c21e555ec11c5d7b5547b71e2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "0dc3825c5727d6fdf310eb968b15cf686ef9ab4ceb5c0039815f7d84939edc9b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "662e2b21b557bf9011471e69423119ecbbd2b08cd411da2ead2dc191894bfb4b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "eabdd448d62955b9033f3b2fa055a25f54c7614995d9af7b04fe4e478e7a052a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "b3fe1d694bc5defd16d902bef5a382baff8a1947828ea0e348a7c2a903af6c0d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "00ce75b1d92c4a31e9c34c5a39e8370ba57bd62818784a6331ef4e549076a9f0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "635f9f133496fcec99a8010fc54c5cf6b081941e598443fbf46ebe003473e70e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "baa456a095a25b80e4b2c6643055a8eda935677594882f7ef7723d19f64c8927", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "0d088924b3c6ddc89bbea7115336aeaa50ab766ed223cb2f876d38dd75ae8299", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "553de46acf422b2ea33cd0f9216f081736d2ab652cf8086e4001a228bca0d643", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "a60d032c190be462fd2b9f9796e9e0ef44c9e3b22d2f577c69b0c5c6861281fe", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "1795aa449f613f82afc3f093c8058430a037447ca07b3b6c766fdc1d76f74f79", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "c75ebcdd1e2dbd9b9e0f7d3058b174fa7b11d1107c3713244db1f8674073a516", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "3d8af4a70942a719a5e142371ee5dae2642e59e281d44d54d594238e64a79fe1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "42418b24e80f9ff2f42bda325348e8c039f0d9a71164c62590f481a31dda479e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "70c63b5164ddb9e91b39ff671de051add9f79802a5e3a708b08ce6a56d3366ea", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "494a1d32712badac3474f36dfd3f8e60daf520a17f3310dca6555d56b01d326c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "95aa9b20f379a9b95ff80df082535da3cf3c8f390f2b3aed2b903dbe4e6e8472", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "62e763e991d2cd1554427d37f4c340ebc53bf54bd1e6faad25f2c7685419793c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "bee3d995359b6995b61366dde526b2c7cc0f2862ff5402bd33c09b2be1cc4775", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "02ca8553134274b29e3a5503366caf8cd56922843bbb8e7d3b0a8ef29c92b388", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0cc91d686c40bdbb4d9bee046756bb9e12c475750f4218840e6223046b3935f1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "fbd5f38aa9e3bc2b9a839e0e06a4df37077334f73300ee754aaefc763770ac37", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "179e0e7f34eecac343f4d183dfb116daa6ea751f68b4551a6012a394151401da", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2b44941f69511c27bdb495932d004e03381084d85c9f88b90e358fb3ba3b51d3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "73e24e0f8a8b6932e79f006bb3a905b1ea410048f43492901beb5e1ecfdcb7ba", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "333f5b4e233bb163b959e5ac819cf40074303f9da4810b5eb7c3fd78c5a72ec7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "58c311886293a63e5f71ce1dc986473c7c8007ecc90078a57e6a696b1b51c57b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9fcfb45193778d5f8e4ba1c489b27deb0a437a7dc549dfc2d40d71a382dd31c0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "74fc9ee505ce82354e49b8e73b8ef8a5cd01a0fbed54a1a6ea965dcea952b624", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "18aa0a473d211461f2d3607fdd30f8c3b3eb92cb558553fc353c4724c7ea677c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "a50351087cd58baf1e2019a0e811cb2e380ce95e712f9062544da1f90a86f1b1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "571e331163564e05539c072f0efdf61b0169e569c5ff3412a492ba4a77746a92", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "21de1e27ce2baab6e4c4249a81da796135b352189a5084fb17787e16b1e31776", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "4fbaa6ef1c51dfcf7596458422301c2ba3b78df7dbd6fd614d82ceb5d8a83334", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "3482c6bc11069b7b14c996ae71330a2ab6edc647299de3c73bf787b75fc68ee1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c05a8c2a0c1fdba01525b8339502adde6db4d98d1215fdaba378eb0000ee0155", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "d8c09614b458ead1670efc1c7fb7e1c18d6faae79c70026671ded33a72ef67a6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "9145c3ca28a7f8800442dcd838254d067182e0b5ccc40982674eee3c61e0e85a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "4c61661e9e3edd2224b4c3288076ea2bc4e373fb3c4f79e2f50998f8e6888348", -"T3T1_en_cardano-test_derivations.py::test_bad_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "8fa38f0a49522a439a0e0b94f6d81bee0563d05fa5700b3340f829e3ad7e1f7a", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "ad17ac1d243d7842a86c34c869884158a3cf156c136eb540e2775ce74beafd0a", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "b42514b27ed1e4e8aa6a841a6633d55a34667406eb21f814950f4e0696cccbaf", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "f5aaac8600f598cb7bf0303ac99d4b82967edd1baeb0cc6605d5fd4f36a45ef2", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "9f89e29c56a14a9cdc22a89b259994f39415cc8e56c35d8aed7ccf192e4ee6b2", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4ebcdfe5d470957bef448a4f260a0dde4b2958abb1970380361600eed3d461fc", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "2557ec42a950d717ecd63b26b30117155638c333ec4c02e145cf1d2c981b14d2", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "f594371ffbdad0e1c5571c7019c4244f892994667fae6de2ca04a85899bfe263", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "bed5719bd4d2ef7d465bc212e688ca392855f59ae7d2d2f3cea9e68b59ca5629", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "5dae732dde3179e5861dd212d6d8170f9fe85bea0582773ffda7415f08a6fdee", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "fb35c8347b97b3bb81419f9346d38bc78c920f864475d5862b990f86af3691ac", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "b5d6defe62039cd765d85526ae017a2f02d76b2fb57634f242225e9bb3424bec", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "47c6b1a288c53e469aef9d6420008bb0e0a94eff1989a0a21c9e142aa52ee581", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7325c1252cf85e69c4904fe6e6ee762a9d6afb301743eb2ef0a372f56c78e759", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "be39b589717c3d373720caa6972c9cffade698acb5f6ab6b89c6432e236ec0bc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b663cc5a78a75347b78b8f39d0baee9b61912878fa777d6c2ffb559e7dd8f85e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "1ddb74df14f71d31c1ef593ae0b50119decda05c20d58b33cebf43d783f095cd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "dfc977de0e28249da990eb3806b3edfdeccb53808149966a6bd761ea2d597a17", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "581be5d9bd1a74370080b6cbc0c32c2912ff15691c3efe79f303a76c03e60b98", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "7d531841c632837bec4367912f7c7809a11ba32dc472be41bd56315a6eebf10c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "ab425b3b864924e78b3c977ef1db0a5b65d90b3e0ac88883beaab0bd64b3ff50", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "764fb53d6293d29f5e8b29c8fd74118bb0068a99005b09339ae40409872a50b2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "6ea5479d2da00a9b23a94b304838ab949451bf4a40241e64e32d0c54c12eb497", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9aeeb3fb760344abe0cced0047ee0a3bf8722a0d9493b5adc2341623fc34eaad", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6b55e08561c2300910cb6ef6f7f5171dced369e80e36874f746b4789309eb93c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6b55e08561c2300910cb6ef6f7f5171dced369e80e36874f746b4789309eb93c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "ec73b4687910d52c4f7100544d8097f44bd55a1f0342002814229a9382560162", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "676ffc6940c8000a57040a986ae67e620815972874093aaf3a3d163adfc0c333", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "8240ad115cce717faffea9d409af7ed4303999a6444af8fd170364b561cdac0f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c6819427286ed696aa02f905d52cf08baa9a969c06502cc69e5b450f80db5905", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "5f4db8351ac25ff2d6848f84e0582816e4e3c8da0bef5c9814174f90da7198b1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "5a58f7ab0742838d4229be3e837d9d5a44f4b320b5bddde4fbee42566713603b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "900dd2c12213a8ef9454bf84c6efa168093646ff7b9aeb4cb5d66e7946feadda", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "d0268877940e5df9270f229b360f0535d95c10f409ea4a7b5301d27e6248f885", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "c8510e87117dde463ee69ea1d14f3f2e7e0a4a63e712308e16b1485964f2751e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "5f4db8351ac25ff2d6848f84e0582816e4e3c8da0bef5c9814174f90da7198b1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "5a58f7ab0742838d4229be3e837d9d5a44f4b320b5bddde4fbee42566713603b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "c9c93f1432c785d9a4767a859b49870f08f8378b5928b239020e77acaa200b69", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "89667172b1e974148e0e4f75e008c1b5509b0ca847ca5719428c9d18aecb0386", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "976ce180d7019b09ac2f2351c0b6b0aebaa2f7a52ba2626e3af71915cf6ab7c1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "41fac639accb926108a35ac2a2379658be9442f4cb57a16fc900ad4281aa3b1a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "3d2ddf5000a5f82efc4962c7a8ab4661838933aa10fefa75f452abeda5788e40", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "68983cb318a7d3380997632081fa53c88fbf1f4769c9eb985070b993bd6f4ddf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "d3168d1afed925a3d1037c3feae06ae5983a0ddea344e91ddf5e4da24d550be9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "ac5fa91040a4603d5d870f83b2c9495fc29ac0d17b02dc6d84ba2acc36d71b11", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "979d1267f4ade4cadda60aff42ddad5ed5ed3c5e5445aa96c09a4045424cf11c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "49acf3b93306722f9d7e93ff20df3a56226b2e6c8b46b47c212da4c9b1d3fe69", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "f4c9a3b0ce739698208edba141a67ff1a3fffb9428ee678c103de3540dd82e79", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "dd9667b9542bd779f0fa97b16ce84514db5e236830f10f5d852cbed1fb5e2715", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "87164cb7a437e37eab2e74516688d61b1a485bf23e208db048a4d9954fa53b13", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "7e74afec9df314f80473e1a4fb16e4bad3ca5c32b862d2e1eab71a7b305a1e51", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "829b42c3e8fdf6720e4627487080c5aaeb6ddc4389d381f2b6e3db9ef8f4da6b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c862e55ff3737de5e223ba18c144ffeebc3463228accce3f72e66d17544e39ec", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "41957967f4fc1022946f615496e9907a854e4c924e6a983a9ab863af4da5634b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "989231f796eec13255c76f8c7b5e043cecf022e4d16b82b248a8e4894a1c723c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7836cfead8fc8af8c116e338299225c1c1062a57a447993e8e01012630901109", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "cb7dee4fb4293a298c9b03e0dbf88957c052b57aafaf9536baa4dc76722035ca", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "372ac3152cfdcf4a7c105e87a7ddd65ba3a70ba511488ba8b27be59074784b64", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "9e9baa0691e259477bcd499fd8cf404aca82b53bc0f17cc8cdf9c9d3939ebb52", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "cbb983965dc570c693a1c2c35858cba0ae595034065da80d1c935b5b800a1cd9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c6a5ae5a206b03345d1bc85133919fde907240ffe6bb143a9769ff32eda0e927", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "5ffc59e504c7500df477b1589bf2cbbc4c77f14ad0f9b8c2f8db6e91534080e3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "a9bf70391c91efc4b69653a109ea5b81a923ffd24cdc4c0390c63f0a68622e20", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d5b6b40ecfef9bc596efe9acf29958271f0a258d7f2e306a932b655d07d61938", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "b59d2c8dd5f34a755aeceb1d772b35884d64838f7d8f532ae93c2258749f1311", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "94651c52ab09cf400c52473303c67d37db9ef8a1d0d7b9076c086e2f290660a1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "13a3f2af06721dc22fabc102dffe60c155794f02de4af3833c8045348dcebe4e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "d1fdc5aff63339e8cc22919e22976ea0a2a2f3c0f83c94e67b975c391b11dd8c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "1da8ba8e4e0e86a61a4fb6afa97f5514cc74d8fe9eee7691b0de2ef2c551b3c1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "6240664bc04b5eb039cb31db38cdb76777f673487d162dcde1467d278f8681cb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "ed7aec9829b002e7ca6cf2cf87c70e19d5bb54dc331a176c920903e8e7b517d4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "aae7f6da2415a122b67a0b9a558f0841f547f577f5db1ff9d0109492801d1e11", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "57ec0b3cb9ce1db248f12e86ff191d3cf646ccaf7d35644e1bd656d69e1518d0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "c48d3fb0b39c3833a37079b75fe9ee05c019fd94ee5a02c8068f5965fc318780", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "16e38ed59c7c3e8cd346dd8849e40b47d0ab7f1e3b9b2ccf2ea6170265fac6bf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "e1c1434d69ff562154abcdab3b98229cdd25306221f0458c0f880775046a0b92", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b76ebf62dd3353142cdece751233f39be9043bb48c10ff1fe7a768a3948baf39", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "79f622c7ce929f805d5d1ad8e5cdc1b3cd9049b51438446e40855d304a7e9ea6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "82211b29ac1e051e137312eba58971405a17549dd801763ad749cbecfd67d5d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "71964df6b629f14dd2638fa362a8137c2032fb27dbe03abbecb6b344c86117c9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7eaf2149c8573441410bc93569981a24678618d95736e0dc8392b0ffda7923f9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "a296461346c24ff105c0bef2c8e6dd66507e441cedc29be60a94c9ca3a817dac", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "9df41e9c380bf17bbea4464212909bb424eb1b25b9a3dacd144c7a3ac39efa2a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d74f0e92d22338ca580c50069818efc7e514ad14bb05a8a72ac4d420121e1520", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "69c7d90a23959182c00e5d316ddbd8ee61161348560286a1c1bd64e7dc0581fc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "2466d228807a5f630b6120dad9b352a11d60ca31b71f4ae97daac7fffbd963c2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "8899667d55f7978a30d49fef610ce6d8fb87368b8c0843b125b1dfaa89ab9238", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "281b4f43c14c9c1cf623b383ceae6f8500babd06998f31b10282b5a48d7b6041", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0aedaffde8159f67418746d4a3af1a72262a7b563ae64fc57577a8969d926c99", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0aedaffde8159f67418746d4a3af1a72262a7b563ae64fc57577a8969d926c99", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "2e495190685b5a15966b8cdc4e266332ec2f0b6c3aeaef4226ef50d6270670e5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "bfd979df7941ac83b27497c0fab381649c0c60317f0e5773e3029dfa93628a28", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "bfd979df7941ac83b27497c0fab381649c0c60317f0e5773e3029dfa93628a28", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "ae3065ead87bb39ed0878452580603e81d74f1a19f3c842b46a5f7f7b4a4e38c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "141c1f9b76264e67ecfc0f532f915581941228faea1cd407bb687d6c9034c716", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e6840f69e0ffe61f05177a9772eb7394b72dbd0bba62309eac739bedc425477c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "bb6cc278786b64012d67f8ad2c998aca5a98c1c07ee6e4995feb7e7893fca3fd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "99008a604d8213be39d127f738a8d1614b579e3b34feeb1eb478cf3c3d6cbdc5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "146fc25a58d60125f0500c3001d7b45dd0711a840b4118cedfc0b1cac64f040c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "0217f2f607e048232e1f6ce6a89041bd8169262f568929802a283409926aab0e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "a382a7396c7dc4d1b2cc6fc69dce184da2675b69bc40a2f2544f257727250520", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "0125655577217368d4497fbc17f8d09d76b4fa9c201b4bfa8ab01b179209c5f4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "cd931c2e29063832502f9dfb76b577c62e9afb8b833d1831e3bdd5c3c8826f41", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "7325c1252cf85e69c4904fe6e6ee762a9d6afb301743eb2ef0a372f56c78e759", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "7d531841c632837bec4367912f7c7809a11ba32dc472be41bd56315a6eebf10c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "2db8d7a1e42d01fcb8a08c388092984588e4807ab2c6aee9296b274a6a0c2001", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "83e8d508ed0655f6afcac5bbcd2071f6781e8773a96ec7d83b0c2f43cf4c6b73", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "83e8d508ed0655f6afcac5bbcd2071f6781e8773a96ec7d83b0c2f43cf4c6b73", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "a1eb6db63a566928616cb11a502c8a6073eb74f7ee0a8183ad3c8b1daed382b9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "9c9f8fed783476250090c2f2587a738bf6d762caf258469bd124ce07db8cb7c1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4155e98c72b6237ea29091c8ebde18ce12164f6807f542dbfe157f3755cd6b6e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "b34666948bd576c1c090a9bcbe6c550a60aec1c28b0aed5026098de78e834d94", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "6cd042a102ebbfa4f5b37e5ad0bf3fa9a28b1c8be13a17a27df681a106bff372", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "e2a5ab7d056ee884a6be8d591d8d151c1159ae9c935900a041eddb8029c634cb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "07f94747e5ac3ab90773d5fa894da459055e30452e57eb0feb5ae161c1fc3dad", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "2f32ac06d6c10e37ca6c024d4b15a1b30db2fb7d6d142fc9976ae4600a0faeda", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "2f32ac06d6c10e37ca6c024d4b15a1b30db2fb7d6d142fc9976ae4600a0faeda", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "2f32ac06d6c10e37ca6c024d4b15a1b30db2fb7d6d142fc9976ae4600a0faeda", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "2f32ac06d6c10e37ca6c024d4b15a1b30db2fb7d6d142fc9976ae4600a0faeda", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "6cd042a102ebbfa4f5b37e5ad0bf3fa9a28b1c8be13a17a27df681a106bff372", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "46d793e198ed8e416c7685da6e3b05c3821e651e71174a9ec819b4e2e2ad31b1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "9f9e3b5f8f17b8e7bc456579d5d70c8c5940fb6ae74cdd8961f014e7ebb3ffcd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "792587e7fc13157f797cc7d04d9eaed409bf850912a044bb07844420a2cf4285", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "158f505fe204f3aee0f7937c45f25010259dc1741e4127ba16b3bd67e6428679", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "6ebd76b0a842fafeca26bdd3cd295fe6e67ce0c29f65251042cb1c97d62ca387", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "91231e9a3c5a05ece4006ff490dc9b164a8c596a5c3bb45aa8ff5fffc84118c7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "c4e86ecf378307fce151f7bc4930210f19ba658e7447ea5d7d363ea6fbff35b4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "f3b269583f379a7936b6a731d1db321edf5d122afdb9a8bc6acafe38c1b0a5c3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "e8f9c92487c2fc10efdfad3a27ce6e856ab3c8cf275932d7fab438f64b6fffec", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "96570af3f004fb1e7a16fd3fe25625b8cca70f887bf1ae2cdd524bc1aec30aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "ad44a16931d9879b6ef2c27cae340dc9a8497a125a929ccdda93a85f23811492", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "83e8d508ed0655f6afcac5bbcd2071f6781e8773a96ec7d83b0c2f43cf4c6b73", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4b470de9b8c3c3f32dee9f682cdb0f4a388c998f1804fc0af30cb6559e80136e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9176c73368713dfa277581c9b3523345b556f2ed361e3b79b4d2371326f8be34", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "1d8cdf406ac4c76197c0e52f31876e0224f3bd55fc33b4814b6168e31bcc7563", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "e236fa5632fea31f04a0bfc3a17f15ce07f1dcb32c7d67195af48037ee4a56e3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "67a93c6c8a2afc63e2a85b7ab8c2036ed504114a453e460af4e49a6c856affec", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "216d1ba9e3a05f4e3d9c17f8d509b0df3e247ae2292b152999f6df6a5d04302d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "84b9231082063bd2d01f341a02f11cd0530b0d54542e8076fb2c54761c7572fb", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4a707a1f74a6f072cfdf8bef2510496540577183f0c5781239ab9ecc928265d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e4150fb8f43135171e3394158e6a29143884a0ceb853a9f0e5a08be3565d666b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "15b4b5ef99fd55a304b39ee0268e3fb0402d0d075dd1bbd2300324c1f1d263e4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "d996d55c9c7a83d3e1d5feba0ac7b25aa3088d94501bde7e3308cece15f8c073", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "5ed906405983acba88f89a8fe43d2483f989fb22374b4abf6d4386150c97db3a", -"T3T1_en_ethereum-test_definitions.py::test_builtin": "db748d9ef4dc8910868c961d409b6e3da234e8425e6f17b6e23fd20b496d9d4b", -"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "92144c87befb083d0c466776b1796bbf85ffbf74f5d87d8eefdc1fa82a627f78", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "7daae0a73f578b588d7051e8da25b2121ddc971a550fb2a65a288f770ba23d07", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "cbf597551b5c08a3c5d8e777ab3a9df39ec0652813f8c3f2f137d457c7aeb838", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "d7d82df450b05a26c35d639b2dc527fa4a356fa3fb3da8c9c3ab8e1b12ec7bbc", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "78f90c45fc4919f6a2e5da233be493e90b9691e908ccc983c9340850a645cde8", -"T3T1_en_ethereum-test_definitions.py::test_external_token": "e1449f004dd877f4d96ed2636cd0f96b3f154a6240f3f37d4e396060d79839b4", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "eab5a0fb53c4503b745f12fdd2db6f320caf7fd359d6f0bf14b393e0adef9af0", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "8777026a6234d2a6b8d898a15c60901bb6b81630786f31cff975712e7424b1f3", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "b4a5ef45384156b0d8b22905b82d22e72020b3a844e3a33be466caa5ad7392ae", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "0dfd0b1703c3ccbb4a4a752d497ec4e5f2d6014bfe65099afdb0684ab2bbd5f3", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "3a3abfd3700491806152e6589c095f8ff509b0e1fc94e25db12c577f00913572", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "6107bba5c7d05cc7fca275a8cd39a565e50dcd0a27be5df555ac31cb86373477", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "0b32d0b78b5ef33ce82dba85f1aa8941a448624715e7d8599036b927985a1864", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "3fe7410a53a84941f0b0ef1b11ac9b4d7c9d33909829c4af0d23b81151040319", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3f336e83e25475dbc8a47bdc54df1433e5f5fdbb0ed27fe146d88181d83c4387", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "438525c48e46a1404537769ad4fb195676c15c831c6cdf97033274e9137c99c7", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "b9228161eb94126b6c272a26e182dac0575b8fb41f38f7bf408f51c874e2a369", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "63e53ac8359d313132c0db6929b3ac327549906c9c3e3d88b97ae6205650a321", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6ef8b5276018434ca955475ab8eb9aa4b06f43a9ab6dedc7283f175e4d29b439", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "55b812527b0d297dea83d52c8dda78c35dd27f1e612d76a1101c09f465ef553b", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "01578224e12d182eb110f6a2db84cf195090375580c308cebb6c853920d49042", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "1a15a8a6ff70f106dd683968d840c12ce01538103524f9532e57cdcc6853ac88", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "4550f7ff4e2e082bd511f2971d989e4148faf8b895c8b3945ef7f21b6a0aa30b", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "e8496b038e8ca13413c6045fa29739d5c9796f51837b724364185e3b310edb00", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "3bb53a82a4dfc14a3c3f5bb8f5d123f16263b2a72e4d300647b43bcbae3adc21", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "956f75f9487200ae22feff465340b66b11a2d1322e060f6f2b34db3ca2e1073e", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "e491492ac02e465979a8f307edac303480a5e003761af2eddb1cee36a30b1312", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "bd93b123d857521be96cfee5aeeb8be46f70b466c1c74c3de528af33b0c7dcb7", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "a8c229bf410dcc95ab63f57642832bc79bff7169846749dd6a7cb3e652efc54f", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3c9b233b7821be43f521216a4a1362bbfb4cf01023f3c8dc866ce248acd89cdc", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "6985a5f0758555688f914ccd6e495b26bc13f57661b4985cc0c08fd29e0338fb", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b796391e289be2af053f0a5fd01ea0d37c16a1269acc0d5c5dc9f542f6062ed5", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "9392a3afa65ea220ee3377c2ede7a2afdfbd9f34a87ac305e9d730e762193560", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "b14aba8f4e3debd55c29f89d78f486e72ff217214d846bb318244ed55c058bb5", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "5cc72c85d96426a9be6dcea6d804ec38fc83dc6ac5c80cc77c5a050056fbb91d", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "1072b38f8041f86849b0b6c3c2e3d3fed6d0d0f3cd2601435b9a52ecad5c0e36", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1c5aaf1abaca82bd7ff4311c2b0feae597960f8730750a39925851deeb5a5267", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "395124e805ff3aadd6c5de317979d5e3a849758b40c7e0b86494aa605c582484", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "798447dc3cc19bcb0bf2623b2067b8c83585e7557d74b00aabbfdf60e736d5e1", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "a086232aeb076d4e4e0f18e8a0648542ddf8bb45d0a3d5abbf1c66dfa180a4a5", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "71ae86d19602431c02b553d165e1028248f45bd8073c2b03006675148d4aca7c", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "ef93346251587041da6c5b9ae6b9424f44ac5442a1602d43173c03a2c5c647ba", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "07b7d5e41757246a935385cc094704292d9f9bd725f8e939b3b745e64a036f99", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "4e8ac0288afe889e963ca9e91901c1218e0a03628d9a97ee8c244949742027cc", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "4ba22258b4b0fdb82ba2c2949706da0198ea57afbe7d13a16ca5ea34ace91775", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "eac4a59ca296aebb32b9e3db54adb64b158decf7c71d0762d0e88d9a65e0cc83", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "d6ed1bd176831850674664da5d004b66d3d9023e855f78f3b6f33bdc5d4b752c", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "a086232aeb076d4e4e0f18e8a0648542ddf8bb45d0a3d5abbf1c66dfa180a4a5", -"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9595dbdb8acaea72947ab7c4e46df733d735ca16074d3e13d15fe76ec963f0cf", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "5d53372717ab646112723bb822c472b9c11d8fb7375bad3e185e66161fe95f01", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "217dd45c27267ed0ee61c22144dd97db158b7568f4fdc7621c873e0e6771cccc", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "9c6a5f26a773ea3b5992b108a20e1af999a578f7eba0c33ee8dfd54a323e65af", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "217dd45c27267ed0ee61c22144dd97db158b7568f4fdc7621c873e0e6771cccc", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "c9156ce2c5298545c9bca0b2d6739b2d5f3f3493dc67f0aa18376e1870f7a7bf", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "c9156ce2c5298545c9bca0b2d6739b2d5f3f3493dc67f0aa18376e1870f7a7bf", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "38237d5eb81a6e0feaa3b61bb848dd841732d6690f55b7e1c89f552c6067a6c3", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "809a97a5b21ca4717f4a458b1bdb02d182f498c564875bc0059473b6a7b35fbd", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "758263c13d4e67e9f37c381d5ee792f2795d210d3716c6c8e7b1336983f81716", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "88b5d34c15a7ca1cfd2dc4fc46d0ff96f4dbc23e85683112807f11f31c490a5b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "560bcc24a1cfd88410ec75269103e03d262d0b958caeb6b1140d028ece0029cd", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "864bd37828859631cc043c98033aa63d9d3d5d83a0e08bbb2008643518329ba1", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "fa412199ae98717497b515dd299ba49fce20b820cb889276a22e331f01bf7196", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b07a54384b76604955c6a47e717bb3363863b87aa480910cd19b5b5507d491fb", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "c4ddfe38cfc2dc8412b9ee54a0d455234ff2964cb77d6a0845dc64dfc2262174", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "b4c4416511c892d8c9cb5b85161969b54892cdb6bb691e8b19e53a857bb7af92", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "aca993fa0adea131b4ca1bfb14e22d48cda0135c763f28797ae51d860d59ba47", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "b4c4416511c892d8c9cb5b85161969b54892cdb6bb691e8b19e53a857bb7af92", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a0cba15eba6f4817442fa9caeeb565d807bfde52006d461c167417ba705aef19", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a0cba15eba6f4817442fa9caeeb565d807bfde52006d461c167417ba705aef19", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "8896fe98b96cd95beed359d19635a69105e41028084bc01c852dd8881eca9721", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f004e6ed69d4c31fed4577b63411e0328082b1ae43086fcbc0d2031ee5baa917", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "10f898a6cb6dc0c8ae70c3ac5c63955de520130776592da584e40251d48eb9a9", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "a877ec86adc799635e1da72e7f82cd7fdb5382a92631a8810bab6a76b3075e42", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "560bcc24a1cfd88410ec75269103e03d262d0b958caeb6b1140d028ece0029cd", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "2eba6e722e2b61a10f61fa188909e314e0d72607faadbb756cba127c240d4776", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "82327619dc6e7543d14948cf8738d4ef6c246dba676c27c8555b97af70c315e7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "0e003ae3b5d3d7d1b3632740c856e7c70267e6cfd43f248a8631e5abf3d37b9e", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8074dd1e78d9b7778f397b01296e4e4645a779adbaa2fe0026c4561f326b4e0b", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b2177b2d49ad8968f443ae7c3eb40a61c5a79f359fcab22f394ed033e94d07ca", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "7e24bb06236bbbcce98425b0bcc8fb1f7b5288022f7b1507683900dddf6b6178", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "bc4e82b041c7e1f1d4fb890ceda6ca3e2224b32d15c092864ee0a11a22ac3f2d", +"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "32b22f47f8d29107b841fcbd0b36095b6a3d1bebb643b8cfaad7dac8cef72ce5", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "380ac53675e261dcbb4d68aa378bde7be830d926326d1aba14c1e0324b9ef306", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "24c96654c356fd64c7b84df817a4ffe031566a985efa1a0c84d517052235aa00", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1fa1e818ad800bb128893b099fb1488679ff5223ec1dfd1cfdd553172603b9f6", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "380ac53675e261dcbb4d68aa378bde7be830d926326d1aba14c1e0324b9ef306", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "24c96654c356fd64c7b84df817a4ffe031566a985efa1a0c84d517052235aa00", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "1fa1e818ad800bb128893b099fb1488679ff5223ec1dfd1cfdd553172603b9f6", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1be9cd9f5f1b75cd04337d86287dd6d08a0edd60efb8008c9bda92323b601be7", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "42b1aa73cfc895a2ba5630e148aa05133a085d1a3592bff246eae6fcec36d6a0", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "cde92b3d53f38260deb5076348b0340f040eb2413a54097420867045d62ed579", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "10506444c558713643e5d59f175afbc5fdc4ebc088600871f74b45eb4a528987", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c31b82cf353e9bce8f6bc20c7f33d86daadd42d2991841a3737a5f15d3e3b015", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c31b82cf353e9bce8f6bc20c7f33d86daadd42d2991841a3737a5f15d3e3b015", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "e566e26f904a35cca5b66af023509ed8eeaf1001cf42ca6ba18bbc2bfb40d896", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cb03a8800e9dea4ca9350accaf8e853bbac0f14573783e6a8044117075b1246e", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "1925bd985206f6532d93978812325138ae12846ebd451ddaf14f921f3fcb34ec", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "2d230107e25db32392f50c0e18ccfe91b0579b09ad505f537251aa3b29fcc465", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "2d230107e25db32392f50c0e18ccfe91b0579b09ad505f537251aa3b29fcc465", +"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "64c7f3dccfb13f68276f332e9ed8881322b75cb321d549dbb24f775ba9200a2d", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "64c7f3dccfb13f68276f332e9ed8881322b75cb321d549dbb24f775ba9200a2d", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bed30c2f41c83abc57c901c1db5669d7b234265fdbc615968f7ef0d7c808ddb3", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "a81ffc0150b86781923384b58c4dfa066c361a2f28994b7cad071ee507696d95", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "2c916a8385b9c6f1b1eb984167d84e8ff4d7042fa087bd14cab9602680fbf3aa", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "bb3242dd5e5c5ee611ff5ca41d9fdacdb8efaa3807d8401935fe4b7305f07d88", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "baa9af35d53edc4ef279e242c55812b79ab3fdd2312760f8dd70ddbcdca69605", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "4e01092b36daad44a655dba4f05c554c1346b6bd7f535ea0424f2a8146155890", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "5d4655eb3e76da62c98609c2b2d94ad5bf85c28cf5f495bc3d02a948ddd5c9cd", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "5e10acb5f7c226183bc2fa8b277a3051926412e9b48a9962ebb6dbf8c0e40837", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "65be9007c15d1339d8060e09cee66ccb7fc934e58abe8bafff74aab87848b794", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "fb2844c11845f84b7df2122b339af8b774b0a0aa939aeb3fd084f10562aff709", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "6568f96fd2dea91262577cc89f8911c68ad7b0d84ff470fccb6563fd1f943f1a", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "3f4f0e60fa2f1143840deee0a771c507d1e34e6e9ddf5d7060236415177da55b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "717057035c1b206da3feca39f35ae3537e499883534b47e23788d26e244aa0a0", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "8b191a4049315b773fa5eabb66c7f4aa3141891601fdfed4064b856b3504e00b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "dce8c1894fd0cd0ca69de280dc4368c4836664980150f0b3c2105ca7fedd6b97", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "1f33128b6dcdf3dcd0776c7a79a9a504028d3c74567594a5f616d7182d95a759", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "c26b57db75b9a12d2646965b18a6b103d25854ded934a9840d101a1674b1f1c0", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "20f3f0749ee233630908636163d358a417953f4a6e0008e7d6ed9dc3b4df5321", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "39f0c969fa6c464695d05882fc26fd2cd2c1ad3deab306ee4772062708477aea", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "c3f2ca91e97b2e327a4a1292abdde4c954c314f24f72ed4749617bfdb56d9c20", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "f8b788947bd687c78a1c752dfa71a5dcd5d6d630f081f52fd65f656fc9f81cf6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "4316d2cd1a99c16735e394ee24dae57bd88bce72b24a70750218688fa3996e12", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "00a4a0d2ace1f9cc48dd12830fde001d2f51654976cef1b33fbc3d19f0da61ce", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "4e01092b36daad44a655dba4f05c554c1346b6bd7f535ea0424f2a8146155890", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "5d4655eb3e76da62c98609c2b2d94ad5bf85c28cf5f495bc3d02a948ddd5c9cd", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "5e10acb5f7c226183bc2fa8b277a3051926412e9b48a9962ebb6dbf8c0e40837", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "65be9007c15d1339d8060e09cee66ccb7fc934e58abe8bafff74aab87848b794", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "fb2844c11845f84b7df2122b339af8b774b0a0aa939aeb3fd084f10562aff709", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "6568f96fd2dea91262577cc89f8911c68ad7b0d84ff470fccb6563fd1f943f1a", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "3f4f0e60fa2f1143840deee0a771c507d1e34e6e9ddf5d7060236415177da55b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "717057035c1b206da3feca39f35ae3537e499883534b47e23788d26e244aa0a0", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "8b191a4049315b773fa5eabb66c7f4aa3141891601fdfed4064b856b3504e00b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "dce8c1894fd0cd0ca69de280dc4368c4836664980150f0b3c2105ca7fedd6b97", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "1f33128b6dcdf3dcd0776c7a79a9a504028d3c74567594a5f616d7182d95a759", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "c26b57db75b9a12d2646965b18a6b103d25854ded934a9840d101a1674b1f1c0", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "20f3f0749ee233630908636163d358a417953f4a6e0008e7d6ed9dc3b4df5321", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "39f0c969fa6c464695d05882fc26fd2cd2c1ad3deab306ee4772062708477aea", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "c3f2ca91e97b2e327a4a1292abdde4c954c314f24f72ed4749617bfdb56d9c20", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "f8b788947bd687c78a1c752dfa71a5dcd5d6d630f081f52fd65f656fc9f81cf6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "4316d2cd1a99c16735e394ee24dae57bd88bce72b24a70750218688fa3996e12", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "00a4a0d2ace1f9cc48dd12830fde001d2f51654976cef1b33fbc3d19f0da61ce", +"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "e6cdcb76dc77e9e73759c523d38283db2938028cf53d6e8ce7cd892a6c1bcf56", +"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "544d03882451929ba6e33303dd7d4e9f5e62d90f8f1cae35a2f2ddb142d39a01", +"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_bch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "24ed244b0bb6ac9a5175d629b9a65d8431ed84c3bfc0bd46d75e20a7a824465b", +"T3T1_en_bitcoin-test_getaddress.py::test_btc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_crw": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_elements": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_grs": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "fa0b96a3766a5890febf174de4619ba317d95a18ac50c1042dc1e2928ccd5221", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "21710c3e6e9c5fcf06a5ca318446add812e0167e82b1813c2f9e68a9a1d27832", +"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "b41ff60e2b81a760b8c4ba0527da5cd507e56c38afcaaee3a55ece4c79340c6a", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "4fc76d9dee68702bde32ce5b0e78dfb145764ec6e30bf2b3325a0683fd71dd3c", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "95ec6156022dc34e898e30e67b8e5a1821d8fba019281a00f88d09f24ea8e062", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "e8421571a30da588a75a3a87d7514dda696469af137e90e0f31de2a77f21309f", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "ebaff42533a1fee17b04ceb449edb9275ca65a3cca042a8cd7f22a4b40e3008c", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "657ac8f99a138b9415fec0d58f919d2643469ed85cfb87ffcebe3ea4f2f71e39", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "1ea00c6082116044d2f209b320048d91f3c094c73dc9081dd7946d27309661e7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ce9f71ca623c157e239779f65a0a3b687cff155b3b18c7c3f8b0e1c09bd7f53c", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "3aa617cd38b20f2a0781baacce3498b5017e2a7bd12c749ab760df95ed833a55", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "acc768bfc9d725528a0cfbb5ac61b64d0dadee0e6188cf9e3eb09104ef406693", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "2728c4c2182ab306f1dc284236cda9015b4c9445645cb523d652d4c243850add", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "a4033bc72e4257e6b48bbf31416fcfeecd56be1bf4b5fa2cf3010824d66e7008", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "2bd5faf2bebea1b30001c4c1924d647b21cb9d9ee02ec99ab7def769893941c3", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "9596aeeef55c2847dbd6badfef7e27310078114d369b8a33facd498d535e92c1", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "d0d5835496111a896b226694a217f54cd61e373c617f30ca88f1296c360d4453", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "bf62d5e462afa40227579920095effa9ca7bf20c0c268f06fb54dd4e5a71c48c", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "d93f287cc4edea166f5a5b3e77f94ce0159562062a423fe0d2e2f73f1baf5f78", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "c46c807631c51826c0fed3f47e473224af0151ca6b5d0aa741fb3f5e12ccfcc6", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "d7b31761213e1d352b177361f086d073d2389099a2b3d4ff68d4f8a3157318be", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "55b932e700a2e07272715ac50e65dd0835da04899d601a2ca5092a084e296511", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "2ac3c07171d086d5bf7933a4efe5bef1e412bb4902b18b35e7aac37fb82fb86e", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "cd1a521b90ba07cbd821614d3f280d20e54e9f40d7aac461f56f1c2c5117ea98", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "331a4a5a2e6c18c0e6296810fdadf387c779977ac134d74f9fcc5f385d786dd6", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "34600c097094def50a8c058ed5d732efe4810a041b63cdb7d2ae963f3c56d951", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "a92f52b879299d79c792e38252d1b0657a11289e7967926854aec180e54a6bae", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "a92f52b879299d79c792e38252d1b0657a11289e7967926854aec180e54a6bae", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "911cb22c8dc65fe59a12c3b7869339def110fca4836ab1fa4e89acb06113268d", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "0410a6a58b29167cfdc560b555e0191763d3ab26177f3e29146e10609e113821", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "8a2db16e2a67ab9999606905d4cc376f2616b3d61d2ce241a2c47275addcd2ec", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "5b3739958d8aba431584574af22570dc8a3a013e2b92b963348fc2f1e5e93c00", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "6e60120ce4f4fd7cc43b2c694603b072301997ffd7d278a7554d60b3a0ecbfe6", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "6eead873937c0ecc682f2e74ffaec5ebb6cb142680d95ce8d9c7957923ba105f", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "7b28b93ed52de4c9f8910a7e3ace9d9ebea9fe8ca23ab22e01d98dd0b63f0a88", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ca6246da1fed9903168b1d4c1190388943f92d065df791854629f71426a5447f", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "8f27e96559089113b2f44f7fbb2dfbb3ead5267002f22f6cc985d59dd1215117", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "deeb364d24295e8e40442f6c3094b61145c8f76e90a058962a1165224c3c135d", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "de69cf0e27a16329396b5d6184b7484e4c5c76c843cb6aa2d97ae19ff2ad6709", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "923db33457a24627f0475cd41a22ad15c98916b17588c612251c3e126f1cef2b", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "94784562ef1c4fd318cc627273db05ea3cc9764c8ed1b6b602997202770ff52b", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "1052a8045fccc8fd37996caba0fc3ca30d34745ffaece5a50befbd0e35265ccf", +"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "5d4655eb3e76da62c98609c2b2d94ad5bf85c28cf5f495bc3d02a948ddd5c9cd", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "f82fb59eadd08e323c3de99fed5b3365466a9f4dd26eb67e1b060bf1e65c344b", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "a13ce97b08705dfe0578344d53e5a236c1f47fdbaf5e3133058e2749502580b5", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ba4a656fe822a6d08303cf33d10c2c02a4efb9466db92d432765fa63cfd451e8", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "06784bb727ad684ad15c08a2b8fbef1a83051facf2d8c75bd424d5b7b7130d04", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "78d4a4ae3a904ece054371bbc7c33728c82f18e87577cfa750a958ab215df544", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "5c618a97481abbb0733f8dc18d207d394e78fbe02058c83ed512252d1314e37e", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a351d85b5f9d420dc4deca9da01da5d490bf93eadfd33758d3af4a7edd7136f1", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "0d29a311fdeea570286d477857dfe33a5c068e9f5347e1d69ee260a6d710f37d", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "1f33128b6dcdf3dcd0776c7a79a9a504028d3c74567594a5f616d7182d95a759", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2a5c0139113d05aece28df5d462acad233c1a176b2b7221905ca22f67b55874c", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_grs.py::test_legacy": "2c07ac3cf88f86fbfa7415945a15287cdeecfebf6f0e0bcb002d681042957dbd", +"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "9d969eb4928b56215bec9d20d1246e2cea7b32f4885797915a8a9a8ac0e2fb89", +"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "d972707086bc0f90b9b3362cd37b2c421f6f5b641c4263e8292f86e78600d663", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "de756c62f25eb78c64d9c8cc5fd8e698c8d8b0dba91a7ad3991944cdd96c7001", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "a84997b8ef37125b42f75ab5bb35ca91830e5ca52c268899c3ed4dfa70d1ab8e", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "d35fb4cc18563aad382e66851af7b1ee6afa27c425c24aaaafbd0d10fb3e89b1", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "4bfa9be707cd2d33a7eb45084ff7752c1483717b8d5cf66a46bd87f6d3e6c14e", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "608afdab303404db53e8fe6882edf54c355a31dd4caac7b2d9a0414e4620de84", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "465a8f0571240d24248f777ced3d8f5643b897d45b72991793654db8aab573ba", +"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "906346e37601d8947e1926f952151006c208dcf7d969b0db53a4a7539e002342", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "6ce1fec4a45cb077a7cc73988b730e30d5faed4a86d0c6a0c7688513544cd20b", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "7549e8bd8d5fcbaf6b7b697656e162489c569b9e00c13f758c57220d3c04efa4", +"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "ada0aef3bc87275bde61131b6435e700da9646811f0358199ffceb251b6d1a14", +"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "53d0f45456f7e0dd9e4fb980d1795e6fcb02d231579ec10334270eefc3394571", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "601506cd9aa1f629e2b4540c7287762450a637b2f401f8e62c1136283261c237", +"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "24aadccd63cb5d5dba1c5c095a32d857a8cf525aad85825b255d3e599481b571", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "d45f9d2a879ae16fef4581624bb674ced428e3cc553d2ab556f3b2932d9b8f84", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "79fc5451adef33f6e1c40f4dc47cb59006687b0f2e1628fa1eefedd19edd1e42", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "c5f53e6b9fc7fbc051be9e362821811a15597c51d8f10d8eb305bf52179a104e", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "862064ac649a9722acb30f5c08b1bf706d9841c14362f181e092f7309b849b82", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "ba2724207c12a26d15ca190e6def281473704391850d674e4165bbc4bfaf8fee", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "ab775a7b70a39331ee169aaed1209ae571788225bd57c5abcd8bb24a813d6010", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "685bda3f3d1a42841d8afadf548611a69dd4ecae0622e82f6b98abcfc6ea5299", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "9ba0e992c1e78124accab26211faeeb8257c808902cb3a45f900883f0f863567", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "a89409696176d22cbf002cfc6560f0439b982e7301ad3b5d2b5f8bf3e6d76b4b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "dd2d40f9e0196ae6a67273376b16a5f42d0179eeb400f9381c17c63ecb320d4f", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "59ff2e44a8bfcb535f66d3216b92f992a4c987cc61d8364b75a8c35e9046d938", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "08532a1cd2ff9e5ab87fd2fbd138f548df7fda283f1d0518dcc78241d8644310", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "c8fc403bf1c33cd6841bf54643f6aa05227adec49c64733b80dd2455146ea828", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "75012f06b4a05fd166209375933707a950169c13d7e1b1f6add28a4930c55025", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "ebc4c388887adf51b66160ef2355d60dc99024ce61677a016d5d241e58a94281", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "61defa42e7645b56ba0ac069ba3a4ea7f5355008a2b6fe8c51544cdceb737d5c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "bc70be19fd8a69fd6c2d2e07d38bacbdc6ddfd49807c7349678ef607c4d1afc3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2bc1c2163238b5cf1beaede18c79de05d68675569faac17501419c12066402d1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "81f1bbd09638aabe1fb65a233e772a84b1efce4cec0c7cb614e5552fbdfbd19a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9fd4f3453bbc043013ac393169dec39386ce513c23f93289e3aa28472a97ea95", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "7be9043c5e5e3a76f8b14a26a8b365174c0b014fa8a3ddf1a60c2fd13cdeb722", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "90897197d52cc2ea1f515aa013be19b7aa27195f9c1db16e02a8774de216439d", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "f2d74fc63ec379a88d16476770917205ad4293c066edbaa8f0263d626b9f10f2", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "f316620ab9c40a21f437a6b5a6337ece5cd81bd06d4c0de89f811278673abbab", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "e51a045dfd931e713a1e239714fec103ac06c11f4f8fe1e68f1f4b15bd1835b0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "70e1e7c0fec86d49164368a64d2543edc1b2009879a2006a065ad29d74361dc6", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "c31694308b48eace0c10586780b41785d0004beb6ed9b92e27d8bad5be185aac", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "14ec4f0a7061dd47ee2593e575d7c4f70092fa135573c3ba1b031cc2bfccda49", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ac50a695448d3279181be1b62927b740ff4f3204f304eb832d9153575d6626b1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "77d78a2bd257dc523c0384c9a5077ab8ad327da816f8b123355199191bfcbbb2", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a1e9c360d78f523799cf001292793dd88f595775fecad0f9418ea139f1b1db0b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "402f84d0063ea81f133c303c21fe481f4fce6f641cfbda8cbab3c9a0f9f0d586", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "ff293df83d4d144a4b3f8f6e71cfe0c3f61b0c37660158f92284ea60259d9746", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "293ef10998d010987827ab8ff412e9e8a25d7f449b818954c1f4f00be878f341", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "9a2a524b62c5bc7cc2b908ba1785e27dfbd109929d27b3691d5a26fc30b63e83", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "e6ca20b675bf956f327a42c2afd4ce450c7fbe449d94bfa57fafe193acdee4f1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "fbe0a61797f154564f2134eb1244b4e0295223102381b77fa621bb2238a4cf6c", +"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "3469198031a3ffda9e078fc7fa656394d7076047788b912083ae9939e4df3c05", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "d5627a9184e265efb3d89a769e8b929b472515cccb07a4a4d99ec6af14adab21", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "3bef9690334ab0f325144988876e9af9636e8741d81f247f9a0f2be64a8a7520", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "98c6ec9a90352feed680316cc329427f3fb38b06ba0fe85bf7bee14af296a990", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "98c6ec9a90352feed680316cc329427f3fb38b06ba0fe85bf7bee14af296a990", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "ae6912755811f502572bfce4f3f1f7591624b36fdd92e38ae0b91cd7f1e24b10", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "bb176671bc20621a7a35a6f954fed664b07b0bea5094175c62b63e299ebd0732", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "f9c0fe0b71ccfdf56e6ed9216a3ea0e78ff62ca7f3fe3d1250a823afe76f8bee", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "aa82c2770d010729239c61cc0dc4ac93aafccf52156b705c1930e98b10bd204f", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "9138f9f59e68c2a3d98bcdda4c23a8529fab4d1f058eb5c6dfb04ad65807b5c3", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "97e1f4c17568c9ade770c36a3b5c4f656a7df71be48f5fa51fb0c75752b45e38", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "97e1f4c17568c9ade770c36a3b5c4f656a7df71be48f5fa51fb0c75752b45e38", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "a62671186e9724d0d09b4082f5f9a5f3491eafa2b9a97c4576eacda82fa89998", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6089c238089366ca88bcd6c2372e42a4ac6332aebc1e7c81bcd3815125af6954", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "411018d0c213ae7258db24e398c2a401b5fbcf70dc5603a65bb77b48d4f7f834", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "411018d0c213ae7258db24e398c2a401b5fbcf70dc5603a65bb77b48d4f7f834", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "e42424b85832c8a2a95b5934deb211cf80654e7e0932da98155ec6b3fdc5973c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "c4a1a2849ecfc5232636060c60f94ff89d205fe18b23746b321a8dc063b432f1", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "f0c3f647406ef7b15763b06aeecb09024a58ad7b267c36453451561deece318b", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "f0c3f647406ef7b15763b06aeecb09024a58ad7b267c36453451561deece318b", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "200a0d61f06a6a521c9be24c0b23ec01cc9ca0ff5886e0f282a71b41590add64", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "4b5036d01043a5c8d14e3b1bccbdf79e52677508dea549b14400e11b8a4d65ad", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "ae211cc0faf23ee0010edc4f87b2048757382c0e4a93ce1b865d9ab6623085d1", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b49f741cf6fcbbad73d7554a4d4059b35d9b45320a78f371aeb1563e2f9badba", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "71e7f8e63b2af0e9e4908074ec65e5b84fd1791cebcaf483d924c7efa55c9bf7", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "7af81c491da19a112b86d21419b34e89fe60bcb2a2d90e93b26b237a52a935ef", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ef04598b2b77e91191c4a15ec6cfd1c802d1c44e447da3e3f6d62528d4800aa2", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "877a595df83229f254b52106fa2e25dbcb24e45875013943bf4cf091d8036e85", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c5da7dab822bde34e57ef6aec744c473b81b32eef3cb8b8876d02cfe43c7e1b7", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "0210fee2e6d92fc18c7657f20b32c683e361ca21136e103ef03cd5a347a3ab4b", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "3509e7d26bbd3e7583274b10e0ac48205ca388969fb9d2ef42a6034ed5f534e9", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "589ecb29383359ab82ef0e172f2100e1b97bb18dfb6867cf098fbd1c14188279", +"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "f1142e1128fa55eb1089e31841823dd048bac59d9ff6dcb1c7a6996e2042b43a", +"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "f1142e1128fa55eb1089e31841823dd048bac59d9ff6dcb1c7a6996e2042b43a", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "ad7958671fa555a7d7fcc2b702ed0b6b9e653c1840f9770369f90d080e03817e", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "6160d378f11f48042eb425c08a8feb440df65837bb4d040e016635ec4673c190", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx.py::test_information": "3b7bb2f928a333177990773f174eccdc4b49f2a23fc15770c3d333ac048ff820", +"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "b4c59c135bec1e6c1373a51410ea2dbeaf7870124deceb9a6a18f1174836769e", +"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "4adafa4e95193bf5fd1e466c15cb762f3a39025ffc847da30d4c2e2f851b6fdf", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "ddc62fc79029bb0f155a56a244b62ff24157a05fc519ef96db584ca13bdb836e", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "ce890d82b51ed723cb0d0ba361869ae97b4498d15ada88b263c6f45582fe7bbd", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b45a12681d8ecdbe65b5cc2177585f9469afff079a467c4ac39f0a2cb6eac257", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "ce890d82b51ed723cb0d0ba361869ae97b4498d15ada88b263c6f45582fe7bbd", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "b45a12681d8ecdbe65b5cc2177585f9469afff079a467c4ac39f0a2cb6eac257", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "8f9844456d999ab949d4f4799bc7c4c40bbfc294eb94d6758482f0396c6f9e87", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "8a62d1c3ab024d6a34a432caf38e6e6e821c4d1dc0384fdcf79bdec080254fac", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "4dcd31522ead5a241e4e42781ea827be67d3fde8375fc38d50d8629a1de1c39f", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "1f1189c8ff829145ffbb0bcb9812337fd383833a62a662867f9832345321cf9c", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "b468ac75e14e041c2cd562aa1bde65a1a69efee4221e8b2b19f04fa4bd10f205", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "087741f80642a762d68ca5ae4ffe1c14dcbc58100f9de518353834d2cd89c6c2", +"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "bb3926e5bbe411347e2a34d87a128769c205a34a819eb28bd96a59d3770fb9f1", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "2e26fb90126d17455da389ae90478554bbe1be07f56cb98fff65aef1dd61b4af", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "fcdd9d9556d4702f2c583d550363af9370c54ba2d0a7c8fd2701f20f533c6f23", +"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "cf3034cbb2e6326ac7ae284b3b06557fe639d20434cf9486fd576aad45634cd0", +"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "944d7d4e300aafb069d51210a467b603716eaa949a7d3b19b07298446a7ff85a", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "869dbb5c7525a9adfb1c3dfb41b0a6e8a74fb30cb0f41ca0f961b4a99830a8e5", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "9a54414d7451988df54cf0ec95c8d1dc36b56477913188e87adc8ad3e364211d", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "34d545937abf5ed8b6fbae6aca5f77fa1717044a29a8d8600f3cb8a01c10519b", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "f1142e1128fa55eb1089e31841823dd048bac59d9ff6dcb1c7a6996e2042b43a", +"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "2424846384bb28e3454f8517463494c1b08a705a4d1881fe59b43e62012f7bfb", +"T3T1_en_bitcoin-test_signtx.py::test_two_two": "7978063ee5eaf1034a5fda0b553847e4e10a049a256eedb2f73608c154d1b951", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "bb3926e5bbe411347e2a34d87a128769c205a34a819eb28bd96a59d3770fb9f1", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "34437ebada26e8c6b8f922e8a6c0f46b1069fe7c667e792a460c62a9f3ce3faf", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9c390ebee85db1d060d96860523ed2e97c5e552ed95a6089c20d8bf90999913c", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1695785a392c0dd27aa3afffc4f28e79a04f24a81e4ac1191d1b8c8c70adb3cf", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "bb3926e5bbe411347e2a34d87a128769c205a34a819eb28bd96a59d3770fb9f1", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "3223679c003e04345dfc4ae0697fdc102dced51785d059aaaf1f6199ca228dc4", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "0aede403a9e495e7aa626e9dfb3dcb2ca61c73d7b98062f1348eb49e3700d202", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "f92cf61a9dc95f65aad60a3a37cc2ad8a8e6b5f7ea8ac22167987569eba56778", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5c689cdd5f64156c4750f5d35850c0f9558c9b91088b04c2a26b4918592e032e", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "3223679c003e04345dfc4ae0697fdc102dced51785d059aaaf1f6199ca228dc4", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "4993cfa31c4ad58515260f9e7a7e06144e9f84452b1336a7a5d86ee76c73703f", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "fe7039ac26a4029f5d5cac074288648884be369c72e11cb2ed8f8c7fbcc2f08b", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "0135a2ce6fb53d1844e5180cae97f4987715a1dd82b5330b5960f07295cc8ce6", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "323e2c04fc642c048e1a8e650b854fd0e03f975a6c426ec690ac37265b6458cc", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "f4c43d215c6412ce080460312bd6fc4ced515fa631d5aaa84877fd85d4f6693b", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "6102f3a27a6bf58befc09701fd20128e8e06dcb4b3cc84521800ae3a820dab08", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "e2d6ad84244cf57ef8508b2e5cb2075df1320504d9e36a5af4e3b765eaa2a0a2", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "0978d2b8196416aa7237b764a807d8a3d08175662309c4be0c8fdca96e8ded01", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c913aa6442f2edcbb569f539f53c0ea528f5e69209c3e0fced2c25402a4d75cb", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "925d4f873c05ed311c66de3c717fb4ec5045752751eec9032425d2880897b9e8", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "334475998ee143d7b05944e985246b6b62edf9fc817714b9a277fab151f05158", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "96ddf0c1b91e5e0fffa7efac88af24ebe9c4089c0c449cc7ad25aa8a67096094", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "8b175b41520ea4a30e6576f38978ef536dbe88e35bbe8a9a45f0e0ab564101ea", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "36db99bc3b1fc496ea9065383fc51b277eeb3d68eb5a0baa38953a0b823537c4", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "8b175b41520ea4a30e6576f38978ef536dbe88e35bbe8a9a45f0e0ab564101ea", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "36db99bc3b1fc496ea9065383fc51b277eeb3d68eb5a0baa38953a0b823537c4", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7e14d8735b58a6553149f10977ff82d0b6038ae2c4919ef5a9ed808b4f6a871d", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "28099ed9a2fab45b9ee20b9de26e7d59b539e86aa99bc6bace02c18c8c5ab415", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "a3fafc9a902d446984a19606091b936ecab002e611f255eb1d17e3241e665253", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "000fa647879d5a32ac5ccd97a08dc3cb8ac227cf0529050e56ca340cfa003ace", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "11ff7103b1efe2d4cf3f3fd3bdc199c847188591a10fca163c83f838025045d9", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "f9b1b018331ce1a25eaffb21af253462210df2ca4f954015b4944c8b6135726f", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "f3eaf7e2554a31b88f6b3db51077d39a4b9497dba375757484e56427d9beea4d", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6812b214cabef431f29d4886d950a291716405e647b31b36ae86b474256b15ee", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "df1f8c315842233803ca30aec582a1127e1ec98429f95de75bde00c2faa86345", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "df1f8c315842233803ca30aec582a1127e1ec98429f95de75bde00c2faa86345", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "df1f8c315842233803ca30aec582a1127e1ec98429f95de75bde00c2faa86345", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "df1f8c315842233803ca30aec582a1127e1ec98429f95de75bde00c2faa86345", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "0c02262bb89757a56a8c06bbc7628772db8b39b83e42da1b5ae519425393d399", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "c150ccac1d2a62a34a38cd7be6a600a3cf609a29c2adcddcb58123f9e9252d72", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "91d37d6fdaaff61f53d01295355923c2c409e0a96633fee770be5fe6f773fecc", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "91d37d6fdaaff61f53d01295355923c2c409e0a96633fee770be5fe6f773fecc", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "7479ab933a382b5e2fe2db6001fd88cb92ca62de370f34675001ed507f782e13", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "520128fbfb11501413df234feb9a5cb8866f15a66c1fbb1d16be43e4a9907fbd", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "610e44fefa235cbbb2972c805cecfead8fb3cf8bef2827425bbead673f2d07ef", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7479ab933a382b5e2fe2db6001fd88cb92ca62de370f34675001ed507f782e13", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "cc0263c88494e22af81bc648d97f399fc4083f2cd6215f12793e6069d9fbc1e7", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "d4f3e1a820aaf076037363ce20b7b8aa26119896f303655c607d591f88dac52e", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "d4f3e1a820aaf076037363ce20b7b8aa26119896f303655c607d591f88dac52e", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "d4f3e1a820aaf076037363ce20b7b8aa26119896f303655c607d591f88dac52e", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "e08895606445b66ec41cf3dd18a8c995ca972337b42ffee367e6d29bbdae8c9a", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "d4f3e1a820aaf076037363ce20b7b8aa26119896f303655c607d591f88dac52e", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "900285200923bc7ebdc8be8e273705dd9657bb5e1a52ccb4a579cbe4c1a5a6cf", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "4952595a5734b8eec931957004f5ce1ce9a4d404270fbd1c41f3278830df04e9", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "dccb77e26b919e2e748d01ae50e32cc3bdb5b5c110198adf90712ad8bded2b28", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "cf272aef156c5009036e51b0684753820ae96507d2386e02c8afb2f40ec9f000", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "6aa7ca2d4c1bdeec7d012a384d2f70538a8305dee93b8d7c5000e58103debfab", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "cfe67132895840a53bf62a6a7792f1563c44b1f614377b7d41c3859816890bf6", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "168d3aeac75321c9a8c932e1d0d9188aeddb846cb390b595216f9dc678b0a93f", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ded3686287141d4158fcd6e88b58948700d45ee9cddcb59dba2fd07f02b81590", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "f1e932f53ca46d8202f0d4bd6e95887f796ca314a6e02b58fbe0aec3f9a7dd94", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "a18fa7d7b907a04b635580e6949b3eaeddd1c301506c6df496838773ad1b07c3", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0d8ea1567eb3552ef0b695397b653b79fbf404d00299eb078fdfc4050897b077", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "aa7125b940adc096193a1bab8a9178a9f1c5e31b8269025f98a792c779dbb953", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "7a092535fad7453157d63339bdd0266df0f41c19190c928e1c8a5535393caf70", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "3ce641d2104f1c7816629ce1ceb9f16e2427f6d4818e95a4b98b7e471c002288", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "3223679c003e04345dfc4ae0697fdc102dced51785d059aaaf1f6199ca228dc4", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "a54821f9ee53eb18de7356b2ab63afec5ba5da0a7456fa85db03b9c5975e48f3", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "7b06ae83ff2d7437c5b8b3b6fde61f5e7d0c235f5c0671069b48d2a05c5e230d", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "47fd231ab3beb66099039cfad1c8a524814484e74624e6c3d7162932fdc11130", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "6af06581d00f9ed76d64ab1d55836fea8693c8904b2fd1358b88b8089d4fb0f7", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "09ff58cf1759f0f37fe0e210851fbabd4335a49028eb29274361c631886c21d4", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "795798685b0b5b5b15bca15f345af226341c8d71c38b760bb163af3a71eaa16b", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "0c752205de83da145329f7b6e9a02f94cf11b4a8e1a7058fbead1977365afbd2", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0797afd5166cbb6dc611d076dd4c187aa006b3092047ca16b604bcf99f83bbc7", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "410d0254fb1db69660962d05d51e44976c3e4273e0ec75cc851a2e677d9fb051", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "65596a129c43050b60fc5f3c8ddbc0bddee1f01f17c90faf7942260c33d013fe", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "90b68e7076128d2e35a8638ee8a62cbcd2b29093f2856919eabcc1a6c5da5680", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "dfccef3f97cf8866be7c3250b9f4340cbea8349886e6c130909c5a2831420c79", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "81c9a008dfacca95e88ff6bab54baa0a9f3a1e1dcbdfb6b05158774b6216c925", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "b69bffc9e30f9780250c01abb7e5078c6cc2a39f789d1762c5315ec0aea4eefe", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "49f46ab5589dc30269ac4bf0b45269710f25f8d69fc76c6e09a7e1acbbf7d64b", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "4d67738f9912471a7fea7fa8e7a4b44163efc884addd3642e3db1a381ae78c5b", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "1b948775b635975d65cf3c328d72e4324aef8e174e3b45232c604da7f44320a2", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "6b8db2da05283f9b3c00e6182fadd83cb652658389270495d3d94458a7720859", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "ab65fc252df466b73c321bb8dab34af6f228435e4ab4f35c0de74955f29522dd", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "b4de5e99474f30579de998f0c71ea14d50899194376b7174c4ab38f9668ab751", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "a0b28e4bc80eddca77a02480e061d2c3462cb27df9fc52fc370afa0744e97a60", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "e9794281df16696853bd48f4f168d3ddc34a4bcc1ecac3d79149ec4cf70676d1", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "33534f457d8aad1ffb068bb9a751cb103f5f1033beca211403a8cc36041337dc", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f6867649b5230fdbee87d2a8b6e3c073d1a1ddab7f0125b71bb699a930726852", +"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "c784707e36249b24855017856e1855388401fe22d2ecac7cee389e83afb28130", +"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "166512f389ff5b5a13e4b2f68b607810a0f9e1046e1189fa4e14cf80490b0647", +"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "059725dc906ebb0356758625a2016e61303f3a0a1a7161418287d34921360a02", +"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "12453cbbf39eb9d79b2cac51deeeee7b0b28fb974ea6b2e9e88e911b3fc43ffa", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "d0515fc63a389e7f5ab6d8db217270280ffe3465a838bc3fe63755242bb06638", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0b47f5fa2df881b43d7d1f5ede242f6dc6924ca310c40db2b2a6a7a53caa9a29", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "b07434387da6171206bcdf08e1aeb67c28b0c4d16703c2dddb3e987f8986c132", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "71bb7d6283ba06a5b9e6f7c5334376e9f2ac08a71942cadbe4f90eaebb59d943", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "5ccc12bb50d4ffc0dd750d2ec867034e1fbf3e78080e77451d2d19905348ec08", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "91488f9ad5887c08ab541a545743785a2b5900506f6169158fda5dcf0c88c324", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "5136a60a83bb151fb64848fa6a023e7b1bf1d011879cdd18e6837816452f055d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "de9c65353dd92c8a910282bf1249b57861483a24745ccef2fe49aa2ee64e4f93", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "770fb37e83b3a2bd9c2f6fb1158d16f839af0f24db1179c7a26c73abb2195ea6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "603a59f90d05dcd6b6ed8b6f23ee0e917a13cf479fc109b3a3b1324508e9ca9e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "42b178eb2650380e45f52d57e4c29c7b17e794fd50d74ad0ddb643c38ca24b7a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a946b51f20072b25df09ec384246ee892a983b029ab36f4a87375bbfa1ac7c14", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "794aa8c258749e34431b6f5e39f9af12e4c6a3ddca9fb28406a5f4a81c27aa97", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "0f57e9000b0c512dadc90a481e23d8b235cd6d587c9b6f95e85255c17397325b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "2bc845b5dbf69183e883690689fe14592dd0cf26e7600c5c8447113b0442f7b5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "f6395d32a21f2654810edbf852874eddf4fbdc6a9f0920ca6eb1996064629298", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "efeb32caaed83e333767c854c15db2d3418543837da09bbfaad8f69090f909be", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "3f80e62b66cdb4664881fccacd366c3137663b05dc389da138ee30a18f0a4699", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "329a415aa1c6992daac8a4d5ae36d2557bb17163f27b21204d1e4296e3a2710c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "1ef1d82e0799b4bc5a3c373a57969dde7d6164e07ea91b5d14141382e422b6d0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "f26e54ae2eb9e395ac03580b884e6702cb83f64db67bf3040e92797cb2656fea", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "875aff40c3be2422e052a03c2905c9468771637c4aa3b92d18bd253c31c058ff", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "690782cad7ac193db9b684de1ec5120e5816ed19e0459052af6cfe1951ed7137", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "bb1f3144010993ed8885b6425530b8a784514b3d0e513c1db6d667bd0991c584", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "25ea5b243af474a4766325721a907c533fe504c0cd6d5f9704498fe135064bab", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "01569bcdbec3f373bad3699d671a93cd6e35a0c165a6f52ce9e797768e7f25e0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "a1f6bb656602661404e9a06dbcb38f5d81f34573fee9d94e7c8db423495c28c8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "2a8310d9d7f42db3732f376fae6258482d9a8d1b1532242973dbe028b0e43b8c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "366600e881460575bf69fe650f9eb22170a3ce48c0d60ea9a575b8e0987992d3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "5f2cddbe3a83872b372cc7c9f9f610d7af685d24f8640eafd6898a2623e3f5c2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "eec6e4d4a22d00d8752b5f966794a905f79926ce29750fd8e852da51197985d3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "e592555af4ac6f1aad641c57ae2be3daabea26cfe7d25cd3a160a14107d5a71c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "1efb905f86feb67c2d0dfc6bbb97d043de7b888980f7fb413c67192279de5801", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "1a6addbba4d47a2d8718d09859e1d8e5d1e5ea356f4c432e3f3dd25ef9ad9de9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "db69c2a7db57478e156f4ee7b18c29691c53d8789cc30b19645a4ae0a5fa0f83", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4756cfe165eddddfb92331072878184eb4c3dbca54633e9ba83b5fcc8ebf9ef2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "80dd2ba64dc3308e1ec9e775cdad67d1bd0f4f72c189d47476f0e2c1021b63ae", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "8b41782f5a231ccedaa82fc860803060526205aa60a4172f6ae785cab8e36408", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "c26175129860a4f3cc4e4af581c4435d574ccd3325e78ea46ad8846ac460af15", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a450afa3dcdcac54500023adfd9ba7a583d549062768fb8092877d8642302622", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "66f36f3d3d56decada9f4af870f72a6ff7bdfb73d6cc7ea3027d1678553c9a8b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "d9fd230db2f7694cbbf18e0e833adf93189defda5df884f86b85c40559e2f5d0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "f022b359a74e4369198e0c439b5b3edcb4c3fed7810f89e05bb23c1cc3d3b4ae", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "17fc7bbb81318d073db6dcaf10a3f75f347d5864ee9dc6be904ff533726e3540", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "ea8e473cab029f2a2c3ec1086fddd1bb722f40c858ec6067e295fd3eb99b3107", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "3513a44e5fe3acd5d9411001cd87822d29c211f473b266a81beb5d197baba7dc", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "aef3fc1de2b982a681d934303b48b5130b09d173eb5290f1f24db8036ee31d03", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "832011ea1de191dbff12a2cd2af7c7684555c5876711e23c056118c6bdd4d510", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "50ca054036f7ae5ed27cbc476a437671d351538fb1969f2b9425bf6297c209a9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "4850dc66490e3717375a313722fb12439bd10af6717f4216094099bf35de19b6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "bf581611bb9a3504cb8e4f186451004a79fa5db4985218ccd0e7958199ea3b02", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ea8d83dae02477a7adf1be75284fba0cf11554c87cdfa55c49eba3cf9e24f3da", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "15196cec0d2adfaee92b30ac3528af317114f96a77ca66c9711dd7a815148c24", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "ad5d17b9e80c61486899c0aadd50b3c0fb6c10a85ecb9ad8267817e3e3d2bddf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "113e558e64bc1ac39ee9ef9084123e8715f16590499374cb3651c804f4fa4adf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "6bea96bbc85de591f4de84751b44474cca078520dfb2ae6b61d333f108b22bc7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "e3ad13db5c5ae56b72e183253c4b1f794bfb389ca0a753e0eae303168d78a35a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "636520319a566ef34e9461c070e0b17dcf6c992e3916f111f4c4f83055b46def", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "c4d9568659df436ed61e3794c3d1ec6c7d4837907b5576dfc37ab62ec7302cac", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "5eda28e506216e6b71890c4742debf605746a056f78fea4f917eda00467e25c4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "90ee1a05e5c3d9285c9f848fdeb44d8e8da8e0eb07249cf3c50a7843ae5b0554", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e3b62113734ab5b40720ff650868d9e7c73ccc3921de13c6223063697bc1bb63", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "d4e8f6393f9ddce557a32c46fb6ed11bbd5c9a3796945733fcb2c653809621c0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "370452068d54260301d688e437b9d9d0876b20fb70d1e45170526f73400dbe37", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ca989b00bea2c8369f2ec97c74d8ea12fa834327725fb19fd8f34601ea062d9b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "064801918c304c207e6b8bca4dfd2f25800ab9d15d54dee0cfa7b4e8c69e4f04", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "30423f38e5b368230e2ad7872157a82cc6427b1972b82acc6d3bd4d36378a533", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "8ba6638bd77d59036e2112b3d9696d8c44a9698c89f2e2142793cd700708782c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "33d29f988e6cb280130407ce84525bf11c354eccdb4968d410101c3c26087036", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "f9bb5c8aa436611d69334d23c5b1ffea85066819d594f334a2c29d88f1045e8a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "c87d2d25b20f1497128155219d1f594252ccbfd1a2a717be62613c244182f834", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "8e904d1a95c57896dcb309c506017a27dae6b07d9e9899a1087867646d136020", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ad901976745ee5585e91b852b9559c6abec964c019887313d89d9594155fda82", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "bc535215b4b18b7624c95ca331ec7386cb56273779ec01dad2b104f9a7a03227", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "1910fd97c0eedaab184a3b94b783b429687953bf5f5284abefb8cddc164e65ac", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "5036421cfad09bd5c5561b7397801d600897487796c248e515c447ce6a84a521", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4514e54791b68e6e10243a9ac4d1ef78043405d4486d22566cd32ad87595577c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "48594bde585a3fa8272f328957a70269b71215c3f7110529638b5421ce260cc6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "79cc12af43f7b308494a03713ea1869a79b43076b136927a6c3a1193aa72ac2c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f105daf542a5a6ff287bad150900c24b45dc2ba74e5bb71af737c1c0c821ce55", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c91e5d223ed9405448c82dd436f002893bd6c7851c7db02cf23f169e15cde838", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "68bd17cd51311138a814b515c097b491ee1e9fa1b1c686820cfe4d6708312468", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "8b2cb56cba993a410bfb7793afff288d2e0177c0bcb82c66c9f6f193cda8276b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "64e323ee34a8ca44df3efbd40c6937c13ce341b7aed29361e7ae9b8962a3b520", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "18b4a137966508730a7220da1385c46a1c76ee8407b117a36463ce2c60d1bcfa", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "150d51c2d021fe0c1eda5a8066ce57f80d2ad2f4f30c335b675c80b5412f8be1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "82e9ba3ff3afb7a2e407e1a6a38bd91aebdcdce99fc6bbd5d4382d397fe6cce1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "6c1e157aa78bc7a904bc7cbad1142fe8260fdd50d61fac7b3c911aba13e994d7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "e2f8ba559f1bb0dec2e253db90c0e2f571eff7899775f34bc8299946cb77a6ae", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "73514274fea6ffc45dd28c4a77b33f9a911321c35c04ad25ac4b91a89499dee9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "8f2307a8cf4243d33ff6d71375082a88a95068b7208b2f5f37c0b8cca472d076", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "0eb000a11a1ab47ef91c93065aca39cdac8a431fe2e028db30e833644d6cf399", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "a5ef4b4e603983822f20679ae53c0d989964d26260423cbcd9f0f9c03e916045", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "2ee79471ef66fac18269763afb56afd38b65228a8b7e6079c4cd8983976f62e4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "802411732a8c8ba6b7454b866934271c594693f57ba0d1196cdc0f430b87a8a1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "5af2e5a5299ea034baaace06d4319e74b66c31090e293e3aa28e0073f2b8d7b5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fe4a1f9ef5cfa98b0c3ea87ed94119643a400b800913940ee4ebbf5c3efbc64b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "87c5b4ebe214190ee3dbf426cb587c96c6f9a14e5ab2494aafe4a58de7f3522f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "189aa13fd6a68dee774cee51099563bbe8bf5a72cab7c3d80c4f9311d624a9d8", +"T3T1_en_cardano-test_derivations.py::test_bad_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "30b95f81aa188adc63b16ac2f777fb6285959b4eec19437c93217e56e302651f", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e930010ded48d06ecc55afe5113b7ab6cedf70477fb41f644814c0e336e63632", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "ac862ed50650c9316ac06e749420b96f8a7974f83002f1e9d521bb98114a6419", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "fb25c94430eb9fec34186f3c8586cd04ac3e0dda6e20cc00038a60f9e33a138e", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "accae44931d71e29fe4d19d3b6f4376af3f14b6918ee1a0547a8f06302298e6d", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e1932485683f9feb12093467f65f521e4da471e3b493f261c91a98b705200196", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "08aba0b9c17640eba7da4b7179ed40122fc77c3c4c39679e098062da7007ba2a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "d1e238ded4c6285b7b1bebf0bb122f59fb9c2310218ae13e88872e769fc02ea1", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "a7b19aff52b018363d06e95d8f6c266211ae599e72ea0075bf4d3c114b23c453", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "ef3846e85b2fcf4adfa2aaba84acae808a452e9b85f5e1b26143de105f77100a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "73f0079f1d24ff8ee0016a5d00e5ec8e65039154360c4d969af9bad614f60e16", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "543bff43599debcfaa927c4ccca0957a3556c2896be0f6ce148a07ad08b78aef", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "0db3876d2c2e5b94ba95b01734ff89c81be9f820021324aa11d9e8eb1bb4e146", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "3f93ff94445b6a54c2d5c4cd60c96e0e16cf038ba525f94322f990b8e6dfd773", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "3b1545b7829f5e8f344892a9d02dc979bc1358e8baff4d9b685033d47d49d262", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3e41563b98d255b7f1a7512bc8a8045f760c258e569c8777a8eba6ebf6e96685", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "aa341e78eed348b4498c6b536fb9bb5a1ed3f920364247c3948689fb9b6751e3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "7f776be28f6601d252f54b43dd5195bb664d3d79a592dfed1bd3ece22362f87b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ca6ee2d877e07a9ae9ff8388524cfa1a2604ff86fdd0443a458469a8ca1f8b94", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9e789bce90296fd3fdced9d0b4ce3ef50c5e67daed5a5ebfe87ba834e6dcd837", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "4139d585b62cac368d1305a131381b149efb56fc03859839d5f1312ac2939915", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "63fd6553621d788de2d297819afa1c1e82ff939b049c64719fa393b33082c6bf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "a0a7f4bdf1a39472870baa7b86cf3a662ae33335b304bcc544cd164aa3c82dc4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "37ccbad3214ce5d87e7e4cccb53a290d5a4346230e5035ec785d3ae6441ed5b7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "bb5cca0fb7d19845e59b7ea460df1507736fb88bb216e1e2c305a8f265af6f33", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "bb5cca0fb7d19845e59b7ea460df1507736fb88bb216e1e2c305a8f265af6f33", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "bdc86071c4281d233ef662917ee47a5d0134225362d70f1a4ae8437d2abb8def", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "7432aa4a13c7a578f436a0909c2dfd5d25475d0c28182fbbd5b431baa0cff39f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "8d49c212da8f212767587651a9c2de4fdb9dffffd5cbf114c2fdf384890421ec", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c61ea57d6297b75700826e644e9c6ad55ff2443391be251cc8d70935835a4ae0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "3bdf9b483e8e186abbec0e0be65e6cb2d9cd740166c0b72a6292b8b08d9cfbd9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "26a92e0c09ffaa401ded493b4357782642615a3698989578d236b94fecc2612d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "8a7c2e96ce797552f91cf27897351563726f58fb7fa246bb08977d3d0235c445", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "d975875044b4b022a72e632fad33e39d2bd5c16d7a6a02ab504c66e132a9d365", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "7618e9baaffb8cdc95aa8c45ace30af6e8ec9b58b6125413b804d6268e036c06", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "3bdf9b483e8e186abbec0e0be65e6cb2d9cd740166c0b72a6292b8b08d9cfbd9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "26a92e0c09ffaa401ded493b4357782642615a3698989578d236b94fecc2612d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "bb70c4b40022b46cd2cfbf83de6d6b29c1b6b0f6a9f5e34f410c710423f73da1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "c35a8aa94f05e823db4b982c8bc061229eb2be07ae4c36d6fdaa51d4de1a341f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "ba0b8079673be7710e1d9d9e00fcd4af4e0da2844290f6dd533c7fcee37f3e89", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b3651540a8aa399898f221776dbeff806ce94852798b1c675f7d57892d8047fc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "667f16e86e2d18966f3845068d78ebce06f6de59ae1197fbe24d946033263c28", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "cdcaa9d2376df3f6ab2c1bd93153a2199663aca9252c69c643e8a45ec6b6cce4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "09c5f6bb195ca94293a670ea61514fbd2937ecd8b9a5d7409f3a69f93b445a66", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b6b82005c57d75c6b7b3c965ef8990a60269152f5b0d94ef5f5b2170e1363a22", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "2e748c816f81f620b28481f43f2ea82885af2ee0be6041109650dc3277fec24e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d0286823ed3f46d68b8a09f16edfe13210c7ced777d1197197aee77021b28e7d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "6d109da70dc76570c868f75425c708314b535045cec46640e19c4edd0db9accc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "03663c3f277337a25252f997ad17f820d77564127b9797259efede8a3582fb49", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2d38d45a2c46b26d06a3b255572deff2cb7accd32e63ae2acaf066e601c80baf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "d5829a1f93edcae6371e44970a9676284e12472db2c8ff9cc803da000270240a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "171c7d6062d51dfe149bd6ddbbc7918ffb733ba0625d5146b15369cb8b3a494c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "e0440706bcd2245c17ff7507cd9ac227cff67ea0adbec343ab6dbedf612ecf98", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "a45a0c8a0343d8c8949541e2d8605b0e23a1248dc79f90b97ddd0a2f512366bd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "9075fd57d684e1a83bdb944249bc47f5fb95110573c1345cc8ab3afd3328c14d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "81f6817b1b0ffc1b4ec49c66cb9d8bee9f00e04b2f0b636aedded469e033a76e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "107374125aad62e86cf81a761b9c2189c3922df85f4ff3d8c98e90359ab4b06b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "3937e1031ecb710a840af12c9d695f4ea5a23c208bfdc0d0b5c96ff6066d7751", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "dac8390aa65b38d191356ce9c7f7c40976bddfb9e59c3f02defbfe2ace473499", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "d9249234118add3c9a1f09a8ed5be658bfd0d6bf13064372ab6349b515ff1aa1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "aec764fc7208bcd6e1fef6915da0c4cd0d7764f74b21c0d50320f70c6411c9fb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "ffd7227038fa6a057f358a14e59ab7da3fd466888ce59e6e9342a9c2b5f886d0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "94ed1f1085ed520edc4d2b08708cd40bc86f44a02564fc5de0526bf89acd5750", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "7fdb92d827ca5bccf6fcb4f6bef09fd9cc41b993da678291f78f062dd983f256", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "5fab4b771d023b39ad6f902dd48555487e6dab914bb0a3e1576d00969f332f47", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ad2fdbaa205acc06543620ef4758556398586160c1b7afeff2b12c33af9fb420", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "4e1c3877153f92604d98c6a8d06ac473c1c2299a75df2f906e3fdbe634019904", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "ca417c2421e80ea119344a0e612a058523d35a5097edc90999d7db5782498405", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "3ed2c7f9454eb89edba1219f8c5e1d6a4fcffa35a9f8f9bcc3beeb6fb0261e81", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "a3a8f3774c911239a8db8bcbf56880ebdc7704291d45fa6489ee9d16b38759a8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "61ef97b45bde29acf1ef4c9e2504595faee7f50cd4c245e9d98fdb729002ec59", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "e821038402bba9194563e1f2b8587ba697b4c3bad49c8801f5de43e4aec5af08", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a90adaaaa4b916764cbf3c65e50c4065f7f8ad7bbcf5a89c16d7556b648a0fa2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "deae734e3a74420abe1f1fac25fd4fdc6cc7333d18cb7bfd391b15d283e0fc6a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "8bae58d5b32da1308b7c12010e76176ea90aac134e01331514082b3fe289891c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "08edadb37bd35bb076df1d2cf8bc48b9bc62c5f0fd231d29271799183fe5ff87", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6bf94a63a327f8199d45f89cecc9eb1c02bbf3cb9b843303fa41ea364dca45a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "c4e7c553c0d421dd75a257a21c6b2710fbb84dad2464e5fb8b0926fb5747c022", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "65105fdd83ce9d84e12aee91d74d2f78e83ab385aff144f52c7663e7c65bc5e5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f05de5741f677227383bd448da9998bf472aecd855da263b6cc2ab700fd97a48", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "27866d76a29e538faa94c891bf9d0f3b3e8b5a0c3960e73cc3709893ee990f5e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "b00a5788d94522c3f98ed33084d2e9a2de22e52ec84a5b1dbc17a203f75b36c4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "bd0dfc1670bd6c23fc63fd2fcce5c76df61dee0031cd7e8ac106ee7d9bc950af", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "61c4ce05d44c38fa5a51212af486ac1fe2a81ca65b2763d969d57a9836f6ee8c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "c3f81428c2b58374eb999653550cd0c0f25ea2c2e773a51a9455ac7ba43c9511", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "cfddda2305238f8c97b2ad5b90bdde90f2419ddd6a9c6fd25e1a18473760c513", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "a8576ddef50603e9e29c3936670972a31f4feb364697036100e2fb45133d8a89", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4f675686cbeb426a84c7e43c5c7fd02e70e6ffa018dc5c24fd42602214f3fefd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "6ee626029f5c57e5ae6172ef2de84ce6c2c19161eec747db0163690090be922d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "6ee626029f5c57e5ae6172ef2de84ce6c2c19161eec747db0163690090be922d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "7903c0eb3783a287c8210c987312cd786567c6578ef3b5391680584a8a0c4f34", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "f715edbcf6ab16ef24fbe684128da64792ffe05bfc04174636c3b669e473a345", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "f715edbcf6ab16ef24fbe684128da64792ffe05bfc04174636c3b669e473a345", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "537ce7ab7603089864efa41671d43a7bc23fecac656ea21a6324ac45285f27b7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "ff7bced4b08dde88d17554e1e7d3339ad6f24a434070e673c6d76f174ace7fcd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0862e9c284ee9110a952bbe267b04c38935c7d24f1d8ddf8cb3194e347a18783", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f40f129a68889a10858d4a0396f25f0f3cc917339bbb342901813f352e45073a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "089fa346844ee9521d57a48fd50cea3b2174fc0fceade51d747bb8294b87653d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d57ba4a97f60d74288ac4cac5419cd1466ada52e7e12c88ced34a225e817996b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "10a35a4586b786de5233bd68110cecf349c21067bca5a09f31966b71b6fca139", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "547816c1b2fef88fdae83c6f6156c303ea451b609ca07d271f47d46ce711e891", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "0db0017f4a2beada55da61c9ca5a6877e04f857d5ad36ab70dafabdf39d1649a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "3f93ff94445b6a54c2d5c4cd60c96e0e16cf038ba525f94322f990b8e6dfd773", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "9e789bce90296fd3fdced9d0b4ce3ef50c5e67daed5a5ebfe87ba834e6dcd837", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "134e1fc2c63cb4ab96a806d8508a60f9094da1bada8095fa79dd2575052177bf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "a23964f84188566ec8e4e9c3785ecffefb8df7662782c4080d459fd5c0db708e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "a23964f84188566ec8e4e9c3785ecffefb8df7662782c4080d459fd5c0db708e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "3518f3dd9a7df0e7d0dba85571bd958b4fa60ae84ace0bbea15933d5c9a2d939", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2431ab5fa57266ba410f30fd17bfe4a291e169aa16abbdac2f3592da68386493", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "bf8a58b2426fc0388d69369bf1e82f6986668cb57690103a04cc1745bec91a0b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "957bb6a6d941e9bd2179db38f591a506e6c95b58efeecb49ac71d139aa4a24f8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4f426bb57acae8fca426ac4abd4a98b075337e325089e4baee0be02698e157cd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2e79ff13aea7316b924c577660ae83f040bdaa4ce5072f835c094ed684204e67", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "27b8ff4d5b5411cd68a7ce97ffc473277051ba3af45e044c709d6bba140e46ef", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "27b8ff4d5b5411cd68a7ce97ffc473277051ba3af45e044c709d6bba140e46ef", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "27b8ff4d5b5411cd68a7ce97ffc473277051ba3af45e044c709d6bba140e46ef", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "27b8ff4d5b5411cd68a7ce97ffc473277051ba3af45e044c709d6bba140e46ef", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "957bb6a6d941e9bd2179db38f591a506e6c95b58efeecb49ac71d139aa4a24f8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "3b62172f960f72d266a454f0333eb89ffef273fdbe65fa1922089b73a0bcaa60", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5eb4302c88d6d8b9aef2856a8d153a3e8f0f9d2d84056a577c2440dd1fe6c806", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "c65c04065b82751072e36de38fe4d8b4813f735d15b1fac47a3a16ef9deb4dcc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "412ee48f758f1c39dcfca5829369cbe9f7aa5fed4cf9144484bf88929f67c5a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "de750011d07f495c66bdae8126820d47a1c4286fe41bfbebf4e0dafe98ebade4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "5fa40511b631528f6fa86e9b527c1c90d6cefe661f6a9c63f31539a53697cc88", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "d74c72f0fd838f74502b44296b50e0714cc71cb886b9061e5f91761078a7cdb0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "cb8d8dd075b0526f7f68b4fda960ff433a52ca2416003e96b3e12485e8c141af", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "d74616ba6413b788442c598d39ce82a59997a18dcf48e4d86f58044d70671785", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "476145692994f0013b00bd37f5658e79485f160e47538207be6f7b20b08faf35", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "2968a78ded67b1559c9cf6d6fa3a5d324b19eec7cf05324ce6d71099f5cd7986", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "a23964f84188566ec8e4e9c3785ecffefb8df7662782c4080d459fd5c0db708e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2350b383303005c566ee86af7aa6a48a70409b0596899a221ecf6cbc7098e571", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "de3153abb79bf53eb4bfb099fc804adb934ab12c6aae7a1deb010833a58e0644", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "afcd83f7dca76f120f599c69067a227d3af8fbc053b1431678fca4da29c8fcef", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "547528cdd76391e81dee88af69a05671b0d2a94c6012fa4ec3bbfd3556eecd09", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "e6d19fe7df7f7e035e12336588fec3e0228fce92f0ebb9651858c32c3d6276ca", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", +"T3T1_en_ethereum-test_definitions.py::test_builtin": "80a85215e4ad6f33cbffc7d4487e5ac8b28104b9671113d3a55838e5a1fe4fab", +"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "3c60e394fec156fa6331dc99e09593cecd51d0898e006001ef83cf06535a473d", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "f3f5f94dd269cb88c63455ff9134ec93ac3809192d85a92a30001814fc65d249", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "1e525f075028cd76a275827373d123a18f3b6ae295db67050e0b4cba7875d9d6", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "c2a9d399c5e2300ca8bde3189cdbbe94431746af0d6775f0992d6931d1c804b3", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "8c4cd7dd886ab9935954fa64a9b751a31e1b63b6395fbe9e1fedb7482569b6c5", +"T3T1_en_ethereum-test_definitions.py::test_external_token": "b1039a9596d1db31a3d8b8872ec5dd91a084e234476f570c97d2f1b43ef94797", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "d0851ad6c343c0f31574c880d8298661747f301d7073ad558e7c05d8d12bd181", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "32377587568461781b03eb52fb1962875f4290afa65053f82d3f87ddd7d102b3", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "35773cfb908bcb5772dc0b98fd7536e21a0b4a0333f21d5797673318317ef18b", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c9bc4529f6f26c43ec2db22393c88e76403d20138b25cf49b180e597b33fffe6", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "0809cc3aa3d0b53515b1ca40cf02c7eecf2cc29ff2a893129a864df669f72c63", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "c0e490b26c9211772d4f8956dd3444002cb0d59eabe86af652030d8731213598", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "72dbeee683de45b5537cafc0c5c650903df0f46208453fcc690539594d2dfca5", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "20a76d1648f5f744374df59c3d6cd905a71897ffdc8a4f395999b153d9fe0cd0", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3211698822b0e24d936da3cffbcdcb9aeb64de0385cdb88e3c847484295bf236", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3123b055aa438eb01dc5e563eb3102c02b9cd943c89e84e3f26eb8499af96538", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "bf9e9f7ae2e03a3a37fab39930bb1dbc212bdfce9c5069ad0bccaffd66580e38", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8d7b51bcf2c0fbcc6dfb3693f44b0761eb0cffbb60b0fd454149fdef99678840", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "1236a1b3e746628acc40f4333f1412db4c61115530fd7c201b6269f2a4396825", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "41a8e4ed0de2c53d978c66a9d1736b4b18374231a7333396102727a354d5c4e1", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "58814ad3e21edc9c39e349bd7534ecec17d001b0124571f5032b51f498d2db0c", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "6b75fae5cccd1c6b0391a02331fef4ee93b4b5e91b4802d57d4f99131f3ae73c", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "5e6d6222f32100e2c1bd598715d21a84a9544f7f7c0e65475ef4942fc7ae24b6", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "21e6bd4b17c90c7cea5c074a13adce9e8af24cdb89ed560e37cd98238e130138", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "230844e6d56f5d0f5842aa1af69ed2c24544b8e546fc4b38147d88f4b0efe96f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "ca3df4b6341892ca46868291ead740c17f291ca8529d898c4ffcf399ac68babb", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "aedd3612d35d0de7520f8c933636897dedd50af41afa12217817cdfc316b1060", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "15f1a27164b9538c8c2060283592a5a7fb8b272e5f167a23c49eb236f708ad0d", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a4321324aea47886468e547220d28a8a0ce1135cf3c9c40e1f6fd75389e46ceb", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "ca3df4b6341892ca46868291ead740c17f291ca8529d898c4ffcf399ac68babb", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "ca3df4b6341892ca46868291ead740c17f291ca8529d898c4ffcf399ac68babb", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "ca3df4b6341892ca46868291ead740c17f291ca8529d898c4ffcf399ac68babb", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "bb082dbc9ab9cf75cf8085c2acaa4adcd0e830e0fbfa2a88c8892167dd1a2f90", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "7d4d6846e7d7520347663fa986bb78611e7aed70514b646f071cc4ca5651007d", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "1a8a8910f7424dba8ce99e4dcbf672541ebd79dca5fa408402ccba50c6556e0f", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d96a013151b392b0ae8e13f25c6ddf863d5c09790137546e3d52f4868d99a9dc", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "a8158832f05c2af410cc7940f719fce81160f63c5143de33ec03eb4a76dfb5ca", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "366b73b64259a0ddafb5e304bb82080e28c0d5a3868d8015425527db06f321aa", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "0012cba9793112004dbb58765c0bf264c9d1ffaa3f498049f8638a1c482349e8", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "5907243acdfd465cf6a00f1c4e9a5ae114309dcb070f3c59cf3d717e4a99cd5d", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e5466b6dd3a9b67b9edf3f34bcd6ad390cd45b630902d8fdf638aa655f365104", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "a0ccdd397db3ed4ad4e6ab6dc7af0a043e5c1d1bc2024b824026e85489a8436b", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "7e8ba6cb9db6f137aedc8a7fed5ad70dcbc534713bceb626807609fc50e3d387", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "d7d36b1cb34d52dc4466a7366b10f5cb8e1af8dd6cb95c907009fc4b1471c4f5", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "bcf5cee67c93d27e35a72dc2d3569d45f14694b5e032c803d5ad3c3d17b6d50f", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "43f9a2b11e51ce03e90bbe2f504474ef0f2afbed9e483142ac3a13d9f3cf3436", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "bef1dfdf2ffd1ed803a26af5531271cc22fcd7007a8b349741834bf4c752d00c", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "4687ddb02c33327675eeaa77e2aeb155be932b0352632d549c548a2991059d7c", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9d187184640e881c77e949bda16691281ebec0d50cf122556b8b24a252697b74", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "5c1b46694789d951062b3df7a19c41c9f505b5047a28ad8616c7e1c9209cdf34", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "7e8ba6cb9db6f137aedc8a7fed5ad70dcbc534713bceb626807609fc50e3d387", +"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "333b656b3b8a71a660513f3d688b1de14fbe75e27bacc7544e43f5df1570c093", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "b4668d3a56c9fe5ca89c174f2e209f106cfebca2fecf27c294b959e73eb31471", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9fc513e651719e29e42184cef436f3d7146e54ed99ac897181f71b9ac8a83f9c", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "0531c89774c3998e2ed1b3fe530e01ca66e28ebff46ab2f4ca1d0dec602ce648", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9fc513e651719e29e42184cef436f3d7146e54ed99ac897181f71b9ac8a83f9c", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "472eadfec59b8339ad132e1319aa891a8115db22882f7e6c5a7484ffc9f69d1f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "472eadfec59b8339ad132e1319aa891a8115db22882f7e6c5a7484ffc9f69d1f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "2326597421e4e79ace8b4f6f947a295fd4c67c93015ccec01e78fdb2d541fad2", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "b67e279c013916299fa5358b6b78d1f74424f6c122d7b7aaddbcfedf122e9699", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "aed8138e6050bb40a2cee1af611d4d7fa1818b44caf7b8b4cd4ccd596b6dbf4f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "6b6f0598ad195d550a11fc949b8d82b7182bb3cedd00c13b64d557d282d089dd", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "3532c74c7c483b3b77d6fe6fa15ad2c93a96e969010a50b877c92dda8322156b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "11656c4b1de57308835ed724a2ad64a5d186e42b8b0df6b6cd3b9a8cfdc8aac6", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9d84adc22ad52a95c4d614f1e0417ba1b29178989dc1081ab376f9b85b8364f0", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "dbfbb2f09c0179ebb22aa56e6c984be05cd501189854abedca9267d7fe18df33", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "639de7960786891661c47aa23435622954ea6f93ee4b90054da1fd04a556c26c", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a9838d3000de4843b43a07ec212a500b0059a934deefe4530a141ff176b7bbd8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "639de7960786891661c47aa23435622954ea6f93ee4b90054da1fd04a556c26c", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "e75c1145ac061b99a3377b96cba58300a09a5393efb7c352bcc408bcefb8bfa6", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "e75c1145ac061b99a3377b96cba58300a09a5393efb7c352bcc408bcefb8bfa6", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "e43e68f65e4a8e8bdc758b894809212b839a73aef915f249d2e2fd5a67c7de99", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "9fdd926969dbc05e8c4c11770eaf028641c74d01d684289202c68c72208d0fad", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "6f50a07b8571f79569c8b855be4a3eaa4f9bc44b868ece5ba7315e4586e8db5d", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "6b6f0598ad195d550a11fc949b8d82b7182bb3cedd00c13b64d557d282d089dd", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1d61b04db603df4e178110b3e610b089438340ede699eef78d296b9bb687c79c", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b3305d1d9591df33379e792cb139ab97d5908942c70a01f60b906878392cea49", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "c1e93c991b0de375ad54ae6e4620faa561ebb334b7eeb8136379f9b47e35a0ab", "T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "9b995b6b5c16c46ae079e8227720d71b58705edb4c5167fe666c91c90c448ef9", "T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "63c38b214e565e33ab8d9e9bcb60f4ba3693b927734ddfe6c40c845640ccb0b9", "T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2f1793e987d2e666be02f3b475cc2febed54b158ee0f5f7759d5ceb1ec4c71a0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "864bd37828859631cc043c98033aa63d9d3d5d83a0e08bbb2008643518329ba1", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "38237d5eb81a6e0feaa3b61bb848dd841732d6690f55b7e1c89f552c6067a6c3", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "47e7c4eea9fbc133cdab4c640988fdef56fd4f99f6633969796339d28b886b23", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "758263c13d4e67e9f37c381d5ee792f2795d210d3716c6c8e7b1336983f81716", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "1d7d31eb57e5c5e36e81d71aae34d7af89302ff503ed2760ac90a4648eaf64d0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "37b0ab837d4f81677ab1c83cdb48f782d203906a836b014d92e6ae7ac0c50525", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "864bd37828859631cc043c98033aa63d9d3d5d83a0e08bbb2008643518329ba1", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "2eba6e722e2b61a10f61fa188909e314e0d72607faadbb756cba127c240d4776", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "8896fe98b96cd95beed359d19635a69105e41028084bc01c852dd8881eca9721", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "cf945c0494bd928b21dddd0d65552eee2edddd504c7b0e35bda99039e2e7ca19", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "10f898a6cb6dc0c8ae70c3ac5c63955de520130776592da584e40251d48eb9a9", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "0028d5e70a342a057d9f487ca9790e195b4cc70c9528b15f33f2107a6c2fea43", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "e790981c0e430a0dea8da58d3b25f52b30ff472bd39417a03feb919e58d3ff35", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "2eba6e722e2b61a10f61fa188909e314e0d72607faadbb756cba127c240d4776", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "b573feaa28da9d85c19e8d40783b6dbef74bf11282a6a999aeb0cb7fb58c4af7", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "b573feaa28da9d85c19e8d40783b6dbef74bf11282a6a999aeb0cb7fb58c4af7", -"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "5d337c43cda947b63c3811ac7a50a9c334269bd2ea2f769796da30bfe31da0e2", -"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "d3b0b8e3049dda9cd11255640aaf7fa6a68f1d893661b0a9e6fa8952ab437b53", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "78cecea3d81ec5e6127d0d7c1867ed5d911cf20e429720cb293003c48bc3b1cd", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "78cecea3d81ec5e6127d0d7c1867ed5d911cf20e429720cb293003c48bc3b1cd", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "0dd81ee96c152f54ab9e83dad203994ef83b7d19204330b9884e0d130a11593e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "0dd81ee96c152f54ab9e83dad203994ef83b7d19204330b9884e0d130a11593e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "1c90fec7cf58a2535da12380b64a58b5a39cb48e95e0df1d830d41fde639e6d8", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "1c90fec7cf58a2535da12380b64a58b5a39cb48e95e0df1d830d41fde639e6d8", -"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "53be76082d6550492f00f32fd102b8cd9732a50b81fa12114530a731748a301d", -"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "53be76082d6550492f00f32fd102b8cd9732a50b81fa12114530a731748a301d", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "487c53184cbef945408e652274ddea13712f22c3873bee38a8eb06d3546c9f3d", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "9e58f206de7bb3a52a171f19e1977ae31b7ad6bf503008c4c7786e790a656aa7", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "5708771ab14aa46e2a7ec831d80a5e2785edd50a1c9d446ac6dc8a61b40b36ef", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a26837bfc545ff91edba434f0dc9d397efe025c755eaf27bfb17f18e352a082b", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "87b1f36acc0da81d3073174e1cf21aae5176e91649459d2322c7c12a6e03e26e", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "618c2fe6220a7250c1e8b90cc1a4014e60b7f5e17a954e1530d159a56a5416af", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "847eb6658e4f112e2e57b945363c429e8a6549eb4b3638a63e1bfb924fa9ec56", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "e7ab5b922fbdfda5c3183b07549a10aaea1af1c2e27aa77cbdee627f68ce8866", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "41c0f24f4291a0016b3e88f52a4916a8a9b93a14b505218716ac76a9de5c0402", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "b54889ebf13e743d273c67fef21e721800957172b145bebb16ad278662d2b76e", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "64480888c55c9323a129fccb0ecf2b5c70ca92e2fbcc9dcd80141ccaee4a59c4", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "63e67cd5b13ca28e3382791f39fa726bf3687ad1cb487bc8e83a38229747a4da", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "adce967f74c6a8824bc219bb3c087bf9a49f67c8556ae621ee611a4de9e3f5ab", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "9e0c99fc614867d36ba50c9b1cef806403d8f2d93b171f1bb9a7a77a7b81dba8", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "db2bcedad8f05dc3922ffd4f24bc66c6e76f170f2017dd4f1da0abfd26b000a7", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "377fd780ceaa9ea7602bfb8fb942d2a4cb8d8f66d061b8510f3644a06eaed2db", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "e5cacc2f12120483584e84cbd0e307922d07672a94996decabb5874b470c6cb4", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "24fdb3633f8b705efabab45291ca67b1c8d90f56f194652efe55588153a6dd84", -"T3T1_en_misc-test_msg_signidentity.py::test_sign": "0466d78f3ad22c26630bfba58eb069b656290981733dd3ae83e4efa1670cba42", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "169b4255fdf78d3acc5e66bea7cadc0df17568a527333a75d454eff787b6f9f5", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "2c31d9ce769eaeba420d634932d6dc8cd5c3088407a0ca520f5cf6369464d9e3", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ff6290aa5adf276abc2d1a8410f85d8776e7a7eda2745766e474c1766d306aa8", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "d91c7340482557960be74a4e5a2552e1c1308b60d5f9c6f0a5ab98a8ac3a37a9", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "06356ab96d377eddf5f3b6f458c45913b1d94a970ee5bfac73240e5af548dce9", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "7c512a05b2b66c354a5d9001f017373964fcb999a7e3389329a343e91b9d5391", -"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "ea22ea019695d59357090049f4236839a6c87051b2303ec6a18ae2d9f0db8e59", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "11d98f4aa4c7a173c0a0ec2ffdc250324c843e8aadc1ee2fb9df2adae7707b0b", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0805a415cdcd38a899ba870a624001a857cced372adb2d0753a90a04e749bfd3", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "2371d13c0b9e14f6351f7d72ef9f9b2b6a9a600fe51c0a54bd0a2aec3e950a9a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "335a5a9a1b71d445f5528aefcf664689baa2cbc30a7350c5f97a949f4813dda7", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d91852e23f8a089b9f3c38f20fa5bd24a27365f7a47284ea059e6174cf5f0bd2", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "587a9d7ebe9f38edb69ed2ef3ebce72274f13ece62ac77566d5d106d3112b878", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "8fa4c189c7a584755be4e7cd02ffb954040065c00eb9ff15a93c2408ba656ec3", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9ab79f7aa8130f98fa24cc653c883a9a341bcac08ea2de6483bccf28d031907c", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1cd935cab0ba2407a31ccd7105c5e44883ee293d76a68437c3f617d9e2da7cc3", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b746b024274f7008bcb15d5cc1b9df818165b95da8d0e236c21cb7c1c0886e61", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "dedd702fdfd3d7131088bf8b1c2ef803a822f779315fad0a5a75ae7f7b313ff6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "071494931a255961687a551e6575ec911a532402fff59aaeb5a564837ddd2ba7", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e28016b19934e6c465a342111432fc16dd4edd8b4ad584d502ce74aa34afa170", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "04284464e108c182d2def58391cbd72815ef5747a7baf0564145522b49025061", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "01238e49c12e7419cbddf33b535a57e1d1283cd60f308462b7644e95a03d13d0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "587a9d7ebe9f38edb69ed2ef3ebce72274f13ece62ac77566d5d106d3112b878", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3c8d138bd4f0485864a6d3c1786a5bcb2267ce85d48e7e6ca1a9425b2b76b748", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4e9a22122d679ebd6943c48243bc0e93b8a5f2a188e3cfa60d9942265221ecb7", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fdcd49c0f2db3a66bb2789370cce28ae7c4ce5d5f4452f1ef3348f8c3f2370ce", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5907086030e9527cb303d584095087d54864cbdd9b907681dd594cd3b0a83527", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9e0e6303579dde360040a5723718e30ffc76b47b676dcf4d39a476b3d3158b73", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "34e6a378400bde943fc936417f8c1da588aa574f87366fb945a5b0186d935b03", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "df0796bcf1ef62a7ec2a1d1934aeaf0851bab2e94dbb4bc632d7003f423bce77", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "4ec9426f39c55fdeff9eb5a9cc8636f16052e99d13c17c3de79049d9fd43cee0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4c00b7e3106723d32ac223f0f66dc31d3b210010c3652c9845f1676e345fd8bf", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "47f2a93e044589692ba1ec5bfde4dac4d437f590041497d01275c76c0ec80238", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "974c222954a10307ffcdcf4f2cfc458443d45f6158293ea9dfb91e613d5eaa63", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0dcdbc898a66346a2781b20eed15ea9d2abe4ba6d968160d808f36bda4cc17a0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a805d3037b5eb7a4a87d264aa6d2a97097509f4b5d0a4d4c030321b741ad3ef3", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7bed2cc8a8c0e35148b48d2323e4fcded2b2cc35cfdf3063f89410d6b4029e58", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "66054413e53b696cdd65ac3274794bfb8943125af6b08db88f8c19a8c9533fcd", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "68bfe53e51bccd3efdc1c4c6e1e14ce46756648307f336fdc3b9aa062b13601a", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a03996ea71e63ced4ba94d24bea15a7ee63a3798dd1a145a4f7b36accc838f4a", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "3fec77c8c814c4dfeaeb35a8207cd6e001bdd84c3d103bf3f7b6d3c33532c260", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "94b9b9477ed2c637f2356e3e27da01ebadeafa5b4d90d35d9ea3a63f91043ecc", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "24e59539ea9627589fb6f660d90a5c61e1a7f91c50540cf43c360c5162dc85b6", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9bfefe78931ad0662da0d3a811b90986ac615b306fbab341db6a93606e703b4d", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "1437133dd893797b5eb8ce8bb4af786dacd9123237ac36e8b2894fdeb59ae547", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f7ce94eed9a4bef10c517e37c583d882a59c58b0b382870f423868a1e67a9083", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f9885944e44f725181557c1198cb09f62f01cb1280a5326e70d7a8a28cdaa022", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "bd377ef66bf9b054a1886ad432702c26d2bc61f6d24968b43ac47099801c62d1", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c636813668a516f428218637658dad94435214e527dc653d31337405f8c2014f", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "6afb0370fbb8519740eafffd5f292cf3b88ce4810eed498eb0ca9487acdf6f57", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9a6156d81ff433060d0bfa03b60a1e35fb2b8ae6f92bf09bfa213b1c493f5605", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4f8e587e4d1fdb29ffff23ac55df1af78e0abf161f6f9717d4f2f6614f1958c6", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7c6ea47126f805d2021b893fc0a664eff04c7d19c6e329060a18a244f191b4fb", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "aa350eb701959f0381cf2f1c54e9732ce74569e1ae999fa6b3d2045b061d56b6", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ba3ce2d4a0844ad0afd1cedd9326c2937a5591ee13e5730aab382f3e2f0a596b", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3004f97128859f93c79599860f705be344068adf7e39ee047191d0528d11fc78", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "0b3e59e0f206d2f3b842f4ac7620acd1e46612b659dbdf2af9b1e98d530d4264", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "c3fdb3a8cf6e0ef93ca4a564a293a792eb46cfac6906de761b1ad37067ec9a6c", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "514b77b3bb234eb1eb4957a58b05e6f41e08818ac70a12bc95135de96b196be4", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "24c13a2cc30628f314522d15fd7464b19c788c55ae470b9431b9185b33f8e8bf", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "fa417f4f33e1f0bc794c8534050cee424254463f76907c14f2914ba5d3e40cb2", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "d184b085872b818033d73afcce4ea4f0519e7f62b4089a916fad36a19c08ec55", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "300e7e242a409e8523cc43430b2abf1dd60a2f56176b85fc5739a4213746225f", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "ffb515f1c943a3a50846def9080a6190009a5800b18d1910e3faf4bbebe2e55b", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "d184b085872b818033d73afcce4ea4f0519e7f62b4089a916fad36a19c08ec55", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "300e7e242a409e8523cc43430b2abf1dd60a2f56176b85fc5739a4213746225f", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "ffb515f1c943a3a50846def9080a6190009a5800b18d1910e3faf4bbebe2e55b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "61da157402f8855a5a04900f754d080c4704aa5f0bef77793422810fbf9a5e27", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "e4bed21beb9a735cd3a02e7aae9a9dafd1296283eae824617c5eabb69f36f854", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "7b4a31e1ba0b245337227cf5ff3874227dea960304ce19f519156c1e2b258abf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "099aeadfa7762dcc05d14c32f1a41ba021a4f75fa917b92acf7e94c7a15918a4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "757dd243d20e119e9c293449c377be40aca182805acf674e0809ed09b7f8b588", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "e8e69c1208bc48f016640b39801d4c3d76c0a0816419c2e22a33dbd70421bb03", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "4ebf268ed1218ea8f0db28ad2353fe09584894d4217435f8e2ee1a63e847cca8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "633bb85ee312065eb894a9638a8ec30561ef635185cec2880c1e3d1c849d4c86", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "26bb20418d7fdb5fa2f3199689ff7ea78bbffcbd990f3c5002665049e809a31b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "5e74f9fe64c81b7aa1ffd95d5b20c669871ef20da6945f5b7a66a07ddebb5940", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "e649a550535920b3c10741607606fcd508b4355416a798d1ea3038d6fa8cbb6c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "96eab0884fc8a44457425a1748bbf3559454f8bd597b113a485f1494fcc90b8f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "bba0122e63c81c74a01cd561db57ffdbd29414ea68d5508112f0c39d3ded4163", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "316c452422a1e1d5030b188df5601e0344e696b38d98ea5af8d018d402633eac", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "0b2e138bfb6e2633523a0c16e3631857d8f0c70f977d279de27212d38961d687", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "ab6c91ed90b710df4407733f1a51c52ba8af145f77e8b6ddc6e230993dadaaa9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b980b386a79bb8cfea4e14254e12daf7f09bf36bfcd9d7b9959e9dd2f0350d34", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "27dcb19b0577327f7ff3381f16547348531b8b3f0f4b79f218cbb165a9f654a1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "44fff8ac52c3b0df80db3260c802645b35ceaa62d520107d67dda2d0a6e09951", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b4ac7db98f245dedf2c7c52711e660f2b65129d22f199d9d92b21ab8e76cf6be", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "8fff828598de6b3d5d06cfe877796c95a47d11a2b89ed0619fe56e5c9ac146f4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8fff828598de6b3d5d06cfe877796c95a47d11a2b89ed0619fe56e5c9ac146f4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "545be0ab040baf298712302a3988b1195733331d0b1f501e19240a3c6c6a4c25", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "be578cdc45e46529c3af6d3afea7339196a1f65ea46f1b00030d280c7e802221", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "8f46b0b8864a7390e5ebc555b433b6288ba1d9b43547ff244dccdc5babdf1fd7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "7e621290b87b40a51cdf297cbeb3e983610326d6ff5c833cefe3dbbae855b6bd", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "701cd410ac199da2652ca2cded1aa1d1dcd2f739d79faf596cb1ff3ef65303cc", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "f6fc8f2768eec807b26406dd16b14151339f35663491ff840baab93a64d34af3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c1563085425f4547d07b6dad5f21a2990a9af3b00174f9454816dbb37b6c4e1e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "68b14dba3fd87b7f83e3d5cbe0966ab35e4a152fdfb910f09b730c73118f3a53", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "832b355a6f4ce515861a27945352526c12110a4905d6d4b2e7bfba85ca337657", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "d6ec7eeba357aff0d8127b71c25630736ce4d1033d2be21b21098d26cbdd2375", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "60b2d88dcf4ef0d24586478ef9805139eac9567349be450f8775bce79e111777", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "802b0644ee320d97e3887dfb32bd766ca7d47c5160552f732dff3ecc72a1b587", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "39d544ea14b45ed7af36419b1fa7847fd2048049817b7f5858ae0d342fb5b13c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "f9d404ae46ab3f496fb8f1c7684339d8fc59d528f0cd8d06bdac5de2353cc622", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "1e94600812a039d465018717331f27188365c1f46261550e6ec772708189cffb", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "4a8737c35f1af059b4c9d61138d289afd5c2f82fb4f3b37e6bd6b3f855a7b250", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "fa93df845fc8a4d750a6c0d842cfbe69366a0716e610c6544deae7a9dcb423a0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "70b065178a4de8c0d849d87162244a37d895d06574764c5a785f8747ad3e5cd0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "24aabcba745784ca047e2c688876124d2b2201edc7402532fab9ca145849d786", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "9063064ec962722642eaf32ef1166178a30fef9c004c17bb74784d5a89d89ffa", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ac2b753e1ec885419e564d15a664b128dcbafb22e5e5951104fc9097b0754325", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d546083714ca4b0e61e0f861848632e50559db8f936c1e2c7b3f87932cc6e0f7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "30caa4b565bf1f7dfb60ad6c8535c7c3a95030f079576bf96995168b7027368e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "424ac651529856c4187100dc5c92841b70f41b146e4cbc430f03f5178af1c99c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "f987bbbf0bd0488f99731fd272e937d020a18802144f3bbe8c0499fd9558827d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "149730f111b37f98a40ee0d377c8ba9128b0259c65e4773975c702afa3b25caa", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "b66d25ae5358ea3b227c57ed6287e08fee54356e31e2e61ea9887dddd162fb73", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a377dd33b7f2b1708e1183e6665ceb12376bb30cd93362c4612d7f70e4a21a44", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "6215757024edc82c409e24cb04704120cb1d687d3d658c023646a48ba5606507", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "3038ae1cd3b64ecf53ea88296fd3ac79a929550a64a3f2f84ebc58660eada308", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "b48c47504cee19d2d1435fb6e803394332defaaaa3f509c430e7e64106a4c942", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "00ae04a3623ea0b58543f563c8b60eae13b9b16c66a9725b5002dbbc8ae8033d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "189dee55b9df2c499c92b0558e935df9b17b69ef69ad6e5990c95cb3efab631a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "a0be29e75e41255d3ac3799413a20853e145819d2beccd56cb40cd8ab2c93074", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "8d1eeb5b7f2f548a4a88cebd8560dd333d4df535865343df557fadba7a02405f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "e208adaac466e234f3c920575ca3fe9736b5439519845eb30786d27fd098ab7b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "2f288f92230799b23e8bb237b1f1642abaae9146a0e5c7218f249453d36a1ad2", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "8f46b0b8864a7390e5ebc555b433b6288ba1d9b43547ff244dccdc5babdf1fd7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "d0ec81814bf78317e3a76497c88f2637cc734084fea217a9f40dfacd20383973", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "e57e633234db5ea2ee3c50125c099d91c2aa4e9f1ef2a78fe68a45a71bc52757", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "c56adedb78883dff64af7a327d7ef9efef9b2fc4d6ec0dbe381867914e1536dc", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "9feb0040c4ebd8ce0058bf0877a1e23c4cbb77c1d7aeca5803350b5c141fd701", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "43ca1a8c81dc496eabb2c672323ebd9e415ef315821e5a7188a424e167a7effe", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f61a086a6653b61830abd981be4598d1e613b7adc12a8168689d3cddc7670a36", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "823d7a01d2ac8815c8776e36601be8542dec3d61defed56d6ff92ca0094c438e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "4c3e7aae03db61288b50dacd79d2b7ce51045177f7cd578c95eb531e2897363c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "5c1caa2e342f889bd4fe6fb9c32fd5d938869f261cc1067200be9750f8e9129e", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7110bd8f7bf638a8d7e0fe8d016db71c09ed1529e66615a79363f98750665bae", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "67bf944c37326696b1531037ad9d4911db2f6f1468631d5724c506190b745d82", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "1531923d4b10b5f2d8efe3603779ebb74445a1c74b685a815bfb21bb798dc684", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "8191a7b699b666704d466829e27f00b600a37186893e0cc695d5fe0e5e65cd1e", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "15fa1dafdb9b8c8d9d90c2c382109e64b4298d1c78b497531bc5fd44074a054e", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "3dd72c64ce4915f05093fc781458476b8c8241a22ffe3cab86f1297f905ca9b6", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "53ee4fb40fb3b0712cf3dbbdaabefdb24979ec118d5b5ac46125512011117634", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "16802d024ccebfd0bfc6123723975cdeb7059290466434679259282a3c5f2fdd", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "443e01c737d72b46ac0524693766a859e80b306ec9631f386e8fe07aff7c9040", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d2ed204a8b3ebb367a40fcefa45bc0fcdeb8e9f9caef04e9459818f36dbbcd47", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "4725c11451e09ab4a88005327f5680e0cb4a2a29c02878983f031ae04f598631", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "79c5691cea6ca94b0e4a3c9d2970238679dc5d0aae15180f28636cf54573debb", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "d69336608491a8ede606623d1c47e4ddece63cda250b64861452bda25ac43fd4", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "9b44429661d44d6af0a343832cfa0340a99c0fb08373ff8726b8a14b0c1e8f02", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ea689defa257410e94da049dd7e129d4f7e924f3093473cecd99598e395a94dd", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5e53d0254e67fa18abaa7162415765b1e4b6f9f83e0cb95a8f2b4e31c29a3dbb", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "4456a4672975edacd63b795f7272668309e77ba6dda4e4aa8602164ba19ffc91", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "406956e0bd55987063769c5cea5cc289ce2947b1b5b89a23ad86f068fc3af886", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "a8b204b09e62a83de2758b957e6cf1a2dbd107f2668bffeeb627e89e6a5d32fc", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3e4ce8208675747bf7b4dfffc81ee5f0f388e7e3972d932fb110cc63171d8f12", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "3bd4558190e5b49a6c09d7612f880fe188ff92a5edb7f95d3fe6ed056f8ba09d", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "3a30b531cc017dcccefa0634b4f41b32e7299aa60b72a92b4d74c26c6f2c1bed", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "f67edbc19711249b588262c2da9d88adbfb04ecdaa6fc79e2f27748f47f128a1", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "f9e6fc21d109df63d8c218c3e6b52db0f5da246ba6f9bffc31ed09e673c397cf", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "f17a6395ca055376a764d0417bcc0a93df17574ee578f9e24936df8b35a49919", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "95914fbaf3c535cdc619e3e60d4bf9955b825512a970c7760a0dcb92e054ecbe", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fa5e4762a610327129dd0cbf487c5708256c69ade8e568f44042bc3590bde5ea", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "57ee992c51454db9394ba9585e35a5f32b03336a9fe048ff10a2a44224fa671f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6660bf8e3af0c64e6fd6d4da183a6bed66bdeee61f12a35c0e195d81f227f8f6", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "836636fe45129ce2adacbd98418985d0043ad89cdcf7c1ddfb3be2b91a66e811", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "411d52f08526ade6a4713388876ec1abaf2f71bc718a75d8d9cca46fc342f404", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "dd79e443db5a428e8b501b736c937b2c07652232baeaa17eee2bbf37ab215361", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "6060d9abdaeb1c3ef5a27cd05f04fcbb07d5eda0de26c194596ecb0f163cdd30", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "97cf29f10673cc2af63938d94e5bd1684c7efef4da75e10c43c438272245d4f2", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "46602528015b892d463118d25aa79fe2ad9fe0efa5804fa1a4e2898ae444c2d2", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "ddb75c298686be9bd2c0cb9200ce3c640cb8bd9a1c4d0f124765a38615181019", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4e37008d00a77dffb11141ed98d94fcd8f5645d0f4df629fd0d8a03c07276a2f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "583e61a524e337c0110b374ad1607ca9950908bfc220bde35aa8af798a2618ef", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "92626f76e2f84213d337efb2b810d995c31cd87ad8181467dd7c336551e72c9d", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "0d4e38665a1e45e41d409158393aa55caad6940ad5b0126d5259170189f7744d", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "0893e266001575d8e42a5633a02c3356138b0dcbe899cbe495fa8f1b4918c141", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "e45d1a8d5d091eaf7a7e0fd7c28e503a6d641f5ed5f1d745453514ca544a6f30", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "993d14d21144d04ffb9e25ec496777709d5ccdeb7aa8c60cf3350087bd75f988", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "c2d54f46491d68684129e28bff5848153a018dc6ca0d7a00cf40838b2796f15c", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "028b97af2113d7c3a5f3663eb3f87d5874362bec317196ba90d5ec0a782c1092", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f67ff4559c6cb2d5d4507b54275c252a881bf56b912eccd2e6a5654842b9478d", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "94b1ecd89972b7c869871abb8fc54c75509fc54fed5c0d91b56feae09a70aab6", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6c9e8b66ddae93dfbc3b87aae1f9c60cf6d8e1e73d31806d1463d4e05cf51a09", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "b0082db9824f68ade4b92655500132357ac68225d44c39352d9ee675187fa592", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4e37008d00a77dffb11141ed98d94fcd8f5645d0f4df629fd0d8a03c07276a2f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "4c2aa820795e97c1941ba1159f826abae9a5ebb781ac204325ef97ca7a99a626", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "47e284a9ad7bfa916d9edaa8fefc62d4bdf07881c050f129b43200acf7f38436", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "4294f342569bd0d838663a59eb6be49e6bc010254fdf9269250ee158a89a972b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "abd7dd525785eb8a0cde1fcb1b865abd13fdde379fbbeb0b59a950ba6ffa162c", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "c02bd5eff6ca5c4f6fcedb815c3435844295a1982a2a24f7a5a0c2805e65805f", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "39e034215ed5a8099997aa0d1236367fce3139511b5921b3f4489281fdbb627a", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d5dacbfada3fd814942e9ecf45f949b9471533ee2e8f0abc120afca3eb94a2b9", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "72cfddf432bd7f4a21f7e5598b6670b44e37ffcdd4b8d7e766f7efe2524ee3de", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "107fef3042f43e6426bdb3fa75e5796c3c543062a63ca1d7800b83ded3c080f3", -"T3T1_en_test_autolock.py::test_autolock_default_value": "ce7bdbdc4938e4725951ebbc00cfc8f242a3fa430c2206a7905e528acc3b4048", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "b2c6e6edbc2a19419193502dc652cd8c0aeeac08c9126905d655e7431422b9b9", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "b2c6e6edbc2a19419193502dc652cd8c0aeeac08c9126905d655e7431422b9b9", -"T3T1_en_test_basic.py::test_capabilities": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_basic.py::test_device_id_different": "499dcc97c56d812933b4b2aedca14bf0d281761d94316485b51e0b09c1e4d917", -"T3T1_en_test_basic.py::test_device_id_same": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_basic.py::test_features": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_basic.py::test_ping": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_busy_state.py::test_busy_expiry": "88c91cf5387aa26c92cad4c663ddf12bc571cfc68a72078e9b0d2a94525071f2", -"T3T1_en_test_busy_state.py::test_busy_state": "bb4a57bdd629f4dcc1f98cda870af8ab600355d3f3ba20118c3c12c77bad3d9b", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "f6141a836a60dbcac25e4fcc453bc67b14b79322f4e2ffe9a0b8577faf681694", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "f6141a836a60dbcac25e4fcc453bc67b14b79322f4e2ffe9a0b8577faf681694", -"T3T1_en_test_cancel.py::test_cancel_on_paginated": "ef5ee04a83bd0230975fb30d0c5209d8bae58a510fb50925007eb21c0da89f63", -"T3T1_en_test_debuglink.py::test_softlock_instability": "b674295850e35159e495faedfab3c2eb8e53d58c5d9dce0094c6cdd237e52447", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "37e638adc4cbf197c41ab8033dc32d53f6891fdad490443e9742fffb315eaef7", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_language.py::test_error_invalid_data_hash": "c92f0183cf6bc7c05a10619419c5ad6b9a371df6722f7b4cec6ac90f9f2c627c", -"T3T1_en_test_language.py::test_error_invalid_data_length": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_language.py::test_error_invalid_header_magic": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_language.py::test_error_invalid_signature": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_language.py::test_error_too_long": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_language.py::test_error_version_mismatch": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_language.py::test_full_language_change[cs]": "70c194f18831ad5fef7969d21de56598a1c6115996b12a145718b5f7e7d6d60f", -"T3T1_en_test_language.py::test_full_language_change[de]": "9983678e0d3caffa78c20edadfe985c50b59b0578c115531e1c2f84859f95605", -"T3T1_en_test_language.py::test_full_language_change[en]": "d59c2ac70ec56cd09f89de262812656435fdbb49efeb2db9595ad57c1673663c", -"T3T1_en_test_language.py::test_full_language_change[es]": "7ec638c429e66c329bb5400b0e817a3f9cbbfdfb83a6008aed6c778ec40c7e55", -"T3T1_en_test_language.py::test_full_language_change[fr]": "ab5e75b9c7200d86764d4ecff1dd3f5970562015371ff0e7e7127115db293f6e", -"T3T1_en_test_language.py::test_header_trailing_data": "7d7fe0f88840f9f46f3a9875c25d5881034bb629aab050e220e917cfbe71621b", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "b1c8ea911a43e9d11f6fdc7f467e7ec56ec23e575e929cf7b2d65de26e73193c", -"T3T1_en_test_language.py::test_reject_update": "066d1c7e03d310f64d139a1264ba6b082ad1262096ab106a2eb62c4e0a05ab29", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "96fcbc459bf8d87a22d0691eaa938d198dae4f6f6412b5c33332aaa61c54de9b", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "96fcbc459bf8d87a22d0691eaa938d198dae4f6f6412b5c33332aaa61c54de9b", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "d48917a12fab09acadd38ddafaf551f01e685b736c76c08be61474ecb6c5b055", -"T3T1_en_test_language.py::test_switch_from_english[None]": "af62f50554d2694e8402f72f43f9779c9e9e21ebeb310c5881008e0e162b0d6f", -"T3T1_en_test_language.py::test_switch_from_english[True]": "af62f50554d2694e8402f72f43f9779c9e9e21ebeb310c5881008e0e162b0d6f", -"T3T1_en_test_language.py::test_switch_from_english_not_silent": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_language.py::test_switch_language": "f0e2703955ee26c7d9918a510b6b2744a8d6df0f83e0dcc8031be465dd1b77b4", -"T3T1_en_test_language.py::test_translations_renders_on_screen": "386d167297cc9f3f421fd44e816f5643adf63b74bef472730bd2d84a3858fb25", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "51232e5df87a3709e68602d4a223cd4e910ad3a78114febd53b7e7c1db98b25d", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "cd172368ef0a87f66c26666a8984c1b3b4abe8a740dc588968400587d19cf83b", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "f94f6a29ef26d7f65da8b654eb2af8fd62d980317f76236fe8fcff757e610c32", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "34dd7ad1f185a666c2383500eac5825887286b307839995cd8514d2f3aa1349a", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "51675a9ea00ff4b3978e8f9d3f162ea6b83c806af17f710d4c0c4dc98941c9a5", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "a9dc0aad862b5d5d3443272a3e7fa5ebc414e7836c4a4d70266e900185af4b0f", -"T3T1_en_test_msg_applysettings.py::test_label_too_long": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_msg_applysettings.py::test_safety_checks": "2fa4cfafc8252551e45da6e53ff029ddf3661639e3108d79920cb2300f85ffea", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "9a1005431cbe80dff773b55dd1daeaae135dda1e450539442b825b113e4f2dd6", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "38553e9d6e04c203db6e553f63d658c24960f00915092194b2e1187e58c767e4", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ec9596cff9853865d2e58cdc120648b0e9289ce8914c47a79c0b3720a60e4043", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2a993b1922e0e51cd810826efcab42c5a6c1e261ec7d64ae0bf80a2a56f3b887", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "91ce67c91a85d7d7c43e5c71ded973614921ea6a3c45c462bc8678979a1c710c", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a1d9bdbb8eb3d65bf5c02155c7284276ac11f841cb694862bb62f3dd1dc79058", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "6e58dc3936741c2f2ff84d411b59d2849f22488e910fb2945e2eb2b1f2940ae1", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "8cec6d822f46e150260b1baea40b5db72a906f4058c5dfc49bfbf8b140d57ff1", -"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "a44a253686610420825bf1468f83184979a55a4d150842c19ddd043050c82b73", -"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "d0450adecb908408e529cacc614414a1f6661a667eb7049238a2cd30b465712c", -"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c1eb70dd6b53b2e25ce53fe0a1d35c45e78094306dbf8c8c8f727ff58fa2033f", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ab0bf3f5d88b3de3205ae2e2aff3b0e025614af19d1abc059d803acf63fc1184", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "fc019c7a629311255dec0d0a776cbbec37ab80c96ab6cee4b89538146b35467f", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2c2eb73f52c48244771b9245e8f5242c494b06105227f67225e91aea80e828d2", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "f3c671c723ce01ca2ccea0bfa4d07b442634d0fd7d5bbc649966309d8998034d", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "ea829f2c9af3d95e87fe72448b50fcc07fb2a72235811706f7394cf96f3fd2a9", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "5293c5f59d99d5d741afafa202e4ca20f1d89c50e9d6b51adc2cf12f7ab151e3", -"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "c0501e1a2c84d9311ec207d3e819880fa8fee09de9b242e0fef1bc923b9bd1d6", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "f4fb7e28e42a490ac1d970eb91be9ee07faa2dd4b3b0c0d8ec70e2fb31922eb9", -"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "0ebc831cb8454d21ff85175b67599c51bdc3af2018e2555ab786460d7c758bb8", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "be7f33fa7cbe3b8601c974a1c313f8efd13a0507e6f7e4667899da8263d5a391", -"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "ecb56b8d604ad046c966500455d4069d2b59766d6867f546d5382781d5dcc7c4", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "479bd257bb7a4b92f1e30da45585eba9faefd75d5ac94710785d0f1860e4dcfe", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "3007d4af69ee1510315a25c72eb60ffd54ede49a85c6d5113b21c04e2a572c72", -"T3T1_en_test_msg_ping.py::test_ping": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "aca3981d378d8ed504c5a4475941af91b57eb78d919a1c9c452fd437af696f78", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "b0a88717e57ee4b5af18527d282a8ee4f0f68563f70f4c0fd7165b145018f5d4", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "f5c252f4ff6ada6d7a9bfe53619117965dedc1de54e74c7f58761e3bd3a459c2", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b8283d83415bdbef2b2fe74af47197c0b7d4c78be46a2eb7ce67885dda527ba3", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "499dcc97c56d812933b4b2aedca14bf0d281761d94316485b51e0b09c1e4d917", -"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2e8ce270ebe538a0576f6faceda02cc1b7e558be2a945b9798c17f7c60f33e72", -"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2e8ce270ebe538a0576f6faceda02cc1b7e558be2a945b9798c17f7c60f33e72", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", -"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", -"T3T1_en_test_pin.py::test_correct_pin": "8c7c77033a5713b5711bfadffa4571699a57e45a7fe706bce1124aac9d388b04", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "85bc6103083b98789b73b809df3cd45803a9e89c2f3a4334a7cf1a3c532f549f", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "69fa725e16af6d0cd6f9b5c4440282fdd5ec80200376f4ffba445c798bdce043", -"T3T1_en_test_pin.py::test_no_protection": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_protection_levels.py::test_apply_settings": "604818dda3e0dd16f894bb1db91db988c69778112cf248a2361efd91599e0bea", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "a52a68dd61dc84ba5c4df3d4db97647945455b71226359d525862985b2a40e29", -"T3T1_en_test_protection_levels.py::test_get_address": "1b3777b70f68e380350a8026cfd95a12cb7f8f47175acb85eeef917851e470a9", -"T3T1_en_test_protection_levels.py::test_get_entropy": "955535bd43f6de58e4b7db682d594a3d7ea35d5fdc766312cea04169388ba24b", -"T3T1_en_test_protection_levels.py::test_get_public_key": "1b3777b70f68e380350a8026cfd95a12cb7f8f47175acb85eeef917851e470a9", -"T3T1_en_test_protection_levels.py::test_initialize": "43f7a88635b45d8fd6045d5b7488a3183698b866b626527913bb5579875ddca9", -"T3T1_en_test_protection_levels.py::test_passphrase_cached": "6514c2e60187f80be1fcd667c9cee392ec98c946994a572b14f24c59d0161610", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "f16a38d967d236cd20055eb23a9578213c1b7f1b3f19f61eec3cc7f7abc2a63b", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "0a57dc7f2d0bb91694bd88295756f4a7faf56d5f8411755cddc23e8ede179081", -"T3T1_en_test_protection_levels.py::test_ping": "1068757dcd76f01560c64edfaaeec2ec9c2f8b3270277cf2c38276d10dd42ba7", -"T3T1_en_test_protection_levels.py::test_sign_message": "7b2ba93a14065b4fb15dcbb99188bbd0626481421172b597642f2f42d1cde767", -"T3T1_en_test_protection_levels.py::test_signtx": "9d51a8e08dd32b6e08e68f270ea4d35287170ac9d6617f82d08d7c721229f689", -"T3T1_en_test_protection_levels.py::test_unlocked": "e08a96b24f115b72eb3f17fa5ee9628d1ae3321f0f5d0d4686da930e7f0e5081", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "f9687ed380da703aff31ea1cfbf280ec78dee613f75082a5a295ffd0843f5634", -"T3T1_en_test_protection_levels.py::test_wipe_device": "2975d9b2fd1e6118e259de6ef3b3fbe7c016a7579c282287ae22c4ff02896187", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "ab8ff27b0d2aa4793b58c172d8656058bba8b267caf08240975e752fb758fd95", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "16a8b9333a55c1632057775c26ab4d2be68a8e031ff07d92cff2a637462cea8b", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "96fce6572203403798314678a3d2ffd082dca7954b2f470251c66323bc804cb1", -"T3T1_en_test_sdcard.py::test_sd_format": "85e8d653d42a1f84de35ebd00cee1ada97ee367f9f0bff5ad3bb1c07782d0c38", -"T3T1_en_test_sdcard.py::test_sd_no_format": "266a9ae0966cb0720c2515bcf91bfe3315103d0e174387cf389e998d6994d5e1", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "dd0572acab338caa3ca3c4b493dc7f857cbd8e89ef7f74144e122cf22e1283d6", -"T3T1_en_test_session.py::test_cannot_resume_ended_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_session.py::test_clear_session": "efe26d8c5e027aca6403f25343ee69535687fcf6d4bc6b8d98a3abd91f1977dd", -"T3T1_en_test_session.py::test_derive_cardano_empty_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_session.py::test_derive_cardano_running_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_session.py::test_end_session": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_session.py::test_end_session_only_current": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_session.py::test_session_recycling": "1ad27d88f19f1ba791244c8e34d942728ded4e1245247e16bdba66570cc1dc68", -"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "c0d1b2e8e75d184b1386cf038428d4dcbd40eb083e0380e9a0c80aadbcd6f030", -"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "6108dddec12ea511231c99a9ddc8a09152e8268e8eea267cb1593b373156492b", -"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "24ae537211d9cdd015f883185240ef4ffe0439c2300b7a29ce3fb13340d3b468", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "6084576089e22b31932c937600a7a5f4bb503bc95dfc1f19a7d6094f1816d134", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "96f63901deab87807e4f8195700995a18ae060f94c2b942e011cefdf4a8c5906", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "5e27eeffe4b9f6f453ef3650660e62ad48e373c986867d7b08c4ab8baaa80e82", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "a6b4caad9912bdec009338898694de1fd99ec791e115c16ac01bbc7b466e0274", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "6514c2e60187f80be1fcd667c9cee392ec98c946994a572b14f24c59d0161610", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "8d8db28df9a3568f0dc2a1aca2dca2b4b5b32da3812444801e7334311eddb161", -"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "d505c094526efb992843e679429890b1c78944c07c5ac6f5f9a11d1e479ef4fc", -"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "65f9a629c522075701b9b874eb059d51d0a1e7ca1e21a449788a4bec49c55707", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a1563ce1f7d0efae0a02871947e7acb92a5ccf0d8b696ffd6119eab9d2585623", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "0c527eaf180724846a79e870865417e4c79849aedb9d31bc0e4ae858c191cf52", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "285fce8c1cdd0ff0981fbb2d25ee18b297c38e044ecce27eddd206086d1e96e6", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "fa0c77e0b5cf823861aacb58a2348627fe4dd3f50c530e6ee95a64c6b719a895", -"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "c9b19776cbfb63581e73a7bf8e0ae34820f4f38190d7ca41d45a787f0ca247be", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d5a43a3b4adefa0018a0da31d373100019c8ed164e3f2ab08adfdddf6d76e89d", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c3434e524cd74fc78be8d148c55836ffd794b5c584c941df0d34bf9ba99b66f7", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dd59de8e11698d3b4570017ce5f4a68ac63a6bfbf1f9cfa3ff416eec1b097915", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "8c2c41e9f0e6de932891cfbfc1504a9f356f9d3035e97c779a4ac034a5b2ff9f", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "42964bd4d48ed06d4cbbb8eafa12ef8ac6ebbb097419061c208b7d81c387ed75", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "3d5093f2c4e9c537fcfee53b8051d25987519341581a61b52b5f08ee7a6cabb3", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "a7d9ab2ba97435d2b11102c4b6289821a460f4dbaf90a778e5d4200593b23997", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "3ef44fc050f0f1981767b50c04410679cc6f9ab6517b29cad728ea3382abb301", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "e845dcf7d338cb212a3466a2c90a64c43de071a322d13fff41a447544ee94773", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "8ba4269b2ee75a05edb9211540739c4d0808266a4c9c3ead7673bf5e10fc41d5", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "8c22d1af7719299d824c3f5e5521dc42dd4a7d70150aeabfcc30bc846a4f3707", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "0115545ae23acc57e5eb3ecd2d821b504d91be9d94b64b00e812ffd88e2151e4", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "f88813d1982478a440d5e5f87d25fff8c12576e5e9d4a5e1f4ddc307275e1129", -"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "01c534328aac95e8e6d0b968b580aaa97fdfa8e58e6efd6f1b816d0626220e19", -"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "3640936949bd2639d225c5ca8db3cdcdd3fed7794d5b25d2c7be0ba5846a63ff", -"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "e516a868683d108e916edee64ae6b6de68cb3bfc6a018aade8483202f7b7c26a", -"T3T1_en_zcash-test_sign_tx.py::test_one_two": "5f9aea98854c230e7d664fac14e6b525fa90bd171d28402ce0e22ee3aee4af0d", -"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "ad96d0a90bffb97575fa098829ffd162cd3e2941a32e2409270e6bdb4dc32de7", -"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "9c8d0a05995aac8d68dcef5af0fb3498eec3462cce762d06f7adab8c9a2ddff8", -"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "a70fdcfb2a648aabaaf0fb046b947934b6560e5db768c4a0ded44a4623bd83e4", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "59b6b249b419f0bb8d2994eac279167b3c2281deefca17ee179a794239fa1a6e", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "2357ea487c38c3cb5cb8110b2e8b2b9c6af15cde63a4f1abc50885d78a6933af", -"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "e65e6ddfae25d16086321e5d3af84f57cab6006491b1380dd41c253643b7375d", -"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "0373a0f99ec1445924dc60f071ca11f626176d9b7e40ba4e0b0afad195ad31e0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "3532c74c7c483b3b77d6fe6fa15ad2c93a96e969010a50b877c92dda8322156b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2326597421e4e79ace8b4f6f947a295fd4c67c93015ccec01e78fdb2d541fad2", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "5235f803ac4206eb08c00222cdd0996685002bc4b694184de30a2595e59b363f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "aed8138e6050bb40a2cee1af611d4d7fa1818b44caf7b8b4cd4ccd596b6dbf4f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "65faa6dabadd455b4737d5f59946880add6426e4abcc871297e6b206de11be11", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e0bfed2434472d4c150dcb545776c7b0c6e9f7cda1f1176583fefe6cb89fc04a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "3532c74c7c483b3b77d6fe6fa15ad2c93a96e969010a50b877c92dda8322156b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "1d61b04db603df4e178110b3e610b089438340ede699eef78d296b9bb687c79c", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "e43e68f65e4a8e8bdc758b894809212b839a73aef915f249d2e2fd5a67c7de99", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "e6f575a7bee44218b7d41c5e824239257ff6e5d9e470067f57ae08b6bea555e0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "6f50a07b8571f79569c8b855be4a3eaa4f9bc44b868ece5ba7315e4586e8db5d", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e6302083a5a25552b8cdccf7de52d56c18168d814aaa63a006acbe80d1cf1b5f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "36bcf15972324062292b2132cac3a233306fed4d8670fe25eacee1e24ae43fba", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "1d61b04db603df4e178110b3e610b089438340ede699eef78d296b9bb687c79c", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "22c238aa521579a5a8a9cbc9c98b4584764d084080f1d7dd3cbbf735ca427623", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "22c238aa521579a5a8a9cbc9c98b4584764d084080f1d7dd3cbbf735ca427623", +"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "d9a6b8c8db58a4744454edf1ef85055accda762024386a7e15e288718d4cf956", +"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "97cba68ebb81912766aa10d4fdcbb2ef8da0ff3fcaf748b6097e169aef8e3490", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "8f093b2b8d2c884e44240faaf6fd841fc9985ecd51e45a161f4db2313d4f09d9", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "8f093b2b8d2c884e44240faaf6fd841fc9985ecd51e45a161f4db2313d4f09d9", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "0a0b4d4ce91e305d47a145b97a2489790a9954088ecaa5c4911fc3a5732b3057", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "0a0b4d4ce91e305d47a145b97a2489790a9954088ecaa5c4911fc3a5732b3057", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "14fe0f95696a6df42e8592fe98528d931fba208379012ace2ac76145fa3ee8c4", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "14fe0f95696a6df42e8592fe98528d931fba208379012ace2ac76145fa3ee8c4", +"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "0d36a5e12025e6d784a966f826854156804189fb4f44db6062f5144415296d04", +"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "0d36a5e12025e6d784a966f826854156804189fb4f44db6062f5144415296d04", +"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "1b47b8617388e69d6bf7d90ce398d11b9fb076adf174c1a006f43926a571b6e3", +"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "9e8489b68f8aa912fb2ab568467ef412347744d2547a215a6a198c973bab63d6", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "51e218265d9e2eda0072a13246dc844eefbd8ba603f1dbe2fe9a76c72e8aa78c", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "eb498ceb9409006a7dca71157bd19b5ab6e09d79e78477cde3c7e25b130535ab", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "b2aa2a6da1b252589acbccab68eeca083afc349a430fc8aa03383c31c170637c", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "1b8db9d042aa3d0b19416005589e681e2d56c6b91c5a09d2e5bed9c25bbb0fd3", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "5733054de9971931035a549b38921695e5533a77c6a7261fd858d44ef696406d", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "77311530017955fc7040aace1746800b6d9c55b735f8d23c4e61c9aafc74e87d", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "805d45e3a8cb7977d5e82b62e9d82e737ad812b2a6e11feb56f121a26a8d7155", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "370caefa68c25f5f82fcd7f112f6c5bcabc457661568e5e4812927bd0a5840c7", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "2fcb9a3c40617a2cf2e292f634b558e6a8a4eac6c3bbd9563588d738f8620106", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "e2d297f261322b889cde605634929b02f081d4bcad2f96f43726a6343895cfdd", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "01a9dda8ae1b215939f735c88fb71497e068b223e6a0145aad911688e87446a0", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "f68e89a8020ffc73ad0793b4efad30fa653818e652a37ab480bdb2c6b9d87c02", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "30b8bea1b5d79f6e66cfa1b91f9d2c712d4d7688f704dadcbe9d426ee82b0156", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "438391ea3a03688ac505418d5abba03e3f1a1add2af0ab716b028c92fb9ef1ff", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "68a962e4c9efdefab4ac2ec68f1e0aaea4d3e8b176e4fe67413100b1e66ac8c0", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", +"T3T1_en_misc-test_msg_signidentity.py::test_sign": "c3e2e8eeef468f2a93a04e2e3b91f52a9beba20ddd376de32a1b8f0d296ef263", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "9eda676e014969fc2e1c668b0dc2267418901ab3cf3f8cf852542ef7768624b2", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a7bdd5a377308e54614ec031e561403a8a26ffa8b2bf63a579e32770bd962c26", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "43ed2247fc20c6b97e2fa6f830048b3ade80a5c71bb570ce915e7f52e940c304", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "5f0b37faafdec450d26a9f2ca49520355e4ec7174de0eac15e5da0d7e09deb57", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "801673aec103cf62b76e006c2bb2c1b6250f9c7307e422471771eb58446dd9ff", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "7527abe1a08fcaa4e8ae65dbab129ab77e00a834540d513f60b2a778dfe4270f", +"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "c9a1b4bb0aba74b4e474ef4d576841c69a1fbefdb036c9c702badfa4ef6a2b41", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "3bd943a0084aac6373f7a2b19b124847d862133c33ab36c6604416c026808384", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "dbe8b390ef3df26abbf0e42b65b4854af03aac4edb444b5dbf84b2e288683967", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c840458d3d686df3239b155809680f7caa94a04cc49c8c3b14a85e9275c600fc", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "55b0e576ce00fa71ffc25a4b702a3bf799e030bffc73da3bf8d9d769d44ca6fe", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "7d770f32d63d1c8f51361fb09d87082bc607f3b1065e84596a92c3116083828c", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c3ee4e617437a2d65fad7b4ad82ee784e92d57de8d15b2d44d433b07573ccb93", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "751dff871075767ef09d22c5e6f288b77e018df87cf2e5632340742f6dfcd4cf", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9f17102072278e29ed740a36d91889b338ff5361b4af5ff72b207074799fb4be", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4b6466747081681285433a556663fe58248131e7f6dd18cd27f2e1bfcadaacd5", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "6982468c1ee7881ce87043efa1c11d4764e6e721db100f8719d231da80a43ef4", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "55ad57189c90a103a567228b6ad0bc5b4a3dfca86e1e808f0b3fa47f4701da55", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6e4b80addb41a936c81cc2d6420c128231efd33423c9c3b64ed649c002931e6c", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "08b038649175c311d1ecb0057fbb8c0c88295d9f62d4021bea1eb388a96ccbac", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "02231c404b1c9a10579bc5e92ae308bfae1a4cb8cf82ebef69457d603e529d35", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "b6ce70324490b29768bd92e290a1518afb4456efb74ba131fc8a168bff4f8518", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c3ee4e617437a2d65fad7b4ad82ee784e92d57de8d15b2d44d433b07573ccb93", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e6ddd186f20a53ac06b64686a1ee369c83edc87b9e1654e2871e13eeaa443497", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4682862a8be66f72eec7b2ee0a543a46c6d8b1dfbb3e5a1961d3eacd9a81b22b", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7aeeb68296287e889d7441aae3f1c1137168101f741e3c410ada57cfd34b44ec", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f391dd90e1a42f6525c78a0850f24b613943e8b30baa3bca7719208a1bc1a1f8", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ab91ccaefc9d74975c55fd3388896e097440ff9c4df59b9b5779eef29c7ad1c3", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d3fc1967d279bbccf1a23345dc167bd4013d287f9633f1a6afd84899070be5e6", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "104b49faa46a76f6682a00279c5b966f655753c7e38c3d4f3f265d2a2088905b", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ecfe11885916cde0e620e5252aea3f4787e5c55d840965df65f51c0c01a02168", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "545326be5303234fac178f38ba451f49b59787a3bba2da31d9c9077361edb37a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ae681c38f416e6bd8b07c8c4a4fc661424b21780748c8de041ca9a30b6cd7081", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "558295f337fd1bd96257b66ec6dab6346fd3912f1df5cdd0915ec0b28e578c3d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c9109cafe2f4876cea98e4ada104e79a33224e831f3663aadae7abb56fc6624d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "0325cbf09e031732a19f2e6689f3fa204e7f1ac2fd128686cbe069924fd899ad", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f21d9a4ca554a6a7bf0f97b9a1b2170ee24bf3f50ed87aa233247ce89b46b069", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7b454d8940bd6e0664a5ca2d77f0353a810ab58fabd8709f5307de71d3a5bd65", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "840cb54e21e7b58a8c8ec95dce0a84310c0825d23fa1cd2bd4a21351062a96b9", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "0bb468ef177a51232521d055455b23addd4633eb6e7c6ad0e69a849a85ace1e3", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "96cad85ff024621d562f9a648305e526379f1a7312bda10614c8a35b31fe8f33", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "731f6f73eeb39ae166c25edb8b31af1da1b945f6efbf0459c23bf73fd8dc1723", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a1b546acad68074379c3ff14e226a9d88303ab97ccc71abfcfbee271cdae492a", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6c372b6a41ae0e6cbe819113d761c39d6884384e799d53d6158fe87ff12ac0b9", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "94c41bdfc29ca3795663598a3511bbc853dba1cd2490b725e9a7a1a4b96d6e7d", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0972e40193faf4cc14f6ea390c0f97b2ded1610873365dba6a10ce6b36748f06", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "14a1d44a61c404ce9f22feb81046f678b75a50caed5f295d769995821dc32e6e", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "05bbf7ea45f84bad2eb88e3c696f8d1eeb5975610f25ba754b73cb6f3e3e3c32", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "afc66d82ef3551ff8725238788f4e4355baa72e8fd70987a8d37d5deb0625281", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0182557b6f842ec3f13803f4b3f3873ab51ab634b672df4587bc2dab67fc0171", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7ea86508f2b22e5d53d21121de04beeb56a9b8eef6462e2fcd83689b6a46f459", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "bf0c98f73fae1fcec1183ed64e5afaaf0870eabf9752e4d753b5547a858f13e7", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2c45a23b3700b121f39e12fa9affc579df425421bff7e2aeacda3307862fd709", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5c93811a2b24863a769f0236b91ff6e562a1928d5c19db9bc29dc66dfca124e9", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "af84e4f609298b46ff221f6e8f53b27b12075abec75e2492d51b0cbdd96d7d59", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b3b9aa431ee6d3cb94b2425c1ac8ce255e1e88aa392c01ca71e1147ffc8e5774", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "c9bb7502f0aa90f6d20cfa13da1bcae73b0167e9e18d2b34755cff2ba2420b61", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "e1a9862ceaecf8743b0274db341a4662ed6fca01d61d34c0c806aa176babf986", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "dadf8161382cacfd6f303c5ae7f8271ea7d2254928781b717895db35e6a1c6b6", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "ef68a2d7871cac9d63829c0dfd4c9301d424ca1f7afa1515eb60d5f7610cd939", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "8f710c50aaef7a2918198914e9fa80918de54197299fe81d2f5c96bb47918086", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "e7f4c5ac27ba47921f61b6c9b76ab93e1437bf8ee7b1e9f1b79c0a3e0fb539d2", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "dd68ca5dc8e2fa72a075a4557f93d2dcc95985fdafecdcde9584504aaa04e1ea", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "3225b56e14d4f3489407f10fb04399523af061ef8e50e490582d8dceeb399cd9", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e7f4c5ac27ba47921f61b6c9b76ab93e1437bf8ee7b1e9f1b79c0a3e0fb539d2", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "dd68ca5dc8e2fa72a075a4557f93d2dcc95985fdafecdcde9584504aaa04e1ea", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3225b56e14d4f3489407f10fb04399523af061ef8e50e490582d8dceeb399cd9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "cd25e920fe43a1aa8d828bdaebc94476f1eef2cea862e7eda30b62a4fc987425", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3b824ed78866ce81c3b8bd6f76f5ae24c1a363a78e0699a5ed25561b7e801352", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "b3eabf3042027e046c2e4a75db92bd4499e01a44f8de38c33b49dbc8af2e3620", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "aa01e190a0df3ffbc4852ede734b5c23ee12a47499bd4c909f74f4f0857d4b16", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a8368238e04eb62e3e388027fc57e5d87335a78aaea5dbb254b9cfa43d880b6d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9f176da41ae32957e42fbd6ac44fe83a3ccfe787a5c9d59b294e18585f45f06d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "180caacea6b6c5ea60ae3e77ce00050e412a798561b1aae41312691053ad8094", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "01b225a0454e62f1423daf34367e8e6d65142e3eaac567018b44f3bb576b2680", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "fde682e06ca6050659154ddc45895224658acccd8ccb1827e15bbe823988633c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "ec30585ec0c6765efc16190f0fdb885d6195b8ef5a5eb423275635d3b0da55b4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "2c0cd283bbaf42b5973d97465ac0699b0bf311b580909992633c1c6f23a0cdd6", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "f8617632f2ae937a75e13cc894bd123ac0c07ae6a2e1c93e28c80d9678ad0649", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "1b98bcf437187102eec0cb60c5e419cc12cdaf8966630cd53f9c396a84ca8861", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f58ed872caf71ddaa2e3e4a350b30121e0f492f4a443f2c1747baa10e0e1cfc3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6a69df8ed4f776dd12e0036f00a3711a940f74b31111c19435498b728893e6cf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "7a0985b07bba32208ed2ce29b1e9c9ef107e5546070de461fdfcc661f0e1c961", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "937c0331ece9d25d33aa7b69cb39c8e16fca75789cc513a4369f03db50dfa49d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "772bcc151bb53d08049837bcec33508725b2b9ee99455fd6bfc21a1fa6971af5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "08d983cb89f1695ce716259afc39fca92cded4b192a5b8f4d517c71871f9d869", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "84b1d23b08a8f46072113eeaf1e81dc872d38eeb185101c11fc5ce44b805acd8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "dd019cf183345467a30ab1a04965ce338448c93d15c8dff3051982534ab0fb75", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "dd019cf183345467a30ab1a04965ce338448c93d15c8dff3051982534ab0fb75", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "de9f3f31a743d48a397dc66a19598aea0bee211ff7edae01f08f88e8aff3ce71", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "0d2a8e49124afb54274fdf2d8435c3b6602489bada606381ca38af8ee49bdffd", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "6fa80e97ec7c7cd306cf08dc892c1d86652869dd4f244ba210d027cf7cc14d1b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8a3d7cc9b923d3d6186e35dd0f594c4d53a07bf9f35dd0648a5bffc79fdb2a7a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "a86b6e3fcaf391ba578abd0469fe79e5554d1a7e6a33514700f16e1320a733ff", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "e80d25580d70e960cdfe944dbac32e60b83103b4db7d42d73a7f7e869b79babb", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4827b1725ab47ad8ad8a4c8c4dd12f08e721b6e33ba6ce00fe956b664460619b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "19e480311b93e8663c8cb7a15470d4d41c2e5d8b173d9639bb6c01daf812c8d7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "a0c1781d8e75c74b8e8bfe09ddf7bf66c80574875eefb5551e6115e90113750d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "8fbc14cda39944b734a8e70c339b7fd6f9aa5cd7afe921af9f25814497e94158", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "49a253f6f22d80e6589e6a1f38080b2e001a48b4ff696c884999ec83f2d2732c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "4e92f620ea6c6ced6818f5252f04578079befe27f1f23f31a35da534ad328ba8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "019c26db5b4dbd6142d5a1e15d44f10a307e7f4fc8f2b2cc2df890ccc5c43460", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "2b35cdd7ec798b4b2fc245a0dc19e91892728d95b9d77fcca066d670fbefb0d7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "630e132fc8e9f5e2d8c15d68e792721c0100e3f2009bb0a407b7b9b3ff3a7afc", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "d4ac65381701c07dcfee340ad76b81bbb6e447f6b195d73a152848aa3e67f37e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8133fe9e57158e749438143fdd32f030d074ae5ee20243dd8e93b283a050bd7a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e4b71fa96939a2503e8de6118997b4ade192a1a7b2183c70c218ca5b7cdd46e8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "4d9ceeeef98b77432852a2d383388ccd6b4c533daff84be7d756d075ca862dce", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e2f5f2d04a5fc930b460cf5727d2fba612ba35aa46e35edc31f84ea4c99e29f2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "e8b54e4f8ad0bf78a3e098b9ab30c4c5ed4be84abf3e0d6f4d887c400439f94b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "917dadadaf18edaef7ec7cd7a5503c68ef11a1a9c507dddad7b827885cdbeeee", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "62c27ab52c947469e5ddc137d55b1c380851d6864287ca2060000a619867ee5b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8f6b85dbd6ea55c2b2b02eed6ed2a74c56364f685c3fa65923399385c25545f6", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2e53a85b30c95afd680c3182d50135319b057557fea0c57e38833d61774263a0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "3b704d0994502e495819b10a863783e3df9fe21811c82b2909a54480db197520", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d4ff8e6788aaec44427f68cfaf0c318a77287412baa71ef44926866a7ec92b18", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "680deb2f43a9113bbad5a76e0a35c0c3f7e1905e43f20c972b3ae59a3bd085fe", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "f5405c4d078df2a7747087d2400638e9b54d884a6f0029db772f35e66fa66d0e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "cc48a3c4edb33b0aa959140f29a27ff91bb6bf7be464146d512781b2cdb9f0b4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "9232e84ceaab761f5d4297d1cf0bd0bcd65f8906f7f38b731a9f414b3c9015f3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "c831d2abe9b543b28ff080086c0cc332c647c3c575c6b198a52f11e809688281", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "cedcc552c53a34e0585b9b0bfd68216eefd0cdae3b2fa55734ce76c9d7849f43", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "7dc1e194815ebed568ed26ede33232ac90976a72c255c50ab1b148ee744b0875", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "6c32c58e52592ff1548e40fe0b55b1a4a972bcc8ed6428a78d7db9d3c9ed12dd", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "cb9822613e7dd860784842405d8dabe0e39507566a9f8b9403f3022b530079bd", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "3e490a601da15af0bd87251c3d124d860270d61c4aa20525041eb3941f65a590", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "6fa80e97ec7c7cd306cf08dc892c1d86652869dd4f244ba210d027cf7cc14d1b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "2b415943f27093ea8f59282f24683c09ab09f5a50263f4fa28eebe3c2b1572e0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a42adbf776f73ffecddf3e3246d122451c60c5f737a58dcab95c05f0ff03cdc0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "6fc9792851ccaf186305b8e436d9fce36a98d1e1e6e6d5902ffe199497c48380", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2e925782aa18b473a4b98a522e89189baff450180d16984a2e38924747177d95", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "2f69006bc356d9742bc91f1a6d2501979b353e2fced1f6360e62cb29e1ae2db7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "5513b39780d00ea145087367ca8473ab62680980ff74f72836d0d8c9ff40f961", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "23fd379c88c651361b40b5902799b1793daa26384278729a4e420d56a8e70da7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "03d6ceceb300671dd0fac48b62fed679c1e701deeb8e4b53c28483647d8ff896", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "578b099511d4db544ed880d88fb88c36eba41982f0ea204d046822849b01f4c6", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "4a002ae604149d90858d61b2378688f4ac34cad1789885f7b7f128f70ad6bc9d", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b7e872bc5cb376e16c15b14d3eba5a992dc107f9ab68ef036313f4054a886323", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "3df56fa78cd25baffb28ab91b2e2bbd8e510069b1b4525c29f9e5adb125bc00f", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "6b07a713d4fb2a4f60e6f8931f176bf5e73b862b6e819a247a08d75ee574963e", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "313bbed79f74f1cd67f6fe006ff026a1a1280b0af2bb58697c43a9df14713826", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "cd1ae11464cfb6c550798356eddc70126ae6f7bd0c0e108b853a341bec6476f4", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "37dec8359a53966bf3555f32510f96523ecbb876c357c2a595d4faa206563554", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "243f0e6482806572398fb99757135b74a3ea9f6dee9e2ce6033fa913f65b87b6", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "b560260a448fff96818051e9ed8f7932623d5cb1b88918d8cabcd4e843a05472", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "9011d7a8540e238741418286eb6731c4290f3ea97bea41c28768f9d01f240ec8", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "765b65585bca90039572921299d5e1556a324234ff3b29b75d687170eec7892b", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0ee58bfb59898a03b91362663ee560be22141ad65876db7ada9301d20cfa028b", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "3cd05481bd48ed438fd2890bbb28480251378fc8b72a9e33a58b81fa48cfe143", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "8f1e12169e2f2952aa8d49a1fd6c6638943dae35cff32a986a42c96047c18466", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "60b2bb3879d647d3c312c8b6a5c99ff5bb39db903e2f26f85577e66919a43d3b", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "0242d37eb2b4174bbdac7cead96eb5adaaa7c8a8b5ab30affa935fe8c53921cc", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "b35dc4d7f399b8681703792e5d4b29818be6e6bf2a9dd035c0dbde3a2d04161f", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "bbd70ce12c66bda956f015afe27fad873b0f9104ba0723d3059e33c864dba9ff", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "74affdf1481d2419bc35edaf6ca18d643204d8cdd82b6687ea3ce2c769a99a2b", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a0aa05e783e4516d404c74e3bb5f5d8aabea1e182f39c655fd1ee0179721e004", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "cb01317182b0d34eee9367bd4400a30bb76b72840e38cdcf66fb2c973809a95b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9abf4e9bb727fc3d5c3dd7bbb4cbc6c7220a14c8c0cf849128b25b94a64d3b8d", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "b8cc0f7c341a32aee8f43060e4f7d4f944c965538da5993eaf8b06c199a1b375", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "15ea517254ae2a7e73f7f50c411c35f7a9e1099b72ad77e01729787c8cc0d8c1", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "3a74ffef31f6d784c9eb81c93408223d9f0db1e4f18b662985cada725193a8ad", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "e883a7d75687a581ca3946c0128892996204bf700db942bfa0651c44588d43e2", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fe1f1371d4127ede451dcd9e4bc41c63446ca78c66df81378ce9da26f4c26fd1", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0cd6df158805edd6818d280e1736356e6ab40fb9af8efc307fad60e34d13cc14", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "3ac08a46a11a62bbca8ab302e756db9b87d7e1c97fe2f04e3dea3bd9d0dbb10a", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "68101ba8c24defd783f19402ead550cf3dd9e3a24aac8c900644b2c219449625", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "39140fd602a5a66e75f9239106f8865917cb4eaeb569efc060595702e6b9c369", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "16e699848426f090b0df0c0e4830af6e3386f7704fb04c1ddc038aedce43b6c8", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "6ba6afe46b09aa694e9149317aff8d82cc1bba1a6045ea7c35928e11c0debd33", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "51dcfbfafe35e38e2d36cdd784d4d5a66c5729b7545a4c2e9e922b627c2bd001", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "1eb8a51217de79771899b612d29ad9f673c6c016386d76960ff7f7a90fbccaf1", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "25618b9150156dc4a8d3aee9fc0b09b4d7a91edd1199a20ab78454ef712298c0", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "66123062e1be338ea778a04cda1e19bd0ac76cf3c02833e02bb9625d5d1da404", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "d92ce002907529783580de65c7471df0b3cb8ce6bb3a5166281f0d303503da84", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "262d3822eb5bc1a70e2831aedb5bad147e31ab9b99cf72466e3db7af72da6ef2", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "204627bca1a6a9b8aa6bf993167ce824bda39545d306e6c6b9e3c6c4546958f6", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "7f95c2b93e5d9e41aefac78d8f139b0155c5a0a0c94879b5fc0bf7d0cb1f6a7b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "2823db3010c553f48f95fae20d9574450eb62b0a3dbe00cfef015891fabb6de7", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "3c782d275dd04fd91a6202f726eeaba0786fa96a1196188b4d86f9c5b63dcc34", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "54e9daebeb9c08a2132f051d6c963651c2cd130fee7ba49dc669c66d7674ace2", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "2f3b7397bf26c0a9773c0dfefe6f93aff11511466f50792c2d111e70a870c019", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "557af2ee7ab5537c449e10c33be1b96ccf02d5809ec1a7f6c53cf4ea7c67e7d3", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "be8e58e2a2cdedc6c01f38401e804eeda0ee4edfb0cffe568d3930bdd2429d57", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b51c4f062023bf5c32938e647c2daee9578c4f88312726d5bba8e77fe887627f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "52ef1df5fc2c40047e1ef9b00c8e408095aa3c8f0335d3b1a19a7b560bb0cf6f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "66123062e1be338ea778a04cda1e19bd0ac76cf3c02833e02bb9625d5d1da404", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "e70af13f2ba4368d9a04decc44181f2165be13f93ad92ec6cda9fb2e59c6733d", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "cbf1d0458ddbdbad98bd7fbf92744d13ea1e30e69b62aeb23549b6c24270059b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0fabec6656d0799cc83960acf437181acc7a1a566184182a8d77f9dba5a19263", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "fca66442855a70e0c95afd05b4bf5383ba6b9745c174d9d8f1d765a394d416b8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "03226e15f748a566c579c20225960d2c7c76906c213b28aacd32fd56f720ea52", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "84e254314c3e5611688da3b2631797c6c97979112d286b9592aea212a2a47766", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ec840e0811e489b7e6a45df4233e5f7576aaddee42395514d912d5381b4fcf4f", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "2001af1877144b465d572605839841f216b83d55613bb4cf2521743139b17552", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "6a474ef16a33c62d9e0e6755329704408c8aad880bbc5b269dbc62e9b03a978b", +"T3T1_en_test_autolock.py::test_autolock_default_value": "5f272284dc280e8ac6a65030d53c16718d808d92426c2124f8a514b3ad55fcf7", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "a3a42f4b63f95cb1c11ff6f83d8dcd205ccb71753168824342425fe655f0b111", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "a3a42f4b63f95cb1c11ff6f83d8dcd205ccb71753168824342425fe655f0b111", +"T3T1_en_test_basic.py::test_capabilities": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_basic.py::test_device_id_different": "295244a43e5337e4e388a7000309e1760c54a68cda1d857508ea007efb72a958", +"T3T1_en_test_basic.py::test_device_id_same": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_basic.py::test_features": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_basic.py::test_ping": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_busy_state.py::test_busy_expiry": "23f97c207e937493d1debeab20070f637e3ddb744b22325b750309bce8eeb610", +"T3T1_en_test_busy_state.py::test_busy_state": "913ea4870860251aa2e23a64bac845bae37b17a07c167ef9f8e2fda7c3119d49", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "11c548bd1e835f106f20c2ece5b3c3dca288bdc229e64c8f8d4f56ddca571285", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "11c548bd1e835f106f20c2ece5b3c3dca288bdc229e64c8f8d4f56ddca571285", +"T3T1_en_test_cancel.py::test_cancel_on_paginated": "0c710e87aa0bc7c0745d0901b9af547effe4344482ae7481fd81065c3d350201", +"T3T1_en_test_debuglink.py::test_softlock_instability": "46060db1ab91b8a519ab8d68ccf4634c4d8ea1c9ed87b108c50824ece5291f09", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "ab4461520ac776496e41de48bd7ca4f4823929f1e81503ae2646a4d09c3ec699", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_language.py::test_error_invalid_data_hash": "c3f8f983b936fe77d2c2fb884b7a19091605c946f4073e5725fed4a98da23c2a", +"T3T1_en_test_language.py::test_error_invalid_data_length": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_language.py::test_error_invalid_header_magic": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_language.py::test_error_invalid_signature": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_language.py::test_error_too_long": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_language.py::test_error_version_mismatch": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_language.py::test_full_language_change[cs]": "f213ba1aae3a6d1712e003224b50cc122c65068b572967a891b046995b34d95f", +"T3T1_en_test_language.py::test_full_language_change[de]": "c75408f2c880e13b321509ca4673d548b16751db728aed6e8f08c51cfe14be9b", +"T3T1_en_test_language.py::test_full_language_change[en]": "684a99b183f90d5861dc4e5ce8135ccfb85bcad1a6c4b756105af47112bcc54e", +"T3T1_en_test_language.py::test_full_language_change[es]": "5ed7bcaa0f3b8cd238f9597dabf249b671785f06d3ff2dfac7608629bb795a05", +"T3T1_en_test_language.py::test_full_language_change[fr]": "5f716dea0eeca42f3f0e4b2b6bf3d43e06c6dc97083b332b4171f6c0435920a7", +"T3T1_en_test_language.py::test_header_trailing_data": "590361daac7fe82e789c086187b67628a995f4ddfb535623611391fa3ffb9fac", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "6ffc4a0e7e01e61904927d0b962bc09b2aa46654e14b8fbbabee68502ea695c6", +"T3T1_en_test_language.py::test_reject_update": "55ed87f0bfa2e6522ab78b36052c296106751ea48868ee7507dd7beec1d49d87", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "e2dc71f10dde638a6970810cd4e6dc6ffd3cd0424fd5072ee2cef50f5c04c732", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "e2dc71f10dde638a6970810cd4e6dc6ffd3cd0424fd5072ee2cef50f5c04c732", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "bc9a0da01ce61eb2e2fd9e296adbb9de284c09e7ef0bc2a1356dd453eda0a9fb", +"T3T1_en_test_language.py::test_switch_from_english[None]": "ccc725b6888f145182cf0c0c0ceacc704c1a4645369c0282f5f7d07637699a73", +"T3T1_en_test_language.py::test_switch_from_english[True]": "ccc725b6888f145182cf0c0c0ceacc704c1a4645369c0282f5f7d07637699a73", +"T3T1_en_test_language.py::test_switch_from_english_not_silent": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_language.py::test_switch_language": "6c1df8c1b88bedd24f24f834fccf4ddcbc3f327489183f5c017b1251a5f8e7e4", +"T3T1_en_test_language.py::test_translations_renders_on_screen": "1af58ba4d45177d175c912df7cfe14b8c7c0e35e79c0786be5a83212e6873547", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "44f8847231d19b0629b9327b2dccde010e5c47d3f158f9452e128f889e51a667", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "61d7aa795abb5f12e649cf3c1573a368d563f8692afadf9bce8fc9d0da684d5d", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "3cb8b1409326e399b51cd92e60da259680a9293fcca7398d8b2d4c90a0f6dff8", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d84cd0c05df9e66e46b622333ece38cb3058db24c20c961debce17a0101d2c5d", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "f59875cedd33a8082c78708e9c62e29b2166f756b7b6aa16cd13e20bd09a7170", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "a374d4f6b01185016b51593a7c7a5e3d15f357a8e9113d948461ec88d5f9c798", +"T3T1_en_test_msg_applysettings.py::test_label_too_long": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_msg_applysettings.py::test_safety_checks": "fa2600c0b759a59becb2b90d2cb5bf568824d9c474773c77ed904b8c24f6657f", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "b0491ae1ab9efc337b1d0e9d8e34eb3b59a34046db45732e183ab1548c2de3d6", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "932063182864bb4d965bbd671727e7305d743fbe0db481fcb705a039d42c121a", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "901b2a73e2f3b3ee973fad699c17cda17751df7704ba641d82101273bed67eb7", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "c57dd3ae3a722ff489009be4154e96a9cafb2b0834b50fbc21f531773ac91c9e", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a269f57e91eb25ac4c23ff09248c001b771374f16c9dd02ba70fa09eb20122bd", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e3af3b946111311aa3147fc4e03b281b9522b5083ee9e2f73496e7bc3d29d107", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "33ad0ebaede0bde1f1723ef6cc969257a926b8d77ace97ada41b144e06499248", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d3b2c2e59d17a26b731274a019c8dd586a55fc343affa502b11b2e1d6fe2e5a6", +"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "03718e1a2cb958a9d8506955890486385c8792ac0e8b4c83aeaebd9b690a84d2", +"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "f044231aa22fe9c9e99e843f45121a1c62eee7b5bd758bf7e8e28b5d344ccf3f", +"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "9015b1e31adec62ea2cae719461e6c9f2d048c59d861610b48730524dda30652", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c1602f080c748b4617440aac9ea7d09d85a7e0d5b4fb8ccc6a1f64140429d981", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "229301de940d0a72c0ab1ed9354993827a8bc503fae4be07586ee929e137ac37", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "51812bdca879842871524098139892ed50f50166f7fb366008f610f02955cc21", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "e3a09893c0f808788a4a2d9f93bacede5c5043862212ef2901a18dc0bf99892c", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "a4c447300850a5a91df206c44a0afb30f19d17b6ab7fefbf268112efa49ac80f", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "bf965d7f7c6826755bdcbe267613f50932f4b5c776fb0d29afb6c74233df86f2", +"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "4efee19d4a3d096bebc6151626037617c7ebcdee8c4a8e319eec75062eb8ec43", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "556795487d2396347e1670d2950bbd8b44898f89e54c2122d58e269630f1e911", +"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "9e288bb5885db81afb67afefb3918ddfa8385bdb8b0b66d3639a45dde3c04a34", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "67b821beca343d742f31263ee939162d54e4144ceec6fb73a609e0354cf9b154", +"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "2742600e680a629470fb7af73436eb6284ed81c31510ced07252d9fb4a7fe540", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "e6f95ec420a852dd169eb9532f24f1bbcf4eff609a8bbebeccca771fc32fa46b", +"T3T1_en_test_msg_ping.py::test_ping": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "9a6d1cf4af4ab3d0cdb3ed5c6f6fa26db5d332c7c9742a729feaa8f1a0a2ca63", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "041d3d5f90faf82feb141267f624cfd9e60a6aaee65a50fa1ca70d4a6269bd0a", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "8d42b931136dd1a1285e7f695d79f7a39b62a002c56525dda3fd616fc1805fb5", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "9cda0911eba248efba1a2cffd4f9dcc61d0acd8963de964dace631abd632b75e", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "295244a43e5337e4e388a7000309e1760c54a68cda1d857508ea007efb72a958", +"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "54990297ddf4f0b6ef5b50f00df5c46f63aa1f60ba9048c8ae3a5014873b1c30", +"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "54990297ddf4f0b6ef5b50f00df5c46f63aa1f60ba9048c8ae3a5014873b1c30", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", +"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", +"T3T1_en_test_pin.py::test_correct_pin": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "55f2284117d67e0d572f1aea5b38618161e88abea15a3bc591935bb5445e9a1e", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "feed36f1e587440eb8ceb454128e4ad79f4d004b6fe9f324912839f6ecb335e9", +"T3T1_en_test_pin.py::test_no_protection": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_protection_levels.py::test_apply_settings": "6fc6bf39c1fd792202822809c81cce3d3e5f1f58b38a63a95453668a9783caf9", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "d101aecb4691d598fbd06a83dd359ef35e3ce26543b206b1139de767a2fe20f7", +"T3T1_en_test_protection_levels.py::test_get_address": "d6f356cc7b465c698b6fde35642a4399c8075e9520f0d4deefe576c2f6b841fa", +"T3T1_en_test_protection_levels.py::test_get_entropy": "c37e8c509a62563006795f5d061f682ba66fbb25096be351552b0e14b137938f", +"T3T1_en_test_protection_levels.py::test_get_public_key": "d6f356cc7b465c698b6fde35642a4399c8075e9520f0d4deefe576c2f6b841fa", +"T3T1_en_test_protection_levels.py::test_initialize": "70e7ea0df30df13ac0f4472043ea3b29206227b47e718e37d5a2625144003b46", +"T3T1_en_test_protection_levels.py::test_passphrase_cached": "d68c5489de2b5d09233683769ddefb9710dfd7f461c671711c0535d4fd4f3c7e", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "c2028d79ecaf0d8a652e4de10f03ef3220a47380e57d4de55dbce2c090b4c1ce", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "31ad0031374cbb703f7ce1282f2d1e9dbe55ca7992ecca5c1871e78fb6c2b15e", +"T3T1_en_test_protection_levels.py::test_ping": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", +"T3T1_en_test_protection_levels.py::test_sign_message": "104157e9cf0f200b2e8c53e2dcaa7e079811663b1a56c4467d058d0eec37e9af", +"T3T1_en_test_protection_levels.py::test_signtx": "5652fdefa003db698931ba040a5c592fd2ea8dcff51bf8cb3576b397aa73dfcc", +"T3T1_en_test_protection_levels.py::test_unlocked": "7d56c6330e2b96da1e3d9274e1defb1164e8e665b2de9de82cc3b49137990912", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "753f59b6176fd08d9ec3909212f338bd20f163b9ff4c73d28c2755f153650b99", +"T3T1_en_test_protection_levels.py::test_wipe_device": "71b755e566a9cc6f2ed597b6bdbbbb7e551e1db0526a757ea5adbf9c34527e12", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "862f4300d17bac6c39eb5ba24d6e47e560fa0998d5ad5392ccf9997090a6b803", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "2613872a12a75910d1f6bf13499459ea22d09062c439e10e4b73d43196a34117", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6ca21c08fffd3bc77c15463d6ccecb0d46ba88bfa7c940554ea740f600e3adf5", +"T3T1_en_test_sdcard.py::test_sd_format": "40a5169c6cc64f2106886e35935fb78991fedf1075027819edbaba9dca33ddb9", +"T3T1_en_test_sdcard.py::test_sd_no_format": "4a23edde8d891c33658f18b17d437c523f022f84ff6b9befd30c8faf67bd60a9", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "4c3bb63f83b0b8a101cd04dab2972685be27350f869a9e5eb1248049bd1587bc", +"T3T1_en_test_session.py::test_cannot_resume_ended_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_session.py::test_clear_session": "2e54374bedd33162d90817ca15376431a463d2f589a7930d052a3fb0abb55ce3", +"T3T1_en_test_session.py::test_derive_cardano_empty_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_session.py::test_derive_cardano_running_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_session.py::test_end_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_session.py::test_end_session_only_current": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_session.py::test_session_recycling": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", +"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "1661c5cfddbb40be538006280264bc8e30db72c05a38000f849ca9bc29742d14", +"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "42c1f9aa3c2967f567c61dccb480a8e4da5f9b691b6270cc42f95527dd515d72", +"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "882c54902bcf08afff84eb17ae609628586af6ba408a27fc4bc1837967e4cc13", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "2487ed14df5355bc72d1ab5a068562755044a69b88083c725ff29755a4f53ef4", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "edbb9b22c4d9653632f08a5733ddd62d55af8c718ae9e1409e488346e81c5bac", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "a125cba9c26f8be35caa5c0d0525a8d5fc7de319cbf6c317d7921df3e74f635b", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "d68c5489de2b5d09233683769ddefb9710dfd7f461c671711c0535d4fd4f3c7e", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "0488bcfcedcbfb0a254571c3880e53b519bfcd9c48aea66ce426b063f9e6f694", +"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "55c744cff577c702c6570e1c0a6fb297e1b7ad5b7497146c3272ac3c7fa484ea", +"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "eaa5c86634b1c7b1fa1906afbd0f644b4a07119369b5ea61b7fd741d0d049c46", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "8cb5089bcc38132a33e27a1b6a6b21a723e56ae41e4ddbacfe6a0a50261e678f", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "7f0ae7e269f087f8b2935fe54c6af3b6ed31e6a11017ba07f6e0e8a85e8151ce", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "81af80639c95fcbc303d5e6071cb0858ab1648d3fe6d86b6ef9959391c4cd84e", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "0643c6da846ce61b3721e5e93e547a6839fad342525e8fbdb7f3cd05928e6451", +"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "a63fcf90e82c26cd871200ead581928f5ba6a795c0b129c3db328b4e2c95ff55", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "4728b3abd356403b445e1cba8c76e63c5aeb1e23ce1cb7086b90010e7062e268", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "62a59700f8f083f84a57390956a7c77c09438cf4a75521f6800f29c2f483fa64", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ca9acdfcc9cf6d0556cc1e106a92ba6048a7b54750cdf52658a7932351389731", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "9ed12e82bc4eddf03ed25be430129148aff0985ab675f6fc667bf0cd6a95b1fa", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ebd53bc69874cab3da61fd9ebb907bc571b577510f323d2b3ab90ce930e6b2e6", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "5e2819e09655d495e6cff56f1f19771afc5041c01d063e8480a33584f3758581", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fd4cb96d43ae589d575bcdab821edf44a837f849ec74e6f79ef307c0e07f213d", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "1300e5c49e238a20cc043b25153e0c38bfac455a3144723b761c716c2af2475d", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "80ef196f07c130954c242fa916bf56573394017b2f2a857f7cfd913a358930dd", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "5da07e0f447f877baaea76ece6a0bf927d24777b7e728614081eac18b81bb72e", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "28bb8fbf982de020cbf6d1ba07a9f24e205aa6407b6f9b795499d4855c034800", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e42a0932f8ce798cd593d3eaf29590956054a9c72107cd18c3fc6e3ca8c78d3b", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "7f0ddb38a094f5a3e5460cc2628467079d0e140839a3357fc4999cc171f6cc0e", +"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "92024bca84983491b17ea260caa650e695a5e94f804cf8583f1878fc45136dd0", +"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "38995efc08d761ee8929b115eb4c38f42f5210fa987cbdc51cdd4d87bf244a98", +"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "c784707e36249b24855017856e1855388401fe22d2ecac7cee389e83afb28130", +"T3T1_en_zcash-test_sign_tx.py::test_one_two": "dc219bc61bc850922c8e68272a1b0f716f040342eabd928adf80615a1845167a", +"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", +"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "5320df12b0ae7a6d2cdbb221159fa40d8db9950e52f09816696a49ed26d89efc", +"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "d1eca3bf87b03c9a8d32343a8b1f1a7c1005edd37ff23e78eac57e8aecf47c89", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "4ffb57a8775709cc8b57e368b9bb8ea38653d6f9af432d068fbccce76b50cb7f", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "5b0755dee09e8c53bf0fb979b77cdd8ab5008c196d16120c19c195b5e6c2666c", +"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "254e319fa5ae4452a9036fba7947d47997ca57005943cc72e91d31a1bea521a7", +"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "27d5a5586521ae66cd1148ee571fe1e3007476990f05c1c30e8d4951b4885ea0", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "686710df9a9891b018a6fb7ac364fdd0300a5de32d93bde74a73cd3d744376a2", "T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f351277351741466c4ef1698bf97ce56b0228adab2c479c0a06edabeb7da2d7e", @@ -22647,14 +22647,14 @@ "T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "7d18d65883b195be762f7d2e7ca1337d19caf65eb4c2c439484a8abc0b7a9f32", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "b01f34ba8953a78b2fb235e345c862a54b91dd0ff4b072fa7172d0f24977558f", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "5856901cae7d000f7db9a185676fcd2a32a748c42cbbeb50c1069ea842ce3247", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "eb80f46215194b9b22a51a2095cd08db5e07a2130f36f8682eb6a3af0d818655", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "d4f098d51749d5e70dd7c0930fc14972cb02d0ee9f52d6cf26d6d70350005ea8", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "af408bd71b6baa388dd35434ecce08ec954e1f4a0db17b0679f710e66a021cc3", "T3T1_en_test_shamir_persistence.py::test_abort": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "cca49682544d6fce18e06c9d7f626787b7ebae95821c82a56fdc168d2c89a179", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "d814f603c0063d54b9725863d79b408a39ed56cc176aa97b6a01f98d9ca37c3e", "T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "6bd027b12b00011e7fda75b13286751c67c7e279ff32e285f2a7ee7078f00aee", "T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "8f2c5939c72cbd699820a81d4edd0b9a082684a6a79739312f9de067bdd47603", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "d250aad4cba370f28bdac1c2e59b1dc59ba9fcbfd6ed7be5f0e74544a7851424" +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "42e073f1111ee69af286534c1fa7413ce21e767745749685dc298a4735a8836a" } } } From 66495f3b8e21d44b6280b0655d773e6a6c2e546b Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 31 May 2024 11:14:47 +0200 Subject: [PATCH 237/626] chore(core): update lang jsons Translations delivered from diff of en.json by the translation agency. en.json is sorted. [no changelog] --- core/translations/cs.json | 136 ++++++++++++++++++++++------- core/translations/de.json | 130 +++++++++++++++++++++------ core/translations/en.json | 68 +++++++-------- core/translations/es.json | 130 +++++++++++++++++++++------ core/translations/fr.json | 140 +++++++++++++++++++++++------- core/translations/signatures.json | 6 +- 6 files changed, 453 insertions(+), 157 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 5b9dc29524..fe5565434f 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -27,7 +27,7 @@ "4_FONT_BIG": "font_ttsatoshi_demibold_42_cs.json", "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_cs.json", "6_FONT_NORMAL_UPPER": null, - "7_FONT_BOLD_UPPER":null, + "7_FONT_BOLD_UPPER": null, "8_FONT_SUB": "font_ttsatoshi_demibold_18_cs.json" } }, @@ -42,10 +42,15 @@ "addr_mismatch__support_url": "trezor.io/support", "addr_mismatch__wrong_derivation_path": "Chybná derivační cesta pro vybraný účet.", "addr_mismatch__xpub_mismatch": "Neshoduje se XPUB?", + "address__cancel_contact_support": "Pokud se adresa příjemce neshoduje, obraťte se na Trezor podporu na adrese trezor.io/support.", + "address__cancel_receive": "Zrušit příjem", + "address__confirmed": "Adresa příjemce potvrzena", "address__public_key": "Veřejný klíč", + "address__qr_code": "QR kód", "address__title_cosigner": "Další podepisující", "address__title_receive_address": "Přijímací adresa", "address__title_yours": "Vaše", + "address_details__account_info": "Informace o účtu", "address_details__derivation_path": "Derivační cesta", "address_details__derivation_path_colon": "Derivační cesta:", "address_details__title_receive_address": "Přijímací adresa", @@ -54,13 +59,19 @@ "authenticate__header": "Ověřit zařízení", "auto_lock__change_template": "Automaticky zamknout Trezor po {0} nečinnosti?", "auto_lock__title": "Prodleva auto zámku", + "auto_lock__turned_on": "Automatické uzamčení zapnuto", "backup__can_back_up_anytime": "Svůj Trezor můžete kdykoli zálohovat.", + "backup__create_backup_to_prevent_loss": "Vytvořte si zálohu, abyste neztratili přístup ke svým prostředkům.", + "backup__info_multi_share_backup": "Záloha peněženky obsahuje několik seznamů slov v určitém pořadí (části).", + "backup__info_single_share_backup": "Záloha peněženky obsahuje slova ({0}) v určitém pořadí.", "backup__it_should_be_backed_up": "Novou peněženku byste si měli ihned zálohovat.", "backup__it_should_be_backed_up_now": "Měli byste ji hned zálohovat!", - "backup__new_wallet_created": "Byla vytvořena nová peněženka.\n", - "backup__new_wallet_successfully_created": "Nová peněženka byla vytvořena.", + "backup__new_wallet_created": "Peněženka byla vytvořena.\n", + "backup__new_wallet_successfully_created": "Peněženka byla vytvořena.", "backup__recover_anytime": "Pomocí zálohy můžete svou peněženku kdykoli obnovit.", + "backup__title_backup_completed": "Záloha peněženky byla vytvořena", "backup__title_backup_wallet": "Záloha peněženky", + "backup__title_create_wallet_backup": "Vytvořit zálohu peněženky", "backup__title_skip": "Přeskočit zálohu", "backup__want_to_skip": "Určitě chcete přeskočit zálohování?", "binance__buy": "Koupit", @@ -260,7 +271,7 @@ "confirm_total__fee_rate": "Výše poplatku", "confirm_total__fee_rate_colon": "Výše poplatku:", "confirm_total__sending_from_account": "Odeslání z účtu:", - "confirm_total__title_fee": "Info o poplatcích", + "confirm_total__title_fee": "Info o poplatcích", "confirm_total__title_sending_from": "Odeslání z", "debug__loading_seed": "Načítání seedu", "debug__loading_seed_not_recommended": "Nedoporučujeme načítat soukromý seed.", @@ -298,7 +309,6 @@ "eos__requirement": "Požadavek:", "eos__sell_ram": "Prodat RAM", "eos__sender": "Odesílatel:", - "send__sign_transaction": "Podepsat transakci", "eos__threshold": "Počet částí zálohy pro obnovu:", "eos__to": "Komu:", "eos__transfer": "Převod:", @@ -324,6 +334,14 @@ "ethereum__show_full_message": "Zobrazit celou zprávu", "ethereum__show_full_struct": "Zobrazit strukturu", "ethereum__sign_eip712": "Chcete podepsat typovaná data EIP-712?", + "ethereum__staking_claim": "Nárokovat", + "ethereum__staking_claim_address": "Nárokovat adresu", + "ethereum__staking_claim_intro": "Nárokovat ETH z Everstake?", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Stake adresa", + "ethereum__staking_stake_intro": "Stakovat ETH na Everstake?", + "ethereum__staking_unstake": "Zrušit stakování", + "ethereum__staking_unstake_intro": "Zrušit stakování ETH z Everstake?", "ethereum__title_confirm_data": "Potvrdit data", "ethereum__title_confirm_domain": "Potvrdit doménu", "ethereum__title_confirm_message": "Potvrdit zprávu", @@ -333,14 +351,6 @@ "ethereum__units_template": "Jednotky: {0}", "ethereum__unknown_token": "Neznámý token", "ethereum__valid_signature": "Podpis je platný.", - "ethereum__staking_stake": "Stake", - "ethereum__staking_stake_address": "Stake adresa", - "ethereum__staking_stake_intro": "Stakovat ETH na Everstake?", - "ethereum__staking_unstake": "Zrušit stakování", - "ethereum__staking_unstake_intro": "Zrušit stakování ETH z Everstake?", - "ethereum__staking_claim": "Nárokovat", - "ethereum__staking_claim_address": "Nárokovat adresu", - "ethereum__staking_claim_intro": "Nárokovat ETH z Everstake?", "experimental_mode__enable": "Povolit experimentální funkce?", "experimental_mode__only_for_dev": "Pouze pro vývoj a beta testování!", "experimental_mode__title": "Experiment. režim", @@ -367,6 +377,10 @@ "fido__wanna_erase_credentials": "Chcete vymazat všechny údaje?", "firmware_update__title": "Aktual. firmware", "firmware_update__title_fingerprint": "Otisk firmwaru", + "haptic_feedback__disable": "Vypnout haptickou zpětnou vazbu?", + "haptic_feedback__enable": "Zapnout haptickou zpětnou vazbu?", + "haptic_feedback__subtitle": "Nastavení", + "haptic_feedback__title": "Haptická zpětná vazba", "homescreen__click_to_connect": "Kliknutím se připojíte", "homescreen__click_to_unlock": "Kliknutím odemknete", "homescreen__title_backup_failed": "Záloha selhala", @@ -381,11 +395,24 @@ "inputs__cancel": "ZRUŠIT", "inputs__delete": "ODSTRANIT", "inputs__enter": "ZADAT", - "inputs__return": "VRÁTIT", "inputs__previous": "PŘEDCHOZÍ", + "inputs__return": "VRÁTIT", "inputs__show": "ZOBRAZIT", "inputs__space": "ROZDĚLENÍ", - "instructions__swipe_up": "Swipe up", + "instructions__continue_holding": "Stále\ndržte", + "instructions__continue_in_app": "Pokračujte v aplikaci", + "instructions__enter_next_share": "Zadejte další část", + "instructions__hold_to_confirm": "Držením potvrďte", + "instructions__hold_to_continue": "Držením pokračujte", + "instructions__hold_to_exit_tutorial": "Podržením ukončíte tutoriál", + "instructions__hold_to_finish_tutorial": "Podržením dokončíte tutoriál", + "instructions__hold_to_sign": "Podržením podepíšete", + "instructions__learn_more": "Zjistit více", + "instructions__shares_continue_with_x_template": "Pokračujte částí č. {0}", + "instructions__shares_start_with_1": "Začněte částí č. 1", + "instructions__swipe_up": "Přejeďte prstem nahoru", + "instructions__tap_to_confirm": "Klepnutím potvrďte", + "instructions__tap_to_start": "Začněte klepnutím", "joint__title": "Společná transakce", "joint__to_the_total_amount": "Do celkové částky:", "joint__you_are_contributing": "Přispíváte:", @@ -481,20 +508,24 @@ "nem__unencrypted": "Nezašifrováno:", "nem__unknown_mosaic": "Neznámá mozaika!", "passphrase__access_hidden_wallet": "Otev. passphrase pen.?", - "passphrase__always_on_device": "Opravdu chcete v zařízení vždy zadávat passphrase?", + "passphrase__always_on_device": "Vždy zadávat passphrase na Trezoru?", "passphrase__from_host_not_shown": "Použije se passphrase zadaná hostitelem, ale vzhledem k nastavení zařízení se nezobrazí.", "passphrase__hidden_wallet": "Passphrase pen.", "passphrase__hide": "Skrýt passphrase od hostitele?", - "passphrase__next_screen_will_show_passphrase": "Na další obrazovce se zobrazí passphrase.", + "passphrase__next_screen_will_show_passphrase": "Na další obrazovce se zobrazí vaše passphrase.", "passphrase__please_enter": "Zadejte passphrase.", "passphrase__revoke_on_device": "Chcete zrušit passphrase v nastavení zařízení?", "passphrase__title_confirm": "Potvrdit passphrase", "passphrase__title_enter": "Zadejte passphrase", "passphrase__title_hide": "Skrýt passphrase", + "passphrase__title_passphrase": "Passphrase", "passphrase__title_settings": "Nastav. passphrase", "passphrase__title_source": "Zdroj passphrase", "passphrase__turn_off": "Vypnout ochranu s passphrase?", "passphrase__turn_on": "Zapnout ochranu s passphrase?", + "pin__cancel_description": "Pokračovat bez PIN kódu", + "pin__cancel_info": "Bez PIN kódu může k tomuto zařízení přistupovat kdokoli.", + "pin__cancel_setup": "Zrušit nastavení PIN kódu", "pin__change": "Změnit PIN?", "pin__changed": "PIN byl změněn.", "pin__cursor_will_change": "Poloha kurzoru se mezi jednotlivými položkami změní pro zvýšení bezpečnosti.", @@ -539,31 +570,39 @@ "progress__signing_transaction": "Podpis transakce...", "progress__syncing": "Synchronizace...", "progress__x_seconds_left_template": "Zbývá {0} s", + "reboot_to_bootloader__just_a_moment": "Chvíli počkejte...", "reboot_to_bootloader__restart": "Trezor se restartuje v režimu bootloaderu.", "reboot_to_bootloader__title": "Spustit bootloader", "reboot_to_bootloader__version_by_template": "Verze firmwaru {0}\nz {1}", - "reboot_to_bootloader__just_a_moment": "Chvíli počkejte...", "recovery__cancel_dry_run": "Zrušit kontrolu zálohy", "recovery__check_dry_run": "Zkontrolovat zálohu?", "recovery__cursor_will_change": "Poloha kurzoru se mezi jednotlivými položkami změní pro zvýšení bezpečnosti.", - "recovery__dry_run_bip39_valid_match": "Zadaná záloha je platná a shoduje se se zálohou v zařízení.", + "recovery__dry_run_backup_not_on_this_device": "Záloha peněženky není na tomto zařízení", + "recovery__dry_run_bip39_valid_match": "Zadaná záloha peněženky je platná a shoduje se se zálohou v zařízení.", "recovery__dry_run_bip39_valid_mismatch": "Zadaná záloha je platná, ale neshoduje se se zálohou v zařízení.", + "recovery__dry_run_invalid_backup_entered": "Zadali jste neplatnou zálohu peněženky", + "recovery__dry_run_slip39_valid_all_shares": "Všechny části jsou platné a patří k záloze v zařízení", "recovery__dry_run_slip39_valid_match": "Zadané části zálohy jsou platné a odpovídají tomu, co je aktuálně v zařízení.", "recovery__dry_run_slip39_valid_mismatch": "Zadané části zálohy jsou platné, ale neodpovídají tomu, co je aktuálně v zařízení.", + "recovery__dry_run_slip39_valid_share": "Zadaná část je platná a patří k záloze v zařízení", + "recovery__dry_run_verify_remaining_shares": "Ověřit zbývající části zálohy?", "recovery__enter_any_share": "Zadejte libovolnou část", "recovery__enter_backup": "Zadejte zálohu.", "recovery__enter_different_share": "Zadejte jinou část.", + "recovery__enter_each_word": "Zadejte každé slovo zálohy peněženky ve správném pořadí.", "recovery__enter_share_from_diff_group": "Zadejte část z jiné skupiny.", "recovery__group_num_template": "Skupina {0}", "recovery__group_threshold_reached": "Dosaženo počtu částí zálohy skupiny.", - "recovery__invalid_wallet_backup_entered": "Zadali jste neplatnou zálohu.", + "recovery__info_about_disconnect": "Během obnovování peněženky můžete odpojit Trezor a pokračovat později.", "recovery__invalid_share_entered": "Zadali jste neplatnou část zálohy.", + "recovery__invalid_wallet_backup_entered": "Zadali jste neplatnou zálohu.", "recovery__more_shares_needed": "Je potřeba více částí", "recovery__num_of_words": "Vyberte počet slov v záloze.", "recovery__only_first_n_letters": "Musíte vybrat pouze první 2-4 písmena každého slova.", "recovery__progress_will_be_lost": "Veškerý postup bude ztracen.", "recovery__share_already_entered": "Část jste již zadali", - "recovery__share_from_another_multi_share_backup": "Zadali jste část z jiné zálohy Shamir.", + "recovery__share_does_not_match": "Část se neshoduje", + "recovery__share_from_another_multi_share_backup": "Zadali jste část z jiné zálohy.", "recovery__share_num_template": "Část {0}", "recovery__title": "Obnovit peněženku", "recovery__title_cancel_dry_run": "Zruš. kontr. zálohy", @@ -572,14 +611,14 @@ "recovery__title_recover": "Obnovit peněženku", "recovery__title_remaining_shares": "Zbývající části", "recovery__type_word_x_of_y_template": "Zadejte slovo {0} z {1}", - "recovery__wallet_recovered": "Peněženka obnovena", + "recovery__wallet_recovered": "Obnovení peněženky dokončeno", "recovery__wanna_cancel_dry_run": "Opravdu chcete zrušit kontrolu zálohy?", "recovery__wanna_cancel_recovery": "Opravdu chcete proces obnovy zrušit?", "recovery__word_count_template": "(slova: {0})", "recovery__word_x_of_y_template": "Slovo {0} z {1}", "recovery__x_more_items_starting_template_plural": "Zahajuje se dalších {count} {plural}", - "recovery__x_more_shares_needed_template_plural": "Je potřeba dalších {count} {plural}.", - "recovery__x_of_y_entered_template": "Zadáno {0} částí z {1}.", + "recovery__x_more_shares_needed_template_plural": "Zadejte ještě {count} {plural}", + "recovery__x_of_y_entered_template": "Zadali jste {0} z {1} částí", "recovery__you_have_entered": "Zadali jste", "reset__advanced_group_threshold_info": "Počet částí zálohy skupiny určuje počet skupin potřebných k obnovení peněženky.", "reset__all_x_of_y_template": "všech {0} z {1} částí", @@ -587,19 +626,23 @@ "reset__button_create": "Vytv. peněženku", "reset__button_recover": "Obn. peněženku", "reset__by_continuing": "Pokračováním přijímáte smluvní podmínky společnosti Trezor.", + "reset__cancel_create_wallet": "Zrušit vytvoření peněženky", + "reset__check_backup_instructions": "Rychle zkontrolujeme vaši zálohu.", "reset__check_backup_title": "Zkontr. zálohu", "reset__check_group_share_title_template": "Zkont. g{0}-část{1}", - "reset__check_wallet_backup_title": "Zkontrolovat seed", "reset__check_share_title_template": "Zkontrol. část #{0}", + "reset__check_wallet_backup_title": "Zkontrolovat seed", "reset__continue_with_next_share": "Pokračujte další částí.", "reset__continue_with_share_template": "Pokračujte částí #{0}.", "reset__finished_verifying_group_template": "Ověřili jste části zálohy skupiny {0}.", - "reset__finished_verifying_wallet_backup": "Dokončili jste ověření zálohy.", "reset__finished_verifying_shares": "Dokončili jste ověření částí zálohy.", + "reset__finished_verifying_wallet_backup": "Dokončili jste ověření zálohy.", "reset__group_description": "Skupina se skládá z částí zálohy.", "reset__group_info": "Každá skupina má stanovený počet částí a vlastní počet částí zálohy pro obnovu. V dalších krocích nastavíte počty částí a počet pro obnovu.", "reset__group_share_checked_successfully_template": "Skupina {0} - Proběhla kontrola části {1}.", "reset__group_share_title_template": "Skupina{0}-část{1}", + "reset__incorrect_word_selected": "Vybrali jste nesprávné slovo", + "reset__more_at": "Více na", "reset__more_info_at": "Další informace na", "reset__need_all_share_template": "K obnovení potřebujete všech {0} částí.", "reset__need_any_share_template": "K obnovení potřebujete libovolné {0} části.", @@ -609,29 +652,35 @@ "reset__num_of_share_holders_template": "Každý z {0} lidí nebo míst bude mít jednu část.", "reset__num_of_shares_advanced_info_template": "Každá část zálohy je sekvence 20 slov. Dále zvolíte počet částí pro obnovu potřebných k vytvoření skupiny {0}.", "reset__num_of_shares_basic_info": "Každá část zálohy je sekvence 20 slov. Dále zvolíte, kolik částí potřebujete k obnovení peněženky.", + "reset__num_of_shares_how_many": "Kolik částí zálohy peněženky chcete vytvořit?", + "reset__num_of_shares_long_info": "Každá část zálohy je sekvence 20 slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", "reset__num_shares_for_group_template": "Potřebný počet částí k vytvoření skupiny {0}.", "reset__number_of_shares_info": "= počet seznamů jedinečných slov u zálohy peněženky.", "reset__one_share": "1 část", "reset__only_one_share_will_be_created": "Bude vytvořena pouze jedna část.", - "reset__recovery_wallet_backup_title": "Záloha", "reset__recovery_share_title_template": "Část zálohy č. {0}", + "reset__recovery_wallet_backup_title": "Záloha", "reset__required_number_of_groups": "Požadovaný počet skupin pro obnovení.", "reset__select_correct_word": "Pro každou pozici vyberte správné slovo.", + "reset__select_threshold": "Vyberte minimální počet částí potřebných k obnovení peněženky.", "reset__select_word_template": "Vybrat slovo {0}", "reset__select_word_x_of_y_template": "Vyb. slovo {0} z {1}:", "reset__set_it_to_count_template": "Nastavte {0} a budete potřebovat ", - "reset__share_checked_successfully_template": "Proběhla kontrola {0}. části zálohy.", + "reset__share_checked_successfully_template": "Část č. {0} byla úspěšně zkontrolována.", + "reset__share_completed_template": "Část č. {0} byla dokončena", "reset__share_words_title": "Standardní záloha", "reset__slip39_checklist_num_groups": "Počet skupin", "reset__slip39_checklist_num_shares": "Počet částí", + "reset__slip39_checklist_num_shares_x_template": "Počet částí", "reset__slip39_checklist_set_num_groups": "Nastavte počet skupin", "reset__slip39_checklist_set_num_shares": "Nastavte počet částí", "reset__slip39_checklist_set_sizes": "Nastavte velikosti a počet pro obnovu", "reset__slip39_checklist_set_sizes_longer": "Nastavte velikost a počet částí každé skup.", "reset__slip39_checklist_set_threshold": "Nastavte počet částí", + "reset__slip39_checklist_threshold_x_template": "Počet částí zálohy pro obnovu:", "reset__slip39_checklist_title": "Kont. seznam zálohy", "reset__slip39_checklist_write_down": "Zapište si a zkontr. všechny části", - "reset__slip39_checklist_write_down_recovery": "Zapište si a zkontr. všechny části zálohy", + "reset__slip39_checklist_write_down_recovery": "Zapište si a zkontr. části zálohy", "reset__the_threshold_sets_the_number_of_shares": "Počet pro obnovu nastaví počet částí ", "reset__threshold_info": "= minimální počet seznamů jedinečných slov u obnovy.", "reset__title_backup_is_done": "Záloha je dokončena", @@ -647,7 +696,8 @@ "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Nastavte celkový počet částí ve skupině {0}.", "reset__use_your_backup": "Použijte zálohu, když potřebujete obnovit peněženku.", - "reset__write_down_words_template": "Napište si postupně všech {0} slov.", + "reset__words_written_down_template": "Mám zapsáno postupně všech {0} slov.", + "reset__write_down_words_template": "Na kartu zálohy napište {0} slov v pořadí.", "reset__wrong_word_selected": "Vybrali jste chybné slovo!", "reset__you_need_one_share": "Pro obnovení potřebujete 1 část.", "reset__your_backup_is_done": "Záloha je dokončena.", @@ -687,11 +737,15 @@ "sd_card__wanna_format": "Opravdu chcete naformátovat kartu SD?", "sd_card__wrong_sd_card": "Nesprávná karta SD.", "send__address_path": "cesta adresy", + "send__cancel_sign": "Zrušit podpis", "send__confirm_sending": "Odesílání částky", "send__from_multiple_accounts": "Odesílání z více účtů.", + "send__incl_transaction_fee": "vč. transakčního poplatku", "send__including_fee": "Včetně poplatku:", "send__maximum_fee": "Maximální poplatek:", "send__receiving_to_multisig": "Příjem na adresách multisig.", + "send__send_from": "Odeslat z", + "send__sign_transaction": "Podepsat transakci", "send__title_confirm_sending": "Potvrdit odeslání", "send__title_joint_transaction": "Společná transakce", "send__title_receiving_to": "Příjem", @@ -702,6 +756,7 @@ "send__total_amount": "Celková částka", "send__total_amount_colon": "Celková částka:", "send__transaction_id": "ID transakce:", + "send__transaction_signed": "Transakce podepsána", "send__you_are_contributing": "Přispíváte:", "share_words__words_in_order": " slova v pořadí.", "share_words__wrote_down_all": "Zapsal/a jsem si všechna ", @@ -791,9 +846,9 @@ "stellar__value_sha256": "Hodnota (SHA-256):", "stellar__wanna_clean_value_key_template": "Chcete vymazat klíč hodnoty {0}?", "stellar__your_account": " váš účet", - "storage_msg__verifying_pin": "Ověřování PINu", "storage_msg__processing": "Zpracovávání", "storage_msg__starting": "Spouštění", + "storage_msg__verifying_pin": "Ověřování PINu", "storage_msg__wrong_pin": "Špatný PIN", "tezos__baker_address": "Adresa bakera:", "tezos__balance": "Zůstatek:", @@ -807,17 +862,28 @@ "tezos__submit_ballot": "Odeslat hlas", "tezos__submit_proposal": "Odeslat návrh", "tezos__submit_proposals": "Odeslat návrhy", + "tutorial__continue": "Pokračovat v tutoriálu", + "tutorial__exit": "Ukončit tutoriál", + "tutorial__first_transaction_finish": "se uskutečnila 12. ledna 2009.", + "tutorial__first_transaction_intro": "První bitcoinová transakce na světě", + "tutorial__menu": "Nabídka obsahuje kontextové akce a možnosti.", "tutorial__middle_click": "Stiskněte současně levé i pravé tlačítko\npro potvrzení.", + "tutorial__one_more_step": "Ještě jeden krok…", "tutorial__press_and_hold": "Podržením pravého tlačítka\nschválíte důležité operace.", "tutorial__ready_to_use": "Nyní můžete\npoužívat Trezor.", + "tutorial__ready_to_use_safe5": "Dobrá práce!\nNyní můžete začít používat svůj Trezor Safe 5.", "tutorial__scroll_down": "Když se text nevejde na jednu obrazovku, pravým tlačítkem posunete text dolů.\n\rLevým tlačítkem se posunete nahoru.", + "tutorial__subtitle_safe5": "Tutoriál pro Trezor Safe 5", "tutorial__sure_you_want_skip": "Opravdu chcete\npřeskočit tutoriál?", + "tutorial__swipe_up_and_down": "Přejetím prstem nahoru a dolů procházíte mezi obrazovkami.", "tutorial__title_hello": "Dobrý den", + "tutorial__title_navigation": "Ovládání", "tutorial__title_screen_scroll": "Posunutí obrazovky", "tutorial__title_skip": "Přeskočit tutoriál", "tutorial__title_tutorial_complete": "Tutoriál dokončen", "tutorial__use_trezor": "Trezor použijete\nstisknutím levého a pravého tlačítka.\n\rPokračujte vpravo.", "tutorial__welcome_press_right": "Vítá vás Trezor. Pokračujte stisknutím pravého tlačítka.", + "tutorial__welcome_safe5": "Vítá vás Trezor Safe 5.", "u2f__get": "Zvýšit a načíst čítač U2F?", "u2f__set_template": "Nastavit čítač U2F na {0}?", "u2f__title_get": "Získat čítač U2F", @@ -851,6 +917,7 @@ "words__array_of": "Pole", "words__blockhash": "Blockhash", "words__buying": "Nákup", + "words__cancel_and_exit": "Zrušit a ukončit", "words__confirm": "Potvrdit", "words__confirm_fee": "Potvrdit poplatek", "words__contains": "Obsahuje", @@ -859,15 +926,21 @@ "words__error": "Chyba", "words__fee": "Poplatek", "words__from": "od", + "words__good_to_know": "Dobré vědět", + "words__important": "Důležité", + "words__instructions": "Pokyny", "words__keep_it_safe": "Dávejte na něj pozor!", "words__know_what_your_doing": "Pokračujte, jen pokud víte, co děláte!", "words__my_trezor": "Můj Trezor", "words__no": "Ne", + "words__not_recommended": "Nedoporučuje se!", + "words__operation_cancelled": "Operace byla zrušena", "words__outputs": "výstupy", "words__please_check_again": "Zkontrolujte to znovu", "words__please_try_again": "Zkuste to znovu", "words__really_wanna": "Opravdu chcete", "words__recipient": "Příjemce", + "words__settings": "Nastavení", "words__sign": "Podepsat", "words__signer": "Podepisující osoba", "words__title_check": "Zkontrolovat", @@ -879,6 +952,7 @@ "words__title_success": "Hotovo", "words__title_summary": "Souhrn", "words__title_threshold": "Části pro obnovu", + "words__try_again": "Zkuste to znovu.", "words__unknown": "Neznámé", "words__warning": "Varování", "words__writable": "Zapisovatelné", diff --git a/core/translations/de.json b/core/translations/de.json index ba52b1a4ac..0b715eebb1 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -42,10 +42,15 @@ "addr_mismatch__support_url": "trezor.io/support", "addr_mismatch__wrong_derivation_path": "Ableitungspfad für gewähltes Konto falsch.", "addr_mismatch__xpub_mismatch": "XPUB passt nicht?", + "address__cancel_contact_support": "Wenn die Empfängeradresse nicht übereinstimmt, dann wende dich bitte unter trezor.io/support an den Trezor Support.", + "address__cancel_receive": "Empfang abbrechen", + "address__confirmed": "Empfängeradresse bestätigt", "address__public_key": "Public Key", + "address__qr_code": "QR-Code", "address__title_cosigner": "Mitunterzeich.", "address__title_receive_address": "Empfäng-adresse", "address__title_yours": "Deiner", + "address_details__account_info": "Kontoinformationen", "address_details__derivation_path": "Ableitungspfad", "address_details__derivation_path_colon": "Ableitungspfad:", "address_details__title_receive_address": "Empfäng-adresse", @@ -54,13 +59,19 @@ "authenticate__header": "Gerät authentifizieren", "auto_lock__change_template": "Trezor nach {0} Inaktivität automatisch sperren?", "auto_lock__title": "Auto-lock-verzöger.", + "auto_lock__turned_on": "Auto-Sperren aktiviert", "backup__can_back_up_anytime": "Du kannst deinen Trezor jederzeit einmalig sichern.", + "backup__create_backup_to_prevent_loss": "Erstelle ein Backup, um den Zugriff auf deine Assets nicht zu verlieren.", + "backup__info_multi_share_backup": "Dein Wallet-Backup enthält mehrere Listen von Wörtern in einer bestimmten Reihenfolge (Shares).", + "backup__info_single_share_backup": "Dein Wallet-Backup enthält {0} Wörter in einer bestimmten Reihenfolge.", "backup__it_should_be_backed_up": "Du solltest jetzt dein neues Wallet sichern.", "backup__it_should_be_backed_up_now": "Es sollte jetzt gesichert werden!", - "backup__new_wallet_created": "Neues Wallet wurde erstellt.", - "backup__new_wallet_successfully_created": "Neues Wallet wurde erfolgreich erstellt.", + "backup__new_wallet_created": "Wallet erstellt.\n", + "backup__new_wallet_successfully_created": "Wallet erfolgreich erstellt.", "backup__recover_anytime": "Mit dem Backup kannst du immer dein Wallet wiederherstellen.", + "backup__title_backup_completed": "Wallet-Backup abgeschlossen", "backup__title_backup_wallet": "Wallet-backup", + "backup__title_create_wallet_backup": "Wallet-Backup erstellen", "backup__title_skip": "Backup überspringen", "backup__want_to_skip": "Möchtest du das Backup wirklich überspringen?", "binance__buy": "Kaufen", @@ -260,7 +271,7 @@ "confirm_total__fee_rate": "Gebührensatz", "confirm_total__fee_rate_colon": "Gebührensatz:", "confirm_total__sending_from_account": "Gesendet von Konto:", - "confirm_total__title_fee": "Gebühren-info", + "confirm_total__title_fee": "Gebühreninformation", "confirm_total__title_sending_from": "Gesendet von", "debug__loading_seed": "Seed wird geladen", "debug__loading_seed_not_recommended": "Laden privater Seeds wird nicht empfohlen.", @@ -298,7 +309,6 @@ "eos__requirement": "Anforderung:", "eos__sell_ram": "RAM verkaufen", "eos__sender": "Sender:", - "send__sign_transaction": "Transaktion signieren", "eos__threshold": "Schwelle:", "eos__to": "An:", "eos__transfer": "Überweisung:", @@ -324,6 +334,14 @@ "ethereum__show_full_message": "Ganze zeigen", "ethereum__show_full_struct": "Ganze zeigen", "ethereum__sign_eip712": "EIP-712-Daten wirklich signieren?", + "ethereum__staking_claim": "Einlösen", + "ethereum__staking_claim_address": "Adresse zum einlösen", + "ethereum__staking_claim_intro": "ETH von Everstake einlösen?", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Staking adresse", + "ethereum__staking_stake_intro": "ETH auf Everstake staken?", + "ethereum__staking_unstake": "Entstaken", + "ethereum__staking_unstake_intro": "ETH von Everstake entstaken?", "ethereum__title_confirm_data": "Daten bestätigen", "ethereum__title_confirm_domain": "Domain bestätigen", "ethereum__title_confirm_message": "Nachr. bestätigen", @@ -333,14 +351,6 @@ "ethereum__units_template": "{0} Einheiten", "ethereum__unknown_token": "Ungültiger Token", "ethereum__valid_signature": "Die Signatur ist gültig.", - "ethereum__staking_stake": "Stake", - "ethereum__staking_stake_address": "Staking adresse", - "ethereum__staking_stake_intro": "ETH auf Everstake staken?", - "ethereum__staking_unstake": "Entstaken", - "ethereum__staking_unstake_intro": "ETH von Everstake entstaken?", - "ethereum__staking_claim": "Einlösen", - "ethereum__staking_claim_address": "Adresse zum einlösen", - "ethereum__staking_claim_intro": "ETH von Everstake einlösen?", "experimental_mode__enable": "Experimentelle Funktionen aktivieren?", "experimental_mode__only_for_dev": "Nur für Entwicklung und Beta-Tests.", "experimental_mode__title": "Experimentiermodus", @@ -367,6 +377,10 @@ "fido__wanna_erase_credentials": "Möchtest du wirklich alle Daten löschen?", "firmware_update__title": "Firmware updaten", "firmware_update__title_fingerprint": "Fw fingerabdruck", + "haptic_feedback__disable": "Haptisches Feedback deaktivieren?", + "haptic_feedback__enable": "Haptisches Feedback aktivieren?", + "haptic_feedback__subtitle": "Einstellung", + "haptic_feedback__title": "Haptisches Feedback", "homescreen__click_to_connect": "Zum Verbinden klicken", "homescreen__click_to_unlock": "Zum Entsperren klicken", "homescreen__title_backup_failed": "Backup-fehler", @@ -385,7 +399,20 @@ "inputs__return": "ZURÜCK", "inputs__show": "ANZEIGEN", "inputs__space": "LEER", - "instructions__swipe_up": "Swipe up", + "instructions__continue_holding": "Weiter\nhalten", + "instructions__continue_in_app": "In der App fortfahren", + "instructions__enter_next_share": "Nächsten Share eingeben", + "instructions__hold_to_confirm": "Zum Bestätigen halten", + "instructions__hold_to_continue": "Zum Fortfahren halten", + "instructions__hold_to_exit_tutorial": "Zum Verlassen des Tutorials halten", + "instructions__hold_to_finish_tutorial": "Zum Abschließen des Tutorials halten", + "instructions__hold_to_sign": "Zum Signieren halten", + "instructions__learn_more": "Mehr erfahren", + "instructions__shares_continue_with_x_template": "Mit Share #{0} fortfahren", + "instructions__shares_start_with_1": "Mit Share #1 beginnen", + "instructions__swipe_up": "Nach oben wischen", + "instructions__tap_to_confirm": "Zum Bestätigen tippen", + "instructions__tap_to_start": "Zum Beginnen tippen", "joint__title": "Gemeins. transakt.", "joint__to_the_total_amount": "Gesamtbetrag:", "joint__you_are_contributing": "Dein Anteil:", @@ -481,20 +508,24 @@ "nem__unencrypted": "Unverschlüsselt:", "nem__unknown_mosaic": "Unbekanntes Mosaik.", "passphrase__access_hidden_wallet": "Passphr. Wall. öffnen?", - "passphrase__always_on_device": "Möchtest du die Passphrase wirklich immer auf dem Gerät eingeben?", + "passphrase__always_on_device": "Deine Passphrase immer auf dem Trezor eingeben?", "passphrase__from_host_not_shown": "Passphrase vom Host wird verwendet, wegen Geräteeinstellungen aber nicht angezeigt.", "passphrase__hidden_wallet": "Passphrase Wallet", "passphrase__hide": "Passphrase vom Host ausblenden?", - "passphrase__next_screen_will_show_passphrase": "Passphrase wird auf dem nächsten Bildschirm angezeigt.", + "passphrase__next_screen_will_show_passphrase": "Der nächste Bildschirm zeigt deine Passphrase.", "passphrase__please_enter": "Gib deine Passphrase ein.", "passphrase__revoke_on_device": "Möchtest du die Passphrase auf dem Gerät widerrufen?", "passphrase__title_confirm": "Passphr. bestätigen", "passphrase__title_enter": "Passphrase eingeben", "passphrase__title_hide": "Passphr. ausblenden", + "passphrase__title_passphrase": "Passphrase", "passphrase__title_settings": "Passphrasen-einst.", "passphrase__title_source": "Passphrasen-quelle", "passphrase__turn_off": "Passphrasenschutz deaktivieren?", "passphrase__turn_on": "Passphrasenschutz aktivieren?", + "pin__cancel_description": "Ohne PIN fortfahren", + "pin__cancel_info": "Ohne PIN kann jeder auf dieses Gerät zugreifen.", + "pin__cancel_setup": "PIN-Einrichtung abbrechen", "pin__change": "PIN ändern?", "pin__changed": "PIN geändert.", "pin__cursor_will_change": "Die Cursorposition ändert sich für mehr Sicherheit zwischen den Einträgen.", @@ -546,24 +577,32 @@ "recovery__cancel_dry_run": "Backup-Überprüfung abbrechen", "recovery__check_dry_run": "Backup überprüfen?", "recovery__cursor_will_change": "Die Cursorposition ändert sich für mehr Sicherheit zwischen den Einträgen.", - "recovery__dry_run_bip39_valid_match": "Eingegebener Recovery Seed ist gültig und passt zu dem auf dem Gerät.", + "recovery__dry_run_backup_not_on_this_device": "Wallet-Backup nicht auf diesem Gerät", + "recovery__dry_run_bip39_valid_match": "Das eingegebene Wallet-Backup ist gültig und passt zu dem auf dem Gerät.", "recovery__dry_run_bip39_valid_mismatch": "Eingegebener Recovery Seed ist gültig, passt aber nicht zu dem auf dem Gerät.", + "recovery__dry_run_invalid_backup_entered": "Ungültiges Wallet-Backup eingegeben", + "recovery__dry_run_slip39_valid_all_shares": "Alle Shares sind gültig und gehören zu dem Backup auf dem Gerät.", "recovery__dry_run_slip39_valid_match": "Eingegebene Recovery Shares sind gültig und passen zu denen auf dem Gerät.", "recovery__dry_run_slip39_valid_mismatch": "Eingegebene Recovery Shares sind gültig, passen aber nicht zum Geräteinhalt.", + "recovery__dry_run_slip39_valid_share": "Der eingegebene Share ist gültig und gehört zu dem Backup auf dem Gerät.", + "recovery__dry_run_verify_remaining_shares": "Verbleibende Recovery Shares überprüfen?", "recovery__enter_any_share": "Share eingeben", "recovery__enter_backup": "Gib dein Backup ein.", "recovery__enter_different_share": "Gib einen anderen Share ein.", + "recovery__enter_each_word": "Gib jedes Wort aus deinem Wallet-Backup nacheinander ein.", "recovery__enter_share_from_diff_group": "Share von anderer Gruppe eingeben.", "recovery__group_num_template": "Gruppe {0}", "recovery__group_threshold_reached": "Gruppenschwelle wurde erreicht.", - "recovery__invalid_wallet_backup_entered": "Eingegebener Recovery Seed ist ungültig.", + "recovery__info_about_disconnect": "Es ist sicher, deinen Trezor zu trennen und später fortzufahren, während du dein Wallet wiederherstellst.", "recovery__invalid_share_entered": "Eingegebener Recovery Share ist ungültig.", + "recovery__invalid_wallet_backup_entered": "Eingegebener Recovery Seed ist ungültig.", "recovery__more_shares_needed": "Weitere Shares erforderlich", "recovery__num_of_words": "Wörteranzahl in deinem Backup auswählen.", "recovery__only_first_n_letters": "Du musst nur die ersten 2-4 Buchstaben jedes Worts auswählen.", "recovery__progress_will_be_lost": "Alle Fortschritte gehen verloren.", "recovery__share_already_entered": "Share wurde bereits eingegeben", - "recovery__share_from_another_multi_share_backup": "Share eines anderen Shamir-Backups eingegeben.", + "recovery__share_does_not_match": "Share stimmt nicht überein.", + "recovery__share_from_another_multi_share_backup": "Du hast den Share eines anderen Backups eingegeben.", "recovery__share_num_template": "Share {0}", "recovery__title": "Wallet wiederherst.", "recovery__title_cancel_dry_run": "Backup-check abbr.", @@ -572,14 +611,14 @@ "recovery__title_recover": "Wallet wiederherst.", "recovery__title_remaining_shares": "Verbleibende shares", "recovery__type_word_x_of_y_template": "Tippe Wort {0} von {1}", - "recovery__wallet_recovered": "Wallet-Wiederherstell. erfolgreich", + "recovery__wallet_recovered": "Wiederherstellung des Wallets abgeschlossen", "recovery__wanna_cancel_dry_run": "Möchtest du die Backup-Überprüfung wirklich abbrechen?", "recovery__wanna_cancel_recovery": "Möchtest du die Wiederherstellung wirklich abbrechen?", "recovery__word_count_template": "({0} Wörter)", "recovery__word_x_of_y_template": "Wort {0} von {1}", "recovery__x_more_items_starting_template_plural": "{count} mehr {plural} gestartet", - "recovery__x_more_shares_needed_template_plural": "{count} mehr {plural} erforderlich.", - "recovery__x_of_y_entered_template": "{0} von {1} Shares erfolgreich eingegeben.", + "recovery__x_more_shares_needed_template_plural": "{count} weitere {plural} erforderlich", + "recovery__x_of_y_entered_template": "{0} von {1} Shares eingegeben", "recovery__you_have_entered": "Du hast eingegeben", "reset__advanced_group_threshold_info": "Die Gruppenschwelle zeigt die nötige Anzahl der Gruppen zur Wallet-Wiederherstell.", "reset__all_x_of_y_template": "alle {0} der {1} Shares", @@ -587,19 +626,23 @@ "reset__button_create": "Wallet erst.", "reset__button_recover": "Wallet wieder.", "reset__by_continuing": "Du stimmst den Geschäftsbedingungen von Trezor Company zu.", + "reset__cancel_create_wallet": "Wallet-Erstellung abbrechen", + "reset__check_backup_instructions": "Lass uns kurz dein Backup überprüfen.", "reset__check_backup_title": "Backup überprüfen", "reset__check_group_share_title_template": "G{0}-share {1} prüfen", - "reset__check_wallet_backup_title": "Seed überprüfen", "reset__check_share_title_template": "Share #{0} prüfen", + "reset__check_wallet_backup_title": "Seed überprüfen", "reset__continue_with_next_share": "Fahre mit dem nächsten Share fort.", "reset__continue_with_share_template": "Fahre mit Share #{0} fort.", "reset__finished_verifying_group_template": "Verifizierung deiner Recovery Shares für Gruppe {0} ist abgeschlossen.", - "reset__finished_verifying_wallet_backup": "Die Verifizierung deines Recovery Seeds ist abgeschlossen.", "reset__finished_verifying_shares": "Die Verifizierung deiner Recovery Shares ist abgeschlossen.", + "reset__finished_verifying_wallet_backup": "Die Verifizierung deines Recovery Seeds ist abgeschlossen.", "reset__group_description": "Eine Gruppe besteht aus Recovery Shares.", "reset__group_info": "Jede Gruppe hat eine feste Share-Anzahl und eine eigene Schwelle. Als nächstes legst du die Anzahl der Shares und die Schwellen fest. In den nächsten Schritten legst du die Anzahl der Shares und die Schwellen fest.", "reset__group_share_checked_successfully_template": "Gruppe {0} - Share {1} erfolgreich geprüft.", "reset__group_share_title_template": "Gruppe {0} - share {1}", + "reset__incorrect_word_selected": "Falsches Wort ausgewählt", + "reset__more_at": "Mehr unter", "reset__more_info_at": "Weitere Infos unter", "reset__need_all_share_template": "Alle {0} Shares zur Wiederherstellung nötig", "reset__need_any_share_template": "Du benötigst {0} Shares zur Wiederherstellung.", @@ -609,29 +652,35 @@ "reset__num_of_share_holders_template": "{0} Personen oder Standorte halten jeweils einen Share.", "reset__num_of_shares_advanced_info_template": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle jetzt die Schwelle für die Anzahl der Shares zur Bildung von Gruppe {0}.", "reset__num_of_shares_basic_info": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle, wie viele Shares du zur Wallet-Wiederherstell. benötigst.", + "reset__num_of_shares_how_many": "Wie viele Wallet-Backup-Shares möchtest du erstellen?", + "reset__num_of_shares_long_info": "Jeder Recovery Share besteht aus 20 Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", "reset__num_shares_for_group_template": "Die erforderliche Anzahl an Shares zur Bildung der Gruppe {0}.", "reset__number_of_shares_info": "= Gesamtzahl eindeutiger Wortlisten für Wallet-Backup.", "reset__one_share": "1 Share", "reset__only_one_share_will_be_created": "Es wird nur ein Share erstellt.", - "reset__recovery_wallet_backup_title": "Recovery seed", "reset__recovery_share_title_template": "Recovery share #{0}", + "reset__recovery_wallet_backup_title": "Recovery seed", "reset__required_number_of_groups": "Zur Wiederherstellung erforderliche Anzahl von Gruppen.", "reset__select_correct_word": "Wähle für jede Position das richtige Wort.", + "reset__select_threshold": "Wähle die Mindestzahl erforderlicher Shares, um dein Wallet wiederherzustellen.", "reset__select_word_template": "{0} wort auswählen", "reset__select_word_x_of_y_template": "Wort {0} von {1}:", "reset__set_it_to_count_template": "Bei {0} benötigst du ", - "reset__share_checked_successfully_template": "Recovery Share #{0} erfolgreich geprüft.", + "reset__share_checked_successfully_template": "Share #{0} erfolgreich geprüft.", + "reset__share_completed_template": "Share #{0} abgeschlossen", "reset__share_words_title": "Standard-backup", "reset__slip39_checklist_num_groups": "Anzahl der Gruppen", "reset__slip39_checklist_num_shares": "Anzahl der Shares", + "reset__slip39_checklist_num_shares_x_template": "Anzahl der Shares", "reset__slip39_checklist_set_num_groups": "Gruppenanzahl wählen", "reset__slip39_checklist_set_num_shares": "Share-Anzahl festlegen", "reset__slip39_checklist_set_sizes": "Größen und Schwellen festlegen", "reset__slip39_checklist_set_sizes_longer": "Größe und Schwelle für jede Gruppe festlegen", "reset__slip39_checklist_set_threshold": "Schwelle festlegen", + "reset__slip39_checklist_threshold_x_template": "Wiederherstellungsschwelle:", "reset__slip39_checklist_title": "Backup-checkliste", "reset__slip39_checklist_write_down": "Alle Shares notieren und prüfen", - "reset__slip39_checklist_write_down_recovery": "Alle Recovery Shares notieren und prüfen", + "reset__slip39_checklist_write_down_recovery": "Notiere und prüfe alle Wallet-Backup-Shares.", "reset__the_threshold_sets_the_number_of_shares": "Die Schwelle bestimmt die Anzahl der Shares ", "reset__threshold_info": "= Mindestanzahl eindeutiger Wortlisten für Wiederherstellung.", "reset__title_backup_is_done": "Backup fertig", @@ -647,7 +696,8 @@ "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Wähle die Share-Anzahl in Gruppe {0}.", "reset__use_your_backup": "Verwende dein Backup, um dein Wallet wiederherzustellen.", - "reset__write_down_words_template": "Schreibe alle {0} Wörter der Reihe nach auf.", + "reset__words_written_down_template": "Ich habe alle {0} Wörter der Reihe nach aufgeschrieben.", + "reset__write_down_words_template": "Schreibe folgende {0} Wörter der Reihe nach auf deine Wallet-Backup-Karte.", "reset__wrong_word_selected": "Ausgewähltes Wort ist falsch!", "reset__you_need_one_share": "Du benötigst 1 Share zur Wiederherstellung.", "reset__your_backup_is_done": "Backup abgeschlossen.", @@ -687,11 +737,15 @@ "sd_card__wanna_format": "Möchtest du die SD-Karte wirklich formatieren?", "sd_card__wrong_sd_card": "Falsche SD-Karte.", "send__address_path": "Adressenpfad", + "send__cancel_sign": "Signieren abbrechen", "send__confirm_sending": "Betrag senden", "send__from_multiple_accounts": "Von mehreren Konten gesendet.", + "send__incl_transaction_fee": "inkl. Transaktionsgebühr", "send__including_fee": "Einschließ. Gebühr:", "send__maximum_fee": "Max. Gebühr:", "send__receiving_to_multisig": "Von Multisig-Adresse empfangen.", + "send__send_from": "Senden von", + "send__sign_transaction": "Transaktion signieren", "send__title_confirm_sending": "Senden bestätigen", "send__title_joint_transaction": "Gemeins. transakt.", "send__title_receiving_to": "Empfänger", @@ -702,6 +756,7 @@ "send__total_amount": "Gesamtbetrag", "send__total_amount_colon": "Gesamtbetrag:", "send__transaction_id": "Transaktions-ID:", + "send__transaction_signed": "Transaktion signiert", "send__you_are_contributing": "Dein Anteil:", "share_words__words_in_order": " Wörter der Reihe nach notiert.", "share_words__wrote_down_all": "Ich habe alle ", @@ -791,9 +846,9 @@ "stellar__value_sha256": "Wert (SHA-256):", "stellar__wanna_clean_value_key_template": "Möchtest du den Wert-Key {0} löschen?", "stellar__your_account": " dein Konto", - "storage_msg__verifying_pin": "PIN überprüfen", "storage_msg__processing": "Verarbeitung", "storage_msg__starting": "Startvorgang", + "storage_msg__verifying_pin": "PIN überprüfen", "storage_msg__wrong_pin": "Falscher PIN", "tezos__baker_address": "Baker-Adresse:", "tezos__balance": "Guthaben:", @@ -807,17 +862,28 @@ "tezos__submit_ballot": "Abstimmung senden", "tezos__submit_proposal": "Vorschlag senden", "tezos__submit_proposals": "Vorschläge senden", + "tutorial__continue": "Tutorial fortsetzen", + "tutorial__exit": "Tutorial schließen", + "tutorial__first_transaction_finish": "fand am 12. Januar 2009 statt.", + "tutorial__first_transaction_intro": "Die weltweit erste Bitcoin-Transaktion", + "tutorial__menu": "Das Menü enthält kontextspezifische Aktionen und Optionen.", "tutorial__middle_click": "Drücke gleichzeitig rechts und links,\num zu bestätigen.", + "tutorial__one_more_step": "Ein Schritt noch ...", "tutorial__press_and_hold": "Halte die rechte Taste gedrückt,\num wichtige Vorgänge zu genehmigen.", "tutorial__ready_to_use": "Du kannst jetzt\nTrezor verwenden.", + "tutorial__ready_to_use_safe5": "Gut gemacht!\nJetzt kannst du deinen Trezor Safe 5 verwenden.", "tutorial__scroll_down": "Drücke rechts, um nach unten zu scrollen und alles zu lesen, wenn der Text nicht auf einen Bildschirm passt.\n\rDrücke links, um nach oben zu scrollen.", + "tutorial__subtitle_safe5": "Tutorial zu Trezor Safe 5", "tutorial__sure_you_want_skip": "Möchtest du das Tutorial\nwirklich überspringen?", + "tutorial__swipe_up_and_down": "Wische nach oben und unten, um Bildschirme zu wechseln.", "tutorial__title_hello": "Hallo", + "tutorial__title_navigation": "Navigation", "tutorial__title_screen_scroll": "Bildschirm scrollen", "tutorial__title_skip": "Tutorial überspr.", "tutorial__title_tutorial_complete": "Tutorial beendet", "tutorial__use_trezor": "Verwende Trezor durch\ndrücken der linken und rechten Tasten.\n\rWeiter rechts.", "tutorial__welcome_press_right": "Willkommen bei Trezor. Drücke rechts, um fortzufahren.", + "tutorial__welcome_safe5": "Willkommen bei Trezor Safe 5.", "u2f__get": "U2F-Zähler erhöhen und abrufen?", "u2f__set_template": "U2F-Zähler auf {0} setzen?", "u2f__title_get": "U2F-zähler erhalten", @@ -851,6 +917,7 @@ "words__array_of": "Array von", "words__blockhash": "Blockhash", "words__buying": "Kaufen", + "words__cancel_and_exit": "Abbrechen und schließen", "words__confirm": "Bestätigen", "words__confirm_fee": "Gebühr bestätigen", "words__contains": "Enthält", @@ -859,15 +926,21 @@ "words__error": "Fehler", "words__fee": "Gebühr", "words__from": "von", + "words__good_to_know": "Gut zu wissen", + "words__important": "Wichtig", + "words__instructions": "Anweisungen", "words__keep_it_safe": "Sicher aufbewahren!", "words__know_what_your_doing": "Fahre nur fort, wenn du dir ganz sicher bist!", "words__my_trezor": "Mein Trezor", "words__no": "Nein", + "words__not_recommended": "Nicht empfohlen!", + "words__operation_cancelled": "Vorgang abgebrochen", "words__outputs": "Ausgaben", "words__please_check_again": "Noch einmal prüfen", "words__please_try_again": "Noch einmal versuchen", "words__really_wanna": "Möchtest du wirklich", "words__recipient": "Empfänger", + "words__settings": "Einstellungen", "words__sign": "Signieren", "words__signer": "Unterzeichner", "words__title_check": "Prüfen", @@ -879,6 +952,7 @@ "words__title_success": "Erfolg", "words__title_summary": "Zusammenfassung", "words__title_threshold": "Schwelle", + "words__try_again": "Versuche es erneut.", "words__unknown": "Unbekannt", "words__warning": "Warnung", "words__writable": "Beschreibbar", diff --git a/core/translations/en.json b/core/translations/en.json index c5520e499b..841f6920d4 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -18,9 +18,9 @@ "address__title_cosigner": "Cosigner", "address__title_receive_address": "Receive address", "address__title_yours": "Yours", + "address_details__account_info": "Account info", "address_details__derivation_path": "Derivation path", "address_details__derivation_path_colon": "Derivation path:", - "address_details__account_info": "Account info", "address_details__title_receive_address": "Receive address", "address_details__title_receiving_to": "Receiving to", "authenticate__confirm_template": "Allow connected computer to confirm your {0} is genuine?", @@ -309,6 +309,14 @@ "ethereum__show_full_message": "Show full message", "ethereum__show_full_struct": "Show full struct", "ethereum__sign_eip712": "Really sign EIP-712 typed data?", + "ethereum__staking_claim": "Claim", + "ethereum__staking_claim_address": "Claim address", + "ethereum__staking_claim_intro": "Claim ETH from Everstake?", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Stake address", + "ethereum__staking_stake_intro": "Stake ETH on Everstake?", + "ethereum__staking_unstake": "Unstake", + "ethereum__staking_unstake_intro": "Unstake ETH from Everstake?", "ethereum__title_confirm_data": "Confirm data", "ethereum__title_confirm_domain": "Confirm domain", "ethereum__title_confirm_message": "Confirm message", @@ -318,14 +326,6 @@ "ethereum__units_template": "{0} units", "ethereum__unknown_token": "Unknown token", "ethereum__valid_signature": "The signature is valid.", - "ethereum__staking_stake": "Stake", - "ethereum__staking_stake_address": "Stake address", - "ethereum__staking_stake_intro": "Stake ETH on Everstake?", - "ethereum__staking_unstake": "Unstake", - "ethereum__staking_unstake_intro": "Unstake ETH from Everstake?", - "ethereum__staking_claim": "Claim", - "ethereum__staking_claim_address": "Claim address", - "ethereum__staking_claim_intro": "Claim ETH from Everstake?", "experimental_mode__enable": "Enable experimental features?", "experimental_mode__only_for_dev": "Only for development and beta testing!", "experimental_mode__title": "Experimental mode", @@ -352,10 +352,10 @@ "fido__wanna_erase_credentials": "Do you really want to erase all credentials?", "firmware_update__title": "Update firmware", "firmware_update__title_fingerprint": "FW fingerprint", - "haptic_feedback__title": "Haptic feedback", - "haptic_feedback__subtitle": "Setting", - "haptic_feedback__enable": "Enable haptic feedback?", "haptic_feedback__disable": "Disable haptic feedback?", + "haptic_feedback__enable": "Enable haptic feedback?", + "haptic_feedback__subtitle": "Setting", + "haptic_feedback__title": "Haptic feedback", "homescreen__click_to_connect": "Click to Connect", "homescreen__click_to_unlock": "Click to Unlock", "homescreen__title_backup_failed": "Backup failed", @@ -371,12 +371,12 @@ "inputs__cancel": "CANCEL", "inputs__delete": "DELETE", "inputs__enter": "ENTER", - "inputs__return": "RETURN", "inputs__previous": "PREVIOUS", + "inputs__return": "RETURN", "inputs__show": "SHOW", "inputs__space": "SPACE", - "instructions__continue_in_app": "Continue in the app", "instructions__continue_holding": "Continue\nholding", + "instructions__continue_in_app": "Continue in the app", "instructions__enter_next_share": "Enter next share", "instructions__hold_to_confirm": "Hold to confirm", "instructions__hold_to_continue": "Hold to continue", @@ -501,11 +501,11 @@ "passphrase__title_source": "Passphrase source", "passphrase__turn_off": "Turn off passphrase protection?", "passphrase__turn_on": "Turn on passphrase protection?", + "pin__cancel_description": "Continue without PIN", "pin__cancel_info": "Without a PIN, anyone can access this device.", "pin__cancel_setup": "Cancel PIN setup", "pin__change": "Change PIN?", "pin__changed": "PIN changed.", - "pin__cancel_description": "Continue without PIN", "pin__cursor_will_change": "Position of the cursor will change between entries for enhanced security.", "pin__diff_from_wipe_code": "The new PIN must be different from your wipe code.", "pin__disabled": "PIN protection\nturned off.", @@ -548,21 +548,21 @@ "progress__signing_transaction": "Signing transaction...", "progress__syncing": "Syncing...", "progress__x_seconds_left_template": "{0} seconds left", + "reboot_to_bootloader__just_a_moment": "Just a moment...", "reboot_to_bootloader__restart": "Trezor will restart in bootloader mode.", "reboot_to_bootloader__title": "Go to bootloader", "reboot_to_bootloader__version_by_template": "Firmware version {0}\nby {1}", - "reboot_to_bootloader__just_a_moment": "Just a moment...", "recovery__cancel_dry_run": "Cancel backup check", "recovery__check_dry_run": "Check your backup?", "recovery__cursor_will_change": "Position of the cursor will change between entries for enhanced security.", + "recovery__dry_run_backup_not_on_this_device": "Wallet backup not on this device", "recovery__dry_run_bip39_valid_match": "The entered wallet backup is valid and matches the one in this device.", "recovery__dry_run_bip39_valid_mismatch": "The entered wallet backup is valid but does not match the one in the device.", + "recovery__dry_run_invalid_backup_entered": "Invalid wallet backup entered", + "recovery__dry_run_slip39_valid_all_shares": "All shares are valid and belong to the backup in this device", "recovery__dry_run_slip39_valid_match": "The entered recovery shares are valid and match what is currently in the device.", "recovery__dry_run_slip39_valid_mismatch": "The entered recovery shares are valid but do not match what is currently in the device.", "recovery__dry_run_slip39_valid_share": "Entered share is valid and belongs to the backup in the device", - "recovery__dry_run_slip39_valid_all_shares": "All shares are valid and belong to the backup in this device", - "recovery__dry_run_backup_not_on_this_device": "Wallet backup not on this device", - "recovery__dry_run_invalid_backup_entered": "Invalid wallet backup entered", "recovery__dry_run_verify_remaining_shares": "Verify remaining recovery shares?", "recovery__enter_any_share": "Enter any share", "recovery__enter_backup": "Enter your backup.", @@ -572,8 +572,8 @@ "recovery__group_num_template": "Group {0}", "recovery__group_threshold_reached": "Group threshold reached.", "recovery__info_about_disconnect": "It's safe to disconnect your Trezor while recovering your wallet and continue later.", - "recovery__invalid_wallet_backup_entered": "Invalid wallet backup entered.", "recovery__invalid_share_entered": "Invalid recovery share entered.", + "recovery__invalid_wallet_backup_entered": "Invalid wallet backup entered.", "recovery__more_shares_needed": "More shares needed", "recovery__num_of_words": "Select the number of words in your backup.", "recovery__only_first_n_letters": "You'll only have to select the first 2-4 letters of each word.", @@ -608,17 +608,17 @@ "reset__button_recover": "Recover wallet", "reset__by_continuing": "By continuing you agree to Trezor Company's terms and conditions.", "reset__cancel_create_wallet": "Cancel create wallet", + "reset__check_backup_instructions": "Let's do a quick check of your backup.", "reset__check_backup_title": "Check backup", "reset__check_group_share_title_template": "Check g{0} - share {1}", - "reset__check_wallet_backup_title": "Check wallet backup", "reset__check_share_title_template": "Check share #{0}", - "reset__check_backup_instructions": "Let's do a quick check of your backup.", + "reset__check_wallet_backup_title": "Check wallet backup", "reset__continue_with_next_share": "Continue with the next share.", "reset__continue_with_share_template": "Continue with share #{0}.", "reset__create_x_of_y_multi_share_backup_template": "Do you want to create a {0} of {1} multi-share backup?", "reset__finished_verifying_group_template": "You have finished verifying your recovery shares for group {0}.", - "reset__finished_verifying_wallet_backup": "You have finished verifying your wallet backup.", "reset__finished_verifying_shares": "You have finished verifying your recovery shares.", + "reset__finished_verifying_wallet_backup": "You have finished verifying your wallet backup.", "reset__group_description": "A group is made up of recovery shares.", "reset__group_info": "Each group has a set number of shares and its own threshold. In the next steps you will set the numbers of shares and the thresholds.", "reset__group_share_checked_successfully_template": "Group {0} - Share {1} checked successfully.", @@ -632,16 +632,16 @@ "reset__needed_to_recover_your_wallet": "needed to recover your wallet. ", "reset__never_make_digital_copy": "Never put your backup anywhere digital.", "reset__num_of_share_holders_template": "{0} people or locations will each hold one share.", - "reset__num_of_shares_how_many": "How many wallet backup shares do you want to create?", "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}.", "reset__num_of_shares_basic_info": "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", + "reset__num_of_shares_how_many": "How many wallet backup shares do you want to create?", "reset__num_of_shares_long_info": "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", "reset__num_shares_for_group_template": "The required number of shares to form Group {0}.", "reset__number_of_shares_info": "= total number of unique word lists used for wallet backup.", "reset__one_share": "1 share", "reset__only_one_share_will_be_created": "Only one share will be created.", - "reset__recovery_wallet_backup_title": "Wallet backup", "reset__recovery_share_title_template": "Recovery share #{0}", + "reset__recovery_wallet_backup_title": "Wallet backup", "reset__required_number_of_groups": "The required number of groups for recovery.", "reset__select_correct_word": "Select the correct word for each position.", "reset__select_threshold": "Select the minimum shares required to recover your wallet.", @@ -652,9 +652,9 @@ "reset__share_completed_template": "Share #{0} completed", "reset__share_words_title": "Standard backup", "reset__slip39_checklist_num_groups": "Number of groups", + "reset__slip39_checklist_num_groups_x_template": "Number of groups: {0}", "reset__slip39_checklist_num_shares": "Number of shares", "reset__slip39_checklist_num_shares_x_template": "Number of shares: {0}", - "reset__slip39_checklist_num_groups_x_template": "Number of groups: {0}", "reset__slip39_checklist_set_num_groups": "Set number of groups", "reset__slip39_checklist_set_num_shares": "Set number of shares", "reset__slip39_checklist_set_sizes": "Set sizes and thresholds", @@ -749,10 +749,6 @@ "sign_message__confirm_message": "Confirm message", "sign_message__message_size": "Message size:", "sign_message__verify_address": "Verify address", - "storage_msg__verifying_pin": "Verifying PIN", - "storage_msg__processing": "Processing", - "storage_msg__starting": "Starting up", - "storage_msg__wrong_pin": "Wrong PIN", "solana__account_index": "Account index", "solana__associated_token_account": "Associated token account", "solana__confirm_multisig": "Confirm multisig", @@ -834,6 +830,10 @@ "stellar__value_sha256": "Value (SHA-256):", "stellar__wanna_clean_value_key_template": "Do you want to clear value key {0}?", "stellar__your_account": " your account", + "storage_msg__processing": "Processing", + "storage_msg__starting": "Starting up", + "storage_msg__verifying_pin": "Verifying PIN", + "storage_msg__wrong_pin": "Wrong PIN", "tezos__baker_address": "Baker address:", "tezos__balance": "Balance:", "tezos__ballot": "Ballot:", @@ -848,6 +848,8 @@ "tezos__submit_proposals": "Submit proposals", "tutorial__continue": "Continue tutorial", "tutorial__exit": "Exit tutorial", + "tutorial__first_transaction_finish": "took place on 12 January 2009.", + "tutorial__first_transaction_intro": "The world's first bitcoin transaction", "tutorial__menu": "Menu includes context-specific actions and options.", "tutorial__middle_click": "Press both left and right at the same\ntime to confirm.", "tutorial__one_more_step": "One more step...", @@ -855,8 +857,8 @@ "tutorial__ready_to_use": "You're ready to\nuse Trezor.", "tutorial__ready_to_use_safe5": "Well done!\nNow you're ready to use your Trezor Safe 5.", "tutorial__scroll_down": "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", - "tutorial__sure_you_want_skip": "Are you sure you\nwant to skip the tutorial?", "tutorial__subtitle_safe5": "Trezor Safe 5 tutorial", + "tutorial__sure_you_want_skip": "Are you sure you\nwant to skip the tutorial?", "tutorial__swipe_up_and_down": "Swipe up & down to move through screens.", "tutorial__title_hello": "Hello", "tutorial__title_navigation": "Navigation", @@ -866,8 +868,6 @@ "tutorial__use_trezor": "Use Trezor by\nclicking the left and right buttons.\n\rContinue right.", "tutorial__welcome_press_right": "Welcome to Trezor. Press right to continue.", "tutorial__welcome_safe5": "Welcome to Trezor Safe 5.", - "tutorial__first_transaction_intro": "The world's first bitcoin transaction", - "tutorial__first_transaction_finish": "took place on 12 January 2009.", "u2f__get": "Increase and retrieve the U2F counter?", "u2f__set_template": "Set the U2F counter to {0}?", "u2f__title_get": "Get U2F counter", @@ -942,4 +942,4 @@ "words__writable": "Writable", "words__yes": "Yes" } -} +} \ No newline at end of file diff --git a/core/translations/es.json b/core/translations/es.json index 24ba4726b9..cc864bf9d0 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -42,10 +42,15 @@ "addr_mismatch__support_url": "trezor.io/support", "addr_mismatch__wrong_derivation_path": "Cuenta seleccionada: Derivación incorrecta", "addr_mismatch__xpub_mismatch": "¿La XPUB no coincide?", + "address__cancel_contact_support": "Si la dirección de destino no coincide, contacta con el servicio de atención al cliente de Trezor en trezor.io/support.", + "address__cancel_receive": "Cancelar destino", + "address__confirmed": "Dirección de destino confirmada", "address__public_key": "Clave pública", + "address__qr_code": "Código QR", "address__title_cosigner": "Cofirmante", "address__title_receive_address": "Dirección destino", "address__title_yours": "Tuyo", + "address_details__account_info": "Información de la cuenta", "address_details__derivation_path": "Ruta de derivación", "address_details__derivation_path_colon": "Ruta de derivación:", "address_details__title_receive_address": "Dirección destino", @@ -54,13 +59,19 @@ "authenticate__header": "Autenticar dispositivo", "auto_lock__change_template": "¿Autobloquear tras {0} de inactividad?", "auto_lock__title": "Tiempo autobloqueo.", + "auto_lock__turned_on": "Bloqueo automático activado", "backup__can_back_up_anytime": "Puedes hacer una copia de seguridad del Trezor cuando quieras.", + "backup__create_backup_to_prevent_loss": "Crea una copia de seguridad para evitar perder el acceso a tus fondos", + "backup__info_multi_share_backup": "La copia de seguridad del monedero contiene varias listas de palabras en un orden concreto (recursos compartidos).", + "backup__info_single_share_backup": "La copia de seguridad del monedero contiene {0} palabras en un orden concreto.", "backup__it_should_be_backed_up": "El monedero precisa una copia de seguridad.", "backup__it_should_be_backed_up_now": "Se precisa una copia de seguridad.", - "backup__new_wallet_created": "Se ha creado un nuevo monedero.", - "backup__new_wallet_successfully_created": "Se ha creado un nuevo monedero.", + "backup__new_wallet_created": "Monedero creado.\n", + "backup__new_wallet_successfully_created": "Monedero creado correctamente.", "backup__recover_anytime": "La copia de seguridad permite recuperar siempre el monedero.", + "backup__title_backup_completed": "Copia de seguridad del monedero completada", "backup__title_backup_wallet": "C. seg. monedero", + "backup__title_create_wallet_backup": "Crear copia de seguridad del monedero", "backup__title_skip": "Omitir c. seg.", "backup__want_to_skip": "¿Quieres omitir la copia de seguridad?", "binance__buy": "Comprar", @@ -260,7 +271,7 @@ "confirm_total__fee_rate": "Comisión", "confirm_total__fee_rate_colon": "Comisión:", "confirm_total__sending_from_account": "Envío desde cuenta:", - "confirm_total__title_fee": "Info. comisión", + "confirm_total__title_fee": "Info. comisiones", "confirm_total__title_sending_from": "Envío desde", "debug__loading_seed": "Cargando semilla", "debug__loading_seed_not_recommended": "No recomendado: cargar semilla privada.", @@ -298,7 +309,6 @@ "eos__requirement": "Requisito:", "eos__sell_ram": "Vender RAM", "eos__sender": "Remitente:", - "send__sign_transaction": "Firmar transacción", "eos__threshold": "Umbral:", "eos__to": "Para:", "eos__transfer": "Transferencia:", @@ -324,6 +334,14 @@ "ethereum__show_full_message": "Ver mensaje íntegro.", "ethereum__show_full_struct": "Ver estruct. íntegra.", "ethereum__sign_eip712": "¿Quieres firmar los datos EIP-712?", + "ethereum__staking_claim": "Reclamar", + "ethereum__staking_claim_address": "Dir. de reclamo", + "ethereum__staking_claim_intro": "¿Reclamar ETH de Everstake?", + "ethereum__staking_stake": "Hacer stake", + "ethereum__staking_stake_address": "Dirección de stake", + "ethereum__staking_stake_intro": "¿Hacer stake de ETH en Everstake?", + "ethereum__staking_unstake": "Retirar stake", + "ethereum__staking_unstake_intro": "¿Retirar ETH de Everstake?", "ethereum__title_confirm_data": "Validar datos", "ethereum__title_confirm_domain": "Validar dominio", "ethereum__title_confirm_message": "Validar mensaje", @@ -333,14 +351,6 @@ "ethereum__units_template": "{0} unidades", "ethereum__unknown_token": "Token desconocido", "ethereum__valid_signature": "La firma es válida.", - "ethereum__staking_stake": "Hacer stake", - "ethereum__staking_stake_address": "Dirección de stake", - "ethereum__staking_stake_intro": "¿Hacer stake de ETH en Everstake?", - "ethereum__staking_unstake": "Retirar stake", - "ethereum__staking_unstake_intro": "¿Retirar ETH de Everstake?", - "ethereum__staking_claim": "Reclamar", - "ethereum__staking_claim_address": "Dir. de reclamo", - "ethereum__staking_claim_intro": "¿Reclamar ETH de Everstake?", "experimental_mode__enable": "¿Activar funciones experimentales?", "experimental_mode__only_for_dev": "Solo para desarrollo y pruebas beta.", "experimental_mode__title": "Modo experimental", @@ -367,6 +377,10 @@ "fido__wanna_erase_credentials": "¿Quieres borrar todas las credenciales?", "firmware_update__title": "Actualizar firmware", "firmware_update__title_fingerprint": "Huella digital de fw", + "haptic_feedback__disable": "¿Desactivar respuesta háptica?", + "haptic_feedback__enable": "¿Activar respuesta háptica?", + "haptic_feedback__subtitle": "Ajustes", + "haptic_feedback__title": "Respuesta háptica", "homescreen__click_to_connect": "Clic para conectar", "homescreen__click_to_unlock": "Clic para desbloquear", "homescreen__title_backup_failed": "Error c. seg.", @@ -385,7 +399,20 @@ "inputs__return": "VOLVER", "inputs__show": "MOSTRAR", "inputs__space": "ESPACIO", - "instructions__swipe_up": "Swipe up", + "instructions__continue_holding": "Continuar\nposición", + "instructions__continue_in_app": "Continuar en la aplicación", + "instructions__enter_next_share": "Introduce el siguiente recurso", + "instructions__hold_to_confirm": "Pulsa para confirmar", + "instructions__hold_to_continue": "Pulsa para continuar", + "instructions__hold_to_exit_tutorial": "Pulsa para salir del tutorial", + "instructions__hold_to_finish_tutorial": "Pulsa para finalizar el tutorial", + "instructions__hold_to_sign": "Pulsa para firmar", + "instructions__learn_more": "Más información", + "instructions__shares_continue_with_x_template": "Continuar con el recurso n.º {0}", + "instructions__shares_start_with_1": "Empezar con el recurso n.º 1", + "instructions__swipe_up": "Desliza hacia arriba", + "instructions__tap_to_confirm": "Toca para confirmar", + "instructions__tap_to_start": "Toca para empezar", "joint__title": "Transacc. conjunta", "joint__to_the_total_amount": "Al importe total:", "joint__you_are_contributing": "Estás aportando:", @@ -481,20 +508,24 @@ "nem__unencrypted": "Sin cifrar:", "nem__unknown_mosaic": "Mosaico desconocido.", "passphrase__access_hidden_wallet": "¿Ir al monedero oculto?", - "passphrase__always_on_device": "¿Quieres introducir la frase de contraseña siempre en el dispositivo?", + "passphrase__always_on_device": "¿Introduces siempre la frase de contraseña en Trezor?", "passphrase__from_host_not_shown": "Se usará la frase de contraseña dada por el host, pero no se verá debido a la configuración.", "passphrase__hidden_wallet": "Monedero oculto", "passphrase__hide": "¿Ocultar la frase de contraseña del host?", - "passphrase__next_screen_will_show_passphrase": "En la siguiente pantalla verás la frase de contraseña.", + "passphrase__next_screen_will_show_passphrase": "La siguiente pantalla muestra la frase de contraseña.", "passphrase__please_enter": "Escribe la frase de contraseña.", "passphrase__revoke_on_device": "¿Revocar la frase de contraseña en la configuración?", "passphrase__title_confirm": "Valida frase contr.", "passphrase__title_enter": "Intro. frase contr.", "passphrase__title_hide": "Ocultar frase", + "passphrase__title_passphrase": "Frase de contraseña", "passphrase__title_settings": "Config. frase contr.", "passphrase__title_source": "Origen frase contr.", "passphrase__turn_off": "¿Desactivar la protección por frase de contraseña?", "passphrase__turn_on": "¿Activar la protección por frase de contraseña?", + "pin__cancel_description": "Continuar sin PIN", + "pin__cancel_info": "Sin un PIN, cualquiera puede acceder al dispositivo.", + "pin__cancel_setup": "Cancelar configuración de PIN", "pin__change": "¿Cambiar PIN?", "pin__changed": "PIN cambiado.", "pin__cursor_will_change": "La posición del cursor irá cambiando para mejorar la seguridad.", @@ -546,24 +577,32 @@ "recovery__cancel_dry_run": "Anular la revisión de la copia de seguridad", "recovery__check_dry_run": "¿Revisar la copia de seguridad?", "recovery__cursor_will_change": "La posición del cursor irá cambiando para mejorar la seguridad.", - "recovery__dry_run_bip39_valid_match": "La semilla de recuperación es válida y coincide con la del dispositivo.", + "recovery__dry_run_backup_not_on_this_device": "La copia de seguridad del monedero no está en este dispositivo", + "recovery__dry_run_bip39_valid_match": "La copia de seguridad del monedero indicada es válida y coincide con la del dispositivo.", "recovery__dry_run_bip39_valid_mismatch": "La semilla de recuperación es válida, pero no coincide con la del dispositivo.", + "recovery__dry_run_invalid_backup_entered": "Se ha introducido una copia de seguridad del monedero no válida", + "recovery__dry_run_slip39_valid_all_shares": "Todos los recursos compartidos son válidos y pertenecen a la copia de seguridad del dispositivo", "recovery__dry_run_slip39_valid_match": "Recursos compartidos válidos; coinciden con el dispositivo.", "recovery__dry_run_slip39_valid_mismatch": "Recursos compartidos válidos; no coinciden con el dispositivo.", + "recovery__dry_run_slip39_valid_share": "El recurso compartido introducido es válido y pertenece a la copia de seguridad del dispositivo", + "recovery__dry_run_verify_remaining_shares": "¿Verificar los recursos compartidos de recuperación restantes?", "recovery__enter_any_share": "Introduce algún recurso compartido.", "recovery__enter_backup": "Introduce la copia de seguridad.", "recovery__enter_different_share": "Introduce un recurso compartido distinto.", + "recovery__enter_each_word": "Introduce cada palabra de la copia de seguridad del monedero en orden.", "recovery__enter_share_from_diff_group": "Intro. rec. comp. de otro grupo.", "recovery__group_num_template": "Grupo {0}", "recovery__group_threshold_reached": "Se ha alcanzado el umbral de grupo.", - "recovery__invalid_wallet_backup_entered": "Se ha introducido una semilla de recuperación no válida.", + "recovery__info_about_disconnect": "Puedes desconectar el Trezor mientras recuperas el monedero y continuar después.", "recovery__invalid_share_entered": "Se ha introducido un recurso compartido de recuperación no válido.", + "recovery__invalid_wallet_backup_entered": "Se ha introducido una semilla de recuperación no válida.", "recovery__more_shares_needed": "Se necesitan más recursos compartidos.", "recovery__num_of_words": "Elige el nro.de p. de la copia seg.", "recovery__only_first_n_letters": "Solo tendrás que seleccionar las primeras 2-4 letras de cada palabra.", "recovery__progress_will_be_lost": "Se perderá todo el progreso.", "recovery__share_already_entered": "Ya se ha introducido el recurso compartido", - "recovery__share_from_another_multi_share_backup": "El rec. comp. es de otra copia de seguridad de Shamir.", + "recovery__share_does_not_match": "El recurso compartido no coincide", + "recovery__share_from_another_multi_share_backup": "Has introducido un recurso compartido de una copia de seguridad diferente.", "recovery__share_num_template": "Recurso compartido {0}", "recovery__title": "Recuperar monedero", "recovery__title_cancel_dry_run": "Anular rev. c. seg.", @@ -572,14 +611,14 @@ "recovery__title_recover": "Recuperar monedero", "recovery__title_remaining_shares": "Resto rec. comp.", "recovery__type_word_x_of_y_template": "Meter palabra {0} de {1}", - "recovery__wallet_recovered": "Se ha recuperado el monedero.", + "recovery__wallet_recovered": "Recuperación del monedero completada", "recovery__wanna_cancel_dry_run": "¿Quieres anular la revisión de la copia de seguridad?", "recovery__wanna_cancel_recovery": "¿Quieres anular el proceso de recuperación?", "recovery__word_count_template": "({0} palabras)", "recovery__word_x_of_y_template": "Palabra {0} de {1}", "recovery__x_more_items_starting_template_plural": "Se están iniciando {count} {plural} más", - "recovery__x_more_shares_needed_template_plural": "Se necesitan {count} {plural} más.", - "recovery__x_of_y_entered_template": "Rec. comp. introducidos: {0} de {1}.", + "recovery__x_more_shares_needed_template_plural": "Se necesitan {count} {plural} más", + "recovery__x_of_y_entered_template": "{0} de {1} recursos introducidos", "recovery__you_have_entered": "Has introducido", "reset__advanced_group_threshold_info": "El umbral de grupo determina el nro.de grupos necesarios para recuperar el monedero.", "reset__all_x_of_y_template": "{0} de {1} rec. comp.", @@ -587,19 +626,23 @@ "reset__button_create": "Crear moned.", "reset__button_recover": "Recup. moned.", "reset__by_continuing": "Si continúas, aceptas los términos de Trezor Company.", + "reset__cancel_create_wallet": "Cancelar crear monedero", + "reset__check_backup_instructions": "Comprobemos la copia de seguridad.", "reset__check_backup_title": "Revisar c. seg.", "reset__check_group_share_title_template": "Revisar rec. {0} g {1}", - "reset__check_wallet_backup_title": "Revisar semilla", "reset__check_share_title_template": "Revisar rec. nro.{0}", + "reset__check_wallet_backup_title": "Revisar semilla", "reset__continue_with_next_share": "Continuar con el próximo rec. comp.", "reset__continue_with_share_template": "Continuar con el recurso nro.{0}.", "reset__finished_verifying_group_template": "Fin de la verificación de los rec. comp. de recuperación del grupo {0}.", - "reset__finished_verifying_wallet_backup": "Fin de la verificación de la semilla de recuperación.", "reset__finished_verifying_shares": "Fin de la verificación de los rec. comp. de recuperación.", + "reset__finished_verifying_wallet_backup": "Fin de la verificación de la semilla de recuperación.", "reset__group_description": "Un grupo consta de rec. comp. de recuperación.", "reset__group_info": "Cada grupo tiene un nro.de rec. comp. y su propio umbral. En los siguientes pasos, ajustarás el nro.de rec. comp. y los umbrales.", "reset__group_share_checked_successfully_template": "Verificado: Rec. comp. {0} del grupo {1}.", "reset__group_share_title_template": "Rec. comp. {0} g. {1}", + "reset__incorrect_word_selected": "Se ha seleccionado una palabra incorrecta", + "reset__more_at": "Más en", "reset__more_info_at": "Más información en", "reset__need_all_share_template": "Se necesitan los {0} rec. comp.", "reset__need_any_share_template": "Se necesita alguno de los {0} rec. comp.", @@ -609,29 +652,35 @@ "reset__num_of_share_holders_template": "{0} persona/s o ubicación/es tendrá/n un recurso compartido.", "reset__num_of_shares_advanced_info_template": "Cada rec. comp. de recuperación es una cadena de 20 palabras. Elige el umbral necesario para formar el grupo {0}.", "reset__num_of_shares_basic_info": "Cada rec. comp. de recuperación es una cadena de 20 palabras. Elige cuántos necesitas para recuperar el monedero.", + "reset__num_of_shares_how_many": "¿Cuántos recursos de copia de seguridad quieres crear?", + "reset__num_of_shares_long_info": "Cada recurso compartido de recuperación es una secuencia de 20 palabras. Guarda cada lista de palabras en un lugar separado y seguro o compártela con personas de confianza. Recopila lo necesario para recuperar el monedero.", "reset__num_shares_for_group_template": "Nro.necesario de rec. comp. para formar el grupo {0}.", "reset__number_of_shares_info": "= total de listas de palabras únicas para la copia de seguridad.", "reset__one_share": "1 recurso compartido", "reset__only_one_share_will_be_created": "Solo se creará un recurso compartido.", - "reset__recovery_wallet_backup_title": "Semilla recup.", "reset__recovery_share_title_template": "Rec. recup. nro.{0}", + "reset__recovery_wallet_backup_title": "Semilla recup.", "reset__required_number_of_groups": "El nro.de grupos necesario para la recuperación.", "reset__select_correct_word": "Selecciona la palabra correcta para cada posición.", + "reset__select_threshold": "Selecciona los recursos compartidos mínimos necesarios para recuperar el monedero.", "reset__select_word_template": "Usar {0} palabra", "reset__select_word_x_of_y_template": "Palabra {0} de {1}:", "reset__set_it_to_count_template": "Ajústalo en {0} y necesitarás ", - "reset__share_checked_successfully_template": "Verificado: Rec de recuperación nro.{0}.", + "reset__share_checked_successfully_template": "Se ha verificado el recurso n.º {0}.", + "reset__share_completed_template": "Se ha completado el recurso n.º {0}", "reset__share_words_title": "C. seg. estándar", "reset__slip39_checklist_num_groups": "Número de grupos", "reset__slip39_checklist_num_shares": "Nro.de rec. comp.", + "reset__slip39_checklist_num_shares_x_template": "Número de recursos compartidos", "reset__slip39_checklist_set_num_groups": "Ajustar nro.grupos", "reset__slip39_checklist_set_num_shares": "Ajustar nro.rec.comp.", "reset__slip39_checklist_set_sizes": "Definir tamaños y umbrales", "reset__slip39_checklist_set_sizes_longer": "Definir tamaño y umbral de cada grupo", "reset__slip39_checklist_set_threshold": "Ajustar umbral", + "reset__slip39_checklist_threshold_x_template": "Umbral de recuperación:", "reset__slip39_checklist_title": "Lista c. seg.", "reset__slip39_checklist_write_down": "Listar y revisar todos los rec. comp.", - "reset__slip39_checklist_write_down_recovery": "Listar y revisar todos los rec. comp. recup.", + "reset__slip39_checklist_write_down_recovery": "Escribe y verifica los recursos de la copia", "reset__the_threshold_sets_the_number_of_shares": "El umbral establece el nro.de rec. comp. ", "reset__threshold_info": "= mínimo de listas de palabras únicas para la recuperación.", "reset__title_backup_is_done": "C. seg. completa", @@ -647,7 +696,8 @@ "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Fija el total de rec. comp. del grupo {0}.", "reset__use_your_backup": "Utiliza la copia de seguridad para recuperar el monedero.", - "reset__write_down_words_template": "Escribe las {0} palabras en orden.", + "reset__words_written_down_template": "Escribí las {0} palabras en orden.", + "reset__write_down_words_template": "Ordena estas {0} palabras en la tarjeta.", "reset__wrong_word_selected": "Se ha seleccionado una palabra incorrecta.", "reset__you_need_one_share": "Se necesita 1 rec. comp.", "reset__your_backup_is_done": "Fin de la copia seg.", @@ -687,11 +737,15 @@ "sd_card__wanna_format": "¿Quieres formatear la tarjeta SD?", "sd_card__wrong_sd_card": "Tarjeta SD incorrecta.", "send__address_path": "ruta de la dirección", + "send__cancel_sign": "Cancelar firma", "send__confirm_sending": "Importe envío", "send__from_multiple_accounts": "Enviando desde varias cuentas.", + "send__incl_transaction_fee": "incl. comisión de transacción", "send__including_fee": "Comisión incluida:", "send__maximum_fee": "Comisión máxima:", "send__receiving_to_multisig": "Recepción en una dirección multifirma.", + "send__send_from": "Enviar desde", + "send__sign_transaction": "Firmar transacción", "send__title_confirm_sending": "Validar envío", "send__title_joint_transaction": "Transacc. conjunta", "send__title_receiving_to": "Recibir en", @@ -702,6 +756,7 @@ "send__total_amount": "Importe total", "send__total_amount_colon": "Importe total:", "send__transaction_id": "ID de la transacción:", + "send__transaction_signed": "Transacción firmada", "send__you_are_contributing": "Estás aportando:", "share_words__words_in_order": " palabras en orden.", "share_words__wrote_down_all": "Escribí las ", @@ -791,9 +846,9 @@ "stellar__value_sha256": "Valor (SHA-256):", "stellar__wanna_clean_value_key_template": "¿Quieres borrar la clave de valor {0}?", "stellar__your_account": " tu cuenta", - "storage_msg__verifying_pin": "Verificando PIN", "storage_msg__processing": "Procesando", "storage_msg__starting": "Iniciando", + "storage_msg__verifying_pin": "Verificando PIN", "storage_msg__wrong_pin": "PIN incorrecto", "tezos__baker_address": "Dirección de panadero:", "tezos__balance": "Saldo:", @@ -807,17 +862,28 @@ "tezos__submit_ballot": "Enviar papeleta", "tezos__submit_proposal": "Enviar propuesta", "tezos__submit_proposals": "Enviar propuestas", + "tutorial__continue": "Continuar con el tutorial", + "tutorial__exit": "Salir del tutorial", + "tutorial__first_transaction_finish": "tuvo lugar el 12 de enero de 2009.", + "tutorial__first_transaction_intro": "La primera transacción en bitcoins del mundo", + "tutorial__menu": "El menú incluye funciones y opciones específicas del contexto.", "tutorial__middle_click": "Pulsa ambos botones a la vez\npara confirmar.", + "tutorial__one_more_step": "Un paso más...", "tutorial__press_and_hold": "Mantén pulsado el botón derecho para\naprobar operaciones importantes.", "tutorial__ready_to_use": "Ya puedes\nusar Trezor.", + "tutorial__ready_to_use_safe5": "¡Conseguido!\nYa puedes usar Trezor Safe 5.", "tutorial__scroll_down": "Pulsa el botón derecho para ir bajando y leer todo cuando el texto no quepa en una pantalla.\n\rPulsa el botón izquierdo para ir hacia arriba.", + "tutorial__subtitle_safe5": "Tutorial de Trezor Safe 5", "tutorial__sure_you_want_skip": "¿Seguro que quieres\nomitir el tutorial?", + "tutorial__swipe_up_and_down": "Desliza hacia arriba y hacia abajo para moverte por las pantallas.", "tutorial__title_hello": "Hola", + "tutorial__title_navigation": "Navegación", "tutorial__title_screen_scroll": "Desplazarse", "tutorial__title_skip": "Omitir tutorial", "tutorial__title_tutorial_complete": "Tutorial completo", "tutorial__use_trezor": "Maneja Trezor pulsando\nderecha e izquierda.\n\rContinúa con la derecha.", "tutorial__welcome_press_right": "Te damos la bienvenida a Trezor. Pulsa el botón derecho para continuar.", + "tutorial__welcome_safe5": "Te damos la bienvenida a Trezor Safe 5.", "u2f__get": "¿Aumentar y recuperar el contador U2F?", "u2f__set_template": "¿Ajustar el contador U2F a {0}?", "u2f__title_get": "Recibir cont. U2F", @@ -851,6 +917,7 @@ "words__array_of": "Matriz de", "words__blockhash": "Blockhash", "words__buying": "Comprar", + "words__cancel_and_exit": "Cancelar y salir", "words__confirm": "Confirmar", "words__confirm_fee": "Confirmar comisión", "words__contains": "Contiene", @@ -859,15 +926,21 @@ "words__error": "Error", "words__fee": "Comisión", "words__from": "de", + "words__good_to_know": "Información importante", + "words__important": "Importante", + "words__instructions": "Instrucciones", "words__keep_it_safe": "¡Guárdala en un lugar seguro!", "words__know_what_your_doing": "Continúa solo si tienes los conocimientos necesarios.", "words__my_trezor": "Mi Trezor", "words__no": "No", + "words__not_recommended": "No es recomendable.", + "words__operation_cancelled": "Operación cancelada", "words__outputs": "salidas", "words__please_check_again": "Vuelve a comprobarlo", "words__please_try_again": "Inténtalo de nuevo", "words__really_wanna": "¿Seguro que quieres", "words__recipient": "Destinatario", + "words__settings": "Configuración", "words__sign": "Firmar", "words__signer": "Firmante", "words__title_check": "Revisar", @@ -879,6 +952,7 @@ "words__title_success": "Completado", "words__title_summary": "Resumen", "words__title_threshold": "Umbral", + "words__try_again": "Reintentar.", "words__unknown": "Desconocido", "words__warning": "Advertencia", "words__writable": "Modificable", diff --git a/core/translations/fr.json b/core/translations/fr.json index f3854d1333..b5db41ead7 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -42,25 +42,36 @@ "addr_mismatch__support_url": "trezor.io/support", "addr_mismatch__wrong_derivation_path": "Chemin dériv. incorrect du compte sélectionné.", "addr_mismatch__xpub_mismatch": "Err. clé publ. (XPUB) ?", + "address__cancel_contact_support": "Si l’adresse de réception ne correspond pas, contactez l’assistance Trezor sur trezor.io/support.", + "address__cancel_receive": "Annuler la réception", + "address__confirmed": "Adresse de réception confirmée", "address__public_key": "Clé publique", + "address__qr_code": "Code QR", "address__title_cosigner": "Cosignataire", "address__title_receive_address": "Adr. de récep.", "address__title_yours": "La vôtre", + "address_details__account_info": "Infos sur le compte", "address_details__derivation_path": "Chemin de dérivation", - "address_details__derivation_path_colon": "Chemin de dérivation :", + "address_details__derivation_path_colon": "Chemin de dérivation :", "address_details__title_receive_address": "Adr. de récep.", "address_details__title_receiving_to": "Récep. sur", "authenticate__confirm_template": "Autoriser l'ord. connecté à conf. que votre {0} est auth. ?", "authenticate__header": "Authentifier le disp.", - "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d'inactivité ?", + "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d’inactivité ?", "auto_lock__title": "Délai de ver. auto", + "auto_lock__turned_on": "Verrouillage automatique activé", "backup__can_back_up_anytime": "Vous pouvez sauv. Trezor une fois, à tout moment.", + "backup__create_backup_to_prevent_loss": "Créez une sauvegarde pour éviter de perdre l’accès à vos fonds", + "backup__info_multi_share_backup": "La sauvegarde de votre portefeuille contient plusieurs listes de mots dans un ordre spécifique (fragments).", + "backup__info_single_share_backup": "La sauvegarde de votre portefeuille contient {0} mots dans un ordre spécifique.", "backup__it_should_be_backed_up": "Sauvegardez votre portef. maintenant.", "backup__it_should_be_backed_up_now": "Il doit être sauvegardé dès maintenant !", - "backup__new_wallet_created": "Nouveau portef. créé.", - "backup__new_wallet_successfully_created": "Nouveau portef. créé avec succès.", + "backup__new_wallet_created": "Portefeuille créé.\n", + "backup__new_wallet_successfully_created": "Nouveau portefeuille créé avec succès.", "backup__recover_anytime": "Vous pouvez utiliser votre sauv. pour récup. votre portef.", + "backup__title_backup_completed": "Sauvegarde du portefeuille terminée", "backup__title_backup_wallet": "Sauveg. portef.", + "backup__title_create_wallet_backup": "Créez une sauvegarde de portefeuille", "backup__title_skip": "Ignorer sauvegarde", "backup__want_to_skip": "Voulez-vous vraiment ignorer la sauvegarde ?", "binance__buy": "Acheter", @@ -258,7 +269,7 @@ "coinjoin__title_progress": "Coinjoin en cours", "coinjoin__waiting_for_others": "En attente des autres", "confirm_total__fee_rate": "Taux des frais", - "confirm_total__fee_rate_colon": "Taux des frais :", + "confirm_total__fee_rate_colon": "Taux des frais :", "confirm_total__sending_from_account": "Compte d'envoi :", "confirm_total__title_fee": "Infos sur les frais", "confirm_total__title_sending_from": "Envoi depuis", @@ -298,7 +309,6 @@ "eos__requirement": "Exigence :", "eos__sell_ram": "Vendre de la RAM", "eos__sender": "Expéditeur :", - "send__sign_transaction": "Signer la transaction", "eos__threshold": "Seuil :", "eos__to": "À :", "eos__transfer": "Transfert :", @@ -324,6 +334,14 @@ "ethereum__show_full_message": "Aff. message complet", "ethereum__show_full_struct": "Aff. structure complète", "ethereum__sign_eip712": "Signer ces données EIP-712 ?", + "ethereum__staking_claim": "Retirer", + "ethereum__staking_claim_address": "Adresse de retrait", + "ethereum__staking_claim_intro": "Retirer l'ETH d'Everstake?", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Adresse de staking", + "ethereum__staking_stake_intro": "Staker de l'ETH sur Everstake?", + "ethereum__staking_unstake": "Unstake", + "ethereum__staking_unstake_intro": "Terminer le Staking de l'ETH sur Everstake?", "ethereum__title_confirm_data": "Conf. données", "ethereum__title_confirm_domain": "Conf. domaine", "ethereum__title_confirm_message": "Conf. message", @@ -333,14 +351,6 @@ "ethereum__units_template": "{0} unités", "ethereum__unknown_token": "Jeton inconnu", "ethereum__valid_signature": "Signature valide.", - "ethereum__staking_stake": "Stake", - "ethereum__staking_stake_address": "Adresse de staking", - "ethereum__staking_stake_intro": "Staker de l'ETH sur Everstake?", - "ethereum__staking_unstake": "Unstake", - "ethereum__staking_unstake_intro": "Terminer le Staking de l'ETH sur Everstake?", - "ethereum__staking_claim": "Retirer", - "ethereum__staking_claim_address": "Adresse de retrait", - "ethereum__staking_claim_intro": "Retirer l'ETH d'Everstake?", "experimental_mode__enable": "Activer les fonct. expérimentales ?", "experimental_mode__only_for_dev": "Uniquement pour le dév. et les tests bêta !", "experimental_mode__title": "Mode expérimental", @@ -367,6 +377,10 @@ "fido__wanna_erase_credentials": "Voulez-vous vraiment effacer tous les id ?", "firmware_update__title": "Maj logiciel", "firmware_update__title_fingerprint": "Empreinte fw", + "haptic_feedback__disable": "Désactiver le retour haptique ?", + "haptic_feedback__enable": "Activer le retour haptique ?", + "haptic_feedback__subtitle": "Définir", + "haptic_feedback__title": "Retour haptique", "homescreen__click_to_connect": "Se connecter", "homescreen__click_to_unlock": "Cliquez pour déverr.", "homescreen__title_backup_failed": "Échec sauvegarde", @@ -385,7 +399,20 @@ "inputs__return": "RETOUR", "inputs__show": "AFFICHER", "inputs__space": "ESPACE", - "instructions__swipe_up": "Swipe up", + "instructions__continue_holding": "Continuer\nappui", + "instructions__continue_in_app": "Continuer dans l’application", + "instructions__enter_next_share": "Saisissez le prochain fragment", + "instructions__hold_to_confirm": "Appui pour confirmer", + "instructions__hold_to_continue": "Appui pour continuer", + "instructions__hold_to_exit_tutorial": "Appui pour quitter le tutoriel", + "instructions__hold_to_finish_tutorial": "Appui pour finir le tutoriel", + "instructions__hold_to_sign": "Appui pour signer", + "instructions__learn_more": "En savoir plus", + "instructions__shares_continue_with_x_template": "Continuez avec le fragment #{0}", + "instructions__shares_start_with_1": "Commencez avec le fragment #1", + "instructions__swipe_up": "Faites glisser vers le haut", + "instructions__tap_to_confirm": "Appuyez pour confirmer", + "instructions__tap_to_start": "Appuyez pour démarrer", "joint__title": "Trans. commune", "joint__to_the_total_amount": "Au montant total :", "joint__you_are_contributing": "Votre contribution :", @@ -481,20 +508,24 @@ "nem__unencrypted": "Non chiffré :", "nem__unknown_mosaic": "Mosaïque inconnue !", "passphrase__access_hidden_wallet": "Accès portef. masqué ?", - "passphrase__always_on_device": "Voulez-vous vraiment saisir la phrase secrète toujours sur le disp. ?", + "passphrase__always_on_device": "Saisissez toujours votre phrase secrète sur Trezor ?", "passphrase__from_host_not_shown": "La phrase secrète fournie par l'hôte sera utilisée, mais pas affichée en raison des paramètres du disp.", "passphrase__hidden_wallet": "Portef. masqué", "passphrase__hide": "Masq. phrase secrète de l'hôte ?", - "passphrase__next_screen_will_show_passphrase": "La phrase secrète s'affichera à l'écran suivant.", + "passphrase__next_screen_will_show_passphrase": "L’écran suivant affiche votre phrase secrète.", "passphrase__please_enter": "Saisissez votre phrase secrète.", "passphrase__revoke_on_device": "Voulez-vous révoquer la phrase secrète dans les par. du disp. ?", "passphrase__title_confirm": "Conf. phrase secr.", "passphrase__title_enter": "Saisir phrase secr.", "passphrase__title_hide": "Masquer phra. secr.", + "passphrase__title_passphrase": "Phrase secrète", "passphrase__title_settings": "Param de phra. secr.", "passphrase__title_source": "Source phrase secr.", "passphrase__turn_off": "Désactiver la prot. par phrase secrète ?", "passphrase__turn_on": "Activer la prot. par phrase secrète ?", + "pin__cancel_description": "Continuer sans PIN", + "pin__cancel_info": "Sans PIN, tout le monde peut accéder à ce dispositif.", + "pin__cancel_setup": "Annuler la configuration du PIN", "pin__change": "Modifier le PIN ?", "pin__changed": "PIN modifié.", "pin__cursor_will_change": "La position du curseur change entre les entrées pour plus de sécurité.", @@ -546,24 +577,32 @@ "recovery__cancel_dry_run": "Annuler la vér. de la sauv.", "recovery__check_dry_run": "Vérifier votre sauvegarde ?", "recovery__cursor_will_change": "La position du curseur change entre les entrées pour plus de sécurité.", - "recovery__dry_run_bip39_valid_match": "Seed de récup. valide et correspondant à celle du disp.", + "recovery__dry_run_backup_not_on_this_device": "La sauvegarde du portefeuille n’est pas disponible sur ce dispositif", + "recovery__dry_run_bip39_valid_match": "La sauvegarde du portefeuille saisie est valide et correspond à celle du dispositif.", "recovery__dry_run_bip39_valid_mismatch": "La seed de récup. saisie est valide mais ne correspond pas à celle du disp.", + "recovery__dry_run_invalid_backup_entered": "Sauvegarde de portefeuille saisie non valide", + "recovery__dry_run_slip39_valid_all_shares": "Tous les fragments sont valides et appartiennent à la sauvegarde du dispositif", "recovery__dry_run_slip39_valid_match": "Les fragm. de récup. saisis sont valides et correspondent à ceux du disp.", "recovery__dry_run_slip39_valid_mismatch": "Les fragm. de récup. saisis sont valides, mais ne correspondent pas à ceux du disp.", + "recovery__dry_run_slip39_valid_share": "Le fragment saisi est valide et appartient à la sauvegarde du dispositif", + "recovery__dry_run_verify_remaining_shares": "Vérifier les fragments de récupération restants ?", "recovery__enter_any_share": "Saisissez un fragm.", "recovery__enter_backup": "Saisissez votre sauvegarde.", - "recovery__enter_different_share": "Saisissez un autre fragm.", + "recovery__enter_different_share": "Saisissez un autre fragment.", + "recovery__enter_each_word": "Saisissez chaque mot de la sauvegarde de votre portefeuille dans l’ordre.", "recovery__enter_share_from_diff_group": "Saisissez un fragm. d'un autre groupe.", "recovery__group_num_template": "Groupe {0}", "recovery__group_threshold_reached": "Seuil de groupe atteint.", - "recovery__invalid_wallet_backup_entered": "Seed de récup. saisie non valide.", + "recovery__info_about_disconnect": "Vous pouvez déconnecter votre Trezor en toute sécurité pendant que vous récupérez votre portefeuille et continuer plus tard.", "recovery__invalid_share_entered": "Fragm. de récup. saisi non valide.", + "recovery__invalid_wallet_backup_entered": "Seed de récup. saisie non valide.", "recovery__more_shares_needed": "Plus de fragm. requis", "recovery__num_of_words": "Sélect. le nbre de mots dans votre sauv.", "recovery__only_first_n_letters": "Il vous suffit de sélectionner les 2 ou 4 premières lettres de chaque mot.", "recovery__progress_will_be_lost": "Toute progression sera perdue.", "recovery__share_already_entered": "Fragment déjà saisi", - "recovery__share_from_another_multi_share_backup": "Vous avez saisi un fragm. d'une autre sauv. Shamir.", + "recovery__share_does_not_match": "Le fragment ne correspond pas", + "recovery__share_from_another_multi_share_backup": "Vous avez saisi un fragment d’une autre sauvegarde.", "recovery__share_num_template": "Fragment {0}", "recovery__title": "Récup. portef.", "recovery__title_cancel_dry_run": "Annuler vér. sauv.", @@ -572,14 +611,14 @@ "recovery__title_recover": "Récup. portef.", "recovery__title_remaining_shares": "Fragm. restants", "recovery__type_word_x_of_y_template": "Entrez le mot {0} sur {1}", - "recovery__wallet_recovered": "Portef. récupéré avec succès", + "recovery__wallet_recovered": "Récupération du portefeuille terminée", "recovery__wanna_cancel_dry_run": "Voulez-vous vraiment annuler la vér. de la sauv. ?", "recovery__wanna_cancel_recovery": "Voulez-vous vraiment annuler le processus de récup. ?", "recovery__word_count_template": "({0} mots)", "recovery__word_x_of_y_template": "Mot {0} sur {1}", "recovery__x_more_items_starting_template_plural": "{count} plus {plural} ont commencé", - "recovery__x_more_shares_needed_template_plural": "{count} plus {plural} sont nécessaires.", - "recovery__x_of_y_entered_template": "{0} fragm. sur {1} saisis avec succès.", + "recovery__x_more_shares_needed_template_plural": "{count} plus {plural} nécessaires", + "recovery__x_of_y_entered_template": "{0} de {1} fragments saisis", "recovery__you_have_entered": "Vous avez saisi", "reset__advanced_group_threshold_info": "Le seuil de groupe détermine le nbre de groupes pour récup.votre portef.", "reset__all_x_of_y_template": "tous {0} fragm. sur {1}", @@ -587,19 +626,23 @@ "reset__button_create": "Créer portef.", "reset__button_recover": "Récup. portef.", "reset__by_continuing": "En continuant, vous acceptez les conditions générales de Trezor.", + "reset__cancel_create_wallet": "Annuler la création du portefeuille", + "reset__check_backup_instructions": "Vérifions rapidement votre sauvegarde.", "reset__check_backup_title": "Vérif. sauvegarde", "reset__check_group_share_title_template": "Vér. g{0}- fragm. {1}", - "reset__check_wallet_backup_title": "Vérifier la seed", "reset__check_share_title_template": "Vérifier fragm. #{0}", + "reset__check_wallet_backup_title": "Vérifier la seed", "reset__continue_with_next_share": "Continuez avec le fragm. suivant.", "reset__continue_with_share_template": "Continuez avec le fragm. #{0}.", "reset__finished_verifying_group_template": "Vous avez terminé la vér. de vos fragm. de récup. pour le groupe {0}.", - "reset__finished_verifying_wallet_backup": "Votre seed de récup. est vérifiée.", "reset__finished_verifying_shares": "Vous avez terminé la vér. de vos fragm. de récup.", + "reset__finished_verifying_wallet_backup": "Votre seed de récup. est vérifiée.", "reset__group_description": "Un groupe est composé de fragm. de récup.", "reset__group_info": "Chaque groupe a un nbre défini de fragm. et un seuil spécifique. Dans les étapes suivantes, vous allez déf. le nbre de fragm. et les seuils.", "reset__group_share_checked_successfully_template": "Groupe {0} - Fragment {1} vérifié.", "reset__group_share_title_template": "Groupe {0} - fragm. {1}", + "reset__incorrect_word_selected": "Mauvais mot sélectionné", + "reset__more_at": "Plus d’infos sur", "reset__more_info_at": "Plus d'inf. à l'adr.", "reset__need_all_share_template": "Pour la récup., tous les {0} fragm. sont requis", "reset__need_any_share_template": "Pour la récup., {0} fragm. sont requis", @@ -609,29 +652,35 @@ "reset__num_of_share_holders_template": "{0} personnes ou emp. détiendront chacun un fragm.", "reset__num_of_shares_advanced_info_template": "Chaque fragm. de récup. se compose de 20 mots. Vous choisirez le nbr seuil de fragm. néc. pour former le Groupe {0}.", "reset__num_of_shares_basic_info": "Chaque fragm. de récup. se compose de 20 mots. Vous choisirez le nbr de fragm. néc. pour récup. votre portef.", + "reset__num_of_shares_how_many": "Combien de fragments de sauvegarde de portefeuille voulez-vous créer ?", + "reset__num_of_shares_long_info": "Chaque fragment de récupération se compose de 20 mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", "reset__num_shares_for_group_template": "Le nbre de fragm. requis pour former le Groupe {0}.", "reset__number_of_shares_info": "= nbre total de listes de mots uniques pour la sauv. du portef.", "reset__one_share": "1 fragm.", "reset__only_one_share_will_be_created": "Un seul fragm. sera créé.", - "reset__recovery_wallet_backup_title": "Seed de récup.", "reset__recovery_share_title_template": "Fragm. de récup. #{0}", + "reset__recovery_wallet_backup_title": "Seed de récup.", "reset__required_number_of_groups": "Le nbre de groupes requis pour la récup.", "reset__select_correct_word": "Sélect. le mot correct par emplacement.", + "reset__select_threshold": "Sélectionnez le nombre minimum de fragments requis pour récupérer votre portefeuille.", "reset__select_word_template": "Sélectionner {0} mot", "reset__select_word_x_of_y_template": "Mot {0} sur {1}:", "reset__set_it_to_count_template": "Définissez-le sur {0} et vous aurez besoin ", - "reset__share_checked_successfully_template": "Le fragm. de récup. #{0} a été vérifié.", + "reset__share_checked_successfully_template": "Fragm. de récup. #{0} vérifié avec succès.", + "reset__share_completed_template": "Fragment de récupération #{0} terminé", "reset__share_words_title": "Sauv. standard", "reset__slip39_checklist_num_groups": "Nbre de groupes", "reset__slip39_checklist_num_shares": "Nbre fragm.", + "reset__slip39_checklist_num_shares_x_template": "Nombre de fragments", "reset__slip39_checklist_set_num_groups": "Déf. nbre de groupes", "reset__slip39_checklist_set_num_shares": "Déf. nbre de fragm.", "reset__slip39_checklist_set_sizes": "Déf. tailles et seuils", "reset__slip39_checklist_set_sizes_longer": "Déf. les tailles et seuils par groupe", "reset__slip39_checklist_set_threshold": "Déf. seuil", + "reset__slip39_checklist_threshold_x_template": "Seuil de récupération :", "reset__slip39_checklist_title": "Liste contr. sauveg.", "reset__slip39_checklist_write_down": "Noter et vérifier tous les fragm.", - "reset__slip39_checklist_write_down_recovery": "Noter et vérifier tous les fragm. de récup.", + "reset__slip39_checklist_write_down_recovery": "Notez et vérif. fragm. de sauv. du portef.", "reset__the_threshold_sets_the_number_of_shares": "Le seuil définit le nbre de fragm. ", "reset__threshold_info": "= nbre min de listes de mots uniques utilisées pour la récup.", "reset__title_backup_is_done": "Sauv. terminée", @@ -647,7 +696,8 @@ "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Déf. le nbre de fragm. dans le Groupe {0}.", "reset__use_your_backup": "Utilisez votre sauv. lorsque vous devez récup. votre portef.", - "reset__write_down_words_template": "Notez les {0} mots dans l'ordre.", + "reset__words_written_down_template": "J’ai noté tous les {0} mots dans l’ordre.", + "reset__write_down_words_template": "Inscrivez les {0} mots suivants dans l’ordre.", "reset__wrong_word_selected": "Mauvais mot sélectionné !", "reset__you_need_one_share": "Un fragment requis pour la récupération.", "reset__your_backup_is_done": "Sauv. terminée.", @@ -687,11 +737,15 @@ "sd_card__wanna_format": "Voulez-vous vraiment formater la carte SD ?", "sd_card__wrong_sd_card": "Mauvaise carte SD.", "send__address_path": "chemin d'adr.", + "send__cancel_sign": "Annuler la signature", "send__confirm_sending": "Montant de l'envoi", "send__from_multiple_accounts": "Envoi depuis plusieurs comptes.", + "send__incl_transaction_fee": "Frais de transaction inclus", "send__including_fee": "Frais inclus :", "send__maximum_fee": "Frais max :", "send__receiving_to_multisig": "Récep. vers adr. multisignatures.", + "send__send_from": "Envoyer depuis", + "send__sign_transaction": "Signer la transaction", "send__title_confirm_sending": "Conf. envoi", "send__title_joint_transaction": "Trans. commune", "send__title_receiving_to": "Récep. sur", @@ -700,8 +754,9 @@ "send__title_sending_to": "Envoi à", "send__to_the_total_amount": "Au montant total :", "send__total_amount": "Montant total", - "send__total_amount_colon": "Montant total :", + "send__total_amount_colon": "Montant total :", "send__transaction_id": "ID de transaction :", + "send__transaction_signed": "Transaction signée", "send__you_are_contributing": "Votre contribution :", "share_words__words_in_order": " mots dans l'ordre.", "share_words__wrote_down_all": "J'ai noté tous les ", @@ -791,11 +846,11 @@ "stellar__value_sha256": "Valeur (SHA-256) :", "stellar__wanna_clean_value_key_template": "Voulez-vous effacer la clé de valeur {0} ?", "stellar__your_account": " votre compte", - "tezos__baker_address": "Adr. du baker :", - "storage_msg__verifying_pin": "Vérification du PIN", "storage_msg__processing": "Traitement", "storage_msg__starting": "Démarrage", + "storage_msg__verifying_pin": "Vérification du PIN", "storage_msg__wrong_pin": "PIN incorrect", + "tezos__baker_address": "Adr. du baker :", "tezos__balance": "Solde :", "tezos__ballot": "Bulletin de vote :", "tezos__confirm_delegation": "Conf. délégation", @@ -807,17 +862,28 @@ "tezos__submit_ballot": "Soumettre le bulletin de vote", "tezos__submit_proposal": "Soumettre une proposition", "tezos__submit_proposals": "Soumettre des propositions", + "tutorial__continue": "Continuer le tutoriel", + "tutorial__exit": "Quitter le tutoriel", + "tutorial__first_transaction_finish": "a eu lieu le 12 janvier 2009.", + "tutorial__first_transaction_intro": "La première transaction bitcoin au monde", + "tutorial__menu": "Le menu comprend des actions et des options spécifiques au contexte.", "tutorial__middle_click": "App. simultanément sur les boutons gauche et droit\npour conf.", + "tutorial__one_more_step": "Encore une étape...", "tutorial__press_and_hold": "Maintenez enfoncé le bouton droit\npour accepter les choix importants.", "tutorial__ready_to_use": "Vous êtes prêt à\nutiliser Trezor.", + "tutorial__ready_to_use_safe5": "Bravo !\nVous êtes prêt à utiliser votre Trezor Safe 5.", "tutorial__scroll_down": "Utilisez le bouton droit pour lire le contenu lorsqu'il dépasse.\n\rBouton gauche pour faire défiler l'écran vers le haut.", + "tutorial__subtitle_safe5": "Tutoriel Trezor Safe 5", "tutorial__sure_you_want_skip": "Voulez-vous vraiment\nignorer le tutoriel ?", + "tutorial__swipe_up_and_down": "Faites glisser vers le haut ou vers le bas pour naviguer entre les écrans.", "tutorial__title_hello": "Bonjour", + "tutorial__title_navigation": "Navigation", "tutorial__title_screen_scroll": "Défilement écran", "tutorial__title_skip": "Ignorer le tutoriel", "tutorial__title_tutorial_complete": "Tutoriel terminé", "tutorial__use_trezor": "Utilisez Trezor avec\nles boutons gauche et droit.\n\rContinuez avec le droit.", "tutorial__welcome_press_right": "Bienvenue sur Trezor. Appuyez sur le bouton droit pour continuer.", + "tutorial__welcome_safe5": "Bienvenue dans Trezor Safe 5.", "u2f__get": "Augm. et récup. compteur U2F ?", "u2f__set_template": "Déf. compteur U2F sur {0} ?", "u2f__title_get": "Obtenir compt. U2F", @@ -851,6 +917,7 @@ "words__array_of": "Liste de", "words__blockhash": "Hachage de bloc", "words__buying": "Achat", + "words__cancel_and_exit": "Annuler et quitter", "words__confirm": "Conf.", "words__confirm_fee": "Conf. les frais", "words__contains": "Contient", @@ -859,15 +926,21 @@ "words__error": "Erreur", "words__fee": "Frais", "words__from": "de", + "words__good_to_know": "Bon à savoir", + "words__important": "Important", + "words__instructions": "Instructions", "words__keep_it_safe": "Conservez-la en lieu sûr !", "words__know_what_your_doing": "Continuez uniquement si vous savez ce que vous faites !", "words__my_trezor": "Mon Trezor", "words__no": "Non", + "words__not_recommended": "Non recommandé !", + "words__operation_cancelled": "Opération annulée", "words__outputs": "sorties", "words__please_check_again": "Revérifiez", "words__please_try_again": "Réessayez", "words__really_wanna": "Voulez-vous vraiment", "words__recipient": "Destinataire", + "words__settings": "Paramètres", "words__sign": "Signer", "words__signer": "Signataire", "words__title_check": "Vérifier", @@ -879,6 +952,7 @@ "words__title_success": "Réussite", "words__title_summary": "Résumé", "words__title_threshold": "Seuil", + "words__try_again": "Réessayer.", "words__unknown": "Inconnu", "words__warning": "Avertissement", "words__writable": "Modifiable", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 29509e9cb6..cc45d0657e 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "886b12bcb1eb7dd11f8f8509fb5ee2eb13e1ca6ae968ca0e6732b440ba465416", - "datetime": "2024-06-05T13:23:30.327902", - "commit": "9ad44f311cad1eee987452c8de21d18d931df44e" + "merkle_root": "57561824d2bed19054d5570b0181b5907c7ae5546e4d6c2e589a727898a69237", + "datetime": "2024-05-31T09:09:13.124759", + "commit": "6000eaf8280116d0cc947aa8d2aceb568dca56f8" }, "history": [ { From 72bdea6754aa8b28f4f90595bb61be2f0f78674b Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 2 Jun 2024 13:04:59 +0200 Subject: [PATCH 238/626] chore(core): remove BIG font from lang jsons Foreign characters are not needed at the moment as the font is used only in ShareWords. [no changelog] --- core/translations/cs.json | 2 +- core/translations/de.json | 2 +- core/translations/es.json | 2 +- core/translations/fr.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index fe5565434f..60813749dc 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -24,7 +24,7 @@ "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_cs.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_cs.json", "3_FONT_MONO": "font_robotomono_medium_21_cs.json", - "4_FONT_BIG": "font_ttsatoshi_demibold_42_cs.json", + "4_FONT_BIG": null, "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_cs.json", "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, diff --git a/core/translations/de.json b/core/translations/de.json index 0b715eebb1..0c6d189157 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -24,7 +24,7 @@ "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_de.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_de.json", "3_FONT_MONO": "font_robotomono_medium_21_de.json", - "4_FONT_BIG": "font_ttsatoshi_demibold_42_de.json", + "4_FONT_BIG": null, "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_de.json", "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, diff --git a/core/translations/es.json b/core/translations/es.json index cc864bf9d0..89d59c9b72 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -24,7 +24,7 @@ "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_es.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_es.json", "3_FONT_MONO": "font_robotomono_medium_21_es.json", - "4_FONT_BIG": "font_ttsatoshi_demibold_42_es.json", + "4_FONT_BIG": null, "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_es.json", "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, diff --git a/core/translations/fr.json b/core/translations/fr.json index b5db41ead7..ccd5d190ef 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -24,7 +24,7 @@ "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_fr.json", "2_FONT_BOLD": "font_ttsatoshi_demibold_21_fr.json", "3_FONT_MONO": "font_robotomono_medium_21_fr.json", - "4_FONT_BIG": "font_ttsatoshi_demibold_42_fr.json", + "4_FONT_BIG": null, "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_fr.json", "6_FONT_NORMAL_UPPER": null, "7_FONT_BOLD_UPPER": null, From 5bd6996ae462a352978214a22de48aea226d50bf Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 2 Jun 2024 12:47:24 +0200 Subject: [PATCH 239/626] feat(core/ui): show success screens between shares This commit also adds minor improvements to reset flow. [no changelog] --- .../flow/confirm_reset_create.rs | 4 +- .../ui/model_mercury/flow/show_share_words.rs | 3 +- .../embed/rust/src/ui/model_mercury/layout.rs | 9 ++- core/mocks/generated/trezorui2.pyi | 2 +- .../apps/management/reset_device/layout.py | 55 ++------------ .../src/trezor/ui/layouts/mercury/__init__.py | 8 ++- .../src/trezor/ui/layouts/mercury/recovery.py | 2 +- core/src/trezor/ui/layouts/mercury/reset.py | 72 +++++++++++++++---- core/src/trezor/ui/layouts/tr/reset.py | 46 +++++++++++- core/src/trezor/ui/layouts/tt/reset.py | 48 ++++++++++++- core/translations/signatures.json | 6 +- python/src/trezorlib/debuglink.py | 23 +++--- tests/common.py | 18 +++-- tests/input_flows.py | 8 ++- tests/input_flows_helpers.py | 6 +- 15 files changed, 210 insertions(+), 100 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index c4df045075..e02ba7c28e 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -97,9 +97,11 @@ impl ConfirmResetCreate { .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) .one_button_request(ButtonRequestCode::ResetDevice.with_type("setup_device")); + // FIXME: TR::reset__cancel_create_wallet should be used but Button text on + // multiple lines not supported yet let content_menu = Frame::left_aligned( "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, "Cancel".into()), // TODO: use TR + VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), ) .with_cancel_button() .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index 0b4f74b11c..e016aec4e7 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -112,13 +112,12 @@ impl ShowShareWords { .map(|_| Some(FlowMsg::Confirmed)); let content_check_backup_intro = Frame::left_aligned( - TR::reset__check_backup_title.into(), + TR::reset__check_wallet_backup_title.into(), SwipeContent::new(Paragraphs::new(Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, TR::reset__check_backup_instructions, ))), ) - .with_subtitle(TR::words__instructions.into()) .with_footer(TR::instructions__swipe_up.into(), None) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .map(|_| Some(FlowMsg::Confirmed)); diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 2b821713bf..fb1581e3fe 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -788,10 +788,15 @@ extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map extern "C" fn new_show_success(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let description: Option<TString> = kwargs + .get(Qstr::MP_QSTR_description)? + .try_into_option()? + .and_then(|desc: TString| if desc.is_empty() { None } else { Some(desc) }); + let content = StatusScreen::new_success(); let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(title, SwipeContent::new(content).with_normal_attach(None)) - .with_footer(TR::instructions__swipe_up.into(), None) + .with_footer(TR::instructions__swipe_up.into(), description) .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; Ok(obj.into()) @@ -1572,7 +1577,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// allow_cancel: bool = False, /// time_ms: int = 0, /// ) -> LayoutObj[UiResult]: - /// """Success modal. No buttons shown when `button` is empty string.""" + /// """Success screen. Description is used in the footer.""" Qstr::MP_QSTR_show_success => obj_fn_kw!(0, new_show_success).as_obj(), /// def show_info( diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index e680d2a87a..caf2c398ef 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -278,7 +278,7 @@ def show_success( allow_cancel: bool = False, time_ms: int = 0, ) -> LayoutObj[UiResult]: - """Success modal. No buttons shown when `button` is empty string.""" + """Success screen. Description is used in the footer.""" # rust/src/ui/model_mercury/layout.rs diff --git a/core/src/apps/management/reset_device/layout.py b/core/src/apps/management/reset_device/layout.py index 41c2e3051e..f2958290be 100644 --- a/core/src/apps/management/reset_device/layout.py +++ b/core/src/apps/management/reset_device/layout.py @@ -69,17 +69,20 @@ async def _share_words_confirmed( Return true if the words are confirmed successfully. """ - # TODO: confirm_action("Select the words bla bla") + from trezor.ui.layouts.reset import ( + show_share_confirmation_success, + show_share_confirmation_failure, + ) if await _do_confirm_share_words(share_index, share_words, group_index): - await _show_confirmation_success( + await show_share_confirmation_success( share_index, num_of_shares, group_index, ) return True else: - await _show_confirmation_failure() + await show_share_confirmation_failure() return False @@ -105,52 +108,6 @@ async def _do_confirm_share_words( return True -async def _show_confirmation_success( - share_index: int | None = None, - num_of_shares: int | None = None, - group_index: int | None = None, -) -> None: - if share_index is None or num_of_shares is None: - # it is a BIP39 or a 1-of-1 SLIP39 backup - subheader = TR.reset__finished_verifying_wallet_backup - text = "" - - elif share_index == num_of_shares - 1: - if group_index is None: - subheader = TR.reset__finished_verifying_shares - else: - subheader = TR.reset__finished_verifying_group_template.format( - group_index + 1 - ) - text = "" - - else: - if group_index is None: - subheader = TR.reset__share_checked_successfully_template.format( - share_index + 1 - ) - text = TR.reset__continue_with_share_template.format(share_index + 2) - else: - subheader = TR.reset__group_share_checked_successfully_template.format( - group_index + 1, share_index + 1 - ) - text = TR.reset__continue_with_next_share - - return await show_success("success_recovery", text, subheader) - - -async def _show_confirmation_failure() -> None: - from trezor.ui.layouts.reset import show_reset_warning - - await show_reset_warning( - "warning_backup_check", - TR.words__please_check_again, - TR.reset__wrong_word_selected, - TR.buttons__check_again, - ButtonRequestType.ResetDevice, - ) - - async def show_backup_warning() -> None: from trezor.ui.layouts.reset import show_warning_backup diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index ad8f5c6c8f..3d85acff81 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -369,7 +369,11 @@ async def confirm_reset_device(_title: str, recovery: bool = False) -> None: async def prompt_backup() -> bool: # TODO: should we move this to `flow_prompt_backup`? await interact( - RustLayout(trezorui2.show_success(title=TR.backup__new_wallet_created)), + RustLayout( + trezorui2.show_success( + title=TR.backup__new_wallet_created, description=None + ) + ), "backup_device", ButtonRequestType.ResetDevice, ) @@ -562,7 +566,7 @@ async def show_success( RustLayout( trezorui2.show_success( title=content, - description="", + description=subheader, ) ), br_type, diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index 89d411b7b8..e7ab841ba0 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -123,7 +123,7 @@ async def continue_recovery( if show_info: # Show this just one-time - description = TR.recovery__only_first_n_letters + description = TR.recovery__enter_each_word else: description = subtext or "" diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 661bcc1eb5..dcfd456881 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -6,7 +6,7 @@ from trezor.wire import ActionCancelled from ..common import interact -from . import RustLayout, raise_if_not_confirmed +from . import RustLayout, raise_if_not_confirmed, show_success if TYPE_CHECKING: pass @@ -57,11 +57,11 @@ async def select_word( group_index: int | None = None, ) -> str: if share_index is None: - description: str = TR.reset__check_wallet_backup_title + title: str = TR.reset__check_wallet_backup_title elif group_index is None: - description: str = TR.reset__check_share_title_template.format(share_index + 1) + title: str = TR.reset__check_share_title_template.format(share_index + 1) else: - description: str = TR.reset__check_group_share_title_template.format( + title: str = TR.reset__check_group_share_title_template.format( group_index + 1, share_index + 1 ) @@ -74,10 +74,10 @@ async def select_word( result = await RustLayout( trezorui2.select_word( - title=TR.reset__select_word_x_of_y_template.format( + title=title, + description=TR.reset__select_word_x_of_y_template.format( checked_index + 1, count ), - description=description, words=(words[0], words[1], words[2]), ) ) @@ -316,12 +316,9 @@ async def show_warning_backup() -> None: async def show_success_backup() -> None: - from . import show_success - await show_success( "success_backup", - TR.reset__use_your_backup, - TR.reset__your_backup_is_done, + TR.backup__title_backup_completed, ) @@ -332,15 +329,14 @@ async def show_reset_warning( button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, ) -> None: - button = button or TR.buttons__try_again # def_arg await raise_if_not_confirmed( interact( RustLayout( trezorui2.show_warning( - title=content or TR.words__warning, - description="", - value=subheader or "", - button=button, + title=subheader or "", + description=content, + value="", + button="", allow_cancel=False, ) ), @@ -348,3 +344,49 @@ async def show_reset_warning( br_code, ) ) + + +async def show_share_confirmation_success( + share_index: int | None = None, + num_of_shares: int | None = None, + group_index: int | None = None, +) -> None: + if share_index is None or num_of_shares is None: + # it is a BIP39 or a 1-of-1 SLIP39 backup + # mercury UI shows only final wallet backup confirmation screen later + return + + # TODO: super-shamir copy not done + if share_index == num_of_shares - 1: + title = TR.reset__share_completed_template.format(share_index + 1) + if group_index is None: + footer_description = "" + else: + footer_description = TR.reset__finished_verifying_group_template.format( + group_index + 1 + ) + else: + if group_index is None: + title = TR.reset__share_completed_template.format(share_index + 1) + footer_description = ( + TR.instructions__shares_continue_with_x_template.format(share_index + 2) + ) + else: + title = TR.reset__continue_with_next_share + footer_description = ( + TR.reset__group_share_checked_successfully_template.format( + group_index + 1, share_index + 1 + ) + ) + + return await show_success("success_recovery", title, subheader=footer_description) + + +async def show_share_confirmation_failure() -> None: + await show_reset_warning( + "warning_backup_check", + TR.words__try_again, + TR.reset__incorrect_word_selected, + "", + ButtonRequestType.ResetDevice, + ) diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index 6dcc593195..2d17232430 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -6,7 +6,7 @@ from trezor.wire import ActionCancelled from ..common import interact -from . import RustLayout, confirm_action, show_warning +from . import RustLayout, confirm_action, show_warning, show_success CONFIRMED = trezorui2.CONFIRMED # global_import_cache @@ -291,3 +291,47 @@ async def show_reset_warning( button, br_code=br_code, ) + + +async def show_share_confirmation_success( + share_index: int | None = None, + num_of_shares: int | None = None, + group_index: int | None = None, +) -> None: + if share_index is None or num_of_shares is None: + # it is a BIP39 or a 1-of-1 SLIP39 backup + subheader = TR.reset__finished_verifying_wallet_backup + text = "" + + elif share_index == num_of_shares - 1: + if group_index is None: + subheader = TR.reset__finished_verifying_shares + else: + subheader = TR.reset__finished_verifying_group_template.format( + group_index + 1 + ) + text = "" + + else: + if group_index is None: + subheader = TR.reset__share_checked_successfully_template.format( + share_index + 1 + ) + text = TR.reset__continue_with_share_template.format(share_index + 2) + else: + subheader = TR.reset__group_share_checked_successfully_template.format( + group_index + 1, share_index + 1 + ) + text = TR.reset__continue_with_next_share + + return await show_success("success_recovery", text, subheader) + + +async def show_share_confirmation_failure() -> None: + await show_reset_warning( + "warning_backup_check", + TR.words__please_check_again, + TR.reset__wrong_word_selected, + TR.buttons__check_again, + ButtonRequestType.ResetDevice, + ) diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index bdb88043dc..53c51bbc4f 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -6,7 +6,7 @@ from trezor.wire import ActionCancelled from ..common import interact -from . import RustLayout, raise_if_not_confirmed +from . import RustLayout, raise_if_not_confirmed, show_success CONFIRMED = trezorui2.CONFIRMED # global_import_cache @@ -326,8 +326,6 @@ async def show_warning_backup() -> None: async def show_success_backup() -> None: - from . import show_success - await show_success( "success_backup", TR.reset__use_your_backup, @@ -357,3 +355,47 @@ async def show_reset_warning( br_code, ) ) + + +async def show_share_confirmation_success( + share_index: int | None = None, + num_of_shares: int | None = None, + group_index: int | None = None, +) -> None: + if share_index is None or num_of_shares is None: + # it is a BIP39 or a 1-of-1 SLIP39 backup + subheader = TR.reset__finished_verifying_wallet_backup + text = "" + + elif share_index == num_of_shares - 1: + if group_index is None: + subheader = TR.reset__finished_verifying_shares + else: + subheader = TR.reset__finished_verifying_group_template.format( + group_index + 1 + ) + text = "" + + else: + if group_index is None: + subheader = TR.reset__share_checked_successfully_template.format( + share_index + 1 + ) + text = TR.reset__continue_with_share_template.format(share_index + 2) + else: + subheader = TR.reset__group_share_checked_successfully_template.format( + group_index + 1, share_index + 1 + ) + text = TR.reset__continue_with_next_share + + return await show_success("success_recovery", text, subheader) + + +async def show_share_confirmation_failure() -> None: + await show_reset_warning( + "warning_backup_check", + TR.words__please_check_again, + TR.reset__wrong_word_selected, + TR.buttons__check_again, + ButtonRequestType.ResetDevice, + ) diff --git a/core/translations/signatures.json b/core/translations/signatures.json index cc45d0657e..32d271486a 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "57561824d2bed19054d5570b0181b5907c7ae5546e4d6c2e589a727898a69237", - "datetime": "2024-05-31T09:09:13.124759", - "commit": "6000eaf8280116d0cc947aa8d2aceb568dca56f8" + "merkle_root": "7a115e582a5f5f09b1850946030762360f55e516a60cf960dffc9ba174c2e4d2", + "datetime": "2024-06-02T11:07:12.183601", + "commit": "66496206ccbe9583203fbfebf8c9222e8c6379b8" }, "history": [ { diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index f1fa328b8c..a0d23bc8f6 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -171,27 +171,32 @@ def visible_screen(self) -> str: return visible + def _get_str_or_dict_text(self, key: str) -> str: + value = self.find_unique_value_by_key(key, "") + if isinstance(value, dict): + return value["text"] + return value + def title(self) -> str: - """Getting text that is displayed as a title.""" + """Getting text that is displayed as a title and potentially subtitle.""" # There could be possibly subtitle as well title_parts: List[str] = [] - def _get_str_or_dict_text(key: str) -> str: - value = self.find_unique_value_by_key(key, "") - if isinstance(value, dict): - return value["text"] - return value - - title = _get_str_or_dict_text("title") + title = self._get_str_or_dict_text("title") if title: title_parts.append(title) - subtitle = _get_str_or_dict_text("subtitle") + subtitle = self.subtitle() if subtitle: title_parts.append(subtitle) return "\n".join(title_parts) + def subtitle(self) -> str: + """Getting text that is displayed as a subtitle.""" + subtitle = self._get_str_or_dict_text("subtitle") + return subtitle + def text_content(self) -> str: """What is on the screen, in one long string, so content can be asserted regardless of newlines. Also getting rid of possible ellipsis. diff --git a/tests/common.py b/tests/common.py index 5011d91172..6502faf591 100644 --- a/tests/common.py +++ b/tests/common.py @@ -277,13 +277,21 @@ def check_share( Given the mnemonic word list, proceed with the backup check: three rounds of `Select word X of Y` choices. """ + re_num_of_word = r"\d+" for _ in range(3): - if debug.model is models.T2B1: - # T2B1 has the instruction in the title - word_pos_match = re.search(r"\d+", debug.wait_layout().title()) + if debug.model is models.T2T1: + # T2T1 has position as the first number in the text + word_pos_match = re.search( + re_num_of_word, debug.wait_layout().text_content() + ) + elif debug.model is models.T2B1: + # other models have the instruction in the title/subtitle + word_pos_match = re.search(re_num_of_word, debug.wait_layout().title()) + elif debug.model is models.T3T1: + word_pos_match = re.search(re_num_of_word, debug.wait_layout().subtitle()) else: - # Other models has position as the first number in the text - word_pos_match = re.search(r"\d+", debug.wait_layout().text_content()) + word_pos_match = None + assert word_pos_match is not None word_pos = int(word_pos_match.group(0)) diff --git a/tests/input_flows.py b/tests/input_flows.py index 5d630658ba..aba5d4d08b 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -1255,9 +1255,11 @@ def get_mnemonic_and_confirm_success( # mnemonic phrases mnemonic = yield from read_and_confirm_mnemonic(debug) - br = yield # confirm recovery seed check - assert br.code == B.Success - debug.press_yes() + is_slip39 = len(mnemonic.split()) in (20, 33) + if debug.model in (models.T2T1, models.T2B1) or is_slip39: + br = yield # confirm recovery share check + assert br.code == B.Success + debug.press_yes() br = yield # confirm success assert br.code == B.Success diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 343b363f61..5135549e0b 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -93,7 +93,7 @@ def tr_recovery_homescreen(self) -> BRGeneratorType: def enter_your_backup(self) -> BRGeneratorType: yield if self.debug.model is models.T3T1: - TR.assert_in(self._text_content(), "recovery__only_first_n_letters") + TR.assert_in(self._text_content(), "recovery__enter_each_word") else: TR.assert_in(self._text_content(), "recovery__enter_backup") is_dry_run = any( @@ -110,7 +110,7 @@ def enter_any_share(self) -> BRGeneratorType: yield TR.assert_in_multiple( self._text_content(), - ["recovery__enter_any_share", "recovery__only_first_n_letters"], + ["recovery__enter_any_share", "recovery__enter_each_word"], ) is_dry_run = any( title in self.debug.wait_layout().title().lower() @@ -127,7 +127,7 @@ def abort_recovery(self, confirm: bool) -> BRGeneratorType: if self.client.model is models.T2B1: TR.assert_in(self._text_content(), "recovery__num_of_words") elif self.client.model is models.T3T1: - TR.assert_in(self._text_content(), "recovery__only_first_n_letters") + TR.assert_in(self._text_content(), "recovery__enter_each_word") else: TR.assert_in(self._text_content(), "recovery__enter_any_share") self.debug.press_no() From dd70b438d3b27b82ae8efb54b6c508aabcd7eabf Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 2 Jun 2024 15:19:56 +0200 Subject: [PATCH 240/626] feat(core/ui): default button active style [no changelog] --- core/embed/rust/src/ui/model_mercury/theme/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index faa1b31f2f..da8c4f70ed 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -239,9 +239,9 @@ pub const fn button_default() -> ButtonStyleSheet { }, active: &ButtonStyle { font: Font::DEMIBOLD, - text_color: GREY_LIGHT, + text_color: GREY_EXTRA_LIGHT, button_color: BG, - icon_color: GREY_LIGHT, + icon_color: GREY_EXTRA_LIGHT, background_color: BG, }, disabled: &ButtonStyle { @@ -366,7 +366,7 @@ pub const fn button_danger() -> ButtonStyleSheet { font: Font::DEMIBOLD, text_color: ORANGE_LIGHT, button_color: BG, - icon_color: ORANGE_LIGHT, + icon_color: ORANGE_DIMMED, background_color: BG, }, active: &ButtonStyle { From 936fe1aea94f5b5e992ccc0896db70e8ffaf44c8 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 2 Jun 2024 16:24:32 +0200 Subject: [PATCH 241/626] feat(core/ui): T3T1 separate wallet created screen Commit adds separate call of success screen after wallet is created. This is to ensure the success is shown even when skip_backup is set in the protob msg. [no changelog] --- core/src/apps/management/reset_device/__init__.py | 9 ++++++++- core/src/trezor/ui/layouts/mercury/__init__.py | 9 ++++----- core/src/trezor/ui/layouts/tr/__init__.py | 5 +++++ core/src/trezor/ui/layouts/tt/__init__.py | 5 +++++ 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index a37804672f..4cf51a3db0 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -33,7 +33,11 @@ async def reset_device(msg: ResetDevice) -> Success: from trezor.crypto import bip39, random from trezor.messages import EntropyAck, EntropyRequest, Success from trezor.pin import render_empty_loader - from trezor.ui.layouts import confirm_reset_device, prompt_backup + from trezor.ui.layouts import ( + confirm_reset_device, + prompt_backup, + show_wallet_created_success, + ) from trezor.wire.context import call from apps.common.request_pin import request_pin_confirm @@ -93,6 +97,9 @@ async def reset_device(msg: ResetDevice) -> Success: # Otherwise, we try to do it. perform_backup = not msg.no_backup and not msg.skip_backup + # Wallet created successfully + await show_wallet_created_success() + # If doing backup, ask the user to confirm. if perform_backup: perform_backup = await prompt_backup() diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 3d85acff81..5a8becf00e 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -366,18 +366,17 @@ async def confirm_reset_device(_title: str, recovery: bool = False) -> None: ) -async def prompt_backup() -> bool: - # TODO: should we move this to `flow_prompt_backup`? +async def show_wallet_created_success() -> None: await interact( RustLayout( - trezorui2.show_success( - title=TR.backup__new_wallet_created, description=None - ) + trezorui2.show_success(title=TR.backup__new_wallet_created, description="") ), "backup_device", ButtonRequestType.ResetDevice, ) + +async def prompt_backup() -> bool: result = await interact( RustLayout(trezorui2.flow_prompt_backup()), "backup_device", diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index edebfa046e..b27b319305 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -465,6 +465,11 @@ def confirm_reset_device( ) +async def show_wallet_created_success() -> None: + # not shown on model R + return None + + async def prompt_backup() -> bool: br_type = "backup_device" br_code = ButtonRequestType.ResetDevice diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 48fef1b043..0a010c59d3 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -383,6 +383,11 @@ def confirm_reset_device(title: str, recovery: bool = False) -> Awaitable[None]: ) +async def show_wallet_created_success() -> None: + # not shown on model T + return None + + # TODO cleanup @ redesign async def prompt_backup() -> bool: result = await interact( From d4b854a95e29f708ba555056a48dc57abcc44679 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 2 Jun 2024 17:16:39 +0200 Subject: [PATCH 242/626] refactor(core): sync layout code Refactor mercury layout code according to recent changes in model_t layout code. [no changelog] --- .../src/trezor/ui/layouts/mercury/__init__.py | 140 +++++++++--------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 5a8becf00e..5c057ae5e7 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -281,7 +281,7 @@ async def raise_if_not_confirmed( raise exc -async def confirm_action( +def confirm_action( br_type: str, title: str, action: str | None = None, @@ -297,11 +297,11 @@ async def confirm_action( br_code: ButtonRequestType = BR_TYPE_OTHER, prompt_screen: bool = False, prompt_title: str | None = None, -) -> None: +) -> Awaitable[None]: if description is not None and description_param is not None: description = description.format(description_param) - await raise_if_not_confirmed( + return raise_if_not_confirmed( interact( RustLayout( trezorui2.confirm_action( @@ -325,13 +325,13 @@ async def confirm_action( ) -async def confirm_single( +def confirm_single( br_type: str, title: str, description: str, description_param: str | None = None, verb: str | None = None, -) -> None: +) -> Awaitable[None]: description_param = description_param or "" # Placeholders are coming from translations in form of {0} @@ -340,7 +340,7 @@ async def confirm_single( template_str = "{}" begin, _separator, end = description.partition(template_str) - await raise_if_not_confirmed( + return raise_if_not_confirmed( interact( RustLayout( trezorui2.confirm_emphasized( @@ -355,13 +355,13 @@ async def confirm_single( ) -async def confirm_reset_device(_title: str, recovery: bool = False) -> None: +def confirm_reset_device(_title: str, recovery: bool = False) -> Awaitable[None]: if recovery: - await raise_if_not_confirmed( + return raise_if_not_confirmed( RustLayout(trezorui2.flow_confirm_reset_recover()), ) else: - await raise_if_not_confirmed( + return raise_if_not_confirmed( RustLayout(trezorui2.flow_confirm_reset_create()), ) @@ -386,16 +386,16 @@ async def prompt_backup() -> bool: return result is CONFIRMED -async def confirm_path_warning( +def confirm_path_warning( path: str, path_type: str | None = None, -) -> None: +) -> Awaitable[None]: description = ( TR.addr_mismatch__wrong_derivation_path if not path_type else f"{TR.words__unknown} {path_type.lower()}." ) - await raise_if_not_confirmed( + return raise_if_not_confirmed( interact( RustLayout( trezorui2.flow_warning_hi_prio( @@ -408,8 +408,8 @@ async def confirm_path_warning( ) -async def confirm_multisig_warning() -> None: - await raise_if_not_confirmed( +def confirm_multisig_warning() -> Awaitable[None]: + return raise_if_not_confirmed( interact( RustLayout( trezorui2.flow_warning_hi_prio( @@ -423,10 +423,10 @@ async def confirm_multisig_warning() -> None: ) -async def confirm_homescreen( +def confirm_homescreen( image: bytes, -) -> None: - await raise_if_not_confirmed( +) -> Awaitable[None]: + return raise_if_not_confirmed( interact( RustLayout( trezorui2.confirm_homescreen( @@ -531,15 +531,15 @@ async def show_error_and_raise( raise exc -async def show_warning( +def show_warning( br_type: str, content: str, subheader: str | None = None, button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, -) -> None: +) -> Awaitable[None]: button = button or TR.buttons__continue # def_arg - await raise_if_not_confirmed( + return raise_if_not_confirmed( interact( RustLayout( trezorui2.show_warning( @@ -554,18 +554,18 @@ async def show_warning( ) -async def show_success( +def show_success( br_type: str, content: str, subheader: str | None = None, button: str | None = None, -) -> None: - await raise_if_not_confirmed( +) -> Awaitable[None]: + return raise_if_not_confirmed( interact( RustLayout( trezorui2.show_success( title=content, - description=subheader, + description=subheader if subheader else "", ) ), br_type, @@ -721,7 +721,7 @@ async def _confirm_ask_pagination( assert False -async def confirm_blob( +def confirm_blob( br_type: str, title: str, data: bytes | str, @@ -733,7 +733,7 @@ async def confirm_blob( ask_pagination: bool = False, chunkify: bool = False, prompt_screen: bool = True, -) -> None: +) -> Awaitable[None]: layout = RustLayout( trezorui2.confirm_blob( title=title, @@ -750,10 +750,10 @@ async def confirm_blob( if ask_pagination and layout.page_count() > 1: assert not hold - await _confirm_ask_pagination(br_type, title, data, description or "", br_code) + return _confirm_ask_pagination(br_type, title, data, description or "", br_code) else: - await raise_if_not_confirmed( + return raise_if_not_confirmed( interact( layout, br_type, @@ -762,14 +762,14 @@ async def confirm_blob( ) -async def confirm_address( +def confirm_address( title: str, address: str, description: str | None = None, br_type: str = "confirm_address", br_code: ButtonRequestType = BR_TYPE_OTHER, -) -> None: - return await confirm_value( +) -> Awaitable[None]: + return confirm_value( title, address, description or "", @@ -779,14 +779,14 @@ async def confirm_address( ) -async def confirm_text( +def confirm_text( br_type: str, title: str, data: str, description: str | None = None, br_code: ButtonRequestType = BR_TYPE_OTHER, -) -> None: - return await confirm_value( +) -> Awaitable[None]: + return confirm_value( title, data, description or "", @@ -864,17 +864,17 @@ def confirm_value( ) -async def confirm_properties( +def confirm_properties( br_type: str, title: str, props: Iterable[PropertyType], hold: bool = False, br_code: ButtonRequestType = ButtonRequestType.ConfirmOutput, -) -> None: +) -> Awaitable[None]: # Monospace flag for values that are bytes. items = [(prop[0], prop[1], isinstance(prop[1], bytes)) for prop in props] - await raise_if_not_confirmed( + return raise_if_not_confirmed( interact( RustLayout( trezorui2.confirm_properties( @@ -889,7 +889,7 @@ async def confirm_properties( ) -async def confirm_total( +def confirm_total( total_amount: str, fee_amount: str, title: str | None = None, @@ -900,7 +900,7 @@ async def confirm_total( fee_rate_amount: str | None = None, br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, -) -> None: +) -> Awaitable[None]: title = title or TR.words__title_summary # def_arg total_label = total_label or TR.send__total_amount # def_arg fee_label = fee_label or TR.send__incl_transaction_fee # def_arg @@ -918,7 +918,7 @@ async def confirm_total( if fee_rate_amount: fee_items.append((TR.confirm_total__fee_rate, fee_rate_amount)) - await raise_if_not_confirmed( + return raise_if_not_confirmed( RustLayout( trezorui2.flow_confirm_summary( title=title, @@ -932,18 +932,18 @@ async def confirm_total( ) -async def confirm_summary( +def confirm_summary( items: Iterable[tuple[str, str]], title: str | None = None, info_items: Iterable[tuple[str, str]] | None = None, info_title: str | None = None, br_type: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, -) -> None: +) -> Awaitable[None]: # TODO: info_title title = title or TR.words__title_summary # def_arg - await raise_if_not_confirmed( + return raise_if_not_confirmed( RustLayout( trezorui2.flow_confirm_summary( title=title, @@ -1051,7 +1051,7 @@ async def confirm_ethereum_staking_tx( br_code=br_code, ) - async def confirm_solana_tx( + def confirm_solana_tx( amount: str, fee: str, items: Iterable[tuple[str, str]], @@ -1059,12 +1059,12 @@ async def confirm_solana_tx( fee_title: str | None = None, br_type: str = "confirm_solana_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, - ): + ) -> Awaitable[None]: amount_title = ( amount_title if amount_title is not None else f"{TR.words__amount}:" ) # def_arg fee_title = fee_title or TR.words__fee # def_arg - await confirm_summary( + return confirm_summary( ((amount_title, amount), (fee_title, fee)), info_items=items, br_type=br_type, @@ -1072,8 +1072,8 @@ async def confirm_solana_tx( ) -async def confirm_joint_total(spending_amount: str, total_amount: str) -> None: - await confirm_summary( +def confirm_joint_total(spending_amount: str, total_amount: str) -> Awaitable[None]: + return confirm_summary( items=[ (TR.send__you_are_contributing, spending_amount), (TR.send__to_the_total_amount, total_amount), @@ -1084,7 +1084,7 @@ async def confirm_joint_total(spending_amount: str, total_amount: str) -> None: ) -async def confirm_metadata( +def confirm_metadata( br_type: str, title: str, content: str, @@ -1092,9 +1092,9 @@ async def confirm_metadata( br_code: ButtonRequestType = ButtonRequestType.SignTx, hold: bool = False, verb: str | None = None, -) -> None: +) -> Awaitable[None]: verb = verb or TR.buttons__continue # def_arg - await confirm_action( + return confirm_action( br_type, title=title, action="", @@ -1106,8 +1106,8 @@ async def confirm_metadata( ) -async def confirm_replacement(title: str, txid: str) -> None: - await confirm_blob( +def confirm_replacement(title: str, txid: str) -> Awaitable[None]: + return confirm_blob( "confirm_replacement", title, txid, @@ -1187,13 +1187,13 @@ async def with_info( return result -async def confirm_modify_fee( +def confirm_modify_fee( title: str, sign: int, user_fee_change: str, total_fee_new: str, fee_rate_amount: str | None = None, -) -> None: +) -> Awaitable[None]: fee_layout = RustLayout( trezorui2.confirm_modify_fee( title=title, @@ -1212,13 +1212,13 @@ async def confirm_modify_fee( items=items, ) ) - await raise_if_not_confirmed( + return raise_if_not_confirmed( with_info(fee_layout, info_layout, "modify_fee", ButtonRequestType.SignTx) ) -async def confirm_coinjoin(max_rounds: int, max_fee_per_vbyte: str) -> None: - await raise_if_not_confirmed( +def confirm_coinjoin(max_rounds: int, max_fee_per_vbyte: str) -> Awaitable[None]: + return raise_if_not_confirmed( interact( RustLayout( trezorui2.confirm_coinjoin( @@ -1233,10 +1233,10 @@ async def confirm_coinjoin(max_rounds: int, max_fee_per_vbyte: str) -> None: # TODO cleanup @ redesign -async def confirm_sign_identity( +def confirm_sign_identity( proto: str, identity: str, challenge_visual: str | None -) -> None: - await confirm_blob( +) -> Awaitable[None]: + return confirm_blob( "sign_identity", f"{TR.words__sign} {proto}", identity, @@ -1326,7 +1326,7 @@ async def confirm_signverify( address_layout.request_complete_repaint() -async def show_error_popup( +def show_error_popup( title: str, description: str, subtitle: str | None = None, @@ -1334,13 +1334,13 @@ async def show_error_popup( *, button: str = "", timeout_ms: int = 0, -) -> None: +) -> Awaitable[None]: if not button and not timeout_ms: raise ValueError("Either button or timeout_ms must be set") if subtitle: title += f"\n{subtitle}" - await RustLayout( + return RustLayout( trezorui2.show_error( title=title, description=description.format(description_param), @@ -1417,7 +1417,7 @@ async def request_pin_on_device( async def confirm_reenter_pin( is_wipe_code: bool = False, ) -> None: - """Not supported for TT.""" + """Not supported for Mercury.""" pass @@ -1444,14 +1444,14 @@ async def wipe_code_same_as_pin_popup() -> None: ) -async def confirm_set_new_pin( +def confirm_set_new_pin( br_type: str, title: str, description: str, information: str, br_code: ButtonRequestType = BR_TYPE_OTHER, -) -> None: - await raise_if_not_confirmed( +) -> Awaitable[None]: + return raise_if_not_confirmed( interact( RustLayout( trezorui2.flow_confirm_set_new_pin(title=title, description=description) @@ -1462,8 +1462,8 @@ async def confirm_set_new_pin( ) -async def confirm_firmware_update(description: str, fingerprint: str) -> None: - await raise_if_not_confirmed( +def confirm_firmware_update(description: str, fingerprint: str) -> Awaitable[None]: + return raise_if_not_confirmed( interact( RustLayout( trezorui2.confirm_firmware_update( From 25a9ef3cf551865e269909e28751fe5fb306eb31 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 3 Jun 2024 14:36:45 +0200 Subject: [PATCH 243/626] feat(core/ui): info screens before ShareWords Inform the user about possible repeated words in 1-of-1 SLIP39. Instruct the user to "repeat for all shares". [no changelog] --- core/embed/rust/librust_qstr.h | 2 ++ .../generated/translated_string.rs | 6 +++++ .../ui/model_mercury/flow/show_share_words.rs | 22 ++++++++++++------- .../embed/rust/src/ui/model_mercury/layout.rs | 2 +- core/mocks/generated/trezorui2.pyi | 2 +- core/mocks/trezortranslate_keys.pyi | 2 ++ core/src/trezor/ui/layouts/mercury/reset.py | 8 ++++++- core/translations/en.json | 4 +++- core/translations/order.json | 4 +++- core/translations/signatures.json | 6 ++--- tests/input_flows.py | 4 +++- 11 files changed, 45 insertions(+), 17 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 5fc2d0da5b..3640e9ef84 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -502,6 +502,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__only_one_share_will_be_created; MP_QSTR_reset__recovery_share_title_template; MP_QSTR_reset__recovery_wallet_backup_title; + MP_QSTR_reset__repeat_for_all_shares; MP_QSTR_reset__required_number_of_groups; MP_QSTR_reset__select_correct_word; MP_QSTR_reset__select_threshold; @@ -541,6 +542,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__tos_link; MP_QSTR_reset__total_number_of_shares_in_group_template; MP_QSTR_reset__use_your_backup; + MP_QSTR_reset__words_may_repeat; MP_QSTR_reset__words_written_down_template; MP_QSTR_reset__write_down_words_template; MP_QSTR_reset__wrong_word_selected; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index e037ae6237..476d249a5c 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1334,6 +1334,8 @@ pub enum TranslatedString { recovery__unlock_repeated_backup = 934, // "Create additional backup?" recovery__unlock_repeated_backup_verb = 935, // "Unlock backup" homescreen__set_default = 936, // "Do you really want to set default homescreen image?" + reset__words_may_repeat = 937, // "Words may repeat." + reset__repeat_for_all_shares = 938, // "Repeat for all shares." } impl TranslatedString { @@ -2663,6 +2665,8 @@ impl TranslatedString { Self::recovery__unlock_repeated_backup => "Create additional backup?", Self::recovery__unlock_repeated_backup_verb => "Unlock backup", Self::homescreen__set_default => "Do you really want to set default homescreen image?", + Self::reset__words_may_repeat => "Words may repeat.", + Self::reset__repeat_for_all_shares => "Repeat for all shares.", } } @@ -3993,6 +3997,8 @@ impl TranslatedString { Qstr::MP_QSTR_recovery__unlock_repeated_backup => Some(Self::recovery__unlock_repeated_backup), Qstr::MP_QSTR_recovery__unlock_repeated_backup_verb => Some(Self::recovery__unlock_repeated_backup_verb), Qstr::MP_QSTR_homescreen__set_default => Some(Self::homescreen__set_default), + Qstr::MP_QSTR_reset__words_may_repeat => Some(Self::reset__words_may_repeat), + Qstr::MP_QSTR_reset__repeat_for_all_shares => Some(Self::reset__repeat_for_all_shares), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index e016aec4e7..96e0bd3174 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -1,13 +1,13 @@ use crate::{ error, - micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + micropython::{iter::IterBuf, map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ button_request::ButtonRequestCode, component::{ swipe_detect::SwipeSettings, - text::paragraphs::{Paragraph, Paragraphs}, + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, ButtonRequestExt, ComponentExt, SwipeDirection, }, flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, @@ -24,7 +24,6 @@ use super::super::{ #[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] pub enum ShowShareWords { - // TODO: potentially also add there the 'never put anywhere digital' warning? Instruction, Words, Confirm, @@ -80,16 +79,23 @@ impl ShowShareWords { let subtitle: TString = kwargs.get(Qstr::MP_QSTR_subtitle)?.try_into()?; let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_words)?; let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; - let text_info: TString = kwargs.get(Qstr::MP_QSTR_text_info)?.try_into()?; + let text_info: Obj = kwargs.get(Qstr::MP_QSTR_text_info)?; let text_confirm: TString = kwargs.get(Qstr::MP_QSTR_text_confirm)?.try_into()?; let nwords = share_words_vec.len(); + let mut instructions_paragraphs = ParagraphVecShort::new(); + for item in IterBuf::new().try_iterate(text_info)? { + let text: TString = item.try_into()?; + instructions_paragraphs.add(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, text)); + } + let paragraphs_spacing = 8; let content_instruction = Frame::left_aligned( title, - SwipeContent::new(Paragraphs::new(Paragraph::new( - &theme::TEXT_MAIN_GREY_LIGHT, - text_info, - ))), + SwipeContent::new( + instructions_paragraphs + .into_paragraphs() + .with_spacing(paragraphs_spacing), + ), ) .with_subtitle(TR::words__instructions.into()) .with_footer(TR::instructions__swipe_up.into(), None) diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index fb1581e3fe..48a22a6565 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1688,7 +1688,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// subtitle: str, /// words: Iterable[str], - /// text_info: str, + /// text_info: Iterable[str], /// text_confirm: str, /// ) -> LayoutObj[UiResult]: /// """Show wallet backup words preceded by an instruction screen and followed by diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index caf2c398ef..8318286ab4 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -402,7 +402,7 @@ def flow_show_share_words( title: str, subtitle: str, words: Iterable[str], - text_info: str, + text_info: Iterable[str], text_confirm: str, ) -> LayoutObj[UiResult]: """Show wallet backup words preceded by an instruction screen and followed by diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 701cb3be44..74bd4bf264 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -638,6 +638,7 @@ class TR: reset__only_one_share_will_be_created: str = "Only one share will be created." reset__recovery_share_title_template: str = "Recovery share #{0}" reset__recovery_wallet_backup_title: str = "Wallet backup" + reset__repeat_for_all_shares: str = "Repeat for all shares." reset__required_number_of_groups: str = "The required number of groups for recovery." reset__select_correct_word: str = "Select the correct word for each position." reset__select_threshold: str = "Select the minimum shares required to recover your wallet." @@ -676,6 +677,7 @@ class TR: reset__tos_link: str = "trezor.io/tos" reset__total_number_of_shares_in_group_template: str = "Set the total number of shares in Group {0}." reset__use_your_backup: str = "Use your backup when you need to recover your wallet." + reset__words_may_repeat: str = "Words may repeat." reset__words_written_down_template: str = "I wrote down all {0} words in order." reset__write_down_words_template: str = "Write the following {0} words in order on your wallet backup card." reset__wrong_word_selected: str = "Wrong word selected!" diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index dcfd456881..ef5de17cdb 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -32,7 +32,13 @@ async def show_share_words( group_index + 1, share_index + 1 ) words_count = len(share_words) - text_info = TR.reset__write_down_words_template.format(words_count) + text_info = [TR.reset__write_down_words_template.format(words_count)] + if words_count == 20 and share_index is None: + # 1-of-1 SLIP39: inform the user about repeated words + text_info.append(TR.reset__words_may_repeat) + if share_index == 0: + # regular SLIP39, 1st share + text_info.append(TR.reset__repeat_for_all_shares) text_confirm = TR.reset__words_written_down_template.format(words_count) result = await RustLayout( diff --git a/core/translations/en.json b/core/translations/en.json index 841f6920d4..f04fe0045d 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -642,6 +642,7 @@ "reset__only_one_share_will_be_created": "Only one share will be created.", "reset__recovery_share_title_template": "Recovery share #{0}", "reset__recovery_wallet_backup_title": "Wallet backup", + "reset__repeat_for_all_shares": "Repeat for all shares.", "reset__required_number_of_groups": "The required number of groups for recovery.", "reset__select_correct_word": "Select the correct word for each position.", "reset__select_threshold": "Select the minimum shares required to recover your wallet.", @@ -680,6 +681,7 @@ "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Set the total number of shares in Group {0}.", "reset__use_your_backup": "Use your backup when you need to recover your wallet.", + "reset__words_may_repeat": "Words may repeat.", "reset__words_written_down_template": "I wrote down all {0} words in order.", "reset__write_down_words_template": "Write the following {0} words in order on your wallet backup card.", "reset__wrong_word_selected": "Wrong word selected!", @@ -942,4 +944,4 @@ "words__writable": "Writable", "words__yes": "Yes" } -} \ No newline at end of file +} diff --git a/core/translations/order.json b/core/translations/order.json index 54dd2a1b68..b42c337a07 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -935,5 +935,7 @@ "933": "recovery__title_unlock_repeated_backup", "934": "recovery__unlock_repeated_backup", "935": "recovery__unlock_repeated_backup_verb", - "936": "homescreen__set_default" + "936": "homescreen__set_default", + "937": "reset__words_may_repeat", + "938": "reset__repeat_for_all_shares" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 32d271486a..eb05fe000c 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "7a115e582a5f5f09b1850946030762360f55e516a60cf960dffc9ba174c2e4d2", - "datetime": "2024-06-02T11:07:12.183601", - "commit": "66496206ccbe9583203fbfebf8c9222e8c6379b8" + "merkle_root": "405ce2be8dcb492a1d4b25ec8aaeaa9914ff88594151beaceea52315172b11d0", + "datetime": "2024-06-03T12:40:07.498873", + "commit": "2ac4967ef190dac1fe238cc00878ff2d08e17bb5" }, "history": [ { diff --git a/tests/input_flows.py b/tests/input_flows.py index aba5d4d08b..f2b7babb18 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -1554,7 +1554,9 @@ def input_flow_t3t1(self) -> BRGeneratorType: # 6. threshold info # 7. Set & confirm threshold value # 8. Confirm show seeds - yield from click_through(self.debug, screens=9, code=B.ResetDevice) + # 9. Warning + # 10. Instructions + yield from click_through(self.debug, screens=10, code=B.ResetDevice) # Mnemonic phrases self.mnemonics = yield from load_N_shares(self.debug, 5) From fd59c2ce887d13691f5c6c7d360886d1afa49a37 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 4 Jun 2024 01:24:09 +0200 Subject: [PATCH 244/626] feat(core/ui): T3T1 backup cannot be skipped This commit disallows the user to exit backup flow once initiated. It also ensurer the intro screen is shown when initiating backup via protobuf msg after it was previously skipped during wallet creation. [no changelog] --- .../ui/model_mercury/flow/prompt_backup.rs | 10 +++------ .../ui/model_mercury/flow/request_number.rs | 5 +---- .../ui/model_mercury/flow/show_share_words.rs | 6 +++++- .../embed/rust/src/ui/model_mercury/layout.rs | 1 + core/mocks/generated/trezorui2.pyi | 1 + .../apps/management/reset_device/__init__.py | 17 +++++++++++++-- .../apps/management/reset_device/layout.py | 15 ++++++++----- .../src/trezor/ui/layouts/mercury/__init__.py | 1 - core/src/trezor/ui/layouts/mercury/reset.py | 21 +++++++++++++++++++ core/src/trezor/ui/layouts/tr/reset.py | 19 ++++++++++++++++- core/src/trezor/ui/layouts/tt/reset.py | 21 +++++++++++++++++++ tests/input_flows.py | 2 +- .../test_shamir_persistence.py | 4 ++-- 13 files changed, 99 insertions(+), 24 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index fbce08f018..ba2b43bb9b 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -97,13 +97,9 @@ pub extern "C" fn new_prompt_backup(n_args: usize, args: *const Obj, kwargs: *mu impl PromptBackup { fn new_obj(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { let title: TString = TR::backup__title_create_wallet_backup.into(); - let par_array: [Paragraph<'static>; 1] = [Paragraph::new( - &theme::TEXT_MAIN_GREY_LIGHT, - // FIXME: should be "contains X words" but the mnemonic/shares are not yet generated at - // this point. We might need to merge the PromptBackup and ShowShareWords flows - TString::from_str("Your wallet backup contains words in a specific order."), - )]; - let paragraphs = Paragraphs::new(par_array); + let text_intro: TString = TR::backup__it_should_be_backed_up.into(); + + let paragraphs = Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, text_intro)); let content_intro = Frame::left_aligned(title, SwipeContent::new(paragraphs)) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs index df940c9d81..55ffad8a20 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -52,7 +52,6 @@ impl FlowState for RequestNumber { (RequestNumber::Menu, FlowMsg::Choice(0)) => { Decision::Goto(RequestNumber::Info, SwipeDirection::Left) } - (RequestNumber::Menu, FlowMsg::Choice(1)) => Decision::Return(FlowMsg::Cancelled), (RequestNumber::Menu, FlowMsg::Cancelled) => { Decision::Goto(RequestNumber::Number, SwipeDirection::Right) } @@ -119,9 +118,7 @@ impl RequestNumber { let content_menu = Frame::left_aligned( "".into(), - VerticalMenu::empty() - .item(theme::ICON_CHEVRON_RIGHT, TR::buttons__more_info.into()) - .danger(theme::ICON_CANCEL, TR::backup__title_skip.into()), + VerticalMenu::empty().item(theme::ICON_CHEVRON_RIGHT, TR::buttons__more_info.into()), ) .with_cancel_button() .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index 96e0bd3174..37337020f2 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -79,6 +79,10 @@ impl ShowShareWords { let subtitle: TString = kwargs.get(Qstr::MP_QSTR_subtitle)?.try_into()?; let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_words)?; let share_words_vec: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; + let description: Option<TString> = kwargs + .get(Qstr::MP_QSTR_description)? + .try_into_option()? + .and_then(|desc: TString| if desc.is_empty() { None } else { Some(desc) }); let text_info: Obj = kwargs.get(Qstr::MP_QSTR_text_info)?; let text_confirm: TString = kwargs.get(Qstr::MP_QSTR_text_confirm)?.try_into()?; let nwords = share_words_vec.len(); @@ -98,7 +102,7 @@ impl ShowShareWords { ), ) .with_subtitle(TR::words__instructions.into()) - .with_footer(TR::instructions__swipe_up.into(), None) + .with_footer(TR::instructions__swipe_up.into(), description) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Content(_)).then_some(FlowMsg::Confirmed)) .one_button_request(ButtonRequestCode::ResetDevice.with_type("share_words")) diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 48a22a6565..7ea0b5d2a0 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1688,6 +1688,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// title: str, /// subtitle: str, /// words: Iterable[str], + /// description: str, /// text_info: Iterable[str], /// text_confirm: str, /// ) -> LayoutObj[UiResult]: diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 8318286ab4..8a50f68eaf 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -402,6 +402,7 @@ def flow_show_share_words( title: str, subtitle: str, words: Iterable[str], + description: str, text_info: Iterable[str], text_confirm: str, ) -> LayoutObj[UiResult]: diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index 4cf51a3db0..94974dae24 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -126,13 +126,21 @@ async def reset_device(msg: ResetDevice) -> Success: return Success(message="Initialized") +async def _backup_bip39(mnemonic: str) -> None: + words = mnemonic.split() + await layout.show_backup_intro(single_share=True, num_of_words=len(words)) + await layout.show_and_confirm_single_share(words) + + async def _backup_slip39_single( encrypted_master_secret: bytes, extendable: bool ) -> None: mnemonics = _get_slip39_mnemonics(encrypted_master_secret, 1, ((1, 1),), extendable) + words = mnemonics[0][0].split() # for a single 1-of-1 group, we use the same layouts as for BIP39 - await layout.show_and_confirm_mnemonic(mnemonics[0][0]) + await layout.show_backup_intro(single_share=True, num_of_words=len(words)) + await layout.show_and_confirm_single_share(words) async def _backup_slip39_basic( @@ -140,6 +148,8 @@ async def _backup_slip39_basic( ) -> None: group_threshold = 1 + await layout.show_backup_intro(single_share=False) + # get number of shares await layout.slip39_show_checklist(0, advanced=False) share_count = await layout.slip39_prompt_number_of_shares() @@ -165,6 +175,9 @@ async def _backup_slip39_basic( async def _backup_slip39_advanced( encrypted_master_secret: bytes, extendable: bool ) -> None: + + await layout.show_backup_intro(single_share=False) + # get number of groups await layout.slip39_show_checklist(0, advanced=True) groups_count = await layout.slip39_advanced_prompt_number_of_groups() @@ -287,4 +300,4 @@ async def backup_seed(backup_type: BackupType, mnemonic_secret: bytes) -> None: else: await _backup_slip39_basic(mnemonic_secret, extendable) else: - await layout.show_and_confirm_mnemonic(mnemonic_secret.decode()) + await _backup_bip39(mnemonic_secret.decode()) diff --git a/core/src/apps/management/reset_device/layout.py b/core/src/apps/management/reset_device/layout.py index f2958290be..8376d038e3 100644 --- a/core/src/apps/management/reset_device/layout.py +++ b/core/src/apps/management/reset_device/layout.py @@ -3,7 +3,6 @@ from trezor import TR from trezor.enums import ButtonRequestType -from trezor.ui.layouts import show_success from trezor.ui.layouts.reset import ( # noqa: F401 show_share_words, slip39_advanced_prompt_group_threshold, @@ -70,8 +69,8 @@ async def _share_words_confirmed( Return true if the words are confirmed successfully. """ from trezor.ui.layouts.reset import ( - show_share_confirmation_success, show_share_confirmation_failure, + show_share_confirmation_success, ) if await _do_confirm_share_words(share_index, share_words, group_index): @@ -108,6 +107,14 @@ async def _do_confirm_share_words( return True +async def show_backup_intro( + single_share: bool, num_of_words: int | None = None +) -> None: + from trezor.ui.layouts.reset import show_intro_backup + + await show_intro_backup(single_share, num_of_words) + + async def show_backup_warning() -> None: from trezor.ui.layouts.reset import show_warning_backup @@ -124,12 +131,10 @@ async def show_backup_success() -> None: # === -async def show_and_confirm_mnemonic(mnemonic: str) -> None: +async def show_and_confirm_single_share(words: Sequence[str]) -> None: # warn user about mnemonic safety await show_backup_warning() - words = mnemonic.split() - while True: # display paginated mnemonic on the screen await show_share_words(words) diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 5c057ae5e7..e74cc2deb4 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -382,7 +382,6 @@ async def prompt_backup() -> bool: "backup_device", ButtonRequestType.ResetDevice, ) - return result is CONFIRMED diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index ef5de17cdb..e3cc9b0ae2 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -32,12 +32,14 @@ async def show_share_words( group_index + 1, share_index + 1 ) words_count = len(share_words) + description = "" text_info = [TR.reset__write_down_words_template.format(words_count)] if words_count == 20 and share_index is None: # 1-of-1 SLIP39: inform the user about repeated words text_info.append(TR.reset__words_may_repeat) if share_index == 0: # regular SLIP39, 1st share + description = TR.instructions__shares_start_with_1 text_info.append(TR.reset__repeat_for_all_shares) text_confirm = TR.reset__words_written_down_template.format(words_count) @@ -46,6 +48,7 @@ async def show_share_words( title=title, subtitle=subtitle, words=share_words, + description=description, text_info=text_info, text_confirm=text_confirm, ) @@ -304,6 +307,24 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: ) +async def show_intro_backup(single_share: bool, num_of_words: int | None) -> None: + if single_share: + assert num_of_words is not None + description = TR.backup__info_single_share_backup.format(num_of_words) + else: + description = TR.backup__info_multi_share_backup + + await interact( + RustLayout( + trezorui2.show_info( + title=TR.backup__title_create_wallet_backup, description=description + ) + ), + "backup_warning", + ButtonRequestType.ResetDevice, + ) + + async def show_warning_backup() -> None: result = await interact( RustLayout( diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index 2d17232430..13ca822af7 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -6,7 +6,7 @@ from trezor.wire import ActionCancelled from ..common import interact -from . import RustLayout, confirm_action, show_warning, show_success +from . import RustLayout, confirm_action, show_success, show_warning CONFIRMED = trezorui2.CONFIRMED # global_import_cache @@ -254,6 +254,23 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: ) +async def show_intro_backup(single_share: bool, num_of_words: int | None) -> None: + if single_share: + assert num_of_words is not None + description = TR.backup__info_single_share_backup.format(num_of_words) + else: + description = TR.backup__info_multi_share_backup + + await confirm_action( + "backup_warning", + title=TR.backup__title_backup_wallet, + verb=TR.buttons__continue, + description=description, + verb_cancel=None, + br_code=ButtonRequestType.ResetDevice, + ) + + async def show_warning_backup() -> None: await show_warning( "backup_warning", diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index 53c51bbc4f..5794c27792 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -309,6 +309,27 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: ) +async def show_intro_backup(single_share: bool, num_of_words: int | None) -> None: + if single_share: + assert num_of_words is not None + description = TR.backup__info_single_share_backup.format(num_of_words) + else: + description = TR.backup__info_multi_share_backup + + await interact( + RustLayout( + trezorui2.show_info( + title="", + button=TR.buttons__continue, + description=description, + allow_cancel=False, + ) + ), + "backup_warning", + ButtonRequestType.ResetDevice, + ) + + async def show_warning_backup() -> None: result = await interact( RustLayout( diff --git a/tests/input_flows.py b/tests/input_flows.py index f2b7babb18..56a7e201bf 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -1310,7 +1310,7 @@ def input_flow_t3t1(self) -> BRGeneratorType: # 1. Confirm Reset x3 # 2. Backup your seed # 3. Confirm warning - yield from click_through(self.debug, screens=4, code=B.ResetDevice) + yield from click_through(self.debug, screens=5, code=B.ResetDevice) # mnemonic phrases and rest self.mnemonic = yield from get_mnemonic_and_confirm_success(self.debug) diff --git a/tests/persistence_tests/test_shamir_persistence.py b/tests/persistence_tests/test_shamir_persistence.py index aa958d49e7..bfe3f5b4f5 100644 --- a/tests/persistence_tests/test_shamir_persistence.py +++ b/tests/persistence_tests/test_shamir_persistence.py @@ -138,7 +138,7 @@ def test_recovery_on_old_wallet(core_emulator: Emulator): words = first_share.split(" ") # start entering first share - assert "the first 2-4 letters" in debug.read_layout().text_content() + assert "Enter each word of your wallet backup" in debug.read_layout().text_content() debug.press_yes() assert debug.wait_layout().main_component() == "MnemonicKeyboard" @@ -176,7 +176,7 @@ def test_recovery_multiple_resets(core_emulator: Emulator): def enter_shares_with_restarts(debug: DebugLink) -> None: shares = MNEMONIC_SLIP39_ADVANCED_20 layout = debug.read_layout() - expected_text = "the first 2-4 letters" + expected_text = "Enter each word of your wallet backup" remaining = len(shares) for share in shares: assert expected_text in layout.text_content() From e30de62adcc3d24137c756081c6d8d13d09f75b9 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 4 Jun 2024 15:40:42 +0200 Subject: [PATCH 245/626] tests: fix input_flows Reset/recovery tests after adding Wallet created screen and separate backup intro. Regen signatures.json after rebase. [no changelog] --- core/embed/rust/src/ui/model_tr/layout.rs | 2 +- core/src/trezor/ui/layouts/tt/recovery.py | 2 +- core/translations/signatures.json | 6 +- tests/click_tests/recovery.py | 20 +- tests/click_tests/reset.py | 23 ++- .../click_tests/test_backup_slip39_custom.py | 10 +- tests/click_tests/test_repeated_backup.py | 6 + tests/click_tests/test_reset_bip39.py | 3 + .../click_tests/test_reset_slip39_advanced.py | 3 + tests/click_tests/test_reset_slip39_basic.py | 3 + tests/input_flows.py | 191 +++++++++++------- 11 files changed, 178 insertions(+), 91 deletions(-) diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 8f4033ffcf..d606bc2e4c 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -1407,7 +1407,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut paragraphs .add(Paragraph::new( &theme::TEXT_NORMAL, - TR::recovery__only_first_n_letters, + TR::recovery__enter_each_word, )) .add(Paragraph::new( &theme::TEXT_NORMAL, diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index 0e266ab65b..98bd6c8c8b 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -123,7 +123,7 @@ async def continue_recovery( if show_info: # Show this just one-time - description = TR.recovery__only_first_n_letters + description = TR.recovery__enter_each_word else: description = subtext or "" diff --git a/core/translations/signatures.json b/core/translations/signatures.json index eb05fe000c..bce7a39353 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "405ce2be8dcb492a1d4b25ec8aaeaa9914ff88594151beaceea52315172b11d0", - "datetime": "2024-06-03T12:40:07.498873", - "commit": "2ac4967ef190dac1fe238cc00878ff2d08e17bb5" + "merkle_root": "ba305d41fa4793fc71a2cd124cd9170ce93177f0a749ea0444c2f06cc3a65d2b", + "datetime": "2024-06-05T14:49:38.622932", + "commit": "7322ca7ddb4539885970f4546494369e1ff950f8" }, "history": [ { diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index c6e31027bc..108214929c 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -108,7 +108,10 @@ def select_number_of_words( if debug.model in (models.T2B1,): TR.assert_in(layout.text_content(), "recovery__enter_backup") else: - TR.assert_in(layout.text_content(), "recovery__only_first_n_letters") + TR.assert_in_multiple( + layout.text_content(), + ["recovery__only_first_n_letters", "recovery__enter_each_word"], + ) elif num_of_words in (20, 33): TR.assert_in_multiple( layout.text_content(), @@ -116,12 +119,17 @@ def select_number_of_words( "recovery__enter_backup", "recovery__enter_any_share", "recovery__only_first_n_letters", + "recovery__enter_each_word", ], ) else: # BIP-39 TR.assert_in_multiple( layout.text_content(), - ["recovery__enter_backup", "recovery__only_first_n_letters"], + [ + "recovery__enter_backup", + "recovery__only_first_n_letters", + "recovery__enter_each_word", + ], ) @@ -163,6 +171,7 @@ def enter_shares( "recovery__enter_backup", "recovery__enter_any_share", "recovery__only_first_n_letters", + "recovery__enter_each_word", text, ], ) @@ -247,7 +256,12 @@ def prepare_enter_seed( ) -> None: TR.assert_in_multiple( debug.read_layout().text_content(), - ["recovery__enter_backup", "recovery__only_first_n_letters", layout_text], + [ + "recovery__enter_backup", + "recovery__only_first_n_letters", + "recovery__enter_each_word", + layout_text, + ], ) if debug.model in (models.T2T1,): debug.click(buttons.OK, wait=True) diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index 475af9a2f8..47a7e48f23 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -125,7 +125,7 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: debug.swipe_up(wait=True) layout = debug.wait_layout() - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): TR.assert_template(layout.text_content(), "reset__select_word_x_of_y_template") for _ in range(3): # "Select word 3 of 20" @@ -139,11 +139,22 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: ] wanted_word = words[word_pos - 1].lower() button_pos = btn_texts.index(wanted_word) - if debug.model is models.T3T1: - btn_positions = buttons.VERTICAL_MENU - else: - btn_positions = buttons.RESET_WORD_CHECK - layout = debug.click(btn_positions[button_pos], wait=True) + layout = debug.click(buttons.RESET_WORD_CHECK[button_pos], wait=True) + elif debug.model in (models.T3T1,): + TR.assert_template(layout.subtitle(), "reset__select_word_x_of_y_template") + for _ in range(3): + # "Select word 3 of 20" + # ^ + word_pos_match = re.search(r"\d+", debug.wait_layout().subtitle()) + assert word_pos_match is not None + word_pos = int(word_pos_match.group(0)) + # Unifying both the buttons and words to lowercase + btn_texts = [ + text.lower() for text in layout.tt_check_seed_button_contents() + ] + wanted_word = words[word_pos - 1].lower() + button_pos = btn_texts.index(wanted_word) + layout = debug.click(buttons.VERTICAL_MENU[button_pos], wait=True) elif debug.model in (models.T2B1,): TR.assert_in(layout.text_content(), "reset__select_correct_word") layout = debug.press_right(wait=True) diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index 66c0d80338..bb7557b03a 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -18,7 +18,7 @@ import pytest -from trezorlib import device, messages +from trezorlib import device, messages, models from ..common import EXTERNAL_ENTROPY, WITH_MOCK_URANDOM, generate_entropy from . import reset @@ -78,6 +78,9 @@ def test_backup_slip39_custom( if share_count > 1: # confirm shamir warning reset.confirm_read(debug, middle_r=True) + else: + # confirm backup intro + reset.confirm_read(debug, middle_r=True) all_words: list[str] = [] for _ in range(share_count): @@ -93,7 +96,10 @@ def test_backup_slip39_custom( all_words.append(" ".join(words)) # confirm backup done - reset.confirm_read(debug) + if debug.model is models.T3T1 and share_count > 1: + reset.confirm_read(debug) + elif debug.model != models.T3T1: + reset.confirm_read(debug) # generate secret locally internal_entropy = debug.state().reset_entropy diff --git a/tests/click_tests/test_repeated_backup.py b/tests/click_tests/test_repeated_backup.py index 8568e1aff8..ed233269e9 100644 --- a/tests/click_tests/test_repeated_backup.py +++ b/tests/click_tests/test_repeated_backup.py @@ -55,6 +55,9 @@ def test_repeated_backup( # confirm back up reset.confirm_read(debug) + # confirm backup intro + reset.confirm_read(debug) + # confirm backup warning reset.confirm_read(debug, middle_r=True) @@ -138,6 +141,9 @@ def test_repeated_backup( debug.wait_layout() + # confirm backup intro + reset.confirm_read(debug) + # confirm checklist reset.confirm_read(debug) diff --git a/tests/click_tests/test_reset_bip39.py b/tests/click_tests/test_reset_bip39.py index 9e845f260b..5d15790d63 100644 --- a/tests/click_tests/test_reset_bip39.py +++ b/tests/click_tests/test_reset_bip39.py @@ -52,6 +52,9 @@ def test_reset_bip39(device_handler: "BackgroundDeviceHandler"): # confirm back up reset.confirm_read(debug) + # confirm backup intro + reset.confirm_read(debug, middle_r=True) + # confirm backup warning reset.confirm_read(debug, middle_r=True) diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index 0e25d2a1da..b7d35c4fae 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -64,6 +64,9 @@ def test_reset_slip39_advanced( # confirm back up reset.confirm_read(debug) + # confirm backup intro + reset.confirm_read(debug) + # confirm checklist reset.confirm_read(debug) diff --git a/tests/click_tests/test_reset_slip39_basic.py b/tests/click_tests/test_reset_slip39_basic.py index 83c01651d8..a58e9eb147 100644 --- a/tests/click_tests/test_reset_slip39_basic.py +++ b/tests/click_tests/test_reset_slip39_basic.py @@ -61,6 +61,9 @@ def test_reset_slip39_basic( # confirm back up reset.confirm_read(debug) + # confirm backup intro + reset.confirm_read(debug) + # confirm checklist reset.confirm_read(debug) diff --git a/tests/input_flows.py b/tests/input_flows.py index 56a7e201bf..275a6442c0 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -1275,8 +1275,9 @@ def __init__(self, client: Client): self.mnemonic = None def input_flow_common(self) -> BRGeneratorType: - # 1. Confirm Reset - yield from click_through(self.debug, screens=1, code=B.ResetDevice) + # 1. Backup intro + # 2. Backup warning + yield from click_through(self.debug, screens=2, code=B.ResetDevice) # mnemonic phrases and rest self.mnemonic = yield from get_mnemonic_and_confirm_success(self.debug) @@ -1291,8 +1292,9 @@ def __init__(self, client: Client): def input_flow_tt(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed - # 3. Confirm warning - yield from click_through(self.debug, screens=3, code=B.ResetDevice) + # 3. Backup intro + # 4. Confirm warning + yield from click_through(self.debug, screens=4, code=B.ResetDevice) # mnemonic phrases and rest self.mnemonic = yield from get_mnemonic_and_confirm_success(self.debug) @@ -1300,16 +1302,19 @@ def input_flow_tt(self) -> BRGeneratorType: def input_flow_tr(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed - # 3. Confirm warning - yield from click_through(self.debug, screens=3, code=B.ResetDevice) + # 3. Backup intro + # 4. Confirm warning + yield from click_through(self.debug, screens=4, code=B.ResetDevice) # mnemonic phrases and rest self.mnemonic = yield from get_mnemonic_and_confirm_success(self.debug) def input_flow_t3t1(self) -> BRGeneratorType: - # 1. Confirm Reset x3 - # 2. Backup your seed - # 3. Confirm warning + # 1. Confirm Reset + # 2. Wallet created + # 3. Backup your seed + # 4. Backup intro + # 5. Confirm warning yield from click_through(self.debug, screens=5, code=B.ResetDevice) # mnemonic phrases and rest @@ -1345,6 +1350,10 @@ def input_flow_common(self) -> BRGeneratorType: assert br.code == B.ResetDevice self.debug.press_yes() + br = yield # Backup intro + assert br.code == B.ResetDevice + self.debug.press_yes() + # mnemonic phrases self.mnemonic = yield from read_and_confirm_mnemonic(self.debug) @@ -1363,11 +1372,12 @@ def __init__(self, client: Client): self.mnemonic = None def input_flow_common(self) -> BRGeneratorType: - screens = 4 if self.debug.model is models.T3T1 else 3 + screens = 5 if self.debug.model is models.T3T1 else 4 # 1. Confirm Reset - # 1a. (T3T1) done - # 2. Backup your seed - # 3. Confirm warning + # 1a. (T3T1) Walet Creation done + # 2. Confirm backup prompt + # 3. Backup your seed + # 4. Confirm warning yield from click_through(self.debug, screens=screens, code=B.ResetDevice) # mnemonic phrases, wrong answer @@ -1417,21 +1427,23 @@ def __init__(self, client: Client, click_info: bool): self.click_info = click_info def input_flow_tt(self) -> BRGeneratorType: - yield # 1. Checklist + yield # 1. Backup intro + self.debug.press_yes() + yield # 2. Checklist self.debug.press_yes() if self.click_info: yield from click_info_button_tt(self.debug) - yield # 2. Number of shares (5) + yield # 3. Number of shares (5) self.debug.press_yes() - yield # 3. Checklist + yield # 4. Checklist self.debug.press_yes() if self.click_info: yield from click_info_button_tt(self.debug) - yield # 4. Threshold (3) + yield # 5. Threshold (3) self.debug.press_yes() - yield # 5. Checklist + yield # 6. Checklist self.debug.press_yes() - yield # 6. Confirm show seeds + yield # 7. Confirm show seeds self.debug.press_yes() # Mnemonic phrases @@ -1442,21 +1454,23 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_tr(self) -> BRGeneratorType: - yield # 1. Checklist + yield # 1. Backup intro + self.debug.press_yes() + yield # 2. Checklist self.debug.press_yes() - yield # 1.5 Number of shares info + yield # 2.5 Number of shares info self.debug.press_yes() - yield # 2. Number of shares (5) + yield # 3. Number of shares (5) self.debug.input("5") - yield # 3. Checklist + yield # 4. Checklist self.debug.press_yes() - yield # 3.5 Threshold info + yield # 4.5 Threshold info self.debug.press_yes() - yield # 4. Threshold (3) + yield # 5. Threshold (3) self.debug.input("3") - yield # 5. Checklist + yield # 6. Checklist self.debug.press_yes() - yield # 6. Confirm show seeds + yield # 7. Confirm show seeds self.debug.press_yes() # Mnemonic phrases @@ -1467,22 +1481,25 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_t3t1(self) -> BRGeneratorType: - yield # 1. Checklist + yield # 1. Backup intro + self.debug.wait_layout() + self.debug.swipe_up() + yield # 2. Checklist self.debug.wait_layout() self.debug.swipe_up(wait=True) if self.click_info: click_info_button_mercury(self.debug) - yield # 2. Number of shares (5) + yield # 3. Number of shares (5) self.debug.swipe_up() - yield # 3. Checklist + yield # 4. Checklist self.debug.swipe_up(wait=True) if self.click_info: click_info_button_mercury(self.debug) - yield # 4. Threshold (3) + yield # 5. Threshold (3) self.debug.swipe_up() - yield # 5. Checklist + yield # 6. Checklist self.debug.swipe_up() - yield # 6. Confirm show seeds + yield # 7. Confirm show seeds self.debug.swipe_up() # Mnemonic phrases @@ -1501,13 +1518,14 @@ def __init__(self, client: Client): def input_flow_tt(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed - # 3. Confirm warning - # 4. shares info - # 5. Set & Confirm number of shares - # 6. threshold info - # 7. Set & confirm threshold value - # 8. Confirm show seeds - yield from click_through(self.debug, screens=8, code=B.ResetDevice) + # 3. Backup intro + # 4. Confirm warning + # 5. shares info + # 6. Set & Confirm number of shares + # 7. threshold info + # 8. Set & confirm threshold value + # 9. Confirm show seeds + yield from click_through(self.debug, screens=9, code=B.ResetDevice) # Mnemonic phrases self.mnemonics = yield from load_N_shares(self.debug, 5) @@ -1521,6 +1539,8 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_yes() yield # Backup your seed self.debug.press_yes() + yield # Backup intro + self.debug.press_yes() yield # Checklist self.debug.press_yes() yield # Number of shares info @@ -1547,9 +1567,9 @@ def input_flow_tr(self) -> BRGeneratorType: def input_flow_t3t1(self) -> BRGeneratorType: # 1. Confirm Reset - # 2. Backup your seed - # 3. Confirm warning - # 4. shares info + # 2. Wallet Created + # 3. Backup your seed + # 4. Backup intro # 5. Set & Confirm number of shares # 6. threshold info # 7. Set & confirm threshold value @@ -1576,6 +1596,9 @@ def input_flow_tt(self) -> BRGeneratorType: if self.share_count > 1: yield # Checklist self.debug.press_yes() + else: + yield # Backup intro + self.debug.press_yes() yield # Confirm show seeds self.debug.press_yes() @@ -1591,6 +1614,9 @@ def input_flow_tr(self) -> BRGeneratorType: if self.share_count > 1: yield # Checklist self.debug.press_yes() + else: + yield # Backup intro + self.debug.press_yes() yield # Confirm show seeds self.debug.press_yes() @@ -1606,6 +1632,9 @@ def input_flow_t3t1(self) -> BRGeneratorType: if self.share_count > 1: yield # Checklist self.debug.press_yes() + else: + yield # Backup intro + self.debug.press_yes() yield # Confirm show seeds self.debug.press_yes() @@ -1643,19 +1672,21 @@ def __init__(self, client: Client, click_info: bool): self.click_info = click_info def input_flow_tt(self) -> BRGeneratorType: - yield # 1. Checklist + yield # 1. Backup intro + self.debug.press_yes() + yield # 2. Checklist self.debug.press_yes() if self.click_info: yield from click_info_button_tt(self.debug) - yield # 2. Set and confirm group count + yield # 3. Set and confirm group count self.debug.press_yes() - yield # 3. Checklist + yield # 4. Checklist self.debug.press_yes() if self.click_info: yield from click_info_button_tt(self.debug) - yield # 4. Set and confirm group threshold + yield # 5. Set and confirm group threshold self.debug.press_yes() - yield # 5. Checklist + yield # 6. Checklist self.debug.press_yes() for _ in range(5): # for each of 5 groups if self.click_info: @@ -1677,15 +1708,17 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_tr(self) -> BRGeneratorType: - yield # 1. Checklist + yield # 1. Backup intro + self.debug.press_yes() + yield # 2. Checklist self.debug.press_yes() - yield # 2. Set and confirm group count + yield # 3. Set and confirm group count self.debug.input("5") - yield # 3. Checklist + yield # 4. Checklist self.debug.press_yes() - yield # 4. Set and confirm group threshold + yield # 5. Set and confirm group threshold self.debug.input("3") - yield # 5. Checklist + yield # 6. Checklist self.debug.press_yes() for _ in range(5): # for each of 5 groups yield # Number of shares info @@ -1707,19 +1740,22 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_t3t1(self) -> BRGeneratorType: - yield # 1. Checklist + yield # 1. Backup intro + self.debug.wait_layout() + self.debug.swipe_up() + yield # 2. Checklist self.debug.swipe_up(wait=True) if self.click_info: click_info_button_mercury(self.debug) - yield # 2. Set and confirm group count + yield # 3. Set and confirm group count self.debug.swipe_up() - yield # 3. Checklist + yield # 4. Checklist self.debug.swipe_up(wait=True) if self.click_info: click_info_button_mercury(self.debug) - yield # 4. Set and confirm group threshold + yield # 5. Set and confirm group threshold self.debug.swipe_up() - yield # 5. Checklist + yield # 6. Checklist self.debug.swipe_up(wait=True) for _i in range(5): # for each of 5 groups if self.click_info: @@ -1750,16 +1786,17 @@ def __init__(self, client: Client, click_info: bool): def input_flow_tt(self) -> BRGeneratorType: # 1. Confirm Reset # 2. Backup your seed - # 3. Confirm warning - # 4. shares info - # 5. Set & Confirm number of groups - # 6. threshold info - # 7. Set & confirm group threshold value - # 8-17: for each of 5 groups: + # 3. Backup intro + # 4. Confirm warning + # 5. shares info + # 6. Set & Confirm number of groups + # 7. threshold info + # 8. Set & confirm group threshold value + # 9-18: for each of 5 groups: # 1. Set & Confirm number of shares # 2. Set & confirm share threshold value - # 18. Confirm show seeds - yield from click_through(self.debug, screens=18, code=B.ResetDevice) + # 19. Confirm show seeds + yield from click_through(self.debug, screens=19, code=B.ResetDevice) # Mnemonic phrases - show & confirm shares for all groups self.mnemonics = yield from load_5_groups_5_shares(self.debug) @@ -1773,6 +1810,8 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_yes() yield # Wallet creation self.debug.press_yes() + yield # Backup intro + self.debug.press_yes() yield # Checklist self.debug.press_yes() yield # Set and confirm group count @@ -1804,17 +1843,19 @@ def input_flow_tr(self) -> BRGeneratorType: def input_flow_t3t1(self) -> BRGeneratorType: # 1. Confirm Reset - # 2. Backup your seed - # 3. Confirm warning - # 4. shares info - # 5. Set & Confirm number of groups - # 6. threshold info - # 7. Set & confirm group threshold value - # 8-17: for each of 5 groups: + # 2. Wallet Created + # 3. Prompt Backup + # 4. Backup intro + # 5. Confirm warning + # 6. shares info + # 7. Set & Confirm number of groups + # 8. threshold info + # 9. Set & confirm group threshold value + # 10-19: for each of 5 groups: # 1. Set & Confirm number of shares # 2. Set & confirm share threshold value - # 18. Confirm show seeds - yield from click_through(self.debug, screens=19, code=B.ResetDevice) + # 20. Confirm show seeds + yield from click_through(self.debug, screens=20, code=B.ResetDevice) # Mnemonic phrases - show & confirm shares for all groups self.mnemonics = yield from load_5_groups_5_shares(self.debug) From 7b291725e29023099b35f8d09c85ee42d765e894 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 5 Jun 2024 19:04:20 +0200 Subject: [PATCH 246/626] fix: TypeError from SwipeUpScreen This allows cancellable homescreen. This commit also adds cancel to recovery homescreen. --- .../src/ui/model_mercury/component/swipe_content.rs | 4 ++++ .../src/ui/model_mercury/component/swipe_up_screen.rs | 4 ++++ core/embed/rust/src/ui/model_mercury/layout.rs | 11 +++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs index 1c7adc8687..e3456fb362 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs @@ -113,6 +113,10 @@ impl<T: Component> SwipeContent<T> { ..self } } + + pub fn inner(&self) -> &T { + &self.inner + } } impl<T: Component> Component for SwipeContent<T> { diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index 33c9ebfa44..8011837b56 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -30,6 +30,10 @@ where swipe: SwipeDetect::new(), } } + + pub fn inner(&self) -> &T { + &self.content + } } impl<T: Swipable + Component> Component for SwipeUpScreen<T> { diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 7ea0b5d2a0..b75fcf4782 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -181,10 +181,16 @@ impl ComponentMsgObj for PromptScreen { } } -impl<T: Component + Swipable> ComponentMsgObj for SwipeUpScreen<T> { +impl<T: Component + ComponentMsgObj> ComponentMsgObj for SwipeContent<T> { + fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { + self.inner().msg_try_into_obj(msg) + } +} + +impl<T: Component + ComponentMsgObj + Swipable> ComponentMsgObj for SwipeUpScreen<T> { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { - SwipeUpScreenMsg::Content(_) => Err(Error::TypeError), + SwipeUpScreenMsg::Content(c) => self.inner().msg_try_into_obj(c), SwipeUpScreenMsg::Swiped => Ok(CONFIRMED.as_obj()), } } @@ -1083,6 +1089,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned(notification, SwipeContent::new(paragraphs)) + .with_cancel_button() .with_footer(TR::instructions__swipe_up.into(), None) .with_subtitle(TR::words__instructions.into()) .with_swipe(SwipeDirection::Up, SwipeSettings::default()), From 2c390a2030a5fa9d69fe7b287efa4e85df4dd69a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Wed, 5 Jun 2024 13:04:33 +0200 Subject: [PATCH 247/626] feat(python): add ability to set up a device with SLIP39 "single" --- python/.changelog.d/3868.added | 1 + python/.changelog.d/3868.incompatible | 1 + python/src/trezorlib/cli/device.py | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 python/.changelog.d/3868.added create mode 100644 python/.changelog.d/3868.incompatible diff --git a/python/.changelog.d/3868.added b/python/.changelog.d/3868.added new file mode 100644 index 0000000000..70e92a82bd --- /dev/null +++ b/python/.changelog.d/3868.added @@ -0,0 +1 @@ +Added flag for setting up device using SLIP39 "single". diff --git a/python/.changelog.d/3868.incompatible b/python/.changelog.d/3868.incompatible new file mode 100644 index 0000000000..3b9aaafc21 --- /dev/null +++ b/python/.changelog.d/3868.incompatible @@ -0,0 +1 @@ +Renamed flag used for setting up device using BIP39 to `bip39`. diff --git a/python/src/trezorlib/cli/device.py b/python/src/trezorlib/cli/device.py index f06a4fe2fd..15b5c36274 100644 --- a/python/src/trezorlib/cli/device.py +++ b/python/src/trezorlib/cli/device.py @@ -34,7 +34,8 @@ } BACKUP_TYPE = { - "single": messages.BackupType.Bip39, + "bip39": messages.BackupType.Bip39, + "single": messages.BackupType.Slip39_Single_Extendable, "shamir": messages.BackupType.Slip39_Basic, "advanced": messages.BackupType.Slip39_Advanced, } From ffe07f2ca6231d9f9bb06f132ee0ea65294b26e8 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 5 Jun 2024 17:41:40 +0200 Subject: [PATCH 248/626] feat(core): improve repeated backup * allow upgrading from Single to Basic * do not skip confirmation screen when sending BackupDevice from Suite --- core/src/apps/management/backup_device.py | 95 ++++++++++++++----- .../management/recovery_device/homescreen.py | 21 +--- core/src/storage/device.py | 4 + tests/common.py | 3 + tests/device_tests/test_repeated_backup.py | 49 +++++++++- tests/input_flows.py | 33 ++++++- 6 files changed, 159 insertions(+), 46 deletions(-) diff --git a/core/src/apps/management/backup_device.py b/core/src/apps/management/backup_device.py index 243e50de02..0a6c461190 100644 --- a/core/src/apps/management/backup_device.py +++ b/core/src/apps/management/backup_device.py @@ -1,63 +1,108 @@ from typing import TYPE_CHECKING +import storage.device as storage_device from trezor.enums import BackupType if TYPE_CHECKING: + from typing import Sequence + from trezor.messages import BackupDevice, Success -BAK_T_BIP39 = BackupType.Bip39 # global_import_cache +async def perform_backup( + is_repeated_backup: bool, + group_threshold: int | None = None, + groups: Sequence[tuple[int, int]] = (), +) -> None: + from trezor import TR + from trezor.enums import ButtonRequestType + from trezor.ui.layouts import confirm_action + from trezor.utils import ensure + + from apps.common import backup, backup_types, mnemonic + + from .reset_device import backup_seed, backup_slip39_custom, layout + + # Ask the user to confirm backup. The user can still escape here. + if is_repeated_backup: + await confirm_action( + "confirm_repeated_backup", + TR.recovery__title_unlock_repeated_backup, + description=TR.recovery__unlock_repeated_backup, + br_code=ButtonRequestType.ProtectCall, + verb=TR.recovery__unlock_repeated_backup_verb, + ) + + mnemonic_secret = mnemonic.get_secret() + ensure(mnemonic_secret is not None) # checked at run-time + assert mnemonic_secret is not None # checked at type-check time + backup_type = mnemonic.get_type() + + # upgrade Single to Basic if necessary + if is_repeated_backup and backup_type == BackupType.Slip39_Single_Extendable: + # TODO upgrade to Advanced if appropriate + backup_type = BackupType.Slip39_Basic_Extendable + storage_device.set_backup_type(backup_type) + + # set unfinished flag -- if the process gets interrupted, the unfinished flag stays + if not is_repeated_backup: + storage_device.set_unfinished_backup(True) + + # Deactivate repeated backup, set backed up flag, before showing anything to the + # user. If anything bad happens from now on, the backup counts as "already done". + backup.deactivate_repeated_backup() + storage_device.set_backed_up() + + if group_threshold is not None: + # Parameters provided from host side. + assert backup_types.is_slip39_backup_type(backup_type) + extendable = backup_types.is_extendable_backup_type(backup_type) + # Run the backup process directly. + await backup_slip39_custom(mnemonic_secret, group_threshold, groups, extendable) + else: + # No parameters provided, allow the user to configure them on screen. + await backup_seed(backup_type, mnemonic_secret) + + # If the backup was successful, clear the unfinished flag and show success. + + # (NOTE that if the user manages to enable repeated backup while unfinished flag is + # set, the unfinished flag is cleared here. That is the correct thing to do -- the + # user _has_ finished the backup because they were able to unlock the repeated + # backup -- and now they finished another one.) + storage_device.set_unfinished_backup(False) + await layout.show_backup_success() async def backup_device(msg: BackupDevice) -> Success: - import storage.device as storage_device from trezor import wire from trezor.messages import Success - from apps.common import backup, backup_types, mnemonic - - from .reset_device import backup_seed, backup_slip39_custom, layout + from apps.common import backup, mnemonic # do this early before we show any UI # the homescreen will clear the flag right after its own UI is gone repeated_backup_enabled = backup.repeated_backup_enabled() + is_repeated_backup = repeated_backup_enabled and not storage_device.needs_backup() if not storage_device.is_initialized(): raise wire.NotInitialized("Device is not initialized") if not storage_device.needs_backup() and not repeated_backup_enabled: raise wire.ProcessError("Seed already backed up") - mnemonic_secret, backup_type = mnemonic.get() - if mnemonic_secret is None: - raise RuntimeError - group_threshold = msg.group_threshold groups = [(g.member_threshold, g.member_count) for g in msg.groups] + # validate host-side SLIP39 parameters if group_threshold is not None: if group_threshold < 1: raise wire.DataError("group_threshold must be a positive integer") if len(groups) < group_threshold: raise wire.DataError("Not enough groups provided for group_threshold") - if backup_type == BAK_T_BIP39: + if mnemonic.is_bip39(): raise wire.ProcessError("Expected SLIP39 backup") elif len(groups) > 0: raise wire.DataError("group_threshold is missing") - if not repeated_backup_enabled: - storage_device.set_unfinished_backup(True) - - backup.deactivate_repeated_backup() - storage_device.set_backed_up() - - if group_threshold is not None: - extendable = backup_types.is_extendable_backup_type(backup_type) - await backup_slip39_custom(mnemonic_secret, group_threshold, groups, extendable) - else: - await backup_seed(backup_type, mnemonic_secret) - - storage_device.set_unfinished_backup(False) - - await layout.show_backup_success() + await perform_backup(is_repeated_backup, group_threshold, groups) return Success(message="Seed successfully backed up") diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 3455ccab77..717a62cdc6 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -52,11 +52,10 @@ async def recovery_process() -> Success: async def _continue_repeated_backup() -> None: - from trezor.enums import ButtonRequestType, MessageType - from trezor.ui.layouts import confirm_action + from trezor.enums import MessageType - from apps.common import backup, mnemonic - from apps.management.reset_device import backup_seed + from apps.common import backup + from apps.management.backup_device import perform_backup wire.AVOID_RESTARTING_FOR = ( MessageType.Initialize, @@ -65,19 +64,7 @@ async def _continue_repeated_backup() -> None: ) try: - await confirm_action( - "confirm_repeated_backup", - TR.recovery__title_unlock_repeated_backup, - description=TR.recovery__unlock_repeated_backup, - br_code=ButtonRequestType.ProtectCall, - verb=TR.recovery__unlock_repeated_backup_verb, - ) - - mnemonic_secret, backup_type = mnemonic.get() - if mnemonic_secret is None: - raise RuntimeError - - await backup_seed(backup_type, mnemonic_secret) + await perform_backup(is_repeated_backup=True) finally: backup.deactivate_repeated_backup() diff --git a/core/src/storage/device.py b/core/src/storage/device.py index eef8e648c3..1b84f1bfdc 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -146,6 +146,10 @@ def get_backup_type() -> BackupType: return backup_type +def set_backup_type(backup_type: BackupType) -> None: + common.set_uint8(_NAMESPACE, _BACKUP_TYPE, backup_type) + + def is_passphrase_enabled() -> bool: return common.get_bool(_NAMESPACE, _USE_PASSPHRASE) diff --git a/tests/common.py b/tests/common.py index 6502faf591..b270f46e33 100644 --- a/tests/common.py +++ b/tests/common.py @@ -67,6 +67,9 @@ ] MNEMONIC_SLIP39_CUSTOM_1of1 = ["tolerate flexible academic academic average dwarf square home promise aspect temple cluster roster forward hand unfair tenant emperor ceramic element forget perfect knit adapt review usual formal receiver typical pleasure duke yield party"] MNEMONIC_SLIP39_CUSTOM_SECRET = "3439316237393562383066633231636364663436366330666263393863386663" + +MNEMONIC_SLIP39_SINGLE_EXT_20 = ["academic again academic academic academic academic academic academic academic academic academic academic academic academic academic academic academic pecan provide remember"] + # External entropy mocked as received from trezorlib. EXTERNAL_ENTROPY = b"zlutoucky kun upel divoke ody" * 2 # fmt: on diff --git a/tests/device_tests/test_repeated_backup.py b/tests/device_tests/test_repeated_backup.py index d236a78145..87c0c7f8f3 100644 --- a/tests/device_tests/test_repeated_backup.py +++ b/tests/device_tests/test_repeated_backup.py @@ -21,7 +21,12 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import Cancelled, TrezorFailure -from ..common import TEST_ADDRESS_N, WITH_MOCK_URANDOM, MNEMONIC_SLIP39_BASIC_20_3of6 +from ..common import ( + MNEMONIC_SLIP39_SINGLE_EXT_20, + TEST_ADDRESS_N, + WITH_MOCK_URANDOM, + MNEMONIC_SLIP39_BASIC_20_3of6, +) from ..input_flows import InputFlowSlip39BasicBackup, InputFlowSlip39BasicRecoveryDryRun @@ -65,10 +70,50 @@ def test_repeated_backup(client: Client): # we can now perform another backup with client: - IF = InputFlowSlip39BasicBackup(client, False) + IF = InputFlowSlip39BasicBackup(client, False, repeated=True) + client.set_input_flow(IF.get()) + device.backup(client) + + # the backup feature is locked again... + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) + assert client.features.recovery_status == messages.RecoveryStatus.Nothing + with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): + device.backup(client) + + +@pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_SINGLE_EXT_20) +@pytest.mark.skip_t1b1 +@WITH_MOCK_URANDOM +def test_repeated_backup_upgrade_single(client: Client): + assert ( + client.features.backup_availability == messages.BackupAvailability.NotAvailable + ) + assert client.features.recovery_status == messages.RecoveryStatus.Nothing + assert client.features.backup_type == messages.BackupType.Slip39_Single_Extendable + + # unlock repeated backup by entering the single share + with client: + IF = InputFlowSlip39BasicRecoveryDryRun( + client, MNEMONIC_SLIP39_SINGLE_EXT_20, unlock_repeated_backup=True + ) + client.set_input_flow(IF.get()) + ret = device.recover(client, type=messages.RecoveryType.UnlockRepeatedBackup) + assert ret == messages.Success(message="Backup unlocked") + assert ( + client.features.backup_availability == messages.BackupAvailability.Available + ) + assert client.features.recovery_status == messages.RecoveryStatus.Backup + + # we can now perform another backup + with client: + IF = InputFlowSlip39BasicBackup(client, False, repeated=True) client.set_input_flow(IF.get()) device.backup(client) + # backup type was upgraded: + assert client.features.backup_type == messages.BackupType.Slip39_Basic_Extendable # the backup feature is locked again... assert ( client.features.backup_availability == messages.BackupAvailability.NotAvailable diff --git a/tests/input_flows.py b/tests/input_flows.py index 275a6442c0..73c2832cb4 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -1421,12 +1421,18 @@ def load_N_shares( class InputFlowSlip39BasicBackup(InputFlowBase): - def __init__(self, client: Client, click_info: bool): + def __init__(self, client: Client, click_info: bool, repeated: bool = False): super().__init__(client) self.mnemonics: list[str] = [] self.click_info = click_info + self.repeated = repeated def input_flow_tt(self) -> BRGeneratorType: + if self.repeated: + # intro confirmation screen + yield + self.debug.press_yes() + yield # 1. Backup intro self.debug.press_yes() yield # 2. Checklist @@ -1454,6 +1460,11 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_tr(self) -> BRGeneratorType: + if self.repeated: + # intro confirmation screen + yield + self.debug.press_yes() + yield # 1. Backup intro self.debug.press_yes() yield # 2. Checklist @@ -1481,6 +1492,11 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_t3t1(self) -> BRGeneratorType: + if self.repeated: + # intro confirmation screen + yield + self.debug.press_yes() + yield # 1. Backup intro self.debug.wait_layout() self.debug.swipe_up() @@ -1587,12 +1603,17 @@ def input_flow_t3t1(self) -> BRGeneratorType: class InputFlowSlip39CustomBackup(InputFlowBase): - def __init__(self, client: Client, share_count: int): + def __init__(self, client: Client, share_count: int, repeated: bool = False): super().__init__(client) self.mnemonics: list[str] = [] self.share_count = share_count + self.repeated = repeated def input_flow_tt(self) -> BRGeneratorType: + if self.repeated: + yield + self.debug.press_yes() + if self.share_count > 1: yield # Checklist self.debug.press_yes() @@ -1611,6 +1632,10 @@ def input_flow_tt(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_tr(self) -> BRGeneratorType: + if self.repeated: + yield + self.debug.press_yes() + if self.share_count > 1: yield # Checklist self.debug.press_yes() @@ -1629,6 +1654,10 @@ def input_flow_tr(self) -> BRGeneratorType: self.debug.press_yes() def input_flow_t3t1(self) -> BRGeneratorType: + if self.repeated: + yield + self.debug.press_yes() + if self.share_count > 1: yield # Checklist self.debug.press_yes() From d58dac03a47d5326ce450d026315bfad1c91b5fd Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 5 Jun 2024 21:36:34 +0200 Subject: [PATCH 249/626] fix(tests): tweak pressed button in repeated backup --- tests/click_tests/test_repeated_backup.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/click_tests/test_repeated_backup.py b/tests/click_tests/test_repeated_backup.py index ed233269e9..d62f0cc6ef 100644 --- a/tests/click_tests/test_repeated_backup.py +++ b/tests/click_tests/test_repeated_backup.py @@ -58,14 +58,14 @@ def test_repeated_backup( # confirm backup intro reset.confirm_read(debug) - # confirm backup warning - reset.confirm_read(debug, middle_r=True) - # let's make a 1-of-1 backup to start with... assert debug.model is not None model_name: str = debug.model.internal_name + # confirm checklist + reset.confirm_read(debug) + # shares=1 reset.set_selection(debug, buttons.reset_minus(model_name), 5 - 1) From e0dfa15e89f35bfd3cee8d0557b749b9e83e84a2 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 5 Jun 2024 23:36:41 +0200 Subject: [PATCH 250/626] fix(core/ui): T3T1 confirm_action: hold implies prompt_screen --- core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 72f001816a..3dd86b068e 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -194,6 +194,7 @@ pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static> content_intro = content_intro.with_subtitle(subtitle); } + let prompt_screen = prompt_screen.or_else(|| hold.then_some(title)); let prompt_pages: usize = prompt_screen.is_some().into(); let content_intro = content_intro .map(move |msg| match msg { From cca066c4768e68acb29bdccb8cf1623cffc665f6 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 00:36:14 +0200 Subject: [PATCH 251/626] fix(core/translations): remove unbreakable spaces for now --- core/translations/cs.json | 32 ++++++++++++++++---------------- core/translations/de.json | 16 ++++++++-------- core/translations/es.json | 10 +++++----- core/translations/fr.json | 32 ++++++++++++++++---------------- 4 files changed, 45 insertions(+), 45 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 60813749dc..583af37902 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -50,7 +50,7 @@ "address__title_cosigner": "Další podepisující", "address__title_receive_address": "Přijímací adresa", "address__title_yours": "Vaše", - "address_details__account_info": "Informace o účtu", + "address_details__account_info": "Informace o účtu", "address_details__derivation_path": "Derivační cesta", "address_details__derivation_path_colon": "Derivační cesta:", "address_details__title_receive_address": "Přijímací adresa", @@ -62,8 +62,8 @@ "auto_lock__turned_on": "Automatické uzamčení zapnuto", "backup__can_back_up_anytime": "Svůj Trezor můžete kdykoli zálohovat.", "backup__create_backup_to_prevent_loss": "Vytvořte si zálohu, abyste neztratili přístup ke svým prostředkům.", - "backup__info_multi_share_backup": "Záloha peněženky obsahuje několik seznamů slov v určitém pořadí (části).", - "backup__info_single_share_backup": "Záloha peněženky obsahuje slova ({0}) v určitém pořadí.", + "backup__info_multi_share_backup": "Záloha peněženky obsahuje několik seznamů slov v určitém pořadí (části).", + "backup__info_single_share_backup": "Záloha peněženky obsahuje slova ({0}) v určitém pořadí.", "backup__it_should_be_backed_up": "Novou peněženku byste si měli ihned zálohovat.", "backup__it_should_be_backed_up_now": "Měli byste ji hned zálohovat!", "backup__new_wallet_created": "Peněženka byla vytvořena.\n", @@ -271,7 +271,7 @@ "confirm_total__fee_rate": "Výše poplatku", "confirm_total__fee_rate_colon": "Výše poplatku:", "confirm_total__sending_from_account": "Odeslání z účtu:", - "confirm_total__title_fee": "Info o poplatcích", + "confirm_total__title_fee": "Info o poplatcích", "confirm_total__title_sending_from": "Odeslání z", "debug__loading_seed": "Načítání seedu", "debug__loading_seed_not_recommended": "Nedoporučujeme načítat soukromý seed.", @@ -400,7 +400,7 @@ "inputs__show": "ZOBRAZIT", "inputs__space": "ROZDĚLENÍ", "instructions__continue_holding": "Stále\ndržte", - "instructions__continue_in_app": "Pokračujte v aplikaci", + "instructions__continue_in_app": "Pokračujte v aplikaci", "instructions__enter_next_share": "Zadejte další část", "instructions__hold_to_confirm": "Držením potvrďte", "instructions__hold_to_continue": "Držením pokračujte", @@ -524,7 +524,7 @@ "passphrase__turn_off": "Vypnout ochranu s passphrase?", "passphrase__turn_on": "Zapnout ochranu s passphrase?", "pin__cancel_description": "Pokračovat bez PIN kódu", - "pin__cancel_info": "Bez PIN kódu může k tomuto zařízení přistupovat kdokoli.", + "pin__cancel_info": "Bez PIN kódu může k tomuto zařízení přistupovat kdokoli.", "pin__cancel_setup": "Zrušit nastavení PIN kódu", "pin__change": "Změnit PIN?", "pin__changed": "PIN byl změněn.", @@ -581,10 +581,10 @@ "recovery__dry_run_bip39_valid_match": "Zadaná záloha peněženky je platná a shoduje se se zálohou v zařízení.", "recovery__dry_run_bip39_valid_mismatch": "Zadaná záloha je platná, ale neshoduje se se zálohou v zařízení.", "recovery__dry_run_invalid_backup_entered": "Zadali jste neplatnou zálohu peněženky", - "recovery__dry_run_slip39_valid_all_shares": "Všechny části jsou platné a patří k záloze v zařízení", + "recovery__dry_run_slip39_valid_all_shares": "Všechny části jsou platné a patří k záloze v zařízení", "recovery__dry_run_slip39_valid_match": "Zadané části zálohy jsou platné a odpovídají tomu, co je aktuálně v zařízení.", "recovery__dry_run_slip39_valid_mismatch": "Zadané části zálohy jsou platné, ale neodpovídají tomu, co je aktuálně v zařízení.", - "recovery__dry_run_slip39_valid_share": "Zadaná část je platná a patří k záloze v zařízení", + "recovery__dry_run_slip39_valid_share": "Zadaná část je platná a patří k záloze v zařízení", "recovery__dry_run_verify_remaining_shares": "Ověřit zbývající části zálohy?", "recovery__enter_any_share": "Zadejte libovolnou část", "recovery__enter_backup": "Zadejte zálohu.", @@ -593,7 +593,7 @@ "recovery__enter_share_from_diff_group": "Zadejte část z jiné skupiny.", "recovery__group_num_template": "Skupina {0}", "recovery__group_threshold_reached": "Dosaženo počtu částí zálohy skupiny.", - "recovery__info_about_disconnect": "Během obnovování peněženky můžete odpojit Trezor a pokračovat později.", + "recovery__info_about_disconnect": "Během obnovování peněženky můžete odpojit Trezor a pokračovat později.", "recovery__invalid_share_entered": "Zadali jste neplatnou část zálohy.", "recovery__invalid_wallet_backup_entered": "Zadali jste neplatnou zálohu.", "recovery__more_shares_needed": "Je potřeba více částí", @@ -602,7 +602,7 @@ "recovery__progress_will_be_lost": "Veškerý postup bude ztracen.", "recovery__share_already_entered": "Část jste již zadali", "recovery__share_does_not_match": "Část se neshoduje", - "recovery__share_from_another_multi_share_backup": "Zadali jste část z jiné zálohy.", + "recovery__share_from_another_multi_share_backup": "Zadali jste část z jiné zálohy.", "recovery__share_num_template": "Část {0}", "recovery__title": "Obnovit peněženku", "recovery__title_cancel_dry_run": "Zruš. kontr. zálohy", @@ -653,7 +653,7 @@ "reset__num_of_shares_advanced_info_template": "Každá část zálohy je sekvence 20 slov. Dále zvolíte počet částí pro obnovu potřebných k vytvoření skupiny {0}.", "reset__num_of_shares_basic_info": "Každá část zálohy je sekvence 20 slov. Dále zvolíte, kolik částí potřebujete k obnovení peněženky.", "reset__num_of_shares_how_many": "Kolik částí zálohy peněženky chcete vytvořit?", - "reset__num_of_shares_long_info": "Každá část zálohy je sekvence 20 slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", + "reset__num_of_shares_long_info": "Každá část zálohy je sekvence 20 slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", "reset__num_shares_for_group_template": "Potřebný počet částí k vytvoření skupiny {0}.", "reset__number_of_shares_info": "= počet seznamů jedinečných slov u zálohy peněženky.", "reset__one_share": "1 část", @@ -662,7 +662,7 @@ "reset__recovery_wallet_backup_title": "Záloha", "reset__required_number_of_groups": "Požadovaný počet skupin pro obnovení.", "reset__select_correct_word": "Pro každou pozici vyberte správné slovo.", - "reset__select_threshold": "Vyberte minimální počet částí potřebných k obnovení peněženky.", + "reset__select_threshold": "Vyberte minimální počet částí potřebných k obnovení peněženky.", "reset__select_word_template": "Vybrat slovo {0}", "reset__select_word_x_of_y_template": "Vyb. slovo {0} z {1}:", "reset__set_it_to_count_template": "Nastavte {0} a budete potřebovat ", @@ -862,11 +862,11 @@ "tezos__submit_ballot": "Odeslat hlas", "tezos__submit_proposal": "Odeslat návrh", "tezos__submit_proposals": "Odeslat návrhy", - "tutorial__continue": "Pokračovat v tutoriálu", + "tutorial__continue": "Pokračovat v tutoriálu", "tutorial__exit": "Ukončit tutoriál", "tutorial__first_transaction_finish": "se uskutečnila 12. ledna 2009.", "tutorial__first_transaction_intro": "První bitcoinová transakce na světě", - "tutorial__menu": "Nabídka obsahuje kontextové akce a možnosti.", + "tutorial__menu": "Nabídka obsahuje kontextové akce a možnosti.", "tutorial__middle_click": "Stiskněte současně levé i pravé tlačítko\npro potvrzení.", "tutorial__one_more_step": "Ještě jeden krok…", "tutorial__press_and_hold": "Podržením pravého tlačítka\nschválíte důležité operace.", @@ -875,7 +875,7 @@ "tutorial__scroll_down": "Když se text nevejde na jednu obrazovku, pravým tlačítkem posunete text dolů.\n\rLevým tlačítkem se posunete nahoru.", "tutorial__subtitle_safe5": "Tutoriál pro Trezor Safe 5", "tutorial__sure_you_want_skip": "Opravdu chcete\npřeskočit tutoriál?", - "tutorial__swipe_up_and_down": "Přejetím prstem nahoru a dolů procházíte mezi obrazovkami.", + "tutorial__swipe_up_and_down": "Přejetím prstem nahoru a dolů procházíte mezi obrazovkami.", "tutorial__title_hello": "Dobrý den", "tutorial__title_navigation": "Ovládání", "tutorial__title_screen_scroll": "Posunutí obrazovky", @@ -917,7 +917,7 @@ "words__array_of": "Pole", "words__blockhash": "Blockhash", "words__buying": "Nákup", - "words__cancel_and_exit": "Zrušit a ukončit", + "words__cancel_and_exit": "Zrušit a ukončit", "words__confirm": "Potvrdit", "words__confirm_fee": "Potvrdit poplatek", "words__contains": "Obsahuje", diff --git a/core/translations/de.json b/core/translations/de.json index 0c6d189157..5fff40e403 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -42,7 +42,7 @@ "addr_mismatch__support_url": "trezor.io/support", "addr_mismatch__wrong_derivation_path": "Ableitungspfad für gewähltes Konto falsch.", "addr_mismatch__xpub_mismatch": "XPUB passt nicht?", - "address__cancel_contact_support": "Wenn die Empfängeradresse nicht übereinstimmt, dann wende dich bitte unter trezor.io/support an den Trezor Support.", + "address__cancel_contact_support": "Wenn die Empfängeradresse nicht übereinstimmt, dann wende dich bitte unter trezor.io/support an den Trezor Support.", "address__cancel_receive": "Empfang abbrechen", "address__confirmed": "Empfängeradresse bestätigt", "address__public_key": "Public Key", @@ -585,7 +585,7 @@ "recovery__dry_run_slip39_valid_match": "Eingegebene Recovery Shares sind gültig und passen zu denen auf dem Gerät.", "recovery__dry_run_slip39_valid_mismatch": "Eingegebene Recovery Shares sind gültig, passen aber nicht zum Geräteinhalt.", "recovery__dry_run_slip39_valid_share": "Der eingegebene Share ist gültig und gehört zu dem Backup auf dem Gerät.", - "recovery__dry_run_verify_remaining_shares": "Verbleibende Recovery Shares überprüfen?", + "recovery__dry_run_verify_remaining_shares": "Verbleibende Recovery Shares überprüfen?", "recovery__enter_any_share": "Share eingeben", "recovery__enter_backup": "Gib dein Backup ein.", "recovery__enter_different_share": "Gib einen anderen Share ein.", @@ -653,7 +653,7 @@ "reset__num_of_shares_advanced_info_template": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle jetzt die Schwelle für die Anzahl der Shares zur Bildung von Gruppe {0}.", "reset__num_of_shares_basic_info": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle, wie viele Shares du zur Wallet-Wiederherstell. benötigst.", "reset__num_of_shares_how_many": "Wie viele Wallet-Backup-Shares möchtest du erstellen?", - "reset__num_of_shares_long_info": "Jeder Recovery Share besteht aus 20 Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", + "reset__num_of_shares_long_info": "Jeder Recovery Share besteht aus 20 Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", "reset__num_shares_for_group_template": "Die erforderliche Anzahl an Shares zur Bildung der Gruppe {0}.", "reset__number_of_shares_info": "= Gesamtzahl eindeutiger Wortlisten für Wallet-Backup.", "reset__one_share": "1 Share", @@ -864,16 +864,16 @@ "tezos__submit_proposals": "Vorschläge senden", "tutorial__continue": "Tutorial fortsetzen", "tutorial__exit": "Tutorial schließen", - "tutorial__first_transaction_finish": "fand am 12. Januar 2009 statt.", + "tutorial__first_transaction_finish": "fand am 12. Januar 2009 statt.", "tutorial__first_transaction_intro": "Die weltweit erste Bitcoin-Transaktion", "tutorial__menu": "Das Menü enthält kontextspezifische Aktionen und Optionen.", "tutorial__middle_click": "Drücke gleichzeitig rechts und links,\num zu bestätigen.", - "tutorial__one_more_step": "Ein Schritt noch ...", + "tutorial__one_more_step": "Ein Schritt noch ...", "tutorial__press_and_hold": "Halte die rechte Taste gedrückt,\num wichtige Vorgänge zu genehmigen.", "tutorial__ready_to_use": "Du kannst jetzt\nTrezor verwenden.", - "tutorial__ready_to_use_safe5": "Gut gemacht!\nJetzt kannst du deinen Trezor Safe 5 verwenden.", + "tutorial__ready_to_use_safe5": "Gut gemacht!\nJetzt kannst du deinen Trezor Safe 5 verwenden.", "tutorial__scroll_down": "Drücke rechts, um nach unten zu scrollen und alles zu lesen, wenn der Text nicht auf einen Bildschirm passt.\n\rDrücke links, um nach oben zu scrollen.", - "tutorial__subtitle_safe5": "Tutorial zu Trezor Safe 5", + "tutorial__subtitle_safe5": "Tutorial zu Trezor Safe 5", "tutorial__sure_you_want_skip": "Möchtest du das Tutorial\nwirklich überspringen?", "tutorial__swipe_up_and_down": "Wische nach oben und unten, um Bildschirme zu wechseln.", "tutorial__title_hello": "Hallo", @@ -883,7 +883,7 @@ "tutorial__title_tutorial_complete": "Tutorial beendet", "tutorial__use_trezor": "Verwende Trezor durch\ndrücken der linken und rechten Tasten.\n\rWeiter rechts.", "tutorial__welcome_press_right": "Willkommen bei Trezor. Drücke rechts, um fortzufahren.", - "tutorial__welcome_safe5": "Willkommen bei Trezor Safe 5.", + "tutorial__welcome_safe5": "Willkommen bei Trezor Safe 5.", "u2f__get": "U2F-Zähler erhöhen und abrufen?", "u2f__set_template": "U2F-Zähler auf {0} setzen?", "u2f__title_get": "U2F-zähler erhalten", diff --git a/core/translations/es.json b/core/translations/es.json index 89d59c9b72..d959dd997d 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -408,8 +408,8 @@ "instructions__hold_to_finish_tutorial": "Pulsa para finalizar el tutorial", "instructions__hold_to_sign": "Pulsa para firmar", "instructions__learn_more": "Más información", - "instructions__shares_continue_with_x_template": "Continuar con el recurso n.º {0}", - "instructions__shares_start_with_1": "Empezar con el recurso n.º 1", + "instructions__shares_continue_with_x_template": "Continuar con el recurso n.º {0}", + "instructions__shares_start_with_1": "Empezar con el recurso n.º 1", "instructions__swipe_up": "Desliza hacia arriba", "instructions__tap_to_confirm": "Toca para confirmar", "instructions__tap_to_start": "Toca para empezar", @@ -580,7 +580,7 @@ "recovery__dry_run_backup_not_on_this_device": "La copia de seguridad del monedero no está en este dispositivo", "recovery__dry_run_bip39_valid_match": "La copia de seguridad del monedero indicada es válida y coincide con la del dispositivo.", "recovery__dry_run_bip39_valid_mismatch": "La semilla de recuperación es válida, pero no coincide con la del dispositivo.", - "recovery__dry_run_invalid_backup_entered": "Se ha introducido una copia de seguridad del monedero no válida", + "recovery__dry_run_invalid_backup_entered": "Se ha introducido una copia de seguridad del monedero no válida", "recovery__dry_run_slip39_valid_all_shares": "Todos los recursos compartidos son válidos y pertenecen a la copia de seguridad del dispositivo", "recovery__dry_run_slip39_valid_match": "Recursos compartidos válidos; coinciden con el dispositivo.", "recovery__dry_run_slip39_valid_mismatch": "Recursos compartidos válidos; no coinciden con el dispositivo.", @@ -666,8 +666,8 @@ "reset__select_word_template": "Usar {0} palabra", "reset__select_word_x_of_y_template": "Palabra {0} de {1}:", "reset__set_it_to_count_template": "Ajústalo en {0} y necesitarás ", - "reset__share_checked_successfully_template": "Se ha verificado el recurso n.º {0}.", - "reset__share_completed_template": "Se ha completado el recurso n.º {0}", + "reset__share_checked_successfully_template": "Se ha verificado el recurso n.º {0}.", + "reset__share_completed_template": "Se ha completado el recurso n.º {0}", "reset__share_words_title": "C. seg. estándar", "reset__slip39_checklist_num_groups": "Número de grupos", "reset__slip39_checklist_num_shares": "Nro.de rec. comp.", diff --git a/core/translations/fr.json b/core/translations/fr.json index ccd5d190ef..403bcffccf 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -52,12 +52,12 @@ "address__title_yours": "La vôtre", "address_details__account_info": "Infos sur le compte", "address_details__derivation_path": "Chemin de dérivation", - "address_details__derivation_path_colon": "Chemin de dérivation :", + "address_details__derivation_path_colon": "Chemin de dérivation :", "address_details__title_receive_address": "Adr. de récep.", "address_details__title_receiving_to": "Récep. sur", "authenticate__confirm_template": "Autoriser l'ord. connecté à conf. que votre {0} est auth. ?", "authenticate__header": "Authentifier le disp.", - "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d’inactivité ?", + "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d’inactivité ?", "auto_lock__title": "Délai de ver. auto", "auto_lock__turned_on": "Verrouillage automatique activé", "backup__can_back_up_anytime": "Vous pouvez sauv. Trezor une fois, à tout moment.", @@ -269,7 +269,7 @@ "coinjoin__title_progress": "Coinjoin en cours", "coinjoin__waiting_for_others": "En attente des autres", "confirm_total__fee_rate": "Taux des frais", - "confirm_total__fee_rate_colon": "Taux des frais :", + "confirm_total__fee_rate_colon": "Taux des frais :", "confirm_total__sending_from_account": "Compte d'envoi :", "confirm_total__title_fee": "Infos sur les frais", "confirm_total__title_sending_from": "Envoi depuis", @@ -377,8 +377,8 @@ "fido__wanna_erase_credentials": "Voulez-vous vraiment effacer tous les id ?", "firmware_update__title": "Maj logiciel", "firmware_update__title_fingerprint": "Empreinte fw", - "haptic_feedback__disable": "Désactiver le retour haptique ?", - "haptic_feedback__enable": "Activer le retour haptique ?", + "haptic_feedback__disable": "Désactiver le retour haptique ?", + "haptic_feedback__enable": "Activer le retour haptique ?", "haptic_feedback__subtitle": "Définir", "haptic_feedback__title": "Retour haptique", "homescreen__click_to_connect": "Se connecter", @@ -508,7 +508,7 @@ "nem__unencrypted": "Non chiffré :", "nem__unknown_mosaic": "Mosaïque inconnue !", "passphrase__access_hidden_wallet": "Accès portef. masqué ?", - "passphrase__always_on_device": "Saisissez toujours votre phrase secrète sur Trezor ?", + "passphrase__always_on_device": "Saisissez toujours votre phrase secrète sur Trezor ?", "passphrase__from_host_not_shown": "La phrase secrète fournie par l'hôte sera utilisée, mais pas affichée en raison des paramètres du disp.", "passphrase__hidden_wallet": "Portef. masqué", "passphrase__hide": "Masq. phrase secrète de l'hôte ?", @@ -585,7 +585,7 @@ "recovery__dry_run_slip39_valid_match": "Les fragm. de récup. saisis sont valides et correspondent à ceux du disp.", "recovery__dry_run_slip39_valid_mismatch": "Les fragm. de récup. saisis sont valides, mais ne correspondent pas à ceux du disp.", "recovery__dry_run_slip39_valid_share": "Le fragment saisi est valide et appartient à la sauvegarde du dispositif", - "recovery__dry_run_verify_remaining_shares": "Vérifier les fragments de récupération restants ?", + "recovery__dry_run_verify_remaining_shares": "Vérifier les fragments de récupération restants ?", "recovery__enter_any_share": "Saisissez un fragm.", "recovery__enter_backup": "Saisissez votre sauvegarde.", "recovery__enter_different_share": "Saisissez un autre fragment.", @@ -652,8 +652,8 @@ "reset__num_of_share_holders_template": "{0} personnes ou emp. détiendront chacun un fragm.", "reset__num_of_shares_advanced_info_template": "Chaque fragm. de récup. se compose de 20 mots. Vous choisirez le nbr seuil de fragm. néc. pour former le Groupe {0}.", "reset__num_of_shares_basic_info": "Chaque fragm. de récup. se compose de 20 mots. Vous choisirez le nbr de fragm. néc. pour récup. votre portef.", - "reset__num_of_shares_how_many": "Combien de fragments de sauvegarde de portefeuille voulez-vous créer ?", - "reset__num_of_shares_long_info": "Chaque fragment de récupération se compose de 20 mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", + "reset__num_of_shares_how_many": "Combien de fragments de sauvegarde de portefeuille voulez-vous créer ?", + "reset__num_of_shares_long_info": "Chaque fragment de récupération se compose de 20 mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", "reset__num_shares_for_group_template": "Le nbre de fragm. requis pour former le Groupe {0}.", "reset__number_of_shares_info": "= nbre total de listes de mots uniques pour la sauv. du portef.", "reset__one_share": "1 fragm.", @@ -677,7 +677,7 @@ "reset__slip39_checklist_set_sizes": "Déf. tailles et seuils", "reset__slip39_checklist_set_sizes_longer": "Déf. les tailles et seuils par groupe", "reset__slip39_checklist_set_threshold": "Déf. seuil", - "reset__slip39_checklist_threshold_x_template": "Seuil de récupération :", + "reset__slip39_checklist_threshold_x_template": "Seuil de récupération :", "reset__slip39_checklist_title": "Liste contr. sauveg.", "reset__slip39_checklist_write_down": "Noter et vérifier tous les fragm.", "reset__slip39_checklist_write_down_recovery": "Notez et vérif. fragm. de sauv. du portef.", @@ -754,7 +754,7 @@ "send__title_sending_to": "Envoi à", "send__to_the_total_amount": "Au montant total :", "send__total_amount": "Montant total", - "send__total_amount_colon": "Montant total :", + "send__total_amount_colon": "Montant total :", "send__transaction_id": "ID de transaction :", "send__transaction_signed": "Transaction signée", "send__you_are_contributing": "Votre contribution :", @@ -864,16 +864,16 @@ "tezos__submit_proposals": "Soumettre des propositions", "tutorial__continue": "Continuer le tutoriel", "tutorial__exit": "Quitter le tutoriel", - "tutorial__first_transaction_finish": "a eu lieu le 12 janvier 2009.", + "tutorial__first_transaction_finish": "a eu lieu le 12 janvier 2009.", "tutorial__first_transaction_intro": "La première transaction bitcoin au monde", "tutorial__menu": "Le menu comprend des actions et des options spécifiques au contexte.", "tutorial__middle_click": "App. simultanément sur les boutons gauche et droit\npour conf.", "tutorial__one_more_step": "Encore une étape...", "tutorial__press_and_hold": "Maintenez enfoncé le bouton droit\npour accepter les choix importants.", "tutorial__ready_to_use": "Vous êtes prêt à\nutiliser Trezor.", - "tutorial__ready_to_use_safe5": "Bravo !\nVous êtes prêt à utiliser votre Trezor Safe 5.", + "tutorial__ready_to_use_safe5": "Bravo !\nVous êtes prêt à utiliser votre Trezor Safe 5.", "tutorial__scroll_down": "Utilisez le bouton droit pour lire le contenu lorsqu'il dépasse.\n\rBouton gauche pour faire défiler l'écran vers le haut.", - "tutorial__subtitle_safe5": "Tutoriel Trezor Safe 5", + "tutorial__subtitle_safe5": "Tutoriel Trezor Safe 5", "tutorial__sure_you_want_skip": "Voulez-vous vraiment\nignorer le tutoriel ?", "tutorial__swipe_up_and_down": "Faites glisser vers le haut ou vers le bas pour naviguer entre les écrans.", "tutorial__title_hello": "Bonjour", @@ -883,7 +883,7 @@ "tutorial__title_tutorial_complete": "Tutoriel terminé", "tutorial__use_trezor": "Utilisez Trezor avec\nles boutons gauche et droit.\n\rContinuez avec le droit.", "tutorial__welcome_press_right": "Bienvenue sur Trezor. Appuyez sur le bouton droit pour continuer.", - "tutorial__welcome_safe5": "Bienvenue dans Trezor Safe 5.", + "tutorial__welcome_safe5": "Bienvenue dans Trezor Safe 5.", "u2f__get": "Augm. et récup. compteur U2F ?", "u2f__set_template": "Déf. compteur U2F sur {0} ?", "u2f__title_get": "Obtenir compt. U2F", @@ -933,7 +933,7 @@ "words__know_what_your_doing": "Continuez uniquement si vous savez ce que vous faites !", "words__my_trezor": "Mon Trezor", "words__no": "Non", - "words__not_recommended": "Non recommandé !", + "words__not_recommended": "Non recommandé !", "words__operation_cancelled": "Opération annulée", "words__outputs": "sorties", "words__please_check_again": "Revérifiez", From 8c9f5ebbca65da28744dea6beaf2b979b0bd4ba6 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 01:24:10 +0200 Subject: [PATCH 252/626] tests(core): fix T3T1 default flow --- python/src/trezorlib/debuglink.py | 2 +- tests/input_flows.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index a0d23bc8f6..96d0b148df 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -827,7 +827,7 @@ def _default_input_flow(self, br: messages.ButtonRequest) -> None: layout = self.debuglink.read_layout() if "PromptScreen" in layout.all_components(): self.debuglink.press_yes() - elif "swipe up" in layout.footer().lower(): + elif "SwipeContent" in layout.all_components(): self.debuglink.swipe_up() else: self.debuglink.press_yes() diff --git a/tests/input_flows.py b/tests/input_flows.py index 73c2832cb4..296e26a23b 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -2286,7 +2286,9 @@ def input_flow_t3t1(self) -> BRGeneratorType: self.debug.click(buttons.CORNER_BUTTON, wait=True) self.debug.synchronize_at("VerticalMenu") self.debug.click(buttons.VERTICAL_MENU[1]) - elif "swipe up" in layout.footer().lower(): + elif "PromptScreen" in layout.all_components(): + self.debug.press_yes() + elif "SwipeContent" in layout.all_components(): self.debug.swipe_up() else: self.debug.press_yes() From 863435cc9d3f88ccc6223fb59ed9d5c293fb755c Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 15 Nov 2023 16:10:40 +0100 Subject: [PATCH 253/626] feat(python/debuglink): make input flows part of the traceback --- python/src/trezorlib/debuglink.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index 96d0b148df..b7631fcd72 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -1114,6 +1114,13 @@ def __exit__(self, exc_type: Any, value: Any, traceback: Any) -> None: # copy expected/actual responses before clearing them expected_responses = self.expected_responses actual_responses = self.actual_responses + + # grab a copy of the inputflow generator to raise an exception through it + if isinstance(self.ui, DebugUI): + input_flow = self.ui.input_flow + else: + input_flow = None + self.reset_debug_features() if exc_type is None: @@ -1121,6 +1128,11 @@ def __exit__(self, exc_type: Any, value: Any, traceback: Any) -> None: # (raises AssertionError on mismatch) self._verify_responses(expected_responses, actual_responses) + elif isinstance(input_flow, Generator): + # Propagate the exception through the input flow, so that we see in + # traceback where it is stuck. + input_flow.throw(exc_type, value, traceback) + def set_expected_responses( self, expected: List[Union["ExpectedMessage", Tuple[bool, "ExpectedMessage"]]] ) -> None: From 25f4e07ad337929e47ebb92ed3aa385a4c5a39e4 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Sat, 30 Mar 2024 13:55:00 +0100 Subject: [PATCH 254/626] feat(tests): reduce ui error spam --- tests/conftest.py | 15 +++++++++++++++ tests/ui_tests/__init__.py | 37 ++++++++++++++++--------------------- tests/ui_tests/common.py | 5 +++-- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 42ec1e969f..97a092ad33 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -22,6 +22,7 @@ import pytest import xdist +from _pytest.reports import TestReport from trezorlib import debuglink, log, models from trezorlib.debuglink import TrezorClientDebugLink as Client @@ -445,6 +446,20 @@ def pytest_runtest_makereport(item: pytest.Item, call) -> Generator: setattr(item, f"rep_{rep.when}", rep) +@pytest.hookimpl(tryfirst=True) +def pytest_report_teststatus( + report: TestReport, config: Config +) -> tuple[str, str, tuple[str, dict[str, bool]]] | None: + if report.passed: + for prop, _ in report.user_properties: + if prop == "ui_failed": + return "ui_failed", "U", ("UI-FAILED", {"red": True}) + if prop == "ui_missing": + return "ui_missing", "M", ("UI-MISSING", {"yellow": True}) + # else use default handling + return None + + @pytest.fixture def device_handler(client: Client, request: pytest.FixtureRequest) -> Generator: device_handler = BackgroundDeviceHandler(client) diff --git a/tests/ui_tests/__init__.py b/tests/ui_tests/__init__.py index f4a6b8ff80..a6fb013491 100644 --- a/tests/ui_tests/__init__.py +++ b/tests/ui_tests/__init__.py @@ -5,6 +5,7 @@ from typing import Callable, Generator import pytest +from _pytest.nodes import Node from _pytest.outcomes import Failed from trezorlib.debuglink import TrezorClientDebugLink as Client @@ -23,23 +24,13 @@ def _process_recorded(result: TestResult) -> None: testreport.recorded(result) -def _process_tested(result: TestResult) -> None: +def _process_tested(result: TestResult, item: Node) -> None: if result.expected_hash is None: - file_path = testreport.missing(result) - pytest.fail( - f"Hash of {result.test.id} not found in fixtures.json\n" - f"Expected: {result.expected_hash}\n" - f"Actual: {result.actual_hash}\n" - f"Diff file: {file_path}" - ) + testreport.missing(result) + item.user_properties.append(("ui_missing", None)) elif result.actual_hash != result.expected_hash: - file_path = testreport.failed(result) - pytest.fail( - f"Hash of {result.test.id} differs\n" - f"Expected: {result.expected_hash}\n" - f"Actual: {result.actual_hash}\n" - f"Diff file: {file_path}" - ) + testreport.failed(result) + item.user_properties.append(("ui_failed", None)) else: testreport.passed(result) @@ -83,7 +74,7 @@ def screen_recording( if test_ui == "record": _process_recorded(result) else: - _process_tested(result) + _process_tested(result, request.node) def setup(main_runner: bool) -> None: @@ -156,6 +147,9 @@ def terminal_summary( if normal_exit: println("-------- UI tests summary: --------") + for result in TestResult.recent_results(): + if result.passed and not result.ui_passed: + println(f"UI_FAILED: {result.test.id} ({result.actual_hash})") println("Run ./tests/show_results.py to open test summary") println("") @@ -176,15 +170,16 @@ def sessionfinish( testreport.generate_reports(record_text_layout, do_master_diff) + recents = list(TestResult.recent_results()) + if test_ui == "test": - common.write_fixtures_only_new_results( - TestResult.recent_results(), - dest=FIXTURES_RESULTS_FILE, - ) + common.write_fixtures_only_new_results(recents, dest=FIXTURES_RESULTS_FILE) + if any(t.passed and not t.ui_passed for t in recents): + return pytest.ExitCode.TESTS_FAILED if test_ui == "test" and check_missing and list_missing(): common.write_fixtures_complete( - TestResult.recent_results(), + recents, remove_missing=True, dest=FIXTURES_SUGGESTION_FILE, ) diff --git a/tests/ui_tests/common.py b/tests/ui_tests/common.py index 5cd8b4ad2c..48130060bc 100644 --- a/tests/ui_tests/common.py +++ b/tests/ui_tests/common.py @@ -325,7 +325,8 @@ def save_metadata(self) -> None: json.dumps(metadata, indent=2, sort_keys=True) + "\n" ) - def succeeded_in_ui_comparison(self) -> bool: + @property + def ui_passed(self) -> bool: return self.actual_hash == self.expected_hash @classmethod @@ -357,7 +358,7 @@ def recent_results(cls) -> t.Iterator[Self]: def recent_ui_failures(cls) -> t.Iterator[Self]: """Returning just the results that resulted in UI failure.""" for result in cls.recent_results(): - if not result.succeeded_in_ui_comparison(): + if not result.ui_passed: yield result def store_recorded(self) -> None: From a106dd0f88090bd410d64309f2f2f821ce746635 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 5 Jun 2024 23:12:35 +0200 Subject: [PATCH 255/626] ci: re-enable device tests for T2B1 --- .github/workflows/core.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 8243d317b2..ffd5350227 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -21,7 +21,7 @@ env: |core UI changes|device test|click test|persistence test| |---------------|-----------|----------|----------------| |T2T1 Model T |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/status.png" width="24" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/master_diff.html))|| - |T2B1 Safe 3 |[3280](https://github.com/trezor/trezor-firmware/issues/3280) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/master_diff.html)) |[2724](https://github.com/trezor/trezor-firmware/issues/2724) || + |T2B1 Safe 3 |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/master_diff.html)) |[2724](https://github.com/trezor/trezor-firmware/issues/2724) || |T3T1 |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/master_diff.html))|| |All |<img src="https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/status.png" width="20px" height="20px" /> [main](https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/index.html)([screens](https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/master_diff.html)) || @@ -211,10 +211,6 @@ jobs: coins: [universal, btconly] asan: ${{ fromJSON(needs.param.outputs.asan) }} lang: ${{ fromJSON(needs.param.outputs.test_lang) }} - # T2B1 fails due to https://github.com/trezor/trezor-firmware/issues/3280 - # remove after single global layout is implemented (or bug above fixed): - exclude: - - model: T2B1 env: TREZOR_PROFILING: ${{ matrix.asan == 'noasan' && '1' || '0' }} TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model }} From e2ece75b1d46182bb5791b3768c5d7a490e60473 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 5 Jun 2024 23:39:21 +0200 Subject: [PATCH 256/626] chore(core): update fixtures.json --- tests/ui_tests/fixtures.json | 15336 ++++++++++++++++----------------- 1 file changed, 7661 insertions(+), 7675 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 7883f11e86..70a22dc298 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -745,9 +745,9 @@ "T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "c272f39acc61f4b107c4f22ced26a358a1ab1a8fe84ddbe5d5eb55d21846a32e", "T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "cf159a4d1b3eefa80fe2d3034db7e136c757de4eb8c3ac087e63114f6ad1c551", "T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "39e858a1d9879f999b19d9555fb57efcab53fea56b9f161c94e5f38f13f3d658", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2726fe7656568e91ca2a40b1c7b4644393c1ee1696488e0170544c8c0b850911", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "a88ccf6d14dc40a6f62e35be9fc81a0d15378e081b9f9aab4819f5638c5896d3", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0509d5c6331d39830d35f48f3f38690eaf34ba06cb07c337c0e62b387afb79a2", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3c9dacda4dbb3163604eaa22b61088dd8686158b0bccaf2424bda2e7ece1429c", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "6f46b2e6288cb8c04516122d47d0dbdb813537b718012b8bc4868ef702172ab7", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "800eea5a196408360c49a3c0b1d83fbb9437f3096258fb670ef8786e3bc6cbd8", "T2B1_cs_test_lock.py::test_hold_to_lock": "c0fa643e8fec7a18e7046e06b605e1eb1fc4673983c33b966858e7a061c08581", "T2B1_cs_test_passphrase_tr.py::test_cancel": "3f02823f2de1e46c30dadc9aef8d1c1fe2cdd2ecff0d1ec9aeb770793ff482f2", "T2B1_cs_test_passphrase_tr.py::test_passphrase_delete": "1e464363ef619f450d2c0c9f82d5336e666ee3ded7107ce1079267dd75a3cdb3", @@ -771,15 +771,15 @@ "T2B1_cs_test_pin.py::test_pin_short": "3ab81cf8e392b3a5dae098b708866e5412042563844f44b633df2e946df1661e", "T2B1_cs_test_pin.py::test_wipe_code_same_as_pin": "54ac7437efa78aa1d9d2ab2ffee9bc4884765a42da2d2ee0ee75c5cce8702f57", "T2B1_cs_test_pin.py::test_wipe_code_setup": "a04b640c59cc1f0bfaf3e91450ce3a61a03e4b77a3596df5e2dbfa302fb87f61", -"T2B1_cs_test_recovery.py::test_recovery_bip39": "b39bed5f9adcbcfb54a2c6da36aa1f694cd3fa17c94a262ce1f53000084852f3", -"T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "48dde6e5b926c445947b344bef1fff91f4016f4033a5b5693837d8e5757cd1a1", -"T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "78a2ce9924b7758a97853d1ab27bbbc2f8be1dfe9f2d14014de803aa0bb62d30", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "36c95325fbb7fa1824a3a73f5c06db616bebea55519a045c87a676201c8f2944", -"T2B1_cs_test_reset_bip39.py::test_reset_bip39": "e6ab28c1220196c73e1b73d59545788da3b71deea10189e31b3e2359d22017d5", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b385569c40eca2a1aa8538d03cdc9d639f98fbab78cf92aadb3ea6d2a6545eca", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b74fd6a67276594a8cd46fe94e9bd42913850dc90969977586d4f380587ebd0c", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "fb719ddc4ed73ca8e3d5d68182841858931abf40e8dc6eb9b6483950006db5f9", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d4b15cdcb01d7e32e16c8a150f78671ad4bb60652030a4b5fb13096c7578bf3d", +"T2B1_cs_test_recovery.py::test_recovery_bip39": "375a6f59a10b331b0862948495728220d6b73513b3ef00d0059c2416b97612ad", +"T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "7e1bd02324afa7842526afdd37dc1466253b2f88dfc31095f23d1241623f8f6d", +"T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "c12c729746d5096415c4c63e212222e7354a2b35a11810774466322b59e18d65", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "6f3888444fa0c0cea9f53642d340d6a276fd59f82c157d0cfffbba3b9a61e331", +"T2B1_cs_test_reset_bip39.py::test_reset_bip39": "a230df6897a2329be025591a340d4dfaa22dcf908aa24e30d837ef80dbbe254b", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e70b2900b5f7a8487fc24566d5ebfe58c590817017ca78440246abce1660d484", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cf0629dd19db3de2c3499caee7a5b1b79c45151c33bf78e98ece9354bb8873bb", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "9e9d338d6061fec81f5b4d8450b87ea89385ed1f174e801706246693de7b86cc", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f43f4210c3fa6a17ae3cc17c3835c694c4217e56de51e6320d81cd358ae1f7a5", "T2B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", "T2B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", "T2B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", @@ -791,9 +791,9 @@ "T2B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "f365e2ed0d3ec8c2b49c602df1649bd0b339ef325623250339ea443e39dd52f2", "T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "c48381a4420c0a6c9892ed24a4c2863dc2ef6492422335af7c1fc15957f15893", "T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "2614cc40069651512c393206d3a7302eba83f52d47b0d4b38688952fe09c46d5", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5081a50f54266bc44a6ca2a95a9b8c35f603d2eb4f314ac20678042d7eac158c", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "0b3a202dd833bd698f067e770596751913626a4f6a7d12dfa053143f43a4bd53", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "85b26079e619f97dd4dd7dc1b640cafcccb4241a82b39bf4db9a8a188b3259f0", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d227b727f1cb985af2ba2b34fa9821a34eab24ce085d85eb03df55f3968c0ef2", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "45ecf0cbd209ce9fde312a41492286ae1e8a3df6e7150afe9b73279d8ff0d953", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6c78069d422d95ba3a299e28968c84205c17dc94bc7a944d92cf9dc85f5b753f", "T2B1_de_test_lock.py::test_hold_to_lock": "fcc639edde3349bb64883e5119289d94ff26c0225b84c987fe3afa4c9ff49380", "T2B1_de_test_passphrase_tr.py::test_cancel": "260dfca06b933d88120da15c6a981c9e2bf136a1bb148cbaf0244a85c80c6767", "T2B1_de_test_passphrase_tr.py::test_passphrase_delete": "18f04b5c66ea5d1ede7e616f03e1a937dc57a0a2bc55bdf8c9d1aa917194e6ed", @@ -817,15 +817,15 @@ "T2B1_de_test_pin.py::test_pin_short": "83e7a8ceeab1210100dcdd99d8beee7de6af772daf1c56a574ad823f644f33e9", "T2B1_de_test_pin.py::test_wipe_code_same_as_pin": "ce44be19f56562e130bea35ba9ea87299609519a0790398eab16c9cbc5d986d6", "T2B1_de_test_pin.py::test_wipe_code_setup": "8f1352109892e8f1768a023700c75e5f45cbd225428cce19639db55e71bf7c57", -"T2B1_de_test_recovery.py::test_recovery_bip39": "4982804edb96e55b635b24f64ee07e5ab98d4a7c5aa999870c318d49f64e6bce", -"T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "ae7d2ea0bf92eb7da2a2604f285687995849b267318ac5229f663784c448fcf1", -"T2B1_de_test_recovery.py::test_recovery_slip39_basic": "26f47dfda39e927f17ded8054a2e892a24d56d0c04fead1e0ac30160c20d5f66", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "a6a47cb4922ad5b322212b81acfe2767e4a449e492ce60d1894088c26a86c4aa", -"T2B1_de_test_reset_bip39.py::test_reset_bip39": "21b8c8ac69aaca28bbc7a8e64f2fa412be949dd61581567c9c9217400fe87392", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "8b7ae72358d1329f82ccaaa9a81b1c83ffa0585a2f345661b7b9299130a709e3", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "45a70b97b6285db99a3e826c2f243126c06ed04d1a544f48ee41275352291368", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "67bb57d76806dcbbd0469d1a048481ce883a9ec876702ee3e1bdb3d1d647cf9f", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a1a42cfecdc6e4cc3f6710497f98f8ef1f6db023f429e38ed79af443d2d04645", +"T2B1_de_test_recovery.py::test_recovery_bip39": "86b3980aa38255b490fc4cdc8b73ed8c0324a235e65a3296b52fe7d9a0a342b2", +"T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "6b006ad60a479d373f5abef8ac37d941853f3768e162aa12791fec0d56a65e77", +"T2B1_de_test_recovery.py::test_recovery_slip39_basic": "923a429e844a91eaadffc6d022c2912d2ad356c00d78f898dd4cb120a4255fdf", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "334889ebe6a0bcc3ffb0fa4a2452978366c8d2a7772ae20c1cbf823d7b97c8bd", +"T2B1_de_test_reset_bip39.py::test_reset_bip39": "bf18ca3a182cb1f3460dee4334f6c4d0a3e0b5e2e973658745f231caee97bbda", +"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b2f2f713a04815a71bc6b3e24ec7c7d99aef68e90545065e64c38e09c3d04a46", +"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c605a432fa0b9c0a809116422c5fc09931bb8f15b1e6f8b2452ba1887e5d86ef", +"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "dff15fa04d19398def574fb546f9b37cb8c58277f3c6f5eeff82dfe44a4e7a98", +"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e00d3f925f16380afda323b26bec2ff1b51f3c04bd312189f67fd0a4d0466348", "T2B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", "T2B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", "T2B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", @@ -839,7 +839,7 @@ "T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "8cee21fc74611c4ecdb3926314fc7da5fb41cdc11070ba64b28b863b6a55153d", "T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "a4c1153fe9496a0d1db51a4c3afdce7e141e285fa512a26649f02016af928f94", "T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "1338f82e478396a01e3bc9d8e36abc96122324d9911448529759a5005b0a251c", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8b7cec7f3e441410b3d8bcd5a44575b2483c83e033273622c2711882603d3693", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "001d17f8ece1465655c2132f4f4bb4aa8e420ff2faae65b907037825c6697a88", "T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "8e437a64319cb0f66a5d9d2e5745abef54f5f0b323d82a9a26a4fa227cfb75bf", "T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ae709a6db3bb87e54a308d5c002a0f87cccdebd5d7e4079bc3b601c9043f4f71", "T2B1_en_test_lock.py::test_hold_to_lock": "83e2d055215b03150069d9fcb3aee6dc3f78a0d2bc43d8133425bf6b000c191d", @@ -865,15 +865,15 @@ "T2B1_en_test_pin.py::test_pin_short": "79f02039db164cc349d186a04ed0fdc974879d009c44ca65f031c158b211298d", "T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "242efdbabbe39e4eaf7d10ef0fde8c3a499ec27419deb41632549c6412b79c59", "T2B1_en_test_pin.py::test_wipe_code_setup": "2924233cb43eba66815a860d720a0e6c399acbde23c9ea74234ca53da106f71d", -"T2B1_en_test_recovery.py::test_recovery_bip39": "fd055e526b66f7d0eb3b6968f3889eb4a3e589fd3700b6688e68ea5d6c0c18dd", -"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "10c4d76d4f636878540dcb6ba258a2d28489012298cf273af3808bcadbe38754", -"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "771d9bd01496b0fea72d5faca60fcc564e83d4a69e5fe02770238071dec7274d", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "27c7fb9c9a9428f51060c4c4516b38f0c98e17360357576c55f7e3853adebdc6", -"T2B1_en_test_reset_bip39.py::test_reset_bip39": "6d229eb212360ffad2bc72154588ec82f699ae6d0cbbf87fa950dd4c8e2ea9c9", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5cd7eb5b96673f7f9dc066d2860ef4ab42926488a5117a2bc89caa667c3916e1", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cb815314c0607f0d6f678f5a9b9b99d6e50cbb670a83b3463ad2bf8635f9319a", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7140f98e80a66df3108ba17fac53bd7ca883c5965cf80451632826e4e0afb2a3", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "814a2a230bfd279494e4447defb66283594c7fe8be6ceb9c6e65ab641b75c6e6", +"T2B1_en_test_recovery.py::test_recovery_bip39": "1e5ebf29bd14674cedd6f2cfef42bda268c53e98b1b67a531610ee9b70804391", +"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "6dc40e36be62f5b8d6c26b9c923cb643c1f715689f4d92db5b28363b5f2dff9f", +"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "938f3b9b8ea993a5bdaf363812a6a0c43d06c34bac46059e3d228d5e5f100b45", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "8d13a5d296311eaea8af4a1a66e3aeb4b741e7eed2a6c53d34415bc99170ede2", +"T2B1_en_test_reset_bip39.py::test_reset_bip39": "5e3278c2c3c22dbe3070e86a5d9e54a20be2f8ea61474b451cf44bbdf230f755", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3cb34f14385238fa61330059c4ef6152daa14e0656caef1c156cce0fd60f3360", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "83b6b14cb700410fe809b14602ae899627160f7d98add958893cf5b7e6508f4a", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6bbaa71e3d962296948aba41171f7a9bdc0fb1ceb484f82c6423721a20d40a9c", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6f90b4e57679e6a6183f66b16b1e548cabcd942d717c4304f58c41f7967233ca", "T2B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", "T2B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", "T2B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", @@ -885,9 +885,9 @@ "T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "1f1b83d430f4662b25854c6d0135375c8286c8feebe39f4ee69df5538c69de34", "T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "5590f60c28de6bedcf1bafadcf103b81a3a418f4f7ea31b8c3585f06e48ce391", "T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "09e18b001bb66c7ea14b489b50e05fb55a48fa67f841f3259b5f751b7901f1e0", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4ac6429524a78b8e8f6dddd1b0cd974be56eb2afa4bd11d52f4f5489690e8679", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ff646c36107969dc5c73d82cf80c87f1332600dcc9826f96fc8a45257747cd2c", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "09bf8db4118f9c1b4335e728893916a10bfbc0ac46c78e8b7dd22914876d758b", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ee805e2ec9817224dd98cc9160e4ee790a52550c5e5902a984bbdc7d7c3f0b25", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4961e5b3bdd71b38d716f8b83711d04cb2aab8ba2f0feee22f5d346aeab8b438", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "bfa27e6b6237d5623fce98724eefb94691e06876a9c5d75314f099230f750465", "T2B1_es_test_lock.py::test_hold_to_lock": "8b56379898b0f83deb893fbf6892242c3014bf896782854e7538d685fd6749b2", "T2B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", "T2B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", @@ -911,29 +911,29 @@ "T2B1_es_test_pin.py::test_pin_short": "0e99a5101d7ea8e56aa6fd0f1ddb7e5458c0d9621ba4408427dcb27448a9773d", "T2B1_es_test_pin.py::test_wipe_code_same_as_pin": "de05c94ff93ed2effdf93cc6587657b05a8c72773ce8eb6609bae62e1ebe1e8c", "T2B1_es_test_pin.py::test_wipe_code_setup": "28dc846e7b88f147a7c5a6b2707417b253ccc1155778de9e13e8a170e9f3503c", -"T2B1_es_test_recovery.py::test_recovery_bip39": "d836420b4c87a47c4f6d764fa87917d64f40b9cd8154c1b0739e76c9b4226712", -"T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "fb6366eb8f5862120aaecae5567e934546bf06bce43fce91305f4130b3e47640", -"T2B1_es_test_recovery.py::test_recovery_slip39_basic": "40d49a424c770eae159c3ffa8d22709f014caf940e6600861c18e78538f5edb6", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "cad5adb87bf7e7904b43c6d2b94b06f3416eb7af549a1b6681b0a52c6d5826b2", -"T2B1_es_test_reset_bip39.py::test_reset_bip39": "4c7a5cc6b7a02d600995bd5f4e0adf2fd2668eefcfb95bba353b693c9dbecf76", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "eaf165395e06b064f0a7c04443b94d1cf3c820ce2cdb84af79572765d06ff701", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a6a4f83b123f5c17374408570b224661c6d9475973d6fe9e650f9a0f4bcc4417", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f3e5f3f8730b1d413d8ecfdba8e0d6af3fe54532d29769fe7fb30ef9398ed057", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c5dca33f54d176b54cf53d60223cb2b126e1ab45bc3bad266a345c9a550dcb69", +"T2B1_es_test_recovery.py::test_recovery_bip39": "1d60d8f5eb658ed44eba51a4ac73a9893c98fbd40b3b8ffc96f9f26d36ffa604", +"T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "a45747e147ad29beea8329c6ebe657cd9780f44e9e20ba6248f708d1015a9522", +"T2B1_es_test_recovery.py::test_recovery_slip39_basic": "5f573a064d1b85081484f35e95f5e27c3dff62f301dae4606acf01234cd04352", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "c0b951a6639b3be3871a82907a3ab172654825deb7d2833642cc9f2513077f9f", +"T2B1_es_test_reset_bip39.py::test_reset_bip39": "34c0ef033878298114450c5f4754352cef69d8b79ace14eb2ebfd6600162d032", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9ae04292356d8b353b021626d2165228d9b3e373d4a488fc0e971791e583e988", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "42ebf9db101f9ab1ca38688cd261e16457cee3240cd66d9c7d854e6ffee2ac40", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e0c3f348de2ef431308b078a35dd8518e1a93b1b923f456725bdf8c968bed5f9", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c4b2e5e08f008bce808bb84b9d3b18b2be523c3d913dbadb6ab1b077930897c1", "T2B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", "T2B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", "T2B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "08e4347ab9fcbf04b5a7afec16d1ea0f1350a0cc73b4d4126eb51150fe30a8d0", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "fc4d7a5c76b6ad3e0c0e5d0d203e0a2b929878ed9af75d416dbcd2ebcfe2917b", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "5c69abff939ad6fe77024163d05291cc5c2696ae1d92eb2af43d195dedd16319", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "109c27ba4fb1f85f1cfddadf411b4d9265b761b53ffe477bb035ef1f1e6eb486", -"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "9f3b44927bb46d7d9708b485cdc2bc33d61fd54cd0e88f5b4acfed0722360b25", -"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "752f8b27476baef0e9038e52ce39eb432ea62779849b2c129654e5d0e9b516e9", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "3a33032c5e477c1cc6b676cb51ee387ac9b18094ffcfbf454f2b1ef1db12e925", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "73c463e67621607963ab83270ca726709b1d1e151393918da4c07a3fabb46d7b", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "c74a2a8870a5009ba61ea8e07af61b049e0a6bafffae7a5bc1183489fba00bd2", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7056eaf38a80e1699d4143703dd83d00fd1445dfbf71a7e33d50736fcfb0f0c7", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "712e4bc0a363e5cbcc1a75efb2004366b0cd6b4184b9444dea1852fcb0815fcb", +"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6934db439eddb700875e004ac09d750c580a4d3842bb729d143c4fdface7dd1f", +"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "73103e29c507fd0dbac4e2c13eb900790b21cfe9d2ee1aa060dd2f5421b88598", +"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "0dab91b272953039e6bfeb76e61aee84fb82d743c22a6d31299c3b96fb824311", +"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "e77b0d0271192485af62dca8b2b9343a5b1b6c9e99b62f386fb077b4aabd1f8e", +"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b7d9d4531bcc863d8fa86fec858e474694ffca08dfb52dc2044affce37580910", +"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "e440727f60bcd583f656da40dcc3ae54ebfa23e0f2837ba5fe31a97015455828", +"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "3eb1b565b842224f82b3aa0195a67649aaa3a91dfafa3613c8ffaa606b23ca47", +"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "f1d471feb6a1a143fe78e6cd527694e8d93238955a575e12596520a27590b1e7", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7954aac5e6abdd9c0abcddc2ad97dfac11cb9c496a948ae0643262b511a2266b", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b28215fbacd9415665fa7acc070e61af880ed440b4be345af57064e30a55527b", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "35b4c237196d668dab1ae298edfd58ed6152ba093bc70c8c087927f16a208726", "T2B1_fr_test_lock.py::test_hold_to_lock": "120c4051eca095f220eebb6b54122b6a72da41c5ee67f1215a5c964e6b76d3a6", "T2B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", "T2B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", @@ -945,27 +945,27 @@ "T2B1_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "8da058fa6f29f5327cffe6239655cddf530719f0dcecb3cded5554f0f317a9c7", "T2B1_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "9f70b92d9ccdbdf713e473f25e12f0a81684b1070483f6e4efa14dc2f30612de", "T2B1_fr_test_pin.py::test_pin_change": "a56b215fc633721feccde9909db5e4afadaedc3974e65656549b8344f3731ee0", -"T2B1_fr_test_pin.py::test_pin_delete_hold": "42f9519ec2d2024c080349172e03e3e9140538312bc26176536c8b2cb5eab5c4", -"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "1958a46f370c079099f1631fc35f5af949473fe9e1fb1e09e8bceb577918f8f4", -"T2B1_fr_test_pin.py::test_pin_incorrect": "45cd1b92b4978ba3e0e5fc5e821119ae454d7916b633b4e6d2a1539d8d0545bd", -"T2B1_fr_test_pin.py::test_pin_long": "f0387f65dc401252af9819b93570213283de6d38f24e2bd87723a2e97f6c9118", -"T2B1_fr_test_pin.py::test_pin_long_delete": "7bdd766f295d866016457ea6335bb51deca66e5293da460d58cca9a0d96d8470", -"T2B1_fr_test_pin.py::test_pin_longer_than_max": "ecec02d80b637d81900c83d460bc198981a37ada1d5c57914b77e45884a52e9f", +"T2B1_fr_test_pin.py::test_pin_delete_hold": "c04dbfe19835ed7242500ab90b94e1fa4ab84108a327d257e5f568eb481c22f1", +"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "fadd4f84f97ddede5fe2885326f4d3112b8d7d7f2d3a888339ffc664b64b089d", +"T2B1_fr_test_pin.py::test_pin_incorrect": "745136d0e0ea889b9d6e859eeeebd5d75556028c6bc2915a36b3b02167d8436c", +"T2B1_fr_test_pin.py::test_pin_long": "eda77b24c1b96b9bb25995ccfa4b688e0dce2aaa397e00a8d049d31a1b2ee7c3", +"T2B1_fr_test_pin.py::test_pin_long_delete": "e9a257bd01008ee70e79eef27f6f8991d2e06d884a05d4c17d2dd2a77c373f48", +"T2B1_fr_test_pin.py::test_pin_longer_than_max": "c08f164144f88438176cee245f8e5236e79baf299712857cc468ddd479a10b02", "T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "287226fa2b15fc4bff47335e052ee853e26d75cc35db38175d66a18d8e5050c7", "T2B1_fr_test_pin.py::test_pin_setup": "56312a77d93ba23745f020f1db6e08c2520243e5fb5839c9b1c752c84299a302", "T2B1_fr_test_pin.py::test_pin_setup_mismatch": "2355be5932873459592cbfed1950b07cf03a88aee418b8d8645476953450de8b", -"T2B1_fr_test_pin.py::test_pin_short": "381e7af4da1c2d01bfc426f263190b06e44812bcab495220fe98779255cc9648", +"T2B1_fr_test_pin.py::test_pin_short": "df297fa50dcfcc5865c1c190d0c997a158836a5d2ca3b01ac1ea55d2e347d5a7", "T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "847dc181953db227e00e0d616f3cedabe367e4684e0fc77aa6dedc0abc67546d", "T2B1_fr_test_pin.py::test_wipe_code_setup": "746bdefd49d511099c5fe90663e2ffdff261821960f3f663295349bca359a57a", -"T2B1_fr_test_recovery.py::test_recovery_bip39": "7345536d86da59f83e498ac6fc6ee42f2b5c9ead902c41caae6d08c57f6129b6", -"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "2293f0baf03ca5850988b736c0e6e684c116291a54108a77134a3e1dc16405f7", -"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "af734abbec86878d07875a03fd264547e00ad61d11999d4f1ab5582ff46b2e15", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "876b97800c34e78d911e3cc6b9babdeff31c7f8587fa51f044f332d8c81e80c0", -"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "ad5080eb9cd9d9b3ca2b3b6f966963836d0771eea4f747c443965b6dd3a55b8b", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "7b5796f5dbaea0517898616bc3a273b658e8b22cbd381bc6d63192eda5445da3", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "08a6bd98addc455004a97f148f85f22868640279ab222c9f65755f950be8108e", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5e589a4efc8d409e81aa3b02f7bb699715d9a1fad7984d14e58eddd977dd3283", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5dc4db33d433f937e96e5eeb257cdc7b3800b2676a7388ff3e1932b642b03ad5", +"T2B1_fr_test_recovery.py::test_recovery_bip39": "cbd5332c79af0d104411a43f862135c499052096748d5b47cbe9efaec45bb5d3", +"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "c105a2013a1270d516f84dd41c1ab6ebf3690cd1dc60ed9d356ec4550bc144f1", +"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "ef586e7a53fa4d827f5dc12ba9f6d59cda8c8a7f7aee9e9861c5edd3a16aa74d", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "ef905d84ac35d10195ee952d93438ffef95e8b36fd8ab5da6622463c814cf934", +"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "a9c6151e2d78468978330506004f60f7a0215cfe6490dd3ded10ba455c48a5ad", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "186a0b58543180d63fdb3a9cc35c4d450f8b0d483fd816359c12cc202cde0902", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "59f11a8ee23b085fa36d0bd2b48b4a1a0dc50de1583bdf0ec5d73e3a89a6dbcf", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "064142ecc63197d2bb81c342473bc1d7d33645f84c241998c1198676f0d54afa", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9e8433d1aaf18cde6dff11a9bd478ca7294a8c744cbceb9a7ef421cabd229169", "T2B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", "T2B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", "T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" @@ -1428,8 +1428,8 @@ "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "dc6face6162f1201aba766971f30c281bd0622a8d697d5546511563214445c74", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "d3f7962173885725ccb18b26782408cddb325fb3b5606ee85281320d5fdbb539", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3af24f6278a06b0a5191c16ae4b805925dcea49218504ba29eb579367e107493", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3f709757ca6f3b2652e101965eac5ee756cbbe45dccaedc50bed585f866abf51", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "b075e4e82c0899ea4f8c2a725387af5af7473f8bf91fe7f218006e136c6fa371", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "ace740f801c317ed8b8b637fcea8f4778e4e25bd3c9ec663d8d57af5987f7a24", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "0fabc6c5a486b02123c639607d3a5a9e6782569e5a4d9f90821695c5b13598d3", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6388aedc70d6dc9916681c57f1a714cd96f8d9fa6a7cee9d1c93d86f1e49af9", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "571374f06f51bad35e07ace2580f3c4a50f94a55594e5abacba83ba17457f393", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "a5512d704e151b6a79b7b20cca2edaf744779180d7e9aea38bdeecdcff8dca47", @@ -1459,17 +1459,17 @@ "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "47495c240370b515daedeb7a3cfbe361c062f31d2d6f361007c141644e16d821", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "52a69c45e65e55c5c5e9819777be230e472b08bb0dca4e2bc54eee26093edfec", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "fea28a98cc7e1359bfd04812b30c7091cff9c5fa050e285a8af82792e016437b", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a991ec42a7591d2ff66d833490f349c191c5b15d7c03b11718bb9062bb6146d7", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "74b9fd7eb1ab3fbb73acec1dd32bec157d423d20b3223f1282ed3f08c99cfbc2", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "d77064c4f2e7665db5d30a4809b249a44f3fac06b50509dbbeb0049560b09753", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "0e46e1d059486ec9fc88691973c3b90a5ad0a9fddb63e53443c7330b9e41e895", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "e8ac719998ee269aab4da221f65ee7bfe6f25b9cf9c38bbe0fb72c83cc2d4207", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "52aa58da3d58fd3513cf1ededaa2d871f5de0ac5d5ecd5d1c0ea2883008f62b8", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "1f5aa626c3958cce8b7c1427297c0482280746f61a8fb33f1bc1067b430052be", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "a3e451c835ba41a01d12ad1c1ef1973917dbdeeec5c491686f147bedf3cdcee1", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "856a0317ac158d6b8a888a62f3d1c53a7e80ab08b5cafa698426fdf7a66433eb", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c9f5decc9ff9f70fd92ec2e9d9e6f289a41e5942659e6563e084cc3301b363ff", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "94c334ed4c2c11eb8ae67ff7170df31dcda9e88a08147762d196bb4bd12c0def", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "74463c930615bd733b2dfad9d166ea0438399b5cb5d1c1b9969f0835de844883", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "e1bc982f39f6b432a803ba15211a082e264c85b3be5ffad483750726581c8b43", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "125239a90d1cdc135ca928a408939f0c0b1685c081a33f646efb93978c65f513", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "0c282530550565e33d97d532d3076f0283cc05d5e7e708f1915e0b2b25e9deca", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "3b457e5820065398bcf1987e4e5a93e87a3dc701100b8d1e02ce17f3745bb960", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "61b3b82ae6f8b169064ffa94bd258f6d08fcc4415dd2500bc44ec3b1316af6d4", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "84933b8742603f5e31430c442de2ecde79d36c5a6cf214518f4977e80de45aec", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "33b9d92b2d96a640b969076776da40d546c5feb7ba364b795d582d028be185f5", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6a3c95b4b73d8ecf0b7f55f901947d6643f550abf7d2332db4d6e6fe2ea060d3", @@ -1499,10 +1499,10 @@ "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d152853ef5883210aaa1124342871881b3955d18e4b835f00246cec1360abaa9", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "badb5e83bf523f4cc32fd3b82e573bfd8284cb43c84e1cc293fe5a2b8373ffc2", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a6253fd49486e6a48c12553894c75d07b4c7b95b7483bd76e84f06db22eaae71", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c262671437bee02f901045dd408f169aeba778cd7c7e2872c26c6e91a869680d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d32cb96138096c10a4752dafcfa1598b26e886404a670b88a010e26255c0affe", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b329e67d30ff275bfd8cf87ec148cd08865bf2cbd204c43a3a1578256363c0e4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "cdce2fe75883c2b54822ceacc4c54037f5680145eb91fd04ba9e09cb18729ea5", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "73377c51e8c40c19f34d31697118fcc36d2c0dc208cc6dee11ff3cc16abce4fa", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "8d49694238b3af808f2be19c570e2bd3abbf994279c30c21bc8bbd9dd568dbf4", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "10f76ea34aee3fe045425c58817a2f5617beba0bd3da1e68821bbe04cb1cd877", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1a5300890369bf9e7522c16fa4f8c21f66bcc12e048e5b1689bf1dbcc75c6491", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a69f79abfe622808220953a58d8ca9821da814f8e0c23b81705e6a4cfaa45701", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e8137bb502883a0360be574b6410ccd53a4c1e6cb2de9aed18f2fb5734b72f4a", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "03143f8443aafd51db8cc765fd1d3d2fd02e3b51634ec8009f316fbd3e9e499a", @@ -1512,9 +1512,9 @@ "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8da4944c2e0f03c11cb802d9c2cf05176a7786a9d6d6ae840b56d4ba305355a6", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "556a89efc9c79968f881bd6908fc5e0b0c2d0215797456c6da0b98a36cf50c09", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "4e2ed5900672180e7130b16e9d14ef873ae5380152170b41495d92aeb700064a", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a6292d71ea66add607cffaf4e5b1a998598f9cb40a9d1de97edd59befcb5e198", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "1ba91bf2edfa334c09b619e894c2c5a34d27b29e82fd211d7a4f3bedd0a553a8", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "11827c2ff4e245013821a0d337e205e3c12ece4da1a2018aa2cce7cf7a7444af", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "61bb24a28056a5c6a1c8507e30e759eb4b97963a666ba9775d32b715883f9d32", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "9525d327a0f944fef8842884010ec1fd963c11cb5a2ca63e830734e4c2f8fcc7", +"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "70be71c3a4627ffca00ffc80a7b144cda15ca58a755156c8b38fda92a1ea2f6f", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "2dcd5dfe1e3010bd8fe6bd25f3eaed4d2d1d919b06ff26acf97e8fe72d9e752d", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "01de3548ad5680d34bbd1d5de3d0c9ceca28b50d06003b95f2ca53875a49bc5e", "T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "dc35cb62e501f18f3f4fe8cbbe9c9f7a093bfd86466791d5af5b39c2eb68d66b", @@ -1543,10 +1543,10 @@ "T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "32bbec0f7656d26734363df7b037abfd0986e3b726085c30d09fc7bacfb468bf", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "814be6fc1275882215049275f65d41b5205add189c3abbb7eef70a7a5bcae108", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "be2037dad31a09bb6267ab970edd0a745336297995905f48e3505ed8be1669e1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "5e5ca3c2a96fcc2f35417c13c7de81660f9611591ec9355f48aba62b6cc72332", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "8c8df348c2fa583dfbc7a199508f1b86ac47de4097206c78f8534b9aa12ab878", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "9a137f69edbaed170e4a218f333bb81fd0bdb4951ab84902359ce965cc668d07", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "124e2b4001aab448e0dda087c2b65291d2ef75c1974f0ed5ebe7f2ed21dbfebd", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "dd655eeb058e1d0cb19292a534183c66c8f0a9768d3b7b8c82a31372cba1abdf", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "99fdcad64292363d221724a8ad9044f3ad50186b7de68009fd275236ee30ba5a", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "58993ecd340f0060b36148d168c1c8ae68e817019f2cf8ef955221bac5bfaa37", @@ -1582,6 +1582,7 @@ "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "27fb99a0ad9f4a379875d2b334a284d041283989604dc214d9a1782e0a4b10bc", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "211ecac73ac2ce69a50534e17630620a39871a8cd99016232b955d3792f79462", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "f37b8265a2e7a75bfb09a03ae41ad2a8c4b2c296e6098d3e09a8109151b208d8", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "fc206f1788340d163aebd7938cbad28d59c7db641dfebe055e45f4645e2fd007", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2d73a42a1d51f1e37a47c9d00b068b6b1391f0d984ccd74243c2cf2493f424da", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab1eb75c7c3cc748301e3bbd7969f324f770ed711246eb974a3d23d15de8726", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "30bf85a73810868f5c97ed5ed277c67e94cf720de03cb6e596fedfce4cf24195", @@ -1610,7 +1611,11 @@ "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "d026fd1e2c8ca9c80492a55764d9296e7689e47c6ad6ffb474669b54ab40bb3d", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7351417f44da89666c19b7ef8e6781c78b131a69c72292fd7ce289045f8e2ee9", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "f06053998dabb6b56d371b0dcfc72bd0ff2860bb5b4b9188ace88b66f6a386e4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9d11fdef0e4b020bc57701afe7a0d78b03e121aacced85c8fb7fdeba28a3ddf6", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "f5cf02092762cace7339182b4e1c8348b30afa2a3f598fb03004e0e1e1c7cf4b", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "6550ac553fa550f60505345d83eff46f0dbe5a9e2c9afb3dd9e36d1e6aa90321", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "5aa3d42ae24166e37f0f85ed9c0c0470be818099692c02c222ad80018d4aa0c1", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "27a18a51df432695c4b111d58ee36798a274793e1118ae343aa2ec0e976ed58b", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "74b2239375c5b09e3414103d0404abcb663c0c131ecc21c1cd1f52153739e229", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "477caf4eb070fffc0740a578b55ae756909c0ca947abdca6934366661474517a", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "edcd19b971a6dd738fa844318dfbd7e522da0c17f687eb8f85307a688f09cd45", @@ -1620,6 +1625,9 @@ "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "3fc9ff7a259b18fba6e6314b03ac4c291a2c010979b87c83a46bec0fdd33ad15", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "da54d529e08559a3c21b5ed2292994daefd64cfb36b30bc332a43cb453a91452", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "fb8bdacbfe3dd97bc7cedadd985f6b50148543d99d75acc6b979f4b6819c4170", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "0060865e9d77b78fdee51a53907686c7f5f444e7d7c23009138c41b65a57a762", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "82b38b6bb03a4824d701c5fc061a82cf64d93d071a9df50e8a36d8abba76a637", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "82b38b6bb03a4824d701c5fc061a82cf64d93d071a9df50e8a36d8abba76a637", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "968c85fc0bd3628bf4f28a07c7ba57f94efdb6d578df28ab6f9249c5974d525e", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", @@ -1991,56 +1999,57 @@ "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8ba053492949b3e2e36455b85aa124aabdcbe52f032e3ff9686e308c7484c7c8", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d755e219d8e7b545485f945bb8e34bec74b906dee1e056b4eedc34d4593938d8", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0755ba14aa7b30e097f0f6899b553cf060f2da8fa31b6b24ade8f98445d2ae04", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6f4f381315052c55b12e37ba3e36211c8839846c6e4cc7519a75907676d07497", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "925f1e3aad162264ecfd89285510fb44349543613014d96eea7a0bfa641ece57", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "759bd23ec9f9a5c63a9c2f9d84fa1451675d38c75b642fcbd5d5448f9148399f", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "c33c05df43e9a59df5d568d9edb7a00bcb3cfd594e171cf37df4edf29d8faf0f", +"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e2d2d8334eb6a543c7a70795c2c35f08374cd2ce017b51d1f31f63f6dbc9f415", +"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "5c3fbdf422e2bc1aacd54075f35bb1ed40f576aadd0414796c937a20b8dd823c", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "af390c611b41f2ac6f5b03c05591c95a8b18b3d9aa95e99d67d323e98d225d12", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "857119e4e411eb8061e65d4ce8e75e7b37b6c2c117721341fe5dc903f46f1f7b", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "115bc2ea3357c7b07f7fe55f4650d6df4ac5d29f8252ee1308baf634dfed906b", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a6c64dc9596ffa53996fb937690e2f03188a1efffe5a3e06b727474a4a03109d", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "c8069b5627b1c59cb2fa27ed107d379272ecfe468e6b70e2567bbc2348d47e78", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "0493e5a92a51c5c280f97e79e0a692134c5c34d9d618256d4bc8509e0ca506df", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5a49467e368d522bad3235beb735ca134bcdcf3610a6054c832d81dc78589543", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "0493e5a92a51c5c280f97e79e0a692134c5c34d9d618256d4bc8509e0ca506df", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "5a49467e368d522bad3235beb735ca134bcdcf3610a6054c832d81dc78589543", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "afc492d0ccb0d83d20c7b511322be2af267374b07a00c470023b3c88a3140301", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c7519f7b30d452001aee3946716e3552544c116111b8d6665849018fedd63b18", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "762780a54cc2c6c2b5360ac8c1c6522d9785ff6591d54b24b263cb1f62873d41", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "ca01b7fdfcd2fb19fa20ba531b39a3de8563b2f743cc3a6edbc5ea84bbdae7f9", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "13c69455d3aa010fa5f88c7053adc774a31cfbc4bbc1348347477922c85c890f", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7c327249391ad9a984c2e5444727f26758b678990a49505007fe112bc72c644b", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "13c69455d3aa010fa5f88c7053adc774a31cfbc4bbc1348347477922c85c890f", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "7c327249391ad9a984c2e5444727f26758b678990a49505007fe112bc72c644b", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "9ad67ce8350b09f3c7c3b4eb83ba4dcdb926399c687f1a8039f26da639299d71", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "bee60954094581e5f9ef3b2e3d780d8d89ca904140eabab1cac468e9179e3784", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "0538494a2be218d762ce646ba2a023bb8c38525286c348378387c01f483b6502", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "be3b53677099eef3793ba21f3d08dd8f370b9a8cdeeb5340feb54aff26ad4ff5", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "af390c611b41f2ac6f5b03c05591c95a8b18b3d9aa95e99d67d323e98d225d12", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0bb80c1822c414f07029f0fe97ae5c5b3c831de9ae6836bb3a0af4b4505289ed", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c87784219a83ab7a59c2218e021584d6103d430ee7c06cd51210fbe10ccc8c57", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "76bd7a5a65da432e4fbee1206016d2bee65413ff26710c8c11543bcd0d46b625", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "08de7670f18acec9253066980ee19d5a71e76eeb32986d73aa16019c964c7e37", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a70b2808912753c5aed47d3fbbe0174c225ff4c6c4ac8a53ba6f11701d5ff158", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "b78da55edb1ed1c184377d63df2ab06b5c56eef4edf1e0cd53fde07c3521de66", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "32db976ceddabb3c9631cb68ed3125dfc688dfc3e6095ea15a2f75629c2e3f85", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e8dee00273427ccc871dc79e55ebe0354b12e1b6bc18610bf7064a2c8063f608", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "60a98eb38fb81605f3a843f2d95ee7d55e643a232d2410106446ce5008f66db6", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "6cd3a36de98e8baac832278cf9341d741b343ab98ab7d4f57d0323bc87274f2d", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2c92c69358fe2b30ab5196beaaa45344092d95e57de0214eb11013a5990cc397", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "256bf6cfb44e0f1199d3e06d60e4d6d66bdb5fe2fea4440953279f36143d15c1", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "af55a065996c9f442fb1c4ad331c1c2f70e757038135634d427d8f84dcc348c6", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "55cc26da09ee80c2c70b66529fe2a2ca44e42fc5ab951f3a4747c50226454d39", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "b195e04fe8239f1fc73ecb71f3224ce5917067655be7cf161310147ae0cb891a", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "84a1e92f603a878b45f5565f729e0feb620df4b66273960360daef0208b8387f", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0f15671cbcc2c5b288b10c4b38a17890beebdeacb8015e08b8575cedfe22402d", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "b78b498a78beb7314f596b46ea59a4a97988b2588d2d4e666e98fd25261e4683", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "5ffd0e7897bd42c5a917275f4288be0f92712256fa0c9d4c5221f2ffeb12c85b", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6d252425f9205deae9ee8dd354e3e50fc1686af6210556a6df42494bd27bbdb1", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "ad99f8a9033a97a66be6e8c83f7aa32673fc879d769b3b8be5b0cd79a3384d29", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "19bd64f359786311571d89028e273e5090c6442e038cc53fdfb8dfdf9bbc391e", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c31b93df760c7404b5161a9b56a2d18b35a34b809171bbc6b3b81c2d8318dac6", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e1917a15377b21678869a2b3715127561d4a3adbe792d9fcee5cda73f3f4dd68", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "f7e15054e4f2fbfc0aec1ce913536b13c9e707b6f034038e47bee2fe2745adf2", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "1640d93822b2a06a27e86c26e29415b33eac1f442042cb2448f5d132c4c6d55a", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "9b9b4e24f5420c83cd4c61ca6ba5cd402428b70b05146bdb8022631097e7043d", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "88cf3318185df7068f3857abac912f3b4b12d968b91018654f14e02be643439e", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ca4e10e58a0c3e50332ff9249c1154a32e80686006a8e99cf0bb35d84f8eeb9e", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "ce6c83847f749b2b86133b1203fd177071439a136e9ad3b0abc341da23c4cdea", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "ea5952e082dbbe5acf3b2005191addea107d37f90961538d94aba08fe9dbc30f", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2953af6fb4d677cae36b61c6e3451151c64d6bfc1b910ea655def66505b7e897", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b7c04544d8759f253ba09e474bfde8770289951a50ef0e6445c6a5de23a04cc9", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "b8cad2a9e0bc52fcf2b68884efa537d4dfbdfc40f0df58919b704d77c269d913", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "45e6fdf94c335fb93c1dc185b32ef78f1d9a9ecb8cb8d005294d185ff71cefec", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9c59438805f9f37f752e5308b20c0f9d24f80e6d66d61677bcae2747a612bf19", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8d20230edc61741a672afda7865be123db9298ac8e3ae9af72087795852bc65a", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6a6d57d7b4d1d5179264eef1ed3b57b5f6d095c9f8e108e1049a0512f8811103", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "0f25df5a45c217f284f7c873668793b8af2c42f1b6c7058e846c06f96ba97716", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0c934e995fb139b13fc6387dedce3fd0211da630404209a0148dd1a30ad0e2e2", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6e7810188ec903264134cf5d73ee3d443b58c499aeb4b644403b523a13e217a7", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c088cef440e0b380a48ee04a5a89ffc7fd4574f608ada3d51a3c276c05679580", -"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "690a2a0bb52fde96e307d7ed7c3350a258df3e5cd9969f7e7aeefff525e56025", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "734937ae03ea12591f4f31e44c179d3cab1f4b80c39dc94085e84575e44113f8", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7929e52db1d860f3e58c04a1bd65a6a3e1e25fa501b7594317c56281cce9f7bd", -"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f2c6927de138f2d17aa3db02181409b1a1f4462577f38f33bcdd2d53098dee2d", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5d35497e801e3bdd8b9e48360988d29f99891d7590051f96064d7108bc831d1a", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "57df3deb7602627892c813406a75fc39897411b566bbaff3ba73beb70c090bfd", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f4be6c88ff1aabfd1b3a60bce21ee1131e23e3c02880df088ddec00d1273213b", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b48ddc72f95997c4fe6e994f093de21c01a660aea5c137b565a0610da0d06e98", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "48d500ba97a16fdec926c80ad85b3288b5d56a8b818b029a34e839576208a0b2", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "cca3330f595d976acaffd565c4ee3392941cef0d9a63f646075b567a30a4c8e8", +"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4a98a23b453f65bb3523aab20f2441a1f026124326d24958acb76e06b29d5b66", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e9cdd3cec40eed1a98e3ee43bc66742fdbedd5508ec63e0f49552d4764a8c07e", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2cf2fd1f7099bb47b8894b60ad201bce0a20ea96fcaafa3327353b28144247b7", +"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3a00f6b5500fc685cc0a852505435cb9f38dd4300b3eb8dd6e16932bfce56277", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b4e0c6b46f77dc201dbce1eec702b230e08e012a0db5ff0e840ae230227299c3", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1caa96a30e1ee1689ac838ee79134ff3d97d6d1c93b429f50c8cb28580cb0107", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8ccf16649aeac16d0845fd44fee2a1dbd2b223d367966ed15878478da43e5b92", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d737f4992a9b77b6f1e942ec780ac06eebc1d222622ab93071c90e7c0092d6ed", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c0cbbe91fed1a92fd632ddc86618f0e30ef58d16e931990cc0735b47362ddc08", @@ -2204,11 +2213,11 @@ "T2B1_cs_test_basic.py::test_ping": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_busy_state.py::test_busy_expiry": "3ada1eb6b81ca1cba6132b590848152d4f95741a58e0175443a634043b6b95b4", "T2B1_cs_test_busy_state.py::test_busy_state": "3bb4c4aa4854c6d542c2bae491cfe25cb7d9128ffa2126f1e59b1acd2fa27715", -"T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "bd34197b00445a2d4cea025c169dac839d1d3f24a0c32a59d0221fb6b672ffef", -"T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "bd34197b00445a2d4cea025c169dac839d1d3f24a0c32a59d0221fb6b672ffef", -"T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "bd34197b00445a2d4cea025c169dac839d1d3f24a0c32a59d0221fb6b672ffef", -"T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "bd34197b00445a2d4cea025c169dac839d1d3f24a0c32a59d0221fb6b672ffef", -"T2B1_cs_test_cancel.py::test_cancel_on_paginated": "607f20d338f7e345dd2eca4385274d01d048dada9c59852e51d4168b214c1e18", +"T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", +"T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", +"T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", +"T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", +"T2B1_cs_test_cancel.py::test_cancel_on_paginated": "0561a2e23122e7ca49c00bd4f28c193f03126f8ee99292cb163ce48da8c1ce74", "T2B1_cs_test_debuglink.py::test_softlock_instability": "3cfe5b39e49fc6a9461c9f55e484acaa81b0da0d71f0612819bf88a60fed17ce", "T2B1_cs_test_firmware_hash.py::test_firmware_hash_emu": "f7e29f0aa9167d32f7ae0f5475c29c0f0fd39ba665c8e4cf4638ff07447b3c25", "T2B1_cs_test_firmware_hash.py::test_firmware_hash_hw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -2242,19 +2251,19 @@ "T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", "T2B1_cs_test_msg_applysettings.py::test_apply_settings": "ce5645274b5fc13450d0a790dd1d5630c02a9b0495583bdb9db5cdbc6e1388e6", "T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "a95c15a8583f1b50942df922698dd20e35e2f7d09e526738cb2ced20303efc3e", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "b359f6fb4ee2dd63ea089c7399c18f502c38fb0d4070cd92942f75018fd58a82", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0f1467141822cf93346a757aa1d3e0f71ea2ac68ff318c5b6b91bbb80e74464a", "T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "487177fc514575393734e77c463767580be49587960c2acb21b24e97a17b20be", "T2B1_cs_test_msg_applysettings.py::test_experimental_features": "e38272686dea67f5d13d89589518db14a9481716bc7ec5b1cb7e126dea09a373", "T2B1_cs_test_msg_applysettings.py::test_label_too_long": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_msg_applysettings.py::test_safety_checks": "c663fd32d9d6e18a0685cd69382e433f480c82933d5a84a3a53d8dee0d1d8f80", -"T2B1_cs_test_msg_backup_device.py::test_backup_bip39": "c50cbe7178599e54601ea50076ac6ef3db80c09ea9435f5534f1ba7d0b3efcca", +"T2B1_cs_test_msg_backup_device.py::test_backup_bip39": "51ca4acfa41ee2b628f44379bf763d0cb349b97a268c39de1b3422d366dba05d", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c4b217af3959b3af0f4aba5757deb6f90561ab69ef83e5de57d6e50be84c8e21", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3043098b4a0502e8970f0672f3bac8285cb5ff501f1462a0212c924739e77554", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8645ab55b2da69b647d22ba43904690dfa20e38638162b1061ad26674af80be0", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a7923569d0e141ea788a0b9cea4ff3fa286ae4fadf05b6d899444bbb860db55d", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "262cdb1b693b64c2ca4f6855966d9734c073a263d54975b148119bfe49698a5b", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a79cfe711fc331913f2a4a5963c871f15ffce877caf97293acd3c9c4f7087ef9", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "57c42749f5bc7753984bb8cb726059b7ca71ab3b58f1a1c09a140624b43d08b6", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "95115ba157f4bc100649ad6f32cd23a1c202685b57050df21f9880fe3f17ffec", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4d8e12107f5a1894ff6df28c5d17f914ec309af93b74cad6624afaac0e547042", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f2332ce545c88d187730313b4f1b4340a9373a76de7b8e6bf5341c8a62b2c64f", "T2B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", "T2B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", "T2B1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -2262,24 +2271,25 @@ "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "57e90fba05243baa9f7c55a08c8628f882d6d906a9dd62d8ea419d36ce8442f1", "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1d56ba8d29b61fc3d41c197093da2fb465d1f0ff87622df2ceb599420f8cb78f", "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "375273cd94cf39a22e9fe082073ed5b390de87a366dc26490826eab60f7a7aaa", -"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "362719d37f5fb2296adf1b137a96f70ba507431a4a0390d4958bd0fcdd9f6443", +"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "70386aa95061c4549f54cb2228b92ddf10c9d85f6f653d9185089aafbc8e9db7", "T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "fc9c7caa47ac8366e1bb4fc0b8e781b7063d39f20eb03344f1cb0aa95f7df349", "T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "6d92c6a4f45a1751ed3795bf424c905bfb40f1266229be7b8fd23b2c9a7aafef", "T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "391220bb0e17eeb125a0ba7589ff6623d76b2bf8440aaf43d800b0b8ceffc9d2", "T2B1_cs_test_msg_changepin_t2.py::test_set_failed": "77677a25860127358ec60b8ddb191b1a6adb3f88461434c34b36db34eb33139b", "T2B1_cs_test_msg_changepin_t2.py::test_set_pin": "25eacd352596d8a7f5d83a118bf32ecb228ad4b1b92320730c3fc093b5ff9c7e", "T2B1_cs_test_msg_loaddevice.py::test_load_device_1": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "90819328507d3f5214bb09e037d4c72c1cd02354e0f7935cd398faa93016caf3", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "df51c15b53fcf7544fbefad78084ea0218f647ebce87333a011220fb7b79c85a", "T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", "T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "b55b36904a2ba78c888248a3d159fd8af311b794d0b6c7bd07728e4f2a87620d", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "4eaa579cec5ea98a0a663dcd225638eaf417cd01f5ab2ce2436a96d50654b2fe", "T2B1_cs_test_msg_ping.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", "T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "23dec1004dafc2f7c89663b3797a5d20e5786ed051c4226310b61d278047d62f", "T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "6297507a80a6105805985b094ea72787b9a5ea5162b919ad5b6c1d2cb1bd6a0c", -"T2B1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "4b8be11041eeafa7d2b2e3796b9ea4e46a180b07793568f1569994722e1a9c13", -"T2B1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "4b8be11041eeafa7d2b2e3796b9ea4e46a180b07793568f1569994722e1a9c13", -"T2B1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3779415b770cec004f28d9626911b3ffad26d17e4f8ba978fff76932948ff3e2", -"T2B1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3779415b770cec004f28d9626911b3ffad26d17e4f8ba978fff76932948ff3e2", +"T2B1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", +"T2B1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", +"T2B1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", +"T2B1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", +"T2B1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", "T2B1_cs_test_pin.py::test_correct_pin": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", "T2B1_cs_test_pin.py::test_exponential_backoff_t2": "bb69d4668cff5eb0517e34e3b58308122cdf8288452f2f09f76fb52cb6852e9a", "T2B1_cs_test_pin.py::test_incorrect_pin_t2": "72f00ba9b833ed091df10e375a996e56cc17529c03d0984a26f1133adc616247", @@ -2299,25 +2309,29 @@ "T2B1_cs_test_protection_levels.py::test_unlocked": "d45aa3fa066835bb5ed5c7f803fcd0693564f2a84c6fae377fc3fa13c6683429", "T2B1_cs_test_protection_levels.py::test_verify_message_t2": "7adb0534531529fdf43625541659156273d7daa7d2d3394c18ce4054372992dd", "T2B1_cs_test_protection_levels.py::test_wipe_device": "0d00b5c915f5b958051384fd9075a3c752777ec3e6b4863e444b7d681e04ab79", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "34ab709710ece59ee0a41693426a8e80a9c2f58ce117dfdaab4cece3944ad387", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "6457d2b208845744d3b31227dca71283f15098671ed26258774c548fe1dd9d18", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "05bfd19b363d73ff984140ee421960b3ba48e585e2c72b5658cca0b0f28fb046", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "5c5e42830fa3e7c72497e9cd4fc50ef17fd487194a10734c845b08b7731338c2", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_clear_session": "9ec6f277513545d0a4ce3f94de451f47dada0868bda3e989bd458f73566a98b2", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_derive_cardano_running_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_end_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_end_session_only_current": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_session_recycling": "3779415b770cec004f28d9626911b3ffad26d17e4f8ba978fff76932948ff3e2", -"T2B1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "1f3e81bf2cc05007524d179deafe6b9257b7490755b93d489fc35dd0704f6152", -"T2B1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "00a5c6f27532095d74f7073db5a8cee5bb8184e6e0fc1cb8fd3881bf1cc9c77f", -"T2B1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "2c466bf32dce62fd8dbac57cce5ed39fc113e6aff2d460c135ae72e18a5f3a23", -"T2B1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "4e2b7cbb365751c50fe5891feae6c166a74c466f80cd66c5bd87dc697bf47f0d", +"T2B1_cs_test_session.py::test_session_recycling": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", +"T2B1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "974602473b247873b94d3f8f34471206405e049570191aeb07d33286cac477bf", +"T2B1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74cc7c6cb730a7b633234583d8de84f4f353aef73d3e0d36b1a869567a461d6e", +"T2B1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "69eccc914475d642529a2788512e758a458f20870e4c0fd3d969126b1219cc0f", +"T2B1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "a3257a98227e4262eab4c805d162ceeb4f1f5799fc0f9820381c4c5e6f144303", "T2B1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "ff3c7e4706123ea4e0f111b2e8f6d58cdde3b4a253e2c27302f22ad15b864f1b", -"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "88080183a6e84644074f73165cc607906d9ce6508a06d91e34cad334dd038f2e", +"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "c58f460ce8f2e5d1e454a466052163e368ed12876f1f4a3b98e354923a2a3c72", +"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "8242f513a4794628ae7b16e9705ec62150aee4c0aa16f879058b220242d88f70", "T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "0ca4df8cfc49be43d21350e06d1bbb218736cb534c6f18a4c93a157686197339", -"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "294d1a5477fcdf729b6a42de3edf07a1f7ea9c474cc503e42a7d9845c1292c02", -"T2B1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "bef32c111d3d547be5fb80f395dd33ac4b60a7469295da815c41a48f353ea7c8", -"T2B1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "debfda8a73b2c92202962908eab07cfaa8844b0c7618811c0c891df6d921d565", +"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "dea5ef0a066a90ef7984c6c052563439ddf71aaf68043bb9420dd645d6fd38d5", +"T2B1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "adc0bf5aecc438d0ae6dc2cbda39f909619cde13ffa4a03df3e2fa067f78d740", +"T2B1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "950fc623e5dfd8b1bd05ae782bf98736f8c492424b202e5e20ba2dd10f7252c7", "T2B1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "5ac9b24f6a63a7ce8e93f05d23a9f1d57ab622ecc077b7810ad9ac1527045068", "T2B1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d14067c76d8475a1f91f5915bb941158933c5fd8321e166eaef67a94a13d05e9", "T2B1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "005755afb62ef3a7f81b807ac3fc6bbe705cfa647e353abdc117193397a2b7ca", @@ -2366,17 +2380,17 @@ "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "6038ce950ffe6c7e2f1ea79ae1d481c78f91267ec23d320d1fed4a4b7e47246e", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "6038ce950ffe6c7e2f1ea79ae1d481c78f91267ec23d320d1fed4a4b7e47246e", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a944e4159fa05caf2445f7745bf02e9135ac786a5638760104e47460b6a09f85", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "34729549d2e8828a4df78aac877f6160cebcf6cc81658d2ab6283c14d096715b", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "669921943a1bd7ad45dc208efda96565c9dd5535d228563e615685893cbd7f75", +"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "e7d320723a1aff20c75df42104a5dcba078c81c6476c86d456be847f95f5038e", +"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "e37748e9115109a9f39caa335f0dd201dd21cdf43b174625399dc55355bb28ec", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "a9d7c9cda1427257fd737ecf3761941fe8a8149e0495c4ea0885149305ef8adc", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "a9d7c9cda1427257fd737ecf3761941fe8a8149e0495c4ea0885149305ef8adc", -"T2B1_de_bitcoin-test_bcash.py::test_attack_change_input": "51d26632d8b3a6e07df61e68862fc29b919167ff915884b3bfc2531e0b959736", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_change": "8251ad89fd455dd3ce5c1cb8e3a4a399e0ceaaf6c477d470d100beb1b9308814", +"T2B1_de_bitcoin-test_bcash.py::test_attack_change_input": "95f6030355f72ec5f7d42a5bc82abf8f5b0f4f97d734239751589603a13da066", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_change": "b8c546f2049f905f23f7c4f23bb90187f15093a52951e10b292714404b7f46a5", "T2B1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bd5373a49deac614f556972783155e1b51cbdffd8d8ed96914321877eda5e438", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "bbf7eb113f2c6b3735cc081573667711f74df06bd2a3fcdcd1d23374959fa0f8", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "22184e314e15b8576f3ad3cf642690027b78b7ba6a677de7b8d29f30ed79d3d1", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "7d3e9ea70375d9127fcfeb8cf4ce5415fe596c85026785972c999290001153cc", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b17d85623f2051b9b69399ff8fc6e30f0e27c2a8e64f6a2101457d5046591a61", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e3d736b3cb94f866f6f5b42c1018e4819057304eb584938a0feda266c9d79c9c", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "504d16f0a0deec470a75d5ad1f26825a1836dc37c645718541c5193879e92ada", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "26cc326bfbfa51ec9877f4d891629f3eb828c2cc5005de4dfcee55ca69ce4ca2", +"T2B1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "2821a13709078b73309c8b2d0d3759d28a891dd37931bff29c0ddeac72f5e147", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "0cdddd68b21be7de1a64cb4af29634369914009a3fd637c2d35c7db0cf3c1772", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "db34366d09df207e692f84de1fa4ab208d4838fac2d7b23f128836e261301ee4", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "ab141a1bcd2d44c7e59b468e6f35191e89c9666c6f3f49e120dbdb5f5692ea5b", @@ -2413,8 +2427,8 @@ "T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "98f9eca93f0defb2060d34bdb2a0443396df7777634112c022361e18e622762d", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "65359b1a632a01a6b1f4a10f2b1da8f6fdfc6b47ef53b1d73fc323265a7f830c", "T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "6618068129cf6814f7d3f1550128f24a42b05e0a097a89694f905222015f3e8b", -"T2B1_de_bitcoin-test_firo.py::test_spend_lelantus": "0bb8017bc9fff653e75e44621eadc751a9cec0ac0c0b63ff8fed7d05f8947cd0", -"T2B1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "831753544e208569f7d9fa6a3fc3b4c4ebfe99b2fe5e84d6bf6160137abf1e93", +"T2B1_de_bitcoin-test_firo.py::test_spend_lelantus": "adeea9b82cecc0daa980973df2501629a4331435ebbd279d40cd2b4a5be88ce2", +"T2B1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "c44b103ff040bd6949ca3d71d5200850d167b25cb8b3640304d7dfdc71933940", "T2B1_de_bitcoin-test_getaddress.py::test_address_mac": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getaddress.py::test_bch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -2542,28 +2556,28 @@ "T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_grs.py::test_legacy": "7353fd8062f69de53d19cb1b5c8c7a1409913d5d6cf59b696c657cbf256120e4", -"T2B1_de_bitcoin-test_grs.py::test_legacy_change": "3f1674b935a033a743b1097529a023fc47f03fea0e3ee46f21317bc2ed0bc48e", -"T2B1_de_bitcoin-test_grs.py::test_send_p2tr": "ce640082cf898cf26c98576a397406edfa89fc67fde6cfb815b5ce9958556bbe", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native": "5dc1e35c730d598387ae29aa7e00aa703bce47e6fedea2fa90f5e45876905a75", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "2ef4ce5c8c150d3ce79ac506daa9f5059a5224967092dbf1dc5838c1dd0fd258", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "b2d4e8bd267ec8d3045f4d2cfc3615a55194dc72843d632eeb15859e11dab7ee", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "59c51779d14307ee80a38233e32b3976ff107cce979a867f33860dc016b317c0", -"T2B1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "bbbc63b5640e2f6045dacdb3e44315d133d8a4de5e43bde551dec5156d88be58", -"T2B1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f88fce98d3b7b31cf073e734f6d8f8c9ff463e79e911798d9f6901fc2c16a8aa", -"T2B1_de_bitcoin-test_multisig.py::test_15_of_15": "4169a49c666c613a24f3b7ac9387bbcd007197fe1d5607f95a0f8e62c269150b", -"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "fea8b15b9b1d5c651d79dde46f47f8c6a911911037f1c439699d93526db86aaf", -"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "1876a76008c13b1bc9eb3656c57cde901c9cdc2ba294c9cc694225c7a035e0aa", -"T2B1_de_bitcoin-test_multisig.py::test_attack_change_input": "6a60e9c02f7f6abe79588e4b787277e9c797fef4cbccdbf9418c77e755627cd7", +"T2B1_de_bitcoin-test_grs.py::test_legacy": "7f2f6ae3f7e9529fe4d6805bbf765f45633865c8d2136b871706adf3e9324612", +"T2B1_de_bitcoin-test_grs.py::test_legacy_change": "cb86c1cfa78f87df5064c8239bf87592d19152e5a360a77faf6f59193c0b1529", +"T2B1_de_bitcoin-test_grs.py::test_send_p2tr": "f403d453ff07f74bfe79f15336f14432e32d049580db4e083ee0115e49357d15", +"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native": "ab412c282ae9849a693f82caa350edbded1c36f9402daecb268587ba84fd4b2d", +"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "96d1477878e0af9f57f8161b311bad375f2af7017dafa32cf992721c72cff4ae", +"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "a029b042887628476f816a534a264377c24ad0747c299d18aab69d2f648e73fd", +"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "39e33a270f3d714d1d221df52e8d5a12b47fd2984a433d0abf8d7595311f5983", +"T2B1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8b425123058d3ceb1dfef9ca527351a89723dce66e4cfc4ff53cd5514a01a0fb", +"T2B1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7fb36fe675907a09ba9225f83a4dcfd4acdccb2702559955633ee0a9de955c22", +"T2B1_de_bitcoin-test_multisig.py::test_15_of_15": "5f594ac78c050f062fbe1217f92b8fd56fcdb4971bec37d14e9a5c3253c9eb3d", +"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "c0f757dc1153b6a5bbd1a40c46de4c6f4471e791072e199f0c13e4afb663bc45", +"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "c9c782f2f1fe57e8a2d19c7711725896edc9b0582764ffe1ee018e40f0b5309d", +"T2B1_de_bitcoin-test_multisig.py::test_attack_change_input": "a554bed414c9aca89b9556e1c021219700c3231ef52160297dc783bdedfffdd8", "T2B1_de_bitcoin-test_multisig.py::test_missing_pubkey": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_multisig_change.py::test_external_external": "54027a318e298c65700cb7bd5091cfa5d6bb3a3926699f4d1b1ae6362beb0142", -"T2B1_de_bitcoin-test_multisig_change.py::test_external_internal": "666639c5a5689e49b4f152715633782319e9ac37355a4092db799b9731f510ad", -"T2B1_de_bitcoin-test_multisig_change.py::test_internal_external": "f061c195669f77eca54c40e5b4d06b190586db5ea7846f8bdf458bb5f6fce7af", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "898668fb7679a615a8cba44767c2c9612d065b0bfff2985d72c9c6dd810fbbd5", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "8214354eb1d49071186d842c2166050c6b4b5f86686b4a258ae1d4f060d92c40", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "f59a0249cd4b3e33c3ad38f3ce4afaf012dcf39443dc6feb021b0ba3f232cb07", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "4a6147eda0125c9588d3c2fc702f61a42a18946a7530e1b2ed7ca63dd3b8b8c1", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "c836cf8ec079942761c32a149c1457ea76b1a1747e0cb1dbc809e55f8aa7bf6f", +"T2B1_de_bitcoin-test_multisig_change.py::test_external_external": "2c718c589032558a63bc199880f0cefed441acc4513f320e3a4524b6cbb36a93", +"T2B1_de_bitcoin-test_multisig_change.py::test_external_internal": "c2e599b35a239ffda4f2e63eb467034201fa759507892bbc991f2a5d7a0b40e9", +"T2B1_de_bitcoin-test_multisig_change.py::test_internal_external": "e65fb18b3bc4b6f9ce5986997c8d5bd65878cc388a13c4973621e1e10693c4f4", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "322968121157865cda09b5af09d1556eb631b7e08eacfc16f9e2350f97144f1e", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "68e5a45e979a0b68be4c595d9bcf04a54ee23e8d3f563cfcc64972f54a0651b5", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "b749e4a68293b3dae44bf1105e0ff74701a02bb8d2d2fb5aacc78b1103ad3eac", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "ab9fe282fd835ce42bfed7b374207ee5f2f3ca9cfc79610d11e4bf559032a907", +"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "599cc9ef6d2e3ded313a770709c3da3779c9d598aca2efad6e7848549ca9c60a", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9ba1f92c611098ad9f5ebf6d372bdb6ef279342d0466251d89ca73c99c3e407b", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "8d3273ff8db1dd138019a2b2597bc49aca9e2165ba0f56fb20062281cd5c8d14", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "a43329c45f85590778e2b0ba952cf3100c142ca988f230a2fffa9f277b242995", @@ -2592,25 +2606,25 @@ "T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "d84d849b75fe52347f3800f3c105c22a3823a8841eeed51f3cac18c6739120b4", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "970cc4e093dd2bc909dcfb69543fdb4ee64d847ecd5855b70a7acc8431f856b9", "T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "6ebb1de72fad46818f37a30624179ac0689d50b3727a3579e9ef833b11209485", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a7727222e18e6ec6ab7f4323e2db837bd077e4c68fd55e2216779fccc8d6d203", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "43d7d15390dfc4475554b64755b8c9ef905f4e95af207bb8388b39c8e53bdf81", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "221f3ee68ff9c6c292176048feeaf44fff957cc86744617191f7e403a3cb427a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "84e5769761e714d422c3f6ddecd8c4a8ea6fe2c832dacf6c838c855bb0a86cc5", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3d21f579c13830808b091e3493c72d10b63c20fd87fc1b419ed30d242f49ba59", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "4cf112b5754deeacca4fcc1fadc4085fd815814d046ded37f88092c8a4d1914b", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "8707d2ce8d7ea42a72137743e2b24b8422045c2b6666d014351a3614be675ecc", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "91c584bacd4c34eb6755a4700797b133f22feb8465aaf1927ff1be4532978c70", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "517426f4f4ca9d983d14dbadf03fcd8e672b7bae7d46a0517d741bee44a7b329", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "a95ffefcd9dac8e2f079301987c84a84c66579c6d0d04a62e92c17d4b18ff091", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "2b86f5a5cce6c10bb80f874928b1e972871216415b6c2326cdf7aa12755362f4", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "65210b1e39541465f521621696f0d1d42349cd73e354618588cb2b280c111a4b", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d65477632c55ce830c069ae02baff10df866d28600524f7537908de6e2d28c9c", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ef598d4253703b7e7eb9fd9b244f0f88b0c05b6693c806f5a94be38bbd875f7d", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "81d01218752afb42910775d903e260a6f9abc19378b8afd4c90d6fae1204c41d", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "173267f69fb36674c972fde0318e2c4312aab182bad2c5d4030654ab52841663", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "d15f1a07b7edf100bee97da12d4ee765633864427796ffa2cb570ab81f220991", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "9a746bdb575f59e49e3aae0c576095d21bbca55bb5f98366834c6dbe2a9bee05", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "46d05dc98c3d2a9853ad47fd96565119578cc93ec47ba0bb24f3500eab636d47", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "d09f9a22d21d01fb9493ce81f45849147ebbe111aa0260a8dd96e70dc5d8f4e9", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "2678cb264c4a57de351680f7d33d38437058db87f2a06d188c8391ca17ee27a5", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "eecbb3b996abbaaf0296c31505080c9a8db1ee4a0da7031f324e564f0d5ef9d1", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d8e42558c27ee7bc44d1a27228daa1d90cb17b964aec6f4d9096cc4356133700", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d4b711e5fee2182f15367619eecc06c3e38450eea3a84e65a6308333452163bb", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ccb7b2cb8ffbc6fb0f15ca461351b4d41611e53c6d2c6a24ee0675cfc5df5f9d", +"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b27cfafdb16886c2178ddfa5537bf0a80bdca7cf9956401861adf7a329fc8757", "T2B1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_op_return.py::test_opreturn": "cb0830a5af1ad42053f232520f0284bf0df8cdc9d95a16914f3339614a78128d", +"T2B1_de_bitcoin-test_op_return.py::test_opreturn": "edcf163019b3b1ede3b9f0fc6a5da47729e3eedb2b58de2deb6815b7e6942672", "T2B1_de_bitcoin-test_op_return.py::test_opreturn_address": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_included": "3fc8077afe1ce726515aac46e6c0d70c1c3e817fe772b78d1c5e3c1f7754dfbf", +"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_included": "230fd79318963f765b6af20289b93a58506e5fef36682da2040c3656745a2f0c", "T2B1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "ec1579e5fe91453516f99a2f00a793f36c45aa2edd03ca283ed14e2b466e8ba4", +"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "dbe811a1adf3490b666455e170e1af41b8c926f460f6f1e5ddaa5e69e48aaa94", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "5a8f5b9d0f5aca531730e95c00c08b3593960ad4216583cc7ca7515d59adf2d7", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "5a8f5b9d0f5aca531730e95c00c08b3593960ad4216583cc7ca7515d59adf2d7", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "81bc5d94472fb241a82e2fd5a60b02502bc93cf177e33e9a78bc3c8bb529137f", @@ -2638,103 +2652,103 @@ "T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "16063995c0ecf37f1004070936fdb7532ad51543510e9be0d1c8f3e7bf8ef346", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "50ee60f31032745dc76c50fd67bb531ae152016e16832316888f1c5760a068d1", "T2B1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "9bb95d579f8288c66eda148050a2cf54bb0fe43642d25387a4d72ca6d15ef95c", -"T2B1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "fcdaedc7c533b3df67ac4169e1b7d2cf0a902f492569b19d3815f36a6b8f89bb", -"T2B1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "b4be4659534446fbccf12a4b98e553ecbd6ff3cce4971e1d1da9bb0b4c2d744f", -"T2B1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "fc93c5c26b4c140357cd8c4723e2427f3a602fb33d33baed2b2be7eefc20f473", -"T2B1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "fc93c5c26b4c140357cd8c4723e2427f3a602fb33d33baed2b2be7eefc20f473", +"T2B1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "000deaaf598808ca85fe879e3be192727bf6e62e58e052e6bac04bc496c774a0", +"T2B1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "3615115817fdbd018f787f65718c3ab98f3edf9d46b7ed30b122ea109bc090df", +"T2B1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", +"T2B1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", "T2B1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "6e729dc9be3b81b213d6dad563187d132021dc7a040a58b092eeb63084110d7c", -"T2B1_de_bitcoin-test_signtx.py::test_fee_high_warning": "5e38472eb9f6b508a9225927436ef9b32d62faae7835f2decf893452cbf433b3", +"T2B1_de_bitcoin-test_signtx.py::test_fee_high_warning": "85359b14d9ec5d8696550bc797dc9d0f259a04e6026724f3f58e004a916b50d3", "T2B1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx.py::test_information": "3db0d3a98bfc4f287f611d540fee1362329241fbb3bc782f7b58c1a586679e8d", -"T2B1_de_bitcoin-test_signtx.py::test_information_cancel": "1ef1f7b1df00c2d85324c75e7dc7f490b721455bed7632609c3e69a2a605d8b7", -"T2B1_de_bitcoin-test_signtx.py::test_information_mixed": "ebd868932ff7a3750b078330493823a0b7f4df2a7e7eac5ba54695e5be17c613", +"T2B1_de_bitcoin-test_signtx.py::test_information": "72c468f4dd06e26000fe24c2186fe709d2c4a86b7257bdfb0d54a312ee8f5f5e", +"T2B1_de_bitcoin-test_signtx.py::test_information_cancel": "24e30bcd2788a364189f128e57b90c4c0d66be774ae743dbcde1bb7c55199ffc", +"T2B1_de_bitcoin-test_signtx.py::test_information_mixed": "188aace321422140aa500558fcbade1a6a3e9781e5d81044951aa9eceb3d0de1", "T2B1_de_bitcoin-test_signtx.py::test_information_replacement": "dc8ef4c5e4cf2b7aa990c798b276b489cef0efc4d120256bcc90bc463d76e2d7", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "91c8310e30eb4d34d1a998768ecb2b60098ffc5d3aa4c8a8da71453c189aed87", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7f222e03954bd3333b3b6c7b4912006b77567a81d1e14f94a56b7255644e82eb", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5b1ae27cbb04baf79bf8368f63d3288132aa189091f901c59751a2b243ba283b", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7c53ae00277f68ab68fbea3d0a1a4cacb14f03c48c0c3dd00a8f5ad1005c5de2", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "46795e50e184d1c76ac4279d04fd3ae8f2f169bfec05c7364bc1f3f8f9f72a64", +"T2B1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "9d9bfbef5c7ad5f159ade9416edb2d7e866047f94590f63f7e8922257def4d62", "T2B1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "a00bb6a5a13338eee12f54b57d14dc6d3f496d78aae37e104d97bb599c897fc3", "T2B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5816a0fa4d0a1b4f0d2a3471f2e87787cb2b847eabf313996754cd3efbedc168", "T2B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d983e4958186ff437d4c7c33cabd3410d3632d53a5faedbe17f08382013e731c", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_change": "61c896b51f0fd1a0912885280006682ffdc708a8a8fecbcc6660c2fb4c33b023", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "69265b50597beea5d2ecaa29ef753e1e6af0fd6d4319729e5bd47c25b034524b", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "df8e0062479a09df42d57f89cfc36b22dd12477c9867c51d8b017f7ad3bc2f9e", +"T2B1_de_bitcoin-test_signtx.py::test_lots_of_change": "11b80a45a507801dc64826bba471d831def4b2c29e468442eda5c644a6918104", +"T2B1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "a16aaca68d7d3af423192df6f52c9521f32c677fc624a886014a589e3e7b2516", +"T2B1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "11f306ed994b3058553f0acec9cf3aaf384ba6496ef36252f759f133dedcb44f", "T2B1_de_bitcoin-test_signtx.py::test_not_enough_funds": "2727f1b20af9256eb9b6ce1d10ea62728a5a9d6b8c292f544d61bc91a41f87d8", -"T2B1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "93a1d8ec8f82cab03ffbec9eb384c07312cb11808cf591a79df829bf58c38c73", -"T2B1_de_bitcoin-test_signtx.py::test_one_one_fee": "b17614864e084d07ac030f4dae7cbae2c2fc868c9449d9e495b020b8fb26f389", -"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "795819d105ed0ec58cd38637f6b0511feee256b2c9f3fe4dfa86d3aa0047bb46", -"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "1a595c48a161301cc1a137e6fd6f75aa5923e6b695fedded17de7298d0ab8d79", -"T2B1_de_bitcoin-test_signtx.py::test_one_two_fee": "743c85591b14a29c75fe078fdb5c7d8b53460d7547181d5e9c835b16c22f8c6c", -"T2B1_de_bitcoin-test_signtx.py::test_p2sh": "933cb47b587ceec83e3f269dffaa6d60c43bf16e4ffbe9854ef67eb1d3307f64", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a3931c632ce999e3c1f9633fb473d252341541c80f70f3539da694a34a5e945c", +"T2B1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "685bac936703f7df1bd55c4b32763eedd2f77f4b930e920c6ac99922ae73011a", +"T2B1_de_bitcoin-test_signtx.py::test_one_one_fee": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", +"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "c20248f6f986623cfef7340564e62157c47afa6b3e3d5c8a867ebf54be8cf0a4", +"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "0dcae4991efbff6fb9953ca87ce00ae587e003689f499f84fd4dd9d1f131d3fb", +"T2B1_de_bitcoin-test_signtx.py::test_one_two_fee": "81cb7b220c2ea7291e15a4ed711ee0536b1f5df6a4c35fe72b560eb9bc7c0ba3", +"T2B1_de_bitcoin-test_signtx.py::test_p2sh": "b607e39d58456671d3ebc5fe830e17c901aa77fe4c2aa9e3761c19c469c7aaae", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", "T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx.py::test_spend_coinbase": "25484eee5ee681a5454fa695731b1dc137e3cc3b05aa213416812de7593bc412", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "be159338e3e6cd23c6a2c0ffda8847b5197fc7ce4bdb7173a7716e1e30a5a34e", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "85214fb4846c2b1641472948db868dc8cfa558fa8f791000c59c6c050c852427", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "fc93c5c26b4c140357cd8c4723e2427f3a602fb33d33baed2b2be7eefc20f473", -"T2B1_de_bitcoin-test_signtx.py::test_two_changes": "540303bdd58f3d94b1e2c1ae92124164c9256aaccc373ee376aeed3551f3412d", -"T2B1_de_bitcoin-test_signtx.py::test_two_two": "072942846dbcff5fdf75aed50d120b4ff21a429257baffbfd5921ebbdd017baa", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "b17614864e084d07ac030f4dae7cbae2c2fc868c9449d9e495b020b8fb26f389", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "3a8881dce8a4521e30e09a55bfef1b265596357c748e549136bdd1eb88e47410", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "fcac1185c2eb3ff45e357d5a291ae736496d1cff61f6a2641657ce273934c231", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "50471e0e08f62f6fe1ef97cbf42de3ab0553e4af63887070610f156c774a0ac3", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "b17614864e084d07ac030f4dae7cbae2c2fc868c9449d9e495b020b8fb26f389", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "0560141ded0a4d5b8fa2690e3c49a25128ddac707dc091605de4e37e91628ede", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b6732a002655f87afe33e5e2d400f85466389cde88d181e8bd3b60a1f718ba11", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "c05250788539c1ca796be6aa4e63c4d2de481cfd92b940296f07b38ab9d75a59", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "0f3e6481e8063c821b29374f6d1a5b4923a7925eac6bee0dc03a0b144ceffbb4", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "0560141ded0a4d5b8fa2690e3c49a25128ddac707dc091605de4e37e91628ede", +"T2B1_de_bitcoin-test_signtx.py::test_spend_coinbase": "9bc8f5bc8ef947f02f98127a87244e1499fb92ed6df5418f00c15d0e2fe28560", +"T2B1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "040164683c69c721b5e98053be41f8a24e2d26e3195f936896f8dac8a40a2cc9", +"T2B1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "bd72aa1004c5ce431dc96bd667fdf211694187e3a4e65f985dc53613432a5d12", +"T2B1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", +"T2B1_de_bitcoin-test_signtx.py::test_two_changes": "c3c89bbe716ddce1a52e1e442f6da66b7ea7655e0e18e4bf2a27bbbcfe43a3ef", +"T2B1_de_bitcoin-test_signtx.py::test_two_two": "9cb8e8e4a2ac358e76146b9d309a94c494bea9e3ccc0b1a51aeffe66ed1013a4", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "17f53d9b30494f599b5e3a64c0e6e67724360093b719f76ee69ecc9c25f901f8", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9d94ca4052e1d34617e941b3731619570bd21e8773a2624929a9e785292a2c9c", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "8e28be5b97f6c05047d5b44f2701439da1542e2d9a93c33385404ca025b0cce8", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b9593da6b2d9fb2b0a87b4f9a70f99e09aca68ee4e254b6918fff37f5123a7bd", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "26c6e1b2cee63ce391fe822137059b2b09ac9e25b18ddc23ff315f7d6100365d", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "a072a264ea132ae1c801c5b70edd8958e58362949572c049ba0dc2cf917dd8e5", +"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", "T2B1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d96a42e2a703adf8df4d16a0bee8736a18bd9caafb0812807a1342bc0e9b7f6e", "T2B1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "9d3d6f74efe1d8e9ee80e5c0121dee99f59cc17d76ba19f6e47a050d8f8aef06", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "6349c6f3e72c1f2e67acda7178e3f4d4514235fdf964e1d1a7485bb26b603c48", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f70e993f45372a6cdfce34a8ba47565b7bad0379119978201f548a36d4446a34", "T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "63c725bdba12fc6cb6a75bd04edd830bf0f044a5ebdcb8fb2dfd6b1afa6b04c1", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "5ad0c9458cfe42feccaaa226b608812f5abef376f9824c79721b4789ba851b84", +"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "cbb249c8d930b390160dfab9a4f59622a100ac5bf5df44b48b9e81f825dd872d", "T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "62234a950e76e794a766e1088c25116a0c8d808f8d33f43f26607c17cd998d1a", "T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7a14ea7b566e186f626e80776b499fe14e4089ae26fd7fd6025b243a7057dd12", "T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c7e225b7e25f2d028019d385bc36f190399d86d3635006e4e5e6b5e243a53b7f", "T2B1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c8a3ee310e9afef86c4887c768e6e92273307a3f8fa6d45a459977a4e0b08044", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "a1b64f3bc621b3921260ce2ff883bffe8c19df017769c0122170fc9e509e3c55", +"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "62ace675378d9c932bca90764e601d06139a657ebf2bbf0ba4e167640db1e0ee", "T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "ff017e951ac908adfc95b4d0cc96eb231d071ab8a6e8add5ee0ed201c5d4be73", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "84e3ed9e2814e15d5f9e82759a7590a0cbec4ee2ce5591cf927b96c6e54d8f3d", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "7a7794f49666362a5dcbc2f109df2d7ccdd7bc854e472a2d41c99b755065d266", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "8ca6697ee11e183fce62861534ce29971476afd6d68b6fe4e2ca5f0e5abd5fd8", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "7a7794f49666362a5dcbc2f109df2d7ccdd7bc854e472a2d41c99b755065d266", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "62dbd8023ab3e2be1bf8dc9e1c48241fd6457d39100e22c49c23ddf71fbec6d0", +"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "449e4bc9f703d13502e7fd91d753b7366af162ed7ae5626b0f8f366caf166de0", +"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "7ef18f4fe1f5c5f4a16bbc9b1781840a9da5c4881d6b7d3da1e7ccc9c9d23a31", +"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "24344bda508587abbdd96dcc10322433d5af1b3a3585647456ca4d614fe0718b", +"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4c14c059ea15ce8243bf0a4a27d7d758173966830529f60bd1eeb8a4b0cf39ca", +"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "24344bda508587abbdd96dcc10322433d5af1b3a3585647456ca4d614fe0718b", +"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "1455a9f8b8d2b27b4dc2d2297c9bb0b7746b6e92207dec1e8553f0c5889de9c8", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "fbedfb818206d67d1b621ac924d1bf72994b48192cbe52bee4f6b8bf0b596fe8", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9e92ed8da57f14b16b322f5a0683036daaeef0f4c0eeb54b1201fe784eb2b3c1", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "9f7a78920101ab0ea0cc1ad43ef7df442cca728a5ca88f20351314fc65d22227", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "8d26c760d3e8c4a2bd85a9645f2afbf9e4629e7ffd64e692a243f5b773ad5a84", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "1c33fc42fc9501a3cfe1db5c0e5f4e8364b5bbace828c53ba827026aa9a1ba82", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "834143d21595c3b6ad5854adf851eef0a996bf8610ec0155e708624e5646b61a", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "a1f58f8dac84572d265ad9ab242925357a045dc5c77655d202998be29908411a", +"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "61c78e731e69d72cf3c03f378a311981d606734a0021d8bf5ae4c6ad5ff0f0d6", +"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "f9923fc110cc72ff72905a51c06da6cfafe7ca486b2d44852570e39435727cea", +"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "987ac842d791532d69a40c05b7c8bf40b0ecdb92e7aec699ceea3bd7ac70624e", +"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "1cb22a4125d3a5c228c15ce1ccf5b4bfaf592b9c853e0ee266f9faa9a0a261ce", +"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "86ba6041ffd4b447c7642446e4a77039eebd9b8868e5a88eeab43f56d69f2767", "T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "27975305e666eaf7e79fac1236a7b7587883ab66696c0d72b86a43c77976ac60", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "27975305e666eaf7e79fac1236a7b7587883ab66696c0d72b86a43c77976ac60", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "27975305e666eaf7e79fac1236a7b7587883ab66696c0d72b86a43c77976ac60", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "27975305e666eaf7e79fac1236a7b7587883ab66696c0d72b86a43c77976ac60", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "9c069fc7a46725d0d240059c11811fce4a9e778ea6a04d158afdba6fa5b1d9f5", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "9c069fc7a46725d0d240059c11811fce4a9e778ea6a04d158afdba6fa5b1d9f5", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "9c069fc7a46725d0d240059c11811fce4a9e778ea6a04d158afdba6fa5b1d9f5", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9c069fc7a46725d0d240059c11811fce4a9e778ea6a04d158afdba6fa5b1d9f5", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", +"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", "T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", @@ -2753,33 +2767,33 @@ "T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "14b4e1cc7f8c5abf3e87049dc5188d62f226574912e100c82546a31853185b55", "T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", "T2B1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "56154aa7779489200f8486d2dec258db0a6fe10fc75e18404d341e1c98d06824", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "196bf513610493411de90ed88a2f8beff7f8213734459af7da99bb9f3db8abbc", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b5a10442763dfff73f8c3501baf7ef4b6df8128ebe1833ed82e08075238a512c", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "0a1ca42fd8129f0256bc6c9210b57db96ad7e645d11337a29a08c43d19363f04", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "3cb5e2e78cf846e6c8eee5e33afe21dab9439db4a90ad0bc61e0b2d795d36347", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "1713ed6bc878a150a4893b80b94b7362b3c678da3e539f177b49562d3c0dc468", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "9e602cf653ae8df1fe932469800ecb9c3d292b2963102b9bb9867e11006c5bcb", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ef2669bf23057feb0b0e722a3f4684e300519f30c5ccfb554b7c290aa9e1ff8d", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "00f18cf7650d70b5270dcde95a106a68386c7e2b3b70887cdf17b605e41e90c5", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "fa2ba6b6a9c7567e2fffe9ef1223da51cfb90206183a4c31c6895b361efc659a", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "147ccf7013efc259f68c2f12a0fc2320962140791585a2209ec00eda9ebd117e", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "778de4d22f2b61c90edec07d46d6f9fe355ac08fa8d95744fb09e72848652d8b", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "9c7ef37246a14de5d61c73e477631f75c6f2c9bf388067c9b73d1032c55a056d", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "8b5289e5a7d08256e4bb8d933623f1908d3ed4d6b26e6ec18951622cba21847d", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "0560141ded0a4d5b8fa2690e3c49a25128ddac707dc091605de4e37e91628ede", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "42062ea5d03d3edfb565793fe8a9d892378f33818595e022f6f36c7ecf22508d", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "abdba6ffe3173326f73bf844087e631e487efccfdecf5714e3e7accde937056b", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "134121fd05962809d58a95865302c3022ef7fdbdc0e27c9b9edfd2db6760ea92", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "194106dbef0d3fd6a1201ef7a8facca2696d8f1a9a0ef069e2e4580793ee9c85", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "29986a345fb5325b42bfad4d65ef5868a7103eac2ccd7bc4787a6041d9d24f53", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "a31b005a9abfe1c758d6846a2cf8fa9d3c7e4283da62d548d743eb7816ae3952", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "55525cb4f608163140e5d0935ee526a3e37ce99713178d84ece9610e351d490e", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5bb943081f18aad2a3af9f51da63df8434fbf86d072deffd94524a8a54b72e8d", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "240f5e7a87054de7908ea874b296fab76614d53143a07528485ec8bd21844a1a", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "c3564849e861cc11d1e7a7ce5426d490707051e1b9c215b5caca7caad1035441", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "f29bade035606dece3c0493fbbe3240d25c820862efe239a785c248a53d38ab8", +"T2B1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "150c8940b351409df45af26ad1e7c0fec4e3a0c38f04262e6582640c95681f0b", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "a5c8b15005c49a5d392dfaae3feac602029b78922c22ae92d894e3968657c419", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "72ee5a50a69c1ade795502fe0d0da343a56967ee2b4eeb5c8add4e880c792045", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "630353a90073337570089caf8d0a3a332f98aafcd109abe674416f0d3b1dc288", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "c32d3baaab3605e4ffc5162f7dc3a049ea0ad9352718fcd116f6b5da0aba0251", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f26d57a4642e71114bb6ccf712314e5b6abbd20c13f91dd5195c0fecf798e710", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "14c3284982aa4a17dfe634931e5c7f12bd79ab45b817b12c9f125b5133120e4c", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "df9805100286597f7e6f0ac63b9aa3d0b7d03803d54f0d7e53c4260be767f836", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "65f459017bf523e2e072f04d4f885f77a77e03b7710e228d80ad3b89662703ca", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "58501c6ba4af9663cb7c0a2fa34fa983893c3f82c3634af029c1a0986e68378a", +"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "ebb6dd9b0ce1a22234c61e9e15c5a1876cafc4e948f7637aca644ad5a8932bbe", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "3714a20c30a414b7dfd5f1bfd1134821267c5011919db27ebfa3dd2f3b5e6ea9", "T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "48fc60bcaf698d711e1f99fc21def2e71f2df6a988575e02b4567a454110f1c7", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "0c0f0046d1de05e0bcc62940e42c07c156e6a173c5639d438dc8fe396c5a050f", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "c9173c6318c2a61479d34d30a15beced2e48173903611e62761f90bd86bc3de6", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "56f1c47c244ebf1196f7756dabda064414792f73065a29f84ea6b1cf58103836", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "7fc274044e02d655ddc14c3584ec5bc991af2317bb7257b2d01a9a3890ecbad7", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7f09d857dbb13690f2195d6d1526284b3e12219f3628c44625ddfeb189a9d493", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "1a929023ba5ef4593cbc4db8329d707203f8c29f7b5f6bcd97d37d5e8221e5e7", +"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "7e9399fe119cfa0246244552e5751af64e4e0bb5624a40c5ba3206f6808c7731", "T2B1_de_bitcoin-test_verifymessage.py::test_message_grs": "079405991d4a41c64e747d241c53cd877b9a713bac0f830639b628b47a2bac45", "T2B1_de_bitcoin-test_verifymessage.py::test_message_long": "3f23a4abbfeac518c46d3bf984c639e483ea6cfb22184bef1617abbc3c29a7a5", "T2B1_de_bitcoin-test_verifymessage.py::test_message_testnet": "9d8904b8bf95cd9d66d8beafece1fd54d8dc6e6d7d91178c99bc35e6202bb39e", @@ -2796,8 +2810,8 @@ "T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ce8762d01111784f27a0d1b4caa5e19fbd663a56cc34fc5494b4a2b6c2a5cbdf", "T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "db3c784afdf12012fd50d3a39e765dce8345a71e4b03d470e4923c8b1ce9eab6", "T2B1_de_bitcoin-test_zcash.py::test_external_presigned": "b10849bd341489f6b484ed89b82139b2e753df1538854c466e7f67e4b46aaee0", -"T2B1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "839e446ae97882e045707153d7736efc62500909465097d1f7590401b5033d6f", -"T2B1_de_bitcoin-test_zcash.py::test_spend_old_versions": "14f799ed510e7ebc97016f6fcc75189a3ceb27511449d3f60f963fd4ae756062", +"T2B1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "730297d022acaed2b7cd9df0e7e3521a997333738e4696e76329d24a5dd08480", +"T2B1_de_bitcoin-test_zcash.py::test_spend_old_versions": "7d5d76c0fed4407bf01af1590c8db1a9b89e602b531ab70930f9e4bc5e7d271e", "T2B1_de_bitcoin-test_zcash.py::test_v3_not_supported": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a55b6e7850f78227ebfc4ade739cd3c501e63d12216486e577222cc79214eb01", @@ -2805,8 +2819,8 @@ "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "f7716b74381d8ec784bc19277c00a98ab8476b90714696696f1c032cc51c7861", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "d37d474da3480be24f20ec9bcfda46b1626846503ad7c266c7eceb7ff1b339a6", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "9055dd7b306ae80775a340422d5e680f1ff02e7735d43cf61cde108c8bbf0bbd", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d3d8b9c70f3f20f8d1d46a0a3f6383cd6762e9b455449b2d38985bc5cea23a40", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "8d91a0ca5712aaf09992b94a453709219b2f5c1cca3b3d8904020a9e5a756e44", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "88d93c582d8232afd07c5436faf33f31c1d8f9d112d96a98734e1f250a7a1223", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "49b33a3d3777cb8221fa8de4bf1e0ddaa2eec943a4caf050a9d23aa9a49f9a47", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da56777cb68977ed9ea25e6e6ab1725b5d8cbc38d199222df1f76cca982e42b2", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "75b6a3c7218af0adebc874259a465aad62cca10499e1b3dec9a72c970fd31d7d", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "5848457f8481adebb6ae1a93c57fb5ca14ddbd3dbf8198ff9e860c4ba11e5190", @@ -2836,17 +2850,17 @@ "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "cb118e86c33cce55370695713420331232ce8d6ee7fb07f3331872909440e9ef", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "8cab5b28da3dd109f5658ee8a9cad62bbb6c4fe0e2498e09c0457f33fa2761d7", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "e0fc33477358ecd4562343c15608a6ae4ce586018d10b6efe1d71e8003896a9b", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a2b39f1c3f6aff88fc65ecb212f4d6f1f839606b2b689e384a59def9716b47ca", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3315040519a5711a2b1aaa9b8c6a41874fd1a2e24f27734f7afe6105d4b3a1cf", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b13ef68f1771d267655e9f4cc9de0a1e7a1237e3abf495d6e2cb5650665824d1", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "428a462414fa742e6fd013afba55ba9a18f70c8279fb79574ff731e25df36d7e", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a0621c9655289043412538c04cafad9659f3d3877da64d064826dde49cdfdc05", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3140c515f1fdd091b93154ad75c9aae0ec3bf7ffae02be6988a8505a02cf97d8", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "198ff808cea21766233fa9bb0011f0813d8653b6b5a9a1d3ffb535babad5bab6", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "df752dd573e0d3cf4d7a507c41e6806bfa14e479b637360cfbe7c3b8c8374511", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "21f978512f65465183eef22d984e21becc6612e35df61048590be2b2a7e30f02", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "b4903a6252627146cdc74ae0e09e0f8be618cdf6d96cfc8018b3f4e339880b8c", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "9c5dfaab73c812fce85232cef9c369885e68374bb21b03f1fa0cbb262b87c3c5", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "94c9e48cf7c1bb45dc4d0b0cde486b10abcd51648861eea0274b66c1a443ce9c", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "e8f3d8b9d900f13bcfc99e7513381a793c2b15dc77d00f45abcb9c860de87493", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "55b41893a01914c0cee79ff1471a5aba7d973a69a755dcb163f4da675c455fb0", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8992b8e5331aad0cdb13c38d92d9d8b367fd7bb594be29dc121dd36e89283530", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "2631ee630cc14b7df240a715d8087a66694e3e3dd0850a6a2584d89e70a89676", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "da36b10f7e23b075dfd714a0422834ab14190393891cda85f3e88271b2c7fe63", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "834878afb0df1c4e7442e5f675407dcb5b98c8a23eea1cf9a28512dddf4b3b1a", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "981fb5f68dee0109a032fd56af329bc937041f350f4b46c4ff3855ca17431150", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "4fbebd4f60f43729b46cc2a0416ae8381c5c53e3b0d0e2829a724db585fce95b", @@ -2876,10 +2890,10 @@ "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d7927839a8c6543837e2c573feb0760a139af0e30031eee2958e1fecb45e039f", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "cd06b142382abc1f27645976192e81c13ec4cfaf74885309161320af0f335a8d", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ac83f473fd6f61e3a10f73bf7536bf3fcd71b76c031d7c5b4ebb180ebdafc976", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "6d39bea9ac4a4f4dd12c1e4d112c716c471cd3722d56a5db8af119d30a1b0bf7", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "925a461d2856812da7bc03b1816f6ffd14013394f011e153917d55141daa5453", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "d35bbc26ec292146fa10684545736898aec290de1623f5c430eea7fea80c966e", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e247dbd196de21774f9b050b2b975ba9151b5255cd647e3f536892f9b20b3353", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "3845a640f1008f796cb06a4327046fc826e63eecef2a836d31b607f6f77afb07", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d3253cc61bba8c6d077f848004ef47068486fc28bd66c97a57c18f56859bb6a3", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "ecbd3a9eae199cf7cb4eeb4cefe97f2d637be91329aadd20557cc937d96924c5", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "43c77594f91a793d60e524a0a6d69f2872b2a42f267cfbd274e965db35203684", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "e870d0c0cf5d56e3cce973c0319fb7f48b6b95d7fc4402d80e64e58dc3017636", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "aa6b933b44210daf1277b34bf3b545c8dbb3f010b1dfe38d3a41402b192ab284", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "0ff26a5b8e3d2792641387617c76275e6b54f232eaa45193b2fe99077c442dae", @@ -2889,9 +2903,9 @@ "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9c77f6ef939581a6e0ecf521b920127da495ba1be6ff0fa345cfd8f2a5c3f089", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "143147c69b90a3bb11122e32487542c4640d850b8e5f73bddaa56b7bada625a9", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "18d9ee4efd73d95e03ba3111fa7d86ce2cd73ef1a76764c43603d7c13700dd7b", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "607f48716cd68fdce82fe2b390dd965b668a7d29f392f3621561d562bb6e52d3", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e11afad503772601bc9b8477e665f86b396cb2f76b37fb6fd9dd5dff482bb20c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "171a95e6d11c39c2015420b0d1405bf594172469af33fed5eba9239f2cfe7bb7", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f3ffc4a632f3b5ebce7708cc3bbdbaebfd5291086ff61d9bfc7bff406373b046", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "63adea0570f2aceeb33b8167a3ce50399084698ce9b003241fe3755d9dd3ec26", +"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "12b22dc47c4f1d41b877154073aa5810e085ed7cc412a5f06c4b66c794ed13cb", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "fefa0a79d2263680c44c39627ee51abbed6a5a948bfc52efe86ea6545381e105", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "650aa7880bb3e646a4af70f48b98051f802e9186654ac16cf4e74d2f211362af", "T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "6f6ea6325e11668f3d66066ebd6a9eb281988daccdc58e39aafa899ac3d69a52", @@ -2920,10 +2934,10 @@ "T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "7357c78e8516fd29bcd999cec5b307ae78734b239f07ba31531f67aeac99a20c", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "f94292c44e520436a40b295633746a9b3936a98e5a25629c9d71f84c7ab556ac", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "876dc5c6a1b2c434bb180f87be8de89a251f23618da482ebceee98de31be9605", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "bea6e8e8f530af597baeb24f29464afba371fe420b7cc643bdcc96d5d2d31101", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "271c851ca533c6ada40cdcc2c34e2189cfca78dd1d19e824fd06c8cec0b6e793", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "618e39bc55696f19ac34a9c6e9f924f9b610de6e9ee84489013bf3831cfbe0f4", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "945f3226a9fd56ce04740f710e9dd69185f100db63e0adbea22440e518b72364", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c6436a7c6956c21bcdc5f981e2a5f0904b692e87be314880ad599f9e796e66ef", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "2fd0168a9c616997bf454ff78f34ba19e977696073ea9832a0fc1571f10a8e31", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "43d6ee6ed24961dfa604f0102738d873a2d59eaa39c6fea511010f03d4d2ace1", @@ -2959,6 +2973,7 @@ "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "c9b781b91eba62d0eea25d1eb7b62d1340c82c0e55775b444d8a9357f845eccb", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "691d5868897691d2572ccc20a3956d3ca5d990c2b806f8f14c62baf16b41355e", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "4538ed84977b90319321d1478baaa240d1bdf60300ebea65e1a112bf352b3af1", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "5eef8431a96a65eed409e5e31dc31717a3faca68bd2a46622a6387235bf1073e", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "95ea8204bdbbb193f1807b8770f45b447c377d1dc5e2fcb0b46f5c643534fdce", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "b18ebca699ffc0c7139bb1bba2f3c0bd725b19e28717cda2e5fafa028e78ec6b", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "a803318a9fa4dd95fa536abd53e8cf164b8267e4d7613c43feb5743a84c3aa26", @@ -2987,7 +3002,11 @@ "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c97e226163159fe09019d9eaf88687b0ee94dab1eb325024d0fde64bd5351c4c", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "60a9d9ac4ebb9f6e0057e2ad2e34f61c0f09e8e38ee178c34458e0f28d6a1720", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0f7fbbfb16cb77cae760072b23ddab0b1799c2b6fbf3df1e85a3a5a710de18db", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4516fd2a9b10b2622c0f2999861bb97a1b8e16193f91e7b61555fb370c6b7343", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a677a31ef5db9daaa73ca755a4b69f374565529101266afd199f2cc1f8784c78", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "da934e07425f824a0983ab20d2b4060e6653085d49b7d8b642f94d84da8ef66c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "49d1b809a257cc7c35dec486636a6351812c8ff3a24701485f23fb2a1ef4bf9e", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f2579152bb33b47dfd8a814b693d79fba4016634333e4304c7e88ce5e2e123a8", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "1bf39546be6d0ec3013f935992c88eeae61393c3358fcfbd2bc7a83f97841eac", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7dd23e53757333064984ac2354624e41e9d07f17eb90e18f07f8b91718679d50", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ac8f6736cf2dedf2cd6125525a4bc7a72a4b3a07528d52ac82021819da900ce6", @@ -2997,6 +3016,9 @@ "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4f83cc5158e035cb1b611bd19eb09d7296832846eb0cdde6a6b57c2c6d208d19", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "503072788c5bd3a575809acb3cc26e7488d20a3f9d2e6a445bd440cde433ffe1", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "789c20eee409a0634eac71baae437f474e8c7cd1b1454fd5707b90750e121ff1", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "b9e58343faab958df9f3ade895791c0839eec4b0a87961b4799fd1eb686f60c8", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "394187ef1e4a499c00470b38c0ce305da8adb2bb4e75d1749b5b7555c315db25", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "394187ef1e4a499c00470b38c0ce305da8adb2bb4e75d1749b5b7555c315db25", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c92b7ad08baa6c60c94ae28fb5e709e43b10300dc7d31c2ee629d80f9150b08f", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", @@ -3134,15 +3156,15 @@ "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "c4008d450c5c2cac1844db5f092d0bae80a0b90f1d9304353197535589e2b692", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "b9d69a4cb33d0d8d458404b4ff869d530b6a9d9860d74faa18ba4ff523cba77d", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "c64a1eabf34d79466c52bb5e7792995716dfc426402029cf54ee34bcd6526732", -"T2B1_de_ethereum-test_definitions.py::test_builtin": "26d4b0fc00d2f899b0cc78cce5257c7cb898f8a670ad480209a9a457f2978baf", -"T2B1_de_ethereum-test_definitions.py::test_builtin_token": "c0976a2d9b47427fc5ffb7cb29045457d82a424874cbc5d4f0c6c88c2b48479e", -"T2B1_de_ethereum-test_definitions.py::test_chain_id_allowed": "8ef2c5cc45e6b89db609d392b4f1b3b569e1790a4946bd63a21393238120c9fc", +"T2B1_de_ethereum-test_definitions.py::test_builtin": "63c1e6e59ccce62fc1fe86236c096c01d57af2a179b0c765a4efca5a94096c65", +"T2B1_de_ethereum-test_definitions.py::test_builtin_token": "055e1068571b64e57e7da15225504b41fa11638e74fe5d2f135a497dd36e378d", +"T2B1_de_ethereum-test_definitions.py::test_chain_id_allowed": "c32570499e812a1b47aaac857779fc5fa90279643847236c3db947d7bcd44cf3", "T2B1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "dd988311fc5415377a0eeffafec19fa0bbfa044a7b631c137278b643ece40438", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "fbccbcd90e236f828599cd689ff36a3640f3f1b5e052946b332c773e8a0740ea", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_without_token": "709e0070010323114ec6cea44265eb82597fca1ef810a2cc70013c351dd1c204", -"T2B1_de_ethereum-test_definitions.py::test_external_token": "75689370153fa4a9eac3d6be72623c1735bc8ab6dba41ec994ea27514eaa28c2", +"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "63c77625f7eb7e50c78bb5572c5bf7fe7c1dc960deb34e108820e81036497f41", +"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "b1ad70e4a32a8e93ab51cdd7ca695c9b6269cf31b524c12db51f092744b37196", +"T2B1_de_ethereum-test_definitions.py::test_external_chain_without_token": "68d7337ef7531ed0f3479e811407f1f69371f8bac5845bb68146272d44318a91", +"T2B1_de_ethereum-test_definitions.py::test_external_token": "f1e7bcd4e3c4cf8176cfc04300356e208bec22d922edb86b1d6a64272546da81", "T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ec1cb04940385206c4005cdb541bb79519341da1066ea83686053a199795b06a", "T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "bdc811f599caf12b51e515e0cec9165d5b9fdbf35a8408f53a5eb1e75379ee00", @@ -3156,7 +3178,7 @@ "T2B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions.py::test_slip44_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_slip44_external": "eb2c381a7d34232d7feca50e6ecb9e4b86755ce2ec8ca840e8369d14bb22aac3", +"T2B1_de_ethereum-test_definitions.py::test_slip44_external": "703f27d12069d385c506bc9ce069c1620b99759926bb63103ed36eabdeabaae5", "T2B1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_definitions_bad.py::test_bad_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -3218,95 +3240,95 @@ "T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6b58c573450e9c2b451910185871901dd1d6c6a4463e1ef68459e398a2ded184", "T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "f2ed1a6bd10ad8559bc9db96fb841584447c31e8f1579bc447ac28021a828dc0", "T2B1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "6dc8fb1223b369913eaeb92d34fd2fb45baff029cde06e71e5823d5819ea9b75", -"T2B1_de_ethereum-test_signtx.py::test_data_streaming": "c31c54b0f0e9729946732097a78697156865e68b01c3d85b95f43b2ae29e8afc", +"T2B1_de_ethereum-test_signtx.py::test_data_streaming": "1e3539ac7f626bc8bad3099cdb1ec443e6fe76ff34ed903f96e3ca07eefc12a3", "T2B1_de_ethereum-test_signtx.py::test_sanity_checks": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "91f8dd5b6c7d5993d0d788e4002b47745f11ac6409f856ff156481736f2a2cf7", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "f22f521874f6ea8835160ab15ea0472585b6a0f8bf998585c252d5bbbf97fd17", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "419a6940c441a6a1a21c3951cd3aa528b4a557f7487b1246a8fd53563174a37c", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "f22f521874f6ea8835160ab15ea0472585b6a0f8bf998585c252d5bbbf97fd17", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "fa1421a963d0bc3aa22557c34153a4b3301c824f7d0cbb84b11e0c278ce8b4cb", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "fa1421a963d0bc3aa22557c34153a4b3301c824f7d0cbb84b11e0c278ce8b4cb", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "c74305eda7c797b66d4b7b8b7b5fb2d4bbadab768321afb2b9bb7cef0996669c", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "83205c6fae094defba26424bc3523c8e6ad94bbb2bc9554549e4eb30437c4292", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "76ca9238fa0f3e0ca84af3dc83517b6a2a23c48ce26b7e0e724e821f602d97b7", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "848847f686db7fb81c5b2798e1c3fe5e9902cb0e10428e73303621ad0696ec3f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "70623132cf508e398bc8902bae9ea8278aa5483d8c57c1f602d2832734bd42eb", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "5caa270b8c296d98c577f63b7909f77a4bd826dee0f5c70c41ba416c0e7f2ab0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "eb929b349336b77aea232e3ddb4625fba22d6c5f53886203cf19a2091a82505b", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "82e65701fd85d95cc3021faaa57507779f0e4c1125d367baa1d239bc78163c54", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "68b5c0a927d06916e99f645c26b29cf0e9db9e232e11c78a3d489448ee05e2ec", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ba21cac4c5ea933f67e995e1ee654c7e35457065dd4137e4b31294150148f019", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "87349a9f9c841d4285be7176024432055e133f5e82e217f56d5f94d98a7ed13d", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ba21cac4c5ea933f67e995e1ee654c7e35457065dd4137e4b31294150148f019", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f72b30fbbd287ad8a551f974bc55d4e331ae24dc959197362a725edee1b120ad", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f72b30fbbd287ad8a551f974bc55d4e331ae24dc959197362a725edee1b120ad", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "42edbdbe8e5b8efe6af02c09dc9b23664f9beec86c60237846a7144c8188a027", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "464ef92b7f8b4f72ba98b68a81f57a218d6d07c0d9eeccc22f911483d63fddf5", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "b51d389efec73d4ac2361ed4840760eff31dcad5ddb03568f8a87e823492654f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9db0c56bf65f5f4704a375fb62a393888527b05b362c1cdd7cb4d024e4be20a3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "70623132cf508e398bc8902bae9ea8278aa5483d8c57c1f602d2832734bd42eb", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fc332c34884db71471ac259c89b33a6dd326b6cc79501a97c0ebc948dacb113d", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "90e8255dc39bef427fb8c7791f4592eea9e425c31654df528c232ce9df43b60f", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "582667abf6e0c426c960d56b1c009b0c129f0807e57a51a3b5d3bf5ea0926e74", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "20a1eaaf8f27fc5e4bf854a0c2f136b12d97f1c6abe3b686ee39cbe60a61e8c9", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "53a3aca737c843cdbef9e3eda6f6b09d468162cbe3b1846af23c7b4be7a60046", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "92a9a0a8bd6d214ebb3d5b44e4b05e9fa6f6e0fe97817d5023e20e67b475dfc2", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "53a3aca737c843cdbef9e3eda6f6b09d468162cbe3b1846af23c7b4be7a60046", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "2b37ddb77289de24f2ff705161350dc96f3815892ce66ab42be406570c1c8fb3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "2b37ddb77289de24f2ff705161350dc96f3815892ce66ab42be406570c1c8fb3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "f4fb7992803186f5a687afb0ddaea574abe8ad8abfb37554769d21a46d3d759d", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "e91e152edf4f794129f216c0c4115e23a6d078fc67f877bda44787a9d45ff9a7", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4d7717de3d88fc07f484289f1cbaa5698613ca93aeef10f594d0c533c11aee6d", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "28bf07a0b1fc4b098dcdfe51cfc0f0073696b02d191ef170b975a2ae708ac2ce", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "b42296983510e53fbf1deb2898303ac39044aeb3d9b64ba8e6ec5c3880329bdb", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "dfb669d3dcb2c6cebd8c7af4cdd5279a8ff5ebf9e85f5adce794a787292917d6", +"T2B1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9c56b8427e056b9e16f52c730c3eb78dfc1c0b2de3d55142fcbd0cc3602a619a", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "5303e46d0902d376b26d225f98aca8f0ebfbd17cab2a706a089de54a627b916b", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "7d516ed2cfa85e25cf239f7304e521a20acac7d7a897a1f440ff8f0680179d5d", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "43cd9e8631ab0fba28974e4bf021b2e43ff86786df239c6fcfbd5b26a4ffc574", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "7d516ed2cfa85e25cf239f7304e521a20acac7d7a897a1f440ff8f0680179d5d", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0f58e84e6da023008bac1aa6eeea9a435654f98a88f3b42fd62c328615d1bbce", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0f58e84e6da023008bac1aa6eeea9a435654f98a88f3b42fd62c328615d1bbce", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "c655d608604a2ae2f7d3583688830bab10a99335d1e2c0b87c6b9a1568c4d7a6", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "712c2c4081e6da86fd499c80ded1eef57cd7298bd15faa15d86ef1d9bd11fc9d", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "626a69d87ad0759ccecd71acda96f264a2af114334a28d56167867b0062a4a3c", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "28bf07a0b1fc4b098dcdfe51cfc0f0073696b02d191ef170b975a2ae708ac2ce", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "cb8fae3788f7822476c1a7c735f07e6d89e7a2024ee91cffcf71a8db9301a325", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6da2e9e996eb520d61bab528bfde56942050f157ee02bc70cf4eb91e81823324", +"T2B1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "df787a2cb0eca960a87783f24c2c8e66d32f2eb2b3c56f1eb2c33c38166e00da", "T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "2163d99d3e0446d1cc951a0ac433eac709197f4cbdc9f1aaf0b3071582b99bdb", "T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "781664db14e071968be75bdbbaf75d5b5ac891a714ea463e8203f2ee6de864f0", "T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2e7e6be5450280282aeaf3aa092a65f78f8b199962ae564bdabb2e53c2a1d3f2", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "a791dfc72b1704a4184ba0fecef509a6cfb51326f8bc1bb200a5995c008de88f", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "4d212c09a9a88418af901aa4ada3e49ba741d7a6e8e5a21f6e49177a0eeaa32a", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "f572f234b57c336fe188bd2dbc37200dd370ba083f80e602952e22e69c1baded", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "9af311606471ca28a8e81a46a18c3a5e13ddca83de312b01f5d5fa3ea0db37bd", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "2d8641bf478b58743b406cd86c1d659a1087dfced3d218bab2962139a2656b37", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "f0b2430722f735ac858d5dd01520bad89e38a5a0ea46f3b9c501020c5bc51e60", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "a791dfc72b1704a4184ba0fecef509a6cfb51326f8bc1bb200a5995c008de88f", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "01c1075437f01f6ce32dcbbcbfed16cb275d3f7010378cceeeb34c88f8d42dec", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "07ca0862997cc1d84711b77c4ca8d2b7a6f35e00e1a53fe8156075f188f521c2", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "fab1d4a4875887f3b80c8fdb51c0095d77b9fbd01e874afad6f57780eac9300a", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "876d52a988aa1da290d9f2b6d43ba0b568ed932e2e422b766fca56c39a83a81c", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "32c074bf3ed20ce7d02a26986b118457fb4c86bf9c77d43b3af8a2ff0841e723", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f672cd5620ccd557eb070c122cb5876eeaae7785e7d35c2b5bfa43731ff498b6", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "01c1075437f01f6ce32dcbbcbfed16cb275d3f7010378cceeeb34c88f8d42dec", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "835bd06f578a5ce001635730bc3247fc618540ac98f8799b5433941afcca73e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "835bd06f578a5ce001635730bc3247fc618540ac98f8799b5433941afcca73e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx_fee_info": "3ad5448fec7eb3c4554fcec6524ce993c41a9062b0e9b82bf84be3877ac1aa21", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "bc65d96ff63e82f5e49c4130996fe969a920f7f7eccf2780c787b22f2c1e0055", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "8368fce4ea62f70fe0b8c0bb83ac428f0e06da00580201fb472efef369adaede", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2a45fab53b4ac367f71afc7cfe5d9690d84e092edac79bec871cf3f2a1d93868", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "0891ea128901e2f10d91e077d393daae5989f2bdc3dc97dda7eb8c5a50ba2062", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "8791cddafa4adb12d5eb67231a9bd356cc33af116d864d76db15b07a51801b94", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "c454e49bc2da978322685e845f887eac7739035172fa9f5947423fc93835247c", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "bc65d96ff63e82f5e49c4130996fe969a920f7f7eccf2780c787b22f2c1e0055", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "68168b8ca03503e32ad94d4c2b6af185bbb1148692e57212eac0f387f2c47a30", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "5e0d2ff8e7d3fceac2aec5dc0fa58189f6837ccdc4b38f24370911e521d997e7", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "fa0adad426b459335d810ec1889f3949d925baa049c61e51190f064e85e01c5e", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "27399e0a0ae6b1bce7c902867204728f1434d08e27dc0121f791c049307231b4", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7dfc1b9f0dc51020785572e76b745302f85f2fb495f4ba39981d0b0af786ed00", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "472024ebc644c172c801824cd3d1da3bf884e219d44cf90a8f95e19e3263f3e0", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "68168b8ca03503e32ad94d4c2b6af185bbb1148692e57212eac0f387f2c47a30", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "4c153a9c26fb4cb91c59ad3c45025e544c9ae1c48a631e5fd09a54793ae5cabb", +"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "4c153a9c26fb4cb91c59ad3c45025e544c9ae1c48a631e5fd09a54793ae5cabb", +"T2B1_de_ethereum-test_signtx.py::test_signtx_fee_info": "7555d75e0afea2fd72369f481964d3ee8ac6b02f9055bcef66447a667afba156", "T2B1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "de0303f303b80539a70056d5bdb5edcdc041d3f15d306a24ab15e1790e2aa25e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "1a2711c853b4fdfd82d4471f3d3d10a3500044845abb09b8aa1f99a8d0ab5862", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "be37f799d9572009a463444510eacdcee553d81838189bf6a01a898420b45701", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "74844511d315b5959c28a53e21cf4edb45503730736e00ce492273c5b2005645", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "803dc7de29aeebe02fdd518905e51f15121fd7adaf21e8bd595afbb1d00d5c2d", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "11ecbdc24f8d02b89495359d8162cc7bc064d4d8d1353948554fb80826a7c536", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "5a5fa44da5e7e20788c8044d2caebf38dd07ff0f0b8eb0f6399ad2fe02db96bd", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "d58ff8ccabe8a01c55476588af4489d781fd8945624769e13ba5962f3008bf6b", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "09e0af126c9efdf1765f3fdf588beb94d5848f118937152079037b1ded484044", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "4e18dacbc44d7e7051ccc09f9a55c1ea0b13c82cd19a140b9438499d7540db0b", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "983aed909d608f17df60fd10251f5ee659039950adfe7cdcb8529b43b01cc388", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "566013a3c7b25c2f26827ca837217fd7efff57a77d305be685c4cc729ee1b437", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "9291e9ae10bb459ca2f991b2abfa4623a43590c9abdb39f0f1f604ebf6d7fbc6", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "dad64798f100baceff24557aff8ba5e76cfb83ed292e047aadc1457212a7d543", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e9ca75bbe4c552e336f673531d51ed8691dc0003a628a8bcb5eaca3ab053eb4a", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "ee25956cd5947f1ac34b72439078665cb89aff9e9750565679888fbf489d3e81", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3538cab3f6fc88a3a5f2c09e0a3406365ca839fc2013b323bcd5474c7034e4a0", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "04030db3465df74f33d5580fd7e008cafb8adb96984aeb2f5b13f06dad15e483", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "646f1eb2aa176c31e0a7a4890449da51a9ab4b048c00458d0ea169ceb72b8e02", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "eef1c32d69be4771c42e13a8c8ac150879841883482ab477a33a27578ed6b95e", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "50762a5365428da2987e595d1425693700f5195599d28a18c920f747a6db602e", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "098945029bad82144a7fbc57cadc98b1985b7349f5d7cbc065cf67e6423e1be8", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "1ec2c761bff4c9c0aba9c0274d2f3b871ed6f0a0eb213298746ce82c24cbc73f", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "9c1831944bbe0b0fcc6e5c52354123c323d573985138654faac39345286f8882", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "a0ba3e8a346198e341ab9c75415211e57bca2093b71986ec65947054981f10f8", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "e6d86d5c4b0be23309fe89546ec73c3a9ff172c6b28644e29ace92185ab321e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "e6d86d5c4b0be23309fe89546ec73c3a9ff172c6b28644e29ace92185ab321e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "e2dc808981ae1957209eb6c31db83699c093bf5ecfb6aeb4e4a0cc7a2553ee9a", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "e2dc808981ae1957209eb6c31db83699c093bf5ecfb6aeb4e4a0cc7a2553ee9a", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "57f81d58fdbda91952c124e1533b6f7b53120d54971fd318b33c45d0bf8e7e74", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "57f81d58fdbda91952c124e1533b6f7b53120d54971fd318b33c45d0bf8e7e74", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "7d9e1dc760774637a803816e1485edc1ace1801df6d88174b506808fbbc94cb6", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "7d9e1dc760774637a803816e1485edc1ace1801df6d88174b506808fbbc94cb6", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "8e7aecf04dc7c5df0ccf1851b67a10540505a0c7e211d36cab4516c003b258c0", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "8e7aecf04dc7c5df0ccf1851b67a10540505a0c7e211d36cab4516c003b258c0", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", +"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", "T2B1_de_misc-test_cosi.py::test_cosi_different_key": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_misc-test_cosi.py::test_cosi_nonce": "ebbc74669685e6a9f6285d16c4cddb0f8a4b46b0f4f58b82ac8e03cc638f9159", "T2B1_de_misc-test_cosi.py::test_cosi_pubkey": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -3368,56 +3390,57 @@ "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9ae81948eba7ad24e9513aaf00cacc14be9708f48804aa2d850b170a1c7e197f", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4f98fd4a37ae565028c3d295cf28483fb2599176e01f556a11726449d95c3152", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "ed95b085d1c98f2ca465dc069d0172da0a5198e1590e81527ec2c6fd7c9e8c1d", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c1b1b62f0ba8d32eb40cf342d86778e37afa0ea28508a64fffdd3af2bc143d1c", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "25dee7b3acb0ba9abfa6df110fc900134fbb8af93f27ecb7dfed506d6eea0ab1", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7fe5069ff024837d386c79dae14c3bd86019d56f8d9f1d68852408cdbb9bb908", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "11db9c07865a5b675e2a9fe43e5e7e9f57d17839fbfc8e6da1f58470db2122e1", +"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "796cfa7a28859a30f5ad60bcb7cec1846e3e2f82552f7c452b464351122e6fb4", +"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0e3628e04eb301df47d05f6591e2aaaf95fedbb64881a3a9c3ae3c51be4a0167", "T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4a0826caf62574b42880b889e8f1a68fb345c0467649d1a7ee7c951dbda1be0d", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c792cbd77faca25f2ae07cf5fe61b63b651ffac515d24340f225300a3d6b92c5", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d1d84faba6d01cc17c08820fbb256d4d7839ca52a75cd008a6e5bba9885fe838", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "12a8b9e09906e67c4597c3e12ef6340acb34882f54c2ecaaf23b581331425bb9", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "95bb2abb7e3736114fb4d41f97b7eb5d1fe41cff0f38c45c19efb02815f7f38e", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e200766c77f6cac975b3e1311a328a3c19f68e2ab0c2aec3f55a2cd7f446d912", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5362653f9af5f294d170489b849fd1a719e7f8bce1841524ee69fa93641fde8b", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "e200766c77f6cac975b3e1311a328a3c19f68e2ab0c2aec3f55a2cd7f446d912", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "5362653f9af5f294d170489b849fd1a719e7f8bce1841524ee69fa93641fde8b", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c04f3fdd0fd35ee22592336541f2a7e328f0a0b3f5a345c39d3b4f1b74eacd01", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "34a1fe2a98ebf8a4a967cc76da8304771620c37d87030f523ebc7ee481d255b3", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f92ea12c9cf85036efb50f11d9ec497d90bf05ca0882fee4e6a10e2b6b4f415b", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fbfa5c1501a8ba55027f9318ddd7a8214559ba429305f7062d31c81bc107cf7a", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5023107c8974c22a41f7cc638a4b6d6feac4f2375beae624de32ff81edc6bdc6", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "61bddc148cf700f8a875840067063f0063e7bcecfe3a5578266d16bec3e782f7", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5023107c8974c22a41f7cc638a4b6d6feac4f2375beae624de32ff81edc6bdc6", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "61bddc148cf700f8a875840067063f0063e7bcecfe3a5578266d16bec3e782f7", "T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "42855d1a57a746273d7e3c00ace31e2f00583e28e7fed60dcce5e75b481b95a5", "T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "37fc0027f42f5f72b877781c838edeb8cc9bbd20d31cb58518a8d9a0719056b4", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f6ef40c6268390e7d63ededf60240c9395086256d56765fce417f62cc5fbd382", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "86975eb0d942d627ef84ff1f89e87af9dc3debdfa570e4138580073c7ae38756", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4a0826caf62574b42880b889e8f1a68fb345c0467649d1a7ee7c951dbda1be0d", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2dde05f4c669c489cd861f390b04c7c6fd0cc7cbc6ab9dca493f2d8dec76c76d", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fe2df9fd5c224f4e9c89162a620471904d570ab3c3209b2e31ff794917150de3", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "6b5e849108cd9dc4c6dc9317f5ef850caa9de2b5269c7003a613fce20909c194", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "667b4c449a7530c0e30b5d52d9849bd0bc25dad6e6facd843d22a436c72bd6cd", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d87e15e862a403953fa95152adf31f3293b1b5a26a8492faee847d86017b472c", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "2c1d59bb0c00a9b9d6c221d75b20d1da68ae44d95df3b88f7519c08fefbe4f82", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "9526bda931f043d7bd7bb8245fcb69c104a6c33e114c76f229f2130681d56dfb", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "da96726067ace03d9fc65b85ad1b4c4525fcecaea373e4e80f3fd7324c44baa8", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "a9edd95ba75804fcc3b080f993787c5fadfb6f955301d432391f9e3410ba9cc4", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2e89f062073f520ebff605456c02fddf403dfc9cecdcd4713ab9d764c2c14976", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6e26b841f9f697bc1c981dad7c83ed8d1a33c02be9754edf1cc23bf48b6477d8", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "828c14baafb6b05762ecee30b860d5d06d8882747174e050f0baecef347a80c6", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d5a5b56dda1730ca30af147c8e5f31c8f8c237b2fd2d57346efb86930a3f82fa", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "3448c150ed1882d622b6b14c061f4c1f55e857cd0342f87da0ae3b5e2fe9330c", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "d233aaed20e872ea427db762bb0810079afb07764a4b9fffad7c389f55bf2b0b", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "3fc47cc1b2b0dc68b2e5fb44b5f4294fac8e7a0acf651446bd1af680f0bb772f", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "0c74a358f517f0469491dacb4d685cb9817f5f93f17b3b835e7a99e513c3b69b", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "5f0cb2e4bf2d598b4b283554fc87fabbfddfc35560a14a078654a1753b7e7bbe", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "374fefbcc5da54cbb4241d41f65bd002c1e06876dd24cb89319dcdb544ddf249", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c0cb176da06b397b7ee01d40e26934c085c561e17a67f8a7d51e9ca748bb073b", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b52e216a5c16367988fc9e56fb6e8133a78ce5cfcd70ccb6f157a5c9148c5579", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b6d7233799649afc10a09c8b446646962005fa73d7744aec0d0351147a14b353", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "8bed3ce3cac6610e948091db2c889de962af731f3dab12c9d1fc87436155ca81", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "879c74a86c42a8276e1d987522e7a0c7593e791b7e9ae3461232760db178ea3f", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "637657c05d54b54e6e3ff2bff7f462ba6b323034626b0cbc18a4d586d424d7c3", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "366920d3ba4d0e454394002cc51ce37fd5a74ddbb3f51572a9cc8304103a1077", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "63fa3355439cb30fc0a75ec06f470c71f5addd796fe2869a8b7bcc11912fcb97", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ed45a8055ea88c95bf2ba187c125a59e55964f47ad8c49685f3764130be8cb5", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "014835480a699eff8259df2161f69bebcb24b5b15aeb1ec571711baaa37922de", +"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "4fae023884340ad9e2c6feec3a82d335e6d558e9eb31fe2b4f50f02b89ff4462", +"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8532888ff10badc8f5191c0a13e63cce2565fe2687aa62c8baad344e823dca9e", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7fb893232f7bf3245bfe1c65e2c4b5d97ca6cb71caeec089e2179f67d7adc629", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "95182882648dd4d4c6c028ffb304579678131422c1c21d3f2ee428015f810074", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f5887c8e5d502794c72e7be33b07094dd54998ee8783bd22a48b58bdc980b331", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5c6f0b7e5ac834464d8b623ea02546776883046d3711ebad65bb8a8d756ab6c7", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d01970d5a515550b42d3f32546cb7acd53e0228c7ff6102819b452ef92923f05", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "66986f00d636c3a38beac842384cd8cb930ca96522e07724b56177f475e10e89", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "16d383f7ce236bc1eb209f276ce2244e3793dc6a7219d7154bbe187b44465203", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1cd0a339ebac22a15a297785beddec0bcd9c344fc445c756d50ac5fc5f648186", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "3ddcb3201927cdb389c19d4c658e8c2fb806766531cfcb276f1d16af94342120", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1b99e01ddbca28687c080c9b15de9875ce2f63671feefb1a46c0dc8767f640db", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "6891faf0797ca9e4b072fb7c7c14e798e8b2a52026b7b0777e71612b470b925e", -"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "720602af0af5376f7c80321d20c3bd5a729d3f145c0baa9fa45927426b7e7d37", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ff57495b7aa3367cbf5e1f08df6a01cba9957f0d31ef1ea97bf83fea288eed12", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b4d83f8c56a24d86d25a83e80ee9eb052fa7bba089c86b42bfd5b0a8973f5a31", -"T2B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "bc6dc32854a0353904129e423494b86509ef7f0c445bdea557103dbb9d81ab03", -"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "24eb52a63b7a471037b1c10582517e003762dcb854c3e643fbe3d7dae334a1f1", -"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "575841dc379c72800dab43db860520c2a96095cdb67480300bb7a4c463f74a88", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1a8d83825ddb43228011a7fa923f82ea77b0bd4a308285b59d06915f94fc8963", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "4bb0566d836b2db3c930fce054dc397de1273f7530f204b1857993750f92d31c", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "942e5c3fbcc258c2451c499a9038eb6ff219931daf0f90c3dc859a3e50f09b99", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "02d9e06bdc1930321b2a9bbce4a6f9bf6c8f4b25edad90227b916dbd8b53531b", +"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f4e810a60dd262ad7844b9346ddff531bf3e5fe1f0131051afde3c8e318b9cb7", +"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8a08786ff6f7557370118325d584b288790b8893c24f5cefb22a4c79475caf3d", +"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "99820ef8f57c7001fd424d795ed9ed7c2c4ec20428ec714f244ff223c7922e20", +"T2B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9cdd6db69525b47f8516bb5a1160f0a5201779d815b73ea8472f934e40657d68", +"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "426ec9b73c0a3f62c7df0ce708479737fcab604c0d3e78d2d0aedee24797d4db", +"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "821e9dc0b8fe56f9c0bd6e8aa0621b06861d9560da0f58fa3bb40b6a52ebf3dc", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ae44a9e4ed76fe84dcf93d1d2cd7773ab322e0516f6019180fe96a44196244e0", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2df63bd0ddb47544520de33b69f3000d0a1396fb419e874482953507cf10bc97", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6f125524d4131b42c889eb584f891a3d1e2ea94f5b609eaeb58846a39d92c12d", @@ -3426,83 +3449,83 @@ "T2B1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "17cf8f3a471a4799edc55b52bb6fbef1fc5c4060c2086bbbe154c118a73a5b26", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address_other": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "8301d934dfcf96c289ceb5d357c9f9d95c7400f8acb7f592732ea540d3c4d06e", -"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b50bb2e085d71751eca1e9e2b208f7ffe511f5e81dbe18fed7d9dbbac4345bc7", +"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "e836e23537b3ec2d785a3e0192171e5d3af954f33aa1fbff538207d8caa9b4d7", +"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "f4e06e3717a3e24e39f3f8903f74268281e26f5f7fb3ef197a5735707f8f7847", "T2B1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "2486947fafac44b8d5304c99adf94e179c39a74e9c4f308e640e35a2648acb9a", "T2B1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "87bdfc1e42ff1b2717f5b46d1d0df46fd1808da6c54e2db11f3fab88932ad131", "T2B1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "72449b70ec9e084a54e98fd5420570f428dee4d77fb191e808e197eef93ca1f3", "T2B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "cae875b3eedcfc4ebc3ab2d664e59679ca64f39cd1873ba13a002fa71bf9fafc", "T2B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "150af04e4a7102f855113c6f90bbf5b34cd2f5cf570db82294da2ce56a8b93a2", "T2B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "5419b62b8dbe08e2811b8382caf58ce7f60f6c1552e5b0c7f6ec416be48c324e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "8d4d2d047b56d25fda7149a55bd37f8ae31c1552779f29a9f1011b7fbd382eb6", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "6aa032213485f59a0203e2655b2f8a83b3bb7674bc2e349f8525825f923b3166", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "413fc0ebed06865d06361391a499fdf21a456ae4352834e28dab9ad129bd6b30", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "74c311c9cc84d8cb0e86847c18b6d0b3ffd9f4a74cf4dcd4556e8489911d9062", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "98017a2c65bcf3f20d4cd7bf398790c06a7d987e22894460e5e4ca2d86ac687e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "6a0bd13324d34e16626e4c3b2a546da9edff1443f51c826f6908de581b0fe63e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "4190e52748302cdaa6d90f91970bbc2b0840ab85de33e734f6fc2e499523664a", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "394644ff6856d6736dc08be6e316d7ae5dead8afa130300655b0d2d7791abecd", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e136cfc5345b938ef8266511cdf0b323d83e71f68965b6a3e8e5cb790a0e2865", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8be67eca7338f7d977cff04668be0f9416e79593cf75c084fd91bf88d1044411", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d61ba574336fe6c4564c276e1f2e2c9b2655957d9d05b3b6080ac19baf0bc96a", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "dc42125b082c806ff49071630ccb81e1f1cb382434720b1528a5d4a5fc922e99", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "30424a8aabd8747abe61804746d34d741f96ec34b6847ec8ae02301beba94247", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "e77f316cc9709e675fa25bb899396ca4aebf6643f5d009c91274fb5a133e3b39", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "c067360be35e5cc453996d5b85119b0129b88e7acdd889935cc9395c2a2c088e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "61519c2dde1d7009452b1afa9ea0bbcd606f683eef0d15b62842c721b199888c", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "e84d6748db886c259d9ac38d64aaf2a5c44735ebbd9a76bd75c9ed640fe6e3f9", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "5543f9fc08625c4afa7124da53d172af922779097dccf792647b288f1cc8a9d1", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "e9b0606400fbfcdac7d9d55d8a0e0aec88fce74b77660b3952515f7abe57c454", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "45aef9f07eab03fc9d2ce7f4dd8329ae0a7a0474d9e27771be23a854422a40c0", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "001ad858aab4657ea558a953dd1676024e3612581d031aa90286ae19259245de", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "001ad858aab4657ea558a953dd1676024e3612581d031aa90286ae19259245de", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "0c9f92e7d2cf623cc77b866701621e09ef7ef1b2912debf4df80e9708af70f64", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "582233ccd1c45e81229dd8d27751941a5bb2cad608d77604589e1d82a868bd20", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "929c7b7050bf13c00eb482404b9b8ce0d6bb53b370685a985fe9402a233b7b6d", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8f38a05eb20eaf08a3aaf48c90aee9f7704d98e0257adbca628f37c971a6ccd2", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "1135ea4d66a428afa3a6e7b958f71d702df37135134f93a57bcd8cb006c52686", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "3692cf613598507b4829930a5d0fbe06beae2e5858b08ea86bd16bbd927d45ed", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "3c30e02c1d814da35881bd5970f6622d27a9a5a14c23eb58faa289652dbde3dd", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c27c8fef35fe31320113ada60907a6474d416d606c936486f7a9546f464155ae", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "ab0d7973a8bcc0783a7893ac338ca19e81893498973c36232fce316099591e35", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "621b662722c2ae9c77e91a928522cdbe7546d604f01e2eb24905cb5b0ab35c3c", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "b5d6d3d84cdd0369a986869fe4c3b58cb86528c559b592527089a84f14d97a4e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "635bf4167aaf2b39e13394a879959b0d2ce01ac54ccd4ad8d41e8b20d09e9efa", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "00705065bf41fd64e988c5dede3448049c462c8ed2144f99cdde7f0c490c8887", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "c5840c87c87ecb8113d4d4f71f5c619b4e505cfd399059921c1f29bf4554487a", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "c5840c87c87ecb8113d4d4f71f5c619b4e505cfd399059921c1f29bf4554487a", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "b7f64b4c67dddebde5090ae913fade2040ef3dcbf7935b699f9be3920d5e8766", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "b2e8d45b78379a5308e4672247bde77ddfb29684cc7c95daf844a05f517948f4", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f39ee5036491943e444cd44c577544a0642acd48fe35b32fccf5dc6507ec8ad0", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "bf3ddbe66fea7defcbae24c5d32086ed2980c5491aa42373fb89b85a0f613182", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "4397276bd1c9ca5264e6984400cd5f4297b80b6430e01b0e8df948b6e91e63e3", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "4c59dd6c797ed6bd88d80dc1add659f746381685ce5c755957266387406bdf5c", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "f796cc4352ae9b789fd4e2cfed09d23efa2db7e4a924557fbe7e42b9ec006b11", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "99747cac44322133e6c81fe1685239d5771505f0178ae0d597a4c3ef219458d1", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "2a50cbbb166fce8bd19ee0f6c308ccc09eb4b0378f6e6ac2ee49d26a0f0a6297", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "cf48b90458a2ef22feae26437166467b54525538844ca5115df2bbc384e6b464", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "33ea1bbe18f1525ef82083edc0d27c9f54c620138fe3d8b3eb687a40dfc48655", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "cef2ba4113d206339ff11bf17ee363ac6ef00b1586eaf2c5bb81b360d3e40e4e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "02aae89471d51cd41024573ffd45485bc478e85c9624c8530c88be368be7941e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "9f3be6117069f0a5723b592bc77902c8e870b8012fa8eb884c209e2467a65d7b", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "2020efc7ac624dedcde6a143b880d09804e652d255ce39f60c6389bd58d22629", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "698af7bce0d7474c746cfad1aa145857055361b3df07fa9a534285c33bbc662b", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "dca9e6adc31be6d98730835364c0782fe4028ef0ed053dd49c2a72b8528af688", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "29f226d0899bb1cf03649997d896e13ad01d1bb190ce4bf9e9ed3861e3a57294", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "386cfbee9023f4a478a198b55e73cec1cb14bc6b6fd44b4e9a6c13b708d83eaa", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "a86ec0b55c83f3daec952dd1434afaa2a9fc4f7d3d8a6479d98423a0d81f85ed", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "4348f0ae44f70bcc469a75607502041f9d6a07b04997b5ef6e1ec811bc9565f8", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "c5008f95942b4035690be9e4dfc9efadf659a8012774fd81e9ae70696d562e89", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "545505aecd0aa9f5ab7fb773f21e8e496e306ed813cec49acffecedd6c659dfd", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "7de5213816ca83cf7a3abec9b6238649fe253c5a7b6af7a2483ef3d6897160d2", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "bd98b9c98667ad54e1355fc0af5db4425710b38c5e48085c2628e18fbfe8df47", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "4e07f0c8c0510dbaf5df668f792126c1d82490cf1c7521ca51e19d94ad924f2a", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "c7217e546be4889416a2ff7af98a9605bbc84848fc535f22253e468a98506efa", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "097808599534867691f0d4d051d8dacfcfdf932e2827c2eca25245700dafa525", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "45d1b801d40d08fac1fca2b0b747917efbde3b0274217e60fa4882d675f1f777", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "75424ab4d3c9f5a8d48f95b51279981fab664847942308682eba553c5a27c580", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "b617d4bc8792605e8aa65205af2fbdc8fc754de95fb5f0bbf62e0ca4d0e1b2b1", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "031d93250874761e12720aa6a6c6e27c42dab139945bd28d4630a87fc65855d0", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "48cfbed8dd10586329eb1293b75aff087e78872e33d498564a54a1fc076f2b08", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "87a3d9af90ccc8fa9ba6453e31502dbd731e697b043739f5357f296de3532f74", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e6c9c75256abc207deda85b7b8526b17f2cf9d4aa5464aa02aeb4f8254da759d", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "331d62890752110406f60c48a6b88646ad8ae7f9585db5e9365c70e13c5bcede", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "dcd25d34cd38d7911f5962caa7fea4ce0bc2f1e57b97587fe60aaf85333ec831", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "6b754b660e1852c125e895543b52eeb2cdbe9334b3e8e54a0d7cf974e226ab3c", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "4406094fb63d1ea4538aff1293e7bc05540ccc540dd63fba3ad8bdc4ce8126c2", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "8b489b56884c6014102686b993006b76f225856772a2de94c63d758e1336935f", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "82d526cf1d7f07129aea29a1fe238089ee82b0450daa9abdf1c671adea872dfa", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d5586328a54beee1528dae3a93e257c31b21d891d8ab3a6d70692c88b9444f80", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4f90676876ae144b3ce706c1e65b3587cbb5afcb97d6c08f83e537b657d99c79", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "2eaf64e0cc9e2b4547a1aeffcd6cb4e267923ca1e84250401df1e6790e83788c", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "876034b2454f74177c2739a3e611654f96066b54a85673194ed3ef51ae9871dc", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b4de8f33ba20c973f80c6d8097efa5ad5159478d81c527e1177feec26692339d", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "3dfe8738bf5d6eedd99bb8f1142ef54bba4e2c6d5745ef3ce0fb80be760e095e", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "0aba5ee11a6c8e33ba1ed9b648dff515aad9702a7594c38c18a3c5aa9667aef3", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "1344f05900de326c3ce74b9e4787b560da7b608fea31e4e7ff25d2e123e4d09f", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "91f5026f5949f7e1fba68ab276e8eeea21a1f112a13b58327418f846ff3cdfe0", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "b7821c845595d25e6bc71aae0e0233f9adc77076028c856f1565bd7962c653f8", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "0634846aae8bb2c503344f80d2710f6ee32be69327b95e93d997fc78d4c950a4", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "30f5c0df47fed9608f5c3784efcf7b68fe19359eac3044509c469bcaa58da0ff", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3904a6cacba69f761b456660a9cd2a1f15edffaef8578b7cf6e17bc3ea2868d8", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e9b4ffca708583d29780a8bd82d5e37b6bd0d19492f21e4c9a0cd605526bf637", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f33ce0d30c82fa4479f093dd4e7c7f4dd27efd5acbdbe81a341625b9c261e735", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "34a37ecbbe0df684eb3f373fffc461eb2f6b3955034ec51deb527959663ed4d5", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "4d058d4aad99ea76c8e475b3a74283523f35aa574d936002d2fecfb952ae7e6e", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "104afabad759ad416c6b15b51a0307403ce4d3796aed3af03de4a6bced226f99", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "e75940b8cb0d8ca6b1b2a36b4377a3b386edcab2fc871d351ef3f55b11e72568", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "021cf83fff7c2a70d42b410b6eea28a495ae602a4a2c5a94b28c41096e416b4b", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e1699d093c7055d4ed8dc564bfa600058e377f77871732bbbf34b48cb14343bd", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "6a4c83df7ec5c8c09bde8499a80b97a5b7e6c0ca5855240cfca3362180eed57d", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e5c8aba521ee8f3ab8fd3238de5c575397bae11753a5b3c3b01e6b61ef1fe1b0", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "36dfe28828163ab7a80ddfa74f229b4c6eb228c33e5c1fb129007a1d5a849461", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "541fde8923f34b69bc11a07c3eae62280fd36adc4dc0af8665b2f00d066ce8c8", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "541fde8923f34b69bc11a07c3eae62280fd36adc4dc0af8665b2f00d066ce8c8", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "a69fa6dd1909fb463aa9fb9ff7b27d1c932b77cca683e7f4c52daaa6d6afc77d", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "65ae34921600c14345adae61a8557c61f7971a11374fbd94f9df7766296ad222", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "893662b8686fa062f7aaf7ea9d35dc15a131028a8175bb16e9dd9424c8db3504", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "bf48604005a62544958b72eb43853574fe59997ce986a6908761039be664bd0d", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e98fc8e321eb59977537fd8a47f5b8ee7b9d6b04632d5c5def0e4383f8d09c77", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "8567984d7aeb5e3c2813ebc9a56ce678db79de03e01da913db405b5a9f208116", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "92be9469b5c7cd30d4523db41643c571e6afae6e5955803d3cf0c57009fc007f", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "1548b0f6373a6f1f9fbeedff281f6e177ed978b85425ddc2cf4490880a893d2f", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "6e7a95dd25ec3e9737457a71fd79eefbcc5c778e3df5ab834344d39f92ccc61f", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7c23a8d3b5a89257f2a152134bb14def24e01b3b25975953732c9b2eed4c2965", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "893149b212533197a56e158347d72a0d2284c2f9fd982690e9e435dd28a10783", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "548ce30ea791ed7de0b1364171f4deec489abddfe1532c82ef92ea4f4b7ebd32", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "6751c8e93e0c28d283059534c5c4f787dc541549976c415b321da259edeebe3d", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "0b2a9b80b07c920b2ba9cf09a9fa762fbfff7b6a9b39fe89dd5d825c72d2e6ad", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "5ed5852ed5eabeaceea50d91010aecbd11fa8a0dcbdda899e6465bc75c749581", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8adbf515470b56a21c1ab3e05b7957db7313ada30793051519e747924588281e", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "aa295d8e8f1081ee8cf870cfe8e5b9c1d3ac9deddf51d85a4712ebd46dfc8aac", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "e08211c988f83c25ea71770effb12bb4595b0e42c4813e375618515a61633844", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "e39b0ccaa1c791b8ee9879d436e6f34227b895d2af8795e25641f0190f399560", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "9ff4ded2dc444ad088b29597d197ce6eceb2ad9e5ed1fff025b3a072318258b4", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "a2904f146acf163a7546cca71abce5f3b7127f6c408fcb2ad6ed3d5b075fd129", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "aa9e3242c18378a5b9499157027a7577cbfb732df049cd8666e36be51dd6a859", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "02aa09334478c0e32a66ced39d306d3ba70b6a40ba6f4bbbf2f9f397c7ca50e2", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "689692a6c37f029267f6c37cd1ddfc51a5c9f16d00e2101898ff6057349e0910", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "c0d5fa5f9771c9dace04bac4e5ebd64a48a38bdeb57092837fb1a90445362d80", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "9bee6bfbc42ffed546d7386efb68c3e6a4f75efcf0cf44d898a4f345abaead3c", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "23a1a1c334d20ab2aea311dc8b6cf0eeca6486f30ff7ed0ac8faeadd61d67f57", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0ee25ba525378c6101e5b1822a181e66c37455dd23e553b0cc7d238d64246736", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "64a15c761ef280fb4b7934ea4cd2ed38a2f93fb7f90d95069033692f87df133d", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c1a00acf6f1ff4503e47818f6367e65b785f9e2bfa55d6bfd40464699787c9e6", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "4e4372d9b85029026a9a639748091dac58ff4a95765a725fc4a6b3dd72149a87", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "7eba82dc4ccc704791d52210f9a5e0cd70890072076450ac6a6d1a1654886ea6", "T2B1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "10f4f69103e9eaa539f5bda4edcc6d5452ea8a3fd8681fca2e3f8ea32d7f02ed", "T2B1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "004e6ea19fd6a15af90c6e3c621ac3c07c2b1353288f0f1e8abdef20fdde0a2d", "T2B1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "5f0cb78ea428260930c5899fb144bc8fc2a848413f3a69be2e4921412f604247", @@ -3581,11 +3604,11 @@ "T2B1_de_test_basic.py::test_ping": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_busy_state.py::test_busy_expiry": "f060bd0cb42bced5d02923279994ebadb2d6bfdac236f2bf62fb204b1f6f67c7", "T2B1_de_test_busy_state.py::test_busy_state": "6c8ec720ce4313ef7c3809e0a5d562879be9faa3db24c3cb28cbf780e760d85b", -"T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "df9a4b97537328e6029e29c7bc3a09b8132c4ae0f96614b370b69db2d9525c1f", -"T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "df9a4b97537328e6029e29c7bc3a09b8132c4ae0f96614b370b69db2d9525c1f", -"T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "df9a4b97537328e6029e29c7bc3a09b8132c4ae0f96614b370b69db2d9525c1f", -"T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "df9a4b97537328e6029e29c7bc3a09b8132c4ae0f96614b370b69db2d9525c1f", -"T2B1_de_test_cancel.py::test_cancel_on_paginated": "f07b0add089fd36888908a7dbe30859ae04e0f1427af8c8d88865bd9c1bdca5c", +"T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", +"T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", +"T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", +"T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", +"T2B1_de_test_cancel.py::test_cancel_on_paginated": "22e5ca5da1248baddd00fad0a3c14072719cf8db8046dedb6f67239ea019bd6b", "T2B1_de_test_debuglink.py::test_softlock_instability": "2f3d6d49f89438c57cb46590be9e7e17e34d353f26b8b3fbbaef5b6a34b878d4", "T2B1_de_test_firmware_hash.py::test_firmware_hash_emu": "b64812ac9c7f3d3f34118ae559f44c9727e02409211003966ea5475b026225d8", "T2B1_de_test_firmware_hash.py::test_firmware_hash_hw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -3619,19 +3642,19 @@ "T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", "T2B1_de_test_msg_applysettings.py::test_apply_settings": "6f7d8210c403a81250b9d0276f817392621b78e6059f0616875485e605fb5bb1", "T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "03161eeeaae6282787ff3f765b7935711d975c54f20ed9da760ea7986eb953dd", -"T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c9cc0661745be4056ad74166bbbbcf87689fc316a52f4c0651b72096d0c05c69", +"T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e55071aed329923cf60c90370319a7024f24b3ebc209a1270bc9e6ba19195505", "T2B1_de_test_msg_applysettings.py::test_apply_settings_rotation": "8aa851de9542b1fa09c0663ead94994203c8040e2c832bb40e01ba51fbe6b2dd", "T2B1_de_test_msg_applysettings.py::test_experimental_features": "f5df5058965c4398b3539df50a4aa7ac77d4b40e876685a8f4a2e54771283f91", "T2B1_de_test_msg_applysettings.py::test_label_too_long": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_msg_applysettings.py::test_safety_checks": "91668616d03dbdbb3400a647bb89ecd1195b3fb5d8999c6229ee91b934ab53d5", -"T2B1_de_test_msg_backup_device.py::test_backup_bip39": "7c440e20ea9b06bf47be788184cb53584934f3f18b046398e90fe9c8fb4557ea", +"T2B1_de_test_msg_backup_device.py::test_backup_bip39": "e1bbf95c340e6262b00c14a485006470a14f282a7fb487cd8d40489296c37884", "T2B1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3a61ff16444f595b749035d1c87fd56fe217287fc27df6997bd9726e612e9601", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "10873bbdce772d13646d99fb3967a9f5e09beea972649e1ae03a807b349a55f8", "T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1daf88009dbbf5286edd8f01d4470c79de3acb5e3940d03fbb585e99c603051f", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "69b01226a1179c5e71f0dc78b1970b4edcfd8453e7263fe049d9f5070aa4c806", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "c643d597cd0b41b47a733c0442258cfee300bf2a4e7782126a1de8efc62bd0b4", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6462fb726b6250d3f97d7b9807c5e93c92ba4e3cc4cf206b6e058a7245957207", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "df347660c07be4db80d435494de3e8ad14c1c27803f989e69e9b855411ffa96a", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "feb1fdd06e5ec80a6841d869807490f6e4985e744f29d215c6e9b071c0bafcb4", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "a2252852c18abd93c8d2639c0a744f516dd27a9f28cc566c2af120c0c3e82cab", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "822d73267ec62696e46f4ecd5731fcf69915df8dbda4ff696e737b0a9e46319c", "T2B1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c925fcea96ab652c5cba68ecf4c6cfeb069da7eed29037211d72301b0e34fbb0", "T2B1_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", "T2B1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -3639,24 +3662,25 @@ "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1325026b5ec3b3bc60237082d1b58b6611b799ab54e1964e225d795e52e4fff4", "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5ed7a9edbef7af20347d0d89bfd78e877c19e28c59a0460d61c9a30b4efe2eca", "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "dfcba29ac3a43714f69bc8dd0bc2fc2d05ce60c9ef2a0b4aa5a53c07180a44cc", -"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "3729a5e5d8f15d945f0d59609cabe677c3beedec8f2aa541f2558307323f01c6", +"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "1c1b487d28fa6d1d7d60918aaeebb0c39a772e3d4a7b3ff7dd3596c4a8704077", "T2B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "5ef3dddc3cc1974a4e15a13350a7959192319bf40f5bf2a1b989b3b3d4165192", "T2B1_de_test_msg_changepin_t2.py::test_change_pin": "3df9a2c360f67026a145d74b059ccfb8ae353859eb14e84d66b3eb28bdb4af1e", "T2B1_de_test_msg_changepin_t2.py::test_remove_pin": "4c1dbafc3b02ad5ffc5f5404f79b1c56efde82e2e1a7ceab44dddb6544e94efd", "T2B1_de_test_msg_changepin_t2.py::test_set_failed": "7a66af5eaf3ad7fa6a77a65a7962c81da50ac048320681727b9a9ae397b7d9bd", "T2B1_de_test_msg_changepin_t2.py::test_set_pin": "b4aa6064d8f7824e034bc7a1f46103c1529d9de3a2bb83d70a5bbc67be2547cd", "T2B1_de_test_msg_loaddevice.py::test_load_device_1": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_2": "ad70b931c3ba980fd4937bac5de58cf8fe4ae3a6dd7c95135916be2bce9d32f1", +"T2B1_de_test_msg_loaddevice.py::test_load_device_2": "c78c591764d6b08c12d21e6f1d600f944132beccfb90ae1381cafa0916036717", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "2c6e982dac10da8bba0ba793b225a5518216467da203d1ba0eaa96afc76500c8", +"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "74da8070b56e8dcc29668940892db2f0fdb06bdf9fce2e8588afe957e1370f77", "T2B1_de_test_msg_ping.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "091523cdac2db517c52b84a4d31f61d03e28adcf9f1000dea2f5f7dd3fa297b7", "T2B1_de_test_msg_wipedevice.py::test_wipe_device": "e385b141ce2b606f086a4c1c6644e60bfb31e2c72c5f6cc3d8c677f996c7b523", -"T2B1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a24c1e200c1edf8b2c442f6bc7ae48055b1afe9d317f2d74f56f732a62a09616", -"T2B1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a24c1e200c1edf8b2c442f6bc7ae48055b1afe9d317f2d74f56f732a62a09616", -"T2B1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "2596656be8aaaa25d18db6e7e6742ac7147ffe7349bfecff39a3e3f47a5a68a8", -"T2B1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "2596656be8aaaa25d18db6e7e6742ac7147ffe7349bfecff39a3e3f47a5a68a8", +"T2B1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", +"T2B1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", +"T2B1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", +"T2B1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", +"T2B1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", "T2B1_de_test_pin.py::test_correct_pin": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", "T2B1_de_test_pin.py::test_exponential_backoff_t2": "3ef033ed737a4010a249faf443a2b25365e14df95cd163892aa7983ebef06ffc", "T2B1_de_test_pin.py::test_incorrect_pin_t2": "e004a2980c8998c775e270fb966478c19b01936e8f8cb0aa5949f51a019e9678", @@ -3672,29 +3696,33 @@ "T2B1_de_test_protection_levels.py::test_passphrase_reporting[True]": "a33cac608acbc9b7c37d3579e84a3b67b4429708091d06609b43e647cf5ac028", "T2B1_de_test_protection_levels.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_protection_levels.py::test_sign_message": "a9ca29d1384881e99377451ee8b0ff9d354b3d31bdbb24eba53aa3cde7611b96", -"T2B1_de_test_protection_levels.py::test_signtx": "fefa5e44135cd6bf81e1b50a81e8ef2ec6e78c3bdb8be12188bc16f26cf0241e", +"T2B1_de_test_protection_levels.py::test_signtx": "449826d9c2c9db67957c83d0607359ac11868e1325d954ff46d48e3e3779de84", "T2B1_de_test_protection_levels.py::test_unlocked": "eb7f30e5a5194d575f621b11a5b3adcae50692b7a683fc070eef692b95879f0b", "T2B1_de_test_protection_levels.py::test_verify_message_t2": "a5f0fe7d3aa6bb746e3037d780f492f29e6226e499de5567903f3d1e353ac608", "T2B1_de_test_protection_levels.py::test_wipe_device": "8c5ca43ea512e8f466ebc493e13f6ab2e303aace2684e81855e47d722c44c368", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "45bb6e7aa9fd3ee2e1f76780ca8d09555747f185ea1b50820c07424e7c57cee5", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "e15eb73d35defaed6a125eeb0ae2d6bddd0d71337ca097367eb25f61bbfd4c31", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "19e406560b181f3fefa34a049849c39d4258e60201fe2461bbac9f5b5cf217c4", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d6e3f5fc3cd7c4db1f8fb378cc46576c4a226792faf7caef5d4303c5ecf59d68", "T2B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_clear_session": "fc55d72baf2a11881021f5e45439388e0aaf38472e5e08093c2356a5d3af7a5b", "T2B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_derive_cardano_running_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_end_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_end_session_only_current": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session.py::test_session_recycling": "2596656be8aaaa25d18db6e7e6742ac7147ffe7349bfecff39a3e3f47a5a68a8", -"T2B1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "cd65bf39ef2068ec519336866ddb2bede07fd9b4e4dffe77b658ea67ba692f6a", -"T2B1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "3644b986ecd387acaeb8c447ddf8030c1bad911cc1c2e0004f8811bd797b4946", -"T2B1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "121eabac183abe2925dfdaac690c68cafac979bdf4df45d29d2a3347e8847331", -"T2B1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "3c3f59e99d33190d8265782e6e7f153ff94f939a9284d35f1648a22dfcec265d", +"T2B1_de_test_session.py::test_session_recycling": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", +"T2B1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "3da12ad56524a450bce0eedcd4c5387b6e518c521ea78d1e2a3b4c51ebbdac46", +"T2B1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "308ff38eb0982d7fb99e74e353f7ec9ab82a1f4b44dc84cc426a1fbed45512b2", +"T2B1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "c6afe93e023bbb9f10823b2150ed8f1d96fcc4b455472ec7f90a7e7ca42d9ae5", +"T2B1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "8a86f8d317c391c0e4fddda4e532e8f80119c771f0364a4d02f4b48c2c76d25e", "T2B1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "a192fdcab3ffc8c17ceafc0cea989bfabd8a5c8709e6e663606220b00ac9b869", -"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_length": "9d94a99c03305ea300be27eb85b6cfba39fdbea2d1002b291a02208585d6d6fa", +"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "2ee243f95e209d59849bd1022ea5f30beafe27428e7f6651db59dbb7e494033b", +"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_length": "49ae473de78ff7ce67c124c94837d487d0a9b9f2116e91bce995bc11ddb94cb3", "T2B1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "d2467c07fd34ffad1ff6c5887af6ed74bde2ac95953e290c1ca1a7bcf22abfc8", -"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "9218755b362ae6f8167839a61ed9db66ff90ac4e715203dc014eb6f82a8aa7bb", -"T2B1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "bf064980dc3dacbaed8af1c5e597d2638b127231703f9b8167c3ab7933241700", -"T2B1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "1e00ea1bf484c404dcaf5266798032f284a5b66ab85ec6b06d712cb7c59fd6d0", +"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "2a99e458b0ca7da4c247c6236927b6a97132e444ac60004b3393ec7eaf46fffa", +"T2B1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "67f7ced2940aa158b7d9c8e3034a49f48de3de75234350063157610a61073fbe", +"T2B1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "ac99232a08c165355831817fec3cabb650bd1c75b19eb78126d79aad472e753d", "T2B1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a771ad2ebdf7697d001e910440d136847a627fc654ae5871207a18aace65138e", "T2B1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "db0f4842937574e363039fe84ec33be248cdab6ef72680f19584f552c60b2086", "T2B1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "c3a91ff3222329e3f84283692ba0453969b24243fee5ed4c2bf93170fb6d66cd", @@ -3705,25 +3733,25 @@ "T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "37b8b2b01fd8b11e2058206d3630c90f01fb634ad3bf3da3d334a7d716ec442a", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "994df55fe266bb73337ad51c333bc29907549691646cb5f7be571580384cc1c7", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "b7c9f9608fa6719d9c28c80da4ece8c747a25300a174e5ecbb2e1c0ff69d003b", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "86c779fe1d2c20cfbd07a74c7af6e9753d6fd2cb06e551bf37db0779e7fbb66a", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "48db865348356ac24a823d1b167aba9304810bf7bb32b3defea080b72a483bc7", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "b72b4c01163b6257cce1a4bcd02acbf7854a3de69a9b0ef9d3aa53773c38826d", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "5b520cf82fd6d54bf4462e0a5ddb2c1b6561ccd394669dcbe26ce2ee5933d10e", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a8367b53742425165f0b2c25f0ad411d6fb0a5a17621881206bc9e2ba1434ced", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "51c47cca49a4b3d403d500ce6bc2085fcf001e649e7b72831780417b83d3aa62", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e8bbc64f602f34d73a65dcc8db33a801340276e087f694cad794f6f2c400a459", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "4ad474b86c8e3c9cc590948661fc939779a26dca594262ec6b172537e7de6d91", "T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e473fe43f87d09e01f2409e698d64af82ddc6a35f422baa2ac6711d6be524e29", "T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5d1a50d706b6845196fc81f59bec2c950d618cbe722458239c97d1ef0ad87b0c", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "5989449edf48f13e12d3fa146eed357c0d45aed832f6ad86b49d46d47c80061f", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "66429d35a7432665c9170f0ff4becd7494ca84fe8cf27567efc3f7e657910292", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "12c52ed63a6c1533c5d9e7a1e49f9da9c9a6d970aa93eb8f35f09eb05f746194", +"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "152c3682a46c5262d24eb7369a7b5c8f930628bb74641778b6c5311f8e6ca51c", "T2B1_de_webauthn-test_msg_webauthn.py::test_add_remove": "ed9db521f9bb579c35ed8df8421ed84df45121649d99ea04b071da0fd76ea57d", "T2B1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "8f269d9d7ae6eb993d01a74df141d055e67682d2bd8683ab3aaf3310f0302985", "T2B1_de_zcash-test_sign_tx.py::test_external_presigned": "b10849bd341489f6b484ed89b82139b2e753df1538854c466e7f67e4b46aaee0", -"T2B1_de_zcash-test_sign_tx.py::test_one_two": "b19226c574395edd4d28df6473fc220c31237cd185d27506c4aa1929f75cbf07", +"T2B1_de_zcash-test_sign_tx.py::test_one_two": "0736bf7b7d2798c27ce04cf26c1d625dffe6a9e757c0daa2b8d50e289d69cb30", "T2B1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_zcash-test_sign_tx.py::test_send_to_multisig": "26f1fab83d1ec347d40ba36aeca1904392f0c6fc23ed2897ae0df92a112b8f59", -"T2B1_de_zcash-test_sign_tx.py::test_spend_multisig": "01932ce5f53316960199cd06565b59c23a7e8c5e7b629e8f0e83633c3c5985d9", -"T2B1_de_zcash-test_sign_tx.py::test_spend_v4_input": "052b14c1908052569789f57d6f502a0ac635e772752d2c9c0bb6aef1f29d0bef", -"T2B1_de_zcash-test_sign_tx.py::test_spend_v5_input": "85f68cbc54fd6cb47b38408a93b905d1084e60b8ff57ff647624655c18626e17", -"T2B1_de_zcash-test_sign_tx.py::test_unified_address": "5e78fbd305b3bc45bd1ebf4833afdefc402f05df7716eb1978262533fe3c0603", +"T2B1_de_zcash-test_sign_tx.py::test_send_to_multisig": "57384f2fbbcadb48cea35775b4002fc3bdfa5084937d53a5e7c55e4a4340345d", +"T2B1_de_zcash-test_sign_tx.py::test_spend_multisig": "83496737c3d1295ba4dc60c7d24c62830c6a772725d0b18bd51ed5748f69cb0a", +"T2B1_de_zcash-test_sign_tx.py::test_spend_v4_input": "3a8f455f7d766013e0d9152dce744c82c414ed8b18a1add1db7a438b74e628c5", +"T2B1_de_zcash-test_sign_tx.py::test_spend_v5_input": "cec6e9a45ebf4f5e9443cbe3cfac68fc2375dc37cd0cd7d4c4184c3cd21bf4e5", +"T2B1_de_zcash-test_sign_tx.py::test_unified_address": "7d61cb431c163433fafbfa88e8432a1396fd9e2390ebe2b7bcd2be71db62cff1", "T2B1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "e76ef483e6b929ff74ab0425708a86264ba8d6b58f3e6f669e3c8d794d02b580", "T2B1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "56868c4176799e51ced92154e6d1525565b68b062d91ef52503def0c6c8fba06", @@ -4758,52 +4786,52 @@ "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "829c12770a146dd2660f235e34ff8f3a69c5d39040720a9b1833b4d6ab7befd4", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ed9ae4831fd2ff2b8ae8dc1c9b753c876bb151d369ad0b5a80c84e00b01c1f11", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d8fa977ec0636ac4b2dd3a77e91dc0dec134f6dba607b39d0509e445e8b2d098", +"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "455610be81423df2a8ee884cea711dec7e651dc15534f439af2aab54782f7e4d", +"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "72521d95a5eb9033c358a14acf15b3d44ec291758663844753fa9a5fb149b17b", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2a0afbb81f5c03c237e3d58ce761be9b0006ad365976999de3226559c0b1d5c6", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "317c603274cb8c781ecc341c5728158aa8b4716a278bf2fe58cea91455dc8494", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "df8dad436439ff50da27388ec98a4ab338bba52ca1ddc2a5409ba3eb91089f47", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "2b169d72b69f3997c1050efe63c833af11c823feaaabb49ff81eb48bf7a46ee8", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9889229b8b229fb60f83c558d7ac3c5a9a8d40f2224f4f48df6b898a19142c9f", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "88eecf2e6f15f3c6f48bd1961a4351a44a63ed2384ba26fcd40dd66693532d42", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "9889229b8b229fb60f83c558d7ac3c5a9a8d40f2224f4f48df6b898a19142c9f", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "88eecf2e6f15f3c6f48bd1961a4351a44a63ed2384ba26fcd40dd66693532d42", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "086b3eec1ecf14039c3f168667029b65aa6765e3a7fca1eb918914e7dda083ed", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b65acac85aaa336b5a36a37f217b39d5c65c37d7611e48d71bd39f0fd923cc1e", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d08a26683b1d323eca068fe20341632cc98d27d7e4db8da3ce471813a128c549", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "577ad41eb7e07b00142e96205842d0fdff4e3355d51e60f79b1105c88c323801", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c674a3a7e10a4983d018daf9350b789bfcfd0767900364baa3fc07e8ec96c325", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4de2a30fa14e1e7cdc1283ed76032c652a58bb4fe1366fe4536e03667aebaa95", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "c674a3a7e10a4983d018daf9350b789bfcfd0767900364baa3fc07e8ec96c325", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "4de2a30fa14e1e7cdc1283ed76032c652a58bb4fe1366fe4536e03667aebaa95", "T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "71897579824a797a9f9c4f44a7067be8dd6a81a535af465fef21315fcfe153ac", "T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "cacbd98f9529935bcc29e7f1f23967c1d82bffde0e69ec6d9c9b63f0eaa50acf", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3014d0b49405f39c22387ed1a9ebada4cbfe786ad358624e7958735af91a7028", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5bc172bf16f3fbfbabd1b0dc67f73d450a3a3c33e490247a51b2ab1594eac447", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f75da06d2df450a11e405d1e25368849a233f622f07be17d2e2c0ea6ad51e99d", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "65a875453f7b6403dee740da68241bd669f311dda8bfadb7a714938e81df10e6", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "67c20b02774e08b793bc4dd084cdefe58d0319cc66476b33561d070084738124", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "33604ff6224895a896ff97cc69237325edc67eb5b9093bdd749e1178fd46572f", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "64e2f28d05f5c1d02459172193ae1956a056b2fcbcdcbfac4ed26cdf84cdb2db", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e70389916e7a58f87f709f002200ba54352d05b3715a4e9a8d616fbf709b51de", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "ced567f9a35dc5dd086c8d28b5f9f5721eb7267bfb436ec7d2ab55e96d133201", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "632d84848b4b38186e772b96d6a8c1137874363b5dd0ceb9fdaf8352333ed88d", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "66a583906aee3754172d9670ba98169e31adc9b9bf61d199e0fb6b8e09f5a08d", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "46ca781d6deb347d6c06930d8c209aac515f6ba141ba78f0f110c232e23a156b", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "dfa670bf359b33f38e5279ee786465766d9bc6a8c0a510013e5280257051d0df", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "cde269cab6e5f1ccb6b1d360f4c20ad1edbdb89b11270aac2a743ea7097916d2", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "951b0490b691db9a465812f0041e65aafb2716f5c5d2e8218b024f19405bb9d8", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "77d3b42be22976619ac6b2eb18133cd436d8980b7a2db9b23cf34b5468886fdf", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "03b33a18acd888e7056c552db074a839b6973694b17cca464f2424e3c179db48", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a36e576fbc26a44754153ea4e0e8e338ce01bdf4bfa8eba553125a3b28fa9cba", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e21a10925179b11df8cb8265bbc5b5b28fdd83560f851a59188084bf90474ce9", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3c36a0821a4c806cf921341365c0cfc22c84353fd9a19a62689032f1de89e308", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "133be6fa7420121dfe8aa7682f0b4039459401f2432e00fc5c2744cfbe015984", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0c2683a4cf86c6627caa45d103c2f0194fbb41d74770e6fd7d3357794d3545e7", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5ffe36e3d0d03e0f47040fced278518600d1b5d8162a768126a92022605f7707", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1a045aae28e61a88f3df9c6285980a3e5c8307f94ae96c2cb8adeb3539aae346", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "08f7755171d23b3157264db6408a7a2330e362a99a8843ab89b5c8b3baef2321", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "df5db3a22b80daa13cc5a45fe91d417a4d12adcad1cd6177976840c094929884", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "ca43dabc6954e3945a7a8878c826f0d2feae5b4cb076c8ba6aca9b1f66f294c5", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9bea40efae135113c646798bde6736b74bc7c74d094bbb7b79ce7a06657d1f8b", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "5fb94deb7c2d55e89600363ddba3b40d4fc1469bdc755b4ef5afcf3b0c5c2a95", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "8ab2d7271579d094cddde9cc404734d9511bba5b0bb28ac55e8c9f5ce1420d3c", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "de3723f8aebc4bf79442d729aaab802d1291bf808a868e2f1519f44f6b75756f", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "43d44475e0849ffe6d0bfee856e0c9577c9de743b1020f523f0504af0af77138", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f95c49828cd87ae0d90ca369166a6ddccfbcce497ceaacd2561f0c002363d95c", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "a5961b4b97e3fbe98bcacc1d2c6d11f36ba264db69485dc39a6381b7a709b5ca", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "506f8adfef01bb0f76ab2c48f0e81f38e8dfc2e8d70cb5022c721a2beaa06206", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6bd90c87f780eb419e8fbed9a996186e7dd6f24f6ac8e5e4ca4e507b14f2d4a9", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6ed36a78ce923cb85db796c447b55c5cea549fcc600035685edd08596b37c356", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "30fcbf4446ee21237b8b951bae112253195fe79ce5a89bf6dca0e9c1e9ee1cf8", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ed4662a5df961dcdde60d11bdda2e8984f49de7be79b7dd5e7c184de265fc219", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "4bce9ad590fe0ef79bf5383e3df48cf565e357683b5850800dbcf6bd3ceee742", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "92be50564a35de0df4cc86fc25f62a2ff3b17cb37ecc56e26494f3a843d54a27", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "922a97f340018ef5332ab169ef4f09f23c3366c42491ac33366dab3775496f39", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "7e7ee5fcd216cb493ef4eccb1b0aa6177691fa3aac8918d2d78882876796eebe", -"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "fdc5f93b7ac0c04a060a4caa7c92d31323f17f53c7233baef25389fcea305c96", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "83c0ef3f34fd725ffdf7dadb36f550dec6348c4381f50985c606122a44f137a1", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4a343aeca1b5ee46f1e150abd272a19ab4feece2ad7fb0b6a56a1808240e0f1f", -"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2d424a2536fe01274888c9a8a9d5abf57e47e0f9d18bb357a7d5d18d94d83317", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "1423bf6ed718b1adb3bfe43f8f01d4c0ec6a08f6f868dc709354ae8582ad9614", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9dcb63be474980fa21d8faf1fbf9cae993a5a85fd4ddc60e96edf0fce24c1614", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "ff53bc8395f0cad4c5583d334c19138fe7943228267f625bc41fd0157d4d39ea", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9c0073084f3c0db3b8b3a277fec7280d1fd5d95b320ad9ff2655c1ced78de911", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0642791589f8e61947c5aa3891877ca94d9cd55750e231ed9a1ef13003bd00bf", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "86171ab9d39186d411e62aafd79ab04a064520957bc5b7495583eccd90d4a5ea", +"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1b22e39ab321a554e101dbc8b5027fe8eb886502e775f9f9700d037677042375", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d3d0b0c4f7c27c7e6563e7cdcee362fbe4c4653548a8e7577ba15a0a542dc6ef", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "090bae86d3105646d6eb5f443a1bc801586d64ff602c41b276ac7404c2a4459a", +"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e2b8c06f601d994e0913d2291e484f2a5f5a698b423697929588ccca84d61ae0", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3461dcbd931d8c847e4367d88167958219d3e909c61532f72921935c1a59266f", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1d227c9596a152ccc1a446a42e65a7b6b06c2deabbf6b07ede4f26e1a0db1840", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", @@ -5010,12 +5038,12 @@ "T2B1_en_test_msg_applysettings.py::test_experimental_features": "0ac7ff5ebcc73c8922545b14e8584d13199ea0c5d0712189b16e24ded22e3c17", "T2B1_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", -"T2B1_en_test_msg_backup_device.py::test_backup_bip39": "68eefc8252a136424c3e39ea3fa28921caf1ff0992c460688a1a11af196a2c88", +"T2B1_en_test_msg_backup_device.py::test_backup_bip39": "2c19ff45c8c02dadc065f360af23af8d357dedc066711cdc30c846cfc07a7d4d", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ed56a1b0646b43317518b8ee0cb5fe99229e733b2aeeab0daf0d137e33b414f5", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e60ca26d789e9f749bbacf913bdae3b2941fa735abdb4450560d58945d62aa1e", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c207d4c2ecee8f3ee811e921c203cb22ea47c30f9515634e02e90c0ac10a0101", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8742748b1e7219edde7f86ab06f7f241eaa35e8b5de895751130c99a3db7f3cb", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5584e1ccd6e80a8796d856374b10ce94f1a113cafc002e125fec4edf32a3a533", +"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d04c60fed9e5d42df72ff9a25a42353b2eb02490f7f03d8bb3822c453c2b6cf8", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ac501c19e3901a16577946fd165ed6cad15f46e0172ae3d95866b558e151288d", "T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "81d5804eb846dd513b42b684ca6477841a673e81dd8a30dabf8c55affea216ca", "T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", @@ -5063,6 +5091,10 @@ "T2B1_en_test_protection_levels.py::test_unlocked": "e76b12522fd28fc08af0135271615d63a13a0ba9f013ebd1afe20ef72abe0803", "T2B1_en_test_protection_levels.py::test_verify_message_t2": "5f04a88b0acc2daa3e87c02074a64969aeb34157006adbf15a3655e94f838bdf", "T2B1_en_test_protection_levels.py::test_wipe_device": "bc06c63c7f5b9e7f0ada0d3d342125905b4fc463fb0eb2ba363b300909dedb9c", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "f46dcf489deb91e78719319c6d2d2aa191d714f9592a5f05d283dc6c0abf8d0b", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "689baa82f677f3b63af766300cfff7f3187417560a28d3ed9810803d1ae6b493", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "945db36f4945ad84a17bb0eb81b7d0c2909065f1310e33386d7dfa60a94f9aff", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6b2fb5274c1cff2abac5e6ac564b3610eb7ca430cfb83050e849cc1ee5187c34", "T2B1_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_clear_session": "c4ec976d3a6d21237c46f4bae10a16d792cda271feae0530cbe570b91fd81a49", "T2B1_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -5130,17 +5162,17 @@ "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "f760ea0d91e221b43da64c7e048ae736a108a010524c87c6af5e3f051f6b7537", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "f760ea0d91e221b43da64c7e048ae736a108a010524c87c6af5e3f051f6b7537", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "00c53611345581b92df202f11bc1c943857bcdc59500caff6519da95b4b226cb", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "4fccfd2350e4f168237dc3efad728296019cc2eeecfce3364062b5367c42fe5f", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f18d87b62215662e0b63f0dde681b1e4405b7364d03698f9cc4feef0a36f63c4", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "21dbc28353e0e5cc571d5bac605cec888a6e99b78482a1c7a95056db2f3be6a2", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "c46f223715b7919e84b8c20ac59a0b670e7507bbbf30f1c4123dfec3b805f9f3", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "838ec403f6c8fcb727602c60ffa2837fd215e172c23e89afd27c480bde849f30", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "838ec403f6c8fcb727602c60ffa2837fd215e172c23e89afd27c480bde849f30", -"T2B1_es_bitcoin-test_bcash.py::test_attack_change_input": "7c47158c4621398d691a31c4bc53b66d976a886b346fbacd0421967d86ee0eee", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_change": "311c4b485f4c02c155e4ae5206383834316a8ecda402295a148bfb398e77b689", +"T2B1_es_bitcoin-test_bcash.py::test_attack_change_input": "e78145e315012c867be09ff8c763dc61242786dd14ed4561663e9ab6f00582bd", +"T2B1_es_bitcoin-test_bcash.py::test_send_bch_change": "c6fd41e2d25aa0dac8df8d59dd011694d4b059fff381989a7739601a54d2b8e1", "T2B1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bdf35e6aa6d320fa70f7c7d249e3ee707c4619c32eed946e13b4c9f4a605f9b7", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "da8a936245e5b2233c72c82bdead52edcd02728be14717c35f8e87349d0ac0ed", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "c15f1ffb4c8ba8b43fe7403f5414b0a53425845912999d078c61d844e33a29ad", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "4d6d22d19abb86322f620e1e55b11e6dd95d2a8cf86b6b2cb8de51708c561058", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "7e0ca6fe08cbd44dfb8a2a2cb716a5442483046f29eb955b6b46346eb18bd1f0", +"T2B1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c92473a8f0d5c46c87f1e3f52cc23a8fb8726bce427fbf09915be774737ca721", +"T2B1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "27737ab4940559d6cf129c9f9736c584e78b0dc6a85b36a371370ddc292a55d5", +"T2B1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "69fad2e4fd135e3396628edf3542e96b4fd53c823bb4e4ef6034c752ca895879", +"T2B1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6df157bd4cdb6fd7b9c082bfdbad18a89ffd90336b741396eaabd8877fe1f92e", "T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "6094bbd7e893dd2a34efa8509dc9a22339f420ae3bfbde0965f046984542d509", "T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "0929323712285fd3011523c441d25e420bc3946c76759f806464b03b90fa56d6", "T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f7e1cc4f49f3b1ec35e2deabeeb8fcbbc12cfff31e677a4bb1d5597f1cb89f43", @@ -5177,8 +5209,8 @@ "T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e8217210fa95119ff9ec02d8fb78a829f40d1bd166a5db73744834ccc216b5c2", "T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d0e00e013c38325ed9970b4431fbdd48cac8ccbdae57acc376dd3cfe78d52368", "T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "a472e956ba95b4efefd27f2bafd6a5d5bffa56ca010706c3281003634c925405", -"T2B1_es_bitcoin-test_firo.py::test_spend_lelantus": "98cd4406a29b056be8525bb540d2840e6b209b5a8dc3e78d465530da6030dc44", -"T2B1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "52c9437c7d2d11fd0c8eebff3f7407ab71e6ad685bf5c98754dd89b926b7d5d3", +"T2B1_es_bitcoin-test_firo.py::test_spend_lelantus": "dcfc847a62ef5111f2f91069ffbd6a53b26e39019bf3c15d1254eea94dfa3a30", +"T2B1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "34015cf0db5a4e0f434efe5fd4f26675933fe25a21bf755ee1867f9638aee37f", "T2B1_es_bitcoin-test_getaddress.py::test_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getaddress.py::test_bch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -5306,28 +5338,28 @@ "T2B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_grs.py::test_legacy": "ee34fe1c044ea91e76271519aac617b27670f1665051812a927034085d87a59d", -"T2B1_es_bitcoin-test_grs.py::test_legacy_change": "422c7ef112436d83b4ed2eeb44a18bdd5d59e98bf8df82c872c287918d520b76", -"T2B1_es_bitcoin-test_grs.py::test_send_p2tr": "932b90149ecfc2ee0aece8dc69d41f4e10f50ed61a8cbdba479ba07313e717f8", -"T2B1_es_bitcoin-test_grs.py::test_send_segwit_native": "9751faea5d36b2f1e8f812324696580ac8e6c9b308d65989ee8f1929e08a9d4e", -"T2B1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "21732c5fa31be490a9215b64bfdb8b9a4d5c754e46e46a94a9d55e1d260a86ba", -"T2B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "4ebe7113381f62efb6656fb39046b100bdb8bc76f6537692080a790e1f306da5", -"T2B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "55329755657397077bf47b8176f2552025cb98af4fe3320403dfc102bad81368", -"T2B1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "7bcf17b85c7887e07e2d06a3ce713c7265565fd48371574bd59a05e500daae27", -"T2B1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "614fafe356d56a300212c34869214bca3a59c0a325d3da11d37293fa9d161066", -"T2B1_es_bitcoin-test_multisig.py::test_15_of_15": "1265663b5856c64ef1fb790859e379df7e7c9f2afeeb348dc85f8b53185cbbe3", -"T2B1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "0860b63d49046d3b24db0e7e40349fd3cda3c4e074aa5c2520bf52e302f29094", -"T2B1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "4e777be36e3dc8a2baa083b6021e10a97e6e642bd938d6d57a1fc2df3786b6d8", -"T2B1_es_bitcoin-test_multisig.py::test_attack_change_input": "59e84649f7cd9f890614ae34af9fd4c4f4af706143ccf56a474ecbc0095d3433", +"T2B1_es_bitcoin-test_grs.py::test_legacy": "2a751c8bdd1a1c19f85f76ea379c71429fcac3dd0a02337b0406f98a9b64ea81", +"T2B1_es_bitcoin-test_grs.py::test_legacy_change": "60de25f5357604cd1bf0b237f29bb9b36b65ff08377e03f678a0a6fc6e9d7e8d", +"T2B1_es_bitcoin-test_grs.py::test_send_p2tr": "1c3c3c50538db94fb2a051877a72718efeae94a188ffec87e69647a8e2ed9da8", +"T2B1_es_bitcoin-test_grs.py::test_send_segwit_native": "bf3d8fac2d092df7b618591bdadca28950a7014269ffd7aaf324493edbfb9533", +"T2B1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "e4b52b23313691a032319329e01d35e14ec4f64db971c4a3892cedb68cfc99df", +"T2B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "7dd1e6d1fcbf0e5d1e76f3b482d89018f1bb9237f77e078b68e88907298824c3", +"T2B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "3e6e3fc55388c3ddcb2a2a4ae57bbb8bb310535c6c4fc64b58b2004206652b33", +"T2B1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "43c2c6e81731ab619a63002cf7a9acae5a002a8f55f3b150a9526c00a327e773", +"T2B1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "8fd9ac89fd824f04759bf07a90e6c2b97535aab66891ee4d138efa40546640de", +"T2B1_es_bitcoin-test_multisig.py::test_15_of_15": "ceccbd33506f1fe517cc5209b0c30eda494e0588f46dca334a8c2654eba3d24c", +"T2B1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "49dfe4061e888f93e9958ad94db64923b436b9c263347c5ba50757aaab5d7cb7", +"T2B1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "cb00d537a5cf5ef59896c0c0d5e08fc76ced4d11da11bc2206acc03f92fede5b", +"T2B1_es_bitcoin-test_multisig.py::test_attack_change_input": "858b0c31fe6e78c4d7048ce427e4c49fc7b3d08a8dc559c84e35f27de2a3477a", "T2B1_es_bitcoin-test_multisig.py::test_missing_pubkey": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_multisig_change.py::test_external_external": "364383f921c5da75fbacc257fe5c1c976aba7f9a719329e2c99ee3c9bfe21a39", -"T2B1_es_bitcoin-test_multisig_change.py::test_external_internal": "5081c74ca659b054ee59c614f785bb74b87deff3357a0ee36a94bb87be07732b", -"T2B1_es_bitcoin-test_multisig_change.py::test_internal_external": "8cf4c24c830c612e905bd2be592a9f633a6de8cee64dd9dff7f15388b077441e", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "40ff9c02c79ebede940cc488c9a9d7a7ff5bed6b10ee58f60284b0d52f3fbedb", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "6392377a2eff7751d9a34c610e1d13f6c36dc4a5a6b197beea5bbf06aadc0ebf", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "bc852f31d9d21f82e315de684703e3655f493302382eeac12180855e4f3c88f6", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "b682a51ce27c2797833e7b50d3dab40437b6061d9e320f471074a3463f3d5086", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "c2c9c7bc029f3e4b41712012f38beb217e4d5efd49ea6178bee347aaac149c06", +"T2B1_es_bitcoin-test_multisig_change.py::test_external_external": "3ad40f4a958880d5cc9c4df065c3ed662ebeb3f7a0a72aefc59bfbdd66e58e0e", +"T2B1_es_bitcoin-test_multisig_change.py::test_external_internal": "abad31bf895e1723696dbf4bfb4f9508e46aa00bb83f37058bea162b80dc1165", +"T2B1_es_bitcoin-test_multisig_change.py::test_internal_external": "bfdc3c4f84e690e031edb745c09dd3b51e78b88e350eb7dc1e356a35d7aac65e", +"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "a918ec5eae4850a34279d26c0ec798ee2f70ce15e391beae25b3e1014d6ae3ec", +"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c8511a3b162c6d720a25efff303071fda9aefb027a1a4bc14eb44dc42e844f43", +"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "293dcb46db1b66886e278066128ebd0549d605972adacfa6446a2c499e05d354", +"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "832353ee58b994e21124428e0ab5f9c8b45ecec352a48505976325cf2d7c7c90", +"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "05b8e464dcca41c0fe9ee69519236509532d56e90cc8e5cf4380784f4f7f8a98", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "fcb54adfc10ece04a9238b1cbafd5e94578af7359a1772bdabf4099cfd9f6da6", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "34f9bf81eb96a865997524c685f55d5f4c540c967d1da999f4a5dc7620cb9f4a", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "163d3c418710f15924ae83162bb16a159d1691b431c9c5ae33cf2a0431a2a835", @@ -5356,25 +5388,25 @@ "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "31db18543a0b5f8d70ed0511c7a3ff28d337590a0d83210c5c033e2cbf16599f", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b3ce35a320948ac240fb1c6a1265dc3ff8aeded37952ea19e01f2e9dc6e5d40b", "T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "e8fabc62ac646951d5039333fe5ed9fb58f4da9f9395fce5f26612db84ee0333", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ccdc69f0ecccc3fcb537d95e0dba9292f31d038c70bbb075552d08d1cf647983", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "e4155ec2dff54c9f39aef1ac8f8e308375f572c6126f683608d514e8d303f613", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "ce64f61c538254442a74c1e9ad326a94fd3aa1e647c329a9ab368379a96075fc", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7c9186c404b2b78925a97b32924de5de9087524a3e272ae13713f6625e7cf7bf", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6eb849ab2246c1eec2e568b87dc8be7c30fe2060a33a309a4fff65b0060dcd67", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "dcb299a567bcb364cb40f1002a74964e5fa699c4b5a6ac395210c17abb636fd2", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "946bd1fae7a7875e88b9ca43497d9d1cdd0b0ddae9a912d446fb6526a2f9ee5d", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "58b67ad8d39c44d9624418d3d105cdb69bfd76eff472a58a680fcc98ee1c3874", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "bc685e1994d85231b5b3c84e0cb2e5b2e0598cc93e8cfe3cb626be168d3f4565", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d971e3514cab3bdb4694a4580529500425e485225992c7e85afbc3caae0b187f", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d386911a570a344cee3c48b32175e5ec656a76ec1ec6fb580f93df0774851b5d", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "1544b1a79f261b7a6ec10d14d0a55bc698cf7555cc51295f6698c16e4eb9f28b", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "12d22f884b9b47f5cd87098fab9e0a548a596daec169c1dd73c3afb86e7931a5", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6870f16622ea0f622672b3ae0cc59aeee1bc8b292de5d3fd021979868b02b258", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "596a3935e27943d9c4773699a759c5f49353541f63034aef291dc135c2c107a4", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4e5874476aab31535cadb1d49c48e4c7cefb07d08ccec9dcf9b93d7bbfe21e12", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "23a3198bebe3f2dd7d25d9e0558c1831d4030475216b637666e02de7e2eaae5c", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "896ff4ff77a47616ca09a847e2b206919255f08403eb65a313cd8069d8c63df4", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "7baabbda4c7451f5d6ee372dddd3042645bcc995d0eab8284a98ef792c95ec6d", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "cb13c08f23f4e17a29b4b3df3195236275fbdd722e4e1281a98d8e44a3da8164", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "6fe828c6b03cc612a2a602ec747132deb48df7b47301351d3dea799375746b03", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "7b6c2cad904a36cc883099f4131328387d81500db5a7ffa125022dfdba5d6485", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "3e98aa3e7c1e07b10345e80ac275f2d55081bd4ef10aa19cc303dc73991a0ff7", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "11558b143163ee03a7af859666a41e468c84533274976c2d360986805f584ce4", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "3054c3b605affbf09382e220e1767c0c248f085863d0aeec6894a85708e2be37", +"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ca386a9267fef4789eb989dbcbd02179a07fc9b8edeee2159c566e27c4ffeeac", "T2B1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_op_return.py::test_opreturn": "c6c8456dd0ae71a7e139658003d6dec3c161d733d19dcfb71df9839524b68932", +"T2B1_es_bitcoin-test_op_return.py::test_opreturn": "192c74ccc1ea311f84b6b02405e15030251a18423509dc90ca2ac635caae2545", "T2B1_es_bitcoin-test_op_return.py::test_opreturn_address": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_peercoin.py::test_timestamp_included": "d693936843dcac7eb7630e79bcaba3c1c366a63710351ed8e42d5bb82be4647b", +"T2B1_es_bitcoin-test_peercoin.py::test_timestamp_included": "a5db7330af1adb9d16a2cc7707b3bfda181149eec3a6a9b5b23ac92be74d5b28", "T2B1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "5dad62b9dbec8d223b74a275ce6517bfaeedffe81491a68727ff7ee828bf012a", +"T2B1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "040e65801890966d0bc89d67d78509e9e3ffff713fe2424ea28131fd3c3915c4", "T2B1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "53bffb4f448daff3a268ada50a05b5f9f6ba967f0e77f6bc32489695edf311ea", "T2B1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "53bffb4f448daff3a268ada50a05b5f9f6ba967f0e77f6bc32489695edf311ea", "T2B1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4fb0c12387c5da4afbf4f384b5c5e3b3dad738fb4cccea8eb6b1ce7dfc695b28", @@ -5402,103 +5434,103 @@ "T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "a1b84f31d4c2b157abf6772c27e80513630ccc865f0c781517de3ec8e4ec508c", "T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "74fe66ea2a2f56c9747456101373b3eba91351c38e5c61f2679e581375e50cd5", "T2B1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "a753898a470cc483a1428e20268ff5e0835c0f44cf799838a6e788eaf79118cf", -"T2B1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "00835d10e3b199889b13553fbcf1cb76836c0bcfd6f43959fe3ee769e1d251d9", -"T2B1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "10381cd2f4a37497a53c39c55e08c494647cfa59aec43b36a94b1659fb474c1f", -"T2B1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "a09579e1f8a2a4ccc2706618ef3a8730da80057ff2a618cfae5157959b95e3d4", -"T2B1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "a09579e1f8a2a4ccc2706618ef3a8730da80057ff2a618cfae5157959b95e3d4", +"T2B1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "9f24e6b556ac97df532d98b1c70142d3bf24ba89f5240eb6f47157d7a183d31d", +"T2B1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "0985d0b9ff1e6bc80b17df2d28bfd8931653ebb1d94761a4e80818bcbe5a1a2a", +"T2B1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", +"T2B1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", "T2B1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "213a380d6c7d24f9dc9b6b06ecc06ada13fc6a78b2edf5529d300f1e9ce916a4", -"T2B1_es_bitcoin-test_signtx.py::test_fee_high_warning": "f568e19547200ab4f99140ba2ea45726671ac09e79b497055dabb38b6f67fb38", +"T2B1_es_bitcoin-test_signtx.py::test_fee_high_warning": "bc2965f5b007eb07afa06c91a161967aa8da59363efee8c1e14f796f9254f7bb", "T2B1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx.py::test_information": "40084672634d939f382aa1f61628fa078657633fe84e644d2c21b9431c70274a", -"T2B1_es_bitcoin-test_signtx.py::test_information_cancel": "9eb01212a51c235373f09ab405763b0ba6a97fd7320ea70a024c04af2b91e109", -"T2B1_es_bitcoin-test_signtx.py::test_information_mixed": "1956674e348b5edccebdba0e33ee25a03adacb37bdf5f06c2f0c2ef009930a33", +"T2B1_es_bitcoin-test_signtx.py::test_information": "3dba5798f7d727fd2ea253408ffb945eee0c66a58e450fe39d33be2c240fc5b0", +"T2B1_es_bitcoin-test_signtx.py::test_information_cancel": "75db9890954294a9be0f48c5d87aa370c9cc09349efcd306a1b5ffe02e90f904", +"T2B1_es_bitcoin-test_signtx.py::test_information_mixed": "b1171388b3b0d41239bb64659c67142ace0fda0c35738d963843340a12b55fcb", "T2B1_es_bitcoin-test_signtx.py::test_information_replacement": "ff56a2236ca5d8ec886d0099f230bc8307e9b8f18695c28dd8570d4e18bbdb24", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "3a055b8132546c05daa2c3b9051218467f589d743788302fa47cdc348921580e", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "5bf5593e35759cd3b28a9abbaa0410f772d464cd2fdf9128f156e66ce1084146", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "55d179f12a6ec198b5103ad104c6b78c06587fdf74e132091f75272a9c8307e1", +"T2B1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d82773ce960c2f6a343ca3a0908ac34d5db5374aa4fda7dd00551f654ed99cfc", +"T2B1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "767e4cd5a7d263c12a32ff3f943655a74d5bd4d4cf7f9a7a59a6b2a10e062170", +"T2B1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f52a229f39c10ac74673c77a5b3c3d1429dd2ca5e8dc0c3c8dd315bb090e1a8e", "T2B1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7f916278695301f6a2a8f24ccc13f76c082497ccfe6d39131f10b5d01080ccc9", "T2B1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "34e49294153891f3b2173f6376ec25ed126be4370ceef5c25a2ad0af71caf38e", "T2B1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bfba9736c226ad919ea981587c4464cd2f9b90f98619f717c99e0fbd6473f9bf", -"T2B1_es_bitcoin-test_signtx.py::test_lots_of_change": "678b617222053e84deaab29d25345c356607c4a1c13077579a749689a2f19597", -"T2B1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "7b87c32c5d044a085e89e5130473b5b65bec8b93913b724aee9dbd48d9fce37e", -"T2B1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "7381a47c5d91d6f54b880d1f64f54583501d664f78f4a49b8f3e109454a139c5", +"T2B1_es_bitcoin-test_signtx.py::test_lots_of_change": "197e9046f31a4afb742885bc5d5c9b8d440b328612f90d5f4470ab39e0ad8942", +"T2B1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "098205640055457ab00f3693d59d9d23535ac26ebf050cefb4027b21b53af8ef", +"T2B1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "046c9bf43e036a70acb8b36a68f2f9aae4a2ecd1af1357732bbdeb7480c2c7bf", "T2B1_es_bitcoin-test_signtx.py::test_not_enough_funds": "840d6312c3cd3b88481e62f99d0908ae0cb235de5f59838c6dfa18831ce894ef", -"T2B1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "c8080b9e6fa152181bcb21f3a63063ad3349a077ae3878e5ce14cc1d1629e188", -"T2B1_es_bitcoin-test_signtx.py::test_one_one_fee": "718c0bc97412997829eabe20d8c2718c1b6893fbddc48ce19c4b3728f9d2a5ba", -"T2B1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "26cc186a0de8fd6badeb6b39713839a64233472a9d6a04dfc5df90867ea91be1", -"T2B1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "2c91c4f728c7b0f9a8f9448a6d4d732e3fa4dc290556d14042fd9c69505548fe", -"T2B1_es_bitcoin-test_signtx.py::test_one_two_fee": "1926ace2733efa89612ba143fb9e7be442407e305a6293a55b1856d881d73f14", -"T2B1_es_bitcoin-test_signtx.py::test_p2sh": "05bbac9f0973ba89de9b3be491dfa14b2368fe7c624654e5654322b302c4437b", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "02592891fdee014e6248890264f56854f2fd266daa95f4717022fc03a34f1f98", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "02592891fdee014e6248890264f56854f2fd266daa95f4717022fc03a34f1f98", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "02592891fdee014e6248890264f56854f2fd266daa95f4717022fc03a34f1f98", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "02592891fdee014e6248890264f56854f2fd266daa95f4717022fc03a34f1f98", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "02592891fdee014e6248890264f56854f2fd266daa95f4717022fc03a34f1f98", +"T2B1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "8a881fe6198f5dec72d2a828b6239841096f00d8163744729e33f0247b441598", +"T2B1_es_bitcoin-test_signtx.py::test_one_one_fee": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", +"T2B1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "62d01d966021462a475a77e8d9054ee79505a23bc11df983abc562d2ca5a1ea0", +"T2B1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "6e0f5400483d16d11b342d5b17d70a510c8d269818e26ff4e8ed9b12ca3f8047", +"T2B1_es_bitcoin-test_signtx.py::test_one_two_fee": "09ffa51d05b995931f05557536e7db57852e44e76a38f57c4403518609c654be", +"T2B1_es_bitcoin-test_signtx.py::test_p2sh": "4ec87eaa5f541c901f53950de27c9a125bed82cab927ebf180545d6cb0b4247e", +"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", "T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_signtx.py::test_spend_coinbase": "ea2009f58e7a060cdc8a3aff8acc770d3174544b85bc052d35c129b6e24f9c1c", -"T2B1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "7f5649186927646fdd1c93b931db5f868415da977175b832a85454c4f2dc4a06", -"T2B1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "9162084ced48317676a39c92df42f06f7aee222c2f9a110579766d73e7a7b6f8", -"T2B1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "a09579e1f8a2a4ccc2706618ef3a8730da80057ff2a618cfae5157959b95e3d4", -"T2B1_es_bitcoin-test_signtx.py::test_two_changes": "d90df2cc6aa6e5c981a661036d8d51d642c5dda6b3fb31163a7a4ab65455a5d8", -"T2B1_es_bitcoin-test_signtx.py::test_two_two": "523b758db7ea5ab83dd1b98dc3c8ea1f193e8ffa6351e381932014f5a20055ce", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "718c0bc97412997829eabe20d8c2718c1b6893fbddc48ce19c4b3728f9d2a5ba", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "c8ec72512f3eea03038867b06d98f211f26c16757f420633cc2d44902b7ad608", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "f8d028df51bd3c48f864a7f401b3303ea6ac558edf9b197aac09cff86ccc10b6", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "6403b4f1121ef8bacba8415c3a6629ec75d5491a38d1e8681ba77bec6bd14903", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "718c0bc97412997829eabe20d8c2718c1b6893fbddc48ce19c4b3728f9d2a5ba", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "09f1103982a660bb3a42b60cf5b70d797560f8319ca0587079220c60c5acb30f", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "8ffa456493f90e2f3e01332988f9ebc5aac98e2127ee7bcd5703c646a143d489", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "293bd5befd6566df2dd7bfeb6f407a9211e4e2a9de623ad7b3740268c5da55e3", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "03a52512c6b9ad29948df8f3c5262ff6800424d79483b39c923b96336af9d909", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "09f1103982a660bb3a42b60cf5b70d797560f8319ca0587079220c60c5acb30f", +"T2B1_es_bitcoin-test_signtx.py::test_spend_coinbase": "5716ccbd9e59a09c8ef0e6b29f2b587670f1cfd82653b37a9e3ece245f95b8f8", +"T2B1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "8b3b72d10891dbb5abb341a58cddaea5a04cc2869dbc03dcbbb5820ea84e20e1", +"T2B1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "c329263235b7e15109ff72643756389953a1a2cceee4a3cf902cacf63c92b0c0", +"T2B1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", +"T2B1_es_bitcoin-test_signtx.py::test_two_changes": "c251bb4994c321e1d9155afe03a1b364fdb583b4ca5491d548558a187dec9b6e", +"T2B1_es_bitcoin-test_signtx.py::test_two_two": "c64ad880019b87b878cd65f9f99fb3a25c4e4c54a062a4671c3c58a805816f5e", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4f8f6960764bf8b91f1769f29d52f4a7a65a1ac374b873777ed2bdfff104dd22", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "fda8de57703587de89d8cd6aa1cf97c9b7d20db251cb1997cf51435134d66f95", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "0ae3a986a875b0cf90a69b7a0108b6d8822df7bef23b0d26287aeee571110c7e", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "eef448b8ede9de6a58c9531abcabce5bf481f31b93ced57b93a770d1839a31b4", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "2890ba0616deb26c994aa316e25897422f93600f53345d3a34bb6aadc128881f", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1cffec601f29f83b5b11fed7984eeb16369b07e01f06aea334f3efdb27d4e24d", +"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", "T2B1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "3a7488bf1e81ec6a72d7cf693c2d56849ba48f888948806d63019412dcdddb81", "T2B1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "adc653de9b25713b357d07b599aba9acf542bb5ad7132e4695cee3b7c05f273a", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "3bdcda2faa3f8abe51489f7a59de0f7443798234ec98af2bf33235585a39b40e", +"T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "60883f7b36090abea7cc13220ece54c319a9235f0ba7a8d5cd424491e144fe6a", "T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "8344c6e3ad81970ee8c8772163ac407b798c331c43b8fb374099028191a9ecbd", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "3a65dc9d42ae98cd980e08efcc79fc7bfe22f86a13f2ee201466ba54f9bc5b29", +"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "33fd9edf194e5c5649711b7b26bdf4bb9c67b2669bdad172f0b2718ba38e7472", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b83ef8b909473d1c5bf4d4c6cee8b1895b7d8441fa0401f6046951abea47bdf1", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ed1e67c17013c3ea366c5586b4eeaef26acdf9760b9515eace42b439490a69d3", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "627a26a1a0b34fb846c2c71c46d219df1141e811f9c73a13dd8b6750e8ff67bf", "T2B1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "1ff5ce3bfada2d4db22234c11482832fa84ace9a7549e0124ce66a407ec96b18", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "8a966734159f118544058694406e33bd0f2e91bbcb4a07941e08098a9c022684", +"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "523c107ee5a0fedbb575b07aacbea72f55e258732339e56fb2bfa2f454d27eea", "T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "3d65074d5deba29fbc34d5ebe3c656542302f15ecab2e891cf882dd0bc43a673", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "dbb36104f7dad2d3e8dc1f81e52ad1da0ccbda7fc1166c62822bf829ca88040c", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "f6cc64b35ed0ec8a230291410754a7df1be83561a592d10d77a10ff2ec6562c5", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "85799c27fbcae113cf9ab6d97e535ae3c90baebc61638ccb7d2f3832c5e2ad98", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "f6cc64b35ed0ec8a230291410754a7df1be83561a592d10d77a10ff2ec6562c5", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "84c0dccd7a0542f7ba8630b3eea1882425db142796dc206bdefa79f70db3f1b1", +"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7a09f35c67d71bd4b61e0476c2b4d665cce0c60adfddeb6debf533190ee88d33", +"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "241f7ca7ea049800f133d29744dfebe2f148c8c5a03998463cc54722169fe24b", +"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "266f480a6c6d984e8819285aaf39a07792b140da0a3349af2741eded594e89f8", +"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "0ef77e77eb7b76f6c6c0ad20980dcdfe3bc1e661f624a4380cc338d32c8cbd68", +"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "266f480a6c6d984e8819285aaf39a07792b140da0a3349af2741eded594e89f8", +"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c383cf1816fd02001c1c70062c04b21529990ed628e3e477a36316b983467014", "T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "649943388f4e78369d850f96a7a87ebacacb9b62ef78d6bb85b700593413d49e", "T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "90954ee12f793e78b5950e176d8c46927c408dc37259d669f1b3114c6f98837f", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "cb5bea00aee6b9f74ddfe6891f3df3b54d5b6b666191fbcdb11f6205c7fdfce8", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "6d386bb19818e76d520f426eb87c08bed1a0d15b63017d9c3843a011f4908487", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "2565064f4f8b2c3e03012d7dddebf1de01bd4317739e2e0c12d7f78e11093ee8", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "2098357ff7ba25f8388c52f8766e5bb5e01f12abd21cd982de3b178febb8242f", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "fb411f2dae8a23cf77cd0865dc7f9a069860bf4a3a98bf7f1815ea443f7503a4", +"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "60e8c525440bec73ab51c4185d7c58fe51ded659de3e512b6810e80dcbb65d44", +"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "91f22c7bf05f235576777e7d02cf5dcfe64798882d178eacba1975df8d129cd6", +"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "67c45fd34e8151d2e85962a703efa6f88b378e9071b2fac767b1f64c425869e3", +"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "256896d58b0dc8efa4f0301d4294db5a57a4a4095091ce644ee300b8b3a03cc9", +"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "75632bd70891842cc69b86d459a55e24c950dca67370bd1f0cbed10ac7bfee68", "T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "14c0b79db8283ad1522404536e322cb83142b20039052f33c67b6c81abfc9a49", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "14c0b79db8283ad1522404536e322cb83142b20039052f33c67b6c81abfc9a49", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "14c0b79db8283ad1522404536e322cb83142b20039052f33c67b6c81abfc9a49", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "14c0b79db8283ad1522404536e322cb83142b20039052f33c67b6c81abfc9a49", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d055a650c682d37454b234606bef6e32ce2c5e378c65ba3ab2f43890681d4710", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d055a650c682d37454b234606bef6e32ce2c5e378c65ba3ab2f43890681d4710", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d055a650c682d37454b234606bef6e32ce2c5e378c65ba3ab2f43890681d4710", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d055a650c682d37454b234606bef6e32ce2c5e378c65ba3ab2f43890681d4710", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", +"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", "T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", @@ -5517,33 +5549,33 @@ "T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "a998245e3ecc9f6c20e93e3cb6202b470a6e10f30a588ccea6a3ff9255c6aa42", "T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", "T2B1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "a369b25651895e8ef28ede6aef94b14b06f9545b91bc815d8caece7bb203d108", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "fc6522757d106b6ef57f06662af2390c4ec689080b6e5985f976104be79e78d9", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "f3fbbab9d5b9b70384465299b21e38d4bbb9fbe7dfcbbdd15feb7fe3953a71bc", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "dc7779e091ff477a30901677b19e62f217e89f36058544025537ed15cf4643a1", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c66d369d2115d53b85f1cfe23049a9f1c7bbb689467885c6f8c91e81a6c9251e", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "8ee6b691b0eacefb955c04b0fd5020206158637ffa7d8741b124d9df4c03fe69", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "17a4ad6ea396918b5fe9b1bc81b529d9728e7c7237cd0c731c97e883ac105b4b", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "d8fbdc4ee282ab4336d6ae8a6d4c69ff335736777bcfc2c29aad2956aa97cd2a", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "edf1971e3bce1c1b7ba3c5ea7e2557ad71b5c487c33997a22ca771d1921da2ee", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "40341dad2aa1038ee05ab56852f67fc2d2d350a0c141fdb36fb4a74af479788b", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "231f791bd6106862d67676dcc4cbf6eeccc38177ad8ab144f3b6eb63fa16c3b5", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "16d0f971eaaf7ffdc7c8b03234e4434c7d6be1be879ad2c7d8652fb8b415b077", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "533d44f74dba4799058ffe3d68984f2cd656ad86f6ae9befca5311079019578e", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "2a66985f87c14367a646672407bc12c376aae28f5f21569cbfb283cfa912972d", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "09f1103982a660bb3a42b60cf5b70d797560f8319ca0587079220c60c5acb30f", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "b14f01b8eae17afd7180f336a650041f9c262a5d25d62e4d86a363fda6587adb", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "405ee2903854b28b3bc65f5dcdbcb621c25bf8376f6eb008235cbab1527c1f30", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a2d00bce994aeafddbafcc08ba839a1cc7249bdbbc9719194f7a8ddf69969afd", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "dc34989461411a2be5575454455bd134876ad0273e7a96d5d675f1bb690a648b", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "e53c4d38892f98b1c5a5fafe04f6b45e4249c2fef81d2803e7332d62b16dacc1", +"T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9df9b841bea74dfd936242f7675b6b6cd19b0e0ae6297edbed61273e3b9639e8", +"T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "2c48130e1967fd20a19604b87e5d0c733218dea48d0854ee55537aba278dcaa6", +"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "8c6bcaa8a4686c685229e6d73a4b1de0377ff20243eb296073818b20cda22f8a", +"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "20f09cebad0d3ef8baf1494bdf5d75296646df3100ef616b2533761223f466e6", +"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "8788709e3edae4898ce2885eb48e881e567f824dcb6063e85d8862015b4bce38", +"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c38d34fbed333a74b9656cf95f9830920317b19fdba15be15c3f2c817304d4ca", +"T2B1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5f60f15e2c1aebfbe2153a75e44d7b7997a0e7b6ffb4cb8e0c96381fb56ba3d1", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "cc9701b2fb38c31dc099e2d475de8d8c3017efd63b237c35ccd77710386a9663", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "f667f7baf3b3a090233a3930972d1ffd8714508aa18d0b9a3443b94031ff9fb6", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "bb05a43f4d7924087ec2c821a1a421a35ba68436285a8bd3641d48c56ff375f3", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "6ae139f16ad3ba23310688e31768cd5b81b11f2b8c0c5e7c74ca4da300299617", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "de388efed2b3ec9d446916fc864011c3435581556013c7ad65d565b93d3ee5cd", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f372af7c77b1f33b0bd34b98e381ec11c15ad97a50f5989c67898b7e0aa70ed9", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "43804572e0cf67df501ec31757bd7eb54f0ffd214936fb19bed8dcd6a7a5a0c3", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2e8194848ea604e0aab37c42c3c9d7e677319305b55062cc43fe1ce0744714a4", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "44d98cad0a0b96df5285bdb6eaf0eb99743214d49a56680b7a4171423eae1a75", +"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "e19566c81a3804f312729b6f104987ecc082ac51f6fbdee620cdb8668755c1b0", +"T2B1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "dc278d7676e911fab37b6323214e040de6fb269c9e3069b2bddff1f6bac59147", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "074e03ce72cfc5ecf0693981d6b480aae692e737cabd1f51d746e053b310c040", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "46a661e5e162a950c65c13b162b3531c3e9e633cbe0cdcd43dc4ce307be82ca0", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "cc2e06a4704de4039b447f84dd5491f2b60d65951d07bcce859cdcae012a529b", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2481875d175534d56163cd698bdb0f506eb4518f0c56ae4a24d2768435d274ee", +"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "200e785d7ac587d80c62b2a64c0ee28f043358e0ef5126e8b49dc1651a8385ad", +"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a0dc5b8aa213f6da2f5a3ba9cea3a6cab68a241971123e8683e1e881609eda3b", +"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "f54672507b5cdeda78dd95eade8755d39da3b3be2de4828479aeb433582dcd10", +"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "38f06807680af3b37ec07a107b0a8bccec97cdc7319c54acb57c4cf6d5a3466f", "T2B1_es_bitcoin-test_verifymessage.py::test_message_grs": "55b478f3d03bd535263fa8417f288747f3a6424c640ae0254c89ffba97580445", "T2B1_es_bitcoin-test_verifymessage.py::test_message_long": "c58eddce3049d31a002c4ec05e51dcb346301ceebcacb47c26fd09fac494f76f", "T2B1_es_bitcoin-test_verifymessage.py::test_message_testnet": "42f5ce98047e30224101d564c1c3a91c26576732241853b8ab887d3eca1a5f64", @@ -5560,8 +5592,8 @@ "T2B1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "b110749cc1619819925d2c6405c2ea53a09d376531c3223adbaccb924f698335", "T2B1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "2e4c1e46676493cd6dbd364547270f459f826bff783d58b833ef85a94f069a26", "T2B1_es_bitcoin-test_zcash.py::test_external_presigned": "4fe18488dbdaca245cfe30868f7c163595fbeb2321268fd404afc42fb3a819bd", -"T2B1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "813eb9c6e74bfa9e4ec758124a25c5a6209e5af8d3a7ad49c8cab67e7ed4c1b8", -"T2B1_es_bitcoin-test_zcash.py::test_spend_old_versions": "b8fac2d077606069267283804c8b077bcc02000ec641c66c4706d55cde33d2fd", +"T2B1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "018739d0a19e0546047842f3edf25535cd344310115e4206bc7611da63c57045", +"T2B1_es_bitcoin-test_zcash.py::test_spend_old_versions": "e00969d2cb1ea6a3ab6b52f81a91d1ae15fe36b817fa1409d39262e4f3c48bf0", "T2B1_es_bitcoin-test_zcash.py::test_v3_not_supported": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "2f84886a57abc74f2547c192fce1a26df8ce04e39cca79e285cc9567204afcff", @@ -5569,8 +5601,8 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "aaa7d1a31458fe9d85f8bc049743bc922027a4680436c3a38ea7881dc9f34b41", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5346a1c0d340ed9d7eaabb74416e88ae8af605ed2ab80468781698199636907f", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fd46152a21d698be2f7cac447433c462a6e55b5063a2543c0cacccf5ca4b47ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "de0eb620ee80f6f94d0f033b9ca5192ec001e7f367138c5c9e213dea41c1f3ef", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c6c03097dcbe5f2b7e7ac690296cb3b0b0b7b10a70167f8a889217e3c4a6d77c", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "0962e0e9e8f089cca20c7f01a35466fc6d3d455676092d62b3b1ed7de8daa27d", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "46466af84836bbd78de5eb8c446b6e73b555cd7f53475cbc35d2519dab6ca199", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6c4bd02c5ae7f1901e07206a3d921e03476890e68253748e7a919e882985793", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "38de876a57f3ba9d3e9facab308ff4b28a52f231fcb47bd2f07994bce812d454", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "487bc1c567d4ecc260979e8abe46c22a27588147437901c85e24d98f2c3fbd8b", @@ -5600,17 +5632,17 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "743db1209a8100a03c68b9efaacb104b9b6a1650b4c49cb0c74b00cf6c3a05a8", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "968bb7cbd0d1bf085944b816b79956dcc38a12a5330c543336bafb3574508e90", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b3db521ea0173e39f3b93c8e49ff2223ea5ba3535e927ec7ce8b2999897e67f0", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "06a8bf4390cde635bc8a021c23c7ae92002862977a2da81588bd8e77d9298ada", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "25fd58cf6f3fd3abd840218a7c03c5b5634da810386f8151d3a947602f90e7e1", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "1349087e21a813e33ad2abed0567720b5703c61fc243aeb9c950ec2ca4df7c8c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "aa46d80878c1b247d26f9e70951ba180a7acf3a65c9f08967a2bac578854ecff", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4e4225f8f47b1b1c6e116a1539a6f944e395af0daebdc09e6682663d5f8a14b8", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3c378506e0869ce47a286cd8870b9df9cdc6f64c7b2c2e9f8f1cc8c2737fd9d4", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "fc22d68bfee9749d27b3231c55dd2d98a081aee461cbe519a8fb765f5c239d2e", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "6f5050363137038fe4e40ec62dd1eeb282c621aed9ef16c5249a47ff393f5a43", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "cf959b359e3d546419e2693cad049fa151a9a007ce181bf18de36d7444f99aba", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "df2767c1c3c054ecee8e4c4efefee8c975bc9a8e2b3104b530d3d5a8b89d3192", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "5823edbe8eebbeefe3a01c108aa54c634422f8d9338bf0a6f8fa295d3aa3cea7", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "a2171feee8e00f1fa781561c32eb6c560fca457fb49571f67ed3adb38b90997b", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "49eac4f1e01f8c4d3ffc70e3929793a9a4bedfddcd1f96c1e5bca2048df3a2ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "150693653c7cae42419cb30d9d14223dee1155b8039631727e61a689c9002cef", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "dce20451897cc1d5a824d3cacf375307752c83d2ca5659cfce305849cfbdb1cf", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "cfa493ee0025faecf03830b8b73b0fedf42985ed1f1c20122445757ee14e96fe", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "2178589dd13b062ee6f414634950cbc2a4174f1f33ba9a041231e91f0a1dd514", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "63228f42518d18790cf9976f712ce3c22b50d86d9b7539132b6d5ce8e2ec949c", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ad01d89ceaf01a75f93b206ff0ff30671c032c3fc1310ee84c56d9d4d0e79571", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bc6db05b88c37cc1e86447f181fc0503dcf782bfe52d258a039716c35cd6d7d8", @@ -5640,10 +5672,10 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ef715afac35227b1d860be377efad158ce68ec175ac3873ec5573c82a01d2a65", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "6364dcb96857bb8ca4da148aa19b7a41848e3927769b14ed44cfa1eb3aeb26ed", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "6d3e3a1e4cada403f3f40e00f0b922002a47552dc9340d4731429e336594d734", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c11edbed71840642257e4e6ca99b6aa0577b4c1112cf87d703a308ad02c1723a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "c6d9c2abb28d84c705a18c6283afbf4a702e0d7647e50344905f0016cc878830", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "cda92d7cc560cd3da9c5130525fd98c61ea7779962297961f5fce8a4c4932eaf", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "641e33b14f0e1145250d5f06a9777353e04fb76b02b2d59ec5f017ff3695f32b", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4281e4f22a31a39808a8a369050a028ca62aac789b09fc5f1488d11700f43d13", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6a5e8f8d13734f3757cc0deff9fe3b7ce0f448081ba9b325fbeb6f985823cba4", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "7562ce8a10b78978b850cbd59f175e274974d3a8f6123092b419b2e85f0bdc77", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7b5733515968c2fc7ccde3e55fb4a9cac574e71eecad3ffe44fcfb659b5223eb", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f913b9d236337ec8f17dbc4f0f2bd07a3c8158d08048d70a55f0cc120524970c", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2e40f2a04609287c8683867df59dff285e24f0c126c970d46929e238a72a66ea", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "53bccf1655146bacfb6ac2032c9ee763b0ec04ba5ac8997e3b1ecaa0bbf8851e", @@ -5653,9 +5685,9 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1d2847c685a686c010e046dc7ae2fff108260deb9ee7443d139a79a372ce98d7", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "3df98e23ce08153962829a451a64b16e546c1426d046e6da7137caeecb78cacb", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "569dd0b842a403b3f19305b5ea89ef246905981ea1894a4a5b6bcc1196c9b5f2", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "71409eddbd0f073842e7761bd6dd2f3bf6d6752333b410c09b249c5be9442f1c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "875c386cee06e38f5a53f559272036e17bd4b46140bce935dfefeb9c95608874", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "b4949e40e2780acd654432c08a357dd20440f77a0a0e9f9e837fb91289c3a5ab", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c390e2200c65fe7623774fb93a5d34aa290ab963057491e7c210775abaf0293d", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "63d58a9593d6daa026b10213b399e72084f14f0bc60ca535824aeb6e2f3afe48", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "a9ace2a6aaf56c428253c0c67d52b9bd9ed4806aba0c94ba7e88646c69e8f8ea", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "fedacaeb8cbcd847208bbccd159f90fb1c298bd57f931ab2e4c9ebc3c6dc6eee", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5b5f2181c8cd524dbeb2856f0f1f2db023dea92899529e21baecbd2978521018", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "10ec8bce4299e22215e651b2f14a07a204142f54552bfc9af9b620b4c4337e1c", @@ -5684,10 +5716,10 @@ "T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "b3920827bef507ac8ad13b4ec58e4e8e927791e222c4f42579602798e0d09644", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b5902937268fc3aa0b0244ecdb97b125cd2d3e59bba955ff0c5a7f016e76f8", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6f3b6169e3fc48f40b46bf83cf21287b5f839e21fb9e874c4ab32c9c84aa723d", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4bb7eac4ef35538214276b6728efe553e547556a736f015b867757957751646c", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "56a13056b8f44ce37968f92b19f05c11b59945ad728f0f7aaff2ddaebe3af202", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "54d450fe76de04eb8ced8a22a11dcd8148e5c03211e9590233209703d6acf18c", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "6a4b7074262aa40a1d9d8b1e17c3c56282a795360c9a3a3d7ad0f3020ab57165", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9fc31eefe29fa7f64e846119691ae0db8c2894e1e14c551ed7098dfb6c9499e2", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "22c34c1e55257a07214d8877992945d142a696f8d712c090e0bf6751cf9a78ab", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "49fd2aaef8dbe41d3bf1ceb351b8e0984fbfa0d5a710f0ba0ab49a66fa9deefd", @@ -5723,6 +5755,7 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6600a1fda4e5dd224ab7bb7eaa6cd977c7ef2a9042aa45d2abc6c8c56a1274b1", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e880a5884a20a4d38b057f211fdcef9345dafe5c67cf972046f5bd1b3579ddc6", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "8f0ca78de95cd1e2901102450ef6ff0bd9b2b832591a84a6e925d1b9c9ea6ddd", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e4a19e68970bbc97f18604f2334aedfbd61bc844da3f43f5a0d234e7fca6b129", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5cdf0d039cdece483d13618e075580b5016e712bbfdc6a834aef67cdb550d21f", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "46624c0f71176cbd346ddae51d1b747d44e25bf753f04ace9139660bfa0c9024", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dbe4341aa6aa90ed924405436438860815c25d9f99c7404e375db595164b6932", @@ -5751,7 +5784,11 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "85d4fd114e7ec656d60bfadd75a244acbca0386a3d49587b2ce85b98b5130e54", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "c71ca04cf884c0958b5b26659df368298befafee5faa92754b66d878a53a97d5", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "af03f4e6ba4a68e994fec97691ea567958e61d501726147dfb9804a0e1b5de22", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "1aaedb6e35c38e69494869ec0a183f3b5f3084d5f41737435825ad0c6f89504b", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4e4d37cd12863bd851aaf6e00acc92db393e73a48602b71ae03fd2d3b1b23775", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "793b8cb7572dd886e79bb0036328f37ef3bb482d5c31c51240ff2691dac2e023", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c79ff7ebae6c5ea1265435e93c2f1e65c21f338360c5fd526af55d91694c0349", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "231e661ac81dd888c4ed4f277a0415d30cf1975926b0b2f6c48dff457126ce90", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "6915c07cd12ffe13624032c2ed05659bdda7070d0b817fc6e0f683f1cd31ecc6", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a41ac286ffef907e5fc2f444fd4a9d032674f8c462d2c863d710e8e932946963", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "a4b06ea9fce28a99c2a231ed5c43f902a07094098a6f625fa79cd11b772dc366", @@ -5761,6 +5798,9 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e4adf36468a3279c471737311baaf5e415aa6584784140a2ee05d261e4fd68a", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "5b58023ca8c689fa8291dccebb52a93b8bf255e2215ac0f1ac1505f3dc3827f5", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "5f5d461d57ecf98710a8da853c4cbff081c0b29c170f04d654e1c2fb8ff31a47", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8e98733ea7c7f524540ebd96ed170f114bf23d7f91b919be1024c8b17fcad144", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "c74c44cbf21c6375a86bb7e6006a77f1e5b3e0c6b3f9600a925326db305cd650", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "c74c44cbf21c6375a86bb7e6006a77f1e5b3e0c6b3f9600a925326db305cd650", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c11dd00da5f0cf32e89b24721e750a9be89476bca3f792eb695e31fa51a6e4c6", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", @@ -5898,15 +5938,15 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "031116b0fe8d45eec69c00a50a87b8e9e3ec09d3f0585c15bba0c9b78f13903c", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "8703a3c6ce02fb8d95108cadb68da422a4a52591ad31d287056c7d50ca9854f7", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "ff3b9de391ae6630efbe7ac55ba0883c18b5612cd30787dab80a3de74fd41064", -"T2B1_es_ethereum-test_definitions.py::test_builtin": "7e3a811f7586d78d1a78b8a38cadf9f49d76ed28b5d9006a8c9bd2298aae81ea", -"T2B1_es_ethereum-test_definitions.py::test_builtin_token": "4498c1b73ab9f249122cbd8944df6b6201a77a25571f2bda057be490daef8dde", -"T2B1_es_ethereum-test_definitions.py::test_chain_id_allowed": "3961c91f93fd623197254a46fc67f77041d3ee9443b6e74775a2b5038c08df3d", +"T2B1_es_ethereum-test_definitions.py::test_builtin": "4153da8853ef861b4fc5c15df23e59832f00705a39cb7007e2b398d80914fb74", +"T2B1_es_ethereum-test_definitions.py::test_builtin_token": "f71fc5655fbac48182aa90f4c0deffd60354b565982fb6308b0f9d0519937865", +"T2B1_es_ethereum-test_definitions.py::test_chain_id_allowed": "4ff1e6dab8242ba1af8492eff308d734969cdc009d56b5a2b2938a3b7ecba4bb", "T2B1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "f0d48c7ced94ab81061781da6258dee1983dd6864d719e8b9138157086f14149", -"T2B1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "679bb9c76fda7a77d9906685efc55d773b30394a60838965a914256d4f91fcc0", -"T2B1_es_ethereum-test_definitions.py::test_external_chain_without_token": "52aa919a579716025f107bc433a64eb8db68534093b05797e2f601fe5a823129", -"T2B1_es_ethereum-test_definitions.py::test_external_token": "fe01b38d980b8cdb14210697cdab0ccc9cd0817ae7c143f304579be74f559ccb", +"T2B1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "a9c87453ada9ccec585ac37508304be5b53d7b14bf8c7055f32080623d6a1d97", +"T2B1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "2b4b19d6d391afd06c7917966fa383a22d8e2b49d0791fb5d842047a8b92c0aa", +"T2B1_es_ethereum-test_definitions.py::test_external_chain_without_token": "38425cff464db8c5c6d464b404b39b6e93720922e5aeca36a004bb026914ee05", +"T2B1_es_ethereum-test_definitions.py::test_external_token": "fc04857cc345dfe74d8c19707d230e9a9a68cf4ed3eee9ad0a76d00b498ea8b9", "T2B1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "1042286073953cdd1dd2e4dab190192242ad2d27bfd5df98cf5b3dd159e77e72", "T2B1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "ffd335a925ce8e31a43fdcaf8c9e34c493cbc8bfc7b4d25a6067a62054e5fd28", @@ -5920,7 +5960,7 @@ "T2B1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_ethereum-test_definitions.py::test_slip44_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_slip44_external": "039517713df84382b56f5793db24627d805aa87152b661b0d0845dc1bc2f6523", +"T2B1_es_ethereum-test_definitions.py::test_slip44_external": "4138d34d94db5263a79d34522bafdbe38b8270e987b077b90f218c38db85b0ad", "T2B1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_ethereum-test_definitions_bad.py::test_bad_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -5982,95 +6022,95 @@ "T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "28c1a0c3351a003c370fa284b26df457d7c971b0bc66c7c15f169b34e86e6fdf", "T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "d2b3d8dc8887f746023726eaa913f106caa769be57975588209725f85b256d79", "T2B1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "ad7b8354a0345669f28bc14fd0e1801002a6d13076a815b7a7c835766e071f93", -"T2B1_es_ethereum-test_signtx.py::test_data_streaming": "93133da9a3771636d11ca2ca0150b47c42568f24cc95308426a23a236a0253b7", +"T2B1_es_ethereum-test_signtx.py::test_data_streaming": "7235b778cf1080fe29c155b6e467093ab483dbd02842a6472bb323bf27aa997a", "T2B1_es_ethereum-test_signtx.py::test_sanity_checks": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "12eb7c685cfba1f34de19a6b5ef6b293682d5c58bfbed392533d055c35c97047", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "ec84cd6a4927c6b51f972121ed01e39bff5247cfd0721b1e08c72b193d1c1b1a", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "6db7fa3f840a7d8eee0fcd8bdd892c6e87637207a4026e8f90a509c6bb243215", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "ec84cd6a4927c6b51f972121ed01e39bff5247cfd0721b1e08c72b193d1c1b1a", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "52b956dc612811b1e5a7f59d95cf355ecc72f28447448a1bcce8761ebc388b2f", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "52b956dc612811b1e5a7f59d95cf355ecc72f28447448a1bcce8761ebc388b2f", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "ae9afc5caddd3224d744eb2b844b2b2bce5d17ad639a5b687fddd226b926b257", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "a91ba37c4a1624f69eb8a9525160865decb33f778055309a75e17808cd116cc3", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4b3f2d07d209d87828499390d74ad72a45ef860faddc382c0cafa9b75b3915a8", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "c301318f467e034e55fbe8556ede9ccde49afe9c1c16d9036443787c7fe05173", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "e501c291cc2232dd72ad725be08dc098981f931bbd2f5689753b3dfe0e101737", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "39c40457ebe677fa8aa4971da8f059573c418e0784bf4649f6bc3da4674d0b2a", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "6244305f07a2ec6b69055ba72406a69d0de2b6db373ebe13ab0917aca21c7f70", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b51db1ca0257d0aea498b3081b9ef6fa0e4d56a5865884ad0407bc0631509806", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "63c334f588c219f9805912fc90907a1f9387d8e745afef48e3fd92adb980531f", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "b3a5bc0ace9a6b1d3099183b1cdd141776d5fee6c56fd3550316b9705fc7129f", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "dbcb8c0e0d3aa354e97eab209e63ddeb621dcffaa0015cff6ec4efee41c324e9", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "b3a5bc0ace9a6b1d3099183b1cdd141776d5fee6c56fd3550316b9705fc7129f", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "bcfe58d57d127faad27d9138a9654bb1b1b6967b8b8c9973a1f72be8c616d0c3", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "bcfe58d57d127faad27d9138a9654bb1b1b6967b8b8c9973a1f72be8c616d0c3", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "80b18c138c70c0d8cea3c53c4b1bb36b96785f6e47d7768da8267819a24c55a5", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "72f1c3c5e30cf802a8c2ebee3ae5f8cba4b8e846a657c5b960328f833cfb6fe6", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "d45deaef23040b05f5f2c39acb1c040f01b1b76994f56b96e119bd86d9cda842", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8a53e415626c0f782acff0594968df4dcaeefa2fb3183a655483699ceae9cf91", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "e501c291cc2232dd72ad725be08dc098981f931bbd2f5689753b3dfe0e101737", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "88115701c78f45d7665406e8d63d52a496bf9d859ba0cdfa6c717bacb0796d75", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "42974196e97b0c4e3b63a9cca193396664abe1c9d39fe61b46259fecf39151d0", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "110232270b56ed4fc7f31a2c3d91c6f93a0805e00e8199037850d206d192903b", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "b6d06f12d037f6f2535234c26b51ca34498f708662ea3cb80a12ea489eb8a680", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "90d125097b25f6c485f610a71575d17f93de39480360b0b0cb3b0b2cf3f868c5", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f7c76f0b48465f02518bc9b303857494b3a6a11393fb8d50d6d2857be73ac935", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "90d125097b25f6c485f610a71575d17f93de39480360b0b0cb3b0b2cf3f868c5", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "d1ed083a179e295aae354595cd0cd5bde7d00187ecf313d35bdee920a197f15b", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "d1ed083a179e295aae354595cd0cd5bde7d00187ecf313d35bdee920a197f15b", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "5bf76005b87bc0f508fe21453d1c05f4176bb1a0bbdbd1dfe84189c897c58ded", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "44e0850776e3fb812ee7b5a803ce47919dd5dd5047a1d35444ed03c3e0aa2bf4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "dcaf4bf83094d704c40530062bef5b3dbfb6bbe6e6f6e4c84e86875484be4457", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "e2deabbe2bddda3dd8eef13b87e1856f5ea42abb92690d19812efc52cb4b47af", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "cdc481e14cac678e2fc022e36a2c08e1c76343eefd882fe002126ddc9470edeb", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "96fafed28e93e54b0c63e25e257753aa638c94e468479a20638dee9e91bc9eb2", +"T2B1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3a19ae20f06543378aee8422579ea23e3a5c095b898ea43fd4d5971c77af7bea", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "766faf3dcedabc56a3efe3f6c069f3541b610a5b41a5bcccebefe632d464a829", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "35f2cc536ee7b000ce3d7ca074185dfada3fd47d44d7d5e22fa48156fb67913f", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "571a8558d7913022f32de79dd1e210a1475f8071c16f7903374e7c1b983b169f", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "35f2cc536ee7b000ce3d7ca074185dfada3fd47d44d7d5e22fa48156fb67913f", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "352f12af7c1d22782e3a20dc252dc64d5cf6e004ef3e204800a5923da3da3148", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "352f12af7c1d22782e3a20dc252dc64d5cf6e004ef3e204800a5923da3da3148", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "404935ea33061384c838ce800777e1b8d7043577098fe9e8e620858ba9f5f16d", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "613d509c1c022bed422bf3b098c4bcfbcea22121eb5e5f189a598af15c4300a0", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "275cf3bb5a3fee99238dd9cada576a2c58c0eed183e378312158b6aaf7ffe050", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "e2deabbe2bddda3dd8eef13b87e1856f5ea42abb92690d19812efc52cb4b47af", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "0af85f5066b7787ba7ca0dda59eea89db8498e6881751082a45090239e5d11f7", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4017bff7433b4a754937a72ad1e6da5377646488fb0856102958c8cead4c5cc5", +"T2B1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "91bdcf37c543c5b28d39bd7e738753d95a009d10e4c139edffd4a0754fa8910c", "T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c28e5d8a8e09fc03df8b18b69f2bf14d18a6c149d7623152ee9f42f4b13930f9", "T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "b7b8f41a1ab0f510d831e915d65baa335e79283dc6e6b5b20bda2bcc10a20a77", "T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "105b8517372cc279c279f895aededb6ea8819db59c65b1539c657821df5dd162", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "070b3467c557501f6bbdb5a36dbe1e04d8786ff37534274e168611ef5a3bc7c3", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7475f33b487d813b7be599af85a410b9c089d9603e9bbedd5ba70077b48c6a6d", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "a71567f148a2c63b014a662e73230b678f36c71714277c3099fba874cc0a7836", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "b8dd42d000594292fa1f1ce2d7ab7c09e1bc15fe820115163cbfc39b21b5dab4", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "130bed9eeea5dc58945ffe23a2ea029c3313e9fa693d568369e178ab7f901737", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "c30dae1108c1cfee1a7aa287f72f67f5a52131cd3d971bb86399f21740f9f408", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "070b3467c557501f6bbdb5a36dbe1e04d8786ff37534274e168611ef5a3bc7c3", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9873fb620d0271479647f0130d786a7eea86e98c41ac3fbf3c320363efc4b0cc", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "dcbbd8bfc19b20a9b25b9ffcd57b09cd83052665e498a08400d11b83677539fb", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "f26895ebb3f758f65773e2bc278a0476ec55a6e3dd0dbdaf1fa556a70e74c2c4", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e2469346789c02f4a52874579033f9e94e62e50fd34e7f618d8d3645897820cb", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "6fb8fab45863e5bb6fc8994123c49db4588bf0ae069fd3bb446a3542ad3f6948", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "61bf1f11d14be07fcc7a1d70a70d69148bdb588ba21e9065fb7f7760b9e38e13", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9873fb620d0271479647f0130d786a7eea86e98c41ac3fbf3c320363efc4b0cc", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "8485f52d599ccdec1b67382e3943b25148b1acd068d0624b9284379e347064ba", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "8485f52d599ccdec1b67382e3943b25148b1acd068d0624b9284379e347064ba", -"T2B1_es_ethereum-test_signtx.py::test_signtx_fee_info": "d3e2304bfbcab5b87e578a21781f5bce5c872dacaa8d46f9a5108809b5f88f08", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f6c963383e8c672f07dd2002a109fca95b7530d17fff6ff83aa6476b7bb9940a", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7e93a620dc6f06ccfdbdf219822a2680621490b332f1e2ee2d6736f4b87fe4ac", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d43544b7ce0bd6869c83eefc7f6c42f987744f6777f5e87d44fbc0af801fc992", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "004138d422e6ab32338bf5c2449c3c45ebc42d3156efd79250191b6b65bacc48", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "ab587791ba4439e72b4f2dd2a07f9063d86d66e9826711f586569c5ff0d29ad8", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "75275f75d74a1ce3ec34136afb008b87c5f323659677380167fa154816617a78", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f6c963383e8c672f07dd2002a109fca95b7530d17fff6ff83aa6476b7bb9940a", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b6e8bc56ce4932e5e9aba7cf3a037ad0ef91cd376b1de5f021c01b4488db88fc", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "80a4a21b8d570ebb56b85c219e480f62b4631cc020e2809c4c3ebe3d44502725", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "6a63ece1a6db406ccb65f7a682a816e947603165f3e239711bc05eeed61e392f", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "1c64dca032fd0c9b4cd0866dac4a030af2aff3df48e29328ffa43c222f49b358", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a68185f99d9673cf11c531a6befa370e59bab84422398cbd135fd00218e976dd", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "7d23f33fc8520a4a0badfa00e8d71c0544d57269e03901de96aefe9635d46593", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b6e8bc56ce4932e5e9aba7cf3a037ad0ef91cd376b1de5f021c01b4488db88fc", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "13a62087b6e56fe52200f43d01141063140643672ec98bd6c6a004b66a6d2f4c", +"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "13a62087b6e56fe52200f43d01141063140643672ec98bd6c6a004b66a6d2f4c", +"T2B1_es_ethereum-test_signtx.py::test_signtx_fee_info": "a6df3fc5c5fecf9e52c8686fb09d4971eb98938bebe090af18a0697d532a22f6", "T2B1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "0f01cf0a6dae94d6a11639b1017f1f473efb79cf520eb52c987e40ba096eb787", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "da08b089d9acf943567638d0806c9d356fa4f0c6b84caa07636b5a698bace7b8", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "590d68000f8b81c14fab20b34075bb35b97d9e1482612255c7c09b516ca292b4", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "1d10285d0891e2f3a3169f286ac2cbcf20bd90e428dad85a5b49a1424f6de4a1", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "329da3e72ebfac8e3c2fc8b2d16615e1a0ccfdda2a0c7d04bef4245eb8efad3a", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "5cd8dd0803827f475460eeea0409845c1d531b1cdb9d8ef35d6ced8c1cd73166", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "7edac4ef006ab868af1b4cb7ed7656c5ba65a3722eef1d543f81271097da44ff", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "da874a244ff5cff9f53368a008a8433fdc7fe6163b98c9c9eca93868df68ad9c", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "9c12d4de34a9cd08e1985f0511e51bdc1efb66f1a6bfe61d18b4db5940c784b7", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "65fe199fe52e8ffbbec5bc3a919b1bc5d97355ccdd9415a22c48d860bf8e8540", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fe7734d72fc96e7dda1ac2f75c8e001a1e3d2d48d513eb825e5255e311572917", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "9520a6f1fa5cb69220b8fc67ecf17fc859b0e52b2355e4900cafc9e965fff809", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "22a32313129c9df56db87958fecdca880f3dc453346ca6b5d569701f9190a520", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "22651039a4b38ae9b724e4d54c51971a8241dc276c1bb1ad24b8118775db94bc", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "6395e9531a9e727729bbb88f099d87da15f1968bb87499de9ba48f2bc9dcc7dc", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "23293d8079350673838d2fab22e49128c8f8b6a22271b6ae9baf039a321e6650", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "274c0ad39b4a6bc7f7f3fabfe20902f768dc55e4e61985d4865cd61a3688f14a", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "04fcb249c1d130d45a4d0d577ed18cedf89da6a647b56464603125e9b430c533", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "6d3f701eec75e32624118ce302cd42baab6db63cadd185a4155b3951823065ab", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "89a1db77f9df8cb9f89d015a045f0f3737b56a0895e200d886d60f46d426097a", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e1c090d419927869082fd328e9ecc7c0c26292c2fbbfa446a6a5c1a45a142dab", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c46c3f64c12af3ba6005530e8a32f5a476d70101b54990d34364ae47cf22cb94", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "051123d519c1c3d7c40263970b7a78fc7c2d26d0d0644062945ebdad856805f1", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "099eeabc81337f36e1959dd1d1f6f3a8905dd154fb4d20373f2645aabb9bbe9f", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "0c9ce57fb6c80289ed439f205554eb21cfc21ba9b16e353254125137ca4727f3", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "6056dabfdd928cc39add5df54d1e71ff37063efe77e6d9fa9202e9720737c0d8", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "6056dabfdd928cc39add5df54d1e71ff37063efe77e6d9fa9202e9720737c0d8", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "fa25cdefabb33dde3be7082a768e7bc5931ff2d6a3665b576cb703c2b4eb78f1", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "fa25cdefabb33dde3be7082a768e7bc5931ff2d6a3665b576cb703c2b4eb78f1", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "227040fddc63eb0a769691acf5e0df4199b86c9efda697164d51055a80b3b78a", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "227040fddc63eb0a769691acf5e0df4199b86c9efda697164d51055a80b3b78a", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "857c6fd3fb40814f936d4cb0afba9dee3700dc059186e92e1d6c26effbc3becd", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "857c6fd3fb40814f936d4cb0afba9dee3700dc059186e92e1d6c26effbc3becd", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "d0b024c3cbda0c8ee003278de069360b1cfc3da3b2f572c30d68ce162fdfee6f", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "d0b024c3cbda0c8ee003278de069360b1cfc3da3b2f572c30d68ce162fdfee6f", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", +"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", "T2B1_es_misc-test_cosi.py::test_cosi_different_key": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_misc-test_cosi.py::test_cosi_nonce": "2d6a3fefcf8178dbfc876a61b980bd9b9d84a207553c806bd0f79dfcdbca6bb7", "T2B1_es_misc-test_cosi.py::test_cosi_pubkey": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -6132,56 +6172,57 @@ "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "383f9fc5ba53c12231c897dbdb8a0c33886f73a1de9abfbfb7aadc24fa56043d", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "939364b40efd5e1f5ed953da9669c96532803f9e850e89869ab44598521b9527", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "77000f51357d47a737aff427cf05512d08efb8a309e1b37ce6106f89b410ea96", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f31fc6ed7713f35b56504aadf7b44131494f7572e2bc6d3a78e85819de63eaeb", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d28d729876736906b8bc4424585860802acb641e3e41fe6d7e8bb6eb6254ae35", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1890c911ff6d8d190e64ffb11fdff88908ca98877708dbab6ace7ac4cadb35a1", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "917caceeceaa33be2153199cc631d8428072ca27eeec8f5eabca53f5ef8e233c", +"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1a1fb4708a061c1c4f2006074bfa606ca39287027658592cfc1afc1e9b4083a3", +"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0fc41c5a4fd4ad91da1a783acb800d25b06a77462bcb5e4831290ac68acea92c", "T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e558fd4383c18f5860285557e9d07251c6aea8b87bb6ac30988822a0642163ae", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "da295db3022a5185da7c7a23c8d0f7a5d42c1774cb042c75296be2b8ffc84280", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9ab77b0c356f004cf3db762279f7be75205b23d229ae7da0e4987e4af8923fbb", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "6125f922cefdab48b7055c4f95e182e387e60d1d871e8a39d4c4482c8e933e00", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "11359474e0ea836aa2848523b6725b0d7ae9c7647b7a718e6934efacef057853", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "080e7dff03b0ff8717d6cc1f7f62b5c0931ec1ffed0f0e72ca84abb98efdf4ef", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1f78f13594c7ce8f5b7b558f7853e3eeef56761a4a24b89ec914ddb8756a492c", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "080e7dff03b0ff8717d6cc1f7f62b5c0931ec1ffed0f0e72ca84abb98efdf4ef", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1f78f13594c7ce8f5b7b558f7853e3eeef56761a4a24b89ec914ddb8756a492c", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a1cf82a8c6063c2f33ec994c8e48e07c0b68adda471ebe8f8982f3550a8951cf", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d62dd4e73d1d1bf68be4585854e4e5b502289cf7e34e49550c9e85832a593941", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c616eb9f5a7db8420a0e63e0e706f0924b22b749f70c901941541391d58456c2", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "91ef25866521082fb2e7eb845a6ebf60f6744ccfe65cbdcbe285120140363968", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "09c99af8f9d6c9d4d99aecfb52ed4fb3db148e5e0002ce5cbf38d8f54921b2ed", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6398341fa7a63e884cf3cb7494a40457b7a3a52ea5cd8cc92cc88057ed13dd81", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "09c99af8f9d6c9d4d99aecfb52ed4fb3db148e5e0002ce5cbf38d8f54921b2ed", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6398341fa7a63e884cf3cb7494a40457b7a3a52ea5cd8cc92cc88057ed13dd81", "T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "efe313d602a82e7e975f9f3b2bbe937ef641f775943655bd45d1e72f40e72120", "T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "269d5d0f0b09b61f532f050a4b59f474449116b526565e95c1702c61bbc91f4a", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "15eb6b3a1e84fe8d302186e187d81f1cef90086c0df3397b9b21843306aa5804", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "fd4205ecd4d0b8ab036eb4a5f0d1282dc55c0999f8e1d01387cd6280eb3510a8", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e558fd4383c18f5860285557e9d07251c6aea8b87bb6ac30988822a0642163ae", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f0671f8632c609761deef5fb882e8bf4017cf6e5b44921c00bcf5639343cda41", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "594751b7e5814590ebbdb946467c914d8d4d6a5a21b9c1920c8f0282a1796e7a", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3f3d85234d9b9c55237d9dd450f0a63b0c908f1af2a515ac382e7b0d07c7f4af", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2c29e63e0fb6d5015987ce3608c3862ecca723571c8fb64418aca1eab9270fb6", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5d1d67cc619831a6f8699e595e72310865b64ec08855f48e754f213518207d9a", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "04b8ec9efef5fcf094eaed0c10fb9ac03fff9449ee44755176d06c8c1596d5cd", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "d0ece4825fc36c249a79fd1f9e5f24cd2e20d0af34ecec740a71302738e75ac6", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "9b427305ad6aecf86f6dd1379a0809e54a77ad91996fe39d001cf6fc7f8b0e71", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5a8861473daeef4f53fab1e20b2c2feefb72dafa204eaef147fb0a22c90590be", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d41591aee123f241193c0bbf4e1404bea6ea9bf80b725879e28dc45d5239f07d", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e6b54280c068caefcf17a1f28174b3f5a9f49c597f6d0f4f84553f5da7048df1", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "da2aa458a81d36d6ef00585ebbea3ffa4f011631d67d73bde0356da99c58425e", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7673dd1da89ff6519ec7daa8a6af3b2919dcaa06dd132284654fba0ac1b656a5", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "286bacf6924cc1cd71b599840a1cd7c77ac71e75e9798631c7b83d911cd39931", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "f1791cfb0091f111ca3a0c1c2a4d30ae797654f65acbee98c3d8b44ddc85efe7", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7f349fd79c14b8ac84c619473648bbca04f4959c9774f9cb664ff9442c19eded", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5f34730bdd362ac1637e5824f18e7fca1194a5d2fc7c1202cb2b43b82a8d21fa", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "6b001d3e176f7aa6c67d5ed874ad41a07c43b5116195a3cd552a0be4ed348a9b", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3809beae56c42b01914fb536cc72a8365169c655c5c239dbc99f41e4c9563651", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "8869c235d6f5f632d33c13ce596df1cba2209a1c203a47296c6fa7574720880a", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "dd5ba7f7bfbefbdeb90f8b3f18dc76691288fca760b4f472601cc4cb8f38af1e", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f5960a0b979cd0e6000a08b19bd8caf3cdf91811129cf9c3e7a69f73e347350f", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "65b46b65f2edb07dab629a900a43bc092f8cadb24ed51d7a2d69fdb19401cbf6", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "30d54b6b12b4c33e4d65b519b5ebb6b476182dde8755b982a5ddc48e65eeaac4", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "d5c00d2c4339f35deaeae30b76a20b7df7690f49e4b7a0ee79325647690094b4", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "73c97b67eb73167842f3cef61b219ef20666f87802032c182053649b013825d9", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "771afab90a7deea98e792b6a9adcfcd7411b7bc536afb5481d1f3eb9fce855e6", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "243f181a37d5719aa230a5dcbd7203c9f1ea17d9b47e8db3a16a22ae797a2842", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f5044f113732d51fa5685ef82604647fe3d78e2555ec41c15d0cbac6ebe27831", +"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e91ccc00d7fb05f3cc20e23b783765769069ae0e11c116df0b4cb3249b8da3e2", +"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "04e085305c7feaf58f99366569874d60aea334e9eafb9629d609c52d53c89e5d", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f08999315d6bb09ab74c1da0847a53880423a4f6690a5e9959fd83c31ed31306", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7b84e58cc85e079fc25d426edf6f98f7be9bde6339dd77eb88f0d418dcb1591d", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "b0cac186d6d1eab4e506bfb713c746f509c44541dd99cf3ba766134585ae8bd6", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7ae82e6dccfbe279f1f0d90ac711ba19f1eb3e01699d6f41f2937614cc0309cd", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "80fc4bb079d519b434bc19ddfd6c7b860f4f825997dc1200c639a96c5b3a4878", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d395aafbb9ef0a4bd51c8199e8953d04eb773cd9956077303cdb34df887f47a4", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0b3762e61964f9ab527ca5b7193fbbba493f74944391f7f764e83803f7e98e4d", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "174af19811d766d269d10c62bbe0c8e4e6911dfe3516c38a64b68856625a5f64", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "097cdd133776868251b1ebf6bd72708d71e5c1dc0c973425837b391f750c02cf", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a397ef0eb03e1f7ab2a17608e49c41b39994443836fa67c79e09048aae0c3209", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "5af4fb6e24d897029185600479aa2b30109687bbff31eedaed6ff5517d37ce50", -"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e097a09acef439c5d5ac28077733f09ea3cdd28ecca031c0288cde6be92e47c8", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "164a758b8bdf3c5450d2cc2e8baf4a4dd5a6b254b094bb0b01e00976059749fc", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b35f857e67f6ca19f2fd2da64bfb9de927f9e96e8c83970e9e55f62c8a45beff", -"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d7837e15f656f920077b938a17c08dd23f3ced0e5c050aa83c0b1a5e44a06d95", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "28a1acf8c086802ab55c527019e38e59e2e5307fdfca44a2c8c8f945b6cf1b43", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "36f8cae8f2ac39e5da768abda05dcd40d5223b6b48ac3750860912de3c8917ab", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8f0eb74f70cda93331df287f3b830e7f7f641170ef7777a6431b0e4ce8aebb15", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "f9c70abbbba152a0e369849f6ce9e05c0bc831dbaba9548133ff83bcd3291efe", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2f178633743df76f198d162acd22f79e45a4a78d862ebbe5d2c0ac0717e1b057", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "733da3797b2555f9b3f2f34c95c9f83d97ed4057d9172876b51cab2e7fc57ff4", +"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "46ecfcf50ff0c6185662805832f54f78e542fc6d567e074ff899e022185b796e", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "99d6a798753b99fa5ac4012f716173237b8ccab6d35d8b9f62a5ab72487904be", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "30a11e953fe51042926f56d27e4e728d47c0f338be9ea30a1ee8043724b9bd22", +"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ed53bd2c73c0796028fdff99e52e7ad206e3dad1b5a56b78f3ff57fbc603394d", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2919df27fb977be9caeed4eb9904df9a0f76f0ccdfabbb7565018669f38dd291", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ec99eb7903d297f529471b8600f8814b312e5b2c1ffb04b0c5e7d272f88d99db", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "78f919438ef71fa5fc80c7ef7f9d3eda33473aec868c69691995bb7532105360", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6582438e0b80f97108f7f2cd7caf92721afe2fba6bc31513280d840d3c0bb522", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2eb70fa9f5f3acc615ee2594ca083e48e273c0406f18500690982f2b1b5d7dc1", @@ -6190,79 +6231,83 @@ "T2B1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "178e0fd7ffb8905d1c1a5a4e3bf43ebfb24791ecfd3e3e27c8d71b875bf7de8e", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address_other": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "544331ece833efb784aa105976536acecdcb7e339d3f519498c5aed3b7f52d6b", -"T2B1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "8b4030c3314be26d860b559aad85da4ac2d8bf02f88407a0156856675ddaf640", +"T2B1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "fd43d977ce8ef003998a5ac2abe8085702d93f5b0645098b5ba51d71e2ea2af8", +"T2B1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "05e71f0d6a92993bdf28703543a0a9f7bab0cfc06b8078819f219593dc625a99", "T2B1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "858c1e506f686832aeda399d9fc36dc360d838b25cee0dd052d2199ef950ef6a", "T2B1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b7f9d90f85323943b633fe5a0bc6fa4f5647a6732d46210a4b5cc463db7d817d", "T2B1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "41c3221fadf0edc0325eee8437285060408f3ef3e20ac9ef97f11ba01e61b83a", "T2B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "4681930724497efe7061901ded595422f81144c4c5147a76ade8c9a12ccf860d", "T2B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "c3f4a1c3bac678b548fbde5e03ca47bc8d7439602147590133214e3ef2cf30f0", "T2B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b5b85a396735bf8d7075634e7ffe6efa2d8fc33e4bbd496c102f9b54e9b72eab", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "8086a40446961bbad19e96e4cdbda03f54b6417c027100b075bf698897c6e861", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "951a849903eaa75ff7f2e826ce3c786fed04f74fcc049b290470bd2639ccd945", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "3fbf0148e8268235e8132434cc07eb179c9ed8672af3cea22901298700e6144b", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "e09ded89cce15986dc655a52e6a6b9640cd26cb7343598196b443069011f42e8", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "5dfcc3402a66335e05e6fed0fc8c553411a10712b4588c2d65734de6aa7464c8", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "928bc7fa27a766b1414412d47dc7dc2268a2eb25cc04ac2029ae4382da673069", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "866ca7114dd5715d4a0f75c4b86bbccc98e51f1b244482fce92cab4a759ee02c", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "a19bb5999f273ce4afdca6028c9e772600e9d35d041fa03a7e60825680cdb96c", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "be8cd8a897c5a44f5b2580a0391fc4cf601e7842f9a40e14c5a76de7c160146f", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8698946e814fd0a417f3ad716363eeeb9bdab1eb7d1de1b54309f9b518fd3e2e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4e35c14e1fe75ec3f0fdeb0c46abded34a63c01d488a56fbab78ae4568aace0b", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "78147ba943c9e56c47acd13e917b788762a1a37abbbaeeb83446460a464b25ea", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "0f0236ec781956e3eee6aa53844d6aceaadcda61df59572667f4a05af5ac917e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "6fa42eb32e4d9b343a16e1028772f5d3d777c4ba73bc01857ea4f7c2cf89d68a", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "d6d152536b4d5972659d432dc9854202e729c09b2b3d64a6d6a1584fd116b1ce", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b84b403bd3aba965e6b62010e56462ce9a1f952ec1d23f61466944edeef4bb1a", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "c8931f40f8750a04536803c31119cea0519c9a96f532d2da146d12207fbb217b", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "b6a19eaef683f9aef1c8b9adc101a5609d42cea4356354e6aac5f60b966ac237", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "941da66e0679d04b809431052353672b5d3ca22ef2b42db3ce69479ad12a39cd", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "6500d23770ece090e9fa5d87798ee6872975ef465d02b4037813e959d02ae09a", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "060b52e7c5d7a1b9002ddb4daa39d11833ac663f942fa76bd056cb667b92a03d", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "060b52e7c5d7a1b9002ddb4daa39d11833ac663f942fa76bd056cb667b92a03d", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "39eb18b32b8a919f0d4ee2b2c64b08e62807a0ab12fdf5f52ea2e2a5fc1ea4d9", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "7c4ff1066aa491e7b848b6a105a3dd3f6fb39ac9ee99cd234491706025825b93", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "955b342c815a82978dea17ea7e6bc436b34c90756c0c969f29af369c35542325", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "2e847aa89f2c1de6c3dac59bbed9edec6bf560b9adc2a723a532477e2aad5caa", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "0829dd19b7aec8e14e2ce78c12a4db3e0087df51342b296c20056d40068ff2d1", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "cc62ef4917f9aca85cc52def1aca0107ef857e7f177806ffc4c05595869f031e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "499a53709bd09291fd0c50b162af3b03c52afebb0d7e485ba29dcab022b5cb75", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "8ae74b54ad4348c1b007db4961bbc2ef7c66bc54e9e2ce2ea9c3acf43ddb4bba", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6e774e9d75c6bd6900497571065f4635c044298f5baa7ac882374169dcf147bf", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "c3b1945047f52065e1bdeb92af77bcbcaf0c6773b3ed941e85bb7668f187665d", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "c6a94738b53000a869d7b463890db480adcd3017c007ef98101fe616755209b2", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "3e47fe23728978ce8c38c4856f38e8adab99868fbf709c0cb6384b925d6d3b90", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "2fde03efbf4cf9beba4f6fd303ebf085846f1ca346083396897626e333848e40", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "2fde03efbf4cf9beba4f6fd303ebf085846f1ca346083396897626e333848e40", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "76c8ade0d7be2d5a848990348ad199fa2bee175d14f2666edda2036a68ae342c", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "28f8d9ac56ce0b02dd3ba8119c5c7cef30154b46e4db2ae8c143a29dd770f222", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e0361114e57fdd04fc73ae690ab080217fb65567db70376125a97f12e42f95bf", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "41982ef2bb4c759cd54b1a9564aade172d013c95aab1133762f7eae938982fcb", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "a090982e0a0304ee9e60adff95a830697ef1dee3790b60b6310bc6fd38265f46", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "cb803ad510b62a290ee1d7d8c04eb7af37f9f712fe6b1761724fefcde921504a", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9fde327be1db6888616983fb751c7cfe74ea4e39d8442650367482500123cd74", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "b325635b3ba4a236d76cf5fb7c630906c97ddfa536cb9e2db97e7bd07b0ba7b0", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "d9c986db5fbd5774dc91461aa97b71ff8c4f6316951a1c51157471dee0b05b92", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "50c45e7ffab3dda7ae6829461711ba1ca30f092638510bf6ffa32ecc7963a659", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "ed0fb22288f88d6e7f97ffe6c3d00313e878134e540fdade614a2fa9688f5dbb", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "c16bb912c0c97b8fcad7aae7aff0310ba782510acb03d3391191e105253473fc", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "fdb469681519a80d7510345da163f9e56f78461bccaf5ffc3a9d5209a09b3946", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "719953fc4a153a85264a10188787089ba895fe00e0560d78fe8dcbede9c39067", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "4ec8fb78388079bad4d59e1ad93a2f88dfe83a3ccd04317bcd08829d725c10f6", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7cfd61a5301fca887c82e68d5e5e497ca1f6099634df32c21ccd100371945582", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "1304bf5adc5975abfbe596700fd5cb7abc9f4e40b9d78531232a46927703a750", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "60f5a77862dab487f42029307b9dc85f85f8411fa60ef5a68a27e46952ef5d7a", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "638ba1dadf8690e0772adfebb0441acd32b56c9b243eecbede92d86509ede414", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "c57e1a5d23e778ab4f67a867c0e094fbd54bb7197fa1fa82155b5b57007a1922", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "d4d1fecb04b7cb1d6f686963d55364531a2061225fa5a4b5d8e7af85465c5be9", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "02bd914325f1913081431556a3b095c7fbee114f39b44b89663286aaa11d7b94", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "697b0ceec0f707380f5ad45c78b7e8afd6239b9839997e91dfa551d0b5c74f8b", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "d439353af62b254b95f990b1291778661b733a47f5d6c75d5b4431d0391e5157", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "6777514ecc94077148e8a475812da8a4467ad1f78daa4a231a00ddab067ea2d6", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "5409661736a922442d9931e3528448eb76f6c53ef8c20bc534cfd240a5ecaa3d", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d23165d60a3cbb04d1d24993608a65faa130a4d422347caefc79f6029371d2a0", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "54111d819692efe85bcf4dbb048eb87de5655deca1802e45abbee0fee0b8b2f2", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "0bc8d8d9da34fcb3c9a1f0babdd77ea88f9bcae39297135f8b61575915b274b8", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "2bdd92aaaa11de39429dfe93138bd34f5996ffdbc6cc985f3cb824b68b53cd89", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "2e99ca78fd951621a959cf213ef42787cbcb4af114de5ac24c39a87c5ef9a434", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "42dada7b4074994fb7b9e76e4cd3e26fa57c3fbeae828a27c03e770443eee174", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "d3d4674adfb2acaec990b26b2b92e2f7e54f254934ce97c3d04ac92c22aa0144", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c6b775c91858d73919a95a33bd66bb31bc181c79b18dbd2fea0782dfa09607fc", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "8e2e4b013be3d585cdc250dcc51ba002c8916ef70ed0c0dc024f0344042fa9cd", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "604c2572557b690cb3f45f1062abb06525294f9a38b91592c23923fc7e556140", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "a3c2d172d8925157fa012347dede6f61635ec6d09db2487f0518235173a35f16", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "bf21c02f38f434ce1e836a1bf0c0c78b02ccb115e216897672f9dbe8a7714876", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "39a016f35f54595a996bfb99798c11417061810af18054ff3e47b6edabfb57ef", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4980dc0ad3714f003ed48d3d010f878d5807b4965411e6db49fd0c055a1f0484", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e656ba8bd076c68ca82c3bb5297c3afbc30028115bcdaa9bcf00e3363da978a3", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "b144fd9548fdcdfd18480c96532391e11c2c4c94d9905125f0ca2489dec0c915", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "1cf0e1c91f0fbd71e79d83404f7dc854c7775fbf2f185bc611442588066540cd", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b183ef908b323c6ba23d9e97e7df798207c1c9c19c6a57ed3bcf9b3b9c8dc4df", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "79fe12f846b5c1d212733efcb64f2237f065dd4bdecfea3438f957090cccaf83", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "753b2a696eea3de06515d5f553f77fc2682becb244da028d0c9e1a83fc18cd35", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "3e2c0d7aace88a4eca63dca58967e05f7c82b91cb94adecf3f26a8b0691f4aa5", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d92e9c2de08fee6eb9ba6269cab49ef063fbb0e4b19f4ffdc34b69aa01cdaa60", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "fe19c47b07a691f82f58391724cb6fb527bf6264e4de2b71280cb74e85b127df", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d421af164e4badd4945073b402f52c179644514e8ce50c76d66d2e7929655acf", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "f0cd96c3a2cbc2faf4848715ca52ce8b02f4c5b98391829797eb31ed169d6189", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "2fd13d5b04d6dc3b956b8b8877cc70e7b4780a55c6c3c3a6d6cec60059f3412c", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "24e72eecb73fae4a6bb7f2c36fce44ff0421ac38b5578cd959365110fc003cc7", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "1b888a9c491ecd7fc84e84fef290862c7d8ed47a6a6986ab84bf4a4544be19e5", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "d94a153c0f1bc995ef92c81ad873f656e0862608442f510d0b30058e9dfd65d0", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "1199dfe91eb0b28a36a4b3d2945485a658f4f343afed3de4eafe3e4bbaef34bc", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a27e10e06f6b07209120350a86ec6173c734c6143cf4d83c17eb7c2b4fbb2410", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "fd96b5b65841a316f204771478ba0884a023a1c5e46e87dbac1a6e77a002c21e", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6e4fe45f6f1ac44318380ec49cf35284d546082be2ad5c95da1e60b75793fb8e", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "5be688a627b35771723a93029aebf27c0ba5bf772a1bb7f16464e32fb3204f98", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "ee8370017827c93e5bfb9cb0d453672c152b5066c83b2882c8dff44c4c33d225", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "e6bc49707529b561a875465d5a14e29c089377065011328cbd409caa2e138d49", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "58c4f7601060e353dccea1bf3c29f450613a58ea89ea860d591b13cdbaafc19e", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "58c4f7601060e353dccea1bf3c29f450613a58ea89ea860d591b13cdbaafc19e", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "d2ebbf10dc2b6568526d4e2cf6088986c6acc1ca7aac1dca83ce2cc93e2ba400", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "ecc4526f2158fb5df2e0cce7982bb5dc090330ae118b5be6997ea7e6f7bd08ee", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "6b3be4f71aedf03ec25627ade281b918d0fd1fc41c52d0a7eb0d02b845538132", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "ea6cb96ee026b225e883630234a6b9215270900a8a41a88d0111d1c5e97616c1", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e9aceed798845646987c2041f826ec4f8bda9c4b6e100559751e13d907554bc1", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "5f792e2008baafbe193c3c1f9bbf718f3d5fe0a6fb8d5f3aa0303367d80dae17", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "7a93f016c14482d7c2d2a21cab4f78fb76ac824fb8bf49503e59859d315688cf", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7b76fafc54704348af3a61e4bdfe8759408f211f1d7e2ad40c53ac77e4086a8c", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "98b421bb9c14371b7ba590d911ba2c6417c66b14df60617c6107d78ff7257262", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "9dd38e27b3f183b012cdc3754da2dc6086e63ac3cc95d6146d0f7a65c331b35e", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "f3af311f1e104b6a35b32cfa28e6ed99d46ffd02ae91e076575519a9159e3886", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "7e371d410a569a4de72f198d14c328b7ab3163ac3c87a0d5ecbe8e71e9fe0f89", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a3945abb775dc9699c4383a527ef33a936ecfa137b4e5de29a29907da8eeb466", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "79655355d6ff799816c99995449a45ffc5bf2d1e246928467b09cd7b43e39b86", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "5d7dfa1e313c31e8a4a37b8bfb1787ea104e088b1a4a4ede8fad7144d09ff5f9", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "e02c8838eec265a2c2d7bbf0bb91302c637753f118b9bad6e933d717f8fcf5e0", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "be725a7211eb840e11aff231c75bc01e48d531e6092c53e407e4a5b57eecb58a", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "be69d69b025f5977105f449f50b2d953b1be376510495151c203aaa084f4dd3f", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "172666b6da84f6aa8dba6d43659104103184fac581101d452ecb2194f5ab2352", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "7c32345e2a8f6eea26f6fd76df8fa4466a7a44f65b089dcb8f18cf6241344533", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "1adb6d6f0969d7a848f72f52251340cd52e17d7761dc1a080e66f0940a5b792b", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "a5f84ad6681ec3b2c5d0bbe35385a710143f7ea4bf662438f7f69c5b1aa7b957", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "423634df0f046398c224f5c001416a1e3f4fe3d28a85d5f7a997424b206cfbb6", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "485b503f5b47173d2757b543d5714b9b7ac7add515ee2db5ac13c47c395ae4f2", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "6167e32e0b81a06cceee177bfaefea8725b46a0251d7038eb27f8dad5fc0eb63", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0acd6b77d91bbf38dc4046c8466ee8a711df4703b65f65704030c432166334c7", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d648876a69346f9f84c838438b3cd42a2c24d61d6ba9219cf9043131b707343a", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f3369332c876d91804f904b5af2cecbec3cc4a54bc95acbbf46a7ff8885188ad", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "07843ccb2942ce121ec07a2865e13506bd8c80da985dbf10f1aa0440bb8a1f31", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "896e7aecee73e6fc3c20a8c34e0d58ef311836f5d422afd8b19883f4f79dab3c", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "87e03293ee89bc460fc3b3d4677497ce2259e9337f2b505763aff5f5f0a8373f", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "f995b36f7681c03ed3a57bcefe3116c808e33467a38efe3d4c3191c259ec836c", "T2B1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "6229e1ce79d2ccfff5920e6e52719717f9d44919884346d1a3e45baf8607ff59", "T2B1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "5b87afc8d277f0c8a1d211661fd67d2a3b7921c819d1d31bbd20f01ac4b2eacb", "T2B1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "3afe9705f70b5ae474e033b6bf629664b72fae23620640b8ddcbd7fc66f0654a", @@ -6341,11 +6386,11 @@ "T2B1_es_test_basic.py::test_ping": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_busy_state.py::test_busy_expiry": "c550a9bbdc796a989d6e46a699b8e138c1b87aef7761dbad49ce4977bff27f26", "T2B1_es_test_busy_state.py::test_busy_state": "dfaabd8f84d62e7ce0e8849097ea02e16dc095c49bb6855f8f635e03ff83fe55", -"T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", -"T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", -"T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", -"T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "8e96c4930ab714170932c16f00e219262048ca1bea57dee0693565668bce4cb6", -"T2B1_es_test_cancel.py::test_cancel_on_paginated": "6130249059f20e9ef6cc82fa54c36e180c45d3f90614862d4999f9eeb17d8fa1", +"T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", +"T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", +"T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", +"T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", +"T2B1_es_test_cancel.py::test_cancel_on_paginated": "805b975be8d70b88749f35aeabb809759dfbb81b031c2a0f67d6645b825d09cc", "T2B1_es_test_debuglink.py::test_softlock_instability": "9fc02701c8431843b697b313c3bf66d0bd1223896d0a1787346b72b25279314a", "T2B1_es_test_firmware_hash.py::test_firmware_hash_emu": "9d58ce887cde18e51f4df0c52ac8697481866bf4ee27260207925ce6c8e148bf", "T2B1_es_test_firmware_hash.py::test_firmware_hash_hw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -6379,16 +6424,19 @@ "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", "T2B1_es_test_msg_applysettings.py::test_apply_settings": "802fd720d7ac519643d99914d7aeb3267eda886c26f040081fd6a6fce627b8e4", "T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "842d006744f6e5ec00d8ec3ed6e729b20eba1681811c45ffadc0ddbef01e4f51", -"T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c357ce0ec5713b81cff7c44138b82f23da73ac5791be302277673c80d4ff388e", +"T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "130cdc99035708d25d7bfde37f8cfef972acf0e1ad4628db33b5f7f981d8090c", "T2B1_es_test_msg_applysettings.py::test_apply_settings_rotation": "00ae6d0f5db108d7280cba13baa2a7d16e6c2cb92ac7066a93d84a0dbf6a1c04", "T2B1_es_test_msg_applysettings.py::test_experimental_features": "c1861214daaa9976defd978202dc4ae3fe32f5d3b85ff86f016bb2f1c559092b", "T2B1_es_test_msg_applysettings.py::test_label_too_long": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_msg_applysettings.py::test_safety_checks": "4ef5ad04d866dd8c00c09551e1eb84f0742fd5d4d2ae4605d3612d764d6c4a12", -"T2B1_es_test_msg_backup_device.py::test_backup_bip39": "945b3558b76ce9dfdecc0714b2cbb2bbefae760ea3305475f9a9cd3bff0a13b8", +"T2B1_es_test_msg_backup_device.py::test_backup_bip39": "7afdf5bdd9889633dc2c7943a6c5f28504c7dd137ed74a06d11cb99bd8ce0965", "T2B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c1ff83ee1aa0c451553eb24b26b9e7c0811bd865174b608d7e8afb253a667077", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ae3368c4f352bd7f151e33c4a83570a28ebe86369cd34b1dc89ed34f72bd7909", "T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5972e1fe3b653446e2f181d5ba13884ffc50317a07804247fb99d0f19ca389be", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "7cc7136d98b6e38717b13db495fef26a2dc7d495f2b52ec89f147e48b439526e", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "604e85a87648a491841f51c2a134d160064c8a552300b0813ae62e9ce5caadab", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "49b972297c1c0270065fc6abbcacf39f7b719843bd24c3ae8e353f048f2f31fd", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "2c2e7a2e6f48bc395bf9abf6d964e59eac64209b5144b098ecee0e5200156005", "T2B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", "T2B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", "T2B1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -6396,24 +6444,25 @@ "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c2e05978f88968095f6365a4add766180ede88f1b298f6a7fe43879914ce1239", "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "22ae79c8dc2b0d32a5d9bacddd9be52b6bf8ce8216aa69360270e746e5d7a2a3", "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "bfcd2eb2e9fcf7f95fb18f7300d4ccdbd807388ef4d4f499024b622ae825b386", -"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "6b25bc3e9092a4b7b352aa1a7e6f2e1a5d42be33e33e971452f2dc2f31a1a2ee", +"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "d79fa1505f49b7aec9c9508de31da55bb5093221d3fa7be623aa5c540d68f063", "T2B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "402ec1eac6e3b1adcca0164837908a26857c1aa232708128b8e20db65f958100", "T2B1_es_test_msg_changepin_t2.py::test_change_pin": "b5c6d6ed8d87b35f91b9601c9d6a87e25bad879b326e4108080d3c08291d9722", "T2B1_es_test_msg_changepin_t2.py::test_remove_pin": "9cd99fe144e94eaadae6ef1adc12439b62745a553cc8a0664dfe5eafeb01b0aa", "T2B1_es_test_msg_changepin_t2.py::test_set_failed": "e4019ce947c756c2ffb3753b86b1e2603e8d2a1e2b9ac9c08bb87758f4ac9ca9", "T2B1_es_test_msg_changepin_t2.py::test_set_pin": "ebed946b3783686304c682d00ab75de96b95129e068b6485646b3d1cbc952b8f", "T2B1_es_test_msg_loaddevice.py::test_load_device_1": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "b73f35704810c4cb44e97309af840ebe5c30a26d8e8ca7bee26886d66a589553", +"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "3bcb373bc1e4ada4b5a190348240989624fd53f965708ca36557d03e5c70cec7", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "87cc82104542661589b20c20547512a2656a1c70adc6cb03c081f090964e1098", +"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "e2107a6bd52d0b8d99d1d3a3aec17fbbefb093b8ddc8c84b537f4e54d7a8268f", "T2B1_es_test_msg_ping.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", "T2B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a6f0cc9d7151f3d1832c43201ce1cc88ea680aee75ec0237ab0227268a0d46d3", "T2B1_es_test_msg_wipedevice.py::test_wipe_device": "5d99ab091c35709fd2d388351538161738f487c01c31d2d3fa76bac690c711a1", -"T2B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c9389c037df113dc34bcf88c222ba918e5f46d3e9ab0104dd5e5f9c77a682a03", -"T2B1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c9389c037df113dc34bcf88c222ba918e5f46d3e9ab0104dd5e5f9c77a682a03", -"T2B1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "7fcaf8c62fef39809724356391d121a0ba25606939b22d58e787d280c0027b29", -"T2B1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "7fcaf8c62fef39809724356391d121a0ba25606939b22d58e787d280c0027b29", +"T2B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "971615ec06d9bb02995c0945715b8307c458f7995a1e04c3bafe919565bf795b", +"T2B1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "971615ec06d9bb02995c0945715b8307c458f7995a1e04c3bafe919565bf795b", +"T2B1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", +"T2B1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", +"T2B1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", "T2B1_es_test_pin.py::test_correct_pin": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", "T2B1_es_test_pin.py::test_exponential_backoff_t2": "78ad2f510e92b27b59a9f500ac549469a07ba8832ca24813f38211bf1c58bf47", "T2B1_es_test_pin.py::test_incorrect_pin_t2": "ef679bc107489d2f3e4cf3c197913be73e49d5a14cf3e755288c6aa59f46570b", @@ -6429,29 +6478,33 @@ "T2B1_es_test_protection_levels.py::test_passphrase_reporting[True]": "15b39984b9b5a4a2b20f25099df17439eb69a59c4d96fcebdf5d17e0c87c0219", "T2B1_es_test_protection_levels.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", "T2B1_es_test_protection_levels.py::test_sign_message": "9ee0893abb2f7ac2cdd4e90547383828b69584c4ef58dde38df962a1cbaabc83", -"T2B1_es_test_protection_levels.py::test_signtx": "70ac59116157032f15db8085c7c010227aeb8aed37afe8c978a0e8fd2867f942", +"T2B1_es_test_protection_levels.py::test_signtx": "53252d086c7cc31e658bb663a769b94af75adaff3ae76722c856850dac10355a", "T2B1_es_test_protection_levels.py::test_unlocked": "7e49c5e3ccebafeafcd1fdd76fbc77cd561c414579adcbecb91c79177ea68fff", "T2B1_es_test_protection_levels.py::test_verify_message_t2": "4fbbae479bace26c116b9771cd10044d1e9d6f3a3cc4ce150f0a294443789ad6", "T2B1_es_test_protection_levels.py::test_wipe_device": "407280cffb503e26c7c5848fc9d71826be24df1410258a6531f7be58002cc82f", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "fd616b91bf4b65c48d24c8455840a1d7630ead87b42547691a37ac55ed74cf46", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "ac5223af0e78ee26456aa81d13deaa739f6d8a9392f6a0d6963b0601a07c3f8c", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "71dbb1ae1a02912c6d7cb3e51abf00a019a7adabb13de592a04006d4c7c2898d", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4cc133317511a1c135e6dc4da3292383cd02241b067dfdaea6c9ef1d7045009c", "T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_clear_session": "980ffef9c644ff1300f931fe756a31fa8b1836dfeda81943e2b223a8ea6fb8ba", "T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_derive_cardano_running_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_end_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_end_session_only_current": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_session_recycling": "7fcaf8c62fef39809724356391d121a0ba25606939b22d58e787d280c0027b29", -"T2B1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "1207d8cb13d4d2206184d5b1388b385788d78bb336532c62c463ed95b818baf1", -"T2B1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "a2308948499b58c64dfc538754ea1193fe99243dab54dc62f9f12c8402290a58", -"T2B1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "4c48954eb19d2a53afe7bea962f43323841887d34703113e1fd40b2a8e7ca82e", -"T2B1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "73f8029f776b686c23787f5a555dae30180dcf1e98b499bf49513c136e18bb3b", +"T2B1_es_test_session.py::test_session_recycling": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", +"T2B1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "1fc3b7bc80d2d39d9acc04d7fda008b2e8584f58deb3dc4ccdd93f5af001eb96", +"T2B1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "eff49b6f4d76b90b9401a81818434084a8d31f342b1975974f74be0f837b6ef5", +"T2B1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "1ad3892f7497056a3c375948bf32fdf8e48f5ace26d54448b9feb889e165c8ad", +"T2B1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "8a7f727b27f3ac029cba55082e8995549a87b03e15c403c113637a4145a8cf2e", "T2B1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "0ab187af62ef8effc5f6cdf97a418786854654eb0e2199d3c9b45f55840c10fb", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_length": "20edd66e24f792d5c0737c4be80b147f9b8059d67040d9f1bdfe2262fa1c69f4", +"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "0efd88f75c5537a52205aeb1ff7b4a6ab299f4e3e83036acd79f1b627d5355e0", +"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_length": "5291df7e5538220717a55082f57512c70f3fc31608259c7959825680162db10d", "T2B1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "3aac4fa9df61afc58cf2e9f8872a31b58d2ba23aafb36c06b7959a9042213de1", -"T2B1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "64001624b62eeaaa0a57d6b8f1461c5cc95c7ea7335e1363acde1e4c7779f704", -"T2B1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "e1471d7134e166d21949d36ff8125ccc47741be70f196713705ca98e254d384e", +"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "130c22410e24d8866cecf22025b1bf6805268217835427944c909f4b933db684", +"T2B1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "441d0e4b5753a9bf3f518bbc4e21279539dec4e32d886f95ec6b9c954a5857c2", +"T2B1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "c1efe8a277b0095abab9f2cd7e2efa1f096ec14595a4ea68f3b509814c9883f6", "T2B1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fb794c49205b78c579f8529e1cb2824316a8cae5ece46987acf8d4d56644e5b8", "T2B1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "505524149ea8a55b806fe691e8a74e41619ae0afd1d02cd1058d5d47bf20bed6", "T2B1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "6b71c7831c8b9750ec569694d677a7004625b7d899de8c85ff41822c459cc5be", @@ -6462,25 +6515,25 @@ "T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "82b05ac35266825444f9917c2b78705fa57e22b2906872a86961de0beeeeee0d", "T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "880c1d5bc3db42d7974e2b526ee38453fc9b1a1fb23922cd81b89a66c5cf9858", "T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "4a31a8438c19f6cfb2164381b3c77246bd8ba3e2d0f0904557cdd34da48ae128", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3c70c11ead4269611b7dfb3023879c47c2087e5b5a8616ffa85f9b377a170e6e", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "e0d0500f5340ce326b66050954f9ea265580828cf540f6fa89309cedcabea51f", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "1d63d7b1a0b6e3cfb8931a63f3f3aa27609d336fab91a12d2b912279987dd4f3", +"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3c90f513ac2487b18afb24e766e790445520e911f1d518f1b1e6948da10922a3", +"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "931922598fb0fadfd89fd7c70bf41208a100de3c923270290ec9c0f9b941a8c4", +"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "62ac15287681ab838a6a2505d158b6f07714b421607ac5197e8e1f30b8c701c8", "T2B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "105c6f134d8ec38c5b68de67968548378650ffbfde2c1bca3715b59b8d8e3216", "T2B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "40d5c426fdc29f472e497c19dfb4d04a5e73a04c48976f0db03699d34f58aaab", "T2B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "375f2cead31d30cb051220208dcc2f21d234719d46e247293eed98db149cc791", "T2B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "f028ab852a5db62cb3a9a062e536c2e0568313b8f8961fcb4f3811baad819884", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "5235ea9f873e8d240d7582435e0ef68c195be2f3efecdecad2cccd13a79415d1", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "caa68610d4e92cf07c244b4cd8777865f4358041c0381975a7abaa9652cc750d", +"T2B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "6a8ea0b317e4f2631c6369239faf2b82d4c30103b8c5ebfd57f6cde0c9297552", +"T2B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e4921beb410076667282830cc79cf71cec4ec561b4195f28d92e867e3e430635", "T2B1_es_webauthn-test_msg_webauthn.py::test_add_remove": "f052c533daf866855b3db4a08d9ef69205ab0350434d494fe01038bdd891cb0a", "T2B1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "ca1e329050d4db1a09cbc672a98a66fff98f5ff16857e0c747d8eb2073635c39", "T2B1_es_zcash-test_sign_tx.py::test_external_presigned": "4fe18488dbdaca245cfe30868f7c163595fbeb2321268fd404afc42fb3a819bd", -"T2B1_es_zcash-test_sign_tx.py::test_one_two": "9e93df563f6a3395737d3a54ba373125dcfd42aef99d89766c19620410229572", +"T2B1_es_zcash-test_sign_tx.py::test_one_two": "709f33a0e074d3923aa1c7942ffd49606f246dc044a3269deed9b7ca54051680", "T2B1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_zcash-test_sign_tx.py::test_send_to_multisig": "75363474f5cce6ba42c60be6092c71541a7a79fec8b998d541efcfea2f867437", -"T2B1_es_zcash-test_sign_tx.py::test_spend_multisig": "764c1f8db5f4f6928cdb0f6a57154077a47785d81108cec768988ed4d8250e86", -"T2B1_es_zcash-test_sign_tx.py::test_spend_v4_input": "2c52f441f270bbbde203134194759ff1da9a2de3536281d35d776968641f1b23", -"T2B1_es_zcash-test_sign_tx.py::test_spend_v5_input": "e2ba44387d903bdb01a2e9cdc1f1d27490fe156ca877843cb160939f6c1d17b0", -"T2B1_es_zcash-test_sign_tx.py::test_unified_address": "56fc06cad39712c5eb913001fce0e9c73993cc59409590589aff40d56f773ef5", +"T2B1_es_zcash-test_sign_tx.py::test_send_to_multisig": "687f587e84dea7c578cdfd7fa3767d25bf2326214742285bb514e7a4ff74bbc8", +"T2B1_es_zcash-test_sign_tx.py::test_spend_multisig": "32b08ab1d99fae1a6e65796476ff231da26a2d050f48be0f26f19c899b450fe4", +"T2B1_es_zcash-test_sign_tx.py::test_spend_v4_input": "bec708b8c0b57c1cf5b3b0d0750831011fcd4320f7050ce12bf858b9f96d065a", +"T2B1_es_zcash-test_sign_tx.py::test_spend_v5_input": "b1918230ee7f9652ca622534ffa872cf63139783d963599143235937eb33a350", +"T2B1_es_zcash-test_sign_tx.py::test_unified_address": "cf31c207d517e393c0bdb5b1f7686af2ec350ced608b6393f96c414c54b86e87", "T2B1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "a9c82870e7ef5ae38184c83c526aef7954c9956313203e7d09657f1f7ee3720c", "T2B1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "89292a81a0a4380eb2b7af21c0bee0a53fdd3b86d20c58f73382ec58dd495fbb", @@ -6939,8 +6992,8 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9afd57dda298198f84af1f927c2001ac654a9b510b1f3e6394bc9632a6e73358", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "91e57cbcbe0090b502a9a4c6b92bf3d78e7c679a62417cbba4175cb4d18850e4", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fabd30e3c20680bb8afd2fea71db37c87cf08ae7d5b55e5813f89e2767aee7e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8723687fd0ef413edb22bd2fc6e85c6fc8384fcea2032653b1bc72af978d84bb", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "cf08f0158c32a46684b50aba4b3d0409bb5776294b924dfa002aa53258102718", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "f3cb62ac9a30c037f2b3bc1c17523081b07af9cfbbf382e5501ccadd091a0081", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "230a4c49545d5cd7460e219a1a505f958dd539538634ba6691ee964e4d51a5ea", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "04d50f562f60113c3803ba3c0d99ecb79c3fcea1ec8a1067b9b3ecb54ebb9652", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "f89db0a766f253ab425751742af0ecfa814a3a264f254ed2db86f32b3ff4c37b", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ff0b70b6e69e6b5422e8afee397566cdc92ae583171532fc25b5ff359b2bb4a8", @@ -6970,17 +7023,17 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4f9b061285820e0ccfad3c00636576fee92fa7ac88f3ebe12ceb4ee51c3162ef", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3c60baa9caea69387e92169e4b5d51b75c418719383aa82c0d4bf14464b51b35", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "5fd802f7689488b34577429cb6d8c1d099e034dc675d2a10e2f1a450088766e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "5d9e4e7595b51022e94eecf621b7aea637eda9319f2c6b399e3c61eb7c527d1d", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "7b1047cc909f594b5ef4c9dbb5cd0975bb64b171efcc608bb000efcd59045fc6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ab317da8dda931865217e973714bd8b24f0ba7e7c91dd81784dae191fe5bf9c3", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "2b13316dcf2ffd0baa21a1cc8e1b0ceee0d5bf34a2271e6955393f55ef25cb63", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d601e4e3c056bfb3d44b9640c10590b669833ec61b1017da702d3a7e7ab04b45", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e1dc47251125f55d913e97366a0b766579e44e231eaebb8086ac64f0aadfeffb", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "e809b57a9f5cb842df2cec0188f078bba49cffe9ef989d2e96edcb232cb4d0f8", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "d39ec1e7959ad2a94d7ec58a7c40495c9c43a780421fea11b91773165ba7aa71", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "ee9fdd2effefcb92df1ac90a07706282b8f1fdbef3bb006c8c49af730e0db204", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "ac09fb4484c38b164a54664137a278a2f978cfddd5df977ee0d147d385dcb66f", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "00e92c80230b40fce9277554206a2685036248a1f15462ad016acd77df805fbe", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9d14745f5b58f3438c24ec3b3cc6ced879f4bd7eed9cecd32c768faba58a48d1", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "37598626b1ce9caa0318626a252678bb2683fad0e965cdcd30646cff4d288276", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "0a25589548dbc34679ae1bcf85712b1de029de3207aa521366ef389e068882bc", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "bf9ac82b5e94e903027cc98d835a7b564802a863569d2529796badb976c7a2a2", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "775f4a50e8b524f4373e6588a90d502ecfe7993065d949fcdb45c668cebe2d3b", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "c3ab839a1ac22b8694d7993978cb2604e237921bbd02f11d4de645276d6cd3f5", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "e0e37e8e61e5c4dc2a9099fc8dbcd0a63f3128fbe103da76b4b788be0599bce6", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "20d68143d4d30f3bfcbcc1814cc3a7cf63e96088df630cfe3d6d1ebcaad17826", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "ffc722eb1b2b24f083be3878af89ee6146d7ed993d6acc4095dc49adf7db77ab", @@ -7010,10 +7063,10 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "b8a3906c386e2d370abcd72be87f14ed5546bec5426dffa2de0dbc3799184d7e", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2ed4dfeac9e12e918f34ff162aa80fac5500b586ee0039be26c116fcf8b0cc01", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b5a49a5dc4c0c803f37ae1f67cab2ba8fa7a34eac87681a94fd0e7253a51da85", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "6baedaedb2e0eb3aed82ed392ffd1110513643d7a67d7da1092df8fe33cfbec6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6d828d0f2d5c4432b1092061259ebc2ff73e79567691d3dc7b4c28f929311ff2", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "ff3c3ac482fb7f80bc5554d466773b08a6c8fb6466756c668a82a5df72789348", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "798e3a1088f19dd5297149c57aba5758cce6f3e3e1b834fd2bc1387a1f8a4057", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "17617208e47645fea90b3bfbce5e0f42550d3536c8786c32e95ceeb0162c3b6f", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "93d4015e97e449babd8e85e45d979199b70b8f92d53ce85ace507e96ce435b85", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "ca130e2282603dbc90235813a821a9c07b1bd61b74ed2a17a9010b05930c462a", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7ca43bedf2e800499d9f54eb1c3842dd2aa72d56ee72a70eb89b3daa733c36dc", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "45029eeb0767519845e6c496ba8163e941e7b4b2cdf93e7d8a592b1839263fd6", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1cc8bf559fb76b417915aa19b9f865eb00bffbceadfc083bdfc1cbcf951a8c1f", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "894c43b0641ad5bd0b544a4a128b3906779a3acc05684008e71b6c313eb2617d", @@ -7023,9 +7076,9 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "40716d9d67d36916809e39e1ab2db6ae30bd7f6bc45db0855300378f20efac92", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "85bc2d30eb7e8be15ede2d307eff2c73fcfd8b604efb1f3bf3b2dce63cc6f867", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "14d516f1222aafde692f24beefeeaf63cfaee3849e9e9ea3269aec9ef7cdf389", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "677071fe50b778b31ef68c46a4a6b62835400aac39f4ae20a24e5238edaa04c7", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "dde97faf6c90c0b998a60b074304ef2ffc988bf2d1288d6b03f9c5fa80f3538e", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e0747e726c7ede0889ad5b5d462874e6c389ccec727e0caafdcd5c7966842972", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "dd44dee20611dd8b695253dbb87a5d08407c8f05b5f4a414db2a011551939db9", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "4132855143440e9583fd52d31b51ea5e2dcd6e5602cec295b8d18ef1e906951e", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "2d7116a04126968aa2f6e9efb0821fada71772b821c58146688959eb1269fb79", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "696ee5d8f72c02b4d3df8634957a823d2e1565d8b0bf4537baafd5d2e1811a09", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "bd5065d7c60bcbb3ed571988d4dc1175a0b05e1a2cd8639900910b8bd045af07", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "217a273734abd13c44a2ea5a12597c19672eb40a0db4fb7d08ecdf25d76a24ae", @@ -7054,10 +7107,10 @@ "T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "2298c4289751e1933928cf603a54e0db8ef10d090f75c4a97511aa7d10e8d488", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "708c33c2414a72a00aaf049f9d1691aebcfc13bd5ea5e9ed414cf341d5e7767f", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9f645c724245630a63a9f40505bb4a1f634aa47ad3a2c5cbef6021ff3e8440c5", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "954169abdafc56e2976c73309f444925cb5a75d0b85803490e21ec8788412ece", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "fe9352a9c1687608edab86f49ac91e5e26230b476f43094e97d9521d9d4a05b4", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "2b5181d652cc2952fcdc31e9a7473834cf8a28929e687ca652e63bda43aba72c", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "2d3a1763b32ffab0620e7262920b3246e16873f8a8c1723f5b256a36f3b4ce1e", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0d9f55a90637f95eb89ca4ba07d0c2cd0f8bc8d0c25bf5549c4d37e25d509fb6", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3098e0a9503604bcb09e83a476bf01ca98eaaddf2e5afc23438611e98466c9cf", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "23e83f83e51db2a6b95c02e30fd3cb2b04f0861c2b089a8047ddaa361fcbaf3c", @@ -7093,6 +7146,7 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "888f3aa3c58713a55e1835e723e6ba69a9f7c1c55a18947ff178d2f5098d6d86", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0504fb74f0dd3df126cac3815cda4b810562821d828a1d537c279bd4cf9b907d", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e6a8d8065f4b22dd984b376653d50766e634d04c1162d448be3cb14c275b5787", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "96ca4d20358c0507bb50b23c1e0b641b57053b9d9a3dd4b50795ae9aa4ad0735", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "986171cae541717edf6697c74847b8a043e91ab44bbe513f981eca087765b597", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "0bcb295d4b3de072a40dc2525231fb0fbe2ec95029d620981b25d75ed88b9f35", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "03c9251821db82ce98a8d008d5b55133b07b8f8859a8ccbb6e1822391214658a", @@ -7121,7 +7175,11 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "07906e020c17c07fe80b81257acfde89838b831ac449b3875dcaf4808d82cee2", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "49df6bbfe2a333aa99fc836fdc42520a10bbcf527ab618ddf30b6ef22f40c968", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "86eb89febd533cdedcd1fb9ae8df7774ad941482196c94247636fbc750187055", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9b42217bb20bddeddfa2536aaef4fa8f524b0d61bab658fdad9485c74a026a18", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "d64c60d3c2c132eff3924f0b119ad5e4a48921cc681fea4410bd7731e6e99809", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "bc0ecd2b7dc9081fd589cabab4dd26fc3187cd2accb0b1fc72b61478799a1685", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "866c936531b9c4417432bd1692b32a99c0acf5deb15a6dab2d635714f362506d", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "db1e88015c7e20bec12ddaea5962b5fe5d936dfc9e65cfcb7e723a664df3e705", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "3c8753edec573565f3ef71cbd77cca00e652828659196685a044636fc6692e51", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0b6d36f11550f0f8b59ccee39600c937fe4b8d47c43684ccabed75580bd543ff", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "60dbdd92aa9d03d231214be4c4445f4fbb18e8d00031d14ebe36905f29432924", @@ -7131,6 +7189,9 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b8365a7c21df14fbcc42fa79aadf8d2c6981bb2ae679c87816ce97c718354293", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "59fae57ca493a6d4c8f365058710ac475d4a02faed1817895d6942b2480075b7", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "6fa7f8c42e5507af7d6c9a4a5b985c95da4b281e9c4313ec5f8c9da8f7a5d053", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "dcd1e44b01341e96ee7eef8008a8212312fbfcd8819f8cc901dc0cc1741a594f", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "2b1d0e50b872bc5f57d16db528c3566817064305d7bec7f11e5925e171930220", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "2b1d0e50b872bc5f57d16db528c3566817064305d7bec7f11e5925e171930220", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "deb80a2e72daf3f9383243267c0bfbbe011950fcc5514206802900a146a87fb0", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", @@ -7502,56 +7563,57 @@ "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "bd4ce3204e120052ceea28a0873411b2bb716bd2dcf2f981d04da01a73fb324e", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "63247dfdeae4c7ace1eb3697f6371ab82941ee3519a9cb6c23ee0b4bcf41b32b", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "74b15ea6d56792e639957fe6873180bb7c5adf2fa700c245b00b66474aa47fa0", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "2b934bfc05a8ad1282a17b76b77896cea7a4b01d4e9383496322eda415da0042", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "194b03b326e0bd2f9a9cf7a88a09caec0163fb2c1ba5acb078a75f76654871a3", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e7cec052fb427ee9d00d91c964098b191efdc94ccf2bd509ab70049be4bad897", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "72577e4df06195a8579f8c487c7dc49aa5b6c2f8ea6622afac374b1c08442a42", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e26620e655d62caa99650332b0e06ddabbb96f1c7340233f797a6c98cc5c46ae", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "358bdd58d485582f0df5115de54e9180df643863996939de962552dbb1027944", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "ff1467749ed3e022171ab66fd03c6568b71f3c193f2c90f7a5595ea0c5f8e824", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "70610b7956860b8b2a413c62f81e00d87d8241811259c726da29abbe400035a3", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "26995904ca1ab8d458d13729517bba3108e9eaea8640efc6e897a3fff20b3915", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "9153ef94e9722a39034048f22a846119178d9b09ce5b0053d2a79d0839971419", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "dc83955e9013c6a11aaad82a46270f3cc1b6b764a65fea81d116bd292cab7715", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "96214a77bcd84b102f830d5c8f4b4a1e00c473f0d138eb9e3a3f0fca8600a6ed", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "bbcad21321f90814eddbec4c52c69d2d5d028e982b3820cb1345bd96aa6ea088", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "96214a77bcd84b102f830d5c8f4b4a1e00c473f0d138eb9e3a3f0fca8600a6ed", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "bbcad21321f90814eddbec4c52c69d2d5d028e982b3820cb1345bd96aa6ea088", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3d0db06890c7ed55d36f1b115df2f77b0a10e43c4bf97b65244bb5cdb8560a95", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "31437836f623b3f1312aca382d59ea367a28a517060a61fa424751d02e621587", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5e1cc69596f5693d7cae0b8752cf0d98162a45861557727642630a1054f0a62d", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7904e3716359486be47ab886f68abd09a103367e8e163aa059e3f09d64a25b73", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a46c6095658a0d461c2f2cecace44666220118dc9d5d52388f6c22279c27dbd6", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b7c74bfc9dbc074fb7f173aee7a2c914fcb54ef43613d0de0d0e7d8ea8e0b330", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a46c6095658a0d461c2f2cecace44666220118dc9d5d52388f6c22279c27dbd6", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b7c74bfc9dbc074fb7f173aee7a2c914fcb54ef43613d0de0d0e7d8ea8e0b330", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "0d491430f77ea78d347a6e96021ac43caa03a49e0e09d49419d2ad38be78b4f7", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "e9833c19b59419cba81c30878ca5d52c065b1e8ce8a6a48cb5396e47c9692529", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ba237ee2ef6942c26e16509bd993fe6d757868753f527a4a91310ba6d3a0a2d5", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "04a6d819891a52e6be2e3f1890e62a342b181c03c78ddaab07ae7edfa0278d6c", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "ff1467749ed3e022171ab66fd03c6568b71f3c193f2c90f7a5595ea0c5f8e824", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "de156d31a9483775d4c736cda8a6d180944ffb54cdbd789954b1b0d4a52de304", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bad0a3a60075b538b0794cbef7aa499e6bcaf9deeb8b793b253fbcb31a3eef3b", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f19d4f7b8adfe75b8d4925f19fea9652f6ad0226ce85aeb2fcfa6e0c4f4a120f", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b0f9ce8e4aa6515cd9fb549090c03e66dfdb27fea2ccdd4423e1a9e7f609937f", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b3dda4d10e5f4284a002f9ba581aa88a237de6ec284a9383b69e0ee765a3b983", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fbc98c8fc]": "f6fd96a5fc27ec5f125eff2dbef1e7da4563acab333f5899e0b9af8fe42cbaab", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-b770e0da1363247652de97a39-a50896b7": "adc84514ded91e1816a828d25904243a0a35fc994a1e55a59e0988a5f2d49c44", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0daa7a91930cb04fd3dddf1bba9ddf7cacae6f9297f60967d098fc00bbf63c71", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8bb26aae8e6fd9401e78d154d8b359b68f2714b0e66b1fa3b4a53320c1eea747", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "bfa11994a944d76ccdef5d0217d39856f69f0c88da67d1037d4a84edde6c48a5", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "1fa59516ab6437f0eb6a0c6e724c0bd214e91079a5bb548d1fd1987825957e99", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a87d04a296a08b073a8859dcd7e68819c40e15463e093ff7d19576ec7aaf9d02", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7fd0ca1272b6b64ab587edb3b661347605d78da004c80cca86fa57071ba97e7b", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced-bac-f67baa1c": "7416c19cceee64367f1f7d6d5078e52fb17248527fba0751f538aecbb04bc977", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic-backup-6348e7fe": "411e6000a2672cdec47c5c12df25211fe6d5534ca4cee1961e0ec3834dc1cc4f", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "4dbe63ec8f03ea0bebb24e68cb5958dbd6f5e7f46e8aed3a694dbb11b30472a4", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced-backup-dcbda5cf": "5c658c5642657914030d8a7dd4a23c44e8b239bd1c1d565e2470251c4f16a429", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic-backup_fl-1577de4d": "a1ade95b976a6e28deb91c7abe226ee384dc58776a0c53d1c2d970bce5bda75b", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6a7c0f2a4013e50a24d45159d831893f0ba9e56575191540c925947a54e6856c", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "291892a99a919045fa1052ec3acd968dbd102c0c14dccf927f2a1ce9e082cd0d", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b89f1665602f4b730100e8fcafa503eec6c62da6af33b8b5ed415349a543ad35", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "57b60a05a9b5239e789c1d8fc310f2bc1c3c8028ee8ba243f2e09c263bea3a94", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "f65b1a8f41dec6b61e3ed842ddeacb18fdb0c973833dc37149d5ea0b8bfa0b20", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "51bb1316edf2a2e6b4cc159fac8fbf2a4e9a6f92844c936813915b2a423d3960", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8526063a5922fe464fcbcae8d3afd873101c898283a229253227b4e2e8580609", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ec3f8b2bed4189a2d692ac76218e03426e02c4e5a8b235fba8a2bf3cc3763550", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3556f79a04ef23c19b374d8bf06e8b5d378446d5c26098c1d8b893db0edb2f9e", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "38a5d2fbc67550343f5819300b77b37e47bafde1c73cbc429745fe7c0f56511e", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "09159c73425c71bba865b07c8e92d571366e7d347806a8b7327c051986680b0b", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2a4fc40c7f5e42b49cf752da5728b7f1f5386e9993100db268c269c854095cb0", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "463e0cd462e2d6481ed3217e45e439ef727649a6347a1e76dfca54e618f66fe1", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "66ec0e2342b68a3c450c2dc17fb766fb45120d53cfdbec0481c4dd2d16f444bd", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "5dbc08212313f8e6cb46bd6d2335dd6a9293bcfba62842ee0b6c56ae3b38fd95", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9b88c0299eea7a699d9ad283dedb82aa090700da292d9befa149e4369d9727d3", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6fc675d6cee62250b7e6cee1a11d2121ce428299894cff7c83e84aaaa7edc058", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "89fb7e47ae2684a3c6b9d0d5bdd97d609775c49f32676df9543ef41d815c760c", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "7d71d4e42cfb0d95e9940d79df1199e35e3e20ad3014e4cc1f7ec5abfef97442", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dca0b979475234a86f863ff4c1a13b2f1232a8f1937a83443d0331e087359f63", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "867351ec7280a04ad469c95cc0b994fb51dacc107198f28e76bcd25d9b870155", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d21eae69e5a7d4700778f9af92ef6e302927ee1bcbf98a3932fe8363f7ae77a3", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6556cde9bff6d9cd92c6fb8914252b3af4687ce92774fdf1d457d3ee387873f5", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a981a39599ee54b70a048d342f0ac4d11bed614de5867061db2994f384c9cc5c", -"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "699b6c8894775340566baed8fb966900566d45b854d1d74b51b333f426d62405", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "535f1ce0a90bf5fc9f5fdc8088a83245885977d68edf7f638a3ff5d5662380c6", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d14f02fb6eb479a12e58bb35d1858a25ae29ed1901f8c48c11a82a8c451ec27f", -"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "956abd38be685cda6dcf96b9a5de7778585cc625125df51f9971bab30a647cf0", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "15a5e070b56dbcc256c2b0fef1cab999ecc5088f8e9cccd3ba0e10928d8236dc", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "861eaab4c29f7c90f1f8de0d46780026c86b9d8990065b7694278c9b33f202f5", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "ec19b87a13aef8ef4dfcc78011d3c7c1e98ce2584e9b1e78b59398652a8cce8b", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c391f8162af600e065cc9bde350f7ad8b09ee22d70b1b9ac24725f8cc31b69c7", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "b25670dd00f1fb35fe91705c538a7f5750a93eff15f1d1a21f986f6e3fc79949", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3a0fe6299cf4672d1ef4fea334e3ccd9ec64097934331c8392a5f32bbbd66cec", +"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a7e073005999550adf0805ed4b9d6ccd95ca4f938cf60cbfae063c7c9523de01", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "841b4976348b5720f7c4fa6097f49c8c88619501df94deeee55398e768027538", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "18e73ea0df112c6c2ce23886f2da4067f488be449c0264565f50d97bc0f022bf", +"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ef315f0941f76bbf942a4140151a1d554ef0aa872b9420a905ed8c464a6c36f4", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2ccc6ca7d69a68b5858c5d4934dffa03562a1c6fb7f35ab479bd2e7d18a2975d", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cb110055d62b21990338dc5cbfdea0c8c813fd6ab35144414fff04bda2974426", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "851bee61c1b9d2d3417144b6d0504f0ae48409a1e01da5498d6cc1c4a5fb9e0a", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "47bc3fb72c06124191ef7e9586df146a892f87046107218384d08b06baceb34e", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3256148778d8e34a180b5ca01b0bb41ff5cf573055a8b4fea6a8f42aa084b5b3", @@ -7692,22 +7754,22 @@ "T2B1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "7b3e200e9ca58c7b8453ac0fb5ab33a4a707fdaa69ade74d615d61151e83be54", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "230797e47cff136255e693ebcc18a99b34607f782c986a7bbfb972b3d2c96231", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f25d7b4f0322dbbd89e85d3fc416939545eba8e2d352cf8e3d1ec9545a2668a4", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "c3abb0784754958c40a6625946a7ac71c8945179bf480f781e6654b43c89cccd", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "e0987643a60aa0ce8a12e8b257361eaca0fc7801ef3bfd4602e0173cb8d1a518", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b7b21afe6a8fdd969ee13f9d6a81b9cbf5589a91831a4349c035bfe8d044fe40", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "771c0b2caa70890eef7db26a91f8d77b9d21f0428fd62d559f058fa43a1607fc", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b5474ac9dd1759298c18acb4f17d45644b2fb8ef399aab993128c626c93a24ae", -"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "1d16fd8ba54f6871fbfb45187ea472b9921c81dfecf66018e20ca95f35b621ef", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "3361a26a0e268488acb40c0b4fac5d1520d240d1d62011e3f2a85b8433ab5727", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "7b15cf1e7b8a26e7ec8c87e95e3928c6aed07d811592f7fd6e8f4688012790bc", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "db2bc1f117733b393f4ee44c6e13ca2600602c9b995a14d5bf325ba1c2918087", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "7d50ee33b8e74a7aedc93f1f36c0a7062d6c9a84023731a7786457fccf844aa6", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "e4ee2a67791b943192e2d20ab38beabbc613e2379134a756f8c6ed652f139c99", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "669e33fc2cf3f5364304f27a750cbfc5b3894a32d3ae18af3c28108149c3e14e", +"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "7ca0d8884998733c6827101376e8e48d6b90650d2f032016f33a6b24536a62bc", "T2B1_fr_test_autolock.py::test_autolock_default_value": "5099b0a452966b3dd842aacba8404269d4c656ff7e6f4ee605adb85120d605eb", -"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "338417d03f46172ba2a51b418e1f1ea072c58ad8689dfc2a77a2cae4e70d5dc8", -"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "338417d03f46172ba2a51b418e1f1ea072c58ad8689dfc2a77a2cae4e70d5dc8", +"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "2655228a3e9e307973fe8c0e9e4701ed610bb872a1e3d19caab6ceb41335851f", +"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "2655228a3e9e307973fe8c0e9e4701ed610bb872a1e3d19caab6ceb41335851f", "T2B1_fr_test_basic.py::test_capabilities": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_basic.py::test_device_id_different": "960d2712951d706d1c588545edb7eb3f2718765e24c172d0dfbfe4b10b20ed17", "T2B1_fr_test_basic.py::test_device_id_same": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7715,11 +7777,11 @@ "T2B1_fr_test_basic.py::test_ping": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_busy_state.py::test_busy_expiry": "3c4520b8aadefa089195d16d37ebc6f834963a65fa4df8eeef3fb981d7c78615", "T2B1_fr_test_busy_state.py::test_busy_state": "c772773c3f7a94a889f997454d1ddd530b705f38d406965d34a74beba7df9ba3", -"T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "8dac501219f38847b56cc659e833106e24587a7cb35440b411bdcf6bd78ccb9f", -"T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "8dac501219f38847b56cc659e833106e24587a7cb35440b411bdcf6bd78ccb9f", -"T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "8dac501219f38847b56cc659e833106e24587a7cb35440b411bdcf6bd78ccb9f", -"T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "8dac501219f38847b56cc659e833106e24587a7cb35440b411bdcf6bd78ccb9f", -"T2B1_fr_test_cancel.py::test_cancel_on_paginated": "ff0916ae4448c4a453d72bcad8551c67d5361bba6d8c16fd5df956ccfa1551df", +"T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", +"T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", +"T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", +"T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", +"T2B1_fr_test_cancel.py::test_cancel_on_paginated": "60d68603b1bbdd9b041ceafde30fd6444d265b375dfeaf215212e0c9701d1a17", "T2B1_fr_test_debuglink.py::test_softlock_instability": "d8951e60aea2164863302838edccbf0f0b4e326062b3e02b8d366cc5e6f0ad51", "T2B1_fr_test_firmware_hash.py::test_firmware_hash_emu": "29f74094a536aee7cafbc2e63fb29084607787ab9351a9b74ab74b20a34c60cf", "T2B1_fr_test_firmware_hash.py::test_firmware_hash_hw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7753,19 +7815,19 @@ "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_msg_applysettings.py::test_apply_settings": "0ce53f3674eeb019f329302658ccc492d0858f384ce9a13b37a03cc8a9309b27", "T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "c1b835279bc81667a9cc57eba5ff1473093e144296592efd529906b32ccf0f91", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "816cbfb823a4da335368da1bcc29fe63eb1f9bc4b01eece1f184f7190c428acd", +"T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c2af499645a7ee44dcc4ddbd9e9df812493082162739ec035b406dbbc29dfc3e", "T2B1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "5356daa0967b68d5c9877abc1d376b7b2605835ad8559deeac25c0bdf2afc592", "T2B1_fr_test_msg_applysettings.py::test_experimental_features": "0f4c5e072ac6d8b3b79ec627c72c15ac39690ba89f6f29c1da95539362b2a0f4", "T2B1_fr_test_msg_applysettings.py::test_label_too_long": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_msg_applysettings.py::test_safety_checks": "6cc280764a02e46da93f042f4b6b2fd1ee4464a460d75f7c0fae38759728e4f4", -"T2B1_fr_test_msg_backup_device.py::test_backup_bip39": "1045c0e597b9307ad04435add487b31bb000207b43ef7299f3645dc323792cab", +"T2B1_fr_test_msg_backup_device.py::test_backup_bip39": "c8377359bd7bd73fbd3f168e775e3a27a52c6e33b620c58cd91b64a7c9d98838", "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "00ce5fda115418bcee02aa6e244d22a1b349041c200a7fdaefdf490504fa0161", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6d2ed2e061d228b716c3d501d183b39e6baa4fb67613288ff4a5c89ab5dad71b", "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1ba703c3e1603acad5a8a0291a8d6f8412af0c80df5de4bec476917563192b29", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d04c8c1b5a485c058fce121ac6788e9a5adf58d691a79b4a1be414a0911f0cff", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "f6bc8aaa670f08f91fb4a521809d0d31c72a6145b9b0ee2d0ac0c16769415481", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "601d03c364c2e120e55cf8fc53fccc59e272d0fe9506434bae8848e58b970804", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d7bda948e8a77810ae51b47bde75d01468c612ef55f9e5f8c0855217a66c79aa", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "38ffde2b77a58fc328bc4fc4e96cb95a63787aff475841f3c4299706f032a03c", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "24af19bffb7afffb515568f06b49163018d23efd6aa7d9c278fdf0179be5ed1b", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a88becfa0d3f3c83a5d6d492cedefdfbec57572b1c5956fda3fbbc926c0a90c8", "T2B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", "T2B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", "T2B1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -7773,24 +7835,25 @@ "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "15e4d4dc16d24eea2049675eddc8d29eb8bd77ee63c8bcd084b5a0c6cbee06c9", "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5364e98bc3e6941907557b4d563bd51b1dea6c6c2b789acd75cf81ea3b1f2b44", "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c3376efdc912344ece8840ad8df189c89d37f8869a0badb8e899bcffb27bba12", -"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "4e160dffa7921fd8eac8505f5c705bc30706ff9506beee4d48cb05f6c4293434", +"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "311e8461d17fdb92fd1a6d29e485973a5a0bdf6faefa798f18dd742e9b6c98f3", "T2B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "5d9102a9d47e0fe4c2a89b56d2bda768787a9a6170fe95f15180a023a0da4043", "T2B1_fr_test_msg_changepin_t2.py::test_change_pin": "16eda873ebd99eb3ef94ab98187cccd6fa6d630ed2151b385d2f96ad2ffe7a10", "T2B1_fr_test_msg_changepin_t2.py::test_remove_pin": "248dad8c0f796f0bfa8f24c1213ab207a2032d5568ca714707a9a42acb377e1b", "T2B1_fr_test_msg_changepin_t2.py::test_set_failed": "c54eef85a1d0dc450a51346dd3d7427dc351f24c0b2350c878cc08b48472476b", "T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "a5f4bb1f4708018e27cc69c8b44b4af3a1933b57dcb113c2214b4d0caf4b2b4e", "T2B1_fr_test_msg_loaddevice.py::test_load_device_1": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "2a44c716592eccbf987dfbed505571bd5958263cdbb43622ec592c9d38061474", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "90c610ca45224a9eec9d80e32bc8e21977c6945e925470dd49aace859e45f01b", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "e461a4be23ac97e533e270fcaf534e97991e03ced635b7bb07a937b9c74bcde6", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "97b3033899ff61437a5ebd4e79ecd3a8bf1c11a4194d7e4000ff4268a2775524", "T2B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "226bfdaea3436b63d6219c91b44fa3c83433e5d0825ba52e38f7023eb206143a", +"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "7f93eea2cbfcef42295eb67d50d9562dc76a90dfee9041ff05bcba60085d3b82", "T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "960d2712951d706d1c588545edb7eb3f2718765e24c172d0dfbfe4b10b20ed17", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "16d97922df63ed6436fccda16e7146a4e308749a2eb324501bbba79a92dd5ab3", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "16d97922df63ed6436fccda16e7146a4e308749a2eb324501bbba79a92dd5ab3", -"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "d1b42b827ae964a8ee33603059ba1b2ae766d56678b5475a5c8545d8609b3f64", -"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "d1b42b827ae964a8ee33603059ba1b2ae766d56678b5475a5c8545d8609b3f64", +"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "cfb9e3e4e192b4e4be3cb9589e3f89686929030ceea7fe629a0c10612886498f", +"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "cfb9e3e4e192b4e4be3cb9589e3f89686929030ceea7fe629a0c10612886498f", +"T2B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", +"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", +"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", "T2B1_fr_test_pin.py::test_correct_pin": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", "T2B1_fr_test_pin.py::test_exponential_backoff_t2": "d93978c7b01dcc3819595a4f76343b227fdceee7e4d70f5b14c2376795db027a", "T2B1_fr_test_pin.py::test_incorrect_pin_t2": "f05b31710bfca662821c34ad797a3b53163729e76fd79494a19d80d56ce89a56", @@ -7810,25 +7873,29 @@ "T2B1_fr_test_protection_levels.py::test_unlocked": "a60373cba99b534c687d3543ca00b1a1bfe152e758ef2471766ad75efc4740b6", "T2B1_fr_test_protection_levels.py::test_verify_message_t2": "3e88a839e35eeb0948de1aeb83ac8f06cb91c5a8a4517f488d4e743d2eb15867", "T2B1_fr_test_protection_levels.py::test_wipe_device": "63b8efbe636c36ad664ee33d5f8fbaacfbedfed2236096f3b08e02749f5fb89d", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "44df9b6b2be3af609e30330da20e8768fb486d8cec817bdbecdd5823d6ae2e7b", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "efd213af42e222e07aa6ac4edaf42de619a253c3a6c38bfd11b2b09d948ca17f", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b9d74541282a9fc477f4c162dbaad33804f93a6187b1157c165bba384b3e1d52", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "56ff86599556e4ab457f15954901eb91595501d53032967489a737b18813ab02", "T2B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_clear_session": "f217db103a83feb3187047d23f5ae3c9fa2f9a87dde2a349f4fcfe8d666967d7", "T2B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_derive_cardano_running_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session_only_current": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_session_recycling": "d1b42b827ae964a8ee33603059ba1b2ae766d56678b5475a5c8545d8609b3f64", -"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "5e9b18c7410aaced4e014083e170304058f05a4cb29798161cf7691e56beae1c", -"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "55ff1f40847d2a014e3d81bb06615dfc8922a3c3e8357df0580cd4dc7331951e", -"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "2dd7d2522e7f31a362c14f4aab364831d68f1dd121bace27401881f2595b9ab3", -"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "c03324747c52f060f79e20294461e88e9fcb429706feb95f4daf27bd3c29bc27", +"T2B1_fr_test_session.py::test_session_recycling": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", +"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "88d6762d1e13e6e617f3177f2843aa421405396c9bbefc03d1e3f748830a8177", +"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "c6db39f5bfcaac02bdaf93487749e839461e1e8f689261bb6aec2869ef957879", +"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "db3056ab633efc102ab39f94538c32a7824644873f0a2ff88c8a623ebfbf904c", +"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "aa8a0486dac49cf1f43a1cb49d9c3641b24ca8270c847eb41e306f8c7dab0f6c", "T2B1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "80dbef30aa8dd509fcbed8444cb3a5defc748f9672373ff50a5675715ef5993d", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "53760e49a6b34165b510a6f8f0882d3c61d466872067a3409449d2113af2247d", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fffcc2eefbd6456c9784b1689b34b9982c2d8f283441b8355521855e386ad90a", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "cf7fddc28796899bae40527367dac686f95528ed819d58872d06ce63c3a32ad9", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "2accaab9838ca695764b3e77c1baf0c6c4d998e98f85b07219e094746dac2ad8", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "68533111220b8811cad51ce8f64e7837cc2477b1c5c473fb1f34423170844a04", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "68639d8fae615da39d57a25316cb057fc09061270d15d54ce4b86bd79626d910", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "9323ad9e2ce2e8bd90e0bb7f9f5fce7876e3fe6b7465f2ffaae4e8f13e0fa394", +"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "431dda9205fccbe426660b175b30fdce831495c2139ca79f60d77a3a34762b06", +"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "79818aa7b90b046f27085ab49a080ee8499e9a877f6bddac7af90ec19d3d6355", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ba9fe5b13953b72952449179d717b1dc52e6450b934c341fee319247281b663a", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9ad5b6b401a2ce7676b4cba10b6d74abfb4d9887c42cd73cb3487649fbfa3a16", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a530de477c0377f1f44dcbd0f42b3c124362c996a72baacad110224d94b531ed", @@ -7868,12 +7935,12 @@ "T2T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "e0d8d418d171904d809c7a30b2c9804da384463701c628df167e32d65a82ad5f", "T2T1_cs_test_autolock.py::test_autolock_interrupts_signing": "c66ac8d285be5876d63ac3c75f078738eb2a668ec1cdfdef11f8d5ea643f66ad", "T2T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "3fb6fef6b48ccc9523659b83e4e1d11e5d7f28a18f2ce6d74a58345333df8496", -"T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "a49f1063caaecd342dd10a75e19c7ef351fb2dbc78cb4289c67ef70f51b12d73", +"T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "893e601e18cef9da4f7edc3e0f4842c7f3c59aafb6df4ecd63551477f333d2ec", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "14425620334e05b9f93534c9bbabf2a3d5300801085438c84a7f793727ecee65", -"T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "368df46fec1dee22dfbdc3975478143c805638c37c02ce62348759e0c3e61155", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "868b066749ab4e93523507be0d67d7501d9cd8ae8ec4628525aa6f07623186b4", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c3d79640ab704ce2c4e348a6beb7b4d291603fd0dfae91143d96719d5452b985", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "df144f6b1912a3de13d678a6f5e3f370a0ffcb5487fa459ba714c4ffe6f9183f", +"T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "55788725d6cf0d1f341c4557e343a0e3b9845c61e0d297b1d7de5b9137f91bca", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3637f9f8c5a37009b9f4c0ce0d50160b1c30fe8cbfeadd5c437c625cafa0876a", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7b6cb8cf44add7a322052d504d0e769d76ebc488ab3637e26978b317ae6be200", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "5572ec8b0bcca3bf889a81304c8855e443a5b959bf9aa7e0f50fbc31a30ec40e", "T2T1_cs_test_lock.py::test_hold_to_lock": "cae9be494e1bf8cbc1b0a37835e6b4892cec88757ad2b0e4e68f89f3f1f97e1b", "T2T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T2T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", @@ -7903,26 +7970,26 @@ "T2T1_cs_test_pin.py::test_pin_short": "3ec2f4fd92e7376200ca08ca0859a513237e83dbe34bd13b0d922248ac338212", "T2T1_cs_test_pin.py::test_wipe_code_same_as_pin": "2fa2d084bbc6b7319fd515cb41f0c878055f67a4466d3b663959320253992862", "T2T1_cs_test_pin.py::test_wipe_code_setup": "42b3bb7a93311a5e5876d88fb02a20d829bb8b2b6ada710895ff9d8242f8f9ae", -"T2T1_cs_test_recovery.py::test_recovery_bip39": "e8fc42659087a3b41e0e2db70cb3211895478d20fe7a775675ca6e2c06c1e77a", -"T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9fce49fe5cd46312732a8643f9f0dd2694b376722b344d7106d3f4ee57f30a57", -"T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "c5e7eb0fb076bc6f1122a463c3b05c058dc3d59fed14d36e97b81b8bc34ccd15", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "642f8cad1b9cd84827278c63ef2aa51fef50a4abb5c147d2f2ab995390a9d00a", -"T2T1_cs_test_reset_bip39.py::test_reset_bip39": "537205ff560808738cb7f92a975db4f901822513dc6e04765644119009b53983", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "10a2069bf16df7a0c32b5a5bd06a5c18ddb2c8e0fa537bc4323dd996fe863147", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7acbdf0286d917ead84b51545a6aaeee1cef56aa7d04599313860f2cb54b3c4b", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f3b92d774d7e878102d7a82b731a2cdc8d6288360537bc8b697889a670c06fcc", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2ec384964ad41a1916ae061e430d5b737e66349b28100a261ca80fe6d73be057", +"T2T1_cs_test_recovery.py::test_recovery_bip39": "58e2ee5e462f2e6a8bc870e25c48553a8975300571f84ca95dd863ac01053544", +"T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "f08eeb1b8fb36878fc420636e8f94f26eba2f94c742146d5bc71bf4223fed350", +"T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "8e44525da87337f4535a5f25f0ac23a341b49c7672e3c16ca086c6fecba3a4e0", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "563a4f887733e4a5550aa1cca1a30a6fc38dcd2315a434762ac7b808304c6070", +"T2T1_cs_test_reset_bip39.py::test_reset_bip39": "796d2366b938ef928c4f4021157c15b7ec07e343daad5a0ec373ecfdc921a856", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1210e840ca4853cfe1b2d1458e0c5e4df0872ebe36bdba6f3ca4f62989e01f92", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a1977e1ee6f6fb75127bcb40ca551b554acba70a9ab18f0d06d765fb9e855afa", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d6aa8816a67276d50f83a4582ce49a7709ba985cf890813d35abb48e7e946399", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9a5523706ac194b4108b98cec75bf81e383998355d1fcd55a5ce97ffaecce447", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e91bb83330840e2691d3faeeade1b43621f3cb144aa8f38aa425f8e00f7d928", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8078df18e03affdd08dcba3798b2f81c4e339d096562023b75fa1436b2fa483", "T2T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7ca31effe094026c9e00a78e2e5117e199e5ce5ddf4a4a869899a17193706ef3", "T2T1_de_test_autolock.py::test_autolock_interrupts_signing": "e08bae0f83bd09aa9bca336daea9038493204d64efc580c4a75018b78b3dd7bf", "T2T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "0fab68ea14b5c88854af8d91af858cdd9dcb4ad6facaf9e795ed827498db5131", -"T2T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "0e58a536d8d369fc270d3136647158221256c7bc529d49ff86b1596232952453", +"T2T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "7b01e4feb90e4327b2c9fe3ddf70ed56e8c68956a969eac065906cbc8ed4bbfc", "T2T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "4e99f4dffe668064111f70fecba063895cd23f9923e6f164eb00f648fe396c83", -"T2T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "900cbf60bb283d843b99efaee0e6eab9030ebbbd6fc474fbb6dc2b8cc5cf70e8", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7aa3751b7e91c4e33de266419a712422edd15c5784ed9e562fee1ba3f7338255", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "346ee2f6d71ce8ef7d32c3f9b2850d4d91dec3dfb6092542484ae3dad59840f6", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c85d110951c2aaf83bdbcbd2efa549c07d01564f810db5ad4a620cc456e01c5c", +"T2T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "493f869f1ba0294330601931650218298597a239222ee154f87079e6255cdd33", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "79559772e80dc90acb5cd743e5a2084b4ca4ed876a07cae2b2a57fc977ea5a6d", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b78b3c5c3d13beb14739bc7a62229488f1398063fd38bff7b1c7732f6628c4de", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "d8f3721892440136a606df1329de5bf08f6d6023760a059875df309052da750d", "T2T1_de_test_lock.py::test_hold_to_lock": "4254a324366ca37a8e3cbf7f4aa1b7bcb02f4d631ac9e4fbca50a2ed60131858", "T2T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", "T2T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", @@ -7952,24 +8019,24 @@ "T2T1_de_test_pin.py::test_pin_short": "8b0f4c727edaa2c74a51d579dcfd5df55951d4702a36157983d643a9db040877", "T2T1_de_test_pin.py::test_wipe_code_same_as_pin": "71d0aff0eba3139965cba57698c4121acfd0750bec1f28d0468b8e9e208a6b04", "T2T1_de_test_pin.py::test_wipe_code_setup": "fb81ea53b923a2eefc941161dcf488ec521f6e4f52c2c17a5555fc690d0e24c8", -"T2T1_de_test_recovery.py::test_recovery_bip39": "0e420d2c4ce7afee8e6f53557bc4117e4f93301d675c5706a46e9c46c8330a46", -"T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "385fd9b6db99191f374ef6bf1885769270b04ed4c83b898410a820f5c1bfe795", -"T2T1_de_test_recovery.py::test_recovery_slip39_basic": "44fa35cc2ffa836301818fa5c9fe5823e485da113a3329e878715bafb51ec154", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "5e752716e692f11f1f7f77278c082eb4e430f7a2338625d5f669fbc57c1f5c28", -"T2T1_de_test_reset_bip39.py::test_reset_bip39": "f8f3be3e3f9a4aae2d38861d9a97ab186f65d8acb266074743a24c17e92898a2", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "6da2196b020cb7e6f05c32e11a0e9e2da6e501bb0ecfffe5974919158ba36444", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f85bf415b444eacb4ae61ca3168dda8a11ba5b368171ca0df49888caff436680", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b56b3db59f593ad3d3d554ee13f062a6c519022931b87375625b4e87fecb7f26", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "0df34b5fe4215e7a9b40e5c5616d3a68037c0b8d4cbf7acbf7b56a28b20d570c", +"T2T1_de_test_recovery.py::test_recovery_bip39": "9b1c68e4b89a8d328b7ae32025c2a9cbd3438aabab03d51bd7be36b679a7e17b", +"T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "1c17a4527106240500aab5280074afe3699baa2351c006a835a6173654fc024e", +"T2T1_de_test_recovery.py::test_recovery_slip39_basic": "607e3bc1a785b510fa6a27e386986e168fa572bce9ee352dd74ee1380570bbd3", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "f40ce6f97fbb5e412cd21dab4569d87ea1fa554fd02fb1e54f267e0ecccc6346", +"T2T1_de_test_reset_bip39.py::test_reset_bip39": "e1e62b9f04fccf0fbb14793c83da9df4d8de8bc56083db0d41e342d8fd5f4028", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ede09c533b46478208c9c0d0bc328491f9dc50e5ac19a1bf3c92c1a838bfd9f7", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4edcdd947819cc9e137c013b0899572a2aebfafaa74af5300ec27dd3c90d8541", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "05af36259b8d851269264ed479bb27b5337e5822bd63a32dce8544006252300a", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5644da5d223636b9a327924caa2aba449a06b81d1bf7f0deac377cfca24d29f6", "T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "fbadfd0bde79050231b0373fb531ea769736931e7d5f7b097ddbcc1c6b5b2c82", "T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "47674288baf2b17f3ba91e7503490901f021f448ae759a2fd25762090d74207a", "T2T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "e47e94ec1a4ad82bb80992b8b7079f71148b625fcf1424cc6c4f7331591e1c6b", "T2T1_en_test_autolock.py::test_autolock_interrupts_signing": "8ad95dc90ecd0d73da136e8e4a930593e98221e281fa048b592ea79cf8a46a20", "T2T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "ede8141b923e58e890e80132a320a8e9664a9fc3a291ce2aba093e8d9f2da1eb", -"T2T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "a23e23b20dbb465435e5d057820ba847ecfb142089e48e2d09580562a887203e", +"T2T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "c4f65d4d2e2d1a075b97c73e2141f32ee77bab1380f02334549ae9e657762cd0", "T2T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "db2c793bc93acb5228c6269cbf13033939335174e867d187cb2fabfefcfa89dd", -"T2T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "47c1bcb6f079ed8fb296501c556d0fa53a997a611d38273ad3fdcdadb2306db9", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "0535768793fd1387bc524174e1bb3379635d22519af10694873be8fbb175fef0", +"T2T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "460a0baa5bc5ac0b02bea159d26b0f424e81d516aed994dcd2f98aa1c60052aa", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2acc5b28c96d237f63a2a73fc08d071a27eb0cfa81c0aba16c21c18f051df344", "T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c013b611ca59b9b951ba77d438e6e0e793be3356286570ccc84337dd69154742", "T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b3470c2b2906b106adc587b7ec2a5c0d75152d95f299915ea2b626e3741d138e", "T2T1_en_test_lock.py::test_hold_to_lock": "a5739f92ae28fc57769e444408ce5b58223d0d33b368022ef78ea68e0f8c9b80", @@ -8001,26 +8068,26 @@ "T2T1_en_test_pin.py::test_pin_short": "bce1bf7c07fb019671e939db931457dec73d66d25b6f86daec704d4e43931374", "T2T1_en_test_pin.py::test_wipe_code_same_as_pin": "f13b6559d4d73c2853218fee85dc951c41c5b4e3867ee0e989443940233f2f96", "T2T1_en_test_pin.py::test_wipe_code_setup": "3d6a04cc7c8d3a061758a9559277a548bf4492ef59afd1d040693372d197383c", -"T2T1_en_test_recovery.py::test_recovery_bip39": "ee619ed8e0cf0fbd75a685830d1873e23896dcca6477b2bbf39eaa8d9b4c8531", -"T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b41a576c6e879512c80337f5d58fdaa93d2259ed42f164f808e52e0d3ccf1211", -"T2T1_en_test_recovery.py::test_recovery_slip39_basic": "81bc28e27af3667606f0479720e4dbdfdb97805b9d94a6f3dfe9d9cb3b045c65", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "7a36c6a237b8e7d0cce7a6fc7e6f20975e1c9abe0ed355acffde54dde903610c", -"T2T1_en_test_reset_bip39.py::test_reset_bip39": "e7d4a85f9ebfaec35006a566e0a25167f276620d50d847a08721da861cac725a", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "259315387e0837ac718654d9180f5730370fa76d77318d620288885ebbddb0fb", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "878b828c11353fbfcd854fd54ed172dc7d395c753195d5444b5b57e3499e2bca", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e2b93deda1df90b0123f6d03122ae922965e639b2b26126f78031404f2c6f686", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "14a40517c5ef6c36ac70a6a8b3002ae76f945d29e4cc980bb595be864f771f58", +"T2T1_en_test_recovery.py::test_recovery_bip39": "9878cca47056023ee45e4dfe09dc802897eaa8fee49113d63bc9d4d020121220", +"T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "c90651925bf52dc612ecfb242b07d30499d0743aff5d55005d39068882694523", +"T2T1_en_test_recovery.py::test_recovery_slip39_basic": "d817d1d2c1dda9f7ddcf7893e94061139562cff3f41d2265ef4387fa6e188fc0", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "97d76ca6c74bc46d138b8307a06a257562f8d8b60072ab7d404186eb11a4630a", +"T2T1_en_test_reset_bip39.py::test_reset_bip39": "24750faa43d950f4c1cb503e800eb80e8f4ae97a521ce60b3cfa82fa662c96dc", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c902e8c822bcbc93b29678c67740d3ff79bebd137ce61da7947692406794eeb7", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "808f9be629c08ae567dab19cc902d41ae95c7b542e18c5bbe996d7d14972825a", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d5d151b40e95602e734b738a067f96882c2162ae7cbe2cbcf8bc910aa757f6ff", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9b20433215b85bf3c529d21439773bf66fdb06fce737e6339e393aed75d01ec3", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a6c27b94205c9dd53a817612fe0abd85743079be6ea00206626be171e1aec455", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e32e681c59dddd9e0b52d559d2f843dad022662fc56507c1ef76c1491aa8728d", "T2T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "d3a25e5f32fff10662159ae1d42a057db28ebf7c331d8b1910ae8e0e4e74f29f", "T2T1_es_test_autolock.py::test_autolock_interrupts_signing": "964ddc69ff8af88c8288348f38c175fd9ec44d327a184ac5d1a50c30407bd2ce", "T2T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "fc14a93ff103bbea087b29fc1d3c4115e6107d490021d268d3c81bbb9ce9e30a", -"T2T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "9fd091e3fa094c27590e10ae9644ebaac8fc32502bb070981f007e1da3c41b10", +"T2T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "40b6d5e8d867f10368a871dd94ca2fcfabc33f6dff580eb3e44a439c857c3796", "T2T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2ab38b584b868bbf22501c70c13bc4fec9c376b65cac52cfec63836a98f2b703", -"T2T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "37a764a71200043f47213df663875e9a445b989460df834c4d08b0b3862f5a6b", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5073473cdcb4a10452e87b8b877d8b135c85ee942f440474d83a33414fc4cc21", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "291bb30f0285ac0c6d94c47829a4eeae1085c0ccb239fea798cac1790c15b4b2", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "353e2547c0d3b9e50635735f4cb614a5115d9cee46d5a992d6a053d843aa8fa1", +"T2T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "b6077aa0401c1a8a52f69272a0b8a1e99a4928a9cb3d1fd7c7e5c3682759ed49", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2a2e244e53664db0da2d51bc61f715eb3aba64eb9c55a408788299508856ab4b", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "2f6564c72e1aa64f4840c230e51d8306d1b088406f86e136d29048e2dbd2d3dd", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0a162266e7e45c698138e228846681c12a8028a01ea4d7659a63c7a30cf7478b", "T2T1_es_test_lock.py::test_hold_to_lock": "11c1e5e33d8e6046326c9c30f61216130a83ca9916172fef6808080bc9c67216", "T2T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T2T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", @@ -8050,26 +8117,26 @@ "T2T1_es_test_pin.py::test_pin_short": "50c4fa423ab0f590e7faf06e23877d9ee33d438c9add671487696d34e0f48e77", "T2T1_es_test_pin.py::test_wipe_code_same_as_pin": "a0d0fd07943c787792f659571549f1c3c716e7bebede93d5e00ca1032748e5d0", "T2T1_es_test_pin.py::test_wipe_code_setup": "b1baf2e578a21aca4a130a3903f9ae51b32c0639d89d1d862284d348925b2944", -"T2T1_es_test_recovery.py::test_recovery_bip39": "5d80d9545989e7fdf8f8d25433956f1a0b527fa0931725816c84fa9de88597c3", -"T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "0e74c799e720952caf98271764e8151da2f3f79a5456a1b8fdd4bea13ea780bc", -"T2T1_es_test_recovery.py::test_recovery_slip39_basic": "db5ec08707ea408f9d08a8f0cfc42aba44358ee6ce94ff73af542ef8ca5993ec", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "2631bd836f3eed96c21f211a604d83ffd4f9fab24a50832d2e8fc612741067f2", -"T2T1_es_test_reset_bip39.py::test_reset_bip39": "644226a8736f10de7878950e41d189b207474a40022365b87ea1ea24912c1eb3", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4688e4198ef55ff8253965b16a612845cc9c29ae3dc9911723ac9c3d170738ef", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0af93fcceb4cbc33d6a3bd9022bc3bc774cfca36a23bf05d6d181846fb3631d3", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3068138acabd7f84fb8282aafa04643baaa3db4cbf45266b6946bf9a081a69b8", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "91b627660b25984e30f1f116b00c5830e380958b42b779886a70cb674eb62154", -"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "b5d12766c3d49c8bfd80548dc1b18eda5a88e7799fc7002c1aa17bd29fb1b3c9", -"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "4b7b8f476fcaa0d38bd1621a4eb50ed3c92f2bb65be12b012a9e91dca2ee0a61", -"T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "b93dbd30a75a6aa4ba3d6c695e04baa811c01d55700b386fe446b03cddcefb86", -"T2T1_fr_test_autolock.py::test_autolock_interrupts_signing": "ee177079ac39c417f23c47085b51da722c6a1c4587d68b008f96f87444e05e58", -"T2T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "c7f4c0fd64f39c2cb25fc8e6402d6c5d5e5ae7bc2ae46f0ed3306678cc859028", -"T2T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "6341145caa8a438f9c4813d20f4fa14ae692dc927cd1e6418fd242fd089b7330", -"T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "12e5ab29c4e6a7acb823f50c8094476731e1a8325414107d29cf1e2294d40b4c", -"T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "8ad2b77fa910ef4b5a950a3b306be275f0fbd99cda6705b8e08c7381abd4784c", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1cbceb9786a48f6d9caea54b2c2d8d623e01eebaeb26d9bcb432086d1bd0b849", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9870f6d27f02ac02769400aeb358b9485c7d16f3781a74c614cb9980f31be8ed", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "e6cbceefda2771cf2db7ab5e48c92e1e853eabd388760b5d2a90cfce16536851", +"T2T1_es_test_recovery.py::test_recovery_bip39": "a82be5ecbdf91e860636537758eb19f8aea27a76e78b3c275077bac4982c52ae", +"T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "12a96269f52788419523af93d2f34bf2a8c72e9116c6948c5f81d296b5df8f14", +"T2T1_es_test_recovery.py::test_recovery_slip39_basic": "595438a8dd044db890c02231f473d6c168a833585acfd46dbec0334e70a6bb96", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "fd1fa521d0f66e45f654f8db906c3ada41bd48cc869455cd454bcb9a34bd0c39", +"T2T1_es_test_reset_bip39.py::test_reset_bip39": "b12db06135c50bed8492b757cef803fe6ece5e4e571917dad60e6f69c75e63d8", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2c68e0cac7449ad644cdd60be655803589f62f4d02496425a2848783489939c8", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1ae2de2a191816d2483b733740da6f2b139f1e925acf0e2766175e524be11803", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "89553523cc47f69e74e1b715fa50e36558b4e17416b5d95823f90c9b1228ce7a", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1730f41f208c631f56bebbf15d990ee0d219daf42fae8dc8b2164ef1fb54cd1e", +"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "0499c57774a9e7d2a18e66eecdd6f97e18f22ef2eee1cdf63b49a22e3a60cca2", +"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "392bf7bba045857907e19d5d67f739ee561bc3d267f78a98704e47a68789e9c3", +"T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "af73e8e574ef84c98bd6859df5bbe27968c0e9a5f81a1e5e442a04f1eb567352", +"T2T1_fr_test_autolock.py::test_autolock_interrupts_signing": "1c5b47174c13e08952840e0364d00dbe5cd3c2192a322426f6ba9d84edc155b0", +"T2T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "66f663cfdc7435a319ebb1eea24e95f0192d126ea30e6a16378fed27fa2c2994", +"T2T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "c8a274db81effeb89e84da805b2d35f4fa102380e8449fb7c54d5d8f6463fddf", +"T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "f38f6472b8844173866ac411b877ac13b3c7532c3e1bed333e372d29c5200826", +"T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "53c0576723532458534e7d221644f5ea12a25f0474ce20d81b29833ae15cc9af", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4d4ea9d6b060158149a8fdd67469c8a3b285329a90e387f24cdcfd44256e6c8a", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "22ecd132a59ca0974db0db8ae40f283804c025ce5cd94128de96d76340ae8c55", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "723cf07ad5dd82763b81d4ec0f0375ade7e2219638784e6bba1dcf95891471b8", "T2T1_fr_test_lock.py::test_hold_to_lock": "9806bca2f87c93ad68284e812c702177535768017bccce6e6264ca4dc63b7c30", "T2T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", "T2T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", @@ -8087,27 +8154,27 @@ "T2T1_fr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "2338104c8aad606e9ccfa0774ebe33a688c5b9237289e8d08de16fc6d6c19426", "T2T1_fr_test_pin.py::test_pin_cancel": "d042a69c511b077e6feb819da7234dcde385179870b46f968221be395a3cf16c", "T2T1_fr_test_pin.py::test_pin_change": "1bb622c680c0b28d7a95a98fe297dd9ee576871ddc0cde8b3664f92b66b0d5de", -"T2T1_fr_test_pin.py::test_pin_delete_hold": "bdf102dce885c7fc6a4665171db02bddfe10027e52bbcc915b447091daaa5486", -"T2T1_fr_test_pin.py::test_pin_empty_cannot_send": "98592ab56f8512247ae8bc860275e779d6fd3c3c14c74e85aaa1be40dc0d8e22", -"T2T1_fr_test_pin.py::test_pin_incorrect": "9466c60135b75743cfb89d278966e88a3956f6a7af13a2dc223747d8af46a9db", -"T2T1_fr_test_pin.py::test_pin_long": "1af63dd56d6d6b1503b01fe4a5ad894143fa9793d9376532abad4885871731e1", -"T2T1_fr_test_pin.py::test_pin_long_delete": "a6f9a12ec7b38b04cf10381abfefd30dc5abedc938562299cc9f2172cfc8cb14", -"T2T1_fr_test_pin.py::test_pin_longer_than_max": "faafc34203ea0ca2e06703d0f6cc56d7099436e722e1816b88028e9884997044", +"T2T1_fr_test_pin.py::test_pin_delete_hold": "bb2293941cb22106e2c4717af9713897ad4674918748742f34d30a978b3329b4", +"T2T1_fr_test_pin.py::test_pin_empty_cannot_send": "f84a6fe4df15ad1708deaa8f4ba9d02fa5ac9539cb97aa7ce094bde6999d83af", +"T2T1_fr_test_pin.py::test_pin_incorrect": "8565533841bb5a7f10205d6d2f5b5a944f42e25f47c97a39e6c958e9589d34c8", +"T2T1_fr_test_pin.py::test_pin_long": "e6acc051b875bbc2f0455bc12853f7b0947993a6f244fd49fee3a83f8102d437", +"T2T1_fr_test_pin.py::test_pin_long_delete": "49fe0c6133b8fb8658e7efa7edbcb027ac40aa09b90bc394655ee9e5a6d4c8ba", +"T2T1_fr_test_pin.py::test_pin_longer_than_max": "5a90161aaf3322e30cf311099cfbb8443fcb389f8ea8bf9b48d7fe21e0104bbe", "T2T1_fr_test_pin.py::test_pin_same_as_wipe_code": "2508575feebdfec80f05418744e2d9234f5fadb81a476e9f34029612d195123f", "T2T1_fr_test_pin.py::test_pin_setup": "1b5b1d136d01553225dda664fa5867d6a03285fb9a1c4dc597921dbd2cbab1e6", "T2T1_fr_test_pin.py::test_pin_setup_mismatch": "68b8d7176492ade4cee98bdb8a8b30cfe2870b2a9c7a69edd8209690399e21cf", -"T2T1_fr_test_pin.py::test_pin_short": "98592ab56f8512247ae8bc860275e779d6fd3c3c14c74e85aaa1be40dc0d8e22", +"T2T1_fr_test_pin.py::test_pin_short": "f84a6fe4df15ad1708deaa8f4ba9d02fa5ac9539cb97aa7ce094bde6999d83af", "T2T1_fr_test_pin.py::test_wipe_code_same_as_pin": "292359ab8f71d63fb4a4143c3883232fc78ab5515762ca42f81fb038c190cccf", "T2T1_fr_test_pin.py::test_wipe_code_setup": "9dbbf390bab845a1f4733b5a12792b7d9ec977fece9ed477d9c4d95b18da0456", -"T2T1_fr_test_recovery.py::test_recovery_bip39": "ee49084821d8836b2c6774c80b6f382af28bed1e110118b96fe55697cf76e215", -"T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "5bcecb9c0d7ff67fd388e13aa5daf4bf849a886efe7b9ae64a4579b15202be23", -"T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "676c1eaf8983dd9d07e476303f2c0370006740a4c2a34a11ae68735fdfdd3ee7", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "13d382cde3a90905602a48886ae69dcb88f309bc73fc2d55da739ebfa11f5ff8", -"T2T1_fr_test_reset_bip39.py::test_reset_bip39": "5d9a35bf67c9520002ee41abac5c556f1932b9fc2073a259c3a8acf4443fc64d", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d1e765a363f3e24219cef132d94ecc48d27a5564ca90b69a2231f7ec0a6ce89a", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c68e1a6538bf2b96293b23c4482f50f9a6de907ca3f0744bb88a74618ad9d306", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3a0a889bb3f40be9f255ae13d88451703b4a0d918c8109f26708f9c84680815e", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "89271d47c34f3a47f021be75b2ff58f0fcb2e965953d93ce2d1b2337305aa854" +"T2T1_fr_test_recovery.py::test_recovery_bip39": "2d933f5cec5d4b6b6ea329fd0b9cbf8b8665f5f729a52e1cfa43b7d34efb6660", +"T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "066f91f58af2e3d3e9ab33fcc31673833ee26675f1f5aadfd5cc95f75e7f224e", +"T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "c45774823c8c690d9fa7af79133bfd3df9176bb276f7b28edee9f9f37c844111", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "1d32d5ec188b1e26d307db4daf3f3e963c3d668a22546a135362cd2d9c2237ff", +"T2T1_fr_test_reset_bip39.py::test_reset_bip39": "0e42fbc13c2f2eb55e31b1e7318d5256b7c3acbffd5c976ff41739e2bc67e0be", +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1af6e282df8052a01a894e2661f89285bedff053f5cbbff3aa328fc369f1096b", +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aa033c5921dcc92c1ec3461944849509bed236f55b08fecad8986a93bea13e36", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f395af5333eb2867b1a40c2736e5a9b63e2207e718c210d5b740a65ec66dec7f", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "13ce1ae284cecee800f4885f21f83e1c1ca1d368c5f2d13763a9a35d71b47f37" }, "device_tests": { "T2T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", @@ -8610,8 +8677,8 @@ "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "06e457d707de5058f0ace55c360a5c9c2ac6ac395ad4d9c40a0bd42ce5bd6eba", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "27e5475624b875a6a0cfa349b8fbd274bc81f9f5770e659046379f9ab3bdabc8", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "ae638f29f9a7f1b7ee814dca5ea7aca94fb0cde6cd45a3a154614e036cebbe12", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "a297c002d533830bef599c02fa6e6b4e054597da986726ab23d98b0b25611d99", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4dced33bf016d2ffff4f4ee7f57a124773f2c45a2e5e6fb9b27c75cee8caedb3", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "61f2db6de871aff94b8e0b962552e559c6da0e1da8622c674961c495bab0c41d", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e2577194ebe164921def920805d7cbffd6fef31ef52b5c4fbebf54102f1e2195", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da3d2954cf9a9593e3c0823447d68517ab7b87c3b999ee38ca384e64130f234f", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "10ebc3ee52cd5d07f62a783f15d83e5e97189a612b7758779ac4b447501e2a38", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "2599d72c58ba36860ca4370750f581211f73a05c77e5e7c10e5ed1ba5794cc4d", @@ -8641,17 +8708,17 @@ "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "932750f63621b656b9bf7ab1c66f4d34efa35c190b3b593809dd1ca34ab7269e", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "07251fb2bdd389377bed64b5950db0fa0ce65da99875d2340d4b3b283e57ca87", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "4e8072bfa4f1341a05b75d5bbd39116b3dfca716ffbdd8c9bb203d967c9fd85f", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88b4ef87509bec1ba8b7e2285aaf22b63d4ad5b28e2d6d635f11475ed6e20ef5", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e66cb8b4ba987ad5e7bb438630744731f11c93524544440d3cdea5bd0647e3a1", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a0bd69054584503331fc491042f0b56e1fcaff691eaabb9fb7efebe4058fbbee", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bacd06dc8ae51b9841816da77fe59fbe7c1a801e54a829eb227bf54c6189dd38", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "b61531030996563881e5e62b301481d60c5c8774bd0198f5fbfac755d2366f0b", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "31358b15eb2e4624e2bfbc01080ebd7530f596431a7a5b5e196b2ca94f8d7ef1", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "fba5170ae62e73886e2f95f80e7b010b1208b897128d670889c02bf754043f58", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "d4d6f3ca426a8e8424f3d9560632aec15acc3590a69434cdc4fa9f252c73f7cb", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "092f623707aafdd179c61e92fec27ec58b7548179f5047ecda9377a6660f614d", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "f0201138c861d18b7141e6d67edd3a4b335625cbd53665cd6d2e1ac5132b81c5", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "26d53add8371bf36fa0d1978f8b2e0e40365a88b8397950b3f40e60be135288b", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "495837c4c660ab983c3454996766c61c01f98ec8381d69bf82b1c8baf58d09ea", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "25141226cdfa962869fa32c3a5d5b5f3bb4d6c1c3821e368ccac782377c0f875", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "30ff20cbdb009ceaf2dab0dd22c97cff13de6746e30d8b0a251b502dbac1d44e", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1957d99baaa7b4df9b5391e7379ee5b1ef2bffa850c569484cbb6fbe86994faf", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "c7fbcf3a44a6a072a69d05e891af4cca0abfdf1a89bf3a86daacfdc00998f34d", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "50b78c2a1a0283cdca0bb20a982403763e7694cf8385b4a1972c67759e2fa0bd", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "8a0000bac3d9bf5b41b4eac9b9f3ba4b4555dbbf9a04de0c7d680bf406a59ad2", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "a4ee98095613c42aad79adc78b8d4617fa0c181af97fb8ed26ceae43dc3d9ad1", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bd80abc56744dd17f0188b0c62b93bb3f5a98b419f45d1a8742e30f339110984", @@ -8681,10 +8748,10 @@ "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "916ab6d5f1ff2be103b1f77029ee75f733636d7e8f57390f09fc40e8fb19c111", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f58071562b859823dfa1538a3b081d3807fe23dd8e83c55781a9ab1c336089d1", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3f0de896c6ff2946afe6c08c77cd82a3c167df1acd925edbb262bd5844fb2db8", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e4c569417b8d52d20fb3d8da0f5a0bf5c4c189c924c97b35a4c1384015a2cedf", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6f0654b16de894b1787ae81358caeba1c869bb0985ac9f5af4f16f86d709ee38", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "57917aa2f29f1bd48985d313a0ee8d6567ed5942d936f37ee5d84ffe881bc5ca", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "d79d63261c239b44ae2c06b1556300785effabd9d587ddb1de6c691867577926", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "381fe15ccfbb8eb3356e91352670ab12d178c38afbd9b9782faca4c36f9d2fac", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "b914c174c3c59728cda7dff4330ef1791be3944a2c5d5f6c22c929db5f4ae392", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "5c6981a0048209d0b2ec8c4b198e70a4e85a5bed61cd6a289ce7bb0e27fdd1c0", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "62b8b8a41f957f4e3c11a0d22789e68241bbe91d6626cde389b24335a5c0ab73", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a0cf65e7ba9e0f9bcbdbd5806fae815476f2d0850ee550930384b568b5fd189b", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "919636362bc1736739ee65fd3610f0ccee66e2d853ab88bc4088d4ecc79f30e2", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b73f17b48f723157f4be55064026a4cddb87a6190b7307bcdb3e7ab65b7f9f91", @@ -8694,9 +8761,9 @@ "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "c9704a533a21b3c36e3f02481b26cff583c41ad7e303196eb62e0071b3f398d6", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "0d81cd0d017f83d6bec57f311120b95550922bb74a93afea118c369d5d5007ff", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a8d945ba3fe514a68771a3686fde56486603fdf4f9db49cab44d2e30d905ae40", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f6332c444e0e6645af438058a7b5e0ebf524a0ac709c4581b486d9c46698787f", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e73bf39b02a02173ef9c184dd6c0462ce284857052bcd861a185c8fffe0b5ea2", -"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "420bdd1285c752ba70b9caf651277c29eeed71ab9a08d049c2b62f0134a369b4", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "2dc5516a20c8426199faa5926b89e3548ebf0dd411e9e33c8c7e615ccee735d2", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "525f7214b6c8fcd06abb8c71a839f13eea105c680839374d30f1281027d03103", +"T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "790b13a63cedcd615d4a3336d9a219ac413486400d384d4412bcf939230e5b1f", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "204289568e711dcbaec6a93aa8a9d8b20b394dcf9d72e7d2ab774f9268bc5f84", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "a14423ad534638ff450d9de87cc71a223a5bdae243d6c77e14baffc9f302e36c", "T2T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "330567987333acac21a868766cc2efea7b7f3bb6152ee93adeb67762feb743f2", @@ -8725,10 +8792,10 @@ "T2T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "5a9cdbd8b05bf710cad900fc3252729bdcb15bde4dcb7234a00406be780a3467", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b705cf1b3132fd049d1550a1de28e323ec2653d1dcfd08c57c5a7f51986b1b", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "594a4ba2b231ec5413dc3d9f9fe60570ec7724f5a9249e3b6cf657525b02a45e", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "44476582358691018bbebdc5f625296ee202258b0c1f6421db14e04931e59dd8", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "55009212a00f304068e812cd7ca3acfa41ef0054b84c5fe41bf5afbe6ca52a1b", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "fda26ca01546b984de539a119b2840ac6f48252cf93173f8ab116b5fcec62172", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f186ba69462fa6c308218e8908238eb0f4b6e66996b35033a754b31e5436de35", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "9b683dbe5f08de6facceff8a7b5d8f5d7af7e3fc0ae4cd3ab7bfa1b7b9c9e7d3", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "475f55fe26fcac1f9e72cf4f6bae9d5c8bf93622ec2893fae4ad49d1a3cbde7c", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "661c56ab9f6d0b27ba19cc5c563f1f81eeecc667ca34105d14d9bfe679cc97b9", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "cd4cb2aa71c5fc26114fd8a62b2c3fa92638c1b9865df694a6dc658fed07184b", @@ -8793,7 +8860,7 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "bb561d2bbea7ea46bd148f62c86f35292e8ce8855e6900382711ee2bafbc73cb", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fcc0172fece8a3d30ce3f76fe564e4cfa560db0785babd2e6228f445fd070bfd", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "8e5851e131bec6226267c69a4d5a306079bf4736550a5481a164e1a57aafafd8", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1a5d11217da86a13481168c2e92cfb4fef166b85e3258d0f2b38a70c6487984b", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "7b5f77b7b371b7e2a2c057362b05a38d153a7d0aaf9cb9a631bd1d7adedd670f", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d4064e131e72967ce48b12767a3acbbfdeda21c9786fa493d5e63e07d478afd", @@ -9218,57 +9285,57 @@ "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "594f0807d44e79071b82d0edd9aa3afc300a19bb11c0291caa5ed2ddf4068da0", -"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "46f23293e34af5548967f3d2d30efb40e23826917278c082c78d8f1721c19aff", -"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "9d60f853af4d4797bf69d313257883bcedbee27ef37e261ed9df0de63d0a850e", +"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "48c9fed5899ba9816aa5ccd5085d0dc2b01ae573b9bb814bb1f8ed716775e1c0", +"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c15b5050145afd3ec5a36c6e66daf38d88f4ae0aafc4ef5ca86b8935907d395d", +"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "455402aefed2eecb7f15376b4bb788e5d10b8da87c27c858792d197fe4aedc7d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "d199e0cd5419bce43b3fff911da4191350880fc162a45d81ba5c53923ac3b382", -"T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8e8b2479b6006c1b829346d4e8625a782a6f7ac6346e24e52f82dcb946c0fe43", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "2f89aad6748f21cffc13fc6054174ae1a58b02acb1867942229f48b8b88ae84d", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "93f34d7ae28e05b2804057e2b5844e2ac80b992b0141befdecb9f6bd533e1d90", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "1283119ffe9877dc24cf54c2d17c86c1bea3bbe3bd88fab61a78351ece37574b", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "6966b39783763d03f78da209a871f37e7abf81e25bbeaa61ef3aa23b55336e14", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "816dc97287a08a952baa0a5a6051a13c2bda981e08184c2502a9582c4c847ac2", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "74d94117100e2a85c7341466cf671343f4257df72c1aa78539e6fc19d5d55727", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "3c881c6e70b7656ec061d86d7aa454e12d6428b7c8bb1b40d3e596016284bb44", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "4eea02a651a4da7b45e25da9850e1b65beaada45ee6d3d655490521dafa897f7", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "a5ac8fd329f91573ebcdaaaf16f9336c87c575237c175cb7edd99d90558d8da9", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "393dacd59dc8e31d6af2948eacf32bc93a935377d81f468caa18675bcb8a3fda", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "4c83b602659d57870dd28e2255f83968bc8539f370e83f4739e882591f833083", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "06f4b7012e441435326d930378208705e53278de984b829f65710ee01414325b", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "2f89aad6748f21cffc13fc6054174ae1a58b02acb1867942229f48b8b88ae84d", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "44ce7f72cbcef38d74d28e4d8661fe3877d1b0b451497acb310f55156a62d636", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "66d3d367d123fa2fe1904bbd795d6afb5c50bb1132018ae14262ffb3737be20e", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "be084493431aab50cf76dd2c34d4af188d4f40d18b950ae1adf1ac811bde7de7", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "fd689f2c88a44f83de5a9443d97d73d28f14817cb4e030121998ceb6ed2e8a05", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "330b30519e08bbb16abde05166478b0e3c6ced442fb2706b3286b267e5cd6448", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "87d21a96f2a50abad9a75cbce923d50e9513ff7173fbe50f679ac1aae9e10406", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e4ac680898a749c2749f828a7b3e1611b1413778c2a1d6c6c9317180e655051f", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "01d97c9e5a671eeb8b56c7ac8b25ec82e2dac5904fdf052e797ae6c054453372", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "8bda09a1bcf757e11e13a5207a566076b3bcd3d5b55febe555ec594f3452bc3e", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ac76bbcd837b3c7eef1b30face2b9dc3756f74172f7fa166d95003b44df7154", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b01571baca0d047aec8a8da0d6a58397720d49d71aa315d390c99fc94968f8e0", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2db3e3119116de9b001a288f040d92e4b90ae4c6178ec94f7b44d23f247e2a73", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fce31a993c026c2ab3a2b381c712b6069cda27bd66b084c35005bdca81afb048", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "29956f95d176dba8da7eebf385ef404749d99c8a92e030e29a197846880da228", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "35a44c8f0706daa18eda1dee8cce5b30db2e1e520a47730599b7390f0f752f9b", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "531c9bad4a93a00d0eea8e5388dd387bfd968cb3707e50d1a64f7b0d3a2ab631", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "41a6afce45815e1e9605cd275f6a531a17e8e527e1ff85e0a8282f2e2bf1a30b", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "0994e43f436b87e648b386b037c6c99e3a8e179f1f43a033baab73ebcf0d75a7", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "86946b8be9b5aa32175a4f861d87f5b94f80b4c035acb630e348f1da1da8ebcf", +"T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "67be61e512ebefbec254071de7d5240bf0212f252d040101445b9bd1f5c056ee", +"T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "b2c436e5090a0709263d8ad6f6f0241cf2e52f167c7d5637655a969818e185c5", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "6b203f4a0c212ecf02549753ed654dd4d653498ef03f98e080e9fafc635e1564", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a2e854a8e34dd56a3bace04c6c6b0961975799834c7459c4fd41318f1070f7fa", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "12d1de022907e062327b99affdc950686cd56d65bbaa79768c1c46d61c2d58fb", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "2bc5b45e953da6afcbeea8a6f9634cd13309107e1f0cf2bd36261be6d21253a3", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "c760aa0705d64ad5a37dc1180e8d5cd1d9e9846cc71c8be1b8be6a73d9cbb22a", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9933d14430c5130ebe7ae5d8ab8eaa80af7be2f9f98b146e71ffb13697a01cae", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "65a51a3c3b484896d4c33c0551062ea034ee0ea03b6305d1a3c275da6520e764", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "063c19aacfe7333d1ef85c8454b8fa9031b4b2615ecde86df3e5c23828223b08", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "3a0fc68237440f353047532c57409851c238d7651926bd6da4e0ae15ef7e90c0", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "b852ddc5b02c77bc5c546fb9f4b9586c8cf9dc8628c6b6d2f4744ac1e9a99efc", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d6efee4206d88eb3527b1fc49077be9a15da98bc501b449b3dc55008924644ab", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "669ca492e913c5b5be50ffcec67b1b0da72ee82678ce553f0e22ee9889a3c5be", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "6b203f4a0c212ecf02549753ed654dd4d653498ef03f98e080e9fafc635e1564", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "344b2a3dac3cf2db5e602cc70ef0ec7c9ebe486faa71126cf031654bda7510d1", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "cc6d031adbf11d9553928ec2ddbddafc9d1b9ba648b59cdcaf269c7c403fc057", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "87c9fbf9d20f0f3c5cfadde5dc8289dffb85c333c41ef8373a3aed99cff4dc9d", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6bb2c4d0d49645388b2aa196be95dd88ec327be2c34318c7a45ceb16aa929347", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "75813faf1aa890f60d12e7066eb2057438903676a3a3a5af7c9604f5d839097f", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a94ecd82c03f2a38d25695d84089a7f5e216c346dedc0509ee82b41260bc7a79", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a05d496ae7214e42743bf7cf49450821a31bf33856692584213c879cf71ed9bf", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "e906015ee7c9b4d3cabb5626758ab81f6c059ac8223b0bd150a2067575b6e81f", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "396527cd8651ac8ab00dab4b0c9e905a32c879271974713f0bc891888040d97f", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "591d5176a8fe4edd394af8bf6c9e2f2bfe6a58a098504663eac4563b2d2a3d0b", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "51162efa5c32e54289ba0d1a5d1d5c103c3474bf3c2533bb35ecbf337ad449d7", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c6ab1d80ceba8a4690d20f7d1e1a806f1147a3eca04e2af859de8896aea41746", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "772d9ce662486874e3775d8d8f5084df18e837ee81d21d1ef5d4fd9b77240682", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "004d7ae338322c8031977b795d8b159329884186729af0e0c7ec59ad92bc8ebe", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "0bb3ee53fcd98e8e211ed3897dd34d212374a07f0b27554cd07382cc5a803ee4", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f9121d4e70a0b4b70cfd8105003d129c4fbb3260302a59b0d357b207e5f8f333", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "8bd54544649f8a3230b706b7214c7f639d180d63ea43d8eb3919897ee24ebef0", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2c7a1b8dfba9e7819c66d86cdba917dd345a471947d64876902c051ed94a71ac", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a26c4a554af19386459c893f47dfbe4d3e786a8674b047ffd84441ef393379df", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c8caf6c0d9650720a6e966d874694610f8f048750f8119b8b1867d016eb2368e", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5d2af81b8ae45704c40aa97d9ed9cf87b56c6aa9c30c556eb1a350172d26c764", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "5afb1bc4ab3633c9861c7796dfcadde5a23ce8e62beff45e92f893fc1860cead", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "52ffea964d3a3c1f7736c6f15fc99ca10bc1cd07903c3594aa46b184bb369cfb", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "70340e4bb88712feada3d6b0dd238b211c543dc1209359d3c53318955d54adf5", -"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "660ddae1a507c7396e9a47325d75c7a3a50da61e8f0598e15d45d9af01985346", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "81a5a98caaea515dea583692ec9360a3a65a2c236850bb525d13695ccf9f3d99", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f2eeb0f5408f283ff3e01440e6599e8cd1329cc67407b6227aa6be5b74642c39", -"T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8d51919e05a841522cb8ad40becc660eead752927a78a6574f8f23efcd78c92b", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b3211f4a1b93493a6608bdfe1a1ac3e2469d24ad1b396d31e8b45b477132c916", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "bd94dcfa0982ffa4a9c8762fce626f9fac093039d4f112ad999b75437dc75be3", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "99b1e43a959ee36cd23b4b013c3c6c6a3c8d7954a9e7c6e8a522774d147433cf", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "6c8d86df2d1370d710d7103c478da1d5c9a25a73cb367522712c46536ad9d776", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "bbaf13ed9ce4a1816cceffb192d271a3f79e28c7791705ef0a93fc9583ef528d", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "d3e77dbde141ff27d8e05c08d3ad9c71759bef25627d44a25bf69febcd140629", +"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "933db570b7349866a36bde6726ec47f809eeb2c265d9856814a42c81ce66ce67", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "770295ceab5b84c8e8c6f342a4e45cb725eb42e9fdf90d27c9ef08d52d07ed5a", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a658b1a8e36b375faa48c372eb5fd6435f7ca2045c834e3b0fb0d64884086f62", +"T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d24b511b8ab8216da4f59b4ab23f50c2ff28c5cd5b661762f5f766e70a440420", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3a5f4004c0334273c59c45245d951b74b44209b1fe946777d8266b0cb2481931", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e968f6493ad91013b16075f2a81a60eec13b55a350a227afc3cec6f749230457", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", @@ -9464,19 +9531,19 @@ "T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", "T2T1_cs_test_msg_applysettings.py::test_apply_settings": "f418798467e742fdcf5592315310ecf0237e23d09c4f02936bd06c11f6ebb284", "T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "f87881be98e05714b6a2c6cced9382ba8316368a711944b388729bd5b85593f4", -"T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "06b22572a797de355eb21edb05c582369e0f480e69450a3d7ce7c338fb07ac5f", +"T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "07790be49485453e78b20a1e93052f4e39d4ba022bd214f48b5e4827c8ff825c", "T2T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "70d7cb582a972a27f346f86685b0245042ef20ee3cf39182b618a228295bdaa7", "T2T1_cs_test_msg_applysettings.py::test_experimental_features": "4ed46d0812a0af386ded66d73f672284b3ff625601467f405bb8c3e46c3da150", "T2T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", -"T2T1_cs_test_msg_backup_device.py::test_backup_bip39": "c436401095d0cc0cab5af7b379a32ea71595796e00de83766389d3eb69660c73", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e9313406dc81378c5667fb6ce174afb2c7a4f7aaeda43bef14d4f0a3dad5adba", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8e2af1597b6817995fe603ce2537edb064477314cfc224941cd25d7d6a0f7867", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "1736edc2fe0b74bb20ddd8505c5b0ff15d0ded7f2024e34e2ecad896df064bff", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a74a991e70913be17203b70618ac32fe9bc07a365c0f4fa3dce2291cb93f9c4e", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "5a210f05a9e4040a3fd3c88abf03e6142bee9bc4454240910482b7b66c2145f3", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "add9379f38648e97f10145cde341da049ffe809b9c8729ab532a46be39bbdbd3", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6d7fc33bf8a4c6b6fcde74bc342f17ff97854c7378088e0531c283e93a3c5386", +"T2T1_cs_test_msg_backup_device.py::test_backup_bip39": "212688c449a822c4dc18990dd13b3c0504e93b9bf2580c69e49c77a7a2d9212d", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "cfcf6be682bfe561867a3c391608d3f8371fcc98b4920fd9b77f654f1792e8e5", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "7c76aa3e04d9de9926b3c1b3edeb980b0beeb2fd94f4cc64a96307e7bb3255ff", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f8ba8ab62fd58174f9fbe8c2b3e22f72b93be3b8e5008b60882247e9148f4cf2", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6bb270520a4e999a02b2ea3b2759630d5285c65b0d3cd3b03f1ed27962c4564c", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "7cf053c7ce5e76b796e64d03d843e3921acf53abffc252e76d28bd2f4a97429d", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "637ad1782391eb548411f1c00498304dd7c7190a63117f399561cd38989783b8", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6be98f6680a59b16910e2bfb974aab4db97d445f6625a8cb06abd8b9688fc67a", "T2T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", "T2T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", "T2T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -9491,21 +9558,21 @@ "T2T1_cs_test_msg_changepin_t2.py::test_set_failed": "d44150ef88ec051c85010fed2d12a15abb8162beef36ac992ca1b450a3364f6d", "T2T1_cs_test_msg_changepin_t2.py::test_set_pin": "40108039319e94ecc1da4b5b2f246d6e400e896239e8e0a6922727d539991a4d", "T2T1_cs_test_msg_loaddevice.py::test_load_device_1": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "8a58a03d6089a51c6b37846f345e0fd48a909eaa78099aebdff44192f3b6ccb2", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "706a90487474d6d65f39da3df7c14a7485776bb666f14f9c91c91167784afefa", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "4aceb58ce9eb2ab5935918a48b47a88b551e7e8d176472a64766a8f52365ae25", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "eb55a55297e845606a77342948a3d3920bf4b481957c257a57aac264fd170781", "T2T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T2T1_cs_test_msg_sd_protect.py::test_enable_disable": "7815d8d7eff783050c6b202ab538dc0eaedf1f6f9e7ceb535c77c6a6b8b18331", "T2T1_cs_test_msg_sd_protect.py::test_refresh": "cd45ae6cf914bd58774f36a203dcd1928439ef510db1fe29d8a81aa903c3c17a", "T2T1_cs_test_msg_sd_protect.py::test_wipe": "2717e4a4297ad22125fe6a07d5eda1403d8678dfa9f302ff48fe5becf3d76a8f", "T2T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "50894c333d72b9a22be61e959839a7645f7d010cc9854d4171efacb7ef97f16f", "T2T1_cs_test_msg_wipedevice.py::test_wipe_device": "c3dbf3ed1bd619e77173d6b8e80335f8e5397627adc00ae16f9bd0f8074529aa", -"T2T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", -"T2T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3602a16161bfbf6ba7b80169485e9f2e8c24942f662a690fc079eed03fef649a", -"T2T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T2T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T2T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", +"T2T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c2ba93aa0ca944177b57ccf8ee8089c5e312beb56acc870dab67e20b66d5af44", +"T2T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c2ba93aa0ca944177b57ccf8ee8089c5e312beb56acc870dab67e20b66d5af44", +"T2T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "0fb795c1478e6b39cf4c0a20500f945f6feda8a28cbd4be20c1af177b2d9e7eb", +"T2T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "0fb795c1478e6b39cf4c0a20500f945f6feda8a28cbd4be20c1af177b2d9e7eb", +"T2T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "0fb795c1478e6b39cf4c0a20500f945f6feda8a28cbd4be20c1af177b2d9e7eb", "T2T1_cs_test_pin.py::test_correct_pin": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", "T2T1_cs_test_pin.py::test_exponential_backoff_t2": "dc2da4343403dd18bf9a9a2c51d8e86022da5f8aef85566c6eed5bfb36ac8d62", "T2T1_cs_test_pin.py::test_incorrect_pin_t2": "d7d33aacb2c1403ac0455dc5e06601a6641fd3f0fa4dd127d92ad036b6175fd0", @@ -9525,9 +9592,10 @@ "T2T1_cs_test_protection_levels.py::test_unlocked": "03c60806a17607d7e3b39d76d3d82144ceef92ebbf90bc25ecdd6233bc0081cf", "T2T1_cs_test_protection_levels.py::test_verify_message_t2": "7cbc1f75a41c00a6d53fe6372113fdba190489e8819fb6d4a7f6d9898b0115c1", "T2T1_cs_test_protection_levels.py::test_wipe_device": "e2f47c3779d782bb71d8dfd553560ef36b4d6fa67a629719e380e30af8727229", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "6cdff3d90975350249abb78f90136fa0a5aa534e14483160c44a934a55850c0e", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "2d34bfb184b3b67bb073d4a8c9f944318b353d7ebf7554d5ccbe67e100040125", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "da2c71dd408d8ad4546b43a78353561fc6b2654b354239e9a13fef13cfaf6aa1", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "8a7ca41d1faef20d66a704bf34613542d0c9b27dcabc8f66c26723dfde2da74d", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "2f9dea3282bae95ce05e5f99a5ee0732105883605be38e60d893429d2ce8db85", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "c12b25b3736ce13513f0b9024a0371d336fe93e913c282c7cfbc8340aa38d43b", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "da143ff09a3f0e98b783218e82c09f98d501a29c2e588f2edf06e89da9202652", "T2T1_cs_test_sdcard.py::test_sd_format": "8f1ca58187e0eb32b6e23e369b1e9a3f68ee244023e2a0d25930d887f9bff5f2", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "f919e4e387fcb3806adb43f7b8f71ae3b14a30970b3d79bb4c9bd063804a084c", @@ -9537,19 +9605,19 @@ "T2T1_cs_test_session.py::test_derive_cardano_running_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_session.py::test_end_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_session.py::test_end_session_only_current": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_test_session.py::test_session_recycling": "b2b9b55af13e6d172a5dba5739a397e40d8067322bc6eb29b4d10f70ed6e4c24", -"T2T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "099800e8e1478d2a71f6daa0bd9a59904ed69610b4f99af4f82bc7735f863e40", -"T2T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "c15d2ea5023ee21d809f8a56e3a9d2dbd2cc550d7caa3f8d9a308afc0c51cb39", -"T2T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "cf2453bd1a01b8ff3747432bcc5eb9f348bbdf393cf6eeba8256839a6a88829a", -"T2T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "a400d365c69461b637388c8e52d7b30e51688edb21430031fa51baffc7e1d43b", +"T2T1_cs_test_session.py::test_session_recycling": "0fb795c1478e6b39cf4c0a20500f945f6feda8a28cbd4be20c1af177b2d9e7eb", +"T2T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "0291f51c902b23ecfcd529e2d6ef42754d211981f9f8625555eacbd1d052822d", +"T2T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "63058327afb2dfe0383cd366c63119778e5197392ac33662570ab01877278e4e", +"T2T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "424f13a6cbfaa960c25b9f88f694f9f5af5b268d3033e3dcde736ac5ad85b094", +"T2T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "765c826776f20ad6d55c2d5b43ced12f22f5ade881ca2c8bf1078ad13e7a95e0", "T2T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "aa5523fe1052824ce5a1790b9170708d9ad73fae79d0255365ee94d694976486", -"T2T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "975aecca0a94fdd095b08a511d10e55a8db86bbe6a8a5af71bc5b8d8911764d5", -"T2T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "444e03b100a04ce91433bd96e98c7cb54a1ca1486bb4705de0ee1bfe8947ca1c", +"T2T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "84296dd7b5343aa603217b506e62e829a2a632ecb58d631eb73410658dc8d7e4", +"T2T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "e0be115b6818d4d4af071109cfe326dfaab811a3a5bb1caffc8e59769b559eba", "T2T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", -"T2T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "53c872020e3845b5633f20c9fc246481f79f5a3249dc2c1c6a364d1c6995a5b0", -"T2T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5552b3772db403c98a447e043761c2bcae066da0946f9db07a8dc817b36c635c", -"T2T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "f6cd4f80455f5d7bfbcd7fe4cdc6ee9b413a5fb4f5308837f729755e71e04e80", +"T2T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "f52ee3da22b41e82378a6bc5e092b49f1d8d320114b5e68ee3808371527c1ecf", +"T2T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "30618b776000021e5c8fd04b5464be9803c54e2c29b4d35fbec87f22ee4d47a1", +"T2T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "a836c838c29371e8155b9ae419831710a26df2ae3e2d10aefa2ab512954c5b74", "T2T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "f1fa8a3cf65da15b19d2fcd14a94f93c814232adb4cbfff07b83a519cc379f16", "T2T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9eb892d697c7f19124fa84be8a994d88cda8037e9fceb5662ef3b54371b4e375", "T2T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "82f1653e3bdab8487e4e24b034036a3fca7fe83a6181803039608003191566b6", @@ -9923,7 +9991,7 @@ "T2T1_de_bitcoin-test_signtx.py::test_information": "f09c1499a249d4e54808dc635a4aabd652e7cc476fa98fcaa1be13159c755e8c", "T2T1_de_bitcoin-test_signtx.py::test_information_cancel": "ace23f8e3171f790b2df8c563c02e54b58919bdb7ad819bb052d1ad4780f5360", "T2T1_de_bitcoin-test_signtx.py::test_information_mixed": "631bdef61dd83d22e82afc8159f9e6ad944d4c5313628f51198508a6d6496f2e", -"T2T1_de_bitcoin-test_signtx.py::test_information_replacement": "09ad97e8082a25c62847a5440ad91b9c412eee1c86fff24e89991ea05f971282", +"T2T1_de_bitcoin-test_signtx.py::test_information_replacement": "0c60cad832c33f423f1c3862620a51f88f06105c1679c7463ad033fdc74c5806", "T2T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "a55302b142f9d932bcc074fa3cc2b455df3b49e6bb07c5c2cd39f851d5990cf4", "T2T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1dd74b6f7cf08a86b2349918fca4325b953809e3352ddc7362b625fa72000ea5", "T2T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "39c5d8b94612fd2fbc569e72635a8023bf7a4b5fe73eddb0a0caa94683fe366d", @@ -10080,8 +10148,8 @@ "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "487b92075c46706e819c43099a71cfbab5fc5ceb2396d9dad66f52ad3daaa3b7", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "04f740825de357a4f97050ab9ef44c81229dd6c1fb027d7fdb67e306dd7e1db3", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3212ff4b5c3de59947b15385bc032d6c1a1e1bb9cc8bb6117e996eed6cead3db", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c9f62229355bf94cb3999f4fa4342fa4b678fe43e997bcc09fd948e356ad0bba", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5664471b029573c7fd130c240322e56975f2905623cd113e36f8292847d6ad44", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c04abb531008793c87102c50cd04458970aede655e79a918f9a9f82e188dda11", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "7a6f7513b88f836be9f2e384f5495a8b8ec04d1f3666eb770a319f92635101a4", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2aa3cbe25f1aa4076deb4f07483cb1f85e67222e5002592e4b21f40155ede0e3", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "724c1badf06df05a8451194b4d7978048601061bf2bf831962e533e3dce77699", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "43a2897a5b1a31ff920860a17ddba6ddfd6f7d23f3462473f791287808e0baac", @@ -10111,17 +10179,17 @@ "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "638b5d1194d5779494fbd0adea4775a5efe154cd07af45968f33b32529e8713e", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "f7b3d9b779e64c6f921027a1c7d7f42eadf7d533df635bca90469c3d615ee2aa", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b47d5af9cb177b3818d39cedb86ec1081619cbba4913c98d2bbca525a57919a6", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0ec25476e2524f7968431db3c2a41bfc6517bf91bca206504c7f89537accb11d", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "6b2a370483373c63357e9d822e9d5ac5f38401d787c9ee65235a6beae0f77336", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "2d9b2630b05918d1e29495a428458bdffe3ab7372ca6d19d54afe38f5af8761e", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "1acd718dafa13fd9b63af33902f608f6d8775486398c11010c1cc39964374d2e", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "ba8040af18fd566926097e9113bd533580794f64703bef44bea8dd2b9d7de94f", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "0bd1804f14b74f5898a6da3aeec2c3ef0d5147e95c88340faf957db30409d099", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "d8ee51b2cff63d008294eee6774968e3b8f72058bae83c7e6fc99dddf94f647d", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "142b50df1eb93017e7eed85412331249327bea03f277b46d9ada875cb22faea8", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "16e650c8afd0a2cd8c585ea0cb9f71507644afe9482eb0a2824620d7b2f1a16c", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "9c76944b275d91575c97c0af81b58a29b3446d6dee09edc262e87328ce444455", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "ec12bdbd3c65166d9f8b3a139bcef8bcaff2317f5aae6f60bc978e21d6d2676a", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "6e89eb8779b125ab44b5f778e0d9f245dd19015a920a77e000a578ebda852074", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "100b5460b84a7be4424dbe5cb074129e415859c9b6a70258d5b22aa6033a009e", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "615d27dbc3323a703c529e7f9c957a1b0c3fe3993e247ea4329871c272dd70ae", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "3048cef3f366259a3025a694947ebe3ba6819d5f4273f537e74a9e1a00e19f18", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "3e18942f46dccf252f4a265ec9f165b53d0d20b4e78063e3079107d67dc225cc", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "4b5464c40cc78b8cbc423b2d89ee6d4b455ea88a3613f39c34ffef457c4b2538", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "a900dbbd746931beb5f41df22bff8fa8954cde47deae10f612e33e488f81809a", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "81f47b743e13122d6affa5903c2d42b849aa4942ebe1e380d1c961a1adc60d57", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5b53286ebfcc985c0cfb1faa81f31939b3df97ab66bd4b9a4a09f18c365102cd", @@ -10151,10 +10219,10 @@ "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0e9e23123b5cf3da226c70869d06ae2e081af1655800e4b423aa66dac2837e87", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4a95b5f13ab86c5292184f37512abd6231a88823abe44163a8a4817dfc96aa1b", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "aa1ebe4b7f28d7c72f8247f653deff58c38c0ad6d82294c0848f2d808223ddf7", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "0ff3704151ad2f734371d82093a516f1d01fbc63750f63af3cacfb93202facb4", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "0a51776d0f6f72a54ff35dc5a06ea249c2c207df913ad922f5542926e1590368", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "10545518098df14c3ed09f3cc44a09f2e793432a7ba4e0814b30abcad809a1c6", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "45c2c0901f6a8645b182185eac93f6eaebce9c40ba99fc34d2cf168d902f5338", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f234df5b9ca01b5a87e3e068ee0dd413e35b02ffea2d1c6eb495dabf12dac2ae", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "169288399329b56e75c1e3e075af09d27ae09bd6fb8bcadb3df5ea0b50f742f6", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "610f09c2c68d9eab956c9e0914649ca009f27e00a8b211cf888addd73b642c59", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "fcdf529424244290b9c40547c83bd3a2884a736c4e5090e04b087764b74c8610", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "6f4318ac34e51118ecbbbe2c9e8fdb0ce4864e547e32feabd6461e7c0b5e42a0", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "b088eed244c3e4a3112402680d32ac52b72456cc77bfbac8510fe1832b8ecb7b", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "ef09060f7dcd95fd1a8d268c48155a596947020f74f0d398b177a5f669876864", @@ -10164,9 +10232,9 @@ "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "084f2d19be0a6d9f0ef2ebe359f4de3dd7a36c7a4018253176c3a2d15e3033f9", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "dccd30be0d9abacf69c4db8a285342d1447cc8cc2598cd745fcbb892e72f1fd7", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "5cf569b291f623edf30040bc2c5ab16d23231069361295259c69c46bf652d5c8", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a9ec7e7e22b29bdbc924169151f7490dc4ea55b216c2ead4051b4d84774af028", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "256b09f809f386ebda952d069ceb9c420a62cb1f0ce259312c89f3587dda0f0a", -"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "fe2574bcb7c966743a11869924300b11619ab86bb6f44a9863ebd271262dcc3f", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "59318d2f6c561711c2d7d3616c88ca9925ef4c102189d263741ca66fec5ad1c9", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "b5bfd291e23386c57ad2a62039d516050e110a3b8b6f204323e2faac9d9657e7", +"T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "8a352afbcf8f19bae99af83cbd32acee7495cfdd9c3c7f7e274995f5a155c3d6", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "0cd0e45d236f72f86b1927578f6f821f572e7a85509d609e8383e0aa56dc5797", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5e74e22000b7f6705c527d11c453ce8a3e5a71f4c0a1112b0c2bc26bc90c9f8f", "T2T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "3657ea96e038bd4e8e4ddb1970a41315e1f22287f8e07de826218eb9b9bb11cc", @@ -10195,10 +10263,10 @@ "T2T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "43620c115f5f889f96729b6c6eb4d2016519a8cabc7dcbac48ccde3a60275949", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "b054a957f52dd3269b3120581e586263b570b0430f853ababec0e1aaef9993f1", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0606502a11893dc5b8298459b3e4922da1814beb8c0f14a906ac2b9df582a108", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "843aa587aff1c5c148e48f8d1b85d0b9dbd7704d58bebe599ef234654b205353", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "a8bab362bcbd5c8c7e46dd1174f1ea9d9ca15a43d10a7106dd3ff1e4df9e15fa", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "333a7d069f12e939b6a997656a6bbabd0a443d04954c324d42dc459d97369366", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f25fc78c79fa20d6b7f35156041c548252fdbe59ab535527bd99e3ced14d492d", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "64cdfbb2214f160cbc8843297d6efb40acf005ef3042aa7bc1ce140f3b5b739b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "64258d1fa2acc749eea0362a084c57fe13192ade175453c7b3e48528d4006be8", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e9c532cdf3f8076669544042b53fb50e764244a3d2dfd097e37196021ff8cb55", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "f35fbab88a59f37766fbedc1191496759adbdad7e215209123b24e440b499944", @@ -10263,7 +10331,7 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c217b799c252aa8d772cd4b5bfa820bf26c45b4a3b9bea3c0f41e8542abfc9d3", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6c29a9e0b33f14d8549d9635e38c8ff13b1cf4bae7bd36319d28bf0f28790954", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b5ceee12e024e420174f262d296bc8f9955ffbadfccc8dd1c005c3b8d6cc743b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "12e4199c992ed2a334403814367b872be55986c98b5a9a94187376f3b9530e3c", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "62bb28cf7b173cd652fc4bbedcfeb8172e2735294d088e1841ae7bf9973eeda4", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e945588bcc167e340f87e5752b24c7c38af390135c0c640529fcd8c7d88b0860", @@ -10583,20 +10651,20 @@ "T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e77946b391ea9d20241e5c329c0a77f887373e8848ac71d3028d0ab1a3052276", "T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", "T2T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a043bd6b8e83996da8a77cf92cb9d08bb7661d3e96084e799d416f2f34a789d4", -"T2T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "bfb1a60f5e0b0653197b821854fc97a16060edef3d3f3ecdb4125cc857d0798e", +"T2T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "a84e5808e50e98b7442278868cd787984bc212fd4e4686339443274cf0c0575d", "T2T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "e652ec974319b2822f3db8c45c4a884af507e8e2404676693e5efc1747a95373", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "07c876fc243b8255ed08c78af8b5242e343b7c07d6b53240fb8a9e908658c2e9", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "502348f0ea634b75faaf06e7bfb971733502ed8d0ccb1ff17e65e91ad8e66fdf", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "5dc679018f0399e3cdbc23f16e58227a4548669177599bce493daa2e574dc260", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "877543c3e332ec4c6cf7aef230a5c14299b99a304e768f135d5e6e4afc6c1488", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "fe4253cf6f5c86c5baa56846bd9e7383f1668fc87cabf4bcdc5ad5f26bcf5023", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "d61eff83a5b9257a2b27785692c19dde62e9d7b2d693734c9410cd65d45cb2c2", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "51722d78adfdfd6e68bdf7ac3e6cabc214861f669e628769442a297f0ff4652f", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "da4eadbbd712a1bc7b56741f5569f03f2e14f6f970cd73b11b7ab3209e66cc3a", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c43f1fc55d259316de8d0b646d61456c49128b7dd54b42d068fee412233c6f4b", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "b6843dea53a8954211cea4f47c2ba0451fffe4793d514d5879379b5bb952dcf8", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "cb8680cd0f6dc7d70b1600b73c98de3f82a75fb46f33fa407c6ef42022738c89", -"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "e83665f44734e9411f0ab413324f18646a52f05a737844e69cd110c43f0a146d", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "45b89627d536051d5d81a1e1090f31608f4c965836facbeafffdcb341a8ce7ba", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "9b97d39196996fdeb1f6d042b469e9dbb15f67ef56275f5fd7b01440ba9c334e", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "425de732a0594137c5e8fb7dec128ee0de06475c213c22e5a2f8fbbdac6ef2c9", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "caa7a74c5447ae66fb812e33065207f5be1a8efa81641e49b320c41990bf66ff", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "098910581817e5f0dbc86c690ea05336c03661889b2ab00ccef7e5a05fcbb692", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "d719b3804d8da3fdd22d73ba0970d4af4cbf28424b8fc529b04d2119be2c5090", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "960848f4c3f0bb8a0a580372f47c74cd1f95554358dd2caa6d5c56d6578d25e0", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "ce8dfb3b9a5f58787da61ebf94ddee043add9bb1300954e5dd923d29b5e7bebe", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "138e8cc4eeb440b565a9e7b74bc2f6431d89042e4131dd472ca08203d1416608", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "09b38b8a7325223a514ef022a79b3f7a68edbcdc6b605399aafa609a6ab0a711", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "54041206f779678ec05fda2b5f8d6c6e3670f2b4ab1a9448ada26419dbe1fc9f", +"T2T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "7775702e00ccb5e1d20c7d7b7980fbb081419772f800a1f6be7b58035f1e5bd9", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", @@ -10688,57 +10756,57 @@ "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d252b29bd9eaeab3e1ae64ee74544043c1b41d6a1433b7935afee99b457362b9", -"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8af6edf1922a80f7784e435ca83508789fa8658f104ceecc90c48f6375fc1e61", -"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "b1707f36418809632ca11edcb040ddfe6be7961dc20c058efccef323f77a144c", +"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "69a6ff38f2a4a27947313cd5723d8b53814b14e1c91be465294e0b03d7e4a210", +"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c202e3813df11794b6018f350e09ccf6516debe591410ef67211caf62ee6914d", +"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee80ed0b9b3decaae77552ceff1663e54afeb5cd656d73d4ad6fc40772806677", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "2dd33912cd3b683c8dcfca12c138678ce452e71f313cc75641ad74e3aa6cbdf0", -"T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "532d10d1d33670a6355c5a66eaa91cc48d88f1cac8dc9be6b156a8ea5e28677a", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "a6031e2fc7555aa12fca1573e4d4c1b242fc9e5aee3e6f5ba7a0a0c446248243", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "08f68408b7970643c752646103a0c2b87b939fdbf3fefc4baef358547159f473", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "f1c91a2ab5a56bfbc85413d61711296ca739a14c129eff64fd8dc0a02c1ae8e0", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e8c0a2c6e23ec2a6fcc2f0572c0e3ac1e6af4bf697789a0cace07a5b0ced6e05", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fdda959fde60b0e9ffcabfc7bb0c992c4e3c59a207103158e5f6cdab97d9ff3c", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e8ea4f59030b9ed7a43ac1ad2cb7614fa0dc23aefbb84d661be366425d888b08", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "9ac53a165c84a7169b1516a31c3a322c259e2e0f5d327e2be93605a01d4dd524", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f3a8b2faac72a00121576d82d9f8d6924318a7c9d06c30c8f4974f88bc373e8d", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "726e379605a144e52ac61d3c6d8505d52f76a8581df02fdeadf17fd9bbed3608", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8ba63f8ab5fa8ba307a826aaab42348ab9b60328058b8c24989c07d9a740ea38", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "cc9e3c8d5365a6d0866362af20c8eae266dd657a2b7507a9868f27bcc65a339a", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cfb205a8c4b04bcb0cd58feaa772994dfab3c026ef0b4524f363278b47acd913", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "a6031e2fc7555aa12fca1573e4d4c1b242fc9e5aee3e6f5ba7a0a0c446248243", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "ed02295c5245a2ec9de5a88e99c0b4390db9559d65230702c308ed30a6776fe8", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6590c1f1ea8cd1234c63e6bd124c59752878ad4834493d91a7e888c72e5b6552", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "85e29b77ef87355218645a113a9d1bd8df7a8850f236cefac9eb84f9b75e2ea2", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f881175d64809ef465fff40bb4039d159b36f9aeb33f4b0dccfe4347fa9dd8ec", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "46d44f853f15c05ac3fa45af7a5d7e1c063b3d8999d5affd15d0aec723ca7d63", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4a8daae73ff52d016d529efb7e32df4073c5426def3a790806c0438c4ce67c92", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9aa47aaaecbfb76f29abec5a89a746af3e54b2bbb8621544492757d3e28b9f0f", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "d52a8fcfe810c2b15a83ae9a1a4e82310a38768daa9a4612e693caad09328b23", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "327fa1dbc32cf7a229a221df8d06c717399100408f8ed372797f9b040d12fb8e", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "fe1e03967be675a38e015fe24731e6c513bca03c8b9dd5eac9353cacdf44ac9b", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "269eb7516f77739bac91e4b8a91d6c3fbd333efe06dd06d60d79d77fe7a07cae", -"T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a41c082f40c0cf424064179da18c8a28c25aea8da7aa8d97b49397b33a72fa03", -"T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "24f8115deb03abf6624975d228cde64253d5f6a822f216e1671ed28c45d12221", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "03c67a21b9c0e19b7da02d4cbf7f380a2a411215abd9004d0ce9e3062e2437a3", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "1084f641eef7dc5498fdfe6099cd722d297ea7a2bd42d1726117ad124ec18c6a", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "78c5ba3e2c5855b9160fa85c7ec906eee36f317ef3cb8dd8e8914b92b22f645e", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9a58e8bb4c31f9736258d3b721faa6e03ade25c8b43bd57143c553fedf7e5b35", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "e8c5dffd5b6714f29821126ba0ec4a9f2d07551416e7ad77c48f9d0eb386a905", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "1339bc91842c5e53bc083779d5e80b381ec3d1b464d0e5e4385def7ccba00824", +"T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "2ac08a577e800855a57831b13fc6fc067ceea8d4dc7565737b1a7127c5fed38c", +"T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "5a438dff8138017686d2ff864a0bde30e8ec392957531264b7bed4fe7a906023", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "71e47616330ea9232581325e8b6c2cd5a12ba843cd4af500b59a6ba928a7bd0e", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "8bd55c66e7256357675cea978f6970b7b96f11104ef105bdd0763e2695c55ace", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "31db317835ee9adf0a684d00b6910c7b5936c415ce7d44cea7a49e4085eb92da", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a30555dd5bcaf5b79f0ae835061005e593c6fdc384a3c1289607ac74123ec68e", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "199bd4117c72e30df30d006c7adf83f829053c420bb0c625a9d91f0fc312e6a8", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "20db58ba275eb740ad6f15e46bbdd8168269dcedc22ec666335f53c3c0a07278", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "35c1cd49ff977e0fa2ced4821895d24d8448b4255ba5febf547511790ec2a684", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "60c5ee6742cc49b46b3d9c0a7093ee9f6802cc7b00f4e589096b1722c0be1659", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1921f83bfa8ce464731b35bb5d509cef808ce12e58c08e41fbd39e73dfff931b", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "428eaa49d69b8ca88c3220066fa9090b3b342e8ac340d391abd04b0c1ccc37d3", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "00bc9646473e5e415707eb00bb0c090245151ca38fda6be076a03a036a364a29", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f33cd5534607f21a1035ea79a240c5bc196aef0d672c86d83c93b95dcebaa28e", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "71e47616330ea9232581325e8b6c2cd5a12ba843cd4af500b59a6ba928a7bd0e", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3764969d4f4301149499f27298c1cb378c80610946dd00a1d9fd73d37eaebef2", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "ee2141bc56a9f21232bdd487c3944bb15b89ff28624f627a68d71eb4783cc761", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "787349d4605e5e33072273055eb83e988a6e7c7640afefb30ab3839ad1e2d489", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2a68b347605b473e410dc95a18a893749a1976568282b8d1e63aabf2fec86034", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d8c4ab99dbbd1bdc670e8b95ddc14d473081bcc8ea7b821c8dcc85f8f99dddd5", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f5faed7c743dec88bd2dead7f0a1415e36d8a949e3efb9c6e85b397735424626", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4cde11272d19a5753e868cfe3489ed3697b4bf98111da6b365dbf0ac89379dd5", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "e09a7d11f44d67a61b31e1238100443e1532b0d43741f0d78ade8c7ea1032aeb", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e0552684e15a0af96577fdab8d6644824148555f467fa5a7d6742313f175a2ee", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "b8252bae66eb7e01dc0271016f100de538c35807d772df2ae18539ccc1a9962e", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "16d05c29b057ba7b407aac3e328c549fef85f06d7f611aa5ab3ffd1019e0389e", +"T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "65ae737ad99f11176ac9d882cc9272acc52a7203d40a7cac3ca3bfc1fba72da8", +"T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "613dc137e021c99b91afb902c310b5d5b8f4f7678dd7f11762e3c5b74be3c25e", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "84758fd379e7b62074cbc62022f2c7d75f3fd352690545da3ab5dad2c7f131a4", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "37933f81eb175d262433331d17955ba5c661d5186e75413b38b8df98ffd47c29", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "016bfd2b1d0d412d4c1b983139f71fbec777b8551d2450ba90e581f1477f8249", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "ca5b6d1cd04ab2bc28e7be3e0bac1c2900a0b7c5e9c10241d5722fe327eb0dc3", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "26c33e6cc03479edf5c6f830575e194c4b13a72a0183082bc21ba856fe65af49", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9e3f0ddb3c255b312b3b9fd36d87120763437a3d9d6ec09011725a5c82ed8469", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "41b97d6c80896a11d1954b49b67160a4edfa61880f21d15bfed5e7b1bbc6ed95", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1ed4bea3143debd0a2eb9053a8d51a916fddc8788c4c1936da8f0eba6efa6ec8", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "748dd2251b2e23e21fb729281b2a6e20a85b34cbd373ac67eaac129d37c279bc", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e7109155049cf3fe9bb431db8f29b2d217c2d355da403d391b559815c4236e35", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c2150b826dd599d7f39cf0b68e2e6fae1fffcf2068d420a667ee8e5ed6a92fcd", -"T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cdb12287463852a89e4b3c620c135773c3ae6f9b52857bf72bcb10b0c79f78f5", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f75e987768618fdd3265fa59834289c22fde6eb2979af426097dd0e3fdbe3794", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "565fd1366ef5f88d2f006c0e8fec8a16c921582329bc7ebe84fcdd173f0acd9d", -"T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8d50eb3aa7198f6a5bdab84cfbd0c1d9e63fd3f13cb29559dbec8c483bddefd1", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6b98ac13db1fafd4cee75f0459ffe9a15d08811724dfa4a7c23d852e87b009ea", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "91ed7613946d991eeda5ee309c7437f27295c58e7eefec2da7af8b8b629bc407", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1b797d3d0686f5f774bdba546dc4767832887663cecb0b065b301a2c9be8566e", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0c1ab9398104b50a44b18c8918c276b5d1e00d3b53c2a3715ed0752be7eb1171", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ee23b0743961a3aea7bba701ad4e58403e2d5adf427d884acef04a7f535ce175", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "efd535db9c9e6d30e8013c6c5d3ec920be615fe7c8bb44b6ff73b27707c739d3", +"T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "fa25e12cb275e6bd50bdf314cf790ce7f8f5cfcbe952a1add8111fa94779029e", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "656aaed74aa1a9578e3104270b49ffb2bacde17ed83afe8eba04bdab609b5792", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1e97b74dd228a03e17175bae92cb371a833da2852e8f095fe43aec397c8268dc", +"T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "906226a860e5cafd441173776cae7dffa66b0b099cc0e939eff4b3db6c3cf2e1", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5dd345ad4eff0a99a6ea3787a3e4f528adb2f806355b83c00d31609a344ca79c", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a06f87371b74c6c754e2f093fcc495f2716cf464aaccf8e0fb0028440b2bba94", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", @@ -10934,19 +11002,19 @@ "T2T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", "T2T1_de_test_msg_applysettings.py::test_apply_settings": "7bdca2eb02a5b19ca1c3ff8e5aa187c8cba679efa23dccbdcc9af0a3fccb8b97", "T2T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "b182915780ba16069fa91b5f5a2a7a1542b40e879147d216f11ac7b5690b9a69", -"T2T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d69b76c940c1e351e02862df5c94c6d8fe9d1a332944c1537c9e433f2cbea291", +"T2T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "1118be26e5cc5d4bab865b8f55fb2e24d031ff006d2065a1c974c98d7461d1d8", "T2T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "52447a0bc136f9f60299901a7d19c356167eea414304d379f077f9c961d05cd4", "T2T1_de_test_msg_applysettings.py::test_experimental_features": "43e0045fc52a443083368277c7be676cf33b90628d9fd92d712e32122e21ffbd", "T2T1_de_test_msg_applysettings.py::test_label_too_long": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_msg_applysettings.py::test_safety_checks": "0105dacdfd0f8e69fca82643c84a9891b3953046571f041ce2b7e8596824aefc", -"T2T1_de_test_msg_backup_device.py::test_backup_bip39": "84a7f55331f867b6fb60914c2d5d2d34b1ea963c49c837c17ff67f5f405a22a3", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0afcc22b69357ed8f4f6f232ab296f83576f6c19f1d2e3b8dd40c84e3fc3cd77", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "49f70268ae3408a0ed57ffe77c98c1bfa60a353a915aea6a4713f35318379b7b", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "19634efad1cecd294e9c86c844c47571b4d42d71410331be9b6d7a38c1e7cb9d", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c5868991316bf37774c87e5a62be873797bdb3ea77a815b2021fa7f0b58365a8", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6236ced0ded64b2cf58d25ce5844cd6861526055c516498453ec910d86a1a8f9", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "40164cb70a4241c57f46882eed4bcc6379115cbec4afa1c9ea45f24d1affa479", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ebbc641a9eb294a7276823c27ddbacf7995507311e48cad5928b0516bb96030f", +"T2T1_de_test_msg_backup_device.py::test_backup_bip39": "201f0df190cf7eccebe576e5f8d365a29f7338d030dd5283cba78d10efbccb00", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0f51ea87f7156f3a27f7fdc1bb96833bbb2e6db71a40182d5f72d5b02f3ed95d", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "af01bb9b86acc6c90e03eb55fa5bf8197605572b17610477c81d90f8a53e1c91", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "5b0367c8bfc8f8745cbbebb630c59a1a2331d311c0782929952f8414cac7a7a6", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "fed9e2cf2598712f083ba4083c068033b6f9572f90641217b214c52daca64418", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "78cc326246205d9947ca9cb280e503c867b93b27821f53f850377c4edbdf3e27", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "195a4d96987bbe98efb78a91501f06521901a4b4f339f0c3a9c2652ecabb935b", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "56591d109a91409a57294e82f5265af69844733c3b29f27f508f360713bbebf6", "T2T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", "T2T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", "T2T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -10961,21 +11029,21 @@ "T2T1_de_test_msg_changepin_t2.py::test_set_failed": "f9aea1dd4143d75118266525fb50c65c22fb842f8da6947395fffbfffd7e8cfa", "T2T1_de_test_msg_changepin_t2.py::test_set_pin": "668c723158f75c485184a033cd3b3ee4290ccec74e6c5494dd8208f0f70d3c0f", "T2T1_de_test_msg_loaddevice.py::test_load_device_1": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", -"T2T1_de_test_msg_loaddevice.py::test_load_device_2": "34dcef41c01558a1e29f77aaa184d6953c6b8f0d764ec51438e775b4a927fba1", +"T2T1_de_test_msg_loaddevice.py::test_load_device_2": "4952f4abc2841aabe33526e8d3bbbab11a67363169ab8cd96a54bea1460c2fee", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", -"T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "c1cfbaf76fc13a634e2b8a7861334997f8fecb4218141ceb14908137ef571e8b", +"T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "092f0444e29bc2e07988a0e0e6202267c33d3500cb3c6465db1ecafd7b78c233", "T2T1_de_test_msg_ping.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T2T1_de_test_msg_sd_protect.py::test_enable_disable": "7a6fe5c5cde3f9d9aa6af2053d09f20a57d3a50b5c8c81a496ac32f79737a878", "T2T1_de_test_msg_sd_protect.py::test_refresh": "e559dc474096349cb817d56d7b86220ed3f187e5dc936524484e8571c83101dd", "T2T1_de_test_msg_sd_protect.py::test_wipe": "5ee2512365b58d8266d894261af1b189457ddd89a22813ad9be4f1e7fb035f79", "T2T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "badd7baa8f333deb92a953c8540465907db77173b23b9c1b5f8e2b0c11282ed6", "T2T1_de_test_msg_wipedevice.py::test_wipe_device": "ef6f7a625bca26467147e4541e23b286c59ecc52f0b43d4e7526b16915de091c", -"T2T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", -"T2T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b89f1ff6f7ada3016a559e12aee90f51e5830cc9dd97bc36bc604625a4d845f4", -"T2T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T2T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T2T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", +"T2T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "86da2eb3bff89c0bad928ce560a875de836e186d7c8464de2dfc616d7ac9e0e9", +"T2T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "86da2eb3bff89c0bad928ce560a875de836e186d7c8464de2dfc616d7ac9e0e9", +"T2T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "19421bf3cf5a8a9d00da1de3d2ac145ca11b56d3fee2995034448915fe6a8c2d", +"T2T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "19421bf3cf5a8a9d00da1de3d2ac145ca11b56d3fee2995034448915fe6a8c2d", +"T2T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "19421bf3cf5a8a9d00da1de3d2ac145ca11b56d3fee2995034448915fe6a8c2d", "T2T1_de_test_pin.py::test_correct_pin": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", "T2T1_de_test_pin.py::test_exponential_backoff_t2": "37e462fbe92c27be31597fd36723f4ab88bcf3d328599ade4b169ccf229e3b22", "T2T1_de_test_pin.py::test_incorrect_pin_t2": "b01207f517ef8235e63e34b524621be5f4bb7e457dde9f96adb533409f53bc87", @@ -10995,9 +11063,10 @@ "T2T1_de_test_protection_levels.py::test_unlocked": "97cde4874c0952f2da6f2f41845b8ce279e4015ea95ef38bd8c0e0d55039b80d", "T2T1_de_test_protection_levels.py::test_verify_message_t2": "b0298371e1eb13ab94bd944dbfca4079e5e6751003fb9e0a2bb4dc35d02db844", "T2T1_de_test_protection_levels.py::test_wipe_device": "2b6b86e0caebab7123f67264d3082849c56ee4d94ce8da13fede6d1012b866cc", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "56831fe1a4a60cb5d0f2df41b9a7cd2170de42a411abab9c4dc2bd232fb6e020", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "ca70ffbb6b6979ea00e2f746ad940edf1f54a030be9bbdbaa77a97899261cd26", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "15a17645203e88c272f965d20dc725015f2a0c8e4dc0c3b9b6b52dfc4239a669", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "08856c389a446913bba55ad50161fe2f686831a7acbfb1c9d49694306c1b20b6", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "35577934f882470d96f88fef4ec72703f44b45643d7a919743f32f459f552652", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "baa0d2e821605d2b27e7c29bd938605c734baa34dbcc6a3631b3a8a73988c486", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9540c75bea51ea9abdbd22a55845916d04830d791d34039866717af85ad65252", "T2T1_de_test_sdcard.py::test_sd_format": "3e307eee23db4db1a7f3810af0d90d6720da8e5bd81cbd4e924579ff4528b51c", "T2T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", "T2T1_de_test_sdcard.py::test_sd_protect_unlock": "89dfea5d01815a7927af69127a7fbece5b8ba3bd36713298ea2edc8f860d6d32", @@ -11007,19 +11076,19 @@ "T2T1_de_test_session.py::test_derive_cardano_running_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_session.py::test_end_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_session.py::test_end_session_only_current": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_test_session.py::test_session_recycling": "5f126a588936bd795a13a7f02aade57b1389b0bda1b07a44be1f4ae4cd87d2ab", -"T2T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "ea7c6c9417da7523bf8367b0ed5ed69df287a72a1deca438b3fdf501676fd2e1", -"T2T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4f9f879824df90193b0f7f9f6a5204680f26048c5c97c54570276027519cedea", -"T2T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "652c86a57e3e794d2aebb9d8b12d3fa0c7f287153762790d8651c45f25b703f3", -"T2T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "0cbdb61ec21cb9f0e0dbe72f749f54928c5d33da6274e4f304e0ace98deabedc", +"T2T1_de_test_session.py::test_session_recycling": "19421bf3cf5a8a9d00da1de3d2ac145ca11b56d3fee2995034448915fe6a8c2d", +"T2T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "28ab2fc271d184caee1be75354061950a435c38d67d48dd3e88fbf3e35aab7fc", +"T2T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "9d708b37437fbcdaa59ebd4cb0e9834a7d909f1f7ef81f6906ad4090d6246e5d", +"T2T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f7822cd99f6ffad11b5d9d15ce2fc127c84703e628b1bacd2323e980fce96c23", +"T2T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "35fb2f28bb81d79daa25062670302f09ea50bb50987f2d3c50b6b27e2d6f5ae2", "T2T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "802104113a38c74abc2d8c7954b49f3816d4defc7ac3e9e58171736155bb71b4", -"T2T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "553a136f7c406de3d480b6347a07d911da869bfb96bd18fd823c13aed9e01915", -"T2T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "476ac7c4eb853323d756c8bf7342fad58c2578f09aa3f6e022325373379de5e6", +"T2T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "decc082f9e85a0e547838466653757b2803ba72fce68ce6fa3dddfb1812901d5", +"T2T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "b1bff8e72600ab4c414374161e5a07c45f6588e73c60b7232b8541be50b21d12", "T2T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", -"T2T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "ed267e6348a6ee9aa56d7b69ee1f55ef6f8b8e7967b74b00e463f4732f4cb37d", -"T2T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "cae331025c27a68575106bfa979f2b82e77acc6a3f6c2cb5eb476b07788f75d2", -"T2T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "5465d7164e3a19b9acea5b1d584e8d94fe40d7db49dce538bb8138934c622bc5", +"T2T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "10427aeedc26ca0006d2514aebe88416254c82dec8bc3cf3c96625034f223ba6", +"T2T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8ce24408bd1897be85d964abd8d958dfadcb10429a26e4b49dc6a36e4d9efe5a", +"T2T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "8560015e7ad5a6cce36c1dbba47496f3d1277aed75306f5249e2b1ba22da0e7c", "T2T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fed445b9e14a2252e5bc79eb81997a75558d9f427bf10420a034bd2a5408200c", "T2T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "96dc64c94b73f0a69f7def6bf619b268d9c52f3021da90cb1ea01be5bb4d773d", "T2T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "c0a024f0c1539d54e70eb3ffc069bb807938a0d0d67afc3c8b0831d90ef9e25e", @@ -12158,57 +12227,57 @@ "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "04ce6e67d206ce99259cb2b115f7f9c5c8000d372d1475be3b5ee6eb6015f126", -"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6c2512ac453f165d59f5d34f7a750f3ed353b29cd77db7c0d0501512b395fe54", -"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "8d29cf9e1e28de42b19b7c90c3e1242ca012bce923eb8c1f96b27386eb280935", +"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "03dbed17e14ee7cc31a094a8477f4c31924001b3eaafacffc190e77e98dcde40", +"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f1925c1df02a09de787a1c9d440ce756eebc7b5ce730772bdeb153c5dfb4025b", +"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c311cfa47967f04f9512a1070f71ed540d76291f051a575e2f52f4feaa52126c", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "fff9f0616cc0df6b8f8a8313d9a0a53a062a42be35e124799a4664f825492b2b", -"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "eb4f6f6a72adb29dfa531b94d4fd1dcfbcd4930702fbf76d1cdec61f9964f1f5", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "43e4eb927539044b85ee59689a8f38e7d76fc3e035406dfe2b052ba6ca80c59a", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "980c374bd173485c06ffc3ad2f3874762ef065762ce063440791383f1bb01b08", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "600a7d3ca182036c13ac657283a59dbafccb60d0c1c9b6b02aeddb8a82199854", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "27b09ed0d6dd37c84a35561f1098b546ed5f75802283f336dc62ee2af0612221", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "cacba8601cb23285d89d2fd3ca03959ea8f04b84daa099644724e6929d7f16b9", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "102c745c179cc2e8532989037ab9eeb22ef93776931cfa7a56abd59405e98206", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5a24c4e6f81ccb0e65b461f6bcd69a6db6548de5d98a267d01105769b0aca845", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1be12392d4068e7505b271f05f169ecad5f7f7b12c1690d2ae44900ea7850017", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d2a3afcb9f5e92f9e65172a0207a83ac372f2951fcec99fae2565a83a3a5c8fb", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "90d768219e974a83299fb3d079d457222a331aefd2e8fa69e7b2ffca7a2ad9bd", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3243d7ccd6e66de4da99fe363b72ff9d79874e2003bc313addf328e2b60cf4db", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "264cc069a974286064781c22c175e54bdb28000909b5dc671acfa03ab272b426", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6209aa5f47388c7e8f5fc371f44075c45c6649844beca3c22b76e210bcec6b95", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2524dcee47381f9479a455d9805885a2398aa97a4684934ccff7ce2dd375cbb2", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "e7eed0253526451561a8940bdf86d8dc566c48975d1bfca0853515d6e6ee0fb7", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6175f8f4c08c1d4dbd66cf94e1cc0619691a375ceff6b85d7cc98395a15dd690", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5bf8845dbe42b5b88d20e5f1074ee76ff5f25b7fac469a076fa34626e3aa435d", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "9afc89e46dfc5f7d43f47c758ab2d0c9689d16c47a48cc4b822b72ff899e2e3f", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "c497d8ecec0526e214fa3a2343be901699502e9918a26a6a677965be06e71f98", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "e9659581e610d41b9c68815f394919796009dfdf412ed9d2d13880d019bb4622", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "2d2dc64c2c2cfeb76c97323041db90d0765dec70cf070a42b432351d4b0c6831", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3b386895dc396490cce3dee33a1d4a8bcf33ba44e28b5f269cad844e8996918e", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b7fcc92505b0e347b374cbf1de143aaca54368fc9ba1e9e7d6e571eaa8556498", -"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "12d695f8b0a09d7a034453468e5759b162253dacdfc565d0f8f4788b4ab81fdf", -"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "99c4bbcda758c53dd3aa0c81dc0957c7568a68e8de9d3c553511f387fc8abbc0", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "673271fe37c3fb6a1e0096e1a951bdf5551c1769e332266769088c3e0cd6334d", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6ceb5fef088d8bbd703effa1dcbc0a0c76a1f506e929bfaaa986a16cea19f7d3", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f8af5a6e560f330d4a8dea6183ef92906b93ca14625c125492f33722e85a5408", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7846f566faafc178e190e2bf320b4028847ca58993c80fe4865dab6efd453f17", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "4bb136bb437fef98ee10aaf45c58febbc56a546c3615c77008426be88962a54e", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2f7ddf762ea7964c2feb4b26bc658003228b9bdd93e74cf99646c27235106c06", +"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "27aa756bf5d6176c2c6c14437ecb015f7f828de65bab37ab5a90705d98d5adf8", +"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "05865793b0ae18b4501f6e925b976265235050306a80100a8cb797346ea1e15a", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "6aa5eabf097b2437cb395634a0818ea4f604415766f7c41ca3360260362c20f0", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c3f63162b479ebd78d86bfa3349bdde83da52d95397d30e0314922363891760b", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b79afc35d6d1a40761d33c8e4bcd16de25e259e7ac043cb65702ad263d3ab06b", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "78d1fac89e566df16892ce16a70a2ddb94fb94b4ddbba7c9b88cd182d5655636", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "05ca30785d11d536528c3c52766381cb3b3f585b29b9072271acb0725c31356c", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5f786bf45bdd145765812ea74ad8e4efdea73365986d6572d76b74b144902642", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "99a46d14af6a4bbfee3e7a2e98bc68086ad7bb2d33de63e0bfcb6309665c4115", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "07bc8e0c39c5efb4ac285e16274a1c3b3d48647e26c30a46da4fd7962bfd2cd4", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "d3ac6f5ac34b27d4631005b9b9d06e5222c37a67c9974bcc56a8de7606f8be21", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e22c76ed93074e190dcd96701b1975d3b8389120e1406255902c9e71410f0b0d", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "0dc40b7fd75e5e8ea7f9c80b742d6b9cc37e47a87266e1ae339d5c77a228cb6b", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "c485a3fb9ffd2af82c365fcfe1e96ea7405d44fcc2d3e60e2668c055c89d0b5b", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "6aa5eabf097b2437cb395634a0818ea4f604415766f7c41ca3360260362c20f0", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c77032e824104ff9d17f7449bb20c42b8835809bbb04700ba0017b04c5f2cd29", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1080dfa36e4dcface3265ae32e9bdc48317c92c581d690a0a4c86ddbb10a7620", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3641e9a9a6b4b7404fa91189b225e53fd152daf22c7c08e130b9abfc54b1442c", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "64cb6bb13400f8e90e3d83afcd3be3c8ffa03c65042bd86450a277a48176382d", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b77eb373a43b10efe188e639e5697c5210e963b21e5683869bd2f24e5b495fe8", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "1ff5be386c860952fba1888177f4cef9c57362e7f01c807af86b397e4da11926", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a046462df4ae5c8b6b550cbb3aa07511285d1340212c60db2aeb6a895252169b", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "6171fd717bb8a65b2f3c71921491364208806881d8a2c1c57a73dce2cd1a4d27", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "390117b1a5822232c3abe11b5376c0437e277b07a6bb608d733b87eafd84c05f", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5f10e8dd5005812abf7d69dd5bd91fb19361e38766e1ecde720f0cccf98e9396", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "21c60bb14c594301678b0ca18ec8fad6baf6d61dac905f6538b1239400b3dcf8", +"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "df2b74ac03e9a3aa0ce1432cc000506d1400d5440ed8b8e6a0834d6e35afbf2d", +"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7ea7c9df4e3c7bb78d2fbc9a83cb8ab3145859658476848528153b2f6a003511", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "55f0ceb1258b17f8ed6379f82366590a23f41db712b58e80caff40897dce3c5c", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9110fe47a983c509cb9106b8c619a2a9d5941c288c32d002ab993717127cd783", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a0852703160fdf684c643ba30b7d99192b27776ab075e1c9f96c8d2e89577af1", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9cf58331ecd1f31f89345184060bff0656989151de679b82352b9da8914592bf", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f1d76fc2f8f3bfbf274d91e4f6af7e68fcf51092b9e5fc42cf137de34929876f", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2a92847082159909c2550abc19895a406ddcdc318cea83e6e227b36ee216dac8", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "550ef3ed1a280dfee383119ee41329956c47ae38162721cd3ad53f00d8423937", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b2943ddc4ddf51769b2a4e1f97272e226f9bba1d022c5c97e4f7012271cd1720", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "8f9a8607421425afded0210611b8bd0f8b05eda190df302e6da40a3c7afc92d1", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "441532e25ffed32936a96bbb6f0adc6f1d580412546fbe80f0425d53c6412a63", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c8a982a8a5250265b80f4e4c4ca23f90615f2a27c90426b9206e0940ffc71c23", -"T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "50f8c8c393c8c71994ce4aedb52db94e344f8a2f0d89a26b3dbf6a04d1fce179", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a6c19b82f7d87d23dd67b0b6fa0f113767819ea72d42bf8bd94ff685e43fceb9", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3c94e44599535deb9e05985b182eea87a341803a40a14adb974032ccd3dd81e0", -"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "999a5d667a2d5f88125d2a6d9c780768543bef84dc6a8d791b2e1e7482c43d2a", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f7de536a26c552c65ce103acf70095d0375ab60d864741dbecf96c61d8e1a602", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "fde26133f54ee834667ca2637806bbbd8e30640ae87f4753c0ed673fded09c72", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "13d22ebb279d767f2ca485dec0bd8b34af166ad24fbc4a31c2a13affb66e8fa3", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "8b40d37c0cff86133706c19210295c536569751e63dec439d46ddbe646c7d5e0", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ed993a747301757e73875034c19609be207617b79f14fcbeb6526ae83f7d0333", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "622b32eb1bc8370fd07d688dc2662025a25efcbd465c465163598a3775f8dd30", +"T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "ff6c6b4971156fb62e6d4844bd218e92eefe6642bd261891a4ced1f0f4c5f725", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "80f2d0e052a232994c6c1878a3aaf9f2e707d42dbcb6b1a8ac8bafab10ff3bca", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5e6ff4814f16eeaba2def03b1e990e9e6b4ab186d862cf05bfb1e3b4d4e6f37a", +"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ee18d6b279eec3dde84de981cbcf4cee1c6dbd3c4e2d8b54c1154befacae35f5", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2bbf95886a7d046a01f9e08c6f602dc90abca74271ad3b95342dd3f20d2d78c4", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9365e1b74875779912ab192f3c47a69a0e33fe5f3ceed120928b0ee70e0e4e2c", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", @@ -12409,12 +12478,12 @@ "T2T1_en_test_msg_applysettings.py::test_experimental_features": "523f74db7f660c261507dfdd92285981869af72c9ba391c4dfedb3f06ccf40ad", "T2T1_en_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_msg_applysettings.py::test_safety_checks": "b129e0ba2e3c7ac836b3bb4b0bc8ded1c922eba054b42b434d10499fc780ea2b", -"T2T1_en_test_msg_backup_device.py::test_backup_bip39": "09c32059eea15ce17dd07bc34f09ca335e8a6cee573fef0095cf2105932a078a", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "5007dfedc1b4420b096f76d33acc9bcf77ec6083d54ca59571f5d225dfb2a33b", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "4f13e0550f8e06481fd4f59d722d3893ea904f85fb20ec8018344347492aff1c", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "12cc00992974f9270e19b891f14db49bd57c43ffa193d55b0d697f7943890543", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d3ffc763c2abd8dfa256d80710c51a5e880c63bd36460a6a57b97df3a418d8ba", -"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e17b49d05f231444684b0ebad638456b4b6d7b0ae195180778c3f687b7d0ca7d", +"T2T1_en_test_msg_backup_device.py::test_backup_bip39": "7c8c3efab17cad82000aff453bc426b7665621edbff1bdb1c631827d23b4988b", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e1e38fc6e522d6994c1412386c6e8d2d61e459528bb8dc5dba8ce79771368ec0", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ae3bfa809f743b64260c95aaebba9edb1010e94c4c758bea58e299b57bffc7c9", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f0aeb6a957d1d9ff7d5bfd44eeac7478431776b249f1d8d5250cbbb9675ac2cd", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "95ca2fd9fcb6daa797fe30c11e3827904f0daf1309529e70debd155f2ea6742c", +"T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "2e6113b99a5464e2ab9940a29f1d93ca4b5548aaa3987a04fb4fa575624d96f6", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4c9f7ff6654f4340bc3e960b6ee143293a4a5d5ec3bc8f5bcb6604b4dacf3909", "T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "078d24fc71ed83d0d474a8aa9356bc66cba883c709f0e63b6db8405a244214bf", "T2T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", @@ -12465,9 +12534,10 @@ "T2T1_en_test_protection_levels.py::test_unlocked": "4488e2b6f06fdff05749ac271d080182f1c95645de37898457ff12f0fb190381", "T2T1_en_test_protection_levels.py::test_verify_message_t2": "cc09f0acf9e48b1355dae0be65a2a97abbe2811808feee08d46ae7146ce6bb6f", "T2T1_en_test_protection_levels.py::test_wipe_device": "7ff017de646b7cf70832605e1750c635d0eb661d51534b56007b49e82b927011", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "ac745f23dd716f1ddfc16321f076ce9c2a09104016d4fd5a3bb6f0c087b35f4b", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "87df4f0e06f4b330181c948e8026c2196cfe28442d4b52b6625bb524f8ca41dc", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "76245bc793c903336b45693c44d8baf3d5dfef5a2134edef03c164dbfb552592", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "3823ebb22af97138caed34210d3a9a72b82f3b1fcbeb1fa5adf14a9774132de7", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "d2a87429b30653408faa45c16db550586774a51d901d1bd9e78a82573bc4e9d3", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "95161e06ad9fa2456248ad2c862ba7945a0bf66b27ec5330cac8d4d75d8d0c4f", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a999c27e056e3d881290bd6836ebb14ac6ac07b6c4d942c57ec78d6af99988a7", "T2T1_en_test_sdcard.py::test_sd_format": "83d0d9b4eab3bf0eafc22d7d95e8b70bce477ba9c8b4ba13eeca9380ad5fdafa", "T2T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", "T2T1_en_test_sdcard.py::test_sd_protect_unlock": "1302f9a0835cac621142a17031d2150553e676261a3eeeefd32fcf1e69c7bd1a", @@ -12881,7 +12951,7 @@ "T2T1_es_bitcoin-test_signtx.py::test_information": "30197b89e17f6fa38685e2fdd19781a2b9c37c47d02356e50c41423804e132ce", "T2T1_es_bitcoin-test_signtx.py::test_information_cancel": "092c1d46c801cda93658dfc8d7063a6c9cb93b95c7b1b7ed8fe63293ad3d4b4f", "T2T1_es_bitcoin-test_signtx.py::test_information_mixed": "e5f850f5d4dee4f887bb9860679eff5bbd9d5b594977a7a1592ba86a77ea6be5", -"T2T1_es_bitcoin-test_signtx.py::test_information_replacement": "a4a25f0b8c073cb3a03a71731dda087e015b4160e7f3866ce6e1a271a00dbb08", +"T2T1_es_bitcoin-test_signtx.py::test_information_replacement": "141b29131725f15dd49ce52a7d7c926225a4e5be9be9b695cba48798704a4815", "T2T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "9c51658a803a2de18476f46961093d22723a77a42a534c2d5a07e82b933f3ca5", "T2T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7ae93e603c7376f1cc904b85362c89417c7761d3ddf3df46388500db0d6994d4", "T2T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "0832f29b1f4f6dae9c014a10571fa7df21cc938b0cc42f47e406844e5207f2fc", @@ -13038,8 +13108,8 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "dcfb6a54ff7fd8ef200b8137cc97b145e785f41ff409a4026c023361d2d2bd0a", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "e4bb449d64ca4d6c92f253dee3bd99870ff65248cb086f59c172b41595fe7551", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "5d70b466935822b6c6c5e6a1f7eb750a3a425379e7c3dbb56ab5cdfec79fc98f", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "eb2502b81e490c00ab1a8603ef676ea9b4b88b51f5a505118d6233c1b2511fa2", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "6e5f80f927932d01089d61dc814db00ed586b64ef1ed69fb511092c24c5ea5ee", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "ea0dc1e21b0a4ce19ac733e603fe9e3efd7971d3ab5d6708f2bfc1a6d78513e0", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "8c258f0741fd3a6aea9f16240c3e58ff194c00b8c5a2c9830467e0df5b1919d6", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2c19fe123edca761389c3a3e07abd28fc5e50d1fdfd5742a2be939b133f18899", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "98c6beb11751523ad48e591e39d3f4f68e0f46496c16ee7ac0163c26e0b9debb", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6838552f5f44c17b5acd20d76cb1e07a1183fae55b2607bfe6a64481ae7530a6", @@ -13069,17 +13139,17 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e1e82251a53579070702580ff1103087708167a09dfb770d23fa3229ce88416c", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ba46ad5a447dca20038cb30e8dcd1d188b44f4df9e0b15297962cb96cec64cf0", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "51cccda41dd222cff0590d4173023768919769f2687897482b06b69879306edb", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "f0d94aae61a5080908a482ed570c148835aaa4ce0c5deb93bf1a8017955c553c", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "400ab7595f38ea923f2f8ef4d5494d3d487e1dbdd4a5a6378ea1a232a4666aa3", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b7664b3fa36c9c4e128a95363a1be75f8f881b688fa951222eb9062948b66352", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "ce681b43f8708d7946843f0161f582e04669a51744215cee76e8a2c1323a2fc6", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "2252d25a31933968e275e8c0088815a5641310ddd6ea15ef7cc59016a38ec793", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "ac95ccfc164c9db264d129d2f690b2d7a279de33e4e74c3040a8f434c96aa9ef", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "c62892b035866b1e01174caa8d49ffb52ee52b446f56f65398fc6140432b1e03", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "be2fe5a8287b1ac71ff880d159d930b7573a71bcd5d80ef767ff205404526502", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2c0a5bb5561226396e358a30191f9e10c8d54522fada452529a37f1e87e1bba2", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "cedd58e10f7821a44ab7713ff3de22e65aa02c7bb6a0e65bb9e29b2b025f3d4a", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "9b57bf9a10ba33ff9d87a806cb231c7328580b4919afe92dc78bba2a25c290a8", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "673bae2adef7afb59f8dab2a41507833b746253dc808752db4cdbc5bcb381909", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ca4dde19d88b69842e31fde653834c75c76ea552c420c3892cc2efb25c0ccfb3", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "834f8f094b9abfecb12e01be8345fe9920d12b86e3e89315dc0df77b308bc4f3", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "bd85ad18729cda62f40a3c1deded531e1e682b776c0939a46fc1350505abcb63", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "e86c7df0f844a58667b131eb0b8fa2352b5a4005be56a585afcfcb458710ecfc", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1ef629a1064785f0e7fc2946fed0afc58887609a040b343f820189e8ac55ee63", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "5d80a50c6816dc2817ebe06035d4b7ebe32be3df5386ba4df75612bb6e0ae9ea", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "206400bbe9eb93d133150578c34af06a2dfe3033ac6a31ff79d3d3fe61e559a5", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "c1beae7f6aa8c49b33bcc5746b78649ba00417eeeb10adaf9b1b563e7643f662", @@ -13109,10 +13179,10 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0ff028a42c0d3de13b76d12e93dad860963f036c410f23cab098b6dfa40204c3", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4fcf207e8bd4721493347e8991cfbc4a8557ef603941c76defec0dbf276a6a0a", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5228918b8eec488834d692ffb6b856b11c9fb390dd03cbc7669c60af7ace1516", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "17d6bc09f4895320e8bf67097dc4fa8954191c6ac76908689d47ad21098e6261", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "3cbcd35d46df53249a96e397ed7cdbee67810bf33c98d13bf76f484bf2f59012", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c3550908023a0a4987006a293f94f397b5c0daec44032d02b71636595ca799e5", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a78d017a315f664a451974c021db8b9c9f0457e1eb698e869acad0e2162d1095", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7a1ed3a6721655eab77eed4f2d62923a86e538c5c457f48f088063cadd9b35eb", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "7a5b8d5be9f3a9729cc84a66981dffb640c8f7f48cbc0b8f937723fa0d6a354f", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "74666e62bcd057e366c0086611d17040008b3f2d681cb24b482f75f13cc3b361", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8c6aa7136407b1ac9bdf2eb920a26fb802e085ac24d999be99b2eed05e1247e0", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f5861777419681afa594b7d2fadb0f08bd83a3d8794f5a082fffbeefee4eb74a", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a9965d207bb2385b1174f4cecb16a73c49bdec344734df0886978a3b3529cbbd", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "388d35b0e0eb15b5b39aec9db3191758d2c3d86e4d22036f4a60e59b15b23882", @@ -13122,9 +13192,9 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9cfe0c547495d9b209d67e45274529dff8f987e185dbe92cb5ad7f4ae8639dd3", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "4ee28072584eb697ab9bdc9dea77e68c3b307430dd0ccc7752507dd1f6a8c7f4", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "c9c41d2cccca4bbf3afda0199ebfb59b169c7d453c05b9f93d2c388f92523325", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "73086a92bea891480db93e05e8403fa829d9a22f7002aaba08b94f8a322019fc", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "91fe68b86a41637724b00baf46b419134c19466da6f0a09a79c9ba8f4ee620f2", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "0a58945755af91066f91b8038abb115e6f6940812718ff6350ca2af603688be2", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4ce313b45434db988fa71dcf3390ffe174228a4ecdd983fe4c67cd8008edbfb6", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f9cb1730549a759db1174eed813e4724fd00163e74a170b4f8197e843c6a42e9", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "122022cc9da90d7d9906f1e4a6dccc2fb49837e307b4280b326d8c7bbdb91db7", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "40d2967f3c624b30eae7c31f85b6a81bcee47730f9f3199e8ac20db6621ca975", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "60285715c6450edbe423a19e8b0df400d5956c1640680244a4347c91ac6d745c", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8481e7ec34e24e41df8ddc65b6ebbf64d9a885e5dfb463d775cd7227b5f59334", @@ -13153,10 +13223,10 @@ "T2T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "d89c872bf1afc6275a1ea61229e01d8ce455478858296cb64eae09570a68f62b", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "906254885716b0b3dda7e84997c5088b7b8d1c51527c5a15ea6a44cc99da0f20", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0538f0a988f6861777907d40c5a8984fa0b0b99510c7851215d727946a30a062", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4197d8e569897ca8d08f9bcaeb489501f20f6571b7df0a5b9328a0cbdcc4d0d9", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "1336a95c33f0ecce91254e2692df8221e5b5763a069e0c2e7333f04c16c88fd6", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "474f42ca872d0510353365a21dacf081dcacbaab834fb8d959cac90c026775eb", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "7478654fef3518d5c95bbb6b8b6eeafd4f943090a741c947c6ebe4d2fb8b55c8", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "481ab377941c08d97a206616cb2f52e37d573759475dd91d9f9aa1b9709f2ff6", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "92d218a0409671c77c3702e8435fbd3f97360b088afe4bc1f2c11d41a32e942a", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "69cfdb39e02665599c0168d69e0419a0d3601604b5cdc2c1d4ac00c43b373785", @@ -13221,7 +13291,7 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ae7136a9c82302968e88ef958d21256b3963791009770de828ce3837b98e2186", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "ca34e89ccd20410e1301f864c9371c9be3e63991cf9c299c441c83eb312498b9", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "dcba7cd0a0db12546f434edd9ca58a8c4e71286e45c5ee699e7241e5e3e27e47", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "489a7376b93d1caa83c889788a762f46c1f6ec4577d0e2753013f1162b9e8d2c", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "321d00f3476599733b43b066c9ac38a3549400777bd5ef1555519d662fcd64e0", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7c0a59c98455d2f16e2f028a7636d76aad371036f6b8e5b0b5164c796296144c", @@ -13541,20 +13611,20 @@ "T2T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9cfaa56b8af2aef6d2dcfdead3f936f3375d65b06525125c21df1275433f3543", "T2T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", "T2T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3d2ee7cdb812be154c82d310cf74e6614ebc326ff286c7c75a82d4eeaee3f5fb", -"T2T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "e9e534e578a7cf5f37a7fa93dabae02ef45c1f8c8ad2a4e506b6b799cf37b6fd", +"T2T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "377d2a1feb8fc3cde34c976e4b19dfffdf9b6b221fa2042e851e7801e620de92", "T2T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "fb31df4d4d8a94f5a471c266ee597ca97352884a4fd97cd0c7aae2c0acfe9548", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "2b2e09b39a482294ba37f867f403185773a8d84df136be43fdc3ad361d12a148", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "47f69b7cafdc58e6a0168c2555224da13586a0b6de1112b3738ada17a7c1cacc", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "a579782952a930b4ebd223d19951ccc7bb9612839340d1f92354123c906b6797", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "eb28a58b7171fdbd6aa5f162796a0ae47050704b0f3d0ba3d38ec5a77d566c98", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "fca55053f6cb47ed5401ac09ee2278c3a1bac69f4708c17ff7b991ce3e0b8849", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "35b6d749d03edf13df172da955ba64bc7fd5ddbdceffdfbfdfc4688225d118f5", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "6455496e1b09301429aa2fc46f81065f529a5fd0ae90ea873bcdc7a28f46a27e", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "d8d3e7b192d1cbc5c3ee43f3146a6d0cf72e16cfd087b3996643ef34dfaa35ae", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "5ae04d18507b7f636af47801dc605bed088639f6c7f8006a5884bb8fd97b3f95", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "7c963a544b213d7341ce241434de7217d07317053ae90cff9e71ed7ee8d266e0", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "5dd147dadaffebf7f266ecaa2f27b22ee20ff0e7357afef2a0f8ef830e727e47", -"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "649d37ab33761e5d6af86dd03acf64e55f21ac6a520b6fa48047f6d2b3cef818", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "8f7e826a9c3945294b5a795363c8d0deb25d8279c9dd2761ecbab1cf285da92e", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "68eb87c47ae248070058396417b756dcb00a25b5860b11da9eff8d6b4cd07431", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "842a18e096b5e3feaa0f6c055336f28ee468b25d18110c2a1fcb129b052ed080", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "830c7952ef9cd9781b30d7d01c4c5ad700ad56d3858ba45c4038ef45ad4f78f7", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "079814d51edbc7f8462773fb3c8c6ffc5bd0e4a1fa05caf2312f65c1e30fc8b3", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "dcebf1dab82941ac332545536ab7e517aef87781f409c49b8b7ffa72c165ce2e", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "c2d40d77c05967b910aa4ac6154042c18f545a54c07933c58bf5dc3d20dd0acf", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "8886d679c51a20747372add0984db40f93d984d41fa5677af59980d66146ec3d", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "9eafc8306f7e1f279f9fe33642412b0c7a257789c67224fe0fb5a1c019df34b3", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e9bd7be22fc8f5982e6bd1f29aa8377db2ed4856cdc670492f83d03768811afb", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "290b6b280ed5e8fcee3e259281031e6c30dfe9fbe44d9ebee7b694ce136e43f2", +"T2T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "1eaacf0efc69a67002671769b63943e0716457b83f985a490c5bd2c61da36365", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", @@ -13646,57 +13716,57 @@ "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "7e0065e2b2ea90de81cc374acac14704f11b029ffaebe646b166547f96f02c04", -"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4ebbcfdd859b77b4cb8679f3d6cd506d164a806ba47648e38b0c08f82f6ecc52", -"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "6b145744e38c8b5a166b00d39d93076edd266ce948e42ecd5f774876fe249bd9", +"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "024cc5cfc6aad189dbd2810e1c77ccd925b318e2c2b0bd2cf246a3426c29db26", +"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "28ed05197157a35387fc9b3f17674d1afde3ef7512d9f70f8c649f2ad451ebbf", +"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "fa5f7dd12d58c8cde0ad1ece0df6c02f84a79cb9ecf8d2cd6eb1e98abeed46f1", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "18325a11706b81b27a9c80427fdd4298ac1e10f908698e29d23cc03a878dbfbc", -"T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f924ac5735b5d1c42ff10bb5d74ca08b22468a4d8dd1d6b9fbe7a191d5272c76", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "aeb20740f1aed49544823071d0fb58e942aa39ecea8dee58f4ccd872801ce798", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7a010cdd6866e367b0c0790d7ab31e0705a81dbe3c49b5b679d895fb5a97e4fb", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "2c6502d7676bfb4f7b0cb3e93be9fd11bfa655a7115a5e1bb712eacbee0cc6f7", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8f1970fc42bbffbd429bed2d6ed19b2df86f82264db6711e043d493d2c893d00", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "cae7cb874a05c6f12958687e45bcc7f8009a5d98aa757e0aa266aaf521e9fef5", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "1b0d315dcce62c807d740072da246ef399eb4c031ca06a20be9b43c0efb8b619", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4783ef6eb4517eb96c57295ef5a7cf0faa7e8ccc344cafbe16b68af12dbea83f", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "859c80626b65a088763d6c29d0200c35c65e6e24da9dd7173f2c251efb8a5699", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "3353b91407b4ddf294ad7988af6752292f0fb5e33102bb0d739946b7d16796f3", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "308ee833650cc0e925f2b118f50b36bd0c4f65700271cf5bc9a2ac2c6e8eab80", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "721de1cea29573b0254e3a0e9c528a0dce689f704c2fb3804fdfe71df435a345", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "dc511287d381e40164fb32fe409906f4042e17367ba35c7d282e281707639e30", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "aeb20740f1aed49544823071d0fb58e942aa39ecea8dee58f4ccd872801ce798", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "25d5ecc44da79bcaa3c31f8a5e4d9e215c4c4be125200cefa7d6e0fd35348add", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "46ff3391288bc879cd524d75440fdebc9326b65da5d4c05ebc9c57c728190b1e", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0e8e437276ab32efc4d3c961ec4f3e1ba8ba4e03eec5d640b52a38822d037df7", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a6d9c431ee736c40d7600e824321077794e207d7088b713f96ebca875e9a8f38", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "1a41ba9855f21bcad666b9e6e7077aee2cc770edb38b2d632a0210d5611b2c2e", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f638a59f17d88b973dd0ac432ed78e3d411fe4a56229ac29c845e019bef5de16", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "cc18812d2f5b7ef5c23555ebcad59a28e82c01d06f2c5907b952156c44045ff2", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "0a8fd0daaa315189ef7e063736fdf0301bd4ddb36ec31e2250a4f66408b1dc7c", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7d4ff61c406026a3c79cf8438e656a4470cd69524fc1b32ff9876046e69355c4", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "13d9db7471734b2392a20df9a77229558c7204f3ad12ff1e94db94bf077acdbc", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "138aabf6bdefb4f490ebc3a03a721bda0df94328f636f157d05955cf74bec129", -"T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d405d791a687be77da11e1c7b37eb49feaa5dd74b5746fac42c5916385c8b63a", -"T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "611d56d305fa5d605b191b866822428e99ab605e7634190e70d60070ed8f3195", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d224c8e21874c5a238a21cab83dc0b7ea8cf6b02f05df42b6a4cb2f3f380deb7", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ce28932ea3ad73e477b3d803d3e931705f7277f3b41be8b2de5f47d7137ae8ce", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a602cce0ad6488ec3017592345edf5655288c2f9afb3a4650cd351aa5ede5fa5", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e92fb0bc5645bd6bef799b291db6df29f43f72a25f323f8551838109ac6c7e6d", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "60e586ca000d39348f3081e31e1343d6940b583e52558298e6a9828dec1c6f0e", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "bf3fdb0a7070c901f72024c23e73f9a09fb8f51ec51795e5895199b4f466a2e8", +"T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e934061356abcb86ce2d029a9e6bcf0f98f87a49c499a54b02709ca920d54c2f", +"T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "4d527817543aebde12b767989f020b465aed2ba7eb8bcd6aa2f43c29cdf576a0", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "8de8faec5ad01e29ddd7cfbf5917ad4d521350c292a2435966a8c58e3a747c16", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "4d322fbe767c4f2df793d8fb33057de57be5253216acfd689b36aff3aa7ffbd5", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9cf8b210c642bfe0d2157896df418031111ccb34d4bd4b32391c04bf53815d93", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "fd3e6d57ecde482e2ad0079dc19539876db95ba57db6b1d2a18ea8f8818979ce", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "da731736f683bf7d8ba5c45c57aea3bf5d0fdf613690fd4f5e76fb3f86a7c98c", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "00f18b42b8aafd635c4326053cd6067c243d32fea7e12f4adbbdfded1adcbb6b", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5b3c0b26b7daa7f688d0532b7400d9a5aefb3d8e0a8cda43b76720daf8d1d446", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "78ebd0344bdd60346b31ac681de39b9acad73065eba1bd2314d5f232becdfea2", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1d8859ba3a50f0771be8f7e9a6d92d9f823da0ddd19b38a36015f6362b70bc28", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "4a7bf8e765ddc14d0748d63b346f6b9d7e13fba3de455a38af8d3f49a579c110", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c0f8ee3ff26c3bd7d935ac2316deaaea1d4565b2265d4dda3ee3bfa43c53de04", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8895e0df1aa3939ddb582653c705b173150f50fcbe52112c4926a708eb70fff9", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "8de8faec5ad01e29ddd7cfbf5917ad4d521350c292a2435966a8c58e3a747c16", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9bfc6373c0b17e848aed2af54819c8a5ea1430f14e992e68defed671df988335", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c219af5138402eff7218e3aa3e1bcf4cb49e13e9f01a78fc8d2735e08d6e84d7", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "a510debd7be0810c8a4b0846ae7a5de062d1c32096b3ffcca86561d9f17307c6", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "294dd95f70ca41064a1efe938b0cacaa39a42aaa3310e3710b1f0519bc2d1468", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5f1bba83c9ecf2a47c2564d9f2e584a9e30200286f6c334a09454626c81e93f2", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d9d1a087cdbd6f14e3fb73e3101201b53c6ff2c2719e4257eed14990158d9efc", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3434f4acd66d2656a530b42119771221cfe98892908c311990ca55fb79a40bbb", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "a0608bb3ca9ccac097d98608291eda6875d86edb83bdaf557fcca03287e45fb2", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c6efa351599ca3f324906adc7542ea69abfdb713a513c0e53123d8f33142663e", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "caa8579a8ba2f54cf68a61660ba3b82afc14aa9cd405b2c43a96c3ee7954456a", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3cefe0b78f6f345f8bba992e3830ea36733e225b78321f6792619de17448562a", +"T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "66e1d883cba172844d6ebd359209667bd0789cf8db0d965c3bf11973aad37f2a", +"T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "49bea1e7ef0d66c2e1539e959ffeeb664487620cca47f73a1f4fe1c7c1332662", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "16df3990af1bcc5fa45a1ee5d06aad24e81d649cacf04391dbaecb2baab231a2", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c4a3ef72e2bb58f1ee6b3e17a63a6ba19c7b6c0a79834a8c44cc3da81abcb15c", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c253a9fbf9071d01df56b5ac6940ea143dab02980b53737967fcf6d65b286e6b", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "879685861798c5e1d30a78f9979f4898b9c4f8417c2d5b7cebf40de9e740bbb8", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7414731eeda17258fd5331d346c3430adf902b2b9f7d94800bfa0f8a31ab8857", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "85e488bdcf0c8b90679b3e647ae90b533cc7055069ef5557ee6fa2423206d0ee", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3feef5d60a1a5f6ab43f2033ef4b0a266c70223ebbec77b67bcc14ddc9a50e40", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "faa3527677ffafb45b176cda3164dd7d88f37d541c8dd9bcbd62b447483b8ddc", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "7a4689ce92194a64e29964de078a02a1e2348914b3cd91d8068026bff5e5e021", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "215421830b8cbde327892fce38c042d95db05a321a9979d206b99a4e59ce4fd6", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a3bd99f3660d1a3cda56e9739bbefc724deb8eeb4b73246e84503bfe789bde37", -"T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3513875bc5d108f1616cdb3d06e00fd8ba172c83477fdcbb557e23aff433b654", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0e20112218a699d6a1aaba78aabb7364e23470405541c41fab44e05780f399fd", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "61f83c6f6b2d23042faa825722826c71d26347c4d2c5492009a9f7fe8b06e276", -"T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5595c2a1a2a3f549afd11d840a57664550b771a3eb0bdf98c19727bdae0704d6", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "672f5fb5e66ca26a33a9c3019b08ed2f2648b18390f7656a34641bae1144cae0", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d1b9099840703d2fad41a6ebe2746163e1debb400f52cfb8714f156b17a0839e", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "206a32c821aad318cef9c4341bbcff0b9a4675593ce6ed6c7c194ac6d81c391a", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e1da87966420af70251f5ce6046ef53030782e64821d3db02536d72218056722", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0ee708b2f9635a52683e6e10789ae3091a2b1ec1cb42accf5967d9cc0b988b6c", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "54c59456ca0ca8816164f3807310a09327a9fa3e6f7ce481649a9973cb60fe9b", +"T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0a23df1a9e89dad3e5a69658b030e348ef3a95f5aa5fe01abf24825bd93b074d", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d5666c68fbd29e56eaa2c0cea388cab8a5f5e8622824ddd119ac0560c32753bd", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3ae125d535471924ff9e2ae570fcb272b9578748dd3338ec2d2f6cb6dde5ec84", +"T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "565595f169db103f8d4c6a51ba8f58f4742f52505f9001141798e2229182c995", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "902627d74337b365298b5d9b41e1d999270d8feacf92b6da7c2aa0477cc07c8f", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2404d40d37f1c69b82547d42ee290bdcbfe7015322a17a6329d26ccb75e92ce3", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -13892,19 +13962,19 @@ "T2T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", "T2T1_es_test_msg_applysettings.py::test_apply_settings": "aadfca17400ccf005cdf6c788e8fc6de11bfc6915ec48b9742d1442928bad878", "T2T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "ad53c794207f3d27818e4f83e79d3af8961783aa32ea18a6bcf49954f818f4b0", -"T2T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "82add8bbbe096a95cdc31709555073feda73af3335ff4b7295370f5116bc99f5", +"T2T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "b1ada3ad447aee421b0a49f7391fde2f9daa7a6c5f93fe0bd6b5a08c11e475b9", "T2T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "5f9a66c66c9f3bd30872a8f9fd37251cc5ed587218fc6752dd822fb4c159fe4c", "T2T1_es_test_msg_applysettings.py::test_experimental_features": "ba0bfd7a9e8ae362aa44de04b2c954436a58fceb358cc3042c2e415406397f6e", "T2T1_es_test_msg_applysettings.py::test_label_too_long": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_msg_applysettings.py::test_safety_checks": "74b8d81ff4612e2a0c2faea87ece873b1ffcabe7a908a0f8896b76b075b56917", -"T2T1_es_test_msg_backup_device.py::test_backup_bip39": "72587b8abaf39c6437ceebda9b5adc0cd0dc1ba55309a12bc7aacd7519e5e54d", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "d2f760e520d57aab9f032b9890f7cdee4cd6e8399d554468ba9183f1c8be3685", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "400528125d0574ff08405d3347572f5628ef46048603ac0b6eef9ee035af6f8c", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "8e20c5e666c5e7b616ac911892cc199a1b01214017a00facef383c115f64199e", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "43d3ded542ea47db6f004f5b07d27ae8700c1f919bd5bb370b555bc53d3c4196", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c11497dbfdf0bedfc960c5cd13224af3f0ba0c8f59972628f230d022f629f54e", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "a6e0625189fa40f77a0c2dd58c76faac5f3beb3b2386cfd75b6c6efce1f69c40", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "02ad3175184eb9443b8e19b079bbddb2da91fca79733bc19910ef1044b0ad080", +"T2T1_es_test_msg_backup_device.py::test_backup_bip39": "3f8085c06a79fd0232c9ef93e20a6713d350bd2189c47f3a5a38a13fcb908bf7", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "357ea1465c0e72397c80d3fca156c39c6ff7b281609622f6fca0f2fbd97601a6", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "96a34168c50724fb8d17f87c7e870dcc83bc75ed31cd44079edb2bfe43931166", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "83416177c4bc7da938e411c6d0a14616be9486ff639f4f1b4ecfe4e836301562", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "05753b744a3526241a602c8826566798a7c1a7205dc6b4fda6d5374172580a40", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8687815e7a6293bf7f3631ad9c09adf1f23e554ad48218e1b7f399bce6c9797e", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1127acf16b6ec6084586fe0448a99c50b09d5e3f05058a800a4216f28e0553c1", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "1087a032a04a6291ba82822f6583f0d25c5bc6434bdfff63c1f4ece19f854ccb", "T2T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", "T2T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", "T2T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -13919,21 +13989,21 @@ "T2T1_es_test_msg_changepin_t2.py::test_set_failed": "d8d349f8486f4c82ccaa5d874cfcc4a5570e5da1f7781d332562b5073a70e802", "T2T1_es_test_msg_changepin_t2.py::test_set_pin": "762d7586fd4f0fdc5b0ba55e5093b749cadb375f92e8911a37480385d2c325ca", "T2T1_es_test_msg_loaddevice.py::test_load_device_1": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", -"T2T1_es_test_msg_loaddevice.py::test_load_device_2": "06a99573bb5648f29595b40fdd9147c9980e5307df65a164b11fd6bf37d5e925", +"T2T1_es_test_msg_loaddevice.py::test_load_device_2": "1b5650bf7c93fecc40fea407f62c445e3cf508df65f594849611c1ecc91af5f8", "T2T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", "T2T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", -"T2T1_es_test_msg_loaddevice.py::test_load_device_utf": "df68f1caabdb888bc99893b727c1f7ff28add3c1db95a9f6fdcd27069da3a687", +"T2T1_es_test_msg_loaddevice.py::test_load_device_utf": "83969f2b002d31bc29470ee5b139fb1ed6dc657d1278b65694a7da76a9468b7d", "T2T1_es_test_msg_ping.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", "T2T1_es_test_msg_sd_protect.py::test_enable_disable": "e902243f15441eeae15a67804f7f1d69751d0b160302b4755e2091a3a76a4668", "T2T1_es_test_msg_sd_protect.py::test_refresh": "653c60d1ec6b7362361ad3caa75d7ccab20db71b01d9c5047727102da304c7e7", "T2T1_es_test_msg_sd_protect.py::test_wipe": "b119f8bb1396f224e176ca10a56c60b7ec10f54f1fd9e6e44ab7026b42b6cd4f", "T2T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a9d016298b3097cc7f936d71449e5438eb22bbc3d758082212764daef63a3e11", "T2T1_es_test_msg_wipedevice.py::test_wipe_device": "30cfa8e213523185556b09a6e71c27099434484689103e88b5885f9616a29cd9", -"T2T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", -"T2T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e2ae6997a120912eaf4fc8269f609f86145ffdb1e9f6fdb60e906cd7fca7600d", -"T2T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T2T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T2T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", +"T2T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2468f75bb87b9dd55c5cfc2d2352efc73ad03081b985cb0e65672157d07752b0", +"T2T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2468f75bb87b9dd55c5cfc2d2352efc73ad03081b985cb0e65672157d07752b0", +"T2T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", +"T2T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", +"T2T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", "T2T1_es_test_pin.py::test_correct_pin": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", "T2T1_es_test_pin.py::test_exponential_backoff_t2": "fe90f811a193fa9caea42c9f0c772ba01bbde5d363fe5915818a86922c0fbb3a", "T2T1_es_test_pin.py::test_incorrect_pin_t2": "5cd69e5b8285a1a8e076e570f6964868d2afd23a3e40aec6fe2f0879adef5fb5", @@ -13953,9 +14023,10 @@ "T2T1_es_test_protection_levels.py::test_unlocked": "6bf1c8d03bbf9a844f5fc4e31fe7faad8d6c49a9d5d8edcd9c0e04e975386632", "T2T1_es_test_protection_levels.py::test_verify_message_t2": "c970730c7f45321957056c9c1c47ed605d50ec6030a61c093cc82e4b910dd26a", "T2T1_es_test_protection_levels.py::test_wipe_device": "9aaa390ea2296772b8715597159be66d6660d5c418ee783eb44d8443afaee71b", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "7b6dad1637154eb006c908b1d42a4ac586095124ef181b52b95a2227b51948cb", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "3aa092960cfd10022c75571dd4bcda206c5859147a2a0bd6e563baa3d3cc1cf9", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8d9ac03652d328978d3005af4cb00397f78fead4cb6ce73a5834675c6fe9cfdd", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "8ad10ae991db5f43f0047d1b6fbd8969c8c8cdf18dfba33f555a90c2403cb8f0", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "2f9a30a28c168a6aac46828779cee41a00f3c785bc8bb23a30a4efbbe1336292", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e7ef82c1999c0be042ba7bd63a78e0c0d60f18cca853ba21c4461e517c33ef87", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4158d474cffe3c6b852c318316eb910a5c92226742fca69755fcda480577cc39", "T2T1_es_test_sdcard.py::test_sd_format": "96fa6f12c78fc4f0e0d0e65e07d29772b9a27291564a7c12b0ec18a441b4b2fc", "T2T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", "T2T1_es_test_sdcard.py::test_sd_protect_unlock": "7296463f55e2a2142ace309c3a6665e398103e24b015ec0aeff34d2c2537c697", @@ -13965,19 +14036,19 @@ "T2T1_es_test_session.py::test_derive_cardano_running_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session.py::test_end_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session.py::test_end_session_only_current": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_test_session.py::test_session_recycling": "e955afac10eb7a6302ab19dceb01feef7592a49be97cdd5801acc3a28243bcd9", -"T2T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "c1b4f8209829a6da7445b6167738988883a0bc694075490e75783ceecf537ff2", -"T2T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "6abbcd253e47a6efebc1d3ff0866ea84e0426b2f55fe3d8881cebd020282ccef", -"T2T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5198c4b55df400132abc4eaf03daf53c552a93e7b13ca7baa2eba39c7065cc82", -"T2T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "cbb2afccd5ef1938d1d86aba062807c58a365b3708f93d85c8b6fdbd3ab99fc4", +"T2T1_es_test_session.py::test_session_recycling": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", +"T2T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "207c03bb17b8e59d362b3ceb0bf91fd5313f4a6f19394c0083f310adfbcbb9be", +"T2T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4da324dd8e5e834b874c0eae23ad9a7d12921eba9b8e669cf21c4e1942f0222b", +"T2T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "62ef965ee7587f305889336d89c040e728297da6c1a555316affaf8d5d46b025", +"T2T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "c56f02c025321e37d3c1f92e90b2dd4848ee0ccbc3ed4585f5507c34baf44681", "T2T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", -"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fbada0e47e70d3178eb9fa71402e9dee562f3e2a98df254e7a7d5a04c02b7791", -"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "5b8894a84f8134993d8d770260b53a189cbe09208e9b9994341add078e6766a5", +"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "2f58ac54c73c2a20b25e2cddc3edb0d8731344e4db075de49ceae14c1122a5b6", +"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "e8ed03435f17e920e4ad165b74944218ff8b0f760f498aa137f1af83a934cdd7", "T2T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", -"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "cc47f9742cfe8349db52a3917fa21befbc390abd0e0bf3484974d09c6cbfda8e", -"T2T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "72c76052749ecfbc285d6b0a36f309b40e4c869c168118cbacbb7aa9fd17cc09", -"T2T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "90973652670a2e6fb41b34f4c48f3c9abba80d3e6f41691f78659bcb91b8a5ef", +"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "165c38fdfbcde6e612ec45274d020fde0f6b745ee2fbd64391b9e349ec76290a", +"T2T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6b91e01b3180c4bf36cd729700622a853a76e5339088d5de1fba7785bfd699b6", +"T2T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "3c1a78a7085370efef3ad1e7702687e92c1e3124a9986f6a2b65754fa6e7fecc", "T2T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2e7b27ed5d4bd60abd63d89a9b202feded6732b47388c95c59d711bb2a7d35b8", "T2T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "fce669ad118178bf67066aeef778e16028e63dadce84337d81232abd241e56a8", "T2T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "55ac235b00f0084ad9975ed77ed430f7bec60ce9bd44be26edbe040c63d13dbf", @@ -14508,8 +14579,8 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0a67d101b35dbdaaebb5f344a61801545445396c2d7270a9adb3132d0f58ac3d", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5a89c7e7bbc72bb983afc2c2af60d95921ddf2708616d2d5c342b25a3a314e6a", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4f594bf9acd05f585a15ac45d7a5d260129d4eafa00743d26b24f5772a918869", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c4613563acea836244a7ecd2d0d9caef2428b0be3b5d164c8803ec492bbbea23", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "95735cb81c4ccc922fd7758fb317fbe5f538e90ed4ac7b9c97de25a674218a31", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "f75a4501235ce5898d458242083b5e6f96f1ffced1384728d1bfb87aadbb17fd", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "9f8e293d2d074e23726d8aeb4cacc8649b75f60fceda00bf0444621a5bf90b33", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "86e8b7419f6d6c21a27c253eb0b35c0d9436a289c25e8eeffca9214d43c8e82f", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "cee382f33dfe57030dfc80193a7bb0ac01a2fb021b9abb42526229f2bdad11a5", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6bf47689dc005ff8b2c8d41dd84c58c39ff0b298e2e2f1ef985e54bf75e8ed1d", @@ -14539,17 +14610,17 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "35abc08942aaa0f711188d5bda2838f330b1ec4b982fd0e3cb0ec02becdbd975", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "85a2020a385dd9e4a884f1b3cf97c1aec50773add42833b886ed71a6d75db6fd", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cf3be7e08377134c4118bfe9147a6783fa365288d711a8bbf80eea017ebe1f07", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0408f2010d1dbbad0ad5b647d1a4844ccd092f7fdae40d927a07bd63003335e1", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "551de185b7f7aebdbd16330acd8cfc2db0d7f4af0c33b284d1202445eaffb75c", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ad892b092565d7eff3f22b73c478b17d207761ce22c8f721b71a184876238d35", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "e8f0daca8ab522f7c97d3624ee13922711cbb39a9d35e7dc64b6c062e17ff336", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "35605eebe09625b4199f00fbb9a99a1d5fa9b7b9e95111e01a8496655d473cb3", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "faf87601351b6c853f8e4312bbecb228fb17dae603fa1fe30b4b91f81d7cbde7", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "e0def3acffcf941f24fb5c4d608f37cf3ee364d26059cbe128f02e8a4ac7c8a9", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "69a98654bbea558a75a6c80e1806c0c82bbc1637baa699e2bb654f0b2ac0fe97", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a2557fb826e3bd3568bf3918363865b368b2f0ada5032de9574a1957c6a26b81", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "65b1a1518e976ac9fdda81403d8ce9b60a208b0648cb248202a36034a9bc5258", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fb2d9ec0389f9fc2d5fe8a0481e76b4a123c4cac1b46e872ac8441e689eabb71", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fc046d0cb15f58374373c56c6b9add1175ef1bebe48ded0714d70f29fdb5e96b", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "00d1ece5abbd4adaeee7283b457659eabb6cf1c12557bdae4fa8b0aad0717476", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "2205a87e30b0253a2c5c9d1ae887d6ea49170069582d120bef35f660abee1952", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "a74cd859271addbae5730810e7475ccbe256911e0aa2d10841df18c062530970", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "7424b9e3fd3ad19dfc605085a5202207b7d59313b585cbe9ffcf5074b08f66bb", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "42c50d40e1d9a9358f71217f9b076f22ebbf699da19da3d4acbab7b34f3d0932", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "29c7a13359a599d2948e10968e1cbf20dc442aa188913a90bb84a83b6e7bd633", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "4e9de82c3c7beee2a39cb7bf711c5abf24a5e43f3ac5b08cff41df3ad3820d9d", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cdce5e977765d9c237c171e49a73b16b09be0750672de56cb2c1a1719890a333", @@ -14579,10 +14650,10 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ffdb9bd91151fcf5be1fc569e687cf8bda303f8894acd0c23e635964fad3a32c", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "befd923116fd7afc9b8600b525123c06283e8b6ba749a1e07592b5aae20316c0", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3b8e31ef6838f5b86b07a1c8b1f7bc75454e1859cd02d4d07428209c56a637eb", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f60cf2edfdd88c8a22df5c5a4655f046996dca8cff3773d9b55169660c042f07", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "7de22eeb6c59456b7319cac5a4eb1264062c35935c7d727361908116d45d727b", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "541dd35959c599b82eede7a3336ff68673cd35bf1f0e1c6da7359d6b9f36968d", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e82164f38cc710b7f53b01b4b6445c6edfe8edd8d9dbf1c29a912c9211b312dc", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "5323d908b1a61f446eb841d9f3e8373b5923e376241aff006fd26090a8c50f60", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "e72bf7a853539a0c91ee586123b278c5ed83aba7d15022f54f92d309b114873c", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "bd895015951ca6fa5a457a600469b70b960f5c1fda4e0e7de64124350f9ef0e6", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a661b760f47c41a2112e861bd605c09b51a6dd2eb68b0f80d621cbe1a33310a2", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "21f83843259aa869a6127df0788a7c37b1957c495526a22bf053779f36f68858", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "778e4ab5b9a8df87228d72fd43932f95e9cdf58c7ae03aa475b412cec48bbbaf", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "5c82462aa9aa9b37f312a51c936fa1236e6b05a7d049e0070bc797842f6a6def", @@ -14592,9 +14663,9 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "74728cc1862fb0f3c3b0daecba04fd6dd090ab314cc899da7c7c29b50c57ca4b", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "9fe5245c5ec4941d3b1bb000d6212f05e5a5653553c86daa15ec82a1ba49d103", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "d454a300a25312d4ef81351e68b22a46a95f4d24a87efcb4be077658c915f980", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c3a13dda79857b8991caccb8d1dd83cfc0ca135d5d9f900130d644166bb7486a", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "b0df6d24828a859f565973cff525ea14b666fea211fd81cf8df229b0eb117513", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "e85ba42d143ef8718ab23535e509d4f2162faaffb290f31ad0c4774e3f0dbe8b", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b8f7b8d4e760392b3038bcabe0999c0219e097797ddb7d333ae51adc9772a344", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "72939d1549a06a4a118446f7b3045e913a1f6ae0cd047dc62fbd60195f31d53f", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d1cd371f15c7ed5d1dde8622df3176c0c5cc5f54e7f62dbfd48461b1431a54d0", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "41338181a4e1dd1e8fa5ca591cbbb8ff56ebd3f4752eabf4a2fa4e2ea30eb70a", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "87f49008b06d12d0ab16d66fa3d109505889f898de59b29de4cecd6299ff21aa", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "df049cbfe85eb8bb41c3d76b5ffb1433a9f2f05612421e66b367c977649762c2", @@ -14623,10 +14694,10 @@ "T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "396e2461990856920dd261bda781ce7472cf3b49331062801037bf84bde31023", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a70f36ba6d7379273b9651315e9f24ea61cdc97a259366f8dc48dafda7471b12", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "fc0af93e1e7844b00af04c714caa6e3e857575ccfc9db0a92c44f9f3ed3267fe", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "41054e930a871602894027b45c9a0c5a507126213654f820dcfabf70e1a8ad79", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "6431a402ed1eac6d6a74d8438f56636b46d0ff64b6a4246761adf1a2eb58bbb7", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f81d3cafddf1db90e20137a8badf6623ff3f8a911ce92b6ce8f6585bae49c68e", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9b6a3ae8a310c2c9961f69bbef0463f16335350724a62f05899b99a4f9f63550", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ea8961c7c4310e9013b0175413956ba55a39aed8a5185387be2469e376329237", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", @@ -14691,7 +14762,7 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11ef6fc1e148b4777e04173fda74991e7f623e9c4e0c4a5d7dcd4d9bf2af7e2e", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "bc11f996c3df62edc0b4c890f8bc84f0255a7dabf43cf60f4261b620eedc02e4", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e31bee62cd3a5aa0c24e945311409968d70a03310d7e4c9459301d380be9c66b", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1cab6523a7a5b46631b08034b8b260910c808b0cbe73206657a4c8fade1f3973", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b5afcc4f7275aa41f2b59615f242eb5128102b9a4f2b17c272162d7b3a9df850", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "adf4203b973746c9cc0abd83d067df69b5cda20f9bbb58fedccc6c81727de659", @@ -15116,57 +15187,57 @@ "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "8105146e2f6727d1fb2196e9d29c5e7928882d143ecf3502e84edb07f7e881f8", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e5a0d1b276a783477214aaf9ea0bf2f98412a4e6f1432d02137689d7a7208a70", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "cb385afd9e01b8090e01ed1bdd57de7b6355ad430f7a96ebdca8d0095ecab95a", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "ed6121f6f7a65292afd92fee4f2e88e218606ce02a7acf696a39fdb2aa6d90cd", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "46f8dec84afbe69fefb292cfe8c9bc9e2c520f11306d0347d7e121f7f739f377", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "99c4a21ff62f018fe44e0fb1f0ba1545d5bdd862884bcc97697091a219f92883", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "6a98ebe37f9edbbe6a4c8f83b3546f481cd00931522b1ec3e9c66b39cac326bc", -"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "974d8435badcf1dd4cec0c9df6fffacc46336b769641e752e6f6f449a46773f7", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4d0ebbf93a6212f2a655ccb2707e8da7e8798d6e95e5786810d6484f98bd5aad", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "fc9a5ac9b017e3b3b52c7c407d880c3d78842da4a103afa55842c09eaad1c52b", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b78289d8e69db34f4590d209534ff7537566adedeba3ee4958c278a82e09f15c", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "294ebf84ed042c3614cb4d440ed2c219ec176c8235154070c727daee69caed7b", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "32857469ef5cf8cf3cc347736b2f0265c0683adbce86cbf22e46b14866e0b565", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "8d614efdd82ac142fdbe0736c5a374bcc12cb7b1545f78f40fdddfeb132da7c9", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "99ebcfb43037d4c901d40f6b22cdad95ac8ca3d7c0b43cd281691244ef197567", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "d5b21612ac87850a91b28c8a1f07fd7dc7f4142990bf9868126473a088a80e96", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1f8ede031b6ee39e200c6b32957e006a3bc316ea16c4045b7f4b6584e09ed517", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7ed070d7e20baeaba078379fe4c064b6fff4456830d098622b7d84493ba36652", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "1d53dbc94b035b211660e58491b19f310eaad4389067fee294d3abc4aa3e7fa2", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e31f44d338bd64d8a3d8d8db82d0403b2d3314a999ce0b172c044ad1ec0890f1", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4d0ebbf93a6212f2a655ccb2707e8da7e8798d6e95e5786810d6484f98bd5aad", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9e6e242d783ccefd9f7a18c2a594c72a1876abe937762c228f57ec2c500687cb", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "f38568946fcda9908536575970fece6e2930876793b57c34475c22670094d5d3", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "142b8458dba27108711b54b500d399a8f6b186d277e5c0704d82219fb70b76c9", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1261f7b79a1cb4a110f50cb00cae5cdc590768989b69c98b542386ead92de8c6", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2f251ec4904901641728864098844c56c3efe1e868f2f92903915ac162e3ce8f", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2618492c26098f91ea57e82feb5850d076fa707e7b0c195bb7a5760b1c47e8e3", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "1cd921e884adbf2453e120ceae4bb61ccbd5fcfc3280eb1576e88786e006e0e2", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "4618d385c51aed62a5edfa7063f61d4c5e1a2d9f4422658f2d3471b293b88d4e", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "170676fd40cdc1e27a9ff5cbe487504f93ad72a8d0cd92dd9954543f2b24df83", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d76bb291888f4f95a83f693f51f2f07dc30cdad245c8d142386e9607c11950fc", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "69a97169b5152d2c610f76dfccff7b91d348fd5235e5be33c99146ab54710b3c", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "461178dd45fc130048749dd679ae202547e64c3311e07ff9ea27a593c7cbe51d", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6904de14224eb55d657747ccbc0b73a093406d2910665c69dbfc65df949b1d3a", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e18f67ec58ea71bbd9d8dbc83a36846b5ef494cf4653e64b93c6f858a1834dd8", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ea1bbf0f0e4252474e2712921ed0714aaf4deb7fa2474e71189c70402c26cf85", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "485abe738f1c26dbd20891dd5a8252a29d151f3154799fcac23ee3fc197f5526", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "647986a83c9c0de60df929cf2b2f2a9a05a679bf08292f2c3d140b422e96fbbd", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "76c335f0724eef90678f8fbd7574ac3d8eb032f12990d7598d747388671a6bd4", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a6b742998a8dd2d07dbbf06b595a71062255dc33d09b77b4c24a3a086c5e9ce2", +"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "9cc86efd15157568236443676522f82869e257969303357beee9f9f840f4f11b", +"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0710087435365c3d5121988e43b6720a09194131352c810d713d975d05789e5a", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e1d9b4d9e861bd8bb596d660749798407d4892b97debacdf5a76a68d85d2aeb7", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7e561a3366a933573e26553125adf0b0c08a78ec822b9782d1da13ba1a9ce9ae", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "5ce08034868f5c3379527b109bab5a17d178eb6aab95028fb24669c00990a8f9", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c9bd16b49335cfb718758abe83cd5214229d01857abb33bdf329d822338a996c", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "d74bb651f20bdf04dcb3434f978f38e959cfe3a05500912fc47bf459d3a8b708", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "acd44d5bb79427baf496f7759ae7df75e9f9c67357fa683b14e354ef4bddd1ab", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "2cc375d52afe30ccb5039f175f997ab17b5bb1827488e971e37033b37ab68a56", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a896f1bcec0f4f9613c25c86b1fc45a898693c87fbab0244bbe8e1147051a8b6", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "c2e1b666f2db73bd228f23ad5958e642f81f861922e27bc9d33ffb901ad0b9fd", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e005d0c3d75f030e638ef6f017e600470c13394cb19563730bed930fda894e61", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d97fcd1dcf97da2d15016ebb630003eb1e61410b2e262f1a3afc69ce4360c402", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5ff300a0f3bcdc20ca456a816d8e689236daae1f5fa79116b13ed85d30ed8918", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e1d9b4d9e861bd8bb596d660749798407d4892b97debacdf5a76a68d85d2aeb7", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "872cd1cb0bbfea717b9e7ca01605bc629e1cfc3c54f7341a07e61e407f0c9382", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "268258d3157e44e401262e4b5af185c72c74d02ae57fafe0a40bc466866fb916", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "479f0aee58ba0f6932d4aac8e160e1ca24e72775ce516c7c5cbedf6115d5e15e", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6f13d5681028ac762531804afd4f154c2e291b3968f285e04e69e4e7e0908231", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c8180a663f47d3265d051e7e8cab48310e631b182c505b7499c563b79590c2d1", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ed5f6a00a0d481ea04ae1dc3644a27212db43010b473be0ca877629e53c36bc7", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3200d5c5666a4db72649ecbd482341f040d9bc991b8931252720c1f54bf12b43", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "344d559fa82391e7c92c9297181e1dc007b08d696d212ca83e1519d8c2813413", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "a86096a7f0f4bdd978fc508946705aab60f42f7ff853c9f0a8213937a8873c8a", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "b34bb7207ae752bfa59110ae5d262184b420c1d57cfab064fadfbf02416153cc", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a041c26d6a2e686d4fa527d5c879c343c0068b4687bfc54a30580faad8a55b67", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28cb587c2c9d39a01fb9b8c554d8e865248a85f9e31b33bb5c3c949f51af62ae", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "eb077226793cd82a8a62c075ec37060d02045e3ceba2909fce51ccfa7fad54ca", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f3a1eb20f1d923b6851d794ccbd25ee470f621c43ea6b5c52e7f9bcc9a909e2b", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "0cf0e3b5f81284bc004f5aff9152c8a8e3b9fc78f0b8ad2ac67fef9095c3d02a", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "68f7062a30bf8ca600bacdd15ea4b46791f83cedef795c97a0beda11873d5737", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "df19f5ae7b78a2e279d442d67d27b496f5939186ec6d8b6bc55b210d907b6f6d", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "30cddd8eb1cbdfc52a7e3a8987d48bb9662d47593597330b9c6a5bf07baa5de5", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "33e9bfc07d97a790ef74a3f160e26f6a686758d72453680265c9a7aeb5d8bd5a", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "978fcc41f8e83b9111f2733a1325a0b52c0aac5f7e5367783ad4a16fe0190587", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "03445a15416218d18604e3d229eb93e866227dc39e1f49a0f874cc9efb743e2f", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "2208c916427fa71ccbb243b67cbcfcd5ecc4cb7cb50235250234f2c78f58f240", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ac31713136ca74bef0d54440a062758acf2c55dbf58f784896d7edf9318bbf3d", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2100cc09016c1f1886c846b3540f46874fd32e1ee41550f5acf97c0d233d3d05", -"T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3e009a2815d01dcf3f283b4f0bc46f1d78927e7a9e7781fa1a5e3ed4413db616", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "cb6ab7cffa98fd0f421b4961aace0a414f76a429a17d7e620c59139702ae6a42", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0b3b3fcbd68c589d2ef05d3792da038ba8c8206eeb5f01a689370727d08f26b3", -"T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2d4b40db5f46e4e8a4622bc46b4ecdf332c8c5103a229103ec6f794013d8924a", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "bab417bbdcbea06039baf2b9999c175cfb2150408eb32b9d393a072329cef6a7", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1691ed3de89b7fd8058efd1e9c6ccf27675cc8726adb2f4dd4e6a6531e163f9d", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5952251654ac65f2933ce0c57eb1b593fe9dfd07a68e4d0197b31ffed3654582", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e903bd1473df40b3e261a513531e4d5350c63ba2158a5d1f1496f7b36ece12cd", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "7e307f7d704c4fd031e1ae0560ba380504585764926a745b40ac7908d90c36b0", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a881c181e24037ec61760cda99c735b233a43b76f342fc6141c25e77be89c4be", +"T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e3415c0f9f71836e1a99a7cded94430ab13881f06e8032783369d391a405c981", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5234fb35e975638bc2c73b614d6a1a789e0c3bbf5206ab2d219986f59684c71d", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "62872b2d13af9474cb63868a8b06d0df8ea09379f0f431d16b2fefa7e4892350", +"T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d34ee5da39d074253841aa0fc23cda0e5e4894e2f3a7444838327ba83fa9b43e", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "51cf887280cd686d2e6f05cd4cb0ba70424d4bac715d16d08d075be3a846dea7", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "138d33e33a40d33dcf7a620f0e8cff06b1f07b5868e32fd9a88e3e7acd429dec", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", @@ -15303,22 +15374,22 @@ "T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "108d774249ed92c8fba2691aebd948cf7838c52015b4a15c02db5bfc9d6fe5d3", "T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", "T2T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ade0899bf79556c28959438700567564c8a8065dd92d81b6839aa0b1200216a4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay": "2fba03351a923044992316898e91b519945b066c0fe8b6cf31830445445ed2bb", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay": "4d8230550100d5f90e66c828948017ef1de187b438d89ef6850472c367026efe", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "fac87e5cd655a9c711016eb5cb8c1510411ed7d22bf8fc4922f9ca2bd77ff98c", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "de40dd0ca247c74cdc92606036b598f068dc5f66c4ffbf256afc65bd70a74ec0", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "ca4fcb1d38d7c94eb9161d0beb628afd81b3a0e2d64985f21eb6ad4b4191040a", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "08d9d9b7fa888abec0bbc20ecc59ee6e2a227620a5453d62beb962ee2ff7fd86", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "69f33cd2826bf5f4362d0e77886587621115179f5711a3dfd5aafded24b0afeb", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "561d217a7e7f610a95613f38921f632619b0b2d522f84f0a8ccd7cd520612e51", -"T2T1_fr_test_autolock.py::test_autolock_cancels_ui": "4d2248aa635def3e4c18134b82500fc0b1afb0dd50dffd8779723ae01ecf7c22", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "df676635f6bf93b13ea533ab1783749a89e5e24e7789e2867b8da5bee8ed2215", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "83944aa1fb07b474656980db719cdd4f891c6d3ce380c479f7e3b2ca0fada457", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "9f7c678fe7d0c55bd616d560636cacf6b139bdf9c54542fb1f25cf5ef5f21194", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "60490369e58cda21161a8fe33553c04d9a81eb4f27537bdded5ee7d7cb32dfe2", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a2c5b2036951b710c73343a439e7c9d80ef8788c95a0b42218cddf96d1eeed6f", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7b3471c649aaa2ecf84ea63f5f575b5eb9c1f38c96a4dc123364e27501fbea6b", +"T2T1_fr_test_autolock.py::test_autolock_cancels_ui": "37ea1b5105b9934856c7be72008d993a5ca13da6982c98f7cf046108a5de83fe", "T2T1_fr_test_autolock.py::test_autolock_default_value": "d02eed802cd0798da65e1c0e9fadf0df8256ffb9d42d5f984a518289b9c7c94d", -"T2T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "eaf85d2cda82a8e85af1d67de55fdebfeee2451d313da5fd1ade1306a1cc273f", -"T2T1_fr_test_autolock.py::test_autolock_ignores_initialize": "eaf85d2cda82a8e85af1d67de55fdebfeee2451d313da5fd1ade1306a1cc273f", +"T2T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "13d800f447f81b095aa860b148b788d523730e0ac046b4ad0a4fa93731027074", +"T2T1_fr_test_autolock.py::test_autolock_ignores_initialize": "13d800f447f81b095aa860b148b788d523730e0ac046b4ad0a4fa93731027074", "T2T1_fr_test_basic.py::test_capabilities": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_basic.py::test_device_id_different": "361842715b5f7636f577c8c9bc8bc69548474cd26c26fd1b5fbcd850656f7753", "T2T1_fr_test_basic.py::test_device_id_same": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -15362,19 +15433,19 @@ "T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_msg_applysettings.py::test_apply_settings": "105ee5f2b3101cd660551515794b4b951129ebb1627c3a0e0329e0195e0c58b4", "T2T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "2ca36e7d5dc7e088c69afc7c2dc73ea881f3dbddecb07424202a588f1e9aeb17", -"T2T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00988807c1ab4c5f52d67d732c5082757aca490e3ac31104a571e7654dbd9085", +"T2T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "229a3ead486c7b84af12435e6bc6b74bf4bd015aedcdfe252a31d70176319266", "T2T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "1f5d00ea893a98328e9608a16cd02d1c639de29e5c85df37f567ddb5c887461d", "T2T1_fr_test_msg_applysettings.py::test_experimental_features": "1a3dce6fe6f1a2d11f1a74ee4f4c27dd03f39836aab34d49cc91c8f823fc3c92", "T2T1_fr_test_msg_applysettings.py::test_label_too_long": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_msg_applysettings.py::test_safety_checks": "11728ebd055b8dd997f30c806950104e149df07c5a3dad5b29b22c91ccba7e7c", -"T2T1_fr_test_msg_backup_device.py::test_backup_bip39": "f7cfec63b5210b7010c3b8dccf7cfca45565f9d3ab1bb0049b5e18d250c8b0e1", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "84944f3ce121140e1172cd3d1cdaca2fc8fb2755c3bd8788f509877ab45c12a1", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6fa2cb88d7c8d3608c729853d09aeff49257e5f3cc3c1bc8e12fc05ef7dc703e", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "7d40961aec22dcc02a5b5ca132a43591035f0570896a90a9231ebdc2516df98b", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "69a9f46e8d6871cd5c2f96a41240e400ac9e7cc7798fb3c48dba2e676394759e", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "16a48db51cf4ac7c1207207fe92257510a86db58dceeabe847df1b324952fd1e", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4a320f05e153101f8216afb5882187bc0faad320981882ab9550c3654356133c", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6ae45b1161b593c518da6ca5b9595643a4a0f9cafdf78cd03c5e141ca027ac72", +"T2T1_fr_test_msg_backup_device.py::test_backup_bip39": "51e3d5b640026fac3a4bc28e02260489f9aa190d40d7b96eebe8ff1f2b08ab06", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4ee32f6ee2e8b102b109ef6d15a2421ef8b9a664e0beedf6011219798d2279a7", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0b3ff2cc941793ee670caa7e3a79c31466d3341459e8d277384b375be83a7322", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d77d842c703751c1ce7324280b8c2969d9ddb6c1f845044202322653bab497f6", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2b2c40d8f8a86ba016dd3b5407b0bcd1c01b50d05608881e56bffc68437054c4", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "36cefa5ea7f11ff3422953a37467bb13a5a765b03d6e454ef226ffde45235b14", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "051d28f4f2a0096e87190d0a55dc6c45466b1e4ee52be0ffa684662f4a6d607a", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "8b58a5f7468bc37e760556db89245d875fe5e9645512dc097e3de110c28c56f0", "T2T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", "T2T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", "T2T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -15389,21 +15460,21 @@ "T2T1_fr_test_msg_changepin_t2.py::test_set_failed": "ccc6212506a30dadacd6f7470569e40098c4bdc5fcd63244b900f64a5fc23598", "T2T1_fr_test_msg_changepin_t2.py::test_set_pin": "2741144c8358b9f9875a7999c66f618131f039e4877f2f2c75f31afc387a6c2d", "T2T1_fr_test_msg_loaddevice.py::test_load_device_1": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "707eea5b0e06a085949c80b48f105b3b0d41f0822af09fab78b7d985b351678f", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "310a8f63431d25c763999dcc4537179167a6f63220eb05de6a5573622e6385c3", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "6192186ae96aa9bde69226d2fa9d5fb495dc5a2f201e708e19bdc9584e8f6696", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "2c096c085d2ed36bbf4851e31e335f0478ec150779202059087cc36224eae77b", "T2T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", "T2T1_fr_test_msg_sd_protect.py::test_enable_disable": "9c9912fcf9470e481e8b6db4c2d28ab9d83f29d07db552ce48fba22fee1e8639", "T2T1_fr_test_msg_sd_protect.py::test_refresh": "746ca2d525a528f410fdfc86ca93ecfe03f7ff18e21fcb6d50111f41bd8cb098", "T2T1_fr_test_msg_sd_protect.py::test_wipe": "49d6c49b76d7d7edc60625bb2448b2c9facb257e05786fc94a10acec39484240", -"T2T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "d47af00944011f9140904dd1fc9b6784fa419644c2714551f60cfba761a248ee", +"T2T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "63d340b2ab03b1936428cb6b83a172f9fc17a7c51103126230f49a15b7cf4c24", "T2T1_fr_test_msg_wipedevice.py::test_wipe_device": "361842715b5f7636f577c8c9bc8bc69548474cd26c26fd1b5fbcd850656f7753", -"T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", -"T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "0af4bd6f7c00add9068d094371958d7115ef1e9f531d1ac5b3260b0a5e7c8a93", -"T2T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", -"T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", -"T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", +"T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "68ec42a0c82970f062a66318d4d5c0ccdce7b93a166324abfa7f29adc673423c", +"T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "68ec42a0c82970f062a66318d4d5c0ccdce7b93a166324abfa7f29adc673423c", +"T2T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", +"T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", +"T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", "T2T1_fr_test_pin.py::test_correct_pin": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", "T2T1_fr_test_pin.py::test_exponential_backoff_t2": "261c265057bc64b59090e02b38b1a7934e21d7c6c00cffe81baea223142f50bd", "T2T1_fr_test_pin.py::test_incorrect_pin_t2": "0c72f3f8ddb8f9a695efe47d84682af6ff9d2675b56a1b326f69eb913be9aa2f", @@ -15423,9 +15494,10 @@ "T2T1_fr_test_protection_levels.py::test_unlocked": "ac2d18bf535dd2478eb723fa3d3779561dec2e724c3c4f52303505e124a31383", "T2T1_fr_test_protection_levels.py::test_verify_message_t2": "43cbe7d1e773a37c12dfebceb242c36af16bbf4e2fdb4b8ecf6f9cece3ba1980", "T2T1_fr_test_protection_levels.py::test_wipe_device": "0ed047d904ef99bb35e8e37dcff3d930706c77be2f4c7312233f2e3c956d1f6e", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "6389f52c62503b077c8fb39d2885698832c1742809e30024fdbbdbcea395bf14", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "61811c1d10a51d08328aec611e2c2d0246ea87af1d39b6654f5fdca4f5b18534", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f8eddf3a2cb156bdae3f3f7bab97bd6e983dba427e3b7003d6144668600453a3", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "0d8c90037606dd57cb34d308007b8d7d1f0f3e48779de629a1f652464ed6a083", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "59602634b747e62f3b4be575b317633af5f5937beaa75adb1c08afa40b7d3af5", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b2a48dd7210008879b9afd8b255691bc04d057087d0ad020a32ee1cf5488f6e6", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "12dbd403f6acce67e6990c6fb2c557e2159aaf61046619477f381fd05db6bf33", "T2T1_fr_test_sdcard.py::test_sd_format": "9654a743fdad9525d04b1ee8129874d437113d1d3d3cbb0793dca406cfb65d53", "T2T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", "T2T1_fr_test_sdcard.py::test_sd_protect_unlock": "6b793848153a9bbc263cd1c97b536ceaad0e278344e353e8d2ba331b95369836", @@ -15435,19 +15507,19 @@ "T2T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_test_session.py::test_session_recycling": "497a625134fc0a69374f7b9b292fa4507f1ec8d770774262bd2f94363fe3a3b7", -"T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "40a58d0f0072a17f9f52b30fcd4741db16aa35b9cca7418cf33328c5b69fc6d9", -"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e1c91d58198204ff63eada6306677d78cb6c7b07ddffbc048c19a45aa54f674e", -"T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5c3ee50ed554d815add3d28dd95be64da4755c57b0ad1c8d4fa355f9c9aa8c53", -"T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "4b068c0a109ca07d0eb805af47f80a14fd1f541802a13198c56572265267ddfe", +"T2T1_fr_test_session.py::test_session_recycling": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", +"T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "276a260cf104db73af4a1d9e9a704ec88d3a9d1dfff0014156355d37c4d4639d", +"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "102808683361a84525df77dd5cbd21ff92714f776697675f32c9a656cf15cc21", +"T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "9ae6cf6704101aa4436c9bf0b656431348e694ecf083dca72e982e3a3da24f10", +"T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "cb661a3129d5bda89fee53331ad9671ba8f62d2cf73e33ebd779e3656eec8f0e", "T2T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "3b287aa610be74787c226147a9d0f90b3dfa845888c4544dba4a2cc21ae9b8bb", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "5d1700b76f711709576f9bb72a5d271fb38e8c2f8a747cd5d18549d499c9d40b", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "8f923a821cac68e04da90bc85419b72c379b0a12dd14f88568bfa719894c6d82", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "f435fe09e2241449a485b41586ade750bc9724ccdf2d85b3ea2820ac0ba5939a", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "929d5b2d0ea1a22ea66d71ef532824c9a0bdeda2a5c402fb22ac531082842330", -"T2T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "d4e0c3c8498bb5a8ea6091a2aacecebcaaaad231232964c92eb02b20edc195cf", -"T2T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "5b433835ec11b6297a628891ec1b2264e9fd1ecc88cbabfc52382c7972c7cf5f", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "8fbe05ac2ed51d9796cf9c436af7e3cc58f78e17c7e5a36034df4b3a7278d533", +"T2T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "54862373eb82f2e4b96eaea2d57897b01e43f37c23029b0b2cb8b8e2a199c4f4", +"T2T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "78c7587a24e7c10a33add4e7d2b0f67c5229e5f2d4e184593d22ac7ae40c6e7d", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c4585c060afed6a846facf4909e7705d64f93673f5711a4e62fcbbc1020be275", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b80498105334cc6c0c17dbbaef4d2f012004f4df8ff461d94a992fef1ae567b4", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "781da6f1be1715db1139b5859a65bf608fd4c3cb1eea1f8df563fd42237f5b8a", @@ -15483,124 +15555,124 @@ "T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "c9a7a982a9e58cf03d5f15cc4647b1d62e21c5035fc0d8a4e5521053a38c791b", "T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "627968384535fa1d8f62f145966c1e7f1151b234c10686ed59f6a84c9e8b1db0", "T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "40f0f8531b056495156f1cc7f7d8e77232ab2d9507b40abf2f15018b2ff9bfb7", -"T2T1_en_test_shamir_persistence.py::test_abort": "69197749bc5d91c3721e145696420129630bec36f7f27c6f7f789eb3ef173b2b", -"T2T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "9f250a0e8c03b02bbef9d2ae730580cb141ddefb49d1476fd2575ba746abb7f6", -"T2T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "8424cd9a54fb38e4fe51b62276dbc6f73dbc0f68e8a9657a5d615628d41cdd59", -"T2T1_en_test_shamir_persistence.py::test_recovery_single_reset": "009136e50ccd84cb96be8558566e3b5c89611d287d8a964e24e871f02ddf1033", +"T2T1_en_test_shamir_persistence.py::test_abort": "822299ee79dea3dfb27d444fdc3a209e7d00de515becb36d384ac88b5f046f17", +"T2T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "4c2ce7548a1ae3c5a54baae726484750892093b7b6a8e60899fdc73ad771b214", +"T2T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "db7ebb7c0f0b06ddba3b00084774f635bdeb0b93cc4e1883cb9546698a379c12", +"T2T1_en_test_shamir_persistence.py::test_recovery_single_reset": "d1a7ceaf28653a99ab396d46a591d0f2e97de1a4c03feaa6dd82ba4cee7c96ef", "T2T1_en_test_wipe_code.py::test_wipe_code_activate_core": "1817eaf41ab1299d8c8deb39c0c7d1d4eb3ea74cc599fc5b6f40494f74c567fc" } }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bdd8ecd2c3457ee60b0bbb8a2e47fb4dbece11dbf7a453823fe9b99d5c20cb03", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "c06f48c1c304b0fd1e944ffea2b96107131fe3321ee0f67b858568fa2606cd75", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "629beff51dd5113afffb8ba1fedb38b155249665bbbadc15f8a1626ef78a365d", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "156ff65d17c141d7426e18474e46235f249494a0a61c229dd3696cf9ff6c26c1", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "3d04fd47562aed18fba6ed8b8982600b9f208f26d498efe71ce3a8ae83daf479", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "101892fa0a24f33279d07fda4477178a7b45fc04c01acbbf901833d4d024158f", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "55cdac02cdd20ce5249fabd5e63ad68386a796634fa21e2ef7cb1701e98c0020", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "be2ba7ad30c636e7542ede4c2b39f6c65da16eed559557d559fa2a9afdb98de6", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cf939a63908ea803ff46919cdf957e24fc1eaf9a830fb16033b910a1ad0b4c82", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "79241bbf8d46ac4497e668e7705152553c9c34c59658ed3b38fb52d70b613e24", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "d03f87e6020b3c9e47a5464a8a68752683b96746612274d91301c7ab4ffbca3e", -"T3T1_cs_test_lock.py::test_hold_to_lock": "8e99b5897e849374c94b8bf9a581971bffa050bdf39a684967be642f66fca612", -"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "7a7398ae1acf862987ee376b63a20b0dbe920f63932235e43e771f40a650083d", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ea973c070a29705da85b6002aad54489a1a1ae5996f64627cd02c9824c919913", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "6ee483af2148d83ed1b785abbc71bd8beaf36c139fecc56a737b1c699da00008", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "a690b0c229dfd347efaba52e15b5459f84a17f61acb3ac233e874f519cad07cd", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "2475873009d2957d4d838334caf475d92f2bf8b36f563ac5de33ad231823810d", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "0de13e7eafe6679c6c45fcd2e7718a2b231006d0101e63f57ee3ee40dc480fc0", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "61be59a545057321fdfef2a9e0dcb9702eee76802727fe77c7167caa26092a68", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "24d9c321c1bfaa7e996e12a4fd0b410ef7a630386d088f219002758a483763bc", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "26fb130e56cc866f5f22e4377a9cccda30f6157464a466f9d49941251bb841c3", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "bca6ee1ff23531057087249768a49b441548a92795b1830f7b133b9e21bb7953", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "26fb130e56cc866f5f22e4377a9cccda30f6157464a466f9d49941251bb841c3", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "8c57f885d0e05ba0ef2e53d1382903c6103ea1f40569ebe60b010568800ac384", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "98d330ecfe424966250b220a38664b374de02a41d43e1c34762c9ade8f1bdfca", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "22ec8b84fb49b59ff2b94bbe51fa92dfa0db92b76cc6bf6ef595fa057f738352", -"T3T1_cs_test_pin.py::test_pin_cancel": "6b225805544e2473e5bc911e271b068a3c6379b7b41ed1a5f55bf395ac3287bf", -"T3T1_cs_test_pin.py::test_pin_change": "bea7e35dd6c42f7af563fd839942c6adde847c23b37a6de86cf5d9c1defa95ce", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "0bbb8d6984c715b8f0b1d04a5e73f4b1c9b63f87b8ab340e08cb247b6f6a012d", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "7a74cff1076a2e2000feb7c9c5bd411f2b51ca4ca6ecda098533d948ed5134fb", -"T3T1_cs_test_pin.py::test_pin_incorrect": "6f5a85724c48a9a0af97b4c11df69b951fde13affb5f72a9a020fe111f75d773", -"T3T1_cs_test_pin.py::test_pin_long": "d3e8759c2b4febca759b498f6c863e6737a36d37e6a21c6632abae139dea382b", -"T3T1_cs_test_pin.py::test_pin_long_delete": "2ac06c94d2d437dea100f464b22508817b503aabbf1d7085857717e43869b111", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "e918ae86e079c09423f827d239ebc0f2227f2d925efd9bfceb893417710986eb", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "8f3cdd52277117972734323a68583be1a92890e7ac704e87931ff3b3ef32f20e", -"T3T1_cs_test_pin.py::test_pin_setup": "8be05caedf403abc98e04c8914b6d970d12d964058000dc1c9e34dd0f345b3b9", -"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "a91a1f4f4bbc6dcd0d73d45353a3af316f7346c147a4d44005d3515cb830b321", -"T3T1_cs_test_pin.py::test_pin_short": "7a74cff1076a2e2000feb7c9c5bd411f2b51ca4ca6ecda098533d948ed5134fb", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "7b7beb6805d943a29d28098ba5d23bd3d9a63231c12d1d6518eda0c8ee36c74d", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "d95c40e79c68bcd0f178895fd941724c72a1fa4114224376283d5c08a5411a78", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "18c8812c18b401f400ffdaada20bb4c27a6a41b4dc2f0688ff5097b4110b068a", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "b6662f23a3ff5d506f2f1d1bbf031631c3f679a5544909a5d93276a79accc373", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "c7ad24179dbfd03696098715a52b656d3f0163a7c92bcc1fb7cd187b0500ca68", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "15806a9c477e81aea6b787073c234c08e9ae73743a8c0a64e813c0b26c0a2dbf", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e28fb99da24382dc1837eb73b4dd931f25303f10183ed9a24a1a83f1c7670c25", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cf2402357fcc8abf2cba193738c748eb772beb83c7c6514f450769a6840a0ac6", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1a44e7bcc26d1ca6cb9fadc6cf0191785aee096418134e55190d5768ca6b5f3b", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "24635e8df7035f66d899670e00cc2cbfec8e9c6f1bdaf802a2c2fc0d69bbd265", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "193f6053460a2a67cba2022bc310bd3fa4d00c7af6408544ad62a1911b7f3121", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bf46b9b3ed4689164f9877140549c91649f9de4153f3b026d66497bac64b75a3", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "37716b158133986a37b9a803628f382abe3cf25e0ce8be8017605b066adae710", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a8d03f1df5234fc59ed79253e54ca0478c0c63e8392fa42f19b061a02cd008fa", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "756747cecf841b995f0e23545a05d22d6a1b8a783bdeda30cfac926a64f6f664", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "7a16b88310bbab2f456602c6f73cb00832265823407438d7f241511b6f52283a", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "2f123bac78e5f12dfea18414032142e3c6efd601aa60b84a5a9e0e10a46ff85c", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "5c221cc9751183eaa02e2347571819469c316bb1cde0d29a5a252cf0c7a5819e", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "5744408e0dc4ea581e209bf26abd86b29f34f89e39f8ceb125811670feee27f3", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a7fcfa798f05f90df7ecf9a4e7b0f16c3c41999b995cfddd3249a890c21a50b1", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f976c56e7f7e4302d27df9eb54f30cfce19d6dd553e5dbf42608ee579605fed0", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ce7fc86f644dcbaae77fbd45f6e12004c3175fef69d5cb80b7eace5b38f0195f", -"T3T1_de_test_lock.py::test_hold_to_lock": "dfecbd90b394f3b35f0cc2a0248c35b50427a67ed647499e5652ac51d6cc786c", -"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "9dd62a30ba3d71fd7d664fed8a8e24377d4b8f487b44e9f0e704e9d629513849", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "3396e178efb66b5172963498df91a8d378c18a147e05a1d5e277855b16531fc8", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "f0d591c567d203fb43a59722340d57048aa66d32af11292e94b20ce7509af159", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "20908127682e76eba205028eccd952d41c137042282661b271229b26f3674a54", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "2a0368b9b07ba9e5c4d55078bc897172b59e2fdb6985e074b5d9777418527c7a", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "3b48b1f16429754c78bf7349711c651d8c262fc2971c030a1bfd4874d8b35c13", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "3beeeb6043cd90384ccc6250ab0554938e7cc248079790ea42a6ec86955c735b", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "0d6651e576e950295f7cea2eec1d9eaca2454e282ca7ffe56cdfd08654ab291f", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "39050016bf0fd947a8a3bd88eb1dadbabaafc78fc00f425b336c03b47de218ee", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "e048f06eefeeabeef198ef99e7aef02e570ade75f41b426fdec5769a96611e63", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "39050016bf0fd947a8a3bd88eb1dadbabaafc78fc00f425b336c03b47de218ee", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "706ebccdbe01d125ee18516e0b974d474104a1badb1a44405ecc31a5b0364f52", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f7038aee617d7a39ca15e7e4f1cbd796267c49dce9c28c040fb6d98a28203de7", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "fee43204ca14a74cfac93d881d735a993f0d69c106513e9475d45c2fad68ba7c", -"T3T1_de_test_pin.py::test_pin_cancel": "b3c20631d0fd1f39f4ec8cd4b76ffae6f0d7c62627210d9bfddf5c6c19af55fc", -"T3T1_de_test_pin.py::test_pin_change": "c7901ab88bcb588fea0b14a96592f55783861807a6f5aefc9cef7363ce272378", -"T3T1_de_test_pin.py::test_pin_delete_hold": "053ba3cd0c2425fce74f72fa4701e8b96d1194d2d2d4604fb66a95247c2af797", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "d8558b17ce1c0f1682ad76704b8fbd0794c3da25fbd42c9105ccb9f9394c9816", -"T3T1_de_test_pin.py::test_pin_incorrect": "3559c8d24d85dd4cf2a17b8c062e94801d10eb81c207cfd1a67c235902c6f49b", -"T3T1_de_test_pin.py::test_pin_long": "c8d6a20cacdae3ba3c4408ce8741fe9d4e3e4877512a1da51af15d9aed6aba0b", -"T3T1_de_test_pin.py::test_pin_long_delete": "9d0f150bdb166061afbd86dc69f165027266eb9c7bff03112b5fd6ccfa79d2ad", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "d17386ff2db1565a89c2dfafe999a8eaeb58033aa0fa248ac45c081e0b898da7", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "ac4234ef38fc011c71fb1447cc10ea94a9229ff4bded137eb3b3af41a1fc06f8", -"T3T1_de_test_pin.py::test_pin_setup": "023bbed028d7ea89e8d58e585a2256942b1951694c0a85297bcbae7387409c64", -"T3T1_de_test_pin.py::test_pin_setup_mismatch": "906f016999c6e77a1cf1f692399dc6d453bb8ffc6d0c97b5e2bf24b77b86b1c7", -"T3T1_de_test_pin.py::test_pin_short": "d8558b17ce1c0f1682ad76704b8fbd0794c3da25fbd42c9105ccb9f9394c9816", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "e6a921f028fb43f5996f88f63092df711629af7ffaced79fe8c2b863b78bf1a5", -"T3T1_de_test_pin.py::test_wipe_code_setup": "84e050d0cf5bd0f2289697e90ecf9b6332e3122999fb335ea98fa47c392c33b7", -"T3T1_de_test_recovery.py::test_recovery_bip39": "d83b2cee9cfa4797ab78e42a802a694229f678a3e57351f02a742aedfd1c2c91", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "8da9662ee48ee3329c17d30902bf5305091d4aa12eb64707e88084551aad00a6", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "fd7d77d98db12b3a8a0577c886b3c12e1ec5a5756bf0aa6bc3c51d6f94ede7b6", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "7765d462b04db75e7126820bc4965e248ca6223cf4f6a474a0b476a13dfc4b0a", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "0ff514b16b04bb1f0074b7634c52b6b36ad329f414347a791fb15036bff453d2", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e36dce460a5e3079ae9cff437499e7888cdb6db0aa06351d2dbdd7cc2cb3ab36", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cf5b36770a72897133375b53da0e75af30020527805559fec6dbb0f23f36812c", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ef15c6815c5e53c98e500b8ec5d68b4b1cf852a0260f6e9eb9ae9af368bef4b8", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e7101bd80469df6762a01eef2d5112b408ac6f9ac859ad62335db656d5071c92", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "40986c8eabc83c14d1007af63982128300e790c064f6610779128b03a216c7a4", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "61d721ae6f0c1e7d293928cbaf4af2b72910f50d1f1ca1cb6b9de4e80f1a78f0", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "eed9ba701f97208876978868cd9ba17b4d7446ed9b94059ec1e268e437821372", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "cdcf26642e1f61bc4941b8358c960040a9ab7a34b4ec579d7a5dce6ef563152d", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "4f6278e0e915a7012ce29a8b4bfcc9f72a793e0bdd1b30a365cf56adf7bbb19e", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "3167dc530369f3f290c3942f2516b7684e2f6fde82d7c0c4ec6a43de8f83941a", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "2516c0fa0cf9dd9b82ccd79b343c2f5a5dc2a50f261ce71a312f24cac81d3b6b", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "b170a390c0a8a055c85e0352bd611529cb29bc4aec66aeb768c78dc48fd2dc1d", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "be27454992dae1e2f2fc8648bff5d6803aa10ca4918c813b5d44d428e95b11d1", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f36b238d7f8bae2a962d4b171c4441079e4674fef67adc313e98068b75f34756", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0b857e181d9ea0d8b4d1f4eb7f6ab58ac4bb98a9ff1af3bc18d371f0fadf2df8", +"T3T1_cs_test_lock.py::test_hold_to_lock": "bb56e1f09fe410d1fcc6f2180e4942a407e97760d797a11cb483baa017d317de", +"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "fdb8bd6a3e599448283dceaa4498a3172d0c60bec8c5d564ad8f39f35c87411f", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "4d7dde39879cd44ae810500ee3d78a17dfba353978fbe6fc68f752fef51c117a", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "a3ceb2aab671fbd86effe007265fde26f07ed36ac6c0cc4807061eac0b20ee60", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "dbdcaf229bdebee2be35da1bfb015892a211d9e5e71548b55504354364ccf427", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "2b134626b8107246c77234520ca231834cea65414845e007318279c7caa4fd9d", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "adb6ce2b425de6cce5ad25abdc459e9e3c36fc3f4589180c8caa78bbff2678b3", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ff2e4ea169104d3d34231963e56c64b5024ee76a78f9ebe83d500b65bed9f4cc", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "9826e90e3f4c36802c0cd8fa3c19ee7072b6536e53b9074fca524ca542b67615", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "bdcff80eef43e15e7e80eb2ee9d8d743a395388eac834732f4a2a13fe26bbd6e", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "a17781cb830474cdd1863017ba43ccddb8ee48d2774255f924424b99b95d2716", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "bdcff80eef43e15e7e80eb2ee9d8d743a395388eac834732f4a2a13fe26bbd6e", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "fcae3ea91adb0ed7d3d4c5311f690106e8d3c0f7c8d5d49c9833b5e7be4e500f", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a67d38203018dd5ae3777180568df9066501bff83bfdefe4de19b16f1a95a4d7", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "5d645807f80f60a8ec41060feb0f1a03b98bfcf6be51d9b6fce46abadadd6c5e", +"T3T1_cs_test_pin.py::test_pin_cancel": "53786682ed6efcbc1e60b6565463732fd4d5fe3f19345e0cf8ecc93f8b963eda", +"T3T1_cs_test_pin.py::test_pin_change": "63d15b7dd7c1ddd722119213714c1f936175ece07968f6f286c010023b3b8e4d", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "008220458873478e2fbcebceb0a4eabaa0b009dcc2b2e426723f9def3afdaae3", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "31d31d9a0e0043b6ab2d819ee6f9f0130a769482a22d86a009033c059e4c6dcf", +"T3T1_cs_test_pin.py::test_pin_incorrect": "08bee374cd6f1bb3fd3af5dfe62ffe1278dccedfdd5b18dbaf417c3bb8d2dbcb", +"T3T1_cs_test_pin.py::test_pin_long": "f6a9b08d8614f79dc2605c6b3dc53fef8dcb23184fc8b1cb1225c42d092fcc05", +"T3T1_cs_test_pin.py::test_pin_long_delete": "bb4c9b23e353dbe3411f4fd51e1508769eb8d95a92f550f3a8884b2a5e44b156", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "c56ebc082f14a20454a9e9f7bf9950a16bdde82c56adb40295ed51b70dc7b242", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "8fbfdba11cb93493303a016dc7dec0ca675fa85678f421131722f959315ec55b", +"T3T1_cs_test_pin.py::test_pin_setup": "c31d56393527b5510f40a32f3adb27d1f987e53e35a41516bed314d5da2f9267", +"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "c4d01c4db01d2af326f83d817d025cc4587e0ee486bbbf4cf5e74162d05fe0c9", +"T3T1_cs_test_pin.py::test_pin_short": "31d31d9a0e0043b6ab2d819ee6f9f0130a769482a22d86a009033c059e4c6dcf", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "0cfbfe3170ba066f85f70d127db88a5e9a5a6c8342e235ab642f0c9b0b67c7a4", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "46b6939b2dfefa922d38df317484324f7733a31a93ab9bf2308ffb6aa74f1d33", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "d812d59dc25317e82112eb34d337380a4cdf68c2548c824960400f7a0381c976", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "e64d2d3b1069ce3300a8abafa7d96cef3a03981548dad9beee1be2270769d701", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5e5f9492ccfd188144df29ef903235c948f15e016759f112e50c4910cae42c17", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "7698d96943f4014f443cbfd665aba0e14137ad9bd5fad9978479674eb26e3631", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "074f36b41c2ffdda2d0cc3ee3397a0929c95db959f0ae92d4a7d62735bde8377", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "68cff9707085c5bea2ba2ac12c8c3704251ae59dce2ee5419db29831b2bcfb0d", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8b204bfc21f80016cdbd3265116b1499d273b74c64819dc80deef768fbd3cbae", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5c84aed920474bc7ff0a22c0bd7a8305b59c78dc56d2d869a05ece16193a0f84", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c1ae825ac1d5aceacc40ea12cb34d2983913b186a9905ca81fa517684343e9a8", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "569d825d6fca86078ef3ccc04dfb9fd3a11d895f55ec59fbc601280e3af800d5", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "64fdf9721576f23c5b534a38f98309d770b3f636c0b7784b590875ede395c5ba", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "ce8feecfb19e4f522de3710d80dd374bc759e4cb21a24696d3b15627a2ce1da3", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "9a81fb3ad40ac48cde13fe222bad51a17210a6b60998c90b6089ad07b06fc979", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "1fc358b3e04bfa9bbfd7972242d331c323a313440b78d35c9962eada5615fb85", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "37ee41ae1520e3ca86a37fd67227754bbc570f0943831adf49481d613aff2b60", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "c79256ff45472bb155d185c2ab33b14de0a6381c5f42d190100b5942883cedcc", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "5cd0337a7f758fda31b76fba95b0b11fd007c15702bf372789accf8f69feedee", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "179586cbf597d9ca3d74f8aa82b73116d82b7e014bfd634cbf6b29cef76921b9", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4851f1582d92000629f3bcb127668b89c316ce9ab56d4b693ee387378a9b1eb2", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b88497a249dbeb631f3eeb79cc4b5ed71e5178263e71914ecaeb36bc24aff073", +"T3T1_de_test_lock.py::test_hold_to_lock": "4cbca495490833824560344224a26c6c8c5960d8dd088aa355b620f9ac39a1af", +"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "e6903cc676f6727c02a8d28c44bc1a74e8e5c54a77c50d1b2ba4b32264bb1fff", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "91aac467a55bf577d4efc6921d17a843c5e996d8076786dd4c2c379d57eeb353", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "3be73ec91ad1a5e0c91ed7f10bc695743f6c800e0bba5c6db5ef2df2465f8078", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "5f6e87efc424f5ad4c4d19f8dd1fc91bfd69d05700a7518195650b9d31a72bf5", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "0f89a2b8e1ceb9637bbbb29947e989168b556ca5669f4056736c0a97d3d8a57b", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "111874d79730d7112bca341f4eb8a9393da8936eaa8fd06107605694ca1f9300", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "d1dbf1bfaa8ff375c5dfb2b189734f8e16d074b6ca2684040ba301dc97009aeb", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "37e54694cd8474f69709e322dad28bd6dfdb7afbf09826e97fc659d149d7dab0", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "84e15668073d94476d95208a86a05b20f6d627547a76bc334ec2bd561fd6f934", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "f1e3b053df12915161fde21e5b26d6f307204e8077f2ef17b69f720f0bb282fa", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "84e15668073d94476d95208a86a05b20f6d627547a76bc334ec2bd561fd6f934", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "e128d29266b699e0f732171e5e877574a30aab9d3badc000a4a752936f289c91", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "7ef593ebf33caf92fab7eff37a67c100083f29ee3e16f08a75b311b4542d7d84", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "1a2336c6e8c06abd08dd377a7fc0c5863d521a57717bf5cfb8c0d3fdf40754c0", +"T3T1_de_test_pin.py::test_pin_cancel": "17a2eb9b4ad904e86b6775449d448f100a35d82a809cfd7d444ae856dbc1a341", +"T3T1_de_test_pin.py::test_pin_change": "86f3f245435518accdc0de43bf9858812870d34b61e036124e306b3f964196d9", +"T3T1_de_test_pin.py::test_pin_delete_hold": "157bb08f8a2f7426d73660fffc3ee61fda5a06f89daf71740c4dc9960d029d06", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "f20363a084e52a612e2db3954bef2323ac4465f94b55a12feb0fab89353eba0b", +"T3T1_de_test_pin.py::test_pin_incorrect": "aaa3a90aaba5bb6282673cfa5dd62c6c767824162d621bcba6d0dc4e97d890c1", +"T3T1_de_test_pin.py::test_pin_long": "b8497c4156671c80336156c05a752c82135ede632c3016a53bb71646859deda6", +"T3T1_de_test_pin.py::test_pin_long_delete": "502a5ee54dcdcc686f33c6b7a750dc44fa969744e33c4a5c4d81480951c16ca7", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "0ce3c2d198c686e0bea4cdc1647728a65e4abdbd002c2c4b271614e931122d9f", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "d567828acaf3a5cbd881c1424e63777b6acd60850c82f6aaec127b097df63e80", +"T3T1_de_test_pin.py::test_pin_setup": "792ab25fe2b5842f8f036d742d799d703b63228f1ac968d92553971085a53caa", +"T3T1_de_test_pin.py::test_pin_setup_mismatch": "572ad507f54580580f8e6a93620d72b436b62c2dde1cdbece1f88334576e0b9c", +"T3T1_de_test_pin.py::test_pin_short": "f20363a084e52a612e2db3954bef2323ac4465f94b55a12feb0fab89353eba0b", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "2b5d6073e8cfd71c0298778b3660372e5d96ba4fb0fe37d180d70fce3e91eccc", +"T3T1_de_test_pin.py::test_wipe_code_setup": "dad3e675a46bb5ba5ce3f5df1db9adeb47a531d2c4c6ebe4b82e693b1072481a", +"T3T1_de_test_recovery.py::test_recovery_bip39": "b89f318ed038b136315a9a5cadb9dc366422b6bd856bdbafca98022574c33828", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "9fdbf2558a31b3a4db2df922aa0279f38bcca571c74011304ecb13aeca3b31d8", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "8d8d067b09b1339ea7b334633543925e0b8c6d1166fae6a27fa319bb9d9116e8", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "4b362065a17881efe1ccf3afef15de55de2ad05ec430e7c30ed26b7d10ba7b1c", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "a9ccf20e930e27adae1eed30cf75afa5d9d774086a1b49c50fa229043de0e712", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5a2bef661f4328e9a238f1dd528dd43eecf84b1940d4c7e903a65c8b1ba4c170", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7b88b9f87fc73c0e137181945abb205675dcd67ba43a83b95395709df371a7ea", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b060bf1beffb724c6f3238dc3779c6cc42464ae2879312592bb25446e259c6a9", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5736b3339d94b3b2883d741734bf5ce5f55c4045a86f1f0c09222dd4a9d832da", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "cb21bc7cc23f43dda1e015a495179c2024b896f8028d3e45360678644c7b1551", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a503cea4aa2373105c26d1739e8088609d063610b419aa8b3f1c2bafac98c657", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "060ebce8a030206c583046927ac2d763c80b48298653e94d01a3539c93a108a3", "T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "6949a677ae87e5e82e2d6616506c88eb04cba51b9b97bb95254ba9988ff6fcdc", "T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "6b7cd861f1226572041dad96833fdf9a96f313cacae538440944fc07891d111f", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f6957b2fd713c191a3f33ea67d3f43d38c22e00ad44cc4ee3112c5b91d4268e7", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f63eca9c03979f21d2be1142e304e36b8bab089a3e673d6d17987356f723d267", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "87d99249d2250f91ca5eb33c4dc95936f9f23f18b04ba3af71e132fc0fd4f127", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "2118860f04c6fb7edbd46a3e7d068a32954798081a05eaec00db49b46666a690", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "a8638f863c02e6b420e58a4e1d62867a0dbdfdbd84070132ccc5ad04bb771aac", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "20cf266bf00d135205abdc39e68ee40702e46e60a7ee0704e44989cc14008167", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "8a3cdc72659732ed5334bf6f0a004a60ac739be53f9155a36e7d02fd7fc4c5ae", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "7b06e7ba99df4571a912de4c54c0282d7f662bc05b21f7972f78b19597abc449", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "eebfdb10f3dcfe0497126eea08c66209c39d53eade3099bf0de4868d66b399fd", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "e0afadd3d1cb7de4327e9865b8dc5dbb630d8d4e6fd96007b66dbb7122c7564d", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "36b30b0daff98c3e7c81b197ee06e7ab09067624d6643cf0abd642615119bf51", "T3T1_en_test_lock.py::test_hold_to_lock": "5fb3a71d4a3b1141a0162ee8ef4c05d5fb457eca6955569916dec084762f440b", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "04fe9bf02faa4b261a2e2c105de6130bd0bdc85ea143b520c677aad6b50421d8", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2f35a9daaebd8a78a57987cb4f556f33e0ad43881b22410d8af7547887b779af", @@ -15630,2890 +15702,2848 @@ "T3T1_en_test_pin.py::test_pin_short": "c0aa1a82536a10f106a75f8b805a6e31fa660b5484a70e3be755407fef9b4f3c", "T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "d4bf6af382a31e4d586cdfa47d08d00431ddbbedf7c6059e20a6c19b1dccde09", "T3T1_en_test_pin.py::test_wipe_code_setup": "96fe8bedb4ec78ac27f68a93f8ecc776cc2e79dad87a2f1affa1f4c7f6eee33c", -"T3T1_en_test_recovery.py::test_recovery_bip39": "629a00705682125eadbf465bfe315c412bc8ab25de43cafaec18b3b3ea5d1291", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "adb783319247016c63124d03bb77b802af8f770ea5e4af2458c7ebcdfc0b8f80", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "e644791573aeeb873e7e4357b9120ce33af3266caf8499f5ef682b982292cef9", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "909efd4d1fcdd8599ad49e640cbbcab0eadee4c01e63f398df2e422a8f1a0d05", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "91d6d4825efa715bb6e713dea010d66dfa6727eb46188476584d269a64c71315", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "939166a0b018b42048873ee16a7fc27c67bcfd1324caf4087488e3554893f9d0", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "dfd3eba2e3a0bdde6d2ebc06587dc7defd4bcebac46d5a47a41f3d7c592dcb48", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "078edb2712f7991e3cdf0a83b17ef8237607196715b15ea0c6ab480572cad774", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9b415e5964630df152d2b33e5c918706c735fb7b660b6c16c0dd75b43da39b77", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "900575f3a90faa1a0a7c5955d408ad5590cb188297adbf84fe800d8b30705474", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "ea04a1231c8ecb5c62884a4ca232cba969552f7b48f0bbe8ea019ba853b5d15c", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "f3f13899fa21c603c4ea8aa7015e5cd9649e91ee7c04bc2ec930e2b75c2877da", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "4280553d6953e41669553828201b60a207a4f5e70ec1746741a110a669b6698c", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "5de9b67ee9464d31f35f066e9364b89714a71723c367449188425813808d3a27", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "106a9fa9cd8cf89aaa50ab3f808d86d499d43e28aba5fbe2803f6149112cfc2c", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "7218e00fc1fdbe36b56f2932a3109a0a8e763ee1f883b06642daacda09877279", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "29f4f3a3058289de697919cae0b62e23a55e7fdcbf1c6add6730a541222d516d", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "39a025bad0478d80f115bb72365d49177c8f0f76369e8a50ef5f4ea1420bcbcb", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "24d2efbb5b163a2cc4c7768ddbbc66e8b19ca90fa78e2a29aa4de6f8ef244932", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "82812a94906043d9ed794d628384daaa25e005ddc8d114246e8402f91aff3756", -"T3T1_es_test_lock.py::test_hold_to_lock": "c9fbce356bceef93565ad1a8ff282766661ba1b600ce018d41c8aaa0a4e81d85", -"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "300af537b5476bf048768fbb670f24316e3942940f7090cb454326b7e2a0d1eb", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "040152b60442623a9c37e38e601ae08b7c1b05303f12b23b40c1ae180bf090d8", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "5878cb3be9a4c2f0a9f97624a3a1468f451082e54eb088cdc326fa444dc9b70f", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "4157240a947947782ef6d0b8884d3c22defc858fd9804570fb4fe2eaad058efa", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "5398e48c51c619d39b1da99d74e777d85c59dcb7b357f511db729e26774ac7c3", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "c4988ba9e2aa55177a5f74fd8823067f94e5faabf5b6834438371ad8acb86337", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "19d54e44f4bc804918cd89a6e763596a11f00a3a6ec9ec49256f36f25f019338", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "62f053e88d01c298ee0a523539a20db423d386d60ae7f833b386cad80f05a406", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "5d6e067cb8ee309ff525f09c82e8a0279fe74b527b1c1475989bbc01a322a680", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "52ac38aaa79c41b5f94fff5cf65fedbfed46ee7c8831c18ca2409a046aeed190", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "5d6e067cb8ee309ff525f09c82e8a0279fe74b527b1c1475989bbc01a322a680", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b7d90a43afa725e4413fb8a0e3ae770a926cc24517c896a62d1caa3ecf540b6f", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "51957cf1e388d506fde278edb5b8719e2f3ed561f4b7054fd4fe45af6c4acb64", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "627e3b894a4438e00e93a0394668bdaffcf76fbb78099ddd7138f593343d3ca5", -"T3T1_es_test_pin.py::test_pin_cancel": "88e2cb6a1d189b85b602a3d2446d8aee472af955a3852a0460964c77de652f15", -"T3T1_es_test_pin.py::test_pin_change": "b7dbfab5134c973551d3dac6f71c07f123c3b41ff46bd5ce8a5298793bb1f8ec", -"T3T1_es_test_pin.py::test_pin_delete_hold": "176f37667f29ba0ef75526308188d9dc9e493c996475ef76f93ddcae2b0e7711", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "48198148d76e6ca0de5dcbb3ce7945fa9516359785645c1ecd6dcad3db83f3ae", -"T3T1_es_test_pin.py::test_pin_incorrect": "000e5ac039efca9adb3aefec0a356df441375e67d25d796e6008fa95ca3b5d78", -"T3T1_es_test_pin.py::test_pin_long": "e81c79d465d6daeaf69a9354c91d688c3dd1bea5f29b814d2c60c277b6151b36", -"T3T1_es_test_pin.py::test_pin_long_delete": "3cf957ed8d23138134a49f410c84ea372a400f9f458e03ee828db6edb5702aec", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "f8e8387bb9fcd5d9a660b3b4c870022d9f887a94e6523370f28c4a452bb4fb02", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "d6d094bfd464bf7ff41107ad2c2a6ee6b5bd74b67f21727a93da8aa5adbcdc90", -"T3T1_es_test_pin.py::test_pin_setup": "17862768b59922bf3369c624823f072aad8bc751369dc57fa9554c69ddb3f983", -"T3T1_es_test_pin.py::test_pin_setup_mismatch": "7359d8e379f23a76772261b8fcb6e8c6d2ce0e8ad2853d8c2565eda81ad69464", -"T3T1_es_test_pin.py::test_pin_short": "48198148d76e6ca0de5dcbb3ce7945fa9516359785645c1ecd6dcad3db83f3ae", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "1905e9d32a7746b2f9beb73ea2951b011ec5c60279407fe3385b1caa51e56e2f", -"T3T1_es_test_pin.py::test_wipe_code_setup": "4fbaef2fd244e23427ab9d060342ecdd476fdfd0945338504923a322db12954d", -"T3T1_es_test_recovery.py::test_recovery_bip39": "871937fc5138f48093f14856a78e8e2698fe407aef57835c2a990c96a462b3e9", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "8984517a676690a5d26a4f7a578aa455285e444c933eac7a8b37905d51157808", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "d2c58b863e451bf92a2b0ad5cd2f33491ebf9b43b59029facb636008bd130998", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "024820fe86519b7d64b5611b5ad909a066e523602a093b886e5402754c68da78", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "2499fdabac63aa4a08d66bdfc8cf5a0fd1e43723275fe421efca3af92a7d40fa", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d0a4a63450a7fd91840fc9625342b602c7ee1b4f2afdd97e60804cd50dd8d6bd", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d9c3c13c8671cb73f53e49e1b47c9d48f8342b4d99f84554cfbb988b8c01e23b", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "80c41c76af46f2162640d87b968b677451d86d44417bf31a7f85121a1ff760f0", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e09f0296034ebaafa12348f9bd6ba7473ef9cd1d78105e6c279125cf69d276bf", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "c525f6b9604aaa28264e9502c92200f0d3b63ca009356ef9ede1a5875ba581b0", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "7863be843974eaac86f6020f6df344c9d71fe52a9f56c2be4f67910b0f94e518", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "660974e99c062a30936f6b5a3aa31b66af92763c5dcd3a99fbc7b3978363d03b", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "5503a08d911c0066c1947f53a8c7c69f7819ea992d485b0cdf23afd882e3e5fe", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "a7a55db5e7521dc732eb0211e016efdf80cfdf23da076ad087909fbb6cf062d8", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "34d230a8f446bdba5e037877d00aa8067c30c8b114fbd02940927a4681b1e5b0", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "96a492ce46c6993521eed4eb227a2beb122712400b83bed0715818c31cd39adc", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "533c64ed5e6907c712238799f312868557923fe2b4aa302a2cdbb6449d5d8cee", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "65f49ab55c3023a974b82b9b012e4101a677c470a95a0b47d3b32d8c99e3b135", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "af09503c133033dcd796527e9f52ad370685b20be3b50c93fa041323ea62060e", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "741eb41441de2c4cb3387c9cf641e368fef8203bd0c8bb9fe154c0612f15af86", -"T3T1_fr_test_lock.py::test_hold_to_lock": "a0f3fd6fffee4fc83a46bc2670b70a63f9bbb2566eb6599192f1d0fdfdc8d339", -"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "52fed61dac211307a1a95f5a68b080ceb8b57b8315ca1d64390348e49b223a44", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "fb58513c13c7c4ce53c9c4c1907b294dac8943e13b65033fe05bce180c73ee55", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "144fe58629a7c1ecd971f129b7fd8fbe8bbd9c928947266e4e0514b4ec94c5b5", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "d4de68c34673a0617b6246a3ac976f93201c4aab90222c48190af0a08bdd5057", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "d88dcee8118a475c55bb741bc8180dbc4f70bcc4a4183dbef190b70445a49caf", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "12d4d41dd28b7a2b1ba5b016a1635d0ee60f443d6492aa02d1aa01eb34951bb0", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "0f927d24c47591eb480c0a3127e622d44f0b6f0121351ab64ad1b0e6dc8c7d0c", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "2975a4d53a8db80a76cde2162c32b8e8cd3c67dffe696a6f83bbc1e6cb29f4bb", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "10a26a73af9203dd693301678a8497f504fe2497d3976d82fc60177aff16d93f", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "b579a7396e4385f8ed6d76b585625c0352e922b4468eea08dcb932c0ae1d8db2", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "10a26a73af9203dd693301678a8497f504fe2497d3976d82fc60177aff16d93f", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "40098e485e21b84038597ed6b67c6642f18be0b46971bb477ca0ee32533b6f34", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "3ba7527fd4b517d30583577a91aa4d41767ff00ac80876d38a69fb93cbddd4db", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "b9f62d8fdfa4cf42486afcb90672e9ee1e1af0b9d2cff08b010297d652ad459d", -"T3T1_fr_test_pin.py::test_pin_cancel": "b01d0664f24f3c823028d9c93ce00501bc687e1334a23f3e5b3d2a6edcb9d780", -"T3T1_fr_test_pin.py::test_pin_change": "116679d27010214fa6943a7e44d19a4852bc2b4e5cf2bc0e57ac654c15c8c68c", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "7497f302db432bf6274703f76ae230efa559bf80c67e831b9ac26132c6e62a0d", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "447e181a6368eb64dcbb2d5141e2c1e34d6c6eb2be115ada8007b4208e217284", -"T3T1_fr_test_pin.py::test_pin_incorrect": "a0d0323c1b5cfb215c7f602865d0ed54b6424f4c6a067b840742a83fde5d11c2", -"T3T1_fr_test_pin.py::test_pin_long": "67a65f69c9c8296e3df67e995117c8d61ee5fff9efac6f96e19c83daadc7baf1", -"T3T1_fr_test_pin.py::test_pin_long_delete": "57ed6057bf784246e07d8e72a643a681f52759b10798cd49cd1d7d83d423ffcb", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "70148b8f773f417288ad885b018ae94a318a246d68bb0d385dc0200dbc42047a", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "6dabedf4295bcccdb997a32e69a3130a8bc33e93a2a8fa865b6e20ed5ecfeebb", -"T3T1_fr_test_pin.py::test_pin_setup": "a5171aec50040c4bd970ea26573f9173c0e5dc3c273e4754cddc73ba600a4188", -"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "3e41b37c521a451454051dcd3a0dd13044989f2ae6eaf45f112458e96d122b1b", -"T3T1_fr_test_pin.py::test_pin_short": "447e181a6368eb64dcbb2d5141e2c1e34d6c6eb2be115ada8007b4208e217284", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "af5071c7702be6f4f4b534a9f9d0e1ea62b53cc05fbd15423448d57313180f37", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "85850069264f60c6dda7bd915e908af4932b50293f6f006ef436dbf3c0405a30", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "4f284e9efe88666971e0393a9cc85afb8047b83ca624f0cfe6fca40d9ff1b188", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "cda4bfe6f5a79c2fbe98e7e41c55bdc485e51d579ed18c049b929e0bc58ecb2c", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "05b4e2cf341661ab300379b05b733f8f01eeeeb0f3ee8be599534112af834874", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "bfa127da6f3ed4b101c03629cf914757824c9c48376e900862f14094b649c374", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "9a740aeba8b98e23a610f9a818c5795f4840c9266b08b19d8bf80424cb54731d", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "35a82795eb4679fdb6a1c487bde9921bdf32753ac84b896bb51a4a40e0c1491a", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7e8ace86befb58f6aa15069c167ece1173aceef84cd40658a710a6e50f2ba952", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5f673cfa9a1b9d42d59d89af6fe3321818ac3b569b658cee3db6f1e284c97639", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "02f7cbd4092b668d4c4cff97a932a77644f912f06be9b5c1acfd31eca6f5c7d3" +"T3T1_en_test_recovery.py::test_recovery_bip39": "673fb86bd0dc3524d4d26a560e55aa3efe5392e63494e55154c00cafae2a53d2", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "201f180025b004ff3a65b0730384d417cc671f20ef7ee8c4915c8807326d09a4", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "c24cf3b1d719e7fb57a63b23622277bf9f083e11853f979a19ea210026c95176", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "d2028a5e0b014a89489cae1493c6b3a83bd01946d6ef608a877d923f70447a7c", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "d5a14dae735a733ceb26bbf5ab65ddc4b4db2f43baa01d91d4698f499a860d92", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "623ebdd87ae7015ae701896e83fa036d4b482928cf535cf530d11be3c3a417d7", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1053e0cfa6f55060cd7c30b098f70660394b7b2bde9e50b7b0474702b9e8dd61", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "df4495905830912afab9cd87eab8d862d7a085fd19fc898748c01cb53826834b", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e0b690963d988a3f80687d5b891a6d7e355bebc93e5f487c0ccb759d2e80aa68", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "5e35c8d9d18488aa916cf7f74f8c65b5f87f3c9b385b2166cede5386e720f201", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "4420029f510ff0e02233c013e3bf1e5f2d4846e29865ca354e8050b469dd2dd7", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "0d953a3a1c08bdc9a1e6e39c1f466c1e9d07931042bb96b69ab1643c9f273337", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "3cb6e78520ec3bfcde74a0e172f2ceccae86249e0455f7b3bfe7a6e8b2fc6563", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "534a980b2f52c2b2a61214587743cb9546705ec0d0f4fe37b6de7e63f656c5c6", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "0835abb90939b29a09353e1ed62a4caa2dd34b21ab87672e00930298f00096e2", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "f7397c35d415bc508d528acd792317b728b45225fd446dd570465e1932757baa", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "0ff1d57998e816f32cb4ed5f67c63ef2bd3ed94acd7b0349e197fea4e8051ad3", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6cd7e54334efec0cce02858d7748a6881d9221074f0acb920a42dbafa43d29f6", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "97502fd952dd7ed2f92aa168831dc0c88c4eb3eadcdfbc7d23a40f569e4ace8b", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0c12d7ac0a4ba869083823ccafa223e16adaceac088ef712fe0170bae274a6e3", +"T3T1_es_test_lock.py::test_hold_to_lock": "15564fd01c7abf2ae98f514d144fc1dc3bc55a29cada6bb23802c02e06e809c7", +"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "59518f6e9fa953c405467afc29c6758e63644b6c87077c05da5d2302aabe8844", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "da27fff7ab24769defda45bb284295058dc86ba8379dd53fa0ac34ae8f6e9c9b", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "f4719374c7e9853ee0ce24c062b3f9a06222d753fd60f03804223f791031c526", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "b0143063f520f4cbe04419934c99116f57b5b478a69bb983c8e8da4a2032a62d", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "f46afd3dabfd82c3551e57dad67159c626d0652011c79a1acfed30a92c286608", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "8f460ad047f0f126ea6952c0022451d9811f249955ff5002a57a70235856a919", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "53393c3a8f882359e4de803a4d0fbc16a544eed9bc33e9227d95c043d4e3e625", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "92aa10590eb26ff94637f664d5ef9c209d3a5bf432d8098f6410355b23504e77", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "38bda90319ddc1809bba620abd6fbaede809c50a5daa474315fc4ca157ea7604", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "cb299bf23443f77e909865fc938ed58647bcb5c2bf2366818e1ae8f0d90f743f", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "38bda90319ddc1809bba620abd6fbaede809c50a5daa474315fc4ca157ea7604", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "8f7581b8ca411be76ee439d6c7fd8b0eae27fe8f1018dcb5ef026f11ac98ec67", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "79bdca257097161f797779eab8e0b8a9a7ff59752b17f1213d2671f566e2488c", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "82258a3534d8fd363ab9a3354534f2eaf4921b638d82689cc074fd32f1d95826", +"T3T1_es_test_pin.py::test_pin_cancel": "626c049494964aa9317a9829bd5f6a164f322ca42f9d6e6be751bb38d6e82fa7", +"T3T1_es_test_pin.py::test_pin_change": "80eca044be966b286fa64d0ce2a826ceeca53a9696fad7919d46eeca56642fea", +"T3T1_es_test_pin.py::test_pin_delete_hold": "96d60fdb7b16b4fa4719ad47b3ad26f8cbf0c6495cdb49233c179b1fb0e7d74f", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "f49219c6f411f90c7b03f9eda28711bf5b36c36822734d5f9ddb1f3805ddb2d9", +"T3T1_es_test_pin.py::test_pin_incorrect": "83a788e33d9dd4786f544af8f40442f33010acbaa359aa361ea01fad796ad3d2", +"T3T1_es_test_pin.py::test_pin_long": "d05e312fc8756b686a4651ca8d7594512afef59c91be3f03c5ba7842d450c38c", +"T3T1_es_test_pin.py::test_pin_long_delete": "0b9a728bddbcc0768c430eb676d4fc0dcc608872ac9386ac011ecadb6db429c9", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "a93f4008b1c87237d51da09356ac0796f07cbd42cfb1c5135fe35b71f803d2bb", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "657f5078c2f30bc26339b6b29dd9c750b1a1bf85cdd48361d58fb8f9e4882daf", +"T3T1_es_test_pin.py::test_pin_setup": "bfd9c0ec0a6303f9fcd02c7aa41618e247992dcec712102c2892a6634a666312", +"T3T1_es_test_pin.py::test_pin_setup_mismatch": "0fa95c12686fa6cdf648042dee30da094891ffa10fe9155769c0f5a2f0ecfc26", +"T3T1_es_test_pin.py::test_pin_short": "f49219c6f411f90c7b03f9eda28711bf5b36c36822734d5f9ddb1f3805ddb2d9", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "8d1e31dc7884e731f1516aae547966ee7f5839c21cc6f33d4a588a264844eb03", +"T3T1_es_test_pin.py::test_wipe_code_setup": "06c0bf039e4a7965e5e6c9b584b1227d2b95702aae4da74f7475a73bcba87ead", +"T3T1_es_test_recovery.py::test_recovery_bip39": "6624d943b3fd85c709deef35782a4cc267f9391c5a9b8de60696e7de7847608b", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "05e7ee369a43ee2f296ef87e77d22baf4c9e6069e102bc154294f8eb0d91e804", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "42f49a8f3488677b9c01a21a00df7fb70d7d03aee6a67521995ce26e9cb7f3d0", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "fbad73a1feb3d0c3e709c863d26118363bf74241b5fc5d2701c7c373a349a246", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "56c69e4dc03b2949706b79a45b789143c098d14dfcec820ce2d06c907e5b070a", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cde3bdd8e2dbfad21b823e971f20a6e8f450aed4835bb8c84a84d560e1621769", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "153ea45212f1074e0ffbca4d9ef7bb28ba28fbd29c37ac107960709aa63cbf3f", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "a14f4e2ce03a595d9ed3754763d493a28dbe628ec2c2b00f7aae001532f28cce", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "713fcbda30d9358f546f9b65e5c93c37bd2d4834575443f6cfd06db270e47f1f", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d4cd3dd9f166dd00f9f2169e7242ebaf382f3c2139fffa47d5c0f7e881f8e6cc", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "1da6dd736d4b61e742872aae00abebbda99016c4d7d13fbbdf58221857499fbf", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "d018435c45bcea7d7175e5eef1863e2d5015023b03c615aa0c48f40a4c116ebd", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "4216f59750c009ed63d5d9f042ba3d7e0ff3a4ba9f74da2dbb5328ddfb3a38ec", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b9fcaa7c4dc24525ee03419f66f22c9f5c030cdcaabebbbc97df59261c4e338e", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "fc65fc7c7e6a2e1b533fb7c11d7edc872ccddaef1168b91b30acad0289b7fe63", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "6209e73dc8115750bdd665e3b8f16a77e4bd255180e75f248992359d48477480", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "89616aba3ccef70ab51186b1ab221441a926eb189c8c6494c2f6d36de1676168", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ad994c2a68680668665cbf056b3839cc4a9298cf28b5745d5b47b3818149c2e2", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7253f109185c9941051dca8f7887604e310f23d9d8ab499683721cfd6ccb3a7d", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "38a91a36879497aee7317327f2ed075d8aed2bbb8d69cb1e69202f8df5f15237", +"T3T1_fr_test_lock.py::test_hold_to_lock": "cc512f25a8d77cd344b60d90fe9fee49ac03b85e04ff03004e1637e3c1334f5f", +"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "147911b8c6ae46898131ff069328b4a7f364a0c6770b9b589027092da1d6bd5d", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "10f4c4c13033898c22773d8d571eea299c085887cf9ff4644b37a5de29fb2210", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "78b1fdbbdef6afe6036527cb5a1be3e8210fc4fc405bf64d3ed42c208966573d", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "903ddbe3129880b7d14fb2e8b8f0695185d84314cec7b549015566848018404e", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "71983b2ddc9a36399bb5e1f9e3de2ecccd537145bf5e4681fe7ab7feec62849a", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "55bc43c28a1cf012c1494b7c02b6044e2df5e4ac38f97e7ffb86c50de10dc9ed", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "64ec60cb027f39856a809c38a6a5e8e6c4611bd6ce6020fdb27a1349e62c3340", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "925d63b0eb8d677bfd04ab283ec2ee084238d36c6da5627366af9be105a6a73b", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "712fc317e74c19b892a769a346e54e1f81214f6860b3fd498bec043d034215c5", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "3d9327d4930aa014a18d7c32034dcc1a3a461e08c2a062c4c40daebee1d0fff9", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "712fc317e74c19b892a769a346e54e1f81214f6860b3fd498bec043d034215c5", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "6adde64dffd1fd507aa7d33c8cdddd71634130a211c05638020bb9ddd43ca29a", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f0862f1cd39fa608c5618383656f3758bb16da253953a7f811873562281f0e71", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f33a87c14365dcad1d786c8d7b9c2b53e4e1d5f0cbf7d911cb12cfc0fe06a4a0", +"T3T1_fr_test_pin.py::test_pin_cancel": "e5f845ba0df3a595721108eed4a2251c07b5196123afb4d00506e7144a3768b0", +"T3T1_fr_test_pin.py::test_pin_change": "854f1678953e3a10719f7ef8efbb90dd8a490bc9bb5b2513e599c3a3971d3714", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "2caaf6075d0f6ebc018c7fa0d2e9b14327aa5b039f6beafae42373d7caa6bef9", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "4f62c2f784ad58b3e083b2c06e80178feafcf4840042904b46acd3c50e044c8f", +"T3T1_fr_test_pin.py::test_pin_incorrect": "2e88c6a399e2284920e043c46353317185e02857199f2b4babc037aedc1d3686", +"T3T1_fr_test_pin.py::test_pin_long": "c09a8449d955ed0be027593330477ba9763952c0b2464c647135959bb4f683a8", +"T3T1_fr_test_pin.py::test_pin_long_delete": "c21fbc7d034c1c89b3ba4bbdd54626da7f7bc1d863dc560df7fc92a268e6b09d", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "036f1a91d2895fc28e0a2c83e8f195cfe8508ef6d53249fa6f70e2080e1d8cde", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "4f776412c3335c9ffd13caf0e0e5c756a4e7b4607f43f26f8849980a314d9ccd", +"T3T1_fr_test_pin.py::test_pin_setup": "14b3b31057d44f4bf5395a80a99d496c903d5e0221667372f33639c896806c33", +"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "09b64bad3cb7d3109e86c4e9349bcc58b8b4cbbbc175005b01d5fe37017bd387", +"T3T1_fr_test_pin.py::test_pin_short": "4f62c2f784ad58b3e083b2c06e80178feafcf4840042904b46acd3c50e044c8f", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "888b673b8cd9de44479baff9d1471d5f3d9a2b3cd55ed3769c8dd5de7e28e805", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "8a399c58c57e8c0fe049a9976a4fe58d3171122981d4e2dcf07e28ca7622f04d", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "72532c272ac3dc97a8b45c5c268f75bc122a3d03dcf6f89fe539e2dcf41a6888", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "33f278d1b98f44ae61915398409a7cdf1a247b2b49de72e1ad5e4f1002712387", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "4079df31415785686f540253e026b2ce6b66c60e0b45b608e5c269c689af3421", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "d236d09df31bd3e71d1ea74920de5e433edd91ebbe95add38db985db872a1c31", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "6a256de0b7360aee8131545a8ff2e506ec10a63b4dfc37490ee2585f67ecdf99", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "63270631505d8842b24593fde4cff22d150d4c31f4ce1e45ceed10e325468289", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "570db1eab6b53b52b202ec161e0c5d7725c5bea3ccd7431b50d65887877f9458", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "09acc60d60c22103a7076241a5776d224df4c4012c48b33ddcd7b52ef4dc0aac", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "74fca790957f5e10040ce9014e3872e72e7c329184d2ff75c50dac813d5bbdc3" }, "device_tests": { -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "989b953b806cac90b693da6f65160603ca473b6e5d6490ec43111615e7df42a3", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "f98ce7d0c63b8986dbecb312a2b2b4327ef46cfebf8a11ff159049b655555066", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "9dc8b3921727e97604d587bdeb9ca7b2597ddacf2800bd3ec1758d2a5441ceab", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "ecd00f6ab6431a29cf1e06fca035b0e6c0d291a718ab9e696b20ea2e9cbc0276", -"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "4f28cff9f6cc0fb762dc39ec4b80bb1c55a9de2ccdf9923e4c723cd64989b04e", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "bcbfed93d684ac6a75d873e27a1226de4d220088d654381ddb657c6ca3652aa2", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e67d013cc0d622c095e1b4b7c2ede2aafecf158522ef343cbb7b07fbeb55dbd8", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1f3179cb3b763c7338267ff043c00ff4e7cf86d92b155a4c4c80bf651af58464", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "bcbfed93d684ac6a75d873e27a1226de4d220088d654381ddb657c6ca3652aa2", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e67d013cc0d622c095e1b4b7c2ede2aafecf158522ef343cbb7b07fbeb55dbd8", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "1f3179cb3b763c7338267ff043c00ff4e7cf86d92b155a4c4c80bf651af58464", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "288c2a4e389426245ebf1d06c8a086b2ee174812635ab0f72142ae4a4f8f58ae", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b9ebf93f0f5aa6f8a8836232a99de25e3792f3ac01615fdbc7578d52aa1d985d", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "c2411dc8d00debc4890c23a8b80de822edf68689928c7016a62480ac28c9cacd", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "19bed66f9dff1dffa50aac89f76f626e154a7a7239c22a594e59c9852b23338a", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "93edecb8fd7a77aa6989edb452c967d5898fe3c80c828b698d568ca33a724c9a", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "93edecb8fd7a77aa6989edb452c967d5898fe3c80c828b698d568ca33a724c9a", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "d182c7ba98d021d6d3ecc0f52647f5fa10b1314ee53479207a541ea2bcc19d44", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "7819228f015525f7ec3c2cc5fe69baca0d9fe40d53bcf6a1d146ddcd97d14bb4", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ae96c88206306c0e5faf53af92fd3a088fecd7da88102df7bcc42896dee0c8e4", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "951295a89368409ee40f1c368eb27fa28cccd6a9a02e52307c29d3eee2de6536", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "951295a89368409ee40f1c368eb27fa28cccd6a9a02e52307c29d3eee2de6536", -"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "4bbbcaa51686b563c67290e030ba592f96cc52bdeb67a8484f1b2b718f58b8c6", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "4bbbcaa51686b563c67290e030ba592f96cc52bdeb67a8484f1b2b718f58b8c6", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "77874c36c93618808b173c7c8e438a572dd6b090b50f7b79df7a55e4d0908571", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b40151bb84ae6696cdded5c300e2d0a6dc2dbccb0a5d97bc518a2b0b3424200b", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f0ab55eb2f1c7b341cfdc660e91983b19bf18c8129ef03e48c975d18e987e1bc", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "680469daaecdb022097470947a0c17f537cdc1394457e935558b9849ee1a80a0", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6d49e9b9df9c11641f6e7f5c37ec541fb41b38603b8dbe144aaf584d8746948d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "ae93d107ddbfaf4b3af0b42f3d71fb214195c42508213b48c0ad03bb4fe1e63a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "fd5ce4547ea206a0b37b76fc9add5f93b028df9c7fa082fc57a184af9b0274ef", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0f2788ff23bd1498071c3f9608ff412fbb13d07c09cc6b8717de47ec339ff2c7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d2a6144f351c8dc8d9497dabd0964b86c9a6b3b510cde51fd50cfb0c3a64bca8", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "17fefc57e167c60e72b1f2a1301132ab9c9481fe783cc3e5636ca66c700c26a0", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "3d48532473c3c735c4a81c6f18bb26481b590840e868a39f45994f4c34c15374", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "941467ee852a1fbc4b603575ba24b46ffa69661b1ecf2d6e07c5b445b2371c67", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e1f3ee512049a4c18bb983ab782f4c369da6e7335a3af693990a6c5f5bd2f1e3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "8de97cc97cda382df1d815606d044baa6fe02969e1b9be11b61f3376469cd4e8", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "83b45fcb8bd9447ed0f13c3c2f96706a95d994f9233b50ed848aa58aebbdb5f1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "03c776192a692b649aea5336e9131f96e46fe1566430917ac8498badf2735eb6", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "32fc9184bb513382b879c30107ab8c8fa9ca639954f1e57151636a1aa98eff9a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "db72402e690b943e9ecc1fce5ef1edcec496b73e7cd483798e58b4a34963f297", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "0565a3f9f8477e9ffc75dcfc2cd2615c8c093af44c764aa1c71c80d1c608ec7c", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "64521ba2a9fab185ea0de33988a813c2effbc1f52a3957e225b0c728a22157d3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "13d37153108da3bb9804d9d5116e48df718bd7b1158930a0dc0f0987fcea1944", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "4f127a63843d2f719ff4a01a1f37b232e7c970b6c742ee2ac8007d824986c835", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "847df24b3937b7f135385bcde1eda98fb97ad770873ddc1047fefaa0dbeed608", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "ae93d107ddbfaf4b3af0b42f3d71fb214195c42508213b48c0ad03bb4fe1e63a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "fd5ce4547ea206a0b37b76fc9add5f93b028df9c7fa082fc57a184af9b0274ef", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "0f2788ff23bd1498071c3f9608ff412fbb13d07c09cc6b8717de47ec339ff2c7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d2a6144f351c8dc8d9497dabd0964b86c9a6b3b510cde51fd50cfb0c3a64bca8", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "17fefc57e167c60e72b1f2a1301132ab9c9481fe783cc3e5636ca66c700c26a0", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "3d48532473c3c735c4a81c6f18bb26481b590840e868a39f45994f4c34c15374", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "941467ee852a1fbc4b603575ba24b46ffa69661b1ecf2d6e07c5b445b2371c67", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e1f3ee512049a4c18bb983ab782f4c369da6e7335a3af693990a6c5f5bd2f1e3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "8de97cc97cda382df1d815606d044baa6fe02969e1b9be11b61f3376469cd4e8", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "83b45fcb8bd9447ed0f13c3c2f96706a95d994f9233b50ed848aa58aebbdb5f1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "03c776192a692b649aea5336e9131f96e46fe1566430917ac8498badf2735eb6", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "32fc9184bb513382b879c30107ab8c8fa9ca639954f1e57151636a1aa98eff9a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "db72402e690b943e9ecc1fce5ef1edcec496b73e7cd483798e58b4a34963f297", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "0565a3f9f8477e9ffc75dcfc2cd2615c8c093af44c764aa1c71c80d1c608ec7c", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "64521ba2a9fab185ea0de33988a813c2effbc1f52a3957e225b0c728a22157d3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "13d37153108da3bb9804d9d5116e48df718bd7b1158930a0dc0f0987fcea1944", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "4f127a63843d2f719ff4a01a1f37b232e7c970b6c742ee2ac8007d824986c835", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "847df24b3937b7f135385bcde1eda98fb97ad770873ddc1047fefaa0dbeed608", -"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "eda8f648a3930e834f91327f29a2dfec346a58c8b3bbcf4474cc185617caee5f", -"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "380a50ce13a7988cb1efa4927e38aa1e6d48ded76a60b531c047f05f42c7b756", -"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "eefb9e1e138fd98a4500c5fc3d78177adc3202d4012d91b4e6bee568e4aea0d3", -"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "cc51cc67755ef71510ccf0992a85553b0d3a9360cd248bdd2b4fb93dbc3abb9f", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ac5d665726e000b07386db17e3273ff8d795a987727ef77cb198461f5f10983f", -"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "c9a1b13155d012323ed84502fd53b17330c4bbfcd5e40fbf4265a4a0e89ae3ab", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "7ee571d11858d4d2007174f2ed563696166c813c93367be88dfbf14f2d12bf77", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1475ed924aeaa8dc25115d1bf9eda76c4d6efdf172db97be0b5057ac519d8947", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "18d32fbe6558bd6e851bc971548eeb8877570ba0da079dc50ebc76ff4c8668d2", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "2edb89a3e4404214fb25efca3e0d4944a489583456e1d3fd5500d8dfb305428b", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "fc0181e8cbc9a445b62500ae5b21563b7c25d4cc1f64284de167415e2be8181b", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "a3c576fb8508d5919837d3dd43febe9794f86dda99daa5a7bba288375417e386", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "6489a52be4b190289105f49ecd86426ea1927171b6b4b0c716614aff5c88bbfa", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "539bc5898a308f9e407c9df046f57a4b2d9be55a8d8c91833f82dae34331a089", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "e20067d02d4af219774fd6464aac4d4eea6cfb1fcc6fc8a76267cce588dc019c", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "2b7241ecdc36352307ee7fde8bf41866de01c87f1bb0dfe1d8940df39aa7d571", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "66810c8d2b598250f2a232c0a68526c0b3efa77ff1252d2690847d3aa5065be8", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "e7f35bb2de7ccac7e5d0c9b44cd44baa100f9d9598f8117393a39007c1fd6448", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "aed0e1e7acd1497bb0a54078ab44501c10fcbadc1333f0d868471c1477238f6a", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "550ae63c46b45fcbfd1b0721fcea85fdd95ed04aabfcdebecf9b35adebff7197", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "843938dc18786e52b274f0f3dc530c78d7c77b801de09c310b95e775f924fd30", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "bffbfb9bed7fa401bb0894f1a2039c88985589351e8cdec99b3958b317cb5360", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "3b1c13f6790c457835dcffd774372d32e1d2fcab3d3f985700785224ee88676b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "cffcbb6aa6305815db8c41ed97c2dfce5fab3bb0fae60d5a37f3c30ccb3abe1b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "23935f07bc71439f9242cc3eda42587c98c4df2d2e1c57c6d92c725aec76cbf0", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "0b53e9d4d9929c706da5b4cf53225161343f2a1607e0b702b5b4d2e61b2ac86a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "e142b18c1eba5854f2bf68b59a3e92fb734ed95071431a5f9b7eca91b068167c", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "eea7bb3081a22e93d3e0e02cd0f34e2ba3cc2b5df4a1a9e82ccdef9c7879a17e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "56b6422a3de28a1df28aef69a0ae89e7dcba80dc775357f3414332ac28e8f0ea", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1c6e72a769f52f927bf5d5891680ea6c984626a5ddac0aee91102fac30fc6638", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1c6e72a769f52f927bf5d5891680ea6c984626a5ddac0aee91102fac30fc6638", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "e52d7c01b424f36557c5165f65cf593b3a0e7f83ab6a3ce781141f612ba2b9ed", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "f619ae3793faa223e3923359fddfc226046e59a85cef562604eb8fe1782b2612", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e5b219143abd74d4b1aac4da986f0e224648a18d2a1b7ae5aa296feb4dc0849b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "bc014cb3f8dc12802fdedb0ec3319418a29ae16f65416ed93ec2a40b0afa4c17", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "086a9c0ee5d872097ac1a89f2777cca217378c79824aa662901779ee7a1a3a45", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "a42261947f52a57b30ffd95ac4624ae78baaeaf4a446fec0db498d71387159d0", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "be209caf605283c9407a5220f296f2491967a8d87e9929598bee0e1052112c57", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "663a292b8b5c373d69f563a913fa8fb337bae886dfccfa54efcffb83a3d58f1f", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "bb1032ddf2fe4836f1fade41b6405f370f63ab38a607ac6f037e0dd98a8cbbd3", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "f007abc42bf75f914438abdbeb78aae2b352d552c5780c0dedd8e2e63a2468de", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6d100ea4acac896cd30adc91e112d891377018ee77895c36966f9b64486fcfa3", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "b066495152052b0e4fa7d1c2b2d64cdf2547345e1d78ca059e267596e6cb4268", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "22a5cfca4a9170e1b750accb6d78cf5b45ec28cdb0795f7f6ae09c91d4585cf2", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "dd317eb429efc859ec1c7a0075a557ad739dbe87039df57b98e477ef51760b4e", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "fd5ce4547ea206a0b37b76fc9add5f93b028df9c7fa082fc57a184af9b0274ef", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ed779a110c649a575e88bd12d1cf6f6b8425d5038a62ea5d293e8d7320d1fbfb", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "d9de757e7cd20578d8c5a99f095c923299e99e8030fa0e30f4f87aea5080ca16", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "3f4ae96d142a4502fcc9ee7a880871fbcbf4e093150ca192337f1c4721919142", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "2e1e070ccd3825813c012c7f5fdb071e36e9dddc49bbaf883fde65be7522d59b", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "577b587db1a694506521bfe50c543aba9dec50c57b7c99f4335c5ffa41664636", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "3ea2b8e66fe250d7a0283c3195bc10635893a817ea123db0035453706b848d19", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "b08be9883fe9b01384d12a55bd3047bd72f558f21326e91dd2e8d41d966c68c5", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "84ee7fed57edbc251f8ee6b91c860c0ddf51ada2cac20ffb5bf1863943f09740", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "03c776192a692b649aea5336e9131f96e46fe1566430917ac8498badf2735eb6", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "f2cd938768e301d0443846cfc231d133eba5a52380a8c8e92b832a9dd1c267a0", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_grs.py::test_legacy": "3fd83ddf6ab229802849155b57604b042920fbe74af7867b267041f69575ec57", -"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "12726f38e8a7898db7f6e0c52026291cf25e9c7e309b3ca7d5689b077512a71c", -"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "9c6b13eca2b51c0fd88ee664729073c69533531038e5b72214b6e16c215034ef", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "81dbe29b67b6e941871917b906d15f9c7f3932c49a9b622077d0590d31bec366", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "09afe1638112cf860650158f6a182c9579481478c60cc197c088504defede710", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "b46c9319c90afd5535979f71858d12709af210791ec8389f2c928388234b8e92", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "b2eadb590be5ba7ddfd6401f8d3575e5f6d680b7ac5922a2e09f3d498eff215f", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "dff879911366460431b97a4beb32f749bce4cc7ab897cb09b4e088d6e4a9554b", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "87754cfbe2762be145e03ef9798438ec22b39a36cc16cfa44d142c8cca7a93ab", -"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "a4cb8f8fcbd2229591d88ef4094bc6271406275c468480146c2d5cafad377989", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "185370f405fb6cfe3d2b6edbe4d134a646bdbafefc53dd51cab18d12385e7070", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "45c2e645407c8d51868864bed5cb7ddb8d9625b84e925e86044b7718d73fc630", -"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "62ad26cc87ab9d1f835fb0a09ef320f5d152243332be3cd81263960aca146e29", -"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "4352889f8ef746e285f1030c46b97c70f9ddfb7677eb6b30ba08e3917719cc00", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "6feff1d941778819210ae3bdb9c55ee220d059ee0d5f55496aed32416dc005b4", -"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "48076132d2d31a67dbd79ff7188a099b6b6002edbb9d15770f765c4056057bdc", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "66b9ee775f7c704adc5a8c11099daa12e2904330c08c11bf53bf5cff75f529bc", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "277aa633661bf7d96acb33ed3f14bfbcf1f896aa37c0b8c11baae5c02068d9b6", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "157753c12e7f44fba15b0987812a154832cb86c21f05f90701b8844e88d9c33b", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "e781a41a154e8386ed291e4ace5415486f952d408e6a81216fae72a709c034a3", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "101678b43d96fc6b252301d469067165291f49f11da4a4b87a212e2db8994b6f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "c528fc02e14ec1c8a012c19374b6c00a699429d57f844a44754cb975ff0c84e1", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "013c8ef0738bf4d292fac2bb109cd4c60116e4c163ceb75430badf4a587ca32d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "90e94d2620e56ca05fae39cc3558332476e8ebc7bfa62085161115ec45c74c9c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "87d7903fa45ef842a4e3a99ead808c97dfd9814420564749f1a5943455fc4c27", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "6e4ced50785749d1243dda129bf32cb20ff100f42ef882b1dfec0df517529250", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "1a2c9bcfc1ccc8dbddd5147d54b5759f50008619d52d409a0d169fd61cfbba07", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "108fe8e1cc28d8f14b2c70506162d51bb969347873f6a60f0abf1b8672d4bb0c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "6b074bc392963ccac18dd3215fd37d7d4f5600afc92c88ab238de75f6d4cf4b5", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "e948a745c53569ab7f53cd63de0180ed4c467a5f9d4477fa730660cb8f582af7", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "46415a5ab31404de7d413e0b96fdd23a5fb548a294fb5e1653c2434e54deddc6", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "4dd854656bd3f2b62bee0279ba2a0794e2386bbebd53fff9afefd0c4aaba58fb", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "4e0a7995149eb606de9179a11822c013b22833c6895551b86197a8398ef08849", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "78acc5ace6be20e0a8d1692958b753f2f70ddb24fc0e3f241eb77c6b21f76ea8", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "18828ee98120b2c7f700366ca29f40a54dded0c0b9948516cecea0bc81f9e0f8", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "07cf7250b957f2e3f9afaa56ef1dc4c1d6392696e80f0ad84353289fb99ee83e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9b5063daa05e45e69720c6ececbb9b1383d7c8d4c3baf7a1c8a21cc6448cbcc4", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "8c565bb41ceaded4d050759e8bf3befd6e010bbedd9a0f6345e148e919f17593", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "0c4628e7449518b9ab3f6d316a0a0f6e59446e7ddbf5c8ccce9e89dc3487812b", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "6a0a1893a9594cdb25e14baca852492c3cfa6dc1a42878b1c5a83926f94748ae", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "3778b6de5f666552a73ee5848bacb55bd141bf86734420a1c0874faac3dac870", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "1c56906d3fdc73505a4cf79b86bf3e84a077964c15a490312a2863d3f504391a", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "af9e22420a1f884954a1ba9dae8813cb78873e7489f3ebbe7c967a38a106b252", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "ddaa265781f44cc486bebf9ebd210dc1e10571caecda184f8d7d65ece6e5535c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "5a83eef923ed23de74f0898db58ae0738ecbaf959bc65dc0feb19c86bc20e428", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "15ffb72694957dc808278af09f2fd0083f3b9a037c422405eeb22c225e1d03dc", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "04d0ebc1bce4e36888f51c307aa9206df56686fdba06052e026b227418b4f9e5", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "12ea98e77ba8e5cf30c5634ec1157c3f1f65bd130812d3080154211817ea743d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "1901be3846c81f93c174005307cfcae78a2a83f6225968aaa4492024a9d93df0", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "1c7e91de42acaea716010b14fcb0b1ae7c58e07d760b77d8ee88623541b6b99c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d6b061870e7f73917a57388518d7901cc7175a4e52a94967686802361b21897c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d512436202d9ba44fbb1c268a06ed5f8c4093302b0b41f91f95614b7c201c66b", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "5a216889084c8964ed428a20f0af1433f64ec49b281e363ab90e082da4d00350", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "c456e72f294723a9d31d7d3cd20f6ae5940beceabd171631d7a7654a8ffb65b1", -"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "df11e98d4873441d1491b33e042aa4f9ea6dfdc7484271b0219f435b60ce03e1", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "1b9d56e048761ddd0374121a3d77808a0a220ce62a1fbe3b923ae0438610d1b1", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "8609560b8b6286daefe549c3a1f8c5cc7604ded75c7b8e04167ab823fee2cfdb", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "061bf6be542dfa87a174f4488a88ae4e8ba71e85d750bc3179a71dcdbee2678b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "061bf6be542dfa87a174f4488a88ae4e8ba71e85d750bc3179a71dcdbee2678b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "bcc086e1e70113715d367633195ce42b8354d3bb9917856bc0bf475a99e4b505", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "8b9e663a2c5921a8da3010b10476617420669d10ee5c479ec95c6a0b7e6286bb", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "d29298e0912775c8af440f3339e31a1f48ac41efa64cda1a6a9fdd075ca47a1c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "6685116d26e3855935eb860244f7066fe27a695a2793f02a53da54fd5046686f", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d8bb958664994fd9f4baded03f8fa93ece8ba14ed77f49024d159e7d201d0824", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "007710dbf2ff2a270d6b3782abb2cedd76e9b3a49f4f1930052634c996ea948f", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "007710dbf2ff2a270d6b3782abb2cedd76e9b3a49f4f1930052634c996ea948f", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "4f033d0b073c5fbb85ddddb68f8b4ec29eab08f80cdeaf32db6964a3a9d6ed1f", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "050dd5e507fd9458f8841ffbbd60a0f437f04253d0ba870c1bb4efd476fef4cc", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "f49ee8f991e177d5a5d5dba1b490537993b378adbdf7a42a19e0c5797c0e8657", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "f49ee8f991e177d5a5d5dba1b490537993b378adbdf7a42a19e0c5797c0e8657", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "49870a10d2d0f548455f490ee59bc11a354584800a4d0a7f037319d7652d2133", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a6f12c4a240d70b370b764b875397518bd5d4d7e28f9a087c866194aedff2e1e", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "16b148f0de1fba73057a97e824917c3ab9823ea4bf51f5a230744c770ad2b97c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "16b148f0de1fba73057a97e824917c3ab9823ea4bf51f5a230744c770ad2b97c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "d704bd46dd8f2da584fb88571b26ee6540e9e170933b77fec851d4d0e5cb3d86", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "940dfda420e1fb627dccfaf00468ae19672871d7577a37a01f53835e446100fa", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "1eda272da8df864e60b95b37fe9415ec53717a833fbe7fc521084e58253e76e6", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "1eda272da8df864e60b95b37fe9415ec53717a833fbe7fc521084e58253e76e6", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "8a85ea6b9acafa6c8e1b20f814c9cd81c38f29cc576cd97d04fe51de911fe544", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "ab56c1c9f4eebbd35f3e9976dd14026298b5a585a46c629a970c0faf04acc028", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "2fb1bc19ae5048ecdeb73dd0199b6cd47f6a5b7d5d9cf4bd971346010d5a3ddb", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "3e79a4aaef6c51a09334ae416d9a27ee89fffceb8e9dbef25ffedf55c7548eea", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "975cce535b0f120a0a4ed56eec3a0c402714249eaf064242802db09caf3ddc76", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "0e51b91a0a373752d9641ff86d45d4b058030f2cdf5c097030bcaedc9aac7c9c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "0e51b91a0a373752d9641ff86d45d4b058030f2cdf5c097030bcaedc9aac7c9c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "66cca3d78fbfa9f253a25d2d5e6a193830cd46c727a2316b10e89984b2aa72e2", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "9501705d68d07bd8a20f52d05abf7b5dd3fdde5ff1c658d7542c68c2c8acfc67", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "22bd3bb2dc168d64725bcb41562d05b0d268d7f372d774bd70ef24ce037c1385", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "22bd3bb2dc168d64725bcb41562d05b0d268d7f372d774bd70ef24ce037c1385", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "2e23a0ca04b6b67856673edbbb038a4aadbc3888b5ba1972881bbd687e7e98d8", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "1d19b8294a1879e6f56273cc68bd99131b34c86529628cd6cd79b0421ff02f10", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "f99f93317a536fb28553efaa680dbdffbfaab4aa6260d9e80f382580ae6879ff", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "f99f93317a536fb28553efaa680dbdffbfaab4aa6260d9e80f382580ae6879ff", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "df097cd05e9840d15ef8c1cd7a5dcd824d682a1585c394ee78a2c4f77ba2d24a", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "d1f2e1713bb0aa226a9af5a421b2fcafe189738c2bd7d8c3ccc5d4b853a0e5c0", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "866d40cd042bb9dacf2b879884a62c82aafc982555c163bb7febf4e2e44c8f81", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "6a2dd87510bb0aa60c7e376657090a764c25f623e853ba5b1df604acbf17f253", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bd72fb70d97d70aafeca57be4831bbbca05cb1ad0f37878fcee2f479577012f9", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "f314ba7f8e129698cd1764e802d6169dcb5248b0320c0ce06cbe9448788bd5d2", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "1f28c6f40a9177ecf9d5a81f46cc84db98d99849ee6443ca7aff9e09fe6d55c5", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e6ebc7e9c4a0b93cf97c748aebd6f6dbe9726313835794901e4c6569953b8b4a", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "243c879eb4fabc173246e23d5b6525265f10feaf02bb721511b45baee7e4711c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "d31dda6bff492656ee4ac099998348931ce2a29d85d82cb05b5f36938c6507e7", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "0b0686fd1e33755cac9c4ccb47f874f1c739c14312375988f367440ec9cd11d5", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "140f4eab4b8162e86d5a37d6f8e7bd8dd1bca8e7b30232acac8f3069c8bd665a", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "a726b0f464ad5cff7dfe52ad198fdb55f96317b0ede545a7e6574c605c4b96c9", -"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "a726b0f464ad5cff7dfe52ad198fdb55f96317b0ede545a7e6574c605c4b96c9", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "289c1dcc821345d4824596613eecae0044d1fae8b5524b60da34819cdac71403", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "3cc6763558595960975615e147aa41ebfe533e0f9103a38b9f88f4655b2e5409", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "e51490fccd1f700d78332228f5aa98d8e6f300b8d5cd8c896da331b2e80ccf29", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "c3fcbf87236243222e78985aa1c1161d7a1d326d89a3385b6c12781a4335acc0", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "a64a4e5b4619257efefd1007e3feaef7dd6fbf3e9e2f1e71bb4d7cef61defcff", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0a10283a2a223cb2c1d547c76f49415c5bf5866797ece4d8ab89e5f87cba116d", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7d41ed4cf475198e0a3fd7cdcf7e85aacc82098cd73f9d7e9ce9ed42cdaf18ec", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "a585bbd0c5350f72304ad03e8561f312dd85ee30ec6cadfea469d9b5fd8868c6", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "7d41ed4cf475198e0a3fd7cdcf7e85aacc82098cd73f9d7e9ce9ed42cdaf18ec", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "a585bbd0c5350f72304ad03e8561f312dd85ee30ec6cadfea469d9b5fd8868c6", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "35cf8fb1721206eee82be3a5c76d28f6e1ff54384d29b03c2b50f90788811932", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "7128b412693ccabd55655ab21ed7b74ba19c2592062065ae5d11d3c41485e9e0", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "b204f6ff03c3d9180e520f61a7f0abb50301365fc90cd3a4104b93298ce93069", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "b6feda8efe090a0ba8bbd566ea3814bf7bbb20db402a22a1e917aba16d4161b8", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "c0b1cb2cd2da726fee6b741fb333ce6cfbdb1357d32ed5e332ef77934ccd62b3", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "42a57d03054e734cce4135be1c0f8c62cc6f945122adc55fb4f3bad9320bff65", -"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "d881c7596e8493eb56a3cba5c705fce9e4310b1fda544ed4856ff49766dc6f23", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "95e1ec7d556d7d2796e155b8b360c5c7903e1e4d97518ccdaecdca04ce2c2611", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "333cbcfac4c52cb73e28246ff6d64c80e3a3025415ca8f4bfc619d089508f750", -"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "7e14453345ab05b2a89cf19d3b4aae90436440fafff750058220f620ae12bd27", -"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "a7de57c35531d3acfcc8c6f00b119db507f4be5193b1ef0c27af47c85873fa61", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "51d1c848d661b3d7692b33112a85ac6dcad34ac71c6988d2273aaf3c7dc4b1ff", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "a606717e62353c29232fab2d623d270b4f284e78bd05985142908dfd306c3977", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "8ee0ae2c75a0e44bb871e29702334820d4a888fdb88aa451d095cc7bb9c54eba", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "ebd1407bd90d260642cfdc591a6f253f71e8d002b1648c28cf643262016227d0", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "a726b0f464ad5cff7dfe52ad198fdb55f96317b0ede545a7e6574c605c4b96c9", -"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "cddec108d2734bc5d36fe1b11dd53b9c28a5f233a71cee38a44fa8c198623ed8", -"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "bc41fc2a0c267bba5fd7dbe162d14b2de7913a726c493195172065c35abc840f", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "d881c7596e8493eb56a3cba5c705fce9e4310b1fda544ed4856ff49766dc6f23", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "014512a401e65e3ca11d07709a45afa6cee4d7859d0b601a309cd97ac37139c0", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "a3d3a6a964916d4f3af4bec1a906de68a5151623e31c159664d45b91f2df4e94", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "ee756cc9461d2858cb0ce6428e8f22f6c7153309bc25a8c70a8113b844138a9d", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "d881c7596e8493eb56a3cba5c705fce9e4310b1fda544ed4856ff49766dc6f23", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "d5a9049d93209212bfd05d1320b3ab0aa4b1732ce23ac691330403be9c61131a", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "d99a4a382c9d81f6955a20ba6acd870d932d8735410b6af7c7ce94fd1a925d2c", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "bde02ec3fd2712533bdabe902b519741b0f6b0de929351130f89913fe57da698", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "37ca71bc9f7683bd8e56276fd94b144e74963cdb13a1560eefdde14477d476d3", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "d5a9049d93209212bfd05d1320b3ab0aa4b1732ce23ac691330403be9c61131a", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c5b8c509b9bd2172bf406af55d113c962fa5ff88f7c07cd8e3b85d5c025af951", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "cf8c65c84e83970cd8c4f5896575fb3702733a8d3bcedf4f055ddc21e170fbea", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "b71fa1351cb6ede187a016f8f33db877047903519b075f6c1c067b732f0501cf", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "d3a4b5dafbeb5fd86c80da1afc370bf84ae6320da7fcfd69218c14dcbc30ca3b", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0a41f9b52afaf911cfbbe18e522333e5a4950eb6496eb441e221ebe3fbf4541d", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "525d6898eaa77ccbec50f669970f6b98bbb2390f83746ad46a35bd6d62d0617f", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ee3dbf2f2a40cc71c6b3399201fae524dbbe12601c7577139bcd1e2c6cc2eac6", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "a66b5b0fe4668ff92777f935e31212ae6bc847cbd8c5f4f28605ef4e458105de", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e3accb48eb15d8efdff49f49d7b682f822162415e9afb4a8579c5ecb5ea07a26", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "2c940f011faf66ec64c3492c991572f86d3202796ae158d685fba5fe373b6190", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "b485c3403bc1679d97a68887556610a114c9b582ec39058d015240da6d858e0f", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "bee6f895a3c415c934a85e3d103cc973274400884cd21efbb20f7c7d536b898d", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "21e15c69f6b1bd02fb9810c82ef7f825927fdaaf1d183d4b731c61ad314c51ca", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "178ab6502d35f71b9be83c953f3935012c9b09aafd2df00a9fc697b2172ce179", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "21e15c69f6b1bd02fb9810c82ef7f825927fdaaf1d183d4b731c61ad314c51ca", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "178ab6502d35f71b9be83c953f3935012c9b09aafd2df00a9fc697b2172ce179", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "48f995234c5cfa302af3392f7ad51974ec94cabea6c0f893ad74eb1ce71a3085", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ec2e9fe0634c266135a5e51d1ef65a3bdd9a15c9ca4aa38c29fa82fe0566f1ea", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "8f6d6bb223b82a7cca7e9c3d3898806a9e3c894c2dbbf63486c38f5315ebdc9d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c0e5b0d4ade0b1fef20dc14573ce8bfe18ecdd3bb3451f23a99b91823e005371", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "0eeb14f36a2b41114b4e4e5ab13aacceb026a498f8caf9634dbf9f8a8b16c90e", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "83572f65cc4d0336d1f41e910388723b70cadddce91614ae4c04eea282477252", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "870a046e82624113e363d65c9587684ab467639e9c052df1b55cb9658794a7e8", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "11327eba1149f3f65c1bea1cf1dc3f9d0de8f3561b99de7be0414d6e106e1d1f", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "4978611f40fcd3d77dc4c1cccf5afe89c4e94fd00b61bcf7de822a102120726e", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "4978611f40fcd3d77dc4c1cccf5afe89c4e94fd00b61bcf7de822a102120726e", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "4978611f40fcd3d77dc4c1cccf5afe89c4e94fd00b61bcf7de822a102120726e", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4978611f40fcd3d77dc4c1cccf5afe89c4e94fd00b61bcf7de822a102120726e", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "500c44c2b403051dd72f29595347a4d9623956f29db1d0379cd0b36e98a3ea47", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "500c44c2b403051dd72f29595347a4d9623956f29db1d0379cd0b36e98a3ea47", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "500c44c2b403051dd72f29595347a4d9623956f29db1d0379cd0b36e98a3ea47", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "500c44c2b403051dd72f29595347a4d9623956f29db1d0379cd0b36e98a3ea47", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "481967e6e3803c6efcc094eca8bf981c687bebf528e2e9329d353f7d80b0af69", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "008ee096b4e4cee04404a7360a37502b19beb88bd3cf8962cf3070e5af453828", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "ae6e65dcaba383f66acd139f583a3bd8541e67d4ab369bfb9b40e5634d34ad5d", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "ae6e65dcaba383f66acd139f583a3bd8541e67d4ab369bfb9b40e5634d34ad5d", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "148aac465d939eeae3bbca10ed2649f2c9d3efa295d0b14874f96d32a2413def", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "9c2476e9aa560687bf7f529b7cb4d1401ad875028ff4b1e291f89e9a3bca4275", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "5e33d092561f569b1e6b4e86621eb1a766da5261b1a3b9d4d42462dcd032cebb", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "148aac465d939eeae3bbca10ed2649f2c9d3efa295d0b14874f96d32a2413def", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "d48f6df8d2f59869e7b83580182305b9142f63da70091728b2db706fc38dea15", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "ce74e4487e509c09435b72f1d3b8c6258e632594669b3eac06e9b64b43281957", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "ce74e4487e509c09435b72f1d3b8c6258e632594669b3eac06e9b64b43281957", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "ce74e4487e509c09435b72f1d3b8c6258e632594669b3eac06e9b64b43281957", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "21acf16b1749665727fbae8d397a9ad361ffa336ee1dbbca8857ee4b1ef54102", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "ce74e4487e509c09435b72f1d3b8c6258e632594669b3eac06e9b64b43281957", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "d836d60ad1d707e106be571cdce9556de9a4234cd61f2e88c0b0514812df27b3", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "83a39369b31c22c691d15306633dd4ec99415b0af859a7b5202f089e9b69900a", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "10207961ec5da3919464c643cc0d581738145d668297e292cc47a3c7e3ef0317", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "606e0052f5e74be4152a9b9d27f692a3d082e208e5b7867fd3b7b1d9e3d01ee6", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "4e3d922fb7820c3367570a9700107cd03951de9f50a6bb45d3ad4cf8366541af", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "461ceaea1c84565fa806b8e0996a98c03387a743f21ff0a932b465b60ccf15e3", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "8a91b6596f8eec3199f808853fdd205fd51de09145c9470880626b913cebfa5a", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "fb3d4bf1df6c77123ec1daa0a0e97ffc38ec58bbe0115b11aa32149443c40fc3", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "b30d71a3aa84bfecf4f4a0c31f8e4d1a283d1a55d2809367181603f6a5bb1740", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "dfab840b66537304c000c54fd2f590ccf5ebfff9014565fd6152db6e2f5124cc", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "361d8eeb63341faea0b1afbc1080053003b505b29fa91ba07df74acaec13eb3c", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "a1989a20a141fe9e55e5f537dee4a6e120b116babbf839717a65e393b5a7f1c8", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "caef4ab7f2961bea5db26e14858620f292cd66f06d05707234af8ec388a7c95a", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "5ab2604d10fe7f1ffd3f390e90d456d958e8f36f56682d36a213b3864180ab2a", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "d5a9049d93209212bfd05d1320b3ab0aa4b1732ce23ac691330403be9c61131a", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "167193e38d4997253aca7080f2694afd38cb9a606d40ec25e2194532838f29b6", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a411c8c67c8e22e99fb306a82c0a9dd59384e0101fc7bff999b3fbc2dd2fcfc7", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "f99c7ea46bef4d1ab31beab4ac0e256eeea74a279f131f1a05443a68fc32c635", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "bff44f4cf53dc9458a47cdbd635bd6d61a4d5fd3abc419b85b33921ec47b4835", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "1380274c1aa7951d174886b205c2a1c18f9ab4b9fd2a16bed871f0abff7e93fd", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "a04885174003384af97e2168f729068c1304ebb36e73b656820fefdc34754502", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "59fcc5012e22b78c850ab6fde5835f6edb52fb6ef9c83e2b49ff5f3d16145d10", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "be9fe9fc5420c96fbf68fc239753fe51e05c8f71b229378549e9321e7d8ebcb4", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "59efab49cde588e4d1eb13c52149ecf9c03ac59991e9bcca65a098f087708cb1", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "518e23131e69c87686fc4ccbfae80b038d5c75d083559670b1d47fbbb7d6fdda", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "ec5f93add674aa8f43a30e3ff3887b06df0f9621453bb0570503f2d35e3d17bc", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "dacb3cf9daaa78c513ba751577e66364906f8367e900b68313adbd991c2c50ec", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "d3d563b3237bff4c68483802c7c2e794113f5c8c8338fd345b47341952a28410", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "f09570c1aed4f118dfe08ab25600756a978a33e028e407e9f9324e73584240d8", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "eaa7a3d5587442e25a7be954e2c326709ddb7e29dc226c27713ce9daa27cee04", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "36adc6b6bd2bd32abb4c586438f6da1accf5d9592f4f8557b83dd0fb289d7a13", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "d2e57edf7dca8e63c9efa3b1e208328b16217c6057a2fd1afd6291e7a2c92546", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "701b08ecbf63c554f5e3677a56aea7ab57654f9e152bc2b12d9c03401bdf7e4f", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "9c1c4ce0feb6e187b1c3fa03b8bc83223e69bbf4a5adef3c1a36b03ca03073bf", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "4058f3f93c0bc59c18499fe71a32198169ef7794d621b065cea8e7d7eee75cec", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "75fb304eb98ebb2f1455c40bb00003eff2388ec5f251d2a4b60afec7701e1b8d", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "f8bc2cabd3b7d29a9331409f56a2aa0be49bfb36000527ff4797f4339e275042", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "e6a47daab75617abfed728eed77c2110c65a2d02101d2770b86ef1c23a3d77ab", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d3a225ce95b922a2a2ce53da3ebba649baad7e65b12ab7d19c73ad14dd472551", -"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "406306bb072bb7c29f6c796ca64800c9b185ec9499ec8b6b3e621c6be36e9220", -"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "439c6d49f5261fde56a9eedf9afa14983838839f766309ffbe4af05f592c5055", -"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "b4407217521939394831d0b8eb145493766f293449cb023309e499eb5893eb16", -"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a740c66cc1a7eb208fcf745e454d16cd60cdfe1627418d5f9a7ce75870c79067", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "c7f55d1a619520c1b42ccb1822ca28da4ee3b6bac93ca7259d2f367058007b93", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "e69310dee3ee4fa78b9abfcf7fcd512e97b39e4f889112bee7875b6ebccdf82b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "65dbe76c433df570388b503b778c0f5b1c01f11017ac9b20c59f37bb8af8c7af", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "93391c36fc8e0b6269538591e9732f5ad8b11762c438ef96d66fdbd834394d59", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "29c4536bc9e3dfa161e9d19d9b39fd0cb98f119c61b5ca4305ddd1f848a438dd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c9641273031d85e6a1880506f1c448dc30fe05daa4091df187e19d8b0ff857c7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "e5d9201f0ffa6b69b512ad2e92e44a68a2828d85bd59be4a5f116293478b7cde", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "57e328fc118351a0aa0fc62b3e039058e1a8f22bdcd4f428a5b141317bc60437", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "98f64e12851c597ab7d9c30063daf0be585c26e33400f9a975c61b41b22fa5de", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "684a755d49081fca21d3627aa3faa690bb5a5e6a30cd85f5ea29ce6ebf0bd88f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "b1e08d28bbd3a443a7deb8e9a303f381f7b431b5d8a93dccad1b959e08190309", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "34567f4875057d0364b443f61028cc9c121a3a920fba667feaff2260b77114f5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "f37e49eccbbca764d71b0cca8f6142818dedd579c9ffa1d8e5b7c7799d20f3d3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a2aebc520d34ccda831f1d4c298578aeb1af8b2719f21aa167b821c0a9a64ce4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "f50c31819b7c5b6cbdb9b236f8fc961c27fcdc4f0f224150ace66d86151c0b90", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "452f81c77ab3b9d1b74a7c29dbee73a74d0b64f1b685f18beab16a35b8ec6d50", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "8db52379f2e795527c4f6ece0c23f6b1393ca835a14724961d4296b3471f7fa1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "ab6251019db212a5ee1bdea41f3acf2141bc509c0ec445466a1c609f17a1a99c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8f7a078389fdef84f48cab3a5d158a042f936733fd3b3b44259e4037a96018cf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "cd6ab7549f1a1f7e8a2bfbead143d303f4e128740e2223f0f9ff3429b57e485d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "3910b49c55719e77f15a8cf5deccc7beca64078991cda95ac6634f3901217e13", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "b4f9a0c7c2d1ed1fc5e87128fe4a674f065445320066144959d5fd83cf5ad352", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "bd9f5d9cf97507fe719efde134372f6f3f4cdd4593cb8a5cbd822eb696157aa0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "26f1c25fb67ab9fa538efc8cc8d9a108550342ab0b43c634dffc5008fba584ca", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "dfd110c013c56da2ef2e58c06344cbe5b5d5307a0342a15812916eb44733f24b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b075cae15f3c681cca681d88a5c4e586df0faabb352c115ee93735091d7711be", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "9b75ea5ec46782b4c2177a9bd4d62e46a2b731ad0bbe0fe568077d49becdecc7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "19c4f1743cff5a792a94db9c81c0dac95d87b37be7254b3724b2fd3d1826bbc2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "adbb886c07c1aafa4af10b37fd094f671e6fe6b3f4ea88f3cac3dd48872cc8d8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "7560783985b3df3b2739a51243083dcc2883c79d6867683bb0d5b383256f94a4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "bd5a02a0d5f8c298c5a69b8907bf67c98aa0726f0089b5a9d170a207fc09f752", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "b947c777647fa1c470243e4d88c9f442712b494e8a980ed8b02d706e2095a1eb", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "50d1ade7fe212110b1d1d377a20ee0d158d5fe7c10378f3e1ff59fd4f3275cd7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "0e39c6d74627d2d9ac51ff706745441bfaebcaabd1676d3eaa61af471c5e6979", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "ca74c856d57573331ac7a218a126f97006fc8faa84cc9ea4f8f853129b0272d9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d5cd275e99d98627a5847558179cc820f5a7163f8292b9f74c48ebe161b7ed19", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "f246f8d4fc39958fbfd2f550c3959d71dc52ddc63e5f3fb121767e7e433d94aa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a0fff711af5ca43dd8ffb826d3794c16bdb20ef57a9cf5ce6256dffb75d59a21", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "96002d99e2d5d3f1770f8731db70f9f9dd028f97150b17c45939061f35abd570", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "64db76f2c81e7f5b6b153f1a4cd39a8700f692934bae54df20347727d3f07a52", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "d04cde99784f99baeaffca166e25acff12efe47ef4a54c529e3a9d72a94c5662", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "54764e910b5609c3a46593351adb594237f331b9a8367be011123f24affa39e4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "ca0a07ff7f8ff374c4db9ec63fe1b6c33b9526a24014944e5a51e0d1c1dfbcf5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "66fc3bea92665a0a2a51c9bb6799118821ad7e5fe8e8978de352ed80b427e7b7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "df2a2c2d5609129a88ae5450f4c741a1caeb2f42b5f3188bed2d6bc855a88f4d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "5eccd47e91c7bd007be04a1386d662b7e21a3caed05a7c3f9bd2828854f63876", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "fce4973650e6a639ba794635dc1e6a428630ea9ea3d823e42cd0d0866141004b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "0b619cb8e29fa384add0994a6958213496b55d6b11712102a414614085b43a08", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "b2366cbbe1452d60a2b07ff88499a45e8bb099210161764bdd97c39f5beaf338", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "4320a0c6afdc8bd5de8a8f1e66f5265077689a37d44be13af30112fea17b5f13", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "51ba5869b4bffdd340b98fec877c10e6cdfd39b31165f45ceb671de78676ae4d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "e661edb87f8b8bd2c5fd0fe1d9f7e3fe0eefbd09eb5d5fe3d04deeda66dfe0ff", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3b2f1f3071d32f9e86f310f9c6b66d68d9930086ea6c909452a3a0b11d3ca1bf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "83df391d431f292e6b697d95e150e8b827249afeb9f32d75931110d8f5fb52b2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "0e793118e32ca10344603791e1972ee29f85401f90a1bb43aed25fa4182a23d0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "983a2ff8e56379c301891908fbda96989f6c5d5f6f7c9486e008a2e007c248a8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "305f9b9e4bdf1d8f30c890eda9322fca9fbe7fdbf757e0515f4e3204cc2b342b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "3d9086f8238d0bf851761739bfecd51343b337f7da6304ebaca8becb9790a59b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "975e4ff7e802afc29565a6b04d1a96dbe50d9d786493b528aa671bb208f8ed70", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "3cbf1bd8723c8934e904cd105be3ff689d00679ef93247bceafe235e1daddb2b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "03a4659c97b33f46c10a94e97766ac5b88fb071f6f0c6a9b07f0a378f9034594", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ddf13e8f109e56be3319324af1ed6c02ecf318105071baa5f225f377b0bbb331", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "169bcb285c161c271f39cfd5b6cfe7f3983c98a8328253da9de1c428cc06b9ce", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "a6849f206e805ea9f52f224b0514205d0617baf233f20f77d42c6c2fbed153b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f0a7714e26d72a3d29dbecaaef069dc96f56195cd31af52fc3bd45bd9d02c289", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "c39f05a79dc2374ae9e74a7ce985d4d94903347a49fd5792aac5a546094137b5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "768f0e83e55fc16bf296cb8dd02a609bcfa691dcbf58edf3d14f5137c80f917d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "9a24d406b5fd1bc83e5c067ed1fdf155fa63af21fa5dffae2d5952325abec064", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f62778e5ab38a86add6e875b9e42c09f2e6a12e7eee9b74eb4f90d769b7e6b56", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e66717e0a563d535d7d2ab9c6d2826f2492eb8014fb0827ff35b42f4b7d9e814", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6948f4c7cb05ca6939c25bc1557074e6354b282ff1b694ae6cc47b5dece1e6fa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "c896cb9c54857e0ed98d640529630728bbbe4daca69c842a12c66c93b2a225bf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "827c2ae3e687b5b39c0be02efd647393dcf8ee129b082271d8d539ed447c0a77", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "d5daf7cee7e922d8c83770dffef122a23add33db342a29be107261c1f55eecfc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b353f6880e63c57cc416ee21224526c75874ee82557e8ecbd1af58dc7c301b30", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "8ffe2ca05c7df2273e6c05c51070cd10e06c9569541079b731675d0851d6a298", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "cbd72435181e299345015e471c8e9f283264d6b9fae011afcc09daf521e199b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "2ac4e6e83b37569cdbb963efa2d0fa160737c26d897bf09aee1dc446558e78ac", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "f0133ebface46144280dacf2bdbc5c6ad1f87dd0b6a418dc167934deaefc03c1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "c1a876e88b7938782dc4b1b4413d313eddafb9e80d8a03d08f3194c0edb17db4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "fe19d99191d4a4111f573b1764ad77840d3428e289e4721b160c6a221a4d6887", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "01b23637fa462a4bfe8a26f45d50599162cc256a1a713c8e4f420bd75cf492b4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1cdcc221245e51df1443679b34b0167aa68b98c2520634c3a808a9d19b1a1a6f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "90bea598f54a0a575aa1e061c2372c278903e08563f2476d665360ba207f8e17", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "e52d35cb7b575e0fd4fc893d63304ea46963db5bcf0412fedc3030c4e8086a45", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "f40eddf56ac2be006952714b841bd3474306eb6274f8c1905a7d5568795e0ec6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "4ba6745864d95f31f4e36e895e66bfedcacf7a896beee471462e8448586c472a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "78f2e7346d1f96f5d9fda45568f881ed361f499f651b71c9a45c63a0d2c44fd1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "ab2a5a7d410a0ef3fa96939f6cbbce5e8bf9956743f24ff8a2ea12eabdba5b0d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "2ddd3aef676d3f817a641a09a7a32ddbf3b67af7b8b0f896373d8571c7216b62", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d7b542b3796591c10fe3afb5a4b6c6a557b0155e93ca0eb6f18efc746f7049b6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "26a918e33c8a88844c00210bb3566d22937866d31f87fad371cc95d16be08dc4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "ccc5ef1bfeca2c8474b0ee9fcb41e231552b10147bf9fd2ceb211b4aef3289dc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "1722a01aaf06f528456b0d26cb7148f8ca85e8973e17dbe9670c03b089f545a1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "c21f7e52606fcc8d1fac96bece699abb095932770d7e68e189ec417560c0ce5d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "0d2cd6fd006fdf08771598ab620cb672ec953de5ffd132f12e928a7388dbcebc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "84e00bbbd356a4b634e8925cf41aad08f4a914ab7d74d5607f41956f70e1a4ba", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "65214b6d98bb8c1a5d25bb8650234e3057cea3f703e99b63a90dcd1e1319a4c2", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "689a7b973593695ff38106501bc8df6f328553545fc305410419536d0b181696", -"T3T1_cs_cardano-test_derivations.py::test_bad_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "46ead273bee5093eaa88afe27004035128141b07960719043cd62d780b1114fb", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "a7751c9a008db9bfb3891e9dd1dd64a106f401d51ce82724e74af1a92331e161", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "83bdd92dbdc504faa706a2d23b1dd1205ed202db6d6c149bd23ae1ccaf2191e6", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "8ab377d1ffb0a460b504c858b92c42f6c6a84d80b986cd26e0cc06a983edc852", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7d72371cb772164aa6d894808323fcd6f387041425c81bebfb3d1f2d1cdee07a", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "932968e1f04e14091052484a73d7f6e66a97e43918a6498676e380833ff35941", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "a083c51cfbe8e67ce239305f135fe3cd0b160ff8e4d70079c03451b0c23a3728", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "7de0033cf281e7e11cf09ce7591f69ee368a0a81eac0acd33618034459940ab6", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "b2a67af9bc0d231e3fc35ae52fcf6dcb050d08666b7b3b215804886e5b7c52fb", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "cc4a6273878364e8ce49b98b6af5b9e43cce085f0dbba679ae2803a49d193ef0", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "3515fa1aa7ee66c35f74f12da721b745e13d8b59d353a43405f5ca2f6010f877", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "864a24ac42a652c97fb8d39b1035a9fa7e8a05d7188bc43cf59be673c9becf15", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "8e4ce6f48d14d79bf1f32f50f0b9dc6450af1f40fd8609de584201d55d479339", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "22079ae88333c6369b2d2284b3b01b19335a327211a62c68c4513b156a1592c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "f6155b0afcf92649621c9bbe2491dcc82b608f7b8abb7453f18337dc359bf246", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "7b4b53ad44cbe4bbe837b05e3fae647289b77a5b3efb21f552e3c568f93010d1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f5b02c3964889c1c3a8ba4bc1c48f70c25b65eaa2be2c7d14cb17d71418b3277", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "7de17db5c78dc8d1b97d8763590b567b7c96ec1720169b11d529e25eaa32fa2c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e184eda7e2f759903a19602407300ecf97d025cdc14db24a351ce58d595a317f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "2efd9f17294ff04974753951c045390dc3f0f0d5ea1c03d2ad91acd6613babc8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "dc4e3e1d0bc449bc751fad29d94880c0b3f6aba25eb80d644edf56204dd1c91e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "d2475cbdbd52a3790a8fea62497f0a6b9158d167cd98a7b68d455dec52961421", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "28ac91d76110b86437c5537af034674a54d436cfd8fa50c7ee808d2749610160", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "cbcdc54e969bc0d3405db2909c57253e59e9c7df01db6587f3d58b166c47726d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "63a749559798f0aeeaced1d08d52ab13485a7eda9a027bb3e6f8a10f10c83233", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "63a749559798f0aeeaced1d08d52ab13485a7eda9a027bb3e6f8a10f10c83233", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "b190890e73b9406a5b8226c3bc6791497e729f010b5bfbc4267b8ae63d8b78e0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "2abf3e2d59e43277587b8bd9c426c7380f78ff7bd4930ecb99ecee6497cce8b1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "33e9a818984839275b6a04be7a70ee7ea3c7c124fcb828887c55ebbafd64a366", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "37aecac1d30c86fea22ddf59f0f114794c2de1165266a0e67cabebcb07f32319", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "6157a854b693c15175395b74049115175838deea76f8f226c62f0813b27e5698", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "24b71782e169758af21aed865b0d51d951d427be92ea54943a61173e601edbd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "53f91871d5fee48f13fbd7508333cba46ad32c497014fa76f0577240d0db5167", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "5680edba573a7ba48449a3d26c5bd0b8eb4cf22f0f0d9098d6f81a85e4552a5d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "a914e4903950fbe62c21a39d5496ff8970b093eb4c9090a876b5224505219c60", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "6157a854b693c15175395b74049115175838deea76f8f226c62f0813b27e5698", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "24b71782e169758af21aed865b0d51d951d427be92ea54943a61173e601edbd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "93682fe8cc15813f09cfb46887bb4a15bb0b91af1eb9618c00816928b395a98b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "31ee755ceb309c029d4cbc9eb4e20f227f1a35a4d827ea4c14902b23d9a78da8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "aa63682170abdd850d2d2a4b35d06ecd9d44d1b364200574118febae0f601694", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "217bc687f06a4f36c3ce59bd1d5d2363a8001da8741e435e6e2945dfd63bb037", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "7de2d3f039ffa4f5d168c1876fff9ce78325b4a9b74c63625d293cc8c9636d94", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "a585b74faea2a646468c0d88a0fd91e9fdd647a98e9d5de8e0e06272d681fc2e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "65ded97a83f08623326a31acfb5631bb1dd2065f86ed46ee3f7dc12261aea622", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "29fb2b053391181714e903d8b0cc84f9bf181a14c6e5223e669ea6f19bbb0352", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "734074e9d9b9bcfaf6b4b1a4e5f9bd3e739690b9a62171bc644a09ff38d2e99d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d32dfdeb5039fdd910f6554394330d3fbf8097229c8725b716ede9089884a1e8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "dbc6dfac0d844310ea154b9507aecd3c6bef403dbe6e8c30635665e00c599cd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8bb9bd41349157b40f1ef9d55854b975ef1c99db7fb0bae1b54255be63ca461d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "e86687cf5626d5008c681ba53fdccb9aaecf0c9214b27ed1d6d7de3d1a13d56f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "fc4e8b1abfc70d4a5e88b42da846c0f67eb7a01828e8cbb028520b459501d235", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "8a2ca91745c4e1961557575adcb4137d1e864288332e3a54691a5d11370f0bae", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c85757c2eab3f8b3bee28072f794438f617b17486e4a63552c2353ca0ed96999", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2df384071125af34b59dfbd61e603f408e8c9d072f16e6f45341f389233cd4cb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "07caf7946c5fbc7a2535a032e97e35cf99207a272dd4d67a978f2f4b665cfc0e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "af8ae3e02b2f1bb26826d626675b88eb2f0c4d2a3989b7889b570a548ca76c02", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "7b1a757b67bc8e916d93d434897e1bba4f3a6436efe18d3519a43fb78beebc9d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "1a3b5a23d1e115f507d6604e618351abbd4e710e8518a71b9e581b4ef06921bf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "a6860fb2598b0438e4aba4c4f913f13e5c242295f75335027e8803e550806ed3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "b86d986a1d7b5886acaf9d28148445be4e161ba84f877314f5a5f97f3c0640a0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6828c75fc83ad715f7a6fe7a05ee3d3ec3dd5044ee257fe2d4c591daef08ab67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e7a6fbc9320b92824f51dd6ab9c72eff189812fe4e01de98770c9517215899ee", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "7f73fd52f281fb49ea7481ad41787d844755b99111f2a8998ad88dbc2de5a2b4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "1899f4d285023dd9cdeb67fcc9058147b25029e3442891652e9f23a5a7248ac7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "9fb0a0c828651eafd4a4c5290bca3144465d6f8bcff9d0034b6200249fb84c0a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "009fbb280582e2c7c292217183bd19033e5d5ed4eb3cb98cc9be731795d8bd67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "fadb032f7b245ec4216a657cbeb2be357868d38655ee844068c87b54eef41daf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "beac626afd784e50cf6f8862a358b97223eb726537f56eb1af8e23e3b4b232e0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "c382a451d92483a9d6825831558e0260aa114a72740926ef60274cba4bc28d3e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "5e629be8273aea6d0c854524a9b37e0c2b44b78176c6a94eb590e8943e6d9ad6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "b1728caba3103b44ba1b16ba1a7721926c3cacd1d98b0b33e0ccc1fe37720e0f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "6b944fdbf9c8c5c00b160d7d3e83efb5ea024f6bb25387db76b8e7699121b2f9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "9c24b7fe193798fa768012319570383642c086f866066522a27c06eef76d2a50", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "c0c98469e0b081e2a1b8d8509d310a45d245dbeba900d50d8b57d5a7ecb2e777", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e2dcfa96154b0208d60dc57f28367324eaf73cd482000a26ac90d8fd30f66e1f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "d14c7e53bad43996e7297c02d3a2ae775f445a467ac0b4b43cb8533fe4f5446f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "0bedb119de8edb194c08fca3bb3c3be3ed3b2ddae1bfc64a25888027aa835567", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "2e50bf0a440638f73fc676d2e30f86647f451401dea8ae2f36b39b9448edb99f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "21e43a35bfdc12013da337d8f096d5e45afbc42fc4dae1c984b53ab32e842870", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "ec90d482ea30c7a38ab5ab612c932c670eb505f069244b7852a121366ac33bae", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ff2165803d36bd4d3b8a5aa3c2abd941be87d90324922439ce6495510f78845f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f8264f9b52f367f0309c34f14fb6fe933822fc2b1f8baff704589c180f006238", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "c80287a6c13fc22b20118c84e7413b42aca1dc80b641ecc3aeff57fda09522a9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "677b5c6ec743f9c603eff9b4dd9dfabe0637b9b4178b8205de284c7177c7ea48", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e62b567e2f709858b3b7b18eafb6247266c826583f800817532037ff0950d1f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "82a4807f0f2057ab1ab526407b6af6a52618e2efea01503275b313be6061a33f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "585f57ab6cafc04f2c6633aec3f4a543b618e6c32c623ace5eae4e00a57804d9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "b33c2e05c801c6ee727fd5deaa1ba7307df5c7c5b745af33afcfcd454939785b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "c259d2103041f673901e721700cea1d7cf95ce8e9ed93a2916cf51d0dc17b1ae", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "c259d2103041f673901e721700cea1d7cf95ce8e9ed93a2916cf51d0dc17b1ae", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "3e82d76c02dc8b4f6f1f25d16215e5dfd3a5fe3ce90a17ec7d27f22e7d189376", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "74bad4f49f4a593f7c8a5ebecbc021e658e4f6560a95ec28824d2ef89aa79762", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "74bad4f49f4a593f7c8a5ebecbc021e658e4f6560a95ec28824d2ef89aa79762", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a4b31c99e56bf01011c81c4a432d83fa6069d01e70f699ad04c705865396ce1b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "5d5253a9b4db6d7a7789892e654c20c0ed49a36c5bd0530287e818297d702f82", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "d58816196642577596e740426a5b2d71c9e021421e6439706a237ad82c96981c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "b9e75e7304913a566fede2413617db70dac41f7322e043da2b50c0e7d6876f5d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "790ad07cac82dc2fcea1b516e22adee56e3e26125388d6ac4c02f9643210e2dd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "7b3df242b4ea64b87f82c72e310251a7b716b05d75f2273abb004c7f65811e21", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "9ced6cf81cd2ca0f7fb50e77d62b0d76802e16af4e1ca89916926d30bbd5511e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "aaa823e6717d7242044b4daf6243642d461e7fe746531dcdba74b25dece166f9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "b0f7fc706c5620bdec3c41f14b65da3f1e22cd8a8f41235b86207ce4d74effde", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "2ebcf6e7a76ab62d702424d7b37438f3e932c63cc3b516b2fe2a2678c310aef6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "22079ae88333c6369b2d2284b3b01b19335a327211a62c68c4513b156a1592c1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "2efd9f17294ff04974753951c045390dc3f0f0d5ea1c03d2ad91acd6613babc8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f8d03ae3df078fddbb8cacc278f7532d5452c3dd877f74aaf9d60ada2833afc4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "04b493b6c51a15c642add2d33684d9fb4e46e5d3ffe57e84840db71899bbdbb3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "04b493b6c51a15c642add2d33684d9fb4e46e5d3ffe57e84840db71899bbdbb3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c3e4a14369574bf43c516acb37c0a5b7ebdd8b35f211b767c822f9b498e8cec4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "83363f2ddcddbc3688fffa201b4d87ec4d5ed514465522a4d158187382a196c6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "f288192447eb0e4a4f9ae34a59166cd7ad0316f2495f5d5b96a2496c2c040a4e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "b197b5ef3957372c4693c89bd570f19ab09bd70ca027961fa733ed64b5be51fd", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "ea6b2081f51ea7cf600a4a7380dd229da05a71d8062a3a74d18c23b7aa3d23bb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "31f8335f43ced54d3872dc690ccdb92cd75302b8ed9ec20f779a13f38b780d37", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "0ea7d902b9bdac383276a6e9a1bbf608909ba8cd89edd2931adc2d4cabcb9841", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "40f68690e4dacbe4707498f3f994cab7f0cef61feb8d64b4673493775595e1e1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "40f68690e4dacbe4707498f3f994cab7f0cef61feb8d64b4673493775595e1e1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "40f68690e4dacbe4707498f3f994cab7f0cef61feb8d64b4673493775595e1e1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "40f68690e4dacbe4707498f3f994cab7f0cef61feb8d64b4673493775595e1e1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "ea6b2081f51ea7cf600a4a7380dd229da05a71d8062a3a74d18c23b7aa3d23bb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "c09170e56d802d07d8fd60d36426aae1f49f9780aea4f9cd2e9b61b4e4f89f3e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "0d47045152a55909c47040972484f02801aca9b7dd2ed3b7ccbbe76707cb7f3c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "ebc5aa14b718251821bd31bd130385336a8238a5de1938495af10626e26fc5cf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "d83ae3a90fad20205429ab971053a9c76f1c33fb091e54b0e3982d4612c98055", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "2bd3115b585c2936cb770e9cda4aa0348aa94c7c829e833a04ad2a5c29facce1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "02a3aab1b610779613bb169501a61300538b6d45e8e5aa67fee960f256afaf4b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0ced7f911c37dbd368e33741ab359f9d4049c64224903aa4f0f5bf94715fef23", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "1c1df372b2d26b0bed659bf6c43fadf7255194038d799416cd1a6d39f83a0366", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "9d507e44a00619e71949ac891f9dc5ef6ab8ada15c810e6eb34891653d4401a4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "3a582ebad2046bc1ef8a374e68ad0a9ee4f5730c6ae6277d6aa140cdcf9d2ab8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "4c348ecba5f0e3cea04da677879ab8e92926405f2aa575f451a7facb243f2851", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "04b493b6c51a15c642add2d33684d9fb4e46e5d3ffe57e84840db71899bbdbb3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "55c6ec33a5514545faaea9f8faa99bfd6c6d95a8d5c39a872dbd98b993336303", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "f60146bc8cb95a212051944f555266b04e846985280a25c4a4fd5ba0572650a8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "a501178235be12bb3d36b33e2c8442bb20b54c64801532cf15db0a1f83a97320", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "722e3f674faea4266af9b990d71ddd8c57466de4551a57a1e20bc2fc99cb7752", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "052f76e7545662f1c01e30364fbe2be9218c88dda8afd35c6b0fe22658e0e1df", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "ae77dd8ee688487733be7773f13bd363f0b7b43a015fcb85f5c661e07230393a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "e950bb0b40fbc17f3053ae02707503c5ec49593f75c11c151c34e05dd5425edc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "27d130d80f7962a2c1d40292cb4058e654812d6db86335eeca9e133b27985b73", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "7f9137485f710fef7fbb986b6f08f5ea8868c7cb2b2acf78d1d2ab20e5f20d0c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "db424988f892278b70713ba563f6b2bac2362f0cc905e58c90f588b67607ac59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4bac0f8ff2707cd8654137aae7fc613f7c7afbdf8dfd0bd0a264ab55102634cb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "23591000db507a2f9a7c90fd06c2676dd7c5c46494238dfafd631e4fdd2393b7", -"T3T1_cs_ethereum-test_definitions.py::test_builtin": "bedc72da4e26f8ef8141b882aa7de1bd65623202f1d02eb667254c8ffe1e6ea5", -"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "a314daf049af840d1d8acbf17a18154cdaf45e4dd246882e4fe5ed6221705613", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "c10548d3e39489154c8db3a921dd62094e854b32fd1af4dda51495bca2de0077", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "61eb650f1acd1f2a31921c9e0e9fc8a78a3757db662b263c4ceb9e8f96cd9562", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "f592ce7a142308effdfa810ee01dbe112f41fd9e5b76c91fbc09eee7c1ca0d4f", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "5754334972378f48c2c33a4bb0c154ab12dfa8bc1e33c56180b5c887da1f175a", -"T3T1_cs_ethereum-test_definitions.py::test_external_token": "e5b762d5e6390db1231f109d2dbe14e63e416e7bcb98c0a3205a3ea03fa6a3ed", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "910b927503a6d0b9da44da26bfb7c5f270414d4a89c8360d5399fce40bbff251", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "f033f62203bc7ea8e6ef1260de29c60af6639773abaafb30be51ce12a4d1dd9c", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "9f9ce367253b17b28f936713f7ddb2f1b7ea3e44c2b0fd1940d2ff3f121e20c2", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "5265b98857c2e156a0a3c68d5d0f5f9f69d2558884e60c817f5c551281b30411", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "bcbeefb119b5d92332cbf5bb7eb6f376702ae89fe297e8d859f6055b099eebdb", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "fcc04b193638f82a219d847204453a8fbf82e473cce54314474c477ce244c6b0", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "0ee86707fc18e2c99f516e3922849d4435668b14db6fe00a410238554bb0edac", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "327b1e0e496b3a1212e62d5ad75c0dc8084fcaa9dbef6412aa5955a2c385a479", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c28be5c47085bc4d13eb33d9099f19166ec264868402f374267961282761e8ea", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "de139fb39f229ebcdedcd12e86e9a4a80e2ea7e09c286893e5b09b35249537f3", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "8f26b63228a10dbc1c18cdb508db55e59db0751d9ef8acb5820bfa6992c665fd", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "888a81c1d1320b0d1aef4e1019bf91df4ac5fb3e5ac86d25276ca9b63ee82b82", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7d992a2b12210d9eeaeb62643b0f875ebbd71550ee5d16b3273be074c63dd7e1", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "9e31dfbe51f3aae9e7fdb5052b2a5cd76ae068ccab505525b9e20f06e1ca5fcd", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "7b29e461efed7dc680a02470393b0be5fa92a12d018dc2786447d3f7935e1d2c", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "cee087246c8b4325fc1c938d21fcb9b7802c87cca6c19858e501225ba1a2aeb7", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "3f9b1caec4c1ceefe5a19319d323d6ae70c45e1fe3b5be5bbe44277b04df24dc", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "a12e41b25b3df26cb0ffddaac9c8428e14294aba4890209a816667225797f237", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "286197ac062b97bfb5c4025907b01e8edf73c7c3de5509641ef2459769a62bf0", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "3cd9c7a8bf58714b586608fff23bb63d94e035bf58f406f826c587c419bd9254", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "5ab174822183d24d6015fa22aec4dc75b4b45c505d3cdf1cc4b80f1690b844d8", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0f4ccbeab6134ad934c9dcdc3f4506a066e402dacd01d5059c2ff0aee3bb5662", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "f603767483ce345e26493d8cb924820da5b8392b37b2272cad0966ec5f25172d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "3cd9c7a8bf58714b586608fff23bb63d94e035bf58f406f826c587c419bd9254", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "3cd9c7a8bf58714b586608fff23bb63d94e035bf58f406f826c587c419bd9254", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "3cd9c7a8bf58714b586608fff23bb63d94e035bf58f406f826c587c419bd9254", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "b3fc9b1959e1fe486eaaaa91fe7749fcd933c6648b0ab7b5f7ef3340a6144d9c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "26edbeec5e9421ad8d82ecd4f7c42304670e855d4e0156f9fab149ffc493b12a", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "4769d401d91bb0003c9ce011d387cfea7609a886eb448c163d15b1dee9217426", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "e86c206be8d0fe3c4b2697a6c61ad09a0bbe3951bf1cbc7eb8ed902e21b1a571", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "3424188f8ff13204774dd9e566440865bcd1fd91cc1fc8064aaf4323aa8ada60", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "7ff0be93604f8a75f33b4130f4fbdb79097074a4c244bfcfc461943a87b3bf9c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "cff58229e7716c88fb2090dde48f35cbd1fa900401f9d8d080575272a3d6b60e", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "6667c673dbb6eaadf8e7ca5c7c512097c5e141dca6be728e23e7341ed02750eb", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "aad0fa984417dfbffd4bbe533304b86a088f62d0412fc81f3b8b790b1548689c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e42bbc7f1567302a2aaf8c8f13b195428d26b4810ad6733c970b3058aa7be748", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "c7caa9ba6cbf6d74e35fe4bf6069f72e614ccecfe90cb08d3996a76b5e2e9cb3", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "cfd406d86a2216b2f8fef8eb0ca7ef3f7f625be5f03ebce1272402a970a9d0d2", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "d7ca175233b465474de7c9b75d09f1f7d20dc122de6f83a2f005bd36cce1641e", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "75f8b3d5afcf8a0bb08461b5d68af04221a2d31992cf801bc9b5c4981caff312", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "e08f590bd201689d927cd288f4b8c80e27d40bc764440a91ac1b72fcd6361945", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "899cacf9a9fa661a90b11276c8f28e133abfef20dd2e33679b4fcdb00099e06f", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "b9fc94268fd7cc5adfffbd7d8505ca0747a5fe9ac347820e5ecd3dc580bb5b07", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "32f14ac18edaf8f0092af21eb541197edd2360b826f0444a3b1f02dbb280c815", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "c7caa9ba6cbf6d74e35fe4bf6069f72e614ccecfe90cb08d3996a76b5e2e9cb3", -"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "68858ec1b110668dcf7040ea70e1292b273770b97429f0983b957cb61f283518", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "d54d084fd08fe64bc39c96f387620e46a6a53be46ddbb8da6f699946fd454c92", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "32a20a4502fb7755494c27f1ef443b8eb4fe25aa5304f32998d5ab9edbe1b32f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "3c03dd6b1947588e6aba972358e25ddfe5ed95856b0d6070704a93bd735aa969", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "32a20a4502fb7755494c27f1ef443b8eb4fe25aa5304f32998d5ab9edbe1b32f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "4f505e444863a14266902a47ba3270d14afcc096ad723d932c27ff5e12f23a65", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "4f505e444863a14266902a47ba3270d14afcc096ad723d932c27ff5e12f23a65", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "3ca326f0332f2b09e7ddd4a394ea7d0e57b499553831014e11915c946a6df8c7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "775262ede6f72390f8ea914e666391e795ed36cb9c3cb315306579afacd20d51", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "cdaf65c6a1eea5a57998e77a2e6b8e33d9713f8200b70871eff14e029f922c62", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "adccdafce255a274e353c860f923eca023236a93a930562f99ed22da7f2eeca3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a292c934e60f42dd4756f6c69af91e320bca40bc323bd079ffafddd262aecc08", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "2aa5bd3789c252cde65089583d6f9de6518d4555ce4ee482cb13f2d4ac08079e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "0802bf3af904f8c146b81d43c383982553efc32cfc51397d7737ca974748c391", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "4cde31647b919f290e28c89a6cbbb432471dd40439233a499f7f92159aed4330", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "3aad2621c6c709e26488c31cb3559ec541b3cecb79ae3828c41e54ba25f164c8", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "3ec65f2170ddeb568119725e865647809a816fb40292ea50b5a0302af06c389c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "dbb1ad0b6afae9eee370dda7ddad2a9855f71af72dcda9d250cb6f7610b1dc3e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "3ec65f2170ddeb568119725e865647809a816fb40292ea50b5a0302af06c389c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "9033735c7e91bb9a47ed9ec34e97cec5830216aa4d79d9bb2d44bf1bd3e43525", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "9033735c7e91bb9a47ed9ec34e97cec5830216aa4d79d9bb2d44bf1bd3e43525", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "6d851bd01ebd977af2d0e2704e438ee79f69a543bcf752624090ec11d7d43111", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b174d29814ab28a8a5df9fd3cb92cbea01cf86e0ecd0c6fff006b33048e6d86d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4afc3d724e0bd4d798304f6af8425dad0163916aa8ba66862921a89d7664ca6f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "33a85dd75b4e7c59091f35d8b973b24fdd4abba8846dd863e3d8568fccb1e0ad", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a292c934e60f42dd4756f6c69af91e320bca40bc323bd079ffafddd262aecc08", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9631e4a40b16405cd9036d1a6c31403a284290c6f781775c57be84e249762b47", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c1559b143a6eabfdb6926f20d7e7243c673160600412afe253b4fca397eb8368", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "78bf3c0207d8e2d68c245be3f18981a71883411d12f55150db0f0c049f007b44", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "d54fc4a712c40550dbe94c22c0e54ac59fa3838fce16deb6a6185a2bd8ebd2d2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "ea2b1558edffa6d99dfec184ec28346aa3085c635b4c2bd89f3066e476fd6749", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0673575e494ceff1813c4bd3bbf09f932983291e6f250d4707857e18826dd490", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "2aa5bd3789c252cde65089583d6f9de6518d4555ce4ee482cb13f2d4ac08079e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "3ca326f0332f2b09e7ddd4a394ea7d0e57b499553831014e11915c946a6df8c7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "789d0a15b15201c25401b12e0a842ee71c6a8db8f9048566c4b164fa1858a0f0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "cdaf65c6a1eea5a57998e77a2e6b8e33d9713f8200b70871eff14e029f922c62", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "02982bd33626ba3f02670f15a96180bb7f1e6249f874b41af945fa1872df9689", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "b14c1dbf7b55c01e52ff791e303848540b5b1e7ee778df6184362d7d975b2b05", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "2aa5bd3789c252cde65089583d6f9de6518d4555ce4ee482cb13f2d4ac08079e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9631e4a40b16405cd9036d1a6c31403a284290c6f781775c57be84e249762b47", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6d851bd01ebd977af2d0e2704e438ee79f69a543bcf752624090ec11d7d43111", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "2a035401c06ef4705f2cd7fafcd5bd30c6dc4eac91e4eb425e9367afef0f8450", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4afc3d724e0bd4d798304f6af8425dad0163916aa8ba66862921a89d7664ca6f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "948f2e34bc604270cbb27c8c7fb1bcd61ed8a9136aa1c2450dd05f4624bfb9a3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "66191122d0a876934d0a1e4663ae1ec8803508ef48a28eafe4dcdc7641a97390", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9631e4a40b16405cd9036d1a6c31403a284290c6f781775c57be84e249762b47", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "55f55a3fe4bae98c148784931af37d0761f3e180fd2ae8d93b58f11855ed1a9e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "55f55a3fe4bae98c148784931af37d0761f3e180fd2ae8d93b58f11855ed1a9e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "388ea466857b528ff96c6bdd2e8d0c2602aee0b9149c27c87e86f44506548ba2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "b8a3f0b565262e974c76f4e2a4f56cbe634e9fc4b1f36c9760c27c0f1dd6d646", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "595eef57d98044f824929379a30020185d2ba6a04263f3e702df331ca36ed29c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "595eef57d98044f824929379a30020185d2ba6a04263f3e702df331ca36ed29c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "c56b9127db6ca2f24521587bc21b3b2a1866609ed95cbeefbb3e49025e3c1815", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "c56b9127db6ca2f24521587bc21b3b2a1866609ed95cbeefbb3e49025e3c1815", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "3da5ed8178ad3386226b90946f8a4e7a89569b591cec0a697d7ecd4e978c2263", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "3da5ed8178ad3386226b90946f8a4e7a89569b591cec0a697d7ecd4e978c2263", -"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "57154ec93252be006f6b13f1cc47517ed66b509c8f361f11ddf1303886fcd3e3", -"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "57154ec93252be006f6b13f1cc47517ed66b509c8f361f11ddf1303886fcd3e3", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "b39b8fb6d1bbc6a3f665f04043a40adcb33ce63b13321671bd412893c47ed6eb", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "78ef8619eb579a8f70a349462763bcc31047d3e0f87d2fd2fb6d87d0ea96e15e", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "916b21897f9b94180171fe42e3c30f99cbb9247c0ed2637af0152aa9f346ca76", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "5dce2960388a0512863faff12bf132884d034b8eb3be66aabae016ae4102da13", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "96e683e13e1a1b5125a493d57a90ecd6caa69b1def0981ef10305a5474c7cfe7", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "c6f9e80b55f832fafe224c62d10fee48f08d86e7ca98014912208e0293ba216c", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bd3c0b0ef54d5768c4389661ee240011b0779567b8df26434a47de7efac83c92", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "d25be24e94c8bd8eb8e02dfdea17a4267c040068f6ed1d768fd152858330d215", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "dd04da821fe8d1f9bf348e68452eb7b228c5f63be6828ed8dfce8523dfb412ab", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "c2a67080c8a1a844c00858fbf31880d0e9d3832520c4158287a6d47a9524e5e8", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "d0e3af2562a595bc0cce1c6812671dddd85aa3beabf27c6465c4fbbbab67fe3f", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "8f8016d0e7e9defd14afdd37e224d5fa14ab007b52dd7fc742ecaf53b671d036", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d0f0ab8a2ec131ba7a41588c6b9f0ed4111c6437e3d5a28c484ea6bafbf9d53e", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "8e823ae825c4fcac8305775cfebf749237fba6d11c5a6e3cca55ff9c5d9c2056", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "80a7864dab15917f55753bed31c441de25f40ebc028a360f9790310d2962b33b", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "dd11774a581d8ee3230b5dfc8c97c43e095dcee11e93a6ec1ba12cac57873469", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "4828e580111e6e58d9d4da29b3bc83b55c8148b4795e6b9939a52ad31d018933", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "e34b9f359b6fcc7707bc3f9f6ed2ae68715bf7873f8ad517e0836657c5251490", -"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "0191617622807296ebef13b01b9c84a4e3e6969fe607e84de43d56881d7b6e1b", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "82d29029aeadea530de943a18c96ef2091ece8f10454cadc0b48e82c6ab9669d", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "eec861d66687cd2907c8b67e3f347dc276a621f4b9cf9501072350070ea13c25", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "877bb0866a8acac4aa7722b88ffe92edee82fd524099742dd10d1580f46df406", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "53ded9eefceb81ac5207604ccff6ba4e656abd5d1f50f69fcbc1015446440eff", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "1a0164d9064cf321d1d7a72d7ecd20b5ffb08a063916d4be8a3f9dcec685e52c", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "113fe8402a6016138495093b820772e3e3f613e87e0b26ab1b47d3af3a755407", -"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "c2ad4fba3f839d600f818f17eb4d158c32f1ffae993b8b420cf33a1ef9527562", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "52db7098a3a2bd1981dc9ce4bd52f9980eec0fc8afc22c1adb84ee5f0e137874", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5af8b7625ad91151eae81a53742608039c463bb644c980d293e7033f47bda547", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1f0629bda84c9c622005d3d10eadff3f5a0c07b8e19ba29342c700304b82c0ee", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7f9424a38701b785a6cd6facb722e0519aeacef8ba27b26aa633fae78d61c117", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "4405597b9c2c344d5f84a224f8b195e072c07bd7af0dcdef97a1a8c8e0d43945", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "eea86d11e0a9c8ac3aa5270c8c75f4ecfbc1ea76193459fd21ce9e376050a0c5", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "72d4d031ff5f53effffbc5fca666385d2a4f8c1369e85423f34f0c076b39fe69", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c84360eafe6f8f9e79397dc60e6d25d1158737942046375ea777fcdd93b2366c", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "877034fc23e3ce5ccac6a91d7e121e3e6b22c675820211f60c725d24c2ab602a", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "f706eec467ecae40f9ab0f067a58834ee28a6db38f2d5402624d43453d67260e", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f3affcd35144a75f48127bf591741513f381987a374a7f3f7048f84d42aefc45", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0bf50d0a98458cc9e9408524a070252426512435153e3386917eabfea78d8bbb", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "4fda97546076ae27f37cfb702dc872b02a1598fc2028000dc17c3c16951465e9", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "42f4036e0e9edd2e0bbfb749d7eb5d984823682258d0be8a566655c5e9795e4d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "265d30042ced7134404b7cd9c966e16ea2ceeb7d6b01a09d6bc380d18f37bbdf", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "eea86d11e0a9c8ac3aa5270c8c75f4ecfbc1ea76193459fd21ce9e376050a0c5", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3b90d4ab4ac667555cce35cbdfd6e9e3bac3af48065df8400d57d5c2bf8a0d66", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "581393a829dbc191f8f954c42a867b957266f3aa117c3db452363f6f98652aa8", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b7b273bdcfc162a1e89925751b8ba093e0bcb7b3ca1894ca0cf2d88b6ce9b511", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "61bd8ea84f4cd8675174825acca01c66256479fbec980ffd452f5dbe8d6f91a9", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5d4c3a2bbc7501b0a27c3332b9df57335bb8bd85f420f76cf86a462269319dcf", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "aba7adf8c3283c14744fa1fc5ee64bcfbbf948e1baeb0c9b23ced30347558dde", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fabac827b1ccae6f0a3c683d7c37dbbe1118bc5edc26d3b4c7be870a3ae49db7", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "76c044f76f5215c7573ebf032f9599af4c7b7f12d4e7d7b781c15669608319de", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "50aa1432387a36ddaedb62a79bf9dde301209e0635aebc6eff5577549159ac98", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bc5c2bddeade8a17421cd42c8a32d56d7b373eb4190ca2d55be784255dcbbba0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a004391eed80bfe3a85e716311e04bcaea4223178ce2c24dd3a478c1103b3ae0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "627937945fa769ac6f8a05d1538f0fadceac61a1347ed748a7c9280e7a223b66", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "901d35e416e91c264ebedd47854e9eed3601cfd851cfae5ca57940c1b5c3abc0", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d57198c00b1fbc8d8aff6e9ceb7a28b33e13b0a497fbde18bb5338a706509fbf", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fffde13cd2189fd285cfba584b6257471be1703f5f3bea57d340fc80f5c4124e", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "57630bbab5d3566a14403ca11cc93e21e9742ac0de27b6c9700744682a587cb1", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5504101b5bccffc7c99f0b7306c8e4ee0d8f030c210b6b233993e0e961321fec", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "10069d5e7c8aed9894fd038ecf70c16f0196f6c6f0c0bf3e305760efe3deab32", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2643a0a963c0178087d7432eef8a1217979e7d064082dbc3dd96cd91805954de", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "b81c0adf31a42588f04333364365ae4a2a17c41bba10f739839598768698f644", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "17d88765a91d0123005233bbc9f943d67a021a7eb424f161aa80af98dd64d462", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "952df9449bc60fb782cae120bbf0ecdc39655f3d38496e9255fb182a48ba2920", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5b6e83115f141e20d60977a95d5a032347fe64ac3be115419dfb10f80e8b1b89", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "09050e337c6400aa065c92d9c510c91ae8eaae346f3bf7b49ec368c5b7f1e034", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "97d97000da7a1cebb9a08bcf2d270df40393219acc40110b921d6a5d9e2f45a7", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9a1a20e008f16db6bd4d8f5d90ea9fc4d22afe30649e9e89d17cd4f6c135cfbb", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1835087a8d2a395640c278a5f63eb64622b489d8c6b30d22ee8317ee657340dc", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a2f0370e5a37eb2d77174256c5705da7f42f4538ae4500ead7b77a6347e901b9", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "01409726e771dbbcab57c49442ea30596abc3c5346e9d867e2254715fcfee23b", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "39b4f104836bcff59da1c1c5bb1d78c08ca53cf187a129997d06605911f74816", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "199dc2a8ec65fbc43836d8860362ea50d6eb6735f5626fa83f5d1210b65fadca", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2e335d0e2f8b532d3d7cdb1301d245cbd718ac65dcd6f3352c6c248bece4f369", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "85eab8d97905a70aa5be9a1286c6f46a0b1d2ba29abf1fe0d0a739936b6095c5", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "2fbda11c73b556fd2a5f595715a62ff466764bcb36e20dddffaa9bc02635ad13", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "b4715a2227510a184239ba6339b6f1a513035f1482a3a6e80eb97ade49613c2f", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "7d7acd472d29f57ce696f6f828fd38ac0c10b275195cc732891d068efcff213c", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cee5084399a8f4b5883a07d1f4e9304c46e873e72d877364889ff21833c3e9f9", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e4b843c22a5e37ceca78bdc3d40af5a5afec81e75f6333b55b30f0e79a45674b", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "390bef9edc58361586e455f6252cc834e11619e6dc006fc65d52c9a522342042", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "4e710ac24cd0da0fcf07cfa818133ae7c74da4eefa74f6b933c641297b072c75", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "1dcfa1952d1bf750c04188423b17d7c7e9ea78b1e01dbc96c422e0723366a008", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "390bef9edc58361586e455f6252cc834e11619e6dc006fc65d52c9a522342042", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "4e710ac24cd0da0fcf07cfa818133ae7c74da4eefa74f6b933c641297b072c75", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "1dcfa1952d1bf750c04188423b17d7c7e9ea78b1e01dbc96c422e0723366a008", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "c00869c38391df8f8818d3e7755f5e5b93ca8b05c75eb085dcdbd7950701a776", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4a0151d69cb34b626f2eddd8964f11dfd3059af3a1163c1a49d2fbd788d79974", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e059239c10acbff5390362f2ead7b71340722d693109e44be874c1d207478790", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "ab9fe80af2185f5171433dcaabe7d732f84c1690220d8f5bd56ab4840a250372", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "dea5ef41688482b736d887ade059d50cfd878160438b555989d651b242a6f2c1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "c33c0a4033cab94926892b02211ce49b07c8daf209b74a963dcf6e9ec8265b14", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "f8b82d6cad752b3c0125ecefa7d5f75a27a88e76f35a78539efe02ded0821faf", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "7db70b7711162d60a30628973c3ed2542cfb53148ede58cfc71c114ed59395e5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "1270517994bdc23217781d84cd2e20640ee997d755864ace5470f2217c782678", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "a8921d9d772101a63d1e91c16b4bfe3e146652e4da3d1ec8f912f442d8a59d64", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ba84ab10087bb549fc452f7d98fc80a0b0b3a1eb762b20517bc3e8a259f39588", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "600489bc16c256f993e514ee5b0a043dbcf3d8438f808d91e32f90d884315f78", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "75d1035e350db17adedff37642ea9be70743cf5e2379511dacaf9eb80aaecd3e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "39e73a5157707aad0b8e18e8807d165241b370d4c8b9bc42212f94e6099c6e9b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b74cab8af79f16f8aecddb01e46cd6249a32cd33f5f9815dfe5ffd85bdcd692b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "17f976df20f3cce4a8fa432f1ebe07f896a7ddcd8f7c08060d4b3a7ace1d4f08", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "d88c5c631d34ba0f88db3431c5e8d110b405d3324c68d1beee20869a3a2892e3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "7c543c2425559cc74df4902bf65afcc8598b06443f9428047efe5c5cdb087e4c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "9c99677e4e01dd54cf65f7c1d3ca49d735c66299732868b9bb8199904b24fdbc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ea60ed58ce96362e90634bfed21c34b0e60f249ebf97f99c418b2dda443569a4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "05e9dbd1443bf8940bb383600dc6e088f2a0017eb1055872017542dc5991b4b6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "05e9dbd1443bf8940bb383600dc6e088f2a0017eb1055872017542dc5991b4b6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "f2dc561a021af1c66140f2fbd5eb5f5b87eae65c2d90415210d19a4645b5a106", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "04e722b8ded512554cb6255e7e9cf87b0fa75189307ca69357fb0b6abc3f8d23", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "7ff13811467a167553f902239e86e419214550b5f9664ab60aa168fb9be09bed", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "0741aecb4b1417db91e20461ea6f92542149dcc8dd6a61813a820bc47a6721c4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "3fe5b51140afee5aab3f010291d0ab519ac275d4358143aaf116a51e53f62b32", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "be2bbbb612fc86dba4f5bab4767930a1dbee2ad1e6a212055b74b8f524ebe218", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "63e3fa9f37c8a3e1c87e02fa4d35c157b9f0ed7f8749ae1f2b56e890c81711d7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "ab20c2220da58f2883c9a183ac8dc85364b3460abdca78fee101d47e62c7365b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "bed338b6032619ea5f3a182f423a45668e5450a649bc49f8fbc29217a01d6d80", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "7c21c9c8aab3619f311110aa894d6284b2d700ab6739e311fb16c214b5ce75f1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "4e11f34f97386e31e27d3dcc2ed48fdc9b1d99d905f66639edf275507d813eed", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "87c413d83bd092f2754f6db4e2d7ed2b3e16868165fee4d3ce10061a12d093d2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "211a74a55a2c8500ba39c3fe01cf20a2231e42c0ea86b611e50f79247add463b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "c7d4891a5e8a64c1fd546f10c0d49be6d16731381601f83a8300fe096b240a11", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "86151e961d57ad13091a0c1c7472b46c32efc16e9ab45be58d1575284bee3e41", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "4ad6772b79aec109e8ad787da556bb204b18d7aeda87d434e4723cdcb3c6eaf4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "785338ef997a8bb21b165a2f46668d58f23376c09076bba4bee4d04cdbe5aa76", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "abdb2339ce1985783496eb49159b44bfc59df7462381d0f59b7468a8dacf63b3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "aa12323b83d477bcd619e1c1b163069980a215be36b884a58659648c6c2db1e0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "8aaf1ba4c448b908a90996264ab6db940350787afdda35e9f65c9f39cdfee949", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "ec2da7884f2a21b8bdec345a5cbc22dc5a7727aa44197ff2f53973a66a37a8bd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "a0a4c50c955bfe1b0411d1072d39e0010bf5462e428a975bae14467d0a732027", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7d4057daceda8e3a0fe9f9fdfa75183915fb3b6081e699c5d62aa006e6c7b399", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "5aab52182ba02f11c90b78ef93348954426d4cde40b0c68753fd242de7d18fc3", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "c0223da2d8fa5d8d0ea995c1f1e9c9ea4b0d510cb4f8a6d2f7ae4ebd6598718b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9f14981ce264a5a042db70f0b4ad3d7d79637ab8edda43ab8e58b8f8b28cf02e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0b9b4093cd0253063d7d2f3516fecb0d4b914ee92601463d4b1291d7d328ec36", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "1f0a4b0efb67d830757e1798fbc1d3c9513f3ef48c9c079258ba218babcd9ebb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "abb687ef59f60746f3aebdbaba805178c17c8788d251e2b1baf3807b10aa0306", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "ff35e003f1368e9cfdb0005d842f38d43a74b65ed83fe86808ea1c659a3a5410", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "5067a974a656a6b4c23d932fae67191d810a62ca1daca6ea046a9e1402b64f29", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "f6e74b09a3cd34930db08c171f1b4d3aa452c60317faa1b9096a5498fe448b9b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "93277d4253ae94fbaf96a4624e1465b1241a742db749b84d1a7eb5d44792a0f1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "968c7a0e8c7c56135c3e05afd4bdce7c5069019b0058f13a806d59b9c0076e89", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "ff47cc46e1571865391099c7a8dd89865a9e84a80f521d80474b3cf5ca80aa07", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "5c827127b99dfb47fd84304832ec4588a66659bc2d939372d3e6fe88845ac601", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "aa8a1289d88ffbd75e0300297929e3d03020509ae65cc65dbf87dadfec9b1f5c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "7ff13811467a167553f902239e86e419214550b5f9664ab60aa168fb9be09bed", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b2104f3c0997c4eeb4e1a1f85a74228479c8467e819624705d6279a6c5d59008", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "b8f176e0cebe20b692dc35b2e15ddabfe3ed6d787e99201b494b4783444e38ed", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "bafa955bd5de8f266f087d28da6ccb5a37f49328c5420da3676fbec62cae07a6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "fa9189d1f817cbd46558171f4e46ac9dd0d91339c1f697435ba8c363c373a896", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "a7fa9963a11ba0797ad004a78f684bdff3763f5fed246fd3798dc5115929f683", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fb48afd641f390ea5d7703490e31f5114e687be96a7a7da0e78fbfe6ee8e1c4d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "144c1fa2ca522ada51830c58bb13ea9c42b739c5773ab747245d047a70c851fc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "0bcad441d6cf3464b45849e8e744fe9d151407fbc7862e9f4f418607b668e213", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "eef7279952c4a8eea0e828ef57cbf15371c0239e2ddf396169d8db9245175391", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7a9e77d96da64766e3497ffb180557d0d63bc00b53b1b4e576b4c775b67c2472", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "6cf7b4ca21e7f1aeccb671ea079181bf907b95ba1a72659a5148c22707b20b68", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "cd5950d8b1ae670b2d2a84f63284b8a878a7e3212ad7d43ce7e34ee0608acc93", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "54cc9e9577720f658c1b0f919b0c076355b9e15609ee8a0ab55f5c5632faeaea", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "fb060bced2f515041674cb3a06d9a592b2e1dc4cbd5bf0bf81c8bc05799925f8", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "89b7846ccfe01cc93c8a2af13f30aa7b99d5e955f685af83af9ea6d4135bf2b3", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "767ce43018826e60925cdb858443215727b403205d210dd72322e09befcd6456", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "34b378471eeec741d1dd9c7e4cec6dfb3716538a2624d4902384924540d28331", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "d80bf9027a12d9b44aa02742bb1c9461738c5615a22988a6790a1e1c7173d6cc", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "4fdc046222b8bfb285245a007bf8ad222d7df4a6887e417ca1afec52a4be03e3", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "46f801f9b17d6d23c39fbb5f337fd47fab4f1d7fcd12ee2a007b941c3deb4f53", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "358c48ff37553d7ea224ee288ce85dabe9fe1c6528bc0e0d0f7064407e2c3659", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "8db147ce07d706518de38880680b55ac0dfa05f4e8d9284cb1b2d0f46cc08484", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "094315a2215ccd77fc6f68b8f159b77a6d1a96270f07017d0d4e921c756a5920", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "87c3067c7429a7974421ff4df2447b83f2ab50b632cce37f81a1309512c38f20", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "d7fc88f45ae9c8f2b31ac5fe90ed96f0845eb70e5529cb351d5d350b729c2853", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "cfa351e42835d8bc2c0dec81bdef38e524516e88c1d84c25a5f770b384812e3d", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "8d7cce9b2280ad09504e8856fe69284e1770fbbdf3469938fc7518fb447c107f", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c449ae7e3ca1c37ac81cfdbcacbcb126067517c90d754b3e0f383c9369505102", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "57a32ffb39c79a8591a74eaa260e7055924b09034e14906c02f628423de918a6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "715e3cbcc3bd55a27106b5be5688c99d489a14b966b31a22235087aa9a96a16c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "2e24f5f0051f29676c181e15bf3c42eac22bd6f309d45325660212ea89abcd9d", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "4d69f524eade1079ab7d0bba4d73b1cb8f9b918034d2fc3100543987b43f3f61", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "2a97c24303c5b1c62ef49fca117f3614d9868fcac7638bb371963f8d95ee2ef2", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "38cd22e978e562cef103c616a8d4648e358c220e0d44b759c35f35427f2a2332", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "8294c3702041e74f38e6a3cf1ab508ff7c3ff326d96bb1266edd1973f6e26fc6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e3855e6a10bcbe585d4a7887146470936d4c49cab70fd58e7457a5a86b02d4ac", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "44dca8d981e6d714444c05f52619e941fac2c474b1a9a930ea51f0cd492f6c4c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6dd056dc2e695485aaef094320ce3e2d7bbff5ca0dfca161af2d370e2089fd61", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "c5898082901d875df5c91adf71e6baea6f1df429d9c03e8da816adffda0c2577", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "7b6cbb4c6795001c6f07f7f57ea0be172cb8b6052d8e27edb982de6a26bc68e1", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "52f941921b9ea2f792069e39296811a1724afc24295f775712a36e9c61b2fae1", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "56fbd818437649ddb44fc2926825bc04e9726189217c3a21b52729a1eef8c664", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "deaa32582077cc05d7e95c73e80e178edbc9147dc76970f93c0e7c3bca571d74", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "bf6d6dd2f432289cbf7aaa3c8ff02ad882c0aafd4caa5ef78c90a2e328620c5d", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "020ce64bf7df4e69928259bc10252a100edbbc63dc55a4b0232d119086ad2e0c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "d9f6ecf312fc43db26158223a72536e1f946fcd12e323b74aa4ea9abbbbf4baf", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "76dad06338c7eaf636fbab93a725a36281ce10c248f3a2198c92622e3d2f779b", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "6ae2a525153222ab20c42cd761020bfb6f6b0d3870f7afe5080d2b2c5cb995c0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "2abb80c45ec7ecd68d2f1c5831c7ce4b3a760562c556ade78cb353917c2fff6a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "a3aa3d764d57067503ec152b1db749d5f7795c171261cb39242ef81f0c77e201", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "d88e054fd3d2d370286c1184b052abb323fd4719f7b1316e8a9185dce66ee90f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "e4503041698315a1aa8b32b360a734dd3e25cb4f1c64cb0eb9b10bf4daebfb10", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "68511c2b269df1cc03c9e2f79a98a828c8726efe01a86e6910e158eb82aa08c6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "c6dbc05859d793f8c8029c669c7b53e00b45130e1bd267ae1a840244d75b5e2e", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "d2f0a2a2aff1e6763d5e327fee8f7a100994394d47547a498a3d5f99fb663364", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "841fb50a1a6d19a1468819b2fe6acf93290f370126f1693958b6f90cb82f8e02", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "e5a1f139a35abb117780f2190b3b4851de87f6b8b5188bdf84cb02877dc2e465", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "d1d79fd4067f9a2fe31427f4b74fbcde9fe29f5525a2984300402e391b1935e1", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "d9f6ecf312fc43db26158223a72536e1f946fcd12e323b74aa4ea9abbbbf4baf", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "f219da8aa2bd3303cdb0f65ae2caf5c35172071785a6f66562d00c478768f2d9", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "b2873afe20badad6da21f7d58b0885ae34803ed06e73b84c58ccf8137b5a83b7", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "00ce0214d3013b1294dd264dbf2dbac0384cf2adece74e50449d2aa59a51cc61", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "f083b60a9154f9c29e5e2085928eee02959389ce5981f36ccf537f93c7f5fbaf", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "b6855f4d7e4a47c59d75023a76d3bfc45f3294a36bfab47c5a462539189ab071", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "002f41fff6c3259e61b6307095d3b50019b7e3ba8cb4bb735413b5281b7de715", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "04c05144171ebe3ed2e40ff0e6af377e352329c00a61db14efd932fa1f8509d6", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "57da1a745d63ea7bbba99c1441ffe0861ece541ddd98a300b54deb0405b6b58c", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "08e8cb5cfe5bedf7de1de32f07df35b035c53ff987e32373f08f4d75adc2131a", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "49318ea696540f450d78db3b0f2200fd164171b1345822857ef985d5b6bbc13b", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "805ef0ea38be85311f97d12d2534512568e6100c84ac4c4997f49f5f76c5bfa4", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "805ef0ea38be85311f97d12d2534512568e6100c84ac4c4997f49f5f76c5bfa4", -"T3T1_cs_test_basic.py::test_capabilities": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_basic.py::test_device_id_different": "2f03f2f391cb5aa5869185bd3ec61c6950ab1840df7d080374da4cbbc0fcd5a3", -"T3T1_cs_test_basic.py::test_device_id_same": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_basic.py::test_features": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_basic.py::test_ping": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_busy_state.py::test_busy_expiry": "a8eb606df59503e493251b5a6160c7b879d94d8b0f759576824c5ba791683f93", -"T3T1_cs_test_busy_state.py::test_busy_state": "97942c41e15c2b4493409490623175bc2e64528eec73bfcc433749578dc9fd7a", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "582a62f5e0fb8e708b4baf2f9ae96b28b50534490c649a9c490469fab9960d5f", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "582a62f5e0fb8e708b4baf2f9ae96b28b50534490c649a9c490469fab9960d5f", -"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "b2fa01ccafe792100b10cbe3e782b81467a41eb691fc472c049964a6de3eeeb4", -"T3T1_cs_test_debuglink.py::test_softlock_instability": "b15f7b01f3a6e894fa328ee2af40a36609188c128c45cfac2883b93c605243bc", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "a8e155905e496567054ce0c74ca400b689873426fdcc4d14152a8458bf944772", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_language.py::test_error_invalid_data_hash": "e6d6d7f9bd44e0285df8e3e1b15233ac17b6f657369e23cb20a3e3e722aafc91", -"T3T1_cs_test_language.py::test_error_invalid_data_length": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", -"T3T1_cs_test_language.py::test_error_invalid_header_magic": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", -"T3T1_cs_test_language.py::test_error_invalid_signature": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", -"T3T1_cs_test_language.py::test_error_too_long": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", -"T3T1_cs_test_language.py::test_error_version_mismatch": "e4f42ed782e9a6e53432f326c1e9b483054c40aaf8ebe92b8eda0b059884ddaf", -"T3T1_cs_test_language.py::test_full_language_change[cs]": "b7418558244b103f203406ba3ae3d1de0e90604d56d3c575a24cb5435ab5b6a7", -"T3T1_cs_test_language.py::test_full_language_change[de]": "9e89ed74f1c68ee828833824deae7b5d610710d507cecc869a6e0af05fba7dad", -"T3T1_cs_test_language.py::test_full_language_change[en]": "223dd6ed3fcc8599dafad1aee7396704264c7dce9eedbb1b0bf2d3808bda040c", -"T3T1_cs_test_language.py::test_full_language_change[es]": "fbbb954ff6962e38c3a21a26fa9d2f90350ad0ab1e067b9ca054f3c24c9fdbcd", -"T3T1_cs_test_language.py::test_full_language_change[fr]": "e72336760b7208e70dcf6498a80379a718eb6e266b71f4d61d977666312ef7be", -"T3T1_cs_test_language.py::test_header_trailing_data": "a58473afb390df2e2cf8fb41524e7646bd21ca21b46202340a359c1ca9bb5b50", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "4f72a6f31afef818e20170036826d9df710faadeb05fa23fdd3b5de26f4deb4d", -"T3T1_cs_test_language.py::test_reject_update": "7ec313974c92ed96611986639eb7be0e088f29a0b0217b496a2f3d6b61356d44", -"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "ee85f0bfcd58a0b00522ed20a85fdcac6a68ea0714eed0c5a3b2582c373a1763", -"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "ee85f0bfcd58a0b00522ed20a85fdcac6a68ea0714eed0c5a3b2582c373a1763", -"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "87f80a5b709fbaf73f7ebc45ddc28f77b44a81b8e718ca4cbd56a002edd8111d", -"T3T1_cs_test_language.py::test_switch_from_english[None]": "21aedd508efc0c75b8da70f60711ed76f64e97700b9bd8ccd501d660d0ff59b2", -"T3T1_cs_test_language.py::test_switch_from_english[True]": "21aedd508efc0c75b8da70f60711ed76f64e97700b9bd8ccd501d660d0ff59b2", -"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "64e4f351a09ef700c7d93cc37c044f8484970cca8cdaa750c4c76e88e1f21637", -"T3T1_cs_test_language.py::test_switch_language": "e92c907cfd5e5c08d41c57f81328c1ac6a7d8346080eba67f7c9641aaa8f6cfe", -"T3T1_cs_test_language.py::test_translations_renders_on_screen": "ee1f3ed7cab49937f4cdb5d3b6131768140993499b47d00dda4908817bf53c38", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c14ecb32236855485e72ef80939b96674cb451b2794d5fcac6da94ebbbb08317", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "cdb49dc72c3fbd6b470647819b90ff5f89ec4726acf5a360e33092ff435a93fb", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "67cacb999dfc6ff39c7598850509d69dbd83ae75a6d71792a670f511629724d7", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "1285f24ecf91592713459fb08eef26fea8ad3e991430a036683898ee3331143c", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "2a740a799aee1e445fd3cd0cac9887f07bbebd7c7a53241bd3942de7e4a4fe6e", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "be3369ac665b4e859fe90b6d11adf963cffe97507893cd07a8c7c1da429337f4", -"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "1360e95fc16a0104ae5084aac8bae2ea6f5bf8c9319683be5082d2ea6eaa7e56", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "6812c868aeb4528fbca8e80e1525dfb8ed2d3391826d9243bc27eea8c5237c7a", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0881843a5a92c112441ca4dadaedf6ce4c3afc54876c720074910c13760cfedb", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b79cc6e32cb4f7eaee24d040fa935f0ea62366df696af7822e05dbe3df187d9e", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f81b507c05786d86adbfb49d79d4dc04ee80b765b156ae6536dc93a44f0fea30", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "317e2efae827c651b56e659b0f306c6bd4c972413f2ea905b8844c505b67e236", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a7d109a6d982c5bd39008980b1fa21c1b4b6c3787667594951267b2d274837aa", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "adddf01ae5b0a07b725921839aaec838d086febde6e84673792e4c16fe286350", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "58498fb179f6161b64552bc27bcea5f716bfddb21db51cec015eee557dc063b1", -"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3aafd3773ae4a7d30619159cec7caeee0d49fd4ad4c8071d59087e076163278d", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "7e9648fcdd3ccbfff6961cbfbfb114630a0b942975759b7ee1a009d223c4c018", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "fcf4943e64e331730c0141968503b939723242a30fff50684141f49829f1010c", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "231fb7ff44f1aff750280602718f84348de4457bf952e8598a334fc7a27e2822", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "03280b56e105ab8f285a435f737f116cb7a2dec875a8eff3bc08339169656e93", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "eea0b91313856bd365e052f5a363ed46928bafff235e344f804b8b12cb5f1cad", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "1c81b081fb05d47982bdd595e3f71d4a911530e08dadfd5fbfe118421d0a66e7", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "e508b79f30baea0c05b6989aafcda142c1eb4751af38b3a0bfea05e30bb8d56d", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "7e6a3b80d28d7d3496ab9e94c392b3a1a66a618fbd12d2552a327f8d017d5586", -"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "5435aba8f069b05c13fd1570cc39fe108195256267747d4cc1143b6789394a72", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "730b9ea97861bb3a2d375ab44ebeb81418949966246946ca906c9135e0cdbdf0", -"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "69928e6b1ff42739a3dbdc07f6ef6ac0aae3b6983dac3018b03b325b96462f87", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "ebf8a6aac47b252d84ad970de97f83ad0f8e00fe5baef5d1cf46362900b5adba", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "ec0a15a9dd7667a536a6876fc61083f4ea4d9f561e01d7fba983a2e3ae556573", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "6886cf5d177f894b172e1d9a0f222ee52ba96f48a4306969c40138bcaca40ec1", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "8bdad728dd503c413cc1e53e97d9930a9708a1b5090ee30b28d970033432d8dc", -"T3T1_cs_test_msg_ping.py::test_ping": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "d761f9a9ba40ca640572cbb95daaefdd8a6fb828f91547b41ae9e9cc4b071bdc", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "3ba6fe4f822ad730666aa7df1b129c49432fec58819d843368308aafbbdb4f7b", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "404eeec69de878aaad93ad8bf14c5614daa704ff84220ef288e4f5975fef2ea3", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "1ba139c8e4297f637d67bb5338794fe012e2b4b907eadb06323e5b72e39509cc", -"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "2f03f2f391cb5aa5869185bd3ec61c6950ab1840df7d080374da4cbbc0fcd5a3", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "817f52ac5530a9f05770e65cadc5551280af2baddf6a6a1befe55e69d8d1eea9", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "817f52ac5530a9f05770e65cadc5551280af2baddf6a6a1befe55e69d8d1eea9", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "36c6e071ec55dea1bd82d138f7aecf5bdfa45027121a363dac665ad0a5ce43b6", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "36c6e071ec55dea1bd82d138f7aecf5bdfa45027121a363dac665ad0a5ce43b6", -"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "36c6e071ec55dea1bd82d138f7aecf5bdfa45027121a363dac665ad0a5ce43b6", -"T3T1_cs_test_pin.py::test_correct_pin": "278b897142c7d33546eea1958b4b3891d29cbb69468fabd8737b6051f9696c69", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "a40f3726f1b5a2145a1eb0745803cd0086a6c550d0d9846c2175d1ec0b638881", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "ff6c97768bc0fe1be25b76a13ee4c7ac7c08ff271f40feb59b857c528a7c828b", -"T3T1_cs_test_pin.py::test_no_protection": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "4c8a1fa8f385d824357d9f8f97da3224ab675215ef4d8dd0222b32b7bb2013dc", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "6c5fac2e4b472033143f2fa85f5f9ca040ca39f83856373288b31a24b09ee5ad", -"T3T1_cs_test_protection_levels.py::test_get_address": "5995e7d737f06f7bd246cb4e715d5513f8a0f63d4e9eb31f8c3d6dbd8ba22b81", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "100a39167eb95e4b3712586a56dc5cf6639e8d5085ed09100fc5242ebe97edb1", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "5995e7d737f06f7bd246cb4e715d5513f8a0f63d4e9eb31f8c3d6dbd8ba22b81", -"T3T1_cs_test_protection_levels.py::test_initialize": "cd790aedde27dd0bd83ba08e1f84a82f59f5f81227f0cb8096a4267c1a5c95aa", -"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "8329f76662ec9416f1ecadadb9861106f9d05146716f63e1e0e170ffa55973fb", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "54e12d70d2d08d7813d0a4ac80503f7823f6bf39ea492c62cd9eaf25462ad01b", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "cc1e449b96905699d581c7004faeda36d5521760fcfaccbb3dca9d9f1d3d45de", -"T3T1_cs_test_protection_levels.py::test_ping": "be78bec69877b026cc87f6b698a9b83b53bf6f40d153ed5f566ab6eea7db1ce4", -"T3T1_cs_test_protection_levels.py::test_sign_message": "2288c3458018eda2e7919fe1a76b5b28b97d622e072df2b9b7c87bcd24b93b0f", -"T3T1_cs_test_protection_levels.py::test_signtx": "9821a681cf14e0f96252618fdaf15e842cdc58126a3b63ba4a18cf4f22bda91a", -"T3T1_cs_test_protection_levels.py::test_unlocked": "854ce0adfc5484833dfc53d50576360845bccb7b90f79b483390de89d1110ad4", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "6ae0f587d7912085cabb946b309ef40bbdf395f6262874528b131c802cb91de1", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "2f8c6a82c0ef95ba95aaa61ca51f5ce5d6e41eaa393eb77888a787ace26e62f9", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "1530169e1bb9417ac7508687b10969347b6ad96e8cba41d5d47b594f137d649c", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "4c877d5f4af05261ea9472334b76809b4a7c0288ae48ac3603066cd305cc56ab", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fec56b8b9b10b19929e3d164b7e0619fe70a337df1a2e670488ec2cb7a45085d", -"T3T1_cs_test_sdcard.py::test_sd_format": "b63a9b869f151749ed52f553205efe47cf27e739d619207a2da01edcc45fe25b", -"T3T1_cs_test_sdcard.py::test_sd_no_format": "211314ec715ae96a1f1d7b617189a8bb9675c3d73cc10c057c6529ec9b8f4d05", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "2d1a02d63396c5f1f40cd11ca6f4fc8dcead9d7a55f8d65fbff608d2f62a324a", -"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session.py::test_clear_session": "27dddd7e69e87c90c4630dc804c5a80dee4b324ae462fe446cbd2cea05611ffd", -"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session.py::test_derive_cardano_running_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session.py::test_end_session": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session.py::test_end_session_only_current": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session.py::test_session_recycling": "36c6e071ec55dea1bd82d138f7aecf5bdfa45027121a363dac665ad0a5ce43b6", -"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "145f6e2cc3567e7c2e06c683121243c5f658c481f6c74c97594ac4b937560aaf", -"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "8acb6e26f6546b9ae1882915519b7cfc69d73376749427a15c1268c318e9cceb", -"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "8e01118457d783de4145dd0af9d8cc08890063a9f9e3d72907f874e2f9f5389c", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "491a139ce3af4c150b182609da6164f7ae496c1d345d279aea0ed0567280bf7f", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "1b0d99b9a4fc1fb3e9d4d180a05bb9841ed2e924bb2b2f475d49bf6028ca5f99", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "b1fa3c7e1abf533516550ca0848507bd4df09b6ab18a5f225ddfe470946067af", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "bafecab6f3f598a7c54d92e961ae0f6766ad2a1e7f203f396e813d052d03b192", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "8329f76662ec9416f1ecadadb9861106f9d05146716f63e1e0e170ffa55973fb", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "0ef33b9e0f729a0f4fd270ff0db19b64a800e2d9dbb71a6f0f6be8e4ec35a062", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "160484149f946c5da3ef467875d9ece770a08336bb400fc7652aadb16b3ec971", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "3448676961aa14272a8cb19479de9a86bccf339b9aa135a79530a8de63a2d176", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "8e04a2f86ecbc6322a3287114e0e8371d2166ee43707be8635a463e6698ae99d", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4d44868cdb6079e858e6df1ab729e96fc90af0fa31467480ee2a563b1801088f", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "370180296eec655545bac24a6073b2a17049c60fb994b6b155b1964085b260e4", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f01e76a8670bbef776f509e08ac39d0946433317c7db8cea9fbd08bfc8a6ae47", -"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "5da9bc0eb9520eaeb805194fa49d92d9bfb65f089454364ee4c875861d9f2eb7", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "a67b7018c6dda8995445f40665569af862969f091b2d90acf800296afcaf018b", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "1b5221a702751a6cc6711b1a17d218a71acaf71dd0cc6da926f80daff149b616", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "c93dd3f5e4e929c71f4d71dbfffe3c7d7e3031e226578c45150d6627786b6197", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "13b39b2a69de1a9098ef6268430d549da1ec7707ed5886016015bdc3f8e1ffc3", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "bdeccd52c9e50313f9f7e5a7365bad791117e9ed26745d0b452de6b669766a85", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a439926dcab61340a77192521df5be95f82395b8baf34f2b0cd1de57f5a866fe", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "da6475e0cc8df4639bf72954475530b9178ede67d32dd7f8356cb6dbd3e2bc8c", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e23ab3a5734058eaf08cb9da7e2fec8b5ce596006763e4991170984acfd1d3b4", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "97febf9f32a9a50bf74c3020aed0881df6d70074f7ab01fabb3556019e2cd7c6", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "c7dc9f0b8e66d093cc48fe1e04b72178feda2f522927ea8e289036b7aab9816e", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "ae398f7b64990c58b9ee1c91ec5d4e75c3c48daf3bd359b8a09e3c723771c3fc", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "05bd92436aedcbcd7e641eaf2bd82b9f46e9b3f3bd610dba24b0774dcfb09948", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "8aa6ed1d1ffc8e8116ef483474181810d87ec8c429e738901dc44b8540379c2a", -"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "59d1af33983ef29c4b81f494d6b6ec8ad7c35cb7180c4bf172714976c13e2a5c", -"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "04665a8cb7f66dc80986034f65e74891410324069615160789c29af8c4dbfda2", -"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "406306bb072bb7c29f6c796ca64800c9b185ec9499ec8b6b3e621c6be36e9220", -"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "8e49fedd0061d7a49456834ad647a27b3abfc30e49885aa585adc5366f54adc9", -"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "4e79529acae4a073803c21b40a008732688069779e7a77120c3162291b9a7bf8", -"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "787319b044d04a9fc9ddb760b40b4c5c73b763aad13ebba309c54432254758f9", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "9da0e0161b6bc3bb99ee7f776ba6548c7ff07c70d41d1b7e0aa9935814f24f5c", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "223f9feb419ecafbc1a4df88f45e448b711dd325500a97e95085f3ebddd6515d", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "62804bc8c25e5d7beb752b082543c5e4cbff4d73c24f716cea75baeb98253f1d", -"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "1aa2dc79c2ebccd4a011a12603ad8f52eaa72c8213d92600d8ab76660b154135", -"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "c61d87e076ae2251d0595371f8ab11f441d040475187da9739d6b5d469544915", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8d9e5a25b44240c66d469ed1daaff4fc438c61ca63f88687d345c57244f7779c", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "08f7b648f1e834a2c78fd9d0299370425279f9e8e0b21fa79a5bf5630002c4ff", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "85a5e96db5591a3d6039bc09b05c39b95e787e4d4df2f317c5ae7adaff4758db", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9320527fa4c22ddc216b57ce8497a2923b1421fe1db82cc717d2f0e0033cab59", -"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "9fd562981606315e13cab64fcd17f41185b006b36eb1ced9c0bfa88fd6707376", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "6c44240938612393353f5d8c9e4ef763706e93438a53f29c01d6775736aa19cf", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "b64cb53b1808ced8c5e57a5f65ca2b023b2d560f212019fb694614cdbd6cc52b", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "903f4bd8bcb692db06c8d2c40296a96ea12bfd473e61d572383ae3128318c596", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "6c44240938612393353f5d8c9e4ef763706e93438a53f29c01d6775736aa19cf", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "b64cb53b1808ced8c5e57a5f65ca2b023b2d560f212019fb694614cdbd6cc52b", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "903f4bd8bcb692db06c8d2c40296a96ea12bfd473e61d572383ae3128318c596", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "b35056fa7fbc86cbb7bfabb779b68937e61747a8531c84048a72010942d8452a", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "824cc304f4dec6f41f917b988b61e22940ba3e6d6706c79ad98f8e10018321f2", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f2404a835334d0a7ce6eba5173409085de7ab11bb2786ddba24c0611582166df", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "9c1ea474b6e464920b76b3d03a72799ce0da9ca046536f92b1dc8f81c53037cd", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "d492be11d1932fa4de33703f4cdb07f3d97acb92f8cca81b4d578cfd5afcee26", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "d492be11d1932fa4de33703f4cdb07f3d97acb92f8cca81b4d578cfd5afcee26", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "66425ec5e7fb12f162566b731ad03f9308c1d2966d43ed484b334a5acca5b400", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "b0ce89a7f6fb227d24e2ddde6c17638ac12871364adbdfec6190325a5046f4bf", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "8285f1ed276ded94dc4c3732ab6bedcd914b2e2e2c3b92c9b3438f5c01979c89", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "6ab0d7c158f6055e6e72d79767f96c745ebaf25909eff18be2595af32015ac96", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "6ab0d7c158f6055e6e72d79767f96c745ebaf25909eff18be2595af32015ac96", -"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "eb7719abe1c31fc06f5650a320a6b2ff4b57cfa975684b61354ec37f9d714d31", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "eb7719abe1c31fc06f5650a320a6b2ff4b57cfa975684b61354ec37f9d714d31", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "a2edf522ed74e35bb7d59fe6e38efa3eff4a5d3d1971888174f09617774e2fba", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e7082de3a7d4e131ff165888000ea0f4aba9279e58fc94e626209dfe29260d42", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "d85dc92b67eeb7481fe88c12d46cff0b01f124d7b038adc45fe4e93e9814c20e", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "f3f75db20f618ee3a01c75ebb39a6cfb31e2616f53eddc5624684f7dd5729170", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "940784a99d74d66fbc47bd91d1744345cc1893fe6b34b15f2dd0e91865a50587", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "ae44907a335cfbf4a16064fb7a85b1943d06f2a9f419fde5dfc5b16472ebada3", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "2af68e081afa71e926d9b9c613f1f2a75541c70793a904914b53b8f265a40f7c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "627e05094aedd5d975cc53c58a4ad85d7837c0cdd72b300875ad0043d8903b00", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "140969ce61b985c3c9266c28456e77a2fe9a447ab8262b9321956dcdd336a20e", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c1b6fc5f843a9d5efca39ed97d4872a4c1783f9c3fb1c9dea910e4a699b22387", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "611314b574a1b6ff6157fc312b1fe1f27c539c7538ecc79c314c05147270ba7c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "8aad91ba19da1529d1f2b159c009f74383eba0b51ce791d7fa74a906293a0c02", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e581e9be5adb52e240fd18af4526e2f61cd54ad1615446dceb50a350124b2f36", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "cebc94dc4501b50519692cb991228b5436ee207b54714c6d65b61bd7271f6ffc", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "2a1cee20408b59ea325f890a2914312cd11ab4b71c29720c7d5a0a6b6210da79", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "39f71fc1ea10f85ec5348754b0dfa087aafd9b9e850d491bbfc472221f554e02", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "0571fbf3181eeb2eff15b88a4dc18f6749f5942f9a05fe1402474cf09f4661ff", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0073d7b9fcb4253ec180b0fafb6de40d58e4e53d8b972a30ec3b5699e3e1e2c7", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "27b60e14f58e409d234f0c1233451bfd4104df2139e7479870839e8d69f6bc7e", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "8c82653b27031c164d894fb29156dc08ae074da5102ebeda3f2242ab0d9460fe", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "c7a87393c50b22c4975a208654a84ee29b5a09e77b44f7591060e34edd9af216", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "1a2d4c6cb1eb7570e85e9b20b7c99b6ee2e296e3780f3dc9575496f0282a33b7", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "9840c8c58eaa585e7d57011428915cb3ac8dc55cdaab10834be8ee74fb045adf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "ae44907a335cfbf4a16064fb7a85b1943d06f2a9f419fde5dfc5b16472ebada3", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "2af68e081afa71e926d9b9c613f1f2a75541c70793a904914b53b8f265a40f7c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "627e05094aedd5d975cc53c58a4ad85d7837c0cdd72b300875ad0043d8903b00", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "140969ce61b985c3c9266c28456e77a2fe9a447ab8262b9321956dcdd336a20e", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "c1b6fc5f843a9d5efca39ed97d4872a4c1783f9c3fb1c9dea910e4a699b22387", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "611314b574a1b6ff6157fc312b1fe1f27c539c7538ecc79c314c05147270ba7c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "8aad91ba19da1529d1f2b159c009f74383eba0b51ce791d7fa74a906293a0c02", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e581e9be5adb52e240fd18af4526e2f61cd54ad1615446dceb50a350124b2f36", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "cebc94dc4501b50519692cb991228b5436ee207b54714c6d65b61bd7271f6ffc", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "2a1cee20408b59ea325f890a2914312cd11ab4b71c29720c7d5a0a6b6210da79", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "39f71fc1ea10f85ec5348754b0dfa087aafd9b9e850d491bbfc472221f554e02", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "0571fbf3181eeb2eff15b88a4dc18f6749f5942f9a05fe1402474cf09f4661ff", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0073d7b9fcb4253ec180b0fafb6de40d58e4e53d8b972a30ec3b5699e3e1e2c7", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "27b60e14f58e409d234f0c1233451bfd4104df2139e7479870839e8d69f6bc7e", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "8c82653b27031c164d894fb29156dc08ae074da5102ebeda3f2242ab0d9460fe", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "c7a87393c50b22c4975a208654a84ee29b5a09e77b44f7591060e34edd9af216", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "1a2d4c6cb1eb7570e85e9b20b7c99b6ee2e296e3780f3dc9575496f0282a33b7", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "9840c8c58eaa585e7d57011428915cb3ac8dc55cdaab10834be8ee74fb045adf", -"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "5cd4b6ab4dd9acdb12637a9642e213ca1d28f91bba15cae10313596ffd55d233", -"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "8a0e56f92130a17d02518eaf3b99bf501c04fc7e7a4e8c3e7e5d288b21c07a44", -"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_bch": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "96482f7709ff16f2cbece01a48ec9eab3560804dc93c57a00fa771045dfe5295", -"T3T1_de_bitcoin-test_getaddress.py::test_btc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_crw": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_elements": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_grs": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "54a7b3f0a411b35d06209a3cead7e97589d77670dfb6e7240865a387ed425f37", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "8e0d7322080a4942ebd646e6bead78b08b02796d74e828c9039f8948a56f29a5", -"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "4dc120517434ad9bfe128fc90239b5219e39eb934205a8fab3d00c0a9ff2d73f", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "aae6395b52d96d51ea96b7425e6d8b513364655d067f1814cdbf6805e0f418fc", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "bc2c5e3912985f1b1151a2712d85eca70a1057f390d3d27eb52fcff39b5f5d88", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "e3137b2e0c19fcd9a33498d40ba6adf4d839aafced883873f5c433390c4b8417", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "e927e877a682bb46b3517743bfc0f0003f64c656bd76df307c4d7c6d8b8d0ba8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "7ac4d91699145537d3a41953593a13423f961d08830b664f390cb590009bcf74", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "b739d75a50ae4913551fd3a9019b374fe2d032e9b327b7f264dc3d8768119bca", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "b5d03df09cd7a99818398dd3df036e2441d956458158a0244e97f38d34078db7", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "09d6fcab49d2a46328131ba461495f3f3d88820405d4e55154ed65304da17bd5", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "801069c777373fe26316ff95bce47c2235e8cb670726d4dd047767718f7f7ecd", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "34a48ed75da0f9475770aeef2a18b9425df8307a7138a0f08807d921c65aea0c", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "96b0185859576cbc7e9dd5a6db1190d19c5eaa204286bc7ee150030aa8c7cc85", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "84b6bcfdc33645bd51d2e3f0fd54811c1b1e172d1fbd5d0b4191cc1da237303f", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "325399a9ac127397b3f043641194c9b486739df6966695b3af5b8c3537d6238e", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "9d54354525bb70eb8f64aae51635bd7f92b8a228f34c8a068c998ff180d4d02c", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "78c08d9295815aaa150bda4f789ba39b79d3dde4630c9a39e8570f1f901a07c0", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "7013bbefab8eec1f89fe129be278ccc0248d83d40baa065cfd1589c1acfb42e4", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "7a593dd364be6b71f48d295e8d467458177c9dc0b5e245e0bb721d9ecfc5e6cb", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "0811b01abd20da8657076df1cd793b9598b7c55ed8cbbbb7a5baf7a203b7352f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "bd992d269d14d15256c56a612f85263938102f4127f4a0811045b6527272be20", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "b07135700d0024b635a0771f1f58b2274334400c0457a42484b19c06bf00d8b6", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "72a816355db6e9c4e8afe40d78c8557e5c31c8403726f9091a73b43cd79743f2", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "30e615c57cb7256f06be630b092c670e9bab839def272ccd78a301d2c2322ee1", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "189210b6a19ea4b5c5a07b1a6e05db4f3ec7ef013b880a2b873b9307440eeb92", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "cbcb6cda0d34a018c07a6326af0c3c5fa3c26e6b401fc2069d97c6cd7e00c4b5", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "cbcb6cda0d34a018c07a6326af0c3c5fa3c26e6b401fc2069d97c6cd7e00c4b5", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "e36719e8f27c2c269bd41ddf5af78cc6bd7a4d9ecc31612314bab73c8b62e0fd", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d573895ea7ffc80ee4d61aedffd5739a8193d1cb681d1ddefba9b02dc575a17d", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c5dcaed7e07583e66625e49477c9501d2bf6dfbf97c666f9e58e8e323832ed63", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "2da784db2c9c492bd9c37ae697446d97ce8186ab41d5414e922253e680cbee90", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "095b85ca9fa4984b26ab4064c345be93e3da2ce8e95b189aceb2374a2c603b07", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "b7e37951314050be101d808a0924e7ecf45e58461aa63cda6e03cd91b935597f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "4787e3f14fceb5c76b350d06eccd16e2584c27abafdf6d6bd147eefdd43a949d", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "e5581dc05b799b0fd6d1a87afb7e2fac43c87f164f91fd1cd777989d0959cc0a", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "dd0977024a1e9e9f71bcfd0d29d7d28debc67b7ef7556ad0b45e54519bdd636b", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "d957b89479ea707ec0fcbb91f8d7440e97208b16cd68ba850c6e8f6ee6ce7452", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "34dc5225b1b8fbee3ffeb7f1e5794392367350027035210de3bcd55eff3e794f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "dc70e288180a9fbb37239a99a374f13b64e67fd2dfc8c13ba1a8bc65936e9dcb", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "630440f06959876d5a4e4db0c08d2c5296aaf3e9cf8cf19bd7a7cb0ef5431558", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8e132c61cdda70f6c1293f75509f152a89e532e285ad84609fe0f03743e0a354", -"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "2af68e081afa71e926d9b9c613f1f2a75541c70793a904914b53b8f265a40f7c", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "f59f3ef89e7cd0d88ea90feb90d34eb80331e5b0053020182d4b2400f6d6126e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "9de072e683d59debe0265d87f1ce6a9557b6cab67adb44b231e26b540a09b2ae", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "c4dc276b782691f66c751fd006eeacd8cb50777baed314b4218315d155bb4c91", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "339a01688f2b22c21778b265e9f971a50b891cf6f64c201d0216821e9eb428d2", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "939e7f57e0cd52d6d8cd02ffc9d0df773c3328a0803f4fab6c4721a354b9437e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "a60b5bc966fae2bc81ae8dc4474d39265f7a6b0c6817764900fde0d5cfe83d15", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "19c982cc1c19ebe02c750a5deb5304322d0b692c0639964fefd5af79e09ab6cc", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "82e9bb28f37e085356b069c0ef03fab0964b246e781e84bfc83c9a27c6c59515", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "39f71fc1ea10f85ec5348754b0dfa087aafd9b9e850d491bbfc472221f554e02", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "10f9152814e234e7e3ed77456868ce4f2ee4aff805cbd083604369147a55f690", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_grs.py::test_legacy": "06e20ed495dd1a5a3e4ebbcde394ad9374f9c5695a8976bf584b12875dd8aa60", -"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "ac9e9966dd625c39a1baad2b234ecc619868194f8c4fc58895428c1c6224b452", -"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "0a772e3ec0d5472f161cc3c3d68b338ad1cb9b57c0773023adde498a93b57699", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "40d9ae1dc65fe7378b125fef7c42bc43ae9e09ece4dc73e9c8abfafa12fb5504", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "c94e0c19e2e3596d4455220a44f7f01dff21b28fa28643ec0ba61337a79d379b", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "dd61ad41ebce6f9072e7271161da04df3650e094019fa08097063f3ba8cededf", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "17bf5d03d5affe2d37edf681b80a9fce1e42949c7fe565082119dd149cc8e77d", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "fd612d42eb82371ce032e07e0e287f9f47660209a43d266a2724c293ae5ed012", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "8866f2618895dba936297f421832965b70397b0d49a373f43ab7e98b96145b3f", -"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "d9c11793a11323fa7f5148b038491e1ddfacc8e8a7c8e868f0e78f96df3c06e3", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "fb4636da79632a43a5971ec36cd3d656301eb2df37c7a35e618cf6715f09cd0a", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "fc3d3dd643e5acb34085c644dbbbd79103eb470097852643c85fe03392bced77", -"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "1e93fb9767b6117a3965dddf9c4affc28399e8bdd71ff65e0a7aac6133defe4f", -"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "9e6b8366643b72a19aa5230cd072d0f1997e216a7ff8a1a3afc4ac29813595c4", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "5320df337290cca484840f7f26553df6a25922fa7d589f23c537c777f4ad888c", -"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "3ffe8d6f27a4e1b4ebee36f006927958b068df0b6e7c3b71054c09ef1600f5ae", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "cd22f3da86e7b9cce7fa32fe1ce7d2b1490509a4b804e090efe8aa43f16c09dd", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2d119e9649302e5a41d6cd13f86a009c190062a73ad3ecb991e29f684fb93a06", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "cb27b53adc50ae8427217637d416d83dccc98fce0b974a34a2dad22142ec5042", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "74aa04a9f947eef441a46abe74874735e43cb55bcaac025bf0d376aaf114d90f", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8597aef8602b6fc8a141d3cf61d35376703d0d1fca099bdc7fe25601e9eff922", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "dd220605fd459ef66eca1630fc7ee87fa6c1aded642fbd3cd84dea26fdb846bb", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "5005e4e06bd7843cd490a62457e77c481d4f02508e30075ed0cb7780862cc1a1", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "8711058980abd6363f07df10ce6714ff72797c2bdca854b3d51a060d3d49b2c4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "02ca8a9fb72ea93c1a0efcf7a21070d11e18d7a2eda4509876f552b531adf795", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "61f88e26ecd4a0436aa0ff4b2341bc378941a25be3825804c3f14e2c965cd8a3", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "cdc3b5f9acb64ef0534a40a2e149da111f34b1d716eb0413dad24a8ff869b01e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "34c086619597fd8fa17620202451caad8ffbc456227470d09361d5ded8d3f809", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "aeb8000589d9c5100350ba86c92ca88bbef3784cfd95e4e973156c7b24ed039f", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "03327535adf2e638594974de46457a2afeb9e9883ff574c44b09a1daf53703cd", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "b88b2884bb84e2a76069764d1c3a72d929dfbd1d49c6540909ac5210d56e1fed", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "5ea7d95bcf47fd61e756e892d732abd24a5210ee955f67bc8193406ab4c1445c", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "9063f34cbb804aa68bb61a4e28e300da34abd9e02887f9524adfa4822df119cd", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c2f79a0e24c8cdf739cc70199d715cad39b79809e0952efde65a2ee9246d4c39", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "ae9b44adf563494416e7ed0776c5028dbcaa50c70c25391adf380df6d5952c7e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9c018ded7e9baedb4660aa8fdffa5cad1468132277fd10c53e29147c94c9afab", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "11706efabacf8db14e935a0f96790b6767179b681a2b4de981496764cd01e269", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "f1cd27d94ea1f5d06783afdfb281ea3255e468442f21003189633201d8639e5f", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "210b91c20f0dcc25d525a40751a6a5fce4dc2dab255fb03781476f8052458a65", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "afeb21f013d64209662611c09e9687fcb098616f0d3e8334e2e3b22546e87af8", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "468acc93fbccc535d487af73455bc341e5757c29e2d295fc1583a440d2786a69", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "df5a368494af1635c38c9926f21d9ebb146b43191e1d5654c029dcb6b5eb756e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "ad5e2b372941b5cfe9a936c6fbe51d08b7987410d1f387111584f33cd48abdf6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "2100b9569db8f2d17fa5eb8e8e8bb4e5d5aa550e1229cd81d071e9adbae1ff2e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "09d2c011e7830f8b9f0f5f566b5d36c1cf5af0e057ec73ed32651b7b4efd7939", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "a9773dc6ed1da7f1687652e7b8fe1920e8934e5ffdc98f046f39d0d836b2c681", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "d1ff9188fd18ea7dcdab52e936c4865f2d32ce88fc49a4ca532fc1a77844a255", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "0bf9996e176c91c8bde284adfe68bed04b151ee31e57f09e35eb9b3e3b3953a0", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "c31a366e4b172943ba714d30591e35990e39a3c1d41f7c41c50f4b0bf68a3ee7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "64366de579a31ab66d2f44397aaf57e876e4946c147d08ad0a674ce62755226c", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "e61999ec5d687a3af86080d628bb4af0d9efd2c5c41d8dce908dc11f9f9b2513", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "292473593b6d8c03797aa1e359eb8ba9b41b4004b4068d6d5c5f245efcb0e96f", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "1d84bca04b0ad9b9d883e03e0356f347f1dfe69624748c8e6de9e87aa05b7bcc", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "597466195030ba0c1addd6574f3cc120a4f86471ade00d12119cc71de802ab23", -"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "849eb7400b046f3d41a07bfe5a2387ca2109f45f18a9eb478e548070aaa32b0a", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "184128ffac7e2331e9bd4451b6c70a382c6f2d25c78bdd6e499211fe44511f8f", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "3d1a9d41be32421fd5e775438e006668cd5052e2a0ff28fc5641f5b4adf11116", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "6a26d5abbd63323a71c85a555bce5374d9b16f24f278927447aa9890200bdf37", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "6a26d5abbd63323a71c85a555bce5374d9b16f24f278927447aa9890200bdf37", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4f02c8377c17c871e4cb01beec797b60819fd6c10d50b89364eabda58bae8db4", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "18ad68a1edb49307a41a8cdc6bb4dd7e0b3be358e2d30dbf0003f1190970d34f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "c70b74a1aee779429994ec06d7b882d0cc0509cba6497c37bb19463f9dc7791c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "4f658a0e48041849a95b631bd20879e8d67e8f4addba68ed23eca21eaa3e79d2", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d5616fb7a13a8adf2bb2b9c6f675f88bc3bad106e544b99ac13edfef3fe14dee", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "4deb5d3b33cd1336981e96737b995b5d758074f638cfaf32f7d5dc41ede642ee", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "4deb5d3b33cd1336981e96737b995b5d758074f638cfaf32f7d5dc41ede642ee", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "197dbc33800dd37d4ca324d67a578b5561798450cd6dc208fbfea1f724d8377f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "2798fc35163eeb9b5dc41076a2ade79b4a62f5c67331da22e7896afe3696edfb", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "294d37b7d308c2f23ed1001620d97a2996b88fb2ecfa036b2125a77cffbc587c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "294d37b7d308c2f23ed1001620d97a2996b88fb2ecfa036b2125a77cffbc587c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "be9290fadbb3bdcaa8d160ff7b1a4ca9047b099c8c924d42a7bda21d9f48499c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "e9df0c18cb4162f76f5eef186e1ec6909694e233be10fea922821c99101cdb3d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "77c786d4a754bd8d34bb55eaa24e071bb4326ebcec5c2b26e362eeb957191e2f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "77c786d4a754bd8d34bb55eaa24e071bb4326ebcec5c2b26e362eeb957191e2f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "69f069b1d23e7518b1ebbc6f7014b9510d38121a125c8cbc661d4e026b3acef9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "ffa345dc47c5e97fe690043460f2db6b25dd8d626a91d96eb29da64ee7ef992c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "379e53ca1fffcd89ac53b504f296bf5696756c1b961d56bc6282c746261def21", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "379e53ca1fffcd89ac53b504f296bf5696756c1b961d56bc6282c746261def21", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "a38837756267142e138e0b5bc34b03aa0da4041825285981c7fd3b572afaad16", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "5dc2e9e0c5dd173e81e417532bee6d31fd561c1ce23664b1498d1df338932287", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "1b0966cc1175e6402f6b397feb55ed00d588a4568abc8ded32aa5993301a7338", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "bfc8ecf73ee9e81837756e93016ccdef81f6d2426ca6f7bfa3cb6496692fd78c", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "eb8aeab298e3e473136758802ebf4f96b658b79f6977e8e8cd3652d8beb74273", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "a625e8b0d12c9fdbbf5f9643713d1b34ab340e1b2cf82aff43b65eb5db90bbdf", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "a625e8b0d12c9fdbbf5f9643713d1b34ab340e1b2cf82aff43b65eb5db90bbdf", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "e2266e9cd2b86e212d255d8a4813c8732b3d15764c6e9c7e08f12ed1691fb55f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "8aa5fc0b1e5e25e9ab837e69f94a35be3e4666cbd154345be9770f6e86ea0510", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "959c78d3628f817df2ae127ff9dcadd0142e17e0d62b3fe0493cdd10a56675fc", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "959c78d3628f817df2ae127ff9dcadd0142e17e0d62b3fe0493cdd10a56675fc", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "5c37c852809f4b45168377d3c97ee5353a880d4279961b061546c296b57291e8", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "e2f158f75134bc8412dd962c9c5f485f63ae156ce6360f05e8fb19ee9986785b", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "ad77a5515aa06df64f6491ec5f2be24d75ab9b450845dabbc05eb7e832856f5f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "ad77a5515aa06df64f6491ec5f2be24d75ab9b450845dabbc05eb7e832856f5f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "a2f9ce32532ef26bf4c57cb2cf2be5501a20d8af1c2ab374032c302bd61eceeb", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "3703d87b97f139ae8fc699225b5e2234a98d4ec39586a21001c2a051c67186e9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "aeff952872558565e2ae5c626adc33120179c626a1831d1e6105fd472a9809be", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "de6c33915ece8676a5b14c1b1d27a2614052341c5ef74b9ff2efa3623c7406b3", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "0d5c64965bdd33c9ba85592daabc00289e6fea92beb12f26c140ca4593e99f8e", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "35c799699480e2f02538b65750c119cd244018f0bbd9cf5eef8b5ff4c6542394", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "056d159002ff99aae03042d4a448c971dd9a9b46799ed1094f111e89c6db1500", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "1fa5a24665e2d9cda27758c4530205d2247778fbafee80a1f311ad2821952bc9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "9491661b3302f09bc7b5646027682ceac8ba068625d911a483fd03ebec07b5ad", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "4f367954ced699a00d88fa4ebccc8e5173feae20000c0c923d57dfad0ecd3e12", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "4041a771edbb186b7561a28e76074ceb75ad39fe5c3b7ed3200bd64ac1f29d88", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "568b5e753eabaa035c26cccb4c99d1fffc4534a3d158a399e774c5dc5ede5941", -"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "8f84c171ba6e94b933e0ba08649cb4d75b87d210dfb674e92cea664e6deeaed8", -"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8f84c171ba6e94b933e0ba08649cb4d75b87d210dfb674e92cea664e6deeaed8", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "7e4ca21b9705871f4242a6b5125db43d319def3d2b16fec0ee20296365525106", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "330200460ae86b98850636c88f5cb644614546dc8bed38d2ba89f9241b6652e7", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx.py::test_information": "b64ec9ba9f114f679489cd34b6467f0861e9e43f8173be26fe44bd167839b785", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "3acfbb4991af2a21800ecece5ef68e437cd9b54ba5197dd727b7b415d93b4e9a", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "a8139ec50fd8329caac7595ad172daa16c906e6a88b900dd6a20a7ffd4cbcd26", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "81b69e324c4b0ea04e739f9a6fd73242907f4b27bea4a66a7b84cd4aec8e3673", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1f5b9b61aad14293f131fe1f6dd4310b0ebd2897e0797d09e25a024b4df275b7", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f9272b18973e536d7964b8eab841491641e2353c037f354d98ef2b9f9e48f9b6", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "1f5b9b61aad14293f131fe1f6dd4310b0ebd2897e0797d09e25a024b4df275b7", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "f9272b18973e536d7964b8eab841491641e2353c037f354d98ef2b9f9e48f9b6", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "eea749abe0c3992e8935b11a245138df9792a9e9b6c4be07065aaafb0afe83f9", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "9a8e019cd3d8d159e29ecb9db8a4832105efddca6725d33a8a33f42efbc05528", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "2e78e493c63ed1ab158f0b3044d754997f82a58f5b8bc5cbfd95df992fdc94b7", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "7ea1145fcbc1e7801f127e550e6c0dda59b7f6c606b6bd1508bd664c8cd9482f", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "f2c1c9cc1f27bec8efff9abcbbc1dff2e795cc2e53cee8b1310ba597fd5ec9f3", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "d7a5c3c17685dddc14323e046c0072d0d699d344d5e812c7b6acf3388e64ad24", -"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "494baa681a661718ad775bbfe78a785bd6ca40cdbfb19313086421656c9eed49", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "dd306f7627b69ef520662a7da4773c93bbf15ceec0f6e5f4ed7c763497a6cb42", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "e5a9d63cf61ce1ab68160a4f03f363229e127a2f7ca73f884f78cee4ebd02895", -"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "9f1417959e127eddb3c93885a8d6bad9c113e784f1a844082340a9e4bd6b76bc", -"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "63d1d9441a7199843eb387fa164adbf6559461f426317a3693e606f2da8f2771", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "bac73ccdfb4eec159c4f81075d1cb590058444aa0d39c7d4f9468a2561f6f69b", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "80ccb6bb23d91b1403addf953e8721ba6610c4bf0f745874f52d257743814104", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "64db667ee6cb2af6fa59aa064eab005c12fe2e0f0ec9d211461c8cd750481603", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "6267fd7587bb1177df68b4378a4e99c11a94996287f6b65a1a3836f79431ec1b", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8f84c171ba6e94b933e0ba08649cb4d75b87d210dfb674e92cea664e6deeaed8", -"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "68e3b8f430a4fdd56e57381d86c6d047344c95807f48952c061a5ac2014747c9", -"T3T1_de_bitcoin-test_signtx.py::test_two_two": "fa564f90db45875f32d3a606e33916365ae658b9dec635d7eb3151f4ce33febd", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "494baa681a661718ad775bbfe78a785bd6ca40cdbfb19313086421656c9eed49", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4665a75d2cf0952a89bdef6cb0c57d6dc34a22dc4ed5a656c954df705ffabc5c", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "a12a95d4bfcf8eed49d9da9a9d20f1e844698051bbb2382057f25e4abfa4ad3f", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "fadcc0d944de1508fb225171b1f736b03be7a2f3a3e2ea394837f4e648187a43", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "494baa681a661718ad775bbfe78a785bd6ca40cdbfb19313086421656c9eed49", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "5af955461ddab377c02ef2e5ab033d01e3ce10f453687fa68f9e74d05eadb2e8", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "2d5d4f8826c7d2a36821b619a402a5ac3cedd4b4b4e172b9584875e254fbb139", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "509d47ed53fdcc860a40eb3d04f69102a9abbb77e254cdc6b71a26a73aa2a09f", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1bb7ac912c83bf16cc7bb8f19e33219b93896f22cbe2535c043eb11581ba3da2", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "5af955461ddab377c02ef2e5ab033d01e3ce10f453687fa68f9e74d05eadb2e8", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "92876d75cebccb88dfe711fb21a660bb8e909e2eb8f7fa701fa6205c837d5bb1", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "ed5d0d0d2ad6ddb2517e264ef30127ea5d84909c5eb594489a94a795854fbf86", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "d6d9f963ee2ae530b211923378524a76717b53c7c84c3663670d91e86bb0b87f", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "48e511bfd164e03d12488bfb8dd98aa5a9f5b03c82960b5b6744677e1d0c84b4", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "130d958894202b2964198b9d4cc9630862416e02b57c71030c9cbcb61fcd4d4f", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "91ce10f44ff5f8f4d60709c47ed3216fd9caf814fed861ba9e1188efaf5fafdf", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "b1be22d2d0e445f84792b1c50ec9d5b121fd24c2f1a3f6c9e1ac6262cb1e026c", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "4ba90c49f4c88650416601f8a71fc6725767ea31798d00a6dc83fd2127bda87c", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5a2111f9f5b661b62c920f722105782980a7a939440c05133c82b21cc2a0879c", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "932efef66c68e1dd513c11b3311b1bec51a2b0a3b0fd156dbf9b2da269ba638b", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "685cb27f67398286e8f5bf99f985e834ca261b132efa869e5da83dd89ceed019", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "91dda51a3205d12a0a24392210dfc2d757852b1c664c079d937c78204325410c", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "80f1d31c2b118adaaad8822dfc7df1c24554a55a3b55895dad7e906a7e4f249e", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "d260217ee1f196cebccedd486f00cdc1e82e799114355a3e87e48fecded605b5", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "80f1d31c2b118adaaad8822dfc7df1c24554a55a3b55895dad7e906a7e4f249e", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "d260217ee1f196cebccedd486f00cdc1e82e799114355a3e87e48fecded605b5", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "eb8985b34aecd18ca11537043fe52d34dc12cd61ed88885dca4a3d5571be5d39", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "3751a1bcfe7bf20da9d4017c4fcb556b3eecd6e0f631cb34d4b75219f9e726ed", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "f36dd429ffdd720f1414e1a8cd4e1d03d8a46cb1ff5b1097bcc243ec9e10d81c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "140015184560c247e9f310b4b644b7dad6e08d6a9a0467f6fd080d3f09667a32", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "d6b84177ceddb8502d86c954e9c879f28305ab07ba41841e70b8ed9e309ce636", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "86285d75ce4f9f4e291781bf522723dd3eb24b61b93df1e450c2bf73192b5316", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "0162099adba678dbc8b16adc93f935da363f30be67ea1397c25548308908dad7", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "12855df6a330c2ed5b73d413d0fc707664ad1d9a54fc614d6cd9431f89688461", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d5a47bb0eacd3ba4a47dbb813c218ffb99cb65b2902a186dededd2447742efb4", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d5a47bb0eacd3ba4a47dbb813c218ffb99cb65b2902a186dededd2447742efb4", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d5a47bb0eacd3ba4a47dbb813c218ffb99cb65b2902a186dededd2447742efb4", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d5a47bb0eacd3ba4a47dbb813c218ffb99cb65b2902a186dededd2447742efb4", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "98d9b486b4be1467cca50ea71edd7d92f67851fc879ff59d4e5fafe2f5bc7bf5", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "98d9b486b4be1467cca50ea71edd7d92f67851fc879ff59d4e5fafe2f5bc7bf5", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "98d9b486b4be1467cca50ea71edd7d92f67851fc879ff59d4e5fafe2f5bc7bf5", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "98d9b486b4be1467cca50ea71edd7d92f67851fc879ff59d4e5fafe2f5bc7bf5", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "6020c12752b576b43eb9ffa808577cf6cf84b79221d22358c5873b315d4e2c69", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "501f380312b92cfa654b343319b632dbee320acc3dc396a03699740fa6ee0d3a", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "e5d903fe9bf324e470cfbd4d96211dafb787078034206ab70802714b7d215b0d", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "e5d903fe9bf324e470cfbd4d96211dafb787078034206ab70802714b7d215b0d", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "b0a800f93569435291eecda24ceb68c45fa5670e485646e4dbc036ad996ae17b", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "1e26f09f5cd331a92dafe762ae2297bb2a3f049d263dd5950363cfc8d0d7f28b", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "a965e23fa5143b0d6c9a289ec7cdcbe831ecd740e2c578ea751d6004c0529f9f", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "b0a800f93569435291eecda24ceb68c45fa5670e485646e4dbc036ad996ae17b", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "8b9c38e2e71b83ca2a694454937675d3eab760d7bc40d4c2db38e3a723f6c2fe", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "426ab2b9b99019aff0c0934d3e75e9b634412510de358f4326fb1b282f5e96ca", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "426ab2b9b99019aff0c0934d3e75e9b634412510de358f4326fb1b282f5e96ca", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "426ab2b9b99019aff0c0934d3e75e9b634412510de358f4326fb1b282f5e96ca", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "6c454c457ca3cee83d60107746a30b5f3194bee67d06328cd331560db41dbd8a", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "426ab2b9b99019aff0c0934d3e75e9b634412510de358f4326fb1b282f5e96ca", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "0c4db455990d38d3f1ab02d944b342be8ea2c9e2de9d08c1a3f0b2e28a711ea5", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "5ada680c764f0fa7d10cb5ce781f9aba6a6cacb7417f52a3688013c50ee6501d", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "683cc8a0fb46cd839fb6486e30cd914d5602da8f2272074c24596b887790a16e", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "837344960e9632297ff8fe0733b64819b5c5fae1f6714ec60c8d33a38bb92385", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1394cf58cfa3aece6a7e75d7733084dc19a8d91baa5661caaaba9783f62844dd", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "871caf1dde0a0054a2c0af152ccf5daf0686354f5d735a4cf6a8b404ca7f854f", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "48583f1217a9682998c1f194c059b39266ef17777a9b73ddd3987924c8b923fe", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "143b4612dd4226cf24f6f66eff74410c7ba009512d46092b2d36a13b3c44758b", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "08cff952c04dfc62a90dd6a5cd6ee50660425303a00304694e756bf2f96c6f4f", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "79d4d4342f134866d9fb6385464394550c03cf597c6669f4dc73d73004399c31", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "f041c5a90acbb09f5c44e953e94dbeeb478b7a4c2f0fbec6ecb8e28d93b097f2", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "bb12967bd8876772345e4875f4db10f9faa9d413f1a2ff2c1ece974c3764d9ce", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e30ce11a94a80c56979611d2a47f14e74a64973b0a773c443d15ae54f0a651c1", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "ca391cc42986f15363ea5926dde23acf60f919809a2ba0c9e8001656c62c8167", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "5af955461ddab377c02ef2e5ab033d01e3ce10f453687fa68f9e74d05eadb2e8", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "6ae669bdda0679bc578316a18ee849817f17b7cc8a328b2b719fe20a31f851d3", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "d754c1bc7877aa8b59b0524f51149785f091ad9774ccc2588e847af0afaaca62", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "c5799f5fc0524526154f8275bcdf6faacc43bcac64c16e82582fda01105cb247", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "64aa8a292db5af60f595b07973494fcfe27200b0a736e7b0e29aa215e7b6611e", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "9e86285b1df9e6ba8800e504ce418e1e21ebcceddf17f6322b1890a506d5eef1", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "2964f66c82e5f4e553f3ca3b1c152e81692f7fea629fddd49ea6fe2ecac4cc11", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "d406db73992a659a31fb9711c213f7ace17d9fe53fd5a668adef5b7619f24758", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "7767bf6f5c55107235542da729394a732b134823049c95464e855e4e617c9bba", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4f8c214cc0e63d5bed3ef34c33b9b0b57a723b58a9def908b46bc292585186b5", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "5d87f20eacde4b79983d2592a4c1624e4fac7c5d38a54b1b20c3129b6257a044", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "86e1f261e494b40a4d41776409032884fd8b80bedf2a8cc1e2bba956d79c454a", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "ceed1f40e0f30001ce14c746af4cfa0132192446e7b1f36a8f9b6b1694f7d10d", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "3efd91c5c093ebdaec76c4ebae9d9d61593d846b60415cc1930d4bf92abd1891", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "5744782c0d8c98af1c4f42d93053b02df433c5644d4a56dd62258a15f9f8eac7", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "49200f8fb3faa33d09ceefd5a325f6b6e6d95068697472913434355603c4b000", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "8afaaf3114bc1e9f6344e165ff53b81c14d1d363c91065fb1e6be8164be99c9e", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "1fc06b13006d1f8db555e1dbbbf8bfeebf83b7627faac4f88b1b7d760f7b7756", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "ac07bb53bcfb50830f57d9990c7d383bf705d507e6125ad7077937347e9aad46", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "d785493fbbca301ffe6d964be482cc704615b8d31477831467c5be10779d90a5", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "1371cf71618a4398b7478d812df2f4375cae9fbd4c96ac8d533e07a25ba53d94", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "bb0bfd146db6757973d480bdbce25324ff76e0946f5f48240637c8ba3f5d0dff", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "a6d46d52191773c4854dc4272937aadef03f12a6c2ef9641646e6140131fa5d0", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "105c80671e387fbfa343ec2559241feb08141ef3537853f53e6729489fb111aa", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f13e7ceae1ecf29960c914c41ecd494fca6490e490dc65fe2930023bb52451a1", -"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "cfa53be3e6999e185944fd2ead993ee82ebd7abeaeaeb37724380745e8cf8aac", -"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "fd3c0c94716001bd38930845651822ba523e3f9f3c70df5bfd2f72730c8c9536", -"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "baeba3cd590eda9aa9cb81cf8630b82a2fc17f85ba3db923de341bba80d06c31", -"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "eab8fdd33e95cfb8a55ec46333a275d6684bdb963e5c2aecfe4a6b1740e23517", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "593343d7429a645536d2a1ff656a7b560f11a7d6a54fbc13a37d777efa0058c0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "142734eed3027e5b903a53738a3e39ca057bfd5815495c82f49762d801383070", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "0d447acdc7f87b253b395f0df98ab4a25141f615e0528c67403f9e7681cb415e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "7222ad0a72ca6379561c1635294ae63f3a0f6caf206318d3e66f2a11f53b1213", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8cf8d39b927ffdcfaeaec2b2dd27e4b47f860c222377f8e22e2016c350c7e622", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "da2e9a7db7bbcc46c5f028112c13e49f16ff623645da9269dc3114280340a885", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "58a2ddb12a77f4914b32ea1590ea448e70ddd93847ae1ac8a36fd5f2e60de9ad", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "d827283b9a312ce3360e5b9d20958e7317164e29bbfb29c20b255b86cbb79744", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "802858336808c12dbb9320333423804eb2d1723010a31a97dfb1f41b14da5ce3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "4796446623096f5316fac9de1281f7ab96b2935126ac6439083c9ff006974b2a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "9156addd7f6fd418b96e0f70f12da2166755392ec4ad90f9b0f868ad78fcb901", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "9f89c53f8f3c93f9545763c56f138f3bb8ba42283c89f3489cb8328b28a17f86", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "bc89219981166ec0188bd73d4c27fc46ea40b06dfaae4b2a0a1839fa4e1eed63", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "277c5b0176a56c2cd8899415157b5055934eb892f2801c2111cb3d862536ceb8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "4d8725c194ef3c27e2985b24dc63103e56ec812bc5ebbb2260825a7d1de4b84d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "1cff50560b91f44659c49f2342e4b07015c311ae9bb035150a0a54f6fc691ebd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "da309bdd6c91a1807432c98b8e04ed030325b7fda38f846721d8552971d5ab84", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "0f2ab75a2b051abbe987f2933ae6bfce990bd1500e75ec038c03fb797b1f8c44", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "678233965fc69c59029a5f3e93d8d9844855fa354ab4a010af825c14466bee68", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5c66788eb0246c7e5a4da94869cf0290ac41bf0c5c95ba9937e9e353495ec868", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "548abebd28075ad6fb2e359a27e5ecc59b865cdb8de201b2ce2a7759f630cdfa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4599865cf6c7635da3cae6684a46def7b9180756b03bb0c89d9784cfe2b57921", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "9c85d0136d3dca2e89cbe2b1646737788f3b76592f16f5b5889d3eefdc3e1655", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "b2978beca8e718d6c5f866cb5823443b4a7d2010d7bfb52f955b7e6cef3a5aba", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "9fc00c9ef2d96c033a711b1e34521c3f818ef367a4e36fab3158f72790a0811c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "272d277db7c77de26663fce63665535259f5964a733e1d11c274ffc1313b1b57", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "93c8ce267ec47d4cd91828ac8ce89994978c822a275a8ba0345bc29fbe3f154c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "53fdbabb8f3d71426bf4aad7aef79bcb1cf6ab59baacc7f79bde379c8b0576d1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "a35a9d1375c40e6968ff314f4f4f9032228cf35211ef164f6446881e859548ac", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e1460e2a1b0a629c27e244e5102fcc8e68e3a4f4035d45518dd368662911acda", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "6afb3b8ad9316dd05f44071596bc723cb30275172d547ab9cc180b51d168af4b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0ffbf61c3f6e663e87feb8d39519643efdec5f680fd4b30f254314a3c767e775", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e5508d0eef8a142b368552b0a0b89545358ff62b9f4f29f2cdf098cb4d37068b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "2dc7d871618b099998171bf7ba1592ec0a547bfd9a8979a68346ffd4f5df82a8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3ef882df9208b45a4794b434d63f6c6c66f0baf88f12910372dcd5456ce67c13", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "7215ea8151d9ac93ec647637d8ade78c5a78eabc88309b20442f9029dc55f6a5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b711b6abdd59c56df91078599044edc2bc3b83e494aad6a64f0c6806fae84565", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3d047ebc8dab73d8d2b43518c859f32fda11a3dfe6f876bb2e80070d50d23d2b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f80c997344a9b8cbcb975c4e6c3700826687b6f7a0a887fd01625a6edd71269b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "f7cd587150ce4a96c5fb953719f6f35733d8a70a495777318bcb2afa0e54d565", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "92cb55e67de4527fc47f6d5822b690255c4b424ac8bdbec97d9f46c4ccf42b47", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a542b95f2492a73c1f3935dfa9e04aac332866c360bcc8847fc3019a1c5057fd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "ffdeeb24cd781f7eeb27712d77977ffc3bd3dfa3aa19bc1dc7cbd5eeafc5a970", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "50043c0b6d0d29380ee6653f3b6533d68fdf78ad1d9294dcb72f299c3a643176", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5f705c863a4b5d88dbdc804795956d32dfc2af1e2e8e53fc7504290010305a85", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "98ad88d9ca81153e82c090f2d250259fd7311b24520b9699c32790285ff9672b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b39ca9e0102d8b0ac76c8deeaf4ae81470fd8c91d0e9a4fd6efeb4a3878f301c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "b206c23fb9fdb7964379d47f9cbdb513a3f3508f8e0a62bf84fca6b62923b80f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cae94f0d67cd4203a3fcb4eea8cf1c6ec2b30628ae1ec067935cf052cfef0a41", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "706f86febf79ca01b4e5bd3d7f934f03d4f670cfd7145d6eaf10631c00d8b762", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "869cb5d5ddc5fa00e701643f83a6ae5b2c561bbdb3acf0e2a70132a0dd370ae9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "d42591426d4113b6d2d3d96e077c913c27dd816b5db03c20985080d52b5119c7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "a4700af3b9c883cf3247bef446f66d83dc86e0bab8a423a4bb3c20497ed43d5f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "17c088d7631e932b4a1002628ed638461d0a6595d308a40f631c92d0599d770d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "fb51bf32a8996a143b81ad795ad2f3dbf439592d3985e9325a50762609558e59", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "9e2eb9a7299f531d2fcc21b25c75cf50f602cb40233fa1ffe8ee7c3ced31b8e5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "6b5a7dd70e98a0fa7f2b9d374fef997b89595717e7d32356473dbf43d4799842", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "e364750f156c0d4995990250d45059b995d4b875ca2aa55e65a5c6c7ae407c5d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "278085028ebe966e00901a077197efa14e4207854a69b8043e057b8ab59d8e18", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "88c308059b4bbcb0f9d99340566e3b64651b0d199e9a9c8c428e4792d1bd523f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "c0ed9003bce807494ffcfd1590e1730c0b341dbde34c06ea9133af811a0033cd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "38f5cefd1bbbdcdb481f7855f168d2ab1830ec618b180a9a1bfa9d643ccfb769", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "3c73b8bc1e314efa0dec2f4a589ac5e5ba762aee6572836710af6a68b908277b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "687f360bcea87c5dc28c7508d60f9cc0dee309a0ebc95e20cbc0225603ee74e8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b440339b09d4f93a3589590957be34ca747a4f1b5d59a73f372e1e7b3b4fe403", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "fb8e86e397e141c5e679deb9e6e7894344d6454aede9ef3c4623f013e156011d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "cd682f311bd259f446b5f09d14381c99f7283fe644e9f75512a9cd8ae4196309", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "190a0636d37f7a94e5efa3ca71259310751d1821838b3ae01267d2df55df8e5f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "19b1ca53e98aa0d106de7ef8b6c42b9b433c11144a8908d890d33c9c619972cd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4c3aed59d9666576589dc0a7c2588d22ba510cbbc83c5d08a160c66f72e54987", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "8b0b47635bcf7492609ee2228910266e546b24326b46a663b960eb12569d0875", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "3efea3a85fbbfd2dded48b2727622968ebffb85004c63ee7e9b31fa0203d3447", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "eee6d86fe959a259789c139850c95744a5a8bea5e921d1e1d9bbb067433d0b9c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "a7a6f47134750b822eefc7446e13ba0d215a8de5a6c99a3d61aea0a84a838a11", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "8892014f001c0d26cc8675fddea76be560816175afd6fbcc14dbf3f0a5b0e4a4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4b0e7c0dae55130432f09ca79b43922999148d30bbb937d00bd7be9e424070e2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "2ef8d2c1f3dbe0873df44b0486d03992cf4f14692fb30e7a0e07ee4c5dd9e126", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "88f65e6508200d7703e727e1c8d53e3b4d6784f129d9a3c51b916dfaa99ef191", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "3cbcfaf257c9b2aa84598c50833fb58f329f8fe404708ee6c5d2fc810381d34e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "063bce56397230b88702e2621bd7d58c650741ed6569144f34c65e6bbee72d86", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "cb7d243c60b932ca8589725823be06e915680a49e189859ffa99633d1508f614", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "6f2969b92e602ba46bbcccb0bc4c710b173248aa4e2930d44a2a5efafa6f0b14", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "6e5b5c048494e932e08138a659085d06edf3b3973c53432fa27de1a9e4e99c6c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "5463465d726e6009ab5bde878b3d2b8d5f7d22a71df2b6296b4bf64f5ca8fa2d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "18d117e3c19eddd98228f0a202ca5937393bcadae9adb8db6b93b61fa8a44562", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "4d814a56f84fd0614574641f2b96d5607a5317205c9fe3b06f38012f7f8affde", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1185c45f047c8ff396ce5e2e7637d4384e0c08b25775afec788cc46b98d5e158", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "8fee793e71c51240fb6a3822c8eb9b4ecd11782f249dd046cd847412a769b07f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "34cb745de316f5c711895f440f5f5bf5ebd88010d71663c03b0c13488bb7ba26", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "5983d3716baf336b6b450254f83ef00b2a264e2af7510becb3308407b4f6aed0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "aa63032283dc574faba21b99932bca0e23370745ecc71b76a2d897f7fdeb657f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "4704836e96123c24716692e61897055d1f46658ae1a7013dea2bfba9c65ba19f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "66fc94399955b5938a0aca57786f094506cc4bb256a0e8681f752c021bb8e244", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "54709ff5ab6a0f6c36740ceb057dfe53d8b440ab43e7178e666fe0825152f8b7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "8307991d9e8363a24fcb2d7646df5b0735c34414a11ba7072c424434fc2da0ca", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "6f9c84e314f3e87eb2d6e3cb8446bc50c7973ab557210ab2e0f283a9e624901f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "e6f5132f997450f7230f8ccf5c1d6ef185f023b7a5f6f5ab9c4f955851f52da6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "da346c5ad161f8e2ec8ce640db61406f498c2f2b628f5998e2465d3a423d669f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "551e2ca6ae53ba80e222e9766dd3f26b1012c3e80a1fd00126e381937503ce4a", -"T3T1_de_cardano-test_derivations.py::test_bad_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "ca00e64964a5f310c22870ac41088449f2d0434e019de86535ed146bec35f7a3", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "21399033b4314f72830c7e601281dfd7730f0e33d7886f3433018d41e573a3e1", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "a47d9f4b753b2afb7ba7f10eb80567987515ee66f0a8cb360cdc11e105967e6f", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "47a4883e4192a5e2ad9238be356e6ac07a1f39e8cd843c76a2a4fa8dbaf6a2a5", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "144f13cce75c89dd11c7e17498d6c5c228bac517efffea1c1742b77f5a796875", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "d7a55967e80668fea53b43c748ef6dd375963ce2440f8b0707bd3ac9f8f151d7", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "115b7c545930c124797480fb1a93123ffdcaa280b7eb05178a919ef610efa6c6", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8c53cf01bed2b3c8acd85d1b987dc71c8de57d09ea3c6a2b6674038244fc0cc6", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "3e49ca223312e1556971012e3b1d0e5bce488fb564767d2e054a41b8fbf87713", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "3b390fc0a8a26033414524262e96f6e1f4e5ec68fbbcccb2cd8aa051377905be", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "45980e258277fb893ee721b76157ebb5a0380b63c05fd6a95d0dbdb52080e3ef", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "61f438c8f976da4df60ecd91aa3edf827f289f6b983b0047fe37235689b1c911", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "6f17acc81ceab31d6f740a8024bc2241b4e8c1c5b494003b81fb04d37a3b1028", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7760f1cda693a220450b0ddc070ebf57fec1097381e881811c06a858e8c95044", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "69b86a3d6a9c54e782ca674baa267618af840cbfac64d4374541a78b862efd59", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "e8978874f8eeb5c88c7cd7964f6285fa1c755726aab2ed7f19ecaab7dd78f7fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cc27394b1507749a6310466fdfc4c92fa980098d74fc87ca53bdf7cbebc2be55", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b5a582255df2e43abb708ceaf735be845acadab9d244f265c3604132bb27dddf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3b60c2017af32617438bcf49f4048036e237c0f6e110cb252936811dc7c650d4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "845641547c19960d515d2c3cc4eb935f2d126a007c9903ed3b7b5efc0a0aa2f0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "2948e54648c66d908f31aea17af934bba52ebae6242fa8f18f6e4723011d3d5a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "aa06418b3e865758f42eb81fbdd88d0dc685b373360e54f7a3483e196f223898", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "23c2c78d959e2b3576c8679b3b6cbe10058bbe0684e0f7c7a6f153fff42d27da", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "c70ec8298b765524b4ee9dcc8d78abfde6dec75c73c157deac39e4f1e3454b93", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "41e30717ad9435c0783bfd80bebd1c71e2e68a82d9651e6d88728fdca898e575", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "41e30717ad9435c0783bfd80bebd1c71e2e68a82d9651e6d88728fdca898e575", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "ae6df52baa4a154990473446583843f6effee2178b374c6aea2e4338bafcb63b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "7884cccb5fd24362f646b138ffa69eca11968d0f58fb1a4084a8210b5d80568a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "abd3d19712ed5eb43b86556c49a23aef50449f062a111e406de7372838eac6f0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "9eceb8ce7890790c2ac2747f4846e91b1aadf55d1be1b46a88a94b74a4783bdc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "20f6ced7769c951ed37c9cd395b590160741d8e1610312b710dd445b3ffc15ec", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "2f5e3c44966b9b9b793b66bb4a13b440c2fedb39448aeb7d4ed6972b5d13d425", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "8e334d455f4cfd8008f4acac1ceeefc256ac7de08fad7ccfc6f571eee6842bf1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "8cbf1f3160e62a402a68e67f21efe0ca6959803749af623841d74467c849a0cc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "aada10788299783de98a67d3446e0584ab3365fdd14d73a1e76852471646521e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "20f6ced7769c951ed37c9cd395b590160741d8e1610312b710dd445b3ffc15ec", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "2f5e3c44966b9b9b793b66bb4a13b440c2fedb39448aeb7d4ed6972b5d13d425", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "7a50c27940033b08e67bde1809d2552af38f25e82a48255897d8190b2759c38e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "12578a4345cb4a8836874fd91f916e5689c010f972e0e64de417011a35aec655", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "425a3bf9d3a267196b5f36e2b36ff18f04bbd06711af0a2f460268826dd2af9f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3b64c579eb78aeb275a1a7b184f5fd48944b485727c52d6d5e15dfd6584c9160", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "38cac09d5e71cc7ee70297daf54967b6515ddfef34741f37c549c5bdfdf01224", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "c6897b993503a5afa8c6cf0483663a1bd9df32ff08577648eb53bf0252fb3520", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "36ea0ae3dbc4c5c81b60ed5782742d808bdfa3fdaf19e298b4e87f894ead3d21", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f702fc922b835e6d6675d5384e40b8afd62333790f7032c0706f7462ac10dae7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "50d8adfaaa31d03fb961f2cb6da7260cb2f043f63986e4076e45f7077331fa8e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "cbf74f4a20209fab50996592cf0d33c56b922188c5976d2d9a7285b1bf2a177f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "fd51b909c5b68c7c9438d0378d04e57d1a4f1e4aabd88304bf39951e0a6f92e3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e49554a1840d0766cac62df3c16c72bfca7527f79b7844b1b2c5e2d834ec9578", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "e9de367ab33d0e702ddeb1b7f136246196573c97bbff9cd239b16b15ef59d067", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "53ffa7bc2ad9020424474fc853100c8d179ada4b8a2ac16432123549a588d2f5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "3c01a7c8ade3d9c0cabe2f4e452f3aa0132999d218ee877a9abc46a2a305b469", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "60b25a82977a519b97818a75ea6ea6fb7c5923a399b04591ff247d3f63c837f6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "15fcdd0f44d67b4c825e8980103a5ec8d1cef5007f1535220ccaa235967342e7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "1cc1ddf00ca12064f9cd6a0653c842c5d440ea96d7e4c86a3c823beac2f5219b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "8395d1cefe3adcdaa24b5fea5f82b85397c2bdb9cfcd2e52cf8a19eadd4717d6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "a6acc321c82123b012df3aa3659b656de47d638d09659eff0af8951784ce50e1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "26610a38b0a7002f6e23775414b1e5ade3d31679e453c3e92c4ddbf8e030eea4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "4805fb4eb36e36482d307f8bff4f127ae5b45441ad1b7e029a5df3c4a715d3d0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "3761b2d4ff0d8489b3eb18e9edee8eb38620b9299a380e1855573289d80e9cb0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "5f5d9f7e1ac4db4c844e090de70495b3f6a9a82b7efc1c0d6f13b9ea3be9aae1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "26b53e7b72caeef4c0b83183c29241c34c47cb6fa8e82714d080c0bc2c4a77fa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "3fc55d8252cb4bd96122edfd60dbb1a1cd18f8128ae43ddb73a34fc2d05b0f1e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "874843d0ec1d4daa3790155501856db508273421406ece1e29507b050d459a14", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "25451270c3254b5e52c9cf7ce8698670f7635c48069c50533b0a8a2247ef8491", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "edcd97b85186459c5d2ecef0f92c66f84b87126d6e81dba0c9eba25d75492209", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e8b7f0ff9cb68d34712b05dfe8bc97098b0849deafaa0fc5a76efb99e2780e2e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "8463c2f7bf1394fd85e4dd7a57148a3adcaf38b0db43f0046649b77c72b064c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "f52beee973120e3ad8d0852040174b541705c818e7f44508d63762e408932ff0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "490c7d6a02246747ff2cff807d59d0dfaaeac30ed7843e66bde18483f37ba243", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "660de8dfc53c9afe001a3d7ec1df64ba3116aa93e077cbeb87366d96c9fa09aa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "a942698a7c99b9f7a590510bcb568a08d9fe06801e90381224637b7feb5371e4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "4f2b9acc9820f3e1b1eafec4d47f3ba761a3a95f03e538281e3d83213bcc3737", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "861b00969221a2a60ed49bc549a677be358c1326bbea972ac52521048061e4e7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7e3c93955d8e3ec5a17dea14e057509ee56ae2117d6e28d8bbcd8244b4839dd5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "9209c982899ba68737c6371bb834a9eaac6bd59260d96a56cab89b8bc7d24569", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "9ccdfac9e67d32991919d88fb32e2e968e1f1f16bc7564f01e18604096d3ff8f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ce3cc38f35c9d6068371f452545823fdede3b6ab70ebd5c20700b8b0698fda6c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "41fe3ea72e1d9a32f00d0e1da15feac806d633e0a6ed1684e0476532bf5e6972", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f31c7fe9a40ce6a2a1175e534d99e4eb124f7a4b6f26d80b46d5676d702dac1a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "a661f7845481c845643515279b3e5c9b2f512c3213bf6113ceeaa987208c58db", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "65c1f2cbd6c361b7c77c75fa9a52be8bf3d31a8c5515ff45d7d4f46af1abb1d6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "c374e2370c5cd692cbc7b73f662e420ad791539836e1f0f270a6bf9c91a59185", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4863517c49913983373454e498db4f3b99ebefb0b3205406145b02672f1311c9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "745c9acd215f80d3d0f073af2d0d64b070b00419d265ed2af66514f403b40362", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "49cbaee80691a6790fabff0346eeabce290222da7dfcd70e6ec94d33ae92318d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d9dc3fdf89a56393cf21621f9fc972e2d5c4060d63aca362af406a18b780175a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "fbbfff49beac4fb83b37385c956421cc3b17b9ea8cf58497db1463321fbee6c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "a6fc135f45a9a3a721915f09919f10650df6761cc2689ac3fe8439996e700cd5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "a6fc135f45a9a3a721915f09919f10650df6761cc2689ac3fe8439996e700cd5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0c85cb94d1fcca360c22a845cb4ed8d31215f4451525a9c7119d0b6683312c0a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "85e98e73a4b7b73d983278d266323f330b4fa981445378a5468cbc3f9320053f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "85e98e73a4b7b73d983278d266323f330b4fa981445378a5468cbc3f9320053f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "fc2675d20e17db5ab141b4a7ef9fee53a59a5bc499c2c6c823d9c4c54095ad1c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "57ad8ad60121d88a94a83911756af1029be524f1abfc069689ede10e2fdf03fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "2a197e834e106cca07b3fa122e46891280b1a2679555031947ea9dc5cdb50abc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "eede774fec34531800275d869173bf97c60a132002d9cb8f6ebf9ab5c003fc27", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "de8ae2168992ea50bb318c78d51a399bae87d283f3c6c60f6791d86311a0e24c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "ad4101591ed5f26078a2697da51f87dc931e59278e52ee84786f47a56c1f252d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "94d460609b8dfbce469a055189cb337b71c9808e62af5fdbf2f664c91db10224", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "2035aff7cf7ecc921708e09e1d48e4a6fd5c73e82730c9e91a1ecd451a1f8253", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "89cdde39e2801dbdfeeb838448476d128dd7a1987415d766b4c3b592c9065283", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "944e428f5bcb65742f14babc467cd12fdd5d02103f0b9902bcb53a56f08c265c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "7760f1cda693a220450b0ddc070ebf57fec1097381e881811c06a858e8c95044", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "845641547c19960d515d2c3cc4eb935f2d126a007c9903ed3b7b5efc0a0aa2f0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0763f07344dc00b6d122dcecc5988a42a802ecbc2cf01b5b0a3245506541b451", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "c3fa783f98eeb88821c33ab07c73e8297c850f48f781a9d7872c6cf2117df5db", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "c3fa783f98eeb88821c33ab07c73e8297c850f48f781a9d7872c6cf2117df5db", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "62b181d2dd042862c12241cb39428ab630c1dfc06d07cf4a0e6ec8648b603be7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8dc087db2ee96e81e06c36c98b52a76b2e581f6138351b85b1fc2f46ff93b3b1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "82595c24e81740c35a7ca87396dc4f902a748cf233b9816088d50cf5e494f079", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "839e2dce1c7b5221512f2ddec3e433aa0a3ac02ccb66604292eaa5644aec5e57", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "78bb0c343b0aa49bfd1b0dfb68c9780e65f0595966e90d32d1ef0e774c8e474d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "26d7709c75132c6758caee2db4e4b81de18dcb8bed19cd80f9fe3b35a283e1bd", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "79a201b629f372086e613154b9ce58258654cd65741869712c40444d926ff804", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "5adbb0b435bbdba45ce36a0fc688a9300079ca6260206984249e0a5201e00958", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "5adbb0b435bbdba45ce36a0fc688a9300079ca6260206984249e0a5201e00958", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "5adbb0b435bbdba45ce36a0fc688a9300079ca6260206984249e0a5201e00958", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "5adbb0b435bbdba45ce36a0fc688a9300079ca6260206984249e0a5201e00958", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "78bb0c343b0aa49bfd1b0dfb68c9780e65f0595966e90d32d1ef0e774c8e474d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e0aeb1b56d85902f820165f5cee4351152fa38a53533bab13c653ffb00a6ffbf", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "7f5f47b4a8084b6233b3df418fb9dc0284e62d32328523fc37a132ccd7cdedae", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "cc763e2129125e3f791ea9cd6273eac60c731458602788687dff765dd80dc611", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "c009d8e42b7ae0086f2f9a61ee0df3c3a6417b4fcf0cd5e6b4b4f894aaee5997", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "6427a4f338c88dc34052e31fbc0af542c9094191ada315da890ee6bea560bd01", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "8f8167d300f17f116b0c6e437476550e434d35bf22a258de57d8666edc40fcab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "02a11911249a9d3ad7ded40d304a96c419452f2b5b3a0d25693e80e702150e1d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "82ba797908f13f37714f0a42c395d96141ecc781fed91a22c324bd3cd9a6da8c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "8c108567108a9306d2a8e20c09a8504d1c3c4b8e1929dca1867aa0058ff5ed09", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "0ed259af131ba03f77e549711c7f3ae0745899a126f53e2b565261777cf86bf5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "c4d22b177c4a6028dfa1a840c71c55c81a0711d95fc3972ea8bfc88bad88fc37", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "c3fa783f98eeb88821c33ab07c73e8297c850f48f781a9d7872c6cf2117df5db", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "a75b309a16fdc48cf60bbc72050d6fbfc75144a2204c92f8ac218a2a9f035e0c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9de4f3b7366fc6988eb34bee4e18f2b39ebaa2d928d9a01f298bdca8e576b7fa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "3a9545e174847549429dd34e4e0f44abd8449b4cace207cb020d0d14779a04fb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "09e829a482ae2c4c0f72f68594fa3bf6d1828b3457d02c4bd62cb629ee952a30", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "0b6b072f11778c89ab318a941273ad6c8d839a6a7619501691c3ff479ba3a948", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "35161319e610597d579644b731145c484754cb9f2d5b53265376a5311f0696ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "79a7c62f18bd12869eb2198e1f14307da6ed04372ae40b56cab01af46743eaef", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4019787425b7f0d86d9b656e586296cc80c8b9ae5aaada1effdbe439dc248525", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "98695d8e4bf27298be61d002cc80e0f0f522610da279d4bb4fb4992d7a9a508a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "76c526aa7d39686d934047167575c57c1f0c577a4091cf453852490f67537dc7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "be6e4c8c00cb3e3b3073be4b5cec3c7d519213d2eadc6eec76e0b91e39984b21", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "88e13f9cf23577feb28bc62d265c115064fc95f0f64e8285c172b583bb0a3e70", -"T3T1_de_ethereum-test_definitions.py::test_builtin": "913e346b05c16a63a19036fb79341c5acfff6f9f179c834d9c66c50b8d088b02", -"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "7507b7a46d84fe2b24e43858c2375dc6659327249c4da36fc31b946802b04a32", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "fdbef8af8f1e3051bc2e063b0a90136f53b619c8c15ad4bb3455732195dd725c", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "c48b422ea5ef851abb464939b94012880cd760fb87b5f58483be602155dbdb1e", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "e2d4182b6fd858ed26e714654e2e5fe5b28ec47c84035094427a18e0d29bb4df", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "c3accf4e99ac23996f36d5c31f99a37419aec8635feec3a661d820549dd48da4", -"T3T1_de_ethereum-test_definitions.py::test_external_token": "2ea23fb1e88e313d9c04858ce34f48ca4fa54e1d5811a29bb54566ece0b918b8", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "09470feaf762bb071170ee0c8bc564914f236ca24ba819bd6b23bb7d69ec1dc8", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "572db943f659151a13792574e48b0001836f10ffaf6629bc182760da9f70400a", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "5e5170529ae94cd9ff6f388458dc78c986cd5be97ed4cba54f279aba33381151", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "7b13276390d523f808f795b0da3d4faef52f873c2babe2b1e03c8f71fa41f818", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "4bc245ba34ce20b2f7eb301314df30d44347c803a69500ec50ba8e89961c834d", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "21e7a5effc3b1bf4d3c9faf59a40b747cc878576434583af71e41276b2f72752", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "6d71368fcc6765bafc808730e4ca24f685c740f4cede4f6ba8a5e7c0c75398ff", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "bb9175b613fab2f47e85a3cd9f07e6e231796b630510a6afac9863ccee709b2b", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5cb140f6d9d3f49f25c360402994b7ca12cdf34d0a5aa66540cd105200d79a69", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "47e03e89c2214a6db682dffa38236c2e07bc7d0a3b9c0b63b604b42a3f0f6993", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "7e42978a18b1bd440c494582fcf1ad53c377eb12b63bb695a7b6b6c6df231f8c", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "1c8dc5085ad940c1b0da068f4d73b210317f25a03844dabf4e0e18707b769289", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "58bb77a80fa52165d0251c6cab1926de9db93c32e1f553431640f2001aff3dad", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "292d8bae254887fb2ac10fb1a97cc17633991f3fd48caec265ce1d5c146d0a7d", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "83f21b5fab1d2db7accc04787cc6af64e402a34b44d71217c4fb4d8601a5f9c6", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f230d08347a2c4c4629b9d5aad3282e8f23294a8a2de59492712fced32e60a5d", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "3aa712363ada901e8267c11878111c05b9fecdd7e6580ebb5185f24a99b735aa", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "eda3230f650bb0e354a8176cd588e221b567eecf76e6bcb1bd72bc796a43096c", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "3616f33677ba59216defd8f7eff4169a40f2c5531864a9a8d03d1bbdd718ae80", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "62333d9cfe42a4c01fecd82a5901f0a1d9b09688753675ea6f29a080ddbe3c83", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "d342c97f4781bb98d997d32ec8342c890527a06d6b78348294df7ab2b0111940", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "b13eee309e9d3d5082f06afe81ad5e2098c9f84833b7ad57ee13396bcf8df6d2", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a55273bb0208d422478f9f094811026da0333888d209a0cf03887fe7db2a9e18", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "62333d9cfe42a4c01fecd82a5901f0a1d9b09688753675ea6f29a080ddbe3c83", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "62333d9cfe42a4c01fecd82a5901f0a1d9b09688753675ea6f29a080ddbe3c83", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "62333d9cfe42a4c01fecd82a5901f0a1d9b09688753675ea6f29a080ddbe3c83", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3e21871e3170977ab591a71fc956c203de419b26cb7b30dfc24d6cde6f00af90", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "f9c765c0688231bf5eb798c240e3fb800f8dd7282b68e953b272798ba382b75d", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "c386078ffb8ae9ea62079c41c49c88b0119dab880787505b65df783b8a459545", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "e40cf2c945ef60a5fac6cc66020c1a962a79b05b90ad43467fad24a4121da71a", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "b4fe9a037a3b17af4d675dbbb53af2bafce57b0c693e02f87f8bab6b29f24367", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "cd0da74faf776c05ead27c471d81d4aa60ad7a86bf15b157f1e53b00bd5d4ac8", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "0b889ce8a52caa36dbac31e43dcc4a73de06edadf74eb185f6ecb794a95b3eab", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "306098e6b37dacc026801a9ff256a84295f6d129aa7876d517ae10c758a13b4a", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "4ef3a2bfb85b8c55522390f47b2a5b571e2d1aa161a09c5852a3562e19c20b98", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "9c868efc8fe699ddaacea23455ebf03056b951874d75e7a220af36444be6e765", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "71f038f6ce458b1654dbc391f51acf44fbb1b680b8ae66a973fedfcbe34e80e3", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "2bbd3ebe85f182556b9a0236deed89a8ff60977aea075f56dac051392ae46c82", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "43ee1724fc09b5df73f116470a665b8f53eb15997dc0c784be76006220be5347", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "0b919b16a8daada2618ae93e494659a116be4d6f23aab142c2aead63b13d7a33", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "ec79b33878f1a6f282c35554c1ab1b04c9d91e0e33396db65146433d9b69b0c4", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "29272a036c1d7f21fb7b57cd3fe15f76bccc35614a4d47845827d602d21b6307", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "02d017a10ce56e06a2a3b8b41cb415f7f97f23b49503ac2fb2c24a66f2d59764", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "66292f8f43bdddd016439035fe812378ea7370c82714b770dcf6fb7b15d66998", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "71f038f6ce458b1654dbc391f51acf44fbb1b680b8ae66a973fedfcbe34e80e3", -"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "e41460d482a8d93f8a4501fdb4c9c7b81bb69751a5bab4e844cf3740a8d007cb", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "c5f46fde3b21a5757ff64e4a401a4ef23df04df9ba8b0c4e10e9b98d51b134f9", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "da3b1a31529e4fa30a541c9d6d7690bef925fc52e354c5d57ffbc63c4d4b8331", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "1c6ae7a0b00bc4bc88fbfdf6c4bad810f3a3522cf08de0f2dddec2e33fd36e1f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "da3b1a31529e4fa30a541c9d6d7690bef925fc52e354c5d57ffbc63c4d4b8331", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "140d09c24583c094d43588ac82fd87b0e3bd0e7e2acef44d3ae1edceaa938b33", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "140d09c24583c094d43588ac82fd87b0e3bd0e7e2acef44d3ae1edceaa938b33", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "d250e2a96bfadd06bbecc35400f4577d4149df7d51150dea7912fcf5e11f7873", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "c549410614b4294e9bc07e9f0c3c19fc250f6f0fe366652ec58f96e968eb24b8", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "ecd51104d1b07f103808c18533e9923497ff4e141fe0170114fda8bd414f789c", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ec586afbe5d8e0d306400e6a6411b519f4aff02c1fde0a1257ed557166e4f3b7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "308a31210ae4e8104545d2b70a5efac60737102dd03bba751e48396158080d75", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7aecf6a3b4ced06983a74873ff20328842281c7a0b3db6cf4c77fa42c70eec40", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d27fc2d4dc63028b8403a0c126c8c780b0ba83743d743d557ec9cd78fcda175a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "62184e572bfa10954ccb24d2d00a81d69a3b6595280d7a3103e3635112b0feb5", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "ca2e6d2b50c20fe61913d23f4277831f61671179c6dc37b0ae04408d643ca18f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "8fe3cf7f610373693e0400afd8aa1b1bf1a33a3188670f552f2cf4c75ac419ab", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "12482be5980fb88e82946e4c9aba5a43384209cd33a54ccc61039ba57e3e77c2", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "8fe3cf7f610373693e0400afd8aa1b1bf1a33a3188670f552f2cf4c75ac419ab", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f858de4a7ddea78f05c6991fb9fe6740abfbfd751427838efd88f7dab11855ad", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f858de4a7ddea78f05c6991fb9fe6740abfbfd751427838efd88f7dab11855ad", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "79080833d02349b4c499dce8e82214d629d98b24caec21dd0cbb577424de22a4", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "d2c74e9ee93b4c6ddd1388546676cbbc666168b96e4e7e8a7658de250b43102e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "517f07381310440c2f7402f32d27dc5683357afe12ee023abbd2ebdae55d7da0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "1b4ab958a43792db71a85824895dd4d860fbd79034a28821351dc7fc9f695cdb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "308a31210ae4e8104545d2b70a5efac60737102dd03bba751e48396158080d75", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "0567e0917f8488bc5a05666d5b0b7b925ffd19825a3f475ab9785a6ba9090e5b", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b6f4c82ee0112ad715a31ea76920c3e2545365551ee88eefb0c1985abf150043", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "2fe3799c034942a4d54c20d0ead39e4b0cc8d8653b994c73792b062fe696c3fe", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c7ab323ba8efae710c0c46b064617a889cc1fb3a19346b2596e0043d9632f5f0", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "1e160f9bfca70ebfaa3a78b8e22a091c00bdffddbc1619844d5c11c06c885f66", -"T3T1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "20a6d009b70e026b6b899783fe16832ccb35aa913793be790de355d87abd9bc6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7aecf6a3b4ced06983a74873ff20328842281c7a0b3db6cf4c77fa42c70eec40", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d250e2a96bfadd06bbecc35400f4577d4149df7d51150dea7912fcf5e11f7873", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "b1d8926bd5493709cd6b2c95a5790710db4c5c0e15cad867abf667ebe0a4e2d7", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "ecd51104d1b07f103808c18533e9923497ff4e141fe0170114fda8bd414f789c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "f0f1dcabe1a1d11abe6f0c5f74b45fddc651ec2da122c865b1ebcafd82790ee4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "5f845fef5fbcc2d54eb69894e0fff0d8196acaefd7f965545f4d950d5a5cfd17", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7aecf6a3b4ced06983a74873ff20328842281c7a0b3db6cf4c77fa42c70eec40", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "0567e0917f8488bc5a05666d5b0b7b925ffd19825a3f475ab9785a6ba9090e5b", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "79080833d02349b4c499dce8e82214d629d98b24caec21dd0cbb577424de22a4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "3e8e0d342f285f30a3f9da519abc6c8efb3e13ca6c119167f6fa43b2d1f4f818", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "517f07381310440c2f7402f32d27dc5683357afe12ee023abbd2ebdae55d7da0", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "04b9977838b9acdda204e15debf3a994f47c9b6e5d89e311266c04b8d3bbd707", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "aab413292e41df81946b5d52a581344239a0a0bbd4855b12a15332f72c2d4eb1", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "0567e0917f8488bc5a05666d5b0b7b925ffd19825a3f475ab9785a6ba9090e5b", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a1471d4f910996ae7cc8addd2798532e3a1d2eac0b7d5e0a2f6e634fbc17d56c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a1471d4f910996ae7cc8addd2798532e3a1d2eac0b7d5e0a2f6e634fbc17d56c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "19628ad1edeb109010d0243b917493bf05ea17ac681414306bad17ba67dae7ee", -"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7a71ebfb03639dcbe9e086c1596019abf32281de7b532588f4e744e0743e5c67", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "104669014f8e414524387aea9a30b41d0aa4505fe93190f9ac83ad451c62fea9", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "104669014f8e414524387aea9a30b41d0aa4505fe93190f9ac83ad451c62fea9", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "bf1d13fdee21168c1a3fef5100b856daad2203e98d5048d5c3d4bc532a45a764", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "bf1d13fdee21168c1a3fef5100b856daad2203e98d5048d5c3d4bc532a45a764", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "e4b7da13e7d06660c25d409a9b93b050dc11ef3f90e3598f7f728c785dd97c4d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "e4b7da13e7d06660c25d409a9b93b050dc11ef3f90e3598f7f728c785dd97c4d", -"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "7ac8a30a528ea666e335e680d858b1e3294daf0c04fda33abd4e8916cf9d875f", -"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "7ac8a30a528ea666e335e680d858b1e3294daf0c04fda33abd4e8916cf9d875f", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "4d435e5f9bc4929db28d8239b30644933ea07ca047c663b7804d831509ce9331", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "3c36f1da563d392cdb8c8e2af97cea5af18cac79db88e93f429eb72ad1be3a70", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "9a8e81df1a98a683c77868ce9412d898ae74fe63c46b46008aa37b6c9d958717", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "db1c9df1b2b602dcecf637b05eb89bcdfd87cc95a398986fb3318119eba5bce9", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "52c66b37ea58800540f4ea216cf7884c88ad0d5d684864020675033918e76a40", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "5b9875eec7fc0b26356f291737da55c142c560b25876860cec74deafc7e64b46", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "4b6598fce79f7f97fc4d43cdf5a0e1c679f9c69a48294541c39ff76d04181e14", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "c641c0e150f06d73702ed6e8584102d8d9544e45d7599a415efe6268cc6a3e22", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "5ac0ca426eca9f2dfa14f89c1cad72830b5492dc0ca53fc47d28e6d0e0a4c26c", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "c87f1228f62c669f9ebd527f89d75404049547928e1fc6391c5955044f5ebda5", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "9ce069ec6c09653d2013db0b88507f252e0f846bf6a85afd591638eba451d71e", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "6df9bfa42a13ca319cf04e169de62e895d58edc5c4df6ca1ba76cde3175a17af", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "57877093765e3ba1829ae6f11920fdcb1aec2e9c0a532c4a86694961d11be6ca", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "f050864902369811040c37df85cb22b92d71b25ffb8347256f46c79811074f43", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "5a7c393e5f2b5091d487fd43ccd34f29898239dd5f5fc7d21eeaac6602503433", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2db7df72cbba79d3750252d9c42212510140d887d19b495f28b16d4b51b9b393", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "f274d710066d5c314e907aeb32e3483032b664086ecb857d16a4922212fd56e2", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "03995c96a8151bd6d646280b483bfa88c807a0980f8ecdf5e25c9a9ae7042bcf", -"T3T1_de_misc-test_msg_signidentity.py::test_sign": "b5c94bdc6a1268e1f52f81eff2cb66fef4dbd6b414cee2fda745b288062bdde2", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "3bedb5d4afbeab77e28829dc2ee3756198717284a022c62a177d6ec24bba4251", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "bf40575800501dc051a6572f97afa3245a8879856c1a7b7287aa279c7a010a6c", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "8c4daf241042d7c01dfba84a8da2e9ad4df455377f96c56ba3933e17c31c0948", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "a59260291fb4a9558a3facfcb8b89ee5f0d71f2e9a30fa36b73d7915db111129", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "9d5174215908f560a36bf481e1be810080f565c8c8d085bfc4c677c629bb3abe", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "3f25c1f293b1e8a4389848d5369155b4359ff51f119dc994fe5efe1a5a6d7539", -"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "2cec14836c413576d5152dfd24d24561d6677fbc0bc2c17f3f7053dd62f912a8", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b645b966bd46850db539cc8e683f631726f7261c444742eb71908f97c5b70156", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4464b8010e2bf9592871a26f8fa169ed70a3d7d445546c8be0506d19600de981", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "a4cc9056ea9b8991ddc836e1fbec7fc50723524dbddc3d77e63bdd04b0065be7", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "3b6159a0c4998b97d47272ca5eb8535fedbf6eba87db6d4f2eac298c67caaac6", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8385543f01e230becee4bc5e8916e614a70f13aabf3ef201d185b193b5a73f30", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0d1933d7f92f0f39f4c237fbb49f7d4327da627e92af5138c291a2e0d4b79b89", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "adf1ebecc6f1994986695f440aa333c6ebc7a8c7c24085976784d07a9612d31e", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e02634af6de0fe0ef885bd355991175c112dd5150ae3c792608cbddd6c9f0d16", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a99d7454691bd70d701a867eeaacf4b88bb367bb84906dd06cbbd529ce70cce8", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "77f908648074f6e03d1c362b1a5e51ffcda14c8f05a32480ee49b7d8fa000e95", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "6cf7c03732e8beb888cade336ce2c1d918c3287eb34f1f129f1b97ce9c3fd0cd", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c70c73689c7012ad7381edaa530c9e6f3e0edcd8326e1d518f5e79af3319206a", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "3882ec3923481f43341f143b6d70aa4340f4cd607ffef0c07aa78284aee6333c", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "2cb11002df0dc1b9cc44287a02eebe1118e1800860064649cab337b2478b3ce6", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "77ba9edf98c247a909b40cd90a092b8b532e606af6f4eea6fb962a8645772add", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0d1933d7f92f0f39f4c237fbb49f7d4327da627e92af5138c291a2e0d4b79b89", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fcf686f6587e3bdd85dbf4f1218419e835de4ea6a704d5efd2af4e3ff30b7d04", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bc8c3d50be6d28156c76b9b15a2e675e7ec361fa4bbfe00024b37c90f0bf6f16", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "74b7d4339ef9b354b093f2dea09ad9093de86b6f4cc6497862f8403d38347044", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "490a3d9df6118639acb3f660ae81c6084c77be89121336061c3e2eef4365e0fb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "efcf0865d027e0d1fc5644e6145e2a28c87d15010893b4cc5ef8aa432c1e058d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2ab094656e62c738b7bae58b61661986172404498829d5631ff8130b0488b58d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e19a7709632559bcfb3284c0db4ee78d73fe18aee9c64607e8544be9bf459336", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "800b13d6475239afcac999220e9e0e76b3d7327107fa4c5054898e81381ec240", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "705d7c97f9f3b84a1c6a1c77d53a0e6eb41f71e9d000401614280989028f92c0", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d8eb3a479e160da63ce3a11b959a2f9b22f75702fc1f3f4bbfe8a8aa5cf07b53", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f0fc86ffb3f74456a9c6282789bb4f71a319fc125da5fd5616636e311fd23eae", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a04bf47e9b8ad1f7bc6545f6a2049fb0bb4211f66d340a501367eef323a173ab", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "093169b644e8cc008ea7caead9d2b1c59c18805359488924c501f90e6f5cd5b6", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a56344d6a6c46392d9565ce735add8e44e8f88b7eef39a2377f89a4463e3121f", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "275d962f906bcbef3246543bcf4621debc70f0d3cd79e9a0e3d543bec4361545", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "b5f858d874b814ce5a35fc1cf50cd0aafc521962d9d91c57c342813d7146f926", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "05883449c72ccfbc18fafcf0ceab1706bcad730508d5bda3d52966d8cbef6c6d", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "ce55afaceb64b9996cbb9235f3f9ec8e61fca5a1fb3c147f32c3796931ffa395", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "56baa91ccc304e729befbd8e086eecfaf88560babddcc8920f8f9096688dc398", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d8bd2de90bec49d4175cab2f5104193f754f672c99efc83a0692c7d13157a7e7", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8ae6882dd2413c176b79798b2ed43bec9467e0635817ea8b848f04d91a7af7e4", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "288e6316b865ab767149abf5bf65dfbb71c4172fc563094e7651501946973643", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "bbe31ff7cf9cfc2a4681d402a242d3675d099a396e405dabc3b5af9bd259cfa2", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "004c633a5bcf9a5168ffa0e6a1dda32692618ef8c477ad1c3d63a88b3826cdcd", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0348880a4cbcbd84129baa89cc279aabef2e31dcb9e0fcea7355d4bdcaea9ad8", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a696bf49c6f69be31ab25db057fce855d985f356b509733c4db821f8de68cbaf", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "12a84a99620bdd5d05a90c2e90fe119cb43e6b90120dfa5e52bc061da5206fac", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "58a875a564314d2325d564dbc4d810c88804243f0acd9638a92fcebec26f9212", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8d695d0baa80b750459d15582320957cc3d5ea9be95bd9ec36dd861b4946c8b3", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "232772bcacc846b2cb061cbdb319be5910c7547ef4f83a4c03d4998a1e334e83", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "aa06589dba4bd9429e55c1981aae51bd6e0845d370290dac3900e497f2f7dfa1", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "dad10acbf89b6101f57d63b88865229f1d515e6c2154991c9c81e1a567d296c1", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "76ca027a6e06c3804a2000fcf8e7261369e14dd2d2b4a149f9b52a05982f0d51", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "ab04df990bc505790ae24fe59222e365b5658560ca5b27fa3c69d426825ff9c3", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "a6f70bbfdc5aafd9fab725e7b5c162cd3a5b101e63559fef90551ed2456529e9", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "23299d22f676d237e562a898a1b4f5e734cf4de3551695fe9228a2be92cd09f0", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c914acc2e5c2cbbf371eb5f53d24e2d2d1c4c3bde94cd1da88c9ea8ba9177867", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "eb6403e30469a4706ae708060215e6a12bc56da91c8f1b99aa07c9dc6c29dc4d", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "266b8b8d59306866e1fc51ab0c565bf34b02195f92ecf26e071fe5bd9cce1113", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "d757bab1953deb8fd4b6863c494697b79ccaf86b6d7479f05eb5cd3e4cd9e7ea", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "c0dbdc4982b57935aac587d91b56911078ef5ca8959d3f347d2da8e15e7319db", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "266b8b8d59306866e1fc51ab0c565bf34b02195f92ecf26e071fe5bd9cce1113", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d757bab1953deb8fd4b6863c494697b79ccaf86b6d7479f05eb5cd3e4cd9e7ea", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "c0dbdc4982b57935aac587d91b56911078ef5ca8959d3f347d2da8e15e7319db", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "aa44fa1c3791eda4f48d30a4f0bfc70d90b2a88dbe4e20889c973fd95e5adbba", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "c2e20c63a26cce5fd027aabcf6967f40ee68d9797f6d50fa608db60c8d1694be", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "b436dc425a8b63130a96f9908ef152b59f90a849d5428a1c85da0d2f3163bee8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "1ed68041a8341188141baa3d48a24a293b16dea555ba4d2ff3719e1af1f35fc2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8a81c100a8bb57e427ceb9b79c4762ff95027b8b72815bab585c26116c341555", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b6ee642bb6842905abbcae7d714ed4bdbccda7355c0eacf00d9c322b356bc5dd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5e66de9c608a729b1df25322b9a5288d669cad1fad19af622aae1732462f1028", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "02d252639a38ea95548186237efdd3dd1b4452fef3fe3ec908c96c9a1dd96bb5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "33b0bdfda77467de5f097052b79bf7e9f12705cbcd3cd622abcb45b165a63944", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "e715005e0993cca12127458aad648618ee0029647749b671c60887723eb266ed", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "347415b58246d51fc8cf2dbe1ab5945bacac712f6d20cfb29ed0a0771d9cb153", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "a4771319c07e0c7a46b0effcc010c4bf5f67f41108be9d5d11a062fa1d55d5b6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "5650800e95ac8cdbf5ad8e720119e29a989f32a2e05f60b105d349ca44f724aa", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "58c599a2794cf226aea6bbbd4a130c92c1e7e9e76f7bad1438c1376df90b5853", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "9dac340827456b542fdc436b430a1d6d6b477ea9f6446105c08d1bb22782247c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b1d9798d807560f72e431b99cf3f44c88e708f9519b35b841b83d38052454cd1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "1ce6b626cf4d146b23e172bf3d9a9e2ea1626cb6842e7eff70ff59c130cfd8cd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "71b7db72d0f7de64d99b59cb81155b46de34978aabe37eda6fa57c52c76346e3", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "776d3304b712a3f0d9704ac4dfcf62f9c0ff1f84a12b4d501f1784881ff88371", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "484d6b78ea877112aca2be7e43a6fcb7c1b32a0602746d9f30cf07b038d1ada5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "677b013bc4fad4c1ede50f3b7d28766f2b54addc7d5f852e7d28e21bf2ce8cde", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "677b013bc4fad4c1ede50f3b7d28766f2b54addc7d5f852e7d28e21bf2ce8cde", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "8b81c623824c65178545c39e745e1202dab06baf4b1c853ef6cf3c40a7377fac", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "b83bb79a0ca0748cf16bf0daf437b832126795b4bc16ea22c3154404285b2b72", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "505a5a66d0c2cca2568d7d2aa65861cf5632fce1be646cc3f434b4b546c29032", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "74c1772dae588cff1d11490b6327f1960d593883b8ec9ffd8d797755a492db78", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "ceb22393f80336ed09e2ed5b207d5fec7cf76cc6130cb908d6b2b25afb76b5b2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "7ce4c70e6a20ce6c18997e5a0831bba36e47fee56224aee989cddfcab69bc42f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "357ac839792756cd012e364ae0398c500ee29928d25d8cc3a392af7bd14f5a52", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "4b485f1f337f5dd4a29169ac06a37d8e0915c5c39e5c83cc9332392b6de9a230", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "a165cdeec8022733c18f6ac0e35a9f8503d7166eb287d96d7d4a86e800e3bc30", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e926928f2d8301bd80c772aec8a76597f7e45d8bf46828b86fdf101ca6a39eec", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "09ded397ec74fd17e43432236428ef0ae9dacde01dbac1bca250163d8c23a223", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "a9d833eaeaa330f4676c7306349ad97d2105f675a21785e5b2e956c2716880b0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "5dc0b2f18416824ea1312b2ed6880185532fbafee9480bf8638e2403910af6b2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "2e9dd75ea99f1a8cf043100b232c0415080448b642c59fab594d489bbc82dea8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "bc537ac7adb9562534af3b3986498d5ed967681dbd80cf7285fefe64965ed3f1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "a3d240e51cf69511bb40c336ae3d2aafc488bfe3c09eacf65698dcb3bed3e605", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "11a8b47c5bcf67bab874cf3eac56bee58501fe212cfa2a3747ca78b0fc049011", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "77d2ae475e4343598e2801411f83684d3dbfa63e7e4a0e13a0a1097bf199b314", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "48d328cb582911aac6489c0fcad96170324577d7248bce6b7c9c2830241d2f7f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ab2af8b413d0689b33fe202dc5bb1aaeafd924fac6b0da5a6ce0823764812935", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3d198a14ae0541e608bc39c78592ef9ed4ead3fe75d54d89cadbc2af3e71d2e8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "3f3c99433c3b24505bd06eff800652a12ed982f2b215b60818c4486e761ea8af", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "0eca3342ef14bdb981d83285241f60eec8bb595b481ccee9455d55e9fd6d9dff", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "bd89437c813dc4d06463d750e989c23f9f97784dd013e5d09dbfb73f1d8011b1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "16796cffcef0b73344b878b16fea0e51efd2b3410454be3a1fe01a61c5b5f105", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "c1e7e7c76200f0888a22d04a37d2c49611aa596304c102b2ef74487c77bebf59", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8eafd355d6ae116947fa719ea2a0801c00f88cfa10260b4c0dc7bdbe6131a4d9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "05531dc2f48cbc94d9e63854cc5a55744b2eec43a7b199d7466e0ef1b4b9a0bb", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "cf351dc1b5474b75ac0536f59bdebe13557bfa8a7483e965bed5822dcd670676", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "a6d1786950d2c4dfae978a65c1ff1f2d994bbb15b91db937b7c1788df0ed7d8f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "b9a243c08945d870354f16ed7eed3c7ca720791131e0b99e9964f5d8d61ea961", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "1e204a31054c21aeebb0b78e23585b6ca6e7e8b1b0f26185c740b03699d60e8e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3868e36adb52e42f80a16f7cb048c504def9369f9e61cfeb8ef77cc33b86e383", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "f692ab71b8c8b9eb3bd67bd250378294edb83da3c2d8dcc7ba36b48b58d8cde2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "f1bd4521d0be0a01ef62f60c8f7113dfe6db2539a1fd7f6f79e18c7d1dd9f2de", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "4974ea51ac87bae8755040d53313f320b5015b6ae0e6350f5b69c9ce0e01a78a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "ede473cd78e3b73b62975c9d6245ce594863ab4b5c7d7255b93bf6493de8ac9c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "505a5a66d0c2cca2568d7d2aa65861cf5632fce1be646cc3f434b4b546c29032", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "0f83197ea5b7eeb4ebb47ff54e1121b984d92bdc46b9ed38a02252f00aa36bd0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "b7996900b47cd2c403c957ddf7214ec866725f5062a6953460c6c9277912b905", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0455b54bc979f17ec810a3fa021ce332411471ef629e557d3786fd0fc788f8b7", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "02c5f4117be9421dd96fb1d856705ae7c4a2bf6522d82410139db55cfcc1ee6a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "55171a970f93ec0622afa63ac2bc71c6e49b75efd7db86139904abbb78760fd6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "64cb18c5752cdefff368bf796cc04456d677342c85a4a5f8a0ef233429e39c6e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "4bb7ab4da5306f35d75dc4fdd15d35bdc094d626ac289bbdca0e7fc43b1216f0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c6fad6492415bee7e45c9c9844f7dd85c8d239a8ce136858cfa96aa95e02b7e5", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "7439ca862664f9d620c9f2f7b32113d3f12182a1e1c47473a3ca1dcde7afe612", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "0b9e2ae813ddceab5966b089a91d6a98cc8018ef11df7ef909dfac08e21cdb51", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "abc08bc5fe81ad863a76e2f6d27fe3d511a8d5ebb1b9983509109eba8907dc50", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "a8282a8551202a79f344ccd449529eca7231941dcd2313e7c6f78785538c03bc", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "bdb5e9387122480adc20acd4920246f81846324990b944d9e080e0478336b3f6", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "904a57a7ef7d4ebce9a0ade157296b5651c45d39c360d75f645ebcf4e341b1bf", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "e75c6474b9c0c6590caaa2cf3c7afb9142213a562423b80476e1821cc813fc0a", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "54bec5009480e002dad61c941fb77f40b9ccbf739bbb675af19bb96293c9aab3", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "aa8bafb102de05b3971df61764a9eeb9947f95f49c80805cbfc6b2af881a7c59", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "68411aad5913f74233594d36a52841ad59e44fa8b2710fbadbfabd66b73f73e7", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "b77695a9212d6bdea58f9fdad0eaea531af04b8688e8ec21ef4fa19da496ec6f", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "d98a925d275ff1370a14faddf1df2b89ec4955df42a512ea9f90aaedadb871b0", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "c2428f2c4870d660072a59163bec6174fd75db2ebf9b4c4c6b948179587fd58d", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "401ab90c8c17bce465cc9855089b9414d46e8216dd333be417dd2a073f2e01de", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "371de89c8647a978f5ab24e71c98c56154670b4d0cd42349d4d2ec32a2ade876", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "7fafcff3e4de94d71f49f6138726702d66520d6200ec571833550d4ffad6c8d1", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "cefb7edb23a05488ffc132a02f384112f75096cf7b2b4295058c20db3673cec2", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "79995728442aea2d050f6af0d57894a0fccd2f204e9dbeb2f7530ff82a88c96c", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "5d1152f4e5f8ed6a6ec41dab341b7dec5366ed5e26d87ea974ddb33228ef7985", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "174cad2ae325b94c5f2c954ddabecf485a3eb8f34772ca853eba4608d53b0f0e", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "6dceef0072f699f475faf795c09ce922a0463e0a9a124a019d86eb90816c01eb", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "63477a2f945a434072477528d9c4d08a4df520e4cc3832bd050dbc8b4560a4fe", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "bdea893b77bc93381acd8ecd992c89cae08d61936bab553339529dfcc9f333a4", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "1e23be6c23b61b79feaa42520b07716a21a218cfc997f80467a530af5938a771", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "96f06f1ed61602843612b7ac15a767fc957ff0c65e016f5fd6c2da59bc8a135b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "9827aa1f52d8578154cebd3193940d8b38ddcb4c0021d9717f339cf247083b20", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3f9047238e705b58a8c1cb692094d6b7f0958b499bb977553874cd4344f13e18", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "d399204aee0e309d41a04c122aa5d1a84c948a0c0909cadd79fa1ab7c82e5059", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "f53177219c8549055a2faaab1d784a2ea33dae91e1695fb2c48a1d330d3d0666", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "904b3abc54360e50c2f777a441145e6f921e8775872a08e20bc9c6e6df84b1ca", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "acdf64cc0b7650bb53b033872d9abcd5945dca8ec9b5f7426d62f612cdd3f5e1", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "eee3e9274472db323569957f3ad9a9a22fce535568588525e4e677662f3e59e1", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "6a6be7a98827ca8c1aab88b4bb24d4eba0dc2fddb1e40f9b910a8909af17dc2a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "ec4bd3cfab5749249d15baf6fa619d376c24279f00b927805a1545b02a546b12", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "87662ffe0257690bcfce4e143bec5ad045d3fc175aa95393a1a8238b09b17133", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "42fae71f42c0cbd21b7c94bca2bb3145c5f79b0bea900f12bb968f17c683ad49", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f5ae47e46e158d5e746c38d23d44150532fc2822bdb7fb66480ecc175a652810", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "772bd6dac319ef419a487f1e72b13d7672123ba1cc6321384c0e695ca1b475e5", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "e35c88e030045a5d498a8dcb1f93f15ad304c71ec5e00675be9a23ae530626bb", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "c8dbb1dc58d5bfd9c594f1f09f612d236fa0951c3ebc7395279f25d5506bc967", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "87066a422b4a3e7e8963fc2af5eb1e8684a5010663608a4fe75b1473b1d10c0b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "cfda8fbe504d011b5c2d89b4c09b9b701055df5f3137ce1f8385ca534a0e8b94", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "dbee5f777d7d78b7e90e690b6af42b7b1b83effd073a3eaf41f50ea133d65a0f", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "76f050563d6ae7ce1c85436fd994ea45b30d1d20d2e1fee6a5b6a783cef50e03", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "7b6f094869d6d034c6050888b5ecb4a8c410633823c61c944a0ae26c781c3fd8", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4d25f2b1db54d93e55ffaa0c7c20871ac7b1b1b889db749a1569108d45716dfa", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f777e99f00b34dfa766e56180c7e5046b65daad89cbac62c3b22371b2843603b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "17392c4efaf38976a7b4fa5d5b26d7668f6b7ebd6173c26bc1fa1367b01b878d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "054aa0279a987082217fed044404fa8a17afe83b92d83f36bb96a21a27b98752", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "b099822161f6400328944fb11afd051ad4bd7617a9ffc64b86e515e675021ae8", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "772bd6dac319ef419a487f1e72b13d7672123ba1cc6321384c0e695ca1b475e5", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "d650cc23e28e36c5491769b53fb8a1a208ca7c32b96b77256db360818553ec65", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e262e20eeb06ecb849694c08a51944bf6bc6a168f49d5910cd5af3a30e9090dd", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0b39d2bf40b699e70e2cc4ed6989213f8bcb484f98adaab8a71cd977f28f7737", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aee9e1033dbc5330d189798f6a3acfe6816ed0cd76d3834609c295a57c758b3d", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "6f5227af92a7581bf1868dbb7fc458777c0b97f6b43fd9a93400284566e07700", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "9de91d001db46ecd308c1adca338063e4cca66cc13d2ea66249755b7ef1bb313", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4d95f8f6d617a1a088b7192a4dd39eff2e25648f881ff6a2fc79ab7678980ed4", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "ef60cf1a41029d32b71f1c910e8b86e7bda6be9ec88f131751662356ab0ae0fd", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "ea09fbf3108406f34b2b6abe46d8e16e069fda4b07f83bd9060e4e2fea3597c6", -"T3T1_de_test_autolock.py::test_autolock_default_value": "741debf3c6a09613f30788095675edbeb9cf8512b9b97f239460cbd45ea014fa", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "c0faa90f695b8798d897317bc23a72fa9a83580bc6442406c3f6edc2fdf9b78d", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "c0faa90f695b8798d897317bc23a72fa9a83580bc6442406c3f6edc2fdf9b78d", -"T3T1_de_test_basic.py::test_capabilities": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_basic.py::test_device_id_different": "92363bb8c8f23b9f81f1ce004de2e911fc517b17f63c7866047e257e414342c1", -"T3T1_de_test_basic.py::test_device_id_same": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_basic.py::test_features": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_basic.py::test_ping": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_busy_state.py::test_busy_expiry": "6b1aaf7e1f929828e5cfea061dc615d54addd5f136b003b4256d8f9a371754fc", -"T3T1_de_test_busy_state.py::test_busy_state": "ddbc2033edf8004081b0160ea76ed8f5aef7310bd456e624ef13632a3bd350eb", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "c214bd92a169d4a3bee4e28950dd5737eb2662ad002a651aa16c23a987ce0ca1", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "c214bd92a169d4a3bee4e28950dd5737eb2662ad002a651aa16c23a987ce0ca1", -"T3T1_de_test_cancel.py::test_cancel_on_paginated": "a57b3a7a90612b238f712c1e4e7cde1a79800fbd7762b8642bd5870ea24d0bc0", -"T3T1_de_test_debuglink.py::test_softlock_instability": "9fa7657aa757145c4c25e77c144f9b66e796e9421f0f9f4a322995d7289d1d26", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "3c18afa823fc44b6b4148132b66de0f75191f796f49d006f17abda14c263ce93", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_language.py::test_error_invalid_data_hash": "6a20a85ca4fe3deca178d673e1938f83e3404c2c0bbd2ccb153195f437ffc2f0", -"T3T1_de_test_language.py::test_error_invalid_data_length": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", -"T3T1_de_test_language.py::test_error_invalid_header_magic": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", -"T3T1_de_test_language.py::test_error_invalid_signature": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", -"T3T1_de_test_language.py::test_error_too_long": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", -"T3T1_de_test_language.py::test_error_version_mismatch": "af58d0675976ba2b8e37f5fc6d92cda3978a7e6797a55e8211173e3879597217", -"T3T1_de_test_language.py::test_full_language_change[cs]": "c40fc38df66b442cf658270a6e2b0d2cf6e083d3e85fb83df87d4b7b56a8c0f9", -"T3T1_de_test_language.py::test_full_language_change[de]": "394f3baa7e308ea95261823571b184c91431d779562d090d1b3d613605325957", -"T3T1_de_test_language.py::test_full_language_change[en]": "cfb7fcc764e59a1cbb0fa391ce18d8ba73c32882c931a1e3112dc65c913af558", -"T3T1_de_test_language.py::test_full_language_change[es]": "188dd44f237b2ce71269e9fb9cfa66a4e0ff23fd56322c34db6df0bb33b2ec86", -"T3T1_de_test_language.py::test_full_language_change[fr]": "4b947be7075e2170428319fbf29963b27daff56a20fddb790209671191f3c6c2", -"T3T1_de_test_language.py::test_header_trailing_data": "9d0e4d400cd7970951b1fa9f124ab638e14a771ed117b863cc4d8ca69c53b1e1", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "a512a76f1bf932f820f085e0b9d8a3473d5b067b2ceaad98af777ddd66babba2", -"T3T1_de_test_language.py::test_reject_update": "31b87e7ced4dd70a5e47dc224db0a56cfcaea700f336372815574100d1a26a66", -"T3T1_de_test_language.py::test_silent_first_install[False-False]": "9573311a2e557b29646a5503482249093edba4acbc02f69c9059ec6502bdbbcc", -"T3T1_de_test_language.py::test_silent_first_install[None-False]": "9573311a2e557b29646a5503482249093edba4acbc02f69c9059ec6502bdbbcc", -"T3T1_de_test_language.py::test_silent_first_install[True-True]": "9e36bf87c07aceaf51face1a2a41d8d25c9bfc9b26b48e977f4b08236a30bf31", -"T3T1_de_test_language.py::test_switch_from_english[None]": "4080fa9659f16900aba05c9aae2201f5831b8c3f28086125e49c99faa2c3ec29", -"T3T1_de_test_language.py::test_switch_from_english[True]": "4080fa9659f16900aba05c9aae2201f5831b8c3f28086125e49c99faa2c3ec29", -"T3T1_de_test_language.py::test_switch_from_english_not_silent": "4049561bc0f2fbe184e64d558488a19138c8e2ad28900b94714bc648f882a1bb", -"T3T1_de_test_language.py::test_switch_language": "1b72066d4e04dbe46f26f088c4a18c8853b01115d927c71b9f928dbfc6a6ca4c", -"T3T1_de_test_language.py::test_translations_renders_on_screen": "f6743b72b8ce5ea913e7f48ccadfb8b45eb1a21bacc812fca7d067265d2b23c5", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "d4a96a4db02f4c3783dee67cccbe57bfb666637aa8db68abc29c8de87a71a5f0", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "cd17bd1855926901095c01d6da7fe87484b9c1fa88f965cdeff8fc6ec7559483", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "c0b201207c1d23f1232bd88665495a219932f0f7427981368c8fd32923c15b7f", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3e0fbb7d180d785e329ded2df7e886870b2982ced9037ebca6134cc465daf6e0", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "947b3d32e1d6e4b7f64299f53907f3b76ae6f69f8c9165560ed6045a92c05c59", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "d72004795cda7ff4b951c52b53343215e4e2f33782851a60ce72f6c576af3ced", -"T3T1_de_test_msg_applysettings.py::test_label_too_long": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_msg_applysettings.py::test_safety_checks": "a4d80e4d9af887bed0b6189f661fbd7ef1963a6603f6cd19d691c87436900161", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "4b4b26221b1928d33922887c88a06a10c8b539a96909dcac47200669daa31c77", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "9cd5c14e555486122d07fbda3c054824e542d74365eaebb007af1732aa2b407b", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e891c6cd183dd3fdaa29e205dd6c9af59a4fceaf887f3ae6a7655906c2001338", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f0290d031882acda57aef1ea2fbfdf67379988eaca7fae8f2eb31072e369546e", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c1a2a0b031b31f3168075fa001748d2dbf11abc53342d5590cec17867f8383b7", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d2f72c309414f212f481d9d92d3f3904b3faf18aab1e4a63e460e90867a88ffc", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "8affcd975666d73b7d39fd632e81b98c20b2151de9fe102b4ae1ec43f04a3976", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fb26d9d95c387d61bb3f98eb75c0743bbb5b9b3f8abb2fa0ebdb068c7c993627", -"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "e073d32b9a703688ef992d6c086d3ab05982da280ce7144a9a69b61b9bf31ef9", -"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "2800146305af076fc090d99909b415ca460359d08f25f2c0892137c07756613b", -"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c408aadfb3531f525b7eed8dccb90fe89addaddb3dbd652b89b2e3c88e254d4b", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ce4682f8f5b6eb6669c65d26d9a6a1230dbf669e99f5457e8d750f7432187d89", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "57551c93e520706abd48710c9277e52cf3599470fc309c02744bf3f4e51eee7e", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "6b9160ef57f0992145f1b0fc18939bb83c6e8984b065af8d8d2c763050f24019", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "4cd2cca8836ebc77b09313f05f905d2b9f11c8684b2191242fbef92692433337", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "306ce6895ef75875f16e4f35b3c5f05a004bdd67967faad504402d772b2f0cef", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "bb540789300781e12ec7b711f142ccfcf2f79d6c5e7ae98aaaba54cabf722e5d", -"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "8213ade8e7cfd4e496e6f28dc5a4c98b924a09be32930deb694eb1467bc5d490", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "367e749689b96e5b0e3fa39ff8f5378abb4fac06cce6f78abdf393a5f6587d73", -"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "894b365102246efd03f8fe53dcfbaa1808d6f77b846b91ef62b5da2d66b4d60a", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "16c1f995ca4a929e2b4ca18324039906b831f9f9e8c969b9db008351d03f92cd", -"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "a73bf9e64d893405275987763d2b12c435f2a00e230cf22e68a2bc6f91c8274f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "f57991d22cf60aa2a3d554195fabd8cf302976c245f565e68cbdabe37f91b67e", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "2f0d3a60797dc289b20e0e08239fd6c0b2441b6e9dbd8de3f4c8070307b54c0d", -"T3T1_de_test_msg_ping.py::test_ping": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "fe8a1f97e89304079cc295b418d5eac75ee441ccab46e0207db549863849b477", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "c643c038a11b3a301b20316fa0d2837c69841f5e074d9bdd0de0841d1f7b18d0", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "619f5d025dfd71d0e15ba018c7ecfd844e6f43be7896cf612a003398993462f0", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "96fd8ddab0dbb82d6d0c116aea86f7f2eeb63372a084cdadb8c898de4d1461ec", -"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "92363bb8c8f23b9f81f1ce004de2e911fc517b17f63c7866047e257e414342c1", -"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c2dad0344893071a6efde9297e2cb542f87066af3cd4475e1d519f1f4189676b", -"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c2dad0344893071a6efde9297e2cb542f87066af3cd4475e1d519f1f4189676b", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "585a5d43600ea44d88a9ab770db6b39e49e76a245e8a7522ab1a74c731d5ed3b", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "585a5d43600ea44d88a9ab770db6b39e49e76a245e8a7522ab1a74c731d5ed3b", -"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "585a5d43600ea44d88a9ab770db6b39e49e76a245e8a7522ab1a74c731d5ed3b", -"T3T1_de_test_pin.py::test_correct_pin": "12121e32e368f5483265d8e76084efa4010ef01c9b81cc9f2d46fb11ebe59bc1", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "686e3ec64f8b3fff60d7be5b112e1e5b0eb37129d34db9974a0095886bc8383c", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "3aaa5ee13ad55b609624b2b9c42d5224594fe435a9ca14b0b3705eb1dc114221", -"T3T1_de_test_pin.py::test_no_protection": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_protection_levels.py::test_apply_settings": "467083159922058905b191d6a7584f29493a1c3f21ce8dcd08ea222c12712a89", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "8b0168d1f9f102fd75a7a8bca1e4665fb8d66c8c0dfae4731162cdca04cbfc15", -"T3T1_de_test_protection_levels.py::test_get_address": "3eb8868672db8e60feb331ec5a54bf22049705673700c3efbe876b57fd7ddd7b", -"T3T1_de_test_protection_levels.py::test_get_entropy": "4835dfeac22fb4e92b0d3a0c0fe9e0f58ee1598f9645815a252325ef375100ba", -"T3T1_de_test_protection_levels.py::test_get_public_key": "3eb8868672db8e60feb331ec5a54bf22049705673700c3efbe876b57fd7ddd7b", -"T3T1_de_test_protection_levels.py::test_initialize": "35f9c2f95819e4975a3cb82d4df34f5aa4b78d77c9b180a4f85e705fd8604819", -"T3T1_de_test_protection_levels.py::test_passphrase_cached": "1c2c3918230e12552636ba6978ac469c841b6073049ff1bc609fd3ca5da280a5", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "83139ef22a60cd0daf183a6263255d05a55673ebda8b4d22cc5b32045b484c0c", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "a009df2b0a6152a6dd8a11ec63d688493a6d261b2bcb9cb16a3beb2751c0f44d", -"T3T1_de_test_protection_levels.py::test_ping": "49f59a3a85b8ac8f0b58cd25bbfe46233f28194a42372a52ebd741a8b12af54a", -"T3T1_de_test_protection_levels.py::test_sign_message": "c0c836f05c966303ed9f6f2c3bd7be3799427872bcf4e9a2c641c9d1bc33d6e6", -"T3T1_de_test_protection_levels.py::test_signtx": "1196e3555fc94f763a48c9cc5ebb51cb14be666a1fd0aa032331c3ad2fd748ee", -"T3T1_de_test_protection_levels.py::test_unlocked": "6eb345e6e13315dadd852980389140e0f86e3e88c4d600b2f1a23b75bb67f21d", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "789d2139229a19875ae544dd3c674507c3c5529c4db1b280f3ac58e061fc798d", -"T3T1_de_test_protection_levels.py::test_wipe_device": "77f586b70d92b151c51ccfae935eed1440c07ebbadc9b65126afedc1ddcc0ce5", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "ca0355e458cc41ed2ecd6f8befdec56b379e94d050b46cec1a88fd04a813f04e", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "755dd6aa88cf49222fd0b3e0b14f80498b7d9d4b37aaa1efe8317c654e2d598b", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "2feeac0a912b21191dc24d64a677118ff7e6f2e5373b82b92c9f6bcd6c1b2481", -"T3T1_de_test_sdcard.py::test_sd_format": "0e6df7ed3603f447d88657afe33057877c7651c8a0a2f745845be8382e3327d7", -"T3T1_de_test_sdcard.py::test_sd_no_format": "0e559e831f007e7cbc37f6f59673781a1dedbb5410ec9eaade877157e8af4f82", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "e76e8ed1145f4c0d70e54331fe599916a9f977fb285936ca0350f970befba1fe", -"T3T1_de_test_session.py::test_cannot_resume_ended_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session.py::test_clear_session": "a3d9f9f466d14f3d4b94e008f415cbac1475662bc3e61bec56a0c376e2705fe5", -"T3T1_de_test_session.py::test_derive_cardano_empty_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session.py::test_derive_cardano_running_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session.py::test_end_session": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session.py::test_end_session_only_current": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session.py::test_session_recycling": "585a5d43600ea44d88a9ab770db6b39e49e76a245e8a7522ab1a74c731d5ed3b", -"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "0dc7ed8ad7b7382b71f410bc3d88bd77b35cbe9bb2e5195a1122cfb29a78aaf9", -"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "63a57bd662300652f7f6bd1d530dcc15a4dce1968227c1f258863b16989ca316", -"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "fa8430384bb574280c08775f39e6388142e70bb805f2b3089f7c23a1a2d2e94a", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "3c73d123c5b0461ef9840253939a3c676160145a826a0e9dc25d35ceb79b4399", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "595f539a40a16652b966ccf72d40b5315569bcab9f6d23f883b70769e1cf66c5", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "63f43046440ee656b344efa1de8a563d750500aa01d4d2eb1f9c6b5c2ce113a8", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "6e22493481de4e3010ec7f2ae3b15c83c3237447215a4aa91e991f3ee2f2862b", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "1c2c3918230e12552636ba6978ac469c841b6073049ff1bc609fd3ca5da280a5", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "ebe13d02939b73533caedec59c277be7fa262d29450a8ab00bf8237f56573d29", -"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8cfe21c11de9d7394ad60a9500e31fa0f1edb0b951fe22b8fbde17ca4521873e", -"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "3b1abc74828d9fb8d1a5197cc855cc2c541bb198214dc04d190a0a00d4a7efad", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c9a97477cf07bb87d17597140741cb74ba3058019c03619c1fac363b16ee32b1", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "aa2429168ca5faf17948faa68d20ef3ec6ad26d981c0c89ff3d16c21ab59ee27", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "fd12f6b2c54d5e9535cdc350f82a93f32365a40f1fca3d7d5679278e22f097f0", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "d9c117fc7acf5afe620a43aca10282aea26fbff0e4f892dbaff6babc885e7b05", -"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ef0b71e00d87b467e992d1d382df16112de96cb40a2d4fd80333fe275648b752", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "a2ae142f62a241e8fc59d6f86df2686f386d1c4a8484ab38571ca9d28b7b775f", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "dd8ca12f3755ed78cec4cdfac25dbc5457fe26d1c3109eacef8d27197de0e20f", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "c3158a1251f22b52c04b3ad9cba7b203404a6e447a08dd106c6f1cf0b04506d9", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "1d30f487e5f2022c2f0e51ff70411059d5c37510fe7b873f46ca10293a5b997e", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "87c26aa7cf5d26af8ec5486d2a69fe2eeb9a75eba731ed13871cde1ca30ceacb", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "17b9007e4a558665357149412782c6ba77843d56040e3a6ce3f007597d1a70d9", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "ad88bcb671175b6f28366e9e69c08498f10de97c8169b19c2367cc582890d89e", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "23275b3fbac01bf80c3d714e10e7c835c9088307f80b59492d259c87bcec36d7", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "f6932bfcf26dcbb4e99df072ee1491df832358fa6e60e38ab36287ca96aa9de4", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "ac1b005da71c33b943ac2daa67ab1338ce1bbdbe50e270ff69fb7ee9af0601da", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "1e486ddf171f311daf9be0960532c1d86df65e770434e3b235d43aab73745fa7", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "d6b15fdc2f90fc81166cafec95b70bc0e31407d6f0f90580478466e28c44da57", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "5375b1a71c158baad2cff50d56be118e382ff1fecc63fad655c13cf6057bc730", -"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "4c92ccfbd2b9724513da4f0770bc6ca35e1e37a1e9c2d4dc59fc8b435662be24", -"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "8e17fa4adf98fb9ff1f96e33754957482a651d83aa41826c2c0b1f03218cac2c", -"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "cfa53be3e6999e185944fd2ead993ee82ebd7abeaeaeb37724380745e8cf8aac", -"T3T1_de_zcash-test_sign_tx.py::test_one_two": "ecbd90b666b0acd695f89fe16dfcba0531e2f763ff6ff03731c1ae3190a52960", -"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a02e4746fb4aad51564d18bdf793f97912b51d060bcb8d2b04e68579741cdb24", -"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "c1d6558110eef5d99ed21d74ccc7aef2762a1ab923c0ebc204a621f1b942000a", -"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "255661af8f744bf82bebc4857fe6a3f3697b8629697cf5efcd1b0a3e1d5e3671", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "4a07033926585ae1a6cbbfdf8863d09a9398dee4fb6c41405cb4413260bbead5", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "2e59aad9655fe1648834781a6b2d6c2ed40d3bfcc88540549b9e3775e25f7522", -"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "9e5bf34f7e0ef533ad4e9e7fd60c555e16a114b08688599c2a2e63241f5f9057", -"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "fba566a05fc63d6d2308dfad2a31bb12b35fbc77a7a8d89f252c4626234f8a32", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7101afa8da0c0e2228ea4c2f46c2567c2c1c0f818e0b89ae6615713f961a1cd4", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "303df1b4a6e1f39af3b66e84a3887ba5d6d76e7399cc62a957c208c20653cd62", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "d32d3acc7c49aa43a4900d40b25d415735d5099899c55c3988217512f326acb6", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "52b64eda71ccd01db61c3d575e70e9a9094cdfba332d515fd93051816a0c23cb", +"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "ec89bbccaf1c7d8aeaa967a5039702002d29a0327cee79005a77dcb659aa4d63", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9ba5f27fbe7ddfa45ca08769be93b01725c92889db846ba1b6d1c93d10129ede", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "c3a5571672a88192f94c54261da10e13799cf741eb1677a8b54ea7483f361109", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "bbf7d5096842f590747c8f87275d7676c45ca29c1520a2526573908db9ce872d", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "9ba5f27fbe7ddfa45ca08769be93b01725c92889db846ba1b6d1c93d10129ede", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "c3a5571672a88192f94c54261da10e13799cf741eb1677a8b54ea7483f361109", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "bbf7d5096842f590747c8f87275d7676c45ca29c1520a2526573908db9ce872d", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "e25138eb09e3b582a16a475bc97d14374e4e14737a2e4804120b73e98b2a2181", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "d6699bf5272e08a5a50e1fcb62e50cb525c650a1a30bd459a83514e25fa498f4", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "795268a332beebdaf826bfd93eea5986c0d2604857d0f3499f57e6cee45bc5ee", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "e429b184583ab43ce892cf4cf0e3280ccc1e6f79e4f66e0daa825274df611dca", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "bf300999c66545883a2f318121a38efb57e4bbb052d3fcaf6cb68e92aec46f4f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "bf300999c66545883a2f318121a38efb57e4bbb052d3fcaf6cb68e92aec46f4f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "cfc9900f79f72abb65f2d710461c95f8a809a32c216c71eb38fe3c49eb17247f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a6d1b34a007609b4fca0403d6d3f024374cc884167557271927d426bec4df2b7", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "59430b955ef05ac2832580785523eec8dc4a79d8e95dceab3f36357890c3746f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "310f8ed3247844324cb9e72c29026cb681e7f678f4781f4ce54c0b5909797acb", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "310f8ed3247844324cb9e72c29026cb681e7f678f4781f4ce54c0b5909797acb", +"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "0120aec2d358f25ad48faa357a85d6e0a4f147c1041363ff78406da244a568aa", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "0120aec2d358f25ad48faa357a85d6e0a4f147c1041363ff78406da244a568aa", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "094d0c1627e0462a9735f591443914b45d31d1307d0cd849fb4808dee40f021b", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "2ac5f04f83a7c87e36f83bd3be59bc42653d7f2c2776a9cc75f849496b815998", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "135b2b2f4573be1903932bdd7be95373c1de09159bf89fe8cea9143c61188ecf", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "35142abfd997046b744fb723bc283efb9fea116e6749df59ceb9806201902db2", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a340bc0a00477a0df9976a049b034e539c3d4afea1d653fc7a2575dc59df4f3d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "37c285337894aa9feb79d123f852cb35fafe0da40f5f9148f5a7e866685bf8c1", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "30d76c49ad3d20671f2601b5c25aa4e78568e8d7134a7aabe8482e94b703c2ea", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "8db1813aa6357c35e97fcc83e2775ab2394500cbacf080de799fee16e5cee506", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "307967123af1f695e8ec93dd3cad859d03dd0cdb2d872f16f9f30614d2a705ee", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "6202bec1336c8c58dabe5f98a9f33c9ca06cc90a1fa49b5ee4cfbec3f4a24452", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "9768ec21840513b60e7d8169fc1bd9c93898cfeb61da243cdf46106ea9bd2ca5", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "47a92a1e880b18058c6136925ccb21475b09975e8aa9d472a35acda05a598ca9", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "020ee111bf7808d43794a5856762a287836b8cd673f840986c297068c5cb85f3", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "5c13b076e09ab585f67d2b61f8b7d9e385fe36ccfc1528aa76725fc3f2a7848d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "7e7b5a0af6cd12afc0e02a99627920f453fb886ad514deea88f9d2de1f592329", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2d123e67bd8c60d3af563047c81f7088754045b10a866dc0627c630ff05f4fad", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "1c8845632a9cd077793668440823df6cf1f3afb964aab7c381a9b5b04e9a5f29", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9cc4ef149ab6c25a8a7777bf434f3a184da7eead7bedcec854fa9ab68603f09d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9e810c4ad224207bd6172f0e247e1567954c49d1dbfa6c1040ba272c0dc578aa", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "fc61b481f5f034e2ee22c86fe46513f38aa60037b462102a9951b76f3e6d226f", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "5b2e9afd89c9019aad8e23d4e0daaeb2714feef1ee0690f82a140f467c984708", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "37c285337894aa9feb79d123f852cb35fafe0da40f5f9148f5a7e866685bf8c1", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "30d76c49ad3d20671f2601b5c25aa4e78568e8d7134a7aabe8482e94b703c2ea", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "8db1813aa6357c35e97fcc83e2775ab2394500cbacf080de799fee16e5cee506", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "307967123af1f695e8ec93dd3cad859d03dd0cdb2d872f16f9f30614d2a705ee", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "6202bec1336c8c58dabe5f98a9f33c9ca06cc90a1fa49b5ee4cfbec3f4a24452", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "9768ec21840513b60e7d8169fc1bd9c93898cfeb61da243cdf46106ea9bd2ca5", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "47a92a1e880b18058c6136925ccb21475b09975e8aa9d472a35acda05a598ca9", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "020ee111bf7808d43794a5856762a287836b8cd673f840986c297068c5cb85f3", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "5c13b076e09ab585f67d2b61f8b7d9e385fe36ccfc1528aa76725fc3f2a7848d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "7e7b5a0af6cd12afc0e02a99627920f453fb886ad514deea88f9d2de1f592329", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2d123e67bd8c60d3af563047c81f7088754045b10a866dc0627c630ff05f4fad", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "1c8845632a9cd077793668440823df6cf1f3afb964aab7c381a9b5b04e9a5f29", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9cc4ef149ab6c25a8a7777bf434f3a184da7eead7bedcec854fa9ab68603f09d", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "9e810c4ad224207bd6172f0e247e1567954c49d1dbfa6c1040ba272c0dc578aa", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "fc61b481f5f034e2ee22c86fe46513f38aa60037b462102a9951b76f3e6d226f", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "5b2e9afd89c9019aad8e23d4e0daaeb2714feef1ee0690f82a140f467c984708", +"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "5f76b59e7cb5ef16282811a3a38767e653690233167041513a3f6b17fb3257ec", +"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "7eef6ea828fd09e6d7e27f3e56930b16e2e28387a2b6e478f49bef2178b0d36f", +"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "888325e8fa55629c8adf16b223bc78879e7d21f64a58c417a0a27c149d3c1428", +"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "59184575550e802b9ee52ec27c8d41120dcc315456a84b2348c23ad209d1cece", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ded376916d152fbe73e925970ccc66cd3f5c739eb0bab46585e30cba9a3edab1", +"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "c7631d1cb86a667de3c1fc1ff0394ad8f18dfd8ac9081a8efaff415ac54004b1", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "0837d01122900153b02d18750d77992222ad3af6314b6495fed963f846aca6ef", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "50366977b1fb4f62f9ae55f16938db0a610ff8e1affc3f941532634554abe2e8", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "eb3d53f1135f891fe1d0177f85c7547be66e28e5a557b921d0c987799af2b384", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "8af392507adc163c9994099d951beb6b01a487fe46f8572a1d95019b76bc025d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "88b6b002551f58da4e1641e0d0a444fa46adb1a0949528987fc32454ca41c528", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "f85781fbed7a09260221db8d3c9279bb992d7f919bfca5b2c7840d6c11dffc9b", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "21a1e3c55711b27cb45a7486164539d1f2d272851400f97af0f63f0a6478efac", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "52dad235d015a7012415434bb9feb32da44f401547c4c78dd6536ab030562c4f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "caf4631eacfa46d5fc9cf2ebc2540b519e2b3b7ab9bd4b67ef01eb609ca15992", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "39258c9da4ea90eb8111780237749979bd538e21ca8df296dd13932a06707c48", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "6460861e72b66c288b9df7831b36c482d084cfa3e846cf82cc91efb226af4fe7", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "c677276d5957715c41aa8a972524dcaf64ee03060536187ddb5dad8829f63f44", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "8d5f4896b262be48536abd3e0e92087281c4cb909d398c76eaa8a96b1bba92fb", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "2d698b47fa5bc2f4c81c60e54811c8b85a1ec04033aba0c977b25ae5200dfe73", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "378d0aac1d7f9408b673a0c00dea57a1f955606a5e15dc03e3aa44c98281c8e3", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "9dfe3590f16028c076b2956aa7c8b27cd63035edfce8a02abfd009510b71060c", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "dfacdc817b7f8b37e1d677cf6faf2ae12c43462cea445d11a6c58f8d043586d9", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "73d709d548b2c7f65256b48d3cf4aba2473d9003dca429a6437833e812558d17", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "7b7e2bd79871889c549082e7be5307bde8268f8bd96926e730aca246db456a7f", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "f4a415cb7b2ea888884a7ac793181ac6cf8671972965b76a8062e5c0a0aabeec", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a02a39144bb3bd54313349b72d9749c7041062b289172d46229ea3c3d3dc9ab8", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "1099ac496628908ee3f0132186b191c6bc54ed6b800b93dd75ff8c445799467f", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6364b7d161921223559f5141d61d3c712de89f27208323036cfe80968f04ba47", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "72b7da8ff1eddb41d286819b94d98744f1abe44eb48f030bae607089c677d24d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "72b7da8ff1eddb41d286819b94d98744f1abe44eb48f030bae607089c677d24d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "338cec75a549477ce1476b7e001e0a57c102ac409f3e8e5cbd562825b5b90027", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d1cd6497dcdc9172f71b3d8599a34bcf073900f27f29227dc9a6e14fbec18178", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "f455d436ccdc67b93f0459305f47cd0417a6c30cd51de18e7cc712933292f79d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "1d932685daf87029c9c5274038676168343e42583faeb93587c4746dca1e5040", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "9310ef543dbbcce7b5673dfc75bec4cc835dc99c04727bf154d421a57c3ea13d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c7a130bd8e58f54d901e3d9ff4b0708464fe5e81840787f76f733c7d7b7d1dba", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ceea01d9282fe057b3a3049f4e2619ac3a6abd39c8a6f8451c28037883ef20f4", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "a237fff8dac1ae26e58e420e03662dcf0fd945f41529e52c0a8852d4be68b15f", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "84193ef807639480a0c541718c63255782ba9c60644348966aacbf129aec4f20", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0a52eec01ba8eb7fd57f741ff9409f679e41c41244c5d68b29e5ea24f6a27e2c", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6eef9ebafbf778048c6313a4b969a51a89f333cda58afa57e923d0d1d4f672f5", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "b66200f16862c3ef311f4ce0ab7954116a6e6267ad7e51e3ff781ef84ed77d66", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5b9748cf5823cdf39590bab564da072937c58ebe5f7630d1b384aecb30af948c", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "c15b610ecd8b226dc8e4faf697a1ef5b15a9f42358c066a909370db0fd8e73fa", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b7e761c6cf41c6eef23b272cc5cf322b438b04003a034cde31f14fd6aed30160", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ad95461af9737af9966f95e9d88eac38e7ab535d2d874ef38881560e263f7bf6", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ce18babbdfe7eb79722f56201fba578e44015a4c3d0ab165529257602128e4cb", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "346569305c1f94bbf80522254e9a83ee60f7164b7557325eb6e23a64e1d12707", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "45d2649be693fa95e030f6c14d8e188040f434fe7abb60b65f15b896bb85c1f1", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "43423e54bb6bef8564916df4ec13dab2b5eeac74fd2783543167bbcd034d7e7c", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ff806216152cb2f4e467ad7db1b76762db7e8fc5cf1dc24ba48c8e437b497c35", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "aedaa0b3796846361047a5e9f8940dc0da4993ef5106f342896005ea2390501c", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "406c0c9fcaed87cdbfaef0475bf501658be771f1a83a84fd0efed2a76eaa700c", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_grs.py::test_legacy": "3df71604064c42577d230cf87f68e4338981b1da53b3749b1e3a7300d11288b2", +"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "048df3a3f676c579543e04d414fe86c4708aeea5a0cdfae9c7b1eebd7fc55392", +"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "9cf8c4f0aa466b88e8322f53e50cfbc4fff8d304d097954bd77bc5e2ae522a58", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "9f1ef1d03dc00918028294134ed690b9929b5adab7dc3bb5ca8f6f749b71bfe0", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "e3ccda0b775d0aa6629a24ebdf4bea6c99f4cf150f341ab9e0d10075857b38c6", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "751b480ca1fc948daf2fa75614e196bfbfa87592b46e2b4c954026b010fe13ef", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "503fe40470c139d73600ca469efcf6f71e375bfe57d15605239be437a387e580", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b795c21913cef2d26bd85b1e2320643b8fe712b4b597c4aa1173e5b8af737314", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7fa737f82e108e2d2d60bc201bf686becaa588c9011d781597a8f205d00770d8", +"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "79d4b104f8d5d4416988ec160845f5adc54d195f5218c5b49ebbc0c252622a80", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "c9acc80df039c993d1eee74eede5954d92a25ffc8e2022415c74c8405e430ee0", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "a626c39016ba5edce7bdb43b7c0f32c8c8807bd4c4f08198d8c91d577d1a8b9b", +"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "ce74a5f0d967fbd1c6b706eaf3f0738f7f0247184c5cee940be63425ffec9242", +"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "c7ecaf308ebed8526ee1800216370ed7c7a9817f8a927d74d5291a0c4a0da7c6", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "8bc6a25eb26428b204c16442fab5d26fba69949f468c937d0edff320366f83d4", +"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "bfe97f64e011f7424b394d32de321ea4e39ab045b6262b506476d11336592886", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "31d01fca86b66a31384992dce0c904df58a8de86bb7e5c428ee0a0411a808a33", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "b0af71369818df1e824ff4a4eedd1c9c00423e5a40f11c6428e1909bbdb5f051", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "e84de1b0c0de184d4823d56f69c67db3102d16e9d4f7142cb87034381ed6e23a", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "6d7560634cdd782bed2be7c318ad4367d8ed79fe1bd4a1352784d48bc05f45db", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a0b57a4394d8ca37fdc08da5282cf240cd34c24ee05cb6cdd3a6c01b6de5f7be", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "b63058eddb2ae2eeb40fa0353e14631c6e5c7aa099fd41476b29678747757e00", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "c143d84eaec72fb34c919f1cddacb9aad2fb17805be79bb7eb9ced88009c1c6d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1a965b295e07ec7f954707269135f704f3e4e95d47a288793cecaec4b33a010e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "fe185317b5e26effd30f51587969b0cd12b2ccfa44452ba2ded00382da3001f5", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d06769328b9961e82e5e1940848825f03e8485c14df657532bf7664fe695ddcd", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "fa8ca6816004a6ed50dcdf827bbd0238e170edc75e3100eaabb0b9f4f4a2d755", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "7125547533c6c714efc3d842231e33bfc5d7a4cc42ae9d1b3ea14485756a9adc", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "573bfd555d67a7d615c3534734a48e989abfcc345e68e6963e88c150c44489a5", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "3a916b0532fd133e0c83278c4661a87c00af534c79268e403be9b865dfb9e7fa", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e25415e3135546201d78d01fbad0d7210cf1bbf2fb8f237f441f93817a150da2", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "f846e64e9977bda5771cf36f530b93dd277ae548820bbadae74ec27cfb572be2", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "98e67c1615388dc3152235aed054c69f0c5219e453837085e3d14da3124c93d1", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2926a2e2dacdc1951b4f2cc464fadb685beaa7e90dd1ca49dee07bedb3657c6a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "fe2c523f2c7faef111a5e97eea5d57da56a97f57d2286bb82a781af186f01f91", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "bf7f94a899519daea4578f02e938d1ffed38665b74615381f6d56ce128338fa2", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "cc058cbd33f5bd1b97ea61bb26c907a8696ef5bb0c33bbcf0ef5611c58f71ec0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "b818c1ce351566ceda2a454ee0c3c8ed2ee1eb5015c23a66aaf9ff01b3f69f3e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "647c45820d7058d2bd5e2a1b9299a6b85d9e89c4ae39fd5cbfbfc306464fbd2e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "97aeaa7ff0931e8b77f2d413608b1c5c4d2083f24da3b0e059e8405f76017c3f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f683ed2077519459966ac699a830b65f4005d74dc1b27ea101b9625c3546b1f6", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "4a49b154d2b773767d22d337c221ef76b88b7c09a7e1232e330a71f31ebb2d61", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "996a8475143fd5a1ef757ec10f2070e7bab5916a1f8c2c61067b35ff3e98b608", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "7d9c06f5e1fb24e62dc5702d4b6d95ed778fe74959419e077f72803dabf21402", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "2920d4ab8c9100edc1d7e43bd7bd857485a9d0e4aeb08ee5b5002bce09cb306e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "052e141cde72a884f25e7446fb91d21d24de4d3ef60f6148846703adb6d819f0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "e7239fcfa4940c7b209e496e2ae02f36175d8faccb72eed6aa5cae58f0fb25ad", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "0e1044d92aa45d5f16f2a5a98ce0f57279ea4788909372a8fe9ad9a2becd5e08", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "5b9b5ec161eb149e6a06d727f08108f463736a410cd788e2ca24824984a3ff90", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "f81a3858eb0474a4fe2409376c71e1088fbcdc2e89b03f2eba377fda11b375b8", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "40485121ed1e26d7646d4d01b9e6589292900f60079c6b718710bfcfc9f1ec14", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "7b5052181dad11a0adbd0477ffe60a71ef8b5e6ab2dff86411bf188bf341f815", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "84383a37c6a73eb6cb9092b4549ff31664f5f3df49cad06301ec167d96582ade", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "40485121ed1e26d7646d4d01b9e6589292900f60079c6b718710bfcfc9f1ec14", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "40485121ed1e26d7646d4d01b9e6589292900f60079c6b718710bfcfc9f1ec14", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "40485121ed1e26d7646d4d01b9e6589292900f60079c6b718710bfcfc9f1ec14", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ecec2c7841b18a7262b7e9c43b0b69b63c46b5e532c5203861009b9f10d31ef8", +"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "c8a77a57c98b3ce86d15463154e207e81c9a1968128fc72700a1035824e88e07", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "11500957bc3953722adf67b8e3fda4923584500ea481b5b559bf195dbdce9f23", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "85f611390fc85505e22acdab58f03dffafc0266cb066b35421e0e6a48b446668", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d92364d9df275d2d1b35ca8ec1788a6018066eda9f4f031ddb86a6b2f7baaa43", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d92364d9df275d2d1b35ca8ec1788a6018066eda9f4f031ddb86a6b2f7baaa43", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "2e5aba18a3fe82160286ccaf4c05a7a7b059bc91c582270bbc53f415424bc8c9", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "5111355554390c18941a1cab3485d60d5dca422e7567797ad7c51cf829e07267", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "6f3e483fc6096b2a2fae270e20a7c7f5c95fc9b13562052a3e408d77d628916b", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "a2d80fb5585d1ec25dc7f851a359b1057a4df8f5e72239d684139ac7fc8174e3", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d8ee83b1aca3f6c38dc23068201ed5810a77327b3f7e40cfdc4b3a8df77f4079", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "cd58b955a2c9e508cfcf1be7aa16f16abb9cce32f90d1ba3b08121d86aba191c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "cd58b955a2c9e508cfcf1be7aa16f16abb9cce32f90d1ba3b08121d86aba191c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "566ecdc87df6191aef7ff1c74015562f36dd842fcae0e64eb50b8a7cb5281f21", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "1876e5ca7b3820bcf1ce25211976f3445feb105645fc3601fce5f38b82d2bca3", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "faa610cef8dc8cdb494e54848433de404397eba9bce21cdfd6339db46447fb85", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "faa610cef8dc8cdb494e54848433de404397eba9bce21cdfd6339db46447fb85", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "440d4073887b8bfc32ac1c50b8baf8927ff9966e19d266b9fb4aef4cc59e2f33", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "dccf093eeed5f3648c361111fb5d1d5276da94a92b1808cad3847e7397394434", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "06727cba40cc9cbfdd1680ad774b5f792be914a18cb6ca0623724069ee8373ad", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "06727cba40cc9cbfdd1680ad774b5f792be914a18cb6ca0623724069ee8373ad", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "f413be7858a5df8663b7af30e20249e3d2c5dda4952435e4538c593af4f06eae", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "0eb28137bf536a404313ce9accfb1a7cc6ddd42ab7dace99cc049a46eb8a3f1f", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "3f227d73b7f7b8b61b29a9980cf02c091c55ebf49741dbd82b0118041c446371", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "260df8d50d9ae10ca33415398b5dec07832c75274291467ff3dc11c30a4e20fa", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "21497fabe4205c521a1c7f8c4804c5e29afc4fb8338c7576c872254e8c27a22c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "5342dd2af5686647da2b5e9c7035a9ba606649a56213bf2f2515c1ee28b54747", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "e04b0d0b085cf3d1170ed1560637576c2eb86ec5522a7607071daeb330dc1c63", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "f12ecbc744ba8cbb8c6dcec79d593ebebcfd25e80669c100651dc2b80e7aa2ab", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "d662faf327bee11909bec28380ee84b3d02c28f12642051062e944385cd4d571", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "6cf35f8f88110cffa24e76bb65e5d7d799de8c4f2985153ae5bf5279c969aefd", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "6b2fcc853bd2615159265b1ca858cccf91ba881eecb48b65e60d5cbb86d8bf89", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "593b7e946c9e2f3b49d7c43ca0f289803b168198b0a743d8772d43827ba9390f", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "05f79141d7c5f1c752ae9cc08884224ce15ad0bec40efb0b49bdb01e13dd6e42", +"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "05f79141d7c5f1c752ae9cc08884224ce15ad0bec40efb0b49bdb01e13dd6e42", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "c8f5728d5c396a8137217955f84c21235e8a9154a700e5288cfba9510d999496", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "8b37bdceab71c4777b7016e3e7bc7707cd6cb06fcf52016fdfa1744deecfc266", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "afd7ac92a72ecb14f06b3cb8adadf43ec32589fbcdcb024d0c889474d4871710", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "9b69bbecb886a8e4f0092983870152aff06cf2705d694332d3b24c3bebe735d6", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "57c6984995184ebece4f2fabd9cafbcf3754ee4b6d38146fb275013bce4f9acd", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "8500088f498f74b789023769614fddd9e211c6e765bf9bc5055e9ab1ec943df6", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "2d903e1763890d3c1e91b4cc6322e76fec67b33e5076a508b291648a8f20e275", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "620c7d24e9057076b36d301bd55f4c5232d3eafc501d1cccbbff9ec6a73e1af2", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "2d903e1763890d3c1e91b4cc6322e76fec67b33e5076a508b291648a8f20e275", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "620c7d24e9057076b36d301bd55f4c5232d3eafc501d1cccbbff9ec6a73e1af2", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "e3ce21562dd3e5edb75b18d12afbbc963a2353e5ea190574b7f67254352da1ab", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "97725ee40ba8c9a91ab2f473f4313f45e01595b1de67cf4a7e7b4f4925449938", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "32dd5a93ba0661e7a87b3b401cc80d8ca419fc2c45178916a9c60caab40b8c9a", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "fce826402d14b4a85c624405f7d0cd9e30600a93f995688232fd001dddbda875", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "c69f1d68065afa864d8b5260126501615b805e7dca4fa3b324420a919f4ae68b", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "3aa16f206d314dd0869e48ac31f0df36d943cee0d7c1eba2edae77506e43a334", +"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "6716eafc60a7c6d18991920b76920d5e65fb968b66cb133fac76a46538401cf7", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "3bec5949f34b56c95ca54e605076a68bf0c3d0e1106131dbf39b7aa06fbe471c", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "8f90a6ee2d267a85c848380966556de7b40b4e77ce3138a51719db8b71dc9408", +"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "70c032aaa86e7050b1512da751dab9a7c931a4590b73e3cf22c256b93fccd9f4", +"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "6be218ebc19f31629a40ae5a54b6463ae0579502bc03fd2d9d96d38acad3b010", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "ab5aaa712ba354f942860fc10f0758a48f21dea65cdeaaa328d2df6ddf696ed4", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "dcd3d19c186b597e5ef113dc3347502d57a7470382dc9ae70ebf2d00865bab3a", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "d766a11ae63c3f6c2dae96f13358ce14e23085759db4688f17c7883e31e2a15a", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "05f79141d7c5f1c752ae9cc08884224ce15ad0bec40efb0b49bdb01e13dd6e42", +"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "4426acbbd5618aa22a3de912e691044c54b4bab76e7f89e21b9cfa9ea4004ff1", +"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "a86e54a85d33a4c3decc2e93ae20df4cc602ce182a7ed5dc8be2eef9d78fea47", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "6716eafc60a7c6d18991920b76920d5e65fb968b66cb133fac76a46538401cf7", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "59df5c4c1ce663412bf39f5bb46d2b9e8102e7494995ff6a84c77f2c0240ec7a", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c6d3e0ea97ee7ef65b317a9e3d5d4eb2161de4f5dad3db258484c3dc1b57d64b", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "be98b9aa0545fa20c6dc07ede1f01026221905fed371238183e68e445e550962", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "6716eafc60a7c6d18991920b76920d5e65fb968b66cb133fac76a46538401cf7", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8f8f7bf7eb412b874b9e50405465d0679df8cd29cafae44631926d292f7a58af", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "5fd260743f061fd5229ec94e860a8100d8e9b8ea3d600a6ff5d47b837938fc3e", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "6041d9e6b9d899addfb33ceb8413cb267fef4b7fd9b50a31000a93a59c002200", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "496e7910afab490c5acca17f9faf885d25086638cb548ea4e6083feae55ef588", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8f8f7bf7eb412b874b9e50405465d0679df8cd29cafae44631926d292f7a58af", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "f1d3d10644d867a5ffb0821d88f19adc313e200b4659b85f2f47ba72fac6fc66", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "3a1440e89d1d6ae5116b5010f4cb937091df5f4f669b16e45c78968e067f1dc8", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "6922a3e3cf9301898d29d24d29407035d6444205be37f83845203cda35d849b8", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "48c94b10a2a2738a903b447708fe3bf94887ec19f8c068cea9b86f48753df066", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "fb8f2b16de7567a9af55130656ffc62ab769bec39080a610b42e51248fbecf67", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "667c8685437c32db4afb7e7f3a6ddab65bf7d7addacae7cb98d3bd9199d12e34", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "b07f6ac464ff6bfd4d36f4a385e8d77e85746b0f1560b2a683c2de8d05662a4c", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "711781299884753b052087ab5a2c45e3395bfd5e49aa99e11e04a9d4f19c6e07", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "34f8fea645acb5eb8068be953f503420e1a86150c993e9b61fde9c2900edd43b", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ebf5bc035bdb250a2cd33d4d9ad7df7213aea0c61fff2e0b7c09ec22ce5f87ba", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "8dc6a40d68a0580dfb27099508506a4af3e5c792facc4bdbaf838ca9023d644a", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "0840a1a70b846690720ce0668901c80fc8a1083ee0607a74653bf385e596f253", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "5de6e32f987e7b79761b25ea7d684138dbe659f062b047a872f15fb3410d46ce", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c51f394638f4c703f5c6a918e76d0fb251eaf19653a616f2528204fd57f2ee31", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "5de6e32f987e7b79761b25ea7d684138dbe659f062b047a872f15fb3410d46ce", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c51f394638f4c703f5c6a918e76d0fb251eaf19653a616f2528204fd57f2ee31", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "8de765f8d2e6cc835f971a570d57831e6fd1736c5af0d725fd488fdc314d3c51", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ad9b138975f058af8a188eb4ad544c6a950b8ef5ff247bf5ca1c9a6c99a6dcc0", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "acc6666ad017c2b8cf99c412edf499b77af2d781ac10717b852f2d5dce7a00ee", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "842573f87c2e302c63c0582842128533b19f373ab8f36299fc4bae5e1bbcd372", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "90041d98ae5de92f8d1e82fbc6889519c883daa48d886e65864def89f8a621a2", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "43c0bf18e15784f38d37d886b60b1f63bae34cc168dc9ec5f0f275aae8791283", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "e6f00d9627245dd08a7e20fb1a8ee142c69a00c349a94e95595d082ebee35f53", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "93228dae31463d7de2b1c88cfd597267d6f3c4e8a68a3330d4f1f6fa8670de1b", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "bfe33ab31fc87d78b3092c299796fad7a3882bbb6c9a104f0679c37adc6cda38", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "bfe33ab31fc87d78b3092c299796fad7a3882bbb6c9a104f0679c37adc6cda38", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "bfe33ab31fc87d78b3092c299796fad7a3882bbb6c9a104f0679c37adc6cda38", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "bfe33ab31fc87d78b3092c299796fad7a3882bbb6c9a104f0679c37adc6cda38", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "e8870bc49bdb14e2f132a4934d2b4420d6c3a3743c304c1a5dfd83bb185f6871", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "e8870bc49bdb14e2f132a4934d2b4420d6c3a3743c304c1a5dfd83bb185f6871", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "e8870bc49bdb14e2f132a4934d2b4420d6c3a3743c304c1a5dfd83bb185f6871", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e8870bc49bdb14e2f132a4934d2b4420d6c3a3743c304c1a5dfd83bb185f6871", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "b0ec4fa6721bf988cc086a6a02eb44778aa5e76942df01dc3748df309b408bbf", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "530cf2208bc98ef2ce81dfb644b560a6173ba396cb9ec54700e4ce715de69497", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "35879021c8807a706907cce1c4635f6a2532e0f4ba9667d8792936b4376d9d99", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "35879021c8807a706907cce1c4635f6a2532e0f4ba9667d8792936b4376d9d99", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a54f432a971a3cfac8bdbd229e6ad472133980d8a9091e78457b5abeffb9638b", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5e45c16b1f10907370ff9aae4ee4758a1e35688f8b451e6400c7523fe7bd295d", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "7340867e3a69f131c9e561731c8135841eabf888fac2e70ba06a07d6fbd8c78a", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a54f432a971a3cfac8bdbd229e6ad472133980d8a9091e78457b5abeffb9638b", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "df3f1ef30a9d706ed51cc66e6bbbde845772ac2afdf1f616901464ecbfad6220", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "826788d42be65de7fa304de3dc4cf7919d7409b5703c449512a4ae0e500a37d6", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "826788d42be65de7fa304de3dc4cf7919d7409b5703c449512a4ae0e500a37d6", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "826788d42be65de7fa304de3dc4cf7919d7409b5703c449512a4ae0e500a37d6", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "a22a436417e54fe9930808f8f71a3ea68f1dd777926de3c1b8bd6a71fe6e9d85", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "826788d42be65de7fa304de3dc4cf7919d7409b5703c449512a4ae0e500a37d6", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "81fc7f8e10dd2d304fcf4bf7d1a09f74d245a24c925a7b4b5b0ebc8533f9cb65", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7e88207683303de1ba96a3763e1f9d988d5ad4e9cb853d2e1a2f7c64fbf76106", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "920d50660d2aea0b12ec5e4bd5bdc5c9f64949e38b5dc6042c58552e83238380", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3e44fe4e7e7b0de7093d8d187e0cca02950ba4ca2948001f223f1b9a6f4ae7d0", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1fdfd140d1c0425f3c713e48c8e8604a136ea8fe866ce802d9aba7628e919224", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "095aba108b52574bad660ca8cd13277cc936fb622073a523d2db3ce77f26eb6d", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "0dd8454cedc297557b6f670d93567294ca1d417fbd87b8e6481c4a0cf89ba787", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "9a22a18032599ee7ac1be538b2098f82cc19f973bd4bc9da76452dd4dfdb8052", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "29423d8a3fcf04e09d083e1c29d6b30ece6b7aa1ebc355ba9459dad459196c3a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "56c1ba2ee0f5c87bd076e642846a57c19342ed8934d270b401d02faabaf8505b", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "c906a58df53f1f166b569be806bfe5e74b33089ef2b67155f68851a23fa3bee6", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "57029b2a7c61dc146a0e109cf81cdb61647996c9660c890763afbde51da3ee8b", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "1f37bb312f877f97fbfffbfcaae7915449c2407bbb71b0b1ca42337b19c0f717", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "68a01d68e080b6cd2965813c8fe85e770f2adefde7b74c8263d573bbde4a08e4", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "8f8f7bf7eb412b874b9e50405465d0679df8cd29cafae44631926d292f7a58af", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "34b141e44e2167b47d04d85f4f98536cb133e5bc9e099af1e632fcac152592a5", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "c52b231f89bf1eac74ec88044acdfe204e37874eaad638af9146608664ddd4c2", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5175dbcd32076af42e39a00c140c1140d1cd68655bbba5aa5d98d3f2763d8eee", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "882fac0fe08ba3d804991ba8be15bc8d15fba79f70606d52b86642089cb018e7", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "cf06ab85d6fcd836e7ebb71156f75574aff83938860d6226658b3e95ad131c80", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "71cf3fc1a056b3c53751ff11afb0d26b62f62638da2233f279b73b16f09ec6df", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "538b507cf439691b6d2f2cd51822b550f7392c9304721baddb68c77f06802cf0", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ae6343fd50827c74513d686f81bb661dfcbe9b62cebe2bef09ed90eac26c2929", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "db88b24e707a26028512eaa444d925522253b3ac8a3aee56ae43ee6ce8d80d06", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "33d1da4f0977508ac547b589679114b7dbbe6c1969b8d5ef1dbd456d5993e132", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "f134d279af0a4c743f16be57760c6d21401789833eff972fef1f16d216b0184c", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "7a126023f5eede83abd45edba535ead4df7256ab7fce4a40ec8575a8fa99453d", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "5fab103a48a0aa7611fe4f9746342c0f301bcc435cdc38edc55951d858076177", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "28a59b06e5e1044b20a7e1db1246cfc8ccd574fc5efb793b82a812c497086098", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "d1c03681d4fcd328fa6451b672c8e87ec24f97774fff3af7c55d5ca5f88062b5", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "bb38f95d6f1dc3319727490e321848dc259a78fc953c091eca23c8b8becdf148", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "0578b28f330f91f5722a45f5800dcf19ed187e9f6b378e8886afd64f4717eed8", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "ceb6bb1520d9b1590ae22d50297e9af7e770ed98b01add74109d152db8698c9f", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "6e7a293a5f3cf5680a25002408656a41fe88be9e76b7e8c5c7fea354d9bb9072", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "fcde734524b3fe5ec66c18bbe2b63aefbbed6da860db7a593ed8010cf25c03ec", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "adec78221be60c2e679b5d042da0b43a5402fb759e8230482683ddb456170157", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "ca201dbb5a404b4d33711bd8055ea17012232b6ba86218947fe10cc840e88871", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "4fd0c6a9e32e82a7ea92ba102e82ec0d7b93d867f1e96c73c59157941ba616de", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "e20aa4a1fb35ec8ada4f18d2a5e897fa34d21cb4f157525d378cb5dca1f68450", +"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "427e1358f94e08e39fd82399731d45a37c1bbda4bea31ac3ccd8f3b14bab2168", +"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "f9acfcea4d0b05e61681a4cf99d00658586a3e1ede7dc247f0fa1ef76e8e974c", +"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "d0221c3558c1615cdf73d1ae4395aae9417fd32b6c309bad97d9b962159c5550", +"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "0df3f16c5f7913ca9e65c85a1ed61ca08ee9a6e29785cc7a271290398e415add", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "53a6ff019a44b6e40a2ad8f286e22d7e0abd9a3dc07f57f617178b8543a5f4fd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "fbd87d4b2b3d0f18eb81c17ac52834ca07508d2ce23b52d82e9ea15fde83be48", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "b93503c54184d9b585368dd3893d1b233b7b335fc4f6b1d4b9c1cfb0d33d28e5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3a42d1c197340a88e81e94ebd57ab777caa4ed5f874c6b56f9dfa953d2e482d6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "ce1aef3d3dffb1fd20c879e9ec7ab04893d275a436a8b29674e53436ddfed16a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "fb5bb17e7cc4181f9f0c1fe44ed00dab7daed210766866f2d17ff995223e876d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "169d1121a6bbc4b3d31d2cea82a50ab49f57491a14a9388a29e2af59a2a135ee", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "6da6a61089e30777bd84787b45542b5a862eb99e7214167af33c5cae85f9be66", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "d23dff3b37e96ea16e79e43eed0531eb38b991fa3865372829bc2d565c889b06", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "083778fd2234ebbe080686614ffeb50f47811f15b21e99dba559613d35747e29", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "ce223a7aef27607220b8abb4f5ec976c8c6811519602982c975e58a6b411f8d5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "7d6817e4211510a24d624128a00f04ff8a541c2443c2c625a27930c7edd5a1fb", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7ec4ecb4657f3fe2cf6c6c92c3d4573707d36b6806f1bf7f1d9df2028cc830dd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ace96112b65b94619130f9aa90395b9220f1f09db64bb06d87265f1cdec3f40c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "a61e3e281a717ba938134df6f95537824364fe19fb54686dfff33e3716e25686", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "73f10114fa34124955975f63bd14d501e469d62f8edb81c34d34c38accfebb37", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "1c3d077ce9799690b8adb0eda8ac66584aa77592e2c501fd3e576b26ae6510ea", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "95f3d317bf42021067163a964a6f60750f6bb05c861a4a5b676668e0f00a621c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "54b3997bf4f1b73a0e594b64eb8f06516a3b5543f652b2dc4abdac4a22a0c7aa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "84fb65ab6e378fa39b8a955efa954e17eb45e0782d1efbc944d1a032410f8716", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "865b8d4c41ae7c1ff45d012ee86dd2591b9bd9d1f1809029d497dff945347e54", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c85963556622dd56a20f3344e1b502a950a64074fbe7699f59abee7db6b9ce3f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "12137d590aae0c722e0673711b63ca7347914f1a9d398794c2f84457ae8b0a72", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "ca86ad4d0ed5c4fef769e607479f046ff744fd0136b7d4f13f5abe6f81b42f34", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3e884e191c1ea0e94298079d028f9e35f4800b4ecbcafb1ac503328eb1e97778", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "0331633980344e8ab098cb3db149bed5e8a96308baf06cc9a8e350915c822b73", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "0601e74cd253df88d30a1baf5a7597f86aeca24b02f5215426c0c02dfefc08be", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "3123cc99fa43aeaaca5bf2c8190fe7da03f1326065982ccf8c69a75531298a88", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "875f445874c73fc87f766ffa3649920db30bf36c038cf4ffd412db30c8fadd4e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cf69816d2aeff5fdc1226e78acee64211fc0c233cc248b48de2a4175c4f96552", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "6238802dc9deaf4357fc8310dda0f74fdfc8d640b2e96e18215e1812581e4172", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "48225d67b424f9555649e49fd820c70768b5380998fd1ba5bd3574643eb8834a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "469b4d621d2dae2a45953c02a63bc0ca0ea8d287c67a21546bcac2c3cdfd862b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "38d081410f05721b78b1fda0bfb4a07caa35b59bf4de752e23c4615491db2dc5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "639e0cf7b834b188cdf2647d64ea827f94bf725bd5940740ad310e454d9fe2b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "25dbce88cf5d2fa49be4b93cb35a383d851d14f23ad6f26cfa07d1fca71e448c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "0c4d1e38d4cac934c0087a1ce99beac4346f475ff8a887f76158e3ef7f50b8e0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "cff3205ac4f39bedae86dea925ab8a411da29f491fe5e382309626238d8d1ac0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "fed04296cd7ea7645ff20442ac2616f0c7883764a9e084eb21ab99936b1c376f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "3c30c40b4e75e8b371185a7b39e14a1bb8316f188b5a6994a72392b33c458132", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "8115f11c164198fcaea50f946a71214e3518961dbbd64d7c2cabfa50b175c3ce", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "82ec21b53b143f27cfba3aa16d712ac5e00f30610b5cc3b863f00703febf45b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "dfa08936cb8bb903ce6401517f708631307c4382984c784debd80483d84d87e0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "19cecb871510148f163f961bb49c7b65c2255802868bb2c22ca6be856061c8c7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5921a26b79541b3625e003cd4ad4892b6fcc75772356ce663fd69539990b7a67", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1e51a526b00c95a1ddd2de7f23d97adc9a44d7470d5a91756ac93268d3e9d1ef", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "c7c5a621c48b0a905b41eec1f7ffe2a4c76eeccd2ac1770c33ecd6e691cbeb22", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "9217b3ac409fffd26aecd8aac61a3cc90a22143993d673ed940837c4748cbbce", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "68e9744ef8b20be886890728b84c24fe70e55b138ab365ca3ca212688eee5aed", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "a19e6dfc61e1872f36456be55fe31f0be8ce7894c44d075cd487d2c5f1bd9a70", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b967c2acfb48677bd6402a753ce360546c36ff377d658b893cca6c9b40de5eac", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "1b21b11c79e399858429436ea1baa12b97fc2499fd9eb2f2f9c1caf030c37e11", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "b47b7b8b31970b9d86c1d1290f85beaa75a4701da0ad8276619780ed20556056", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fb1eab528f370c81df6a655e97b3a8585ddcbac8434d1f683cc7c903609f33a8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e368bc8d544e084924be656d303b193bddd8e5d2e9d1ad00fce7b58f167b54ef", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "345eafd63d97e8bc82d76d66f892ec10282b9d21670ffc1741898b90130fc856", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "928ce22ec6ba79f96fe55c7cdeefe2ee62bcb4758426b5f5b5e8dc580b9d8f4a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "7cb4f62a3b5b73832d84be8fd4021f6bd38dc8cce237e5ea287c1cdc968c5064", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "b022dc2f44c5e80f11acc82b5bb14a980a3dedb2c98af4cc153e79b296c06a35", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "96a58870d95cbe609156807c89e88806a5e1e6898cdb207d0e1425f1c8ab7900", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "5d64a0f8fc2db6a936e60d85b87d2d4332f4a53c85fc27cc5671e426b6345597", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "228f8623bce9bca6d85a2464a774a3a414505d31d3620f35de483eac08263f74", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2ecffcf5d28f489c6194e742701f61a23f7dc37e0105ed95395f67ffc26a1174", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d2ff75c92f5031000da9e366c4e3205b2b7df8e271f78afea53e0b1f19d94ebd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "563398dfb60c8f4d08e069e88e8f6e9f8a7a7d2a5c877f76050af548ad1a6b86", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "8def246bb3a30b517c5a07a7eaa8457e16116e9ceffba8dde20562f20e0ed565", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9ab91ca442d793d83cd01094d04ad1069af81bdf1f107a73bd0416bcfb726eef", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "b89932f633fac79523136d95a73b171f9adfc7a18dce8c4cd09a6f60da1eedaf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "fffa3aa16f8ad9397774d5a379693e950beb89eeaf199166eb30ddb607773474", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "30161f7d604e9ae0441518fb55684923edb9e715c6ba33562777772800fc1e70", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "4666aaaf4484b7604916a9d0327e7c7a4b09fb45da0982b27dd099121215ff7e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "705bc852466e2fc0058ab7a1424129436a333dbcbd532aaedaf180d7a6b80345", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "2e02cb6fb34cee20d12f152d0c8395032bd29501499a2c5d6cfb10762ce54414", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "9ceaef9b9eb35085d4904804d5d42e6db5429eae2a411893dff307b5abd0ed28", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "c7e172a49d91bfb26b112a8f80e6dc7cc5dc311abedfc39dc4a07468718060b4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c815822540a3de85cdffe3dc8ac7460ff7d143ace9bef93eb34e9d3ad3d3ecb5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "61cad2ad9ade428c4d6690faf6dde042a118e13d65711baf62f18e9108b993ec", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "51d2c2dfeac62a025d915831ebe196f4cb4a4c200659654e7b63b4887919a621", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7f386ae3719d67f5735243b2d13a43ff513efcedeb0370538271537f9d94e8db", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5c9a7b5c4e04a03f0ba6deac1d09241e7800ec9c4a2235190c20447295a85ca6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "3c611d6e8993bdf6f39d7059af1d29bb7725693eb9fddd10b69aafde48460f38", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bcd4f6d8e211f3e58e56315247deb69da9c2be2aa0bf6cd8bea8810f714ef18f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "a3b92d0bc9d0cb366d03c2610f9f9225b139bafb618eb4ffeb52a78c325928a3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "830445aebe20e84ee422155841a65aafc80126a1ba9867461ec773fcc1ae6e5b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "de3609841f3e7af189aea683adf5ff7c16b6e6e62e01945d519b24bd5b23adc5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "7b25284e8d2a0880b406a76eb1c68dfbc4c1717983d0a07d3bc8354a60c7a386", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "038923a51af517a81ade0e87e4c7383dd5a56c2c15f890de421dd332ab160dc0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "ca23a64d803277868b595757ca7f4ac3efeb90cad7927c005f8a0ea4b6c9fa73", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4ceaefb8c1fab2d65919ecfe4b4255fed71b51944bbcd806c78fcf2bc9ee1d95", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f83598ce39a7063bcb999a7bd2d39ef7651a1cad091b19e416a01db9e0b08d82", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "bbe6a1422c2d879ff3e112d077e09400cc4e05f4dbd45b82f7701a3e6c61488b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "3319056f5a9af0558a977215677af7497de77c4ece514ba3a95263d3e25ef3a5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "0203b702d6911c31a56c863552ae98a996215fce7d1f4bb395f6851d366bdc5e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "95718a6514ff82671755a08d035edf72fa2f5501614dda84666a97c867a759d0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "beaac8482a92a86907058d611b2bf4d45118aa261df23e705895ed3a2028d949", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "08f26c9cb02a738512715cee170f5715c5401d6d174aaac48f5705692d425b67", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "491a7fa92e914b4472ecfe38448b3145321cc0bbccee6756e9e30858a7c0c95d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "36afa0a86cb45cbe42a5798a7c69bfcb6b81949b9314fbf58993379db95e62c8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5010e021e7724ed9e1b2aa4669806b16e56d58a5654d95757e84e7e559508893", +"T3T1_cs_cardano-test_derivations.py::test_bad_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "f72b3e0cf002db6faa94a6e17150105ba1ec11003ddb15863db247857cb0ca7e", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0c0bd52845a0d3f830d6ae14f4a4a68b8a87f8cd5b65cef6cabc7c44a7a8a6dd", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "3768243cdcf58ebe59555bbad044597de73c07b3bb992538264c62e6be90d704", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "8ca1b9c7190229cd8951f64f94fd5b10bfc38bc34c36ec77921cc9f1be817199", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c0c7d710c97f6c6b52020c086147b6e866aa73311447c7bcb3964a556104b3b8", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fda076018a178c025b78bfb8ce713d39fd6abcb864a19c4bec494b4805310c58", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "011fa0533d0d4cec718e8b69266623d73dad32a9497a2e05be1e63eb0c9382b7", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "a81c0e0489495b85ab865d1516754babc9e43a1f48aff60347fe22d2b6e5d767", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "c89579855df7f25768d6438115a2953e306ef971ddb55c730198e1d807d2ddea", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "030a4e38dc5521ae290b3a210bd92d1b7627ce11451aa98b31125a42e47d34f1", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "2fe26f168f9ccd8941f734c9acf7b4ffb756be8311a6ca361a04af81290e0b41", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "23278ecd31d7efd533ea4e8d041836795e58e8f3556cca5188a79a8d225c9cd7", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "17ced6cd99dec95365884d1b3a3ee3fc525322f281962095f709c950d3dae865", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "34c2a5866bf0b5b83a17a09531887b0f2a69f282b520aaa3e1370434d5c9e5ee", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "04317537c16111a5ba67e75f97aec78a180f12912f397e35cba05c113d8d0121", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4b0f1a23fbdd4a4ee4fdc26beba7e781ce164562724d81cab8317c880f671ac1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "598770042b5d6e716638a3853c9578fcb80bbe25aa710a1a124f9dd0defbde6f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "e5581906310c34c521a39ee8e43fdbdf68cdc413970f97a0e0c3082b270eb085", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "78cd1f88e4a4f15c2b17cab62fb2bf3937844c204e98a2a22d39157fbf73d727", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "7e0ca29248fb40d41660221a30667b71d0c55f64611c4f9960b32d843f0afc25", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "a64036565916015d019103d714a9aa5d077d007b269a11295bc35774e11a706f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "81855e13c5d5119a89b8e92aafab022920a33cdc823f3e0bf0cd37ee1640ba5b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "30cd7125b0d6118097d17f49ddb636ce105936ff7afe82923b20cac91304b2e5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "c9359a65b37eb5f768b14fbb0d7a2c1638a3e83a3e9a6842b9868fdd510b6792", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "257b094026d4c2664eb260a1ef7eaa4f1cbe4961cee3a53ae5b962a82b3266ef", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "257b094026d4c2664eb260a1ef7eaa4f1cbe4961cee3a53ae5b962a82b3266ef", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "cf6b13ad9b340253df3a03f5c6186bd330909c8cdf23db9fec42fb89222f69d7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "00b9d7ed54af3e2b03c625c6e1006105c40ad7eb4078b2b4c86008b44d88d73b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "5600bb8c8ac870b357c8d35e1cc193ce1166be830ea3040866a4149d27d9b62f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "9e42ad07057eff41ccb3d048a8cbea1d308a6926f892bf7e278e951ee2060cc0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "2575bb807baaf0d6df6c26a4c82c5a36f47ed370b3764a40a768d1268014c73f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "f98c761aa6cdf74937d5bb49a1731c442f8939c697708a2e79218bee2e3a9fdb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "68360de550d7559285c4a303c69913ddf6c2122e6c155845bf64b3106b099e28", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "b4db405058e7928f0fdc05e93f2f673cd7495afeb161a8e015ed1cf2496ea0f0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "d74cbe016d6e27695ff1a6d0c3a75f113a076f920d66a33bab6514f95ecd943f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "2575bb807baaf0d6df6c26a4c82c5a36f47ed370b3764a40a768d1268014c73f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "f98c761aa6cdf74937d5bb49a1731c442f8939c697708a2e79218bee2e3a9fdb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "397aa6f2227bb327cc39b7610577242a3628ca7559b8929c8fe9140ecb6c2157", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "7443b4aca85131c15e9e5063b47b3a1c4d9ff43b170c2ad271518cc2b05a90dc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "27a42225dcfc345dd0df5c8d56d2aeedfb41e7ab1d4ebb956b1291804d5a2cb2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "4b45576ab3b800f09d0baa908fc66c9a2c8b4ca90483d8ef918823229dff5cdf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "782e702a2779e30581ece410180bd67a86cdb012d4abf714872e8ea1e6940f5b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "f684837da40760a318811ff2efe7962102f3bf74fe9323d854a71b66c994bc65", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9616088751911bd114124046943dc4d5ab16a3d2dbeba014e06dd368c2001e09", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "0fb0fcd5f6e0cf784c304e046323badc33c70e1a617b9e9f414403562d6ef449", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a04c9e6611e1f587c18b796c455d5f1d9a5938f1b5c3f370bf3a137f53832a5b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "1c9a1cf37f40603e862210a63799bd6484365545d6fe23924812336f1d1a0a3e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "5805c76d0fa526d3a5491ea96675223cfa740298531c552a06fb9a640b34c799", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "4768ff6e4b0ccab237edc4618341c4889c92c9458858a1d30d41fff9191933fa", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "247a02ba5d4f451220189c097ae5cc019fb48a481c504e4425ca66265299fa7f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "41569ce9780aaf14e031628c88ddb2dc24c98d20e9200d5ab25ab164c61eab2c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "4556ad2458f89943009aa683cf4dd5351ad95e4d02c4e91266d187bd3622238c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4e615e0af9518c7478b023784f50fed3503424d73f8fcc9e307d0b1481678a4f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "caa4544aba8d8c8ac520c44b565f8ace930e6b7ade7a97eea89b693603774b96", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "ca464bf3e1ccb3c6ff104947475849db78429b28c00f10ef745db10825421d21", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7613658ae720bf392e0f1ff622c9dc451b8b1a13b2b224bd4196561cfa704ffc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "0e747ffecdd139ff1f17c5706d9657aac1145e1bc92c07ef0daa983adb6d304c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "28d33910da7c496b21ef3dd11425ad0d52c2885cf3a0737e7a81b3504b6eea96", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "17d1e0c49328746264b378a36134ac6e3fe1c8a02c3ae3edbc8fa225c24e0cc8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "444b27d25302ee67cb35a2dab747501fabb9558c3e72f3e7029d09fd81dd5d8f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "e07ebb0981748d59e33c928fde04861b92182940c5d51c4a2f36108fa13bde82", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "faf0795b73cdceebad35fffc19837ad749adfb74c08636e4d9f583e9c1624587", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "e320de528e838c5dd7190d1f0f536830959939fe86800f4e6a3daab4bb1e1227", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d6a79f84a661259cfc4fa4a41635eba46a3393548d9ee721a2685f1361f5aed5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "13ac00865cfbf44d51d3e525207a1203317db6d352e94cb4d16d934bac458593", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "bf546282d777ca232c63c330b8ec53ce90bfe61dd2f3c517944564593c5584cc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "35403066a7fc57e8b07461f83bbfb95dc804cb021cfddd7c863cb77d0043658b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "474c778725d57248b73d80082a5d3af9d0224531f15f877348d3b747a7550d9c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "920b9ff30b061dc5a2521bc1833ba8931a70bccfcaf6cd118134a29e0fd4a46a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "daa914a488f3e728ec4bf4adc4f66a079ba50eaafe36408946adc5be63da9155", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2875b252de5105b94a85aec7d15c3726c7b3a5d6fbf0ad3c0eaeffde10ebc4d0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "5e5d1ffa3775268f693088c4e86aa35b157e723e5989ab65dfe71be7bf28ce6e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "22f0b782a1a7e5faf6a22c5f03dd182379c5344e6bf509649dfa9b2cbc265411", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0affeb1bd78e4a5b6c25525efc91ffeaeb995ac9c0ee87e2d5410d4c603b9d2e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "859e03aa6ecf708c9f27d893a74cb602eef8811f2a40afb79d03211e3ddc0b50", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "ed663676fd629ca02f6e6dccce0537f8390bf65c76a595fc3ea45b18e24d8070", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "472e3b784c8c0efea2d91059d8572a094814f3f74f7e727fce1d1d0041574cb1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "93297b903e175d01c44a7b9ac58e44137aea51de31bc6aec0aef70e6a62970ad", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f5b2ac1ad07b1a984f106c380d747cd6f08c8841308827f1965413e58c2ea28b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "5c0dae252a0e674717927ccfb6d95f5e02d1058dc0e2104842250291f00ae229", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "0b63bf1168913583af3df1c56cfca62e47ec98c960870b66bd74665e91bd3ccb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "86042d4400935e79ce466735d5103282756daaf883784ebbb0632b438ca3f767", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "601cff55a2c69f376b76ba8d373b7dab1f062a3350f08c561693cd706e969135", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "5f53044e1e518f7af4b703fb3cf1ee752efb8accd82979de5f2814827827f52b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bb244d1b4d35d2cb39436439e496b99eb373d1643c4fe1796c9f12e4e0fd9eab", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "5804d2825f349320a30524e4c56674c46d76bfdc0219ae6f65aa0e0967ff73a6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "09a1ce3922bb897695a118bf68d45e7598e2496973b158a712900163483d5cd5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "62bd1f6189402c2afca2a241c8dd27bc7ecde1c39fdadd399fa05aaa4cda6d39", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0530d440daba0a3d450b576d72ec300b277dba47994a1f55e9b68e6df955c543", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0530d440daba0a3d450b576d72ec300b277dba47994a1f55e9b68e6df955c543", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "a4463c26f958e93a133d228efcc0e9f189706a9a0dc6c44d95f076496043ec24", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "75dd6ddbc75ba22e3db2a632f371533fe9485f2ce0b4cec059a50048bd46f64b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "75dd6ddbc75ba22e3db2a632f371533fe9485f2ce0b4cec059a50048bd46f64b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "55a27cfc62611627154daffc8e89a75e2d799b1dd9b3f20ddff1fb38234aa6e7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "931f4ab34f295713a841c9b2f9c034181fe8ad3de6bb24ff842cbf206b2f43e0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "521aa7d3fd3152b441257a67a924ecd809d94c6d5324787ca59f6d66c1945951", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "44322b503a6f6b0688bf1d776b91fc52b1abcc4b9c55d9b391c12e3d147942e5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "eed18501bd6f44a45ae1d55c540aef17be0873fbbd091b33ef87d27b9a510866", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3c161743c0f47c1541a4a6804c9a7becd4aed84f2be1d4af047daee9db5f5584", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c00d93e0c612d44b2b16e3d45f4600e3f477ff14ea85b097e6729489ac214153", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "e5d201561deb38b49e53078ae479600ebef11bfd860b5e97c3d8ed0d04bbfed6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "0c870448edde2c0380857b9f9542149d673bd49840d27b3644cdb86cf851c8d9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "34c2a5866bf0b5b83a17a09531887b0f2a69f282b520aaa3e1370434d5c9e5ee", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "7e0ca29248fb40d41660221a30667b71d0c55f64611c4f9960b32d843f0afc25", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0ec3bda89937b17376ff16539931fb17366d777341090cad7d13639581d6bd76", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "c27c1b1f35c8c5d6b21d6023f842554ce161dc844bcdb889e8c652101ca5288f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "c27c1b1f35c8c5d6b21d6023f842554ce161dc844bcdb889e8c652101ca5288f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "d5401cee06f247e9d1f20a36b543ef926ad62459cc3e72ba94a46e1752e80927", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "a1ff1c952b34e1c4a99bc80fd5a9197f5e0923961422d460dfd1f5af671edd5e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "10aa0ec85875a548cc4bcac6227966db31972f3cb88f265f8eeca675060d12db", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8fb77595f043db91c397dc86cd8ecf39bd28aae34b0b0157096af7918879ac84", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "23d9c5f32947b6d962f824c8a44f06cfdacd50c07e14fe4012ae7ebd54e90569", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "434145b6aa4ee6154bd6b17688a9a7e9beae3e89cb111d7098d01d99a4259af3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "9532bd42ce023f06a3da9f6260d65fee6c537caac4c39811952539286235b207", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "9532bd42ce023f06a3da9f6260d65fee6c537caac4c39811952539286235b207", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "9532bd42ce023f06a3da9f6260d65fee6c537caac4c39811952539286235b207", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "9532bd42ce023f06a3da9f6260d65fee6c537caac4c39811952539286235b207", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8fb77595f043db91c397dc86cd8ecf39bd28aae34b0b0157096af7918879ac84", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "c161bff40232f09546543843a34801c561bbf8f3b88f8b2574fd8dc48d33ebf0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "87c082b29fec5a69760e8179fff1166f12df37da4ed4440b6a70514a7d91d094", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "9c3d021a50319d1f61cfa71c67ee2c2bfd46a929c3f29445480e5d742fe923d1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "ed4b785869cb2fb8540cfa43043666d3bb72ebb3a11df72b25c5d04734cce914", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "c68c5e0eba47d40fa7a77a9fbae82e6ebb2740f4beca78208cf17b1d21dd569f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "68ce01d833d0bdad931a490a68b57a2775058ce3899d423a8d583a1da48913e9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "d3ca529315c67e0e7a1009d958e6e188a37cd29c5581a81cff8a9e9861b81e6c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "1437aeaa2950b08e0af51498db0b05e6db3f4afc7a6711e5cdbe526c2cb29f27", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "4d766da44927f956a17b21673ae99dbbc14e2ba10333aa15c23e3ebcb4c7685a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "986813d4953c4cd72435908c25c00e5f863ecad5063b05f4fc9ed5100cee8166", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "64662dc5fe9c5849798dbe55703454d717447bd8cb3f99bfd1a955aec533004b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "c27c1b1f35c8c5d6b21d6023f842554ce161dc844bcdb889e8c652101ca5288f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2e37c5ee34da97a1b6c451b7b1a8af6bb1ac743cc13c8467fa4e65cb5b2104ee", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "e5bcf936ad927b6bea9d8eb756b5e2590ce054f7f3cd4c2ff826ba3c6b0d1aa5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fcea60690b951eb15e50406947f2edf72e2f33cbbb37a4c0e97460142cbd3617", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "d44f5af1eb96ad5808ff2c932b646b1865956a322f7651c673af2b5f2869163e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "67813e2fb333e850b8ae186fd13ec34cd376d3c8d7e294436de27674cf47af1f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", +"T3T1_cs_ethereum-test_definitions.py::test_builtin": "519c42d71c73c20ddacd0c216fca77da6c35ae8ad2b5764eaee15f88e775dde3", +"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "3d337a849134f8e83207ab4db004fddc1cdb39f5b596ee8ac3e9776f6f549c81", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "4c64f47a05f0f9c45def8240bc4c8b2b151b5f0ec1c025ee455e7f1912f1978b", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0140884e6a620b7a710a82045e7d2562d4dcd5298e9e61f850607216b4e91b77", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "af40cb3d357d02beb3328dfd345fbb833eacf163da67e76b26514f48f0990f61", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "1983816e5e6088c18631b06afc2a214579b112313ed95c0b21c22bd1081b75a0", +"T3T1_cs_ethereum-test_definitions.py::test_external_token": "da3fbaf2216266b21d4d31237481786b2da7a65a58d987d94c0f82d438dfa2cf", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "1340d38f80f6f0203fc60f7532115a678e5bc0321b3b674476cf123b3a7cbcfc", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "4449a983efdf0b820aa057f8b1ec4568b786b2b5da4f7d7cca260c4f138b0fd2", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "86034133ecf3306f195f698b347018d81c7b80a49126dc053ec789e6a74cf3ef", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c61e8b0093f723453fdb22b4803b2f51263695538362d908cf14d97a4401d215", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "d165120660fe947555d1aef204cac03e86967cbf06bb6c4ca9a7f2f196c7d73e", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "9898b320bd0c9def79f7324b33cf000d44f7e04413a27a065119403ae83af046", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "b0d9b978f0bc7d7fa0a556c9ed0f513c71c85338a3f4b3e61b4ce46cb4ffa2c2", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "77911b1f397056967961a1b7501801d57a84f1e97aeeb76ceca61ac403497c53", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "e0c43b4f6d611ffe74402bb558e97a57b1879a6d29c8360bfd760d1e968d5bb5", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "ba149e347a226d23ae448af811f3ce9c5f35c48d64c434063daa946108aa0ff4", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "9a58929ce649bacbdeb69cfefa94feacfce909fb92ed8cacae7a23e71f440f4a", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "277a4fba3145d22f5001497650eb4ed4dc937f8ffaf1caacec7ce9ef97d489b5", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "302224abb2c29edaf224983714827d287337011df24f42f056053df6cb9bb543", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "23d338a2d1114867bd90d9855d30ee06614f87e88e99bc95159ad1f7a7736812", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2c1043851920bba820c433d9a1dae5c2f779b51e280baa2cbeda2b7b66722f44", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "e429a159156ea8721e7ca919331e52cf5a1866472dc6650e4583ef8f1255119e", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "7f540b7561b891aa53c0b133c8f83fdefbe2f412d432f065b6d0b289369d5f90", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "f0d75ce83efaae73b3e6267ea3987ad8c82c0935966a0ac33d7b2b82208a984b", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "76fb5cc83d06cb8e5a9fa3a177d91090289676d4b1fd389837faedabe5fba654", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "b0bd4d095113712d235efdae60a364e222e4da1c5db7238d91504d94715a120d", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "e3b5c16b4cf0c56ab544b75ea8aa3fc1a2f0280fafe3a29c8829b06d095789d6", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "4812ed2861dd8118cd0d8503e2e9c9b924f1759db340c10138928bc7c7ead08b", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "d44eca584ed1e194733a28d120e4dbd9e49c20a9b90228ee3b25a46fa845a480", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "b0bd4d095113712d235efdae60a364e222e4da1c5db7238d91504d94715a120d", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "b0bd4d095113712d235efdae60a364e222e4da1c5db7238d91504d94715a120d", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "b0bd4d095113712d235efdae60a364e222e4da1c5db7238d91504d94715a120d", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "e57d2d567909e66452f836424849780bf9796427fbfcf1be260ea49488d5e763", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "d3044951820b81c1543de6f6b22e36083d6745f1e96e638259e0613c85bd6cb9", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "54c5ffcdeb6a8f4a6669584c8839c417dd48dc648f03c88cfb2d82c9c517843e", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "ca4ed388f750dc34de14c987e5cb92f2e73ca52e559b525ce550c50a6a7397bb", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "0c7df9972c6911fd1b163ea125eaee2fe83fd6cb4a471639802a7e7711c236f8", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "9ceeedbb8f5ffe77a18afd93bf3827f1a9bbda4f95f101188f73c4d5a9d0715d", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "d8bc28cc694173a807e15bbb29832f019decb925ac7ef0475836703d7cee824c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "7a7617d98a68e3409d4099a1e30a4e36798539bab668e93442b6ec5233288896", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "568bd314e039ca93c9ff29343bfc7039daa546464448943ab205b378cca08525", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ce086bbbf8232f02d6833ab4a7829adcd48048af7209f533954cf4925badaaa7", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "0d1bb2a1891957a695554743bca87f9c1f0d4652af94d269e3c7eec0a733a089", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "b0b104b0428536a05e9d636c0d69fef393f104dc64adf9b9b51c9c311008b9d2", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "0cb0e683a1d63226128b3b8ad1a2f7fbe518151bbfee640d6026dc6c4218f791", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "0cab50026e6c7d6128ac9f3ea996f9ee2793ffac17010e30d7388bea1f5dfd4e", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "b20a4c0bdb0ede976d2747e6df016da7c07dac24fc1b20172f5835c37b896911", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "afe056312c418113ca6d116597422418649569a1e9cac05f10368820627d796c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "1395ac363fd04d7e987b51b4528fc7d70f2bd074cf9f71d3da423b5a2bfef26d", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "930dc712ecec6f262d5285b6fd1194d13b3d51a228b7dc24632f7d36f2a7eb80", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "0d1bb2a1891957a695554743bca87f9c1f0d4652af94d269e3c7eec0a733a089", +"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "68b4a3407fd306b28b2b9f21f04ea665d5f68d93bf0710df5e77742d6262154e", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "b0a9660c1fd1a33cca4bb22273cfbea684341b92b6167a28f9108b72f378fde0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7acb46a07600d2833b2f108ae01366d076e448926bf568ccdf5a3dde3e36a06d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "07b62b947e8f45e4f0adf2f3834ba86bc9120859d56f3fc6cbc9b2324cf4c7ee", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7acb46a07600d2833b2f108ae01366d076e448926bf568ccdf5a3dde3e36a06d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0f865c27e096eb2423c258c000c822a5ff7f264170e5f5924b4354e636482dd7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0f865c27e096eb2423c258c000c822a5ff7f264170e5f5924b4354e636482dd7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "8e7fc59b5ce17b1ac194f283eb3c1a3134f81b876087bcc47ada84998a4e44d4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "274cd349427225209890ded00aadd7f3c675452512487a9b81cfd9ea253ecff9", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "b6e64e6402680deec127a53255d67a8b86a30c8f02577008f1d92292b0924b4a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "b1df18550d4fa642490310ddc912061e0da8425b7a76008b00a5612621d11aba", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7e54501e14f0840cc80f218182e2a67adf5f2979f45bdae8dd76f122fa7cdc37", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "b8ea1e8146d900793d6c76bbeb9134ab63bbcfccb2df5bb40f2accdf32f39f44", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "8e4f4d694f1f693b422d66f117b1132b05418d1b96f687eb69395a4f65aac617", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "1eaa0d59d0201364267924678fb176d14aee897bc7e2c66366e468957cd1aabc", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "1d778059e447123a0c62963b9ccf29ddbe33c4306983420d1faf25390e2cd4c2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "5248f5f725647f4ec8dccc73793eb44834f042539004758bb035702771f2af32", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1d778059e447123a0c62963b9ccf29ddbe33c4306983420d1faf25390e2cd4c2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "fa642af5149f2e3d19d82a371d93275d7160e15f30c48aa0ed57352f65af0801", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "fa642af5149f2e3d19d82a371d93275d7160e15f30c48aa0ed57352f65af0801", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "8674ac19a23b711a2b927ab7f9678732fe662508000d885f8ac3c2ccee55cb5c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "a99c749be8ada3f83df4691703440cf298136aea1a9a847fda5524578c04f78e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "41f01937393d36f536a6e95efda5c5b33b397e1f1ae5d19496d846dfa8f02345", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "b1df18550d4fa642490310ddc912061e0da8425b7a76008b00a5612621d11aba", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e2e57aae4e0c26116b77b9e5ce1868a67fd54dc68538a1b2098867ea4a0fcd11", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "573d1985a2f49529b75a34d76053d722c1386fbca07cf30855f6b37364d31ade", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "314471fa182e68c85d41452ad286660ecfd7d475da2d1489535d21e8e25e06a5", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7e54501e14f0840cc80f218182e2a67adf5f2979f45bdae8dd76f122fa7cdc37", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "8e7fc59b5ce17b1ac194f283eb3c1a3134f81b876087bcc47ada84998a4e44d4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "caad9d69046122531524f2c80046ce4566843260628ef83ee8ed151ff21f598d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "b6e64e6402680deec127a53255d67a8b86a30c8f02577008f1d92292b0924b4a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "5d96b736e041c8a11ce48ebe21f3cab763aed31ebd2d8e20a9e6df545d25605f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "d99405bbb4346f5105bb2de4d3001ee8c0975d9d622b3e03bea820090e6d2209", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7e54501e14f0840cc80f218182e2a67adf5f2979f45bdae8dd76f122fa7cdc37", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e2e57aae4e0c26116b77b9e5ce1868a67fd54dc68538a1b2098867ea4a0fcd11", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "8674ac19a23b711a2b927ab7f9678732fe662508000d885f8ac3c2ccee55cb5c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8317185e499bbcffd637cc86be4fbba23d5ec156b3bccd5eda431a164d628f5b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "41f01937393d36f536a6e95efda5c5b33b397e1f1ae5d19496d846dfa8f02345", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7c855c2d551a2bb7bc464e920d8b472ee5eb2496cb701bbccafb4e965d052708", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "85c5cb2fbbff2cb071b4a732889788c2043d2818671286e789548a8547d14866", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e2e57aae4e0c26116b77b9e5ce1868a67fd54dc68538a1b2098867ea4a0fcd11", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "be972eda7f2aaa42775092efe1025a3c2dcd649cef57159275e61ffac287ca57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "be972eda7f2aaa42775092efe1025a3c2dcd649cef57159275e61ffac287ca57", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "7dba76e4de853473d0283605d8d0bd4037fc80bd6e9aad9703d96d533e7f5d7f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "1376aab55d72f62512542811b3143a8af1243b919ef2f4bc1ea336eb8180fe91", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "5b56063e7a8f9cc5a8574dec164603967b94e77ed0dce7737a008c2856336d87", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "5b56063e7a8f9cc5a8574dec164603967b94e77ed0dce7737a008c2856336d87", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "63ddb1bcc147b55999035a581da9fe9a607db9acf454cb307414b4b5c5e26e16", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "63ddb1bcc147b55999035a581da9fe9a607db9acf454cb307414b4b5c5e26e16", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "9fb0a5c06500ffeaa6b953b6e476857ff20a70c82d5d7229ad93503e212eb0c5", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "9fb0a5c06500ffeaa6b953b6e476857ff20a70c82d5d7229ad93503e212eb0c5", +"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "26b0847640991a493bab11fe8448110a109619e8ac807737e6817f9be046fb72", +"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "26b0847640991a493bab11fe8448110a109619e8ac807737e6817f9be046fb72", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "2efcda3152a2c8f45b4b84cbab237010e92b9252db2a9df18a69201413ab9809", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "70c03a56bb4f4a237e80ed5cf67e9014814075396f0092d2ca082f1c0e06d1f9", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "41fb5ae2b836dfedd2d3edbfd573b7ebcb278ecc1a9cf17632248f6e96d9408e", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "42b1af946023eb074d764c4800ed8dddc3a5a0217e8ef11788dbab4e24d13a71", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "475ced912a2fa37ca7b3deef526d651583f053d1e92b407556c21fa469efae4e", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "5870264ea9c210931979aa9026f0ac437b5d4e5194286fe05f5f00cd02c93184", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "52921c23ee83039660794d73ad388ec7df876b1399652d4f98b3fc2b3a19ca13", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8b09dd61b8f0561006f1911992d7befc6af75de97f8e62b2985afb61f0c1b03d", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "52204691ba449c5b535a72590f1be0a03ee36d7adcd6ea0e2eeb33ec3b5cb84e", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "8ce3e815de16699c71d1654738178dd2eb8e9b51eac2f27f0979b6f015ad5db1", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "3ee1ee58ed453f39dff41ae17b924906f05ca72992bdace84f761080a0f4769f", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "d952f434bb6b1002c556e7b82c2c7359a22eeb1c294b4d431c9c2d1ea4aa1a8e", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "07b4a08130d529d6026e5f416f51199877b45b994f332c2380f840674ce99452", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "bce6655b89f9c3d50862a3f7afcfd7a613aa3e04dd8c56a878ca3d2edb095d2e", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "840ff896ed73e52f8f6746c425a31dcb27552dd86f4a65d88356f4860359949c", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "c151c5234691339746e987ac7536b31701b941dc9af54293a13e5b1e0da9817f", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "dbab3fc37b140b9c624e39b9fbd98fd52a615c917f569dce7c74f34320c5dc1d", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", +"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "4f39852fcec30a852e74b8ede0043637b67598965f0fef3925fb78160dd7a7ea", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "86d4291310704ea94873b8214865c2c13ce37ed0ce770fb58a34639faab08a56", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a96d4dc1b4167a6680f959663bc1d6ad4d9ea80ed96e409cfd45f935a21b9c21", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "38a245516787319f4a0a645a6072ee4cd8921b95a2f5caeb9f875a40952c7936", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "135acfb8433280183d350cbd8411fc47d6ee699d323330eda85420456850b276", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "042f5fdc9b29bf084339bc62136f6035ab8bdbe0f4cb9fb8c497e4980a34930d", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "9416bdd24e760be97e439db5d23cab47331c679a2c66bb91d551765b06f62555", +"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "30ae4806ff6b6fee52fa42639444a4fa2713a969de51b24398d28fed5ec08171", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b18fe54c1510cfd55f65c20cae4c50f113cf6053ff9fa06777789ddbb7856f7f", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "bc32053b2b12c960eeee5408309c80e91a53e226a99d4611cb12f3c67b91bbea", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "e5d4f54bf029f98a3e30ee9cbb98adc9fbbf555a57e3aa1dbeb1490ecb8d092f", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e5719be41b95c3e1a4c22411ffb160ef7e6d961985b52db055cdd17cbef2bc21", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "71a0a7daebacd7a544842b80599a2b7f2d2848d13054ff57e3424364fa0add3b", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "97ab65938fc4f8249fb2810f8a1a8b7bca222d97de93608748c090b259e6fd43", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "01eecb05491c460de3be2c05190bbfb1f75830dd5e8fa4847ed3344edd561397", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "feb7b6c0e4eddaff2b131ed114be67d10db65744c3db73d4376beb98469bbc24", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e82ea1d420c6a9f5958b8dc4212cbdbc8fd0332f619f5ba06648f586ca430ddf", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b7541f1c5c7380c9c46f7bc6ddcf121d75d383403f6e733da748eec7f65d8285", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f3ced1d3ea66dbaa1abaf206b9ef26651899347aaa7b49e60db84c7414e80cf2", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7c1d16c34372f09a63bb433f30e63d98aeba165e6e0a1499e997bd34d903c421", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8a5f6e8d036b43a58398409b34682d40f704a3857e00dd8df0dafdcffbb3aafb", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d21c2a979e5971989c58875428b1e23d3835722f4f323ad78c732acabf63ba25", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5e1189e03be25bac6b8d6ac0fc8a098f8fe781a58eada0370c6f195136f87a60", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "97ab65938fc4f8249fb2810f8a1a8b7bca222d97de93608748c090b259e6fd43", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "77f908b5e788511cc0201bdb7e54789232f1245f2a11564720b0f2bece9cf048", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "7224516374d4457838c964efbcadd470140053e0f2456dd5053361d47ba73fd2", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "40216e28388c039707bddeaafc43b96a410a112e46c56ac6c48118758f096f7a", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c8826d0d1ad0494c9c723425c7ec57226c13116b82c0d5244a10137d27822460", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "99c15802ef82b6c6638d51ace77dccb7b70fb851d33d2be0e6b94a1a3a6a8e86", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "cb949daba4e381c1c7970493c41b10bc363ef425a7fa2e8a813b715b0ed89dab", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "997860a35d5801281ad8d1bae69d017b6ac179f1c57fcf95d6aa7c9966a75c86", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "52ef4122911bd928d393891e76d9e324b40281e48ced4820372d8b1b05c15486", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "6289a90fa22d5a67868ce84ffa2a4b8fee856e4ebcbf1869782db9bf32050443", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3cbd19a403d5fa7c0816956db70465ec43c992d1beb5cc76167378061525e943", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3f20d3bc475bff55ca7aa04f2175714193990815fa1bfc835e28635d9cc8768c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0b8c85824db2ab953dd6b20348f17cfce23ee7009f3eb9d0117261ed6f063c4d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "3fe4f4cd7284ff9e538658e67753cd65ceab3283fc2e6640f5693d0750900144", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fb1a15a9514d7e2da8e0c43cafb9d0eea217bb17446ce09716632195175d176d", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "14d7db3e7f7344c2f56ff7b4f0961f58f741d01d9eed331d107739c3f378ee33", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c94ae5b8fab4a2f68e1d63ddc0abe5c5ab50c005531a08353086739aa8e70371", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "eeac9ec92c69806892d8472b6d896c21cbe98b9e11fecf83eba74afa23a481d7", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "aa5a6dd403950ec60f120eef6755d73b8f5d4d778410e8c622a544d03e6dbd53", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9073012a4649fe2490794e7ae98457c0892fb5c93c868b9dc22506b5a2a51786", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "7bbcaa13b35b1ad3b09bdfc62203a4b9622602fb83654136a242ae739cd61b39", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2e6c9dea686b0aff6892f0d943bc205362ba0a3d861bcdbc86b7f725d80885f4", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "6b47f2346191704e8225841068619ee94e585605e4b34397abc8b63b6f98dce0", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0f4059f7a51f6dcb2d55ede0a517dbc87db5e44f50ffa357eac296be591f87ca", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8e4beef12088cf81d02e19a4cfd9befcd818ac955103df7c91bf9b8d6ae7c2f4", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0e1ef9aef9df4c8263750ee1e99a0a8d57e91c2213c72302abebdeedff605ed9", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7cbe475c22f16c291345a60d8a1d76cb63386359a495b2a8839b36d73c0772de", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "00e18240e2e31bba8eada3b8bf273cb80bebc68062238663979d1f3e2468f524", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fcc5872dc571de0ac90a8b4e85b0c71ec3ccdf57259395d64ef17ff77c817109", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b52b6513d853fc8e8a86dedcf392b2e11164d53dd968a9e01cbd1ba2562640c0", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e2998d7af0f778bd24035d463e8be2e0e9449527ba0613c82f7f39819e247de8", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ef34de74fc9880d182840276867d4cf2c3a7c4a6b76be5006042b0283440ee1a", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8f8175b8dc3f206bca2adace19c5c18f12deeccc5ec252993bd728e2f8248dd1", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a3dfeeefcf64608588a2cbd8afbfa1e20114db93193b6f567a828889fa023ed5", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "b88fbf7e36fd8c965a3473a199b5e06a1d6221b38abac12a230409a437f6d45e", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "24ebe4ef90fd514c7875bc431084bbdee25837ba0e691ea57ed132ef24c56a21", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "155c282c74f57cd70de5e2fd6c3a631cf61e2f784558b768d27ef2523827cf4b", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a759baaad79a72c6e9c9542d47880433f71be13be4014bfe0a6ff6e8a0518993", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "31b98378e1639b21d9b0cd2115e2b36bc660a5a0cb23263770f0f6a2688ade6e", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57dd91eafbad1adb75b2619b1b02888f915ad5d9ca8412a64d3a2506a387715e", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "3dbc269446bba1593cd241c42f4e901750576fe4ea4a85560c90d43dc019a1c0", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b622ce57217b0b2549794d52977d01ce023178c6ea9bc73cc6f29f4264d61a6f", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "57dd91eafbad1adb75b2619b1b02888f915ad5d9ca8412a64d3a2506a387715e", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3dbc269446bba1593cd241c42f4e901750576fe4ea4a85560c90d43dc019a1c0", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b622ce57217b0b2549794d52977d01ce023178c6ea9bc73cc6f29f4264d61a6f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "acaae17ed9b0fbc11e0cc9bf43a680155eb5613cd594d8b4c003004bfe3e9575", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3a40ee7f271952a52a7fa156ad91006ae0747464dc86d85f3d18e0af5b6f1a16", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "96f01caad0447f3efbe6f19923b024f3452833a8d1b312e89896f3cdd3b4ecdd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "71b26da6cd628a99abbd5a71d8d3dc2a51f1db9e9c661a4606435078717016b2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "fc06f092e1baaeabcba2189741b4812dbc041c7f0acd3595304ec275d68977d7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b1196e4d197399411f53b7e4f655d7aae31b4b8d30e60cd7e536c3d6ff0c6ea9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "e758af17900d656659cc33cfa1ff69a21ac651f986dc7ac179c35e7bba497e9b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "a89eb4d2719c16883c89f8e270e8154410a3e3738fd25bac4e8a80e8510ca396", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "44b8fb50f21d5dbaa0dd24c3abbff08f0fc35b6ac973ca10c2f0b5840cdc998f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "77898973ca7fd7f80f88d44de660aa390cf2b5fbd6deb7b777f75a69ecd1cfb6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "293c447a30808b3070e30815de47c8b3072af9f5b4209d9a76d5753c772cced7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "c79ce240ac63092a8bf19387339c120c245c66865deb7b492ad1dbebdb6ba6e2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "80b7370c6d35aa031b67d4e7275d461c4d78cefb6b4d749187e40761fc844979", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "8675522ebb295ff50c363c04f19be113e64fdf7e76a7167bdc4db75061cf64ed", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "1e91a07742c689b33fa6ee08f626f50ecb09c7d3f8afc9922bfd952e62fb80eb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "4cc75b8253f79410966d3dfa5eeabfc4ab3edd9e91372c593a642aa739d4b2c2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "01612892429b47f9f5c6ebf2f5d3701778f7755f60e6e69f519c3509b4f18908", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f9c6bc70f9ba59fb7ae770cb874ce404ead99b1cad14f4e596ad71d63bfdbca2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "929b3d61c149da8e4b2506ff7fa8b668704a614dd60c919e137ea3f6e7d345f9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "61c9c3283b544afaf6fbeecca53995649c9e0642d1fab44f8bf61043fa2e17c8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "eee0a1377a640bc4eaf835e8cc65d11c4d66dc87b94add2803e75206bbecdc9c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "eee0a1377a640bc4eaf835e8cc65d11c4d66dc87b94add2803e75206bbecdc9c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "52a85bef8f2eedb7f7459a5a8952a4cbc5ef4b52cd133bb2d4daae0f594832e1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "39f8547f36ce1c89611620285b4612d6fa3cfea1e30e4d43c68d4c100b73e0cc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "03ea2bc77d125b532627052d5e67e535250ff904ae529dd6f7bb454b01cbc955", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "416719b3db8b7f5cb20e1c95cc653580b2eb1a1729ad399e75e2b4d7f526d382", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "36940e29c91fa52875616493c7af97c8a6303e95c413f05fd5f1b0c6915994bc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "09afd6fa5038446962de5e104ae7f1d81b1ea945b5df01637078a2380cd555c0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "793e95ad0a4ef3711acb46033020677c88394737e6e5ad1cd840f5f898900863", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c632d4baf90a6349ba7f20390e27938e4701f3e4c7ab5f06d41c1c0d5d57e36f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "5cf3e62aa4d56d8d8ceaa8027cd592475b45ac904dab5518703f3f24faa91681", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "4d2d71a7edae6817baf64eb5380999ea55b051c335a2de178c763b5acf159c18", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "184ca82c9a9214f8769a3172acb86e9e224a3749d325801bf7b46c28ff815490", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "cf7465491990b5ae74052530815a16fcaa726d573de72fa10a0985667a9ab815", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "c9ce754d8ef269e979a2e48cb467bd82810eef6f6f742700354cfb4151a5f756", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "734dacac9c527f6ec7e6cf85cf120cdadb4fb788074b0a4e0ca2cd415e3b6e34", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "9d41a103de0e39e03b08ed867d33f07b9d1ae6f2bfc3888d38c223ca1fbf040c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "35bd461ffa6017dffc5c89ba1ecf8ebc227a3ac926087795836dcf8e718eca28", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "12355d2c27aaeefebd040000d76bef93c08219463441920ab4cfd27b6da7222b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e34acc9fc207787ad94b7884973315d659e9f561731b1039428d2e2b548dd94d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "e8bc8f9a7b6c77f2e035aa4679d981281a3c9e0441f2c2fa0b0832b94cea500c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ed4264a7da4ecdc23e936fa4f8587ca9cadd777991b02a0b4f9bc7ba8c574fd8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "aa3a5c869cbdf0f96793687aa39c75927b2766ec57b3d0e7ec5fdbc52c173ce1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "42307db8319f0ea9e959d0c743b91688bb4f06d16c21e5ecd295a599be82aca9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "51cf7e80fbbbfd490d16fe1c52f3ce5efd86aa1acb20da8732e300219572d391", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "3454f6f36a791e806765b175e48840500df402bb26b6b9823b3aa9a9c7498086", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "ec3576a859965b4330681ed43444c8dfc2d7d02109a8de76caff1b1df12d873a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "2dc1b529db4e9069c4d13822d036f4453f3275467010bcc199b2a9f7e411fce6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "886a852cc79f7ed0f205e69e23741c900f84518109722da6b9bb845ccb551b49", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "10fb18dbecc0c2f7c97e858c92118bc6b1aa7986e69ce433c6a8e46f570eae17", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c7864dac12058f1eee9e8e69349c1a740c7c7c8adc7ff294bd156087325ec11c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "d29e1926635be225d92f4ae4dabd06fe0fd2329eff266b877a98581106647de9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ad223fc723e7d39c387228a25fbc52d9823fb66f47917896329a69443587c4d4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "5d29ef111e114a5c15db80dfa31ca03a2e896512b05e0c158ab6b6b88a9f3c5d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "d0d176cc4d9414d5ef8a667bbdbec5b1cca50ba12c30c40610661d8eb0221493", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "9c1fef5115c1148f860d6043f25ceda9a6607db0a7a8b1bf12aed5fdf04becb4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "46046adbee88b10af9eb09f4d8338f06343373c2fa2ffd2ce5caab41413d4edb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "e04c172f02d2c6d2a3b5d378b3f0ab45ef5b0d4d2dff04157ca04ac98de877e1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "29fb43a02a84b0b781f562515e9a5cfbdf7d5adb5579d1a57ca42068cd18bb57", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "03ea2bc77d125b532627052d5e67e535250ff904ae529dd6f7bb454b01cbc955", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "675c3b75e6ae403efe6d6c5b5280844438ff3691ee88061cec97b537f79a3a7f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "5c606adf0825ac3d9573a07d1aa089825caecedde8827982953c46bb9c63b809", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0b5030ad29286c5938ceb09d6956b2f44c9488d90e7517bff96e2c301494d1b4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "a7b03e780b01b650b4d32b71dd5dcd92cfe2b8f8e8cd209582119fe338862828", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "6f0f107f6e05d61503a31e21ea769f5d9d5dda4fed11c9ded1f123c2da663156", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "4f42477ae2acb4f0ff3493984668f34da86ce73df9e20f933f724594bcf5c6c7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a79be0d65ca173fcba0a54d5640ed34ef25f3627125b181d63c8fdf0c1de753a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "18ce9b7ca7f9b8624f696c74b70b101ae1bf7c2e5d81204c7218ee9ba27d5473", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "00f80564af22147d73b60a6bcb6c5cb3c00cbbb42871ea1d51ffe91a440242dd", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "ff63be464d03dc0c000d72c3cd799bf455b968b7b6dfac30b3b19f4f3a44a7c8", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "91427ed37e9e8daeccaa7fe20359a656345ef945f7d7e458ba430c02e8c71602", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "f55a09a2182a02cc26aaa269251eef7314bc0dec19cab79b57129d45e10b5500", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "97bf55b5ebdc8558d6267c9b3ec8225582a09473c8e41150650d2da4001a9077", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9d4107f8775c15a8da2dacc03f37a1d127422c8c1047486f50cd8e04d69679c3", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8ba5be02ae9306ca2ae1cb183cf06e572e9c42a73b4d497514913f96b3c40e8a", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "922f457f2a1cc8b4179330f953b4010790d7a966fd1b98bea0167b2985b19720", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "df4fb53032fbddf928b1aa28b45c0893ca3f223799188148da442e262541dcff", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "ff5c2391c29fb35d9d316ac38c027cd2a11a52d463af561f50d48d1e5fe2f367", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "7bef649f3f6544a60adf8c32d29ac4bde9900f65e98efe3a79cee82a5124fd8b", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "29f8b17a37ad9bd94023f0da6eb941dc3aa9771351fc2b969d19171cd441536c", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "356cd7d3c1b1fb8657bf445812074857d9e48108bd62968394a6c7af6879cee2", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "4c65b071eea840ceb90ecbaa80c724bb4a21a1ebf8b79f671408a595dfdeac7a", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "7387e8b22c33d38f0c4b0775dbf626bdecc3d9d07692551a478ae6481f5341ce", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "1b2f74e841e939b87ddb6cbdd6b9ed73b57e4887edeb54799e2aed604e2ed910", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "c91e0e163b89a35a990b600f9799fef59ac24ae44959d7887a498d45429c47d4", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a33df1c42758a3e9b16ab14874437a8052cab494a729fff936ae2a347be74ab0", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "6c1279c302e235d1c223d06d0a29eb5449217bbdd4cc9ba30a242fefb2333c1e", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c45246d319be1eb7e532e0db0c97d724883b9f7cb83aebfd872e082915ecbe4a", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "d0408d748239a16e00fdc9bc867bfffd56697cbf7e093b026430a4a34800e560", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "1b4032b26887edf72b877a9757c6f1b72485ff33e1e12d7cd1ce89edc1bb6d10", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "65defb235f87d6b43a1da12e004c4de90dda7589fd5186af9a6fad40667a90ee", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "33250f58847e51ef0b75dde43a5a49dbd0a6724eb37d05412d248cf4324b9822", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "7db38a95ae88dca6ede0c0627b76e0bda5d4adfc96634a3cf77f969a92d14493", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "2ac86b97caf5ca260dabbd4e9eb9bd4255f6ced817b66bf5a0b23228b392dc0a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "d5fffc8f172a733792be42f74551754e490e939212672e5ae52ea397b0c0d4ab", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fd2f608b62fd6a09c0ad8740098d9c9799eded72d533da40f389d8ff50986c57", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "1a77b032a7242748d4661e2f7f3727d173d693babfa91c66efe00601dcda2068", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c44872ce7b3d3caf1a0e48f772ca784735cdb2c272f920efdacc9ede683ac3f0", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "756b84c66f87729d8afb66b182c1faa96f45849f34b3ea211a826f7d0110f527", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "f1cc1a12204c6cfaa14d3ea8873ba8700bfafa6fd10d0ecde5473bb541fb7fdd", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "87ff04bcd924b7ad4a2d5f11a9f08947a69055722990d02e6c07d8c3b73e02c5", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "61683d304fb2ef45343a60f55079fcbce9c7b3b1c248243727d10e2804b5e9df", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "f3b3d58b431cb1b43d51b090199910c2e22f9c6129aff0bc09b89d0edb77545d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "44e7bf497b9457babb2b63146553f03af0189db4356f90b1d00fc562f9cd21d0", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "1d7983297df245e949a6f83cbff23d9c492f9e615648fadd0b5935d59abe3c9c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "3615699f9635c5dac8810213b90a265132d8b84bbc30e8b8a3873cb0e1079408", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "300c96c59dbf5e1667e93323e179ea9fbc8e2c5920aa36598cdf9c87d8a99bae", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "6a18e808e64515fb49abba00961eaa7fd98778f3210e55f2f40c05c295926a47", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "38b4bb070372cfe1aec61b30f56d1e6fd6b8903dfc1c7055f84168aef91077a6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "f3d3e3f6134555f7d49f1fe2aa180176a838abc8c9f8cedc9b30f971ce227587", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "028d7c24cf618f7ec7b9b560d6a395a13d45e6899560b4e06ff8de7124c3f9d8", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "fa011c5ac32516ae526702ada941d9f5ff2ed854755e5f2c7bae7530825818ce", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "6c3b902c705f7f207b893360cd46622f1bb19d2b37422207285f8db85087a3a6", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "fe0d30f630d58dd487fc1d504e17d1672e9aaf91e18d1ec3dd0dbbd7c3c877ac", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f579430af17c91cef59abf47e0196866bf7293811c3f030126269332d70f0750", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "1c28f32619b7c17461ed5a79f8d28ed06699b98ad408e247612c56b75b402635", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "c3d488ce092d63cecadae92a75265db4988555f5e71edcf7a24b6c06755636a3", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0c2afd4028d5c756e58e180da4b1a457319cacda0dd25babb6cc3f62146ef6dc", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3615699f9635c5dac8810213b90a265132d8b84bbc30e8b8a3873cb0e1079408", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "9194d62ce7c02c9c8ff84ec8ca9e94e6907e5da3cc5c6472b16e812ee63bc1b0", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "27633bfcfe93683486500b67aef71997a79960a76a485d0dd06ca4e56b94e6a9", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "df02bccc1e11e36486eff9ef607283a27bba798ec9d57b4c7f6a88d22ae4bab5", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "946a681fb9a9b961bada437c675c863464e1f098dfcc650adce9e47dae532462", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "b4bd3273385ee088a136a2ec64d28955ef3067c7488ba0866ecc91eb29d010a1", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "7ec7c7329725b99bd1f9ed06baa454136876f6f7e624c52cb0d8cedb863f47e9", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "c63c13e5dd1557b1fdcda3654822d8a0da7135c94c02beefb3cf5a2ed99d9a5d", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7fb75455a5ca4bca7ffd54b0b3761f8380d576f1fc4802b91f92782f6062e0e9", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "facb325ed157caff94c4fd82c6b85efc140d4080b49af5264f3d2623dee17ead", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "4b61de109f66d5131203b30821f201444f3da5c700bd7e78009a837ca57dd917", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "85e335514a1fa0fef627f0329cf03db7cca7057767c941fdd9f4b3f09ea57bd6", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "85e335514a1fa0fef627f0329cf03db7cca7057767c941fdd9f4b3f09ea57bd6", +"T3T1_cs_test_basic.py::test_capabilities": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_basic.py::test_device_id_different": "cac4a1a1a02db2fa46b5585297c398c7ad9cc455f430d126f9a5ef2b84115af3", +"T3T1_cs_test_basic.py::test_device_id_same": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_basic.py::test_features": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_basic.py::test_ping": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_busy_state.py::test_busy_expiry": "a2f1a220091d026e1ef43fb075fc4ee8e5efe47f811bbbb0317a7df173075106", +"T3T1_cs_test_busy_state.py::test_busy_state": "ec22583440945c9f8e3c3cb72c41a4e84ec5cc8d1ddff36421787b5be92fe522", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "7c4a1a7682fa733531c06cf7112543a5745eb4a14e4b959caf5b68fc2fffe6a1", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "7c4a1a7682fa733531c06cf7112543a5745eb4a14e4b959caf5b68fc2fffe6a1", +"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "7a109cf0bf01162a19330a39224ab3f2da81994e393cdedec0187a9fbc5be0b2", +"T3T1_cs_test_debuglink.py::test_softlock_instability": "fdf6a34e87947bd47196af675f9b574f29276379d0daf61d72c6b1c093fff6ff", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "c3f1de4575b8475a9c106c2581439eaa8f932a591ae25294099fd900ce09bd3b", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_language.py::test_error_invalid_data_hash": "fe1affe77aee510b17131fc106b95ee574f7f24722d85ff03af8297d79578f24", +"T3T1_cs_test_language.py::test_error_invalid_data_length": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", +"T3T1_cs_test_language.py::test_error_invalid_header_magic": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", +"T3T1_cs_test_language.py::test_error_invalid_signature": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", +"T3T1_cs_test_language.py::test_error_too_long": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", +"T3T1_cs_test_language.py::test_error_version_mismatch": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", +"T3T1_cs_test_language.py::test_full_language_change[cs]": "095b159596b45439d627def2213e657881e6a921040c1641b0908ff2611d975e", +"T3T1_cs_test_language.py::test_full_language_change[de]": "dbf73f90c8b37900cd7e58a76640e7b49850e6feddcf287c9390f14dc916c2e4", +"T3T1_cs_test_language.py::test_full_language_change[en]": "8cb2cd2912d6c82e03afd16d8e9ba928c4afc32d5f9f8b2655328672dd443121", +"T3T1_cs_test_language.py::test_full_language_change[es]": "2d1765fc50f879bfbafc94ec8e554da545ce2c33c648c06dc17a6734f6385618", +"T3T1_cs_test_language.py::test_full_language_change[fr]": "a540d967409e17ad3276e635df51bf65ee2ea08344c82658e14b03c0b609054a", +"T3T1_cs_test_language.py::test_header_trailing_data": "fd9bc4811b97174b4739c19f9c20f2b98757d7ece5535057e2b6e968f9d7e4e4", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "abfc034ec3dfe98f606ea4b37a25060c65268112793db94f47abf17709ad203e", +"T3T1_cs_test_language.py::test_reject_update": "3c1e5fdf306a2f81ca2cbc0a3bfd1b87c3ad8f45e9c887c9187fdf6a38e6a32d", +"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "32d56e7465b2ed22644a173ad2567e8f5fba5a6e5e01c0f89b4581d590a34b56", +"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "32d56e7465b2ed22644a173ad2567e8f5fba5a6e5e01c0f89b4581d590a34b56", +"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "aa5646fea2119dd61dc27266424813e8163c0eb8f5ac01946f21030cad40b064", +"T3T1_cs_test_language.py::test_switch_from_english[None]": "701603fbf001bd5769f181212eec88c17df6231de3cb6d4b3be0665d53a9b317", +"T3T1_cs_test_language.py::test_switch_from_english[True]": "701603fbf001bd5769f181212eec88c17df6231de3cb6d4b3be0665d53a9b317", +"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "bc82cc5997cb8b1c358012103f4ccb166a85e1f1d890b23f14f4e376a1ff3f01", +"T3T1_cs_test_language.py::test_switch_language": "d55edb66e6af54074369ca2016fc862c58910e9191e7f0eecf028988a4f16431", +"T3T1_cs_test_language.py::test_translations_renders_on_screen": "659d89fd1885aa1ac0970530a0418ee31ffb0f1ff49ec93a952500373c09cf5b", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "19f76ace8059fbc04d3fe4518d9f36b072bff87aa6655b66511f3670b8ae07cc", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "83e36ff6cf4c7031397ef0dcf5ad93381f4b8d819383a5bdd4d70701c476ec40", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "68194bdf2baa9d8acc4303edde000f662debdff4be8033e1a5d7b95d8d3e1aa5", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e05f361c19859e0090b23e4a79af3204a90532c9b3a4a758636cd4cf24aa1d5d", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "c990b555bfcaa06d3f22d85038c868f3d96e49e9042ca36484f757875f7479a9", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "bf16a6e311d82973cc2c049083741f9b52577ece0d54735ae972f8b89851d55c", +"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "72b124cb1211a206c2df738d97a83a13eaf3e79295da51eb9dad19c575df017b", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "6009d612aef0a77e5683e3de4b7f078ca1360bab8fd126b7829c3f1aea6491f7", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "fd9a6610bba06fd860dc9b504ef9f3eb95d196dbda2ad92cd6aa570b5af2f7ee", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "7819b7108d3909aa5bd6be905a1775e51fa518df7278208928fe46931b98ea0b", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ec069f4e4a0f1b79a0919b65faf3b8ba6ef2f4f5b628e20a8b05cb1995128c9b", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a9a1025a22c3b2bc7da35c8428bb74dfaa87cc2a924fef00510693dd74625e10", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "58ef70a11f925c50fc1680b6ffb68753688f5f4d68dfa7341393d9841d79bde5", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b355543bda120777fde39751cf53e1e56e5f135ccd3d198d5299dc1260d0fa5b", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fcfb46cdfd2fa670c313dd3e08429e01b58cf15192eb88553d2f9b1db2ad4185", +"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "5d3656f11464664b2a3d0207cd810a7ea3c9049dc75a5b6ca065db6f9aee9d35", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "4d6427231d3ad3b067da6bf74cc1ceeffdd6d613f8962334cb208896c6377655", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "999dd5fb42dd91828f9639aea295d23c986cd9e83b545a57cf375c8b8119f81d", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3c4d53f7dd5ffe0139e904eab6f7dd1abfb64536557d4d4f5cb30e95a3023b95", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "65afcd1f0cfeafcfe5f9cb1d41dfbb24c450d3d93a287ff8a25c09638595553e", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "be29e707e013647c57c3b3014e4b699a26dbb768cafe88448d1dcb5a3508d84a", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "0733f3e32415faaabfdb919d89df8032f1edd83cc81272d118943aa29a880b39", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "39a6687814b8bc2850883854cf7b45451c71c2af2ab5b2dcc573533b5de743b0", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "dd1070885af7955ca9ea1b69d5de6a658189bce345adfd2312eac143a2f5939c", +"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a9a8e3b5e6a5b38d2d3643a8f5ce3c50013b0ad8d14e58900cd6ddba77b89287", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "fad789bade2e49d39fdfaa3a812b5d8d959ee5da279405314f17827dcae855c1", +"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "b3cef6126517f2baf81f822b1d5236de97b0e2e6665de160095791a4c5644446", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "e2fbba4896dde08bb45b375e1bc5ed04176088e8b61edf23c094899708028ede", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "da9100969d8dcad3311ba32dc406ffe3451b36176ff7c6a2647ad212824e8ea9", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "9b59fe2039ab4f7eaa44f15534d343112ec82ed8bdf74beaf89e6481bc393f29", +"T3T1_cs_test_msg_ping.py::test_ping": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "2218680b089704b98d4581739d73ca6983022a559e5ee0bf40d7fc1379363035", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "2354bd24613b7cbddbf92061989bfada01d8401925503d9988950479bac60b08", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "d83d1ae6368bd2417181bf76cbec66fbf6422f04745370e0c499f0e4446a1aba", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "ce7190583e3104155c7e8f593e1a997ebac8eda959a47b32b0ba64f3a194a3fe", +"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "cac4a1a1a02db2fa46b5585297c398c7ad9cc455f430d126f9a5ef2b84115af3", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "86209ef09e8c78f747cf1a397c3ba02b9917ddc3ed5e76579277726895f6882e", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "86209ef09e8c78f747cf1a397c3ba02b9917ddc3ed5e76579277726895f6882e", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", +"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", +"T3T1_cs_test_pin.py::test_correct_pin": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "e0670d40cf26941b48a6d6d5536fed719b32051247ff543ff420328f94550075", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "5c1ac27507358ede8827a6d58285eca01813180d191b5601f5686f8cb5942c3d", +"T3T1_cs_test_pin.py::test_no_protection": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "4d039707264026b173dcb200035351f73d68ed088f421e5c3815e3921709cb0b", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "410b4d0e64f18e72d21594e71477f9b4eef2c3863a304d9a8164c2a15564f2dc", +"T3T1_cs_test_protection_levels.py::test_get_address": "af1092f3a2fe1313466ecb869055820e148ed001fffab4a9d74c0d11b24c493e", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "f16e2b285a75aa72d17c252db21e026bca10e6060525898991c0305bd5de91b6", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "af1092f3a2fe1313466ecb869055820e148ed001fffab4a9d74c0d11b24c493e", +"T3T1_cs_test_protection_levels.py::test_initialize": "1f11a68bbf2288f6778817063a85060ccb4f2b50bd83ad8b193d0465599e9507", +"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "ac13e5effa20b7c35521656a7f7e73772ad2aba44a677d7c7566e4fde3ab1de6", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "5872391ef432749ef7bbc826434c8d573ae8d3375994a73154ef4ae3c37eb431", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "73a5b9067cc5bcd9aa38f3355bde6266468b84502637b4c6f63ae74bfb464f7b", +"T3T1_cs_test_protection_levels.py::test_ping": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", +"T3T1_cs_test_protection_levels.py::test_sign_message": "12dbb52226b2ecd376ddf0f7ac7d54a296e40d41d839d039d50c346af48a8b85", +"T3T1_cs_test_protection_levels.py::test_signtx": "2d66211a69a98f8109545ffe3c0a75df69f69d02058ff4e959295a1daae35d89", +"T3T1_cs_test_protection_levels.py::test_unlocked": "47dcd5b7cf013a81152f000449e4f823d481331d72318ab8845359a17a9d0286", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "db119b55d10692e0a0ef40c09ecd87ed55db89b9341d604fab8ab63d11d13b5c", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "0ebc0fdd142d19312c591bec597f35fb7ceb3d71c8bb91628a3e8cc31090426f", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "6579831afac25758dd5167cd5e0f0326bc4eba7a995a0ea721417ad571f4fef4", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "fcb76a16cd0f7d4434291eb18c120abe04fdf416a52f593beaf955dec3584f41", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "963befb26b421b99aba60d473abcc70c8eccf701beca323f4ad0a4257db7d9db", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9dba44fde959bce5e44412f66620000152b1206a4bdc5b34b4625a8366fdb31d", +"T3T1_cs_test_sdcard.py::test_sd_format": "2bf6f6dd008b387e0295865b0926c58e1972c6615b213daa423254cad4828c8b", +"T3T1_cs_test_sdcard.py::test_sd_no_format": "d775aa49d5afe8d5ca5e0a0b6c9b2b2cb00614fb9188ddbb7cea06e4d0164944", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "4c755ed046a6e9cf1fa4afafe5b2f6157e5a9ca6093ac6d0b3c8140438c311df", +"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_session.py::test_clear_session": "2f3e91c76c4beb352df931f4cdf6068d3e29f06eb90c1242df04c65fb9fedcaf", +"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_session.py::test_derive_cardano_running_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_session.py::test_end_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_session.py::test_end_session_only_current": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_session.py::test_session_recycling": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", +"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "947aa0b67f7082c1fa8551ceb973c968266358ab96d8fd654e341e37804e050a", +"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "12a8e0e6dc81a5c44a171a5beb484581c3f17ac004bd02eb3ec8a8fe6315db4f", +"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "781f41305cb333cc4f9733e84e51010db3f2a929f2900854fea0cf08995be6e8", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "af7ebd51ff545492801e75f01490378775862368cb0e4b98b1e3f9c3900a5609", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "5f17f03989d82a377f6385c9d03fc919eaa29a001d093f879b833dc274d49d99", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "f4af478c881b63da3489d3a86874eb9f9e712c93a6a8f41d291607ee993cf557", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "ac13e5effa20b7c35521656a7f7e73772ad2aba44a677d7c7566e4fde3ab1de6", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "29ec4d3d874aa029f6b01d4be33c7c5fbbf4d3eb0f7cf2e7f181e0c3bc0594d6", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "c8d945581c6858f581b5581d543e210b42bc9f5613729895888ab02d8e358b4c", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "40615d91e6259a21993811512e49e35f5821519f59196cf33d51f19b08827685", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "cb8a523de18141bd45eceee9e1ad1632903bd4d801a781b1a11dfbd5e1a9bc9c", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "a0093204f6ec80034d89d0efddf20247d922b85b9b05beea2e72df2cde2bc9f3", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "44dd0b426eca66cbd8abd0722dd61620de7acf7b795caad6044608187278f3e8", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "e3c76e3b1fa3e8c2b6a932539fef82a8b3dd2f62384cb0de9c2a2fb3cac0a46b", +"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "b55a875eec7185f154ef28c06995bb3b29e3d29fbd1e13966b0134e003b15e55", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "203035fafc67ca2fd386886fe4e0898aaca3910e641a6763568b8c62b4f143fc", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "4092e393d93170b022d8dedb0af9bd022b46e6a3a0f508c639ff2178d4e9a74d", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "8240e44b26a4d7b7bda9c17389e2abc7b5d5e5fffc00e77ff7d060501355d6b9", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "008db58b35ff615b72b43da94a72ff335186354f7a80011b79f6a70097f08762", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "0f792b6e53cd340dd7a709f8f9796744867eb0658578cb3902fcdda00b225d82", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "3827db3d6922191fad6e8647aac66697348572310a0da22b88a5584d844676d5", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "c3fb567250cf89df721f0ad79bb0e871769a0a19765a12c69ec9a467016f2639", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "1cb21312ed32a1084a421bb9819f662e5df72558cdb3d297cfdfd3f808afcc48", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "ba7e73fc8a409ad205f0156115c37ba300c7edc53ee4bdfd2363a9e742a3a036", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "6689231c873522097db9c3e7b91a8cd9f1b154232e2dcf9703082730e63d86a7", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "b7a515c894ccb00713c7921dce1a44deb389d51f9842e7a23c8216ce8c1a211e", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "61d4dcd19276aad23adcfcd8df53de296391a298b5cfef5a156ef06176589e11", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e7583f4c5dc4a48229957fd20f9b16c1e536ffa2d972a91999792ab4901154f9", +"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "5d076bc6f2c20009089ac38dcc0d77349bda2f514e7c3577f44a45b5114b5cb5", +"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "7e35a186b883df1016338f336b379b0a1ff3c810b0209f94006fb22e0e702f21", +"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "427e1358f94e08e39fd82399731d45a37c1bbda4bea31ac3ccd8f3b14bab2168", +"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "c0d3a1ef6d442c418bacfe60b409bf483cd36d7229380bb1d4986be1db2d11e8", +"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", +"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "bcee62f725a134b769def445646311e6589ca7d012cf91f785445c457cf6a86a", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "271afcf9baf994b36ff16d0feb29d11f725fa403bc49950cde96077c30d574d6", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "d9611046dd0354e0719599fd4889017c1c1de4a4ff35c3eec744b8952292cf1a", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "eac7c9183829cb7cb48d5a254cb5bedef5437d91fde98dfa735c032761a517cc", +"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "407b27ab4f1c201ea206617724408e2ea3097ea239ff824fdb1bcc25044de99b", +"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "bc2aeba74b1e569788ad61ac8b202dc65e30b7df61a186df651bbd04972853ca", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "29ea63b9f82bb26d024eeba367402f6e6261bc752cb6c37a0bee56a0d537ae25", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "c243fc432f961a9d8f54b97351aca4c609c4b4dcc808204484ec746988a15d30", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "33d9f964f7eafd3deca15781830428f919a3b0af6df3a7191ad69030714ad5d3", +"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "477981debe6c8e0cb2719b0c65dc6a8e0e3f838540a66fe720348772439e1b39", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4ff58317c7488dea29958cbbb6c674407174432bc8a96eaece276b608838f722", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "3e28545928e4c3a89f1832d785b59de7f1664b51366e2d3b0563fc464edfd3ae", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fb00423cf3189d8753385d56dbba2de48dfdcda6071059818d06f52ad29c8248", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "4ff58317c7488dea29958cbbb6c674407174432bc8a96eaece276b608838f722", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "3e28545928e4c3a89f1832d785b59de7f1664b51366e2d3b0563fc464edfd3ae", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fb00423cf3189d8753385d56dbba2de48dfdcda6071059818d06f52ad29c8248", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "89f77c5701d55ee1b097816ff6989556ee7785b910d3cb0dfa496d965e79f127", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "8aad2462523dfa83cf6edf0af779c7267951f36d3dc1bd24924c1317f6700044", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "3f1dc1dcaedfbaad08a0f2a9e0fa647ecd5080f621cd3398cec4d17055b1264c", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "8832a745d87675a3ea63189f52ae09d9e48d734c4f087433fd349441c707db7c", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2a48672daf15ca01c31504903339e3aa4bffffdc5d3cdd5391e6e650ccac92aa", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2a48672daf15ca01c31504903339e3aa4bffffdc5d3cdd5391e6e650ccac92aa", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "975aff581408fc960458326d58a828144dabf184f0d613da8b7b5cf337a7e547", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "0705d973f15f20ffcc25917a66423001eaf3d8223fe4956b9217da694fcd49fe", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ff3b5058598abc9a7abbffda5c06396e7b37c6406635ed262021cd77ec0b8847", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "deaf98fa3fa294a7b6a3aa5ab50321ef8ce1d8ad9cd4a3b2c51df0482e86b0a0", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "deaf98fa3fa294a7b6a3aa5ab50321ef8ce1d8ad9cd4a3b2c51df0482e86b0a0", +"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "8236bc59b03d9775e52ff75724dd9c905a39ab26185d3e3479e843541874cfa7", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "8236bc59b03d9775e52ff75724dd9c905a39ab26185d3e3479e843541874cfa7", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "37265673b13efb02aa809be1d935670cba4b5bc56b50182467e08d3884ae7a05", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "507415fcbcfc235f9a4265772226ffdc47f48b8812119175666095728c28606b", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "e52bf2b926dfada0475555f24afbc0cea03a8da6dbf95351635e09beb96123ab", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "ac18141076ac087c30615747091d39434d47f0f9558f6484c1558c57b9998e34", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "386fe8e1b512f90596b415ae90e8a475c2a083894b7bc80eaf76db36e9e0fb90", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "e1c30c4b1d80b99df6d324fcfe11af0a56b0ce05ef35283360d526eea623e7ab", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4d490a1000785eefae566f90d011be02b5816bdf706941038e57c9ff28e64bf1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d904e67d4dc07677fa8fe641b3ce76b7ede9122fce1e4fcecfd51d397dac6b19", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ed70bcad464a58ecdc3817cc1d39655844dcbf472c8d371f6fab95cbb4c60672", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "044364a0b58bba0395d306f98c415360e8a26954501ec8730e3b7103045b6681", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "71e611b0db091fd0f80a93cfd68fe5f5b72476301fa12c5d8879ce68baccc0cd", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "92c14d45d7db6686b388be8780efb12e24246732bd534962f5dbf4c6029393e9", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "0b4d5210da2474bb73184a002e4b21e3c91c0f4f00d7fb2fa4eb050c181db9cd", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "78de7f2e2201c27baaf244002409667d27cf980e743af841a87332f5e3473d2c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "1f41fc7ffec60393e25de8c2d7c8bd73a6d8fd5d3b87ad3493c6e8305a12f36f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1af491b6eed000d0ad69bee4874c75379739b60dd0a24fe73109a7d3a7c0880b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "884c3082098187e08a51fa65ce53d7f70bc8b509f9c668b4bfe519fdaa3a7659", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "530d2fa586cd91abd631ecdd95a4fe10416d3d2f552b09e12677dc98cff8d45a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "680c8cf272b13a3dee9a85b25b61dc3b6ecfedbaeb4d507177f3cf36784b5d96", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "244dca955773fc1ada5e34ee4f71b675e946f09d56a399f05b8b4b41c89bdae1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "61706749bc029e357b8fef5396b00b8e8df06de3c943d7aa0f2c4c5a026c119d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "e1c30c4b1d80b99df6d324fcfe11af0a56b0ce05ef35283360d526eea623e7ab", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4d490a1000785eefae566f90d011be02b5816bdf706941038e57c9ff28e64bf1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d904e67d4dc07677fa8fe641b3ce76b7ede9122fce1e4fcecfd51d397dac6b19", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ed70bcad464a58ecdc3817cc1d39655844dcbf472c8d371f6fab95cbb4c60672", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "044364a0b58bba0395d306f98c415360e8a26954501ec8730e3b7103045b6681", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "71e611b0db091fd0f80a93cfd68fe5f5b72476301fa12c5d8879ce68baccc0cd", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "92c14d45d7db6686b388be8780efb12e24246732bd534962f5dbf4c6029393e9", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "0b4d5210da2474bb73184a002e4b21e3c91c0f4f00d7fb2fa4eb050c181db9cd", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "78de7f2e2201c27baaf244002409667d27cf980e743af841a87332f5e3473d2c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "1f41fc7ffec60393e25de8c2d7c8bd73a6d8fd5d3b87ad3493c6e8305a12f36f", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1af491b6eed000d0ad69bee4874c75379739b60dd0a24fe73109a7d3a7c0880b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "884c3082098187e08a51fa65ce53d7f70bc8b509f9c668b4bfe519fdaa3a7659", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "530d2fa586cd91abd631ecdd95a4fe10416d3d2f552b09e12677dc98cff8d45a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "680c8cf272b13a3dee9a85b25b61dc3b6ecfedbaeb4d507177f3cf36784b5d96", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "244dca955773fc1ada5e34ee4f71b675e946f09d56a399f05b8b4b41c89bdae1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "61706749bc029e357b8fef5396b00b8e8df06de3c943d7aa0f2c4c5a026c119d", +"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "e66bef90461fd23c25b465b6b484fe8e3a3216e55afcff7e47d6a41a4636e5fb", +"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "04b2fa27bd1cb14a4299c8a467d0f66813777d3fbe406ee8cc82e5de8ce31398", +"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_bch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "efa735ddee3aae8e616934b765577708d3da6354a39066d5f59c7c29a611f6d6", +"T3T1_de_bitcoin-test_getaddress.py::test_btc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_crw": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_elements": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_grs": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "3d9d5472a699312b9d365598f10dbfbf01b0ba219be8f6be4ea173ee93646d2d", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "229dd2a895a5d2163da07627cd817b395e89ad73a2225bfebbbb4ef5fed02bec", +"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "a74afba576f160dd89746537c83a3157ffd3ae638e26000b4ec929981447e15e", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "9face34a3b22920935f94cb93dfacfa8e654baae0e6ad11dc776cf0552451c3b", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "10ceec1e33fdeb047ade8e973fb98e8f7155be0f88a31a3ac05827b5418f9798", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "076b8f717fc2bb53084a40d584365f43e4cf2635ea4edd518be4ec6db8a753e5", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "14510aeca687dd920f4675abc02ddbc3bd6e31ba62ebea7a7c1abbc837b9ba24", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "600ab73d7e0c10f5752aaa0d619f835c46b6c8dace7a63b1ec8ba87a04ff5bf7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6cc50dd075f5578620b1ea8b35c0bc1a63e101dbfa47c7ffa33070d138ad21db", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "cf8f31e98562565d5deef579824565d219497198b892ac20b2a942b958c470b9", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "2401809e99a7e7212a1ce18e2ff8388371164ff64f182b4fa9e3afdaa706b032", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "c3cba4d13fd6777604204e31dad58f6c8f2d9c78b8904c5a9f39b5415690e99d", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "7782486c71236af402662b02c8b0381326e3ea9a400b930fad78f0f8036debe5", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "8af8cd3d15190bcd6dd7f3fffdeb50accffe68ead12dcd3c47cac2dc90bfb24b", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ecd0f3d60d4892b242c12c02e6fb3fce28637e7bcf73828a25222195e206c2f1", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "f77f530c564f909c213d25386874dad0435ef756c75487328069382ca4915a4f", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "96dd4bf93942ce0786082b2f3d1197e5f826bdee7d6a7672b82149c875a106c1", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "eae6bf15d39f8d561d38507e6aac631d9b9c988f75795d6dc991a8fd564ae431", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "186da0d1957c800a7a8e977f3696b5955b420c1c3628d720b1a786e0c9786ae7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "b13f0e499c3d894e0505dc762677c8e4849a41d4e69e2343a41e35d8486df2e6", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "39860107fb5cd2f1b8489029a21ac67408151039e6e20cc8c0fe5df402fc5d52", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "189742ed258bededde906068196b43a71e71eab98c0f5562c35f992b4f17cca8", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "7cb56f55bf6284c941974031d8aeda8acc3316ccc570968261c40065a2ff2651", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "904203bfdd98bf859db1f8b05eabdc048b5d90344f5dc4b5176ec2a5546f43a9", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "bb02369da2574acc4c9e155574d81519163f25090cf3bf43e70b1b93dced9aa3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "4cec908f7e02db4cc5ffd93ded5185c6f85b47ac36bfaea46b7fecb0ed2e93e6", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "eb0d150efdd3e2f1760336e7d61c1fac76200e6aeb51003ee254a1613d5f53e3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "eb0d150efdd3e2f1760336e7d61c1fac76200e6aeb51003ee254a1613d5f53e3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "005eb33f480cd3e8759d371d2d246a021ce7834d9e2fd833e8b6a794196848d2", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d47d1d4046f40ee9cc4aa7cc3c66a202538ad0b6a02aab4a1fa5e68b9c5b2099", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "d1167ea50485f95627270a8b0343c56ac750e88eaf61a570f97bda8e7d23344b", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "8117a9e70dfaf392351ea0e3128f58a55b88cd95f9797ce0447f26c365fb3674", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "25c2826358d0f24df263adc2fe30cb0278f39d64709078ef2d6e29f0fb3bc038", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "5854201e04ad6b35c14ee59b7a9de586706c5fb04ebf9aedf0ed9d33ac35b12f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "01d0b35ad3a022995c42dd8e52babc8895c09678d98a7d628ce290643948bd4c", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "3e61f1f80b227bcdc2fabde3f448d5b574dcf517e3c77284ebec33513c709327", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d2b79e7cde44e53603f67b5d4522bc385c2a098bd662d46602e529862109d2d8", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "56a6d0ee7e3ac08a07f2ac50b844dfb3697c38fa880cfc5681e02f62bc62fcf9", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6dbdad338ec4352728e8dbe14b74fce608d67785a3fdf742fca57a1aef78db5c", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "16a2b025f67c4ebab9161bee395251b6022bd138d55f4b04919312d2b2701e45", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "aae088e2363ba33700177340d81b0b533fc428fad222ec68e650c0ad336bcd99", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3c0491851f6c7568ceecb9756100e218dca29271acbc4157ecb0202e5dd4714d", +"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "099b1fdfa0a20e423558baf7b4fe8a223988a25db9ae39dd9896816c6108e196", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "2633ff51c39bf34827cfd357e2eb156b6111325d343b21f1c3b9aec6f4262b53", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "14e9102c533aac682de255e1faa6050fc4aa301bf49b00031ca5b5cb1cc751a0", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "11f3592949b27ed8b757fe155550656b5d054c200cea1978cc2cd592b7142a34", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d318a2f0bc388931a250ca78f793c3c906ddef564ec1695a73b0d764f16fc25e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "dfa6c43b3074d1c8937d121f2fcaf0c02c2f40b014db29cb10ccb1eb3192edf8", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "b7652f1e9aeffd24634d338987831fbc964a18fdc30d00a10a31e1e43fcd70a5", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "45f08b378488241dcd5f6b4476cb8db1f88a38d293f11f557560fc9cf24784f6", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5e348a086781e41a6b873b8cacb6f7022eb85504d00803f365460766a5749c79", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_grs.py::test_legacy": "0b20c3589e7e758257e1427705cd590d2c33f84fb6bcf1d7bf83e5576b39165d", +"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "d914d8c94fcbe385258294cdaf837e2b29389162f031359e67957a84df6b04e1", +"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "3dddb7abc4688e77d8cb4868dc78990450e7008213b11f4d3ac598d33f266988", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "dccaf7a4455e50d23f3db4cca4bca4f7295604e7864ef381f8ad35212eb0b3e2", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "d649b386716130bbaa622586890ed4d9450904986f48cc22fc9db7b21cbe70d0", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "6c3d4733d957073dc83fde5b161c0710e575ca8d8e2addf0c2a8fd17d551ab16", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "146cdc1e1ed63ad801b4b68460891d0f9f1c4c3bd52625b18e54a3c669e79570", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "6cc11913ca118d301279a2c892cbcf8642e2c940cd7cc6f8fff830b6b6eff293", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f5dcea30da41186243eeabd4cf91de5ee6021383f2a6b1f976110d2e47a844f8", +"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "2d02d1e15d5c654ecd574251bc0e3027ef84a246b6f72d2a894fbc2ca4bd1b1d", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "f488d411c7303059c1b979c6fe9dd9dbae0a6938da9014d142c84cf0d22b7ec8", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "d4997c940dc680c74f53b66561899e00a176fe58ed7a869835de1f5c404bf605", +"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "347132b3b87a640aa7e440f45b6fabf4fe49ed003673e0ab4e031a9eff678798", +"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "69edc865b17341aa6ad6e2c781f7e522700ea52ceff9fe1b42b82906b6559d63", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "2661ca95d91c5d4d4ec13c27b9f6700b60671d6d7f6f817fdb2e5e4fe4f91ca2", +"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "c9a4387be4d953e3187fdcd80af1973011e298a83ca3fd4eb8da00aa84f01636", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "221302d9505e1c0cd9be7b3a660fb89c50c25a2d4043d5c08f897c05d92d3fe3", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "9cf556ff01461f4ead145f47b2b03f320388a86e92cd9a30660b11f7af48cd34", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "55fc461ff3e9b3e0c8111c0ea4f935b89d07b2b98148c03bf30867f26197e099", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d1adb7c339aa9841a73af0762cbdcec4bbaa437d24a91f530f7c2c7eb87d9ab2", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "3fe757186784d5ca33484ffab55e8697fabb2f3523bf86c414d50374e6199378", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "df33d2c2c24dbd21a5f8fd6daa15cb7bfb56d4e7024edbb1d190cef44e7c91c9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "1a9b980d060ee65b31f1674d3c1f7041dba10c7af3334da2191abcab3e36ee3e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "d7e107582372a70d1a8dc7b5552a2af3073760cd2815efb3c28aecf09be9bb14", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "963166e164a58ad5b4f321537aaf4d8cb7de46efb8208028e2bdf4efdc696e95", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "78d9fecffda899b292f6f2cfcbe39f3317120e00f768b147048d4cfb37793907", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "d4faf2ffe2232cf4b8c6f8535c7d1dc85bfb25e8cd669f667f790d109ad905eb", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "363969e7723d64650101fba221436b57c99877a9cb13a85242d448a7349bc17a", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "722081041a1d7251b5a53fe7950f3673cfd9d74bb9fb40ed8cdc10d8012374d6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c8a8d11082234e231e49dd1c4d1d0fa7ef5c91f1c350d9e09c9e282cdc30aa40", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "d82af9df01a53c3ceb92e8693b4902c3566e0d2008dc5f5c8505f159feb19ba4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "50b6742edf81441aaac2fbd4e58622b4458fadb8af88810b2327714e8c637cb4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "76a2037275d86c0b481ed43c2c971f46de542e80ac4668fc1735a6a913dc6b99", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "fc123f58ded8c66583326650fd2c819ebe55bd9780fde8fe169d359f2c3c48f2", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e444bb851f5c89f2876a857f21e80ea016949ac55f020c0920b2f6c7417ea911", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9f5f04f9d6a2c6ac4b514fc4a7e5c0cd2c8166f84f2294067bed5771a7cfce72", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ecf30f5cab77c2e0b04b36654d2377fa4d297670d866793473add96a43348194", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "437a5038e94258788f35aede2b5f4368a9d273184a3764908747ec12c28871f9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "a723997d914aa38e4cb6b4f595f1f6d632aa195e7d091f1a92cb2e59063de67d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "1ced21c46d9574c349834e4da20d818910ec54b3e13c9f8416af3cbc18fe1779", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1eb8c62e5e1116e048778697ffb4b5c01aec1349d01a142676bbe379e007a01f", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "a880b2ac5456f757adea83c86d8f5e82acb045cba367b6ffb051afbac1cca80e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "9c234aa82abb2b24158e8289a64fa74d4ba88ca3c0836572f49f2fe6aa14c5d2", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "ad0ad84604fc1d2f649a6d07c54bc6eceab365da3192993f984c503bbdf0f362", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "2f0196255c23818d1159ffd18e90cb00c0f88bc8a3833dc19c2d4837f4e9f867", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "a46066d8a0456897463b0422b712addde264e6e208e055243562848108bef336", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "5c904eec3c993c23d0eb4074d258d3f03331ab973f4cffec113a0b89bea6b4ff", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "069b558b999ca916b2772cf506baa14ca4775d5034863fe54e334b0da6649555", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "0accde91b903dcf4702c7c6da3932434c1e49b3e5199b6d4882a1f952bc6c97d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "c0f161cc5dd108ff7ee46038289d1658fce497d2388c7118630834afc97e6cf3", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "dd5b9a2a8c05b0a825bd0418032339658d621c52f8c88974b25bbbafe01a27f6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "8e62dc29e810abff04c9e337e8620db41ac74187af0464d1f667447cd7d3b680", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "967a54df67fe33e8ff8477f4ad9b7e1c9f301ee184eb22ebea70947e83af2b0a", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "dd5b9a2a8c05b0a825bd0418032339658d621c52f8c88974b25bbbafe01a27f6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "dd5b9a2a8c05b0a825bd0418032339658d621c52f8c88974b25bbbafe01a27f6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "dd5b9a2a8c05b0a825bd0418032339658d621c52f8c88974b25bbbafe01a27f6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "7731f8ff876e33d3f1907bf8c87f6643f417a5f327b7c42531d2ba58a5e053b6", +"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "e14eb9acd5243f6ed32b10e3a2f950a25395036e09c17b37f3b87f0f67aec918", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "aabd0433bb3bb602621223e448a8c04f21782cb2ed15e511fc39ce1389615b48", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "86a6deb194223737e1f12e67cf599991ab822b10466fccfb6fceb6f0b0c20c33", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "41b78cca92b29f4c8f7165c849c90614eadea3c70888a213a03b847273720e60", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "41b78cca92b29f4c8f7165c849c90614eadea3c70888a213a03b847273720e60", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "cc7f5fa4e01fe77eba8ea4c00bed07c31ca61811d2d5b0e8223eee0baab91fa2", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "3e1f96e37cd9a1e5aae42872bae1a8835f291e9a9e3cf1550cf3503973ce95f8", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5fd49e2a34893ac5e388c275448c2597f2eedeaff54a9ccad537fdeb1b53be26", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "c49d5459960d5bf5cbcd4f44ee01c799a9aa11ecf1135885f8fbbb90b94568bb", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "1b8e315f4c51ce52f7bc0fe1b27c8f7be29621f8e25169d438b63f840224e177", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "c9dc2932607b4e50bb6ad66d6921632f21bdce0425bcb341e75f7d2df7936928", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "c9dc2932607b4e50bb6ad66d6921632f21bdce0425bcb341e75f7d2df7936928", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ca782ea32a156f42b30769d82f57a3add39086951d55900e45ed8d88b0e8e4d9", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "c064cfdbe7d702a55bf0a98d77de2afe31edaefdb0bb7f1eb886b9bd8ffbbc8f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "8c488eebf6349249f3d0f088706bc46a1ec35f49ff56e2e0bd0be51e3862ae86", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "8c488eebf6349249f3d0f088706bc46a1ec35f49ff56e2e0bd0be51e3862ae86", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "62a56049e05a39fd5b04fac174775879aef33e9e30c6e5f5e53d0dcac8f3b73d", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "46be016a0f30efbafe18f70e521bb3dc13d1704d71989ac302a8dbd4bd1ecad0", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "df6283eab2cf0369767cb7e07cd298a292ef35a193b4118c9604bac8afc363ba", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "df6283eab2cf0369767cb7e07cd298a292ef35a193b4118c9604bac8afc363ba", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "08ba209456730b9e1b3d45f60591560937737cb6cf378fe99cecd7bf815675db", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "9101f2a871e364574b0be9168e9f851da13b912027735c793afa8b56b067e5e8", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "50f714f90604175cecda69cf4e0775f695d6c4cf5749523d4fc33dc27fb30b9a", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "612ee5016059cfcf51644bf773311bb22638af76c4a09d14f6d480662820fc8f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "5a654e9eaf6db237a8e63ade3deb12ddc34a52e1fa58eb6ec7ec2911c3f3d04e", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "ea17fbb26a96cfe9fe4ab545e33165764d08df6c094be01dfa4413ec4a8aabb1", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "c553145cb86c19bb4afd8f68b32796f0703db04c6b958086cd27388e9a8bb521", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "57198d9609594394ffe5fb9efba140400f814d1cc584e5c202b1d34f620d092f", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "597b7c070519f8898309da8a40ccbff1e8c15fb353f5fb45678410526855be04", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "929cf9e37dee92d37ca9be000adf367d80a9a052fb26ecf38951733bed8fa0e2", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "f688fc0cb70aaa4f19af0125e16f86ba8f1726e35ca9e8369a4ea687c1b994cb", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "558338c9b0ddbc305da4ff9f513d2d4d0f5707a9e834fe604a55084a448a5e61", +"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "e67107c1a07e35abd4dac09fe0a63a31c1523c76080a87454391abc6a8490a49", +"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "e67107c1a07e35abd4dac09fe0a63a31c1523c76080a87454391abc6a8490a49", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "bdf3ff58103c42a6f7840362ff1b6706a55382d31ed06d3ba8c41e8ce316429d", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "d9071062d927f4acbc7567a328d2c2abcf2baa80b8899d8e90a1df793b400a48", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx.py::test_information": "bdbd58176b8ed33d6b5cf7ffb4a3827100befa6a14c8ef2b350937a305c4c085", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "073fb01a9d098f93382e97a9753b435222fdfe6f9075e709a4e516722c1f080e", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "6177ec4048d1182d455b113c6ad37a0d47ed875e993c339c11a0fb7ea2435db9", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7d57a324ff346075ef4de1cfba4425ae75b8854216042050ede44911fb69ce50", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "5a42180f6a59e586b2f5abe306eabf9feaffe9fba33bcafb12e93800d86966bb", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b1f59ae5d6a6e520abe50d2f13b620ecf63ee2eddf7061d59bb8fb214803fe32", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "5a42180f6a59e586b2f5abe306eabf9feaffe9fba33bcafb12e93800d86966bb", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "b1f59ae5d6a6e520abe50d2f13b620ecf63ee2eddf7061d59bb8fb214803fe32", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "b0091e2aa376765d7c35a0e3f4ecf57ccbf2aa944ad002afd4a5a4995e63a819", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "359770f00ac522784adbf7c51c39c5045045ad797ef05c3c49e8fbbaa0b922ac", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "e36bff218cdcc6cebcd622f881376b328d822022df596c3e03a3de56cae7d003", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "26bbf238f5fd26e51838c0979bf4460f7e45d6e108013d1ae644dcf06250593f", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "22e19f7d759d2ce059b2f81ef5c7a52eba4e641bdbc5ec92cd884fa9d7f39161", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "47354593fe71cd1af05f37cdcf80d4ef4d5e510a11326e6355af9d440fec44ad", +"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "4cee1d4d48be3f02c2f0b84a484972769c8b4cee150f4ef5119a1a7e9cfcd420", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "8868659edd0934af66ee97e1a5a9d49eb16cf78fced16d0df480dfcd26fa4b2c", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "c7f0d40d83cd9dd8ecf6206e37a70f64b1d1dea627f7cf10abf1265ae05ecbf5", +"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "595fa176d901abeb417394d5a6337f1425df1952892929bc42ed3a71f120ac80", +"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "7f91f560b2306b86b252c42ee09fc0e7208a818da4a4e43ce726f52716cc918f", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "bb1f46c462a36812aa4512edfd0017a0dc2df5f8de807f4504b24d00706bdfb7", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "642b8399f6e5a2c0da82c70aa122bf5db5c6c22fb27a1e218828cffd3efb3de0", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "8f1ac04154d0a6c18e600186ffb31076318117f6ee863163967fd8f431c74961", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "e67107c1a07e35abd4dac09fe0a63a31c1523c76080a87454391abc6a8490a49", +"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "93a70e8247754688cbbc7e60ab5a08332168c1f36b9eefb9660968be0c953133", +"T3T1_de_bitcoin-test_signtx.py::test_two_two": "bf4e7e890a496ae8c2db804e261cf9224e46c46902c702a49551b4301fd1beb3", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "4cee1d4d48be3f02c2f0b84a484972769c8b4cee150f4ef5119a1a7e9cfcd420", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "3e05ca867c1dfb4542b3c01dbefd975e75a6fcbc7f287caebc64766d7aa82e9c", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9afdc413025e5fa2bf0c1130d0d6c0f18891db8cea3151367f457cf8ba878ec0", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "18fac203bfa618e994a6d6193569f7ede8418751700703d5f1b2dab7305faffc", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "4cee1d4d48be3f02c2f0b84a484972769c8b4cee150f4ef5119a1a7e9cfcd420", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "d480c601e0b05cded7d39fd1e106032bc0d6a392801b0b3e64ab3de9ee966272", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "ef7065d8971fc8a453acc5d38c7ee464be720400a685a3bf8822bd3412d954c6", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "cb264129167b030d83280e75678629984db284952fb1a029623f01632d280d09", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "b3d977f36b2df1ddac4b9410074c2dfb16f99cdb2288f90dffaa8ce4470bcf3e", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "d480c601e0b05cded7d39fd1e106032bc0d6a392801b0b3e64ab3de9ee966272", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "ae0c815954a41d6227757f6e1bc725d98b33d809dd8b1a8a32fc0c5d1cfc9b77", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "7968567419ddcb5468deb9ced44dd2b44dd326e8e6171d6f2cf904cbfa2a5025", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f2194ff61cd2ca6a40aaa07c036231410fda6db308886b78177aa941e143e290", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bace35284c696c54a147e545e2690897c2fc349c91a0609b306f35dfc5c0f45b", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "25e84fb4564c122b6b8ee74b71ab2aad42f0610894b8c3b8f08f11cd41fab8ce", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "a55137ab1d19d0fc3704086d57cbe83e7048b0623cc93f4532580cf83a595274", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "16fdb7d5cb9083813ec04825ec85591ce54568c7e09a4e9412f2fdbabb3a8db5", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "672cb6e43dd51d090d7658cf7f19a7d5081d868f24ef790e8a89bd5093498c57", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "6a3549037f3e83ef30a033deb37db41752cbf8f0d0e0ebd3545875f848b90daf", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "1d199a82b5b86980b32320a8ca528bf8b342011bd943321bfb4da9aba6566121", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "e75790b7faf042da5252f7c1a36f65102354a0d31ee7be3854d9716ce98ea95a", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "a23e900ef994c73382b036129118287f5d92769276da88145ca47924b0569b31", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e3a1b22e441213dc4fde9c1f404894559ed19e287a3aa66099c6ca85178a599b", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "bf02d0f96972e901b3a25ceb445acd54d7537e3460000518d4cfe6a04976285c", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e3a1b22e441213dc4fde9c1f404894559ed19e287a3aa66099c6ca85178a599b", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "bf02d0f96972e901b3a25ceb445acd54d7537e3460000518d4cfe6a04976285c", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "0410bf5a2c7b4334cdfc21a3d33ed0f72e1c896bc6c37e145eee395de21194d9", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ba4d8fae18e5bfdff4c3e6b45378cac8f8ff3b3355598afd6c9eb92af4eb44f3", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "45d703091d1c1f31ee8fe90b5a7e2c4a7f522499a2a7bbf59f922196858ad03d", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "6d78926fc627d52252f2a98e87c1c2ba4f96c763c38be41fdbc64cbc49310f44", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "b73f9cf6028d6b55091e1475a8dca17e0cb36b21a8a485a720d4ddba59ffa0a5", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "f475070c41627a0597d9ebb430ff473954fa5f45964b13fe4cbca6d1d24e35e6", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "c22bb0a3005eeb9f51457eb459a711655ed559b4b0e0330d90c3c32ac5ebca75", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "a337baaf61245e33f692c3b04d3d10e98916e333280de599d8b3bc05b9fe16c6", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b8aff320fe2b1231bb7cdc3b6792fe1bd32a4acc479dcf1f1cb2e1933410890d", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b8aff320fe2b1231bb7cdc3b6792fe1bd32a4acc479dcf1f1cb2e1933410890d", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b8aff320fe2b1231bb7cdc3b6792fe1bd32a4acc479dcf1f1cb2e1933410890d", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b8aff320fe2b1231bb7cdc3b6792fe1bd32a4acc479dcf1f1cb2e1933410890d", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "6b222ed64094b356fdd610b80aa16d693f2a950fe8089e6fe3d70042293a81a4", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "6b222ed64094b356fdd610b80aa16d693f2a950fe8089e6fe3d70042293a81a4", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "6b222ed64094b356fdd610b80aa16d693f2a950fe8089e6fe3d70042293a81a4", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6b222ed64094b356fdd610b80aa16d693f2a950fe8089e6fe3d70042293a81a4", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "35be3ad845cb7ee99bf0732305b63e95fc72bcb632b939533de93c85bce69400", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "a8afb537125029ffc2d50a8715293aa36d75e358d6319ccd37e98c57bc4e3bbc", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "fb1af3a0ea948f9197fe7e83dc2523ba26ecb21f38659f27a369eaca4b0afc78", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "fb1af3a0ea948f9197fe7e83dc2523ba26ecb21f38659f27a369eaca4b0afc78", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "999396e78bab1d3cee70ba5a9d5cc4328e19de531d3c577d74354e0a2fdc3b7d", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "ab07cdb5cfe9af5bf647bae50ed472300479e7831cab32fb21dbf89cd16657a6", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "0f339a9245764119c68bf3023fd077321f9b1b7c80602a88578516777fe823ab", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "999396e78bab1d3cee70ba5a9d5cc4328e19de531d3c577d74354e0a2fdc3b7d", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "488992d7229081aaa7df09565a454ea53791bb219b274e0922c8a454658b2090", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "378c5e02a19a8e2e26779f2ff8744c32b34f5f1584b183b51479edd7b6f6a217", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "378c5e02a19a8e2e26779f2ff8744c32b34f5f1584b183b51479edd7b6f6a217", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "378c5e02a19a8e2e26779f2ff8744c32b34f5f1584b183b51479edd7b6f6a217", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "80bf4f0c64d90e363fdce043fe58e9ef1a7090f107706fd2c0510ad0044a72a3", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "378c5e02a19a8e2e26779f2ff8744c32b34f5f1584b183b51479edd7b6f6a217", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "e7a717e1f6fa6dd7f2dccff23adac9af6fb26c2aa3ad8b16a5e51e3323b09256", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "3a6f0d733f6d9c6cd2fef46a7c7e6ddb28b0f2d3b4247ec3a1b0be4037b96721", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "fe51248c29e97282589502b10944a10ec07a5b9cab90747048b8f6022665cd6b", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "a103e8c2b28b89986a5872ec9d8c5930a12a6210276ebd9c7a887318f82bac53", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "821385710a32c5f73ebdcdaa05cb71df6c793535592d189ff07004bcb9cf6608", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f802eebf34bbb4ce78f20007b807d2a0c86d6f7bd3fae9e00b2b7148d7cba52d", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "b6232086902fb5eb689d6b768f938a43cf86bb9d80810a10a7ed2c05c45015b5", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ab372f2c3f27f61b2135fbba194e73233edde42d51d60acb087899e91af7f5e3", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "659270aa7f469047f6996cd4cb65430fa72b0f0bf7eb587b3526ea6ecca76cc3", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "01b15029eac7251f5a7d58514de83bb0fc8ead56898ef9aaca443b95dc16a458", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "dabe5f7267f726542e823f85b2bfa8019cf6dd3ff6a75c4ca9c031083d444a82", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "7ef1b67ffc0be815b674558fd4a4583f915cc3dbd48e30bf5e651371cd46ec83", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b447e7e49d98a9e5067fa51b20afd438584391079a7a89fdf77e50c6a0ffd75d", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "762491a3f84be16c1970ef89b01d243e9f492a1789fd2e3b1d515c990bc3a88f", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "d480c601e0b05cded7d39fd1e106032bc0d6a392801b0b3e64ab3de9ee966272", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "b391bd60a3bc7fbe9b48c2739e92cb9df1bb1c60bbd125dbf7e4a186f53deefb", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "e053f99360cfe17327f5edc6eae15b859f05fcaa7b56b3bd76d2bd2f83b7f2b4", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "75606422acd846ec96530ae2236d57b37f88dcd3b29606449d5fae901eeff342", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a3ee5bafeb91cd1e7821cc99da5a5bc2bfd8be242f6b98c253b66cab2ce2766a", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ff882af8dbed8d57a5d0981fc8d964328e5c375f6d487d5e19280ddedbbc7154", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "3737de7289e6d26050f1b6a8a1c7ba230e6462d8eeb60e8f377627c2958a164a", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "01578ec8c139f4b98c1354986940e075dea504f141cfa4e69ad7226d02759a89", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "08269560ca5e56796a6274c7656cfa21e969d78cb854a3242bc065e079aa1034", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "a0a681512ce45ff090bdf5d8bf4cef0122000cc6841edfb6540d7a765af9564d", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "2f706f92ddaf882dce131fcfc52b4e304d1181716aedfabfa11158cbae7020bc", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "2cfe36b573cc0009207115192411952e1bb4f9d1675570dacb9997f23284a2a6", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "330683efc12b39d65799ae2b76fb8c4a1f1f35e9da5f273ca1a9217ec2ac1fad", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "5c49624feb73de8a740baaebfcafb07c618dcc6a085b006f20c99571e684160f", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "20ab3d616232f22a340fa24a03ec417e65829ea3b071540c68f3dc102309ff7f", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "46fafff604feb3412e12adf8087469f0d400c7f22d1891071e7dee78484e16ee", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "ed47652f9ee3f67efe3048cfba8c2674edc168bc869db322b0f0a189d11b83a4", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "e1a3a0528a0a4092ef8405eb568c664d05d3fa52840bca4973fd337d51eae45e", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "51f02005f328d373e267b8996cc356f7c6aac96b92c0d5211b241013fb02f89a", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "a894f5acfa460ef2a8247368dcaabf4ca66a8bb0db1f129245d4b673e03944b7", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "dfbc9ee79ba715fbfba12248626716109f08193e6fdec5beccd5e7f7af59d3a6", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "efe430903d18d2941c3f57a436828d68b57fe1af0a948457f505b655060ed0be", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "1945fac5294f239fcf4e8fa8b9d4a25aafc858204099e85bfd61078671172181", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "2e70a042352bd007bf92f754f9c5a66564aa337b3025062f0ee91e16ebc7e34d", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "7ac0d3c757e16522363110584c11c10f135ef106269eab82d486b38936d225cd", +"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "e8ac58a337f725c491b9481028f72cfe19910d0503dff09654fc34e97b0207b8", +"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "379ed561a240c675841e04dc8ade8a00db5febf6f3a2285886e7f66039b7b490", +"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "d08832269b183d716b6ed3ccf6d3418a9f33dbb7ef2e0f467e2ec1fe581a0746", +"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "feae22f53cb34b7e869dc8f175f5b043df9f8f4898c5e30ee01a2918ecaa65e8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "8a55d6c6e8ded64c319960d7dac704ab633950e018f6341b61b90d6ffad85dbc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "8362c95e94002239a950dc40f583eeed632f29922080ba27a26523f065b7daf0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "65932d56bbe3ca5342265925e348e755b695feff11bd074a699a74ac035235f3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "01904561fa7ca168ca1c94df38223f83f08bc7f8fee7c77d655e1b96f0ea6f44", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3170df0a9b29619239f2dcacbe946d1b1f6a2f725d0e66eed0cc235f888de4c7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "57a29dadee5f7457ce67419dd9c7161a0dce318aac3aeaeb9d3191ef89534a6c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "761ab5a3bcd8fec0aed666135342e96633fb6e2c7396ee66f7a5c0480eac857c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "a74fa37103f70ac08adf00854fdc19eef571920b30b1dba9b4ede9fb57c33ac2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f2953ccecffa058b65c5d6ea190390bbf7bef31009914e03524f0a390b423c1c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "49b0fa9a23fd2e4f18dc7a690012e3c7d2ef654d6d5271c1e9a76c3463fbf6e0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "b5dc4d577fff94cd3afb175b7f3f6dbb9a0a7a8588f1e64626b79860207c3521", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "011e9fb73e2b4ab12f9c8d19482cd03926fca2e3b2962e713e60a97808b0ffb4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "017bff4549d55a94f8c40766c1e29b2e004eeb028bc193abd1031e1f36ce2fdc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "518ffcb8ef6adf2d7875b0656937ea7b930b1b6cfe5673a372120ec57d2372ab", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "dfa2805b65a5d62649eb44d65633b9fab3679083170e2dc9356ab3d7007139ab", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fbfc6e32aaec9126f5ec521a5f8e88928e012b564035f19d0e5c3ee7296d676e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "60036e7814d525a59654c306b00f6f40c62a95e942f74a16a15f009f6b841b10", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "b1f910ac4e4ffd80c4d9f03ffb3eae6ccd61db432a0584bbfd8a442550c30bbd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "a46c90a9e61813e6c43ec2ec3e206f88a889354c983c64151ba5be62f7b2d679", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "b273ab2bd0ff137d4a8c5567bba03e44d7ab0b486ebf3623e01f26c4c3aa07d3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "a19ab75c6ebd5f210118dea1fa3c4d9204d8e4f6971921a3905706e99400db0b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4562e51e8be6e786ce1f77b58acf8d8d505062e4724e63689b155434ca8d59eb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "0cff946db1b6fd09101ab169c321d431652b2ec41915485b25ff415299e3abad", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "f38249f90669900a5feba930da4125a757c034695c491d61a133c1a595fe3cc6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "35149cc63b8a64388754f4be68161b98071a9838c39d2827c9ea649047d799ed", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "e23250ebf0e684afae5ffb4d063195b062ac77e7e59273a2d23f706129a819fb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "a59b58f7276b639067e963b6a0ad3d59930b8c42be2a5fff000c4b248672b29d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "1390dd5292836b05f854ff94781bef4b10e399853fd58839ec4debac33de0298", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "fccc148e69e3470e93b18066b46cfc6c35f4164f48f27ad9622a31e248f6b241", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e0b19ea9ecb7ab604b31f94d91c4bfe7684d22a030bb4cff616bbef3628af57e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "6e1f45ce60ac19a73f6eecceeff3e95a6a022d28ef3196f17b48b60dd22be98e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "d7669202fff0c5f2dc1b049e26fdd1b7d50639b69e6735a0345826ded863240c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "92b8b6eab39bcc07bab9bbd4fdd9ad56cb992ac3b5e1fdc2d496ed1f97e49fe1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "77118d0aebf4a017062b64a99c40f7fd6ddcd772c078061cf31085ea99ccc2ed", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "86d7ddaa0ac42665338252fb8f772eb587485e0e2724bc5b37b5e2ff98bb1631", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "530129e542014c7ad3c3b0ae580895d85d0fc99cd171f625c5310682874c54a1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "c3c2931343b65e8832d0d38080db184504d860ef58dd0316197272123c379d3e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "8a2f4152957349d02b0e1e111e979df38dec558348388d802c9d2b0e10c8feeb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "7699e0350794486f21f03fda0d0c119132656fb0a8d697fe29fe3ac8f91770c8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "abcf6ca1745d22ffab4328e456e7f5d034438820c8aefb58abaf2280f7df374a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "5b03b532bf88478870a348ab0543b244d83f327fd1d90a71d1d742543c937e9e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "6bd6fbad9fec637bce25eadfc1e6eec99fac291899cfcb738450c92dc597ffe4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "4fe86f68e577a48fa04faa4098a4a6b2449321d4247467a612ffd5b2a7ed01a6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "31847cef4e9cd4b2389e887f722beb097465c7c4a5c0547b92d53ce6e257b1d1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "033a0a857c3b884289d7a1795067b7b6fef8f97a2c956ac59d38f6df25a6c49b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8a400428afe75dec369078c2f8b3cad0087d94ed4a6467176c2f0d81366eb160", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "6a424571323aedd60ce688660addf9633dc6c4fd9e4d6afff61455f78b1b2c37", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "dbb4dd3d199c789b8f353a5d9474fda6ff7b6bc4cc80b19119a7fc2a7d76d5f4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5641b7fe4db55cfd3dba979c847dc0c7fcf28b593315675ce6cfe7c51a93d2ad", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "096aef7a6276ebcbf16c81bf1c5a27d315fa55fa31305d1e5c4c5de1288ab8a4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f347c34fd8e695f2d629435e2679f0240e427de29f105cbfdd94f1c4c8d57fe2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "d802724112e4d90fb1d263738703b5c89b2a467d13e83909b8a8a43391c80ac9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "2ca5665f821b3d4ce26f6577b75647ac1c15e9dce15db203299f3801d46e4fed", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "ec5d448970ed13431e8d2f0282ad5a7bece8a3e82974f93be69033b37ef03ffc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "a9f72751b2da9affec8c06d326c6f4a690f1f4d991fd634550a89a0d0333e8b1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "37363410099c20f5bb61960f592a531bd5dda84d787211968cfba6864b3baa49", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d50fc3d4473d05309524bba8bba10ef67dc8e881094868ad00842301ac2118b5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "ec00ed9c40d94b9ea262c3d86560a5223bdac941ff0a1c6c6a85abed8c31de4b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "21736f3222d6310bac3f9c5e1740eeb2e84ba9de275c5d71d828b86949973ff5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "daa2aab81c12900bee46be8c4eac3fbb1f99ca0d1f49ffeb5947b0e57932119d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "639b397f77dfb68226c0083c7921e81bd6c37c7fa31581144878ab5bd32b72b3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ebeab602af5c5a5bada032b7dfa2184fafcba80e1cce08e12d9f5c16568baa4f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "21ce5b11e4108b7e4a0f13819b81dbea6621640222ff099d0c1671a41eea7b02", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "1eacc8c1f2109b2dbc9e9cce6ae6522228163fce8b15a7c5208bfcd0214728ec", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b70b1bbd36e6ce8b1d4b6d10ff1aa1a07c5b1907c9f7e17b5f55fa1a659d3d55", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "4d82850d4b6d2ecca30e7908bdfcb3822acde7a9fadb110f7e0500549aa12341", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "8ed10b4e857a9d833ae042f56272dd204284a4d046d9a65d3d2ccc35de0fdf3f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "a468179ab9a96476dcdb88fb9e3ddc6c7e9085e819f3e6b55f7a8fc528a97002", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "62d5a14eb48d0e147b327487bf70def1557e817b985a12db82459d791fa91c30", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "1c2d9ca7d30d3dfecfc375530639ded1407a6533d22d18ece77070ee68e9c560", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "b58b2906e1a59cceb81f2175eaec15dd3311acb4401b210b916b94ac62d2a0a8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "7fbb65997d4eba3f3d0afb2f7a42299c912b7558cda952ed101597ed370a8551", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "a863752d3212c10bd6f6e38d739416e9c8db9632573529a19f11662b9ffa74c8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "0138de98e3978bf9f53bcbea68235852bc99a34536273f1711e29c9261ad4ef5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3cd2dda13ba03c3a7cc48c966516b9ae2b72f607854ff7dcb0721ee844e782eb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "39a3b67bf4e7503c2e5fbcd1a95717ce36f2e9fa9b709a7b84e394cf63c0cd8f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "abf859060c00d20e1dc9507b9af5f8ac37b65c4c3b7c406b438a1635ee9865ac", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "8009dfdeab623886a2af61b011ebb44188f6540baa5cf250f997796bcb73447f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "74e5146ac7c47d1e6f8a62561f649906bfc51a5b6d9671e3727ef520e9a04525", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "10bae90e63dd93387f8eb4462f5fc58357a5b014dd40b4cbdb1589087a0c8dfa", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e47bdc342c1ce26b1817b3a7137ac3200314ecb872971b66df93d41f91ef95c2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "47064e1c708624c7bfe4df9778761aab2022367bb3be25b053c8721ea329f574", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "3cb6d189df0720efc32d6aa233779bcc9ac30a95f1aef7a867a9ab5563f844c4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e67483b4e8ce7e5d90594e3489429bac0e82ff45a21a96394fa46e863d4d0ae6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "09f039bfb693689bac62f92da9f840c3cb4c7d5f6e2e3ea16d956cf7006f4005", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "5e61fee553cb4ecd6294164c4918262601c4679916ee92d570167e9f5267b985", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "b5a9be2163a8f51c29dabc94bacab05d24791c9c63f7892a3acc64e5c902e423", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "baa8c8713ce423765a5b4abc9672d5a0c83dd8cf6dc473ea1c807f8e428f1f0b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f5e376df8d547e53c6d7658db15561a24f2f28258eae389553c7b17f04b84607", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c72a5552efc0978888e9ccd16078d678e4c71c7ca7a2d5ce3a2c5e6745fdddfb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c3ce86defc450aa2bae6db27a19b939bebb4dfd41e633a31399f59fe82fcad6f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d3fe23334b531cac4ce807eff4ceabb6c2c2536b0862d0944f640d2233e92ff4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "18359d1a950e607aa46a145138cb09f9f2fb69c4a2eb95f7002bda9957e24bbc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "323168741cb8a1191d7f9a7b967a7d285de238a218ad581bf2129dc8262bd147", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "83895c066231c3cb16c742394e88f7a33f1148266e58f8313f95fc886609ad95", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d797b6d81d33c693e0b7bc5f77aadb3136360f53cdf2e853ff32c0d1d5ff827d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "cdb812ca1620e424f9b42bc0683f288ec9044bce3621c53d15c09ba67ff4f504", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "58960c56c0208aaca5d053bc3444f1a8babdf2c6b0c6350ff4a6982744d27310", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5498494520d43dde42da29bb52d55b7afde03657c68d1eab261618cb1828f6f8", +"T3T1_de_cardano-test_derivations.py::test_bad_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "f4cbd47d49b36bbb7d65826f6d1f6b9854a3d132ed1a224539883e6c2dbe2518", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "61015434e9f1f27427a04af0b6b566eaea920732b81f507ff08a3559ddd06cf8", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "7c3339596b84225636524fa6addee4d0e0d883953d67d43423c60516ac84292b", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "688600eac433cb6951e4bbbf6acc2c9d79e5649f0d668ac71e95e4c6554011db", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "e606d680b0ce47baa05cbf5ba6ba31c95b3b039c9b2938647a0b671a6ad06adb", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "db1d3f63d5799b2d296568e2f5ca04bc42209784c89ddcb0447a5328f663060a", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "03fe5d2c586a71b04ab3fcde5fd768a162746294d0313f39e5051485464d093c", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "1169fd902e18988a6b1e3de0fcd7688683f3a2692c9f11f114cee4b66592d12c", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "c41d6743cab04713ff27b4e235d214509e501e9c77b19ff373530eda5e476862", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "6cc6fba4cd1400de8869bd073254fb7b087d62107ba8a4b7ed01b582155a87ad", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "49a425f4a25c645351c37917b0b6a4926e261c90e3ef964cfbb8cb5835211445", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "870ddfba25b29af6f709c388211a816579c8891fc3918b5db0fe0f3810853896", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "8b5cb12e15eb18573251abf70a50ad677c1f88b5ab65ab73b2da24da4946191b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "1c97b06d857eb47ddd30f948b5e136c015afec4d29cac00c64eeeebd3d85e513", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "43b69520f8c09f328f0ce0693959bd27e19f6921d8007857f0b73cd7502e1395", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "254fe526cd8908a21f6f88739750c118f4047f40cd27d9e22341a4a00da78555", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3c5402da998bdbb231133318b255d2faeef03930fb1aee217bd5c8aaa5c89759", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "82d9e1a956d2adcc1d8f91a72ec33a208f98e822eabf54a26566fc2f668f86ec", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "73a7f779b4a1cb08042651d763673a3c2bc9b819616c799a61a3c1523b10794c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "8e9351e16e635aebeb332644d96aacb40551cf6dbd14085dbb6aedabeaebffee", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "3a076817686480065fd42b1b6fa64a8dc02f765aa82a15cbed55439f4f04ac0b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "69ff4765d86dd38a072d26d8e5878395ebe2c6eed4aea201351abd3a350f43d4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "8e37499105ac2acbcba0e7fb27c3301fe297e1dde7739947d79f78bfae768960", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "a06b5b7b5e871e0b80ce211f467fb7ec1d96caa0da519bed0568ebabe56bc2ff", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "1b27ff3efe13a916e88c74f69f8b7b7d8cf494d5fc32333d6a3bd3b4b1a3d4f5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "1b27ff3efe13a916e88c74f69f8b7b7d8cf494d5fc32333d6a3bd3b4b1a3d4f5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "5a9f44e56d34d290d1650169dbf0229ec0ffadda4ba48e6cf51d405e6104a998", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "adbd6f2606266ce0555f2791044cc147b899e55ab90c67c2172c469bb661499a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "72edbe9ccb5deb35b9f7a1c8561d533f65ca16683cc882c23c1907078d1698e1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "7a071d86b8f5693425238b8c3553145891d090c02e34d9adff6c6b9296c5b844", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "cd415c89d9812eecbd89fd42bc468871e2b5ae9b882550c0c57e58e334962f96", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "dccbda890eeacfe7271692d8fafc6100722d2fec8a850783cae03af1629dfd3c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "dba9d1e5c9b62b5a51ec2f6aab895ab373ed663553d685096cdd342614bcdb2a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "bfa5ed666d5c59713772e508c71553db0e054b38fda69e1de610bce5489530b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "6cdbbe70ffaa67b82af883cdd4dc90da4d6878b9a2f21752b67994d6ff8e0e97", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "cd415c89d9812eecbd89fd42bc468871e2b5ae9b882550c0c57e58e334962f96", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "dccbda890eeacfe7271692d8fafc6100722d2fec8a850783cae03af1629dfd3c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "a625e7ca858a13eda7b178a588d97559d7cf2e3388a267dd7619b610558d9b37", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "6b8cbae3e9b1420ed72eb1113fcdd71131dcc9c83d84a653aa61797ae11868f2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d805633614a8fe79de58831a9f1c381e4b57daaddc89072add452ba26cd35247", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "fc913f2bd141965783ad3c83d60087557f8ef8b012e056b2e68c203668a5d4b4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "13a253a1eae6a5f4959a6a75e5d03f4f9e0c1da285d52c0fb027c9b294f21222", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "8cd230b49fb4336f9b551a8e3c2e8f507c93d5160b19ed5e48efa5b660fc6123", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9295147648d9b2dd6ed1143b29395ef63594c663951eb87eded0ef8ca1f9abdd", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "e208945370da4b7408b0f69c9b019297e2a876fc48265867f5308f66a025e9ea", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "fe30d10d824384d7f863a084cf3c2e4c76054866f2003f3a5be90feed7db2519", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "b1e7a32d785eedfe2c475a0f488c5d247da60e857099219e82b5b57343fb6f27", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "11e5c49e8e99239ecb2d6fe61d5ac202fa4c80dbae60ab58e9821f0b36e1076c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "d4c74b5e3d55051514e607561726ef360f7487ed5ef69277ccd7937f8af7ae94", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "c09d4f058e7426aa2c4cca8482485516926882df01550d8dd3bfe7d38243d9b0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "e2fc0090d04dc3f2ae241c10a5a386ae71b9b2bd4b4eb56ede3e3fdf6c63396e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "83af1f44cf7a3eb34eeb0b647916d67b41876f8963b69337dc15e3d5d2506ea2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "d4e0ec859e2e1414b1012f83ff0123a7a747cc06ef95450d8e5572b5a90a4a04", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "eade709a1cced0665b504ac41ac56702cebbf8b0c850a204de28a3971c463033", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "06704372aa4f75fcdb81ff48e2a8f800304d6419ce772a10227c4de979e7cee1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "cb1a4a991ad75dd1b43de9d9844edf62cc8c3bdffed0b9f4a5c76ebe928bd9c2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "721d82cd134e077f7582f15b3d8bb3dd7074b28361c59c7bf74642e7ca7875f9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "1b3bccaf82b17365bd5fdf68725929b9986f45310b6688b264fdc2f3b36e508c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "af57130e7a1c0db5882f4f46da1797c76aa2b95df145245d625c7173425a6edd", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "e6f28407ef21a9867c60228da076684ce2c4ca438677cb87610110cdbca6a72f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "d2fcbc3914a0400f60d513e45c1fb1c79d6b9496d121ee47bbb2d3213fe18456", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "6e177f1f21dbd9232389edc60e3fd371e1839b8e0598a02720002866793bb5ba", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "60371548c099965a9c5384c33431093039d88a60df629125397f64fb770a5553", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "8e5be458674be3d5898ea56b1789863dd6a9830edb7aca2a3857ec8aecf9893d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "9cf4c42bc6b12de0695e2c75abac52ffb4d86cb58d0158c17e13ff37d97ce6b7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "c382c6c5d28b38c42ba67e4b8655eb4b9117ee9c6f88519b19e405145bde3db0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "199668d03097c7d6fc3248ce3226471c82e2a666d898d8dceb40f149ea75c258", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "1690452a109e1f23784a981ffc80f2fe2960685948047a03e7f5c829048035c3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "86898e1c15caaa52dabc52755ff83e1ab3b942e15626ffdeec6290962c1d0701", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "0ed0a3646dbf246748b64bc637e0682d6e66e1e20865b629651c91f308d803e2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "d4ba9cf1ffa330404750d97bae84acb8a90db3ad6d5acab53834f9a9729b9416", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "f8a0de5eefba096f0da0e20a955c83e4deee83928307c83abbcbdd01168fe27c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "6d5c5711eccee52dee9ec4fd3e6402d0abdaf801c1bd4eaef532588f888c2666", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "d4de9bdf311502d9aeb3cdb608ed94ee17b2535b0cad09157c8705793132dd21", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "f2e1dec23bcdc829af367d12847f006ddbbdf810cbcfefc45b8dccb86e690926", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "bab2ead4a612cfb502daf45b60aa58933e9636356d03a67292cde0d277c92637", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "666cc2142fedbb33865c1bb6c1efdf725680f5956d4c8ffad513aad80f2d4a0d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "6af37789516dbad5bcecc5f8f8be45a2b0406159831637105521f457d79072af", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "e40c68a74a05344ec707d92b3d647247b0b4c5ac833955189b096897d260d726", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a17d827d98e947638dce5b522abbc284a64ba6653daa2c785a7ad6142c165171", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3b7bc5ebd638910a2a49d7a791a1a3b11934462bfecfd01cffa59ef678a04d28", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "26305ef1368e192052b41301ba1f75997529c285de746251b9513bc62d8859a0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "422547740724cf0889b8afaa220b2c5de3f060e97957a65b2a8dc74073840214", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d2a07b2f230c3f8d7483d320a2e810a8ff658d539c57d60b477adab4f4491b22", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1d800e66af6c3eddd6b09968843094ee591ea3d143faedbfdaa1d43ca99f6086", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "42836c27fdf64b24fd1b08688a866a495b3353f73ba0067ac11deaa3ab6f5614", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "6371b1f1b62452f6e6a34c4a40fdf211482277886fa01f6df77861064409f2d5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "77bdeff82658da47b1812f0e85b9c3f50b858c7d486c175b0ff4288a32f5fff1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "04f448036b0295a0ba19cee6d6ccf19acecd1de8c2cf4e9709c66b76db6004ea", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "04f448036b0295a0ba19cee6d6ccf19acecd1de8c2cf4e9709c66b76db6004ea", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "adea500e87d196705246aa0ecbf17fcbde9546755d9418578e3c0de595a42f22", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4afd06a24b0983936615f37e66546a58b99ed7c43974ce2972739bc765d7cc18", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4afd06a24b0983936615f37e66546a58b99ed7c43974ce2972739bc765d7cc18", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "b96b9d7af17961ef8a8a19e8430eb989738af960cff7e4eb6630cecec4606311", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "8836789ac256e3ee48950738ac4cf5ff2ca29b00e71da0392ce87c3f4a824bb7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "636deec36354d3239f36d01625302ee4608b83f32a959b8ba330b52b8bbf85ab", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "df7a414453a464d536cec4552839a3ef4131ea936bb9dcef6ae4cde782dd9b9d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "341b8dbe17623509b17c06ced392c11d924dbe8e57b941d7697ddce8c18f40e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "dafbd7f68ea24317a7ee2d9e5b044074791e16f890f3e7c5d5bc515b59e4b950", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "e2d77f46d7b939e951d2a05fe80acd439d6d1e4827b8c7c62aaf10dca773b804", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "8f991f7090ec7d1b4db03a06d55df270d6b97ded34dc44d15e43ed109e688399", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "4d4ab231fef9c9c9278e28d53aea0cd33031dbb662d3839827495e203f38d988", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "1c97b06d857eb47ddd30f948b5e136c015afec4d29cac00c64eeeebd3d85e513", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "8e9351e16e635aebeb332644d96aacb40551cf6dbd14085dbb6aedabeaebffee", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "d2ba3027fe03aa3fea2cf1b24baa052bf6b6dd19b2864270b7c7a1f53905e920", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "68c8def7a5fa2d33ceb707cc357907d9804c36a6a788e4255f4eab2fc3e2939d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "68c8def7a5fa2d33ceb707cc357907d9804c36a6a788e4255f4eab2fc3e2939d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "85c80135033d84741d4c590470e7f12172557a773607bb42e46fe470e3d3540f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "9c2f91cf8dcdb7c9dfdaa166dea3a076b3a357a051723f78b53a68d8a8f6aa2b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "cf0e541a5f5c1053f2416730277c464140ff401cfad2898e4aab8f2156db49f4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "c18061d1ebb0d75572fe27c6cec60839a6bbb6fd0d7f911da46e657a4fadfad9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "ec099c0bf4d0210e565dae64872a3511f0a362888f8ca0779d1903ba63512f02", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "a44b94266f2906634de5d8b72d30b07ef5ab728c20d6e68af687707626ff3c97", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "e38a8e75d7a8ff7feb3087f5738f270ad5b7fdbabe1b520847f66ecd65dd0e73", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "e38a8e75d7a8ff7feb3087f5738f270ad5b7fdbabe1b520847f66ecd65dd0e73", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "e38a8e75d7a8ff7feb3087f5738f270ad5b7fdbabe1b520847f66ecd65dd0e73", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "e38a8e75d7a8ff7feb3087f5738f270ad5b7fdbabe1b520847f66ecd65dd0e73", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "c18061d1ebb0d75572fe27c6cec60839a6bbb6fd0d7f911da46e657a4fadfad9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "b01962a8f30a6454cacfe589e5ace9be21a81d622da28f52aabadc6eeca5edb6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a3887bdada96ff4a6bf0cfa6374a7ca35935493ec62a130542eacf25600ef95c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7ab1db2be4d92ccfe5ec34f6df411152ee6b0916a85fbe86995ca9130b992510", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "591103ac1ed73149aa6d917f6fe82a0ac65205d644b2b0a10361ac0aab611bfa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "0ea4f282dda07d5bfe952a01b1f3b5b0b6f76a51c50951f701b51904fe0c939f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "343c3c8e99f703ed4db3b731bcaf413bb2f8202db147bb2119e9ff1e580cd337", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "1aca35a724842c1faa8dae9d6081d1e14fe99561b241f09cf8586990fd3a6a87", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "752f4b28501bcfc76b12d463df6aa70cf6ba11c5d45e94e703413d285692910d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "e2a19e8a15a9ce116fedbf4b9eca4bba37340825ad7975c49e7fd73f5d1edb61", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "630fda2a90fbdbf0ea37fe1028852b01e93b66c63c396816f0bd19b0c2c96c95", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8612f73dfb64b55ad54a133b08572696f80bf2ece7ba53dc9352c3baf53bfe6f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "68c8def7a5fa2d33ceb707cc357907d9804c36a6a788e4255f4eab2fc3e2939d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "d34aee569ef98b259d3568ec8ec92af8283e0e19d250357e0bc81a51134450c7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "48712821dfef9fb71af02f71887544d6b61766d1a430ebb55b31d714e247c072", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "807b278ba50fcb48f04c5fb47b54d6749769d45e7b0c83b0656ff014d50bc502", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6113c66d4ee2774bfcc74cf521ddd7dd32ccd700265c40277b91d8d527465e3d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4895f2accfeb2e36100270dc37fec820553c6a91d8dbb75dc7c986ee277409c1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", +"T3T1_de_ethereum-test_definitions.py::test_builtin": "5e011a063f04f282dc002c77661da6daa675d1def961905c57a04015fb3f0884", +"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "77fa94a2df3eddd5ebf01f3ed761a731c016ad36bdb01119fe7781b38e912e76", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "3293cd6dd2ce6e1bd84dd4757c1b94e350a8757bf806827b7663b4ed60e79eef", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "7bbca1d01c98069a34b907f92a5022815ca8e810ea82a434d5fc363cf870f9ba", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "924684d032593c99f05675fe0685ea313c5999642d1b7818a90b49a1cf0d498f", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "477ffe689b16904feb5d9d5217acf7de38b6c1bfae49131f3c457429158efe65", +"T3T1_de_ethereum-test_definitions.py::test_external_token": "5dc3b88580d0629110fc6c813591b76fc79ae4a90242554067b9b78c1c5a857f", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "92be2038b7362d2fca9dca5b369d327545f6f1804ac6af1c6b0f5d7226a2ba9f", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "bd52a0f8a0a164c3cd0ec791dba50e5f531bcde843280cd920bdb4276a349f5b", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "c630a3cfc6d5ab4647ff16a24bed88b828630e3d16d5f0ac76f0f9edd2c6277a", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c0e983c10563742f2cda7e6d970f5f64edb792031ac8e229a21765387e8df9c2", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "634a484001ce920584b82a6de4cd34d5d8c863741b31c9e3143cc2503c056e6a", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "e608cd27fadb2bee3b071939adc8840c50b9232c285871cdc22228d60e3ed4c2", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "37762e316f5e534efe91c13a6f4c73bf04562b48cece6d8218631c5437961646", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "fef69bb32f3709b62a0f87671271246969a31f8b53a187ffc723f2d6e6cccc31", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "90d491b0cd9f9f2ccb648a6e6c0577b9c9c4b85a5fcb8bf355918eab5cdd91e8", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2e21eb061c822a6ad4903c712fa537ae1af11b01915bd5ef2023cd59a5361435", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "75d24470c05663f27900d9b48b0679ab6e15a404efbcd901de7556405d475de2", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "9a48bd2d3ab4578e4e30588b4e53766674e19a4fdb9bcdfd338a646b58b76641", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2429fc8715a613c421f9d4ecdc012ee7564a348ee2c92d76170f2d7ce92d0f1e", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "3c96d79336569216e622a97c21a4b115600edb6d0cd39a2273d80ebc3c20369c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "51fa687120d2b7fb41c0a9267ec529779b718ae346749f94eed05c29e8e2f77f", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "cc4d094d1104c00ecdce03b5197b56ae183097e61f4625e0347777bc3734dd58", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "adbd1f0797dcbfc708332394cfec5abcfdb9c2aeabcedea50a552dfc1efd5184", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "31ae68173de49c3f0abe2f4a5595721119f2cfeed095be201a1c3f649a668f7b", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "bce69bc0d2874b0213ca36682d443e10eb579d1204d3d754729ccb9ba1063e8e", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "2111d23651f785a13ec40f7020c152b16733534c300a7d26e3ec7434e5a75cc9", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "7b2af915464d220fca269bc37ae76e0e74a68a28a97dcd9d639820b094a72025", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "9e72cf301c65b9c93be20b8dd6288b47372ed6f2f7c53bfeaa2e8ba3f36d5bb8", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "3d8ced5b0ada9175d820c7f00c95d7905a72a68112b578475bf5204762f84e67", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "2111d23651f785a13ec40f7020c152b16733534c300a7d26e3ec7434e5a75cc9", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "2111d23651f785a13ec40f7020c152b16733534c300a7d26e3ec7434e5a75cc9", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "2111d23651f785a13ec40f7020c152b16733534c300a7d26e3ec7434e5a75cc9", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "6dd0c21075208cf31a7c459dd16004dbe9c83fbe221f211c3dbe714c03c9dca6", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "e7e4f6d52fccaa7e7bb4e06afd69548f3e03432b2d93086ed4620916e3bc82ac", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3c97431b3403739a04e4db059828281c0b093566214cd8c8f2911dc7bcd5414e", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "19810f31f55b77cf08e2ef4d7c0f34824d628884b64b2fca55eaaa2c5ff54b3c", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5d5be6dc8a3e3ce7449868f52056b3c3f75e7da4a8c07d5d00557e0b126fdafc", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "e0b5b014e8da36661ac8d93a388bc77a4bf205ef9f6f233e72e198b8e699efa8", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "01d903dab1fe78299f6774d4703109fda021ac4dff47c984d1dbda96888f1d91", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "ed87c1fc29a39fa81de1300211fdc323ab4d3e7f04323200338520cd1583bc33", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "17832c7ef400b1abfd2c974acdcf62cea729b72505260886e8d51db4b373ad24", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "aa9f11a5e63d88b68e55ac524d38d5971f3971525a5ca15e02cd1585263d1735", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "a54115657f81e06d6cd478db623f6b9c09c6341d0669a9aa4be276cf89d42c88", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "e8d0f44ef24ca2057e4474decb556ecefc1690533a34c8e551dcaf9cf386cd6c", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "8bf1818f6c4913b51d57f44926cb51839cb251a71487bf9a94f8330aa0bb193b", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "946aaa418658b370caa8bdf287218b974ac5b52c9244659feb6c256285c00fd9", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "86678364d86adb0090426fc9ea8fea06b1be3d01f56fa3823079f9ffaa25efd6", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "706d37b00f6481d1e153be1073112bd72b28166a41be53de9f66ab0c6d915034", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c9fe2a74feb9e11ba5c6e07aeb3b44c9ff6cec59ffc6fd4ea872fe7e17f4a969", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "ce3340c5185e0add42ebea02efa6c175722aefc9eedf132849e6a260de4b881e", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "a54115657f81e06d6cd478db623f6b9c09c6341d0669a9aa4be276cf89d42c88", +"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "bde1e4fef931d2026445919489eb12da65bf8c0e5df2f2cb65901b0f0d64676a", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "c3fd61b4a2f07948f9e4c313654589cd4baaa9dd879e689075b034931d2b2f6e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "e55c14f1dadfc1f8abc77a8a95f27abf9b5f38abfbb980db68123327d74c1f3a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "0a089316146ad9d989d617b1e41bee941a1360fe3d2bb423339525f42861a69b", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "e55c14f1dadfc1f8abc77a8a95f27abf9b5f38abfbb980db68123327d74c1f3a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "9ce15969e60c49c7dccec38e43406f0411c30070e2a68ac0db65b3986c491f02", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "9ce15969e60c49c7dccec38e43406f0411c30070e2a68ac0db65b3986c491f02", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "4e4e5c2e0d1e59c9755a1a5c1e7ccb1d23a7a65445a7fcb00d03809f8ce58413", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "cc417567232e451e3fbd0d0256b0034647855732cb4aaf5a800c53f3b4b3459e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "9834fe55806eb2ea65830a5ba6f458e26ef0e80437fed8e544edf5cbef990eef", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "068a4fc31be7a1f579d8cefd8f5ab25776a31edd8942fc8d943fd9923da0870f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f1f293b990ba5f81c59406b9803a286267e587a3806a6ec2d1236991b048f50f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "9d7470778ecb62d8b358b49360703ce8f00bfeb4f88567cfc8337faa49e18e3f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "a095c66a65e4088a52e32eed5f78f255e45856901bf9b681ba5a7752f4fd4413", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "eda73788572f6147557b1dbcafd768d70e95d2e845b684f293327605fa8a04ea", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "2bbe767836476f67783ef2e154152975dda151ce360197cfb60581b221877d9a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "18c51594e5106bceb5d0188e19f583edc34f6af4acb79875237fd76b2afbf726", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "2bbe767836476f67783ef2e154152975dda151ce360197cfb60581b221877d9a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "5e9e7b66bf17e001e15e08a80b04b9ff999bb31ec009ba49daa8940013426df3", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "5e9e7b66bf17e001e15e08a80b04b9ff999bb31ec009ba49daa8940013426df3", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "27026ee7896b4017d9f074f63e9d0d42900d93c0a5410cde9ff1ec9fc61037bd", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "aec2fe134f045a14f4a2c5e73f820f738f5637b03f8d0057d9566b54d68305f7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "c3fe271c44016bab1b0b32100afa75bae6980d6c605e3baceb82f1b53fce5070", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "068a4fc31be7a1f579d8cefd8f5ab25776a31edd8942fc8d943fd9923da0870f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "c207ec086163b03ae82279ad1e0f515216d5c0cf37c674dec04eb0c16a9fcead", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "fb905bfdb6577022b943cb8a589d6d403d8b8281a50ce85b5a06fd00e4a3e696", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "e433cb084a2c713ea2c46977f58700f9d0ad7df0b8e113eb5d8fd9692f09d67c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f1f293b990ba5f81c59406b9803a286267e587a3806a6ec2d1236991b048f50f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "4e4e5c2e0d1e59c9755a1a5c1e7ccb1d23a7a65445a7fcb00d03809f8ce58413", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "335c2fb050c3e84b8fcf0d5e6592a1011d6e245f726ce7b12a6565f90e0b018a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "9834fe55806eb2ea65830a5ba6f458e26ef0e80437fed8e544edf5cbef990eef", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "732ed8ed9e99dadaafc1ce7e45c838a035204ef782f0dffb4671244523f4a789", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "74dbdb9596f76df1036847f897319d0f6854a45d8025f5b35d38c168addb1815", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f1f293b990ba5f81c59406b9803a286267e587a3806a6ec2d1236991b048f50f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "c207ec086163b03ae82279ad1e0f515216d5c0cf37c674dec04eb0c16a9fcead", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "27026ee7896b4017d9f074f63e9d0d42900d93c0a5410cde9ff1ec9fc61037bd", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "88750fd49f3d6525e0e4ac4c10a4933d2e54c456d8ba0d1dd8bac695032a8120", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "c3fe271c44016bab1b0b32100afa75bae6980d6c605e3baceb82f1b53fce5070", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1caea316b2e0e22c0aa4cf73e02c2e5cfef1bf69423b645065b25d8834f4180d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "4786ae41465845335a5ea66fe9da48d162eb9a9b172429e0210542785204117f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "c207ec086163b03ae82279ad1e0f515216d5c0cf37c674dec04eb0c16a9fcead", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "fe77140db75777079e387979714dfd6d96604c915f606e81ae1c82be5cf75295", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "fe77140db75777079e387979714dfd6d96604c915f606e81ae1c82be5cf75295", +"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "d99a4d02ff1c0e2b5868afc7dbd44014011d141702921f838c998fcfde6ada4e", +"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "70d68ea251106ca5715e324cdb5284a94f659ab9060cf4b2cda638745c40c7ec", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "53fc65c9ab59327b3d9ccbd7303bbf5e1dface506d0f0753db5dbe91eba45353", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "53fc65c9ab59327b3d9ccbd7303bbf5e1dface506d0f0753db5dbe91eba45353", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "703299a34ea39c37801cd11b66c73ff8d650faa39fa55f4d28d876e1085d220c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "703299a34ea39c37801cd11b66c73ff8d650faa39fa55f4d28d876e1085d220c", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "526caffb9cd66a73d95ea4653ab240cc7f55127e1b383435134427e2100f98e8", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "526caffb9cd66a73d95ea4653ab240cc7f55127e1b383435134427e2100f98e8", +"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "2dfa072c8eda1067b7dab9dc286fcdcc1d6c8a84db31a1c7dc2a4d3ac9c933d8", +"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "2dfa072c8eda1067b7dab9dc286fcdcc1d6c8a84db31a1c7dc2a4d3ac9c933d8", +"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "b27f160070d5204c0149f7293d8f37d4a575db002e8a9e42fee87e5419c0fafe", +"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "8c542e9a88a5e41baa94c6372edbee0e83ee9941afb0da1372236b161828cac8", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "edb59a8bdd6f34f81cf0d2c43e29a88e7f08d8c4f7bece5b89dcc1d43ea37f11", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "2d68f2192e87b557627f7a0eeae42fe637da84882cc8bad6f30d1140065ebfd2", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "6fd6483f0bee78d5343b96fc22c81f3736c20b017bde51c8eca0d098fd3e1066", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "6f673ee48a21d2d33f5f9473b9e917b63fbb4470301deb9b6cfe8a0955c0a526", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "62228fbc7cc84c27e75411c5f613880893d1b5698aa56c310399f17554976da6", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "c4c37ff4863b36385e863b360ed3f10b3048becc9f4d57ebcf6809c50c1aae7c", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "81c035bacfa74738b0658ee4f9bd5ce548283de7a241cba8584d5ec62a6a2d79", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "0a36a85330bcd1b1c419d7767ea4486c8e4af9d80d83656a6c9d346c31b956b9", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "403b88ada23033e08d202093bab5c49d53dc3aee4a4323de1efebc861b72bd95", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "9ee278ad5a76b306a465ddd35f1282f203be8888258cd1b4f70a95b097bb34de", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "ac6dfc5028d5b72c58801fc9ec3a5ce2d52b570f51c6c39e9542c2364075fa2f", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "dd33e9b9370e91dc588181d6a1b4ac0c714f68fa8f0e97aa620475858a387f9c", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a13b16050e2e9b1979d384fbce40c3a3c869c6803b0fbe9c3b8cfc426093ee39", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f2af996026689ac9748ab0622b4d3fbdd9f88fdf85a26c3c1135b9999d5a9711", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "48bb2f52db7216adcc6b0a7f9b7f2e891b07155f8cf94ad8a3bd39e89de51c83", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", +"T3T1_de_misc-test_msg_signidentity.py::test_sign": "9fbfc01e0639441f85bdb79cfc3e700043c0728f31e561a1f260cd675367c4a2", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "d62c2a50e658d3efa50137f6a9d1d4664ae29ed1f3764605660957c09c5814e0", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c36bf77e0c73a73bc8dd4e46ed604120a68c4a72f7553f3b7ff2bf80edcfa541", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e6408600df0a27c6488b4f4bc19d68dae6650ba860c45b24f6fcf645ab9afdcd", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "05f83653f7924dca43ea081467de95bd4d6c3ed37da421710e86b6200610d2ff", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3279c313a12ee45b82d64d4f572ae82c558516592bc37b748437c50b02b2c562", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "60ba99774981cf0d0fbca3eb72e0a45c64035d3a3618d0dfd2613099e482f7c1", +"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "3f152b740ccafc458ad07057f40e49be5bdd678dca7d858e0cafd7c462550ee1", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "7c7785acebd87b7878cb0d09426c5804594326797862f94f27011019727f941c", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "226150a1e7952520589b0fb661f9bb8ec9edf1e27a57dbb74afc6c0b32026e27", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c63b1d2db83270765eeeaa33e49387fbf76336dc73de2eeac7b4af46302e3129", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "b967bbbe778f8bf6742832984a9b3867ce4b5aed51e9fcfd56303ad448bea824", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "6f8ab1c38509fdf1b4e2e5110b22e1c51e0291cc81420682adcd9ebd00164fbc", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1fa5a1d62ee9bb8c595fd6e97afac728ccd230f76657ffbac4ecedfd218c25c2", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "925085d1a4edb21b0c624a2c49e3a65d001015de330381990a8446f8dca518f4", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "dd5c479a1d9454264bcf8d4c84017af84e471b4ce987d3bc72cf156e98d0ef21", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "30456e6fd43ccaa4c0954c8a466dc62d943b9be94b1a4f26e00d27821f49a2b0", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e9b69577ceb6f9b69ddfb7dc90685f83ce48d381f736dbf6e59fe9aeeb72b3b8", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "33bf9b8b21f75dc92c0ba236818b3b4cca14e805745094493a28a348bf0d97cc", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6abd808024065e5d80ee9e12a9f64692923ca14d9d95915fd46735186c6ad451", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "9f9a6ba2324a6cbf01e9493a13c2d9177c9ddf52846dda655f3ec4784218101a", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "36e2818a424075d2e9b42ce8fb7f0dc8b94617b18c81f5972ce5a30457e83d89", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "c0b331f2130d04808aad59d80ab3299b3e7e30e16b8a88413d0d28668650d007", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1fa5a1d62ee9bb8c595fd6e97afac728ccd230f76657ffbac4ecedfd218c25c2", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "09a5d135a125c1162f0f82a51d36e14ec3cade3fcf54f5bd53439f2bd1476fe1", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2996f684e7a915199cd965d65acf74c65274252b9ea4c970495fdce33fd33a0a", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "4e72c568cc1d869d2912e49fd10c122e4e58df2a6df0efe7d3b47559c5f73f1e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3338b68f1e369480d1e89b13b5ed6e80c3a3a7c2680cb982a33de72e79c4a79f", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "30ceec349dbcfe4b9ccf2e0242bb11c38bf6b32a93bb67606f0cd404690b7737", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "32f74deae979dd2738ea7e2ee6a181e1fe143eb410c0b81a265ead433ab5b682", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "1e9745933d71346cfd7221a6db17a62cc1822a621769008d32f1064ae1e485b6", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "117b9125a10c94a602fede1623f9199008fde940212619b8a6b2af94a0c863b3", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "42819077aa0e14d728189d255a20edbe39e63b61ded862d89e71f27e13b1efcb", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "cc5001780f794fb3a637c76073faf85f8f8db66b3d84ddc6e0e1e8638a83731c", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d7b3bc4d8bdef4b04946e734523c46f8f9cee0c137e3bd34983778add5a06627", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e5ab874d614015da4387361f4c33e53019383964f795e7e3c22afb4549770cfe", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "38002d81da98997775ac1fd990f456c1604f2375dbbe46bf187a182ae403ea1a", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "910dee2ea1a30feabbe9c9630dc8f68324263b31e42cd22a45a9915ee0cd8403", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "bbce4c33f26f74f601d9b4a1db6f1f6637851a7395ed30cd6c62578b9871cf92", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a7562d6180c4d2f3df05452f8e930c3b077153eb8f58b002dd285c01b5edbc1a", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7b3793b9ae31c57110f6f891d274e0e75ebf0c392d97a146473dbb7f679ab41a", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "3ad2c08bc575a4777823011b0ec0d88f12ea5cad1ad74f7c9ec183a95b8188fb", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "193a5abd7d596ca78c0deba15c87c6e0c1b10e41b9680727d7dc360d277c3b9b", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0db733ddad58a3268e1eb6617f4afd5fc8efee30b1f4646725663b52200fc004", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6df5e9ef96ae040a17f00208e8ff84bb96c8d10e53e4c18c199771cc1dad6a8b", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b06b6f90627161fec991d7a0ae098652c3b0a4eebe65243e8f2a139c37235987", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ba9e1eb8e54bc435eb22d5d5c76bc6a2ac996a083a98e93fd92f7559ed073ca1", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "24aa7ee508e53ef9f3ad1e95bcfc6096e96d3f93cbea4c02a19f9fbbe7341cd5", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "762d092f390ee436559ec2f00ee541d117390714cf9fbc5fedee363be2f73715", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "82ff9769737dd4329687a365262e35223e53ee58f42fa8800b092c406bf170f2", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1061d2aabc7ae7d9405ca3094769d448280122e53be3590b29acce4536ac59c4", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7e603fd33ad51076925cf29ccf5a520c9af56516dee68cef91a8fca8e1862f24", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "dfc7ebe4272f0ff3aeb373e12149734fedd4bb35c641116744cf7a06c7dc77a1", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a3e5fa34530877f7b87fe77f3716e0cc37e0384930f43107caf15f076a3496c8", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "d66ac6cc9ef6fa7681664701211a3aae11603e50ae5ab6b20d15877f526fe0a7", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "46a1f30e6e95464b3de000f62f703a77b275fd09327c0c1341333b0854c6107f", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "648490c339ee840c1c5dece14a978750b1147f58d3d44faf5cc2af07169ad14b", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "8422ed5880a444939c3b511cde5ee1883a633371e940a4ebf51d8fbff934f8c8", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "b311be66da212d71929b0cdfccbee4971faa8abdbcb04e45c3a493977b544f32", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "457a66a681085132c7a38cc5c7d85fcd4c632b08d8d7314e2bd0f9643c4eaf5c", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "87f3a5b7f38947178e0d868f45dbc1874d150420931bcada82e201d547d46491", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "f702b60bbf9b8dad7ec6141aafe731afc4b9da9522dce65f4a4559a5d3ea2853", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "b88172329f0d1e9941ca47a2d1fd495cf87ef1894d651c90617ca8e350bbfa06", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "f4a390a7d8095e23916c90caa53c081e28ee82535147e394308138f87610b965", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "e019fa8ff44e3296b1208d801f9c8f94ef2cbf06b195e89af6647205f0fe4c91", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b88172329f0d1e9941ca47a2d1fd495cf87ef1894d651c90617ca8e350bbfa06", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f4a390a7d8095e23916c90caa53c081e28ee82535147e394308138f87610b965", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "e019fa8ff44e3296b1208d801f9c8f94ef2cbf06b195e89af6647205f0fe4c91", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "0c129fdd9475932381aba8894a6bce840266338f2d6eb57bf5f4d1ac7e0881e8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "7b0f87a9ec819934121a168f679279e5eb4616bf0ce9c8d234b40a7065b2238c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d832438223cf065dc2744f19765280fa2a38358887876506f97d7f1f005cb70c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9fa273b0095c8378abe4e624f23c8193cf7373e97939b30c3cd3d62e1931c90a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "9ae522d89b52aa1467a3961e94eab5f678b82659aa414b2890ff03a026f21af8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "c06c8c6dfd0c7a1871c250d3e41725e2b1dc15e64196553e64c6f814c76f673c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "db66fe30364d5a42419e2a5fc2526436420b549a05fdc2b009b2e838aa01a654", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "df5a173f16acb3dc29c57efcdc70db73a4aae603373751d9694fa0af76e12915", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "4e8d78a1596f038323cfddafe375dcd87990c1e8688ab3249cd164c500a283e4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "4b0e5e46cf7935955b9a806b285365f8aeef6de7ab9d4124641d747aba472611", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "6c6a70787820d30d2142eae33a5925ce63ea88a9f174817fbca783f3112c4d54", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "973e92425359e7461f73a23246639a6626047ac9e660cec34aa8613a6ac9d7c1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "a49451ad7b2eacac01baf93eb42266fdd8727c62f71bce2eb6bbbbc5d392db23", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "01c2f1ffc52a7b30045ab307744ad14cbff6493742bd2aef58251831d1978b97", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6952e4a6e89ed95762302cb983a9cca7f2e39b2d555b95505115e7d79809650d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "ca8e03273245e263828db765242a48730bd13d46d169505b2854cb3a7f88316b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "83d0ad3cc0f59f575dc6e7b83378080275a0c3d47833f59a657587474161c2f8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "87f9c7c1a806413183fb962c8ee60d3aa9411ca5845bb762274c716900bf2e08", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "16489ce07a71b594480a956dd85178cf14e26863bbb5b7de0699013eb1fed33a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "9a663f49bff1423fd08647557a94146fbe3e8aefa576047612b0fb2517801da6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "e2e7e63496a50715962abfc2f89f9a06c3187092b76e71108834434cc002b94b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "e2e7e63496a50715962abfc2f89f9a06c3187092b76e71108834434cc002b94b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "7b43e4c1fc03736a87e503e65c8ff52fd888f42a4b8b386a8f80540b13ee2ea8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "ade460a139c645a5306e73250f07f009785250fdadb6701f39a4911b7879a7a2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "742c72551179ab9e09bde73d8571e7cd060a3c093d6db8fa6cceb2c5ab216ef8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f40d57ed5d039275a1f2ec5f67c1539162e3650434444792b6c353374ffa0db7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "4218c822b6c82bc3a6c91577d7423b3c7c7749a66568f75138d969a8ba105a41", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b803c67d8e7a35303407ec9cca615f8a07a10bf02699788aa20007efa6871606", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "7d0530e4c13275ff1a2b309633edf1768b6eeb4cc74d31a484aa391d32a6c3f7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c0ba29f713be128fb78820e82e39bb292a5d6e880408ef40e5172e50d8a041d9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "b7b15c3f485f5d50d53ca385dc6afc323a36c39ff60a1b925e952c09583a6ba2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "714a149bf6451cac4cc7de1dbd78f72672c31818b11ab2a86e046a8f11a7d68f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "524b28ee8f78da5a1c34b0c6a9c4913a69bb3a4685e4eedf5e2d4f794baf3ace", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "0cbf5033be99440f38072062ac5b9fae7ab86f0987ded7aafe346a79d7cab8cd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "ad2542f33fcc1479584a5ca598355b2fcbabf913cf4fb8e86ae50e42738f4d07", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "2785defb9fd3195ee558d844f104ffc82bee379c534f204a9399b4d842dfa49e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "1837d6cf6f9d77dd6e0dc96046b2dd888bed2a997ea162bf659139e42ff5c2d1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "dbe7fa923381da8b6f29f7f9d3aa355f1c9aa73096d166902d408969f41c60c0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "9ea9dfe65ce242c944782406fa7acf3af4b7ee4c60ba554d0aeca627e043550c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e46e429e7a70bb4a85b6b71989ba304cbc7621629071ff352a8b1dcd8cf227e9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "6d5376cd2411fc5b9f67d3dc258b892aa4150400107d3a8d4d9d34a9c65eff63", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "14099b84504d026fde926f94c8c8640a5401cc2b18ad292b264edf7ba030b181", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "5fbe8873e6a19bad68605aef4ebaaf52d66a855f257d41af2f1389eca383e324", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "1cdb0a8754df74a5e89e1f9fe87022a2b564d36a9d616186e13d974b6747fb0d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "3bc40185e729c1ea30aeae96b500bff75297be1295571001a1d070a597d85f05", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "b60038a28f82c7ff1b22047bc2cec37fa9f1a797c622a7bb5b01a709ed7a0574", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "553cbead9233e4bafcdf37b0bfb49b61c622de22c14ed4df9ca2e8bea0898f5f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "bcd6aef6f8b57787e011444a97bf96317af068cabbfe575a4ee9af876f2e0eb1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "b53ceaa4625d5670b5e1891a8f6ea83119ae2016b86850729d0f7ca3e8982bd0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "f91d131fd1cfb44036e67bc38e464b1c5c2731759ed850b9190814fbf1be3a88", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "d4b2c5d306fe49ca4fa7d1d5f245b1f6265a0d628ed614a0db3f2872435f4394", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "bf87818071541f3a01e3e56a7210a631d24dc1d0a17f7111c6b05da613de3519", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "b47e013215cb7953aa9dff14045e0131054d510dbf00ca366959ffb3aba34703", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "76f232343e7d721b36992fd6fa1c15efcc50f40d6149a61a2bc050b17acd9237", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "1f74835d3c173413b3eebdab1da057fc340c1714f1ab0ba31ba8618a6d86577a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "a3b1c187d82e9b0e24e34317721e3831f0d45218d689575782bb9409e8a67b75", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "1595f068152388e342cc6e7ebd28951337d495856986eb5a67e5c330492ee7ba", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "dd76225122cfc49691a77ca686da74da57aaead018e575179a954357fb81c385", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "fe1e73d8a4d29793bfdf90d9397b66cde88e0230fa096cf67060b29bdf3c816b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "742c72551179ab9e09bde73d8571e7cd060a3c093d6db8fa6cceb2c5ab216ef8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "d67c67bb1cfb0257b97945e6b7581b68f4b64ee426c4893b44b2d5fcd9b7316f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "1bf673590655cbf6dc5e68009b2fbc4007bfd34138effe816b099acacf71aa43", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "431a91efed9e0fcff7513b787d927d55f9965418a8339395a672792c9fc91560", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "1a37d7a6bee987242974aec5dabce5ab5f1729c279fe5fca0551e7ac6d836c28", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "37f5442fd8cc407fd86c3153b9830968a75c71b779f69caa0e1db694b2f015a2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "be489e5a3a124ffdde7147b2efdb9ada0b57980e4f1fa2dceabd94c9e854c667", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d54dfc905c5778dbc35d66d9e9cd5f41a6b2a80b0f95fd2fa362112857bcb6da", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "0cd94418279dfa790df1f8e791b057015b609177b84131254dd03e8582271554", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "01bda8a68a6dd18c1d8507a2a233990508104606b2796733978d0543575fb2dc", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "8e9328e861ee2b579bae1916caecc9771de5f825600eea73ab5bb50da99415cf", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "9ad496fbf87b9e01df793a2a5be0b9fd4336aa5e209b67da68b47e3cf415df7b", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "0c919be977e733bb67576e510fbdd9778284dff7a6aa93e3fb711302b86d7b82", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "3726cff6f3cf2022939c5a35ebdfa7c1fe145faf5958a6776a0aef5f90c6cfc9", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "6f60ae6d2d0507080107260f62e0789330357719d0611c3623feb9bbdbb68f86", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "40c421ad4df9a31b7d353c29a53d7b28f14dc780a6521e13ebc97f8618029967", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "91308406596db2e6942dee657292c002f4aac81fecff36a69dc5b2f7eda3a944", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "c7d44c8446bba4f1c7979edf549cf74956b2e09c0fffbea335e2be2a42f773c4", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "02457ef155f009cf922451ca161b337cd3ef0de016649b19729ad904e5fcb411", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "25eba0ecb48b90bf7c3a6bcdbe244f4dd6e35afccb37420507af0b8cc6fd0627", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "bde28f0319e6b422406be65ad0465b4b08640f9e73f24cca5cc783aefc273be2", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3937c523914319fcfd16785bb4e8c0c1466b475336ebd0b369e91e09bc5b4016", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "6954dce1021eb7db7815290c3cd766559e188738fc515c46a91423a3f7db1f8c", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "5cccd9cbcee79d421c7b5818dbb6fc06f91156d09e83a6089767f472e3504363", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "b638ef2ff223cd3c5bc48b453b931b54dda11428ce9e916600c96a6ec201fc21", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5672794bd42230368cfaefbdf3ee1f740b4951e7312b84ea2f6ff08d611f0df1", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "f4215484eb52750b7a80821a0d570cb89af90a60313be52750646e0d942feeaf", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a1bbaf8f3b4219d3d1591d190246d851b69b3a08b25ed9deb30682a6c1fd6802", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "0b547080b85655a669d911cf6e67dc6b71d10ead39a1862445add6a5e194632e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "6524da1a416b76d7fbdb24103be0b4e8744a1e9cd554d0c392222ec6b2783201", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "8e4e30780090b4330aef651430341177a417baddd4410724bb1d00c82b8d2233", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "75d7a81beb661942df988371cf26259ef8f42e9e8186185fd65dfaaac261445d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "38828afee6a4fd650aa4acacc0d32782fe7a106e153a1eb611dae3a039b90ecf", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "6da6de3f06b0df463eda5c0f507877c0e7ea6e18dda99fa18aa04c06a520b9c8", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "6588d2b1ac3166eac83646eb8b328869f4ba8bb9f5ea0adf6186e566e38a94c5", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "97a2a4d389946545ba37cad82837922732de07fc8bd5988a6d0a2fe5241f3232", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b03efc2a61eb14a3dc55dd567fc9772771d4f899924c9fb719afc34ec0e9180a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "27af760369f1cf58fb285a2c85ecb9544529b46da01495c42253b8743e559757", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "246ef955db3b4677544f6ce9c0aadf2b32d91b4683e324480d868167ae093a9e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2446e1765cfc3c2b06eba9f4607d821456aa25dfe9d043d5561aa059fbeeb785", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "2c7f04a733b38ded99bd41371282db6a88730a9d688bc9dad12b494eb06117bb", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "03a4ab1b25c7b83e922f57fcec0d88bd992315ec4e97fd583c44409b5031f00d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "7e0101510b0999964ba08671981b1e157bb1495361df28912732f892fed061a7", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "cedefe5a737ef8f0c3932f7dfe034fbacb87482dd6a83cc7f4f109e0a85449e3", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "ba60d2f740d3e056d740719dd3496ddfc674c7897736774b41b2290d20c2a24e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "23ec5169ecea72f7410b76fc0d4d2998332d1bf95d44f58d41e62c2cb43fc47c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "3826529edf9447bcc375e77211aa02a699ec9b274cdc51d5f5296ced85296c31", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "abcc0abfd6c8d6ea76dc32cf61e9e7e4176fb70a2b9f86b5b9aba282cafc7059", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "cd9c8dd0452971dde9af2aa5339eeee7bbffca0ac8df53504147ae4b2600c80c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "667eb67a6f89363ee12542765dbc79482b5f60d543cea0e4ef53e7a1aa90ca02", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "9b7962a4c18897b7ffbdf91bfe273e35326f120b9d9447ad9005ec729a7929cf", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "458807fd4b74535a8efe8c6a63324aa7033aa8b7d16f9e4216b046e5659a9ab8", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "abef2f7e1b1e9a304deae33e0545bbb7fff4586a2127415e21cc0a4e9769e08c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "f272ec45b0a6d8b832ed2bb59df31e78b046d8ccafc5ac50d6a1203dd7462db7", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "cb1c49469ed033ee5f5e4ea1d1c3348455a9be4ccb39def99d78f53ec643e421", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "83e90e14967916cb004dd98ae5f97472cd400be1fc923dfeae31e0c3d8e57fb2", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "77c7824d7f6e65ece07a0988061e2559aeff3b68344487be5843d90f675fe951", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b68a0b930ddfd366b791739ce4bbd7b300775784a2d18574700db871173c4d80", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "8f24d1f46a020fd0c71299417bc8b38e81c93fc4e3539345490e7603301dbe30", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3826529edf9447bcc375e77211aa02a699ec9b274cdc51d5f5296ced85296c31", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8b81960e34d461700c710535304f2e83bf9bae1c0effca5bf8519623372e718f", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e242ab02fd9bf91e16eb197cd343d9278e937a46aa82fed16d0e164a463bf6b4", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "131a5aa547f1ddca0954ee01955e8fbd58e4aed3e23c12af97b7e9179b2bda2c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "eb97415db4519c656ad1edd7cd2f79f8f1ca661c65f5926dd1a4f9c61f5b3282", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a551c7e68675767e108ae794fc7f8855319320fd3b99cc5d1d1e456aa7ff69c0", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b8d393e3739a7e3c40ff82516b6f95b340dfa1fa43b05d54c50c632d78912557", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ab2ee76fdd7e5a2f7bc67674cc352cc77ccaf89f2bfdf64e51ef1369cf1cde4f", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "39fae5dfba2b38d094fe2d8ce0924bbecba33ebbbe25b0742ce01f34e0892df7", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "7a21758d980e772e4d9e112bab97dad942997fc6c2acac928e2127e8c77da561", +"T3T1_de_test_autolock.py::test_autolock_default_value": "99f0c1dc95cc8bc5b5ad1e534a2dae550b1506fc0be29826d237d5fe0dda2c81", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "d113ed8ad29e2c78bbb41325c94c10c7774ddbb7be3eae4a31875e4c0b00fcb8", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "d113ed8ad29e2c78bbb41325c94c10c7774ddbb7be3eae4a31875e4c0b00fcb8", +"T3T1_de_test_basic.py::test_capabilities": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_basic.py::test_device_id_different": "8e65d9e35441a2a3d8e3d8b2ad3e1654101f507f85405b5e51ee4b4bbcde9b62", +"T3T1_de_test_basic.py::test_device_id_same": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_basic.py::test_features": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_basic.py::test_ping": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_busy_state.py::test_busy_expiry": "218ccf08ea64bd2795e57c147909f93e014e34b95eb5203934b677e7cac8e11a", +"T3T1_de_test_busy_state.py::test_busy_state": "38bb1057f47995ece0b65f1098857cca8325c435b4e33f7fb09cc924d42841d3", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "cbf4c9097c8d0c698bc0d21301082b280503908f22ee3338e5fd0b8e0059836d", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "cbf4c9097c8d0c698bc0d21301082b280503908f22ee3338e5fd0b8e0059836d", +"T3T1_de_test_cancel.py::test_cancel_on_paginated": "a65d43e1c0f31b083cc42839daaff521078294b0effff7e9dbe73d7cd20b7822", +"T3T1_de_test_debuglink.py::test_softlock_instability": "03182288f911280db29fd5e24a854add482d3f540d9c857f4d2a129c100901c0", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "bf2f818f1145174c6b3728cb9d1b31b02e37c73f9c3e9a34de5edf9d4158caf7", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_language.py::test_error_invalid_data_hash": "f6fb72dd5883f7baba49500764d119d4b144c89fb14d795e6c2dc9174a5fcece", +"T3T1_de_test_language.py::test_error_invalid_data_length": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", +"T3T1_de_test_language.py::test_error_invalid_header_magic": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", +"T3T1_de_test_language.py::test_error_invalid_signature": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", +"T3T1_de_test_language.py::test_error_too_long": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", +"T3T1_de_test_language.py::test_error_version_mismatch": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", +"T3T1_de_test_language.py::test_full_language_change[cs]": "70cbbb5dc93900e41d79ad01fd1b4b516984ebe755f757dec49b30991b19e72b", +"T3T1_de_test_language.py::test_full_language_change[de]": "b911565bc5862892e12628542b51a5b19a4d404ce05120f987ee1ef7b634f004", +"T3T1_de_test_language.py::test_full_language_change[en]": "a0a8a645df7e0dd716fd7000103b555faf995cd131fd670c7ee90c590f6eade5", +"T3T1_de_test_language.py::test_full_language_change[es]": "7f237ea6a4b08068bebbadb694a297203cb875fb152acd8fbb2f1a85d778f564", +"T3T1_de_test_language.py::test_full_language_change[fr]": "b400810e21e3c04d417f4efd3d796e6b79f6fc81ffd504724d65db94ffec641b", +"T3T1_de_test_language.py::test_header_trailing_data": "b22fdd50b69397c8eb92c8778a390a2b07318875f9284546157b93acf06cc8a6", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "efbc6a48a27301e81e21bb44c4dfb6236c2b516a893f1f017bd11f9027482b75", +"T3T1_de_test_language.py::test_reject_update": "47487fedb409b1313046b9b7195bf2a8c70d852d10c973c92f303940764ddfc8", +"T3T1_de_test_language.py::test_silent_first_install[False-False]": "990c1a3c0f64b4b23e6bbb87765f3dfec70b94a421121c62d956e3ac9f313be8", +"T3T1_de_test_language.py::test_silent_first_install[None-False]": "990c1a3c0f64b4b23e6bbb87765f3dfec70b94a421121c62d956e3ac9f313be8", +"T3T1_de_test_language.py::test_silent_first_install[True-True]": "f929150eb75c9bfec11b4c32f01a8791aaca3aa79ef8bd168b491604ee4d3275", +"T3T1_de_test_language.py::test_switch_from_english[None]": "a208dae9f0bdd4818120ffb0ea38c7d635cabfa30c682703d6f202ba06bdb63d", +"T3T1_de_test_language.py::test_switch_from_english[True]": "a208dae9f0bdd4818120ffb0ea38c7d635cabfa30c682703d6f202ba06bdb63d", +"T3T1_de_test_language.py::test_switch_from_english_not_silent": "bd161d195bdf79d40b6b1270650042ad5b5c1864ea36cd47bc91c8d975857a7e", +"T3T1_de_test_language.py::test_switch_language": "f2a91409b6a92cc9d12f36702e729624a449edd4f4c8cf640fa1e55b290c15ac", +"T3T1_de_test_language.py::test_translations_renders_on_screen": "6c79de36a66e3ce5a00e40b55177696687dcb9826815016b55c0cef89aaefecc", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "80fca3e714162b62d2caf6e4598db89ea5586734cd772f84deecc5a559e2298e", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "b1b04045b59bba1fd121c4f5da1619dcdad9c329dd5c6ef00c7e594c17c37641", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "7420011b609fdcbc9a9eb03a0551cbd9cda0df7f30901f1fc6d405cc9711475f", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "79fa1a43fe800b6dd858ba363f341f096c0a9d85a5fce9afc02d96c88f5e43c4", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "95bb1f302257a635151759a705e3465ce70713d53d269ebfc3dee28d2f4338da", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "47f02b3bab692c055cf5f32de31f7ef7de9d69aa9ca976bcab4088d6bece36f5", +"T3T1_de_test_msg_applysettings.py::test_label_too_long": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_msg_applysettings.py::test_safety_checks": "dd20c90d5630e9422db7eef33c45372c6391e7b9e45a1c852bc71c327952b1f6", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "6c4290e1ddaf619a7dee19daec4898ee161fbab7ed6de84db717e087cbe6e424", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4b3000d092e04afd52c77f954c9fcbb4700082984b2c0a8a4015bbc7d89d8ea3", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "bd30dcdf8810046500a1b9aa44684efdaedef7d1a818573d9ab9803c3374254f", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4ce7835304f0eda292faecd3c6287544bc72ed752e32731d1794d8e8f6512b33", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "7622aefbd77df8452b1bb88fbcfc08a2b6209c955d38f2784e2376874b2daa8e", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "2fe2798b72190312d3daaec08084ea0c847ada3f259ec9d08966efe48eecb681", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ebeb917b2f284de9d0186ac27c96cee711d269d22d5cd4bb40bbf762049f4b72", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "2694879a33e782796407e84e395f3c6aee3862fba15ee81b579d1bad53d1d273", +"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "403f991e3d8897307ff50cd369327a95e139dd62207d416515320b999526bc44", +"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "daf89ad0f2da3d74dd7619fb29502770dcabd2fe34e8f2dc3c356dcbe57dfdad", +"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "39736913a24c98329d9bbd61a9c488aef91fa8a3d68b89940fafe47ff30d156c", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "a72be2f83571fa2242916bf4acf1595c38c7cb13d757e489549822fffd4d87e2", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5cd6d996f06cee41ebd98b845c2a49b521a0c7e58db9c018ac049d26f8fe0201", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4872d6f62f77ba98e9b0d7c3ed1ea3c54eb4306516f99db2c3625961e1166d6f", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "15e64d08fd11a98226577ee13f2c3c30902b1e92640f2fa3163e7b65cb9fd7eb", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "1d7d9efc1d354b58e497c692138f3a4e07b402c1a6850bf55e302f38175718cd", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "5c6e0cfd449f827f567c1b2221de47143a1b2ae461875524a473204cb012bfb1", +"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "775b5519ed232cbd4b34336ad7dc343ec901a0fd78e8fcd93a8dd2986165f4b5", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "e67fa370374ceff3c48b57a44370850037465302354647fc1ff6598f86f5f0cc", +"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "4e08236c01ef1451f3e6c49d0b5d36ab016c9300faf5d93a15a9108cb2d09a66", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "1c168301c70fc0925b248366183e9bd02e89e0050797f5a78470414a0e6e2eaf", +"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "59697d016ba4408b55f1ac9371d114d59d9bb088b4eeee02de375b44726228cf", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "c7da841b644b4dbd43d61c413c27c78fe8f0865a6c44aacca76d64143792f75a", +"T3T1_de_test_msg_ping.py::test_ping": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "29cba18b471af22a5590892f8c79bfdaaa162f4a0ec0c78578fb3713265150e2", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "c8e40ab20bb99ba731eb8d634cd7eef5100fc05eaf68878e15faa8a9b2975487", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "cebbe100765d54bdf826ac3bbe8dd56d8edbd41f6a55763d6a8710a70743d7c0", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "4b71fc476cf42443d282564534ae15e3b44250db7ad09d8d930520ea215a5704", +"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "8e65d9e35441a2a3d8e3d8b2ad3e1654101f507f85405b5e51ee4b4bbcde9b62", +"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "35076ab12a43e7df06a0bd98bfaa585d1f8191161bbb6a70e024012f9b4f9829", +"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "35076ab12a43e7df06a0bd98bfaa585d1f8191161bbb6a70e024012f9b4f9829", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", +"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", +"T3T1_de_test_pin.py::test_correct_pin": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "42bc178ebb921c20907da6687b512d1948899b3279fc078c273aa25eb1445d30", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "35c0acaae2dce44e5f638545b413a3e5457216ef2a161c8c6298e7b7bfdf7209", +"T3T1_de_test_pin.py::test_no_protection": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_protection_levels.py::test_apply_settings": "feafaa1ca7f1d22f97d7863eafc79c84dcb7b4688c9d76d8c2c074d0499d48f5", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "382fc3c77dcf00877b386339d4e70d59bb14886f143f8cf652da4fd743778994", +"T3T1_de_test_protection_levels.py::test_get_address": "f7bdf9ac5b52fa791f2fb4ca094057d6495b65853d903d46a343e6bcf7410069", +"T3T1_de_test_protection_levels.py::test_get_entropy": "9c9f7a2ab4eeaf9677d78751d57e19981a1df899872d9f86f1a36d067c3f9c5d", +"T3T1_de_test_protection_levels.py::test_get_public_key": "f7bdf9ac5b52fa791f2fb4ca094057d6495b65853d903d46a343e6bcf7410069", +"T3T1_de_test_protection_levels.py::test_initialize": "2d1040b043c272cf48d56e29a56da6674b9cfb39e0587e238933402b8dbe670d", +"T3T1_de_test_protection_levels.py::test_passphrase_cached": "0396b00c2e34a8012d1d9c6ccabc6ba40fd5a2d0ef2edab962207cffbe8e41c3", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "d59de1179a135f726c601480eb9d7b7953b433da3a0db9aa0650b2590b27e651", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "01ee9fc575e95899351f5d6ddeda6d36e5fe4be44f31fe9e92df26bacf0ab226", +"T3T1_de_test_protection_levels.py::test_ping": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", +"T3T1_de_test_protection_levels.py::test_sign_message": "b05709334e5f903ca1175fc5f1c1d23080dcac38e5f9a4007371b9e9b934ac51", +"T3T1_de_test_protection_levels.py::test_signtx": "b101b9fcb7d019b6eec9ae4c698bf574fc966a6e1e84be24edfa54c45d4d345e", +"T3T1_de_test_protection_levels.py::test_unlocked": "64011d4e3bc84b5c02f62e2d3152c335247346f5e435c0f721b4144d9dd7165e", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "c20b035c9f2450a668a79adc18480c290e986ca645d1f71107d257abadce5731", +"T3T1_de_test_protection_levels.py::test_wipe_device": "34029ef417717f458064fb4d461c4daffa32275b9d65c3eb895cf9c46101ea67", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "8d496dd3389f28c8b919ca8a2433b086445e601aa1bb68f18a885361a09a0e3e", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "f583ab4ce0e94613965a480a074679ddffb69ab79035f157a777fafee8c6aa11", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "7ae8a6310fe1829968ea5eacf157908af5fe12f7019ef1e6889d20578757d6d8", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "0296e9f12d451924a974c6af8d795cf276195193a61ebd34343aba9935bc2ec0", +"T3T1_de_test_sdcard.py::test_sd_format": "87fca14832eaba934ac4b811e69e7f373c9c6cf02b4118adb85e2e783d0ce053", +"T3T1_de_test_sdcard.py::test_sd_no_format": "abdcff28d21d3c15d835c5ea2df1b5359785cf3013b441783b6cd7be4dd67016", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "9b6a729df60f6bf847d56dcdc2da51ea34583d51d468fccac59a2f56671766ae", +"T3T1_de_test_session.py::test_cannot_resume_ended_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_session.py::test_clear_session": "358d5eaab139f824ed71c0fa6ce68176bed3dc22207fcbfd71a63dc3f5bc13cd", +"T3T1_de_test_session.py::test_derive_cardano_empty_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_session.py::test_derive_cardano_running_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_session.py::test_end_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_session.py::test_end_session_only_current": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_session.py::test_session_recycling": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", +"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "d320251d3d56228376baeaa48b97efad7bbaa5c2f50d8942c54bbd0584b4a58d", +"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "712d435e431dac8fa942e51cec860b0f5ff8ad1b9544bff39f37d93ee3b7c84d", +"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5d63356b1e397331fa99759bdd8c9efca9d215f5ac6e8d6987deb521f3b62e7f", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "f9a677734bc3f39da6c0fe624fd8b72aa3d8b51b0bc2e7e4da6f5bc2b691c608", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "4c5ed4cf3c42b04e4617ea6a67de402dc44775999f1909b8744e5dd0a4820f7f", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "8698b39ceaa47b0a911640497d1bdb5fb29efd6c779d1f711d2eb01e9b80a7b9", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "0396b00c2e34a8012d1d9c6ccabc6ba40fd5a2d0ef2edab962207cffbe8e41c3", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "00f26a228fecbcade38f24b5ea666ca9d399e3ba7899f4d09295e6fd7948ad29", +"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "381c2e9cbc1c68ef5511f8c0921715ddfc3579556156e07725fc20f5de700560", +"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "4cb32697dd27c9b3355699ac03f132b1f180e3d0861b93c503c2fc53d440b8ce", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "1edfaeb5218c0eb1c3d42f9b0e346dc327a59ae5a152a86c08a8bd0cb38b53b3", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4a8e05aadc193444fb9b7a9f7fc7a9bd93e571cee80fca7f2febaaf712cccebc", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "4b2168e2ff7df62f8f097c30c12463dae295594df816dd3fa7ff392b3e8ccf0d", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "6d98169dc84cce8ae59b580da42c30617da4548cc8f90b300da402dbcb244d5c", +"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "28ab89a7bb7e91fb4bbc58b0c041f3994eed32e2b9314176209aae852a1c0f4d", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "faeece7285f4a3478eb0a0754ed711e72aaddcf1affd662a6395d6c2ef41cb66", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "13fa24f759d29453795c8501fe074d89d01caae9eb3ed4b410f9c84fa7378a79", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "5ebbf8b65cc2a66b04e566624249a83cc65673afdc7bff2e61ee46f47fa3f2b8", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "d57014341b94a7ea8132822e25da8845767f0f99d3b72a92b287c872271c067a", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "beaadebb11bdd98d2cec1715d1581e73813cf2320ab7e0663603da55f43a940a", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "7f8c8eddbf9f8530f209f8c3768ac0a6c28bb9c5cf149509ec4c5265a980a44a", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "e42997b3c1175f0341e370724f6f851e24d0b2dfab99c9edc53c66defd70711a", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "8035a10993761644462f28a78fa14fe21a1d69224baf199236bd3fa95a180389", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "0385d2407b05c98f3aa3c44562e1c7f414b989f8ed83a7bd95150b71c7d5ecc6", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "a43cd2601cb384b8311e3d83908a2c3a1d56ac9450bd0c9109e9cbe044120a66", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "6611a0372d3d0b16a0d3e6224a1d6505575e5c408338d0503ed44337af9258e2", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e2e0e391cd4343e31940301be4ca3b70a4b3548388f286d9246380abeff305a3", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "a7fcd2614f9200eb2fb804f21f81541d0361e589e4aad3445fac98ce84c3f017", +"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "f761c2fc5414c2f81badd788543518d57954fc67fddb250628fbc8f21989bcd7", +"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "27d7686351e84b6df02378c34ee869b66d09adf16020d4cd65b053da802fa90b", +"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "e8ac58a337f725c491b9481028f72cfe19910d0503dff09654fc34e97b0207b8", +"T3T1_de_zcash-test_sign_tx.py::test_one_two": "c8623ecaeb9bb4e2a4b87d29e13d8ed8e5707699a36b2a1232304ac44cbd9db6", +"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", +"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "784500ab784bd8736023c1c78825abafedb4356bd5de78e5d610e31f4ae1e5c2", +"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "a963cd0378141291b1dd71a2446416024659f911b4ecc9b654d6e050d6aa8554", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "65784003d9609ff8f16da8133b8fd5275de623a2daccab07c968563f55be57b3", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "bed6dfee1041fd7cdd7a1a2947065182dc7a36b4575e3d572c48b18c7b210ab8", +"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "73c94ac41dce524c9a6b9f4d4a60d1e915779e521a90087443615dd8af8df0c8", +"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8074dd1e78d9b7778f397b01296e4e4645a779adbaa2fe0026c4561f326b4e0b", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b2177b2d49ad8968f443ae7c3eb40a61c5a79f359fcab22f394ed033e94d07ca", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "7e24bb06236bbbcce98425b0bcc8fb1f7b5288022f7b1507683900dddf6b6178", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "bc4e82b041c7e1f1d4fb890ceda6ca3e2224b32d15c092864ee0a11a22ac3f2d", -"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "32b22f47f8d29107b841fcbd0b36095b6a3d1bebb643b8cfaad7dac8cef72ce5", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "2e1f9259ccc516a2f355626f17a21aa7e352f34d2a88cd6fa6e752db31ad03a7", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e670c8ec334dfd1608c7a68a4a5fa0d5c00a014ca6dee589cb62527159cc6986", +"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "48a9d3b5a889b2f3bb10585b3a8babd8bb40c52aeb1aba7d0571bbc40ada265d", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "380ac53675e261dcbb4d68aa378bde7be830d926326d1aba14c1e0324b9ef306", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "24c96654c356fd64c7b84df817a4ffe031566a985efa1a0c84d517052235aa00", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1fa1e818ad800bb128893b099fb1488679ff5223ec1dfd1cfdd553172603b9f6", @@ -18538,66 +18568,66 @@ "T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "2c916a8385b9c6f1b1eb984167d84e8ff4d7042fa087bd14cab9602680fbf3aa", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "bb3242dd5e5c5ee611ff5ca41d9fdacdb8efaa3807d8401935fe4b7305f07d88", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "baa9af35d53edc4ef279e242c55812b79ab3fdd2312760f8dd70ddbcdca69605", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "4e01092b36daad44a655dba4f05c554c1346b6bd7f535ea0424f2a8146155890", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "5d4655eb3e76da62c98609c2b2d94ad5bf85c28cf5f495bc3d02a948ddd5c9cd", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "5e10acb5f7c226183bc2fa8b277a3051926412e9b48a9962ebb6dbf8c0e40837", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "65be9007c15d1339d8060e09cee66ccb7fc934e58abe8bafff74aab87848b794", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "fb2844c11845f84b7df2122b339af8b774b0a0aa939aeb3fd084f10562aff709", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "6568f96fd2dea91262577cc89f8911c68ad7b0d84ff470fccb6563fd1f943f1a", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "3f4f0e60fa2f1143840deee0a771c507d1e34e6e9ddf5d7060236415177da55b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "717057035c1b206da3feca39f35ae3537e499883534b47e23788d26e244aa0a0", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "8b191a4049315b773fa5eabb66c7f4aa3141891601fdfed4064b856b3504e00b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "dce8c1894fd0cd0ca69de280dc4368c4836664980150f0b3c2105ca7fedd6b97", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "1f33128b6dcdf3dcd0776c7a79a9a504028d3c74567594a5f616d7182d95a759", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "c26b57db75b9a12d2646965b18a6b103d25854ded934a9840d101a1674b1f1c0", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "20f3f0749ee233630908636163d358a417953f4a6e0008e7d6ed9dc3b4df5321", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "39f0c969fa6c464695d05882fc26fd2cd2c1ad3deab306ee4772062708477aea", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "c3f2ca91e97b2e327a4a1292abdde4c954c314f24f72ed4749617bfdb56d9c20", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "f8b788947bd687c78a1c752dfa71a5dcd5d6d630f081f52fd65f656fc9f81cf6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "4316d2cd1a99c16735e394ee24dae57bd88bce72b24a70750218688fa3996e12", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "00a4a0d2ace1f9cc48dd12830fde001d2f51654976cef1b33fbc3d19f0da61ce", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "4e01092b36daad44a655dba4f05c554c1346b6bd7f535ea0424f2a8146155890", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "5d4655eb3e76da62c98609c2b2d94ad5bf85c28cf5f495bc3d02a948ddd5c9cd", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "5e10acb5f7c226183bc2fa8b277a3051926412e9b48a9962ebb6dbf8c0e40837", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "65be9007c15d1339d8060e09cee66ccb7fc934e58abe8bafff74aab87848b794", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "fb2844c11845f84b7df2122b339af8b774b0a0aa939aeb3fd084f10562aff709", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "6568f96fd2dea91262577cc89f8911c68ad7b0d84ff470fccb6563fd1f943f1a", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "3f4f0e60fa2f1143840deee0a771c507d1e34e6e9ddf5d7060236415177da55b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "717057035c1b206da3feca39f35ae3537e499883534b47e23788d26e244aa0a0", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "8b191a4049315b773fa5eabb66c7f4aa3141891601fdfed4064b856b3504e00b", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "dce8c1894fd0cd0ca69de280dc4368c4836664980150f0b3c2105ca7fedd6b97", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "1f33128b6dcdf3dcd0776c7a79a9a504028d3c74567594a5f616d7182d95a759", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "c26b57db75b9a12d2646965b18a6b103d25854ded934a9840d101a1674b1f1c0", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "20f3f0749ee233630908636163d358a417953f4a6e0008e7d6ed9dc3b4df5321", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "39f0c969fa6c464695d05882fc26fd2cd2c1ad3deab306ee4772062708477aea", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "c3f2ca91e97b2e327a4a1292abdde4c954c314f24f72ed4749617bfdb56d9c20", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "f8b788947bd687c78a1c752dfa71a5dcd5d6d630f081f52fd65f656fc9f81cf6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "4316d2cd1a99c16735e394ee24dae57bd88bce72b24a70750218688fa3996e12", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "00a4a0d2ace1f9cc48dd12830fde001d2f51654976cef1b33fbc3d19f0da61ce", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "02e975298825100092d819a042cbfeab4c6faa83ec70b35ee36c70641d05e8f5", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cd593f52ee44dada69a6b7c7b306caa36e2af819f37d9039da20479cfe087cda", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8c326e17925f93bd47057aadb35300a6211ec67d201fd38aa9e125fe2b9fdb1", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "444b4e5938c28e6b4bb22c332689883ba43de49b7a0de5f6fa0f556ca9cfd194", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "b77a71c6bdfc4108daefcdbd39a83f60e538e13b77b01adb80f7c9d564437e24", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "6797539492e6d4c96a6fde1522e4ac126677ae519ff35f454e3148af9acfcf92", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "62f203f57b4f307a14e9de09c6b110b3dd9622e01e94c5bd6a95ee1db85bb8cf", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "88889785a3da8cfe28359adb439d09e347c7517c7c3247829415d7a18d216e84", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "cb689af93f1ecd35f6c6137bb3850ca6ab89840cd810ff7dfe3a14ed38a8a6b7", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "570a086221249513078f4ca24bf59f8109341a863c9ad4719f95278947879372", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "29788af63b7b22e09c0a686fbf72b0e2580e7ec79df2236e04372a70caa30ce3", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "db4d0bb92c2cdb3a9a8417bfb39d3073e5cfe6a8468d887c483e698379cde73e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "fbdcba66e02c1a1558eb5483541003791b2676855edc365acc2b183046e4af79", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "39475e23baa5378e4f12b1941845db1fe205b4c7c02c071d28736054c2bcb178", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "39f6d92a1510f675dfa6bdb5670bac3a63e26ceb32b4000181c3aa946026c9c6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "3bdd231d4b8be681d228bad0e3c79df81fd4d313da79a60c20153c7f63e40afe", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "02e975298825100092d819a042cbfeab4c6faa83ec70b35ee36c70641d05e8f5", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cd593f52ee44dada69a6b7c7b306caa36e2af819f37d9039da20479cfe087cda", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e8c326e17925f93bd47057aadb35300a6211ec67d201fd38aa9e125fe2b9fdb1", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "444b4e5938c28e6b4bb22c332689883ba43de49b7a0de5f6fa0f556ca9cfd194", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "b77a71c6bdfc4108daefcdbd39a83f60e538e13b77b01adb80f7c9d564437e24", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "6797539492e6d4c96a6fde1522e4ac126677ae519ff35f454e3148af9acfcf92", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "62f203f57b4f307a14e9de09c6b110b3dd9622e01e94c5bd6a95ee1db85bb8cf", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "88889785a3da8cfe28359adb439d09e347c7517c7c3247829415d7a18d216e84", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "cb689af93f1ecd35f6c6137bb3850ca6ab89840cd810ff7dfe3a14ed38a8a6b7", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "570a086221249513078f4ca24bf59f8109341a863c9ad4719f95278947879372", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "29788af63b7b22e09c0a686fbf72b0e2580e7ec79df2236e04372a70caa30ce3", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "db4d0bb92c2cdb3a9a8417bfb39d3073e5cfe6a8468d887c483e698379cde73e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "fbdcba66e02c1a1558eb5483541003791b2676855edc365acc2b183046e4af79", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "39475e23baa5378e4f12b1941845db1fe205b4c7c02c071d28736054c2bcb178", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "39f6d92a1510f675dfa6bdb5670bac3a63e26ceb32b4000181c3aa946026c9c6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "3bdd231d4b8be681d228bad0e3c79df81fd4d313da79a60c20153c7f63e40afe", "T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "e6cdcb76dc77e9e73759c523d38283db2938028cf53d6e8ce7cd892a6c1bcf56", "T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "544d03882451929ba6e33303dd7d4e9f5e62d90f8f1cae35a2f2ddb142d39a01", "T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_bch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "24ed244b0bb6ac9a5175d629b9a65d8431ed84c3bfc0bd46d75e20a7a824465b", +"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "19728d270879ff4508201ce7fbcf42f3a127290f2081c6633c46ee2c3b1bde0c", "T3T1_en_bitcoin-test_getaddress.py::test_btc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_crw": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_elements": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_grs": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_ltc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "fa0b96a3766a5890febf174de4619ba317d95a18ac50c1042dc1e2928ccd5221", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "caa48b7a0394e559051fc6d15701f985cac0991ee5bf81ed91fa3442849b7e53", "T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "21710c3e6e9c5fcf06a5ca318446add812e0167e82b1813c2f9e68a9a1d27832", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "1923b930049eb8e26b3ada5db79f7a2eb79d963d700762641c9f6e7c46be0e4f", "T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "b41ff60e2b81a760b8c4ba0527da5cd507e56c38afcaaee3a55ece4c79340c6a", +"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "807424f508c8a0a24e65ce46121b760dbf01a508e091c52e0bab6af5e7bb930c", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "4fc76d9dee68702bde32ce5b0e78dfb145764ec6e30bf2b3325a0683fd71dd3c", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "95ec6156022dc34e898e30e67b8e5a1821d8fba019281a00f88d09f24ea8e062", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "ed9d78b68efdc4dbde185d6f3ca4ec1233e884fb862f26aa4862fc4ca9c97268", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -18634,26 +18664,26 @@ "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "c46c807631c51826c0fed3f47e473224af0151ca6b5d0aa741fb3f5e12ccfcc6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "d7b31761213e1d352b177361f086d073d2389099a2b3d4ff68d4f8a3157318be", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "55b932e700a2e07272715ac50e65dd0835da04899d601a2ca5092a084e296511", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "2ac3c07171d086d5bf7933a4efe5bef1e412bb4902b18b35e7aac37fb82fb86e", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "cd1a521b90ba07cbd821614d3f280d20e54e9f40d7aac461f56f1c2c5117ea98", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "331a4a5a2e6c18c0e6296810fdadf387c779977ac134d74f9fcc5f385d786dd6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "34600c097094def50a8c058ed5d732efe4810a041b63cdb7d2ae963f3c56d951", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "a92f52b879299d79c792e38252d1b0657a11289e7967926854aec180e54a6bae", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "a92f52b879299d79c792e38252d1b0657a11289e7967926854aec180e54a6bae", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "911cb22c8dc65fe59a12c3b7869339def110fca4836ab1fa4e89acb06113268d", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "0410a6a58b29167cfdc560b555e0191763d3ab26177f3e29146e10609e113821", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "8a2db16e2a67ab9999606905d4cc376f2616b3d61d2ce241a2c47275addcd2ec", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "5b3739958d8aba431584574af22570dc8a3a013e2b92b963348fc2f1e5e93c00", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "6e60120ce4f4fd7cc43b2c694603b072301997ffd7d278a7554d60b3a0ecbfe6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "6eead873937c0ecc682f2e74ffaec5ebb6cb142680d95ce8d9c7957923ba105f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "7b28b93ed52de4c9f8910a7e3ace9d9ebea9fe8ca23ab22e01d98dd0b63f0a88", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ca6246da1fed9903168b1d4c1190388943f92d065df791854629f71426a5447f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "8f27e96559089113b2f44f7fbb2dfbb3ead5267002f22f6cc985d59dd1215117", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "deeb364d24295e8e40442f6c3094b61145c8f76e90a058962a1165224c3c135d", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "de69cf0e27a16329396b5d6184b7484e4c5c76c843cb6aa2d97ae19ff2ad6709", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "923db33457a24627f0475cd41a22ad15c98916b17588c612251c3e126f1cef2b", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "612fcb0e254538c34abf81caa03e34a9cc25e5c2725bb22adbe04263288bf635", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "eadedc81fd2cef2a4fe7042f0fc8d5d23c6356b269127e1781b0ce9e30a749e1", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "bf759fb91724441675a2d17b57451886b175dd2225ddfb8fce716a211fcaa428", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "b7e950965fa0955d618935ab5042a7f22d61367a851f0f11d3b213c39f3fb026", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "a9664f9921f14bbcfe7a753f50966381612bf503c79076b4d329c9d4a5cea4d7", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6829954e38bcd9c8c903e6066d390b405f7b77687741707253cbe1b82638baa0", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f6c7d01ff2acd5062f178bb07999d2e0cdbb2b8b5688cd822ac9d9ddd7b3f4a2", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f6c7d01ff2acd5062f178bb07999d2e0cdbb2b8b5688cd822ac9d9ddd7b3f4a2", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "3d3199981728e42d9ed84ec25fe37964527a90358e7180e4a19fa2ca0ca60bf8", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a74813c83b3a2236233864b071372913424ff28b3592f76d3826e4f4b6dc38ab", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "66ce57fa53783e79f939181795641f8608e2903f67c3306cf8a387972e7f3541", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fe3da25d69c00375edfe8c0287e3f3e81848c9f178e7fd94651d7bf5d91753bd", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "67ab0ec229f4cf683e5f48307120da33d93b4cb29ad857b85108ebcb804333a0", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "917580e9871a9c10c1c0e93a2029b1ce3ac4d72eb46ab44b0f19b2443770fb3d", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "9cbe90661fbdd8974280e418ce5f942b6033ab50c1d251cc7cce7158e5503061", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "768accaf8a52b39ddc2359f73c85a6819ee82ee948b29c56a2131e0f8e704a2f", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "366097efaf3f05204134d45117a99f23a3429ba9afa81efe012e15ecef603ece", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "2881e11a7a2782ecc2885b7f163e95b34fd14097135948fed9ace75d297659aa", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6fe3600465850fc2d1480ef583a8666e0c5fef1057040245cd49dab16712c6cd", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "675b3a98a2d4db16b49aa976abf92b3f79d891a9b99423b87cdccf02a07267ed", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "94784562ef1c4fd318cc627273db05ea3cc9764c8ed1b6b602997202770ff52b", @@ -18674,17 +18704,17 @@ "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "5d4655eb3e76da62c98609c2b2d94ad5bf85c28cf5f495bc3d02a948ddd5c9cd", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "f82fb59eadd08e323c3de99fed5b3365466a9f4dd26eb67e1b060bf1e65c344b", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "a13ce97b08705dfe0578344d53e5a236c1f47fdbaf5e3133058e2749502580b5", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ba4a656fe822a6d08303cf33d10c2c02a4efb9466db92d432765fa63cfd451e8", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "06784bb727ad684ad15c08a2b8fbef1a83051facf2d8c75bd424d5b7b7130d04", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "78d4a4ae3a904ece054371bbc7c33728c82f18e87577cfa750a958ab215df544", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "5c618a97481abbb0733f8dc18d207d394e78fbe02058c83ed512252d1314e37e", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a351d85b5f9d420dc4deca9da01da5d490bf93eadfd33758d3af4a7edd7136f1", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "0d29a311fdeea570286d477857dfe33a5c068e9f5347e1d69ee260a6d710f37d", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "1f33128b6dcdf3dcd0776c7a79a9a504028d3c74567594a5f616d7182d95a759", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2a5c0139113d05aece28df5d462acad233c1a176b2b7221905ca22f67b55874c", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e64163dc3db37fbff51a04a53610f9ae40d85e633c7996e2d0337c7e6a8b1744", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "5b287974d374fd40a672a06ce0054e71efbe3ec2d6102caf601a5d4dd49800fd", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "08d9a4c837cd74997a69d26300f4dc0491c0f93f233506076ec94875eddcc17e", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "2c087cc8d64a98d45b2128820fdf1b9e3edc396a1b9ea87ea03c9fd427f989fc", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "a81f1449ea7105a6af4e37a695397fdf9b8a1ae98a35b3690bb298559c63ee33", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "df88c15c6acc3cbd502a882c28d6a904044429d0ce58164147c097651861a43a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "e7bac7207e4dccabc27386fb6ab17a052beeb986a9bc6adc793d11144c969d07", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "1bd13e67226c779b7253ea71e03013048e03ead8bf77e43f276b22f853b79f7a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "05261c0c0068feea56a8e8f1b0d2f2fa0d3724041f2138f9bc6927633ae7e2f6", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -18715,57 +18745,57 @@ "T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "906346e37601d8947e1926f952151006c208dcf7d969b0db53a4a7539e002342", "T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "6ce1fec4a45cb077a7cc73988b730e30d5faed4a86d0c6a0c7688513544cd20b", "T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "7549e8bd8d5fcbaf6b7b697656e162489c569b9e00c13f758c57220d3c04efa4", -"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "ada0aef3bc87275bde61131b6435e700da9646811f0358199ffceb251b6d1a14", +"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "d87ea24ecd8d70b233c447fb8dfb8e641c112dc4032753f81194d7c77a816dcf", "T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", "T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "53d0f45456f7e0dd9e4fb980d1795e6fcb02d231579ec10334270eefc3394571", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "601506cd9aa1f629e2b4540c7287762450a637b2f401f8e62c1136283261c237", -"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "24aadccd63cb5d5dba1c5c095a32d857a8cf525aad85825b255d3e599481b571", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "4da910dbcb5a971954adea79c18ad9579f760d4bed94245dbc17432ffc1b0e39", +"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "d2a511e88c8b6fc540348de3ad937c6d0a6adccc7e3960db60bce9a9612e4955", "T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "d45f9d2a879ae16fef4581624bb674ced428e3cc553d2ab556f3b2932d9b8f84", "T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "79fc5451adef33f6e1c40f4dc47cb59006687b0f2e1628fa1eefedd19edd1e42", "T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "c5f53e6b9fc7fbc051be9e362821811a15597c51d8f10d8eb305bf52179a104e", "T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "862064ac649a9722acb30f5c08b1bf706d9841c14362f181e092f7309b849b82", "T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "ba2724207c12a26d15ca190e6def281473704391850d674e4165bbc4bfaf8fee", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "ab775a7b70a39331ee169aaed1209ae571788225bd57c5abcd8bb24a813d6010", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "685bda3f3d1a42841d8afadf548611a69dd4ecae0622e82f6b98abcfc6ea5299", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "9ba0e992c1e78124accab26211faeeb8257c808902cb3a45f900883f0f863567", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "a89409696176d22cbf002cfc6560f0439b982e7301ad3b5d2b5f8bf3e6d76b4b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "a095b0333c4c48e2efb2bf64a3f9d46f022bcf97e69fbac53776e863fc3a5254", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "55e1ee5c6872be4098e08cefed46d719db95d9ebba7c36b366c04b6d70a3402a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "98ff82d4f8959ffb8782ccb9ce6a6c2d31560885622eebfc0a0c3735bad98ffe", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "2b40d59738a385004183cd4886cdd20bb262729d9dfb107b8d10f1e70009f86e", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "dd2d40f9e0196ae6a67273376b16a5f42d0179eeb400f9381c17c63ecb320d4f", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "59ff2e44a8bfcb535f66d3216b92f992a4c987cc61d8364b75a8c35e9046d938", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "08532a1cd2ff9e5ab87fd2fbd138f548df7fda283f1d0518dcc78241d8644310", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "c8fc403bf1c33cd6841bf54643f6aa05227adec49c64733b80dd2455146ea828", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "75012f06b4a05fd166209375933707a950169c13d7e1b1f6add28a4930c55025", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "ebc4c388887adf51b66160ef2355d60dc99024ce61677a016d5d241e58a94281", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "61defa42e7645b56ba0ac069ba3a4ea7f5355008a2b6fe8c51544cdceb737d5c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "bc70be19fd8a69fd6c2d2e07d38bacbdc6ddfd49807c7349678ef607c4d1afc3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2bc1c2163238b5cf1beaede18c79de05d68675569faac17501419c12066402d1", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "81f1bbd09638aabe1fb65a233e772a84b1efce4cec0c7cb614e5552fbdfbd19a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9fd4f3453bbc043013ac393169dec39386ce513c23f93289e3aa28472a97ea95", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "7be9043c5e5e3a76f8b14a26a8b365174c0b014fa8a3ddf1a60c2fd13cdeb722", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "90897197d52cc2ea1f515aa013be19b7aa27195f9c1db16e02a8774de216439d", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "f2d74fc63ec379a88d16476770917205ad4293c066edbaa8f0263d626b9f10f2", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "f42dba72d689ddd3113fe699a695343e0fe04dc8ffe5e04ffe05ab63f5aa81da", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0bbc9b59b3e36a6eea444f3ccb469b047eeb1db1b390c260a216a85980ab3d71", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "1f6706f0b9351b3e9992042938266d77a78684eb068ca6f733aa2c773701608e", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "df23fcbca6713c0d9227007c216163569c7064e9e3d04ddf257435e1b654677b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "db8f8e7878e12e4924e4576e938681b5b01ff11cddcd472dbe73881256af1431", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ae83e78096e6009e69ad48e4b708f05f62fb3becce8d63ca796428c96a8eee35", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "7ff8cfeb25dd698d199e51bbf39d146efc0c7be3b70295abffe7591bb240ae31", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9914b5cf8d3721e816b8177d0cbf708fede3afa9006b8db65a9db2c6a761d16c", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "f316620ab9c40a21f437a6b5a6337ece5cd81bd06d4c0de89f811278673abbab", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "e51a045dfd931e713a1e239714fec103ac06c11f4f8fe1e68f1f4b15bd1835b0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "3aa72289f99aa315910c793bfce318f40b3807cece0ce4a61fb8eb213e6ba6f7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "33369672efddcc29b520ec8c611e087e01bf7367370d1e08cb607947d0e71973", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "70e1e7c0fec86d49164368a64d2543edc1b2009879a2006a065ad29d74361dc6", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "c31694308b48eace0c10586780b41785d0004beb6ed9b92e27d8bad5be185aac", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "14ec4f0a7061dd47ee2593e575d7c4f70092fa135573c3ba1b031cc2bfccda49", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ac50a695448d3279181be1b62927b740ff4f3204f304eb832d9153575d6626b1", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "77d78a2bd257dc523c0384c9a5077ab8ad327da816f8b123355199191bfcbbb2", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "9fa9ff751c3479067e64b45abee14aa08931b63eee27935af46082ef6391c302", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6fced9354210d6520bb65a265b9055fee24642f2fb0053a668f0fe2fabec6f82", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a1e9c360d78f523799cf001292793dd88f595775fecad0f9418ea139f1b1db0b", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "402f84d0063ea81f133c303c21fe481f4fce6f641cfbda8cbab3c9a0f9f0d586", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "ff293df83d4d144a4b3f8f6e71cfe0c3f61b0c37660158f92284ea60259d9746", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "293ef10998d010987827ab8ff412e9e8a25d7f449b818954c1f4f00be878f341", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "9a2a524b62c5bc7cc2b908ba1785e27dfbd109929d27b3691d5a26fc30b63e83", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "e6ca20b675bf956f327a42c2afd4ce450c7fbe449d94bfa57fafe193acdee4f1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "17fc21661c88174eaa22b66ce1a66e88ddfcc5021bcfcb9db206b5c44836cc4b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d9a0030abd15dd24acbfc237266d7d50b54f3f38bf8c8d13c70d661978dea4a8", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "fbe0a61797f154564f2134eb1244b4e0295223102381b77fa621bb2238a4cf6c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "0a2bf188b4e19b9528116680bef93e3fd0dbbe3f48beb679a5e9c4a1967610b0", "T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", "T3T1_en_bitcoin-test_op_return.py::test_opreturn": "3469198031a3ffda9e078fc7fa656394d7076047788b912083ae9939e4df3c05", "T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", @@ -18798,7 +18828,7 @@ "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ef04598b2b77e91191c4a15ec6cfd1c802d1c44e447da3e3f6d62528d4800aa2", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "877a595df83229f254b52106fa2e25dbcb24e45875013943bf4cf091d8036e85", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c5da7dab822bde34e57ef6aec744c473b81b32eef3cb8b8876d02cfe43c7e1b7", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "0210fee2e6d92fc18c7657f20b32c683e361ca21136e103ef03cd5a347a3ab4b", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "41dc17b76f3c76cb36a9b427e621acaa570e0069e5270c16161587222f07b70a", "T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "3509e7d26bbd3e7583274b10e0ac48205ca388969fb9d2ef42a6034ed5f534e9", "T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "589ecb29383359ab82ef0e172f2100e1b97bb18dfb6867cf098fbd1c14188279", "T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "f1142e1128fa55eb1089e31841823dd048bac59d9ff6dcb1c7a6996e2042b43a", @@ -18809,9 +18839,9 @@ "T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx.py::test_information": "3b7bb2f928a333177990773f174eccdc4b49f2a23fc15770c3d333ac048ff820", -"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "b4c59c135bec1e6c1373a51410ea2dbeaf7870124deceb9a6a18f1174836769e", -"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "4adafa4e95193bf5fd1e466c15cb762f3a39025ffc847da30d4c2e2f851b6fdf", +"T3T1_en_bitcoin-test_signtx.py::test_information": "9ab93f8d4b572d4de5557a0e2c0ee06a800f73cc3f55ef97c243b71a8cafc86e", +"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "6aa402f9394bce9f0bee3d92c60663f0870ee2036bb446986f266266bd00e706", +"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "8c4bf876240bba3e3c9c72c00d0b0e50f57e83c34f73b9425b293628eeb746b6", "T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "ddc62fc79029bb0f155a56a244b62ff24157a05fc519ef96db584ca13bdb836e", "T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "ce890d82b51ed723cb0d0ba361869ae97b4498d15ada88b263c6f45582fe7bbd", "T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b45a12681d8ecdbe65b5cc2177585f9469afff079a467c4ac39f0a2cb6eac257", @@ -18868,8 +18898,8 @@ "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "925d4f873c05ed311c66de3c717fb4ec5045752751eec9032425d2880897b9e8", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "334475998ee143d7b05944e985246b6b62edf9fc817714b9a277fab151f05158", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "96ddf0c1b91e5e0fffa7efac88af24ebe9c4089c0c449cc7ad25aa8a67096094", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "b8e2c8a16ef01408b7e7fa033f5a4a04338b4c596512a026d28a2c73f89f538b", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "76f2a0dfc62de9aac2e74d1b14fdf1a83ea06efd7c03e93718aa5b43662eafec", "T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "8b175b41520ea4a30e6576f38978ef536dbe88e35bbe8a9a45f0e0ab564101ea", "T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "36db99bc3b1fc496ea9065383fc51b277eeb3d68eb5a0baa38953a0b823537c4", "T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "8b175b41520ea4a30e6576f38978ef536dbe88e35bbe8a9a45f0e0ab564101ea", @@ -18887,10 +18917,10 @@ "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "df1f8c315842233803ca30aec582a1127e1ec98429f95de75bde00c2faa86345", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "df1f8c315842233803ca30aec582a1127e1ec98429f95de75bde00c2faa86345", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "df1f8c315842233803ca30aec582a1127e1ec98429f95de75bde00c2faa86345", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "df1f8c315842233803ca30aec582a1127e1ec98429f95de75bde00c2faa86345", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "c5ef2e3dc5516571a5c179c84e5c66b1e4abe039b896141165cb322a235e9ea9", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "c5ef2e3dc5516571a5c179c84e5c66b1e4abe039b896141165cb322a235e9ea9", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "c5ef2e3dc5516571a5c179c84e5c66b1e4abe039b896141165cb322a235e9ea9", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c5ef2e3dc5516571a5c179c84e5c66b1e4abe039b896141165cb322a235e9ea9", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", @@ -18924,8 +18954,8 @@ "T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "a18fa7d7b907a04b635580e6949b3eaeddd1c301506c6df496838773ad1b07c3", "T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0d8ea1567eb3552ef0b695397b653b79fbf404d00299eb078fdfc4050897b077", "T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "aa7125b940adc096193a1bab8a9178a9f1c5e31b8269025f98a792c779dbb953", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "7a092535fad7453157d63339bdd0266df0f41c19190c928e1c8a5535393caf70", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "3ce641d2104f1c7816629ce1ceb9f16e2427f6d4818e95a4b98b7e471c002288", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "ddf847cdf231b4b14350527a48aacc8b60b214dc705d56a585a79572523aae8f", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "10a9a5df6475eea1c28dd331cb8f59603557eeda12f5c1a67f21f84a47955d98", "T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "3223679c003e04345dfc4ae0697fdc102dced51785d059aaaf1f6199ca228dc4", "T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "a54821f9ee53eb18de7356b2ab63afec5ba5da0a7456fa85db03b9c5975e48f3", "T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "7b06ae83ff2d7437c5b8b3b6fde61f5e7d0c235f5c0671069b48d2a05c5e230d", @@ -19040,26 +19070,26 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4514e54791b68e6e10243a9ac4d1ef78043405d4486d22566cd32ad87595577c", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "48594bde585a3fa8272f328957a70269b71215c3f7110529638b5421ce260cc6", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "79cc12af43f7b308494a03713ea1869a79b43076b136927a6c3a1193aa72ac2c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f105daf542a5a6ff287bad150900c24b45dc2ba74e5bb71af737c1c0c821ce55", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c91e5d223ed9405448c82dd436f002893bd6c7851c7db02cf23f169e15cde838", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "68bd17cd51311138a814b515c097b491ee1e9fa1b1c686820cfe4d6708312468", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "8b2cb56cba993a410bfb7793afff288d2e0177c0bcb82c66c9f6f193cda8276b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "64e323ee34a8ca44df3efbd40c6937c13ce341b7aed29361e7ae9b8962a3b520", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "18b4a137966508730a7220da1385c46a1c76ee8407b117a36463ce2c60d1bcfa", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "150d51c2d021fe0c1eda5a8066ce57f80d2ad2f4f30c335b675c80b5412f8be1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "82e9ba3ff3afb7a2e407e1a6a38bd91aebdcdce99fc6bbd5d4382d397fe6cce1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "6c1e157aa78bc7a904bc7cbad1142fe8260fdd50d61fac7b3c911aba13e994d7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "e2f8ba559f1bb0dec2e253db90c0e2f571eff7899775f34bc8299946cb77a6ae", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "73514274fea6ffc45dd28c4a77b33f9a911321c35c04ad25ac4b91a89499dee9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "8f2307a8cf4243d33ff6d71375082a88a95068b7208b2f5f37c0b8cca472d076", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "0eb000a11a1ab47ef91c93065aca39cdac8a431fe2e028db30e833644d6cf399", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "a5ef4b4e603983822f20679ae53c0d989964d26260423cbcd9f0f9c03e916045", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "2ee79471ef66fac18269763afb56afd38b65228a8b7e6079c4cd8983976f62e4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "802411732a8c8ba6b7454b866934271c594693f57ba0d1196cdc0f430b87a8a1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "5af2e5a5299ea034baaace06d4319e74b66c31090e293e3aa28e0073f2b8d7b5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fe4a1f9ef5cfa98b0c3ea87ed94119643a400b800913940ee4ebbf5c3efbc64b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "87c5b4ebe214190ee3dbf426cb587c96c6f9a14e5ab2494aafe4a58de7f3522f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "189aa13fd6a68dee774cee51099563bbe8bf5a72cab7c3d80c4f9311d624a9d8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "16f8ad1d33f5c12c29423e7d27a1b7d524b340eb60a845fd25aa95b73d0759b3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a68c0b1ad6c28eb77d70f890743b0e6c38d9cad3ce45d3e727a3816dda0d97ac", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "3b9cac6bf916622a444db6dd768acc0a2eeaae7def754d27192667ab7f6be230", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "dfd0beb3890b3cdc9609dc282b9d830882248da6ce509fcc572f878d5501dd94", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "f7573d849277e3609ccd326ef144e663f5d2d755fb5e757c8dc06325899e65ff", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "50860255766439d7f2aa2cd20716bf7cac68bd695c1f449a51ae66aea16effdf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "e1421e29d6fce2fec5437fbff83dbd6082797bca2ff96e7396b32a70e18836b7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "a4d1af4c7c67dc90bfda48c2dce25657580dcc8531e79e304002b8f81718b0d6", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "202f311c508813b2720e26653db8ad91e950c28670ba9471c93d2753ab9843a9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "d56e398d8462d13fb49f857c280100b45ff28714c6d1be560496d4853a1ff113", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "3e679a30b5693ed54ff4bd8df228475e7daa806a3126ae47afb2186847fc6efb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1f951b7e727ce459343bc32076056ddbedeb6c2e3994a415c0dd31fb92edf265", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "a71f54c819276b949c9eb6efdc4ecaafd2c4c7d0383109c674d23724e5116d3e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "232b04999420aaa61880f99f5e2752091969e9f23af14800d473b8e2c2290db2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "1882cdaf45c5da31ed7898987defc6b59d7ddcc4eb0fd74208a38504dade98eb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "a245368e3dd628a6dc7e5abfe3a758352429ff3cc78c6ad46391b746a3b1f847", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d5e690537b917952a8ce8fe185db64923e540ed0a7efcd402812e809e77bdc12", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c47e1c6a3aa552b29a24d719b2783d6846cea401f7bc03b76f14f592c48544a4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "098e44891f9bf08989e8a3cf5b3592348d37885b315a6231e7bb2649334710e0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "3b829989bedc10ce181e1b4560d89c4663f17417fde78a857e8f33fd03857703", "T3T1_en_cardano-test_derivations.py::test_bad_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19133,7 +19163,7 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "d9249234118add3c9a1f09a8ed5be658bfd0d6bf13064372ab6349b515ff1aa1", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "aec764fc7208bcd6e1fef6915da0c4cd0d7764f74b21c0d50320f70c6411c9fb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "0a1874db273aa00a7536417815cee3e387693610ec697a81d7fee0bb08bc7723", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "ffd7227038fa6a057f358a14e59ab7da3fd466888ce59e6e9342a9c2b5f886d0", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "94ed1f1085ed520edc4d2b08708cd40bc86f44a02564fc5de0526bf89acd5750", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "7fdb92d827ca5bccf6fcb4f6bef09fd9cc41b993da678291f78f062dd983f256", @@ -19154,7 +19184,7 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "c4e7c553c0d421dd75a257a21c6b2710fbb84dad2464e5fb8b0926fb5747c022", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "65105fdd83ce9d84e12aee91d74d2f78e83ab385aff144f52c7663e7c65bc5e5", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f05de5741f677227383bd448da9998bf472aecd855da263b6cc2ab700fd97a48", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "2979d5b2208fd7366a1ad8ba5e5c40a80cdde9b885be0293299205c3bea1c894", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "27866d76a29e538faa94c891bf9d0f3b3e8b5a0c3960e73cc3709893ee990f5e", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "b00a5788d94522c3f98ed33084d2e9a2de22e52ec84a5b1dbc17a203f75b36c4", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "bd0dfc1670bd6c23fc63fd2fcce5c76df61dee0031cd7e8ac106ee7d9bc950af", @@ -19168,7 +19198,7 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "7903c0eb3783a287c8210c987312cd786567c6578ef3b5391680584a8a0c4f34", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "f715edbcf6ab16ef24fbe684128da64792ffe05bfc04174636c3b669e473a345", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "f715edbcf6ab16ef24fbe684128da64792ffe05bfc04174636c3b669e473a345", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "537ce7ab7603089864efa41671d43a7bc23fecac656ea21a6324ac45285f27b7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "8589f70119f99ec8950560e1eb3a1689de0a389ee66026354dd6ccb2f6ad74a2", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "ff7bced4b08dde88d17554e1e7d3339ad6f24a434070e673c6d76f174ace7fcd", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0862e9c284ee9110a952bbe267b04c38935c7d24f1d8ddf8cb3194e347a18783", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f40f129a68889a10858d4a0396f25f0f3cc917339bbb342901813f352e45073a", @@ -19303,13 +19333,13 @@ "T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "8c4cd7dd886ab9935954fa64a9b751a31e1b63b6395fbe9e1fedb7482569b6c5", "T3T1_en_ethereum-test_definitions.py::test_external_token": "b1039a9596d1db31a3d8b8872ec5dd91a084e234476f570c97d2f1b43ef94797", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "d0851ad6c343c0f31574c880d8298661747f301d7073ad558e7c05d8d12bd181", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "c0c8b5dd8cff886ffe9ebc75d19a09f804aa8f01c408d6e5967d31fbb0367016", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "32377587568461781b03eb52fb1962875f4290afa65053f82d3f87ddd7d102b3", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "35773cfb908bcb5772dc0b98fd7536e21a0b4a0333f21d5797673318317ef18b", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "15cbf1068078e89ef18415f3b702086fc6948b4f611f802d14e5cc365d345c5d", "T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c9bc4529f6f26c43ec2db22393c88e76403d20138b25cf49b180e597b33fffe6", "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19337,26 +19367,26 @@ "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3211698822b0e24d936da3cffbcdcb9aeb64de0385cdb88e3c847484295bf236", "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3123b055aa438eb01dc5e563eb3102c02b9cd943c89e84e3f26eb8499af96538", "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "bf9e9f7ae2e03a3a37fab39930bb1dbc212bdfce9c5069ad0bccaffd66580e38", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8d7b51bcf2c0fbcc6dfb3693f44b0761eb0cffbb60b0fd454149fdef99678840", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "1236a1b3e746628acc40f4333f1412db4c61115530fd7c201b6269f2a4396825", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "41a8e4ed0de2c53d978c66a9d1736b4b18374231a7333396102727a354d5c4e1", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "58814ad3e21edc9c39e349bd7534ecec17d001b0124571f5032b51f498d2db0c", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "6b75fae5cccd1c6b0391a02331fef4ee93b4b5e91b4802d57d4f99131f3ae73c", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "5e6d6222f32100e2c1bd598715d21a84a9544f7f7c0e65475ef4942fc7ae24b6", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "adc7b473d28eb5ec15d4c198a571659b68d15b32b414c4f5e5c1b5f44d20660e", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "da3bcef666fae3f042525b5fa0d12d02b29c6cb75caf894a9edf75155fbd1e34", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "4e986a8e4a4e3e8aef5b128feccbf72ab94ba7b6582a78a902532b3d5aecda52", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6849b6d621a8a40b326f7eaefd4b08812aeaa50bce287edaa8732d4d806df8c5", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "86c90510563fa10f30d79dbfa82476861d88457afc277cec74d7ba17e4ff633f", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "2749581544edcec8e9e5af9d768e2e94e155adb66fa83ca241b11efaaf4a1de8", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", "T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "21e6bd4b17c90c7cea5c074a13adce9e8af24cdb89ed560e37cd98238e130138", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "230844e6d56f5d0f5842aa1af69ed2c24544b8e546fc4b38147d88f4b0efe96f", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "ca3df4b6341892ca46868291ead740c17f291ca8529d898c4ffcf399ac68babb", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "aedd3612d35d0de7520f8c933636897dedd50af41afa12217817cdfc316b1060", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "15f1a27164b9538c8c2060283592a5a7fb8b272e5f167a23c49eb236f708ad0d", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a4321324aea47886468e547220d28a8a0ce1135cf3c9c40e1f6fd75389e46ceb", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "ca3df4b6341892ca46868291ead740c17f291ca8529d898c4ffcf399ac68babb", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "ca3df4b6341892ca46868291ead740c17f291ca8529d898c4ffcf399ac68babb", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "ca3df4b6341892ca46868291ead740c17f291ca8529d898c4ffcf399ac68babb", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "1d8c8ffc842a77ec8c8273c073533510bcf47b5f99044750d8c35d6fba4562de", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "b523becf35d9f2b4e987df248d3b767bc4b3fe5aa256ba82ca38c34f1adc3595", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "3a1813d7d4bd989a1c9e24c7a65ef00f2223ae5ddbed28e857d82cf7ad9f8dce", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "6cc2826479317327327ac6a7627eed612ab6e8b38367a9bac6a48c0603e3154b", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "e71f70c2526bc454e76285293bcefcc3f03a219f68ac6012edbd6ea77a0c699a", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e92a5a8a8b6ac548debfa940c76e17c8d5d61cecb0797082d43e1e20cf061881", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "3a1813d7d4bd989a1c9e24c7a65ef00f2223ae5ddbed28e857d82cf7ad9f8dce", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "3a1813d7d4bd989a1c9e24c7a65ef00f2223ae5ddbed28e857d82cf7ad9f8dce", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "3a1813d7d4bd989a1c9e24c7a65ef00f2223ae5ddbed28e857d82cf7ad9f8dce", "T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "bb082dbc9ab9cf75cf8085c2acaa4adcd0e830e0fbfa2a88c8892167dd1a2f90", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "7d4d6846e7d7520347663fa986bb78611e7aed70514b646f071cc4ca5651007d", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "1a8a8910f7424dba8ce99e4dcbf672541ebd79dca5fa408402ccba50c6556e0f", @@ -19421,9 +19451,6 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1d61b04db603df4e178110b3e610b089438340ede699eef78d296b9bb687c79c", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b3305d1d9591df33379e792cb139ab97d5908942c70a01f60b906878392cea49", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "c1e93c991b0de375ad54ae6e4620faa561ebb334b7eeb8136379f9b47e35a0ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "9b995b6b5c16c46ae079e8227720d71b58705edb4c5167fe666c91c90c448ef9", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "63c38b214e565e33ab8d9e9bcb60f4ba3693b927734ddfe6c40c845640ccb0b9", -"T3T1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2f1793e987d2e666be02f3b475cc2febed54b158ee0f5f7759d5ceb1ec4c71a0", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "3532c74c7c483b3b77d6fe6fa15ad2c93a96e969010a50b877c92dda8322156b", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2326597421e4e79ace8b4f6f947a295fd4c67c93015ccec01e78fdb2d541fad2", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "5235f803ac4206eb08c00222cdd0996685002bc4b694184de30a2595e59b363f", @@ -19506,69 +19533,69 @@ "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "9eda676e014969fc2e1c668b0dc2267418901ab3cf3f8cf852542ef7768624b2", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a7bdd5a377308e54614ec031e561403a8a26ffa8b2bf63a579e32770bd962c26", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "43ed2247fc20c6b97e2fa6f830048b3ade80a5c71bb570ce915e7f52e940c304", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "5f0b37faafdec450d26a9f2ca49520355e4ec7174de0eac15e5da0d7e09deb57", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "801673aec103cf62b76e006c2bb2c1b6250f9c7307e422471771eb58446dd9ff", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "7527abe1a08fcaa4e8ae65dbab129ab77e00a834540d513f60b2a778dfe4270f", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "17efac836aa516bf859d9092f05e66a214062e798f1a3a6f6b95f45247562261", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "b7c5c7de5e76878a93a3f89123e706e0040bacec25ed5ffaaa300257737d513c", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "25da6e57e8e3d26daab5e5f1b978a89083b7e8fca4a6378c1daaa53b207e0364", "T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "c9a1b4bb0aba74b4e474ef4d576841c69a1fbefdb036c9c702badfa4ef6a2b41", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "3bd943a0084aac6373f7a2b19b124847d862133c33ab36c6604416c026808384", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "dbe8b390ef3df26abbf0e42b65b4854af03aac4edb444b5dbf84b2e288683967", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c840458d3d686df3239b155809680f7caa94a04cc49c8c3b14a85e9275c600fc", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d84f423497cfabc5d955704880a03c60f726568056035ee2766a42b3d5206bd8", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0eea282277dbb8bc444de123ee27279412de510b37305b9330e0074b79fd909e", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "89b6089b87035a6f085c73a6a0537c426f4678b08edad9506abeec014c9665a4", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "55b0e576ce00fa71ffc25a4b702a3bf799e030bffc73da3bf8d9d769d44ca6fe", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "7d770f32d63d1c8f51361fb09d87082bc607f3b1065e84596a92c3116083828c", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c3ee4e617437a2d65fad7b4ad82ee784e92d57de8d15b2d44d433b07573ccb93", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "751dff871075767ef09d22c5e6f288b77e018df87cf2e5632340742f6dfcd4cf", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9f17102072278e29ed740a36d91889b338ff5361b4af5ff72b207074799fb4be", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4b6466747081681285433a556663fe58248131e7f6dd18cd27f2e1bfcadaacd5", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "6982468c1ee7881ce87043efa1c11d4764e6e721db100f8719d231da80a43ef4", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "55ad57189c90a103a567228b6ad0bc5b4a3dfca86e1e808f0b3fa47f4701da55", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6e4b80addb41a936c81cc2d6420c128231efd33423c9c3b64ed649c002931e6c", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "08b038649175c311d1ecb0057fbb8c0c88295d9f62d4021bea1eb388a96ccbac", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "02231c404b1c9a10579bc5e92ae308bfae1a4cb8cf82ebef69457d603e529d35", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "b6ce70324490b29768bd92e290a1518afb4456efb74ba131fc8a168bff4f8518", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c3ee4e617437a2d65fad7b4ad82ee784e92d57de8d15b2d44d433b07573ccb93", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e6ddd186f20a53ac06b64686a1ee369c83edc87b9e1654e2871e13eeaa443497", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4682862a8be66f72eec7b2ee0a543a46c6d8b1dfbb3e5a1961d3eacd9a81b22b", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7aeeb68296287e889d7441aae3f1c1137168101f741e3c410ada57cfd34b44ec", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f391dd90e1a42f6525c78a0850f24b613943e8b30baa3bca7719208a1bc1a1f8", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ab91ccaefc9d74975c55fd3388896e097440ff9c4df59b9b5779eef29c7ad1c3", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d3fc1967d279bbccf1a23345dc167bd4013d287f9633f1a6afd84899070be5e6", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "104b49faa46a76f6682a00279c5b966f655753c7e38c3d4f3f265d2a2088905b", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ecfe11885916cde0e620e5252aea3f4787e5c55d840965df65f51c0c01a02168", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "545326be5303234fac178f38ba451f49b59787a3bba2da31d9c9077361edb37a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "ae681c38f416e6bd8b07c8c4a4fc661424b21780748c8de041ca9a30b6cd7081", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "558295f337fd1bd96257b66ec6dab6346fd3912f1df5cdd0915ec0b28e578c3d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c9109cafe2f4876cea98e4ada104e79a33224e831f3663aadae7abb56fc6624d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "0325cbf09e031732a19f2e6689f3fa204e7f1ac2fd128686cbe069924fd899ad", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f21d9a4ca554a6a7bf0f97b9a1b2170ee24bf3f50ed87aa233247ce89b46b069", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7b454d8940bd6e0664a5ca2d77f0353a810ab58fabd8709f5307de71d3a5bd65", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "840cb54e21e7b58a8c8ec95dce0a84310c0825d23fa1cd2bd4a21351062a96b9", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "0bb468ef177a51232521d055455b23addd4633eb6e7c6ad0e69a849a85ace1e3", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "96cad85ff024621d562f9a648305e526379f1a7312bda10614c8a35b31fe8f33", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "731f6f73eeb39ae166c25edb8b31af1da1b945f6efbf0459c23bf73fd8dc1723", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "3e2b020a8f303dc8863e3c6a54dad68cf05aee55ee59f9781a0afc0487f36e9a", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "571e2a1b9bde986a412179f0d4cc50d10d0a81dc96f8269a129ae95acc83a790", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "cd5df6131a524ec7b7889c6eddfe82de1a2d6bc6d7f4959e22ba8cc36eb83647", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3645a1348fa77f3808688867573390544572a779ac49f3febe569a210e7122dc", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "978962c123d65befd8a51bb7df52979cd204cffd177fb2efe2b45ce7c5d46ae7", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "35f17c668de22b3bcb60065b52782629890cc8e45f09309cc92ee4c64bc1e50e", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3e8e15e8b192ca5d0b2e39cb686b324096a40ca945d603dca8b8557ba4d9a6cf", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "4a087aa77252eadf208ea9cdc30e1bf47cbf37dc1ec105d1c24580f70b621613", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "113f96b3d95c0e68b9feefd4a1438f751221d8dd7985edbe21d41f2036f46388", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8c5a6810227f00af6a244addc734737659741a89a86d451084725ca99d398fde", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "ed9b3777d57d8b927ae2f7b0b87969b62678fe5020e45027edc80b04b54db17e", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "44207cb17877e09948c7be74ef6d5e86496b207c879aa2b38d0990ce42fc6f1e", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "cd5df6131a524ec7b7889c6eddfe82de1a2d6bc6d7f4959e22ba8cc36eb83647", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "af42c219ca1d91cd58e556621f1137f30d06fb6d5bc56baec8678db8c6c646e2", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fe639b73c82bf223817ca8bc265db7e1150ab4aa6ab387f6ae8edd4d2d02b570", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "dbce03f4a7d5dc33d62ee15d5107da13e0bb95384b6c1386043531d7ad76c950", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "80f80db5bb192a45e3c95991314b5925f624bb2713c7656f1ad6b8aa0ea21bd7", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "de74fa815019ef2be207d470543e3afd0bb8657e32976c4600e7f37831ffd06a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4ce0f01582044769eeb348b6254a84f4669bf3cb076dc9cebe7c2c3c2e80ac2d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "466f12755a1f825764166072b051194a4ea79aa10fea015842c72d9da43b6945", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "06a94ff5c11f2918e9152c3ba539a28dee34dcc7a694a98fe97bfa00fda49885", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "15b0bc67ee9e9d6cf5a861bd17aed8c78b730d33c9f32e4ba22a497ba2999b37", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d0a5fc12d7fd7eb84bac0549ae0aa6a1ad45a0a2b325582d6525d58806904a06", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "cf4d21a7b4f691335c79f1505a488002d23503702ed652c03373693b98fafb00", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d8dfa7ade49312ffd3f606633306cac2ecd9884ee2dd807c495b4affa9bc8697", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "38802d2b84eeed5964d56bbb746cb3b14d4e01f0493689787b09caf4c80d34d7", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9affcebca66455beafdaf7f3a5c5c3ac8c55f5367500c8418763e5a7a15ae10f", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "af793305aaaf4e720c1af0c7a539cbfcd323a9f335e8246aae6bd0f789680f32", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "194f71b95370990b28742ba444092bc30eebd7a06b74bbf935861eecaa06b37f", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "73dd5c0f1a80f100077d41369fcfa2113c903b519105e55eb8645fccdb12a05c", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6801a164222b37d4fab79338c5c8ffd37eeac893d2f3d0209dd0a6271354e39d", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "44b427fe217297260573e490875341592c234867b103a52f48fb27d3bed5ee49", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a1b546acad68074379c3ff14e226a9d88303ab97ccc71abfcfbee271cdae492a", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6c372b6a41ae0e6cbe819113d761c39d6884384e799d53d6158fe87ff12ac0b9", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "94c41bdfc29ca3795663598a3511bbc853dba1cd2490b725e9a7a1a4b96d6e7d", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0972e40193faf4cc14f6ea390c0f97b2ded1610873365dba6a10ce6b36748f06", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "14a1d44a61c404ce9f22feb81046f678b75a50caed5f295d769995821dc32e6e", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "05bbf7ea45f84bad2eb88e3c696f8d1eeb5975610f25ba754b73cb6f3e3e3c32", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "afc66d82ef3551ff8725238788f4e4355baa72e8fd70987a8d37d5deb0625281", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0182557b6f842ec3f13803f4b3f3873ab51ab634b672df4587bc2dab67fc0171", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7ea86508f2b22e5d53d21121de04beeb56a9b8eef6462e2fcd83689b6a46f459", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "bf0c98f73fae1fcec1183ed64e5afaaf0870eabf9752e4d753b5547a858f13e7", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2c45a23b3700b121f39e12fa9affc579df425421bff7e2aeacda3307862fd709", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2f3af2a4097b6434709c6f7d9c381194c925f558357dc8360731e1b004f401fb", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "422a2915fce8afe5dbf9829f653efe9b1d29625e62ef18f92f1e1e8a7d8213df", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a57e366c9614a3d27fb4c6debebc3ddb0ef4d9402512320c564615cc05f3c1f6", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "847502c61d8241e9be0d4ae6cb6b3e9c49da71841c0c97548780fa8d5b24136f", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8812ab3e17725473649c76839fc3694cf30e39d4f3c51bccd512b51f9b1fe28f", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "746e78811ebba60e4668c7c2b77e879be322489c7b9ac2e0ee9fa66c309bd045", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "876e187cdaee6eaf1396c6382a27fe47d3a3778bd78e1c36a4a9d854a9302699", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "df4c41497183c4257cfb0accfbf009018cac2baecbcf46aab496100303e3fe52", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8ebdadb8089ec9f5a5b2ce45abf2a4b28ee622306bfce745c8de0937877e9b3e", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9ccd5a324932f01c94910b0a4216d1b180af20557418d5bf7188e3ed0fca84cc", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5c93811a2b24863a769f0236b91ff6e562a1928d5c19db9bc29dc66dfca124e9", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "af84e4f609298b46ff221f6e8f53b27b12075abec75e2492d51b0cbdd96d7d59", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b3b9aa431ee6d3cb94b2425c1ac8ce255e1e88aa392c01ca71e1147ffc8e5774", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "c9bb7502f0aa90f6d20cfa13da1bcae73b0167e9e18d2b34755cff2ba2420b61", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "e1a9862ceaecf8743b0274db341a4662ed6fca01d61d34c0c806aa176babf986", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "dadf8161382cacfd6f303c5ae7f8271ea7d2254928781b717895db35e6a1c6b6", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "0a488c2ff95f1c6194256697103a082f94f991ad58d2e58abc133771d4ee8eba", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "a37d0e73c462763544c80aeac75f3b5c71c3ef6181bbbaf774482412276db720", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "06e0160a9b67d60b01c665d6a0979c2ae489a0cce0c40d10cc559669f27a4fbd", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "ef68a2d7871cac9d63829c0dfd4c9301d424ca1f7afa1515eb60d5f7610cd939", @@ -19658,47 +19685,47 @@ "T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "243f0e6482806572398fb99757135b74a3ea9f6dee9e2ce6033fa913f65b87b6", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "b560260a448fff96818051e9ed8f7932623d5cb1b88918d8cabcd4e843a05472", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "9011d7a8540e238741418286eb6731c4290f3ea97bea41c28768f9d01f240ec8", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "765b65585bca90039572921299d5e1556a324234ff3b29b75d687170eec7892b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0ee58bfb59898a03b91362663ee560be22141ad65876db7ada9301d20cfa028b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "3cd05481bd48ed438fd2890bbb28480251378fc8b72a9e33a58b81fa48cfe143", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "8f1e12169e2f2952aa8d49a1fd6c6638943dae35cff32a986a42c96047c18466", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "60b2bb3879d647d3c312c8b6a5c99ff5bb39db903e2f26f85577e66919a43d3b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "0242d37eb2b4174bbdac7cead96eb5adaaa7c8a8b5ab30affa935fe8c53921cc", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "b35dc4d7f399b8681703792e5d4b29818be6e6bf2a9dd035c0dbde3a2d04161f", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "bbd70ce12c66bda956f015afe27fad873b0f9104ba0723d3059e33c864dba9ff", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "74affdf1481d2419bc35edaf6ca18d643204d8cdd82b6687ea3ce2c769a99a2b", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a0aa05e783e4516d404c74e3bb5f5d8aabea1e182f39c655fd1ee0179721e004", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "cb01317182b0d34eee9367bd4400a30bb76b72840e38cdcf66fb2c973809a95b", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9abf4e9bb727fc3d5c3dd7bbb4cbc6c7220a14c8c0cf849128b25b94a64d3b8d", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "b8cc0f7c341a32aee8f43060e4f7d4f944c965538da5993eaf8b06c199a1b375", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "15ea517254ae2a7e73f7f50c411c35f7a9e1099b72ad77e01729787c8cc0d8c1", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "3a74ffef31f6d784c9eb81c93408223d9f0db1e4f18b662985cada725193a8ad", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "e883a7d75687a581ca3946c0128892996204bf700db942bfa0651c44588d43e2", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fe1f1371d4127ede451dcd9e4bc41c63446ca78c66df81378ce9da26f4c26fd1", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0cd6df158805edd6818d280e1736356e6ab40fb9af8efc307fad60e34d13cc14", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "3ac08a46a11a62bbca8ab302e756db9b87d7e1c97fe2f04e3dea3bd9d0dbb10a", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "68101ba8c24defd783f19402ead550cf3dd9e3a24aac8c900644b2c219449625", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "39140fd602a5a66e75f9239106f8865917cb4eaeb569efc060595702e6b9c369", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "16e699848426f090b0df0c0e4830af6e3386f7704fb04c1ddc038aedce43b6c8", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "6ba6afe46b09aa694e9149317aff8d82cc1bba1a6045ea7c35928e11c0debd33", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "51dcfbfafe35e38e2d36cdd784d4d5a66c5729b7545a4c2e9e922b627c2bd001", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "1eb8a51217de79771899b612d29ad9f673c6c016386d76960ff7f7a90fbccaf1", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "25618b9150156dc4a8d3aee9fc0b09b4d7a91edd1199a20ab78454ef712298c0", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "66123062e1be338ea778a04cda1e19bd0ac76cf3c02833e02bb9625d5d1da404", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "d92ce002907529783580de65c7471df0b3cb8ce6bb3a5166281f0d303503da84", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "262d3822eb5bc1a70e2831aedb5bad147e31ab9b99cf72466e3db7af72da6ef2", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "204627bca1a6a9b8aa6bf993167ce824bda39545d306e6c6b9e3c6c4546958f6", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "7f95c2b93e5d9e41aefac78d8f139b0155c5a0a0c94879b5fc0bf7d0cb1f6a7b", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "2823db3010c553f48f95fae20d9574450eb62b0a3dbe00cfef015891fabb6de7", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "3c782d275dd04fd91a6202f726eeaba0786fa96a1196188b4d86f9c5b63dcc34", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "54e9daebeb9c08a2132f051d6c963651c2cd130fee7ba49dc669c66d7674ace2", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "2f3b7397bf26c0a9773c0dfefe6f93aff11511466f50792c2d111e70a870c019", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "557af2ee7ab5537c449e10c33be1b96ccf02d5809ec1a7f6c53cf4ea7c67e7d3", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "be8e58e2a2cdedc6c01f38401e804eeda0ee4edfb0cffe568d3930bdd2429d57", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b51c4f062023bf5c32938e647c2daee9578c4f88312726d5bba8e77fe887627f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "52ef1df5fc2c40047e1ef9b00c8e408095aa3c8f0335d3b1a19a7b560bb0cf6f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "66123062e1be338ea778a04cda1e19bd0ac76cf3c02833e02bb9625d5d1da404", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "e70af13f2ba4368d9a04decc44181f2165be13f93ad92ec6cda9fb2e59c6733d", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "19a04d82f5675f39e847b3ca5d37fc830ee0c56864b658b130000faba639f3e5", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "e2158628b9265e05c31ff8b11997e3bdb9ccaf152bc674ae8ecb4c5fff588e53", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5c15b80b3290f56f26910bff9bdde4344953ce6cd285a41b9e20da4887ead148", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "ea9d84e3b741e1aeb01343575075278e0c2b6248b25335bd07a787032b9ce2f5", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ad6aeb8030f434c7c58b6f7d4851ff8bda4ea10a0262e666821e2a7ae3335016", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "03357c650bb5087285f244d4453bd982d2cab9862536542e68cf9de16779a392", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "edb30dd0bb8fdb37f95b80472010c0c79965d32845274d2068a0229a058251ef", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "714ed51373718b99edae7508e44b30c33b20bea22b77cc9ecc8460a9a48e2a72", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9ef5fc72dd8ec6d449fc91aca115727692a6ac5d661394c638937136cc79d6ac", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a11bfb00f59a1ba3ece6dbc03cfe559180616fb63a41606a5806a192204b0bce", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "4102b339be07a8ecdec29721db22856823f029073371397776a5a6821f13e784", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "2b83b024db8e8b5289179f494adf10da205bb6eed6d34bd84353c9c9a38dc94e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "1ea9344e985b14b64564c0bfdf97e278fc3a20d78052c30339d064591ffa8d25", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "2273f90e222cdc7141aa53dba48e191859e57607ff98f430de767656d646cfdf", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "0a48ca9645984e31e6117b9bcca3c2984876c5ac03f0f156146a00eed320a11a", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a4d3960d5b71d1b41ba64ca669f09d59f8d72ff5069c613fdcb1dda57e1032e5", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "095f4b1d14a255200ef42f44fede7fc0d510356ac860e3424f88503f29b32f65", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "c7341e84946efe1dfe3bdb26e96c6711f799e8bf055cf4c8f055ca0b2f9006ec", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "e4868ecd3e39068d5cc638a8460590d1212cc4a04f78b0706ddba93eec264422", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6b6b35f76536a1225401fc2f77aff8bf138f755e0b8656e43a16bcd0860ee4ed", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "5cf013fc95f650a6f2ecf0f220e151e7c0cd74840fc81fdda90ce2aec247c781", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "34802866f8721daa39a3494ce85c8442bf1fc833f9a0d8531f95c16d1ef87be4", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "e9fb337b56d006c2656e02a9a657f2f9f700b09deedb12c99976d898b333df72", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "67e87abc490a606ef14cffa1d88f36c0fb0c80abdbd5246b4e8dbcdbb625d8d9", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "39c495be96110c02348bf2438d460b5d313abeef1dfd6726f75e234f70963acc", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "6da7aec12fb3332477d596a5b36c591c668e1edf85b7c1d7aed63e03031902cf", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "55df02db8f27f836ec722710ef785d61fa2ba21f4abd4e8827a8f053ccf924de", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "992df73cfae246a8bd8790bf709d8e4bd25164802ef80ad4a15d0bc45eeeac97", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "23bc368d264e0a31d575d344220debf7f8cd6645a9d4d25d4feb92328ad11b51", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "86d5a2f80701b18d12c7ca36213b9eb605d8660625bae800f3070a9e0838c93e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "487d44afb07e0501be568dc622bf97a129341dd470f22ebfeeebe67981969873", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "ce8ff2d501220ef2f68ed95aaca36d0cd93f42093d2f6555a565791197c2afac", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "eef82e65c93f34b66580e97b7284391c1e93f9a83a711d3754770d88e3ec9777", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "d21d78a41fc024b45a2c3f946c0a9a86643db4133b8a2b9ff95e4d470fd61486", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "394236a750daca4f05fe521f79944b52d0bbd93b565d6ba9feb6024cd5c9daca", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "61affbffb4bc2402ec1fa60ab1d1cf083d27a8050ebcc448afb57fa6f6c497ee", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "03c669729f7964b494d9e597a252b6925235840bd687a983521eeb7a468f2731", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "1810381ddf293f9721a541f7d5553147559bd58deab957f3305c14b4f2556c92", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06db44a61b0a01b9cbd48fe531b7d9a0a6cb8d8514df2b614d957b60f3d99373", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "55df02db8f27f836ec722710ef785d61fa2ba21f4abd4e8827a8f053ccf924de", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "b1672c89438d07b7013f6e46cb722fa8d3fdee202d2f5e8c6657fe3af4c7d322", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "cbf1d0458ddbdbad98bd7fbf92744d13ea1e30e69b62aeb23549b6c24270059b", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", @@ -19716,7 +19743,7 @@ "T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "a3a42f4b63f95cb1c11ff6f83d8dcd205ccb71753168824342425fe655f0b111", "T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "a3a42f4b63f95cb1c11ff6f83d8dcd205ccb71753168824342425fe655f0b111", "T3T1_en_test_basic.py::test_capabilities": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_basic.py::test_device_id_different": "295244a43e5337e4e388a7000309e1760c54a68cda1d857508ea007efb72a958", +"T3T1_en_test_basic.py::test_device_id_different": "7ec59322689cc251f70fc8d93e8e18c063091de65d715bed22833c80b657652c", "T3T1_en_test_basic.py::test_device_id_same": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_basic.py::test_features": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_basic.py::test_ping": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19727,7 +19754,7 @@ "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "11c548bd1e835f106f20c2ece5b3c3dca288bdc229e64c8f8d4f56ddca571285", "T3T1_en_test_cancel.py::test_cancel_on_paginated": "0c710e87aa0bc7c0745d0901b9af547effe4344482ae7481fd81065c3d350201", -"T3T1_en_test_debuglink.py::test_softlock_instability": "46060db1ab91b8a519ab8d68ccf4634c4d8ea1c9ed87b108c50824ece5291f09", +"T3T1_en_test_debuglink.py::test_softlock_instability": "c57ba0e5ebbedc664b4bd2f9a728f448bc16bb5e2fed6dbdf8e80ae19e5b54f1", "T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "ab4461520ac776496e41de48bd7ca4f4823929f1e81503ae2646a4d09c3ec699", "T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_language.py::test_error_invalid_data_hash": "c3f8f983b936fe77d2c2fb884b7a19091605c946f4073e5725fed4a98da23c2a", @@ -19736,22 +19763,22 @@ "T3T1_en_test_language.py::test_error_invalid_signature": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", "T3T1_en_test_language.py::test_error_too_long": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", "T3T1_en_test_language.py::test_error_version_mismatch": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_language.py::test_full_language_change[cs]": "f213ba1aae3a6d1712e003224b50cc122c65068b572967a891b046995b34d95f", -"T3T1_en_test_language.py::test_full_language_change[de]": "c75408f2c880e13b321509ca4673d548b16751db728aed6e8f08c51cfe14be9b", +"T3T1_en_test_language.py::test_full_language_change[cs]": "4b8e50ddb1f0c527925438c2b52fb83d1edc18afadde293873765659ed14b8dc", +"T3T1_en_test_language.py::test_full_language_change[de]": "c42c8ccc5513113d4949a0e991d317e9aa18b000b94835bf92d0353e8d17ee4a", "T3T1_en_test_language.py::test_full_language_change[en]": "684a99b183f90d5861dc4e5ce8135ccfb85bcad1a6c4b756105af47112bcc54e", -"T3T1_en_test_language.py::test_full_language_change[es]": "5ed7bcaa0f3b8cd238f9597dabf249b671785f06d3ff2dfac7608629bb795a05", -"T3T1_en_test_language.py::test_full_language_change[fr]": "5f716dea0eeca42f3f0e4b2b6bf3d43e06c6dc97083b332b4171f6c0435920a7", -"T3T1_en_test_language.py::test_header_trailing_data": "590361daac7fe82e789c086187b67628a995f4ddfb535623611391fa3ffb9fac", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "6ffc4a0e7e01e61904927d0b962bc09b2aa46654e14b8fbbabee68502ea695c6", +"T3T1_en_test_language.py::test_full_language_change[es]": "e4983068d07313e1b14664824bc940aeef78a8bed930b2d42b134257cb15f4c2", +"T3T1_en_test_language.py::test_full_language_change[fr]": "9b3bd0881958fc69a649df3773a0653a1687564cf7a58cc170b5f6d4e664e233", +"T3T1_en_test_language.py::test_header_trailing_data": "ad607dee387427eaffefc24e9c207d94368df905a25c067471febed894e13f79", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "7152bd0fecad4ae8231aa13800d59825e59723349c417f73d31d5917bc1be095", "T3T1_en_test_language.py::test_reject_update": "55ed87f0bfa2e6522ab78b36052c296106751ea48868ee7507dd7beec1d49d87", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "e2dc71f10dde638a6970810cd4e6dc6ffd3cd0424fd5072ee2cef50f5c04c732", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "e2dc71f10dde638a6970810cd4e6dc6ffd3cd0424fd5072ee2cef50f5c04c732", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "bc9a0da01ce61eb2e2fd9e296adbb9de284c09e7ef0bc2a1356dd453eda0a9fb", -"T3T1_en_test_language.py::test_switch_from_english[None]": "ccc725b6888f145182cf0c0c0ceacc704c1a4645369c0282f5f7d07637699a73", -"T3T1_en_test_language.py::test_switch_from_english[True]": "ccc725b6888f145182cf0c0c0ceacc704c1a4645369c0282f5f7d07637699a73", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "ec236de207ee3847682382fc8d0223d5b75005dec16b8e2687313878561586d5", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "ec236de207ee3847682382fc8d0223d5b75005dec16b8e2687313878561586d5", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "c09f6907799b460d11ad292fdb86fa796cedede33f231d99cc3df6ea979596ab", +"T3T1_en_test_language.py::test_switch_from_english[None]": "0138e2cfeee5a52a7b2e19b712fb0716ac1efc3400c7bc736617e1997cd3eade", +"T3T1_en_test_language.py::test_switch_from_english[True]": "0138e2cfeee5a52a7b2e19b712fb0716ac1efc3400c7bc736617e1997cd3eade", "T3T1_en_test_language.py::test_switch_from_english_not_silent": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_language.py::test_switch_language": "6c1df8c1b88bedd24f24f834fccf4ddcbc3f327489183f5c017b1251a5f8e7e4", -"T3T1_en_test_language.py::test_translations_renders_on_screen": "1af58ba4d45177d175c912df7cfe14b8c7c0e35e79c0786be5a83212e6873547", +"T3T1_en_test_language.py::test_switch_language": "983b4c3fe47e6b5487b32cbd70ac94c110437a6641cac95795190499e9b103e8", +"T3T1_en_test_language.py::test_translations_renders_on_screen": "c0d20e8901d2b057da2bc190b75494449dc9f88040f8adcd807c6f6df196deb5", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "44f8847231d19b0629b9327b2dccde010e5c47d3f158f9452e128f889e51a667", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", @@ -19762,15 +19789,15 @@ "T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "f59875cedd33a8082c78708e9c62e29b2166f756b7b6aa16cd13e20bd09a7170", "T3T1_en_test_msg_applysettings.py::test_experimental_features": "a374d4f6b01185016b51593a7c7a5e3d15f357a8e9113d948461ec88d5f9c798", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_msg_applysettings.py::test_safety_checks": "fa2600c0b759a59becb2b90d2cb5bf568824d9c474773c77ed904b8c24f6657f", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "b0491ae1ab9efc337b1d0e9d8e34eb3b59a34046db45732e183ab1548c2de3d6", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "932063182864bb4d965bbd671727e7305d743fbe0db481fcb705a039d42c121a", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "901b2a73e2f3b3ee973fad699c17cda17751df7704ba641d82101273bed67eb7", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "c57dd3ae3a722ff489009be4154e96a9cafb2b0834b50fbc21f531773ac91c9e", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a269f57e91eb25ac4c23ff09248c001b771374f16c9dd02ba70fa09eb20122bd", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e3af3b946111311aa3147fc4e03b281b9522b5083ee9e2f73496e7bc3d29d107", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "33ad0ebaede0bde1f1723ef6cc969257a926b8d77ace97ada41b144e06499248", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d3b2c2e59d17a26b731274a019c8dd586a55fc343affa502b11b2e1d6fe2e5a6", +"T3T1_en_test_msg_applysettings.py::test_safety_checks": "8f8b42a0a7b64fb86a6429109ffaddaacc191fe2e7e1a6c33fe523bf96a59d0d", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "40b7a7147d4c04eb6fbf21ec1f6fca8d7212553bc95371b0ee42333e062905e4", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b733fb16642e275780ddedb1860eaab1c4b5ff917737f5790a0a047585e4d064", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b1a41c2799849db7f6796e82f7bfc6a5ef5f6a068b49f6ee1f90ea6bd1f3ed28", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "703a0227f2398d324cdb9bed0c71daf5cac6beed6cfcac6afe7095abba5e962c", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "370a854e7b1939b2d7b0d3c579ee45b579a2fa0668933ac65899d7a3a45b5861", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "564f7ca8efac421027694e12d1cc97ed4544102a2a609867ab3289a259fb7642", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e047ef1a569b6bd151d3b69f6bb54416e58db4e82778b43634e9efbaeede1a6d", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "146f947718edeb0994c61cf6d455e62e02950a78095215d32c9eb89657ed5f1e", "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "03718e1a2cb958a9d8506955890486385c8792ac0e8b4c83aeaebd9b690a84d2", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "f044231aa22fe9c9e99e843f45121a1c62eee7b5bd758bf7e8e28b5d344ccf3f", "T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", @@ -19781,7 +19808,7 @@ "T3T1_en_test_msg_changepin_t2.py::test_change_failed": "e3a09893c0f808788a4a2d9f93bacede5c5043862212ef2901a18dc0bf99892c", "T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "a4c447300850a5a91df206c44a0afb30f19d17b6ab7fefbf268112efa49ac80f", "T3T1_en_test_msg_changepin_t2.py::test_change_pin": "bf965d7f7c6826755bdcbe267613f50932f4b5c776fb0d29afb6c74233df86f2", -"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "4efee19d4a3d096bebc6151626037617c7ebcdee8c4a8e319eec75062eb8ec43", +"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "3af6e9d0dd5201afc909db2287a4bfc4ab0d0d05a5aa114094ab71f4143df03d", "T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "556795487d2396347e1670d2950bbd8b44898f89e54c2122d58e269630f1e911", "T3T1_en_test_msg_changepin_t2.py::test_set_failed": "9e288bb5885db81afb67afefb3918ddfa8385bdb8b0b66d3639a45dde3c04a34", "T3T1_en_test_msg_changepin_t2.py::test_set_pin": "67b821beca343d742f31263ee939162d54e4144ceec6fb73a609e0354cf9b154", @@ -19789,13 +19816,13 @@ "T3T1_en_test_msg_loaddevice.py::test_load_device_2": "2742600e680a629470fb7af73436eb6284ed81c31510ced07252d9fb4a7fe540", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "e6f95ec420a852dd169eb9532f24f1bbcf4eff609a8bbebeccca771fc32fa46b", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "ff494d038cfb3075fca4dd863b941fb9b3e95a88fc5bac81a044d048cfcd136c", "T3T1_en_test_msg_ping.py::test_ping": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "9a6d1cf4af4ab3d0cdb3ed5c6f6fa26db5d332c7c9742a729feaa8f1a0a2ca63", "T3T1_en_test_msg_sd_protect.py::test_refresh": "041d3d5f90faf82feb141267f624cfd9e60a6aaee65a50fa1ca70d4a6269bd0a", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "8d42b931136dd1a1285e7f695d79f7a39b62a002c56525dda3fd616fc1805fb5", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "9cda0911eba248efba1a2cffd4f9dcc61d0acd8963de964dace631abd632b75e", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "295244a43e5337e4e388a7000309e1760c54a68cda1d857508ea007efb72a958", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "3d24e43c3df35479aed83a0549fd317aa7648d3328721eef784f65c8c4780ab4", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "4d6faa71bac36aeea32348e4d399b30a70be79aa7c7c575042d84abac714df8d", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "7ec59322689cc251f70fc8d93e8e18c063091de65d715bed22833c80b657652c", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "54990297ddf4f0b6ef5b50f00df5c46f63aa1f60ba9048c8ae3a5014873b1c30", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "54990297ddf4f0b6ef5b50f00df5c46f63aa1f60ba9048c8ae3a5014873b1c30", "T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", @@ -19819,11 +19846,12 @@ "T3T1_en_test_protection_levels.py::test_signtx": "5652fdefa003db698931ba040a5c592fd2ea8dcff51bf8cb3576b397aa73dfcc", "T3T1_en_test_protection_levels.py::test_unlocked": "7d56c6330e2b96da1e3d9274e1defb1164e8e665b2de9de82cc3b49137990912", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "753f59b6176fd08d9ec3909212f338bd20f163b9ff4c73d28c2755f153650b99", -"T3T1_en_test_protection_levels.py::test_wipe_device": "71b755e566a9cc6f2ed597b6bdbbbb7e551e1db0526a757ea5adbf9c34527e12", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "862f4300d17bac6c39eb5ba24d6e47e560fa0998d5ad5392ccf9997090a6b803", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "2613872a12a75910d1f6bf13499459ea22d09062c439e10e4b73d43196a34117", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6ca21c08fffd3bc77c15463d6ccecb0d46ba88bfa7c940554ea740f600e3adf5", -"T3T1_en_test_sdcard.py::test_sd_format": "40a5169c6cc64f2106886e35935fb78991fedf1075027819edbaba9dca33ddb9", +"T3T1_en_test_protection_levels.py::test_wipe_device": "7aa79b2c578b3466f89aa2b09e046f94ed23efe22a9953e3d9c7ff117ed6558c", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "a215d123c0d14da00fb02c3adfc7fda0a4e3681db688ab9414a392fa731211be", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "962afefaea95bf8d8fa143b8529fb3a70efd6aa0e88cdd08932bc6d26af07832", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "34ed8f7efb640fab0f71d45099421ab25046334c72490febc1c1b20a9a32f2e9", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "67baa8e44caefc7352796d1631e406720aebd5c4b9a0004f98387447cf481b33", +"T3T1_en_test_sdcard.py::test_sd_format": "1716990cba7d3a47bef4700590a796dbcfb3df7b0cceab76d0e6c378d74408cb", "T3T1_en_test_sdcard.py::test_sd_no_format": "4a23edde8d891c33658f18b17d437c523f022f84ff6b9befd30c8faf67bd60a9", "T3T1_en_test_sdcard.py::test_sd_protect_unlock": "4c3bb63f83b0b8a101cd04dab2972685be27350f869a9e5eb1248049bd1587bc", "T3T1_en_test_session.py::test_cannot_resume_ended_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19847,11 +19875,11 @@ "T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "eaa5c86634b1c7b1fa1906afbd0f644b4a07119369b5ea61b7fd741d0d049c46", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "8cb5089bcc38132a33e27a1b6a6b21a723e56ae41e4ddbacfe6a0a50261e678f", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "7f0ae7e269f087f8b2935fe54c6af3b6ed31e6a11017ba07f6e0e8a85e8151ce", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "81af80639c95fcbc303d5e6071cb0858ab1648d3fe6d86b6ef9959391c4cd84e", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "0643c6da846ce61b3721e5e93e547a6839fad342525e8fbdb7f3cd05928e6451", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "53cf62cf91a7c0edd98fe177d3b6c60f96fc47d2203ec8d4f10d5e29bb40de67", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b2592e0d823c1cb39659168f784385beb6b1598d01bcf5877617a8285289f7e7", "T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "a63fcf90e82c26cd871200ead581928f5ba6a795c0b129c3db328b4e2c95ff55", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "4728b3abd356403b445e1cba8c76e63c5aeb1e23ce1cb7086b90010e7062e268", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3ebb9f1c88006cba897357182b858088182606bc73e819a416b0c15bedca3778", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "f345e720600ede1798fde1783ddb285f03433fb1990aa0e9005915a76a41d0b0", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "62a59700f8f083f84a57390956a7c77c09438cf4a75521f6800f29c2f483fa64", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ca9acdfcc9cf6d0556cc1e106a92ba6048a7b54750cdf52658a7932351389731", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "9ed12e82bc4eddf03ed25be430129148aff0985ab675f6fc667bf0cd6a95b1fa", @@ -19861,7 +19889,7 @@ "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "1300e5c49e238a20cc043b25153e0c38bfac455a3144723b761c716c2af2475d", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "80ef196f07c130954c242fa916bf56573394017b2f2a857f7cfd913a358930dd", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "5da07e0f447f877baaea76ece6a0bf927d24777b7e728614081eac18b81bb72e", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "28bb8fbf982de020cbf6d1ba07a9f24e205aa6407b6f9b795499d4855c034800", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "8c4f8f3547688adf0fa9e12b564a4ae6e1b7b573d1f01e0d955ff1e1299895ac", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e42a0932f8ce798cd593d3eaf29590956054a9c72107cd18c3fc6e3ca8c78d3b", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "7f0ddb38a094f5a3e5460cc2628467079d0e140839a3357fc4999cc171f6cc0e", "T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "92024bca84983491b17ea260caa650e695a5e94f804cf8583f1878fc45136dd0", @@ -19875,2786 +19903,2744 @@ "T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "5b0755dee09e8c53bf0fb979b77cdd8ab5008c196d16120c19c195b5e6c2666c", "T3T1_en_zcash-test_sign_tx.py::test_unified_address": "254e319fa5ae4452a9036fba7947d47997ca57005943cc72e91d31a1bea521a7", "T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "27d5a5586521ae66cd1148ee571fe1e3007476990f05c1c30e8d4951b4885ea0", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "686710df9a9891b018a6fb7ac364fdd0300a5de32d93bde74a73cd3d744376a2", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f351277351741466c4ef1698bf97ce56b0228adab2c479c0a06edabeb7da2d7e", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "97520268e042421144c5d234919d0ae34771e1b76c3e3344ca49d907536000ba", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "a392037cc44bad4450d6bd89ba30b79e33c185a3c710d6f43dcb60b8b062840d", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "709fb4458b720969f0ce546823ef1c5e6691e259175d2151ff9bd16e55402fd1", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "fc4dcd4a5ea542f9a722ff1b2a2ef7e41bd8d56be1229056990cab7fde86abe5", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "dd80731c77f4b1ee2688720df851d8aab1d2bc73f747257a379d1bdec2e30a26", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "709fb4458b720969f0ce546823ef1c5e6691e259175d2151ff9bd16e55402fd1", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "fc4dcd4a5ea542f9a722ff1b2a2ef7e41bd8d56be1229056990cab7fde86abe5", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "dd80731c77f4b1ee2688720df851d8aab1d2bc73f747257a379d1bdec2e30a26", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "48a09d6b6655b6e4722ba6f598e81800c436f22c1e4adbcb1d4cfae85e11c9af", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "9c414cd372f1dd5acbdfddbe629a71835da0af7d47c137196eb0ac6ae1db01b9", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "183f9c808cb58b64a6fe83f5b45eed64f36146da39b7391cb88be6069933a5bd", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "a87f9c2ed69544dd5312a6dee4ffb0fb438748b77c6b27f406dd787b21f79dff", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "074515a1f27e17c5f3663754cf6c915eff3a0c2fb886f2ed70a6ba1045f3af1b", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "074515a1f27e17c5f3663754cf6c915eff3a0c2fb886f2ed70a6ba1045f3af1b", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "dde86b43392852b28744618294c6e18082409676e753e495f4b0d29cc3ccef82", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cad5396bb4958050da6b889243bf7fb19cdea27c5895af971bd33c8f4825a6ff", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "fcc71ea234111661ead77d395546948ce5c30fabd601b1c4189ce3db8781fcbd", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4a9a6c19e5cee79e6dcdf5723600cfe7c4c67064b84280ca702b3699e2c3b373", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4a9a6c19e5cee79e6dcdf5723600cfe7c4c67064b84280ca702b3699e2c3b373", -"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "e16946f31a01440037330710b3f4fd08a2bf1c6ee88a27ef5c2d6a3d7341ed04", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "e16946f31a01440037330710b3f4fd08a2bf1c6ee88a27ef5c2d6a3d7341ed04", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ea0c3106e38c8f864e0a7b42673232c5f3614e6d98b8c75b39480db94f6cb888", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "117ed7d19dd69227f62b1d924aba25b0860d7ee765ff6ce1a8e535ea3eeb1315", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "9c53f034c49732e698af0a3b7145269e1e1a0bbb433d028e47d0d8c433380956", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "2db97123573c1c3a18bb16bd52c9002d6061600b23deec4bce897ee8a35471c6", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "4bcdd6ff78d2c537909cb4fcf99d71568248feae6ee94eb7713cc2dc3e9590a2", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c5ac9aa8953a2d2a71f4a84866d6e6913297bd40f383848de12ae373eb36514e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "be62178e95ebb1e76bbd80742dd22ed5f4339e0c21b86286570f20464b2bb162", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "058c2d5cf34d57735848222ef1a9bce606fdfe3173963680d995ac40b0e82712", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e959a92c7d1e733ae630c8446b7808d0639b3ca438491a821f49bb9d050f76bd", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "a7e82f78f9796d1d5a6dab60850bdbdeebfc491b8754e449299a8060f572678b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c439e12437e39b6ef06c33810967c8c3d359365451b1a25103a8ad285ee755b4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "23371cf5d062872b32e6ac0b1b653be273f3d79a7e94ce0052041d9d7096902a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "dd5ddf2a4d55b60bf573e30cc17f97143edeb9b315cecb52007da6d0501d81a4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "785883a915b23f07daf664212b474ccdc92612c085ddf47f4b10e89eb7f25500", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "eafd5bae462e2864f8396c10e7f88e63874894f1a0476f4202ede452b09c6453", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "6c55cc228aff80cda38710ba866821d54da0465f2a55eabfe9f0d88bbce69a98", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "70871285156862c2e4b81695177cbfdc3ea49a1d3f2fb6b281382b2d0231777e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "353871fb4637c8317dc2196027a9be34c26ef44845ae75a68783723eb5957f8c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "b032745a32a41e173eacc13ca03c04e4e396f1f829313a3e67936e694689d7c5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "7cdcca9cc465cd3da9b8efdd29b94a75a578ab4423ab257dc081ff0946546bd8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "b34113239f79a4956c227431edcd215943c3d41efd403364ea02865e39a5973b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "3a5ec6b5213b84f78ce3092e871f579b065c25ff07d2cc1f7bbfdf51da418317", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "e6cc5d09f5ce06b7bf6dc28da651273c0acfc13ca1ea9e9d3a43c261a8d5f765", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c5ac9aa8953a2d2a71f4a84866d6e6913297bd40f383848de12ae373eb36514e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "be62178e95ebb1e76bbd80742dd22ed5f4339e0c21b86286570f20464b2bb162", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "058c2d5cf34d57735848222ef1a9bce606fdfe3173963680d995ac40b0e82712", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e959a92c7d1e733ae630c8446b7808d0639b3ca438491a821f49bb9d050f76bd", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "a7e82f78f9796d1d5a6dab60850bdbdeebfc491b8754e449299a8060f572678b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "c439e12437e39b6ef06c33810967c8c3d359365451b1a25103a8ad285ee755b4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "23371cf5d062872b32e6ac0b1b653be273f3d79a7e94ce0052041d9d7096902a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "dd5ddf2a4d55b60bf573e30cc17f97143edeb9b315cecb52007da6d0501d81a4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "785883a915b23f07daf664212b474ccdc92612c085ddf47f4b10e89eb7f25500", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "eafd5bae462e2864f8396c10e7f88e63874894f1a0476f4202ede452b09c6453", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "6c55cc228aff80cda38710ba866821d54da0465f2a55eabfe9f0d88bbce69a98", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "70871285156862c2e4b81695177cbfdc3ea49a1d3f2fb6b281382b2d0231777e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "353871fb4637c8317dc2196027a9be34c26ef44845ae75a68783723eb5957f8c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "b032745a32a41e173eacc13ca03c04e4e396f1f829313a3e67936e694689d7c5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "7cdcca9cc465cd3da9b8efdd29b94a75a578ab4423ab257dc081ff0946546bd8", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "b34113239f79a4956c227431edcd215943c3d41efd403364ea02865e39a5973b", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "3a5ec6b5213b84f78ce3092e871f579b065c25ff07d2cc1f7bbfdf51da418317", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "e6cc5d09f5ce06b7bf6dc28da651273c0acfc13ca1ea9e9d3a43c261a8d5f765", -"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "4bd5f452dcdb5d25e492be81340dcd74185cfdd258e5e8ee913ab800783d15f0", -"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "5a2fd886f53fd5d2a8bf8300301ac394959517afd86c5d51121a08c83b3fa986", -"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_bch": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "6f1887592c158905a3e4ef72cbf039a2717f96d2da2754500880594ff82c1c01", -"T3T1_es_bitcoin-test_getaddress.py::test_btc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_crw": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_elements": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_grs": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "6691392a305ae1e3f900442b6ff46d57ee9819e76c4a619a6032ac8e975306d9", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ef6605a7264b7cecffa2ccb6aae02dfece015377f00ac6a543a6b1aebb0f1921", -"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "f829040cf23429bb2c724d72b352676836a7b94d8c726b9d56254faeaefa400d", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "d5664f0c02939873d9bfc471ae0795ae4d9f9003f740170bb14c04d8171fcc4f", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "828c97a91c55e2437ab110d0b7a7916d8201af270fb3a67aa45568594b48b1eb", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "a3518f6014ab15c04b985e6a2fc4e08d55e49bb99f8cf39c73b7f7d1f592bced", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "7da8de0e0cedfe0e6e40400d4e64a0a2a6a0c3ed7d093c92acf5132501787917", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "52268cb986a2031f5ebffabe44164b6301584d046a0d82d9da2b03cbb9e3443d", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "72c82bf4e39c70b78db95b32c3c5b44f37f4e71ab968a3f82d076bd0fe66e0f5", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "54cae7e3e6b78701c004b92b4dca2845dbc759638a7a10aa9ceffa7f6bde6c55", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "e35ba810b4ecc7dfaf8d96a49611b5cc5d82c9d48e8276d5c522b12929ac757a", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "17fe570e9d2b90d52864d5c9df5ff036af0e60edcd71c730733c209cecc6d099", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "0ca2d972329af35ce97046b293ee9cb319ad592f36a1f87cd5ef8ba381059c24", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "374d1ddf896d03d3897dd67914a83ef08d6a0c9bc49599e619afe736836bb63b", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "28fe02dbb9704cf6f384a972c160f9fba734e0bc94e08d6a52c412bdb6f7f73f", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "3ee9f04b468d545504cb09709338d9c2458bcf1e59e119ed2edd64149c0c0ddb", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "8e0f69fa322dc309e080dd1c9c364e92444ab916d8ddd451ba21b6daa69e7cb2", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4bd8b18fed9f6a5efe308552ec40df461eef30a8cba72e4a96df5ab8e4f014ed", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "77672386dc68f2290ec1fd0cd0be5415dfbcd32aae98dc5086dfea861aa465a0", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "c8ec620feaa3299d05577a00fecfe08c15aed6c417a4dd243c69d24f25b96b47", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "bb108fb2f2d438b33426a3ec6566e932844d9acdfb5997f5917f107030011066", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "7d68bee8d042fe0d2ce28d95499dd496aef818a17ec09f388f96ad78186e6628", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "4374803bf0c6e58f32b6890aea76a06c35141a96b3267f52c2c0a8c7bca9bd2a", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "748399382f4b0df726942e315d617549aa366b9e27a65f7eb5638042a0a08f5d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "dc2baeec0e7afd4fead15dc0503535dbac0a4c98e5cd861e51f02a802bc8ceb2", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "80661941329e4fc46d9fbb3e62fc0b23c0139e174737ca2a3584cf346708304b", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "e6390db9ad3314726fd295feaedf0ddaac10782bd37c25b662bd68b308b28f09", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "e6390db9ad3314726fd295feaedf0ddaac10782bd37c25b662bd68b308b28f09", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "20e8a801ec75b4166bb3f0909ae0dabbaa906ed97017fa723e1bc828166b46ec", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "8eb1f6765b17b64bca762cdb4fdcdaf2e1f0f385e8fc970f40d55c4052323dcc", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "977bfc442512a5acb3a4d8bad4c2da3ae1daa1b9a09f9da5ae7871309fdb1a5e", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "80130b0dbcdd68bea66a7e100c1af5ea7d66a6a38efe5e729dad1137be5b0916", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "a6a2370cca2e718d052e2ece293ec4d6fa1ffb80752302961302096779ec9476", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "f98828ea99e0020c49431710aec8820544a69b49ece137f75c659d501a4a3916", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "fffc41d450e7ae3a5124bcb0f27c0e03d9246ccb0e1a67a5c252a7daab22b4d4", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "7bb122b58434db4bf796964348c352d85b5cbe33883a898f6e8fc9c8f140efc1", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "e75197de96e769dcd1fd6ed8f7778dfc4bbece34b506413a2ce5eed82a5389e7", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "31a6e0720729c67b3c63ebaeb5cc55d32b5ba2888ace15e12b35b5375b09768d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "738c72be9c1fc2a7cfda4d984a6df09a9776b87b0537e72ea0bb390a2025cbba", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "c966847fa975270c809818ff81bd73c60cbfc604554b27973517b2ff1e20f942", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5f8e897a8bc0670c453852248a8f20671e6bda038f9190c4aec21eaa947ae912", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "7c7e4466883209529d891bd9250d514906eb8e98c937efa037e4be46a6b9164c", -"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "be62178e95ebb1e76bbd80742dd22ed5f4339e0c21b86286570f20464b2bb162", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "bd72d4a44e2dc52dea9fec15d94397342f6868f653a6f1466b408fcd850689d9", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "4d5adab4966c24579cb3c35aa9415b89a7e3c7b68ff6eb46ec5e90db1231ce53", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "62a3e08d612148ec4e8f1ead57275855b1cd4cdd63faf1a8d353fb28707145e4", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "39c826703521dad7ecffb6a803620812f2be776df3e167f1d2ff9d6dfaea4d6e", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "c00da94aa0377ac3d61f19696e73d372b4666b8bd3e2a3405953bd93ed13d448", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "8233e058146d49959b97ed0029a37c535f82b67fff5db9061ee8bccd5f8771b7", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "eda6b948c9ffc8584775fdce24e50f50e516de7823d0db705fca0b0bc0ed75ac", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "5140a27be7aff3c4d8d1ec0e92c509b93f1191e30d3126cb1f9b140456d982ea", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "6c55cc228aff80cda38710ba866821d54da0465f2a55eabfe9f0d88bbce69a98", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "d8bda811ed8828f067658146887213d20e2b227045b16b3c21831447252c5ff7", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_grs.py::test_legacy": "029ddb76996568afc205ad4e8cef7f41c7222616b7f0bfbc2b608d417cf06ce6", -"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "a62ef2d4fab09545a1d6cd299ed52c5f8de827002a63e7e530d8c58cc8ef66f6", -"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "75757ed398913958efb5150ed0403ef01faa6f099c20b81a572dc4bb1f073d0a", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "f3d21ae53e8adf9460031510ab83e451cb662c10334d784b79862f39f5ee60a5", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "bc831aa9a8cae5d7bcbfe8376cbccbda1a17a9977c27d184ecac37bd72226a8b", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "983995e4c546ad86a46ff2f75e855d02b9084386abfbb89da86cf9cf3da7a508", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "2017f7bde3bcda8b466fada706f2d87125a2fa400d66f82e3115e1c6ff86992c", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "23ff322a3d794c7eba777434c475533a6ad7fce508581385231272545a39b250", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "96de918896d27b9bdad0343619ca386b33bc65cb63f1fa8f93fed95e930db296", -"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "adc710a0becbb926398e77c3bb1ebedfb2c7bb0c1b4275a9d6bf9eb73690beb7", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "f1f08b8ccacba5f7d9c156cc003c89e70560d72a642ea0d0bd4ed91a04188e71", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "d7872ae87cb232262a1118f571b9d6069fee7253005ebb5c024a7bc8220833a0", -"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "59e26a2c09737a28ed8a2a6b891dc2df3ffbca706172ce8dc10ceb13500e4c1b", -"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "57e127ca24c81a443b12524d770778b9cce67db6202824368de398afe5325ef9", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "b31220178389878db89613e1c1a0e79037eb0309c8c6019125d2950d3a098041", -"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "c40f63190d9807b7733da5c457a5dce33a465bb6df7ebd68e6699d7fb19c235b", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "580721bc08a15a821de05d991fc61d7f410895fc33867e5e4484f6b5785787eb", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "0d07797093a056a9ef56489d77941496004ea10b0295b87c8f43dd303ab7ff19", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "14dcef29ce17eed7aa524f97d2734b6e5a4c86cb2c5af106e15ad820a9f5dcd0", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "c442703d24ea807d9585cf4d965023d0fc7e7a98bd201569bf8e54505a23133b", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "d58087b6de5daeb50986fbe845e465306b4d788d395ca38b6e64ebfdc4604938", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "dbbb56d8decb96006386da6a786946d7f8dbf6163e5f627d3694b558e0bb9453", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "1016b4299a82bf3c145f369b52641db363ada81a369cf2ccad1c21e6ec855317", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "32f70597648620c61ab1f1b8fc74a8819ae4954066005b399a516cf89fd1c66a", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "296834b45a6ed21a8dcf0c644ad991b0c26600330c161bbbb430703193c6856b", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "315afb2fd72d2dc0f71be1fe9d139c5cfd21e07010b5388f6dbf9db5f1926f05", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "3bb5d069defbfeb109b9f14d4efc121654ae47534d5ebabc229b5c5dc3a6fce0", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "1cae634a683fc475261274e6c765a4006032802e188321428915682eb11b21b2", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "8e51792d0d2ebf21baee50edfa2dad10ae1fd5d9fdfe279cc7a3d3a5abfd1adb", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "181a6cb76796c2008acd15c75d462028c7b6a01c134fe89090360740163b8179", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "969cdd58cbc029b2bad8cee05ce73a46d48cb765889de863e150a41bbf240c38", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "9a19eb3be89af38b068ffa97712ba3c4768874abdefbe154137b7fdf0e75411f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f47b3f137c10767ef7e8727794338506dd7986decc13d281c26f80473c3812ef", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "aa0ac0566d60cc989055c18634abece96768fccf60497a34f8aff8fb54a84954", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "1ba41980337f4307f3d62e48c411c5c2477c36ba73f5ff1d0e42405024eee8dc", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "081897004c04c596bcff9ba5f814cbdf60d0d85a14a8af3b9354f4eb622794c2", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f42500aefa3120b8cf19b09b6c961d280d8bf194f209c75a927e8aa5d1bbfe4d", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "b8722c72e84d7c20b06d4bef0f85fb6e117364b3f4f7f1593a5096294a5dd66c", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "25ad2fd35affa7b4bd7f0ca8abc655938f03a238e38f561ecc2d37c17cc3e504", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "bf5672b81d9ecaf0975ea6f6f8e2427341fe1c2b7edea87ae20a7b99fcc15af7", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "d3e9b47835914100bbf24ca973b5c88e55049f33d65d6d6b2b1b94a542574f3d", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "da44f156c72a550f85b2e8d35baed6b1190b19a5bf02d8f82f28f1356e37919d", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "1c769b8a8d7b10b09c3f358f943358681ace65bc95e893140e13e43053c967de", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "5f5740f7c64fbf79fb907eb939365077c40add22adc209edda155b74f1857702", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "de77de61ab0cd369ed90c0fd997ef5d097e8ccf4a2f824e176fef2c42e79a8fe", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "c1f144f87c2b650507a865d684a6540ba0fdc515a291b2f86d52ef7b175551df", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a542fdd4e2834fd078d7560ad0c7c317048d541ad6df60551b8a8d9c2d69a16e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "0d6fca63d6a08aa3f679aae1513e66020f35874c978c40651836e5b151de5971", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "a84f83b7a923f6845acaf8b10a46ec3fe6564270552aeaf22a53683588947667", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "77c439d38559db01064b7f28bbecf64224c4f96f7074e2a88e0d3531a160f62e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "cf5fd1f35dde9b768c113a1068ba255d53428f3e6bb1b59f8931b09101c2bc79", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "c4a1164141955a6d8752eebaba9298c9740c797234d439141a50675af23aff87", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "4d43aac36c8a0143f23e2de64b4e57f4773fbb83ba85e7377822e574198daf1e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "006824cc743f06ebc7c97ad8e46f52be4c53d1201c893d14db96d128a7ae1dfd", -"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "a28bcdc31d761d3e8ecd6da158c856c9e05239620c7a17fef66cbaf67e1f4c7b", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "ea162a0640ac0c26166e9cecc982aeb914d434ef4cca529642484ceb2322f526", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "7889b05fbc6a65887452b6b0a09316663e4438315d60ce71dd44f8fc78ecd6ae", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "19e1d02646f8244c0d9aad7164627b8c2ad4943e5db40fa7d4a8f34709771b7c", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "19e1d02646f8244c0d9aad7164627b8c2ad4943e5db40fa7d4a8f34709771b7c", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "3a180bcc49338b847e8075aed7cae8b0c4856b3a1f290a7e40fde5fa7c339d46", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "8494c538d3619ad96b0fe9fe15257e4ec8ea1cbdf9d9f9e85af61fbc7287dc55", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "0b41c6a593ed7a414e5036388f30bc0d1dc49ec1ec729557af6e1bdbea72e55b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d0acd17e493fb01d087ca9637e9a6378f50bac668a38a18ba777babbe3519173", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "4466fe7430054315a412df26c86cd23947e5b402a7d7302997e3ede82958c489", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "70030dc44d2e5a0453c27fae99f342d3c6f05840c1dc16ef37d00f57887795e4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "70030dc44d2e5a0453c27fae99f342d3c6f05840c1dc16ef37d00f57887795e4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d6e3fa5f9c0cb04ec13e0c616e529607acaf521f20e677d2ee533a10d37ac62c", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "fcbe46fb6547f83b5b769b880736eca221e171dc36d738c595fe92432360bbd3", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "33e27cf4b3b5b73d49cc0e213662b760540781b7464a76227f7d86586794c741", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "33e27cf4b3b5b73d49cc0e213662b760540781b7464a76227f7d86586794c741", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "46eca3ab551dbb983bde95a8db2ada0395913a04ec893fb085eb2239ef2dd191", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "84b89428c6e2b50b1419b5982257adfa5d3cf7b0b3ced9dd43fbaa3d234fe78c", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "fbfb47d523b069861b520f3ec465b71e18d54b76b741e055bdf4d97ed4476e05", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "fbfb47d523b069861b520f3ec465b71e18d54b76b741e055bdf4d97ed4476e05", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "c0ab92045798b127b97b086b29a218589e959cd819f4d05908b64fe7ea0a95d7", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "5a8af0affe57a5baf76490033bd5836cbd745ea779678ff667e788b1bf5648ad", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "553f34c6933b4b3c89cb6b1641415f87ea26e72397ec5cccdf22c15cc63d665f", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "553f34c6933b4b3c89cb6b1641415f87ea26e72397ec5cccdf22c15cc63d665f", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "853c25b10b682e3909f734038ea78f2d6e7d55ffc9dcf4dc8d7898f25817be0b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "30d78766b0bcc38844d17595612d4563976ccd3cafd3c4bb8e23f68614212761", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "91dde0b0ba0180b0c378479ff89440ca3ee7422a59dd9e3f64159e1fdf0f9102", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "eebd457a578eece9f78589d62e5d022c658d3cf4340e2c7cde7bdc012378532f", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "f28abf7e45a7e7847ad0b3606260dde37e98e2b4ec3481e760e474e752f58930", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "edc0ee6fbea10a121be2d62b60b37d25cae13251d4239dca6e8edbdb9573017c", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "edc0ee6fbea10a121be2d62b60b37d25cae13251d4239dca6e8edbdb9573017c", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "680eb574dff5ea98e6e135ed5da7385c5d4c8daa10bd63a1b3c3186c857cdfd5", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "ff84491ed37d9143ba9861183358ea50541db8ffd5d6572b67142c3252d9c30e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "dddeec562ee438c00634347054af4d91dc91176eeeaf97f75b573d3ab0b53aa6", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "dddeec562ee438c00634347054af4d91dc91176eeeaf97f75b573d3ab0b53aa6", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "fdde0e55c303f2c1cca8296db02d6f7449f3af28199bc57f4be68d631581149b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "4fe28bb669c2875639e4acd1c51089dca86873aa5dd6a4b6e63c7d18f781f7f0", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "a3f7cb24d3a5bdf878df9a9fd30db7534f7ab025dc25879d287d3ce1cdc9510b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "a3f7cb24d3a5bdf878df9a9fd30db7534f7ab025dc25879d287d3ce1cdc9510b", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "8264534123d594c7654a9522e328e623f1d42331080bb6ea972352958ff58f25", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "aa14320ae955c74ca739be9af433984f373104552b9d681d889c5e804a490def", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "86187fe3c87eb01e5146aec8063a0af7872fb4d18e080377a03817abbe04698e", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "56845278b0ace1afbbf2be82ed739350174f06149584348a3ac0c5a742e25d37", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bbf085533daf2689b889722f519fa0517de24a6a6bdcbe18ce317eed6601bfbc", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "2b46264cdb546a623221c7bf3d63571ef08c8a09d1db8d8602d60e82da007287", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "83ce865f0198b3fb6e4e0832829798f5376dc813812602b969824e8b60496748", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "1a82f1e1ed6c5564c3acee6f2dbfd5e1c4c838d675d8bccb3983e6eab13f62ff", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "3ebecbcb22c51e5df810a6e35008a0dc7f385261b6ee221c7229b66499921311", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "da5ff79caca2ff9eec626e11bad898616683a4d65d32593e1a67c2bef2eb118b", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "dfad8f8a6ee580e61959d174fef801f33bd9587931adb9b75886f55e6a5c9216", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "aad018b0a0f8c327538ca18dca84ee3f93d0c66d85531d0a29011ff64c974764", -"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "afd9b949f6d85708e2ef177b13270ee82177f752afee8cd6325e410b300e79a1", -"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "afd9b949f6d85708e2ef177b13270ee82177f752afee8cd6325e410b300e79a1", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "bccf1091c7d6e769d762dafae1f6edf1b597862f71a139e723cdf232de3d5295", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "4d2acecb4b6feb9c5afa5924d2306809c12f8c1f5c2f70144dd55d1ba8f5018e", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx.py::test_information": "b07836f7b6ef7062f20fc19497f47ef885b1dc6495660252610d6ad4e2fd1541", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "53c8b0826669a7a6494cb20f5362396d6fe1514e8bddf9d0d77f3441d75ee6c2", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "1ddba95aba04c22b68cd856d409a517f9ddfc6d4ee5bc45aa41d3e12851fe3db", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7a01a7d020da5bff5bf472172c3f7f3e34c6a030fc942ba85d6208887f45b2a8", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "7eb04408a774f5ec1dbdcf3ce550775b6b1a17377838d4ad1c1b5f3233171c9f", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "04596c73cf6a65ac787d5dbf4ca94d19917b8d7d28f5e1578872b81f4974b39d", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7eb04408a774f5ec1dbdcf3ce550775b6b1a17377838d4ad1c1b5f3233171c9f", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "04596c73cf6a65ac787d5dbf4ca94d19917b8d7d28f5e1578872b81f4974b39d", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "554a0ebb7ff1fe611dcb36837c365ac4a2609fafabb487fcc16e471a6924c12d", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "780331d3d924b9ca725917b29f15716334cf8a2c876a5e3c78b23c3675460ee2", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "9ff8b75093c66692876efe5fefe9ae716271364ab433ea33c13e39e2b9a83996", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "3394015fddaf07df75710288c106a99400a1c3eacafd71cc3a35bbb9c1bad089", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "86cdddb8a65fb9b31888355535d881c4edeaf167a72c9f839d0738d2f4f18a71", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "b213a91ad69575efd285d66f58fc5520f72b12290f6c62b685692a994441a8dc", -"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "867fb95e46e45ac42cf83258db683a650a2d02cf3d404611ce9c900c740c2c3f", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "ebccdcf606b61d74f936d5078dbb63ae50b01a2fdd293ba5d7d7585b91cb9b93", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "68d12c95f2c2ccea5e0111c58ec5a9a2fe92c4deb36c59d65f27737bf6a51342", -"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "458c61c7e33b6aa32bce3d07f2dc329983ad72e18a7702e60ea7cd416c50cb11", -"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "d6d6e5c70d9d163178eb246886d6a75809f0d3749951e1c0c207ef7b54539757", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "3af0bc235ae2e19310465e26911859149beef3465e49cf6b0e44500365406071", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "7f86859b8a7d4f46637f395e0302f92880584234a29fb972c785159df3cf630e", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "9665d14997a5ad216285afb177829f9c5ce49fc828880acfa0e5367ac6fb3505", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "941ff383b66be24da69d46c09ec5bf48912d14e2c47f6ef8cc48932303b26f40", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "afd9b949f6d85708e2ef177b13270ee82177f752afee8cd6325e410b300e79a1", -"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "5e353789b343b34f75673d28ed1693020cc93ac1430314a41289520a9149f499", -"T3T1_es_bitcoin-test_signtx.py::test_two_two": "044a054ebbe3715d952e68d58d4e91af7abbf3587140e204aa89b444187fb4e3", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "867fb95e46e45ac42cf83258db683a650a2d02cf3d404611ce9c900c740c2c3f", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "f3736030b93e4d6684b9d92b9614e895cfd3b6bbf582cb9f292c7a3a77e16e11", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "3c5a8166615c162f2247fc941a4f107c7c398d21284a8017594fb6a9a6b8451f", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "5cdff9979f27e8ea902c8df95f2eb95300d909d7f6ea72c4e4a805393021218f", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "867fb95e46e45ac42cf83258db683a650a2d02cf3d404611ce9c900c740c2c3f", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "e0401eeaf73672c74b2f38ce2b6bf8e0c3525d98aea4e8bc1e3d42892db9d749", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b6ca96163d1394837ab31cddfac6ad30314280e6edde86693bbfce71d514ae09", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "f17298653e270c2ab24451e20e27dc5ca983e5cbbaf22e9e66cc80166caa0c2f", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "276a4a9f3154cddc285d1b0986750c07eccc96ab3a920b416dde096ffd31946e", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "e0401eeaf73672c74b2f38ce2b6bf8e0c3525d98aea4e8bc1e3d42892db9d749", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "8b682cd5c2fdb4ec503fe057e18f824dd6f148e6c3f5e4dbec30aab465620576", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0bb185d2eb528bffa468641a90d0616cbe4a4d3663eee191c96d7e0718d50261", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "3beb43dc9b7149b190abe4b993243d95d1e2b2679a5f881f72916a1d17a26107", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "a550f07c8fb006a832bd0efdb1fe9b21819f404fe1586bddb54933fef86fe242", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "52948047d73e6f4eb3a8d8a5a1de8a6ae7c558f94e36aaa803facd4235b68f86", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "e867697192738e951ca790b5d023c978f7c4693d598ed33e58a163f225e01a18", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "4c57b6df2eb9fb386b3f5870cc0ce1bf197f45c6532621364768653dbc6e0637", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "22be670fc40d29a48d35beeb4bd5f92e04c664277c760a436bb3e55af2a436b5", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "b80eb0dc4866ac5f5bfb981459862315267818274642ceec1feb17535e5c2c5b", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ea66b207e6a9b96d083481f894afb7a839534e47c555f81e759c8d4b9e6023e6", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "4b1f0763ba1438cd3a2632b9233de30d8735a850bec462272b4a74bae8c9ce12", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "1a0ddbebb931ed3b73f6842f2608be4d92db20b4b8a11e8f6918bc626dfee2e8", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "28fc508b400bcd6d3bf50a65683ac2fa6e96a2cd04e6e1aae6e70da45702d9a3", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9d13973482e92f90e9b5921c5034399fb345e38bca88dd90efb3fdf1838e2bdd", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "28fc508b400bcd6d3bf50a65683ac2fa6e96a2cd04e6e1aae6e70da45702d9a3", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "9d13973482e92f90e9b5921c5034399fb345e38bca88dd90efb3fdf1838e2bdd", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "8e4d9f9f8e90ea4420e899d4f779ab73849d4a3ba7b7d11953977ca91b65cef0", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "1fdfe0d59922b68189e8e9ede650f75d0a4a1dbcc4d346e5c1f3828405ee4ee1", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d59c1699da759129f99e60adcab6ff4d3cd4bffd26eb7d588bd8423aeabb0808", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "16c7cbe011d6e0d4ca9f3ae4a8ab61dacc8c0f4a31579fb6097973b9af24f4d2", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "1b51ca08793274f6140ff8daa9ebb3b35be912898242f7a3ad47078cb9c0b512", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "2727e42e4a988329c5bda081152b85271ece3c2c889dc50d3130e3acc7af8930", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "7a5343ca3c4feabbefbcccb26338e0bc334a3338abcbc777b729fd1f8ed16844", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9388e67b8bbc7d3d4665e747cacc672256ca06be8c34e0f7ed938bfd70226315", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "483762335c04510b3a353a3b8ee81f489b2608f10e391e6a6ee186ddf384c88d", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "483762335c04510b3a353a3b8ee81f489b2608f10e391e6a6ee186ddf384c88d", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "483762335c04510b3a353a3b8ee81f489b2608f10e391e6a6ee186ddf384c88d", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "483762335c04510b3a353a3b8ee81f489b2608f10e391e6a6ee186ddf384c88d", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d1b2f49eadf6e44f0f09deb110719323476e6d6b019a5a5fbfca9487cc938ddc", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d1b2f49eadf6e44f0f09deb110719323476e6d6b019a5a5fbfca9487cc938ddc", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d1b2f49eadf6e44f0f09deb110719323476e6d6b019a5a5fbfca9487cc938ddc", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d1b2f49eadf6e44f0f09deb110719323476e6d6b019a5a5fbfca9487cc938ddc", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "4fb482b7e44a5a65a189d6fc785d7d0a1269d8639f721d622383e3aa35732a8c", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "5ecae74eb89703495ef901b55704308af2a8d7c67b224b8b1c26375f33120734", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "5180d8fcccb291ee2fad50c3e7411ab719dc7256eba952c8d1cc67477e6f4d95", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "5180d8fcccb291ee2fad50c3e7411ab719dc7256eba952c8d1cc67477e6f4d95", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "32ccb30ca6cb06f32bd323353093f5ba1ab30a70119fd73a0009ac4cd7173c8e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "b0e16f673a286e37b73a4cf2e4042750d24ed43b08e010e9113aa90279651d51", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "477fd209f2b58dce88619a5cde2c288bf1129414f3bff0ebdd0cfd96092ebf9d", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "32ccb30ca6cb06f32bd323353093f5ba1ab30a70119fd73a0009ac4cd7173c8e", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "ae2b5ca1eb554a268e03b913a9d6fc9c697339a96593d3f3c4297436bddcb2e0", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "8b90b6d73ea798d6e4ce97b700e7ce782f151fc0b53672d22d12311e0738c795", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "8b90b6d73ea798d6e4ce97b700e7ce782f151fc0b53672d22d12311e0738c795", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "8b90b6d73ea798d6e4ce97b700e7ce782f151fc0b53672d22d12311e0738c795", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "ed7c6d25e229fb92ac8ef44f1277441382c4ed3d5f79f3bcd01c4088ec687ec7", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "8b90b6d73ea798d6e4ce97b700e7ce782f151fc0b53672d22d12311e0738c795", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "c72c02d6b3ce4edcdea5e682dac832d67372778e4bd1db08983dea5598ccb25d", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9f1e2a61e146de5cd9bb8b737f65c2967aa5a56a04f4a355fe17b1d532469aa5", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "91c13b7ad3336668a64599fe9c92a8b1f15d03d3197cf7ffe6d41b7e9598fe06", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "016e16d7bb654e50b7b44833f3d06af9113f8af776e7ea62f169c9e21a129325", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "be31f34883172ca2fcec799f403acb5362c954902554d7e22543751d19096798", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "178b02f8129c4a5e1ce087c61eef02972d1d483708f067a8483a1ee5dc6caf8c", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "841a2b5791dccdb3caa9b6b779504669c9ba3058c944360b0f3dfae306616caa", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5d26dc015f885f25e7ba63b9862279310010d1adb99e6e156446210d8b8fa1d8", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "9a1845928d9e612f6903c952c921d779314dffd3ceb1f13d5b9fe0bbaa317288", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "7249a0508f4dc1a752fba739bb7ee6d9cf2d275e6da266d2150799d83b6ffe5f", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "6795514f65e29df994256c343d5cb90f0de14e54ec8348fb5faa730b018e6851", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "5938f798778e2e4a554660fff85eb22ef3c655123a140452571b4f2e4e797dfd", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "37e05df74d0ce7e002895ac115c658ffd901152ec3cd627bf29388c346cef3f3", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "7f65bc5a07e187f4f1531b0d4ecd1d99e20b5785a3a01fc31fd79fcb5106289f", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "e0401eeaf73672c74b2f38ce2b6bf8e0c3525d98aea4e8bc1e3d42892db9d749", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "27e7ccd9323d71147c4094c61b024411d3b52e4db2fe858d17d74a393263c96b", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "71a6d7ad7b5628ceba6dc639266c5a23cedbacc156964cffb2d4351fa57b5f80", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "02bfa52834990aa215bcc2217b87a8a23066f6f62df82aa67415d6febf17dbbf", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "e48ec1ab8b30472564f3525357aa79401910c5374a56beba16621dfea15f1f76", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "edb8578b031fe4339406ee2c4f9eed675b3875e2bf9d49ba72b04d129751455e", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "b2d9d9ae55e5cf6a73abf53db7e0bb813c4587384e5424a210777ec9b944a44a", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "fb82b274bb1784a97f7e3ea617af8f9c2e44d929f9332ab30c691028b704cee2", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ff0535334fe20a13900687e45cfd2dd55d40c2d173b68b9a62c2dff2a0aad093", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "1553a7173dd6798f74255a02cd8d69ce96394a3bdb5d02af8ce2b0423e8b8ae5", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "370eb9126f3a8dd5e545ac218dbb0d3ea8e7c587360b2d1c236f47ef7f68e4f8", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "5820197cd8d51bec41e0f977218a043f79c203472bad966812b04b296b8cbeab", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "96bdb67ba6b79b861d3c1480cbdfb24e667748c28ea7990a33f8f7e65b7aa435", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "bdf0f5d214a996373e6ffdfd42261d90ab463d77027a488621e89440bcf9c67e", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "c6e8732abe2f3849162b9230401585d04e7353691418ba810475234a039f0ddf", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "51dfa28cb9fa3adcee36b66b6a7c78afe96e5ec5a32f5cbd8e327b26cce433da", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "88654f42e74d8a964dd1b3ce6e30dfb2e035c296c999117f06a77a4b5f585e56", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "183d50f16e8c76d3a080a399abd06cc295970fe3ab48c5818f7a38dcdb82c0ba", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "4d3d0c5011c9bb57ed2a15f91b5d7a53b3be07350f738a8784261abb8b805380", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "c1f2635913ca475c1fd728a0ec9bc6616f9c51a697f0a2a6a3b82768f34b248a", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "631eb9cdd56a030879f86fcf84f1a230450b2420de25d5e2df332d44995d1289", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "2013351d56c3c049b9b3c0ab9dab716b90545e39f2d0f31beddfc5e57ab0a394", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "cb2b3d3637159a3b5fd13592cfb7b7fd6e45c4b8cd10213ce75086e9d020b7d6", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "9ddbe2ec5b944605dfe10a934dd40262c504e0b5f3f756154a2e0f4f83e8902d", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "e2cf79c8d22a44d1c42cb0a575c8fb77d48a2c9302a219e979b37d1833796b79", -"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "69012e7c19c7096a8b6526422a4fc9d2aef25005f97c6a8d71c63473f56eae4f", -"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "ef39077188b939c8503bcf749ed14a448c261b60ff05be89f638c0aeb5a22200", -"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "f1a4a3ca0af0a8b59330871f1669e294ad3c3ca4e8406e97ddf8f91849f6d44a", -"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "69c62341158438efd63eca3a345f439210c3a02a3f57eaceb23ca83e322dda6d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "b4e332c913f9ff9ec56b15380770379741f4fc1acc44553b3802d1263fc55171", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "93cc7746128a97bfd4068d34f3e27a6cb5a54d97279f6f14a1c31aaa8c9c47fe", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "947e633a8847ef0d5cbd835d957e1b8a3da9119d6fc1f4e7d9169297692b3fd2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "6068850fa81b51cb81d20c6a5f31f4e6fb02e27c59be856277bc1f1ff06c1441", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4c10152ac84d474545a64270c3e7a23cb23c5e0f0ee528a9ce615063a21283ae", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "99880828b7273a45a0f64e44cb0f41e04e712516abbdb498af1d733ca235d41a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da934abb78e7c5f8667cdbd22d7c847fb9d812fb78112a09a253f2163e49227b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "47e997593d0d5602267b32d4121f6e632e745b6318143ec77adda7c836f7add5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "73e02643f3a496e859e45e2890f424023e2ec37c973c44ee0619ff178de85192", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "90ff9b60e69376bc4c82195c9a473b03086c622ce269fdc424bcc8dd5cfeffd9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "7b3f86d6c16ab077e0d1992bd8428d5daf6ae80a7d60629f4dee5418ce4398ea", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b82e92bcdda2940b7964ab50a8f5e55a588630d71cda44a2f1a979b7725f6be6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "750d536747c4c3075b5637b34e67c0365eccf905063294e5cc9e127181912af5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "e1eae5b26e82886161d1725db64b7fbaec011f0ec115e088885c6029b1a90fb5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "36635c9c0e282b2db80d138b5b9fb5a8911f7bd4aa0126cf61ed1718eb5c947f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "e75696e4e5907ffb75b2d2e780cb0afa82e28ef59eea79980b27438a2bd3d073", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "827da2df3f1df5b1c074868b9cb0ecef818dd5d5ec2a84e97a8097f8349331e3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "fc8c856824663b7cc2e0adc852089a578bdabfeaac290d26c33e6b471b7029aa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "945c94921fc4ef43c1df2cb8da16abd38e07ad3be4e4854044a70ffaa82d519a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "1aa154ce24eb438bd316abbf6f9deb2b6427165509ffd793cacbe00a4d2906cb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "51d603fda9b55c4feb6385ac7fdfcf6e58a5bde046779ceafea9d1ba6500a719", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "a345b2bfb9dafe21d500baa91bd1acb4851e32e2b6d070006116f680e4a30c9d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "6d34e17bb7bdd69eca2512b0db3f4edec1e24ca06264f1ebcef93bfdb5b8c332", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d9c57fc2bb143a9a4a56562f39fb4b837c790fa1bda03390e1074146480f2614", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "d15501d189a37f949bc34d8abb60c037373f8da0af2977a8ff5afb44e23d2d75", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "31d801ce54f532bac5c13f8d58af523d5d357b9a8d609aadcce65c96727103a1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "635c71ac5d67c811f64c2bcfad6a521018262e0038282b19b12f8aca812cd39c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "7e671a655665711adf36dfe3f7ab57f6c01d42b6aa99ee162666251a806d11a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "09f039aa68386166af16a4377bf902b612877760efaba33a0ed9d63c3419ba0d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "8edf598c4dd51f7d69048b5d23b497da17903a7fd6f37cf30cba40df8fa9c6df", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "61bd649e0d8b4c9424abd47d36a5cb0f256296062d9d6e1e8081c316530bf17b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "d818def2d41a30ff81c1b20e45d530e1921b6920dde01c789449cf05f0c58612", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "291a4a75e998f96cab7894dbaf5ed07d47c80f1e1d318a76512eda7c869eb1f5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "d548c2d14939b26644d19e7e2be9dbeae7f73b81bb7d99d3bb7ebe47a50a7b7d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "a6d3487fa58a41fe37c9cfb483a48e2b47be173bac5eb4cd803f57dfb5c97f19", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "171e7bfd7e47c7126f49691c765c719c4a855846e928e6fcca7e2eb0c13f459a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "049f861731522933520a42eff3649e2695b8ed927a5413bfb406bc86d01225db", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4cdc0da60c410b41ca26d78e61fc404bab9acd4a79275c4a6ab443e84b7232e5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "5d98f72792a9f0ad91c7052e2085edca6ac0c3fe0da6346c53c888a30fe1115f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "1156ee0314ff7f6c11b280a21f7bfccfc34c3d78657ecb498b6bf8ccde71a776", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "ba30de0732aaf50ffcef9315dce3a15841c91ffa05e8e5d561f21a7700a37b47", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "b70dc31a671947bca974f3cbc5b35faf289c4d4d170f6340a705b8dd3be134fb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "ddf0989de382e3b65df52fd7ced4dced1c9c2ef3ffc681d946c5bbe3f7bdda92", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "d57ebf9f13c0d1be9a2d9e1b503149a984fa3a9358a71bee82e16ba7db49da9c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "e38fe6c07095e0e50d1da4e022715e1e36a9d04729555c022ae972cd137e977b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1f980734075f2200124b14944a3fd60bcf7b2b09227a427c2206c9b4f501478a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "06b965fbab630cc83a58f7cf5f08bfd38f06c2b8e65682fcdc12668285145941", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ad636e417e0e9da091a8940e718f3e715513eb7c6203e96e42a74ea8640a0742", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "57db4aaada3be9d7b3a2d55a9795be8157d4f76ce9b63095f94dda3d9f907f74", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "262ad4d07124ecad85fe9206dd937810e6bd52cb64c7a2b6d6100d336dc09291", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "7e7416e753c1e34812a347b7c76771ac84381cae8207de8bb2e591a3871d71b6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c060c3b799c255864a9a48ccfb7ebbd6a1f2a04291c75cef7d45ac7da5f0f0fe", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "9eb8be2368d60135f910b537345575cf4b4cf1af04e6310a5d2e394d353998d1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "8307932a29b2b6613069f00d4d79542d9b843296a3caee64e58ff79606b80970", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "b9df2481dee13e0e86bf61b4dfd69226b461ae4b4a486b9ee9ce886ef37e0254", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "4e2a20d768255719dc13347d4b34c260d0988b9c1cdec98bf75c9c778b08a779", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "98bbf2eaeccc609c64ab28296502885f47ba097271ebc7c145594b3a3c1fee23", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "1561f899f3676a4e4a3c05628324bd52e995364be8fbfb5cbd3d4a553fe0a8d9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "add5bebc5d9b8778171d501ce6483be0b443305dd6f3d0fb607c5f36d406bf31", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "bdcdf893e2e9fda3a0454432dce95c5e464edd785311ce9d1765e2a7d8791c91", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "374dcfcd45d2e371a1c8804efc0ed469913e76323d638b50e9a7e656b04d99e7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "a0ac3db24c64c73f5d4519b582619b9b363405fa81405615f846836431d77e4f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "46c5c4e83aeed1fb27ce30c60d75e6ac7cd4c74f2e8e45507b08f0829a9aae2f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "b7fe55ab64593d65544a1f2127788c387c83bb908538ab5f042dc3238d33f3d7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "01580536544ff19dd8ef63a59e2778a9da075a50420500e1baeef9a9e135936f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "afaea43fb24bc39ecf6f7117b2475d693928e14f01ef7f681fb8f061d8877c5b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "607b4b18e0a178cfc4cc605f2d813cadfe0dd52164932ee8cf7b4c4525ef4789", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "efb23ab454f1b9944391ddac09419c01e8862063dff747b522db0f6922933d10", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a1aed6b55d3e0e28b525f69bb0263bcc7f8a6110e458ac247bc903e566005371", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "f22053ac85677b30496a681e5957e1aa3b94b8524068166bd71bfb5c478ec6ba", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "e394a8df8c0d8f7cb3f0395b159aa7b646be2a060a2c805322865ccb496d8a3e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "cd475d831cdd89f0bc96736736ff96eec3f6c7aea685edefba2c79d756bf4bbf", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "487dc046a246d644b4755ea51cbc9bbfa97ec7ee37f589ed8e416cc71e063a12", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "27b5a3a62a4fbec1789fc3bec3fd945246cfce5e6fd630938129b282d2871425", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5ea1e78bcc2ad214ff522abbf601c63de1f78d1285d6a2ad002ec43987f4ffbe", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7d8a2b65336e4f321d068f9b254e8537c89ad9dad1546007f5cbcbd471617dd6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "c967780186fe0d4e01a4f81b0d6733cdeeb9b795c5563bb81d24dcddada67e08", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b1ea5a52b04d44d76f6c11ad2baf0b61f21ccc673377e76db4446cda8e0168c4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "5179a2387e984a6f786e1b2f7a223f756eec5e662a353339e80a5ac6b735337b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "73e0acc8b52f2e839a1ed346253849bb6ec6509abc947253ad74d653b2d20337", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "584ec0178c515b8ad13e33fb2b11030211f3635565cc7aabd60961c4bcdbc6fa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a782654d28a0f479892d0d3c4305cf46b281f74a687b94a8465dd25e8adc7429", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "bc57f2f902e151ef2630dea04b26f7a4b645b0ffcf34bc87833508a06bb9f624", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "ffe6eec5e0a95a6c3302c13eb7761b617b3b828c1201c80a49d4b68a5db65d50", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "b0aabe77759b56246d804babd09a5e813dab1c4adce20768eadd43c2f02c75c2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "11c62ba0bc20f3c8442380abaeb91aa3086645c0e11f078f7d409f2011f4ef92", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "76b08f440b0976c021850e1914104cf6b596e783cfb20b99ef2e575fa26eb033", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "b9cd550aacec68f92c89ad3e9d71cb418278a02bd95b565ea904f8610a6c10ea", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "516666df32cf5011ad91aa28fbbd8469f4f8bd7c33ab42f0456f08bd80326f55", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "221ff975d7c393b0f8788f38b51f95c5c39f544cb4edbe41c4035f25cd891a6b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "341afc9f88fc2b9a453be4adfe503edb1130b80adf724e637bc65d408421dbdf", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "825fa1d6a3e9cac138b6837bf48df0b03f1cf70ed7cf8d733c738f088d7acc59", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "b38a7899d856da02cfca28bd954feccf485bbb815569f7bdc1aa8fdbcad47be7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9161f42ffec79df462f3d5f5b08ddee79e6b3baf485d783f7415f462b3ff5e07", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "60f24c8d9e855e5d5fc4bfd4292b7cf4abcb04b45ef25e943941ffc437a5836a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "e997b0003e8f20450fcc2635822141ffd4a1b1bda9d9329091c9aab3aa745f8c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "adeed4ea78dd016d869c91fbfa7bab37c0ec978446c8a340d755472e6d356fd8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "201d576747c43eeeeede9bce45880f7c077eb33d665af29dbd491dbcbc6de483", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "8a0f476ad8ef2f2049df14acbf13965171bff6ccadd11822bcde78ebcc8c8582", -"T3T1_es_cardano-test_derivations.py::test_bad_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "4a00052afca0f101e15c36671824577f6b5106c62b049ba64eae346f28e142fe", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "f277842547868e079acf716946ea18b80b3ea04e28496638d8ec0a030882a174", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "878ce5503d3eb7638710cfd645b5e68bffd30a3cccafa3186e764fe9f76fb1ac", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "421d1e3d5536df670b356bf7c693866a0ccf4e424ec7f492b08770da4f90bef9", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "86619dd30fd883330e10d4fa126aafe435b31b4397eea05031bc6238dd59d0f1", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "c6b2d83742d6785b8e2aa6bf93defa3bef4254e5c445aa02c65aacab063f1c01", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "0504f9ed35261a01d0e50b5a9b395ba523c07097403f41c755c65839b75b2697", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "9fc1ddfd80dde9b1f1c3cfadb129642f24588c095d3f0804df5df5003aa1c360", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "8744537783017f7a944aa0c1a4cac06f3906f8077dfe7617418e3ef84654cae8", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "d47e9dcd7acd5c7faab2bddbd2876ea4536509361c9ec543572d2603562ecb2b", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "e583a7858ecafedbe610464a31773f0f07c66155541865541cb3912835d43866", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "8c999cfe2e1de8eb46b6f585920a13523c20a2e232e3329fe1d9be51cd0ce3e7", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "8a1729e25a02865bf9a0d4744e00447406fdc252a163fb8d084577dcd34b70e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "41c7a708dd4e81bdb14cd401ef19f320c047e097351c7e970e3413777b807a81", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0ff067fab83938a774fab0edea7989712c81beb08c17f807dae56e4de63dc298", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "41c11b05e55e22957f9c404f1fe1550c48cf208ebdb74060ce68f23fbd07c8be", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3c3a553af8d91b35f84106b0bcd9ff1f922d1524184632a9b8db3b293b8db7a5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "ba20387166438699a9d08ea750248e1d6a2f18df014cef53c785367c1c469879", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "8e22b14e9ebf8c84b653b32e61d424e417eaf10ea7ec2a03288f92be121e0175", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "a878bfa26c6fb1f7295875d2d8c13497b0119504d0a418ae53de8972a87558bc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "1a2ea434616a8cf92e9c17715ae579800102d56572c7c8e7655d7b39adde55a5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "91a542f48427cb85700b3fe569fe04ed6443261a8b4b434a940dfc3d4aaf4c7c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "9310cc6ac80b56a24c14a5c2e4b5c8cf043b5d925e52b55473e211759d436c39", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "fbfd813e494174d533273823bab214e605f80bec90b3cf6dd016c06c31424c2e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "7e1c11fe61421c8f97c54931e7d106bef602f95edc7bf30004e64f91fff4b9d3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "7e1c11fe61421c8f97c54931e7d106bef602f95edc7bf30004e64f91fff4b9d3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "489392a54eb670cdd18cdd3c7d78887346bdcde7174bad844df4478a3c0fdb26", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c71d45bd773fa4411424ecf86cb83859ef4f8645439fd3f08dafa952f654515e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "3469f3deeaf179aebb1220889bb90781746fc564f4f5e442d52eb5ebd06c4379", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "e9fb6a01ec1a24b6f799fab694b4198251d9fc31e93dcbadcd71b7b7058fb3cf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "39bc5b18b73bc4968ea650ab011abe42136e80a138cca99daefd25e936671ddd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "b9342436cee36298e094456f831f6bb0818fce31483e12846eb1ed15391b024a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "b5701b00671db96d59daf17ef091247fd0e1864da48eae457115a9c097533a15", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "c6cfcbc8c151e36f7311d4545184ac95d614bf97b9cdd362c7a41d90a9b6f9e9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "e3fdc579c428b06584b2b291571a60d7bb8ed6f50dc02dba758e73bc0b10cb92", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "39bc5b18b73bc4968ea650ab011abe42136e80a138cca99daefd25e936671ddd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "b9342436cee36298e094456f831f6bb0818fce31483e12846eb1ed15391b024a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "edf6bbca08badacb1bdd491e7ed69ab46767f33c7de7869d4b857cc0f6229430", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "01f362c7c35a4f985bd4b49d3d413f423a23306ab7b95ba15d6e6e2217ffb143", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "e3df1de18befd377f96022e52b289e3febe6f1ccee68d73df7bc07d5b94283cb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "157aad7b8d83813b85ec536ee9bec4ba2e7cc9e557a19ecfcb2be3ed9d983c88", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "92476483223e8fb7873f6d6ad60798388dc9fa81826337f218f320672afad04d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "c92b973042acba36f864cae4ed6b6590b645ada79319eb202fb0bf46a4cee33f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "8f0229468be01cb4a2b0c9d304ca7e4ffc1204b6c1f1b79815b0e5616c817885", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "fe00a43e4069af5515209fb5ba8a2ea7fcf0734084671ab909c58d0bde405024", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6dcf7653f3d243b960905e2bca9e4ef5f8401a43a815a3a54a142491a409abc8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "da17beef99bac91472e9676d60eabdd507a2b2b6144ad7816470cf417cf9d003", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "227aa25dd71a00819fe38b80dad878f8d19df6c63a011eb6bda7eefc122d53ca", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "96dc65ee59b22eaeb0abc3c795f27ddb77512a7073640fed351ffabb0a8198cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "7ac2448eaecf0b1dd15355810e94cf5ab7ae485b15a074456c61214ac087bdac", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "7b0eff81524c31bcb0e1081ca9baca162c7674f8ac612f61edd5e6f3960e7268", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "1bbc1f5c79dd1daac86abd9a8eb8b5ab4d871881559493903a673c764cdfb439", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "b86be122a6a5e40df67d4cf08cbf43daf22284d5634dca28119f0e9ff25e1a89", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f8999ba7b394587198a264bcb2409784f53a1c3f31119db03e1a960d0fa3649f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "6a7b0fe8e7efed821948a12c901a793e5bd4aba375c93039f4db37fa64962b70", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "fe67a6f71aacdb23b353abee9df3da3f9c5c3c8d8f1105320b3406e049dcad47", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "7df8923f10facfa49adf2ef6fa42c37d489aa484a21ece83242b355a4b300523", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "c06d42b563b71fae5eb14f47d7259f80267ca2ab4129871575945af26de07f9b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "a515aae9d513c08848c854fe32987d2859544e3c30685042a025d4567e579b7f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "2469ffc81e4d75e28bbd0bd171d77036e9ef436c1a2df838fc9bbd200e1a3fc0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "5a3dc99981aa83fe6ed4cb040546b25b85607cf506d64024808dec985ff7cb86", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "29dc6474e7abeb177702a45f1061443a1a6270a0eab8b445e897cea949af20da", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "6a0b23a1dacc53fc60120e7f806fabd28609ad33f01a56c76988634396497913", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "5f84e5d343dca6234df3d9ab34f53b78bf1bb3030dcaba62dd62aaab793a1bb9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "13dad19a1f834eaa1ac51a1faae05f3a934d2c9c26b52168bd3c6cafd9c00f7e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "856a69eb53276d5d884ba2141ccc11b436c8853788d8b1beea8fd838c72dcef6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a92084720b1bf88060b7a260f319dd732f5afce7be8cdbb5663dcb4609ebadc3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "60246a590c31ed2d2a89ca47ad3457666764a62c868496b1853a5177aba3a5cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "d607280ec2757a9bc18c4f99f5df138b5fadf28685e69c883d09c15650863a63", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ce49836ca7c00e99f3350943f2bf5e25760bba37027b152993754ad3aa847fe0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "834ee81e7bfc5c28bc942673d7167a4c52391fe1e59f08248dc2618be6e9a852", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "224b7f4cd9e77c9b0d87bb3e604b27bb045cd11b08e8ed32f198d1dcf5da8f66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "10ae0b9c3c13dc0f6163ede18755d3abb547a08e904c347bf09ee64b0932bc63", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "4cca16b05ac679af154f23df422f90d2bba92f6210e2020f183744ab0f4bb006", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9bcb98e971a27262863a0a63beb56ee71e22d36d134ec4436bd89fd924decafb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "765906a61bf9d2f9942749c24679526c3cff688c96df762ce1489dd80359e02d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "bec918f09e6ecbd4724c9dddf9ce006d14447e4d51839b89059ff896bd1cbfb9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "b4bacd4610b6a247dcab291d147ec071ee4090df8bf136fd651b24a035a241d3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "41f5dbf34c1afd1bcf6376fc8e8807f08c399892d9b52702142cb803cb242be7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "9c2fb0bd8799978c6d3d6c22872dcce1755be8586e81a9cf0a01d472fd3bd4e9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "7b7759d71727a55679765c6e547a113c4e80ab1aac76aceb7f3a3b2c2a4c0492", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "04e74677171acfb8d0425db089383b39d1b98f5444427e04e3c6ae62eaf26d35", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d5d8a252e580b61be39c9dcf8db62110759e3bd658c3b4dcab4ec64dcc5c9a5b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "1c56cf98821595cbb85a1b77a97d5c3e1c79c2107585bfdf3592fb27169d7933", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d32eaf8db334f3df56a84cd810cc27251315bb8b31dce7835ec8e35ecf7f6f17", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "87329e0567390a8a149651fdf37dcdb47ddb2a7986084b096b1e22ec4bafeddb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "8939726170f23a2f3e3258ea263a92cc0ed1ae119af8079ceb8172a1320d7833", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "c87a6a85e4bf4696a6e5b491064c297c9c1dbc343693c59daa29b0a1759cb8bb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d3a57cdc4bc1e9563ac8fb97614093c02e922ff90ecd8d373d773585646e6d6a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d3a57cdc4bc1e9563ac8fb97614093c02e922ff90ecd8d373d773585646e6d6a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "f34e9a199359bbdc65865ed4c46aada899abf1e53f0f99fabbb12095a3efc77f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "2c0ab9d086103f8204c58f4d46089ad6d8facad69ba133bca21d9e342eb149c3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "2c0ab9d086103f8204c58f4d46089ad6d8facad69ba133bca21d9e342eb149c3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "85840c00b37072b254b5abf39b6bfafef9dda14432c59434f62cb05f82fae67e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d142073a5a1332858cd104b07b72e37c8a104fe580843c1b3b3f4dc2cca3e0fc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "7df802b05dff57feba777abfc87471773de0a75a796eaa19fbde000ae2769f50", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "fe53d5e5ee8eb3d2c0f727269955c7cd66b365067c39d423f4a0c5093728dd8a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "847dd0dd55888e250cee3c1f62a8ac7bd5f2ddff9a4bc8ff2e7a38daa45d3c2e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "a738defcfc7886d43cb7c3fdd2de08c24779e76524001df66fdd76bec32025f9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "88a52a3a70bb2736ba8ef2721a1c3593e1c8634f0673779559e1890156ca1ee8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c78e295d120674548f41119ee62c65893378638c89a2af2ae7e9dc1cff2b6b18", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "875efb930d496b66ff2e24e4def68e00250db1caa64e29d0937945588b1ba9d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "b79bf92e53468ea630078036efabf204e3ff9b9b921add5e65af35330e4e0aab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "41c7a708dd4e81bdb14cd401ef19f320c047e097351c7e970e3413777b807a81", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "a878bfa26c6fb1f7295875d2d8c13497b0119504d0a418ae53de8972a87558bc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "87b91af082f9db1a47314d0cee9950356322adacf8a4a32c55a3600171d44012", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "4ff3d301655765bdfb28b5d259a409abcf3dc62007cc427d262f43c4c85565fb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "4ff3d301655765bdfb28b5d259a409abcf3dc62007cc427d262f43c4c85565fb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c99d26771a253c51cb9effb8b9473b6125e9c305ffffde3f57487ac468a3bd45", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "6f7771e79ad15de0504c54f05fd67687001ce0a3d0a8e7e46c7671ffa241af83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "3b436e1a1b6752c8445f266a7ef75d3bd1f87f2f8f8c561abd3227c7b1d6f61e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "2553db9f44821b7936934f62dc67c96f8fabe63892393199b8be0b7e2e1e7b87", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "f0cbdac6e6027d376fba2aa09bdb6513637f74ab0369a5201ab093b5f8ef8c60", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "f6455a1e18705d1cf29c79b2f6ae3e6367e25dd56dba4a4b38e3e438614e8dbd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "5bafa37f9aaa8d92aed18af98876be3dcb46a7a9c28ce6bb8a620dd466aab68f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f93c567afc5b801e922d9176331b9227113a536d91cd249d71338a0d28047327", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f93c567afc5b801e922d9176331b9227113a536d91cd249d71338a0d28047327", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f93c567afc5b801e922d9176331b9227113a536d91cd249d71338a0d28047327", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f93c567afc5b801e922d9176331b9227113a536d91cd249d71338a0d28047327", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "f0cbdac6e6027d376fba2aa09bdb6513637f74ab0369a5201ab093b5f8ef8c60", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "3eb42cd26866ace8cfa68ce48d902620b300cfde2b80cb516fff03d6fdf15348", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "1120e2f205dadbabb46018d9b50671e8e67cc257082755c1e19cd6a7c7042d3e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "6409eb7705300cfd8d85d69e7f83b54162c8aff548966395786c7382ba58f2b6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "1aac47295eebbda6997af2f5c04d7396d3b9818d7902f32230a943e64a9af22b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "4b1f4b8c9c1f66ccdc0c626ea602eeb6c8ab2af947f40e268f0297892449d5e6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "0aaa20808b929d49c0d45182347761847e00a5ab90883fa3b17abd6359924bac", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0b7ebc0e4e0874499620c91b87a3259817687cdb9730952823d84ee7b73c3252", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "87973b0f586b52d020cf5679417d3e040b80cd33b34e57be38c9d1ca13b77284", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "f4e6727a7411907d7cf039cebd0a0e5b420bdbf18890a8b020bc2f1091c0cf9f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "99eef4826e79dc335dcab217aa81b62cc7ee6257ea19f862a4b3dd2e1d0eb551", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "465ec150a2b05add1a1d33f77077bf35c95a252539298e96b8f38728f0c42630", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "4ff3d301655765bdfb28b5d259a409abcf3dc62007cc427d262f43c4c85565fb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "b53b07d3243a44826458581f942f4ecc9065878f5f33e2bfec4e674efce609c9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "24e7fac3532b55cbdc435aa16d4cea70a8ab4879df98f89f379dce2ae7390bc6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "554409de26689a7d48097e8bb44fb468dd69ff9a57f5fc01fbb0d5d9655d4f15", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "6e296d533b140259eac2b450dcce8de90249833c8e6ca9e94cfdd5e98d10079f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "c2133bd8f5947a822c046a97c3433df63d2c20c2e3aad9b8ec5dc8e120b8136b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c6639571d7e5a70a1552f0f267e22c3b385724250f78027432174b71d1e80d16", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "b3648c0a93dea01e50b1cddf0eaf3a313f1834e55ed6753f9744233004545431", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "156e0a9c1e14ac084bf464b07c9445db0fae5126a4f99ce5a498158088b5e7d7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "00442f54de0f09f78d70f48794a135c5f6b1d4e3cc630dbc0ea76d40a7eae3ef", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "e720c0f807094d8618fdc5471f610c2491fc7794d931dc3f29995b48b540236b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "1ae6aa24ad98b63f7e918af0488c596e35ae50e35a3c416fccc1aff04f5634f3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "37169165d4b4ac0df1cd3f4b436a92c0474d514856fa717eda0027979a7f6232", -"T3T1_es_ethereum-test_definitions.py::test_builtin": "07bf80fca6f7c9e8e57dc7aef792435d959962e054161e44ebe72e9ab578cf6c", -"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "48377961ba0ad46bb299998bdfde90e3eca35488475e703e2ae98efc3001512e", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "765f52d2873c86cf86728f9c848f4a6b4730c35fac29218232ba62496eaa2b44", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "37c1c923e6f1b23a47dca3b16ddaab1d57e88f14480cd8004128ab14714e6101", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "6062b8bd9bcb5bfd46e984deeafe7c07ee77efafe61892b1137127000ca1b1a6", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "b0478268d1042e15b639c1edff2443ec0bb9e4c7c863e482572ab2a424afec24", -"T3T1_es_ethereum-test_definitions.py::test_external_token": "2eadd2187c5e647231840bd7f7c30b833df6e453387327abc6ef88b644cefc05", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5686550fb42c45b472b84c13a05642059bea0abede8e43458801770513758a1b", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "99a62a730d6d0984302932220974d588abd6f6145c3c0f554a9bfcd59a864b4f", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "bf8b587021be730929be24b08ba6a589c0b7ce9ab0d090a55c3ed8c661485b3f", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "5490e268669e8f00735ba8d5134b7af2a29bd3b94a2bff7e9b1a396195da8980", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "bd9060c60b3c8160f9df721d5977b18616fe7d8c9455a1bb6b5564789c45ef6a", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "6785cc7a1b4669764c114892eafd80692a304957fc48ff51a984a2f248b24c6e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "fbba35983f96e53d4931475e53cefe2efe3b5eed4b49afd6ae4018095902119c", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "a4d0170014dc94c5aff9f9cc85e74395b539b3df7436d1031ccfa709995b7d30", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "1c3ca94afa8229319a4a538e9604444eec716b3a6bc75f8f3f294e9bbc1a3bc9", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d72b2dbac26c94b3c3f357fe05385aa4af904f893f51385011b5dbf20b05a9d1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "e3d4b583e104e43e595572f08611bc70e740871fbeac213e7d9714553ff311e1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8c5c72d26610811ab3e608f1cd6cc83cf249e480e7a0bf4c5570d248b834f4ed", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "b41b162853a4d678ca8a1537ca7840dfe227b0f5b9bbecfaf107633885f30354", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "ea64dd496c447311d0dbf3613d4b130e3fc2d6a0d7ad60c195fc7290236ce497", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f7db5379d51c619ab3f7f77129f098e77ab687c29348844d7648801c32f6eeba", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d1ade87b864c096990a74f3ddc69c59a58b6bcd2400ef20de6a87ffe8576ff10", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8ac57aad932f9f7a80d9ab6417cfc4d2e56bc6adfdb077534bd3ae27c6fe4122", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "6c9bcff697496f35aa7802004985ba06456242b0ea9fdaf22d17547300359b65", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "410e47aad793bbf9c88280e594526c93ac955a97e9a9a7c26f2561ecd98309e4", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "8e585b41ad02d35ae93ee1f9a6b5c85a76e58f650a6f65c4f406700974584607", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "1c607bf7a5d68bdc11cfaebe7bf94d4b682d4d69beda8467c89c2dd663dfee2d", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "e0e79766cc8d59493054c72118726f45252db4e385287405b52b69fd7b7bd887", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "3d8611dedc058548ed092a2e1d35b53bcd0a9e98ededcb1ef3ec1dac68a57e7a", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "8e585b41ad02d35ae93ee1f9a6b5c85a76e58f650a6f65c4f406700974584607", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "8e585b41ad02d35ae93ee1f9a6b5c85a76e58f650a6f65c4f406700974584607", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "8e585b41ad02d35ae93ee1f9a6b5c85a76e58f650a6f65c4f406700974584607", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "11411da2e4c2e168f982419afc3faab67cff9a2c936467e6465da312c62ff153", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "8e5341fbe948dad1584889d9ef624c6cd675779389aeaf2e3e031bb3013d0877", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "697b42895da25e41d283ce69ef54ff271432cd615a6e80bbf8b3533b70c36b3c", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "ac22ec40d7756dd89b2e2ec1bc64950dce60c51d83c53e5a6d65fd2bcd6c647d", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "1462973fefb6a3f917cdd2c7ac737ba8feba423c482b856737376cdb35ae3054", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "5abb45c899319e97d7c434d464172571b85a89048ee971e58879af9ca6674216", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "09e74d9b438e1aaafd5995a75059181097354372a1602001d010644355cc8b8a", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1735f4c1c88d05212cb9a1cfb2f362ba05c2e2454b3b98e93ef2829d0cf62c0c", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "132fbb543a0a5ce638624c6faf57a51e50774ab9e00895fcb5d27c0494e5e1f0", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0b7b8cbe1e7c15c9cc49954814068b641982fd94f1a80f1baaa565fd5f14b6e9", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "7e5b4fcd834000647e94e6e2f318ee8b3d4f74fdcf4aefb827747d6e31e1eea7", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "d84abd581e7a8df55345db26ab424cc62bc39daf8d4350e29b4c6ec670fe72eb", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "a5698e91d14b2f17838d911c8ad61f9a9710a07dde087fa02df33b5db4ba4b03", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "3f5f1310e4d466f0d149b722304b4ed1b9066385694d243541ddbf7b10f14dea", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "f5776ca38ff4065ed607e2e32525695c5bde9668742d78d9122464c7534842c0", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "160cea071a3b6cc9f11be5d5a8ba7e137b3c40c6e9354ecda4988dd2c7a52114", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "f6dad9b8b5750c63589fee4df4b51c0e3b7c97018aa33433f713c3bae5328fdd", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "2485943eb107fcd3519c8118da2e15cd41dff066036f5ec0bf34c40cbe782b8a", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "7e5b4fcd834000647e94e6e2f318ee8b3d4f74fdcf4aefb827747d6e31e1eea7", -"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "1efe52c0906d31f418462a97fbc9c642ab467b8d92b6a242b20bb9020386e619", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "d0d809ca8596568c00df86aed29ddd8201b7403edcafcd5f65516b1950b4f3c5", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "ad0665bdead5d1ceb8bcd5b85d6cb1b59e8f1a936b419f3a06160273ff348fcd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f3e4752619151cf51634b5a2896f28421eedd5634f38cc2cce87f78499f1867f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "ad0665bdead5d1ceb8bcd5b85d6cb1b59e8f1a936b419f3a06160273ff348fcd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "16780fb57e5c04719e33e435ef697969a9d82f509980e52e958ac038931ceebb", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "16780fb57e5c04719e33e435ef697969a9d82f509980e52e958ac038931ceebb", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "2d6d20727ca7e844ffe2e92196eab0d85b24508e4bdc15d59dd97853ecb41abf", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "587ffc595230455d66515f303231792f56766de94190f245b9498e4648915464", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "5b5f83681a8d74528b63ceadae52ed9514fd5bc96821c53ebb910d0e9336e449", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "0e6f77db9b0895c5555898e47907486f8afaebdc0fa39322ee3cc8f19461f1bd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "1d05fab01f7d2563e142c7f08097bf7c161755f9981d84b23f128df26ce14157", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d82febb1391e48fdf1178fa98c0879121111c1685e4ae6d7393a35cf6969c210", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "da0903e4fc61465d722d6225d37474570d9079b82f1e4569c56be70d3fbde9c1", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "610e572d1bf04bafd8771a59898c99ec7f9e4f7d87f6befcc83fb76294e38c32", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "d81cae7c8c1e775885466f8386087ae849146d03e2d4e8bab22dbd825d312780", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "49712d9e2a5905580f477d464856b3a61992524bcb0b41a1b47457980f1be7fd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "aa69f618896e227212c01208b45ed57a98820356b21c5717eafb5012a86d397b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "49712d9e2a5905580f477d464856b3a61992524bcb0b41a1b47457980f1be7fd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "22a674ec6611b66ef994fa220c7c19689c8bfb1213d11186117d599dba928b5a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "22a674ec6611b66ef994fa220c7c19689c8bfb1213d11186117d599dba928b5a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "a1a81c4602d92482e211ad53933c65b6757e913f67f78c77cf24ac45488e31ba", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "feebf167337ab857391c20644b0a5b17d2a3e661c1bd5c47f425f84f6ea40115", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "786c8abca09d79fd5b4a5476aef973a4dceee3db7badd1d1073ea189ef7a2bb2", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "99384df64d6e77b0ebeae922b3490db00b8deb08cb8b71e6bc055dc8b4f07a84", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "1d05fab01f7d2563e142c7f08097bf7c161755f9981d84b23f128df26ce14157", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "8e661f1fc984e8bf0506b8e7061c5ff185112379f0ef250904a10adc091c5403", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "bb470ace0a4d3b30c52c5d982e238082845c90e759cc649fe81e06d84e67473a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "36882b62eb481ce8e0c35097a20150ee549c3589aee3e7840c66df94caa14670", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "da6ab5a6cd4370e8f86f12da96bd66ae6690d7e92152995d1e5d8f3fe767ea7f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "9d18ef927f40a7863422d38da79815ca251ada3374265002291be5dc2187ef5f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "96268efde0150d2b5b57c5feea6435a7fbb01dc39e68af9603ba0eb68e04fda6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "d82febb1391e48fdf1178fa98c0879121111c1685e4ae6d7393a35cf6969c210", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2d6d20727ca7e844ffe2e92196eab0d85b24508e4bdc15d59dd97853ecb41abf", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "1b19c4b7073882a6e54aaf9cc4e073f4a20bc9605bf03bac4e72f0f00be7720f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "5b5f83681a8d74528b63ceadae52ed9514fd5bc96821c53ebb910d0e9336e449", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "528fbd180a88b26fd9afee47f4bd27f222a3ada10ab738330d4aa08e2e40711a", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "be21297a8aff2a033e9002824a53443a6a40b0877c6099188f0c8ed6f88a8e2d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "d82febb1391e48fdf1178fa98c0879121111c1685e4ae6d7393a35cf6969c210", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "8e661f1fc984e8bf0506b8e7061c5ff185112379f0ef250904a10adc091c5403", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "a1a81c4602d92482e211ad53933c65b6757e913f67f78c77cf24ac45488e31ba", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "e6aabe272b432ca3484e45b921dc8359b8269d056a57357285990c5783c6c9b7", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "786c8abca09d79fd5b4a5476aef973a4dceee3db7badd1d1073ea189ef7a2bb2", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "b2f894ef67feccf776296971ab84239f1233765b7953ef408fb6dc73b73fcc8f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "31af2cc4bea0a2146dfc907b9a6d722d00356ac6c99cde720eedd577fc513d77", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "8e661f1fc984e8bf0506b8e7061c5ff185112379f0ef250904a10adc091c5403", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "1d9510be06f83d8985017ad946c497172c76552f6bb61e35f01e164f06fb33f7", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "1d9510be06f83d8985017ad946c497172c76552f6bb61e35f01e164f06fb33f7", -"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "b3ab43844114d92ec20f8b89acfc5c95f629df742754da1da8ae194a6683203b", -"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "12f62135ff7cc308440f2eb72692f297e73c5856b40e8cc48d227e93d40d6fc1", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "dfd3abe5384e2485423704d78557c3fca1766dcceea4b7247f53db885c38cb6e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "dfd3abe5384e2485423704d78557c3fca1766dcceea4b7247f53db885c38cb6e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "dab80c1ac8e6c78a151112dcb9c3709c9356a3f20b57dec58c6677bc83df3f29", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "dab80c1ac8e6c78a151112dcb9c3709c9356a3f20b57dec58c6677bc83df3f29", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d2fd5961d09956402d288199c2ecac019cdd5acd0fa3c2e2828f726990cc9dba", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d2fd5961d09956402d288199c2ecac019cdd5acd0fa3c2e2828f726990cc9dba", -"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "6ead89672b48fa3254c801a88c51cd30568e828bed4c4fcc2287ea539c6cb127", -"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "6ead89672b48fa3254c801a88c51cd30568e828bed4c4fcc2287ea539c6cb127", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "2be3a0792297487add58100e68c96572973029ea4f01eb2ab370953316189204", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "152e4d06dd840dad7472920154bbdbc1f37d4eda8d642e6e9a664c9a6c3fa73b", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "681879d3af13892a6ec6c0b3f27a7f5ac88e83c1fce9ed007163d7d2eeca647a", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "f837371af37d514378ece9a6544ebd97a549e8a262c7b09c9f664b8f670af2c0", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "93e0ea94a61128cc8f154a32889963a7e80853fa16591bf2f2c2355869c5d48b", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b6dc54fc0cb6dc3480474489ede29bfdd7ebac0a0a48685d8da6c7b93cf4e4b7", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "497441b24db5cb532d4365e04d6cad828c8556d407f12c6ee58daacc7d16e227", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "b01c02d73dba4fcbe561b6572edfca2f1cd63b35bfac03d5cbd52ce6a38692fc", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "fe34ae83f04bd5b68f1660fdbb6b3350308e30b9d2b79ff632fc6b37debb00f1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "24feac8e6afe6abb67091d6f27cca0fb8ba6afb3139dc72b2287e135d25d6637", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "dca1e5d73b3a172496bf4f85b568a20db3d10f276d71d01a14b006404daecb54", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "6b802e4256680e9afa9d575aba900ae471774a4c35bdfab4987fc7d0b8813527", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "ab921cd26131404fa4e4fc2b1fcb108c176e7c535cb0bf602c91cb185b9f97c4", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "e0e0640037c8b9e385a75cd1bb1ea1d802733492a92db9ef9de3abd2b9a56d2b", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "f39c33b924d1cdd93b914e8a11d4d5dd7e11aa31f843185d87c41f693b80a38e", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "16271698ba41c1717c1ffc25df7014b15e86f4962c1e3bc391d6cf27281728f8", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "1abe3ab03dc03b3fd8c79c7be83a358b581c5077a6cf1770738d91421ebdf42a", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "02106ea91e88d6ff567549d39a53cae852031819114934f1d7216fa5af436eda", -"T3T1_es_misc-test_msg_signidentity.py::test_sign": "6dba641d530f90c48f9aaecdba8fe1063e56c33908d30f52e746ee67a9d03fbd", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "5f0574bf0806cafafcba1f9b4722229610068ad2a2b921c561a2163fc88879e8", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "d3b8443dffca821d1ff0f8f1deb1bd5322475934b08ba8a566584d093808d4dc", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f1624a1526ed17ed6df6dc1d3aa7408979359306d6a84456ca46e57865d7c6d3", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "c27ba84937c41a571cfaa6ddf7bc09f13e9fc75c2c0ada36f30be1a94ab14db9", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "f59e9d8560ed9c0585b4fbfc148b07bcb589075456612d191f7ec4f942f97b52", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "d686ab4b24115e269b69b6757e57ca552afd97849a5d61d7f3afd3c7354ec3d0", -"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "8191350548b19b33337369f59b401f71001736cbf0182f8068ddea1e78561752", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9457fc42b636a928d2a64f3d8f5e7212a0d6351d2e45f623cad1940bab3e710f", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "ce588a528e117cf5cc88b561b61b39fb799e0deaecda3f349f0599fb0b8f9ca3", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c9b50c76bd822cd406b8df4cd21c7c22d0da48469025ac64385dd8790d4aa9a3", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "273142ded2e7fcb95f64b8e13b46f5498006163cb974bc7f292634a68df459b5", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "1fd294f025660e0f8135b9407bebc34b1db075c7f7a79a5a0b62f886aa6fc47f", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "6987a1dc524db37b02ed9516f3b074ccaa4bc5f2f23ab2ada39654e0c3090000", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "841ba98765e8e5765319726cf3ff0954f2643ff26d35417b4925f18978fd78df", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "75ed1753e3fe914f2c37ade95e91cfae540bb83e7cce4d3f60074ad3ce356a7c", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "bc01cd84756bba102aba661f9e22ecf87d961f9c77a965aecdca1368604fc0cd", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7e92304d64a4ee8e120f44ac180cf4e598c3161d6d840d0fbad05e14aeb6cd9a", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a546999eb72f3fd1367ec2a632d633a006ebdab92e4c5c083454b1a3d90f5a8a", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4ab3293d377ccd411bf9bdf338daca2de4b40eb563d2d15534263a614a5ccd15", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "2abe34de41c501d67e70cbd80bb03e07ec64d5c01307d476220cdbd6fad842ce", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "f418201ba970d7c6ce9a31184e65f375e0ce0ada25a73dd851b5852249a26a2a", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "25d2b0cc9383ba609307fedfb2fd3d7a566d3d15af8527d8ed60669b48eb272d", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "6987a1dc524db37b02ed9516f3b074ccaa4bc5f2f23ab2ada39654e0c3090000", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2e886a5204a03f07a51b7996e66e6c4c4542fc166f850bcb377f39cbbb3f7817", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "19d8a636fc2b9f68de62e6faeca5ef8f64ac964b9645fddc71bfd480c447fd1c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "c96d7d2b2fbaff90f6aed7ddc71a5f1741d5c82609b7581c652ade7e7994d477", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9277d6bfd01a30f30ced9052cf2f477b5f2dde4eb500ab8cd9545a87aaf8d37e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "8a0e6363599bfd7f48f628d5dd4ce8e08cff4511f6705a8cbc6305f5e2ab39a6", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6ae3100fe97db2f758b7d4c2137f27882edc6fd91e4b102aa04877a9958edf5c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9f1de4b615b5730aa006e07f47fc7dc6f66bde053ace2abff7ee54386b8a5b1d", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "6a2d5efc275d87685ebd9b6ee740a28944474ace88c9637287dd8adfc53b2451", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "02dca7e6b402f99c21faf10adda882af1921671ddc45ed7c7d92b1a20c5069e4", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f534799e29c2539407b1663c2750f3dfd15e0ece4f7d2a29525a70235c3ffd14", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "bb2dc585d9d705c542f34b1cf6ed8086aaea686fb77498cc0c75f3aa368d6818", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "660366d7b08d251cb33a7b5b1da27bd1e478149ed55d8087999954b45a1b0933", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "e83bb0f4c900af7f1d208923e02c75a07ef4827323d0d53fba564579b15d6ce8", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e560aa51f59a467867e41bbb069974b6e740aba9a8169c150daf1402befbb0b7", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "57b6c381f7361899802ce21d871605e859dfef7eb943a7ec5fd93743e0a1829a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1df76019e7a0562395646764e95d8abdd57c8fd7c2b385ddfcb2f841b8bc59aa", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f626272bcacb67d2026d4520e9c73fbab18a22042abb2e6cf018209b1f596d2f", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f111268d442946eaaaf83fb3dfd73204818209a2bf950362909d1f1aee60a521", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "06e04b255274f24596888f9df669d159de5ade615d4d7ed6fdd51c2b03c6e3a9", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a5b72bc9ed0ba937409ede49b561f4b989924177848b7c974110aa8212c051ae", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "231e903b28c210ca2e4b5e3c9fab250ad96159b750e3ab9bf931941428a5b74a", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d5f923a5ad495ecfd7381b93d19a2069ea5ce714de3b07a799f0c5d994576f6c", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "71d58826a242dc8d0fd8bae568d62b6903bbf92e0f4be1ae0e9c9141769645ab", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "03b4644ad341a23a90afee24d3bc31429be0641f0004ddfdcab3c01985cc507a", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "44fec143e8095450b03288ff7654764dc81c8f08392702cecbf46d7cdb865b7e", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b5f28a410065d34d4f093c67c997f13a7acdd04be6366dfb5adfd3e6ca15c657", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1b25fe5424b87f7b3a29eca7237fc9bf133b94cc554f56a417c5b85d20f4f142", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ae5cb19cb80d34caa3613ee9102d697817d525219807cc05902d0472a8c3bf4d", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6817e7217fe5ae5f7f5ee8300326f4cf1166e9478f3ed76464e84ec5735d00f5", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6051f540fb2dd93ad4779520dff20520365360df6e696df98dd593059f4db773", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8a4ea576af33546c02cca1b5c8eb36d074497faba72d1786153ecf30ae57461d", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d1cec1a5da0ef330c434c29e58a593cbf1f7f19db20180f3f59cc6841f7c995d", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "ebf24ab3839b45a61d7a158b5394229102f168fb75b7726f022b29a92fe18d43", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "8a6c3d2edd51df10ed97d4dea9a883705668bc9bd332826b201d606c0c4e044a", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "8a63fd9b6a35713bd4f21cf165b6a19835f1017f3240bbd524c6614187a7e64d", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "46eb04e2ae4f1e96fa4b618ea066fd4031382d9e61c2b441571b3301f8d96a4b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "50596f9114229d36fb43349ce8a5057292a74418091d07ec3411a3c3bb0054f6", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "689f27d4529017992c3f8bc2d50d2f729206f5e9a36df9c58d61ce3b0991c1ed", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "fc096e16aca752278dd7bb0e5f568e2204a08e58209318de4c00ece6bd6a9104", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "a4286f99dd3d6a61b22b5e3732f6a5b1a00de217fe081e75593fdcce88592254", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "12decc5b02c8653096ae5b484402a3609736af930c5a8f108dea911ca9ad69c9", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "fc096e16aca752278dd7bb0e5f568e2204a08e58209318de4c00ece6bd6a9104", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "a4286f99dd3d6a61b22b5e3732f6a5b1a00de217fe081e75593fdcce88592254", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "12decc5b02c8653096ae5b484402a3609736af930c5a8f108dea911ca9ad69c9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "711742bc031a7b0e66e4885e6cfa64c2407d3107fcf83baa4309d82c999d4bc9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "6244e3298c1aeec31724db0454abfb4238c0873334316120bcca830da9cc76db", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "251759df954a5187fc3b7ced80cf1e81dd533cace8106a35535ddfba67d1ce15", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9c5c02b4bd42f99743a23208c5312666c404958068fe69452e70235f421cbf20", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "d3e7d448ded5a56cb463ad5d907ed5a9fcba8176d404266d0e1590e484f7c49c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "052049e6bdc3f86c8829718a2108d5f45763c878c78724f45c0ac6c20dfeb47e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "8f794d9e9ed07370f2d6e08d92063a9381b7bebb9a0deb265b1bbfd3da27c65a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "ffea0d214b6c06de9c3c2f0a3e5c504019e1b46d8224762d712c3b6cd0509d69", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "35eaf3a07d1a177e6a088a2f1ba9e1a2e8b67d82bd2aa0b4fe4a9f0f32b394b5", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "87c46472a2ce06563287a9bb5a1c95aa44381cc9f708929bcc57cfc261e20585", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d7ba099206ffc22a14a54c55b6f80a1c950502f297562e48049362fa4c588aa2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "b7fd558c64294d5ccca0fa5d203a750f790a9be565b25f5094062cb7d3735f25", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "334419df78e939773a28632f08389acef0cd7f006aad9f69826048aa16f9bb45", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "eda3e158df6521b892077b9db48b948ed3a441778444f673ff3a55116f9ded34", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2b4ed898ae74a76fe52db8d3d41172044c2bf97b3d747c770a15ba5eee7800d7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "97711edcf6c8661ce34d99c6124cae881cbe9fb504846eaba02c4cba092e9c1c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "ce368b716d57624e2423c78a37ee3e6e2c6a957b9c4595635d25f8e795d42981", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2988e42ea59d44781620b447d1429af49df98e3637e7afc8340218768a037a18", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6d6a0b46c05d88d0a617a89604e86fb3f603c9a5809042074f204a90d2b07ca6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "18673988de2f63d234c889921599d7b2b73eb5448aa7dcf8c91d8ad7b1b9ea42", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "fe86ae0cf87f7842384af9c40a5d8393aa442b4993be077d9719e86f61021ee1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "fe86ae0cf87f7842384af9c40a5d8393aa442b4993be077d9719e86f61021ee1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "afa64dea5aa15a22fe64a0d8e9a08e1f16979d0eab5cb23221e4cd22ef40b64d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "41ac32b4e59c66cb0f865108be671eb5eb3c41f016799b5ce2462301739781a3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "525a2e1cd97b70b98f7b0f6e8e0d6a1b91a794b247f8331611f81d1c287704d6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "e2fc49d1825f38152f1c61fa2e34b6607904a731722773863a1f3fa2fdd3d94c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "c3c281f8e7627e01f4e167fcf38e245636efe1720bc60724cedfa8850c26c46a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "58d883196fb156a197f3f4233a5de7ce9cbe060c31404e9f49274d7f3541a098", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "c2ba6e47098c507b813da4582771bf7093db530b3bac6af3629847c66b5dacb8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "24135a10a4201464640cf053add8604c0bd5f4b01c7d1c04b9a058f40e2962f2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "7151d181003536bd6d4e437be8cd3dc6cdf8844252df2ba51f3e13322169fa5c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "0c549dc4c9a4a1277cc2efd63cc0a39fd9bb97fd310b5c8891b0b41e7c082d10", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "6819db71f9898529497a70ff7e86371ae5e9dd5b1ab8bdecc8cbdd97e0cc7421", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "20e2d3c6fe006204d8ae246a52baee14c1428a89cd9b8c6c3e7c1f63037e3935", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "396c38da93779940a7a021e120aa96c61e5b63d444b4c5a0a47afdedecdc64a8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "7ffce39d6bef0255068db513d8f1ccba4d06e17a77cd5a5358b0ac9f7b28bb90", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "4c943d8fc15a26d0dc58cf60e0d40289459c35100301ea645d817f6f986d38d1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "1e76808e740faebb913eed95e45413dd726cc391004734db18a4e428399c62e1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "a8b2b4934d59a370e4d28bfeaf7e5593b112d33fd697744e090cd6b53a7f9edd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "32699ca738863f558ce325c45dcb30f12de49e7169ad4751a76f3ed04da471f7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "1bc8737b6e05cf445e61cca05dbeffae784a93bb70b2aa559825217ed37b7bf0", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "a3f035d0c4ad4bbbe668c4778f7940cd454a2de7c172ff494c84841f4d08cd23", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "d0d42cf75cbe1e835138a50f4f9517cda8db87150cf198826db92888aab1bb06", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "c3f023ac43f3e7573b6b3c705883a94fa90a0e11ef7a5093bb1cf578b68135c7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "9cd97f038ef28cab0c0c3ec5c0567952c2f5e4fea8a55236cf93fd189b9b54d4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "1a9b32c385cbe774feebc1e7eb66ac846299e8b97c009a535521a0467e9e0e60", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7a0d75cd751b9c00c422d7184621945bcfd8eeeb10a5421c6c1c4abfbfa90115", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "71f7a553d14d6314f04b3f3f5d89f0b5ecdb70cee3d994ef7bae2ed2087eb946", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "913065df4f55b576798b89c56f02e6b6a42c2d9ca3aa1046040c5b6fd0a03f27", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "81f86d1bd76bebbb7a38f3f372325930d9396a0a41628359c080ab9b3d21a9e1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c00dc6d8d7f7bbbb24856937dae326b4d65ee46adfbf38b9573305fe0adbe7fa", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "294f733e383e1a48370c81f067fab46e32107f2e0c8f5e7b96f0daa44fbbcc39", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "6fa981d1b38feff2fab66cc24ce0e0164446a36cabfae40a73a41a85c46c95c4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "ca40ba2ef98fc4f64b8d432f6854fe1a7703d54c0400502da44591926dd3b381", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "0373cf22329d730bad90dc957dc9bcd4e1a843a55b385558437018ab787205af", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "699b999c36deac67715e757b685821b0eddae2676a0c25908d23a25dc2a4c070", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "b9bb434e42fa05db88190c7bb02bcda15320e22238bf65b1e023419e74fa6e2f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "12cd4cf94837b9faf9b7a3f1784cde43d5772572cf55aabf7413d167d2d859ea", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "c6c1162a57eb37141c544f10fa41c87afb40af531e5ba32279fd9a6e2d8ebd34", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "525a2e1cd97b70b98f7b0f6e8e0d6a1b91a794b247f8331611f81d1c287704d6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "d08020b28b24b8bdeb960c95797b20bf0832db2be3fe3211b25895f03a585eb3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "811af503627b4d010bdb6150883e2928b7b338f667b11e5b4ff2ea129f826129", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "9c5b50aa6906062b2c5176ff0dbb9691edbe87a0a3abdeeab8eaee49d634453f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "bdc5c4c2ab7a12f0a29fe1e1eddef2fc3e5ca47e6db9aa796ff7b657194ac8a7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "278543cd786037cf834938d4482d854452f26d3346dab90e81af817fea0684ac", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d5942b7fa3e6253e2d6ece01844e085f1f96b21b3f1d5b9b95edadcffe1babf8", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "12b17fbc74369ac09ed626e1b24c3a58d14b49d46083e7d4a276f08647900fe4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7101c32b38a878e242340f3902c84357de0db03f015fd87de404d01b5212c5aa", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "fbbb032d6464b21a2c320535a27576996613ddcb5e3fc243414352c8350e0525", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "cab8919a31e6e06a26e1e727d21eff542b748c56b3658b06a8de7e2a3c4c1b4c", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "1be449518412a45bd532fc20aab363bd07d118884968e6182af2c8998b5bc369", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "20c765500ed7de4d21b2eef656e66d08f3717b8fcd4ba457c867d71c4ea192f4", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "9a9fa988d4a9e64c909ca0bf06cc4ffb75a3bdb8472b9b5171c2ebd56b582699", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "cf737b94cbee294d10e7c47f61f78ad8913c211755c0ad104901dab972890eb3", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "69a3fa788aadb354a78baeff77b157ff2eea7a251ff71aa49c746852b940d8bc", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "de3a0a0652773fe8a481d70c3aa52dd45fa2c0a23060ea4279e4b9826ecc8c05", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "eaceb7f8fd2448c22b041f90a6e0fd43829af3253d5ddf435f6ceb4e5e6db6ef", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "59a160b8c3f418944ab7c8f70b6af8d46e245d31ecd42d5082d74873beab5baf", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "490855643453b6f6758dc5dc9881d5984952ec3bbbf6a646f9ac309e5afb87ce", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "bf59a2cefb979f88ab7efcc09fdbb3a688872e3fb1d249864203b86205fbcdfc", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "cf58fac70803ccf9d213c25f121122bef1d80b52706b9d49b92b4c3ddd10eb99", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "ded674c6fba3c7b7c0fc3e50ade15dd1aca9bdab809d6607d11e1fc00265598b", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "67b4d28972c369632e692e5d4533f09e82fcf4d8304caad65a43548e18e30893", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "545741ca32cfc4058808ccb7cdbf08f39f63d8c71788fd42c45008d8ff8436e6", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "4cf15d25b26d42db744255148b8cda312df40dc433ee1c8abccd4caa402d48e6", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "f85d737f37722dd9577cad3c50b0276c9f934da41b9ad74ca9523ec3096af608", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "f2cd15056f84a2faba7dd421872afec9557ad40e5f65e98dd502d4de27a7db3b", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9cdb9ff454cea52dfe531980ec6c3226ea0b7b6a781b39d84bb774f20a9d744f", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "bb2e3dc159b50f7dfffab666008d3616e34e041572754033e94a8776b9352652", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "c461f6f6f12b15220f319ef2146e63454f4769a36acc0509b30d4b7dfab00bf8", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "ba0b320a8431537265e1620a54e147548b15c3bb9242a9ded62455d69ffcd6f3", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "1e768a7b531bbf2da1ce6e8b091cd76607f713366a6339c7ca79eb94bdba8aa9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "29a3059118ecbe280d670dcf7f2af8728c151a8d7af96d24efdcca1500b72250", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "af96e3e1449d6908ba7e4790c550248832e4a1e34e5cdf9497bfc99e5a96bc22", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "891afa3c8edc1415d1b83b7de1b05a729778dcd6e63ffb45c2ca1a34085d24f8", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "1a3f25dd233bd454c0cc4d77ef7a22f964e26e17f780797c61ffb8ba62e985dc", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "ce893b7713c9039ef71dde720c5f8e7d4fb4d755303ae37c9e50f0385b5d95a7", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "927596928f982b46a2420d22d2fa7ed862489fe2285484fa3c07e281a5312894", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2065c0738268b8238773590a8e30b578114e0ea227c0c2d537f38b468fc5162b", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "467b0d2dba80e392df88c80d4279d40c814524c00759b04763a293ac9d4d397f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "80a3345009f703511645d7a4147bce35b9a3587fd9d6af953f74d6a4587154b8", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "140e661b49069ed462103bd1d387dd3a8b0281384046a78757043d1ac1b05e93", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b463107df0b86960bc04115d935b87eb8ebd22468dfcbb7d8004a808a1cce052", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "17fe6b31e810e2023224849a4d7810a34965334a39a4c41f1767ef33bad236dc", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "448ac1e8822f1c9d5753c977c64f19e77d0581fdaecbd4846e08b3807aa8f16f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "da60ade0900a290e5ef66a2a05b8f99a6c41f0238465eacb86f37b18d2a9c854", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "f2569d5e2ef0e3984817b9e32d6815e133b038455b339c8976a39ec3b1863a3e", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "b144dfd983385b11160c72499d4414dfec7a8a1aeb202591ce6e3444e49a2438", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "cfa65d6d04cc7a79099909b01cf80ed452029e85af50f1cea1b202839115fab8", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "28f4114e6d1132d923a5cbdc859e5bb1ad2f8cf0c79f83b474147d4fd2181a81", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "04f5fb96ce02a99865597b6f4d6a8a0cd0a5da123fafe710365eaae539423ce7", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "8b39a4fe08165461c043b0b9458a6b0e938b90a398628f1d8d5b6a545a08bd9c", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "9cea0781d3baeefb29728b2a70d29527f8b0d33c9e5462dae8df24bcc974864e", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "8bcb6e673e5ea271f938e441081552739c894ed45d810590196b39b860105c78", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "910c42f5dc55a916ec3f311befb4ff78c155f3b621f3d4f217321ed8d379654d", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "fb376b3856d550d9f02230e61114394839e75db7f3664d17aeecb01419f22ef9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "df6af8103ffed312b7a3d97241fb770dc2295e241a34608fe7d7e2db23600317", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "815cd7c6d770e10820d934f06820ebbfa9f2d4e660732bc751ddbd19da2df1fd", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "da60ade0900a290e5ef66a2a05b8f99a6c41f0238465eacb86f37b18d2a9c854", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "3e4d9a617d4121dfa39f1935927c13fb78e65ed16c6e033753c6c2180b0b4288", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "f01f66974d812a5b6302d15c2325143e15e0f4ccd52ddd3c091fb7e91b384ec5", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f43d304db7f39041f7b40b43249b83adabb8c011ab3b23a2cea3db83e1227bab", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "5656931150e534e19025e1b2afb262f8bbdaea4f85fa63c35318754e8b106862", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "17498e5787934b0b5c3d633f35d061996b6136f11b40801c6bc7c8eb0d9b6bb1", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "aef9744ac4ab868eef920d1e49053c4c31d62f5224989b4d4c7a8e3ffc86f813", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "31e9909359349fd10de03158a5e7db150f1eb9d32a1d77a765356fbf6db4db3c", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "ee0a5bf1735f0a257a11d1343e3fde4c8c366c310826429561a78fb8ef818802", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "dbac9ad1d6b924c1fb3c13f0859abdd633654df57cfcc1af4748c765d6389eb9", -"T3T1_es_test_autolock.py::test_autolock_default_value": "cecc4b1ae9b194598599d40a4cdd34ddd6702cc1f7f8d50f0ea0a9d9c1502272", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "2be09f48094663b6f93faee2c001d02d8ff959b958aa4228bc4a88accb7516b6", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "2be09f48094663b6f93faee2c001d02d8ff959b958aa4228bc4a88accb7516b6", -"T3T1_es_test_basic.py::test_capabilities": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_basic.py::test_device_id_different": "ecfb9c94ecdb25cf3b97997452871323a764600eb5f2f68c6759358b331c28f4", -"T3T1_es_test_basic.py::test_device_id_same": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_basic.py::test_features": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_basic.py::test_ping": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_busy_state.py::test_busy_expiry": "2f7cd808bd0b7fe8c0e9c14488b837909f7118fe32194c6f632f75efdf50222a", -"T3T1_es_test_busy_state.py::test_busy_state": "a7171ffea41428bc4f0ee5ba68b097974adb0f5a475a38394688764102a49544", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "b005e7238dcb269a9c0f72ab33caacf176d5bf4d9c8607f4d3442d641f971119", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "b005e7238dcb269a9c0f72ab33caacf176d5bf4d9c8607f4d3442d641f971119", -"T3T1_es_test_cancel.py::test_cancel_on_paginated": "e233a585ccafd7c2913854e2f4b9ddef0f760b226dc0da923cddb38fabc52ffd", -"T3T1_es_test_debuglink.py::test_softlock_instability": "0ad1427b0fd921e1a439c3e3f48f18f2d3a74f17b32f66c8b6e2951d5f9ee6d5", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "23e79f9f150aa8ff476632968078d21f3f1918226b82820171aad4adacb8d6f7", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_language.py::test_error_invalid_data_hash": "3f7416cfe495266821ac79cc49f8fd0955ab1b9e21f1571bbfec83aeff63a2d8", -"T3T1_es_test_language.py::test_error_invalid_data_length": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", -"T3T1_es_test_language.py::test_error_invalid_header_magic": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", -"T3T1_es_test_language.py::test_error_invalid_signature": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", -"T3T1_es_test_language.py::test_error_too_long": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", -"T3T1_es_test_language.py::test_error_version_mismatch": "2a3e00fa22cf72ad8d4b21e299b0c612049c0e3a8d4aaac0200744d21ec23d96", -"T3T1_es_test_language.py::test_full_language_change[cs]": "5f407bb4748886dbdc4b2e94816515dda0d87c52d88a696dcd37fbb463b6da69", -"T3T1_es_test_language.py::test_full_language_change[de]": "c970c3f8500c149b06b61c53625e1dbb8f4baef2daf656be7d8eed77237d3e12", -"T3T1_es_test_language.py::test_full_language_change[en]": "09e5c108090a224a9d498685f0d0f5b11dbde7821a53ed292a8d57f3f48f7cd5", -"T3T1_es_test_language.py::test_full_language_change[es]": "5f8b82ccca02dc97d24b75d843b327c1e6a04948a9aece2197800639a7978e30", -"T3T1_es_test_language.py::test_full_language_change[fr]": "f5beecfc2feb45d559480464961675a7078efef746ea8675f7a3e730f3eeebc2", -"T3T1_es_test_language.py::test_header_trailing_data": "35131ffe5c6204cf0f38bbab70e0b63c2ac842c7e1eb7af231aa96982cc46b0b", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "f562a2000af18978782fc238da57e62328e6d9f803495a8523ce257f1efd17e3", -"T3T1_es_test_language.py::test_reject_update": "d9e846f21836ddb503aedc4650ac7ab6cc575f17cc6651f814d1b7bebc24885d", -"T3T1_es_test_language.py::test_silent_first_install[False-False]": "a64e6baacb2d67de2507588fb6e526be7bc4574b8d71c0220eef3db75c252cf0", -"T3T1_es_test_language.py::test_silent_first_install[None-False]": "a64e6baacb2d67de2507588fb6e526be7bc4574b8d71c0220eef3db75c252cf0", -"T3T1_es_test_language.py::test_silent_first_install[True-True]": "434ad08d30bc7a2710c8248ac545cee76f5750ac32d930b90e31fc0b307c3e9f", -"T3T1_es_test_language.py::test_switch_from_english[None]": "78af7fb8773a1b5a2a25b03fd817923403841a3fdfb4df6b61b6297bd944fe6c", -"T3T1_es_test_language.py::test_switch_from_english[True]": "78af7fb8773a1b5a2a25b03fd817923403841a3fdfb4df6b61b6297bd944fe6c", -"T3T1_es_test_language.py::test_switch_from_english_not_silent": "acf7ccea893b2a21bc0be5d9d6d3f9fb7bb2254423de7f54a151687e23bb302b", -"T3T1_es_test_language.py::test_switch_language": "313176638e6b61714354d0a345d91d749c97dbcd64a6c76b595a95965b2967aa", -"T3T1_es_test_language.py::test_translations_renders_on_screen": "72c1f31c40e8d942897cce5b6bfb1553a27fa9ec5b8ce8135e36c0eedefd21c7", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "f057dfaedd7266b9a472311d4ce36c7850b989e8f617a4f566aeca4fe02a5249", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "9aaa47ee13bb48eb50d539ddacb8f228df6761c393a7f609437697101f65ccd1", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "580ef403d2f66fdf6ccab4946e96be36cb8db578f68175c4757d2a787a31f290", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3fd10a8c8227bb9843677765934c995982510b536d5bb2c6a612a0e14cf772ef", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "87927b22bc8ea55a5aaacc5d27ee3495d95c9dcecc9a51805c9cf6e8b1a69f8e", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "472b3d8e3ccf65d91c8b3328600dc35caf5cdf09fdba24ac7752775e42078ae4", -"T3T1_es_test_msg_applysettings.py::test_label_too_long": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_msg_applysettings.py::test_safety_checks": "7cc360c4fbde3446c24fae8175a20aaabe5e1a97859281782bfcc5ced5683dfa", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "3e975fada515b3d09dd9bba4d61cb54a548b124558209bef4ed7c033b0d12394", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4802a19b32c35f96dd5c9f04782f16159607585db958cce81437501ded398ee5", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "fc674d2f7aed64ae9fc7680ad47966116e0e1878cba6e93d376e23dd9a0c0c64", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "0882a2ad63d4cb7ab985eb12ab97e43980890680a7ee4c55333bc87f39464080", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a0082ab29b405c636e3524aed4c6d46785ebc5b4d23e79f0ed049f03508771b2", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "ebdc15d7e1f28170f929e89f6f08c55e648291873523bec2169a94e6def4252e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "fb141045cd21e4160b4dd236d738658d2c3b33b757a950a3111cc9fd9bb5e0e8", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "e6c4d8ec7577e9962bb7c36bb86633348f5fc48f854528f95b31dad790bcba90", -"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "711285abcc862295a644ac3ab11eeafe1f3059b10aa82b158d7712598646f61f", -"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "09f17981a23bf1acfecb6fdc5bb226cddd4d7bce19f059e2a313575b7ffe76c0", -"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ae5a3ea1cbcee557ed21eaf868727776b69995fa22fe039e4141ac8331f60712", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "d8fd0b8dddfb0988117821c8656d919356bb915061b14e9e6005b00aaf0e064e", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "914848263ff0b35f8ff0754c30a50c8f31b9650ff7bd16f7c83fa85461201a38", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "a1b8b78417352d99d7335625d3cb66fe7f8e796a7e4f2e35b91fbd4e595edead", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "cf34861b756e67194af9bf13d66ed38d81f2cefcdee6cb3dc7b73101f5181c44", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "a51a09fa99c92db42b33c3919356e76386c0137f9f18c72d99fea1f5fb336190", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "7d04ba6364d581672182199a77aee88cf7e05ed59a6587010f22a5e56c0cac6a", -"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "ac2f68918cce94178caac9792d79862ab34f48ffcff9ce6ff48a1f7ddd9453b7", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "ca3662b345f050b10e769937808e786c95afba19bb1a755960c7802abe1ad953", -"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "766442b0767cb521bf4e0551a904e90313463dcadec2aaf85b53bd9c444ff285", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "bbaf6250a83c4974a628b5d0a835b6dcb38d08b60f4eb1fe5c948b6a83de382d", -"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "362d848ae4e19755b96e46963ff2e6002eec4268ad314ba81913d117dbb481cd", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "fb09174ce0df297d6058551353b290619680db86f630e00caa4a27ef018ada42", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "287c48bd7bab717eca16d48c752504f8d38ef5d78256e7f3b9a707d573648be3", -"T3T1_es_test_msg_ping.py::test_ping": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "45c58c09e49cd3fff8664bac0268db826846daff8fabd5d4c5501d1d6087b78b", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "2c3259563ebb8f873165fcb008a48faa079583449a9999074186465977b1a222", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "1fd9119b81dfe75c901c7c0cfcb54be6ae71b4c73816300eb741b33ec6f54926", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "e8c33d603279736df820d9724fd3de0ce55d4db186ba226fe3d475dd1414f7f2", -"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "ecfb9c94ecdb25cf3b97997452871323a764600eb5f2f68c6759358b331c28f4", -"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b6f0e75fa0db32a6b8d0102ab583b06466b6f727c356f54900837e922d138079", -"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b6f0e75fa0db32a6b8d0102ab583b06466b6f727c356f54900837e922d138079", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "61f6f75aa752c9ed53b028023bdb681d61e80cc33d6fb0b3f80dabef1bfac002", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "61f6f75aa752c9ed53b028023bdb681d61e80cc33d6fb0b3f80dabef1bfac002", -"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "61f6f75aa752c9ed53b028023bdb681d61e80cc33d6fb0b3f80dabef1bfac002", -"T3T1_es_test_pin.py::test_correct_pin": "af206eb170fb1f001f62977719f42c3d4ec62661e52ff915212844b4eab65305", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "818200287e749818550de41abbf9ce4e0018e019d6eedd2b164751d306c0ed83", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "2bfeaafa46718d0efe411953ededb08621380909764831d9b4719d6befd75953", -"T3T1_es_test_pin.py::test_no_protection": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_protection_levels.py::test_apply_settings": "ef63d1fc8484480f3965afc213e7f43c409f17dded49f2578eed85d7846f5ad9", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "558d6d4f339a69c9066a0c028e897db46a403fd52e8805713b1c4d0b0208a70b", -"T3T1_es_test_protection_levels.py::test_get_address": "4dfa321a08fd0b1a8adc2e5d37ebd4c9e2bff11cccded082ec98048f5145a3db", -"T3T1_es_test_protection_levels.py::test_get_entropy": "52579e9e8ffe9cabc5fc9bac426276bc0b5a825b7adb13db35f129358cd87c9f", -"T3T1_es_test_protection_levels.py::test_get_public_key": "4dfa321a08fd0b1a8adc2e5d37ebd4c9e2bff11cccded082ec98048f5145a3db", -"T3T1_es_test_protection_levels.py::test_initialize": "fd73050e75c23b94e8a8ea25e746194d424aeaa9baeb1bc24c151e2881293d24", -"T3T1_es_test_protection_levels.py::test_passphrase_cached": "aba6b49318ffaf8a08e26caabfec4716b1f6f388736869daab050e396ae53f6d", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "65b44e988e9d98a327eae4f7e40004cd74389d0b9f150ff19c9b73b76164d4c8", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "e8a5853b921acccef3f9ec366f43270b6d315853b1f3cc0b4bcd5cde89c172ec", -"T3T1_es_test_protection_levels.py::test_ping": "e54e642a7ad8a42e4f7f7c440cb4e2f2cc2438c54fd7113168d77475400543bd", -"T3T1_es_test_protection_levels.py::test_sign_message": "1c5e7b003f95d25426f95dff6dcb85465146e109f1a216f9f081811ae073eafc", -"T3T1_es_test_protection_levels.py::test_signtx": "b9b3dcf5c8d59d1d498f1868e8bfd18b58e5c209825cc3095229ea96cf4fef78", -"T3T1_es_test_protection_levels.py::test_unlocked": "f405182f1a710776b7c10478c62f2b11c7cd010782a042d6b815948f7e395ab0", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "ddcd6d07feeaf593ca84319b84f862046f249a75727cfc05ccdc3c77d9f63a2d", -"T3T1_es_test_protection_levels.py::test_wipe_device": "d3986f59a058c52b372a414cd5cb5c0e0285dd303496c7d99c586354554fdde9", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "201745a4d2d588124650751e31f5842bb41c987a4f914e643aa722e910de5775", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "4faa4b2d679bdbe2e190ba93fb1140dc179cacc767fe1cef0c4d49e63eb21b3a", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "2b6b56e7fd69f22973ef2a4b80b3dfa18f5c1089b937e7b40cfb3145e8c705d1", -"T3T1_es_test_sdcard.py::test_sd_format": "1e8ceaa3c419aab4e97088704eb487daa132d4262c490c626efd9d18eecf66e5", -"T3T1_es_test_sdcard.py::test_sd_no_format": "1df941e39cb0f5ae7ad5fd0ed61dcd1458a62e256be7faf19f106f9ae9fea197", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "7b3f9196da8bae50bc4b5688101bf65e71437555b9329598f775e5b0bfd137a0", -"T3T1_es_test_session.py::test_cannot_resume_ended_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session.py::test_clear_session": "a2956ef18d3371724bc021fbc5df2a94960ca9b2ce1b3e33a4a47f24fe991bb4", -"T3T1_es_test_session.py::test_derive_cardano_empty_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session.py::test_derive_cardano_running_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session.py::test_end_session": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session.py::test_end_session_only_current": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session.py::test_session_recycling": "61f6f75aa752c9ed53b028023bdb681d61e80cc33d6fb0b3f80dabef1bfac002", -"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "5e94f134b35244f4b5408d6b2dc3f7b3fbd15c904be7683c28fa5498b113cecb", -"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b0fe9484fd42dec4feb8e0a96ad102ab9eaf711c82be443e3aaafba23073b172", -"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "8bb557145f7c327002b537d0474b6bfa688b38e4024cc3e3593697325ba3fe7c", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "735edfb1fa57894c8810f58ca7a108d2f0284a6852e3c5b8fc45a8842050d3a9", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "8b518cab3d3706cc9e5efcd167036184e2531cb9074570236936eee790c250ef", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "17411166fefe1c86892ea3deabfcdaae2d28f4d7bd475d48787bc261f7362a88", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "c0bd625142ac60945cd48ab63855f1694a2973e327154862fc812264adfe46d6", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "aba6b49318ffaf8a08e26caabfec4716b1f6f388736869daab050e396ae53f6d", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "c6fa7dc74014525debb6ae85ca2a8f84f670cf3b8b54a0c3a02da8ccb9c4611b", -"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "4ebad52897a1f73adb33ae1127d6bb85d1f24ebb403dc2a94961825b77c1a136", -"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "30185a44ee8480fb7f97c316d5d3a1725bdd6c27278197c1babf90eb130e3fca", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "6003ddb449cd8992439d294a04b0fff100c35c3a395b6c1943ceaf406309628f", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "43959f06326272517861dd5c74c8af0ea30dbd3460e60baaf310ffafb0c92b55", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "332ebe7092343e759c73089b5f8f6e612087d443119682bad904823fc7cbec2e", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "2a400e7ceb68f751411bc0fc2ee7903e115df1e4796382173301f7b1717b1f77", -"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "961d7062d5526267e7e1f063072d3e8c00f46ae7eee7620fcfb542633c8c79bd", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d221d82eca981951b0aca8645581c3a5b95c4dfea7f3f4e45bbdf56c5a9725ea", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "4acccf33fffac421e5997593d5a2fba6a510bd1d9cf49eb661df71c662365f58", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4b0839f6d638f8a35e21d6ada278aa333027085ecd6914c5fbc3b55da0ed7aa3", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "a729e9ccc29b360e8521542090418bbae50fe0903b890f51ad3f9125d11e5a2f", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "fc20cb607ffbb415616d5f80ed985f2ab6f26c46d89c75bf93dfe6ca82a940cc", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "c045929cc1b146400494345ae7e63a0e255eae96715bdf18d68bb07ee7619889", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "5159bda519ec69f995fa4ee83f1c7e392c2f10f4b533c6df22a6c18bf64757c3", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "26ee2b7013447c83bb79dfa166e1eb5b52b52129d014217cc2c7c3bc1b72524a", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "b76bc22a7ad33972db1a9005b6c56166443d95f40f3db1bf9b32c1e1bd6b2e9c", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "c062a94b8c590881ad6730895446846e7d6b265c05174d633a80529485f7d72e", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "6e3c2daf5a692970fce61eea2abccc5b3dbac255f0473544ec7ef53a09d7a144", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "6e26a14d87748ccb6e450786a560b7c3aaf198983a26480672d46b5a9f54f64a", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "62d5b76f054e11e8e0e90f54d07d08bf0d80240af3f65ced936026c57428afbe", -"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "e4bf2dfd7f736f000fbe8dc742c92b89a1803fe4fdb1e0012ce3e182b5cedc78", -"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "9a4395a8e5fabc86a4dbf82f85a3d16bd2706bdf1d84b870dd5bed700c871d99", -"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "69012e7c19c7096a8b6526422a4fc9d2aef25005f97c6a8d71c63473f56eae4f", -"T3T1_es_zcash-test_sign_tx.py::test_one_two": "6b840ccfa582db6680cf2a22ddc56e19da529f38d614ededf0bd179fd156905d", -"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "a0adb5aff46525635bd929153871406346a9304dbb4eb8076a21aae44bd67655", -"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "df0b4cb61e4fc93470a1590ceaaf7acd04257a4fa82bcdd2d788bdf2d9cad5ac", -"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "10d788453f1fec62f655f2631a47ee6d800c3be755e5a35fa14813fc73363185", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "e5fd01f8f9a49ab80d696b67b551e28f6e6c737ed189a725e01a8bf3b7797914", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "1cdb69531adbdc4cd0774929e52de465d2035101574f2a2552811b713a0513d8", -"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "be8017a9c4e9e68e90d6fb5f8a15314b4a07a866e8c5f46ad9f7fb594d9fe606", -"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "1ce3e6e097b54d61bf1f3b4871be29982cf66e454ab2afc3f574a62d3eeb950c", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f4cea3225b3814a48b3e07df40c92e9af49aab06168c8e70a36a37f39e96e46e", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "992966c04907b69215c8e429071091571cf28241c611c830059153109a50b877", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "bf7fa7a8dfe2239ddfd3f656723dbc1e7bb063f7fe694909a41f0cdc116f4d15", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "795fac94cb02f2ed0ee4b6ef1f0001504a074aeab868e130c686100ed2f72315", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "954c39c55c118e2b12a97f024661267c7a97147d3790a447c90d047a4f2584d7", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "00ba5135f819f0f81549901ae087ab864783dfb93a41ff09bb8e2ac77fe0dcfc", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "fc7a83c1207a49a9c774aed926e347ecfcdfa38c570a96a0af1c72087b105e43", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "181f6086f2653a212e029b316f0bd20b1ee395ad44479b39665afcf0a927df6b", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "00ba5135f819f0f81549901ae087ab864783dfb93a41ff09bb8e2ac77fe0dcfc", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "fc7a83c1207a49a9c774aed926e347ecfcdfa38c570a96a0af1c72087b105e43", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "181f6086f2653a212e029b316f0bd20b1ee395ad44479b39665afcf0a927df6b", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "9aefdd5b4c914b6d26dc63458763ec51551fd115002500e4269a71369e1a456a", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "3c5f2e258c686e776ded3bbebeffbb8baf96d6b1e893538db14dd25a74d591d6", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "06e2e845a2bf8bfcf495e7827096b9cbe2e4b69ca06b861973243ee40f72656f", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5695631009538f60154bd972a14a1361c97c114e7e556e8557a775ad87197d0b", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "6c7a7637ecea02390f4e4908c9910674716506be1b4316698cf14940c9e89537", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "6c7a7637ecea02390f4e4908c9910674716506be1b4316698cf14940c9e89537", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b231f015294d1e45d5b1f82c3b4a956d8bec3e659d8e799ef57c28aa6b42a126", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d1228baef61329f97828d7c94c4bc5b10e99801450a1915b7aa48286ae8b2059", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "1b55c0357fb79da6649f60764e3dfde469036f3b4aaf1220ba05929cea84830f", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "e71c81450ce5c0ce5ee4d792a3a640c3c802810f351a96f3af65ffb468bb4ee4", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "e71c81450ce5c0ce5ee4d792a3a640c3c802810f351a96f3af65ffb468bb4ee4", -"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "550756d167a088dad4599a7d2bf44b406fdc25cbc63e488df6fed00e6aeee264", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "550756d167a088dad4599a7d2bf44b406fdc25cbc63e488df6fed00e6aeee264", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "7c7978cde28ea4c09f2bef4cc92dec5e4209d3d62a6c6499651510d36abbce14", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "adf42f4edbd0afb4267f31bba25cb9d0e9817bed9d6a76dbfa3286c8d285f014", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f561501b23ce6a3f8f710578b6f2753a4d86c09a79cad0217fd3109983dbb465", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "980df3ab054edff8858d19f903a8cbcfb2496b16701defe2645d95f8fc990583", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "cb1ed914242cb8cc6a854c735565c3b0863644f81c6b5c7f70b1d0ca5aa65d6d", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "2a7f7f4f6205dc9a8b566d3f693dbff523e48d5ebb12d9020e1243190ca2c997", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "733474b88cec5c9058b68154f8fc2599837a07d60862494eced8cb3b13e7d0ea", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "33fb92736c78af02c44d313aad86e6976a5b3e5524a2cefb2c90cdeed3f37502", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "7b5cc0dc55048cd68ab4cd39b5c0fdcead7a3032d508c15f52e2b8c9daaf6789", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "bd0fcd017b07837aaa49212c5c5daf89dfbee6cdaa0a6a6093c7ea11cc427394", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "61e9e5ca501b46410ddff734d8f1ac7f88c63dead33971a6cf8297ae7932fc3b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "93b0e6575d52172e2a32f1d348ddf9fbc3ac2267ca077459699a63d805ad0d04", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "85bb3de35954a4f26757dc94192930498874f6c1978cfba3cf5b0ce6e510b5b3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "3bcf371b60450ff3b082354ebf5c8b201a3ba79a2408acc3c625c3b00e924358", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "da572ab7dfb593bab75431ef1673c4113634720bd37d01a09afe14e4a958ba13", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "64ab7e2ee9cd56c0290835420d9d67031ac1b4647f46c89648fac0634c019a04", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "e0e8b3c804643a28f39e833f6664ec57b418825248652e4e98151f5a774ca09f", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "589982878b1f19976c1b64277a576efc113eeb3205059b3214498434b0082d82", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f85ad8e70af711cf13f1b2788aeb23cb6725b65678adae46e4bc68b519f62e91", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "675ee604d9488c2caa8f47f35835b622161cfb63e846bce94c7a180c0012f139", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "576ec7ac1c61261d79a591e39d151946037d5308f0adc2883980f36e6df7b607", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "7e5ee35b0ed0baa0b58a7c3d211029678e9f93ec824aed4d5355e38e62e2e2e1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "b88750aecf81e9baaba247ee9ef0c83c12ef024b0e114f5e2b3b1020396ca7d6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "2a7f7f4f6205dc9a8b566d3f693dbff523e48d5ebb12d9020e1243190ca2c997", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "733474b88cec5c9058b68154f8fc2599837a07d60862494eced8cb3b13e7d0ea", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "33fb92736c78af02c44d313aad86e6976a5b3e5524a2cefb2c90cdeed3f37502", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "7b5cc0dc55048cd68ab4cd39b5c0fdcead7a3032d508c15f52e2b8c9daaf6789", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "bd0fcd017b07837aaa49212c5c5daf89dfbee6cdaa0a6a6093c7ea11cc427394", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "61e9e5ca501b46410ddff734d8f1ac7f88c63dead33971a6cf8297ae7932fc3b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "93b0e6575d52172e2a32f1d348ddf9fbc3ac2267ca077459699a63d805ad0d04", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "85bb3de35954a4f26757dc94192930498874f6c1978cfba3cf5b0ce6e510b5b3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "3bcf371b60450ff3b082354ebf5c8b201a3ba79a2408acc3c625c3b00e924358", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "da572ab7dfb593bab75431ef1673c4113634720bd37d01a09afe14e4a958ba13", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "64ab7e2ee9cd56c0290835420d9d67031ac1b4647f46c89648fac0634c019a04", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "e0e8b3c804643a28f39e833f6664ec57b418825248652e4e98151f5a774ca09f", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "589982878b1f19976c1b64277a576efc113eeb3205059b3214498434b0082d82", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f85ad8e70af711cf13f1b2788aeb23cb6725b65678adae46e4bc68b519f62e91", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "675ee604d9488c2caa8f47f35835b622161cfb63e846bce94c7a180c0012f139", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "576ec7ac1c61261d79a591e39d151946037d5308f0adc2883980f36e6df7b607", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "7e5ee35b0ed0baa0b58a7c3d211029678e9f93ec824aed4d5355e38e62e2e2e1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "b88750aecf81e9baaba247ee9ef0c83c12ef024b0e114f5e2b3b1020396ca7d6", -"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "031b04763a0bd90f7c4bf722538466b04b137b1b507fc7b23e04466e27702aff", -"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "da55076b4c93d9565f869fc8b084a8f23ab921141f3d723f2c6d7da0b0bbb18a", -"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "f861829aea7f76696a88bc718bf86328fa8082e5872529fb88cc5b2591c71f37", -"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "ae18cc13631448d58d0566ca1e70c7654276476634e460c742b27b7308d7b0e7", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f8bbf81aff32b088ae78ccb175b7c2a02a1e327a75262b1493f96b6cc21e68ce", -"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "16b6c6c0ed00bec17a80fbea73b3aa3b17163da43813ef55acded94250749333", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "e17d7aab1da47563c5e70bd737e460377a2548c92d194a386a2470f7886dcc2f", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "97d81c0b934dce5ec55c88a24053bf90b5e2944423c1e06ed0e6b88777cde45f", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "7d6c6d10426e49bb769e60e2e5d444faa9ba938229e80dabe44178f742d79328", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "5dbfb2dfff891af8c23d2b70e593d403ec93ad28de8ee87e7fdbc7a501e49fc7", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "63e3f560536bb2f0c42ac5aaf25963ed3f58b1fcecad20ebc40c8fd1877f5681", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "4760b4cb46bdecae9523642fd5a6a2bf9241d4ec6237e84872c110bd86115cc7", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "85bb3d758702ec0ad82b549e291027df546b771993cb7db621fa5ebe0d32a73d", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "bf55f8fdda23088d507ed8da5f011a7675220c160922498fd3569592ff6df5fb", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "284386b8782a11e66f037650f39f98d31539d7bbd866bf5fa49e03f53ec2e3da", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "84cd467cf2a694df16105dbfcda87b9640f4a0bf22c2e80a630857b057480921", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "8bdde3b6ab580afaa4e72c59cd1b543c8e81171b31c527256715a9ba36bbc426", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "580556b5709d065a27a85f36a2d046e498b21973ed7b46006a31a36935a55250", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "1029d8091d0147ed92ac4a10cd87ee54c33b55ce641570f030d29c19543f7e83", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "97d79cfcf848cc3ed960c3f922f65d3ef1b062f103d1be46eb41e2f77646375d", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e58576dcea5bad9839f492dab676926970946fda5561b051877d8bd67e6caffc", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "5dab1b4e4479032d448cbf39a2c09511dab1ad35dbc3d65fe5d21347f19ab8e4", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f20aad0cce187a47c71cc379793dd3cab0d8c97e3427b0c71cb8b4d9abe3e29d", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "fb7c8fe388f7bf5898b800475b71fce62684cf9bdd2ff4a95fa1ce5b82e375d9", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "167023b27df8ca24e1b5acc5fec7dfccb6314b811b889469d8e8fb1d7092afd1", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "07f8cef8afbbe14cd85c14bd94f1aab57d39bdedce7dc833bee9fff031a2a6f5", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "2bfcba2020392d5eac08cf4c45003f8b2f6e46647d3d48eeef72ddf4747b1572", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "aecfe05ee87ed174dd8c8cdf8d7d0d01acad459172ffdcd850d9238408291a13", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "72218b6928f5e04673eb2e380a1fab523cc087dd1c591111524236914151a5bf", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1d832fba74ed8fc1c2cc838a3be463e29862ec6128305578ee2e05bc02f3fdd7", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1d832fba74ed8fc1c2cc838a3be463e29862ec6128305578ee2e05bc02f3fdd7", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "4de01ea8f88cf2bb6c8ea54685584687168dcc3ed059b48ec624cdc378484eea", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "edf69a70ca0242ec025b7b5019fda20d4719688832d0d5055f4fc2f6a129bc88", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "818bb6606ae7877f53d06e2e1b6bacf4a3c63fb185fcee7e7e973479006df867", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "311136412d5763c394d48cfbae5ee9e14ddba075ef2eeb0d102cb71bd6df9349", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "a0f32b69189f9c66765e9ac3ee198821aabca6ecfc0b54d789bbe437c9c203b5", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c6cdbd753816e9a9b92abf7e9b6aa2b443e16d7da7c65ae47d5f25aceecf22a6", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "310d48d8ec25f3394454e1c4e4d2d1fc6d9c38d77f4f0397a754246754eb4565", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "fe73fe3f684edd53f56bb14557b943f734060cc67afb5451375a709bb4e32b54", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "3f265e4b79320945c6672ba7b2726fd6a18871bdbd30ccc89310eaed1ff1ba8a", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "1389109e8d032789b9549a0af0adf8fc3e7f7f11207b3ccc52128276e344d6fd", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9837623d256dec47ed81f66d06ff460fe195d8f17ec7a40aa9d761b9b7299a89", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "56c891303e22b790420bc1c961ad385f1f9cdb678da1948a2173a47b95aa1de7", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "3b4fa6b04ee904338bf771ba98121b3729cdcb3a92591d8a21f4217834744b2a", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "e0251f7bd14622cbb3e619645ed170e813b2bbcd62ea8be8cc8a20d8aa3e9b5f", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "733474b88cec5c9058b68154f8fc2599837a07d60862494eced8cb3b13e7d0ea", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "4d5c863ecd596238e414987ed77648de0026af263a6b25442eb21f57a012b570", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "b4ee453a0765680fbff6b860caafc611215e2822286aa51bae6f5e201584ab59", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "5d5e24bea2d586d00bdb6645654404ba572ef6b1fde0471512459f9e9d58623b", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "3c67244ca557a154e8c7f14e12a392acc27a0e5d8e65458f92d70d3d749ba2a4", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "f1b6dc7bd2dd2d313ee5bfe0cb477a635ad0285e3481bf7c7649ae02886dd068", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "90e944bd904e00a8eeaa5f74054d2a23c1fce91a17568963a0f9d2f958b463f8", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "6000c7d2a0a84989cf46d3fbaab03e50e227a2101865cbab3aae32259dd356f1", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "0a8638690a313202855cf006216d9facc1988871ab7806eb72ddb10cec3e7d50", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "64ab7e2ee9cd56c0290835420d9d67031ac1b4647f46c89648fac0634c019a04", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5e783c4154e27d2552b3f8ba150c8f824f1d1dc230bc0ba03c3d29a6c7030d3e", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_grs.py::test_legacy": "be99d97b8b4de3b05503c7d282f37c9d4e94100b05f9736219d950c2039561c9", -"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "df82a181215f10d1d4ab066a3383218e91a6544864f30640d5dcfbd3c4a57dd0", -"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "6f1047ad5e2308be391677ea21477d85f495914b2ed6b4e872618b95df9c496e", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "016c2573561c93095525a97d7cf66511f4e4c3c05be88c12cd47aac126a82814", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "b5eec23fd10bdbde987c908ddcabe25edc6f56dbe2735ae5a8d811eeb48e5954", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "01f66e42a1bee61be50112dfb9edef142336296f0b22e25bd6504d697545182c", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8f91d0ee80e4e2ce9eaaf73cfb74aab411cb00d051d002c8af405fe7bc434522", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "4e2fb58b95713f5edad6d9b180a40b9f94ec84d59add6620181bbcb161ed1c54", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "279a9c6c01e26c20018be0a8221fe8c031b4cbccb7bb9442286360f234e11a06", -"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "6c8989f2f2efeb0daac7f520e2ac8394243501a204c5361e0fda87f0d7af6717", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "f4fd0e6a2437bb91de2d2b6e0067bf1fda3feacd28294e1705dfeb96701d1dc5", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "bf2e6819e6bb985a3cc1b87c6fa16b243770ecfe81d01641715055306d8ca8c0", -"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "52bb7e54e28962c04f055b6541b69bffb297176e65c11768348c405d19a75d8c", -"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "ff41cbbc4ad7eeee4e8b833b7bac00866fe49fc37f533921b0aa9e9723a30e88", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "4ddec71e6b2bb700ba1b69c2c8c7dbb006d84014d48b97232ca88a1d40aa23be", -"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "8adc758439034a2703614e38c24baed045b12d0a2a68cae051cf9638a5c524ea", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "40e97250493547459df6b1cf4bf31ebf9079f46aed2a7b019abd22408592d95b", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "dd0f09115fe9752856dbea38385e1007e2e8097289a1f81dd66c61983f786589", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "6584e6b04345fb9f6dbfee4675e172f4623d99f64359569eddd140643643ef7d", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "4da2c534589968fd661a8bcbb411a7b27a5d59d60c8558877948cad684a04daf", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "873614b7ef1fdc4bde14b2bdc4562cc981abef6609ecbcc05310109fc8aae71f", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "e1a96752a2e0e77a208883ddda8f9ba6f4a7875f051ac9af084892013250be45", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "818f13eeded2c1490dede1d4fca85ee09bdbd95bd2fb6bb0c1bb52ed7d8f121e", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "5be44b7dc454c50ebd5bb4ef7ba514f5e675a78b895102dab4f92685ee7bdbc5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "64e0fc1f46edd3305d0086f7ab8ab0f185991f7c958e8e73fdb620679bf23b5d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d75fe4d441eb9bf2368680984ef173b36623b054434e3150b6d5ac2ad8b4a27e", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "a8a89f1de842a677280887924408e903536ec10b8731ef3d4904eafe9e43cf0d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "d5654cb6db02db06e336f12231f208aa809fa3bce9136a1805121eba40298470", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "9b82a303cec3c0423aa1f0ff1bb093a00b47014d5aa2a3c87e8cf46deef6bd21", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c1cf7fd0f3ae19d0f05400ac6e0b229f857880048b651e708670b2a30916f4d4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "882eb463f067bb631a13de2716fe6c86430c0cc64e74eeafe1411a139adb068a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "41cc8e1943eb361e8dbb1f07fccb6e773df055a3d87327894333acd1c4ee84fd", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "b73227f6ee3db473fa0c8e2ab92645edf01fa4d0393cff148f064d1454c3c86a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "8ac9e2452aed8d9a7d6bf871f18703bbb5e05a84b94278a2f4bb520e0175201a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "338251f79861ac4bf1f9ee5225f5f2924625ca5062648593b384fca23ca3d7c9", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "b7f1bae41e20f5b797094e141be43605eae9ac2eaf4423ace9e01ac88377615b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "dfe36a4eccbfa6d8b6768b04c9b653a8bd87112b9797b5b2ea44f427030e22e8", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "66dff55e207616a0165453030f14e166abe999eaa8f668009d375bef566a25ef", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "5fe48cbd746614c274ebc6b2f21c49a6eca3dd592caef892abfe53b033842cdc", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "c77f93ebb29a3494ae82bf26ba0bb55e5a2d88a49eff41cebcf998827c43797b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "5709b0bdbc3b4ed91cf246cda8793ae9d1dc918ddfaf8b52683ce9efbdb5480d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "faac11dd5675b72e81690ef03bf0ae315152fb32035fd20c9017095ce91555fa", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "ad8f5105097d2d603660c9b94b4a4efff197ed9159058ac657e4d779c5d05b0a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "dc188936960326b056ab10c69d0dbc92dbacb6033628641734e18739927f1ccb", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "83aa653efedbc76b391f087b61c8fed9ad11bc9dad11ae4ca08001cddb5cc6be", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "e70e6417555754d9ff2e285cbe4139730416213df19ff091b94416a8f678e00a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "0c10bafa0ee9d8737006e4f4724cc0b15a97fd1c77950a5d858f47fc175d210d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "b05bb936407a9901d61cb4c46866cf39ff203efd79a8daadbf1ad40d892603d0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "d40936481d24180183aeb1ee7ee619b58566a3a8ee6f3d09c557c2fdff9058de", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "6caf36e29ab072224f33c56104e99cceaa2114db27f00575a2851cf973f79ba3", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "b2d90a2d3103bcdf84bb34f6a64eff83a043df27e2ca210f706ad485a83e77de", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "8fd69f6f0497b9f7aa1a872a72fb6306c189c36c672d6bec1c5472fde49be416", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c4f1c0d17157a440e37eee3abbb861f495ad83bd1d70730358c0ec71e4beb9c5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "557e11bada80007136a438cb8341c1b476a3c431946d18bb0f1fd32e339525d7", -"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "7af33c44db5f0d1c11b4d8b867ab3e418e481aebebc60b6aca3eac1b81a6f99c", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "3a106c9ee2f055af336a6aaf57426b48c567f34ff046a459b551cee125d4076d", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "327a81dcb14186287e5fb149328b22a906f2feb2aed3035a0baafe12fc9786b3", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b300fa0558c0c5ae6ef2458d540d3dab90ccbbaf37057466b37d6844f377d6ab", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b300fa0558c0c5ae6ef2458d540d3dab90ccbbaf37057466b37d6844f377d6ab", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "e53345b2e6fe34acac7da7a86e9760eb7da8b653550234e6ac34b9ee984c8550", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "8f7e26dea89e4849bd668bbfcdf323ff8f09a3af5412589680f6d368d6a9da33", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "0ec4b30aa87231ee2b5b971c5852a93bdf1417405571f799de34c586893f7540", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "61d0ce560721c508d04d7fe59040efab6a105eee68299f46e5a56bd7ba8f02c9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d5969ec071d9048997b5994026d6e1cc7600b41910496aa8684767b8ba23fab6", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "da015983d2cbfad9b5611ac37276c11c6f5391cfe18662868dfaddfef700d341", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "da015983d2cbfad9b5611ac37276c11c6f5391cfe18662868dfaddfef700d341", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "3545dc3f9c20473b353db14f221966a32667731aafbb2f37ad2a08ee2059043f", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "c147f69c5ce2ee6fd937bf9e26e1b7b51f553895c84fa8e867d1ddeb0022ab1a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "3b35b7eb9fadc841fc63b7f032fb443f2495e47287b798ba3d89226341f8aadf", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "3b35b7eb9fadc841fc63b7f032fb443f2495e47287b798ba3d89226341f8aadf", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "5b148faaa846f2e0999af3a16efa23c3183cf36b831df21e989d17fba0a760b2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "62cdf5d6375f0f90901f4437d096210a7952d95307e4cf7153722a0c1dfbe255", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "bb7e1d8e243bf0b22dd7205ec965baccddde0f7257b0e15faee93ebd44a33218", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "bb7e1d8e243bf0b22dd7205ec965baccddde0f7257b0e15faee93ebd44a33218", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "d21818619a18e2a534a012d0409b37231bb8ec7abd80f105c98f92b9710014ac", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "7ddefa94bcff5a09bef18c17b20c869b24f313b376e74bac884fef536ea300cd", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "af2a71125d6172755a2dc741a810361993f2bb7d320d073fc2ed1ee748b05f97", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "af2a71125d6172755a2dc741a810361993f2bb7d320d073fc2ed1ee748b05f97", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "5c88ea3661c56f1ee0e9d4e73dc71db720b1a12e89f06c0034da17da71a7458d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "86911f98bdf266099141190a4c182fbafdfab12bb2941f9e1cbddce077ee9e25", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "9a8b433cad6c25b77a51b96351946dce7b062f28d49fdfa1f0037f4365aced47", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "99381ffdce23a27c92ee6785d772100f22382adf652451facded9760d33369e1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "afe783410b8d8c260c16c0eb70a73b9ef3ab5c1ec8ac0d940884d9121e3b886e", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "efbb71256f778a9ad83315e355786a1eb0b7580b3409cb291d56f6946a5b49b2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "efbb71256f778a9ad83315e355786a1eb0b7580b3409cb291d56f6946a5b49b2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "1b9361eb018c2fea54c8a2a15aad880ed553bcf42d657a1e1b074ff4378ff4ea", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "6a3f129b56bcfb4137d71233ff80b54672c0864615b92c2260aeafa4ea2dc24d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "3cd13652fa55d392ec8869f318e30dc9b7982848b55d592672a744ee889f3b26", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "3cd13652fa55d392ec8869f318e30dc9b7982848b55d592672a744ee889f3b26", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "4ea5a2606302a10f98e623df421aa79ce263dc6833ed0752da4ed28b9c1523f1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "c3842280da21f806a100e6b25a99cd6b88fc57a5cf3c1704141f85ae51610ab9", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "3ff1340e3bac238889358f521241832d8b6ba0e210a4b7dea16213992c788ec2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "3ff1340e3bac238889358f521241832d8b6ba0e210a4b7dea16213992c788ec2", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "447df016292909a1235329a669e89e8adba7470da2a0dfeedd18bef836c68a56", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "375b8978b36a01077a42b90257079f663b996fcaca5df82796b2a4ef277c27ee", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "632329af9d2e7b30dec1f08992a0bb4ff8ad7b89559615a72c744e13d0d3e763", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "565706706d500d2a80d8045ce8bce54eaae8295f04fa37619d2d7d6d6fff0838", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "71188edfd39aa447f7a29840af76c42f6904c1556c9df19b08847c28fe776b38", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "ee5183f7f29e2b4768b82f978f3f0db857f67ea1f90a0b01ad21c31c1fec5e61", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "c0c68103ee11ec2e03cd43162d587f291ccec2959a8ccf7a7c5bcb7a0813ddd1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "2edbbcc062581811a705cd371d30548a6987661e8848639b0aa31c06d6e06126", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "5c184aa6f6441be4eee492aac1b25dfcc421c88d1476c90f2823b112393d3ed6", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "550ee9b583cc580ac31555ba28ba3f7c487eb496e9ea4dca64556b8526629f4f", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "b3f103fca4334f067d6c4371472defddafb9ea0fec55e21f78182c6055c6b26a", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "a2516d713e1912261629270aead505eb4a8e0172f918376c8ec081c914e461d8", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "31e720457d45817820cadbef544830d6ec3f21c1e24c470e3e4e8e2889aea2d2", -"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "31e720457d45817820cadbef544830d6ec3f21c1e24c470e3e4e8e2889aea2d2", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "6163b9bc2f1ebb6d9b100a4644088ebcec42f0e2197488d2fe877a7a288a730b", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "efc4e6f6e043d755bc45b405970ea18fe4a1f63fd34b080ae356b75ba6fc928f", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx.py::test_information": "dacc0fabc22aad097411fbae5d298e3a22bb24d0a2de8f69b6295b456c93875b", -"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "15eea1d28cdc9622e245436cdba71d7aadf9ca6b32f72917115a84362120082e", -"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "9bbb99749d00f6e3932e2707330769e2661960e08cac9eaa3e73ac3a3faa6969", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "1537005e4c553a45a5175f38a2645dadf34f54f15d30b86d1cc01623ae266efb", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "68e22e79b44e93be5556e95e21ca37c3f7b422bcaffd32dbacc6bd976e26e2c8", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "59f64854e8799bed84a21bec56fe66ae62ca5383d05ddcc1aeb002178ba9e15f", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "68e22e79b44e93be5556e95e21ca37c3f7b422bcaffd32dbacc6bd976e26e2c8", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "59f64854e8799bed84a21bec56fe66ae62ca5383d05ddcc1aeb002178ba9e15f", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "0f73bd41cb182855f32747ae792250c38bc7db5a914c1fb8c68236a163bf2b2e", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "46e9c2c9208833bdffad5a34d429c2b098aa7dba3aea78f052ffc4ade205ed66", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "765466ee775a81a806b1b96ae67454fedbb7aa9b2a1265740bfff5f952cec4b9", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "de3aed944469381f805edf3495c56a2883de67c63e04e299ec60ee8397041911", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "b01c85a065803008d6339244065d3735cbe1e7cf8c89d05496f7e2d0d0a22859", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "a4766a9ed6423c65102ff0d7226b68b8b29eb67c8bd25ccf22356b2921c46beb", -"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "dfd430c8fd3bb256fc2acbb7207a6f638e9f1c25068fa4e2b6592b29ba0e0d7a", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "10c58cbebd20d58b818d154eae799c576085e71bb6fd30a63100315c954bd59c", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "4f657a569278424f5e2d1bf88f688a3939d7801b03f0df0fe8b8f286b2f03174", -"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "1691e752aae6d2f10766dd4dc829aea46f8fbe8a92e36348cf5dd2ea062593cf", -"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "d347246eecf891b91f40fec460df5473eebc7d37459c89c15a3b884f34ffc456", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2e6f6c7cf7e76021f9dcf841e3bdd8b0660ec5fff2ef91b1dea303faa9a87cf5", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "c83152f82d2ad7de5cd5ba66e626ec96311a18ed30f128580792db9d9b461d73", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "f28f3f3f1dac275e096f7f87b428e8d391825d21ad5a7f90845e127f44db28b1", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "31373b636e6e7eae6bbf8ceb453bf6b4ba4ba0b44213896845ec1f7b212314cd", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "31e720457d45817820cadbef544830d6ec3f21c1e24c470e3e4e8e2889aea2d2", -"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "5855325cbd2f05391091ccf6e98334928d55a570ccfcae970e27d21b99e74911", -"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "3dffc6a3f6f2f26276026c964e500a5a43e508cd1a12c3dc159be1587a571c61", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "dfd430c8fd3bb256fc2acbb7207a6f638e9f1c25068fa4e2b6592b29ba0e0d7a", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "de019038cf5eb75ca43b14b132b0d6b42060f975ac69fdbf4304d2de6f9a4c9c", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "f83bf45159e8f62798e7b1c0f68079e69ac6f8a83a7990f6f0fc8c15b5e8ba26", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "5f45551042beb69c8af4ea492d715a1b9dc55d732ddd90969268fa2d24093410", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "dfd430c8fd3bb256fc2acbb7207a6f638e9f1c25068fa4e2b6592b29ba0e0d7a", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "144d13e3b625bc9d1c5c8e47b32a835c467b2ae18e7f76b145cea08ea274b698", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "6b43148eaae330b2726f36072ad7a141501b037656f8aa2b43b2cba6a26784b4", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "36b353c6c30a425f0b1af44f1e47e64e58e478b7240b86adbdd215899b913f0c", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "c71ae1d43f998240247fa4e1d659e17ca52b3ec425a5fd1ff81a184fea373f89", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "144d13e3b625bc9d1c5c8e47b32a835c467b2ae18e7f76b145cea08ea274b698", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "7dcf5f3c53b9d56168e5fc0c93b3c5e7638717c98fbf85626b3280b9eef40f6a", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "247f0527e5ccc064ca80480748e200a5db3c1d4ddbbade2e60693d3fafce92ba", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "63828867ada712e6762ca4e322eaad355a1112663b20df9adeca41dda851a952", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "fa0d40f7d5d39501fe22fa349a7e6d81975f2e38e9c1b39988bab0c527d4e8ac", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "ec560dae70126663c75fdbcf285ba06d1352afd34554ec85f935e372fa5028ed", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4f3531120cde5187a6881107ab65ff4d65331b09913bee6c4d5a54b29cadfc11", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "d9eccd2d3ed1f6222a4412bb7bee7fffc1deacb6cc58ba0466c3c887949379ef", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "73284a54f0108308e1eb87fab90a9d9e4caa70cbe48ece46a54e80da03276487", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "7cd517a12df60c7a9066a58d189e1d3c43f947cb8cb0834c9320b0707b36083d", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "1f2d64a66a68df42826a6696f50d57565117679a9d52f11daa53237fd9d46c60", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "d65086d477aaf1848fa16713e902cb26d4ba5a43b16931045d8a1cf29e2e6b4f", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "0578ace8f827c78674377aff5360076ee8b84e507190bcc464db039a4ea1cdac", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e832115f55f5403da2d43ac5963aa37f057cabb76b7b7843eb4f470db1df654d", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "2e352f56345f3dd1b5e618de94f1414052fefc9fdb1e40d73fa2878450838bfd", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e832115f55f5403da2d43ac5963aa37f057cabb76b7b7843eb4f470db1df654d", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "2e352f56345f3dd1b5e618de94f1414052fefc9fdb1e40d73fa2878450838bfd", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "e30c0034a8170cab6f7ceeff239c0652647a421e47c82de6acb91f66456791a3", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "8fb6659ffe4fb80e3dcc23e130555921ee4f3016a882081a42c17d67a02114a0", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5af9fa820a897334011bf71aa226f3b099d0c4d06ef650613e7a90908446a5a3", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "e67652cc4585615cf6d2a8a05b34e3ec77dae6ed606f9bd26c60d9e478b76d78", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "85dc333096440ae135c4afe0b419bcbfe9e51e58b48fa38051ad817ba9f51af7", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "5b62c5c453112ca8de804fcddd43ce51732b2d7cf4ba6e399b1a0488acc7dbdc", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "dbd15e65c6d03329028348d6c3bb52d9243e42135d162ca1a74937b098a73fca", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "b80775ea3e8a7639fe8c7eb5e8aaa32353050b2d12c1560f657f7465d9a16ffd", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "2d58310d1a3be273efe0013cff4717f417a90c8b994a5f711379d94fe9a65293", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "2d58310d1a3be273efe0013cff4717f417a90c8b994a5f711379d94fe9a65293", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "2d58310d1a3be273efe0013cff4717f417a90c8b994a5f711379d94fe9a65293", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2d58310d1a3be273efe0013cff4717f417a90c8b994a5f711379d94fe9a65293", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "20bfa811169cc72c72a636f8e7a34969b32d7e7deef6ecc71134efa360bac416", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "20bfa811169cc72c72a636f8e7a34969b32d7e7deef6ecc71134efa360bac416", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "20bfa811169cc72c72a636f8e7a34969b32d7e7deef6ecc71134efa360bac416", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "20bfa811169cc72c72a636f8e7a34969b32d7e7deef6ecc71134efa360bac416", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "aa9d6ce81a5fc06f125e99918570577042485c656591c917ed02e40ea842c78a", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "3ddcc5dd4a5a17fd2f9551a901dcbb72ec62d2d335ecce9c4b5bb45c8b29bc44", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "e616374910b08a968745f96c1cc60b9b795fc21aa12331e4b75b4095159c9699", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "e616374910b08a968745f96c1cc60b9b795fc21aa12331e4b75b4095159c9699", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "e10a6b55f2b2abfbf076494b9148edd7a7e2e36a742f566586a45867f0136534", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5f40c058a5ff09489e53897f189f821b6e26d0985c03f7f1bae6ed9eeba25f59", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "cfc6a8dc8e420ad366600e89fffab68fe288948fce3d0e95bb332d996331b64d", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "e10a6b55f2b2abfbf076494b9148edd7a7e2e36a742f566586a45867f0136534", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "8bd8498c64adc028064d48bd869cb49365f82ab33822cd7987fbf68bf0cebdf4", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "97c909f9928754727e437bb8cd6dae463e9b7c75aff6c98a050beae009046b71", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "97c909f9928754727e437bb8cd6dae463e9b7c75aff6c98a050beae009046b71", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "97c909f9928754727e437bb8cd6dae463e9b7c75aff6c98a050beae009046b71", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "d6bc2dfc7d636d52308b96b1369addd5610df297dcd251212aab9f8fa5b0d9bb", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "97c909f9928754727e437bb8cd6dae463e9b7c75aff6c98a050beae009046b71", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "01357ebe1e4154c0ec3293763ce504455ec0d6dd36f6b11eb1b23960c826c30f", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "d20595c485d96abcd96416f2d56d1e001edb25ddbb7fa692768ddd1e279e0983", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "dfe09c41ebcf8897f1fb7dcbe4b479f356bf50ce00e142d44b07b8f883940387", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "cdccdd024e7c9586a9b4d3ff886ea819f6d1584d193b07cce13e7b01f7600b99", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1e05bdf18ed34894bf25178fb5e605898f24b9c64b935ac5873efea505b7bf85", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "4f9f2529bd2ad2f559ed3890bcdef65f829e4ef02f54a2373c24fb94e4e8b13b", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "806b765273918b3b9d1baca4d0cf38a4671465fd355be9166ee5b4162c4760a7", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "1c8774e71df61f85b8f00ef7bf71f7381bdf422d39c155a1c9258ef02b7945eb", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "ee25799ce00d8de08aab54b33c773d3f4f75ece65d7fc35ac55bdd5584d76ab8", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "8f3ca60ab5ba2fa3ba00b98be2d663e63077209cc19bc5c95e93784ae0d86498", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "2d2a997b63ec848b4d4a7b87f58f50f66ddbf115924e377d16c63811477c9c32", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "b5d4913f20569c6f0f2a5690d1c339033ce4897d71aa7bc632b624bc765e78a7", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "cace6c835f773b600b4a4930d9f6840d7ab0a808c0d3326cc85d8099a25a5928", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c1e5845151c8d4d9c0c4d2bbd19fb559eb605077e102456718a4a8ec9207e7d9", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "144d13e3b625bc9d1c5c8e47b32a835c467b2ae18e7f76b145cea08ea274b698", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "44e5e807ef05cf43a8abbb9b2621a902faef3561529c7fe31248568dedeade40", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "8f336aee871869e3939142e16bf2d0fa924121e8e24d8e9d06baf54edfb370da", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "14b65260503bd00c75f50ab948a0936fa0468c5ddace8be6593b2df9d399e4c0", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "cd004afee16259c5a7705f0d574c446139e719a1f5feff0f13f8c5aa2f9b0bc3", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "77620bb91b8c84db3c610e0c630c1efae68eddc7998b36e12011a8dfa5cffa16", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "8d3de87ba0ae4949621ee539157522bb24192f55bd17d7ef8b6a85e093373d16", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7a5aac9ba5d2b513a730ec3e76d28c9db1b8fb12468b62736b6263de2869b200", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "4227552ff69b56618476a231bb790389a6b1573b770af97c1f343a7ac3aa331a", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "e67f0da266a9c07195e5d3d678cca4e689ed2b43ec61de447f387806f9856882", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "cf3d1e79cb00706e23d94cf9a1ac32d3f42f0513e7bc87cfe063352ffea58950", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "ea56e00208f99dadd9bd5d3e1e75b67c206482e811ae69d22abcac8da9c6adb6", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "a899e87c9051aab631c88c79225ffd556eeaa9d46461cc0f55286fe4e598fc8e", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "a854e4e578a5629ba5c8b74dbc6519c9e1f1764cfdd1d884da36676b69451714", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "168176d0e211723ef833f2f590fb3ab7231d0b4bfd0403b4f5824bf618abeff8", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "2ec77022be37aede9e6b6a09f462c2afbe5802925880cffc1b676e82c54e1470", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "7c709cf520bf86bc737cfe278a666c013c5e38c0f3f5374f317a49b965add59d", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "510517ef59bdcb8fd9e15230fb0a40696b584ee42d45c85a5a4ea43a410a390c", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "1a2cd9ea5076a654924f41bfeb5f49c54eccaf09f7f50cfa4001274ac6237b62", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "278b597e7ef047e80dded4a6fa0a294b955892165c0956e6a3dfa9689e2ef861", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "8a68104f433ec8f9b327c6826ddb71b4cc5be88ec852e357ab5b380e4f934fdc", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "7e9c2be855241bd0c96755ced9d3beb6c411749dde0d918e88df7d03236a2e40", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "1af177b236b272328a29e9d4441c64d0ed6a7bcdb67a6235eac3f243c68539fa", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "26defd93cb1fbba6aedbe794181b5b078299ecc4d5fce9dae4f870f57f10f6cc", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "4a79b1201b78fd45273c61a6edd8aa01d717e2c6507232fa0cb08267c9e5b287", -"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "f1fb1ee67386807393a362f6910daedc198fe2c6d06360bb2c6590c9f9445ccc", -"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "8af14f69bec0a8f64ffa1996ee974c9280f7cacd9447d24e3dc8e148088f295f", -"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "7e519594a5411f337f7c93bb20233b00d23bc1e7ec7d0d3976f759771dc836a9", -"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "e7fde1ea85113d320299be52a2babfe8edb53f17ccbf282a72e0f30a0f3f6788", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "589dc071f873baf2b1637e12ff6f5776c043ebaea62a41407c41f43cd0ac0b24", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "48e0721a979e2ac69ce917d94154395b823f7b6ab8121451298639825954d607", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "c091a8b4a5b8bc17dce0c9f3b6612a11eeadfaa332dee724dfe08f68e8846e21", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "94eaeff66461b0c1dd24ae787e0dd9d11df5c6a0670c8a47b6614fe9285b4883", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "89ee29753fb88599ebd4323674b7e8b8aede4db15a88cc64b77ba5195ec443cf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "d027ecefa0fc91fd404e0af2a76b356b2889db8f3d36c4d7f42b27a536e785da", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "3c250232834deac2a7f426b0d9210a14d9d74ec83c97f31c9fd917d0f2d8892d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "b244c116d208eb9c466bf426059a5833088ebd72bc72a1377eb0c5a7a3990fdc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "7f5ea0b985087046882d91de80ebcef186fb95d8391ce03380fb428e15f1f167", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "4a99e59439c79c6ec93b534cfe6d348a552c80f52f88615d6a8e8410aa845d32", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "5c4bd2a5c7273dc5e07695f8cce0c6b67377c751a3d4d129b3b4ceb572eb32c5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "ea986600f571a1073e23dea3f0af5c91b4f7f22f45b7fc616e476b6874d59171", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "c29f38aa9122defcd869617735f9e8601a511973e0e5b50e656b6e753786b628", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "9dc54326abbef10818cf6175f19ac174e1fddba34557069f1682ed9f600d0113", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "46dafa6bd4086a8683aa02fb588e7de6313b4e3ccf66101a028375c33ba04c76", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "76384f2835cb02ac6b9031e3c97239349e156ce99b6df13d321e54edb2af83b6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "56a8a64fe921707cc3be47b3667148a0019efa35116179ae5ba2c2ea1b0812b8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "1e9b641443eb521a44fe0fdfa84aa8ee5e7a71986bde13fe2ca08731c153b617", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "2d4aa2e5e68c20324052dd54050c22015614e40d850308a4894e16e1b892080d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "b5038cdf6d01f266749065f46d014360aa8d9663da838fcf96dc7eb66c0cec15", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "3a48b0145adc49b9a046725e5b71ad60187cee346b26ac1651d0d6a8070a3f1b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "5272d4e31a5a42c5d4a777af4e859cec3f648179b8c6a000967d0d68dd258128", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "bd5f3ac6e0b6dd10b17c90bf47299bfbe669363be97f08dcbcac8559586d69fa", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "34c396cbc07c177d386559c127033f35bfd09df633ac845cd96409eb326007e1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "bcfe4e526cde8386e4da56aeb7e48c7789690b872820e8471ae42a05d5a0fea8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "9ec513521237d301de0429f131bbcfdcdb62782ef565ebc54057607df225d940", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "03f32c1575435304a71627913f7e80cbc09a4d077ca5fea82f8614663d7313e4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "eb031989e2de629147768e9621a50aeb6e34d93de9048171f604f15990eac079", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "ad22f8e478cd14a415df40478601e65c4e507d04581a89adeea2d3fc6d07f672", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "8e75ba648a90f42df16b6209f3f6cfc1d4b9bdfa87a9632b361fa5b047e122b6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "9b58d9da47d064587b9f0426e5c8ae272fcca87fb35d25acbcb07d9dd36b2822", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ad161e81eb3b1882e4cd7169f8dd7d518c62ac823eabb0924d478ac4e37930f8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "eae2d81fc7ce7401f2c6da610f589faa5f121339740e88ab5c6366b39ab79ccc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "a8dffb5891ab00298f53c6adeab80a9a02032367c22a6bbb20e628dead3a5f7f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3c028b5f7da91b126147ba1e8611154b0bf5ce8ac171c302837b7ef024680268", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d561570f7348c2cd36605a118bf40f50519362c6d2ec6495ea69713220da45f4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "483c87e32be4ec9bfe94267d663d38eb7bafd17af46430923c36672f6816fc4c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "e034bfcaaccde4c7588dadeada9ae3fc07ec22953b46797b09c04bd8d6c77844", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "68fe32afce56036f3697470d9c2e328d923b9130ef9d9b6abcc08e6c4d4037ad", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "e369f09bb96d3646b07a01844b33aaf0b87ba0e7653929c4ed01a57352a70754", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "54fe948969597c3ba0bc14816ac9fca81cd23b0af2279f5d3fa40f0e12da261e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "59b0a8cdba585785c12e81ac83764999b5c15e295e5f86dac5795c65992fda3b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "20e63b113a27f64913790209e7a8221c7bf6e8086b10432edc4ea9c03559179e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "8b5af421a5489cca1cdfeffdb9bbc2df0cbee2dbbc052316b5e94d72f2fdb6d7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "f3988496fb56799e0563b62e3fdf26d88f25a44b12a4f6d9fd62a3e776219de3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "f13311a8b0810f65c7302500ef5560ee172d3af06f839d5bf073f9087f810ebd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "3029eb646126707fe88371e1c6fa80a1ef852fa2c30cda8c72247ec92f3cc32b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ff4141b2d18f0e5823b0fb2eb272af243be560b06b511a8855c633120dce78d1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "c7a3e3caea4eee31897dc9c41899ee610c6086028b4092cd83d99192fc3a7620", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "49ce175395a0c1b742ccd45f2f1adde0f6ae901cbbc121115c40833f33a6c423", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "1572ef50858c40a5c40d90dcbe63ddf70555c5b644ce435aa7db3ad1b4cb5f3b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "19e626a5a31cd047cfdbc7dc0106b7e178dd1c6afbbaf4c44c0a97901334610d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "82c9a4f1edf71cebcb5c0db5408363aab8a91336006141369edbf6f4a9eb906c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "52f1e15728e3cc92b8f35730456603a4fec43bec10735907cc11996348d02fff", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "3fea701892b787692772beb3daf14d9b4a16859b101ce3c0e923f29651c30318", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "27d4fcb173ebd121f5d40f7b8bb0572b4fba326430c42ecbf7352758c9acb72e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "5855df1d0ee9023ef782a733db231a7393ccde52a08a2794d52eabd1e3896d0c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "efeaf83db0a0ed894c0643c5dfcef4270320d667a38181d91f76fe7dbf345533", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "936d7e77793cddb0e61c29d741eadd61523753fdaa23cf533ed839242583ccb9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "bf7c9f82043518be81f680560330279b1d37e8a9166e86a94058e81866a81d10", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "66bc79219db3750a16873c7a61c586f7f190dfe76b0dd1fbe1fce18fb5650020", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "fff2b97c9d6d9c066ef1a9b3ece85fc31353d722aff59feb086190c19f171d94", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "f4fb5b2a23428b9fba8685eaee4ae592775795f22ba6d28230a720828872ab1d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "978b9ef18fc5e2bd101ac89373024bbd4e3b55a8d217faf19e535747f774297c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "3e97099c11a3cb3c5af39124b46ded74e50286e84107adff193d937681d74f4e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "883c6c8001686663792d1aa0d9becffa40c45718929f3ba5bd359990e2d482e3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "4566871738b6509ac626c867bed7e654da825368caad308f9a101565061f1827", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "4a92b3933804d2dd7d970f541da9dedae05c54045292cd946d5f017975c755f2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "0d83acc948fa95d2d721e25c87a85e4e2d23703ba04e754257af49696c333523", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "26849a51ba387e54b11d000eca54a95dc5c7b3c8fc56e5ea34c24d562f3e281f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "ed88fd4ed5e8214c2035b1de9ae95e119739257b4cc0f7cc56ab8c153f31f424", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "5def1ce44556d4340c4d35b17d98a51668283bc1f7bd2af14729cdcbac625080", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "43936617b2120010a0d8233cd1fa4791d8b205f0c824df380ec5f7ef88b51b18", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "aee2dc0b96e4037db5e0e1e0b1b9747d20d904d5ce5f3dc1ac3c6b228b5037fe", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "927ecbbefe666867af618c363ea31bd5f2c556355d12cf3a8bb8de078a5ebb2b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e8fe86ba16ff68ee39188382fa18971bcb11d8dcc5ddadc808eb31196c8dc613", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "65cb1bc9ecf216f2108ebb57a8f8c5a1637b8f1cff56de3df5496bf033907868", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "fd30978a1e5919bb7ff2dc6bc73d007a427623b6f13fb290c58c17494d82d3f7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "22bef1fb42ff185ea1e57d1bbb78e376a3bb3ed12fdcafaa4996218371846ea3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "ccac209ac6baf990cebebd6ea0394863836db257d503de6058330dd132f1d399", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2d4a526bad72165c7ac481ab1d46b7de89372d8d3f1c5116397f9e66ccaef917", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "9a95824183f349b18bd81d586091414dca7857f350d6ebd9320e8d3a7965b1a9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1306fa2f53fbc23b0543c3fe0b7bb40afbc00ed7a7b451ed9a672fb2efe08d4a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "c0f4bc4fcd8f961e59a0b9e8aac26a440ea6cdcbf89fe5e6f9b70ff36ac5f55a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "78dca3c03ca791ffdc8c020c3856a26d6b331e90bdb340ace63b53c81a28a82f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "de542736369be54a8f2a526a438d32b159092ca4f135d49b31159972725abcf1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "712090e46f213fa437f87ce9604d0ccac58821b12f1170fe240a206f81fe291a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2691c0a0f251376942de97466e5510eec285c896291986501058d5ae011c9fcd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "580f1a97538b5284c879771831574e0d291419ea1b4685310edbbe50d1b34267", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "4a786f841d8258f662e8d77dee9c78d8d4399c410fd93680af64c803c716a283", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "86321610af5463a60ac33f936412663b84d7cf72d1fc45ea30da829fd393f6c7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "117c83b64aa7907db3fef575d470fa1c3abe37d83981e221dbae95c2f4f20333", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "2f21d9ced48a13cbd98754306b5e1db6ac0b7e79d72557babb4e21b261814b4a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "6ef2dbcb6da0d9c2a1e1b49b433fe76b0979073eb8278a50b90a64c474051022", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "9ed165b7fe19a0700a5c3e641225bcc7c09f2611f46071d3b9f2c348c4a4ea9e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "84fcd7fd3cf6ebf028748f1404a6b4172ad71c0867196974bd31f471e7bdf164", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "60a6add5f3e3c9a3ab40a7c95953b4c616ce5c3aafc6f0b7b1bad1ac6055ae09", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "eae3749f08f6676ba31954ff382534806d0ca0490e743e3ce4a8f7b5b9223b76", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "10ac2c250682d42c07c0d96f77b9103ae006f2743a2e511320d098d3146771fb", -"T3T1_fr_cardano-test_derivations.py::test_bad_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "348f36bbd28a87f984a883807fad4cc8abbe229e25fd96dba3b63c7d2a752c51", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "10cef1404d565fefe6acaf41f38bb51b312aafd0c18172e80d08fa00c48ad158", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "6ba57282a6b222010d76b1d5e4d9634261a3d1eb3bf9b57e85ef84f3cb127ec0", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "1b8b98cf3c4736d15609776029b1d6a1d7f60c892b7dc0ede97cd0f7aa7aa1e1", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "1229f7f99cbdd05efba4adc64a211bd4607a310f7e19cae9d18965cce113050b", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "083f9b179732044477a98a6d6509d07e65cb3e74791b3174037312b0dd07423b", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "b098912ecbf65dc895ad329931639a080d7a572a47eccae86ce1a26885b9f3f4", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "946f552c09e94fc29089c4ca18f58357f5731c24141bd0f0c6bb1b22a71796e9", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "b6abc957f9c2d35deb0d07d6c800b2dbd1ca45c71259ca0272a53c4d97a8f648", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "97904eb3d465f6c8e40d7bf99175d5d4f0d6cb4c649885a0b196284dbbd1aae9", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "9d33b2a7aa71b5f8a227b5b77c9f9dd33d7f83d3f533d0aef17d393a5d30f592", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "b23c6e5de33233b455e46072b71beaac299e261621bfcac44f5d010e5f0e35e1", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "31b8427d5d73da44f945ae63179877af261c20ae190f8565139018a786fe1679", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a247a96d043c6c34750d1d440737356a9d89295fb744ae4e1144ac63e722ce73", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6dd92ac11aac4020e36b2263a119cbc2f4d296867f2e699f4880ecfe2452325b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d46b9066946d1051c6e9c8be596f20f12e6df153e072fb569ea9de3151a7eb7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4368b9ace836da6c57686ed466a2edcc5169e4228623cf4503fb6a9d25e95ff2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c3e46d5fd4011be753b0275bde413142da68ff7b64df04f0ccf835f8ad2ef815", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "721a67c17cabe7f2187652fc8538ea8dc1f352cec9bff870753ab647176f7aee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "f44feeda372d3762f976e4eeb614b18b6e36a105e095dc5900e17cb83296e1ee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "5230915c922e47a9b3036f3f4524fa6b6410567bb8dbce17ff2d7afd9c85e8b4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "f6b8def397c8914caadb1c83729b768b406abccc9e8ea76997b330fe26dfbd90", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "180ea1f5056e98dd08af1ade3da6c2931542a1b1fe724dc10b0db0344859bdb9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "6eb8cbfb5beb04dfa512492ced392dfa13b2c78c0229bc8ab821d49b3619e75c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "200cb95eff1040327aa5535e3cae0deac251dd3e1a2f865325380d9bf550d4d5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "200cb95eff1040327aa5535e3cae0deac251dd3e1a2f865325380d9bf550d4d5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "6206e110b3f3ccda424afdec551fc11a1d72208ec605fc0d09572bfd674ac9a5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "da8318f687e7f4a199a728b6e5090f20acfa98766fe10f7f852e2415260b9d38", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "37a26efae14024f70fcd875a41330c8ac784c68f26f4e3364a9e602277d7d46e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "e082e2963ae857df58fcc25d3c8e874f1b9ff38c6bb3de91e36179bdc2c855b9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "98afe06e1da13fff4af6746555a53aca5903b8872b8219677384e24f13a393bf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "e299700e15a1dfcc70ef7f6c639d185bc94c1716351a251a17b58eae8d6eb122", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "6b40ae839dbcad640630a0f59be971d763438f317d3196c5571d39f478d60390", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "965ad5d3a51137b866506a881ff9ebf45e0f10f0c06291551a7ba2fa16d01f9f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "020464c3d9e7b8bc30068fc37b8b9652952443214008bb0284e1ea399637b02a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "98afe06e1da13fff4af6746555a53aca5903b8872b8219677384e24f13a393bf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "e299700e15a1dfcc70ef7f6c639d185bc94c1716351a251a17b58eae8d6eb122", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "2330a36dfa9443ab7f84dc03d3dc5bd4d45b75aa8680b2f00184c58858806ab2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "290975661c25127e4f193d263f01f7043a7f6cac56fa94b74b98d4f32452aff6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "91c95f5805a7c91dbb175ca1eec8e617122709cfe682d428c46337e7dd30d34a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "e37a58c98d941f787913fc28891879801f787d8127c43d6836c99699623af5c6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "d6ed6f67312f711557facd7bbd18c490d75a8cb4a4bd68ba45170e59985a2a00", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "3c45438dbc26c79e1eae654b5ef6f67017821505fe496ca63adcc701ee0b5e26", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "6604c71da8aca55d7f21b3cdf505298450b07a016f03e8fb5625eecb29a9442f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "bfecd3336d6f8ea91ba704910c81c62c20b54d1e2d3705be6a1d0e7de08b8045", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "cc8f8b3b3c30bf42fc070527464aed40544d6f69ae5328321685c454c2d1ba43", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "20a1c290f62aa22d954e103f948fd2488b6f8189131fefb9e4a89130e20cc66f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "f605d91b475732c322e3d46d7b9de595073f0d4151eefbc334e3bbed033f12fd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "73200634473aaca0cc261fdfb6464e12ce7bb10afd6d7a799da8ae9b23f98f9d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "0e8367c5539fd931257a87d6b86bb39ac4e79bfdf28194ff35ba6277a7ebabcb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4008b7de0da81e06ba2ea9b1f41b64d94ac570b501da60102dc2525b3290741c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "230f0541068c521791431d35de593af89c658fab41acd6585d7828d5a2821f3b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "222ce22f4a9573bfadec3b4bbfb8e5d1e7e5743cbfaa12b20d9df0edd609b1a9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "848d70c6300d05eec597a7e49224b0cee42b7829b52ee94bc0f2f0fc57f75660", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "c5ae622e2eae9c824cfef0ad35b0ff1a83d64fa2ef2059a0997f34bbb3d30377", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4fc2e47e542e8abfcd24aba3cc804b657500203decc52db30f4f82376474075c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "db6c6a843711bcc4403c1e97eb578671c148c44bac35aeb8bc7f8538eec73c23", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e63d48d6b6e10963123d3e2486f487b9491733e9e7ff83dd478623b79a6b6228", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "ee3518be3da2b70b6388d7ba5187fa009b2adf1499411598d9c14e18064950b7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "e48d2a00df47c898ab64e121285e9437f4acc3e564bda6e43d66bf99ef2aa0cc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6153f26077e179f04d91c89d3093e255cfb0965d8b14dda55f795405814e8b6b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "22172ed4988d51d0efdacb06e389ac9249804247f78377b90c090a408e5643ee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "f402188507a2e32ad545cf8a76e674fba688a427cc53c94fb9dfdbd03bdd471b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "8dbfc0d37ada2ba012efe4be30ccd86fae4ede85b25323bce7421cd19a2477a1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "fc78b140c3fef605ac144e55adaf4c9118d350f3bb6c4e4550ef3f90a185c9fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "4a95ab663eb457f875b5371db489701d3a6d94e2ac8f4709d5507d403c6c0272", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "ee98405d0d5c5f40f46b1a964a7501ad627d865924027b6660117b755d1ccf9d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "a3bd2ba1e5ca2d1e45d8e80e32af70b3563e2290434edc3bc6ea521651245fb7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "b916f1ef8486dbe21911605d221abd1717172d8dbea855f20877df51ba328a19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "1036b3f14ce98e975e7c30f0ff7cbea024defa38290b3d99304337702bb57150", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "c7237a7dc8634f7f108c2e92a54d45f47972e4221b0d36338dc1f42864c4e85b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "081072ee6565c1eb68fa36d8a836d51dfc0c79cf2ae41407e57f0f959b1ea06c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "dcaa76601a2d1f35e80d823b64549cbe70f08e497a9e94fe7ca01b9a78e29c64", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0747ec3ada8094289f67bada14035d515cc01372f13f1c221f7cfe99a1c03c4e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9e906b70befd9ca8c569c66505c34465201127561449e52ca2e6f96333d26dcb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "441a58070d8bd181ef5235c1383facbbf39d0abd08417ba32f136862e039b61d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "a83dba693d4867f83ceaf0cadb5e56332101c40b170145afe73f91dab20ab140", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d23453f3a51a7cdea1f0e136feecae14ec5e50a11a7883e334e0986d6a90042", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "01edb3b1f00e99171c0c67448108ba40faf322dd521f6ed669606e97b2cce1f7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "e6c0a67b3ec82ba119ce34bc9b1b834c4e9408a7e7ac50ffe20feff174b68fec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "5967a3a8fed1f910fe239b2722e4075c43f7707cc40d252a2335ddec643083d1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "02df484e4aeb3bf3a17cce2ba353ba05f9ae38cbe6a4a3f454831fc50dc3c0a4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "55e581d98e055610c2d926d4432c898f57b9154114cb12fdd014a0d09a888d43", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "172e95238e5a4cefa9061191c94ee5819f5d0fe2b1456118f9002854053d3bf0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b99d88505ea3ff5c55740c4f5fa8730d6f10665fe23a48595b1f6ab9578d5b4b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9180821bd169bec3ba03d5e8927ee5a6dea67bbb6eb259d78b827d81c124dc3e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "409184c7c817140622c36ea247fd1a93f08fa700fdbef8273353830edea44f7e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "bdfc61cbaaa1282755f90c319acf70e1f234a8e8dae447bd8c435f27f56cd079", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "e79191d0f48daf82b98c81dd1ba7817f583434830e79348d838855ea88d80810", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "e79191d0f48daf82b98c81dd1ba7817f583434830e79348d838855ea88d80810", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c53cf72db3aa6fe988c61d0976e5ddab0ef0549d5e843b0b361d1111442bdaab", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ee4e27b295894cb7b729920fd8ba01d10c31dc4a6ef9000700cd6827476124fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ee4e27b295894cb7b729920fd8ba01d10c31dc4a6ef9000700cd6827476124fc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "1d44bb18575b67adaf4b563103e7cbeecd4b14066d7301d48f691fcaf6037d05", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "11ab3ad9d47667e96bde9cb0fc48d0fb3d64dcc425cb7fede2f568f18e09f4a1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "3f066218d52f0a13cea698d272c148df06959e465d224579f986ff23da6357a9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "2faf9a603e8020daaeeb820df36cc697ac25c4371d69faa1207d79e5dab0b4b1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "d7bf0417f0593d2a31ad5f72aa73df64c4adc215b7961dba1b82482caeff1f86", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "56c4ce7829a0f0cff638a59d4fbae5044e669c42daf8d9486c34debc53fa0d93", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "b2fac7f82c558d0ceb48095bc2312cdf8eb3ea6ac4f8098549ba1a96fc7a402d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "eafa373e1c8dcc2485feb5518f09a7d6819243458320a73f94409fbfe673b31d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "4a2197237b330dee82b1e8aa94925ee8960556899e03071cf7f9a4fe1dbcf730", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "b9c94c88588f73df1d6a87ff4586a77cd567cc7d0d22090c78ab03ee41068661", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "a247a96d043c6c34750d1d440737356a9d89295fb744ae4e1144ac63e722ce73", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "f44feeda372d3762f976e4eeb614b18b6e36a105e095dc5900e17cb83296e1ee", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "b987951967e05158d2ed4fc75bdc1aaf115e5c94a02834a770a83a12d1ac3c8e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "df72ee7c4f39d26e1351eb75947da6f52925f50c201e764be2086b55a0c9b5d8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "df72ee7c4f39d26e1351eb75947da6f52925f50c201e764be2086b55a0c9b5d8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "9f4df2413a0c4fb1b0e1408f0402bfa24d09eeafcf31c0774c7f3c4c79d79750", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "b9d971941eeff6e06fa55cab19477c7ea5ac5377941ff05e1b3ce60ca7443d0d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "6430baab88317b34efa9738983ef21fc17c3c29abaf1f4e3387429f1cfbf5240", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "58caf49ce150f39f86730826d8e2f76ee10aa0aeec94aa73086e9260c6c3770d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "d9b018c810f7b1ecdb59f4f955430f0e6701f64c84bb6b90e00a5bcea69f51e2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "7643d62a7b5c42bf307df5ade1b414ed3a57bf39784fd3596065093f429a0057", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "434cf32f05ed1b5f4c8513fa43aa755959850764c91755f26795d60a35b5a91b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "de26f71c862d3cff0902aab7a58c0896ef0e6a3c212c5600727321bccafccc19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "de26f71c862d3cff0902aab7a58c0896ef0e6a3c212c5600727321bccafccc19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "de26f71c862d3cff0902aab7a58c0896ef0e6a3c212c5600727321bccafccc19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "de26f71c862d3cff0902aab7a58c0896ef0e6a3c212c5600727321bccafccc19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "d9b018c810f7b1ecdb59f4f955430f0e6701f64c84bb6b90e00a5bcea69f51e2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "fa400bbcb2b0e4414004643f471246a8d740e141d366af13d836dc0d98ddacf6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a999c7f640a0049e96cdb26b3cc79dafde8be50fe35763c6839fb6ec985b3a48", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "4bf5e96a0f55d129dc7ce621be473d7d33631d1442b7d6cd6527b6816b0db68f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "8c2bba424e6173268c943cf28588e2cc81dd0bd597cd3b2f15a23c8ec3b8565b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "b7032b9c855121e807d593fd8bc04c47d6ab45afea113b7678a2cdfb97add2b3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "e8059d0cad745d08e9024e8fe42ca30216352fa66b3d639b24dd02053ba426db", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "6b68d1f69b5bb4dbfc25b5a66ef9fabbe7cf9dbddcbd92117cb697759aea25c9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "75de63570e643f7d9e14bad7dcf1645a7ea7abbf5777bd899d31bf8dc334a4ff", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "b4a35ef68dbc92d4be37f46ba85a305cedfb7d2e03cd4bd6dbfb06d36b2859a3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "51900ba5e18ab7eacf6b5d84deb7d131037da13a08a714ab48cb6ac553920e70", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "4b2acf5ef0e4f01e7d210a8841b995335d65587da2d8ad40169fb6b0e09c1c87", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "df72ee7c4f39d26e1351eb75947da6f52925f50c201e764be2086b55a0c9b5d8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "a604e9df54c65c1ca39b91236381b4509303ba24e81c7b4d301a8f65f66173c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "c1886fea9a07e6d80b0bf0e315cabbfd291f1cd50768447e9345aa38cc67e4a4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "b10a3a319fa1d0787ae9d3b6df0293b208b7521d9991a91f84dc5783fca85ab5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "646b7fa572e0cdfcf38be5ca1ab98cf6e2fde93a054d200c2e4679afa13e27c2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "9a19177eb4ade4cd4177e446692370c76b6a2367f1078de728b0a5b92bc496d7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6424699f3f7c364b2cfd983198ef329776af238f3d27722556a70c13feb80800", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "cfcecfa6bf5e13c6b71349fe84cdcb33cda543d6b564d2d6eb7678eb0d43c446", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "9ea8e07cec5c65f5d525cfd8c2f2f14cef523cfca8622d006df542cc1b6e1c19", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "3f500b06da6508bf5d0f22b82082a9ea6694cfd3ab11c10efd3d99cba001da13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8bed306a747f8816b2ee666ec740d7fc2599353a7c6de5f21e542b97c3fa78b8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "0506e0240398bf4dbc914de98c94ac4af788b2304369236290e8591a53c3362d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b56c46473d6e6a96bfd6964c5780f2cbab2f3f81822e8e6a16c986770684d0f4", -"T3T1_fr_ethereum-test_definitions.py::test_builtin": "67c8767e9df44dbf8e1d7690fab63c1ca05d1528334c009a6af0589df5237466", -"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "4bd6d3311a0864951360d8fe0175723ebfe8ad58ca48c778aa33cb9b5e1b7186", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "c91068b117db6eeb00422f80147eaf45c4b2df4e78cc7492357ebf4878d86d0b", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "6577cb648044de03d3a464565ad031ea0259b05d57429973ba357a233d20174d", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "aace16c09bb50a5df0361d4ddb5e4027ceb5b238e3037ef8bae8d46f5f21fe9c", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "d37a7508c7ae422772d472b6d4f947c9b378c9010c0eda899adbd80ef093bf09", -"T3T1_fr_ethereum-test_definitions.py::test_external_token": "7762db7c0f9f4b403bf784c40d0242b12ff6418549392f24d67d388ea3ea54d2", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "9c870359a090c12b5a76c581e97cd1c9467afa04e6bad3e016512236fda4414e", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "9e7549dc5cacff7ccdc25757cce1520a399e085709637d7aa2d28a3fe0ecc474", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "478a1220607e3730d360a53f46afc7a74c654b701044e79b0b18afa28d8acebe", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "bf3ec4014e517a77f5f0c9d1cd17cdca3b1cd72a4d56d7eee2ebe797e651dacf", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "d0293dd3be56b373121cb9bc1bcfd2a81d5083c092099383a275446f1ce2a234", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "ad584c33c829b14e2cfd1a0dc99078146801a7b576e59c1636e19a59ff035c4f", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "bcd765ab6b2a2b59fce37a522edd26223235ea7cc7896f08cfbaaed24853e615", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "f6e11a65855c14784d281a2ee830950da69f2b428358c47631fbe6f14963de95", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "b2ee2d2227207afa17351378f8e49485a9ffe694ebed9981a0ad1c4921a73c27", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a7b531082f7f52c5dc7d30afcd074dfa1b22de915ac7ccea8c94cfba5038ac9c", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "31b8e85b40e9b4ae2969140598cea01731290461af81cb38074a545dfe488e3c", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2e0940c62dc48d6a47560c45388cb519e60d18f924eded1ff2c448fc326e385a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "acf36cf0d98e21e8490b86a9b2066617410516eb2ae7157a4ad1ef399dbc6164", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "e46279b14959efcf80624411ab3588332495a515a988adca8012be6a22fb6bdf", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "9a0d52e511fe50200716fe7d87f88f04ca944a5c1278220a68bdffeb8457034f", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d7f72aed84f7aca5be20ae724a397f8dce2a4a715cd3fbd99749b71a176e3e2a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "a5fec7528270a467d012ed5281472fdc41bb278caadd216339a8fce355d158c9", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "7583b7a3cec055454dfcef1328b687d6508d053f7b2cf5670915dd312d3d1088", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "ab11e6993bfd55900553a0fc7db9746853719426c9010d6006014709bb884d56", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "d6356b9b94dbe50530a6c2359b1c253e093bcbedbc93bd12c0802643a71a70e9", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "c6f843a2df6a91698672303a08e26b7f2838ab50ec97e24beac36d5fc680ae88", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "4d9091c4bf4fd2acdb29eeb5221806ac1097a5176fb0558a03023d02aeea80fd", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "c9f4e7b4996946b1e4ed73dc0cf50ef5354086966053140a792250c2d764b0d2", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "d6356b9b94dbe50530a6c2359b1c253e093bcbedbc93bd12c0802643a71a70e9", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "d6356b9b94dbe50530a6c2359b1c253e093bcbedbc93bd12c0802643a71a70e9", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "d6356b9b94dbe50530a6c2359b1c253e093bcbedbc93bd12c0802643a71a70e9", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "363c6c4b9fa4b00a7604f3c61582ba9d025e195fbf1c428a957c993531994b14", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "ca17310a5da02ca90b04c27ce2698d8820c54c4d79900a619c1e4f30fd700a54", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "9f561c6ea254df05336a6402f3159748f0a571783913d626604bed7e172216a6", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "67b0439f9bc40377298b3adf0f94cc35cc1777b90075e30fbf3176341c2292cf", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "69d3aec9845ccebe0c2a740a948c3f07e09b8ea87eb62404122956567001ba04", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "030df26b77a8baeefed155719ccd8863c6c54dce2bd02a29ca4f79f9a6204700", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "5c417eee9edf0ec625fab097fba7f7d7d3eae96b83a1d88cf74e22674288fcd5", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "cddd13b83b8ed7c583f2491856586b615a9490570130ca92cd7731e6db198d6c", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "a5e76e44453e226e5cc9faba0c670fa2225fe0cd2b7d9748b0ee5634ebbbce95", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "5b5963daba1354f589963e6742afa9f7b59351478e5300e53e850e9d41a95ecd", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "4a790fb1f68d4483457b9127d421219d067bcd4cee8361d799bee6268bf73bfa", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "041d3c08c76e1c5326d804c3bcaaf10ef564a0d8029e332a97e4fcee06729241", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "4e1651f81d5268ceebac04bec2af8b9c7db696a4e5ead8dcfbb9a38758b118f5", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "f884e70a64acd742354df5219ec9093817d5de883bc3dbc0880e5582d394e75d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "40a481679ca0cdb32ad6622c1e8e34a4a6959a6035ea6d681c40379230f50e9e", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "d9dd3262c777733f3ea508e36e966767cd6c9b31a209cebdf4ac49e22862009f", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "1385c4f806dfaaff617bf7d8d52c26515f0acdd3df59d724a4d13f5c46b1ea20", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "ffc3e24341d468a005828fa8eb82640f94a9a2564f04abb5ecfc2e348ee610ba", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "4a790fb1f68d4483457b9127d421219d067bcd4cee8361d799bee6268bf73bfa", -"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "8d421792e66da05af8f5d1cf1df4790e195763ae82068cf84cac3c8882cadd89", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "7c34911e9d4f3eb977d1cb86a056c3ce7349d34dcf08bdc10aa2dffa93b7e0ca", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "2cfb122f5f3207cadfcc9b2f941ea20f6546af3ea8f2f074872ec9d9d8cc1d32", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "29170562e73830e866b7aeed3b316f346f29ed2b62e05b5d0c16a348ed8b4009", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "2cfb122f5f3207cadfcc9b2f941ea20f6546af3ea8f2f074872ec9d9d8cc1d32", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0d688aad6939ed0df04dc8a20ea400a626b17fcfac7779e693632a2e355b5856", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0d688aad6939ed0df04dc8a20ea400a626b17fcfac7779e693632a2e355b5856", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "d3cb00adf6762bb54020fea723bbb83787e95369ac40c823d79468ec4e57c37e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "400c762ad06d1b04875ee6d006a41baf608ab97b27a9bab74353a0ad66c8139b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a6d45590af317ce6a2042209336464e83c8d553260ed028eefc6ac2390c38f81", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b77e2634b048fa4bca589d5a550064c3adb1131a11eab5d2412c23a16d4c3474", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "de22945f05986b652091a496baa53fcb44a57880acb7f3b5cc2bb664aca7ea4a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d5f707c265a96afb9d5a644d4716a1600057659d9f57dac692359835d0239857", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "90b187d30d5ddaba7e4670ed597a0fbb535ec3198209ff5932a6ca160ad2b726", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "e5ae7ab85dadeba9554a3f5ec90e70eb579ac2542a9f6463160978ffcc3e0770", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "0e4e8e0cdba887778f4673f8d5bdb94bce33aae726c1d8650e5ecbd13a0c59e5", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "658ffab3c026aaa7e4a843aa94bb604c2f6d37827f3b917d7501b21c726e95cf", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "35526193948a63caa0010e10252ea398c0ab14f38867b4efc6919cbdbafe34cf", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "658ffab3c026aaa7e4a843aa94bb604c2f6d37827f3b917d7501b21c726e95cf", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "4314f2588c7747028100637e782cc644647315e1dd4eca372834dec72ef50c4f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "4314f2588c7747028100637e782cc644647315e1dd4eca372834dec72ef50c4f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "6637628c947d89d5ea68c63b98c3d68ec7ec65da0d699177fc0d46cc769caa1f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "583ed5b7d7638b247fbd2963d17c4c03b8fb5b457ab50128d861cef70704ca14", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "bf0b9b9bed5f87eac9bfa86e80b9663026caded6932f9a3a413712e92846f003", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c6e73f80ed7102b6cfe2a473fd125737535124dbeb01959e4ce849b78a2f6dbb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "de22945f05986b652091a496baa53fcb44a57880acb7f3b5cc2bb664aca7ea4a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "99aebca391dc658736b1be679c00ed67a611613bf70501b56ef1404d84b7ec94", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "5abd83c9b5a307afc27b0ab080bc9cf1b5e13fcaadac30ce15892e53d1f95294", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "504764a3cf64c2c5712259ae8df3f1a9e19cc8d737a7ff36d9e1718cb5e36247", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "50092b33252ef25bf10784a0654d29c7694488ca6aa0d0850b2b1f1045c46752", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3217bcb9bb34f65abbb635493b78d0fbf52c8f6ae149907048ae47c9135d5564", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "12310fcc418711017eb0015d6acbdc6064f1f53d1bc76caa8d9ea4313cfb8db9", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "d5f707c265a96afb9d5a644d4716a1600057659d9f57dac692359835d0239857", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "d3cb00adf6762bb54020fea723bbb83787e95369ac40c823d79468ec4e57c37e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "3a66280a60e237e538d0d456fa9e79caaecf2c9f3557532e726cba14160ba267", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a6d45590af317ce6a2042209336464e83c8d553260ed028eefc6ac2390c38f81", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "6b9dc6332054e9bed06c2bbec54ea61b3496d7a00f40d0fc6685cdec7c18d563", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "58cb2634496e9216e963259a29b32477e3d17fddb14c4f535250f22d4e9a0709", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "d5f707c265a96afb9d5a644d4716a1600057659d9f57dac692359835d0239857", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "99aebca391dc658736b1be679c00ed67a611613bf70501b56ef1404d84b7ec94", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6637628c947d89d5ea68c63b98c3d68ec7ec65da0d699177fc0d46cc769caa1f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "6d8007b3f3b8f804cf6bfbc516ccae660b95c4bf7ac2547c8a8983f0f3359570", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "bf0b9b9bed5f87eac9bfa86e80b9663026caded6932f9a3a413712e92846f003", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a0c487e650835c84683c6a91b3ebcc5f0f13aba403a89ff6ce1f343df4d97f3a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "de56e59595ad0911b72ec1baccc91866abf3372789f54e4e0c96aa38a0d57197", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "99aebca391dc658736b1be679c00ed67a611613bf70501b56ef1404d84b7ec94", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "c4627c506708f42826c4dbda612b46e2ce96008bcc50eec857b8a153ea911f4e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "c4627c506708f42826c4dbda612b46e2ce96008bcc50eec857b8a153ea911f4e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "19ad0ff14d26ba7f57652e7476ce02dbd9eabd50db2345c4f9ddbff5eb95b4a1", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "77435aebc290219b35664b4a52d2648e6878ee5f8dfdad4dbc22282e7df95d45", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "deadd662e6d2661c12fbd491c93b02a69fe6df823dd0c0ce47447b5bddadc8a2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "deadd662e6d2661c12fbd491c93b02a69fe6df823dd0c0ce47447b5bddadc8a2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "04cbfa51b75d2daeaefc796728a3179b82582829d67e4b064972c335cecf23a8", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "04cbfa51b75d2daeaefc796728a3179b82582829d67e4b064972c335cecf23a8", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f29ea6cc96e115c04991c5fb7f70e02bcde2d8e9e11d1335573989e39a947492", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f29ea6cc96e115c04991c5fb7f70e02bcde2d8e9e11d1335573989e39a947492", -"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "74e2842339726b07a9f6f44d161a7591208d87a89b2c94c4e86ec41a164e5ff7", -"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "74e2842339726b07a9f6f44d161a7591208d87a89b2c94c4e86ec41a164e5ff7", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "d296c3ea399f8fecbb2053e4754bad3e2a986671d9b2ea63bc1c44c05ec0f368", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "adc4dfbd8b40710c88e0980209906875cf7a6660a1346d849727d408a41d6288", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "ef959beefde607e191715c39826ba5cdb78e301da58ec2147cdbefb93ad3359c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "4b454f70c73e0cabea843da06833393ee0137bd487d9059c3de72f3d9ebaf2cb", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "10eab0a525ec2989dd30ec03a065f034ec1f733c119683c2440389562201bcfb", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "e891291ced474bf7c5df9caf3ef7262043a313c26eb5b06fb1d9b30d8462c0f6", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "dc9a5d6f051f9ffb79830f13873a9b28cf5049fc4e0212c3dc36b07155c15753", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "aa25784f7428d825156e3253f7aef0072311365286fdc32eb77614c7d2c1c822", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "69d4201cf19efc109b13e014e77075923e47bb33c0b7c6eedcdf6cf25bc11652", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "6b9b03af2f0793bb00be9d168c28709bc9d0dd07bc9db56d84d0da55f9f366c7", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "904641a345e24e8372889499458af47dbb0271ea0826b24fe73ac1aed7c4979e", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "a9f31474838cf9be0b107cfc36f182e6465c79c44e8d3e7a089e28d7b86bc391", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "daf1103e1697023891e41623b771433dc5adf83127f9288ba134013891f75ec7", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "2463cfb384fc75718ed81adea1c1818f8e803abb9878226852e325f961285c39", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "799a93454f3a3a9d5f4b70010eb4eb9292a8aea36765209317708b244d89ebbd", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ab4995c64be749a49e6fd82f08ba45446225493a0ecac052f706142e3f273999", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "f1a3a002fa35c2003757b6bc1b40c46d9938a1829c342687ce206f795cc0294c", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "29a1622a4409ecdc2c20135b4a8fe1e25146079cbfe4de5e990946054d71037f", -"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "c281e3929bb3b15cb6e322e528e3df8958158dc7a7e2f7bac12c1b093d4aad85", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "e1f7bdf0e367666daa35c0b23b79b3bab6aff0ce79279098e1f6bd2a9d956bc3", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "8175582ccfe1872cf7f8d01cad6b0fee8932bbb69258a227f8f672bee1ea663f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "a629fb76ca70ec0abe463431bfb39f039c7d3303b7a6ae9fddfbed2602cf0239", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "c7fc56e70f525059b150204a6cde742d16bff349388df734f3cef04d90749ed3", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "44a46761cf9531f8d1e96d91a2025ea0974dba5a7bd10d40b544fd0ec93e83df", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "7bc7bc8ad76cf11bc82889eb8818073668f3f3cc8f8da9aba423d21a7d82f345", -"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "bdc34e8d827b81d397336e835b4b901e0b6c83ea49d4e3110197b3dea7db3ccb", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b9faced16e759ec0c430f3388c7bb3f60c4c52c389182828631d02b86b72626b", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "caeb6a82201f2727fd832e380510fc06058ea69754c3aefccb198c5109f3bbd0", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0f8d21bf40fff1a7996d720621cd55af05b5d814e61b214588d32f07e07b768d", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c884a42a6ea5495cd42c465463680b79d28e446336789243074a8dd745ffc941", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "b143b00f8c6678c279414aa7266756f7514f35e7a75491c0a21a4abc52e6f009", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c4b62749b1e0aca6bf0d0f8951144d6019f1e78f088f664bc4c8a2d296c20fa5", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "5c8d8dcc4b2553dd0be5cd9fbc69c184a376af43fbfac71e88790a765a662131", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "51888a3a8a96160884652b8e65a1cc325d7fc9ba31f60e9ee5b125cac80b2006", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "74f7f48e2f426c5b459eacfeb6d36a4a6bb56c54538a4b9214d6525874b846b6", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "74a9b7d09b501794e830075ea76da402211dd23f8211ceffd743742a22a226c5", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a6cffd84b01c5bacb7b40d240b8d4c8e2a54becc63017d81d49441463be148e8", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "c5fc0281d244e66ee511d9a93e117a8e9417dbaa758d1957ef7972f472b84aaa", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c1e0f33dee786dcf2eb40fcb9813ae47f0abf64419b295fae4b9f19cee913f43", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c0d2372421e9b0ec7621f8b18ae95a8dcde4223e0038f885286f3ddaf112852d", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "95dc24a40c282dcd6ea597a8e72b0a16c0f5881b157a1efa5111d342713d58cf", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c4b62749b1e0aca6bf0d0f8951144d6019f1e78f088f664bc4c8a2d296c20fa5", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e05fab455d68b55ca7831dbdf4e08c3a53311e23f7a2c44b3b8bda0ca439c516", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "48e5fcdbb33d62434dd7b51cf28c19f4d9091bf1a48fbb78d42a0e028cf5f56b", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "83239fcbfadb135314cdb7b4eae78b51dc9a01e0f3c332d38d922a503ee654eb", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "e0691f0d1395d64de66bb48056fc6b31a0088020155e3ab79cb9c632e53a4d45", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "1e0da201b9e1a0394b1086cc671ce46abaad762d585ade31cefe9668aaa08b0f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "aee0025e0a75ea7925f877af6858a68392c6a834f6704838ae4fe6e78040998c", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8e7cb8ad1ecd59b241fb75cb230911de8b7e8d609345d0a2f53bbd84cc3e9fe6", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "511dc0a8ea3c40bb09f63d4f09517a41967d7563668d80fe13c1bbb29c28396f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b2a5a7011028f184d6da753b1c437d3f31f4e98332ff7960d28a7423c8de5605", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "516d32157b752a89874510597a26892e53dbbd4f677b1b6c86020a33b14f8694", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2e0b814a835653d912cbe9a761b547bdf79a7026964abdcb9071ec3aef826c20", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d1f3fd3a58191fd28af2db767adbe42160f1a5d3ee0947392c87e7c5ecbd0662", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "998efd6d46bbf1cdd62343b003c88e38d56f7a3e130d99ba180ae2037cc42a2f", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dabe3aef1f340109bc10dfd8ca1f4c19b7c7766a49d6c66cd34223333d5b1327", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4b394e48a88d3c9c54c06e5141ba118af44d8c86dfbccaa615cc1f3ae3efb493", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "13a7258b9b282483e203754485aa63eabff5404f798086483edc3d31612dbb86", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f4c697f10bfbe14542781136515db8914d66e1c39741fd8cab76a2be8609a754", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f1f8f71d34b041b9987c6ea2675565c8d292a53600e8f29aa59874b0656eb4fa", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "7586403febf60ba0242cb7fdfc17d000175161e40071db42015a4ad526a10a47", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0e568c9ddc56d77ad6265d8c294bf720d31ef8b5d3103803221fddfdd7ab51f1", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "087c6611dfb320dd50493a08e28762a837bdcf01583701805b0cad85621b3897", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "77974eea37c268b70e570186342021338d92d2a7bfaa93925674d62262c2ff4d", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9ea574627fb7f7066c93537c27773bdee1d5255525fd93854f2d74852dab5282", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b4f333fbf6ff2ddb6e7c31194bf9aca345ab79be81951b753cd978b1e2109db7", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "55f90ebfbc26b5606c2770978c4b3f3643235e78c35bced3c86a30ccd1f9ff44", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a40663596ba86b4fdec86ce1c23712702c635d2a9835f6117a2a015774d93182", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "752c880de37f1903d39d8803bd8d8a65893f0e48094fad1b0760579ce6ab865c", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "c23ec7f739fb1d8d9f046fd629d8608e929c9d07708e4a61f06bd75f078edb8b", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8aaeb6aeafaac55e9084ee5ca3a44bda8ec541f80323f52e5dca6b1d30be7228", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "fa0c465fd593b2102abc289f2600d65762ef69f68b98da8c27f0e94d90b8d6a5", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "be3a950fee335a2f4d690cc4022c944cb234c898981370680c4cfff63d727d4e", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "924624ca84abf41d92c3b22bde4eef5a4bf7d108b4c288ec5308f1612a1413df", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c631e73a5014c08d4046a7b37eec16d75fcd36b5dd01b57b69de5825f47a31ea", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "166b32ada10b4775a94b3c1ad9ca66d2bc2e6a3bfb3700b0eab6c46120d6b28a", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1ee1b0a577e07d2790765390bcd14122b6130c8acc3ebc13573387fffe176e33", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "9ca7952bb8641f76a8cdcb7195b5cf1a9fdf3e46c758307bc11e1ec59694c653", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b7b60fc965dd4bb068f47a5f475cd35c79e5715363df2f735697bda9c7dce8d9", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "1815a21af0bf176d0d5a0fb3125aa1e74a269f3f0d730c539b4820dc86538cab", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a6bf1b6953f28581c6438e22c2a6222ddce96dcbe04bbe75348380e1a61297e4", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "65c33f63f9145cb2bb4d6643f7fa2e3ef18d8892a55243c8855f5bf5a102d16a", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "16d80c7b6bb0bb14f8c8e5d171e8ce3d61268ea67cce6b472ee8a3c1117957a1", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a6bf1b6953f28581c6438e22c2a6222ddce96dcbe04bbe75348380e1a61297e4", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "65c33f63f9145cb2bb4d6643f7fa2e3ef18d8892a55243c8855f5bf5a102d16a", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "16d80c7b6bb0bb14f8c8e5d171e8ce3d61268ea67cce6b472ee8a3c1117957a1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "d9227381811316858a1ce16d2ef31a3991f744482df12099c80ba92b040f77ed", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "0a1cf2366ca9a6905ca9a97357e3411bf8ec3cc00223ac9111471ba7d2bb5250", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "eed55d0232953eadaba8196e7b0002e9668f388f69abb4c49b937f66ac641794", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "2a1a109ef0452a02cfb2ef95567f95935fa1546873f7380e9963f97d0f51a80f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "3eb37a30470bcc652f44837285578094b4effdff7c9dd52e3783bfac35423510", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9ae3c98cd3dbf6f61d2663f58f5e9f243887f15d59e66cf244973a33d5aa0d15", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "38365e9bb629844dd174a5266cbf56249ad9c396a3dcb3190fea5fa156369db7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "68790225ab4d0a065c73704b6c1471381d1dc8025c8558bc5ecb7636a2a33220", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "fd7408eb5f80ff59445004e5d4b932638fd754605e38498d5ef77f419c31faff", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "6ebef79b897c14674dbb604402e3d2c78023f7b9f4a384a25045d4a74e77c2a6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "a25a96fb4220c7c066fef240a133ddee181eeab47baa268aad228c55d4096c9e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "8333403c02cbaf20d4657378821ff549ac8b8b6d91fe948ffd5348a1e170a7f4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "ec903114714d0d417e701513aacdfc8fea27a8cea498aa9e87638a392038e4cc", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "69f2e66cd5dafe04608fa452e215a1f053d77a62251bdc3c1953a2d19023bbd9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6ac01033c7c648ca8526ce0b3a5062d3bce440f2b2fa3864e14f917d9d31ea99", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "7bcd129d720f41329091faef8f666f6a1bd2707034bb4ef4ceb399735a1fc4f7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "f94081fcc2c71c7aaf5a1276fc3f5943d629ceedac1cfb27ed0dbbe9867a49ae", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "24cec4a6828f68c87c65586d835f3de7d2f5e87a9243decfc2f9583861832036", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "4d1e515843bda624f8ba33d411a2ad0800aa96d54469f18e868a9040fa7022ec", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "13a5de1bf3b93b2f2c01946c29c9a490bf2174fbe1d0726bcbab8e9615e59cb5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "05a21652cd4da44097fde4bbe26e2cc367f05c5bc9b8a5d2864f5e14e47f6a57", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "05a21652cd4da44097fde4bbe26e2cc367f05c5bc9b8a5d2864f5e14e47f6a57", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "787af5e008cf869b91347ef6a9b9272134ade4ced5d5acfe56b2adc0fda6624c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "d91f8101814407eaec72744da9264093c980a912f0da239362b8c81234eacb48", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "d9ba515de4f88f3279bbeca674f9981e18c184dd445b2895ad65fdd024808128", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f8be87c45b00471af850339be35e6de3b4de62485ea6ce209adf8538bfe9744d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "ad1395f01d5a535c28adef530ecde159225183f3bbefaf31764fb368e1ca85fb", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "97ef57bc26fd88408059d2fe621dfb82b1de0733e2e7dca114d412d36ffff312", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "bb802a59e543a8dbbc91f846709fcadd557b05e8bca6c0531f7cce7322362296", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a6489c91a87eb48a9b72f646bb8740c0db645917d317826bdc2d9862bf49ae15", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "2b9e46fdaeee1001e23fcd07031001c0650d248e56b5c1e6abfd785c03b89d81", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "488e8e91f9d08b7defab99a3776173f9bc385647baa72c63c2d0fbb272d8d082", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "e8f128ca37cb63dba96761f13b5cbdbd7d43d61042d3988543c9a7f6ffa10955", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "435d2a52ae460f12b30730ecbb664f391999926d11923cc0bfe591ea71576e31", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "1091a55aa7b8c428d3966a45722e418db2d8f8bcb8d4a50c7038a43daef0681b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "96d2345f05c18de8e719e6a6802443a0ce36310623814c5e3802b5249a02a31d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "fb7062abf7c1332c820ad803f5a8aa31eed761d9b71d1e9cbac238982eda8001", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "3d655cd703774f7a5877bec9dbce72d279e8d41e0e07616185248ecd9e962666", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "31a26434e99fed6ae034d3b635904e31d2547738efc9abcac60af858098dbed1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "458c0100f2754d0bd520b0df968761b71d4505456ce3e0dfbc72e29797eb9687", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "be14c31886d7f62d2f937449cb23575f42be61e2805da9ee58ee87052ac7baa1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "0b64d7b238f2270e77fa7e1a8fc23dcb2eac52315240d8399d3f7b50de43d74e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "0f54cb35e8c8f267478d9ac3f1bea8242b56b1cb4bf3e4330b340e180702a19b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "0506512ae9e30c55452611350ad6a602031ccf20eee0eace4124d2ff6cd76436", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "3f75936d549b043c613418b098b075724a32b520b7ea2e3ee1dedd26088caed2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "922f35fb7fa6687470784c3d831eea7b1a3f4c419c71c4d99fb54022ce91c7e0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "dfa2095b57fca9a9622b74769d61bf54b973a334f56acfad9ac101e38f1e2988", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "35f6d80c05ca014e41f76765238ee21b080480d75bddbcca4c65df0b87ad62a0", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d3737160db2429bdf0dfcf645e9c14eb74690a46edb88e3777a88401f3449e98", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c6dbf5be625b172d71236f0c386cc518c120996585c4165e107d9d332810cb57", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "d7182d3d1a94ac1b42369105ae2cc41d6a71444a0f284372520d542a50b438a8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "c3ef3d1a10c1e80dde2de80ee7a3698e2758b7f3fa8cf462043e126f24172cf4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "f0d6327549ea9ad112a6a33de7944bebed441bd513735863e91340af0d486e5f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6d73f89cd37c61cc7f142f61c09d8fb306e7679f6922c4d96d1cf286a47fc4dd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7bb61bd375af21c2d055d3ffe54cf1f2c9df033d116ab39bb993e50f796bd53e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "0eaeddae1d02d73b4ecfdb206f533ac60971850515db8a2c7506dc3d1e104d3f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "300775c2327ab4666bc02c9a4276ade8d2625b7a42b8ec6c980abfa48cf733ee", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "51392228ba9f45845f5dd30ca6240f664a1da5345c3d53ee31dcb072ea64ce98", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "c1cd9fe39c2881e87f262b8338aecadbeb35058343a77ad951bad4386ef7561f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "d9ba515de4f88f3279bbeca674f9981e18c184dd445b2895ad65fdd024808128", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "8bd8f9eb9dccacd6449e4581667fbd7a426dfbb5ff95b71179c4694dacd5cf90", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a39404506bdd13a54ebe06c1c336d011bb107fe4ad5369ff9aa24ee58b409803", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "ee69b4f0159d32dcc2fee462ce34d78db97773dbbf565cf747e98b25bc4928e3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "4758fd9b199f378142ec5ecde5f71d169101494d9064c13f437e0336c0549f68", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0b4dbd1aa82419a3d0a3fd3b7d57b62a33335ca62c8847b2552d8a9e735a76e2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "7d2e9319a3f28cd7696fdd837e84cebd411c4575d97871563a78c49746b985c6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "21812fada6942a7381fcbd8da3c4b1531315c181bf78b6b7790803e3413f336b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "0d29e3442fdd442c1f2111566c0dcef22b52fd4cc1b31661b69bbc8588528c1d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8d427c35a4d716d7cd0f04ba276f4c5ea5b6669c76564a3662e5244a3a4ef05e", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "dce8ad6c80b18b695a83fbc1d3ebc1c51bdc1e487295e356c5782c490836dde6", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b9137a2580d2601ecfe74bbf0dfc89c2b4c129ae1d24bff5170bd6d05fcf1e71", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "06749f018decf09a8f3fbf56dd912beff086a79af7c0239703f41c71a9715c3b", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "9dba0b9519a4cf078c8f1bc979c7586f09f839cd490cb1901b11316b91168181", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ff9b26b36017d65612f94162ee81b9c1e7c248b7e8d7e193c7516ffa453d3fc7", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "7231ca199a8e096348d7e5900b261086dc98fd14bd6bae5f2f2f1b81b34c9c88", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "7f520e16ae4858757783a638b937d02b33cf11b001f67f58945b748b8a493217", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "8197910539b1191925ea4857b5781fbf140c40ba8666620235c3401e4515c4b9", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "02d659ad12f7efc7e489e1df470554f921641fa0f6a7b7b04ef61241e5e0defd", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "558ca5c2db78a320cfd1733fc236385d243bfa6859d07e69c6f343fde6347be9", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5cb8c1a7b18cdca61fd6c288baf819f31f7feb0bb8f0aaa884f7be4eb37ef516", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "cb67ffe81a88aeb3eb48044059449c91f5d29b82d0eecc08ce43ce9538e2fab2", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "eca15f215552a68808391565dc759767dea549b437a7c587e705172de51f5314", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "5c25e104880a0888152d5a33d2d95bd865dc4be632006af303334030b3c68b34", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "fce64380040fe2c6201e3c2a5fba19177f3a97a8a831a0f40f8a0c67dd3777bd", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e1a287fb33c7fcd0e12fe521a5fb1b6925a3b143156b992c346da1ac5a307b83", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "91b8e12d172a5d1191b2e63458a4aa2ad847f830160690f84d714985a3dab5e5", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "25be9366ab3df2d1da494f6d37347eb332c0e486c340c347749aaa56d821e2c7", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "5e373bed1b4141eac934fd79e688572a02ae01feb58115d0b549bf88880981ff", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "5194945dda99c3170a739044df5b9395858a6051dc95dc07819ae2e1eea148e1", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "54797a7b6cae862ac776766b890bb72fa721a940d07863526f29a1672f7dd707", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "e2c2f24c067813222137d959eab6b804160d0e29e0d802cde5771b22e36f4697", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "dbbacf8bf43207dedf540a1a1794d51c8c4cb985c3e0959398e1895454c331cd", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "740af3cfd9aa6f375809eb4f530e76466bbbe108be876bb923970e17bc822dc6", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "7c18823f0647122526b75d7dbbf04cb9f31bc8652010a16265624f6c52f7934c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "df84b4408eaee663f1e132352e08f732d78a76f5c2daaf00c2a6b9017083a39a", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "3c4e860e229c0d2d0d4b63eab350b96985ff879422cd53124471e9c79a3cf78e", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "b26dea175795b867b5116a49801282a6f1475bef3bc5a0ee92eedc8620f7bd57", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "1f35eb501e2ef2cc50f5b22bbbe34315e4be244042c899c2ca11ca05c1832364", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1566d114169ca0be1881d02091cd652725ee8025960ad88d0b5d159af45e3ed6", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "c5dfc2d3d0cdb0158af799f65ce447e873841d55e156f25f937213ce5547f117", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "59cfb2b4575baa7be0f0b8af66b20b34618e9db82a688c93e9b352cd48941e3d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "1779e38a0ff52d00036ea08ae441acc6fa5559bfaa5b453679202650a6828412", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "df36656d475aaa0aa94720a932b1211074ab37164431ebb6d51345b69741fdbd", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "4dba0565a4574b10d07549cac891ca46decf81b709cdd22a3b9b481225a19787", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "43940fa074d70365bf7a4fa405a17a158937ecbc7f9741497dd5c974693d6132", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "0a36ddea903e069c7915326027d8ea007a4da8fb2967bfa6aa75efaa8e954a21", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "764d6bb8925890f55da9a6f38cab3b9904438cf4614559459bdfe37341bbd5ca", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "8173edb92ab50b3cd41d349b129d5e83fde22c55b06812104764dc59479ebe6b", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "46c9580327ea10611860a75bbe888ec08d2e5fe7b436d650dafec43e69da3fc3", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "45ded58ddbd27947774744aff41f7a19e54453d3e9fe0649644281f45e00bae3", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "81bc91486282664d377ad55056c3c885fc79023904d6e273c7d44337498c35bc", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "f33a93009a62e4fc9cbcecfef86a12e37632651fd8ca4e875f3d7b0c4b989a5d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "04f9b69fc911b35221bbd4a1112a18efac62897c44fd1668a3fe3775e7c7cfee", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a6e47ed656a64da372b164827ba010f7daa96b53c19eed7b3db4fd8674bd0999", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "dea00c26f718afd86ecb1bb12ee40e6ba9051ecc6af9b6bfb6fd4c1509099425", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "5946ecf935092c4bc471249e8d911bdcfd47c5fd5b11778bc9396fe3de29f811", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "3fdc3298536fa94d6edc319e4fb0adcc59e808d526f728f254a201c2cf4c6c6b", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2a7ba46fcd8ebf414b2678e1d4578a647a3db8c6430d1bcc497cee29f30a529d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "0a36ddea903e069c7915326027d8ea007a4da8fb2967bfa6aa75efaa8e954a21", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "77742166caabbfef724ee6e97578bc93c7cc2291260fd94e84d2974fb7314108", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "dc3ad0a199122a1d9a040565201c2ad67ec548f566f2d59d785ebf26c0be3464", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "eaa3fc7d1383daac658bbcfc2dd21c416b7149e110fee29f33492c6def8a5826", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "3ffc14a4dc97479c966faff6e316ab28a65e0532d4159487d924a7013bb80aa4", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a80b6429553b4949006520d0a0105ea4fc01d87953c709f13159a8a2bc5da9d9", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ae926fda5ddab590b6dda1f98b9685e536555efba45091b5b8fbe71825960b0a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "60b6c45ef4969e4d4df1c70fb5f7733644a16fefe8333ac0f7f16374b138d6af", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8ca70b65b8298335f00b0cee5ef6eb7f1cbea8bfb81a58f52c7a876e6d9fb0a7", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "399b51028eec60498c5e9af6153a804991e9291f4ece2164efb9686cd836ec45", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "3014ce763a78c5752c1382b262d3cb822e877271367b5e38a0f42b6be8a59fe5", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "22f3d9ee97ea4f881bf6b5442f97555c474af2d56de0f33eb6698f6e5ade4254", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "22f3d9ee97ea4f881bf6b5442f97555c474af2d56de0f33eb6698f6e5ade4254", -"T3T1_fr_test_basic.py::test_capabilities": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_basic.py::test_device_id_different": "aef9233d55505622e52aaf7153102f6f74f7f23d66061e47c71f8d5e026da24c", -"T3T1_fr_test_basic.py::test_device_id_same": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_basic.py::test_features": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_basic.py::test_ping": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_busy_state.py::test_busy_expiry": "93c796b8a32e1df45e41b51c642ca5520a4a46205e56926a1b6ed5e80b7b7032", -"T3T1_fr_test_busy_state.py::test_busy_state": "f869087a0ca873af2cecdc79bcbe0bd596460998e874fafccd1ae8d5d5cceb8c", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "f66f81b78b85e5ed092df0ba31fd92e3dcb63475c54d015a0ebbeed01d7874b7", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "f66f81b78b85e5ed092df0ba31fd92e3dcb63475c54d015a0ebbeed01d7874b7", -"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "efb389fe4d8990f77ab4f865dc35267b52e31df02cd8382d46eed9caeb023cf4", -"T3T1_fr_test_debuglink.py::test_softlock_instability": "16c8bde73907f9ccfb35f9edc1c89e93ffe9cfd4dc450269a8ce21bd79a22b15", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "664bf9dd2dd83c620027a8b5b2655af8ebffbaecc62b5264db88080f50f90c3a", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_language.py::test_error_invalid_data_hash": "cb10a9556cc64baff9b6f3c627d1d973fb1f0b9ce9e10a9ecf766e8089b68733", -"T3T1_fr_test_language.py::test_error_invalid_data_length": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", -"T3T1_fr_test_language.py::test_error_invalid_header_magic": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", -"T3T1_fr_test_language.py::test_error_invalid_signature": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", -"T3T1_fr_test_language.py::test_error_too_long": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", -"T3T1_fr_test_language.py::test_error_version_mismatch": "96cb3fc3af08e2ec908a572c79d96be90e9fb5c89447a6ba9897111bfd1dd041", -"T3T1_fr_test_language.py::test_full_language_change[cs]": "d79ded054364974aaf434f98e5528df0f15397ca7c1e9e47dcdc86820ce6913c", -"T3T1_fr_test_language.py::test_full_language_change[de]": "163f74bcd17daa89e0791399e554d5687f17cddd957b008c0f8cbe57201b18e1", -"T3T1_fr_test_language.py::test_full_language_change[en]": "e9bba06c8f3c8a43b9d414769ef720d53fbde8bfb2e32d76d6528708bd43d41e", -"T3T1_fr_test_language.py::test_full_language_change[es]": "7a497e4446436f88cab668fc8f786a9cfe4897521bfa08571b5493583a947dd0", -"T3T1_fr_test_language.py::test_full_language_change[fr]": "f416ba69d4598f6e4c4bb5cabacd42f16b3dca3f7a83e6743774db9283c8488f", -"T3T1_fr_test_language.py::test_header_trailing_data": "d4257be91f1406ae3cbcd13a5890604627b221d3881e4a77891c82109c62042a", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "95c7df30b6c98d92752840b23e7673c05c21ba898ce3b20420e7cae8ec996bb2", -"T3T1_fr_test_language.py::test_reject_update": "393f95c27c87343201ab87a437d01abfe0c6af837cd707ccd3ede3209e304656", -"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "41148a08e65b9e223fdac119cdd39f412308c42bf7a79312e5aa19460d32fe83", -"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "41148a08e65b9e223fdac119cdd39f412308c42bf7a79312e5aa19460d32fe83", -"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "30f37fbfeb7ee82c0a31b00cdbccfa14e5bba379c0621beaad7054e7841495fb", -"T3T1_fr_test_language.py::test_switch_from_english[None]": "4e22243325365674d42ca7aad871d9883cd1ffb084718dc84c8847ca2919a582", -"T3T1_fr_test_language.py::test_switch_from_english[True]": "4e22243325365674d42ca7aad871d9883cd1ffb084718dc84c8847ca2919a582", -"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "259921b42e454bb1b2d519c1c50d6b3d7936e4b2a38617a4fbf1ecb3b4fd6e84", -"T3T1_fr_test_language.py::test_switch_language": "17f46db6a55607da2cbb74eb5503eeec1154f2e9c25d423b780a00b0c94c053f", -"T3T1_fr_test_language.py::test_translations_renders_on_screen": "3ace8ab5615b909fc31c7cc87989abc0e0ad7102cb684d9cfcf921b176b8ae3d", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "054e29c29f2f19c961e4832d17da944d96b58934e72d3c5ed2601535aa54eff2", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "ed0e7cfa80651c67cb8805f1ef7960aeb6e06e86f77cf3e3fcf0c48ae8e5850a", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "cc6ad54a17a79cfe9884942800019626f80071539e0ff6503eb9785fd5811e33", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "ae5c561408a3e4844cf098c3272c4ec8241a90de766c4a459504a68abe1e2f0f", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "6fdfeded020f074c4c8e863d86a32d0f37f01dd5ecc49f6d51833665e9a6a561", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "d0f3fb78183f8cd0e19d7d288837e6f44e77c9c37c9a962781401669a97761a5", -"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "045c0fb3c2f54fe1c9d839f4fe6bff2221f390e16d6e2f31472be437c10bc0d8", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "3047d0fb377b5cf82a02bf33ad2d5e89c49900216f752fe121110a94abde77a2", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2dbb3e319126679795d7c03b963be7208b8bb4c04a5226b9997a8f2a11c7d8f6", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "fdb7b0583dbf3f5b6b6dde2bf914be1da0ccd14b9199979ea9a775725f7be874", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "787109243f440b92b18e22eb325ecb0d8849639d9468d28251b9e3a720cf8fdd", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "b69199e1b05a42a9953cc85823d2d0e563fd13d157895332d570f3e88c1b8936", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c0e401e30513f561fedeca9e6f4245d980f16ccd40ea24ac64a44c5ee099542c", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "729135e9c5cfbd83e1d9126abdbb08c03ebb7910ee443b8f89c05a9162346e36", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "de360de74f35fa5bcc4ada71c752cafe929a25766dfcfb494dd23a239f2e8592", -"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "a1e7367bb6df058660bb06ae28412ee3ec2ee7fd210a03316a16bef15fdbd913", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "c4e841fb438bf330e278f7cdf2110573b19e1a5d6aae1fc69abb29118e05fe1b", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "699a1450e491a9059926afded4c4bac2fc20bc125adc6508e446457052015014", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "f1e5eeaa82135fc87460d0b3bfe9a58a5a6d64e7acfc8faa49482bd6f911e464", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ffa08e6c11d4f4d5be654d375aec5baf8d81e98b3be3db02c39497d8df0099aa", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "ce79ffad6e71dfc914177fbe32db7c9f12265bf50e10800c985ae383b0efce3f", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c90954b8c03ce88be2f83ab96a9bde24760c8884deb8d4d2cf7e13829c44299a", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "2db4f33d712fd1247c6398c18a51d7ffa86babc1850d5f9a1b5214b0a97a7abc", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "9ed0663d13769ce3c6b3f6fbca5628b97f3eca648bbb12bd4237aaed2d429222", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "f2edfad549046730e689036fa8617be7a48c7a6c59ee76288fbb16266d3c3ded", -"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "aeda4c49dc073e39d2e9fdbf2c0a9728c8ac02f30d9d09d529adee05c7166430", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "35ff023eda33be1e8df40717b15041d8cbce83603745ade3a4c84b87ed61bd08", -"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "1e1d751cf97b96914433d76e68ef24935c4a65b3be1c29f9ad0b74fe97a49b5d", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "b3200b44b9fc2978c0ad7a72d1d75648b26482d965cc5fb4898ec0bcaf2ec4e3", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "2ba30a024f74ea61dca08d302f5e53e92edf5c40fa2248c8520c991e16c0fc69", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "6049986a5babd4a0a24fa64aa664e8575b156842ce87b1aeac33c802ab15fcb9", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "6f0616d489bc2b9a99a853707fdd40c2aece7f8861c91a4832fe09c21a5791e4", -"T3T1_fr_test_msg_ping.py::test_ping": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "bfcffd19bad0f473b5b4d236367eeee9a91a050cc1067e7e5a8d3d86d37adba7", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "6c2afbbba9d488c75629a063fdccbba0a61b70da35bc6230249fb268ba82a42f", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "69aca25dd013ab68574188a967bac6cb83e4eef0faea023f5d06b53f225bb079", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "83b7a00242b21aff565d876ee713502c6178af25fd71b3698e0efd2cb21dbeaa", -"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "aef9233d55505622e52aaf7153102f6f74f7f23d66061e47c71f8d5e026da24c", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "04d531a28042e963be46f2943d235f647c3e1f786de87b88f66aa8f17835f1b8", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "04d531a28042e963be46f2943d235f647c3e1f786de87b88f66aa8f17835f1b8", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "58fd10638da01638e8ff0a25aaae8a90a11a1f5f444b0257c6b7baf5072209ef", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "58fd10638da01638e8ff0a25aaae8a90a11a1f5f444b0257c6b7baf5072209ef", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "58fd10638da01638e8ff0a25aaae8a90a11a1f5f444b0257c6b7baf5072209ef", -"T3T1_fr_test_pin.py::test_correct_pin": "3ecf35d7825507103760dea1414eafb3502bb2c55986ef684c1e8a2eddc94b8b", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "bc90b0c6381ac70c66b9ece8b7342bdb41640284c0446bcf59a38a886c5c69dd", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "48827f835b6d239c8abd11e6038deb9f1b19446b872765ba65badeb8c43a5c57", -"T3T1_fr_test_pin.py::test_no_protection": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "1177bdf151577b7ab0693be3a5984d3ad9011ed19ffd542a3f69f1ac933cd614", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "446e9951209becd66225465ad55cee24496f4f70574ef741f20879807c75b4a2", -"T3T1_fr_test_protection_levels.py::test_get_address": "8ba5c6e0b2ee69876e68c428aa1241ccc43414d7f6e385c8eaf55c830df9afff", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "7caf258ccba772e7ab9c43b1bbd2f20ed91d87e4fd107e84cd6bf8690a782f67", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "8ba5c6e0b2ee69876e68c428aa1241ccc43414d7f6e385c8eaf55c830df9afff", -"T3T1_fr_test_protection_levels.py::test_initialize": "617199d34f971156ec5e44171ca21b06e936e5c979bc77dc8716e7545047cdee", -"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "5c126975a25ce1f4a9cce3eb60037596a46a423e589386c196931f6789b04a64", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "6ed0c0b3bd43d59659fb528f7d19a1fde863eccfff5c93e7176d0582d16b1913", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "b820c25ab981d5333bac8901b7303aa73e6812b83def6806439107353994f89b", -"T3T1_fr_test_protection_levels.py::test_ping": "04edeeed988780627235300122fdeeae2c865e78741971f15cedf9e0bc8e1a43", -"T3T1_fr_test_protection_levels.py::test_sign_message": "349ecf8bb517637822b542cf65c750e2781926c3850c4c8a53d152576334327e", -"T3T1_fr_test_protection_levels.py::test_signtx": "874dd7ee724c261d42d25689c3a3fb37c0657c786e1c0b2aa92b6ca132e2f767", -"T3T1_fr_test_protection_levels.py::test_unlocked": "a4424a33b98437db465a6f6210207566290124a2cefd4c19fec3a3dc9a868b6f", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c0433481942e7e93e5488b819637a3412741694b106213a72dbb164521d4fb1b", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "004dc079ae5d42d366094c23ed0bacf2b97f637ef6ae22d7124d8db293e1b2cb", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "dcc58095596457261a7ff1d0118fd3ef80d3b7b3786edcdfde5f3776e553fcd8", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "c8a2086b7128ac2d39f900e3c6f70c27191e855547d299e027ffff421619cbb6", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1745fc4e388d18bfc3c0124542c4f0d82fe8ad0081998fe913437ae4f90767d3", -"T3T1_fr_test_sdcard.py::test_sd_format": "5731b0f2b788c135ba4f226ff6ef4ac95068a639eb02b79a2286f0ca33baa6a3", -"T3T1_fr_test_sdcard.py::test_sd_no_format": "43e6b840991931da598895059d9e9bdb75b50bd56ba15b2de0abf6323f308053", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "89bc355f195af4a376c40ddb556a51e2aee85a3a183c997857f4cb51cb99b3cd", -"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session.py::test_clear_session": "fb522e46e267edb1bd932d532a42f9b294744933f80813b4e7db99a5b385425d", -"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session.py::test_derive_cardano_running_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session.py::test_end_session": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session.py::test_end_session_only_current": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session.py::test_session_recycling": "58fd10638da01638e8ff0a25aaae8a90a11a1f5f444b0257c6b7baf5072209ef", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "d147d305c3ee174b587569ad3d1456fc46fd552dce30d5482aac00fb9689bdac", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "cd39e1f0620e3bf442af1c123dc669bf1e164336632b298524d48dfa0837b504", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "872c80a4f13af69e745ecd1c5d5ed20003d1f734eaebea70d59ea8949fc11618", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "224c8374581f246ecea21129e3544404457e2dc094fd57908ab4f32d7eda4f89", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "52400df0adc3c4b72fb2a3c0ba17d325c06aa4acb488ee9a0292aaca186ebdf0", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "b84aa3cac2ca190cd0b427b105da1282a902f7c869ae8f6767863709a395c424", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "d473ba28450a77221ce7ab4ef1d6ff16fefe85c8fb11e0940e5932b80815bc95", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "5c126975a25ce1f4a9cce3eb60037596a46a423e589386c196931f6789b04a64", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "c0d9671674aac283d0d772054165c7342fcf3bfa66e828a139db992837b00171", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "9c34dd830d8e86c26b1ef680df4f26d02c6aa8386bf587864c2a488b514307ea", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "1e8279c36fa7bff05ab78b3456a37655c1a804b2c00514d1cec1608983c9b80e", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "16e0feaaa358310318ee25bbd0de60d5ded8f3ca90c8a1902b48a03a4fa3a096", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "f1c5712278fbc1f77b3d58802ce7254ce8ac2da619b77f4c961032d2dac8fb74", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "879a576e296d03968d76618d9ee15fa60f2c00c5b2072eee7282fe5b56efaa25", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "31ea9c1732c0b113dcf461a019fc8d3ed11f4dc0a58dff0810a4439d5a261558", -"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "43f48cdf94256eb554ca74cac799397fc1a5aae71992bacbde0d08096cc3c361", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "1cb43d2d989a4aa23174e22089b47b88b39d696d54009e7f5997cc16d7860712", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "80e9be7b3c52f9e6907db342093c81a4f12a917f97407943e0a62274af00a8d7", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "06c210154e3b49379436d5ee4c1d1b24ae10ff7516690cfaf6eceac57f2bd939", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "edf7a64bb7458a1965190a6bf0d2e03876f32a9c2b6d927bac41ec32e69ad86b", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "694301c73d4bc432a54e623539afe356f48a5d750159c1f08b63cad41e9fd047", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "71015daf34d96443aface5fbb820cd89f9836eeed9e2c3ae3bb0416acf8494d7", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "353429b76632599da8b3ae466b6c41b02aa1b5b1b29c812178039c0a45e0b47a", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "47aa964ddfe640d206350ade5bd32cc3e439f9418535c22297434fc0bbdb72d9", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "e55fd659b907c1a10e81d73ec2abf345ab755be208d50689f6df0820fb21ae9e", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "f9d96311acf2f56c5ba95b90f9e36cd4f11f64192d1f97d511e46fcd425fc96a", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "ae816488821b0b73893a78867736340fa2776a1546c6922b6800be54e720dc21", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "2f35e4e6c64bf3964239c5faafb4916b807d7392e1afcb091d8708ba1b5d2892", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "afee811af565fc2eb6a9d6c21f017fda4e6adc9569da55ba916803323de4c56c", -"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "3da3ec6d7fd773e274d39d77fccc7e577db4252a2316f979e365e1f97da665e8", -"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "90a2de8cad44f8936f7ce42e5d3c3856a4a5920935f2cbd93e2b474c37e9b6e4", -"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "f1fb1ee67386807393a362f6910daedc198fe2c6d06360bb2c6590c9f9445ccc", -"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "d4db2bae2ea213b0969e8f7bf6734339160a9ecb9d755ff6933370e46553a2e4", -"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "350af1cc086e872bf2d7fb942882939cf46695b981a25f6053abf8292565b970", -"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "1e00748e8d01826be62688bf50d14043f838283e3c4cb4c4b292b9aa0a1b2f0b", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "45f8c5812aed2e1739b48642134c32f0971b91c78d0017e7e8f9290ea452d713", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "1f13789e97d682d03d34c7e1af32161c5930097014c841c80a11406512cb37cc", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "ea111692efc63bb9137575beac97aa46941fea262bcd989177d6b7541a34fad5", -"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "f32734389f7431ac1b3e6dc717fef2774414ac234a7a435737e3c361c6e4a387", -"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "37dad81ffcb3e0cccd78790d07ff0141ddf6cf2c4e67c3a8c9000c7ce7e45eaf" +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "d9a6cf5dc9aa49737ed09568f5c110d2e9e216776f4b8be7e1b30b94150bcd05", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "4d8cf4dba0ead62552e55ac93649c69282774ca8db4ef078c017c00c0fc8a89c", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "c78aec21f5200c47b1c6721aa1e2763434b3119bf557215242d8b2a91a8b60c3", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "90e42416f0cf8e501cfc8d8a345ac97817f36bc09cb88dfa8a83f6d097254f5a", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "04145b23aed8a6be4a95eff1523e96e6b09e8bea26c666271d896d5afe1ec1ed", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "af717139ed153dbd0fb7b2c17974b3f3bff9020263cef711f4c6021b612c115e", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c4adc8f4c57d7ec898ee1f42c852ff3df662c7d4d69be5fdd3474fbe2387a45", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "601b1e06b1be826f9cbb10dbe83d9b6852e7d22efc6b98bd2c9f4faf8ebf1442", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "af717139ed153dbd0fb7b2c17974b3f3bff9020263cef711f4c6021b612c115e", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c4adc8f4c57d7ec898ee1f42c852ff3df662c7d4d69be5fdd3474fbe2387a45", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "601b1e06b1be826f9cbb10dbe83d9b6852e7d22efc6b98bd2c9f4faf8ebf1442", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "cc7b5f0cae4ffc2df808a84bd1e58a3c6aab25299073bb3a70703305b94b3ce6", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "379b5c732316a424ce0bd37fb01dbb8c9b212646481c5a78307db95cdc11d458", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "d0b2296d8c64caab9359945e03aeb6cd40687faecb448907146bfb11f80dcc8e", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6efdc126231e6616b24835f9a2a7cadfff910a22d3462b0c1880047e1d2a5101", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "8f9440b257d0ef3475d4d618e6ad7ba5a688c4ee0e5bf1f2a266096d74b78b89", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "8f9440b257d0ef3475d4d618e6ad7ba5a688c4ee0e5bf1f2a266096d74b78b89", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "842f811dcc9f3bf2a3fae5db447ee49bf27fe59b5074afc4d8c28051098f0e7f", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d5abae3846bbc039e0078951fdfe3f1e57e93042d129497aad0f43edcf823723", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7ebf8859c5a74faa7916ec5785d130d58ba2dbd63ba2b1887b744f82db1f8531", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "dc30ab8c74630acf07b8bbe8fd18754209666de1cc16978f5c505c5a94024cb7", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "dc30ab8c74630acf07b8bbe8fd18754209666de1cc16978f5c505c5a94024cb7", +"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "1738088c1e014cb30802ca9e75cbc8f5b60d20d2ed9776f6f4380e3169b3b90c", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "1738088c1e014cb30802ca9e75cbc8f5b60d20d2ed9776f6f4380e3169b3b90c", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d50397280ed56c7dbc672d08a626461ad6a412962636d649718a7844d7e025ed", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c9ae97222041f09fc4ca9d6657fd3cac3d7c1702eb5ca2c25370869d305eab1f", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "51b2010eda968da7bee7719e08cfe2917ec1cb5b539b8af6cf56b6e18fa304b2", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "1554124da30ccbd86539daaa1bf6eefd0aaed2e77c6760a938925c6cdb5a301a", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6205977a43a139a3fd6a495e8c2254d06fe1fa554cb4738892775227016ac5cd", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "ee0e15325382f4bcf722da4f1020f8597b8490d71410709784c5bae9ebfa5d38", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "d290e8eefac708b619c1049a9e81c21c7ba21b0e4257980b3ecf70fd89a27643", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "de8234d8f639226672184f769600c3ac5db4077e73d102da9ae4d249aabc3218", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "bce1f85514c3f8765a67d4aaba8944ad39860bf2436b5c613e88f207553b665d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "e8f82170297b2b26775a828712ffe9daafe2c56cb88cd330a210e573e637f36f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "b1e13459ff050ceb7be8daa5dd0276d8ec0831ae26f55589b28e6f44a6dacfb4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e3f1dfd3a42f385a4eba398e192b257cf79c0e9464f1f99b39c0143928c6ee2c", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "84c689107ce5fdac43d1a07e6dade40c36e4803848f0fe6dc1abc3a721cb322e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "527463888a2bb0efdc3ddd1faab2d731bd8e36c19ae8f16712211f5ef6d2b74d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9acc5690c1a6127fbcaf78c152367d9ccff7ac6e648d548f4ea954c26e9fcefc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "5ec4d744e25f001e74c90b69acc5f9670200dfdfaa00160cdcdfc213dba5a81a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "11a41a6ffcc681861dd60aeead6a491f0ab34897794e6549f6cd5372d158b216", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "470c01e4cdf0a1ed829c395dfacb9c65eefdc6c49ece7d1d6f6f9ad7afeea618", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "78c77c7d7e4c0ad5f4e28496f152072e24ac8563c14815d3e50086db7857e831", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "aaaa6e58b5c7a803526fc75b79d0822f884c4b09baf54f9b5735bf1a5817120e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "17457b0e23b929a8ef542cacfea7a90ce9468c0ef815f2075e06ad5de16d8b85", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "ee0e15325382f4bcf722da4f1020f8597b8490d71410709784c5bae9ebfa5d38", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "d290e8eefac708b619c1049a9e81c21c7ba21b0e4257980b3ecf70fd89a27643", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "de8234d8f639226672184f769600c3ac5db4077e73d102da9ae4d249aabc3218", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "bce1f85514c3f8765a67d4aaba8944ad39860bf2436b5c613e88f207553b665d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "e8f82170297b2b26775a828712ffe9daafe2c56cb88cd330a210e573e637f36f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "b1e13459ff050ceb7be8daa5dd0276d8ec0831ae26f55589b28e6f44a6dacfb4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e3f1dfd3a42f385a4eba398e192b257cf79c0e9464f1f99b39c0143928c6ee2c", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "84c689107ce5fdac43d1a07e6dade40c36e4803848f0fe6dc1abc3a721cb322e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "527463888a2bb0efdc3ddd1faab2d731bd8e36c19ae8f16712211f5ef6d2b74d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9acc5690c1a6127fbcaf78c152367d9ccff7ac6e648d548f4ea954c26e9fcefc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "5ec4d744e25f001e74c90b69acc5f9670200dfdfaa00160cdcdfc213dba5a81a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "11a41a6ffcc681861dd60aeead6a491f0ab34897794e6549f6cd5372d158b216", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "470c01e4cdf0a1ed829c395dfacb9c65eefdc6c49ece7d1d6f6f9ad7afeea618", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "78c77c7d7e4c0ad5f4e28496f152072e24ac8563c14815d3e50086db7857e831", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "aaaa6e58b5c7a803526fc75b79d0822f884c4b09baf54f9b5735bf1a5817120e", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "17457b0e23b929a8ef542cacfea7a90ce9468c0ef815f2075e06ad5de16d8b85", +"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "65d773acc22faa1382670edc8b9258f4f33cecaf6d856ca367591812d501ac49", +"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "7043397fa76718f62b1f6d12468ede2f822e295ee9d0a162857c142fc3e82f59", +"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_bch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "0eab772bac1530adec88e670e876144adb56897f6a2cf25a0e0291b19a659351", +"T3T1_es_bitcoin-test_getaddress.py::test_btc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_crw": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_elements": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_grs": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "c9b6ffdc890628594c33c1576d8f7e36f3987e33a7f4e9d1f910d3c12863830f", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9537aceb609ae27e84e5d7f7288e5db3da52873ba1b000e2f3178dc1187e9545", +"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "8452f1fcb9d70dd446e46367d19fee7ea444cea235315b7a53513040098db499", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "30eba2b9c7efe80ad43d0ff2f7ad754d61d70d1dc974a390f354d9b505b41056", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "7480044c6b279ed7ea3dfdf6b49d2c9c255ed23dd7b022ccf4d110e461ee3066", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "0632adfe5970637c192a9a0e3a9876190e3648e4a28540cd9395b8a0db26c1c6", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "8e3b3c5f80dcbe7b6b4bbf4dd3a6143031b80680b15eb2e8e482774de3f12bb6", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "3640dc364d036476b8c8f83e22d0fb78169521696c63302a41e0ee697d1a9d00", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "77d263edd7e14220b42c6a5cb762e7ec1c6b0b5026af3e8d26bdf20a1e6c8430", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "951c477e805a10d50f0c693a7245cdd61867db674be7cf6859ec3489e6b734aa", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "b688bf981df80a767e005eca58cefa8dd28ecf07ce83a0668b04e0d4b0f2feae", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b1089b488599642e644ea819f69fcc15b764030b6cb61d2fb96163d47c18d7cb", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "edf1a3e5cea1aea871a86863e6ef3eccbd33a8b1232f54cad8dfef4e878c79b4", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "28dd074534584ce7b143256c1edeb0360c999add7d4b6e1b864d55e67c833526", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "caa06722bbfe2edb4609c94e31910548a28639e51d994c9f1c6cf99f762b6055", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "035df17762d512b343308be70d3edc70e3b7448ea0bdd0e0063672d50c7a9f2f", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "c6b80c29b1a87974bfad3f26d644757d8f5c5243bd57ddcf6980de4cd4da45a4", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6634b7dfc3526e8e47f84424f97199275be949ec57ea3545d28697c7d03c05b7", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "f59dcf1beb6cd8c82138644c73851088469f59a3f88303a502e4dd65cc7f9320", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "db90d96b87ca978ce61a06e7f7fa8ca32a7f4ae175c649344e6d7d3433ff4605", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "f230a2be1a40532a3eacf2b6b136a7141e58979265b0420ec93cdf07ffc5793c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "79ceed49f0540f3e6e0dacfbb84b7de547e409eda62f7089252b15eef25c1193", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "ac3abe0990222558c8773760146aa500fdfac8baf070ab0f1868510311c21d6b", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "f3c91ebfd9866d43a58e95d029db1f307ef8b14fbd243bb0fbe68882af967cc4", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "523e06b2964b98365b566135b8045fe43f29aa2229605010a352e1982cfd2736", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "ebbd7c001880f92f1b51ce789f2d778f4ab9ce2bf7ca6c097ea3719c6ae5238b", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "effba0ba779d698dc096008ed89ac7518f23d85c45cf424d02c9304bb4f7de4d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "effba0ba779d698dc096008ed89ac7518f23d85c45cf424d02c9304bb4f7de4d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "f7d0e212ccbce9585a5964583625ff9b0821f6cda941342d85479d85ee26167b", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "de58ac0b335548aa97d653d2e5f5ccdb61d3ba1e9bfbe63c3b80f1b83a7bd824", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1001621eed9ea4b285774cc64f726ec8db0c85d61da680c4aedf3f30d1d72e71", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "478035393dbb8370f7918c3dd7deb137f62937e9f4203d8312a6551b31ba412a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "be2fb4cc93dee03098354dd027398c91a6b61e18f768b993ec964ee7d3e94702", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "004c6afe6e35a8117266ddb83a827e7d1104460743bc1fd7dce5cffc49ee7880", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "381c4b29db5724a183ab1c7def3080fdc5a746abf3f387275244c6a9d74a996d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "6988428d238cf6056c63ca1aadea84e888f34111ee0a977b3380052f29948bd6", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "5ab85132221cd4a3aa1e0c9d6036e592d1c2278cc5919268641892bd8a170775", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "19db65ca6214ab833e91bbc0a152375a6da6eecd313d2d92748a6ee3cdf88e68", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "88928e04127a1f579e69e5b83b3db0e85bfd4938a926257ee1024557f7ad7dbe", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "f415b80f260ae24b8572ca8ec677d405c734e6c4dceab2c1478b614738952339", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "91e044dd6daf86816f59b07373e4afde37fdabac6fdbe255206ed2bcb0d3f5da", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8c1ad58116a752fc2b5f988230b4e2ec0e2cd219e49680a7ee545870116cba13", +"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "6490e1782c1fa8e2453f654389a5e6aa6f8a9a6a0e8a78e3a812bb3459a818ba", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "4b622c0b726e15c93d7010a1963a83373dfff96aced004b8da50a5ccb6a20a98", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6911b8f6cd55cbaab007f8356145acf0c11ca33b7f686260b3e0dc9a1ceb630d", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "edfc8c963fb88aa681714462e30d83828a02e686463a706e81b84c95d99815a3", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "a00c1934c7b55e6a49efd40e4705a0bc107d4460a9a59b335f7fc15cb625b0b9", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f3355d8ada5d6a4726f84cc72d94a9f86d59292503eee9cda80bbac98df3042a", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "5bdd9bc93e03a5e21bcfb0ec1ca86f3cfd04924a99a3a8a583cbcea974761d5a", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "22d22089bf03b40609c356a0e0e7f12a705b74afab7d1d04ea2bbbea77b24f7a", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "24c6d468256df13f6fbd0ffeb03a0b20f857c29faed78da3c18961f438d7427e", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_grs.py::test_legacy": "54d852edad737ceff97e7516cec6eae720ad210742a568fbe5bc6005cdbf0213", +"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "fd3d72993f6b6a4aaa792896cddf6230429d6bd16a313bc7bb9979dccd0567bc", +"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "758cf572aeb2da584028107349dc10e69ed2d77af84016df026ac0c073e81928", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "b15a2551e3d6ccc419be6fd3d8e279d2f00364409f752a42ec197b7f3d1b0a3c", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "e73effe50388609382879780db3daaf5fd6af8b98f8ebcd79ac789537bba6430", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "d888b2a41d9881f5a4158309131ca3362b25555235d80eb14654eb82e1e82e1d", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8183785a97cf0739b907a99d47a98d7c66999be841572980ff6866958c3452e7", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c379bde5eb2efdfe21152a989e366631c0ed65b69c3ffc85001a09cdd45349a0", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "5f0db334227477404df1e9c8561f53709f9ab47bf7ac38cd99133207e4f5a039", +"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "b3fd7276e31043c80db61eac8f73ab5cabee224a8ddae8bbabd4d4279feb1f7b", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "f403d0876f41e687ddc6f2daa889eb82c73b6c835a003934983cfa7ad808c113", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "3ad105f72df19490b83de61c039241043c6bc8852b962af3df13ddbe1ab4363f", +"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "050a1918381f34484260ce91d1772f36de291bc19a02a19fe2135ba933ec87cb", +"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "2f233d57f791b6cdfc46417a1dcba3c06013c7371017e05d2b8f1661ca16a6cb", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "c24dc9265699b7b8eeea63898e361d18beca3304faa6cfd7ab54767fa751115d", +"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "2255ec865f50f4173c32b6ea66e2ef0fc210f9db36c02b8e64c1d6c33119f03d", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "96f97f651a9dec4637d6f86dc89ee87cc1924efe49206e3579f955a1aea753be", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "48a3a1c95b6ca9f2992f33826aef60196c6575ad0e2b0e5af0d24c758f4e0c5f", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "efef5dbaa21e2282a8edcb6191831d164e902ea7063b2a54a4e50176823cb6b6", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "a9ef4250acbd711656b51f63f0ecebd8fbc9cb80717f50800f8321e3f5bfad21", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "4f40e74779ad80f91892f6f1c7a3e0729233c7ce24ac9253a74b91d46fad541f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "d321817ce8a9365d638ea921de901ccbcc965f79013f6b26df04756f8b8c4166", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "08e34cb85560a478f38a21e1a4600e1839fcb6d775e974a883a448e29ce6b047", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "00ed7c151f79bb412820dc5863790580646afe4307c19f1ef0862bb3aa769e1a", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "78225ec856a974cfaaa8af791e05a9d2eeb506383355b8df8719adc6db766af6", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "41f4feadbe7380179cb59684bf4010073804d56057143ecbf7c0d07272968095", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "42d0de79871c10de66585460c8ea014e342dae46849f129e1ade2db61c7a16f4", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "51e54090616ef514f18a0d290168e8e293fb022ad951de982ce4a6caecdc4a09", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "92e339dbabe7f7aee100b7dc6d3c34a313630a265e475da6d77db556f82fce37", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "ed3e1916bf69aa3204be044ad5e68b227b71ed6fcef054209bdaa2da09a1d0ef", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "bb979a4f34bc43906bbbb096a19d505074e0c4cfc817610842373f1df245d096", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "82c40343e26150d8b01545add6464fbcaf73b5cb780ee15c5d5d80de88274f7e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "66abbd34a09cbd1f8c0ad6ae574f79f6c728f8388bfce121ac1157cc235dfa6e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "0a9e25b993597db75185944a950de3a56d66d6b80b30e40c6026636e745b11b1", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "a1419284315501a00f719d20b8658205a71d294a2b16645bb3caa31f9d968519", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "cfb77e585ff8943c4fa034db3da6f690b9c7df39b352a8260127774a7b9eb3fa", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9dc5c1b7e491047b57d8cd99ea21c62e3630416ce157f74d432a1bf848ae6d7b", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "f55d733877b085077b7fccb35e8f0b8814f265911a1fc254448a320cad3c096e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "7506f8f6426e6acd72f0214d6f5b130c4c248813b48cf76f6911960f6df5c728", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "fbd57a300cb7ae3fc04b96072f6d7766545d95ef08b129968801ee0f5e38f6ae", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "bcf5593345c1c15b953d16bdc97640e0e7358e88134522830856c00efcd74048", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "6b1c84e656b50eaed0fc66e84f93a2dcd248d1e277893a693db42444865f5b83", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "0fba893ac122117ef75d4bb64040484e988db36c3bfc7633b0df9f33a4d6ee37", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "bb053ff1d2a180c26b9743f3b91473d7c63b4128b48d4401fe4715f18a3cf062", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ea49f8a22a7fc90b76716a10d9567205ea61113689bd77bdae6a940ca6e13100", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "0d1a96151dbabb68e841140b6b01e926daa32177b896b9d1d3ef901177672841", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "25ad0425b0b1fadfb54157efa498910183be625c0a2d02d5e6e307a12ae1f68d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "03fc478527157e7a88344117a894283e7b46facae69b3c657a6970998b3147d9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "b94d3d00fce9cf47e31c5eaef30e0d331bd6c86d60954a1c1843bf5c303f3b8e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "307eb1cd5666c75c2e037900b52e652d78006bdf8cc30356b864c66d9e21a122", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7bde8b27bdc13bed1c8ff9b1312265caa369aaef8185be965da285d8ac30bd28", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "83958be3c8cee2d2e01261c6eb4aaa79e440fee301605192abbf79e23113d0fa", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "32a9cc4be3becfedc77b8f63d34ad627166a6d777aae47c822dc611275da1225", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "7bde8b27bdc13bed1c8ff9b1312265caa369aaef8185be965da285d8ac30bd28", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "7bde8b27bdc13bed1c8ff9b1312265caa369aaef8185be965da285d8ac30bd28", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "7bde8b27bdc13bed1c8ff9b1312265caa369aaef8185be965da285d8ac30bd28", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d3d93aeb39a5bffa12541738a5c9088a21827fb797a99839a972f389a798cdbd", +"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "13481daa6ded445d479e7eee70cafc8f6d462a13458bf635a8159d23fda478bb", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "710c564b1d601f9af7be22038bfbde2b1989477f9bbc0e3a5f747b3e1290e70f", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "5966101c2189cc85fb044d9b6d8ac220320d519a63a99e40f05964ffe9b62458", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "fbdc1e8d7380355fc49cfc9757b9c63411bd8a89e00b46cbc13dad30c93740a1", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "fbdc1e8d7380355fc49cfc9757b9c63411bd8a89e00b46cbc13dad30c93740a1", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "76b199eeaa5d33914f30a07cf42216b24b6a42c024ff98a2ed2689d4c75489df", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "7ce5358a61f0c22febecfc07535bffa837adf8687f70640ebdba325cb6d46749", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "533f5d0e411675610b7fb2e8d4d77ec6db7c726c0b8a9908b67ad4e3800ab322", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "0e069cfd56e83065eaa8c5188586148561e56b3046120f33e748cc7bc3a05718", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "cc864bc2b70106813503d956ffba598b0109ab91466739a0120049a3ab2fa931", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "888d9dab16b7646822867d39efe38b882e628294d162882a44de739acbac20c5", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "888d9dab16b7646822867d39efe38b882e628294d162882a44de739acbac20c5", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "105c68098ecca0a90528007d6ee129287e67a276d2dd873bc7cd32b6813fe713", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "ea3241911aeb22a7e772971843b8b82e8ed0c87a63a31d4b9483573f3aed0ab2", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "685379638919e4c7f094bc28cad246cf6fc8625bb73ffeff0fc3a7057866d5c4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "685379638919e4c7f094bc28cad246cf6fc8625bb73ffeff0fc3a7057866d5c4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "f6dbf7653071f28a265c54e016b9e133a81e75a1a73405decb32e45c7e346eac", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "5155d6b01c7461a7ee61f6b68f593bd3a62f96221ca832a642ae33b8463e31e2", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "4a0e2d5f151b2731671966e2b6b5e144c1be90881a9b30df727d8025764370f8", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "4a0e2d5f151b2731671966e2b6b5e144c1be90881a9b30df727d8025764370f8", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "62bbef331c816a359a3fd60299219f1cc4c25aa410faf6875734dc86ffe42876", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "ee567ee295c7273a63fc6cf94bac045db4532eb9f899fc944f342e9621a140cc", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "e16b37f10a59d35baeca180f8fefe926dabe21f5de409e4c53580126caada74a", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b957d324fd22ab260c226fd0d8ce33caa752c8b28e4ef078dbe581c36b4416d6", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "073bc0f9ce14c0a7087c86cff795b5f3852ccda7456572e8b1f0033de57a07be", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "97d2363e38acab3b979431909792d3122b0687b482374846bedd9a37c8a5716d", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "3deb52c385b57d269ce73fa93e547dd2e6d38cd4efafedd38623de3dedc5153c", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "821a9612ba898b82599eca5457ee451fbd9609635538bb8b48f47c6d01e681fc", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "7e371285f4b73ba09bc38459600744f4e90cc42b06ebdd726a3b2518e15fc2ce", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "f32f93855fadad704cd826e55cd76ca72c8538eaf14890ef7b4d8c28bb704319", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "d55e6eb2ed722141241d96eaacfebba812b25f5aa3007e373150d45723de1334", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "4bdfd6f3efa7777d7bdf19c99a3aea1215c9db8d77b4d0f4b1356f7423ef6afb", +"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "fa170022dc5d97c3b668b1ab7bdd45342dbd07e4826e636672bc80f490695e9d", +"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "fa170022dc5d97c3b668b1ab7bdd45342dbd07e4826e636672bc80f490695e9d", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "99de46c2e38f6899c368d9c5130b95c92b5420448db1e65cfa24ba25ebef765b", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "c24ba616d41e89c67257318f65e1bc90a054f3b9492b63852278312d35c59506", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx.py::test_information": "c1a90b0e0470e41570f85edd16783da73f1a39b4082c7d81dc76ab1fc775a23f", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "9a6cd2c53c6404d5b45dacbc7a976d49f4f665cb0c2c8abb7bb3d718c32f5524", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "077d19d8d989f462447b2a8da31366b589a8e34ca13ff56102dcdfed5d30ef2e", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "28a07599f2b1556e2bd538712d140b8831dce9bac801bf442935feae618f0592", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "3990829a79f19fcb13707720cb6c904b460197f18e138b9555aa9b69648d51b1", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "c8b4cb6acba37a5298986ce31af5198dfe4f3e56aa545912ae7d9f15041ab63a", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "3990829a79f19fcb13707720cb6c904b460197f18e138b9555aa9b69648d51b1", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "c8b4cb6acba37a5298986ce31af5198dfe4f3e56aa545912ae7d9f15041ab63a", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "deecf1730d1abd14bfc25deba2ab269619d4d6124bb6d1920cf2696a720eaa05", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "00d5b08fda7ac5394838cd9a1ebea7cbdac8d43bd26a3883a64feab2ee61d8bb", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "20ad0fb96fc48d8aadedea0b0b24c1b53dba4b2288426d6262f68414a2536459", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "7e2696b4745569f2d24bfab14d43fbaa1471eb2662b4f848b0184c7248911823", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "12edc3735c1a2dac329ad9dc6dd0ffe3df58bd75696bbc6ed68913c5150ae676", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "1555ec495cddb16e5cb6de8cdfb652013dbfb48b9c081d30b52d304f8aa0c5a0", +"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "084b4786fd2bde9ffedd754376041ff7d3b6d1c2dabbe1eef2804c9ec0b2eb26", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "4245e03212eed7e78f7e56e7a3d6d208abc5b7632ac440d66d0e1345a150c9a7", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "39a8b20468166b5d8252d4d7f1e448eb55cf4ff8f57d08071dc3a151ab6b72ad", +"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "07b432fbf7485c22fbfe9e79e73cd8e771e60cf5264b7e201f2b3da3eef6f876", +"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "b46195463d98243e9ff63417de45d64171eb344e8136bac83c39f116160420c4", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "e218143cba28460e9e194165551750658386ca81587f2f32c3e41f248dc668cd", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "dc7cc5929377cf9710b0126f0e1fcde7a2360eed82766dc85d27d0eaaeef4c49", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "3e488a0bcc80410820fd3b03b7afe1eafbef7012db0882147d6fb76e07c8f9c5", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "fa170022dc5d97c3b668b1ab7bdd45342dbd07e4826e636672bc80f490695e9d", +"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "8818368acc817667c31d73617e18b769c8d70ed149432e8efb1194118e8be0f2", +"T3T1_es_bitcoin-test_signtx.py::test_two_two": "79cc8a009c706c6895f78b7427e3061859950c3fa00590a9f672c0c5d022553a", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "084b4786fd2bde9ffedd754376041ff7d3b6d1c2dabbe1eef2804c9ec0b2eb26", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "1ef15319fcb5e00aab11be6feb5222507a390041aac9a8b6ec7ed158842be4ee", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "ef7fcdd1cd77ead26718b92a51e18434862b622bc9bc5b5ce738f3a4dac27339", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "413ee88c1fc78fbb22b92144feaf37cc56ab1a3afad6d845286c59fd2b13b33c", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "084b4786fd2bde9ffedd754376041ff7d3b6d1c2dabbe1eef2804c9ec0b2eb26", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "4bfaa67856ae1beee2ffe732e1d58eb089435703f388b4f86118bbcbbbf53ed9", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "59334648e6d1e4553cbcb56e1271e8a34920ceab2cab91d91cf55a71609a8585", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "038c022b706e67649f3ced6ecfbaa7167c460d232ca82e78eefb9492c0824ba2", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e5ed901df270702651a124fd625be2e360fbfe81175d93d4bfd05c10a6db4787", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "4bfaa67856ae1beee2ffe732e1d58eb089435703f388b4f86118bbcbbbf53ed9", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2a71cf81d3eeadab8919a09360df94ca99943b23c5d188ca8c4aa150e46d5ddb", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "4943a0b9bfd54871029d75b557c20a8b01d00cdd4937ae790fe9a3ccaa7e7c73", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "5f61ffb9cfabc18719bcb559744366b33e551bb10766b29381fa93244055ef0b", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c07e4fc01048924fce568d39839ad444ba77c5f0f1be51d1fa311811e1889e9a", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0f5b34b5d410df0bba63e447b24bc7c0e054e44ebc1188f288cbcb51b68d5627", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "710ea44eb642e763ec4e1b0817fe7504038cdd11c3bfdc31eeff55c2a672e5b4", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7fb8b89e88cc07019f0292e948c1ffa03252affa1435746ef598478fd5e34b56", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "77796388d0819c4ba7d7234d3c59944454c21f886a98ae4c6c49974d172bf12a", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c6a40195f4d510d34e6c759bd0107b6b55a031096eedfd5c1ff136333793c3aa", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "8d089fbe440b0c00b959afd37cd074350feb78b52b6b60e93efc41b9784e9965", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "5a141625bc0e65a0293cc0370de2cd8c6d9242ba7b8eb30503fb4224fd8d622c", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "4b5301d08a2f04c35342356c2c0ffe8eb68de6b90eba2dadb504ebb6f47425dd", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e2d7e7b2d286b7c4139388f84d05a760c9571d5d9842f066539238f0b0178a11", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "62a14a9d1bbcc092a71962c49b7d7f6e3ab5c3851ada783d8e2d88b0dfe2abf7", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e2d7e7b2d286b7c4139388f84d05a760c9571d5d9842f066539238f0b0178a11", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "62a14a9d1bbcc092a71962c49b7d7f6e3ab5c3851ada783d8e2d88b0dfe2abf7", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ab2f9149d885df57071e32682546f9447a9df3667b5164d317dbccd869b66ff4", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9c176563cdc9af0326b9c7d66dfc867dd793245c256792eb1b836626ebe263e1", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "f083198b2bd78a3d68a00a140aaabb3a698282934f95c7616bfd21b0557f2bb6", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "fc768d22cc63922d63f52e461e21e31551ac12670f61fc84467a65bb158ef373", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "6f49525645f7f3da3646eccc20a3695acc4e23ad06419edd3c291e1ea8f3b967", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "296078c99fa6139ef94499832a212cded44bb75d9c3e5fde55ac59e67646aa53", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "d5eaf7d09f7ff7a7ca4f5b1c1e52c03a4142fc0b7be86b7ee155eed9e035f211", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "e640aaa19057049f3bfd8049ca1478c5118478ac0f5e36565e32ed97347595b2", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "0297751ffe3e6a7574535a68ddca41b82d08717e4ed2f25b93241533ab8fa30e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "0297751ffe3e6a7574535a68ddca41b82d08717e4ed2f25b93241533ab8fa30e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "0297751ffe3e6a7574535a68ddca41b82d08717e4ed2f25b93241533ab8fa30e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0297751ffe3e6a7574535a68ddca41b82d08717e4ed2f25b93241533ab8fa30e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "5cd5f7adce28236e45b8112239b02c58d03cca2142880cd4ebc7c5295dc8447f", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "5cd5f7adce28236e45b8112239b02c58d03cca2142880cd4ebc7c5295dc8447f", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "5cd5f7adce28236e45b8112239b02c58d03cca2142880cd4ebc7c5295dc8447f", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5cd5f7adce28236e45b8112239b02c58d03cca2142880cd4ebc7c5295dc8447f", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "2bcb6031dad6b981e5e85d480caf235c962ae559947000059b0467c981f38127", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "cc2c593b57a0e443b7c31d01a62b3d64582d8cfb07180312701b8083ef4a17b3", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "e186a8189129b0709cc6b119485699361231017bbb82b378778b710421b18f40", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "e186a8189129b0709cc6b119485699361231017bbb82b378778b710421b18f40", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "08f485095e11115dfdd866d28232439e44c0691679518118cdf725646044f1e9", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "a9b15ef65fc883e50a07387187b1a49c16cb659e9adf0bf5cc96cb82da930cb7", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "76653655d3546cf21c347e7e51a8a7a8531c77e800a4700ca13f1823cd1c593c", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "08f485095e11115dfdd866d28232439e44c0691679518118cdf725646044f1e9", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "5c6965eac49bf40ac0acddab0ea3afc0ef01c9a9c6a0eb5cf7e1505a273195e3", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "1db369bea3f4a5a8a4c904b3d97ca20f8b2344d17266e223b0aaad7e21f1059b", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "1db369bea3f4a5a8a4c904b3d97ca20f8b2344d17266e223b0aaad7e21f1059b", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "1db369bea3f4a5a8a4c904b3d97ca20f8b2344d17266e223b0aaad7e21f1059b", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "17b11e739e95963f65f296cb9722861417089de47260aa5a5cd53e358d17f9ef", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "1db369bea3f4a5a8a4c904b3d97ca20f8b2344d17266e223b0aaad7e21f1059b", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "b5d37ad5a8f98a3ed5785dcd67d40e90ef12fa15b2fe19b9428db0c9491900a4", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "6dcf35eebeee694706808123a32744d2f524998bd7a4f0256650d9644581020f", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e86c69d70d9b6e01344f052220aa757f937b178d4bdc6a10f6da5a8ca85c3905", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "1cefb875c3a5c9803550e02caf6da6e2db196db75a3dd0860d4cba0f686545b0", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "e54ac8aec4f3839b4259fdcc7d99540f74a2aae4e9698d10b84af6e2bbfd2346", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f30f2944e93ef3fb22343aad6de31786ef9c3f59080e931047722deeb631c406", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "b1562798be74739b16270acf49c398976f3ef8de473a923ffe1570746f25bab6", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "805fe046b09d3b5d4114c1867995f9b3335a114951eee98d85c027348c9ad685", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "dc87fd4204e7118e26dad4bb9b92e8d8cdb5089023dea0f568c11a1f89cc39e3", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "3ff7b9e28792581e49fba60bb962bac8a5001c984b277710522bafb1408c82c6", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "a8c2d9a17f8bd538fd998889b7b98a579b244dc4136ad40cad814c11a15ba736", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "35d81745d146c61e6f3e9204a856dbd3f0e5b8a2049861036050e9f5d0dafd98", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "22b50c2afcaaa6157c535d0716d932bb9178bf2fdca2aab5eae7f6a8e3cdaf4d", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "0083a87238e3c3238390b7c7703b5576aad17bcc3fe5e180df1d8fefbb0745a3", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "4bfaa67856ae1beee2ffe732e1d58eb089435703f388b4f86118bbcbbbf53ed9", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "3044e8b46c01ffa3cb84134ee73caea70d14dccc007bbf69cad9c904eba994b6", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "cbbdc63f67d6b0c93e47c29d472cc186e4fcabcf3f67d4c746bec0e43bc7319e", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "109220067a416bc125ec7b4b538c0500f0f2140cb55003945bbcc9c0b530c09f", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "8492d606bd596df345ffc666a096df9b671d166e6f52bb99d7faf0d8cde3d49c", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "b5abd1658f73ff9e5951caf9221ea265c8017263d1d6a714ecc2919b8c28cb60", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "09bfdaecce6142002ba895936a653c2f459f8e1ccce512e62d24f58961a5045d", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6d2d61cbd83f75cbdadd90bee9de61f70950cc47586601252f8f016a25e1549a", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "baa6800465450887869d1a14339f2ceed25fe9fa35182e8d57504848a44fc887", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "39512d55906288d96efeba92fda17c961b02af77c20b755397015564bc69c08f", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "1fef5252669102745f35841039ec73cef10924e98cce721e61b9db85b7392697", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "afd4eb73bd8387e509a7b507bdfd92b2aadc8e05c59264fee30b0724b5647a6a", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "71f3e5eaba793dd222b8831d1d194ba335147a1c56f50babaf7d69e54991dbb2", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "99a075597b0d75fbef20c8371ff1003ed709e981ccd0e03bf0d52e01ffd2afc6", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "ef30426245a65b9b1ead841dc76e58362191b73ccee011d88c563f488fb48283", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "5fff480773f51cba71bf1e1d6f8cd9159e11137d141ff170f8cfb41f3da44aae", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "b5ab029e781cfe3bfce8c22079b1f2efbd9e7af31cbaa6484ee99ad41e5fbeea", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "31096adac12e7baaa595e4bdd269927b8e95eceb422e1e009796518db3612f1f", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "fa00dd06f9ae7503384e09e8d477d10158fe271b5caa2521074bcb69b70b95f3", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "bd304c0e5ed0508614fc4a9ce9a16a4da95ce13ddfee63428a093cfb8a7f01de", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "bf8167e117ae08235a7ac1eaab8f3daeeae9e7c49fbd1f8625e9df03fe3e36c7", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "5cb1ec457b415f0851056f9fa7f75d5d51cc8707093ea024710c5e41cb2fe770", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "e95ffdbe64277c85de25fd4f13f3be1207003cc6f7b2abdcf94d75454cd13771", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "108949b23d9bf58186afb703a167acd59a86f7f1adaced28a878886423603acf", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "8f070280dbbc1ee82edea2bb595e61079f8081c4895d84bfb7b43e46e97cdb57", +"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "5e5e27f2baad6a28d2663601ee132b99fb2ba6d82a29fc05dd0189907fc57d11", +"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "1d8ee62ae1d62493f468e15071fc0a2195c9ef6b87b56dba50aac33c8b3dff47", +"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "6819141617696b0a9b0cc9931d896b79a0c6574b5e7bae611ecb54bfda7a13aa", +"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a5d2171c871d76d7eb17a45a81a0bb7e775ae8aa7e21cc08c2d46678f526c63f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "565a07f3459dcee219546d780aec59640ae2e109c9ab1fcfef09e11cd91dd0e1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "8873cb1c37891901342de6062d7f831c5d8b0a2f9830cd263562f8e56e844a6e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "c6b39c74f0c29ae4e91216c3d0aa7957c45a34ae4576da5ae415cc789fd7a9df", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "48b6bc4a71aeda5ffa39f497951147f6bf62594ee6483dac1c8189f6db238ce8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c7b166dcda0fb6cac4de0563ddd060940567cce127ae7df3515fe32899cf6e21", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "43867b4d7ef97e1fc69506a6d2e5e5a3a3aa1bfdf4596b7f3b2414ffa23cec24", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "83140eb997c188671b74fdf10648269aa7d5719ecc59e9d393114559911fb648", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "84c27f3ece06de4fcc5cbc505007a18afcb43b0dfa5277ecf366d53a4388db99", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "523050c9ff8b3fe763299e1f1659dffb82f9a542809e82f3d53fb0c56012275d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "4f01c6d74a1fe43637a790c7f4e6ea669308e53c95e27180cdd0f329f618d1a2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "d6e2c89e50a60593eed2b529ff76d3360bc02e2b9be4905933c73ab2b0ab704e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b3269311493457d24d3295779482409c90d152f0b799566f82ed6b5b0807d142", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "cf6446616e13dd34ab8f39f79e4a55a87eb279f68453beba05448a3cc816a2cd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c6f7afb4db11eafe27e08529a53d694c3017e548d2939de5d0d55863636e74b4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "2995d25f32931ea59a720ad2d05768aad114cf1cd5d7940a4f759b82b06d3e08", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "5d61d4435d3e91c554bf41538ba079b14928a77be52e91c1f03cb05a9a691725", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "c87fc9a6ad6d73355a62092ba400cd1cfb016f010893caf16a23573f7b619093", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "393451236665dac2073b571120cffaadbd341e2bbb0e00d7584b13186513a630", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "79fb8b753fbe44577cdbb66f708d64a8bb55810f237ab73d0f42f0eba4e941f1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ccbbcd19c7ee8086d8544c868579231026fed805167fc615444aff553b3bfc74", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "1db71e324021374bb51e593921dab43743cb22418be5cba94526ca953d004e61", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4fe6a056afb038ec666d8bdd89379a1c59a17f1673f21c043bcd5f039481c3f2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "b878ce36c41039e15990efae993728a6d5cdc476154b18ea8043b3b053fa8146", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4ec4385e0cf1df1002b746531b694d2ee50132799620ab38294dc93d8cc6bb98", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "abc44ac3776a3374131e0d035c20cd1ef4066b492c97797d6016b17e130dc363", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a7486ee53aec9e2cde62380a9b31129c3b5e9a93b46744529b1fb6d5ac93b94d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "f292ba4167b5f459609e5fbae591c213d40b6541c845cbfbd1c26215b6fa6206", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "cd272d7e909546d39b0b10d24d2904b9e48979af57931c810df007a60b9bdaba", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "50ad314c3de8a8566c0006ffcaa4b7341afbbadb2b5a852571099c87b4c6c934", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "1643221031390f2f27d2df1c882bb23604e0a543bf27a003e77360938a65343b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "79603ca742192e885ca954a46d2a00eb1053cd4e4114830b3656c4455f501481", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2dd42f79c41194931c1924ef22e062a431bc81d26e5e79d31a1b3f1406f7ecfe", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "7d8f2461d76649d725c931c5194baaecd40c3ced8dca8f8e1164fd10844c1bae", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "b9ee1225764f75faa387a1bd111819bfe52b0cb84cf34717c01abf8a767321f6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "2b339506f378e0f4bd44c0db6f1f9454319d497725efbdce8114883a945b93c0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4dc381f020a5afa4127185d961de325baab437c41f62da56939bb77e2d02fe98", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "78e94c1e4d3e423de8757f45e1ffe03224cd8237e43ab7c4af527ded7d356c39", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "0fd3b0841604d143c1e32969f41abd5a86295c5012627a4e16b18e3e7a04c819", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "590b73b38c210876b33c366c8c6493898252b846d804af6e8ed2882a3e87c6a6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "af1ed52c96502a5afa2801bcf8a1a96a94c377ab2d56adf50c8bf30322aa635c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "d510b11a21da40d466ad74c5aaecba397ce771dd55046f6985c58ca97096e73c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a046c2bf5287e95f85ce1b6174bbfdb2c7ed9762a70448787860c1dc8648440e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "08033fa3a24e834b7fcf1cf5e6a1bdeba97578efd3ed98129b6261add5e57132", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "1ab6abb649f2a34a3adc24b16ac5fbedbf6c0e186334bd5b56d28fbbd5698515", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "181b44f445e048011ec552064e5136c4ef687c68f7ce9cfeb911f8c3256e6dd3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8bab242b2a03be4086337a310e4481943e55c41ecb5813c87218b20f98adf5df", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "9e8b719b2054f71c8f946c4e719242643474505f4c6e4d794e0fc6758896ae8e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "5350adc569813d2902e9c959969521d7f4fefd56ac37ca283de213d71973077d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5048ae6caf366d7f1ebc54f30f4e2ea0d280375eb08faa97f17424e4837f76c1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "dc20a2528f6622da17b6decce7c7018393e799ca0f2493b375798f6cbacb86bc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "e0c51606e2283f20c3df012ca8d61e013d1b4dde83ad46961273828c1bdd38a0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "44be75a04a783defbc626ef29b398081173bd1d5ca60f3ad32190407ebb19cb6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "216fce2439ff63bd6a21173dc5b6995c03f7d5c9f8c10a09316712222be63fd0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "e54aad5c92b96cce5b7c4d5483e2c15bcd26045f333627a4d38308e07eb847ad", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e4940ab9b571ec19ffc7e1072cc6b8c9ef00b65864dd4c7f2f87e88bb3e3903b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "89730e12dd180a8edec1067ce73c93ee1be1d0e83e4a5906a6cf30d579edc351", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "678a23571e12c534bf0a9eba657015fcc4f6dd179e1360ff1310e12f6b30fa0d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "1aab4e0bc9daaa963a2d9039625acfaefdbd325568cee6d392e28a980d5a7831", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "58a7e3ffa343b6d23819cb1701cc4ef382e9979e321ff9bdc7d149420fe83c1a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "e67b839989808e1a119329b27d2376b4fa3eec66e8fc25e794265daeedf948f7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9c30cfec9178c8f0883e93aa43550ff7a5482993d4cdcaa178b03ba9b39f70aa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "2ed1709fb3ef77ab0ef19dbbbab86827c932cd6938ec9c663aee4e8a7d91f329", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "a343fc02579dbc2cc785c7e6f3f9f19b6c0f5fae4ccdb5d6c8c85093753ee01a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d5222b87f16ff71d930a481de9ea23a5ec3cd0d525bb2b72fa53d72dd87090aa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "6b134b2b024c1760e221089a907d51865d995f1c1bf6babf1fd1109d83fb94ca", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "ef2e22ddc321581f8690efaaf20adb26948143ceeb881b80f81b4852e5d6662d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "afbba42bbbbade4b1e0a22cc4dfb2ab88a4eefbfc2756ae9d3f2ad1781cb1fee", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "67fcb5475e13db4a09aee695d49faffb6fdc31fcd53aa9e34ecad3032936ecf8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "7d68c3872b5a36254a7f04a116e4bba27775c252a91b0a686c0943410004e2cd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "41e2addeddf38855d14ee460770489408602e0b5c4899b1830466d2a75551f16", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "ebed5701c678cd112a9b55b328043e1dfa76659ac9aa6c825421264db397643a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "36a4f7f5466a6278aea6e17984a47b2d661853abd5f00b2d0ed12144b4df6f68", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "a3812c5fca8b12d90dd92c95f99c2da9ca0edd36fda6dc3bb415d097354450ec", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "5c54535a97a7c883966ebbfbf8aea408e3abad6d2c3114dc5d98fa11e898dcea", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b19d337edd0a4915d6b26acbd6fbc509fb3a3fd59efddd6c0218741d58551d81", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c89984a64b9e2674fe414ba83157193c865b220fd405f3c079149d7ea75ab343", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "c16fbf79025107f1d66e67864690e04c142db32b3f22f620db9a53a7ae9f39e3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "091a12fbc83ee37e80a5ba1212c997f4277ad1580b1f822cc973dd8d28d86899", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "f04e179890bd21c52d3f88b7ee1899dfb0d384c6c4010f0321a7ed484f3cefce", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "25c8f1f4d169e280497e76d98009671240cb85ac8b3c47f09d8a7fa9c14d1faa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "050da5cd8d3827659388f2d5065b8d4d34a733c0ea6ae08c7ef7def148933177", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "312daac28168f113799fb96eaf561200490f39f5107f85d7ea8e5a71b994a1fc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "c21e5e837df3b4985d1a9aac02b54b67069b84c68f6bef90b5c4e31f7b79dea0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "35950f179cc6334424d4b21b5886983a0259f966b1cfbf16a02e01017a1a70a5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ec7c136f48fd7a68333259d34aa896e96410b1d6f31916511030f04d5f387ef7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8b6ccf1457c961081d5cb08b14d1f033bfb729506254aa2d76b19124cd2dc660", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "b5adacda787263111ba27a0f9231523bd629459685bf0d7f912dc918206bb30a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2f0a95ad867ac84f64be9e626dee6842114b463cf5112b291b295a2bd328ab96", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4660a87f1a6728ff9861be262eff97af9e20077da1cd8b720e7caa4726b43b39", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c9d9ddae11bfb8635284d0bc855e1204c4aa0e55a6fc8c66d2be1b742ecc0e84", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "2ce0138e3c8460e4d1855043f272326308a1088a9afa6a743089ae46587a946f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d835253a4515b5747dcc8acdf1eba902bfbb45f298fbcc0e4ab15aa425d0fcfc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "256110cc1edc22b0e961314a999b3d294fce1ba1eb5a70aa6fcd1b64df9858d3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "3caa40d04b6ab80c2cf94c3c601dc41f1f616a9d1c5c38952e69ab2d0f9288ab", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4467dadb30cf952f4a02e120693a6663f1baf838a49e918d91a6c680ee461df5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "960f5df34a05918280194e5d9c4fd5cdbdab3e4162e57c8bf33723d088a69bdd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "9adc1142c9e1fb9e93fc63425c418948da9699702e7ec418b347af0d271fd639", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "2af8538c9e37db1bb7d865c1bd95eaed7d03876b1274486f6d1d74b060aec52e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "2b13333914c3d6b1e96853de33d53e5bafe75b70b72f8106bfba0a1060e26ca3", +"T3T1_es_cardano-test_derivations.py::test_bad_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "2772581a866908903954629208cad44d66797f36120095868fe0060eab4f8247", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "453136b9cf03c92ee3295130c559043410ccd680e90f4612c692cab77677df07", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "43507549a1f29a612b30828fd3de42c68e88000d5788e7d9874be448bb22b541", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "48e04dc51cfa296e774b69fe5104353c02549e5980e8979c98abb8978d27ca0f", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7ffe3b9d89a44e21b922cb746f409ef321c253e7adc81c7f855d0c7aaad1a5af", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4dab75687dfbe6faa61c50ca3212af789bb605e93e334e287de89e38b846d244", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "9e3772873e2c65603bcf535d0d1b956f8bd0920b497f66386090949b8a947fd7", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "ca2866b58b59326e9029180e79e63c0d7140f13fb48ff0ece30473b5af2a9d29", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "f8fb895a7509f70cd2b1b5fe30f1169d23890f185c6b2cd53765ee698dcc7d90", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "4069f8cd92b007dd25cd35c98bb9706d6541ed03ab4b78e1226486f2a9526d22", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "3beafcddd040e4ad6f0a885cbed274fe84b9c60b3feb3143d93c3a4500476281", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "6dbef35ebbd763811abeb9916c166b6873fe3df9a95ef2d29c807ae88026e510", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "7542d18ba400188522d60857273adb5f32b32e4e33e362af984fabd7913c5601", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "e4c5ee54eecf937a89898773b37db54fc01ca13f10c25397b14de8151194db0b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "7b62a982c272aa46df0200495d9bf938b7ba0d383771139ebb08b4e601ece7e8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "e0a1b8230fdf38dc39b64c64a9c0161ac9494b785a56f9e4e1e993623dd8dd27", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3356ee2004523a31f463eea52698a879e2ec31c2db221ceda4575e4f620c2158", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9729ce87060e5b63bdf38c73a155d7162552187fb7c1de6554c45e3d0a45c235", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "1e378c4abd9cf31030a79e4629c881d8353d6ce7659b28372c5ca5af3e6bc92a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "4ac5944932060c456a6f095f102fae11dd2bcbb06e41dec8a13e452b950bfc33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "59a7ebd1232ad46994b7647a9bf2046cf29e4a1830dd398bdf32aed94f7c822a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "1dbff93298705320d8356db5f50b4df7a796f1f64e0dda7b1d3a68cab1a23074", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "b158d74e01aea835bb3451d4cdf63e81f689f6884a2ac86e1903fa298180139e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "0ae121d07fc23cefa9c2feb2b726462670def90fb9da170e2bf7fc3b930fceb8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "7d166d5a83216bdea97acea1cece1b4a17f9323277f4e6120a2995d21b51417c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "7d166d5a83216bdea97acea1cece1b4a17f9323277f4e6120a2995d21b51417c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "00d55fa66bb66ec2dd6e57d8621de37f4824c0d5bb048d0e131ca2e951df152d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "a8393952b69280c6a0d9e0aa05d231e5b448e13a4e8095404596c77c3c664aab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6c5e4fc010c4538e6edc0410db88804a45d27ca59edc8b7c845bd562cfc902eb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "be73cc90fc2198497d19f980957db9d0181ee3373e26cd27d6a868d3428b4951", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "b0b79f9b57fdbd1be9d9a6c9180e53e85e23a989edba782c412d330aa51ce63f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "b38c35897c82d4c1acc7e4a6651bed0057e68a3270b012d00559c8bb67953e55", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "8caea34d0a3b658944b3d413d44dfb041dfbdd1f752130bf9979733f057407af", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "6d5fa74117b04622e67ab186d8056fa1637ff3ce29dffee7d0557b8707a9b12d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "18a7609ba20402307998c7ed5ea3ce1500350b1f80cb7fd555e49b6465b5a127", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "b0b79f9b57fdbd1be9d9a6c9180e53e85e23a989edba782c412d330aa51ce63f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "b38c35897c82d4c1acc7e4a6651bed0057e68a3270b012d00559c8bb67953e55", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "f3ffab71418cfdb6ed2aadf29d431b85884a4d28b5ee7d931da8adc739b64c2a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "4a540196684566461e6d2cbc3e90304236e7f6d6148e099cea1c2d3b3057c19d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d23e3229f38b6edc4500c0157b561ca3339172ddd9ab5f95db544ccfe1954bb8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b96868aff7fe171e0b712d4314721f4db17ea5ddf6de3af39ebc3bbc48902d3a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "eab68b7e29b31f55b02aa3d16d00aa8a41635ba0c573f4629f8f9018f9562817", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4abb8b401d7488953b00103de89150f03770237abfdf0df4711587598c070ec9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "15d7221c6c7375f35e15d38bab197c5106f062059df0fc9c2be83c744411db90", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a309cb9dccdb2cf46d252ba799c89d487687ef54b647bd0598a927aa8599eed6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "8a1f7cedaabfd46662b15bdc94e3319d5e6990aa493fc295eebc8a8bcf63f8b1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "1c38fb23e897482649a01add32cfb1612727c81da300377622db43ffa2d30235", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "9a7db118577ec200186928655782398426ea9d260f2ffd4cfad129f0365654ac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "a2b1cf42b8f03d36c784d700e87ce7ae670aeee570e3b5b8351a41e733c1e64a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "d35a4511badb3712817b065f13fef3a05c161bf085825e3e4c4fb3e836937db4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "6a362f32b67cb89384094537f4e5369a31028894bf78b4cb76efec24de89edbd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "ed5c96af16ce928d40ce9c36b60469a92a20cf45597605a9a873c95312e545b6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c4d079d967fabdb788508b9843de557943a5f4939d445710fa1d25cddad193d0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "a5922218b23bb198ab24d6825f17755d97cee94a35a74bf13c63b01943265e1f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "6f48b5dc53b70bb66582f38ab314b42aeff63d382344712ee8c2330792531022", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "766904e54d142c4e5f283871e28da02a9c176981d3e2fce1b46c2723fca35edc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "9a0932b1ee23887655a0006bd9bff6447eed14c685b605d5626483927bc756d5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "32c3974679c95c3be4db19a793a9c96aa74c290316d92109b6ea26c91366bc2c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "a686dfedafb8696ba798f4884428a701ff37226e576c80fccefd9079c652e801", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "e58c8d2ba0a9663672f40de38af82f5f29aefb1a0e8ce4e89cd05b073c94ec09", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c0c0a53255c1a93a99db01d5cac19c8287b5158fc9df83201ae567ac4915f3d0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e10ae7610cf11d5972b21117d5ad4ddb5e027e521b4d617e5736a295701c229f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "195bda3b46d142284cccb45da1fa99f1152fd293f88b8f6dff0a0b1c944c3f25", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "15f8dd764d8108ed9f54c0fb3ea4dfe503d85ee268219af194dafac33d2494bf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "7134ca97713579590f5e5d59165df5a5120f69abd3fd7087bb17b9ee87f03a7d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "a8a4b2170aad8feb9fb2a737d971914a464fb5e5227c02a95e75d39766d6fc30", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "cc990ee1d8b83b30e531a60911b97ff68a8a492e3fd3891ef6ccb830e72aa621", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "377b472bbcc11d2c8ac45957f69327a924d5a6fa225f27c163876a7b5447a8ee", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "3106406098979a5dfc19bbea3436484453d53e9995b46d8d4aa995d392b6c5fd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "4fd621fd2a2ff1cd327c698eb12e79cbe142779be2007e048afba2089f152b5e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "6eb2a249bad3319b3ea961d3fe11184ba6b2ea614adba4baa88aeb754aa94f93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "588d2a688947476d9bbf9f7e9b0b28bce462aec3e2d92d42a316339172a73815", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "6ed751c4866e69b6e7f43c809f13a28398f7a7bc4e556c52cebc891a726efdb4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "ad43d8134e87b077531752d05c5989d23249e1720a074dd0004d6e00ca455db9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "223a9bc55f74699ed586e0751ca3e141d79d231bfac979ce58aa3e5369aa48ba", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b068d7f0f748db2c3cb78b62d2c74837e819edd10edb921c3399c5a14c877a0f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2deae30ceb3d0d015afc94a8985586b6d8bc10c47d3cb92c1d383330c1a6a48d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "dfebfdd399b440986c91450912357a3489c56c1e65e91862b76c720358186b36", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "ca9ab61e329f7eeffcc190a3ab47cf53b76ecfad5f7feef344d35a84baac71ef", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0d3cf9bb6b9d22e1729eff435680d1cdc2d98b176bb4dba58a368725d5a3a049", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57a22556104fa93d7497c07710d410d32b5c98714472858908784a00c6c3ef2a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f5f36187fad5cd778fd8c65cefee6c2d4366ee010595352664582ea4e324c209", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "7570f5ce78e1231a182d0311d01f25060b068b72f77a0f2d8e6829b4a18b0df8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "a6a7939183ad087704dad66dc07a726976645c2f9df5110d6fdf8a028e7534e7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "c231a3c7c9e4c49dfa55d8845f9c0094fe4cf30755de13af40653ee4247c6c66", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "cf8480f9ce920de74031ba5a059b28fd938821c0dcb40bcfdb94bbd23c97d357", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "36cdc367acdfd31ecaaeea732fcdd59b0f12ea0b04e1b40a07b4fca44eea71f2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d7cabe2d934a9b29a4a2c9b56af44d8829e1dec0801cc672dca63e35972157e5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "f8db72e167d803b65308f5c15d242462c54a94e304cd68cb407ab5db1ede11bc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "f8db72e167d803b65308f5c15d242462c54a94e304cd68cb407ab5db1ede11bc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "83d47aa0d5a242c8e08e45745bad36d6aaa575347feeaa84524f96795f030037", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "286c69bcaa7bfe756245474c259f06977edac2d1705abd6fe3a7495c05f3e89b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "286c69bcaa7bfe756245474c259f06977edac2d1705abd6fe3a7495c05f3e89b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a33ad6421f91cf9d2207d9b5e040916f23dd1c2822837ddb84855688b02c2c84", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "5576275d8203ceaa6fc8c11a96641154902a2cfd6fac71a8025c04e862b40a46", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "93d75c6b0585472d50762d8bcbfb7096bad394e932f8a2ce6e180a06529f5096", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f29be4efa5e3d60741582171e6bb191d1643fb860af2fcc1588f00d55380f0e1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "e2602770ddecf902d97f32bc841930a39dcc2e77f9fe7063efd2ef5e2a3f2b65", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d5402179f4c89776045e69d985f924d1414decc8b010b359e3a434a83222efe5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "5b17bb7f27f2899d92cfb71c51d61973cda924af850ec7e4ac6a3df9f3649e06", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "4b66a704922a09e7c34381fcd92beee50cc5a4d16ae0876c2c562d58db670097", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "33b979763deeb12ecac21d1ad0c5efd35ca5a98bdef22adedccd752eea975529", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "e4c5ee54eecf937a89898773b37db54fc01ca13f10c25397b14de8151194db0b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "4ac5944932060c456a6f095f102fae11dd2bcbb06e41dec8a13e452b950bfc33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0edfb82899c670de81a6e061752e35114ad92a8ff805e5dcafd8cb5f298018d5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d9be5fc9010973a8861fb7e9856fc07aae6308c8f81c3ca27b503c630d8de830", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d9be5fc9010973a8861fb7e9856fc07aae6308c8f81c3ca27b503c630d8de830", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "2e37a34f42cc8e60f064ca55923d450b6d6426167bbf02b071037a3eefcf1809", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "3d4d7907f8ff82a37e7e2caeb9fb1731bbac56fc965ea2c35a49ee6f1a73bcd5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "20cc4aaab040fec3828e3a3c7711bdc9f0efa75d7f806a5120b0f326c1494ea2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "78c9af35083f5c184061ae4320cdeb940ecf5f3d5b8fda80209687a6f0d5111c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "56197bf7c40dbc49b003e0abd06723dd8abcb2a17ace9b3f145cfbc988dd4b4f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bbede4ebd6b9b14272e8128ac0baf881755be04ae8a6a6e671957b93ed9f6c67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f7b54879009932f89580ccde8d7e05ffac22af9cde2f7114463b427838b9cb94", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f7b54879009932f89580ccde8d7e05ffac22af9cde2f7114463b427838b9cb94", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f7b54879009932f89580ccde8d7e05ffac22af9cde2f7114463b427838b9cb94", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f7b54879009932f89580ccde8d7e05ffac22af9cde2f7114463b427838b9cb94", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "78c9af35083f5c184061ae4320cdeb940ecf5f3d5b8fda80209687a6f0d5111c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "130de74b48815346959650c094a694f72fc7f42602f3138dda4c4fe4022838bb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5bac9c9117a5a7e2b2192d8528e6848629c162e39d6eb724b15c69a028cf5a37", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "8afa503423f037974d63a0489df877ff189006e693d28667aa7714d8672c287a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "c4b441555836c43af85dc41d7de63a5fc5c01202f27af7a6d1e4dab8d47551a4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "3c17b14a7ad7108df8b2d469b07f30618849d2a63d1adf92220dd2fb5a5e2248", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "be45276c623bd72e6d7a40f0b9d73d38a3ccfe43736496c55e33c158107e09d3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "be3303f5cbf6b3b70ed871dff39352ea327438b8aa6af36bfbc2e000543c445d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "e19ec62cee368c049ac7990fde8b278843a66abcf19bf3e5520a38ab7737e681", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "cb21f84ee98bcc3c84a99ff29d9252e4bad37dd2f191feb6408ad21a604af16d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "5d64f3f5e531e3a18aeae8ea1d05def868c2b9a0c2e088e195c2b7fc2fb8ec9c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "f8eb21de2830d02f15565fe467a5df294ffee931de78cd159daeceb86bfcc1ea", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d9be5fc9010973a8861fb7e9856fc07aae6308c8f81c3ca27b503c630d8de830", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "41ca1a11f7372f833221bbf661f7b07a7fb0a08aa3b3779a1cfc571d511640ee", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "211713edeefc7718418cffb778167e8f6ddd56863e6aadc2b0fe0c10ded0e791", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1de1a2c68731370d35bd5d2795ba80ece2b6e33722711d2efd6b01343039c665", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "87be58bafc8439d2085590febf6a8cf8d562fcd259882cc8d59bab31b1df8a83", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "b3e1fc5ba6e8aa3e7606a895f32c55a3aeebc34e70be8e997abe36a61156989d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", +"T3T1_es_ethereum-test_definitions.py::test_builtin": "6c4cd61eefd969e99872c951e891e2de258e82be5b563b5732c27bf2094d3795", +"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "5ebde2d157b625ddf0dd55b6cbbe14aba5b40d32dc42a8369065036e93856117", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "2595a2dd6bc22fbc47093daf37970762c45f5de6702231d21eb1f11dfee8d5f5", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aa30b7a7dab8aab4dc0755b30faf41bd2b47e3f51bdf80787c00b967d7ba8c8e", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "37869663d068e341490bcb1e1a4df6b939edd21ae6db546a2bb52c0e044ffa59", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "bbc83f664a31b1e6a9aba832dc874a9686d500dc20f43e0b9124cc42528ebd20", +"T3T1_es_ethereum-test_definitions.py::test_external_token": "61eb957fb65d4ffe38f51d4435cefbee17615bb941da27d45bf3c848baec2fc5", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ded16791df1aeea3ee25ca8921970d6055e934d9f239f8e40d614d3a070481c0", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "0222c9dde20a685d34a5c36720b7f3e1d1824bc2028d9238d984eabda21e1bc7", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "4922e850bf74a0a7b0c52d3a373435cdf37ff66d02f29529417430369ac276de", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c4a6484b3a24b2a40ab357e7f8d6d7f85d8d036f3810de8df87846a1c158ec85", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "37dc556c6c31782d1de3ef03a2728b41f82f8b2a2f964c16fb2b88c043e14f68", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "56541c11b94b89aa445bf6b945d9a2068ccc861438d876833a5025eaf15232d7", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "480d94bf477d24022081484e1e912599a35f06d693ce97eac054fe7d5ea2579f", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "89a73bbd8411b8ef3e6355c1d88022eb55a34e5005a26ce3fe77114b3073104a", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "58d452aa3f2f12fe07cfab9c34df1746a6a0f0ceecdb9c6e8f8f1b0ebd01f847", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "25989b3833510c3bba7e5c28094c43f89eeb2fb2b09933f14078cc5f9bd10748", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "64b223982606d2134d21973241d2865c22caf9e64643cc061108e1f9acae1baf", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "9b782e6f1a9da507abcf80828c0faca952c10c22a3935136716466394791d7f1", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "b38162dfeecf21a940f8faef1d6a1d77b2f9184fa0d5a12d83ebf24c7f3e988c", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "881bb3592f394e6457fd07a9fa337a040542a3fad1e29ae9e4e41d309e34cff9", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "0d62d6b67ff6290214eaa8a69911a66cc2fdeb40783432af58acc040112a6e42", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "31826cd66d484b7cfc36b416b9a61165be13379e7673f836cc8bf383f4c54db7", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "f995cfed869706917b6596e9205f2694d6e3c6c054584724fe10ba7a23c5af33", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "7cb8022e9ba1f1bbf02e8535627be0a21cdc65a2c45bccb7f6ca595e01f58e37", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "dfa8bcd9f62752c5b1c958c63bbe0324d5710c796145c72f8b704cb1e417128e", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "e0f634d8020f4ba2581895e3dfbc67e7f46b4c692fe411c920aa92bb01d385e4", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "90eadb63170026c0dc10a16c21383a59372d2554479f41aaccbf9bab1c45f42e", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0c8157212520a478863295ec44cbc8b1d153da0e290c26052a10a8bc61db4ee4", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "2cbce43791b4da480d5fa7e306cc2448bc25c1271bf45c8ca9ac01a0e19f5217", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "e0f634d8020f4ba2581895e3dfbc67e7f46b4c692fe411c920aa92bb01d385e4", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "e0f634d8020f4ba2581895e3dfbc67e7f46b4c692fe411c920aa92bb01d385e4", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "e0f634d8020f4ba2581895e3dfbc67e7f46b4c692fe411c920aa92bb01d385e4", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5b8f6c2ce2158e5918e7b1688746ca9b550a17c8e10f725aad20f80ce2cf0ca5", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "3b13aca88171ba364a39c6ee3202aa5da111a3d719dd50cb46e7d9a7590c3e71", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "dd25a2fa4750fe6e7784ac82c195098389d23bb64fee5c662e190d77ab9c2f57", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "71dedc849f727a57379dd34aeb6363193a799762498c5d9867b6d4ce2088bfb4", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "8138e99f7d1fc2de66c8ac7d751cf43e22735a80e0c7a9e3e1308387056cae94", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ad22f57e971fc0e6011a767b842158deab0c37c08647729a2c30dcd7ee35b268", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "981ce01d36a9dd2955b229a5bf0f69d8a144b4352bb86df7d27100ee579f4415", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "cf2321bf64244bed441eb2a0dc3c4a595dfed098566a84ecfebea276544d2308", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "0eb7b1d4a0de2da58eb11b1ff6f3b6d6f3074bc7448813e3b91c5fdb0224409b", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "f9c7e3db9a1c5163b002538096d163926503bee9677fa592480c6ecc102efbcb", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "3052d6165d817fe984164936577c02285f63f1aad4c3652eae1088c54c90c6cf", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "082515737c5291bf9b686968d4e470b5b1d53afd6c7dfe50581a247dfd94fd39", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "17901a7ca1d4caa1f2fd1f28f7f051d04d8eb45960d1f98343f823ef03d23457", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "204a025738823094467e56ba79fb7e02045b7a74d4cdf0f915d34ea5c8334312", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "18f70233d20f87ca774587d38f172538e2fb04cc4be0214f949cbdae35b7963d", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "658ed49ccf3b4a920ef68101bb77bede94042a3bfe210120795610af44395ddb", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9f59c08e848e45d339d4ee612a84bcad14dc9a28792382b783f3c9ac5c9e6b11", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "0833fbd07a8adb9f7086bf6fda5951b7ca71947a2ee411a8206c6838a521b82c", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "3052d6165d817fe984164936577c02285f63f1aad4c3652eae1088c54c90c6cf", +"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "46945c80b5ec4cdedf784efb0080ea3152e031e32f3337d9778afa0f4d1163ee", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "1f411381dafc7293248d1e5e553c3b976714f1215564ed11e131c6c524d47073", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "748fa424528aa8a557cfc2fe84802c662f4535a8eededf96bf582b5d64b3c10a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "261c6bf47705fe1b03d5765bf30a487feb7cdf634918fb4658fc1522262130d5", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "748fa424528aa8a557cfc2fe84802c662f4535a8eededf96bf582b5d64b3c10a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "93cf03d9c695c032e0313eb79905de59bb21405796772e00b30bc6921cf87252", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "93cf03d9c695c032e0313eb79905de59bb21405796772e00b30bc6921cf87252", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "da5697bda5a2acad167532b2c5a091040ae0adf84f520697099051a95c47554c", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "fcc228b38f970d8ab71f7e3068d1ac9d776b161a4eab912cdb62eef84963fe2d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "2ffa6c039ff02a65bf449a9e64c442f493d5759ca24450d2bd2cefa5d999da4f", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "52e5b5f689421ccbcda3699b9298d2cccc6032d6de68e7a7a15f5a8b3ea92cd7", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "1de14523158c5610083dab333aec5a44b1cc400e3636450cf4e754141747ff53", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d35e7ba172f839ce6fb0977ae9f3a48628d4ebd2b6ae96988148bd6cefcb3fd5", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "2700cb3538f9a4047e8b8b02adeff2a491f66263da134ebe9da6ffb630eb139a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "d31788404bedf9df47d636d354513ee0b1dc3776bc9f7a463acfe4224be9d835", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "13bbf171914a70685a288886a856a7d79ddbd34d1391470cde4e0f7d5731594e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "8642812ee6effe02069cc54a156dbe2e5ad2998ba2e20ca916adb8ac814f0937", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "13bbf171914a70685a288886a856a7d79ddbd34d1391470cde4e0f7d5731594e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "8dbe8b6c0cd2e589ce8aa95b6df7a844c19b616f44d54f9de2d791d162d91b2c", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "8dbe8b6c0cd2e589ce8aa95b6df7a844c19b616f44d54f9de2d791d162d91b2c", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "becbec8f616784d3c894d10b6aa3ffb586409926545ca9a57440cca7aeba9193", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "71ed0d7c882697e306dc4e6e1649f5099e4dd167cebcbc8ec3463b748aff7539", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "74e9690de21e61371ac6b1b86a1c4e126c3c469e128b3b7559926fc6861c70e6", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "52e5b5f689421ccbcda3699b9298d2cccc6032d6de68e7a7a15f5a8b3ea92cd7", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9cb31596b1eb447ed8bd33b409db1ed4592f816c12d8563e67bdda3483d3a313", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "25570d0b70a1a9314811cc58832eeb40a7da276db184f27c3d67056beb60aae8", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "6ab873739bbe7ff6d2527ec6898598ebd5714e4ae3669ed88efd0a8f532a4615", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "1de14523158c5610083dab333aec5a44b1cc400e3636450cf4e754141747ff53", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "da5697bda5a2acad167532b2c5a091040ae0adf84f520697099051a95c47554c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "7555098c81e0b64be812dab5dc5447dcc01d94c94eebb73bfcd9f30e64712367", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "2ffa6c039ff02a65bf449a9e64c442f493d5759ca24450d2bd2cefa5d999da4f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "c0873dcb51246c26306cadb3a0db8d6451f413c81b0b0b475e9e41d7db79450d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "6841150c710e64435bfd250e15a79a675aba4f0ee63987db72fd9e797bc068f4", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "1de14523158c5610083dab333aec5a44b1cc400e3636450cf4e754141747ff53", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9cb31596b1eb447ed8bd33b409db1ed4592f816c12d8563e67bdda3483d3a313", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "becbec8f616784d3c894d10b6aa3ffb586409926545ca9a57440cca7aeba9193", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "c491acb9cf3341b71cfb255c93bc1916541aefd2992082f42c840a4e4e778e34", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "74e9690de21e61371ac6b1b86a1c4e126c3c469e128b3b7559926fc6861c70e6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c047b1f6eb18998254e9fba80e65f80c1a2df936564ee4348fb68b55db121212", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "909043bb5f11bf396579afdeefd21f3b81228d84d099687808f9b59a1a608eec", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9cb31596b1eb447ed8bd33b409db1ed4592f816c12d8563e67bdda3483d3a313", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a30c7203be121cb341b6537b2d75e94fb727ed59b2125e0b2d48163c0bee0857", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a30c7203be121cb341b6537b2d75e94fb727ed59b2125e0b2d48163c0bee0857", +"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "f46bb24682f333d4fedc656de3b001972910e14960d7965929e0a48012efc57d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "4422dd6fa7e338386320d987e3cb775704b3b226079865e5e190612fe87d6bc8", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "01407463ed6e613833ca0260576762ad6e513ecf5ddde2caab5bfe72c22a7903", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "01407463ed6e613833ca0260576762ad6e513ecf5ddde2caab5bfe72c22a7903", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "6f79a28a0c40756b53059123bbc4062c8cd47bc4cc6f615febab821ebf86d381", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "6f79a28a0c40756b53059123bbc4062c8cd47bc4cc6f615febab821ebf86d381", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "6133e06c35f029aeb34edca641597f9bf7cdf2962b9eb2ac249e016bccb83076", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "6133e06c35f029aeb34edca641597f9bf7cdf2962b9eb2ac249e016bccb83076", +"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "c7c9fddc585e98ef7709f7d81b2f94cbef6667345420b0b0bb91c1233dea3815", +"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "c7c9fddc585e98ef7709f7d81b2f94cbef6667345420b0b0bb91c1233dea3815", +"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "427ad4e025352b4adeb1163c21197cd0a15c30b59326ccf5c201f691e09d5c0d", +"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "a650c4fa5188abe05b05614e20d9189de5aa779d3f244053e23b1c236a5bc5fd", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "c8ee4e79a08bb9bc94c06d82203762f6b627bbb250c9d979e6f5f82eba47a2f8", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "4faa8e664904abf15eaf6746f5a95d55fcc910d5b8b5af3a70749666248aaf67", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "db4c127a12e464279cf01f5e0eed16981c8456d9904c618b3a6bdd45544638e1", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "667ab92058327c069b433602c3922708e9c99a23319945347b4c07dd65054b90", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "1f8297ab102a070d8087af9862c6f24a8979faaef48dfbf824496fe6c3ef649f", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8f3b73f3ca9563b1575ef4e2f438778416893d0f4c667147b5b92f384e1892a9", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "97f3a7fc95338c907b2654e4b51d607fe9bce3057c785596c2d4b0419378008a", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "0e8abee4e5ed154f11cf70f930fceefcb5764a69a90e55e618d255f68d7400c1", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "34247419012a7e3d033115032b1726e948f632c87f979d7b6caf54a691b1578b", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "839b5da79f5b79170266c170bff3954a7b37be985705acc910db67ee2d7c1386", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "60a856601c91445ecf51a74de046ebe62dbe6224d3c174473fdd4c1f178b49df", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "c1926870ed3923159eeabc896c115a1dfcd8b52d4999d9e707c7181f4196a3ab", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "8cb02fbc8075d2f9017552b43811bbefb90762dc3b800f8c28c619d4d0c2c7a2", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "10c62f53d494857f3f693d2a2180c86b129564bace4b647d67b9b45f34fb74ad", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "064490e02f25df9c8c69f5f6ee7c3bba194b5de2eb35b5f56aecfd35742654e2", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", +"T3T1_es_misc-test_msg_signidentity.py::test_sign": "2ecbcf7f7d499654641216bacc3200254c14148f0d136394757c5015bc6dbd96", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "47352192a58b70bf9dc72cd5c58267f7f384374cf6af3e10fb77c9992a6e6ce4", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "68be12df9207aec4f4c71b99af0ce1a7db4111c99611563c1186c41befc71648", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f163ea950065a4e7e2c76485ca1d6374a796b136c0677099c880bad620737fad", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "a8259e9d7c3c2661b9485af396f4179753dbeb1cdee5f40179a2970353046b82", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "9598c40fc83a526baaa92352526eda7e86ecbafc87ef50c029b72cdd35753e02", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "41667a74ee9e21c199b201e6e9d200e3e379d4cd7f900ba854d777f7b722921d", +"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "50f4aedb7666bec6625966286d5ba22439e6a10a83332548023cea32cf336fe6", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0f3b5114c7a0fce1d55c79ee7f710efc3e48fb6a82731428223077268d1e63d5", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8f5895d5a836867d6544962fe5ca7b44302bf30a790ff1c54737f229690f17b6", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "e401a9be49f234140dcc67846295122706d7d982b3e2ec790484bbefbfe3d4c5", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "349ceb3e2e52246f69b8a175d6dacc2e9747eb0c1a7cc6a3d598008d179fbe81", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a6322f39bc2481cfcd5a7a68fe3b5ea93c7b214bac77e16426b9a1d2633450b6", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "a4ddd68e5daf669e64a9d8233f105d9857c5625e4a3775d1c1f422e652a8e2bb", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "22f497b02c5bc77af38685328994a1c049a3e4168a4bc3e62ed95fed008b6340", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "33ff11abab8489028e2a6b3dbd9b596ef26dc749a121ff430dd4eaad6db02552", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4dc5e4d3e45e8f6afef8889219891e0180c2ea52d7ddc10c3f61cae07a6cdb64", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "503abd29919f0da5c33e73a5519c3fa858f32ba9fc7e661e82546b2e60ca6793", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "8b10d51d5a34344a5e8bd20fd8c8241af2b5c804e5d40a969c1a3a9b14e11fc0", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0fed520fe9685e09c9ecbce893ee0bac5fa6df156566e6e7c154a4b7b43c864a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "0233c3da99485f45e1cad1bb7be6a529d27c28a18ff07abe60a0f0678dc10924", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "96b3c69a6e88a0cea4253b67d408412e312d4fa093c2580b688c6551e9baa9f3", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ddec9866dbac95fed85b3d7ce5928419519d1c15bdfb9eddc400fbefa7107136", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "a4ddd68e5daf669e64a9d8233f105d9857c5625e4a3775d1c1f422e652a8e2bb", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "664fe460fa84b9a51a5b231529f9b61d93075fed4dbd514053202484fb663827", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "aa9462e7d4b8aec6db1e5fde2fa58bf96848c39e4a7f58f3235bc11c4bb20a07", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "5194f5aaf4add398801f9bb90f343f26eb8b6061280360f3bbc4e7ceff9676a1", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "8fb2201e1ee04c73a26844c9233ebb76397c67ff2cb0afb1a1b987b32d22d2db", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "35db17d3ae543e1bd071642fbe38161bfa5be112711d3d7b63281bafa8730136", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "9d681e81787f668bef6628c65dd91b128748ef1baf5ba760e233aa24fa5be68e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a1f97cd45c6a00482cdef677736585c44bd58deec78b8c45f099714bd2af73ee", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "47ddcb54cabebd7a44644cb658d03d5dcca1bada21a329f746b9210d8aa4a3ed", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e1fb71a8ce102f3dfd57e2fd89ed8256fed5f607861650a8aaef6c760f591afe", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "1ad8512ee2c478f569ad51f554e23dfcf88da96a93599bc5e83ae4580aacc0e6", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "cc27fdd2ba7adb34b525e4c89cab53dd2bda8c35f8105ec28989674ee83de058", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e67fd97a9436439c72b32b737ed0ef0556d947e3fdca905d6eb69b4aad5273b5", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "391c5680d1c40df99e2feb1300d32f2d64d0130bdca6f7b388eb81ca53cd0d7e", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "032120f2368ad27b8755977c5819e5294af4f5cd0817d1601124233e52aebe2a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f5d1f6a5bc3a13d0433fc17620dd6e675e3b08bf1817131c296fd060f9d72872", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "076e762dbfc86ff7d9e4ff8a324b5aa1711a42362f008e80c898a747bca090a8", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f7780b5d2ff07ca51240ca2632254228c6e96feccc8f21026e1550d93f96331b", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2073e73996a9a88ab89e09fef781bf45eb3277328e19933fb4f7c75229feabd7", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fe3323da45963fc02a9fdde07414a2eb2a66627d5fd985fb14b1772d17eba6ee", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ebca7557acbd0ba7bf37e6c5edda2b88084be86976307910b39423da0e7b4310", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6e80eea9a17f15496b9b8664aabded358a0229647d0a49c8fe43082c17200933", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "33020a77ea1a3e35e3e569674bd591b32d71cd440d0a635ac61d45e7a4c16056", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "30d8f9b1a28117d23c2fa70e7503774a1fe0fc19c9f6c0234e55bab677d15e33", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "0f37fd27a16c19b8bea8b34b6e07554a756d5b47796a4f46a3777107066aea8f", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "874763ece4916a39d8f433ad9b2a95b7d5594545493283928ba60bf8a22bec83", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "243c238ac936e568c30306cffcfdc227f0f825160c4abf13a7da80dcfeea3b89", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8ef4eb1edc2a97857a2c9509c9ebc2fc284789f65dccde07ad011dba458f25a5", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "db3432ff965fe72a9c5496d2e95b8d89c0a5b4fc4a6abe5e4bc75e2b97fac293", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5fbeab1f30bca03af9cbdded83d7812e414fd6eb14020468e52393548102f773", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f31755f5dab8897a68f7f403068f40581e72158e39cad9176b27f179d2ef6c7f", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e783ae745ea96c5c80b7ceab49e8a9298dbaebb8252fd48e9383c13b086728aa", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6179cf1ea851c4235578e9c82d844df6ddc26dbe0553df10ebcab5d682492c67", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "4270fe2f9f71b0ad96e49eb1ee44bd5ff329ad96af2557cdd0012bc100e15a6b", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "bd43644617c215931e66707945ffa832efa7db7fcaa9adae27b5eee727cafa2b", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "86219267b59de9db7e5fec496ee68728c777e8f11139ba125301d1a9d44e9a47", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "627be2526ffde1d56e07431ee5b86ff24f628348b3faead6c8c4c9cdf7d2de8f", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "8c99fb15034c771c0620163b29985d9a6b26e881ca150c7845bedcc0ad61e54d", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "96258f9ab3f76964a7064daa433582ac0af01eefbfe93b8fa9dbbdde7419e2bd", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "1c8edb119aa4a562025494c29bd5ba5d0fbf158dd2025545db6fa426942b47bc", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "9f42baf4e4dbd54619fa218592fb732c80f04b759904893d1adb67a7db851756", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "59c9b973bcd69ebd4e2e46fae739b775d7cb362dd88762be0931d2dafcc1b410", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "1c8edb119aa4a562025494c29bd5ba5d0fbf158dd2025545db6fa426942b47bc", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "9f42baf4e4dbd54619fa218592fb732c80f04b759904893d1adb67a7db851756", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "59c9b973bcd69ebd4e2e46fae739b775d7cb362dd88762be0931d2dafcc1b410", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "33b46b74a567df77733e54c3b5b799a5938528c021a91c20f7de472e38209a82", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "8e8c83ab3ab483ecfe4b8083a5079ced0f544007c789f879146163c1830f29bd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "55e7509316aa88b9d939132e4624dea97311a2caf6ea324dd24f1070fb2cd5ed", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "44d7621f87343f1bf48c878f0031341d9878b6c8251b34ec7d5e9dfc21e7a8d3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "bf16d4ca260e159479cfe2a5f25de7fbfd2f73a260227142f5de6bc9317550b6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "daca988345aaa8cf8cd168b5b51a10031105567fc89d939f5132b363a0852527", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "6d5f5b2b68ceca6c1a3c55b9775d451ee09d2989e75eb5fd3c0c9cfb80056c8d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0c98c99db9e715f6608242d9fca78dd2ab0fa9a91e48fcc861a11d447cf57e3e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e0701498ec210fcef93b621f27eabaae2947a5bab34bd4c64b4292e357f9027d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8079b893dbe1c2c5e9cc058f7d44cdd8bebd474afd20d7c90b8a4b259701e91d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "07c84b2ed0e09232933cb7e6303fd59590014186a8d88c062f55394426251aad", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "a01a9e659d488fa03865542719b855afd64d27fd7f96147ec2f4ee3b4e360f92", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "9d8b719e9dffd352919bef09c625b371b88f5798d71fa9246783ca1f11ee0503", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "ed9e211acf9cc0bbbd2dbf7ab1a1db9364532b92e43ac866d18bd22d7a9ee140", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "e686152aad5707481ce67935a4ded0758eb8abe62d59674846284e05ef99c345", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "d966d08342d31369c1ec445136c99a7cde75d15b130a584e1ba899e11b47bcc9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "9030422ab7a5187d5f8e475fb981e8ff1ffe16083f2d6337c71e6f002445356b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "82bc9584be3b89d552c6a4018c584d89599df3ad4a014e86e2275fd2c4837e2f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "543632561902ea295672d1092614c2309090e7da50206cd0cb77a4a92d9575ab", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "d6e461646af46089db79c394c2cd89b83404c3c450cb7a24c9ef7b07e8d4692c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "d02556dbc72f713fd226d7885b505006d33f339c27246f2210a149096d25e361", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "d02556dbc72f713fd226d7885b505006d33f339c27246f2210a149096d25e361", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "0440c77bf3fab788e7b56ba5a09591f385382dc9332d18f8ee7f2b003c8e5755", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "61b9619e40195cba16af6df95e1a31902dce904ddddc6b4bc20ec1a912fee8b3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "766ee8129e5d17aed0baa8061b69d78bf30c3be4814142e7c5d4cf5fcd4d4956", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "ab39f2ff5b276abd134dcbfae0cebd3552de880ed1fe3a889186ffa551d825da", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b94ada264c3267584d89108791c2cee5139c3549849967d29ad42fff1f967b97", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "59807afceab08751a795a8273d6679b4bc30bc6f288154d3aea674033c7cdfe3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "45dc3e052ded3659de69abf1a04b0e802be8afd1c9c7bd8624924d1ad454d44c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c7141357824b5e20803196f7b84dcc1f92493e723a942bfae0ff74f1b38e757d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "76e72ea41ae05f0c43da0cd91818d1ea3a0251e806c1a755ffade77c2f41ad9b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "311d0ecbfd5b38a4f42862088893e986a8ec87d10ac7c4f9cbca7ef4a312b1e2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "757fd24b4a9f252c20be134828df5c701456773e02022cd10168675ee9907eca", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "9f4dfc44830e5bf64ae5880e693ed8373840826e23443d7bd70ae460c5356d98", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "4b80d05919cbcd8f195fc9deb86564b2a84bd37c3ffdb2c5a6d49ad11c87bfbd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "144762fc5730ee3de00669a4f097e54698f916d2fb6a3b3d9c4dde08f5b59db4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "936148635ae407a85a06110e6290796e2b36ab8e742b5430c615f4d36ff184d6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "f5cd04587800af25deae750c101a321749989981a5a07d29841966e2eec63564", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "627362d5f018520f8162d7ca4d420abb0fee0ac396976eafe71746f4c24903b4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "8723163a2fb30b7e0b55770d0e4fdaf3f324f54b911daa8e391969cbcfd7d724", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "fc8e28922258233144ae629eff422c0acd743a1b6d5da400912088edb98c64b9", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "dcdd9a42ad218198c78a1fb025d12f719a909896bc0e3a1a910af61b38eb48a6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "096b5e541e12fde617948b4c1868dbbb8fed105d0befd4c4337d20da6d492600", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "0b3fc2d1232234c22ccc7841b77d977f134e53c97f380229507ff250d5e60d85", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "2753649d7843d681ccf0ba2fac98b7d374ef1134572847e10427a10e42c4e904", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "28f0978cb31cfa777ba86dfcd76f800b888f78cd1d670ebfb476810c7069f28d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "a6dbf5bdd095f7ec91752edb39485d692607fadb955875f72cee360570941757", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "994b72b5353ef6313c172da7bda68a804a566e3ff9cf67a856a91062f5edc4af", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "4cb5b1341cbcdc284ad81fc92b7ed3bf0c50b09b09d75c603413b0e157bffecf", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "49036991c4807af21fc3957d1d3faebf1e8880e8a381b529f6577add8d06f91f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "51e0214e0f45a5f587e769eb6a85aafc273d7d2a55d7b29e11ea744d72c73f5b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "0bac88b0fc423f5aef06cd690ca47f7e55756ba5268a8d23007daf91b2dfb823", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "b53801449c5661b050f8c2245673afa736bab9d68375d3e625065c89a3b13735", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "a2802b4d8beaec465846f03a04b9d034b40ca96fc6f0157a18caff6582f03ef2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "5df8f2a78beaa1e89c2321fa3bd14dabff46bdbb040b411dc9d0c45facaacebd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "5fb6e1e1035c8cb45416e6c816994c21f5221c3d9123e5e9bd56e28e34573bf2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "38538f0695207ee5a78a6183220032d3a2345eda0edd39b3af80c6f7c3abf110", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "ddf42eeff57eea8f4989a858095c5bf7ce27c9e9bb6095979ca036d231c371fb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "93756462042c2a470a780827c82a7164f256af2c89ab303308d89c6f14c3d7de", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "766ee8129e5d17aed0baa8061b69d78bf30c3be4814142e7c5d4cf5fcd4d4956", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "cd02f41c7c16ef5168328d202a1bb672542caac597a80fbdf3d4b14b71454326", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "86d5d98d275f5a673998915a2f03e9ceb6430d8d142cb2e69a7f0915247b2814", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8280f2329689a89150fc9f3698b39f1b0deed6c347cf343a9497eea45f234321", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "31e0dd3a7a0cb6497df98149741a790f636a3ce04cf0a2174c42fef3a43f50c0", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "abe68ab957995c75c07d909cdbf7f05fba2e1713e03146f1f130b2ffad22e132", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "6bf91dd222723af3e96fc232bd23d5d3942c4d9bfa1bdc0097a3c3063ec4c750", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d8b47c647c834a41396b247a75a45ac73c523ec8d5b6ab56313c19ec59ab19d7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "eadd39481adc6e9a3adaf7d93b81ba43093652b9d9b3f947edcb8f8b4750d7a4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "70e5d647ed4fb2a07f999be3cdeaf33f204413d0b5fd0a0d0e61e91d3e1807b4", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f6b257d40f95a58e44e4b7756636e01d1bdc7bd05adb0853fef0f63e47c326d9", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c39b1ccd84afb45ffc09edf56f9751d242e409b20344822a52f396437f08a4d2", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "892df25de4b539ebb7afd446068422db06a6524efcb7315fcb69e2428920821a", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "2829110545a476989b031904490d58ca2a7fc133f69c956747a08c0b98426469", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9e7f3672340457759383881152654d4c0ad57b2c9555dfc89dcc2019149c1918", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "3c52e8226ab5e5614a4e29bce18450d8312f9197304c53cc7b39dded2662e5ac", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "6aa56382c9150e1af2467705ad4dd07355d1190f3e39e0c4cca3007c7764e386", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "607e002a73f4e71ac22ef667daa1aa850767a1d3703770c6d7d81f3011983b75", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "26fbca829e93bf6e6a0ed13a293da00436db4708c84c9b5f06c5ac638ecd4128", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "18361aaefee6b4d4271229617789f8dc0bdbc104cbad830054cbad947f404634", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "168c84ee550428d1fedd5244a928a770754041da124c33ad1beb246715a17126", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3108764f86a8c07ef6f8a1b004fac30243bb31ba981fb76efebe90cb0cca65da", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9d51ca46d4c434d36364e0172c14a34afd3f8298c8f140eab80726ebdcb2a895", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "d9a49a3fac2d620999c27b286f412be438dfcb4b82d88773984b6f8a75d88008", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "57e06971ddbf09d467983ee723fc9e33789f8a7049830d3dce4b81228dba595c", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "48a5583bc343d747d15dbda25ada8990a23ebd180fb0659461f319307a8271a9", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "0e3cb1d9de8ac6037d87a4d793d57bf058d7f0aae25656d504c5860917685e99", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "1e11f5d5116e77316ae8ae028d5e15e4551cf961582483cc3ba3a1d1c8afb6ce", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c2b673780911a0d25eae60bb5f02d282cb6dafa010989b479dd6b3bf7705b513", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "07942db55d291dad8f624e0f6147a35246bc0f6fe0d83a1981c866893de9bb0e", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ddb432626514764becafe07e34cf728e0113a300b83e422b0491312b6b3e2bf4", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "e4c858b51b2fdbe7d9906f0f636b18bd313790c6bc3f550963dba06d79847454", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "60a684ed3261188efe00bb872ab231df9899a7e44ad43e6dfbaf48c8a7b33bdf", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "239919f2ba5222917193984f0cf7f5e149cc41e12a78a126119b5a26fab9df85", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d25ce75066efc49f1598ee5fbf476108dc34a53e3ee43ccf4bc3a78cb9147309", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "f561fabd41347fad0ebac194f5bf3e15450ebafad99aada3c99798f323176507", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "48249962f039682b75b4d2340a21dc84f9189db67a35f5d65b01c557fdcbe342", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0025e84016208ca9770ee162a70981398ea452d01da619e0e795638c6e5da888", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "ab40064606b2c74d4c259165e5a1a59a3eaed702cea8c26cc67b18f0b4abf3ca", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6502733c10356915eac326b84b51ac4f3b927f7c36930c45a235311c59e356ec", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "8977ec74a9e726353e95dfa5252201e1a77d0ac8ef6361e75b4589d47b50bb5a", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "98943fba22e4bcf3af6130e6e37c692fc5f6a625c1500d675528b0ad20a54632", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "665c3374dd057a0892b6585a49c79b336238463934aa7b1981ae2ba6c3802129", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "5421c2842ddcd649f50276cb9d8b63bb3a8aa6881d9a5c3a6f2c24e5e1101a13", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e6872fd75383c04e3c5b7e92ac65ab48065c5dd5aed403485ac55ef8163ec41f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "88351f212f62a4ffa6cf0f2778f04bb604a5f42bd7489f61fd6bddf20dd31669", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e25c97ea8e3b299dc0b00e4ca22f655ebb032ac6a0c8669d89644685644e8bed", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "ad9a47bc0f75b1061f768e9a8958d705d00f3d84f1447b676d12614aa691acb9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "595c30354e6265e490e2b38461049825d3718946898e9dc3d2f59c7c9d236cd4", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "7f81b4c88d27a80016214f52292ac38ceab8d1927606420a60710030590522f2", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4a035c63647a0e05ab4f57f5e787a37dc8a418354e644bfdb420187ef6b71a51", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "89a2efa3f8700159b356039ffda507c0f4a032abdcf0c3fc2e8e34eb42dd582f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "b2d9b4820e0f71e911e1447fe061792168400b38b5db170cebe5465ef209a3af", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "202d7760bd67b0653d17681a4bbf0d9ee3261cdd5eccb6bf832ad2f9d5090af5", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4291d1c159d46d236af4e82bc620d61794e47531943b82ec314b42dd1fbac694", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "c908a0cab738b1ff5a0925091b90ba474a0f34aaedc9348b045368119f64a1eb", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c5353bb846bb80357eeaf5dac3f40672e5a8680c5901cb65cbc1a48e9be4b721", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "9a146d9887e79c86f73e227de39225d0f2aad1c86881dbf9d8189263363c12d2", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "f7e813d8f6023d96bee2565d744d35a9a2eee1083ee66f4f314ddffe39e27bd3", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e25c97ea8e3b299dc0b00e4ca22f655ebb032ac6a0c8669d89644685644e8bed", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "9aa4bf4f9c2e965fd580acd1278088930d869a798aacfe6c4e94c4835a7cba8c", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "6e83c7914f8f180056072f915ee477df13a26683eb79e8bca743ecdb3a7ffe40", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "97f97e6575bcb79ba020e7b2547750b59810c53073d7758c80de765415bf3d9a", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "69f08fb67d8ff4d7ec5dac700f3faf83a130a29a1778ca2b98ecc9dc371c9443", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "35ce120fa6b9d2fa52febb86b718c60d2ce0b9d554c9f69e3cd509b225a9725a", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2816815fb7204b991943f3db2ae56c0f8c4199ecaf10c5f997702f6e5914de75", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "cb5316337d8c4407d65a2a409e9ed906ef43071995a5572e129eb62b12b4bc5a", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "75991992304e022848bc603fb8398c6b236b24a6590b020719b3fb9691a94efe", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "8863816bb2c06e8cf6e311bf8c08a4279d3e8c0f806e5ac4cb6b6ae7cebb99f7", +"T3T1_es_test_autolock.py::test_autolock_default_value": "fa4bbc332490da856c4ec27cbab2179d695532e94601361879225f4b714c1d02", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "6900e532cd7ca2a89c8b3c5345a841e7f03f90ddccc73fcefa08ba22fa33f151", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "6900e532cd7ca2a89c8b3c5345a841e7f03f90ddccc73fcefa08ba22fa33f151", +"T3T1_es_test_basic.py::test_capabilities": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_basic.py::test_device_id_different": "4bdf9dc69c7051a283b952d537e94fd2581914843cdc3e2d322a269d03274f12", +"T3T1_es_test_basic.py::test_device_id_same": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_basic.py::test_features": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_basic.py::test_ping": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_busy_state.py::test_busy_expiry": "a440d4eec0125da0443133038f79982c342cb30190e60678123d0702aa00a8bf", +"T3T1_es_test_busy_state.py::test_busy_state": "43617618b5487dbba0615e498e68f7416c4872c64b4fdbbd3e292a0da085134d", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "4c7c061e51d6618b072b8774f53098fd11c33f7202eb23012b1f90b4cf8649d0", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "4c7c061e51d6618b072b8774f53098fd11c33f7202eb23012b1f90b4cf8649d0", +"T3T1_es_test_cancel.py::test_cancel_on_paginated": "161490453244e136023de8b1b91a3fa8eebacd9d57dcd60588cfddaf393e3be8", +"T3T1_es_test_debuglink.py::test_softlock_instability": "c801ab5876a2aefa973e9eb680b6a53433087d0a8718e5b8cbfd26172b0fdb2b", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "81e0a15715d2b5e2a5076154740ead6dfc642da8dc17840de480296d8027ae52", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_language.py::test_error_invalid_data_hash": "81673a629aa8073f27daf5b64fa2b459234adcac4095f47e9452c2256ecc1eaf", +"T3T1_es_test_language.py::test_error_invalid_data_length": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", +"T3T1_es_test_language.py::test_error_invalid_header_magic": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", +"T3T1_es_test_language.py::test_error_invalid_signature": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", +"T3T1_es_test_language.py::test_error_too_long": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", +"T3T1_es_test_language.py::test_error_version_mismatch": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", +"T3T1_es_test_language.py::test_full_language_change[cs]": "791cd42bd8366cb23d976bbceeda38188dbc6737cd62ca8c006bfae30a7a56f2", +"T3T1_es_test_language.py::test_full_language_change[de]": "797ffee654c9054eb27490033ab0ed00bf83373ad3e71bfea0d5c904839b9364", +"T3T1_es_test_language.py::test_full_language_change[en]": "d89b0c0c2556011000da2a092e4c6abbe06a508c3e482b07682fc2c6c876897f", +"T3T1_es_test_language.py::test_full_language_change[es]": "9f4594e287ad74fc5ba2fb95f7d40d32f6409f839e3cf80037ac80f1d2ebfa95", +"T3T1_es_test_language.py::test_full_language_change[fr]": "84fbe2ef581bae47828adee2ce2a6c8862febb4b2eadabe6c573505aeb07e644", +"T3T1_es_test_language.py::test_header_trailing_data": "9e76fdf169724989d0c77128b96b941022ae86e1856db5d49ade9cc1ee49a987", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "bfd62066fbc000a3f03e15c03569716f91b0ba200bbb7ea64b1e571434cb6b16", +"T3T1_es_test_language.py::test_reject_update": "1ac93de16da2ca4aaf4d60ecfb978e7074699c7ea6e9ecc2e9f8c62a27b0bb93", +"T3T1_es_test_language.py::test_silent_first_install[False-False]": "9dc38e114e8159a73515824370937c4dd5fb3503aa8420e88eec8690da175b4e", +"T3T1_es_test_language.py::test_silent_first_install[None-False]": "9dc38e114e8159a73515824370937c4dd5fb3503aa8420e88eec8690da175b4e", +"T3T1_es_test_language.py::test_silent_first_install[True-True]": "a860e93eb4f51eadfc5c4315643f0588e20a011d1e01aa9370cd7f72d4818918", +"T3T1_es_test_language.py::test_switch_from_english[None]": "6daa25e9119a240f33f4d88f5b640591aed760688cd71ca0d45a74b312337337", +"T3T1_es_test_language.py::test_switch_from_english[True]": "6daa25e9119a240f33f4d88f5b640591aed760688cd71ca0d45a74b312337337", +"T3T1_es_test_language.py::test_switch_from_english_not_silent": "878a493e4d2343f62d63dc473059c2f013e16f8c0578da0698ccf9f1b02c6c99", +"T3T1_es_test_language.py::test_switch_language": "c9142ff4e4597ec3cdc4f4b7bee9195c24e7047a08e594154c689894e624a11c", +"T3T1_es_test_language.py::test_translations_renders_on_screen": "1ffd228090f0036d89f0925b1269d97ed3954c73cd76a2f1ea4b0c9f8f153b31", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "cd9488c31648e3b7cf259bbfab9f304c8db9beb51b331edd56cafbb830809251", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "d51ef6c31cd86dfd8b2bc88a1167030c989d56e5229dd0457c3b1533225df30b", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "f60f62e58cb6451b198e28485173a330806033e81deec51eaddfb4b8245b26a9", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3483d8d2b3292d85a6a2fa5c48af7a194bfb46eefe5ecc17de6df60adb4f77b3", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "daaf8fb3e9f77ed6ba1da6595211a730b6c386cc1d43009f80cb4f3246799d49", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "705dc2d0d3c8f60954c624fc65629349f669f0b0caf79700eceffdf0f2c5ac70", +"T3T1_es_test_msg_applysettings.py::test_label_too_long": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_msg_applysettings.py::test_safety_checks": "004fbd582bf315201cfd8c9992d631a438cc4d5e792c572a7ebf2e6fef8aaa96", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "e1d6c513f2e95e481b963b8fced7f8f224425b70337195f1aef0c5f3d0afa673", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a198e32feb2d70179dee702124c5041eaab70845ae1b5e29adffd1970c3575d1", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "21b6b0f341f17d40de0978324cd9c4f0149e897711e857d7d98cab8b071b9f1c", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "8000292580d2c52eb4813c36d17bd823c63866f1f01b35065a58f1870fd7cc22", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d553e455fbe83cde5ba20198aa2c08014d4fcaf4e334d8e87648ba89c004bf48", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "f30277f400fd3e0ee282235e2b83f80524531b2853a211c723d29c33ea94f3b6", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "2822e1cb5912319491d72c971165fdd5d8e893648b91a2c2144e29c258809d4e", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a5307973d9d6742a994599fb392d567daed24175a855239fef35c589e6b2eadc", +"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "ca9026e0100a30fa6babc257654bc2f4fac3900b410d411454fc389eb02fb7af", +"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "dad5b5fdce315f955db0d61207e6ac5d4282c3534d0142fa5ff1e7dc2436b24e", +"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ba347d59940e27d866fcf984300d1d6a2ec9f52b43240407dd4c629ccee66d50", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c756194b7b7ae391f4774e8e6caa99f3ae5a163d3369d103a3b198227628d07b", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a4f0b719e07ff85ee9a8a3e8489f9af64e50e497e8d098f7c5eff71f8fdb328b", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "31ae12a56672da2313fb1be8069f1da572f1678dfc838220ae5e4632ad207965", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "e741e5cf1a884d774bd1238c1629445208d4c27878dbd36b2d547a6bffe73a13", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "3d7c554a1b8b5dd82e62b19932904977680aee137fbe7df567007f3a32a31128", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "5c11c7e83c252fe22ef0fe9ae296929c17d8248e5cb65b4548ba38c2433b3c79", +"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "9a2a004c2eef6f0ec5e9af44c954f7a27b681889a1b952c57e8c60441f3c2e92", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "cb68c4fb0dd9355bcd2458a4cd05be0d4c46bffaa3652f3ff25ecf2bb1c97433", +"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "8d8b6b5b4aead4b9eb8453953254f2da974103a57d9b30ba60eb37d0625c663c", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "a0ab968dcf47e0e43764cd4f13bdbf6a0239b6c4cfd4c14dcedc93b01e5ebcb8", +"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "93a4da8c70820d944364f37ea1d5a43da6432f5269e5571ecc26b3d4c596d2cf", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "e84609a569767341946a840fa4d05bc95ede4a87fcf732d320eec2ca9b5511e8", +"T3T1_es_test_msg_ping.py::test_ping": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "7769c3bba31114c6ac64f2f354f67df0002aca072bd9cc18539ce074aab0225c", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "5872eb76db8a54ae7ae243eefddbac24ae9eb784f6b8a3bb787ac2739d5e4acf", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "6bf8fe73451c795e8176af7cee4243cc2a9ddd09741e719512477c68e79f0e3c", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "5cae915c555f49ef1b6f20b8e4db15979569ccae68dd2b327d39e3b2edb06d7b", +"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "4bdf9dc69c7051a283b952d537e94fd2581914843cdc3e2d322a269d03274f12", +"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3a241b796d831ba9f770162b496d1d485e40a9e5daec00cd6e226b82d565a081", +"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3a241b796d831ba9f770162b496d1d485e40a9e5daec00cd6e226b82d565a081", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", +"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", +"T3T1_es_test_pin.py::test_correct_pin": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "6ad6121606485e577c258b0038135504ff1ccb6e6fd79826f208f563bca60f9a", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "f0a06572dce5c11290f40e9bdc5bd5fba94f4b4fd10c7455a12f279bf52ce1e3", +"T3T1_es_test_pin.py::test_no_protection": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_protection_levels.py::test_apply_settings": "92530482b20542e9c7570c45353cb252a07e9b641f3c83a85ec5e884ec239a68", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "1c8728532caac0ccd19ca5924ecb150c241ff8e4b33c0b01c67b412eb7eee8dc", +"T3T1_es_test_protection_levels.py::test_get_address": "d035b202da3ba08fe4e64c1f5e13617a9c78b2e5a5d84287314347b85d5ebb54", +"T3T1_es_test_protection_levels.py::test_get_entropy": "c166b83c0f045ea4e49e5181e821ede625055de925d6fe5d481ca1c2eebe9cc3", +"T3T1_es_test_protection_levels.py::test_get_public_key": "d035b202da3ba08fe4e64c1f5e13617a9c78b2e5a5d84287314347b85d5ebb54", +"T3T1_es_test_protection_levels.py::test_initialize": "57cbd9fa11cd3cb64b6a52e7be5469e186c4594af4146d6817062f98e671b567", +"T3T1_es_test_protection_levels.py::test_passphrase_cached": "e22fa6fdfce398b66813703fd67c868d62fdd3e569eb80d803c5096deb9afe50", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "1984b58b0afcac97a6df5af9a43034899c55aceb939e9babb56707307b47849c", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "90a63af679cdae7dd505b924535fd0e092fb064224f279f511ca38bc69712967", +"T3T1_es_test_protection_levels.py::test_ping": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", +"T3T1_es_test_protection_levels.py::test_sign_message": "1044bca3f6dd100e115964ce812bd80023629fbd5191e5cab835832d03be52a3", +"T3T1_es_test_protection_levels.py::test_signtx": "07bcf9f8c911371d1ca775508f002166e373ec22c01a2e50b5e3f1ed1484b9ed", +"T3T1_es_test_protection_levels.py::test_unlocked": "b5f7523c1963120655c5ddc7fda0853ad01d336a612f09f4b54ca7790a61f44a", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "97ce1e09ca7bf9b8b94a6d55a01b0a28575c9dc25e5aee70e442d23ad7c10d69", +"T3T1_es_test_protection_levels.py::test_wipe_device": "97610e6da5f399b060bd8216c74c3d1268d121d0f3ad8cfd530473fe7e431878", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "5f0adaf49a45ea5884902b48ea8673cee4f1a5873fa4a0f2cf51a89ff0dfc5a2", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "beda3cb78ef91ff834ba406541b6c0a620f78513af294c55a554a0733a8ea4f9", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "27385d8e2a9ea9dcabf74b3ccccdf394ce0784ceaa545616f526fe1d0f874e66", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f7a69cdef0bfec3a18dc234000784ccff096788062548aa971c840da687bc9a4", +"T3T1_es_test_sdcard.py::test_sd_format": "2d3eadebc53baf9e73850df77ebf264316667d92d977ffff807edac30a2ca4eb", +"T3T1_es_test_sdcard.py::test_sd_no_format": "fcd7ee499c336d76070703c8c60baa583a267efec1f77a2e92201ba630876640", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "37bb970f069e7957ebcbd2a1934e95a9e7049b5d6bcdb0fb094642da7668d588", +"T3T1_es_test_session.py::test_cannot_resume_ended_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_session.py::test_clear_session": "0fc01e194982756a98ec5319fd8173729b93f7eb65dd0128f02cc47b388a867b", +"T3T1_es_test_session.py::test_derive_cardano_empty_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_session.py::test_derive_cardano_running_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_session.py::test_end_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_session.py::test_end_session_only_current": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_session.py::test_session_recycling": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", +"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "0218aec792a4f892316e21db9bd7c37bbb1353338c36cb06207d273d0d53fd3d", +"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b00dccd96882a6f112b8f606fab96b88f14b1d0390299281177fe0d2d958aef3", +"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "e294e0ecf32c6a080da0280fe91e14407298081f2be0bcea57c880f1a99e1eba", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "f00e681887793c69adce8c947e7644a95b0603f575c1b3d24f59514f4e735963", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f68ff79bbee4bb85cfbb61004728dd28e7dd45cd31b47a03682188a0787ec892", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "b3e9cb5e9ca8722406ce1b10bcee9ad8f7cd78e2284dab57c870cd6abcbff29b", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "e22fa6fdfce398b66813703fd67c868d62fdd3e569eb80d803c5096deb9afe50", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "a146c44b8b62f486fb1c3a9bc8e9adf452f7bf2c4a6b808d4519935dc499b518", +"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8cd460826e05f6167e06c987489e7431f5f5e589f28a2b3f9ae6d950b293e44f", +"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "88dee002aa6602bd01b5f13ea460b214e57f9767b3978dbf397d2bea47e95a48", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2c1e5dfae10b09d2c78c7c43c6d1ec695f8b8b1a6baf83a2eaf12a052c264d83", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "eee38c9a354db41159e0d6dce384bdd30108de9c1ccd64e5aa8bf6c8398e6cc0", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "0b55ddad83a308345e96d4d042bc5d73a2e138d9677fe8ad893e82ef954afdbf", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "a36e45956dc8fb4d102f8a51fb59a52f09e5520d03b1bdc97f600c2f429074cf", +"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "4eed258c542949dee1eeaeefd6592fff3a5c6c73047f77114b4adbd5ea807657", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "b726ae44d83d2a7b010a9b49e5a99283d9eba07c35046119198fb451845abe6a", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "383071425f3be14b637c868c826351a0c39261eb15da37b19adea0d71c76e3dc", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "d68b46bcce692c28be68b352f4242484ce67f8b750ddfc47ad94bf7c9ec821bc", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "7e28fc145980f500115ed2f4e20928ea7538f5525248f3f81d021dd6f4907fe7", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "e5cbd2b0f675a39b63fc77ff4c45713dd5cee692dbdcbc6b0b1fcdd10eeb8d4f", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "cdc664e592629a5c256b839aeeddb5f456dddff21c8848c5deb969140ef2cdca", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "99b584638e74c1caff52454697bb33a831ba75c039d79e5aeca1e594b5b17a84", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "a928ce4fde2e4b68a9b7de8ecb78ac98fa213e8874cdca02d89449b6cf79536d", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "c1e516ab062487d069c4fd0848352ac90e60b7015fd472d1d9479f7854757b93", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "773bff34c92862b035f72d35fbbafb1bf574f629b989615aa1eafbdc00268843", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "98838a8fc5ca6610f02e9edb2b7b2ec0ffd479a8e60d72b1d7194bdca14e8948", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "c46bde278653724fa3ef748616db943f6d7613c2102cdb3a55f75acf2ca01f40", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "c58cf7f0fae7b405d38ad99bf8faa7ce3f1f8874626091effe0ca24223cebf82", +"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "cfda4afb0e615d0305723c8b8d2b3f3669241fb1011f147fb62e2c5c4b4b254f", +"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "09e3b3e4a8b7cae5eee61a68cf15d3166d2f94aa6b976550594344d32408ee24", +"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "5e5e27f2baad6a28d2663601ee132b99fb2ba6d82a29fc05dd0189907fc57d11", +"T3T1_es_zcash-test_sign_tx.py::test_one_two": "55fd0ad7af97a32ab6506196cba070c49b92dc3514a8863a2d2d53b6a44b9809", +"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", +"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "b4f0d5dc470b7a2bd4b58a4e15431d0d7e1a1ab2b3c3f639cf276b8886d9338b", +"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "09ad8de0b4e726d664de601c0b1b8286f89680742ddde370b4927da4bee3ef7e", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "e20bf59515477062a3f3864e6865011c5d8d38acab191694224dcc60faa4ad40", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "2af72bc5e13e2b4ea3f8fc2633cae9271b1127e5a88bd29beabf7dd81221e84a", +"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "c89558db34d987f5cc5c84dc3941f08d765dac9a77f536ceb054282a7de1de13", +"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "34bc2b28b0ae454ba44f6195ec3352704a29370a118d696bda6fbbd346db2c65", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "095d6e0e8310723e8fb4c9e2e63a2773fe5ec9f1e922d398d4510e1d0d10b789", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "dd3e2ef85fb7230339b80d4e10fc4ab4fb21e08bf4098402280ce3efefc7e049", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d0bee76c9aae1baa30667ca17f6b201c85da8057ff0241c4b9b14e18882eb8dd", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "7a9b88e209acf25b578fb455691ed7513e41e9a4117a0ab83ef1cd0687602780", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "45d284f633063255597cb39c9499eb4c798ad5b3e3817664929a5304f3cbeee8", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "9a9345c6f3028bdb2c41f1a3426cfb9d1c44b2ec83b1a6995242b33b6552897c", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "f25e50ab7cf4bb9ac55fb95d0b75bafc9f345dd52d86dbe73b3d2f69fb74de81", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "45d284f633063255597cb39c9499eb4c798ad5b3e3817664929a5304f3cbeee8", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "9a9345c6f3028bdb2c41f1a3426cfb9d1c44b2ec83b1a6995242b33b6552897c", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "f25e50ab7cf4bb9ac55fb95d0b75bafc9f345dd52d86dbe73b3d2f69fb74de81", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3ef3bb573d68cb5f628329c7b74b1e11c5a7d272f92a542503153c1136b8d198", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "df6f14daaad7e4504e6cf2b4c5679ece51bcaaa03561ed11fd2b6e25b17b04a7", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "6f29b0104ef7076880cccfefc32fc7bc5b9618c83491abcc53a2ea5b4838631c", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "36bf7ec2c36cfd74aa2ad42997fed91fd46db40eb76cb6fa85d450747e2037eb", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "16beef6b091787de3ea07be750b4c6186155c9e4698e6238c078fab651275388", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "16beef6b091787de3ea07be750b4c6186155c9e4698e6238c078fab651275388", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1df910c16db065eb897127a221b9666f2a053138c85bb96972f62448bb377725", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "8b17ff8efe40d9f246c65029c386c4562b5561c3ce5fca7e4d4aa90544ed0f71", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "42350583e7796dd7885edb21c632bdc4089494f6a4d1b257437fc8f6df25bf55", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "f7562eed1971221dd463599cbf4e24b90310d0ca40d5ed71546128f360c93f50", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "f7562eed1971221dd463599cbf4e24b90310d0ca40d5ed71546128f360c93f50", +"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "e83e4585d90ef85b7d0de56c7bd76a433a419e514d486856453780dfec469775", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "e83e4585d90ef85b7d0de56c7bd76a433a419e514d486856453780dfec469775", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "3c4ad8e72e310290b33a2fbd7c909569490886476f09c77cae7863816484404e", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b827ed9123d0beefe9259adbb904b097626ca4c7017dc5c6c71b7c5ad9d89fa1", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "269007441cc9a35b08a55aadf235335aac82c10755ebadc9851a60a5d7107bde", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "4e18491069d1d9ea64ec0d3e5357b64308242f4153279656a1e2f448d7901843", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "05e8809d40c9923faf4ba7942546d4c7e0a73a12d3b10b0071336ffc38892a91", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "255714b1c35471f573352b191c715745be2f1a8a4b90b1c156f27900c150ceb1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "47f4f5ed119d5a870f814ef00bae90ae0f2bbc97e18ac05e8b0f09d3d4576f29", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "fa8fd07477ddee2a3b5652947b4b19eb59a5029e20abd7e8482a32458207abd9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c89d1fca942531148a1aa04a1b6e2f4b0f77f29dc7572323df6c15232bb4aef6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "f7dce3660a0fde8c706de814f7b291e793badf8e5379811cc9a0d9ebcaa2a112", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "5e13d3756cdf75d226cd205998447c18924bbaffc706c2e10494f0234aef97f2", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "55f2647649a571478882b53fa44dffb7015bae6f7dc5b3319065fa1e7c11078b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c845cd1a054245bfb9f7349e0d4319ad9dd77bb2b4e1ad21f67a983b5758ba46", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "277b71431dcde7e33170851e1504ac91c8442925145bec0ce4156b14753275b5", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "97fc0bb7e1eab42e683dc18ab2dbbdda33781f45349ecef181e0d3379da88aa1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0ab623931662c8ea2d416bc36912743817cd928124f31001f91ce154a0cf42be", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "4498e9feeb32bc42ba9a4383c3c2eb216ed34fa2e3418b560c05c2fdfccc0c6e", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9a158bbc4f0ec69304ef525b0583d7ce3c01fe77278e9ae750a5e1a79e0537b7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "be0edd5e70330726cb99174e36cc7494ba49fe344b153aad60743b3e6d430b54", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "add18a822db74fe5d23a5586e1f58517b8cf22ad2340703085e5c799d0693117", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "7debb830639a055ff15c13b8ef1ec6cd2989992bf94f055a965baf300ed486a4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "255714b1c35471f573352b191c715745be2f1a8a4b90b1c156f27900c150ceb1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "47f4f5ed119d5a870f814ef00bae90ae0f2bbc97e18ac05e8b0f09d3d4576f29", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "fa8fd07477ddee2a3b5652947b4b19eb59a5029e20abd7e8482a32458207abd9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "c89d1fca942531148a1aa04a1b6e2f4b0f77f29dc7572323df6c15232bb4aef6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "f7dce3660a0fde8c706de814f7b291e793badf8e5379811cc9a0d9ebcaa2a112", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "5e13d3756cdf75d226cd205998447c18924bbaffc706c2e10494f0234aef97f2", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "55f2647649a571478882b53fa44dffb7015bae6f7dc5b3319065fa1e7c11078b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c845cd1a054245bfb9f7349e0d4319ad9dd77bb2b4e1ad21f67a983b5758ba46", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "277b71431dcde7e33170851e1504ac91c8442925145bec0ce4156b14753275b5", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "97fc0bb7e1eab42e683dc18ab2dbbdda33781f45349ecef181e0d3379da88aa1", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0ab623931662c8ea2d416bc36912743817cd928124f31001f91ce154a0cf42be", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "4498e9feeb32bc42ba9a4383c3c2eb216ed34fa2e3418b560c05c2fdfccc0c6e", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9a158bbc4f0ec69304ef525b0583d7ce3c01fe77278e9ae750a5e1a79e0537b7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "be0edd5e70330726cb99174e36cc7494ba49fe344b153aad60743b3e6d430b54", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "add18a822db74fe5d23a5586e1f58517b8cf22ad2340703085e5c799d0693117", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "7debb830639a055ff15c13b8ef1ec6cd2989992bf94f055a965baf300ed486a4", +"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "728306dbc959a4ea695f8098276f6861a878c7fe19c0d32f4d18ca6652ddf63f", +"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "22948c6e57737a0edbd864b02bf779d4bae9f818e3b1a4c5ec83135580bb6b76", +"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "2acd6f972d282107e74ba024c8534ce2cbfbd72221e215e22debc2790be5913d", +"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "89a9bcbd4192e73cbde0abd723f8d35e98e89e111b07a424b6032186fde55a7f", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "16efd5c6b4855710860d1db9cfb1800be675f0bf67217e30ac8e97bd3da930a5", +"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "f13d27da49743d9c99242e3734385e6b3eac68a3138889d5d26ca6c27c528029", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "a6846e23d4d32b91b7cf5a7f1482615f51c14faf9c61470eaa97e4ac275bbfa0", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "7c3e81036355958bf835ddf0b6925c74247a14db89f2010d18008381a7a70d7c", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "de17cffedb38020093f74902f1b61e0c392f0c2ad26be72d6321bb7fdb742014", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "ef82fa90a11627377fb0dddaa8158066fb29995eae2d7c1a3541a9b3b6f7ff29", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "0a3828719a3ed821f7c0cacf5e793cc4295f8e94648211c41fa88787af80b0b6", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "d48f11a40d57052a2e98a30a013e6c3c511231e5e6ccdf6982ccbb3c88503900", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ff9f34af0521c0b7cb4291d9767dacd25824fd467fe0b6408538cfe6cef46805", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "30a09c502fda3cbcc50cad534b28423078343f558ce83500b9513a61211b8ab8", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "0c3806fc51ea8fd9cb757315e690f14a2b5a9999c81403346242360902111f3b", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "96d52f5c64406d9bd1ce7ae0dde317779f67a4e4bc73db0c52d13dc196519f06", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "c16aeb6853b5fa0b2fe2e0f003fee625d7e3d8d52afcb0e82c1c56e2b1e3bc51", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ec9510feac69d4819f6a042719177b8139cbdacc4fd034a9a04a1d49e673fe42", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "fca4ebf6cd4cd9d8b0adc66c67375ff93586a18ee874c35d0b577cb9ec4828e7", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "e5a894d4bf732753b3a0a3a7b36e1b3fd92fae58b2b5e45ef01b30f02e104dca", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "abde4df826c8139e8054d800c0f3618b078eab39a27f0021dfac69d03b975ff7", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "c26d3f0420ed712975b7d9c7170211aa56422bf9258d396109554592d605441b", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "de50e3e8b985828496c57a103c504ed8eecb727e0635bb267931d3da939b315a", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "2b5d62eaea0a6f354eeba4f29318c0b63ad64cd6d3ffab34287d4f342d9e2690", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "da614e706f990dd890453eec6bea2d47be07b5da119a31757830c6032f30e453", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "fcc7af3edbd94c21a3e49458a474a78fd0d6a1fbbca794588eb5a8f51b4beb10", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8792c92ab6e6e6352a8e4b4925a523d6b860b2625666a23450da77ff1ab90884", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "422fb2e380d67a7781f8f43f0010845fbad16e39ade4e51f270f8c53c3c29070", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "f7f4ed2c3eecfe362f49e729d40139b1b084d658c67178fe9a442b1ef8302bbe", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f3455ed6894148bdb2ac39ae255e135dc80374f0149c9fc8aa426af12fbe5064", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f3455ed6894148bdb2ac39ae255e135dc80374f0149c9fc8aa426af12fbe5064", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "3c9da9af9ab98636682ac4a52153ed34e0830d1ef095634aa7b4f1f1932db360", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "e025c34038db4250c1a295dd0ff688ac1d148c94050b7ece5e7962db0afc1424", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "7317f7b19f2494347c3f4d84cb326024cfc18f7e671e18baf108fb18a4f67768", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "4dd4be27a729cc50d3d996ebd634eab9990f8a5e2babcc312104955032eae3d8", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "90743ea2c597d98d4823071691de9031a59a432cd8bc324b3d88d33a02ec3666", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "a34ab158a7a2b6bcd5623a320fabef9dc9e15c52b17f0a6d73d4f863a332f1cc", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "67b285ba36fb8d01515b3d84b3d1d3c66c9a47fdf4a3c8ac7ed218eb2c63e300", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "afdc8350f8a56423b196dd83dfc49be0efa345a91cb277019c616861d43d7009", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "c1778a4e56b5959bb1001fd5cab79111840cff3917ded36ce88a8cf8801a1ca6", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "75a495a9fb17f4680930b1228b42e129462baa92011cd25a10edb5ef3dda9bd8", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a72c3c80f005aa9e15b61f037427d370c069ff51e046122fc7fdc00fcdc0ac97", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "45a69b331630e8b8c4e02b2acb8cb418e28cb47c898c78a1f9a1ee6670cc45fb", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "09e3dcfc21450c5bff4b75bef6652368414e30b845accdc3a6a58bbd03f366b6", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "c30f9dd77c3712e6f65f194c086b2d4642f83d8fe497474a6427e65ac70f8937", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "7ef23ac30114a65ea3cd8e97c53f19e4a79f20c6a66f1f0617fac0cb273e1397", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "1be46087799a33f9198a71b8e31d2eb8963868c14612d179f77ebcacaaf00fed", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "dfe69f368b870c3803b9e4635b1d70b93c8c7f3a389dec9e4cba8884197e3c35", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0083e08d059d204233bf072857ae095dfb77dd1a5554891c90beb4b56c46c4bf", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "83abbbbd2ed1238c7426197d6f2cefd185b098b999cf5497542e0db3e6649a9d", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "2fee64cde024c073e68c236541f1d0e72fbebe6190420aeaeb8b62a90ed99ffe", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "67e618bc51192aafe1a8f0021c67448330cbfc27ec14034fdd58809582cd526e", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "8eadb029d5cff36ef2210a9b1a40ecf91c0efda4f8e0b763e969edc2400c64d3", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "faa8400d5ba22400730384b9cf7cc62366d0c1bdec2a8e0cc6abcb5ad18954d1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_grs.py::test_legacy": "a7d388e9aa6bc1dc8b38bb5dd122484bb1c1bee483884e1f7a0a612edbd7c907", +"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "f85faa882eeac0430d7e43a2d6ceb294b5afd4a786c6db7749b076c90bf22d9a", +"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "7d27ea69372bb97cfe92390537a6cba8758f55b96ebddd28388117b3b3ae9f43", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "c663ad0aa5c5555d80da6160a066cd418884006d4ccd8eb7257bd67aefec2239", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "beffa088b569909b1c8f5fe9325395a10b0dbb99b488e3ba4e33ab5167b2b7b0", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "b19bc735fe19ffc11e2e0e87eddb5d216a3f20f5e24ceaa32170904619954a4f", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "308d5592a35f9fb3a5651cb58fb1ac78e6e6dd2e7fd056914863539abd8a5da1", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "d2c443453e68fdb69f2ff34c2f2af6d74d2fc0e983a688fc7e798e210fe7995d", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "868de1d0b540b8125a061140df5758e69420de0cd044d6218a955040655ef0c2", +"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "e2bff35cc5c1a9462f7b14df3833a05876f871dfd3e5e72ddd6d4a4383886a47", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "c676c82606c65acc57f757a4ad3103e445ac7553c8005719d7bc101a2d512c94", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "7ce9bc9de83f5b42b38742b902b8df5b4a1d3bd85c66afb73228a04174115d37", +"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "5309eb0c5d5b92e69427c2f6a3adf4cdb50d3e12e83241e5bf7da94c2c0ed1ff", +"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "7e9c18f04f1081d7ee60dbec8fd6979408a1479f6857b49cbbd61b927f32668c", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "c74a3ac39237b2bf8f81a96a3e701d7349a8a215597a469cbb1281250086e64e", +"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "17fd19a1faf7803ed948d0f62d1e37ef01583f3d27a7a3ab65e4388e9b8ea649", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "5b020a4630da368ddc04f16d6bc0cabe59a6cda2cc3d585b87977b8121de1256", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "ba9c48f335421ad0b41079a9c3da8976aafe1d937f92fbaa073f2f752ef46623", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "60f6aab156cefe8d1d13428c9c6a23b801e7662a61df39e52cf90a07756363ba", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "0c12b8df9e557fbe12b367f41e79c234d328bb097d471f8c1644b2b7e21a501c", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a02920bc87bbdb1294d94e471986a3af816d59674566777fdd095ffbe8860795", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "e3d4895e71158dd7526abb30b52ec4d7bd3507aed54263a7ab1735715cf0614d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "6279082b848300243ecfcbaa4fac28d7c30cb580fd0f0471dfe66f14b1627a11", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "c8d98bec53b11feb1bed969e28e9c878115d20671d3527e6d6427f9e6014aeb6", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "e8d21437994ba57c884af095f7542a2b4f12138f0d853ada45d2c8dc4b3cd64d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e1d1767b4a7b3f51acd8e216f1080a6e81d7760950021530977250b4574d5ac4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "d10574c19e7a634fce438b8e4b08800f30832f9d61e6a34575ce9d4be97ef891", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "30e3d431f551d7fe666d49b90c44098790540d2d422b26d5ece68e4176a56719", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "be7c94f181c2d770e78e1255238ddf0899fb7e0ab5f55bde578845a42b01788d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "8f2e946610b27cc13c149aa6c93b2bf7ed3cc26d3465618f821b53d5617a8a21", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "053ef9aa4e4c1e0756fc65f42de6104c984d96a59f6970ac0c84f51029049556", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "5ae3afebf64b7b3116081b4e7c1c1343e6043bd2c6bb5ae482c707704c4c57f9", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "a2cbc55f8cd390c5aebb53c1f45ea5f4ccae2e676d0f24d111846eeb88393a4c", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "55650a63eedefc0c0e453bb729ad148df0fc32bf4bd617544753a42eecc912c8", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "cb90b9880a65a2a4ce8ec54e5b0b333f09104cbbe58b809100ef8228c06b86f5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9dc944ebca0acf753f5be8b3b7e855ff45c4bbfdd862b5a18c50d726e7e06461", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "32b1bf9bfe4315421ba669e94e126e33124981217b9a7d03a8df33014d1d9117", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "2fd88ea3786e1f1fb4f0f95e32ee9f8a300290e5dfcd5f4d7951efad4302b202", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "01bd8f307982c724db65ddc766f8e30422cd77dcffaca92ea884d2e53c7c53e3", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "d1007ea1e462dd4304a23302b107dded2e717ef56a2e4e08c89c2dd01641b070", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "9b34ac3587e2d9e6441bf32549a66a0c5f3f808f1e81a0f108a34d3e429e03ba", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "36e0fb4554e1fc79d72a7d22b994c620ec5a37d7245550c49642929835c42f74", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "92b9f853971c43b5e1dadf6bca813f6643f327ced40dfab9f4392b76c64d7743", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "4959ee0d725234f8713ce5aab703fb48d35f9999e9f76e9b444a35b3e70ef1ba", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "f10149556acc874e69b49e39564425270d4c3b7eef1bc27d5bd2c93a6a293e7b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9df645be517965796dd4c9d6ee2182e011312d4ba5cab8e1af86ec1d091a312a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "1549e6b63b2d43c9a1856876c15b70369ab6075a161b6005cf8f35d3c4c749d1", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "1e7f64b1bb43ccca7685c4c7e3c86063d626788948ef9aa7695eaa61ee968eba", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "584a38158c4fde9b0a31d60f4adfe48588f7d805cacee32bd0433241e62a1414", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "2582394f0d56237fb9b7a6f625fb37615c3200334e4d9f4685d44927e69966b6", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7d179eba7c51ece5cc5cb5cde40763ab40dcea7efab1fa7cd8d5a436c0397711", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "2db0924d90c5e276c0cd0cae2fe45ae4b49ba7698e12024cb1299f001dbe20a1", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "2358d5aa19a9a171a95570e567e8913fb0543e5a38fdd827c0d556f886331782", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "7d179eba7c51ece5cc5cb5cde40763ab40dcea7efab1fa7cd8d5a436c0397711", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "7d179eba7c51ece5cc5cb5cde40763ab40dcea7efab1fa7cd8d5a436c0397711", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "7d179eba7c51ece5cc5cb5cde40763ab40dcea7efab1fa7cd8d5a436c0397711", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d0341d9aa0adedfcba23f153ea4861c32f175b6bf018a365120405000fed776e", +"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "4e56ffa6c6a5b36748e330aa637632c572bb7c6021cc9a35bc4f1bee10d7b43e", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "48f772192f3ca705c074ba7fc66b1be56de10cc13c019851315a2dfb54e065d9", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "48d696135a79b35c9fc41cf026155b06d09cd40795caabf8cb34e38d7c6f68e0", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "581780c59610e23d933f30110ca2bce36e4e28a75bd4920a4719b5fd23099271", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "581780c59610e23d933f30110ca2bce36e4e28a75bd4920a4719b5fd23099271", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "ee91fd295e8f371334c5f4f787db271ea3e547a5fedef7db9da367fbe5d9ee95", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "55536442cd693dad1096d0db17fbd6e62816a93c8aa0381bc75592efa633d44c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "580be9f6e23d94c5a26c73a85b1175ab30366cafd5b6129ec1a06a86f40a0eb7", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "49b7e5a00f3e078bb00a577eca2fed3a9cf2268acbe8438deed1ff6a617a91c8", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "f7647d77a42959bb39c651f4d828a46dbffef629a92677d219696bbab945411e", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "1f783374882ac9d39c5c8f1abd436fe59a4983938c7f2200af44a3cd4ca5d18a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "1f783374882ac9d39c5c8f1abd436fe59a4983938c7f2200af44a3cd4ca5d18a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "bdbbcddb9913b6c6b295a68bee9784defe9e38d0c5e70107aeea07b07e0d1321", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "46e0188a06e6dcaf45afb15b8f014a24522a4cd5a8902f8abe2904ca5c4e16bb", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "c4121280f67f228380bd9e1014366d251cc5d58842f7a2dce824fa1c5a9b945b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "c4121280f67f228380bd9e1014366d251cc5d58842f7a2dce824fa1c5a9b945b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "6dff7d6f7ff5ce0edf020a4ad557f5d27c9c0e2f637945bdccb9f6675c3a2dc6", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "fcfd1b2e45cba2dc112dc6d377633ea5e8ca58d0ba146718d92d673fde95c978", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "0559ce8a71dd18d743d4d6a098551ac36dff08aa934db0d79a97ed6f68fcc81d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "0559ce8a71dd18d743d4d6a098551ac36dff08aa934db0d79a97ed6f68fcc81d", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "e6feadaecf4445cf6d2e4c2000d8f7d04e4522b46902fb56cb6aff31bfe3e677", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "512947c27ff1e14ec33ca7ea6251e728c9c273e38192a6d926bded9b8a11c940", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "9c4fe2b61261e760eef98b022347f9acff86b4a46b35a9d4a85c2dcd2040cf4f", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "42727f9c2694997ef9c898939287f926a474c97effc000d30a377d007f9f3fa1", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "17088b651339ed5b8ff7df6e0419879ece8d56b51fb75d6e33de31cff55b6941", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "1fdfd11f748351e38c3710a4d37cf8c6aa0a5da1cdacbb0be72353cdc9045c66", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "8db41a8eb2328edcc91956d3af4b2fa078f51ec92c7fe010229c460e66000fd7", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "6f9b1863376eca499f702670884fca40b7462891b6300e5b5885bef58360ed11", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c4b350b8e4d54d0192a641f169f059fa465f3078f852e64085fd6c75ef63158a", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "113159bc307209d10d911946f0562103b87e616f8207660d838b8f0d83063f38", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "51c0d6c74cfc41cfdb99e37b0fb438c702b1ce3a9f40c2787261803692c75f05", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "9f97c607a18273802634c85eb4520beaee54a04972cd913bb68987141a9d5f7a", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "fb61bf13f0be90e730a776dde118f9376ea22c0c00a44f890f2c61338a0e06a4", +"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "fb61bf13f0be90e730a776dde118f9376ea22c0c00a44f890f2c61338a0e06a4", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "75d7a4994608e7028aa5dc4138650a30698f4ab3ba57d7ba58393804df0048f9", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "c8921b6074baa884bbfcf4058046fb4a942e31fca6f77b3a07ea407484184448", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx.py::test_information": "e40a7e8dd7a02b8a76da74a3f4d788d5c9f5bf82cbee9a1939a5e4833d717d02", +"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "06423e4133a83f01499b8fe2b5b6919048b7901f4634d5eff89d8c9dd99fc776", +"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "d0f301897dc5f0da59b6f9d8137b256e3fbae00dc6a191d48bc1cb3f08c0fffe", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "be59b796911f81472105ba7c0911fafdc8ae811e6ba7df4463da4e9528c45b15", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "42390066b484d2f1b8804218bc7026a5c4425b0273537736b409e6a00b753cb5", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5e37f441c92f5c0a49a8d1f879d50482b49eb2fffab6968dcbc386f9b193e922", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "42390066b484d2f1b8804218bc7026a5c4425b0273537736b409e6a00b753cb5", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5e37f441c92f5c0a49a8d1f879d50482b49eb2fffab6968dcbc386f9b193e922", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "3db5e378840acace48b8636bb786dab1ea420c1f9408011f82622fe171702216", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "9a4dffce3f6493f28beca5e239ac240b10161096bccf9fad610ed1c884a6ec31", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "0799df22dca9dcbb2d9a4eb9f24ee9d72eed08fe4261a1f0184207b8d4379081", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "8921148c6ccffee4f5f4153841c79199075ddcda53e92bcacad3f90027da5a79", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "5c1a84cd0d06ed0e6c2ec2f561d34606c30ba898408de37638fff961eafa8560", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "c1b9e8dcce66e97545bb647fe3c481fa031e60b40087f65d7e9ba6249b0b9909", +"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "cad4a52f1c18a51f39566e89385bf2922d875c1638577f7334c3311c69549791", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "617fca40c373fbc465a37fb3447cc7d2ac559da61d15a36d17b8250edf08ff78", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "d5a4d016f1c535f3e6ac64e63307f0a035aa9a169a40c222a8dbfeb4b5a2778d", +"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "c9aa7ae124701bc36d512084685ccae78c40ee6facb01117707ff2e7c543e296", +"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "5e1ea872ac252aefef4c820e7640106a81d561c2fd9672bdf44583f26265f453", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "fb04b125105de1029a7b84253b5538585bee19534edbd5c3373d6c38a18da6b1", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "0b3f2a40469e42a5a7cc3faaa544e885ac4b1dff3708f6cc76480a2b56336f5f", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "01365a5bcd53916fba6efd32162d5ed213e43583bb4655770b6ed97a5ec0aaae", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "fb61bf13f0be90e730a776dde118f9376ea22c0c00a44f890f2c61338a0e06a4", +"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "bdd1af8ce3b39810a5ca3e890107a59c6068ef8906f39937824babeb3ebe5306", +"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "1a477e38005fc1c005f3efe4bcbcccd3445b58a3b58f656085a862d8594394e8", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "cad4a52f1c18a51f39566e89385bf2922d875c1638577f7334c3311c69549791", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "3fb29a7345e2487bd5d48fc5b46576e57318714200de3776d313f7a847119883", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "049f00ee5880ac76861502800f484112c6ec949bb4e7d72d277c7441960e2e12", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "e51568ac5d523276f0d921492073e2652adf8d3e11def2646b07ca2bc624f876", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "cad4a52f1c18a51f39566e89385bf2922d875c1638577f7334c3311c69549791", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "3f1605244a9a661ecbef8e512bf72bf375e4bf7008f19f371a77a263c8cd03b5", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "cd5f37cbd9f94ef9e8daee20d03a73461c289ba81390aed155b1ae2911b5ca05", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "4f61169652314e9e90fc6aa4df579d170178d89facf68c71ecbc41109c890e96", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "b013a8b9942ea5c01829be873ec238d31b9030ded3d2380a7a5672e89c80f9d9", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "3f1605244a9a661ecbef8e512bf72bf375e4bf7008f19f371a77a263c8cd03b5", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "3ba9e52acbba70903df6a3403b1a0d45e74fd600f88b58a2356ea0d445569b4c", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "ad6cf7b44a678d202675ab590ab3062008402b0ce8a356fd2b9dfdf28f32b6a0", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "78cf491631e9b60dd41baded3429a18c10d33098e97c71549119ac0a58a35092", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c7b0f720d63a3bc6b4e6b612b94ae3b19b72a4d9e0f56b66832bf31d9859e4b8", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "260db4b0162d415c41033df761e1b1d69944e23f5a0c86396caac2eeca0a3ee2", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "27e5cd1fba903e06470e1b6ce9d617ca654168fe1d73674ff363482dd834cccc", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "0e0d61d8b339845c00e9cc722cfe7ccbd1e7d11bac050e3fe70adcf234652c89", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "f939cf86601b1a10be7377c8ffbf6d2eae841cb695442f58171bde0f50fd82ad", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "6325331913f0a2a618ba3c933653c6aa4221f30a3e27066f3577a3ce45c01baa", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "0fa26f97ebf7c888873699951281b1a2ce3633cc541753b4ca189dc787d9d4fc", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "954c8f6ccd87e93b8ec94db0877d43e638cff7f0cc705d5a151c40d37aaa10ba", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "e27aced4e36bf5907df10328af10ab4c0c85bc29e178de5f37dbb5933417fdb0", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "fa070f4e8a24a7b03c102c62e971a22afe21af30f4fe35c4c155b6bcf755acda", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "ce4f2a9eeb9eb7d68f428911eedb7878bf1e5f5b1602fd884ccb5a9a273a9702", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "fa070f4e8a24a7b03c102c62e971a22afe21af30f4fe35c4c155b6bcf755acda", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ce4f2a9eeb9eb7d68f428911eedb7878bf1e5f5b1602fd884ccb5a9a273a9702", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ac8a0843e256727d1e4a1fb33dcbad3e7f33be7585ea6e4aed0e753edb580580", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "691a42cd2087c5a296952a2e6a0d74cd1e34979269f4c5dc7ece737f7cde69ce", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "cb5a645428f3cebe33fa5c28933726c093f8bd375ba002bb6c9564dc9ab45fe8", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4e4d0f100b5ae6bb673e65b2c72bbd8e2e70de1661fea9a3751b44ecc4dbb019", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "b4644a4408d34e916c58c73c8f7ae7f1fae686aae3d0b6e5120add538aeca11c", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ea817c7b827b2fd149d02a4ccb41350b201af575814d04791d89ebb3c18d9cda", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "8b5bf4a863dc2df160d90cce32144af4e17d1cf4c2bc56947c5428797d09cde4", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "ea7db77e079d2405360ddbee4e66cb623c9183554ded14ab4cfb92a7811328ba", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "3687cb1ec6b3f16cf782aa9baeeab0790e437c28cd444b434d02e9a0d1ee6c15", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "3687cb1ec6b3f16cf782aa9baeeab0790e437c28cd444b434d02e9a0d1ee6c15", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "3687cb1ec6b3f16cf782aa9baeeab0790e437c28cd444b434d02e9a0d1ee6c15", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3687cb1ec6b3f16cf782aa9baeeab0790e437c28cd444b434d02e9a0d1ee6c15", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "38ac60627ddf9f74af5381f4c2711f5b9e79ac727bfaa28f155bbd9cb3fd51eb", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "38ac60627ddf9f74af5381f4c2711f5b9e79ac727bfaa28f155bbd9cb3fd51eb", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "38ac60627ddf9f74af5381f4c2711f5b9e79ac727bfaa28f155bbd9cb3fd51eb", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "38ac60627ddf9f74af5381f4c2711f5b9e79ac727bfaa28f155bbd9cb3fd51eb", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "27539ef4380d037fc9180a623b518f11852eaa8a3202145ac0950ffd389df8aa", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "21d83f3cf674c1fb032157a062c4c87f7e9e42d6631f1a7837d16f665bba384a", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "1becfb3eb637dfe75998d840290f8d40a9ad5d709ad689640da7a96113914985", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "1becfb3eb637dfe75998d840290f8d40a9ad5d709ad689640da7a96113914985", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "7375eecab172bc52c07fc9051e7f51601a9a53936a72b043919fe848df4d2e82", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bc2e7bd5cf4a3792710fc9428b67c30168a274138bbf0437d9356ad3e1ed2927", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "6777be4cd5439dbbd7db4c1faa9505f3d66bf14bdf81010e30b61fab657286ef", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7375eecab172bc52c07fc9051e7f51601a9a53936a72b043919fe848df4d2e82", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "b24daaea3a70f2cb761c38a03bf1ea16a03dfb6ceef70a2eefb46329729ab48f", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "b997f128c107f9455e7fff1d2eb8cb7e7f9d9f8ed4b92914048911e47ffc59e0", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "b997f128c107f9455e7fff1d2eb8cb7e7f9d9f8ed4b92914048911e47ffc59e0", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "b997f128c107f9455e7fff1d2eb8cb7e7f9d9f8ed4b92914048911e47ffc59e0", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "b3f12fd4320071414f812207cbf462d629aa2d1e11e5168fc8a202b5ec56d57f", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b997f128c107f9455e7fff1d2eb8cb7e7f9d9f8ed4b92914048911e47ffc59e0", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "081c0abd92427b58c77ff7863e14bc43cb1fe702571f611c38642bbbfa068e37", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "55099895f21155b8deea9a33c0d2c6c8e83877f43cb6c01fb8ec43e1af368184", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "99323b898abcb7754c219b8b0bb8c1e13ca58ab464fef84afd3612c9dde8284a", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "667fb26ec5341cdab2e45309613222666045a25e76904d1f501b070cdc681cac", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "709ee1fa77676c6e288af36704f4ede5f4abfde86ac6a5bcf8ab223e2635dc25", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "83f406252a21dee2e642060ee7fc8d33e185ce6f47285953f9d427194b83fff4", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "5d8026e76c352a95e987077b68a75515e64a62848a6d108f857a54a483f67841", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "80f086d8d3faa04304c9b62763e82a75677ae22fc7347a3a152bf212caa6e9f2", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "cf0df1b8f83c674c03698417e68415dc2d4bc74f35b8954487b4459b2f841a91", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "68fab9332546d355d104eb21371bd6d490347745b3ccd8659de735313a1733a4", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "9e5e4c81cc6d20506c840312aeb236ccf68c9fbb1cf6aaf1342b52290d5c2aa4", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "9fbb6cefd2047345e085fb7f19780a106991b1209e36250bb0e2d6e9ddfce55b", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "589f2f2780f8438ee43535914d25dc3242233a02b0ff446e72f974e6b36dda98", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "44677bf711d7f033cb43fc1286f13d4b13d92feba81e3bf2758644650f72d4ff", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "3f1605244a9a661ecbef8e512bf72bf375e4bf7008f19f371a77a263c8cd03b5", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "5a11b5ec5bfce0fb5c26b28621168655d5a9516586509e1950c3b885017da42a", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5bced2b264b2abf6ebe9d0135948d20fde89523184308d4cc468e94c439021ed", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a3e9c317b0c90eba0e7f20a504a8a289119ce2afa53c3c4c21e036aa58e60478", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "5835e3301bba074f5d5f6c470e6fa399e247124fb63a643a0bcb41d1851291ac", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "1931dcca85943b86d6e14100e9026c607b7c0cd8729507ccb76d96427de0bfe7", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "0b95a95822842c2d8fb33fe6e767937835da2286053fd62a7819c3645b6db323", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6266a49f87e7fa7fec4c26eebcdd2fd5b4e6fe2002a737cd57d17392ea93643e", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0f91f8010876a46e2ae6b87d28f7a3903b8c82ca5ce23c1d80b7f639e36e692d", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4ae294865e425c3be800d6033aadb78e8e7672b3317d64ca7de4589d22f894df", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "6f18a6cbba077867aafc5c9963d81c0dff4390592e5435d5d3b8cc8365ac0650", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "f6b88818c3c9d16b07fa9f590573b1ab90edfd2993707fbf1c786ce38e70a2e1", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "6d3dc9f8315bdb2b998be592617df76dd9f0caecc0f47cfc22598464b06674db", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "103258788f094cc1aefe482692900500fc65336158be366bf47e6d0ac26710b8", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "20a08076ef9186fe43672d9ab3d3638d49a0c9df2066dd34e3529fa4a4766814", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "4b57a22f8d9171557af91d18a1455096785c14f081c2ac24ad2d7a5258a5b518", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "a0b3bf24ab0cf1682262427e2c4c9c2fdc5491eb4549724e5488e75ca4136751", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "cdc0ed1f18ec23809629e51db356ee76d3d8af913cedd35981289e517d776a30", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "f70d1209ee28dd83cc17636f92d54d76282672808459321460d44611e9aee3d8", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "ab9acfa412bbbd3ec19260036647fd53abd43d985e3fa86bc3197a60f7edc040", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "bec77416772cb2cb3b02d907016dbd1aaff6c8511fa8d241dccd73444e549f1d", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "aa9a6445e470a68edb1752f7cf5fe7a4179d377b950fb1322d09a085d1b9fff5", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "cd3d252066b9a4a6a013a1abf7298556b7162f3a751b189c1531ab5f6ba44da3", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "d99531850795fc8041c3ad4de93b59bcd381941aba38cf2cb036a88965ec98fe", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "1bb3eab2e2c294e68bf393da46397b17f9276adbcedb04ee1e21d8fc7b03704b", +"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "899cda0597bb21f4a87ca0236b56fa2537e8d63f15378d1398951504f732bc50", +"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "f48a9fa36292a03497b58340d32de6f760307ec4879d6f1070ca81b8eb3fe07f", +"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "57cfb8a22b5f3f6cb65c965744ed0d4c5da73a85dfdafe303e1221c63929b80e", +"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "13dbb3ce4a0fece86f4d1456884bc3a10b872c6cbb0234e423151457662dabfc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a887ef0b75cb27a4fafe556a022a554625ea2b523c1e73c6f0041a4280cd009c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "c3baa7a79421fc23999fdb32aa7d201d3c629c9cba9268f1ed9886b126ed47f4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8c548c19ee14f148992cb4310dd5632fd84d68b91ad4ca2909747cfd037bfd1d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "d0a212962f19ecc3db529aaae73fbd2fc09c2cf9ad79ad6ec422004ffa0d3690", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4abf364448221be5e94f17264725faba5410cd2e8ddbc73f57d09b07f1d46d0d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "32010b1c7b4664bec0f7e7256d18116518bf8b4ee1970739f0d1d88077737f46", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "31d841f2ee5bd1e54f0f1d5c6d7b1fa58b37bad30876b8b9ecefa8b186c1ba9d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "a5647e70ea8c0d9079475a89d3f5f8afa508b35f28f9d517f3e8cbb1f91aa47b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "4327d51644bf6f169e99df863330d7d476f628db62e8d116f71b202e726072ff", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "891ea64eb53b6727ec2ba5dbe06efbedd07b2fa934893f30546930cc8a8fcaa4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "602b9b7eb2d815a4fd350ab25b089e4045be631abfd74b91548c8ac3dbf9f51d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "9ff46af5431054afab3945cca298539b95fdb08bb2b524b1d02f65caffab2395", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "8f1bbfa28aed4fd7de588c869a0891d9c1cf540c23dec7f64ae6c70bcfdc0575", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "1c1a1f7fca2f79be36ecae76ef3fbc059f90d6c8a85681c22dbbd9b30a6f8d70", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "0716c4165275452314eeb952a9b1990cce1bc4760fbcd1ae63f6607e152c120d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "0a1f096eaaf11a4c9abefa68df7d35b1757eb41f5d840614dea574b90fa1a356", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "a1779dd23b86b6888d2216d3e23e30163cc30e5aecd988eac88331ee2b6b0998", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "48f376d508e805d0dae379099d62df14e8158d11fc4f24c5a147163f08e80ce4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "57e2c209d5cc7dab9f665693fdb7b1b4128837eeb6bf6ab78c82737bb8ddf148", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7230a31d3ac6d5fc3dea3ec51ed42155ea872b0774800703db6de6f5ace4b60e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "7be93904c8d544d2d0e34aca3097f818b796d11a34de0a18f98682e3abeda4c4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c388754e426aeec5f851858c63a73812ca579cf6996cf57b4a0bc51e58c133aa", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "c446ef8a06f87c95cd3f7607a489e440fe745a80f5827f57a8c05b2730ac1bd6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "73d412b1f4b019710d642c065ca663ea0946e466b1b718744c261f55b046ff6f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "25d266c09341c3d72ea3bf4f1e6e5bd9182977dcdd78aee33b355cce84f54f63", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "22e166e9a09a6e1fce561ca6763d57fc2ee5305bec0d62b85efcc2eacb3f462c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "e299e950890977634171f09fcf56c0a03c7c46371e7b2c5f204e5268ed01c317", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "618ed280793826135857c2ed18acb6d47c97dc142b1976f6b1c1a5606b57c0ad", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "27a4a7eff0f1c1cd6ea176c3fabed6f6b741fcaea07de7b7dc27ca79710d0b89", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "db45f020109e2028c42cd4260c0457321006aea7f2015a4dcddfa56a56b66ed4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7697c8c52658475c6de603ea3a6f5b08189433220b71d0eba4044eab9ab611b7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "6e43686de60346e3e00ee52b059e394d65f3dd1613f224bc01ed8576408eaf76", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "c4cf3c2c06b5909bbb266d88d44ebf7df5c65d80ab5020265fce7d1463bf15f1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "d99b114df13706f80714084a44a0f3a690611830b0f1266b9fc37bf42a42b6b4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "40ffd53a2bded584f69f494dbf9c0c2b5cc9ff4aefac946da7eff6488148bb7a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "bc68704401ca83bf438fbf14333a83d4f0fc3476b87c220985ba6fe15b00e975", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "4da217e165c77b876bacf97056d4b72a12b75ae87467433af767b3006d34552a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5980e4b0f61f34d841dd4231a6d3b40513a4880e48ad0bf45278325d92aa68a3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "507ef6385629dc6aaabb8c1a62266a7c67bbbd17480c3524e4d8fd394d317ea5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "923a87926c969b07ae36b0610db5eb3abb49b6f6d0b475e021bf9fce75f21386", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3bf315532246e124dbbbad1579d625802a1cf3667fe443a001a8788c46327cc5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "028a8c2c109153da358d3f5cdde6e821a6220f35cf5ebbe7d03ba9a6aba748a9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9db474418e12e2dfd427c5a63f8136ecf067b7d4ae0cd84a6ab787e637a9a56d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "0559075677323b395c4581f769a25380df3d8d2d62516b6daff0b094d14d5267", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "b60f8721de0da8dc96976fb2e9be984d8fd04554233bc5ca855ed19e202d943b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8e654f7b68437c3b7dee7d50aa4fbb225dbe44d7d16075f56ab789a45d2b8fcf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "357dcff6f5e5d088e59e4f7633d9db577768f9afe7a57168266d4dd2a839fa04", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "bdb93d747304a56a68df3b2cdf3cfee77334065795485e14626646c0cd681e98", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "3920a2c6b597f32c17d19fb2959ae55b630be03b1144a44393897d8cc0120a4b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "18a92e8989c24900876ce6bde8dd94fd09a279529ff82282d36823424e3c9603", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "dbfdf09485baad4d9888b8d955192b01e316b142b3d737eea472527df55f7d04", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "6a1c9c61e6869ce20e9f45c800c844fc73597ad0d2e71421918ae0353c362194", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5c242577c2cb58ede5063e7831341c5b924cbd8a9c3cbc25c2b2a7f12ba5794f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "28b6e6f383e54c3d32cf6ab1d38453d051ce9f45b022e2e38e966d184152b9e4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "df0277522301ed3c13ee9e20d47e1ea1a23d886209e33b99834ff812fa7ba61b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "c0a8d9f4d4c63b87edae1d959995745a0af8a55e46613a823719d0bbbc021245", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "14b8f64fd2ce654cbf026536580bd0d2768079af99747bef5fef194b972e6c87", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "56628f3723a89796e2af1ac9cfe954c22e632a93e55fdf3a8cf9a944a3b88c78", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "8238d96cb3c294ea5e5abf5f05c3cd21efa7b86cb42ac4cc916e652fc8af23a2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "475465bb8a2b6d0c0a9f4c4a6b7b08e8304cbd154b52a330f64501d46a324351", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "0b57bb153287bc347a82b13f0b72fb5ff1fbdfc493c2675f3860c350caa1040a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "15bd979cfd57facd2c88a07468653fbdecf61ad4637dd9e342e5a2261cf3234e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "dde63e614ad2c696ba1158102d395e4536ecea6c8a92103fb6fadcf0af69da08", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "0b7292259bb55cf37b766f7c2e0e1bd8212736e4a2ef432bea235cc6b909f870", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b6d6b51ba9af640619e855a482619feee1508c2ae460e6ae4ee2c4b58d19629c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2c9c1053cab62419cf56534cef3ccd9341369116c1d0c7e9a79c1f01e88821ca", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "134ecb2d76c2352cf0caf02199ec66fc4ab31c4a706c847299ddf5d4cdc58385", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "a123ab5c5b7b6979b2419a3e5eded1cf1dfce3482c20319025ed2ada697399bc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "99aaf7be45e77a0afb6fc7e3e4df4cc03fd98a7482623952b803fa846ada12ad", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "03fcffb25ea80de6dc6ea605b7b0f3eeb04b9dadd6d39a6e76455d59a1d664c8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "4f69ccbb2bcd0a014af1007c59ff4cc0b63ec522233006c4f4c83da499706989", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4da4c4c3e9cac2e7759ecaf6766ded62a830b762d7355f530ef41ec634338a49", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0fb193a04524d0a3f3552874aac36c9baeed7f3d196d9a7439e9043a56878d0e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "cfa2b17b282498a8b5eaa34090018eb59eb5b39b5ed10798a87582f9a9f54da7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a9cef0f9b4d6b7890be368e8df26376c7062fca8851ae95e60b21bf5e370983a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4ff19d2c22f1426b84d94d4210529f51ac62f0d21e4698d92bdd1ca2adfe42d2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "e08264f7fc9ff0804315ee33b0dae6af3a1048643caa907f13ac93b325c9553d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "e7fab6a8f225b8a3e51a5989f418f9099e4045b1443adcf3447f280e302f1ea2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "b55fdc1a98b64ca03b1d2782c61c0e579622ea0285454d869fd415a8e4701a73", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "29a4997d01bffd0f88674e7c1af4ff04831e911e31bdab675bed118192baba92", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "4b349f00ba8e46794f9fdedcd45db783a9f190c5ddb341cf03d8d52c6948b2a9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "c59cd89e414941e77f3e5010e8d5ccb19647f9294b8ff0a3ba25868cb0ea9978", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "9b52141fa01a310fb365a220653e95b434387f37cc45a4656de2fbd01001294d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "5ecd97df8f37357d82cbdec9d815d331ac3604eb49e535b7f92a63f776a37ffe", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3e4475fcab36028c143d031d76d6381c49caa24a22e202b354384e9576d75b84", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "296371a31c56e29d86ad9d6e81d9cac14b35e690635f9303c6dd69fb953910a5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "110a3ee3d149b098d1ef5909af954c07c919b44f7f0c01d2427eb621b5195d5f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "eeb2b866f18e8e80f85862b3e8941f53766a936f2132945bb9fe4a78274d62c7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f47c07f5c91752b82672d4e2fb08027253028590799ba3ef864f453cdecc6386", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "96458be4e0c3c02d08faf5e4baf2a3bac43e096af14e2509008f7a2142fd6ee4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "561006e3cf577a1dd5c9b4b5c677d22ca62bd56e3cd31c049643ea8006c17c94", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "868264b51d123c69790bdf9ca4d77613e0e6da3c1151654b1225448a2dc1a578", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "b52248f9d2c1be0de59e4a6b5a0c050a23e464d568ef286587150dcf22df98f1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8a6cac4eb44cfccb84ba7e4c28ef9fcf0e8e8ed0d171237457f2427dcebef0f1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "608e89fce9fd32648db1938e97ef345b8226d70513afa4b7e423f8dca9e53381", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "8f181f3d37688cf1bd17e99812825b39bf504ce65604353572b7b1162278048d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "0433603979b67739e1f0dbae8b10a07d0f07b7646e007fe75ef1b5bd1482cb35", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a44c176a5fb1a8936b24652299b3d46cd4c25803ca300389cf565e2e1f84258e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "41025d1d67e504525dd18a21e6866da364a66f99e7894efca674960d3f5f87a2", +"T3T1_fr_cardano-test_derivations.py::test_bad_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "920bed98995ba6aa83dc7068799358bd5bbbde1a600d74139a779aa8b9818331", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "4843e0952a711496de4828b5946884c7d01c6e3100330bc1066121c88109351a", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "085b13f5d9058a5788e33b203edfe0a812af45a72a501b4f3155ae03b24e100f", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "db1264e9d5b2892666def2acb4c3e3c8d6df3488e23c7c38655d5e4c7521355e", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c7fe473b47154bd3aa744999a83deaae756750d5d82c10d4b4266f2f7b112464", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "99a30636995b43262ae346bb7081330246601e0a3a43049a77f7a466dc104c17", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "7b3b032ce220dbc49e0d16ddbd2cb6e75e335e2543006cbe8a0807e4845afb0d", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "13bbfe8b124e70b8531fd6e640fcb90efb52884310f2c9019c97c7c8581e19f8", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "3ad3ed254df485cccda629d8ba95dde53ce89b1686263d67fd80fa618fc6ba19", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "4226597061991473bb9edea7882bde206da8c72df2e4cd9839c7ad730be15712", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "ca382af5f63f5e19046b7895f92c20723099c73083cd3c3f093b8f34b45c8f9b", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "dd44d5ad33fc32b6a0ed27b30a7b92e0d6c83d1165b9a1d63831b549356d5917", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "e0bf1e3d93084afb6d96a6b6cbccd4660a63b7d40ac211bc8e17803c00fff911", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "9e9249ae7384b6b51aa0be181290d298797251bd218a996689dfe9305320fc4b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "3c1486fd48bb2cc5419b7393f3ba7bc7600a9862808b3a9522c9939a94f309ed", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "0e48e214d630cb2b85643506a564b8a0ca5d1c57b1a39eea4ef5dcc257c54577", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4d6d11b3b13f81457ee292531e95dbb940a8791e7b2c26d19c2dc11a8da32ed3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "02b4905ae23fd46d1d3b98f80853d08e38bcc47731c938192d6b85328e0b201b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "aa2d3b253ce8af91aca5296850515b9835d22373ec63d500deab25fe3965f240", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6a324507813603b274d0fdd565dfe79f57e7bafbf424016ee51a1be6fc45b0e1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "602b7bd4021608f8641d3f0e80e11a9442f50c5f5aeb8b0425080b02f0b13109", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "94a7ea5d7b873bd2ecf78b6055efd68edcef9b4957d87bc6125d535ec8d4a8e2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "3452bec02c63212f2dde724343e079942cb3ffd5cffc2805c9b8f192b6feaafc", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "8b58bb4fc1362864a18a98b617faee92ff77084d0190ffe6e0259a5cad0d5bb6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "b3d414f5ff871e22025a363ee3bf25187931fd29db7efbc0ddf56f47bf00e67b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "b3d414f5ff871e22025a363ee3bf25187931fd29db7efbc0ddf56f47bf00e67b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "300d58791ceb64abfcd23feb622acb953a4fd9917276e4a41076e49a0deba262", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e0dec6e33a724c551765209408c86edea78695846d6ae91b1c8466abb757fa46", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a1c2fa6ced7ac89d73dfe49fbcbe61da9f45664c4751aa042fe219bd620335b9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "6a52b07392fb8744a4da8e0634aa51aff0ddf7e95513c5a91ea2b852a588ac3a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0472be3ca2e52e115c2fe46ec6a58539326f082d6b47c53fee3b7e21ef852482", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "7095b0b877da1d53a7fe9dd19e1c1e075fdd3d887604c47b77d8a87c085d32d1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "853b3a1f40aeba1bf043e14544fd57d392c236dbc232b9f6c7e5b018140a1e25", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1c76a739e6e35bab58130dd296b6292d89711091e38502f2baa7eae548c81223", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "47a586377df8a1d50cddd2b846ec305debbdd323645488d92a8ab180bd791c47", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0472be3ca2e52e115c2fe46ec6a58539326f082d6b47c53fee3b7e21ef852482", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "7095b0b877da1d53a7fe9dd19e1c1e075fdd3d887604c47b77d8a87c085d32d1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "8abacd55884dedb2a907b8d0bb88c3b3638272f7eaabb345257c67085ce85cd0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "cd00d01a95d59b3b05524fe27cdeddc854110d0b0fb9bd74b31304bf1f5bf6bd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "45144165acf3ebc20b8389bccc2ef5d6c4e1a70a35526cc3d8a8ea118214d68b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "8c75b88234cac7a872746f729960b2b0a53c2abb856c0d76d0907d36c8d3dff7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "f47a809cb4552d6736067f0acf60dc35356e27fb2d4631698096a0ade6dac80d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4b8a5148975c76a1517708514be50eb927b288c497552099832f122a723ddee0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "c37dd848f6e3eaaef08c620ad7ffb732667396bad68b256c4b34106dd3d30c67", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "21fdd6f8cae3aec3aa81f01b99cfde8e6c2b1595deaeb97270a05d92adcb459c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "4a4c6d06d8e7e143c0439a9115b326a90d9eff29fee177e0dc438bd640fe074b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "ab6360e430f7a5398e701ae230bd98976bade09532908950f72c2ef9f564b660", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e0112a1ed8932a97b663d2bfe89806e3879869d2ebf8d16497b3f65535345538", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "3a167db590cf080be75f507c08e0bd428513c2dfa35734d9fd962ef8d16d7e96", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "980efe50cb54d0d40a6f62baa2e1ea1a61278fbcc9ef46e059165746f53acc5e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3ec926e8d366196bdda54ac54baa76e83454af718ded33655411f18fec219900", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "ec930fa60c3e134dbd67f9cb35d43f107b32a3edaf0e0d5e9c4beba974e5dbed", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "a712138093dade344f36cd4c35de92f6d480ec72c0af0ca2beb2fc1b0b17f80a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "9009aabd12e43046e73b05460087cabf467143656fbee483327bda9290e06213", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "32cc4908c6e18e36a375618458b67bb94539e228b43a7d3ea4f5e9cfe8027c61", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "2af5de4a1db365d2f56d08759c1cc36dae8dfc0d27ef5b81ad9b21831da0b1ea", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "e232f80006c34c1f25fa275b059c90cb495987befbb6daa9998dff536ecf443c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38efdbb0c183bf6d26c8d44ddb1268219880505372b085da97bf5bbee3c507fe", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "a56a893eb64ebbd36e93a674f8e5933dfeba35ddcff39a4b449d82ee68d83317", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "7ce2141ac484857382977d80a0321130a4d18c8f71b927fc42f9c04ae88e3dc3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "85e59da124c747ba1bf332c9450be62513fe6cf2738588e90beb313854d22b3a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "3d15d750e628d419bc9c1e97be8000089dff61dd013da3be15ff4809832f0905", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "be94448f97ac0bc51d53a86b87436f7e2fbed66f1c98a6c0e9ed79d78708bc89", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "86d3ef7cd59bae4fc620b274336c3da368631640637bde36b8200fdeeeaf4ae5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f33c75edba4d136ca50d2cef40fb97d9bd69c7c8de92de372490df60aa3984a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "a7a82516dc2ad3605970cd3807830dd3ddcbb4d30c38a470c492df0832bc7c53", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a5a92904a8bcf09d7477da1e7dd0cfd8482fe896d3097c9cb8730dde5ced1f37", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "1713b33ab66f20a58c25ed94656b6cd2c4ba641840bf536d6f24943cd4d81a0d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "68ecf4655c9e1d82cff60721cbf64dbaf02d31beb15cc9131ee7c0a4c7ae05ba", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "bb37a50ec402232b1c49e06cf0068c824a71c69db9a6487ef315255d96dfb722", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "98ccb6e1bf47f4c81ac1e8910cfce2957a9d8e7351658dd08154f6fa9b3499fd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "4ef3841b68645145bce6f6601c98b4d4bdfae5765a412d5c107a36a44a33da15", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "466e59374ed366e9defdb1e05fd61f14688f2b8fed530c3f5520d754b458e0a7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0ae120c8002dadca8935a2866a3abbd0cb6d2204e73c33bcdee9e31f9aff9ff6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "99d36bc76eb0ddf48503585ed074d554366473d60d082024658c29bd19290b13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "67cd5fd76302bf62317e6f9f12f5bb5d7e7db21b6b7c12d33bb08ee4e6180e15", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2d8a34066c761b305ccd8c998ee39505e6eed06eab201c0981686f8774e4deca", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "78d0854b47e680b872bc25c24782f141c93cf8bb9e4fd2ad4835015c4035da06", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "60782ae79097b90ae579d731e696ef679d587778c8f60c1e6d74bb97225de218", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "397778dbde4352e7dd156a53652bf9f4130a83e1936a0f7437658ad59894faea", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ed462e828d7ec1ef8127c4359c7c70113694cfee87fad428b1e898be71d012f9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "8e2c8678d2ba0f415f5af1a57ae8af1106992103e268bbe51f722c61de2e3e57", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "04d25fb14c503888168a496ff89b6c0e633c8fdcbe2d1b1fdf720fa251e4161e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "23e815dbd50d41df4c24ebc658423249c36a486d1a0e051e7e70ffe271550e30", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "a84c1304753e633725ce80cabe5c2a58c7ac773a9d9156ab0e50c5061e9bf3ce", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "7ea24d530462e01f083f070a5acd5019cfc810b61831feb7958cd6a747caf904", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "27f4a87b50f14a1275b7c455692da253273530cd2606ab5164400484f319827d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "41fc4dc7fbe8c3734e77f5d7c37bef38d0897960dfb701da2296d982aff1f75b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d5ea62127694b17df613fe42455b2779992df7f8a0734a791f735d2b6531aefa", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d5ea62127694b17df613fe42455b2779992df7f8a0734a791f735d2b6531aefa", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "8cf5f9f48f4e323d824a30e9535dbeb777825d129f79b11bac8e3095ca014fe1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "99cbc05ae2504875618b921bb35003d1243f87edef0157b77685b1916cb71a7f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "99cbc05ae2504875618b921bb35003d1243f87edef0157b77685b1916cb71a7f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "9207458d83362879a5469e9ceae17c89ee67a8a0534c2e933c4d8f6b4a1d806a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "f8b936d3c929d595dfb0288efd3d9945ab3645a95f506faba20b1db02317171b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "ed89ebdb9e2bfdc7d2944c43b9760b4cf1d16462632a8fb62fb8d33e887e8726", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f23422a8e473038b8b1d52202a46bda4ef7c48347e9bbb64b2bca4db47955eca", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "521b169cf3fc32444fb74fbdd95de4258f05a0ae154f3fd64a13bc941ea69b8a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "84b8abec35c8c09dee62c84accf2813c51b27b4b01b880c841661afb469ead80", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c482c3eb1b464d09246ef469329d3c5b5b6e12db7e4d3d629a4364ef3d4fa851", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "b3c6833390b7b8015d5ea47e293aa5da3baad4c5948a8e48ed6e151346c6062d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "dd507f62c9115b22a5eb68930eb56f7d209e081acd89f4530b04eaba1ea0b9d8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "9e9249ae7384b6b51aa0be181290d298797251bd218a996689dfe9305320fc4b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6a324507813603b274d0fdd565dfe79f57e7bafbf424016ee51a1be6fc45b0e1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "93ed3c2fec6f3f90da0e92c4429193e08851361769f92f97e95187f81604a185", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "c9558281cbd4fe395f538a1bb8190ac11862dd365a104589e88d6d2d7cb11939", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "c9558281cbd4fe395f538a1bb8190ac11862dd365a104589e88d6d2d7cb11939", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "b2d9a9cabec0f9ed41f516c3a7d2d8c7f62a763588b1ff4111cbc844b95353c7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "9f1d4cd22b37ae6fe173810404a95a2650213dc2e19c41f4f74732e36e7fe28b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "2e21e0c4958863205a348d5cbe3fbcd5a4dc53b5d2385c16e1cde514a81c1d1b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "53452f78a82087537e2dc8f1db233d0b053ab65f18dd84508e80f60c0bcdef96", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "fccfb39f9f063d7702e0fc625f8b6b7fb0aa89eba85999f780d78e8ae25877d6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "50a9289c04795b0a32aa07518bb4c334213f2ba64e364854ad06d35447895558", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "31f11b9c281ee5143cf261ebe7267d442b15a285761c92532724014a753f2a72", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "31f11b9c281ee5143cf261ebe7267d442b15a285761c92532724014a753f2a72", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "31f11b9c281ee5143cf261ebe7267d442b15a285761c92532724014a753f2a72", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "31f11b9c281ee5143cf261ebe7267d442b15a285761c92532724014a753f2a72", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "53452f78a82087537e2dc8f1db233d0b053ab65f18dd84508e80f60c0bcdef96", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "bf0643fb0cafa4e57426d11bbf3d3dcb0cbf2cce61bd71c5736a46ac06602994", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5c9badf8c1508e5a1285db2509591e677c99b67c8bca62e25386831146bc2242", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "cfb903ef12b4df898e36f2d74446fa0680f0b362baa830eb824e33f87760d922", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "6d321adbaa7c75e9c644905a2f91453b1f21e0288537f6a2cc8d7802bdd19afa", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "85ba6cb99117aca5e7b013ebddf95088ec6f3f924583dcea16a39a615c532433", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "bdf89a79dc457c4c0ea7794edb87b991e2cc5e0e96d1340a51a29d1eee3b9c03", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e7a46f1f0dd9f3dc0d6f8441f32fea5f29b3a2601158eac5324d1be70259a937", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "1b9cb45a6e55129d089b8edb18ad0e60db43b58f81afdb21ac1beb0fe86a950d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "7764c1a5aa6c3f28554aca1f7879b4d58f514bea302b8649dda955bb30611b9d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "4dfd83b866ea36df5544ca35c52dcc795257462e354120fbdde6929a4b3bb18d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "3a328876590f61b029d2100e999f6d4e12de715d465f4130c8fcdcb2c171fadb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "c9558281cbd4fe395f538a1bb8190ac11862dd365a104589e88d6d2d7cb11939", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ed0c638007185e1f5147f1157a07aea54816678d86fc4581aa5e840c23f5ecec", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "4dff038ffe758a358b9ee127379bbd36354a5b0e5a32952630842f0262b8d380", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "7fae6bc149ef266db51e53e8573292225948c8a4c84945bb4718afd7a165ee48", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "d3fd155db38caab7823a553e6926aa83ba67b354bd128de065fb068a4eaac214", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "6fa742247b94c87b4e8f0ba975d613d6ea703d6de8225ed91705170715e17dbf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", +"T3T1_fr_ethereum-test_definitions.py::test_builtin": "c1ae143540f408984ba6ef1b8f8f23efc806a8b0cf0cd04ee1b99d0afb14ddc0", +"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "5406818155b401a324815bcdcb30a30d21a7fc3a9f06b970b7db09d49b39bbe3", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "e9470171d89b37dae1592ea1e3402a1edd2b724cee82c692db69dd1ca33e690b", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "a38d16398b9bb6b6c32691ad3ccec30662f70d3fd0b2339dcdc98ffd6a836168", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "f49539c2ee7a9eab9db449ba157a50d887af949f1ee1b6c8921bc8448c9ec92f", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "22bec2e0d07005bbe038f8f4aa9f09597f86b2a26e4cb98ce1ceca75bc016830", +"T3T1_fr_ethereum-test_definitions.py::test_external_token": "d96cc5e60a2a13926903ba278030ce288090828d8c1301298618cfc71ee4ed2e", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "8cdca26ab6c21d77d40ba85f752b84f64e7ff09936de5e9a9e19d678fc4b80c0", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "437826f66a34e8278db977e2f97e54bd8e26b6938663f7ca59005f15b79e9e39", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "7d7b051faa905bbaf809ecb5e5a350e374ea4c2be039226386bf0da786303df0", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "f664b02b1b6f66744829b787519cfe023b321b9b2fe312667e516c6312699529", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "b8d584e02787cef2d3c71d0b0505e479280d99d3b4b280618505f2ba89f3e4cd", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "b342671b2c2517eece4654bf1615f415e5b14314f0dd12788739d4f57c33248a", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "b63521109a412e96a8ff3f127c0c3cf42141c4dda2b86b8fee80a0a4aab2ab28", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b7440e4a2b582264240444dfb00d96f841cad651ac31b317d3f535b726bc7d41", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c1e82505c4cd5c595ae42f26c9daba1bd2e65170e8f6f6fb63613e5a17aa5e13", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "82e565ca6345def45fc81a58847760a8d57c1df424d2be711f9959d8248611cc", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "ce36cf7e6d47e088b9214c4a4297a465670feabb648d5f6a5d96b84cd686d9cb", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "5efb732970956e2c52f5663cd83935f3434e8a7f426a1f03070ec3adb1344a86", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "ffcae19ec12398aec79010504bb203cab6c3a3e4d56e1cfc3d196a441f16c25c", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "23aadd62383ab81c19114336e2b1b7565283ede439bba718b3cf6bd3b95f0d3f", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "72d7886e5034da30e4f60b375afbc23c96edc19daab047c11a6055bb4968e0b9", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "fea175c347b037a7e7814850be66aac336868f8e4ef625cc849c4e8ef48e3993", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "289a65436d4002da608e3042f83abbd724de08fd1b4a6b65d955577c4cd80f12", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "5006797aaf2595800b2ca6889e455f49e95ff97bcdd3e0ec019dbcfd63116eb7", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c9a6fc77bf761eaf9d4a32b30a59694824e8d6a7f45cecb8e4406c4d57d1e79b", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c311cea4ff3d8ad616c049b5feca51eb0d931b0b90a787ce6979c063b01f735e", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "2e00c9036b3aa54495595cd13c6d88d8a6db6ec77e45083570cfbe3a9943cea8", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "92a41d023ea104f6d64ecee2f686f3897f007d45e39d66ad278a7527e95f1e46", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "4caf194d55da76a2e23dbe82e3c601903dcce6f0bd69ea4d625d5d2705ff2233", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c311cea4ff3d8ad616c049b5feca51eb0d931b0b90a787ce6979c063b01f735e", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c311cea4ff3d8ad616c049b5feca51eb0d931b0b90a787ce6979c063b01f735e", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c311cea4ff3d8ad616c049b5feca51eb0d931b0b90a787ce6979c063b01f735e", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "05608aea09638a16f71b677c742714b1014ef7e71de8556b0c9ff8177f9bbad4", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "6fee6246cfc118111e9760afbba7792a7c3e3b0ff072b527cd6a5d6393a26b3c", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "07273d0aa1d7ea4a3b9ff22a60d98114b5afb201e707d364d429efc588d84ee7", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "9d6b69fcaca427435d8730db94e92f3a2f1c0114c92fd6db6258f8ae061a39ab", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "01ccb3ae6b608a4b58f72123fc85aef9bff3668e0f33dd05b79b45f9f57ad6eb", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "539cddaab4b060306eedb535ce456edd020465cb55e90d8cfbe235f69a4327c8", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "9f483529dedb81325ee74c6ff413a7e836d45c467f11e25c3080b6f582837d1e", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "c595aa08b059be6583d584afeacc72d86a6b456750d3aea41bdcc843427b6148", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "346b88667dc9cfc6c56d78b098b6a63fb9cc43611e93ceced3a8c086f4455e37", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ecab1c9cb17d62556f1509da3bc5b9e9df347bcae1b77068f134f8d75508ce06", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "78c41871bcd623e73b0b165c861e2b330c69f463512cb491b869e9a3528184cc", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "a57dd32dec963d92236fd5302f6131967b1691d53bad66442b16efec76fd6295", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "973a35eea9767ccfcd70cdbd5baa567f9e41c9080d475a24c0bd8dea8bcc177f", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "07ed8eda51eb361c1f9880b8a4b62332a719414e23b207394367747d6f4d8b0d", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "35da7f7438019dc5e1a4a693a5c3110b26cd14f597e2ba443a9cd6c72190a6c5", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "7188718809f517f84a1d49d22d5a3575b15ab1108f963f847867ef9488497324", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "35eaae569fcb64a78f772b62012b7fde330552014506042c011dd410d1879e3b", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "a3214462bc208d3e5cd13d3956d3cf1edfe55fe4815aea96c81b911d6bdbcde7", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "78c41871bcd623e73b0b165c861e2b330c69f463512cb491b869e9a3528184cc", +"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "656c54ef5f8a22c3d3181f2bd293aebe3de52d9f46c24948f467dda1a5df9d1c", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "0e6cec8099ecbc07d167d46a9014511baed82c8f1185bd2222255d3c3d12f123", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "93d6f2251cb2b3ce4663d3d2dd378ecd9836651f4a98277771c921578d6e81bb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "115643e62c52d365020116724f281e7da949ab602907eafcd3923cd60e8cc17c", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "93d6f2251cb2b3ce4663d3d2dd378ecd9836651f4a98277771c921578d6e81bb", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "dafa894762ed9dadb04379eb87276a5dc05313ac0d7e072eeb326bc6bd58ef86", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "dafa894762ed9dadb04379eb87276a5dc05313ac0d7e072eeb326bc6bd58ef86", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "c1bcb4f84c1dd5b5c992b5399a7a15c13bf8929f9b530a09ccdc5e95c0a9628b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "48a55883513f4bfff1548bc883f8d9fa126df1c81ee7636215fd09f086fb5bb0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "12670a0ffea66c9cdd5965257ddc0f35b8380c0fc86bb421e9b3612d6f05dad9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "918e75c64960ae81a360d66639a49fe72f878b6b4d4a0f35aa6309e824e0a1fe", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "77305883cb99b15f23dc207863d801d2d7cf4628a873b9033a6d98fb8e0e9574", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "54a7e6f03efc0cd9a053e5b022cd5ee82007c9b6c8ddbdc862fecb8a82a6a5b8", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "663b60e087b59f887b19889e22dee1166258c442310713470f5b4febf93e2559", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "8f669ddd8033fd985e3368f405c12086865af4ea242c7a97d67713e1aa389f02", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "01342dfa184dd0bac834926655c1cac557bc692e4a4d6989030f9daa35cc6fd7", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "b59f6ee248af83b4eacc31cec3ee938e174faaa0ea84512ee88805b25076bfc2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "01342dfa184dd0bac834926655c1cac557bc692e4a4d6989030f9daa35cc6fd7", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "62ff269e402fed96ea403e6394c8332106e14ed396f1b1a3d502fcc691fd8230", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "62ff269e402fed96ea403e6394c8332106e14ed396f1b1a3d502fcc691fd8230", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "a468b75a352b7f9c707fe888e42798f2604f1051465d6b45d25360f63273b9a4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "6aa9dec373c6c39bc5674b01b318790fc74f422db524bd5d39cc20feb201b2e4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7210084753f85914a63c9185eb85e20be20fc2d10b4a4e06224589b2fad7bfcc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "918e75c64960ae81a360d66639a49fe72f878b6b4d4a0f35aa6309e824e0a1fe", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9007bbd3ad9c71e5523637200cb051c3f85fbee65b090da93edb3ba11a61193d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "7ecb74c79a3c1c9d8dcf6467e779fd5169147e001b321410054c6dd781cee82d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "0f9dd6747418f439ab4e46072cb48ac71129eb8e1673e9cb321b8b831b145ca0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "77305883cb99b15f23dc207863d801d2d7cf4628a873b9033a6d98fb8e0e9574", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c1bcb4f84c1dd5b5c992b5399a7a15c13bf8929f9b530a09ccdc5e95c0a9628b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ababddc21071a446e4204147428a92f6dc763acf972b7d1ab4ba23a1e4345544", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "12670a0ffea66c9cdd5965257ddc0f35b8380c0fc86bb421e9b3612d6f05dad9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "1104f5cf9d2dfa1c4ccdcf42d55aed69a652a40fac0f40c4a903813c92d83614", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "3a9717111f5ad2d355927e8eaddba225d1be9281b21b8830d41e8e7bf483e225", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "77305883cb99b15f23dc207863d801d2d7cf4628a873b9033a6d98fb8e0e9574", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9007bbd3ad9c71e5523637200cb051c3f85fbee65b090da93edb3ba11a61193d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "a468b75a352b7f9c707fe888e42798f2604f1051465d6b45d25360f63273b9a4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8871f37513aa191666338b58e596c4a39061c57533893dfb5b23ff5b1e54419e", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "7210084753f85914a63c9185eb85e20be20fc2d10b4a4e06224589b2fad7bfcc", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "df9e6f098b192d241d2e0c751b751adfd59927948c673662c570ec4441a15fe7", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "ee5fc33198868cac13196084172d5f709694d0eefbf6786a2dc9cb5461affbee", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9007bbd3ad9c71e5523637200cb051c3f85fbee65b090da93edb3ba11a61193d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "49a431bc9007ff24b2fea9600bbab0824ce8096fa6da2d43f3f0b29573ab3b8c", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "49a431bc9007ff24b2fea9600bbab0824ce8096fa6da2d43f3f0b29573ab3b8c", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "14a88ba4ecfcab93ec9756fbe4feb856520607ba682c72eb89c308547a6c5370", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "926fcda43586a593fe354d7eff54ef7ba468e6bdf3e80d6c5bacd6ca18cc0b67", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "6f2f12e0663512e764dba171cd999707c2b1cc2e9927704a9f3e6aa3443df3ee", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "6f2f12e0663512e764dba171cd999707c2b1cc2e9927704a9f3e6aa3443df3ee", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "df86ca835fc00e6d508bc55003ff1a16e0358f9af4fdf8acc209959a246c6b35", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "df86ca835fc00e6d508bc55003ff1a16e0358f9af4fdf8acc209959a246c6b35", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dcbb0efd6402292f5e8c7d1da9b5cff32d7450111dbbc779290200484192a3b8", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dcbb0efd6402292f5e8c7d1da9b5cff32d7450111dbbc779290200484192a3b8", +"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "562c43449765a3b8ae3a57093233aeca3798b1f70ea150060994490772b0f60d", +"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "562c43449765a3b8ae3a57093233aeca3798b1f70ea150060994490772b0f60d", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "7336b0a7d38e28e55a4b8a5748cd2f33f289c7fcfdd9885374da6fc65ca71782", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "92652ebd64d41277ab6716f7b58d817f4a4114b23cf62ee4e7ecc39998412d38", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "e04cfe49c4a7704be5a57e5704eec01954868f80096e0ac78f934d31451a0e8c", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "0412970ccc3ce666cca87cd7c6600952be40735fcfad68bcbd36dc965e24390c", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "c4a45368ef8076c90d1bd7dbbf3c0ef9b8d7726de41608cbeaf13a297ebf0b8d", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "2569139bbc3b5165e725ee09126bc5405cc53db86fee8611b6956a615935408e", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "82be29cf7db7e54e61af3795605bce50ae46345ee9ce5669665e8bdc914662b2", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "6fa2d65e5b95b15068042c4ef32e1a68947d29fc8bd90acd1eb91e1cabe9388b", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "d84b68c067a3f47558cac8f97a0182ca2db6b6b353265abd488c4b139047772a", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "117a47020a545131d5b46e0b1648beed8e5b5da7ed741741850b96af3ed02ae0", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "fee93fd9f5a52b6527ec260a06349b338ee422f4e62400cea2303af0b5f10d98", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "10e967648565469b273da362f9f516851dae0049437a8778464b7dcb9d543cb6", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "dcf1ee6366f46ddc2922dc03deb8cc17b4368419d9ea83cf61f9573e10993aba", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "046dfc5970ea20e3a20bfa23676494d6d1e0ee8af5a0cb89db9e2e565e1989a0", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "c1a967e22991ff07e9a010433812afd96f693bbb980aacdb4bfcfbebbd5b3906", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "58b596f923d7b4c107f09953574342d727a9a665d47856150a681f5f0f2002ab", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "5170e424030688b02d69287eab6d2ab6b9af03f50a3579d78d3e9f0534bed7ab", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", +"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "5429b341abd8dd427710839e53b5e80c567b1ad9fbb0e80fa5e43cdbc0adda8f", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "13a1035d7725ed15303d4e70cd9bc848784ec09eb1b259e77b399510a600b0f2", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "866934a7a7e8d8381a709f6dcd7dcb9ae76ff464408c62ef5f1620e79532837a", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "08f2423f20fee46a518825324efb66aface98ecf9d77084bb0b41b863ab40259", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "030220dd4b8226dcfe14fe076f1c98f5d7b36f90af18575da1261b835ac953b9", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "da75356b6f4f32ca081b2914b7f21cef5c9eafd0b712655a435275462b159b55", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "b2ba141729748cee3c6e60a7de17a849bc14c559024ad8688708a2c32aaf3206", +"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0c211bbdd9c4f5a1d3c0556f2fe91e2c1bb91935650dc7472a354aa5fade13d6", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0f802f5359c3ef63c68fb8218a94a3a94896bbc6c204a614af05935585232bda", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4ea62fa2dc55e50d5e840237b9de2ba48ce61cf1c82ac477e22e87e4f4ca3708", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "33372f157c7beb0308b0e74c16d85c4335f4413343989df6b27852c8f24c7585", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ca390ff6af2491e27399ae015204d05717a23b1d2a50a59a4e49726a08f6ecb7", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "46d4bc535f95e497ef941d2ff1ab4d58a7545c0893ac2b366440423daf5c63c4", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "7dbb489fc49e9d04859b40afadc01f889591023578b2020dbbc5f28b8f6aaa9c", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "1cfb07f1b7ac835055849c9c192c754f329dd56f9a2659a901510618aaa65883", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "47a22c6271ba2c8e8ffe2b5e2546e90b48299fe08eb38405b38a2142feae4711", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4c82b3bda6e04f1737d68c58e16be6d9b4b845a65c192ae15b4a5fe02accfbfb", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "53a2fb2ad71224bad0f7dd12c89fc5c1a8b91aa3a76cbd7fedd2330e9cceb605", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f82bb2a4ce2ff99348a752344e8d9460acc4c2094c35395044efe6ddac535118", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "782c0d1ca3189142777c5a2089479860c9fe97ee19d676535c48aa31e1757dec", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e9f284eee2b92ad97815905b1847bd4f7a10485a57cc44a3bf7d1f7f16a8e592", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "b59478c0effb14dae4dee21b04f7ca8f94657524b5c52026020d44acd6c7d560", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "1135900b6d5b210833e60db1e4137002a8c4f0e24cb8aea5b645c93691a6b1b8", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "7dbb489fc49e9d04859b40afadc01f889591023578b2020dbbc5f28b8f6aaa9c", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6373ad0f80ffa8a2ff54740c15add0150b0d8271ef719ed27f8fa82b3b49d4b0", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e6931efe7a24ba44ac763465b1df6ae32aba5e733ba399032ead05819c02093f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d8e712af3fb025e88073ad8adb9f92a39cab6648b8cf7b8c11f884c5e28a3cb8", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5dc2e4a971260fb070753cbb4a3e46bd6c1ea57fd169d01f6125f2a061c59e43", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7c1c912388ba5b959c29a588ac9516945bb0f294eea8590115ea2f74e14dc906", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8ea4fde6edbbd251f7bfc276c500ffcb1553bb98cf01a8b7c64cd450d0bfb223", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4e7da46e1098ada02c7e3ce27d0892d02b8e4fd4a87e02fa21cce1ee84271f3f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "be7660231d866dfad9d3dcab2cee0d64879905ad19c218e0eb538b87211b937f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "55c92a05e532e0065c638e409deb36d01f615d949bca02556b4e3d8c3f4b77e3", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5ebd165a7e3ae3e3a7b970dd26215d223b4f7c38443c3bb3f7bea4066d84fbb8", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "c0fe93704a2d57b9b9df184b96b903faf8f0636f58937ddb84b74b665468b99e", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "78a369b184b485eb2653a48edc07eaf5a8aec32691ebc21ef63b899aaa61c5bb", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "9eaae8f66bccdd48933bbc7baa8e7d34560099cdcf08e77f7c4e69bc60e46b0b", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "97853845f52377892d6e214f693212dfa95572d05f0c02df45d0d597a13d0e75", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "47885ba27947c85b7fb66277da0ab6dd73b1b3d8c23a76445c802bdc95decc7b", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "43fe7ff7dc29b9d4b99fe986ec479ad4404a81faaec3fa69a20e7ae93bad4892", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5dce331e9668899cd6ef6da6e746187a6a81abde78c97c1d5f9e299956a3f109", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f53372743acdb56f4c1ff725db25fbb6c93f0b5174ce1a197a85f1186e3f3f6e", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "66e6e1aa2e8ef902b1701a67d7973bc637d127dad6f0fc0d7505f74e01484c6e", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9bbbe0ff07daf68f350f92868567611f11a1d61c0f25112bf45df199a42ff06c", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "16456784878ad824bce8c43ce91f28a5112a1a1aef4836d0c2827fda6b976520", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "fe98a9c5b6023f91ff4d2b054f1676b62c5bc3b44dc6548ed88aca70ef9b964e", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2e678df14411a1573f4c0c5b9c5486ebb6ba50888f5be574e4e15849b04f7389", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c7a51d540ad145800233cd7c5aa3359a0a874cb8f970976690984f13b9699551", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1f3033f6b65054b4fecc76fc2823be72859a4cfb26524bc63bd30a4bd98dd693", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9c9473f105029468077268a35f358154f67b24c72358980752ea206dc60eaada", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8c5417f481657232cfbdae778ba0606ba2676efeb511276fbabadc15bb28f8e8", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "10401c667d47d04fb4eb4086dc76bf6cb091883a961b0c1183c9a02595066e4d", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ebb5241fed461254913bbd4beafcc407c75a7bb3def990ce36639727e2ce1090", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "33057aae7d93c8c4125b2e85e147c2dae9ab79e58d936d199877d2452b80bf2b", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "41a7ae0d77a8d57ffd828f80e30f7f8bacebee34fbf0a589b8c3f85800330f47", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "06e09c20af28bdd34b337e90109203c117b9c1cd152728cd2ee112472ce5ca60", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9ad3749d476ec1aac07d466d3dcef6b461f363da81b47305355aaa85d2a77ba1", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e4a016649e3858a8fc31cd8779ab290bdbcbb01b517fa1c281236fcdb9817a09", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "bb27e33ce230e1724085995c263046ae2b939e739827d32af0991c74d20e6f53", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "a48f7e7d8417e7bc864ffeb9a5364152237228d18616e092f7f229b48c07277a", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "5a098e683fa2fb67ccd3e662f831ca8e603ae4d47b7945edea61419757cfc73b", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e7282815b647fdb64d08bc71b56999584a74b9354bf4874109642699eccf00f5", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "049862bb3cad64e6c4c72586b69ff66ef26e6b5bc06779383240c4bafcab4049", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "558f7392a0f84f819abb3106d88085ce8a23c180edb740039b005b466f6b3744", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "aad2780a42ed7521316c9c597e6b226f23862a527ded70ace4d5a3d2722768c9", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "049862bb3cad64e6c4c72586b69ff66ef26e6b5bc06779383240c4bafcab4049", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "558f7392a0f84f819abb3106d88085ce8a23c180edb740039b005b466f6b3744", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "aad2780a42ed7521316c9c597e6b226f23862a527ded70ace4d5a3d2722768c9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "db3a30bc6a98b76ee5777696c19daf4199a53597807aab264a024d01a38f54cd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "cd5ae60066bec8d60552249c2b8613a86ead773b49edb7a8ddb3712d7ac87030", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "1c2ac5642633b2bf1b3cfb2f5f8bd996f7a71812ef9bf83ef562e005413fe7b4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "13cf94d4c0665d911195fe31558e2e552e6d1dc6bc980dc32b32a1841a546539", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "4b04c74f5820486d629872a9b4c57683806ef26ccc595761652ce5d8345ddc26", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "be267f07d30b8aae57c7f5ee549bcd55dad93057a8b6cb244774eb80b2d075f8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "97513680ae8fefe106341273531a034ccec5e4e2a4be149c6cd4f929afa8ce51", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "aaade941387253addfbc8f37c553d0e07eb43d42464f8cd547d42fd66335db99", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "5a16fe81294bdc0c3b686c83ec00b4828427bf47502487a4f8f0999eb6a22c94", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "04b4bc332c834c04544e12a719275bbab5b416b47e6ff786fc483a23fbf44a75", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ad37b8fa16c530329e50a0aaea75f24459f83a945b5a4bbca108c5e2a0bb22c7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "d1061c277e2a1a58eaa290de1c5d04f5b87f440855434ee34f903741e2698d53", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "4cc558bda4dd45fae6dd8a1c433eadb301c082bf7e7a429c5232072e1de43d61", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "328fbab44be2033e9b65527058045ef735abba0c62ed7ee8850a3b6dff975582", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "547676db574da787dc40d6eb38cd94a3de48caff538cf2e30a70106408e64899", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "a4b24047e66c654a9227d37dc2b3451fbd46c8d87d3925e2ed3192cd2fe75d26", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "46057b6e5aaf68b53b0ea0e41cf2afc7124ce8e6b9304e56d554dca7194464c6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "20aec79aec74c6177f1425b1f8251987a61d75fd80ee4cbf1f1edce6fff8451c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "49df299f125e73dfa35c177d3d00c0afa5040eb69efc69516d7ae9ef9b7b5c0f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "9eb7f1c90cd6de8f2d4b0c1183504761ca1edd23373a8e9cb5758f6decd4c655", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "4e949e2faed3188fa155131c00cf64ed853e361f6c78d79060c0e24b7f186358", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "4e949e2faed3188fa155131c00cf64ed853e361f6c78d79060c0e24b7f186358", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "5f5b0613ce4949e6c4b4a09d028e3b7b8b94e27d57b439d1b5adf14aae31f07a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "31a9265d5f702e5c1edfecc73a1c625f6f465c6746e43377548ad4b63dc3e669", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "8144beaf56f5a91c3a8e1fd02e0452826f793e5b5361cf7bef587d58e243d399", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "c94394dd2147f8573d65b89c2e90d413e342c245150086a4633abfb7b9520878", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "f9a8c48463d9c8f8f252deeac9ed3d2148e996017aabe3c5388dd6db44489942", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "1d8f9d241435776322d5f6530769c1d35254a140fc7d150117a7e97cff140f0a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "77361ef217c9dd51abb0199cfb3247ae8a362f4f884407549e8eec8ead8adbef", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "67408d2de0c2a84e3546dabd117ac3d69d0a9af7fd9ec2f1f62f9fd03ee5850c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "aa36c513e57c7c0035b732edf9924a2804cf1d26c3fee353ac86bae45ee08d41", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "787b195e19d57a49989e9978fd1b33f5ea55c06b6505ae0de8ea0ba494ec5473", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "8f400b15ae26bc53e3a9f374891600aaec1790d4d2fa4b7f321c90c3b49b0060", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "52cafd142f482c8b2f44fc16109467801ced01a412adf11d3cb667044be254f7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "073be731df292bb9fab7c439a7c3ca4b945f567577cfa212fbfdce9a405b162f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "9a18fce5d5c2c4c91a9ff0906e438a6acfc6f7d16f407c02ad67a4798a0a8243", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7e7d5f0084e03eb9b8c7af322b1bcf52666bc13fa39a6a4f881ca083058ff534", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "5bf41fea8ef21d4eadc6ea1723c54037751f3d9b80ec5401b51714ae14c79cef", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "3fd5850fa0a88979e9aea25d3a69d02badb3e4443fcaed5e4a5532e152120e01", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "1cdcf983f739282d953f6ac9d05b09fe4446a1b0ee880ef7dbc8f299832a989b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "0f2ec7ae764ce393e9157dddc6ef493c0863a8e1dc0ca49cf885a17440085abb", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "f471e0c311798fc2e9654f05af80e34f0a72ec2944b4337e887e4550cd686573", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "389896b4cc171bb90bdd547efa5aba5fdf257e0cc09eb4c7fb417b0d2e62c6e5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "fe50fdc86e3d8ed066f4167a67e06985da052a5c82dce50e1d97110d6083825f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "077df553fd22004e6210da7f7f06194fbac2fd9d28ab95211b8b950fc8356fc9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "fb37f79e8d7d662197342893bee6c42015943884f7aa93dc1fe8ec2b5ecb9dd9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2b40436a2a0c3d5132dd687eff0ed3874df2bd9b6543608d5efc137913de1987", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "5c540196546a02b7592f77a7beb392d7a2c19a0d472301570489e8e73488c5b5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "3a0c2259776fa99160e2985fb363d9f0d4fc084fb3e105b2c2ebbccd71e74cb4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "ec8d20918fb36cde0f59ff943cdf0d229c56048722f56604353ec39914f91587", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a5466934521402baea31e9066f60dd93a993372d8dbd7fceb442b94b6949258e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "0b506e4d3c02404d7239b6fe4678da882bac1705f59c14d63a4fa5943866ae42", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "da9b454e88a1e0a79b146c4159c1a1fe7c1830c855ce280a980af8c4d36a399f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "c9e4cfcc5def134e749a8c472406271599c9e75e040e9b74bc06f2d18796809b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "1aff9862708fcbe2678163ffe7a894587b1ad31f688e458caf74f5b5ef80ad84", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "1830a8ebff806adfcd260a08d8a61206767bbaf47bd5d9fb4520eef5434e52c6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "0a73f97cdb36d6dcab47c34fd04d4bcc93e3bd7204ca87ae47d3fc7210bb0eeb", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "7a9c776c6a1d4c8a4c6e6ea0539340e501ed12e993d091d4c8390327974e7312", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "d84117ddc3273708d12f271332d1d47536d14f10fad9ba5e8bfd2221298ac637", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "8144beaf56f5a91c3a8e1fd02e0452826f793e5b5361cf7bef587d58e243d399", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "188270b97e75e50e97ee9ef4ef9474a99326e082c3dc2f2376999376b2533a7f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "7705cdd11953ace9c8f737d2f72e6888e163e026d16239e9a66a760e5ef89a5c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0b787dd0f790d9c65f27f00621bf9c0d5252dfa00b76bd99fd5c6ec5d23e8272", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "1a9de89a68e27c613de78889c50e791d854dd7d744b0b200fcc7e6cbdc90a7dd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ab816687290e0f17a3832ebcdfd1f55161864e187ea3272087ec88568dc7249b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "3885f37ee2f5b84503a736274c49f991d46dd931530692b5ba054991f90ee834", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "bb64ae75315b6b84732ac9ca8b12802b92305872db2f62eb0aabe4aeb3587149", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "b48446801d47e01a8ed672f3a3aacf9b2522589ee6f73c730a2dd617a1c395b3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8df747d8c9759e1dddd445fb4a0588efb1fe25c019d0dbdc9243662d0141f735", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f6a16dd848c7618d7ef12cb5faa0a661e0826feaef53c265bc7817e20fbecb13", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b685419e98bab1a140280ae7f326f2682670979e468afd136931a8b00e4b8b8f", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "2227dc871cf14611b4d691942718da937776d9c1974cf4379f2744e473dea40e", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "6a0de998714918410a48501923c2c8322ad79f82fef2c4cd4d510cfb4301f75e", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "05f3cfb296e72167023c242c65d118a27bb8c462e5c79a7020917c4f609e0598", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "f82a8270302043512d337f84565b9de31312313a4e66ec86e434e34c5ea8e612", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "526cf01aad11436ed589ebefeb2fe872daf066867184e38584bd5d63cd6135f6", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "f6747b36ade9bbd827e4abdd3b7e46cbeaf154e3f84fabec9dc57329ff82e69f", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "93bd4efc2660a764b6c78c3bace4b5c1f69dee870eea59538b538e4d6fd1eb6a", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "2bd4014b64e262b36ab68f3046490d252ae0947fded72e3ff2edd6381bba3468", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "efd616b5fb652cb72a0c099dd069a97ff50e7d1c4fd4f43bd899edc39926dc58", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "e1b43aeb9c858fa153b74301c5450d2b8769b998aeaf48e4d4a48e972b85bfc4", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "aea313c64f2d70552da29b97297134de7c9093481edb3d3e5ec7d700e52e817f", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "61ce9c932e38c8034d5d0467a29581080ac2ee2a7e7a248c0d8083fc1db6d2cf", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "8338ac862e6943331f6b881577a1c649857ec15568f9735433e4aa717d839e33", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a56d2a4a071bd28ba9498cf6d199c57f2465144e7a7a9b1cc1fe5e4b93018a9c", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "1479bbe5c48d3e8f9d9bca2ffe05025bde98f6eb8cbfd265065a209364e5f184", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2976b87168a10b87afbb964a639520371f44e8251d2ecd1e27596185e29c7caf", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "5b4a05c1b9d87752cf12d897e58aa517397b65a89188a9228730a470f953fdcd", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "bfbf291285199d469c9e28131f6fb56ce17db7839a3f99477946079354f575a7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "65c0ec7d523b23c68dac3b969325dfda612f843b2ea4d34d722375b45d3ae097", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "532a96ae734c986395962fa6c1c84b242f1af04b21647f49a7b6c1adea71b538", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "63945b2be60a95999ff4b214dc679e4bfc47b2d664348f3316a44d3c22b8b099", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "2866d9c415e2098095912748514315db90bd52d8b94437848937cbb9e9640b8f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "2f654f949be88c17ceebdf8949ea27489299183323cc4fdfc06131cce1d03132", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "5df182ec7a3950fa8d73228c334348268b0a2a58319c8a29ea0c7100bceed818", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "98f272f8efa0ca058aa052b20995fe4728289c20f25dc44c440d8d9aaf0a0df8", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "f7b6e13b6953a4add061d8eb93f58bd50d94dc584655da0707aa623c60e70b98", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c96d848ecd11007df2c9dfe4a92cbd480641095520cf0a77a433135a3b9695ec", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "15d638c5a3b2e16d62111bda8b5f5a94b03b751d1e27b9ad177843aafe32cf6c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "d15943e81516490f7e5740b1d1fa1d45a5c0eb1aeae83b4a07eea860899136ad", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "7d886af6a18ae384625cb3af71bb83f53e7952dc55dbe258cad55e698268db22", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f3bdf131a2f9fdc13997f5f8ccb3a865acf6794b33ab33f69bee90f33e1dfcd8", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b51091f6d83db15dc82fd6bd4167484c1fca176de09f6e892ea07d4fdf29de10", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "de866888dd748e98d5194c633fd57ceb8a8cffb832dbb4e9572479ae85e5a205", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "bb2e6c9cca112362a834444dc3448dd0439d65466b0f77a4dabd769e3f513243", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e94364041a9580ac17009bd422a79a04371c725b023c344d540dd63c0b01cb70", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "2dc31115d348d35e17323f71043e0c1c9e1344415ea947688c704bacc040088f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ee5f291d9746335e6667cd228e9c55fcdecf6520b3dd93455ed671d1a8e3b6f6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "ed52879e58ada498a5aec4be1b07e19a7e43321652e2c43931b35673e7f7df7e", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "35a30e62da1c9af6c9e36b95d834cd53ec021201b5b5b78a92a36ff55571b72f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "1eda5d1de67b1957a8b15da2a86aa39b037564a0044f53aa4861647a55d48c37", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "06ae8ced45716c7f97346430c4c9167c772634e9ecdf7abc7493b5f9d8c8be7d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "8d4747a03e5c4b553f600bd8532aa35e55696279681d86327e0db1db6a486ab6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "b4f2668d15c90fb4b91a95b0d795c626c3b358aaf0b229224fbc45d9df15cd9d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "2871189d8c88fb27152f675e68be10f23d4329ac40c001b43ac16584fb43c883", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "44d1cf4cb67011413f07c23ea36da4509fc3926913fb33eb678d0f35986c51fa", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "bb3a68bf85182e602e1dd36ff80cb1117a6dff8a513072d5459eecfa08823253", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2cb5014bb5ea9037f269776bcfccae02a73cf3a6910d6b638745bf5decc538f8", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e94364041a9580ac17009bd422a79a04371c725b023c344d540dd63c0b01cb70", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5a8eba40e720a2b13ab45651e000e0d4aef20da2c917099a7cade728b2fc1f0e", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "c902023c17a2ba211a7d67f735fd4fbe4be594f0d3524ade5370123e4d589716", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f5eeba19ffabaf48dca84c7624a3e58363a9cae8c67fd568e37780d7bbb31285", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "1ecee3d6396763cf214a56219f5aea9252bdc74a96b12a40d69a695ed7a9df11", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "b4937b89f0e33d5c92f4632c824b1aecd422984998d6b840fdced58d400495d9", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a19c1c1978b5888e8785be7853e8ec497b009964f2420b356de0d3e70f396585", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5004da41288414fe18df30eb15418a4f6509d51a34b58c40eab0fba9549d2e52", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "849dda5ffd57f93dc37451f2038c1fc3b2c0b9c482f67e868f9c9a91182c8045", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "92231efd268e4a0a2209075fa5fd3c8a50a3aadda0d7105304d239981c2e1fad", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "eed5ddb868c8f435f1457ffcc3d98a0978dad76aceb483b6ab7b7c9558139a57", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "c98c77aaf8c0436847adb04a1f41832c4b5d468df81ae341cb70a73c7059e535", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "c98c77aaf8c0436847adb04a1f41832c4b5d468df81ae341cb70a73c7059e535", +"T3T1_fr_test_basic.py::test_capabilities": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_basic.py::test_device_id_different": "24cc2f8c9a1d1a6ca836057248f8601c2659e238ecb31ec03b2bf566ecfe4d54", +"T3T1_fr_test_basic.py::test_device_id_same": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_basic.py::test_features": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_basic.py::test_ping": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_busy_state.py::test_busy_expiry": "84cd25dc854499ec9f3b61828d717f723e0aaaede31edaa23c16b120e2065969", +"T3T1_fr_test_busy_state.py::test_busy_state": "30b666a896f35b382a677d0e0bd49171f888aa9dd669a5742c006e38b8e238a2", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "c6e0057ec153cba5957ce6061f87cf66c51463766951cb7634399c2b5d4b6447", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "c6e0057ec153cba5957ce6061f87cf66c51463766951cb7634399c2b5d4b6447", +"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "9d84d8ee4c098c156248719e20bcec62b950d7e1371c3fa0dee68001f827a034", +"T3T1_fr_test_debuglink.py::test_softlock_instability": "5ceb54b40b7c17ad769404a8ea8cf1f00a0f661f64887a93f4876e4eb8cb5459", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "9d6027004d77af136656d8621570fc0d9063c7cbf6056fe80c2f5bf636de30c7", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_language.py::test_error_invalid_data_hash": "30a4d490f3318239565869520656140d25aa91fb9704e8b5cbee74ccd93c39b9", +"T3T1_fr_test_language.py::test_error_invalid_data_length": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", +"T3T1_fr_test_language.py::test_error_invalid_header_magic": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", +"T3T1_fr_test_language.py::test_error_invalid_signature": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", +"T3T1_fr_test_language.py::test_error_too_long": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", +"T3T1_fr_test_language.py::test_error_version_mismatch": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", +"T3T1_fr_test_language.py::test_full_language_change[cs]": "7dbb81ba53c893ad6eb923ba190382406978c4420fad9a53ac2a968f35d2d622", +"T3T1_fr_test_language.py::test_full_language_change[de]": "626ac41668288d1a32981f9720b6703de64e64ce6b3218c2012266e5d9287671", +"T3T1_fr_test_language.py::test_full_language_change[en]": "64f789ee9946f26bc7cbec1097c01b803ade2f06adc8c9b90cd0eed6a1d2dadf", +"T3T1_fr_test_language.py::test_full_language_change[es]": "102b83872457a9fdeb0e6147ccc21b18b8a92ffc413b12663e02d3d8f3d24f35", +"T3T1_fr_test_language.py::test_full_language_change[fr]": "edcee0269b26c8eed88c73ce5aafcad0ec8715ef16369271329d9836b683ec8f", +"T3T1_fr_test_language.py::test_header_trailing_data": "2a51f97ec8a9bbde6971d617e919efc5fe89cf6fd1ba0545649135d36476fdb3", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "b317e5dfb572cace82fea582efa80aef5e5efdd131038fd17469829193674017", +"T3T1_fr_test_language.py::test_reject_update": "55cc1dfec01526e8687b104387261b99c637f8ecfa14c341f3b8bf6081c571b2", +"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "90889a3769463179454d8304ecf1edf4b07840e96e51b7b485b47bb3c14a6cd2", +"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "90889a3769463179454d8304ecf1edf4b07840e96e51b7b485b47bb3c14a6cd2", +"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "4973b9a4a346ab08ffd6ff0c46b2a869f5952d5e0f95b6bd7a72af23723816b8", +"T3T1_fr_test_language.py::test_switch_from_english[None]": "d3a60f293498eae171a770ef7ed631693544bb64a3a231f98abae578386a0d8c", +"T3T1_fr_test_language.py::test_switch_from_english[True]": "d3a60f293498eae171a770ef7ed631693544bb64a3a231f98abae578386a0d8c", +"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "d17f1d5766f9c047f14e86b448fa012b9255426665eb973c3914a2bf41a2f894", +"T3T1_fr_test_language.py::test_switch_language": "b8c02677d8c91a844146904387e3fa204733e59ff129e6707c011adce829b36e", +"T3T1_fr_test_language.py::test_translations_renders_on_screen": "e57ecedb711f69e23e25b10a88c79d4374c6623228a634776196665d098bf727", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "ae8a5acfaa391f85a1ffa2a55fae1e4c8a37ba785322b27e49d236411656e55b", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "1b3e706d1b75c75ae139f2b1a4eb02e66454283af5fb2e16baa99997b6a5d6bd", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "d74e81387368b7b1491ea6ab2e9366d0ea4274b8ac7612d374449253085e87d5", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "67c7be4b9522e1b5151b6ba2dd8aa0677bc376e8504e165655744f0a9911ca82", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "10fac101016918147991c413ac26bc5107d3ee74d6104c80d9793b4ba34cdfc2", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "285d51abed07f08cdbd9c6ac41c88d4732455eaae3ad1cda839646df601873ee", +"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "916649cb2da7c0e3660763bebadbd3de71d107b29a4239ddbfa581f715881850", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "4bc48e6f1279014f299c4f3cb4a9ca1316dd0267f4eb4143a61aef358c3fd487", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7c18286bb2d247ce2f5fe65893906fa16d4493418456d1f6ba15d264ddc66b01", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8c5c4bcda213599ecb9fa2bd84c2d4b0324a442967e9388d3a235e5edc17366d", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "98d9f3473e6894f7554025d37900d6379336c796f0874aa8e947e8b75c01257e", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "822d298a34369da898399d79f5e8e54c578054aee30652b9fbff90e759cb6bfb", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "af35bc713d80ebc075a958acc7b1269c2e871b0fb6edfc353ffd74f8d73920f8", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "aa9561b1acf9f37ceb7b8c464212ea3521405f1301628612e8611b5136fb04dd", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "4f21ea95d722ea7a161051af2bb24e14a24eb0c972d79f83c2c037c6fa8e5289", +"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "b0f69e4210b1218889ffd36920a253e7224dfbb09581b76d47be583e1f6c7abf", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "bc64bc809e1294b4b1fcb2c610ccbc4fb2d5e235025710294c10a70f5555339b", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "7516edf5b888110c45fcbdba23b199d3bbe6dc13804ecce21b9971ad6499b1ae", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "91a0d6ddcfcb8adee946e935fc365f9704b74a1b0c1e9ecd3b4f814b0ce1e6b3", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d19b5df7744136e04f7a37dc4e435187872a8b343696c168cd25bf4bd2117f51", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "887d7525f06f75b7e2c7f29020c41fabeba7275f4fcabe0833760409322ff38a", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "b25b76335353fedd8e4dccf65ebd34dc112ba712fd04134e88eedd1d2e3af9ab", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "8039f5d122c82e44cc80457b567f2fbd676b2fab50bed552324f4e6ec14dc5f9", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "9061e3aaee2331508d8410d211d2c2898e6ca4f867d1c603818a8012f4d96da3", +"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "e28fc9de0a3d18c516cfa85439b2515fe4eff8a35d91f70005401b0e949e20aa", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "90c703b726313b016fe92fd718ad38fbdc552ca5e1832f2ecd7b02b1f9105f53", +"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "ceb7fc910d335b69d18d841697b589a9f3e1547948de83303cd50674d157da0b", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "90d63a46c40fc23562156fe9e0c791fb9af755d69384c4c79a8441284456b0b6", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "31726c87dbc7d4a0562d08681a46b6fc42430a0313a0b10e22cf04b1f0f6b77d", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "43f125c2f1c277d0c72ee1145164bcf2f13d74fc2adfff73b3aab3f37545e428", +"T3T1_fr_test_msg_ping.py::test_ping": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "89b9e5246d1af047201ae6765efa5b719c0c787ba3b9df546467f12078edfe4e", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "db03b59d8c6d83a5eddd0f418b3f73c8fb647b01ed1a1e8216f947429ee4ba44", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "79aea26e05d87ada486aec4f2a80fd850bf28a3acdda2ac4e14971ebeeabb1c7", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "eb7da940724e56dc9eff0547a0e7e058ed808adbdad75f6c71bbbcd4007edc8d", +"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "24cc2f8c9a1d1a6ca836057248f8601c2659e238ecb31ec03b2bf566ecfe4d54", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2fd8552441cb399591fe7a7d9380a0122dd20620c98e1a3e42be90e97e3ce709", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2fd8552441cb399591fe7a7d9380a0122dd20620c98e1a3e42be90e97e3ce709", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", +"T3T1_fr_test_pin.py::test_correct_pin": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "63b60d483de9ce91a00f95dd52de03f45685b0ea4cffed14901dcd72f63eac1f", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "4b35238527dcaa01399230f7bcaf7d21fdcf54f5be3c359821a9538455a5d887", +"T3T1_fr_test_pin.py::test_no_protection": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "6f391c1a16ce55acb2ac8b1e83464efe638a5ebf3f5d79e9ac53452b5e4cac4b", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "696784a7eaf1c6072ece62aff3008196b03892119053b66d6e2a89a9cefc362f", +"T3T1_fr_test_protection_levels.py::test_get_address": "a7e355d325f1e383c2810d1389e102881ff297083344ffb8dfd8545bc2f88d64", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "fdd7ecbc62d9dae36b71c014f5adabf7a1524e69a7d772b53544736ceac49f1b", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "a7e355d325f1e383c2810d1389e102881ff297083344ffb8dfd8545bc2f88d64", +"T3T1_fr_test_protection_levels.py::test_initialize": "770725a2d2d7b1fa459a8cc6e4f46937640f5cc7fb3fb1f12900ef6bc6f0b7fe", +"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "51564c08a23ce031181432e95291999544e01ac35682c59c2fff2d896261841b", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "48d47ef41d64f2753f87392b6793d6dc51ab6fad7744d0de1b83e808a0c484bf", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "2b1cb68abca3f83ee0376dcd14865c144a3edbb172785e2295a6b9919d7ccbee", +"T3T1_fr_test_protection_levels.py::test_ping": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", +"T3T1_fr_test_protection_levels.py::test_sign_message": "84da17b6c521c3cd7d1a5fd11075ce7e21f979aeafb66c2d204cc2cdacacf0c8", +"T3T1_fr_test_protection_levels.py::test_signtx": "d2329faa047973f7732bd9670148b32da2e2570222b9e7df59a692dfcd25f41b", +"T3T1_fr_test_protection_levels.py::test_unlocked": "35cbeb9d02695d1e32461f9cda335beb65f7eb5c7580a1bed62dbc1dd2b54cb2", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "194d8261551236ade76cbace4e915c634673775cd825f18c0e8678365069c8e1", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "2c7147da05699ed5e4e210d2809369817ffce4ece65e210d69313ffb90c36de6", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "708620106135e03c1510aafa0823682c874ed4bb5a08bc41358c13082b8d2d1a", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "cb5ea7cc6827e2561361a902ac3b12ac5cc16065551fda4f3f055343ec738fa1", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f35e3926033de3c927faaaa036995d519b68e7c32185e4d3ee3cbb22959b8712", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "bedabadd122af2b3b62608ca5dd32390034a1e6edb947ee3d8c28fb12b008b32", +"T3T1_fr_test_sdcard.py::test_sd_format": "6683e27dce5276f9a5646c90d8c5aa19d8df5af098f5c808304abef02ff09d9f", +"T3T1_fr_test_sdcard.py::test_sd_no_format": "cad883696fe6ed7320aeec419e118acdc897b22eea22f5d9cdff84ba5b0504d3", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "9f74d824c66a01638b8e1d1172dca750facfb2b2a6e3759642d688afcbe216c7", +"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_session.py::test_clear_session": "0a1ad6a2e78022d4ff4588b6604ec34aee16e3f998b269318d9467c7ce6de18f", +"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_session.py::test_derive_cardano_running_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_session.py::test_end_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_session.py::test_end_session_only_current": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_session.py::test_session_recycling": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "3a9f395d4bcba445918148cd601e3ae5fa79d1629ea22b2fd1ff027af20fbca8", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "c5ed3679764831362a6ff1546c38bb60319a7edfc6955f898b4f67779f1908b2", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f44e15fc6f8eefe74269308f6ed1e3c72c0ade8df74aaa98b16d053cecc1e139", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "902f20c4045dbd40a7ed87549a25b5e2e7400e7dcc23269396bc85a2283e3421", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f8dda185685ccd7d3eece8eaed0ad77008eb9f13ae4522f203f272f4940311e6", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "fc3de7b4f9d9ab60d694022b134d464f7268a38c97815efe10df81e5a11e5196", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "51564c08a23ce031181432e95291999544e01ac35682c59c2fff2d896261841b", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "0c121034cd8b20e4c55103d0a8a209e0f95e378a6ab1e40bfdfd4cf696be5f88", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a8310696d820a3b4f30e83674c7aec61661b09a96756118167c26ea4f65cdaf7", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "dab7b414af44abf7f73a58a956b176ce88b3e733bb8ad964e271c5d88fbacaba", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "dacb5ab12a830b3c9eb3d79b11ddb47ba14cca71aa09fd3293a1d2618a09927f", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "517d1498df16399c830fd4691d9938732a4352004cc8eabf5ca4373eccb0cc98", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "52cd29ed18e66f5972be9bb97f98973efab1aefdcfee75c7636819c3968c8e15", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "5b62ed333a2d0197e8ef8d62e105336e91bb3301183111b12a73ca278ed83de8", +"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "d1a001e21774456665162646292cd69a609089075979ea7e7a0601c3884ad2cb", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "27b0abca90bbb0f19f597a3f6f6d980de5dd3f51fdcc5dbeca8e4b977119f6ef", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "55fbc2930fa383fc7bd979f8ba1d7ba1508786de3c2886d8dfb49a43bf6dc8d2", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ef7750a499b367fa56aa3ee4710d0fa200179993dc15d4493a34f51bb24a3e9c", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "72818339558e0991dd0d2954b513ff2d0196505c6be1c77acebcf75ffe82a0be", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "596525eb7f17f4482ae40fce163e1abb366c6f2de572f0125ab465211f44716b", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "54c9654fc164e76a2937bf6918d6cd21d3effdec2644d1f5a02e6a9ddda1098a", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "9e951f965a9f1c8059d34b4a57595ba1d0bf42d305e3b5c09f95e06719c2d55c", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "66dca7ffdb4882514c07727de21c78924eafe3b8f01d372c474d25148cf59494", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "31e25fb28fd7818ab18093bec525b8d23bdb56515a208a7210c5c92e39d662bf", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "4e6e8a961d915e3e2876e18e58883c735009f02768173da64bad3920ac23c05c", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "4d7dde087b3d3a126cca4ec75af677cafbd9809eb11c38c19a6a718e41c8ed2c", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "1725b477dca5f2519cb4c31d9ea7b425981e53efbf2410dab112e2d4985e040e", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e0b08d52fad946741111e051bb763cd608dac887dd2a3f152810b482560a6da7", +"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "3f2ac7effd37fb8bb0765dfc229ac0a175606ae42aa31596d958ba329bc6e9b2", +"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "cafad99249f1c03a6576ce8b2ea670bd0328765f3220b5fd0f707de3c71629ca", +"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "899cda0597bb21f4a87ca0236b56fa2537e8d63f15378d1398951504f732bc50", +"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "83e8692d02277d911a0fdb0fc6b550476cfd7a04d8cde16a19c74e5363f5a2ff", +"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", +"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "0f98d389e7ae999d3494e66fb014bcff7993de5d64ff478de0d02db73a041889", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "f375b1f2b715a9781f8261aea1c373421c37fba042096464c6c0da94e0c6376b", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "b63b213b81f9f4012fd808eb10b54317be871938f4f7114348e85451f4a8f4cb", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "66b95cebad99bead194e6149f92e1f0bc0d80ce640a3b367564593bb342808c5", +"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "d9e2c718cf34f3208b3aa611eb56e7e01323241f954a697e8a260c06f2d2856f", +"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "eb80f46215194b9b22a51a2095cd08db5e07a2130f36f8682eb6a3af0d818655", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "d4f098d51749d5e70dd7c0930fc14972cb02d0ee9f52d6cf26d6d70350005ea8", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "af408bd71b6baa388dd35434ecce08ec954e1f4a0db17b0679f710e66a021cc3", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "7d18d65883b195be762f7d2e7ca1337d19caf65eb4c2c439484a8abc0b7a9f32", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "b01f34ba8953a78b2fb235e345c862a54b91dd0ff4b072fa7172d0f24977558f", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "db8312f6b5f6bd3e8d2bc9989139ed32ee681ae74de382fe65f690f2b94bbbd3", "T3T1_en_test_shamir_persistence.py::test_abort": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "d814f603c0063d54b9725863d79b408a39ed56cc176aa97b6a01f98d9ca37c3e", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "6bd027b12b00011e7fda75b13286751c67c7e279ff32e285f2a7ee7078f00aee", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "8f2c5939c72cbd699820a81d4edd0b9a082684a6a79739312f9de067bdd47603", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "42e073f1111ee69af286534c1fa7413ce21e767745749685dc298a4735a8836a" +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "d6a9929fafc8bdcef318e70b4bca18a1809bb40676d0ad2533b2bda076bf5fd9", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "8524623d8d0e3d75b112a764b877ab128e0e43fd77de0e498a6388f29232b2fe", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "c2f0f060f34cda401a4ca7dd1fe685186dd6ecc4885be506072677088ddb3017", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "d250aad4cba370f28bdac1c2e59b1dc59ba9fcbfd6ed7be5f0e74544a7851424" } } } From 2bf2549a31f5d5b1a27aa115a4e3c0f88bd01b07 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 6 Jun 2024 10:43:49 +0200 Subject: [PATCH 257/626] style(core): make newer pyrights happier --- core/src/trezor/loop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/trezor/loop.py b/core/src/trezor/loop.py index 54f85eddeb..80ed8e160a 100644 --- a/core/src/trezor/loop.py +++ b/core/src/trezor/loop.py @@ -192,7 +192,7 @@ def __iter__(self) -> Generator: if TYPE_CHECKING: - def __await__(self) -> Generator: + def __await__(self) -> Generator[Any, Any, Any]: return self.__iter__() def handle(self, task: Task) -> None: From b868ccbbddc36ef97c145605a822f588c3fc2a29 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 6 Jun 2024 11:38:01 +0200 Subject: [PATCH 258/626] fix(tests): hotfix - fix update_fixtures ci --remove-missing for lang awareness but the correct fix is to make langs a separate group --- tests/update_fixtures.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/update_fixtures.py b/tests/update_fixtures.py index bb3e958126..2e78773d55 100755 --- a/tests/update_fixtures.py +++ b/tests/update_fixtures.py @@ -97,7 +97,9 @@ def ci( is_error = True print("No results found.") continue + _model, lang, _job = job_name.split("-") model = next(iter(ui_res_dict.keys())) + assert model == _model group = next(iter(ui_res_dict[model].keys())) current_model = current_fixtures.setdefault(model, {}) current_group = current_model.setdefault(group, {}) # type: ignore @@ -106,6 +108,8 @@ def ci( # get rid of tests that were not run in CI removed = 0 for key in list(current_group.keys()): + if not key.startswith(f"{model}_{lang}_"): + continue if key not in ui_res_dict[model][group]: current_group.pop(key) removed += 1 From d6186f105f36d47c3820e77d9d162cb4e2255340 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 14:28:19 +0200 Subject: [PATCH 259/626] docs(core): changelog for 2.7.1 --- core/.changelog.d/+slip39.added | 1 - core/.changelog.d/3208.added | 1 - core/.changelog.d/3370.added | 1 - core/.changelog.d/3496.added.1 | 1 - core/.changelog.d/3496.added.2 | 1 - core/.changelog.d/3496.changed.3 | 1 - core/.changelog.d/3520.fixed | 1 - core/.changelog.d/3636.added | 1 - core/.changelog.d/3640.added | 1 - core/.changelog.d/3855.changed | 1 - core/.changelog.d/3940.added | 1 - core/CHANGELOG.T2B1.md | 25 + core/CHANGELOG.T2T1.md | 27 + core/CHANGELOG.T3T1.md | 881 +++++++++++++++++++++++++++++++ core/CHANGELOG.md | 29 + tools/generate-changelog.py | 2 +- 16 files changed, 963 insertions(+), 12 deletions(-) delete mode 100644 core/.changelog.d/+slip39.added delete mode 100644 core/.changelog.d/3208.added delete mode 100644 core/.changelog.d/3370.added delete mode 100644 core/.changelog.d/3496.added.1 delete mode 100644 core/.changelog.d/3496.added.2 delete mode 100644 core/.changelog.d/3496.changed.3 delete mode 100644 core/.changelog.d/3520.fixed delete mode 100644 core/.changelog.d/3636.added delete mode 100644 core/.changelog.d/3640.added delete mode 100644 core/.changelog.d/3855.changed delete mode 100644 core/.changelog.d/3940.added create mode 100644 core/CHANGELOG.T3T1.md diff --git a/core/.changelog.d/+slip39.added b/core/.changelog.d/+slip39.added deleted file mode 100644 index 0ed8594913..0000000000 --- a/core/.changelog.d/+slip39.added +++ /dev/null @@ -1 +0,0 @@ -Support extendable backup flag in SLIP-39. diff --git a/core/.changelog.d/3208.added b/core/.changelog.d/3208.added deleted file mode 100644 index 995ba08ab8..0000000000 --- a/core/.changelog.d/3208.added +++ /dev/null @@ -1 +0,0 @@ -[T2T1] Added user adjustable brightness setting. diff --git a/core/.changelog.d/3370.added b/core/.changelog.d/3370.added deleted file mode 100644 index 20f7c86466..0000000000 --- a/core/.changelog.d/3370.added +++ /dev/null @@ -1 +0,0 @@ -Added basic support for STM32U5 diff --git a/core/.changelog.d/3496.added.1 b/core/.changelog.d/3496.added.1 deleted file mode 100644 index 6e208d171f..0000000000 --- a/core/.changelog.d/3496.added.1 +++ /dev/null @@ -1 +0,0 @@ -Cardano: Added support for Conway certificates diff --git a/core/.changelog.d/3496.added.2 b/core/.changelog.d/3496.added.2 deleted file mode 100644 index 509c632add..0000000000 --- a/core/.changelog.d/3496.added.2 +++ /dev/null @@ -1 +0,0 @@ -Cardano: Added support for tagged sets in CBOR (tag 258) diff --git a/core/.changelog.d/3496.changed.3 b/core/.changelog.d/3496.changed.3 deleted file mode 100644 index b7d9fb6727..0000000000 --- a/core/.changelog.d/3496.changed.3 +++ /dev/null @@ -1 +0,0 @@ -Cardano: Increased max URL length to 128 bytes diff --git a/core/.changelog.d/3520.fixed b/core/.changelog.d/3520.fixed deleted file mode 100644 index d5ee082337..0000000000 --- a/core/.changelog.d/3520.fixed +++ /dev/null @@ -1 +0,0 @@ -Translate also texts for PIN progress loaders. diff --git a/core/.changelog.d/3636.added b/core/.changelog.d/3636.added deleted file mode 100644 index 2d5938422a..0000000000 --- a/core/.changelog.d/3636.added +++ /dev/null @@ -1 +0,0 @@ -Added ability to request Shamir backups with any number of groups/shares. diff --git a/core/.changelog.d/3640.added b/core/.changelog.d/3640.added deleted file mode 100644 index ec047d5b0a..0000000000 --- a/core/.changelog.d/3640.added +++ /dev/null @@ -1 +0,0 @@ -Added support for repeated backups. diff --git a/core/.changelog.d/3855.changed b/core/.changelog.d/3855.changed deleted file mode 100644 index a186a1d039..0000000000 --- a/core/.changelog.d/3855.changed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Upgrade to bootloader 2.1.6. diff --git a/core/.changelog.d/3940.added b/core/.changelog.d/3940.added deleted file mode 100644 index 3d19564b26..0000000000 --- a/core/.changelog.d/3940.added +++ /dev/null @@ -1 +0,0 @@ -[T2T1] Allow SD card hotswap based on production date diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index a58fbe7f72..d4e88ccba3 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.7.1] (14th June 2024) + +### Added +- Added basic support for STM32U5. [#3370] +- Cardano: Added support for tagged sets in CBOR (tag 258). [#3496] +- Cardano: Added support for Conway certificates. [#3496] +- Added ability to request Shamir backups with any number of groups/shares. [#3636] +- Added support for repeated backups. [#3640] +- Support extendable backup flag in SLIP-39. + +### Changed +- Cardano: Increased max URL length to 128 bytes. [#3496] + +### Fixed +- Translate also texts for PIN progress loaders. [#3520] + + ## [2.7.0] (20th March 2024) ### Added @@ -838,6 +855,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3048]: https://github.com/trezor/trezor-firmware/pull/3048 [#3205]: https://github.com/trezor/trezor-firmware/pull/3205 [#3206]: https://github.com/trezor/trezor-firmware/pull/3206 +[#3208]: https://github.com/trezor/trezor-firmware/pull/3208 [#3216]: https://github.com/trezor/trezor-firmware/pull/3216 [#3218]: https://github.com/trezor/trezor-firmware/pull/3218 [#3237]: https://github.com/trezor/trezor-firmware/pull/3237 @@ -849,6 +867,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3296]: https://github.com/trezor/trezor-firmware/pull/3296 [#3311]: https://github.com/trezor/trezor-firmware/pull/3311 [#3359]: https://github.com/trezor/trezor-firmware/pull/3359 +[#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3377]: https://github.com/trezor/trezor-firmware/pull/3377 [#3411]: https://github.com/trezor/trezor-firmware/pull/3411 [#3424]: https://github.com/trezor/trezor-firmware/pull/3424 @@ -858,5 +877,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3458]: https://github.com/trezor/trezor-firmware/pull/3458 [#3475]: https://github.com/trezor/trezor-firmware/pull/3475 [#3477]: https://github.com/trezor/trezor-firmware/pull/3477 +[#3496]: https://github.com/trezor/trezor-firmware/pull/3496 [#3517]: https://github.com/trezor/trezor-firmware/pull/3517 +[#3520]: https://github.com/trezor/trezor-firmware/pull/3520 [#3539]: https://github.com/trezor/trezor-firmware/pull/3539 +[#3636]: https://github.com/trezor/trezor-firmware/pull/3636 +[#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3940]: https://github.com/trezor/trezor-firmware/pull/3940 diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index b6caae302c..b6f043594a 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.7.1] (14th June 2024) + +### Added +- Added user adjustable brightness setting. [#3208] +- Added basic support for STM32U5. [#3370] +- Cardano: Added support for tagged sets in CBOR (tag 258). [#3496] +- Cardano: Added support for Conway certificates. [#3496] +- Added ability to request Shamir backups with any number of groups/shares. [#3636] +- Added support for repeated backups. [#3640] +- Allow SD card hotswap based on production date. [#3940] +- Support extendable backup flag in SLIP-39. + +### Changed +- Cardano: Increased max URL length to 128 bytes. [#3496] + +### Fixed +- Translate also texts for PIN progress loaders. [#3520] + + ## [2.7.0] (20th March 2024) ### Added @@ -836,6 +855,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3048]: https://github.com/trezor/trezor-firmware/pull/3048 [#3205]: https://github.com/trezor/trezor-firmware/pull/3205 [#3206]: https://github.com/trezor/trezor-firmware/pull/3206 +[#3208]: https://github.com/trezor/trezor-firmware/pull/3208 [#3216]: https://github.com/trezor/trezor-firmware/pull/3216 [#3218]: https://github.com/trezor/trezor-firmware/pull/3218 [#3237]: https://github.com/trezor/trezor-firmware/pull/3237 @@ -847,6 +867,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3296]: https://github.com/trezor/trezor-firmware/pull/3296 [#3311]: https://github.com/trezor/trezor-firmware/pull/3311 [#3359]: https://github.com/trezor/trezor-firmware/pull/3359 +[#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3377]: https://github.com/trezor/trezor-firmware/pull/3377 [#3411]: https://github.com/trezor/trezor-firmware/pull/3411 [#3424]: https://github.com/trezor/trezor-firmware/pull/3424 @@ -856,5 +877,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3458]: https://github.com/trezor/trezor-firmware/pull/3458 [#3475]: https://github.com/trezor/trezor-firmware/pull/3475 [#3477]: https://github.com/trezor/trezor-firmware/pull/3477 +[#3496]: https://github.com/trezor/trezor-firmware/pull/3496 [#3517]: https://github.com/trezor/trezor-firmware/pull/3517 +[#3520]: https://github.com/trezor/trezor-firmware/pull/3520 [#3539]: https://github.com/trezor/trezor-firmware/pull/3539 +[#3636]: https://github.com/trezor/trezor-firmware/pull/3636 +[#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3940]: https://github.com/trezor/trezor-firmware/pull/3940 diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md new file mode 100644 index 0000000000..07f170c2f8 --- /dev/null +++ b/core/CHANGELOG.T3T1.md @@ -0,0 +1,881 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +## [2.7.1] (14th June 2024) + +### Added +- Added basic support for STM32U5. [#3370] +- Cardano: Added support for tagged sets in CBOR (tag 258). [#3496] +- Cardano: Added support for Conway certificates. [#3496] +- Added ability to request Shamir backups with any number of groups/shares. [#3636] +- Added support for repeated backups. [#3640] +- Support extendable backup flag in SLIP-39. +- User interface implementation. + +### Changed +- Cardano: Increased max URL length to 128 bytes. [#3496] +- Upgrade to bootloader 2.1.6. [#3855] + +### Fixed +- Translate also texts for PIN progress loaders. [#3520] + + +## [2.7.0] (20th March 2024) + +### Added +- Add translations capability. [#3206] +- Stellar: add support for `StellarClaimClaimableBalanceOp`. [#3434] +- Allow for going back to previous word in recovery process. [#3458] +- Clear sign ETH staking transactions on Everstake pool. [#3517] +- Send BIP-380 descriptor in GetPublicKey response. [#3539] + +### Changed +- Display descriptors for BTC Taproot public keys. [#3475] + +### Fixed +- Improved UI of multiple Solana instructions. [#3445] +- Solana multisig instruction warning will be displayed before instruction details are displayed. [#3445] +- Fixed Solana Memo instruction being unknown - it will now be recognized and displayed properly. [#3445] + + +## [2.6.4] (20th December 2023) + +### Added +- Added Solana support. [#3359] + +### Changed +- Always display Ethereum fees in Gwei. [#3246] + +### Fixed +- Fix invalid encoding of signatures from Optiga. [#3411] + + +## [2.6.3] (15th November 2023) + +### Added +- Support interaction-less upgrade. [#2919] +- Allowed non-zero address index in Cardano staking paths. [#3242] + +### Changed + +### Fixed + + +## [2.6.2] (internal release) + +### Added + + +## [2.6.1] (internal release) + +### Added +- QR code display when exporting XPUBs. [#3047] +- Added hw model field to all vendor headers. [#3048] +- Added firmware update without interaction. [#3205] +- Split builds of different parts to use simple util.s assembler, while FW+bootloader use interconnected ones. [#3205] +- Add support for address chunkification in Receive and Sign flow. [#3237] + +### Changed +- Update to MicroPython 1.19.1. [#2341] +- Introduce multisig warning to BTC receive flow. [#2937] +- Introduce multiple account warning to BTC send flow. [#2937] + +### Removed +- MUE coin support. [#3216] + +### Fixed + + +## [2.6.0] (19th April 2023) + +### Added +- Signed Ethereum network and token definitions from host. [#15] +- CoSi collective signatures on Model T. [#450] +- Support Ledger Live legacy derivation path `m/44'/coin_type'/0'/account`. [#1749] +- Updated bootloader to 2.1.0. [#1901] +- Show source account path in BTC signing. [#2151] +- Show path for internal outputs in BTC signing. [#2152] +- Add model info to image and check when installing bootloader, prevent bootloader downgrade. [#2623] +- Allow proposed Casa m/45' multisig paths for Bitcoin and Ethereum. [#2682] +- Support for external reward addresses in Cardano CIP-36 registrations. [#2692] +- Add address confirmation screen to EIP712 signing flow. [#2818] +- Add the possibility of rebooting the device into bootloader mode. [#2841] + +### Changed +- Switched to redesigned, Rust-based user interface. [#1922] +- Ignore channel ID in U2F. [#2205] +- Micropython code optimizations to make the code take less flash space. [#2525] +- CPU Frequency increased to 180 MHz. [#2587] +- Fixed display blinking by increasing backlight PWM frequency. [#2595] +- Updated FAT FS library to R0.15. [#2611] +- Auto-lock timer is no longer restarted by USB messages, only touch screen activity. [#2651] +- Updated UI and terminology in Cardano CIP-36 registrations. [#2692] +- Ethereum's EIP-712 signing no longer restricts the maximum field size to 1024 bytes. [#2746] +- Force basic attestation in FIDO2 for google.com. [#2834] + +### Fixed +- Enable Trezor to work as a FIDO2 authenticator for Apple. [#2784] +- Fix RNG for bootloader and make insecure PRNG opt-in, not opt-out. [#2899] + +### Security +- Match and validate script type of change-outputs in Bitcoin signing. + + +## [2.5.3] (16th November 2022) + +### Added +- Optimize touch controller communication. [#262] +- Add SLIP-0025 CoinJoin accounts. [#2289] +- Show red error header when USB data pins are not connected. [#2366] +- Add support for Zcash unified addresses. [#2398] +- Using hardware acceleration (dma2d) for rendering. [#2414] +- Add stack overflow detection. [#2427] +- Show fee rate when replacing transaction. [#2442] +- Support SetBusy message. [#2445] +- Add serialize option to SignTx. [#2507] +- Support for Cardano CIP-36 governance registration format. [#2561] +- Implement CoinJoin requests. [#2577] + +### Changed +- Extend decimals of fee rate to 2 digits. [#2486] +- Display only sat instead of sat BTC. [#2487] +- Remove old BulletProof code from Monero. [#2570] + +### Fixed +- Fix sending XMR transaction to an integrated address. [#2213] +- Fix XMR primary address display. [#2453] + + +## [2.5.2] (17th August 2022) + +### Added +- Add model R emulator [#2230] +- Add support for Monero HF15 features. [#2232] +- Add basic Trezor Model R hardware support [#2243] +- Show the fee rate on the signing confirmation screen. [#2249] +- Jump and stay in bootloader from firmware through SVC call reverse trampoline. [#2284] +- Expose raw pixel access to Rust [#2297] +- Add RGB LED for Model R [#2300] +- Boardloader capabilities structure [#2324] +- Support for Cardano Babbage era transaction items [#2354] +- Add "Show All"/"Show Simple" choice to Cardano transaction signing [#2355] +- Documentation for embedded C+Rust debugging [#2380] +- Show thousands separator when displaying large amounts. [#2394] + +### Changed +- Refactor and cleanup of Monero code. [#642] +- Remove power-down power-up cycle from touch controller initialization in firmware [#2130] +- Updated secp256k1-zkp. [#2261] +- Cardano internal refactors [#2313] +- Allow Cardano's `required_signers` in ordinary and multisig transactions + Allow Cardano's `datum_hash` in non-script outputs [#2354] + +### Removed +- Removed support for obsolete Monero hardfork 12 and below [#642] +- Remove firmware dumping capability. [#2433] + +### Fixed +- _(Emulator)_ Emulator window will always react to shutdown events, even while waiting for USB packets. [#973] +- Ensure correct order when verifying external inputs in Bitcoin signing. [#2415] +- Fix Decred transaction weight calculation. [#2422] + + +## 2.5.1 [18th May 2022] + +### Added +- Support Bitcoin payment requests. [#1430] +- Show "signature is valid" dialog when VerifyMessage succeeds. [#1880] +- Support ownership proofs for Taproot addresses. [#1944] +- Add extra check for Taproot scripts validity. [#2077] +- Support Electrum signatures in VerifyMessage. [#2100] +- Support Cardano Alonzo-era transactions (Plutus). [#2114] +- Support unverified external inputs. [#2144] +- Support Zcash version 5 transaction format [#2166] +- Add firmware hashing functionality. [#2239] + +### Changed +- Ensure input's script type and path match the scriptPubKey. [#1018] +- Automatically choose best size and encoding for QR codes. [#1751] +- Bitcoin bech32 addresses are encoded in lower-case for QR codes. [#1751] +- Full type-checking for Python code (except Monero app). [#1939] +- \[debuglink] Do not wait for screen refresh when _disabling_ layout watching. [#2135] + +### Removed +- GAME, NIX and POLIS support. [#2181] + +### Fixed +- EIP-1559 transaction correctly show final Hold to Confirm screen. [#2020] +- Fix sighash computation in proofs of ownership. [#2034] +- Fix domain-only EIP-712 hashes (i.e. when `primaryType`=`EIP712Domain`). [#2036] +- Support EIP-712 messages where a struct type is only used as an array element. [#2167] + +### Security +- Fix a coin loss vulnerability related to replacement transactions with multisig inputs and unverified external inputs. + +### Incompatible changes +- Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs). [#1018] + + +## 2.4.3 [8th December 2021] + +### Added +- Convert timestamps to human-readable dates and times. [#741] +- Support no_script_type option in SignMessage. [#1586] +- Show address confirmation in SignMessage. [#1586] +- Support pre-signed external Taproot inputs in Bitcoin. [#1656] +- Show warning dialog in SignMessage if a non-standard path is used. [#1656] +- Support spending from Taproot UTXOs. [#1656] +- Support GetAddress for Taproot addresses. [#1656] +- Support sending to Taproot addresses. [#1656] +- Support replacement transactions with Taproot inputs in Bitcoin. [#1656] +- Support of BIP-340 Schnorr signatures (using secp256k1-zkp). [#1678] +- Support for Taproot descriptors. [#1710] +- Ethereum: support 64-bit chain IDs. [#1771] +- Support for Cardano multi-sig transactions, token minting, script addresses, multi-sig keys, minting keys and native script verification. [#1772] +- For compatibility with other Cardano implementations, it is now possible to specify which Cardano derivation type is used. [#1783] +- Full type-checking for Ethereum app. [#1794] +- Ethereum - support for EIP712 - signing typed data. [#1835] +- Stellar: add support for StellarManageBuyOfferOp and StellarPathPaymentStrictSendOp. [#1838] +- Add script_pubkey field to TxInput message. [#1857] + +### Changed +- Cardano root is derived together with the normal master secret. [#1231] +- Update QR-code-generator library version. [#1639] +- Faster ECDSA signing and verification (using secp256k1-zkp). [#1678] +- Most Stellar fields are now required on protobuf level. [#1755] +- Type-checking enabled for apps.stellar. [#1755] +- Updated micropython to version 1.17. [#1789] +- Errors from protobuf decoding are now more expressive. [#1811] + +### Removed +- Disable previous transaction streaming in Bitcoin if all internal inputs are Taproot. [#1656] +- Remove BELL, ZNY support. [#1872] + +### Fixed +- Remove altcoin message definitions from bitcoin-only build. [#1633] +- Ethereum: make it optional to view the entire data field when signing transaction. [#1819] + +### Security +- Ensure that the user is always warned about non-standard paths. +- Avoid accidental build with broken stack protector. [#1642] + +### Incompatible changes +- Session must be configured with Initialize(derive_cardano=True), otherwise Cardano functions will fail. [#1231] +- Timebounds must be set for a Stellar transaction. [#1755] +- Cardano derivation type must be specified for all Cardano functions. [#1783] +- Ethereum non-EIP-155 cross-chain signing is no longer supported. [#1794] +- Stellar: rename StellarManageOfferOp to StellarManageSellOfferOp, StellarPathPaymentOp to StellarPathPaymentStrictReceiveOp and StellarCreatePassiveOfferOp to StellarCreatePassiveSellOfferOp. [#1838] + + +## 2.4.2 [16th September 2021] + +### Added +- [emulator] Added option to dump detailed Micropython memory layout [#1557] +- Support for Ethereum EIP1559 transactions [#1604] +- Re-enabled Firo support [#1767] + +### Changed +- Converted all remaining code to common layouts. [#1545] +- Memory optimization of BTC signing and CBOR decoding. [#1581] +- Cardano transaction parameters are now streamed into the device one by one instead of being sent as one large object [#1683] +- Thanks to transaction streaming, Cardano now supports larger transactions (tested with 62kB transactions, but supposedly even larger transactions are supported) [#1683] +- Refactor RLP codec for better clarity and some small memory savings. [#1704] +- Refer to `m/48'/...` multisig derivation paths as BIP-48 instead of Purpose48. [#1744] + +### Removed +- Removed support for Lisk [#1765] + +### Fixed +- Disable TT features (SD card, SBU, FAT) for T1 build. [#1163] +- It is no longer possible to sign Cardano transactions containing paths belonging to multiple accounts (except for Byron to Shelley migration) [#1683] +- Add new rpId to Binance's FIDO definition. [#1705] +- Don't use format strings in keyctl-proxy [#1707] +- Properly respond to USB events while on a paginated screen. [#1708] + +### Incompatible changes +- Due to transaction streaming in Cardano, it isn't possible to return the whole serialized transaction anymore. Instead the transaction hash, transaction witnesses and auxiliary data supplement are returned and the serialized transaction needs to be assembled by the client. [#1683] + + +## 2.4.1 [14th July 2021] + +### Added +- ButtonRequest for multi-page views contains number of pages. [#1671] + +### Changed +- Converted altcoin apps to common layout code. [#1538] +- Reimplement protobuf codec and library in Rust [#1541] +- Cardano: Reintroduce maximum transaction output size limitation [#1606] +- Cardano: Improve address validation and decouple it from address derivation [#1606] +- Cardano: Remove sorting of policies, assets and withdrawals. Rather add them to the transaction in the order they arrived in. [#1672] +- Cardano: Forbid withdrawals with the same path in a single transaction [#1672] + +### Removed +- Removed support for Firo [#1647] +- Removed support for Hatch [#1650] + +### Fixed +- Unify Features.revision reporting with legacy [#1620] +- Fix red screen on shutdown. [#1658] +- Empty passphrase is properly cached in Cardano functions [#1659] + +### Security +- Ensure that all testnet coins use SLIP-44 coin type 1. +- Disable all testnet coins from accessing Bitcoin paths. +- Restrict BIP-45 paths to Bitcoin and coins with strong replay protection. +- Fix operation source account encoding in Stellar. + + +## 2.4.0 [9th June 2021] + +### Added +- Decred staking. [#1249] +- Locking the device by holding finger on the homescreen for 2.5 seconds. [#1404] +- Public key to ECDHSessionKey. [#1518] +- Rust FFI for MicroPython. [#1540] + +### Changed +- Support PIN of unlimited length. [#1167] +- Allow decreasing the output value in RBF transactions. [#1491] +- Cardano: Allow stake pool registrations with zero margin. [#1502] +- Cardano: Assets are now shown as CIP-0014. [#1510] +- Random delays use ChaCha-based DRBG instead of HMAC-DRBG. [#1554] +- Reduce memory fragmentation by clearing memory after every workflow. [#1565] +- Update some FIDO icons. [#1456] + +### Fixed +- Import errors on T1 startup. [#24] +- Improve wording when showing multisig XPUBs. [#1431] + + +## 2.3.6 [15th February 2021] + +### Added +- Compatibility paths for Unchained Capital. [#1467] + +## 2.3.5 [10th February 2021] + +### Added +- CoinJoin preauthorization and signing flow. [#1053] +- Value of the `safety-checks` setting to the `Features` message. [#1193] +- ERC20 tokens show contract address for confirmation. Unknown ERC20 tokens show wei amount. [#800] +- Replacement transaction signing for replace-by-fee and PayJoin. [#1292] +- Support for Output Descriptors export. [#1363] +- Paginated display for signing/verifying long messages. [#1271] +- Show Ypub/Zpub correctly for multisig GetAddress. [#1415] +- Show amounts in mBTC, uBTC and sat denominations. [#1369] + +### Changed +- The `safety-checks` setting gained new possible value `PromptTemporarily` which overrides safety checks until device reboot. [#1133] +- Protobuf codec now enforces `required` fields and pre-fills default values. [#379] +- `TxAck` messages are now decoded into "polymorphic" subtypes instead of the common `TxAck` type. +- Bump nanopb dependency to 0.4.3. [#1105] +- BIP-32 paths must now match a pre-defined path schema to be considered valid. [#1184] +- Minimum auto-lock delay to 1 minute. The former value of 10 seconds still applies for debug builds. [#1351] +- It is again possible to sign for Ethereum clones that are not officially supported. [#1335] +- Bump nanopb dependency to 0.4.4. [#1402] +- Automatic breaking text on whitespace. [#1384] +- Introduced limit of 32 characters for device label. [#1399] + +### Deprecated + +### Removed +- PIVX support +- dropped debug-only `DebugLinkShowText` functionality + +### Fixed +- Path warning is not shown on `GetAddress(show_display=False)` call. [#1206] +- Settings are also erased from RAM when device is wiped. [#1322] + +### Security + +## 2.3.4 [7th October 2020] + +### Added +- Support for the upcoming Monero hard fork. [#1246] + +### Changed + +### Deprecated + +### Removed + +### Fixed + +### Security + + +## 2.3.3 [2nd September 2020] + +### Added +- Running the frozen version of the emulator doesn't need arguments. [#1115] +- XVG support. [#1165] +- Hard limit on transaction fees. Can be disabled using `safety-checks`. [#1087] + +### Changed +- Print inverted question mark for non-printable characters. +- Remove pre-fill bar from text rendering functions. [#1173] +- Display coin name when signing or verifying messages. [#1159] +- Allow spending coins from Bitcoin paths if the coin has implemented strong replay protection via `SIGHASH_FORKID`. [#1188] + +### Deprecated + +### Removed +- Remove ETP, GIN, PTC, ZEL support. +- Drop support for signing Zcash v3 transactions. [#982] + +### Fixed +- CRW addresses are properly generated. [#1139] +- Fix boot loop after uploading invalid homescreen. [#1118] +- Allow 49/x not 49/x' for Casa. [#1190] +- Make sure Homescreen is properly initialized. [#1095] + +### Security +- Show non-empty passphrase on device when it was entered on host. +- Show warning if nLockTime is set but ineffective due to all nSequence values being 0xffffffff. + +## 2.3.2 [5th August 2020] + +### Added +- Soft lock. [#958] +- Auto lock. [#1027] +- Dedicated `initialized` field in storage. +- Support EXTERNAL transaction inputs with a SLIP-0019 proof of ownership. [#1052] +- Support pre-signed EXTERNAL transaction inputs. +- Support multiple change-outputs. [#1098] +- New option `safety-checks` allows overriding "forbidden key path" errors. [#1126] +- Support for Cardano Shelley. [#948] + +### Changed +- `Features.pin_cached` renamed to `unlocked`. +- Forbid all settings if the device is not yet initialized. [#1056] +- Rewrite USB codec and Protobuf decoder to be more memory-efficient. [#1089] +- Allow compatibility namespaces for Casa and Green Address. + +### Deprecated +- Deprecate `overwintered` field in `SignTx` and `TxAck`. + +### Removed +- Generated protobuf classes now do not contain deprecated fields. + +### Fixed +- Fix cancel icon in PIN dialog. [#1042] +- Fix repaint bug in QR code rendering. [#1067] +- Fix QR code overlapping in Monero address. monero-gui#2960, [#1074] +- Re-introduce ability to spend pre-Overwinter UTXO on Zcash-like coins. [#1030] + +## 2.3.1 [June 2020] + +### Changed +- Refactor Bitcoin signing +- Refactor Keychain into a decorator + +### Security +- Stream previous tx also for Segwit inputs + +## 2.3.0 [April 2020] + +### Added +- Cache up to 10 sessions (passphrases) +- SD card protection +- Show xpubs with multisig get_address +- Introduce FatFS (version 0.14) +- Support Ed25519 in FIDO2 + +### Changed +- Passphrase redesign +- Upgrade MicroPython to 1.12 + +### Fixed +- Properly limit passphrase to 50 bytes and not 50 characters +- Monero: add confirmation dialog for unlock_time + +## 2.2.0 [January 2020] + +### Added +- Add feature to retrieve the next U2F counter. +- Wipe code. +- Add screen for time bounds in Stellar. + +### Fixed +- Fix continuous display blinking with Android in U2F. +- U2F UX improvements. + +### Changed +- Rework Recovery persistence internally. + +### Removed +- Remove unused ButtonRequest.data field. +- Disallow changing of settings via dry-run recovery. + +## 2.1.8 [November 2019] + +### Added +- Support Tezos 005-BABYLON hardfork. +- Show XPUBs in GetAddress for multisig. + +### Security +- Security improvements. + +## 2.1.7 [October 2019] + +### Fixed +- Fix low memory issue. + +## 2.1.6 [October 2019] + +### Added +- Super Shamir. +- FIDO2. +- FIDO2 credential management via trezorctl. +- BackupType in Features. + +### Changed +- Refactor Shamir related codebase. + +### Fixed +- Fix storage keys module visibility bug (6ad329) introduced in 2.1.3 (46e4c0) which was breaking upgrades. + +## 2.1.5 [September 2019] + +### Added +- Binance Coin support. +- Introduce Features.Capabilities. + +### Fixed +- Fix for sluggish U2F authentication when using Shamir. +- Fix UI for Shamir with 33 words. +- Fix Wanchain signing. + +## 2.1.4 [August 2019 hotfix] + +### Fixed +- Shamir Backup reset device hotfix. + +## 2.1.3 [August 2019] + +### Added +- Shamir Backup with Recovery persistence. + +### Fixed +- Touchscreen freeze fix. +- Fix display of non-divisible OMNI amounts. + +## 2.1.2 [unreleased] + +### Added +- Shamir Backup feature preview. + +## 2.1.1 [June 2019] + +### Added +- EOS support. +- Set screen rotation via user setting. +- Display non-zero locktime values. + +### Changed +- Don't rotate the screen via swipe gesture. +- More strict path validations. + +### Fixed +- Hotfix for touchscreen freeze. +- Monero UI fixes. +- Speed and memory optimizations. + +## 2.1.0 [March 2019] + +### Added +- New coins: ATS, AXE, FLO, GIN, KMD, NIX, PIVX, REOSC, XPM, XSN, ZCL. +- New ETH tokens. + +### Fixed +- Ripple, Stellar, Cardano and NEM fixes. + +### Changed +- Included bootloader 2.0.3. + +### Security +- Security improvements. +- Upgraded to new storage format. + +## 2.0.10 [December 2018] + +### Added +- Add support for OMNI layer: OMNI/MAID/USDT. +- Add support for new coins: BTX, CPC, GAME, RVN. +- Add support for new Ethereum tokens. + +### Changed +- Included bootloader 2.0.2. + +### Fixed +- Fix Monero payment ID computation. +- Fix issue with touch screen and flickering. + +## 2.0.9 [November 2018] + +### Fixed +- Small Monero and Segwit bugfixes. + +## 2.0.8 [October 2018] + +### Added +- Monero support. +- Cardano support. +- Stellar support. +- Ripple support. +- Tezos support. +- Decred support. +- Groestlcoin support. +- Zencash support. +- Zcash sapling hardfork support. +- Implemented seedless setup. + +## 2.0.7 [June 2018] + +### Added +- Bitcoin Cash cashaddr support. +- Zcash Overwinter hardfork support. +- NEM support. +- Lisk support. +- Show warning on home screen if PIN is not set. +- Support for new coins (BTCP, FUJI, VTC, VIA, XZC). +- Support for new Ethereum networks (EOSC, ETHS, ELLA, CTL, EGEM, WAN). +- Support for 500+ new Ethereum tokens. + +## 2.0.6 [March 2018] + +### Added +- Add special characters to passphrase keyboard. + +### Fixed +- Fix layout for Ethereum transactions. +- Fix public key generation for SSH and GPG. + +## 2.0.5 [March 2018] + +### Added +- First public release. + +[#15]: https://github.com/trezor/trezor-firmware/pull/15 +[#24]: https://github.com/trezor/trezor-firmware/pull/24 +[#262]: https://github.com/trezor/trezor-firmware/pull/262 +[#379]: https://github.com/trezor/trezor-firmware/pull/379 +[#450]: https://github.com/trezor/trezor-firmware/pull/450 +[#642]: https://github.com/trezor/trezor-firmware/pull/642 +[#741]: https://github.com/trezor/trezor-firmware/pull/741 +[#800]: https://github.com/trezor/trezor-firmware/pull/800 +[#948]: https://github.com/trezor/trezor-firmware/pull/948 +[#958]: https://github.com/trezor/trezor-firmware/pull/958 +[#973]: https://github.com/trezor/trezor-firmware/pull/973 +[#982]: https://github.com/trezor/trezor-firmware/pull/982 +[#1018]: https://github.com/trezor/trezor-firmware/pull/1018 +[#1027]: https://github.com/trezor/trezor-firmware/pull/1027 +[#1030]: https://github.com/trezor/trezor-firmware/pull/1030 +[#1042]: https://github.com/trezor/trezor-firmware/pull/1042 +[#1049]: https://github.com/trezor/trezor-firmware/pull/1049 +[#1052]: https://github.com/trezor/trezor-firmware/pull/1052 +[#1053]: https://github.com/trezor/trezor-firmware/pull/1053 +[#1056]: https://github.com/trezor/trezor-firmware/pull/1056 +[#1067]: https://github.com/trezor/trezor-firmware/pull/1067 +[#1074]: https://github.com/trezor/trezor-firmware/pull/1074 +[#1087]: https://github.com/trezor/trezor-firmware/pull/1087 +[#1089]: https://github.com/trezor/trezor-firmware/pull/1089 +[#1095]: https://github.com/trezor/trezor-firmware/pull/1095 +[#1098]: https://github.com/trezor/trezor-firmware/pull/1098 +[#1105]: https://github.com/trezor/trezor-firmware/pull/1105 +[#1115]: https://github.com/trezor/trezor-firmware/pull/1115 +[#1118]: https://github.com/trezor/trezor-firmware/pull/1118 +[#1126]: https://github.com/trezor/trezor-firmware/pull/1126 +[#1133]: https://github.com/trezor/trezor-firmware/pull/1133 +[#1139]: https://github.com/trezor/trezor-firmware/pull/1139 +[#1159]: https://github.com/trezor/trezor-firmware/pull/1159 +[#1163]: https://github.com/trezor/trezor-firmware/pull/1163 +[#1165]: https://github.com/trezor/trezor-firmware/pull/1165 +[#1167]: https://github.com/trezor/trezor-firmware/pull/1167 +[#1173]: https://github.com/trezor/trezor-firmware/pull/1173 +[#1184]: https://github.com/trezor/trezor-firmware/pull/1184 +[#1188]: https://github.com/trezor/trezor-firmware/pull/1188 +[#1190]: https://github.com/trezor/trezor-firmware/pull/1190 +[#1193]: https://github.com/trezor/trezor-firmware/pull/1193 +[#1206]: https://github.com/trezor/trezor-firmware/pull/1206 +[#1231]: https://github.com/trezor/trezor-firmware/pull/1231 +[#1246]: https://github.com/trezor/trezor-firmware/pull/1246 +[#1249]: https://github.com/trezor/trezor-firmware/pull/1249 +[#1271]: https://github.com/trezor/trezor-firmware/pull/1271 +[#1292]: https://github.com/trezor/trezor-firmware/pull/1292 +[#1322]: https://github.com/trezor/trezor-firmware/pull/1322 +[#1335]: https://github.com/trezor/trezor-firmware/pull/1335 +[#1351]: https://github.com/trezor/trezor-firmware/pull/1351 +[#1363]: https://github.com/trezor/trezor-firmware/pull/1363 +[#1369]: https://github.com/trezor/trezor-firmware/pull/1369 +[#1384]: https://github.com/trezor/trezor-firmware/pull/1384 +[#1399]: https://github.com/trezor/trezor-firmware/pull/1399 +[#1402]: https://github.com/trezor/trezor-firmware/pull/1402 +[#1404]: https://github.com/trezor/trezor-firmware/pull/1404 +[#1415]: https://github.com/trezor/trezor-firmware/pull/1415 +[#1430]: https://github.com/trezor/trezor-firmware/pull/1430 +[#1431]: https://github.com/trezor/trezor-firmware/pull/1431 +[#1456]: https://github.com/trezor/trezor-firmware/pull/1456 +[#1467]: https://github.com/trezor/trezor-firmware/pull/1467 +[#1491]: https://github.com/trezor/trezor-firmware/pull/1491 +[#1502]: https://github.com/trezor/trezor-firmware/pull/1502 +[#1510]: https://github.com/trezor/trezor-firmware/pull/1510 +[#1518]: https://github.com/trezor/trezor-firmware/pull/1518 +[#1538]: https://github.com/trezor/trezor-firmware/pull/1538 +[#1540]: https://github.com/trezor/trezor-firmware/pull/1540 +[#1541]: https://github.com/trezor/trezor-firmware/pull/1541 +[#1545]: https://github.com/trezor/trezor-firmware/pull/1545 +[#1554]: https://github.com/trezor/trezor-firmware/pull/1554 +[#1557]: https://github.com/trezor/trezor-firmware/pull/1557 +[#1565]: https://github.com/trezor/trezor-firmware/pull/1565 +[#1581]: https://github.com/trezor/trezor-firmware/pull/1581 +[#1586]: https://github.com/trezor/trezor-firmware/pull/1586 +[#1604]: https://github.com/trezor/trezor-firmware/pull/1604 +[#1606]: https://github.com/trezor/trezor-firmware/pull/1606 +[#1620]: https://github.com/trezor/trezor-firmware/pull/1620 +[#1633]: https://github.com/trezor/trezor-firmware/pull/1633 +[#1639]: https://github.com/trezor/trezor-firmware/pull/1639 +[#1642]: https://github.com/trezor/trezor-firmware/pull/1642 +[#1647]: https://github.com/trezor/trezor-firmware/pull/1647 +[#1650]: https://github.com/trezor/trezor-firmware/pull/1650 +[#1656]: https://github.com/trezor/trezor-firmware/pull/1656 +[#1658]: https://github.com/trezor/trezor-firmware/pull/1658 +[#1659]: https://github.com/trezor/trezor-firmware/pull/1659 +[#1671]: https://github.com/trezor/trezor-firmware/pull/1671 +[#1672]: https://github.com/trezor/trezor-firmware/pull/1672 +[#1678]: https://github.com/trezor/trezor-firmware/pull/1678 +[#1683]: https://github.com/trezor/trezor-firmware/pull/1683 +[#1704]: https://github.com/trezor/trezor-firmware/pull/1704 +[#1705]: https://github.com/trezor/trezor-firmware/pull/1705 +[#1707]: https://github.com/trezor/trezor-firmware/pull/1707 +[#1708]: https://github.com/trezor/trezor-firmware/pull/1708 +[#1710]: https://github.com/trezor/trezor-firmware/pull/1710 +[#1744]: https://github.com/trezor/trezor-firmware/pull/1744 +[#1749]: https://github.com/trezor/trezor-firmware/pull/1749 +[#1751]: https://github.com/trezor/trezor-firmware/pull/1751 +[#1755]: https://github.com/trezor/trezor-firmware/pull/1755 +[#1765]: https://github.com/trezor/trezor-firmware/pull/1765 +[#1767]: https://github.com/trezor/trezor-firmware/pull/1767 +[#1771]: https://github.com/trezor/trezor-firmware/pull/1771 +[#1772]: https://github.com/trezor/trezor-firmware/pull/1772 +[#1783]: https://github.com/trezor/trezor-firmware/pull/1783 +[#1789]: https://github.com/trezor/trezor-firmware/pull/1789 +[#1794]: https://github.com/trezor/trezor-firmware/pull/1794 +[#1811]: https://github.com/trezor/trezor-firmware/pull/1811 +[#1819]: https://github.com/trezor/trezor-firmware/pull/1819 +[#1835]: https://github.com/trezor/trezor-firmware/pull/1835 +[#1838]: https://github.com/trezor/trezor-firmware/pull/1838 +[#1857]: https://github.com/trezor/trezor-firmware/pull/1857 +[#1872]: https://github.com/trezor/trezor-firmware/pull/1872 +[#1880]: https://github.com/trezor/trezor-firmware/pull/1880 +[#1901]: https://github.com/trezor/trezor-firmware/pull/1901 +[#1922]: https://github.com/trezor/trezor-firmware/pull/1922 +[#1939]: https://github.com/trezor/trezor-firmware/pull/1939 +[#1944]: https://github.com/trezor/trezor-firmware/pull/1944 +[#2020]: https://github.com/trezor/trezor-firmware/pull/2020 +[#2034]: https://github.com/trezor/trezor-firmware/pull/2034 +[#2036]: https://github.com/trezor/trezor-firmware/pull/2036 +[#2077]: https://github.com/trezor/trezor-firmware/pull/2077 +[#2100]: https://github.com/trezor/trezor-firmware/pull/2100 +[#2114]: https://github.com/trezor/trezor-firmware/pull/2114 +[#2130]: https://github.com/trezor/trezor-firmware/pull/2130 +[#2135]: https://github.com/trezor/trezor-firmware/pull/2135 +[#2144]: https://github.com/trezor/trezor-firmware/pull/2144 +[#2151]: https://github.com/trezor/trezor-firmware/pull/2151 +[#2152]: https://github.com/trezor/trezor-firmware/pull/2152 +[#2161]: https://github.com/trezor/trezor-firmware/pull/2161 +[#2166]: https://github.com/trezor/trezor-firmware/pull/2166 +[#2167]: https://github.com/trezor/trezor-firmware/pull/2167 +[#2181]: https://github.com/trezor/trezor-firmware/pull/2181 +[#2205]: https://github.com/trezor/trezor-firmware/pull/2205 +[#2213]: https://github.com/trezor/trezor-firmware/pull/2213 +[#2230]: https://github.com/trezor/trezor-firmware/pull/2230 +[#2232]: https://github.com/trezor/trezor-firmware/pull/2232 +[#2239]: https://github.com/trezor/trezor-firmware/pull/2239 +[#2243]: https://github.com/trezor/trezor-firmware/pull/2243 +[#2249]: https://github.com/trezor/trezor-firmware/pull/2249 +[#2261]: https://github.com/trezor/trezor-firmware/pull/2261 +[#2284]: https://github.com/trezor/trezor-firmware/pull/2284 +[#2289]: https://github.com/trezor/trezor-firmware/pull/2289 +[#2297]: https://github.com/trezor/trezor-firmware/pull/2297 +[#2300]: https://github.com/trezor/trezor-firmware/pull/2300 +[#2313]: https://github.com/trezor/trezor-firmware/pull/2313 +[#2324]: https://github.com/trezor/trezor-firmware/pull/2324 +[#2341]: https://github.com/trezor/trezor-firmware/pull/2341 +[#2354]: https://github.com/trezor/trezor-firmware/pull/2354 +[#2355]: https://github.com/trezor/trezor-firmware/pull/2355 +[#2366]: https://github.com/trezor/trezor-firmware/pull/2366 +[#2380]: https://github.com/trezor/trezor-firmware/pull/2380 +[#2394]: https://github.com/trezor/trezor-firmware/pull/2394 +[#2398]: https://github.com/trezor/trezor-firmware/pull/2398 +[#2414]: https://github.com/trezor/trezor-firmware/pull/2414 +[#2415]: https://github.com/trezor/trezor-firmware/pull/2415 +[#2422]: https://github.com/trezor/trezor-firmware/pull/2422 +[#2427]: https://github.com/trezor/trezor-firmware/pull/2427 +[#2433]: https://github.com/trezor/trezor-firmware/pull/2433 +[#2442]: https://github.com/trezor/trezor-firmware/pull/2442 +[#2445]: https://github.com/trezor/trezor-firmware/pull/2445 +[#2453]: https://github.com/trezor/trezor-firmware/pull/2453 +[#2486]: https://github.com/trezor/trezor-firmware/pull/2486 +[#2487]: https://github.com/trezor/trezor-firmware/pull/2487 +[#2507]: https://github.com/trezor/trezor-firmware/pull/2507 +[#2525]: https://github.com/trezor/trezor-firmware/pull/2525 +[#2561]: https://github.com/trezor/trezor-firmware/pull/2561 +[#2570]: https://github.com/trezor/trezor-firmware/pull/2570 +[#2577]: https://github.com/trezor/trezor-firmware/pull/2577 +[#2587]: https://github.com/trezor/trezor-firmware/pull/2587 +[#2595]: https://github.com/trezor/trezor-firmware/pull/2595 +[#2610]: https://github.com/trezor/trezor-firmware/pull/2610 +[#2611]: https://github.com/trezor/trezor-firmware/pull/2611 +[#2623]: https://github.com/trezor/trezor-firmware/pull/2623 +[#2651]: https://github.com/trezor/trezor-firmware/pull/2651 +[#2682]: https://github.com/trezor/trezor-firmware/pull/2682 +[#2692]: https://github.com/trezor/trezor-firmware/pull/2692 +[#2746]: https://github.com/trezor/trezor-firmware/pull/2746 +[#2784]: https://github.com/trezor/trezor-firmware/pull/2784 +[#2818]: https://github.com/trezor/trezor-firmware/pull/2818 +[#2834]: https://github.com/trezor/trezor-firmware/pull/2834 +[#2841]: https://github.com/trezor/trezor-firmware/pull/2841 +[#2888]: https://github.com/trezor/trezor-firmware/pull/2888 +[#2899]: https://github.com/trezor/trezor-firmware/pull/2899 +[#2919]: https://github.com/trezor/trezor-firmware/pull/2919 +[#2937]: https://github.com/trezor/trezor-firmware/pull/2937 +[#2955]: https://github.com/trezor/trezor-firmware/pull/2955 +[#2989]: https://github.com/trezor/trezor-firmware/pull/2989 +[#3047]: https://github.com/trezor/trezor-firmware/pull/3047 +[#3048]: https://github.com/trezor/trezor-firmware/pull/3048 +[#3205]: https://github.com/trezor/trezor-firmware/pull/3205 +[#3206]: https://github.com/trezor/trezor-firmware/pull/3206 +[#3208]: https://github.com/trezor/trezor-firmware/pull/3208 +[#3216]: https://github.com/trezor/trezor-firmware/pull/3216 +[#3218]: https://github.com/trezor/trezor-firmware/pull/3218 +[#3237]: https://github.com/trezor/trezor-firmware/pull/3237 +[#3242]: https://github.com/trezor/trezor-firmware/pull/3242 +[#3244]: https://github.com/trezor/trezor-firmware/pull/3244 +[#3246]: https://github.com/trezor/trezor-firmware/pull/3246 +[#3255]: https://github.com/trezor/trezor-firmware/pull/3255 +[#3256]: https://github.com/trezor/trezor-firmware/pull/3256 +[#3296]: https://github.com/trezor/trezor-firmware/pull/3296 +[#3311]: https://github.com/trezor/trezor-firmware/pull/3311 +[#3359]: https://github.com/trezor/trezor-firmware/pull/3359 +[#3370]: https://github.com/trezor/trezor-firmware/pull/3370 +[#3377]: https://github.com/trezor/trezor-firmware/pull/3377 +[#3411]: https://github.com/trezor/trezor-firmware/pull/3411 +[#3424]: https://github.com/trezor/trezor-firmware/pull/3424 +[#3434]: https://github.com/trezor/trezor-firmware/pull/3434 +[#3440]: https://github.com/trezor/trezor-firmware/pull/3440 +[#3445]: https://github.com/trezor/trezor-firmware/pull/3445 +[#3458]: https://github.com/trezor/trezor-firmware/pull/3458 +[#3475]: https://github.com/trezor/trezor-firmware/pull/3475 +[#3477]: https://github.com/trezor/trezor-firmware/pull/3477 +[#3496]: https://github.com/trezor/trezor-firmware/pull/3496 +[#3517]: https://github.com/trezor/trezor-firmware/pull/3517 +[#3520]: https://github.com/trezor/trezor-firmware/pull/3520 +[#3539]: https://github.com/trezor/trezor-firmware/pull/3539 +[#3636]: https://github.com/trezor/trezor-firmware/pull/3636 +[#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3940]: https://github.com/trezor/trezor-firmware/pull/3940 diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index a730f47cf3..72929f84b8 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -4,6 +4,27 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.7.1] (14th June 2024) + +### Added +- [T2T1] Added user adjustable brightness setting. [#3208] +- Added basic support for STM32U5. [#3370] +- Cardano: Added support for tagged sets in CBOR (tag 258). [#3496] +- Cardano: Added support for Conway certificates. [#3496] +- Added ability to request Shamir backups with any number of groups/shares. [#3636] +- Added support for repeated backups. [#3640] +- [T2T1] Allow SD card hotswap based on production date. [#3940] +- Support extendable backup flag in SLIP-39. +- [T3T1] User interface implementation. + +### Changed +- Cardano: Increased max URL length to 128 bytes. [#3496] +- [T3T1] Upgrade to bootloader 2.1.6. [#3855] + +### Fixed +- Translate also texts for PIN progress loaders. [#3520] + + ## [2.7.0] (20th March 2024) ### Added @@ -844,6 +865,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3048]: https://github.com/trezor/trezor-firmware/pull/3048 [#3205]: https://github.com/trezor/trezor-firmware/pull/3205 [#3206]: https://github.com/trezor/trezor-firmware/pull/3206 +[#3208]: https://github.com/trezor/trezor-firmware/pull/3208 [#3216]: https://github.com/trezor/trezor-firmware/pull/3216 [#3218]: https://github.com/trezor/trezor-firmware/pull/3218 [#3237]: https://github.com/trezor/trezor-firmware/pull/3237 @@ -855,6 +877,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3296]: https://github.com/trezor/trezor-firmware/pull/3296 [#3311]: https://github.com/trezor/trezor-firmware/pull/3311 [#3359]: https://github.com/trezor/trezor-firmware/pull/3359 +[#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3377]: https://github.com/trezor/trezor-firmware/pull/3377 [#3411]: https://github.com/trezor/trezor-firmware/pull/3411 [#3424]: https://github.com/trezor/trezor-firmware/pull/3424 @@ -864,5 +887,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3458]: https://github.com/trezor/trezor-firmware/pull/3458 [#3475]: https://github.com/trezor/trezor-firmware/pull/3475 [#3477]: https://github.com/trezor/trezor-firmware/pull/3477 +[#3496]: https://github.com/trezor/trezor-firmware/pull/3496 [#3517]: https://github.com/trezor/trezor-firmware/pull/3517 +[#3520]: https://github.com/trezor/trezor-firmware/pull/3520 [#3539]: https://github.com/trezor/trezor-firmware/pull/3539 +[#3636]: https://github.com/trezor/trezor-firmware/pull/3636 +[#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3940]: https://github.com/trezor/trezor-firmware/pull/3940 diff --git a/tools/generate-changelog.py b/tools/generate-changelog.py index 5206c6405b..4522194c25 100755 --- a/tools/generate-changelog.py +++ b/tools/generate-changelog.py @@ -14,7 +14,7 @@ DIFF_LINK = "[{new}]: https://github.com/trezor/trezor-firmware/compare/{tag_prefix}{old}...{tag_prefix}{new}\n" MODELS_RE = re.compile(r"\[([A-Z0-9]{4})(,[A-Z0-9]{4})*\][ ]?") -INTERNAL_MODELS = ("T2T1", "T2B1", "D001") +INTERNAL_MODELS = ("T2T1", "T2B1", "T3T1", "D001") INTERNAL_MODELS_SKIP = ("D001",) From 924492ce1b40656762296516734ee91201fb2a22 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 14:30:14 +0200 Subject: [PATCH 260/626] chore(common): set definition timestamp to the current signed definitions [no changelog] --- common/defs/ethereum/released-definitions-timestamp.txt | 2 +- core/src/apps/ethereum/definitions_constants.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/defs/ethereum/released-definitions-timestamp.txt b/common/defs/ethereum/released-definitions-timestamp.txt index 576ad74354..86f1208845 100644 --- a/common/defs/ethereum/released-definitions-timestamp.txt +++ b/common/defs/ethereum/released-definitions-timestamp.txt @@ -1 +1 @@ -2024-01-03T12:26:50+00:00 +2024-05-27T12:16:37+00:00 diff --git a/core/src/apps/ethereum/definitions_constants.py b/core/src/apps/ethereum/definitions_constants.py index 68b7ff4b88..5357b19cdc 100644 --- a/core/src/apps/ethereum/definitions_constants.py +++ b/core/src/apps/ethereum/definitions_constants.py @@ -9,7 +9,7 @@ b"\xb8\xd2\xb2\x1d\xe2\x71\x24\xf0\x51\x1f\x90\x3a\xe7\xe6\x0e\x07\x96\x18\x10\xa0\xb8\xf2\x8e\xa7\x55\xfa\x50\x36\x7a\x8a\x2b\x8b", ) -MIN_DATA_VERSION = 1704284810 +MIN_DATA_VERSION = 1716812197 FORMAT_VERSION = b"trzd1" if __debug__: From 3760dd307c0f1bb968dc169417fb3e3fffbb8520 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 14:48:56 +0200 Subject: [PATCH 261/626] fix(core/ui): T3T1: wrong XPUB title [no changelog] --- .../src/ui/model_mercury/flow/get_address.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 1 + core/mocks/generated/trezorui2.pyi | 1 + .../src/trezor/ui/layouts/mercury/__init__.py | 1 + tests/input_flows.py | 2 +- tests/ui_tests/fixtures.json | 2302 ++++++++--------- 6 files changed, 1156 insertions(+), 1153 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 7bdb03d7ed..3d1636cbad 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -142,7 +142,7 @@ pub extern "C" fn new_get_address(n_args: usize, args: *const Obj, kwargs: *mut impl GetAddress { fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { - let title: TString = "Receive address".into(); // TODO: address__title_receive_address w/o uppercase + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; let extra: Option<TString> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index b75fcf4782..d0641fa2cd 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1826,6 +1826,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def flow_get_address( /// *, /// address: str | bytes, + /// title: str, /// description: str | None, /// extra: str | None, /// chunkify: bool, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 8a50f68eaf..3fd35708d5 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -547,6 +547,7 @@ def show_wait_text(message: str, /) -> LayoutObj[None]: def flow_get_address( *, address: str | bytes, + title: str, description: str | None, extra: str | None, chunkify: bool, diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index e74cc2deb4..2c0cf093d4 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -469,6 +469,7 @@ def xpub_title(i: int) -> str: RustLayout( trezorui2.flow_get_address( address=address, + title=title or TR.address__title_receive_address, description=network or "", extra=None, chunkify=chunkify, diff --git a/tests/input_flows.py b/tests/input_flows.py index 296e26a23b..70ea07a44f 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -644,7 +644,7 @@ def input_flow_t3t1(self) -> BRGeneratorType: br = yield layout = self.debug.wait_layout() - TR.assert_in(layout.title(), "address__title_receive_address") + assert layout.title() in TR.translate("address__public_key") + ["XPUB"] self.debug.click(buttons.CORNER_BUTTON, wait=True) assert "VerticalMenu" in self.all_components() diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 70a22dc298..8763a57011 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15811,11 +15811,11 @@ "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "74fca790957f5e10040ce9014e3872e72e7c329184d2ff75c50dac813d5bbdc3" }, "device_tests": { -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7101afa8da0c0e2228ea4c2f46c2567c2c1c0f818e0b89ae6615713f961a1cd4", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "303df1b4a6e1f39af3b66e84a3887ba5d6d76e7399cc62a957c208c20653cd62", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "d32d3acc7c49aa43a4900d40b25d415735d5099899c55c3988217512f326acb6", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "52b64eda71ccd01db61c3d575e70e9a9094cdfba332d515fd93051816a0c23cb", -"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "ec89bbccaf1c7d8aeaa967a5039702002d29a0327cee79005a77dcb659aa4d63", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f295121749eac5dcdb9c559b2d9405901fe75360237c82af1ae8d21a471327d1", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "8c0edcbf338893a7ffc27b689735b99548d6945275ea2ae85f1d57dc07980df9", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "bc2786564c9cd21e7d05b401e3b72d047274c578eca7bc451a7329ac07fd8d88", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d742f36c806e1f71a259c455bb2c65078479c38e866c12c8cebb046f971454fe", +"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "ffb94f05fd8d442b0ca04d568cff1d4eb3a0da15ecec4433ab50257f565eb9ba", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9ba5f27fbe7ddfa45ca08769be93b01725c92889db846ba1b6d1c93d10129ede", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "c3a5571672a88192f94c54261da10e13799cf741eb1677a8b54ea7483f361109", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "bbf7d5096842f590747c8f87275d7676c45ca29c1520a2526573908db9ce872d", @@ -15823,7 +15823,7 @@ "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "c3a5571672a88192f94c54261da10e13799cf741eb1677a8b54ea7483f361109", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "bbf7d5096842f590747c8f87275d7676c45ca29c1520a2526573908db9ce872d", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "e25138eb09e3b582a16a475bc97d14374e4e14737a2e4804120b73e98b2a2181", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "d6699bf5272e08a5a50e1fcb62e50cb525c650a1a30bd459a83514e25fa498f4", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6e545e47108bec5ec086c3a2179ec13266a2c909c8d0738757fb45762f59349e", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "795268a332beebdaf826bfd93eea5986c0d2604857d0f3499f57e6cee45bc5ee", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "e429b184583ab43ce892cf4cf0e3280ccc1e6f79e4f66e0daa825274df611dca", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "bf300999c66545883a2f318121a38efb57e4bbb052d3fcaf6cb68e92aec46f4f", @@ -15840,122 +15840,122 @@ "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "135b2b2f4573be1903932bdd7be95373c1de09159bf89fe8cea9143c61188ecf", "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "35142abfd997046b744fb723bc283efb9fea116e6749df59ceb9806201902db2", "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a340bc0a00477a0df9976a049b034e539c3d4afea1d653fc7a2575dc59df4f3d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "37c285337894aa9feb79d123f852cb35fafe0da40f5f9148f5a7e866685bf8c1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "30d76c49ad3d20671f2601b5c25aa4e78568e8d7134a7aabe8482e94b703c2ea", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "8db1813aa6357c35e97fcc83e2775ab2394500cbacf080de799fee16e5cee506", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "307967123af1f695e8ec93dd3cad859d03dd0cdb2d872f16f9f30614d2a705ee", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "6202bec1336c8c58dabe5f98a9f33c9ca06cc90a1fa49b5ee4cfbec3f4a24452", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "9768ec21840513b60e7d8169fc1bd9c93898cfeb61da243cdf46106ea9bd2ca5", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "47a92a1e880b18058c6136925ccb21475b09975e8aa9d472a35acda05a598ca9", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "020ee111bf7808d43794a5856762a287836b8cd673f840986c297068c5cb85f3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "5c13b076e09ab585f67d2b61f8b7d9e385fe36ccfc1528aa76725fc3f2a7848d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "7e7b5a0af6cd12afc0e02a99627920f453fb886ad514deea88f9d2de1f592329", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2d123e67bd8c60d3af563047c81f7088754045b10a866dc0627c630ff05f4fad", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "1c8845632a9cd077793668440823df6cf1f3afb964aab7c381a9b5b04e9a5f29", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9cc4ef149ab6c25a8a7777bf434f3a184da7eead7bedcec854fa9ab68603f09d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9e810c4ad224207bd6172f0e247e1567954c49d1dbfa6c1040ba272c0dc578aa", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "fc61b481f5f034e2ee22c86fe46513f38aa60037b462102a9951b76f3e6d226f", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "5b2e9afd89c9019aad8e23d4e0daaeb2714feef1ee0690f82a140f467c984708", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "37c285337894aa9feb79d123f852cb35fafe0da40f5f9148f5a7e866685bf8c1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "30d76c49ad3d20671f2601b5c25aa4e78568e8d7134a7aabe8482e94b703c2ea", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "8db1813aa6357c35e97fcc83e2775ab2394500cbacf080de799fee16e5cee506", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "307967123af1f695e8ec93dd3cad859d03dd0cdb2d872f16f9f30614d2a705ee", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "6202bec1336c8c58dabe5f98a9f33c9ca06cc90a1fa49b5ee4cfbec3f4a24452", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "9768ec21840513b60e7d8169fc1bd9c93898cfeb61da243cdf46106ea9bd2ca5", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "47a92a1e880b18058c6136925ccb21475b09975e8aa9d472a35acda05a598ca9", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "020ee111bf7808d43794a5856762a287836b8cd673f840986c297068c5cb85f3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "5c13b076e09ab585f67d2b61f8b7d9e385fe36ccfc1528aa76725fc3f2a7848d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "7e7b5a0af6cd12afc0e02a99627920f453fb886ad514deea88f9d2de1f592329", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2d123e67bd8c60d3af563047c81f7088754045b10a866dc0627c630ff05f4fad", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "1c8845632a9cd077793668440823df6cf1f3afb964aab7c381a9b5b04e9a5f29", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9cc4ef149ab6c25a8a7777bf434f3a184da7eead7bedcec854fa9ab68603f09d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "9e810c4ad224207bd6172f0e247e1567954c49d1dbfa6c1040ba272c0dc578aa", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "fc61b481f5f034e2ee22c86fe46513f38aa60037b462102a9951b76f3e6d226f", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "5b2e9afd89c9019aad8e23d4e0daaeb2714feef1ee0690f82a140f467c984708", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c35de691515759ca50a5e864a0f4831c69ac8051bc3ed4b8b911f253ef97d6e7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4a64bd3d93fa2921ef9b93a4151dde05db4ebfe27af641a4833c6336214ab177", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "cb7f468554dfdf6983a010eb58d0be929a51c463f0c7adc36481308a8f3b519e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "cd3e0905e7fe5ff2bf63a5c3b13dd1aa91dffb78b63ce95d6f92c4c7f03b2053", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c18dfa1e98ab5d3d629890db17010fe8f9b8676456da7c062ffdfacd52ea833b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "a596b9a0fb80b83ae5015e5ec158377273b708d1ae8cd8dff12d34474efe0e6a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "25163125d59f168efbf70932da7af7c063c7d839b84d9b0c02482715623aceca", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "7d7113605543bf316e2733f6efce9e5274f89c9987c61aa968d15a10044c03cf", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "b55e3aeee1ad4e1f06168bb8feddf2dee26a6757b4df16a673396979b581eac8", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "add9e631cf9a375477165aa65e204cbe0543594ff9baf1470c27afae8602bf0e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1db07055d414ac08c96cfe4d923343124e1d1f0dfd8ba443690b7385c22ba7dc", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "154d7606c894400d522ea1e6b602d0b8637c82847cd201edc35adda93d12db3b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "399d67c49b9e96d549cb257b0f7ba4c8c0ca696cbe6e1593fa9a78dfbc06cacd", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "29871a5a0146126b008e315fab05f0097f117c436cf146483d99cf9e1f848dbc", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a988b3def8a1b50b350526846f67fcdf7b227fcee4ec58e8af3151597c5b9073", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "815458ee6826ecd42aa6b553107de5cd7f77cedc4408514d50037d178bc9758a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c35de691515759ca50a5e864a0f4831c69ac8051bc3ed4b8b911f253ef97d6e7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4a64bd3d93fa2921ef9b93a4151dde05db4ebfe27af641a4833c6336214ab177", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "cb7f468554dfdf6983a010eb58d0be929a51c463f0c7adc36481308a8f3b519e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "cd3e0905e7fe5ff2bf63a5c3b13dd1aa91dffb78b63ce95d6f92c4c7f03b2053", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "c18dfa1e98ab5d3d629890db17010fe8f9b8676456da7c062ffdfacd52ea833b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "a596b9a0fb80b83ae5015e5ec158377273b708d1ae8cd8dff12d34474efe0e6a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "25163125d59f168efbf70932da7af7c063c7d839b84d9b0c02482715623aceca", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "7d7113605543bf316e2733f6efce9e5274f89c9987c61aa968d15a10044c03cf", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "b55e3aeee1ad4e1f06168bb8feddf2dee26a6757b4df16a673396979b581eac8", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "add9e631cf9a375477165aa65e204cbe0543594ff9baf1470c27afae8602bf0e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1db07055d414ac08c96cfe4d923343124e1d1f0dfd8ba443690b7385c22ba7dc", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "154d7606c894400d522ea1e6b602d0b8637c82847cd201edc35adda93d12db3b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "399d67c49b9e96d549cb257b0f7ba4c8c0ca696cbe6e1593fa9a78dfbc06cacd", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "29871a5a0146126b008e315fab05f0097f117c436cf146483d99cf9e1f848dbc", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a988b3def8a1b50b350526846f67fcdf7b227fcee4ec58e8af3151597c5b9073", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "815458ee6826ecd42aa6b553107de5cd7f77cedc4408514d50037d178bc9758a", "T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "5f76b59e7cb5ef16282811a3a38767e653690233167041513a3f6b17fb3257ec", "T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "7eef6ea828fd09e6d7e27f3e56930b16e2e28387a2b6e478f49bef2178b0d36f", "T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_bch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "888325e8fa55629c8adf16b223bc78879e7d21f64a58c417a0a27c149d3c1428", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "c888756ba82903badf0c53d903e4c5d23be5f8e2793b8d0d9bd0abc2d90d432d", "T3T1_cs_bitcoin-test_getaddress.py::test_btc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_crw": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_elements": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_grs": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "59184575550e802b9ee52ec27c8d41120dcc315456a84b2348c23ad209d1cece", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "71073072ad99c576e6df80193a982542f1058f69a5fe36d728e6c1e0ed322ff2", "T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ded376916d152fbe73e925970ccc66cd3f5c739eb0bab46585e30cba9a3edab1", "T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "c7631d1cb86a667de3c1fc1ff0394ad8f18dfd8ac9081a8efaff415ac54004b1", +"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "ad38496c1e1629f70b9dfbdd7bf6fc92918010c0ca3b5cb320fb93e0389dfe63", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "0837d01122900153b02d18750d77992222ad3af6314b6495fed963f846aca6ef", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "50366977b1fb4f62f9ae55f16938db0a610ff8e1affc3f941532634554abe2e8", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "7a614f73d5f036935c66541fa098c01d877b013da8a4c17e64dd11ee152d6a7c", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "8f18baea56c91924c56c8b28abc0fbef2e919aca897164263279d370e96f317a", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "eb3d53f1135f891fe1d0177f85c7547be66e28e5a557b921d0c987799af2b384", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "97a1caf7f988c26baa5fe2f03cba5693983880a51fb94247d5329db566e63ddb", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "8af392507adc163c9994099d951beb6b01a487fe46f8572a1d95019b76bc025d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "1dba11471d8e0fd15b5b381eabc33e0b93540ec0fe4fd82539516042426663ff", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "88b6b002551f58da4e1641e0d0a444fa46adb1a0949528987fc32454ca41c528", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "62d21f48cfeb0d80b3a1d2097bd1d3ad242ecceef91da6e50528684d3b4bbee1", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "f85781fbed7a09260221db8d3c9279bb992d7f919bfca5b2c7840d6c11dffc9b", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "21a1e3c55711b27cb45a7486164539d1f2d272851400f97af0f63f0a6478efac", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "06e8047f7b570a9cb934a4588d058490dac14ecd22908e00f8758d7dda2e37ad", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ca54f26279a404a047891a509173c12835a75869409d9fdf13ce81c9bfe67b56", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "52dad235d015a7012415434bb9feb32da44f401547c4c78dd6536ab030562c4f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "f5d3422ee8ae944a36f6db2f08fe982b177468b3ce1baf408080a1ea7fa0b1c2", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "caf4631eacfa46d5fc9cf2ebc2540b519e2b3b7ab9bd4b67ef01eb609ca15992", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "d2e2455e8586df1b96f1e3a057024376d2405529fe45e54f6da1bd505ab26e91", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "39258c9da4ea90eb8111780237749979bd538e21ca8df296dd13932a06707c48", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "6460861e72b66c288b9df7831b36c482d084cfa3e846cf82cc91efb226af4fe7", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "deca3e961154ec0265534eaa20f7b9d0107fad7463749538a5f9a476a65b3917", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4b5cc6c83ee4d37d8a8c45eb1b102165935c1d2dfa251747180519a305cfbe38", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "c677276d5957715c41aa8a972524dcaf64ee03060536187ddb5dad8829f63f44", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "cf7dbcfbde86dfef0953d8b6bd0254498719b4115cce5983ebc3d4aa55feea0d", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "8d5f4896b262be48536abd3e0e92087281c4cb909d398c76eaa8a96b1bba92fb", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "2d698b47fa5bc2f4c81c60e54811c8b85a1ec04033aba0c977b25ae5200dfe73", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "cfa61c5b93f3132bb3057d23cafb691af1b89c7b1755f158ce78430c2f8a59d8", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "f481556801bc6145d13cc2f75cdeab6b70f3f609ea67ca54d5c1f0dcbbabeae8", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "378d0aac1d7f9408b673a0c00dea57a1f955606a5e15dc03e3aa44c98281c8e3", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "9dfe3590f16028c076b2956aa7c8b27cd63035edfce8a02abfd009510b71060c", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4dc247410fd2999c59a2c694f7664fadab814f8ed93ded040d4a38ed0aef74e1", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "f3443f1c233c25542e40adfc064da2acba8a701f4fbfcc4fe04f858efb665cd1", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "dfacdc817b7f8b37e1d677cf6faf2ae12c43462cea445d11a6c58f8d043586d9", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "73d709d548b2c7f65256b48d3cf4aba2473d9003dca429a6437833e812558d17", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "7b7e2bd79871889c549082e7be5307bde8268f8bd96926e730aca246db456a7f", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "f4a415cb7b2ea888884a7ac793181ac6cf8671972965b76a8062e5c0a0aabeec", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a02a39144bb3bd54313349b72d9749c7041062b289172d46229ea3c3d3dc9ab8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "1099ac496628908ee3f0132186b191c6bc54ed6b800b93dd75ff8c445799467f", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6364b7d161921223559f5141d61d3c712de89f27208323036cfe80968f04ba47", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "72b7da8ff1eddb41d286819b94d98744f1abe44eb48f030bae607089c677d24d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "72b7da8ff1eddb41d286819b94d98744f1abe44eb48f030bae607089c677d24d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "338cec75a549477ce1476b7e001e0a57c102ac409f3e8e5cbd562825b5b90027", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d1cd6497dcdc9172f71b3d8599a34bcf073900f27f29227dc9a6e14fbec18178", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "f455d436ccdc67b93f0459305f47cd0417a6c30cd51de18e7cc712933292f79d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "1d932685daf87029c9c5274038676168343e42583faeb93587c4746dca1e5040", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "9310ef543dbbcce7b5673dfc75bec4cc835dc99c04727bf154d421a57c3ea13d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c7a130bd8e58f54d901e3d9ff4b0708464fe5e81840787f76f733c7d7b7d1dba", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ceea01d9282fe057b3a3049f4e2619ac3a6abd39c8a6f8451c28037883ef20f4", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "a237fff8dac1ae26e58e420e03662dcf0fd945f41529e52c0a8852d4be68b15f", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "84193ef807639480a0c541718c63255782ba9c60644348966aacbf129aec4f20", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0a52eec01ba8eb7fd57f741ff9409f679e41c41244c5d68b29e5ea24f6a27e2c", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6eef9ebafbf778048c6313a4b969a51a89f333cda58afa57e923d0d1d4f672f5", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "b66200f16862c3ef311f4ce0ab7954116a6e6267ad7e51e3ff781ef84ed77d66", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "212fdcf7f57e413919ff0253e4df16d4a9e6ac8825935f3c671d520296f7803a", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "44ca5c71feebfb2f19d3cb9308b768bcaafb3d4dc9e4551f18da6c12ee63b9e6", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "540e730b69cb5afd19ddbd1fd53403acc1b69c4bce1939e254859b105506127e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "489645ac21a7f2a81855034147b15125e3444309c66a65e8a421e62a483a2608", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8f04e4959d5d5c1e51828515b6a48d8149dce38abe8f63828f40778bcd576c8f", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "aa886570cbb0e5a1a37cfa341832553246c3618add20ec8c8771621346e5214d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1e654f347aa22466f0ae031a8139dce7d072f0c93b1119f5c83bd7a30d406806", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "3138525937e1c824c1fcfa8b678fe0e567f9b450bc998d38728355e69613558b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "3138525937e1c824c1fcfa8b678fe0e567f9b450bc998d38728355e69613558b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "33e8c0df48d2de986fac94919fdef14f516c20e5f706c3ee0aec61c038a3d932", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fb0d58c21858205dbc21b9aed9c927932e40f50618bf06a52ba1d565b98f3145", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "581cbe088065dd08ee1e868a91be1c7c97334e971af4c962ef70a3cec07b3022", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "9343cc4bbd64db2004d7ef333ba58ad4d1000924dc666bd5f38e90724a92b691", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "58b6d5e713c8aef2fe7cf53392b70f58d173e8fe4c62ab213c349ded23c2e1c2", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "44827a585bc946b9ca66ee008f7dbcdcb4666ac3e2264b34257a28c00b6bc496", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "49747ec85ff28be24230b67922861e0289f6228ce12ea65f3aae2aa86eaa8454", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "763829f5b52ec9371e4469f08bbfb7d9c5044a8a5d4ec8edeb014642b4b986ea", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "59b95950a67dd520cf9aa73761a6aceb67d028323214cafc5ee509c4d8fe9ef4", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "8dc57ba351f4bdb46778f0d0a1cd547c05521f9e27eb818d28383a137e2d556a", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "7a6fa615b5d3e3a61e1bb1ce1fc1e27bc5126f258ead53d8e9f2b92f2f997c80", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "9c913740164c1903e3d1b2cb6534023626566f8f4f886badcd9729923d7e7817", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5b9748cf5823cdf39590bab564da072937c58ebe5f7630d1b384aecb30af948c", @@ -15976,17 +15976,17 @@ "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b7e761c6cf41c6eef23b272cc5cf322b438b04003a034cde31f14fd6aed30160", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ad95461af9737af9966f95e9d88eac38e7ab535d2d874ef38881560e263f7bf6", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ce18babbdfe7eb79722f56201fba578e44015a4c3d0ab165529257602128e4cb", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "346569305c1f94bbf80522254e9a83ee60f7164b7557325eb6e23a64e1d12707", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "45d2649be693fa95e030f6c14d8e188040f434fe7abb60b65f15b896bb85c1f1", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "43423e54bb6bef8564916df4ec13dab2b5eeac74fd2783543167bbcd034d7e7c", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ff806216152cb2f4e467ad7db1b76762db7e8fc5cf1dc24ba48c8e437b497c35", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "aedaa0b3796846361047a5e9f8940dc0da4993ef5106f342896005ea2390501c", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "406c0c9fcaed87cdbfaef0475bf501658be771f1a83a84fd0efed2a76eaa700c", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "f16133c83edd9bfdd4e5c585416ad71d5166eb2ea627f20a1916b3f7289b2c21", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "db5364b7ba16311234ab1a05d70f329a0c958ec1012d4c14e37dc24d25a73126", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6415c61eb3f8d859180d410a347e02ceb45e408db668d0ef3105e85e57d1a931", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7889627a5b2c8bd6c18feef283f87f1da80b4a44328fa9fd555b04a225f459e8", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "38a5682413fa1889c65ca260d88f730b6976f25f49bb1ab4e31a81c8b997b880", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "c8998c1f23dcbaa74c02d34e728c04b6913f2c5f345306ccfdec4b79b1ccde37", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "69cf92e442d8d273924d0c719b45790a2b3a21e6e5e28c65dcd7bb1d12bd1c17", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "883459b4a1ec13f45fdb621558e27432cc6066aa77f25a7824770127cee55b3e", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "26e5002215d51e35afc6cbd967fdd6693a3e402712d51acfe7b14c5da2a7fd1e", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -16027,24 +16027,24 @@ "T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "e84de1b0c0de184d4823d56f69c67db3102d16e9d4f7142cb87034381ed6e23a", "T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "6d7560634cdd782bed2be7c318ad4367d8ed79fe1bd4a1352784d48bc05f45db", "T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a0b57a4394d8ca37fdc08da5282cf240cd34c24ee05cb6cdd3a6c01b6de5f7be", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "b63058eddb2ae2eeb40fa0353e14631c6e5c7aa099fd41476b29678747757e00", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "c143d84eaec72fb34c919f1cddacb9aad2fb17805be79bb7eb9ced88009c1c6d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1a965b295e07ec7f954707269135f704f3e4e95d47a288793cecaec4b33a010e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "fe185317b5e26effd30f51587969b0cd12b2ccfa44452ba2ded00382da3001f5", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d06769328b9961e82e5e1940848825f03e8485c14df657532bf7664fe695ddcd", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "fa8ca6816004a6ed50dcdf827bbd0238e170edc75e3100eaabb0b9f4f4a2d755", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "7125547533c6c714efc3d842231e33bfc5d7a4cc42ae9d1b3ea14485756a9adc", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "573bfd555d67a7d615c3534734a48e989abfcc345e68e6963e88c150c44489a5", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "3a916b0532fd133e0c83278c4661a87c00af534c79268e403be9b865dfb9e7fa", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e25415e3135546201d78d01fbad0d7210cf1bbf2fb8f237f441f93817a150da2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "f846e64e9977bda5771cf36f530b93dd277ae548820bbadae74ec27cfb572be2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "98e67c1615388dc3152235aed054c69f0c5219e453837085e3d14da3124c93d1", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2926a2e2dacdc1951b4f2cc464fadb685beaa7e90dd1ca49dee07bedb3657c6a", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "fe2c523f2c7faef111a5e97eea5d57da56a97f57d2286bb82a781af186f01f91", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "bf7f94a899519daea4578f02e938d1ffed38665b74615381f6d56ce128338fa2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "cc058cbd33f5bd1b97ea61bb26c907a8696ef5bb0c33bbcf0ef5611c58f71ec0", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "b818c1ce351566ceda2a454ee0c3c8ed2ee1eb5015c23a66aaf9ff01b3f69f3e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "647c45820d7058d2bd5e2a1b9299a6b85d9e89c4ae39fd5cbfbfc306464fbd2e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "2e241d918ca317665198ced45c3204f160d85e56753c24493ab3a38179afa662", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "6e4d57cf8925aed9c90544d0200fd62cc65c1c42f9244138b9163e679ff4aaff", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "bb8ba64d9382d49a2975d7378f1ab380556bd7683c86072e90de8463bce37245", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "4f525d7816b421ec31d28b6915271c6fa45d46cfaec00aba6b6402b5be536692", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fe073a206b251d4574b97ba05b499117029a4a8b118223bd02d229ffb083d1f3", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8918516e241ad3824d530086093ec62055ce7fd19782b94a6a1520dcf619a634", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "844a660b63fe8357f09c99f9f2bed2c99f818b430f46df51018c5b7fe3516d0a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "b3708324b5eba4672120132ff45247a68fc8082e4cccecbe9d907e583de07bc4", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d9c2ef8920116ef0308efc7959a7a9cfc216040514a7297a877f62c97296eb0d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "7021812cf6a8df4230c1cb7433519e6381281317920aad9f38b6ddd4cc382e57", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1c6aedf32e9b859282770ee4c7759231b2eeaaca3172e94efb3cf5eb5e1dbe28", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "87948925ffa1e9d239b6717e1225d6d74dd57aa73c570759b0cce9ecb1cd7e40", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2c2c275a5ff5072f65fdfc7b985af2429f6531e0d9b7d3df4f616ec16a5e8759", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "717d638feab18cd298e9c400ff31a5ff3203a75ceab35b88853a7f9b4fdcfa44", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "bc0f1b9bb74d22db2fae44486ef63afae5948f843e828794d31494592eb08d2b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "8a4bf54a1c2996363647a423e37f11e62011f3ea1cee42b33aae23d727e63f82", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "abf92d19707ce9c027dc2b9c950a63d5b4de1dc68057e445a9579a919b4bad0a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "0d609ce922977bbb691d39b733d194c5b7a25fe8a1fdf20ff78838af9dba895a", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -16262,106 +16262,106 @@ "T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "d0221c3558c1615cdf73d1ae4395aae9417fd32b6c309bad97d9b962159c5550", "T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "0df3f16c5f7913ca9e65c85a1ed61ca08ee9a6e29785cc7a271290398e415add", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "53a6ff019a44b6e40a2ad8f286e22d7e0abd9a3dc07f57f617178b8543a5f4fd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "fbd87d4b2b3d0f18eb81c17ac52834ca07508d2ce23b52d82e9ea15fde83be48", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "b93503c54184d9b585368dd3893d1b233b7b335fc4f6b1d4b9c1cfb0d33d28e5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3a42d1c197340a88e81e94ebd57ab777caa4ed5f874c6b56f9dfa953d2e482d6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "ce1aef3d3dffb1fd20c879e9ec7ab04893d275a436a8b29674e53436ddfed16a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "fb5bb17e7cc4181f9f0c1fe44ed00dab7daed210766866f2d17ff995223e876d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "169d1121a6bbc4b3d31d2cea82a50ab49f57491a14a9388a29e2af59a2a135ee", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "6da6a61089e30777bd84787b45542b5a862eb99e7214167af33c5cae85f9be66", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "d23dff3b37e96ea16e79e43eed0531eb38b991fa3865372829bc2d565c889b06", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "083778fd2234ebbe080686614ffeb50f47811f15b21e99dba559613d35747e29", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "ce223a7aef27607220b8abb4f5ec976c8c6811519602982c975e58a6b411f8d5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "7d6817e4211510a24d624128a00f04ff8a541c2443c2c625a27930c7edd5a1fb", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7ec4ecb4657f3fe2cf6c6c92c3d4573707d36b6806f1bf7f1d9df2028cc830dd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ace96112b65b94619130f9aa90395b9220f1f09db64bb06d87265f1cdec3f40c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "a61e3e281a717ba938134df6f95537824364fe19fb54686dfff33e3716e25686", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "73f10114fa34124955975f63bd14d501e469d62f8edb81c34d34c38accfebb37", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "1c3d077ce9799690b8adb0eda8ac66584aa77592e2c501fd3e576b26ae6510ea", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "95f3d317bf42021067163a964a6f60750f6bb05c861a4a5b676668e0f00a621c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "54b3997bf4f1b73a0e594b64eb8f06516a3b5543f652b2dc4abdac4a22a0c7aa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "84fb65ab6e378fa39b8a955efa954e17eb45e0782d1efbc944d1a032410f8716", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "865b8d4c41ae7c1ff45d012ee86dd2591b9bd9d1f1809029d497dff945347e54", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c85963556622dd56a20f3344e1b502a950a64074fbe7699f59abee7db6b9ce3f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "12137d590aae0c722e0673711b63ca7347914f1a9d398794c2f84457ae8b0a72", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "ca86ad4d0ed5c4fef769e607479f046ff744fd0136b7d4f13f5abe6f81b42f34", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3e884e191c1ea0e94298079d028f9e35f4800b4ecbcafb1ac503328eb1e97778", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "0331633980344e8ab098cb3db149bed5e8a96308baf06cc9a8e350915c822b73", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "0601e74cd253df88d30a1baf5a7597f86aeca24b02f5215426c0c02dfefc08be", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "3123cc99fa43aeaaca5bf2c8190fe7da03f1326065982ccf8c69a75531298a88", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "875f445874c73fc87f766ffa3649920db30bf36c038cf4ffd412db30c8fadd4e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cf69816d2aeff5fdc1226e78acee64211fc0c233cc248b48de2a4175c4f96552", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "6238802dc9deaf4357fc8310dda0f74fdfc8d640b2e96e18215e1812581e4172", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "48225d67b424f9555649e49fd820c70768b5380998fd1ba5bd3574643eb8834a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "469b4d621d2dae2a45953c02a63bc0ca0ea8d287c67a21546bcac2c3cdfd862b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "38d081410f05721b78b1fda0bfb4a07caa35b59bf4de752e23c4615491db2dc5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "639e0cf7b834b188cdf2647d64ea827f94bf725bd5940740ad310e454d9fe2b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "25dbce88cf5d2fa49be4b93cb35a383d851d14f23ad6f26cfa07d1fca71e448c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "0c4d1e38d4cac934c0087a1ce99beac4346f475ff8a887f76158e3ef7f50b8e0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "cff3205ac4f39bedae86dea925ab8a411da29f491fe5e382309626238d8d1ac0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "fed04296cd7ea7645ff20442ac2616f0c7883764a9e084eb21ab99936b1c376f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "3c30c40b4e75e8b371185a7b39e14a1bb8316f188b5a6994a72392b33c458132", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "8115f11c164198fcaea50f946a71214e3518961dbbd64d7c2cabfa50b175c3ce", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "82ec21b53b143f27cfba3aa16d712ac5e00f30610b5cc3b863f00703febf45b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "dfa08936cb8bb903ce6401517f708631307c4382984c784debd80483d84d87e0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "19cecb871510148f163f961bb49c7b65c2255802868bb2c22ca6be856061c8c7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5921a26b79541b3625e003cd4ad4892b6fcc75772356ce663fd69539990b7a67", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1e51a526b00c95a1ddd2de7f23d97adc9a44d7470d5a91756ac93268d3e9d1ef", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "c7c5a621c48b0a905b41eec1f7ffe2a4c76eeccd2ac1770c33ecd6e691cbeb22", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "9217b3ac409fffd26aecd8aac61a3cc90a22143993d673ed940837c4748cbbce", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "68e9744ef8b20be886890728b84c24fe70e55b138ab365ca3ca212688eee5aed", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "a19e6dfc61e1872f36456be55fe31f0be8ce7894c44d075cd487d2c5f1bd9a70", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b967c2acfb48677bd6402a753ce360546c36ff377d658b893cca6c9b40de5eac", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "1b21b11c79e399858429436ea1baa12b97fc2499fd9eb2f2f9c1caf030c37e11", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "b47b7b8b31970b9d86c1d1290f85beaa75a4701da0ad8276619780ed20556056", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fb1eab528f370c81df6a655e97b3a8585ddcbac8434d1f683cc7c903609f33a8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e368bc8d544e084924be656d303b193bddd8e5d2e9d1ad00fce7b58f167b54ef", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "345eafd63d97e8bc82d76d66f892ec10282b9d21670ffc1741898b90130fc856", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "928ce22ec6ba79f96fe55c7cdeefe2ee62bcb4758426b5f5b5e8dc580b9d8f4a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "7cb4f62a3b5b73832d84be8fd4021f6bd38dc8cce237e5ea287c1cdc968c5064", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "b022dc2f44c5e80f11acc82b5bb14a980a3dedb2c98af4cc153e79b296c06a35", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "96a58870d95cbe609156807c89e88806a5e1e6898cdb207d0e1425f1c8ab7900", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "5d64a0f8fc2db6a936e60d85b87d2d4332f4a53c85fc27cc5671e426b6345597", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "228f8623bce9bca6d85a2464a774a3a414505d31d3620f35de483eac08263f74", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2ecffcf5d28f489c6194e742701f61a23f7dc37e0105ed95395f67ffc26a1174", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d2ff75c92f5031000da9e366c4e3205b2b7df8e271f78afea53e0b1f19d94ebd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "563398dfb60c8f4d08e069e88e8f6e9f8a7a7d2a5c877f76050af548ad1a6b86", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "8def246bb3a30b517c5a07a7eaa8457e16116e9ceffba8dde20562f20e0ed565", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9ab91ca442d793d83cd01094d04ad1069af81bdf1f107a73bd0416bcfb726eef", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "b89932f633fac79523136d95a73b171f9adfc7a18dce8c4cd09a6f60da1eedaf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "fffa3aa16f8ad9397774d5a379693e950beb89eeaf199166eb30ddb607773474", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "30161f7d604e9ae0441518fb55684923edb9e715c6ba33562777772800fc1e70", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "4666aaaf4484b7604916a9d0327e7c7a4b09fb45da0982b27dd099121215ff7e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "705bc852466e2fc0058ab7a1424129436a333dbcbd532aaedaf180d7a6b80345", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "2e02cb6fb34cee20d12f152d0c8395032bd29501499a2c5d6cfb10762ce54414", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "9ceaef9b9eb35085d4904804d5d42e6db5429eae2a411893dff307b5abd0ed28", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "c7e172a49d91bfb26b112a8f80e6dc7cc5dc311abedfc39dc4a07468718060b4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c815822540a3de85cdffe3dc8ac7460ff7d143ace9bef93eb34e9d3ad3d3ecb5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "61cad2ad9ade428c4d6690faf6dde042a118e13d65711baf62f18e9108b993ec", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "51d2c2dfeac62a025d915831ebe196f4cb4a4c200659654e7b63b4887919a621", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7f386ae3719d67f5735243b2d13a43ff513efcedeb0370538271537f9d94e8db", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5c9a7b5c4e04a03f0ba6deac1d09241e7800ec9c4a2235190c20447295a85ca6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "3c611d6e8993bdf6f39d7059af1d29bb7725693eb9fddd10b69aafde48460f38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bcd4f6d8e211f3e58e56315247deb69da9c2be2aa0bf6cd8bea8810f714ef18f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "a3b92d0bc9d0cb366d03c2610f9f9225b139bafb618eb4ffeb52a78c325928a3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "830445aebe20e84ee422155841a65aafc80126a1ba9867461ec773fcc1ae6e5b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "de3609841f3e7af189aea683adf5ff7c16b6e6e62e01945d519b24bd5b23adc5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "7b25284e8d2a0880b406a76eb1c68dfbc4c1717983d0a07d3bc8354a60c7a386", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "038923a51af517a81ade0e87e4c7383dd5a56c2c15f890de421dd332ab160dc0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "ca23a64d803277868b595757ca7f4ac3efeb90cad7927c005f8a0ea4b6c9fa73", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4ceaefb8c1fab2d65919ecfe4b4255fed71b51944bbcd806c78fcf2bc9ee1d95", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f83598ce39a7063bcb999a7bd2d39ef7651a1cad091b19e416a01db9e0b08d82", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "bbe6a1422c2d879ff3e112d077e09400cc4e05f4dbd45b82f7701a3e6c61488b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "3319056f5a9af0558a977215677af7497de77c4ece514ba3a95263d3e25ef3a5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "0203b702d6911c31a56c863552ae98a996215fce7d1f4bb395f6851d366bdc5e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "95718a6514ff82671755a08d035edf72fa2f5501614dda84666a97c867a759d0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "beaac8482a92a86907058d611b2bf4d45118aa261df23e705895ed3a2028d949", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "08f26c9cb02a738512715cee170f5715c5401d6d174aaac48f5705692d425b67", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "491a7fa92e914b4472ecfe38448b3145321cc0bbccee6756e9e30858a7c0c95d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "36afa0a86cb45cbe42a5798a7c69bfcb6b81949b9314fbf58993379db95e62c8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5010e021e7724ed9e1b2aa4669806b16e56d58a5654d95757e84e7e559508893", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "1a4f1cea22d643c2e1ff91c00d9a4ca3a2f9222a5e42112edb15c62067b1c289", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "bd2fd50514a558dbc67312f4f743eb0df23bcda287c5878509d93071af5f76c7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "5a2629b56be08d3fcd432043fdfec44c93d52d4f9867997517807c8c3b2dcc62", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "fe24ac4284f78ba3503a1feb4e6b81f7d4b8e6a75bc0c437ea15b01f7821f57a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "18f83883cc3e88a88fdf75791f809f72066c87649ea5a5772dde9d6f13ab7e8d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3f22bbc1df606be69611c5bfc06f1d8b8ff0ba5b17adc8235331d15fd2c168ee", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "926b08bcc492abfa7046f49a7b3d5dbeafec05d2c70279c3e2ff03916d2f810a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "8eadc2fc156c2d58d489c78e37aa1fc18475afb2cf3e383e5c5f78b0492d3422", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "7c6f0fb1e709935c4bb1d1959aa68325bb888b90aa27d0a3baf718aef7905657", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "98746f9ed8a3f18b64bceff9a3596357815a468d7c75465b90116eb23f5c1cb5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "0867105a5fda938aee016c20bdc84a713acb940f165fdb56c2541d5d9d95b71b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "f2aeefc1ea5d7e333f4535cade4993327fd350229fe4ad97cbc46a5c7c58c0f5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "c4350d0201228bfb4b351339ade2cac55f6accb9d1eecbe43aabe6efa2b8937e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2d179adb51a177a1b89de1a99d265a62aa337d22a3d48149541cf77640286182", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "0c2fe5ac188e927104aed1e6c9242c9b82a056ccb7ce7c60822ee0d81b7b1fae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "380602da929f686c4352d12a8d3b08f7ebda11a0602e0fe6385c34375e365b5d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "da95d1d6a27541fbe90eb53d82bbee2b6de39b6ab0d01bebc59c006bb5ac44da", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3dbe22dae9b2e1c254d12bdaec48f29026cabac680fc92743c1a5f6c1b72b24c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f718988d1d5ba11382cecde69994093c84a8140b7fa58d725ed86b393885515f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "878fad3599a41627e244bd770c83130b1e4502d419547bc06abd45475acc21e5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ad57bd031a626f419966c6a1abc4e7cfcdc9fb754b07a6c87f108296da4f0e72", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "a020e334d9dcee22dbe09aa340efdf0e4088941087eb0a8a7d978b79fe1ad99c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d47a180735802a521f2eac359250387fa06997c6cf51f46054b58993b13206de", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "f3b7bc25a49aa1808e98168966e06dac846050169d91e129daceb0e70b1e0869", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d48a54b7c1e6aab8e7a6deb96431b69c7b00972f79ed00f713466e8872a16941", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "d5869f4524c87e3236bccecc7b9b3d517ce630543fe0a46e48f591ad719e5ba0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "aeae690b56377fde71266b8da044ba53bbfa8bda78cc2fe06ce654a32017f589", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "3942ffc2b8f42736447dd80946f3a48a1a244351e46735668994686297845180", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "9387e0ca8ec8d0683ae627b29bbbd717517ffd58c8975bf29864eea5e7d15d4c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "30d2d6e78c96f692fd07460cd428ccf72aff3b9d63ec2480a07c73decf6eaa76", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "b59f5dd7639bb67b99794181393e141e442eafb1437fbf1b9670ecb1d7ab1508", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "02505c9c2db0f84520a6d832818cbcbe824679fbb6f7891c03b99c695b04d546", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "b68c14172eb0af0d71d6a6dedf8e399b6fb2c9fd3d0819aadfd3e94de212b7b6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "12d28ad8a85f29c84539a9eab6f108190a49a13e51ce53a32f8dd10f162ec363", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "4f1b43d03b5ca2b4bc3e96cd7b4442bbaaf67d6b346708b8eef044fd223cca61", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "92f3eaf02f844b2a21c804cc413edcdce48ba40ed29519cf6e0a51ac5f48568e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88fd090d2b2dab8ed153f75f00c5dbb7dbf675a449b1df27797cce4dd2160509", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e4994eb47b22c6928cdcd2911d348514eeb890c99514bf14817779b1298043d8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "136aa6d109936b482e50dcf6464c0865d0725eb881b437ea0c8f006e83bbbb0d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "7eb6dcb4e0326bff47c487bc1dd6fa7b2f5568b3d7f453edd01e9295532b9af0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "825881ba87847d4b8e70aeaae8c04601085d9a7728c97a311ecc7beedc83c6ae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "26bb473b29e4ec2f4470f1d3eaa08f6078b4ec65ff8c3413e80585f5131af1f9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "b2e830770ebb161cd06861b9ad164cca6119f65f4e63b01e2424b7b1b23ce2da", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "c846b8318f2508b56c94849772e902971dee8adf62942bb967b95c02a7b91c87", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "0175ccd332289d9cb18c9439c7c2999a63e28e0a7aabc9113abd89c49302b20b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "55db4c77f5f6b5d889a7bcc1d0eb1a59fa759c6ec5641ab06e19566f50750aa7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "f82cac2d4fe3d71206600b2269719914070ac22c7882d30560adf25ed4d1ef28", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "dc3684364f3430aa3237c75b5ca7fceef63402d2ac8cf19cb0a7cf9f65befb1a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "9f17f36b7b7aedd8bc4b9f5ef5a8a2c66e5e3f25594492963054ff79650cfc8b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "4c0abfe80ab323885e30e3f8c77d640fb486feb55e12f3a99f8fbc5dd511847e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d6a70eaf10d969d6280ce37ace23fdbfa15d3dca35ce907b227b7659d6b90573", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "41be270527cb29d1ef90637038e3a3e2c7cf3afa970f714ead29f94116f4c43e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "92d8ab84ca862861a335cd040fc0827fa7cdd4dcb61d2258e8ca990381948163", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "2cd1351e17ee636cf80183a84cf7fab080471b4f361d83de9c0dc7e11f18e8a4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "03f12b5bac54203d71949b89b1f13d1fc421cb9cf4d25344a87b116f2c9497d4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "96711521fb4bcab5afa21d98b6eb22c913cbfa1317d5d48ff7e4fa3e34f2776f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "32ca5ce7129261182b5775cc4c18eda416f7355a9bb6bfc0e6773f1cf8441223", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d96fe56ad358b41d287f17b4135ce4a0e6733ad8388e58c03e9d4a0ba7d05dba", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "4bd226af29b31089cd30f7b80b1244b0ef727408a6bcff364b0f55ab2dce82a7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "fcfce227c8a7214ed0b9eca15c7ed608785c68ac5bca5437b5951c2e39405f21", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "2edd51d0efe13e6ff44d54bddfbf2037723adc8bf60573ec702decfd79576357", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "4db57c544f62e61cccf843477d4d4de8fd1b4302673c46ed9f69311dabd73b62", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "a0712f15be77c593874a05a120844a7426615025d943970882f43dae02cfdb8d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "6ac1f0d9fe2eb5f7e14d500e141a4eee9d49e10db634a0771df32c988f4d6d5a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "7b2fa94450b8a4d71759c13adf8646868208f545dfc1d1cc636b7309df104257", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b466c3074fb8f2177e2e9261d2595c829683f04d28a705b87879f3b3482db5f1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "f1a9721c40bb790350d17c8476da653e62fe9cc68eaacf380a8d3e1a76ecf288", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "658f735d12a5cb6f5f4ef1cdc2c5bddd1c1b6b286a69f03f381ca84a4068a1fa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "39c53be9f277bf5b71101478ce425be4a0bb527f5e9b73410f70183cc0475f60", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a9ccf3fd157b469d5f3f52bf3b3b45da6de95171fafaea54ebc831c7e09d8e48", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4181e232880fe2a1d838d5185515311abf1e49ef4669f6b7a1c116348c04f325", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "9a9785c09f0802dcdfb3fac92923ab188311e748c157b4e3ead08f13c3271907", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "48eb166fae383e2f15ad328afe3e1229732ac697e609af0db2e9191345bbe039", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "4028652f73e5ab7ab310f1277b91e094ef91ec317ba6264d24f27debf2c49645", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "1380e2ce0aa441ec7273415802634f96471e3dd746cb45920d7964310b17e1b6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "d7e4456a2709342c4c03c721a6301145b4ff69482e21d4678166953284e9cebf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f8816a6f7adf73b5dc06c494ef49c9894deccf52c689ac99e53d190781921408", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "dc577b700d455495c35d2d5311c33618ddb19f13d61dabda7ae598bbcfe91b2c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "5e2000c4e96cc212bd9fd7a0669c433d26de6ed3a6aa929d3206cc414133004f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a13f09bbc5cb1cca39d74ce56f3a1bec1a29a96d644ea996773be5f4e267f202", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "4429cd4e635b6d094c348f9fc06436fe8b2c32f99beb8ab4b7d302b9168a05ae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ee2deb7b9355fb8cc643d15759463f33d133984f2d8ff9bc4df9cec180472216", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "cc4fe28d21209fd66f52c73dddbb5243c0b80ea3a284871d9fa72cbc30be3ef0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ec6394c2a97f7ca2fa912eeb6cfceda8cdc2b70a597ac7e308f441062e422d5d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dba6dd628337af95db37b279d110174cd82f7c82fad0fb80cae274cea0587d08", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "d7b93a4ef4b750817221b0b95d7a8ebd19b06228849048d69335f61b145c2fe1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "cc4efecd176e83323dac0ffa1259c1f2b0fdd5f423fe61a5b3e3e2ca5bfec63e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1eb1cfcfa1a6c1a65bab22b2e41bc3020a3192ed22febfcecfcd3821f5f3849c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "1779e6a0bd263e15d1546909162a5bc5c5c8dab9ad4a4f9b7d001f922ef56136", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4aae844613483ad481fd093bf3fe1e392bef83db044a366f18bba4227bb51de5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e9825ed7e84e2ac3a9488f3a15b29c3488b46fd5ee0a48ecf416349eb1bd15c3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "24bf7e0a8a939c8ab47df20fd70bf06a9a3fa0959418f2f2eaa77b25a4dc801d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "ba31576d2ee5b052c37f7cdfdef929f5725bcf878134cd034fa17166b863b845", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "286ff2e4ec705d38236aeef53185137308185681f1a8028bffbec6e95b97cdbc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "07aa2402c274ebd3a7b2be8272e722be7ec0ede14002b1dd46d55e469012d389", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "acaaaf96048d51c868056441aea9b3d0c4ab36dde6c26f3b054dfb4d80fa2470", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "7b08e04b138180eb92006eff8e43db7a1fa9dd00dd89250d743bd5922959c262", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c99fdc1a4b58ccd5674f5b08c4fb82c0fe2ece7cd53f33320034dd195d8420f4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "e8335e079329579a2011e4f11cb1d93bd6d9e553818b3f7b4cd343f20475eb52", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "592946a434b8a661400a55cc5b313a74d86d7b5d9d203a5242b9d0439eded675", "T3T1_cs_cardano-test_derivations.py::test_bad_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -16633,18 +16633,18 @@ "T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "9898b320bd0c9def79f7324b33cf000d44f7e04413a27a065119403ae83af046", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "b0d9b978f0bc7d7fa0a556c9ed0f513c71c85338a3f4b3e61b4ce46cb4ffa2c2", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "77911b1f397056967961a1b7501801d57a84f1e97aeeb76ceca61ac403497c53", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "e0c43b4f6d611ffe74402bb558e97a57b1879a6d29c8360bfd760d1e968d5bb5", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "ba149e347a226d23ae448af811f3ce9c5f35c48d64c434063daa946108aa0ff4", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "9a58929ce649bacbdeb69cfefa94feacfce909fb92ed8cacae7a23e71f440f4a", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "277a4fba3145d22f5001497650eb4ed4dc937f8ffaf1caacec7ce9ef97d489b5", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "302224abb2c29edaf224983714827d287337011df24f42f056053df6cb9bb543", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "23d338a2d1114867bd90d9855d30ee06614f87e88e99bc95159ad1f7a7736812", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2c1043851920bba820c433d9a1dae5c2f779b51e280baa2cbeda2b7b66722f44", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "e429a159156ea8721e7ca919331e52cf5a1866472dc6650e4583ef8f1255119e", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "7f540b7561b891aa53c0b133c8f83fdefbe2f412d432f065b6d0b289369d5f90", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "c0788d7b5f5f560ed0eda1f13eb5186bb632f452931fc5e10007b2af08932f20", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "77fa991edad1fdf9b3d2cdb6803edd61a86c7eed3cc54e0237675aa036004c34", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1b49f2fdf92fbc6aab940710821f2f200b95d8c032e7b4d670dafbbef0841b4e", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "1bf98b26469a3fa79e788db0c52db8e47aa6c014038e4ac2656c9340ab27e70c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "30882e0b42492d8152b22aac211c0a057f32d65011b25c9f6e41c6a6b39cef8d", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "2be8a10bc814cd42adf83d60a8b7a53f6c07913c8dba5484c545a083a425cd29", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "58d5eef010f6025531f618a36845244d7ae509de019631735ce7bf256629471e", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a3e327a43fc36d81a24de781bccea9c53802a5de31aea00b3657efe804113a0f", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "36399d81cc0b979d9ab89f086400cf39eb5a711c3363e9ff8bd733908b9502de", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "b0889a4910e3107170af293eac1fa2aef47125fd0c98c36680f92daca585e46c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "ecc6471f2bbfb7f9f7553f9bc2a515d34b124b251e348fb214c216ad911408f9", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "248fd7c1efca7736077467f1054cac4cff52d1c372eb059e8c23082920cd8d99", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", @@ -16802,12 +16802,12 @@ "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", "T3T1_cs_misc-test_msg_signidentity.py::test_sign": "4f39852fcec30a852e74b8ede0043637b67598965f0fef3925fb78160dd7a7ea", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "86d4291310704ea94873b8214865c2c13ce37ed0ce770fb58a34639faab08a56", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a96d4dc1b4167a6680f959663bc1d6ad4d9ea80ed96e409cfd45f935a21b9c21", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "38a245516787319f4a0a645a6072ee4cd8921b95a2f5caeb9f875a40952c7936", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "135acfb8433280183d350cbd8411fc47d6ee699d323330eda85420456850b276", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "042f5fdc9b29bf084339bc62136f6035ab8bdbe0f4cb9fb8c497e4980a34930d", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "9416bdd24e760be97e439db5d23cab47331c679a2c66bb91d551765b06f62555", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "214f188525486bb34673ccf7b0bce79919208fd888ef1904f1c6fc02df206942", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "5354941e7093639a96684258f349f4e913cb31dc7fb886baa4ea1961acf77bcc", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "6a45f7cdb93561fc85ada02debbb1557f710cb73510223c305a5dc72df1c8960", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "58c144556790826166643f3ca1e91c1f44beabe14e56ec29e22a16e9b1662828", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "c94e99466c76302a25147f292147dbafa395cdcf7ed4a2121b24518924b09c0b", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "701a065709ea9a966e7328c97bc08af6217dd2a5aa1a6c6f391868271d236092", "T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "30ae4806ff6b6fee52fa42639444a4fa2713a969de51b24398d28fed5ec08171", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -16862,22 +16862,22 @@ "T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fcc5872dc571de0ac90a8b4e85b0c71ec3ccdf57259395d64ef17ff77c817109", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b52b6513d853fc8e8a86dedcf392b2e11164d53dd968a9e01cbd1ba2562640c0", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e2998d7af0f778bd24035d463e8be2e0e9449527ba0613c82f7f39819e247de8", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ef34de74fc9880d182840276867d4cf2c3a7c4a6b76be5006042b0283440ee1a", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8f8175b8dc3f206bca2adace19c5c18f12deeccc5ec252993bd728e2f8248dd1", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a3dfeeefcf64608588a2cbd8afbfa1e20114db93193b6f567a828889fa023ed5", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "b88fbf7e36fd8c965a3473a199b5e06a1d6221b38abac12a230409a437f6d45e", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "24ebe4ef90fd514c7875bc431084bbdee25837ba0e691ea57ed132ef24c56a21", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "155c282c74f57cd70de5e2fd6c3a631cf61e2f784558b768d27ef2523827cf4b", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "50603c4d74b3601655e8858f44ea3aba4e8b3068040c462defe9039a39fbedc1", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4abbaf876f8cb7a9ab5dbda9268e019869bd76407f073da1d705891e6a4c3f9f", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "0148d8453e66fc43a37a4f159306ef9997a31509045d20db72650330e47754dd", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e739ca92ca25748f96183431e9497e524a02d888ba59365595feb52f39e2a8d7", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "c77c15d18c9c6fa480a654cc78cf3f31bb8d4145542e7e06a6cb59e60fb01eac", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "6f81a56d36580ac4b2a70f2b2ae8157e3abcebde87d04172ba002c21a72a4b93", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a759baaad79a72c6e9c9542d47880433f71be13be4014bfe0a6ff6e8a0518993", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "31b98378e1639b21d9b0cd2115e2b36bc660a5a0cb23263770f0f6a2688ade6e", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57dd91eafbad1adb75b2619b1b02888f915ad5d9ca8412a64d3a2506a387715e", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "3dbc269446bba1593cd241c42f4e901750576fe4ea4a85560c90d43dc019a1c0", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b622ce57217b0b2549794d52977d01ce023178c6ea9bc73cc6f29f4264d61a6f", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "57dd91eafbad1adb75b2619b1b02888f915ad5d9ca8412a64d3a2506a387715e", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3dbc269446bba1593cd241c42f4e901750576fe4ea4a85560c90d43dc019a1c0", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b622ce57217b0b2549794d52977d01ce023178c6ea9bc73cc6f29f4264d61a6f", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "19202ef42b7c58a773b043f1c10322cfed6fe6da0391a11a1f63fd3d50d81c7f", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "131e1079caf5485a0b853454351f8cf081fcf173601c575bb029e623f1250f87", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b78e9c0354897a943f837684f23653cbbabfb17698c93adab779a4e8ce5c3626", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "128abc2858b9ebfb1dec79a9d65fcdc73e4dae7203627fa106a30c35152ed291", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "53aa3f326a66a8a75d91bdf1341a60fe24f6d1a4741fbd115321bdba4a0760fc", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b7c28928ed2ad9991b6a484a7a3a41b8da45e4bc574078b99defd67f21c07f84", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "acaae17ed9b0fbc11e0cc9bf43a680155eb5613cd594d8b4c003004bfe3e9575", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3a40ee7f271952a52a7fa156ad91006ae0747464dc86d85f3d18e0af5b6f1a16", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "96f01caad0447f3efbe6f19923b024f3452833a8d1b312e89896f3cdd3b4ecdd", @@ -16947,26 +16947,26 @@ "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a79be0d65ca173fcba0a54d5640ed34ef25f3627125b181d63c8fdf0c1de753a", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "18ce9b7ca7f9b8624f696c74b70b101ae1bf7c2e5d81204c7218ee9ba27d5473", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "00f80564af22147d73b60a6bcb6c5cb3c00cbbb42871ea1d51ffe91a440242dd", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "ff63be464d03dc0c000d72c3cd799bf455b968b7b6dfac30b3b19f4f3a44a7c8", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "91427ed37e9e8daeccaa7fe20359a656345ef945f7d7e458ba430c02e8c71602", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "f55a09a2182a02cc26aaa269251eef7314bc0dec19cab79b57129d45e10b5500", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "97bf55b5ebdc8558d6267c9b3ec8225582a09473c8e41150650d2da4001a9077", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9d4107f8775c15a8da2dacc03f37a1d127422c8c1047486f50cd8e04d69679c3", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8ba5be02ae9306ca2ae1cb183cf06e572e9c42a73b4d497514913f96b3c40e8a", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "922f457f2a1cc8b4179330f953b4010790d7a966fd1b98bea0167b2985b19720", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "df4fb53032fbddf928b1aa28b45c0893ca3f223799188148da442e262541dcff", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "ff5c2391c29fb35d9d316ac38c027cd2a11a52d463af561f50d48d1e5fe2f367", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "7bef649f3f6544a60adf8c32d29ac4bde9900f65e98efe3a79cee82a5124fd8b", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "29f8b17a37ad9bd94023f0da6eb941dc3aa9771351fc2b969d19171cd441536c", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "356cd7d3c1b1fb8657bf445812074857d9e48108bd62968394a6c7af6879cee2", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "4c65b071eea840ceb90ecbaa80c724bb4a21a1ebf8b79f671408a595dfdeac7a", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "7387e8b22c33d38f0c4b0775dbf626bdecc3d9d07692551a478ae6481f5341ce", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "1b2f74e841e939b87ddb6cbdd6b9ed73b57e4887edeb54799e2aed604e2ed910", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "c91e0e163b89a35a990b600f9799fef59ac24ae44959d7887a498d45429c47d4", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a33df1c42758a3e9b16ab14874437a8052cab494a729fff936ae2a347be74ab0", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "6c1279c302e235d1c223d06d0a29eb5449217bbdd4cc9ba30a242fefb2333c1e", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c45246d319be1eb7e532e0db0c97d724883b9f7cb83aebfd872e082915ecbe4a", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "d0408d748239a16e00fdc9bc867bfffd56697cbf7e093b026430a4a34800e560", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "5906d27374b998e6c9e66e593d4d886c1517b02ca0b13523f11a62e5c5d695a9", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "925f3bc03ae6e2df59c98251b3bb69134580c5c7da0e64985f055dca23367db5", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "faebe94e3e8c793a9c10dcaabeaa230eed88136a0db2bc708ef0bbecd3a239fe", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "014cee4d4b4638d5ea37a311f018d5200a66154d8c36a57223e070ec11e45ad4", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "0e6c993a2f42bcf268769a1a504532096fddb83de4bb688d7974605a19bb6d44", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "43fd13f074f5fb6ee58e29ecd686014f9cb828b6866c5c1d1180e8d8c0101087", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "82f8964da22a68ba01e8b369fab19ad6b2d81a868a0f44e5bc2a4c807dfba1f5", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "73618ad15376493e8b223304d889ba02278a9ee9c631cac63a4f4f4dcd109158", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "7a24ebb022c7ea29f285e969e3895fa9b4de5bfdf992d06b33ed3415549b69b2", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "0e575ed84e8cd2e87c901509a57f34a633f8c5d450b319b202bd790aeeda4367", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "caff7597497c88a9c2dde20f6d08fda852914c18a4cc00555e17caee03354229", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0e446d2144d8937d9d4897a57ef37b2a6fe426c60d1b001952805d965201c59e", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "de50a6250fc127a1bfcc829732da26223a5b64854ab0176db6b1199a139e42fa", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0ec82e7bde0c37727d58e3ccd838b26de0150fd875571661ed72c42365953f77", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ecdb7201452efe685a1882d668bc1a896c2f8b66a145ada8bb39d69ec0b08144", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "f3279e9a2adc37c425036e01343cb73244c80636745d8327cfa0653a1c301821", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "5486e594fc015a3f396d8a1450b4aacda7172099124cba93488eaad696c6a056", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "5753225e1480a0f649a44d8a20e271f61e71a6e253069a5767a09856e6b5951b", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "719cf665adba8647b546101bbb558f4db0118bae88946dcb16216101cbc73443", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "9f5bd47630738cbab2c0a305b831e909ebcb246bafe0ab72ec7222b92fdce825", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "1b4032b26887edf72b877a9757c6f1b72485ff33e1e12d7cd1ce89edc1bb6d10", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "65defb235f87d6b43a1da12e004c4de90dda7589fd5186af9a6fad40667a90ee", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "33250f58847e51ef0b75dde43a5a49dbd0a6724eb37d05412d248cf4324b9822", @@ -17010,7 +17010,7 @@ "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "7ec7c7329725b99bd1f9ed06baa454136876f6f7e624c52cb0d8cedb863f47e9", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "c63c13e5dd1557b1fdcda3654822d8a0da7135c94c02beefb3cf5a2ed99d9a5d", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7fb75455a5ca4bca7ffd54b0b3761f8380d576f1fc4802b91f92782f6062e0e9", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "facb325ed157caff94c4fd82c6b85efc140d4080b49af5264f3d2623dee17ead", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "096de7510aa8224b495f352ccc5ef707604846686e867510a5c563c155e8768d", "T3T1_cs_test_autolock.py::test_autolock_default_value": "4b61de109f66d5131203b30821f201444f3da5c700bd7e78009a837ca57dd917", "T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "85e335514a1fa0fef627f0329cf03db7cca7057767c941fdd9f4b3f09ea57bd6", "T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "85e335514a1fa0fef627f0329cf03db7cca7057767c941fdd9f4b3f09ea57bd6", @@ -17020,11 +17020,11 @@ "T3T1_cs_test_basic.py::test_features": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_basic.py::test_ping": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_busy_state.py::test_busy_expiry": "a2f1a220091d026e1ef43fb075fc4ee8e5efe47f811bbbb0317a7df173075106", -"T3T1_cs_test_busy_state.py::test_busy_state": "ec22583440945c9f8e3c3cb72c41a4e84ec5cc8d1ddff36421787b5be92fe522", +"T3T1_cs_test_busy_state.py::test_busy_state": "12b3fc0ed1c6ecbf5abf26c06e3b6e799b3c648a559040614d039aad9516feaa", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "7c4a1a7682fa733531c06cf7112543a5745eb4a14e4b959caf5b68fc2fffe6a1", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "79c1a7760da5929438cabbebfdbd67b822f3b26812c695f3e7a674a877400fee", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "7c4a1a7682fa733531c06cf7112543a5745eb4a14e4b959caf5b68fc2fffe6a1", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "79c1a7760da5929438cabbebfdbd67b822f3b26812c695f3e7a674a877400fee", "T3T1_cs_test_cancel.py::test_cancel_on_paginated": "7a109cf0bf01162a19330a39224ab3f2da81994e393cdedec0187a9fbc5be0b2", "T3T1_cs_test_debuglink.py::test_softlock_instability": "fdf6a34e87947bd47196af675f9b574f29276379d0daf61d72c6b1c093fff6ff", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "c3f1de4575b8475a9c106c2581439eaa8f932a591ae25294099fd900ce09bd3b", @@ -17061,7 +17061,7 @@ "T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "c990b555bfcaa06d3f22d85038c868f3d96e49e9042ca36484f757875f7479a9", "T3T1_cs_test_msg_applysettings.py::test_experimental_features": "bf16a6e311d82973cc2c049083741f9b52577ece0d54735ae972f8b89851d55c", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "72b124cb1211a206c2df738d97a83a13eaf3e79295da51eb9dad19c575df017b", +"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "741f044e2c5e2d4be2cb9cc4a3727ac047d7c1f36b063fec84d622230f8fc9d8", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "6009d612aef0a77e5683e3de4b7f078ca1360bab8fd126b7829c3f1aea6491f7", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "fd9a6610bba06fd860dc9b504ef9f3eb95d196dbda2ad92cd6aa570b5af2f7ee", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "7819b7108d3909aa5bd6be905a1775e51fa518df7278208928fe46931b98ea0b", @@ -17145,10 +17145,10 @@ "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "29ec4d3d874aa029f6b01d4be33c7c5fbbf4d3eb0f7cf2e7f181e0c3bc0594d6", "T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "c8d945581c6858f581b5581d543e210b42bc9f5613729895888ab02d8e358b4c", "T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "40615d91e6259a21993811512e49e35f5821519f59196cf33d51f19b08827685", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "cb8a523de18141bd45eceee9e1ad1632903bd4d801a781b1a11dfbd5e1a9bc9c", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "a0093204f6ec80034d89d0efddf20247d922b85b9b05beea2e72df2cde2bc9f3", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "44dd0b426eca66cbd8abd0722dd61620de7acf7b795caad6044608187278f3e8", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "e3c76e3b1fa3e8c2b6a932539fef82a8b3dd2f62384cb0de9c2a2fb3cac0a46b", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "62aa257671cbef5b0aba590feeb95d16d9649eea807bf24a9e75ed16f47773d7", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d22c54476d52d8a1f1c0aff7578ef7a413622fd22c3fdedf44c31e9e5bcecf1e", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "448f6af0264b10b8394b3930751089840d5d4be8013e270382882b9c5eb9a806", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "c5dad0ac67c4a34af2a2cc683e207a800dcc1291042921561e7e44734a29e475", "T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "b55a875eec7185f154ef28c06995bb3b29e3d29fbd1e13966b0134e003b15e55", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "203035fafc67ca2fd386886fe4e0898aaca3910e641a6763568b8c62b4f143fc", @@ -17175,11 +17175,11 @@ "T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "eac7c9183829cb7cb48d5a254cb5bedef5437d91fde98dfa735c032761a517cc", "T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "407b27ab4f1c201ea206617724408e2ea3097ea239ff824fdb1bcc25044de99b", "T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "bc2aeba74b1e569788ad61ac8b202dc65e30b7df61a186df651bbd04972853ca", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "29ea63b9f82bb26d024eeba367402f6e6261bc752cb6c37a0bee56a0d537ae25", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "c243fc432f961a9d8f54b97351aca4c609c4b4dcc808204484ec746988a15d30", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "33d9f964f7eafd3deca15781830428f919a3b0af6df3a7191ad69030714ad5d3", -"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "477981debe6c8e0cb2719b0c65dc6a8e0e3f838540a66fe720348772439e1b39", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f928c6cc555fda8997a05766104411a51a0c3d913f88b411cfe3c592b6082734", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "03e643479c4245aefceaf163e403195f5d72f86ce90d3ce07855816e13187cf6", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "04cce9e5761f34074afdb6a19786eaac34d8101605e46287a2aaa6ac5160e09e", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "6cf0c83a2778407d8027b2f4b0e47809d2f00f54dbe10fe8522e6fd7d4eedd55", +"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "49fe0009333a1010a20ae5a6fb723e1770298656bb3503b04cada12d0b8bd6c1", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4ff58317c7488dea29958cbbb6c674407174432bc8a96eaece276b608838f722", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "3e28545928e4c3a89f1832d785b59de7f1664b51366e2d3b0563fc464edfd3ae", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fb00423cf3189d8753385d56dbba2de48dfdcda6071059818d06f52ad29c8248", @@ -17187,7 +17187,7 @@ "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "3e28545928e4c3a89f1832d785b59de7f1664b51366e2d3b0563fc464edfd3ae", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fb00423cf3189d8753385d56dbba2de48dfdcda6071059818d06f52ad29c8248", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "89f77c5701d55ee1b097816ff6989556ee7785b910d3cb0dfa496d965e79f127", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "8aad2462523dfa83cf6edf0af779c7267951f36d3dc1bd24924c1317f6700044", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "6e0b795fec2f0fa5a6ad3c3c29daaf4245ac9eff7e32858b4967819336f8d793", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "3f1dc1dcaedfbaad08a0f2a9e0fa647ecd5080f621cd3398cec4d17055b1264c", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "8832a745d87675a3ea63189f52ae09d9e48d734c4f087433fd349441c707db7c", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2a48672daf15ca01c31504903339e3aa4bffffdc5d3cdd5391e6e650ccac92aa", @@ -17204,122 +17204,122 @@ "T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "e52bf2b926dfada0475555f24afbc0cea03a8da6dbf95351635e09beb96123ab", "T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "ac18141076ac087c30615747091d39434d47f0f9558f6484c1558c57b9998e34", "T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "386fe8e1b512f90596b415ae90e8a475c2a083894b7bc80eaf76db36e9e0fb90", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "e1c30c4b1d80b99df6d324fcfe11af0a56b0ce05ef35283360d526eea623e7ab", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4d490a1000785eefae566f90d011be02b5816bdf706941038e57c9ff28e64bf1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d904e67d4dc07677fa8fe641b3ce76b7ede9122fce1e4fcecfd51d397dac6b19", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ed70bcad464a58ecdc3817cc1d39655844dcbf472c8d371f6fab95cbb4c60672", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "044364a0b58bba0395d306f98c415360e8a26954501ec8730e3b7103045b6681", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "71e611b0db091fd0f80a93cfd68fe5f5b72476301fa12c5d8879ce68baccc0cd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "92c14d45d7db6686b388be8780efb12e24246732bd534962f5dbf4c6029393e9", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "0b4d5210da2474bb73184a002e4b21e3c91c0f4f00d7fb2fa4eb050c181db9cd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "78de7f2e2201c27baaf244002409667d27cf980e743af841a87332f5e3473d2c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "1f41fc7ffec60393e25de8c2d7c8bd73a6d8fd5d3b87ad3493c6e8305a12f36f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1af491b6eed000d0ad69bee4874c75379739b60dd0a24fe73109a7d3a7c0880b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "884c3082098187e08a51fa65ce53d7f70bc8b509f9c668b4bfe519fdaa3a7659", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "530d2fa586cd91abd631ecdd95a4fe10416d3d2f552b09e12677dc98cff8d45a", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "680c8cf272b13a3dee9a85b25b61dc3b6ecfedbaeb4d507177f3cf36784b5d96", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "244dca955773fc1ada5e34ee4f71b675e946f09d56a399f05b8b4b41c89bdae1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "61706749bc029e357b8fef5396b00b8e8df06de3c943d7aa0f2c4c5a026c119d", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "e1c30c4b1d80b99df6d324fcfe11af0a56b0ce05ef35283360d526eea623e7ab", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4d490a1000785eefae566f90d011be02b5816bdf706941038e57c9ff28e64bf1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d904e67d4dc07677fa8fe641b3ce76b7ede9122fce1e4fcecfd51d397dac6b19", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ed70bcad464a58ecdc3817cc1d39655844dcbf472c8d371f6fab95cbb4c60672", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "044364a0b58bba0395d306f98c415360e8a26954501ec8730e3b7103045b6681", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "71e611b0db091fd0f80a93cfd68fe5f5b72476301fa12c5d8879ce68baccc0cd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "92c14d45d7db6686b388be8780efb12e24246732bd534962f5dbf4c6029393e9", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "0b4d5210da2474bb73184a002e4b21e3c91c0f4f00d7fb2fa4eb050c181db9cd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "78de7f2e2201c27baaf244002409667d27cf980e743af841a87332f5e3473d2c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "1f41fc7ffec60393e25de8c2d7c8bd73a6d8fd5d3b87ad3493c6e8305a12f36f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1af491b6eed000d0ad69bee4874c75379739b60dd0a24fe73109a7d3a7c0880b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "884c3082098187e08a51fa65ce53d7f70bc8b509f9c668b4bfe519fdaa3a7659", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "530d2fa586cd91abd631ecdd95a4fe10416d3d2f552b09e12677dc98cff8d45a", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "680c8cf272b13a3dee9a85b25b61dc3b6ecfedbaeb4d507177f3cf36784b5d96", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "244dca955773fc1ada5e34ee4f71b675e946f09d56a399f05b8b4b41c89bdae1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "61706749bc029e357b8fef5396b00b8e8df06de3c943d7aa0f2c4c5a026c119d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "79c10c13efda1d7586da96a0337914cf170810d20533d3c350e49c626b093d2c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f8ae2a125f4f136d2d0f1cbab11dc7909b4bc99ed42fc30341a9b811b60a8740", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "5943f14ca043989b6ddc2c000f70ffb9a5103c8da56cca10b0e5d5ed3bd54a98", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "a4b1e3960db4e72de8c75ee37c908624dbf28aeb522e8a62c87bd842ca8cb943", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0c20ad45846672f070c5d3458bb2d58576edc3beb2b0d27dc74d39f6367eb66d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "6e960c26df3e37d04fd35c5ce8da512f0b336aca5beeb7043758fc47d0fe2e91", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "d4c83ec0e787b4bbda61e71b90acf202631ed9950e819818a413cf2df64ae0bf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c5f1156a1b2bcb948e83fd87e120df0dcd10e089ca6e98a8425e5648006510be", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "33d7060c2756396a85f262e9338b095268b03f749b515e0637a5d19832d3e69b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "fded80d445b881885c81b743fa0e9af84abfa21add6c02d015fce20098a7cb8e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2a32fbe6a8fc2469a1c7121416c0464905140a4f2aabc6f2ddfdba09b9fd8243", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "fe73715b68cba71b408518b95999f75d36b2b2aae24fe42db3ed09abd6f23101", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "08a7078c92c64e57aac998d02e355d2d46bedb406336916be0da323704adc5e8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5c15d361fe8540b456261b506f51a8d2e7a631a903c2fcc456ed4da925818388", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "64b5a884ab6c086867b7971c0f792805a13dd938993b7a3df9eaa7885323be9a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "393f61a399bb281b6d985d04bb94750e7f9d4aaf0002cf260b5b2745f61e55eb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "79c10c13efda1d7586da96a0337914cf170810d20533d3c350e49c626b093d2c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f8ae2a125f4f136d2d0f1cbab11dc7909b4bc99ed42fc30341a9b811b60a8740", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "5943f14ca043989b6ddc2c000f70ffb9a5103c8da56cca10b0e5d5ed3bd54a98", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "a4b1e3960db4e72de8c75ee37c908624dbf28aeb522e8a62c87bd842ca8cb943", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "0c20ad45846672f070c5d3458bb2d58576edc3beb2b0d27dc74d39f6367eb66d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "6e960c26df3e37d04fd35c5ce8da512f0b336aca5beeb7043758fc47d0fe2e91", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "d4c83ec0e787b4bbda61e71b90acf202631ed9950e819818a413cf2df64ae0bf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c5f1156a1b2bcb948e83fd87e120df0dcd10e089ca6e98a8425e5648006510be", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "33d7060c2756396a85f262e9338b095268b03f749b515e0637a5d19832d3e69b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "fded80d445b881885c81b743fa0e9af84abfa21add6c02d015fce20098a7cb8e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2a32fbe6a8fc2469a1c7121416c0464905140a4f2aabc6f2ddfdba09b9fd8243", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "fe73715b68cba71b408518b95999f75d36b2b2aae24fe42db3ed09abd6f23101", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "08a7078c92c64e57aac998d02e355d2d46bedb406336916be0da323704adc5e8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5c15d361fe8540b456261b506f51a8d2e7a631a903c2fcc456ed4da925818388", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "64b5a884ab6c086867b7971c0f792805a13dd938993b7a3df9eaa7885323be9a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "393f61a399bb281b6d985d04bb94750e7f9d4aaf0002cf260b5b2745f61e55eb", "T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "e66bef90461fd23c25b465b6b484fe8e3a3216e55afcff7e47d6a41a4636e5fb", "T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "04b2fa27bd1cb14a4299c8a467d0f66813777d3fbe406ee8cc82e5de8ce31398", "T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_bch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "efa735ddee3aae8e616934b765577708d3da6354a39066d5f59c7c29a611f6d6", +"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "bbcca3f3396a6aa9d2b9f153fa5c4188382506b64b7ad55cad933d864224b0e4", "T3T1_de_bitcoin-test_getaddress.py::test_btc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_crw": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_elements": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_grs": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_ltc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "3d9d5472a699312b9d365598f10dbfbf01b0ba219be8f6be4ea173ee93646d2d", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "cd2876d3dbb24b4e8e0087a7a9f4e5a3b995f1e8af17cfa585bd44a602cf6fbd", "T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "229dd2a895a5d2163da07627cd817b395e89ad73a2225bfebbbb4ef5fed02bec", "T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "a74afba576f160dd89746537c83a3157ffd3ae638e26000b4ec929981447e15e", +"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "55970b8f30ec1b034f338534f37f2c8663424b4de6e6833278fdc91e0d96a2e4", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "9face34a3b22920935f94cb93dfacfa8e654baae0e6ad11dc776cf0552451c3b", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "10ceec1e33fdeb047ade8e973fb98e8f7155be0f88a31a3ac05827b5418f9798", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "9ffb79ff36b00ce77760924e87bbee6228f5c79eb194af08f267214950d7f6fe", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "49d5b999a05cd06e5cb805802385524cefbadcaa414abf58cac64dbbc96cd3a2", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "076b8f717fc2bb53084a40d584365f43e4cf2635ea4edd518be4ec6db8a753e5", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "789b0c1c6d2640208336582273a3b3a5b06aa78c675b7ee4e780c363354ae775", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "14510aeca687dd920f4675abc02ddbc3bd6e31ba62ebea7a7c1abbc837b9ba24", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "92dd853583f2021043f94d5576219c31396c38b71e1ce023c4370c0589e954cb", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "600ab73d7e0c10f5752aaa0d619f835c46b6c8dace7a63b1ec8ba87a04ff5bf7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "08497eed3cf9f7e097e590a753f53db7c4216dfe894c812026ab51a8e14d912f", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6cc50dd075f5578620b1ea8b35c0bc1a63e101dbfa47c7ffa33070d138ad21db", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "cf8f31e98562565d5deef579824565d219497198b892ac20b2a942b958c470b9", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6c4294e5f5f0baf99925e5a83f45d9dc97ef94af9c00a3fefc17e3cfa9cd1f32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "566c4f3764fec63f5e0c836b5410020f4be079385b163589ef76acc63d6e5a21", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "2401809e99a7e7212a1ce18e2ff8388371164ff64f182b4fa9e3afdaa706b032", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "beed63827f04eddab3c605ee56766fe31bfd91d66e54f0ed7932dd07e8da14a6", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "c3cba4d13fd6777604204e31dad58f6c8f2d9c78b8904c5a9f39b5415690e99d", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "69e1b0c18d2ae75a307fb10800b4cec13137ab56d7ebb82a96268d6917d0ffd3", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "7782486c71236af402662b02c8b0381326e3ea9a400b930fad78f0f8036debe5", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "8af8cd3d15190bcd6dd7f3fffdeb50accffe68ead12dcd3c47cac2dc90bfb24b", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "4f6753d445521063fa2a8f368b71f879e1ff45bb3a118e8fdbf812b6922e9ef6", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "cc9f2ab4aaa06c6dc1568552e497bf81ba15a74ed1b2a47e9813c6330c4a8062", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ecd0f3d60d4892b242c12c02e6fb3fce28637e7bcf73828a25222195e206c2f1", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "7c047ddf52f477ecb2f4d6c0fb6843044682478e06992d48184f28c72a7a7155", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "f77f530c564f909c213d25386874dad0435ef756c75487328069382ca4915a4f", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "96dd4bf93942ce0786082b2f3d1197e5f826bdee7d6a7672b82149c875a106c1", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "0556858aff854a463617775a7f7d89c5fd9718a3fa062590f4f6f5d609a55e9c", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ee3195247ad72211b1dc6434529f7b51945efc10aa13250cc2dba006c54ca1d6", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "eae6bf15d39f8d561d38507e6aac631d9b9c988f75795d6dc991a8fd564ae431", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "186da0d1957c800a7a8e977f3696b5955b420c1c3628d720b1a786e0c9786ae7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "a23c9cb96616b54a058e67e202dacea218f4bacc94b4226afc595c0cd6a6ba8c", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "7730d77c98c282402cd3e23f5f7ac01fe4c632b1af6d97e0459c982d4d28f44e", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "b13f0e499c3d894e0505dc762677c8e4849a41d4e69e2343a41e35d8486df2e6", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "39860107fb5cd2f1b8489029a21ac67408151039e6e20cc8c0fe5df402fc5d52", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "189742ed258bededde906068196b43a71e71eab98c0f5562c35f992b4f17cca8", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "7cb56f55bf6284c941974031d8aeda8acc3316ccc570968261c40065a2ff2651", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "904203bfdd98bf859db1f8b05eabdc048b5d90344f5dc4b5176ec2a5546f43a9", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "bb02369da2574acc4c9e155574d81519163f25090cf3bf43e70b1b93dced9aa3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "4cec908f7e02db4cc5ffd93ded5185c6f85b47ac36bfaea46b7fecb0ed2e93e6", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "eb0d150efdd3e2f1760336e7d61c1fac76200e6aeb51003ee254a1613d5f53e3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "eb0d150efdd3e2f1760336e7d61c1fac76200e6aeb51003ee254a1613d5f53e3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "005eb33f480cd3e8759d371d2d246a021ce7834d9e2fd833e8b6a794196848d2", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d47d1d4046f40ee9cc4aa7cc3c66a202538ad0b6a02aab4a1fa5e68b9c5b2099", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "d1167ea50485f95627270a8b0343c56ac750e88eaf61a570f97bda8e7d23344b", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "8117a9e70dfaf392351ea0e3128f58a55b88cd95f9797ce0447f26c365fb3674", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "25c2826358d0f24df263adc2fe30cb0278f39d64709078ef2d6e29f0fb3bc038", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "5854201e04ad6b35c14ee59b7a9de586706c5fb04ebf9aedf0ed9d33ac35b12f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "01d0b35ad3a022995c42dd8e52babc8895c09678d98a7d628ce290643948bd4c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "3e61f1f80b227bcdc2fabde3f448d5b574dcf517e3c77284ebec33513c709327", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d2b79e7cde44e53603f67b5d4522bc385c2a098bd662d46602e529862109d2d8", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "56a6d0ee7e3ac08a07f2ac50b844dfb3697c38fa880cfc5681e02f62bc62fcf9", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6dbdad338ec4352728e8dbe14b74fce608d67785a3fdf742fca57a1aef78db5c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "16a2b025f67c4ebab9161bee395251b6022bd138d55f4b04919312d2b2701e45", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "1669c1717e09b93a70d0ff5f00a0c158158b0be0c149c6b0e3a046f4dfe62b98", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ea14ffc201728bc2250339c5130e8334a08eed5138522b7293074997dd8c427b", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "b29825a1187cda2a6f1f2f98c3e42456d6190eac3dee379b61657985a0055955", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "0db48d4a4ccd1752d70b6e8beb260508ea162ba5aedcde58dc3a0ac44fd0d949", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "06ec433a79fe7f7cc83110e76dace45e38401437fde34b2c985d1fed6010f3ce", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e4b031e6049fa9c14ae33528f744d10a466de4cee69b29ddf46786a10675a1d0", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "a69ababda2469ac53b4c004be0472e6d60028e69324bb50c18c7c453ab484692", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "35bb3154ead77108002fbb15b4a35c49387df04c5fd92ddd1543f797abd2a215", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "35bb3154ead77108002fbb15b4a35c49387df04c5fd92ddd1543f797abd2a215", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "82f785c48e6c2fe86cd3f195cc677f82bccfe2afb3ead2880a177d40cccf7df7", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "f22559411d9451f77f85cffc1b753e6ee871c2523e65e9d1ff01c1064590de62", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "2244c192d56f1f905ba7166e518e53f4e83d9082005e8a2bd750ecd4a4bec5ec", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "157c7f4707e968289b47bab9bfe3fc01daa07c71e75d0b7b8d79a739e83b9a59", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5262d007231b581fa59cd402589eb14eaab9b44fc3baca30e4b7fe7d8196b768", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "61671b8b6d86bab4571b8cfa5c4889f3405a70fd033399129ef02d7aae379877", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f10940262646183b0c6bd6b15c650aec213c5c75dc54caec1216564f122915f1", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "d29ae7b4616cbe5d11444dedda9815a145625d7110499c013c4af528fa0b0914", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "e61d40a6c49e92c2035ce51356ba6e8ae7a7f4e3e3bcc51875d12f2304aac9b5", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "c1e9162a48d29694350ea173b30c20ae8d734ec9c58675785cff49981ed93814", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "74ffe6a0baf06c8c8c26245e55b3e603a8d7c38065d372c544ae275b82e77aec", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "fa1a37429826e81d62a3c2b8d87228aee5287c795dd16dff531f9bc4c9d52589", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "aae088e2363ba33700177340d81b0b533fc428fad222ec68e650c0ad336bcd99", @@ -17340,17 +17340,17 @@ "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "099b1fdfa0a20e423558baf7b4fe8a223988a25db9ae39dd9896816c6108e196", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "2633ff51c39bf34827cfd357e2eb156b6111325d343b21f1c3b9aec6f4262b53", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "14e9102c533aac682de255e1faa6050fc4aa301bf49b00031ca5b5cb1cc751a0", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "11f3592949b27ed8b757fe155550656b5d054c200cea1978cc2cd592b7142a34", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d318a2f0bc388931a250ca78f793c3c906ddef564ec1695a73b0d764f16fc25e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "dfa6c43b3074d1c8937d121f2fcaf0c02c2f40b014db29cb10ccb1eb3192edf8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "b7652f1e9aeffd24634d338987831fbc964a18fdc30d00a10a31e1e43fcd70a5", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "45f08b378488241dcd5f6b4476cb8db1f88a38d293f11f557560fc9cf24784f6", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5e348a086781e41a6b873b8cacb6f7022eb85504d00803f365460766a5749c79", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "bec12784ee8614d14309e209e420ae66806b9b1b464cbaf0ae3e1b9abeb786f6", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "c480ca90a6782370273f61f0ad113baf6919416a2ebb3ff1179e1823bdfa24fd", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "dda52d6688efe066be3ce0aaec799b8a86cda0e6bde2734727491e529ae2c67e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "a560a59a6445b18344b22539b6b0f7a638206a0fdaceaba43171704d957dae24", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "1e16e4eceee57e68fd6f3ce2858fd94892bbbe03526c6d87695464928eea3706", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "192c673a671ad9d18e1ace53a00eec225d06ad08fcbd8c26d1c5b38aa3a8cd67", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "48c39a567879d0fce1ab299591b63f77f174d560358f2ff1c7a863095585380b", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7f26568232a062ea4f8bf7114321ba20f9c34f6de8453dbc1b74f2fba5833884", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fe43a5c0bc9c1d9b7b88104e6681ebeb3f555847adbbeb56f7a31ba732e5bca8", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -17391,24 +17391,24 @@ "T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "55fc461ff3e9b3e0c8111c0ea4f935b89d07b2b98148c03bf30867f26197e099", "T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d1adb7c339aa9841a73af0762cbdcec4bbaa437d24a91f530f7c2c7eb87d9ab2", "T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "3fe757186784d5ca33484ffab55e8697fabb2f3523bf86c414d50374e6199378", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "df33d2c2c24dbd21a5f8fd6daa15cb7bfb56d4e7024edbb1d190cef44e7c91c9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "1a9b980d060ee65b31f1674d3c1f7041dba10c7af3334da2191abcab3e36ee3e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "d7e107582372a70d1a8dc7b5552a2af3073760cd2815efb3c28aecf09be9bb14", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "963166e164a58ad5b4f321537aaf4d8cb7de46efb8208028e2bdf4efdc696e95", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "78d9fecffda899b292f6f2cfcbe39f3317120e00f768b147048d4cfb37793907", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "d4faf2ffe2232cf4b8c6f8535c7d1dc85bfb25e8cd669f667f790d109ad905eb", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "363969e7723d64650101fba221436b57c99877a9cb13a85242d448a7349bc17a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "722081041a1d7251b5a53fe7950f3673cfd9d74bb9fb40ed8cdc10d8012374d6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c8a8d11082234e231e49dd1c4d1d0fa7ef5c91f1c350d9e09c9e282cdc30aa40", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "d82af9df01a53c3ceb92e8693b4902c3566e0d2008dc5f5c8505f159feb19ba4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "50b6742edf81441aaac2fbd4e58622b4458fadb8af88810b2327714e8c637cb4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "76a2037275d86c0b481ed43c2c971f46de542e80ac4668fc1735a6a913dc6b99", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "fc123f58ded8c66583326650fd2c819ebe55bd9780fde8fe169d359f2c3c48f2", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e444bb851f5c89f2876a857f21e80ea016949ac55f020c0920b2f6c7417ea911", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9f5f04f9d6a2c6ac4b514fc4a7e5c0cd2c8166f84f2294067bed5771a7cfce72", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ecf30f5cab77c2e0b04b36654d2377fa4d297670d866793473add96a43348194", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "437a5038e94258788f35aede2b5f4368a9d273184a3764908747ec12c28871f9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "a723997d914aa38e4cb6b4f595f1f6d632aa195e7d091f1a92cb2e59063de67d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9f9f0e6ba6612396c07f1665ddd77a106b0f1801b474c63d7a6d5508fb20cda0", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ad6b94af336bb30aaacfe6ebea97948961aa470d1c5029516d5c710adcd2ea35", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f8f3c72396177e9f014deaa5418a4bc8add1c31e63a05aa578fa0b7d76989b1d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "f168fd75bb0827b5e1b875ff13f125cfa55558517f85a85fb1d1a3b90363450c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fbdd1a7444a1e0815d2d8d73e09f026c9bdcdef69ce664bc81b4a5286ee87e3b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "ce8342bf682f3a480298bbc049181a496a6cc007933d00f2138d78eefc791eba", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "7d67b60c63047beb5b252dbed4e55f63e5ec8e601f2dd1ca42d25e801122339b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "7749e32a65b8f708c05dd8e9830948f6276390f1e58ab3b2337798aa15ce2e1c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "bb58fc9a2d6e485161cb6b860927c938a1dfb603339be4c321289a62bfccf57b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e6fcb061ca901b0229ede34ed5f5bef4b7c4290ba03081749cfae81a1e4b0234", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "7ba8168ad015c5f9b30a8c2a3a300cf6df4faba0ca0e78282f7f085bc1273bdb", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "575c7c630e0cc56e360d19964e6fd9161ea041aafbfc0ab55e83dfce4e1b9a43", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "f5cb19dbf8e35a7a6f76d9f9eee82056c48b4be4f40eb3ea5001c8cf8e4cb86d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "ea667c2041bbf30b7ca78e608ebc47f2ad8d6c5b61c9fd57edac3e27c20f4a6b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a419d6c94fe7fd3a9dc0a0b9386260aeeab3d22203bbe3d50e4616293661dcde", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9eca3071f95dd59e54140f2228ed9f6d9046b308aba31fc259c4282f3dbf8faf", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "2b83ab20b5dd9ffde2193fac70b7e4389545bd77d4f20c3f803e06992e5c1358", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "25d8f3c49827ea55b293fde11ed4f636c6bd7044d74cddfe1477ea4c6b4ed9e6", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -17626,106 +17626,106 @@ "T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "d08832269b183d716b6ed3ccf6d3418a9f33dbb7ef2e0f467e2ec1fe581a0746", "T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "feae22f53cb34b7e869dc8f175f5b043df9f8f4898c5e30ee01a2918ecaa65e8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "8a55d6c6e8ded64c319960d7dac704ab633950e018f6341b61b90d6ffad85dbc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "8362c95e94002239a950dc40f583eeed632f29922080ba27a26523f065b7daf0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "65932d56bbe3ca5342265925e348e755b695feff11bd074a699a74ac035235f3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "01904561fa7ca168ca1c94df38223f83f08bc7f8fee7c77d655e1b96f0ea6f44", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3170df0a9b29619239f2dcacbe946d1b1f6a2f725d0e66eed0cc235f888de4c7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "57a29dadee5f7457ce67419dd9c7161a0dce318aac3aeaeb9d3191ef89534a6c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "761ab5a3bcd8fec0aed666135342e96633fb6e2c7396ee66f7a5c0480eac857c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "a74fa37103f70ac08adf00854fdc19eef571920b30b1dba9b4ede9fb57c33ac2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f2953ccecffa058b65c5d6ea190390bbf7bef31009914e03524f0a390b423c1c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "49b0fa9a23fd2e4f18dc7a690012e3c7d2ef654d6d5271c1e9a76c3463fbf6e0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "b5dc4d577fff94cd3afb175b7f3f6dbb9a0a7a8588f1e64626b79860207c3521", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "011e9fb73e2b4ab12f9c8d19482cd03926fca2e3b2962e713e60a97808b0ffb4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "017bff4549d55a94f8c40766c1e29b2e004eeb028bc193abd1031e1f36ce2fdc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "518ffcb8ef6adf2d7875b0656937ea7b930b1b6cfe5673a372120ec57d2372ab", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "dfa2805b65a5d62649eb44d65633b9fab3679083170e2dc9356ab3d7007139ab", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fbfc6e32aaec9126f5ec521a5f8e88928e012b564035f19d0e5c3ee7296d676e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "60036e7814d525a59654c306b00f6f40c62a95e942f74a16a15f009f6b841b10", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "b1f910ac4e4ffd80c4d9f03ffb3eae6ccd61db432a0584bbfd8a442550c30bbd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "a46c90a9e61813e6c43ec2ec3e206f88a889354c983c64151ba5be62f7b2d679", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "b273ab2bd0ff137d4a8c5567bba03e44d7ab0b486ebf3623e01f26c4c3aa07d3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "a19ab75c6ebd5f210118dea1fa3c4d9204d8e4f6971921a3905706e99400db0b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4562e51e8be6e786ce1f77b58acf8d8d505062e4724e63689b155434ca8d59eb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "0cff946db1b6fd09101ab169c321d431652b2ec41915485b25ff415299e3abad", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "f38249f90669900a5feba930da4125a757c034695c491d61a133c1a595fe3cc6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "35149cc63b8a64388754f4be68161b98071a9838c39d2827c9ea649047d799ed", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "e23250ebf0e684afae5ffb4d063195b062ac77e7e59273a2d23f706129a819fb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "a59b58f7276b639067e963b6a0ad3d59930b8c42be2a5fff000c4b248672b29d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "1390dd5292836b05f854ff94781bef4b10e399853fd58839ec4debac33de0298", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "fccc148e69e3470e93b18066b46cfc6c35f4164f48f27ad9622a31e248f6b241", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e0b19ea9ecb7ab604b31f94d91c4bfe7684d22a030bb4cff616bbef3628af57e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "6e1f45ce60ac19a73f6eecceeff3e95a6a022d28ef3196f17b48b60dd22be98e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "d7669202fff0c5f2dc1b049e26fdd1b7d50639b69e6735a0345826ded863240c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "92b8b6eab39bcc07bab9bbd4fdd9ad56cb992ac3b5e1fdc2d496ed1f97e49fe1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "77118d0aebf4a017062b64a99c40f7fd6ddcd772c078061cf31085ea99ccc2ed", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "86d7ddaa0ac42665338252fb8f772eb587485e0e2724bc5b37b5e2ff98bb1631", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "530129e542014c7ad3c3b0ae580895d85d0fc99cd171f625c5310682874c54a1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "c3c2931343b65e8832d0d38080db184504d860ef58dd0316197272123c379d3e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "8a2f4152957349d02b0e1e111e979df38dec558348388d802c9d2b0e10c8feeb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "7699e0350794486f21f03fda0d0c119132656fb0a8d697fe29fe3ac8f91770c8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "abcf6ca1745d22ffab4328e456e7f5d034438820c8aefb58abaf2280f7df374a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "5b03b532bf88478870a348ab0543b244d83f327fd1d90a71d1d742543c937e9e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "6bd6fbad9fec637bce25eadfc1e6eec99fac291899cfcb738450c92dc597ffe4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "4fe86f68e577a48fa04faa4098a4a6b2449321d4247467a612ffd5b2a7ed01a6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "31847cef4e9cd4b2389e887f722beb097465c7c4a5c0547b92d53ce6e257b1d1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "033a0a857c3b884289d7a1795067b7b6fef8f97a2c956ac59d38f6df25a6c49b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8a400428afe75dec369078c2f8b3cad0087d94ed4a6467176c2f0d81366eb160", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "6a424571323aedd60ce688660addf9633dc6c4fd9e4d6afff61455f78b1b2c37", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "dbb4dd3d199c789b8f353a5d9474fda6ff7b6bc4cc80b19119a7fc2a7d76d5f4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5641b7fe4db55cfd3dba979c847dc0c7fcf28b593315675ce6cfe7c51a93d2ad", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "096aef7a6276ebcbf16c81bf1c5a27d315fa55fa31305d1e5c4c5de1288ab8a4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f347c34fd8e695f2d629435e2679f0240e427de29f105cbfdd94f1c4c8d57fe2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "d802724112e4d90fb1d263738703b5c89b2a467d13e83909b8a8a43391c80ac9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "2ca5665f821b3d4ce26f6577b75647ac1c15e9dce15db203299f3801d46e4fed", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "ec5d448970ed13431e8d2f0282ad5a7bece8a3e82974f93be69033b37ef03ffc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "a9f72751b2da9affec8c06d326c6f4a690f1f4d991fd634550a89a0d0333e8b1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "37363410099c20f5bb61960f592a531bd5dda84d787211968cfba6864b3baa49", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d50fc3d4473d05309524bba8bba10ef67dc8e881094868ad00842301ac2118b5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "ec00ed9c40d94b9ea262c3d86560a5223bdac941ff0a1c6c6a85abed8c31de4b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "21736f3222d6310bac3f9c5e1740eeb2e84ba9de275c5d71d828b86949973ff5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "daa2aab81c12900bee46be8c4eac3fbb1f99ca0d1f49ffeb5947b0e57932119d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "639b397f77dfb68226c0083c7921e81bd6c37c7fa31581144878ab5bd32b72b3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ebeab602af5c5a5bada032b7dfa2184fafcba80e1cce08e12d9f5c16568baa4f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "21ce5b11e4108b7e4a0f13819b81dbea6621640222ff099d0c1671a41eea7b02", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "1eacc8c1f2109b2dbc9e9cce6ae6522228163fce8b15a7c5208bfcd0214728ec", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b70b1bbd36e6ce8b1d4b6d10ff1aa1a07c5b1907c9f7e17b5f55fa1a659d3d55", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "4d82850d4b6d2ecca30e7908bdfcb3822acde7a9fadb110f7e0500549aa12341", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "8ed10b4e857a9d833ae042f56272dd204284a4d046d9a65d3d2ccc35de0fdf3f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "a468179ab9a96476dcdb88fb9e3ddc6c7e9085e819f3e6b55f7a8fc528a97002", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "62d5a14eb48d0e147b327487bf70def1557e817b985a12db82459d791fa91c30", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "1c2d9ca7d30d3dfecfc375530639ded1407a6533d22d18ece77070ee68e9c560", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "b58b2906e1a59cceb81f2175eaec15dd3311acb4401b210b916b94ac62d2a0a8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "7fbb65997d4eba3f3d0afb2f7a42299c912b7558cda952ed101597ed370a8551", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "a863752d3212c10bd6f6e38d739416e9c8db9632573529a19f11662b9ffa74c8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "0138de98e3978bf9f53bcbea68235852bc99a34536273f1711e29c9261ad4ef5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3cd2dda13ba03c3a7cc48c966516b9ae2b72f607854ff7dcb0721ee844e782eb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "39a3b67bf4e7503c2e5fbcd1a95717ce36f2e9fa9b709a7b84e394cf63c0cd8f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "abf859060c00d20e1dc9507b9af5f8ac37b65c4c3b7c406b438a1635ee9865ac", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "8009dfdeab623886a2af61b011ebb44188f6540baa5cf250f997796bcb73447f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "74e5146ac7c47d1e6f8a62561f649906bfc51a5b6d9671e3727ef520e9a04525", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "10bae90e63dd93387f8eb4462f5fc58357a5b014dd40b4cbdb1589087a0c8dfa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e47bdc342c1ce26b1817b3a7137ac3200314ecb872971b66df93d41f91ef95c2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "47064e1c708624c7bfe4df9778761aab2022367bb3be25b053c8721ea329f574", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "3cb6d189df0720efc32d6aa233779bcc9ac30a95f1aef7a867a9ab5563f844c4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e67483b4e8ce7e5d90594e3489429bac0e82ff45a21a96394fa46e863d4d0ae6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "09f039bfb693689bac62f92da9f840c3cb4c7d5f6e2e3ea16d956cf7006f4005", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "5e61fee553cb4ecd6294164c4918262601c4679916ee92d570167e9f5267b985", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "b5a9be2163a8f51c29dabc94bacab05d24791c9c63f7892a3acc64e5c902e423", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "baa8c8713ce423765a5b4abc9672d5a0c83dd8cf6dc473ea1c807f8e428f1f0b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f5e376df8d547e53c6d7658db15561a24f2f28258eae389553c7b17f04b84607", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c72a5552efc0978888e9ccd16078d678e4c71c7ca7a2d5ce3a2c5e6745fdddfb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c3ce86defc450aa2bae6db27a19b939bebb4dfd41e633a31399f59fe82fcad6f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d3fe23334b531cac4ce807eff4ceabb6c2c2536b0862d0944f640d2233e92ff4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "18359d1a950e607aa46a145138cb09f9f2fb69c4a2eb95f7002bda9957e24bbc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "323168741cb8a1191d7f9a7b967a7d285de238a218ad581bf2129dc8262bd147", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "83895c066231c3cb16c742394e88f7a33f1148266e58f8313f95fc886609ad95", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d797b6d81d33c693e0b7bc5f77aadb3136360f53cdf2e853ff32c0d1d5ff827d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "cdb812ca1620e424f9b42bc0683f288ec9044bce3621c53d15c09ba67ff4f504", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "58960c56c0208aaca5d053bc3444f1a8babdf2c6b0c6350ff4a6982744d27310", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5498494520d43dde42da29bb52d55b7afde03657c68d1eab261618cb1828f6f8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "3f0905d46128dfdda8e5bc31475fef6f6bef65b261487c153fc28b3424fb8419", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "12b942067f1b8a2c785e18cd7b8dedec6116c5039a4767e445d6da314cd77e85", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "17ceb6a0b7c3a25354c806a67d6b591e734603da46d50c36489b7cd661f42309", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "3f589e3df06ac545d4e1d3cbde54e351e0cc04caba6d823159d0d2d1581612cc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "973603deb3fc1bc0435a7db69115e498cce81fd4cd2145da765a37b484f27301", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "6d8d4569e27e17333c3f6f0b0dbbe9b59e69f9ff13b7ebe030dcfb2840f17804", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "7da36aa4cad85dcc37379d7d6af8a5e752f05ce274e1cbcf9dfd21c8f5bf7222", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "660078dc3ae69fe7dab6e5416dc67c6178a39803ed32a6a59c2e425fd0a729fc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "65d5dee40ba09f5b895d0fedf30e99e38b2e25a6e4d7de3ce48470bec90b0ccf", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6ec519b7d835a81c67f70677d5578ef6b249ad9d2d48592c524a07161dea4301", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "e155aa3da698cc997fd9216dc9237084ee45d56ed9d492c152247455c6b79aa4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "4014ee2c6b9bbdb1091cf0e2fec3a09d1926a56c6f654f9099087905d22776a0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e96006e2f1ae90b11f746a2913ff54362fdfa8a4d868da87233cbc95ade11c86", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "4b64ecff2ee88eaa9a27a9829f44724520180c023b2b54cef29871caed93cf17", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "6e0b5558910b72aafad7713d6160f622a108fde029a213342b50aefbc745b84d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "d37c60a72e21fc4fb061d42bb16fa8d7551b9938f50713d2d17db45a667b73f8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "9efbacd79d224cef03cedcc06c9718939a15e3d1cfb15ace4ebb100da2c39f54", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "4e9649dbd9b7ecf7b3dbcf0b0e1db1ea40ce5c5ce9c4c7f952aa89fe35206416", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "aa9fe418eecac6a12632e8765034a09295e71074bc2b9c608effb1a0dd67bb9d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "300a00880ee3b2fbd95b23498094795f704edb6e9d059324143324ca5dbf2b55", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ff8967bf0121a6d7c26f3bb22a297cf15f0d86c1b3eac8aa7cd209fca3a126fc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "23354f7ccbc45156500ac97f1ffffd163938787b968e2e0a57b7c491c48113f3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8f3666c147e19ffee56b712efbc638f488d4d20252553817568014a6b7e5a773", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "5a5af8d317d1381d0990d141459f8ddc8e6cbea20737ce0f8239bd36ff75b98b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d7a34f92f90035e5cb41639aea1b2175699515b018dd356a32119fde87054f11", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "a69e07e912b533fc56469aa29d4f997ab275ff9a50f70b6af17155fc76a1ec7f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "9e4f23accdabf3164ec9402e2a4744b7a9f2ba9d42596e8d98ef257fc3393c83", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "2c79b60fff49893b720e232a644927d6239c308d82103bb77137001bcd16fed6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "915f0de143a6239b906448161f73486a0178b50bf6291e2abc9c8aa15be6915a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "4ebe4bcd9580f34fcbfa6bce3fbeb660718f557474f0291b64d637ebb196a35e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e6954fe7380f76289a66f0a7728dc8e40f5e7938875323d46e9f5a545b0bf719", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a22407bdfb6cd842dbeb074d32f5074c9e27ff443226949156d434e5b4edaaf7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c4e18a3097a537df4ecad80f22bd450335ee94c0c727ad1fafe332c30f35360e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "3d28bca3a8a84cecee029ad125dd50079c09f27d9f1be79ca5c52fbcf2e329f1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "173f6ea9393efa2895dee64afa6f0f45cc8d852dce8bbcb2afa99017458dd9ae", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "34955015e0de20a165e6f55df7557d133f2581798744a7a1c55577a1655bf761", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "308875bb48cae3fec792da875a4f82f4691cf59a3eff1167d51838f27191af35", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "a69414e4e7df2c45f4acb6925d7ac5de76321b71601981d9021b0ad6ec23ed65", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3a29c85271740cb6d13ab2bd8dc9f56eb33e7359348ba9b7e5d2b73c2ea46e00", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "c3190601b3ff1be82cadcd32dd63bb881e81a48bf955bfaa795c829cdac31c2e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "cd0eb305988e7d6a76a872833d67b011e16e130ccace6cc01fcd6c020d9645f9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "44fcda0998daff53dba84b30c2d2288830596117c362f4353fd5cea7ee9b22a5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a35d1aafe115b0cfe55454f30adc29db363fe7560697f6a20f46f781c30d7bfb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "35b80e1864e9bdd76562e219827ed2470dbc6bff2e41f1f3a2001783ccf7dc51", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "7fec08d0f493f35d1ccd435f49a8133b159f70d10a81acd3d348ce8afa59359a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "de5298fbf526ebe87fd9dee394ca0d5b5017de0e88a73d5c6cf637e5db33868d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "ae7097a4b740c15ff42c43ab4d77073006a96c85a112d71bee97494a5f1d4006", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "d432519e4a920fba0f631c128096e098f23e610930c3363c924964709a9e8ba0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "14d518e51d3b1d022d5ac8301e1b4b41dd17286da71dd5947c19177f73220b02", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "e664e899c8e735cbdb0f7dbd1c5292f5242c2a0108303fa2bfbd916614688f0b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "40dc6a45fa0ede9fd50495da2ab2b9ffb6aa630cd0e7c891baf09b1f2b8b17da", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "07609db507d8fd8d437c658cdfa578c1a86000f3112d572380d4c18cd00f0b34", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "d407c8d7b267bf9279cc9c2853897e4e6c58f943ce1db40a93edf82024f74678", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "da3d4370d5d176ba53fe97fa69e83855c9dfd0fa055694efbb310b328785a75a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "b0e4b1eb2e824bf0463a60bbf55ff4043503d0efe4eb79e8dc8b2948bd8aab4c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "fde4e64924e8d13cf1d35ca5cf4241eb32344ff9e1dca5a3b04c3131cace25d0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "a536598ff76e4c8786b067071f50c0d7bd808c483b901e9f4c85a8f1281c48e2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "54ef944f25937ff14cc41fdc7ae426d956c3c72a294c8df086866d1ce28b3aaa", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "c345f0541d989f8d568ef1b4d6a72bdf737ec3e4c0082b4e6744848d8e42f324", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "d1e27544f936460bb8feba545694120dde46facd0640e0c1b702aceb25af7019", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "183e0ae99db79a58782437a63bf6a0d7b77bde378ea965d413d7f4a3016503ec", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "74c0e43e4046187a8cb16dd6e7000dddd0e0d7519ca889151e4979ab35604d9e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "67ef7800b7e79b210f8a25e4517ee60d02b980889fe06d190f00759a2daf9ad7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "ac9a7f73cb3f2786e52b14da110112528aada8dd736d45632419115c1ced5603", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "c82337421af49a0e869f05624b0579cb5c27f30867839091d0c9d7944d486e1d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "2c1724e547f56ba9fe06be6fd6bec9fed58011c54f847061365b143791d6da68", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "480d31d1895b7109890fc8f52f9173c068df2cc610ffe0ec55ef262dfbff3dea", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9a451bcff5e6795f14e3adce657a8fb5c206b31da5ff26b58a5f40b08b7e5d37", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "59bf58b84670ed490fe514f70f352bce6ff309c3e49ac830c4b2fdc346321f81", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "020dba110b4147e6c60344f8e154f9d1f85ea6e05dc90e02d405f142e4b0b56c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "80ab2e1304a16669d572f5c8946808f844236b55e3fe42af6e5deb622fef10d4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "3db0ea74b0e2cb240d3c1c8afc9f9c87a58a51d3ca590f74ff04382d2ddfd01b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "0008dcd54b328bf792fe98033598ceb631b34de8edcf1b599437ffed80910a89", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "fe455ac46f1676ea8da2233b5554f15144f3ee1de52b1bf31bde09990ed39a56", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f69ebce114b3995decee051ee7574d45526bf6db2cb237803b3315cea278f21c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "c29d48307e014f53d305c1c592dc9d172d3dbe550f6b88946659afdbf7c3e378", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "fc1e7d51d2483e85a1ff5f59daf3d2613195431c907d15ac25310d3604de49ca", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "2b98a243887c8cd5b328f0f74b112450c57627b8008d15b655dda9abf18c9ee6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "972b5f5595eca2c8230bc2843e2b77f26c1067e59b4bd9920905adc06ef22b02", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "bc8c50d7d463cd5a8f6e5b77674466f11e4b56b8b9dbb7c01b22cbec5dc6c0a8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "c56357017dd0dd4ed5ec8d2017b9f442067ebd839bcf1b9b45d21133a3d1514a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ffe4bb1d1d072af3723414af172dff1479fdc8f947870d404dc903dd064d6374", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "6dfe8d5250f883503370ff495d7d70d8aa6a011d13a0af43f13e2fd2482be996", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ffedc537df4118d5e4e2d58c19cd830b374a5e32e25e3139b1d679086d263da4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2a4ac68d9e789802c0ccbaa49b741c6d2c604a0b10b215837a11682bc61f944b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "eec3ae3f653d6e92a2e5a0460d7523b14dfed6171d7b8c4f9e6a73bfb4f39224", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "893a2e1318766bdc8948cf1d7221184e3a7adfc4d1791692fa4f03f88d4db07b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6d0820e91a8af66af6402f11df08420b066c928eb0d2e47ef615b6ee2b7d83bc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9c47067199f5d82e8692718a1ccf89736e0565a3739d6c960e0cc77530f47c2b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "94041ead94c29e1c241f50ceaed49495ce19d66b7f73679f974dd0751fedc430", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8d6c1b95114ac8ba88c9f91f91c16d19cf42ee1e3f1ca9cbebb85770e81bb81f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "55b1435243f65393901c75894d4bbf87689ec57ba6289209d1328ec0737cc374", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "31b90e7cbde5141a82830d5da88d00980c5a1c1e8d34e65b0fb2147e149c27a9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "93ec15d9793890cf3ea658e3184b5202d1ced3a2b60ca812885e10ac32a04fa3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "c468478b97069219c2a2ecd42b6110004c81c4e22179a4029dfb55eafb88f352", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "45a5e19c34b43d6e537d22b9fb295e4f252a7535f8c50c6685f020c23079ce03", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "09d603411528c8d1f0d2d16d3317d0f781322f5c6eb4853d7ccbfbc1bd1b5247", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "11be3ae103b60485821ca51f8ae446f5328ce1714948f155d82651758968489b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "f65c5432d07df0378e3a0016d1cea243016fe265b6f8aa175d7de60052bed074", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "582b044d6fe331bf9440a7e2f83d7f3afef152446c362725e8248efea256f3ac", "T3T1_de_cardano-test_derivations.py::test_bad_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -17997,18 +17997,18 @@ "T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "e608cd27fadb2bee3b071939adc8840c50b9232c285871cdc22228d60e3ed4c2", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "37762e316f5e534efe91c13a6f4c73bf04562b48cece6d8218631c5437961646", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "fef69bb32f3709b62a0f87671271246969a31f8b53a187ffc723f2d6e6cccc31", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "90d491b0cd9f9f2ccb648a6e6c0577b9c9c4b85a5fcb8bf355918eab5cdd91e8", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2e21eb061c822a6ad4903c712fa537ae1af11b01915bd5ef2023cd59a5361435", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "75d24470c05663f27900d9b48b0679ab6e15a404efbcd901de7556405d475de2", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "9a48bd2d3ab4578e4e30588b4e53766674e19a4fdb9bcdfd338a646b58b76641", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2429fc8715a613c421f9d4ecdc012ee7564a348ee2c92d76170f2d7ce92d0f1e", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "3c96d79336569216e622a97c21a4b115600edb6d0cd39a2273d80ebc3c20369c", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "51fa687120d2b7fb41c0a9267ec529779b718ae346749f94eed05c29e8e2f77f", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "cc4d094d1104c00ecdce03b5197b56ae183097e61f4625e0347777bc3734dd58", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "adbd1f0797dcbfc708332394cfec5abcfdb9c2aeabcedea50a552dfc1efd5184", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "fd77d62984ab18bc73016b8616ceb9206fb4ec5c9ea075e87d2ba1a481090297", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "a9a51dbbf2f7a44d662b99b55ceacd200629d06db9fc77bb1307cfc617809095", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "7328eacc0298df4e2fc16e36ed025fa5e2b9706b961b54d8e345a4151c1549ae", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "d0ef93d46b0f72088a06be89874005a6554b59b66f94ca64a8ad738f946da232", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "785374898d36874148f963fa8941b415ae89ef59f8dfe83f77eed22558670b15", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "a3c82119b1c727b8f4d3329ddb50a118e060c978b83caca14c39ce4a051e439e", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "b069a2b08041ead12f897fcf3fc1ccf27fa3e95c27a89676431ee5fe3f234a08", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "4a66ce36dc0979548a4c513a001bfdeedb36bcf6306955e8d953be7fddf20b6c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "5b23211211b86e20f9b37307eb1237de6d7aaf6a94871a55c613d77d4359bd8c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6f9493962e1f6a150b2f605ad339eb7db54a8827183f9db2f10dbc75ce7d0a5f", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "1991f47afa740e770b539fa6a00b2a2a596b97c0ca325e4ad9cd9651a7c10ee8", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "288432781bd11b06e6c90dc0a056d4dc6e7c409b5c408d39e1df54596e10d7ad", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", @@ -18166,12 +18166,12 @@ "T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", "T3T1_de_misc-test_msg_signidentity.py::test_sign": "9fbfc01e0639441f85bdb79cfc3e700043c0728f31e561a1f260cd675367c4a2", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "d62c2a50e658d3efa50137f6a9d1d4664ae29ed1f3764605660957c09c5814e0", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c36bf77e0c73a73bc8dd4e46ed604120a68c4a72f7553f3b7ff2bf80edcfa541", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e6408600df0a27c6488b4f4bc19d68dae6650ba860c45b24f6fcf645ab9afdcd", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "05f83653f7924dca43ea081467de95bd4d6c3ed37da421710e86b6200610d2ff", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3279c313a12ee45b82d64d4f572ae82c558516592bc37b748437c50b02b2c562", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "60ba99774981cf0d0fbca3eb72e0a45c64035d3a3618d0dfd2613099e482f7c1", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "c949ed31030623eb8755425bb80b2f96f24bf39a0d4f18970547f880012eaa8a", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "dbd91247e53fca9ad9c0423ac23a05eff09e9b06dfecd04fcb4a6be08d9f9904", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "9672d1f277d9ba72a1871af7a5e9ac076d4face09774250405318db6236e331e", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "02ce1beb3c719599f88f990bcdb37ab9f02b7134b71dc80aad1659522aa0aad9", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "ce612799e7ccf7d4bceb471b053aa417ee0348b03d114a71e3e367e84a279208", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "417a2113c8bd96cf3d070d65378e7ea6a976aab2e7a1fbfe41d5d735349ed475", "T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "3f152b740ccafc458ad07057f40e49be5bdd678dca7d858e0cafd7c462550ee1", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -18226,22 +18226,22 @@ "T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7e603fd33ad51076925cf29ccf5a520c9af56516dee68cef91a8fca8e1862f24", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "dfc7ebe4272f0ff3aeb373e12149734fedd4bb35c641116744cf7a06c7dc77a1", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a3e5fa34530877f7b87fe77f3716e0cc37e0384930f43107caf15f076a3496c8", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "d66ac6cc9ef6fa7681664701211a3aae11603e50ae5ab6b20d15877f526fe0a7", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "46a1f30e6e95464b3de000f62f703a77b275fd09327c0c1341333b0854c6107f", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "648490c339ee840c1c5dece14a978750b1147f58d3d44faf5cc2af07169ad14b", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "8422ed5880a444939c3b511cde5ee1883a633371e940a4ebf51d8fbff934f8c8", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "b311be66da212d71929b0cdfccbee4971faa8abdbcb04e45c3a493977b544f32", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "457a66a681085132c7a38cc5c7d85fcd4c632b08d8d7314e2bd0f9643c4eaf5c", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "cab8e7643e74d28332a2dd920745153bd419931147fe9d6ea6311c8f2393d6b1", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "b86d3e58d4700ac2fb634a9e981697e2fd9513b9a07996e09ad8c9b3b0a3cdde", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5e55eb462b0f225b18e4c487789337106344734b236f934c7a16de7bd4859788", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "55b56ded415b23ad054c8181bde6e481ab0b617eff506b784a68afce3a35e18e", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "803eb5ae27566d5cd9d811f1db24b051a20f7bdb4a26cb6a0af45421cf1f2cff", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "7c31ab83fb2e04aa3303331c0b8bdf10328fd446fff2e1c8ba957de385a8517a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "87f3a5b7f38947178e0d868f45dbc1874d150420931bcada82e201d547d46491", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "f702b60bbf9b8dad7ec6141aafe731afc4b9da9522dce65f4a4559a5d3ea2853", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "b88172329f0d1e9941ca47a2d1fd495cf87ef1894d651c90617ca8e350bbfa06", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "f4a390a7d8095e23916c90caa53c081e28ee82535147e394308138f87610b965", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "e019fa8ff44e3296b1208d801f9c8f94ef2cbf06b195e89af6647205f0fe4c91", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b88172329f0d1e9941ca47a2d1fd495cf87ef1894d651c90617ca8e350bbfa06", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f4a390a7d8095e23916c90caa53c081e28ee82535147e394308138f87610b965", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "e019fa8ff44e3296b1208d801f9c8f94ef2cbf06b195e89af6647205f0fe4c91", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "e6c7304b5df3e4baad64871dc3db52c8c09fb8505e34286d445e6b6462490505", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "329a03f94ddf8dd0f294dc90455502419beb0cdffb06ec47481ba73ae72d94bc", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "d1162bb365ba642db3b499363dc84d9daf298027b084705136fa9846a055b370", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8b8ca8ebb8b84f11db0b994b717f64864157523d5b1deb800bb98c9f8a4b8885", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d532ecc0df4eba1a7ccc0af54945ffcdebc8ca66f878e6475544721bbeab0789", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "849ca85aa61a37058648c2c191b6659030ea4a575f47587e5ac60fa4ff338981", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "0c129fdd9475932381aba8894a6bce840266338f2d6eb57bf5f4d1ac7e0881e8", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "7b0f87a9ec819934121a168f679279e5eb4616bf0ce9c8d234b40a7065b2238c", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d832438223cf065dc2744f19765280fa2a38358887876506f97d7f1f005cb70c", @@ -18311,26 +18311,26 @@ "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d54dfc905c5778dbc35d66d9e9cd5f41a6b2a80b0f95fd2fa362112857bcb6da", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "0cd94418279dfa790df1f8e791b057015b609177b84131254dd03e8582271554", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "01bda8a68a6dd18c1d8507a2a233990508104606b2796733978d0543575fb2dc", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "8e9328e861ee2b579bae1916caecc9771de5f825600eea73ab5bb50da99415cf", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "9ad496fbf87b9e01df793a2a5be0b9fd4336aa5e209b67da68b47e3cf415df7b", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "0c919be977e733bb67576e510fbdd9778284dff7a6aa93e3fb711302b86d7b82", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "3726cff6f3cf2022939c5a35ebdfa7c1fe145faf5958a6776a0aef5f90c6cfc9", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "6f60ae6d2d0507080107260f62e0789330357719d0611c3623feb9bbdbb68f86", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "40c421ad4df9a31b7d353c29a53d7b28f14dc780a6521e13ebc97f8618029967", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "91308406596db2e6942dee657292c002f4aac81fecff36a69dc5b2f7eda3a944", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "c7d44c8446bba4f1c7979edf549cf74956b2e09c0fffbea335e2be2a42f773c4", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "02457ef155f009cf922451ca161b337cd3ef0de016649b19729ad904e5fcb411", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "25eba0ecb48b90bf7c3a6bcdbe244f4dd6e35afccb37420507af0b8cc6fd0627", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "bde28f0319e6b422406be65ad0465b4b08640f9e73f24cca5cc783aefc273be2", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3937c523914319fcfd16785bb4e8c0c1466b475336ebd0b369e91e09bc5b4016", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "6954dce1021eb7db7815290c3cd766559e188738fc515c46a91423a3f7db1f8c", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "5cccd9cbcee79d421c7b5818dbb6fc06f91156d09e83a6089767f472e3504363", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "b638ef2ff223cd3c5bc48b453b931b54dda11428ce9e916600c96a6ec201fc21", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5672794bd42230368cfaefbdf3ee1f740b4951e7312b84ea2f6ff08d611f0df1", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "f4215484eb52750b7a80821a0d570cb89af90a60313be52750646e0d942feeaf", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a1bbaf8f3b4219d3d1591d190246d851b69b3a08b25ed9deb30682a6c1fd6802", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "0b547080b85655a669d911cf6e67dc6b71d10ead39a1862445add6a5e194632e", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "6524da1a416b76d7fbdb24103be0b4e8744a1e9cd554d0c392222ec6b2783201", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "dadfe476f99a13b8a8c5f1875762e1ac34bf059c14d703f35e44178f7807e6b6", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "927194295d5398723922407e0d364d27e074c68eb967e83f5fc8a12f6e0a3099", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "dd3a4d4751dcb7fef5935b7ff60d80612f19427b131cfac3658b25763e07c7b7", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "32f114f8b9a0d105d93e65672b8f30a3d537bd33ea4994355c025022ecb005f4", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "80f8b6793e11825427762c31fa0f79bdf53aa021f3ac3b2b7757de2dcc200abd", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "e4ed1bdf7bebe639b55b643f5df9e17d8ab29312917fb7822072be17a0dc6fb0", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "e39c766f20ea178786e225560086559eb222f62ad7cbb3078d65d7c3b783463f", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "9a8abee62ea7ca4e3710d7e1e46e645cfe0582b3a659ae4e298cd4956dd60abb", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "8386c6c2d37ae21dc6bb6ed7f02619598c8dec9c6358f8c48151e92a5cbaa3ef", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "21f97aa5941c99a19dcd8addf80ddddbbe8a98069bf343911effcb891fc54ba5", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "229bf84315817c43148335b75bc94f6b49b5956b8b008b6a54ac3ad64c946f0e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "49943fbdaf521509212eea8f59f84d2ab72758bfbd5a0ba0d018fe0b318910c7", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9e2d9515b3e2b09bdd1ddc6fad4210621069e1ea0319b35736f1c066619dfd87", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "6c46c2146d0ebe44a41ee9ab66fbf6ebcb1f8e6d16eeb277965c784a019e8e25", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "120ff9217d248f42250e5f9555386614d073896e4d9962c058d485c2a258888b", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e48a95f89a0cbade320179d127b5d711837b9d10a83bb0e4112580958349609e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "c4fe429c6ab2d25041a043f7ab1b45d24f5c309f634f80b6e45c9a7de9905b9f", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "e4a16a0ea6a6d2e9f788ee987c7f33409451f786936a4ed2e240f7bb957ed5cc", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "ff3575c4a6bc86501b9f9601979fa379c999e4d62eb1976a119b72ba566f8fec", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "64969d3608822d3c234198dd0c7766e10c4e98d38fcb5e7fe31b63f45f0256eb", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "8e4e30780090b4330aef651430341177a417baddd4410724bb1d00c82b8d2233", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "75d7a81beb661942df988371cf26259ef8f42e9e8186185fd65dfaaac261445d", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "38828afee6a4fd650aa4acacc0d32782fe7a106e153a1eb611dae3a039b90ecf", @@ -18374,7 +18374,7 @@ "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b8d393e3739a7e3c40ff82516b6f95b340dfa1fa43b05d54c50c632d78912557", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ab2ee76fdd7e5a2f7bc67674cc352cc77ccaf89f2bfdf64e51ef1369cf1cde4f", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "39fae5dfba2b38d094fe2d8ce0924bbecba33ebbbe25b0742ce01f34e0892df7", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "7a21758d980e772e4d9e112bab97dad942997fc6c2acac928e2127e8c77da561", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "5bf2337dc1fadfa37949b0ea08711f3b206ef8279c9b1bb0f7aa4747ec2d1e59", "T3T1_de_test_autolock.py::test_autolock_default_value": "99f0c1dc95cc8bc5b5ad1e534a2dae550b1506fc0be29826d237d5fe0dda2c81", "T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "d113ed8ad29e2c78bbb41325c94c10c7774ddbb7be3eae4a31875e4c0b00fcb8", "T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "d113ed8ad29e2c78bbb41325c94c10c7774ddbb7be3eae4a31875e4c0b00fcb8", @@ -18384,11 +18384,11 @@ "T3T1_de_test_basic.py::test_features": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_basic.py::test_ping": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_busy_state.py::test_busy_expiry": "218ccf08ea64bd2795e57c147909f93e014e34b95eb5203934b677e7cac8e11a", -"T3T1_de_test_busy_state.py::test_busy_state": "38bb1057f47995ece0b65f1098857cca8325c435b4e33f7fb09cc924d42841d3", +"T3T1_de_test_busy_state.py::test_busy_state": "f72d7efa7959fef8c91a276764351ccb0bb1efff0acc5ffe21e039f337efe529", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "cbf4c9097c8d0c698bc0d21301082b280503908f22ee3338e5fd0b8e0059836d", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "6b947bcd43006a0b7f7030dd2149a62000ab4e0900f9f5b15ccd7bbba0a60c39", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "cbf4c9097c8d0c698bc0d21301082b280503908f22ee3338e5fd0b8e0059836d", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "6b947bcd43006a0b7f7030dd2149a62000ab4e0900f9f5b15ccd7bbba0a60c39", "T3T1_de_test_cancel.py::test_cancel_on_paginated": "a65d43e1c0f31b083cc42839daaff521078294b0effff7e9dbe73d7cd20b7822", "T3T1_de_test_debuglink.py::test_softlock_instability": "03182288f911280db29fd5e24a854add482d3f540d9c857f4d2a129c100901c0", "T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "bf2f818f1145174c6b3728cb9d1b31b02e37c73f9c3e9a34de5edf9d4158caf7", @@ -18425,7 +18425,7 @@ "T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "95bb1f302257a635151759a705e3465ce70713d53d269ebfc3dee28d2f4338da", "T3T1_de_test_msg_applysettings.py::test_experimental_features": "47f02b3bab692c055cf5f32de31f7ef7de9d69aa9ca976bcab4088d6bece36f5", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_msg_applysettings.py::test_safety_checks": "dd20c90d5630e9422db7eef33c45372c6391e7b9e45a1c852bc71c327952b1f6", +"T3T1_de_test_msg_applysettings.py::test_safety_checks": "07e415943999d9052d9b834c1ade84393f38237ed4364422ee559c49e3e46c95", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "6c4290e1ddaf619a7dee19daec4898ee161fbab7ed6de84db717e087cbe6e424", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4b3000d092e04afd52c77f954c9fcbb4700082984b2c0a8a4015bbc7d89d8ea3", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "bd30dcdf8810046500a1b9aa44684efdaedef7d1a818573d9ab9803c3374254f", @@ -18509,10 +18509,10 @@ "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "00f26a228fecbcade38f24b5ea666ca9d399e3ba7899f4d09295e6fd7948ad29", "T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "381c2e9cbc1c68ef5511f8c0921715ddfc3579556156e07725fc20f5de700560", "T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "4cb32697dd27c9b3355699ac03f132b1f180e3d0861b93c503c2fc53d440b8ce", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "1edfaeb5218c0eb1c3d42f9b0e346dc327a59ae5a152a86c08a8bd0cb38b53b3", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4a8e05aadc193444fb9b7a9f7fc7a9bd93e571cee80fca7f2febaaf712cccebc", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "4b2168e2ff7df62f8f097c30c12463dae295594df816dd3fa7ff392b3e8ccf0d", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "6d98169dc84cce8ae59b580da42c30617da4548cc8f90b300da402dbcb244d5c", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "97de64b2cb7bf8f5e87b67f2379a3c87920d693fa8d9dbe798fe277765784a1e", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "36cd4fe86efd1649a83c18d09e6a35dc5d4af2d095eb60ef88b492a25a6392e4", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "3428c414c9092bda35c8efb3e43adf9cfb87f630166d65cac852ed805e662c7b", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "eb32b59cb44faf38b7ae34529ecfefb6b2146aaabaecb4a7acf63fde49459e74", "T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "28ab89a7bb7e91fb4bbc58b0c041f3994eed32e2b9314176209aae852a1c0f4d", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "faeece7285f4a3478eb0a0754ed711e72aaddcf1affd662a6395d6c2ef41cb66", @@ -18543,7 +18543,7 @@ "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b2177b2d49ad8968f443ae7c3eb40a61c5a79f359fcab22f394ed033e94d07ca", "T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "2e1f9259ccc516a2f355626f17a21aa7e352f34d2a88cd6fa6e752db31ad03a7", "T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e670c8ec334dfd1608c7a68a4a5fa0d5c00a014ca6dee589cb62527159cc6986", -"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "48a9d3b5a889b2f3bb10585b3a8babd8bb40c52aeb1aba7d0571bbc40ada265d", +"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "7a7ed2a7e3b8c6e3509cf83b14b096a140e8d8095724bceb45817cc35f0bc8b8", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "380ac53675e261dcbb4d68aa378bde7be830d926326d1aba14c1e0324b9ef306", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "24c96654c356fd64c7b84df817a4ffe031566a985efa1a0c84d517052235aa00", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1fa1e818ad800bb128893b099fb1488679ff5223ec1dfd1cfdd553172603b9f6", @@ -18568,42 +18568,42 @@ "T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "2c916a8385b9c6f1b1eb984167d84e8ff4d7042fa087bd14cab9602680fbf3aa", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "bb3242dd5e5c5ee611ff5ca41d9fdacdb8efaa3807d8401935fe4b7305f07d88", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "baa9af35d53edc4ef279e242c55812b79ab3fdd2312760f8dd70ddbcdca69605", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "02e975298825100092d819a042cbfeab4c6faa83ec70b35ee36c70641d05e8f5", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cd593f52ee44dada69a6b7c7b306caa36e2af819f37d9039da20479cfe087cda", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8c326e17925f93bd47057aadb35300a6211ec67d201fd38aa9e125fe2b9fdb1", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "444b4e5938c28e6b4bb22c332689883ba43de49b7a0de5f6fa0f556ca9cfd194", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "b77a71c6bdfc4108daefcdbd39a83f60e538e13b77b01adb80f7c9d564437e24", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "6797539492e6d4c96a6fde1522e4ac126677ae519ff35f454e3148af9acfcf92", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "62f203f57b4f307a14e9de09c6b110b3dd9622e01e94c5bd6a95ee1db85bb8cf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "88889785a3da8cfe28359adb439d09e347c7517c7c3247829415d7a18d216e84", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "cb689af93f1ecd35f6c6137bb3850ca6ab89840cd810ff7dfe3a14ed38a8a6b7", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "570a086221249513078f4ca24bf59f8109341a863c9ad4719f95278947879372", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "29788af63b7b22e09c0a686fbf72b0e2580e7ec79df2236e04372a70caa30ce3", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "db4d0bb92c2cdb3a9a8417bfb39d3073e5cfe6a8468d887c483e698379cde73e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "fbdcba66e02c1a1558eb5483541003791b2676855edc365acc2b183046e4af79", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "39475e23baa5378e4f12b1941845db1fe205b4c7c02c071d28736054c2bcb178", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "39f6d92a1510f675dfa6bdb5670bac3a63e26ceb32b4000181c3aa946026c9c6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "3bdd231d4b8be681d228bad0e3c79df81fd4d313da79a60c20153c7f63e40afe", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "02e975298825100092d819a042cbfeab4c6faa83ec70b35ee36c70641d05e8f5", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cd593f52ee44dada69a6b7c7b306caa36e2af819f37d9039da20479cfe087cda", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e8c326e17925f93bd47057aadb35300a6211ec67d201fd38aa9e125fe2b9fdb1", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "444b4e5938c28e6b4bb22c332689883ba43de49b7a0de5f6fa0f556ca9cfd194", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "b77a71c6bdfc4108daefcdbd39a83f60e538e13b77b01adb80f7c9d564437e24", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "6797539492e6d4c96a6fde1522e4ac126677ae519ff35f454e3148af9acfcf92", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "62f203f57b4f307a14e9de09c6b110b3dd9622e01e94c5bd6a95ee1db85bb8cf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "88889785a3da8cfe28359adb439d09e347c7517c7c3247829415d7a18d216e84", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "cb689af93f1ecd35f6c6137bb3850ca6ab89840cd810ff7dfe3a14ed38a8a6b7", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "570a086221249513078f4ca24bf59f8109341a863c9ad4719f95278947879372", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "29788af63b7b22e09c0a686fbf72b0e2580e7ec79df2236e04372a70caa30ce3", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "db4d0bb92c2cdb3a9a8417bfb39d3073e5cfe6a8468d887c483e698379cde73e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "fbdcba66e02c1a1558eb5483541003791b2676855edc365acc2b183046e4af79", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "39475e23baa5378e4f12b1941845db1fe205b4c7c02c071d28736054c2bcb178", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "39f6d92a1510f675dfa6bdb5670bac3a63e26ceb32b4000181c3aa946026c9c6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "3bdd231d4b8be681d228bad0e3c79df81fd4d313da79a60c20153c7f63e40afe", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5822ea720589f38dace79341c968ed365d85af236cb80a0ec3e25f7fe4e89269", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4fdb43112dea576922b2369f0d02709be172d86fd60f949d89da6349882cb907", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "2813cf0c24c54df9233cb2f8d239a387f02baa5e6389656189104b5d188d4f6f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "289085b1c437397d0dc43fb96d7292e85141ba740fb5740c4e414c5acfc04294", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "e301436b15b0229b5483c709c6d85854837408e9fce074c81f0bbce840ad8a05", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "24d0dedf895cf2288372872c7667e17eb3ed2c4b9726a8dde4dcacba7d5d854d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "86e9a14d954ef719e83cf1837a72ac8cd1a181b524ee2bac9a2a5fbd364b6e79", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "17bb62ec9f19f4a4892c497c2dde58ed10c8a330a80a7d510628cbfa70fe42a9", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "3465678c099b7aafec1c8a7f903fc085dd74563ef42349e9dfe33e3c8b3594ae", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "f67d4b2ff8bad94152ef254bcada59a9eb0aac44c4c3b89e976c5ab848cc0fd2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1b965021e8270a5e0e1ada848ef8a86da6f0a6b2f3f386c68e14b928d865b044", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "18b38262487935c410df9dd8a6fc7c015dc4edbe88c2b3e545d9617c776854c8", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ac5208d0ac16e3a769a1686b1adc438c51fe17ae37750e59b221caa73e363ab4", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "4581823acd2684482120b8f27b6037f7699d87c7f239b138e18add6942321b66", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "c7f94c86a26d97f62f0b3624825b085cefb2bb98bcf9b68b2d719fbb07a6f408", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "2c197c93f8af2ffe49188644a5a0a065f1911b7e6fab62121c99489c5e758077", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5822ea720589f38dace79341c968ed365d85af236cb80a0ec3e25f7fe4e89269", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4fdb43112dea576922b2369f0d02709be172d86fd60f949d89da6349882cb907", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "2813cf0c24c54df9233cb2f8d239a387f02baa5e6389656189104b5d188d4f6f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "289085b1c437397d0dc43fb96d7292e85141ba740fb5740c4e414c5acfc04294", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "e301436b15b0229b5483c709c6d85854837408e9fce074c81f0bbce840ad8a05", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "24d0dedf895cf2288372872c7667e17eb3ed2c4b9726a8dde4dcacba7d5d854d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "86e9a14d954ef719e83cf1837a72ac8cd1a181b524ee2bac9a2a5fbd364b6e79", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "17bb62ec9f19f4a4892c497c2dde58ed10c8a330a80a7d510628cbfa70fe42a9", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "3465678c099b7aafec1c8a7f903fc085dd74563ef42349e9dfe33e3c8b3594ae", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "f67d4b2ff8bad94152ef254bcada59a9eb0aac44c4c3b89e976c5ab848cc0fd2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1b965021e8270a5e0e1ada848ef8a86da6f0a6b2f3f386c68e14b928d865b044", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "18b38262487935c410df9dd8a6fc7c015dc4edbe88c2b3e545d9617c776854c8", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ac5208d0ac16e3a769a1686b1adc438c51fe17ae37750e59b221caa73e363ab4", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "4581823acd2684482120b8f27b6037f7699d87c7f239b138e18add6942321b66", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "c7f94c86a26d97f62f0b3624825b085cefb2bb98bcf9b68b2d719fbb07a6f408", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "2c197c93f8af2ffe49188644a5a0a065f1911b7e6fab62121c99489c5e758077", "T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "e6cdcb76dc77e9e73759c523d38283db2938028cf53d6e8ce7cd892a6c1bcf56", "T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "544d03882451929ba6e33303dd7d4e9f5e62d90f8f1cae35a2f2ddb142d39a01", "T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -18704,17 +18704,17 @@ "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e64163dc3db37fbff51a04a53610f9ae40d85e633c7996e2d0337c7e6a8b1744", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "5b287974d374fd40a672a06ce0054e71efbe3ec2d6102caf601a5d4dd49800fd", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "08d9a4c837cd74997a69d26300f4dc0491c0f93f233506076ec94875eddcc17e", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "2c087cc8d64a98d45b2128820fdf1b9e3edc396a1b9ea87ea03c9fd427f989fc", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "a81f1449ea7105a6af4e37a695397fdf9b8a1ae98a35b3690bb298559c63ee33", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "df88c15c6acc3cbd502a882c28d6a904044429d0ce58164147c097651861a43a", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "e7bac7207e4dccabc27386fb6ab17a052beeb986a9bc6adc793d11144c969d07", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "1bd13e67226c779b7253ea71e03013048e03ead8bf77e43f276b22f853b79f7a", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "05261c0c0068feea56a8e8f1b0d2f2fa0d3724041f2138f9bc6927633ae7e2f6", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e0ee283bee33c89b39af9f8579652f8618e37c8269bb62d6c07b4ae3020144ad", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "990da17fc0a477b2fcc17480277bb1d118745592d24e7a85456f9026a1751edf", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "90b4a8d78be865851997678447f55a2cf9ed5112a3eccd1916e9cf410fbf4e0e", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "41e7eda7a7083aaaa514217a3dd8e895dae785c53c9875cbe0d4d21678ff2e0d", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "bbfdbb028211d3207c0cc8d3ac613365f7dcad2004c2869938b3509d33f17ee3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ac7406e293c542e1a52807a75d627e2bc6553806b55ce7918f6158583a6d6f39", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "c558fa916c291a43540c5d2e22babf8ace1e95090dede50b4941b1202e4b61b8", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "4c20f709e50502a5e43473f0737503a95ebf534b087f595945ba2db219d0bad6", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "911059cffc040dbdd3e2b689744074833e9309d0fddac2964bef9d797801a9c4", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19070,26 +19070,26 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4514e54791b68e6e10243a9ac4d1ef78043405d4486d22566cd32ad87595577c", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "48594bde585a3fa8272f328957a70269b71215c3f7110529638b5421ce260cc6", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "79cc12af43f7b308494a03713ea1869a79b43076b136927a6c3a1193aa72ac2c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "16f8ad1d33f5c12c29423e7d27a1b7d524b340eb60a845fd25aa95b73d0759b3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a68c0b1ad6c28eb77d70f890743b0e6c38d9cad3ce45d3e727a3816dda0d97ac", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "3b9cac6bf916622a444db6dd768acc0a2eeaae7def754d27192667ab7f6be230", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "dfd0beb3890b3cdc9609dc282b9d830882248da6ce509fcc572f878d5501dd94", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "f7573d849277e3609ccd326ef144e663f5d2d755fb5e757c8dc06325899e65ff", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "50860255766439d7f2aa2cd20716bf7cac68bd695c1f449a51ae66aea16effdf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "e1421e29d6fce2fec5437fbff83dbd6082797bca2ff96e7396b32a70e18836b7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "a4d1af4c7c67dc90bfda48c2dce25657580dcc8531e79e304002b8f81718b0d6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "202f311c508813b2720e26653db8ad91e950c28670ba9471c93d2753ab9843a9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "d56e398d8462d13fb49f857c280100b45ff28714c6d1be560496d4853a1ff113", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "3e679a30b5693ed54ff4bd8df228475e7daa806a3126ae47afb2186847fc6efb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1f951b7e727ce459343bc32076056ddbedeb6c2e3994a415c0dd31fb92edf265", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "a71f54c819276b949c9eb6efdc4ecaafd2c4c7d0383109c674d23724e5116d3e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "232b04999420aaa61880f99f5e2752091969e9f23af14800d473b8e2c2290db2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "1882cdaf45c5da31ed7898987defc6b59d7ddcc4eb0fd74208a38504dade98eb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "a245368e3dd628a6dc7e5abfe3a758352429ff3cc78c6ad46391b746a3b1f847", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d5e690537b917952a8ce8fe185db64923e540ed0a7efcd402812e809e77bdc12", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c47e1c6a3aa552b29a24d719b2783d6846cea401f7bc03b76f14f592c48544a4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "098e44891f9bf08989e8a3cf5b3592348d37885b315a6231e7bb2649334710e0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "3b829989bedc10ce181e1b4560d89c4663f17417fde78a857e8f33fd03857703", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "d9101163a8ef002c8de1a177adfc0b2ffceb75f2587f9ec33ebb14462ec8cf60", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1d6f6b49db3144f6b88b0039e2ba1f6c6ac059a0d4cd0f320d5fa83951c3d19b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7f19cb47359560b64d482b26f67c97519ed6ad7fc163c9847855ce1511b5211a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "05f2ecfa87261bbe407d99e9cd3e5b329f94447da799e1e40f099205d8a84228", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7ceca6adfd2bdfa5939b9a268935e9158885d6a89420cd9c3dd7ad17f83bbf6f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "e8a43d68a9b8ec2f62badac6e759a0d0818a1d43990d08068a021c1115b631ab", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "7fcac68d1e4a9f849afc0f6151a41f3ae8268357319abd3904602cd41762028b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "f8a23118ae7d466e4545a2f3a239edda9a66225f5d1e05371d9f650a3f444b6b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "e2a0f1f2a0cb6fed3310854bd19c11f397a503ba995fbf40a7e278a8358056db", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b9e24fd77b10e99dd2727e62513c43e391254833e6c24e4b3c57119ccb5d18f4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c24040a73fdc0c340b8cef63a016374a447581eafcfe1e64e3cb208e8a918a38", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "67ce2420ab1aa62be03ddabfe48ed2e47a88e1d7d8431ddd751a1356a0e7dd8b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "5700c499a5ffd3c288de91be4d7ede230d8ff6879b6aeeb077cd84645074c27f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9e3e55947d8d52ddf1e88d6494d12e381c9b4394e004964eed6e6ad71eb9df4f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "be28573fbe9e3fcab352218f2610c99175c6f3433ec15246b0bb1cae916a9150", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "36e4be65355fc20638f0b9ad52360862f26d209033f5c69f8aee8507c18ed453", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "bc37ab6b38012f10b58493411a95fc9720b00536c738799876c03467765d2c65", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "829e113b49804f67e8d6dff8432d931164fe27073d8c81648cd17762953820e4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "193ed0f9e2438af75af402d5d8ee1317d33f6dceda7252fac46381ddab0c3a65", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "01fac89c60540f88b7e8dee9d4752789c7c78b5aac7e9da402d516742e5cf603", "T3T1_en_cardano-test_derivations.py::test_bad_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19603,9 +19603,9 @@ "T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "e7f4c5ac27ba47921f61b6c9b76ab93e1437bf8ee7b1e9f1b79c0a3e0fb539d2", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "dd68ca5dc8e2fa72a075a4557f93d2dcc95985fdafecdcde9584504aaa04e1ea", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "3225b56e14d4f3489407f10fb04399523af061ef8e50e490582d8dceeb399cd9", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e7f4c5ac27ba47921f61b6c9b76ab93e1437bf8ee7b1e9f1b79c0a3e0fb539d2", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "dd68ca5dc8e2fa72a075a4557f93d2dcc95985fdafecdcde9584504aaa04e1ea", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3225b56e14d4f3489407f10fb04399523af061ef8e50e490582d8dceeb399cd9", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e155f460028110f14617bca120fb80b55a7d3f32032fd8e78f2670f787c87a2e", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "c557bbdb926f1c1ce335f0cf09cd1797fb7cf11fb011947365bac844742b476e", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3c664b8f16146c1ec0d5b4700e3943af890531ca130c26f47c3f7467612e3474", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "cd25e920fe43a1aa8d828bdaebc94476f1eef2cea862e7eda30b62a4fc987425", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3b824ed78866ce81c3b8bd6f76f5ae24c1a363a78e0699a5ed25561b7e801352", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "b3eabf3042027e046c2e4a75db92bd4499e01a44f8de38c33b49dbc8af2e3620", @@ -19903,11 +19903,11 @@ "T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "5b0755dee09e8c53bf0fb979b77cdd8ab5008c196d16120c19c195b5e6c2666c", "T3T1_en_zcash-test_sign_tx.py::test_unified_address": "254e319fa5ae4452a9036fba7947d47997ca57005943cc72e91d31a1bea521a7", "T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "d9a6cf5dc9aa49737ed09568f5c110d2e9e216776f4b8be7e1b30b94150bcd05", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "4d8cf4dba0ead62552e55ac93649c69282774ca8db4ef078c017c00c0fc8a89c", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "c78aec21f5200c47b1c6721aa1e2763434b3119bf557215242d8b2a91a8b60c3", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "90e42416f0cf8e501cfc8d8a345ac97817f36bc09cb88dfa8a83f6d097254f5a", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "04145b23aed8a6be4a95eff1523e96e6b09e8bea26c666271d896d5afe1ec1ed", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "042cd72b60ba27782bf58f02e1357b324a8637fc4218724035398351f71854cb", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b86eb04aa17db7ee96ff1a0710854751dc89ac00c5ae5c5895704e9a9f84a09a", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f31d7469ee6e07a119650a8ab9ce693585615f3d24ae58f568802ac2270cfbbd", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "b8728e21a8b802b0d59deb631000a37e56554cee716e4b4debc5f3f237c1dfeb", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "8c84da02262be30b230c3547a6dd04f7cce73be8346f4cf208d3e8b3c58491a4", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "af717139ed153dbd0fb7b2c17974b3f3bff9020263cef711f4c6021b612c115e", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c4adc8f4c57d7ec898ee1f42c852ff3df662c7d4d69be5fdd3474fbe2387a45", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "601b1e06b1be826f9cbb10dbe83d9b6852e7d22efc6b98bd2c9f4faf8ebf1442", @@ -19915,7 +19915,7 @@ "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c4adc8f4c57d7ec898ee1f42c852ff3df662c7d4d69be5fdd3474fbe2387a45", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "601b1e06b1be826f9cbb10dbe83d9b6852e7d22efc6b98bd2c9f4faf8ebf1442", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "cc7b5f0cae4ffc2df808a84bd1e58a3c6aab25299073bb3a70703305b94b3ce6", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "379b5c732316a424ce0bd37fb01dbb8c9b212646481c5a78307db95cdc11d458", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "61d863a3f23cd91a6e01da628b9f69bfe5ff11abe5aae244930d6f538bcf1a3d", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "d0b2296d8c64caab9359945e03aeb6cd40687faecb448907146bfb11f80dcc8e", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6efdc126231e6616b24835f9a2a7cadfff910a22d3462b0c1880047e1d2a5101", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "8f9440b257d0ef3475d4d618e6ad7ba5a688c4ee0e5bf1f2a266096d74b78b89", @@ -19932,122 +19932,122 @@ "T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "51b2010eda968da7bee7719e08cfe2917ec1cb5b539b8af6cf56b6e18fa304b2", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "1554124da30ccbd86539daaa1bf6eefd0aaed2e77c6760a938925c6cdb5a301a", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6205977a43a139a3fd6a495e8c2254d06fe1fa554cb4738892775227016ac5cd", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "ee0e15325382f4bcf722da4f1020f8597b8490d71410709784c5bae9ebfa5d38", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "d290e8eefac708b619c1049a9e81c21c7ba21b0e4257980b3ecf70fd89a27643", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "de8234d8f639226672184f769600c3ac5db4077e73d102da9ae4d249aabc3218", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "bce1f85514c3f8765a67d4aaba8944ad39860bf2436b5c613e88f207553b665d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "e8f82170297b2b26775a828712ffe9daafe2c56cb88cd330a210e573e637f36f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "b1e13459ff050ceb7be8daa5dd0276d8ec0831ae26f55589b28e6f44a6dacfb4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e3f1dfd3a42f385a4eba398e192b257cf79c0e9464f1f99b39c0143928c6ee2c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "84c689107ce5fdac43d1a07e6dade40c36e4803848f0fe6dc1abc3a721cb322e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "527463888a2bb0efdc3ddd1faab2d731bd8e36c19ae8f16712211f5ef6d2b74d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9acc5690c1a6127fbcaf78c152367d9ccff7ac6e648d548f4ea954c26e9fcefc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "5ec4d744e25f001e74c90b69acc5f9670200dfdfaa00160cdcdfc213dba5a81a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "11a41a6ffcc681861dd60aeead6a491f0ab34897794e6549f6cd5372d158b216", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "470c01e4cdf0a1ed829c395dfacb9c65eefdc6c49ece7d1d6f6f9ad7afeea618", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "78c77c7d7e4c0ad5f4e28496f152072e24ac8563c14815d3e50086db7857e831", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "aaaa6e58b5c7a803526fc75b79d0822f884c4b09baf54f9b5735bf1a5817120e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "17457b0e23b929a8ef542cacfea7a90ce9468c0ef815f2075e06ad5de16d8b85", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "ee0e15325382f4bcf722da4f1020f8597b8490d71410709784c5bae9ebfa5d38", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "d290e8eefac708b619c1049a9e81c21c7ba21b0e4257980b3ecf70fd89a27643", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "de8234d8f639226672184f769600c3ac5db4077e73d102da9ae4d249aabc3218", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "bce1f85514c3f8765a67d4aaba8944ad39860bf2436b5c613e88f207553b665d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "e8f82170297b2b26775a828712ffe9daafe2c56cb88cd330a210e573e637f36f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "b1e13459ff050ceb7be8daa5dd0276d8ec0831ae26f55589b28e6f44a6dacfb4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e3f1dfd3a42f385a4eba398e192b257cf79c0e9464f1f99b39c0143928c6ee2c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "84c689107ce5fdac43d1a07e6dade40c36e4803848f0fe6dc1abc3a721cb322e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "527463888a2bb0efdc3ddd1faab2d731bd8e36c19ae8f16712211f5ef6d2b74d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9acc5690c1a6127fbcaf78c152367d9ccff7ac6e648d548f4ea954c26e9fcefc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "5ec4d744e25f001e74c90b69acc5f9670200dfdfaa00160cdcdfc213dba5a81a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "11a41a6ffcc681861dd60aeead6a491f0ab34897794e6549f6cd5372d158b216", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "470c01e4cdf0a1ed829c395dfacb9c65eefdc6c49ece7d1d6f6f9ad7afeea618", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "78c77c7d7e4c0ad5f4e28496f152072e24ac8563c14815d3e50086db7857e831", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "aaaa6e58b5c7a803526fc75b79d0822f884c4b09baf54f9b5735bf1a5817120e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "17457b0e23b929a8ef542cacfea7a90ce9468c0ef815f2075e06ad5de16d8b85", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c4c9aee3e0b9e94a845e4268780930cf13095764336a139d57ab6e393e3425a0", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "1522c446685ff09f1ba2d489c6a5bcb79fdf99eb901d70ccd3609825a56a7ff9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "33e7c75c7c03258845bda1009f38d50d35eb12af1b71d66d57a14799094ecf3d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "1065bef098cd184acc99ccf809b4928327e6af6bff0727ca5b9f1874f973aafb", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "8d7a2d9b17d090180d554eaad64b84d6a8c1b9bbcd8b53110ce34533f8994b70", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "14e4f3d950317a49e1e86f0f14438e771fd38759889a70478946b0c45235e169", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "90de9dd72c99108de4844519d67166ba2e1dc8249c1ca95e7b9d2a32fe2e4d95", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "5f7d2b4d9c8a5d5287f284fa00187bb9b00ab26d2cffa2a1283dc4b2f9422475", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "dd02fbce15993333da6f673aee176b8128c8c43b4ae838b431b16f01866a633d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "460bfeb3a814653cab2af282f620693dba13ddb4bbe62dd7d05942168c532b59", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "993f1e4e3fb5f95fbdcdfd20d606df21b74a7cbebd7827af740cc7e2e959ab64", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "9fe0bcd844ddd9ca3989dc4eadabbdc429f74b1618b0e836e5198acf515388f9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a018e2e944a9ee9416c95007c51acc4e1d3bbf7cf24932cb17e9176361b64a80", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5eddfe2278bb9f42e3468830e60f3497b85df4d9fc21f69407586fa1ae68f7ad", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "e166196f590557c7b9d4d142a2b9c179a7b5357a3b69aeb086c329835d0cc8a2", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "7e635dd5f631c15ad2cc91fbc8f2b758a5b7bcdab02e62e713890fd098278403", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c4c9aee3e0b9e94a845e4268780930cf13095764336a139d57ab6e393e3425a0", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "1522c446685ff09f1ba2d489c6a5bcb79fdf99eb901d70ccd3609825a56a7ff9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "33e7c75c7c03258845bda1009f38d50d35eb12af1b71d66d57a14799094ecf3d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "1065bef098cd184acc99ccf809b4928327e6af6bff0727ca5b9f1874f973aafb", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "8d7a2d9b17d090180d554eaad64b84d6a8c1b9bbcd8b53110ce34533f8994b70", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "14e4f3d950317a49e1e86f0f14438e771fd38759889a70478946b0c45235e169", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "90de9dd72c99108de4844519d67166ba2e1dc8249c1ca95e7b9d2a32fe2e4d95", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "5f7d2b4d9c8a5d5287f284fa00187bb9b00ab26d2cffa2a1283dc4b2f9422475", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "dd02fbce15993333da6f673aee176b8128c8c43b4ae838b431b16f01866a633d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "460bfeb3a814653cab2af282f620693dba13ddb4bbe62dd7d05942168c532b59", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "993f1e4e3fb5f95fbdcdfd20d606df21b74a7cbebd7827af740cc7e2e959ab64", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "9fe0bcd844ddd9ca3989dc4eadabbdc429f74b1618b0e836e5198acf515388f9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a018e2e944a9ee9416c95007c51acc4e1d3bbf7cf24932cb17e9176361b64a80", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5eddfe2278bb9f42e3468830e60f3497b85df4d9fc21f69407586fa1ae68f7ad", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "e166196f590557c7b9d4d142a2b9c179a7b5357a3b69aeb086c329835d0cc8a2", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "7e635dd5f631c15ad2cc91fbc8f2b758a5b7bcdab02e62e713890fd098278403", "T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "65d773acc22faa1382670edc8b9258f4f33cecaf6d856ca367591812d501ac49", "T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "7043397fa76718f62b1f6d12468ede2f822e295ee9d0a162857c142fc3e82f59", "T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_bch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "0eab772bac1530adec88e670e876144adb56897f6a2cf25a0e0291b19a659351", +"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "7c653422dbaf3072712a92b52b279c362616beee763f510626c4121e9dbfa4b0", "T3T1_es_bitcoin-test_getaddress.py::test_btc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_crw": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_elements": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_grs": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_ltc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "c9b6ffdc890628594c33c1576d8f7e36f3987e33a7f4e9d1f910d3c12863830f", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "44ee361a0a43578becfc12ddb920f3086c84f52f45b19b48712d86fb84fd2e62", "T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9537aceb609ae27e84e5d7f7288e5db3da52873ba1b000e2f3178dc1187e9545", "T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "8452f1fcb9d70dd446e46367d19fee7ea444cea235315b7a53513040098db499", +"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "c0d30d99b0fa6d9f9aa10ae6950cb4e2eeed4e70ae257b0a2977c72d3d532060", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "30eba2b9c7efe80ad43d0ff2f7ad754d61d70d1dc974a390f354d9b505b41056", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "7480044c6b279ed7ea3dfdf6b49d2c9c255ed23dd7b022ccf4d110e461ee3066", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "cccf8a4b9ec9581f4c22d823a222ce0d84e2babfa6f4c3b053fee278c6b8840f", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1ea7f9445d02aa3c116cfd3df05ab9ac45512191ae7f0f011cbdc45b96bf7906", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "0632adfe5970637c192a9a0e3a9876190e3648e4a28540cd9395b8a0db26c1c6", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d0b04583d2623b2f591cf31939f4dd8a05f3d3a139a9d68d13a9375159c019b1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "8e3b3c5f80dcbe7b6b4bbf4dd3a6143031b80680b15eb2e8e482774de3f12bb6", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "16224c1dee1a568d2d44d62586011a9dc00dd84573715c8e1b7b2faee41744ab", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "3640dc364d036476b8c8f83e22d0fb78169521696c63302a41e0ee697d1a9d00", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "6cea411b8522d4407769e2ccea2b81a92a346754c3f203ded8f1db9e1fa6ade6", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "77d263edd7e14220b42c6a5cb762e7ec1c6b0b5026af3e8d26bdf20a1e6c8430", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "951c477e805a10d50f0c693a7245cdd61867db674be7cf6859ec3489e6b734aa", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "b3da6ef4c5d9a6a78f99aca72b2a3fb201f76f4773294f465f72f556fed72bdf", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "bdeda96fc10043ac56e638920cb9d3cab6f2d6113fa44d90ecae444f7524ead6", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "b688bf981df80a767e005eca58cefa8dd28ecf07ce83a0668b04e0d4b0f2feae", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "06e1146e8f1684a4d0bdd6b9ed79f7b3fcbe1efbab5cd3baf47db13782edd692", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b1089b488599642e644ea819f69fcc15b764030b6cb61d2fb96163d47c18d7cb", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "ca3d075e013c453e2be1533aa03efe6dadd815595e317fb66194eb1a14be04b9", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "edf1a3e5cea1aea871a86863e6ef3eccbd33a8b1232f54cad8dfef4e878c79b4", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "28dd074534584ce7b143256c1edeb0360c999add7d4b6e1b864d55e67c833526", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "fcbee435d278d4f241c286fd550ebe25c9c43a0ab0f44d81b632646d7740be35", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "24ae670c5c21d84ef42b1fadc6243138dfc2956976c022f135fddcb8b0685860", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "caa06722bbfe2edb4609c94e31910548a28639e51d994c9f1c6cf99f762b6055", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "b53b42339cc0c4bd97fb80868ecd40b797874e4b29a4f064add2d38d811dee29", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "035df17762d512b343308be70d3edc70e3b7448ea0bdd0e0063672d50c7a9f2f", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "c6b80c29b1a87974bfad3f26d644757d8f5c5243bd57ddcf6980de4cd4da45a4", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "5db43c08170d2e5170ff343609b3eef7f29b68bf04fdf5b7b4b6247a9b9c722a", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "0313b9e59c663c0a16013a0f29ba7ab23643ec4f8c15e6adad88c774a2e1b37a", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6634b7dfc3526e8e47f84424f97199275be949ec57ea3545d28697c7d03c05b7", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "f59dcf1beb6cd8c82138644c73851088469f59a3f88303a502e4dd65cc7f9320", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6c1bdcc61602bcd4a36d16d1a8e4e2313e270122a9e4e1ab6906ebb399a94bc5", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "591f942883c4597f8d92194c2c48e5eb62308942e3a006f3f2bac011fb140d65", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "db90d96b87ca978ce61a06e7f7fa8ca32a7f4ae175c649344e6d7d3433ff4605", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "f230a2be1a40532a3eacf2b6b136a7141e58979265b0420ec93cdf07ffc5793c", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "79ceed49f0540f3e6e0dacfbb84b7de547e409eda62f7089252b15eef25c1193", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "ac3abe0990222558c8773760146aa500fdfac8baf070ab0f1868510311c21d6b", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "f3c91ebfd9866d43a58e95d029db1f307ef8b14fbd243bb0fbe68882af967cc4", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "523e06b2964b98365b566135b8045fe43f29aa2229605010a352e1982cfd2736", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "ebbd7c001880f92f1b51ce789f2d778f4ab9ce2bf7ca6c097ea3719c6ae5238b", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "effba0ba779d698dc096008ed89ac7518f23d85c45cf424d02c9304bb4f7de4d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "effba0ba779d698dc096008ed89ac7518f23d85c45cf424d02c9304bb4f7de4d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "f7d0e212ccbce9585a5964583625ff9b0821f6cda941342d85479d85ee26167b", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "de58ac0b335548aa97d653d2e5f5ccdb61d3ba1e9bfbe63c3b80f1b83a7bd824", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1001621eed9ea4b285774cc64f726ec8db0c85d61da680c4aedf3f30d1d72e71", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "478035393dbb8370f7918c3dd7deb137f62937e9f4203d8312a6551b31ba412a", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "be2fb4cc93dee03098354dd027398c91a6b61e18f768b993ec964ee7d3e94702", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "004c6afe6e35a8117266ddb83a827e7d1104460743bc1fd7dce5cffc49ee7880", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "381c4b29db5724a183ab1c7def3080fdc5a746abf3f387275244c6a9d74a996d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "6988428d238cf6056c63ca1aadea84e888f34111ee0a977b3380052f29948bd6", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "5ab85132221cd4a3aa1e0c9d6036e592d1c2278cc5919268641892bd8a170775", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "19db65ca6214ab833e91bbc0a152375a6da6eecd313d2d92748a6ee3cdf88e68", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "88928e04127a1f579e69e5b83b3db0e85bfd4938a926257ee1024557f7ad7dbe", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "f415b80f260ae24b8572ca8ec677d405c734e6c4dceab2c1478b614738952339", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "6042ec28187010e0c128802a1d3b81838d9f64ff5cadef391869df3e3702c9a3", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "e99702e56b33af02bc172b668a34e33442dcc8d8d5be4081c39d60506f1da045", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e6885bcb1586d9a175148640edb3506ba42cb1e97c4511d798a00fda01a5d58f", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "deae52a983bb0c8634cca5aa95baef4bf8b8666e96e1cfdf3942018659d8cdca", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "53aa63bcf55136f8a51fb8069eb847f79c0491d5ea3949b0e00b141e45c38215", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "fa6c021e9e8698d29b4eeebe5a830d00611f1da312c84efeaf91c23a81e7695c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "9eab42837d5df4313cc6ac3638b2c3a8c6259bb71750527f1c72924e08f54654", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f61b26a4542532f98404f7e2276fc64906cc429615f079cc456e7fbd09b6f61c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f61b26a4542532f98404f7e2276fc64906cc429615f079cc456e7fbd09b6f61c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "7eb8f48e27676b284c09fc69c992a254f9d4cd64bd6fc0425f2f48bf0e13ceba", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "e5614063a99b2ed09f6f4f727c73e5496ccde69d19cc40fab7013023425f0fc0", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "9e85d4fe6ec2115ba2a8d5199bf963f1ccfc603c54d0c07d71edb35d729f63cd", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "952b7b4e97da058476e9838111556f4dfdbf3da5122f695eb49626933286126e", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "a61ba3a70e3fcf9ed969d33fde51cde39b442271a81045e1eef957e67af9cf56", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "3fab5406f1ae77f2c6405d032edae19d9bc1634454e4a7ca652617ed348d173e", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "82f382896a8ca0861c2abd1ea53f2f9d94896a250cbcec8c578378a6fe447c96", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "65a86ab823f32a0082cb41f9b3ff7b436a70539c2b772866585b348f79f5899a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "630974e7d9ab6331b495d4c9eca55effe96867e6ff3d1048562a87754293c56a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "239affc80e19c7bcca247b2ab7246373b9ddad8db240c5f87402431a37e221c6", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "c5e9708a1cba71b675707ae7e650cbac8cf3fd80270210f8e969c52094ba425d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "246c322e14d23f91a9cac87ec7b459cf5ac666cdc3c5e84e6e47ad368a487c41", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "91e044dd6daf86816f59b07373e4afde37fdabac6fdbe255206ed2bcb0d3f5da", @@ -20068,17 +20068,17 @@ "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "6490e1782c1fa8e2453f654389a5e6aa6f8a9a6a0e8a78e3a812bb3459a818ba", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "4b622c0b726e15c93d7010a1963a83373dfff96aced004b8da50a5ccb6a20a98", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6911b8f6cd55cbaab007f8356145acf0c11ca33b7f686260b3e0dc9a1ceb630d", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "edfc8c963fb88aa681714462e30d83828a02e686463a706e81b84c95d99815a3", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "a00c1934c7b55e6a49efd40e4705a0bc107d4460a9a59b335f7fc15cb625b0b9", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f3355d8ada5d6a4726f84cc72d94a9f86d59292503eee9cda80bbac98df3042a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "5bdd9bc93e03a5e21bcfb0ec1ca86f3cfd04924a99a3a8a583cbcea974761d5a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "22d22089bf03b40609c356a0e0e7f12a705b74afab7d1d04ea2bbbea77b24f7a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "24c6d468256df13f6fbd0ffeb03a0b20f857c29faed78da3c18961f438d7427e", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b03d9b85f2f00e79edaf8156d0974dd095ba69dc00ab92e21ce42c4de06ede87", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "91deb01c130ada6f503f4130ac12686f79e8ce6f97113eba8e2107c85c548dfe", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "38a95f9148e4f1cb5788fcf86d3337ba9c17becd0d5b46ad08bf0fb78dd6f820", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "9bd409644c54c4e0ba150391f546a6a422e9f569bc34962668064d60162dd37e", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "f627c22a06ffcf1a678ed699be73ac0ed21ffafd1ddfa7a7cbd4f12f7dbba883", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "93e54ede4706a5dbfccf702ce536dccf292e289f81d234c06706627e1d13f274", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "89d0c4ee0cdc031ac0b9195f640393847a5710a3012b6dd4ae94bbc643019c35", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "cd8553d1e940c99e1343a5083c4da255d0cc47ebe6870d7dfe1693a3f7d68c2c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "66cce99b6b8d88176b4f69d743d2646031b911a133cccd2150aabf49c28bb2bb", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -20119,24 +20119,24 @@ "T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "efef5dbaa21e2282a8edcb6191831d164e902ea7063b2a54a4e50176823cb6b6", "T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "a9ef4250acbd711656b51f63f0ecebd8fbc9cb80717f50800f8321e3f5bfad21", "T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "4f40e74779ad80f91892f6f1c7a3e0729233c7ce24ac9253a74b91d46fad541f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "d321817ce8a9365d638ea921de901ccbcc965f79013f6b26df04756f8b8c4166", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "08e34cb85560a478f38a21e1a4600e1839fcb6d775e974a883a448e29ce6b047", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "00ed7c151f79bb412820dc5863790580646afe4307c19f1ef0862bb3aa769e1a", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "78225ec856a974cfaaa8af791e05a9d2eeb506383355b8df8719adc6db766af6", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "41f4feadbe7380179cb59684bf4010073804d56057143ecbf7c0d07272968095", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "42d0de79871c10de66585460c8ea014e342dae46849f129e1ade2db61c7a16f4", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "51e54090616ef514f18a0d290168e8e293fb022ad951de982ce4a6caecdc4a09", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "92e339dbabe7f7aee100b7dc6d3c34a313630a265e475da6d77db556f82fce37", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "ed3e1916bf69aa3204be044ad5e68b227b71ed6fcef054209bdaa2da09a1d0ef", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "bb979a4f34bc43906bbbb096a19d505074e0c4cfc817610842373f1df245d096", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "82c40343e26150d8b01545add6464fbcaf73b5cb780ee15c5d5d80de88274f7e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "66abbd34a09cbd1f8c0ad6ae574f79f6c728f8388bfce121ac1157cc235dfa6e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "0a9e25b993597db75185944a950de3a56d66d6b80b30e40c6026636e745b11b1", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "a1419284315501a00f719d20b8658205a71d294a2b16645bb3caa31f9d968519", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "cfb77e585ff8943c4fa034db3da6f690b9c7df39b352a8260127774a7b9eb3fa", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9dc5c1b7e491047b57d8cd99ea21c62e3630416ce157f74d432a1bf848ae6d7b", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "f55d733877b085077b7fccb35e8f0b8814f265911a1fc254448a320cad3c096e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "7506f8f6426e6acd72f0214d6f5b130c4c248813b48cf76f6911960f6df5c728", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "4d7fcfc6408cca013b038feaec8679a45e35bc03dccf0ca4515f2baee10aa917", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "5d44cf34baf58fe2cdacae61c4b4e6d4dc7d352e4a47b3b107e5a34612043832", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f70c88f39cbe5219b0047f305459612abb4f6a34ed871550a9378cb524215914", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "c1f685685ae375b85ebb7b429fe7c8e3d75bc95aa1022a46c6be2bfb5cfff4b9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "5ca60f38ac289aacfefc0bcc9ad1ee4b3209354516a28c18be0298d9243d512d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8ab0d8789bd4aa4b00d58e252a6552f4b5ff02491a0a227cbcfa060daa7c6cc0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "43d02a6cf3109a1ac2b30b53da17cd69faf069a4f33b425571b6e07a1a3a6d93", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "fd13aa487775a6b6380dbe8e815cc1b538b184da2385e9deefaeb534b56fd639", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "7431abd0b1c6d0ca393a8e6f66d1251c939476c1a696028f5292cc81989acdf9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "4c680b93f34e50056d75a609f4ef90161ece046f3e23bfe9ffe69696ce3fa7f9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "403538e3a6239e75c1138048c8273792f6f1c7cce3cef8536e21703a564c74c6", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "3fda4189d6e047c3e771be4046ffbba19bfafcdde4246edb813bebcb21b22de5", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "4d9cb396fa24fe80cbf4d2bc7ce813afd1a8e62576d86aadd04e3bdd1103ba44", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c833181368e2bddecca26417f747855bf40ae2d76223a829fd31647a32784542", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "3abc3de168952378ef29333eea8550af2e2ef10ac0e0d878285c0d421a15d941", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a1c9cb749300eb4b53b6f84629cf854c1823e364b58e1d3d632c2d66b145e792", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "f7612d762a4fb0597c0dee8c3a0e97713d57a8fd9f0abf66f9bd63d55ff69861", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "b1defe7ec013eca6b865b41b11da522a1e10fa83d038b8b001492cfe055f490c", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -20354,106 +20354,106 @@ "T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "6819141617696b0a9b0cc9931d896b79a0c6574b5e7bae611ecb54bfda7a13aa", "T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a5d2171c871d76d7eb17a45a81a0bb7e775ae8aa7e21cc08c2d46678f526c63f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "565a07f3459dcee219546d780aec59640ae2e109c9ab1fcfef09e11cd91dd0e1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "8873cb1c37891901342de6062d7f831c5d8b0a2f9830cd263562f8e56e844a6e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "c6b39c74f0c29ae4e91216c3d0aa7957c45a34ae4576da5ae415cc789fd7a9df", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "48b6bc4a71aeda5ffa39f497951147f6bf62594ee6483dac1c8189f6db238ce8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c7b166dcda0fb6cac4de0563ddd060940567cce127ae7df3515fe32899cf6e21", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "43867b4d7ef97e1fc69506a6d2e5e5a3a3aa1bfdf4596b7f3b2414ffa23cec24", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "83140eb997c188671b74fdf10648269aa7d5719ecc59e9d393114559911fb648", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "84c27f3ece06de4fcc5cbc505007a18afcb43b0dfa5277ecf366d53a4388db99", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "523050c9ff8b3fe763299e1f1659dffb82f9a542809e82f3d53fb0c56012275d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "4f01c6d74a1fe43637a790c7f4e6ea669308e53c95e27180cdd0f329f618d1a2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "d6e2c89e50a60593eed2b529ff76d3360bc02e2b9be4905933c73ab2b0ab704e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b3269311493457d24d3295779482409c90d152f0b799566f82ed6b5b0807d142", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "cf6446616e13dd34ab8f39f79e4a55a87eb279f68453beba05448a3cc816a2cd", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c6f7afb4db11eafe27e08529a53d694c3017e548d2939de5d0d55863636e74b4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "2995d25f32931ea59a720ad2d05768aad114cf1cd5d7940a4f759b82b06d3e08", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "5d61d4435d3e91c554bf41538ba079b14928a77be52e91c1f03cb05a9a691725", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "c87fc9a6ad6d73355a62092ba400cd1cfb016f010893caf16a23573f7b619093", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "393451236665dac2073b571120cffaadbd341e2bbb0e00d7584b13186513a630", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "79fb8b753fbe44577cdbb66f708d64a8bb55810f237ab73d0f42f0eba4e941f1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ccbbcd19c7ee8086d8544c868579231026fed805167fc615444aff553b3bfc74", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "1db71e324021374bb51e593921dab43743cb22418be5cba94526ca953d004e61", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4fe6a056afb038ec666d8bdd89379a1c59a17f1673f21c043bcd5f039481c3f2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "b878ce36c41039e15990efae993728a6d5cdc476154b18ea8043b3b053fa8146", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4ec4385e0cf1df1002b746531b694d2ee50132799620ab38294dc93d8cc6bb98", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "abc44ac3776a3374131e0d035c20cd1ef4066b492c97797d6016b17e130dc363", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a7486ee53aec9e2cde62380a9b31129c3b5e9a93b46744529b1fb6d5ac93b94d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "f292ba4167b5f459609e5fbae591c213d40b6541c845cbfbd1c26215b6fa6206", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "cd272d7e909546d39b0b10d24d2904b9e48979af57931c810df007a60b9bdaba", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "50ad314c3de8a8566c0006ffcaa4b7341afbbadb2b5a852571099c87b4c6c934", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "1643221031390f2f27d2df1c882bb23604e0a543bf27a003e77360938a65343b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "79603ca742192e885ca954a46d2a00eb1053cd4e4114830b3656c4455f501481", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2dd42f79c41194931c1924ef22e062a431bc81d26e5e79d31a1b3f1406f7ecfe", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "7d8f2461d76649d725c931c5194baaecd40c3ced8dca8f8e1164fd10844c1bae", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "b9ee1225764f75faa387a1bd111819bfe52b0cb84cf34717c01abf8a767321f6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "2b339506f378e0f4bd44c0db6f1f9454319d497725efbdce8114883a945b93c0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4dc381f020a5afa4127185d961de325baab437c41f62da56939bb77e2d02fe98", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "78e94c1e4d3e423de8757f45e1ffe03224cd8237e43ab7c4af527ded7d356c39", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "0fd3b0841604d143c1e32969f41abd5a86295c5012627a4e16b18e3e7a04c819", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "590b73b38c210876b33c366c8c6493898252b846d804af6e8ed2882a3e87c6a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "af1ed52c96502a5afa2801bcf8a1a96a94c377ab2d56adf50c8bf30322aa635c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "d510b11a21da40d466ad74c5aaecba397ce771dd55046f6985c58ca97096e73c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a046c2bf5287e95f85ce1b6174bbfdb2c7ed9762a70448787860c1dc8648440e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "08033fa3a24e834b7fcf1cf5e6a1bdeba97578efd3ed98129b6261add5e57132", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "1ab6abb649f2a34a3adc24b16ac5fbedbf6c0e186334bd5b56d28fbbd5698515", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "181b44f445e048011ec552064e5136c4ef687c68f7ce9cfeb911f8c3256e6dd3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8bab242b2a03be4086337a310e4481943e55c41ecb5813c87218b20f98adf5df", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "9e8b719b2054f71c8f946c4e719242643474505f4c6e4d794e0fc6758896ae8e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "5350adc569813d2902e9c959969521d7f4fefd56ac37ca283de213d71973077d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5048ae6caf366d7f1ebc54f30f4e2ea0d280375eb08faa97f17424e4837f76c1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "dc20a2528f6622da17b6decce7c7018393e799ca0f2493b375798f6cbacb86bc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "e0c51606e2283f20c3df012ca8d61e013d1b4dde83ad46961273828c1bdd38a0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "44be75a04a783defbc626ef29b398081173bd1d5ca60f3ad32190407ebb19cb6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "216fce2439ff63bd6a21173dc5b6995c03f7d5c9f8c10a09316712222be63fd0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "e54aad5c92b96cce5b7c4d5483e2c15bcd26045f333627a4d38308e07eb847ad", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e4940ab9b571ec19ffc7e1072cc6b8c9ef00b65864dd4c7f2f87e88bb3e3903b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "89730e12dd180a8edec1067ce73c93ee1be1d0e83e4a5906a6cf30d579edc351", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "678a23571e12c534bf0a9eba657015fcc4f6dd179e1360ff1310e12f6b30fa0d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "1aab4e0bc9daaa963a2d9039625acfaefdbd325568cee6d392e28a980d5a7831", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "58a7e3ffa343b6d23819cb1701cc4ef382e9979e321ff9bdc7d149420fe83c1a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "e67b839989808e1a119329b27d2376b4fa3eec66e8fc25e794265daeedf948f7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9c30cfec9178c8f0883e93aa43550ff7a5482993d4cdcaa178b03ba9b39f70aa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "2ed1709fb3ef77ab0ef19dbbbab86827c932cd6938ec9c663aee4e8a7d91f329", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "a343fc02579dbc2cc785c7e6f3f9f19b6c0f5fae4ccdb5d6c8c85093753ee01a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d5222b87f16ff71d930a481de9ea23a5ec3cd0d525bb2b72fa53d72dd87090aa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "6b134b2b024c1760e221089a907d51865d995f1c1bf6babf1fd1109d83fb94ca", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "ef2e22ddc321581f8690efaaf20adb26948143ceeb881b80f81b4852e5d6662d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "afbba42bbbbade4b1e0a22cc4dfb2ab88a4eefbfc2756ae9d3f2ad1781cb1fee", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "67fcb5475e13db4a09aee695d49faffb6fdc31fcd53aa9e34ecad3032936ecf8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "7d68c3872b5a36254a7f04a116e4bba27775c252a91b0a686c0943410004e2cd", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "41e2addeddf38855d14ee460770489408602e0b5c4899b1830466d2a75551f16", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "ebed5701c678cd112a9b55b328043e1dfa76659ac9aa6c825421264db397643a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "36a4f7f5466a6278aea6e17984a47b2d661853abd5f00b2d0ed12144b4df6f68", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "a3812c5fca8b12d90dd92c95f99c2da9ca0edd36fda6dc3bb415d097354450ec", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "5c54535a97a7c883966ebbfbf8aea408e3abad6d2c3114dc5d98fa11e898dcea", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b19d337edd0a4915d6b26acbd6fbc509fb3a3fd59efddd6c0218741d58551d81", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c89984a64b9e2674fe414ba83157193c865b220fd405f3c079149d7ea75ab343", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "c16fbf79025107f1d66e67864690e04c142db32b3f22f620db9a53a7ae9f39e3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "091a12fbc83ee37e80a5ba1212c997f4277ad1580b1f822cc973dd8d28d86899", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "f04e179890bd21c52d3f88b7ee1899dfb0d384c6c4010f0321a7ed484f3cefce", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "25c8f1f4d169e280497e76d98009671240cb85ac8b3c47f09d8a7fa9c14d1faa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "050da5cd8d3827659388f2d5065b8d4d34a733c0ea6ae08c7ef7def148933177", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "312daac28168f113799fb96eaf561200490f39f5107f85d7ea8e5a71b994a1fc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "c21e5e837df3b4985d1a9aac02b54b67069b84c68f6bef90b5c4e31f7b79dea0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "35950f179cc6334424d4b21b5886983a0259f966b1cfbf16a02e01017a1a70a5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ec7c136f48fd7a68333259d34aa896e96410b1d6f31916511030f04d5f387ef7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8b6ccf1457c961081d5cb08b14d1f033bfb729506254aa2d76b19124cd2dc660", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "b5adacda787263111ba27a0f9231523bd629459685bf0d7f912dc918206bb30a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2f0a95ad867ac84f64be9e626dee6842114b463cf5112b291b295a2bd328ab96", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4660a87f1a6728ff9861be262eff97af9e20077da1cd8b720e7caa4726b43b39", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c9d9ddae11bfb8635284d0bc855e1204c4aa0e55a6fc8c66d2be1b742ecc0e84", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "2ce0138e3c8460e4d1855043f272326308a1088a9afa6a743089ae46587a946f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d835253a4515b5747dcc8acdf1eba902bfbb45f298fbcc0e4ab15aa425d0fcfc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "256110cc1edc22b0e961314a999b3d294fce1ba1eb5a70aa6fcd1b64df9858d3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "3caa40d04b6ab80c2cf94c3c601dc41f1f616a9d1c5c38952e69ab2d0f9288ab", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4467dadb30cf952f4a02e120693a6663f1baf838a49e918d91a6c680ee461df5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "960f5df34a05918280194e5d9c4fd5cdbdab3e4162e57c8bf33723d088a69bdd", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "9adc1142c9e1fb9e93fc63425c418948da9699702e7ec418b347af0d271fd639", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "2af8538c9e37db1bb7d865c1bd95eaed7d03876b1274486f6d1d74b060aec52e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "2b13333914c3d6b1e96853de33d53e5bafe75b70b72f8106bfba0a1060e26ca3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "9eca551b79f12b016260be6e12b95fce9b4195e5444a9998f60b23ac2410c553", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "dae9faa990792397301ad8203c5e88df38d0d108d90629afd3cb45c02f1c94b7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "755a8f228040389412a3177d640cd29d7e357decf9088b405d46ff4dcd813186", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "323c86d80ba7dec6b7e1f1d2befa7c07461f8812c1fd53fb545318e1a04166a1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8340633e419738e1901a4ae655d69e8c931c58658480b6b4350fdb16060aedd1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8f8713259de6941ec3f9b899501814e2fb17e3cc26ab6b0127ae27205c83c753", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "03263634b3e58c924b3260c3ab790efda608626d9f39c4f4aeeaf92099dc35ff", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2857226954c35189ac000384bcb98a4486054db297c13ea87a80cc9387276bc2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "101ad992f85632b46b83728f13b61af21503095268829d55e55e36aab5b3d90c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "631dc66d4de46909a26e8aac320508de0a8f6e9fe537823276e15ec5234b938c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "149ceec770448c1bdf9682870c8183e4d7bd67e7c07d92835c4b32a4a0270285", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "341f1e43cf7f40f1a5477d55e795ecc7258674d6b88ea59a0746ed7096ef4d1e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "25c1c77780d29aab6a11aeaa82bc4904e3f9cc8e06cd541b166da21a6a89c180", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d1bac517d1d98d8ed479c195e0c827c6b3aad37eaf5bb61f4e0279d23d173c6e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a2ea1ea90a42eb0d067389b03ceb87255d2fff432bc6e5fce4d01bb9b0fc47fc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "03bc04a852201296996c710bbdb472af2818b0a0f0f7e1dc41d6868e89ffd68d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "d4b67e04ff95bdf0bf8abe5df8571e713db5c6002186f3f9ed682b73057db415", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "67bdb202d6a41ef7621a788e1c0c1238c14fc18fcb66f19ba4cecd37416fe519", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "00a74ba749fa08f24261eeaecc7a5466412913a7cf58a63c1ac9982dc920ceb8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "1b6bf1e473700095eb69b9b6ced0f55213969b854ab89e126bb998edc9199478", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5cf194fdbdc2fd9e60882606f984db8f774e6fedd62ecf44d6fccd3c1612ae5f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "184609f6b144118a5e8b23d77693b2d12838889cb1bc52dfd6422baa188027ca", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "cca62868e8f3fadc61e6762245f74282921f7a8f359e11aaac9711afc41fdafb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "1064c0e8dec80ac29b4e67f3038e4851593dc876f85783c5dc114354c44b936e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "af997c8f32e8672c7a4aefcc4fbfe0e3d92d2a5387331c51a5777fa2cb3a1a9f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "6dd9440cf463d4f4678f52f56bbc508b471315f5fd9a39e2d60711839cb91b66", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "21b8c3896abf71341bab2c4094c062ed487a888aa7a1a7f02e02dd262c36d5ea", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "7e0e3270656715094e40c1f830cb454d198dd552504c71f5bd788647ee4b9a0e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "058f729907a805610710adfb4e38c696f8eb83164d56b8d697ee54eacace0f01", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "41194cac3e56cbdb27c6d24b398692c557e7f3ec232916b64ed18ccd6bc3673d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "9d3ce91116e25b51d933fe4c0d9f5a75ace47a81b271e4cffbf75648450c605a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "16dbfa9ae7d9d5fdd6ef26f54063434578fb8c99bd69455bc1fe9a5a343d2a84", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "68d58c621a718625beac4ec9006ec09068cbc49a5430278ff7d7844e0de42fd0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "41694ddce75c32c4a813543b69e801472f4954bd42178307a112848d976fc44f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "1ad36ccbba9d9081fd109223e9f726065c049df2268faf948d4b08bcbaf979a8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3a6308802c7feb6a4461b079e9b2962e1ca159991094b46a43c9992ed36c57d1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "c265fffb5d8d87d0629b804eb934a962d984ae8e6fac6547d208473cae86e031", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "18d86256f86edc88fc84a63429763829af5fac3ec82e8e25adb196010dc79e47", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4e149d2f2bfe46e915d163c83598d1a3063104d3667bc233d377e1ecae4544ab", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f0e8e568b4dbf812137cbec3bdabd6c4c2dc273215e0fe4c7eec09dc3fbf43c1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "38726d077d4b3a7283f50f5ce0c03658f0c9a9e1fc1ee042a906f3497b4322e5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "01b5c91edcd1b25315a5b5d4016cb67653de0fe7f42be234d9838c5f30c207bf", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "962793af0a786450ea3e3237dcdecc6a53077ea09c2fd92e8772170e39752408", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "283d3b945a4d326225c8dc38a2b35d58c7d087042652c99f6418c5093a0298d2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "6302ad192070b6ef53c3710091e5ad175d5037ffaf38d11f3bb5c74307a566f5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "83b2ffcac42a364a2b42f7c816bdee2da18b617f6a13f2db7030a01003d2dba0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "526ca1fe12ce9963b44330098b7287eb05d448218c2e924bf6707e9beb61b26f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "947bd8f6c47b70da3b43f60c893ce6168620c62b6c406cef0eea3911a93881fa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "52a3dee2b0ca59662962f8bf9aa0ab7a09b2b8e3b3d1574b8dc4a330502c4b7e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "53e31019413c872a074249a1cc32f9d58f4f95f67d113f64656c15bad218edd2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d031651e74bc7ef0535eba1426810cc12bc774dedf282e41859f10fb31a9fa33", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "3556b538d44cef4012296c26e37f44ab4ed8f0343a022fa6fa74055632141231", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "dae6e436cf97812576b788aafe892cf12851905ff2bae7de6a760b3d2bda1091", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3513f0420ccc8f232d3dde3748ed209be6931af5eeedc32728c6bf3e3b479dba", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "d0bf033aa9d594801eb2d672f73223cd47e99a6459064e5bca0e250d59651068", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "4ae1a5e73dfac699318d667682e579f2d97797ffcaa3e6def48b99d52d57cdfe", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "cb5528b53a39b3f02da39a2e355d374384a59f34a56189b40c8b1ae1260c1e1f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "160217b86934c2ad7209f27cb26d2e32f7e504a1258bd2d62a29c1d97f50abdb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "ab202f39c26c38f1f14f9b111abfb447608ef186b3d6e8a698b852def2e0789d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "929b0bee74a2bf85fdcd3d11866cc8abb3221a1b306e75b3032841ce21438f91", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b26150dbb82eaab4d1c1826ff6530f8e77f8bf5f16bf7287d16a4c829147fc69", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "7acadf2d2b629afca12651364adc154dcbe0a9a41e11d81982892e94d1e4cf14", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "05f72b0c6e87e6b47283c549f80e4b702313b192c68588d3363256179861426e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "468c89ba1587550df7f1f8d861f1b665de71f720baa4afecb6cdb5c774b09152", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "556e721866c14e458f3404d3f6bdcf063fa3960b77beacacdf59265e6523cf5a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f062e21148c649b5026a7e6d23a903b7c3d48631389a15278d4aa08e8bcb02bb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2b965f01e60e168dc8a7a8e1ebf4d7cc3b0a06aa563b6e82abc5a03d72f348b3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "2d1b7a2f0601ccd91134c6636d9cbd589199f62a3ef4a59e96469a140994eb5c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "edd096018c3b086f5ea62084971d531b1be45f0d3efeac1c6f4d68ed03a55bbd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "c4695037fb8fd83799b8211e6d87fa93903964cdfc46c5d34828795926c5cb65", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "c4c13bec3f20bb4421e069b55f14c4abb1e42f59c54dff71ae1231b2fefef51c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2423792f898d7541e562fd309af1504501e6a3100285d3d3b636dc3e44cafd32", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4a08519ead1d48b086e221487b5d9cb1eaf00a5b9b86d691552323f6b8677a9b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "5e783b74bd51f92e4b4b1e75949a8bfd7ce0852cfce542b809996bf89b5717da", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "a7fa648043c8bf406f67fa6322e06b3272f6b99dcc4b8c024c27c1e515b27e59", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "f1ed24e411fbd03cce9a73b482c44c8a1f291e30f9d5f5658c6a3295fc4b2232", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "75558b824c4d6cba53484234bf1553deb4e6f1c28c2ece758d93a543dc31aa91", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "bebf9e0bfd26a0d7f9cba1f18134e841ea360bfe5610de14ca150457d73c61a7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "56bb9aeed773255909679309d17e131fa09afa048a128398a03ef5595fe2fbc4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e43b13ffe021a11103d07b9e95b896fd2fa31698b89c2f195dcd1d865112f9e1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "64e7f06bbde0499ca24525c8c8ceff711429fca0422e2a895f386aefbd02b97e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "7a4bd8d148288bd7f6b3ac6ce94d7d05d95dac2f35168b35956c6081af8d7cbb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b3e25e8703fe30c2d721679807507c76f548a209918199caa01824d92dab074a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "4c871e7ee2e2d538fad7a0e75c86834dea11c97d9ce2b97a056294b6166cf60c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "8523228cb5d20c3010473410fb13aea8b9aa821e07e648790a632fe889f17270", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "914372605e6cf71ba26dac0ee8d222049e56338a6bae9a7e13eee073788b567d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "bf98b4b8df02f24576fd739b3f68029fc8adafdb6751bc58fafc124af66ba5ed", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6933d4171739722afb7f98355ea8b330832047571539cd25e62d7d83643ad2c9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "677f7918c37b3cdd01ee93aae1036a6acf92510c2591ba3e087359c80ae9da70", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93054461b27d283281345fcabe8cc94fe2d923c22d51e7ebccede22e028454a3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "149836334bd17a3650448f23dc9b54af49d13275679430979c4c817eb73c37f7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "41f3a69c6d02b828f29d44c156f33c3af4ed8d298fc82f2222ffbc39a4412ef0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "4e3449c9fa8598271e942740c94102e039baf07c865f70ae990227afd57b5e5b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "514ee8959905117e178c1b3b84633dbcfd045806247c3fa3caec9973d0c04a6c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5ea180a1b39f681dce2789dd617b9c6d099a8fce76f3dd1671da40d0f7918d8c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "8ae089d8d451c658721e22ea28917f0e9dfb7dba4724ebb6c32d62d30e82e098", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "435c0f848f3b2387d9223069c6ffe88901d9f7ed9174f1a90422305ca95df4cb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "6222f5dcf29680a5c14d53a5783a23e067de604829e7e9a8dabb4c8c327ff9b0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "ba4e91985ea7a9c83c6883bcf2d34179a47e87a6950067d66ced0d317eaa49e4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "face901e0ab149e057cc239773b91064023c63ba4371953676ca1bac68234fe6", "T3T1_es_cardano-test_derivations.py::test_bad_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -20725,18 +20725,18 @@ "T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "56541c11b94b89aa445bf6b945d9a2068ccc861438d876833a5025eaf15232d7", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "480d94bf477d24022081484e1e912599a35f06d693ce97eac054fe7d5ea2579f", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "89a73bbd8411b8ef3e6355c1d88022eb55a34e5005a26ce3fe77114b3073104a", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "58d452aa3f2f12fe07cfab9c34df1746a6a0f0ceecdb9c6e8f8f1b0ebd01f847", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "25989b3833510c3bba7e5c28094c43f89eeb2fb2b09933f14078cc5f9bd10748", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "64b223982606d2134d21973241d2865c22caf9e64643cc061108e1f9acae1baf", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "9b782e6f1a9da507abcf80828c0faca952c10c22a3935136716466394791d7f1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "b38162dfeecf21a940f8faef1d6a1d77b2f9184fa0d5a12d83ebf24c7f3e988c", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "881bb3592f394e6457fd07a9fa337a040542a3fad1e29ae9e4e41d309e34cff9", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "0d62d6b67ff6290214eaa8a69911a66cc2fdeb40783432af58acc040112a6e42", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "31826cd66d484b7cfc36b416b9a61165be13379e7673f836cc8bf383f4c54db7", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "f995cfed869706917b6596e9205f2694d6e3c6c054584724fe10ba7a23c5af33", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "91c66f3201e6454341f06cb3d28179e0a4c9e7e3c12d6e08070b38ef5e0b9672", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "39e507ec31812944cd9fe0da89ee40c0280aa4af2666c38708ef4ba44b44b226", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b5c7f938cadd148293ff65d35cc7030a930ffe3062fa9f9a88a3eff9cc790886", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "6a252c9d65c7b853c067227d8d30548fd6b9331ecd1dbe3efcc21e5fce67557b", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "e30a555fb6fd54f87e275253a213829744a026f5a4196cf42a389e744f64c589", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "42fa9f4fde100e3b99f28afd74ea3b8effffb8e96817b9131dd99fb02a0603a1", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "0839342de80b51b5fd2533a0dd63ca5b919383e548bee9167fd513abbdc7dd40", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6b23908e3dd7b30b0ef325bf68d2f16de5b0680e3d03322949362d11da6d9031", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "54518cf7676310f911666781bca19c5bcc06706e0e7cb3ed71e30fd1e26fc936", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6e10996bab9bdce83b2ce1c6df4b7d86152df34cc2d42d7841462e0cf0b879b0", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f787d22ba08e0f47e065d99601c8261c2df8e4da6a782598723dffcba87ba24e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "d3b46fd3255a3d57df87d0e0efb376d1fc5eaa652f340aff50c4b17bf3eb6345", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", @@ -20894,12 +20894,12 @@ "T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", "T3T1_es_misc-test_msg_signidentity.py::test_sign": "2ecbcf7f7d499654641216bacc3200254c14148f0d136394757c5015bc6dbd96", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "47352192a58b70bf9dc72cd5c58267f7f384374cf6af3e10fb77c9992a6e6ce4", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "68be12df9207aec4f4c71b99af0ce1a7db4111c99611563c1186c41befc71648", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f163ea950065a4e7e2c76485ca1d6374a796b136c0677099c880bad620737fad", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "a8259e9d7c3c2661b9485af396f4179753dbeb1cdee5f40179a2970353046b82", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "9598c40fc83a526baaa92352526eda7e86ecbafc87ef50c029b72cdd35753e02", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "41667a74ee9e21c199b201e6e9d200e3e379d4cd7f900ba854d777f7b722921d", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "d0c4ed3b0ee850b1f9521b144a1d42388c58baf476190283d017d68043f7dfc5", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a3a06bedfef5516146feff5558a7f7423dda639b81ea780f03026eb406f65f82", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ca05646ad1f5a0ff6807dcd6c672f17e985b10e5d2095bc6411614501a135bfd", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "9763409306202379e5f6742a3e98b8cc98638c4bbf841dea68fe7e46049744c9", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "2cb9f3392838edabbb81504e3f86840dfef4630280e2551e74b63cc31723da17", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "8b87a018c9cf731642e5de2017920e81273a67025983cec59dcc4b8dba08459b", "T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "50f4aedb7666bec6625966286d5ba22439e6a10a83332548023cea32cf336fe6", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -20954,22 +20954,22 @@ "T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "db3432ff965fe72a9c5496d2e95b8d89c0a5b4fc4a6abe5e4bc75e2b97fac293", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5fbeab1f30bca03af9cbdded83d7812e414fd6eb14020468e52393548102f773", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f31755f5dab8897a68f7f403068f40581e72158e39cad9176b27f179d2ef6c7f", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e783ae745ea96c5c80b7ceab49e8a9298dbaebb8252fd48e9383c13b086728aa", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6179cf1ea851c4235578e9c82d844df6ddc26dbe0553df10ebcab5d682492c67", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "4270fe2f9f71b0ad96e49eb1ee44bd5ff329ad96af2557cdd0012bc100e15a6b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "bd43644617c215931e66707945ffa832efa7db7fcaa9adae27b5eee727cafa2b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "86219267b59de9db7e5fec496ee68728c777e8f11139ba125301d1a9d44e9a47", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "627be2526ffde1d56e07431ee5b86ff24f628348b3faead6c8c4c9cdf7d2de8f", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8d5f267b00d53701f731738a2a9bfd230b04425bdbf3eeb9ffc6c701cc39a968", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "371688d95e2b3f66989431fa39e698263a783380fc44c7bac57992157b93469f", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6b05cf4fcdd0d75f4ccccbb04a93d4b663209f40f425ff738de10ab7aefd6fe3", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "11cb9cbd40696a68ff66131bbb96ee924ffe069ba623a178b1855b3bed5d728a", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "2cf9da3ee63768d42cc27b2bc0c1d149ca7f7ec2cd5d3c9b72a9ff78edc43c09", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "02716e566f9cd2a69e45a97659338a63cb1349cae8bdcec2ec14c876f40f8018", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "8c99fb15034c771c0620163b29985d9a6b26e881ca150c7845bedcc0ad61e54d", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "96258f9ab3f76964a7064daa433582ac0af01eefbfe93b8fa9dbbdde7419e2bd", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "1c8edb119aa4a562025494c29bd5ba5d0fbf158dd2025545db6fa426942b47bc", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "9f42baf4e4dbd54619fa218592fb732c80f04b759904893d1adb67a7db851756", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "59c9b973bcd69ebd4e2e46fae739b775d7cb362dd88762be0931d2dafcc1b410", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "1c8edb119aa4a562025494c29bd5ba5d0fbf158dd2025545db6fa426942b47bc", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "9f42baf4e4dbd54619fa218592fb732c80f04b759904893d1adb67a7db851756", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "59c9b973bcd69ebd4e2e46fae739b775d7cb362dd88762be0931d2dafcc1b410", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "94546d81e9238f7e16054f64334d8c92b98c5a9136d21f161aab6086a7bb23f9", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "262d66fcfdc5f6e6ad932cb128b646ee84c3955b0b433c69ec691434bebc2a5c", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b008209006435dce64b8de44069018d33d35240b7ed467b7d8056a015b36496b", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "0f1e3644d2162cbd80cb052d46193603a4cfc0834e51e9390dee8f06b278c3aa", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "0091ee5b7d35b6ad9afbdb65f0d314a7821b884481b533cf8aa5efc841326cdf", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "56a3ea40922032c4798914f9d600d18934378b8a66205c17a50779a5b5073df0", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "33b46b74a567df77733e54c3b5b799a5938528c021a91c20f7de472e38209a82", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "8e8c83ab3ab483ecfe4b8083a5079ced0f544007c789f879146163c1830f29bd", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "55e7509316aa88b9d939132e4624dea97311a2caf6ea324dd24f1070fb2cd5ed", @@ -21039,26 +21039,26 @@ "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d8b47c647c834a41396b247a75a45ac73c523ec8d5b6ab56313c19ec59ab19d7", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "eadd39481adc6e9a3adaf7d93b81ba43093652b9d9b3f947edcb8f8b4750d7a4", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "70e5d647ed4fb2a07f999be3cdeaf33f204413d0b5fd0a0d0e61e91d3e1807b4", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f6b257d40f95a58e44e4b7756636e01d1bdc7bd05adb0853fef0f63e47c326d9", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c39b1ccd84afb45ffc09edf56f9751d242e409b20344822a52f396437f08a4d2", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "892df25de4b539ebb7afd446068422db06a6524efcb7315fcb69e2428920821a", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "2829110545a476989b031904490d58ca2a7fc133f69c956747a08c0b98426469", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9e7f3672340457759383881152654d4c0ad57b2c9555dfc89dcc2019149c1918", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "3c52e8226ab5e5614a4e29bce18450d8312f9197304c53cc7b39dded2662e5ac", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "6aa56382c9150e1af2467705ad4dd07355d1190f3e39e0c4cca3007c7764e386", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "607e002a73f4e71ac22ef667daa1aa850767a1d3703770c6d7d81f3011983b75", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "26fbca829e93bf6e6a0ed13a293da00436db4708c84c9b5f06c5ac638ecd4128", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "18361aaefee6b4d4271229617789f8dc0bdbc104cbad830054cbad947f404634", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "168c84ee550428d1fedd5244a928a770754041da124c33ad1beb246715a17126", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3108764f86a8c07ef6f8a1b004fac30243bb31ba981fb76efebe90cb0cca65da", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9d51ca46d4c434d36364e0172c14a34afd3f8298c8f140eab80726ebdcb2a895", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "d9a49a3fac2d620999c27b286f412be438dfcb4b82d88773984b6f8a75d88008", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "57e06971ddbf09d467983ee723fc9e33789f8a7049830d3dce4b81228dba595c", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "48a5583bc343d747d15dbda25ada8990a23ebd180fb0659461f319307a8271a9", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "0e3cb1d9de8ac6037d87a4d793d57bf058d7f0aae25656d504c5860917685e99", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "1e11f5d5116e77316ae8ae028d5e15e4551cf961582483cc3ba3a1d1c8afb6ce", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c2b673780911a0d25eae60bb5f02d282cb6dafa010989b479dd6b3bf7705b513", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "07942db55d291dad8f624e0f6147a35246bc0f6fe0d83a1981c866893de9bb0e", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "40872731421f1df43d519411c57714e751c73af93183a040fb85b70a1b467717", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "ce925957f5b3f386725a97d2b767e3523ede38fe958b84fd1459706585b33438", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "21935329a019276b72739f50d5de6a0a5e1f4128ae9f00de04004db861f16143", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "56ccbbe02d8ee7aa408ddaf190809ecc11dc57e55f3f9e0ab3e3cd1859829c71", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1fd39228110b287d243c107c6b1aa8d51d38794e5f55f44e77de7f8ddb8635ed", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "59a7fa5fcd25d2cf559e7ef6ec596a6d502af94a5dac152d447d389e634f6448", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "2edcb607f574f94bbc2fffc84df3bfef6ba02fc92a076c8ea9aa6a1efb93910c", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3ef18fccf28797b2d390713224acc85faa7aa4577f778a2d55269e4c36906901", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "6734c478b48424eadb0bcde875365a0c9afeebfa144bee475c8a8a4a474272ef", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "ec3c28440d2b638234b273a04bf3dac9864d6107c2bf4df48995676c1157fc59", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "9a09a75c5957ed3cdb54afba65de7e4727e8ffaa211e709856ea9b77a65d1fe8", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "81e841ba48bffce50a084e97c7696c43ffb66056223c777ca81e7fe5d378561a", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1666831f5579393a449578cd1ba383d0860aaa82b3df151ccda8b9e4ad0e056f", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "cb74232038db658e365318e641e9079146aca6a49e43a88224853c5826ba7bc9", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "2ade000ec04a7a60f1488c4f61145ce70a4c0a713004d1ca9c90301796637535", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "433a20b8032534198c49830d3121c6aafa2dfb9664cb71bedbef1e5694e6040c", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "2408abe16a1bd1c158b53dccea105aa68e1fc156f0a8ab06ffd99c3771550e2c", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "ebcee8685c69b7a1b6d72e1e0beb7575f6c0d232c0793c7aef612b81caaedce5", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "babedc58df9a6b55abff97c38fa23d71af8546587e1d2e74af9d7e219485468a", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "384d1f41a6702da460ed90e361ea0095d2da1dfcad74edc105437fb5a42c8d75", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ddb432626514764becafe07e34cf728e0113a300b83e422b0491312b6b3e2bf4", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "e4c858b51b2fdbe7d9906f0f636b18bd313790c6bc3f550963dba06d79847454", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "60a684ed3261188efe00bb872ab231df9899a7e44ad43e6dfbaf48c8a7b33bdf", @@ -21102,7 +21102,7 @@ "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2816815fb7204b991943f3db2ae56c0f8c4199ecaf10c5f997702f6e5914de75", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "cb5316337d8c4407d65a2a409e9ed906ef43071995a5572e129eb62b12b4bc5a", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "75991992304e022848bc603fb8398c6b236b24a6590b020719b3fb9691a94efe", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "8863816bb2c06e8cf6e311bf8c08a4279d3e8c0f806e5ac4cb6b6ae7cebb99f7", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "d229422033342e63db4e6ba45faf51684a78e9e4e167613f844b92c427d08b76", "T3T1_es_test_autolock.py::test_autolock_default_value": "fa4bbc332490da856c4ec27cbab2179d695532e94601361879225f4b714c1d02", "T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "6900e532cd7ca2a89c8b3c5345a841e7f03f90ddccc73fcefa08ba22fa33f151", "T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "6900e532cd7ca2a89c8b3c5345a841e7f03f90ddccc73fcefa08ba22fa33f151", @@ -21112,11 +21112,11 @@ "T3T1_es_test_basic.py::test_features": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_basic.py::test_ping": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_busy_state.py::test_busy_expiry": "a440d4eec0125da0443133038f79982c342cb30190e60678123d0702aa00a8bf", -"T3T1_es_test_busy_state.py::test_busy_state": "43617618b5487dbba0615e498e68f7416c4872c64b4fdbbd3e292a0da085134d", +"T3T1_es_test_busy_state.py::test_busy_state": "38f74ccd181e538af514f6ac959d8e4bad2bcf150ee225fa356d52115fa2ff37", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "4c7c061e51d6618b072b8774f53098fd11c33f7202eb23012b1f90b4cf8649d0", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "24922c59035c55e5db86da744453fb6038bee88d518b0047e06b5ecfe2595fce", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "4c7c061e51d6618b072b8774f53098fd11c33f7202eb23012b1f90b4cf8649d0", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "24922c59035c55e5db86da744453fb6038bee88d518b0047e06b5ecfe2595fce", "T3T1_es_test_cancel.py::test_cancel_on_paginated": "161490453244e136023de8b1b91a3fa8eebacd9d57dcd60588cfddaf393e3be8", "T3T1_es_test_debuglink.py::test_softlock_instability": "c801ab5876a2aefa973e9eb680b6a53433087d0a8718e5b8cbfd26172b0fdb2b", "T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "81e0a15715d2b5e2a5076154740ead6dfc642da8dc17840de480296d8027ae52", @@ -21153,7 +21153,7 @@ "T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "daaf8fb3e9f77ed6ba1da6595211a730b6c386cc1d43009f80cb4f3246799d49", "T3T1_es_test_msg_applysettings.py::test_experimental_features": "705dc2d0d3c8f60954c624fc65629349f669f0b0caf79700eceffdf0f2c5ac70", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_msg_applysettings.py::test_safety_checks": "004fbd582bf315201cfd8c9992d631a438cc4d5e792c572a7ebf2e6fef8aaa96", +"T3T1_es_test_msg_applysettings.py::test_safety_checks": "49fb86f0e50d6cdd78ff381a99f801c690b745e9e679915087c06f29d9fca501", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "e1d6c513f2e95e481b963b8fced7f8f224425b70337195f1aef0c5f3d0afa673", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a198e32feb2d70179dee702124c5041eaab70845ae1b5e29adffd1970c3575d1", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "21b6b0f341f17d40de0978324cd9c4f0149e897711e857d7d98cab8b071b9f1c", @@ -21237,10 +21237,10 @@ "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "a146c44b8b62f486fb1c3a9bc8e9adf452f7bf2c4a6b808d4519935dc499b518", "T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8cd460826e05f6167e06c987489e7431f5f5e589f28a2b3f9ae6d950b293e44f", "T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "88dee002aa6602bd01b5f13ea460b214e57f9767b3978dbf397d2bea47e95a48", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2c1e5dfae10b09d2c78c7c43c6d1ec695f8b8b1a6baf83a2eaf12a052c264d83", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "eee38c9a354db41159e0d6dce384bdd30108de9c1ccd64e5aa8bf6c8398e6cc0", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "0b55ddad83a308345e96d4d042bc5d73a2e138d9677fe8ad893e82ef954afdbf", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "a36e45956dc8fb4d102f8a51fb59a52f09e5520d03b1bdc97f600c2f429074cf", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "7548c2b4aa42332117822e537b9832f183d6b05e4617bfde328da54c3b46163c", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "184e4f22f2be0905e3a7169a2d860fd22a00cc6b710cdbfe63b76814a22fc620", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "2cf27fe7763ed8ab0b38b746852fb7e82a62c178627013d7b47d26fb5d3973f5", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "bc563c690bd4257713b8f44cd4a89208ee49b5014aed63df2e9640b067b3cc47", "T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "4eed258c542949dee1eeaeefd6592fff3a5c6c73047f77114b4adbd5ea807657", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "b726ae44d83d2a7b010a9b49e5a99283d9eba07c35046119198fb451845abe6a", @@ -21267,11 +21267,11 @@ "T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "2af72bc5e13e2b4ea3f8fc2633cae9271b1127e5a88bd29beabf7dd81221e84a", "T3T1_es_zcash-test_sign_tx.py::test_unified_address": "c89558db34d987f5cc5c84dc3941f08d765dac9a77f536ceb054282a7de1de13", "T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "34bc2b28b0ae454ba44f6195ec3352704a29370a118d696bda6fbbd346db2c65", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "095d6e0e8310723e8fb4c9e2e63a2773fe5ec9f1e922d398d4510e1d0d10b789", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "dd3e2ef85fb7230339b80d4e10fc4ab4fb21e08bf4098402280ce3efefc7e049", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d0bee76c9aae1baa30667ca17f6b201c85da8057ff0241c4b9b14e18882eb8dd", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "7a9b88e209acf25b578fb455691ed7513e41e9a4117a0ab83ef1cd0687602780", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "c9a86833521a97973ee833235078a1ff8dfd82d7fd216669a8aa3de8166077bd", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "87f16a918acbee105f19ef65ab5503f8167a5797448be3adeededee93be9c338", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "318f8c852ef9eae3018fe9188cccdcc66972f36e838d40408827260119b10d90", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "445cb46512ba1d162b17cf2372f339df38b1bccf933d9614a7487f70991bacb1", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "34a0ae66a66133045a92bdb422d75826150ac10bb8eb010f7c275d0760ed9d14", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "45d284f633063255597cb39c9499eb4c798ad5b3e3817664929a5304f3cbeee8", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "9a9345c6f3028bdb2c41f1a3426cfb9d1c44b2ec83b1a6995242b33b6552897c", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "f25e50ab7cf4bb9ac55fb95d0b75bafc9f345dd52d86dbe73b3d2f69fb74de81", @@ -21279,7 +21279,7 @@ "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "9a9345c6f3028bdb2c41f1a3426cfb9d1c44b2ec83b1a6995242b33b6552897c", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "f25e50ab7cf4bb9ac55fb95d0b75bafc9f345dd52d86dbe73b3d2f69fb74de81", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3ef3bb573d68cb5f628329c7b74b1e11c5a7d272f92a542503153c1136b8d198", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "df6f14daaad7e4504e6cf2b4c5679ece51bcaaa03561ed11fd2b6e25b17b04a7", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "d84c34adcd20dd934dbe7c3949d5e034d57e4db14ba93fefe50cac524bbbe6e4", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "6f29b0104ef7076880cccfefc32fc7bc5b9618c83491abcc53a2ea5b4838631c", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "36bf7ec2c36cfd74aa2ad42997fed91fd46db40eb76cb6fa85d450747e2037eb", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "16beef6b091787de3ea07be750b4c6186155c9e4698e6238c078fab651275388", @@ -21296,122 +21296,122 @@ "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "269007441cc9a35b08a55aadf235335aac82c10755ebadc9851a60a5d7107bde", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "4e18491069d1d9ea64ec0d3e5357b64308242f4153279656a1e2f448d7901843", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "05e8809d40c9923faf4ba7942546d4c7e0a73a12d3b10b0071336ffc38892a91", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "255714b1c35471f573352b191c715745be2f1a8a4b90b1c156f27900c150ceb1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "47f4f5ed119d5a870f814ef00bae90ae0f2bbc97e18ac05e8b0f09d3d4576f29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "fa8fd07477ddee2a3b5652947b4b19eb59a5029e20abd7e8482a32458207abd9", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c89d1fca942531148a1aa04a1b6e2f4b0f77f29dc7572323df6c15232bb4aef6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "f7dce3660a0fde8c706de814f7b291e793badf8e5379811cc9a0d9ebcaa2a112", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "5e13d3756cdf75d226cd205998447c18924bbaffc706c2e10494f0234aef97f2", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "55f2647649a571478882b53fa44dffb7015bae6f7dc5b3319065fa1e7c11078b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c845cd1a054245bfb9f7349e0d4319ad9dd77bb2b4e1ad21f67a983b5758ba46", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "277b71431dcde7e33170851e1504ac91c8442925145bec0ce4156b14753275b5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "97fc0bb7e1eab42e683dc18ab2dbbdda33781f45349ecef181e0d3379da88aa1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0ab623931662c8ea2d416bc36912743817cd928124f31001f91ce154a0cf42be", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "4498e9feeb32bc42ba9a4383c3c2eb216ed34fa2e3418b560c05c2fdfccc0c6e", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9a158bbc4f0ec69304ef525b0583d7ce3c01fe77278e9ae750a5e1a79e0537b7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "be0edd5e70330726cb99174e36cc7494ba49fe344b153aad60743b3e6d430b54", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "add18a822db74fe5d23a5586e1f58517b8cf22ad2340703085e5c799d0693117", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "7debb830639a055ff15c13b8ef1ec6cd2989992bf94f055a965baf300ed486a4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "255714b1c35471f573352b191c715745be2f1a8a4b90b1c156f27900c150ceb1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "47f4f5ed119d5a870f814ef00bae90ae0f2bbc97e18ac05e8b0f09d3d4576f29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "fa8fd07477ddee2a3b5652947b4b19eb59a5029e20abd7e8482a32458207abd9", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "c89d1fca942531148a1aa04a1b6e2f4b0f77f29dc7572323df6c15232bb4aef6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "f7dce3660a0fde8c706de814f7b291e793badf8e5379811cc9a0d9ebcaa2a112", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "5e13d3756cdf75d226cd205998447c18924bbaffc706c2e10494f0234aef97f2", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "55f2647649a571478882b53fa44dffb7015bae6f7dc5b3319065fa1e7c11078b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c845cd1a054245bfb9f7349e0d4319ad9dd77bb2b4e1ad21f67a983b5758ba46", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "277b71431dcde7e33170851e1504ac91c8442925145bec0ce4156b14753275b5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "97fc0bb7e1eab42e683dc18ab2dbbdda33781f45349ecef181e0d3379da88aa1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0ab623931662c8ea2d416bc36912743817cd928124f31001f91ce154a0cf42be", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "4498e9feeb32bc42ba9a4383c3c2eb216ed34fa2e3418b560c05c2fdfccc0c6e", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9a158bbc4f0ec69304ef525b0583d7ce3c01fe77278e9ae750a5e1a79e0537b7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "be0edd5e70330726cb99174e36cc7494ba49fe344b153aad60743b3e6d430b54", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "add18a822db74fe5d23a5586e1f58517b8cf22ad2340703085e5c799d0693117", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "7debb830639a055ff15c13b8ef1ec6cd2989992bf94f055a965baf300ed486a4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "8bb9318c206f0affcdc6716ba5761cf668f8a7aa867aa053f34a028b38faa878", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "3887c628011a16821664589f3aced578bcec7ee816ab3a2e08ece15f1d8690a4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "5d40814c2f6137c4ed9b6f79c75622b69f66d5c7a6696e4ae8ddca97711f64be", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "633d2a19e64bd99ef0f24fa51f816f6bc9de07054131c77aeeb73d1f6c39d669", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "b0c428ebae3d36cdc5c35299f26f3d511a1de265c747292cb1a8641660abb450", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "e5fb725384f926e141e6528c210fe5906ca0bfd30ee6b1a2cf5dd1892e1ad8c8", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "47459c181eb1e6be50ad677050111408ec841ce526d438095aa1da38355200f4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "a4756a088876ebef14ef53fa4f7c7b78acc5ad04f1910e49f53c91a9d88fd9bb", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "165ff3832c38c121f01fe831d7db906f1e689d140c683103489cd3d7cdb2ffd4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "61c00391f843a1cc9d27881399a808478f278a0fed1d5faa072d6dffbe6ae803", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "700676917619176c9f757742087a90de1168bb48a9fddba946f49f0e0daf7d94", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "0053df45d692382a381814f00b0fa9dc79f1334fff6c0da1f899acc70bc78f94", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "0c1fa64b1c0c8480bd22f8f366c66ba7e85ae6721e8eea4c47a5461de6c175ae", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "ae57913b4fc9df69bf61006be960043d52d65ebd3d416f371471d465c61102bf", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "9e3438a88145609c590c5d9102070e588bfbeed41a8af130703dbfade5370535", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "4e50b77feac1948376eaeb76e1f82c4b2dac450565b1d7c297b2e2f0336fe5b6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "8bb9318c206f0affcdc6716ba5761cf668f8a7aa867aa053f34a028b38faa878", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "3887c628011a16821664589f3aced578bcec7ee816ab3a2e08ece15f1d8690a4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "5d40814c2f6137c4ed9b6f79c75622b69f66d5c7a6696e4ae8ddca97711f64be", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "633d2a19e64bd99ef0f24fa51f816f6bc9de07054131c77aeeb73d1f6c39d669", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "b0c428ebae3d36cdc5c35299f26f3d511a1de265c747292cb1a8641660abb450", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "e5fb725384f926e141e6528c210fe5906ca0bfd30ee6b1a2cf5dd1892e1ad8c8", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "47459c181eb1e6be50ad677050111408ec841ce526d438095aa1da38355200f4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "a4756a088876ebef14ef53fa4f7c7b78acc5ad04f1910e49f53c91a9d88fd9bb", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "165ff3832c38c121f01fe831d7db906f1e689d140c683103489cd3d7cdb2ffd4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "61c00391f843a1cc9d27881399a808478f278a0fed1d5faa072d6dffbe6ae803", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "700676917619176c9f757742087a90de1168bb48a9fddba946f49f0e0daf7d94", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "0053df45d692382a381814f00b0fa9dc79f1334fff6c0da1f899acc70bc78f94", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "0c1fa64b1c0c8480bd22f8f366c66ba7e85ae6721e8eea4c47a5461de6c175ae", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "ae57913b4fc9df69bf61006be960043d52d65ebd3d416f371471d465c61102bf", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "9e3438a88145609c590c5d9102070e588bfbeed41a8af130703dbfade5370535", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4e50b77feac1948376eaeb76e1f82c4b2dac450565b1d7c297b2e2f0336fe5b6", "T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "728306dbc959a4ea695f8098276f6861a878c7fe19c0d32f4d18ca6652ddf63f", "T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "22948c6e57737a0edbd864b02bf779d4bae9f818e3b1a4c5ec83135580bb6b76", "T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_bch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "2acd6f972d282107e74ba024c8534ce2cbfbd72221e215e22debc2790be5913d", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "02ffe9c03405c99ffd2ee42b0ac2479c04f4c64c30972b9c08967d282c0512c9", "T3T1_fr_bitcoin-test_getaddress.py::test_btc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_crw": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_elements": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_grs": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "89a9bcbd4192e73cbde0abd723f8d35e98e89e111b07a424b6032186fde55a7f", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "44d2512ef732a88d1e46486fe81acd2ed596863bdc93cc952645ce30929b7a07", "T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "16efd5c6b4855710860d1db9cfb1800be675f0bf67217e30ac8e97bd3da930a5", "T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "f13d27da49743d9c99242e3734385e6b3eac68a3138889d5d26ca6c27c528029", +"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "d419e39fc1ca62ff657ba4ede1a24fa2a1dd132f72b4eb6abb8469fac5c5e91d", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "a6846e23d4d32b91b7cf5a7f1482615f51c14faf9c61470eaa97e4ac275bbfa0", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "7c3e81036355958bf835ddf0b6925c74247a14db89f2010d18008381a7a70d7c", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "0c7aec815d3b6a5c4f2c74f4669ca8735d48864643871af01915625d1c6d05fc", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fd72e6d944f2a7af98743667a18aab32f22b2ef8141bdc8bc85722c301949d83", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "de17cffedb38020093f74902f1b61e0c392f0c2ad26be72d6321bb7fdb742014", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d856dfed0c83de35e6050531baa6dc2c22d75f78fb1502ee1af7c63bcafaaaa1", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "ef82fa90a11627377fb0dddaa8158066fb29995eae2d7c1a3541a9b3b6f7ff29", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "48a9851ee5cf14fe59d089c6d8979f92ee8388fc26763045124065512faf7077", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "0a3828719a3ed821f7c0cacf5e793cc4295f8e94648211c41fa88787af80b0b6", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "829022252b0af5ae867fdb5c5160d2d248e16640f74affc28f234a169d4a71b5", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "d48f11a40d57052a2e98a30a013e6c3c511231e5e6ccdf6982ccbb3c88503900", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ff9f34af0521c0b7cb4291d9767dacd25824fd467fe0b6408538cfe6cef46805", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "017c6d0024facaf684f4b982735be287ec972ecbc4313a0f941442ec8ac119d7", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "9cf0eb6e78a37d1e80d5a90a78a61d87ee54c018a38a5d73c4ea954d3098a71c", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "30a09c502fda3cbcc50cad534b28423078343f558ce83500b9513a61211b8ab8", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "ec60757ffc7e589c814dfe1737cabd824728309d7ac60019dcc51e5a0512a6e8", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "0c3806fc51ea8fd9cb757315e690f14a2b5a9999c81403346242360902111f3b", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "03a5dbd55872f14adae640870707b86a14396afc90661384d1226c3e2f0e8624", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "96d52f5c64406d9bd1ce7ae0dde317779f67a4e4bc73db0c52d13dc196519f06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "c16aeb6853b5fa0b2fe2e0f003fee625d7e3d8d52afcb0e82c1c56e2b1e3bc51", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "2d5bcff3d4298a0c2626aa806524285755db06e9969cf81abb0966f97b77bc8e", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "d4cac542d4b05c7bfecf0e068ba7fa17107d434c9be98da423e8a86fc62faf4d", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ec9510feac69d4819f6a042719177b8139cbdacc4fd034a9a04a1d49e673fe42", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "7da665b897a53b118d71cd2bddc67edf23325918874505a969354e6f8e17e2c2", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "fca4ebf6cd4cd9d8b0adc66c67375ff93586a18ee874c35d0b577cb9ec4828e7", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "e5a894d4bf732753b3a0a3a7b36e1b3fd92fae58b2b5e45ef01b30f02e104dca", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "45a75ace24a8ed02e1b1c5364c77ede322cc0df5f6b87cf75b1f3e4f74aea70f", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bb0012cddf417eda6a33a6a47a4606359e1e4f728c0d01320748acd34bc6a7be", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "abde4df826c8139e8054d800c0f3618b078eab39a27f0021dfac69d03b975ff7", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "c26d3f0420ed712975b7d9c7170211aa56422bf9258d396109554592d605441b", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "272e0fde75ade7434c23f0d344c4820290e4c4e1c99feb68f514f4c939a65f83", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "916f0503fcfd7ddf92124c7f5513f7af3a286e5cf582a3f9d16b1f74cb3580f7", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "de50e3e8b985828496c57a103c504ed8eecb727e0635bb267931d3da939b315a", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "2b5d62eaea0a6f354eeba4f29318c0b63ad64cd6d3ffab34287d4f342d9e2690", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "da614e706f990dd890453eec6bea2d47be07b5da119a31757830c6032f30e453", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "fcc7af3edbd94c21a3e49458a474a78fd0d6a1fbbca794588eb5a8f51b4beb10", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8792c92ab6e6e6352a8e4b4925a523d6b860b2625666a23450da77ff1ab90884", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "422fb2e380d67a7781f8f43f0010845fbad16e39ade4e51f270f8c53c3c29070", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "f7f4ed2c3eecfe362f49e729d40139b1b084d658c67178fe9a442b1ef8302bbe", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f3455ed6894148bdb2ac39ae255e135dc80374f0149c9fc8aa426af12fbe5064", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f3455ed6894148bdb2ac39ae255e135dc80374f0149c9fc8aa426af12fbe5064", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "3c9da9af9ab98636682ac4a52153ed34e0830d1ef095634aa7b4f1f1932db360", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "e025c34038db4250c1a295dd0ff688ac1d148c94050b7ece5e7962db0afc1424", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "7317f7b19f2494347c3f4d84cb326024cfc18f7e671e18baf108fb18a4f67768", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "4dd4be27a729cc50d3d996ebd634eab9990f8a5e2babcc312104955032eae3d8", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "90743ea2c597d98d4823071691de9031a59a432cd8bc324b3d88d33a02ec3666", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "a34ab158a7a2b6bcd5623a320fabef9dc9e15c52b17f0a6d73d4f863a332f1cc", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "67b285ba36fb8d01515b3d84b3d1d3c66c9a47fdf4a3c8ac7ed218eb2c63e300", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "afdc8350f8a56423b196dd83dfc49be0efa345a91cb277019c616861d43d7009", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "c1778a4e56b5959bb1001fd5cab79111840cff3917ded36ce88a8cf8801a1ca6", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "75a495a9fb17f4680930b1228b42e129462baa92011cd25a10edb5ef3dda9bd8", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a72c3c80f005aa9e15b61f037427d370c069ff51e046122fc7fdc00fcdc0ac97", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "45a69b331630e8b8c4e02b2acb8cb418e28cb47c898c78a1f9a1ee6670cc45fb", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "504439920fcf77b061afa6d4c7c114698d21eb4be0b0841ca56778b447a74ecb", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "50ee12ddf78cbf9bfa6703f464a0585b0c434f87d342e8010ea4b1e4bb169c0e", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "451809b70e33bf81bfc303ce09b114131127a734648c78d728a91c53a72810ec", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "fd3f4035e4896c1be460cbe15c38ae9b57d32fa0433753eade3bf41481c9e6f5", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "89ca5541fb288c9f4b53ebcfabce045fe2f4908dae351c4f4dc8daaeaa0fcbed", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "6f66e7203dc0e0111ff7888751e7d19c44b178ee57dde5d899d6d1833a1eeccb", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "56e6bb5e5272514b8c4798b02fd5511b05638673a07b9d68d7198ed303a0f911", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "24c6d88e2c070f2889e60506f4d3c619cfcefab54d44a05b0d482a97d0349e3d", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "24c6d88e2c070f2889e60506f4d3c619cfcefab54d44a05b0d482a97d0349e3d", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "01786f318d778d456414c3a0fa9ceba041672b1d5e80e70f4be1eceab9138645", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "200d15e41c3dabb4f1483046506553ff8b9d384be67216e3f9573d37111229a7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c53e6a0e48fbc9655063a51539284119ed77fc15aa81e76340d7abd3257e7007", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "7884c2fdb0aeda9264663ae7c8986e25d3df120d77e67ccc2bc2c76766a08e51", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "77f7603fc9b0e81a1bbc2416c83c6805c7e9a26e3c3a25d4cb298f972f091b38", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "7c8f0d5c74f7c8bedb46ba44708823e6f9d9fa999bc0d41d85591afdf1657f86", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "e3996b18599747ecf0651169cfb3007d79ced4ddd396c0e02840c8a9ec26d490", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "b1a73d78da7dc3f249ce446be56bc009c0b0c1ad022df3173922b38b07c73909", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "48fc41ea8ac84e75e93d11fe2796b5fde5486ce10dbd8f0c2651f98cbadbd202", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "f65222bff56f0ea6ba8b0b4453450a2d83a96bc35df105cd8b8139db1e7857ca", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "1abdda29e5b8004fda5433851fc61039ffea8380cda5023d256d5f87c3eda362", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "47cc8621d57b865dc03a3b16568743ccbe7a5a8b1d911dbe605319985f72c85f", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "09e3dcfc21450c5bff4b75bef6652368414e30b845accdc3a6a58bbd03f366b6", @@ -21432,17 +21432,17 @@ "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "7ef23ac30114a65ea3cd8e97c53f19e4a79f20c6a66f1f0617fac0cb273e1397", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "1be46087799a33f9198a71b8e31d2eb8963868c14612d179f77ebcacaaf00fed", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "dfe69f368b870c3803b9e4635b1d70b93c8c7f3a389dec9e4cba8884197e3c35", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0083e08d059d204233bf072857ae095dfb77dd1a5554891c90beb4b56c46c4bf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "83abbbbd2ed1238c7426197d6f2cefd185b098b999cf5497542e0db3e6649a9d", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "2fee64cde024c073e68c236541f1d0e72fbebe6190420aeaeb8b62a90ed99ffe", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "67e618bc51192aafe1a8f0021c67448330cbfc27ec14034fdd58809582cd526e", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "8eadb029d5cff36ef2210a9b1a40ecf91c0efda4f8e0b763e969edc2400c64d3", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "faa8400d5ba22400730384b9cf7cc62366d0c1bdec2a8e0cc6abcb5ad18954d1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ac087740120d70b58a343ca885fe7a5107c9b70ac91050d5f8186171c6348a3f", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "82f4673196f84d925561ad69cf7e18a43152714c16ca7def566a6cd58d521c22", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d0e16d0ce0c9e984b8c0c5e27585728d81205953889e01de94a3f44fa957a5a1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "54bd5b32638c5765feff53518c327e927203a2df95806222290b986ff1d381b9", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "bace1486d7c6dcaf763ab3dbf19aeaf0185357d0a2f87b6f334edc9ac60933ef", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "78680ceb0a5eab54a8cf95ab44c1c5771602790295fe839d3e62ddbbea209ca3", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a546c83658204b9089f4a4cc6d23a71b92cbe6aa231ea2a61181e2d529744727", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7fa69e20090e88e861709f61b5165029e168f163f098021fca2183eb6c54412a", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "98e261efe68fe7b59aa6cc738f24f5ac53dde22f2f5f3080220d0b094a1847c2", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -21483,24 +21483,24 @@ "T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "60f6aab156cefe8d1d13428c9c6a23b801e7662a61df39e52cf90a07756363ba", "T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "0c12b8df9e557fbe12b367f41e79c234d328bb097d471f8c1644b2b7e21a501c", "T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a02920bc87bbdb1294d94e471986a3af816d59674566777fdd095ffbe8860795", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "e3d4895e71158dd7526abb30b52ec4d7bd3507aed54263a7ab1735715cf0614d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "6279082b848300243ecfcbaa4fac28d7c30cb580fd0f0471dfe66f14b1627a11", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "c8d98bec53b11feb1bed969e28e9c878115d20671d3527e6d6427f9e6014aeb6", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "e8d21437994ba57c884af095f7542a2b4f12138f0d853ada45d2c8dc4b3cd64d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e1d1767b4a7b3f51acd8e216f1080a6e81d7760950021530977250b4574d5ac4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "d10574c19e7a634fce438b8e4b08800f30832f9d61e6a34575ce9d4be97ef891", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "30e3d431f551d7fe666d49b90c44098790540d2d422b26d5ece68e4176a56719", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "be7c94f181c2d770e78e1255238ddf0899fb7e0ab5f55bde578845a42b01788d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "8f2e946610b27cc13c149aa6c93b2bf7ed3cc26d3465618f821b53d5617a8a21", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "053ef9aa4e4c1e0756fc65f42de6104c984d96a59f6970ac0c84f51029049556", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "5ae3afebf64b7b3116081b4e7c1c1343e6043bd2c6bb5ae482c707704c4c57f9", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "a2cbc55f8cd390c5aebb53c1f45ea5f4ccae2e676d0f24d111846eeb88393a4c", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "55650a63eedefc0c0e453bb729ad148df0fc32bf4bd617544753a42eecc912c8", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "cb90b9880a65a2a4ce8ec54e5b0b333f09104cbbe58b809100ef8228c06b86f5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9dc944ebca0acf753f5be8b3b7e855ff45c4bbfdd862b5a18c50d726e7e06461", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "32b1bf9bfe4315421ba669e94e126e33124981217b9a7d03a8df33014d1d9117", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "2fd88ea3786e1f1fb4f0f95e32ee9f8a300290e5dfcd5f4d7951efad4302b202", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "01bd8f307982c724db65ddc766f8e30422cd77dcffaca92ea884d2e53c7c53e3", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "55522bccad4c86ef50ed66ddb4a743c704b09c46c68e69ff07fb1f8afb7c967e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "4b60ad2d54f2b8e68cca20bbde5ff83833581bc95af1291f09685315b267b2f4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "4d2c709c09d2b6585331df75bf35779613d50c16155433052d8051009ff9ba30", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "89b14b90c115c3258105dc00b112ec9a03061608dc32b155eb9317d0f480d2a1", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "093c3eb3b91baaa9b3ac2bfa76d99e72cc32ae54c29a75017b5eadb8b559dd0d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "74c3c9f2d64a26d93c69370a08c72698dfb3be2b758adfb9c489787a77300d68", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "cf3b85ff7e6fed1301e7d091dc441265582d34af773a324bda23184e6a61514d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "9f37508008428dd53dfc41617337886cd519a6abdedc46ffc921b65c397173c8", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "884c27ad98eab77a2303d55978164ff1c34a0ef96d56e9b179f51709becc0a2a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "8545d2e4f0ebb3c82dac1446801fdb077387fe188bb734f318d0ed8dee1acfe4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "72b649726cf47bfb0aa1f3b0bb1d53a2939e8d8e0cda82bfceed91f6df04c015", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "1733b1c61bd192a0ef4b2019d9a0a909eee920eab6bc06195da86f14dc06b791", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "6acb16b40ba5531a81369087de896a78ed5d57050eb4faf2df1500f724451be8", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "2cb939bee79c001cccdec9781e5bc975abb1f890d34623e729c4d9a5b6adf59d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "474471ed235634f8756f863dffd86131b5d7f3d35ca51e7cb6d4eca3805d57e0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "253451c863befa95481ad442ae1479e83ebb2f07a14277e9cd0213eb3c725b61", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "d194399bffc7ff162826bea5bb29e87fff553ef65469d9f4a11a3d5170bd7ff5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "d68eb365b37d0b7a7cfd909d32a130e9fd8930582c0651d3b062a439f6819c99", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -21718,106 +21718,106 @@ "T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "57cfb8a22b5f3f6cb65c965744ed0d4c5da73a85dfdafe303e1221c63929b80e", "T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "13dbb3ce4a0fece86f4d1456884bc3a10b872c6cbb0234e423151457662dabfc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a887ef0b75cb27a4fafe556a022a554625ea2b523c1e73c6f0041a4280cd009c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "c3baa7a79421fc23999fdb32aa7d201d3c629c9cba9268f1ed9886b126ed47f4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8c548c19ee14f148992cb4310dd5632fd84d68b91ad4ca2909747cfd037bfd1d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "d0a212962f19ecc3db529aaae73fbd2fc09c2cf9ad79ad6ec422004ffa0d3690", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4abf364448221be5e94f17264725faba5410cd2e8ddbc73f57d09b07f1d46d0d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "32010b1c7b4664bec0f7e7256d18116518bf8b4ee1970739f0d1d88077737f46", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "31d841f2ee5bd1e54f0f1d5c6d7b1fa58b37bad30876b8b9ecefa8b186c1ba9d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "a5647e70ea8c0d9079475a89d3f5f8afa508b35f28f9d517f3e8cbb1f91aa47b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "4327d51644bf6f169e99df863330d7d476f628db62e8d116f71b202e726072ff", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "891ea64eb53b6727ec2ba5dbe06efbedd07b2fa934893f30546930cc8a8fcaa4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "602b9b7eb2d815a4fd350ab25b089e4045be631abfd74b91548c8ac3dbf9f51d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "9ff46af5431054afab3945cca298539b95fdb08bb2b524b1d02f65caffab2395", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "8f1bbfa28aed4fd7de588c869a0891d9c1cf540c23dec7f64ae6c70bcfdc0575", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "1c1a1f7fca2f79be36ecae76ef3fbc059f90d6c8a85681c22dbbd9b30a6f8d70", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "0716c4165275452314eeb952a9b1990cce1bc4760fbcd1ae63f6607e152c120d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "0a1f096eaaf11a4c9abefa68df7d35b1757eb41f5d840614dea574b90fa1a356", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "a1779dd23b86b6888d2216d3e23e30163cc30e5aecd988eac88331ee2b6b0998", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "48f376d508e805d0dae379099d62df14e8158d11fc4f24c5a147163f08e80ce4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "57e2c209d5cc7dab9f665693fdb7b1b4128837eeb6bf6ab78c82737bb8ddf148", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7230a31d3ac6d5fc3dea3ec51ed42155ea872b0774800703db6de6f5ace4b60e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "7be93904c8d544d2d0e34aca3097f818b796d11a34de0a18f98682e3abeda4c4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c388754e426aeec5f851858c63a73812ca579cf6996cf57b4a0bc51e58c133aa", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "c446ef8a06f87c95cd3f7607a489e440fe745a80f5827f57a8c05b2730ac1bd6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "73d412b1f4b019710d642c065ca663ea0946e466b1b718744c261f55b046ff6f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "25d266c09341c3d72ea3bf4f1e6e5bd9182977dcdd78aee33b355cce84f54f63", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "22e166e9a09a6e1fce561ca6763d57fc2ee5305bec0d62b85efcc2eacb3f462c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "e299e950890977634171f09fcf56c0a03c7c46371e7b2c5f204e5268ed01c317", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "618ed280793826135857c2ed18acb6d47c97dc142b1976f6b1c1a5606b57c0ad", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "27a4a7eff0f1c1cd6ea176c3fabed6f6b741fcaea07de7b7dc27ca79710d0b89", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "db45f020109e2028c42cd4260c0457321006aea7f2015a4dcddfa56a56b66ed4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7697c8c52658475c6de603ea3a6f5b08189433220b71d0eba4044eab9ab611b7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "6e43686de60346e3e00ee52b059e394d65f3dd1613f224bc01ed8576408eaf76", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "c4cf3c2c06b5909bbb266d88d44ebf7df5c65d80ab5020265fce7d1463bf15f1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "d99b114df13706f80714084a44a0f3a690611830b0f1266b9fc37bf42a42b6b4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "40ffd53a2bded584f69f494dbf9c0c2b5cc9ff4aefac946da7eff6488148bb7a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "bc68704401ca83bf438fbf14333a83d4f0fc3476b87c220985ba6fe15b00e975", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "4da217e165c77b876bacf97056d4b72a12b75ae87467433af767b3006d34552a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5980e4b0f61f34d841dd4231a6d3b40513a4880e48ad0bf45278325d92aa68a3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "507ef6385629dc6aaabb8c1a62266a7c67bbbd17480c3524e4d8fd394d317ea5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "923a87926c969b07ae36b0610db5eb3abb49b6f6d0b475e021bf9fce75f21386", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3bf315532246e124dbbbad1579d625802a1cf3667fe443a001a8788c46327cc5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "028a8c2c109153da358d3f5cdde6e821a6220f35cf5ebbe7d03ba9a6aba748a9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9db474418e12e2dfd427c5a63f8136ecf067b7d4ae0cd84a6ab787e637a9a56d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "0559075677323b395c4581f769a25380df3d8d2d62516b6daff0b094d14d5267", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "b60f8721de0da8dc96976fb2e9be984d8fd04554233bc5ca855ed19e202d943b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8e654f7b68437c3b7dee7d50aa4fbb225dbe44d7d16075f56ab789a45d2b8fcf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "357dcff6f5e5d088e59e4f7633d9db577768f9afe7a57168266d4dd2a839fa04", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "bdb93d747304a56a68df3b2cdf3cfee77334065795485e14626646c0cd681e98", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "3920a2c6b597f32c17d19fb2959ae55b630be03b1144a44393897d8cc0120a4b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "18a92e8989c24900876ce6bde8dd94fd09a279529ff82282d36823424e3c9603", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "dbfdf09485baad4d9888b8d955192b01e316b142b3d737eea472527df55f7d04", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "6a1c9c61e6869ce20e9f45c800c844fc73597ad0d2e71421918ae0353c362194", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5c242577c2cb58ede5063e7831341c5b924cbd8a9c3cbc25c2b2a7f12ba5794f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "28b6e6f383e54c3d32cf6ab1d38453d051ce9f45b022e2e38e966d184152b9e4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "df0277522301ed3c13ee9e20d47e1ea1a23d886209e33b99834ff812fa7ba61b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "c0a8d9f4d4c63b87edae1d959995745a0af8a55e46613a823719d0bbbc021245", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "14b8f64fd2ce654cbf026536580bd0d2768079af99747bef5fef194b972e6c87", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "56628f3723a89796e2af1ac9cfe954c22e632a93e55fdf3a8cf9a944a3b88c78", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "8238d96cb3c294ea5e5abf5f05c3cd21efa7b86cb42ac4cc916e652fc8af23a2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "475465bb8a2b6d0c0a9f4c4a6b7b08e8304cbd154b52a330f64501d46a324351", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "0b57bb153287bc347a82b13f0b72fb5ff1fbdfc493c2675f3860c350caa1040a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "15bd979cfd57facd2c88a07468653fbdecf61ad4637dd9e342e5a2261cf3234e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "dde63e614ad2c696ba1158102d395e4536ecea6c8a92103fb6fadcf0af69da08", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "0b7292259bb55cf37b766f7c2e0e1bd8212736e4a2ef432bea235cc6b909f870", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b6d6b51ba9af640619e855a482619feee1508c2ae460e6ae4ee2c4b58d19629c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2c9c1053cab62419cf56534cef3ccd9341369116c1d0c7e9a79c1f01e88821ca", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "134ecb2d76c2352cf0caf02199ec66fc4ab31c4a706c847299ddf5d4cdc58385", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "a123ab5c5b7b6979b2419a3e5eded1cf1dfce3482c20319025ed2ada697399bc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "99aaf7be45e77a0afb6fc7e3e4df4cc03fd98a7482623952b803fa846ada12ad", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "03fcffb25ea80de6dc6ea605b7b0f3eeb04b9dadd6d39a6e76455d59a1d664c8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "4f69ccbb2bcd0a014af1007c59ff4cc0b63ec522233006c4f4c83da499706989", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4da4c4c3e9cac2e7759ecaf6766ded62a830b762d7355f530ef41ec634338a49", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0fb193a04524d0a3f3552874aac36c9baeed7f3d196d9a7439e9043a56878d0e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "cfa2b17b282498a8b5eaa34090018eb59eb5b39b5ed10798a87582f9a9f54da7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a9cef0f9b4d6b7890be368e8df26376c7062fca8851ae95e60b21bf5e370983a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4ff19d2c22f1426b84d94d4210529f51ac62f0d21e4698d92bdd1ca2adfe42d2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "e08264f7fc9ff0804315ee33b0dae6af3a1048643caa907f13ac93b325c9553d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "e7fab6a8f225b8a3e51a5989f418f9099e4045b1443adcf3447f280e302f1ea2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "b55fdc1a98b64ca03b1d2782c61c0e579622ea0285454d869fd415a8e4701a73", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "29a4997d01bffd0f88674e7c1af4ff04831e911e31bdab675bed118192baba92", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "4b349f00ba8e46794f9fdedcd45db783a9f190c5ddb341cf03d8d52c6948b2a9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "c59cd89e414941e77f3e5010e8d5ccb19647f9294b8ff0a3ba25868cb0ea9978", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "9b52141fa01a310fb365a220653e95b434387f37cc45a4656de2fbd01001294d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "5ecd97df8f37357d82cbdec9d815d331ac3604eb49e535b7f92a63f776a37ffe", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3e4475fcab36028c143d031d76d6381c49caa24a22e202b354384e9576d75b84", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "296371a31c56e29d86ad9d6e81d9cac14b35e690635f9303c6dd69fb953910a5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "110a3ee3d149b098d1ef5909af954c07c919b44f7f0c01d2427eb621b5195d5f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "eeb2b866f18e8e80f85862b3e8941f53766a936f2132945bb9fe4a78274d62c7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f47c07f5c91752b82672d4e2fb08027253028590799ba3ef864f453cdecc6386", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "96458be4e0c3c02d08faf5e4baf2a3bac43e096af14e2509008f7a2142fd6ee4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "561006e3cf577a1dd5c9b4b5c677d22ca62bd56e3cd31c049643ea8006c17c94", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "868264b51d123c69790bdf9ca4d77613e0e6da3c1151654b1225448a2dc1a578", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "b52248f9d2c1be0de59e4a6b5a0c050a23e464d568ef286587150dcf22df98f1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8a6cac4eb44cfccb84ba7e4c28ef9fcf0e8e8ed0d171237457f2427dcebef0f1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "608e89fce9fd32648db1938e97ef345b8226d70513afa4b7e423f8dca9e53381", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "8f181f3d37688cf1bd17e99812825b39bf504ce65604353572b7b1162278048d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "0433603979b67739e1f0dbae8b10a07d0f07b7646e007fe75ef1b5bd1482cb35", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a44c176a5fb1a8936b24652299b3d46cd4c25803ca300389cf565e2e1f84258e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "41025d1d67e504525dd18a21e6866da364a66f99e7894efca674960d3f5f87a2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "25351b3538ca8aa37b6ea5acba18dbe09d6df0d55b629c590dd5f56bf0e9a127", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "638741c6c5193fdeaac84876deb4381bb146fa4f04bf6900759c234b69b6279c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "7a7335ef82924136df0fda8c49c78d9f7f86817e4852272c705959e12c398dfc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "2483b4ccc73f734d45a8da57ac1b2f9d008a34a4b9657df900df75ce016b2f4d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "57d8f54744cf3613533052605096a36dabbff2fa521fb740cbfb691e0048ebd1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d57d0b5918cda72f0e6270134234e179edde9013ee7c71118b831f368a3c33c7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "39257f5573ce9e054b892da66002fd4600b1b89acbe0e53118c273018adc54e0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "1f6ac439debf61228ee50b92a7b9f8bd746dc0dbd428eb233d8e9fe7747ff965", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "02d201f3af0334c0c65cf0e7c84f193b5bd78d87bb4e4c5d7d5edd84b6c23efb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "e22b9c2b872bff13bb2b4501cb7daa81513ff3187dd54c9608e31a96b7a59e32", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "cb7fd2838726e57c1cd54b5a5085d51c83bffe80682fdefa3f13b7cace1fa86c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "22cd2fd6576ce3eab041d2fdc4ac8f0b02bbdbd5defd4ff5b922afb186b1b6be", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "773cb7f8eefc83ba7729e9159e4892478becb72d64f598e7f6d409258a112c8e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "c2cdea9afe809798f16ba8f555d4e766fbb839d271736a65e6c5ff6b48ceed19", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "14376df28fdb7b5bdc836fa0d77d6c407e56934be8ffb52a80971f32589eab39", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "b065b18f8c90de8410472dea2a73754d296d7e8be6a209a465b94392ceff5537", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fa2723d0d1eb94e2741e81a22639e0edaf4d62cb95f291b7db57b00374af906d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5af691ef03e39d6c0419877ae6e6af099d12e3ccbf8b31e016e8385e5836a9b3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "17cf959f2162fefe9040a53ab65432372c41411e13b6bed0e2cd5c059ed50098", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "01c4ddc884351ed28ea975e8a2faecee84acd490ecc9e975b0632b088c8525e8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "dc1e626fb6ccc4fbd70b65f7ea89e7f42e47aee4caa72aafa5b9bb53304a6e68", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "0b676f1cebdb3c3882427cbb1f09f4458a3576a844aa26520a2af2404f48c029", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c174c213d08bf78f4e253b17add361712ac203df03a507fbc0f0af436b49d13a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "dcdcbe82bfeebc3c8cc2b07841860a2885effdfea82430687d44f60fbd4410f3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "e1ea688e85ec37464c50a9cfca991154e5427ed58171b5a9a4d3832517536146", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "007a76897822415a5676e1e660939a764e70ee4492ed6b50b2c0fdf109268658", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a0c59033e5024debc4cffbab4a54dc99ba7ce4d37b6d7345debbf463547977a7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "26fddf81c6162458bb09f9bc07834f7e2f65df80a6c5d21ab82204465bd5c92c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "65b40a783dd26e3f6532590c34c60494f1f8a62dfbe582187e9e89760db17fa9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "6b191ba4c5ee21f1950589ee4aa5f6e06687fd20daed7cb39fb5c4d7382b1e7f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3ca03d81893f34399d74a56dea79f4c946ae38d93e3b4f8b66e6f387f3d82adb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "80ea93f5fc92017e492ffcf7dfc56c7dcbd8774fa0154561ef3d8c7242d27cda", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "5fe5fdf1dd308f3328c9a48476a4cba58ed16c6de9e64af20a5bf0718eccaabd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a9ba452b20204b6bdd3e96c6e5896207331009d85533ad3b36fb11ca30359743", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "19b99085f6e9ccb34def6af8fb8f7628c9d792e34434f6ef1bd0a42589272e13", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "34f9ca3af4ed2ae3b4535c378ac0a220bcbb51528627894dde5180538cdb35f1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "69d77e11a0ae8bfd67f3d18e3cb7a13bc97fdc9b1f2af76d474084ef09429b67", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "5321af4241daedcc6f8ec1ea64a25fe7da9f8457d768cf9c8f7396780a511c75", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a73dcaf4ba120322c09801f69c9021c39bfa69a14caf125420f785b1e8e0df7f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bf7ce413a0f05182155bced062300952b336fad9cbd0fae69ae2ecdfbac8f9cf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a4d800b9d6ba9c50bb83a8f6007396a8b53906fd9d21a272424615e41ba9688d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "fd394cdbd52f8f8a228ef6d61d91befe950f838fd507666115ebc90ba7bcbb94", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "99c2cdcb621878a8f6eb7ced489d08591ad40634fc7ae02dac756b6f2707fb19", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "3023b41576117720750192e35fc508c6584f74d7cac654f5a2cfa2f54963302c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "4e37168d4b5799ba050803d7a96d9ff0f6ee92b4c155f96243efed8afd1f4acb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "4c2ba34c37d018ecf0571afcb1b9bee0dc8fe35e7743c2134721b6a7e99b9ab4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "006bf3e339a62deca063cd91a793faa0feda3f602ed129e1bd9d3ba51af77931", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "f37a0a5a9d41c8dacd88dc5986a74e580de7f0427b906ad1150697aa5a0a6330", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "b5a61763fed10689689dc11857a7e769b2f98f252b39404f74fd8a89f79e58b9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "7667049119897d807fe5a40e06b3a85878395d3a98f3a9b6c11940a69b283ea4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d02b8b721e6ac3165e1ef5f4acd12b9a93e031471ad3e45596c9c0ffae3239ed", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f926db033dc5e438673a15c05ab7b9c25d40604f8f99bdb294cf5a80c0221cf7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "4ac0e7ed505ed82cb223b9aadd1bccd44572e95655fb3a0a5c51b0da00004585", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "177555b827281de3e81d4c8014f5948ff6d54abe2191fa7f4c366ce3c920866e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fbcadda2c7df65f5d3804d98fa7c1affa00c1e5e51f01124960be516fcf4d877", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e381df872f47cc98bd390f3b07bbd1ec07f424bedc34065514716cb3a165f8df", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "4dc2a54718d53e89b9a7209aa4ff5dbfa16e9c850743af036bc1dd09418e91c6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "c18a7ef995d7c525e5eef5f084315bc58c15966279b85223eeeaa7732eaa91b6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "6d0fa35b22a649a9e5d10aab74d5d437e095dfc1e75942628404ab6cb3345e3d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "0997c2de2bff7465c8af6cfd02c04aecd89fcfe6a6af93c8c79c44fae25a3876", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b88bd0e9ff2cbf394092e664913f8d899a412425a5e3db7d0f520f75c33c118c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "dcecd2657aa6f39e3cb6f85bda97c49ccf36b96ecee29905e3c21d73823ad9fd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4c5dec20ebdbebaeacc707c8296c6d645d5733b6a713b4030e20ae5cc3723218", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "0d55dbeb6e6277858290b18b67b233c6a9899dca97f77abadd9ed34e51ff2698", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "042780b6a45b8156beaa35af848d474086799c9ce66f4704c6a33ec77d02cebc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ee2562c2d8c153f15c2b104cef1af24ea3520517acc01818e2d48387fb1fd60a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "7fca6b7a15b3252ccbb2bc5a16093d18602717041ff00f6234d83735f233082a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "d9439276112862a0c2ff3c16af0cf182a0b1efaf13ec2bc3b4b6f6a6d335ea2b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "261deb36de8607f86c737fcfb9cfb7fa1317790fd1307a6eb621cd70f4e47253", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "040c8c5d0a789cfef2db60380041f8ccd8dceb442bfe9e1b8280ec2aa63e25b4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "64f4f86cca2673a9cd5ab6e155b8edf6e59f27689856d4ddcbb379138d707dae", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "1160929602aea9c0b56fdedd095ba44413ed19c74fb694fac0325a15b437900b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "58eb23cd1cd187db6cbaf89b6899ed9b591d692a572874415541fd7d27cf9130", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "deb4444562f59a1914a4c5342956a48871fa50b87d4349849e61a0306fe617d1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "88478eab6da47ae6d56f8e3ae1272210a85ff11ee98091938edd8109cffda807", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "7a1fe6606438e6be0726ea9facfd144027a892919d84e0df01fec601f3584d18", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "9b320859ccdcc87ae7b6fbbab7f584c97142c7c5cadca721732576c1f8d1ab41", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a6cb95a29577a724bb6f287b33e9e4fc893ebb54191ad796ed28834078f38891", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "f6a617a757d20c026736ff8cff16dcf4c409c71697f238b64a0adb81e6161744", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "2ee7b595b056359e7227a09663dd339d8985bd088b6f444d01d2a9e9b802aaf2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "00e3f03a8624d46c20811ced1c8be00f6ac1b9b04c498ae164ce7aa327de306f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e4fc9c200c6300e6b0d1ffbe50ec3c77414c0882fe5d22a249550d84e7ccf162", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7065d6f68cf1e5822221657bf8cb1d7ce979f0fbccfff7dcd8128c8afc0c2c59", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "d92221e893bbae8ef691f9cb6472360b2248fc98d1158b1f8293108ac6e524c4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "1fc1219eb3a8e0ac28b54cf7bdd969d2d025078e0eb7c8e8287f677dfda79435", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3552eb144e34eaade43d2897fa2f01310d9af011c14564ed187e344d114aba13", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "026465c5f30b73af559134f2a7dba2f0caa04eee505cc5fa07cc22a74d3cfb9e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "16f33c6f25b1e510b2abeb49b99ffa22e6c942348696095dff697f5f738b0167", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "788f3588e89d7a5f019e51340232f5784b94bc858e4e7d56be5cd6ecb0962554", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4d5d3e5bbfe4911763a44cd70f5c46046663450d0d1c722017203bcd8ba82828", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "72cc42010b07134c9fe4af9d1d48c6c257fc495221f86d764d6737156b04d07c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "be1a1626cf5c5adc4e2788b7784b6398ec7a8928e4333c74a7176129e4e9dce1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "f1a0b686f188f7020d6a080d8037705f9c881c211513aff8804b72c3559688eb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "43387ed6e470782e5c42f4765a9e01d5d001204a5a098063b70ff6e751d9840f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "7e6c9f4d1698ef73ec1c06d989025ccfe091162c8ebb4f83539253522603e2ce", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "01a2450d9e9921ec277d0e5a58c7136e0e6f922b46e5a8e6b04532ed7a80edf6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "73b6b0eec2e97d526f0f2a95c3a1f9481d32c6bb09670a29d53f89544f6b0b54", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "e3a2f463ca9202f4b35df5a4a4d5a6e2a762660fe1d3a27809275cedf715c580", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "9d7137b5879bb10bbb0c5bce7f28038e2185b4af5156c302f5695ec8532f35ea", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5791da26468dc43c036a0a2d4fc3001780cb8ab4eb353336ad6a7a8e3040f684", "T3T1_fr_cardano-test_derivations.py::test_bad_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -22089,18 +22089,18 @@ "T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "b342671b2c2517eece4654bf1615f415e5b14314f0dd12788739d4f57c33248a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "b63521109a412e96a8ff3f127c0c3cf42141c4dda2b86b8fee80a0a4aab2ab28", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b7440e4a2b582264240444dfb00d96f841cad651ac31b317d3f535b726bc7d41", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c1e82505c4cd5c595ae42f26c9daba1bd2e65170e8f6f6fb63613e5a17aa5e13", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "82e565ca6345def45fc81a58847760a8d57c1df424d2be711f9959d8248611cc", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "ce36cf7e6d47e088b9214c4a4297a465670feabb648d5f6a5d96b84cd686d9cb", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "5efb732970956e2c52f5663cd83935f3434e8a7f426a1f03070ec3adb1344a86", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "ffcae19ec12398aec79010504bb203cab6c3a3e4d56e1cfc3d196a441f16c25c", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "23aadd62383ab81c19114336e2b1b7565283ede439bba718b3cf6bd3b95f0d3f", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "72d7886e5034da30e4f60b375afbc23c96edc19daab047c11a6055bb4968e0b9", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "fea175c347b037a7e7814850be66aac336868f8e4ef625cc849c4e8ef48e3993", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "289a65436d4002da608e3042f83abbd724de08fd1b4a6b65d955577c4cd80f12", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "6e96630a0f748ac0e088ea0c692b67894f3056bb9c7319ff454c08c5cf16a7c5", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "eaeeb5e83d2422cf348f5f7aba4ba76dc28dd1be7b24512f23027aaa65b29bfb", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "42aa43a0b260bc50de5ee1007f33e7d235ee311a155daa1490bd3a4d8c44c6f4", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "33c96caad45f836fb7c46ac13bc41d00844d6ecdb1293b5a5ad7ec0daa74b216", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "aa1cdb89fffdf36e4cc571c7c6cb0e4090952f1e2a08bcfd36e3ff7be65a5a5c", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "72e3cf8e3bfa9dfc24da46a485ea258d0594111e8045c8a7dca02407db0eb05a", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "390e3ca66f27b6fbf1dfdb522eb52887732775ad0882ec9d6cc2b574990cc2c9", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "826f94278b4c288a0b3ec8b248d3fa66df7b0d5b3a48b8a1ab33814bf6cecbd6", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "92231bf1384aec93c86b61d73c9fff0edb8ce0707ff4bfa676ec89680eaad540", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "3c2c15bc46e556a2740524dc2eeebe4cbea9fd04212d5967441f14e1b47fa254", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "3c87eb21460d4dc911f90e142fee85825cf85027c53393076e195d854f6c1675", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "a69a552e6c0bc1b52c1827f316b6fc0399889e0d91f73897b20e39dfd15b69e7", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", @@ -22258,12 +22258,12 @@ "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", "T3T1_fr_misc-test_msg_signidentity.py::test_sign": "5429b341abd8dd427710839e53b5e80c567b1ad9fbb0e80fa5e43cdbc0adda8f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "13a1035d7725ed15303d4e70cd9bc848784ec09eb1b259e77b399510a600b0f2", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "866934a7a7e8d8381a709f6dcd7dcb9ae76ff464408c62ef5f1620e79532837a", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "08f2423f20fee46a518825324efb66aface98ecf9d77084bb0b41b863ab40259", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "030220dd4b8226dcfe14fe076f1c98f5d7b36f90af18575da1261b835ac953b9", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "da75356b6f4f32ca081b2914b7f21cef5c9eafd0b712655a435275462b159b55", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "b2ba141729748cee3c6e60a7de17a849bc14c559024ad8688708a2c32aaf3206", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "8d7cab3a239fc2b93a824f26a423d0090123da576812ecf885a00f343053c7d1", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a0e2b0fbb8ed2933331c9164e10e10d8f270a0f5caf0121a6fd281b2ec4b4fb3", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "65e2f968dbf96ddcba3efedcd48047cf91d455e67f4abcc72a456f50b3408b95", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "72044bebd59525f5771aad115df3dd94abd3116e7172ee34db46758e0ee0831f", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "69ff8ac3ff60432a31a6860070cdd63b295ed0f6fee511cf9b77c5cb440936c4", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "11dd405b79daf68e062631b4886fec52dca6c16f44eaccc878c3356566064c39", "T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0c211bbdd9c4f5a1d3c0556f2fe91e2c1bb91935650dc7472a354aa5fade13d6", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -22318,22 +22318,22 @@ "T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "10401c667d47d04fb4eb4086dc76bf6cb091883a961b0c1183c9a02595066e4d", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ebb5241fed461254913bbd4beafcc407c75a7bb3def990ce36639727e2ce1090", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "33057aae7d93c8c4125b2e85e147c2dae9ab79e58d936d199877d2452b80bf2b", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "41a7ae0d77a8d57ffd828f80e30f7f8bacebee34fbf0a589b8c3f85800330f47", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "06e09c20af28bdd34b337e90109203c117b9c1cd152728cd2ee112472ce5ca60", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9ad3749d476ec1aac07d466d3dcef6b461f363da81b47305355aaa85d2a77ba1", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e4a016649e3858a8fc31cd8779ab290bdbcbb01b517fa1c281236fcdb9817a09", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "bb27e33ce230e1724085995c263046ae2b939e739827d32af0991c74d20e6f53", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "a48f7e7d8417e7bc864ffeb9a5364152237228d18616e092f7f229b48c07277a", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "1eff1ed9c60943369f0a400f0722e570eff48e4ded73aa4345fba24fd827ea7b", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "10d2a505e2d7f4e8caffd397b75eaa99d048cbcb9d12d172a566b3293e17c390", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a38baf7bbd7b2c6af02784c57c3074ba0907aab4048bd328314a59009b25fe6f", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "9a455131e6a8112e76bf00457943ecce06fd0f9b8f42e4890b6aeb6253af10a0", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "bda9bbeb89e5ca5e82dd3020a9f9b54372ad0cf8a174feb25e9a65a3cc967876", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "dc57e9e363ff598fb3eec8a29965ec4f93a804b44615d7964ca819a95ad5e585", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "5a098e683fa2fb67ccd3e662f831ca8e603ae4d47b7945edea61419757cfc73b", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e7282815b647fdb64d08bc71b56999584a74b9354bf4874109642699eccf00f5", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "049862bb3cad64e6c4c72586b69ff66ef26e6b5bc06779383240c4bafcab4049", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "558f7392a0f84f819abb3106d88085ce8a23c180edb740039b005b466f6b3744", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "aad2780a42ed7521316c9c597e6b226f23862a527ded70ace4d5a3d2722768c9", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "049862bb3cad64e6c4c72586b69ff66ef26e6b5bc06779383240c4bafcab4049", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "558f7392a0f84f819abb3106d88085ce8a23c180edb740039b005b466f6b3744", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "aad2780a42ed7521316c9c597e6b226f23862a527ded70ace4d5a3d2722768c9", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bf8f29c0d4313692222e36318558b6d6b3bc64c1de31f5954e17692b86dab14f", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "d565255db9e4569f37842a612f9f8630e70b3f53a12a57f7ce6620d769e0a26e", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "7883759283821a16e5440659eb3d9b01f61dc7a06009dcca28457e3515cb0d96", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "14bf04adfbd92b52382bd04ff20ead7a54a35281756f0603dfea1f13fd8bde42", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "ae6ebfd51c0676cd134d54ecece320886c18806f2ab0ef1c6fd697aed78d199f", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "10214d5c9fea6deba8663bde1efbaed99befd8ab82cdd63d66b58e0f015bedf4", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "db3a30bc6a98b76ee5777696c19daf4199a53597807aab264a024d01a38f54cd", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "cd5ae60066bec8d60552249c2b8613a86ead773b49edb7a8ddb3712d7ac87030", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "1c2ac5642633b2bf1b3cfb2f5f8bd996f7a71812ef9bf83ef562e005413fe7b4", @@ -22403,26 +22403,26 @@ "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "bb64ae75315b6b84732ac9ca8b12802b92305872db2f62eb0aabe4aeb3587149", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "b48446801d47e01a8ed672f3a3aacf9b2522589ee6f73c730a2dd617a1c395b3", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8df747d8c9759e1dddd445fb4a0588efb1fe25c019d0dbdc9243662d0141f735", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f6a16dd848c7618d7ef12cb5faa0a661e0826feaef53c265bc7817e20fbecb13", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b685419e98bab1a140280ae7f326f2682670979e468afd136931a8b00e4b8b8f", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "2227dc871cf14611b4d691942718da937776d9c1974cf4379f2744e473dea40e", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "6a0de998714918410a48501923c2c8322ad79f82fef2c4cd4d510cfb4301f75e", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "05f3cfb296e72167023c242c65d118a27bb8c462e5c79a7020917c4f609e0598", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "f82a8270302043512d337f84565b9de31312313a4e66ec86e434e34c5ea8e612", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "526cf01aad11436ed589ebefeb2fe872daf066867184e38584bd5d63cd6135f6", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "f6747b36ade9bbd827e4abdd3b7e46cbeaf154e3f84fabec9dc57329ff82e69f", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "93bd4efc2660a764b6c78c3bace4b5c1f69dee870eea59538b538e4d6fd1eb6a", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "2bd4014b64e262b36ab68f3046490d252ae0947fded72e3ff2edd6381bba3468", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "efd616b5fb652cb72a0c099dd069a97ff50e7d1c4fd4f43bd899edc39926dc58", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "e1b43aeb9c858fa153b74301c5450d2b8769b998aeaf48e4d4a48e972b85bfc4", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "aea313c64f2d70552da29b97297134de7c9093481edb3d3e5ec7d700e52e817f", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "61ce9c932e38c8034d5d0467a29581080ac2ee2a7e7a248c0d8083fc1db6d2cf", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "8338ac862e6943331f6b881577a1c649857ec15568f9735433e4aa717d839e33", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a56d2a4a071bd28ba9498cf6d199c57f2465144e7a7a9b1cc1fe5e4b93018a9c", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "1479bbe5c48d3e8f9d9bca2ffe05025bde98f6eb8cbfd265065a209364e5f184", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2976b87168a10b87afbb964a639520371f44e8251d2ecd1e27596185e29c7caf", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "5b4a05c1b9d87752cf12d897e58aa517397b65a89188a9228730a470f953fdcd", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "bfbf291285199d469c9e28131f6fb56ce17db7839a3f99477946079354f575a7", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "1d9641ac02e2ff05a2170cb67edc80c328aa59057e4c3727d0704540cceca039", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "874734eb7ee1bd6b185ba348e2dfb8e2427149fc89ae224248c8ef2ea2c80329", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "c98e545e013f82dbeb7c36fba61d241e293117296a5fea9978bd32ac84c5b784", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "7e9463447b16f81c54fa83c2a643c57c095d26feaa7401655e8a0dbe6b3e8cf1", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "5e1cf6bf6599bd4a9ababa78280ea8105bbda6a3062d00aa6f541b243df3a527", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "fd122a92d1fdf77379c8934fe28daf9830d288f03c12f337a63374c7bb0bb16c", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "0c4d51369f1b68f59f50762d6eeeae0af2bed9ba78792a8e47440929b0a4a5cc", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4ef7d77f0d9a64b010efc338719ececc7acb1a14151a3a40f38473cbea45beec", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "e6b9acf1f91f7260f176c328d5d9c28f0fc7724d6733516c233cf89eca993b27", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "e966447dd6dd1387fab011976cded5d4bd827c838ba1cc37c95d8621bbc6e252", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "b591e85ccc326b6cf57e47b76ac53e9218f9e7e9fdad27205e77f6b1ef741ba9", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "9937a978bd79510361e49e2c17e07f7b36cbd4e6fc9a3d4d2b555be1275425b3", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "965b863fcb20518e0a423f4d10f02ce689960af4ce895136f72d637e5686a7ae", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "1dbf7fc24d6be2ef7d2eca3d9a017d91e3390c350e44d8a16fee8868bfbfc144", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "dce2d43d0e28583914f7bdb1013c52ef830e90883fee8fe5dcb9479edbe5d5ad", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "7bbd3089a7265b9bd74371794f01c273e0cd1d0bf50636aa89c68988cd29d033", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "cd752d3d7d5eebdbed8ad7e3d4e826672132434fcbeb7babcada876622d9606a", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a2523f1a070767b0e36954b8030ea3f30d2d1b68deeb2f8ff3af398524a519b7", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6012ce20e89ad7e41c941f139e57d584207bc427737420a229fcb024fa01b6c3", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e77207b85b300df7086eccce61995c35d8a0373c4941113b9c119b047afa3d68", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "65c0ec7d523b23c68dac3b969325dfda612f843b2ea4d34d722375b45d3ae097", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "532a96ae734c986395962fa6c1c84b242f1af04b21647f49a7b6c1adea71b538", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "63945b2be60a95999ff4b214dc679e4bfc47b2d664348f3316a44d3c22b8b099", @@ -22466,7 +22466,7 @@ "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a19c1c1978b5888e8785be7853e8ec497b009964f2420b356de0d3e70f396585", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5004da41288414fe18df30eb15418a4f6509d51a34b58c40eab0fba9549d2e52", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "849dda5ffd57f93dc37451f2038c1fc3b2c0b9c482f67e868f9c9a91182c8045", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "92231efd268e4a0a2209075fa5fd3c8a50a3aadda0d7105304d239981c2e1fad", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "82435b87521466f82b024ca169dc6c52881092eb25cd50eb35dc163538be55c9", "T3T1_fr_test_autolock.py::test_autolock_default_value": "eed5ddb868c8f435f1457ffcc3d98a0978dad76aceb483b6ab7b7c9558139a57", "T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "c98c77aaf8c0436847adb04a1f41832c4b5d468df81ae341cb70a73c7059e535", "T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "c98c77aaf8c0436847adb04a1f41832c4b5d468df81ae341cb70a73c7059e535", @@ -22476,11 +22476,11 @@ "T3T1_fr_test_basic.py::test_features": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_basic.py::test_ping": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_busy_state.py::test_busy_expiry": "84cd25dc854499ec9f3b61828d717f723e0aaaede31edaa23c16b120e2065969", -"T3T1_fr_test_busy_state.py::test_busy_state": "30b666a896f35b382a677d0e0bd49171f888aa9dd669a5742c006e38b8e238a2", +"T3T1_fr_test_busy_state.py::test_busy_state": "ccb4a621a888105a042644f778e20ba1d498619cfef944ceb59144583b7b7e8a", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "c6e0057ec153cba5957ce6061f87cf66c51463766951cb7634399c2b5d4b6447", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "bb4fcaa0adfed9fe2787d494a15988497c4470992c0910a793f16376650b8c90", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "c6e0057ec153cba5957ce6061f87cf66c51463766951cb7634399c2b5d4b6447", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "bb4fcaa0adfed9fe2787d494a15988497c4470992c0910a793f16376650b8c90", "T3T1_fr_test_cancel.py::test_cancel_on_paginated": "9d84d8ee4c098c156248719e20bcec62b950d7e1371c3fa0dee68001f827a034", "T3T1_fr_test_debuglink.py::test_softlock_instability": "5ceb54b40b7c17ad769404a8ea8cf1f00a0f661f64887a93f4876e4eb8cb5459", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "9d6027004d77af136656d8621570fc0d9063c7cbf6056fe80c2f5bf636de30c7", @@ -22517,7 +22517,7 @@ "T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "10fac101016918147991c413ac26bc5107d3ee74d6104c80d9793b4ba34cdfc2", "T3T1_fr_test_msg_applysettings.py::test_experimental_features": "285d51abed07f08cdbd9c6ac41c88d4732455eaae3ad1cda839646df601873ee", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "916649cb2da7c0e3660763bebadbd3de71d107b29a4239ddbfa581f715881850", +"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "d07cb0e260158eafd735649cd369ac378ea588f3d4bbb0de84e2ef7abb7c76e0", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "4bc48e6f1279014f299c4f3cb4a9ca1316dd0267f4eb4143a61aef358c3fd487", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7c18286bb2d247ce2f5fe65893906fa16d4493418456d1f6ba15d264ddc66b01", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8c5c4bcda213599ecb9fa2bd84c2d4b0324a442967e9388d3a235e5edc17366d", @@ -22601,10 +22601,10 @@ "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "0c121034cd8b20e4c55103d0a8a209e0f95e378a6ab1e40bfdfd4cf696be5f88", "T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a8310696d820a3b4f30e83674c7aec61661b09a96756118167c26ea4f65cdaf7", "T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "dab7b414af44abf7f73a58a956b176ce88b3e733bb8ad964e271c5d88fbacaba", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "dacb5ab12a830b3c9eb3d79b11ddb47ba14cca71aa09fd3293a1d2618a09927f", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "517d1498df16399c830fd4691d9938732a4352004cc8eabf5ca4373eccb0cc98", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "52cd29ed18e66f5972be9bb97f98973efab1aefdcfee75c7636819c3968c8e15", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "5b62ed333a2d0197e8ef8d62e105336e91bb3301183111b12a73ca278ed83de8", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "dcdf7ba76597be0b129109ad441f65eacd9c1e773afc319f5eafabc15a969aa1", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "cce5eea4857c0a2f7ae527d60b811ceec327ac3a2e1ace22ac5bb74316311b72", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "4dce8496f9ad5ec342efb52407e21054e93f9831c26543077ab275113ac9ad5f", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "19238f998bb9f24095af86604d757de1c7cecf65f2cd65bdfd651d3bcbceeed1", "T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "d1a001e21774456665162646292cd69a609089075979ea7e7a0601c3884ad2cb", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "27b0abca90bbb0f19f597a3f6f6d980de5dd3f51fdcc5dbeca8e4b977119f6ef", From 6ff7322408b1ea40d14a35e828df77ee7c8236e9 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 15:58:19 +0200 Subject: [PATCH 262/626] feat(tests): update_fixtures.py: github run_id [no changelog] --- tests/github.py | 3 ++- tests/update_fixtures.py | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/github.py b/tests/github.py index 4353d45a5e..359c374323 100644 --- a/tests/github.py +++ b/tests/github.py @@ -27,6 +27,7 @@ def get_branch_ui_fixtures_results( branch_name: str, only_jobs: Iterable[str] | None, exclude_jobs: Iterable[str] | None, + run_id: int | None, ) -> dict[str, AnyDict]: print(f"Checking branch {branch_name}") @@ -34,7 +35,7 @@ def get_branch_ui_fixtures_results( LIST_RUNS_TEMPLATE.format(branch=branch_name, workflow="core.yml") ) response.raise_for_status() - run_id = response.json()["workflow_runs"][0]["id"] + run_id = run_id or response.json()["workflow_runs"][0]["id"] def yield_key_value() -> Iterator[tuple[str, AnyDict]]: for model in MODELS: diff --git a/tests/update_fixtures.py b/tests/update_fixtures.py index 2e78773d55..61bff3eb56 100755 --- a/tests/update_fixtures.py +++ b/tests/update_fixtures.py @@ -42,6 +42,7 @@ def _get_current_git_branch() -> str: help="Fetch from GitHub Actions instead of GitLab CI", ) @click.option("-b", "--branch", help="Branch name") +@click.option("-r", "--run-id", help="GitHub Actions run id", type=int) @click.option( "-o", "--only-jobs", @@ -58,6 +59,7 @@ def _get_current_git_branch() -> str: def ci( github: bool, branch: str | None, + run_id: int | None, only_jobs: Iterable[str] | None, exclude_jobs: Iterable[str] | None, remove_missing: bool, @@ -80,7 +82,9 @@ def ci( if github: from github import get_branch_ui_fixtures_results - ui_results = get_branch_ui_fixtures_results(branch, only_jobs, exclude_jobs) + ui_results = get_branch_ui_fixtures_results( + branch, only_jobs, exclude_jobs, run_id + ) else: from gitlab import get_branch_ui_fixtures_results, get_jobs_of_interest From b28e29cf4f120669dabe9df6227de06aafe7d46d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 6 Jun 2024 16:20:09 +0200 Subject: [PATCH 263/626] chore(core): update copy and translate [no changelog] --- .../generated/translated_string.rs | 4 +- core/mocks/trezortranslate_keys.pyi | 2 +- core/translations/cs.json | 2 + core/translations/de.json | 2 + core/translations/en.json | 2 +- core/translations/es.json | 2 + core/translations/fr.json | 2 + core/translations/signatures.json | 6 +- tests/device_tests/test_repeated_backup.py | 5 +- tests/ui_tests/fixtures.json | 140 +++++++++--------- 10 files changed, 89 insertions(+), 78 deletions(-) diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 476d249a5c..aad7b93e2d 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1332,7 +1332,7 @@ pub enum TranslatedString { brightness__title = 932, // "Set brightness" recovery__title_unlock_repeated_backup = 933, // "Multi-share backup" recovery__unlock_repeated_backup = 934, // "Create additional backup?" - recovery__unlock_repeated_backup_verb = 935, // "Unlock backup" + recovery__unlock_repeated_backup_verb = 935, // "Create backup" homescreen__set_default = 936, // "Do you really want to set default homescreen image?" reset__words_may_repeat = 937, // "Words may repeat." reset__repeat_for_all_shares = 938, // "Repeat for all shares." @@ -2663,7 +2663,7 @@ impl TranslatedString { Self::brightness__title => "Set brightness", Self::recovery__title_unlock_repeated_backup => "Multi-share backup", Self::recovery__unlock_repeated_backup => "Create additional backup?", - Self::recovery__unlock_repeated_backup_verb => "Unlock backup", + Self::recovery__unlock_repeated_backup_verb => "Create backup", Self::homescreen__set_default => "Do you really want to set default homescreen image?", Self::reset__words_may_repeat => "Words may repeat.", Self::reset__repeat_for_all_shares => "Repeat for all shares.", diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 74bd4bf264..c1a1fcd033 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -587,7 +587,7 @@ class TR: recovery__title_unlock_repeated_backup: str = "Multi-share backup" recovery__type_word_x_of_y_template: str = "Type word {0} of {1}" recovery__unlock_repeated_backup: str = "Create additional backup?" - recovery__unlock_repeated_backup_verb: str = "Unlock backup" + recovery__unlock_repeated_backup_verb: str = "Create backup" recovery__wallet_recovered: str = "Wallet recovery completed" recovery__wanna_cancel_dry_run: str = "Are you sure you want to cancel the backup check?" recovery__wanna_cancel_recovery: str = "Are you sure you want to cancel the recovery process?" diff --git a/core/translations/cs.json b/core/translations/cs.json index 583af37902..df085e210c 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -611,6 +611,8 @@ "recovery__title_recover": "Obnovit peněženku", "recovery__title_remaining_shares": "Zbývající části", "recovery__type_word_x_of_y_template": "Zadejte slovo {0} z {1}", + "recovery__unlock_repeated_backup": "Vytvořit další zálohu?", + "recovery__unlock_repeated_backup_verb": "Vytvořit zálohu", "recovery__wallet_recovered": "Obnovení peněženky dokončeno", "recovery__wanna_cancel_dry_run": "Opravdu chcete zrušit kontrolu zálohy?", "recovery__wanna_cancel_recovery": "Opravdu chcete proces obnovy zrušit?", diff --git a/core/translations/de.json b/core/translations/de.json index 5fff40e403..169f99644d 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -611,6 +611,8 @@ "recovery__title_recover": "Wallet wiederherst.", "recovery__title_remaining_shares": "Verbleibende shares", "recovery__type_word_x_of_y_template": "Tippe Wort {0} von {1}", + "recovery__unlock_repeated_backup": "Zusätzliches Backup erstellen?", + "recovery__unlock_repeated_backup_verb": "Backup erstellen", "recovery__wallet_recovered": "Wiederherstellung des Wallets abgeschlossen", "recovery__wanna_cancel_dry_run": "Möchtest du die Backup-Überprüfung wirklich abbrechen?", "recovery__wanna_cancel_recovery": "Möchtest du die Wiederherstellung wirklich abbrechen?", diff --git a/core/translations/en.json b/core/translations/en.json index f04fe0045d..bcf55d7237 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -591,7 +591,7 @@ "recovery__title_unlock_repeated_backup": "Multi-share backup", "recovery__type_word_x_of_y_template": "Type word {0} of {1}", "recovery__unlock_repeated_backup": "Create additional backup?", - "recovery__unlock_repeated_backup_verb": "Unlock backup", + "recovery__unlock_repeated_backup_verb": "Create backup", "recovery__wallet_recovered": "Wallet recovery completed", "recovery__wanna_cancel_dry_run": "Are you sure you want to cancel the backup check?", "recovery__wanna_cancel_recovery": "Are you sure you want to cancel the recovery process?", diff --git a/core/translations/es.json b/core/translations/es.json index d959dd997d..d1781165e6 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -611,6 +611,8 @@ "recovery__title_recover": "Recuperar monedero", "recovery__title_remaining_shares": "Resto rec. comp.", "recovery__type_word_x_of_y_template": "Meter palabra {0} de {1}", + "recovery__unlock_repeated_backup": "¿Crear copia de seguridad adicional?", + "recovery__unlock_repeated_backup_verb": "Crear", "recovery__wallet_recovered": "Recuperación del monedero completada", "recovery__wanna_cancel_dry_run": "¿Quieres anular la revisión de la copia de seguridad?", "recovery__wanna_cancel_recovery": "¿Quieres anular el proceso de recuperación?", diff --git a/core/translations/fr.json b/core/translations/fr.json index 403bcffccf..e11614f3a9 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -611,6 +611,8 @@ "recovery__title_recover": "Récup. portef.", "recovery__title_remaining_shares": "Fragm. restants", "recovery__type_word_x_of_y_template": "Entrez le mot {0} sur {1}", + "recovery__unlock_repeated_backup": "Créer une autre sauvegarde?", + "recovery__unlock_repeated_backup_verb": "Créer sauvegarde", "recovery__wallet_recovered": "Récupération du portefeuille terminée", "recovery__wanna_cancel_dry_run": "Voulez-vous vraiment annuler la vér. de la sauv. ?", "recovery__wanna_cancel_recovery": "Voulez-vous vraiment annuler le processus de récup. ?", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index bce7a39353..8f249d4318 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "ba305d41fa4793fc71a2cd124cd9170ce93177f0a749ea0444c2f06cc3a65d2b", - "datetime": "2024-06-05T14:49:38.622932", - "commit": "7322ca7ddb4539885970f4546494369e1ff950f8" + "merkle_root": "7fba6f82bbd54d09ca75a1454a0af359fd187dea5b689f4f19552b5ae1d8e2f0", + "datetime": "2024-06-06T15:24:25.976163", + "commit": "0e530269a8291e7d2bb1960ab54ed10af0b6785b" }, "history": [ { diff --git a/tests/device_tests/test_repeated_backup.py b/tests/device_tests/test_repeated_backup.py index 87c0c7f8f3..acec8cf9ad 100644 --- a/tests/device_tests/test_repeated_backup.py +++ b/tests/device_tests/test_repeated_backup.py @@ -21,6 +21,7 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import Cancelled, TrezorFailure +from .. import translations as TR from ..common import ( MNEMONIC_SLIP39_SINGLE_EXT_20, TEST_ADDRESS_N, @@ -236,4 +237,6 @@ def test_repeated_backup_send_disallowed_message(client: Client): assert client.features.recovery_status == messages.RecoveryStatus.Backup # we are still on the confirmation screen! - assert client.debug.read_layout().text_content() == "Create additional backup?" + TR.assert_in( + client.debug.read_layout().text_content(), "recovery__unlock_repeated_backup" + ) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 8763a57011..24359d2bab 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -774,7 +774,7 @@ "T2B1_cs_test_recovery.py::test_recovery_bip39": "375a6f59a10b331b0862948495728220d6b73513b3ef00d0059c2416b97612ad", "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "7e1bd02324afa7842526afdd37dc1466253b2f88dfc31095f23d1241623f8f6d", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "c12c729746d5096415c4c63e212222e7354a2b35a11810774466322b59e18d65", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "6f3888444fa0c0cea9f53642d340d6a276fd59f82c157d0cfffbba3b9a61e331", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "eb5fd0336c22d6a9e19339a5cc2405d4dfa777a54d4eebcb9c143e6a5ff87e69", "T2B1_cs_test_reset_bip39.py::test_reset_bip39": "a230df6897a2329be025591a340d4dfaa22dcf908aa24e30d837ef80dbbe254b", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e70b2900b5f7a8487fc24566d5ebfe58c590817017ca78440246abce1660d484", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cf0629dd19db3de2c3499caee7a5b1b79c45151c33bf78e98ece9354bb8873bb", @@ -820,7 +820,7 @@ "T2B1_de_test_recovery.py::test_recovery_bip39": "86b3980aa38255b490fc4cdc8b73ed8c0324a235e65a3296b52fe7d9a0a342b2", "T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "6b006ad60a479d373f5abef8ac37d941853f3768e162aa12791fec0d56a65e77", "T2B1_de_test_recovery.py::test_recovery_slip39_basic": "923a429e844a91eaadffc6d022c2912d2ad356c00d78f898dd4cb120a4255fdf", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "334889ebe6a0bcc3ffb0fa4a2452978366c8d2a7772ae20c1cbf823d7b97c8bd", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "50dac6ada070947e4c509cd1fa597e6f74aaca88ea02b97682e397811003a407", "T2B1_de_test_reset_bip39.py::test_reset_bip39": "bf18ca3a182cb1f3460dee4334f6c4d0a3e0b5e2e973658745f231caee97bbda", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b2f2f713a04815a71bc6b3e24ec7c7d99aef68e90545065e64c38e09c3d04a46", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c605a432fa0b9c0a809116422c5fc09931bb8f15b1e6f8b2452ba1887e5d86ef", @@ -868,7 +868,7 @@ "T2B1_en_test_recovery.py::test_recovery_bip39": "1e5ebf29bd14674cedd6f2cfef42bda268c53e98b1b67a531610ee9b70804391", "T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "6dc40e36be62f5b8d6c26b9c923cb643c1f715689f4d92db5b28363b5f2dff9f", "T2B1_en_test_recovery.py::test_recovery_slip39_basic": "938f3b9b8ea993a5bdaf363812a6a0c43d06c34bac46059e3d228d5e5f100b45", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "8d13a5d296311eaea8af4a1a66e3aeb4b741e7eed2a6c53d34415bc99170ede2", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "31a1bda17e7c7fa3653e1b11db9aca6cd01c8b811cb06581e2eb12a2628486dc", "T2B1_en_test_reset_bip39.py::test_reset_bip39": "5e3278c2c3c22dbe3070e86a5d9e54a20be2f8ea61474b451cf44bbdf230f755", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3cb34f14385238fa61330059c4ef6152daa14e0656caef1c156cce0fd60f3360", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "83b6b14cb700410fe809b14602ae899627160f7d98add958893cf5b7e6508f4a", @@ -914,7 +914,7 @@ "T2B1_es_test_recovery.py::test_recovery_bip39": "1d60d8f5eb658ed44eba51a4ac73a9893c98fbd40b3b8ffc96f9f26d36ffa604", "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "a45747e147ad29beea8329c6ebe657cd9780f44e9e20ba6248f708d1015a9522", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "5f573a064d1b85081484f35e95f5e27c3dff62f301dae4606acf01234cd04352", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "c0b951a6639b3be3871a82907a3ab172654825deb7d2833642cc9f2513077f9f", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "0accfd3c21c9fa3a8a18eb87510803131065973678e660e87d868e1e227f0e5e", "T2B1_es_test_reset_bip39.py::test_reset_bip39": "34c0ef033878298114450c5f4754352cef69d8b79ace14eb2ebfd6600162d032", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9ae04292356d8b353b021626d2165228d9b3e373d4a488fc0e971791e583e988", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "42ebf9db101f9ab1ca38688cd261e16457cee3240cd66d9c7d854e6ffee2ac40", @@ -960,7 +960,7 @@ "T2B1_fr_test_recovery.py::test_recovery_bip39": "cbd5332c79af0d104411a43f862135c499052096748d5b47cbe9efaec45bb5d3", "T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "c105a2013a1270d516f84dd41c1ab6ebf3690cd1dc60ed9d356ec4550bc144f1", "T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "ef586e7a53fa4d827f5dc12ba9f6d59cda8c8a7f7aee9e9861c5edd3a16aa74d", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "ef905d84ac35d10195ee952d93438ffef95e8b36fd8ab5da6622463c814cf934", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "b3034dda94de7183ff8da2c7a2be9179c2748c795675eba420f0ba814f77a1ec", "T2B1_fr_test_reset_bip39.py::test_reset_bip39": "a9c6151e2d78468978330506004f60f7a0215cfe6490dd3ded10ba455c48a5ad", "T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "186a0b58543180d63fdb3a9cc35c4d450f8b0d483fd816359c12cc202cde0902", "T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "59f11a8ee23b085fa36d0bd2b48b4a1a0dc50de1583bdf0ec5d73e3a89a6dbcf", @@ -2309,10 +2309,10 @@ "T2B1_cs_test_protection_levels.py::test_unlocked": "d45aa3fa066835bb5ed5c7f803fcd0693564f2a84c6fae377fc3fa13c6683429", "T2B1_cs_test_protection_levels.py::test_verify_message_t2": "7adb0534531529fdf43625541659156273d7daa7d2d3394c18ce4054372992dd", "T2B1_cs_test_protection_levels.py::test_wipe_device": "0d00b5c915f5b958051384fd9075a3c752777ec3e6b4863e444b7d681e04ab79", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "34ab709710ece59ee0a41693426a8e80a9c2f58ce117dfdaab4cece3944ad387", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "6457d2b208845744d3b31227dca71283f15098671ed26258774c548fe1dd9d18", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "05bfd19b363d73ff984140ee421960b3ba48e585e2c72b5658cca0b0f28fb046", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "5c5e42830fa3e7c72497e9cd4fc50ef17fd487194a10734c845b08b7731338c2", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "3cde97f160d23c031bc9e14e16d2d03fa8bbe229fbd05915e3855c2e6230837a", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "d6de618be8b4936659f42442375169903247549f15e680721c387952b2afcb75", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "000f2d238b51506f1bb5e52fd30d5cb87c56f2be08451eda06232bafbcb9b296", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f0d6aabf51f98318c4d9ba50650fac9751c5a935ee5d2e17fa47afaaa689c825", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_clear_session": "9ec6f277513545d0a4ce3f94de451f47dada0868bda3e989bd458f73566a98b2", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -3700,10 +3700,10 @@ "T2B1_de_test_protection_levels.py::test_unlocked": "eb7f30e5a5194d575f621b11a5b3adcae50692b7a683fc070eef692b95879f0b", "T2B1_de_test_protection_levels.py::test_verify_message_t2": "a5f0fe7d3aa6bb746e3037d780f492f29e6226e499de5567903f3d1e353ac608", "T2B1_de_test_protection_levels.py::test_wipe_device": "8c5ca43ea512e8f466ebc493e13f6ab2e303aace2684e81855e47d722c44c368", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "45bb6e7aa9fd3ee2e1f76780ca8d09555747f185ea1b50820c07424e7c57cee5", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "e15eb73d35defaed6a125eeb0ae2d6bddd0d71337ca097367eb25f61bbfd4c31", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "19e406560b181f3fefa34a049849c39d4258e60201fe2461bbac9f5b5cf217c4", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d6e3f5fc3cd7c4db1f8fb378cc46576c4a226792faf7caef5d4303c5ecf59d68", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "4ddc9d2c4d5f61b5e8001033320196f73010f23777b5f07bbea6c9e12dbf62e4", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "8922069edfde40c340d919d345ae1fa8b68d94dc802b23fe1ad325788a505148", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "93f775a9c28048e4fc12e779277eec8bf4c92587f87a059971d8eeaa74bbd89b", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8c5495c747495a6cecda1dea72e3e87710a86a6bb5c4b456b6302441dc94f078", "T2B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_clear_session": "fc55d72baf2a11881021f5e45439388e0aaf38472e5e08093c2356a5d3af7a5b", "T2B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -5091,10 +5091,10 @@ "T2B1_en_test_protection_levels.py::test_unlocked": "e76b12522fd28fc08af0135271615d63a13a0ba9f013ebd1afe20ef72abe0803", "T2B1_en_test_protection_levels.py::test_verify_message_t2": "5f04a88b0acc2daa3e87c02074a64969aeb34157006adbf15a3655e94f838bdf", "T2B1_en_test_protection_levels.py::test_wipe_device": "bc06c63c7f5b9e7f0ada0d3d342125905b4fc463fb0eb2ba363b300909dedb9c", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "f46dcf489deb91e78719319c6d2d2aa191d714f9592a5f05d283dc6c0abf8d0b", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "689baa82f677f3b63af766300cfff7f3187417560a28d3ed9810803d1ae6b493", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "945db36f4945ad84a17bb0eb81b7d0c2909065f1310e33386d7dfa60a94f9aff", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6b2fb5274c1cff2abac5e6ac564b3610eb7ca430cfb83050e849cc1ee5187c34", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "4838ad2a5ccdeb7f34855a0c1b8222a4a01cc2dd28604b100c1ce02a784503a9", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "56179cc17e5b0774b3ec0a3dcb7d59955afa043843e31605e581bc24b24c2abc", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6cbd79e798c262e608d2f75d1b22bd13029efb7e073a30af52da70bc5cc0e255", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "42f084ece4b861234364d3cf5efe7d8343c644deb1f1fbc63d72f2a360cc1a75", "T2B1_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_clear_session": "c4ec976d3a6d21237c46f4bae10a16d792cda271feae0530cbe570b91fd81a49", "T2B1_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -6482,10 +6482,10 @@ "T2B1_es_test_protection_levels.py::test_unlocked": "7e49c5e3ccebafeafcd1fdd76fbc77cd561c414579adcbecb91c79177ea68fff", "T2B1_es_test_protection_levels.py::test_verify_message_t2": "4fbbae479bace26c116b9771cd10044d1e9d6f3a3cc4ce150f0a294443789ad6", "T2B1_es_test_protection_levels.py::test_wipe_device": "407280cffb503e26c7c5848fc9d71826be24df1410258a6531f7be58002cc82f", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "fd616b91bf4b65c48d24c8455840a1d7630ead87b42547691a37ac55ed74cf46", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "ac5223af0e78ee26456aa81d13deaa739f6d8a9392f6a0d6963b0601a07c3f8c", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "71dbb1ae1a02912c6d7cb3e51abf00a019a7adabb13de592a04006d4c7c2898d", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4cc133317511a1c135e6dc4da3292383cd02241b067dfdaea6c9ef1d7045009c", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "0fb26c034cad1eb818e2a6d8bc08bd58ec376e462e4f2c5cc06d6c2a7c624d62", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "f7b174e2d94c27341ab9438ae7ff60415ba119e243fc8e4d023c01e0c6d2cd13", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e51ca1872306a7d353abe1a2c156a373eebec4fc56811b123a6ccc8d804affda", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "eab673450dd9c8491a6bb346a32be0ee2b81ccc8fef78e037032297a22cad0cb", "T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_clear_session": "980ffef9c644ff1300f931fe756a31fa8b1836dfeda81943e2b223a8ea6fb8ba", "T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -7873,10 +7873,10 @@ "T2B1_fr_test_protection_levels.py::test_unlocked": "a60373cba99b534c687d3543ca00b1a1bfe152e758ef2471766ad75efc4740b6", "T2B1_fr_test_protection_levels.py::test_verify_message_t2": "3e88a839e35eeb0948de1aeb83ac8f06cb91c5a8a4517f488d4e743d2eb15867", "T2B1_fr_test_protection_levels.py::test_wipe_device": "63b8efbe636c36ad664ee33d5f8fbaacfbedfed2236096f3b08e02749f5fb89d", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "44df9b6b2be3af609e30330da20e8768fb486d8cec817bdbecdd5823d6ae2e7b", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "efd213af42e222e07aa6ac4edaf42de619a253c3a6c38bfd11b2b09d948ca17f", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b9d74541282a9fc477f4c162dbaad33804f93a6187b1157c165bba384b3e1d52", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "56ff86599556e4ab457f15954901eb91595501d53032967489a737b18813ab02", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "e81dc319fe69ddc743253fac993233a14d8e3f7f59c0d0a05ebfc06b16438740", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "e24ca689f6a4db15587e42776be179e92006775c0693e5ccff8c051cc4e7f482", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "d66f6fb97e18f8198414a51c35820a68aeaccc4db0ede5513ebe4742a6640346", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e3102e8c7bbfe6474c7ed965db77c481d5db4f4ac9ad6236e3446ba864be123f", "T2B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_clear_session": "f217db103a83feb3187047d23f5ae3c9fa2f9a87dde2a349f4fcfe8d666967d7", "T2B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7973,7 +7973,7 @@ "T2T1_cs_test_recovery.py::test_recovery_bip39": "58e2ee5e462f2e6a8bc870e25c48553a8975300571f84ca95dd863ac01053544", "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "f08eeb1b8fb36878fc420636e8f94f26eba2f94c742146d5bc71bf4223fed350", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "8e44525da87337f4535a5f25f0ac23a341b49c7672e3c16ca086c6fecba3a4e0", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "563a4f887733e4a5550aa1cca1a30a6fc38dcd2315a434762ac7b808304c6070", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "53f95072fda06c168f289ff07e66c94b72fc84c54f899224690e234e7eedb5b1", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "796d2366b938ef928c4f4021157c15b7ec07e343daad5a0ec373ecfdc921a856", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1210e840ca4853cfe1b2d1458e0c5e4df0872ebe36bdba6f3ca4f62989e01f92", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a1977e1ee6f6fb75127bcb40ca551b554acba70a9ab18f0d06d765fb9e855afa", @@ -8022,7 +8022,7 @@ "T2T1_de_test_recovery.py::test_recovery_bip39": "9b1c68e4b89a8d328b7ae32025c2a9cbd3438aabab03d51bd7be36b679a7e17b", "T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "1c17a4527106240500aab5280074afe3699baa2351c006a835a6173654fc024e", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "607e3bc1a785b510fa6a27e386986e168fa572bce9ee352dd74ee1380570bbd3", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "f40ce6f97fbb5e412cd21dab4569d87ea1fa554fd02fb1e54f267e0ecccc6346", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "4b7d136021ea48fb787943494d043a937752534e9b1f1f70a9d7a22f9c7bc3d7", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "e1e62b9f04fccf0fbb14793c83da9df4d8de8bc56083db0d41e342d8fd5f4028", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ede09c533b46478208c9c0d0bc328491f9dc50e5ac19a1bf3c92c1a838bfd9f7", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4edcdd947819cc9e137c013b0899572a2aebfafaa74af5300ec27dd3c90d8541", @@ -8071,7 +8071,7 @@ "T2T1_en_test_recovery.py::test_recovery_bip39": "9878cca47056023ee45e4dfe09dc802897eaa8fee49113d63bc9d4d020121220", "T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "c90651925bf52dc612ecfb242b07d30499d0743aff5d55005d39068882694523", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "d817d1d2c1dda9f7ddcf7893e94061139562cff3f41d2265ef4387fa6e188fc0", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "97d76ca6c74bc46d138b8307a06a257562f8d8b60072ab7d404186eb11a4630a", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "1f48d4a343913f3923addef8d54e36ff614f6ecca07224fa7912c6f1761df149", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "24750faa43d950f4c1cb503e800eb80e8f4ae97a521ce60b3cfa82fa662c96dc", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c902e8c822bcbc93b29678c67740d3ff79bebd137ce61da7947692406794eeb7", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "808f9be629c08ae567dab19cc902d41ae95c7b542e18c5bbe996d7d14972825a", @@ -8120,7 +8120,7 @@ "T2T1_es_test_recovery.py::test_recovery_bip39": "a82be5ecbdf91e860636537758eb19f8aea27a76e78b3c275077bac4982c52ae", "T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "12a96269f52788419523af93d2f34bf2a8c72e9116c6948c5f81d296b5df8f14", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "595438a8dd044db890c02231f473d6c168a833585acfd46dbec0334e70a6bb96", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "fd1fa521d0f66e45f654f8db906c3ada41bd48cc869455cd454bcb9a34bd0c39", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "ccd4e917ec8689bb8bcb9fd763eb8d42f1710732d2d6f0265b58c132d2f8d7f8", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "b12db06135c50bed8492b757cef803fe6ece5e4e571917dad60e6f69c75e63d8", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2c68e0cac7449ad644cdd60be655803589f62f4d02496425a2848783489939c8", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1ae2de2a191816d2483b733740da6f2b139f1e925acf0e2766175e524be11803", @@ -8169,7 +8169,7 @@ "T2T1_fr_test_recovery.py::test_recovery_bip39": "2d933f5cec5d4b6b6ea329fd0b9cbf8b8665f5f729a52e1cfa43b7d34efb6660", "T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "066f91f58af2e3d3e9ab33fcc31673833ee26675f1f5aadfd5cc95f75e7f224e", "T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "c45774823c8c690d9fa7af79133bfd3df9176bb276f7b28edee9f9f37c844111", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "1d32d5ec188b1e26d307db4daf3f3e963c3d668a22546a135362cd2d9c2237ff", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "bf636dbf2d629e4b90db5b923a6bfe24faaccc788765a67110bb28d6471ea533", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "0e42fbc13c2f2eb55e31b1e7318d5256b7c3acbffd5c976ff41739e2bc67e0be", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1af6e282df8052a01a894e2661f89285bedff053f5cbbff3aa328fc369f1096b", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aa033c5921dcc92c1ec3461944849509bed236f55b08fecad8986a93bea13e36", @@ -9592,10 +9592,10 @@ "T2T1_cs_test_protection_levels.py::test_unlocked": "03c60806a17607d7e3b39d76d3d82144ceef92ebbf90bc25ecdd6233bc0081cf", "T2T1_cs_test_protection_levels.py::test_verify_message_t2": "7cbc1f75a41c00a6d53fe6372113fdba190489e8819fb6d4a7f6d9898b0115c1", "T2T1_cs_test_protection_levels.py::test_wipe_device": "e2f47c3779d782bb71d8dfd553560ef36b4d6fa67a629719e380e30af8727229", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "8a7ca41d1faef20d66a704bf34613542d0c9b27dcabc8f66c26723dfde2da74d", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "2f9dea3282bae95ce05e5f99a5ee0732105883605be38e60d893429d2ce8db85", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "c12b25b3736ce13513f0b9024a0371d336fe93e913c282c7cfbc8340aa38d43b", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "da143ff09a3f0e98b783218e82c09f98d501a29c2e588f2edf06e89da9202652", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "42ee2eb397242af181668d52a5198ef2d2d4eee4807137173440f718fe9c0790", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "c899053aa9fa16bc6912447370f78b9078dc2c8972e8293e524da78f59ef3bb0", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9d6aff86fcf5c2b5a048db966c53582e9cd0870770c0fb67f63bef2f19494eb9", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f96f096ff5cd5520971b2afe7fef745152aa0b9a391bf29ca0873a090387446e", "T2T1_cs_test_sdcard.py::test_sd_format": "8f1ca58187e0eb32b6e23e369b1e9a3f68ee244023e2a0d25930d887f9bff5f2", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "f919e4e387fcb3806adb43f7b8f71ae3b14a30970b3d79bb4c9bd063804a084c", @@ -11063,10 +11063,10 @@ "T2T1_de_test_protection_levels.py::test_unlocked": "97cde4874c0952f2da6f2f41845b8ce279e4015ea95ef38bd8c0e0d55039b80d", "T2T1_de_test_protection_levels.py::test_verify_message_t2": "b0298371e1eb13ab94bd944dbfca4079e5e6751003fb9e0a2bb4dc35d02db844", "T2T1_de_test_protection_levels.py::test_wipe_device": "2b6b86e0caebab7123f67264d3082849c56ee4d94ce8da13fede6d1012b866cc", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "08856c389a446913bba55ad50161fe2f686831a7acbfb1c9d49694306c1b20b6", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "35577934f882470d96f88fef4ec72703f44b45643d7a919743f32f459f552652", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "baa0d2e821605d2b27e7c29bd938605c734baa34dbcc6a3631b3a8a73988c486", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9540c75bea51ea9abdbd22a55845916d04830d791d34039866717af85ad65252", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "95b1538f046f71b45ba6d6918216ecd5bf015cc9e9fa5f93d526530b24a0ec4d", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "77fd9a50967e7b157c0636100fff7673b866aeea9034c4926be7a5cc786fd47f", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "d488f32f666f986acd3add811fee31a87e32021f9e9f094202c4b556d0ddcc94", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ddde7c9be65109b09359c0537456306c80c845d0ae4529f9d1d8bad0deabdca5", "T2T1_de_test_sdcard.py::test_sd_format": "3e307eee23db4db1a7f3810af0d90d6720da8e5bd81cbd4e924579ff4528b51c", "T2T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", "T2T1_de_test_sdcard.py::test_sd_protect_unlock": "89dfea5d01815a7927af69127a7fbece5b8ba3bd36713298ea2edc8f860d6d32", @@ -12534,10 +12534,10 @@ "T2T1_en_test_protection_levels.py::test_unlocked": "4488e2b6f06fdff05749ac271d080182f1c95645de37898457ff12f0fb190381", "T2T1_en_test_protection_levels.py::test_verify_message_t2": "cc09f0acf9e48b1355dae0be65a2a97abbe2811808feee08d46ae7146ce6bb6f", "T2T1_en_test_protection_levels.py::test_wipe_device": "7ff017de646b7cf70832605e1750c635d0eb661d51534b56007b49e82b927011", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "3823ebb22af97138caed34210d3a9a72b82f3b1fcbeb1fa5adf14a9774132de7", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "d2a87429b30653408faa45c16db550586774a51d901d1bd9e78a82573bc4e9d3", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "95161e06ad9fa2456248ad2c862ba7945a0bf66b27ec5330cac8d4d75d8d0c4f", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a999c27e056e3d881290bd6836ebb14ac6ac07b6c4d942c57ec78d6af99988a7", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "f5415b5df6f30bb6175cfced072211c24909c7817773a07493c1d1801dc0ff6c", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "b5a1ce24627ae499680f902ee35c1ba852f99a3c1948b1a5131ca53967654a5c", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a09d23fe859d50ea8ad0ae2d109f215633cb198979b5e4eb0240cbb00ada1958", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ea4b0bc5c42a5eda7de719c30331d30f9afac1f092da463aa51cfdbf2bd39b85", "T2T1_en_test_sdcard.py::test_sd_format": "83d0d9b4eab3bf0eafc22d7d95e8b70bce477ba9c8b4ba13eeca9380ad5fdafa", "T2T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", "T2T1_en_test_sdcard.py::test_sd_protect_unlock": "1302f9a0835cac621142a17031d2150553e676261a3eeeefd32fcf1e69c7bd1a", @@ -14023,10 +14023,10 @@ "T2T1_es_test_protection_levels.py::test_unlocked": "6bf1c8d03bbf9a844f5fc4e31fe7faad8d6c49a9d5d8edcd9c0e04e975386632", "T2T1_es_test_protection_levels.py::test_verify_message_t2": "c970730c7f45321957056c9c1c47ed605d50ec6030a61c093cc82e4b910dd26a", "T2T1_es_test_protection_levels.py::test_wipe_device": "9aaa390ea2296772b8715597159be66d6660d5c418ee783eb44d8443afaee71b", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "8ad10ae991db5f43f0047d1b6fbd8969c8c8cdf18dfba33f555a90c2403cb8f0", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "2f9a30a28c168a6aac46828779cee41a00f3c785bc8bb23a30a4efbbe1336292", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e7ef82c1999c0be042ba7bd63a78e0c0d60f18cca853ba21c4461e517c33ef87", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4158d474cffe3c6b852c318316eb910a5c92226742fca69755fcda480577cc39", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "16df9efc20ec71366ae4b2fc62bc5123d1ae592aeb61235de5702d6ed54d2315", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "763634c6354ccf46ce28a610d04163c5bdf17563077e67c19e8a6fab7c1570a5", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6dfdfe05f51bb0b082628490073e17988a3a54fec9b33ef5dcc0ce0a6dfa7aa2", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e4bcceb9f4fde8a712ddaf07a2adfb5b6dd9eac66b88b2a670042d5552e999a7", "T2T1_es_test_sdcard.py::test_sd_format": "96fa6f12c78fc4f0e0d0e65e07d29772b9a27291564a7c12b0ec18a441b4b2fc", "T2T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", "T2T1_es_test_sdcard.py::test_sd_protect_unlock": "7296463f55e2a2142ace309c3a6665e398103e24b015ec0aeff34d2c2537c697", @@ -15494,10 +15494,10 @@ "T2T1_fr_test_protection_levels.py::test_unlocked": "ac2d18bf535dd2478eb723fa3d3779561dec2e724c3c4f52303505e124a31383", "T2T1_fr_test_protection_levels.py::test_verify_message_t2": "43cbe7d1e773a37c12dfebceb242c36af16bbf4e2fdb4b8ecf6f9cece3ba1980", "T2T1_fr_test_protection_levels.py::test_wipe_device": "0ed047d904ef99bb35e8e37dcff3d930706c77be2f4c7312233f2e3c956d1f6e", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "0d8c90037606dd57cb34d308007b8d7d1f0f3e48779de629a1f652464ed6a083", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "59602634b747e62f3b4be575b317633af5f5937beaa75adb1c08afa40b7d3af5", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b2a48dd7210008879b9afd8b255691bc04d057087d0ad020a32ee1cf5488f6e6", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "12dbd403f6acce67e6990c6fb2c557e2159aaf61046619477f381fd05db6bf33", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "1220775f8442b25b1765361de5e02d1a1b594211a19385ef6160a8fac58ea67c", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "d66a3bdb070b2e8c5d32d39c020f1a647c4ad1831a84996c65e93373fb5a9fd0", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "58b11df9604e2c5e65f1210480c9d28612a5b7ccf3a52d10975ad40c6ffa2de6", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "3070f8f8fc769584c251ed995e3067bd74381dc2564a0c806bd7426677d5c2f4", "T2T1_fr_test_sdcard.py::test_sd_format": "9654a743fdad9525d04b1ee8129874d437113d1d3d3cbb0793dca406cfb65d53", "T2T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", "T2T1_fr_test_sdcard.py::test_sd_protect_unlock": "6b793848153a9bbc263cd1c97b536ceaad0e278344e353e8d2ba331b95369836", @@ -15607,7 +15607,7 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39": "d812d59dc25317e82112eb34d337380a4cdf68c2548c824960400f7a0381c976", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "e64d2d3b1069ce3300a8abafa7d96cef3a03981548dad9beee1be2270769d701", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5e5f9492ccfd188144df29ef903235c948f15e016759f112e50c4910cae42c17", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "7698d96943f4014f443cbfd665aba0e14137ad9bd5fad9978479674eb26e3631", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "57e85311eb20f640899575da6dbe2eee0c62b0150766a11cc14183d385c96487", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "074f36b41c2ffdda2d0cc3ee3397a0929c95db959f0ae92d4a7d62735bde8377", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "68cff9707085c5bea2ba2ac12c8c3704251ae59dce2ee5419db29831b2bcfb0d", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8b204bfc21f80016cdbd3265116b1499d273b74c64819dc80deef768fbd3cbae", @@ -15656,7 +15656,7 @@ "T3T1_de_test_recovery.py::test_recovery_bip39": "b89f318ed038b136315a9a5cadb9dc366422b6bd856bdbafca98022574c33828", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "9fdbf2558a31b3a4db2df922aa0279f38bcca571c74011304ecb13aeca3b31d8", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "8d8d067b09b1339ea7b334633543925e0b8c6d1166fae6a27fa319bb9d9116e8", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "4b362065a17881efe1ccf3afef15de55de2ad05ec430e7c30ed26b7d10ba7b1c", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "437fb3f00d185e5d817deb850fe1d2da7e5e9e513a72e028e6297cf78d9d8b15", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "a9ccf20e930e27adae1eed30cf75afa5d9d774086a1b49c50fa229043de0e712", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5a2bef661f4328e9a238f1dd528dd43eecf84b1940d4c7e903a65c8b1ba4c170", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7b88b9f87fc73c0e137181945abb205675dcd67ba43a83b95395709df371a7ea", @@ -15754,7 +15754,7 @@ "T3T1_es_test_recovery.py::test_recovery_bip39": "6624d943b3fd85c709deef35782a4cc267f9391c5a9b8de60696e7de7847608b", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "05e7ee369a43ee2f296ef87e77d22baf4c9e6069e102bc154294f8eb0d91e804", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "42f49a8f3488677b9c01a21a00df7fb70d7d03aee6a67521995ce26e9cb7f3d0", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "fbad73a1feb3d0c3e709c863d26118363bf74241b5fc5d2701c7c373a349a246", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "de3bfb4200717ce216f6ad51c0944b1fbcb9d73c1262a01b238bf21112c0ddea", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "56c69e4dc03b2949706b79a45b789143c098d14dfcec820ce2d06c907e5b070a", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cde3bdd8e2dbfad21b823e971f20a6e8f450aed4835bb8c84a84d560e1621769", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "153ea45212f1074e0ffbca4d9ef7bb28ba28fbd29c37ac107960709aa63cbf3f", @@ -15803,7 +15803,7 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39": "72532c272ac3dc97a8b45c5c268f75bc122a3d03dcf6f89fe539e2dcf41a6888", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "33f278d1b98f44ae61915398409a7cdf1a247b2b49de72e1ad5e4f1002712387", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "4079df31415785686f540253e026b2ce6b66c60e0b45b608e5c269c689af3421", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "d236d09df31bd3e71d1ea74920de5e433edd91ebbe95add38db985db872a1c31", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "3dbde0c11b3260889af6f3f2afec0aab583f840db7fbd7dde18318855d314857", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "6a256de0b7360aee8131545a8ff2e506ec10a63b4dfc37490ee2585f67ecdf99", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "63270631505d8842b24593fde4cff22d150d4c31f4ce1e45ceed10e325468289", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "570db1eab6b53b52b202ec161e0c5d7725c5bea3ccd7431b50d65887877f9458", @@ -17119,10 +17119,10 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "47dcd5b7cf013a81152f000449e4f823d481331d72318ab8845359a17a9d0286", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "db119b55d10692e0a0ef40c09ecd87ed55db89b9341d604fab8ab63d11d13b5c", "T3T1_cs_test_protection_levels.py::test_wipe_device": "0ebc0fdd142d19312c591bec597f35fb7ceb3d71c8bb91628a3e8cc31090426f", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "6579831afac25758dd5167cd5e0f0326bc4eba7a995a0ea721417ad571f4fef4", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "fcb76a16cd0f7d4434291eb18c120abe04fdf416a52f593beaf955dec3584f41", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "963befb26b421b99aba60d473abcc70c8eccf701beca323f4ad0a4257db7d9db", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9dba44fde959bce5e44412f66620000152b1206a4bdc5b34b4625a8366fdb31d", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "3dd0013a5dac7130298a7476f581d18a24d316a47b5ca3f7535b5e9c047fe6e6", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "3560c2feec8b3e76cf61571d692f12a4868c7206728eed1983dc6685cebfb26b", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "33a3d38d2ea40d4aef546c586f7713d2ca6afb7d5d3f7d256b40d6c47a631fff", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "41bdc491beb24110814f18812d48ed9966ca58d24f93f015a60d19471b775160", "T3T1_cs_test_sdcard.py::test_sd_format": "2bf6f6dd008b387e0295865b0926c58e1972c6615b213daa423254cad4828c8b", "T3T1_cs_test_sdcard.py::test_sd_no_format": "d775aa49d5afe8d5ca5e0a0b6c9b2b2cb00614fb9188ddbb7cea06e4d0164944", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "4c755ed046a6e9cf1fa4afafe5b2f6157e5a9ca6093ac6d0b3c8140438c311df", @@ -18483,10 +18483,10 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "64011d4e3bc84b5c02f62e2d3152c335247346f5e435c0f721b4144d9dd7165e", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "c20b035c9f2450a668a79adc18480c290e986ca645d1f71107d257abadce5731", "T3T1_de_test_protection_levels.py::test_wipe_device": "34029ef417717f458064fb4d461c4daffa32275b9d65c3eb895cf9c46101ea67", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "8d496dd3389f28c8b919ca8a2433b086445e601aa1bb68f18a885361a09a0e3e", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "f583ab4ce0e94613965a480a074679ddffb69ab79035f157a777fafee8c6aa11", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "7ae8a6310fe1829968ea5eacf157908af5fe12f7019ef1e6889d20578757d6d8", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "0296e9f12d451924a974c6af8d795cf276195193a61ebd34343aba9935bc2ec0", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "e7f370fc83060941d5ed571be5b5f27d40ff7ea6e9c62d55ea2adfce33e705f5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "6a53a3782beb58a1f4868563057f21a1c5beab181e92f7eb443b2b746dd325c5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6e1a36f745a5d56ca68e4518ff7069b0e7e4706f07da2da37ac67e6e27a73037", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b74728ca7f0ac352b944b1996971b6edb5ee0900cbb40e6c3ed38c05341b54d8", "T3T1_de_test_sdcard.py::test_sd_format": "87fca14832eaba934ac4b811e69e7f373c9c6cf02b4118adb85e2e783d0ce053", "T3T1_de_test_sdcard.py::test_sd_no_format": "abdcff28d21d3c15d835c5ea2df1b5359785cf3013b441783b6cd7be4dd67016", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "9b6a729df60f6bf847d56dcdc2da51ea34583d51d468fccac59a2f56671766ae", @@ -21211,10 +21211,10 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "b5f7523c1963120655c5ddc7fda0853ad01d336a612f09f4b54ca7790a61f44a", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "97ce1e09ca7bf9b8b94a6d55a01b0a28575c9dc25e5aee70e442d23ad7c10d69", "T3T1_es_test_protection_levels.py::test_wipe_device": "97610e6da5f399b060bd8216c74c3d1268d121d0f3ad8cfd530473fe7e431878", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "5f0adaf49a45ea5884902b48ea8673cee4f1a5873fa4a0f2cf51a89ff0dfc5a2", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "beda3cb78ef91ff834ba406541b6c0a620f78513af294c55a554a0733a8ea4f9", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "27385d8e2a9ea9dcabf74b3ccccdf394ce0784ceaa545616f526fe1d0f874e66", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f7a69cdef0bfec3a18dc234000784ccff096788062548aa971c840da687bc9a4", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "c7db58092f700b32138b1686cd67d766d2bf69e853cf1844447cfc28bac29c6f", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "74e9364bd728175f1e684a3400ddb265ba00c4fc1ad92c21895774b1886b3b82", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "50e2b7b9bfeac6a7cfd42350c64491053b4a88194c43aaca4921ffd71cfb78ad", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4425e78e4910563ab65d7a0f2ef98caeb57475bf72defc152752ae3275ed5cbf", "T3T1_es_test_sdcard.py::test_sd_format": "2d3eadebc53baf9e73850df77ebf264316667d92d977ffff807edac30a2ca4eb", "T3T1_es_test_sdcard.py::test_sd_no_format": "fcd7ee499c336d76070703c8c60baa583a267efec1f77a2e92201ba630876640", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "37bb970f069e7957ebcbd2a1934e95a9e7049b5d6bcdb0fb094642da7668d588", @@ -22575,10 +22575,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "35cbeb9d02695d1e32461f9cda335beb65f7eb5c7580a1bed62dbc1dd2b54cb2", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "194d8261551236ade76cbace4e915c634673775cd825f18c0e8678365069c8e1", "T3T1_fr_test_protection_levels.py::test_wipe_device": "2c7147da05699ed5e4e210d2809369817ffce4ece65e210d69313ffb90c36de6", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "708620106135e03c1510aafa0823682c874ed4bb5a08bc41358c13082b8d2d1a", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "cb5ea7cc6827e2561361a902ac3b12ac5cc16065551fda4f3f055343ec738fa1", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f35e3926033de3c927faaaa036995d519b68e7c32185e4d3ee3cbb22959b8712", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "bedabadd122af2b3b62608ca5dd32390034a1e6edb947ee3d8c28fb12b008b32", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "2d6a93577a095b140a058011bcb2add36343d9c93c483aa1898d277d0fa670ac", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "299c3201f848c3f87f10a179a089d5db3880410296e77bc7c5a6d6501af7e1f2", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "64f7becc9c41558d51b2483ee40f305e6bebd0edc5a9473984aeb0a127436f25", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6b103e68defdf52ba3068458b25f97338937d9dcdcd44322a52a53306c8eab07", "T3T1_fr_test_sdcard.py::test_sd_format": "6683e27dce5276f9a5646c90d8c5aa19d8df5af098f5c808304abef02ff09d9f", "T3T1_fr_test_sdcard.py::test_sd_no_format": "cad883696fe6ed7320aeec419e118acdc897b22eea22f5d9cdff84ba5b0504d3", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "9f74d824c66a01638b8e1d1172dca750facfb2b2a6e3759642d688afcbe216c7", From eff46b0d5ceeedb07cc8f61920c6b4f9f73ac9f0 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 15:01:20 +0200 Subject: [PATCH 264/626] chore(core): bump version to 2.7.2 [no changelog] --- core/embed/firmware/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/firmware/version.h b/core/embed/firmware/version.h index 46eeb5f85c..de87194b63 100644 --- a/core/embed/firmware/version.h +++ b/core/embed/firmware/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 7 -#define VERSION_PATCH 1 +#define VERSION_PATCH 2 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 2 From 9b6496358bce3e6e7b5884b31f9e1b02090cd8a5 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 22:45:14 +0200 Subject: [PATCH 265/626] build(core): add T3T1 to build-docker.sh --- build-docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index 97982916fd..17c74ab710 100755 --- a/build-docker.sh +++ b/build-docker.sh @@ -69,7 +69,7 @@ OPT_BUILD_LEGACY=1 OPT_BUILD_NORMAL=1 OPT_BUILD_BITCOINONLY=1 INIT=1 -MODELS=(R T) +MODELS=(R T T3T1) CORE_TARGETS=(boardloader bootloader firmware) REPOSITORY="/local" From 4f4e9ab9042790085a8ad2888450427f4e5ac942 Mon Sep 17 00:00:00 2001 From: tomasklim <tomas.klim@gmail.com> Date: Fri, 7 Jun 2024 13:31:28 +0200 Subject: [PATCH 266/626] chore(common): fix solana and ada support --- common/defs/blockchain_link.json | 15 +++++++++++++++ common/defs/misc/misc.json | 17 ++++++++++++++++- common/defs/support.json | 10 ++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/common/defs/blockchain_link.json b/common/defs/blockchain_link.json index ccc86f9e22..09914fa2fe 100644 --- a/common/defs/blockchain_link.json +++ b/common/defs/blockchain_link.json @@ -237,5 +237,20 @@ "url": [ "wss://trezor-cardano-preview.blockfrost.io" ] + }, + "misc:SOL": { + "type": "solana", + "url": [ + "https://solana1.trezor.io", + "https://solana2.trezor.io", + "https://solana3.trezor.io", + "https://solana4.trezor.io" + ] + }, + "misc:DSOL": { + "type": "solana", + "url": [ + "https://solana-dev.trezor.io" + ] } } diff --git a/common/defs/misc/misc.json b/common/defs/misc/misc.json index f98f4d9114..729e3f565b 100644 --- a/common/defs/misc/misc.json +++ b/common/defs/misc/misc.json @@ -183,7 +183,22 @@ "curve": "ed25519", "decimals": 9, "links": { - "Homepage": "https://solana.com" + "Homepage": "https://solana.com", + "Github": "https://github.com/solana-labs" + }, + "wallet": { + "Trezor Suite": "https://suite.trezor.io" + } + }, + { + "name": "Solana Devnet", + "shortcut": "DSOL", + "slip44": 501, + "curve": "ed25519", + "decimals": 9, + "links": { + "Homepage": "https://solana.com", + "Github": "https://github.com/solana-labs" }, "wallet": { "Trezor Suite": "https://suite.trezor.io" diff --git a/common/defs/support.json b/common/defs/support.json index 8f0a77d12d..f79ad9e8b9 100644 --- a/common/defs/support.json +++ b/common/defs/support.json @@ -103,6 +103,7 @@ "bitcoin:tPART": "incompatible fork", "misc:ADA": "not implemented", "misc:BNB": "not implemented", + "misc:DSOL": "not implemented for T1", "misc:EOS": "not implemented", "misc:LSK": "Incompatible mainnet hard-fork", "misc:SOL": "not implemented for T1", @@ -193,6 +194,7 @@ "eth:tETH:5": "2.6.1", "misc:ADA": "2.6.1", "misc:BNB": "2.6.1", + "misc:DSOL": "2.6.4", "misc:MAID": "2.6.1", "misc:OMNI": "2.6.1", "misc:SOL": "2.6.4", @@ -316,6 +318,7 @@ "eth:tETH:5": "2.5.3", "misc:ADA": "2.0.8", "misc:BNB": "2.1.5", + "misc:DSOL": "2.6.4", "misc:EOS": "2.1.1", "misc:MAID": "2.0.10", "misc:OMNI": "2.0.10", @@ -421,6 +424,7 @@ "eth:tETH:5": "2.6.1", "misc:ADA": "2.6.1", "misc:BNB": "2.6.1", + "misc:DSOL": "2.6.4", "misc:MAID": "2.6.1", "misc:OMNI": "2.6.1", "misc:SOL": "2.6.4", @@ -503,7 +507,9 @@ "eth:tETH:3": true, "misc:ADA": true, "misc:BNB": true, + "misc:DSOL": true, "misc:EOS": true, + "misc:SOL": true, "misc:XLM": true, "misc:XRP": true, "misc:XTZ": true, @@ -533,7 +539,11 @@ "bitcoin:VTC": true, "bitcoin:ZEC": true, "eth:tETH:3": true, + "misc:ADA": true, + "misc:DSOL": true, + "misc:SOL": true, "misc:XRP": true, + "misc:tADA": true, "misc:tXRP": true }, "unsupported": {} From 5c781ca14b87fa873f97c449d8f970d174b7b7b0 Mon Sep 17 00:00:00 2001 From: tomasklim <tomas.klim@gmail.com> Date: Fri, 7 Jun 2024 13:31:42 +0200 Subject: [PATCH 267/626] chore(common): remove unused coins_details.json file --- common/defs/coins_details.json | 41972 ------------------------------- 1 file changed, 41972 deletions(-) delete mode 100644 common/defs/coins_details.json diff --git a/common/defs/coins_details.json b/common/defs/coins_details.json deleted file mode 100644 index b1eb055656..0000000000 --- a/common/defs/coins_details.json +++ /dev/null @@ -1,41972 +0,0 @@ -{ - "coins": { - "bitcoin:ACM": { - "links": { - "Github": "https://github.com/Actinium-project/Actinium", - "Homepage": "https://actinium.org" - }, - "marketcap_usd": 180870, - "name": "Actinium", - "shortcut": "ACM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Actilectrum", - "url": "https://actilectrum.org" - } - ] - }, - "bitcoin:AXE": { - "links": { - "Github": "https://github.com/axerunners/axe", - "Homepage": "https://axerunners.com" - }, - "marketcap_usd": 20908, - "name": "Axe", - "shortcut": "AXE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-AXE", - "url": "https://github.com/AXErunners/electrum-axe" - } - ] - }, - "bitcoin:BCH": { - "links": { - "Github": "https://github.com/bitcoin-cash-node/bitcoin-cash-node", - "Homepage": "https://www.bitcoincash.org" - }, - "marketcap_usd": 2567934801, - "name": "Bitcoin Cash", - "shortcut": "BCH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "Electron Cash", - "url": "https://electroncash.org" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "bitcoin:BTC": { - "links": { - "Github": "https://github.com/bitcoin/bitcoin", - "Homepage": "https://bitcoin.org" - }, - "marketcap_usd": 451280107391, - "name": "Bitcoin", - "shortcut": "BTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "Electrum", - "url": "https://electrum.org" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "bitcoin:BTCP": { - "links": { - "Github": "https://github.com/BTCPrivate/BitcoinPrivate", - "Homepage": "https://btcprivate.org" - }, - "marketcap_usd": 2118991, - "name": "Bitcoin Private", - "shortcut": "BTCP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "BTCP Electrum", - "url": "https://github.com/BTCPrivate/electrum-btcp" - } - ] - }, - "bitcoin:BTG": { - "links": { - "Github": "https://github.com/BTCGPU/BTCGPU", - "Homepage": "https://bitcoingold.org" - }, - "marketcap_usd": 297235948, - "name": "Bitcoin Gold", - "shortcut": "BTG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "ElectrumG", - "url": "https://github.com/BTCGPU/electrum" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "bitcoin:BTX": { - "links": { - "Github": "https://github.com/LIMXTEC/BitCore", - "Homepage": "https://bitcore.cc" - }, - "marketcap_usd": 1290295, - "name": "Bitcore", - "shortcut": "BTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-BTX", - "url": "https://github.com/LIMXTEC/electrum-btx" - } - ] - }, - "bitcoin:CPU": { - "links": { - "Github": "https://github.com/cpuchain/cpuchain", - "Homepage": "https://cpuchain.org" - }, - "marketcap_usd": 0, - "name": "CPUchain", - "shortcut": "CPU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-CPU", - "url": "https://cpuchain.org/download-page.html" - } - ] - }, - "bitcoin:CRW": { - "links": { - "Github": "https://github.com/Crowndev/crowncoin", - "Homepage": "https://crownplatform.com" - }, - "marketcap_usd": 227389, - "name": "Crown", - "shortcut": "CRW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Crown-Electrum", - "url": "https://github.com/Crowndev/crown-electrum" - } - ] - }, - "bitcoin:DASH": { - "links": { - "Github": "https://github.com/dashpay/dash", - "Homepage": "https://www.dash.org" - }, - "marketcap_usd": 801190219, - "name": "Dash", - "shortcut": "DASH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "DMT", - "url": "https://github.com/Bertrand256/dash-masternode-tool" - }, - { - "name": "Dash Electrum", - "url": "https://electrum.dash.org" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "bitcoin:DCR": { - "links": { - "Github": "https://github.com/decred/dcrd", - "Homepage": "https://www.decred.org" - }, - "marketcap_usd": 353035595, - "name": "Decred", - "shortcut": "DCR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "bitcoin:DGB": { - "links": { - "Github": "https://github.com/digibyte/digibyte", - "Homepage": "https://digibyte.io" - }, - "marketcap_usd": 180666248, - "name": "DigiByte", - "shortcut": "DGB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "bitcoin:DOGE": { - "links": { - "Github": "https://github.com/dogecoin/dogecoin", - "Homepage": "https://dogecoin.com" - }, - "marketcap_usd": 10815053466, - "name": "Dogecoin", - "shortcut": "DOGE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "bitcoin:ELEMENTS": { - "links": { - "Github": "https://github.com/ElementsProject/elements", - "Homepage": "https://elementsproject.org" - }, - "marketcap_usd": 0, - "name": "Elements", - "shortcut": "ELEMENTS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [] - }, - "bitcoin:FIRO": { - "links": { - "Github": "https://github.com/firoorg/firo", - "Homepage": "https://firo.org" - }, - "marketcap_usd": 30581066, - "name": "Firo", - "shortcut": "FIRO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-FIRO", - "url": "https://github.com/firoorg/electrum-firo" - }, - { - "name": "Znode Tool", - "url": "https://github.com/firoorg/znode-tool-evo" - } - ] - }, - "bitcoin:FJC": { - "links": { - "Github": "https://github.com/fujicoin/fujicoin", - "Homepage": "https://fujicoin.org" - }, - "marketcap_usd": 0, - "name": "Fujicoin", - "shortcut": "FJC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-FJC", - "url": "http://www.fujicoin.org/downloads.php" - } - ] - }, - "bitcoin:FLO": { - "links": { - "Github": "https://github.com/floblockchain/flo", - "Homepage": "https://flo.cash" - }, - "marketcap_usd": 0, - "name": "Flo", - "shortcut": "FLO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Chaintek", - "url": "https://wallet.chaintek.net/" - } - ] - }, - "bitcoin:FTC": { - "links": { - "Github": "https://github.com/FeatherCoin/Feathercoin", - "Homepage": "https://feathercoin.com" - }, - "marketcap_usd": 1216847, - "name": "Feathercoin", - "shortcut": "FTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-FTC", - "url": "https://github.com/Feathercoin-Foundation/electrum-ftc" - } - ] - }, - "bitcoin:GRS": { - "links": { - "Github": "https://github.com/Groestlcoin/groestlcoin", - "Homepage": "https://www.groestlcoin.org" - }, - "marketcap_usd": 35812118, - "name": "Groestlcoin", - "shortcut": "GRS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-GRS", - "url": "https://www.groestlcoin.org/groestlcoin-electrum-wallet" - } - ] - }, - "bitcoin:KMD": { - "links": { - "Github": "https://github.com/komodoplatform/komodo", - "Homepage": "https://komodoplatform.com" - }, - "marketcap_usd": 40071524, - "name": "Komodo", - "shortcut": "KMD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "AtomicDEX", - "url": "https://app.atomicdex.io/" - } - ] - }, - "bitcoin:KOTO": { - "links": { - "Github": "https://github.com/KotoDevelopers/koto", - "Homepage": "https://ko-to.org" - }, - "marketcap_usd": 0, - "name": "Koto", - "shortcut": "KOTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-KOTO", - "url": "https://electrum.kotocoin.info" - } - ] - }, - "bitcoin:LTC": { - "links": { - "Github": "https://github.com/litecoin-project/litecoin", - "Homepage": "https://litecoin.org" - }, - "marketcap_usd": 6827206762, - "name": "Litecoin", - "shortcut": "LTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "Electrum-LTC", - "url": "https://electrum-ltc.org" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "bitcoin:MONA": { - "links": { - "Github": "https://github.com/monacoinproject/monacoin", - "Homepage": "https://monacoin.org" - }, - "marketcap_usd": 32996960, - "name": "Monacoin", - "shortcut": "MONA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-MONA", - "url": "https://electrum-mona.org" - } - ] - }, - "bitcoin:NMC": { - "links": { - "Github": "https://github.com/namecoin/namecoin-core", - "Homepage": "https://namecoin.org" - }, - "marketcap_usd": 18207166, - "name": "Namecoin", - "shortcut": "NMC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "Electrum-NMC", - "url": "https://github.com/namecoin/electrum-nmc" - } - ] - }, - "bitcoin:PPC": { - "links": { - "Github": "https://github.com/peercoin/peercoin", - "Homepage": "https://peercoin.net" - }, - "marketcap_usd": 12956306, - "name": "Peercoin", - "shortcut": "PPC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [] - }, - "bitcoin:QTUM": { - "links": { - "Github": "https://github.com/qtumproject/qtum", - "Homepage": "https://qtum.org" - }, - "marketcap_usd": 349944403, - "name": "Qtum", - "shortcut": "QTUM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Qtum-Electrum", - "url": "https://github.com/qtumproject/qtum-electrum" - } - ] - }, - "bitcoin:RITO": { - "links": { - "Github": "https://github.com/RitoProject", - "Homepage": "https://ritocoin.org" - }, - "marketcap_usd": 41504, - "name": "Ritocoin", - "shortcut": "RITO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Chaintek", - "url": "https://wallet.chaintek.net/" - } - ] - }, - "bitcoin:RVN": { - "links": { - "Github": "https://github.com/RavenProject/Ravencoin", - "Homepage": "https://ravencoin.org" - }, - "marketcap_usd": 364652876, - "name": "Ravencoin", - "shortcut": "RVN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Chaintek", - "url": "https://wallet.chaintek.net/" - }, - { - "name": "Electrum-RVN", - "url": "https://github.com/traysi/electrum-raven" - } - ] - }, - "bitcoin:SMART": { - "links": { - "Github": "https://github.com/SmartCash/Core-Smart", - "Homepage": "https://smartcash.cc" - }, - "marketcap_usd": 831180, - "name": "SmartCash", - "shortcut": "SMART", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-SMART", - "url": "https://github.com/smartcash/electrum-smart" - } - ] - }, - "bitcoin:SYS": { - "links": { - "Github": "https://github.com/syscoin/syscoin", - "Homepage": "https://syscoin.org" - }, - "marketcap_usd": 135689538, - "name": "Syscoin", - "shortcut": "SYS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-SYS", - "url": "https://github.com/syscoin/electrum" - } - ] - }, - "bitcoin:UNO": { - "links": { - "Github": "https://github.com/unobtanium-official/unobtanium", - "Homepage": "https://unobtanium.uno" - }, - "marketcap_usd": 0, - "name": "Unobtanium", - "shortcut": "UNO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-UNO", - "url": "https://github.com/flurbos/electrum-uno" - } - ] - }, - "bitcoin:VIA": { - "links": { - "Github": "https://github.com/viacoin", - "Homepage": "https://viacoin.org" - }, - "marketcap_usd": 1208142, - "name": "Viacoin", - "shortcut": "VIA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Vialectrum", - "url": "https://vialectrum.org" - } - ] - }, - "bitcoin:VIPS": { - "links": { - "Github": "https://github.com/VIPSTARCOIN/VIPSTARCOIN", - "Homepage": "https://vipstarcoin.jp" - }, - "marketcap_usd": 0, - "name": "VIPSTARCOIN", - "shortcut": "VIPS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-VIPS", - "url": "https://electrum-vips.info" - } - ] - }, - "bitcoin:VTC": { - "links": { - "Github": "https://github.com/vertcoin-project/vertcoin-core", - "Homepage": "https://vertcoin.org" - }, - "marketcap_usd": 10390580, - "name": "Vertcoin", - "shortcut": "VTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "bitcoin:XPM": { - "links": { - "Github": "https://github.com/primecoin/primecoin", - "Homepage": "https://primecoin.io" - }, - "marketcap_usd": 1320490, - "name": "Primecoin", - "shortcut": "XPM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-XPM", - "url": "https://github.com/justjamesdev/electrum-xpm" - } - ] - }, - "bitcoin:XRC": { - "links": { - "Github": "https://gitlab.com/bitcoinrh/BRhodiumNode", - "Homepage": "https://xrhodium.org" - }, - "marketcap_usd": 162003, - "name": "xRhodium", - "shortcut": "XRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-XRC", - "url": "https://electrum.xrhodium.org" - } - ] - }, - "bitcoin:XSN": { - "links": { - "Github": "https://github.com/X9Developers/XSN", - "Homepage": "https://stakenet.io" - }, - "marketcap_usd": 0, - "name": "Stakenet", - "shortcut": "XSN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Stakenet", - "url": "https://xsnexplorer.io/trezor" - } - ] - }, - "bitcoin:XVG": { - "links": { - "Github": "https://github.com/vergecurrency/VERGE", - "Homepage": "https://vergecurrency.com" - }, - "marketcap_usd": 55431549, - "name": "Verge", - "shortcut": "XVG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum", - "url": "https://github.com/vergecurrency/electrum/releases" - } - ] - }, - "bitcoin:ZCR": { - "links": { - "Github": "https://github.com/zcore-coin/zcore-2.0", - "Homepage": "https://zcore.cash" - }, - "marketcap_usd": 43805, - "name": "ZCore", - "shortcut": "ZCR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Electrum-ZCR", - "url": "https://github.com/zcore-coin/electrum-wallet/" - } - ] - }, - "bitcoin:ZEC": { - "links": { - "Github": "https://github.com/zcash/zcash", - "Homepage": "https://z.cash" - }, - "marketcap_usd": 719562172, - "name": "Zcash", - "shortcut": "ZEC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "erc20:avax:USDT": { - "address": "0xde3A24028580884448a5397872046a019649b084", - "links": { - "Homepage": "https://tether.to/" - }, - "marketcap_usd": 0, - "name": "Tether", - "network": "avax", - "shortcut": "USDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:avax:WAVAX": { - "address": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", - "links": { - "Github": "https://github.com/ava-labs", - "Homepage": "https://www.avalabs.org" - }, - "marketcap_usd": 0, - "name": "Avalanche", - "network": "avax", - "shortcut": "WAVAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:etc:UNV": { - "address": "0x6ADa6F48C815689502C43eC1a59F1b5DD3C04E1F", - "links": { - "Homepage": "https://universalcoin.io/" - }, - "marketcap_usd": 0, - "name": "UniversalCoin", - "network": "etc", - "shortcut": "UNV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:etc:UVC": { - "address": "0x76d0184CF511788032A74a1FB91146e63F43dd53", - "links": { - "Homepage": "https://universalcoin.io" - }, - "marketcap_usd": 0, - "name": "UniversalCoin", - "network": "etc", - "shortcut": "UVC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:etc:UVCX": { - "address": "0xd6dF0C579f2A65049a893fDaEC9fCE098CC19F87", - "links": { - "Homepage": "https://universalcoin.io" - }, - "marketcap_usd": 0, - "name": "UniversalCoin X", - "network": "etc", - "shortcut": "UVCX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:$FFC": { - "address": "0x4E84E9e5fb0A972628Cf4568c403167EF1D40431", - "links": { - "Github": "https://github.com/Fluzcoin", - "Homepage": "https://fluzcoin.io/" - }, - "marketcap_usd": 0, - "name": "$Fluzcoin", - "network": "eth", - "shortcut": "$FFC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:$TEAK": { - "address": "0x7DD7F56D697Cc0f2b52bD55C057f378F1fE6Ab4b", - "links": { - "Homepage": "https://steak.network" - }, - "marketcap_usd": 0, - "name": "$TEAK", - "network": "eth", - "shortcut": "$TEAK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:00": { - "address": "0x881Ba05de1E78f549cC63a8f6Cabb1d4AD32250D", - "links": { - "Github": "https://github.com/p00ls/contracts", - "Homepage": "https://p00ls.io" - }, - "marketcap_usd": 0, - "name": "00 Token", - "network": "eth", - "shortcut": "00", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:0xBTC": { - "address": "0xB6eD7644C69416d67B522e20bC294A9a9B405B31", - "links": { - "Homepage": "https://0xbitcoin.org/" - }, - "marketcap_usd": 1723091, - "name": "0xBitcoin", - "network": "eth", - "shortcut": "0xBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:1SG": { - "address": "0x0F72714B35a366285Df85886A2eE174601292A17", - "links": { - "Github": "https://github.com/MarsBlockchain/1sg-contract", - "Homepage": "https://www.1.sg" - }, - "marketcap_usd": 0, - "name": "1SG", - "network": "eth", - "shortcut": "1SG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:1ST": { - "address": "0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7", - "links": { - "Homepage": "https://firstblood.io" - }, - "marketcap_usd": 0, - "name": "FirstBlood", - "network": "eth", - "shortcut": "1ST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:1WO": { - "address": "0xfDBc1aDc26F0F8f8606a5d63b7D3a3CD21c22B23", - "links": { - "Homepage": "https://ico.1worldonline.com" - }, - "marketcap_usd": 0, - "name": "1World", - "network": "eth", - "shortcut": "1WO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:300": { - "address": "0xaEc98A708810414878c3BCDF46Aad31dEd4a4557", - "links": { - "Homepage": "https://300tokensparta.com" - }, - "marketcap_usd": 0, - "name": "300 Token Sparta", - "network": "eth", - "shortcut": "300", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:3LT": { - "address": "0x430241368c1D293fdA21DBa8Bb7aF32007c59109", - "links": { - "Homepage": "https://3lt.io" - }, - "marketcap_usd": 0, - "name": "TrillionToken", - "network": "eth", - "shortcut": "3LT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:599GTO1": { - "address": "0x5D9776472483eE2c2B204775547BFf6db5A30Fed", - "links": { - "Github": "https://github.com/BitCar-io/cartokens", - "Homepage": "https://go.bitcar.io/599gto" - }, - "marketcap_usd": 0, - "name": "Ferrari 599 GTO 1", - "network": "eth", - "shortcut": "599GTO1", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:A": { - "address": "0xFFc63b9146967A1ba33066fB057EE3722221aCf0", - "links": { - "Github": "https://github.com/crypt04dvisor/AlphaWallet", - "Homepage": "https://alphaplatform.co/" - }, - "marketcap_usd": 139356, - "name": "Alpha", - "network": "eth", - "shortcut": "A", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AAVE": { - "address": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", - "links": { - "Github": "https://github.com/aave", - "Homepage": "https://aave.com/ " - }, - "marketcap_usd": 1111722344, - "name": "Aave", - "network": "eth", - "shortcut": "AAVE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ABCH": { - "address": "0xcc7d26D8eA6281BB363C8448515F2C61F7BC19F0", - "links": { - "Github": "https://github.com/ABBCCash/ABBCCashtoken", - "Homepage": "https://www.abbcfoundation.com/" - }, - "marketcap_usd": 0, - "name": "ABBC Cash", - "network": "eth", - "shortcut": "ABCH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ABDX": { - "address": "0xB348cB0638b2399aE598b5575D5c12e0F15d3690", - "links": { - "Github": "https://github.com/allbandex", - "Homepage": "https://allbandex.net/" - }, - "marketcap_usd": 0, - "name": "allbandex", - "network": "eth", - "shortcut": "ABDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ABPT": { - "address": "0xcb03bec536843D338ac138205a6689d4cDc11046", - "links": { - "Github": "https://github.com/abptcrypto", - "Homepage": "http://abptcrypto.com" - }, - "marketcap_usd": 0, - "name": "ABPT Crypto", - "network": "eth", - "shortcut": "ABPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ABT": { - "address": "0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986", - "links": { - "Homepage": "https://www.arcblock.io" - }, - "marketcap_usd": 14156469, - "name": "ArcBlock Token", - "network": "eth", - "shortcut": "ABT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ABYSS": { - "address": "0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6", - "links": { - "Github": "https://github.com/theabyssportal", - "Homepage": "https://www.theabyss.com" - }, - "marketcap_usd": 3473031, - "name": "Abyss Token", - "network": "eth", - "shortcut": "ABYSS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ACC": { - "address": "0x13F1b7FDFbE1fc66676D56483e21B1ecb40b58E2", - "links": { - "Homepage": "http://accelerator.network" - }, - "marketcap_usd": 0, - "name": "Accelerator Network", - "network": "eth", - "shortcut": "ACC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ACE": { - "address": "0x06147110022B768BA8F99A8f385df11a151A9cc8", - "links": { - "Homepage": "https://tokenstars.com/en/ace" - }, - "marketcap_usd": 0, - "name": "ACE (TokenStars)", - "network": "eth", - "shortcut": "ACE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADB": { - "address": "0x2baac9330Cf9aC479D819195794d79AD0c7616e3", - "links": { - "Homepage": "https://adbank.network" - }, - "marketcap_usd": 928468, - "name": "adbank", - "network": "eth", - "shortcut": "ADB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADC$": { - "address": "0x827Fe1736CEe36F7737Be6cF502434aF294Cf137", - "links": { - "Github": "https://github.com/africa-digital-coin-adc", - "Homepage": "http://africadigitalcoin.com" - }, - "marketcap_usd": 0, - "name": "Africa Digital Coin", - "network": "eth", - "shortcut": "ADC$", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADCO": { - "address": "0xB6c3DC857845a713d3531cea5ac546F6767992F4", - "links": { - "Github": "https://github.com/advertisecoin", - "Homepage": "https://advertisecoin.com" - }, - "marketcap_usd": 0, - "name": "Advertise Coin", - "network": "eth", - "shortcut": "ADCO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADH": { - "address": "0xE69a353b3152Dd7b706ff7dD40fe1d18b7802d31", - "links": { - "Homepage": "https://adhive.tv" - }, - "marketcap_usd": 0, - "name": "AdHive Token", - "network": "eth", - "shortcut": "ADH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADI": { - "address": "0x8810C63470d38639954c6B41AaC545848C46484a", - "links": { - "Github": "https://github.com/aditus", - "Homepage": "https://aditus.net" - }, - "marketcap_usd": 52124, - "name": "Aditus", - "network": "eth", - "shortcut": "ADI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADL": { - "address": "0x660e71483785f66133548B10f6926dC332b06e61", - "links": { - "Github": "https://github.com/adelecosystem", - "Homepage": "https://adel.io" - }, - "marketcap_usd": 0, - "name": "Adelphoi", - "network": "eth", - "shortcut": "ADL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADST": { - "address": "0x422866a8F0b032c5cf1DfBDEf31A20F4509562b0", - "links": { - "Homepage": "https://adshares.net" - }, - "marketcap_usd": 0, - "name": "AdShares", - "network": "eth", - "shortcut": "ADST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADT": { - "address": "0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD", - "links": { - "Github": "https://github.com/adchain", - "Homepage": "https://adtoken.com" - }, - "marketcap_usd": 0, - "name": "AdToken", - "network": "eth", - "shortcut": "ADT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ADX-LOYALTY": { - "address": "0xd9A4cB9dc9296e111c66dFACAb8Be034EE2E1c2C", - "links": { - "Github": "https://github.com/AdExNetwork", - "Homepage": "https://www.adex.network" - }, - "marketcap_usd": 0, - "name": "AdEx Loyalty", - "network": "eth", - "shortcut": "ADX-LOYALTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AE": { - "address": "0x5CA9a71B1d01849C0a95490Cc00559717fCF0D1d", - "links": { - "Github": "https://github.com/aeternity", - "Homepage": "https://www.aeternity.com/" - }, - "marketcap_usd": 0, - "name": "aeternity", - "network": "eth", - "shortcut": "AE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AEUR": { - "address": "0xc994a2dEb02543Db1f48688438b9903c4b305ce3", - "links": { - "Github": "https://github.com/Augmint", - "Homepage": "https://www.augmint.org" - }, - "marketcap_usd": 0, - "name": "Augmint Euro", - "network": "eth", - "shortcut": "AEUR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AFA": { - "address": "0xfB48E0DEa837f9438309a7e9F0cFe7EE3353A84e", - "links": { - "Github": "https://github.com/mdpienaar/ipparts", - "Homepage": "https://www.africahead.co.za" - }, - "marketcap_usd": 0, - "name": "Africahead Ipparts", - "network": "eth", - "shortcut": "AFA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AGI": { - "address": "0x8eB24319393716668D768dCEC29356ae9CfFe285", - "links": { - "Github": "https://github.com/singnet/singnet", - "Homepage": "https://singularitynet.io" - }, - "marketcap_usd": 0, - "name": "SingularityNET", - "network": "eth", - "shortcut": "AGI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AGRS": { - "address": "0x738865301A9b7Dd80Dc3666dD48cF034ec42bdDa", - "links": { - "Github": "https://github.com/IDNI", - "Homepage": "https://tau.net/" - }, - "marketcap_usd": 6463799, - "name": "Agoras: Currency of Tau", - "network": "eth", - "shortcut": "AGRS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AGS": { - "address": "0x7db5454F3500f28171d1f9c7a38527C9cF94e6b2", - "links": { - "Github": "https://github.com/GoldSilverStandard", - "Homepage": "https://www.goldsilverstandard.com/" - }, - "marketcap_usd": 0, - "name": "Silver Standard", - "network": "eth", - "shortcut": "AGS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AI": { - "address": "0x5121E348e897dAEf1Eef23959Ab290e5557CF274", - "links": { - "Homepage": "https://polynetwork.org" - }, - "marketcap_usd": 0, - "name": "POLY AI", - "network": "eth", - "shortcut": "AI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AID": { - "address": "0x37E8789bB9996CaC9156cD5F5Fd32599E6b91289", - "links": { - "Homepage": "https://www.aidcoin.co" - }, - "marketcap_usd": 296328, - "name": "AidCoin", - "network": "eth", - "shortcut": "AID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AION": { - "address": "0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466", - "links": { - "Github": "https://github.com/aionnetwork", - "Homepage": "https://aion.network/" - }, - "marketcap_usd": 0, - "name": "Aion", - "network": "eth", - "shortcut": "AION", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AIR": { - "address": "0x27Dce1eC4d3f72C3E457Cc50354f1F975dDEf488", - "links": { - "Homepage": "https://airtoken.com" - }, - "marketcap_usd": 0, - "name": "AirToken", - "network": "eth", - "shortcut": "AIR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AIX": { - "address": "0x1063ce524265d5a3A624f4914acd573dD89ce988", - "links": { - "Github": "https://github.com/AigangNetwork", - "Homepage": "https://aigang.network/" - }, - "marketcap_usd": 2866, - "name": "Aigang", - "network": "eth", - "shortcut": "AIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AKC": { - "address": "0x1Ca43a170BaD619322e6f54d46b57e504dB663aA", - "links": { - "Github": "https://github.com/artwook", - "Homepage": "https://artwook.com" - }, - "marketcap_usd": 0, - "name": "ARTWOOK COIN", - "network": "eth", - "shortcut": "AKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ALCO": { - "address": "0x181a63746d3Adcf356CBc73aCE22832FFBB1EE5A", - "links": { - "Homepage": "https://alaricoin.org" - }, - "marketcap_usd": 0, - "name": "ALCO", - "network": "eth", - "shortcut": "ALCO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ALEPH": { - "address": "0x27702a26126e0B3702af63Ee09aC4d1A084EF628", - "links": { - "Github": "https://github.com/aleph-im/", - "Homepage": "https://aleph.im" - }, - "marketcap_usd": 17910289, - "name": "Aleph.im", - "network": "eth", - "shortcut": "ALEPH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ALI": { - "address": "0x4289c043A12392F1027307fB58272D8EBd853912", - "links": { - "Homepage": "http://ailink.in" - }, - "marketcap_usd": 0, - "name": "AiLink Token", - "network": "eth", - "shortcut": "ALI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ALIS": { - "address": "0xEA610B1153477720748DC13ED378003941d84fAB", - "links": { - "Github": "https://github.com/AlisProject", - "Homepage": "https://alismedia.jp" - }, - "marketcap_usd": 0, - "name": "ALIS Token", - "network": "eth", - "shortcut": "ALIS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ALTA": { - "address": "0xe0cCa86B254005889aC3a81e737f56a14f4A38F5", - "links": { - "Github": "https://github.com/altafinprotocol", - "Homepage": "https://alta.finance" - }, - "marketcap_usd": 0, - "name": "Alta Finance", - "network": "eth", - "shortcut": "ALTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ALTS": { - "address": "0x638AC149eA8EF9a1286C41B977017AA7359E6Cfa", - "links": { - "Homepage": "http://www.altcoinstalks.com" - }, - "marketcap_usd": 0, - "name": "ALTS Token", - "network": "eth", - "shortcut": "ALTS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ALX": { - "address": "0x49b127Bc33ce7E1586EC28CEC6a65b112596C822", - "links": { - "Homepage": "https://alax.io" - }, - "marketcap_usd": 0, - "name": "ALAX", - "network": "eth", - "shortcut": "ALX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMB": { - "address": "0x4DC3643DbC642b72C158E7F3d2ff232df61cb6CE", - "links": { - "Github": "https://github.com/ambrosus", - "Homepage": "https://ambrosus.com/index.html" - }, - "marketcap_usd": 0, - "name": "Amber Token", - "network": "eth", - "shortcut": "AMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMGO": { - "address": "0xf1aC7A375429719DE0dde33528e2639B9a206ebA", - "links": { - "Github": "https://github.com/arenamatch", - "Homepage": "https://arenamatch.com/amg" - }, - "marketcap_usd": 0, - "name": "Arena Match Gold", - "network": "eth", - "shortcut": "AMGO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMIS": { - "address": "0x949bEd886c739f1A3273629b3320db0C5024c719", - "links": { - "Github": "https://github.com/amisolution/ERC20-AMIS", - "Homepage": "http://erc20-amis.amisolution.net" - }, - "marketcap_usd": 0, - "name": "AMIS", - "network": "eth", - "shortcut": "AMIS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMLT": { - "address": "0xCA0e7269600d353F70b14Ad118A49575455C0f2f", - "links": { - "Github": "https://github.com/amlt-by-coinfirm", - "Homepage": "https://amlt.coinfirm.io/" - }, - "marketcap_usd": 1874483, - "name": "AMLT", - "network": "eth", - "shortcut": "AMLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMN": { - "address": "0x737F98AC8cA59f2C68aD658E3C3d8C8963E40a4c", - "links": { - "Github": "https://github.com/amontech", - "Homepage": "https://amon.tech" - }, - "marketcap_usd": 227037, - "name": "Amon", - "network": "eth", - "shortcut": "AMN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMO": { - "address": "0x38c87AA89B2B8cD9B95b736e1Fa7b612EA972169", - "links": { - "Github": "https://github.com/AMO-Project/", - "Homepage": "https://amo.foundation" - }, - "marketcap_usd": 15060121, - "name": "AMO Coin", - "network": "eth", - "shortcut": "AMO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMON": { - "address": "0x00059AE69c1622A7542EdC15E8d17b060fE307b6", - "links": { - "Homepage": "https://ados.foundation/" - }, - "marketcap_usd": 709645, - "name": "Token AmonD", - "network": "eth", - "shortcut": "AMON", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMP": { - "address": "0xfF20817765cB7f73d4bde2e66e067E58D11095C2", - "links": { - "Github": "https://github.com/amptoken", - "Homepage": "https://amptoken.org" - }, - "marketcap_usd": 238924137, - "name": "Amp", - "network": "eth", - "shortcut": "AMP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMPL": { - "address": "0xD46bA6D942050d489DBd938a2C909A5d5039A161", - "links": { - "Github": "https://github.com/ampleforth", - "Homepage": "https://ampleforth.org" - }, - "marketcap_usd": 46578948, - "name": "Ampleforth", - "network": "eth", - "shortcut": "AMPL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AMTC": { - "address": "0x84936cF7630AA3e27Dd9AfF968b140d5AEE49F5a", - "links": { - "Homepage": "https://ambertime.org/" - }, - "marketcap_usd": 0, - "name": "AmberTime Coin", - "network": "eth", - "shortcut": "AMTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ANIME": { - "address": "0xc36e2C02e64585c15794B8e25E826d50b15fd878", - "links": { - "Github": "https://github.com/Animeyen", - "Homepage": "https://animeyen.com" - }, - "marketcap_usd": 0, - "name": "Animeyen", - "network": "eth", - "shortcut": "ANIME", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ANJ": { - "address": "0xcD62b1C403fa761BAadFC74C525ce2B51780b184", - "links": { - "Github": "https://github.com/aragon/aragon-court", - "Homepage": "https://anj.aragon.org/" - }, - "marketcap_usd": 0, - "name": "Aragon Network Juror", - "network": "eth", - "shortcut": "ANJ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AOA": { - "address": "0x9ab165D795019b6d8B3e971DdA91071421305e5a", - "links": { - "Homepage": "https://www.aurorachain.io" - }, - "marketcap_usd": 2078947, - "name": "Aurora", - "network": "eth", - "shortcut": "AOA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:API3": { - "address": "0x0b38210ea11411557c13457D4dA7dC6ea731B88a", - "links": { - "Github": "https://github.com/api3dao", - "Homepage": "https://api3.org/" - }, - "marketcap_usd": 124100419, - "name": "API3", - "network": "eth", - "shortcut": "API3", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:APIS": { - "address": "0x4C0fBE1BB46612915E7967d2C3213cd4d87257AD", - "links": { - "Github": "https://github.com/Oxchild/crowdsale", - "Homepage": "https://apisplatform.io" - }, - "marketcap_usd": 0, - "name": "APIS", - "network": "eth", - "shortcut": "APIS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:APPC": { - "address": "0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB", - "links": { - "Github": "https://github.com/Aptoide/AppCoins-ethereumj", - "Homepage": "https://appcoins.io" - }, - "marketcap_usd": 0, - "name": "AppCoins", - "network": "eth", - "shortcut": "APPC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:APT": { - "address": "0x23aE3C5B39B12f0693e05435EeaA1e51d8c61530", - "links": { - "Homepage": "https://aigang.network" - }, - "marketcap_usd": 0, - "name": "AIGang", - "network": "eth", - "shortcut": "APT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AQT": { - "address": "0x2a9bDCFF37aB68B95A53435ADFd8892e86084F93", - "links": { - "Github": "https://github.com/alphaquark/Alpha-Quark", - "Homepage": "https://www.alphaquark.io" - }, - "marketcap_usd": 33804550, - "name": "AlphaQuarkToken", - "network": "eth", - "shortcut": "AQT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARC": { - "address": "0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5", - "links": { - "Github": "https://github.com/swarmcity/ac-token", - "Homepage": "https://arcade.city" - }, - "marketcap_usd": 0, - "name": "Arcade Token", - "network": "eth", - "shortcut": "ARC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARCT": { - "address": "0x1245ef80F4d9e02ED9425375e8F649B9221b31D8", - "links": { - "Homepage": "https://www.arbitragect.com" - }, - "marketcap_usd": 48931, - "name": "ArbitrageCT", - "network": "eth", - "shortcut": "ARCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARD": { - "address": "0x75Aa7B0d02532f3833b66c7f0Ad35376d373ddF8", - "links": { - "Github": "https://github.com/accordtoken", - "Homepage": "https://accordtoken.com" - }, - "marketcap_usd": 0, - "name": "Accord", - "network": "eth", - "shortcut": "ARD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARE": { - "address": "0x92afBa413BF9E5DA3919A522E371884bEAC76309", - "links": { - "Github": "https://github.com/AureiProject/aurei-token", - "Homepage": "https://www.aurei-crypto.io/" - }, - "marketcap_usd": 0, - "name": "Aurei", - "network": "eth", - "shortcut": "ARE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARN": { - "address": "0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6", - "links": { - "Homepage": "https://aeron.aero" - }, - "marketcap_usd": 0, - "name": "Aeron", - "network": "eth", - "shortcut": "ARN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARNX": { - "address": "0x0C37Bcf456bC661C14D596683325623076D7e283", - "links": { - "Github": "https://github.com/aeronaero/aeron", - "Homepage": "https://aeron.aero" - }, - "marketcap_usd": 95, - "name": "Aeron", - "network": "eth", - "shortcut": "ARNX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ART": { - "address": "0xfec0cF7fE078a500abf15F1284958F22049c2C7e", - "links": { - "Homepage": "http://www.maecenas.co" - }, - "marketcap_usd": 41649, - "name": "Maecenas", - "network": "eth", - "shortcut": "ART", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARX": { - "address": "0x7705FaA34B16EB6d77Dfc7812be2367ba6B0248e", - "links": { - "Github": "https://github.com/va109/Artex", - "Homepage": "https://artex.global" - }, - "marketcap_usd": 0, - "name": "ARX", - "network": "eth", - "shortcut": "ARX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARXT": { - "address": "0xb0D926c1BC3d78064F3e1075D5bD9A24F35Ae6C5", - "links": { - "Github": "https://github.com/va109/Artex", - "Homepage": "https://aronline.io" - }, - "marketcap_usd": 0, - "name": "Assistive Reality ARX", - "network": "eth", - "shortcut": "ARXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ARY": { - "address": "0xa5F8fC0921880Cb7342368BD128eb8050442B1a1", - "links": { - "Homepage": "https://www.blockarray.com" - }, - "marketcap_usd": 0, - "name": "Block Array", - "network": "eth", - "shortcut": "ARY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AST": { - "address": "0x27054b13b1B798B345b591a4d22e6562d47eA75a", - "links": { - "Homepage": "https://airswap.io" - }, - "marketcap_usd": 19734634, - "name": "Airswap", - "network": "eth", - "shortcut": "AST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ASY": { - "address": "0x017B584AcFD16D767541aE9e80cdc702F4527B0b", - "links": { - "Github": "https://github.com/Asyagro/ASY", - "Homepage": "https://asyagro.io" - }, - "marketcap_usd": 0, - "name": "ASYAGRO", - "network": "eth", - "shortcut": "ASY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ATL": { - "address": "0x78B7FADA55A64dD895D8c8c35779DD8b67fA8a05", - "links": { - "Homepage": "https://atlant.io" - }, - "marketcap_usd": 638027, - "name": "ATLANT", - "network": "eth", - "shortcut": "ATL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ATM": { - "address": "0x9B11EFcAAA1890f6eE52C6bB7CF8153aC5d74139", - "links": { - "Homepage": "https://www.atmchain.io" - }, - "marketcap_usd": 0, - "name": "ATMChain", - "network": "eth", - "shortcut": "ATM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ATMI": { - "address": "0x97AEB5066E1A590e868b511457BEb6FE99d329F5", - "links": { - "Github": "https://github.com/atonomi", - "Homepage": "https://atonomi.io" - }, - "marketcap_usd": 0, - "name": "Atonomi", - "network": "eth", - "shortcut": "ATMI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ATT": { - "address": "0x887834D3b8D450B6bAB109c252Df3DA286d73CE4", - "links": { - "Github": "https://github.com/ATMatrix", - "Homepage": "https://atmatrix.org/?locale=en" - }, - "marketcap_usd": 0, - "name": "Atmatrix Token", - "network": "eth", - "shortcut": "ATT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ATTN": { - "address": "0x6339784d9478dA43106A429196772A029C2f177d", - "links": { - "Homepage": "https://attentionnetwork.io" - }, - "marketcap_usd": 0, - "name": "Attention Token", - "network": "eth", - "shortcut": "ATTN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ATX": { - "address": "0x1A0F2aB46EC630F9FD638029027b552aFA64b94c", - "links": { - "Homepage": "https://www.aston.company" - }, - "marketcap_usd": 0, - "name": "Aston", - "network": "eth", - "shortcut": "ATX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AUC": { - "address": "0xc12d099be31567add4e4e4d0D45691C3F58f5663", - "links": { - "Homepage": "https://auctus.org" - }, - "marketcap_usd": 141310, - "name": "Auctus", - "network": "eth", - "shortcut": "AUC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AUDIO": { - "address": "0x18aAA7115705e8be94bfFEBDE57Af9BFc265B998", - "links": { - "Github": "https://github.com/audiusproject", - "Homepage": "https://audius.co" - }, - "marketcap_usd": 323841415, - "name": "Audius", - "network": "eth", - "shortcut": "AUDIO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AURA": { - "address": "0xCdCFc0f66c522Fd086A1b725ea3c0Eeb9F9e8814", - "links": { - "Homepage": "https://auroradao.com" - }, - "marketcap_usd": 0, - "name": "Aurora DAO", - "network": "eth", - "shortcut": "AURA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AUS": { - "address": "0x5FB9E9C359CC7191b0293d2FAF1cC41cE3688D75", - "links": { - "Github": "https://github.com/GoldSilverStandard", - "Homepage": "https://www.goldsilverstandard.com/" - }, - "marketcap_usd": 0, - "name": "Gold Standard", - "network": "eth", - "shortcut": "AUS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AUTO": { - "address": "0x622dFfCc4e83C64ba959530A5a5580687a57581b", - "links": { - "Homepage": "https://cubeint.io" - }, - "marketcap_usd": 0, - "name": "Cube", - "network": "eth", - "shortcut": "AUTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AVA": { - "address": "0xeD247980396B10169BB1d36f6e278eD16700a60f", - "links": { - "Github": "https://github.com/AvalonPlatform", - "Homepage": "https://avalon.nu" - }, - "marketcap_usd": 0, - "name": "AVA", - "network": "eth", - "shortcut": "AVA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AVT": { - "address": "0x0d88eD6E74bbFD96B831231638b66C05571e824F", - "links": { - "Homepage": "https://aventus.io" - }, - "marketcap_usd": 7052932, - "name": "Aventus", - "network": "eth", - "shortcut": "AVT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AX1": { - "address": "0xCd4b4b0F3284a33AC49C67961EC6e111708318Cf", - "links": { - "Github": "https://github.com/Pickeringwareltd/AX1_v1.03", - "Homepage": "https://ax1.io" - }, - "marketcap_usd": 0, - "name": "AX1 Mining Token", - "network": "eth", - "shortcut": "AX1", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AXN": { - "address": "0x71F85B2E46976bD21302B64329868fd15eb0D127", - "links": { - "Github": "https://github.com/Axion-Network", - "Homepage": "https://axion.network/" - }, - "marketcap_usd": 0, - "name": "Axion", - "network": "eth", - "shortcut": "AXN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AXP": { - "address": "0x9af2c6B1A28D3d6BC084bd267F70e90d49741D5B", - "links": { - "Homepage": "https://www.axpire.io/" - }, - "marketcap_usd": 0, - "name": "AXP", - "network": "eth", - "shortcut": "AXP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AXPR": { - "address": "0xC39E626A04C5971D770e319760D7926502975e47", - "links": { - "Github": "https://www.github.com/axpire", - "Homepage": "https://www.axpire.io" - }, - "marketcap_usd": 0, - "name": "aXpire", - "network": "eth", - "shortcut": "AXPR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:AXS": { - "address": "0xBB0E17EF65F82Ab018d8EDd776e8DD940327B28b", - "links": { - "Github": "https://github.com/axieinfinity", - "Homepage": "https://axieinfinity.com/" - }, - "marketcap_usd": 1098056194, - "name": "Axie Infinity Shards", - "network": "eth", - "shortcut": "AXS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:B2BX": { - "address": "0x5d51FCceD3114A8bb5E90cDD0f9d682bCbCC5393", - "links": { - "Homepage": "https://www.b2bx.exchange" - }, - "marketcap_usd": 0, - "name": "B2BX", - "network": "eth", - "shortcut": "B2BX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BAC": { - "address": "0x062e3Be6a7C56A395b1881A0cD69A4923Ade4fa2", - "links": { - "Github": "https://github.com/bowlacoin", - "Homepage": "https://bowlacoin.com" - }, - "marketcap_usd": 0, - "name": "Bowl A Coin", - "network": "eth", - "shortcut": "BAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BAL": { - "address": "0xba100000625a3754423978a60c9317c58a424e3D", - "links": { - "Github": "https://github.com/balancer-labs", - "Homepage": "https://balancer.finance" - }, - "marketcap_usd": 329982207, - "name": "Balancer", - "network": "eth", - "shortcut": "BAL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BALI": { - "address": "0x013A06558f07d9E6F9A00c95a33f3a0E0255176b", - "links": { - "Github": "https://github.com/adamyusfan/balicoin", - "Homepage": "https://balicoin.io/" - }, - "marketcap_usd": 0, - "name": "BALI COIN", - "network": "eth", - "shortcut": "BALI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BAMBOO": { - "address": "0xf56842Af3B56Fd72d17cB103f92d027bBa912e89", - "links": { - "Github": "https://github.com/bamboo-defi", - "Homepage": "https://www.bamboodefi.com/" - }, - "marketcap_usd": 0, - "name": "BambooDeFi", - "network": "eth", - "shortcut": "BAMBOO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BANCA": { - "address": "0x998b3B82bC9dBA173990Be7afb772788B5aCB8Bd", - "links": { - "Homepage": "https://www.banca.world" - }, - "marketcap_usd": 152329, - "name": "Banca", - "network": "eth", - "shortcut": "BANCA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BANX": { - "address": "0xF87F0D9153fea549c728Ad61cb801595a68b73de", - "links": { - "Homepage": "https://pre.ubanx.io" - }, - "marketcap_usd": 0, - "name": "BANX", - "network": "eth", - "shortcut": "BANX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BAR": { - "address": "0xc73f2474001aD1D6aEd615aF53631148CF98dE6b", - "links": { - "Github": "https://github.com/BillonareAmbitionToken", - "Homepage": "http://billionareambition.com" - }, - "marketcap_usd": 0, - "name": "Billionaire Ambition", - "network": "eth", - "shortcut": "BAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BAT": { - "address": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", - "links": { - "Homepage": "https://basicattentiontoken.org" - }, - "marketcap_usd": 442713735, - "name": "Basic Attention Token", - "network": "eth", - "shortcut": "BAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BAX": { - "address": "0x9a0242b7a33DAcbe40eDb927834F96eB39f8fBCB", - "links": { - "Homepage": "https://getbabb.com" - }, - "marketcap_usd": 0, - "name": "BABB", - "network": "eth", - "shortcut": "BAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BBC": { - "address": "0xe7D3e4413E29ae35B0893140F4500965c74365e5", - "links": { - "Homepage": "http://bbcoin.tradove.com" - }, - "marketcap_usd": 0, - "name": "TraDove B2BCoin", - "network": "eth", - "shortcut": "BBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BBK": { - "address": "0x4a6058666cf1057eaC3CD3A5a614620547559fc9", - "links": { - "Github": "https://github.com/brickblock-io", - "Homepage": "https://www.brickblock.io/" - }, - "marketcap_usd": 0, - "name": "BRICKBLOCK TOKEN", - "network": "eth", - "shortcut": "BBK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BBN": { - "address": "0x35a69642857083BA2F30bfaB735dacC7F0bac969", - "links": { - "Homepage": "http://www.banyanbbt.org" - }, - "marketcap_usd": 0, - "name": "Banyan Network", - "network": "eth", - "shortcut": "BBN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BBO": { - "address": "0x84F7c44B6Fed1080f647E354D552595be2Cc602F", - "links": { - "Homepage": "https://bigbom.com" - }, - "marketcap_usd": 0, - "name": "Bigbom", - "network": "eth", - "shortcut": "BBO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BC": { - "address": "0x2ecB13A8c458c379c4d9a7259e202De03c8F3D19", - "links": { - "Homepage": "https://block-chain.com" - }, - "marketcap_usd": 0, - "name": "Block-Chain.com", - "network": "eth", - "shortcut": "BC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BCASH": { - "address": "0xb5BB48567BfD0bFE9e4B08EF8b7f91556CC2a112", - "links": { - "Homepage": "https://bankcoinbcash.com" - }, - "marketcap_usd": 0, - "name": "Bankcoin", - "network": "eth", - "shortcut": "BCASH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BCBC": { - "address": "0x7367A68039d4704f30BfBF6d948020C3B07DFC59", - "links": { - "Github": "https://github.com/beerchain/beercoin", - "Homepage": "https://www.beerchain.technology" - }, - "marketcap_usd": 0, - "name": "Beercoin", - "network": "eth", - "shortcut": "BCBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BCDN": { - "address": "0x1e797Ce986C3CFF4472F7D38d5C4aba55DfEFE40", - "links": { - "Github": "https://github.com/Blockcdnteam", - "Homepage": "https://www.blockcdn.org" - }, - "marketcap_usd": 0, - "name": "BlockCDN", - "network": "eth", - "shortcut": "BCDN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BCDT": { - "address": "0xAcfa209Fb73bF3Dd5bBfb1101B9Bc999C49062a5", - "links": { - "Github": "https://github.com/VinceBCD/BCDiploma", - "Homepage": "https://www.bcdiploma.com" - }, - "marketcap_usd": 2474009, - "name": "Blockchain Certified Data Token", - "network": "eth", - "shortcut": "BCDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BCL": { - "address": "0xbc1234552EBea32B5121190356bBa6D3Bb225bb5", - "links": { - "Homepage": "https://www.bitclave.com" - }, - "marketcap_usd": 0, - "name": "BCL", - "network": "eth", - "shortcut": "BCL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BCMC1": { - "address": "0xD5e2A54Fef5f9E4A6b21EC646Bbed7A160a00F18", - "links": { - "Homepage": "https://beforecoinmarketcap.com/" - }, - "marketcap_usd": 0, - "name": "BeforeCoinMarketCap", - "network": "eth", - "shortcut": "BCMC1", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BCPT": { - "address": "0x1c4481750daa5Ff521A2a7490d9981eD46465Dbd", - "links": { - "Github": "https://github.com/blockmason", - "Homepage": "https://blockmason.io" - }, - "marketcap_usd": 285234, - "name": "BlockMason Credit Protocol Token", - "network": "eth", - "shortcut": "BCPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BCV": { - "address": "0x1014613E2B3CBc4d575054D4982E580d9b99d7B1", - "links": { - "Github": "https://github.com/bitcv", - "Homepage": "https://bitcv.one/" - }, - "marketcap_usd": 0, - "name": "BitCapitalVendor Token", - "network": "eth", - "shortcut": "BCV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BDG": { - "address": "0x1961B3331969eD52770751fC718ef530838b6dEE", - "links": { - "Github": "https://github.com/bitdegree", - "Homepage": "https://bitdegree.org" - }, - "marketcap_usd": 0, - "name": "BitDegree Token", - "network": "eth", - "shortcut": "BDG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BEAR": { - "address": "0x016ee7373248a80BDe1fD6bAA001311d233b3CFa", - "links": { - "Homepage": "https://ftx.com/tokens/BEAR" - }, - "marketcap_usd": 0, - "name": "3X Short Bitcoin Token", - "network": "eth", - "shortcut": "BEAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BEE": { - "address": "0x4D8fc1453a0F359e99c9675954e656D80d996FbF", - "links": { - "Github": "https://github.com/thebeetoken", - "Homepage": "https://www.beetoken.com" - }, - "marketcap_usd": 0, - "name": "Bee Token", - "network": "eth", - "shortcut": "BEE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BEFX": { - "address": "0xB91C2a2b953D72f3EF890490669a0A41B0ADD5f7", - "links": { - "Github": "https://github.com/Belifex", - "Homepage": "https://belifex.com/" - }, - "marketcap_usd": 0, - "name": "Belifex", - "network": "eth", - "shortcut": "BEFX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BERRY": { - "address": "0x6aEB95F06CDA84cA345c2dE0F3B7f96923a44f4c", - "links": { - "Github": "https://github.com/Rentberry", - "Homepage": "https://rentberry.com" - }, - "marketcap_usd": 107070, - "name": "Berry", - "network": "eth", - "shortcut": "BERRY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BET": { - "address": "0x8aA33A7899FCC8eA5fBe6A608A109c3893A1B8b2", - "links": { - "Github": "https://github.com/daocasino", - "Homepage": "https://dao.casino" - }, - "marketcap_usd": 0, - "name": "DAO.Casino", - "network": "eth", - "shortcut": "BET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BETHER": { - "address": "0x14C926F2290044B647e1Bf2072e67B495eff1905", - "links": { - "Github": "https://github.com/bethereumproject", - "Homepage": "https://www.bethereum.com/" - }, - "marketcap_usd": 0, - "name": "Bethereum", - "network": "eth", - "shortcut": "BETHER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BETR": { - "address": "0x763186eB8d4856D536eD4478302971214FEbc6A9", - "links": { - "Github": "https://github.com/betterbetting", - "Homepage": "https://www.betterbetting.org" - }, - "marketcap_usd": 0, - "name": "BetterBetting", - "network": "eth", - "shortcut": "BETR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BEZ": { - "address": "0x3839d8ba312751Aa0248fEd6a8bACB84308E20Ed", - "links": { - "Homepage": "https://bezop.io" - }, - "marketcap_usd": 0, - "name": "Bezop", - "network": "eth", - "shortcut": "BEZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BFT": { - "address": "0x01fF50f8b7f74E4f00580d9596cd3D0d6d6E326f", - "links": { - "Homepage": "https://bnktothefuture.com" - }, - "marketcap_usd": 3387108, - "name": "BnkToTheFuture", - "network": "eth", - "shortcut": "BFT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BHPC": { - "address": "0xEE74110fB5A1007b06282e0DE5d73A61bf41d9Cd", - "links": { - "Homepage": "https://bhpcash.io/bhpc/index.html" - }, - "marketcap_usd": 0, - "name": "BHPCash", - "network": "eth", - "shortcut": "BHPC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BHR": { - "address": "0xfe5D908c9Ad85f651185dAa6a4770726E2b27d09", - "links": { - "Homepage": "https://www.bether.cc" - }, - "marketcap_usd": 0, - "name": "BETHER", - "network": "eth", - "shortcut": "BHR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BID": { - "address": "0x25e1474170c4c0aA64fa98123bdc8dB49D7802fa", - "links": { - "Homepage": "https://bidaochain.com/" - }, - "marketcap_usd": 0, - "name": "Bidao", - "network": "eth", - "shortcut": "BID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BIT": { - "address": "0x089B85FA15f72c1088CBbef23a49DB80B91DD521", - "links": { - "Homepage": "https://www.blockestate.net" - }, - "marketcap_usd": 0, - "name": "BlockEstate Investment Token", - "network": "eth", - "shortcut": "BIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BITCAR": { - "address": "0x08b4c866aE9D1bE56a06e0C302054B4FFe067b43", - "links": { - "Github": "https://github.com/BitCar-io/BitCarToken", - "Homepage": "https://bitcar.io/" - }, - "marketcap_usd": 0, - "name": "BitCar Token", - "network": "eth", - "shortcut": "BITCAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BITX": { - "address": "0xff2b3353c3015E9f1FBF95B9Bda23F58Aa7cE007", - "links": { - "Github": "https://github.com/BitScreenerTech", - "Homepage": "https://tokensale.bitscreener.com/" - }, - "marketcap_usd": 0, - "name": "Token BitScreenerToken", - "network": "eth", - "shortcut": "BITX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BIX": { - "address": "0xb3104b4B9Da82025E8b9F8Fb28b3553ce2f67069", - "links": { - "Homepage": "https://www.bibox.com" - }, - "marketcap_usd": 0, - "name": "Bibox Token", - "network": "eth", - "shortcut": "BIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BKC": { - "address": "0xc88Be04c809856B75E3DfE19eB4dCf0a3B15317a", - "links": { - "Homepage": "https://bankcoin-cash.com/" - }, - "marketcap_usd": 0, - "name": "Bankcoin Cash", - "network": "eth", - "shortcut": "BKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BKN": { - "address": "0xBeE6EDF5fa7e862ed2eA9b9f42cb0849184aAE85", - "links": { - "Github": "https://github.com/blockstatecom", - "Homepage": "https://blockstate.com" - }, - "marketcap_usd": 0, - "name": "BlockState Security Token", - "network": "eth", - "shortcut": "BKN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BKRx": { - "address": "0x3cf9E0c385a5ABEC9FD2a71790AA344C4e8E3570", - "links": { - "Homepage": "https://www.blockrx.com" - }, - "marketcap_usd": 0, - "name": "BlockRx", - "network": "eth", - "shortcut": "BKRx", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BKX": { - "address": "0x45245bc59219eeaAF6cD3f382e078A461FF9De7B", - "links": { - "Github": "https://github.com/BankEx", - "Homepage": "https://bankex.com/" - }, - "marketcap_usd": 0, - "name": "BANKEX", - "network": "eth", - "shortcut": "BKX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BLN": { - "address": "0xCA29db4221c111888a7e80b12eAc8a266Da3Ee0d", - "links": { - "Homepage": "http://bolenum.com" - }, - "marketcap_usd": 0, - "name": "Bolenum", - "network": "eth", - "shortcut": "BLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BLO": { - "address": "0x1C3BB10dE15C31D5DBE48fbB7B87735d1B7d8c32", - "links": { - "Github": "https://github.com/blondcoin", - "Homepage": "http://blondcoin.com" - }, - "marketcap_usd": 0, - "name": "BLONDCOIN", - "network": "eth", - "shortcut": "BLO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BLT": { - "address": "0x107c4504cd79C5d2696Ea0030a8dD4e92601B82e", - "links": { - "Github": "https://github.com/hellobloom", - "Homepage": "https://hellobloom.io" - }, - "marketcap_usd": 3006871, - "name": "Bloom", - "network": "eth", - "shortcut": "BLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BLUE": { - "address": "0x539EfE69bCDd21a83eFD9122571a64CC25e0282b", - "links": { - "Github": "https://github.com/BlueCrypto", - "Homepage": "https://blueprotocol.com/" - }, - "marketcap_usd": 234732, - "name": "Ethereum Blue", - "network": "eth", - "shortcut": "BLUE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BLX (Bullion)": { - "address": "0xcE59d29b09aAE565fEEEf8E52f47c3CD5368C663", - "links": { - "Github": "https://github.com/bullioncoin", - "Homepage": "http://www.bullioncrypto.info" - }, - "marketcap_usd": 0, - "name": "Bullion Crypto", - "network": "eth", - "shortcut": "BLX (Bullion)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BLX (Iconomi)": { - "address": "0xE5a7c12972f3bbFe70ed29521C8949b8Af6a0970", - "links": { - "Homepage": "https://www.iconomi.net" - }, - "marketcap_usd": 0, - "name": "Iconomi", - "network": "eth", - "shortcut": "BLX (Iconomi)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BLZ": { - "address": "0x5732046A883704404F284Ce41FfADd5b007FD668", - "links": { - "Homepage": "https://bluzelle.com" - }, - "marketcap_usd": 40249218, - "name": "Bluzelle", - "network": "eth", - "shortcut": "BLZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BMT": { - "address": "0xf028ADEe51533b1B47BEaa890fEb54a457f51E89", - "links": { - "Github": "https://github.com/BMChain/BMChain-Token-Distribution-Interface", - "Homepage": "https://bmchain.io" - }, - "marketcap_usd": 0, - "name": "BMT", - "network": "eth", - "shortcut": "BMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BMX": { - "address": "0x986EE2B944c42D017F52Af21c4c69B84DBeA35d8", - "links": { - "Homepage": "https://www.bitmart.com" - }, - "marketcap_usd": 18049390, - "name": "BitMart Token", - "network": "eth", - "shortcut": "BMX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BNB": { - "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", - "links": { - "Homepage": "https://www.binance.com" - }, - "marketcap_usd": 0, - "name": "Binance Coin", - "network": "eth", - "shortcut": "BNB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BNN": { - "address": "0xDA80B20038BDF968C7307BB5907A469482CF6251", - "links": { - "Homepage": "https://www.brokerneko.com" - }, - "marketcap_usd": 0, - "name": "BrokerNekoNetwork", - "network": "eth", - "shortcut": "BNN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BNP": { - "address": "0xD27D76A1bA55ce5C0291CCd04feBBe793D22ebF4", - "links": { - "Github": "https://github.com/benepit/ERCContracts?from=groupmessage&isappinstalled=0", - "Homepage": "https://www.benepit.io" - }, - "marketcap_usd": 0, - "name": "Benepit Token", - "network": "eth", - "shortcut": "BNP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BNT": { - "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", - "links": { - "Github": "https://github.com/bancorprotocol", - "Homepage": "https://www.bancor.network" - }, - "marketcap_usd": 74533517, - "name": "Bancor Network Token", - "network": "eth", - "shortcut": "BNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BNTY": { - "address": "0xd2d6158683aeE4Cc838067727209a0aAF4359de3", - "links": { - "Homepage": "https://bounty0x.io" - }, - "marketcap_usd": 148222, - "name": "Bounty0x Token", - "network": "eth", - "shortcut": "BNTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BOB": { - "address": "0xDF347911910b6c9A4286bA8E2EE5ea4a39eB2134", - "links": { - "Homepage": "https://bobsrepair.com" - }, - "marketcap_usd": 710785, - "name": "Bob's repair", - "network": "eth", - "shortcut": "BOB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BOK": { - "address": "0x27C743954bCe1Bfaef8bcbD685527531001D88D7", - "links": { - "Homepage": "https://www.blockium.io/" - }, - "marketcap_usd": 0, - "name": "Blockium", - "network": "eth", - "shortcut": "BOK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BOL": { - "address": "0xEfE98765Da3824eF4a5358bA798cec87c13D8C62", - "links": { - "Github": "https://github.com/freight-chain", - "Homepage": "http://www.freighttrust.com" - }, - "marketcap_usd": 0, - "name": "Freight Trust Protocol", - "network": "eth", - "shortcut": "BOL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BOLT": { - "address": "0x9F235D23354857EfE6c541dB92a9eF1877689BCB", - "links": { - "Homepage": "https://www.bolt.global" - }, - "marketcap_usd": 0, - "name": "BOLT Token", - "network": "eth", - "shortcut": "BOLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BON": { - "address": "0xCc34366E3842cA1BD36c1f324d15257960fCC801", - "links": { - "Homepage": "https://bonpay.com" - }, - "marketcap_usd": 7918, - "name": "Bonpay", - "network": "eth", - "shortcut": "BON", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BOP": { - "address": "0x7F1E2C7d6A69bf34824D72C53B4550E895C0D8C2", - "links": { - "Homepage": "https://blockoptions.io" - }, - "marketcap_usd": 0, - "name": "BlockOptiopns Token", - "network": "eth", - "shortcut": "BOP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BOU": { - "address": "0xC2C63F23ec5E97efbD7565dF9Ec764FDc7d4e91d", - "links": { - "Homepage": "https://www.boule.one" - }, - "marketcap_usd": 0, - "name": "Boule Coin", - "network": "eth", - "shortcut": "BOU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BOUTS": { - "address": "0x139d9397274bb9E2C29A9aa8Aa0b5874d30D62E3", - "links": { - "Homepage": "https://www.bouts.pro" - }, - "marketcap_usd": 13777, - "name": "BoutsPro", - "network": "eth", - "shortcut": "BOUTS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BOXX": { - "address": "0x780116D91E5592E58a3b3c76A351571b39abCEc6", - "links": { - "Homepage": "https://www.goblockparty.com" - }, - "marketcap_usd": 0, - "name": "BOXX Token [Blockparty]", - "network": "eth", - "shortcut": "BOXX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BPF": { - "address": "0x5197FBE1a86679FF1360E27862BF88B0c5119BD8", - "links": { - "Github": "https://github.com/bitpif", - "Homepage": "https://bitpif.com" - }, - "marketcap_usd": 0, - "name": "BITPIF", - "network": "eth", - "shortcut": "BPF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BPT": { - "address": "0x327682779bAB2BF4d1337e8974ab9dE8275A7Ca8", - "links": { - "Github": "https://github.com/Blockport/tokensale", - "Homepage": "https://blockport.io" - }, - "marketcap_usd": 0, - "name": "Blockport Token", - "network": "eth", - "shortcut": "BPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BQX": { - "address": "0x5Af2Be193a6ABCa9c8817001F45744777Db30756", - "links": { - "Homepage": "https://www.bitquence.com" - }, - "marketcap_usd": 0, - "name": "Bitquence", - "network": "eth", - "shortcut": "BQX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BRAT": { - "address": "0x9E77D5a1251b6F7D456722A6eaC6D2d5980bd891", - "links": { - "Homepage": "http://bro-consortium.io" - }, - "marketcap_usd": 0, - "name": "BROTHER", - "network": "eth", - "shortcut": "BRAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BRD": { - "address": "0x558EC3152e2eb2174905cd19AeA4e34A23DE9aD6", - "links": { - "Github": "https://github.com/breadwallet", - "Homepage": "https://token.breadapp.com/en" - }, - "marketcap_usd": 544089, - "name": "Bread", - "network": "eth", - "shortcut": "BRD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BRLN": { - "address": "0x80046305aaab08F6033b56a360c184391165dc2d", - "links": { - "Homepage": "https://berlin.bounties.network" - }, - "marketcap_usd": 0, - "name": "Berlin Coin", - "network": "eth", - "shortcut": "BRLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BRP": { - "address": "0xB22c2786a549B008517B67625f5296E8fAf9589e", - "links": { - "Homepage": "https://bitherstock.io" - }, - "marketcap_usd": 0, - "name": "Rental Processor Token", - "network": "eth", - "shortcut": "BRP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BRUH": { - "address": "0xe6D2a9fCD946E07826C6cdd919DA04763eA4D812", - "links": { - "Github": "https://github.com/bruhtokeno/bruhtokeno", - "Homepage": "https://bruhcrypto.org" - }, - "marketcap_usd": 0, - "name": "Bruh", - "network": "eth", - "shortcut": "BRUH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BRX": { - "address": "0x3A4A0D5b8dfAcd651EE28ed4fFEBf91500345489", - "links": { - "Github": "https://github.com/Filinomus/BerryX", - "Homepage": "https://polar-berry.com" - }, - "marketcap_usd": 0, - "name": "BerryX", - "network": "eth", - "shortcut": "BRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BSDC": { - "address": "0xF26ef5E0545384b7Dcc0f297F2674189586830DF", - "links": { - "Github": "https://github.com/BitsIdea/BitsIdea", - "Homepage": "http://bitsidea.org" - }, - "marketcap_usd": 0, - "name": "BSDC", - "network": "eth", - "shortcut": "BSDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BST": { - "address": "0x509A38b7a1cC0dcd83Aa9d06214663D9eC7c7F4a", - "links": { - "Homepage": "https://blocksquare.io" - }, - "marketcap_usd": 0, - "name": "BlocksquareToken", - "network": "eth", - "shortcut": "BST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTC++": { - "address": "0x0327112423F3A68efdF1fcF402F6c5CB9f7C33fd", - "links": { - "Github": "https://github.com/pie-dao", - "Homepage": "https://piedao.org" - }, - "marketcap_usd": 0, - "name": "PieDAO BTC++", - "network": "eth", - "shortcut": "BTC++", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTCE": { - "address": "0x0886949c1b8C412860c4264Ceb8083d1365e86CF", - "links": { - "Homepage": "https://btcetoken.com" - }, - "marketcap_usd": 0, - "name": "EthereumBitcoin", - "network": "eth", - "shortcut": "BTCE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTCL": { - "address": "0x5acD19b9c91e596b1f062f18e3D02da7eD8D1e50", - "links": { - "Homepage": "http://btclite.org" - }, - "marketcap_usd": 0, - "name": "BTC Lite", - "network": "eth", - "shortcut": "BTCL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTCONE": { - "address": "0x87f5E8c3425218837f3CB67dB941aF0C01323E56", - "links": { - "Homepage": "https://www.bitcoinone.io" - }, - "marketcap_usd": 0, - "name": "BitCoin One", - "network": "eth", - "shortcut": "BTCONE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTE": { - "address": "0x73dD069c299A5d691E9836243BcaeC9c8C1D8734", - "links": { - "Github": "https://github.com/bitcoineum/Sharkpool", - "Homepage": "http://bitcoineum.com/miner" - }, - "marketcap_usd": 0, - "name": "BTE", - "network": "eth", - "shortcut": "BTE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTH": { - "address": "0xFAd572db566E5234AC9Fc3d570c4EdC0050eAA92", - "links": { - "Homepage": "https://www.bytether.com" - }, - "marketcap_usd": 0, - "name": "Bytether", - "network": "eth", - "shortcut": "BTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTHR": { - "address": "0xa02e3bB9cEbc03952601B3724B4940e0845BeBcf", - "links": { - "Github": "https://github.com/bethereumproject", - "Homepage": "https://www.bethereum.com/" - }, - "marketcap_usd": 0, - "name": "Bethereum", - "network": "eth", - "shortcut": "BTHR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTK": { - "address": "0xdb8646F5b487B5Dd979FAC618350e85018F557d4", - "links": { - "Github": "https://github.com/bitcoin-token", - "Homepage": "https://btk.community" - }, - "marketcap_usd": 0, - "name": "Bitcoin Token", - "network": "eth", - "shortcut": "BTK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTM": { - "address": "0xcB97e65F07DA24D46BcDD078EBebd7C6E6E3d750", - "links": { - "Github": "https://github.com/bytom", - "Homepage": "https://bytom.io" - }, - "marketcap_usd": 0, - "name": "Bytom", - "network": "eth", - "shortcut": "BTM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTNG": { - "address": "0xD6b107D3E45B959B6d13FAF1bb2a2CF8fC7025e6", - "links": { - "Github": "https://github.com/bitnexglobal", - "Homepage": "https://bitnexglobal.com" - }, - "marketcap_usd": 0, - "name": "Bitnex Global", - "network": "eth", - "shortcut": "BTNG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTO": { - "address": "0x36905Fc93280f52362A1CBAB151F25DC46742Fb5", - "links": { - "Homepage": "https://www.bottos.org" - }, - "marketcap_usd": 464164, - "name": "Bottos", - "network": "eth", - "shortcut": "BTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTP": { - "address": "0x20900587e569E3D0B2609BCa6Fb3469765ed0920", - "links": { - "Github": "https://github.com/bitmarketnews", - "Homepage": "http://bitmarket.news" - }, - "marketcap_usd": 0, - "name": "Bitpoint", - "network": "eth", - "shortcut": "BTP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTQ": { - "address": "0x16B0E62aC13a2fAeD36D18bce2356d25Ab3CfAD3", - "links": { - "Homepage": "https://thebtcbtq.com" - }, - "marketcap_usd": 0, - "name": "Bitcoin Boutique", - "network": "eth", - "shortcut": "BTQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTRN": { - "address": "0x03C780cD554598592B97b7256dDAad759945b125", - "links": { - "Homepage": "https://biotron.io" - }, - "marketcap_usd": 0, - "name": "Biotron", - "network": "eth", - "shortcut": "BTRN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTU": { - "address": "0xb683D83a532e2Cb7DFa5275eED3698436371cc9f", - "links": { - "Github": "https://github.com/btuprotocol", - "Homepage": "https://btu-protocol.com" - }, - "marketcap_usd": 0, - "name": "BTU Protocol", - "network": "eth", - "shortcut": "BTU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BTY": { - "address": "0x9eecec130fb665d03a37289ee34C818Ee7F79926", - "links": { - "Github": "https://github.com/betty365", - "Homepage": "https://betty365.org" - }, - "marketcap_usd": 0, - "name": "BETTY", - "network": "eth", - "shortcut": "BTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BUC": { - "address": "0xCa3c18a65b802eC267f8f4802545e7F53D24C75e", - "links": { - "Homepage": "https://beeunity.org" - }, - "marketcap_usd": 0, - "name": "BeeUnity Chain", - "network": "eth", - "shortcut": "BUC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BUSD": { - "address": "0x4Fabb145d64652a948d72533023f6E7A623C7C53", - "links": { - "Github": "https://github.com/paxosglobal/busd-contract", - "Homepage": "https://www.paxos.com/busd" - }, - "marketcap_usd": 10638728787, - "name": "Binance USD (BUSD)", - "network": "eth", - "shortcut": "BUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BWN": { - "address": "0x51a4F65463597CA4609C9a90eA3D5ab219Fbc85D", - "links": { - "Github": "https://github.com/Bitwings", - "Homepage": "https://bitwings.org/" - }, - "marketcap_usd": 0, - "name": "Bitwings", - "network": "eth", - "shortcut": "BWN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BWX": { - "address": "0xbD168CbF9d3a375B38dC51A202B5E8a4E52069Ed", - "links": { - "Homepage": "https://www.bluewhale.foundation" - }, - "marketcap_usd": 0, - "name": "Blue Whale Token", - "network": "eth", - "shortcut": "BWX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BZ": { - "address": "0x4375E7aD8A01B8eC3Ed041399f62D9Cd120e0063", - "links": { - "Homepage": "https://www.bitz.com" - }, - "marketcap_usd": 0, - "name": "Bit-Z Token", - "network": "eth", - "shortcut": "BZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:BZNT": { - "address": "0xE1Aee98495365fc179699C1bB3E761FA716beE62", - "links": { - "Homepage": "https://bezant.io" - }, - "marketcap_usd": 328936, - "name": "Bezant", - "network": "eth", - "shortcut": "BZNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:C10": { - "address": "0x000C100050E98C91f9114fa5Dd75CE6869Bf4F53", - "links": { - "Github": "https://github.com/invictuscapital", - "Homepage": "https://invictuscapital.com/crypto10hedged" - }, - "marketcap_usd": 0, - "name": "Token CRYPTO10 Hedged", - "network": "eth", - "shortcut": "C10", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:C20": { - "address": "0x26E75307Fc0C021472fEb8F727839531F112f317", - "links": { - "Github": "https://github.com/cryptotwenty", - "Homepage": "https://crypto20.com" - }, - "marketcap_usd": 1040095, - "name": "Crypto20's Token", - "network": "eth", - "shortcut": "C20", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:C8": { - "address": "0xd42debE4eDc92Bd5a3FBb4243e1ecCf6d63A4A5d", - "links": { - "Homepage": "https://www.carboneum.io" - }, - "marketcap_usd": 0, - "name": "Carboneum", - "network": "eth", - "shortcut": "C8", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CAG": { - "address": "0x7d4b8Cce0591C9044a22ee543533b72E976E36C3", - "links": { - "Homepage": "https://change-bank.com" - }, - "marketcap_usd": 0, - "name": "Change Bank", - "network": "eth", - "shortcut": "CAG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CALL": { - "address": "0xBbe761EA1447A20b75aA485b7BCad4837415d7D7", - "links": { - "Github": "https://github.com/Global-Crypto-Alliance/call-token", - "Homepage": "https://gcalliance.io" - }, - "marketcap_usd": 0, - "name": "CALL token", - "network": "eth", - "shortcut": "CALL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CAN": { - "address": "0x1d462414fe14cf489c7A21CaC78509f4bF8CD7c0", - "links": { - "Homepage": "https://canya.io" - }, - "marketcap_usd": 0, - "name": "CanYaCoin", - "network": "eth", - "shortcut": "CAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CAPP": { - "address": "0x04F2E7221fdb1B52A68169B25793E51478fF0329", - "links": { - "Homepage": "https://cappasity.com/tech/" - }, - "marketcap_usd": 0, - "name": "Cappasity", - "network": "eth", - "shortcut": "CAPP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CARB": { - "address": "0xA517a46Baad6B054A76bD19c46844f717fe69fea", - "links": { - "Homepage": "https://carbcoin.eu/" - }, - "marketcap_usd": 0, - "name": "CarbCoin", - "network": "eth", - "shortcut": "CARB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CARCO": { - "address": "0x2108E62D335Bbdc89eC3E9d8582F18DCFB0cDFf4", - "links": { - "Homepage": "https://carcohub.com" - }, - "marketcap_usd": 0, - "name": "CARCO", - "network": "eth", - "shortcut": "CARCO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CARE": { - "address": "0xbF18F246B9301F231e9561B35A3879769BB46375", - "links": { - "Homepage": "https://tombcare.com/" - }, - "marketcap_usd": 0, - "name": "Token CARE", - "network": "eth", - "shortcut": "CARE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CBC": { - "address": "0x26DB5439F651CAF491A87d48799dA81F191bDB6b", - "links": { - "Homepage": "https://coin.cashbet.com" - }, - "marketcap_usd": 1412688, - "name": "CashBet Coin", - "network": "eth", - "shortcut": "CBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CBIX": { - "address": "0x05C3617cBf1304b9260AA61ec960F115D67beCEA", - "links": { - "Github": "https://github.com/Cubrixio", - "Homepage": "https://cubrix.io" - }, - "marketcap_usd": 0, - "name": "Cubrix", - "network": "eth", - "shortcut": "CBIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CBT": { - "address": "0x076C97e1c869072eE22f8c91978C99B4bcB02591", - "links": { - "Homepage": "https://www.commerceblock.com" - }, - "marketcap_usd": 0, - "name": "CommerceBlock", - "network": "eth", - "shortcut": "CBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CC3": { - "address": "0xc166038705FFBAb3794185b3a9D925632A1DF37D", - "links": { - "Homepage": "https://coalcoin.tech/en" - }, - "marketcap_usd": 0, - "name": "Coal Coin", - "network": "eth", - "shortcut": "CC3", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CCCX": { - "address": "0x378903a03FB2C3AC76BB52773e3CE11340377A32", - "links": { - "Homepage": "http://clippercoin.com" - }, - "marketcap_usd": 0, - "name": "Clipper Coin", - "network": "eth", - "shortcut": "CCCX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CCLC": { - "address": "0xd348e07A2806505B856123045d27aeeD90924b50", - "links": { - "Github": "https://github.com/lifechange-io/christ-coin", - "Homepage": "https://christcoins.io" - }, - "marketcap_usd": 0, - "name": "Christ Coin", - "network": "eth", - "shortcut": "CCLC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CCO": { - "address": "0x679BADc551626e01B23CeecEFBc9B877EA18fc46", - "links": { - "Homepage": "https://ccore.io" - }, - "marketcap_usd": 15877, - "name": "Ccore", - "network": "eth", - "shortcut": "CCO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CCT": { - "address": "0x336F646F87D9f6bC6Ed42Dd46E8b3fD9DbD15C22", - "links": { - "Homepage": "http://crystal-clear.io" - }, - "marketcap_usd": 0, - "name": "Crystal Clear Token", - "network": "eth", - "shortcut": "CCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CDL": { - "address": "0x8a95ca448A52C0ADf0054bB3402dC5e09CD6B232", - "links": { - "Github": "https://github.com/confideal", - "Homepage": "https://confideal.io" - }, - "marketcap_usd": 0, - "name": "Confideal", - "network": "eth", - "shortcut": "CDL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CEEK": { - "address": "0xb056c38f6b7Dc4064367403E26424CD2c60655e1", - "links": { - "Homepage": "https://www.ceek.com/" - }, - "marketcap_usd": 85892279, - "name": "CEEK VR Token", - "network": "eth", - "shortcut": "CEEK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CELR": { - "address": "0x4F9254C83EB525f9FCf346490bbb3ed28a81C667", - "links": { - "Github": "https://github.com/celer-network", - "Homepage": "https://www.celer.network/" - }, - "marketcap_usd": 145988517, - "name": "CelerToken", - "network": "eth", - "shortcut": "CELR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CEN": { - "address": "0x0bC61DdED5F6710c637cf8288Eb6058766ce1921", - "links": { - "Github": "https://github.com/coinsuperapi", - "Homepage": "https://www.coinsuper.com" - }, - "marketcap_usd": 0, - "name": "CEN", - "network": "eth", - "shortcut": "CEN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CENNZ": { - "address": "0x1122B6a0E00DCe0563082b6e2953f3A943855c1F", - "links": { - "Homepage": "https://www.centrality.ai" - }, - "marketcap_usd": 20808822, - "name": "Centrality", - "network": "eth", - "shortcut": "CENNZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CET": { - "address": "0xF660cA1e228e7BE1fA8B4f5583145E31147FB577", - "links": { - "Github": "https://github.com/DICE-Money/", - "Homepage": "https://dice.money/" - }, - "marketcap_usd": 0, - "name": "DICE Money Dicet", - "network": "eth", - "shortcut": "CET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CFC": { - "address": "0x5Dff89a2caa4D76bc286F74D67Bd718eb834da61", - "links": { - "Homepage": "https://cryptfillcoin.com" - }, - "marketcap_usd": 0, - "name": "CryptFillCoin", - "network": "eth", - "shortcut": "CFC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CFI": { - "address": "0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e", - "links": { - "Homepage": "https://cofound.it/" - }, - "marketcap_usd": 0, - "name": "Cofound.it", - "network": "eth", - "shortcut": "CFI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CFTY": { - "address": "0x6956983F8B3Ce173B4AB84361AA0ad52f38D936f", - "links": { - "Github": "https://github.com/crafty-work", - "Homepage": "https://crafty.work/" - }, - "marketcap_usd": 0, - "name": "Crafty Token", - "network": "eth", - "shortcut": "CFTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CGT": { - "address": "0xF5238462E7235c7B62811567E63Dd17d12C2EAA0", - "links": { - "Github": "https://github.com/cache-token/cache-contract", - "Homepage": "https://cache.gold" - }, - "marketcap_usd": 2889849, - "name": "CACHE Gold", - "network": "eth", - "shortcut": "CGT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CHAI": { - "address": "0x06AF07097C9Eeb7fD685c692751D5C66dB49c215", - "links": { - "Github": "https://github.com/dapphub/chai", - "Homepage": "https://chai.money/" - }, - "marketcap_usd": 0, - "name": "Chai", - "network": "eth", - "shortcut": "CHAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CHP": { - "address": "0xf3db7560E820834658B590C96234c333Cd3D5E5e", - "links": { - "Homepage": "https://coinpoker.com" - }, - "marketcap_usd": 0, - "name": "CoinPoker", - "network": "eth", - "shortcut": "CHP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CHSB": { - "address": "0xba9d4199faB4f26eFE3551D490E3821486f135Ba", - "links": { - "Homepage": "https://swissborg.com" - }, - "marketcap_usd": 214599152, - "name": "SwissBorg", - "network": "eth", - "shortcut": "CHSB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CHX": { - "address": "0x1460a58096d80a50a2F1f956DDA497611Fa4f165", - "links": { - "Homepage": "https://weown.com" - }, - "marketcap_usd": 0, - "name": "Own", - "network": "eth", - "shortcut": "CHX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CIV": { - "address": "0x37fE0f067FA808fFBDd12891C0858532CFE7361d", - "links": { - "Github": "https://github.com/CivilizationCIV", - "Homepage": "https://civfund.org" - }, - "marketcap_usd": 9218468, - "name": "Civilization", - "network": "eth", - "shortcut": "CIV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CIYA": { - "address": "0xf75fBfa2f681860B9A6D19FC3FF3D34CB322E2D6", - "links": { - "Github": "https://github.com/cryptoriya", - "Homepage": "https://www.cryptoriya.com" - }, - "marketcap_usd": 0, - "name": "CRYPTORIYA", - "network": "eth", - "shortcut": "CIYA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CJT": { - "address": "0x3abdfF32F76b42E7635bdb7e425f0231A5F3aB17", - "links": { - "Homepage": "https://www.connectjob.io" - }, - "marketcap_usd": 0, - "name": "ConnectJob", - "network": "eth", - "shortcut": "CJT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CK": { - "address": "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d", - "links": { - "Homepage": "https://cryptokitties.co" - }, - "marketcap_usd": 0, - "name": "CK", - "network": "eth", - "shortcut": "CK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CL": { - "address": "0xe81D72D14B1516e68ac3190a46C93302Cc8eD60f", - "links": { - "Homepage": "https://www.coinlancer.io" - }, - "marketcap_usd": 0, - "name": "Coinlancer", - "network": "eth", - "shortcut": "CL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CLB": { - "address": "0xb1c1Cb8C7c1992dba24e628bF7d38E71daD46aeB", - "links": { - "Github": "https://github.com/Cloudbric-Project", - "Homepage": "https://www.cloudbric.io/" - }, - "marketcap_usd": 0, - "name": "Cloudbric", - "network": "eth", - "shortcut": "CLB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CLL": { - "address": "0x3dC9a42fa7Afe57BE03c58fD7F4411b1E466C508", - "links": { - "Github": "https://github.com/CryptoLiveLeak/CLL-Token", - "Homepage": "https://www.cryptoliveleak.com/" - }, - "marketcap_usd": 0, - "name": "CryptoLiveLeak", - "network": "eth", - "shortcut": "CLL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CLN": { - "address": "0x4162178B78D6985480A308B2190EE5517460406D", - "links": { - "Github": "https://github.com/colucom/CLN-solidity", - "Homepage": "https://cln.network" - }, - "marketcap_usd": 0, - "name": "ColuLocalNetwork", - "network": "eth", - "shortcut": "CLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CLP": { - "address": "0x7FCE2856899a6806eeEf70807985fc7554C66340", - "links": { - "Homepage": "https://cryptolending.org" - }, - "marketcap_usd": 0, - "name": "CryptoLending", - "network": "eth", - "shortcut": "CLP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CLT": { - "address": "0x2001f2A0Cf801EcFda622f6C28fb6E10d803D969", - "links": { - "Homepage": "https://coinloan.io" - }, - "marketcap_usd": 0, - "name": "CoinLoan", - "network": "eth", - "shortcut": "CLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CMBT": { - "address": "0x3EDD235C3E840C1F29286B2e39370a255C7B6fdb", - "links": { - "Homepage": "https://www.coinmarketbrasil.com.br" - }, - "marketcap_usd": 0, - "name": "CMBToken", - "network": "eth", - "shortcut": "CMBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CMC": { - "address": "0x7e667525521cF61352e2E01b50FaaaE7Df39749a", - "links": { - "Homepage": "https://www.cryptomart.me" - }, - "marketcap_usd": 0, - "name": "CryptoMart", - "network": "eth", - "shortcut": "CMC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CMCT": { - "address": "0x47bc01597798DCD7506DCCA36ac4302fc93a8cFb", - "links": { - "Homepage": "https://crowdmachine.com" - }, - "marketcap_usd": 0, - "name": "Crowd Machine Compute Token", - "network": "eth", - "shortcut": "CMCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CMERGE": { - "address": "0xC48b4814fAEd1CCc885DD6fDe62A6474AeCbb19a", - "links": { - "Homepage": "https://app.coinmerge.io/" - }, - "marketcap_usd": 0, - "name": "Coin Merge", - "network": "eth", - "shortcut": "CMERGE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CNB": { - "address": "0xEBf2F9E8De960f64ec0fDCDa6Cb282423133347B", - "links": { - "Homepage": "https://canabio.net" - }, - "marketcap_usd": 0, - "name": "Canabio", - "network": "eth", - "shortcut": "CNB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CND": { - "address": "0xd4c435F5B09F855C3317c8524Cb1F586E42795fa", - "links": { - "Homepage": "https://cindicator.com" - }, - "marketcap_usd": 2370802, - "name": "Cindicator", - "network": "eth", - "shortcut": "CND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CNN": { - "address": "0x8713d26637CF49e1b6B4a7Ce57106AaBc9325343", - "links": { - "Homepage": "https://cnntoken.io" - }, - "marketcap_usd": 0, - "name": "Content Neutrality Network", - "network": "eth", - "shortcut": "CNN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CO2": { - "address": "0xB4b1D2C217EC0776584CE08D3DD98F90EDedA44b", - "links": { - "Github": "https://github.com/climatecoinio", - "Homepage": "https://climatecoin.io" - }, - "marketcap_usd": 0, - "name": "Climatecoin", - "network": "eth", - "shortcut": "CO2", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CO2Bit": { - "address": "0x574B36BceD443338875d171CC377E691f7d4F887", - "links": { - "Homepage": "https://co2bit.com" - }, - "marketcap_usd": 0, - "name": "CO2Bit", - "network": "eth", - "shortcut": "CO2Bit", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:COB": { - "address": "0xb2F7EB1f2c37645bE61d73953035360e768D81E6", - "links": { - "Github": "https://github.com/cobinhood", - "Homepage": "https://cobinhood.com" - }, - "marketcap_usd": 96081, - "name": "Cobinhood Token", - "network": "eth", - "shortcut": "COB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:COBR": { - "address": "0x933DFC5622792b41245aB8313416cAF0ba885aE7", - "links": { - "Github": "https://github.com/coinbroker", - "Homepage": "https://coinbroker.hu" - }, - "marketcap_usd": 0, - "name": "CoinBroker", - "network": "eth", - "shortcut": "COBR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:COFI": { - "address": "0x3136eF851592aCf49CA4C825131E364170FA32b3", - "links": { - "Github": "https://github.com/coinfi", - "Homepage": "https://www.coinfi.com" - }, - "marketcap_usd": 376891, - "name": "CoinFi Token", - "network": "eth", - "shortcut": "COFI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:COIL": { - "address": "0x0C91B015AbA6f7B4738dcD36E7410138b29ADC29", - "links": { - "Github": "https://github.com/CoinOil", - "Homepage": "https://coinoil.io/" - }, - "marketcap_usd": 0, - "name": "CoinOil", - "network": "eth", - "shortcut": "COIL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:COMP": { - "address": "0xc00e94Cb662C3520282E6f5717214004A7f26888", - "links": { - "Github": "https://github.com/compound-finance", - "Homepage": "https://compound.finance" - }, - "marketcap_usd": 361396714, - "name": "Compound", - "network": "eth", - "shortcut": "COMP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CORI": { - "address": "0x725B190Bc077FFde17Cf549AA8ba25e298550B18", - "links": { - "Homepage": "https://corrently.de/token/" - }, - "marketcap_usd": 0, - "name": "Corrently Invest Token", - "network": "eth", - "shortcut": "CORI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:COSM": { - "address": "0xC4Bcd64CB216D49fD3C643A32762F34626b45a1a", - "links": { - "Homepage": "https://cosmochain.io" - }, - "marketcap_usd": 0, - "name": "Cosmo Coin", - "network": "eth", - "shortcut": "COSM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:COTI": { - "address": "0xDDB3422497E61e13543BeA06989C0789117555c5", - "links": { - "Github": "https://github.com/coti-io", - "Homepage": "https://coti.io" - }, - "marketcap_usd": 101905846, - "name": "COTI", - "network": "eth", - "shortcut": "COTI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:COV": { - "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", - "links": { - "Homepage": "https://covesting.io/" - }, - "marketcap_usd": 0, - "name": "Covesting", - "network": "eth", - "shortcut": "COV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CPAL": { - "address": "0x31910AFF5545784755970aE1fBE7fE65d5F0eEa2", - "links": { - "Github": "https://github.com/creatorpal", - "Homepage": "http://creatorpal.net" - }, - "marketcap_usd": 0, - "name": "CreatorPAL", - "network": "eth", - "shortcut": "CPAL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CPAY": { - "address": "0x0Ebb614204E47c09B6C3FeB9AAeCad8EE060E23E", - "links": { - "Homepage": "https://cryptopay.me" - }, - "marketcap_usd": 0, - "name": "Cryptopay", - "network": "eth", - "shortcut": "CPAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CPC": { - "address": "0xfAE4Ee59CDd86e3Be9e8b90b53AA866327D7c090", - "links": { - "Homepage": "http://www.cpchain.io" - }, - "marketcap_usd": 1798478, - "name": "CPChain", - "network": "eth", - "shortcut": "CPC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CPEX": { - "address": "0xb787d4eAc8899730bb8C57fc3c998c49c5244ec0", - "links": { - "Github": "https://github.com/coinpulse", - "Homepage": "https://CoinPulse.io" - }, - "marketcap_usd": 0, - "name": "CoinPulseToken", - "network": "eth", - "shortcut": "CPEX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CPLO": { - "address": "0x7064aAb39A0Fcf7221c3396719D0917a65E35515", - "links": { - "Github": "https://github.com/Cpollo", - "Homepage": "https://cpollo.info/" - }, - "marketcap_usd": 0, - "name": "CPOLLO", - "network": "eth", - "shortcut": "CPLO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CPY": { - "address": "0xf44745fBd41F6A1ba151df190db0564c5fCc4410", - "links": { - "Github": "https://github.com/aditus", - "Homepage": "https://copytrack.io" - }, - "marketcap_usd": 0, - "name": "COPYTRACK", - "network": "eth", - "shortcut": "CPY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CR7": { - "address": "0x7F585B9130c64e9e9F470b618A7badD03D79cA7E", - "links": { - "Github": "https://github.com/CR7CoinProject", - "Homepage": "https://cr7coin.org" - }, - "marketcap_usd": 0, - "name": "CR7Coin", - "network": "eth", - "shortcut": "CR7", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CRB": { - "address": "0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5", - "links": { - "Homepage": "https://www.creditbit.org" - }, - "marketcap_usd": 0, - "name": "Creditbit", - "network": "eth", - "shortcut": "CRB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CRBT": { - "address": "0x2cF618c19041D9Db330d8222B860A624021F30fb", - "links": { - "Homepage": "https://www.cruisebit.com" - }, - "marketcap_usd": 0, - "name": "Cruisebit", - "network": "eth", - "shortcut": "CRBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CRC": { - "address": "0xF41e5Fbc2F6Aac200Dd8619E121CE1f05D150077", - "links": { - "Homepage": "https://crycash.io" - }, - "marketcap_usd": 0, - "name": "CryCash", - "network": "eth", - "shortcut": "CRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CRED": { - "address": "0x672a1AD4f667FB18A333Af13667aa0Af1F5b5bDD", - "links": { - "Github": "https://github.com/verifyas", - "Homepage": "https://token.verify.as" - }, - "marketcap_usd": 0, - "name": "Verify", - "network": "eth", - "shortcut": "CRED", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CREDO": { - "address": "0x4E0603e2A27A30480E5e3a4Fe548e29EF12F64bE", - "links": { - "Homepage": "https://bitbounce.io" - }, - "marketcap_usd": 0, - "name": "Credo / Bitbounce", - "network": "eth", - "shortcut": "CREDO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CRGO": { - "address": "0xf49CDD50aD408d387d611F88A647179C3de3492b", - "links": { - "Github": "https://github.com/CargoCoinRepo/Cargo-Coin", - "Homepage": "https://thecargocoin.com" - }, - "marketcap_usd": 0, - "name": "CargoCoin", - "network": "eth", - "shortcut": "CRGO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CRMT": { - "address": "0x9238bfB781A55eACC3Cf05F7DF94038c198CD9B9", - "links": { - "Homepage": "https://www.cremit.co" - }, - "marketcap_usd": 0, - "name": "Cremit", - "network": "eth", - "shortcut": "CRMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CRT": { - "address": "0xF0da1186a4977226b9135d0613ee72e229EC3F4d", - "links": { - "Homepage": "http://creamtoecoin.com" - }, - "marketcap_usd": 0, - "name": "CreamtoeCoin", - "network": "eth", - "shortcut": "CRT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CS": { - "address": "0x46b9Ad944d1059450Da1163511069C718F699D31", - "links": { - "Homepage": "https://credits.com/en" - }, - "marketcap_usd": 1464121, - "name": "Credits", - "network": "eth", - "shortcut": "CS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CSNO": { - "address": "0x29D75277aC7F0335b2165D0895E8725cbF658d73", - "links": { - "Homepage": "https://www.bitdice.me" - }, - "marketcap_usd": 0, - "name": "BitDice", - "network": "eth", - "shortcut": "CSNO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CST": { - "address": "0xBB49A51Ee5a66ca3a8CbE529379bA44Ba67E6771", - "links": { - "Homepage": "https://cryptosolartech.org" - }, - "marketcap_usd": 0, - "name": "Cryptosolartech", - "network": "eth", - "shortcut": "CST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CTF": { - "address": "0x4545750F39aF6Be4F237B6869D4EccA928Fd5A85", - "links": { - "Github": "https://github.com/vkajic/cryptotask", - "Homepage": "http://www.cryptotask.org" - }, - "marketcap_usd": 0, - "name": "CryptoTask", - "network": "eth", - "shortcut": "CTF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CTG": { - "address": "0xC87c5dD86A3d567fF28701886fB0745aaa898da4", - "links": { - "Github": "github.com/CTGlobal/ChristianTraders", - "Homepage": "https://christiantraders.com" - }, - "marketcap_usd": 0, - "name": "CT Global Token", - "network": "eth", - "shortcut": "CTG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CTGC": { - "address": "0x9E7D29bd499B6c7da2a5B2EaFCF4A39d3BD845D1", - "links": { - "Github": "https://github.com/ctgcoin/", - "Homepage": "https://www.ctgcoin.org" - }, - "marketcap_usd": 0, - "name": "Convenient To Go", - "network": "eth", - "shortcut": "CTGC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CTSI": { - "address": "0x491604c0FDF08347Dd1fa4Ee062a822A5DD06B5D", - "links": { - "Github": "https://github.com/cartesi", - "Homepage": "https://cartesi.io" - }, - "marketcap_usd": 108034607, - "name": "Cartesi Token", - "network": "eth", - "shortcut": "CTSI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CTX": { - "address": "0x662aBcAd0b7f345AB7FfB1b1fbb9Df7894f18e66", - "links": { - "Homepage": "https://cartaxi.io" - }, - "marketcap_usd": 0, - "name": "CarTaxi", - "network": "eth", - "shortcut": "CTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CTXC": { - "address": "0xEa11755Ae41D889CeEc39A63E6FF75a02Bc1C00d", - "links": { - "Homepage": "http://www.cortexlabs.ai" - }, - "marketcap_usd": 0, - "name": "Cortex", - "network": "eth", - "shortcut": "CTXC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CUR8": { - "address": "0x490DBf7884B8e13c2161448b83Dd2d8909dB48eD", - "links": { - "Github": "https://github.com/curate-project", - "Homepage": "https://curate.style" - }, - "marketcap_usd": 0, - "name": "Curate", - "network": "eth", - "shortcut": "CUR8", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CURE": { - "address": "0x1dABF6Ab0eB8E4208E7E9302CeC7A014068952e4", - "links": { - "Homepage": "https://curate.style" - }, - "marketcap_usd": 0, - "name": "Curate", - "network": "eth", - "shortcut": "CURE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CVC": { - "address": "0x41e5560054824eA6B0732E656E3Ad64E20e94E45", - "links": { - "Homepage": "https://www.civic.com" - }, - "marketcap_usd": 118856816, - "name": "Civic", - "network": "eth", - "shortcut": "CVC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CVS": { - "address": "0xdB56448fE2635f7912287cd619E7eD3d93180f25", - "links": { - "Github": "https://github.com/coinvisa", - "Homepage": "http://coinvisa.com" - }, - "marketcap_usd": 0, - "name": "CoinVisa", - "network": "eth", - "shortcut": "CVS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CVT": { - "address": "0xBe428c3867F05deA2A89Fc76a102b544eaC7f772", - "links": { - "Homepage": "http://www.cybervein.org" - }, - "marketcap_usd": 1632453, - "name": "CyberVein", - "network": "eth", - "shortcut": "CVT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CXC": { - "address": "0x2134057C0b461F898D375Cead652Acae62b59541", - "links": { - "Github": "https://github.com/coxxxcoin/smart_contract", - "Homepage": "http://coxxxcoin.com" - }, - "marketcap_usd": 0, - "name": "CoxxxCoin", - "network": "eth", - "shortcut": "CXC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CXO": { - "address": "0xb6EE9668771a79be7967ee29a63D4184F8097143", - "links": { - "Github": "https://github.com/cargoxio", - "Homepage": "https://cargox.io" - }, - "marketcap_usd": 0, - "name": "CargoX", - "network": "eth", - "shortcut": "CXO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CYCLE": { - "address": "0xfE831929098B5FF5d736105bD68BA9460EF07207", - "links": { - "Github": "https://github.com/cyclemontreal", - "Homepage": "http://cyclemontreal.net" - }, - "marketcap_usd": 0, - "name": "Cycle", - "network": "eth", - "shortcut": "CYCLE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CYFM": { - "address": "0x3f06B5D78406cD97bdf10f5C420B241D32759c80", - "links": { - "Homepage": "https://cyberfmradio.com" - }, - "marketcap_usd": 0, - "name": "CyberFM", - "network": "eth", - "shortcut": "CYFM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CYMT": { - "address": "0x78c292D1445E6b9558bf42e8BC369271DeD062eA", - "links": { - "Homepage": "https://cybermusic.io" - }, - "marketcap_usd": 252201, - "name": "CyberMusic", - "network": "eth", - "shortcut": "CYMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CZR": { - "address": "0x0223fc70574214F65813fE336D870Ac47E147fAe", - "links": { - "Homepage": "http://www.canonchain.com" - }, - "marketcap_usd": 0, - "name": "CanonChain", - "network": "eth", - "shortcut": "CZR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:CryptoCarbon": { - "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", - "links": { - "Homepage": "https://ccrb.io" - }, - "marketcap_usd": 0, - "name": "CryptoCarbon", - "network": "eth", - "shortcut": "CryptoCarbon", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAB": { - "address": "0xdab0C31BF34C897Fb0Fe90D12EC9401caf5c36Ec", - "links": { - "Github": "https://github.com/DABcoin", - "Homepage": "https://dabco.in" - }, - "marketcap_usd": 0, - "name": "DAB", - "network": "eth", - "shortcut": "DAB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DACS": { - "address": "0xA31108E5BAB5494560Db34c95492658AF239357C", - "links": { - "Homepage": "https://dacsee.io/#" - }, - "marketcap_usd": 0, - "name": "DACSEE", - "network": "eth", - "shortcut": "DACS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DADI": { - "address": "0xFb2f26F266Fb2805a387230f2aa0a331b4d96Fba", - "links": { - "Homepage": "https://dadi.cloud" - }, - "marketcap_usd": 0, - "name": "DADI", - "network": "eth", - "shortcut": "DADI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAF": { - "address": "0x1d0198829cBA768E4Ef2f762CD82842Bba3e3458", - "links": { - "Github": "https://github.com/daftoken/DAF", - "Homepage": "https://daftoken.io" - }, - "marketcap_usd": 0, - "name": "Diamonds are Forever", - "network": "eth", - "shortcut": "DAF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAI": { - "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" - }, - "marketcap_usd": 5224409492, - "name": "Dai Stablecoin v2.0", - "network": "eth", - "shortcut": "DAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DALC": { - "address": "0x07D9e49Ea402194bf48A8276dAfB16E4eD633317", - "links": { - "Homepage": "http://www.dalecoin.org" - }, - "marketcap_usd": 0, - "name": "DaleCoin", - "network": "eth", - "shortcut": "DALC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAN": { - "address": "0x9B70740e708a083C6fF38Df52297020f5DfAa5EE", - "links": { - "Github": "https://github.com/project-daneel", - "Homepage": "https://daneel.io" - }, - "marketcap_usd": 0, - "name": "DaneelToken", - "network": "eth", - "shortcut": "DAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAT": { - "address": "0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c", - "links": { - "Homepage": "https://datum.org" - }, - "marketcap_usd": 0, - "name": "Datum Token", - "network": "eth", - "shortcut": "DAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DATA": { - "address": "0x8f693ca8D21b157107184d29D398A8D082b38b76", - "links": { - "Github": "https://github.com/streamr-dev", - "Homepage": "https://streamr.network/" - }, - "marketcap_usd": 31983242, - "name": "Streamr (DATA)", - "network": "eth", - "shortcut": "DATA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DATABroker": { - "address": "0x1B5f21ee98eed48d292e8e2d3Ed82b40a9728A22", - "links": { - "Github": "https://github.com/DataBrokerDAO", - "Homepage": "https://databrokerdao.com" - }, - "marketcap_usd": 0, - "name": "DataBrokerDAO Token", - "network": "eth", - "shortcut": "DATABroker", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DATX": { - "address": "0xaBbBB6447B68ffD6141DA77C18c7B5876eD6c5ab", - "links": { - "Homepage": "https://www.datx.co" - }, - "marketcap_usd": 0, - "name": "DATx", - "network": "eth", - "shortcut": "DATX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAV": { - "address": "0xd82Df0ABD3f51425Eb15ef7580fDA55727875f14", - "links": { - "Github": "https://github.com/DAVFoundation", - "Homepage": "https://dav.network/" - }, - "marketcap_usd": 713066, - "name": "DAV Token", - "network": "eth", - "shortcut": "DAV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAX": { - "address": "0x0B4BdC478791897274652DC15eF5C135cae61E60", - "links": { - "Homepage": "https://www.daex.io" - }, - "marketcap_usd": 2068186, - "name": "DAEX", - "network": "eth", - "shortcut": "DAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAXT": { - "address": "0x61725f3db4004AFE014745B21DAb1E1677CC328b", - "links": { - "Homepage": "https://www.daxt.io" - }, - "marketcap_usd": 0, - "name": "Digital Asset Exchange Token", - "network": "eth", - "shortcut": "DAXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DAY": { - "address": "0xE814aeE960a85208C3dB542C53E7D4a6C8D5f60F", - "links": { - "Github": "https://github.com/chronologic", - "Homepage": "https://chronologic.network" - }, - "marketcap_usd": 0, - "name": "ChronoLogic DAY", - "network": "eth", - "shortcut": "DAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DBET": { - "address": "0x9b68bFaE21DF5A510931A262CECf63f41338F264", - "links": { - "Homepage": "https://www.decent.bet" - }, - "marketcap_usd": 61736, - "name": "DecentBet", - "network": "eth", - "shortcut": "DBET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DCA": { - "address": "0x386Faa4703a34a7Fdb19Bec2e14Fd427C9638416", - "links": { - "Github": "https://github.com/dobetacceptbet", - "Homepage": "http://www.dobetacceptbet.com" - }, - "marketcap_usd": 0, - "name": "DoBetAcceptBet", - "network": "eth", - "shortcut": "DCA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DCB": { - "address": "0x2D8e1dd483008c6843b9CF644Bad7fB25bF52b84", - "links": { - "Github": "https://github.com/dcblabs", - "Homepage": "https://www.dcb.my" - }, - "marketcap_usd": 0, - "name": "Digital Coin", - "network": "eth", - "shortcut": "DCB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DCC": { - "address": "0xFFa93Aacf49297D51E211817452839052FDFB961", - "links": { - "Github": "https://github.com/DistributedBanking/DCC", - "Homepage": "http://dcc.finance" - }, - "marketcap_usd": 0, - "name": "Distributed Credit Chain", - "network": "eth", - "shortcut": "DCC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DCL": { - "address": "0x399A0e6FbEb3d74c85357439f4c8AeD9678a5cbF", - "links": { - "Homepage": "https://www.DisLedger.com" - }, - "marketcap_usd": 0, - "name": "DCL", - "network": "eth", - "shortcut": "DCL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DCN": { - "address": "0x08d32b0da63e2C3bcF8019c9c5d849d7a9d791e6", - "links": { - "Github": "https://github.com/Dentacoin", - "Homepage": "https://dentacoin.com" - }, - "marketcap_usd": 1239469, - "name": "Dentacoin", - "network": "eth", - "shortcut": "DCN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DDF": { - "address": "0xcC4eF9EEAF656aC1a2Ab886743E98e97E090ed38", - "links": { - "Github": "https://github.com/digitaldevelopersfund/ddf", - "Homepage": "https://www.digitaldevelopersfund.com" - }, - "marketcap_usd": 0, - "name": "DDF", - "network": "eth", - "shortcut": "DDF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DEB": { - "address": "0x151202C9c18e495656f372281F493EB7698961D5", - "links": { - "Homepage": "https://debitum.network/" - }, - "marketcap_usd": 0, - "name": "DEBITUM", - "network": "eth", - "shortcut": "DEB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DEEZ": { - "address": "0x075c60EE2cD308ff47873b38Bd9A0Fa5853382c4", - "links": { - "Github": "https://github.com/DeezNutsToken/DEEZ", - "Homepage": "https://deeznuts.in" - }, - "marketcap_usd": 0, - "name": "DeezNuts", - "network": "eth", - "shortcut": "DEEZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DELTA": { - "address": "0xDE1E0AE6101b46520cF66fDC0B1059c5cC3d106c", - "links": { - "Homepage": "https://deltachain.tech" - }, - "marketcap_usd": 0, - "name": "DeltaChain", - "network": "eth", - "shortcut": "DELTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DENT": { - "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", - "links": { - "Homepage": "https://www.dentwireless.com" - }, - "marketcap_usd": 116975263, - "name": "DENT", - "network": "eth", - "shortcut": "DENT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DEW": { - "address": "0x20E94867794dBA030Ee287F1406E100d03C84Cd3", - "links": { - "Homepage": "https://www.dew.one" - }, - "marketcap_usd": 0, - "name": "DEW", - "network": "eth", - "shortcut": "DEW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DEX": { - "address": "0x497bAEF294c11a5f0f5Bea3f2AdB3073DB448B56", - "links": { - "Homepage": "https://www.coinbit.co.kr/" - }, - "marketcap_usd": 0, - "name": "DEX", - "network": "eth", - "shortcut": "DEX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DF": { - "address": "0x431ad2ff6a9C365805eBaD47Ee021148d6f7DBe0", - "links": { - "Github": "https://github.com/dforcenetwork", - "Homepage": "https://dforce.network" - }, - "marketcap_usd": 23334461, - "name": "dForce Platform Token", - "network": "eth", - "shortcut": "DF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DGD": { - "address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", - "links": { - "Homepage": "https://digix.global/" - }, - "marketcap_usd": 8201143, - "name": "Digix DAO", - "network": "eth", - "shortcut": "DGD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DGPT": { - "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", - "links": { - "Github": "https://github.com/digipulseio", - "Homepage": "https://www.digipulse.io" - }, - "marketcap_usd": 0, - "name": "DigiPulse", - "network": "eth", - "shortcut": "DGPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DGS": { - "address": "0x6aEDbF8dFF31437220dF351950Ba2a3362168d1b", - "links": { - "Github": "https://github.com/dragonglasscom", - "Homepage": "https://dragonglass.com/" - }, - "marketcap_usd": 0, - "name": "Dragonglass", - "network": "eth", - "shortcut": "DGS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DGX": { - "address": "0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF", - "links": { - "Github": "https://github.com/DigixGlobal", - "Homepage": "https://digix.global" - }, - "marketcap_usd": 2548238, - "name": "Digix Gold Token", - "network": "eth", - "shortcut": "DGX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DGX1": { - "address": "0x55b9a11c2e8351b4Ffc7b11561148bfaC9977855", - "links": { - "Github": "https://github.com/DigixGlobal", - "Homepage": "https://digix.global" - }, - "marketcap_usd": 0, - "name": "Digix Gold Token 1.0", - "network": "eth", - "shortcut": "DGX1", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DICE": { - "address": "0x2e071D2966Aa7D8dECB1005885bA1977D6038A65", - "links": { - "Homepage": "https://etheroll.com" - }, - "marketcap_usd": 0, - "name": "Etheroll", - "network": "eth", - "shortcut": "DICE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DIRTY": { - "address": "0x4faB740779C73aA3945a5CF6025bF1b0e7F6349C", - "links": { - "Github": "https://github.com/nodezy/dirty_finance", - "Homepage": "https://dirty.finance/" - }, - "marketcap_usd": 0, - "name": "dirty.finance", - "network": "eth", - "shortcut": "DIRTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DIT": { - "address": "0xf14922001A2FB8541a433905437ae954419C2439", - "links": { - "Homepage": "https://inmediate.io" - }, - "marketcap_usd": 0, - "name": "Digital Insurance Token", - "network": "eth", - "shortcut": "DIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DIVX": { - "address": "0x13f11C9905A08ca76e3e853bE63D4f0944326C72", - "links": { - "Homepage": "https://www.diviproject.org" - }, - "marketcap_usd": 0, - "name": "DIVX", - "network": "eth", - "shortcut": "DIVX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DLT": { - "address": "0x07e3c70653548B04f0A75970C1F81B4CBbFB606f", - "links": { - "Homepage": "https://www.agrello.org" - }, - "marketcap_usd": 135781, - "name": "Agrello", - "network": "eth", - "shortcut": "DLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DMT": { - "address": "0x2ccbFF3A042c68716Ed2a2Cb0c544A9f1d1935E1", - "links": { - "Github": "https://github.com/suntechsoft/dmarket-smartcontract", - "Homepage": "https://dmarket.com" - }, - "marketcap_usd": 399206, - "name": "DMarket Token", - "network": "eth", - "shortcut": "DMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DNA": { - "address": "0xef6344de1fcfC5F48c30234C16c1389e8CdC572C", - "links": { - "Homepage": "https://encrypgen.com" - }, - "marketcap_usd": 0, - "name": "EncrypGen", - "network": "eth", - "shortcut": "DNA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DNT": { - "address": "0x0AbdAce70D3790235af448C88547603b945604ea", - "links": { - "Github": "https://github.com/district0x", - "Homepage": "https://district0x.io" - }, - "marketcap_usd": 21489851, - "name": "District0x Network Token", - "network": "eth", - "shortcut": "DNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DNX": { - "address": "0xE43E2041dc3786e166961eD9484a5539033d10fB", - "links": { - "Github": "https://github.com/DenCity-life", - "Homepage": "https://dencity.life" - }, - "marketcap_usd": 0, - "name": "DenCity", - "network": "eth", - "shortcut": "DNX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DOCK": { - "address": "0xE5Dada80Aa6477e85d09747f2842f7993D0Df71C", - "links": { - "Homepage": "https://dock.io" - }, - "marketcap_usd": 0, - "name": "Dock", - "network": "eth", - "shortcut": "DOCK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DONK": { - "address": "0xE4F6D46C244Bb7Cf3e218CDFB5C35cf9a4d9c920", - "links": { - "Homepage": "https://www.projectdonkey.com" - }, - "marketcap_usd": 0, - "name": "Donkey", - "network": "eth", - "shortcut": "DONK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DOR": { - "address": "0x906b3f8b7845840188Eab53c3f5AD348A787752f", - "links": { - "Homepage": "https://www.dorado.tech" - }, - "marketcap_usd": 0, - "name": "Dorado", - "network": "eth", - "shortcut": "DOR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DOV": { - "address": "0xac3211a5025414Af2866FF09c23FC18bc97e79b1", - "links": { - "Homepage": "https://dovu.io" - }, - "marketcap_usd": 10302838, - "name": "Dovu", - "network": "eth", - "shortcut": "DOV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DPP": { - "address": "0x01b3Ec4aAe1B8729529BEB4965F27d008788B0EB", - "links": { - "Github": "https://github.com/DAPowerPlay", - "Homepage": "https://dapowerplay.com" - }, - "marketcap_usd": 0, - "name": "Digital Assets Power Play", - "network": "eth", - "shortcut": "DPP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DREAM": { - "address": "0x82f4dED9Cec9B5750FBFf5C2185AEe35AfC16587", - "links": { - "Homepage": "https://dreamteam.gg" - }, - "marketcap_usd": 0, - "name": "DREAM", - "network": "eth", - "shortcut": "DREAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DRGN": { - "address": "0x419c4dB4B9e25d6Db2AD9691ccb832C8D9fDA05E", - "links": { - "Github": "https://github.com/dragonchain/dragonchain", - "Homepage": "https://dragonchain.com" - }, - "marketcap_usd": 5066629, - "name": "Dragon", - "network": "eth", - "shortcut": "DRGN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DRPU": { - "address": "0xe30e02f049957e2A5907589e06Ba646fB2c321bA", - "links": { - "Homepage": "https://www.dcorp.it" - }, - "marketcap_usd": 0, - "name": "DCORP Utility", - "network": "eth", - "shortcut": "DRPU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DRT": { - "address": "0x9AF4f26941677C706cfEcf6D3379FF01bB85D5Ab", - "links": { - "Homepage": "https://token.domraider.com" - }, - "marketcap_usd": 138277, - "name": "DomRaider", - "network": "eth", - "shortcut": "DRT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DRVH": { - "address": "0x62D4c04644314F35868Ba4c65cc27a77681dE7a9", - "links": { - "Github": "https://github.com/TeamDriveholic", - "Homepage": "https://driveholic.com/" - }, - "marketcap_usd": 0, - "name": "Driveholic Token", - "network": "eth", - "shortcut": "DRVH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DSC": { - "address": "0x1e09BD8Cadb441632e441Db3e1D79909EE0A2256", - "links": { - "Homepage": "https://github.com/xxxxyy1" - }, - "marketcap_usd": 0, - "name": "Digital Safe Coin", - "network": "eth", - "shortcut": "DSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DSCP": { - "address": "0x03e3f0c25965f13DbbC58246738C183E27b26a56", - "links": { - "Github": "https://github.com/DisciplinaOU/disciplina", - "Homepage": "https://disciplina.io" - }, - "marketcap_usd": 0, - "name": "Disciplina Token", - "network": "eth", - "shortcut": "DSCP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DST": { - "address": "0x68d53441c0e253f76c500e551bdeA3D102206C9a", - "links": { - "Github": "https://github.com/DimensionsNetwork", - "Homepage": "https://dimensions.network/" - }, - "marketcap_usd": 0, - "name": "Dimensions Strike Token", - "network": "eth", - "shortcut": "DST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DTH": { - "address": "0x5adc961D6AC3f7062D2eA45FEFB8D8167d44b190", - "links": { - "Github": "https://github.com/dethertech", - "Homepage": "https://dether.io" - }, - "marketcap_usd": 0, - "name": "dether", - "network": "eth", - "shortcut": "DTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DTR": { - "address": "0xd234BF2410a0009dF9c3C63b610c09738f18ccD7", - "links": { - "Homepage": "https://www.tokens.net" - }, - "marketcap_usd": 0, - "name": "Dynamic Trading Rights", - "network": "eth", - "shortcut": "DTR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DTRC": { - "address": "0xc20464e0C373486d2B3335576e83a218b1618A5E", - "links": { - "Homepage": "https://datarius.io" - }, - "marketcap_usd": 37098, - "name": "Datarius Credit", - "network": "eth", - "shortcut": "DTRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DTT": { - "address": "0xf9F7c29CFdf19FCf1f2AA6B84aA367Bcf1bD1676", - "links": { - "Github": "https://github.com/DTToken", - "Homepage": "https://delphifund.org/" - }, - "marketcap_usd": 0, - "name": "Delphi Tech Token", - "network": "eth", - "shortcut": "DTT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:DXT": { - "address": "0x8dB54ca569D3019A2ba126D03C37c44b5eF81EF6", - "links": { - "Homepage": "https://datawallet.com" - }, - "marketcap_usd": 0, - "name": "Datawallet", - "network": "eth", - "shortcut": "DXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:Devcon2 Token": { - "address": "0xdd94De9cFE063577051A5eb7465D08317d8808B6", - "links": { - "Homepage": "https://www.devcon2-token.com" - }, - "marketcap_usd": 0, - "name": "Devcon2 Token", - "network": "eth", - "shortcut": "Devcon2 Token", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EAGLE": { - "address": "0x994f0DffdbaE0BbF09b652D6f11A493fd33F42B9", - "links": { - "Github": "https://github.com/elangindonesia/EagleCoin", - "Homepage": "https://eaglepay.io" - }, - "marketcap_usd": 0, - "name": "EagleCoin", - "network": "eth", - "shortcut": "EAGLE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EARTH": { - "address": "0x900b4449236a7bb26b286601dD14d2bDe7a6aC6c", - "links": { - "Homepage": "https://earth-token.com" - }, - "marketcap_usd": 0, - "name": "Earth Token", - "network": "eth", - "shortcut": "EARTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EBC": { - "address": "0x31f3D9D1BeCE0c033fF78fA6DA60a6048F3E13c5", - "links": { - "Homepage": "https://ebcoin.io" - }, - "marketcap_usd": 0, - "name": "EBCoin", - "network": "eth", - "shortcut": "EBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EBTC": { - "address": "0xeB7C20027172E5d143fB030d50f91Cece2D1485D", - "links": { - "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", - "Homepage": "https://ebitcoin.org" - }, - "marketcap_usd": 0, - "name": "eBitcoin", - "network": "eth", - "shortcut": "EBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ECGO": { - "address": "0xa01b656E49Efbb8210D882A1F1A4d10F5CadA8cc", - "links": { - "Github": "https://github.com/ecgoio", - "Homepage": "https://ecgo.io" - }, - "marketcap_usd": 0, - "name": "Eco Gold", - "network": "eth", - "shortcut": "ECGO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ECN": { - "address": "0xa578aCc0cB7875781b7880903F4594D13cFa8B98", - "links": { - "Homepage": "http://www.cewrd.com" - }, - "marketcap_usd": 0, - "name": "ECN", - "network": "eth", - "shortcut": "ECN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ECO2": { - "address": "0x17F93475d2A978f527c3f7c44aBf44AdfBa60D5C", - "links": { - "Homepage": "http://www.ethco2.com" - }, - "marketcap_usd": 0, - "name": "EtherCO2", - "network": "eth", - "shortcut": "ECO2", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ECOM": { - "address": "0x171D750d42d661B62C277a6B486ADb82348c3Eca", - "links": { - "Homepage": "https://omnitude.tech" - }, - "marketcap_usd": 0, - "name": "Omnitude", - "network": "eth", - "shortcut": "ECOM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EDC": { - "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", - "links": { - "Homepage": "https://www.edc.network" - }, - "marketcap_usd": 0, - "name": "Education Credits", - "network": "eth", - "shortcut": "EDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EDG": { - "address": "0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c", - "links": { - "Homepage": "https://edgeless.io" - }, - "marketcap_usd": 1489622, - "name": "Edgeless", - "network": "eth", - "shortcut": "EDG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EDI": { - "address": "0x79C5a1Ae586322A07BfB60be36E1b31CE8C84A1e", - "links": { - "Github": "https://github.com/freight-chain", - "Homepage": "https://freighttrust.com/" - }, - "marketcap_usd": 0, - "name": "Freight Trust Network", - "network": "eth", - "shortcut": "EDI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EDO": { - "address": "0xCeD4E93198734dDaFf8492d525Bd258D49eb388E", - "links": { - "Homepage": "https://eidoo.io" - }, - "marketcap_usd": 0, - "name": "Eidoo", - "network": "eth", - "shortcut": "EDO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EDR": { - "address": "0xc528c28FEC0A90C083328BC45f587eE215760A0F", - "links": { - "Github": "https://github.com/EndorCoin", - "Homepage": "https://www.endor.com" - }, - "marketcap_usd": 0, - "name": "Endor Protocol Token", - "network": "eth", - "shortcut": "EDR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EDX": { - "address": "0xBF8d8F1242b95dfBAe532aF6B0F4463905415CC1", - "links": { - "Github": "https://github.com/edex-exchange", - "Homepage": "https://edex.exchange" - }, - "marketcap_usd": 0, - "name": "Edex", - "network": "eth", - "shortcut": "EDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EGG": { - "address": "0x999Aa6488f076e6765448f090Aba83FbB470fC99", - "links": { - "Github": "https://github.com/medcocoricos", - "Homepage": "https://cocoricos.io" - }, - "marketcap_usd": 0, - "name": "Egg Token", - "network": "eth", - "shortcut": "EGG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EGT": { - "address": "0x8e1b448EC7aDFc7Fa35FC2e885678bD323176E34", - "links": { - "Github": "https://github.com/egretia", - "Homepage": "https://www.egretia.io" - }, - "marketcap_usd": 1382423, - "name": "Egretia Token", - "network": "eth", - "shortcut": "EGT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EGX": { - "address": "0xa19bbEf64eFF0D060a653e4DF10a57B6d8006d3E", - "links": { - "Homepage": "https://www.enegra.com" - }, - "marketcap_usd": 0, - "name": "Enegra", - "network": "eth", - "shortcut": "EGX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EHT": { - "address": "0xf9F0FC7167c311Dd2F1e21E9204F87EBA9012fB2", - "links": { - "Github": "https://github.com/team-easyhomes", - "Homepage": "https://easyhomes.io" - }, - "marketcap_usd": 0, - "name": "EasyHomes", - "network": "eth", - "shortcut": "EHT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EKO": { - "address": "0xa6a840E50bCaa50dA017b91A0D86B8b2d41156EE", - "links": { - "Homepage": "https://echolink.info" - }, - "marketcap_usd": 16271, - "name": "EchoLink", - "network": "eth", - "shortcut": "EKO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EKT": { - "address": "0xBAb165dF9455AA0F2AeD1f2565520B91DDadB4c8", - "links": { - "Homepage": "http://ekt8.io" - }, - "marketcap_usd": 0, - "name": "EDUCare", - "network": "eth", - "shortcut": "EKT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ELEC": { - "address": "0xD49ff13661451313cA1553fd6954BD1d9b6E02b9", - "links": { - "Homepage": "https://electrify.asia" - }, - "marketcap_usd": 385598, - "name": "Electrify.Asia", - "network": "eth", - "shortcut": "ELEC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ELF": { - "address": "0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e", - "links": { - "Github": "https://github.com/aelfProject", - "Homepage": "https://aelf.io/" - }, - "marketcap_usd": 157530461, - "name": "ELF Token", - "network": "eth", - "shortcut": "ELF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ELIX": { - "address": "0xc8C6A31A4A806d3710A7B38b7B296D2fABCCDBA8", - "links": { - "Homepage": "https://elixirtoken.io" - }, - "marketcap_usd": 0, - "name": "Elixir Token", - "network": "eth", - "shortcut": "ELIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ELTCOIN": { - "address": "0x44197A4c44D6A059297cAf6be4F7e172BD56Caaf", - "links": { - "Github": "https://github.com/eltcoin", - "Homepage": "http://www.eltcoin.tech/" - }, - "marketcap_usd": 29287, - "name": "ELTCOIN", - "network": "eth", - "shortcut": "ELTCOIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ELY": { - "address": "0xa95592DCFfA3C080B4B40E459c5f5692F67DB7F8", - "links": { - "Github": "https://github.com/Elysian-ELY", - "Homepage": "https://elycoin.io" - }, - "marketcap_usd": 41694, - "name": "ELYCOIN", - "network": "eth", - "shortcut": "ELY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EMB": { - "address": "0x28B94F58B11aC945341329dBf2e5EF7F8Bd44225", - "links": { - "Github": "https://github.com/blockcollider", - "Homepage": "https://blockcollider.org" - }, - "marketcap_usd": 0, - "name": "Emblem", - "network": "eth", - "shortcut": "EMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EMON": { - "address": "0xb67b88a25708a35AE7c2d736D398D268CE4f7F83", - "links": { - "Github": "https://github.com/etheremon/smartcontract", - "Homepage": "https://www.etheremon.com/" - }, - "marketcap_usd": 0, - "name": "Etheremon", - "network": "eth", - "shortcut": "EMON", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EMONT": { - "address": "0x95dAaaB98046846bF4B2853e23cba236fa394A31", - "links": { - "Homepage": "https://www.etheremon.com" - }, - "marketcap_usd": 0, - "name": "Etheremon Token", - "network": "eth", - "shortcut": "EMONT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EMT": { - "address": "0x9501BFc48897DCEEadf73113EF635d2fF7ee4B97", - "links": { - "Github": "https://github.com/easyMINE", - "Homepage": "https://easymine.io" - }, - "marketcap_usd": 0, - "name": "easyMINE Token", - "network": "eth", - "shortcut": "EMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EMV": { - "address": "0xB802b24E0637c2B87D2E8b7784C055BBE921011a", - "links": { - "Homepage": "http://emovieventure.com" - }, - "marketcap_usd": 0, - "name": "EMovieVenture", - "network": "eth", - "shortcut": "EMV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ENC": { - "address": "0x039F5050dE4908f9b5ddF40A4F3Aa3f329086387", - "links": { - "Github": "https://github.com/ethernetcash", - "Homepage": "https://ethernet.cash" - }, - "marketcap_usd": 0, - "name": "Ethernet.Cash", - "network": "eth", - "shortcut": "ENC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ENG": { - "address": "0xf0Ee6b27b759C9893Ce4f094b49ad28fd15A23e4", - "links": { - "Github": "https://github.com/enigmampc", - "Homepage": "https://enigma.co/" - }, - "marketcap_usd": 66749, - "name": "Enigma", - "network": "eth", - "shortcut": "ENG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ENGT": { - "address": "0x5DBAC24e98E2a4f43ADC0DC82Af403fca063Ce2c", - "links": { - "Homepage": "https://engagementtoken.com" - }, - "marketcap_usd": 0, - "name": "Engagement Token", - "network": "eth", - "shortcut": "ENGT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ENJ": { - "address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", - "links": { - "Github": "https://github.com/enjin/contracts", - "Homepage": "https://enjincoin.io" - }, - "marketcap_usd": 468951418, - "name": "ENJIN", - "network": "eth", - "shortcut": "ENJ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ENQ": { - "address": "0x16EA01aCB4b0Bca2000ee5473348B6937ee6f72F", - "links": { - "Github": "https://github.com/Enecuum", - "Homepage": "https://enecuum.com" - }, - "marketcap_usd": 3492342, - "name": "Enecuum", - "network": "eth", - "shortcut": "ENQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ENTRP": { - "address": "0x5BC7e5f0Ab8b2E10D2D0a3F21739FCe62459aeF3", - "links": { - "Github": "https://github.com/hut34", - "Homepage": "https://hut34.io/" - }, - "marketcap_usd": 0, - "name": "Hut34 Entropy Token", - "network": "eth", - "shortcut": "ENTRP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EPH": { - "address": "0x875089A734213cA39f0d93c2BbB8209827ec5e9f", - "links": { - "Github": "https://github.com/EuphoriaStore", - "Homepage": "https://euphoriatoken.com" - }, - "marketcap_usd": 0, - "name": "Euphoria", - "network": "eth", - "shortcut": "EPH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EPX": { - "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", - "links": { - "Github": "https://github.com/EthPokerIO/ethpokerIO", - "Homepage": "https://ethPoker.io" - }, - "marketcap_usd": 0, - "name": "ethPoker.io EPX", - "network": "eth", - "shortcut": "EPX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EPY": { - "address": "0x50Ee674689d75C0f88E8f83cfE8c4B69E8fd590D", - "links": { - "Homepage": "https://emphy.io" - }, - "marketcap_usd": 0, - "name": "Emphy", - "network": "eth", - "shortcut": "EPY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EQL": { - "address": "0x47dD62D4D075DeAd71d0e00299fc56a2d747beBb", - "links": { - "Homepage": "http://www.equaltoken.io" - }, - "marketcap_usd": 0, - "name": "Equal", - "network": "eth", - "shortcut": "EQL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ERO": { - "address": "0x74CEDa77281b339142A36817Fa5F9E29412bAb85", - "links": { - "Homepage": "https://eroscoin.org" - }, - "marketcap_usd": 43656, - "name": "Eroscoin", - "network": "eth", - "shortcut": "ERO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ERT": { - "address": "0x92A5B04D0ED5D94D7a193d1d334D3D16996f4E13", - "links": { - "Github": "https://github.com/Krishtopa/ContractEristica", - "Homepage": "https://eristica.com/" - }, - "marketcap_usd": 0, - "name": "Eristica", - "network": "eth", - "shortcut": "ERT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ESB": { - "address": "0x369760eBf89d577a734d927a9599C1921397A152", - "links": { - "Github": "https://github.com/eshipptoken", - "Homepage": "https://e-shipp.com" - }, - "marketcap_usd": 0, - "name": "E-Shipp Block", - "network": "eth", - "shortcut": "ESB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ESZ": { - "address": "0xe8A1Df958bE379045E2B46a31A98B93A2eCDfDeD", - "links": { - "Github": "https://github.com/EtherSportz/ESZCoin", - "Homepage": "https://ethersportz.com" - }, - "marketcap_usd": 0, - "name": "ESZCoin", - "network": "eth", - "shortcut": "ESZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ETBS": { - "address": "0x1B9743f556D65e757c4c650B4555bAF354cB8bd3", - "links": { - "Homepage": "https://www.ethbits.com" - }, - "marketcap_usd": 0, - "name": "Ethbits", - "network": "eth", - "shortcut": "ETBS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ETCH": { - "address": "0xDd74a7A3769fA72561B3A69e65968F49748c690c", - "links": { - "Homepage": "https://etch.work" - }, - "marketcap_usd": 0, - "name": "ETCH", - "network": "eth", - "shortcut": "ETCH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ETG": { - "address": "0x28c8d01FF633eA9Cd8fc6a451D7457889E698de6", - "links": { - "Homepage": "https://www.etgproject.org" - }, - "marketcap_usd": 0, - "name": "Ethereum Gold", - "network": "eth", - "shortcut": "ETG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ETHB": { - "address": "0x3a26746Ddb79B1B8e4450e3F4FFE3285A307387E", - "links": { - "Homepage": "https://etherbtc.io/faq" - }, - "marketcap_usd": 0, - "name": "EtherBTC", - "network": "eth", - "shortcut": "ETHB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ETHBNT": { - "address": "0xb1CD6e4153B2a390Cf00A6556b0fC1458C4A5533", - "links": { - "Github": "https://github.com/bancorprotocol", - "Homepage": "https://www.bancor.network" - }, - "marketcap_usd": 0, - "name": "Bancor ETH/BNT Liquidity Pool", - "network": "eth", - "shortcut": "ETHBNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ETHPAY": { - "address": "0xE52e75e8a97546f40991b489E92c68eBb386dc97", - "links": { - "Homepage": "http://ethpay.im" - }, - "marketcap_usd": 0, - "name": "ETHPAY", - "network": "eth", - "shortcut": "ETHPAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ETK": { - "address": "0x3c4a3ffd813a107febd57B2f01BC344264D90FdE", - "links": { - "Homepage": "https://energitoken.com" - }, - "marketcap_usd": 0, - "name": "EnergiToken", - "network": "eth", - "shortcut": "ETK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ETR": { - "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", - "links": { - "Github": "https://github.com/pironmind/EthereumRisen", - "Homepage": "http://ethereumrisen.io" - }, - "marketcap_usd": 0, - "name": "Etheruem Risen", - "network": "eth", - "shortcut": "ETR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EUCX": { - "address": "0xd99298985902C9A69bf4C8a0895fA10721204ECC", - "links": { - "Github": "https://github.com/eucxio", - "Homepage": "https://eucx.io" - }, - "marketcap_usd": 0, - "name": "EUCX Token", - "network": "eth", - "shortcut": "EUCX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EURS": { - "address": "0xdB25f211AB05b1c97D595516F45794528a807ad8", - "links": { - "Github": "https://github.com/stasisnet", - "Homepage": "https://stasis.net" - }, - "marketcap_usd": 130380616, - "name": "STASIS EURS", - "network": "eth", - "shortcut": "EURS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EURT": { - "address": "0xAbdf147870235FcFC34153828c769A70B3FAe01F", - "links": { - "Homepage": "https://tether.to" - }, - "marketcap_usd": 0, - "name": "EUR Tether (erc20)", - "network": "eth", - "shortcut": "EURT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EVC": { - "address": "0xb62d18DeA74045E822352CE4B3EE77319DC5ff2F", - "links": { - "Homepage": "https://eventchain.io" - }, - "marketcap_usd": 26440, - "name": "EventChain", - "network": "eth", - "shortcut": "EVC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EVCO": { - "address": "0xAa5C28be0F1173612eA3fCC9e461cCB7b9390213", - "links": { - "Homepage": "http://evcoin.us" - }, - "marketcap_usd": 0, - "name": "EVCOIN", - "network": "eth", - "shortcut": "EVCO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EVE": { - "address": "0x923108a439C4e8C2315c4f6521E5cE95B44e9B4c", - "links": { - "Github": "https://github.com/devery", - "Homepage": "https://devery.io" - }, - "marketcap_usd": 0, - "name": "Devery", - "network": "eth", - "shortcut": "EVE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EVED": { - "address": "0x5aaEFe84E0fB3DD1f0fCfF6fA7468124986B91bd", - "links": { - "Github": "https://github.com/evedo-co", - "Homepage": "https://www.evedo.co" - }, - "marketcap_usd": 394579, - "name": "Evedo Token", - "network": "eth", - "shortcut": "EVED", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EVF": { - "address": "0xA26C4caaaEa8b88ef49Bf8c380488f66C2d807Ae", - "links": { - "Github": "https://github.com/eviff", - "Homepage": "http://eviff.com" - }, - "marketcap_usd": 0, - "name": "Eviff", - "network": "eth", - "shortcut": "EVF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EVO": { - "address": "0x442d985EFeBC633b8Bfd14fF99E860A5609a6484", - "links": { - "Github": "https://github.com/ethavo", - "Homepage": "https://ethavo.com" - }, - "marketcap_usd": 0, - "name": "Ethavo", - "network": "eth", - "shortcut": "EVO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EVX": { - "address": "0xf3Db5Fa2C66B7aF3Eb0C0b782510816cbe4813b8", - "links": { - "Homepage": "https://everex.io " - }, - "marketcap_usd": 338085, - "name": "Everex", - "network": "eth", - "shortcut": "EVX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EWO": { - "address": "0x444997b7e7fC830E20089afea3078cd518fCF2A2", - "links": { - "Github": "https://github.com/ewoplace", - "Homepage": "https://www.ewoplace.com/" - }, - "marketcap_usd": 0, - "name": "EWO Token", - "network": "eth", - "shortcut": "EWO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EXE": { - "address": "0x0D9A653f681168f410d14D19B7743C041EafC58a", - "links": { - "Github": "https://github.com/EinsteinCash/", - "Homepage": "https://einstein.exchange/einstein-cash" - }, - "marketcap_usd": 0, - "name": "EinsteinCash", - "network": "eth", - "shortcut": "EXE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EXMR": { - "address": "0xc98e0639c6d2EC037A615341c369666B110e80E5", - "links": { - "Github": "https://github.com/eXMRcoin/", - "Homepage": "https://exmr.io/" - }, - "marketcap_usd": 0, - "name": "eXMRcoin", - "network": "eth", - "shortcut": "EXMR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EXR": { - "address": "0xFFee4DB0f30a43955398776A9524fDFF0680dD7f", - "links": { - "Homepage": "https://exserio.com/" - }, - "marketcap_usd": 0, - "name": "EXSERION Token", - "network": "eth", - "shortcut": "EXR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EXRN": { - "address": "0xe469c4473af82217B30CF17b10BcDb6C8c796e75", - "links": { - "Homepage": "https://exrnchain.com" - }, - "marketcap_usd": 1505076, - "name": "EXRNchain", - "network": "eth", - "shortcut": "EXRN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EXU": { - "address": "0xe06Af951086EC3c488b50E31BE29c07F8a260cA3", - "links": { - "Github": "https://github.com/EXUofficial", - "Homepage": "https://exu.io" - }, - "marketcap_usd": 0, - "name": "EXU Protocol", - "network": "eth", - "shortcut": "EXU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EXY": { - "address": "0x5c743a35E903F6c584514ec617ACEe0611Cf44f3", - "links": { - "Homepage": "https://experty.io/en" - }, - "marketcap_usd": 0, - "name": "Experty", - "network": "eth", - "shortcut": "EXY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:EZT": { - "address": "0x5e6016Ae7d7C49d347dcF834860B9f3Ee282812b", - "links": { - "Homepage": "https://ico.ezpos.io" - }, - "marketcap_usd": 0, - "name": "EZToken", - "network": "eth", - "shortcut": "EZT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:E\u20b9": { - "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", - "links": { - "Github": "https://github.com/eRupee", - "Homepage": "https://erupee.wordpress.com" - }, - "marketcap_usd": 0, - "name": "eRupee", - "network": "eth", - "shortcut": "E\u20b9", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FABA": { - "address": "0x0a1D2fF7156a48131553CF381F220bbedB4eFa37", - "links": { - "Homepage": "https://vc.fabainvest.com" - }, - "marketcap_usd": 0, - "name": "FABA", - "network": "eth", - "shortcut": "FABA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FACE": { - "address": "0x1CCAA0F2a7210d76E1fDec740d5F323E2E1b1672", - "links": { - "Homepage": "https://tokensale.faceter.io" - }, - "marketcap_usd": 0, - "name": "Faceter", - "network": "eth", - "shortcut": "FACE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FAM": { - "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", - "links": { - "Github": "https://github.com/BattleDrome", - "Homepage": "http://www.battledrome.io" - }, - "marketcap_usd": 0, - "name": "FAM", - "network": "eth", - "shortcut": "FAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FAN": { - "address": "0x90162f41886c0946D09999736f1C15c8a105A421", - "links": { - "Homepage": "https://tokensale.fanfare.global" - }, - "marketcap_usd": 0, - "name": "Fan Token", - "network": "eth", - "shortcut": "FAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FAR": { - "address": "0x7cf6dC769482AbEe2FF75795d000F381A8062DEC", - "links": { - "Github": "https://github.com/FarToken", - "Homepage": "http://fargoldtoken.com" - }, - "marketcap_usd": 0, - "name": "Far Token", - "network": "eth", - "shortcut": "FAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FARM": { - "address": "0x41f723448433367BE140D528D35EFECd3e023DB6", - "links": { - "Github": "https://github.com/farm-partner", - "Homepage": "https://agric.io" - }, - "marketcap_usd": 0, - "name": "Farm Partner", - "network": "eth", - "shortcut": "FARM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FDZ": { - "address": "0x23352036E911A22Cfc692B5E2E196692658ADED9", - "links": { - "Homepage": "https://friendz.io" - }, - "marketcap_usd": 22710, - "name": "Friendz", - "network": "eth", - "shortcut": "FDZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FER": { - "address": "0x4E594479Fa417a1e9C5790a413575802D393010F", - "links": { - "Github": "https://github.com/TheFerretCoin", - "Homepage": "http://theferretcoin.com" - }, - "marketcap_usd": 0, - "name": "Ferret Coin", - "network": "eth", - "shortcut": "FER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FGP": { - "address": "0xd9A8cfe21C232D485065cb62a96866799d4645f7", - "links": { - "Github": "https://github.com/FGPTEAM/FingerPrint", - "Homepage": "https://fingerprintcoin.org/" - }, - "marketcap_usd": 0, - "name": "FingerPrint", - "network": "eth", - "shortcut": "FGP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FID": { - "address": "0x52fb36C83ad33C1824912FC81071cA5eEB8AB390", - "links": { - "Homepage": "http://www.fidelium.io" - }, - "marketcap_usd": 0, - "name": "Fidelium", - "network": "eth", - "shortcut": "FID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FIG": { - "address": "0x2A73CB91ED8983398F83082c093ac306cac209FF", - "links": { - "Github": "https://github.com/fanboyscomiccon", - "Homepage": "http://fanboyscomiccon.com" - }, - "marketcap_usd": 0, - "name": "Fanboys Interactive", - "network": "eth", - "shortcut": "FIG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FIH": { - "address": "0xdfC3e857c8cCEA7657E0ed98AB92e048e38deE0f", - "links": { - "Github": "https://github.com/FidelityHouseInternational", - "Homepage": "https://www.fidelityhouse.io" - }, - "marketcap_usd": 0, - "name": "FidelityHouse Token", - "network": "eth", - "shortcut": "FIH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FKX": { - "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", - "links": { - "Github": "https://github.com/FortKnoxster", - "Homepage": "https://fortknoxster.com" - }, - "marketcap_usd": 0, - "name": "Knoxstertoken", - "network": "eth", - "shortcut": "FKX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FLIXX": { - "address": "0xf04a8ac553FceDB5BA99A64799155826C136b0Be", - "links": { - "Homepage": "https://www.flixxo.com" - }, - "marketcap_usd": 739558, - "name": "Flixxo", - "network": "eth", - "shortcut": "FLIXX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FLOT": { - "address": "0x049399a6B048D52971F7D122aE21A1532722285F", - "links": { - "Homepage": "https://firelotto.io" - }, - "marketcap_usd": 32076, - "name": "Fire Lotto", - "network": "eth", - "shortcut": "FLOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FLP": { - "address": "0x3a1Bda28AdB5B0a812a7CF10A1950c920F79BcD3", - "links": { - "Github": "https://github.com/gameflip", - "Homepage": "https://gameflip.com" - }, - "marketcap_usd": 439780, - "name": "FLIP Token", - "network": "eth", - "shortcut": "FLP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FLR": { - "address": "0x9aeFBE0b3C3ba9Eab262CB9856E8157AB7648e09", - "links": { - "Homepage": "https://flaircoin.co/" - }, - "marketcap_usd": 0, - "name": "Flair Coin", - "network": "eth", - "shortcut": "FLR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FLUZ": { - "address": "0x954b5De09A55e59755aCBda29e1Eb74A45D30175", - "links": { - "Homepage": "https://ico.fluzfluz.com" - }, - "marketcap_usd": 0, - "name": "Fluz Fluz Global", - "network": "eth", - "shortcut": "FLUZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FMF": { - "address": "0xb4d0FDFC8497AEF97d3c2892AE682eE06064A2BC", - "links": { - "Github": "https://github.com/FormosaFinancial", - "Homepage": "https://www.formosa.financial/" - }, - "marketcap_usd": 0, - "name": "Formosa Financial Token", - "network": "eth", - "shortcut": "FMF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FMTA": { - "address": "0xAa9D866666C2A3748d6B23Ff69E63E52f08d9AB4", - "links": { - "Github": "https://github.com/civitas-fundamenta", - "Homepage": "https://fundamenta.network" - }, - "marketcap_usd": 0, - "name": "Fundamenta", - "network": "eth", - "shortcut": "FMTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FND": { - "address": "0x4DF47B4969B2911C966506E3592c41389493953b", - "links": { - "Github": "https://github.com/FundRequest", - "Homepage": "https://fundrequest.io" - }, - "marketcap_usd": 0, - "name": "FundRequest", - "network": "eth", - "shortcut": "FND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FNKOS": { - "address": "0x0707681F344dEB24184037fC0228856F2137B02E", - "links": { - "Homepage": "https://www.foglink.io" - }, - "marketcap_usd": 0, - "name": "FNKOS", - "network": "eth", - "shortcut": "FNKOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FNTB": { - "address": "0xbD4B60a138b3fce3584EA01f50c0908c18f9677A", - "links": { - "Homepage": "https://fintab.io/ico" - }, - "marketcap_usd": 0, - "name": "Fintab", - "network": "eth", - "shortcut": "FNTB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FOAM": { - "address": "0x4946Fcea7C692606e8908002e55A582af44AC121", - "links": { - "Github": "https://github.com/f-o-a-m", - "Homepage": "http://foam.space" - }, - "marketcap_usd": 4813660, - "name": "FOAM Token", - "network": "eth", - "shortcut": "FOAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FOOD": { - "address": "0x2a093BcF0C98Ef744Bb6F69D74f2F85605324290", - "links": { - "Homepage": "https://www.foodcoin.io" - }, - "marketcap_usd": 0, - "name": "FoodCoin", - "network": "eth", - "shortcut": "FOOD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FORK": { - "address": "0x5bB1632fA0023e1AA76a1AE92B4635C8DBa49Fa2", - "links": { - "Github": "https://github.com/gastroadvisor", - "Homepage": "https://www.gastroadvisor.com" - }, - "marketcap_usd": 0, - "name": "GastroAdvisorToken", - "network": "eth", - "shortcut": "FORK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FOTA": { - "address": "0x4270bb238f6DD8B1c3ca01f96CA65b2647c06D3C", - "links": { - "Homepage": "https://www.fota.io" - }, - "marketcap_usd": 0, - "name": "Fortuna", - "network": "eth", - "shortcut": "FOTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FOX": { - "address": "0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d", - "links": { - "Homepage": "https://shapeshift.com" - }, - "marketcap_usd": 14439774, - "name": "FOX", - "network": "eth", - "shortcut": "FOX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FR8": { - "address": "0x8c39afDf7B17F12c553208555E51ab86E69C35aA", - "links": { - "Github": "https://github.com/fr8network", - "Homepage": "https://www.fr8.network" - }, - "marketcap_usd": 0, - "name": "Fr8 Network", - "network": "eth", - "shortcut": "FR8", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FRD": { - "address": "0x0ABeFb7611Cb3A01EA3FaD85f33C3C934F8e2cF4", - "links": { - "Homepage": "https://farad.energy" - }, - "marketcap_usd": 0, - "name": "FARAD Cryptoken", - "network": "eth", - "shortcut": "FRD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FREC": { - "address": "0x17e67d1CB4e349B9CA4Bc3e17C7DF2a397A7BB64", - "links": { - "Homepage": "http://www.freyrchain.org" - }, - "marketcap_usd": 0, - "name": "Freyrchain", - "network": "eth", - "shortcut": "FREC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FRECNX": { - "address": "0xd8B8E1Eca89dA014E67fDbc2014eaA8E171079bF", - "links": { - "Github": "https://github.com/FreldoZL/FreldoCoinX", - "Homepage": "https://ico.freldo.com/" - }, - "marketcap_usd": 0, - "name": "FreldoCoinX", - "network": "eth", - "shortcut": "FRECNX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FRX": { - "address": "0x36a73557f5BDE5195EC39eCA82d28b8A36D21141", - "links": { - "Github": "https://github.com/FSRsystem", - "Homepage": "https://forexsmartsystem.com" - }, - "marketcap_usd": 0, - "name": "Forex Coin", - "network": "eth", - "shortcut": "FRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FT": { - "address": "0x78a73B6CBc5D183CE56e786f6e905CaDEC63547B", - "links": { - "Homepage": "https://fabrictoken.io" - }, - "marketcap_usd": 0, - "name": "Fabric Token", - "network": "eth", - "shortcut": "FT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FTI": { - "address": "0x943ED852DadB5C3938ECdC6883718df8142DE4C8", - "links": { - "Homepage": "https://fanstime.org" - }, - "marketcap_usd": 147781, - "name": "FansTime", - "network": "eth", - "shortcut": "FTI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FTM": { - "address": "0x4E15361FD6b4BB609Fa63C81A2be19d873717870", - "links": { - "Github": "https://github.com/Fantom-foundation/", - "Homepage": "https://fantom.foundation/" - }, - "marketcap_usd": 1245702872, - "name": "Fantom Token", - "network": "eth", - "shortcut": "FTM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FTR": { - "address": "0x2023DCf7c438c8C8C0B0F28dBaE15520B4f3Ee20", - "links": { - "Homepage": "https://futourist.io/" - }, - "marketcap_usd": 0, - "name": "Futourist Token", - "network": "eth", - "shortcut": "FTR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FTT": { - "address": "0x2AEC18c5500f21359CE1BEA5Dc1777344dF4C0Dc", - "links": { - "Github": "https://github.com/farmatrust", - "Homepage": "https://www.farmatrust.io" - }, - "marketcap_usd": 0, - "name": "FarmaTrust Token", - "network": "eth", - "shortcut": "FTT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FTX": { - "address": "0xd559f20296FF4895da39b5bd9ADd54b442596a61", - "links": { - "Homepage": "https://www.fintrux.com" - }, - "marketcap_usd": 176615, - "name": "FintruX Network", - "network": "eth", - "shortcut": "FTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FTXT": { - "address": "0x41875C2332B0877cDFAA699B641402b7D4642c32", - "links": { - "Github": "https://github.com/futuraxproject", - "Homepage": "https://futurax.global" - }, - "marketcap_usd": 55426, - "name": "FUTURAX", - "network": "eth", - "shortcut": "FTXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FUEL": { - "address": "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40", - "links": { - "Github": "https://github.com/etherparty", - "Homepage": "https://etherparty.io" - }, - "marketcap_usd": 265967, - "name": "Etherparty FUEL", - "network": "eth", - "shortcut": "FUEL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FUN": { - "address": "0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b", - "links": { - "Homepage": "https://funfair.io" - }, - "marketcap_usd": 77061620, - "name": "Funfair", - "network": "eth", - "shortcut": "FUN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FXT": { - "address": "0x1829aA045E21E0D59580024A951DB48096e01782", - "links": { - "Homepage": "https://fuzex.co" - }, - "marketcap_usd": 0, - "name": "FuzeX", - "network": "eth", - "shortcut": "FXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FXY": { - "address": "0xA024E8057EEC474a9b2356833707Dd0579E26eF3", - "links": { - "Github": "https://github.com/fixynetwork/FIXY-NETWORK", - "Homepage": "https://fixyapp.io" - }, - "marketcap_usd": 0, - "name": "$FIXY NETWORK", - "network": "eth", - "shortcut": "FXY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FYN": { - "address": "0x88FCFBc22C6d3dBaa25aF478C578978339BDe77a", - "links": { - "Homepage": "http://www.fundyourselfnow.com" - }, - "marketcap_usd": 0, - "name": "Fund Yourself Now", - "network": "eth", - "shortcut": "FYN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FYP": { - "address": "0x8F0921f30555624143d427b340b1156914882C10", - "links": { - "Homepage": "https://flyp.me" - }, - "marketcap_usd": 618522, - "name": "FlypMe", - "network": "eth", - "shortcut": "FYP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:FYZ": { - "address": "0x6BFf2fE249601ed0Db3a87424a2E923118BB0312", - "links": { - "Homepage": "https://www.fyooz.io/" - }, - "marketcap_usd": 0, - "name": "Fyooz", - "network": "eth", - "shortcut": "FYZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:Fzcoin": { - "address": "0xE5aeE163513119F4F750376C718766B40fA37A5F", - "links": { - "Github": "https://github.com/fzcoinProtocol", - "Homepage": "https://fzcoin.cc/" - }, - "marketcap_usd": 0, - "name": "Frozencoin Network", - "network": "eth", - "shortcut": "Fzcoin", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:G-CRE": { - "address": "0xa3EE21C306A700E682AbCdfe9BaA6A08F3820419", - "links": { - "Github": "https://github.com/gluwa/Creditcoin", - "Homepage": "https://creditcoinfoundation.org" - }, - "marketcap_usd": 103231356, - "name": "Creditcoin Token", - "network": "eth", - "shortcut": "G-CRE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GAM": { - "address": "0xF67451Dc8421F0e0afEB52faa8101034ed081Ed9", - "links": { - "Github": "https://github.com/BlockchainLabsNZ/gambit", - "Homepage": "http://gambitcrypto.com" - }, - "marketcap_usd": 0, - "name": "Gambit", - "network": "eth", - "shortcut": "GAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GAME": { - "address": "0x63f88A2298a5c4AEE3c216Aa6D926B184a4b2437", - "links": { - "Github": "https://github.com/gamecredits-project", - "Homepage": "https://www.gamecredits.org" - }, - "marketcap_usd": 3159640, - "name": "GAME Credits", - "network": "eth", - "shortcut": "GAME", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GAT": { - "address": "0x687174f8C49ceb7729D925C3A961507ea4Ac7b28", - "links": { - "Homepage": "https://www.gatcoin.io" - }, - "marketcap_usd": 0, - "name": "Global Awards Token", - "network": "eth", - "shortcut": "GAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GATE": { - "address": "0x9d7630aDF7ab0b0CB00Af747Db76864df0EC82E4", - "links": { - "Github": "https://github.com/GateNet-IO/gate-erc20-token", - "Homepage": "https://gatetoken.io/" - }, - "marketcap_usd": 0, - "name": "GATE Token", - "network": "eth", - "shortcut": "GATE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GAVEL": { - "address": "0x708876f486e448Ee89eB332bFbC8E593553058b9", - "links": { - "Homepage": "http://gavelcoin.com" - }, - "marketcap_usd": 0, - "name": "GAVEL", - "network": "eth", - "shortcut": "GAVEL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GBO": { - "address": "0xCc2a74b28E786Fac86bE3CA354B1941c25aB3EaB", - "links": { - "Github": "https://github.com/GABOtoken", - "Homepage": "http://gabotoken.org" - }, - "marketcap_usd": 0, - "name": "GABO", - "network": "eth", - "shortcut": "GBO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GBT": { - "address": "0x7585F835ae2d522722d2684323a0ba83401f32f5", - "links": { - "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org" - }, - "marketcap_usd": 0, - "name": "GBT", - "network": "eth", - "shortcut": "GBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GBX": { - "address": "0x12fCd6463E66974cF7bBC24FFC4d40d6bE458283", - "links": { - "Homepage": "https://www.globitexico.com" - }, - "marketcap_usd": 0, - "name": "Globitex", - "network": "eth", - "shortcut": "GBX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GC": { - "address": "0x8Eb38715604b938812DEC25A0A1bc05B4becB9ca", - "links": { - "Github": "https://github.com/Gric-Coin", - "Homepage": "https://agric.io" - }, - "marketcap_usd": 0, - "name": "Gric Coin", - "network": "eth", - "shortcut": "GC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GCG": { - "address": "0x1778fFfBD431be2AC3D69e64d1d819C786B2BEe0", - "links": { - "Homepage": "https://globalcryptogate.com/" - }, - "marketcap_usd": 0, - "name": "Global Crypto Gate", - "network": "eth", - "shortcut": "GCG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GCP": { - "address": "0xdb0F69306FF8F949f258E83f6b87ee5D052d0b23", - "links": { - "Github": "https://github.com/Globcoin", - "Homepage": "https://globcoin.io/" - }, - "marketcap_usd": 0, - "name": "Globcoin Crypto Platform", - "network": "eth", - "shortcut": "GCP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GCU": { - "address": "0xa4ec83c8907888d006A37debF755ee39766f38ae", - "links": { - "Homepage": "http://glpt.io/" - }, - "marketcap_usd": 0, - "name": "Global Currency Unit", - "network": "eth", - "shortcut": "GCU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GCX": { - "address": "0x44A67C8570a61A28bAfd0035042f2F0A73a64428", - "links": { - "Github": "https://github.com/engenie/GermanCoin_GCX", - "Homepage": "https://www.germancoin.info" - }, - "marketcap_usd": 0, - "name": "GermanCoin", - "network": "eth", - "shortcut": "GCX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GDAO": { - "address": "0x515d7E9D75E2b76DB60F8a051Cd890eBa23286Bc", - "links": { - "Github": "https://github.com/Governor-DAO", - "Homepage": "https://www.governordao.org" - }, - "marketcap_usd": 362122, - "name": "Governor DAO", - "network": "eth", - "shortcut": "GDAO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GEE": { - "address": "0x4F4f0Db4de903B88f2B1a2847971E231D54F8fd3", - "links": { - "Github": "https://github.com/GeensNPO", - "Homepage": "https://www.geens.com" - }, - "marketcap_usd": 0, - "name": "Geens NPO", - "network": "eth", - "shortcut": "GEE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GEFT": { - "address": "0xd0464A1985edB76Ba82602534a2d89d8cCf3B7Ec", - "links": { - "Github": "https://github.com/GlobalEducationFoundation", - "Homepage": "https://globaledufoundation.org" - }, - "marketcap_usd": 0, - "name": "GlobalEdu", - "network": "eth", - "shortcut": "GEFT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GELD": { - "address": "0x24083Bb30072643C3bB90B44B7285860a755e687", - "links": { - "Homepage": "https://www.soerengelder.com" - }, - "marketcap_usd": 0, - "name": "GELD", - "network": "eth", - "shortcut": "GELD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GEM": { - "address": "0xc7BbA5b765581eFb2Cdd2679DB5Bea9eE79b201f", - "links": { - "Homepage": "https://gems.org" - }, - "marketcap_usd": 94104, - "name": "Gems", - "network": "eth", - "shortcut": "GEM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GEN": { - "address": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", - "links": { - "Github": "https://github.com/daostack", - "Homepage": "https://daostack.io" - }, - "marketcap_usd": 1374362, - "name": "DAOstack", - "network": "eth", - "shortcut": "GEN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GENE": { - "address": "0x6DD4e4Aad29A40eDd6A409b9c1625186C9855b4D", - "links": { - "Homepage": "https://parkgene.io" - }, - "marketcap_usd": 0, - "name": "Parkgene", - "network": "eth", - "shortcut": "GENE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GET": { - "address": "0x8a854288a5976036A725879164Ca3e91d30c6A1B", - "links": { - "Github": "https://github.com/Getprotocol", - "Homepage": "http://www.get-protocol.io" - }, - "marketcap_usd": 17570214, - "name": "GET Protocol", - "network": "eth", - "shortcut": "GET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GFN": { - "address": "0x3930E4dDb4d24ef2F4CB54C1f009a3694b708428", - "links": { - "Github": "https://github.com/GameFanz/GFN", - "Homepage": "https://gamefanz.io/" - }, - "marketcap_usd": 0, - "name": "GameFanz", - "network": "eth", - "shortcut": "GFN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GGC": { - "address": "0x7F969C4D388Ca0AE39A4FdDB1A6f89878CA2fBf8", - "links": { - "Homepage": "https://ico.gg.international" - }, - "marketcap_usd": 0, - "name": "GGCOIN", - "network": "eth", - "shortcut": "GGC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GHX": { - "address": "0x728f30fa2f100742C7949D1961804FA8E0B1387d", - "links": { - "Homepage": "https://gamerhash.io/" - }, - "marketcap_usd": 5973218, - "name": "GamerCoin", - "network": "eth", - "shortcut": "GHX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GIF": { - "address": "0xFcD862985628b254061F7A918035B80340D045d3", - "links": { - "Homepage": "https://gifcoin.io/" - }, - "marketcap_usd": 0, - "name": "GIFcoin Token", - "network": "eth", - "shortcut": "GIF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GIM": { - "address": "0xaE4f56F072c34C0a65B3ae3E4DB797D831439D93", - "links": { - "Github": "https://github.com/thegimliproject/GimliToken", - "Homepage": "https://gimli.io" - }, - "marketcap_usd": 0, - "name": "Gimli", - "network": "eth", - "shortcut": "GIM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GIRL": { - "address": "0x9Aa7d119bdf77F65A7284581A211D8c44ffb04b4", - "links": { - "Github": "https://github.com/women-finance", - "Homepage": "https://womensmoneynetwork.com" - }, - "marketcap_usd": 0, - "name": "Girl Coin", - "network": "eth", - "shortcut": "GIRL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GIV": { - "address": "0x900dB999074d9277c5DA2A43F252D74366230DA0", - "links": { - "Github": "https://github.com/Giveth", - "Homepage": "https://giveth.io/" - }, - "marketcap_usd": 0, - "name": "Giveth", - "network": "eth", - "shortcut": "GIV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GL": { - "address": "0xA5B399a76bbAbEf93D70255525C1d2BCC3701d0b", - "links": { - "Github": "https://github.com/glosmatin/GLOSMATIN", - "Homepage": "https://glosmatin.com/" - }, - "marketcap_usd": 0, - "name": "GLOSMATIN", - "network": "eth", - "shortcut": "GL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GLA": { - "address": "0x71D01dB8d6a2fBEa7f8d434599C237980C234e4C", - "links": { - "Homepage": "https://gladius.io" - }, - "marketcap_usd": 0, - "name": "Gladius", - "network": "eth", - "shortcut": "GLA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GMB": { - "address": "0xA0008F510fE9eE696E7E320C9e5cbf61E27791Ee", - "links": { - "Homepage": "https://gamb.io" - }, - "marketcap_usd": 1277478, - "name": "GAMB", - "network": "eth", - "shortcut": "GMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GNO": { - "address": "0x6810e776880C02933D47DB1b9fc05908e5386b96", - "links": { - "Homepage": "https://gnosis.pm" - }, - "marketcap_usd": 278912676, - "name": "Gnosis", - "network": "eth", - "shortcut": "GNO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GNT": { - "address": "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", - "links": { - "Github": "https://github.com/golemfactory/golem", - "Homepage": "https://golem.network" - }, - "marketcap_usd": 0, - "name": "Golem", - "network": "eth", - "shortcut": "GNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GNX": { - "address": "0x6EC8a24CaBdc339A06a172F8223ea557055aDAa5", - "links": { - "Homepage": "https://genaro.network" - }, - "marketcap_usd": 1942086, - "name": "Genaro Network", - "network": "eth", - "shortcut": "GNX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GNY": { - "address": "0x247551F2EB3362E222c742E9c788B8957D9BC87e", - "links": { - "Github": "https://github.com/GNYIO", - "Homepage": "https://www.gny.io/" - }, - "marketcap_usd": 0, - "name": "GNY", - "network": "eth", - "shortcut": "GNY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GOLDX": { - "address": "0xeAb43193CF0623073Ca89DB9B712796356FA7414", - "links": { - "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org/" - }, - "marketcap_usd": 0, - "name": "GOLDX", - "network": "eth", - "shortcut": "GOLDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GOT": { - "address": "0x423b5F62b328D0D6D44870F4Eee316befA0b2dF5", - "links": { - "Homepage": "https://gonetwork.co/index.html" - }, - "marketcap_usd": 0, - "name": "GoNetwork", - "network": "eth", - "shortcut": "GOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GOVI": { - "address": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", - "links": { - "Github": "https://github.com/coti-io/cvi-contracts", - "Homepage": "https://cvi.finance" - }, - "marketcap_usd": 9674350, - "name": "GOVI", - "network": "eth", - "shortcut": "GOVI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GR": { - "address": "0xcE593a29905951E8Fc579bC092ecA72577dA575c", - "links": { - "Homepage": "https://cryptochief.net" - }, - "marketcap_usd": 0, - "name": "GROM", - "network": "eth", - "shortcut": "GR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GRID": { - "address": "0x12B19D3e2ccc14Da04FAe33e63652ce469b3F2FD", - "links": { - "Homepage": "http://gridplus.io" - }, - "marketcap_usd": 8168623, - "name": "Grid+", - "network": "eth", - "shortcut": "GRID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GRMD": { - "address": "0xb444208cB0516C150178fCf9a52604BC04A1aCEa", - "links": { - "Homepage": "https://www.greenmed.io" - }, - "marketcap_usd": 0, - "name": "GreenMed", - "network": "eth", - "shortcut": "GRMD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GROO": { - "address": "0xC17195bde49D70CefCF8A9F2ee1759FFC27BF0B1", - "links": { - "Github": "https://github.com/groocoindev", - "Homepage": "https://groo.io/" - }, - "marketcap_usd": 0, - "name": "Groocoin", - "network": "eth", - "shortcut": "GROO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GROW": { - "address": "0x0a9A9ce600D08BF9b76F49FA4e7b38A67EBEB1E6", - "links": { - "Github": "https://github.com/growchainnet", - "Homepage": "http://www.growchain.us" - }, - "marketcap_usd": 0, - "name": "Growchain", - "network": "eth", - "shortcut": "GROW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GRT": { - "address": "0xc944E90C64B2c07662A292be6244BDf05Cda44a7", - "links": { - "Github": "https://github.com/graphprotocol", - "Homepage": "https://thegraph.com" - }, - "marketcap_usd": 1397892462, - "name": "Graph Token", - "network": "eth", - "shortcut": "GRT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GSC": { - "address": "0x228ba514309FFDF03A81a205a6D040E429d6E80C", - "links": { - "Homepage": "https://www.gsc.social" - }, - "marketcap_usd": 1307261, - "name": "Global Social Chain", - "network": "eth", - "shortcut": "GSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GSE": { - "address": "0xe530441f4f73bDB6DC2fA5aF7c3fC5fD551Ec838", - "links": { - "Homepage": "https://gse.network" - }, - "marketcap_usd": 0, - "name": "GSENetwork", - "network": "eth", - "shortcut": "GSE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GTC": { - "address": "0xB70835D7822eBB9426B56543E391846C107bd32C", - "links": { - "Github": "https://github.com/GameLeLe", - "Homepage": "https://game.com" - }, - "marketcap_usd": 626409, - "name": "GTC Token", - "network": "eth", - "shortcut": "GTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GTEC": { - "address": "0x30E193bd3F52713D5562cf316f35115034525f44", - "links": { - "Github": "https://github.com/Sustainability-Creative-Co/GreenTechCoin", - "Homepage": "https://greentechcoin.xyz" - }, - "marketcap_usd": 0, - "name": "Green Tech Coin", - "network": "eth", - "shortcut": "GTEC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GTH": { - "address": "0xeb986DA994E4a118d5956b02d8b7c3C7CE373674", - "links": { - "Github": "https://github.com/GatherNetwork", - "Homepage": "https://gather.network" - }, - "marketcap_usd": 1331693, - "name": "GTH", - "network": "eth", - "shortcut": "GTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GTKT": { - "address": "0x025abAD9e518516fdaAFBDcdB9701b37fb7eF0FA", - "links": { - "Github": "https://github.com/sprux/BackToEarth", - "Homepage": "https://backto.earth" - }, - "marketcap_usd": 0, - "name": "GTKT", - "network": "eth", - "shortcut": "GTKT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GTO": { - "address": "0xC5bBaE50781Be1669306b9e001EFF57a2957b09d", - "links": { - "Github": "https://github.com/GIFTO-io", - "Homepage": "https://gifto.io/" - }, - "marketcap_usd": 0, - "name": "Gifto", - "network": "eth", - "shortcut": "GTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GUESS": { - "address": "0xBDCFbf5C4D91Abc0bC9709C7286d00063c0e6F22", - "links": { - "Homepage": "https://peerguess.com" - }, - "marketcap_usd": 0, - "name": "Peerguess", - "network": "eth", - "shortcut": "GUESS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GULD": { - "address": "0x9847345de8b614c956146bbea549336d9C8d26b6", - "links": { - "Github": "https://github.com/guldcoin", - "Homepage": "https://guld.io" - }, - "marketcap_usd": 0, - "name": "GULD ERC20", - "network": "eth", - "shortcut": "GULD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GUP": { - "address": "0xf7B098298f7C69Fc14610bf71d5e02c60792894C", - "links": { - "Homepage": "https://matchpool.co" - }, - "marketcap_usd": 0, - "name": "Matchpool", - "network": "eth", - "shortcut": "GUP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GVT": { - "address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", - "links": { - "Github": "https://github.com/GenesisVision", - "Homepage": "https://genesis.vision" - }, - "marketcap_usd": 849673, - "name": "Genesis Vision", - "network": "eth", - "shortcut": "GVT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GXC": { - "address": "0x58ca3065C0F24C7c96Aee8d6056b5B5deCf9c2f8", - "links": { - "Homepage": "https://genevieveco.com" - }, - "marketcap_usd": 0, - "name": "GXC", - "network": "eth", - "shortcut": "GXC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GXVC": { - "address": "0x22F0AF8D78851b72EE799e05F54A77001586B18A", - "links": { - "Github": "https://github.com/GxC17Genevieve/GXVC", - "Homepage": "https://genevieveco.io" - }, - "marketcap_usd": 0, - "name": "Genevieve VC", - "network": "eth", - "shortcut": "GXVC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GZB": { - "address": "0x9DAe8b7F6D37ea8e5d32C6c3E856a6d8a1d3B363", - "links": { - "Github": "https://github.com/Gigzi", - "Homepage": "https://gigzi.com" - }, - "marketcap_usd": 0, - "name": "GigziBlack", - "network": "eth", - "shortcut": "GZB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GZE": { - "address": "0x8C65e992297d5f092A756dEf24F4781a280198Ff", - "links": { - "Homepage": "https://gazecoin.io" - }, - "marketcap_usd": 0, - "name": "GazeCoin", - "network": "eth", - "shortcut": "GZE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GZM": { - "address": "0x0A680E503fd9ae14B62444C75ffB4BEf1F105666", - "links": { - "Github": "https://github.com/dimabarsu/GZM-Armacoin/blob/master/armacoin.sol", - "Homepage": "https://armacoin.info" - }, - "marketcap_usd": 0, - "name": "Arma Coin", - "network": "eth", - "shortcut": "GZM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:GZR": { - "address": "0xE638dc39b6aDBEE8526b5C22380b4b45dAf46d8e", - "links": { - "Github": "https://github.com/GizerInc/Gizer", - "Homepage": "https://gizer.io" - }, - "marketcap_usd": 0, - "name": "Gizer", - "network": "eth", - "shortcut": "GZR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HABS": { - "address": "0x5bfc1FF7f9e087C64fEfb34F2e7cF24e5570919F", - "links": { - "Homepage": "https://habitus.global/" - }, - "marketcap_usd": 0, - "name": "Habitus ", - "network": "eth", - "shortcut": "HABS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HAK": { - "address": "0x93a7174dafd31d13400cD9fa01f4e5B5BAa00D39", - "links": { - "Github": "https://github.com/friendsfingers", - "Homepage": "https://www.friendsfingers.com" - }, - "marketcap_usd": 0, - "name": "Shaka", - "network": "eth", - "shortcut": "HAK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HAND": { - "address": "0x48C1B2f3eFA85fbafb2ab951bF4Ba860a08cdBB7", - "links": { - "Homepage": "https://www.showhand.io" - }, - "marketcap_usd": 1007382, - "name": "ShowHand", - "network": "eth", - "shortcut": "HAND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HAPPY": { - "address": "0x5A567e28dbFa2bBD3ef13C0a01be114745349657", - "links": { - "Homepage": "https://btr.works" - }, - "marketcap_usd": 0, - "name": "Happiness", - "network": "eth", - "shortcut": "HAPPY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HAREM": { - "address": "0x2B89D32CfB9b28DFCc7FAcC22453c812F9097655", - "links": { - "Homepage": "https://harem-token.com/" - }, - "marketcap_usd": 0, - "name": "Harem Token", - "network": "eth", - "shortcut": "HAREM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HAT": { - "address": "0x9002D4485b7594e3E850F0a206713B305113f69e", - "links": { - "Homepage": "https://www.hawala.today/" - }, - "marketcap_usd": 0, - "name": "Hawala Today", - "network": "eth", - "shortcut": "HAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HB": { - "address": "0xE2492F8D2A2618d8709Ca99b1d8d75713Bd84089", - "links": { - "Homepage": "https://heartbout.com" - }, - "marketcap_usd": 11910, - "name": "HeartBout", - "network": "eth", - "shortcut": "HB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HBT": { - "address": "0xDd6C68bb32462e01705011a4e2Ad1a60740f217F", - "links": { - "Homepage": "https://www.hubii.network" - }, - "marketcap_usd": 0, - "name": "Hubii Network", - "network": "eth", - "shortcut": "HBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HBZ": { - "address": "0xE34e1944E776f39B9252790a0527eBDa647aE668", - "links": { - "Homepage": "https://www.hbzcoin.com/#" - }, - "marketcap_usd": 0, - "name": "HBZ coin", - "network": "eth", - "shortcut": "HBZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HDG": { - "address": "0xfFe8196bc259E8dEDc544d935786Aa4709eC3E64", - "links": { - "Homepage": "https://www.hedge-crypto.com" - }, - "marketcap_usd": 0, - "name": "Hedge Crypto", - "network": "eth", - "shortcut": "HDG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HDLRE": { - "address": "0x86a63063b3a60652FB070F23Cbb4A9833FDBBFF8", - "links": { - "Github": "https://github.com/HodlerCompany", - "Homepage": "https://hodler.energy" - }, - "marketcap_usd": 0, - "name": "Hodler Mining", - "network": "eth", - "shortcut": "HDLRE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HEM": { - "address": "0x19747816A030fECDa3394C6062CDF6b9B4dB0E0b", - "links": { - "Github": "https://github.com/Hemelios/hemelios-token", - "Homepage": "https://www.hemelios.io" - }, - "marketcap_usd": 0, - "name": "Hemelios", - "network": "eth", - "shortcut": "HEM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HER": { - "address": "0x491C9A23DB85623EEd455a8EfDd6AbA9b911C5dF", - "links": { - "Homepage": "https://heronode.io" - }, - "marketcap_usd": 0, - "name": "HeroNode", - "network": "eth", - "shortcut": "HER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HEX:2b59": { - "address": "0x2b591e99afE9f32eAA6214f7B7629768c40Eeb39", - "links": { - "Github": "https://github.com/bitcoinHEX", - "Homepage": "https://hex.win" - }, - "marketcap_usd": 10933582176, - "name": "HEX", - "network": "eth", - "shortcut": "HEX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HEY": { - "address": "0xe9C9e7E1DaBea830C958C39D6b25964a6F52143A", - "links": { - "Github": "https://github.com/hey-network", - "Homepage": "https://hey.network" - }, - "marketcap_usd": 0, - "name": "HeyToken", - "network": "eth", - "shortcut": "HEY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HGT": { - "address": "0xba2184520A1cC49a6159c57e61E1844E085615B6", - "links": { - "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org" - }, - "marketcap_usd": 0, - "name": "HelloGold", - "network": "eth", - "shortcut": "HGT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HIBT": { - "address": "0x9bb1Db1445b83213a56d90d331894b3f26218e4e", - "links": { - "Homepage": "https://www.hibtc.com/" - }, - "marketcap_usd": 0, - "name": "HiBTC Token", - "network": "eth", - "shortcut": "HIBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HIG": { - "address": "0xa9240fBCAC1F0b9A6aDfB04a53c8E3B0cC1D1444", - "links": { - "Github": "https://github.com/ethereumhigh/Ethereum-High", - "Homepage": "https://www.ethereumhigh.org/" - }, - "marketcap_usd": 0, - "name": "ethereumhigh", - "network": "eth", - "shortcut": "HIG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HIN": { - "address": "0x7FCcaDee21660425FDEc86029b6362845ffC052C", - "links": { - "Homepage": "https://tokens.rebene.com" - }, - "marketcap_usd": 0, - "name": "TimeBanking", - "network": "eth", - "shortcut": "HIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HKG": { - "address": "0x14F37B574242D366558dB61f3335289a5035c506", - "links": { - "Homepage": "http://www.ether.camp" - }, - "marketcap_usd": 0, - "name": "HKG", - "network": "eth", - "shortcut": "HKG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HKN": { - "address": "0x9e6B2B11542f2BC52f3029077acE37E8fD838D7F", - "links": { - "Homepage": "https://hacken.io" - }, - "marketcap_usd": 0, - "name": "Hacken", - "network": "eth", - "shortcut": "HKN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HKY": { - "address": "0x88aC94D5d175130347Fc95E109d77AC09dbF5ab7", - "links": { - "Github": "https://github.com/HickyToken/hickycontracts", - "Homepage": "https://hicky.io" - }, - "marketcap_usd": 0, - "name": "Hicky", - "network": "eth", - "shortcut": "HKY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HLX": { - "address": "0x66eb65D7Ab8e9567ba0fa6E37c305956c5341574", - "links": { - "Homepage": "https://helex.world" - }, - "marketcap_usd": 0, - "name": "Helex", - "network": "eth", - "shortcut": "HLX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HMQ": { - "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", - "links": { - "Homepage": "https://humaniq.com" - }, - "marketcap_usd": 774910, - "name": "Humaniq", - "network": "eth", - "shortcut": "HMQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HNI": { - "address": "0xD6Cb175719365a2ea630f266C53dDfBe4e468e25", - "links": { - "Homepage": "https://hunibit.com" - }, - "marketcap_usd": 0, - "name": "Hunimal Token", - "network": "eth", - "shortcut": "HNI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HNST": { - "address": "0x9C9Fe3bD60b22A9735908B9589011E78F2025C11", - "links": { - "Github": "https://github.com/honestmining", - "Homepage": "https://honestmining.com" - }, - "marketcap_usd": 0, - "name": "Honest", - "network": "eth", - "shortcut": "HNST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HODL": { - "address": "0xb45d7Bc4cEBcAB98aD09BABDF8C818B2292B672c", - "links": { - "Homepage": "https://github.com/arachnid/hodlcoin" - }, - "marketcap_usd": 0, - "name": "HODLCoin", - "network": "eth", - "shortcut": "HODL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HORSE": { - "address": "0x5B0751713b2527d7f002c0c4e2a37e1219610A6B", - "links": { - "Github": "https://github.com/ethorse", - "Homepage": "https://ethorse.com" - }, - "marketcap_usd": 0, - "name": "Ethorse", - "network": "eth", - "shortcut": "HORSE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HOT (Holo)": { - "address": "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", - "links": { - "Github": "https://github.com/Holo-Host", - "Homepage": "https://holo.host/" - }, - "marketcap_usd": 357796049, - "name": "Holo Token", - "network": "eth", - "shortcut": "HOT (Holo)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HOT (Hydro)": { - "address": "0x9AF839687F6C94542ac5ece2e317dAAE355493A1", - "links": { - "Homepage": "https://thehydrofoundation.com/" - }, - "marketcap_usd": 2858970, - "name": "Hydro Protocol", - "network": "eth", - "shortcut": "HOT (Hydro)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HST": { - "address": "0x554C20B7c486beeE439277b4540A434566dC4C02", - "links": { - "Homepage": "https://horizonstate.com" - }, - "marketcap_usd": 0, - "name": "Decision Token", - "network": "eth", - "shortcut": "HST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HT": { - "address": "0x6f259637dcD74C767781E37Bc6133cd6A68aa161", - "links": { - "Homepage": "https://www.hbg.com" - }, - "marketcap_usd": 856172229, - "name": "Huobi Token", - "network": "eth", - "shortcut": "HT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HTX": { - "address": "0x46ae264Bf6d9Dc6Dd84c31064551f961c67a755c", - "links": { - "Homepage": "https://www.hotcrypto.org" - }, - "marketcap_usd": 0, - "name": "HOT", - "network": "eth", - "shortcut": "HTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HUB": { - "address": "0xba358B6f5b4c0215650444B8C30D870B55050D2D", - "links": { - "Github": "https://github.com/hubtoken", - "Homepage": "https://hubtoken.org/" - }, - "marketcap_usd": 0, - "name": "HubToken", - "network": "eth", - "shortcut": "HUB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HUBS": { - "address": "0x001Fc4a7f2f586596308091c7B296D4535A25a90", - "links": { - "Github": "https://github.com/hubscop", - "Homepage": "https://hubscop.com" - }, - "marketcap_usd": 0, - "name": "Hubscop", - "network": "eth", - "shortcut": "HUBS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HUR": { - "address": "0xCDB7eCFd3403Eef3882c65B761ef9B5054890a47", - "links": { - "Github": "https://github.com/HurifyPlatform", - "Homepage": "https://hurify.co/" - }, - "marketcap_usd": 0, - "name": "$Hurify Token", - "network": "eth", - "shortcut": "HUR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HV": { - "address": "0x141ABB03F001dEDED9A0223d4ff26d929117B72e", - "links": { - "Github": "https://github.com/HighVibe", - "Homepage": "https://www.highvibe.network/" - }, - "marketcap_usd": 0, - "name": "HighVibe", - "network": "eth", - "shortcut": "HV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HVN": { - "address": "0xC0Eb85285d83217CD7c891702bcbC0FC401E2D9D", - "links": { - "Github": "https://github.com/HiveProjectLTD", - "Homepage": "https://www.hiveterminal.com" - }, - "marketcap_usd": 479398, - "name": "Hiveterminal Token", - "network": "eth", - "shortcut": "HVN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:HYDRO": { - "address": "0xEBBdf302c940c6bfd49C6b165f457fdb324649bc", - "links": { - "Github": "https://github.com/hydrogen-dev", - "Homepage": "https://www.hydrogenplatform.com/hydro" - }, - "marketcap_usd": 0, - "name": "Hydro", - "network": "eth", - "shortcut": "HYDRO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IAD": { - "address": "0xC1E2097d788d33701BA3Cc2773BF67155ec93FC4", - "links": { - "Github": "https://github.com/IADOWR", - "Homepage": "https://www.iadowrcoin.com" - }, - "marketcap_usd": 0, - "name": "IADOWR Coin", - "network": "eth", - "shortcut": "IAD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ICD": { - "address": "0x3c20d67b6B1aE0985F913aBb7397babc2fBb1A1F", - "links": { - "Github": "https://github.com/ICEDIUM", - "Homepage": "https://icedium.com" - }, - "marketcap_usd": 0, - "name": "ICEDIUM", - "network": "eth", - "shortcut": "ICD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ICE": { - "address": "0x5a84969bb663fb64F6d015DcF9F622Aedc796750", - "links": { - "Homepage": "https://idice.io" - }, - "marketcap_usd": 0, - "name": "ICE", - "network": "eth", - "shortcut": "ICE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ICN": { - "address": "0x888666CA69E0f178DED6D75b5726Cee99A87D698", - "links": { - "Homepage": "https://www.iconomi.net" - }, - "marketcap_usd": 0, - "name": "ICONOMI", - "network": "eth", - "shortcut": "ICN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ICO": { - "address": "0xa33e729bf4fdeb868B534e1f20523463D9C46bEe", - "links": { - "Homepage": "http://icocoin.org" - }, - "marketcap_usd": 0, - "name": "ICO", - "network": "eth", - "shortcut": "ICO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ICOS": { - "address": "0x014B50466590340D41307Cc54DCee990c8D58aa8", - "links": { - "Homepage": "https://icos.icobox.io" - }, - "marketcap_usd": 0, - "name": "ICOS", - "network": "eth", - "shortcut": "ICOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ID": { - "address": "0xEBd9D99A3982d547C5Bb4DB7E3b1F9F14b67Eb83", - "links": { - "Homepage": "https://www.everest.org" - }, - "marketcap_usd": 4268877, - "name": "Everest (ID)", - "network": "eth", - "shortcut": "ID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IDEA": { - "address": "0x814CAfd4782d2e728170FDA68257983F03321c58", - "links": { - "Homepage": "http://www.ideatoken.io/" - }, - "marketcap_usd": 0, - "name": "IDEA Token", - "network": "eth", - "shortcut": "IDEA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IDH": { - "address": "0x5136C98A80811C3f46bDda8B5c4555CFd9f812F0", - "links": { - "Homepage": "https://indahash.com" - }, - "marketcap_usd": 0, - "name": "indaHash", - "network": "eth", - "shortcut": "IDH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IDRT": { - "address": "0x998FFE1E43fAcffb941dc337dD0468d52bA5b48A", - "links": { - "Github": "https://github.com/rupiah-token/", - "Homepage": "https://www.rupiahtoken.com" - }, - "marketcap_usd": 7924738, - "name": "Rupiah Token", - "network": "eth", - "shortcut": "IDRT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IFT": { - "address": "0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E", - "links": { - "Homepage": "https://investfeed.com" - }, - "marketcap_usd": 134220, - "name": "InvestFeed", - "network": "eth", - "shortcut": "IFT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IG": { - "address": "0x8a88f04e0c905054D2F33b26BB3A46D7091A039A", - "links": { - "Homepage": "http://igtoken.net" - }, - "marketcap_usd": 69787, - "name": "IGToken", - "network": "eth", - "shortcut": "IG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IGI": { - "address": "0x449c640B6C7fce4f8aD2e3Dcd900D13be40174Af", - "links": { - "Github": "https://github.com/igicoin/IGI", - "Homepage": "https://igicoin.com" - }, - "marketcap_usd": 0, - "name": "IGICOIN", - "network": "eth", - "shortcut": "IGI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IHT": { - "address": "0xEda8B016efA8b1161208Cf041cD86972eeE0F31E", - "links": { - "Homepage": "https://ihtcoin.com" - }, - "marketcap_usd": 159461, - "name": "I HOUSE TOKEN", - "network": "eth", - "shortcut": "IHT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IIC": { - "address": "0x16662F73dF3e79e54c6c5938b4313f92C524C120", - "links": { - "Homepage": "https://ibiscoin.co" - }, - "marketcap_usd": 0, - "name": "IIC", - "network": "eth", - "shortcut": "IIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IKB": { - "address": "0x88AE96845e157558ef59e9Ff90E766E22E480390", - "links": { - "Github": "https://github.com/mitchellfchan/IKB", - "Homepage": "http://www.mitchellfchan.com" - }, - "marketcap_usd": 0, - "name": "IKB", - "network": "eth", - "shortcut": "IKB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IMC": { - "address": "0xe3831c5A982B279A198456D577cfb90424cb6340", - "links": { - "Homepage": "http://immunecoin.info" - }, - "marketcap_usd": 0, - "name": "Immune Coin", - "network": "eth", - "shortcut": "IMC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IND": { - "address": "0xf8e386EDa857484f5a12e4B5DAa9984E06E73705", - "links": { - "Homepage": "https://indorse.io" - }, - "marketcap_usd": 148825, - "name": "Indorse", - "network": "eth", - "shortcut": "IND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:INF": { - "address": "0x00E150D741Eda1d49d341189CAE4c08a73a49C95", - "links": { - "Github": "https://github.com/InfinitusToken/InfinitusToken", - "Homepage": "https://inftech.io/ " - }, - "marketcap_usd": 0, - "name": "InfinitusTokens", - "network": "eth", - "shortcut": "INF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ING": { - "address": "0x24dDFf6D8B8a42d835af3b440De91f3386554Aa4", - "links": { - "Homepage": "https://iungo.network" - }, - "marketcap_usd": 0, - "name": "Iungo", - "network": "eth", - "shortcut": "ING", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:INS": { - "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", - "links": { - "Homepage": "https://insolar.io" - }, - "marketcap_usd": 0, - "name": "Insolar", - "network": "eth", - "shortcut": "INS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:INSTAR": { - "address": "0xc72fe8e3Dd5BeF0F9f31f259399F301272eF2a2D", - "links": { - "Homepage": "https://insights.network" - }, - "marketcap_usd": 0, - "name": "Insights Network", - "network": "eth", - "shortcut": "INSTAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:INT": { - "address": "0x0b76544F6C413a555F309Bf76260d1E02377c02A", - "links": { - "Homepage": "https://intchain.io" - }, - "marketcap_usd": 0, - "name": "Internet Node Token", - "network": "eth", - "shortcut": "INT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:INX": { - "address": "0x018d7D179350f1Bb9853D04982820E37ccE13a92", - "links": { - "Github": "https://github.com/InMax-Exchange", - "Homepage": "https://inmax.live/ " - }, - "marketcap_usd": 0, - "name": "Token INMAX", - "network": "eth", - "shortcut": "INX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:INXT": { - "address": "0xa8006C4ca56F24d6836727D106349320dB7fEF82", - "links": { - "Github": "https://github.com/Internxt/", - "Homepage": "https://internxt.com/" - }, - "marketcap_usd": 0, - "name": "Internxt", - "network": "eth", - "shortcut": "INXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IOST": { - "address": "0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab", - "links": { - "Homepage": "https://iost.io/" - }, - "marketcap_usd": 0, - "name": "IOSToken", - "network": "eth", - "shortcut": "IOST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IOTX": { - "address": "0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69", - "links": { - "Github": "https://github.com/iotexproject/iotex-core", - "Homepage": "http://iotex.io/" - }, - "marketcap_usd": 264394884, - "name": "IoTeX Network", - "network": "eth", - "shortcut": "IOTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IPL": { - "address": "0x64CdF819d3E75Ac8eC217B3496d7cE167Be42e80", - "links": { - "Github": "https://github.com/InsurePal", - "Homepage": "https://insurepal.io/" - }, - "marketcap_usd": 34625, - "name": "InsurePal token", - "network": "eth", - "shortcut": "IPL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IPSX": { - "address": "0x001F0aA5dA15585e5b2305DbaB2bac425ea71007", - "links": { - "Homepage": "https://ip.sx" - }, - "marketcap_usd": 0, - "name": "IP Exchange", - "network": "eth", - "shortcut": "IPSX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IQN": { - "address": "0x0DB8D8b76BC361bAcbB72E2C491E06085A97Ab31", - "links": { - "Github": "https://github.com/iqeon", - "Homepage": "https://iqeon.io/" - }, - "marketcap_usd": 1731566, - "name": "IQeon", - "network": "eth", - "shortcut": "IQN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ISL": { - "address": "0x1969442391737025812C2215E77E676d7fA84847", - "links": { - "Github": "https://github.com/islamicbankcoin", - "Homepage": "http://islamicbankcoin.com" - }, - "marketcap_usd": 0, - "name": "Islamic Bank", - "network": "eth", - "shortcut": "ISL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IST34": { - "address": "0x0cF713b11C9b986EC40D65bD4F7fbd50F6ff2d64", - "links": { - "Github": "https://github.com/IST34Token", - "Homepage": "https://hiperteknoloji.org" - }, - "marketcap_usd": 0, - "name": "IST34 Token", - "network": "eth", - "shortcut": "IST34", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ITC": { - "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", - "links": { - "Github": "https://github.com/IoTChainCode", - "Homepage": "https://iotchain.io/" - }, - "marketcap_usd": 0, - "name": "IoT Chain", - "network": "eth", - "shortcut": "ITC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ITO": { - "address": "0x293B0Cd0991DB07c8529fEBb01bc7D052315C5Ab", - "links": { - "Github": "https://github.com/InTimeFoundation", - "Homepage": "https://www.intimefoundation.org" - }, - "marketcap_usd": 0, - "name": "InTime", - "network": "eth", - "shortcut": "ITO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ITR": { - "address": "0x6Ef5febbD2A56FAb23f18a69d3fB9F4E2A70440B", - "links": { - "Github": "http://github.com/Intercoin", - "Homepage": "https://intercoin.org" - }, - "marketcap_usd": 0, - "name": "Intercoin", - "network": "eth", - "shortcut": "ITR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ITT": { - "address": "0x0aeF06DcCCC531e581f0440059E6FfCC206039EE", - "links": { - "Github": "https://github.com/IntelligentTrading", - "Homepage": "http://intelligenttrading.org" - }, - "marketcap_usd": 0, - "name": "ITT Token", - "network": "eth", - "shortcut": "ITT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IVY": { - "address": "0xA4eA687A2A7F29cF2dc66B39c68e4411C0D00C49", - "links": { - "Homepage": "https://www.ivykoin.com" - }, - "marketcap_usd": 0, - "name": "IvyKoin Public Network Tokens", - "network": "eth", - "shortcut": "IVY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IXT": { - "address": "0xfcA47962D45ADFdfd1Ab2D972315dB4ce7CCf094", - "links": { - "Homepage": "https://www.insurex.co" - }, - "marketcap_usd": 60603, - "name": "InsureX", - "network": "eth", - "shortcut": "IXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:IoT": { - "address": "0xC34B21f6F8e51cC965c2393B3ccFa3b82BEb2403", - "links": { - "Homepage": "http://www.bitcoin-biz.net" - }, - "marketcap_usd": 0, - "name": "IoT\u30b3\u30a4\u30f3", - "network": "eth", - "shortcut": "IoT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:J8T": { - "address": "0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4", - "links": { - "Github": "https://github.com/jet8", - "Homepage": "https://jet8.io" - }, - "marketcap_usd": 0, - "name": "J8T Token", - "network": "eth", - "shortcut": "J8T", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JASMY": { - "address": "0x7420B4b9a0110cdC71fB720908340C03F9Bc03EC", - "links": { - "Github": "https://github.com/TokyoToken/JasmyCoin", - "Homepage": "https://jasmy.co.jp" - }, - "marketcap_usd": 285268503, - "name": "JasmyCoin", - "network": "eth", - "shortcut": "JASMY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JBD": { - "address": "0x9A3619499825fbAe63329Aa8bCb3f10CD5958E1c", - "links": { - "Homepage": "https://jubileedollar.com" - }, - "marketcap_usd": 0, - "name": "Jubilee Dollar", - "network": "eth", - "shortcut": "JBD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JBX": { - "address": "0x884e3902C4d5cFA86de4aCE7A96AA91EbC25C0Ff", - "links": { - "Homepage": "https://www.jboxcoin.org" - }, - "marketcap_usd": 0, - "name": "JBOX", - "network": "eth", - "shortcut": "JBX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JC": { - "address": "0xE2D82Dc7dA0E6f882E96846451F4faBcc8f90528", - "links": { - "Homepage": "https://jesuscoin.network" - }, - "marketcap_usd": 0, - "name": "Jesus Coin", - "network": "eth", - "shortcut": "JC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JNT": { - "address": "0xa5Fd1A791C4dfcaacC963D4F73c6Ae5824149eA7", - "links": { - "Github": "https://github.com/jibrelnetwork", - "Homepage": "https://jibrel.network" - }, - "marketcap_usd": 0, - "name": "Jibrel Network", - "network": "eth", - "shortcut": "JNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JOB:dfbc": { - "address": "0xdfbc9050F5B01DF53512DCC39B4f2B2BBaCD517A", - "links": { - "Github": "https://github.com/JobchainOfficial", - "Homepage": "https://www.jobchain.com" - }, - "marketcap_usd": 2519134, - "name": "Jobchain", - "network": "eth", - "shortcut": "JOB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JOT": { - "address": "0xdb455c71C1bC2de4e80cA451184041Ef32054001", - "links": { - "Homepage": "https://jury.online" - }, - "marketcap_usd": 0, - "name": "Jury.Online Token", - "network": "eth", - "shortcut": "JOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JOY": { - "address": "0xDDe12a12A6f67156e0DA672be05c374e1B0a3e57", - "links": { - "Homepage": "https://joyso.io/" - }, - "marketcap_usd": 0, - "name": "JOYSO", - "network": "eth", - "shortcut": "JOY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:JSE": { - "address": "0x2d184014b5658C453443AA87c8e9C4D57285620b", - "links": { - "Github": "https://github.com/jsecoin", - "Homepage": "https://jsecoin.com" - }, - "marketcap_usd": 0, - "name": "JSE Token", - "network": "eth", - "shortcut": "JSE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KAN": { - "address": "0x1410434b0346f5bE678d0FB554E5c7ab620f8f4a", - "links": { - "Homepage": "http://www.kan.land" - }, - "marketcap_usd": 11935328, - "name": "BitKan", - "network": "eth", - "shortcut": "KAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KAPA": { - "address": "0xe15254a13D34F9700320330abcb7c7F857aF2Fb7", - "links": { - "Github": "https://github.com/kapacoin", - "Homepage": "http://kapacoin.com" - }, - "marketcap_usd": 0, - "name": "KAPA COIN", - "network": "eth", - "shortcut": "KAPA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KC": { - "address": "0x0D6DD9f68d24EC1d5fE2174f3EC8DAB52B52BaF5", - "links": { - "Homepage": "https://www.kmcc.io" - }, - "marketcap_usd": 0, - "name": "KMCC", - "network": "eth", - "shortcut": "KC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KIN": { - "address": "0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5", - "links": { - "Github": "https://github.com/kikinteractive/kin-token", - "Homepage": "https://kin.kik.com" - }, - "marketcap_usd": 0, - "name": "Kin Foundation", - "network": "eth", - "shortcut": "KIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KIND": { - "address": "0x4618519de4C304F3444ffa7f812dddC2971cc688", - "links": { - "Homepage": "https://kindads.io" - }, - "marketcap_usd": 0, - "name": "Kind Ads Token", - "network": "eth", - "shortcut": "KIND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KLOWN": { - "address": "0xc97A5cdF41BAfD51c8dBE82270097e704d748b92", - "links": { - "Homepage": "https://etherclown.com/" - }, - "marketcap_usd": 0, - "name": "Ether Clown", - "network": "eth", - "shortcut": "KLOWN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KNC": { - "address": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", - "links": { - "Github": "https://github.com/KyberNetwork", - "Homepage": "https://kyber.network" - }, - "marketcap_usd": 0, - "name": "Kyber Network", - "network": "eth", - "shortcut": "KNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KNDC": { - "address": "0x8E5610ab5E39d26828167640EA29823fe1dD5843", - "links": { - "Homepage": "https://kanadecoin.com" - }, - "marketcap_usd": 89020, - "name": "KanadeCoin", - "network": "eth", - "shortcut": "KNDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KNT": { - "address": "0xfF5c25D2F40B47C4a37f989DE933E26562Ef0Ac0", - "links": { - "Homepage": "https://kora.network" - }, - "marketcap_usd": 0, - "name": "Kora Network Token", - "network": "eth", - "shortcut": "KNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KPR": { - "address": "0xb5C33F965C8899D255c34CDD2A3efA8AbCbB3DeA", - "links": { - "Github": "https://github.com/KPRToken/KPR-code-for-ICO", - "Homepage": "https://www.kprms.com/" - }, - "marketcap_usd": 0, - "name": "KPRCoin", - "network": "eth", - "shortcut": "KPR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KRI": { - "address": "0xeef8102A0D46D508f171d7323BcEffc592835F13", - "links": { - "Homepage": "https://www.krios.io" - }, - "marketcap_usd": 0, - "name": "Krios", - "network": "eth", - "shortcut": "KRI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KRL": { - "address": "0x464eBE77c293E473B48cFe96dDCf88fcF7bFDAC0", - "links": { - "Github": "https://github.com/Cryptense/", - "Homepage": "https://kryll.io/" - }, - "marketcap_usd": 11584452, - "name": "Kryll", - "network": "eth", - "shortcut": "KRL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KRP": { - "address": "0xAefad686f4b894ce4F9c74af755AB4651E420EbA", - "links": { - "Homepage": "https://krisper.io" - }, - "marketcap_usd": 0, - "name": "Krisper", - "network": "eth", - "shortcut": "KRP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KRTY": { - "address": "0xbD4AB8b9C26c4888e2792cAC6d5793Efea9eBb20", - "links": { - "Github": "https://github.com/kartiywallet", - "Homepage": "https://www.kartiy.com" - }, - "marketcap_usd": 0, - "name": "KARTIY", - "network": "eth", - "shortcut": "KRTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KRW-G": { - "address": "0x4CC8486F2F3dCE2d3B5E27057Cf565e16906D12D", - "links": { - "Github": "https://github.com/gluwa/Gluwacoin", - "Homepage": "https://www.gluwa.com/gluwacoin" - }, - "marketcap_usd": 0, - "name": "KRW Gluwacoin", - "network": "eth", - "shortcut": "KRW-G", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KUE": { - "address": "0xdf1338FbAfe7aF1789151627B886781ba556eF9a", - "links": { - "Homepage": "https://ico.kuende.com" - }, - "marketcap_usd": 0, - "name": "Kuende Token", - "network": "eth", - "shortcut": "KUE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KWATT": { - "address": "0x241bA672574A78a3A604CDd0a94429A73a84a324", - "links": { - "Homepage": "https://4new.io" - }, - "marketcap_usd": 0, - "name": "4NEW", - "network": "eth", - "shortcut": "KWATT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KXC": { - "address": "0x016396044709EB3edc69C44f4d5Fa6996917E4e8", - "links": { - "Homepage": "https://kingxchain.com/" - }, - "marketcap_usd": 0, - "name": "Token KingXChain", - "network": "eth", - "shortcut": "KXC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:KZN": { - "address": "0x9541FD8B9b5FA97381783783CeBF2F5fA793C262", - "links": { - "Homepage": "http://kaizencoin.io" - }, - "marketcap_usd": 0, - "name": "KaizenCoin", - "network": "eth", - "shortcut": "KZN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LA": { - "address": "0xE50365f5D679CB98a1dd62D6F6e58e59321BcdDf", - "links": { - "Github": "https://github.com/latoken", - "Homepage": "https://latoken.com/" - }, - "marketcap_usd": 12469110, - "name": "LATOKEN", - "network": "eth", - "shortcut": "LA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LALA": { - "address": "0xfD107B473AB90e8Fbd89872144a3DC92C40Fa8C9", - "links": { - "Homepage": "https://lalaworld.io/" - }, - "marketcap_usd": 0, - "name": "LALA World Token", - "network": "eth", - "shortcut": "LALA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LAMB": { - "address": "0x8971f9fd7196e5cEE2C1032B50F656855af7Dd26", - "links": { - "Github": "https://github.com/LambdaIM", - "Homepage": "https://www.lambda.im/" - }, - "marketcap_usd": 3436594, - "name": "Lambda", - "network": "eth", - "shortcut": "LAMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LATX": { - "address": "0x2f85E502a988AF76f7ee6D83b7db8d6c0A823bf9", - "links": { - "Homepage": "https://latium.org" - }, - "marketcap_usd": 0, - "name": "LatiumX", - "network": "eth", - "shortcut": "LATX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LBA": { - "address": "0xfe5F141Bf94fE84bC28deD0AB966c16B17490657", - "links": { - "Homepage": "https://www.mycred.io" - }, - "marketcap_usd": 1984754, - "name": "Cred", - "network": "eth", - "shortcut": "LBA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LCS": { - "address": "0xAA19961b6B858D9F18a115f25aa1D98ABc1fdBA8", - "links": { - "Homepage": "https://www.localcoinswap.com" - }, - "marketcap_usd": 0, - "name": "LocalCoinSwap", - "network": "eth", - "shortcut": "LCS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LDC": { - "address": "0x5102791cA02FC3595398400BFE0e33d7B6C82267", - "links": { - "Homepage": "https://www.leadcoin.network/" - }, - "marketcap_usd": 0, - "name": "LEADCOIN", - "network": "eth", - "shortcut": "LDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LDX": { - "address": "0x9eFa0e2387E4CBA02a6E4E6594b8f4Dd209a0b93", - "links": { - "Github": "https://github.com/jba123", - "Homepage": "https://londoncoin.io/" - }, - "marketcap_usd": 0, - "name": "LondonCoin", - "network": "eth", - "shortcut": "LDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LEDU": { - "address": "0x5b26C5D0772E5bbaC8b3182AE9a13f9BB2D03765", - "links": { - "Github": "https://github.com/livecodingtvofficial", - "Homepage": "https://ledu.education-ecosystem.com" - }, - "marketcap_usd": 0, - "name": "Education Ecosystem", - "network": "eth", - "shortcut": "LEDU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LEND": { - "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", - "links": { - "Github": "https://github.com/ETHLend", - "Homepage": "https://aave.com/" - }, - "marketcap_usd": 0, - "name": "ETHLend", - "network": "eth", - "shortcut": "LEND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LEO": { - "address": "0xf97b5d65Da6b0468b90D531ddae2a69843e6797d", - "links": { - "Homepage": "https://www.leocoin.org/" - }, - "marketcap_usd": 0, - "name": "LEOcoin", - "network": "eth", - "shortcut": "LEO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LEV": { - "address": "0x0F4CA92660Efad97a9a70CB0fe969c755439772C", - "links": { - "Homepage": "https://www.leverj.io" - }, - "marketcap_usd": 0, - "name": "Leverj", - "network": "eth", - "shortcut": "LEV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LFR": { - "address": "0xc798cd1c49db0E297312E4c682752668CE1dB2AD", - "links": { - "Homepage": "https://www.liferun.cc" - }, - "marketcap_usd": 0, - "name": "LifeRun Coin", - "network": "eth", - "shortcut": "LFR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LGD": { - "address": "0x59061b6f26BB4A9cE5828A19d35CFD5A4B80F056", - "links": { - "Homepage": "http://legendsroomlv.com" - }, - "marketcap_usd": 0, - "name": "Legends", - "network": "eth", - "shortcut": "LGD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LGO": { - "address": "0x0a50C93c762fDD6E56D86215C24AaAD43aB629aa", - "links": { - "Github": "https://github.com/lgo-public", - "Homepage": "https://lgo.group" - }, - "marketcap_usd": 0, - "name": "LGO Token", - "network": "eth", - "shortcut": "LGO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LGR": { - "address": "0x2eb86e8fC520E0F6Bb5D9Af08F924fe70558Ab89", - "links": { - "Homepage": "https://getlogarithm.com" - }, - "marketcap_usd": 0, - "name": "Logarithm", - "network": "eth", - "shortcut": "LGR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LIBER": { - "address": "0xE6DfBF1FAcA95036B8E76e1Fb28933D025B76Cc0", - "links": { - "Homepage": "https://www.libereum.io" - }, - "marketcap_usd": 0, - "name": "Libereum", - "network": "eth", - "shortcut": "LIBER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LIF": { - "address": "0xEB9951021698B42e4399f9cBb6267Aa35F82D59D", - "links": { - "Github": "https://github.com/windingtree", - "Homepage": "https://windingtree.com/" - }, - "marketcap_usd": 0, - "name": "Winding Tree", - "network": "eth", - "shortcut": "LIF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LIFE": { - "address": "0xfF18DBc487b4c2E3222d115952bABfDa8BA52F5F", - "links": { - "Homepage": "http://www.lifelabs.io" - }, - "marketcap_usd": 0, - "name": "LIFE", - "network": "eth", - "shortcut": "LIFE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LIKE": { - "address": "0x02F61Fd266DA6E8B102D4121f5CE7b992640CF98", - "links": { - "Github": "https://github.com/likecoin", - "Homepage": "https://like.co" - }, - "marketcap_usd": 0, - "name": "LikeCoin", - "network": "eth", - "shortcut": "LIKE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LINK (Chainlink)": { - "address": "0x514910771AF9Ca656af840dff83E8264EcF986CA", - "links": { - "Homepage": "https://link.smartcontract.com" - }, - "marketcap_usd": 3706867339, - "name": "Chainlink", - "network": "eth", - "shortcut": "LINK (Chainlink)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LIVE": { - "address": "0x24A77c1F17C547105E14813e517be06b0040aa76", - "links": { - "Homepage": "https://livestars.io" - }, - "marketcap_usd": 0, - "name": "LIVE Token", - "network": "eth", - "shortcut": "LIVE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LKY": { - "address": "0x49bD2DA75b1F7AF1E4dFd6b1125FEcDe59dBec58", - "links": { - "Homepage": "https://www.linkey.info" - }, - "marketcap_usd": 0, - "name": "Linkey", - "network": "eth", - "shortcut": "LKY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LML": { - "address": "0x25B6325f5BB1c1E03cfbC3e53F470E1F1ca022E3", - "links": { - "Github": "https://github.com/GNYIO", - "Homepage": "https://www.gny.io/lisk" - }, - "marketcap_usd": 513069, - "name": "Lisk Machine Learning", - "network": "eth", - "shortcut": "LML", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LMY": { - "address": "0x66fD97a78d8854fEc445cd1C80a07896B0b4851f", - "links": { - "Github": "https://github.com/LunchMoneyToken", - "Homepage": "https://www.lunchmoney.io/" - }, - "marketcap_usd": 0, - "name": "Lunch Money", - "network": "eth", - "shortcut": "LMY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LND": { - "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", - "links": { - "Github": "https://github.com/lendingblock", - "Homepage": "https://lendingblock.com" - }, - "marketcap_usd": 0, - "name": "Lendingblock", - "network": "eth", - "shortcut": "LND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LOC": { - "address": "0x5e3346444010135322268a4630d2ED5F8D09446c", - "links": { - "Homepage": "https://LockChain.co" - }, - "marketcap_usd": 0, - "name": "LockChain", - "network": "eth", - "shortcut": "LOC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LOCI": { - "address": "0x9c23D67AEA7B95D80942e3836BCDF7E708A747C2", - "links": { - "Github": "http://github.com/locipro/loci-coin-sale", - "Homepage": "https://locipro.com" - }, - "marketcap_usd": 0, - "name": "LOCIcoin", - "network": "eth", - "shortcut": "LOCI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LOCUS": { - "address": "0xC64500DD7B0f1794807e67802F8Abbf5F8Ffb054", - "links": { - "Homepage": "https://www.locuschain.com" - }, - "marketcap_usd": 106084983, - "name": "Locus Chain", - "network": "eth", - "shortcut": "LOCUS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LOK": { - "address": "0x21aE23B882A340A22282162086bC98D3E2B73018", - "links": { - "Homepage": "https://lookrev.com" - }, - "marketcap_usd": 0, - "name": "LOK", - "network": "eth", - "shortcut": "LOK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LOOK": { - "address": "0x253C7dd074f4BaCb305387F922225A4f737C08bd", - "links": { - "Homepage": "https://lookrev.com" - }, - "marketcap_usd": 0, - "name": "LookRev", - "network": "eth", - "shortcut": "LOOK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LOOKS": { - "address": "0xf4d2888d29D722226FafA5d9B24F9164c092421E", - "links": { - "Homepage": "https://looksrare.org/" - }, - "marketcap_usd": 87358911, - "name": "LooksRare", - "network": "eth", - "shortcut": "LOOKS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LOOM": { - "address": "0x42476F744292107e34519F9c357927074Ea3F75D", - "links": { - "Github": "github.com/loomnetwork/", - "Homepage": "https://loomx.io" - }, - "marketcap_usd": 68665519, - "name": "LOOM", - "network": "eth", - "shortcut": "LOOM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LPT": { - "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", - "links": { - "Github": "https://github.com/livepeer", - "Homepage": "https://livepeer.org/" - }, - "marketcap_usd": 202398732, - "name": "Livepeer Token", - "network": "eth", - "shortcut": "LPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LQD": { - "address": "0xD29F0b5b3F50b07Fe9a9511F7d86F4f4bAc3f8c4", - "links": { - "Homepage": "https://liquidity.network/" - }, - "marketcap_usd": 0, - "name": "Liquidity Network Token", - "network": "eth", - "shortcut": "LQD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LRC": { - "address": "0xBBbbCA6A901c926F240b89EacB641d8Aec7AEafD", - "links": { - "Github": "https://github.com/loopring", - "Homepage": "https://loopring.org" - }, - "marketcap_usd": 488986992, - "name": "Loopring", - "network": "eth", - "shortcut": "LRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LUC": { - "address": "0x5dbe296F97B23C4A6AA6183D73e574D02bA5c719", - "links": { - "Github": "https://github.com/Play2Live/blockchain", - "Homepage": "https://play2live.io" - }, - "marketcap_usd": 0, - "name": "LUCToken", - "network": "eth", - "shortcut": "LUC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LUCHOW": { - "address": "0xA5Ef74068d04ba0809B7379dD76Af5Ce34Ab7C57", - "links": { - "Github": "https://github.com/lunachoww/contract", - "Homepage": "https://lunachow.com" - }, - "marketcap_usd": 0, - "name": "LunaChow", - "network": "eth", - "shortcut": "LUCHOW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LUCK": { - "address": "0xFB12e3CcA983B9f59D90912Fd17F8D745A8B2953", - "links": { - "Homepage": "http://www.luckytoken.info" - }, - "marketcap_usd": 0, - "name": "LUCK", - "network": "eth", - "shortcut": "LUCK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LUM": { - "address": "0xA89b5934863447f6E4Fc53B315a93e873bdA69a3", - "links": { - "Homepage": "https://www.luminocoin.com" - }, - "marketcap_usd": 0, - "name": "Lumino Coin", - "network": "eth", - "shortcut": "LUM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LUN": { - "address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", - "links": { - "Github": "https://github.com/lunyr", - "Homepage": "https://lunyr.com" - }, - "marketcap_usd": 39214, - "name": "Lunyr", - "network": "eth", - "shortcut": "LUN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LVN": { - "address": "0xc8Cac7672f4669685817cF332a33Eb249F085475", - "links": { - "Github": "https://github.com/livenpay", - "Homepage": "https://livenpay.io" - }, - "marketcap_usd": 0, - "name": "LivenCoin", - "network": "eth", - "shortcut": "LVN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:LYS": { - "address": "0xdD41fBd1Ae95C5D9B198174A28e04Be6b3d1aa27", - "links": { - "Github": "https://github.com/LIGHTYEARS-LYS/LIGHTYEARS-Token", - "Homepage": "https://lightyearstoken.com" - }, - "marketcap_usd": 0, - "name": "Lightyears", - "network": "eth", - "shortcut": "LYS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:M-ETH": { - "address": "0x3f4B726668da46f5e0E75aA5D478ACEc9f38210F", - "links": { - "Homepage": "http://www.mostexclusive.com" - }, - "marketcap_usd": 0, - "name": "M-ETH", - "network": "eth", - "shortcut": "M-ETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MAD": { - "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", - "links": { - "Homepage": "https://madnetwork.io" - }, - "marketcap_usd": 0, - "name": "MAD", - "network": "eth", - "shortcut": "MAD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MAGIC": { - "address": "0xB0c7a3Ba49C7a6EaBa6cD4a96C55a1391070Ac9A", - "links": { - "Github": "https://github.com/TreasureProject", - "Homepage": "https://treasure.lol/" - }, - "marketcap_usd": 334874623, - "name": "MAGIC", - "network": "eth", - "shortcut": "MAGIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MAN": { - "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", - "links": { - "Github": "https://github.com/MatrixAINetwork", - "Homepage": "https://www.matrix.io" - }, - "marketcap_usd": 0, - "name": "Matrix AI Network", - "network": "eth", - "shortcut": "MAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MANA": { - "address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", - "links": { - "Github": "https://github.com/decentraland", - "Homepage": "https://decentraland.org" - }, - "marketcap_usd": 1197020889, - "name": "Decentraland MANA", - "network": "eth", - "shortcut": "MANA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MART": { - "address": "0xfdcc07Ab60660de533b5Ad26e1457b565a9D59Bd", - "links": { - "Homepage": "https://martcoin.io" - }, - "marketcap_usd": 0, - "name": "Martcoin", - "network": "eth", - "shortcut": "MART", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MAS": { - "address": "0x23Ccc43365D9dD3882eab88F43d515208f832430", - "links": { - "Homepage": "https://midasprotocol.io/" - }, - "marketcap_usd": 46340, - "name": "MIDAS PROTOCOL", - "network": "eth", - "shortcut": "MAS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MATIC": { - "address": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", - "links": { - "Homepage": "https://polygon.technology/" - }, - "marketcap_usd": 10673372779, - "name": "Matic Token", - "network": "eth", - "shortcut": "MATIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MBRS": { - "address": "0x386467F1f3ddbE832448650418311a479EECFC57", - "links": { - "Github": "https://github.com/theembermine", - "Homepage": "https://embermine.com/" - }, - "marketcap_usd": 0, - "name": "Embers", - "network": "eth", - "shortcut": "MBRS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MCAP": { - "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", - "links": { - "Homepage": "https://bitcoingrowthfund.com/mcap" - }, - "marketcap_usd": 0, - "name": "MCAP", - "network": "eth", - "shortcut": "MCAP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MCI": { - "address": "0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C", - "links": { - "Github": "https://github.com/musiconomi/", - "Homepage": "https://musiconomi.com/" - }, - "marketcap_usd": 0, - "name": "Musiconomi", - "network": "eth", - "shortcut": "MCI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MCO": { - "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", - "links": { - "Homepage": "https://crypto.com" - }, - "marketcap_usd": 0, - "name": "Crypto.com", - "network": "eth", - "shortcut": "MCO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MDA": { - "address": "0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd", - "links": { - "Homepage": "https://moedaseeds.com" - }, - "marketcap_usd": 1291844, - "name": "Moeda Loyalty Points", - "network": "eth", - "shortcut": "MDA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MDT": { - "address": "0x814e0908b12A99FeCf5BC101bB5d0b8B5cDf7d26", - "links": { - "Homepage": "https://www.mdt.co" - }, - "marketcap_usd": 41400337, - "name": "Measurable Data Token", - "network": "eth", - "shortcut": "MDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MDX": { - "address": "0x947AEb02304391f8fbE5B25D7D98D649b57b1788", - "links": { - "Homepage": "https://trade.mandala.exchange" - }, - "marketcap_usd": 0, - "name": "Mandala Exchange Token", - "network": "eth", - "shortcut": "MDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MEDCASH": { - "address": "0x6652Fa201B6BBBC0b5b0aD3f5702b2B9849cc830", - "links": { - "Homepage": "https://medxchange.io" - }, - "marketcap_usd": 0, - "name": "MEDCASH", - "network": "eth", - "shortcut": "MEDCASH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MEDX": { - "address": "0xfd1e80508F243E64CE234eA88A5Fd2827c71D4b7", - "links": { - "Homepage": "https://medibloc.org" - }, - "marketcap_usd": 0, - "name": "MediBloc [ERC20]", - "network": "eth", - "shortcut": "MEDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MEME": { - "address": "0xD5525D397898e5502075Ea5E830d8914f6F0affe", - "links": { - "Homepage": "https://dontbuymeme.com" - }, - "marketcap_usd": 1541109, - "name": "Meme", - "network": "eth", - "shortcut": "MEME", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MESG": { - "address": "0x420167D87d35c3A249b32Ef6225872fBD9aB85D2", - "links": { - "Github": "https://github.com/mesg-foundation", - "Homepage": "https://mesg.com" - }, - "marketcap_usd": 0, - "name": "MESG", - "network": "eth", - "shortcut": "MESG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MEST": { - "address": "0x5B8D43FfdE4a2982B9A5387cDF21D54Ead64Ac8d", - "links": { - "Github": "https://github.com/monacoestate", - "Homepage": "https://monacoestate.io/" - }, - "marketcap_usd": 0, - "name": "Monaco Estate", - "network": "eth", - "shortcut": "MEST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:METM": { - "address": "0xFEF3884b603C33EF8eD4183346E093A173C94da6", - "links": { - "Homepage": "https://metamorph.pro" - }, - "marketcap_usd": 0, - "name": "MetaMorph", - "network": "eth", - "shortcut": "METM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MFG": { - "address": "0x6710c63432A2De02954fc0f851db07146a6c0312", - "links": { - "Github": "https://github.com/syncfab", - "Homepage": "https://syncfab.com/" - }, - "marketcap_usd": 1569704, - "name": "SyncFab Smart Manufacturing Blockchain", - "network": "eth", - "shortcut": "MFG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MFT": { - "address": "0xDF2C7238198Ad8B389666574f2d8bc411A4b7428", - "links": { - "Github": "https://github.com/MainframeHQ", - "Homepage": "https://mainframe.com" - }, - "marketcap_usd": 46148389, - "name": "Mainframe Token", - "network": "eth", - "shortcut": "MFT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MFTU": { - "address": "0x05D412CE18F24040bB3Fa45CF2C69e506586D8e8", - "links": { - "Homepage": "https://mftu.net" - }, - "marketcap_usd": 0, - "name": "Mainstream For The Underground", - "network": "eth", - "shortcut": "MFTU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MGO": { - "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", - "links": { - "Homepage": "https://mobilego.io" - }, - "marketcap_usd": 0, - "name": "MobileGo", - "network": "eth", - "shortcut": "MGO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MHLK": { - "address": "0xE3D0a162fCc5c02C9448274D7C58E18e1811385f", - "links": { - "Github": "https://github.com/maharlikacoin", - "Homepage": "https://www.maharlikacoin.com" - }, - "marketcap_usd": 0, - "name": "Maharlika Coin", - "network": "eth", - "shortcut": "MHLK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MIC": { - "address": "0x3A1237D38D0Fb94513f85D61679cAd7F38507242", - "links": { - "Homepage": "https://mindexcoin.com" - }, - "marketcap_usd": 0, - "name": "Mindexcoin", - "network": "eth", - "shortcut": "MIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MILC": { - "address": "0xD717B75404022fb1C8582ADf1c66B9A553811754", - "links": { - "Homepage": "https://www.milc.global" - }, - "marketcap_usd": 0, - "name": "Micro Licensing Coin", - "network": "eth", - "shortcut": "MILC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MINDS": { - "address": "0xB26631c6dda06aD89B93C71400D25692de89c068", - "links": { - "Homepage": "https://www.minds.com/" - }, - "marketcap_usd": 0, - "name": "Minds Token", - "network": "eth", - "shortcut": "MINDS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MITX": { - "address": "0x4a527d8fc13C5203AB24BA0944F4Cb14658D1Db6", - "links": { - "Homepage": "https://token.morpheuslabs.io" - }, - "marketcap_usd": 9699325, - "name": "Morpheus Infrastructure Token", - "network": "eth", - "shortcut": "MITX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MKR": { - "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", - "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" - }, - "marketcap_usd": 754815596, - "name": "MakerDAO", - "network": "eth", - "shortcut": "MKR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MKT": { - "address": "0x7939882b54fcf0bCAe6b53dEc39Ad6e806176442", - "links": { - "Github": "https://github.com/mikadohq", - "Homepage": "https://mikado.io" - }, - "marketcap_usd": 0, - "name": "Mikado", - "network": "eth", - "shortcut": "MKT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MLN (new)": { - "address": "0xec67005c4E498Ec7f55E092bd1d35cbC47C91892", - "links": { - "Homepage": "https://melonport.com" - }, - "marketcap_usd": 51522892, - "name": "Melonport", - "network": "eth", - "shortcut": "MLN (new)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MM": { - "address": "0x6B4c7A5e3f0B99FCD83e9c089BDDD6c7FCe5c611", - "links": { - "Homepage": "https://www.milliontoken.org" - }, - "marketcap_usd": 0, - "name": "Million", - "network": "eth", - "shortcut": "MM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MNE": { - "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", - "links": { - "Homepage": "https://minereum.com" - }, - "marketcap_usd": 0, - "name": "Minereum", - "network": "eth", - "shortcut": "MNE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MNL": { - "address": "0x0d62dc6Cd8C81dCA8cAADcCF01FfE7C1F31D9402", - "links": { - "Homepage": "https://www.moonlite.io/" - }, - "marketcap_usd": 0, - "name": "Moonlite", - "network": "eth", - "shortcut": "MNL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MNT": { - "address": "0xA9877b1e05D035899131DBd1e403825166D09f92", - "links": { - "Github": "https://github.com/coinjoker/cjtoken", - "Homepage": "https://coinjoker.com" - }, - "marketcap_usd": 0, - "name": "Media Network Token", - "network": "eth", - "shortcut": "MNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MNTP": { - "address": "0x83cee9e086A77e492eE0bB93C2B0437aD6fdECCc", - "links": { - "Github": "https://github.com/Goldmint", - "Homepage": "https://goldmint.io" - }, - "marketcap_usd": 187104, - "name": "Goldmint MNT Prelaunch Token", - "network": "eth", - "shortcut": "MNTP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MOD": { - "address": "0x957c30aB0426e0C93CD8241E2c60392d08c6aC8e", - "links": { - "Github": "https://github.com/modum-io", - "Homepage": "https://modum.io" - }, - "marketcap_usd": 0, - "name": "Modum", - "network": "eth", - "shortcut": "MOD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MORE": { - "address": "0x501262281B2Ba043e2fbf14904980689CDDB0C78", - "links": { - "Homepage": "http://www.mithrilore.io" - }, - "marketcap_usd": 0, - "name": "Mithril Ore", - "network": "eth", - "shortcut": "MORE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MOT": { - "address": "0x263c618480DBe35C300D8d5EcDA19bbB986AcaeD", - "links": { - "Homepage": "https://olympuslabs.io" - }, - "marketcap_usd": 0, - "name": "Olympus Labs", - "network": "eth", - "shortcut": "MOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MRK": { - "address": "0xf453B5B9d4E0B5c62ffB256BB2378cc2BC8e8a89", - "links": { - "Homepage": "https://mark.space" - }, - "marketcap_usd": 0, - "name": "MARK.SPACE", - "network": "eth", - "shortcut": "MRK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MRL": { - "address": "0x82125AFe01819Dff1535D0D6276d57045291B6c0", - "links": { - "Github": "https://github.com/MarceloMRL", - "Homepage": "https://moneyrebel.io/" - }, - "marketcap_usd": 0, - "name": "Marcelo", - "network": "eth", - "shortcut": "MRL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MRP": { - "address": "0x21f0F0fD3141Ee9E11B3d7f13a1028CD515f459c", - "links": { - "Homepage": "https://moneyrebel.io/" - }, - "marketcap_usd": 0, - "name": "MoneyRebel Token", - "network": "eth", - "shortcut": "MRP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MRS": { - "address": "0x9Af5A20AaC8D83230ba68542Ba29d132d50cbe08", - "links": { - "Homepage": "https://marsanexchange.com/" - }, - "marketcap_usd": 0, - "name": "Marsan Exchange Token", - "network": "eth", - "shortcut": "MRS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MRV": { - "address": "0xAB6CF87a50F17d7F5E1FEaf81B6fE9FfBe8EBF84", - "links": { - "Homepage": "https://macroverse.io" - }, - "marketcap_usd": 0, - "name": "MRV", - "network": "eth", - "shortcut": "MRV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MSP": { - "address": "0x68AA3F232dA9bdC2343465545794ef3eEa5209BD", - "links": { - "Homepage": "https://mothership.cx" - }, - "marketcap_usd": 0, - "name": "Mothership", - "network": "eth", - "shortcut": "MSP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MTA": { - "address": "0xa3BeD4E1c75D00fa6f4E5E6922DB7261B5E9AcD2", - "links": { - "Github": "https://github.com/mstable", - "Homepage": "http://mstable.org" - }, - "marketcap_usd": 1711726, - "name": "mStable Meta", - "network": "eth", - "shortcut": "MTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MTH": { - "address": "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16", - "links": { - "Homepage": "http://www.monetha.io" - }, - "marketcap_usd": 3108167, - "name": "Monetha", - "network": "eth", - "shortcut": "MTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MTL": { - "address": "0xF433089366899D83a9f26A773D59ec7eCF30355e", - "links": { - "Homepage": "https://www.metalpay.com" - }, - "marketcap_usd": 86278153, - "name": "Metal", - "network": "eth", - "shortcut": "MTL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MTN": { - "address": "0x41dBECc1cdC5517C6f76f6a6E836aDbEe2754DE3", - "links": { - "Homepage": "https://medicalchain.com" - }, - "marketcap_usd": 569197, - "name": "MedToken", - "network": "eth", - "shortcut": "MTN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MTR": { - "address": "0x7FC408011165760eE31bE2BF20dAf450356692Af", - "links": { - "Homepage": "https://mitrav.co" - }, - "marketcap_usd": 0, - "name": "Mitrav", - "network": "eth", - "shortcut": "MTR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MTRc": { - "address": "0x1e49fF77c355A3e38D6651ce8404AF0E48c5395f", - "links": { - "Homepage": "https://modultrade.io" - }, - "marketcap_usd": 0, - "name": "MTRCToken", - "network": "eth", - "shortcut": "MTRc", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MTX": { - "address": "0x0AF44e2784637218dD1D32A322D44e603A8f0c6A", - "links": { - "Homepage": "https://www.matryx.ai" - }, - "marketcap_usd": 0, - "name": "Matryx", - "network": "eth", - "shortcut": "MTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MUSH": { - "address": "0xea6412Fb370e8d1605E6aEeAA21aD07C3C7e9F24", - "links": { - "Github": "https://github.com/anthonykarter100/MUSHToken", - "Homepage": "https://www.mushroom.community/" - }, - "marketcap_usd": 0, - "name": "Mushroom", - "network": "eth", - "shortcut": "MUSH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MUXE": { - "address": "0x515669d308f887Fd83a471C7764F5d084886D34D", - "links": { - "Homepage": "https://www.muxe.io" - }, - "marketcap_usd": 0, - "name": "MUXE", - "network": "eth", - "shortcut": "MUXE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MVG": { - "address": "0x71396a6410249725C5609646c4e449C6c4d41E27", - "links": { - "Homepage": "https://mvgtoken.io" - }, - "marketcap_usd": 0, - "name": "Max", - "network": "eth", - "shortcut": "MVG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MVL": { - "address": "0xA849EaaE994fb86Afa73382e9Bd88c2B6b18Dc71", - "links": { - "Homepage": "http://mvlchain.io" - }, - "marketcap_usd": 103186956, - "name": "Mass Vehicle Ledger Token", - "network": "eth", - "shortcut": "MVL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MVP": { - "address": "0x8a77e40936BbC27e80E9a3F526368C967869c86D", - "links": { - "Github": "https://github.com/Merculet", - "Homepage": "https://www.merculet.io" - }, - "marketcap_usd": 364084, - "name": "Merculet", - "network": "eth", - "shortcut": "MVP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MWAT": { - "address": "0x6425c6BE902d692AE2db752B3c268AFAdb099D3b", - "links": { - "Homepage": "https://www.restartenergy.io" - }, - "marketcap_usd": 0, - "name": "RED MWAT", - "network": "eth", - "shortcut": "MWAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:MYST": { - "address": "0x4Cf89ca06ad997bC732Dc876ed2A7F26a9E7f361", - "links": { - "Homepage": "https://mysterium.network/" - }, - "marketcap_usd": 5220095, - "name": "Mysterium", - "network": "eth", - "shortcut": "MYST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NAC": { - "address": "0x8d80de8A78198396329dfA769aD54d24bF90E7aa", - "links": { - "Homepage": "https://nami.trade" - }, - "marketcap_usd": 0, - "name": "Nami ICO", - "network": "eth", - "shortcut": "NAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NANJ": { - "address": "0xFFE02ee4C69eDf1b340fCaD64fbd6b37a7b9e265", - "links": { - "Github": "https://github.com/NANJ-COIN", - "Homepage": "https://nanjcoin.com/" - }, - "marketcap_usd": 315039, - "name": "NANJCOIN", - "network": "eth", - "shortcut": "NANJ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NAOS": { - "address": "0x4a615bB7166210CCe20E6642a6f8Fb5d4D044496", - "links": { - "Homepage": "https://naos.finance/" - }, - "marketcap_usd": 0, - "name": "NAOS Finance", - "network": "eth", - "shortcut": "NAOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NAS": { - "address": "0x5d65D971895Edc438f465c17DB6992698a52318D", - "links": { - "Homepage": "https://nebulas.io/index.html" - }, - "marketcap_usd": 0, - "name": "Nebula", - "network": "eth", - "shortcut": "NAS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NAVI": { - "address": "0x588047365dF5BA589F923604AAC23d673555c623", - "links": { - "Github": "https://github.com/naviworld", - "Homepage": "https://naviaddress.com" - }, - "marketcap_usd": 0, - "name": "NaviToken", - "network": "eth", - "shortcut": "NAVI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NBAI": { - "address": "0x17f8aFB63DfcDcC90ebE6e84F060Cc306A98257D", - "links": { - "Github": "https://github.com/nebulaai", - "Homepage": "https://tokensale.nebula-ai.network" - }, - "marketcap_usd": 0, - "name": "NebulaAiToken", - "network": "eth", - "shortcut": "NBAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NBC": { - "address": "0x9F195617fA8fbAD9540C5D113A99A0a0172aaEDC", - "links": { - "Homepage": "https://niobiumcoin.io" - }, - "marketcap_usd": 89666, - "name": "Niobium Coin", - "network": "eth", - "shortcut": "NBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NCASH": { - "address": "0x809826cceAb68c387726af962713b64Cb5Cb3CCA", - "links": { - "Homepage": "https://nucleus.vision" - }, - "marketcap_usd": 0, - "name": "Nucleus Vision", - "network": "eth", - "shortcut": "NCASH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NCR": { - "address": "0xDB5C3C46E28B53a39C255AA39A411dD64e5fed9c", - "links": { - "Github": "https://github.com/Frooxius/NeosPublic", - "Homepage": "https://neos.com/" - }, - "marketcap_usd": 0, - "name": "Neos Credits", - "network": "eth", - "shortcut": "NCR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NCT": { - "address": "0x9E46A38F5DaaBe8683E10793b06749EEF7D733d1", - "links": { - "Github": "https://github.com/polyswarm", - "Homepage": "https://polyswarm.io" - }, - "marketcap_usd": 16924718, - "name": "Nectar", - "network": "eth", - "shortcut": "NCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NDC": { - "address": "0xA54ddC7B3CcE7FC8b1E3Fa0256D0DB80D2c10970", - "links": { - "Homepage": "https://neverdie.com" - }, - "marketcap_usd": 0, - "name": "Neverdie", - "network": "eth", - "shortcut": "NDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NDX": { - "address": "0x1966d718A565566e8E202792658D7b5Ff4ECe469", - "links": { - "Github": "https://github.com/ndexnetwork/NDX", - "Homepage": "https://ndexnetwork.com" - }, - "marketcap_usd": 0, - "name": "nDEX", - "network": "eth", - "shortcut": "NDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NEC": { - "address": "0xCc80C051057B774cD75067Dc48f8987C4Eb97A5e", - "links": { - "Github": "https://github.com/ethfinex/", - "Homepage": "https://nectar.community" - }, - "marketcap_usd": 0, - "name": "Ethfinex Nectar Token", - "network": "eth", - "shortcut": "NEC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NEEO": { - "address": "0xd8446236FA95b9b5f9fd0f8E7Df1a944823c683d", - "links": { - "Homepage": "http://neeoico.com/" - }, - "marketcap_usd": 0, - "name": "NEEO", - "network": "eth", - "shortcut": "NEEO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NET": { - "address": "0xcfb98637bcae43C13323EAa1731cED2B716962fD", - "links": { - "Homepage": "https://nimiq.com" - }, - "marketcap_usd": 0, - "name": "NIMIQ", - "network": "eth", - "shortcut": "NET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NEU": { - "address": "0xA823E6722006afe99E91c30FF5295052fe6b8E32", - "links": { - "Github": "https://github.com/neufund", - "Homepage": "https://neufund.org" - }, - "marketcap_usd": 0, - "name": "NEU Fund", - "network": "eth", - "shortcut": "NEU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NEXO": { - "address": "0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206", - "links": { - "Homepage": "http://nexo.io" - }, - "marketcap_usd": 392895017, - "name": "Nexo", - "network": "eth", - "shortcut": "NEXO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NFTL": { - "address": "0x3c8D2FCE49906e11e71cB16Fa0fFeB2B16C29638", - "links": { - "Homepage": "https://niftyleague.com/" - }, - "marketcap_usd": 0, - "name": "Nifty League", - "network": "eth", - "shortcut": "NFTL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NGC": { - "address": "0x72dD4b6bd852A3AA172Be4d6C5a6dbEc588cf131", - "links": { - "Homepage": "https://www.nagaico.com" - }, - "marketcap_usd": 0, - "name": "NAGA Coin", - "network": "eth", - "shortcut": "NGC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NIMFA": { - "address": "0xe26517A9967299453d3F1B48Aa005E6127e67210", - "links": { - "Github": "https://github.com/nimfamoney", - "Homepage": "https://nimfamoney.io" - }, - "marketcap_usd": 0, - "name": "Ninfa Money", - "network": "eth", - "shortcut": "NIMFA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NKN": { - "address": "0x5Cf04716BA20127F1E2297AdDCf4B5035000c9eb", - "links": { - "Github": "https://github.com/nknorg", - "Homepage": "https://nkn.org" - }, - "marketcap_usd": 90576077, - "name": "NKN", - "network": "eth", - "shortcut": "NKN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NLYA": { - "address": "0xCeE4019Fd41ECDc8bae9EFDd20510f4b6FAA6197", - "links": { - "Github": "https://github.com/nollyacoin/", - "Homepage": "https://nollya.com" - }, - "marketcap_usd": 0, - "name": "Nollya Coin", - "network": "eth", - "shortcut": "NLYA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NMR": { - "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", - "links": { - "Github": "https://github.com/numerai", - "Homepage": "https://numer.ai" - }, - "marketcap_usd": 116826641, - "name": "Numerai", - "network": "eth", - "shortcut": "NMR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NOAH": { - "address": "0x58a4884182d9E835597f405e5F258290E46ae7C2", - "links": { - "Github": "https://github.com/NoahFoundation/NoahCoin", - "Homepage": "https://noahcoin.org" - }, - "marketcap_usd": 0, - "name": "Noah Coin", - "network": "eth", - "shortcut": "NOAH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NOBS": { - "address": "0xF4FaEa455575354d2699BC209B0a65CA99F69982", - "links": { - "Homepage": "https://nobscrypto.com" - }, - "marketcap_usd": 0, - "name": "No BS Crypto", - "network": "eth", - "shortcut": "NOBS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NOX": { - "address": "0xeC46f8207D766012454c408De210BCBc2243E71c", - "links": { - "Github": "https://github.com/nitrotoken/nitro-crowdsale", - "Homepage": "https://nitro.live" - }, - "marketcap_usd": 0, - "name": "Nitro", - "network": "eth", - "shortcut": "NOX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NPER": { - "address": "0x4cE6B362Bc77A24966Dda9078f9cEF81b3B886a7", - "links": { - "Github": "https://github.com/NperProject", - "Homepage": "https://nper.io" - }, - "marketcap_usd": 0, - "name": "NPER", - "network": "eth", - "shortcut": "NPER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NPX": { - "address": "0x28b5E12CcE51f15594B0b91d5b5AdaA70F684a02", - "links": { - "Homepage": "https://napoleonx.ai" - }, - "marketcap_usd": 0, - "name": "NaPoleonX", - "network": "eth", - "shortcut": "NPX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NPXS": { - "address": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3", - "links": { - "Github": "https://github.com/pundix", - "Homepage": "https://pundix.com" - }, - "marketcap_usd": 133949059, - "name": "Pundi X Token", - "network": "eth", - "shortcut": "NPXS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NRM": { - "address": "0x000000085824F23a070c2474442ED014c0e46B58", - "links": { - "Github": "https://github.com/NRM-Neuromachine", - "Homepage": "https://nrm.world" - }, - "marketcap_usd": 0, - "name": "Neuromachine Eternal", - "network": "eth", - "shortcut": "NRM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NTO": { - "address": "0x8A99ED8a1b204903Ee46e733f2c1286F6d20b177", - "links": { - "Homepage": "https://fujinto.io" - }, - "marketcap_usd": 0, - "name": "Fujinto", - "network": "eth", - "shortcut": "NTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NU": { - "address": "0x4fE83213D56308330EC302a8BD641f1d0113A4Cc", - "links": { - "Github": "https://github.com/nucypher", - "Homepage": "https://nucypher.com" - }, - "marketcap_usd": 106813292, - "name": "NuCypher Network", - "network": "eth", - "shortcut": "NU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NUG": { - "address": "0x245ef47D4d0505ECF3Ac463F4d81f41ADE8f1fd1", - "links": { - "Homepage": "https://nuggets.life/" - }, - "marketcap_usd": 0, - "name": "Nuggets Token", - "network": "eth", - "shortcut": "NUG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NUKE": { - "address": "0xc58c0Fca06908E66540102356f2E91edCaEB8D81", - "links": { - "Github": "https://github.com/halflifecode", - "Homepage": "https://nuketoken.com" - }, - "marketcap_usd": 0, - "name": "HalfLife", - "network": "eth", - "shortcut": "NUKE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NULS": { - "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", - "links": { - "Homepage": "https://nuls.io" - }, - "marketcap_usd": 0, - "name": "NULS", - "network": "eth", - "shortcut": "NULS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NUMA": { - "address": "0x303D396bB1E2A73b1536665964aa9f5AA0f7f9cA", - "links": { - "Homepage": "http://www.numismacoins.com/" - }, - "marketcap_usd": 0, - "name": "Numisma Coin", - "network": "eth", - "shortcut": "NUMA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NUSD": { - "address": "0x0C6144c16af288948C8fdB37fD8fEc94bfF3d1d9", - "links": { - "Github": "https://github.com/NeutralGroup", - "Homepage": "https://neutralproject.com" - }, - "marketcap_usd": 0, - "name": "Neutral Dollar", - "network": "eth", - "shortcut": "NUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NXX": { - "address": "0x7627de4B93263a6a7570b8dAfa64bae812e5c394", - "links": { - "Homepage": "https://www.nexxuscoin.com" - }, - "marketcap_usd": 0, - "name": "NXX", - "network": "eth", - "shortcut": "NXX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:NxC": { - "address": "0x45e42D659D9f9466cD5DF622506033145a9b89Bc", - "links": { - "Homepage": "https://beyond-the-void.net" - }, - "marketcap_usd": 0, - "name": "Nexium", - "network": "eth", - "shortcut": "NxC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OAK": { - "address": "0x5e888B83B7287EED4fB7DA7b7d0A0D4c735d94b3", - "links": { - "Homepage": "https://aco.ai" - }, - "marketcap_usd": 0, - "name": "OAK", - "network": "eth", - "shortcut": "OAK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OAX": { - "address": "0x701C244b988a513c945973dEFA05de933b23Fe1D", - "links": { - "Homepage": "https://www.openanx.org/en" - }, - "marketcap_usd": 18826379, - "name": "OAX", - "network": "eth", - "shortcut": "OAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OBC": { - "address": "0x43E577338d6C07bc92a06C8CA4B781470515dFA8", - "links": { - "Github": "https://github.com/Oblichain-team/Oblichain", - "Homepage": "https://oblichain.com/en/home" - }, - "marketcap_usd": 0, - "name": "Oblichain", - "network": "eth", - "shortcut": "OBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OCC": { - "address": "0x0235fE624e044A05eeD7A43E16E3083bc8A4287A", - "links": { - "Github": "https://github.com/OriginalCrypto/", - "Homepage": "https://www.OriginalCryptoCoin.com/" - }, - "marketcap_usd": 0, - "name": "Original Crypto Coin", - "network": "eth", - "shortcut": "OCC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OCEAN": { - "address": "0x967da4048cD07aB37855c090aAF366e4ce1b9F48", - "links": { - "Github": "https://github.com/oceanprotocol", - "Homepage": "https://oceanprotocol.com" - }, - "marketcap_usd": 241205777, - "name": "Ocean Token", - "network": "eth", - "shortcut": "OCEAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OCN": { - "address": "0x4092678e4E78230F46A1534C0fbc8fA39780892B", - "links": { - "Homepage": "http://www.ocnex.net" - }, - "marketcap_usd": 453298, - "name": "Odyssey", - "network": "eth", - "shortcut": "OCN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OCTO": { - "address": "0x7240aC91f01233BaAf8b064248E80feaA5912BA3", - "links": { - "Github": "https://github.com/octofi", - "Homepage": "https://octo.fi" - }, - "marketcap_usd": 1060203, - "name": "OctoFi", - "network": "eth", - "shortcut": "OCTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ODE": { - "address": "0xbf52F2ab39e26E0951d2a02b49B7702aBe30406a", - "links": { - "Github": "https://github.com/odemio", - "Homepage": "https://odem.io/" - }, - "marketcap_usd": 0, - "name": "ODEM Token", - "network": "eth", - "shortcut": "ODE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OGK": { - "address": "0x5f4506dB5b568e103532F84d32A285cDd5Aa5751", - "links": { - "Github": "https://github.com/organikcoin", - "Homepage": "https://organik.net.br/" - }, - "marketcap_usd": 0, - "name": "Organik", - "network": "eth", - "shortcut": "OGK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OGN": { - "address": "0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26", - "links": { - "Github": "https://github.com/originprotocol", - "Homepage": "https://www.originprotocol.com" - }, - "marketcap_usd": 69749547, - "name": "OriginToken", - "network": "eth", - "shortcut": "OGN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OGV": { - "address": "0x9c354503C38481a7A7a51629142963F98eCC12D0", - "links": { - "Github": "https://github.com/OriginProtocol/ousd-governance", - "Homepage": "https://governance.ousd.com" - }, - "marketcap_usd": 4568560, - "name": "Origin Dollar Governance", - "network": "eth", - "shortcut": "OGV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OIKOS": { - "address": "0x21E13cB3F3F26f92A62ac7Adab4093e8997D1fb1", - "links": { - "Github": "https://github.com/SibuToken/oikos", - "Homepage": "http://neoarchitects.io" - }, - "marketcap_usd": 0, - "name": "OIKOS", - "network": "eth", - "shortcut": "OIKOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OJX": { - "address": "0xBeef546ac8a4e0a80DC1E2d696968Ef54138f1d4", - "links": { - "Github": "https://github.com/OjoooInc", - "Homepage": "https://ico.ojooo.com/" - }, - "marketcap_usd": 0, - "name": "Ojooo Coin", - "network": "eth", - "shortcut": "OJX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OKB": { - "address": "0x75231F58b43240C9718Dd58B4967c5114342a86c", - "links": { - "Github": "https://github.com/okex/okberc20token", - "Homepage": "https://www.okex.com/" - }, - "marketcap_usd": 3080708053, - "name": "OKB", - "network": "eth", - "shortcut": "OKB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OLD_MKR": { - "address": "0xC66eA802717bFb9833400264Dd12c2bCeAa34a6d", - "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" - }, - "marketcap_usd": 0, - "name": "MakerDAO", - "network": "eth", - "shortcut": "OLD_MKR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OLE": { - "address": "0x9d9223436dDD466FC247e9dbbD20207e640fEf58", - "links": { - "Homepage": "http://www.olivecoin.co" - }, - "marketcap_usd": 0, - "name": "Olive", - "network": "eth", - "shortcut": "OLE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OLT": { - "address": "0x64A60493D888728Cf42616e034a0dfEAe38EFCF0", - "links": { - "Github": "https://github.com/Oneledger", - "Homepage": "https://oneledger.io" - }, - "marketcap_usd": 0, - "name": "OneLedger Token", - "network": "eth", - "shortcut": "OLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OMG": { - "address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", - "links": { - "Github": "https://github.com/omisego", - "Homepage": "https://omg.omise.co" - }, - "marketcap_usd": 243064600, - "name": "OmiseGO", - "network": "eth", - "shortcut": "OMG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OMT": { - "address": "0x047187e53477be70DBe8Ea5B799318f2e165052F", - "links": { - "Github": "https://github.com/OTCMAKER/OMT", - "Homepage": "https://www.otcmaker.com" - }, - "marketcap_usd": 0, - "name": "OTCMAKER Token", - "network": "eth", - "shortcut": "OMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OMX": { - "address": "0xB5DBC6D3cf380079dF3b27135664b6BCF45D1869", - "links": { - "Homepage": "https://shivom.io" - }, - "marketcap_usd": 0, - "name": "Shivom", - "network": "eth", - "shortcut": "OMX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ONEK": { - "address": "0xB23be73573bC7E03DB6e5dfc62405368716d28a8", - "links": { - "Homepage": "http://onek.one" - }, - "marketcap_usd": 0, - "name": "One K Token", - "network": "eth", - "shortcut": "ONEK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ONG": { - "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", - "links": { - "Github": "https://github.com/onGsocial", - "Homepage": "https://somee.social" - }, - "marketcap_usd": 0, - "name": "SoMee.Social", - "network": "eth", - "shortcut": "ONG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ONL": { - "address": "0x6863bE0e7CF7ce860A574760e9020D519a8bDC47", - "links": { - "Homepage": "https://on.live" - }, - "marketcap_usd": 0, - "name": "On.Live", - "network": "eth", - "shortcut": "ONL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ONOT": { - "address": "0xB31C219959E06f9aFBeB36b388a4BaD13E802725", - "links": { - "Homepage": "https://www.ono.chat" - }, - "marketcap_usd": 0, - "name": "ONO Token", - "network": "eth", - "shortcut": "ONOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OPQ": { - "address": "0x77599D2C6DB170224243e255e6669280F11F1473", - "links": { - "Github": "https://github.com/opacity", - "Homepage": "https://opacity.io" - }, - "marketcap_usd": 0, - "name": "Opacity", - "network": "eth", - "shortcut": "OPQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OPT": { - "address": "0x4355fC160f74328f9b383dF2EC589bB3dFd82Ba0", - "links": { - "Homepage": "https://opus-foundation.org" - }, - "marketcap_usd": 0, - "name": "Opus Foundation", - "network": "eth", - "shortcut": "OPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OPTI": { - "address": "0x832904863978b94802123106e6eB491BDF0Df928", - "links": { - "Homepage": "https://optitoken.io" - }, - "marketcap_usd": 0, - "name": "OptiToken", - "network": "eth", - "shortcut": "OPTI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OR": { - "address": "0x3fF9CeBbeAA7Bcc48a952a011A02a22a1FDd1C62", - "links": { - "Homepage": "https://ordertoken.store" - }, - "marketcap_usd": 0, - "name": "ORDER", - "network": "eth", - "shortcut": "OR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ORBS": { - "address": "0xff56Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA", - "links": { - "Github": "https://github.com/orbs-network", - "Homepage": "https://orbs.com" - }, - "marketcap_usd": 102029850, - "name": "Orbs", - "network": "eth", - "shortcut": "ORBS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ORCA": { - "address": "0x6F59e0461Ae5E2799F1fB3847f05a63B16d0DbF8", - "links": { - "Github": "https://github.com/orcaalliance", - "Homepage": "https://www.orcaalliance.eu" - }, - "marketcap_usd": 0, - "name": "ORCA Token", - "network": "eth", - "shortcut": "ORCA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ORI": { - "address": "0xd2Fa8f92Ea72AbB35dBD6DECa57173d22db2BA49", - "links": { - "Homepage": "https://ori.network" - }, - "marketcap_usd": 0, - "name": "Origami", - "network": "eth", - "shortcut": "ORI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ORN": { - "address": "0x8fB00FDeBb4E83f2C58b3bcD6732AC1B6A7b7221", - "links": { - "Github": "https://github.com/orionprotocol", - "Homepage": "https://orionprotocol.io/" - }, - "marketcap_usd": 0, - "name": "Orion Protocol", - "network": "eth", - "shortcut": "ORN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ORS": { - "address": "0xEB9A4B185816C354dB92DB09cC3B50bE60b901b6", - "links": { - "Homepage": "https://www.originsport.io" - }, - "marketcap_usd": 867139, - "name": "Origin Sport", - "network": "eth", - "shortcut": "ORS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ORX": { - "address": "0x4e84A65B5664D33B67750771F8bEAeC458bD6729", - "links": { - "Github": "https://github.com/OrionixToken", - "Homepage": "https://orionix.io" - }, - "marketcap_usd": 0, - "name": "Orionix", - "network": "eth", - "shortcut": "ORX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OSPVS": { - "address": "0xFFA52DCE6Eb5695436BE96CA9b7Df63382e4c34d", - "links": { - "Homepage": "https://onyx.to/" - }, - "marketcap_usd": 0, - "name": "Token Onyx S&P 500 Short", - "network": "eth", - "shortcut": "OSPVS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OST": { - "address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", - "links": { - "Github": "https://github.com/OpenSTFoundation", - "Homepage": "https://simpletoken.org" - }, - "marketcap_usd": 406211, - "name": "Simple Token 'OST'", - "network": "eth", - "shortcut": "OST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OTN": { - "address": "0x881Ef48211982D01E2CB7092C915E647Cd40D85C", - "links": { - "Homepage": "https://otn.org" - }, - "marketcap_usd": 0, - "name": "Open Trading Network", - "network": "eth", - "shortcut": "OTN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OTO": { - "address": "0x028CE5EA3298a50c0D8a27b937b1F48Cf0d68b56", - "links": { - "Github": "https://github.com/OnTimeFoundation", - "Homepage": "https://www.ontimefoundation.org" - }, - "marketcap_usd": 0, - "name": "OnTime", - "network": "eth", - "shortcut": "OTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OUSD": { - "address": "0x2A8e1E676Ec238d8A992307B495b45B3fEAa5e86", - "links": { - "Github": "https://github.com/originprotocol", - "Homepage": "https://ousd.com" - }, - "marketcap_usd": 54479420, - "name": "Origin Dollar", - "network": "eth", - "shortcut": "OUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OWN": { - "address": "0x170b275CEd089FffAEBFe927F445a350ED9160DC", - "links": { - "Github": "https://github.com/owndata", - "Homepage": "https://owndata.network" - }, - "marketcap_usd": 0, - "name": "OWNDATA", - "network": "eth", - "shortcut": "OWN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OWT": { - "address": "0xC2494604e9DcEfa2A70dCEbf81e6D7BE064a334e", - "links": { - "Github": "https://github.com/openweb-network", - "Homepage": "https://openweb.network" - }, - "marketcap_usd": 0, - "name": "OpenWeb Token", - "network": "eth", - "shortcut": "OWT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:OXT": { - "address": "0x4575f41308EC1483f3d399aa9a2826d74Da13Deb", - "links": { - "Github": "https://github.com/orchidtechnologies/orchid", - "Homepage": "https://www.orchid.com" - }, - "marketcap_usd": 65851872, - "name": "Orchid", - "network": "eth", - "shortcut": "OXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:Ox Fina": { - "address": "0x65A15014964F2102Ff58647e16a16a6B9E14bCF6", - "links": { - "Github": "https://github.com/oxfina", - "Homepage": "https://oxfina.com" - }, - "marketcap_usd": 0, - "name": "Ox Fina", - "network": "eth", - "shortcut": "Ox Fina", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:P2PS": { - "address": "0x4527a3B4A8A150403090a99b87efFC96F2195047", - "links": { - "Github": "https://github.com/p2ps", - "Homepage": "https://p2psf.org" - }, - "marketcap_usd": 0, - "name": "P2P Solutions Foundation", - "network": "eth", - "shortcut": "P2PS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PAI": { - "address": "0xB9bb08AB7E9Fa0A1356bd4A39eC0ca267E03b0b3", - "links": { - "Homepage": "https://www.pchain.org" - }, - "marketcap_usd": 0, - "name": "PCHAIN", - "network": "eth", - "shortcut": "PAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PAL": { - "address": "0xfeDAE5642668f8636A11987Ff386bfd215F942EE", - "links": { - "Github": "https://github.com/policypalnet", - "Homepage": "https://www.policypal.network" - }, - "marketcap_usd": 0, - "name": "PolicyPal Network", - "network": "eth", - "shortcut": "PAL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PARETO": { - "address": "0xea5f88E54d982Cbb0c441cde4E79bC305e5b43Bc", - "links": { - "Github": "https://github.com/ParetoNetwork", - "Homepage": "https://pareto.network" - }, - "marketcap_usd": 0, - "name": "PARETO", - "network": "eth", - "shortcut": "PARETO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PAT": { - "address": "0xF3b3Cad094B89392fcE5faFD40bC03b80F2Bc624", - "links": { - "Homepage": "https://patron-influencers.com" - }, - "marketcap_usd": 0, - "name": "Patron", - "network": "eth", - "shortcut": "PAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PATENTS": { - "address": "0x694404595e3075A942397F466AAcD462FF1a7BD0", - "links": { - "Homepage": "https://www.smartillions.ch" - }, - "marketcap_usd": 0, - "name": "PATENTS", - "network": "eth", - "shortcut": "PATENTS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PATH": { - "address": "0xF813F3902bBc00A6DCe378634d3B79D84F9803d7", - "links": { - "Github": "https://github.com/path-network-token", - "Homepage": "https://path.network" - }, - "marketcap_usd": 0, - "name": "PATH", - "network": "eth", - "shortcut": "PATH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PATR": { - "address": "0x9FbA684D77D2d6A1408C24b60A1f5534e71f5b75", - "links": { - "Github": "https://github.com/PatriotToken", - "Homepage": "http://patriotsilvertoken.com" - }, - "marketcap_usd": 0, - "name": "PATRIOT", - "network": "eth", - "shortcut": "PATR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PAXG": { - "address": "0x45804880De22913dAFE09f4980848ECE6EcbAf78", - "links": { - "Github": "https://github.com/paxosglobal/paxos-gold-contract", - "Homepage": "https://www.paxos.com/paxgold" - }, - "marketcap_usd": 487662967, - "name": "Paxos Gold", - "network": "eth", - "shortcut": "PAXG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PAY": { - "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", - "links": { - "Homepage": "http://www.tenx.tech" - }, - "marketcap_usd": 3568855, - "name": "TenX", - "network": "eth", - "shortcut": "PAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PBL": { - "address": "0x55648De19836338549130B1af587F16beA46F66B", - "links": { - "Homepage": "https://publica.io" - }, - "marketcap_usd": 0, - "name": "PBL", - "network": "eth", - "shortcut": "PBL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PBT": { - "address": "0xF4c07b1865bC326A3c01339492Ca7538FD038Cc0", - "links": { - "Homepage": "http://primalbase.com/" - }, - "marketcap_usd": 0, - "name": "Primalbase Token (PBT)", - "network": "eth", - "shortcut": "PBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PCL": { - "address": "0x0F02e27745e3b6e9e1310d19469e2b5D7B5eC99A", - "links": { - "Github": "https://github.com/Peculium-Dev/", - "Homepage": "https://peculium.io" - }, - "marketcap_usd": 0, - "name": "Peculium", - "network": "eth", - "shortcut": "PCL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PCLOLD": { - "address": "0x53148Bb4551707edF51a1e8d7A93698d18931225", - "links": { - "Github": "https://github.com/PeculiumPCL/Peculium", - "Homepage": "https://peculium.io" - }, - "marketcap_usd": 0, - "name": "PeculiumOLD", - "network": "eth", - "shortcut": "PCLOLD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PDATA": { - "address": "0x0db03B6CDe0B2d427C64a04FeAfd825938368f1F", - "links": { - "Github": "https://github.com/opiria-pdata/Pdata", - "Homepage": "https://opiria.io" - }, - "marketcap_usd": 0, - "name": "PDATA", - "network": "eth", - "shortcut": "PDATA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PEP": { - "address": "0xBb0eF9e617FADdf54B8D16e29046F72B4D3ec77F", - "links": { - "Homepage": "https://pepchain.io" - }, - "marketcap_usd": 0, - "name": "PEP Token", - "network": "eth", - "shortcut": "PEP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PESO": { - "address": "0x30FEF258d2728F9d1eDF038059c725FAf785697E", - "links": { - "Github": "https://github.com/pesotoken/PESO", - "Homepage": "http://pesoexchange.com" - }, - "marketcap_usd": 0, - "name": "PESOTOKEN", - "network": "eth", - "shortcut": "PESO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PET": { - "address": "0x5884969Ec0480556E11d119980136a4C17eDDEd1", - "links": { - "Github": "https://github.com/Pethereum", - "Homepage": "https://pethereum.org/" - }, - "marketcap_usd": 0, - "name": "PETHEREUM", - "network": "eth", - "shortcut": "PET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PETH": { - "address": "0xf53AD2c6851052A81B42133467480961B2321C09", - "links": { - "Homepage": "https://dai.makerdao.com/" - }, - "marketcap_usd": 0, - "name": "Pooled Ether", - "network": "eth", - "shortcut": "PETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PEXT": { - "address": "0x55c2A0C171D920843560594dE3d6EEcC09eFc098", - "links": { - "Homepage": "https://prime-ex.com" - }, - "marketcap_usd": 0, - "name": "PEX-Token", - "network": "eth", - "shortcut": "PEXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PFB": { - "address": "0x46760d2BF2F4dd5405646D9b2cE7B723EFE74a48", - "links": { - "Github": "https://github.com/PFB-Project", - "Homepage": "https://pfbproject.net/" - }, - "marketcap_usd": 0, - "name": "Penny For Bit", - "network": "eth", - "shortcut": "PFB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PFR": { - "address": "0x2FA32a39fc1c399E0Cc7B2935868f5165De7cE97", - "links": { - "Homepage": "https://payfair.io" - }, - "marketcap_usd": 0, - "name": "Payfair", - "network": "eth", - "shortcut": "PFR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PHI": { - "address": "0x13C2fab6354d3790D8ece4f0f1a3280b4A25aD96", - "links": { - "Homepage": "https://www.phitoken.io" - }, - "marketcap_usd": 0, - "name": "PHI Token", - "network": "eth", - "shortcut": "PHI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PICKLE": { - "address": "0x429881672B9AE42b8EbA0E26cD9C73711b891Ca5", - "links": { - "Homepage": "https://pickle.finance/" - }, - "marketcap_usd": 2689140, - "name": "Pickle Finance", - "network": "eth", - "shortcut": "PICKLE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PIPL": { - "address": "0xE64509F0bf07ce2d29A7eF19A8A9bc065477C1B4", - "links": { - "Homepage": "https://piplcoin.com" - }, - "marketcap_usd": 0, - "name": "PIPL Coin", - "network": "eth", - "shortcut": "PIPL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PIT": { - "address": "0x0fF161071e627A0E6de138105C73970F86ca7922", - "links": { - "Homepage": "https://paypite.org" - }, - "marketcap_usd": 0, - "name": "Paypite v2", - "network": "eth", - "shortcut": "PIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PIX": { - "address": "0x8eFFd494eB698cc399AF6231fCcd39E08fd20B15", - "links": { - "Homepage": "https://www.lampix.co" - }, - "marketcap_usd": 0, - "name": "Lampix", - "network": "eth", - "shortcut": "PIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PIXIE": { - "address": "0x9318105460626e7fA58308FA4bcE40e4616F3565", - "links": { - "Homepage": "https://pixiedust.network" - }, - "marketcap_usd": 0, - "name": "Pixie Dust", - "network": "eth", - "shortcut": "PIXIE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PKG": { - "address": "0x02F2D4a04E6E01aCE88bD2Cd632875543b2eF577", - "links": { - "Homepage": "http://pkgtoken.io" - }, - "marketcap_usd": 79184, - "name": "PKG Token", - "network": "eth", - "shortcut": "PKG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PKT": { - "address": "0x2604FA406Be957E542BEb89E6754fCdE6815e83f", - "links": { - "Homepage": "https://playkey.io" - }, - "marketcap_usd": 65171, - "name": "Playkey", - "network": "eth", - "shortcut": "PKT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PLASMA": { - "address": "0x59416A25628A76b4730eC51486114c32E0B582A1", - "links": { - "Homepage": "https://plasma.io" - }, - "marketcap_usd": 0, - "name": "PLASMA", - "network": "eth", - "shortcut": "PLASMA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PLBT": { - "address": "0x0AfFa06e7Fbe5bC9a764C979aA66E8256A631f02", - "links": { - "Homepage": "https://polybius.io" - }, - "marketcap_usd": 0, - "name": "Polybius", - "network": "eth", - "shortcut": "PLBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PLR": { - "address": "0xe3818504c1B32bF1557b16C238B2E01Fd3149C17", - "links": { - "Github": "https://github.com/twentythirty/PillarToken", - "Homepage": "https://www.pillarproject.io" - }, - "marketcap_usd": 1387534, - "name": "Pillar Project", - "network": "eth", - "shortcut": "PLR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PLS": { - "address": "0xe43ac1714F7394173b15E7CfF31A63d523Ce4fB9", - "links": { - "Github": "https://github.com/bitsuperlab", - "Homepage": "https://dacplay.org" - }, - "marketcap_usd": 0, - "name": "DACPLAY Token", - "network": "eth", - "shortcut": "PLS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PLU": { - "address": "0xD8912C10681D8B21Fd3742244f44658dBA12264E", - "links": { - "Homepage": "https://plutus.it" - }, - "marketcap_usd": 18172960, - "name": "Pluton", - "network": "eth", - "shortcut": "PLU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PMA": { - "address": "0x846C66cf71C43f80403B51fE3906B3599D63336f", - "links": { - "Homepage": "https://pumapay.io" - }, - "marketcap_usd": 420840, - "name": "PumaPay", - "network": "eth", - "shortcut": "PMA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PMNT": { - "address": "0x81b4D08645DA11374a03749AB170836E4e539767", - "links": { - "Homepage": "https://paymon.org" - }, - "marketcap_usd": 0, - "name": "Paymon", - "network": "eth", - "shortcut": "PMNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PNK": { - "address": "0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d", - "links": { - "Github": "https://github.com/kleros", - "Homepage": "https://kleros.io" - }, - "marketcap_usd": 18057635, - "name": "Pinakion", - "network": "eth", - "shortcut": "PNK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:POE": { - "address": "0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195", - "links": { - "Homepage": "https://po.et" - }, - "marketcap_usd": 66098, - "name": "Po.et Tokens", - "network": "eth", - "shortcut": "POE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:POIN": { - "address": "0x43F6a1BE992deE408721748490772B15143CE0a7", - "links": { - "Homepage": "https://potatoin.foundation" - }, - "marketcap_usd": 0, - "name": "Potatoin", - "network": "eth", - "shortcut": "POIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:POLL": { - "address": "0x705EE96c1c160842C92c1aeCfCFfccc9C412e3D9", - "links": { - "Homepage": "https://clearpoll.com" - }, - "marketcap_usd": 0, - "name": "ClearPoll", - "network": "eth", - "shortcut": "POLL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:POLY": { - "address": "0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC", - "links": { - "Homepage": "https://polymath.network" - }, - "marketcap_usd": 178335520, - "name": "Polymath Network", - "network": "eth", - "shortcut": "POLY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:POOL": { - "address": "0x779B7b713C86e3E6774f5040D9cCC2D43ad375F8", - "links": { - "Homepage": "http://stakepool.co" - }, - "marketcap_usd": 0, - "name": "Stake Pool", - "network": "eth", - "shortcut": "POOL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:POP": { - "address": "0x5D858bcd53E085920620549214a8b27CE2f04670", - "links": { - "Github": "https://github.com/popchest", - "Homepage": "https://www.thepopnetwork.org" - }, - "marketcap_usd": 0, - "name": "POP Network Token", - "network": "eth", - "shortcut": "POP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:POS": { - "address": "0xEe609fE292128Cad03b786DBb9Bc2634Ccdbe7fC", - "links": { - "Github": "https://github.com/PoSToken", - "Homepage": "https://postoken.org" - }, - "marketcap_usd": 0, - "name": "PoSToken", - "network": "eth", - "shortcut": "POS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:POWR": { - "address": "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", - "links": { - "Homepage": "https://powerledger.io" - }, - "marketcap_usd": 104709098, - "name": "PowerLedger", - "network": "eth", - "shortcut": "POWR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PPP": { - "address": "0xc42209aCcC14029c1012fB5680D95fBd6036E2a0", - "links": { - "Homepage": "https://www.paypie.com" - }, - "marketcap_usd": 0, - "name": "PayPie", - "network": "eth", - "shortcut": "PPP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PPT": { - "address": "0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a", - "links": { - "Github": "https://github.com/Bitpopulous", - "Homepage": "https://populous.co" - }, - "marketcap_usd": 4787929, - "name": "Populous", - "network": "eth", - "shortcut": "PPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PRE": { - "address": "0x88A3E4F35D64aAD41A6d4030ac9AFE4356cB84fA", - "links": { - "Homepage": "https://presearch.io" - }, - "marketcap_usd": 0, - "name": "Presearch", - "network": "eth", - "shortcut": "PRE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PRG": { - "address": "0x7728dFEF5aBd468669EB7f9b48A7f70a501eD29D", - "links": { - "Github": "https://github.com/paragon-coin/token", - "Homepage": "https://paragoncoin.com" - }, - "marketcap_usd": 0, - "name": "Paragon", - "network": "eth", - "shortcut": "PRG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PRIX": { - "address": "0x3ADfc4999F77D04c8341BAC5F3A76f58DfF5B37A", - "links": { - "Homepage": "https://privatix.io" - }, - "marketcap_usd": 45253, - "name": "Privatix", - "network": "eth", - "shortcut": "PRIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PRL": { - "address": "0x1844b21593262668B7248d0f57a220CaaBA46ab9", - "links": { - "Github": "https://github.com/oysterprotocol", - "Homepage": "https://oyster.ws" - }, - "marketcap_usd": 0, - "name": "Oyster Pearl", - "network": "eth", - "shortcut": "PRL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PRON": { - "address": "0xA3149E0fA0061A9007fAf307074cdCd290f0e2Fd", - "links": { - "Homepage": "https://proncoin.io" - }, - "marketcap_usd": 0, - "name": "PronCoin", - "network": "eth", - "shortcut": "PRON", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PROPS": { - "address": "0x6fe56C0bcdD471359019FcBC48863d6c3e9d4F41", - "links": { - "Github": "https://github.com/propsproject", - "Homepage": "https://propsproject.com" - }, - "marketcap_usd": 824153, - "name": "Props", - "network": "eth", - "shortcut": "PROPS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PRS": { - "address": "0x163733bcc28dbf26B41a8CfA83e369b5B3af741b", - "links": { - "Github": "https://github.com/Neurone/persians", - "Homepage": "http://persians.network" - }, - "marketcap_usd": 0, - "name": "Persians", - "network": "eth", - "shortcut": "PRS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PRSP": { - "address": "0x0C04d4f331DA8dF75f9E2e271E3f3F1494C66C36", - "links": { - "Homepage": "http://www.prsp.me" - }, - "marketcap_usd": 0, - "name": "PRSP", - "network": "eth", - "shortcut": "PRSP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PSDN": { - "address": "0x5F85c60187aB233Ca6e750731D15e7eFd061fBdE", - "links": { - "Homepage": "http://poseidonsbazaar.com" - }, - "marketcap_usd": 0, - "name": "Poseidon", - "network": "eth", - "shortcut": "PSDN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PSK": { - "address": "0x1c5F43710a1776b0Ea7191b7Ead75D4B98D69858", - "links": { - "Github": "https://github.com/poolofstake/PSK", - "Homepage": "https://www.poolofstake.io" - }, - "marketcap_usd": 0, - "name": "Pool of Stake Master Token", - "network": "eth", - "shortcut": "PSK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PST": { - "address": "0x5d4ABC77B8405aD177d8ac6682D584ecbFd46CEc", - "links": { - "Homepage": "https://primas.io" - }, - "marketcap_usd": 659916, - "name": "Primas", - "network": "eth", - "shortcut": "PST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PT": { - "address": "0x66497A283E0a007bA3974e837784C6AE323447de", - "links": { - "Github": "https://github.com/porntoken/smart_contract", - "Homepage": "https://www.porntoken.io" - }, - "marketcap_usd": 0, - "name": "PornToken", - "network": "eth", - "shortcut": "PT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PTC": { - "address": "0x2a8E98e256f32259b5E5Cb55Dd63C8e891950666", - "links": { - "Github": "https://github.com/ParrotCoin", - "Homepage": "http://parrotcoin.club" - }, - "marketcap_usd": 0, - "name": "ParrotCoin", - "network": "eth", - "shortcut": "PTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PTOY": { - "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", - "links": { - "Homepage": "https://patientory.com" - }, - "marketcap_usd": 483007, - "name": "Patientory", - "network": "eth", - "shortcut": "PTOY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PTT": { - "address": "0x4689a4e169eB39cC9078C0940e21ff1Aa8A39B9C", - "links": { - "Homepage": "https://www.proton.global" - }, - "marketcap_usd": 0, - "name": "Proton Token", - "network": "eth", - "shortcut": "PTT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PTWO": { - "address": "0x5512e1D6A7BE424b4323126B4f9E86D023F95764", - "links": { - "Github": "https://github.com/porntoken/smart_contract", - "Homepage": "https://www.porntoken.io" - }, - "marketcap_usd": 0, - "name": "PornTokenV2", - "network": "eth", - "shortcut": "PTWO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PUC": { - "address": "0xEf6B4cE8C9Bc83744fbcdE2657b32eC18790458A", - "links": { - "Github": "https://github.com/pourcoin/pourcoin-PUC/projects", - "Homepage": "http://price-s.info" - }, - "marketcap_usd": 0, - "name": "Pour Coin", - "network": "eth", - "shortcut": "PUC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PURC": { - "address": "0xe25ff6Eb959BCE67975778e46A47750C243B6B99", - "links": { - "Github": "https://github.com/seanyc99/PureCarbon-Smart-Contract", - "Homepage": "https://purecarbon.io" - }, - "marketcap_usd": 0, - "name": "PureCarbon", - "network": "eth", - "shortcut": "PURC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PUSSY": { - "address": "0x9196E18Bc349B1F64Bc08784eaE259525329a1ad", - "links": { - "Github": "https://github.com/Pussy-Financial", - "Homepage": "https://pussy.financial" - }, - "marketcap_usd": 0, - "name": "Pussy Financial", - "network": "eth", - "shortcut": "PUSSY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PXG": { - "address": "0x47e67BA66b0699500f18A53F94E2b9dB3D47437e", - "links": { - "Github": "https://github.com/playgame-global", - "Homepage": "https://its.playgame.com" - }, - "marketcap_usd": 200007, - "name": "PlayGame", - "network": "eth", - "shortcut": "PXG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PXT": { - "address": "0xc14830E53aA344E8c14603A91229A0b925b0B262", - "links": { - "Homepage": "https://populous.co" - }, - "marketcap_usd": 0, - "name": "Populous XBRL Token (PXT)", - "network": "eth", - "shortcut": "PXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PYLNT": { - "address": "0x7703C35CfFdC5CDa8D27aa3df2F9ba6964544b6e", - "links": { - "Homepage": "https://pylon-network.org" - }, - "marketcap_usd": 0, - "name": "Pylon Network", - "network": "eth", - "shortcut": "PYLNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:PYN": { - "address": "0x0142C3B2fC51819B5aF5dFc4AA52Df9722790851", - "links": { - "Github": "https://github.com/PaycentGlobal", - "Homepage": "https://paycent.com/" - }, - "marketcap_usd": 0, - "name": "Paycentos", - "network": "eth", - "shortcut": "PYN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QASH": { - "address": "0x618E75Ac90b12c6049Ba3b27f5d5F8651b0037F6", - "links": { - "Homepage": "https://liquid.plus" - }, - "marketcap_usd": 9192048, - "name": "QASH", - "network": "eth", - "shortcut": "QASH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QAU": { - "address": "0x671AbBe5CE652491985342e85428EB1b07bC6c64", - "links": { - "Homepage": "http://www.quantumproject.org" - }, - "marketcap_usd": 0, - "name": "QAU", - "network": "eth", - "shortcut": "QAU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QBX": { - "address": "0x2467AA6B5A2351416fD4C3DeF8462d841feeecEC", - "links": { - "Github": "https://github.com/qiibee", - "Homepage": "https://www.qiibee.com" - }, - "marketcap_usd": 0, - "name": "qiibeeToken", - "network": "eth", - "shortcut": "QBX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QDT": { - "address": "0x9Adc7710E9d1b29d8a78c04d52D32532297C2Ef3", - "links": { - "Github": "https://github.com/quadrans", - "Homepage": "https://quadrans.io" - }, - "marketcap_usd": 0, - "name": "Quadrans Token", - "network": "eth", - "shortcut": "QDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QKC": { - "address": "0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664", - "links": { - "Homepage": "https://quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "network": "eth", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QNT": { - "address": "0x4a220E6096B25EADb88358cb44068A3248254675", - "links": { - "Github": "https://github.com/quantnetwork", - "Homepage": "https://www.quant.network/" - }, - "marketcap_usd": 1530947563, - "name": "Quant", - "network": "eth", - "shortcut": "QNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QRG": { - "address": "0xFFAA5ffc455d9131f8A2713A741fD1960330508B", - "links": { - "Homepage": "http://qrg-stamps.com/" - }, - "marketcap_usd": 0, - "name": "QRG", - "network": "eth", - "shortcut": "QRG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QRL": { - "address": "0x697beac28B09E122C4332D163985e8a73121b97F", - "links": { - "Github": "https://github.com/theQRL", - "Homepage": "https://theqrl.org" - }, - "marketcap_usd": 0, - "name": "QRL", - "network": "eth", - "shortcut": "QRL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QSP": { - "address": "0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d", - "links": { - "Github": "https://github.com/quantstamp", - "Homepage": "https://quantstamp.com/" - }, - "marketcap_usd": 11601312, - "name": "Quantstamp Token", - "network": "eth", - "shortcut": "QSP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QTQ": { - "address": "0x2C3C1F05187dBa7A5f2Dd47Dca57281C4d4F183F", - "links": { - "Github": "https://github.com/TiiQu-Network/TiiQu-Network", - "Homepage": "http://tiiqu.com" - }, - "marketcap_usd": 0, - "name": "TiiQu's Q Token", - "network": "eth", - "shortcut": "QTQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QTUM": { - "address": "0x9a642d6b3368ddc662CA244bAdf32cDA716005BC", - "links": { - "Github": "https://github.com/qtumproject", - "Homepage": "https://qtum.org/" - }, - "marketcap_usd": 0, - "name": "Qtum", - "network": "eth", - "shortcut": "QTUM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:QUN": { - "address": "0x264Dc2DedCdcbb897561A57CBa5085CA416fb7b4", - "links": { - "Homepage": "https://qunqun.io" - }, - "marketcap_usd": 0, - "name": "QunQun", - "network": "eth", - "shortcut": "QUN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:R": { - "address": "0x48f775EFBE4F5EcE6e0DF2f7b5932dF56823B990", - "links": { - "Homepage": "https://revain.org" - }, - "marketcap_usd": 0, - "name": "Revain", - "network": "eth", - "shortcut": "R", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RAE": { - "address": "0xE5a3229CCb22b6484594973A03a3851dCd948756", - "links": { - "Github": "https://github.com/rokfin/eth-contracts", - "Homepage": "https://www.raetoken.org" - }, - "marketcap_usd": 7985545, - "name": "RAE Token", - "network": "eth", - "shortcut": "RAE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RAI": { - "address": "0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919", - "links": { - "Github": "https://github.com/reflexer-labs/", - "Homepage": "https://reflexer.finance/" - }, - "marketcap_usd": 6622639, - "name": "Rai Reflex Index", - "network": "eth", - "shortcut": "RAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RAO": { - "address": "0x45eDb535942a8C84D9f4b5D37e1b25F91Ea4804c", - "links": { - "Github": "https://github.com/RadioYoFM/ICO_smartcontract/", - "Homepage": "https://rao.radioyo.fm" - }, - "marketcap_usd": 0, - "name": "RadioYo", - "network": "eth", - "shortcut": "RAO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RATING": { - "address": "0xE8663A64A96169ff4d95b4299E7ae9a76b905B31", - "links": { - "Homepage": "http://token.dprating.com" - }, - "marketcap_usd": 344016, - "name": "DPRating", - "network": "eth", - "shortcut": "RATING", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RBLX": { - "address": "0xFc2C4D8f95002C14eD0a7aA65102Cac9e5953b5E", - "links": { - "Github": "https://github.com/rublixdev", - "Homepage": "https://rublix.io/" - }, - "marketcap_usd": 535673, - "name": "Rublix", - "network": "eth", - "shortcut": "RBLX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RBX": { - "address": "0x8254e26e453EB5aBd29B3c37AC9E8Da32E5d3299", - "links": { - "Homepage": "https://rbx.ae/" - }, - "marketcap_usd": 0, - "name": "RBX", - "network": "eth", - "shortcut": "RBX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RCN": { - "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", - "links": { - "Github": "https://github.com/ripio/rcn-token", - "Homepage": "https://ripiocredit.network" - }, - "marketcap_usd": 1108878, - "name": "Ripio Credit Network", - "network": "eth", - "shortcut": "RCN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RDN": { - "address": "0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6", - "links": { - "Github": "https://github.com/raiden-network/raiden/", - "Homepage": "https://raiden.network" - }, - "marketcap_usd": 2880243, - "name": "Raiden Network", - "network": "eth", - "shortcut": "RDN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RDV": { - "address": "0xd967d9F941CD316Ab238d3EE761F80b7cAec7819", - "links": { - "Github": "https://github.com/Rendezvous-Paradise", - "Homepage": "https://www.rendezvous.vip" - }, - "marketcap_usd": 0, - "name": "Rendezvous", - "network": "eth", - "shortcut": "RDV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REA": { - "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", - "links": { - "Homepage": "https://www.realisto.io" - }, - "marketcap_usd": 0, - "name": "Realisto", - "network": "eth", - "shortcut": "REA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REAL": { - "address": "0x9214eC02CB71CbA0ADA6896b8dA260736a67ab10", - "links": { - "Homepage": "https://www.real.markets" - }, - "marketcap_usd": 0, - "name": "Real Estate Asset Ledger", - "network": "eth", - "shortcut": "REAL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REBL": { - "address": "0x5F53f7A8075614b699Baad0bC2c899f4bAd8FBBF", - "links": { - "Homepage": "https://www.rebellious.io" - }, - "marketcap_usd": 0, - "name": "Rebellious", - "network": "eth", - "shortcut": "REBL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RED": { - "address": "0x76960Dccd5a1fe799F7c29bE9F19ceB4627aEb2f", - "links": { - "Github": "https://github.com/red", - "Homepage": "https://ico.red-lang.org" - }, - "marketcap_usd": 293525, - "name": "Red Community Token", - "network": "eth", - "shortcut": "RED", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REDC": { - "address": "0xB563300A3BAc79FC09B93b6F84CE0d4465A2AC27", - "links": { - "Github": "https://github.com/Redcabllc", - "Homepage": "https://redcab.io" - }, - "marketcap_usd": 0, - "name": "RedCab", - "network": "eth", - "shortcut": "REDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REEF": { - "address": "0xFE3E6a25e6b192A42a44ecDDCd13796471735ACf", - "links": { - "Github": "http://github.com/reef-defi", - "Homepage": "http://reef.finance" - }, - "marketcap_usd": 70777959, - "name": "Reef Finance", - "network": "eth", - "shortcut": "REEF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REF": { - "address": "0x89303500a7Abfb178B274FD89F2469C264951e1f", - "links": { - "Homepage": "https://reftoken.io" - }, - "marketcap_usd": 0, - "name": "RefToken", - "network": "eth", - "shortcut": "REF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REM": { - "address": "0x83984d6142934bb535793A82ADB0a46EF0F66B6d", - "links": { - "Homepage": "https://remme.io" - }, - "marketcap_usd": 152526, - "name": "Remme", - "network": "eth", - "shortcut": "REM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REMI": { - "address": "0x13cb85823f78Cff38f0B0E90D3e975b8CB3AAd64", - "links": { - "Github": "https://github.com/remiit", - "Homepage": "https://remiit.io" - }, - "marketcap_usd": 0, - "name": "REMI", - "network": "eth", - "shortcut": "REMI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REN": { - "address": "0x408e41876cCCDC0F92210600ef50372656052a38", - "links": { - "Github": "https://github.com/renproject", - "Homepage": "https://renproject.io/" - }, - "marketcap_usd": 97699774, - "name": "Republic Token", - "network": "eth", - "shortcut": "REN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REP": { - "address": "0x1985365e9f78359a9B6AD760e32412f4a445E862", - "links": { - "Homepage": "https://augur.net" - }, - "marketcap_usd": 100020697, - "name": "Augur", - "network": "eth", - "shortcut": "REP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REPv2": { - "address": "0x221657776846890989a759BA2973e427DfF5C9bB", - "links": { - "Homepage": "https://augur.net" - }, - "marketcap_usd": 0, - "name": "Reputation", - "network": "eth", - "shortcut": "REPv2", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REQ": { - "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", - "links": { - "Homepage": "https://request.network" - }, - "marketcap_usd": 113609078, - "name": "Request Network", - "network": "eth", - "shortcut": "REQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REV": { - "address": "0x2ef52Ed7De8c5ce03a4eF0efbe9B7450F2D7Edc9", - "links": { - "Github": "https://github.com/Revain", - "Homepage": "https://revain.org" - }, - "marketcap_usd": 50618632, - "name": "Revain", - "network": "eth", - "shortcut": "REV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:REX": { - "address": "0xf05a9382A4C3F29E2784502754293D88b835109C", - "links": { - "Github": "https://github.com/rexmls/RexToken", - "Homepage": "https://imbrex.io" - }, - "marketcap_usd": 0, - "name": "imbrex", - "network": "eth", - "shortcut": "REX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RFR": { - "address": "0xd0929d411954c47438dc1d871dd6081F5C5e149c", - "links": { - "Homepage": "https://refereum.com" - }, - "marketcap_usd": 33221299, - "name": "Refereum", - "network": "eth", - "shortcut": "RFR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RHOC": { - "address": "0x168296bb09e24A88805CB9c33356536B980D3fC5", - "links": { - "Homepage": "https://www.rchain.coop" - }, - "marketcap_usd": 0, - "name": "RChain", - "network": "eth", - "shortcut": "RHOC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RIPT": { - "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", - "links": { - "Github": "https://github.com/riptidecoin/riptide-coin", - "Homepage": "https://riptidecoin.com" - }, - "marketcap_usd": 0, - "name": "RiptideCoin", - "network": "eth", - "shortcut": "RIPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RIYA": { - "address": "0x0b1724cc9FDA0186911EF6a75949e9c0d3F0f2F3", - "links": { - "Homepage": "http://etheriya.com" - }, - "marketcap_usd": 0, - "name": "Etheriya", - "network": "eth", - "shortcut": "RIYA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RLC": { - "address": "0x607F4C5BB672230e8672085532f7e901544a7375", - "links": { - "Homepage": "http://iex.ec/" - }, - "marketcap_usd": 154000623, - "name": "IEx.ec", - "network": "eth", - "shortcut": "RLC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RLT": { - "address": "0xcCeD5B8288086BE8c38E23567e684C3740be4D48", - "links": { - "Github": "https://github.com/Smartroulette", - "Homepage": "https://smartplay.tech" - }, - "marketcap_usd": 0, - "name": "RouletteToken", - "network": "eth", - "shortcut": "RLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RLTY": { - "address": "0xbe99B09709fc753b09BCf557A992F6605D5997B0", - "links": { - "Homepage": "http://www.smartrealty.io" - }, - "marketcap_usd": 0, - "name": "SMARTRealty", - "network": "eth", - "shortcut": "RLTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RLX": { - "address": "0x4A42d2c580f83dcE404aCad18dab26Db11a1750E", - "links": { - "Homepage": "http://www.relex.io" - }, - "marketcap_usd": 0, - "name": "Relex", - "network": "eth", - "shortcut": "RLX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RMESH": { - "address": "0x8D5682941cE456900b12d47ac06a88b47C764CE1", - "links": { - "Github": "https://github.com/rightmesh", - "Homepage": "https://www.rightmesh.io/" - }, - "marketcap_usd": 0, - "name": "RightMesh Token", - "network": "eth", - "shortcut": "RMESH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RNDR": { - "address": "0x0996bFb5D057faa237640E2506BE7B4f9C46de0B", - "links": { - "Homepage": "https://rendertoken.com" - }, - "marketcap_usd": 0, - "name": "Render Token", - "network": "eth", - "shortcut": "RNDR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RNT": { - "address": "0xFF603F43946A3A28DF5E6A73172555D8C8b02386", - "links": { - "Homepage": "https://www.oneroot.io/en" - }, - "marketcap_usd": 532562, - "name": "OneRoot Network", - "network": "eth", - "shortcut": "RNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RNTB": { - "address": "0x1FE70bE734e473e5721ea57C8B5B01e6Caa52686", - "links": { - "Homepage": "https://bitrent.io" - }, - "marketcap_usd": 0, - "name": "BitRent", - "network": "eth", - "shortcut": "RNTB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ROCK": { - "address": "0xA40106134c5bF4c41411554e6db99B95A15ed9d8", - "links": { - "Github": "https://github.com/rocketico", - "Homepage": "https://rocketico.io" - }, - "marketcap_usd": 0, - "name": "Rocket Token", - "network": "eth", - "shortcut": "ROCK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ROCK2": { - "address": "0xC16b542ff490e01fcc0DC58a60e1EFdc3e357cA6", - "links": { - "Homepage": "https://icerockmining.io" - }, - "marketcap_usd": 0, - "name": "ICE ROCK MINING", - "network": "eth", - "shortcut": "ROCK2", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ROCK2PAY": { - "address": "0x0E3de3B0E3D617FD8D1D8088639bA877feb4d742", - "links": { - "Homepage": "https://icerockmining.io" - }, - "marketcap_usd": 0, - "name": "ICE ROCK MINING", - "network": "eth", - "shortcut": "ROCK2PAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ROK": { - "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", - "links": { - "Homepage": "https://rockchain.org" - }, - "marketcap_usd": 0, - "name": "Rocketchain", - "network": "eth", - "shortcut": "ROK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ROOBEE": { - "address": "0xA31B1767e09f842ECFd4bc471Fe44F830E3891AA", - "links": { - "Homepage": "https://roobee.io/" - }, - "marketcap_usd": 4479943, - "name": "ROOBEE", - "network": "eth", - "shortcut": "ROOBEE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RPE": { - "address": "0xCcc85AA8999505d6f886A32da4a107BBe0D1dE9E", - "links": { - "Github": "https://github.com/repetoken", - "Homepage": "http://repetoken.com" - }, - "marketcap_usd": 0, - "name": "REPE", - "network": "eth", - "shortcut": "RPE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RPL": { - "address": "0xB4EFd85c19999D84251304bDA99E90B92300Bd93", - "links": { - "Homepage": "https://www.rocketpool.net" - }, - "marketcap_usd": 0, - "name": "Rocket Pool", - "network": "eth", - "shortcut": "RPL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RSR": { - "address": "0x320623b8E4fF03373931769A31Fc52A4E78B5d70", - "links": { - "Github": "https://github.com/reserve-protocol/rsr-mainnet", - "Homepage": "https://reserve.org" - }, - "marketcap_usd": 234795022, - "name": "Reserve Rights", - "network": "eth", - "shortcut": "RSR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RTB": { - "address": "0xEC491c1088Eae992B7A214efB0a266AD0927A72A", - "links": { - "Homepage": "https://ab-chain.com" - }, - "marketcap_usd": 0, - "name": "AB-Chain RTB", - "network": "eth", - "shortcut": "RTB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RTC": { - "address": "0x7A5599B97E8c4abB5dd06EBA0E9d1F75AF818DB9", - "links": { - "Github": "http://www.github.com/osmoticio", - "Homepage": "http://osmotic.io" - }, - "marketcap_usd": 0, - "name": "OSMOTIC TOKEN", - "network": "eth", - "shortcut": "RTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RTH": { - "address": "0x3FD8f39A962eFDA04956981C31AB89FAB5FB8bC8", - "links": { - "Homepage": "https://www.rotharium.io" - }, - "marketcap_usd": 3022419, - "name": "Rotharium", - "network": "eth", - "shortcut": "RTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RTN": { - "address": "0x54b293226000ccBFC04DF902eEC567CB4C35a903", - "links": { - "Github": "https://github.com/Ridercoin2/RiderCoin/blob/master/README.md", - "Homepage": "http://ridertoken.com" - }, - "marketcap_usd": 0, - "name": "RiderToken", - "network": "eth", - "shortcut": "RTN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RUFF": { - "address": "0xf278c1CA969095ffddDED020290cf8B5C424AcE2", - "links": { - "Homepage": "http://ruffchain.com" - }, - "marketcap_usd": 349118, - "name": "Ruff", - "network": "eth", - "shortcut": "RUFF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RUNE": { - "address": "0xdEE02D94be4929d26f67B64Ada7aCf1914007F10", - "links": { - "Github": "https://github.com/thorchain", - "Homepage": "https://thorchain.org" - }, - "marketcap_usd": 0, - "name": "Rune", - "network": "eth", - "shortcut": "RUNE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RVL": { - "address": "0x41f615E24fAbd2b097a320E9E6c1f448cb40521c", - "links": { - "Homepage": "https://www.r-evolutioncoin.com" - }, - "marketcap_usd": 0, - "name": "RVL", - "network": "eth", - "shortcut": "RVL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RVT": { - "address": "0x3d1BA9be9f66B8ee101911bC36D3fB562eaC2244", - "links": { - "Homepage": "https://rivetzintl.com" - }, - "marketcap_usd": 15562, - "name": "Rivetz", - "network": "eth", - "shortcut": "RVT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:RYLT": { - "address": "0xd30a2e9347Ad48Ea208ee563a9CdfD80E962a727", - "links": { - "Github": "https://github.com/RoyaltyCOINx", - "Homepage": "http://royaltycoin.com" - }, - "marketcap_usd": 0, - "name": "RoyaltyCOIN", - "network": "eth", - "shortcut": "RYLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:S-A-PAT": { - "address": "0x1EC8fE51a9B6A3a6C427D17d9ECC3060fbc4a45c", - "links": { - "Homepage": "https://www.smartillions.ch" - }, - "marketcap_usd": 0, - "name": "S-A-PAT", - "network": "eth", - "shortcut": "S-A-PAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:S-ETH": { - "address": "0x3eb91D237e491E0DEE8582c402D85CB440fb6b54", - "links": { - "Homepage": "https://www.smartillions.ch" - }, - "marketcap_usd": 0, - "name": "S-ETH", - "network": "eth", - "shortcut": "S-ETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SAC": { - "address": "0xabC1280A0187a2020cC675437aed400185F86Db6", - "links": { - "Homepage": "https://www.sachain.net" - }, - "marketcap_usd": 0, - "name": "Smart Application Chain", - "network": "eth", - "shortcut": "SAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SAI": { - "address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", - "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" - }, - "marketcap_usd": 0, - "name": "Dai Stablecoin v1.0", - "network": "eth", - "shortcut": "SAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SALT": { - "address": "0x4156D3342D5c385a87D264F90653733592000581", - "links": { - "Homepage": "https://saltlending.com" - }, - "marketcap_usd": 6351019, - "name": "Salt Lending Token", - "network": "eth", - "shortcut": "SALT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SAN": { - "address": "0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098", - "links": { - "Homepage": "https://santiment.net" - }, - "marketcap_usd": 3377746, - "name": "Santiment", - "network": "eth", - "shortcut": "SAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SCANDI": { - "address": "0x78fE18e41f436e1981a3a60D1557c8a7a9370461", - "links": { - "Homepage": "https://scandiweb.com" - }, - "marketcap_usd": 0, - "name": "Scandiweb Coin", - "network": "eth", - "shortcut": "SCANDI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SCL": { - "address": "0xd7631787B4dCc87b1254cfd1e5cE48e96823dEe8", - "links": { - "Homepage": "https://ico.nexus.social" - }, - "marketcap_usd": 0, - "name": "SocialCoin", - "network": "eth", - "shortcut": "SCL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SCRL": { - "address": "0x24DCc881E7Dd730546834452F21872D5cb4b5293", - "links": { - "Homepage": "https://www.scroll.network" - }, - "marketcap_usd": 0, - "name": "SCRL", - "network": "eth", - "shortcut": "SCRL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SEELE": { - "address": "0xB1eeF147028E9f480DbC5ccaA3277D417D1b85F0", - "links": { - "Homepage": "http://seele.pro" - }, - "marketcap_usd": 0, - "name": "Seele", - "network": "eth", - "shortcut": "SEELE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SELF": { - "address": "0x67ab11058eF23D0a19178f61A050D3c38F81Ae21", - "links": { - "Github": "https://github.com/selftoken-projects", - "Homepage": "https://selftoken.co/" - }, - "marketcap_usd": 0, - "name": "SELF TOKEN", - "network": "eth", - "shortcut": "SELF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SENC": { - "address": "0xA13f0743951B4f6E3e3AA039f682E17279f52bc3", - "links": { - "Homepage": "https://www.sentinel-chain.org" - }, - "marketcap_usd": 90109, - "name": "Sentinel Chain", - "network": "eth", - "shortcut": "SENC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SENSE": { - "address": "0x6745fAB6801e376cD24F03572B9C9B0D4EdDDCcf", - "links": { - "Homepage": "https://sensay.it" - }, - "marketcap_usd": 0, - "name": "Sensay", - "network": "eth", - "shortcut": "SENSE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SENT": { - "address": "0xa44E5137293E855B1b7bC7E2C6f8cD796fFCB037", - "links": { - "Homepage": "https://sentinel.co" - }, - "marketcap_usd": 0, - "name": "SENTinel", - "network": "eth", - "shortcut": "SENT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SET": { - "address": "0xe06eda7435bA749b047380CEd49121ddE93334Ae", - "links": { - "Github": "https://github.com/SydEthereum/meetup-token#meetup-token", - "Homepage": "http://sydeth.com" - }, - "marketcap_usd": 0, - "name": "SET", - "network": "eth", - "shortcut": "SET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SETS": { - "address": "0x04E0Af0af1b7f0023c6B12af5a94Df59B0e8cF59", - "links": { - "Homepage": "https://wwww.sensitrust.io" - }, - "marketcap_usd": 0, - "name": "Sensitrust Token", - "network": "eth", - "shortcut": "SETS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SEV": { - "address": "0xaf50F8bEc1DbEC013B7025dB444Da019c2f5d488", - "links": { - "Github": "https://github.com/SeveraDAO/Sev-Token", - "Homepage": "https://severadao.ai" - }, - "marketcap_usd": 0, - "name": "SeveraDAO", - "network": "eth", - "shortcut": "SEV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SEXY": { - "address": "0x98F5e9b7F0e33956C0443E81bF7deB8B5b1ed545", - "links": { - "Homepage": "http://sexytoken.co" - }, - "marketcap_usd": 0, - "name": "Sexy Token", - "network": "eth", - "shortcut": "SEXY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SGA": { - "address": "0xed0849BF46CfB9845a2d900A0A4E593F2dD3673c", - "links": { - "Github": "https://github.com/SagaCurrency/smart-contracts", - "Homepage": "https://www.saga.org" - }, - "marketcap_usd": 0, - "name": "SGA Token", - "network": "eth", - "shortcut": "SGA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SGEL": { - "address": "0xa1ccc166faf0E998b3E33225A1A0301B1C86119D", - "links": { - "Homepage": "https://www.soerengelder.com" - }, - "marketcap_usd": 0, - "name": "SGELDER", - "network": "eth", - "shortcut": "SGEL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SGN": { - "address": "0xB2135AB9695a7678Dd590B1A996CB0f37BCB0718", - "links": { - "Homepage": "https://signals.network" - }, - "marketcap_usd": 0, - "name": "Signals Network", - "network": "eth", - "shortcut": "SGN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SGR": { - "address": "0xCB5A05beF3257613E984C17DbcF039952B6d883F", - "links": { - "Homepage": "http://sugarexchange.io" - }, - "marketcap_usd": 0, - "name": "Sugar Exchange", - "network": "eth", - "shortcut": "SGR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SHIB": { - "address": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", - "links": { - "Homepage": "https://shibatoken.com" - }, - "marketcap_usd": 6796478899, - "name": "SHIBA INU", - "network": "eth", - "shortcut": "SHIB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SHIP": { - "address": "0xe25b0BBA01Dc5630312B6A21927E578061A13f55", - "links": { - "Homepage": "https://www.shipchain.io" - }, - "marketcap_usd": 0, - "name": "ShipChain", - "network": "eth", - "shortcut": "SHIP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SHIT": { - "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", - "links": { - "Homepage": "https://www.shitcoin.io" - }, - "marketcap_usd": 0, - "name": "SHIT", - "network": "eth", - "shortcut": "SHIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SHP": { - "address": "0xEF2463099360a085f1f10b076Ed72Ef625497a06", - "links": { - "Homepage": "https://sharpe.capital" - }, - "marketcap_usd": 0, - "name": "Sharpe Platform Token", - "network": "eth", - "shortcut": "SHP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SIBU": { - "address": "0x980E45AB37c6bcAF93Fe911b3e207e08a3a60B5E", - "links": { - "Github": "https://github.com/SibuToken/sibutoken", - "Homepage": "https://sibutoken.com" - }, - "marketcap_usd": 0, - "name": "SIBU", - "network": "eth", - "shortcut": "SIBU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SIFT": { - "address": "0x8a187D5285d316bcBC9ADafc08b51d70a0d8e000", - "links": { - "Homepage": "https://smartift.com" - }, - "marketcap_usd": 0, - "name": "SIFT", - "network": "eth", - "shortcut": "SIFT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SIG": { - "address": "0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792", - "links": { - "Github": "https://github.com/SpectivOfficial", - "Homepage": "https://spectivvr.com" - }, - "marketcap_usd": 0, - "name": "Signal", - "network": "eth", - "shortcut": "SIG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SIH": { - "address": "0x6D728fF862Bfe74be2aba30537E992A24F259a22", - "links": { - "Github": "https://github.com/ClintonK227/SIH-Token", - "Homepage": "https://salientinvestmentholding.com" - }, - "marketcap_usd": 0, - "name": "Salient Investment Holding", - "network": "eth", - "shortcut": "SIH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SION": { - "address": "0xE8d1eFD0c95011298E9A30143A0182c06b45ff5D", - "links": { - "Homepage": "https://sioncrypto.com" - }, - "marketcap_usd": 0, - "name": "SION", - "network": "eth", - "shortcut": "SION", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SKB": { - "address": "0x4aF328C52921706dCB739F25786210499169AFe6", - "links": { - "Homepage": "https://www.skb-coin.jp/en" - }, - "marketcap_usd": 364958, - "name": "Sakura Bloom", - "network": "eth", - "shortcut": "SKB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SKE": { - "address": "0x13DB74B3cf512F65C4b91683940B4f3955E05085", - "links": { - "Homepage": "http://superkeep.pro/" - }, - "marketcap_usd": 0, - "name": "Super Keep Token", - "network": "eth", - "shortcut": "SKE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SKIN": { - "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", - "links": { - "Github": "https://github.com/Steamtradenet/smart-contract", - "Homepage": "https://skincoin.org" - }, - "marketcap_usd": 53089, - "name": "SKIN", - "network": "eth", - "shortcut": "SKIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SKO1": { - "address": "0x4994e81897a920c0FEA235eb8CEdEEd3c6fFF697", - "links": { - "Homepage": "http://www.sikoba.com" - }, - "marketcap_usd": 0, - "name": "Sikoba", - "network": "eth", - "shortcut": "SKO1", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SKR": { - "address": "0x4c382F8E09615AC86E08CE58266CC227e7d4D913", - "links": { - "Homepage": "https://tokensale.skrilla.com" - }, - "marketcap_usd": 0, - "name": "SKR Token", - "network": "eth", - "shortcut": "SKR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SKRT": { - "address": "0x887168120cb89Fb06F3E74Dc4AF20D67dF0977f6", - "links": { - "Homepage": "https://www.sekuritance.com" - }, - "marketcap_usd": 0, - "name": "Sekuritance", - "network": "eth", - "shortcut": "SKRT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SKYM": { - "address": "0x7297862B9670fF015192799cc849726c88bf1d77", - "links": { - "Github": "https://github.com/SoarEarth", - "Homepage": "https://soar.earth" - }, - "marketcap_usd": 0, - "name": "Skymap Token", - "network": "eth", - "shortcut": "SKYM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SLP": { - "address": "0xCC8Fa225D80b9c7D42F96e9570156c65D6cAAa25", - "links": { - "Homepage": "https://youengine.io" - }, - "marketcap_usd": 137126516, - "name": "Smooth Love Potion", - "network": "eth", - "shortcut": "SLP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SLT": { - "address": "0x7A5fF295Dc8239d5C2374E4D894202aAF029Cab6", - "links": { - "Homepage": "http://smartlands.io" - }, - "marketcap_usd": 0, - "name": "Smartlands", - "network": "eth", - "shortcut": "SLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SLY": { - "address": "0x7928c8aBF1F74eF9F96D4D0a44e3b4209d360785", - "links": { - "Github": "https://github.com/SELFLLERY", - "Homepage": "https://selfllery.com/" - }, - "marketcap_usd": 0, - "name": "Selfllery", - "network": "eth", - "shortcut": "SLY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SMS": { - "address": "0x39013F961c378f02C2b82A6E1d31E9812786FD9D", - "links": { - "Homepage": "https://smscoin.jp/en" - }, - "marketcap_usd": 0, - "name": "Speed Mining Service", - "network": "eth", - "shortcut": "SMS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SNC": { - "address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", - "links": { - "Homepage": "https://suncontract.org" - }, - "marketcap_usd": 3613310, - "name": "SunContract", - "network": "eth", - "shortcut": "SNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SND": { - "address": "0xf333b2Ace992ac2bBD8798bF57Bc65a06184afBa", - "links": { - "Homepage": "https://www.sandcoin.io" - }, - "marketcap_usd": 0, - "name": "Sandcoin", - "network": "eth", - "shortcut": "SND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SNG": { - "address": "0xcFD6Ae8BF13f42DE14867351eAff7A8A3b9FbBe7", - "links": { - "Github": "https://github.com/SinergiaBlockchain", - "Homepage": "https://sinergiablockchain.org/index-en.html" - }, - "marketcap_usd": 0, - "name": "SINERGIA", - "network": "eth", - "shortcut": "SNG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SNGLS": { - "address": "0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009", - "links": { - "Homepage": "https://singulardtv.com" - }, - "marketcap_usd": 0, - "name": "SingularDTV", - "network": "eth", - "shortcut": "SNGLS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SNIP": { - "address": "0x44F588aEeB8C44471439D1270B3603c66a9262F1", - "links": { - "Homepage": "https://www.snip.network" - }, - "marketcap_usd": 0, - "name": "SNIP", - "network": "eth", - "shortcut": "SNIP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SNM": { - "address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", - "links": { - "Github": "https://github.com/sonm-io", - "Homepage": "https://sonm.com" - }, - "marketcap_usd": 0, - "name": "SONM", - "network": "eth", - "shortcut": "SNM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SNOV": { - "address": "0xBDC5bAC39Dbe132B1E030e898aE3830017D7d969", - "links": { - "Homepage": "https://snovian.space" - }, - "marketcap_usd": 0, - "name": "Snovian.Space", - "network": "eth", - "shortcut": "SNOV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SNT": { - "address": "0x744d70FDBE2Ba4CF95131626614a1763DF805B9E", - "links": { - "Github": "https://github.com/status-im", - "Homepage": "https://status.im" - }, - "marketcap_usd": 117873087, - "name": "Status Network Token", - "network": "eth", - "shortcut": "SNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SOAR": { - "address": "0xD65960FAcb8E4a2dFcb2C2212cb2e44a02e2a57E", - "links": { - "Homepage": "http://soarlabs.org" - }, - "marketcap_usd": 0, - "name": "Soarcoin", - "network": "eth", - "shortcut": "SOAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SOC": { - "address": "0x2d0E95bd4795D7aCe0da3C0Ff7b706a5970eb9D3", - "links": { - "Homepage": "https://www.allsportschain.com" - }, - "marketcap_usd": 2272034, - "name": "All Sports", - "network": "eth", - "shortcut": "SOC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SOL": { - "address": "0x1F54638b7737193FFd86c19Ec51907A7c41755D8", - "links": { - "Homepage": "https://sola.foundation" - }, - "marketcap_usd": 0, - "name": "Sola Token", - "network": "eth", - "shortcut": "SOLA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SONIQ": { - "address": "0x1C62aCa2b7605Db3606eAcdA7Bc67A1857DDb8FF", - "links": { - "Homepage": "https://soniqproject.com" - }, - "marketcap_usd": 0, - "name": "Soniq", - "network": "eth", - "shortcut": "SONIQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SOUL": { - "address": "0xBb1f24C0c1554b9990222f036b0AaD6Ee4CAec29", - "links": { - "Github": "https://github.com/cryptosoulgame", - "Homepage": "https://cryptosoul.io/" - }, - "marketcap_usd": 125890, - "name": "CryptoSoul", - "network": "eth", - "shortcut": "SOUL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPACE": { - "address": "0xcc7ab8d78dBA187dC95bF3bB86e65E0C26d0041f", - "links": { - "Github": "https://github.com/thespacelens", - "Homepage": "https://spacetoken.spacelens.com/" - }, - "marketcap_usd": 0, - "name": "Spacelens", - "network": "eth", - "shortcut": "SPACE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPANK": { - "address": "0x42d6622deCe394b54999Fbd73D108123806f6a18", - "links": { - "Homepage": "https://spankchain.com" - }, - "marketcap_usd": 0, - "name": "SpankChain", - "network": "eth", - "shortcut": "SPANK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPARC": { - "address": "0x58bf7df57d9DA7113c4cCb49d8463D4908C735cb", - "links": { - "Homepage": "https://kingsds.network" - }, - "marketcap_usd": 0, - "name": "SPARC", - "network": "eth", - "shortcut": "SPARC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPARTA": { - "address": "0x24AEF3BF1A47561500f9430D74Ed4097C47F51F2", - "links": { - "Homepage": "https://www.spartaico.com" - }, - "marketcap_usd": 0, - "name": "SPARTA", - "network": "eth", - "shortcut": "SPARTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPAZ": { - "address": "0x8F9bfe5b6A5C3fEa8c64ad41a5Cf6f60Ec4aa47c", - "links": { - "Github": "https://github.com/SPZ-TOKEN", - "Homepage": "https://swapcoinz.org" - }, - "marketcap_usd": 0, - "name": "SWAPCOINZ", - "network": "eth", - "shortcut": "SPAZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPC": { - "address": "0x8069080a922834460C3A092FB2c1510224dc066b", - "links": { - "Github": "https://github.com/spacechain/token", - "Homepage": "https://spacechain.com/" - }, - "marketcap_usd": 0, - "name": "SpaceChain", - "network": "eth", - "shortcut": "SPC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPD": { - "address": "0x1dEa979ae76f26071870F824088dA78979eb91C8", - "links": { - "Homepage": "https://spindle.zone" - }, - "marketcap_usd": 23855, - "name": "SPINDLE", - "network": "eth", - "shortcut": "SPD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPF": { - "address": "0x85089389C14Bd9c77FC2b8F0c3d1dC3363Bf06Ef", - "links": { - "Homepage": "https://sportyfi.io" - }, - "marketcap_usd": 0, - "name": "Sportify", - "network": "eth", - "shortcut": "SPF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPIRIT": { - "address": "0x92d7A89405Ea3cC605A467E834236e09DF60bf16", - "links": { - "Github": "https://github.com/miitspirit", - "Homepage": "https://spirittoken.net" - }, - "marketcap_usd": 0, - "name": "Spirit", - "network": "eth", - "shortcut": "SPIRIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPN": { - "address": "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A", - "links": { - "Homepage": "https://www.sapien.network/" - }, - "marketcap_usd": 0, - "name": "Sapien", - "network": "eth", - "shortcut": "SPN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SPX": { - "address": "0x05aAaA829Afa407D83315cDED1d45EB16025910c", - "links": { - "Homepage": "https://sp8de.com" - }, - "marketcap_usd": 0, - "name": "Sp8de", - "network": "eth", - "shortcut": "SPX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SRN": { - "address": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25", - "links": { - "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", - "Homepage": "https://sirinlabs.com" - }, - "marketcap_usd": 916240, - "name": "Sirin Labs", - "network": "eth", - "shortcut": "SRN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SRX": { - "address": "0x32F3b8A00B6912D0314be212fe9538B7B9430c12", - "links": { - "Github": "https://github.com/SiriusX-Token", - "Homepage": "https://siriusxtravel.com" - }, - "marketcap_usd": 0, - "name": "SiriusX", - "network": "eth", - "shortcut": "SRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SSP": { - "address": "0x624d520BAB2E4aD83935Fa503fB130614374E850", - "links": { - "Homepage": "https://smartshare.vip/#" - }, - "marketcap_usd": 150024, - "name": "Smartshare", - "network": "eth", - "shortcut": "SSP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STABIT": { - "address": "0x4A89cD486fA996ad50c0a63C35c78702f5422a50", - "links": { - "Homepage": "https://stabitcoin.com/" - }, - "marketcap_usd": 0, - "name": "StabitCoin", - "network": "eth", - "shortcut": "STABIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STAC": { - "address": "0x9a005c9a89BD72a4Bd27721E7a09A3c11D2b03C4", - "links": { - "Homepage": "https://coinstarter.com" - }, - "marketcap_usd": 9313, - "name": "Starter Coin", - "network": "eth", - "shortcut": "STAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STACS": { - "address": "0x286708f069225905194673755F12359e6afF6FE1", - "links": { - "Homepage": "https://stacs.io" - }, - "marketcap_usd": 0, - "name": "STACS", - "network": "eth", - "shortcut": "STACS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STAR": { - "address": "0xF70a642bD387F94380fFb90451C2c81d4Eb82CBc", - "links": { - "Homepage": "http://starbase.co" - }, - "marketcap_usd": 37318, - "name": "Star Token", - "network": "eth", - "shortcut": "STAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STATE": { - "address": "0x00C2999c8B2AdF4ABC835cc63209533973718eB1", - "links": { - "Github": "https://github.com/aave", - "Homepage": "https://nwo.capital " - }, - "marketcap_usd": 0, - "name": "New World Order", - "network": "eth", - "shortcut": "STATE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STB": { - "address": "0x09BcA6eBAb05Ee2ae945BE4edA51393d94Bf7b99", - "links": { - "Github": "https://github.com/stableproject/", - "Homepage": "https://stable.foundation" - }, - "marketcap_usd": 0, - "name": "STABLE Token", - "network": "eth", - "shortcut": "STB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STC": { - "address": "0x629aEe55ed49581C33ab27f9403F7992A289ffd5", - "links": { - "Github": "https://github.com/DimensionsNetwork", - "Homepage": "https://dimensions.network" - }, - "marketcap_usd": 0, - "name": "StrikeCoin Token", - "network": "eth", - "shortcut": "STC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STK": { - "address": "0xaE73B38d1c9A8b274127ec30160a4927C4d71824", - "links": { - "Homepage": "https://stktoken.com" - }, - "marketcap_usd": 0, - "name": "STK Token", - "network": "eth", - "shortcut": "STK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STL": { - "address": "0xC1Ad68c43508dD5AdDb8d0ac0927dbE752d149D6", - "links": { - "Homepage": "https://stablecoinswap.io/" - }, - "marketcap_usd": 0, - "name": "Stablecoinswap", - "network": "eth", - "shortcut": "STL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STM": { - "address": "0x302ce6674A16b54bA1B8A49FED64C471EdE6C174", - "links": { - "Homepage": "https://seven-trust-mongolia.mn" - }, - "marketcap_usd": 0, - "name": "StmToken", - "network": "eth", - "shortcut": "STM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STN": { - "address": "0x599346779e90fc3F5F997b5ea715349820F91571", - "links": { - "Homepage": "https://saturn.network" - }, - "marketcap_usd": 0, - "name": "Saturn Network", - "network": "eth", - "shortcut": "STN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STORJ": { - "address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", - "links": { - "Github": "https://github.com/Storj", - "Homepage": "https://storj.io" - }, - "marketcap_usd": 178806759, - "name": "STORJ", - "network": "eth", - "shortcut": "STORJ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STORM": { - "address": "0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433", - "links": { - "Homepage": "https://www.stormtoken.com" - }, - "marketcap_usd": 0, - "name": "Storm Token", - "network": "eth", - "shortcut": "STORM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STP": { - "address": "0xecd570bBf74761b960Fa04Cc10fe2c4e86FfDA36", - "links": { - "Github": "https://github.com/stashpayio", - "Homepage": "https://stashpay.io" - }, - "marketcap_usd": 0, - "name": "StashPay", - "network": "eth", - "shortcut": "STP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STQ": { - "address": "0x5c3a228510D246b78a3765C20221Cbf3082b44a4", - "links": { - "Github": "https://github.com/Storiqa/", - "Homepage": "https://storiqa.com" - }, - "marketcap_usd": 0, - "name": "Storiqa", - "network": "eth", - "shortcut": "STQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STR": { - "address": "0xBAE235823D7255D9D48635cEd4735227244Cd583", - "links": { - "Homepage": "https://staker.network" - }, - "marketcap_usd": 0, - "name": "Staker", - "network": "eth", - "shortcut": "STR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STRC": { - "address": "0x46492473755e8dF960F8034877F61732D718CE96", - "links": { - "Github": "https://github.com/sprux/BackToEarth", - "Homepage": "https://backto.earth" - }, - "marketcap_usd": 0, - "name": "STRC", - "network": "eth", - "shortcut": "STRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STU": { - "address": "0x0371A82e4A9d0A4312f3ee2Ac9c6958512891372", - "links": { - "Homepage": "https://bitjob.io" - }, - "marketcap_usd": 0, - "name": "bitJob", - "network": "eth", - "shortcut": "STU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:STX": { - "address": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45", - "links": { - "Github": "https://github.com/stx-technologies/stox-token", - "Homepage": "https://www.stox.com" - }, - "marketcap_usd": 184023, - "name": "StoxToken", - "network": "eth", - "shortcut": "STX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SUB": { - "address": "0x8D75959f1E61EC2571aa72798237101F084DE63a", - "links": { - "Github": "https://github.com/SubstratumNetwork", - "Homepage": "https://substratum.net" - }, - "marketcap_usd": 186040, - "name": "Substratum", - "network": "eth", - "shortcut": "SUB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SUR": { - "address": "0xe120c1ECBfdFeA7F0A8f0Ee30063491E8c26fedf", - "links": { - "Homepage": "https://www.suretly.com" - }, - "marketcap_usd": 0, - "name": "Suretly", - "network": "eth", - "shortcut": "SUR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SUSHI": { - "address": "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2", - "links": { - "Github": "https://github.com/sushiswap", - "Homepage": "https://sushiswapclassic.org/" - }, - "marketcap_usd": 288234769, - "name": "SushiToken", - "network": "eth", - "shortcut": "SUSHI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SVD": { - "address": "0xbdEB4b83251Fb146687fa19D1C660F99411eefe3", - "links": { - "Homepage": "https://ico.savedroid.com" - }, - "marketcap_usd": 0, - "name": "savedroid", - "network": "eth", - "shortcut": "SVD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SWAP": { - "address": "0xC958e9FB59724f8b0927426a8836F1158F0d03cf", - "links": { - "Github": "https://github.com/swaps-network", - "Homepage": "https://swaps.network/" - }, - "marketcap_usd": 0, - "name": "SWAPS.NETWORK", - "network": "eth", - "shortcut": "SWAP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SWASH": { - "address": "0xA130E3a33a4d84b04c3918c4E5762223Ae252F80", - "links": { - "Github": "https://github.com/swashapp/", - "Homepage": "https://swashapp.io/" - }, - "marketcap_usd": 12397242, - "name": "Swash Token", - "network": "eth", - "shortcut": "SWASH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SWFTC": { - "address": "0x0bb217E40F8a5Cb79Adf04E1aAb60E5abd0dfC1e", - "links": { - "Homepage": "http://www.swftcoin.com" - }, - "marketcap_usd": 5259537, - "name": "SwftCoin", - "network": "eth", - "shortcut": "SWFTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SWM": { - "address": "0x9e88613418cF03dCa54D6a2cf6Ad934A78C7A17A", - "links": { - "Github": "https://github.com/swarmfund", - "Homepage": "https://swarm.fund" - }, - "marketcap_usd": 0, - "name": "Swarm Fund Token", - "network": "eth", - "shortcut": "SWM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SWRM": { - "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", - "links": { - "Homepage": "https://www.stream.space" - }, - "marketcap_usd": 0, - "name": "StreamShares", - "network": "eth", - "shortcut": "SWRM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SWT": { - "address": "0xB9e7F8568e08d5659f5D29C4997173d84CdF2607", - "links": { - "Homepage": "http://swarm.city" - }, - "marketcap_usd": 264688, - "name": "Swarm City Token", - "network": "eth", - "shortcut": "SWT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SXDT": { - "address": "0x12B306fA98F4CbB8d4457FdFf3a0A0a56f07cCdf", - "links": { - "Homepage": "http://www.spectre.ai" - }, - "marketcap_usd": 0, - "name": "Spectre.ai D-Token", - "network": "eth", - "shortcut": "SXDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SXR": { - "address": "0xfCdaE8771F8d28E3B9027AB58F4A20749767a097", - "links": { - "Github": "https://github.com/XAInteractive", - "Homepage": "https://www.xainteractive.com" - }, - "marketcap_usd": 0, - "name": "SecureXR", - "network": "eth", - "shortcut": "SXR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SXUT": { - "address": "0x2C82c73d5B34AA015989462b2948cd616a37641F", - "links": { - "Homepage": "http://www.spectre.ai" - }, - "marketcap_usd": 0, - "name": "Spectre.ai U-Token", - "network": "eth", - "shortcut": "SXUT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SYN": { - "address": "0x10B123FdDde003243199aaD03522065dC05827A0", - "links": { - "Homepage": "https://synapse.ai" - }, - "marketcap_usd": 0, - "name": "Synapse", - "network": "eth", - "shortcut": "SYN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SYS": { - "address": "0x46EaF75e6d391708b7F1a0D56875D90844119521", - "links": { - "Homepage": "https://syscoin.org" - }, - "marketcap_usd": 0, - "name": "Syscoin", - "network": "eth", - "shortcut": "SYS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SYSX": { - "address": "0x3A0D746B3EA1d8ccDf19aD915913BD68391133Ca", - "links": { - "Github": "https://github.com/syscoin", - "Homepage": "https://syscoin.org" - }, - "marketcap_usd": 0, - "name": "SyscoinToken", - "network": "eth", - "shortcut": "SYSX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:SenSatorI": { - "address": "0x4cA74185532DC1789527194e5B9c866dD33F4E82", - "links": { - "Homepage": "http://theglobalbitcoin.com" - }, - "marketcap_usd": 0, - "name": "SenSatorI Token", - "network": "eth", - "shortcut": "SenSatorI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:Skey": { - "address": "0x06A01a4d579479Dd5D884EBf61A31727A3d8D442", - "links": { - "Github": "https://github.com/skey-network", - "Homepage": "https://skey.network" - }, - "marketcap_usd": 3338194, - "name": "Skey Network", - "network": "eth", - "shortcut": "Skey", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TALAO": { - "address": "0x1D4cCC31dAB6EA20f461d329a0562C1c58412515", - "links": { - "Homepage": "https://www.talao.io" - }, - "marketcap_usd": 0, - "name": "Talao", - "network": "eth", - "shortcut": "TALAO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TAN": { - "address": "0x2C36204a0712A2a50E54A62F7c4F01867e78cB53", - "links": { - "Homepage": "https://taklimakan.io" - }, - "marketcap_usd": 0, - "name": "Taklimakan Network", - "network": "eth", - "shortcut": "TAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TAU": { - "address": "0xc27A2F05fa577a83BA0fDb4c38443c0718356501", - "links": { - "Github": "https://github.com/lamden", - "Homepage": "https://www.lamden.io" - }, - "marketcap_usd": 0, - "name": "Lamden Tau", - "network": "eth", - "shortcut": "TAU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TAUD": { - "address": "0x00006100F7090010005F1bd7aE6122c3C2CF0090", - "links": { - "Github": "https://github.com/trusttoken", - "Homepage": "https://www.trusttoken.com/trueaud" - }, - "marketcap_usd": 0, - "name": "TrueAUD", - "network": "eth", - "shortcut": "TAUD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TAUR": { - "address": "0x64786063A352b399d44de2875909D1229F120eBE", - "links": { - "Homepage": "http://taurcoin.com" - }, - "marketcap_usd": 0, - "name": "TAUR", - "network": "eth", - "shortcut": "TAUR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TBC": { - "address": "0x627974847450C45b60B3Fe3598f4e6E4cf945B9a", - "links": { - "Github": "https://github.com/THUNDERBOLTCOIN", - "Homepage": "http://thunderboltcoin.es" - }, - "marketcap_usd": 0, - "name": "ThunderBoltCoin", - "network": "eth", - "shortcut": "TBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TBC2": { - "address": "0xFACCD5Fc83c3E4C3c1AC1EF35D15adf06bCF209C", - "links": { - "Github": "https://github.com/erc20club", - "Homepage": "https://www.tbc.erc20.club" - }, - "marketcap_usd": 0, - "name": "TBC2", - "network": "eth", - "shortcut": "TBC2", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TBT": { - "address": "0xAFe60511341a37488de25Bef351952562E31fCc1", - "links": { - "Github": "https://github.com/tbitbot", - "Homepage": "https://tbitbot.com" - }, - "marketcap_usd": 0, - "name": "TBitBot", - "network": "eth", - "shortcut": "TBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TBTC": { - "address": "0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa", - "links": { - "Github": "https://github.com/keep-network", - "Homepage": "https://tbtc.network" - }, - "marketcap_usd": 0, - "name": "TBTC", - "network": "eth", - "shortcut": "TBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TBX": { - "address": "0x3A92bD396aEf82af98EbC0Aa9030D25a23B11C6b", - "links": { - "Homepage": "https://tokenbox.io" - }, - "marketcap_usd": 14975, - "name": "Tokenbox", - "network": "eth", - "shortcut": "TBX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TCA": { - "address": "0xfA0eF5E034CaE1AE752d59bdb8aDcDe37Ed7aB97", - "links": { - "Github": "https://github.com/TcandyChain", - "Homepage": "https://www.tcandy.io" - }, - "marketcap_usd": 0, - "name": "TangguoTao Token", - "network": "eth", - "shortcut": "TCA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TCAD": { - "address": "0x00000100F2A2bd000715001920eB70D229700085", - "links": { - "Github": "https://github.com/trusttoken", - "Homepage": "https://www.trusttoken.com/truecad" - }, - "marketcap_usd": 0, - "name": "TrueCAD", - "network": "eth", - "shortcut": "TCAD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TCH": { - "address": "0x9972A0F24194447E73a7e8b6CD26a52e02DDfAD5", - "links": { - "Homepage": "https://www.thorecash.com" - }, - "marketcap_usd": 5891, - "name": "Thore Cash", - "network": "eth", - "shortcut": "TCH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TCNX": { - "address": "0x28d7F432d24ba6020d1cbD4f28BEDc5a82F24320", - "links": { - "Homepage": "https://www.tercet.network" - }, - "marketcap_usd": 0, - "name": "Tercet Network", - "network": "eth", - "shortcut": "TCNX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TCST": { - "address": "0x9910f4AeD4A7550A4120ad7da8dF8b56E91197Fa", - "links": { - "Homepage": "https://sto.tradecloud.sg/#token-metrics-section" - }, - "marketcap_usd": 0, - "name": "TradeCloud Security Token", - "network": "eth", - "shortcut": "TCST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TCT": { - "address": "0xED82730312babb41367E060911F798002FFA445F", - "links": { - "Github": "https://github.com/TheCryptoTech", - "Homepage": "https://coin.thecryptotech.net" - }, - "marketcap_usd": 0, - "name": "The Crypto Tech", - "network": "eth", - "shortcut": "TCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TDH": { - "address": "0x2a1dbabe65c595B0022e75208C34014139d5d357", - "links": { - "Homepage": "https://trustedhealth.io" - }, - "marketcap_usd": 0, - "name": "TrustedHealth", - "network": "eth", - "shortcut": "TDH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TDX": { - "address": "0x317eb4ad9cfaC6232f0046831322E895507bcBeb", - "links": { - "Homepage": "https://tidex.com/" - }, - "marketcap_usd": 0, - "name": "Tidex Token", - "network": "eth", - "shortcut": "TDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TEAM": { - "address": "0x1c79ab32C66aCAa1e9E81952B8AAa581B43e54E7", - "links": { - "Homepage": "https://tokenstars.com/team" - }, - "marketcap_usd": 0, - "name": "TEAM (TokenStars)", - "network": "eth", - "shortcut": "TEAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TECH": { - "address": "0xA1BA7186eeC1Be5114b0Cf49b95B23aDC4131B51", - "links": { - "Homepage": "https://futuretechinsider.com" - }, - "marketcap_usd": 0, - "name": "FTI NEWS Token", - "network": "eth", - "shortcut": "TECH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TEN": { - "address": "0xDD16eC0F66E54d453e6756713E533355989040E4", - "links": { - "Homepage": "https://www.tokenomy.com" - }, - "marketcap_usd": 5058206, - "name": "Tokenomy", - "network": "eth", - "shortcut": "TEN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TENX": { - "address": "0x515bA0a2E286AF10115284F151cF398688A69170", - "links": { - "Github": "https://github.com/tenx-tech/tenx-token", - "Homepage": "https://tenx.tech/en/" - }, - "marketcap_usd": 0, - "name": "TENX", - "network": "eth", - "shortcut": "TENX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TFD": { - "address": "0xE5F166c0D8872B68790061317BB6CcA04582C912", - "links": { - "Homepage": "https://ico.tefoodint.com" - }, - "marketcap_usd": 0, - "name": "TE-FOOD", - "network": "eth", - "shortcut": "TFD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TFL": { - "address": "0xa7f976C360ebBeD4465c2855684D1AAE5271eFa9", - "links": { - "Github": "https://github.com/TrueFlip", - "Homepage": "https://trueflip.io" - }, - "marketcap_usd": 0, - "name": "TrueFlip", - "network": "eth", - "shortcut": "TFL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TGAME": { - "address": "0xF8e06E4e4A80287FDCa5b02dcCecAa9D0954840F", - "links": { - "Homepage": "https://ico.truegame.io" - }, - "marketcap_usd": 0, - "name": "Truegame", - "network": "eth", - "shortcut": "TGAME", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TGBP": { - "address": "0x00000000441378008EA67F4284A57932B1c000a5", - "links": { - "Github": "https://github.com/trusttoken", - "Homepage": "https://www.trusttoken.com/truegbp" - }, - "marketcap_usd": 0, - "name": "TrueGBP", - "network": "eth", - "shortcut": "TGBP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:THKD": { - "address": "0x0000852600CEB001E08e00bC008be620d60031F2", - "links": { - "Github": "https://github.com/trusttoken", - "Homepage": "https://www.trusttoken.com/truehkd" - }, - "marketcap_usd": 0, - "name": "TrueHKD", - "network": "eth", - "shortcut": "THKD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:THR": { - "address": "0x1Cb3209D45B2a60B7fBCA1cCDBF87f674237A4aa", - "links": { - "Homepage": "https://www.thorecoin.com" - }, - "marketcap_usd": 0, - "name": "ThoreCoin", - "network": "eth", - "shortcut": "THR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:THRT": { - "address": "0x4f27053F32edA8Af84956437Bc00e5fFa7003287", - "links": { - "Homepage": "https://ico.thrivelabs.io" - }, - "marketcap_usd": 0, - "name": "Thrive Token", - "network": "eth", - "shortcut": "THRT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:THUG": { - "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", - "links": { - "Github": "https://github.com/THUGCOIN/THUGCoin", - "Homepage": "https://thugcoin.cash" - }, - "marketcap_usd": 0, - "name": "THUG", - "network": "eth", - "shortcut": "THUG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TIE": { - "address": "0x999967E2Ec8A74B7c8E9dB19E039d920B31d39D0", - "links": { - "Homepage": "https://ties.network" - }, - "marketcap_usd": 0, - "name": "Ties.DB", - "network": "eth", - "shortcut": "TIE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TIG": { - "address": "0xEee2d00Eb7DEB8Dd6924187f5AA3496B7d06E62A", - "links": { - "Homepage": "https://www.tigereum.io" - }, - "marketcap_usd": 0, - "name": "Tigereum", - "network": "eth", - "shortcut": "TIG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TIK": { - "address": "0x0922F1D808aDc3A4444BEd2F73fAC53a1A2A5859", - "links": { - "Homepage": "https://chronobase.eu/" - }, - "marketcap_usd": 145674, - "name": "ChronoBase", - "network": "eth", - "shortcut": "TIK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TIME": { - "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", - "links": { - "Homepage": "https://chronobank.io" - }, - "marketcap_usd": 0, - "name": "Chronobank", - "network": "eth", - "shortcut": "TIME", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TIO": { - "address": "0x80BC5512561c7f85A3A9508c7df7901b370Fa1DF", - "links": { - "Homepage": "https://trade.io" - }, - "marketcap_usd": 0, - "name": "TIO", - "network": "eth", - "shortcut": "TIO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TIX": { - "address": "0xEa1f346faF023F974Eb5adaf088BbCdf02d761F4", - "links": { - "Homepage": "https://www.blocktix.io" - }, - "marketcap_usd": 0, - "name": "Blocktix", - "network": "eth", - "shortcut": "TIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TKA": { - "address": "0xdaE1Baf249964bc4b6aC98c3122f0e3E785fd279", - "links": { - "Homepage": "https://www.tokia.io" - }, - "marketcap_usd": 0, - "name": "Tokia", - "network": "eth", - "shortcut": "TKA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TKLN": { - "address": "0x0675DAa94725A528b05A3A88635C03EA964BFA7E", - "links": { - "Homepage": "https://taklimakan.io" - }, - "marketcap_usd": 0, - "name": "Taklimakan Network", - "network": "eth", - "shortcut": "TKLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TKN": { - "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", - "links": { - "Homepage": "https://etherscan.io/token/TokenCard" - }, - "marketcap_usd": 2583432, - "name": "TokenCard", - "network": "eth", - "shortcut": "TKN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TKP": { - "address": "0xd31695a1d35E489252CE57b129FD4b1B05E6AcaC", - "links": { - "Github": "https://github.com/Tokpie/tokpie-contract", - "Homepage": "https://tokpie.io/" - }, - "marketcap_usd": 4434791, - "name": "TOKPIE", - "network": "eth", - "shortcut": "TKP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TLN": { - "address": "0x679131F591B4f369acB8cd8c51E68596806c3916", - "links": { - "Github": "https://github.com/trustlines-protocol", - "Homepage": "https://trustlines.network/" - }, - "marketcap_usd": 0, - "name": "Trustlines Network Token", - "network": "eth", - "shortcut": "TLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TLX": { - "address": "0xb3616550aBc8AF79c7A5902DEF9Efa3bC9A95200", - "links": { - "Homepage": "https://telexai.com" - }, - "marketcap_usd": 0, - "name": "Telex", - "network": "eth", - "shortcut": "TLX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TMT": { - "address": "0x3209f98BeBF0149B769ce26D71F7aEA8E435EfEa", - "links": { - "Homepage": "http://traxia.co" - }, - "marketcap_usd": 0, - "name": "TRAXIA", - "network": "eth", - "shortcut": "TMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TNO": { - "address": "0xAD6683b7f3618c44F5CA6040902812Dd890DdE4d", - "links": { - "Github": "https://github.com/TNOSCOINS/TNOS", - "Homepage": "https://tnoscoin.cash" - }, - "marketcap_usd": 0, - "name": "TNOS COIN", - "network": "eth", - "shortcut": "TNO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TNS": { - "address": "0xb0280743b44bF7db4B6bE482b2Ba7b75E5dA096C", - "links": { - "Homepage": "https://transcodium.com" - }, - "marketcap_usd": 28525, - "name": "Transcodium", - "network": "eth", - "shortcut": "TNS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TNT": { - "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", - "links": { - "Github": "https://github.com/tierion", - "Homepage": "https://tierion.com" - }, - "marketcap_usd": 0, - "name": "Tierion Network Token", - "network": "eth", - "shortcut": "TNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TOK": { - "address": "0x9a49f02e128a8E989b443a8f94843C0918BF45E7", - "links": { - "Homepage": "https://www.tokok.com/" - }, - "marketcap_usd": 0, - "name": "TOKOK", - "network": "eth", - "shortcut": "TOK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TOOR": { - "address": "0x8eb965ee9cCFBCE76c0a06264492c0afEfc2826d", - "links": { - "Github": "https://github.com/toorister/toorcoin", - "Homepage": "https://www.toorcoin.com" - }, - "marketcap_usd": 0, - "name": "ToorCoin", - "network": "eth", - "shortcut": "TOOR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TRAC": { - "address": "0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F", - "links": { - "Homepage": "https://origintrail.io" - }, - "marketcap_usd": 134439035, - "name": "OriginTrail", - "network": "eth", - "shortcut": "TRAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TRAK": { - "address": "0x12759512D326303B45f1ceC8F7B6fd96F387778E", - "links": { - "Homepage": "http://www.trakinvest.com" - }, - "marketcap_usd": 0, - "name": "TrakInvest", - "network": "eth", - "shortcut": "TRAK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TRCN": { - "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", - "links": { - "Homepage": "http://www.therealcoinz.com" - }, - "marketcap_usd": 0, - "name": "The Real Coin", - "network": "eth", - "shortcut": "TRCN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TRCT": { - "address": "0x30ceCB5461A449A90081F5a5F55db4e048397BAB", - "links": { - "Homepage": "http://www.tracto.org" - }, - "marketcap_usd": 0, - "name": "Tracto", - "network": "eth", - "shortcut": "TRCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TRDT": { - "address": "0x33f90Dee07c6E8B9682dD20F73E6C358B2ED0f03", - "links": { - "Homepage": "https://www.tridentgroup.io" - }, - "marketcap_usd": 0, - "name": "Trident Group", - "network": "eth", - "shortcut": "TRDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TRST": { - "address": "0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B", - "links": { - "Github": "https://github.com/WeTrustPlatform", - "Homepage": "https://www.wetrust.io" - }, - "marketcap_usd": 184461, - "name": "WeTrust", - "network": "eth", - "shortcut": "TRST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TRUCCO": { - "address": "0xf10E3E8F6B02B594b7C95fca59DC7E5ce7364df5", - "links": { - "Homepage": "https://trucco.com" - }, - "marketcap_usd": 0, - "name": "Truco Token", - "network": "eth", - "shortcut": "TRUCCO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TSW": { - "address": "0x6B87999bE87358065bBdE41e8a0fe0B7b1cd2514", - "links": { - "Homepage": "https://www.teslawatt.com" - }, - "marketcap_usd": 0, - "name": "TeslaWatt", - "network": "eth", - "shortcut": "TSW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TTA": { - "address": "0xaaB606817809841E8b1168be8779Eeaf6744Ef64", - "links": { - "Github": "http://github.com/TendTechnologies", - "Homepage": "https://www.tend.swiss" - }, - "marketcap_usd": 0, - "name": "Tend Token", - "network": "eth", - "shortcut": "TTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TTC": { - "address": "0x9389434852b94bbaD4c8AfEd5B7BDBc5Ff0c2275", - "links": { - "Homepage": "http://www.ttc.eco" - }, - "marketcap_usd": 0, - "name": "TTC Protocol", - "network": "eth", - "shortcut": "TTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TTU": { - "address": "0x9CDa8A60dd5AfA156c95Bd974428d91a0812e054", - "links": { - "Homepage": "https://tatatutoken.io" - }, - "marketcap_usd": 0, - "name": "TaTaTu", - "network": "eth", - "shortcut": "TTU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TTV": { - "address": "0xa838be6E4b760E6061D4732D6B9F11Bf578f9A76", - "links": { - "Github": "https://github.com/tvtwocom", - "Homepage": "https://tv-two.com" - }, - "marketcap_usd": 0, - "name": "TV-TWO: Token for Television", - "network": "eth", - "shortcut": "TTV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TUSD": { - "address": "0x0000000000085d4780B73119b644AE5ecd22b376", - "links": { - "Github": "https://github.com/trusttoken", - "Homepage": "https://www.trusttoken.com" - }, - "marketcap_usd": 1116979619, - "name": "TrueUSD", - "network": "eth", - "shortcut": "TUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TWN": { - "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", - "links": { - "Homepage": "https://ico.theworldnews.net" - }, - "marketcap_usd": 0, - "name": "The World News", - "network": "eth", - "shortcut": "TWN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TWNKL": { - "address": "0xfbd0d1c77B501796A35D86cF91d65D9778EeE695", - "links": { - "Homepage": "https://www.rainbowcurrency.com/" - }, - "marketcap_usd": 0, - "name": "Twinkle", - "network": "eth", - "shortcut": "TWNKL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:TaaS": { - "address": "0xE7775A6e9Bcf904eb39DA2b68c5efb4F9360e08C", - "links": { - "Homepage": "https://taas.fund" - }, - "marketcap_usd": 0, - "name": "Token-as-a-Service", - "network": "eth", - "shortcut": "TaaS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:Thar": { - "address": "0x96c30D5499EF6eA96A9c221Bc18BC39D29c97F27", - "links": { - "Github": "https://github.com/Thartoken", - "Homepage": "https://thartoken.com" - }, - "marketcap_usd": 0, - "name": "Thar token", - "network": "eth", - "shortcut": "Thar", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UBEX": { - "address": "0x6704B673c70dE9bF74C8fBa4b4bd748F0e2190E1", - "links": { - "Github": "https://github.com/ubex-ai", - "Homepage": "https://www.ubex.com/" - }, - "marketcap_usd": 125184, - "name": "UBEX Token", - "network": "eth", - "shortcut": "UBEX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UBT": { - "address": "0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e", - "links": { - "Homepage": "https://unibright.io" - }, - "marketcap_usd": 22769484, - "name": "Unibright", - "network": "eth", - "shortcut": "UBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UCASH": { - "address": "0x92e52a1A235d9A103D970901066CE910AAceFD37", - "links": { - "Homepage": "https://u.cash" - }, - "marketcap_usd": 0, - "name": "U.CASH", - "network": "eth", - "shortcut": "UCASH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UCBI": { - "address": "0x2adba23Cf1252dE095aCEd801e758b369EC10426", - "links": { - "Github": "https://github.com/UCBI-Blockchain-Data-Banking/UCBI-Banking", - "Homepage": "https://ucbibanking.com" - }, - "marketcap_usd": 0, - "name": "UCBI Banking", - "network": "eth", - "shortcut": "UCBI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UCN": { - "address": "0xAAf37055188Feee4869dE63464937e683d61b2a1", - "links": { - "Homepage": "https://uchain.world" - }, - "marketcap_usd": 0, - "name": "UChain", - "network": "eth", - "shortcut": "UCN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UFR": { - "address": "0xEA097A2b1dB00627B2Fa17460Ad260c016016977", - "links": { - "Homepage": "https://www.upfiring.com" - }, - "marketcap_usd": 415184, - "name": "Upfiring", - "network": "eth", - "shortcut": "UFR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UKG": { - "address": "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B", - "links": { - "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", - "Homepage": "https://unikoingold.com" - }, - "marketcap_usd": 0, - "name": "UnikoinGold", - "network": "eth", - "shortcut": "UKG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UMB": { - "address": "0x6fC13EACE26590B80cCCAB1ba5d51890577D83B2", - "links": { - "Github": "https://github.com/umbrella-network", - "Homepage": "https://umb.network/" - }, - "marketcap_usd": 1566544, - "name": "Umbrella", - "network": "eth", - "shortcut": "UMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UNI": { - "address": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", - "links": { - "Homepage": "https://uniswap.org/" - }, - "marketcap_usd": 4976163328, - "name": "Uniswap", - "network": "eth", - "shortcut": "UNI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UP": { - "address": "0x6Ba460AB75Cd2c56343b3517ffeBA60748654D26", - "links": { - "Homepage": "https://uptoken.org" - }, - "marketcap_usd": 46974, - "name": "UpToken", - "network": "eth", - "shortcut": "UP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UPP": { - "address": "0xC86D054809623432210c107af2e3F619DcFbf652", - "links": { - "Homepage": "https://sentinelprotocol.io" - }, - "marketcap_usd": 34499041, - "name": "Sentinel Protocol", - "network": "eth", - "shortcut": "UPP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UQC": { - "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", - "links": { - "Homepage": "https://uquidcoin.com" - }, - "marketcap_usd": 0, - "name": "Uquid Coin", - "network": "eth", - "shortcut": "UQC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:URAC": { - "address": "0xff8Be4B22CeDC440591dcB1E641EB2a0dd9d25A5", - "links": { - "Github": "https://github.com/UranusBlockStack/uranus", - "Homepage": "https://www.uranus.io/" - }, - "marketcap_usd": 0, - "name": "URACToken ", - "network": "eth", - "shortcut": "URAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:URB": { - "address": "0x931684139f756C24eC0731E9F74FE50e5548dDeF", - "links": { - "Github": "https://github.com/urbitdata", - "Homepage": "https://urbitdata.io" - }, - "marketcap_usd": 0, - "name": "Urbit Data", - "network": "eth", - "shortcut": "URB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:USD-G": { - "address": "0xfB0aaA0432112779d9AC483D9d5E3961ecE18eec", - "links": { - "Github": "https://github.com/gluwa/Gluwacoin", - "Homepage": "https://www.gluwa.com/gluwacoin" - }, - "marketcap_usd": 0, - "name": "USD Gluwacoin", - "network": "eth", - "shortcut": "USD-G", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:USDC": { - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "links": { - "Github": "https://github.com/centrehq/centre-tokens", - "Homepage": "https://www.centre.io" - }, - "marketcap_usd": 42518789234, - "name": "USD//Coin", - "network": "eth", - "shortcut": "USDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:USDP": { - "address": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", - "links": { - "Github": "https://github.com/paxosglobal", - "Homepage": "https://www.paxos.com/standard" - }, - "marketcap_usd": 877457873, - "name": "Paxos Standard (PAX)", - "network": "eth", - "shortcut": "USDP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:USDS": { - "address": "0xA4Bdb11dc0a2bEC88d24A3aa1E6Bb17201112eBe", - "links": { - "Homepage": "https://stably.io" - }, - "marketcap_usd": 462366, - "name": "StableUSD", - "network": "eth", - "shortcut": "USDS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:USDT": { - "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "links": { - "Homepage": "https://tether.to" - }, - "marketcap_usd": 70941600691, - "name": "USD Tether (erc20)", - "network": "eth", - "shortcut": "USDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:USDx": { - "address": "0xeb269732ab75A6fD61Ea60b06fE994cD32a83549", - "links": { - "Github": "https://github.com/dforcenetwork", - "Homepage": "https://dforce.network" - }, - "marketcap_usd": 0, - "name": "dForce Stablecoin", - "network": "eth", - "shortcut": "USDx", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UTK": { - "address": "0xdc9Ac3C20D1ed0B540dF9b1feDC10039Df13F99c", - "links": { - "Github": "https://github.com/utrustdev/", - "Homepage": "https://utrust.com" - }, - "marketcap_usd": 58070830, - "name": "Utrust", - "network": "eth", - "shortcut": "UTK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UTNP": { - "address": "0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7", - "links": { - "Github": "https://github.com/UniversaBlockchain/universa", - "Homepage": "https://www.universa.io" - }, - "marketcap_usd": 0, - "name": "Universa", - "network": "eth", - "shortcut": "UTNP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UTT": { - "address": "0x16f812Be7FfF02cAF662B85d5d58a5da6572D4Df", - "links": { - "Homepage": "https://uttoken.io" - }, - "marketcap_usd": 0, - "name": "United Traders Token", - "network": "eth", - "shortcut": "UTT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:UUU": { - "address": "0x3543638eD4a9006E4840B105944271Bcea15605D", - "links": { - "Homepage": "https://u.network/" - }, - "marketcap_usd": 268098, - "name": "U Networks", - "network": "eth", - "shortcut": "UUU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VALOR": { - "address": "0x297E4e5e59Ad72B1B0A2fd446929e76117be0E0a", - "links": { - "Github": "https://github.com/smartvalor/ValorToken", - "Homepage": "https://smartvalor.com" - }, - "marketcap_usd": 4484748, - "name": "ValorToken", - "network": "eth", - "shortcut": "VALOR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VBX": { - "address": "0x6DCcF9C0aB71dAc26b7F7886E43a2B433806c590", - "links": { - "Github": "https://github.com/vibrantworkapp", - "Homepage": "http://www.vibrantworkapp.com" - }, - "marketcap_usd": 0, - "name": "vibrant", - "network": "eth", - "shortcut": "VBX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VDG": { - "address": "0x57C75ECCc8557136D32619a191fBCDc88560d711", - "links": { - "Github": "https://github.com/VeriDocGlobal", - "Homepage": "https://www.veridocglobal.com/" - }, - "marketcap_usd": 1861173, - "name": "VeriDocGlobal", - "network": "eth", - "shortcut": "VDG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VDOC": { - "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", - "links": { - "Github": "https://github.com/BlueBikeSolutions", - "Homepage": "https://www.dutyof.care/token-launch/" - }, - "marketcap_usd": 0, - "name": "Duty of Care Token", - "network": "eth", - "shortcut": "VDOC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VEE": { - "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", - "links": { - "Github": "https://github.com/blockv", - "Homepage": "https://blockv.io" - }, - "marketcap_usd": 9193229, - "name": "BLOCKv", - "network": "eth", - "shortcut": "VEE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VEGA": { - "address": "0xcB84d72e61e383767C4DFEb2d8ff7f4FB89abc6e", - "links": { - "Github": "https://github.com/vegaprotocol", - "Homepage": "https://vega.xyz" - }, - "marketcap_usd": 57183218, - "name": "Vega", - "network": "eth", - "shortcut": "VEGA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VEGAN": { - "address": "0xFADe17a07ba3B480aA1714c3724a52D4C57d410E", - "links": { - "Homepage": "https://www.vegancurrency.org" - }, - "marketcap_usd": 0, - "name": "Vegan", - "network": "eth", - "shortcut": "VEGAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VENUS": { - "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", - "links": { - "Homepage": "http://venuscoin.net" - }, - "marketcap_usd": 0, - "name": "VENUS", - "network": "eth", - "shortcut": "VENUS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VERI": { - "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", - "links": { - "Homepage": "https://veritas.veritaseum.com" - }, - "marketcap_usd": 67691562, - "name": "Veritaseum", - "network": "eth", - "shortcut": "VERI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VIB": { - "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", - "links": { - "Homepage": "https://www.viberate.com" - }, - "marketcap_usd": 21389600, - "name": "Viberate", - "network": "eth", - "shortcut": "VIB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VIBE": { - "address": "0xe8Ff5C9c75dEb346acAc493C463C8950Be03Dfba", - "links": { - "Homepage": "https://www.vibehub.io" - }, - "marketcap_usd": 448626, - "name": "VIBE Coin", - "network": "eth", - "shortcut": "VIBE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VIBEX": { - "address": "0x882448f83d90B2bf477Af2eA79327fDEA1335D93", - "links": { - "Github": "https://github.com/amack2u/VibeHub", - "Homepage": "https://vibehub.io/ico/" - }, - "marketcap_usd": 0, - "name": "VIBEX Exchange Token", - "network": "eth", - "shortcut": "VIBEX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VID": { - "address": "0x2C9023bBc572ff8dc1228c7858A280046Ea8C9E5", - "links": { - "Github": "https://github.com/videocoin", - "Homepage": "https://www.videocoin.io" - }, - "marketcap_usd": 4612359, - "name": "VideoCoin", - "network": "eth", - "shortcut": "VID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VIDT": { - "address": "0x445f51299Ef3307dBD75036dd896565F5B4BF7A5", - "links": { - "Github": "https://github.com/V-ID/V-ID-Token", - "Homepage": "https://www.v-id.org" - }, - "marketcap_usd": 0, - "name": "V-ID Token", - "network": "eth", - "shortcut": "VIDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VIEW": { - "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", - "links": { - "Github": "https://github.com/Viewly/", - "Homepage": "https://view.ly/" - }, - "marketcap_usd": 0, - "name": "Viewly", - "network": "eth", - "shortcut": "VIEW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VIKKY": { - "address": "0xd2946be786F35c3Cc402C29b323647aBda799071", - "links": { - "Homepage": "https://ico.vikky.io" - }, - "marketcap_usd": 60643, - "name": "VikkyToken", - "network": "eth", - "shortcut": "VIKKY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VIT": { - "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", - "links": { - "Github": "https://github.com/ViceIndustryToken", - "Homepage": "https://vicetoken.com/" - }, - "marketcap_usd": 0, - "name": "Vice Industry Token", - "network": "eth", - "shortcut": "VIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VITE": { - "address": "0x1b793E49237758dBD8b752AFC9Eb4b329d5Da016", - "links": { - "Homepage": "https://www.vite.org" - }, - "marketcap_usd": 0, - "name": "Vite", - "network": "eth", - "shortcut": "VITE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VIU": { - "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", - "links": { - "Github": "https://github.com/viuly", - "Homepage": "https://viuly.io" - }, - "marketcap_usd": 0, - "name": "Viuly", - "network": "eth", - "shortcut": "VIU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VLD": { - "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", - "links": { - "Github": "https://github.com/vetri-global/", - "Homepage": "https://vetri.global/" - }, - "marketcap_usd": 0, - "name": "VETRI", - "network": "eth", - "shortcut": "VLD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VMC": { - "address": "0xd811250b7fE83150cBB3d70a892fCE6189fB3e08", - "links": { - "Homepage": "https://vmccoin.com/" - }, - "marketcap_usd": 0, - "name": "Virtual Mind Chain", - "network": "eth", - "shortcut": "VMC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VN": { - "address": "0x00eA6f91B00E080e816f1bB2faD71b0fe1528983", - "links": { - "Homepage": "http://viroboss22.co" - }, - "marketcap_usd": 0, - "name": "VCOIN", - "network": "eth", - "shortcut": "VN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VNTY": { - "address": "0xC650f5514AE1A3a27930922145ce49E8A91b91AB", - "links": { - "Github": "https://github.com/venoty", - "Homepage": "https://venoty.com" - }, - "marketcap_usd": 0, - "name": "VENOTY", - "network": "eth", - "shortcut": "VNTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VNXLU": { - "address": "0x00fC270C9cc13e878Ab5363D00354bebF6f05C15", - "links": { - "Homepage": "https://vnx.io/" - }, - "marketcap_usd": 0, - "name": "VNX Exchange", - "network": "eth", - "shortcut": "VNXLU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VOC": { - "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", - "links": { - "Github": "https://github.com/vormacoin", - "Homepage": "https://vormacoin.io/" - }, - "marketcap_usd": 0, - "name": "VORMACOIN", - "network": "eth", - "shortcut": "VOC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VOISE": { - "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", - "links": { - "Homepage": "https://voise.it" - }, - "marketcap_usd": 0, - "name": "Voise", - "network": "eth", - "shortcut": "VOISE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VR": { - "address": "0x7d5121505149065b562C789A0145eD750e6E8cdD", - "links": { - "Homepage": "https://victoriavr.com/" - }, - "marketcap_usd": 11153234, - "name": "Victoria VR", - "network": "eth", - "shortcut": "VR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VRE": { - "address": "0xF722B01910F93B84EDa9CA128b9F05821A41EAe1", - "links": { - "Homepage": "https://www.vrenelium.com" - }, - "marketcap_usd": 0, - "name": "Vrenelium", - "network": "eth", - "shortcut": "VRE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VRO": { - "address": "0x10BC518c32fbAE5e38Ecb50A612160571bD81e44", - "links": { - "Homepage": "https://veraone.io/" - }, - "marketcap_usd": 0, - "name": "VeraOne", - "network": "eth", - "shortcut": "VRO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VSF": { - "address": "0xBA3a79D758f19eFe588247388754b8e4d6EddA81", - "links": { - "Github": "https://github.com/VeriSafe", - "Homepage": "https://verisafe.io/" - }, - "marketcap_usd": 0, - "name": "VeriSafe", - "network": "eth", - "shortcut": "VSF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VSL": { - "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", - "links": { - "Homepage": "https://www.vdice.io" - }, - "marketcap_usd": 0, - "name": "Vdice", - "network": "eth", - "shortcut": "VSL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VUU": { - "address": "0x4b96bf1feF93A216914fc843D81207A027ce52b3", - "links": { - "Github": "https://github.com/Vuulr", - "Homepage": "https://www.vuulr.com/" - }, - "marketcap_usd": 0, - "name": "Vuulr Token", - "network": "eth", - "shortcut": "VUU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:VZT": { - "address": "0x9720b467a710382A232a32F540bDCed7d662a10B", - "links": { - "Homepage": "https://vezt.co" - }, - "marketcap_usd": 0, - "name": "Vezt", - "network": "eth", - "shortcut": "VZT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WAB": { - "address": "0x4BBbC57aF270138Ef2FF2C50DbfAD684e9E0e604", - "links": { - "Homepage": "https://wab.network" - }, - "marketcap_usd": 276519, - "name": "WABnetwork", - "network": "eth", - "shortcut": "WAB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WABI": { - "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", - "links": { - "Homepage": "https://taelpay.com" - }, - "marketcap_usd": 13590697, - "name": "Tael", - "network": "eth", - "shortcut": "WABI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WAK": { - "address": "0x9f6513ED2b0DE89218E97DB4A5115ba04Be449f1", - "links": { - "Github": "https://github.com/WakCoin", - "Homepage": "https://wakcoin.com" - }, - "marketcap_usd": 0, - "name": "Wak Coin", - "network": "eth", - "shortcut": "WAK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WATT": { - "address": "0x829A4cA1303383F1082B6B1fB937116e4b3b5605", - "links": { - "Github": "https://github.com/workchainio", - "Homepage": "https://workchain.io/" - }, - "marketcap_usd": 0, - "name": "WorkChain App Token", - "network": "eth", - "shortcut": "WATT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WAX": { - "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", - "links": { - "Github": "https://github.com/waxio", - "Homepage": "https://wax.io" - }, - "marketcap_usd": 0, - "name": "WAX", - "network": "eth", - "shortcut": "WAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WAY": { - "address": "0x217f96737b39f9b9211767cb6aeF5DbAe2Fe9402", - "links": { - "Github": "https://github.com/waybazaar", - "Homepage": "https://waybazaar.co" - }, - "marketcap_usd": 0, - "name": "Bazaar Gift Token", - "network": "eth", - "shortcut": "WAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WBA": { - "address": "0x74951B677de32D596EE851A233336926e6A2cd09", - "links": { - "Homepage": "http://webetcrypto.io/wbc" - }, - "marketcap_usd": 0, - "name": "WeBetCrypto", - "network": "eth", - "shortcut": "WBA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WBTC": { - "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "links": { - "Github": "https://github.com/WrappedBTC", - "Homepage": "https://wbtc.network" - }, - "marketcap_usd": 3841396768, - "name": "Wrapped Bitcoin", - "network": "eth", - "shortcut": "WBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WBX": { - "address": "0xbB97e381F1d1e94ffa2A5844F6875e6146981009", - "links": { - "Github": "https://github.com/wibxcoin/Contracts", - "Homepage": "https://www.wibx.io" - }, - "marketcap_usd": 0, - "name": "WiBX Utility Token", - "network": "eth", - "shortcut": "WBX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WCN": { - "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", - "links": { - "Github": "https://github.com/WorldCoinNetwork", - "Homepage": "https://worldcoin.cash/" - }, - "marketcap_usd": 0, - "name": "WorldCoinNetwork", - "network": "eth", - "shortcut": "WCN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WCT": { - "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", - "links": { - "Homepage": "https://wepower.network" - }, - "marketcap_usd": 0, - "name": "WePower", - "network": "eth", - "shortcut": "WCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WDOGE": { - "address": "0x8aa9381b2544b48c26f3b850F6e07E2c5161EB3e", - "links": { - "Github": "https://github.com/WrappedBTC/bitcoin-token-smart-contracts/blob/master/ethereumV2/contracts/token/WDOGE.sol", - "Homepage": "https://wdoge.tech/" - }, - "marketcap_usd": 0, - "name": "Wrapped DOGE", - "network": "eth", - "shortcut": "WDOGE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WEB": { - "address": "0x840fe75ABfaDc0F2d54037829571B2782e919ce4", - "links": { - "Homepage": "https://webcoin.today" - }, - "marketcap_usd": 0, - "name": "Webcoin", - "network": "eth", - "shortcut": "WEB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WETH": { - "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "links": { - "Homepage": "https://weth.io" - }, - "marketcap_usd": 0, - "name": "WETH", - "network": "eth", - "shortcut": "WETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WHEN": { - "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", - "links": { - "Github": "https://github.com/WhenHub", - "Homepage": "https://interface.whenhub.com" - }, - "marketcap_usd": 0, - "name": "WHEN Token", - "network": "eth", - "shortcut": "WHEN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WIB": { - "address": "0x3F17Dd476faF0a4855572F0B6ed5115D9bBA22AD", - "links": { - "Github": "https://github.com/wibsonorg", - "Homepage": "https://wibson.org" - }, - "marketcap_usd": 0, - "name": "Wibson Token", - "network": "eth", - "shortcut": "WIB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WILC": { - "address": "0xC98a910eDE52E7d5308525845F19e17470DbCCF7", - "links": { - "Homepage": "https://ilcoincrypto.com/" - }, - "marketcap_usd": 0, - "name": "Wrapped ILCOIN", - "network": "eth", - "shortcut": "WILC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WILD": { - "address": "0xD3C00772B24D997A812249ca637a921e81357701", - "links": { - "Github": "https://github.com/WildCryptoICO/Wild-Crypto-Token", - "Homepage": "http://www.wildcrypto.com" - }, - "marketcap_usd": 0, - "name": "WILD Token", - "network": "eth", - "shortcut": "WILD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WINGS": { - "address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", - "links": { - "Homepage": "https://wings.ai" - }, - "marketcap_usd": 176076, - "name": "WINGS", - "network": "eth", - "shortcut": "WINGS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WISH": { - "address": "0x1b22C32cD936cB97C28C5690a0695a82Abf688e6", - "links": { - "Homepage": "https://mywish.io" - }, - "marketcap_usd": 0, - "name": "MyWish", - "network": "eth", - "shortcut": "WISH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WLKR": { - "address": "0xD64DeEA5F24934E3A1aa752912aEe8ffD8300C3F", - "links": { - "Github": "https://github.com/wlkrfinancial", - "Homepage": "https://wlkr.finance/ " - }, - "marketcap_usd": 0, - "name": "WLKR Innovation Index", - "network": "eth", - "shortcut": "WLKR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WLKRR": { - "address": "0xC90206AB21bdbF5e92AfF4E6B5F097B65b0eCc06", - "links": { - "Github": "https://github.com/wlkrfinancial", - "Homepage": "https://wlkr.finance" - }, - "marketcap_usd": 0, - "name": "Walker", - "network": "eth", - "shortcut": "WLKRR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WMA": { - "address": "0x685ED390B16Ac9Df9Ab9707294a42a107cFB62Af", - "links": { - "Homepage": "https://www.weemat.io" - }, - "marketcap_usd": 0, - "name": "weeMarketplaceAccessToken", - "network": "eth", - "shortcut": "WMA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WMK": { - "address": "0xBFbe5332f172d77811bC6c272844f3e54A7B23bB", - "links": { - "Github": "https://github.com/WemarkSource", - "Homepage": "https://www.wemark.com" - }, - "marketcap_usd": 0, - "name": "WemarkToken", - "network": "eth", - "shortcut": "WMK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WOC": { - "address": "0xF9D9702D031407F425a4412682fDc56b07d05262", - "links": { - "Github": "https://github.com/paneedesign/wallofchain", - "Homepage": "https://wallofchain.com" - }, - "marketcap_usd": 0, - "name": "WallOfChain", - "network": "eth", - "shortcut": "WOC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WOUSD": { - "address": "0xD2af830E8CBdFed6CC11Bab697bB25496ed6FA62", - "links": { - "Github": "https://github.com/OriginProtocol/origin-dollar", - "Homepage": "https://www.ousd.com" - }, - "marketcap_usd": 0, - "name": "Wrapped OUSD", - "network": "eth", - "shortcut": "WOUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WPC": { - "address": "0x62087245087125d3DB5B9A3D713d78E7BBc31e54", - "links": { - "Homepage": "http://www.worldpeacecoin.io" - }, - "marketcap_usd": 0, - "name": "WorldPeaceCoin", - "network": "eth", - "shortcut": "WPC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WPR": { - "address": "0x4CF488387F035FF08c371515562CBa712f9015d4", - "links": { - "Homepage": "https://wepower.network" - }, - "marketcap_usd": 166674, - "name": "WePower Token", - "network": "eth", - "shortcut": "WPR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WRC": { - "address": "0x72aDadb447784dd7AB1F472467750fC485e4cb2d", - "links": { - "Homepage": "https://worldcore.eu" - }, - "marketcap_usd": 59023, - "name": "Worldcore", - "network": "eth", - "shortcut": "WRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WRK": { - "address": "0x71e8d74fF1C923E369D0e70DFb09866629C4DD35", - "links": { - "Github": "https://github.com/TMWorkCoin", - "Homepage": "https://workcoin.net/" - }, - "marketcap_usd": 0, - "name": "WorkCoin", - "network": "eth", - "shortcut": "WRK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WSS": { - "address": "0x1d9a3CeF66B01D44003b9db0e00ec3fd44746988", - "links": { - "Github": "https://github.com/wealthsharingsystems", - "Homepage": "https://res.cloudinary.com/cloudimgstorage/image/upload/v1561127947/WSS-LOGO.png" - }, - "marketcap_usd": 0, - "name": "ETHWSS Coin", - "network": "eth", - "shortcut": "WSS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WWX": { - "address": "0x8A91eEcd3F6b6B7833fD6961E7f654C3d016a068", - "links": { - "Github": "https://github.com/wowoo-exchange/WWX-ERC20", - "Homepage": "https://wowoo.exchange/" - }, - "marketcap_usd": 0, - "name": "Wowoo Exchange Token", - "network": "eth", - "shortcut": "WWX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WYS": { - "address": "0xd8950fDeaa10304B7A7Fd03a2FC66BC39f3c711a", - "links": { - "Github": "https://github.com/wysker", - "Homepage": "https://www.wystoken.org" - }, - "marketcap_usd": 0, - "name": "wystoken", - "network": "eth", - "shortcut": "WYS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:WYV": { - "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", - "links": { - "Github": "https://github.com/ProjectWyvern", - "Homepage": "https://projectwyvern.com" - }, - "marketcap_usd": 0, - "name": "WyvernToken", - "network": "eth", - "shortcut": "WYV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:X8X": { - "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", - "links": { - "Homepage": "https://x8currency.com" - }, - "marketcap_usd": 529029, - "name": "X8X", - "network": "eth", - "shortcut": "X8X", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XAMP": { - "address": "0xf911a7ec46a2c6fa49193212fe4a2a9B95851c27", - "links": { - "Homepage": "https://www.antiample.org/" - }, - "marketcap_usd": 0, - "name": "Antiample", - "network": "eth", - "shortcut": "XAMP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XAUR": { - "address": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81", - "links": { - "Homepage": "http://www.xaurum.org" - }, - "marketcap_usd": 1880493, - "name": "Xaurum", - "network": "eth", - "shortcut": "XAUR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XBL": { - "address": "0x49AeC0752E68D0282Db544C677f6BA407BA17ED7", - "links": { - "Homepage": "https://billionairetoken.com" - }, - "marketcap_usd": 0, - "name": "Billionaire Token", - "network": "eth", - "shortcut": "XBL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XBP": { - "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", - "links": { - "Github": "https://github.com/blitzpredict", - "Homepage": "https://www.blitzpredict.io" - }, - "marketcap_usd": 58228, - "name": "BlitzPredict", - "network": "eth", - "shortcut": "XBP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XCC": { - "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", - "links": { - "Github": "https://github.com/coincrowd-it", - "Homepage": "https://www.coincrowd.it" - }, - "marketcap_usd": 0, - "name": "CoinCrowd", - "network": "eth", - "shortcut": "XCC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XCHF": { - "address": "0xB4272071eCAdd69d933AdcD19cA99fe80664fc08", - "links": { - "Homepage": "https://www.swisscryptotokens.ch/" - }, - "marketcap_usd": 3302072, - "name": "CryptoFranc", - "network": "eth", - "shortcut": "XCHF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XCL": { - "address": "0x0843971B4ac6e842a518AA184e0271d88B5cB74F", - "links": { - "Github": "https://github.com/classieprojects", - "Homepage": "https://www.classify.global" - }, - "marketcap_usd": 0, - "name": "CLASSIE", - "network": "eth", - "shortcut": "XCL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XCLR": { - "address": "0x1E26b3D07E57F453caE30F7DDd2f945f5bF3EF33", - "links": { - "Homepage": "https://clearcoin.co" - }, - "marketcap_usd": 0, - "name": "ClearCoin", - "network": "eth", - "shortcut": "XCLR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XDATA": { - "address": "0x0Cf0Ee63788A0849fE5297F3407f701E122cC023", - "links": { - "Github": "https://github.com/streamr-dev", - "Homepage": "https://www.streamr.com" - }, - "marketcap_usd": 0, - "name": "Streamr DATAcoin", - "network": "eth", - "shortcut": "XDATA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XDCE": { - "address": "0x41AB1b6fcbB2fA9DCEd81aCbdeC13Ea6315F2Bf2", - "links": { - "Homepage": "https://www.xinfin.io" - }, - "marketcap_usd": 0, - "name": "XinFin Network", - "network": "eth", - "shortcut": "XDCE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XES": { - "address": "0xA017ac5faC5941f95010b12570B812C974469c2C", - "links": { - "Homepage": "https://proxeus.com" - }, - "marketcap_usd": 0, - "name": "Proxeus", - "network": "eth", - "shortcut": "XES", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XET": { - "address": "0x054C64741dBafDC19784505494029823D89c3b13", - "links": { - "Homepage": "https://www.atom-solutions.jp/en/xetchange.php" - }, - "marketcap_usd": 0, - "name": "ETERNAL TOKEN", - "network": "eth", - "shortcut": "XET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XFS": { - "address": "0x16aF5bfb4Ae7E475b9aDC3Bf5Cb2f1E6a50d7940", - "links": { - "Homepage": "http://fanship.world/" - }, - "marketcap_usd": 0, - "name": "Fanship", - "network": "eth", - "shortcut": "XFS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XGG": { - "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", - "links": { - "Github": "https://github.com/GoingGems", - "Homepage": "https://www.going-gems.com" - }, - "marketcap_usd": 0, - "name": "Going Gems", - "network": "eth", - "shortcut": "XGG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XGM": { - "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", - "links": { - "Homepage": "https://www.xaurum.org/gamma" - }, - "marketcap_usd": 0, - "name": "XGM", - "network": "eth", - "shortcut": "XGM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XGT": { - "address": "0x30f4A3e0aB7a76733D8b60b89DD93c3D0b4c9E2f", - "links": { - "Github": "https://github.com/CryptogeneProject/CryptogeneToken", - "Homepage": "https://cryptogene.co" - }, - "marketcap_usd": 0, - "name": "XGT", - "network": "eth", - "shortcut": "XGT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XHT": { - "address": "0xD3c625F54dec647DB8780dBBe0E880eF21BA4329", - "links": { - "Github": "https://github.com/bitholla", - "Homepage": "https://hollaex.com" - }, - "marketcap_usd": 0, - "name": "HollaEx", - "network": "eth", - "shortcut": "XHT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XID": { - "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", - "links": { - "Homepage": "https://sphereidentity.com" - }, - "marketcap_usd": 0, - "name": "Sphere Identity", - "network": "eth", - "shortcut": "XID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XIO": { - "address": "0x0f7F961648aE6Db43C75663aC7E5414Eb79b5704", - "links": { - "Homepage": "https://xio.network/" - }, - "marketcap_usd": 244530, - "name": "XIO Network", - "network": "eth", - "shortcut": "XIO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XLX": { - "address": "0x1d086b868d78040635CB8600bA733f12DB48cB42", - "links": { - "Github": "https://github.com/XLXPAY", - "Homepage": "https://xlxpay.com" - }, - "marketcap_usd": 0, - "name": "XLXPay", - "network": "eth", - "shortcut": "XLX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XMCT": { - "address": "0x44449Fa4d607F807d1eD4a69ad942971728391C8", - "links": { - "Homepage": "http://xmedchain.com" - }, - "marketcap_usd": 0, - "name": "XMED Chain", - "network": "eth", - "shortcut": "XMCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XMX": { - "address": "0x0f8c45B896784A1E408526B9300519ef8660209c", - "links": { - "Github": "https://github.com/XMaxPlatform", - "Homepage": "https://www.xmx.com" - }, - "marketcap_usd": 304015, - "name": "XMax", - "network": "eth", - "shortcut": "XMX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XNK": { - "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", - "links": { - "Github": "https://github.com/InkProtocol/", - "Homepage": "https://paywithink.com" - }, - "marketcap_usd": 0, - "name": "Ink Protocol", - "network": "eth", - "shortcut": "XNK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XNN": { - "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", - "links": { - "Homepage": "https://xenon.network" - }, - "marketcap_usd": 0, - "name": "XENON", - "network": "eth", - "shortcut": "XNN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XNT": { - "address": "0x572E6f318056ba0C5d47A422653113843D250691", - "links": { - "Homepage": "https://exante.eu" - }, - "marketcap_usd": 0, - "name": "XNT", - "network": "eth", - "shortcut": "XNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XOV": { - "address": "0x153eD9CC1b792979d2Bde0BBF45CC2A7e436a5F9", - "links": { - "Homepage": "http://www.xov.io" - }, - "marketcap_usd": 4613, - "name": "XOVBank", - "network": "eth", - "shortcut": "XOV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XPA": { - "address": "0x90528aeb3a2B736B780fD1B6C478bB7E1d643170", - "links": { - "Homepage": "https://xpa.io" - }, - "marketcap_usd": 32562, - "name": "XPA", - "network": "eth", - "shortcut": "XPA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XPAT": { - "address": "0xBB1fA4FdEB3459733bF67EbC6f893003fA976a82", - "links": { - "Github": "https://github.com/Bit-Nation/", - "Homepage": "https://bitnation.co" - }, - "marketcap_usd": 0, - "name": "Pangea Arbitration Token", - "network": "eth", - "shortcut": "XPAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XPAY": { - "address": "0xbC7Ed0c8cf986ae62337fc8DF3B02C6EC87310Ed", - "links": { - "Github": "https://github.com/xpayment", - "Homepage": "http://xpayment.de" - }, - "marketcap_usd": 0, - "name": "Xpayment", - "network": "eth", - "shortcut": "XPAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XPR": { - "address": "0xD7EFB00d12C2c13131FD319336Fdf952525dA2af", - "links": { - "Github": "https://github.com/ProtonProtocol", - "Homepage": "https://www.protonchain.com/" - }, - "marketcap_usd": 24851023, - "name": "Proton", - "network": "eth", - "shortcut": "XPR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XPT": { - "address": "0x08Aa0ed0040736dd28d4c8B16Ab453b368248d19", - "links": { - "Homepage": "https://cryptobuyer.io" - }, - "marketcap_usd": 0, - "name": "Cryptobuyer Token", - "network": "eth", - "shortcut": "XPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XRL": { - "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", - "links": { - "Homepage": "https://rialto.ai" - }, - "marketcap_usd": 0, - "name": "XRL", - "network": "eth", - "shortcut": "XRL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XSC": { - "address": "0x0F513fFb4926ff82D7F60A05069047AcA295C413", - "links": { - "Homepage": "http://crowdstart.capital" - }, - "marketcap_usd": 0, - "name": "XSC", - "network": "eth", - "shortcut": "XSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XSGD": { - "address": "0x70e8dE73cE538DA2bEEd35d14187F6959a8ecA96", - "links": { - "Github": "https://github.com/Xfers/StraitsX-tokens", - "Homepage": "https://xfers.com/sg/stablecoin" - }, - "marketcap_usd": 59730862, - "name": "Singapore-Dollar Backed Stablecoin", - "network": "eth", - "shortcut": "XSGD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:XYO": { - "address": "0x55296f69f40Ea6d20E478533C15A6B08B654E758", - "links": { - "Homepage": "https://xyo.network" - }, - "marketcap_usd": 72604094, - "name": "XYO", - "network": "eth", - "shortcut": "XYO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:YAM": { - "address": "0x0e2298E3B3390e3b945a5456fBf59eCc3f55DA16", - "links": { - "Github": "https://github.com/yam-finance/yam-protocol", - "Homepage": "http://yam.finance/" - }, - "marketcap_usd": 0, - "name": "YAM V1", - "network": "eth", - "shortcut": "YAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:YAMv2": { - "address": "0xAba8cAc6866B83Ae4eec97DD07ED254282f6aD8A", - "links": { - "Github": "https://github.com/yam-finance/yam-protocol", - "Homepage": "http://yam.finance/" - }, - "marketcap_usd": 0, - "name": "YAM V2", - "network": "eth", - "shortcut": "YAMv2", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:YEE": { - "address": "0x922105fAd8153F516bCfB829f56DC097a0E1D705", - "links": { - "Homepage": "http://www.yeefoundation.com" - }, - "marketcap_usd": 244413, - "name": "Yee Token", - "network": "eth", - "shortcut": "YEE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:YFI": { - "address": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", - "links": { - "Github": "https://github.com/iearn-finance", - "Homepage": "https://yearn.finance/" - }, - "marketcap_usd": 341339987, - "name": "yearn.finance", - "network": "eth", - "shortcut": "YFI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:YFII": { - "address": "0xa1d0E215a23d7030842FC67cE582a6aFa3CCaB83", - "links": { - "Github": "https://github.com/yfii/vault", - "Homepage": "https://dfi.money/" - }, - "marketcap_usd": 50523406, - "name": "YFII.finance", - "network": "eth", - "shortcut": "YFII", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:YFV": { - "address": "0x45f24BaEef268BB6d63AEe5129015d69702BCDfa", - "links": { - "Github": "https://github.com/yfv-finance/audit", - "Homepage": "https://yfv.finance/" - }, - "marketcap_usd": 0, - "name": "YFValue", - "network": "eth", - "shortcut": "YFV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:YOUC": { - "address": "0x3D371413dd5489F3A04C07c0C2CE369c20986ceb", - "links": { - "Github": "https://github.com/YOUengine", - "Homepage": "https://youengine.io" - }, - "marketcap_usd": 0, - "name": "yOUcash", - "network": "eth", - "shortcut": "YOUC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:YTRO": { - "address": "0x534546C490A4Ed2a9D0c3555447Bb9b4b01bcb9E", - "links": { - "Github": "https://github.com/IamYotro", - "Homepage": "http://yotro.io" - }, - "marketcap_usd": 0, - "name": "Yotro", - "network": "eth", - "shortcut": "YTRO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZAP": { - "address": "0x6781a0F84c7E9e846DCb84A9a5bd49333067b104", - "links": { - "Github": "https://github.com/zapproject", - "Homepage": "https://zap.store" - }, - "marketcap_usd": 842523, - "name": "ZAP", - "network": "eth", - "shortcut": "ZAP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZCN": { - "address": "0xb9EF770B6A5e12E45983C5D80545258aA38F3B78", - "links": { - "Homepage": "https://0chain.net" - }, - "marketcap_usd": 10060329, - "name": "0chain", - "network": "eth", - "shortcut": "ZCN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZCO": { - "address": "0x2008e3057BD734e10AD13c9EAe45Ff132aBc1722", - "links": { - "Homepage": "https://www.zebi.io" - }, - "marketcap_usd": 0, - "name": "Zebi", - "network": "eth", - "shortcut": "ZCO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZCS": { - "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", - "links": { - "Homepage": "https://zsc.io/" - }, - "marketcap_usd": 93153, - "name": "Zeusshield", - "network": "eth", - "shortcut": "ZCS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZDC": { - "address": "0x7A2810d3d859Ed03ede523eB801a3B43B5e8979C", - "links": { - "Homepage": "https://zodcoin.net" - }, - "marketcap_usd": 0, - "name": "Zodcoin", - "network": "eth", - "shortcut": "ZDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZENI": { - "address": "0x2E59D147962E2bB3fBdc52dc18CfBa2653C06Ccc", - "links": { - "Homepage": "https://thesevensofficial.com/" - }, - "marketcap_usd": 0, - "name": "Zeni Token", - "network": "eth", - "shortcut": "ZENI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZERA": { - "address": "0x8188e51Bc678F0070531f0e782718Df0027452De", - "links": { - "Github": "https://github.com/zinvest", - "Homepage": "http://zeraco.in" - }, - "marketcap_usd": 0, - "name": "ZERACOIN", - "network": "eth", - "shortcut": "ZERA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZEUS": { - "address": "0xe7E4279b80D319EDe2889855135A22021baf0907", - "links": { - "Github": "https://github.com/ZEUS-coin", - "Homepage": "https://zeusfundme.com/" - }, - "marketcap_usd": 0, - "name": "ZeusNetwork", - "network": "eth", - "shortcut": "ZEUS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZINC": { - "address": "0x4AaC461C86aBfA71e9d00d9a2cde8d74E4E1aeEa", - "links": { - "Homepage": "https://zinc.work" - }, - "marketcap_usd": 5020, - "name": "ZINC", - "network": "eth", - "shortcut": "ZINC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZIP": { - "address": "0xA9d2927d3a04309E008B6af6E2e282AE2952e7fD", - "links": { - "Homepage": "http://zipper.io" - }, - "marketcap_usd": 0, - "name": "Zipper", - "network": "eth", - "shortcut": "ZIP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZIPT": { - "address": "0xEDD7c94FD7B4971b916d15067Bc454b9E1bAD980", - "links": { - "Homepage": "https://zippie.org" - }, - "marketcap_usd": 0, - "name": "Zippie", - "network": "eth", - "shortcut": "ZIPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZIX": { - "address": "0xf3C092cA8CD6D3d4ca004Dc1d0f1fe8CcAB53599", - "links": { - "Github": "https://github.com/Zeexme", - "Homepage": "https://zeex.me" - }, - "marketcap_usd": 0, - "name": "ZIX", - "network": "eth", - "shortcut": "ZIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZLA": { - "address": "0xfd8971d5E8E1740cE2d0A84095fCA4De729d0c16", - "links": { - "Homepage": "https://zla.io" - }, - "marketcap_usd": 0, - "name": "Zilla", - "network": "eth", - "shortcut": "ZLA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZMAN": { - "address": "0xE25FAAb5821ce70BA4179A70c1d481BA45b9D0c9", - "links": { - "Github": "https://github.com/zmandotcom", - "Homepage": "https://www.zman.com" - }, - "marketcap_usd": 0, - "name": "ZMAN Coin", - "network": "eth", - "shortcut": "ZMAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZMN": { - "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", - "links": { - "Homepage": "https://www.zmine.com" - }, - "marketcap_usd": 0, - "name": "ZMINE", - "network": "eth", - "shortcut": "ZMN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZPR": { - "address": "0xb5b8F5616Fe42d5ceCA3e87F3FddbDd8F496d760", - "links": { - "Homepage": "https://zper.io" - }, - "marketcap_usd": 0, - "name": "ZPER", - "network": "eth", - "shortcut": "ZPR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZRX": { - "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", - "links": { - "Github": "https://github.com/0xProject", - "Homepage": "https://0xproject.com" - }, - "marketcap_usd": 222664444, - "name": "0x Project", - "network": "eth", - "shortcut": "ZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZST": { - "address": "0xe386B139Ed3715Ca4B18Fd52671bDcea1cdFE4b1", - "links": { - "Homepage": "http://zeus.exchange" - }, - "marketcap_usd": 0, - "name": "Zeus Exchange", - "network": "eth", - "shortcut": "ZST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:ZXC": { - "address": "0x83e2BE8d114F9661221384B3a50d24B96a5653F5", - "links": { - "Homepage": "https://0xcert.org" - }, - "marketcap_usd": 0, - "name": "0xcert Protocol Token", - "network": "eth", - "shortcut": "ZXC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:cBAT": { - "address": "0x6C8c6b02E7b2BE14d4fA6022Dfd6d75921D90E4E", - "links": { - "Github": "https://github.com/compound-finance/", - "Homepage": "https://app.compound.finance" - }, - "marketcap_usd": 0, - "name": "Compound Basic Attention Token", - "network": "eth", - "shortcut": "cBAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:cETH": { - "address": "0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5", - "links": { - "Github": "https://github.com/compound-finance/", - "Homepage": "https://app.compound.finance" - }, - "marketcap_usd": 0, - "name": "Compound Ether", - "network": "eth", - "shortcut": "cETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:cREP": { - "address": "0x158079Ee67Fce2f58472A96584A73C7Ab9AC95c1", - "links": { - "Github": "https://github.com/compound-finance/", - "Homepage": "https://app.compound.finance" - }, - "marketcap_usd": 0, - "name": "Compound Augur", - "network": "eth", - "shortcut": "cREP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:cSai": { - "address": "0xF5DCe57282A584D2746FaF1593d3121Fcac444dC", - "links": { - "Github": "https://github.com/compound-finance/", - "Homepage": "https://app.compound.finance" - }, - "marketcap_usd": 0, - "name": "Compound Sai", - "network": "eth", - "shortcut": "cSai", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:cUSDC": { - "address": "0x39AA39c021dfbaE8faC545936693aC917d5E7563", - "links": { - "Github": "https://github.com/compound-finance/", - "Homepage": "https://app.compound.finance" - }, - "marketcap_usd": 0, - "name": "Compound USDCoin", - "network": "eth", - "shortcut": "cUSDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:cV": { - "address": "0xdA6cb58A0D0C01610a29c5A65c303e13e885887C", - "links": { - "Github": "https://github.com/carVertical", - "Homepage": "https://www.carvertical.com" - }, - "marketcap_usd": 0, - "name": "carVertical", - "network": "eth", - "shortcut": "cV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:cWBTC": { - "address": "0xC11b1268C1A384e55C48c2391d8d480264A3A7F4", - "links": { - "Github": "https://github.com/compound-finance/", - "Homepage": "https://compound.finance" - }, - "marketcap_usd": 0, - "name": "Compound Wrapped BTC", - "network": "eth", - "shortcut": "cWBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:cZRX": { - "address": "0xB3319f5D18Bc0D84dD1b4825Dcde5d5f7266d407", - "links": { - "Github": "https://github.com/compound-finance/", - "Homepage": "https://app.compound.finance" - }, - "marketcap_usd": 0, - "name": "Compound 0x", - "network": "eth", - "shortcut": "cZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLBAT2x": { - "address": "0x6F3a5DCc36eEee5bd8B9B5Db3B6431187A8F1E17", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long BAT 2x", - "network": "eth", - "shortcut": "dLBAT2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLBAT3x": { - "address": "0xE7bEd2E5FcA01F13E8230BF9b67963Ad231B81A6", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long BAT 3x", - "network": "eth", - "shortcut": "dLBAT3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLBAT4x": { - "address": "0x8880F71Fe078Aa1C5bBf8A5FF6Fb93E475a9FcE3", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long BAT 4x", - "network": "eth", - "shortcut": "dLBAT4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLKNC2x": { - "address": "0x5C24F19f91F4eA8A3F95cB21EbBeA053446D8632", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC 3x", - "network": "eth", - "shortcut": "dLKNC2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLKNC3x": { - "address": "0x9B70e6AaC469c75f4044C78d416eE3bc1a92ac22", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long KNC 3x", - "network": "eth", - "shortcut": "dLKNC3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLKNC4x": { - "address": "0x7FD75AC96cA1f0aFfA154fbC1ae08752D4880E83", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long KNC 4x", - "network": "eth", - "shortcut": "dLKNC4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLLINK2x": { - "address": "0x1abb24C9c806eAA71750Fa05C4009bd32e65ebad", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long LINK-DAI 2x v2", - "network": "eth", - "shortcut": "dLLINK2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLLINK3x": { - "address": "0x92bA756169aA6Ff82a3d6ae8e4456A5883182Fa3", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long LINK-DAI 3x v2 ", - "network": "eth", - "shortcut": "dLLINK3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLLINK4x": { - "address": "0x3789A8cAc9D2Eb3Cb87c09CA3422b928c768b362", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long LINK-DAI 4x v2 ", - "network": "eth", - "shortcut": "dLLINK4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLREP2x": { - "address": "0xfD6C76546d93e6120Eb6Eaa266966F51330280C3", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long REP 2x", - "network": "eth", - "shortcut": "dLREP2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLREP3x": { - "address": "0xAF16308808361b203d4eD521cdde6dd2e9B168F0", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long REP 3x", - "network": "eth", - "shortcut": "dLREP3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLREP4x": { - "address": "0x240fe85447A878f51A74A5dC0b644b4A72587839", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long REP 4x", - "network": "eth", - "shortcut": "dLREP4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLWBTC2x": { - "address": "0x9fe6854447bB39dc8b78960882831269f9e78408", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long WBTC 2x", - "network": "eth", - "shortcut": "dLWBTC2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLWBTC3x": { - "address": "0x6d08B86002221Dc2fE4e27170fF90e1B92de3254", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long WBTC 3x", - "network": "eth", - "shortcut": "dLWBTC3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLWBTC4x": { - "address": "0x4F4D523C69a47c5C3ef06c53ec64801f11a884Dd", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long WBTC 4x", - "network": "eth", - "shortcut": "dLWBTC4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLZRX2x": { - "address": "0x1B7395d7D8B289a78920A87ce12160BaCd304C51", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long ZRX 2x", - "network": "eth", - "shortcut": "dLZRX2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLZRX3x": { - "address": "0x2A93cBeC0D134205c352d92d81BB7c4Ec5Ef4d4e", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long ZRX 3x", - "network": "eth", - "shortcut": "dLZRX3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dLZRX4x": { - "address": "0xf85753Fb0Dc0A6c9B4F230eb861708677ac3C00f", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT", - "network": "eth", - "shortcut": "dLZRX4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsBAT": { - "address": "0x2A40251ba733F10835447a8fcf0e0f1CE658F18A", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT", - "network": "eth", - "shortcut": "dsBAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsBAT2x": { - "address": "0x143b591DE9CFf2BaFFB717aC0d109Bc5C01e203e", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT 2x", - "network": "eth", - "shortcut": "dsBAT2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsBAT3x": { - "address": "0x83A0dC31700Af1772B7Ea84Fde7675ca6021b5dA", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT 3x", - "network": "eth", - "shortcut": "dsBAT3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsBAT4x": { - "address": "0xc37a0d81D9610514db1047dE52e9A9093530D2E4", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT 4x", - "network": "eth", - "shortcut": "dsBAT4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsKNC": { - "address": "0x692a2b8bE7E166D6EE93B22A4B8B351e5d444339", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC 2x", - "network": "eth", - "shortcut": "dsKNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsKNC2x": { - "address": "0x30BB2D30B3A3A3F4943f81d460b45D2dac5735DF", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC 2x", - "network": "eth", - "shortcut": "dsKNC2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsKNC3x": { - "address": "0x5E9188280e1e35aE8F899b09C97558d0F195cC14", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC 3x", - "network": "eth", - "shortcut": "dsKNC3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsKNC4x": { - "address": "0x4665A6F4F78bc13ACECB328f5f22f0e4e66D2285", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC 4x", - "network": "eth", - "shortcut": "dsKNC4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsLINK": { - "address": "0xAabFD407F367b632022b4bDe289D9c85F1A024d2", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short LINK-DAI v2", - "network": "eth", - "shortcut": "dsLINK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsLINK2x": { - "address": "0xa901e48DB5a856Da5F27E74a936259808D4C83Af", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short LINK-DAI 2x v2", - "network": "eth", - "shortcut": "dsLINK2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsLINK3x": { - "address": "0xFdB47008B909d53D4E411306d5bA5af77491e871", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short LINK-DAI 3x v2", - "network": "eth", - "shortcut": "dsLINK3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsLINK4x": { - "address": "0x937EFce07594d14f878650d5B637f022952FAe86", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short LINK-DAI 4x v2 ", - "network": "eth", - "shortcut": "dsLINK4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsREP": { - "address": "0xe33297B993c89a55806932138804B0dBB8d7cA1c", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short REP", - "network": "eth", - "shortcut": "dsREP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsREP2x": { - "address": "0x44262A6a07256F0711F815451F2CD1a028A0A755", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short REP 2x", - "network": "eth", - "shortcut": "dsREP2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsREP3x": { - "address": "0xEc3de33967898c47Ec8fBb162B939C7014bD0601", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short REP 3x", - "network": "eth", - "shortcut": "dsREP3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsREP4x": { - "address": "0x66564D3BCec69c7fbeFea185Bd6b9faA57fAEbB9", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short REP 4x", - "network": "eth", - "shortcut": "dsREP4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsWBTC": { - "address": "0x9fC208947d92B1588F7BdE245620439568A8587a", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short WBTC", - "network": "eth", - "shortcut": "dsWBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsWBTC2x": { - "address": "0x671C7886C61A18Fc6E94893A791eaa069D70eBA7", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short WBTC 2x", - "network": "eth", - "shortcut": "dsWBTC2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsWBTC3x": { - "address": "0x849548F5D966017b6b49F6a3A740BBDb78176eDB", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short WBTC 3x", - "network": "eth", - "shortcut": "dsWBTC3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsWBTC4x": { - "address": "0x2fC9F52240F68eF0f178e1B896435D8f64A8DFaa", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short WBTC 4x", - "network": "eth", - "shortcut": "dsWBTC4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsZRX": { - "address": "0xDf0d727742A8A9eAcfC3305C687a0d21826daE7e", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ZRX", - "network": "eth", - "shortcut": "dsZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsZRX2x": { - "address": "0xe18E1789B96Fef7369095de1303c3acdcF03775A", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ZRX 2x", - "network": "eth", - "shortcut": "dsZRX2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsZRX3x": { - "address": "0x48786d243897C581e88b598D4F786Fb7169E08aC", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ZRX 3x", - "network": "eth", - "shortcut": "dsZRX3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:dsZRX4x": { - "address": "0xb70AE77FF9EcF13baea9807618ec7236ACf44bd1", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ZRX 4x", - "network": "eth", - "shortcut": "dsZRX4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:eBCH": { - "address": "0xaFC39788c51f0c1Ff7B55317f3e70299e521Fff6", - "links": { - "Homepage": "https://ebitcoincash.io" - }, - "marketcap_usd": 0, - "name": "eBCH", - "network": "eth", - "shortcut": "eBCH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:eGAS": { - "address": "0xb53A96bcBdD9CF78dfF20BAB6C2be7bAec8f00f8", - "links": { - "Homepage": "http://www.ethgas.stream" - }, - "marketcap_usd": 0, - "name": "ETH GAS", - "network": "eth", - "shortcut": "eGAS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:eUSD": { - "address": "0x523630976eB6147621B5c31c781eBe2Ec2a806E0", - "links": { - "Github": "https://github.com/havven/havven", - "Homepage": "https://havven.io" - }, - "marketcap_usd": 0, - "name": "Ether-Backed USD Nomins (erc20)", - "network": "eth", - "shortcut": "eUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:eosDAC": { - "address": "0x7e9e431a0B8c4D532C745B1043c7FA29a48D4fBa", - "links": { - "Github": "https://github.com/eosdac", - "Homepage": "https://eosdac.io/" - }, - "marketcap_usd": 295500, - "name": "eosDAC", - "network": "eth", - "shortcut": "eosDAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:fstETHDAI": { - "address": "0xCbe83d6323a9eC795D5Cb73b333b23377a823ECC", - "links": { - "Github": "https://github.com/futureswap", - "Homepage": "https://futureswap.com" - }, - "marketcap_usd": 0, - "name": "Futureswap: ETHUSD", - "network": "eth", - "shortcut": "fstETHDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:iBAT": { - "address": "0xA8b65249DE7f85494BC1fe75F525f568aa7dfa39", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx BAT iToken", - "network": "eth", - "shortcut": "iBAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:iBBT": { - "address": "0x691c25C461DaFC47792b6E4d674FBB637bca1C6F", - "links": { - "Github": "https://github.com/Geopay/iBlockchain-Bank-and-Trust-Utility-Token", - "Homepage": "https://ibbt.io" - }, - "marketcap_usd": 0, - "name": "iBBT Utility Token", - "network": "eth", - "shortcut": "iBBT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:iKNC": { - "address": "0x1cC9567EA2eB740824a45F8026cCF8e46973234D", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx KNC iToken", - "network": "eth", - "shortcut": "iKNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:iREP": { - "address": "0xBd56E9477Fc6997609Cf45F84795eFbDAC642Ff1", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx REP iToken", - "network": "eth", - "shortcut": "iREP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:iSAI": { - "address": "0x14094949152EDDBFcd073717200DA82fEd8dC960", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx SAI iToken ", - "network": "eth", - "shortcut": "iSAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:iUSDC": { - "address": "0xF013406A0B1d544238083DF0B93ad0d2cBE0f65f", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx USDC iToken", - "network": "eth", - "shortcut": "iUSDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:iWBTC": { - "address": "0xBA9262578EFef8b3aFf7F60Cd629d6CC8859C8b5", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx WBTC iToken", - "network": "eth", - "shortcut": "iWBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:iZRX": { - "address": "0xA7Eb2bc82df18013ecC2A6C533fc29446442EDEe", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx ZRX iToken", - "network": "eth", - "shortcut": "iZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:pBTC": { - "address": "0x5228a22e72ccC52d415EcFd199F99D0665E7733b", - "links": { - "Github": "https://github.com/provable-things", - "Homepage": "https://www.ptokens.io" - }, - "marketcap_usd": 0, - "name": "pTokens BTC", - "network": "eth", - "shortcut": "pBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:pUSD": { - "address": "0x93d3296cac208422BF587c3597D116e809870f2b", - "links": { - "Github": "https://github.com/pegnet", - "Homepage": "https://pegnet.org/" - }, - "marketcap_usd": 0, - "name": "PegNet pUSD", - "network": "eth", - "shortcut": "pUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLBAT2x": { - "address": "0xD199A3F8a65fD0C80A47718cB5E2D1C9f3729bC6", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long BAT 2x", - "network": "eth", - "shortcut": "uLBAT2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLBAT3x": { - "address": "0xB56f2cE679E1FfBa509EE52e9447A3dD7ABE0ba1", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long BAT 3x", - "network": "eth", - "shortcut": "uLBAT3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLBAT4x": { - "address": "0xAA2029789404A29899EC9751614eC4CcB27Ff332", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long BAT 4x", - "network": "eth", - "shortcut": "uLBAT4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLETH2x": { - "address": "0x6368b095a4F4702BF1373A0a2aD029696A2e7695", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long ETH 2x", - "network": "eth", - "shortcut": "uLETH2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLETH3x": { - "address": "0x23187365195E7059FA413B33ab46a465173EB787", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long ETH 3x", - "network": "eth", - "shortcut": "uLETH3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLETH4x": { - "address": "0x1287969821F9160C1aF516Af0ff18db2903386aD", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long ETH 4x", - "network": "eth", - "shortcut": "uLETH4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLKNC2x": { - "address": "0xC30FA8484B1c35696c4A8cF7391ee0671592203B", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long KNC 2x", - "network": "eth", - "shortcut": "uLKNC2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLKNC3x": { - "address": "0xA679aA830619768e2d8A2365526cedff7ABaC2A3", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long KNC 3x", - "network": "eth", - "shortcut": "uLKNC3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLKNC4x": { - "address": "0x19197796a9D890319D86b3f8f0226400b41679fD", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long KNC 4x", - "network": "eth", - "shortcut": "uLKNC4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLREP2x": { - "address": "0x187234E7a0C64dCEF6176a534ef1E9e627D9aDC8", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long REP 2x", - "network": "eth", - "shortcut": "uLREP2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLREP3x": { - "address": "0xF4bFF845C2DD28060CDeacBD21a91cb6D2E7dd4B", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long REP 3x", - "network": "eth", - "shortcut": "uLREP3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLREP4x": { - "address": "0x092eD67828357afC65e8aEc93d434b0217d1850A", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long REP 4x", - "network": "eth", - "shortcut": "uLREP4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLWBTC2x": { - "address": "0xbd408612BACccbF14FF26Ca0dEF859FacC3673bD", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long WBTC 2x", - "network": "eth", - "shortcut": "uLWBTC2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLWBTC3x": { - "address": "0x431E5f6f3368230b10B732Cef68ACFF62A9727f0", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long WBTC 3x", - "network": "eth", - "shortcut": "uLWBTC3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLWBTC4x": { - "address": "0x619732bE53BdFB270eE889Cf3DFe6fceE4171261", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long WBTC 4x", - "network": "eth", - "shortcut": "uLWBTC4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLZRX2x": { - "address": "0x04B272A21d9a0f0aE0caE2015E9C909596b82a4d", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long ZRX 2x", - "network": "eth", - "shortcut": "uLZRX2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLZRX3x": { - "address": "0xb0AE52A539E681B9d0d489FE34abA7A88f981d2e", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long ZRX 3x", - "network": "eth", - "shortcut": "uLZRX3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uLZRX4x": { - "address": "0x392B9FAE896594586b4e6b080916c6872e74D44F", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Long ZRX 4x", - "network": "eth", - "shortcut": "uLZRX4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uni0xBTC": { - "address": "0x701564Aa6E26816147D4fa211a0779F1B774Bb9B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: 0xBitcoin Token", - "network": "eth", - "shortcut": "uni0xBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniAMN": { - "address": "0xE6C198d27a5B71144B40cFa2362ae3166728e0C8", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Amon", - "network": "eth", - "shortcut": "uniAMN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniAMPL": { - "address": "0x042dBBDc27F75d277C3D99efE327DB21Bc4fde75", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Ampleforth", - "network": "eth", - "shortcut": "uniAMPL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniANT": { - "address": "0x077d52B047735976dfdA76feF74d4d988AC25196", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Aragon Network Token", - "network": "eth", - "shortcut": "uniANT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniBAT": { - "address": "0x2E642b8D59B45a1D8c5aEf716A84FF44ea665914", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Basic Attention Token", - "network": "eth", - "shortcut": "uniBAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniBLT": { - "address": "0x0E6A53B13688018A3df8C69f99aFB19A3068D04f", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Bloom Token", - "network": "eth", - "shortcut": "uniBLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniBNT": { - "address": "0x87d80DBD37E551F58680B4217b23aF6a752DA83F", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Bancor Network Token", - "network": "eth", - "shortcut": "uniBNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniC20": { - "address": "0xF7B5A4b934658025390ff69dB302BC7F2AC4a542", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Crypto20", - "network": "eth", - "shortcut": "uniC20", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniCELR": { - "address": "0x1e3740A030AF8c755c888a0ee83aC9E79e09f4F1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: CelerToken", - "network": "eth", - "shortcut": "uniCELR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniCHAI": { - "address": "0x6C3942B383bc3d0efd3F36eFa1CBE7C8E12C8A2B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Chai", - "network": "eth", - "shortcut": "uniCHAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniCVC": { - "address": "0x1C6c712b1F4a7c263B1DBd8F97fb447c945d3b9a", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Civic", - "network": "eth", - "shortcut": "uniCVC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniDAI": { - "address": "0x2a1530C4C41db0B0b2bB646CB5Eb1A67b7158667", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Dai Stablecoin", - "network": "eth", - "shortcut": "uniDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniDATA": { - "address": "0x4F0d6E2179938828CfF93dA40a8BA1Df7519Ca8C", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Streamr DATAcoin", - "network": "eth", - "shortcut": "uniDATA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniDGD": { - "address": "0xD55C1cA9F5992A2e5E379DCe49Abf24294ABe055", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: DigixDAO", - "network": "eth", - "shortcut": "uniDGD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniDGX": { - "address": "0xb92dE8B30584392Af27726D5ce04Ef3c4e5c9924", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Digix Gold Token", - "network": "eth", - "shortcut": "uniDGX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniDIP": { - "address": "0x61792F290e5100FBBcBb2309F03A1Bab869fb850", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Decentralized Insurance Protocol", - "network": "eth", - "shortcut": "uniDIP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniDONUT": { - "address": "0xD552119eD44EC8Fa8f87c568769C67Bd02B5b3FB", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Donut", - "network": "eth", - "shortcut": "uniDONUT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniENJ": { - "address": "0xb99A23b1a4585fc56d0EC3B76528C27cAd427473", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Enjin Coin", - "network": "eth", - "shortcut": "uniENJ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniFAME": { - "address": "0x5e7907aC70b9a781365c72F2acEE96710bdA042e", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: SAINT FAME: Genesis Shirt", - "network": "eth", - "shortcut": "uniFAME", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniFOAM": { - "address": "0xf79cb3BEA83BD502737586A6E8B133c378FD1fF2", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: FOAM Token", - "network": "eth", - "shortcut": "uniFOAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniFUN": { - "address": "0x60a87cC7Fca7E53867facB79DA73181B1bB4238B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: FunFair", - "network": "eth", - "shortcut": "uniFUN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniGEN": { - "address": "0x26Cc0EAb6Cb650B0Db4D0d0dA8cB5BF69F4ad692", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: DAOstack", - "network": "eth", - "shortcut": "uniGEN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniGNO": { - "address": "0xe8e45431b93215566BA923a7E611B7342Ea954DF", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Gnosis Token", - "network": "eth", - "shortcut": "uniGNO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniGRID": { - "address": "0x4B17685b330307C751B47f33890c8398dF4Fe407", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: GRID Token", - "network": "eth", - "shortcut": "uniGRID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniGST2": { - "address": "0x929507CD3D90Ab11eC4822E9eB5A48eb3a178F19", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Gastoken.io", - "network": "eth", - "shortcut": "uniGST2", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniHOT": { - "address": "0xd4777E164c6C683E10593E08760B803D58529a8E", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: HoloToken", - "network": "eth", - "shortcut": "uniHOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniIOTX": { - "address": "0x084f002671a5f03D5498B1e5fb15fc0cfee9a470", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: IoTeX Network", - "network": "eth", - "shortcut": "uniIOTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniKIN": { - "address": "0xb7520a5F8c832c573d6BD0Df955fC5c9b72400F7", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Kin", - "network": "eth", - "shortcut": "uniKIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniKNC": { - "address": "0x49c4f9bc14884f6210F28342ceD592A633801a8b", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Kyber Network Crystal", - "network": "eth", - "shortcut": "uniKNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniLEND": { - "address": "0xcaA7e4656f6A2B59f5f99c745F91AB26D1210DCe", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: EthLend Token", - "network": "eth", - "shortcut": "uniLEND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniLINK": { - "address": "0xF173214C720f58E03e194085B1DB28B50aCDeeaD", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: ChainLink Token", - "network": "eth", - "shortcut": "uniLINK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniLOOM": { - "address": "0x417CB32bc991fBbDCaE230C7c4771CC0D69daA6b", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: LoomToken", - "network": "eth", - "shortcut": "uniLOOM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniLPT": { - "address": "0xc4a1C45D5546029Fd57128483aE65b56124BFA6A", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Livepeer Token", - "network": "eth", - "shortcut": "uniLPT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniLQD": { - "address": "0xe3406e7D0155E0a83236eC25D34Cd3D903036669", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Liquidity.Network Token", - "network": "eth", - "shortcut": "uniLQD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniLRC": { - "address": "0xA539BAaa3aCA455c986bB1E25301CEF936CE1B65", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: LoopringCoin V2", - "network": "eth", - "shortcut": "uniLRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniMANA": { - "address": "0xC6581Ce3A005e2801c1e0903281BBd318eC5B5C2", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Decentraland MANA", - "network": "eth", - "shortcut": "uniMANA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniMATIC": { - "address": "0x9a7A75E66B325a3BD46973B2b57c9b8d9D26a621", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Matic Token", - "network": "eth", - "shortcut": "uniMATIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniMBC": { - "address": "0xE1b7AeC3639068b474bFbcB916580fc28A20717B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Marblecoin", - "network": "eth", - "shortcut": "uniMBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniMGN": { - "address": "0xdd80Ca8062c7Ef90FcA2547E6a2A126C596e611F", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Magnolia Token", - "network": "eth", - "shortcut": "uniMGN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniMKR": { - "address": "0x2C4Bd064b998838076fa341A83d007FC2FA50957", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Maker", - "network": "eth", - "shortcut": "uniMKR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniMLN": { - "address": "0xA931F4eB165AC307fD7431b5EC6eADde53E14b0C", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Melon Token", - "network": "eth", - "shortcut": "uniMLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniMOD": { - "address": "0xCCB98654CD486216fFF273dd025246588E77cFC1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Modum Token", - "network": "eth", - "shortcut": "uniMOD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniNEXO": { - "address": "0x069C97DBA948175D10af4b2414969e0B88d44669", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Nexo", - "network": "eth", - "shortcut": "uniNEXO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniNMR": { - "address": "0x2Bf5A5bA29E60682fC56B2Fcf9cE07Bef4F6196f", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Numeraire", - "network": "eth", - "shortcut": "uniNMR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniOXT": { - "address": "0xe9a5bbe41dc63D555E06746b047d624E3343EA52", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Orchid", - "network": "eth", - "shortcut": "uniOXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniPAN": { - "address": "0xF53bBFBff01c50F2D42D542b09637DcA97935fF7", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Panvala pan", - "network": "eth", - "shortcut": "uniPAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniPAX": { - "address": "0xC040d51b07Aea5d94a89Bc21E8078B77366Fc6C7", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: PAX", - "network": "eth", - "shortcut": "uniPAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniPAXG": { - "address": "0x0d2E1a84638bD1B6c0C260c758c39451D4587be1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Paxos Gold", - "network": "eth", - "shortcut": "uniPAXG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniPNK": { - "address": "0xF506828B166de88cA2EDb2A98D960aBba0D2402A", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Pinakion", - "network": "eth", - "shortcut": "uniPNK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniPOA20": { - "address": "0xA2E6B3EF205FeAEe475937c4883b24E6eB717eeF", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: POA ERC20 on Foundation", - "network": "eth", - "shortcut": "uniPOA20", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniQCH": { - "address": "0x755899F0540c3548b99E68C59AdB0f15d2695188", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: QChi", - "network": "eth", - "shortcut": "uniQCH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniQSP": { - "address": "0x82Db9FC4956Fa40efe1e35d881004612B5CB2cc2", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Quantstamp Token", - "network": "eth", - "shortcut": "uniQSP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniRCN": { - "address": "0xD91FF16Ef92568fC27F466C3c5613e43313Ab1dc", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Ripio Credit Network Token", - "network": "eth", - "shortcut": "uniRCN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniRDN": { - "address": "0x7D03CeCb36820b4666F45E1b4cA2538724Db271C", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Raiden Token", - "network": "eth", - "shortcut": "uniRDN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniREN": { - "address": "0x43892992B0b102459E895B88601Bb2C76736942c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Republic Token", - "network": "eth", - "shortcut": "uniREN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniREP": { - "address": "0x48B04d2A05B6B604d8d5223Fd1984f191DED51af", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Reputation", - "network": "eth", - "shortcut": "uniREP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniRING": { - "address": "0xeBD8AA50b26bFa63007d61eBa777A9DdE7e43c64", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Darwinia Network Native Token", - "network": "eth", - "shortcut": "uniRING", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniRLC": { - "address": "0xA825CAE02B310E9901b4776806CE25db520c8642", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: iEx.ec Network Token", - "network": "eth", - "shortcut": "uniRLC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniRPL": { - "address": "0x3Fb2F18065926DdB33E7571475c509541d15dA0e", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Rocket Pool", - "network": "eth", - "shortcut": "uniRPL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSAI": { - "address": "0x09cabEC1eAd1c0Ba254B09efb3EE13841712bE14", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Dai Stablecoin v1.0 (SAI)", - "network": "eth", - "shortcut": "uniSAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSALT": { - "address": "0xC0C59cDe851bfcbdddD3377EC10ea54A18Efb937", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Salt", - "network": "eth", - "shortcut": "uniSALT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSAN": { - "address": "0x8a8D7aD4b89D91983cd069C58C4AA9F2f4166298", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: SANtiment network token", - "network": "eth", - "shortcut": "uniSAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSHUF": { - "address": "0x536956Fab86774fb55CfaAcF496BC25E4d2B435C", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Shuffle.Monster V3", - "network": "eth", - "shortcut": "uniSHUF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSNT": { - "address": "0x1aEC8F11A7E78dC22477e91Ed924Fab46e3A88Fd", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Status Network Token", - "network": "eth", - "shortcut": "uniSNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSNX": { - "address": "0x3958B4eC427F8fa24eB60F42821760e88d485f7F", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Synthetix Network Token", - "network": "eth", - "shortcut": "uniSNX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSOCKS": { - "address": "0x22d8432cc7aA4f8712a655fC4cdfB1baEC29FCA9", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Unisocks Edition 0", - "network": "eth", - "shortcut": "uniSOCKS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSPANK": { - "address": "0x4e395304655F0796bc3bc63709DB72173b9DdF98", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: SPANK", - "network": "eth", - "shortcut": "uniSPANK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniSTORJ": { - "address": "0xA7298541E52f96d42382eCBe4f242cBcBC534d02", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: StorjToken", - "network": "eth", - "shortcut": "uniSTORJ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniTAUD": { - "address": "0x88dF13889E20EFa93Ff9a0C08f101F431bD9DDD7", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: TrueAUD", - "network": "eth", - "shortcut": "uniTAUD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniTCAD": { - "address": "0xF996D7d9BaCb9217ca64BBce1b1cD72E0E886Be6", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: TrueCAD", - "network": "eth", - "shortcut": "uniTCAD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniTGBP": { - "address": "0x6bFa119a191576Ba26Bc5e711432aCA0cFda04DE", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: TrueGBP", - "network": "eth", - "shortcut": "uniTGBP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniTHKD": { - "address": "0x505C02B4aa1286375FBDF0c390AC0fe9209DCB05", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: TrueHKD", - "network": "eth", - "shortcut": "uniTHKD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniTKN": { - "address": "0xb6cFBf322db47D39331E306005DC7E5e6549942B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Monolith TKN", - "network": "eth", - "shortcut": "uniTKN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniTRST": { - "address": "0x95E4649F5209dD292cAF1F087b8F1Db3bE24927f", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Trustcoin", - "network": "eth", - "shortcut": "uniTRST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniTRYB": { - "address": "0x122327Fd43B2C66DD9e4B6c91c8f071E217558eF", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: BiLira", - "network": "eth", - "shortcut": "uniTRYB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniTUSD": { - "address": "0x5048b9d01097498Fd72F3F14bC9Bc74A5aAc8fA7", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: TrueUSD", - "network": "eth", - "shortcut": "uniTUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniUNI-V1:SAI": { - "address": "0x601c32E0580D3aef9437dB52D09f5a5D7E60eC22", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Uniswap V1", - "network": "eth", - "shortcut": "uniUNI-V1:SAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniUSDC": { - "address": "0x97deC872013f6B5fB443861090ad931542878126", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: USD//C", - "network": "eth", - "shortcut": "uniUSDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniUSDS": { - "address": "0x7Ef7191AB91dDB4D7cC347fbFA170355acbaf02D", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: StableUSD", - "network": "eth", - "shortcut": "uniUSDS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniVERI": { - "address": "0x17e5BF07D696eaf0d14caA4B44ff8A1E17B34de3", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Veritaseum", - "network": "eth", - "shortcut": "uniVERI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniWBTC": { - "address": "0x4d2f5cFbA55AE412221182D8475bC85799A5644b", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Wrapped BTC", - "network": "eth", - "shortcut": "uniWBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniWCK": { - "address": "0x4FF7Fa493559c40aBd6D157a0bfC35Df68d8D0aC", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Wrapped CryptoKitties", - "network": "eth", - "shortcut": "uniWCK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniWETH": { - "address": "0xA2881A90Bf33F03E7a3f803765Cd2ED5c8928dFb", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Wrapped Ether", - "network": "eth", - "shortcut": "uniWETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniXCHF": { - "address": "0x8dE0d002DC83478f479dC31F76cB0a8aa7CcEa17", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: CryptoFranc", - "network": "eth", - "shortcut": "uniXCHF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniXIO": { - "address": "0x7B6E5278a14d5318571d65aceD036d09c998C707", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: XIO Network", - "network": "eth", - "shortcut": "uniXIO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniZRX": { - "address": "0xaE76c84C9262Cdb9abc0C2c8888e62Db8E22A0bF", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: 0x Protocol Token", - "network": "eth", - "shortcut": "uniZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniaDAI": { - "address": "0x7cfab87AaC0899c093235b342AC0e5B1ACF159EB", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Aave Interest bearing DAI", - "network": "eth", - "shortcut": "uniaDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:unicDAI": { - "address": "0x34E89740adF97C3A9D3f63Cc2cE4a914382c230b", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Compound Dai", - "network": "eth", - "shortcut": "unicDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:unicSAI": { - "address": "0x45A2FDfED7F7a2c791fb1bdF6075b83faD821ddE", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Compound Dai", - "network": "eth", - "shortcut": "unicSAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniiDAI": { - "address": "0x3E0349F5D38414008B9Bb1907ea422739BE7CD4C", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Fulcrum DAI iToken ", - "network": "eth", - "shortcut": "uniiDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniiSAI": { - "address": "0x81eeD7F1EcbD7FA9978fcc7584296Fb0C215Dc5C", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Fulcrum SAI iToken ", - "network": "eth", - "shortcut": "uniiSAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:uniimBTC": { - "address": "0xFFcf45b540e6C9F094Ae656D2e34aD11cdfdb187", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: The Tokenized Bitcoin", - "network": "eth", - "shortcut": "uniimBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:unisETH": { - "address": "0xe9Cf7887b93150D4F2Da7dFc6D502B216438F244", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Synth sETH", - "network": "eth", - "shortcut": "unisETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:unisUSD": { - "address": "0xB944d13b2f4047fc7bd3F7013bcf01b115fb260d", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.io" - }, - "marketcap_usd": 0, - "name": "Uniswap: Synth sUSD", - "network": "eth", - "shortcut": "unisUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ20xBTCETH": { - "address": "0xc12c4c3E0008B838F75189BFb39283467cf6e5b3", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 0xBTC-ETH", - "network": "eth", - "shortcut": "univ20xBTCETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ21UPETH": { - "address": "0xF49144E61C05120f1b167E4B4F59cf0a5d77903F", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 1UP-ETH", - "network": "eth", - "shortcut": "univ21UPETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2AKROETH": { - "address": "0x8Cb77eA869DeF8f7fdEab9E4dA6cF02897bbF076", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 AKRO-ETH", - "network": "eth", - "shortcut": "univ2AKROETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ALEPHETH": { - "address": "0x583CaDD830374bb5C1eC8E1b648e0294CC1E01f1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ALEPH-ETH", - "network": "eth", - "shortcut": "univ2ALEPHETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ATISETH": { - "address": "0x490B5B2489eeFC4106C69743F657e3c4A2870aC5", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ATIS-ETH", - "network": "eth", - "shortcut": "univ2ATISETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2BANDETH": { - "address": "0xf421c3f2e695C2D4C0765379cCace8adE4a480D9", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 BAND-ETH", - "network": "eth", - "shortcut": "univ2BANDETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2BATETH": { - "address": "0xB6909B960DbbE7392D405429eB2b3649752b4838", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 BAT-ETH", - "network": "eth", - "shortcut": "univ2BATETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2BIZETH": { - "address": "0xFAD8B07055A0371442A3106A2244a82B24e31cEc", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 BIZ-ETH", - "network": "eth", - "shortcut": "univ2BIZETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2BNTETH": { - "address": "0x3fd4Cf9303c4BC9E13772618828712C8EaC7Dd2F", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 BNT-ETH", - "network": "eth", - "shortcut": "univ2BNTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2BOOSTETH": { - "address": "0x6B4A0Bd2EEe3Ca06652f758844937dAF91eA8422", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 BOOST-ETH", - "network": "eth", - "shortcut": "univ2BOOSTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2BPTETH": { - "address": "0x13E638b4f89740a1c2FF45D71F71ee28101CC1Dc", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 BPT-ETH", - "network": "eth", - "shortcut": "univ2BPTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2CAMOETH": { - "address": "0x48F4A6C65ABb4b209823771b0D2c0F156eE6268b", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 CAMO-ETH", - "network": "eth", - "shortcut": "univ2CAMOETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2CELETH": { - "address": "0xa5E79baEe540f000ef6F23D067cd3AC22c7d9Fe6", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 CEL-ETH", - "network": "eth", - "shortcut": "univ2CELETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2CHIETH": { - "address": "0xa6f3ef841d371a82ca757FaD08efc0DeE2F1f5e2", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 CHI-ETH", - "network": "eth", - "shortcut": "univ2CHIETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2COMPETH": { - "address": "0xCFfDdeD873554F362Ac02f8Fb1f02E5ada10516f", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 COMP-ETH", - "network": "eth", - "shortcut": "univ2COMPETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2CREAMETH": { - "address": "0xddF9b7a31b32EBAF5c064C80900046C9e5b7C65F", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 CREAM-ETH", - "network": "eth", - "shortcut": "univ2CREAMETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DAI2KEY": { - "address": "0xda9A09ed40015346f6B0704c5Bf1A2ccbF94dE43", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DAI-2KEY", - "network": "eth", - "shortcut": "univ2DAI2KEY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DAIALEPH": { - "address": "0x18e33723feF43A33f9560a8B973D3331E5269FAC", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DAI-ALEPH", - "network": "eth", - "shortcut": "univ2DAIALEPH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DAIETH": { - "address": "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DAI-ETH", - "network": "eth", - "shortcut": "univ2DAIETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DAIJRT": { - "address": "0xE4a356Afd925F73F3DD22ACbEb2c0C87A05E895D", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DAI-JRT", - "network": "eth", - "shortcut": "univ2DAIJRT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DAILEND": { - "address": "0xb603c2b5AB4ee7932103b42f8dd899C8721DD25E", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DAI-LEND", - "network": "eth", - "shortcut": "univ2DAILEND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DAIMFT": { - "address": "0xe8056B83ba7dAF027414b58048a48911acf1b2A9", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DAI-MFT", - "network": "eth", - "shortcut": "univ2DAIMFT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DAIUSDC": { - "address": "0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DAI-USDC", - "network": "eth", - "shortcut": "univ2DAIUSDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DATAETH": { - "address": "0xD6054455Ca2e1AEf02178E0462D9ab953bEA4e23", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DATA-ETH", - "network": "eth", - "shortcut": "univ2DATAETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DECETH": { - "address": "0x3AEEE5bA053eF8406420DbC5801fC95eC57b0E0A", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DEC-ETH", - "network": "eth", - "shortcut": "univ2DECETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DEVETH": { - "address": "0x4168CEF0fCa0774176632d86bA26553E3B9cF59d", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DEV-ETH", - "network": "eth", - "shortcut": "univ2DEVETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DEXTETH": { - "address": "0x37a0464f8F4c207B54821f3C799Afd3D262Aa944", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DEXT-ETH", - "network": "eth", - "shortcut": "univ2DEXTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DXDETH": { - "address": "0x1c9052e823b5f4611EF7D5fB4153995b040ccbf5", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DXD-ETH", - "network": "eth", - "shortcut": "univ2DXDETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2DZARETH": { - "address": "0xC5A788F63e5D9cF2C324621EEd51A98F85AE373b", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 DZAR-ETH", - "network": "eth", - "shortcut": "univ2DZARETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2EBASEETH": { - "address": "0x3b0F0fe3Be830826D833a67cD1d7C80edF3Fb49b", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 EBASE-ETH", - "network": "eth", - "shortcut": "univ2EBASEETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ESWAETH": { - "address": "0x8C0e876F1da58140695673D07FF42D4786207D1B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ESWA-ETH", - "network": "eth", - "shortcut": "univ2ESWAETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETH2KEY": { - "address": "0x63E7Aa05B78144013Cfa4b23C9b61599D0a29023", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-2KEY", - "network": "eth", - "shortcut": "univ2ETH2KEY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHACID": { - "address": "0xA0d06BdC3274564ddda65BFAb6AE61e5f000E49B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-ACID", - "network": "eth", - "shortcut": "univ2ETHACID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHAMPL": { - "address": "0xc5be99A02C6857f9Eac67BbCE58DF5572498F40c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-AMPL", - "network": "eth", - "shortcut": "univ2ETHAMPL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHANJ": { - "address": "0x0FFC70bE6e2d841e109653ddb3034961591679d6", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-ANJ", - "network": "eth", - "shortcut": "univ2ETHANJ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHASKO": { - "address": "0x63804D757B5B7c43509FDED8f7CE10Cc0Bac2AE0", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-ASKO", - "network": "eth", - "shortcut": "univ2ETHASKO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHAUC": { - "address": "0xC04744ab87A4C37afD91680ef280B96Ee21A026E", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-AUC", - "network": "eth", - "shortcut": "univ2ETHAUC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHBUIDL": { - "address": "0x8A38aD17d1adCDBE3775338D1470FD6f00f77802", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-BUIDL", - "network": "eth", - "shortcut": "univ2ETHBUIDL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHCKN": { - "address": "0x938d1459ee0aaf8fE73778c590A639821E444D45", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-CKN", - "network": "eth", - "shortcut": "univ2ETHCKN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHDAM": { - "address": "0x447f8D287120B66F39856AE5ceb01512A7A47444", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-DAM", - "network": "eth", - "shortcut": "univ2ETHDAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHDAOX": { - "address": "0x0782Fb026d1c264e59A2b274833240c53367Ed1A", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-DAOX", - "network": "eth", - "shortcut": "univ2ETHDAOX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHDMG": { - "address": "0x8175362afBeeE32AfB22d05adc0bbD08dE32F5Ae", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-DMG", - "network": "eth", - "shortcut": "univ2ETHDMG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHENJ": { - "address": "0xE56c60B5f9f7B5FC70DE0eb79c6EE7d00eFa2625", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-ENJ", - "network": "eth", - "shortcut": "univ2ETHENJ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHESH": { - "address": "0x121B382b5F003C41fb49E7B88D079c8f513fEaaC", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-ESH", - "network": "eth", - "shortcut": "univ2ETHESH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHFRM": { - "address": "0x92330D8818e8A3B50f027C819FA46031FfBa2C8C", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-FRM", - "network": "eth", - "shortcut": "univ2ETHFRM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHFSW": { - "address": "0xE275eB6154cB4A73F0BA573E43b2b06E9E78b7f0", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-FSW", - "network": "eth", - "shortcut": "univ2ETHFSW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHHEX2T": { - "address": "0xedAeDD22e653c504ff6806bf61664292848eB26e", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-HEX2T", - "network": "eth", - "shortcut": "univ2ETHHEX2T", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHKNC": { - "address": "0xf49C43Ae0fAf37217bDcB00DF478cF793eDd6687", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-KNC", - "network": "eth", - "shortcut": "univ2ETHKNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHNEC": { - "address": "0x2dda09fB929c576A6AB6c1D1EE62E8AF72b2F6a7", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-NEC", - "network": "eth", - "shortcut": "univ2ETHNEC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHPAMP": { - "address": "0x1C608235E6A946403F2a048a38550BefE41e1B85", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-PAMP", - "network": "eth", - "shortcut": "univ2ETHPAMP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHPAN": { - "address": "0x1b21609D42fa32F371F58DF294eD25b2D2e5C8ba", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-PAN", - "network": "eth", - "shortcut": "univ2ETHPAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHPDS": { - "address": "0x2EcF245B60e351A711e56A3ae25866d1c8BEb324", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-PDS", - "network": "eth", - "shortcut": "univ2ETHPDS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHPOWER": { - "address": "0x49F9316EB22de90d9343C573fbD7Cc0B5ec6e19f", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-POWER", - "network": "eth", - "shortcut": "univ2ETHPOWER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHSHIP": { - "address": "0xfb7A3112c96Bbcfe4bbf3e8627b0dE6f49E5142A", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-SHIP", - "network": "eth", - "shortcut": "univ2ETHSHIP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHSWAP": { - "address": "0xD90a1ba0cbaaaabfdC6C814cDF1611306A26E1f8", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-SWAP", - "network": "eth", - "shortcut": "univ2ETHSWAP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHUBOMB": { - "address": "0xEd9C854Cb02dE75Ce4C9BBA992828d6CB7fd5C71", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-UBOMB", - "network": "eth", - "shortcut": "univ2ETHUBOMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHUNC": { - "address": "0x5E64CD6f84D0eE2Ad2a84CadC464184e36274E0c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-UNC", - "network": "eth", - "shortcut": "univ2ETHUNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHUSDT": { - "address": "0x0d4a11d5EEaaC28EC3F61d100daF4d40471f1852", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-USDT", - "network": "eth", - "shortcut": "univ2ETHUSDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHXAMP": { - "address": "0x6c35c40447E8011a63aB05f088fa7cD914d66904", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-XAMP", - "network": "eth", - "shortcut": "univ2ETHXAMP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2ETHZRX": { - "address": "0xc6F348dd3B91a56D117ec0071C1e9b83C0996De4", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 ETH-ZRX", - "network": "eth", - "shortcut": "univ2ETHZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2EWTBETH": { - "address": "0xdc7d8cC3a22FE0eC69770E02931f43451b7B975e", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 EWTB-ETH", - "network": "eth", - "shortcut": "univ2EWTBETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2FMAETH": { - "address": "0x9926285361ACf7461105B464Ae9EA683DFB06b83", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 FMA-ETH", - "network": "eth", - "shortcut": "univ2FMAETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2FOAMETH": { - "address": "0xd9d39540d61F8D6Eb2EE7eEdFae93CC09cC24f0E", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 FOAM-ETH", - "network": "eth", - "shortcut": "univ2FOAMETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2FUNETH": { - "address": "0x05B0c1D8839eF3a989B33B6b63D3aA96cB7Ec142", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 FUN-ETH", - "network": "eth", - "shortcut": "univ2FUNETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2FXCETH": { - "address": "0x302Ac87B1b5ef18485971ED0115a17403Ea30911", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 FXC-ETH", - "network": "eth", - "shortcut": "univ2FXCETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2GENETH": { - "address": "0xf37Ed742819Ec006b0802df5c2B0e9132F22C625", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 GEN-ETH", - "network": "eth", - "shortcut": "univ2GENETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2GHOSTETH": { - "address": "0x395A1350db9627360D09c8b3E7C31FB84261B8F2", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 GHOST-ETH", - "network": "eth", - "shortcut": "univ2GHOSTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2GHSTETH": { - "address": "0xaB659deE3030602c1aF8C29D146fAcD4aeD6EC85", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 GHST-ETH", - "network": "eth", - "shortcut": "univ2GHSTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2H3XETH": { - "address": "0x308E019143B560215775A0c6EFbD2673413D76E6", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 H3X-ETH", - "network": "eth", - "shortcut": "univ2H3XETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2HEXETH": { - "address": "0x55D5c232D921B9eAA6b37b5845E439aCD04b4DBa", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 HEX-ETH", - "network": "eth", - "shortcut": "univ2HEXETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2HKMTUSDT": { - "address": "0xF52f433B79d21023af94251958BEd3b64a2b7930", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 HKMT-USDT", - "network": "eth", - "shortcut": "univ2HKMTUSDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2HXBETH": { - "address": "0xaDEA645907Dbe2b9BCB7B102695Ad0C321f6b40c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 HXB-ETH", - "network": "eth", - "shortcut": "univ2HXBETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2IDXTETH": { - "address": "0xFdC3f68Af20d56e05AD0C7Eb51DA4A3F7D753a04", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 IDXT-ETH", - "network": "eth", - "shortcut": "univ2IDXTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2JRTETH": { - "address": "0x2b6A25f7C54F43C71C743e627F5663232586C39F", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 JRT-ETH", - "network": "eth", - "shortcut": "univ2JRTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2KAIETH": { - "address": "0x6507ba0f3eb82cba185c088A3fBD0435f1A73B28", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 KAI-ETH", - "network": "eth", - "shortcut": "univ2KAIETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2LENDETH": { - "address": "0xaB3F9bF1D81ddb224a2014e98B238638824bCf20", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 LEND-ETH", - "network": "eth", - "shortcut": "univ2LENDETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2LENDUSDC": { - "address": "0x308d87865397672a74Ec62B3dC8E7323a18c0f1e", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 LEND-USDC", - "network": "eth", - "shortcut": "univ2LENDUSDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2LINKETH": { - "address": "0xa2107FA5B38d9bbd2C461D6EDf11B11A50F6b974", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 LINK-ETH", - "network": "eth", - "shortcut": "univ2LINKETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2LPTDAI": { - "address": "0xdDb5049FDb73Ea84429Cd91f31d90779032e5eDE", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 LPT-DAI", - "network": "eth", - "shortcut": "univ2LPTDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2LPTETH": { - "address": "0x755C1a8F71f4210CD7B60b9439451EfCbeBa33D1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 LPT-ETH", - "network": "eth", - "shortcut": "univ2LPTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2LRCETH": { - "address": "0x8878Df9E1A7c87dcBf6d3999D997f262C05D8C70", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 LRC-ETH", - "network": "eth", - "shortcut": "univ2LRCETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MANAETH": { - "address": "0x11b1f53204d03E5529F09EB3091939e4Fd8c9CF3", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MANA-ETH", - "network": "eth", - "shortcut": "univ2MANAETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MATHETH": { - "address": "0x3006c0D2A6e54d3590a44384c6F066c9cF9a4ceA", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MATH-ETH", - "network": "eth", - "shortcut": "univ2MATHETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MCBETH": { - "address": "0x10cfa744c77F1cB9A77fa418ac4a1B6ec62BcCE4", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MCB-ETH", - "network": "eth", - "shortcut": "univ2MCBETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MEMEETH": { - "address": "0x5DFbe95925FFeb68f7d17920Be7b313289a1a583", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MEME-ETH", - "network": "eth", - "shortcut": "univ2MEMEETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MKRETH": { - "address": "0xC2aDdA861F89bBB333c90c492cB837741916A225", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MKR-ETH", - "network": "eth", - "shortcut": "univ2MKRETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MKRMLN": { - "address": "0xadea7c5febF93a6239E73e14e37aB429039Eb9B1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MKR-MLN", - "network": "eth", - "shortcut": "univ2MKRMLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MKRUSDC": { - "address": "0x340A5a2F73eBaa181eC2826802Fdf8ED21Fc759a", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MKR-USDC", - "network": "eth", - "shortcut": "univ2MKRUSDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MOONETH": { - "address": "0xf89403ad67d659d5d1FAe7c6Ec163110506b858a", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MOON-ETH", - "network": "eth", - "shortcut": "univ2MOONETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2MRDNETH": { - "address": "0xAacd36c877408824EE59540B0C093804D7e9a7d9", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 MRDN-ETH", - "network": "eth", - "shortcut": "univ2MRDNETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2NMRETH": { - "address": "0xB784CED6994c928170B417BBd052A096c6fB17E2", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 NMR-ETH", - "network": "eth", - "shortcut": "univ2NMRETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2OCEANETH": { - "address": "0x9b7DaD79FC16106b47a3DAb791F389C167e15Eb0", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 OCEAN-ETH", - "network": "eth", - "shortcut": "univ2OCEANETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2OGNETH": { - "address": "0xce2Cc0513634CEf3a7C9C257E294EF5E3092f185", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 OGN-ETH", - "network": "eth", - "shortcut": "univ2OGNETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2PAXGETH": { - "address": "0x9C4Fe5FFD9A9fC5678cFBd93Aa2D4FD684b67C4C", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 PAXG-ETH", - "network": "eth", - "shortcut": "univ2PAXGETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2PICKLEETH": { - "address": "0xdc98556Ce24f007A5eF6dC1CE96322d65832A819", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 PICKLE-ETH", - "network": "eth", - "shortcut": "univ2PICKLEETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2PLRETH": { - "address": "0xaE2D4004241254aEd3f93873604d39883c8259F0", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 PLR-ETH", - "network": "eth", - "shortcut": "univ2PLRETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2PNKETH": { - "address": "0x343FD171caf4F0287aE6b87D75A8964Dc44516Ab", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 PNK-ETH", - "network": "eth", - "shortcut": "univ2PNKETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2PODETH": { - "address": "0xe7cca784b1D838D99Ff4ffF574D31870d1619C1d", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 POD-ETH", - "network": "eth", - "shortcut": "univ2PODETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2RAINETH": { - "address": "0xcB7f78A079B5fC387C80b93BE79d40309C27A237", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 RAIN-ETH", - "network": "eth", - "shortcut": "univ2RAINETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2RELETH": { - "address": "0x33be7eD806479061A7E62A33D3C9B500fc9B47BF", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 REL-ETH", - "network": "eth", - "shortcut": "univ2RELETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2RENETH": { - "address": "0x8Bd1661Da98EBDd3BD080F0bE4e6d9bE8cE9858c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 REN-ETH", - "network": "eth", - "shortcut": "univ2RENETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2REPETH": { - "address": "0xec2D2240D02A8cf63C3fA0B7d2C5a3169a319496", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 REP-ETH", - "network": "eth", - "shortcut": "univ2REPETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2RINGETH": { - "address": "0xa32523371390b0Cc4e11F6Bb236ecf4C2cDEA101", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 RING-ETH", - "network": "eth", - "shortcut": "univ2RINGETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2RLCETH": { - "address": "0x6d57a53A45343187905aaD6AD8eD532D105697c1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 RLC-ETH", - "network": "eth", - "shortcut": "univ2RLCETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2RPLETH": { - "address": "0x70EA56e46266f0137BAc6B75710e3546f47C855D", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 RPL-ETH", - "network": "eth", - "shortcut": "univ2RPLETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2RSRETH": { - "address": "0xba65016890709dBC9491Ca7bF5DE395B8441DC8B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 RSR-ETH", - "network": "eth", - "shortcut": "univ2RSRETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2SAKEETH": { - "address": "0xd2E0C4928789e5DB620e53af29F5fC7bcA262635", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 SAKE-ETH", - "network": "eth", - "shortcut": "univ2SAKEETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2SHUFETH": { - "address": "0x260E069deAd76baAC587B5141bB606Ef8b9Bab6c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 SHUF-ETH", - "network": "eth", - "shortcut": "univ2SHUFETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2SNXETH": { - "address": "0x43AE24960e5534731Fc831386c07755A2dc33D47", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 SNX-ETH", - "network": "eth", - "shortcut": "univ2SNXETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2STAETH": { - "address": "0x59F96b8571E3B11f859A09Eaf5a790A138FC64D0", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 STA-ETH", - "network": "eth", - "shortcut": "univ2STAETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2STAKEETH": { - "address": "0x3B3d4EeFDc603b232907a7f3d0Ed1Eea5C62b5f7", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 STAKE-ETH", - "network": "eth", - "shortcut": "univ2STAKEETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2STONKETH": { - "address": "0xe0A08fD1366b5B4CF256dB1a85B6eb0E01AAcbCE", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 STONK-ETH", - "network": "eth", - "shortcut": "univ2STONKETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2STORJETH": { - "address": "0xAEF16913b6C50EBCf627a394921F306985FC8604", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 STORJ-ETH", - "network": "eth", - "shortcut": "univ2STORJETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2SoETHETH": { - "address": "0xEAf1Cc33b8D1C4C3E67CF647E1173f06Aa7B6d0c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 SoETH-ETH", - "network": "eth", - "shortcut": "univ2SoETHETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2TRACETH": { - "address": "0x1A58Aa618DF8F1eC282748feF6185C1a1cC2FAa6", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 TRAC-ETH", - "network": "eth", - "shortcut": "univ2TRACETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2TRADEETH": { - "address": "0xB8172076ceb35B6701F96eB9088818EFc010BD44", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 TRADE-ETH", - "network": "eth", - "shortcut": "univ2TRADEETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2TRBDAI": { - "address": "0x27eF0CB021446f6d43aDF0Bcc74b64fd9c0AB180", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 TRB-DAI", - "network": "eth", - "shortcut": "univ2TRBDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2TRBETH": { - "address": "0x70258Aa9830C2C84d855Df1D61E12C256F6448b4", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 TRB-ETH", - "network": "eth", - "shortcut": "univ2TRBETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2UBTETH": { - "address": "0xB27dE0bA2abFbFdf15667a939f041b52118aF5Ba", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 UBT-ETH", - "network": "eth", - "shortcut": "univ2UBTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2UMAETH": { - "address": "0x88D97d199b9ED37C29D846d00D443De980832a22", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 UMA-ETH", - "network": "eth", - "shortcut": "univ2UMAETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2UNIETH": { - "address": "0xd3d2E2692501A5c9Ca623199D38826e513033a17", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 UNI-ETH", - "network": "eth", - "shortcut": "univ2UNIETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2UNIUSDETH": { - "address": "0xBD39b1F24B8960d3d7Cd2c5471d0493496888185", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 UNIUSD-ETH", - "network": "eth", - "shortcut": "univ2UNIUSDETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2USDCBUIDL": { - "address": "0xfd226C17A57f5eEF0b848D9b65bc53Cbbf7eD965", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 USDC-BUIDL", - "network": "eth", - "shortcut": "univ2USDCBUIDL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2USDCETH": { - "address": "0xB4e16d0168e52d35CaCD2c6185b44281Ec28C9Dc", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 USDC-ETH", - "network": "eth", - "shortcut": "univ2USDCETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2USDCUSDT": { - "address": "0x3041CbD36888bECc7bbCBc0045E3B1f144466f5f", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 USDC-USDT", - "network": "eth", - "shortcut": "univ2USDCUSDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2VLINKETH": { - "address": "0xb06d43B9f8eb4e64e8C40f81e5574b8AEa6E1cb7", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 VLINK-ETH", - "network": "eth", - "shortcut": "univ2VLINKETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2VLTETH": { - "address": "0x966053Ca4fca049173eb1F27E4cb168CCb794534", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 VLT-ETH", - "network": "eth", - "shortcut": "univ2VLTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2VXVETH": { - "address": "0x0c9C5DAF1D7CD8B10e9fC5e7a10762f0a8d1C335", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 VXV-ETH", - "network": "eth", - "shortcut": "univ2VXVETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2WBOMBETH": { - "address": "0xEE89ea23c18410F2b57e7abc6eb24cfcdE4f49B0", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 WBOMB-ETH", - "network": "eth", - "shortcut": "univ2WBOMBETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2WBTCETH": { - "address": "0xBb2b8038a1640196FbE3e38816F3e67Cba72D940", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 WBTC-ETH", - "network": "eth", - "shortcut": "univ2WBTCETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2WINGSETH": { - "address": "0x06d5b7380C65c889abd82D3Df8aC118AF31156a1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 WINGS-ETH", - "network": "eth", - "shortcut": "univ2WINGSETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2XBASEETH": { - "address": "0x231F3381D10478BfC2cA552195b9d8B15968B60c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 XBASE-ETH", - "network": "eth", - "shortcut": "univ2XBASEETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2XIOETH": { - "address": "0xE0cc5aFc0FF2c76183416Fb8d1a29f6799FB2cdF", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 XIO-ETH", - "network": "eth", - "shortcut": "univ2XIOETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2XNSETH": { - "address": "0xB5bdb51fDC635359181111439Efe2799Bc2336c6", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 XNS-ETH", - "network": "eth", - "shortcut": "univ2XNSETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2XORETH": { - "address": "0x01962144D41415cCA072900Fe87Bbe2992A99F10", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 XOR-ETH", - "network": "eth", - "shortcut": "univ2XORETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2XRTETH": { - "address": "0x3185626c14aCB9531d19560dECb9d3E5E80681b1", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 XRT-ETH", - "network": "eth", - "shortcut": "univ2XRTETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2YFIETH": { - "address": "0x2fDbAdf3C4D5A8666Bc06645B8358ab803996E28", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 YFI-ETH", - "network": "eth", - "shortcut": "univ2YFIETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2YFIIETH": { - "address": "0x8973Be4402bf0a39448f419c2D64bD3591Dd2299", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 YFII-ETH", - "network": "eth", - "shortcut": "univ2YFIIETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2sETHETH": { - "address": "0x598E740cda7C525080d3FCb9Fa7C4E1bd0044B34", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 sETH-ETH", - "network": "eth", - "shortcut": "univ2sETHETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2sUSDETH": { - "address": "0xf80758aB42C3B07dA84053Fd88804bCB6BAA4b5c", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 sUSD-ETH", - "network": "eth", - "shortcut": "univ2sUSDETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2sXAUUSDC": { - "address": "0x34a0216C5057bC18e5d34D4405284564eFd759b2", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 sXAU-USDC", - "network": "eth", - "shortcut": "univ2sXAUUSDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2uTOPIAETH": { - "address": "0x1a5314C1b3E17a781AaEF180BBa446d10E506E6B", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 uTOPIA-ETH", - "network": "eth", - "shortcut": "univ2uTOPIAETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:univ2wNXMETH": { - "address": "0x23bFf8ca20AAc06EFDf23cEe3B8ae296A30Dfd27", - "links": { - "Github": "https://github.com/Uniswap", - "Homepage": "https://www.uniswap.org" - }, - "marketcap_usd": 0, - "name": "Uniswap V2 wNXM-ETH", - "network": "eth", - "shortcut": "univ2wNXMETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usBAT": { - "address": "0x285f585106d15a313e7E6155Be4C5557d2deAAB1", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT", - "network": "eth", - "shortcut": "usBAT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usBAT2x": { - "address": "0x077539371bFa52a4194De833174D85ce218DBe3e", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT 2x", - "network": "eth", - "shortcut": "usBAT2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usBAT3x": { - "address": "0x071Bad913FC41eD10f617C8bbB4D12a4b4E544C5", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT 3x", - "network": "eth", - "shortcut": "usBAT3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usBAT4x": { - "address": "0x20222979117A9B39030048423557A61eB5aBD681", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short BAT 4x", - "network": "eth", - "shortcut": "usBAT4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usETH": { - "address": "0x29B9723A3D88fe4a0B78134FD209433443A36b23", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ETH", - "network": "eth", - "shortcut": "usETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usETH2x": { - "address": "0x3263B85A9E52CDae86E9B1560e2e04fB357c42AC", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ETH 2x", - "network": "eth", - "shortcut": "usETH2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usETH3x": { - "address": "0x18Fab5aFF3B3bb8AfB0840861d831C228C1cb68f", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ETH 3x", - "network": "eth", - "shortcut": "usETH3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usETH4x": { - "address": "0x0eBf28c5252124B898EcaA41A15Ca40db9Bf2bFc", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ETH 4x", - "network": "eth", - "shortcut": "usETH4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usKNC": { - "address": "0xa148AC0aF78B83b7c2CbD0caE93fBfb5DDE3EA1a", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC", - "network": "eth", - "shortcut": "usKNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usKNC2x": { - "address": "0x41750Acb926BDE7bc1DF6d21690d64EDFF9f20E7", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC 2x", - "network": "eth", - "shortcut": "usKNC2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usKNC3x": { - "address": "0x4052Ea0a92Be6a3fBEC83DCb0c96264377127805", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC 3x", - "network": "eth", - "shortcut": "usKNC3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usKNC4x": { - "address": "0xc8CC7e53e35cDa71af098360E800e9bB2Ee88F9e", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short KNC 4x", - "network": "eth", - "shortcut": "usKNC4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usREP": { - "address": "0xdBb0965046e142b4306ac453c7700BF768D6aC33", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short REP", - "network": "eth", - "shortcut": "usREP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usREP2x": { - "address": "0x9d94CAFb3cc67C5EfE660Fc988c51ABB711Cb7cA", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short REP 2x", - "network": "eth", - "shortcut": "usREP2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usREP3x": { - "address": "0x5AD7BBb48b852c1C798BDB99911CBd59a5bFacfE", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short REP 3x", - "network": "eth", - "shortcut": "usREP3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usREP4x": { - "address": "0x7eE12ffF0A8f975fCA5193825c215612A0eb07b7", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short REP 4x", - "network": "eth", - "shortcut": "usREP4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usWBTC": { - "address": "0x9DFC724c04f3ef1B9D539DCD0f8e4391A8b86FA1", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short WBTC", - "network": "eth", - "shortcut": "usWBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usWBTC2x": { - "address": "0x734317817bCf7254E6728B5A448A981D57d0a4fa", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short WBTC 2x", - "network": "eth", - "shortcut": "usWBTC2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usWBTC3x": { - "address": "0xf7F59e42eea2F2F4DB6d54Ca87d5a17111ae1a7f", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short WBTC 3x", - "network": "eth", - "shortcut": "usWBTC3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usWBTC4x": { - "address": "0x319ACBdB595867C1DC6aB9C5278Ea937aCDBeC58", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short WBTC 4x", - "network": "eth", - "shortcut": "usWBTC4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usZRX": { - "address": "0x43baf2ec0C4236B661a84FD40EC076546E3Bb9Fd", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ZRX", - "network": "eth", - "shortcut": "usZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usZRX2x": { - "address": "0xcedf540D158eB62dfdcde8398c3037b54705BcEB", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ZRX 2x", - "network": "eth", - "shortcut": "usZRX2x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usZRX3x": { - "address": "0x903214d3d3616d8Dc5cCB3d40A435DcA08F08010", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ZRX 3x", - "network": "eth", - "shortcut": "usZRX3x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:usZRX4x": { - "address": "0xde37db4269C6dfD4c81B9A11400d1BcBEeC06515", - "links": { - "Github": "https://github.com/bZxNetwork", - "Homepage": "https://bzx.network/" - }, - "marketcap_usd": 0, - "name": "bZx Perpetual Short ZRX 4x", - "network": "eth", - "shortcut": "usZRX4x", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:eth:veOGV": { - "address": "0x0C4576Ca1c365868E162554AF8e385dc3e7C66D9", - "links": { - "Github": "https://github.com/OriginProtocol/ousd-governance", - "Homepage": "https://governance.ousd.com" - }, - "marketcap_usd": 0, - "name": "Vote Escrowed Origin Dollar Governance", - "network": "eth", - "shortcut": "veOGV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "erc20:kov:DAI": { - "address": "0xC4375B7De8af5a38a93548eb8453a498222C4fF2", - "links": { - "Homepage": "https://faucet.kovan.radarrelay.com" - }, - "marketcap_usd": 0, - "name": "RadarRelay test Dai Stablecoin v1.0", - "network": "kov", - "shortcut": "DAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:kov:DGD": { - "address": "0xeeE3870657E4716670f185dF08652dd848fe8f7e", - "links": { - "Homepage": "https://faucet.kovan.radarrelay.com" - }, - "marketcap_usd": 0, - "name": "RadarRelay test Digix DAO Token", - "network": "kov", - "shortcut": "DGD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:kov:GNT": { - "address": "0xeF7FfF64389B814A946f3E92105513705CA6B990", - "links": { - "Homepage": "https://faucet.kovan.radarrelay.com" - }, - "marketcap_usd": 0, - "name": "RadarRelay test Golem Network Token", - "network": "kov", - "shortcut": "GNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:kov:MKR:1dad": { - "address": "0x1Dad4783cf3fe3085C1426157aB175A6119A04bA", - "links": { - "Homepage": "https://faucet.kovan.radarrelay.com" - }, - "marketcap_usd": 0, - "name": "RadarRelay test MakerDAO", - "network": "kov", - "shortcut": "MKR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:kov:MKR:aaf6": { - "address": "0xAaF64BFCC32d0F15873a02163e7E500671a4ffcD", - "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" - }, - "marketcap_usd": 0, - "name": "MakerDAO", - "network": "kov", - "shortcut": "MKR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:kov:MLN": { - "address": "0x323B5d4C32345ced77393B3530b1EeD0f346429D", - "links": { - "Homepage": "https://faucet.kovan.radarrelay.com" - }, - "marketcap_usd": 0, - "name": "RadarRelay test Melon Tokens", - "network": "kov", - "shortcut": "MLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:kov:REP": { - "address": "0xB18845c260F680d5B9D84649638813E342E4F8C9", - "links": { - "Homepage": "https://faucet.kovan.radarrelay.com" - }, - "marketcap_usd": 0, - "name": "RadarRelay test Augur Reputation Token", - "network": "kov", - "shortcut": "REP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:kov:RLC": { - "address": "0xc57538846Ec405Ea25Deb00e0f9B29a432D53507", - "links": { - "Github": "https://github.com/iExecBlockchainComputing/", - "Homepage": "https://iex.ec" - }, - "marketcap_usd": 0, - "name": "iExec RLC", - "network": "kov", - "shortcut": "RLC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:kov:ZRX": { - "address": "0x6Ff6C0Ff1d68b964901F986d4C9FA3ac68346570", - "links": { - "Homepage": "https://faucet.kovan.radarrelay.com" - }, - "marketcap_usd": 0, - "name": "RadarRelay test 0x Protocol Token", - "network": "kov", - "shortcut": "ZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:AETH": { - "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", - "links": { - "Github": "https://github.com/akashaProject", - "Homepage": "http://akasha.world" - }, - "marketcap_usd": 0, - "name": "AKASHA Tokens", - "network": "rin", - "shortcut": "AETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:BHNT": { - "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", - "links": { - "Github": "https://github.com/berlin-hack-and-tell", - "Homepage": "http://berlin.hackandtell.org" - }, - "marketcap_usd": 0, - "name": "Berlin Hack&Tell winner token", - "network": "rin", - "shortcut": "BHNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:CTGA": { - "address": "0x8B65d4B7ee3FFFA986C577F0F4b70a21BaE3dD54", - "links": { - "Homepage": "https://www.ctgcoin.org" - }, - "marketcap_usd": 0, - "name": "Convenient To Go", - "network": "rin", - "shortcut": "CTGA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:KC": { - "address": "0x275A5B346599b56917e7B1C9de019DCf9EaD861a", - "links": { - "Homepage": "https://baseblock.io/" - }, - "marketcap_usd": 0, - "name": "Karma Token", - "network": "rin", - "shortcut": "KC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:RDN": { - "address": "0x3615757011112560521536258c1E7325Ae3b48AE", - "links": { - "Homepage": "https://github.com/gnosis/dx-examples-liquidity-bots" - }, - "marketcap_usd": 0, - "name": "Raiden", - "network": "rin", - "shortcut": "RDN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:RLC": { - "address": "0xf1e6Ad3a7eF0c86c915F0feDF80eD851809bEA90", - "links": { - "Github": "https://github.com/iExecBlockchainComputing/", - "Homepage": "https://iex.ec" - }, - "marketcap_usd": 0, - "name": "iExec RLC", - "network": "rin", - "shortcut": "RLC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:WALL": { - "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", - "links": { - "Github": "https://github.com/walleth", - "Homepage": "https://walleth.org" - }, - "marketcap_usd": 0, - "name": "WALLETH Community-Token", - "network": "rin", - "shortcut": "WALL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rop:RLC": { - "address": "0x7314Dc4d7794b5E7894212CA1556ae8e3De58621", - "links": { - "Github": "https://github.com/iExecBlockchainComputing/", - "Homepage": "https://iex.ec" - }, - "marketcap_usd": 0, - "name": "iExec RLC", - "network": "rop", - "shortcut": "RLC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rop:dqr30": { - "address": "0xa1bAccA0e12D4091Ec1f92e7CaE3394CC9854D3D", - "links": { - "Homepage": "https://dqr-group.com/" - }, - "marketcap_usd": 0, - "name": "DQR", - "network": "rop", - "shortcut": "dqr30", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rsk:BITP": { - "address": "0x440CD83C160De5C96Ddb20246815eA44C7aBBCa8", - "links": { - "Github": "https://github.com/money-on-chain/", - "Homepage": "https://moneyonchain.com/bpro-hodl-earn-token" - }, - "marketcap_usd": 0, - "name": "BitPro", - "network": "rsk", - "shortcut": "BITP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rsk:BRZ": { - "address": "0xE355c280131dFaF18Bf1c3648aEe3C396dB6b5Fd", - "links": { - "Homepage": "https://www.brztoken.io" - }, - "marketcap_usd": 0, - "name": "Brezilian Digital Coin", - "network": "rsk", - "shortcut": "BRZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rsk:DOC": { - "address": "0xe700691dA7b9851F2F35f8b8182c69c53CcaD9Db", - "links": { - "Github": "https://github.com/money-on-chain/", - "Homepage": "https://moneyonchain.com/doc-bitcoin-backed-stablecoin" - }, - "marketcap_usd": 0, - "name": "Dollar on Chain", - "network": "rsk", - "shortcut": "DOC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rsk:FISH": { - "address": "0x055A902303746382FBB7D18f6aE0df56eFDc5213", - "links": { - "Github": "https://github.com/BabelFishProtocol/babelfish-phase-1", - "Homepage": "https://babelfish.money" - }, - "marketcap_usd": 0, - "name": "Babelfish", - "network": "rsk", - "shortcut": "FISH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rsk:RIF": { - "address": "0x2AcC95758f8b5F583470ba265EB685a8F45fC9D5", - "links": { - "Github": "https://github.com/riflabs", - "Homepage": "https://rifos.org" - }, - "marketcap_usd": 0, - "name": "RIF Token", - "network": "rsk", - "shortcut": "RIF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rsk:SOV": { - "address": "0xEFc78fc7d48b64958315949279Ba181c2114ABBd", - "links": { - "Github": "https://github.com/DistributedCollective", - "Homepage": "https://www.sovryn.app" - }, - "marketcap_usd": 0, - "name": "Sovryn Token", - "network": "rsk", - "shortcut": "SOV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rsk:XUSD": { - "address": "0xb5999795BE0EbB5bAb23144AA5FD6A02D080299F", - "links": { - "Github": "https://github.com/BabelFishProtocol/babelfish-phase-1", - "Homepage": "https://babelfish.money" - }, - "marketcap_usd": 0, - "name": "XUSD Babelfish Stablecoin", - "network": "rsk", - "shortcut": "XUSD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:ubq:CEFS": { - "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", - "links": { - "Homepage": "https://www.cryptopiashares.com" - }, - "marketcap_usd": 0, - "name": "CEFS", - "network": "ubq", - "shortcut": "CEFS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:ubq:GEO": { - "address": "0x500684CE0D4f04aBeDff3e54fCF8acC5E6CFc4bD", - "links": { - "Homepage": "https://geo.money" - }, - "marketcap_usd": 0, - "name": "GeoCoin", - "network": "ubq", - "shortcut": "GEO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:ubq:GRANS": { - "address": "0x0826180A4c981d5095Cb5c48BB2A098A44cf6f73", - "links": { - "Homepage": "https://https://10grans.cash" - }, - "marketcap_usd": 0, - "name": "10grans", - "network": "ubq", - "shortcut": "GRANS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:ubq:INK": { - "address": "0x7845fCbE28ac19ab7ec1C1D9674E34fdCB4917Db", - "links": { - "Homepage": "https://tentacle.finance" - }, - "marketcap_usd": 0, - "name": "INK", - "network": "ubq", - "shortcut": "INK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:ubq:QWARK": { - "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", - "links": { - "Homepage": "https://www.qwark.io" - }, - "marketcap_usd": 0, - "name": "QWARK", - "network": "ubq", - "shortcut": "QWARK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:ubq:RICKS": { - "address": "0x5e1715bB79805Bd672729760B3f7F34D6f485098", - "links": { - "Homepage": "https://picklericks.wixsite.com/picklewix" - }, - "marketcap_usd": 0, - "name": "RICKS", - "network": "ubq", - "shortcut": "RICKS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:ubq:SNARG": { - "address": "0x497E20586F86c35592FF8F65CdE94F296514C387", - "links": { - "Homepage": "https://snarg01.horse" - }, - "marketcap_usd": 0, - "name": "Snarg01", - "network": "ubq", - "shortcut": "SNARG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:$BNI": { - "links": { - "Homepage": "https://bitindi.org" - }, - "marketcap_usd": 0, - "name": "Bitindi", - "shortcut": "$BNI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:$OC": { - "links": { - "Homepage": "https://digitalnext.business/SocialSmartChain" - }, - "marketcap_usd": 0, - "name": "Social Smart Chain", - "shortcut": "$OC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:0XT": { - "links": { - "Homepage": "https://www.0xtrade.finance/" - }, - "marketcap_usd": 0, - "name": "0XTade", - "shortcut": "0XT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:0xF": { - "links": { - "Homepage": "https://freighttrust.com" - }, - "marketcap_usd": 0, - "name": "Freight Trust Network", - "shortcut": "0xF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AAC": { - "links": { - "Homepage": "https://www.acuteangle.com/" - }, - "marketcap_usd": 0, - "name": "Double-A Chain", - "shortcut": "AAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ACA": { - "links": { - "Homepage": "https://acala.network" - }, - "marketcap_usd": 0, - "name": "Acala Network", - "shortcut": "ACA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ACE": { - "links": { - "Homepage": "https://ace.fusionist.io/" - }, - "marketcap_usd": 0, - "name": "Endurance Smart Chain", - "shortcut": "ACE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AIOZ": { - "links": { - "Homepage": "https://aioz.network" - }, - "marketcap_usd": 33770520, - "name": "AIOZ Network", - "shortcut": "AIOZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AITD": { - "links": { - "Homepage": "https://www.aitd.io/" - }, - "marketcap_usd": 0, - "name": "Aitd", - "shortcut": "AITD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AKA": { - "links": { - "Homepage": "https://akroma.io" - }, - "marketcap_usd": 22416, - "name": "Akroma", - "shortcut": "AKA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ALOT": { - "links": { - "Homepage": "https://dexalot.com" - }, - "marketcap_usd": 0, - "name": "Dexalot Subnet", - "shortcut": "ALOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ALPH": { - "links": { - "Homepage": "https://alph.network" - }, - "marketcap_usd": 0, - "name": "Alph Network", - "shortcut": "ALPH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ALT": { - "links": { - "Homepage": "https://altcoinchain.org" - }, - "marketcap_usd": 0, - "name": "Altcoinchain", - "shortcut": "ALT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ALYX": { - "links": { - "Homepage": "https://www.alyxchain.com" - }, - "marketcap_usd": 0, - "name": "Alyx", - "shortcut": "ALYX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AMAX": { - "links": { - "Homepage": "https://amax.network" - }, - "marketcap_usd": 0, - "name": "Armonia Eva Chain", - "shortcut": "AMAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AMB": { - "links": { - "Homepage": "https://airdao.io" - }, - "marketcap_usd": 27921475, - "name": "AirDAO", - "shortcut": "AMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AMBROS": { - "links": { - "Homepage": "https://ambros.network" - }, - "marketcap_usd": 0, - "name": "Ambros Chain", - "shortcut": "AMBROS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AME": { - "links": { - "Homepage": "https://amechain.io/" - }, - "marketcap_usd": 0, - "name": "AME Chain", - "shortcut": "AME", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ANY": { - "links": { - "Homepage": "https://evm.anytype.io" - }, - "marketcap_usd": 0, - "name": "Anytype EVM Chain", - "shortcut": "ANY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:APTA": { - "links": { - "Homepage": "https://bloqs4good.com" - }, - "marketcap_usd": 0, - "name": "4GoodNetwork", - "shortcut": "APTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AQUA": { - "links": { - "Homepage": "https://aquachain.github.io" - }, - "marketcap_usd": 0, - "name": "Aquachain", - "shortcut": "AQUA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AR\u00c9V": { - "links": { - "Homepage": "" - }, - "marketcap_usd": 0, - "name": "Arevia", - "shortcut": "AR\u00c9V", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ASA": { - "links": { - "Homepage": "https://astranaut.io" - }, - "marketcap_usd": 0, - "name": "Astra", - "shortcut": "ASA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ASK": { - "links": { - "Homepage": "https://permission.io/" - }, - "marketcap_usd": 0, - "name": "Permission", - "shortcut": "ASK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ASTR": { - "links": { - "Homepage": "https://astar.network/" - }, - "marketcap_usd": 328182166, - "name": "Astar", - "shortcut": "ASTR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ATLR": { - "links": { - "Homepage": "https://1971.network/" - }, - "marketcap_usd": 0, - "name": "Atelier", - "shortcut": "ATLR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ATS": { - "links": { - "Homepage": "https://artis.eco" - }, - "marketcap_usd": 0, - "name": "ARTIS sigma1", - "shortcut": "ATS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AUX": { - "links": { - "Github": "https://github.com/auxiliumglobal", - "Homepage": "https://auxilium.global" - }, - "marketcap_usd": 0, - "name": "Auxilium Network", - "shortcut": "AUX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - } - ] - }, - "eth:AVAX": { - "links": { - "Homepage": "https://www.avax.network/" - }, - "marketcap_usd": 0, - "name": "Avalanche C-Chain", - "shortcut": "AVAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:AVS": { - "links": { - "Homepage": "https://avescoin.io" - }, - "marketcap_usd": 0, - "name": "Aves", - "shortcut": "AVS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BCS": { - "links": { - "Homepage": "https://blockchainstation.io" - }, - "marketcap_usd": 0, - "name": "BlockChain Station", - "shortcut": "BCS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BELLY": { - "links": { - "Homepage": "https://cryptopiece.online" - }, - "marketcap_usd": 0, - "name": "Openpiece", - "shortcut": "BELLY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BFC": { - "links": { - "Homepage": "https://thebifrost.io" - }, - "marketcap_usd": 94426967, - "name": "Bifrost", - "shortcut": "BFC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BG": { - "links": { - "Homepage": "https://beagle.chat/" - }, - "marketcap_usd": 0, - "name": "Beagle Messaging Chain", - "shortcut": "BG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BIT": { - "links": { - "Homepage": "https://mantle.xyz" - }, - "marketcap_usd": 0, - "name": "Mantle", - "shortcut": "BIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BITCI": { - "links": { - "Homepage": "https://www.bitcichain.com" - }, - "marketcap_usd": 0, - "name": "Bitcichain", - "shortcut": "BITCI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BNB": { - "links": { - "Homepage": "https://www.binance.org" - }, - "marketcap_usd": 47729156144, - "name": "Binance Smart Chain", - "shortcut": "BNB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BOA": { - "links": { - "Homepage": "https://docs.bosagora.org" - }, - "marketcap_usd": 10622097, - "name": "BOSagora", - "shortcut": "BOA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BOMB": { - "links": { - "Homepage": "https://www.bombchain.com" - }, - "marketcap_usd": 108635, - "name": "BOMB Chain", - "shortcut": "BOMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BOY": { - "links": { - "Homepage": "https://boyanet.org" - }, - "marketcap_usd": 0, - "name": "BON Network", - "shortcut": "BOY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BRB": { - "links": { - "Homepage": "https://www.beryl-bit.com" - }, - "marketcap_usd": 0, - "name": "BerylBit", - "shortcut": "BRB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BRNKC": { - "links": { - "Homepage": "https://bearnetwork.net" - }, - "marketcap_usd": 0, - "name": "Bear Network Chain", - "shortcut": "BRNKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BTA": { - "links": { - "Homepage": "https://bitcoinasset.io/" - }, - "marketcap_usd": 0, - "name": "Btachain", - "shortcut": "BTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BTCIX": { - "links": { - "Homepage": "https://bitcolojix.org" - }, - "marketcap_usd": 0, - "name": "BTCIX Network", - "shortcut": "BTCIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BTM": { - "links": { - "Homepage": "https://bmc.bytom.io/" - }, - "marketcap_usd": 0, - "name": "BMC", - "shortcut": "BTM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BTON": { - "links": { - "Homepage": "https://blocktoncoin.com" - }, - "marketcap_usd": 0, - "name": "Blockton Blockchain", - "shortcut": "BTON", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BTT": { - "links": { - "Homepage": "https://bittorrentchain.io/" - }, - "marketcap_usd": 0, - "name": "BitTorrent Chain", - "shortcut": "BTT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BTY": { - "links": { - "Homepage": "https://www.bityuan.com" - }, - "marketcap_usd": 0, - "name": "BitYuan", - "shortcut": "BTY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:BXN": { - "links": { - "Homepage": "https://blackfort.exchange" - }, - "marketcap_usd": 0, - "name": "BlackFort Exchange Network", - "shortcut": "BXN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:Brise": { - "links": { - "Homepage": "https://bitgert.com/" - }, - "marketcap_usd": 0, - "name": "Bitgert", - "shortcut": "Brise", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CAM:500": { - "links": { - "Homepage": "https://camino.foundation/" - }, - "marketcap_usd": 0, - "name": "Camino C-Chain", - "shortcut": "CAM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CANTO": { - "links": { - "Homepage": "https://canto.io" - }, - "marketcap_usd": 0, - "name": "Canto", - "shortcut": "CANTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CATE": { - "links": { - "Homepage": "https://catechain.com" - }, - "marketcap_usd": 0, - "name": "Catecoin Chain", - "shortcut": "CATE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CCNA": { - "links": { - "Homepage": "https://oortech.com" - }, - "marketcap_usd": 0, - "name": "Oort Ascraeus", - "shortcut": "CCNA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CCP": { - "links": { - "Homepage": "https://www.cryptocoinpay.co" - }, - "marketcap_usd": 0, - "name": "CryptoCoinPay", - "shortcut": "CCP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CELO": { - "links": { - "Homepage": "https://docs.celo.org/" - }, - "marketcap_usd": 370021788, - "name": "Celo", - "shortcut": "CELO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CEM": { - "links": { - "Homepage": "https://cemblockchain.com/" - }, - "marketcap_usd": 0, - "name": "Crypto Emergency", - "shortcut": "CEM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CFX": { - "links": { - "Homepage": "https://confluxnetwork.org" - }, - "marketcap_usd": 0, - "name": "Conflux eSpace", - "shortcut": "CFX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CIC": { - "links": { - "Homepage": "https://www.cicchain.net" - }, - "marketcap_usd": 0, - "name": "CIC Chain", - "shortcut": "CIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CLASS": { - "links": { - "Homepage": "https://velaverse.io" - }, - "marketcap_usd": 0, - "name": "Vela1 Chain", - "shortcut": "CLASS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CLD": { - "links": { - "Homepage": "https://cloudtx.finance" - }, - "marketcap_usd": 0, - "name": "CloudTx", - "shortcut": "CLD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CLO": { - "coinmarketcap_alias": "callisto-network", - "links": { - "Homepage": "https://callisto.network" - }, - "marketcap_usd": 9476443, - "name": "Callisto", - "shortcut": "CLO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CLV": { - "links": { - "Homepage": "https://clv.org" - }, - "marketcap_usd": 0, - "name": "CLV Parachain", - "shortcut": "CLV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CMEMO": { - "links": { - "Homepage": "www.memolabs.org" - }, - "marketcap_usd": 0, - "name": "Memo Smart Chain", - "shortcut": "CMEMO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CMP": { - "links": { - "Homepage": "https://caduceus.foundation/" - }, - "marketcap_usd": 0, - "name": "CMP-Mainnet", - "shortcut": "CMP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CNDL": { - "links": { - "Homepage": "https://candlelabs.org/" - }, - "marketcap_usd": 0, - "name": "Candle", - "shortcut": "CNDL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CONDOR": { - "links": { - "Homepage": "https://condor.systems" - }, - "marketcap_usd": 0, - "name": "Condor Test Network", - "shortcut": "CONDOR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CORE": { - "links": { - "Homepage": "https://www.coredao.org" - }, - "marketcap_usd": 0, - "name": "Core Blockchain", - "shortcut": "CORE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CPAY:21337": { - "links": { - "Homepage": "https://cennz.net" - }, - "marketcap_usd": 0, - "name": "CENNZnet Azalea", - "shortcut": "CPAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CPAY:3000": { - "links": { - "Homepage": "https://cennz.net" - }, - "marketcap_usd": 0, - "name": "CENNZnet Rata", - "shortcut": "CPAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CPAY:3001": { - "links": { - "Homepage": "https://cennz.net" - }, - "marketcap_usd": 0, - "name": "CENNZnet Nikau", - "shortcut": "CPAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CRAB": { - "links": { - "Homepage": "https://crab.network/" - }, - "marketcap_usd": 0, - "name": "Darwinia Crab Network", - "shortcut": "CRAB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CRC": { - "links": { - "Homepage": "https://github.com/ethereum-pocr/pocrnet" - }, - "marketcap_usd": 0, - "name": "PoCRNet", - "shortcut": "CRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CREDIT": { - "links": { - "Homepage": "https://creditsmartchain.com" - }, - "marketcap_usd": 238095, - "name": "Credit Smartchain", - "shortcut": "CREDIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CRO": { - "links": { - "Homepage": "https://cronos.org/" - }, - "marketcap_usd": 2011736262, - "name": "Cronos", - "shortcut": "CRO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CSB": { - "links": { - "Homepage": "https://crossbell.io" - }, - "marketcap_usd": 0, - "name": "Crossbell", - "shortcut": "CSB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CTEX": { - "links": { - "Homepage": "https://ctextoken.io" - }, - "marketcap_usd": 0, - "name": "Ctex Scan Blockchain", - "shortcut": "CTEX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CUBE": { - "links": { - "Homepage": "https://www.cube.network" - }, - "marketcap_usd": 0, - "name": "Cube Chain", - "shortcut": "CUBE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:CWN": { - "links": { - "Homepage": "https://cloudwalk.io" - }, - "marketcap_usd": 0, - "name": "CloudWalk", - "shortcut": "CWN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DAX": { - "links": { - "Homepage": "https://prodax.io/" - }, - "marketcap_usd": 0, - "name": "DAX CHAIN", - "shortcut": "DAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DEB": { - "links": { - "Homepage": "https://anduschain.io/" - }, - "marketcap_usd": 0, - "name": "Anduschain", - "shortcut": "DEB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DEL": { - "links": { - "Homepage": "https://decimalchain.com" - }, - "marketcap_usd": 0, - "name": "Decimal Smart Chain", - "shortcut": "DEL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DEV": { - "links": { - "Homepage": "https://docs.moonbeam.network/networks/testnet/" - }, - "marketcap_usd": 0, - "name": "Moonbase Alpha", - "shortcut": "DEV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DFI": { - "links": { - "Homepage": "https://meta.defichain.com/" - }, - "marketcap_usd": 0, - "name": "DeFiChain EVM Network", - "shortcut": "DFI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DIODE": { - "links": { - "Homepage": "https://diode.io/prenet" - }, - "marketcap_usd": 0, - "name": "Diode Prenet", - "shortcut": "DIODE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DKN": { - "links": { - "Homepage": "https://doken.dev/" - }, - "marketcap_usd": 0, - "name": "DoKEN Super Chain", - "shortcut": "DKN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DOGS": { - "links": { - "Homepage": "https://dogcoin.network" - }, - "marketcap_usd": 0, - "name": "Dogcoin", - "shortcut": "DOGS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DOINX": { - "links": { - "Homepage": "" - }, - "marketcap_usd": 0, - "name": "D-Chain", - "shortcut": "DOINX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DOS": { - "links": { - "Homepage": "http://doschain.io/" - }, - "marketcap_usd": 0, - "name": "Dos Fuji Subnet", - "shortcut": "DOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DRAC": { - "links": { - "Homepage": "https://drac.io/" - }, - "marketcap_usd": 0, - "name": "DRAC Network", - "shortcut": "DRAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DWU": { - "links": { - "Homepage": "https://decentralized-web.tech/dw_chain.php" - }, - "marketcap_usd": 0, - "name": "Decentralized Web", - "shortcut": "DWU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DX": { - "links": { - "Homepage": "https://www.dxchain.com/" - }, - "marketcap_usd": 0, - "name": "Dxchain", - "shortcut": "DX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DXT": { - "links": { - "Homepage": "https://dexit.network" - }, - "marketcap_usd": 0, - "name": "Dexit Network", - "shortcut": "DXT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:DYNO": { - "links": { - "Homepage": "https://dynoprotocol.com" - }, - "marketcap_usd": 0, - "name": "DYNO", - "shortcut": "DYNO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:Deh": { - "links": { - "Homepage": "https://dehvo.com" - }, - "marketcap_usd": 0, - "name": "Dehvo", - "shortcut": "Deh", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ECG": { - "links": { - "Homepage": "https://ssquad.games/" - }, - "marketcap_usd": 0, - "name": "SPS", - "shortcut": "ECG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ECO": { - "links": { - "Homepage": "https://ecoball.org" - }, - "marketcap_usd": 0, - "name": "Ecoball", - "shortcut": "ECO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ECS": { - "links": { - "Homepage": "https://ecredits.com" - }, - "marketcap_usd": 0, - "name": "eCredits", - "shortcut": "ECS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EDG": { - "links": { - "Homepage": "http://edgewa.re" - }, - "marketcap_usd": 4689635, - "name": "Edgeware", - "shortcut": "EDG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EGAZ": { - "links": { - "Homepage": "https://eticaprotocol.org" - }, - "marketcap_usd": 0, - "name": "Etica", - "shortcut": "EGAZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EGEM": { - "links": { - "Homepage": "https://egem.io" - }, - "marketcap_usd": 36379, - "name": "EtherGem", - "shortcut": "EGEM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EIDI": { - "links": { - "Homepage": "https://idchain.one/begin/" - }, - "marketcap_usd": 0, - "name": "IDChain", - "shortcut": "EIDI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EKTA": { - "links": { - "Homepage": "https://www.ekta.io" - }, - "marketcap_usd": 239141, - "name": "Ekta", - "shortcut": "EKTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ELA:20": { - "links": { - "Homepage": "https://www.elastos.org/" - }, - "marketcap_usd": 0, - "name": "Elastos Smart Chain", - "shortcut": "ELA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ELV": { - "links": { - "Homepage": "https://eluv.io" - }, - "marketcap_usd": 0, - "name": "Eluvio Content Fabric", - "shortcut": "ELV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EMPIRE": { - "links": { - "Homepage": "https://www.empirenetwork.io/" - }, - "marketcap_usd": 0, - "name": "Empire Network", - "shortcut": "EMPIRE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ENTER": { - "links": { - "Homepage": "https://entercoin.net" - }, - "marketcap_usd": 0, - "name": "EnterChain", - "shortcut": "ENTER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ES": { - "links": { - "Homepage": "https://eraswap.info/" - }, - "marketcap_usd": 0, - "name": "EraSwap", - "shortcut": "ES", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ESN": { - "coinmarketcap_alias": "ethersocial", - "links": { - "Homepage": "https://ethersocial.org" - }, - "marketcap_usd": 0, - "name": "Ethersocial Network", - "shortcut": "ESN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ETC": { - "links": { - "Homepage": "https://ethereumclassic.org" - }, - "marketcap_usd": 2950948570, - "name": "Ethereum Classic", - "shortcut": "ETC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "eth:ETH:1": { - "links": { - "Homepage": "https://ethereum.org" - }, - "marketcap_usd": 199115648941, - "name": "Ethereum", - "shortcut": "ETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "eth:ETHF": { - "links": { - "Homepage": "https://etherfair.org" - }, - "marketcap_usd": 0, - "name": "ethereum Fair", - "shortcut": "ETHF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ETHO": { - "links": { - "Homepage": "https://ethoprotocol.com" - }, - "marketcap_usd": 910129, - "name": "Etho Protocol", - "shortcut": "ETHO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ETI": { - "links": { - "Homepage": "https://einc.io" - }, - "marketcap_usd": 0, - "name": "EtherInc", - "shortcut": "ETI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ETL": { - "links": { - "Homepage": "https://etherlite.org" - }, - "marketcap_usd": 0, - "name": "EtherLite Chain", - "shortcut": "ETL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ETMP": { - "links": { - "Homepage": "https://etm.network" - }, - "marketcap_usd": 0, - "name": "Ennothem", - "shortcut": "ETMP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ETND": { - "links": { - "Homepage": "https://www.etnd.pro" - }, - "marketcap_usd": 0, - "name": "ETND Chain", - "shortcut": "ETND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EUN": { - "links": { - "Homepage": "https://eurus.network" - }, - "marketcap_usd": 0, - "name": "Eurus", - "shortcut": "EUN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EVA": { - "links": { - "Homepage": "https://evanesco.org/" - }, - "marketcap_usd": 0, - "name": "Evanesco", - "shortcut": "EVA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EVC": { - "links": { - "Homepage": "https://evrice.com" - }, - "marketcap_usd": 0, - "name": "Evrice Network", - "shortcut": "EVC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EVMOS": { - "links": { - "Homepage": "https://evmos.org" - }, - "marketcap_usd": 0, - "name": "Evmos", - "shortcut": "EVMOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EWT": { - "links": { - "Homepage": "https://energyweb.org" - }, - "marketcap_usd": 0, - "name": "Energy Web Chain", - "shortcut": "EWT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EXL": { - "links": { - "Homepage": "" - }, - "marketcap_usd": 0, - "name": "Excoincial Chain", - "shortcut": "EXL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EXP": { - "links": { - "Homepage": "https://expanse.tech" - }, - "marketcap_usd": 0, - "name": "Expanse Network", - "shortcut": "EXP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:EZC": { - "links": { - "Homepage": "https://ezchain.com" - }, - "marketcap_usd": 0, - "name": "EZChain C-Chain", - "shortcut": "EZC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FETH": { - "links": { - "Homepage": "https://www.factory127.com" - }, - "marketcap_usd": 0, - "name": "Factory 127", - "shortcut": "FETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FIL": { - "links": { - "Homepage": "https://filecoin.io" - }, - "marketcap_usd": 0, - "name": "Filecoin -", - "shortcut": "FIL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FIN": { - "links": { - "Homepage": "https://primusmoney.com" - }, - "marketcap_usd": 0, - "name": "Firenze test network", - "shortcut": "FIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FIRE:529": { - "links": { - "Homepage": "https://thefirechain.com" - }, - "marketcap_usd": 0, - "name": "Firechain", - "shortcut": "FIRE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FITFI": { - "links": { - "Homepage": "https://step.network" - }, - "marketcap_usd": 0, - "name": "Step Network", - "shortcut": "FITFI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FLA": { - "links": { - "Homepage": "https://www.flaexchange.top" - }, - "marketcap_usd": 0, - "name": "Flachain", - "shortcut": "FLA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FLR": { - "links": { - "Homepage": "https://flare.xyz" - }, - "marketcap_usd": 467857625, - "name": "Flare", - "shortcut": "FLR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FNCY": { - "links": { - "Homepage": "https://fncyscan.fncy.world" - }, - "marketcap_usd": 38806503, - "name": "FNCY", - "shortcut": "FNCY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FREN": { - "links": { - "Homepage": "https://frenchain.app" - }, - "marketcap_usd": 0, - "name": "Frenchain", - "shortcut": "FREN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FSN": { - "links": { - "Homepage": "https://fusion.org" - }, - "marketcap_usd": 26079174, - "name": "Fusion", - "shortcut": "FSN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FST": { - "links": { - "Homepage": "https://fantasia.technology/" - }, - "marketcap_usd": 0, - "name": "Fantasia Chain", - "shortcut": "FST", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FTM": { - "links": { - "Homepage": "https://fantom.foundation" - }, - "marketcap_usd": 0, - "name": "Fantom Opera", - "shortcut": "FTM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FUSE": { - "links": { - "Homepage": "https://fuse.io/" - }, - "marketcap_usd": 0, - "name": "Fuse", - "shortcut": "FUSE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:FX": { - "links": { - "Homepage": "https://functionx.io/" - }, - "marketcap_usd": 0, - "name": "F(x)Core", - "shortcut": "FX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GAR:90": { - "links": { - "Homepage": "https://garizon.com" - }, - "marketcap_usd": 0, - "name": "Garizon Stage0", - "shortcut": "GAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GCD": { - "links": { - "Homepage": "https://gton.capital" - }, - "marketcap_usd": 0, - "name": "GTON", - "shortcut": "GCD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GEN": { - "links": { - "Homepage": "https://www.xixoio.com/" - }, - "marketcap_usd": 0, - "name": "Blockchain Genesis", - "shortcut": "GEN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GLMR": { - "links": { - "Homepage": "https://moonbeam.network/networks/moonbeam/" - }, - "marketcap_usd": 255322438, - "name": "Moonbeam", - "shortcut": "GLMR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GLQ": { - "links": { - "Homepage": "https://graphlinq.io" - }, - "marketcap_usd": 0, - "name": "Graphlinq Blockchain", - "shortcut": "GLQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GMMT": { - "links": { - "Homepage": "https://gmmtchain.io/" - }, - "marketcap_usd": 0, - "name": "Giant Mammoth", - "shortcut": "GMMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GNC": { - "links": { - "Homepage": "https://genesis-gn.com" - }, - "marketcap_usd": 0, - "name": "Genesis Coin", - "shortcut": "GNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GO": { - "links": { - "Homepage": "https://gochain.io" - }, - "marketcap_usd": 9893895, - "name": "GoChain", - "shortcut": "GO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GOLDT": { - "links": { - "Homepage": "https://www.hammerchain.io" - }, - "marketcap_usd": 0, - "name": "Hammer Chain", - "shortcut": "GOLDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GZN": { - "links": { - "Homepage": "https://token.gearzero.ca/mainnet" - }, - "marketcap_usd": 0, - "name": "Gear Zero Network", - "shortcut": "GZN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:GooD": { - "links": { - "Homepage": "https://www.goodata.org" - }, - "marketcap_usd": 0, - "name": "GoodData", - "shortcut": "GooD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HAIC": { - "links": { - "Homepage": "https://www.haichain.io/" - }, - "marketcap_usd": 0, - "name": "Haic", - "shortcut": "HAIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HBAR:295": { - "links": { - "Homepage": "https://hedera.com" - }, - "marketcap_usd": 1876574858, - "name": "Hedera", - "shortcut": "HBAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HMND": { - "links": { - "Homepage": "https://humanode.io" - }, - "marketcap_usd": 0, - "name": "Humanode", - "shortcut": "HMND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HO": { - "links": { - "Homepage": "https://halo.land/#/" - }, - "marketcap_usd": 0, - "name": "HALO", - "shortcut": "HO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HOO": { - "links": { - "Homepage": "https://www.hoosmartchain.com" - }, - "marketcap_usd": 0, - "name": "Hoo Smart Chain", - "shortcut": "HOO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HOP": { - "links": { - "Homepage": "https://www.DataHopper.com" - }, - "marketcap_usd": 0, - "name": "DataHopper", - "shortcut": "HOP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HPB": { - "links": { - "Homepage": "https://hpb.io" - }, - "marketcap_usd": 957132, - "name": "High Performance Blockchain", - "shortcut": "HPB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HT": { - "links": { - "Homepage": "https://www.hecochain.com" - }, - "marketcap_usd": 0, - "name": "Huobi ECO Chain", - "shortcut": "HT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HTML": { - "links": { - "Homepage": "https://htmlcoin.com" - }, - "marketcap_usd": 0, - "name": "Htmlcoin", - "shortcut": "HTML", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:HTZ": { - "links": { - "Homepage": "https://www.hertz-network.com" - }, - "marketcap_usd": 124618, - "name": "Hertz Network", - "shortcut": "HTZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ILT": { - "links": { - "Homepage": "https://iolite.io" - }, - "marketcap_usd": 0, - "name": "IOLite", - "shortcut": "ILT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:IMV": { - "links": { - "Homepage": "https://imversed.com" - }, - "marketcap_usd": 0, - "name": "Imversed", - "shortcut": "IMV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:IORA": { - "links": { - "Homepage": "https://iorachain.com" - }, - "marketcap_usd": 0, - "name": "Iora Chain", - "shortcut": "IORA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:IOTX": { - "links": { - "Homepage": "https://iotex.io" - }, - "marketcap_usd": 0, - "name": "IoTeX Network", - "shortcut": "IOTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:IPOS": { - "links": { - "Homepage": "https://iposlab.com" - }, - "marketcap_usd": 0, - "name": "IPOS Network", - "shortcut": "IPOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ISLM": { - "links": { - "Homepage": "https://islamiccoin.net" - }, - "marketcap_usd": 0, - "name": "Haqq Network", - "shortcut": "ISLM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:IVAR": { - "links": { - "Homepage": "https://ivarex.com" - }, - "marketcap_usd": 0, - "name": "IVAR Chain", - "shortcut": "IVAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:J": { - "links": { - "Homepage": "https://j.blockcoach.com:8089" - }, - "marketcap_usd": 0, - "name": "Metacodechain", - "shortcut": "J", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:JBC": { - "links": { - "Homepage": "https://jibchain.net" - }, - "marketcap_usd": 0, - "name": "JIBCHAIN L1", - "shortcut": "JBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:JEWEL:53935": { - "links": { - "Homepage": "https://defikingdoms.com" - }, - "marketcap_usd": 0, - "name": "DFK Chain", - "shortcut": "JEWEL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:JINDA": { - "links": { - "Homepage": "https://blockchain.or.th" - }, - "marketcap_usd": 0, - "name": "TBSI", - "shortcut": "JINDA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:JOYS": { - "links": { - "Homepage": "https://joys.digital" - }, - "marketcap_usd": 0, - "name": "Joys Digital", - "shortcut": "JOYS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KAI": { - "links": { - "Homepage": "https://kardiachain.io" - }, - "marketcap_usd": 28444438, - "name": "KardiaChain", - "shortcut": "KAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KAR": { - "links": { - "Homepage": "https://karura.network" - }, - "marketcap_usd": 0, - "name": "Karura Network", - "shortcut": "KAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KAVA": { - "links": { - "Homepage": "https://www.kava.io" - }, - "marketcap_usd": 367913718, - "name": "Kava EVM", - "shortcut": "KAVA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KCS": { - "links": { - "Homepage": "https://kcc.io" - }, - "marketcap_usd": 0, - "name": "KCC", - "shortcut": "KCS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KEK": { - "links": { - "Homepage": "https://kekchain.com" - }, - "marketcap_usd": 0, - "name": "Kekchain", - "shortcut": "KEK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KLAY": { - "links": { - "Homepage": "https://www.klaytn.com/" - }, - "marketcap_usd": 890666429, - "name": "Klaytn", - "shortcut": "KLAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KSX": { - "links": { - "Homepage": "https://sherpax.io/" - }, - "marketcap_usd": 0, - "name": "Sherpax", - "shortcut": "KSX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KTO:2559": { - "links": { - "Homepage": "https://www.kortho.io/" - }, - "marketcap_usd": 0, - "name": "Kortho", - "shortcut": "KTO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:KUB": { - "links": { - "Homepage": "https://www.bitkubchain.com/" - }, - "marketcap_usd": 0, - "name": "Bitkub Chain", - "shortcut": "KUB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:L1": { - "links": { - "Homepage": "https://www.genesisl1.com" - }, - "marketcap_usd": 0, - "name": "Genesis L1", - "shortcut": "L1", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:L99": { - "links": { - "Homepage": "https://luckynetwork.org" - }, - "marketcap_usd": 0, - "name": "Lucky Network", - "shortcut": "L99", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:LA": { - "links": { - "Homepage": "https://lachain.io" - }, - "marketcap_usd": 0, - "name": "LACHAIN", - "shortcut": "LA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:LAVA": { - "links": { - "Homepage": "https://elysiumscan.vulcanforged.com" - }, - "marketcap_usd": 0, - "name": "Elysium", - "shortcut": "LAVA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:LISINS": { - "links": { - "Homepage": "https://lisinski.online" - }, - "marketcap_usd": 0, - "name": "Lisinski", - "shortcut": "LISINS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:LUCID": { - "links": { - "Homepage": "https://lucidcoin.io" - }, - "marketcap_usd": 0, - "name": "Lucid Blockchain", - "shortcut": "LUCID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:LUDAN": { - "links": { - "Homepage": "https://www.ludan.org/" - }, - "marketcap_usd": 0, - "name": "LUDAN", - "shortcut": "LUDAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:LYC": { - "links": { - "Homepage": "https://lycanchain.com" - }, - "marketcap_usd": 0, - "name": "Lycan Chain", - "shortcut": "LYC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MAI": { - "links": { - "Homepage": "" - }, - "marketcap_usd": 0, - "name": "maistestsubnet", - "shortcut": "MAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MAP": { - "links": { - "Homepage": "https://maplabs.io" - }, - "marketcap_usd": 0, - "name": "MAP", - "shortcut": "MAP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MARO": { - "links": { - "Homepage": "https://ma.ro/" - }, - "marketcap_usd": 27306090, - "name": "MARO Blockchain", - "shortcut": "MARO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MAS": { - "links": { - "Homepage": "https://masterbank.org" - }, - "marketcap_usd": 0, - "name": "Mas", - "shortcut": "MAS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MATH": { - "links": { - "Homepage": "https://mathchain.org" - }, - "marketcap_usd": 17614958, - "name": "MathChain", - "shortcut": "MATH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MATIC": { - "links": { - "Homepage": "https://polygon.technology/" - }, - "marketcap_usd": 10673372779, - "name": "Polygon", - "shortcut": "MATIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MEER": { - "links": { - "Homepage": "https://github.com/Qitmeer" - }, - "marketcap_usd": 0, - "name": "Qitmeer", - "shortcut": "MEER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:META": { - "links": { - "Homepage": "https://metadium.com" - }, - "marketcap_usd": 61668315, - "name": "Metadium", - "shortcut": "META", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:METAD": { - "links": { - "Homepage": "https://docs.metaplayer.one/" - }, - "marketcap_usd": 0, - "name": "Metaplayerone", - "shortcut": "METAD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:METIS": { - "links": { - "Homepage": "https://www.metis.io" - }, - "marketcap_usd": 0, - "name": "Metis Andromeda", - "shortcut": "METIS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MINTME": { - "links": { - "Homepage": "https://www.mintme.com" - }, - "marketcap_usd": 0, - "name": "MintMe.com Coin", - "shortcut": "MINTME", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MIX": { - "links": { - "Homepage": "https://mix-blockchain.org" - }, - "marketcap_usd": 0, - "name": "Mix", - "shortcut": "MIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MMT": { - "links": { - "Homepage": "https://mmtchain.io/" - }, - "marketcap_usd": 0, - "name": "Mammoth", - "shortcut": "MMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MOLE": { - "links": { - "Homepage": "https://github.com/Jdubedition/molereum" - }, - "marketcap_usd": 0, - "name": "Molereum Network", - "shortcut": "MOLE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MOVR": { - "links": { - "Homepage": "https://moonbeam.network/networks/moonriver/" - }, - "marketcap_usd": 63677633, - "name": "Moonriver", - "shortcut": "MOVR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MTR": { - "links": { - "Homepage": "https://www.meter.io" - }, - "marketcap_usd": 0, - "name": "Meter", - "shortcut": "MTR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MTT": { - "links": { - "Homepage": "https://metadot.network" - }, - "marketcap_usd": 0, - "name": "MetaDot", - "shortcut": "MTT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MTV": { - "links": { - "Homepage": "https://mtv.ac" - }, - "marketcap_usd": 4779941, - "name": "MultiVAC", - "shortcut": "MTV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MUSIC": { - "links": { - "Homepage": "https://musicoin.tw" - }, - "marketcap_usd": 0, - "name": "Musicoin", - "shortcut": "MUSIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:MYTH": { - "links": { - "Homepage": "https://mythicalgames.com/" - }, - "marketcap_usd": 0, - "name": "Mythical Chain", - "shortcut": "MYTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:NEON:245022934": { - "links": { - "Homepage": "https://neon-labs.org" - }, - "marketcap_usd": 0, - "name": "Neon EVM", - "shortcut": "NEON", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:NEW": { - "links": { - "Homepage": "https://www.newtonproject.org/" - }, - "marketcap_usd": 3728171, - "name": "Newton", - "shortcut": "NEW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:NRG": { - "links": { - "Homepage": "https://www.energi.world/" - }, - "marketcap_usd": 12197414, - "name": "Energi", - "shortcut": "NRG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:NTT": { - "links": { - "Homepage": "https://ntity.io" - }, - "marketcap_usd": 0, - "name": "Ntity", - "shortcut": "NTT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:NULS": { - "links": { - "Homepage": "https://nuls.io" - }, - "marketcap_usd": 27852400, - "name": "ENULS", - "shortcut": "NULS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:NUM": { - "links": { - "Homepage": "https://numbersprotocol.io" - }, - "marketcap_usd": 0, - "name": "Numbers", - "shortcut": "NUM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:NetZ": { - "links": { - "Homepage": "https://mainnetz.io" - }, - "marketcap_usd": 0, - "name": "MainnetZ", - "shortcut": "NetZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OAC": { - "links": { - "Homepage": "https://scan.oasischain.io" - }, - "marketcap_usd": 0, - "name": "OasisChain", - "shortcut": "OAC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OCTA": { - "links": { - "Homepage": "https://octa.space" - }, - "marketcap_usd": 0, - "name": "OctaSpace", - "shortcut": "OCTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OHO": { - "links": { - "Homepage": "https://oho.ai" - }, - "marketcap_usd": 0, - "name": "OHO", - "shortcut": "OHO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OKT": { - "links": { - "Homepage": "https://www.okex.com/okc" - }, - "marketcap_usd": 0, - "name": "OKXChain", - "shortcut": "OKT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OLO": { - "links": { - "Homepage": "https://ibdt.io" - }, - "marketcap_usd": 0, - "name": "TOOL Global", - "shortcut": "OLO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OLT": { - "links": { - "Homepage": "https://oneledger.io" - }, - "marketcap_usd": 2321403, - "name": "OneLedger", - "shortcut": "OLT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OM": { - "links": { - "Homepage": "https://omplatform.com/" - }, - "marketcap_usd": 0, - "name": "OM Platform", - "shortcut": "OM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OMAX": { - "links": { - "Homepage": "https://www.omaxcoin.com/" - }, - "marketcap_usd": 0, - "name": "Omax", - "shortcut": "OMAX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OMC": { - "links": { - "Homepage": "https://omchain.io" - }, - "marketcap_usd": 2203543, - "name": "omChain", - "shortcut": "OMC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ONE:1666600000": { - "links": { - "Homepage": "https://www.harmony.one/" - }, - "marketcap_usd": 283158162, - "name": "Harmony", - "shortcut": "ONE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ONE:1666600001": { - "links": { - "Homepage": "https://www.harmony.one/" - }, - "marketcap_usd": 283158162, - "name": "Harmony", - "shortcut": "ONE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ONE:1666600002": { - "links": { - "Homepage": "https://www.harmony.one/" - }, - "marketcap_usd": 283158162, - "name": "Harmony", - "shortcut": "ONE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ONE:1666600003": { - "links": { - "Homepage": "https://www.harmony.one/" - }, - "marketcap_usd": 283158162, - "name": "Harmony", - "shortcut": "ONE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ONG": { - "links": { - "Homepage": "https://ont.io/" - }, - "marketcap_usd": 220559219, - "name": "Ontology", - "shortcut": "ONG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ONUS": { - "links": { - "Homepage": "https://onuschain.io" - }, - "marketcap_usd": 42435453, - "name": "ONUS Chain", - "shortcut": "ONUS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OPC": { - "links": { - "Homepage": "https://www.openchain.live" - }, - "marketcap_usd": 0, - "name": "OpenChain", - "shortcut": "OPC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OPN": { - "links": { - "Homepage": "" - }, - "marketcap_usd": 0, - "name": "Susono", - "shortcut": "OPN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ORL": { - "links": { - "Homepage": "https://orlchain.com" - }, - "marketcap_usd": 0, - "name": "Orlando Chain", - "shortcut": "ORL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OTP": { - "links": { - "Homepage": "https://parachain.origintrail.io" - }, - "marketcap_usd": 0, - "name": "OriginTrail Parachain", - "shortcut": "OTP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OXYN": { - "links": { - "Homepage": "https://beta.opulent-x.com" - }, - "marketcap_usd": 0, - "name": "Opulent-X BETA", - "shortcut": "OXYN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:OY": { - "links": { - "Homepage": "https://www.oychain.io" - }, - "marketcap_usd": 0, - "name": "OYchain", - "shortcut": "OY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PALM": { - "links": { - "Homepage": "https://palm.io" - }, - "marketcap_usd": 0, - "name": "Palm", - "shortcut": "PALM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PDC": { - "links": { - "Homepage": "https://ipdc.io" - }, - "marketcap_usd": 0, - "name": "PDC", - "shortcut": "PDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PETH": { - "links": { - "Homepage": "https://primusmoney.com" - }, - "marketcap_usd": 0, - "name": "PrimusChain", - "shortcut": "PETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PFT:909": { - "links": { - "Homepage": "https://portalfantasy.io" - }, - "marketcap_usd": 0, - "name": "Portal Fantasy Chain", - "shortcut": "PFT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PHT": { - "links": { - "Homepage": "https://explorer.lightstreams.io" - }, - "marketcap_usd": 0, - "name": "Lightstreams", - "shortcut": "PHT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PHX": { - "links": { - "Homepage": "https://cryptophoenix.org/phoenix" - }, - "marketcap_usd": 0, - "name": "Phoenix", - "shortcut": "PHX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PIRL": { - "links": { - "Homepage": "https://pirl.io" - }, - "marketcap_usd": 0, - "name": "Pirl", - "shortcut": "PIRL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PIX": { - "links": { - "Homepage": "https://chain.pixie.xyz" - }, - "marketcap_usd": 0, - "name": "Pixie Chain", - "shortcut": "PIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PLQ": { - "links": { - "Homepage": "https://planq.network" - }, - "marketcap_usd": 0, - "name": "Planq", - "shortcut": "PLQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PLS": { - "links": { - "Homepage": "https://pulsechain.com/" - }, - "marketcap_usd": 0, - "name": "PulseChain", - "shortcut": "PLS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:POA": { - "links": { - "Homepage": "https://poa.network" - }, - "marketcap_usd": 8185146, - "name": "POA Network Core", - "shortcut": "POA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:POLIS": { - "links": { - "Homepage": "https://polis.tech" - }, - "marketcap_usd": 92704, - "name": "Polis", - "shortcut": "POLIS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:POM": { - "links": { - "Homepage": "https://proofofmemes.org" - }, - "marketcap_usd": 0, - "name": "Proof Of Memes", - "shortcut": "POM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:POP": { - "links": { - "Homepage": "https://popcateum.org" - }, - "marketcap_usd": 0, - "name": "Popcateum", - "shortcut": "POP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PRB": { - "links": { - "Homepage": "https://net.paribu.com" - }, - "marketcap_usd": 0, - "name": "Paribu Net", - "shortcut": "PRB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PSC": { - "links": { - "Homepage": "https://www.polysmartchain.com/" - }, - "marketcap_usd": 0, - "name": "PolySmartChain", - "shortcut": "PSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:PTX": { - "links": { - "Homepage": "https://www.pandoproject.org/" - }, - "marketcap_usd": 0, - "name": "PandoProject", - "shortcut": "PTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QDC": { - "links": { - "Homepage": "https://quadrans.io" - }, - "marketcap_usd": 0, - "name": "Quadrans Blockchain", - "shortcut": "QDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKA": { - "links": { - "Homepage": "https://qkacoin.org" - }, - "marketcap_usd": 0, - "name": "Quokkacoin", - "shortcut": "QKA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100000": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100001": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100002": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100003": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100004": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100005": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100006": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100007": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKC:100008": { - "links": { - "Homepage": "https://www.quarkchain.io" - }, - "marketcap_usd": 74074939, - "name": "QuarkChain", - "shortcut": "QKC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QKI": { - "links": { - "Homepage": "https://quarkblockchain.org/" - }, - "marketcap_usd": 0, - "name": "quarkblockchain", - "shortcut": "QKI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:QOM": { - "links": { - "Homepage": "https://qom.one" - }, - "marketcap_usd": 0, - "name": "QL1", - "shortcut": "QOM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:RBD": { - "links": { - "Homepage": "https://www.wegochain.io" - }, - "marketcap_usd": 0, - "name": "Wegochain Rubidium", - "shortcut": "RBD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:RBTC": { - "links": { - "Homepage": "https://rsk.co" - }, - "marketcap_usd": 0, - "name": "RSK", - "shortcut": "RBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:REAL": { - "links": { - "Homepage": "https://www.rclsidechain.com/" - }, - "marketcap_usd": 0, - "name": "Realchain", - "shortcut": "REAL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:REDLC": { - "links": { - "Homepage": "https://redlight.finance/" - }, - "marketcap_usd": 0, - "name": "Redlight Chain", - "shortcut": "REDLC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:REI:47805": { - "links": { - "Homepage": "https://rei.network/" - }, - "marketcap_usd": 32752198, - "name": "REI Network", - "shortcut": "REI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:RESIN": { - "links": { - "Homepage": "https://resincoin.dev" - }, - "marketcap_usd": 0, - "name": "ResinCoin", - "shortcut": "RESIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:RING": { - "links": { - "Homepage": "https://darwinia.network/" - }, - "marketcap_usd": 7420230, - "name": "Darwinia Network", - "shortcut": "RING", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:RNA": { - "links": { - "Homepage": "https://scan.genechain.io/" - }, - "marketcap_usd": 0, - "name": "GeneChain", - "shortcut": "RNA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ROC:1288": { - "links": { - "Homepage": "https://docs.moonbeam.network/learn/platform/networks/overview/" - }, - "marketcap_usd": 0, - "name": "Moonrock", - "shortcut": "ROC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:RPG": { - "links": { - "Homepage": "https://rangersprotocol.com" - }, - "marketcap_usd": 1063873, - "name": "Rangers Protocol", - "shortcut": "RPG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:RUPX": { - "links": { - "Homepage": "https://www.rupx.io" - }, - "marketcap_usd": 0, - "name": "Rupaya", - "shortcut": "RUPX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SAMA": { - "links": { - "Homepage": "https://moonsama.com" - }, - "marketcap_usd": 0, - "name": "Exosama Network", - "shortcut": "SAMA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SDN": { - "links": { - "Homepage": "https://shiden.astar.network/" - }, - "marketcap_usd": 0, - "name": "Shiden", - "shortcut": "SDN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SEED": { - "links": { - "Homepage": "https://www.seedcoin.network/" - }, - "marketcap_usd": 0, - "name": "SeedCoin-Network", - "shortcut": "SEED", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SETM": { - "links": { - "Homepage": "https://setheum.xyz" - }, - "marketcap_usd": 0, - "name": "Setheum", - "shortcut": "SETM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SFL": { - "links": { - "Homepage": "https://hupayx.io" - }, - "marketcap_usd": 0, - "name": "Taycan", - "shortcut": "SFL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SGB": { - "links": { - "Homepage": "https://flare.xyz" - }, - "marketcap_usd": 0, - "name": "Songbird Canary-Network", - "shortcut": "SGB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SHIB": { - "links": { - "Homepage": "https://www.shibachain.net" - }, - "marketcap_usd": 0, - "name": "ShibaChain", - "shortcut": "SHIB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SINSO": { - "links": { - "Homepage": "https://sinso.io" - }, - "marketcap_usd": 0, - "name": "AmStar", - "shortcut": "SINSO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SKU": { - "links": { - "Homepage": "https://clover.finance/sakura" - }, - "marketcap_usd": 687504, - "name": "Sakura", - "shortcut": "SKU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SMT": { - "links": { - "Homepage": "https://smartmesh.io" - }, - "marketcap_usd": 2755986, - "name": "SmartMesh", - "shortcut": "SMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SNT": { - "links": { - "Homepage": "https://novanetwork.io" - }, - "marketcap_usd": 0, - "name": "Nova Network", - "shortcut": "SNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SOTER:68": { - "links": { - "Homepage": "https://www.soterone.com" - }, - "marketcap_usd": 0, - "name": "SoterOne", - "shortcut": "SOTER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SPARK": { - "links": { - "Homepage": "https://docs.fuse.io/general/fuse-network-blockchain/fuse-testnet" - }, - "marketcap_usd": 0, - "name": "Fuse Sparknet", - "shortcut": "SPARK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SPOA": { - "links": { - "Homepage": "https://poa.network" - }, - "marketcap_usd": 0, - "name": "POA Network Sokol", - "shortcut": "SPOA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SRDX": { - "links": { - "Homepage": "https://mysardis.com" - }, - "marketcap_usd": 0, - "name": "Sardis", - "shortcut": "SRDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SRN": { - "links": { - "Homepage": "https://surnet.org" - }, - "marketcap_usd": 0, - "name": "SUR Blockchain Network", - "shortcut": "SRN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:STAND": { - "links": { - "Homepage": "https://goldsmartchain.com" - }, - "marketcap_usd": 0, - "name": "Gold Smart Chain", - "shortcut": "STAND", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:STOS": { - "links": { - "Homepage": "https://www.thestratos.org" - }, - "marketcap_usd": 13276679, - "name": "Stratos", - "shortcut": "STOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SVRN": { - "links": { - "Homepage": "https://soverun.com" - }, - "marketcap_usd": 0, - "name": "Soverun", - "shortcut": "SVRN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SX": { - "links": { - "Homepage": "https://www.sx.technology" - }, - "marketcap_usd": 0, - "name": "SX Network", - "shortcut": "SX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:Seele": { - "links": { - "Homepage": "https://seelen.pro/" - }, - "marketcap_usd": 3511278, - "name": "Seele", - "shortcut": "Seele", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:SmuX": { - "links": { - "Homepage": "https://www.streamux.cloud" - }, - "marketcap_usd": 0, - "name": "StreamuX Blockchain", - "shortcut": "SmuX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:T-EKTA": { - "links": { - "Homepage": "https://www.ekta.io" - }, - "marketcap_usd": 0, - "name": "T-EKTA", - "shortcut": "T-EKTA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TAO": { - "links": { - "Homepage": "https://tao.network" - }, - "marketcap_usd": 0, - "name": "Tao Network", - "shortcut": "TAO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TBG": { - "links": { - "Homepage": "https://tbwg.io" - }, - "marketcap_usd": 0, - "name": "TBWG Chain", - "shortcut": "TBG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TCH": { - "links": { - "Homepage": "https://thaichain.io" - }, - "marketcap_usd": 0, - "name": "ThaiChain", - "shortcut": "TCH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TELE:8000": { - "links": { - "Homepage": "https://teleport.network" - }, - "marketcap_usd": 0, - "name": "Teleport", - "shortcut": "TELE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TFI": { - "links": { - "Homepage": "https://exp.thaifi.com" - }, - "marketcap_usd": 0, - "name": "ThaiChain 2.0 ThaiFi", - "shortcut": "TFI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TLC": { - "links": { - "Homepage": "https://tlchain.network/" - }, - "marketcap_usd": 0, - "name": "TLChain Network", - "shortcut": "TLC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TLOS:40": { - "links": { - "Homepage": "https://telos.net" - }, - "marketcap_usd": 0, - "name": "Telos EVM", - "shortcut": "TLOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TMY": { - "links": { - "Homepage": "https://tmychain.org/" - }, - "marketcap_usd": 0, - "name": "TMY Chain", - "shortcut": "TMY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TOMB": { - "links": { - "Homepage": "https://tombchain.com/" - }, - "marketcap_usd": 0, - "name": "Tomb Chain", - "shortcut": "TOMB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TOMO:88": { - "links": { - "Homepage": "https://tomochain.com" - }, - "marketcap_usd": 40653633, - "name": "TomoChain", - "shortcut": "TOMO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TOYS": { - "links": { - "Homepage": "https://joys.digital" - }, - "marketcap_usd": 0, - "name": "Joys Digital TestNet", - "shortcut": "TOYS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TPC": { - "links": { - "Homepage": "https://techpay.io/" - }, - "marketcap_usd": 0, - "name": "TechPay", - "shortcut": "TPC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TPEP": { - "links": { - "Homepage": "https://pepchain.io" - }, - "marketcap_usd": 0, - "name": "PepChain Churchill", - "shortcut": "TPEP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TSF": { - "links": { - "Homepage": "https://teslafunds.io" - }, - "marketcap_usd": 0, - "name": "Teslafunds", - "shortcut": "TSF", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TT": { - "links": { - "Homepage": "https://thundercore.com" - }, - "marketcap_usd": 53233013, - "name": "ThunderCore", - "shortcut": "TT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TWL": { - "links": { - "Homepage": "https://twala.io/" - }, - "marketcap_usd": 0, - "name": "Jellie", - "shortcut": "TWL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TXDC": { - "links": { - "Homepage": "https://xinfin.org" - }, - "marketcap_usd": 0, - "name": "XDC Apothem Network", - "shortcut": "TXDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:TXL": { - "links": { - "Homepage": "https://autobahn.network" - }, - "marketcap_usd": 0, - "name": "Autobahn Network", - "shortcut": "TXL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:U+25B3": { - "links": { - "Homepage": "https://bloxberg.org" - }, - "marketcap_usd": 0, - "name": "bloxberg", - "shortcut": "U+25B3", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:UBC": { - "links": { - "Homepage": "https://www.ubchain.site/" - }, - "marketcap_usd": 0, - "name": "UB Smart Chain", - "shortcut": "UBC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:UBQ": { - "links": { - "Homepage": "https://ubiqsmart.com" - }, - "marketcap_usd": 1302549, - "name": "Ubiq", - "shortcut": "UBQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ULX": { - "links": { - "Homepage": "https://ultron.foundation" - }, - "marketcap_usd": 0, - "name": "Ultron", - "shortcut": "ULX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:UNQ": { - "links": { - "Homepage": "https://unique.network" - }, - "marketcap_usd": 0, - "name": "Unique", - "shortcut": "UNQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:UZMI": { - "links": { - "Homepage": "https://uzmigames.com.br/" - }, - "marketcap_usd": 0, - "name": "Uzmi Network", - "shortcut": "UZMI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:VAL": { - "links": { - "Homepage": "https://valorbit.com" - }, - "marketcap_usd": 0, - "name": "Valorbit", - "shortcut": "VAL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:VET": { - "links": { - "Homepage": "https://vechain.org" - }, - "marketcap_usd": 2002440234, - "name": "VeChain", - "shortcut": "VET", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:VETH": { - "links": { - "Homepage": "https://www.openvessel.io" - }, - "marketcap_usd": 0, - "name": "OpenVessel", - "shortcut": "VETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:VLX": { - "links": { - "Homepage": "https://velas.com" - }, - "marketcap_usd": 0, - "name": "Velas EVM", - "shortcut": "VLX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:VNDT": { - "links": { - "Homepage": "https://bo.vcex.xyz/" - }, - "marketcap_usd": 0, - "name": "VChain", - "shortcut": "VNDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:VNT": { - "links": { - "Homepage": "https://ventionscan.io" - }, - "marketcap_usd": 0, - "name": "Vention Smart Chain", - "shortcut": "VNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:VS:888888": { - "links": { - "Homepage": "https://www.v.network" - }, - "marketcap_usd": 0, - "name": "Vision -", - "shortcut": "VS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:VSC": { - "links": { - "Homepage": "https://vsc-dataseed.vyvo.org" - }, - "marketcap_usd": 0, - "name": "Vyvo Smart Chain", - "shortcut": "VSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:W3G": { - "links": { - "Homepage": "https://web3games.org/" - }, - "marketcap_usd": 0, - "name": "Web3Games Devnet", - "shortcut": "W3G", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:W3Q:333": { - "links": { - "Homepage": "https://web3q.io/home.w3q/" - }, - "marketcap_usd": 0, - "name": "Web3Q", - "shortcut": "W3Q", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:WAN": { - "links": { - "Homepage": "https://www.wanscan.org" - }, - "marketcap_usd": 58286398, - "name": "Wanchain", - "shortcut": "WAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - }, - { - "name": "Wanchain Wallet", - "url": "https://www.wanchain.org/getstarted/" - } - ] - }, - "eth:WEB": { - "links": { - "Homepage": "https://webchain.network" - }, - "marketcap_usd": 0, - "name": "Webchain", - "shortcut": "WEB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:WEMIX": { - "links": { - "Homepage": "https://wemix.com" - }, - "marketcap_usd": 525753922, - "name": "WEMIX3.0", - "shortcut": "WEMIX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:WGM": { - "links": { - "Homepage": "https://subnets-test.avax.network/wagmi/details" - }, - "marketcap_usd": 0, - "name": "WAGMI", - "shortcut": "WGM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:WTT": { - "links": { - "Homepage": "http://www.cadaut.com" - }, - "marketcap_usd": 0, - "name": "World Trade Technical Chain", - "shortcut": "WTT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:XDC": { - "links": { - "Homepage": "https://xinfin.org" - }, - "marketcap_usd": 0, - "name": "XinFin XDC Network", - "shortcut": "XDC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "XDC Wallet", - "url": "https://wallet.xinfin.network" - } - ] - }, - "eth:XERO": { - "links": { - "Homepage": "https://xerom.org" - }, - "marketcap_usd": 0, - "name": "Xerom", - "shortcut": "XERO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:XETA": { - "links": { - "Homepage": "https://xanachain.xana.net/" - }, - "marketcap_usd": 0, - "name": "XANAChain", - "shortcut": "XETA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:XODEX": { - "links": { - "Homepage": "https://xo-dex.com" - }, - "marketcap_usd": 0, - "name": "XODEX", - "shortcut": "XODEX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:XT": { - "links": { - "Homepage": "https://xsc.pub/" - }, - "marketcap_usd": 0, - "name": "XT Smart Chain", - "shortcut": "XT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:XVM": { - "links": { - "Homepage": "https://venidium.io" - }, - "marketcap_usd": 0, - "name": "Venidium", - "shortcut": "XVM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:XZO": { - "links": { - "Homepage": "https://exzo.network" - }, - "marketcap_usd": 0, - "name": "Exzo Network", - "shortcut": "XZO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:YCC": { - "links": { - "Homepage": "https://www.yuan.org" - }, - "marketcap_usd": 0, - "name": "YuanChain", - "shortcut": "YCC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:YETI": { - "links": { - "Homepage": "https://nepalblockchain.network" - }, - "marketcap_usd": 0, - "name": "Nepal Blockchain Network", - "shortcut": "YETI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ZENIQ": { - "links": { - "Homepage": "https://www.zeniq.dev/" - }, - "marketcap_usd": 0, - "name": "Zeniq", - "shortcut": "ZENIQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ZENITH": { - "links": { - "Homepage": "https://www.zenithchain.co/" - }, - "marketcap_usd": 0, - "name": "Zenith", - "shortcut": "ZENITH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ZERO": { - "links": { - "Homepage": "https://www.singularity.gold" - }, - "marketcap_usd": 84248, - "name": "Singularity ZERO", - "shortcut": "ZERO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ZETA": { - "links": { - "Homepage": "https://docs.zetachain.com/" - }, - "marketcap_usd": 0, - "name": "ZetaChain", - "shortcut": "ZETA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ZTH:427": { - "links": { - "Homepage": "" - }, - "marketcap_usd": 0, - "name": "Zeeth Chain", - "shortcut": "ZTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:ZYX": { - "links": { - "Homepage": "https://zyx.network/" - }, - "marketcap_usd": 0, - "name": "Zyx", - "shortcut": "ZYX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:atp": { - "links": { - "Homepage": "https://www.alaya.network/" - }, - "marketcap_usd": 0, - "name": "Alaya", - "shortcut": "atp", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:cTH": { - "links": { - "Homepage": "https://cheapeth.org/" - }, - "marketcap_usd": 0, - "name": "cheapETH", - "shortcut": "cTH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:cet": { - "links": { - "Homepage": "https://www.coinex.org/" - }, - "marketcap_usd": 0, - "name": "CoinEx Smart Chain", - "shortcut": "cet", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:eBTC": { - "links": { - "Homepage": "https://bitcoinevm.com" - }, - "marketcap_usd": 0, - "name": "Bitcoin EVM", - "shortcut": "eBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:hP2": { - "links": { - "Homepage": "https://p12.network" - }, - "marketcap_usd": 0, - "name": "P12 Chain", - "shortcut": "hP2", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:jfin": { - "links": { - "Homepage": "https://jfinchain.com" - }, - "marketcap_usd": 0, - "name": "JFIN Chain", - "shortcut": "jfin", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:lat": { - "links": { - "Homepage": "https://www.platon.network" - }, - "marketcap_usd": 78424786, - "name": "PlatON", - "shortcut": "lat", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:mADA": { - "links": { - "Homepage": "https://milkomeda.com" - }, - "marketcap_usd": 0, - "name": "Milkomeda C1", - "shortcut": "mADA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:mALGO": { - "links": { - "Homepage": "https://milkomeda.com" - }, - "marketcap_usd": 0, - "name": "Milkomeda A1", - "shortcut": "mALGO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:mc": { - "links": { - "Homepage": "https://moac.io" - }, - "marketcap_usd": 0, - "name": "MOAC", - "shortcut": "mc", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:nSAN": { - "links": { - "Homepage": "https://sanr.app" - }, - "marketcap_usd": 0, - "name": "SanR Chain", - "shortcut": "nSAN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:pCKB": { - "links": { - "Homepage": "https://www.nervos.org" - }, - "marketcap_usd": 0, - "name": "Godwoken", - "shortcut": "pCKB", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:peggle": { - "links": { - "Homepage": "https://teampeggle.com" - }, - "marketcap_usd": 0, - "name": "pegglecoin", - "shortcut": "peggle", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tBVE": { - "links": { - "Homepage": "https://beverlyhills.ethdevops.io" - }, - "marketcap_usd": 0, - "name": "Beverly Hills", - "shortcut": "tBVE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tCRC": { - "links": { - "Homepage": "https://github.com/ethereum-pocr/kerleano" - }, - "marketcap_usd": 0, - "name": "Kerleano", - "shortcut": "tCRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tETH:11155111": { - "links": { - "Homepage": "https://sepolia.otterscan.io" - }, - "marketcap_usd": 0, - "name": "Sepolia", - "shortcut": "tETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tETH:3": { - "links": { - "Homepage": "https://github.com/ethereum/ropsten" - }, - "marketcap_usd": 0, - "name": "Ropsten", - "shortcut": "tETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tETH:4": { - "links": { - "Homepage": "https://www.rinkeby.io" - }, - "marketcap_usd": 0, - "name": "Rinkeby", - "shortcut": "tETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tETH:42": { - "links": { - "Homepage": "https://kovan-testnet.github.io/website" - }, - "marketcap_usd": 0, - "name": "Kovan", - "shortcut": "tETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tETH:5": { - "links": { - "Homepage": "https://goerli.net/#about" - }, - "marketcap_usd": 0, - "name": "Goerli", - "shortcut": "tETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tKEK": { - "links": { - "Homepage": "https://kekchain.com" - }, - "marketcap_usd": 0, - "name": "Kekchain (kektest)", - "shortcut": "tKEK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tMAP": { - "links": { - "Homepage": "https://maplabs.io" - }, - "marketcap_usd": 0, - "name": "MAP Makalu", - "shortcut": "tMAP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tMATIC": { - "links": { - "Homepage": "https://polygon.technology/" - }, - "marketcap_usd": 0, - "name": "Mumbai", - "shortcut": "tMATIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:tWIRE": { - "links": { - "Homepage": "https://wireshape.org" - }, - "marketcap_usd": 0, - "name": "Floripa", - "shortcut": "tWIRE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:taro": { - "links": { - "Homepage": "https://j2o.io" - }, - "marketcap_usd": 0, - "name": "J2O Taro", - "shortcut": "taro", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:xDAI:100": { - "links": { - "Homepage": "https://docs.gnosischain.com" - }, - "marketcap_usd": 6301880, - "name": "Gnosis", - "shortcut": "xDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:xDAI:300": { - "links": { - "Homepage": "https://www.xdaichain.com/for-developers/optimism-optimistic-rollups-on-gc" - }, - "marketcap_usd": 6301880, - "name": "Optimism on Gnosis", - "shortcut": "xDAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:xlon": { - "links": { - "Homepage": "https://xlon.org" - }, - "marketcap_usd": 0, - "name": "Excelon", - "shortcut": "xlon", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "eth:\u25c8": { - "links": { - "Homepage": "https://crystaleum.org" - }, - "marketcap_usd": 0, - "name": "Crystaleum", - "shortcut": "\u25c8", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "misc:ADA": { - "links": { - "Github": "https://github.com/input-output-hk/cardano-node", - "Homepage": "https://www.cardano.org" - }, - "marketcap_usd": 12578496280, - "name": "Cardano", - "shortcut": "ADA", - "t1_enabled": "no", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - } - ] - }, - "misc:BNB": { - "links": { - "Homepage": "https://binance.org" - }, - "marketcap_usd": 47729156144, - "name": "Binance Chain", - "shortcut": "BNB", - "t1_enabled": "no", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Binance Wallet", - "url": "https://binance.org/unlock" - } - ] - }, - "misc:EOS": { - "links": { - "Github": "https://github.com/EOSIO/eos", - "Homepage": "https://eos.io" - }, - "marketcap_usd": 1253975568, - "name": "EOS", - "shortcut": "EOS", - "t1_enabled": "no", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Bloks.io", - "url": "https://bloks.io/wallet" - } - ] - }, - "misc:MAID": { - "links": { - "Github": "https://github.com/maidsafe", - "Homepage": "https://maidsafe.net" - }, - "marketcap_usd": 58807837, - "name": "MaidSafeCoin", - "shortcut": "MAID", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [] - }, - "misc:OMNI": { - "links": { - "Github": "https://github.com/OmniLayer", - "Homepage": "https://www.omnilayer.org" - }, - "marketcap_usd": 551822, - "name": "Omni", - "shortcut": "OMNI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [] - }, - "misc:USDT": { - "links": { - "Homepage": "https://tether.to" - }, - "marketcap_usd": 70941600691, - "name": "Tether", - "shortcut": "USDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [] - }, - "misc:XLM": { - "links": { - "Github": "https://github.com/stellar/stellar-core", - "Homepage": "https://www.stellar.org" - }, - "marketcap_usd": 2316269327, - "name": "Stellar", - "shortcut": "XLM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Account Viewer", - "url": "https://accountviewer.stellar.org/" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - }, - { - "name": "Stellarport", - "url": "https://stellarport.io/" - } - ] - }, - "misc:XMR": { - "links": { - "Github": "https://github.com/monero-project/monero", - "Homepage": "https://getmonero.org" - }, - "marketcap_usd": 2733395377, - "name": "Monero", - "shortcut": "XMR", - "t1_enabled": "no", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Monero CLI/GUI", - "url": "https://www.getmonero.org/downloads/" - } - ] - }, - "misc:XRP": { - "links": { - "Github": "https://github.com/ripple/rippled", - "Homepage": "https://ripple.com" - }, - "marketcap_usd": 19193526787, - "name": "Ripple", - "shortcut": "XRP", - "t1_enabled": "no", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Trezor Suite", - "url": "https://suite.trezor.io" - }, - { - "name": "Exodus", - "url": "https://www.exodus.io" - } - ] - }, - "misc:XTZ": { - "links": { - "Github": "https://github.com/tezos/tezos", - "Homepage": "https://tezos.com" - }, - "marketcap_usd": 1094195402, - "name": "Tezos", - "shortcut": "XTZ", - "t1_enabled": "no", - "t2_enabled": "yes", - "type": "coin", - "wallet": [ - { - "name": "Briskett", - "url": "https://briskett.app" - } - ] - }, - "nem:BREEZE": { - "links": { - "Homepage": "https://breeze.chat" - }, - "marketcap_usd": 0, - "name": "Breeze Token", - "shortcut": "BREEZE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "mosaic", - "wallet": [ - { - "name": "Nano Wallet", - "url": "https://nemplatform.com/wallets/#desktop" - } - ] - }, - "nem:DIM": { - "links": { - "Homepage": "https://www.dimcoin.io" - }, - "marketcap_usd": 0, - "name": "DIMCOIN", - "shortcut": "DIM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "mosaic", - "wallet": [ - { - "name": "Nano Wallet", - "url": "https://nemplatform.com/wallets/#desktop" - } - ] - }, - "nem:DIMTOK": { - "coinmarketcap_alias": "dimcoin", - "links": { - "Homepage": "https://www.dimcoin.io" - }, - "marketcap_usd": 0, - "name": "DIM TOKEN", - "shortcut": "DIMTOK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "mosaic", - "wallet": [ - { - "name": "Nano Wallet", - "url": "https://nemplatform.com/wallets/#desktop" - } - ] - }, - "nem:PAC:CHS": { - "links": { - "Homepage": "https://pacnem.com" - }, - "marketcap_usd": 0, - "name": "PacNEM Score Tokens", - "shortcut": "PAC:CHS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "mosaic", - "wallet": [ - { - "name": "Nano Wallet", - "url": "https://nemplatform.com/wallets/#desktop" - } - ] - }, - "nem:PAC:HRT": { - "links": { - "Homepage": "https://pacnem.com" - }, - "marketcap_usd": 0, - "name": "PacNEM Game Credits", - "shortcut": "PAC:HRT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "mosaic", - "wallet": [ - { - "name": "Nano Wallet", - "url": "https://nemplatform.com/wallets/#desktop" - } - ] - }, - "nem:XEM": { - "links": { - "Homepage": "https://nemplatform.com" - }, - "marketcap_usd": 475266269, - "name": "NEM", - "shortcut": "XEM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "mosaic", - "wallet": [ - { - "name": "Nano Wallet", - "url": "https://nemplatform.com/wallets/#desktop" - } - ] - } - }, - "info": { - "marketcap_supported": "103.22 %", - "marketcap_usd": 1102849874078, - "t1_coins": 2106, - "t2_coins": 2112, - "total_marketcap_usd": 1068459286951, - "updated_at": 1677585029, - "updated_at_readable": "Tue Feb 28 12:50:29 2023" - } -} From 5a8989f00dd6cab9e6303251ac1d81eab03a1002 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 7 Jun 2024 11:03:18 +0200 Subject: [PATCH 268/626] fix(core): fix bootloader unlock check on STM32U5, fw only [no changelog] --- core/.changelog.d/3922.fixed | 1 + core/embed/trezorhal/stm32u5/secret.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 core/.changelog.d/3922.fixed diff --git a/core/.changelog.d/3922.fixed b/core/.changelog.d/3922.fixed new file mode 100644 index 0000000000..d79a37945b --- /dev/null +++ b/core/.changelog.d/3922.fixed @@ -0,0 +1 @@ +[T3T1] Fixed device authenticity check diff --git a/core/embed/trezorhal/stm32u5/secret.c b/core/embed/trezorhal/stm32u5/secret.c index 1f9622120d..ef2a096dc9 100644 --- a/core/embed/trezorhal/stm32u5/secret.c +++ b/core/embed/trezorhal/stm32u5/secret.c @@ -38,7 +38,7 @@ secbool secret_ensure_initialized(void) { secbool secret_bootloader_locked(void) { #ifdef FIRMWARE - return TAMP->BKP8R != 0 * sectrue; + return (TAMP->BKP8R != 0) * sectrue; #else return sectrue; #endif From b560ce53c0cd89405bb36404cd32e18efafa70c1 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 6 Jun 2024 11:58:24 +0200 Subject: [PATCH 269/626] fix(core): TS3 device freeze [no changelog] --- core/src/trezor/ui/layouts/tr/__init__.py | 16 +++++++++++----- core/src/trezor/ui/layouts/tr/recovery.py | 4 +--- core/src/trezor/ui/layouts/tr/reset.py | 13 +++++-------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index b27b319305..5074c9cea2 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -224,11 +224,17 @@ async def handle_button_signal(self) -> None: else: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: - return ( - self.handle_timers(), - self.handle_input_and_rendering(), - self.handle_usb(context.get_context()), - ) + if context.CURRENT_CONTEXT: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_usb(context.get_context()), + ) + else: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + ) def _first_paint(self) -> None: self._paint() diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index 90ffe55e18..b520494f7c 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -21,8 +21,6 @@ async def request_word_count(recovery_type: RecoveryType) -> int: async def request_word( word_index: int, word_count: int, is_slip39: bool, prefill_word: str = "" ) -> str: - from trezor.wire.context import wait - prompt = TR.recovery__word_x_of_y_template.format(word_index + 1, word_count) can_go_back = word_index > 0 @@ -40,7 +38,7 @@ async def request_word( ) ) - word: str = await wait(word_choice) + word: str = await word_choice return word diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index 13ca822af7..2b0f4a1f73 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -74,7 +74,6 @@ async def select_word( group_index: int | None = None, ) -> str: from trezor.strings import format_ordinal - from trezor.wire.context import wait # It may happen (with a very low probability) # that there will be less than three unique words to choose from. @@ -84,13 +83,11 @@ async def select_word( words.append(words[-1]) word_ordinal = format_ordinal(checked_index + 1) - result = await wait( - RustLayout( - trezorui2.select_word( - title="", - description=TR.reset__select_word_template.format(word_ordinal), - words=(words[0].lower(), words[1].lower(), words[2].lower()), - ) + result = await RustLayout( + trezorui2.select_word( + title="", + description=TR.reset__select_word_template.format(word_ordinal), + words=(words[0].lower(), words[1].lower(), words[2].lower()), ) ) if __debug__ and isinstance(result, str): From c1e8c652a6783b31559b4284a1f9c996ab084018 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 6 Jun 2024 11:58:24 +0200 Subject: [PATCH 270/626] fix(core): TS3 device freeze [no changelog] (cherry picked from commit b560ce53c0cd89405bb36404cd32e18efafa70c1) --- core/src/trezor/ui/layouts/tr/__init__.py | 16 +++++++++++----- core/src/trezor/ui/layouts/tr/recovery.py | 4 +--- core/src/trezor/ui/layouts/tr/reset.py | 13 +++++-------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index b27b319305..5074c9cea2 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -224,11 +224,17 @@ async def handle_button_signal(self) -> None: else: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: - return ( - self.handle_timers(), - self.handle_input_and_rendering(), - self.handle_usb(context.get_context()), - ) + if context.CURRENT_CONTEXT: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + self.handle_usb(context.get_context()), + ) + else: + return ( + self.handle_timers(), + self.handle_input_and_rendering(), + ) def _first_paint(self) -> None: self._paint() diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index 90ffe55e18..b520494f7c 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -21,8 +21,6 @@ async def request_word_count(recovery_type: RecoveryType) -> int: async def request_word( word_index: int, word_count: int, is_slip39: bool, prefill_word: str = "" ) -> str: - from trezor.wire.context import wait - prompt = TR.recovery__word_x_of_y_template.format(word_index + 1, word_count) can_go_back = word_index > 0 @@ -40,7 +38,7 @@ async def request_word( ) ) - word: str = await wait(word_choice) + word: str = await word_choice return word diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index 13ca822af7..2b0f4a1f73 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -74,7 +74,6 @@ async def select_word( group_index: int | None = None, ) -> str: from trezor.strings import format_ordinal - from trezor.wire.context import wait # It may happen (with a very low probability) # that there will be less than three unique words to choose from. @@ -84,13 +83,11 @@ async def select_word( words.append(words[-1]) word_ordinal = format_ordinal(checked_index + 1) - result = await wait( - RustLayout( - trezorui2.select_word( - title="", - description=TR.reset__select_word_template.format(word_ordinal), - words=(words[0].lower(), words[1].lower(), words[2].lower()), - ) + result = await RustLayout( + trezorui2.select_word( + title="", + description=TR.reset__select_word_template.format(word_ordinal), + words=(words[0].lower(), words[1].lower(), words[2].lower()), ) ) if __debug__ and isinstance(result, str): From a3b67889677f90b6beb56ede1ab22e682107dbdc Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 7 Jun 2024 11:03:18 +0200 Subject: [PATCH 271/626] fix(core): fix bootloader unlock check on STM32U5, fw only [no changelog] (cherry picked from commit 5a8989f00dd6cab9e6303251ac1d81eab03a1002) --- core/.changelog.d/3922.fixed | 1 + core/embed/trezorhal/stm32u5/secret.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 core/.changelog.d/3922.fixed diff --git a/core/.changelog.d/3922.fixed b/core/.changelog.d/3922.fixed new file mode 100644 index 0000000000..d79a37945b --- /dev/null +++ b/core/.changelog.d/3922.fixed @@ -0,0 +1 @@ +[T3T1] Fixed device authenticity check diff --git a/core/embed/trezorhal/stm32u5/secret.c b/core/embed/trezorhal/stm32u5/secret.c index 1f9622120d..ef2a096dc9 100644 --- a/core/embed/trezorhal/stm32u5/secret.c +++ b/core/embed/trezorhal/stm32u5/secret.c @@ -38,7 +38,7 @@ secbool secret_ensure_initialized(void) { secbool secret_bootloader_locked(void) { #ifdef FIRMWARE - return TAMP->BKP8R != 0 * sectrue; + return (TAMP->BKP8R != 0) * sectrue; #else return sectrue; #endif From 1d3ebd61c4d25ffcec76e05dd1c7bc5c5a00f551 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 14:48:56 +0200 Subject: [PATCH 272/626] fix(core/ui): T3T1: wrong XPUB title [no changelog] (cherry picked from commit 3760dd307c0f1bb968dc169417fb3e3fffbb8520) --- .../src/ui/model_mercury/flow/get_address.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 1 + core/mocks/generated/trezorui2.pyi | 1 + .../src/trezor/ui/layouts/mercury/__init__.py | 1 + tests/input_flows.py | 2 +- tests/ui_tests/fixtures.json | 2302 ++++++++--------- 6 files changed, 1156 insertions(+), 1153 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 7bdb03d7ed..3d1636cbad 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -142,7 +142,7 @@ pub extern "C" fn new_get_address(n_args: usize, args: *const Obj, kwargs: *mut impl GetAddress { fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { - let title: TString = "Receive address".into(); // TODO: address__title_receive_address w/o uppercase + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: Option<TString> = kwargs.get(Qstr::MP_QSTR_description)?.try_into_option()?; let extra: Option<TString> = kwargs.get(Qstr::MP_QSTR_extra)?.try_into_option()?; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index b75fcf4782..d0641fa2cd 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1826,6 +1826,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def flow_get_address( /// *, /// address: str | bytes, + /// title: str, /// description: str | None, /// extra: str | None, /// chunkify: bool, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 8a50f68eaf..3fd35708d5 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -547,6 +547,7 @@ def show_wait_text(message: str, /) -> LayoutObj[None]: def flow_get_address( *, address: str | bytes, + title: str, description: str | None, extra: str | None, chunkify: bool, diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index e74cc2deb4..2c0cf093d4 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -469,6 +469,7 @@ def xpub_title(i: int) -> str: RustLayout( trezorui2.flow_get_address( address=address, + title=title or TR.address__title_receive_address, description=network or "", extra=None, chunkify=chunkify, diff --git a/tests/input_flows.py b/tests/input_flows.py index 296e26a23b..70ea07a44f 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -644,7 +644,7 @@ def input_flow_t3t1(self) -> BRGeneratorType: br = yield layout = self.debug.wait_layout() - TR.assert_in(layout.title(), "address__title_receive_address") + assert layout.title() in TR.translate("address__public_key") + ["XPUB"] self.debug.click(buttons.CORNER_BUTTON, wait=True) assert "VerticalMenu" in self.all_components() diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 70a22dc298..8763a57011 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15811,11 +15811,11 @@ "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "74fca790957f5e10040ce9014e3872e72e7c329184d2ff75c50dac813d5bbdc3" }, "device_tests": { -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7101afa8da0c0e2228ea4c2f46c2567c2c1c0f818e0b89ae6615713f961a1cd4", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "303df1b4a6e1f39af3b66e84a3887ba5d6d76e7399cc62a957c208c20653cd62", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "d32d3acc7c49aa43a4900d40b25d415735d5099899c55c3988217512f326acb6", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "52b64eda71ccd01db61c3d575e70e9a9094cdfba332d515fd93051816a0c23cb", -"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "ec89bbccaf1c7d8aeaa967a5039702002d29a0327cee79005a77dcb659aa4d63", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f295121749eac5dcdb9c559b2d9405901fe75360237c82af1ae8d21a471327d1", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "8c0edcbf338893a7ffc27b689735b99548d6945275ea2ae85f1d57dc07980df9", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "bc2786564c9cd21e7d05b401e3b72d047274c578eca7bc451a7329ac07fd8d88", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d742f36c806e1f71a259c455bb2c65078479c38e866c12c8cebb046f971454fe", +"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "ffb94f05fd8d442b0ca04d568cff1d4eb3a0da15ecec4433ab50257f565eb9ba", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9ba5f27fbe7ddfa45ca08769be93b01725c92889db846ba1b6d1c93d10129ede", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "c3a5571672a88192f94c54261da10e13799cf741eb1677a8b54ea7483f361109", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "bbf7d5096842f590747c8f87275d7676c45ca29c1520a2526573908db9ce872d", @@ -15823,7 +15823,7 @@ "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "c3a5571672a88192f94c54261da10e13799cf741eb1677a8b54ea7483f361109", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "bbf7d5096842f590747c8f87275d7676c45ca29c1520a2526573908db9ce872d", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "e25138eb09e3b582a16a475bc97d14374e4e14737a2e4804120b73e98b2a2181", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "d6699bf5272e08a5a50e1fcb62e50cb525c650a1a30bd459a83514e25fa498f4", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6e545e47108bec5ec086c3a2179ec13266a2c909c8d0738757fb45762f59349e", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "795268a332beebdaf826bfd93eea5986c0d2604857d0f3499f57e6cee45bc5ee", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "e429b184583ab43ce892cf4cf0e3280ccc1e6f79e4f66e0daa825274df611dca", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "bf300999c66545883a2f318121a38efb57e4bbb052d3fcaf6cb68e92aec46f4f", @@ -15840,122 +15840,122 @@ "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "135b2b2f4573be1903932bdd7be95373c1de09159bf89fe8cea9143c61188ecf", "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "35142abfd997046b744fb723bc283efb9fea116e6749df59ceb9806201902db2", "T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a340bc0a00477a0df9976a049b034e539c3d4afea1d653fc7a2575dc59df4f3d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "37c285337894aa9feb79d123f852cb35fafe0da40f5f9148f5a7e866685bf8c1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "30d76c49ad3d20671f2601b5c25aa4e78568e8d7134a7aabe8482e94b703c2ea", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "8db1813aa6357c35e97fcc83e2775ab2394500cbacf080de799fee16e5cee506", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "307967123af1f695e8ec93dd3cad859d03dd0cdb2d872f16f9f30614d2a705ee", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "6202bec1336c8c58dabe5f98a9f33c9ca06cc90a1fa49b5ee4cfbec3f4a24452", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "9768ec21840513b60e7d8169fc1bd9c93898cfeb61da243cdf46106ea9bd2ca5", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "47a92a1e880b18058c6136925ccb21475b09975e8aa9d472a35acda05a598ca9", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "020ee111bf7808d43794a5856762a287836b8cd673f840986c297068c5cb85f3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "5c13b076e09ab585f67d2b61f8b7d9e385fe36ccfc1528aa76725fc3f2a7848d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "7e7b5a0af6cd12afc0e02a99627920f453fb886ad514deea88f9d2de1f592329", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2d123e67bd8c60d3af563047c81f7088754045b10a866dc0627c630ff05f4fad", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "1c8845632a9cd077793668440823df6cf1f3afb964aab7c381a9b5b04e9a5f29", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9cc4ef149ab6c25a8a7777bf434f3a184da7eead7bedcec854fa9ab68603f09d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "9e810c4ad224207bd6172f0e247e1567954c49d1dbfa6c1040ba272c0dc578aa", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "fc61b481f5f034e2ee22c86fe46513f38aa60037b462102a9951b76f3e6d226f", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "5b2e9afd89c9019aad8e23d4e0daaeb2714feef1ee0690f82a140f467c984708", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "37c285337894aa9feb79d123f852cb35fafe0da40f5f9148f5a7e866685bf8c1", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "30d76c49ad3d20671f2601b5c25aa4e78568e8d7134a7aabe8482e94b703c2ea", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "8db1813aa6357c35e97fcc83e2775ab2394500cbacf080de799fee16e5cee506", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "307967123af1f695e8ec93dd3cad859d03dd0cdb2d872f16f9f30614d2a705ee", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "6202bec1336c8c58dabe5f98a9f33c9ca06cc90a1fa49b5ee4cfbec3f4a24452", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "9768ec21840513b60e7d8169fc1bd9c93898cfeb61da243cdf46106ea9bd2ca5", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "47a92a1e880b18058c6136925ccb21475b09975e8aa9d472a35acda05a598ca9", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "020ee111bf7808d43794a5856762a287836b8cd673f840986c297068c5cb85f3", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "5c13b076e09ab585f67d2b61f8b7d9e385fe36ccfc1528aa76725fc3f2a7848d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "7e7b5a0af6cd12afc0e02a99627920f453fb886ad514deea88f9d2de1f592329", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2d123e67bd8c60d3af563047c81f7088754045b10a866dc0627c630ff05f4fad", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "1c8845632a9cd077793668440823df6cf1f3afb964aab7c381a9b5b04e9a5f29", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9cc4ef149ab6c25a8a7777bf434f3a184da7eead7bedcec854fa9ab68603f09d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "9e810c4ad224207bd6172f0e247e1567954c49d1dbfa6c1040ba272c0dc578aa", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "fc61b481f5f034e2ee22c86fe46513f38aa60037b462102a9951b76f3e6d226f", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "5b2e9afd89c9019aad8e23d4e0daaeb2714feef1ee0690f82a140f467c984708", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c35de691515759ca50a5e864a0f4831c69ac8051bc3ed4b8b911f253ef97d6e7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4a64bd3d93fa2921ef9b93a4151dde05db4ebfe27af641a4833c6336214ab177", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "cb7f468554dfdf6983a010eb58d0be929a51c463f0c7adc36481308a8f3b519e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "cd3e0905e7fe5ff2bf63a5c3b13dd1aa91dffb78b63ce95d6f92c4c7f03b2053", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c18dfa1e98ab5d3d629890db17010fe8f9b8676456da7c062ffdfacd52ea833b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "a596b9a0fb80b83ae5015e5ec158377273b708d1ae8cd8dff12d34474efe0e6a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "25163125d59f168efbf70932da7af7c063c7d839b84d9b0c02482715623aceca", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "7d7113605543bf316e2733f6efce9e5274f89c9987c61aa968d15a10044c03cf", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "b55e3aeee1ad4e1f06168bb8feddf2dee26a6757b4df16a673396979b581eac8", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "add9e631cf9a375477165aa65e204cbe0543594ff9baf1470c27afae8602bf0e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1db07055d414ac08c96cfe4d923343124e1d1f0dfd8ba443690b7385c22ba7dc", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "154d7606c894400d522ea1e6b602d0b8637c82847cd201edc35adda93d12db3b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "399d67c49b9e96d549cb257b0f7ba4c8c0ca696cbe6e1593fa9a78dfbc06cacd", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "29871a5a0146126b008e315fab05f0097f117c436cf146483d99cf9e1f848dbc", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a988b3def8a1b50b350526846f67fcdf7b227fcee4ec58e8af3151597c5b9073", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "815458ee6826ecd42aa6b553107de5cd7f77cedc4408514d50037d178bc9758a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c35de691515759ca50a5e864a0f4831c69ac8051bc3ed4b8b911f253ef97d6e7", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4a64bd3d93fa2921ef9b93a4151dde05db4ebfe27af641a4833c6336214ab177", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "cb7f468554dfdf6983a010eb58d0be929a51c463f0c7adc36481308a8f3b519e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "cd3e0905e7fe5ff2bf63a5c3b13dd1aa91dffb78b63ce95d6f92c4c7f03b2053", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "c18dfa1e98ab5d3d629890db17010fe8f9b8676456da7c062ffdfacd52ea833b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "a596b9a0fb80b83ae5015e5ec158377273b708d1ae8cd8dff12d34474efe0e6a", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "25163125d59f168efbf70932da7af7c063c7d839b84d9b0c02482715623aceca", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "7d7113605543bf316e2733f6efce9e5274f89c9987c61aa968d15a10044c03cf", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "b55e3aeee1ad4e1f06168bb8feddf2dee26a6757b4df16a673396979b581eac8", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "add9e631cf9a375477165aa65e204cbe0543594ff9baf1470c27afae8602bf0e", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1db07055d414ac08c96cfe4d923343124e1d1f0dfd8ba443690b7385c22ba7dc", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "154d7606c894400d522ea1e6b602d0b8637c82847cd201edc35adda93d12db3b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "399d67c49b9e96d549cb257b0f7ba4c8c0ca696cbe6e1593fa9a78dfbc06cacd", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "29871a5a0146126b008e315fab05f0097f117c436cf146483d99cf9e1f848dbc", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a988b3def8a1b50b350526846f67fcdf7b227fcee4ec58e8af3151597c5b9073", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "815458ee6826ecd42aa6b553107de5cd7f77cedc4408514d50037d178bc9758a", "T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "5f76b59e7cb5ef16282811a3a38767e653690233167041513a3f6b17fb3257ec", "T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "7eef6ea828fd09e6d7e27f3e56930b16e2e28387a2b6e478f49bef2178b0d36f", "T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_bch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "888325e8fa55629c8adf16b223bc78879e7d21f64a58c417a0a27c149d3c1428", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "c888756ba82903badf0c53d903e4c5d23be5f8e2793b8d0d9bd0abc2d90d432d", "T3T1_cs_bitcoin-test_getaddress.py::test_btc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_crw": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_elements": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_grs": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "59184575550e802b9ee52ec27c8d41120dcc315456a84b2348c23ad209d1cece", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "71073072ad99c576e6df80193a982542f1058f69a5fe36d728e6c1e0ed322ff2", "T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ded376916d152fbe73e925970ccc66cd3f5c739eb0bab46585e30cba9a3edab1", "T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "c7631d1cb86a667de3c1fc1ff0394ad8f18dfd8ac9081a8efaff415ac54004b1", +"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "ad38496c1e1629f70b9dfbdd7bf6fc92918010c0ca3b5cb320fb93e0389dfe63", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "0837d01122900153b02d18750d77992222ad3af6314b6495fed963f846aca6ef", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "50366977b1fb4f62f9ae55f16938db0a610ff8e1affc3f941532634554abe2e8", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "7a614f73d5f036935c66541fa098c01d877b013da8a4c17e64dd11ee152d6a7c", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "8f18baea56c91924c56c8b28abc0fbef2e919aca897164263279d370e96f317a", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "eb3d53f1135f891fe1d0177f85c7547be66e28e5a557b921d0c987799af2b384", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "97a1caf7f988c26baa5fe2f03cba5693983880a51fb94247d5329db566e63ddb", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "8af392507adc163c9994099d951beb6b01a487fe46f8572a1d95019b76bc025d", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "1dba11471d8e0fd15b5b381eabc33e0b93540ec0fe4fd82539516042426663ff", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "88b6b002551f58da4e1641e0d0a444fa46adb1a0949528987fc32454ca41c528", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "62d21f48cfeb0d80b3a1d2097bd1d3ad242ecceef91da6e50528684d3b4bbee1", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "f85781fbed7a09260221db8d3c9279bb992d7f919bfca5b2c7840d6c11dffc9b", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "21a1e3c55711b27cb45a7486164539d1f2d272851400f97af0f63f0a6478efac", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "06e8047f7b570a9cb934a4588d058490dac14ecd22908e00f8758d7dda2e37ad", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ca54f26279a404a047891a509173c12835a75869409d9fdf13ce81c9bfe67b56", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "52dad235d015a7012415434bb9feb32da44f401547c4c78dd6536ab030562c4f", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "f5d3422ee8ae944a36f6db2f08fe982b177468b3ce1baf408080a1ea7fa0b1c2", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "caf4631eacfa46d5fc9cf2ebc2540b519e2b3b7ab9bd4b67ef01eb609ca15992", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "d2e2455e8586df1b96f1e3a057024376d2405529fe45e54f6da1bd505ab26e91", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "39258c9da4ea90eb8111780237749979bd538e21ca8df296dd13932a06707c48", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "6460861e72b66c288b9df7831b36c482d084cfa3e846cf82cc91efb226af4fe7", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "deca3e961154ec0265534eaa20f7b9d0107fad7463749538a5f9a476a65b3917", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4b5cc6c83ee4d37d8a8c45eb1b102165935c1d2dfa251747180519a305cfbe38", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "c677276d5957715c41aa8a972524dcaf64ee03060536187ddb5dad8829f63f44", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "cf7dbcfbde86dfef0953d8b6bd0254498719b4115cce5983ebc3d4aa55feea0d", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "8d5f4896b262be48536abd3e0e92087281c4cb909d398c76eaa8a96b1bba92fb", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "2d698b47fa5bc2f4c81c60e54811c8b85a1ec04033aba0c977b25ae5200dfe73", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "cfa61c5b93f3132bb3057d23cafb691af1b89c7b1755f158ce78430c2f8a59d8", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "f481556801bc6145d13cc2f75cdeab6b70f3f609ea67ca54d5c1f0dcbbabeae8", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "378d0aac1d7f9408b673a0c00dea57a1f955606a5e15dc03e3aa44c98281c8e3", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "9dfe3590f16028c076b2956aa7c8b27cd63035edfce8a02abfd009510b71060c", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4dc247410fd2999c59a2c694f7664fadab814f8ed93ded040d4a38ed0aef74e1", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "f3443f1c233c25542e40adfc064da2acba8a701f4fbfcc4fe04f858efb665cd1", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "dfacdc817b7f8b37e1d677cf6faf2ae12c43462cea445d11a6c58f8d043586d9", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "73d709d548b2c7f65256b48d3cf4aba2473d9003dca429a6437833e812558d17", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "7b7e2bd79871889c549082e7be5307bde8268f8bd96926e730aca246db456a7f", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "f4a415cb7b2ea888884a7ac793181ac6cf8671972965b76a8062e5c0a0aabeec", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "a02a39144bb3bd54313349b72d9749c7041062b289172d46229ea3c3d3dc9ab8", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "1099ac496628908ee3f0132186b191c6bc54ed6b800b93dd75ff8c445799467f", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6364b7d161921223559f5141d61d3c712de89f27208323036cfe80968f04ba47", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "72b7da8ff1eddb41d286819b94d98744f1abe44eb48f030bae607089c677d24d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "72b7da8ff1eddb41d286819b94d98744f1abe44eb48f030bae607089c677d24d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "338cec75a549477ce1476b7e001e0a57c102ac409f3e8e5cbd562825b5b90027", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d1cd6497dcdc9172f71b3d8599a34bcf073900f27f29227dc9a6e14fbec18178", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "f455d436ccdc67b93f0459305f47cd0417a6c30cd51de18e7cc712933292f79d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "1d932685daf87029c9c5274038676168343e42583faeb93587c4746dca1e5040", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "9310ef543dbbcce7b5673dfc75bec4cc835dc99c04727bf154d421a57c3ea13d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c7a130bd8e58f54d901e3d9ff4b0708464fe5e81840787f76f733c7d7b7d1dba", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ceea01d9282fe057b3a3049f4e2619ac3a6abd39c8a6f8451c28037883ef20f4", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "a237fff8dac1ae26e58e420e03662dcf0fd945f41529e52c0a8852d4be68b15f", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "84193ef807639480a0c541718c63255782ba9c60644348966aacbf129aec4f20", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0a52eec01ba8eb7fd57f741ff9409f679e41c41244c5d68b29e5ea24f6a27e2c", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6eef9ebafbf778048c6313a4b969a51a89f333cda58afa57e923d0d1d4f672f5", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "b66200f16862c3ef311f4ce0ab7954116a6e6267ad7e51e3ff781ef84ed77d66", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "212fdcf7f57e413919ff0253e4df16d4a9e6ac8825935f3c671d520296f7803a", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "44ca5c71feebfb2f19d3cb9308b768bcaafb3d4dc9e4551f18da6c12ee63b9e6", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "540e730b69cb5afd19ddbd1fd53403acc1b69c4bce1939e254859b105506127e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "489645ac21a7f2a81855034147b15125e3444309c66a65e8a421e62a483a2608", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8f04e4959d5d5c1e51828515b6a48d8149dce38abe8f63828f40778bcd576c8f", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "aa886570cbb0e5a1a37cfa341832553246c3618add20ec8c8771621346e5214d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1e654f347aa22466f0ae031a8139dce7d072f0c93b1119f5c83bd7a30d406806", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "3138525937e1c824c1fcfa8b678fe0e567f9b450bc998d38728355e69613558b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "3138525937e1c824c1fcfa8b678fe0e567f9b450bc998d38728355e69613558b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "33e8c0df48d2de986fac94919fdef14f516c20e5f706c3ee0aec61c038a3d932", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fb0d58c21858205dbc21b9aed9c927932e40f50618bf06a52ba1d565b98f3145", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "581cbe088065dd08ee1e868a91be1c7c97334e971af4c962ef70a3cec07b3022", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "9343cc4bbd64db2004d7ef333ba58ad4d1000924dc666bd5f38e90724a92b691", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "58b6d5e713c8aef2fe7cf53392b70f58d173e8fe4c62ab213c349ded23c2e1c2", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "44827a585bc946b9ca66ee008f7dbcdcb4666ac3e2264b34257a28c00b6bc496", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "49747ec85ff28be24230b67922861e0289f6228ce12ea65f3aae2aa86eaa8454", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "763829f5b52ec9371e4469f08bbfb7d9c5044a8a5d4ec8edeb014642b4b986ea", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "59b95950a67dd520cf9aa73761a6aceb67d028323214cafc5ee509c4d8fe9ef4", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "8dc57ba351f4bdb46778f0d0a1cd547c05521f9e27eb818d28383a137e2d556a", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "7a6fa615b5d3e3a61e1bb1ce1fc1e27bc5126f258ead53d8e9f2b92f2f997c80", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "9c913740164c1903e3d1b2cb6534023626566f8f4f886badcd9729923d7e7817", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5b9748cf5823cdf39590bab564da072937c58ebe5f7630d1b384aecb30af948c", @@ -15976,17 +15976,17 @@ "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f6d0f166c1cafcf13ca5e250f09d2347c94ae37570dd5d8e9599dbf86a5dae1b", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b7e761c6cf41c6eef23b272cc5cf322b438b04003a034cde31f14fd6aed30160", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ad95461af9737af9966f95e9d88eac38e7ab535d2d874ef38881560e263f7bf6", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ce18babbdfe7eb79722f56201fba578e44015a4c3d0ab165529257602128e4cb", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "346569305c1f94bbf80522254e9a83ee60f7164b7557325eb6e23a64e1d12707", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "45d2649be693fa95e030f6c14d8e188040f434fe7abb60b65f15b896bb85c1f1", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "43423e54bb6bef8564916df4ec13dab2b5eeac74fd2783543167bbcd034d7e7c", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ff806216152cb2f4e467ad7db1b76762db7e8fc5cf1dc24ba48c8e437b497c35", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "aedaa0b3796846361047a5e9f8940dc0da4993ef5106f342896005ea2390501c", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "475aed00aeaa342d30ee013d79750023feb4b37bc067893fdc7e73b590e8b3db", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "406c0c9fcaed87cdbfaef0475bf501658be771f1a83a84fd0efed2a76eaa700c", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "f16133c83edd9bfdd4e5c585416ad71d5166eb2ea627f20a1916b3f7289b2c21", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "db5364b7ba16311234ab1a05d70f329a0c958ec1012d4c14e37dc24d25a73126", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6415c61eb3f8d859180d410a347e02ceb45e408db668d0ef3105e85e57d1a931", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7889627a5b2c8bd6c18feef283f87f1da80b4a44328fa9fd555b04a225f459e8", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "38a5682413fa1889c65ca260d88f730b6976f25f49bb1ab4e31a81c8b997b880", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "c8998c1f23dcbaa74c02d34e728c04b6913f2c5f345306ccfdec4b79b1ccde37", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "69cf92e442d8d273924d0c719b45790a2b3a21e6e5e28c65dcd7bb1d12bd1c17", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "883459b4a1ec13f45fdb621558e27432cc6066aa77f25a7824770127cee55b3e", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "26e5002215d51e35afc6cbd967fdd6693a3e402712d51acfe7b14c5da2a7fd1e", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -16027,24 +16027,24 @@ "T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "e84de1b0c0de184d4823d56f69c67db3102d16e9d4f7142cb87034381ed6e23a", "T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "6d7560634cdd782bed2be7c318ad4367d8ed79fe1bd4a1352784d48bc05f45db", "T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a0b57a4394d8ca37fdc08da5282cf240cd34c24ee05cb6cdd3a6c01b6de5f7be", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "b63058eddb2ae2eeb40fa0353e14631c6e5c7aa099fd41476b29678747757e00", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "c143d84eaec72fb34c919f1cddacb9aad2fb17805be79bb7eb9ced88009c1c6d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1a965b295e07ec7f954707269135f704f3e4e95d47a288793cecaec4b33a010e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "fe185317b5e26effd30f51587969b0cd12b2ccfa44452ba2ded00382da3001f5", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d06769328b9961e82e5e1940848825f03e8485c14df657532bf7664fe695ddcd", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "fa8ca6816004a6ed50dcdf827bbd0238e170edc75e3100eaabb0b9f4f4a2d755", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "7125547533c6c714efc3d842231e33bfc5d7a4cc42ae9d1b3ea14485756a9adc", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "573bfd555d67a7d615c3534734a48e989abfcc345e68e6963e88c150c44489a5", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "3a916b0532fd133e0c83278c4661a87c00af534c79268e403be9b865dfb9e7fa", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e25415e3135546201d78d01fbad0d7210cf1bbf2fb8f237f441f93817a150da2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "f846e64e9977bda5771cf36f530b93dd277ae548820bbadae74ec27cfb572be2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "98e67c1615388dc3152235aed054c69f0c5219e453837085e3d14da3124c93d1", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2926a2e2dacdc1951b4f2cc464fadb685beaa7e90dd1ca49dee07bedb3657c6a", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "fe2c523f2c7faef111a5e97eea5d57da56a97f57d2286bb82a781af186f01f91", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "bf7f94a899519daea4578f02e938d1ffed38665b74615381f6d56ce128338fa2", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "cc058cbd33f5bd1b97ea61bb26c907a8696ef5bb0c33bbcf0ef5611c58f71ec0", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "b818c1ce351566ceda2a454ee0c3c8ed2ee1eb5015c23a66aaf9ff01b3f69f3e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "647c45820d7058d2bd5e2a1b9299a6b85d9e89c4ae39fd5cbfbfc306464fbd2e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "2e241d918ca317665198ced45c3204f160d85e56753c24493ab3a38179afa662", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "6e4d57cf8925aed9c90544d0200fd62cc65c1c42f9244138b9163e679ff4aaff", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "bb8ba64d9382d49a2975d7378f1ab380556bd7683c86072e90de8463bce37245", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "4f525d7816b421ec31d28b6915271c6fa45d46cfaec00aba6b6402b5be536692", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fe073a206b251d4574b97ba05b499117029a4a8b118223bd02d229ffb083d1f3", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8918516e241ad3824d530086093ec62055ce7fd19782b94a6a1520dcf619a634", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "844a660b63fe8357f09c99f9f2bed2c99f818b430f46df51018c5b7fe3516d0a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "b3708324b5eba4672120132ff45247a68fc8082e4cccecbe9d907e583de07bc4", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d9c2ef8920116ef0308efc7959a7a9cfc216040514a7297a877f62c97296eb0d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "7021812cf6a8df4230c1cb7433519e6381281317920aad9f38b6ddd4cc382e57", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1c6aedf32e9b859282770ee4c7759231b2eeaaca3172e94efb3cf5eb5e1dbe28", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "87948925ffa1e9d239b6717e1225d6d74dd57aa73c570759b0cce9ecb1cd7e40", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2c2c275a5ff5072f65fdfc7b985af2429f6531e0d9b7d3df4f616ec16a5e8759", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "717d638feab18cd298e9c400ff31a5ff3203a75ceab35b88853a7f9b4fdcfa44", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "bc0f1b9bb74d22db2fae44486ef63afae5948f843e828794d31494592eb08d2b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "8a4bf54a1c2996363647a423e37f11e62011f3ea1cee42b33aae23d727e63f82", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "abf92d19707ce9c027dc2b9c950a63d5b4de1dc68057e445a9579a919b4bad0a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "0d609ce922977bbb691d39b733d194c5b7a25fe8a1fdf20ff78838af9dba895a", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -16262,106 +16262,106 @@ "T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "d0221c3558c1615cdf73d1ae4395aae9417fd32b6c309bad97d9b962159c5550", "T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "0df3f16c5f7913ca9e65c85a1ed61ca08ee9a6e29785cc7a271290398e415add", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "53a6ff019a44b6e40a2ad8f286e22d7e0abd9a3dc07f57f617178b8543a5f4fd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "fbd87d4b2b3d0f18eb81c17ac52834ca07508d2ce23b52d82e9ea15fde83be48", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "b93503c54184d9b585368dd3893d1b233b7b335fc4f6b1d4b9c1cfb0d33d28e5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3a42d1c197340a88e81e94ebd57ab777caa4ed5f874c6b56f9dfa953d2e482d6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "ce1aef3d3dffb1fd20c879e9ec7ab04893d275a436a8b29674e53436ddfed16a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "fb5bb17e7cc4181f9f0c1fe44ed00dab7daed210766866f2d17ff995223e876d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "169d1121a6bbc4b3d31d2cea82a50ab49f57491a14a9388a29e2af59a2a135ee", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "6da6a61089e30777bd84787b45542b5a862eb99e7214167af33c5cae85f9be66", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "d23dff3b37e96ea16e79e43eed0531eb38b991fa3865372829bc2d565c889b06", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "083778fd2234ebbe080686614ffeb50f47811f15b21e99dba559613d35747e29", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "ce223a7aef27607220b8abb4f5ec976c8c6811519602982c975e58a6b411f8d5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "7d6817e4211510a24d624128a00f04ff8a541c2443c2c625a27930c7edd5a1fb", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7ec4ecb4657f3fe2cf6c6c92c3d4573707d36b6806f1bf7f1d9df2028cc830dd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ace96112b65b94619130f9aa90395b9220f1f09db64bb06d87265f1cdec3f40c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "a61e3e281a717ba938134df6f95537824364fe19fb54686dfff33e3716e25686", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "73f10114fa34124955975f63bd14d501e469d62f8edb81c34d34c38accfebb37", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "1c3d077ce9799690b8adb0eda8ac66584aa77592e2c501fd3e576b26ae6510ea", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "95f3d317bf42021067163a964a6f60750f6bb05c861a4a5b676668e0f00a621c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "54b3997bf4f1b73a0e594b64eb8f06516a3b5543f652b2dc4abdac4a22a0c7aa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "84fb65ab6e378fa39b8a955efa954e17eb45e0782d1efbc944d1a032410f8716", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "865b8d4c41ae7c1ff45d012ee86dd2591b9bd9d1f1809029d497dff945347e54", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c85963556622dd56a20f3344e1b502a950a64074fbe7699f59abee7db6b9ce3f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "12137d590aae0c722e0673711b63ca7347914f1a9d398794c2f84457ae8b0a72", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "ca86ad4d0ed5c4fef769e607479f046ff744fd0136b7d4f13f5abe6f81b42f34", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3e884e191c1ea0e94298079d028f9e35f4800b4ecbcafb1ac503328eb1e97778", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "0331633980344e8ab098cb3db149bed5e8a96308baf06cc9a8e350915c822b73", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "0601e74cd253df88d30a1baf5a7597f86aeca24b02f5215426c0c02dfefc08be", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "3123cc99fa43aeaaca5bf2c8190fe7da03f1326065982ccf8c69a75531298a88", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "875f445874c73fc87f766ffa3649920db30bf36c038cf4ffd412db30c8fadd4e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cf69816d2aeff5fdc1226e78acee64211fc0c233cc248b48de2a4175c4f96552", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "6238802dc9deaf4357fc8310dda0f74fdfc8d640b2e96e18215e1812581e4172", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "48225d67b424f9555649e49fd820c70768b5380998fd1ba5bd3574643eb8834a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "469b4d621d2dae2a45953c02a63bc0ca0ea8d287c67a21546bcac2c3cdfd862b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "38d081410f05721b78b1fda0bfb4a07caa35b59bf4de752e23c4615491db2dc5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "639e0cf7b834b188cdf2647d64ea827f94bf725bd5940740ad310e454d9fe2b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "25dbce88cf5d2fa49be4b93cb35a383d851d14f23ad6f26cfa07d1fca71e448c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "0c4d1e38d4cac934c0087a1ce99beac4346f475ff8a887f76158e3ef7f50b8e0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "cff3205ac4f39bedae86dea925ab8a411da29f491fe5e382309626238d8d1ac0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "fed04296cd7ea7645ff20442ac2616f0c7883764a9e084eb21ab99936b1c376f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "3c30c40b4e75e8b371185a7b39e14a1bb8316f188b5a6994a72392b33c458132", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "8115f11c164198fcaea50f946a71214e3518961dbbd64d7c2cabfa50b175c3ce", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "82ec21b53b143f27cfba3aa16d712ac5e00f30610b5cc3b863f00703febf45b9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "dfa08936cb8bb903ce6401517f708631307c4382984c784debd80483d84d87e0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "19cecb871510148f163f961bb49c7b65c2255802868bb2c22ca6be856061c8c7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5921a26b79541b3625e003cd4ad4892b6fcc75772356ce663fd69539990b7a67", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1e51a526b00c95a1ddd2de7f23d97adc9a44d7470d5a91756ac93268d3e9d1ef", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "c7c5a621c48b0a905b41eec1f7ffe2a4c76eeccd2ac1770c33ecd6e691cbeb22", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "9217b3ac409fffd26aecd8aac61a3cc90a22143993d673ed940837c4748cbbce", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "68e9744ef8b20be886890728b84c24fe70e55b138ab365ca3ca212688eee5aed", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "a19e6dfc61e1872f36456be55fe31f0be8ce7894c44d075cd487d2c5f1bd9a70", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b967c2acfb48677bd6402a753ce360546c36ff377d658b893cca6c9b40de5eac", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "1b21b11c79e399858429436ea1baa12b97fc2499fd9eb2f2f9c1caf030c37e11", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "b47b7b8b31970b9d86c1d1290f85beaa75a4701da0ad8276619780ed20556056", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fb1eab528f370c81df6a655e97b3a8585ddcbac8434d1f683cc7c903609f33a8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e368bc8d544e084924be656d303b193bddd8e5d2e9d1ad00fce7b58f167b54ef", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "345eafd63d97e8bc82d76d66f892ec10282b9d21670ffc1741898b90130fc856", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "928ce22ec6ba79f96fe55c7cdeefe2ee62bcb4758426b5f5b5e8dc580b9d8f4a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "7cb4f62a3b5b73832d84be8fd4021f6bd38dc8cce237e5ea287c1cdc968c5064", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "b022dc2f44c5e80f11acc82b5bb14a980a3dedb2c98af4cc153e79b296c06a35", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "96a58870d95cbe609156807c89e88806a5e1e6898cdb207d0e1425f1c8ab7900", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "5d64a0f8fc2db6a936e60d85b87d2d4332f4a53c85fc27cc5671e426b6345597", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "228f8623bce9bca6d85a2464a774a3a414505d31d3620f35de483eac08263f74", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2ecffcf5d28f489c6194e742701f61a23f7dc37e0105ed95395f67ffc26a1174", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d2ff75c92f5031000da9e366c4e3205b2b7df8e271f78afea53e0b1f19d94ebd", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "563398dfb60c8f4d08e069e88e8f6e9f8a7a7d2a5c877f76050af548ad1a6b86", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "8def246bb3a30b517c5a07a7eaa8457e16116e9ceffba8dde20562f20e0ed565", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9ab91ca442d793d83cd01094d04ad1069af81bdf1f107a73bd0416bcfb726eef", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "b89932f633fac79523136d95a73b171f9adfc7a18dce8c4cd09a6f60da1eedaf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "fffa3aa16f8ad9397774d5a379693e950beb89eeaf199166eb30ddb607773474", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "30161f7d604e9ae0441518fb55684923edb9e715c6ba33562777772800fc1e70", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "4666aaaf4484b7604916a9d0327e7c7a4b09fb45da0982b27dd099121215ff7e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "705bc852466e2fc0058ab7a1424129436a333dbcbd532aaedaf180d7a6b80345", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "2e02cb6fb34cee20d12f152d0c8395032bd29501499a2c5d6cfb10762ce54414", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "9ceaef9b9eb35085d4904804d5d42e6db5429eae2a411893dff307b5abd0ed28", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "c7e172a49d91bfb26b112a8f80e6dc7cc5dc311abedfc39dc4a07468718060b4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c815822540a3de85cdffe3dc8ac7460ff7d143ace9bef93eb34e9d3ad3d3ecb5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "61cad2ad9ade428c4d6690faf6dde042a118e13d65711baf62f18e9108b993ec", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "51d2c2dfeac62a025d915831ebe196f4cb4a4c200659654e7b63b4887919a621", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7f386ae3719d67f5735243b2d13a43ff513efcedeb0370538271537f9d94e8db", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5c9a7b5c4e04a03f0ba6deac1d09241e7800ec9c4a2235190c20447295a85ca6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "3c611d6e8993bdf6f39d7059af1d29bb7725693eb9fddd10b69aafde48460f38", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bcd4f6d8e211f3e58e56315247deb69da9c2be2aa0bf6cd8bea8810f714ef18f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "a3b92d0bc9d0cb366d03c2610f9f9225b139bafb618eb4ffeb52a78c325928a3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "830445aebe20e84ee422155841a65aafc80126a1ba9867461ec773fcc1ae6e5b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "de3609841f3e7af189aea683adf5ff7c16b6e6e62e01945d519b24bd5b23adc5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "7b25284e8d2a0880b406a76eb1c68dfbc4c1717983d0a07d3bc8354a60c7a386", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "038923a51af517a81ade0e87e4c7383dd5a56c2c15f890de421dd332ab160dc0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "ca23a64d803277868b595757ca7f4ac3efeb90cad7927c005f8a0ea4b6c9fa73", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4ceaefb8c1fab2d65919ecfe4b4255fed71b51944bbcd806c78fcf2bc9ee1d95", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f83598ce39a7063bcb999a7bd2d39ef7651a1cad091b19e416a01db9e0b08d82", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "bbe6a1422c2d879ff3e112d077e09400cc4e05f4dbd45b82f7701a3e6c61488b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "3319056f5a9af0558a977215677af7497de77c4ece514ba3a95263d3e25ef3a5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "0203b702d6911c31a56c863552ae98a996215fce7d1f4bb395f6851d366bdc5e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "95718a6514ff82671755a08d035edf72fa2f5501614dda84666a97c867a759d0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "beaac8482a92a86907058d611b2bf4d45118aa261df23e705895ed3a2028d949", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "08f26c9cb02a738512715cee170f5715c5401d6d174aaac48f5705692d425b67", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "491a7fa92e914b4472ecfe38448b3145321cc0bbccee6756e9e30858a7c0c95d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "36afa0a86cb45cbe42a5798a7c69bfcb6b81949b9314fbf58993379db95e62c8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5010e021e7724ed9e1b2aa4669806b16e56d58a5654d95757e84e7e559508893", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "1a4f1cea22d643c2e1ff91c00d9a4ca3a2f9222a5e42112edb15c62067b1c289", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "bd2fd50514a558dbc67312f4f743eb0df23bcda287c5878509d93071af5f76c7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "5a2629b56be08d3fcd432043fdfec44c93d52d4f9867997517807c8c3b2dcc62", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "fe24ac4284f78ba3503a1feb4e6b81f7d4b8e6a75bc0c437ea15b01f7821f57a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "18f83883cc3e88a88fdf75791f809f72066c87649ea5a5772dde9d6f13ab7e8d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3f22bbc1df606be69611c5bfc06f1d8b8ff0ba5b17adc8235331d15fd2c168ee", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "926b08bcc492abfa7046f49a7b3d5dbeafec05d2c70279c3e2ff03916d2f810a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "8eadc2fc156c2d58d489c78e37aa1fc18475afb2cf3e383e5c5f78b0492d3422", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "7c6f0fb1e709935c4bb1d1959aa68325bb888b90aa27d0a3baf718aef7905657", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "98746f9ed8a3f18b64bceff9a3596357815a468d7c75465b90116eb23f5c1cb5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "0867105a5fda938aee016c20bdc84a713acb940f165fdb56c2541d5d9d95b71b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "f2aeefc1ea5d7e333f4535cade4993327fd350229fe4ad97cbc46a5c7c58c0f5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "c4350d0201228bfb4b351339ade2cac55f6accb9d1eecbe43aabe6efa2b8937e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2d179adb51a177a1b89de1a99d265a62aa337d22a3d48149541cf77640286182", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "0c2fe5ac188e927104aed1e6c9242c9b82a056ccb7ce7c60822ee0d81b7b1fae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "380602da929f686c4352d12a8d3b08f7ebda11a0602e0fe6385c34375e365b5d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "da95d1d6a27541fbe90eb53d82bbee2b6de39b6ab0d01bebc59c006bb5ac44da", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3dbe22dae9b2e1c254d12bdaec48f29026cabac680fc92743c1a5f6c1b72b24c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f718988d1d5ba11382cecde69994093c84a8140b7fa58d725ed86b393885515f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "878fad3599a41627e244bd770c83130b1e4502d419547bc06abd45475acc21e5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ad57bd031a626f419966c6a1abc4e7cfcdc9fb754b07a6c87f108296da4f0e72", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "a020e334d9dcee22dbe09aa340efdf0e4088941087eb0a8a7d978b79fe1ad99c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d47a180735802a521f2eac359250387fa06997c6cf51f46054b58993b13206de", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "f3b7bc25a49aa1808e98168966e06dac846050169d91e129daceb0e70b1e0869", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d48a54b7c1e6aab8e7a6deb96431b69c7b00972f79ed00f713466e8872a16941", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "d5869f4524c87e3236bccecc7b9b3d517ce630543fe0a46e48f591ad719e5ba0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "aeae690b56377fde71266b8da044ba53bbfa8bda78cc2fe06ce654a32017f589", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "3942ffc2b8f42736447dd80946f3a48a1a244351e46735668994686297845180", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "9387e0ca8ec8d0683ae627b29bbbd717517ffd58c8975bf29864eea5e7d15d4c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "30d2d6e78c96f692fd07460cd428ccf72aff3b9d63ec2480a07c73decf6eaa76", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "b59f5dd7639bb67b99794181393e141e442eafb1437fbf1b9670ecb1d7ab1508", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "02505c9c2db0f84520a6d832818cbcbe824679fbb6f7891c03b99c695b04d546", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "b68c14172eb0af0d71d6a6dedf8e399b6fb2c9fd3d0819aadfd3e94de212b7b6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "12d28ad8a85f29c84539a9eab6f108190a49a13e51ce53a32f8dd10f162ec363", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "4f1b43d03b5ca2b4bc3e96cd7b4442bbaaf67d6b346708b8eef044fd223cca61", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "92f3eaf02f844b2a21c804cc413edcdce48ba40ed29519cf6e0a51ac5f48568e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88fd090d2b2dab8ed153f75f00c5dbb7dbf675a449b1df27797cce4dd2160509", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e4994eb47b22c6928cdcd2911d348514eeb890c99514bf14817779b1298043d8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "136aa6d109936b482e50dcf6464c0865d0725eb881b437ea0c8f006e83bbbb0d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "7eb6dcb4e0326bff47c487bc1dd6fa7b2f5568b3d7f453edd01e9295532b9af0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "825881ba87847d4b8e70aeaae8c04601085d9a7728c97a311ecc7beedc83c6ae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "26bb473b29e4ec2f4470f1d3eaa08f6078b4ec65ff8c3413e80585f5131af1f9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "b2e830770ebb161cd06861b9ad164cca6119f65f4e63b01e2424b7b1b23ce2da", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "c846b8318f2508b56c94849772e902971dee8adf62942bb967b95c02a7b91c87", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "0175ccd332289d9cb18c9439c7c2999a63e28e0a7aabc9113abd89c49302b20b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "55db4c77f5f6b5d889a7bcc1d0eb1a59fa759c6ec5641ab06e19566f50750aa7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "f82cac2d4fe3d71206600b2269719914070ac22c7882d30560adf25ed4d1ef28", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "dc3684364f3430aa3237c75b5ca7fceef63402d2ac8cf19cb0a7cf9f65befb1a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "9f17f36b7b7aedd8bc4b9f5ef5a8a2c66e5e3f25594492963054ff79650cfc8b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "4c0abfe80ab323885e30e3f8c77d640fb486feb55e12f3a99f8fbc5dd511847e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d6a70eaf10d969d6280ce37ace23fdbfa15d3dca35ce907b227b7659d6b90573", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "41be270527cb29d1ef90637038e3a3e2c7cf3afa970f714ead29f94116f4c43e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "92d8ab84ca862861a335cd040fc0827fa7cdd4dcb61d2258e8ca990381948163", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "2cd1351e17ee636cf80183a84cf7fab080471b4f361d83de9c0dc7e11f18e8a4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "03f12b5bac54203d71949b89b1f13d1fc421cb9cf4d25344a87b116f2c9497d4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "96711521fb4bcab5afa21d98b6eb22c913cbfa1317d5d48ff7e4fa3e34f2776f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "32ca5ce7129261182b5775cc4c18eda416f7355a9bb6bfc0e6773f1cf8441223", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d96fe56ad358b41d287f17b4135ce4a0e6733ad8388e58c03e9d4a0ba7d05dba", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "4bd226af29b31089cd30f7b80b1244b0ef727408a6bcff364b0f55ab2dce82a7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "fcfce227c8a7214ed0b9eca15c7ed608785c68ac5bca5437b5951c2e39405f21", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "2edd51d0efe13e6ff44d54bddfbf2037723adc8bf60573ec702decfd79576357", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "4db57c544f62e61cccf843477d4d4de8fd1b4302673c46ed9f69311dabd73b62", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "a0712f15be77c593874a05a120844a7426615025d943970882f43dae02cfdb8d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "6ac1f0d9fe2eb5f7e14d500e141a4eee9d49e10db634a0771df32c988f4d6d5a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "7b2fa94450b8a4d71759c13adf8646868208f545dfc1d1cc636b7309df104257", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b466c3074fb8f2177e2e9261d2595c829683f04d28a705b87879f3b3482db5f1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "f1a9721c40bb790350d17c8476da653e62fe9cc68eaacf380a8d3e1a76ecf288", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "658f735d12a5cb6f5f4ef1cdc2c5bddd1c1b6b286a69f03f381ca84a4068a1fa", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "39c53be9f277bf5b71101478ce425be4a0bb527f5e9b73410f70183cc0475f60", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a9ccf3fd157b469d5f3f52bf3b3b45da6de95171fafaea54ebc831c7e09d8e48", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4181e232880fe2a1d838d5185515311abf1e49ef4669f6b7a1c116348c04f325", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "9a9785c09f0802dcdfb3fac92923ab188311e748c157b4e3ead08f13c3271907", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "48eb166fae383e2f15ad328afe3e1229732ac697e609af0db2e9191345bbe039", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "4028652f73e5ab7ab310f1277b91e094ef91ec317ba6264d24f27debf2c49645", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "1380e2ce0aa441ec7273415802634f96471e3dd746cb45920d7964310b17e1b6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "d7e4456a2709342c4c03c721a6301145b4ff69482e21d4678166953284e9cebf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f8816a6f7adf73b5dc06c494ef49c9894deccf52c689ac99e53d190781921408", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "dc577b700d455495c35d2d5311c33618ddb19f13d61dabda7ae598bbcfe91b2c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "5e2000c4e96cc212bd9fd7a0669c433d26de6ed3a6aa929d3206cc414133004f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a13f09bbc5cb1cca39d74ce56f3a1bec1a29a96d644ea996773be5f4e267f202", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "4429cd4e635b6d094c348f9fc06436fe8b2c32f99beb8ab4b7d302b9168a05ae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ee2deb7b9355fb8cc643d15759463f33d133984f2d8ff9bc4df9cec180472216", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "cc4fe28d21209fd66f52c73dddbb5243c0b80ea3a284871d9fa72cbc30be3ef0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ec6394c2a97f7ca2fa912eeb6cfceda8cdc2b70a597ac7e308f441062e422d5d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dba6dd628337af95db37b279d110174cd82f7c82fad0fb80cae274cea0587d08", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "d7b93a4ef4b750817221b0b95d7a8ebd19b06228849048d69335f61b145c2fe1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "cc4efecd176e83323dac0ffa1259c1f2b0fdd5f423fe61a5b3e3e2ca5bfec63e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1eb1cfcfa1a6c1a65bab22b2e41bc3020a3192ed22febfcecfcd3821f5f3849c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "1779e6a0bd263e15d1546909162a5bc5c5c8dab9ad4a4f9b7d001f922ef56136", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4aae844613483ad481fd093bf3fe1e392bef83db044a366f18bba4227bb51de5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e9825ed7e84e2ac3a9488f3a15b29c3488b46fd5ee0a48ecf416349eb1bd15c3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "24bf7e0a8a939c8ab47df20fd70bf06a9a3fa0959418f2f2eaa77b25a4dc801d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "ba31576d2ee5b052c37f7cdfdef929f5725bcf878134cd034fa17166b863b845", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "286ff2e4ec705d38236aeef53185137308185681f1a8028bffbec6e95b97cdbc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "07aa2402c274ebd3a7b2be8272e722be7ec0ede14002b1dd46d55e469012d389", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "acaaaf96048d51c868056441aea9b3d0c4ab36dde6c26f3b054dfb4d80fa2470", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "7b08e04b138180eb92006eff8e43db7a1fa9dd00dd89250d743bd5922959c262", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c99fdc1a4b58ccd5674f5b08c4fb82c0fe2ece7cd53f33320034dd195d8420f4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "e8335e079329579a2011e4f11cb1d93bd6d9e553818b3f7b4cd343f20475eb52", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "592946a434b8a661400a55cc5b313a74d86d7b5d9d203a5242b9d0439eded675", "T3T1_cs_cardano-test_derivations.py::test_bad_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -16633,18 +16633,18 @@ "T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "9898b320bd0c9def79f7324b33cf000d44f7e04413a27a065119403ae83af046", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "b0d9b978f0bc7d7fa0a556c9ed0f513c71c85338a3f4b3e61b4ce46cb4ffa2c2", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "77911b1f397056967961a1b7501801d57a84f1e97aeeb76ceca61ac403497c53", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "e0c43b4f6d611ffe74402bb558e97a57b1879a6d29c8360bfd760d1e968d5bb5", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "ba149e347a226d23ae448af811f3ce9c5f35c48d64c434063daa946108aa0ff4", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "9a58929ce649bacbdeb69cfefa94feacfce909fb92ed8cacae7a23e71f440f4a", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "277a4fba3145d22f5001497650eb4ed4dc937f8ffaf1caacec7ce9ef97d489b5", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "302224abb2c29edaf224983714827d287337011df24f42f056053df6cb9bb543", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "23d338a2d1114867bd90d9855d30ee06614f87e88e99bc95159ad1f7a7736812", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2c1043851920bba820c433d9a1dae5c2f779b51e280baa2cbeda2b7b66722f44", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "e429a159156ea8721e7ca919331e52cf5a1866472dc6650e4583ef8f1255119e", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "7f540b7561b891aa53c0b133c8f83fdefbe2f412d432f065b6d0b289369d5f90", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "c0788d7b5f5f560ed0eda1f13eb5186bb632f452931fc5e10007b2af08932f20", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "77fa991edad1fdf9b3d2cdb6803edd61a86c7eed3cc54e0237675aa036004c34", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1b49f2fdf92fbc6aab940710821f2f200b95d8c032e7b4d670dafbbef0841b4e", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "1bf98b26469a3fa79e788db0c52db8e47aa6c014038e4ac2656c9340ab27e70c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "30882e0b42492d8152b22aac211c0a057f32d65011b25c9f6e41c6a6b39cef8d", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "2be8a10bc814cd42adf83d60a8b7a53f6c07913c8dba5484c545a083a425cd29", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "58d5eef010f6025531f618a36845244d7ae509de019631735ce7bf256629471e", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a3e327a43fc36d81a24de781bccea9c53802a5de31aea00b3657efe804113a0f", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "36399d81cc0b979d9ab89f086400cf39eb5a711c3363e9ff8bd733908b9502de", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "b0889a4910e3107170af293eac1fa2aef47125fd0c98c36680f92daca585e46c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "ecc6471f2bbfb7f9f7553f9bc2a515d34b124b251e348fb214c216ad911408f9", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "248fd7c1efca7736077467f1054cac4cff52d1c372eb059e8c23082920cd8d99", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", @@ -16802,12 +16802,12 @@ "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", "T3T1_cs_misc-test_msg_signidentity.py::test_sign": "4f39852fcec30a852e74b8ede0043637b67598965f0fef3925fb78160dd7a7ea", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "86d4291310704ea94873b8214865c2c13ce37ed0ce770fb58a34639faab08a56", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a96d4dc1b4167a6680f959663bc1d6ad4d9ea80ed96e409cfd45f935a21b9c21", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "38a245516787319f4a0a645a6072ee4cd8921b95a2f5caeb9f875a40952c7936", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "135acfb8433280183d350cbd8411fc47d6ee699d323330eda85420456850b276", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "042f5fdc9b29bf084339bc62136f6035ab8bdbe0f4cb9fb8c497e4980a34930d", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "9416bdd24e760be97e439db5d23cab47331c679a2c66bb91d551765b06f62555", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "214f188525486bb34673ccf7b0bce79919208fd888ef1904f1c6fc02df206942", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "5354941e7093639a96684258f349f4e913cb31dc7fb886baa4ea1961acf77bcc", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "6a45f7cdb93561fc85ada02debbb1557f710cb73510223c305a5dc72df1c8960", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "58c144556790826166643f3ca1e91c1f44beabe14e56ec29e22a16e9b1662828", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "c94e99466c76302a25147f292147dbafa395cdcf7ed4a2121b24518924b09c0b", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "701a065709ea9a966e7328c97bc08af6217dd2a5aa1a6c6f391868271d236092", "T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "30ae4806ff6b6fee52fa42639444a4fa2713a969de51b24398d28fed5ec08171", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -16862,22 +16862,22 @@ "T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fcc5872dc571de0ac90a8b4e85b0c71ec3ccdf57259395d64ef17ff77c817109", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b52b6513d853fc8e8a86dedcf392b2e11164d53dd968a9e01cbd1ba2562640c0", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e2998d7af0f778bd24035d463e8be2e0e9449527ba0613c82f7f39819e247de8", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ef34de74fc9880d182840276867d4cf2c3a7c4a6b76be5006042b0283440ee1a", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8f8175b8dc3f206bca2adace19c5c18f12deeccc5ec252993bd728e2f8248dd1", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a3dfeeefcf64608588a2cbd8afbfa1e20114db93193b6f567a828889fa023ed5", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "b88fbf7e36fd8c965a3473a199b5e06a1d6221b38abac12a230409a437f6d45e", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "24ebe4ef90fd514c7875bc431084bbdee25837ba0e691ea57ed132ef24c56a21", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "155c282c74f57cd70de5e2fd6c3a631cf61e2f784558b768d27ef2523827cf4b", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "50603c4d74b3601655e8858f44ea3aba4e8b3068040c462defe9039a39fbedc1", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4abbaf876f8cb7a9ab5dbda9268e019869bd76407f073da1d705891e6a4c3f9f", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "0148d8453e66fc43a37a4f159306ef9997a31509045d20db72650330e47754dd", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e739ca92ca25748f96183431e9497e524a02d888ba59365595feb52f39e2a8d7", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "c77c15d18c9c6fa480a654cc78cf3f31bb8d4145542e7e06a6cb59e60fb01eac", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "6f81a56d36580ac4b2a70f2b2ae8157e3abcebde87d04172ba002c21a72a4b93", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a759baaad79a72c6e9c9542d47880433f71be13be4014bfe0a6ff6e8a0518993", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "31b98378e1639b21d9b0cd2115e2b36bc660a5a0cb23263770f0f6a2688ade6e", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "57dd91eafbad1adb75b2619b1b02888f915ad5d9ca8412a64d3a2506a387715e", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "3dbc269446bba1593cd241c42f4e901750576fe4ea4a85560c90d43dc019a1c0", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b622ce57217b0b2549794d52977d01ce023178c6ea9bc73cc6f29f4264d61a6f", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "57dd91eafbad1adb75b2619b1b02888f915ad5d9ca8412a64d3a2506a387715e", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "3dbc269446bba1593cd241c42f4e901750576fe4ea4a85560c90d43dc019a1c0", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b622ce57217b0b2549794d52977d01ce023178c6ea9bc73cc6f29f4264d61a6f", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "19202ef42b7c58a773b043f1c10322cfed6fe6da0391a11a1f63fd3d50d81c7f", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "131e1079caf5485a0b853454351f8cf081fcf173601c575bb029e623f1250f87", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b78e9c0354897a943f837684f23653cbbabfb17698c93adab779a4e8ce5c3626", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "128abc2858b9ebfb1dec79a9d65fcdc73e4dae7203627fa106a30c35152ed291", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "53aa3f326a66a8a75d91bdf1341a60fe24f6d1a4741fbd115321bdba4a0760fc", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b7c28928ed2ad9991b6a484a7a3a41b8da45e4bc574078b99defd67f21c07f84", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "acaae17ed9b0fbc11e0cc9bf43a680155eb5613cd594d8b4c003004bfe3e9575", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3a40ee7f271952a52a7fa156ad91006ae0747464dc86d85f3d18e0af5b6f1a16", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "96f01caad0447f3efbe6f19923b024f3452833a8d1b312e89896f3cdd3b4ecdd", @@ -16947,26 +16947,26 @@ "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a79be0d65ca173fcba0a54d5640ed34ef25f3627125b181d63c8fdf0c1de753a", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "18ce9b7ca7f9b8624f696c74b70b101ae1bf7c2e5d81204c7218ee9ba27d5473", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "00f80564af22147d73b60a6bcb6c5cb3c00cbbb42871ea1d51ffe91a440242dd", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "ff63be464d03dc0c000d72c3cd799bf455b968b7b6dfac30b3b19f4f3a44a7c8", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "91427ed37e9e8daeccaa7fe20359a656345ef945f7d7e458ba430c02e8c71602", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "f55a09a2182a02cc26aaa269251eef7314bc0dec19cab79b57129d45e10b5500", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "97bf55b5ebdc8558d6267c9b3ec8225582a09473c8e41150650d2da4001a9077", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9d4107f8775c15a8da2dacc03f37a1d127422c8c1047486f50cd8e04d69679c3", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "8ba5be02ae9306ca2ae1cb183cf06e572e9c42a73b4d497514913f96b3c40e8a", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "922f457f2a1cc8b4179330f953b4010790d7a966fd1b98bea0167b2985b19720", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "df4fb53032fbddf928b1aa28b45c0893ca3f223799188148da442e262541dcff", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "ff5c2391c29fb35d9d316ac38c027cd2a11a52d463af561f50d48d1e5fe2f367", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "7bef649f3f6544a60adf8c32d29ac4bde9900f65e98efe3a79cee82a5124fd8b", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "29f8b17a37ad9bd94023f0da6eb941dc3aa9771351fc2b969d19171cd441536c", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "356cd7d3c1b1fb8657bf445812074857d9e48108bd62968394a6c7af6879cee2", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "4c65b071eea840ceb90ecbaa80c724bb4a21a1ebf8b79f671408a595dfdeac7a", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "7387e8b22c33d38f0c4b0775dbf626bdecc3d9d07692551a478ae6481f5341ce", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "1b2f74e841e939b87ddb6cbdd6b9ed73b57e4887edeb54799e2aed604e2ed910", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "c91e0e163b89a35a990b600f9799fef59ac24ae44959d7887a498d45429c47d4", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a33df1c42758a3e9b16ab14874437a8052cab494a729fff936ae2a347be74ab0", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "6c1279c302e235d1c223d06d0a29eb5449217bbdd4cc9ba30a242fefb2333c1e", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c45246d319be1eb7e532e0db0c97d724883b9f7cb83aebfd872e082915ecbe4a", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "d0408d748239a16e00fdc9bc867bfffd56697cbf7e093b026430a4a34800e560", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "5906d27374b998e6c9e66e593d4d886c1517b02ca0b13523f11a62e5c5d695a9", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "925f3bc03ae6e2df59c98251b3bb69134580c5c7da0e64985f055dca23367db5", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "faebe94e3e8c793a9c10dcaabeaa230eed88136a0db2bc708ef0bbecd3a239fe", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "014cee4d4b4638d5ea37a311f018d5200a66154d8c36a57223e070ec11e45ad4", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "0e6c993a2f42bcf268769a1a504532096fddb83de4bb688d7974605a19bb6d44", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "43fd13f074f5fb6ee58e29ecd686014f9cb828b6866c5c1d1180e8d8c0101087", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "82f8964da22a68ba01e8b369fab19ad6b2d81a868a0f44e5bc2a4c807dfba1f5", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "73618ad15376493e8b223304d889ba02278a9ee9c631cac63a4f4f4dcd109158", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "7a24ebb022c7ea29f285e969e3895fa9b4de5bfdf992d06b33ed3415549b69b2", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "0e575ed84e8cd2e87c901509a57f34a633f8c5d450b319b202bd790aeeda4367", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "caff7597497c88a9c2dde20f6d08fda852914c18a4cc00555e17caee03354229", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0e446d2144d8937d9d4897a57ef37b2a6fe426c60d1b001952805d965201c59e", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "de50a6250fc127a1bfcc829732da26223a5b64854ab0176db6b1199a139e42fa", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0ec82e7bde0c37727d58e3ccd838b26de0150fd875571661ed72c42365953f77", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ecdb7201452efe685a1882d668bc1a896c2f8b66a145ada8bb39d69ec0b08144", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "f3279e9a2adc37c425036e01343cb73244c80636745d8327cfa0653a1c301821", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "5486e594fc015a3f396d8a1450b4aacda7172099124cba93488eaad696c6a056", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "5753225e1480a0f649a44d8a20e271f61e71a6e253069a5767a09856e6b5951b", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "719cf665adba8647b546101bbb558f4db0118bae88946dcb16216101cbc73443", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "9f5bd47630738cbab2c0a305b831e909ebcb246bafe0ab72ec7222b92fdce825", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "1b4032b26887edf72b877a9757c6f1b72485ff33e1e12d7cd1ce89edc1bb6d10", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "65defb235f87d6b43a1da12e004c4de90dda7589fd5186af9a6fad40667a90ee", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "33250f58847e51ef0b75dde43a5a49dbd0a6724eb37d05412d248cf4324b9822", @@ -17010,7 +17010,7 @@ "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "7ec7c7329725b99bd1f9ed06baa454136876f6f7e624c52cb0d8cedb863f47e9", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "c63c13e5dd1557b1fdcda3654822d8a0da7135c94c02beefb3cf5a2ed99d9a5d", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7fb75455a5ca4bca7ffd54b0b3761f8380d576f1fc4802b91f92782f6062e0e9", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "facb325ed157caff94c4fd82c6b85efc140d4080b49af5264f3d2623dee17ead", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "096de7510aa8224b495f352ccc5ef707604846686e867510a5c563c155e8768d", "T3T1_cs_test_autolock.py::test_autolock_default_value": "4b61de109f66d5131203b30821f201444f3da5c700bd7e78009a837ca57dd917", "T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "85e335514a1fa0fef627f0329cf03db7cca7057767c941fdd9f4b3f09ea57bd6", "T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "85e335514a1fa0fef627f0329cf03db7cca7057767c941fdd9f4b3f09ea57bd6", @@ -17020,11 +17020,11 @@ "T3T1_cs_test_basic.py::test_features": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_basic.py::test_ping": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_busy_state.py::test_busy_expiry": "a2f1a220091d026e1ef43fb075fc4ee8e5efe47f811bbbb0317a7df173075106", -"T3T1_cs_test_busy_state.py::test_busy_state": "ec22583440945c9f8e3c3cb72c41a4e84ec5cc8d1ddff36421787b5be92fe522", +"T3T1_cs_test_busy_state.py::test_busy_state": "12b3fc0ed1c6ecbf5abf26c06e3b6e799b3c648a559040614d039aad9516feaa", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "7c4a1a7682fa733531c06cf7112543a5745eb4a14e4b959caf5b68fc2fffe6a1", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "79c1a7760da5929438cabbebfdbd67b822f3b26812c695f3e7a674a877400fee", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "7c4a1a7682fa733531c06cf7112543a5745eb4a14e4b959caf5b68fc2fffe6a1", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "79c1a7760da5929438cabbebfdbd67b822f3b26812c695f3e7a674a877400fee", "T3T1_cs_test_cancel.py::test_cancel_on_paginated": "7a109cf0bf01162a19330a39224ab3f2da81994e393cdedec0187a9fbc5be0b2", "T3T1_cs_test_debuglink.py::test_softlock_instability": "fdf6a34e87947bd47196af675f9b574f29276379d0daf61d72c6b1c093fff6ff", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "c3f1de4575b8475a9c106c2581439eaa8f932a591ae25294099fd900ce09bd3b", @@ -17061,7 +17061,7 @@ "T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "c990b555bfcaa06d3f22d85038c868f3d96e49e9042ca36484f757875f7479a9", "T3T1_cs_test_msg_applysettings.py::test_experimental_features": "bf16a6e311d82973cc2c049083741f9b52577ece0d54735ae972f8b89851d55c", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "72b124cb1211a206c2df738d97a83a13eaf3e79295da51eb9dad19c575df017b", +"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "741f044e2c5e2d4be2cb9cc4a3727ac047d7c1f36b063fec84d622230f8fc9d8", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "6009d612aef0a77e5683e3de4b7f078ca1360bab8fd126b7829c3f1aea6491f7", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "fd9a6610bba06fd860dc9b504ef9f3eb95d196dbda2ad92cd6aa570b5af2f7ee", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "7819b7108d3909aa5bd6be905a1775e51fa518df7278208928fe46931b98ea0b", @@ -17145,10 +17145,10 @@ "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "29ec4d3d874aa029f6b01d4be33c7c5fbbf4d3eb0f7cf2e7f181e0c3bc0594d6", "T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "c8d945581c6858f581b5581d543e210b42bc9f5613729895888ab02d8e358b4c", "T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "40615d91e6259a21993811512e49e35f5821519f59196cf33d51f19b08827685", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "cb8a523de18141bd45eceee9e1ad1632903bd4d801a781b1a11dfbd5e1a9bc9c", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "a0093204f6ec80034d89d0efddf20247d922b85b9b05beea2e72df2cde2bc9f3", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "44dd0b426eca66cbd8abd0722dd61620de7acf7b795caad6044608187278f3e8", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "e3c76e3b1fa3e8c2b6a932539fef82a8b3dd2f62384cb0de9c2a2fb3cac0a46b", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "62aa257671cbef5b0aba590feeb95d16d9649eea807bf24a9e75ed16f47773d7", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d22c54476d52d8a1f1c0aff7578ef7a413622fd22c3fdedf44c31e9e5bcecf1e", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "448f6af0264b10b8394b3930751089840d5d4be8013e270382882b9c5eb9a806", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "c5dad0ac67c4a34af2a2cc683e207a800dcc1291042921561e7e44734a29e475", "T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "b55a875eec7185f154ef28c06995bb3b29e3d29fbd1e13966b0134e003b15e55", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "203035fafc67ca2fd386886fe4e0898aaca3910e641a6763568b8c62b4f143fc", @@ -17175,11 +17175,11 @@ "T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "eac7c9183829cb7cb48d5a254cb5bedef5437d91fde98dfa735c032761a517cc", "T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "407b27ab4f1c201ea206617724408e2ea3097ea239ff824fdb1bcc25044de99b", "T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "bc2aeba74b1e569788ad61ac8b202dc65e30b7df61a186df651bbd04972853ca", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "29ea63b9f82bb26d024eeba367402f6e6261bc752cb6c37a0bee56a0d537ae25", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "c243fc432f961a9d8f54b97351aca4c609c4b4dcc808204484ec746988a15d30", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "33d9f964f7eafd3deca15781830428f919a3b0af6df3a7191ad69030714ad5d3", -"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "477981debe6c8e0cb2719b0c65dc6a8e0e3f838540a66fe720348772439e1b39", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f928c6cc555fda8997a05766104411a51a0c3d913f88b411cfe3c592b6082734", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "03e643479c4245aefceaf163e403195f5d72f86ce90d3ce07855816e13187cf6", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "04cce9e5761f34074afdb6a19786eaac34d8101605e46287a2aaa6ac5160e09e", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "6cf0c83a2778407d8027b2f4b0e47809d2f00f54dbe10fe8522e6fd7d4eedd55", +"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "49fe0009333a1010a20ae5a6fb723e1770298656bb3503b04cada12d0b8bd6c1", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4ff58317c7488dea29958cbbb6c674407174432bc8a96eaece276b608838f722", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "3e28545928e4c3a89f1832d785b59de7f1664b51366e2d3b0563fc464edfd3ae", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fb00423cf3189d8753385d56dbba2de48dfdcda6071059818d06f52ad29c8248", @@ -17187,7 +17187,7 @@ "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "3e28545928e4c3a89f1832d785b59de7f1664b51366e2d3b0563fc464edfd3ae", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fb00423cf3189d8753385d56dbba2de48dfdcda6071059818d06f52ad29c8248", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "89f77c5701d55ee1b097816ff6989556ee7785b910d3cb0dfa496d965e79f127", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "8aad2462523dfa83cf6edf0af779c7267951f36d3dc1bd24924c1317f6700044", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "6e0b795fec2f0fa5a6ad3c3c29daaf4245ac9eff7e32858b4967819336f8d793", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "3f1dc1dcaedfbaad08a0f2a9e0fa647ecd5080f621cd3398cec4d17055b1264c", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "8832a745d87675a3ea63189f52ae09d9e48d734c4f087433fd349441c707db7c", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2a48672daf15ca01c31504903339e3aa4bffffdc5d3cdd5391e6e650ccac92aa", @@ -17204,122 +17204,122 @@ "T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "e52bf2b926dfada0475555f24afbc0cea03a8da6dbf95351635e09beb96123ab", "T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "ac18141076ac087c30615747091d39434d47f0f9558f6484c1558c57b9998e34", "T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "386fe8e1b512f90596b415ae90e8a475c2a083894b7bc80eaf76db36e9e0fb90", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "e1c30c4b1d80b99df6d324fcfe11af0a56b0ce05ef35283360d526eea623e7ab", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4d490a1000785eefae566f90d011be02b5816bdf706941038e57c9ff28e64bf1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d904e67d4dc07677fa8fe641b3ce76b7ede9122fce1e4fcecfd51d397dac6b19", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ed70bcad464a58ecdc3817cc1d39655844dcbf472c8d371f6fab95cbb4c60672", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "044364a0b58bba0395d306f98c415360e8a26954501ec8730e3b7103045b6681", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "71e611b0db091fd0f80a93cfd68fe5f5b72476301fa12c5d8879ce68baccc0cd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "92c14d45d7db6686b388be8780efb12e24246732bd534962f5dbf4c6029393e9", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "0b4d5210da2474bb73184a002e4b21e3c91c0f4f00d7fb2fa4eb050c181db9cd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "78de7f2e2201c27baaf244002409667d27cf980e743af841a87332f5e3473d2c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "1f41fc7ffec60393e25de8c2d7c8bd73a6d8fd5d3b87ad3493c6e8305a12f36f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1af491b6eed000d0ad69bee4874c75379739b60dd0a24fe73109a7d3a7c0880b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "884c3082098187e08a51fa65ce53d7f70bc8b509f9c668b4bfe519fdaa3a7659", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "530d2fa586cd91abd631ecdd95a4fe10416d3d2f552b09e12677dc98cff8d45a", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "680c8cf272b13a3dee9a85b25b61dc3b6ecfedbaeb4d507177f3cf36784b5d96", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "244dca955773fc1ada5e34ee4f71b675e946f09d56a399f05b8b4b41c89bdae1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "61706749bc029e357b8fef5396b00b8e8df06de3c943d7aa0f2c4c5a026c119d", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "e1c30c4b1d80b99df6d324fcfe11af0a56b0ce05ef35283360d526eea623e7ab", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4d490a1000785eefae566f90d011be02b5816bdf706941038e57c9ff28e64bf1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d904e67d4dc07677fa8fe641b3ce76b7ede9122fce1e4fcecfd51d397dac6b19", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ed70bcad464a58ecdc3817cc1d39655844dcbf472c8d371f6fab95cbb4c60672", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "044364a0b58bba0395d306f98c415360e8a26954501ec8730e3b7103045b6681", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "71e611b0db091fd0f80a93cfd68fe5f5b72476301fa12c5d8879ce68baccc0cd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "92c14d45d7db6686b388be8780efb12e24246732bd534962f5dbf4c6029393e9", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "0b4d5210da2474bb73184a002e4b21e3c91c0f4f00d7fb2fa4eb050c181db9cd", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "78de7f2e2201c27baaf244002409667d27cf980e743af841a87332f5e3473d2c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "1f41fc7ffec60393e25de8c2d7c8bd73a6d8fd5d3b87ad3493c6e8305a12f36f", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1af491b6eed000d0ad69bee4874c75379739b60dd0a24fe73109a7d3a7c0880b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "884c3082098187e08a51fa65ce53d7f70bc8b509f9c668b4bfe519fdaa3a7659", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "530d2fa586cd91abd631ecdd95a4fe10416d3d2f552b09e12677dc98cff8d45a", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "680c8cf272b13a3dee9a85b25b61dc3b6ecfedbaeb4d507177f3cf36784b5d96", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "244dca955773fc1ada5e34ee4f71b675e946f09d56a399f05b8b4b41c89bdae1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "61706749bc029e357b8fef5396b00b8e8df06de3c943d7aa0f2c4c5a026c119d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "79c10c13efda1d7586da96a0337914cf170810d20533d3c350e49c626b093d2c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f8ae2a125f4f136d2d0f1cbab11dc7909b4bc99ed42fc30341a9b811b60a8740", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "5943f14ca043989b6ddc2c000f70ffb9a5103c8da56cca10b0e5d5ed3bd54a98", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "a4b1e3960db4e72de8c75ee37c908624dbf28aeb522e8a62c87bd842ca8cb943", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0c20ad45846672f070c5d3458bb2d58576edc3beb2b0d27dc74d39f6367eb66d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "6e960c26df3e37d04fd35c5ce8da512f0b336aca5beeb7043758fc47d0fe2e91", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "d4c83ec0e787b4bbda61e71b90acf202631ed9950e819818a413cf2df64ae0bf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c5f1156a1b2bcb948e83fd87e120df0dcd10e089ca6e98a8425e5648006510be", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "33d7060c2756396a85f262e9338b095268b03f749b515e0637a5d19832d3e69b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "fded80d445b881885c81b743fa0e9af84abfa21add6c02d015fce20098a7cb8e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2a32fbe6a8fc2469a1c7121416c0464905140a4f2aabc6f2ddfdba09b9fd8243", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "fe73715b68cba71b408518b95999f75d36b2b2aae24fe42db3ed09abd6f23101", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "08a7078c92c64e57aac998d02e355d2d46bedb406336916be0da323704adc5e8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5c15d361fe8540b456261b506f51a8d2e7a631a903c2fcc456ed4da925818388", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "64b5a884ab6c086867b7971c0f792805a13dd938993b7a3df9eaa7885323be9a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "393f61a399bb281b6d985d04bb94750e7f9d4aaf0002cf260b5b2745f61e55eb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "79c10c13efda1d7586da96a0337914cf170810d20533d3c350e49c626b093d2c", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f8ae2a125f4f136d2d0f1cbab11dc7909b4bc99ed42fc30341a9b811b60a8740", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "5943f14ca043989b6ddc2c000f70ffb9a5103c8da56cca10b0e5d5ed3bd54a98", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "a4b1e3960db4e72de8c75ee37c908624dbf28aeb522e8a62c87bd842ca8cb943", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "0c20ad45846672f070c5d3458bb2d58576edc3beb2b0d27dc74d39f6367eb66d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "6e960c26df3e37d04fd35c5ce8da512f0b336aca5beeb7043758fc47d0fe2e91", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "d4c83ec0e787b4bbda61e71b90acf202631ed9950e819818a413cf2df64ae0bf", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c5f1156a1b2bcb948e83fd87e120df0dcd10e089ca6e98a8425e5648006510be", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "33d7060c2756396a85f262e9338b095268b03f749b515e0637a5d19832d3e69b", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "fded80d445b881885c81b743fa0e9af84abfa21add6c02d015fce20098a7cb8e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2a32fbe6a8fc2469a1c7121416c0464905140a4f2aabc6f2ddfdba09b9fd8243", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "fe73715b68cba71b408518b95999f75d36b2b2aae24fe42db3ed09abd6f23101", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "08a7078c92c64e57aac998d02e355d2d46bedb406336916be0da323704adc5e8", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5c15d361fe8540b456261b506f51a8d2e7a631a903c2fcc456ed4da925818388", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "64b5a884ab6c086867b7971c0f792805a13dd938993b7a3df9eaa7885323be9a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "393f61a399bb281b6d985d04bb94750e7f9d4aaf0002cf260b5b2745f61e55eb", "T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "e66bef90461fd23c25b465b6b484fe8e3a3216e55afcff7e47d6a41a4636e5fb", "T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "04b2fa27bd1cb14a4299c8a467d0f66813777d3fbe406ee8cc82e5de8ce31398", "T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_bch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "efa735ddee3aae8e616934b765577708d3da6354a39066d5f59c7c29a611f6d6", +"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "bbcca3f3396a6aa9d2b9f153fa5c4188382506b64b7ad55cad933d864224b0e4", "T3T1_de_bitcoin-test_getaddress.py::test_btc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_crw": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_elements": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_grs": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_ltc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "3d9d5472a699312b9d365598f10dbfbf01b0ba219be8f6be4ea173ee93646d2d", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "cd2876d3dbb24b4e8e0087a7a9f4e5a3b995f1e8af17cfa585bd44a602cf6fbd", "T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "229dd2a895a5d2163da07627cd817b395e89ad73a2225bfebbbb4ef5fed02bec", "T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "a74afba576f160dd89746537c83a3157ffd3ae638e26000b4ec929981447e15e", +"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "55970b8f30ec1b034f338534f37f2c8663424b4de6e6833278fdc91e0d96a2e4", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "9face34a3b22920935f94cb93dfacfa8e654baae0e6ad11dc776cf0552451c3b", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "10ceec1e33fdeb047ade8e973fb98e8f7155be0f88a31a3ac05827b5418f9798", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "9ffb79ff36b00ce77760924e87bbee6228f5c79eb194af08f267214950d7f6fe", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "49d5b999a05cd06e5cb805802385524cefbadcaa414abf58cac64dbbc96cd3a2", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "076b8f717fc2bb53084a40d584365f43e4cf2635ea4edd518be4ec6db8a753e5", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "789b0c1c6d2640208336582273a3b3a5b06aa78c675b7ee4e780c363354ae775", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "14510aeca687dd920f4675abc02ddbc3bd6e31ba62ebea7a7c1abbc837b9ba24", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "92dd853583f2021043f94d5576219c31396c38b71e1ce023c4370c0589e954cb", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "600ab73d7e0c10f5752aaa0d619f835c46b6c8dace7a63b1ec8ba87a04ff5bf7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "08497eed3cf9f7e097e590a753f53db7c4216dfe894c812026ab51a8e14d912f", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6cc50dd075f5578620b1ea8b35c0bc1a63e101dbfa47c7ffa33070d138ad21db", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "cf8f31e98562565d5deef579824565d219497198b892ac20b2a942b958c470b9", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6c4294e5f5f0baf99925e5a83f45d9dc97ef94af9c00a3fefc17e3cfa9cd1f32", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "566c4f3764fec63f5e0c836b5410020f4be079385b163589ef76acc63d6e5a21", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "2401809e99a7e7212a1ce18e2ff8388371164ff64f182b4fa9e3afdaa706b032", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "beed63827f04eddab3c605ee56766fe31bfd91d66e54f0ed7932dd07e8da14a6", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "c3cba4d13fd6777604204e31dad58f6c8f2d9c78b8904c5a9f39b5415690e99d", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "69e1b0c18d2ae75a307fb10800b4cec13137ab56d7ebb82a96268d6917d0ffd3", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "7782486c71236af402662b02c8b0381326e3ea9a400b930fad78f0f8036debe5", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "8af8cd3d15190bcd6dd7f3fffdeb50accffe68ead12dcd3c47cac2dc90bfb24b", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "4f6753d445521063fa2a8f368b71f879e1ff45bb3a118e8fdbf812b6922e9ef6", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "cc9f2ab4aaa06c6dc1568552e497bf81ba15a74ed1b2a47e9813c6330c4a8062", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ecd0f3d60d4892b242c12c02e6fb3fce28637e7bcf73828a25222195e206c2f1", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "7c047ddf52f477ecb2f4d6c0fb6843044682478e06992d48184f28c72a7a7155", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "f77f530c564f909c213d25386874dad0435ef756c75487328069382ca4915a4f", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "96dd4bf93942ce0786082b2f3d1197e5f826bdee7d6a7672b82149c875a106c1", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "0556858aff854a463617775a7f7d89c5fd9718a3fa062590f4f6f5d609a55e9c", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ee3195247ad72211b1dc6434529f7b51945efc10aa13250cc2dba006c54ca1d6", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "eae6bf15d39f8d561d38507e6aac631d9b9c988f75795d6dc991a8fd564ae431", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "186da0d1957c800a7a8e977f3696b5955b420c1c3628d720b1a786e0c9786ae7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "a23c9cb96616b54a058e67e202dacea218f4bacc94b4226afc595c0cd6a6ba8c", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "7730d77c98c282402cd3e23f5f7ac01fe4c632b1af6d97e0459c982d4d28f44e", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "b13f0e499c3d894e0505dc762677c8e4849a41d4e69e2343a41e35d8486df2e6", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "39860107fb5cd2f1b8489029a21ac67408151039e6e20cc8c0fe5df402fc5d52", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "189742ed258bededde906068196b43a71e71eab98c0f5562c35f992b4f17cca8", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "7cb56f55bf6284c941974031d8aeda8acc3316ccc570968261c40065a2ff2651", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "904203bfdd98bf859db1f8b05eabdc048b5d90344f5dc4b5176ec2a5546f43a9", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "bb02369da2574acc4c9e155574d81519163f25090cf3bf43e70b1b93dced9aa3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "4cec908f7e02db4cc5ffd93ded5185c6f85b47ac36bfaea46b7fecb0ed2e93e6", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "eb0d150efdd3e2f1760336e7d61c1fac76200e6aeb51003ee254a1613d5f53e3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "eb0d150efdd3e2f1760336e7d61c1fac76200e6aeb51003ee254a1613d5f53e3", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "005eb33f480cd3e8759d371d2d246a021ce7834d9e2fd833e8b6a794196848d2", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d47d1d4046f40ee9cc4aa7cc3c66a202538ad0b6a02aab4a1fa5e68b9c5b2099", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "d1167ea50485f95627270a8b0343c56ac750e88eaf61a570f97bda8e7d23344b", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "8117a9e70dfaf392351ea0e3128f58a55b88cd95f9797ce0447f26c365fb3674", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "25c2826358d0f24df263adc2fe30cb0278f39d64709078ef2d6e29f0fb3bc038", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "5854201e04ad6b35c14ee59b7a9de586706c5fb04ebf9aedf0ed9d33ac35b12f", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "01d0b35ad3a022995c42dd8e52babc8895c09678d98a7d628ce290643948bd4c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "3e61f1f80b227bcdc2fabde3f448d5b574dcf517e3c77284ebec33513c709327", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d2b79e7cde44e53603f67b5d4522bc385c2a098bd662d46602e529862109d2d8", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "56a6d0ee7e3ac08a07f2ac50b844dfb3697c38fa880cfc5681e02f62bc62fcf9", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6dbdad338ec4352728e8dbe14b74fce608d67785a3fdf742fca57a1aef78db5c", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "16a2b025f67c4ebab9161bee395251b6022bd138d55f4b04919312d2b2701e45", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "1669c1717e09b93a70d0ff5f00a0c158158b0be0c149c6b0e3a046f4dfe62b98", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ea14ffc201728bc2250339c5130e8334a08eed5138522b7293074997dd8c427b", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "b29825a1187cda2a6f1f2f98c3e42456d6190eac3dee379b61657985a0055955", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "0db48d4a4ccd1752d70b6e8beb260508ea162ba5aedcde58dc3a0ac44fd0d949", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "06ec433a79fe7f7cc83110e76dace45e38401437fde34b2c985d1fed6010f3ce", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e4b031e6049fa9c14ae33528f744d10a466de4cee69b29ddf46786a10675a1d0", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "a69ababda2469ac53b4c004be0472e6d60028e69324bb50c18c7c453ab484692", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "35bb3154ead77108002fbb15b4a35c49387df04c5fd92ddd1543f797abd2a215", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "35bb3154ead77108002fbb15b4a35c49387df04c5fd92ddd1543f797abd2a215", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "82f785c48e6c2fe86cd3f195cc677f82bccfe2afb3ead2880a177d40cccf7df7", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "f22559411d9451f77f85cffc1b753e6ee871c2523e65e9d1ff01c1064590de62", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "2244c192d56f1f905ba7166e518e53f4e83d9082005e8a2bd750ecd4a4bec5ec", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "157c7f4707e968289b47bab9bfe3fc01daa07c71e75d0b7b8d79a739e83b9a59", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5262d007231b581fa59cd402589eb14eaab9b44fc3baca30e4b7fe7d8196b768", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "61671b8b6d86bab4571b8cfa5c4889f3405a70fd033399129ef02d7aae379877", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f10940262646183b0c6bd6b15c650aec213c5c75dc54caec1216564f122915f1", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "d29ae7b4616cbe5d11444dedda9815a145625d7110499c013c4af528fa0b0914", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "e61d40a6c49e92c2035ce51356ba6e8ae7a7f4e3e3bcc51875d12f2304aac9b5", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "c1e9162a48d29694350ea173b30c20ae8d734ec9c58675785cff49981ed93814", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "74ffe6a0baf06c8c8c26245e55b3e603a8d7c38065d372c544ae275b82e77aec", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "fa1a37429826e81d62a3c2b8d87228aee5287c795dd16dff531f9bc4c9d52589", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "aae088e2363ba33700177340d81b0b533fc428fad222ec68e650c0ad336bcd99", @@ -17340,17 +17340,17 @@ "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7e6b22cb969288c2950d9f394da903f361cab2e5d4fcc12e746389333fb84da2", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "099b1fdfa0a20e423558baf7b4fe8a223988a25db9ae39dd9896816c6108e196", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "2633ff51c39bf34827cfd357e2eb156b6111325d343b21f1c3b9aec6f4262b53", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "14e9102c533aac682de255e1faa6050fc4aa301bf49b00031ca5b5cb1cc751a0", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "11f3592949b27ed8b757fe155550656b5d054c200cea1978cc2cd592b7142a34", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d318a2f0bc388931a250ca78f793c3c906ddef564ec1695a73b0d764f16fc25e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "dfa6c43b3074d1c8937d121f2fcaf0c02c2f40b014db29cb10ccb1eb3192edf8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "b7652f1e9aeffd24634d338987831fbc964a18fdc30d00a10a31e1e43fcd70a5", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "45f08b378488241dcd5f6b4476cb8db1f88a38d293f11f557560fc9cf24784f6", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "23c27a594d491ccf20066251395642b900df80c8f87d98d2529521bea8446987", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5e348a086781e41a6b873b8cacb6f7022eb85504d00803f365460766a5749c79", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "bec12784ee8614d14309e209e420ae66806b9b1b464cbaf0ae3e1b9abeb786f6", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "c480ca90a6782370273f61f0ad113baf6919416a2ebb3ff1179e1823bdfa24fd", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "dda52d6688efe066be3ce0aaec799b8a86cda0e6bde2734727491e529ae2c67e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "a560a59a6445b18344b22539b6b0f7a638206a0fdaceaba43171704d957dae24", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "1e16e4eceee57e68fd6f3ce2858fd94892bbbe03526c6d87695464928eea3706", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "192c673a671ad9d18e1ace53a00eec225d06ad08fcbd8c26d1c5b38aa3a8cd67", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "48c39a567879d0fce1ab299591b63f77f174d560358f2ff1c7a863095585380b", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7f26568232a062ea4f8bf7114321ba20f9c34f6de8453dbc1b74f2fba5833884", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fe43a5c0bc9c1d9b7b88104e6681ebeb3f555847adbbeb56f7a31ba732e5bca8", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -17391,24 +17391,24 @@ "T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "55fc461ff3e9b3e0c8111c0ea4f935b89d07b2b98148c03bf30867f26197e099", "T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d1adb7c339aa9841a73af0762cbdcec4bbaa437d24a91f530f7c2c7eb87d9ab2", "T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "3fe757186784d5ca33484ffab55e8697fabb2f3523bf86c414d50374e6199378", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "df33d2c2c24dbd21a5f8fd6daa15cb7bfb56d4e7024edbb1d190cef44e7c91c9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "1a9b980d060ee65b31f1674d3c1f7041dba10c7af3334da2191abcab3e36ee3e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "d7e107582372a70d1a8dc7b5552a2af3073760cd2815efb3c28aecf09be9bb14", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "963166e164a58ad5b4f321537aaf4d8cb7de46efb8208028e2bdf4efdc696e95", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "78d9fecffda899b292f6f2cfcbe39f3317120e00f768b147048d4cfb37793907", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "d4faf2ffe2232cf4b8c6f8535c7d1dc85bfb25e8cd669f667f790d109ad905eb", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "363969e7723d64650101fba221436b57c99877a9cb13a85242d448a7349bc17a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "722081041a1d7251b5a53fe7950f3673cfd9d74bb9fb40ed8cdc10d8012374d6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c8a8d11082234e231e49dd1c4d1d0fa7ef5c91f1c350d9e09c9e282cdc30aa40", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "d82af9df01a53c3ceb92e8693b4902c3566e0d2008dc5f5c8505f159feb19ba4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "50b6742edf81441aaac2fbd4e58622b4458fadb8af88810b2327714e8c637cb4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "76a2037275d86c0b481ed43c2c971f46de542e80ac4668fc1735a6a913dc6b99", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "fc123f58ded8c66583326650fd2c819ebe55bd9780fde8fe169d359f2c3c48f2", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e444bb851f5c89f2876a857f21e80ea016949ac55f020c0920b2f6c7417ea911", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9f5f04f9d6a2c6ac4b514fc4a7e5c0cd2c8166f84f2294067bed5771a7cfce72", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ecf30f5cab77c2e0b04b36654d2377fa4d297670d866793473add96a43348194", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "437a5038e94258788f35aede2b5f4368a9d273184a3764908747ec12c28871f9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "a723997d914aa38e4cb6b4f595f1f6d632aa195e7d091f1a92cb2e59063de67d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9f9f0e6ba6612396c07f1665ddd77a106b0f1801b474c63d7a6d5508fb20cda0", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ad6b94af336bb30aaacfe6ebea97948961aa470d1c5029516d5c710adcd2ea35", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f8f3c72396177e9f014deaa5418a4bc8add1c31e63a05aa578fa0b7d76989b1d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "f168fd75bb0827b5e1b875ff13f125cfa55558517f85a85fb1d1a3b90363450c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fbdd1a7444a1e0815d2d8d73e09f026c9bdcdef69ce664bc81b4a5286ee87e3b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "ce8342bf682f3a480298bbc049181a496a6cc007933d00f2138d78eefc791eba", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "7d67b60c63047beb5b252dbed4e55f63e5ec8e601f2dd1ca42d25e801122339b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "7749e32a65b8f708c05dd8e9830948f6276390f1e58ab3b2337798aa15ce2e1c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "bb58fc9a2d6e485161cb6b860927c938a1dfb603339be4c321289a62bfccf57b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e6fcb061ca901b0229ede34ed5f5bef4b7c4290ba03081749cfae81a1e4b0234", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "7ba8168ad015c5f9b30a8c2a3a300cf6df4faba0ca0e78282f7f085bc1273bdb", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "575c7c630e0cc56e360d19964e6fd9161ea041aafbfc0ab55e83dfce4e1b9a43", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "f5cb19dbf8e35a7a6f76d9f9eee82056c48b4be4f40eb3ea5001c8cf8e4cb86d", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "ea667c2041bbf30b7ca78e608ebc47f2ad8d6c5b61c9fd57edac3e27c20f4a6b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a419d6c94fe7fd3a9dc0a0b9386260aeeab3d22203bbe3d50e4616293661dcde", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9eca3071f95dd59e54140f2228ed9f6d9046b308aba31fc259c4282f3dbf8faf", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "2b83ab20b5dd9ffde2193fac70b7e4389545bd77d4f20c3f803e06992e5c1358", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "25d8f3c49827ea55b293fde11ed4f636c6bd7044d74cddfe1477ea4c6b4ed9e6", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -17626,106 +17626,106 @@ "T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "d08832269b183d716b6ed3ccf6d3418a9f33dbb7ef2e0f467e2ec1fe581a0746", "T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "feae22f53cb34b7e869dc8f175f5b043df9f8f4898c5e30ee01a2918ecaa65e8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "8a55d6c6e8ded64c319960d7dac704ab633950e018f6341b61b90d6ffad85dbc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "8362c95e94002239a950dc40f583eeed632f29922080ba27a26523f065b7daf0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "65932d56bbe3ca5342265925e348e755b695feff11bd074a699a74ac035235f3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "01904561fa7ca168ca1c94df38223f83f08bc7f8fee7c77d655e1b96f0ea6f44", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3170df0a9b29619239f2dcacbe946d1b1f6a2f725d0e66eed0cc235f888de4c7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "57a29dadee5f7457ce67419dd9c7161a0dce318aac3aeaeb9d3191ef89534a6c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "761ab5a3bcd8fec0aed666135342e96633fb6e2c7396ee66f7a5c0480eac857c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "a74fa37103f70ac08adf00854fdc19eef571920b30b1dba9b4ede9fb57c33ac2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f2953ccecffa058b65c5d6ea190390bbf7bef31009914e03524f0a390b423c1c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "49b0fa9a23fd2e4f18dc7a690012e3c7d2ef654d6d5271c1e9a76c3463fbf6e0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "b5dc4d577fff94cd3afb175b7f3f6dbb9a0a7a8588f1e64626b79860207c3521", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "011e9fb73e2b4ab12f9c8d19482cd03926fca2e3b2962e713e60a97808b0ffb4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "017bff4549d55a94f8c40766c1e29b2e004eeb028bc193abd1031e1f36ce2fdc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "518ffcb8ef6adf2d7875b0656937ea7b930b1b6cfe5673a372120ec57d2372ab", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "dfa2805b65a5d62649eb44d65633b9fab3679083170e2dc9356ab3d7007139ab", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fbfc6e32aaec9126f5ec521a5f8e88928e012b564035f19d0e5c3ee7296d676e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "60036e7814d525a59654c306b00f6f40c62a95e942f74a16a15f009f6b841b10", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "b1f910ac4e4ffd80c4d9f03ffb3eae6ccd61db432a0584bbfd8a442550c30bbd", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "a46c90a9e61813e6c43ec2ec3e206f88a889354c983c64151ba5be62f7b2d679", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "b273ab2bd0ff137d4a8c5567bba03e44d7ab0b486ebf3623e01f26c4c3aa07d3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "a19ab75c6ebd5f210118dea1fa3c4d9204d8e4f6971921a3905706e99400db0b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4562e51e8be6e786ce1f77b58acf8d8d505062e4724e63689b155434ca8d59eb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "0cff946db1b6fd09101ab169c321d431652b2ec41915485b25ff415299e3abad", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "f38249f90669900a5feba930da4125a757c034695c491d61a133c1a595fe3cc6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "35149cc63b8a64388754f4be68161b98071a9838c39d2827c9ea649047d799ed", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "e23250ebf0e684afae5ffb4d063195b062ac77e7e59273a2d23f706129a819fb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "a59b58f7276b639067e963b6a0ad3d59930b8c42be2a5fff000c4b248672b29d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "1390dd5292836b05f854ff94781bef4b10e399853fd58839ec4debac33de0298", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "fccc148e69e3470e93b18066b46cfc6c35f4164f48f27ad9622a31e248f6b241", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e0b19ea9ecb7ab604b31f94d91c4bfe7684d22a030bb4cff616bbef3628af57e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "6e1f45ce60ac19a73f6eecceeff3e95a6a022d28ef3196f17b48b60dd22be98e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "d7669202fff0c5f2dc1b049e26fdd1b7d50639b69e6735a0345826ded863240c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "92b8b6eab39bcc07bab9bbd4fdd9ad56cb992ac3b5e1fdc2d496ed1f97e49fe1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "77118d0aebf4a017062b64a99c40f7fd6ddcd772c078061cf31085ea99ccc2ed", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "86d7ddaa0ac42665338252fb8f772eb587485e0e2724bc5b37b5e2ff98bb1631", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "530129e542014c7ad3c3b0ae580895d85d0fc99cd171f625c5310682874c54a1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "c3c2931343b65e8832d0d38080db184504d860ef58dd0316197272123c379d3e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "8a2f4152957349d02b0e1e111e979df38dec558348388d802c9d2b0e10c8feeb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "7699e0350794486f21f03fda0d0c119132656fb0a8d697fe29fe3ac8f91770c8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "abcf6ca1745d22ffab4328e456e7f5d034438820c8aefb58abaf2280f7df374a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "5b03b532bf88478870a348ab0543b244d83f327fd1d90a71d1d742543c937e9e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "6bd6fbad9fec637bce25eadfc1e6eec99fac291899cfcb738450c92dc597ffe4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "4fe86f68e577a48fa04faa4098a4a6b2449321d4247467a612ffd5b2a7ed01a6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "31847cef4e9cd4b2389e887f722beb097465c7c4a5c0547b92d53ce6e257b1d1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "033a0a857c3b884289d7a1795067b7b6fef8f97a2c956ac59d38f6df25a6c49b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8a400428afe75dec369078c2f8b3cad0087d94ed4a6467176c2f0d81366eb160", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "6a424571323aedd60ce688660addf9633dc6c4fd9e4d6afff61455f78b1b2c37", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "dbb4dd3d199c789b8f353a5d9474fda6ff7b6bc4cc80b19119a7fc2a7d76d5f4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5641b7fe4db55cfd3dba979c847dc0c7fcf28b593315675ce6cfe7c51a93d2ad", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "096aef7a6276ebcbf16c81bf1c5a27d315fa55fa31305d1e5c4c5de1288ab8a4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f347c34fd8e695f2d629435e2679f0240e427de29f105cbfdd94f1c4c8d57fe2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "d802724112e4d90fb1d263738703b5c89b2a467d13e83909b8a8a43391c80ac9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "2ca5665f821b3d4ce26f6577b75647ac1c15e9dce15db203299f3801d46e4fed", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "ec5d448970ed13431e8d2f0282ad5a7bece8a3e82974f93be69033b37ef03ffc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "a9f72751b2da9affec8c06d326c6f4a690f1f4d991fd634550a89a0d0333e8b1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "37363410099c20f5bb61960f592a531bd5dda84d787211968cfba6864b3baa49", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d50fc3d4473d05309524bba8bba10ef67dc8e881094868ad00842301ac2118b5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "ec00ed9c40d94b9ea262c3d86560a5223bdac941ff0a1c6c6a85abed8c31de4b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "21736f3222d6310bac3f9c5e1740eeb2e84ba9de275c5d71d828b86949973ff5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "daa2aab81c12900bee46be8c4eac3fbb1f99ca0d1f49ffeb5947b0e57932119d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "639b397f77dfb68226c0083c7921e81bd6c37c7fa31581144878ab5bd32b72b3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ebeab602af5c5a5bada032b7dfa2184fafcba80e1cce08e12d9f5c16568baa4f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "21ce5b11e4108b7e4a0f13819b81dbea6621640222ff099d0c1671a41eea7b02", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "1eacc8c1f2109b2dbc9e9cce6ae6522228163fce8b15a7c5208bfcd0214728ec", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b70b1bbd36e6ce8b1d4b6d10ff1aa1a07c5b1907c9f7e17b5f55fa1a659d3d55", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "4d82850d4b6d2ecca30e7908bdfcb3822acde7a9fadb110f7e0500549aa12341", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "8ed10b4e857a9d833ae042f56272dd204284a4d046d9a65d3d2ccc35de0fdf3f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "a468179ab9a96476dcdb88fb9e3ddc6c7e9085e819f3e6b55f7a8fc528a97002", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "62d5a14eb48d0e147b327487bf70def1557e817b985a12db82459d791fa91c30", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "1c2d9ca7d30d3dfecfc375530639ded1407a6533d22d18ece77070ee68e9c560", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "b58b2906e1a59cceb81f2175eaec15dd3311acb4401b210b916b94ac62d2a0a8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "7fbb65997d4eba3f3d0afb2f7a42299c912b7558cda952ed101597ed370a8551", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "a863752d3212c10bd6f6e38d739416e9c8db9632573529a19f11662b9ffa74c8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "0138de98e3978bf9f53bcbea68235852bc99a34536273f1711e29c9261ad4ef5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3cd2dda13ba03c3a7cc48c966516b9ae2b72f607854ff7dcb0721ee844e782eb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "39a3b67bf4e7503c2e5fbcd1a95717ce36f2e9fa9b709a7b84e394cf63c0cd8f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "abf859060c00d20e1dc9507b9af5f8ac37b65c4c3b7c406b438a1635ee9865ac", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "8009dfdeab623886a2af61b011ebb44188f6540baa5cf250f997796bcb73447f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "74e5146ac7c47d1e6f8a62561f649906bfc51a5b6d9671e3727ef520e9a04525", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "10bae90e63dd93387f8eb4462f5fc58357a5b014dd40b4cbdb1589087a0c8dfa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e47bdc342c1ce26b1817b3a7137ac3200314ecb872971b66df93d41f91ef95c2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "47064e1c708624c7bfe4df9778761aab2022367bb3be25b053c8721ea329f574", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "3cb6d189df0720efc32d6aa233779bcc9ac30a95f1aef7a867a9ab5563f844c4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e67483b4e8ce7e5d90594e3489429bac0e82ff45a21a96394fa46e863d4d0ae6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "09f039bfb693689bac62f92da9f840c3cb4c7d5f6e2e3ea16d956cf7006f4005", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "5e61fee553cb4ecd6294164c4918262601c4679916ee92d570167e9f5267b985", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "b5a9be2163a8f51c29dabc94bacab05d24791c9c63f7892a3acc64e5c902e423", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "baa8c8713ce423765a5b4abc9672d5a0c83dd8cf6dc473ea1c807f8e428f1f0b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f5e376df8d547e53c6d7658db15561a24f2f28258eae389553c7b17f04b84607", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c72a5552efc0978888e9ccd16078d678e4c71c7ca7a2d5ce3a2c5e6745fdddfb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c3ce86defc450aa2bae6db27a19b939bebb4dfd41e633a31399f59fe82fcad6f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d3fe23334b531cac4ce807eff4ceabb6c2c2536b0862d0944f640d2233e92ff4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "18359d1a950e607aa46a145138cb09f9f2fb69c4a2eb95f7002bda9957e24bbc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "323168741cb8a1191d7f9a7b967a7d285de238a218ad581bf2129dc8262bd147", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "83895c066231c3cb16c742394e88f7a33f1148266e58f8313f95fc886609ad95", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d797b6d81d33c693e0b7bc5f77aadb3136360f53cdf2e853ff32c0d1d5ff827d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "cdb812ca1620e424f9b42bc0683f288ec9044bce3621c53d15c09ba67ff4f504", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "58960c56c0208aaca5d053bc3444f1a8babdf2c6b0c6350ff4a6982744d27310", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5498494520d43dde42da29bb52d55b7afde03657c68d1eab261618cb1828f6f8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "3f0905d46128dfdda8e5bc31475fef6f6bef65b261487c153fc28b3424fb8419", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "12b942067f1b8a2c785e18cd7b8dedec6116c5039a4767e445d6da314cd77e85", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "17ceb6a0b7c3a25354c806a67d6b591e734603da46d50c36489b7cd661f42309", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "3f589e3df06ac545d4e1d3cbde54e351e0cc04caba6d823159d0d2d1581612cc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "973603deb3fc1bc0435a7db69115e498cce81fd4cd2145da765a37b484f27301", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "6d8d4569e27e17333c3f6f0b0dbbe9b59e69f9ff13b7ebe030dcfb2840f17804", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "7da36aa4cad85dcc37379d7d6af8a5e752f05ce274e1cbcf9dfd21c8f5bf7222", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "660078dc3ae69fe7dab6e5416dc67c6178a39803ed32a6a59c2e425fd0a729fc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "65d5dee40ba09f5b895d0fedf30e99e38b2e25a6e4d7de3ce48470bec90b0ccf", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6ec519b7d835a81c67f70677d5578ef6b249ad9d2d48592c524a07161dea4301", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "e155aa3da698cc997fd9216dc9237084ee45d56ed9d492c152247455c6b79aa4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "4014ee2c6b9bbdb1091cf0e2fec3a09d1926a56c6f654f9099087905d22776a0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e96006e2f1ae90b11f746a2913ff54362fdfa8a4d868da87233cbc95ade11c86", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "4b64ecff2ee88eaa9a27a9829f44724520180c023b2b54cef29871caed93cf17", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "6e0b5558910b72aafad7713d6160f622a108fde029a213342b50aefbc745b84d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "d37c60a72e21fc4fb061d42bb16fa8d7551b9938f50713d2d17db45a667b73f8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "9efbacd79d224cef03cedcc06c9718939a15e3d1cfb15ace4ebb100da2c39f54", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "4e9649dbd9b7ecf7b3dbcf0b0e1db1ea40ce5c5ce9c4c7f952aa89fe35206416", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "aa9fe418eecac6a12632e8765034a09295e71074bc2b9c608effb1a0dd67bb9d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "300a00880ee3b2fbd95b23498094795f704edb6e9d059324143324ca5dbf2b55", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ff8967bf0121a6d7c26f3bb22a297cf15f0d86c1b3eac8aa7cd209fca3a126fc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "23354f7ccbc45156500ac97f1ffffd163938787b968e2e0a57b7c491c48113f3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8f3666c147e19ffee56b712efbc638f488d4d20252553817568014a6b7e5a773", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "5a5af8d317d1381d0990d141459f8ddc8e6cbea20737ce0f8239bd36ff75b98b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d7a34f92f90035e5cb41639aea1b2175699515b018dd356a32119fde87054f11", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "a69e07e912b533fc56469aa29d4f997ab275ff9a50f70b6af17155fc76a1ec7f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "9e4f23accdabf3164ec9402e2a4744b7a9f2ba9d42596e8d98ef257fc3393c83", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "2c79b60fff49893b720e232a644927d6239c308d82103bb77137001bcd16fed6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "915f0de143a6239b906448161f73486a0178b50bf6291e2abc9c8aa15be6915a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "4ebe4bcd9580f34fcbfa6bce3fbeb660718f557474f0291b64d637ebb196a35e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e6954fe7380f76289a66f0a7728dc8e40f5e7938875323d46e9f5a545b0bf719", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a22407bdfb6cd842dbeb074d32f5074c9e27ff443226949156d434e5b4edaaf7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c4e18a3097a537df4ecad80f22bd450335ee94c0c727ad1fafe332c30f35360e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "3d28bca3a8a84cecee029ad125dd50079c09f27d9f1be79ca5c52fbcf2e329f1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "173f6ea9393efa2895dee64afa6f0f45cc8d852dce8bbcb2afa99017458dd9ae", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "34955015e0de20a165e6f55df7557d133f2581798744a7a1c55577a1655bf761", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "308875bb48cae3fec792da875a4f82f4691cf59a3eff1167d51838f27191af35", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "a69414e4e7df2c45f4acb6925d7ac5de76321b71601981d9021b0ad6ec23ed65", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3a29c85271740cb6d13ab2bd8dc9f56eb33e7359348ba9b7e5d2b73c2ea46e00", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "c3190601b3ff1be82cadcd32dd63bb881e81a48bf955bfaa795c829cdac31c2e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "cd0eb305988e7d6a76a872833d67b011e16e130ccace6cc01fcd6c020d9645f9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "44fcda0998daff53dba84b30c2d2288830596117c362f4353fd5cea7ee9b22a5", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a35d1aafe115b0cfe55454f30adc29db363fe7560697f6a20f46f781c30d7bfb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "35b80e1864e9bdd76562e219827ed2470dbc6bff2e41f1f3a2001783ccf7dc51", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "7fec08d0f493f35d1ccd435f49a8133b159f70d10a81acd3d348ce8afa59359a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "de5298fbf526ebe87fd9dee394ca0d5b5017de0e88a73d5c6cf637e5db33868d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "ae7097a4b740c15ff42c43ab4d77073006a96c85a112d71bee97494a5f1d4006", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "d432519e4a920fba0f631c128096e098f23e610930c3363c924964709a9e8ba0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "14d518e51d3b1d022d5ac8301e1b4b41dd17286da71dd5947c19177f73220b02", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "e664e899c8e735cbdb0f7dbd1c5292f5242c2a0108303fa2bfbd916614688f0b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "40dc6a45fa0ede9fd50495da2ab2b9ffb6aa630cd0e7c891baf09b1f2b8b17da", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "07609db507d8fd8d437c658cdfa578c1a86000f3112d572380d4c18cd00f0b34", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "d407c8d7b267bf9279cc9c2853897e4e6c58f943ce1db40a93edf82024f74678", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "da3d4370d5d176ba53fe97fa69e83855c9dfd0fa055694efbb310b328785a75a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "b0e4b1eb2e824bf0463a60bbf55ff4043503d0efe4eb79e8dc8b2948bd8aab4c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "fde4e64924e8d13cf1d35ca5cf4241eb32344ff9e1dca5a3b04c3131cace25d0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "a536598ff76e4c8786b067071f50c0d7bd808c483b901e9f4c85a8f1281c48e2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "54ef944f25937ff14cc41fdc7ae426d956c3c72a294c8df086866d1ce28b3aaa", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "c345f0541d989f8d568ef1b4d6a72bdf737ec3e4c0082b4e6744848d8e42f324", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "d1e27544f936460bb8feba545694120dde46facd0640e0c1b702aceb25af7019", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "183e0ae99db79a58782437a63bf6a0d7b77bde378ea965d413d7f4a3016503ec", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "74c0e43e4046187a8cb16dd6e7000dddd0e0d7519ca889151e4979ab35604d9e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "67ef7800b7e79b210f8a25e4517ee60d02b980889fe06d190f00759a2daf9ad7", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "ac9a7f73cb3f2786e52b14da110112528aada8dd736d45632419115c1ced5603", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "c82337421af49a0e869f05624b0579cb5c27f30867839091d0c9d7944d486e1d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "2c1724e547f56ba9fe06be6fd6bec9fed58011c54f847061365b143791d6da68", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "480d31d1895b7109890fc8f52f9173c068df2cc610ffe0ec55ef262dfbff3dea", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9a451bcff5e6795f14e3adce657a8fb5c206b31da5ff26b58a5f40b08b7e5d37", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "59bf58b84670ed490fe514f70f352bce6ff309c3e49ac830c4b2fdc346321f81", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "020dba110b4147e6c60344f8e154f9d1f85ea6e05dc90e02d405f142e4b0b56c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "80ab2e1304a16669d572f5c8946808f844236b55e3fe42af6e5deb622fef10d4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "3db0ea74b0e2cb240d3c1c8afc9f9c87a58a51d3ca590f74ff04382d2ddfd01b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "0008dcd54b328bf792fe98033598ceb631b34de8edcf1b599437ffed80910a89", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "fe455ac46f1676ea8da2233b5554f15144f3ee1de52b1bf31bde09990ed39a56", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f69ebce114b3995decee051ee7574d45526bf6db2cb237803b3315cea278f21c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "c29d48307e014f53d305c1c592dc9d172d3dbe550f6b88946659afdbf7c3e378", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "fc1e7d51d2483e85a1ff5f59daf3d2613195431c907d15ac25310d3604de49ca", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "2b98a243887c8cd5b328f0f74b112450c57627b8008d15b655dda9abf18c9ee6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "972b5f5595eca2c8230bc2843e2b77f26c1067e59b4bd9920905adc06ef22b02", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "bc8c50d7d463cd5a8f6e5b77674466f11e4b56b8b9dbb7c01b22cbec5dc6c0a8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "c56357017dd0dd4ed5ec8d2017b9f442067ebd839bcf1b9b45d21133a3d1514a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ffe4bb1d1d072af3723414af172dff1479fdc8f947870d404dc903dd064d6374", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "6dfe8d5250f883503370ff495d7d70d8aa6a011d13a0af43f13e2fd2482be996", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ffedc537df4118d5e4e2d58c19cd830b374a5e32e25e3139b1d679086d263da4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2a4ac68d9e789802c0ccbaa49b741c6d2c604a0b10b215837a11682bc61f944b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "eec3ae3f653d6e92a2e5a0460d7523b14dfed6171d7b8c4f9e6a73bfb4f39224", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "893a2e1318766bdc8948cf1d7221184e3a7adfc4d1791692fa4f03f88d4db07b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6d0820e91a8af66af6402f11df08420b066c928eb0d2e47ef615b6ee2b7d83bc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9c47067199f5d82e8692718a1ccf89736e0565a3739d6c960e0cc77530f47c2b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "94041ead94c29e1c241f50ceaed49495ce19d66b7f73679f974dd0751fedc430", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8d6c1b95114ac8ba88c9f91f91c16d19cf42ee1e3f1ca9cbebb85770e81bb81f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "55b1435243f65393901c75894d4bbf87689ec57ba6289209d1328ec0737cc374", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "31b90e7cbde5141a82830d5da88d00980c5a1c1e8d34e65b0fb2147e149c27a9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "93ec15d9793890cf3ea658e3184b5202d1ced3a2b60ca812885e10ac32a04fa3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "c468478b97069219c2a2ecd42b6110004c81c4e22179a4029dfb55eafb88f352", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "45a5e19c34b43d6e537d22b9fb295e4f252a7535f8c50c6685f020c23079ce03", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "09d603411528c8d1f0d2d16d3317d0f781322f5c6eb4853d7ccbfbc1bd1b5247", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "11be3ae103b60485821ca51f8ae446f5328ce1714948f155d82651758968489b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "f65c5432d07df0378e3a0016d1cea243016fe265b6f8aa175d7de60052bed074", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "582b044d6fe331bf9440a7e2f83d7f3afef152446c362725e8248efea256f3ac", "T3T1_de_cardano-test_derivations.py::test_bad_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -17997,18 +17997,18 @@ "T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "e608cd27fadb2bee3b071939adc8840c50b9232c285871cdc22228d60e3ed4c2", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "37762e316f5e534efe91c13a6f4c73bf04562b48cece6d8218631c5437961646", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "fef69bb32f3709b62a0f87671271246969a31f8b53a187ffc723f2d6e6cccc31", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "90d491b0cd9f9f2ccb648a6e6c0577b9c9c4b85a5fcb8bf355918eab5cdd91e8", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "2e21eb061c822a6ad4903c712fa537ae1af11b01915bd5ef2023cd59a5361435", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "75d24470c05663f27900d9b48b0679ab6e15a404efbcd901de7556405d475de2", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "9a48bd2d3ab4578e4e30588b4e53766674e19a4fdb9bcdfd338a646b58b76641", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2429fc8715a613c421f9d4ecdc012ee7564a348ee2c92d76170f2d7ce92d0f1e", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "3c96d79336569216e622a97c21a4b115600edb6d0cd39a2273d80ebc3c20369c", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "51fa687120d2b7fb41c0a9267ec529779b718ae346749f94eed05c29e8e2f77f", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "cc4d094d1104c00ecdce03b5197b56ae183097e61f4625e0347777bc3734dd58", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "adbd1f0797dcbfc708332394cfec5abcfdb9c2aeabcedea50a552dfc1efd5184", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "fd77d62984ab18bc73016b8616ceb9206fb4ec5c9ea075e87d2ba1a481090297", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "a9a51dbbf2f7a44d662b99b55ceacd200629d06db9fc77bb1307cfc617809095", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "7328eacc0298df4e2fc16e36ed025fa5e2b9706b961b54d8e345a4151c1549ae", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "d0ef93d46b0f72088a06be89874005a6554b59b66f94ca64a8ad738f946da232", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "785374898d36874148f963fa8941b415ae89ef59f8dfe83f77eed22558670b15", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "a3c82119b1c727b8f4d3329ddb50a118e060c978b83caca14c39ce4a051e439e", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "b069a2b08041ead12f897fcf3fc1ccf27fa3e95c27a89676431ee5fe3f234a08", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "4a66ce36dc0979548a4c513a001bfdeedb36bcf6306955e8d953be7fddf20b6c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "5b23211211b86e20f9b37307eb1237de6d7aaf6a94871a55c613d77d4359bd8c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6f9493962e1f6a150b2f605ad339eb7db54a8827183f9db2f10dbc75ce7d0a5f", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "1991f47afa740e770b539fa6a00b2a2a596b97c0ca325e4ad9cd9651a7c10ee8", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "288432781bd11b06e6c90dc0a056d4dc6e7c409b5c408d39e1df54596e10d7ad", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", @@ -18166,12 +18166,12 @@ "T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", "T3T1_de_misc-test_msg_signidentity.py::test_sign": "9fbfc01e0639441f85bdb79cfc3e700043c0728f31e561a1f260cd675367c4a2", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "d62c2a50e658d3efa50137f6a9d1d4664ae29ed1f3764605660957c09c5814e0", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c36bf77e0c73a73bc8dd4e46ed604120a68c4a72f7553f3b7ff2bf80edcfa541", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e6408600df0a27c6488b4f4bc19d68dae6650ba860c45b24f6fcf645ab9afdcd", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "05f83653f7924dca43ea081467de95bd4d6c3ed37da421710e86b6200610d2ff", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3279c313a12ee45b82d64d4f572ae82c558516592bc37b748437c50b02b2c562", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "60ba99774981cf0d0fbca3eb72e0a45c64035d3a3618d0dfd2613099e482f7c1", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "c949ed31030623eb8755425bb80b2f96f24bf39a0d4f18970547f880012eaa8a", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "dbd91247e53fca9ad9c0423ac23a05eff09e9b06dfecd04fcb4a6be08d9f9904", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "9672d1f277d9ba72a1871af7a5e9ac076d4face09774250405318db6236e331e", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "02ce1beb3c719599f88f990bcdb37ab9f02b7134b71dc80aad1659522aa0aad9", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "ce612799e7ccf7d4bceb471b053aa417ee0348b03d114a71e3e367e84a279208", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "417a2113c8bd96cf3d070d65378e7ea6a976aab2e7a1fbfe41d5d735349ed475", "T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "3f152b740ccafc458ad07057f40e49be5bdd678dca7d858e0cafd7c462550ee1", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -18226,22 +18226,22 @@ "T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7e603fd33ad51076925cf29ccf5a520c9af56516dee68cef91a8fca8e1862f24", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "dfc7ebe4272f0ff3aeb373e12149734fedd4bb35c641116744cf7a06c7dc77a1", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a3e5fa34530877f7b87fe77f3716e0cc37e0384930f43107caf15f076a3496c8", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "d66ac6cc9ef6fa7681664701211a3aae11603e50ae5ab6b20d15877f526fe0a7", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "46a1f30e6e95464b3de000f62f703a77b275fd09327c0c1341333b0854c6107f", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "648490c339ee840c1c5dece14a978750b1147f58d3d44faf5cc2af07169ad14b", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "8422ed5880a444939c3b511cde5ee1883a633371e940a4ebf51d8fbff934f8c8", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "b311be66da212d71929b0cdfccbee4971faa8abdbcb04e45c3a493977b544f32", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "457a66a681085132c7a38cc5c7d85fcd4c632b08d8d7314e2bd0f9643c4eaf5c", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "cab8e7643e74d28332a2dd920745153bd419931147fe9d6ea6311c8f2393d6b1", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "b86d3e58d4700ac2fb634a9e981697e2fd9513b9a07996e09ad8c9b3b0a3cdde", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5e55eb462b0f225b18e4c487789337106344734b236f934c7a16de7bd4859788", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "55b56ded415b23ad054c8181bde6e481ab0b617eff506b784a68afce3a35e18e", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "803eb5ae27566d5cd9d811f1db24b051a20f7bdb4a26cb6a0af45421cf1f2cff", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "7c31ab83fb2e04aa3303331c0b8bdf10328fd446fff2e1c8ba957de385a8517a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "87f3a5b7f38947178e0d868f45dbc1874d150420931bcada82e201d547d46491", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "f702b60bbf9b8dad7ec6141aafe731afc4b9da9522dce65f4a4559a5d3ea2853", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "b88172329f0d1e9941ca47a2d1fd495cf87ef1894d651c90617ca8e350bbfa06", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "f4a390a7d8095e23916c90caa53c081e28ee82535147e394308138f87610b965", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "e019fa8ff44e3296b1208d801f9c8f94ef2cbf06b195e89af6647205f0fe4c91", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "b88172329f0d1e9941ca47a2d1fd495cf87ef1894d651c90617ca8e350bbfa06", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "f4a390a7d8095e23916c90caa53c081e28ee82535147e394308138f87610b965", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "e019fa8ff44e3296b1208d801f9c8f94ef2cbf06b195e89af6647205f0fe4c91", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "e6c7304b5df3e4baad64871dc3db52c8c09fb8505e34286d445e6b6462490505", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "329a03f94ddf8dd0f294dc90455502419beb0cdffb06ec47481ba73ae72d94bc", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "d1162bb365ba642db3b499363dc84d9daf298027b084705136fa9846a055b370", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8b8ca8ebb8b84f11db0b994b717f64864157523d5b1deb800bb98c9f8a4b8885", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d532ecc0df4eba1a7ccc0af54945ffcdebc8ca66f878e6475544721bbeab0789", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "849ca85aa61a37058648c2c191b6659030ea4a575f47587e5ac60fa4ff338981", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "0c129fdd9475932381aba8894a6bce840266338f2d6eb57bf5f4d1ac7e0881e8", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "7b0f87a9ec819934121a168f679279e5eb4616bf0ce9c8d234b40a7065b2238c", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d832438223cf065dc2744f19765280fa2a38358887876506f97d7f1f005cb70c", @@ -18311,26 +18311,26 @@ "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d54dfc905c5778dbc35d66d9e9cd5f41a6b2a80b0f95fd2fa362112857bcb6da", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "0cd94418279dfa790df1f8e791b057015b609177b84131254dd03e8582271554", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "01bda8a68a6dd18c1d8507a2a233990508104606b2796733978d0543575fb2dc", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "8e9328e861ee2b579bae1916caecc9771de5f825600eea73ab5bb50da99415cf", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "9ad496fbf87b9e01df793a2a5be0b9fd4336aa5e209b67da68b47e3cf415df7b", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "0c919be977e733bb67576e510fbdd9778284dff7a6aa93e3fb711302b86d7b82", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "3726cff6f3cf2022939c5a35ebdfa7c1fe145faf5958a6776a0aef5f90c6cfc9", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "6f60ae6d2d0507080107260f62e0789330357719d0611c3623feb9bbdbb68f86", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "40c421ad4df9a31b7d353c29a53d7b28f14dc780a6521e13ebc97f8618029967", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "91308406596db2e6942dee657292c002f4aac81fecff36a69dc5b2f7eda3a944", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "c7d44c8446bba4f1c7979edf549cf74956b2e09c0fffbea335e2be2a42f773c4", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "02457ef155f009cf922451ca161b337cd3ef0de016649b19729ad904e5fcb411", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "25eba0ecb48b90bf7c3a6bcdbe244f4dd6e35afccb37420507af0b8cc6fd0627", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "bde28f0319e6b422406be65ad0465b4b08640f9e73f24cca5cc783aefc273be2", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3937c523914319fcfd16785bb4e8c0c1466b475336ebd0b369e91e09bc5b4016", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "6954dce1021eb7db7815290c3cd766559e188738fc515c46a91423a3f7db1f8c", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "5cccd9cbcee79d421c7b5818dbb6fc06f91156d09e83a6089767f472e3504363", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "b638ef2ff223cd3c5bc48b453b931b54dda11428ce9e916600c96a6ec201fc21", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5672794bd42230368cfaefbdf3ee1f740b4951e7312b84ea2f6ff08d611f0df1", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "f4215484eb52750b7a80821a0d570cb89af90a60313be52750646e0d942feeaf", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a1bbaf8f3b4219d3d1591d190246d851b69b3a08b25ed9deb30682a6c1fd6802", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "0b547080b85655a669d911cf6e67dc6b71d10ead39a1862445add6a5e194632e", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "6524da1a416b76d7fbdb24103be0b4e8744a1e9cd554d0c392222ec6b2783201", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "dadfe476f99a13b8a8c5f1875762e1ac34bf059c14d703f35e44178f7807e6b6", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "927194295d5398723922407e0d364d27e074c68eb967e83f5fc8a12f6e0a3099", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "dd3a4d4751dcb7fef5935b7ff60d80612f19427b131cfac3658b25763e07c7b7", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "32f114f8b9a0d105d93e65672b8f30a3d537bd33ea4994355c025022ecb005f4", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "80f8b6793e11825427762c31fa0f79bdf53aa021f3ac3b2b7757de2dcc200abd", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "e4ed1bdf7bebe639b55b643f5df9e17d8ab29312917fb7822072be17a0dc6fb0", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "e39c766f20ea178786e225560086559eb222f62ad7cbb3078d65d7c3b783463f", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "9a8abee62ea7ca4e3710d7e1e46e645cfe0582b3a659ae4e298cd4956dd60abb", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "8386c6c2d37ae21dc6bb6ed7f02619598c8dec9c6358f8c48151e92a5cbaa3ef", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "21f97aa5941c99a19dcd8addf80ddddbbe8a98069bf343911effcb891fc54ba5", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "229bf84315817c43148335b75bc94f6b49b5956b8b008b6a54ac3ad64c946f0e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "49943fbdaf521509212eea8f59f84d2ab72758bfbd5a0ba0d018fe0b318910c7", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9e2d9515b3e2b09bdd1ddc6fad4210621069e1ea0319b35736f1c066619dfd87", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "6c46c2146d0ebe44a41ee9ab66fbf6ebcb1f8e6d16eeb277965c784a019e8e25", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "120ff9217d248f42250e5f9555386614d073896e4d9962c058d485c2a258888b", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e48a95f89a0cbade320179d127b5d711837b9d10a83bb0e4112580958349609e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "c4fe429c6ab2d25041a043f7ab1b45d24f5c309f634f80b6e45c9a7de9905b9f", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "e4a16a0ea6a6d2e9f788ee987c7f33409451f786936a4ed2e240f7bb957ed5cc", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "ff3575c4a6bc86501b9f9601979fa379c999e4d62eb1976a119b72ba566f8fec", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "64969d3608822d3c234198dd0c7766e10c4e98d38fcb5e7fe31b63f45f0256eb", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "8e4e30780090b4330aef651430341177a417baddd4410724bb1d00c82b8d2233", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "75d7a81beb661942df988371cf26259ef8f42e9e8186185fd65dfaaac261445d", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "38828afee6a4fd650aa4acacc0d32782fe7a106e153a1eb611dae3a039b90ecf", @@ -18374,7 +18374,7 @@ "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b8d393e3739a7e3c40ff82516b6f95b340dfa1fa43b05d54c50c632d78912557", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ab2ee76fdd7e5a2f7bc67674cc352cc77ccaf89f2bfdf64e51ef1369cf1cde4f", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "39fae5dfba2b38d094fe2d8ce0924bbecba33ebbbe25b0742ce01f34e0892df7", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "7a21758d980e772e4d9e112bab97dad942997fc6c2acac928e2127e8c77da561", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "5bf2337dc1fadfa37949b0ea08711f3b206ef8279c9b1bb0f7aa4747ec2d1e59", "T3T1_de_test_autolock.py::test_autolock_default_value": "99f0c1dc95cc8bc5b5ad1e534a2dae550b1506fc0be29826d237d5fe0dda2c81", "T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "d113ed8ad29e2c78bbb41325c94c10c7774ddbb7be3eae4a31875e4c0b00fcb8", "T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "d113ed8ad29e2c78bbb41325c94c10c7774ddbb7be3eae4a31875e4c0b00fcb8", @@ -18384,11 +18384,11 @@ "T3T1_de_test_basic.py::test_features": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_basic.py::test_ping": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_busy_state.py::test_busy_expiry": "218ccf08ea64bd2795e57c147909f93e014e34b95eb5203934b677e7cac8e11a", -"T3T1_de_test_busy_state.py::test_busy_state": "38bb1057f47995ece0b65f1098857cca8325c435b4e33f7fb09cc924d42841d3", +"T3T1_de_test_busy_state.py::test_busy_state": "f72d7efa7959fef8c91a276764351ccb0bb1efff0acc5ffe21e039f337efe529", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "cbf4c9097c8d0c698bc0d21301082b280503908f22ee3338e5fd0b8e0059836d", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "6b947bcd43006a0b7f7030dd2149a62000ab4e0900f9f5b15ccd7bbba0a60c39", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "cbf4c9097c8d0c698bc0d21301082b280503908f22ee3338e5fd0b8e0059836d", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "6b947bcd43006a0b7f7030dd2149a62000ab4e0900f9f5b15ccd7bbba0a60c39", "T3T1_de_test_cancel.py::test_cancel_on_paginated": "a65d43e1c0f31b083cc42839daaff521078294b0effff7e9dbe73d7cd20b7822", "T3T1_de_test_debuglink.py::test_softlock_instability": "03182288f911280db29fd5e24a854add482d3f540d9c857f4d2a129c100901c0", "T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "bf2f818f1145174c6b3728cb9d1b31b02e37c73f9c3e9a34de5edf9d4158caf7", @@ -18425,7 +18425,7 @@ "T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "95bb1f302257a635151759a705e3465ce70713d53d269ebfc3dee28d2f4338da", "T3T1_de_test_msg_applysettings.py::test_experimental_features": "47f02b3bab692c055cf5f32de31f7ef7de9d69aa9ca976bcab4088d6bece36f5", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_msg_applysettings.py::test_safety_checks": "dd20c90d5630e9422db7eef33c45372c6391e7b9e45a1c852bc71c327952b1f6", +"T3T1_de_test_msg_applysettings.py::test_safety_checks": "07e415943999d9052d9b834c1ade84393f38237ed4364422ee559c49e3e46c95", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "6c4290e1ddaf619a7dee19daec4898ee161fbab7ed6de84db717e087cbe6e424", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4b3000d092e04afd52c77f954c9fcbb4700082984b2c0a8a4015bbc7d89d8ea3", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "bd30dcdf8810046500a1b9aa44684efdaedef7d1a818573d9ab9803c3374254f", @@ -18509,10 +18509,10 @@ "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "00f26a228fecbcade38f24b5ea666ca9d399e3ba7899f4d09295e6fd7948ad29", "T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "381c2e9cbc1c68ef5511f8c0921715ddfc3579556156e07725fc20f5de700560", "T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "4cb32697dd27c9b3355699ac03f132b1f180e3d0861b93c503c2fc53d440b8ce", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "1edfaeb5218c0eb1c3d42f9b0e346dc327a59ae5a152a86c08a8bd0cb38b53b3", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4a8e05aadc193444fb9b7a9f7fc7a9bd93e571cee80fca7f2febaaf712cccebc", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "4b2168e2ff7df62f8f097c30c12463dae295594df816dd3fa7ff392b3e8ccf0d", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "6d98169dc84cce8ae59b580da42c30617da4548cc8f90b300da402dbcb244d5c", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "97de64b2cb7bf8f5e87b67f2379a3c87920d693fa8d9dbe798fe277765784a1e", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "36cd4fe86efd1649a83c18d09e6a35dc5d4af2d095eb60ef88b492a25a6392e4", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "3428c414c9092bda35c8efb3e43adf9cfb87f630166d65cac852ed805e662c7b", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "eb32b59cb44faf38b7ae34529ecfefb6b2146aaabaecb4a7acf63fde49459e74", "T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "28ab89a7bb7e91fb4bbc58b0c041f3994eed32e2b9314176209aae852a1c0f4d", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "faeece7285f4a3478eb0a0754ed711e72aaddcf1affd662a6395d6c2ef41cb66", @@ -18543,7 +18543,7 @@ "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b2177b2d49ad8968f443ae7c3eb40a61c5a79f359fcab22f394ed033e94d07ca", "T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "2e1f9259ccc516a2f355626f17a21aa7e352f34d2a88cd6fa6e752db31ad03a7", "T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e670c8ec334dfd1608c7a68a4a5fa0d5c00a014ca6dee589cb62527159cc6986", -"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "48a9d3b5a889b2f3bb10585b3a8babd8bb40c52aeb1aba7d0571bbc40ada265d", +"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "7a7ed2a7e3b8c6e3509cf83b14b096a140e8d8095724bceb45817cc35f0bc8b8", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "380ac53675e261dcbb4d68aa378bde7be830d926326d1aba14c1e0324b9ef306", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "24c96654c356fd64c7b84df817a4ffe031566a985efa1a0c84d517052235aa00", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1fa1e818ad800bb128893b099fb1488679ff5223ec1dfd1cfdd553172603b9f6", @@ -18568,42 +18568,42 @@ "T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "2c916a8385b9c6f1b1eb984167d84e8ff4d7042fa087bd14cab9602680fbf3aa", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "bb3242dd5e5c5ee611ff5ca41d9fdacdb8efaa3807d8401935fe4b7305f07d88", "T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "baa9af35d53edc4ef279e242c55812b79ab3fdd2312760f8dd70ddbcdca69605", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "02e975298825100092d819a042cbfeab4c6faa83ec70b35ee36c70641d05e8f5", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cd593f52ee44dada69a6b7c7b306caa36e2af819f37d9039da20479cfe087cda", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "e8c326e17925f93bd47057aadb35300a6211ec67d201fd38aa9e125fe2b9fdb1", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "444b4e5938c28e6b4bb22c332689883ba43de49b7a0de5f6fa0f556ca9cfd194", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "b77a71c6bdfc4108daefcdbd39a83f60e538e13b77b01adb80f7c9d564437e24", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "6797539492e6d4c96a6fde1522e4ac126677ae519ff35f454e3148af9acfcf92", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "62f203f57b4f307a14e9de09c6b110b3dd9622e01e94c5bd6a95ee1db85bb8cf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "88889785a3da8cfe28359adb439d09e347c7517c7c3247829415d7a18d216e84", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "cb689af93f1ecd35f6c6137bb3850ca6ab89840cd810ff7dfe3a14ed38a8a6b7", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "570a086221249513078f4ca24bf59f8109341a863c9ad4719f95278947879372", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "29788af63b7b22e09c0a686fbf72b0e2580e7ec79df2236e04372a70caa30ce3", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "db4d0bb92c2cdb3a9a8417bfb39d3073e5cfe6a8468d887c483e698379cde73e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "fbdcba66e02c1a1558eb5483541003791b2676855edc365acc2b183046e4af79", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "39475e23baa5378e4f12b1941845db1fe205b4c7c02c071d28736054c2bcb178", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "39f6d92a1510f675dfa6bdb5670bac3a63e26ceb32b4000181c3aa946026c9c6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "3bdd231d4b8be681d228bad0e3c79df81fd4d313da79a60c20153c7f63e40afe", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "02e975298825100092d819a042cbfeab4c6faa83ec70b35ee36c70641d05e8f5", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cd593f52ee44dada69a6b7c7b306caa36e2af819f37d9039da20479cfe087cda", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "e8c326e17925f93bd47057aadb35300a6211ec67d201fd38aa9e125fe2b9fdb1", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "444b4e5938c28e6b4bb22c332689883ba43de49b7a0de5f6fa0f556ca9cfd194", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "b77a71c6bdfc4108daefcdbd39a83f60e538e13b77b01adb80f7c9d564437e24", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "6797539492e6d4c96a6fde1522e4ac126677ae519ff35f454e3148af9acfcf92", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "62f203f57b4f307a14e9de09c6b110b3dd9622e01e94c5bd6a95ee1db85bb8cf", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "88889785a3da8cfe28359adb439d09e347c7517c7c3247829415d7a18d216e84", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "cb689af93f1ecd35f6c6137bb3850ca6ab89840cd810ff7dfe3a14ed38a8a6b7", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "570a086221249513078f4ca24bf59f8109341a863c9ad4719f95278947879372", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "29788af63b7b22e09c0a686fbf72b0e2580e7ec79df2236e04372a70caa30ce3", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "db4d0bb92c2cdb3a9a8417bfb39d3073e5cfe6a8468d887c483e698379cde73e", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "fbdcba66e02c1a1558eb5483541003791b2676855edc365acc2b183046e4af79", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "39475e23baa5378e4f12b1941845db1fe205b4c7c02c071d28736054c2bcb178", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "39f6d92a1510f675dfa6bdb5670bac3a63e26ceb32b4000181c3aa946026c9c6", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "3bdd231d4b8be681d228bad0e3c79df81fd4d313da79a60c20153c7f63e40afe", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5822ea720589f38dace79341c968ed365d85af236cb80a0ec3e25f7fe4e89269", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4fdb43112dea576922b2369f0d02709be172d86fd60f949d89da6349882cb907", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "2813cf0c24c54df9233cb2f8d239a387f02baa5e6389656189104b5d188d4f6f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "289085b1c437397d0dc43fb96d7292e85141ba740fb5740c4e414c5acfc04294", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "e301436b15b0229b5483c709c6d85854837408e9fce074c81f0bbce840ad8a05", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "24d0dedf895cf2288372872c7667e17eb3ed2c4b9726a8dde4dcacba7d5d854d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "86e9a14d954ef719e83cf1837a72ac8cd1a181b524ee2bac9a2a5fbd364b6e79", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "17bb62ec9f19f4a4892c497c2dde58ed10c8a330a80a7d510628cbfa70fe42a9", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "3465678c099b7aafec1c8a7f903fc085dd74563ef42349e9dfe33e3c8b3594ae", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "f67d4b2ff8bad94152ef254bcada59a9eb0aac44c4c3b89e976c5ab848cc0fd2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1b965021e8270a5e0e1ada848ef8a86da6f0a6b2f3f386c68e14b928d865b044", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "18b38262487935c410df9dd8a6fc7c015dc4edbe88c2b3e545d9617c776854c8", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ac5208d0ac16e3a769a1686b1adc438c51fe17ae37750e59b221caa73e363ab4", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "4581823acd2684482120b8f27b6037f7699d87c7f239b138e18add6942321b66", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "c7f94c86a26d97f62f0b3624825b085cefb2bb98bcf9b68b2d719fbb07a6f408", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "2c197c93f8af2ffe49188644a5a0a065f1911b7e6fab62121c99489c5e758077", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5822ea720589f38dace79341c968ed365d85af236cb80a0ec3e25f7fe4e89269", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4fdb43112dea576922b2369f0d02709be172d86fd60f949d89da6349882cb907", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "2813cf0c24c54df9233cb2f8d239a387f02baa5e6389656189104b5d188d4f6f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "289085b1c437397d0dc43fb96d7292e85141ba740fb5740c4e414c5acfc04294", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "e301436b15b0229b5483c709c6d85854837408e9fce074c81f0bbce840ad8a05", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "24d0dedf895cf2288372872c7667e17eb3ed2c4b9726a8dde4dcacba7d5d854d", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "86e9a14d954ef719e83cf1837a72ac8cd1a181b524ee2bac9a2a5fbd364b6e79", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "17bb62ec9f19f4a4892c497c2dde58ed10c8a330a80a7d510628cbfa70fe42a9", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "3465678c099b7aafec1c8a7f903fc085dd74563ef42349e9dfe33e3c8b3594ae", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "f67d4b2ff8bad94152ef254bcada59a9eb0aac44c4c3b89e976c5ab848cc0fd2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1b965021e8270a5e0e1ada848ef8a86da6f0a6b2f3f386c68e14b928d865b044", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "18b38262487935c410df9dd8a6fc7c015dc4edbe88c2b3e545d9617c776854c8", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ac5208d0ac16e3a769a1686b1adc438c51fe17ae37750e59b221caa73e363ab4", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "4581823acd2684482120b8f27b6037f7699d87c7f239b138e18add6942321b66", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "c7f94c86a26d97f62f0b3624825b085cefb2bb98bcf9b68b2d719fbb07a6f408", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "2c197c93f8af2ffe49188644a5a0a065f1911b7e6fab62121c99489c5e758077", "T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "e6cdcb76dc77e9e73759c523d38283db2938028cf53d6e8ce7cd892a6c1bcf56", "T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "544d03882451929ba6e33303dd7d4e9f5e62d90f8f1cae35a2f2ddb142d39a01", "T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -18704,17 +18704,17 @@ "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "49da0c85a1b221e37b413013026e0d8fc16b6b285e38c4871804ef0873c943a6", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e64163dc3db37fbff51a04a53610f9ae40d85e633c7996e2d0337c7e6a8b1744", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "5b287974d374fd40a672a06ce0054e71efbe3ec2d6102caf601a5d4dd49800fd", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "08d9a4c837cd74997a69d26300f4dc0491c0f93f233506076ec94875eddcc17e", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "2c087cc8d64a98d45b2128820fdf1b9e3edc396a1b9ea87ea03c9fd427f989fc", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "a81f1449ea7105a6af4e37a695397fdf9b8a1ae98a35b3690bb298559c63ee33", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "df88c15c6acc3cbd502a882c28d6a904044429d0ce58164147c097651861a43a", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "e7bac7207e4dccabc27386fb6ab17a052beeb986a9bc6adc793d11144c969d07", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "1bd13e67226c779b7253ea71e03013048e03ead8bf77e43f276b22f853b79f7a", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "a730fb653a9d039121207ec073bba122bd56f1975810c4af6648444773a6e8f6", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "05261c0c0068feea56a8e8f1b0d2f2fa0d3724041f2138f9bc6927633ae7e2f6", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e0ee283bee33c89b39af9f8579652f8618e37c8269bb62d6c07b4ae3020144ad", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "990da17fc0a477b2fcc17480277bb1d118745592d24e7a85456f9026a1751edf", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "90b4a8d78be865851997678447f55a2cf9ed5112a3eccd1916e9cf410fbf4e0e", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "41e7eda7a7083aaaa514217a3dd8e895dae785c53c9875cbe0d4d21678ff2e0d", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "bbfdbb028211d3207c0cc8d3ac613365f7dcad2004c2869938b3509d33f17ee3", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ac7406e293c542e1a52807a75d627e2bc6553806b55ce7918f6158583a6d6f39", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "c558fa916c291a43540c5d2e22babf8ace1e95090dede50b4941b1202e4b61b8", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "4c20f709e50502a5e43473f0737503a95ebf534b087f595945ba2db219d0bad6", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "911059cffc040dbdd3e2b689744074833e9309d0fddac2964bef9d797801a9c4", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19070,26 +19070,26 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4514e54791b68e6e10243a9ac4d1ef78043405d4486d22566cd32ad87595577c", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "48594bde585a3fa8272f328957a70269b71215c3f7110529638b5421ce260cc6", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "79cc12af43f7b308494a03713ea1869a79b43076b136927a6c3a1193aa72ac2c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "16f8ad1d33f5c12c29423e7d27a1b7d524b340eb60a845fd25aa95b73d0759b3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a68c0b1ad6c28eb77d70f890743b0e6c38d9cad3ce45d3e727a3816dda0d97ac", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "3b9cac6bf916622a444db6dd768acc0a2eeaae7def754d27192667ab7f6be230", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "dfd0beb3890b3cdc9609dc282b9d830882248da6ce509fcc572f878d5501dd94", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "f7573d849277e3609ccd326ef144e663f5d2d755fb5e757c8dc06325899e65ff", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "50860255766439d7f2aa2cd20716bf7cac68bd695c1f449a51ae66aea16effdf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "e1421e29d6fce2fec5437fbff83dbd6082797bca2ff96e7396b32a70e18836b7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "a4d1af4c7c67dc90bfda48c2dce25657580dcc8531e79e304002b8f81718b0d6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "202f311c508813b2720e26653db8ad91e950c28670ba9471c93d2753ab9843a9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "d56e398d8462d13fb49f857c280100b45ff28714c6d1be560496d4853a1ff113", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "3e679a30b5693ed54ff4bd8df228475e7daa806a3126ae47afb2186847fc6efb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1f951b7e727ce459343bc32076056ddbedeb6c2e3994a415c0dd31fb92edf265", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "a71f54c819276b949c9eb6efdc4ecaafd2c4c7d0383109c674d23724e5116d3e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "232b04999420aaa61880f99f5e2752091969e9f23af14800d473b8e2c2290db2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "1882cdaf45c5da31ed7898987defc6b59d7ddcc4eb0fd74208a38504dade98eb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "a245368e3dd628a6dc7e5abfe3a758352429ff3cc78c6ad46391b746a3b1f847", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "d5e690537b917952a8ce8fe185db64923e540ed0a7efcd402812e809e77bdc12", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c47e1c6a3aa552b29a24d719b2783d6846cea401f7bc03b76f14f592c48544a4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "098e44891f9bf08989e8a3cf5b3592348d37885b315a6231e7bb2649334710e0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "3b829989bedc10ce181e1b4560d89c4663f17417fde78a857e8f33fd03857703", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "d9101163a8ef002c8de1a177adfc0b2ffceb75f2587f9ec33ebb14462ec8cf60", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1d6f6b49db3144f6b88b0039e2ba1f6c6ac059a0d4cd0f320d5fa83951c3d19b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7f19cb47359560b64d482b26f67c97519ed6ad7fc163c9847855ce1511b5211a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "05f2ecfa87261bbe407d99e9cd3e5b329f94447da799e1e40f099205d8a84228", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7ceca6adfd2bdfa5939b9a268935e9158885d6a89420cd9c3dd7ad17f83bbf6f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "e8a43d68a9b8ec2f62badac6e759a0d0818a1d43990d08068a021c1115b631ab", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "7fcac68d1e4a9f849afc0f6151a41f3ae8268357319abd3904602cd41762028b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "f8a23118ae7d466e4545a2f3a239edda9a66225f5d1e05371d9f650a3f444b6b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "e2a0f1f2a0cb6fed3310854bd19c11f397a503ba995fbf40a7e278a8358056db", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b9e24fd77b10e99dd2727e62513c43e391254833e6c24e4b3c57119ccb5d18f4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c24040a73fdc0c340b8cef63a016374a447581eafcfe1e64e3cb208e8a918a38", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "67ce2420ab1aa62be03ddabfe48ed2e47a88e1d7d8431ddd751a1356a0e7dd8b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "5700c499a5ffd3c288de91be4d7ede230d8ff6879b6aeeb077cd84645074c27f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9e3e55947d8d52ddf1e88d6494d12e381c9b4394e004964eed6e6ad71eb9df4f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "be28573fbe9e3fcab352218f2610c99175c6f3433ec15246b0bb1cae916a9150", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "36e4be65355fc20638f0b9ad52360862f26d209033f5c69f8aee8507c18ed453", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "bc37ab6b38012f10b58493411a95fc9720b00536c738799876c03467765d2c65", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "829e113b49804f67e8d6dff8432d931164fe27073d8c81648cd17762953820e4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "193ed0f9e2438af75af402d5d8ee1317d33f6dceda7252fac46381ddab0c3a65", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "01fac89c60540f88b7e8dee9d4752789c7c78b5aac7e9da402d516742e5cf603", "T3T1_en_cardano-test_derivations.py::test_bad_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19603,9 +19603,9 @@ "T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "e7f4c5ac27ba47921f61b6c9b76ab93e1437bf8ee7b1e9f1b79c0a3e0fb539d2", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "dd68ca5dc8e2fa72a075a4557f93d2dcc95985fdafecdcde9584504aaa04e1ea", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "3225b56e14d4f3489407f10fb04399523af061ef8e50e490582d8dceeb399cd9", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e7f4c5ac27ba47921f61b6c9b76ab93e1437bf8ee7b1e9f1b79c0a3e0fb539d2", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "dd68ca5dc8e2fa72a075a4557f93d2dcc95985fdafecdcde9584504aaa04e1ea", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3225b56e14d4f3489407f10fb04399523af061ef8e50e490582d8dceeb399cd9", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e155f460028110f14617bca120fb80b55a7d3f32032fd8e78f2670f787c87a2e", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "c557bbdb926f1c1ce335f0cf09cd1797fb7cf11fb011947365bac844742b476e", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3c664b8f16146c1ec0d5b4700e3943af890531ca130c26f47c3f7467612e3474", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "cd25e920fe43a1aa8d828bdaebc94476f1eef2cea862e7eda30b62a4fc987425", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3b824ed78866ce81c3b8bd6f76f5ae24c1a363a78e0699a5ed25561b7e801352", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "b3eabf3042027e046c2e4a75db92bd4499e01a44f8de38c33b49dbc8af2e3620", @@ -19903,11 +19903,11 @@ "T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "5b0755dee09e8c53bf0fb979b77cdd8ab5008c196d16120c19c195b5e6c2666c", "T3T1_en_zcash-test_sign_tx.py::test_unified_address": "254e319fa5ae4452a9036fba7947d47997ca57005943cc72e91d31a1bea521a7", "T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "d9a6cf5dc9aa49737ed09568f5c110d2e9e216776f4b8be7e1b30b94150bcd05", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "4d8cf4dba0ead62552e55ac93649c69282774ca8db4ef078c017c00c0fc8a89c", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "c78aec21f5200c47b1c6721aa1e2763434b3119bf557215242d8b2a91a8b60c3", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "90e42416f0cf8e501cfc8d8a345ac97817f36bc09cb88dfa8a83f6d097254f5a", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "04145b23aed8a6be4a95eff1523e96e6b09e8bea26c666271d896d5afe1ec1ed", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "042cd72b60ba27782bf58f02e1357b324a8637fc4218724035398351f71854cb", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b86eb04aa17db7ee96ff1a0710854751dc89ac00c5ae5c5895704e9a9f84a09a", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f31d7469ee6e07a119650a8ab9ce693585615f3d24ae58f568802ac2270cfbbd", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "b8728e21a8b802b0d59deb631000a37e56554cee716e4b4debc5f3f237c1dfeb", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "8c84da02262be30b230c3547a6dd04f7cce73be8346f4cf208d3e8b3c58491a4", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "af717139ed153dbd0fb7b2c17974b3f3bff9020263cef711f4c6021b612c115e", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c4adc8f4c57d7ec898ee1f42c852ff3df662c7d4d69be5fdd3474fbe2387a45", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "601b1e06b1be826f9cbb10dbe83d9b6852e7d22efc6b98bd2c9f4faf8ebf1442", @@ -19915,7 +19915,7 @@ "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c4adc8f4c57d7ec898ee1f42c852ff3df662c7d4d69be5fdd3474fbe2387a45", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "601b1e06b1be826f9cbb10dbe83d9b6852e7d22efc6b98bd2c9f4faf8ebf1442", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "cc7b5f0cae4ffc2df808a84bd1e58a3c6aab25299073bb3a70703305b94b3ce6", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "379b5c732316a424ce0bd37fb01dbb8c9b212646481c5a78307db95cdc11d458", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "61d863a3f23cd91a6e01da628b9f69bfe5ff11abe5aae244930d6f538bcf1a3d", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "d0b2296d8c64caab9359945e03aeb6cd40687faecb448907146bfb11f80dcc8e", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6efdc126231e6616b24835f9a2a7cadfff910a22d3462b0c1880047e1d2a5101", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "8f9440b257d0ef3475d4d618e6ad7ba5a688c4ee0e5bf1f2a266096d74b78b89", @@ -19932,122 +19932,122 @@ "T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "51b2010eda968da7bee7719e08cfe2917ec1cb5b539b8af6cf56b6e18fa304b2", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "1554124da30ccbd86539daaa1bf6eefd0aaed2e77c6760a938925c6cdb5a301a", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6205977a43a139a3fd6a495e8c2254d06fe1fa554cb4738892775227016ac5cd", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "ee0e15325382f4bcf722da4f1020f8597b8490d71410709784c5bae9ebfa5d38", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "d290e8eefac708b619c1049a9e81c21c7ba21b0e4257980b3ecf70fd89a27643", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "de8234d8f639226672184f769600c3ac5db4077e73d102da9ae4d249aabc3218", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "bce1f85514c3f8765a67d4aaba8944ad39860bf2436b5c613e88f207553b665d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "e8f82170297b2b26775a828712ffe9daafe2c56cb88cd330a210e573e637f36f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "b1e13459ff050ceb7be8daa5dd0276d8ec0831ae26f55589b28e6f44a6dacfb4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e3f1dfd3a42f385a4eba398e192b257cf79c0e9464f1f99b39c0143928c6ee2c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "84c689107ce5fdac43d1a07e6dade40c36e4803848f0fe6dc1abc3a721cb322e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "527463888a2bb0efdc3ddd1faab2d731bd8e36c19ae8f16712211f5ef6d2b74d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9acc5690c1a6127fbcaf78c152367d9ccff7ac6e648d548f4ea954c26e9fcefc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "5ec4d744e25f001e74c90b69acc5f9670200dfdfaa00160cdcdfc213dba5a81a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "11a41a6ffcc681861dd60aeead6a491f0ab34897794e6549f6cd5372d158b216", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "470c01e4cdf0a1ed829c395dfacb9c65eefdc6c49ece7d1d6f6f9ad7afeea618", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "78c77c7d7e4c0ad5f4e28496f152072e24ac8563c14815d3e50086db7857e831", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "aaaa6e58b5c7a803526fc75b79d0822f884c4b09baf54f9b5735bf1a5817120e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "17457b0e23b929a8ef542cacfea7a90ce9468c0ef815f2075e06ad5de16d8b85", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "ee0e15325382f4bcf722da4f1020f8597b8490d71410709784c5bae9ebfa5d38", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "d290e8eefac708b619c1049a9e81c21c7ba21b0e4257980b3ecf70fd89a27643", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "de8234d8f639226672184f769600c3ac5db4077e73d102da9ae4d249aabc3218", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "bce1f85514c3f8765a67d4aaba8944ad39860bf2436b5c613e88f207553b665d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "e8f82170297b2b26775a828712ffe9daafe2c56cb88cd330a210e573e637f36f", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "b1e13459ff050ceb7be8daa5dd0276d8ec0831ae26f55589b28e6f44a6dacfb4", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e3f1dfd3a42f385a4eba398e192b257cf79c0e9464f1f99b39c0143928c6ee2c", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "84c689107ce5fdac43d1a07e6dade40c36e4803848f0fe6dc1abc3a721cb322e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "527463888a2bb0efdc3ddd1faab2d731bd8e36c19ae8f16712211f5ef6d2b74d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9acc5690c1a6127fbcaf78c152367d9ccff7ac6e648d548f4ea954c26e9fcefc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "5ec4d744e25f001e74c90b69acc5f9670200dfdfaa00160cdcdfc213dba5a81a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "11a41a6ffcc681861dd60aeead6a491f0ab34897794e6549f6cd5372d158b216", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "470c01e4cdf0a1ed829c395dfacb9c65eefdc6c49ece7d1d6f6f9ad7afeea618", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "78c77c7d7e4c0ad5f4e28496f152072e24ac8563c14815d3e50086db7857e831", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "aaaa6e58b5c7a803526fc75b79d0822f884c4b09baf54f9b5735bf1a5817120e", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "17457b0e23b929a8ef542cacfea7a90ce9468c0ef815f2075e06ad5de16d8b85", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c4c9aee3e0b9e94a845e4268780930cf13095764336a139d57ab6e393e3425a0", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "1522c446685ff09f1ba2d489c6a5bcb79fdf99eb901d70ccd3609825a56a7ff9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "33e7c75c7c03258845bda1009f38d50d35eb12af1b71d66d57a14799094ecf3d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "1065bef098cd184acc99ccf809b4928327e6af6bff0727ca5b9f1874f973aafb", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "8d7a2d9b17d090180d554eaad64b84d6a8c1b9bbcd8b53110ce34533f8994b70", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "14e4f3d950317a49e1e86f0f14438e771fd38759889a70478946b0c45235e169", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "90de9dd72c99108de4844519d67166ba2e1dc8249c1ca95e7b9d2a32fe2e4d95", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "5f7d2b4d9c8a5d5287f284fa00187bb9b00ab26d2cffa2a1283dc4b2f9422475", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "dd02fbce15993333da6f673aee176b8128c8c43b4ae838b431b16f01866a633d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "460bfeb3a814653cab2af282f620693dba13ddb4bbe62dd7d05942168c532b59", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "993f1e4e3fb5f95fbdcdfd20d606df21b74a7cbebd7827af740cc7e2e959ab64", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "9fe0bcd844ddd9ca3989dc4eadabbdc429f74b1618b0e836e5198acf515388f9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a018e2e944a9ee9416c95007c51acc4e1d3bbf7cf24932cb17e9176361b64a80", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5eddfe2278bb9f42e3468830e60f3497b85df4d9fc21f69407586fa1ae68f7ad", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "e166196f590557c7b9d4d142a2b9c179a7b5357a3b69aeb086c329835d0cc8a2", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "7e635dd5f631c15ad2cc91fbc8f2b758a5b7bcdab02e62e713890fd098278403", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c4c9aee3e0b9e94a845e4268780930cf13095764336a139d57ab6e393e3425a0", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "1522c446685ff09f1ba2d489c6a5bcb79fdf99eb901d70ccd3609825a56a7ff9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "33e7c75c7c03258845bda1009f38d50d35eb12af1b71d66d57a14799094ecf3d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "1065bef098cd184acc99ccf809b4928327e6af6bff0727ca5b9f1874f973aafb", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "8d7a2d9b17d090180d554eaad64b84d6a8c1b9bbcd8b53110ce34533f8994b70", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "14e4f3d950317a49e1e86f0f14438e771fd38759889a70478946b0c45235e169", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "90de9dd72c99108de4844519d67166ba2e1dc8249c1ca95e7b9d2a32fe2e4d95", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "5f7d2b4d9c8a5d5287f284fa00187bb9b00ab26d2cffa2a1283dc4b2f9422475", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "dd02fbce15993333da6f673aee176b8128c8c43b4ae838b431b16f01866a633d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "460bfeb3a814653cab2af282f620693dba13ddb4bbe62dd7d05942168c532b59", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "993f1e4e3fb5f95fbdcdfd20d606df21b74a7cbebd7827af740cc7e2e959ab64", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "9fe0bcd844ddd9ca3989dc4eadabbdc429f74b1618b0e836e5198acf515388f9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a018e2e944a9ee9416c95007c51acc4e1d3bbf7cf24932cb17e9176361b64a80", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5eddfe2278bb9f42e3468830e60f3497b85df4d9fc21f69407586fa1ae68f7ad", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "e166196f590557c7b9d4d142a2b9c179a7b5357a3b69aeb086c329835d0cc8a2", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "7e635dd5f631c15ad2cc91fbc8f2b758a5b7bcdab02e62e713890fd098278403", "T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "65d773acc22faa1382670edc8b9258f4f33cecaf6d856ca367591812d501ac49", "T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "7043397fa76718f62b1f6d12468ede2f822e295ee9d0a162857c142fc3e82f59", "T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_bch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "0eab772bac1530adec88e670e876144adb56897f6a2cf25a0e0291b19a659351", +"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "7c653422dbaf3072712a92b52b279c362616beee763f510626c4121e9dbfa4b0", "T3T1_es_bitcoin-test_getaddress.py::test_btc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_crw": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_elements": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_grs": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_ltc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "c9b6ffdc890628594c33c1576d8f7e36f3987e33a7f4e9d1f910d3c12863830f", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "44ee361a0a43578becfc12ddb920f3086c84f52f45b19b48712d86fb84fd2e62", "T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9537aceb609ae27e84e5d7f7288e5db3da52873ba1b000e2f3178dc1187e9545", "T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "8452f1fcb9d70dd446e46367d19fee7ea444cea235315b7a53513040098db499", +"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "c0d30d99b0fa6d9f9aa10ae6950cb4e2eeed4e70ae257b0a2977c72d3d532060", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "30eba2b9c7efe80ad43d0ff2f7ad754d61d70d1dc974a390f354d9b505b41056", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "7480044c6b279ed7ea3dfdf6b49d2c9c255ed23dd7b022ccf4d110e461ee3066", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "cccf8a4b9ec9581f4c22d823a222ce0d84e2babfa6f4c3b053fee278c6b8840f", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1ea7f9445d02aa3c116cfd3df05ab9ac45512191ae7f0f011cbdc45b96bf7906", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "0632adfe5970637c192a9a0e3a9876190e3648e4a28540cd9395b8a0db26c1c6", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d0b04583d2623b2f591cf31939f4dd8a05f3d3a139a9d68d13a9375159c019b1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "8e3b3c5f80dcbe7b6b4bbf4dd3a6143031b80680b15eb2e8e482774de3f12bb6", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "16224c1dee1a568d2d44d62586011a9dc00dd84573715c8e1b7b2faee41744ab", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "3640dc364d036476b8c8f83e22d0fb78169521696c63302a41e0ee697d1a9d00", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "6cea411b8522d4407769e2ccea2b81a92a346754c3f203ded8f1db9e1fa6ade6", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "77d263edd7e14220b42c6a5cb762e7ec1c6b0b5026af3e8d26bdf20a1e6c8430", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "951c477e805a10d50f0c693a7245cdd61867db674be7cf6859ec3489e6b734aa", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "b3da6ef4c5d9a6a78f99aca72b2a3fb201f76f4773294f465f72f556fed72bdf", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "bdeda96fc10043ac56e638920cb9d3cab6f2d6113fa44d90ecae444f7524ead6", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "b688bf981df80a767e005eca58cefa8dd28ecf07ce83a0668b04e0d4b0f2feae", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "06e1146e8f1684a4d0bdd6b9ed79f7b3fcbe1efbab5cd3baf47db13782edd692", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b1089b488599642e644ea819f69fcc15b764030b6cb61d2fb96163d47c18d7cb", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "ca3d075e013c453e2be1533aa03efe6dadd815595e317fb66194eb1a14be04b9", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "edf1a3e5cea1aea871a86863e6ef3eccbd33a8b1232f54cad8dfef4e878c79b4", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "28dd074534584ce7b143256c1edeb0360c999add7d4b6e1b864d55e67c833526", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "fcbee435d278d4f241c286fd550ebe25c9c43a0ab0f44d81b632646d7740be35", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "24ae670c5c21d84ef42b1fadc6243138dfc2956976c022f135fddcb8b0685860", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "caa06722bbfe2edb4609c94e31910548a28639e51d994c9f1c6cf99f762b6055", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "b53b42339cc0c4bd97fb80868ecd40b797874e4b29a4f064add2d38d811dee29", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "035df17762d512b343308be70d3edc70e3b7448ea0bdd0e0063672d50c7a9f2f", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "c6b80c29b1a87974bfad3f26d644757d8f5c5243bd57ddcf6980de4cd4da45a4", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "5db43c08170d2e5170ff343609b3eef7f29b68bf04fdf5b7b4b6247a9b9c722a", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "0313b9e59c663c0a16013a0f29ba7ab23643ec4f8c15e6adad88c774a2e1b37a", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6634b7dfc3526e8e47f84424f97199275be949ec57ea3545d28697c7d03c05b7", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "f59dcf1beb6cd8c82138644c73851088469f59a3f88303a502e4dd65cc7f9320", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6c1bdcc61602bcd4a36d16d1a8e4e2313e270122a9e4e1ab6906ebb399a94bc5", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "591f942883c4597f8d92194c2c48e5eb62308942e3a006f3f2bac011fb140d65", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "db90d96b87ca978ce61a06e7f7fa8ca32a7f4ae175c649344e6d7d3433ff4605", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "f230a2be1a40532a3eacf2b6b136a7141e58979265b0420ec93cdf07ffc5793c", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "79ceed49f0540f3e6e0dacfbb84b7de547e409eda62f7089252b15eef25c1193", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "ac3abe0990222558c8773760146aa500fdfac8baf070ab0f1868510311c21d6b", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "f3c91ebfd9866d43a58e95d029db1f307ef8b14fbd243bb0fbe68882af967cc4", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "523e06b2964b98365b566135b8045fe43f29aa2229605010a352e1982cfd2736", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "ebbd7c001880f92f1b51ce789f2d778f4ab9ce2bf7ca6c097ea3719c6ae5238b", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "effba0ba779d698dc096008ed89ac7518f23d85c45cf424d02c9304bb4f7de4d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "effba0ba779d698dc096008ed89ac7518f23d85c45cf424d02c9304bb4f7de4d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "f7d0e212ccbce9585a5964583625ff9b0821f6cda941342d85479d85ee26167b", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "de58ac0b335548aa97d653d2e5f5ccdb61d3ba1e9bfbe63c3b80f1b83a7bd824", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1001621eed9ea4b285774cc64f726ec8db0c85d61da680c4aedf3f30d1d72e71", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "478035393dbb8370f7918c3dd7deb137f62937e9f4203d8312a6551b31ba412a", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "be2fb4cc93dee03098354dd027398c91a6b61e18f768b993ec964ee7d3e94702", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "004c6afe6e35a8117266ddb83a827e7d1104460743bc1fd7dce5cffc49ee7880", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "381c4b29db5724a183ab1c7def3080fdc5a746abf3f387275244c6a9d74a996d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "6988428d238cf6056c63ca1aadea84e888f34111ee0a977b3380052f29948bd6", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "5ab85132221cd4a3aa1e0c9d6036e592d1c2278cc5919268641892bd8a170775", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "19db65ca6214ab833e91bbc0a152375a6da6eecd313d2d92748a6ee3cdf88e68", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "88928e04127a1f579e69e5b83b3db0e85bfd4938a926257ee1024557f7ad7dbe", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "f415b80f260ae24b8572ca8ec677d405c734e6c4dceab2c1478b614738952339", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "6042ec28187010e0c128802a1d3b81838d9f64ff5cadef391869df3e3702c9a3", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "e99702e56b33af02bc172b668a34e33442dcc8d8d5be4081c39d60506f1da045", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e6885bcb1586d9a175148640edb3506ba42cb1e97c4511d798a00fda01a5d58f", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "deae52a983bb0c8634cca5aa95baef4bf8b8666e96e1cfdf3942018659d8cdca", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "53aa63bcf55136f8a51fb8069eb847f79c0491d5ea3949b0e00b141e45c38215", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "fa6c021e9e8698d29b4eeebe5a830d00611f1da312c84efeaf91c23a81e7695c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "9eab42837d5df4313cc6ac3638b2c3a8c6259bb71750527f1c72924e08f54654", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f61b26a4542532f98404f7e2276fc64906cc429615f079cc456e7fbd09b6f61c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f61b26a4542532f98404f7e2276fc64906cc429615f079cc456e7fbd09b6f61c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "7eb8f48e27676b284c09fc69c992a254f9d4cd64bd6fc0425f2f48bf0e13ceba", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "e5614063a99b2ed09f6f4f727c73e5496ccde69d19cc40fab7013023425f0fc0", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "9e85d4fe6ec2115ba2a8d5199bf963f1ccfc603c54d0c07d71edb35d729f63cd", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "952b7b4e97da058476e9838111556f4dfdbf3da5122f695eb49626933286126e", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "a61ba3a70e3fcf9ed969d33fde51cde39b442271a81045e1eef957e67af9cf56", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "3fab5406f1ae77f2c6405d032edae19d9bc1634454e4a7ca652617ed348d173e", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "82f382896a8ca0861c2abd1ea53f2f9d94896a250cbcec8c578378a6fe447c96", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "65a86ab823f32a0082cb41f9b3ff7b436a70539c2b772866585b348f79f5899a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "630974e7d9ab6331b495d4c9eca55effe96867e6ff3d1048562a87754293c56a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "239affc80e19c7bcca247b2ab7246373b9ddad8db240c5f87402431a37e221c6", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "c5e9708a1cba71b675707ae7e650cbac8cf3fd80270210f8e969c52094ba425d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "246c322e14d23f91a9cac87ec7b459cf5ac666cdc3c5e84e6e47ad368a487c41", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "91e044dd6daf86816f59b07373e4afde37fdabac6fdbe255206ed2bcb0d3f5da", @@ -20068,17 +20068,17 @@ "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "9983d25adf2f0d4a66697e57b63560ded51110812e63b0984150f1f5a350f49a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "6490e1782c1fa8e2453f654389a5e6aa6f8a9a6a0e8a78e3a812bb3459a818ba", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "4b622c0b726e15c93d7010a1963a83373dfff96aced004b8da50a5ccb6a20a98", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6911b8f6cd55cbaab007f8356145acf0c11ca33b7f686260b3e0dc9a1ceb630d", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "edfc8c963fb88aa681714462e30d83828a02e686463a706e81b84c95d99815a3", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "a00c1934c7b55e6a49efd40e4705a0bc107d4460a9a59b335f7fc15cb625b0b9", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "f3355d8ada5d6a4726f84cc72d94a9f86d59292503eee9cda80bbac98df3042a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "5bdd9bc93e03a5e21bcfb0ec1ca86f3cfd04924a99a3a8a583cbcea974761d5a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "22d22089bf03b40609c356a0e0e7f12a705b74afab7d1d04ea2bbbea77b24f7a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3e6b747e1684f8aa6bcee27180fb7d62a060f0c1f1e8bc0c6ba45f0828c95884", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "24c6d468256df13f6fbd0ffeb03a0b20f857c29faed78da3c18961f438d7427e", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b03d9b85f2f00e79edaf8156d0974dd095ba69dc00ab92e21ce42c4de06ede87", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "91deb01c130ada6f503f4130ac12686f79e8ce6f97113eba8e2107c85c548dfe", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "38a95f9148e4f1cb5788fcf86d3337ba9c17becd0d5b46ad08bf0fb78dd6f820", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "9bd409644c54c4e0ba150391f546a6a422e9f569bc34962668064d60162dd37e", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "f627c22a06ffcf1a678ed699be73ac0ed21ffafd1ddfa7a7cbd4f12f7dbba883", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "93e54ede4706a5dbfccf702ce536dccf292e289f81d234c06706627e1d13f274", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "89d0c4ee0cdc031ac0b9195f640393847a5710a3012b6dd4ae94bbc643019c35", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "cd8553d1e940c99e1343a5083c4da255d0cc47ebe6870d7dfe1693a3f7d68c2c", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "66cce99b6b8d88176b4f69d743d2646031b911a133cccd2150aabf49c28bb2bb", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -20119,24 +20119,24 @@ "T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "efef5dbaa21e2282a8edcb6191831d164e902ea7063b2a54a4e50176823cb6b6", "T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "a9ef4250acbd711656b51f63f0ecebd8fbc9cb80717f50800f8321e3f5bfad21", "T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "4f40e74779ad80f91892f6f1c7a3e0729233c7ce24ac9253a74b91d46fad541f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "d321817ce8a9365d638ea921de901ccbcc965f79013f6b26df04756f8b8c4166", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "08e34cb85560a478f38a21e1a4600e1839fcb6d775e974a883a448e29ce6b047", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "00ed7c151f79bb412820dc5863790580646afe4307c19f1ef0862bb3aa769e1a", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "78225ec856a974cfaaa8af791e05a9d2eeb506383355b8df8719adc6db766af6", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "41f4feadbe7380179cb59684bf4010073804d56057143ecbf7c0d07272968095", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "42d0de79871c10de66585460c8ea014e342dae46849f129e1ade2db61c7a16f4", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "51e54090616ef514f18a0d290168e8e293fb022ad951de982ce4a6caecdc4a09", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "92e339dbabe7f7aee100b7dc6d3c34a313630a265e475da6d77db556f82fce37", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "ed3e1916bf69aa3204be044ad5e68b227b71ed6fcef054209bdaa2da09a1d0ef", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "bb979a4f34bc43906bbbb096a19d505074e0c4cfc817610842373f1df245d096", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "82c40343e26150d8b01545add6464fbcaf73b5cb780ee15c5d5d80de88274f7e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "66abbd34a09cbd1f8c0ad6ae574f79f6c728f8388bfce121ac1157cc235dfa6e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "0a9e25b993597db75185944a950de3a56d66d6b80b30e40c6026636e745b11b1", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "a1419284315501a00f719d20b8658205a71d294a2b16645bb3caa31f9d968519", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "cfb77e585ff8943c4fa034db3da6f690b9c7df39b352a8260127774a7b9eb3fa", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9dc5c1b7e491047b57d8cd99ea21c62e3630416ce157f74d432a1bf848ae6d7b", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "f55d733877b085077b7fccb35e8f0b8814f265911a1fc254448a320cad3c096e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "7506f8f6426e6acd72f0214d6f5b130c4c248813b48cf76f6911960f6df5c728", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "4d7fcfc6408cca013b038feaec8679a45e35bc03dccf0ca4515f2baee10aa917", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "5d44cf34baf58fe2cdacae61c4b4e6d4dc7d352e4a47b3b107e5a34612043832", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f70c88f39cbe5219b0047f305459612abb4f6a34ed871550a9378cb524215914", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "c1f685685ae375b85ebb7b429fe7c8e3d75bc95aa1022a46c6be2bfb5cfff4b9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "5ca60f38ac289aacfefc0bcc9ad1ee4b3209354516a28c18be0298d9243d512d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8ab0d8789bd4aa4b00d58e252a6552f4b5ff02491a0a227cbcfa060daa7c6cc0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "43d02a6cf3109a1ac2b30b53da17cd69faf069a4f33b425571b6e07a1a3a6d93", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "fd13aa487775a6b6380dbe8e815cc1b538b184da2385e9deefaeb534b56fd639", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "7431abd0b1c6d0ca393a8e6f66d1251c939476c1a696028f5292cc81989acdf9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "4c680b93f34e50056d75a609f4ef90161ece046f3e23bfe9ffe69696ce3fa7f9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "403538e3a6239e75c1138048c8273792f6f1c7cce3cef8536e21703a564c74c6", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "3fda4189d6e047c3e771be4046ffbba19bfafcdde4246edb813bebcb21b22de5", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "4d9cb396fa24fe80cbf4d2bc7ce813afd1a8e62576d86aadd04e3bdd1103ba44", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c833181368e2bddecca26417f747855bf40ae2d76223a829fd31647a32784542", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "3abc3de168952378ef29333eea8550af2e2ef10ac0e0d878285c0d421a15d941", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a1c9cb749300eb4b53b6f84629cf854c1823e364b58e1d3d632c2d66b145e792", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "f7612d762a4fb0597c0dee8c3a0e97713d57a8fd9f0abf66f9bd63d55ff69861", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "b1defe7ec013eca6b865b41b11da522a1e10fa83d038b8b001492cfe055f490c", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -20354,106 +20354,106 @@ "T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "6819141617696b0a9b0cc9931d896b79a0c6574b5e7bae611ecb54bfda7a13aa", "T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a5d2171c871d76d7eb17a45a81a0bb7e775ae8aa7e21cc08c2d46678f526c63f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "565a07f3459dcee219546d780aec59640ae2e109c9ab1fcfef09e11cd91dd0e1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "8873cb1c37891901342de6062d7f831c5d8b0a2f9830cd263562f8e56e844a6e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "c6b39c74f0c29ae4e91216c3d0aa7957c45a34ae4576da5ae415cc789fd7a9df", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "48b6bc4a71aeda5ffa39f497951147f6bf62594ee6483dac1c8189f6db238ce8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c7b166dcda0fb6cac4de0563ddd060940567cce127ae7df3515fe32899cf6e21", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "43867b4d7ef97e1fc69506a6d2e5e5a3a3aa1bfdf4596b7f3b2414ffa23cec24", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "83140eb997c188671b74fdf10648269aa7d5719ecc59e9d393114559911fb648", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "84c27f3ece06de4fcc5cbc505007a18afcb43b0dfa5277ecf366d53a4388db99", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "523050c9ff8b3fe763299e1f1659dffb82f9a542809e82f3d53fb0c56012275d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "4f01c6d74a1fe43637a790c7f4e6ea669308e53c95e27180cdd0f329f618d1a2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "d6e2c89e50a60593eed2b529ff76d3360bc02e2b9be4905933c73ab2b0ab704e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b3269311493457d24d3295779482409c90d152f0b799566f82ed6b5b0807d142", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "cf6446616e13dd34ab8f39f79e4a55a87eb279f68453beba05448a3cc816a2cd", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c6f7afb4db11eafe27e08529a53d694c3017e548d2939de5d0d55863636e74b4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "2995d25f32931ea59a720ad2d05768aad114cf1cd5d7940a4f759b82b06d3e08", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "5d61d4435d3e91c554bf41538ba079b14928a77be52e91c1f03cb05a9a691725", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "c87fc9a6ad6d73355a62092ba400cd1cfb016f010893caf16a23573f7b619093", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "393451236665dac2073b571120cffaadbd341e2bbb0e00d7584b13186513a630", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "79fb8b753fbe44577cdbb66f708d64a8bb55810f237ab73d0f42f0eba4e941f1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ccbbcd19c7ee8086d8544c868579231026fed805167fc615444aff553b3bfc74", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "1db71e324021374bb51e593921dab43743cb22418be5cba94526ca953d004e61", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "4fe6a056afb038ec666d8bdd89379a1c59a17f1673f21c043bcd5f039481c3f2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "b878ce36c41039e15990efae993728a6d5cdc476154b18ea8043b3b053fa8146", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4ec4385e0cf1df1002b746531b694d2ee50132799620ab38294dc93d8cc6bb98", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "abc44ac3776a3374131e0d035c20cd1ef4066b492c97797d6016b17e130dc363", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a7486ee53aec9e2cde62380a9b31129c3b5e9a93b46744529b1fb6d5ac93b94d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "f292ba4167b5f459609e5fbae591c213d40b6541c845cbfbd1c26215b6fa6206", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "cd272d7e909546d39b0b10d24d2904b9e48979af57931c810df007a60b9bdaba", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "50ad314c3de8a8566c0006ffcaa4b7341afbbadb2b5a852571099c87b4c6c934", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "1643221031390f2f27d2df1c882bb23604e0a543bf27a003e77360938a65343b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "79603ca742192e885ca954a46d2a00eb1053cd4e4114830b3656c4455f501481", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2dd42f79c41194931c1924ef22e062a431bc81d26e5e79d31a1b3f1406f7ecfe", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "7d8f2461d76649d725c931c5194baaecd40c3ced8dca8f8e1164fd10844c1bae", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "b9ee1225764f75faa387a1bd111819bfe52b0cb84cf34717c01abf8a767321f6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "2b339506f378e0f4bd44c0db6f1f9454319d497725efbdce8114883a945b93c0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4dc381f020a5afa4127185d961de325baab437c41f62da56939bb77e2d02fe98", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "78e94c1e4d3e423de8757f45e1ffe03224cd8237e43ab7c4af527ded7d356c39", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "0fd3b0841604d143c1e32969f41abd5a86295c5012627a4e16b18e3e7a04c819", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "590b73b38c210876b33c366c8c6493898252b846d804af6e8ed2882a3e87c6a6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "af1ed52c96502a5afa2801bcf8a1a96a94c377ab2d56adf50c8bf30322aa635c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "d510b11a21da40d466ad74c5aaecba397ce771dd55046f6985c58ca97096e73c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a046c2bf5287e95f85ce1b6174bbfdb2c7ed9762a70448787860c1dc8648440e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "08033fa3a24e834b7fcf1cf5e6a1bdeba97578efd3ed98129b6261add5e57132", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "1ab6abb649f2a34a3adc24b16ac5fbedbf6c0e186334bd5b56d28fbbd5698515", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "181b44f445e048011ec552064e5136c4ef687c68f7ce9cfeb911f8c3256e6dd3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8bab242b2a03be4086337a310e4481943e55c41ecb5813c87218b20f98adf5df", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "9e8b719b2054f71c8f946c4e719242643474505f4c6e4d794e0fc6758896ae8e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "5350adc569813d2902e9c959969521d7f4fefd56ac37ca283de213d71973077d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "5048ae6caf366d7f1ebc54f30f4e2ea0d280375eb08faa97f17424e4837f76c1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "dc20a2528f6622da17b6decce7c7018393e799ca0f2493b375798f6cbacb86bc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "e0c51606e2283f20c3df012ca8d61e013d1b4dde83ad46961273828c1bdd38a0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "44be75a04a783defbc626ef29b398081173bd1d5ca60f3ad32190407ebb19cb6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "216fce2439ff63bd6a21173dc5b6995c03f7d5c9f8c10a09316712222be63fd0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "e54aad5c92b96cce5b7c4d5483e2c15bcd26045f333627a4d38308e07eb847ad", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e4940ab9b571ec19ffc7e1072cc6b8c9ef00b65864dd4c7f2f87e88bb3e3903b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "89730e12dd180a8edec1067ce73c93ee1be1d0e83e4a5906a6cf30d579edc351", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "678a23571e12c534bf0a9eba657015fcc4f6dd179e1360ff1310e12f6b30fa0d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "1aab4e0bc9daaa963a2d9039625acfaefdbd325568cee6d392e28a980d5a7831", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "58a7e3ffa343b6d23819cb1701cc4ef382e9979e321ff9bdc7d149420fe83c1a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "e67b839989808e1a119329b27d2376b4fa3eec66e8fc25e794265daeedf948f7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9c30cfec9178c8f0883e93aa43550ff7a5482993d4cdcaa178b03ba9b39f70aa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "2ed1709fb3ef77ab0ef19dbbbab86827c932cd6938ec9c663aee4e8a7d91f329", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "a343fc02579dbc2cc785c7e6f3f9f19b6c0f5fae4ccdb5d6c8c85093753ee01a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d5222b87f16ff71d930a481de9ea23a5ec3cd0d525bb2b72fa53d72dd87090aa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "6b134b2b024c1760e221089a907d51865d995f1c1bf6babf1fd1109d83fb94ca", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "ef2e22ddc321581f8690efaaf20adb26948143ceeb881b80f81b4852e5d6662d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "afbba42bbbbade4b1e0a22cc4dfb2ab88a4eefbfc2756ae9d3f2ad1781cb1fee", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "67fcb5475e13db4a09aee695d49faffb6fdc31fcd53aa9e34ecad3032936ecf8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "7d68c3872b5a36254a7f04a116e4bba27775c252a91b0a686c0943410004e2cd", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "41e2addeddf38855d14ee460770489408602e0b5c4899b1830466d2a75551f16", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "ebed5701c678cd112a9b55b328043e1dfa76659ac9aa6c825421264db397643a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "36a4f7f5466a6278aea6e17984a47b2d661853abd5f00b2d0ed12144b4df6f68", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "a3812c5fca8b12d90dd92c95f99c2da9ca0edd36fda6dc3bb415d097354450ec", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "5c54535a97a7c883966ebbfbf8aea408e3abad6d2c3114dc5d98fa11e898dcea", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b19d337edd0a4915d6b26acbd6fbc509fb3a3fd59efddd6c0218741d58551d81", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "c89984a64b9e2674fe414ba83157193c865b220fd405f3c079149d7ea75ab343", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "c16fbf79025107f1d66e67864690e04c142db32b3f22f620db9a53a7ae9f39e3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "091a12fbc83ee37e80a5ba1212c997f4277ad1580b1f822cc973dd8d28d86899", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "f04e179890bd21c52d3f88b7ee1899dfb0d384c6c4010f0321a7ed484f3cefce", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "25c8f1f4d169e280497e76d98009671240cb85ac8b3c47f09d8a7fa9c14d1faa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "050da5cd8d3827659388f2d5065b8d4d34a733c0ea6ae08c7ef7def148933177", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "312daac28168f113799fb96eaf561200490f39f5107f85d7ea8e5a71b994a1fc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "c21e5e837df3b4985d1a9aac02b54b67069b84c68f6bef90b5c4e31f7b79dea0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "35950f179cc6334424d4b21b5886983a0259f966b1cfbf16a02e01017a1a70a5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ec7c136f48fd7a68333259d34aa896e96410b1d6f31916511030f04d5f387ef7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8b6ccf1457c961081d5cb08b14d1f033bfb729506254aa2d76b19124cd2dc660", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "b5adacda787263111ba27a0f9231523bd629459685bf0d7f912dc918206bb30a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2f0a95ad867ac84f64be9e626dee6842114b463cf5112b291b295a2bd328ab96", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4660a87f1a6728ff9861be262eff97af9e20077da1cd8b720e7caa4726b43b39", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c9d9ddae11bfb8635284d0bc855e1204c4aa0e55a6fc8c66d2be1b742ecc0e84", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "2ce0138e3c8460e4d1855043f272326308a1088a9afa6a743089ae46587a946f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d835253a4515b5747dcc8acdf1eba902bfbb45f298fbcc0e4ab15aa425d0fcfc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "256110cc1edc22b0e961314a999b3d294fce1ba1eb5a70aa6fcd1b64df9858d3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "3caa40d04b6ab80c2cf94c3c601dc41f1f616a9d1c5c38952e69ab2d0f9288ab", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4467dadb30cf952f4a02e120693a6663f1baf838a49e918d91a6c680ee461df5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "960f5df34a05918280194e5d9c4fd5cdbdab3e4162e57c8bf33723d088a69bdd", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "9adc1142c9e1fb9e93fc63425c418948da9699702e7ec418b347af0d271fd639", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "2af8538c9e37db1bb7d865c1bd95eaed7d03876b1274486f6d1d74b060aec52e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "2b13333914c3d6b1e96853de33d53e5bafe75b70b72f8106bfba0a1060e26ca3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "9eca551b79f12b016260be6e12b95fce9b4195e5444a9998f60b23ac2410c553", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "dae9faa990792397301ad8203c5e88df38d0d108d90629afd3cb45c02f1c94b7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "755a8f228040389412a3177d640cd29d7e357decf9088b405d46ff4dcd813186", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "323c86d80ba7dec6b7e1f1d2befa7c07461f8812c1fd53fb545318e1a04166a1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8340633e419738e1901a4ae655d69e8c931c58658480b6b4350fdb16060aedd1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8f8713259de6941ec3f9b899501814e2fb17e3cc26ab6b0127ae27205c83c753", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "03263634b3e58c924b3260c3ab790efda608626d9f39c4f4aeeaf92099dc35ff", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2857226954c35189ac000384bcb98a4486054db297c13ea87a80cc9387276bc2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "101ad992f85632b46b83728f13b61af21503095268829d55e55e36aab5b3d90c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "631dc66d4de46909a26e8aac320508de0a8f6e9fe537823276e15ec5234b938c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "149ceec770448c1bdf9682870c8183e4d7bd67e7c07d92835c4b32a4a0270285", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "341f1e43cf7f40f1a5477d55e795ecc7258674d6b88ea59a0746ed7096ef4d1e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "25c1c77780d29aab6a11aeaa82bc4904e3f9cc8e06cd541b166da21a6a89c180", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d1bac517d1d98d8ed479c195e0c827c6b3aad37eaf5bb61f4e0279d23d173c6e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a2ea1ea90a42eb0d067389b03ceb87255d2fff432bc6e5fce4d01bb9b0fc47fc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "03bc04a852201296996c710bbdb472af2818b0a0f0f7e1dc41d6868e89ffd68d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "d4b67e04ff95bdf0bf8abe5df8571e713db5c6002186f3f9ed682b73057db415", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "67bdb202d6a41ef7621a788e1c0c1238c14fc18fcb66f19ba4cecd37416fe519", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "00a74ba749fa08f24261eeaecc7a5466412913a7cf58a63c1ac9982dc920ceb8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "1b6bf1e473700095eb69b9b6ced0f55213969b854ab89e126bb998edc9199478", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5cf194fdbdc2fd9e60882606f984db8f774e6fedd62ecf44d6fccd3c1612ae5f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "184609f6b144118a5e8b23d77693b2d12838889cb1bc52dfd6422baa188027ca", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "cca62868e8f3fadc61e6762245f74282921f7a8f359e11aaac9711afc41fdafb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "1064c0e8dec80ac29b4e67f3038e4851593dc876f85783c5dc114354c44b936e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "af997c8f32e8672c7a4aefcc4fbfe0e3d92d2a5387331c51a5777fa2cb3a1a9f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "6dd9440cf463d4f4678f52f56bbc508b471315f5fd9a39e2d60711839cb91b66", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "21b8c3896abf71341bab2c4094c062ed487a888aa7a1a7f02e02dd262c36d5ea", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "7e0e3270656715094e40c1f830cb454d198dd552504c71f5bd788647ee4b9a0e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "058f729907a805610710adfb4e38c696f8eb83164d56b8d697ee54eacace0f01", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "41194cac3e56cbdb27c6d24b398692c557e7f3ec232916b64ed18ccd6bc3673d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "9d3ce91116e25b51d933fe4c0d9f5a75ace47a81b271e4cffbf75648450c605a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "16dbfa9ae7d9d5fdd6ef26f54063434578fb8c99bd69455bc1fe9a5a343d2a84", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "68d58c621a718625beac4ec9006ec09068cbc49a5430278ff7d7844e0de42fd0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "41694ddce75c32c4a813543b69e801472f4954bd42178307a112848d976fc44f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "1ad36ccbba9d9081fd109223e9f726065c049df2268faf948d4b08bcbaf979a8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3a6308802c7feb6a4461b079e9b2962e1ca159991094b46a43c9992ed36c57d1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "c265fffb5d8d87d0629b804eb934a962d984ae8e6fac6547d208473cae86e031", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "18d86256f86edc88fc84a63429763829af5fac3ec82e8e25adb196010dc79e47", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4e149d2f2bfe46e915d163c83598d1a3063104d3667bc233d377e1ecae4544ab", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f0e8e568b4dbf812137cbec3bdabd6c4c2dc273215e0fe4c7eec09dc3fbf43c1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "38726d077d4b3a7283f50f5ce0c03658f0c9a9e1fc1ee042a906f3497b4322e5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "01b5c91edcd1b25315a5b5d4016cb67653de0fe7f42be234d9838c5f30c207bf", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "962793af0a786450ea3e3237dcdecc6a53077ea09c2fd92e8772170e39752408", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "283d3b945a4d326225c8dc38a2b35d58c7d087042652c99f6418c5093a0298d2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "6302ad192070b6ef53c3710091e5ad175d5037ffaf38d11f3bb5c74307a566f5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "83b2ffcac42a364a2b42f7c816bdee2da18b617f6a13f2db7030a01003d2dba0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "526ca1fe12ce9963b44330098b7287eb05d448218c2e924bf6707e9beb61b26f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "947bd8f6c47b70da3b43f60c893ce6168620c62b6c406cef0eea3911a93881fa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "52a3dee2b0ca59662962f8bf9aa0ab7a09b2b8e3b3d1574b8dc4a330502c4b7e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "53e31019413c872a074249a1cc32f9d58f4f95f67d113f64656c15bad218edd2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d031651e74bc7ef0535eba1426810cc12bc774dedf282e41859f10fb31a9fa33", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "3556b538d44cef4012296c26e37f44ab4ed8f0343a022fa6fa74055632141231", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "dae6e436cf97812576b788aafe892cf12851905ff2bae7de6a760b3d2bda1091", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3513f0420ccc8f232d3dde3748ed209be6931af5eeedc32728c6bf3e3b479dba", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "d0bf033aa9d594801eb2d672f73223cd47e99a6459064e5bca0e250d59651068", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "4ae1a5e73dfac699318d667682e579f2d97797ffcaa3e6def48b99d52d57cdfe", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "cb5528b53a39b3f02da39a2e355d374384a59f34a56189b40c8b1ae1260c1e1f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "160217b86934c2ad7209f27cb26d2e32f7e504a1258bd2d62a29c1d97f50abdb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "ab202f39c26c38f1f14f9b111abfb447608ef186b3d6e8a698b852def2e0789d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "929b0bee74a2bf85fdcd3d11866cc8abb3221a1b306e75b3032841ce21438f91", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b26150dbb82eaab4d1c1826ff6530f8e77f8bf5f16bf7287d16a4c829147fc69", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "7acadf2d2b629afca12651364adc154dcbe0a9a41e11d81982892e94d1e4cf14", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "05f72b0c6e87e6b47283c549f80e4b702313b192c68588d3363256179861426e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "468c89ba1587550df7f1f8d861f1b665de71f720baa4afecb6cdb5c774b09152", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "556e721866c14e458f3404d3f6bdcf063fa3960b77beacacdf59265e6523cf5a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f062e21148c649b5026a7e6d23a903b7c3d48631389a15278d4aa08e8bcb02bb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2b965f01e60e168dc8a7a8e1ebf4d7cc3b0a06aa563b6e82abc5a03d72f348b3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "2d1b7a2f0601ccd91134c6636d9cbd589199f62a3ef4a59e96469a140994eb5c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "edd096018c3b086f5ea62084971d531b1be45f0d3efeac1c6f4d68ed03a55bbd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "c4695037fb8fd83799b8211e6d87fa93903964cdfc46c5d34828795926c5cb65", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "c4c13bec3f20bb4421e069b55f14c4abb1e42f59c54dff71ae1231b2fefef51c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2423792f898d7541e562fd309af1504501e6a3100285d3d3b636dc3e44cafd32", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4a08519ead1d48b086e221487b5d9cb1eaf00a5b9b86d691552323f6b8677a9b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "5e783b74bd51f92e4b4b1e75949a8bfd7ce0852cfce542b809996bf89b5717da", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "a7fa648043c8bf406f67fa6322e06b3272f6b99dcc4b8c024c27c1e515b27e59", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "f1ed24e411fbd03cce9a73b482c44c8a1f291e30f9d5f5658c6a3295fc4b2232", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "75558b824c4d6cba53484234bf1553deb4e6f1c28c2ece758d93a543dc31aa91", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "bebf9e0bfd26a0d7f9cba1f18134e841ea360bfe5610de14ca150457d73c61a7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "56bb9aeed773255909679309d17e131fa09afa048a128398a03ef5595fe2fbc4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e43b13ffe021a11103d07b9e95b896fd2fa31698b89c2f195dcd1d865112f9e1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "64e7f06bbde0499ca24525c8c8ceff711429fca0422e2a895f386aefbd02b97e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "7a4bd8d148288bd7f6b3ac6ce94d7d05d95dac2f35168b35956c6081af8d7cbb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b3e25e8703fe30c2d721679807507c76f548a209918199caa01824d92dab074a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "4c871e7ee2e2d538fad7a0e75c86834dea11c97d9ce2b97a056294b6166cf60c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "8523228cb5d20c3010473410fb13aea8b9aa821e07e648790a632fe889f17270", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "914372605e6cf71ba26dac0ee8d222049e56338a6bae9a7e13eee073788b567d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "bf98b4b8df02f24576fd739b3f68029fc8adafdb6751bc58fafc124af66ba5ed", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6933d4171739722afb7f98355ea8b330832047571539cd25e62d7d83643ad2c9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "677f7918c37b3cdd01ee93aae1036a6acf92510c2591ba3e087359c80ae9da70", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93054461b27d283281345fcabe8cc94fe2d923c22d51e7ebccede22e028454a3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "149836334bd17a3650448f23dc9b54af49d13275679430979c4c817eb73c37f7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "41f3a69c6d02b828f29d44c156f33c3af4ed8d298fc82f2222ffbc39a4412ef0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "4e3449c9fa8598271e942740c94102e039baf07c865f70ae990227afd57b5e5b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "514ee8959905117e178c1b3b84633dbcfd045806247c3fa3caec9973d0c04a6c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5ea180a1b39f681dce2789dd617b9c6d099a8fce76f3dd1671da40d0f7918d8c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "8ae089d8d451c658721e22ea28917f0e9dfb7dba4724ebb6c32d62d30e82e098", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "435c0f848f3b2387d9223069c6ffe88901d9f7ed9174f1a90422305ca95df4cb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "6222f5dcf29680a5c14d53a5783a23e067de604829e7e9a8dabb4c8c327ff9b0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "ba4e91985ea7a9c83c6883bcf2d34179a47e87a6950067d66ced0d317eaa49e4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "face901e0ab149e057cc239773b91064023c63ba4371953676ca1bac68234fe6", "T3T1_es_cardano-test_derivations.py::test_bad_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -20725,18 +20725,18 @@ "T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "56541c11b94b89aa445bf6b945d9a2068ccc861438d876833a5025eaf15232d7", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "480d94bf477d24022081484e1e912599a35f06d693ce97eac054fe7d5ea2579f", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "89a73bbd8411b8ef3e6355c1d88022eb55a34e5005a26ce3fe77114b3073104a", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "58d452aa3f2f12fe07cfab9c34df1746a6a0f0ceecdb9c6e8f8f1b0ebd01f847", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "25989b3833510c3bba7e5c28094c43f89eeb2fb2b09933f14078cc5f9bd10748", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "64b223982606d2134d21973241d2865c22caf9e64643cc061108e1f9acae1baf", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "9b782e6f1a9da507abcf80828c0faca952c10c22a3935136716466394791d7f1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "b38162dfeecf21a940f8faef1d6a1d77b2f9184fa0d5a12d83ebf24c7f3e988c", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "881bb3592f394e6457fd07a9fa337a040542a3fad1e29ae9e4e41d309e34cff9", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "0d62d6b67ff6290214eaa8a69911a66cc2fdeb40783432af58acc040112a6e42", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "31826cd66d484b7cfc36b416b9a61165be13379e7673f836cc8bf383f4c54db7", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "f995cfed869706917b6596e9205f2694d6e3c6c054584724fe10ba7a23c5af33", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "91c66f3201e6454341f06cb3d28179e0a4c9e7e3c12d6e08070b38ef5e0b9672", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "39e507ec31812944cd9fe0da89ee40c0280aa4af2666c38708ef4ba44b44b226", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b5c7f938cadd148293ff65d35cc7030a930ffe3062fa9f9a88a3eff9cc790886", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "6a252c9d65c7b853c067227d8d30548fd6b9331ecd1dbe3efcc21e5fce67557b", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "e30a555fb6fd54f87e275253a213829744a026f5a4196cf42a389e744f64c589", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "42fa9f4fde100e3b99f28afd74ea3b8effffb8e96817b9131dd99fb02a0603a1", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "0839342de80b51b5fd2533a0dd63ca5b919383e548bee9167fd513abbdc7dd40", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6b23908e3dd7b30b0ef325bf68d2f16de5b0680e3d03322949362d11da6d9031", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "54518cf7676310f911666781bca19c5bcc06706e0e7cb3ed71e30fd1e26fc936", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6e10996bab9bdce83b2ce1c6df4b7d86152df34cc2d42d7841462e0cf0b879b0", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f787d22ba08e0f47e065d99601c8261c2df8e4da6a782598723dffcba87ba24e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "d3b46fd3255a3d57df87d0e0efb376d1fc5eaa652f340aff50c4b17bf3eb6345", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", @@ -20894,12 +20894,12 @@ "T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", "T3T1_es_misc-test_msg_signidentity.py::test_sign": "2ecbcf7f7d499654641216bacc3200254c14148f0d136394757c5015bc6dbd96", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "47352192a58b70bf9dc72cd5c58267f7f384374cf6af3e10fb77c9992a6e6ce4", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "68be12df9207aec4f4c71b99af0ce1a7db4111c99611563c1186c41befc71648", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "f163ea950065a4e7e2c76485ca1d6374a796b136c0677099c880bad620737fad", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "a8259e9d7c3c2661b9485af396f4179753dbeb1cdee5f40179a2970353046b82", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "9598c40fc83a526baaa92352526eda7e86ecbafc87ef50c029b72cdd35753e02", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "41667a74ee9e21c199b201e6e9d200e3e379d4cd7f900ba854d777f7b722921d", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "d0c4ed3b0ee850b1f9521b144a1d42388c58baf476190283d017d68043f7dfc5", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a3a06bedfef5516146feff5558a7f7423dda639b81ea780f03026eb406f65f82", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ca05646ad1f5a0ff6807dcd6c672f17e985b10e5d2095bc6411614501a135bfd", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "9763409306202379e5f6742a3e98b8cc98638c4bbf841dea68fe7e46049744c9", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "2cb9f3392838edabbb81504e3f86840dfef4630280e2551e74b63cc31723da17", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "8b87a018c9cf731642e5de2017920e81273a67025983cec59dcc4b8dba08459b", "T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "50f4aedb7666bec6625966286d5ba22439e6a10a83332548023cea32cf336fe6", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -20954,22 +20954,22 @@ "T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "db3432ff965fe72a9c5496d2e95b8d89c0a5b4fc4a6abe5e4bc75e2b97fac293", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5fbeab1f30bca03af9cbdded83d7812e414fd6eb14020468e52393548102f773", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f31755f5dab8897a68f7f403068f40581e72158e39cad9176b27f179d2ef6c7f", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e783ae745ea96c5c80b7ceab49e8a9298dbaebb8252fd48e9383c13b086728aa", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6179cf1ea851c4235578e9c82d844df6ddc26dbe0553df10ebcab5d682492c67", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "4270fe2f9f71b0ad96e49eb1ee44bd5ff329ad96af2557cdd0012bc100e15a6b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "bd43644617c215931e66707945ffa832efa7db7fcaa9adae27b5eee727cafa2b", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "86219267b59de9db7e5fec496ee68728c777e8f11139ba125301d1a9d44e9a47", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "627be2526ffde1d56e07431ee5b86ff24f628348b3faead6c8c4c9cdf7d2de8f", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8d5f267b00d53701f731738a2a9bfd230b04425bdbf3eeb9ffc6c701cc39a968", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "371688d95e2b3f66989431fa39e698263a783380fc44c7bac57992157b93469f", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6b05cf4fcdd0d75f4ccccbb04a93d4b663209f40f425ff738de10ab7aefd6fe3", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "11cb9cbd40696a68ff66131bbb96ee924ffe069ba623a178b1855b3bed5d728a", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "2cf9da3ee63768d42cc27b2bc0c1d149ca7f7ec2cd5d3c9b72a9ff78edc43c09", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "02716e566f9cd2a69e45a97659338a63cb1349cae8bdcec2ec14c876f40f8018", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "8c99fb15034c771c0620163b29985d9a6b26e881ca150c7845bedcc0ad61e54d", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "96258f9ab3f76964a7064daa433582ac0af01eefbfe93b8fa9dbbdde7419e2bd", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "1c8edb119aa4a562025494c29bd5ba5d0fbf158dd2025545db6fa426942b47bc", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "9f42baf4e4dbd54619fa218592fb732c80f04b759904893d1adb67a7db851756", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "59c9b973bcd69ebd4e2e46fae739b775d7cb362dd88762be0931d2dafcc1b410", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "1c8edb119aa4a562025494c29bd5ba5d0fbf158dd2025545db6fa426942b47bc", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "9f42baf4e4dbd54619fa218592fb732c80f04b759904893d1adb67a7db851756", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "59c9b973bcd69ebd4e2e46fae739b775d7cb362dd88762be0931d2dafcc1b410", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "94546d81e9238f7e16054f64334d8c92b98c5a9136d21f161aab6086a7bb23f9", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "262d66fcfdc5f6e6ad932cb128b646ee84c3955b0b433c69ec691434bebc2a5c", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b008209006435dce64b8de44069018d33d35240b7ed467b7d8056a015b36496b", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "0f1e3644d2162cbd80cb052d46193603a4cfc0834e51e9390dee8f06b278c3aa", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "0091ee5b7d35b6ad9afbdb65f0d314a7821b884481b533cf8aa5efc841326cdf", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "56a3ea40922032c4798914f9d600d18934378b8a66205c17a50779a5b5073df0", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "33b46b74a567df77733e54c3b5b799a5938528c021a91c20f7de472e38209a82", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "8e8c83ab3ab483ecfe4b8083a5079ced0f544007c789f879146163c1830f29bd", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "55e7509316aa88b9d939132e4624dea97311a2caf6ea324dd24f1070fb2cd5ed", @@ -21039,26 +21039,26 @@ "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d8b47c647c834a41396b247a75a45ac73c523ec8d5b6ab56313c19ec59ab19d7", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "eadd39481adc6e9a3adaf7d93b81ba43093652b9d9b3f947edcb8f8b4750d7a4", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "70e5d647ed4fb2a07f999be3cdeaf33f204413d0b5fd0a0d0e61e91d3e1807b4", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f6b257d40f95a58e44e4b7756636e01d1bdc7bd05adb0853fef0f63e47c326d9", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "c39b1ccd84afb45ffc09edf56f9751d242e409b20344822a52f396437f08a4d2", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "892df25de4b539ebb7afd446068422db06a6524efcb7315fcb69e2428920821a", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "2829110545a476989b031904490d58ca2a7fc133f69c956747a08c0b98426469", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "9e7f3672340457759383881152654d4c0ad57b2c9555dfc89dcc2019149c1918", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "3c52e8226ab5e5614a4e29bce18450d8312f9197304c53cc7b39dded2662e5ac", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "6aa56382c9150e1af2467705ad4dd07355d1190f3e39e0c4cca3007c7764e386", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "607e002a73f4e71ac22ef667daa1aa850767a1d3703770c6d7d81f3011983b75", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "26fbca829e93bf6e6a0ed13a293da00436db4708c84c9b5f06c5ac638ecd4128", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "18361aaefee6b4d4271229617789f8dc0bdbc104cbad830054cbad947f404634", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "168c84ee550428d1fedd5244a928a770754041da124c33ad1beb246715a17126", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3108764f86a8c07ef6f8a1b004fac30243bb31ba981fb76efebe90cb0cca65da", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9d51ca46d4c434d36364e0172c14a34afd3f8298c8f140eab80726ebdcb2a895", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "d9a49a3fac2d620999c27b286f412be438dfcb4b82d88773984b6f8a75d88008", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "57e06971ddbf09d467983ee723fc9e33789f8a7049830d3dce4b81228dba595c", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "48a5583bc343d747d15dbda25ada8990a23ebd180fb0659461f319307a8271a9", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "0e3cb1d9de8ac6037d87a4d793d57bf058d7f0aae25656d504c5860917685e99", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "1e11f5d5116e77316ae8ae028d5e15e4551cf961582483cc3ba3a1d1c8afb6ce", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "c2b673780911a0d25eae60bb5f02d282cb6dafa010989b479dd6b3bf7705b513", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "07942db55d291dad8f624e0f6147a35246bc0f6fe0d83a1981c866893de9bb0e", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "40872731421f1df43d519411c57714e751c73af93183a040fb85b70a1b467717", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "ce925957f5b3f386725a97d2b767e3523ede38fe958b84fd1459706585b33438", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "21935329a019276b72739f50d5de6a0a5e1f4128ae9f00de04004db861f16143", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "56ccbbe02d8ee7aa408ddaf190809ecc11dc57e55f3f9e0ab3e3cd1859829c71", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1fd39228110b287d243c107c6b1aa8d51d38794e5f55f44e77de7f8ddb8635ed", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "59a7fa5fcd25d2cf559e7ef6ec596a6d502af94a5dac152d447d389e634f6448", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "2edcb607f574f94bbc2fffc84df3bfef6ba02fc92a076c8ea9aa6a1efb93910c", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3ef18fccf28797b2d390713224acc85faa7aa4577f778a2d55269e4c36906901", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "6734c478b48424eadb0bcde875365a0c9afeebfa144bee475c8a8a4a474272ef", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "ec3c28440d2b638234b273a04bf3dac9864d6107c2bf4df48995676c1157fc59", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "9a09a75c5957ed3cdb54afba65de7e4727e8ffaa211e709856ea9b77a65d1fe8", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "81e841ba48bffce50a084e97c7696c43ffb66056223c777ca81e7fe5d378561a", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1666831f5579393a449578cd1ba383d0860aaa82b3df151ccda8b9e4ad0e056f", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "cb74232038db658e365318e641e9079146aca6a49e43a88224853c5826ba7bc9", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "2ade000ec04a7a60f1488c4f61145ce70a4c0a713004d1ca9c90301796637535", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "433a20b8032534198c49830d3121c6aafa2dfb9664cb71bedbef1e5694e6040c", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "2408abe16a1bd1c158b53dccea105aa68e1fc156f0a8ab06ffd99c3771550e2c", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "ebcee8685c69b7a1b6d72e1e0beb7575f6c0d232c0793c7aef612b81caaedce5", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "babedc58df9a6b55abff97c38fa23d71af8546587e1d2e74af9d7e219485468a", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "384d1f41a6702da460ed90e361ea0095d2da1dfcad74edc105437fb5a42c8d75", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ddb432626514764becafe07e34cf728e0113a300b83e422b0491312b6b3e2bf4", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "e4c858b51b2fdbe7d9906f0f636b18bd313790c6bc3f550963dba06d79847454", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "60a684ed3261188efe00bb872ab231df9899a7e44ad43e6dfbaf48c8a7b33bdf", @@ -21102,7 +21102,7 @@ "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2816815fb7204b991943f3db2ae56c0f8c4199ecaf10c5f997702f6e5914de75", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "cb5316337d8c4407d65a2a409e9ed906ef43071995a5572e129eb62b12b4bc5a", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "75991992304e022848bc603fb8398c6b236b24a6590b020719b3fb9691a94efe", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "8863816bb2c06e8cf6e311bf8c08a4279d3e8c0f806e5ac4cb6b6ae7cebb99f7", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "d229422033342e63db4e6ba45faf51684a78e9e4e167613f844b92c427d08b76", "T3T1_es_test_autolock.py::test_autolock_default_value": "fa4bbc332490da856c4ec27cbab2179d695532e94601361879225f4b714c1d02", "T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "6900e532cd7ca2a89c8b3c5345a841e7f03f90ddccc73fcefa08ba22fa33f151", "T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "6900e532cd7ca2a89c8b3c5345a841e7f03f90ddccc73fcefa08ba22fa33f151", @@ -21112,11 +21112,11 @@ "T3T1_es_test_basic.py::test_features": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_basic.py::test_ping": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_busy_state.py::test_busy_expiry": "a440d4eec0125da0443133038f79982c342cb30190e60678123d0702aa00a8bf", -"T3T1_es_test_busy_state.py::test_busy_state": "43617618b5487dbba0615e498e68f7416c4872c64b4fdbbd3e292a0da085134d", +"T3T1_es_test_busy_state.py::test_busy_state": "38f74ccd181e538af514f6ac959d8e4bad2bcf150ee225fa356d52115fa2ff37", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "4c7c061e51d6618b072b8774f53098fd11c33f7202eb23012b1f90b4cf8649d0", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "24922c59035c55e5db86da744453fb6038bee88d518b0047e06b5ecfe2595fce", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "4c7c061e51d6618b072b8774f53098fd11c33f7202eb23012b1f90b4cf8649d0", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "24922c59035c55e5db86da744453fb6038bee88d518b0047e06b5ecfe2595fce", "T3T1_es_test_cancel.py::test_cancel_on_paginated": "161490453244e136023de8b1b91a3fa8eebacd9d57dcd60588cfddaf393e3be8", "T3T1_es_test_debuglink.py::test_softlock_instability": "c801ab5876a2aefa973e9eb680b6a53433087d0a8718e5b8cbfd26172b0fdb2b", "T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "81e0a15715d2b5e2a5076154740ead6dfc642da8dc17840de480296d8027ae52", @@ -21153,7 +21153,7 @@ "T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "daaf8fb3e9f77ed6ba1da6595211a730b6c386cc1d43009f80cb4f3246799d49", "T3T1_es_test_msg_applysettings.py::test_experimental_features": "705dc2d0d3c8f60954c624fc65629349f669f0b0caf79700eceffdf0f2c5ac70", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_msg_applysettings.py::test_safety_checks": "004fbd582bf315201cfd8c9992d631a438cc4d5e792c572a7ebf2e6fef8aaa96", +"T3T1_es_test_msg_applysettings.py::test_safety_checks": "49fb86f0e50d6cdd78ff381a99f801c690b745e9e679915087c06f29d9fca501", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "e1d6c513f2e95e481b963b8fced7f8f224425b70337195f1aef0c5f3d0afa673", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a198e32feb2d70179dee702124c5041eaab70845ae1b5e29adffd1970c3575d1", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "21b6b0f341f17d40de0978324cd9c4f0149e897711e857d7d98cab8b071b9f1c", @@ -21237,10 +21237,10 @@ "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "a146c44b8b62f486fb1c3a9bc8e9adf452f7bf2c4a6b808d4519935dc499b518", "T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8cd460826e05f6167e06c987489e7431f5f5e589f28a2b3f9ae6d950b293e44f", "T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "88dee002aa6602bd01b5f13ea460b214e57f9767b3978dbf397d2bea47e95a48", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2c1e5dfae10b09d2c78c7c43c6d1ec695f8b8b1a6baf83a2eaf12a052c264d83", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "eee38c9a354db41159e0d6dce384bdd30108de9c1ccd64e5aa8bf6c8398e6cc0", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "0b55ddad83a308345e96d4d042bc5d73a2e138d9677fe8ad893e82ef954afdbf", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "a36e45956dc8fb4d102f8a51fb59a52f09e5520d03b1bdc97f600c2f429074cf", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "7548c2b4aa42332117822e537b9832f183d6b05e4617bfde328da54c3b46163c", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "184e4f22f2be0905e3a7169a2d860fd22a00cc6b710cdbfe63b76814a22fc620", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "2cf27fe7763ed8ab0b38b746852fb7e82a62c178627013d7b47d26fb5d3973f5", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "bc563c690bd4257713b8f44cd4a89208ee49b5014aed63df2e9640b067b3cc47", "T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "4eed258c542949dee1eeaeefd6592fff3a5c6c73047f77114b4adbd5ea807657", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "b726ae44d83d2a7b010a9b49e5a99283d9eba07c35046119198fb451845abe6a", @@ -21267,11 +21267,11 @@ "T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "2af72bc5e13e2b4ea3f8fc2633cae9271b1127e5a88bd29beabf7dd81221e84a", "T3T1_es_zcash-test_sign_tx.py::test_unified_address": "c89558db34d987f5cc5c84dc3941f08d765dac9a77f536ceb054282a7de1de13", "T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "34bc2b28b0ae454ba44f6195ec3352704a29370a118d696bda6fbbd346db2c65", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "095d6e0e8310723e8fb4c9e2e63a2773fe5ec9f1e922d398d4510e1d0d10b789", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "dd3e2ef85fb7230339b80d4e10fc4ab4fb21e08bf4098402280ce3efefc7e049", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d0bee76c9aae1baa30667ca17f6b201c85da8057ff0241c4b9b14e18882eb8dd", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "7a9b88e209acf25b578fb455691ed7513e41e9a4117a0ab83ef1cd0687602780", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "c9a86833521a97973ee833235078a1ff8dfd82d7fd216669a8aa3de8166077bd", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "87f16a918acbee105f19ef65ab5503f8167a5797448be3adeededee93be9c338", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "318f8c852ef9eae3018fe9188cccdcc66972f36e838d40408827260119b10d90", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "445cb46512ba1d162b17cf2372f339df38b1bccf933d9614a7487f70991bacb1", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "34a0ae66a66133045a92bdb422d75826150ac10bb8eb010f7c275d0760ed9d14", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "45d284f633063255597cb39c9499eb4c798ad5b3e3817664929a5304f3cbeee8", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "9a9345c6f3028bdb2c41f1a3426cfb9d1c44b2ec83b1a6995242b33b6552897c", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "f25e50ab7cf4bb9ac55fb95d0b75bafc9f345dd52d86dbe73b3d2f69fb74de81", @@ -21279,7 +21279,7 @@ "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "9a9345c6f3028bdb2c41f1a3426cfb9d1c44b2ec83b1a6995242b33b6552897c", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "f25e50ab7cf4bb9ac55fb95d0b75bafc9f345dd52d86dbe73b3d2f69fb74de81", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3ef3bb573d68cb5f628329c7b74b1e11c5a7d272f92a542503153c1136b8d198", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "df6f14daaad7e4504e6cf2b4c5679ece51bcaaa03561ed11fd2b6e25b17b04a7", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "d84c34adcd20dd934dbe7c3949d5e034d57e4db14ba93fefe50cac524bbbe6e4", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "6f29b0104ef7076880cccfefc32fc7bc5b9618c83491abcc53a2ea5b4838631c", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "36bf7ec2c36cfd74aa2ad42997fed91fd46db40eb76cb6fa85d450747e2037eb", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "16beef6b091787de3ea07be750b4c6186155c9e4698e6238c078fab651275388", @@ -21296,122 +21296,122 @@ "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "269007441cc9a35b08a55aadf235335aac82c10755ebadc9851a60a5d7107bde", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "4e18491069d1d9ea64ec0d3e5357b64308242f4153279656a1e2f448d7901843", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "05e8809d40c9923faf4ba7942546d4c7e0a73a12d3b10b0071336ffc38892a91", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "255714b1c35471f573352b191c715745be2f1a8a4b90b1c156f27900c150ceb1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "47f4f5ed119d5a870f814ef00bae90ae0f2bbc97e18ac05e8b0f09d3d4576f29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "fa8fd07477ddee2a3b5652947b4b19eb59a5029e20abd7e8482a32458207abd9", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "c89d1fca942531148a1aa04a1b6e2f4b0f77f29dc7572323df6c15232bb4aef6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "f7dce3660a0fde8c706de814f7b291e793badf8e5379811cc9a0d9ebcaa2a112", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "5e13d3756cdf75d226cd205998447c18924bbaffc706c2e10494f0234aef97f2", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "55f2647649a571478882b53fa44dffb7015bae6f7dc5b3319065fa1e7c11078b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c845cd1a054245bfb9f7349e0d4319ad9dd77bb2b4e1ad21f67a983b5758ba46", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "277b71431dcde7e33170851e1504ac91c8442925145bec0ce4156b14753275b5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "97fc0bb7e1eab42e683dc18ab2dbbdda33781f45349ecef181e0d3379da88aa1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0ab623931662c8ea2d416bc36912743817cd928124f31001f91ce154a0cf42be", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "4498e9feeb32bc42ba9a4383c3c2eb216ed34fa2e3418b560c05c2fdfccc0c6e", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9a158bbc4f0ec69304ef525b0583d7ce3c01fe77278e9ae750a5e1a79e0537b7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "be0edd5e70330726cb99174e36cc7494ba49fe344b153aad60743b3e6d430b54", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "add18a822db74fe5d23a5586e1f58517b8cf22ad2340703085e5c799d0693117", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "7debb830639a055ff15c13b8ef1ec6cd2989992bf94f055a965baf300ed486a4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "255714b1c35471f573352b191c715745be2f1a8a4b90b1c156f27900c150ceb1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "47f4f5ed119d5a870f814ef00bae90ae0f2bbc97e18ac05e8b0f09d3d4576f29", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "fa8fd07477ddee2a3b5652947b4b19eb59a5029e20abd7e8482a32458207abd9", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "c89d1fca942531148a1aa04a1b6e2f4b0f77f29dc7572323df6c15232bb4aef6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "f7dce3660a0fde8c706de814f7b291e793badf8e5379811cc9a0d9ebcaa2a112", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "5e13d3756cdf75d226cd205998447c18924bbaffc706c2e10494f0234aef97f2", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "55f2647649a571478882b53fa44dffb7015bae6f7dc5b3319065fa1e7c11078b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c845cd1a054245bfb9f7349e0d4319ad9dd77bb2b4e1ad21f67a983b5758ba46", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "277b71431dcde7e33170851e1504ac91c8442925145bec0ce4156b14753275b5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "97fc0bb7e1eab42e683dc18ab2dbbdda33781f45349ecef181e0d3379da88aa1", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0ab623931662c8ea2d416bc36912743817cd928124f31001f91ce154a0cf42be", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "4498e9feeb32bc42ba9a4383c3c2eb216ed34fa2e3418b560c05c2fdfccc0c6e", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9a158bbc4f0ec69304ef525b0583d7ce3c01fe77278e9ae750a5e1a79e0537b7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "be0edd5e70330726cb99174e36cc7494ba49fe344b153aad60743b3e6d430b54", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "add18a822db74fe5d23a5586e1f58517b8cf22ad2340703085e5c799d0693117", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "7debb830639a055ff15c13b8ef1ec6cd2989992bf94f055a965baf300ed486a4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "8bb9318c206f0affcdc6716ba5761cf668f8a7aa867aa053f34a028b38faa878", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "3887c628011a16821664589f3aced578bcec7ee816ab3a2e08ece15f1d8690a4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "5d40814c2f6137c4ed9b6f79c75622b69f66d5c7a6696e4ae8ddca97711f64be", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "633d2a19e64bd99ef0f24fa51f816f6bc9de07054131c77aeeb73d1f6c39d669", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "b0c428ebae3d36cdc5c35299f26f3d511a1de265c747292cb1a8641660abb450", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "e5fb725384f926e141e6528c210fe5906ca0bfd30ee6b1a2cf5dd1892e1ad8c8", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "47459c181eb1e6be50ad677050111408ec841ce526d438095aa1da38355200f4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "a4756a088876ebef14ef53fa4f7c7b78acc5ad04f1910e49f53c91a9d88fd9bb", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "165ff3832c38c121f01fe831d7db906f1e689d140c683103489cd3d7cdb2ffd4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "61c00391f843a1cc9d27881399a808478f278a0fed1d5faa072d6dffbe6ae803", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "700676917619176c9f757742087a90de1168bb48a9fddba946f49f0e0daf7d94", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "0053df45d692382a381814f00b0fa9dc79f1334fff6c0da1f899acc70bc78f94", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "0c1fa64b1c0c8480bd22f8f366c66ba7e85ae6721e8eea4c47a5461de6c175ae", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "ae57913b4fc9df69bf61006be960043d52d65ebd3d416f371471d465c61102bf", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "9e3438a88145609c590c5d9102070e588bfbeed41a8af130703dbfade5370535", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "4e50b77feac1948376eaeb76e1f82c4b2dac450565b1d7c297b2e2f0336fe5b6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "8bb9318c206f0affcdc6716ba5761cf668f8a7aa867aa053f34a028b38faa878", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "3887c628011a16821664589f3aced578bcec7ee816ab3a2e08ece15f1d8690a4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "5d40814c2f6137c4ed9b6f79c75622b69f66d5c7a6696e4ae8ddca97711f64be", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "633d2a19e64bd99ef0f24fa51f816f6bc9de07054131c77aeeb73d1f6c39d669", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "b0c428ebae3d36cdc5c35299f26f3d511a1de265c747292cb1a8641660abb450", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "e5fb725384f926e141e6528c210fe5906ca0bfd30ee6b1a2cf5dd1892e1ad8c8", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "47459c181eb1e6be50ad677050111408ec841ce526d438095aa1da38355200f4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "a4756a088876ebef14ef53fa4f7c7b78acc5ad04f1910e49f53c91a9d88fd9bb", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "165ff3832c38c121f01fe831d7db906f1e689d140c683103489cd3d7cdb2ffd4", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "61c00391f843a1cc9d27881399a808478f278a0fed1d5faa072d6dffbe6ae803", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "700676917619176c9f757742087a90de1168bb48a9fddba946f49f0e0daf7d94", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "0053df45d692382a381814f00b0fa9dc79f1334fff6c0da1f899acc70bc78f94", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "0c1fa64b1c0c8480bd22f8f366c66ba7e85ae6721e8eea4c47a5461de6c175ae", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "ae57913b4fc9df69bf61006be960043d52d65ebd3d416f371471d465c61102bf", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "9e3438a88145609c590c5d9102070e588bfbeed41a8af130703dbfade5370535", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4e50b77feac1948376eaeb76e1f82c4b2dac450565b1d7c297b2e2f0336fe5b6", "T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "728306dbc959a4ea695f8098276f6861a878c7fe19c0d32f4d18ca6652ddf63f", "T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "22948c6e57737a0edbd864b02bf779d4bae9f818e3b1a4c5ec83135580bb6b76", "T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_bch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "2acd6f972d282107e74ba024c8534ce2cbfbd72221e215e22debc2790be5913d", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "02ffe9c03405c99ffd2ee42b0ac2479c04f4c64c30972b9c08967d282c0512c9", "T3T1_fr_bitcoin-test_getaddress.py::test_btc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_crw": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_elements": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_grs": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "89a9bcbd4192e73cbde0abd723f8d35e98e89e111b07a424b6032186fde55a7f", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "44d2512ef732a88d1e46486fe81acd2ed596863bdc93cc952645ce30929b7a07", "T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "16efd5c6b4855710860d1db9cfb1800be675f0bf67217e30ac8e97bd3da930a5", "T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "f13d27da49743d9c99242e3734385e6b3eac68a3138889d5d26ca6c27c528029", +"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "d419e39fc1ca62ff657ba4ede1a24fa2a1dd132f72b4eb6abb8469fac5c5e91d", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "a6846e23d4d32b91b7cf5a7f1482615f51c14faf9c61470eaa97e4ac275bbfa0", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "7c3e81036355958bf835ddf0b6925c74247a14db89f2010d18008381a7a70d7c", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "0c7aec815d3b6a5c4f2c74f4669ca8735d48864643871af01915625d1c6d05fc", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fd72e6d944f2a7af98743667a18aab32f22b2ef8141bdc8bc85722c301949d83", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "de17cffedb38020093f74902f1b61e0c392f0c2ad26be72d6321bb7fdb742014", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d856dfed0c83de35e6050531baa6dc2c22d75f78fb1502ee1af7c63bcafaaaa1", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "ef82fa90a11627377fb0dddaa8158066fb29995eae2d7c1a3541a9b3b6f7ff29", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "48a9851ee5cf14fe59d089c6d8979f92ee8388fc26763045124065512faf7077", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "0a3828719a3ed821f7c0cacf5e793cc4295f8e94648211c41fa88787af80b0b6", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "829022252b0af5ae867fdb5c5160d2d248e16640f74affc28f234a169d4a71b5", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "d48f11a40d57052a2e98a30a013e6c3c511231e5e6ccdf6982ccbb3c88503900", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ff9f34af0521c0b7cb4291d9767dacd25824fd467fe0b6408538cfe6cef46805", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "017c6d0024facaf684f4b982735be287ec972ecbc4313a0f941442ec8ac119d7", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "9cf0eb6e78a37d1e80d5a90a78a61d87ee54c018a38a5d73c4ea954d3098a71c", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "30a09c502fda3cbcc50cad534b28423078343f558ce83500b9513a61211b8ab8", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "ec60757ffc7e589c814dfe1737cabd824728309d7ac60019dcc51e5a0512a6e8", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "0c3806fc51ea8fd9cb757315e690f14a2b5a9999c81403346242360902111f3b", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "03a5dbd55872f14adae640870707b86a14396afc90661384d1226c3e2f0e8624", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "96d52f5c64406d9bd1ce7ae0dde317779f67a4e4bc73db0c52d13dc196519f06", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "c16aeb6853b5fa0b2fe2e0f003fee625d7e3d8d52afcb0e82c1c56e2b1e3bc51", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "2d5bcff3d4298a0c2626aa806524285755db06e9969cf81abb0966f97b77bc8e", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "d4cac542d4b05c7bfecf0e068ba7fa17107d434c9be98da423e8a86fc62faf4d", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ec9510feac69d4819f6a042719177b8139cbdacc4fd034a9a04a1d49e673fe42", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "7da665b897a53b118d71cd2bddc67edf23325918874505a969354e6f8e17e2c2", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "fca4ebf6cd4cd9d8b0adc66c67375ff93586a18ee874c35d0b577cb9ec4828e7", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "e5a894d4bf732753b3a0a3a7b36e1b3fd92fae58b2b5e45ef01b30f02e104dca", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "45a75ace24a8ed02e1b1c5364c77ede322cc0df5f6b87cf75b1f3e4f74aea70f", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bb0012cddf417eda6a33a6a47a4606359e1e4f728c0d01320748acd34bc6a7be", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "abde4df826c8139e8054d800c0f3618b078eab39a27f0021dfac69d03b975ff7", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "c26d3f0420ed712975b7d9c7170211aa56422bf9258d396109554592d605441b", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "272e0fde75ade7434c23f0d344c4820290e4c4e1c99feb68f514f4c939a65f83", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "916f0503fcfd7ddf92124c7f5513f7af3a286e5cf582a3f9d16b1f74cb3580f7", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "de50e3e8b985828496c57a103c504ed8eecb727e0635bb267931d3da939b315a", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "2b5d62eaea0a6f354eeba4f29318c0b63ad64cd6d3ffab34287d4f342d9e2690", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "da614e706f990dd890453eec6bea2d47be07b5da119a31757830c6032f30e453", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "fcc7af3edbd94c21a3e49458a474a78fd0d6a1fbbca794588eb5a8f51b4beb10", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8792c92ab6e6e6352a8e4b4925a523d6b860b2625666a23450da77ff1ab90884", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "422fb2e380d67a7781f8f43f0010845fbad16e39ade4e51f270f8c53c3c29070", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "f7f4ed2c3eecfe362f49e729d40139b1b084d658c67178fe9a442b1ef8302bbe", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f3455ed6894148bdb2ac39ae255e135dc80374f0149c9fc8aa426af12fbe5064", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f3455ed6894148bdb2ac39ae255e135dc80374f0149c9fc8aa426af12fbe5064", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "3c9da9af9ab98636682ac4a52153ed34e0830d1ef095634aa7b4f1f1932db360", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "e025c34038db4250c1a295dd0ff688ac1d148c94050b7ece5e7962db0afc1424", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "7317f7b19f2494347c3f4d84cb326024cfc18f7e671e18baf108fb18a4f67768", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "4dd4be27a729cc50d3d996ebd634eab9990f8a5e2babcc312104955032eae3d8", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "90743ea2c597d98d4823071691de9031a59a432cd8bc324b3d88d33a02ec3666", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "a34ab158a7a2b6bcd5623a320fabef9dc9e15c52b17f0a6d73d4f863a332f1cc", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "67b285ba36fb8d01515b3d84b3d1d3c66c9a47fdf4a3c8ac7ed218eb2c63e300", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "afdc8350f8a56423b196dd83dfc49be0efa345a91cb277019c616861d43d7009", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "c1778a4e56b5959bb1001fd5cab79111840cff3917ded36ce88a8cf8801a1ca6", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "75a495a9fb17f4680930b1228b42e129462baa92011cd25a10edb5ef3dda9bd8", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a72c3c80f005aa9e15b61f037427d370c069ff51e046122fc7fdc00fcdc0ac97", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "45a69b331630e8b8c4e02b2acb8cb418e28cb47c898c78a1f9a1ee6670cc45fb", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "504439920fcf77b061afa6d4c7c114698d21eb4be0b0841ca56778b447a74ecb", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "50ee12ddf78cbf9bfa6703f464a0585b0c434f87d342e8010ea4b1e4bb169c0e", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "451809b70e33bf81bfc303ce09b114131127a734648c78d728a91c53a72810ec", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "fd3f4035e4896c1be460cbe15c38ae9b57d32fa0433753eade3bf41481c9e6f5", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "89ca5541fb288c9f4b53ebcfabce045fe2f4908dae351c4f4dc8daaeaa0fcbed", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "6f66e7203dc0e0111ff7888751e7d19c44b178ee57dde5d899d6d1833a1eeccb", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "56e6bb5e5272514b8c4798b02fd5511b05638673a07b9d68d7198ed303a0f911", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "24c6d88e2c070f2889e60506f4d3c619cfcefab54d44a05b0d482a97d0349e3d", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "24c6d88e2c070f2889e60506f4d3c619cfcefab54d44a05b0d482a97d0349e3d", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "01786f318d778d456414c3a0fa9ceba041672b1d5e80e70f4be1eceab9138645", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "200d15e41c3dabb4f1483046506553ff8b9d384be67216e3f9573d37111229a7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c53e6a0e48fbc9655063a51539284119ed77fc15aa81e76340d7abd3257e7007", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "7884c2fdb0aeda9264663ae7c8986e25d3df120d77e67ccc2bc2c76766a08e51", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "77f7603fc9b0e81a1bbc2416c83c6805c7e9a26e3c3a25d4cb298f972f091b38", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "7c8f0d5c74f7c8bedb46ba44708823e6f9d9fa999bc0d41d85591afdf1657f86", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "e3996b18599747ecf0651169cfb3007d79ced4ddd396c0e02840c8a9ec26d490", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "b1a73d78da7dc3f249ce446be56bc009c0b0c1ad022df3173922b38b07c73909", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "48fc41ea8ac84e75e93d11fe2796b5fde5486ce10dbd8f0c2651f98cbadbd202", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "f65222bff56f0ea6ba8b0b4453450a2d83a96bc35df105cd8b8139db1e7857ca", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "1abdda29e5b8004fda5433851fc61039ffea8380cda5023d256d5f87c3eda362", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "47cc8621d57b865dc03a3b16568743ccbe7a5a8b1d911dbe605319985f72c85f", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "09e3dcfc21450c5bff4b75bef6652368414e30b845accdc3a6a58bbd03f366b6", @@ -21432,17 +21432,17 @@ "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ae4df905af0e45e5915896300fce140e89606f6ea399e97de90f19cb73df6ba3", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "7ef23ac30114a65ea3cd8e97c53f19e4a79f20c6a66f1f0617fac0cb273e1397", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "1be46087799a33f9198a71b8e31d2eb8963868c14612d179f77ebcacaaf00fed", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "dfe69f368b870c3803b9e4635b1d70b93c8c7f3a389dec9e4cba8884197e3c35", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0083e08d059d204233bf072857ae095dfb77dd1a5554891c90beb4b56c46c4bf", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "83abbbbd2ed1238c7426197d6f2cefd185b098b999cf5497542e0db3e6649a9d", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "2fee64cde024c073e68c236541f1d0e72fbebe6190420aeaeb8b62a90ed99ffe", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "67e618bc51192aafe1a8f0021c67448330cbfc27ec14034fdd58809582cd526e", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "8eadb029d5cff36ef2210a9b1a40ecf91c0efda4f8e0b763e969edc2400c64d3", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "67b0051fef4d9a49c5b8a3379538df03ae90fe8593584631498beba2a2087955", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "faa8400d5ba22400730384b9cf7cc62366d0c1bdec2a8e0cc6abcb5ad18954d1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ac087740120d70b58a343ca885fe7a5107c9b70ac91050d5f8186171c6348a3f", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "82f4673196f84d925561ad69cf7e18a43152714c16ca7def566a6cd58d521c22", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d0e16d0ce0c9e984b8c0c5e27585728d81205953889e01de94a3f44fa957a5a1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "54bd5b32638c5765feff53518c327e927203a2df95806222290b986ff1d381b9", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "bace1486d7c6dcaf763ab3dbf19aeaf0185357d0a2f87b6f334edc9ac60933ef", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "78680ceb0a5eab54a8cf95ab44c1c5771602790295fe839d3e62ddbbea209ca3", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a546c83658204b9089f4a4cc6d23a71b92cbe6aa231ea2a61181e2d529744727", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7fa69e20090e88e861709f61b5165029e168f163f098021fca2183eb6c54412a", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "98e261efe68fe7b59aa6cc738f24f5ac53dde22f2f5f3080220d0b094a1847c2", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -21483,24 +21483,24 @@ "T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "60f6aab156cefe8d1d13428c9c6a23b801e7662a61df39e52cf90a07756363ba", "T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "0c12b8df9e557fbe12b367f41e79c234d328bb097d471f8c1644b2b7e21a501c", "T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a02920bc87bbdb1294d94e471986a3af816d59674566777fdd095ffbe8860795", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "e3d4895e71158dd7526abb30b52ec4d7bd3507aed54263a7ab1735715cf0614d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "6279082b848300243ecfcbaa4fac28d7c30cb580fd0f0471dfe66f14b1627a11", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "c8d98bec53b11feb1bed969e28e9c878115d20671d3527e6d6427f9e6014aeb6", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "e8d21437994ba57c884af095f7542a2b4f12138f0d853ada45d2c8dc4b3cd64d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e1d1767b4a7b3f51acd8e216f1080a6e81d7760950021530977250b4574d5ac4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "d10574c19e7a634fce438b8e4b08800f30832f9d61e6a34575ce9d4be97ef891", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "30e3d431f551d7fe666d49b90c44098790540d2d422b26d5ece68e4176a56719", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "be7c94f181c2d770e78e1255238ddf0899fb7e0ab5f55bde578845a42b01788d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "8f2e946610b27cc13c149aa6c93b2bf7ed3cc26d3465618f821b53d5617a8a21", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "053ef9aa4e4c1e0756fc65f42de6104c984d96a59f6970ac0c84f51029049556", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "5ae3afebf64b7b3116081b4e7c1c1343e6043bd2c6bb5ae482c707704c4c57f9", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "a2cbc55f8cd390c5aebb53c1f45ea5f4ccae2e676d0f24d111846eeb88393a4c", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "55650a63eedefc0c0e453bb729ad148df0fc32bf4bd617544753a42eecc912c8", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "cb90b9880a65a2a4ce8ec54e5b0b333f09104cbbe58b809100ef8228c06b86f5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9dc944ebca0acf753f5be8b3b7e855ff45c4bbfdd862b5a18c50d726e7e06461", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "32b1bf9bfe4315421ba669e94e126e33124981217b9a7d03a8df33014d1d9117", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "2fd88ea3786e1f1fb4f0f95e32ee9f8a300290e5dfcd5f4d7951efad4302b202", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "01bd8f307982c724db65ddc766f8e30422cd77dcffaca92ea884d2e53c7c53e3", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "55522bccad4c86ef50ed66ddb4a743c704b09c46c68e69ff07fb1f8afb7c967e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "4b60ad2d54f2b8e68cca20bbde5ff83833581bc95af1291f09685315b267b2f4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "4d2c709c09d2b6585331df75bf35779613d50c16155433052d8051009ff9ba30", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "89b14b90c115c3258105dc00b112ec9a03061608dc32b155eb9317d0f480d2a1", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "093c3eb3b91baaa9b3ac2bfa76d99e72cc32ae54c29a75017b5eadb8b559dd0d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "74c3c9f2d64a26d93c69370a08c72698dfb3be2b758adfb9c489787a77300d68", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "cf3b85ff7e6fed1301e7d091dc441265582d34af773a324bda23184e6a61514d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "9f37508008428dd53dfc41617337886cd519a6abdedc46ffc921b65c397173c8", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "884c27ad98eab77a2303d55978164ff1c34a0ef96d56e9b179f51709becc0a2a", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "8545d2e4f0ebb3c82dac1446801fdb077387fe188bb734f318d0ed8dee1acfe4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "72b649726cf47bfb0aa1f3b0bb1d53a2939e8d8e0cda82bfceed91f6df04c015", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "1733b1c61bd192a0ef4b2019d9a0a909eee920eab6bc06195da86f14dc06b791", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "6acb16b40ba5531a81369087de896a78ed5d57050eb4faf2df1500f724451be8", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "2cb939bee79c001cccdec9781e5bc975abb1f890d34623e729c4d9a5b6adf59d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "474471ed235634f8756f863dffd86131b5d7f3d35ca51e7cb6d4eca3805d57e0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "253451c863befa95481ad442ae1479e83ebb2f07a14277e9cd0213eb3c725b61", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "d194399bffc7ff162826bea5bb29e87fff553ef65469d9f4a11a3d5170bd7ff5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "d68eb365b37d0b7a7cfd909d32a130e9fd8930582c0651d3b062a439f6819c99", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -21718,106 +21718,106 @@ "T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "57cfb8a22b5f3f6cb65c965744ed0d4c5da73a85dfdafe303e1221c63929b80e", "T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "13dbb3ce4a0fece86f4d1456884bc3a10b872c6cbb0234e423151457662dabfc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a887ef0b75cb27a4fafe556a022a554625ea2b523c1e73c6f0041a4280cd009c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "c3baa7a79421fc23999fdb32aa7d201d3c629c9cba9268f1ed9886b126ed47f4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8c548c19ee14f148992cb4310dd5632fd84d68b91ad4ca2909747cfd037bfd1d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "d0a212962f19ecc3db529aaae73fbd2fc09c2cf9ad79ad6ec422004ffa0d3690", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4abf364448221be5e94f17264725faba5410cd2e8ddbc73f57d09b07f1d46d0d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "32010b1c7b4664bec0f7e7256d18116518bf8b4ee1970739f0d1d88077737f46", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "31d841f2ee5bd1e54f0f1d5c6d7b1fa58b37bad30876b8b9ecefa8b186c1ba9d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "a5647e70ea8c0d9079475a89d3f5f8afa508b35f28f9d517f3e8cbb1f91aa47b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "4327d51644bf6f169e99df863330d7d476f628db62e8d116f71b202e726072ff", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "891ea64eb53b6727ec2ba5dbe06efbedd07b2fa934893f30546930cc8a8fcaa4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "602b9b7eb2d815a4fd350ab25b089e4045be631abfd74b91548c8ac3dbf9f51d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "9ff46af5431054afab3945cca298539b95fdb08bb2b524b1d02f65caffab2395", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "8f1bbfa28aed4fd7de588c869a0891d9c1cf540c23dec7f64ae6c70bcfdc0575", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "1c1a1f7fca2f79be36ecae76ef3fbc059f90d6c8a85681c22dbbd9b30a6f8d70", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "0716c4165275452314eeb952a9b1990cce1bc4760fbcd1ae63f6607e152c120d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "0a1f096eaaf11a4c9abefa68df7d35b1757eb41f5d840614dea574b90fa1a356", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "a1779dd23b86b6888d2216d3e23e30163cc30e5aecd988eac88331ee2b6b0998", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "48f376d508e805d0dae379099d62df14e8158d11fc4f24c5a147163f08e80ce4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "57e2c209d5cc7dab9f665693fdb7b1b4128837eeb6bf6ab78c82737bb8ddf148", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7230a31d3ac6d5fc3dea3ec51ed42155ea872b0774800703db6de6f5ace4b60e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "7be93904c8d544d2d0e34aca3097f818b796d11a34de0a18f98682e3abeda4c4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c388754e426aeec5f851858c63a73812ca579cf6996cf57b4a0bc51e58c133aa", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "c446ef8a06f87c95cd3f7607a489e440fe745a80f5827f57a8c05b2730ac1bd6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "73d412b1f4b019710d642c065ca663ea0946e466b1b718744c261f55b046ff6f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "25d266c09341c3d72ea3bf4f1e6e5bd9182977dcdd78aee33b355cce84f54f63", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "22e166e9a09a6e1fce561ca6763d57fc2ee5305bec0d62b85efcc2eacb3f462c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "e299e950890977634171f09fcf56c0a03c7c46371e7b2c5f204e5268ed01c317", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "618ed280793826135857c2ed18acb6d47c97dc142b1976f6b1c1a5606b57c0ad", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "27a4a7eff0f1c1cd6ea176c3fabed6f6b741fcaea07de7b7dc27ca79710d0b89", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "db45f020109e2028c42cd4260c0457321006aea7f2015a4dcddfa56a56b66ed4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7697c8c52658475c6de603ea3a6f5b08189433220b71d0eba4044eab9ab611b7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "6e43686de60346e3e00ee52b059e394d65f3dd1613f224bc01ed8576408eaf76", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "c4cf3c2c06b5909bbb266d88d44ebf7df5c65d80ab5020265fce7d1463bf15f1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "d99b114df13706f80714084a44a0f3a690611830b0f1266b9fc37bf42a42b6b4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "40ffd53a2bded584f69f494dbf9c0c2b5cc9ff4aefac946da7eff6488148bb7a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "bc68704401ca83bf438fbf14333a83d4f0fc3476b87c220985ba6fe15b00e975", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "4da217e165c77b876bacf97056d4b72a12b75ae87467433af767b3006d34552a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5980e4b0f61f34d841dd4231a6d3b40513a4880e48ad0bf45278325d92aa68a3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "507ef6385629dc6aaabb8c1a62266a7c67bbbd17480c3524e4d8fd394d317ea5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "923a87926c969b07ae36b0610db5eb3abb49b6f6d0b475e021bf9fce75f21386", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3bf315532246e124dbbbad1579d625802a1cf3667fe443a001a8788c46327cc5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "028a8c2c109153da358d3f5cdde6e821a6220f35cf5ebbe7d03ba9a6aba748a9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9db474418e12e2dfd427c5a63f8136ecf067b7d4ae0cd84a6ab787e637a9a56d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "0559075677323b395c4581f769a25380df3d8d2d62516b6daff0b094d14d5267", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "b60f8721de0da8dc96976fb2e9be984d8fd04554233bc5ca855ed19e202d943b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "8e654f7b68437c3b7dee7d50aa4fbb225dbe44d7d16075f56ab789a45d2b8fcf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "357dcff6f5e5d088e59e4f7633d9db577768f9afe7a57168266d4dd2a839fa04", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "bdb93d747304a56a68df3b2cdf3cfee77334065795485e14626646c0cd681e98", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "3920a2c6b597f32c17d19fb2959ae55b630be03b1144a44393897d8cc0120a4b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "18a92e8989c24900876ce6bde8dd94fd09a279529ff82282d36823424e3c9603", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "dbfdf09485baad4d9888b8d955192b01e316b142b3d737eea472527df55f7d04", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "6a1c9c61e6869ce20e9f45c800c844fc73597ad0d2e71421918ae0353c362194", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5c242577c2cb58ede5063e7831341c5b924cbd8a9c3cbc25c2b2a7f12ba5794f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "28b6e6f383e54c3d32cf6ab1d38453d051ce9f45b022e2e38e966d184152b9e4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "df0277522301ed3c13ee9e20d47e1ea1a23d886209e33b99834ff812fa7ba61b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "c0a8d9f4d4c63b87edae1d959995745a0af8a55e46613a823719d0bbbc021245", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "14b8f64fd2ce654cbf026536580bd0d2768079af99747bef5fef194b972e6c87", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "56628f3723a89796e2af1ac9cfe954c22e632a93e55fdf3a8cf9a944a3b88c78", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "8238d96cb3c294ea5e5abf5f05c3cd21efa7b86cb42ac4cc916e652fc8af23a2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "475465bb8a2b6d0c0a9f4c4a6b7b08e8304cbd154b52a330f64501d46a324351", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "0b57bb153287bc347a82b13f0b72fb5ff1fbdfc493c2675f3860c350caa1040a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "15bd979cfd57facd2c88a07468653fbdecf61ad4637dd9e342e5a2261cf3234e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "dde63e614ad2c696ba1158102d395e4536ecea6c8a92103fb6fadcf0af69da08", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "0b7292259bb55cf37b766f7c2e0e1bd8212736e4a2ef432bea235cc6b909f870", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b6d6b51ba9af640619e855a482619feee1508c2ae460e6ae4ee2c4b58d19629c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2c9c1053cab62419cf56534cef3ccd9341369116c1d0c7e9a79c1f01e88821ca", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "134ecb2d76c2352cf0caf02199ec66fc4ab31c4a706c847299ddf5d4cdc58385", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "a123ab5c5b7b6979b2419a3e5eded1cf1dfce3482c20319025ed2ada697399bc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "99aaf7be45e77a0afb6fc7e3e4df4cc03fd98a7482623952b803fa846ada12ad", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "03fcffb25ea80de6dc6ea605b7b0f3eeb04b9dadd6d39a6e76455d59a1d664c8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "4f69ccbb2bcd0a014af1007c59ff4cc0b63ec522233006c4f4c83da499706989", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4da4c4c3e9cac2e7759ecaf6766ded62a830b762d7355f530ef41ec634338a49", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0fb193a04524d0a3f3552874aac36c9baeed7f3d196d9a7439e9043a56878d0e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "cfa2b17b282498a8b5eaa34090018eb59eb5b39b5ed10798a87582f9a9f54da7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a9cef0f9b4d6b7890be368e8df26376c7062fca8851ae95e60b21bf5e370983a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4ff19d2c22f1426b84d94d4210529f51ac62f0d21e4698d92bdd1ca2adfe42d2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "e08264f7fc9ff0804315ee33b0dae6af3a1048643caa907f13ac93b325c9553d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "e7fab6a8f225b8a3e51a5989f418f9099e4045b1443adcf3447f280e302f1ea2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "b55fdc1a98b64ca03b1d2782c61c0e579622ea0285454d869fd415a8e4701a73", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "29a4997d01bffd0f88674e7c1af4ff04831e911e31bdab675bed118192baba92", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "4b349f00ba8e46794f9fdedcd45db783a9f190c5ddb341cf03d8d52c6948b2a9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "c59cd89e414941e77f3e5010e8d5ccb19647f9294b8ff0a3ba25868cb0ea9978", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "9b52141fa01a310fb365a220653e95b434387f37cc45a4656de2fbd01001294d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "5ecd97df8f37357d82cbdec9d815d331ac3604eb49e535b7f92a63f776a37ffe", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3e4475fcab36028c143d031d76d6381c49caa24a22e202b354384e9576d75b84", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "296371a31c56e29d86ad9d6e81d9cac14b35e690635f9303c6dd69fb953910a5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "110a3ee3d149b098d1ef5909af954c07c919b44f7f0c01d2427eb621b5195d5f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "eeb2b866f18e8e80f85862b3e8941f53766a936f2132945bb9fe4a78274d62c7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f47c07f5c91752b82672d4e2fb08027253028590799ba3ef864f453cdecc6386", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "96458be4e0c3c02d08faf5e4baf2a3bac43e096af14e2509008f7a2142fd6ee4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "561006e3cf577a1dd5c9b4b5c677d22ca62bd56e3cd31c049643ea8006c17c94", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "868264b51d123c69790bdf9ca4d77613e0e6da3c1151654b1225448a2dc1a578", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "b52248f9d2c1be0de59e4a6b5a0c050a23e464d568ef286587150dcf22df98f1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8a6cac4eb44cfccb84ba7e4c28ef9fcf0e8e8ed0d171237457f2427dcebef0f1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "608e89fce9fd32648db1938e97ef345b8226d70513afa4b7e423f8dca9e53381", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "8f181f3d37688cf1bd17e99812825b39bf504ce65604353572b7b1162278048d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "0433603979b67739e1f0dbae8b10a07d0f07b7646e007fe75ef1b5bd1482cb35", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a44c176a5fb1a8936b24652299b3d46cd4c25803ca300389cf565e2e1f84258e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "41025d1d67e504525dd18a21e6866da364a66f99e7894efca674960d3f5f87a2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "25351b3538ca8aa37b6ea5acba18dbe09d6df0d55b629c590dd5f56bf0e9a127", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "638741c6c5193fdeaac84876deb4381bb146fa4f04bf6900759c234b69b6279c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "7a7335ef82924136df0fda8c49c78d9f7f86817e4852272c705959e12c398dfc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "2483b4ccc73f734d45a8da57ac1b2f9d008a34a4b9657df900df75ce016b2f4d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "57d8f54744cf3613533052605096a36dabbff2fa521fb740cbfb691e0048ebd1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d57d0b5918cda72f0e6270134234e179edde9013ee7c71118b831f368a3c33c7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "39257f5573ce9e054b892da66002fd4600b1b89acbe0e53118c273018adc54e0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "1f6ac439debf61228ee50b92a7b9f8bd746dc0dbd428eb233d8e9fe7747ff965", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "02d201f3af0334c0c65cf0e7c84f193b5bd78d87bb4e4c5d7d5edd84b6c23efb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "e22b9c2b872bff13bb2b4501cb7daa81513ff3187dd54c9608e31a96b7a59e32", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "cb7fd2838726e57c1cd54b5a5085d51c83bffe80682fdefa3f13b7cace1fa86c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "22cd2fd6576ce3eab041d2fdc4ac8f0b02bbdbd5defd4ff5b922afb186b1b6be", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "773cb7f8eefc83ba7729e9159e4892478becb72d64f598e7f6d409258a112c8e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "c2cdea9afe809798f16ba8f555d4e766fbb839d271736a65e6c5ff6b48ceed19", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "14376df28fdb7b5bdc836fa0d77d6c407e56934be8ffb52a80971f32589eab39", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "b065b18f8c90de8410472dea2a73754d296d7e8be6a209a465b94392ceff5537", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fa2723d0d1eb94e2741e81a22639e0edaf4d62cb95f291b7db57b00374af906d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5af691ef03e39d6c0419877ae6e6af099d12e3ccbf8b31e016e8385e5836a9b3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "17cf959f2162fefe9040a53ab65432372c41411e13b6bed0e2cd5c059ed50098", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "01c4ddc884351ed28ea975e8a2faecee84acd490ecc9e975b0632b088c8525e8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "dc1e626fb6ccc4fbd70b65f7ea89e7f42e47aee4caa72aafa5b9bb53304a6e68", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "0b676f1cebdb3c3882427cbb1f09f4458a3576a844aa26520a2af2404f48c029", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c174c213d08bf78f4e253b17add361712ac203df03a507fbc0f0af436b49d13a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "dcdcbe82bfeebc3c8cc2b07841860a2885effdfea82430687d44f60fbd4410f3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "e1ea688e85ec37464c50a9cfca991154e5427ed58171b5a9a4d3832517536146", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "007a76897822415a5676e1e660939a764e70ee4492ed6b50b2c0fdf109268658", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a0c59033e5024debc4cffbab4a54dc99ba7ce4d37b6d7345debbf463547977a7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "26fddf81c6162458bb09f9bc07834f7e2f65df80a6c5d21ab82204465bd5c92c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "65b40a783dd26e3f6532590c34c60494f1f8a62dfbe582187e9e89760db17fa9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "6b191ba4c5ee21f1950589ee4aa5f6e06687fd20daed7cb39fb5c4d7382b1e7f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3ca03d81893f34399d74a56dea79f4c946ae38d93e3b4f8b66e6f387f3d82adb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "80ea93f5fc92017e492ffcf7dfc56c7dcbd8774fa0154561ef3d8c7242d27cda", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "5fe5fdf1dd308f3328c9a48476a4cba58ed16c6de9e64af20a5bf0718eccaabd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a9ba452b20204b6bdd3e96c6e5896207331009d85533ad3b36fb11ca30359743", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "19b99085f6e9ccb34def6af8fb8f7628c9d792e34434f6ef1bd0a42589272e13", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "34f9ca3af4ed2ae3b4535c378ac0a220bcbb51528627894dde5180538cdb35f1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "69d77e11a0ae8bfd67f3d18e3cb7a13bc97fdc9b1f2af76d474084ef09429b67", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "5321af4241daedcc6f8ec1ea64a25fe7da9f8457d768cf9c8f7396780a511c75", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a73dcaf4ba120322c09801f69c9021c39bfa69a14caf125420f785b1e8e0df7f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bf7ce413a0f05182155bced062300952b336fad9cbd0fae69ae2ecdfbac8f9cf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a4d800b9d6ba9c50bb83a8f6007396a8b53906fd9d21a272424615e41ba9688d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "fd394cdbd52f8f8a228ef6d61d91befe950f838fd507666115ebc90ba7bcbb94", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "99c2cdcb621878a8f6eb7ced489d08591ad40634fc7ae02dac756b6f2707fb19", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "3023b41576117720750192e35fc508c6584f74d7cac654f5a2cfa2f54963302c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "4e37168d4b5799ba050803d7a96d9ff0f6ee92b4c155f96243efed8afd1f4acb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "4c2ba34c37d018ecf0571afcb1b9bee0dc8fe35e7743c2134721b6a7e99b9ab4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "006bf3e339a62deca063cd91a793faa0feda3f602ed129e1bd9d3ba51af77931", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "f37a0a5a9d41c8dacd88dc5986a74e580de7f0427b906ad1150697aa5a0a6330", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "b5a61763fed10689689dc11857a7e769b2f98f252b39404f74fd8a89f79e58b9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "7667049119897d807fe5a40e06b3a85878395d3a98f3a9b6c11940a69b283ea4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d02b8b721e6ac3165e1ef5f4acd12b9a93e031471ad3e45596c9c0ffae3239ed", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f926db033dc5e438673a15c05ab7b9c25d40604f8f99bdb294cf5a80c0221cf7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "4ac0e7ed505ed82cb223b9aadd1bccd44572e95655fb3a0a5c51b0da00004585", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "177555b827281de3e81d4c8014f5948ff6d54abe2191fa7f4c366ce3c920866e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fbcadda2c7df65f5d3804d98fa7c1affa00c1e5e51f01124960be516fcf4d877", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e381df872f47cc98bd390f3b07bbd1ec07f424bedc34065514716cb3a165f8df", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "4dc2a54718d53e89b9a7209aa4ff5dbfa16e9c850743af036bc1dd09418e91c6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "c18a7ef995d7c525e5eef5f084315bc58c15966279b85223eeeaa7732eaa91b6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "6d0fa35b22a649a9e5d10aab74d5d437e095dfc1e75942628404ab6cb3345e3d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "0997c2de2bff7465c8af6cfd02c04aecd89fcfe6a6af93c8c79c44fae25a3876", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b88bd0e9ff2cbf394092e664913f8d899a412425a5e3db7d0f520f75c33c118c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "dcecd2657aa6f39e3cb6f85bda97c49ccf36b96ecee29905e3c21d73823ad9fd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4c5dec20ebdbebaeacc707c8296c6d645d5733b6a713b4030e20ae5cc3723218", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "0d55dbeb6e6277858290b18b67b233c6a9899dca97f77abadd9ed34e51ff2698", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "042780b6a45b8156beaa35af848d474086799c9ce66f4704c6a33ec77d02cebc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ee2562c2d8c153f15c2b104cef1af24ea3520517acc01818e2d48387fb1fd60a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "7fca6b7a15b3252ccbb2bc5a16093d18602717041ff00f6234d83735f233082a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "d9439276112862a0c2ff3c16af0cf182a0b1efaf13ec2bc3b4b6f6a6d335ea2b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "261deb36de8607f86c737fcfb9cfb7fa1317790fd1307a6eb621cd70f4e47253", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "040c8c5d0a789cfef2db60380041f8ccd8dceb442bfe9e1b8280ec2aa63e25b4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "64f4f86cca2673a9cd5ab6e155b8edf6e59f27689856d4ddcbb379138d707dae", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "1160929602aea9c0b56fdedd095ba44413ed19c74fb694fac0325a15b437900b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "58eb23cd1cd187db6cbaf89b6899ed9b591d692a572874415541fd7d27cf9130", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "deb4444562f59a1914a4c5342956a48871fa50b87d4349849e61a0306fe617d1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "88478eab6da47ae6d56f8e3ae1272210a85ff11ee98091938edd8109cffda807", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "7a1fe6606438e6be0726ea9facfd144027a892919d84e0df01fec601f3584d18", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "9b320859ccdcc87ae7b6fbbab7f584c97142c7c5cadca721732576c1f8d1ab41", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a6cb95a29577a724bb6f287b33e9e4fc893ebb54191ad796ed28834078f38891", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "f6a617a757d20c026736ff8cff16dcf4c409c71697f238b64a0adb81e6161744", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "2ee7b595b056359e7227a09663dd339d8985bd088b6f444d01d2a9e9b802aaf2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "00e3f03a8624d46c20811ced1c8be00f6ac1b9b04c498ae164ce7aa327de306f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e4fc9c200c6300e6b0d1ffbe50ec3c77414c0882fe5d22a249550d84e7ccf162", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7065d6f68cf1e5822221657bf8cb1d7ce979f0fbccfff7dcd8128c8afc0c2c59", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "d92221e893bbae8ef691f9cb6472360b2248fc98d1158b1f8293108ac6e524c4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "1fc1219eb3a8e0ac28b54cf7bdd969d2d025078e0eb7c8e8287f677dfda79435", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3552eb144e34eaade43d2897fa2f01310d9af011c14564ed187e344d114aba13", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "026465c5f30b73af559134f2a7dba2f0caa04eee505cc5fa07cc22a74d3cfb9e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "16f33c6f25b1e510b2abeb49b99ffa22e6c942348696095dff697f5f738b0167", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "788f3588e89d7a5f019e51340232f5784b94bc858e4e7d56be5cd6ecb0962554", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4d5d3e5bbfe4911763a44cd70f5c46046663450d0d1c722017203bcd8ba82828", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "72cc42010b07134c9fe4af9d1d48c6c257fc495221f86d764d6737156b04d07c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "be1a1626cf5c5adc4e2788b7784b6398ec7a8928e4333c74a7176129e4e9dce1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "f1a0b686f188f7020d6a080d8037705f9c881c211513aff8804b72c3559688eb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "43387ed6e470782e5c42f4765a9e01d5d001204a5a098063b70ff6e751d9840f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "7e6c9f4d1698ef73ec1c06d989025ccfe091162c8ebb4f83539253522603e2ce", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "01a2450d9e9921ec277d0e5a58c7136e0e6f922b46e5a8e6b04532ed7a80edf6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "73b6b0eec2e97d526f0f2a95c3a1f9481d32c6bb09670a29d53f89544f6b0b54", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "e3a2f463ca9202f4b35df5a4a4d5a6e2a762660fe1d3a27809275cedf715c580", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "9d7137b5879bb10bbb0c5bce7f28038e2185b4af5156c302f5695ec8532f35ea", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5791da26468dc43c036a0a2d4fc3001780cb8ab4eb353336ad6a7a8e3040f684", "T3T1_fr_cardano-test_derivations.py::test_bad_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -22089,18 +22089,18 @@ "T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "b342671b2c2517eece4654bf1615f415e5b14314f0dd12788739d4f57c33248a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "b63521109a412e96a8ff3f127c0c3cf42141c4dda2b86b8fee80a0a4aab2ab28", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b7440e4a2b582264240444dfb00d96f841cad651ac31b317d3f535b726bc7d41", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c1e82505c4cd5c595ae42f26c9daba1bd2e65170e8f6f6fb63613e5a17aa5e13", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "82e565ca6345def45fc81a58847760a8d57c1df424d2be711f9959d8248611cc", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "ce36cf7e6d47e088b9214c4a4297a465670feabb648d5f6a5d96b84cd686d9cb", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "5efb732970956e2c52f5663cd83935f3434e8a7f426a1f03070ec3adb1344a86", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "ffcae19ec12398aec79010504bb203cab6c3a3e4d56e1cfc3d196a441f16c25c", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "23aadd62383ab81c19114336e2b1b7565283ede439bba718b3cf6bd3b95f0d3f", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "72d7886e5034da30e4f60b375afbc23c96edc19daab047c11a6055bb4968e0b9", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "fea175c347b037a7e7814850be66aac336868f8e4ef625cc849c4e8ef48e3993", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "289a65436d4002da608e3042f83abbd724de08fd1b4a6b65d955577c4cd80f12", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "6e96630a0f748ac0e088ea0c692b67894f3056bb9c7319ff454c08c5cf16a7c5", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "eaeeb5e83d2422cf348f5f7aba4ba76dc28dd1be7b24512f23027aaa65b29bfb", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "42aa43a0b260bc50de5ee1007f33e7d235ee311a155daa1490bd3a4d8c44c6f4", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "33c96caad45f836fb7c46ac13bc41d00844d6ecdb1293b5a5ad7ec0daa74b216", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "aa1cdb89fffdf36e4cc571c7c6cb0e4090952f1e2a08bcfd36e3ff7be65a5a5c", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "72e3cf8e3bfa9dfc24da46a485ea258d0594111e8045c8a7dca02407db0eb05a", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "390e3ca66f27b6fbf1dfdb522eb52887732775ad0882ec9d6cc2b574990cc2c9", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "826f94278b4c288a0b3ec8b248d3fa66df7b0d5b3a48b8a1ab33814bf6cecbd6", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "92231bf1384aec93c86b61d73c9fff0edb8ce0707ff4bfa676ec89680eaad540", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "3c2c15bc46e556a2740524dc2eeebe4cbea9fd04212d5967441f14e1b47fa254", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "3c87eb21460d4dc911f90e142fee85825cf85027c53393076e195d854f6c1675", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "a69a552e6c0bc1b52c1827f316b6fc0399889e0d91f73897b20e39dfd15b69e7", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", @@ -22258,12 +22258,12 @@ "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", "T3T1_fr_misc-test_msg_signidentity.py::test_sign": "5429b341abd8dd427710839e53b5e80c567b1ad9fbb0e80fa5e43cdbc0adda8f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "13a1035d7725ed15303d4e70cd9bc848784ec09eb1b259e77b399510a600b0f2", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "866934a7a7e8d8381a709f6dcd7dcb9ae76ff464408c62ef5f1620e79532837a", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "08f2423f20fee46a518825324efb66aface98ecf9d77084bb0b41b863ab40259", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "030220dd4b8226dcfe14fe076f1c98f5d7b36f90af18575da1261b835ac953b9", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "da75356b6f4f32ca081b2914b7f21cef5c9eafd0b712655a435275462b159b55", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "b2ba141729748cee3c6e60a7de17a849bc14c559024ad8688708a2c32aaf3206", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "8d7cab3a239fc2b93a824f26a423d0090123da576812ecf885a00f343053c7d1", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a0e2b0fbb8ed2933331c9164e10e10d8f270a0f5caf0121a6fd281b2ec4b4fb3", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "65e2f968dbf96ddcba3efedcd48047cf91d455e67f4abcc72a456f50b3408b95", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "72044bebd59525f5771aad115df3dd94abd3116e7172ee34db46758e0ee0831f", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "69ff8ac3ff60432a31a6860070cdd63b295ed0f6fee511cf9b77c5cb440936c4", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "11dd405b79daf68e062631b4886fec52dca6c16f44eaccc878c3356566064c39", "T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0c211bbdd9c4f5a1d3c0556f2fe91e2c1bb91935650dc7472a354aa5fade13d6", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -22318,22 +22318,22 @@ "T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "10401c667d47d04fb4eb4086dc76bf6cb091883a961b0c1183c9a02595066e4d", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ebb5241fed461254913bbd4beafcc407c75a7bb3def990ce36639727e2ce1090", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "33057aae7d93c8c4125b2e85e147c2dae9ab79e58d936d199877d2452b80bf2b", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "41a7ae0d77a8d57ffd828f80e30f7f8bacebee34fbf0a589b8c3f85800330f47", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "06e09c20af28bdd34b337e90109203c117b9c1cd152728cd2ee112472ce5ca60", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9ad3749d476ec1aac07d466d3dcef6b461f363da81b47305355aaa85d2a77ba1", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e4a016649e3858a8fc31cd8779ab290bdbcbb01b517fa1c281236fcdb9817a09", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "bb27e33ce230e1724085995c263046ae2b939e739827d32af0991c74d20e6f53", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "a48f7e7d8417e7bc864ffeb9a5364152237228d18616e092f7f229b48c07277a", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "1eff1ed9c60943369f0a400f0722e570eff48e4ded73aa4345fba24fd827ea7b", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "10d2a505e2d7f4e8caffd397b75eaa99d048cbcb9d12d172a566b3293e17c390", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a38baf7bbd7b2c6af02784c57c3074ba0907aab4048bd328314a59009b25fe6f", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "9a455131e6a8112e76bf00457943ecce06fd0f9b8f42e4890b6aeb6253af10a0", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "bda9bbeb89e5ca5e82dd3020a9f9b54372ad0cf8a174feb25e9a65a3cc967876", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "dc57e9e363ff598fb3eec8a29965ec4f93a804b44615d7964ca819a95ad5e585", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "5a098e683fa2fb67ccd3e662f831ca8e603ae4d47b7945edea61419757cfc73b", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e7282815b647fdb64d08bc71b56999584a74b9354bf4874109642699eccf00f5", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "049862bb3cad64e6c4c72586b69ff66ef26e6b5bc06779383240c4bafcab4049", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "558f7392a0f84f819abb3106d88085ce8a23c180edb740039b005b466f6b3744", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "aad2780a42ed7521316c9c597e6b226f23862a527ded70ace4d5a3d2722768c9", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "049862bb3cad64e6c4c72586b69ff66ef26e6b5bc06779383240c4bafcab4049", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "558f7392a0f84f819abb3106d88085ce8a23c180edb740039b005b466f6b3744", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "aad2780a42ed7521316c9c597e6b226f23862a527ded70ace4d5a3d2722768c9", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bf8f29c0d4313692222e36318558b6d6b3bc64c1de31f5954e17692b86dab14f", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "d565255db9e4569f37842a612f9f8630e70b3f53a12a57f7ce6620d769e0a26e", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "7883759283821a16e5440659eb3d9b01f61dc7a06009dcca28457e3515cb0d96", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "14bf04adfbd92b52382bd04ff20ead7a54a35281756f0603dfea1f13fd8bde42", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "ae6ebfd51c0676cd134d54ecece320886c18806f2ab0ef1c6fd697aed78d199f", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "10214d5c9fea6deba8663bde1efbaed99befd8ab82cdd63d66b58e0f015bedf4", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "db3a30bc6a98b76ee5777696c19daf4199a53597807aab264a024d01a38f54cd", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "cd5ae60066bec8d60552249c2b8613a86ead773b49edb7a8ddb3712d7ac87030", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "1c2ac5642633b2bf1b3cfb2f5f8bd996f7a71812ef9bf83ef562e005413fe7b4", @@ -22403,26 +22403,26 @@ "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "bb64ae75315b6b84732ac9ca8b12802b92305872db2f62eb0aabe4aeb3587149", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "b48446801d47e01a8ed672f3a3aacf9b2522589ee6f73c730a2dd617a1c395b3", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8df747d8c9759e1dddd445fb4a0588efb1fe25c019d0dbdc9243662d0141f735", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f6a16dd848c7618d7ef12cb5faa0a661e0826feaef53c265bc7817e20fbecb13", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b685419e98bab1a140280ae7f326f2682670979e468afd136931a8b00e4b8b8f", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "2227dc871cf14611b4d691942718da937776d9c1974cf4379f2744e473dea40e", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "6a0de998714918410a48501923c2c8322ad79f82fef2c4cd4d510cfb4301f75e", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "05f3cfb296e72167023c242c65d118a27bb8c462e5c79a7020917c4f609e0598", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "f82a8270302043512d337f84565b9de31312313a4e66ec86e434e34c5ea8e612", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "526cf01aad11436ed589ebefeb2fe872daf066867184e38584bd5d63cd6135f6", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "f6747b36ade9bbd827e4abdd3b7e46cbeaf154e3f84fabec9dc57329ff82e69f", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "93bd4efc2660a764b6c78c3bace4b5c1f69dee870eea59538b538e4d6fd1eb6a", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "2bd4014b64e262b36ab68f3046490d252ae0947fded72e3ff2edd6381bba3468", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "efd616b5fb652cb72a0c099dd069a97ff50e7d1c4fd4f43bd899edc39926dc58", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "e1b43aeb9c858fa153b74301c5450d2b8769b998aeaf48e4d4a48e972b85bfc4", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "aea313c64f2d70552da29b97297134de7c9093481edb3d3e5ec7d700e52e817f", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "61ce9c932e38c8034d5d0467a29581080ac2ee2a7e7a248c0d8083fc1db6d2cf", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "8338ac862e6943331f6b881577a1c649857ec15568f9735433e4aa717d839e33", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a56d2a4a071bd28ba9498cf6d199c57f2465144e7a7a9b1cc1fe5e4b93018a9c", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "1479bbe5c48d3e8f9d9bca2ffe05025bde98f6eb8cbfd265065a209364e5f184", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2976b87168a10b87afbb964a639520371f44e8251d2ecd1e27596185e29c7caf", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "5b4a05c1b9d87752cf12d897e58aa517397b65a89188a9228730a470f953fdcd", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "bfbf291285199d469c9e28131f6fb56ce17db7839a3f99477946079354f575a7", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "1d9641ac02e2ff05a2170cb67edc80c328aa59057e4c3727d0704540cceca039", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "874734eb7ee1bd6b185ba348e2dfb8e2427149fc89ae224248c8ef2ea2c80329", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "c98e545e013f82dbeb7c36fba61d241e293117296a5fea9978bd32ac84c5b784", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "7e9463447b16f81c54fa83c2a643c57c095d26feaa7401655e8a0dbe6b3e8cf1", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "5e1cf6bf6599bd4a9ababa78280ea8105bbda6a3062d00aa6f541b243df3a527", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "fd122a92d1fdf77379c8934fe28daf9830d288f03c12f337a63374c7bb0bb16c", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "0c4d51369f1b68f59f50762d6eeeae0af2bed9ba78792a8e47440929b0a4a5cc", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4ef7d77f0d9a64b010efc338719ececc7acb1a14151a3a40f38473cbea45beec", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "e6b9acf1f91f7260f176c328d5d9c28f0fc7724d6733516c233cf89eca993b27", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "e966447dd6dd1387fab011976cded5d4bd827c838ba1cc37c95d8621bbc6e252", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "b591e85ccc326b6cf57e47b76ac53e9218f9e7e9fdad27205e77f6b1ef741ba9", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "9937a978bd79510361e49e2c17e07f7b36cbd4e6fc9a3d4d2b555be1275425b3", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "965b863fcb20518e0a423f4d10f02ce689960af4ce895136f72d637e5686a7ae", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "1dbf7fc24d6be2ef7d2eca3d9a017d91e3390c350e44d8a16fee8868bfbfc144", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "dce2d43d0e28583914f7bdb1013c52ef830e90883fee8fe5dcb9479edbe5d5ad", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "7bbd3089a7265b9bd74371794f01c273e0cd1d0bf50636aa89c68988cd29d033", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "cd752d3d7d5eebdbed8ad7e3d4e826672132434fcbeb7babcada876622d9606a", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a2523f1a070767b0e36954b8030ea3f30d2d1b68deeb2f8ff3af398524a519b7", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6012ce20e89ad7e41c941f139e57d584207bc427737420a229fcb024fa01b6c3", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e77207b85b300df7086eccce61995c35d8a0373c4941113b9c119b047afa3d68", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "65c0ec7d523b23c68dac3b969325dfda612f843b2ea4d34d722375b45d3ae097", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "532a96ae734c986395962fa6c1c84b242f1af04b21647f49a7b6c1adea71b538", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "63945b2be60a95999ff4b214dc679e4bfc47b2d664348f3316a44d3c22b8b099", @@ -22466,7 +22466,7 @@ "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a19c1c1978b5888e8785be7853e8ec497b009964f2420b356de0d3e70f396585", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5004da41288414fe18df30eb15418a4f6509d51a34b58c40eab0fba9549d2e52", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "849dda5ffd57f93dc37451f2038c1fc3b2c0b9c482f67e868f9c9a91182c8045", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "92231efd268e4a0a2209075fa5fd3c8a50a3aadda0d7105304d239981c2e1fad", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "82435b87521466f82b024ca169dc6c52881092eb25cd50eb35dc163538be55c9", "T3T1_fr_test_autolock.py::test_autolock_default_value": "eed5ddb868c8f435f1457ffcc3d98a0978dad76aceb483b6ab7b7c9558139a57", "T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "c98c77aaf8c0436847adb04a1f41832c4b5d468df81ae341cb70a73c7059e535", "T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "c98c77aaf8c0436847adb04a1f41832c4b5d468df81ae341cb70a73c7059e535", @@ -22476,11 +22476,11 @@ "T3T1_fr_test_basic.py::test_features": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_basic.py::test_ping": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_busy_state.py::test_busy_expiry": "84cd25dc854499ec9f3b61828d717f723e0aaaede31edaa23c16b120e2065969", -"T3T1_fr_test_busy_state.py::test_busy_state": "30b666a896f35b382a677d0e0bd49171f888aa9dd669a5742c006e38b8e238a2", +"T3T1_fr_test_busy_state.py::test_busy_state": "ccb4a621a888105a042644f778e20ba1d498619cfef944ceb59144583b7b7e8a", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "c6e0057ec153cba5957ce6061f87cf66c51463766951cb7634399c2b5d4b6447", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "bb4fcaa0adfed9fe2787d494a15988497c4470992c0910a793f16376650b8c90", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "c6e0057ec153cba5957ce6061f87cf66c51463766951cb7634399c2b5d4b6447", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "bb4fcaa0adfed9fe2787d494a15988497c4470992c0910a793f16376650b8c90", "T3T1_fr_test_cancel.py::test_cancel_on_paginated": "9d84d8ee4c098c156248719e20bcec62b950d7e1371c3fa0dee68001f827a034", "T3T1_fr_test_debuglink.py::test_softlock_instability": "5ceb54b40b7c17ad769404a8ea8cf1f00a0f661f64887a93f4876e4eb8cb5459", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "9d6027004d77af136656d8621570fc0d9063c7cbf6056fe80c2f5bf636de30c7", @@ -22517,7 +22517,7 @@ "T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "10fac101016918147991c413ac26bc5107d3ee74d6104c80d9793b4ba34cdfc2", "T3T1_fr_test_msg_applysettings.py::test_experimental_features": "285d51abed07f08cdbd9c6ac41c88d4732455eaae3ad1cda839646df601873ee", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "916649cb2da7c0e3660763bebadbd3de71d107b29a4239ddbfa581f715881850", +"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "d07cb0e260158eafd735649cd369ac378ea588f3d4bbb0de84e2ef7abb7c76e0", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "4bc48e6f1279014f299c4f3cb4a9ca1316dd0267f4eb4143a61aef358c3fd487", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7c18286bb2d247ce2f5fe65893906fa16d4493418456d1f6ba15d264ddc66b01", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8c5c4bcda213599ecb9fa2bd84c2d4b0324a442967e9388d3a235e5edc17366d", @@ -22601,10 +22601,10 @@ "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "0c121034cd8b20e4c55103d0a8a209e0f95e378a6ab1e40bfdfd4cf696be5f88", "T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a8310696d820a3b4f30e83674c7aec61661b09a96756118167c26ea4f65cdaf7", "T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "dab7b414af44abf7f73a58a956b176ce88b3e733bb8ad964e271c5d88fbacaba", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "dacb5ab12a830b3c9eb3d79b11ddb47ba14cca71aa09fd3293a1d2618a09927f", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "517d1498df16399c830fd4691d9938732a4352004cc8eabf5ca4373eccb0cc98", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "52cd29ed18e66f5972be9bb97f98973efab1aefdcfee75c7636819c3968c8e15", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "5b62ed333a2d0197e8ef8d62e105336e91bb3301183111b12a73ca278ed83de8", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "dcdf7ba76597be0b129109ad441f65eacd9c1e773afc319f5eafabc15a969aa1", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "cce5eea4857c0a2f7ae527d60b811ceec327ac3a2e1ace22ac5bb74316311b72", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "4dce8496f9ad5ec342efb52407e21054e93f9831c26543077ab275113ac9ad5f", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "19238f998bb9f24095af86604d757de1c7cecf65f2cd65bdfd651d3bcbceeed1", "T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "d1a001e21774456665162646292cd69a609089075979ea7e7a0601c3884ad2cb", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "27b0abca90bbb0f19f597a3f6f6d980de5dd3f51fdcc5dbeca8e4b977119f6ef", From 731d6d0cdc0ec647cf19714a52d42341ba9c45f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 6 Jun 2024 16:20:09 +0200 Subject: [PATCH 273/626] chore(core): update copy and translate [no changelog] (cherry picked from commit b28e29cf4f120669dabe9df6227de06aafe7d46d) --- .../generated/translated_string.rs | 4 +- core/mocks/trezortranslate_keys.pyi | 2 +- core/translations/cs.json | 2 + core/translations/de.json | 2 + core/translations/en.json | 2 +- core/translations/es.json | 2 + core/translations/fr.json | 2 + core/translations/signatures.json | 6 +- tests/device_tests/test_repeated_backup.py | 5 +- tests/ui_tests/fixtures.json | 140 +++++++++--------- 10 files changed, 89 insertions(+), 78 deletions(-) diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 476d249a5c..aad7b93e2d 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1332,7 +1332,7 @@ pub enum TranslatedString { brightness__title = 932, // "Set brightness" recovery__title_unlock_repeated_backup = 933, // "Multi-share backup" recovery__unlock_repeated_backup = 934, // "Create additional backup?" - recovery__unlock_repeated_backup_verb = 935, // "Unlock backup" + recovery__unlock_repeated_backup_verb = 935, // "Create backup" homescreen__set_default = 936, // "Do you really want to set default homescreen image?" reset__words_may_repeat = 937, // "Words may repeat." reset__repeat_for_all_shares = 938, // "Repeat for all shares." @@ -2663,7 +2663,7 @@ impl TranslatedString { Self::brightness__title => "Set brightness", Self::recovery__title_unlock_repeated_backup => "Multi-share backup", Self::recovery__unlock_repeated_backup => "Create additional backup?", - Self::recovery__unlock_repeated_backup_verb => "Unlock backup", + Self::recovery__unlock_repeated_backup_verb => "Create backup", Self::homescreen__set_default => "Do you really want to set default homescreen image?", Self::reset__words_may_repeat => "Words may repeat.", Self::reset__repeat_for_all_shares => "Repeat for all shares.", diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 74bd4bf264..c1a1fcd033 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -587,7 +587,7 @@ class TR: recovery__title_unlock_repeated_backup: str = "Multi-share backup" recovery__type_word_x_of_y_template: str = "Type word {0} of {1}" recovery__unlock_repeated_backup: str = "Create additional backup?" - recovery__unlock_repeated_backup_verb: str = "Unlock backup" + recovery__unlock_repeated_backup_verb: str = "Create backup" recovery__wallet_recovered: str = "Wallet recovery completed" recovery__wanna_cancel_dry_run: str = "Are you sure you want to cancel the backup check?" recovery__wanna_cancel_recovery: str = "Are you sure you want to cancel the recovery process?" diff --git a/core/translations/cs.json b/core/translations/cs.json index 583af37902..df085e210c 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -611,6 +611,8 @@ "recovery__title_recover": "Obnovit peněženku", "recovery__title_remaining_shares": "Zbývající části", "recovery__type_word_x_of_y_template": "Zadejte slovo {0} z {1}", + "recovery__unlock_repeated_backup": "Vytvořit další zálohu?", + "recovery__unlock_repeated_backup_verb": "Vytvořit zálohu", "recovery__wallet_recovered": "Obnovení peněženky dokončeno", "recovery__wanna_cancel_dry_run": "Opravdu chcete zrušit kontrolu zálohy?", "recovery__wanna_cancel_recovery": "Opravdu chcete proces obnovy zrušit?", diff --git a/core/translations/de.json b/core/translations/de.json index 5fff40e403..169f99644d 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -611,6 +611,8 @@ "recovery__title_recover": "Wallet wiederherst.", "recovery__title_remaining_shares": "Verbleibende shares", "recovery__type_word_x_of_y_template": "Tippe Wort {0} von {1}", + "recovery__unlock_repeated_backup": "Zusätzliches Backup erstellen?", + "recovery__unlock_repeated_backup_verb": "Backup erstellen", "recovery__wallet_recovered": "Wiederherstellung des Wallets abgeschlossen", "recovery__wanna_cancel_dry_run": "Möchtest du die Backup-Überprüfung wirklich abbrechen?", "recovery__wanna_cancel_recovery": "Möchtest du die Wiederherstellung wirklich abbrechen?", diff --git a/core/translations/en.json b/core/translations/en.json index f04fe0045d..bcf55d7237 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -591,7 +591,7 @@ "recovery__title_unlock_repeated_backup": "Multi-share backup", "recovery__type_word_x_of_y_template": "Type word {0} of {1}", "recovery__unlock_repeated_backup": "Create additional backup?", - "recovery__unlock_repeated_backup_verb": "Unlock backup", + "recovery__unlock_repeated_backup_verb": "Create backup", "recovery__wallet_recovered": "Wallet recovery completed", "recovery__wanna_cancel_dry_run": "Are you sure you want to cancel the backup check?", "recovery__wanna_cancel_recovery": "Are you sure you want to cancel the recovery process?", diff --git a/core/translations/es.json b/core/translations/es.json index d959dd997d..d1781165e6 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -611,6 +611,8 @@ "recovery__title_recover": "Recuperar monedero", "recovery__title_remaining_shares": "Resto rec. comp.", "recovery__type_word_x_of_y_template": "Meter palabra {0} de {1}", + "recovery__unlock_repeated_backup": "¿Crear copia de seguridad adicional?", + "recovery__unlock_repeated_backup_verb": "Crear", "recovery__wallet_recovered": "Recuperación del monedero completada", "recovery__wanna_cancel_dry_run": "¿Quieres anular la revisión de la copia de seguridad?", "recovery__wanna_cancel_recovery": "¿Quieres anular el proceso de recuperación?", diff --git a/core/translations/fr.json b/core/translations/fr.json index 403bcffccf..e11614f3a9 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -611,6 +611,8 @@ "recovery__title_recover": "Récup. portef.", "recovery__title_remaining_shares": "Fragm. restants", "recovery__type_word_x_of_y_template": "Entrez le mot {0} sur {1}", + "recovery__unlock_repeated_backup": "Créer une autre sauvegarde?", + "recovery__unlock_repeated_backup_verb": "Créer sauvegarde", "recovery__wallet_recovered": "Récupération du portefeuille terminée", "recovery__wanna_cancel_dry_run": "Voulez-vous vraiment annuler la vér. de la sauv. ?", "recovery__wanna_cancel_recovery": "Voulez-vous vraiment annuler le processus de récup. ?", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index bce7a39353..8f249d4318 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "ba305d41fa4793fc71a2cd124cd9170ce93177f0a749ea0444c2f06cc3a65d2b", - "datetime": "2024-06-05T14:49:38.622932", - "commit": "7322ca7ddb4539885970f4546494369e1ff950f8" + "merkle_root": "7fba6f82bbd54d09ca75a1454a0af359fd187dea5b689f4f19552b5ae1d8e2f0", + "datetime": "2024-06-06T15:24:25.976163", + "commit": "0e530269a8291e7d2bb1960ab54ed10af0b6785b" }, "history": [ { diff --git a/tests/device_tests/test_repeated_backup.py b/tests/device_tests/test_repeated_backup.py index 87c0c7f8f3..acec8cf9ad 100644 --- a/tests/device_tests/test_repeated_backup.py +++ b/tests/device_tests/test_repeated_backup.py @@ -21,6 +21,7 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import Cancelled, TrezorFailure +from .. import translations as TR from ..common import ( MNEMONIC_SLIP39_SINGLE_EXT_20, TEST_ADDRESS_N, @@ -236,4 +237,6 @@ def test_repeated_backup_send_disallowed_message(client: Client): assert client.features.recovery_status == messages.RecoveryStatus.Backup # we are still on the confirmation screen! - assert client.debug.read_layout().text_content() == "Create additional backup?" + TR.assert_in( + client.debug.read_layout().text_content(), "recovery__unlock_repeated_backup" + ) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 8763a57011..24359d2bab 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -774,7 +774,7 @@ "T2B1_cs_test_recovery.py::test_recovery_bip39": "375a6f59a10b331b0862948495728220d6b73513b3ef00d0059c2416b97612ad", "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "7e1bd02324afa7842526afdd37dc1466253b2f88dfc31095f23d1241623f8f6d", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "c12c729746d5096415c4c63e212222e7354a2b35a11810774466322b59e18d65", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "6f3888444fa0c0cea9f53642d340d6a276fd59f82c157d0cfffbba3b9a61e331", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "eb5fd0336c22d6a9e19339a5cc2405d4dfa777a54d4eebcb9c143e6a5ff87e69", "T2B1_cs_test_reset_bip39.py::test_reset_bip39": "a230df6897a2329be025591a340d4dfaa22dcf908aa24e30d837ef80dbbe254b", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e70b2900b5f7a8487fc24566d5ebfe58c590817017ca78440246abce1660d484", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cf0629dd19db3de2c3499caee7a5b1b79c45151c33bf78e98ece9354bb8873bb", @@ -820,7 +820,7 @@ "T2B1_de_test_recovery.py::test_recovery_bip39": "86b3980aa38255b490fc4cdc8b73ed8c0324a235e65a3296b52fe7d9a0a342b2", "T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "6b006ad60a479d373f5abef8ac37d941853f3768e162aa12791fec0d56a65e77", "T2B1_de_test_recovery.py::test_recovery_slip39_basic": "923a429e844a91eaadffc6d022c2912d2ad356c00d78f898dd4cb120a4255fdf", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "334889ebe6a0bcc3ffb0fa4a2452978366c8d2a7772ae20c1cbf823d7b97c8bd", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "50dac6ada070947e4c509cd1fa597e6f74aaca88ea02b97682e397811003a407", "T2B1_de_test_reset_bip39.py::test_reset_bip39": "bf18ca3a182cb1f3460dee4334f6c4d0a3e0b5e2e973658745f231caee97bbda", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b2f2f713a04815a71bc6b3e24ec7c7d99aef68e90545065e64c38e09c3d04a46", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c605a432fa0b9c0a809116422c5fc09931bb8f15b1e6f8b2452ba1887e5d86ef", @@ -868,7 +868,7 @@ "T2B1_en_test_recovery.py::test_recovery_bip39": "1e5ebf29bd14674cedd6f2cfef42bda268c53e98b1b67a531610ee9b70804391", "T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "6dc40e36be62f5b8d6c26b9c923cb643c1f715689f4d92db5b28363b5f2dff9f", "T2B1_en_test_recovery.py::test_recovery_slip39_basic": "938f3b9b8ea993a5bdaf363812a6a0c43d06c34bac46059e3d228d5e5f100b45", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "8d13a5d296311eaea8af4a1a66e3aeb4b741e7eed2a6c53d34415bc99170ede2", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "31a1bda17e7c7fa3653e1b11db9aca6cd01c8b811cb06581e2eb12a2628486dc", "T2B1_en_test_reset_bip39.py::test_reset_bip39": "5e3278c2c3c22dbe3070e86a5d9e54a20be2f8ea61474b451cf44bbdf230f755", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3cb34f14385238fa61330059c4ef6152daa14e0656caef1c156cce0fd60f3360", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "83b6b14cb700410fe809b14602ae899627160f7d98add958893cf5b7e6508f4a", @@ -914,7 +914,7 @@ "T2B1_es_test_recovery.py::test_recovery_bip39": "1d60d8f5eb658ed44eba51a4ac73a9893c98fbd40b3b8ffc96f9f26d36ffa604", "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "a45747e147ad29beea8329c6ebe657cd9780f44e9e20ba6248f708d1015a9522", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "5f573a064d1b85081484f35e95f5e27c3dff62f301dae4606acf01234cd04352", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "c0b951a6639b3be3871a82907a3ab172654825deb7d2833642cc9f2513077f9f", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "0accfd3c21c9fa3a8a18eb87510803131065973678e660e87d868e1e227f0e5e", "T2B1_es_test_reset_bip39.py::test_reset_bip39": "34c0ef033878298114450c5f4754352cef69d8b79ace14eb2ebfd6600162d032", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9ae04292356d8b353b021626d2165228d9b3e373d4a488fc0e971791e583e988", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "42ebf9db101f9ab1ca38688cd261e16457cee3240cd66d9c7d854e6ffee2ac40", @@ -960,7 +960,7 @@ "T2B1_fr_test_recovery.py::test_recovery_bip39": "cbd5332c79af0d104411a43f862135c499052096748d5b47cbe9efaec45bb5d3", "T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "c105a2013a1270d516f84dd41c1ab6ebf3690cd1dc60ed9d356ec4550bc144f1", "T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "ef586e7a53fa4d827f5dc12ba9f6d59cda8c8a7f7aee9e9861c5edd3a16aa74d", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "ef905d84ac35d10195ee952d93438ffef95e8b36fd8ab5da6622463c814cf934", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "b3034dda94de7183ff8da2c7a2be9179c2748c795675eba420f0ba814f77a1ec", "T2B1_fr_test_reset_bip39.py::test_reset_bip39": "a9c6151e2d78468978330506004f60f7a0215cfe6490dd3ded10ba455c48a5ad", "T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "186a0b58543180d63fdb3a9cc35c4d450f8b0d483fd816359c12cc202cde0902", "T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "59f11a8ee23b085fa36d0bd2b48b4a1a0dc50de1583bdf0ec5d73e3a89a6dbcf", @@ -2309,10 +2309,10 @@ "T2B1_cs_test_protection_levels.py::test_unlocked": "d45aa3fa066835bb5ed5c7f803fcd0693564f2a84c6fae377fc3fa13c6683429", "T2B1_cs_test_protection_levels.py::test_verify_message_t2": "7adb0534531529fdf43625541659156273d7daa7d2d3394c18ce4054372992dd", "T2B1_cs_test_protection_levels.py::test_wipe_device": "0d00b5c915f5b958051384fd9075a3c752777ec3e6b4863e444b7d681e04ab79", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "34ab709710ece59ee0a41693426a8e80a9c2f58ce117dfdaab4cece3944ad387", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "6457d2b208845744d3b31227dca71283f15098671ed26258774c548fe1dd9d18", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "05bfd19b363d73ff984140ee421960b3ba48e585e2c72b5658cca0b0f28fb046", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "5c5e42830fa3e7c72497e9cd4fc50ef17fd487194a10734c845b08b7731338c2", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "3cde97f160d23c031bc9e14e16d2d03fa8bbe229fbd05915e3855c2e6230837a", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "d6de618be8b4936659f42442375169903247549f15e680721c387952b2afcb75", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "000f2d238b51506f1bb5e52fd30d5cb87c56f2be08451eda06232bafbcb9b296", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f0d6aabf51f98318c4d9ba50650fac9751c5a935ee5d2e17fa47afaaa689c825", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_clear_session": "9ec6f277513545d0a4ce3f94de451f47dada0868bda3e989bd458f73566a98b2", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -3700,10 +3700,10 @@ "T2B1_de_test_protection_levels.py::test_unlocked": "eb7f30e5a5194d575f621b11a5b3adcae50692b7a683fc070eef692b95879f0b", "T2B1_de_test_protection_levels.py::test_verify_message_t2": "a5f0fe7d3aa6bb746e3037d780f492f29e6226e499de5567903f3d1e353ac608", "T2B1_de_test_protection_levels.py::test_wipe_device": "8c5ca43ea512e8f466ebc493e13f6ab2e303aace2684e81855e47d722c44c368", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "45bb6e7aa9fd3ee2e1f76780ca8d09555747f185ea1b50820c07424e7c57cee5", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "e15eb73d35defaed6a125eeb0ae2d6bddd0d71337ca097367eb25f61bbfd4c31", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "19e406560b181f3fefa34a049849c39d4258e60201fe2461bbac9f5b5cf217c4", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d6e3f5fc3cd7c4db1f8fb378cc46576c4a226792faf7caef5d4303c5ecf59d68", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "4ddc9d2c4d5f61b5e8001033320196f73010f23777b5f07bbea6c9e12dbf62e4", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "8922069edfde40c340d919d345ae1fa8b68d94dc802b23fe1ad325788a505148", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "93f775a9c28048e4fc12e779277eec8bf4c92587f87a059971d8eeaa74bbd89b", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8c5495c747495a6cecda1dea72e3e87710a86a6bb5c4b456b6302441dc94f078", "T2B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_clear_session": "fc55d72baf2a11881021f5e45439388e0aaf38472e5e08093c2356a5d3af7a5b", "T2B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -5091,10 +5091,10 @@ "T2B1_en_test_protection_levels.py::test_unlocked": "e76b12522fd28fc08af0135271615d63a13a0ba9f013ebd1afe20ef72abe0803", "T2B1_en_test_protection_levels.py::test_verify_message_t2": "5f04a88b0acc2daa3e87c02074a64969aeb34157006adbf15a3655e94f838bdf", "T2B1_en_test_protection_levels.py::test_wipe_device": "bc06c63c7f5b9e7f0ada0d3d342125905b4fc463fb0eb2ba363b300909dedb9c", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "f46dcf489deb91e78719319c6d2d2aa191d714f9592a5f05d283dc6c0abf8d0b", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "689baa82f677f3b63af766300cfff7f3187417560a28d3ed9810803d1ae6b493", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "945db36f4945ad84a17bb0eb81b7d0c2909065f1310e33386d7dfa60a94f9aff", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6b2fb5274c1cff2abac5e6ac564b3610eb7ca430cfb83050e849cc1ee5187c34", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "4838ad2a5ccdeb7f34855a0c1b8222a4a01cc2dd28604b100c1ce02a784503a9", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "56179cc17e5b0774b3ec0a3dcb7d59955afa043843e31605e581bc24b24c2abc", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6cbd79e798c262e608d2f75d1b22bd13029efb7e073a30af52da70bc5cc0e255", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "42f084ece4b861234364d3cf5efe7d8343c644deb1f1fbc63d72f2a360cc1a75", "T2B1_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_clear_session": "c4ec976d3a6d21237c46f4bae10a16d792cda271feae0530cbe570b91fd81a49", "T2B1_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -6482,10 +6482,10 @@ "T2B1_es_test_protection_levels.py::test_unlocked": "7e49c5e3ccebafeafcd1fdd76fbc77cd561c414579adcbecb91c79177ea68fff", "T2B1_es_test_protection_levels.py::test_verify_message_t2": "4fbbae479bace26c116b9771cd10044d1e9d6f3a3cc4ce150f0a294443789ad6", "T2B1_es_test_protection_levels.py::test_wipe_device": "407280cffb503e26c7c5848fc9d71826be24df1410258a6531f7be58002cc82f", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "fd616b91bf4b65c48d24c8455840a1d7630ead87b42547691a37ac55ed74cf46", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "ac5223af0e78ee26456aa81d13deaa739f6d8a9392f6a0d6963b0601a07c3f8c", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "71dbb1ae1a02912c6d7cb3e51abf00a019a7adabb13de592a04006d4c7c2898d", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4cc133317511a1c135e6dc4da3292383cd02241b067dfdaea6c9ef1d7045009c", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "0fb26c034cad1eb818e2a6d8bc08bd58ec376e462e4f2c5cc06d6c2a7c624d62", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "f7b174e2d94c27341ab9438ae7ff60415ba119e243fc8e4d023c01e0c6d2cd13", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e51ca1872306a7d353abe1a2c156a373eebec4fc56811b123a6ccc8d804affda", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "eab673450dd9c8491a6bb346a32be0ee2b81ccc8fef78e037032297a22cad0cb", "T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_clear_session": "980ffef9c644ff1300f931fe756a31fa8b1836dfeda81943e2b223a8ea6fb8ba", "T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -7873,10 +7873,10 @@ "T2B1_fr_test_protection_levels.py::test_unlocked": "a60373cba99b534c687d3543ca00b1a1bfe152e758ef2471766ad75efc4740b6", "T2B1_fr_test_protection_levels.py::test_verify_message_t2": "3e88a839e35eeb0948de1aeb83ac8f06cb91c5a8a4517f488d4e743d2eb15867", "T2B1_fr_test_protection_levels.py::test_wipe_device": "63b8efbe636c36ad664ee33d5f8fbaacfbedfed2236096f3b08e02749f5fb89d", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "44df9b6b2be3af609e30330da20e8768fb486d8cec817bdbecdd5823d6ae2e7b", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "efd213af42e222e07aa6ac4edaf42de619a253c3a6c38bfd11b2b09d948ca17f", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b9d74541282a9fc477f4c162dbaad33804f93a6187b1157c165bba384b3e1d52", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "56ff86599556e4ab457f15954901eb91595501d53032967489a737b18813ab02", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "e81dc319fe69ddc743253fac993233a14d8e3f7f59c0d0a05ebfc06b16438740", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "e24ca689f6a4db15587e42776be179e92006775c0693e5ccff8c051cc4e7f482", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "d66f6fb97e18f8198414a51c35820a68aeaccc4db0ede5513ebe4742a6640346", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e3102e8c7bbfe6474c7ed965db77c481d5db4f4ac9ad6236e3446ba864be123f", "T2B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_clear_session": "f217db103a83feb3187047d23f5ae3c9fa2f9a87dde2a349f4fcfe8d666967d7", "T2B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7973,7 +7973,7 @@ "T2T1_cs_test_recovery.py::test_recovery_bip39": "58e2ee5e462f2e6a8bc870e25c48553a8975300571f84ca95dd863ac01053544", "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "f08eeb1b8fb36878fc420636e8f94f26eba2f94c742146d5bc71bf4223fed350", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "8e44525da87337f4535a5f25f0ac23a341b49c7672e3c16ca086c6fecba3a4e0", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "563a4f887733e4a5550aa1cca1a30a6fc38dcd2315a434762ac7b808304c6070", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "53f95072fda06c168f289ff07e66c94b72fc84c54f899224690e234e7eedb5b1", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "796d2366b938ef928c4f4021157c15b7ec07e343daad5a0ec373ecfdc921a856", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1210e840ca4853cfe1b2d1458e0c5e4df0872ebe36bdba6f3ca4f62989e01f92", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a1977e1ee6f6fb75127bcb40ca551b554acba70a9ab18f0d06d765fb9e855afa", @@ -8022,7 +8022,7 @@ "T2T1_de_test_recovery.py::test_recovery_bip39": "9b1c68e4b89a8d328b7ae32025c2a9cbd3438aabab03d51bd7be36b679a7e17b", "T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "1c17a4527106240500aab5280074afe3699baa2351c006a835a6173654fc024e", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "607e3bc1a785b510fa6a27e386986e168fa572bce9ee352dd74ee1380570bbd3", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "f40ce6f97fbb5e412cd21dab4569d87ea1fa554fd02fb1e54f267e0ecccc6346", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "4b7d136021ea48fb787943494d043a937752534e9b1f1f70a9d7a22f9c7bc3d7", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "e1e62b9f04fccf0fbb14793c83da9df4d8de8bc56083db0d41e342d8fd5f4028", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ede09c533b46478208c9c0d0bc328491f9dc50e5ac19a1bf3c92c1a838bfd9f7", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4edcdd947819cc9e137c013b0899572a2aebfafaa74af5300ec27dd3c90d8541", @@ -8071,7 +8071,7 @@ "T2T1_en_test_recovery.py::test_recovery_bip39": "9878cca47056023ee45e4dfe09dc802897eaa8fee49113d63bc9d4d020121220", "T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "c90651925bf52dc612ecfb242b07d30499d0743aff5d55005d39068882694523", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "d817d1d2c1dda9f7ddcf7893e94061139562cff3f41d2265ef4387fa6e188fc0", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "97d76ca6c74bc46d138b8307a06a257562f8d8b60072ab7d404186eb11a4630a", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "1f48d4a343913f3923addef8d54e36ff614f6ecca07224fa7912c6f1761df149", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "24750faa43d950f4c1cb503e800eb80e8f4ae97a521ce60b3cfa82fa662c96dc", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c902e8c822bcbc93b29678c67740d3ff79bebd137ce61da7947692406794eeb7", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "808f9be629c08ae567dab19cc902d41ae95c7b542e18c5bbe996d7d14972825a", @@ -8120,7 +8120,7 @@ "T2T1_es_test_recovery.py::test_recovery_bip39": "a82be5ecbdf91e860636537758eb19f8aea27a76e78b3c275077bac4982c52ae", "T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "12a96269f52788419523af93d2f34bf2a8c72e9116c6948c5f81d296b5df8f14", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "595438a8dd044db890c02231f473d6c168a833585acfd46dbec0334e70a6bb96", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "fd1fa521d0f66e45f654f8db906c3ada41bd48cc869455cd454bcb9a34bd0c39", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "ccd4e917ec8689bb8bcb9fd763eb8d42f1710732d2d6f0265b58c132d2f8d7f8", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "b12db06135c50bed8492b757cef803fe6ece5e4e571917dad60e6f69c75e63d8", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2c68e0cac7449ad644cdd60be655803589f62f4d02496425a2848783489939c8", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1ae2de2a191816d2483b733740da6f2b139f1e925acf0e2766175e524be11803", @@ -8169,7 +8169,7 @@ "T2T1_fr_test_recovery.py::test_recovery_bip39": "2d933f5cec5d4b6b6ea329fd0b9cbf8b8665f5f729a52e1cfa43b7d34efb6660", "T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "066f91f58af2e3d3e9ab33fcc31673833ee26675f1f5aadfd5cc95f75e7f224e", "T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "c45774823c8c690d9fa7af79133bfd3df9176bb276f7b28edee9f9f37c844111", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "1d32d5ec188b1e26d307db4daf3f3e963c3d668a22546a135362cd2d9c2237ff", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "bf636dbf2d629e4b90db5b923a6bfe24faaccc788765a67110bb28d6471ea533", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "0e42fbc13c2f2eb55e31b1e7318d5256b7c3acbffd5c976ff41739e2bc67e0be", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1af6e282df8052a01a894e2661f89285bedff053f5cbbff3aa328fc369f1096b", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aa033c5921dcc92c1ec3461944849509bed236f55b08fecad8986a93bea13e36", @@ -9592,10 +9592,10 @@ "T2T1_cs_test_protection_levels.py::test_unlocked": "03c60806a17607d7e3b39d76d3d82144ceef92ebbf90bc25ecdd6233bc0081cf", "T2T1_cs_test_protection_levels.py::test_verify_message_t2": "7cbc1f75a41c00a6d53fe6372113fdba190489e8819fb6d4a7f6d9898b0115c1", "T2T1_cs_test_protection_levels.py::test_wipe_device": "e2f47c3779d782bb71d8dfd553560ef36b4d6fa67a629719e380e30af8727229", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "8a7ca41d1faef20d66a704bf34613542d0c9b27dcabc8f66c26723dfde2da74d", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "2f9dea3282bae95ce05e5f99a5ee0732105883605be38e60d893429d2ce8db85", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "c12b25b3736ce13513f0b9024a0371d336fe93e913c282c7cfbc8340aa38d43b", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "da143ff09a3f0e98b783218e82c09f98d501a29c2e588f2edf06e89da9202652", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "42ee2eb397242af181668d52a5198ef2d2d4eee4807137173440f718fe9c0790", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "c899053aa9fa16bc6912447370f78b9078dc2c8972e8293e524da78f59ef3bb0", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9d6aff86fcf5c2b5a048db966c53582e9cd0870770c0fb67f63bef2f19494eb9", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f96f096ff5cd5520971b2afe7fef745152aa0b9a391bf29ca0873a090387446e", "T2T1_cs_test_sdcard.py::test_sd_format": "8f1ca58187e0eb32b6e23e369b1e9a3f68ee244023e2a0d25930d887f9bff5f2", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "f919e4e387fcb3806adb43f7b8f71ae3b14a30970b3d79bb4c9bd063804a084c", @@ -11063,10 +11063,10 @@ "T2T1_de_test_protection_levels.py::test_unlocked": "97cde4874c0952f2da6f2f41845b8ce279e4015ea95ef38bd8c0e0d55039b80d", "T2T1_de_test_protection_levels.py::test_verify_message_t2": "b0298371e1eb13ab94bd944dbfca4079e5e6751003fb9e0a2bb4dc35d02db844", "T2T1_de_test_protection_levels.py::test_wipe_device": "2b6b86e0caebab7123f67264d3082849c56ee4d94ce8da13fede6d1012b866cc", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "08856c389a446913bba55ad50161fe2f686831a7acbfb1c9d49694306c1b20b6", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "35577934f882470d96f88fef4ec72703f44b45643d7a919743f32f459f552652", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "baa0d2e821605d2b27e7c29bd938605c734baa34dbcc6a3631b3a8a73988c486", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9540c75bea51ea9abdbd22a55845916d04830d791d34039866717af85ad65252", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "95b1538f046f71b45ba6d6918216ecd5bf015cc9e9fa5f93d526530b24a0ec4d", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "77fd9a50967e7b157c0636100fff7673b866aeea9034c4926be7a5cc786fd47f", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "d488f32f666f986acd3add811fee31a87e32021f9e9f094202c4b556d0ddcc94", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ddde7c9be65109b09359c0537456306c80c845d0ae4529f9d1d8bad0deabdca5", "T2T1_de_test_sdcard.py::test_sd_format": "3e307eee23db4db1a7f3810af0d90d6720da8e5bd81cbd4e924579ff4528b51c", "T2T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", "T2T1_de_test_sdcard.py::test_sd_protect_unlock": "89dfea5d01815a7927af69127a7fbece5b8ba3bd36713298ea2edc8f860d6d32", @@ -12534,10 +12534,10 @@ "T2T1_en_test_protection_levels.py::test_unlocked": "4488e2b6f06fdff05749ac271d080182f1c95645de37898457ff12f0fb190381", "T2T1_en_test_protection_levels.py::test_verify_message_t2": "cc09f0acf9e48b1355dae0be65a2a97abbe2811808feee08d46ae7146ce6bb6f", "T2T1_en_test_protection_levels.py::test_wipe_device": "7ff017de646b7cf70832605e1750c635d0eb661d51534b56007b49e82b927011", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "3823ebb22af97138caed34210d3a9a72b82f3b1fcbeb1fa5adf14a9774132de7", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "d2a87429b30653408faa45c16db550586774a51d901d1bd9e78a82573bc4e9d3", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "95161e06ad9fa2456248ad2c862ba7945a0bf66b27ec5330cac8d4d75d8d0c4f", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a999c27e056e3d881290bd6836ebb14ac6ac07b6c4d942c57ec78d6af99988a7", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "f5415b5df6f30bb6175cfced072211c24909c7817773a07493c1d1801dc0ff6c", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "b5a1ce24627ae499680f902ee35c1ba852f99a3c1948b1a5131ca53967654a5c", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a09d23fe859d50ea8ad0ae2d109f215633cb198979b5e4eb0240cbb00ada1958", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ea4b0bc5c42a5eda7de719c30331d30f9afac1f092da463aa51cfdbf2bd39b85", "T2T1_en_test_sdcard.py::test_sd_format": "83d0d9b4eab3bf0eafc22d7d95e8b70bce477ba9c8b4ba13eeca9380ad5fdafa", "T2T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", "T2T1_en_test_sdcard.py::test_sd_protect_unlock": "1302f9a0835cac621142a17031d2150553e676261a3eeeefd32fcf1e69c7bd1a", @@ -14023,10 +14023,10 @@ "T2T1_es_test_protection_levels.py::test_unlocked": "6bf1c8d03bbf9a844f5fc4e31fe7faad8d6c49a9d5d8edcd9c0e04e975386632", "T2T1_es_test_protection_levels.py::test_verify_message_t2": "c970730c7f45321957056c9c1c47ed605d50ec6030a61c093cc82e4b910dd26a", "T2T1_es_test_protection_levels.py::test_wipe_device": "9aaa390ea2296772b8715597159be66d6660d5c418ee783eb44d8443afaee71b", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "8ad10ae991db5f43f0047d1b6fbd8969c8c8cdf18dfba33f555a90c2403cb8f0", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "2f9a30a28c168a6aac46828779cee41a00f3c785bc8bb23a30a4efbbe1336292", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e7ef82c1999c0be042ba7bd63a78e0c0d60f18cca853ba21c4461e517c33ef87", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4158d474cffe3c6b852c318316eb910a5c92226742fca69755fcda480577cc39", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "16df9efc20ec71366ae4b2fc62bc5123d1ae592aeb61235de5702d6ed54d2315", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "763634c6354ccf46ce28a610d04163c5bdf17563077e67c19e8a6fab7c1570a5", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6dfdfe05f51bb0b082628490073e17988a3a54fec9b33ef5dcc0ce0a6dfa7aa2", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e4bcceb9f4fde8a712ddaf07a2adfb5b6dd9eac66b88b2a670042d5552e999a7", "T2T1_es_test_sdcard.py::test_sd_format": "96fa6f12c78fc4f0e0d0e65e07d29772b9a27291564a7c12b0ec18a441b4b2fc", "T2T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", "T2T1_es_test_sdcard.py::test_sd_protect_unlock": "7296463f55e2a2142ace309c3a6665e398103e24b015ec0aeff34d2c2537c697", @@ -15494,10 +15494,10 @@ "T2T1_fr_test_protection_levels.py::test_unlocked": "ac2d18bf535dd2478eb723fa3d3779561dec2e724c3c4f52303505e124a31383", "T2T1_fr_test_protection_levels.py::test_verify_message_t2": "43cbe7d1e773a37c12dfebceb242c36af16bbf4e2fdb4b8ecf6f9cece3ba1980", "T2T1_fr_test_protection_levels.py::test_wipe_device": "0ed047d904ef99bb35e8e37dcff3d930706c77be2f4c7312233f2e3c956d1f6e", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "0d8c90037606dd57cb34d308007b8d7d1f0f3e48779de629a1f652464ed6a083", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "59602634b747e62f3b4be575b317633af5f5937beaa75adb1c08afa40b7d3af5", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b2a48dd7210008879b9afd8b255691bc04d057087d0ad020a32ee1cf5488f6e6", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "12dbd403f6acce67e6990c6fb2c557e2159aaf61046619477f381fd05db6bf33", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "1220775f8442b25b1765361de5e02d1a1b594211a19385ef6160a8fac58ea67c", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "d66a3bdb070b2e8c5d32d39c020f1a647c4ad1831a84996c65e93373fb5a9fd0", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "58b11df9604e2c5e65f1210480c9d28612a5b7ccf3a52d10975ad40c6ffa2de6", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "3070f8f8fc769584c251ed995e3067bd74381dc2564a0c806bd7426677d5c2f4", "T2T1_fr_test_sdcard.py::test_sd_format": "9654a743fdad9525d04b1ee8129874d437113d1d3d3cbb0793dca406cfb65d53", "T2T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", "T2T1_fr_test_sdcard.py::test_sd_protect_unlock": "6b793848153a9bbc263cd1c97b536ceaad0e278344e353e8d2ba331b95369836", @@ -15607,7 +15607,7 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39": "d812d59dc25317e82112eb34d337380a4cdf68c2548c824960400f7a0381c976", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "e64d2d3b1069ce3300a8abafa7d96cef3a03981548dad9beee1be2270769d701", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5e5f9492ccfd188144df29ef903235c948f15e016759f112e50c4910cae42c17", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "7698d96943f4014f443cbfd665aba0e14137ad9bd5fad9978479674eb26e3631", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "57e85311eb20f640899575da6dbe2eee0c62b0150766a11cc14183d385c96487", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "074f36b41c2ffdda2d0cc3ee3397a0929c95db959f0ae92d4a7d62735bde8377", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "68cff9707085c5bea2ba2ac12c8c3704251ae59dce2ee5419db29831b2bcfb0d", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8b204bfc21f80016cdbd3265116b1499d273b74c64819dc80deef768fbd3cbae", @@ -15656,7 +15656,7 @@ "T3T1_de_test_recovery.py::test_recovery_bip39": "b89f318ed038b136315a9a5cadb9dc366422b6bd856bdbafca98022574c33828", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "9fdbf2558a31b3a4db2df922aa0279f38bcca571c74011304ecb13aeca3b31d8", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "8d8d067b09b1339ea7b334633543925e0b8c6d1166fae6a27fa319bb9d9116e8", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "4b362065a17881efe1ccf3afef15de55de2ad05ec430e7c30ed26b7d10ba7b1c", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "437fb3f00d185e5d817deb850fe1d2da7e5e9e513a72e028e6297cf78d9d8b15", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "a9ccf20e930e27adae1eed30cf75afa5d9d774086a1b49c50fa229043de0e712", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5a2bef661f4328e9a238f1dd528dd43eecf84b1940d4c7e903a65c8b1ba4c170", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7b88b9f87fc73c0e137181945abb205675dcd67ba43a83b95395709df371a7ea", @@ -15754,7 +15754,7 @@ "T3T1_es_test_recovery.py::test_recovery_bip39": "6624d943b3fd85c709deef35782a4cc267f9391c5a9b8de60696e7de7847608b", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "05e7ee369a43ee2f296ef87e77d22baf4c9e6069e102bc154294f8eb0d91e804", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "42f49a8f3488677b9c01a21a00df7fb70d7d03aee6a67521995ce26e9cb7f3d0", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "fbad73a1feb3d0c3e709c863d26118363bf74241b5fc5d2701c7c373a349a246", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "de3bfb4200717ce216f6ad51c0944b1fbcb9d73c1262a01b238bf21112c0ddea", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "56c69e4dc03b2949706b79a45b789143c098d14dfcec820ce2d06c907e5b070a", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cde3bdd8e2dbfad21b823e971f20a6e8f450aed4835bb8c84a84d560e1621769", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "153ea45212f1074e0ffbca4d9ef7bb28ba28fbd29c37ac107960709aa63cbf3f", @@ -15803,7 +15803,7 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39": "72532c272ac3dc97a8b45c5c268f75bc122a3d03dcf6f89fe539e2dcf41a6888", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "33f278d1b98f44ae61915398409a7cdf1a247b2b49de72e1ad5e4f1002712387", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "4079df31415785686f540253e026b2ce6b66c60e0b45b608e5c269c689af3421", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "d236d09df31bd3e71d1ea74920de5e433edd91ebbe95add38db985db872a1c31", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "3dbde0c11b3260889af6f3f2afec0aab583f840db7fbd7dde18318855d314857", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "6a256de0b7360aee8131545a8ff2e506ec10a63b4dfc37490ee2585f67ecdf99", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "63270631505d8842b24593fde4cff22d150d4c31f4ce1e45ceed10e325468289", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "570db1eab6b53b52b202ec161e0c5d7725c5bea3ccd7431b50d65887877f9458", @@ -17119,10 +17119,10 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "47dcd5b7cf013a81152f000449e4f823d481331d72318ab8845359a17a9d0286", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "db119b55d10692e0a0ef40c09ecd87ed55db89b9341d604fab8ab63d11d13b5c", "T3T1_cs_test_protection_levels.py::test_wipe_device": "0ebc0fdd142d19312c591bec597f35fb7ceb3d71c8bb91628a3e8cc31090426f", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "6579831afac25758dd5167cd5e0f0326bc4eba7a995a0ea721417ad571f4fef4", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "fcb76a16cd0f7d4434291eb18c120abe04fdf416a52f593beaf955dec3584f41", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "963befb26b421b99aba60d473abcc70c8eccf701beca323f4ad0a4257db7d9db", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9dba44fde959bce5e44412f66620000152b1206a4bdc5b34b4625a8366fdb31d", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "3dd0013a5dac7130298a7476f581d18a24d316a47b5ca3f7535b5e9c047fe6e6", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "3560c2feec8b3e76cf61571d692f12a4868c7206728eed1983dc6685cebfb26b", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "33a3d38d2ea40d4aef546c586f7713d2ca6afb7d5d3f7d256b40d6c47a631fff", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "41bdc491beb24110814f18812d48ed9966ca58d24f93f015a60d19471b775160", "T3T1_cs_test_sdcard.py::test_sd_format": "2bf6f6dd008b387e0295865b0926c58e1972c6615b213daa423254cad4828c8b", "T3T1_cs_test_sdcard.py::test_sd_no_format": "d775aa49d5afe8d5ca5e0a0b6c9b2b2cb00614fb9188ddbb7cea06e4d0164944", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "4c755ed046a6e9cf1fa4afafe5b2f6157e5a9ca6093ac6d0b3c8140438c311df", @@ -18483,10 +18483,10 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "64011d4e3bc84b5c02f62e2d3152c335247346f5e435c0f721b4144d9dd7165e", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "c20b035c9f2450a668a79adc18480c290e986ca645d1f71107d257abadce5731", "T3T1_de_test_protection_levels.py::test_wipe_device": "34029ef417717f458064fb4d461c4daffa32275b9d65c3eb895cf9c46101ea67", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "8d496dd3389f28c8b919ca8a2433b086445e601aa1bb68f18a885361a09a0e3e", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "f583ab4ce0e94613965a480a074679ddffb69ab79035f157a777fafee8c6aa11", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "7ae8a6310fe1829968ea5eacf157908af5fe12f7019ef1e6889d20578757d6d8", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "0296e9f12d451924a974c6af8d795cf276195193a61ebd34343aba9935bc2ec0", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "e7f370fc83060941d5ed571be5b5f27d40ff7ea6e9c62d55ea2adfce33e705f5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "6a53a3782beb58a1f4868563057f21a1c5beab181e92f7eb443b2b746dd325c5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6e1a36f745a5d56ca68e4518ff7069b0e7e4706f07da2da37ac67e6e27a73037", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b74728ca7f0ac352b944b1996971b6edb5ee0900cbb40e6c3ed38c05341b54d8", "T3T1_de_test_sdcard.py::test_sd_format": "87fca14832eaba934ac4b811e69e7f373c9c6cf02b4118adb85e2e783d0ce053", "T3T1_de_test_sdcard.py::test_sd_no_format": "abdcff28d21d3c15d835c5ea2df1b5359785cf3013b441783b6cd7be4dd67016", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "9b6a729df60f6bf847d56dcdc2da51ea34583d51d468fccac59a2f56671766ae", @@ -21211,10 +21211,10 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "b5f7523c1963120655c5ddc7fda0853ad01d336a612f09f4b54ca7790a61f44a", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "97ce1e09ca7bf9b8b94a6d55a01b0a28575c9dc25e5aee70e442d23ad7c10d69", "T3T1_es_test_protection_levels.py::test_wipe_device": "97610e6da5f399b060bd8216c74c3d1268d121d0f3ad8cfd530473fe7e431878", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "5f0adaf49a45ea5884902b48ea8673cee4f1a5873fa4a0f2cf51a89ff0dfc5a2", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "beda3cb78ef91ff834ba406541b6c0a620f78513af294c55a554a0733a8ea4f9", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "27385d8e2a9ea9dcabf74b3ccccdf394ce0784ceaa545616f526fe1d0f874e66", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f7a69cdef0bfec3a18dc234000784ccff096788062548aa971c840da687bc9a4", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "c7db58092f700b32138b1686cd67d766d2bf69e853cf1844447cfc28bac29c6f", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "74e9364bd728175f1e684a3400ddb265ba00c4fc1ad92c21895774b1886b3b82", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "50e2b7b9bfeac6a7cfd42350c64491053b4a88194c43aaca4921ffd71cfb78ad", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4425e78e4910563ab65d7a0f2ef98caeb57475bf72defc152752ae3275ed5cbf", "T3T1_es_test_sdcard.py::test_sd_format": "2d3eadebc53baf9e73850df77ebf264316667d92d977ffff807edac30a2ca4eb", "T3T1_es_test_sdcard.py::test_sd_no_format": "fcd7ee499c336d76070703c8c60baa583a267efec1f77a2e92201ba630876640", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "37bb970f069e7957ebcbd2a1934e95a9e7049b5d6bcdb0fb094642da7668d588", @@ -22575,10 +22575,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "35cbeb9d02695d1e32461f9cda335beb65f7eb5c7580a1bed62dbc1dd2b54cb2", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "194d8261551236ade76cbace4e915c634673775cd825f18c0e8678365069c8e1", "T3T1_fr_test_protection_levels.py::test_wipe_device": "2c7147da05699ed5e4e210d2809369817ffce4ece65e210d69313ffb90c36de6", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "708620106135e03c1510aafa0823682c874ed4bb5a08bc41358c13082b8d2d1a", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "cb5ea7cc6827e2561361a902ac3b12ac5cc16065551fda4f3f055343ec738fa1", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f35e3926033de3c927faaaa036995d519b68e7c32185e4d3ee3cbb22959b8712", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "bedabadd122af2b3b62608ca5dd32390034a1e6edb947ee3d8c28fb12b008b32", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "2d6a93577a095b140a058011bcb2add36343d9c93c483aa1898d277d0fa670ac", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "299c3201f848c3f87f10a179a089d5db3880410296e77bc7c5a6d6501af7e1f2", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "64f7becc9c41558d51b2483ee40f305e6bebd0edc5a9473984aeb0a127436f25", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6b103e68defdf52ba3068458b25f97338937d9dcdcd44322a52a53306c8eab07", "T3T1_fr_test_sdcard.py::test_sd_format": "6683e27dce5276f9a5646c90d8c5aa19d8df5af098f5c808304abef02ff09d9f", "T3T1_fr_test_sdcard.py::test_sd_no_format": "cad883696fe6ed7320aeec419e118acdc897b22eea22f5d9cdff84ba5b0504d3", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "9f74d824c66a01638b8e1d1172dca750facfb2b2a6e3759642d688afcbe216c7", From 912535f6d2c217e2b63ef13ce755941a077ab97f Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 6 Jun 2024 15:01:20 +0200 Subject: [PATCH 274/626] Bump release version to 2.7.2 --- core/.changelog.d/3922.fixed | 1 - core/CHANGELOG.T2B1.md | 13 ++++++++++++- core/CHANGELOG.T2T1.md | 12 +++++++++++- core/CHANGELOG.T3T1.md | 14 +++++++++++++- core/CHANGELOG.md | 15 ++++++++++++++- core/embed/firmware/version.h | 2 +- core/translations/signatures.json | 6 +++--- 7 files changed, 54 insertions(+), 9 deletions(-) delete mode 100644 core/.changelog.d/3922.fixed diff --git a/core/.changelog.d/3922.fixed b/core/.changelog.d/3922.fixed deleted file mode 100644 index d79a37945b..0000000000 --- a/core/.changelog.d/3922.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Fixed device authenticity check diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index d4e88ccba3..3be8c153c5 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,7 +4,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.7.1] (14th June 2024) +## [2.7.2] (14th June 2024) + +### Fixed +- Fixed device freeze after setup. [#3925] +- Translation fixes. [#3916] + + +## [2.7.1] (internal release) ### Added - Added basic support for STM32U5. [#3370] @@ -884,4 +891,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3911]: https://github.com/trezor/trezor-firmware/pull/3911 +[#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3922]: https://github.com/trezor/trezor-firmware/pull/3922 +[#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index b6f043594a..20482c0c4d 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -4,7 +4,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.7.1] (14th June 2024) +## [2.7.2] (14th June 2024) + +### Fixed +- Translation fixes. [#3916] + + +## [2.7.1] (internal release) ### Added - Added user adjustable brightness setting. [#3208] @@ -884,4 +890,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3911]: https://github.com/trezor/trezor-firmware/pull/3911 +[#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3922]: https://github.com/trezor/trezor-firmware/pull/3922 +[#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md index 07f170c2f8..2a2607f0c8 100644 --- a/core/CHANGELOG.T3T1.md +++ b/core/CHANGELOG.T3T1.md @@ -4,7 +4,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.7.1] (14th June 2024) +## [2.7.2] (14th June 2024) + +### Fixed +- Fixed device authenticity check. [#3922] +- Wrong XPUB screen title. [#3911] +- Translation fixes. [#3916] + + +## [2.7.1] (internal release) ### Added - Added basic support for STM32U5. [#3370] @@ -878,4 +886,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3911]: https://github.com/trezor/trezor-firmware/pull/3911 +[#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3922]: https://github.com/trezor/trezor-firmware/pull/3922 +[#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 72929f84b8..c3b10400e4 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -4,7 +4,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.7.1] (14th June 2024) +## [2.7.2] (14th June 2024) + +### Fixed +- [T3T1] Fixed device authenticity check. [#3922] +- [T3T1] Wrong XPUB screen title. [#3911] +- [T2B1] Fixed device freeze after setup. [#3925] +- Translation fixes. [#3916] + + +## [2.7.1] (internal release) ### Added - [T2T1] Added user adjustable brightness setting. [#3208] @@ -894,4 +903,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3911]: https://github.com/trezor/trezor-firmware/pull/3911 +[#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3922]: https://github.com/trezor/trezor-firmware/pull/3922 +[#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 diff --git a/core/embed/firmware/version.h b/core/embed/firmware/version.h index 46eeb5f85c..de87194b63 100644 --- a/core/embed/firmware/version.h +++ b/core/embed/firmware/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 7 -#define VERSION_PATCH 1 +#define VERSION_PATCH 2 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 2 diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 8f249d4318..53407648b8 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "7fba6f82bbd54d09ca75a1454a0af359fd187dea5b689f4f19552b5ae1d8e2f0", - "datetime": "2024-06-06T15:24:25.976163", - "commit": "0e530269a8291e7d2bb1960ab54ed10af0b6785b" + "merkle_root": "47dc6ffabb554cd7f098a2fa87b96b7bfd8de82e94286a20355c5078f8df8d16", + "datetime": "2024-06-07T13:10:46.799873", + "commit": "a700d45e9d441b49a38e1bb74fbee250afdbd7ba" }, "history": [ { From 8a7db4f1d3ac2ff2e8b154e8f10aeb56b5cd4fcd Mon Sep 17 00:00:00 2001 From: Marek Polak <marek.polak@satoshilabs.com> Date: Fri, 7 Jun 2024 11:56:09 +0200 Subject: [PATCH 275/626] chore(core): remove unused checks [no changelog] --- core/src/apps/bitcoin/sign_tx/approvers.py | 79 +--------------------- 1 file changed, 2 insertions(+), 77 deletions(-) diff --git a/core/src/apps/bitcoin/sign_tx/approvers.py b/core/src/apps/bitcoin/sign_tx/approvers.py index 38078478ba..f7b37607ba 100644 --- a/core/src/apps/bitcoin/sign_tx/approvers.py +++ b/core/src/apps/bitcoin/sign_tx/approvers.py @@ -1,18 +1,13 @@ from micropython import const from typing import TYPE_CHECKING -from trezor.crypto.curve import bip340, secp256k1 -from trezor.crypto.hashlib import sha256 -from trezor.utils import HashWriter from trezor.wire import DataError, ProcessError from apps.common import safety_checks -from .. import writers from ..common import input_is_external_unverified -from ..keychain import SLIP44_TESTNET, validate_path_against_script_type +from ..keychain import validate_path_against_script_type from . import helpers, tx_weight -from .sig_hasher import BitcoinSigHasher from .tx_info import OriginalTxInfo if TYPE_CHECKING: @@ -409,17 +404,9 @@ class CoinJoinApprover(Approver): # Largest possible weight of an output supported by Trezor (P2TR or P2WSH). MAX_OUTPUT_WEIGHT = 4 * (8 + 1 + 1 + 1 + 32) - # Masks for the signable and no_fee bits in coinjoin_flags. - COINJOIN_FLAGS_SIGNABLE = const(0x01) + # Mask for the no_fee bits in coinjoin_flags. COINJOIN_FLAGS_NO_FEE = const(0x02) - # The public key used for verifying coinjoin requests in production on mainnet. - COINJOIN_REQ_PUBKEY = b"\x02W\x03\xbb\xe1[\xb0\x8e\x98!\xfed\xaf\xf6\xb2\xef\x1a1`\xe3y\x9d\xd8\xf0\xce\xbf,y\xe8g\xdd\x12]" - - # The public key used for verifying coinjoin requests on testnet and in debug mode. - # secp256k1 public key of m/0h for "all all ... all" seed. - COINJOIN_REQ_PUBKEY_TEST = b"\x03\x0f\xdf^(\x9bZ\xefSb\x90\x95:\xe8\x1c\xe6\x0e\x84\x1f\xf9V\xf3f\xac\x12?\xa6\x9d\xb3\xc7\x9f!\xb0" - def __init__( self, tx: SignTx, @@ -435,46 +422,14 @@ def __init__( self.authorization = authorization self.coordination_fee_base = 0 - # Begin hashing the coinjoin request. - self.h_request = HashWriter(sha256(b"CJR1")) # "CJR1" = Coinjoin Request v1. - writers.write_bytes_prefixed( - self.h_request, authorization.params.coordinator.encode() - ) - writers.write_uint32(self.h_request, coin.slip44) - writers.write_uint32(self.h_request, self.request.fee_rate) - writers.write_uint64(self.h_request, self.request.no_fee_threshold) - writers.write_uint64(self.h_request, self.request.min_registrable_amount) - writers.write_bytes_fixed(self.h_request, self.request.mask_public_key, 33) - writers.write_compact_size(self.h_request, tx.inputs_count) - # Upper bound on the user's contribution to the weight of the transaction. self.our_weight = tx_weight.TxWeightCalculator() - def _add_input(self, txi: TxInput) -> None: - super()._add_input(txi) - writers.write_uint8(self.h_request, txi.coinjoin_flags) - async def add_internal_input(self, txi: TxInput, node: bip32.HDNode) -> None: self.our_weight.add_input(txi) if not self.authorization.check_internal_input(txi): raise ProcessError("Unauthorized path") - # Compute the masking bit for the signable bit in coinjoin flags. - internal_private_key = node.private_key() - output_private_key = bip340.tweak_secret_key(internal_private_key) - shared_secret = secp256k1.multiply( - output_private_key, self.request.mask_public_key - ) - h_mask = HashWriter(sha256()) - writers.write_bytes_fixed(h_mask, shared_secret[1:33], 32) - writers.write_bytes_reversed(h_mask, txi.prev_hash, writers.TX_HASH_SIZE) - writers.write_uint32(h_mask, txi.prev_index) - mask = h_mask.get_digest()[0] & 1 - - # Ensure that the input can be signed. - if bool(txi.coinjoin_flags & self.COINJOIN_FLAGS_SIGNABLE) ^ mask != 1: - raise ProcessError("Unauthorized input") - # Add to coordination_fee_base, except for remixes and small inputs which are # not charged a coordination fee. no_fee = bool(txi.coinjoin_flags & self.COINJOIN_FLAGS_NO_FEE) @@ -509,33 +464,6 @@ async def approve_orig_txids( ) -> None: pass - def _verify_coinjoin_request(self, tx_info: TxInfo): - if not isinstance(tx_info.sig_hasher, BitcoinSigHasher): - raise ProcessError("Unexpected signature hasher.") - - # Finish hashing the coinjoin request. - writers.write_bytes_fixed( - self.h_request, tx_info.sig_hasher.h_prevouts.get_digest(), 32 - ) - writers.write_bytes_fixed( - self.h_request, tx_info.sig_hasher.h_outputs.get_digest(), 32 - ) - - # Verify the coinjoin request signature. - if __debug__ or self.coin.slip44 == SLIP44_TESTNET: - if secp256k1.verify( - self.COINJOIN_REQ_PUBKEY_TEST, - self.request.signature, - self.h_request.get_digest(), - ): - return True - - return secp256k1.verify( - self.COINJOIN_REQ_PUBKEY, - self.request.signature, - self.h_request.get_digest(), - ) - async def approve_tx( self, tx_info: TxInfo, @@ -546,9 +474,6 @@ async def approve_tx( await super().approve_tx(tx_info, orig_txs, signer) - if not self._verify_coinjoin_request(tx_info): - raise DataError("Invalid signature in coinjoin request.") - # The mining fee of the transaction as a whole. mining_fee = self.total_in - self.total_out From 4fd68b8f385bc8955ec747393adc30cc13db4f70 Mon Sep 17 00:00:00 2001 From: Marek Polak <marek.polak@satoshilabs.com> Date: Fri, 7 Jun 2024 11:56:26 +0200 Subject: [PATCH 276/626] chore(legacy): remove unused checks [no changelog] --- legacy/firmware/signing.c | 95 +-------------------------------------- 1 file changed, 1 insertion(+), 94 deletions(-) diff --git a/legacy/firmware/signing.c b/legacy/firmware/signing.c index ca8a7a2bf2..4d7d700e15 100644 --- a/legacy/firmware/signing.c +++ b/legacy/firmware/signing.c @@ -166,7 +166,6 @@ static secbool is_coinjoin; // Is this a CoinJoin transaction? static uint64_t coinjoin_coordination_fee_base; static AuthorizeCoinJoin coinjoin_authorization; static CoinJoinRequest coinjoin_request; -static Hasher coinjoin_request_hasher; /* A marker for in_address_n_count to indicate a mismatch in bip32 paths in input */ @@ -1362,24 +1361,6 @@ static bool init_coinjoin(const SignTx *msg, sizeof(coinjoin_authorization)); memcpy(&coinjoin_request, &msg->coinjoin_request, sizeof(coinjoin_request)); - // Begin hashing the CoinJoin request. - hasher_Init(&coinjoin_request_hasher, HASHER_SHA2); - hasher_Update(&coinjoin_request_hasher, (const uint8_t *)"CJR1", 4); - size_t coordinator_len = - strnlen(authorization->coordinator, sizeof(authorization->coordinator)); - tx_script_hash(&coinjoin_request_hasher, coordinator_len, - (const uint8_t *)authorization->coordinator); - uint32_t slip44 = coin->coin_type & PATH_UNHARDEN_MASK; - hasher_Update(&coinjoin_request_hasher, (uint8_t *)&slip44, sizeof(slip44)); - hasher_Update(&coinjoin_request_hasher, - (const uint8_t *)&coinjoin_request.fee_rate, 4); - hasher_Update(&coinjoin_request_hasher, - (const uint8_t *)&coinjoin_request.no_fee_threshold, 8); - hasher_Update(&coinjoin_request_hasher, - (const uint8_t *)&coinjoin_request.min_registrable_amount, 8); - hasher_Update(&coinjoin_request_hasher, - coinjoin_request.mask_public_key.bytes, 33); - ser_length_hash(&coinjoin_request_hasher, msg->inputs_count); return true; } @@ -1440,7 +1421,6 @@ void signing_init(const SignTx *msg, const CoinInfo *_coin, const HDNode *_root, memzero(&resp, sizeof(TxRequest)); memzero(&coinjoin_authorization, sizeof(coinjoin_authorization)); memzero(&coinjoin_request, sizeof(coinjoin_request)); - memzero(&coinjoin_request_hasher, sizeof(coinjoin_request_hasher)); is_replacement = false; unlocked_schema = unlock; signing = true; @@ -1883,47 +1863,13 @@ static bool tx_info_check_outputs_hash(TxInfo *tx_info) { } static bool coinjoin_add_input(TxInputType *txi) { - // Masks for the signable and no_fee bits in coinjoin_flags. - const uint8_t COINJOIN_FLAGS_SIGNABLE = 0x01; + // Mask for the no_fee bits in coinjoin_flags. const uint8_t COINJOIN_FLAGS_NO_FEE = 0x02; - hasher_Update(&coinjoin_request_hasher, (uint8_t *)&txi->coinjoin_flags, 1); - if (txi->script_type == InputScriptType_EXTERNAL) { return true; } - // Compute the masking bit for the signable bit in coinjoin flags. - static CONFIDENTIAL uint8_t output_private_key[32] = {0}; - uint8_t shared_secret[65] = {0}; - bool res = (zkp_bip340_tweak_private_key(node.private_key, NULL, - output_private_key) == 0); - res = res && (ecdh_multiply(&secp256k1, output_private_key, - coinjoin_request.mask_public_key.bytes, - shared_secret) == 0); - memzero(&output_private_key, sizeof(output_private_key)); - if (!res) { - fsm_sendFailure(FailureType_Failure_ProcessError, - _("Failed to derive shared secret.")); - signing_abort(); - return false; - } - - Hasher mask_hasher = {0}; - uint8_t mask[SHA256_DIGEST_LENGTH] = {0}; - hasher_Init(&mask_hasher, HASHER_SHA2); - hasher_Update(&mask_hasher, shared_secret + 1, 32); - tx_prevout_hash(&mask_hasher, txi); - hasher_Final(&mask_hasher, mask); - - // Ensure that the input can be signed. - bool signable = (txi->coinjoin_flags ^ mask[0]) & COINJOIN_FLAGS_SIGNABLE; - if (!signable) { - fsm_sendFailure(FailureType_Failure_ProcessError, _("Unauthorized input")); - signing_abort(); - return false; - } - // Add to coordination_fee_base, except for remixes and small inputs which are // not charged a coordination fee. bool no_fee = txi->coinjoin_flags & COINJOIN_FLAGS_NO_FEE; @@ -2585,45 +2531,6 @@ static bool coinjoin_confirm_tx(void) { // Largest possible weight of an output supported by Trezor (P2TR or P2WSH). const uint64_t MAX_OUTPUT_WEIGHT = 4 * (8 + 1 + 1 + 1 + 32); - // The public key used for verifying coinjoin requests in production on - // mainnet. - const uint8_t COINJOIN_REQ_PUBKEY[] = { - 0x02, 0x57, 0x03, 0xbb, 0xe1, 0x5b, 0xb0, 0x8e, 0x98, 0x21, 0xfe, - 0x64, 0xaf, 0xf6, 0xb2, 0xef, 0x1a, 0x31, 0x60, 0xe3, 0x79, 0x9d, - 0xd8, 0xf0, 0xce, 0xbf, 0x2c, 0x79, 0xe8, 0x67, 0xdd, 0x12, 0x5d}; - - // The public key used for verifying coinjoin requests on testnet and in debug - // mode. secp256k1 public key of m/0h for "all all ... all" seed. - const uint8_t COINJOIN_REQ_PUBKEY_TEST[] = { - 0x03, 0x0f, 0xdf, 0x5e, 0x28, 0x9b, 0x5a, 0xef, 0x53, 0x62, 0x90, - 0x95, 0x3a, 0xe8, 0x1c, 0xe6, 0x0e, 0x84, 0x1f, 0xf9, 0x56, 0xf3, - 0x66, 0xac, 0x12, 0x3f, 0xa6, 0x9d, 0xb3, 0xc7, 0x9f, 0x21, 0xb0}; - - // Finish hashing the CoinJoin request. - hasher_Update(&coinjoin_request_hasher, info.hash_prevouts, - sizeof(info.hash_prevouts)); - hasher_Update(&coinjoin_request_hasher, info.hash_outputs, - sizeof(info.hash_outputs)); - - // Verify the CoinJoin request signature. - uint8_t coinjoin_request_digest[SHA256_DIGEST_LENGTH] = {0}; - hasher_Final(&coinjoin_request_hasher, coinjoin_request_digest); - if ((DEBUG_LINK || coin->coin_type == SLIP44_TESTNET) && - ecdsa_verify_digest(&secp256k1, COINJOIN_REQ_PUBKEY_TEST, - coinjoin_request.signature.bytes, - coinjoin_request_digest) == 0) { - // success - } else if (ecdsa_verify_digest(&secp256k1, COINJOIN_REQ_PUBKEY, - coinjoin_request.signature.bytes, - coinjoin_request_digest) == 0) { - // success - } else { - fsm_sendFailure(FailureType_Failure_DataError, - _("Invalid signature in coinjoin request.")); - signing_abort(); - return false; - } - if (has_unverified_external_input) { fsm_sendFailure(FailureType_Failure_ProcessError, _("Unverifiable external input.")); From ff659a82d1192e0d314beb9c2f40691ebea65dcb Mon Sep 17 00:00:00 2001 From: Marek Polak <marek.polak@satoshilabs.com> Date: Fri, 7 Jun 2024 13:28:46 +0200 Subject: [PATCH 277/626] chore(tests): remove params for unused checks [no changelog] --- core/tests/test_apps.bitcoin.approver.py | 45 +------------------ tests/device_tests/bitcoin/payment_req.py | 53 ++--------------------- 2 files changed, 6 insertions(+), 92 deletions(-) diff --git a/core/tests/test_apps.bitcoin.approver.py b/core/tests/test_apps.bitcoin.approver.py index 41a2a98e33..7354a846b1 100644 --- a/core/tests/test_apps.bitcoin.approver.py +++ b/core/tests/test_apps.bitcoin.approver.py @@ -3,8 +3,6 @@ import storage.cache from trezor import wire from trezor.crypto import bip32 -from trezor.crypto.curve import bip340, secp256k1 -from trezor.crypto.hashlib import sha256 from trezor.enums import InputScriptType, OutputScriptType from trezor.messages import ( AuthorizeCoinJoin, @@ -13,9 +11,7 @@ TxInput, TxOutput, ) -from trezor.utils import HashWriter -from apps.bitcoin import writers from apps.bitcoin.authorization import FEE_RATE_DECIMALS, CoinJoinAuthorization from apps.bitcoin.sign_tx.approvers import CoinJoinApprover from apps.bitcoin.sign_tx.bitcoin import Bitcoin @@ -31,10 +27,6 @@ def setUp(self): self.min_registrable_amount = 5000 self.coordinator_name = "www.example.com" - # Private key for signing and masking CoinJoin requests. - # m/0h for "all all ... all" seed. - self.private_key = b"?S\ti\x8b\xc5o{,\xab\x03\x194\xea\xa8[_:\xeb\xdf\xce\xef\xe50\xf17D\x98`\xb9dj" - self.node = bip32.HDNode( depth=0, fingerprint=0, @@ -43,9 +35,6 @@ def setUp(self): private_key=b"\x01" * 32, curve_name="secp256k1", ) - self.tweaked_node_pubkey = b"\x02" + bip340.tweak_public_key( - self.node.public_key()[1:] - ) self.msg_auth = AuthorizeCoinJoin( coordinator=self.coordinator_name, @@ -61,42 +50,12 @@ def setUp(self): storage.cache.start_session() def make_coinjoin_request(self, inputs): - mask_public_key = secp256k1.publickey(self.private_key) - coinjoin_flags = bytearray() - for txi in inputs: - shared_secret = secp256k1.multiply( - self.private_key, self.tweaked_node_pubkey - )[1:33] - h_mask = HashWriter(sha256()) - writers.write_bytes_fixed(h_mask, shared_secret, 32) - writers.write_bytes_reversed(h_mask, txi.prev_hash, writers.TX_HASH_SIZE) - writers.write_uint32(h_mask, txi.prev_index) - mask = h_mask.get_digest()[0] & 1 - signable = txi.script_type == InputScriptType.SPENDTAPROOT - txi.coinjoin_flags = signable ^ mask - coinjoin_flags.append(txi.coinjoin_flags) - - # Compute CoinJoin request signature. - h_request = HashWriter(sha256(b"CJR1")) - writers.write_bytes_prefixed(h_request, self.coordinator_name.encode()) - writers.write_uint32(h_request, self.coin.slip44) - writers.write_uint32( - h_request, int(self.fee_rate_percent * 10**FEE_RATE_DECIMALS) - ) - writers.write_uint64(h_request, self.no_fee_threshold) - writers.write_uint64(h_request, self.min_registrable_amount) - writers.write_bytes_fixed(h_request, mask_public_key, 33) - writers.write_bytes_prefixed(h_request, coinjoin_flags) - writers.write_bytes_fixed(h_request, sha256().digest(), 32) - writers.write_bytes_fixed(h_request, sha256().digest(), 32) - signature = secp256k1.sign(self.private_key, h_request.get_digest()) - return CoinJoinRequest( fee_rate=int(self.fee_rate_percent * 10**FEE_RATE_DECIMALS), no_fee_threshold=self.no_fee_threshold, min_registrable_amount=self.min_registrable_amount, - mask_public_key=mask_public_key, - signature=signature, + mask_public_key=bytearray(), + signature=bytearray(), ) def test_coinjoin_lots_of_inputs(self): diff --git a/tests/device_tests/bitcoin/payment_req.py b/tests/device_tests/bitcoin/payment_req.py index 5d987706df..73d98859ba 100644 --- a/tests/device_tests/bitcoin/payment_req.py +++ b/tests/device_tests/bitcoin/payment_req.py @@ -1,7 +1,7 @@ from collections import namedtuple from hashlib import sha256 -from ecdsa import ECDH, SECP256k1, SigningKey +from ecdsa import SECP256k1, SigningKey from trezorlib import btc, messages @@ -113,60 +113,15 @@ def make_coinjoin_request( no_fee_threshold=1_000_000, min_registrable_amount=5_000, ): - # Reuse the signing key as the masking key to ensure deterministic behavior. - # Note that in production the masking key should be generated randomly. - ecdh = ECDH(curve=SECP256k1) - ecdh.load_private_key(payment_req_signer) - mask_public_key = ecdh.get_public_key().to_string("compressed") - # Process inputs. - h_prevouts = sha256() - coinjoin_flags = bytearray() - for i, (txi, script_pubkey) in enumerate(zip(inputs, input_script_pubkeys)): - # Add input to prevouts hash. - h_prevouts.update(bytes(reversed(txi.prev_hash))) - h_prevouts.update(txi.prev_index.to_bytes(4, "little")) - - # Set signable flag in coinjoin_flags. - if len(script_pubkey) == 34 and script_pubkey.startswith(b"\x51\x20"): - ecdh.load_received_public_key_bytes(b"\x02" + script_pubkey[2:]) - shared_secret = ecdh.generate_sharedsecret_bytes() - h_mask = sha256(shared_secret) - h_mask.update(bytes(reversed(txi.prev_hash))) - h_mask.update(txi.prev_index.to_bytes(4, "little")) - mask = h_mask.digest()[0] & 1 - signable = bool(txi.address_n) - txi.coinjoin_flags = signable ^ mask - else: - txi.coinjoin_flags = 0 - + for i, txi in enumerate(inputs): # Set no_fee flag in coinjoin_flags. txi.coinjoin_flags |= (i in no_fee_indices) << 1 - coinjoin_flags.append(txi.coinjoin_flags) - - # Process outputs. - h_outputs = sha256() - for txo, script_pubkey in zip(outputs, output_script_pubkeys): - h_outputs.update(txo.amount.to_bytes(8, "little")) - hash_bytes_prefixed(h_outputs, script_pubkey) - - # Hash the CoinJoin request. - h_request = sha256(b"CJR1") - hash_bytes_prefixed(h_request, coordinator_name.encode()) - h_request.update(SLIP44.to_bytes(4, "little")) - h_request.update(fee_rate.to_bytes(4, "little")) - h_request.update(no_fee_threshold.to_bytes(8, "little")) - h_request.update(min_registrable_amount.to_bytes(8, "little")) - h_request.update(mask_public_key) - hash_bytes_prefixed(h_request, coinjoin_flags) - h_request.update(h_prevouts.digest()) - h_request.update(h_outputs.digest()) - return messages.CoinJoinRequest( fee_rate=fee_rate, no_fee_threshold=no_fee_threshold, min_registrable_amount=min_registrable_amount, - mask_public_key=mask_public_key, - signature=payment_req_signer.sign_digest_deterministic(h_request.digest()), + mask_public_key=b"", + signature=b"", ) From 9a22d570f29cb1e7b33696ebce29022b84622578 Mon Sep 17 00:00:00 2001 From: Marek Polak <marek.polak@satoshilabs.com> Date: Fri, 7 Jun 2024 11:56:09 +0200 Subject: [PATCH 278/626] chore(core): remove unused checks [no changelog] (cherry picked from commit 8a7db4f1d3ac2ff2e8b154e8f10aeb56b5cd4fcd) --- core/src/apps/bitcoin/sign_tx/approvers.py | 79 +--------------------- 1 file changed, 2 insertions(+), 77 deletions(-) diff --git a/core/src/apps/bitcoin/sign_tx/approvers.py b/core/src/apps/bitcoin/sign_tx/approvers.py index 38078478ba..f7b37607ba 100644 --- a/core/src/apps/bitcoin/sign_tx/approvers.py +++ b/core/src/apps/bitcoin/sign_tx/approvers.py @@ -1,18 +1,13 @@ from micropython import const from typing import TYPE_CHECKING -from trezor.crypto.curve import bip340, secp256k1 -from trezor.crypto.hashlib import sha256 -from trezor.utils import HashWriter from trezor.wire import DataError, ProcessError from apps.common import safety_checks -from .. import writers from ..common import input_is_external_unverified -from ..keychain import SLIP44_TESTNET, validate_path_against_script_type +from ..keychain import validate_path_against_script_type from . import helpers, tx_weight -from .sig_hasher import BitcoinSigHasher from .tx_info import OriginalTxInfo if TYPE_CHECKING: @@ -409,17 +404,9 @@ class CoinJoinApprover(Approver): # Largest possible weight of an output supported by Trezor (P2TR or P2WSH). MAX_OUTPUT_WEIGHT = 4 * (8 + 1 + 1 + 1 + 32) - # Masks for the signable and no_fee bits in coinjoin_flags. - COINJOIN_FLAGS_SIGNABLE = const(0x01) + # Mask for the no_fee bits in coinjoin_flags. COINJOIN_FLAGS_NO_FEE = const(0x02) - # The public key used for verifying coinjoin requests in production on mainnet. - COINJOIN_REQ_PUBKEY = b"\x02W\x03\xbb\xe1[\xb0\x8e\x98!\xfed\xaf\xf6\xb2\xef\x1a1`\xe3y\x9d\xd8\xf0\xce\xbf,y\xe8g\xdd\x12]" - - # The public key used for verifying coinjoin requests on testnet and in debug mode. - # secp256k1 public key of m/0h for "all all ... all" seed. - COINJOIN_REQ_PUBKEY_TEST = b"\x03\x0f\xdf^(\x9bZ\xefSb\x90\x95:\xe8\x1c\xe6\x0e\x84\x1f\xf9V\xf3f\xac\x12?\xa6\x9d\xb3\xc7\x9f!\xb0" - def __init__( self, tx: SignTx, @@ -435,46 +422,14 @@ def __init__( self.authorization = authorization self.coordination_fee_base = 0 - # Begin hashing the coinjoin request. - self.h_request = HashWriter(sha256(b"CJR1")) # "CJR1" = Coinjoin Request v1. - writers.write_bytes_prefixed( - self.h_request, authorization.params.coordinator.encode() - ) - writers.write_uint32(self.h_request, coin.slip44) - writers.write_uint32(self.h_request, self.request.fee_rate) - writers.write_uint64(self.h_request, self.request.no_fee_threshold) - writers.write_uint64(self.h_request, self.request.min_registrable_amount) - writers.write_bytes_fixed(self.h_request, self.request.mask_public_key, 33) - writers.write_compact_size(self.h_request, tx.inputs_count) - # Upper bound on the user's contribution to the weight of the transaction. self.our_weight = tx_weight.TxWeightCalculator() - def _add_input(self, txi: TxInput) -> None: - super()._add_input(txi) - writers.write_uint8(self.h_request, txi.coinjoin_flags) - async def add_internal_input(self, txi: TxInput, node: bip32.HDNode) -> None: self.our_weight.add_input(txi) if not self.authorization.check_internal_input(txi): raise ProcessError("Unauthorized path") - # Compute the masking bit for the signable bit in coinjoin flags. - internal_private_key = node.private_key() - output_private_key = bip340.tweak_secret_key(internal_private_key) - shared_secret = secp256k1.multiply( - output_private_key, self.request.mask_public_key - ) - h_mask = HashWriter(sha256()) - writers.write_bytes_fixed(h_mask, shared_secret[1:33], 32) - writers.write_bytes_reversed(h_mask, txi.prev_hash, writers.TX_HASH_SIZE) - writers.write_uint32(h_mask, txi.prev_index) - mask = h_mask.get_digest()[0] & 1 - - # Ensure that the input can be signed. - if bool(txi.coinjoin_flags & self.COINJOIN_FLAGS_SIGNABLE) ^ mask != 1: - raise ProcessError("Unauthorized input") - # Add to coordination_fee_base, except for remixes and small inputs which are # not charged a coordination fee. no_fee = bool(txi.coinjoin_flags & self.COINJOIN_FLAGS_NO_FEE) @@ -509,33 +464,6 @@ async def approve_orig_txids( ) -> None: pass - def _verify_coinjoin_request(self, tx_info: TxInfo): - if not isinstance(tx_info.sig_hasher, BitcoinSigHasher): - raise ProcessError("Unexpected signature hasher.") - - # Finish hashing the coinjoin request. - writers.write_bytes_fixed( - self.h_request, tx_info.sig_hasher.h_prevouts.get_digest(), 32 - ) - writers.write_bytes_fixed( - self.h_request, tx_info.sig_hasher.h_outputs.get_digest(), 32 - ) - - # Verify the coinjoin request signature. - if __debug__ or self.coin.slip44 == SLIP44_TESTNET: - if secp256k1.verify( - self.COINJOIN_REQ_PUBKEY_TEST, - self.request.signature, - self.h_request.get_digest(), - ): - return True - - return secp256k1.verify( - self.COINJOIN_REQ_PUBKEY, - self.request.signature, - self.h_request.get_digest(), - ) - async def approve_tx( self, tx_info: TxInfo, @@ -546,9 +474,6 @@ async def approve_tx( await super().approve_tx(tx_info, orig_txs, signer) - if not self._verify_coinjoin_request(tx_info): - raise DataError("Invalid signature in coinjoin request.") - # The mining fee of the transaction as a whole. mining_fee = self.total_in - self.total_out From e90cf366243f5686c1452c926dceb8ebfc2279fc Mon Sep 17 00:00:00 2001 From: Marek Polak <marek.polak@satoshilabs.com> Date: Fri, 7 Jun 2024 13:28:46 +0200 Subject: [PATCH 279/626] chore(tests): remove params for unused checks [no changelog] (cherry picked from commit ff659a82d1192e0d314beb9c2f40691ebea65dcb) --- core/tests/test_apps.bitcoin.approver.py | 45 +------------------ tests/device_tests/bitcoin/payment_req.py | 53 ++--------------------- 2 files changed, 6 insertions(+), 92 deletions(-) diff --git a/core/tests/test_apps.bitcoin.approver.py b/core/tests/test_apps.bitcoin.approver.py index 41a2a98e33..7354a846b1 100644 --- a/core/tests/test_apps.bitcoin.approver.py +++ b/core/tests/test_apps.bitcoin.approver.py @@ -3,8 +3,6 @@ import storage.cache from trezor import wire from trezor.crypto import bip32 -from trezor.crypto.curve import bip340, secp256k1 -from trezor.crypto.hashlib import sha256 from trezor.enums import InputScriptType, OutputScriptType from trezor.messages import ( AuthorizeCoinJoin, @@ -13,9 +11,7 @@ TxInput, TxOutput, ) -from trezor.utils import HashWriter -from apps.bitcoin import writers from apps.bitcoin.authorization import FEE_RATE_DECIMALS, CoinJoinAuthorization from apps.bitcoin.sign_tx.approvers import CoinJoinApprover from apps.bitcoin.sign_tx.bitcoin import Bitcoin @@ -31,10 +27,6 @@ def setUp(self): self.min_registrable_amount = 5000 self.coordinator_name = "www.example.com" - # Private key for signing and masking CoinJoin requests. - # m/0h for "all all ... all" seed. - self.private_key = b"?S\ti\x8b\xc5o{,\xab\x03\x194\xea\xa8[_:\xeb\xdf\xce\xef\xe50\xf17D\x98`\xb9dj" - self.node = bip32.HDNode( depth=0, fingerprint=0, @@ -43,9 +35,6 @@ def setUp(self): private_key=b"\x01" * 32, curve_name="secp256k1", ) - self.tweaked_node_pubkey = b"\x02" + bip340.tweak_public_key( - self.node.public_key()[1:] - ) self.msg_auth = AuthorizeCoinJoin( coordinator=self.coordinator_name, @@ -61,42 +50,12 @@ def setUp(self): storage.cache.start_session() def make_coinjoin_request(self, inputs): - mask_public_key = secp256k1.publickey(self.private_key) - coinjoin_flags = bytearray() - for txi in inputs: - shared_secret = secp256k1.multiply( - self.private_key, self.tweaked_node_pubkey - )[1:33] - h_mask = HashWriter(sha256()) - writers.write_bytes_fixed(h_mask, shared_secret, 32) - writers.write_bytes_reversed(h_mask, txi.prev_hash, writers.TX_HASH_SIZE) - writers.write_uint32(h_mask, txi.prev_index) - mask = h_mask.get_digest()[0] & 1 - signable = txi.script_type == InputScriptType.SPENDTAPROOT - txi.coinjoin_flags = signable ^ mask - coinjoin_flags.append(txi.coinjoin_flags) - - # Compute CoinJoin request signature. - h_request = HashWriter(sha256(b"CJR1")) - writers.write_bytes_prefixed(h_request, self.coordinator_name.encode()) - writers.write_uint32(h_request, self.coin.slip44) - writers.write_uint32( - h_request, int(self.fee_rate_percent * 10**FEE_RATE_DECIMALS) - ) - writers.write_uint64(h_request, self.no_fee_threshold) - writers.write_uint64(h_request, self.min_registrable_amount) - writers.write_bytes_fixed(h_request, mask_public_key, 33) - writers.write_bytes_prefixed(h_request, coinjoin_flags) - writers.write_bytes_fixed(h_request, sha256().digest(), 32) - writers.write_bytes_fixed(h_request, sha256().digest(), 32) - signature = secp256k1.sign(self.private_key, h_request.get_digest()) - return CoinJoinRequest( fee_rate=int(self.fee_rate_percent * 10**FEE_RATE_DECIMALS), no_fee_threshold=self.no_fee_threshold, min_registrable_amount=self.min_registrable_amount, - mask_public_key=mask_public_key, - signature=signature, + mask_public_key=bytearray(), + signature=bytearray(), ) def test_coinjoin_lots_of_inputs(self): diff --git a/tests/device_tests/bitcoin/payment_req.py b/tests/device_tests/bitcoin/payment_req.py index 5d987706df..73d98859ba 100644 --- a/tests/device_tests/bitcoin/payment_req.py +++ b/tests/device_tests/bitcoin/payment_req.py @@ -1,7 +1,7 @@ from collections import namedtuple from hashlib import sha256 -from ecdsa import ECDH, SECP256k1, SigningKey +from ecdsa import SECP256k1, SigningKey from trezorlib import btc, messages @@ -113,60 +113,15 @@ def make_coinjoin_request( no_fee_threshold=1_000_000, min_registrable_amount=5_000, ): - # Reuse the signing key as the masking key to ensure deterministic behavior. - # Note that in production the masking key should be generated randomly. - ecdh = ECDH(curve=SECP256k1) - ecdh.load_private_key(payment_req_signer) - mask_public_key = ecdh.get_public_key().to_string("compressed") - # Process inputs. - h_prevouts = sha256() - coinjoin_flags = bytearray() - for i, (txi, script_pubkey) in enumerate(zip(inputs, input_script_pubkeys)): - # Add input to prevouts hash. - h_prevouts.update(bytes(reversed(txi.prev_hash))) - h_prevouts.update(txi.prev_index.to_bytes(4, "little")) - - # Set signable flag in coinjoin_flags. - if len(script_pubkey) == 34 and script_pubkey.startswith(b"\x51\x20"): - ecdh.load_received_public_key_bytes(b"\x02" + script_pubkey[2:]) - shared_secret = ecdh.generate_sharedsecret_bytes() - h_mask = sha256(shared_secret) - h_mask.update(bytes(reversed(txi.prev_hash))) - h_mask.update(txi.prev_index.to_bytes(4, "little")) - mask = h_mask.digest()[0] & 1 - signable = bool(txi.address_n) - txi.coinjoin_flags = signable ^ mask - else: - txi.coinjoin_flags = 0 - + for i, txi in enumerate(inputs): # Set no_fee flag in coinjoin_flags. txi.coinjoin_flags |= (i in no_fee_indices) << 1 - coinjoin_flags.append(txi.coinjoin_flags) - - # Process outputs. - h_outputs = sha256() - for txo, script_pubkey in zip(outputs, output_script_pubkeys): - h_outputs.update(txo.amount.to_bytes(8, "little")) - hash_bytes_prefixed(h_outputs, script_pubkey) - - # Hash the CoinJoin request. - h_request = sha256(b"CJR1") - hash_bytes_prefixed(h_request, coordinator_name.encode()) - h_request.update(SLIP44.to_bytes(4, "little")) - h_request.update(fee_rate.to_bytes(4, "little")) - h_request.update(no_fee_threshold.to_bytes(8, "little")) - h_request.update(min_registrable_amount.to_bytes(8, "little")) - h_request.update(mask_public_key) - hash_bytes_prefixed(h_request, coinjoin_flags) - h_request.update(h_prevouts.digest()) - h_request.update(h_outputs.digest()) - return messages.CoinJoinRequest( fee_rate=fee_rate, no_fee_threshold=no_fee_threshold, min_registrable_amount=min_registrable_amount, - mask_public_key=mask_public_key, - signature=payment_req_signer.sign_digest_deterministic(h_request.digest()), + mask_public_key=b"", + signature=b"", ) From da75d8f4b67410b40a9cfd2954d183d81dd6e8e8 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 10 Jun 2024 11:03:01 +0200 Subject: [PATCH 280/626] chore(common): make unused fields optional [no changelog] --- common/protob/messages-bitcoin.proto | 4 ++-- core/src/trezor/messages.py | 8 ++++---- python/src/trezorlib/messages.py | 8 ++++---- .../src/protos/generated/messages_bitcoin.rs | 14 ++++---------- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/common/protob/messages-bitcoin.proto b/common/protob/messages-bitcoin.proto index 2b3ff3035d..c6c1b7df9d 100644 --- a/common/protob/messages-bitcoin.proto +++ b/common/protob/messages-bitcoin.proto @@ -212,8 +212,8 @@ message SignTx { required uint32 fee_rate = 1; // coordination fee rate in units of 10^-6 percent required uint64 no_fee_threshold = 2; // PlebsDontPayThreshold in Wasabi, the input amount above which the fee rate applies required uint64 min_registrable_amount = 3; // minimum registrable output amount - required bytes mask_public_key = 4; // ephemeral secp256k1 public key used for masking coinjoin_flags, 33 bytes in compressed form - required bytes signature = 5; // the trusted party's signature of the CoinJoin request digest + optional bytes mask_public_key = 4; // ephemeral secp256k1 public key used for masking coinjoin_flags, 33 bytes in compressed form + optional bytes signature = 5; // the trusted party's signature of the CoinJoin request digest } } diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index 8772236bd2..b6c4216370 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -1005,8 +1005,8 @@ class CoinJoinRequest(protobuf.MessageType): fee_rate: "int" no_fee_threshold: "int" min_registrable_amount: "int" - mask_public_key: "bytes" - signature: "bytes" + mask_public_key: "bytes | None" + signature: "bytes | None" def __init__( self, @@ -1014,8 +1014,8 @@ def __init__( fee_rate: "int", no_fee_threshold: "int", min_registrable_amount: "int", - mask_public_key: "bytes", - signature: "bytes", + mask_public_key: "bytes | None" = None, + signature: "bytes | None" = None, ) -> None: pass diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 61ea1bb10f..bde2dcf07b 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -1747,8 +1747,8 @@ class CoinJoinRequest(protobuf.MessageType): 1: protobuf.Field("fee_rate", "uint32", repeated=False, required=True), 2: protobuf.Field("no_fee_threshold", "uint64", repeated=False, required=True), 3: protobuf.Field("min_registrable_amount", "uint64", repeated=False, required=True), - 4: protobuf.Field("mask_public_key", "bytes", repeated=False, required=True), - 5: protobuf.Field("signature", "bytes", repeated=False, required=True), + 4: protobuf.Field("mask_public_key", "bytes", repeated=False, required=False, default=None), + 5: protobuf.Field("signature", "bytes", repeated=False, required=False, default=None), } def __init__( @@ -1757,8 +1757,8 @@ def __init__( fee_rate: "int", no_fee_threshold: "int", min_registrable_amount: "int", - mask_public_key: "bytes", - signature: "bytes", + mask_public_key: Optional["bytes"] = None, + signature: Optional["bytes"] = None, ) -> None: self.fee_rate = fee_rate self.no_fee_threshold = no_fee_threshold diff --git a/rust/trezor-client/src/protos/generated/messages_bitcoin.rs b/rust/trezor-client/src/protos/generated/messages_bitcoin.rs index 9840875ee4..ed233a0507 100644 --- a/rust/trezor-client/src/protos/generated/messages_bitcoin.rs +++ b/rust/trezor-client/src/protos/generated/messages_bitcoin.rs @@ -3705,7 +3705,7 @@ pub mod sign_tx { self.min_registrable_amount = ::std::option::Option::Some(v); } - // required bytes mask_public_key = 4; + // optional bytes mask_public_key = 4; pub fn mask_public_key(&self) -> &[u8] { match self.mask_public_key.as_ref() { @@ -3741,7 +3741,7 @@ pub mod sign_tx { self.mask_public_key.take().unwrap_or_else(|| ::std::vec::Vec::new()) } - // required bytes signature = 5; + // optional bytes signature = 5; pub fn signature(&self) -> &[u8] { match self.signature.as_ref() { @@ -3826,12 +3826,6 @@ pub mod sign_tx { if self.min_registrable_amount.is_none() { return false; } - if self.mask_public_key.is_none() { - return false; - } - if self.signature.is_none() { - return false; - } true } @@ -13416,8 +13410,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ify\x1a\xd2\x01\n\x0fCoinJoinRequest\x12\x19\n\x08fee_rate\x18\x01\x20\ \x02(\rR\x07feeRate\x12(\n\x10no_fee_threshold\x18\x02\x20\x02(\x04R\x0e\ noFeeThreshold\x124\n\x16min_registrable_amount\x18\x03\x20\x02(\x04R\ - \x14minRegistrableAmount\x12&\n\x0fmask_public_key\x18\x04\x20\x02(\x0cR\ - \rmaskPublicKey\x12\x1c\n\tsignature\x18\x05\x20\x02(\x0cR\tsignature\"\ + \x14minRegistrableAmount\x12&\n\x0fmask_public_key\x18\x04\x20\x01(\x0cR\ + \rmaskPublicKey\x12\x1c\n\tsignature\x18\x05\x20\x01(\x0cR\tsignature\"\ \xd4\x05\n\tTxRequest\x12T\n\x0crequest_type\x18\x01\x20\x01(\x0e21.hw.t\ rezor.messages.bitcoin.TxRequest.RequestTypeR\x0brequestType\x12T\n\x07d\ etails\x18\x02\x20\x01(\x0b2:.hw.trezor.messages.bitcoin.TxRequest.TxReq\ From 000aa4ed21cb179354640917c8223aa9db0656d6 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 9 Jun 2024 18:14:17 +0200 Subject: [PATCH 281/626] fix(core/prodtest): fix touch_version command --- core/embed/prodtest/.changelog.d/3932.fixed | 1 + core/embed/prodtest/main.c | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 core/embed/prodtest/.changelog.d/3932.fixed diff --git a/core/embed/prodtest/.changelog.d/3932.fixed b/core/embed/prodtest/.changelog.d/3932.fixed new file mode 100644 index 0000000000..242fda1813 --- /dev/null +++ b/core/embed/prodtest/.changelog.d/3932.fixed @@ -0,0 +1 @@ +Fix TOUCH_VERSION command diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index b4209ac718..2712703d1e 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -391,8 +391,10 @@ static void test_sensitivity(const char *args) { } static void touch_version(void) { + touch_power_on(); uint8_t version = touch_get_version(); vcp_println("OK %d", version); + touch_power_off(); } #endif From b0b2ffd38f3d3435b1f7da4263e11dc02b4e571c Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 9 Jun 2024 18:23:40 +0200 Subject: [PATCH 282/626] feat(core/prodtest): add reboot command --- core/embed/prodtest/.changelog.d/3932.added | 1 + core/embed/prodtest/README.md | 7 +++++++ core/embed/prodtest/main.c | 5 ++++- core/embed/trezorhal/stm32f4/supervise.c | 11 +++++++++++ core/embed/trezorhal/stm32f4/supervise.h | 3 +++ 5 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 core/embed/prodtest/.changelog.d/3932.added diff --git a/core/embed/prodtest/.changelog.d/3932.added b/core/embed/prodtest/.changelog.d/3932.added new file mode 100644 index 0000000000..696afa7823 --- /dev/null +++ b/core/embed/prodtest/.changelog.d/3932.added @@ -0,0 +1 @@ +Added REBOOT command diff --git a/core/embed/prodtest/README.md b/core/embed/prodtest/README.md index 1ff4dd4339..ca551b68e6 100644 --- a/core/embed/prodtest/README.md +++ b/core/embed/prodtest/README.md @@ -250,6 +250,13 @@ WIPE OK ``` +### REBOOT +This command initiates device reboot. No response, as the device reboots immediately after receiving the command. +Example: +``` +REBOOT +``` + ### OPTIGAID READ Returns the coprocessor UID of the Optiga chip as a 27 byte hexadecimal string. diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 2712703d1e..61a746e504 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -604,6 +604,8 @@ static void test_otp_write_device_variant(const char *args) { vcp_println("OK"); } +static void test_reboot(void) { svc_reboot(); } + void cpuid_read(void) { uint32_t cpuid[3]; cpuid[0] = LL_GetUID_Word0(); @@ -762,7 +764,8 @@ int main(void) { } else if (startswith(line, "WIPE")) { test_wipe(); - + } else if (startswith(line, "REBOOT")) { + test_reboot(); } else { vcp_println("UNKNOWN"); } diff --git a/core/embed/trezorhal/stm32f4/supervise.c b/core/embed/trezorhal/stm32f4/supervise.c index d4a72df17d..e3190a3917 100644 --- a/core/embed/trezorhal/stm32f4/supervise.c +++ b/core/embed/trezorhal/stm32f4/supervise.c @@ -41,6 +41,14 @@ void svc_reboot_to_bootloader(void) { } } +void svc_reboot(void) { + if (is_mode_unprivileged() && !is_mode_handler()) { + __asm__ __volatile__("svc %0" ::"i"(SVC_REBOOT) : "memory"); + } else { + NVIC_SystemReset(); + } +} + void SVC_C_Handler(uint32_t *stack) { uint8_t svc_number = ((uint8_t *)stack[6])[-2]; switch (svc_number) { @@ -85,6 +93,9 @@ void SVC_C_Handler(uint32_t *stack) { case SVC_GET_SYSTICK_VAL: systick_val_copy = SysTick->VAL; break; + case SVC_REBOOT: + NVIC_SystemReset(); + break; default: stack[0] = 0xffffffff; break; diff --git a/core/embed/trezorhal/stm32f4/supervise.h b/core/embed/trezorhal/stm32f4/supervise.h index c4a70650ed..9affd8b770 100644 --- a/core/embed/trezorhal/stm32f4/supervise.h +++ b/core/embed/trezorhal/stm32f4/supervise.h @@ -6,6 +6,7 @@ #define SVC_SHUTDOWN 4 #define SVC_REBOOT_TO_BOOTLOADER 5 #define SVC_GET_SYSTICK_VAL 6 +#define SVC_REBOOT 7 #include <string.h> #include "boot_args.h" @@ -70,6 +71,8 @@ static inline void svc_shutdown(void) { void svc_reboot_to_bootloader(void); +void svc_reboot(void); + static inline uint32_t svc_get_systick_val(void) { if (is_mode_unprivileged() && !is_mode_handler()) { __asm__ __volatile__("svc %0" ::"i"(SVC_GET_SYSTICK_VAL) : "memory"); From f556a1b4cc59d707da1db8ae663b172f6692189e Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 10 Jun 2024 11:17:20 +0200 Subject: [PATCH 283/626] docs(core/prodtest): update changelog for v0.2.7 --- core/embed/prodtest/.changelog.d/3932.added | 1 - core/embed/prodtest/.changelog.d/3932.fixed | 1 - core/embed/prodtest/CHANGELOG.md | 10 ++++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) delete mode 100644 core/embed/prodtest/.changelog.d/3932.added delete mode 100644 core/embed/prodtest/.changelog.d/3932.fixed diff --git a/core/embed/prodtest/.changelog.d/3932.added b/core/embed/prodtest/.changelog.d/3932.added deleted file mode 100644 index 696afa7823..0000000000 --- a/core/embed/prodtest/.changelog.d/3932.added +++ /dev/null @@ -1 +0,0 @@ -Added REBOOT command diff --git a/core/embed/prodtest/.changelog.d/3932.fixed b/core/embed/prodtest/.changelog.d/3932.fixed deleted file mode 100644 index 242fda1813..0000000000 --- a/core/embed/prodtest/.changelog.d/3932.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix TOUCH_VERSION command diff --git a/core/embed/prodtest/CHANGELOG.md b/core/embed/prodtest/CHANGELOG.md index bfa135d457..159239f02e 100644 --- a/core/embed/prodtest/CHANGELOG.md +++ b/core/embed/prodtest/CHANGELOG.md @@ -1,4 +1,13 @@ +## 0.2.7 [10th June 2024] + +### Added +- Added REBOOT command [#3932] + +### Fixed +- Fix TOUCH_VERSION command [#3932] + + ## 0.2.6 [6th May 2024] ### Added @@ -45,3 +54,4 @@ [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3769]: https://github.com/trezor/trezor-firmware/pull/3769 [#3770]: https://github.com/trezor/trezor-firmware/pull/3770 +[#3932]: https://github.com/trezor/trezor-firmware/pull/3932 From df051077ea42bcf360bc3afd4366c68c2fac5841 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 10 Jun 2024 11:20:15 +0200 Subject: [PATCH 284/626] chore(core/prodtest): bump version after release --- core/embed/prodtest/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/prodtest/version.h b/core/embed/prodtest/version.h index d09aee967a..55036fa286 100644 --- a/core/embed/prodtest/version.h +++ b/core/embed/prodtest/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 -#define VERSION_PATCH 7 +#define VERSION_PATCH 8 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 0 From 84c182fdac9790c713b4b6fdc6d4b791bf0f4c68 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 7 Jun 2024 22:26:33 +0200 Subject: [PATCH 285/626] fix(core): reduce animation frame requests when swiping [no changelog] --- core/embed/rust/src/ui/model_mercury/component/swipe_content.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs index e3456fb362..aaec68a888 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs @@ -159,7 +159,6 @@ impl<T: Component> Component for SwipeContent<T> { _ => {} } ctx.request_paint(); - ctx.request_anim_frame(); } match event { From dfe6826101ea9f1df09c7ec9baf632c7bc7ae891 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 7 Jun 2024 15:11:40 +0200 Subject: [PATCH 286/626] fix(core): add missing swipe right to address QR screen - mercury ui --- core/.changelog.d/3919.fixed | 1 + core/embed/rust/src/ui/model_mercury/flow/get_address.rs | 1 + 2 files changed, 2 insertions(+) create mode 100644 core/.changelog.d/3919.fixed diff --git a/core/.changelog.d/3919.fixed b/core/.changelog.d/3919.fixed new file mode 100644 index 0000000000..9bb06f0cdd --- /dev/null +++ b/core/.changelog.d/3919.fixed @@ -0,0 +1 @@ +[T3T1] fixed swipe back from address QR code screen diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 3d1636cbad..155521538d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -231,6 +231,7 @@ impl GetAddress { .with_border(QR_BORDER), ) .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)); // AccountInfo From e7f083c3ca4fe900a34f242bdf0ad74f138251ce Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Fri, 7 Jun 2024 18:10:27 +0200 Subject: [PATCH 287/626] chore(core): bump version to 2.7.3 [no changelog] --- core/embed/firmware/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/firmware/version.h b/core/embed/firmware/version.h index de87194b63..3fbc3611f3 100644 --- a/core/embed/firmware/version.h +++ b/core/embed/firmware/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 7 -#define VERSION_PATCH 2 +#define VERSION_PATCH 3 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 2 From 191dc900a6f8eb1d89b88a3fbfdc4d973b525b4a Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 11 Jun 2024 13:16:23 +0200 Subject: [PATCH 288/626] chore(core): update fixtures.json [no changelog] --- tests/ui_tests/fixtures.json | 70 ++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 24359d2bab..da3eef25ee 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -2008,9 +2008,9 @@ "T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "5c3fbdf422e2bc1aacd54075f35bb1ed40f576aadd0414796c937a20b8dd823c", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "af390c611b41f2ac6f5b03c05591c95a8b18b3d9aa95e99d67d323e98d225d12", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "afc492d0ccb0d83d20c7b511322be2af267374b07a00c470023b3c88a3140301", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c7519f7b30d452001aee3946716e3552544c116111b8d6665849018fedd63b18", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "fed9ec8eb7ab5ab3243fc778229a26e1b8c17357b7b2835a51a78c7a64e266ff", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "762780a54cc2c6c2b5360ac8c1c6522d9785ff6591d54b24b263cb1f62873d41", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "ca01b7fdfcd2fb19fa20ba531b39a3de8563b2f743cc3a6edbc5ea84bbdae7f9", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0701f487c7ada0496492f295f787993528af3363b223e85503b136b437d4fbdf", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "13c69455d3aa010fa5f88c7053adc774a31cfbc4bbc1348347477922c85c890f", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7c327249391ad9a984c2e5444727f26758b678990a49505007fe112bc72c644b", "T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "13c69455d3aa010fa5f88c7053adc774a31cfbc4bbc1348347477922c85c890f", @@ -2020,16 +2020,16 @@ "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "be3b53677099eef3793ba21f3d08dd8f370b9a8cdeeb5340feb54aff26ad4ff5", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "af390c611b41f2ac6f5b03c05591c95a8b18b3d9aa95e99d67d323e98d225d12", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "5ffd0e7897bd42c5a917275f4288be0f92712256fa0c9d4c5221f2ffeb12c85b", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6d252425f9205deae9ee8dd354e3e50fc1686af6210556a6df42494bd27bbdb1", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4e9a362f2147a505b1b5e0696cf1b593249357c9bb54c1a3a178885c7eea5b42", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "ad99f8a9033a97a66be6e8c83f7aa32673fc879d769b3b8be5b0cd79a3384d29", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "19bd64f359786311571d89028e273e5090c6442e038cc53fdfb8dfdf9bbc391e", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c31b93df760c7404b5161a9b56a2d18b35a34b809171bbc6b3b81c2d8318dac6", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "f711bc69728f43be4ff3a83e7a8298f0a837f023734f85c5edd84204797e760c", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e1917a15377b21678869a2b3715127561d4a3adbe792d9fcee5cda73f3f4dd68", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "f7e15054e4f2fbfc0aec1ce913536b13c9e707b6f034038e47bee2fe2745adf2", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "1640d93822b2a06a27e86c26e29415b33eac1f442042cb2448f5d132c4c6d55a", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "9b9b4e24f5420c83cd4c61ca6ba5cd402428b70b05146bdb8022631097e7043d", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "88cf3318185df7068f3857abac912f3b4b12d968b91018654f14e02be643439e", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ca4e10e58a0c3e50332ff9249c1154a32e80686006a8e99cf0bb35d84f8eeb9e", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4b9d8d4d9f440330c5a9fca7ca831360785b8d6dab962f8779eb0fb51cf86f19", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ef9e299a65812dff47ab236d51246fc1960c812272e7d300c9691b3f835b06c", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3c0da9b0270606af2a327d471c81e7eb9bc23c1b560a15d49abf7237d5069e50", "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "ce6c83847f749b2b86133b1203fd177071439a136e9ad3b0abc341da23c4cdea", "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "ea5952e082dbbe5acf3b2005191addea107d37f90961538d94aba08fe9dbc30f", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2953af6fb4d677cae36b61c6e3451151c64d6bfc1b910ea655def66505b7e897", @@ -3399,9 +3399,9 @@ "T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0e3628e04eb301df47d05f6591e2aaaf95fedbb64881a3a9c3ae3c51be4a0167", "T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4a0826caf62574b42880b889e8f1a68fb345c0467649d1a7ee7c951dbda1be0d", "T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c04f3fdd0fd35ee22592336541f2a7e328f0a0b3f5a345c39d3b4f1b74eacd01", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "34a1fe2a98ebf8a4a967cc76da8304771620c37d87030f523ebc7ee481d255b3", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "0cfa236541f2f6a656d5d3ceb4355be447df0c9ba6c7d63c9f586ae36b51fd3d", "T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f92ea12c9cf85036efb50f11d9ec497d90bf05ca0882fee4e6a10e2b6b4f415b", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fbfa5c1501a8ba55027f9318ddd7a8214559ba429305f7062d31c81bc107cf7a", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "ce6c73d7a777ce56fc982a8f2ae9dcd7d83d42ead5f7bfaaa12d9d3bdff48908", "T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5023107c8974c22a41f7cc638a4b6d6feac4f2375beae624de32ff81edc6bdc6", "T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "61bddc148cf700f8a875840067063f0063e7bcecfe3a5578266d16bec3e782f7", "T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5023107c8974c22a41f7cc638a4b6d6feac4f2375beae624de32ff81edc6bdc6", @@ -3411,16 +3411,16 @@ "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "86975eb0d942d627ef84ff1f89e87af9dc3debdfa570e4138580073c7ae38756", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4a0826caf62574b42880b889e8f1a68fb345c0467649d1a7ee7c951dbda1be0d", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "374fefbcc5da54cbb4241d41f65bd002c1e06876dd24cb89319dcdb544ddf249", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c0cb176da06b397b7ee01d40e26934c085c561e17a67f8a7d51e9ca748bb073b", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "9b46bb445b7ff09d3862a326d6d1d2c69ee386899a1b11d7fc6c53163bc44d42", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b52e216a5c16367988fc9e56fb6e8133a78ce5cfcd70ccb6f157a5c9148c5579", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b6d7233799649afc10a09c8b446646962005fa73d7744aec0d0351147a14b353", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "8bed3ce3cac6610e948091db2c889de962af731f3dab12c9d1fc87436155ca81", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0e3d370dc65692eccdddb3883d6164f6cb79123082c65b5bbac6372ecc7374b7", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "879c74a86c42a8276e1d987522e7a0c7593e791b7e9ae3461232760db178ea3f", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "637657c05d54b54e6e3ff2bff7f462ba6b323034626b0cbc18a4d586d424d7c3", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "366920d3ba4d0e454394002cc51ce37fd5a74ddbb3f51572a9cc8304103a1077", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "63fa3355439cb30fc0a75ec06f470c71f5addd796fe2869a8b7bcc11912fcb97", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ed45a8055ea88c95bf2ba187c125a59e55964f47ad8c49685f3764130be8cb5", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "014835480a699eff8259df2161f69bebcb24b5b15aeb1ec571711baaa37922de", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "717f0580435a3f21e5978242e52bd628118e8e66f71bb05e7812752093a34c96", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "92ec37213993f8f3fa7e19600bd7fbad6f783dcdeb4fe1bd735bd77de36fd411", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1ec6376628c1d77646f2de9e9d72081ede6adfd7b85f7a565953cea1e5126b72", "T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "4fae023884340ad9e2c6feec3a82d335e6d558e9eb31fe2b4f50f02b89ff4462", "T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8532888ff10badc8f5191c0a13e63cce2565fe2687aa62c8baad344e823dca9e", "T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7fb893232f7bf3245bfe1c65e2c4b5d97ca6cb71caeec089e2179f67d7adc629", @@ -4790,9 +4790,9 @@ "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "72521d95a5eb9033c358a14acf15b3d44ec291758663844753fa9a5fb149b17b", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "086b3eec1ecf14039c3f168667029b65aa6765e3a7fca1eb918914e7dda083ed", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b65acac85aaa336b5a36a37f217b39d5c65c37d7611e48d71bd39f0fd923cc1e", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "7784669e4afb1eae0655582f379f1a7d687785e13ec949e7fa752ca5868db9cc", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d08a26683b1d323eca068fe20341632cc98d27d7e4db8da3ce471813a128c549", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "577ad41eb7e07b00142e96205842d0fdff4e3355d51e60f79b1105c88c323801", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "abec16082d7844d9ddd2bf4033e3175e9289053708be6ec7646a0dfb60b02135", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c674a3a7e10a4983d018daf9350b789bfcfd0767900364baa3fc07e8ec96c325", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4de2a30fa14e1e7cdc1283ed76032c652a58bb4fe1366fe4536e03667aebaa95", "T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "c674a3a7e10a4983d018daf9350b789bfcfd0767900364baa3fc07e8ec96c325", @@ -4802,16 +4802,16 @@ "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5bc172bf16f3fbfbabd1b0dc67f73d450a3a3c33e490247a51b2ab1594eac447", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "cde269cab6e5f1ccb6b1d360f4c20ad1edbdb89b11270aac2a743ea7097916d2", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "951b0490b691db9a465812f0041e65aafb2716f5c5d2e8218b024f19405bb9d8", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1c7dd2ebbfcc55483d603f51fb0cd334fc8f82e92b5b26fea1fc1942c7100797", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "77d3b42be22976619ac6b2eb18133cd436d8980b7a2db9b23cf34b5468886fdf", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "03b33a18acd888e7056c552db074a839b6973694b17cca464f2424e3c179db48", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a36e576fbc26a44754153ea4e0e8e338ce01bdf4bfa8eba553125a3b28fa9cba", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "87e608594a17a721217724849c04f6764bda34c5205df6f65c9cc01e8c843c98", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e21a10925179b11df8cb8265bbc5b5b28fdd83560f851a59188084bf90474ce9", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3c36a0821a4c806cf921341365c0cfc22c84353fd9a19a62689032f1de89e308", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "133be6fa7420121dfe8aa7682f0b4039459401f2432e00fc5c2744cfbe015984", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0c2683a4cf86c6627caa45d103c2f0194fbb41d74770e6fd7d3357794d3545e7", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5ffe36e3d0d03e0f47040fced278518600d1b5d8162a768126a92022605f7707", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1a045aae28e61a88f3df9c6285980a3e5c8307f94ae96c2cb8adeb3539aae346", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "1a3d4aa3cdfa46211876f90e68484e0b0510da44419b07f65b9e3b6f5a8f83a5", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bcda38d2135ac23807ad3638e49bed1ed8dbb12827b54ced191e9acd2520870c", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "85966bbeef891eb3bf6e0d18ff73311e88d4e3d44661b65bdaf23f0da112cde3", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "08f7755171d23b3157264db6408a7a2330e362a99a8843ab89b5c8b3baef2321", "T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "df5db3a22b80daa13cc5a45fe91d417a4d12adcad1cd6177976840c094929884", "T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f95c49828cd87ae0d90ca369166a6ddccfbcce497ceaacd2561f0c002363d95c", @@ -6181,9 +6181,9 @@ "T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0fc41c5a4fd4ad91da1a783acb800d25b06a77462bcb5e4831290ac68acea92c", "T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e558fd4383c18f5860285557e9d07251c6aea8b87bb6ac30988822a0642163ae", "T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a1cf82a8c6063c2f33ec994c8e48e07c0b68adda471ebe8f8982f3550a8951cf", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d62dd4e73d1d1bf68be4585854e4e5b502289cf7e34e49550c9e85832a593941", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "911963551a84234a81becde8fcf18d127a04ce91c7b4c8c5be8da8a0c67e43d5", "T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c616eb9f5a7db8420a0e63e0e706f0924b22b749f70c901941541391d58456c2", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "91ef25866521082fb2e7eb845a6ebf60f6744ccfe65cbdcbe285120140363968", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "88acf2b1beaa8b0af4963a75e83902e2ecf7b3c90ae5e75cafe53936407a5556", "T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "09c99af8f9d6c9d4d99aecfb52ed4fb3db148e5e0002ce5cbf38d8f54921b2ed", "T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6398341fa7a63e884cf3cb7494a40457b7a3a52ea5cd8cc92cc88057ed13dd81", "T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "09c99af8f9d6c9d4d99aecfb52ed4fb3db148e5e0002ce5cbf38d8f54921b2ed", @@ -6193,16 +6193,16 @@ "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "fd4205ecd4d0b8ab036eb4a5f0d1282dc55c0999f8e1d01387cd6280eb3510a8", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e558fd4383c18f5860285557e9d07251c6aea8b87bb6ac30988822a0642163ae", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3809beae56c42b01914fb536cc72a8365169c655c5c239dbc99f41e4c9563651", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "8869c235d6f5f632d33c13ce596df1cba2209a1c203a47296c6fa7574720880a", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c925a75f1fd31f6f6660ea93da1d7630f624e6327ec60eca13d5e9dcf7e42450", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "dd5ba7f7bfbefbdeb90f8b3f18dc76691288fca760b4f472601cc4cb8f38af1e", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f5960a0b979cd0e6000a08b19bd8caf3cdf91811129cf9c3e7a69f73e347350f", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "65b46b65f2edb07dab629a900a43bc092f8cadb24ed51d7a2d69fdb19401cbf6", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2bc4e17083339ba5fef1b2218492c5ca8819690854f92e58dbffe65006163def", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "30d54b6b12b4c33e4d65b519b5ebb6b476182dde8755b982a5ddc48e65eeaac4", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "d5c00d2c4339f35deaeae30b76a20b7df7690f49e4b7a0ee79325647690094b4", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "73c97b67eb73167842f3cef61b219ef20666f87802032c182053649b013825d9", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "771afab90a7deea98e792b6a9adcfcd7411b7bc536afb5481d1f3eb9fce855e6", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "243f181a37d5719aa230a5dcbd7203c9f1ea17d9b47e8db3a16a22ae797a2842", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f5044f113732d51fa5685ef82604647fe3d78e2555ec41c15d0cbac6ebe27831", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "ee48f761fc82ecebd2d1276807abb515e549398837ef881f7dc6b70f07a67de5", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "1765d3bbc6c8e30bb02a5bb5be60edc75746d0fa3c441c49ff689579b07b546e", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0f513ed19b61835e1418afe47e37f13561ed0db01f2b0f292d553dbdac443d63", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e91ccc00d7fb05f3cc20e23b783765769069ae0e11c116df0b4cb3249b8da3e2", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "04e085305c7feaf58f99366569874d60aea334e9eafb9629d609c52d53c89e5d", "T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f08999315d6bb09ab74c1da0847a53880423a4f6690a5e9959fd83c31ed31306", @@ -7572,9 +7572,9 @@ "T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "358bdd58d485582f0df5115de54e9180df643863996939de962552dbb1027944", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "ff1467749ed3e022171ab66fd03c6568b71f3c193f2c90f7a5595ea0c5f8e824", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3d0db06890c7ed55d36f1b115df2f77b0a10e43c4bf97b65244bb5cdb8560a95", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "31437836f623b3f1312aca382d59ea367a28a517060a61fa424751d02e621587", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "94de6de9fc72f92ab25494eaf6ac7d19fa5f6a71aace50d3917b49c664aab89a", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5e1cc69596f5693d7cae0b8752cf0d98162a45861557727642630a1054f0a62d", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7904e3716359486be47ab886f68abd09a103367e8e163aa059e3f09d64a25b73", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4655521a47bcfec585f056d25cc03a130de58d7abb49e6cf288ba7ee62f23a65", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a46c6095658a0d461c2f2cecace44666220118dc9d5d52388f6c22279c27dbd6", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b7c74bfc9dbc074fb7f173aee7a2c914fcb54ef43613d0de0d0e7d8ea8e0b330", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a46c6095658a0d461c2f2cecace44666220118dc9d5d52388f6c22279c27dbd6", @@ -7584,16 +7584,16 @@ "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "04a6d819891a52e6be2e3f1890e62a342b181c03c78ddaab07ae7edfa0278d6c", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "ff1467749ed3e022171ab66fd03c6568b71f3c193f2c90f7a5595ea0c5f8e824", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6a7c0f2a4013e50a24d45159d831893f0ba9e56575191540c925947a54e6856c", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "291892a99a919045fa1052ec3acd968dbd102c0c14dccf927f2a1ce9e082cd0d", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "644b519e32943f22b877a5e75bf1bf048dbcc5eec9f370c0fcf7d4e98c8c5b9d", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b89f1665602f4b730100e8fcafa503eec6c62da6af33b8b5ed415349a543ad35", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "57b60a05a9b5239e789c1d8fc310f2bc1c3c8028ee8ba243f2e09c263bea3a94", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "f65b1a8f41dec6b61e3ed842ddeacb18fdb0c973833dc37149d5ea0b8bfa0b20", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7a2e2619aaf39b07c1afc397c7e198af1c6969dec1a35b015ece5eed7f4af9d7", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "51bb1316edf2a2e6b4cc159fac8fbf2a4e9a6f92844c936813915b2a423d3960", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8526063a5922fe464fcbcae8d3afd873101c898283a229253227b4e2e8580609", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ec3f8b2bed4189a2d692ac76218e03426e02c4e5a8b235fba8a2bf3cc3763550", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3556f79a04ef23c19b374d8bf06e8b5d378446d5c26098c1d8b893db0edb2f9e", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "38a5d2fbc67550343f5819300b77b37e47bafde1c73cbc429745fe7c0f56511e", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "09159c73425c71bba865b07c8e92d571366e7d347806a8b7327c051986680b0b", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "52135af7288e7e0c936d40862b6a204a2a9e9ecea982206960fa62e5bf373500", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "04ffb07feb0e9b9274db680e3cc1a5b0ca8927e6553a14e8b415c91ef567a4b3", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3ee21b904ed2f46a545ff245375361b976ba51b7705702b85b46f82c621b7936", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2a4fc40c7f5e42b49cf752da5728b7f1f5386e9993100db268c269c854095cb0", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "463e0cd462e2d6481ed3217e45e439ef727649a6347a1e76dfca54e618f66fe1", "T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "66ec0e2342b68a3c450c2dc17fb766fb45120d53cfdbec0481c4dd2d16f444bd", From 0fbfda7762eedf6b46092b08b1e816ac7625b9e7 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak <pavol@rusnak.io> Date: Fri, 7 Jun 2024 14:09:12 +0200 Subject: [PATCH 289/626] build(deps): bump typing-extensions to fix compatibility with Python 3.12 [no changelog] --- poetry.lock | 105 ++++--------------------------------------------- pyproject.toml | 2 +- 2 files changed, 8 insertions(+), 99 deletions(-) diff --git a/poetry.lock b/poetry.lock index d8b22b8ba4..60c805073d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "astroid" version = "2.15.8" description = "An abstract syntax tree for Python with inference support." -category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -24,7 +23,6 @@ wrapt = [ name = "atomicwrites" version = "1.4.0" description = "Atomic file writes." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -36,7 +34,6 @@ files = [ name = "attrs" version = "21.4.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -54,7 +51,6 @@ tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy" name = "autoflake" version = "1.4" description = "Removes unused imports and unused variables" -category = "main" optional = false python-versions = "*" files = [ @@ -68,7 +64,6 @@ pyflakes = ">=1.1.0" name = "binsize" version = "0.1.3" description = "Tool to analyze the size of a binary from .elf file" -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -86,7 +81,6 @@ typing-extensions = "*" name = "black" version = "24.3.0" description = "The uncompromising code formatter." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -133,7 +127,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -145,7 +138,6 @@ files = [ name = "cffi" version = "1.15.0" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = "*" files = [ @@ -208,7 +200,6 @@ pycparser = "*" name = "charset-normalizer" version = "2.0.11" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -223,7 +214,6 @@ unicode-backport = ["unicodedata2"] name = "click" version = "8.1.3" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -238,7 +228,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "click-default-group" version = "1.2.2" description = "Extends click.Group to invoke a command without explicit subcommand name" -category = "dev" optional = false python-versions = "*" files = [ @@ -252,7 +241,6 @@ click = "*" name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -264,7 +252,6 @@ files = [ name = "construct" version = "2.10.67" description = "A powerful declarative symmetric parser/builder for binary data" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -278,7 +265,6 @@ extras = ["arrow", "cloudpickle", "enum34", "lz4", "numpy", "ruamel.yaml"] name = "construct-classes" version = "0.1.2" description = "Parse your binary structs into dataclasses" -category = "main" optional = false python-versions = ">=3.6.2,<4.0" files = [ @@ -293,7 +279,6 @@ construct = ">=2.10,<3.0" name = "coverage" version = "4.5.4" description = "Code coverage measurement for Python" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" files = [ @@ -335,7 +320,6 @@ files = [ name = "cryptography" version = "42.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -390,7 +374,6 @@ test-randomorder = ["pytest-randomly"] name = "demjson3" version = "3.0.5" description = "encoder, decoder, and lint/validator for JSON (JavaScript Object Notation) compliant with RFC 7159" -category = "main" optional = false python-versions = "*" files = [ @@ -401,7 +384,6 @@ files = [ name = "dill" version = "0.3.8" description = "serialize all of Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -417,7 +399,6 @@ profile = ["gprof2dot (>=2022.7.29)"] name = "distlib" version = "0.3.4" description = "Distribution utilities" -category = "main" optional = false python-versions = "*" files = [ @@ -429,7 +410,6 @@ files = [ name = "dominate" version = "2.6.0" description = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -441,7 +421,6 @@ files = [ name = "ecdsa" version = "0.16.1" description = "ECDSA cryptographic signature library (pure python)" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -460,7 +439,6 @@ gmpy2 = ["gmpy2"] name = "execnet" version = "1.9.0" description = "execnet: rapid multi-Python deployment" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -475,7 +453,6 @@ testing = ["pre-commit"] name = "fido2" version = "0.8.1" description = "Python based FIDO 2.0 library" -category = "main" optional = false python-versions = ">=2.7.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" files = [ @@ -494,7 +471,6 @@ pcsc = ["pyscard"] name = "filelock" version = "3.4.2" description = "A platform independent file lock." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -510,7 +486,6 @@ testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-co name = "flake8" version = "7.0.0" description = "the modular source code checker: pep8 pyflakes and co" -category = "main" optional = false python-versions = ">=3.8.1" files = [ @@ -527,7 +502,6 @@ pyflakes = ">=3.2.0,<3.3.0" name = "flake8-requirements" version = "2.1.0" description = "Package requirements checker, plugin for flake8" -category = "main" optional = false python-versions = "*" files = [ @@ -546,7 +520,6 @@ pyproject = ["Flake8-pyproject"] name = "flaky" version = "3.7.0" description = "Plugin for nose or pytest that automatically reruns flaky tests." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -558,7 +531,6 @@ files = [ name = "graphviz" version = "0.19.1" description = "Simple Python interface for Graphviz" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -575,7 +547,6 @@ test = ["coverage", "mock (>=4)", "pytest (>=6)", "pytest-cov", "pytest-mock (>= name = "hypothesis" version = "6.36.1" description = "A library for property-based testing" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -607,7 +578,6 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] name = "idna" version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -619,7 +589,6 @@ files = [ name = "importlib-resources" version = "5.12.0" description = "Read resources from Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -638,7 +607,6 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec name = "incremental" version = "21.3.0" description = "A small library that versions your Python projects." -category = "dev" optional = false python-versions = "*" files = [ @@ -653,7 +621,6 @@ scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] name = "iniconfig" version = "1.1.1" description = "iniconfig: brain-dead simple config-ini parsing" -category = "main" optional = false python-versions = "*" files = [ @@ -665,7 +632,6 @@ files = [ name = "inotify" version = "0.2.10" description = "An adapter to Linux kernel support for inotify directory-watching." -category = "main" optional = false python-versions = "*" files = [ @@ -680,7 +646,6 @@ nose = "*" name = "isort" version = "5.11.5" description = "A Python utility / library to sort Python imports." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -698,7 +663,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jinja2" version = "3.1.4" description = "A very fast and expressive template engine." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -716,7 +680,6 @@ i18n = ["Babel (>=2.7)"] name = "lazy-object-proxy" version = "1.7.1" description = "A fast and thorough lazy object proxy." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -763,7 +726,6 @@ files = [ name = "libusb1" version = "3.0.0" description = "Pure-python wrapper for libusb-1.0" -category = "main" optional = false python-versions = "*" files = [ @@ -777,7 +739,6 @@ files = [ name = "mako" version = "1.1.6" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -796,7 +757,6 @@ lingua = ["lingua"] name = "markupsafe" version = "2.0.1" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -875,7 +835,6 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -887,7 +846,6 @@ files = [ name = "mnemonic" version = "0.20" description = "Implementation of Bitcoin BIP-0039" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -899,7 +857,6 @@ files = [ name = "munch" version = "2.5.0" description = "A dot-accessible dictionary (a la JavaScript objects)" -category = "main" optional = false python-versions = "*" files = [ @@ -918,7 +875,6 @@ yaml = ["PyYAML (>=5.1.0)"] name = "mypy-extensions" version = "0.4.3" description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "main" optional = false python-versions = "*" files = [ @@ -930,7 +886,6 @@ files = [ name = "nanopb" version = "0.4.5.post1" description = "Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system." -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -948,7 +903,6 @@ grpcio-tools = ["grpcio-tools (>=1.26.0rc1)"] name = "nose" version = "1.3.7" description = "nose extends unittest to make testing easier" -category = "main" optional = false python-versions = "*" files = [ @@ -961,7 +915,6 @@ files = [ name = "packaging" version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -973,7 +926,6 @@ files = [ name = "pathspec" version = "0.9.0" description = "Utility library for gitignore style pattern matching of file paths." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -985,7 +937,6 @@ files = [ name = "pillow" version = "10.3.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1072,7 +1023,6 @@ xmp = ["defusedxml"] name = "platformdirs" version = "2.6.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1088,7 +1038,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest- name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1104,7 +1053,6 @@ testing = ["pytest", "pytest-benchmark"] name = "protobuf" version = "3.19.4" description = "Protocol Buffers" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1140,7 +1088,6 @@ files = [ name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1152,7 +1099,6 @@ files = [ name = "pyasn1" version = "0.4.8" description = "ASN.1 types and codecs" -category = "main" optional = false python-versions = "*" files = [ @@ -1164,7 +1110,6 @@ files = [ name = "pycodestyle" version = "2.11.1" description = "Python style guide checker" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1176,7 +1121,6 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1188,7 +1132,6 @@ files = [ name = "pyflakes" version = "3.2.0" description = "passive checker of Python programs" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1200,7 +1143,6 @@ files = [ name = "pylint" version = "2.17.7" description = "python code static checker" -category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -1230,7 +1172,6 @@ testutils = ["gitpython (>3)"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" -category = "main" optional = false python-versions = "*" files = [ @@ -1245,7 +1186,6 @@ cp2110 = ["hidapi"] name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1270,7 +1210,6 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-forked" version = "1.4.0" description = "run tests in isolated forked subprocesses" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1286,7 +1225,6 @@ pytest = ">=3.10" name = "pytest-ordering" version = "0.6" description = "pytest plugin to run your tests in a specific order" -category = "main" optional = false python-versions = "*" files = [ @@ -1302,7 +1240,6 @@ pytest = "*" name = "pytest-random-order" version = "1.0.4" description = "Randomise the order in which pytest tests are run with some control over the randomness" -category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -1317,7 +1254,6 @@ pytest = ">=3.0.0" name = "pytest-timeout" version = "2.1.0" description = "pytest plugin to abort hanging tests" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1332,7 +1268,6 @@ pytest = ">=5.0.0" name = "pytest-xdist" version = "2.5.0" description = "pytest xdist plugin for distributed testing and loop-on-failing modes" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1354,7 +1289,6 @@ testing = ["filelock"] name = "python-bitcoinlib" version = "0.11.0" description = "The Swiss Army Knife of the Bitcoin protocol." -category = "main" optional = false python-versions = "*" files = [ @@ -1366,7 +1300,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1427,7 +1360,6 @@ files = [ name = "requests" version = "2.32.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1449,7 +1381,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "scan-build" version = "2.0.20" description = "static code analyzer wrapper for Clang." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1461,7 +1392,6 @@ files = [ name = "scons" version = "4.3.0" description = "Open Source next-generation build tool." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1476,7 +1406,6 @@ setuptools = "*" name = "setuptools" version = "67.6.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1493,7 +1422,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "shamir-mnemonic" version = "0.3.0" description = "SLIP-39 Shamir Mnemonics" -category = "main" optional = false python-versions = "<4.0,>=3.6" files = [ @@ -1508,7 +1436,6 @@ cli = ["click (>=7,<9)"] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1520,7 +1447,6 @@ files = [ name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" -category = "main" optional = false python-versions = "*" files = [ @@ -1532,7 +1458,6 @@ files = [ name = "termcolor" version = "2.3.0" description = "ANSI color formatting for output in terminal" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1547,7 +1472,6 @@ tests = ["pytest", "pytest-cov"] name = "toiftool" version = "0.1.0" description = "" -category = "main" optional = false python-versions = ">=3.8" files = [] @@ -1566,7 +1490,6 @@ url = "python/tools/toiftool" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1578,7 +1501,6 @@ files = [ name = "tomli" version = "1.2.3" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1590,7 +1512,6 @@ files = [ name = "tomlkit" version = "0.12.4" description = "Style preserving TOML library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1602,7 +1523,6 @@ files = [ name = "towncrier" version = "23.6.0" description = "Building newsfiles for your project." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1625,7 +1545,6 @@ dev = ["furo", "packaging", "sphinx (>=5)", "twisted"] name = "tox" version = "3.24.5" description = "tox is a generic virtualenv management and test command line tool" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1651,7 +1570,6 @@ testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psu name = "trezor" version = "0.13.9" description = "Python library for communicating with Trezor Hardware Wallet" -category = "main" optional = false python-versions = ">=3.6" files = [] @@ -1683,7 +1601,6 @@ url = "python" name = "trezor-pylint-plugin" version = "0.1.0" description = "" -category = "main" optional = false python-versions = "^3.8" files = [] @@ -1699,21 +1616,19 @@ url = "tools/trezor-pylint-plugin" [[package]] name = "typing-extensions" -version = "4.0.1" -description = "Backported and Experimental Type Hints for Python 3.6+" -category = "main" +version = "4.12.1" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, - {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, + {file = "typing_extensions-4.12.1-py3-none-any.whl", hash = "sha256:6024b58b69089e5a89c347397254e35f1bf02a907728ec7fee9bf0fe837d203a"}, + {file = "typing_extensions-4.12.1.tar.gz", hash = "sha256:915f5e35ff76f56588223f15fdd5938f9a1cf9195c0de25130c627e4d597f6d1"}, ] [[package]] name = "uhid-freebsd" version = "1.2.2" description = "Get information on FreeBSD uhid devices." -category = "main" optional = false python-versions = "*" files = [ @@ -1724,7 +1639,6 @@ files = [ name = "urllib3" version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -1741,7 +1655,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "virtualenv" version = "20.13.1" description = "Virtual Python Environment builder" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1763,7 +1676,6 @@ testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", name = "vulture" version = "2.6" description = "Find dead code" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1778,7 +1690,6 @@ toml = "*" name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1858,7 +1769,6 @@ files = [ name = "yamllint" version = "1.26.3" description = "A linter for YAML files." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1874,7 +1784,6 @@ setuptools = "*" name = "zipp" version = "3.7.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1889,4 +1798,4 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "089373acc7cc350a441e8a935c011b76c1b31202a8972a42dc80bb8e2562c0e9" +content-hash = "08f0edb51d2d41a2e333b7f8b5ae0a06730f9aa362136c49fd262d823ed5d59a" diff --git a/pyproject.toml b/pyproject.toml index e4e7dfd448..2c55d25bce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ fido2 = "^0.8.0" python-bitcoinlib = "^0.11.0" ## typing -typing-extensions = ">=3.7.4" +typing-extensions = ">=4.7.1" ## style isort = "^5" From 61fe99036ea4b4b32a10e92b811b26a44d27eef5 Mon Sep 17 00:00:00 2001 From: r0tc <87579231+r0tc@users.noreply.github.com> Date: Mon, 10 Jun 2024 11:32:58 +0200 Subject: [PATCH 290/626] fix(python): remove duplicated 0x prefix for publish sign-tx --- python/src/trezorlib/cli/ethereum.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/trezorlib/cli/ethereum.py b/python/src/trezorlib/cli/ethereum.py index e5aac60720..6bbfc0d356 100644 --- a/python/src/trezorlib/cli/ethereum.py +++ b/python/src/trezorlib/cli/ethereum.py @@ -517,7 +517,7 @@ def sign_tx( if publish: tx_hash = _get_web3().eth.send_raw_transaction(tx_bytes).hex() - return f"Transaction published with ID: 0x{tx_hash}" + return f"Transaction published with ID: {tx_hash}" else: return f"Signed raw transaction:\n0x{tx_bytes.hex()}" From ac1a25fc21dee164288c29ff5b6aee7f69384fb4 Mon Sep 17 00:00:00 2001 From: TuDo1403 <tudo.dev@gmail.com> Date: Fri, 14 Jun 2024 22:48:17 +0700 Subject: [PATCH 291/626] fix(trezor-client): fix convert_signature invalid s convert --- rust/trezor-client/src/client/ethereum.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/trezor-client/src/client/ethereum.rs b/rust/trezor-client/src/client/ethereum.rs index c6b78f5329..1780681d5f 100644 --- a/rust/trezor-client/src/client/ethereum.rs +++ b/rust/trezor-client/src/client/ethereum.rs @@ -162,6 +162,6 @@ fn convert_signature(resp: &EthereumTxRequest, chain_id: Option<u64>) -> Result< } } let r = resp.signature_r().try_into().map_err(|_| Error::MalformedSignature)?; - let s = resp.signature_r().try_into().map_err(|_| Error::MalformedSignature)?; + let s = resp.signature_s().try_into().map_err(|_| Error::MalformedSignature)?; Ok(Signature { r, s, v }) } From 5fc3c6e617619eee14429d44ab6e064ed3f5801e Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Mon, 10 Jun 2024 16:57:59 +0200 Subject: [PATCH 292/626] refactor(core): improve and simplify error handling [no changelog] --- core/SConscript.boardloader | 1 + core/SConscript.bootloader | 1 + core/SConscript.bootloader_ci | 1 + core/SConscript.bootloader_emu | 4 +- core/SConscript.firmware | 1 + core/SConscript.prodtest | 1 + core/SConscript.reflash | 1 + core/SConscript.unix | 2 + core/embed/bootloader/emulator.c | 36 +---- core/embed/bootloader/main.c | 7 +- core/embed/bootloader/messages.c | 5 +- core/embed/bootloader_ci/messages.c | 5 +- .../extmod/modtrezorcrypto/modtrezorcrypto.c | 3 +- core/embed/firmware/main.c | 4 +- core/embed/lib/error_handling.c | 123 ++++++++++++++++ core/embed/lib/error_handling.h | 57 ++++++++ core/embed/lib/terminal.c | 6 + core/embed/rust/rust_ui_common.h | 5 +- core/embed/rust/src/trezorhal/fatal_error.rs | 26 ++-- core/embed/rust/src/ui/api/common_c.rs | 8 +- core/embed/rust/src/ui/shape/display/bumps.rs | 22 ++- core/embed/rust/src/ui/shape/display/mod.rs | 2 + core/embed/rust/src/ui/shape/mod.rs | 2 +- core/embed/trezorhal/common.h | 15 +- core/embed/trezorhal/secret.h | 4 - .../trezorhal/stm32f4/board_capabilities.c | 5 +- core/embed/trezorhal/stm32f4/common.c | 108 +-------------- core/embed/trezorhal/stm32f4/fault_handlers.c | 12 +- core/embed/trezorhal/stm32f4/secret.c | 14 +- core/embed/trezorhal/stm32u5/common.c | 109 +-------------- core/embed/trezorhal/stm32u5/fault_handlers.c | 16 +-- core/embed/trezorhal/stm32u5/secret.c | 6 - core/embed/trezorhal/stm32u5/tamper.c | 4 +- core/embed/trezorhal/unix/common.c | 131 +----------------- core/embed/trezorhal/unix/usb.c | 10 +- core/embed/unix/main.c | 10 -- 36 files changed, 291 insertions(+), 476 deletions(-) create mode 100644 core/embed/lib/error_handling.c create mode 100644 core/embed/lib/error_handling.h diff --git a/core/SConscript.boardloader b/core/SConscript.boardloader index 8739c28b14..cc31e0b6b8 100644 --- a/core/SConscript.boardloader +++ b/core/SConscript.boardloader @@ -68,6 +68,7 @@ CPPPATH_MOD += [ SOURCE_MOD += [ 'embed/lib/colors.c', 'embed/lib/display_utils.c', + 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/gfx_color.c', diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 5f20c9e5c1..889b2d085d 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -107,6 +107,7 @@ SOURCE_MOD += [ 'embed/lib/buffers.c', 'embed/lib/colors.c', 'embed/lib/display_utils.c', + 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/gfx_color.c', diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 87d707c392..56e3b136d7 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -98,6 +98,7 @@ SOURCE_MOD += [ 'embed/lib/colors.c', 'embed/lib/display_draw.c', 'embed/lib/display_utils.c', + 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/image.c', diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 7ec0641d12..67c8588caa 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -102,6 +102,7 @@ SOURCE_MOD += [ 'embed/lib/buffers.c', 'embed/lib/colors.c', 'embed/lib/display_utils.c', + 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/gfx_color.c', @@ -109,6 +110,7 @@ SOURCE_MOD += [ 'embed/lib/gfx_bitblt_rgb565.c', 'embed/lib/gfx_bitblt_rgba8888.c', 'embed/lib/image.c', + 'embed/lib/mini_printf.c', 'embed/lib/terminal.c', 'embed/lib/touch.c', 'embed/lib/unit_variant.c', @@ -144,10 +146,10 @@ SOURCE_BOOTLOADER = [ SOURCE_TREZORHAL = [ 'embed/trezorhal/unix/boot_args.c', + 'embed/trezorhal/unix/common.c', 'embed/trezorhal/unix/fault_handlers.c', 'embed/trezorhal/unix/flash.c', 'embed/trezorhal/unix/flash_otp.c', - 'embed/trezorhal/unix/common.c', 'embed/trezorhal/unix/touch/touch.c', 'embed/trezorhal/unix/rng.c', 'embed/trezorhal/unix/usb.c', diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 32e006a9b1..53a89386e6 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -226,6 +226,7 @@ SOURCE_MOD += [ 'embed/lib/buffers.c', 'embed/lib/colors.c', 'embed/lib/display_utils.c', + 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/gfx_color.c', diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index e31d941896..4e32efdb69 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -102,6 +102,7 @@ SOURCE_MOD += [ 'embed/lib/colors.c', 'embed/lib/display_draw.c', 'embed/lib/display_utils.c', + 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/image.c', diff --git a/core/SConscript.reflash b/core/SConscript.reflash index 1a9a313f57..a9d343542e 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -74,6 +74,7 @@ SOURCE_MOD += [ 'embed/lib/colors.c', 'embed/lib/display_draw.c', 'embed/lib/display_utils.c', + 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/image.c', diff --git a/core/SConscript.unix b/core/SConscript.unix index e4736c0d85..3a9fe3f88b 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -232,6 +232,7 @@ SOURCE_MOD += [ 'embed/lib/buffers.c', 'embed/lib/colors.c', 'embed/lib/display_utils.c', + 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', 'embed/lib/gfx_color.c', @@ -239,6 +240,7 @@ SOURCE_MOD += [ 'embed/lib/gfx_bitblt_rgba8888.c', 'embed/lib/gfx_bitblt_mono8.c', 'embed/lib/image.c', + 'embed/lib/mini_printf.c', 'embed/lib/terminal.c', 'embed/lib/translations.c', 'embed/lib/unit_variant.c', diff --git a/core/embed/bootloader/emulator.c b/core/embed/bootloader/emulator.c index 5b36e1fe93..dd03ba38e3 100644 --- a/core/embed/bootloader/emulator.c +++ b/core/embed/bootloader/emulator.c @@ -88,27 +88,6 @@ bool load_firmware(const char *filename, uint8_t *hash) { return true; } -__attribute__((noreturn)) void display_error_and_die(const char *message, - const char *title, - const char *footer) { - if (footer == NULL) { - footer = "PLEASE VISIT\nTREZOR.IO/RSOD"; - } - if (title == NULL) { - title = "INTERNAL ERROR"; - } - display_init(); - display_backlight(180); - screen_fatal_error_rust(title, message, footer); -#if USE_TOUCH - printf("Click screen to exit.\n"); -#elif USE_BUTTON - printf("Press both buttons to exit.\n"); -#endif - ui_click(); - exit(0); -} - __attribute__((noreturn)) int main(int argc, char **argv) { display_init(); flash_init(); @@ -175,7 +154,7 @@ __attribute__((noreturn)) int main(int argc, char **argv) { } else { message = "No message specified"; } - display_error_and_die(message, title, footer); + error_shutdown_ex(title, message, footer); } // write variant to OTP @@ -198,18 +177,13 @@ __attribute__((noreturn)) void jump_to(void *addr) { if (storage_is_erased) { printf("STORAGE WAS ERASED\n"); - screen_fatal_error_rust("BOOTLOADER EXIT", "Jumped to firmware", - "STORAGE WAS ERASED"); + error_shutdown_ex("BOOTLOADER EXIT", "Jumped to firmware", + "STORAGE WAS ERASED"); } else { printf("storage was retained\n"); - screen_fatal_error_rust("BOOTLOADER EXIT", "Jumped to firmware", - "STORAGE WAS RETAINED"); + error_shutdown_ex("BOOTLOADER EXIT", "Jumped to firmware", + "STORAGE WAS RETAINED"); } - display_backlight(180); - hal_delay(3000); - exit(0); } void ensure_compatible_settings(void) {} - -void main_clean_exit(int code) { exit(code); } diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 042c795516..685c3bfc44 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -192,7 +192,8 @@ static usb_result_t bootloader_usb_loop(const vendor_header *const vhdr, r = process_msg_FirmwareUpload(USB_IFACE_NUM, msg_size, buf); if (r < 0 && r != UPLOAD_ERR_USER_ABORT) { // error, but not user abort if (r == UPLOAD_ERR_BOOTLOADER_LOCKED) { - secret_show_install_restricted_screen(); + // This function does not return + show_install_restricted_screen(); } else { ui_screen_fail(); } @@ -291,9 +292,7 @@ static void check_bootloader_version(void) { #endif -void failed_jump_to_firmware(void) { - error_shutdown("INTERNAL ERROR", "(glitch)"); -} +void failed_jump_to_firmware(void) { error_shutdown("(glitch)"); } void real_jump_to_firmware(void) { const image_header *hdr = NULL; diff --git a/core/embed/bootloader/messages.c b/core/embed/bootloader/messages.c index 89bc4e365b..67ee6ebb48 100644 --- a/core/embed/bootloader/messages.c +++ b/core/embed/bootloader/messages.c @@ -213,8 +213,9 @@ static void _usb_webusb_read_retry(uint8_t iface_num, uint8_t *buf) { continue; } else { // error - error_shutdown("USB ERROR", - "Error reading from USB. Try different USB cable."); + error_shutdown_ex("USB ERROR", + "Error reading from USB. Try different USB cable.", + NULL); } } return; // success diff --git a/core/embed/bootloader_ci/messages.c b/core/embed/bootloader_ci/messages.c index 15c5ce22c5..2a7c372785 100644 --- a/core/embed/bootloader_ci/messages.c +++ b/core/embed/bootloader_ci/messages.c @@ -200,8 +200,9 @@ static void _usb_webusb_read_retry(uint8_t iface_num, uint8_t *buf) { // only timeout => let's try again } else { // error - error_shutdown("USB ERROR", - "Error reading from USB. Try different USB cable."); + error_shutdown_ex("USB ERROR", + "Error reading from USB. Try different USB cable.", + NULL); } } return; // success diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c index 082a58a4bd..13282bd93a 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto.c @@ -161,8 +161,7 @@ void secp256k1_default_illegal_callback_fn(const char *str, void *data) { void secp256k1_default_error_callback_fn(const char *str, void *data) { (void)data; - __fatal_error(NULL, str, __FILE__, __LINE__, __func__); - return; + error_shutdown(str); } #endif diff --git a/core/embed/firmware/main.c b/core/embed/firmware/main.c index ba35e7a993..253cc00eec 100644 --- a/core/embed/firmware/main.c +++ b/core/embed/firmware/main.c @@ -274,7 +274,7 @@ int main(void) { mp_deinit(); // Python code shouldn't ever exit, avoid black screen if it does - error_shutdown("INTERNAL ERROR", "(PE)"); + error_shutdown("(PE)"); return 0; } @@ -282,7 +282,7 @@ int main(void) { // MicroPython default exception handler void __attribute__((noreturn)) nlr_jump_fail(void *val) { - error_shutdown("INTERNAL ERROR", "(UE)"); + error_shutdown("(UE)"); } // MicroPython builtin stubs diff --git a/core/embed/lib/error_handling.c b/core/embed/lib/error_handling.c new file mode 100644 index 0000000000..ca5f3e73bc --- /dev/null +++ b/core/embed/lib/error_handling.c @@ -0,0 +1,123 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stddef.h> + +#include "common.h" +#include "display.h" +#include "error_handling.h" +#include "mini_printf.h" +#ifdef FANCY_FATAL_ERROR +#include "rust_ui.h" +#else +#include "terminal.h" +#endif + +#ifdef RGB16 +#define COLOR_FATAL_ERROR RGB16(0x7F, 0x00, 0x00) +#else +#define COLOR_FATAL_ERROR COLOR_BLACK +#endif + +void __attribute__((noreturn)) +error_shutdown_ex(const char *title, const char *message, const char *footer) { + if (title == NULL) { + title = "INTERNAL ERROR"; + } + if (footer == NULL) { + footer = "PLEASE VISIT\nTREZOR.IO/RSOD"; + } + +#ifdef FANCY_FATAL_ERROR + error_shutdown_rust(title, message, footer); +#else + display_orientation(0); + term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); + term_printf("%s\n", title); + if (message) { + term_printf("%s\n", message); + } + term_printf("\n%s\n", footer); + display_backlight(255); + trezor_shutdown(); +#endif +} + +void __attribute__((noreturn)) error_shutdown(const char *message) { + error_shutdown_ex(NULL, message, NULL); +} + +void __attribute__((noreturn)) +__fatal_error(const char *expr, const char *msg, const char *file, int line, + const char *func) { +#ifdef FANCY_FATAL_ERROR + char buf[256] = {0}; + mini_snprintf(buf, sizeof(buf), "%s: %d", file, line); + error_shutdown(msg != NULL ? msg : buf); +#else + display_orientation(0); + term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); + term_printf("\nINTERNAL ERROR:\n"); + if (expr) { + term_printf("expr: %s\n", expr); + } + if (msg) { + term_printf("msg : %s\n", msg); + } + if (file) { + term_printf("file: %s:%d\n", file, line); + } + if (func) { + term_printf("func: %s\n", func); + } +#ifdef SCM_REVISION + const uint8_t *rev = (const uint8_t *)SCM_REVISION; + term_printf("rev : %02x%02x%02x%02x%02x\n", rev[0], rev[1], rev[2], rev[3], + rev[4]); +#endif + term_printf("\nPlease contact Trezor support.\n"); + display_backlight(255); + trezor_shutdown(); +#endif +} + +#ifndef NDEBUG +void __assert_func(const char *file, int line, const char *func, + const char *expr) { + __fatal_error(expr, "assert failed", file, line, func); +} +#endif + +void __attribute__((noreturn)) show_wipe_code_screen(void) { + error_shutdown_ex("WIPE CODE ENTERED", + "All data has been erased from the device", + "PLEASE RECONNECT\nTHE DEVICE"); +} + +void __attribute__((noreturn)) show_pin_too_many_screen(void) { + error_shutdown_ex("TOO MANY PIN ATTEMPTS", + "All data has been erased from the device", + "PLEASE RECONNECT\nTHE DEVICE"); +} + +void __attribute__((noreturn)) show_install_restricted_screen(void) { + error_shutdown_ex("INSTALL RESTRICTED", + "Installation of custom firmware is currently restricted.", + "Please visit\ntrezor.io/bootloader"); +} diff --git a/core/embed/lib/error_handling.h b/core/embed/lib/error_handling.h new file mode 100644 index 0000000000..c811600d6b --- /dev/null +++ b/core/embed/lib/error_handling.h @@ -0,0 +1,57 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef LIB_ERROR_HANDLING_H +#define LIB_ERROR_HANDLING_H + +// Shows an error message and shuts down the device. +// +// If the title is NULL, it will be set to "INTERNAL ERROR". +// If the message is NULL, it will be ignored. +// If the footer is NULL, it will be set to "PLEASE VISIT TREZOR.IO/RSOD". +void __attribute__((noreturn)) +error_shutdown_ex(const char *title, const char *message, const char *footer); + +// Shows an error message and shuts down the device. +// +// Same as `error_shutdown_ex()` but with a default header and footer. +void __attribute__((noreturn)) error_shutdown(const char *message); + +// Do not use this function directly, use the `ensure()` macro instead. +void __attribute__((noreturn)) +__fatal_error(const char *expr, const char *msg, const char *file, int line, + const char *func); + +// Checks for an expression and if it is false, shows an error message +// and shuts down the device. +#define ensure(expr, msg) \ + (((expr) == sectrue) \ + ? (void)0 \ + : __fatal_error(#expr, msg, __FILE__, __LINE__, __func__)) + +// Shows WIPE CODE ENTERED screeen and shuts down the device. +void __attribute__((noreturn)) show_wipe_code_screen(void); + +// Shows TOO MANY PIN ATTEMPTS screen and shuts down the device. +void __attribute__((noreturn)) show_pin_too_many_screen(void); + +// Shows INSTALL RESTRICTED screen and shuts down the device. +void __attribute__((noreturn)) show_install_restricted_screen(void); + +#endif // LIB_ERRORS_H diff --git a/core/embed/lib/terminal.c b/core/embed/lib/terminal.c index 13d733acc1..0891fcbedf 100644 --- a/core/embed/lib/terminal.c +++ b/core/embed/lib/terminal.c @@ -180,12 +180,18 @@ void term_print(const char *text, int textlen) { void term_printf(const char *fmt, ...) { if (!strchr(fmt, '%')) { term_print(fmt, strlen(fmt)); +#ifdef TREZOR_EMULATOR + printf("%s", fmt); +#endif } else { va_list va; va_start(va, fmt); char buf[256] = {0}; int len = mini_vsnprintf(buf, sizeof(buf), fmt, va); term_print(buf, len); +#ifdef TREZOR_EMULATOR + vprintf(fmt, va); +#endif va_end(va); } } diff --git a/core/embed/rust/rust_ui_common.h b/core/embed/rust/rust_ui_common.h index 4297bd39a5..11f03965a8 100644 --- a/core/embed/rust/rust_ui_common.h +++ b/core/embed/rust/rust_ui_common.h @@ -1,7 +1,8 @@ #include "common.h" -void screen_fatal_error_rust(const char* title, const char* msg, - const char* footer); +__attribute__((noreturn)) void error_shutdown_rust(const char* title, + const char* msg, + const char* footer); void screen_boot_stage_2(void); diff --git a/core/embed/rust/src/trezorhal/fatal_error.rs b/core/embed/rust/src/trezorhal/fatal_error.rs index de0e1188fb..64c8fbdc02 100644 --- a/core/embed/rust/src/trezorhal/fatal_error.rs +++ b/core/embed/rust/src/trezorhal/fatal_error.rs @@ -5,24 +5,34 @@ mod ffi { } } -use crate::ui::ui_features::{ModelUI, UIFeaturesCommon}; +use crate::ui::{ + shape, + ui_features::{ModelUI, UIFeaturesCommon}, +}; fn shutdown() -> ! { unsafe { ffi::trezor_shutdown() } } -#[cfg(feature = "bootloader")] -pub fn __fatal_error(_expr: &str, _msg: &str, _file: &str, _line: u32, _func: &str) -> ! { - ModelUI::screen_fatal_error("BL.rs", "BL.rs", "PLEASE VISIT\nTREZOR.IO/RSOD"); +/// Shows an error message and shuts down the device. +pub fn error_shutdown(title: &str, msg: &str, footer: &str) -> ! { + // SAFETY: + // This is the only situation we are allowed use this function + // to allow nested calls to `run_with_bumps`/`render_on_display`, + // because after the error message is displayed, the application will + // shut down. + unsafe { shape::unlock_bumps_on_failure() }; + + ModelUI::screen_fatal_error(title, msg, footer); ModelUI::backlight_on(); shutdown() } -#[cfg(not(feature = "bootloader"))] +/// Shows an error message on the screen and shuts down the device. +/// In debug mode, also prints the error message to the console. +#[inline(never)] // saves few kilobytes of flash pub fn __fatal_error(_expr: &str, msg: &str, _file: &str, _line: u32, _func: &str) -> ! { - ModelUI::screen_fatal_error("INTERNAL_ERROR", msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); - ModelUI::backlight_on(); - shutdown() + error_shutdown("INTERNAL_ERROR", msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); } pub trait UnwrapOrFatalError<T> { diff --git a/core/embed/rust/src/ui/api/common_c.rs b/core/embed/rust/src/ui/api/common_c.rs index 4f0b0b55bd..ccbed0d3a3 100644 --- a/core/embed/rust/src/ui/api/common_c.rs +++ b/core/embed/rust/src/ui/api/common_c.rs @@ -10,19 +10,19 @@ use crate::ui::{ geometry::{Alignment2D, Point}, }; -use crate::ui::util::from_c_str; +use crate::{trezorhal::fatal_error, ui::util::from_c_str}; #[no_mangle] -extern "C" fn screen_fatal_error_rust( +extern "C" fn error_shutdown_rust( title: *const cty::c_char, msg: *const cty::c_char, footer: *const cty::c_char, -) { +) -> ! { let title = unsafe { from_c_str(title) }.unwrap_or(""); let msg = unsafe { from_c_str(msg) }.unwrap_or(""); let footer = unsafe { from_c_str(footer) }.unwrap_or(""); - ModelUI::screen_fatal_error(title, msg, footer); + fatal_error::error_shutdown(title, msg, footer) } #[no_mangle] diff --git a/core/embed/rust/src/ui/shape/display/bumps.rs b/core/embed/rust/src/ui/shape/display/bumps.rs index 98d0901a72..70e0621347 100644 --- a/core/embed/rust/src/ui/shape/display/bumps.rs +++ b/core/embed/rust/src/ui/shape/display/bumps.rs @@ -22,6 +22,9 @@ pub const BUMP_A_SIZE: usize = DrawingCache::get_bump_a_size() + SHAPE_MEM_SIZE; /// Size of `bump_b` memory that must be accessible by DMA pub const BUMP_B_SIZE: usize = DrawingCache::get_bump_b_size(); +// +static mut LOCKED: bool = false; + /// Runs a user-defined function with two bump allocators. /// /// The function is passed two bump allocators, `bump_a` and `bump_b`, which @@ -32,8 +35,6 @@ pub fn run_with_bumps<F>(func: F) where F: for<'a> FnOnce(&'a mut Bump<[u8; BUMP_A_SIZE]>, &'a mut Bump<[u8; BUMP_B_SIZE]>), { - static mut LOCKED: bool = false; - // SAFETY: // The application is single-threaded, so we can safely use a // static variable as a lock against nested calls. @@ -64,3 +65,20 @@ where LOCKED = false; }; } + +// This function enables nested invocations of `run_with_bumps()`, +// which is necessary when the application needs to display a +// fatal error message and subsequently terminate. +// +// SAFETY: +// This function must be invoked exclusively in failure scenarios +// where the application is required to display a fatal error +// message and then shut down. It is safe to call this function +// only under these specific conditions. +pub unsafe fn unlock_bumps_on_failure() { + // The application is single-threaded, so we can safely use a + // static variable as a lock against nested calls. + unsafe { + LOCKED = false; + }; +} diff --git a/core/embed/rust/src/ui/shape/display/mod.rs b/core/embed/rust/src/ui/shape/display/mod.rs index bac7929040..f72561bebd 100644 --- a/core/embed/rust/src/ui/shape/display/mod.rs +++ b/core/embed/rust/src/ui/shape/display/mod.rs @@ -49,3 +49,5 @@ mod _new_rendering { } pub use _new_rendering::render_on_display; + +pub use bumps::unlock_bumps_on_failure; diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index e448f4577f..7aabc3aebd 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -28,7 +28,7 @@ pub use canvas::{ }; pub use circle::Circle; pub use corner_highlight::CornerHighlight; -pub use display::{render_on_canvas, render_on_display}; +pub use display::{render_on_canvas, render_on_display, unlock_bumps_on_failure}; #[cfg(feature = "ui_jpeg_decoder")] pub use jpeg::JpegImage; pub use qrcode::QrImage; diff --git a/core/embed/trezorhal/common.h b/core/embed/trezorhal/common.h index 28464b0270..e42dcfd99e 100644 --- a/core/embed/trezorhal/common.h +++ b/core/embed/trezorhal/common.h @@ -24,6 +24,7 @@ #include <stdint.h> #include "secbool.h" +#include "error_handling.h" #include "platform.h" #ifndef MIN_8bits @@ -53,20 +54,6 @@ void __attribute__((noreturn)) trezor_shutdown(void); -void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line, - const char *func); -void __attribute__((noreturn)) -error_shutdown(const char *label, const char *msg); - -void show_wipe_code_screen(void); -void show_pin_too_many_screen(void); - -#define ensure(expr, msg) \ - (((expr) == sectrue) \ - ? (void)0 \ - : __fatal_error(#expr, msg, __FILE__, __LINE__, __func__)) - void hal_delay(uint32_t ms); uint32_t hal_ticks_ms(); void hal_delay_us(uint16_t delay_us); diff --git a/core/embed/trezorhal/secret.h b/core/embed/trezorhal/secret.h index 953a383e08..e22ff9ad71 100644 --- a/core/embed/trezorhal/secret.h +++ b/core/embed/trezorhal/secret.h @@ -60,7 +60,3 @@ void secret_bhk_regenerate(void); // Disables access to the secret storage until next reset, if possible // This function is called by the bootloader before starting the firmware void secret_prepare_fw(secbool allow_run_with_secret, secbool trust_all); - -// Shows a screen informing the user that installation of custom firmware is -// currently restricted -void secret_show_install_restricted_screen(void); diff --git a/core/embed/trezorhal/stm32f4/board_capabilities.c b/core/embed/trezorhal/stm32f4/board_capabilities.c index 053987043f..7560aaf3af 100644 --- a/core/embed/trezorhal/stm32f4/board_capabilities.c +++ b/core/embed/trezorhal/stm32f4/board_capabilities.c @@ -22,9 +22,6 @@ #include "common.h" #include "model.h" -#define handle_fault(msg) \ - (__fatal_error("Fault detected", msg, __FILE__, __LINE__, __func__)) - static uint32_t board_name = 0; static struct BoardloaderVersion boardloader_version; @@ -53,7 +50,7 @@ void parse_boardloader_capabilities() { pos += 2; if (pos + length > end) { - handle_fault("Bad capabilities format."); + error_shutdown("Bad capabilities format"); } switch (tag) { diff --git a/core/embed/trezorhal/stm32f4/common.c b/core/embed/trezorhal/stm32f4/common.c index b29cc6b6a5..70e4828c7b 100644 --- a/core/embed/trezorhal/stm32f4/common.c +++ b/core/embed/trezorhal/stm32f4/common.c @@ -24,29 +24,18 @@ #include "common.h" #include "display.h" #include "model.h" -#include "terminal.h" -#ifdef FANCY_FATAL_ERROR -#include "rust_ui.h" -#endif #include "flash_otp.h" #include "platform.h" #include "rand.h" #include "supervise.h" -#include "mini_printf.h" #include "stm32f4xx_ll_utils.h" #ifdef TREZOR_MODEL_T #include "backlight_pwm.h" #endif -#ifdef RGB16 -#define COLOR_FATAL_ERROR RGB16(0x7F, 0x00, 0x00) -#else -#define COLOR_FATAL_ERROR COLOR_BLACK -#endif - uint32_t systick_val_copy = 0; // from util.s @@ -65,92 +54,6 @@ void __attribute__((noreturn)) trezor_shutdown(void) { ; } -void __attribute__((noreturn)) -error_uni(const char *label, const char *msg, const char *footer) { - display_orientation(0); - -#ifdef FANCY_FATAL_ERROR - screen_fatal_error_rust(label, msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); -#else - term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); - if (label) { - term_printf("%s\n", label); - } - if (msg) { - term_printf("%s\n", msg); - } - if (footer) { - term_printf("\n%s\n", footer); - } -#endif - display_backlight(255); - trezor_shutdown(); -} - -void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line, - const char *func) { - display_orientation(0); - display_backlight(255); - -#ifdef FANCY_FATAL_ERROR - char buf[256] = {0}; - mini_snprintf(buf, sizeof(buf), "%s: %d", file, line); - screen_fatal_error_rust("INTERNAL ERROR", msg != NULL ? msg : buf, - "PLEASE VISIT\nTREZOR.IO/RSOD"); -#else - term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); - term_printf("\nINTERNAL ERROR:\n"); - if (expr) { - term_printf("expr: %s\n", expr); - } - if (msg) { - term_printf("msg : %s\n", msg); - } - if (file) { - term_printf("file: %s:%d\n", file, line); - } - if (func) { - term_printf("func: %s\n", func); - } -#ifdef SCM_REVISION - const uint8_t *rev = (const uint8_t *)SCM_REVISION; - term_printf("rev : %02x%02x%02x%02x%02x\n", rev[0], rev[1], rev[2], rev[3], - rev[4]); -#endif - term_printf("\nPlease contact Trezor support.\n"); -#endif - trezor_shutdown(); -} - -void __attribute__((noreturn)) -error_shutdown(const char *label, const char *msg) { - display_orientation(0); - -#ifdef FANCY_FATAL_ERROR - - screen_fatal_error_rust(label, msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); -#else - term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); - if (label) { - term_printf("%s\n", label); - } - if (msg) { - term_printf("%s\n", msg); - } - term_printf("\nPLEASE VISIT TREZOR.IO/RSOD\n"); -#endif - display_backlight(255); - trezor_shutdown(); -} - -#ifndef NDEBUG -void __assert_func(const char *file, int line, const char *func, - const char *expr) { - __fatal_error(expr, "assert failed", file, line, func); -} -#endif - void hal_delay(uint32_t ms) { HAL_Delay(ms); } uint32_t hal_ticks_ms() { return HAL_GetTick(); } void hal_delay_us(uint16_t delay_us) { @@ -185,7 +88,7 @@ void clear_otg_hs_memory(void) { uint32_t __stack_chk_guard = 0; void __attribute__((noreturn)) __stack_chk_fail(void) { - error_shutdown("INTERNAL ERROR", "(SS)"); + error_shutdown("(SS)"); } uint8_t HW_ENTROPY_DATA[HW_ENTROPY_LEN]; @@ -230,15 +133,6 @@ void ensure_compatible_settings(void) { #endif } -void show_wipe_code_screen(void) { - error_uni("WIPE CODE ENTERED", "All data has been erased from the device", - "PLEASE RECONNECT\nTHE DEVICE"); -} -void show_pin_too_many_screen(void) { - error_uni("TOO MANY PIN ATTEMPTS", "All data has been erased from the device", - "PLEASE RECONNECT\nTHE DEVICE"); -} - void invalidate_firmware(void) { // erase start of the firmware (metadata) -> invalidate FW ensure(flash_unlock_write(), NULL); diff --git a/core/embed/trezorhal/stm32f4/fault_handlers.c b/core/embed/trezorhal/stm32f4/fault_handlers.c index ea8b8b471a..f36e286baf 100644 --- a/core/embed/trezorhal/stm32f4/fault_handlers.c +++ b/core/embed/trezorhal/stm32f4/fault_handlers.c @@ -5,19 +5,19 @@ void fault_handlers_init(void) { SCB->SHCSR |= (SCB_SHCSR_USGFAULTENA_Msk | SCB_SHCSR_BUSFAULTENA_Msk); } -void HardFault_Handler(void) { error_shutdown("INTERNAL ERROR", "(HF)"); } +void HardFault_Handler(void) { error_shutdown("(HF)"); } -void MemManage_Handler_MM(void) { error_shutdown("INTERNAL ERROR", "(MM)"); } +void MemManage_Handler_MM(void) { error_shutdown("(MM)"); } -void MemManage_Handler_SO(void) { error_shutdown("INTERNAL ERROR", "(SO)"); } +void MemManage_Handler_SO(void) { error_shutdown("(SO)"); } -void BusFault_Handler(void) { error_shutdown("INTERNAL ERROR", "(BF)"); } +void BusFault_Handler(void) { error_shutdown("(BF)"); } -void UsageFault_Handler(void) { error_shutdown("INTERNAL ERROR", "(UF)"); } +void UsageFault_Handler(void) { error_shutdown("(UF)"); } void NMI_Handler(void) { // Clock Security System triggered NMI if ((RCC->CIR & RCC_CIR_CSSF) != 0) { - error_shutdown("INTERNAL ERROR", "(CS)"); + error_shutdown("(CS)"); } } diff --git a/core/embed/trezorhal/stm32f4/secret.c b/core/embed/trezorhal/stm32f4/secret.c index 9a90511fde..e6c5cef2b4 100644 --- a/core/embed/trezorhal/stm32f4/secret.c +++ b/core/embed/trezorhal/stm32f4/secret.c @@ -98,21 +98,11 @@ secbool secret_optiga_get(uint8_t dest[SECRET_OPTIGA_KEY_LEN]) { return secret_read(dest, SECRET_OPTIGA_KEY_OFFSET, SECRET_OPTIGA_KEY_LEN); } -void secret_show_install_restricted_screen(void) { -#ifdef FANCY_FATAL_ERROR - display_clear(); - screen_fatal_error_rust( - "INSTALL RESTRICTED", - "Installation of custom firmware is currently restricted.", - "Please visit\ntrezor.io/bootloader"); -#endif -} - void secret_prepare_fw(secbool allow_run_with_secret, secbool _trust_all) { #ifdef USE_OPTIGA if (sectrue != allow_run_with_secret && sectrue != secret_wiped()) { - secret_show_install_restricted_screen(); - trezor_shutdown(); + // This function does not return + show_install_restricted_screen(); } #endif } diff --git a/core/embed/trezorhal/stm32u5/common.c b/core/embed/trezorhal/stm32u5/common.c index e7406df22e..0541aabbc0 100644 --- a/core/embed/trezorhal/stm32u5/common.c +++ b/core/embed/trezorhal/stm32u5/common.c @@ -23,26 +23,15 @@ #include "common.h" #include "display.h" -#include "secret.h" -#include "terminal.h" -#ifdef FANCY_FATAL_ERROR -#include "rust_ui.h" -#endif #include "flash_otp.h" #include "model.h" #include "platform.h" #include "rand.h" +#include "secret.h" #include "supervise.h" -#include "mini_printf.h" #include "stm32u5xx_ll_utils.h" -#ifdef RGB16 -#define COLOR_FATAL_ERROR RGB16(0x7F, 0x00, 0x00) -#else -#define COLOR_FATAL_ERROR COLOR_BLACK -#endif - uint32_t systick_val_copy = 0; // from util.s @@ -66,91 +55,6 @@ void __attribute__((noreturn)) trezor_shutdown(void) { ; } -void __attribute__((noreturn)) -error_uni(const char *label, const char *msg, const char *footer) { - display_orientation(0); - -#ifdef FANCY_FATAL_ERROR - screen_fatal_error_rust(label, msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); -#else - term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); - if (label) { - term_printf("%s\n", label); - } - if (msg) { - term_printf("%s\n", msg); - } - if (footer) { - term_printf("\n%s\n", footer); - } -#endif - display_backlight(255); - trezor_shutdown(); -} - -void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line, - const char *func) { - display_orientation(0); - display_backlight(255); - -#ifdef FANCY_FATAL_ERROR - char buf[256] = {0}; - mini_snprintf(buf, sizeof(buf), "%s: %d", file, line); - screen_fatal_error_rust("INTERNAL ERROR", msg != NULL ? msg : buf, - "PLEASE VISIT\nTREZOR.IO/RSOD"); -#else - term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); - term_printf("\nINTERNAL ERROR:\n"); - if (expr) { - term_printf("expr: %s\n", expr); - } - if (msg) { - term_printf("msg : %s\n", msg); - } - if (file) { - term_printf("file: %s:%d\n", file, line); - } - if (func) { - term_printf("func: %s\n", func); - } -#ifdef SCM_REVISION - const uint8_t *rev = (const uint8_t *)SCM_REVISION; - term_printf("rev : %02x%02x%02x%02x%02x\n", rev[0], rev[1], rev[2], rev[3], - rev[4]); -#endif - term_printf("\nPlease contact Trezor support.\n"); -#endif - trezor_shutdown(); -} - -void __attribute__((noreturn)) -error_shutdown(const char *label, const char *msg) { - display_orientation(0); - -#ifdef FANCY_FATAL_ERROR - screen_fatal_error_rust(label, msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); -#else - term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); - if (label) { - term_printf("%s\n", label); - } - if (msg) { - term_printf("%s\n", msg); - } - term_printf("\nPLEASE VISIT TREZOR.IO/RSOD\n"); -#endif - display_backlight(255); - trezor_shutdown(); -} - -#ifndef NDEBUG -void __assert_func(const char *file, int line, const char *func, - const char *expr) { - __fatal_error(expr, "assert failed", file, line, func); -} -#endif - void hal_delay(uint32_t ms) { HAL_Delay(ms); } uint32_t hal_ticks_ms() { return HAL_GetTick(); } void hal_delay_us(uint16_t delay_us) { @@ -168,7 +72,7 @@ void hal_delay_us(uint16_t delay_us) { uint32_t __stack_chk_guard = 0; void __attribute__((noreturn)) __stack_chk_fail(void) { - error_shutdown("INTERNAL ERROR", "(SS)"); + error_shutdown("(SS)"); } uint8_t HW_ENTROPY_DATA[HW_ENTROPY_LEN]; @@ -202,15 +106,6 @@ void collect_hw_entropy(void) { // where this setting might be unknown void ensure_compatible_settings(void) {} -void show_wipe_code_screen(void) { - error_uni("WIPE CODE ENTERED", "All data has been erased from the device", - "PLEASE RECONNECT\nTHE DEVICE"); -} -void show_pin_too_many_screen(void) { - error_uni("TOO MANY PIN ATTEMPTS", "All data has been erased from the device", - "PLEASE RECONNECT\nTHE DEVICE"); -} - void invalidate_firmware(void) { // on stm32u5, we need to disable the instruction cache before erasing the // firmware - otherwise, the write check will fail diff --git a/core/embed/trezorhal/stm32u5/fault_handlers.c b/core/embed/trezorhal/stm32u5/fault_handlers.c index 3da1a16571..bf19c8e8ef 100644 --- a/core/embed/trezorhal/stm32u5/fault_handlers.c +++ b/core/embed/trezorhal/stm32u5/fault_handlers.c @@ -5,11 +5,11 @@ void fault_handlers_init(void) { SCB->SHCSR |= (SCB_SHCSR_USGFAULTENA_Msk | SCB_SHCSR_BUSFAULTENA_Msk); } -void HardFault_Handler(void) { error_shutdown("INTERNAL ERROR", "(HF)"); } +void HardFault_Handler(void) { error_shutdown("(HF)"); } -void MemManage_Handler(void) { error_shutdown("INTERNAL ERROR", "(MM)"); } +void MemManage_Handler(void) { error_shutdown("(MM)"); } -void BusFault_Handler(void) { error_shutdown("INTERNAL ERROR", "(BF)"); } +void BusFault_Handler(void) { error_shutdown("(BF)"); } void UsageFault_Handler(void) { if (SCB->CFSR & SCB_CFSR_STKOF_Msk) { @@ -17,20 +17,20 @@ void UsageFault_Handler(void) { extern uint8_t _estack; // linker script symbol // Fix stack pointer __set_MSP((uint32_t)&_estack); - error_shutdown("INTERNAL ERROR", "(SO)"); + error_shutdown("(SO)"); } else { // Other error - error_shutdown("INTERNAL ERROR", "(UF)"); + error_shutdown("(UF)"); } } -void SecureFault_Handler(void) { error_shutdown("INTERNAL ERROR", "(SF)"); } +void SecureFault_Handler(void) { error_shutdown("(SF)"); } -void GTZC_IRQHandler(void) { error_shutdown("INTERNAL ERROR", "(IA)"); } +void GTZC_IRQHandler(void) { error_shutdown("(IA)"); } void NMI_Handler(void) { // Clock Security System triggered NMI if ((RCC->CIFR & RCC_CIFR_CSSF) != 0) { - error_shutdown("INTERNAL ERROR", "(CS)"); + error_shutdown("(CS)"); } } diff --git a/core/embed/trezorhal/stm32u5/secret.c b/core/embed/trezorhal/stm32u5/secret.c index ef2a096dc9..bfa107a965 100644 --- a/core/embed/trezorhal/stm32u5/secret.c +++ b/core/embed/trezorhal/stm32u5/secret.c @@ -239,12 +239,6 @@ void secret_erase(void) { ensure(flash_area_erase(&SECRET_AREA, NULL), "secret erase"); } -void secret_show_install_restricted_screen(void) { - // this should never happen on U5 - __fatal_error("INTERNAL ERROR", "Install restricted", __FILE__, __LINE__, - __func__); -} - void secret_prepare_fw(secbool allow_run_with_secret, secbool trust_all) { /** * The BHK is copied to the backup registers, which are accessible by the SAES diff --git a/core/embed/trezorhal/stm32u5/tamper.c b/core/embed/trezorhal/stm32u5/tamper.c index 68bee8da4a..6b74a54f48 100644 --- a/core/embed/trezorhal/stm32u5/tamper.c +++ b/core/embed/trezorhal/stm32u5/tamper.c @@ -238,7 +238,7 @@ void TAMP_IRQHandler(void) { TAMP->SCR = sr; #ifdef BOARDLOADER - error_shutdown("INTERNAL TAMPER", ""); + error_shutdown_ex("INTERNAL TAMPER", NULL, NULL); #else const char* reason = "UNKNOWN"; if (sr & TAMP_SR_TAMP1F) { @@ -268,6 +268,6 @@ void TAMP_IRQHandler(void) { } else if (sr & TAMP_SR_ITAMP13F) { reason = "ANALOG WDG3"; } - error_shutdown("INTERNAL TAMPER", reason); + error_shutdown_ex("INTERNAL TAMPER", reason, NULL); #endif } diff --git a/core/embed/trezorhal/unix/common.c b/core/embed/trezorhal/unix/common.c index aeeb46acdb..87700b9652 100644 --- a/core/embed/trezorhal/unix/common.c +++ b/core/embed/trezorhal/unix/common.c @@ -26,128 +26,16 @@ #include "common.h" #include "display.h" -#ifdef FANCY_FATAL_ERROR -#include "rust_ui.h" -#endif #include "memzero.h" -extern void main_clean_exit(int); - void __attribute__((noreturn)) trezor_shutdown(void) { - display_finish_actions(); printf("SHUTDOWN\n"); - main_clean_exit(3); - for (;;) - ; -} - -#ifdef RGB16 -#define COLOR_FATAL_ERROR RGB16(0x7F, 0x00, 0x00) -#else -// black on monochromatic displays -#define COLOR_FATAL_ERROR 0x0000 -#endif - -void __attribute__((noreturn)) -error_uni(const char *label, const char *msg, const char *footer) { - display_orientation(0); - -#ifdef FANCY_FATAL_ERROR - screen_fatal_error_rust(label, msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); -#else - term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); - if (label) { - term_printf("%s\n", label); - } - if (msg) { - term_printf("%s\n", msg); - } - if (footer) { - term_printf("\n%s\n", footer); - } -#endif - display_backlight(255); - hal_delay(3000); - trezor_shutdown(); -} - -void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line, - const char *func) { - display_orientation(0); - display_backlight(255); -#ifdef FANCY_FATAL_ERROR - if (msg == NULL) { - msg = "Unknown error"; - char buf[256] = {0}; - snprintf(buf, sizeof(buf), "%s: %d", file, line); - screen_fatal_error_rust("INTERNAL ERROR", buf, - "PLEASE VISIT\nTREZOR.IO/RSOD"); - } else { - screen_fatal_error_rust("INTERNAL ERROR", msg, - "PLEASE VISIT\nTREZOR.IO/RSOD"); - } -#else - term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); - term_printf("\nINTERNAL ERROR:\n"); - printf("\nINTERNAL ERROR:\n"); - if (expr) { - term_printf("expr: %s\n", expr); - printf("expr: %s\n", expr); - } - if (msg) { - term_printf("msg : %s\n", msg); - printf("msg : %s\n", msg); - } - if (file) { - term_printf("file: %s:%d\n", file, line); - printf("file: %s:%d\n", file, line); - } - if (func) { - term_printf("func: %s\n", func); - printf("func: %s\n", func); - } -#ifdef SCM_REVISION - const uint8_t *rev = (const uint8_t *)SCM_REVISION; - term_printf("rev : %02x%02x%02x%02x%02x\n", rev[0], rev[1], rev[2], rev[3], - rev[4]); - printf("rev : %02x%02x%02x%02x%02x\n", rev[0], rev[1], rev[2], rev[3], - rev[4]); -#endif - term_printf("\n\n\nHint:\nIsn't the emulator already running?\n"); - printf("Hint:\nIsn't the emulator already running?\n"); -#endif + // Wait some time to let the user see the displayed + // message before shutting down hal_delay(3000); - trezor_shutdown(); -} -void __attribute__((noreturn)) -error_shutdown(const char *label, const char *msg) { -#ifdef FANCY_FATAL_ERROR - screen_fatal_error_rust(label, msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); -#else - display_clear(); - display_bar(0, 0, DISPLAY_RESX, DISPLAY_RESY, COLOR_FATAL_ERROR); - int y = 32; - if (label) { - display_text(8, y, label, -1, FONT_NORMAL, COLOR_WHITE, COLOR_FATAL_ERROR); - printf("%s\n", label); - y += 32; - } - if (msg) { - display_text(8, y, msg, -1, FONT_NORMAL, COLOR_WHITE, COLOR_FATAL_ERROR); - printf("%s\n", msg); - y += 32; - } - y += 32; - display_text(8, y, "Please unplug the device.", -1, FONT_NORMAL, COLOR_WHITE, - COLOR_FATAL_ERROR); - printf("\nPlease unplug the device.\n"); -#endif - display_backlight(255); - hal_delay(5000); - exit(4); + exit(3); } void hal_delay(uint32_t ms) { usleep(1000 * ms); } @@ -161,7 +49,7 @@ uint32_t hal_ticks_ms() { static int SDLCALL emulator_event_filter(void *userdata, SDL_Event *event) { switch (event->type) { case SDL_QUIT: - trezor_shutdown(); + exit(3); return 0; case SDL_KEYUP: if (event->key.repeat) { @@ -169,7 +57,7 @@ static int SDLCALL emulator_event_filter(void *userdata, SDL_Event *event) { } switch (event->key.keysym.sym) { case SDLK_ESCAPE: - trezor_shutdown(); + exit(3); return 0; case SDLK_p: display_save("emu"); @@ -188,12 +76,3 @@ void emulator_poll_events(void) { uint8_t HW_ENTROPY_DATA[HW_ENTROPY_LEN]; void collect_hw_entropy(void) { memzero(HW_ENTROPY_DATA, HW_ENTROPY_LEN); } - -void show_wipe_code_screen(void) { - error_uni("WIPE CODE ENTERED", "All data has been erased from the device", - "PLEASE RECONNECT\nTHE DEVICE"); -} -void show_pin_too_many_screen(void) { - error_uni("TOO MANY PIN ATTEMPTS", "All data has been erased from the device", - "PLEASE RECONNECT\nTHE DEVICE"); -} diff --git a/core/embed/trezorhal/unix/usb.c b/core/embed/trezorhal/unix/usb.c index 1ae10be153..63fb1c6987 100644 --- a/core/embed/trezorhal/unix/usb.c +++ b/core/embed/trezorhal/unix/usb.c @@ -27,20 +27,12 @@ #include <time.h> #include <unistd.h> +#include "error_handling.h" #include "profile.h" #include "usb.h" #include "memzero.h" -void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line, - const char *func); - -#define ensure(expr, msg) \ - (((expr) == sectrue) \ - ? (void)0 \ - : __fatal_error(#expr, msg, __FILE__, __LINE__, __func__)) - // emulator opens UDP server and emulates HID/WebUSB interfaces // gracefully ignores all other USB interfaces diff --git a/core/embed/unix/main.c b/core/embed/unix/main.c index 2acd5b528b..dac4b1141b 100644 --- a/core/embed/unix/main.c +++ b/core/embed/unix/main.c @@ -407,16 +407,6 @@ STATIC void set_sys_argv(char *argv[], int argc, int start_arg) { } } -void main_clean_exit(int status) { - fflush(stdout); - fflush(stderr); - // sys.exit is disabled, so raise a SystemExit exception directly - nlr_raise(mp_obj_new_exception_arg1(&mp_type_SystemExit, - MP_OBJ_NEW_SMALL_INT(status))); - // the above shouldn't return, but make sure we exit just in case - exit(status); -} - #ifdef _WIN32 #define PATHLIST_SEP_CHAR ';' #else From f5203011c57a86ba685931af8bb2df238e0df601 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Tue, 11 Jun 2024 13:37:10 +0200 Subject: [PATCH 293/626] feat(core/rust): introduce dbg_print and improve errors printing [no changelog] --- core/embed/rust/src/debug.rs | 33 +++++++++++++++++++ core/embed/rust/src/lib.rs | 11 +++---- core/embed/rust/src/trezorhal/fatal_error.rs | 20 +++++++++++ core/embed/rust/src/ui/shape/display/bumps.rs | 18 +++++----- 4 files changed, 67 insertions(+), 15 deletions(-) create mode 100644 core/embed/rust/src/debug.rs diff --git a/core/embed/rust/src/debug.rs b/core/embed/rust/src/debug.rs new file mode 100644 index 0000000000..17297b0313 --- /dev/null +++ b/core/embed/rust/src/debug.rs @@ -0,0 +1,33 @@ +use ufmt; + +#[cfg(feature = "micropython")] +use crate::micropython; + +pub struct DebugConsole; + +impl ufmt::uWrite for DebugConsole { + type Error = core::convert::Infallible; + + fn write_str(&mut self, s: &str) -> Result<(), Self::Error> { + #[cfg(feature = "micropython")] + micropython::print::print(s); + + // TODO: add alternative if micropython is not available + + Ok(()) + } +} + +#[macro_export] +macro_rules! dbg_println { + ($($args:tt)*) => { + ufmt::uwriteln!($crate::debug::DebugConsole, $($args)*).ok(); + }; +} + +#[macro_export] +macro_rules! dbg_print { + ($($args:tt)*) => { + ufmt::uwrite!($crate::debug::DebugConsole, $($args)*).ok(); + }; +} diff --git a/core/embed/rust/src/lib.rs b/core/embed/rust/src/lib.rs index 3727d38d32..c51044faad 100644 --- a/core/embed/rust/src/lib.rs +++ b/core/embed/rust/src/lib.rs @@ -39,6 +39,10 @@ pub mod translations; pub mod ui; pub mod strutil; +#[cfg(feature = "debug")] +#[macro_use] +pub mod debug; + #[cfg(feature = "debug")] #[cfg(not(test))] #[panic_handler] @@ -48,13 +52,8 @@ pub mod strutil; fn panic_debug(panic_info: &core::panic::PanicInfo) -> ! { // Filling at least the file and line information, if available. // TODO: find out how to display message from panic_info.message() - if let Some(location) = panic_info.location() { - let file = location.file(); - print!(file); - print!(":"); - println!(inttostr!(location.line())); - trezorhal::fatal_error::__fatal_error("", "rs", file, location.line(), ""); + trezorhal::fatal_error::__fatal_error("", "rs", location.file(), location.line(), ""); } else { trezorhal::fatal_error::__fatal_error("", "rs", "", 0, ""); } diff --git a/core/embed/rust/src/trezorhal/fatal_error.rs b/core/embed/rust/src/trezorhal/fatal_error.rs index 64c8fbdc02..8f66c6bc47 100644 --- a/core/embed/rust/src/trezorhal/fatal_error.rs +++ b/core/embed/rust/src/trezorhal/fatal_error.rs @@ -10,6 +10,9 @@ use crate::ui::{ ui_features::{ModelUI, UIFeaturesCommon}, }; +#[cfg(feature = "debug")] +use crate::dbg_println; + fn shutdown() -> ! { unsafe { ffi::trezor_shutdown() } } @@ -32,6 +35,23 @@ pub fn error_shutdown(title: &str, msg: &str, footer: &str) -> ! { /// In debug mode, also prints the error message to the console. #[inline(never)] // saves few kilobytes of flash pub fn __fatal_error(_expr: &str, msg: &str, _file: &str, _line: u32, _func: &str) -> ! { + #[cfg(feature = "debug")] + { + dbg_println!("=== FATAL ERROR"); + + if _line != 0 { + dbg_println!("Location: {}:{}", _file, _line); + } + if !_expr.is_empty() { + dbg_println!("Expression: {}", _expr); + } + if !msg.is_empty() { + dbg_println!("Message: {}", msg); + } + + dbg_println!("==="); + } + error_shutdown("INTERNAL_ERROR", msg, "PLEASE VISIT\nTREZOR.IO/RSOD"); } diff --git a/core/embed/rust/src/ui/shape/display/bumps.rs b/core/embed/rust/src/ui/shape/display/bumps.rs index 70e0621347..c9af25872f 100644 --- a/core/embed/rust/src/ui/shape/display/bumps.rs +++ b/core/embed/rust/src/ui/shape/display/bumps.rs @@ -66,15 +66,15 @@ where }; } -// This function enables nested invocations of `run_with_bumps()`, -// which is necessary when the application needs to display a -// fatal error message and subsequently terminate. -// -// SAFETY: -// This function must be invoked exclusively in failure scenarios -// where the application is required to display a fatal error -// message and then shut down. It is safe to call this function -// only under these specific conditions. +/// This function enables nested invocations of `run_with_bumps()`, +/// which is necessary when the application needs to display a +/// fatal error message and subsequently terminate. +/// +/// # Safety +/// This function must be invoked exclusively in failure scenarios +/// where the application is required to display a fatal error +/// message and then shut down. It is safe to call this function +/// only under these specific conditions. pub unsafe fn unlock_bumps_on_failure() { // The application is single-threaded, so we can safely use a // static variable as a lock against nested calls. From 06faae8f82044d09c1cb4d136a7f673ab4cbd9fc Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Tue, 11 Jun 2024 14:59:16 +0200 Subject: [PATCH 294/626] refactor(core/rust): replace panic! by fatal_error! [no changelog] --- core/embed/rust/src/lib.rs | 2 +- core/embed/rust/src/micropython/iter.rs | 2 +- core/embed/rust/src/trezorhal/fatal_error.rs | 18 +++++++++--------- core/embed/rust/src/trezorhal/translations.rs | 2 +- core/embed/rust/src/ui/animation.rs | 2 +- core/embed/rust/src/ui/component/base.rs | 8 ++++---- core/embed/rust/src/ui/component/placed.rs | 4 ++-- .../rust/src/ui/component/text/paragraphs.rs | 2 +- core/embed/rust/src/ui/display/font.rs | 2 +- core/embed/rust/src/ui/layout/obj.rs | 2 +- core/embed/rust/src/ui/model_mercury/layout.rs | 2 +- .../ui/model_tr/component/hold_to_confirm.rs | 2 +- core/embed/rust/src/ui/model_tt/layout.rs | 2 +- core/embed/rust/src/ui/shape/bar.rs | 2 +- core/embed/rust/src/ui/shape/circle.rs | 2 +- core/embed/rust/src/ui/shape/qrcode.rs | 2 +- core/embed/rust/src/ui/util.rs | 4 +--- 17 files changed, 29 insertions(+), 31 deletions(-) diff --git a/core/embed/rust/src/lib.rs b/core/embed/rust/src/lib.rs index c51044faad..c9d1b2260b 100644 --- a/core/embed/rust/src/lib.rs +++ b/core/embed/rust/src/lib.rs @@ -73,7 +73,7 @@ fn panic(_info: &core::panic::PanicInfo) -> ! { // raises a Hard Fault on hardware. // // Otherwise, use `unwrap!` macro from trezorhal. - fatal_error!("", "rs"); + fatal_error!("rs"); } #[cfg(not(target_arch = "arm"))] diff --git a/core/embed/rust/src/micropython/iter.rs b/core/embed/rust/src/micropython/iter.rs index afbfcf9ed6..fbc3220466 100644 --- a/core/embed/rust/src/micropython/iter.rs +++ b/core/embed/rust/src/micropython/iter.rs @@ -87,7 +87,7 @@ impl<'a> Iterator for Iter<'a> { self.iter_buf.caught_exception = exc; None } - Err(_) => panic!("unexpected error"), + Err(_) => fatal_error!("Unexpected error"), Ok(item) if item == Obj::const_stop_iteration() => { self.finished = true; None diff --git a/core/embed/rust/src/trezorhal/fatal_error.rs b/core/embed/rust/src/trezorhal/fatal_error.rs index 8f66c6bc47..3d8ca31b38 100644 --- a/core/embed/rust/src/trezorhal/fatal_error.rs +++ b/core/embed/rust/src/trezorhal/fatal_error.rs @@ -108,19 +108,19 @@ macro_rules! unwrap { macro_rules! ensure { ($what:expr, $error:expr) => { if !($what) { - fatal_error!(stringify!($what), $error); + crate::trezorhal::fatal_error::__fatal_error( + stringify!($what), + $error, + file!(), + line!(), + function_name!(), + ); } }; } macro_rules! fatal_error { - ($expr:expr, $msg:expr) => {{ - crate::trezorhal::fatal_error::__fatal_error( - stringify!($expr), - $msg, - file!(), - line!(), - function_name!(), - ); + ($msg:expr) => {{ + crate::trezorhal::fatal_error::__fatal_error("", $msg, file!(), line!(), function_name!()); }}; } diff --git a/core/embed/rust/src/trezorhal/translations.rs b/core/embed/rust/src/trezorhal/translations.rs index 7761087dde..edac8f0543 100644 --- a/core/embed/rust/src/trezorhal/translations.rs +++ b/core/embed/rust/src/trezorhal/translations.rs @@ -7,7 +7,7 @@ pub unsafe fn get_blob<'a>() -> &'a [u8] { let mut len: u32 = 0; let ptr = unsafe { ffi::translations_read(&mut len, 0) }; if ptr.is_null() { - fatal_error!("Translations read failed", ""); + fatal_error!("Translations read failed"); } // SAFETY: The pointer is always valid. unsafe { core::slice::from_raw_parts(ptr, len as usize) } diff --git a/core/embed/rust/src/ui/animation.rs b/core/embed/rust/src/ui/animation.rs index f724242078..af0709c841 100644 --- a/core/embed/rust/src/ui/animation.rs +++ b/core/embed/rust/src/ui/animation.rs @@ -57,7 +57,7 @@ impl<T> Animation<T> { } else { // Duration is too large to be added to an `Instant`. #[cfg(feature = "ui_debug")] - panic!("offset is too large"); + fatal_error!("Offset is too large"); } } diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 16929b8cd1..3104180c77 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -226,7 +226,7 @@ impl<T> Root<T> { if let Some(ref mut c) = self.inner { c } else { - fatal_error!("deallocated", "Root object is deallocated") + fatal_error!("Root object is deallocated") } } @@ -234,7 +234,7 @@ impl<T> Root<T> { if let Some(ref c) = self.inner { c } else { - fatal_error!("deallocated", "Root object is deallocated") + fatal_error!("Root object is deallocated") } } @@ -459,7 +459,7 @@ where // Messages raised during a `RequestPaint` dispatch are not propagated, let's // make sure we don't do that. #[cfg(feature = "ui_debug")] - panic!("cannot raise messages during RequestPaint"); + fatal_error!("Cannot raise messages during RequestPaint"); } // Make sure to at least a propagate the paint flag upwards (in case there are // no `Child` instances in `self`, paint would not get automatically requested @@ -662,7 +662,7 @@ impl EventCtx { // The timer queue is full, this would be a development error in the layout // layer. Let's panic in the debug env. #[cfg(feature = "ui_debug")] - panic!("timer queue is full"); + fatal_error!("Timer queue is full"); } } diff --git a/core/embed/rust/src/ui/component/placed.rs b/core/embed/rust/src/ui/component/placed.rs index 18fcc1e186..d3901203f3 100644 --- a/core/embed/rust/src/ui/component/placed.rs +++ b/core/embed/rust/src/ui/component/placed.rs @@ -163,7 +163,7 @@ where let mut border = self.border; let area = match self.align.0 { Alignment::Start => bounds.split_left(self.size.x).0, - Alignment::Center => panic!("alignment not supported"), + Alignment::Center => fatal_error!("Alignment not supported"), Alignment::End => { border.x = -border.x; bounds.split_right(self.size.x).1 @@ -171,7 +171,7 @@ where }; let area = match self.align.1 { Alignment::Start => area.split_top(self.size.y).0, - Alignment::Center => panic!("alignment not supported"), + Alignment::Center => fatal_error!("Alignment not supported"), Alignment::End => { border.y = -border.y; area.split_bottom(self.size.y).1 diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index 34ae7a9e0c..9e3b54677c 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -766,7 +766,7 @@ impl<'a, const N: usize> VecExt<'a> for Vec<Paragraph<'a>, N> { } if self.push(paragraph).is_err() { #[cfg(feature = "ui_debug")] - panic!("paragraph list is full"); + fatal_error!("Paragraph list is full"); } self } diff --git a/core/embed/rust/src/ui/display/font.rs b/core/embed/rust/src/ui/display/font.rs index 5c65d93854..2814f7fa38 100644 --- a/core/embed/rust/src/ui/display/font.rs +++ b/core/embed/rust/src/ui/display/font.rs @@ -47,7 +47,7 @@ impl Glyph { 2 => (width * height + 3) / 4, // packed bits 4 => (width + 1) / 2 * height, // row aligned to bytes 8 => width * height, - _ => panic!(), + _ => fatal_error!("Unsupported font bpp"), }; Glyph { diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 315744e612..f01f1a8766 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -485,7 +485,7 @@ extern "C" fn ui_layout_request_complete_repaint(this: Obj) -> Obj { // Messages raised during a `RequestPaint` dispatch are not propagated, let's // make sure we don't do that. #[cfg(feature = "ui_debug")] - panic!("cannot raise messages during RequestPaint"); + fatal_error!("Cannot raise messages during RequestPaint"); }; this.obj_request_clear(); Ok(Obj::const_none()) diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index d0641fa2cd..ad12ca0517 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -133,7 +133,7 @@ where if let Some(word) = self.mnemonic() { word.try_into() } else { - panic!("invalid mnemonic") + fatal_error!("Invalid mnemonic") } } MnemonicKeyboardMsg::Previous => "".try_into(), diff --git a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs index d0afb1e2cf..5cd104cb3c 100644 --- a/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/hold_to_confirm.rs @@ -49,7 +49,7 @@ impl HoldToConfirm { ButtonContent::Text(text) => { Self::text(pos, text, LoaderStyleSheet::default_loader(), duration) } - ButtonContent::Icon(_) => panic!("Icon is not supported"), + ButtonContent::Icon(_) => fatal_error!("Icon is not supported"), } } diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 8e638bb3d3..538cc91b97 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -162,7 +162,7 @@ where if let Some(word) = self.mnemonic() { word.try_into() } else { - panic!("invalid mnemonic") + fatal_error!("Invalid mnemonic") } } MnemonicKeyboardMsg::Previous => "".try_into(), diff --git a/core/embed/rust/src/ui/shape/bar.rs b/core/embed/rust/src/ui/shape/bar.rs index 97f5d8dc64..238d33c35c 100644 --- a/core/embed/rust/src/ui/shape/bar.rs +++ b/core/embed/rust/src/ui/shape/bar.rs @@ -75,7 +75,7 @@ impl Shape<'_> for Bar { // is not supported. If we needed it, we would have to // introduce a new function in RgbCanvas. - // TODO: panic! in unsupported scenarious + // TODO: fatal_error! in unsupported scenarious let th = match self.fg_color { Some(_) => self.thickness, diff --git a/core/embed/rust/src/ui/shape/circle.rs b/core/embed/rust/src/ui/shape/circle.rs index af2558466f..c4cc309fee 100644 --- a/core/embed/rust/src/ui/shape/circle.rs +++ b/core/embed/rust/src/ui/shape/circle.rs @@ -91,7 +91,7 @@ impl Shape<'_> for Circle { // is not supported. If we needed it, we would have to // introduce RgbCanvas::draw_ring() function. - // TODO: panic! in unsupported scenarious + // TODO: fatal_error! in unsupported scenarious let th = match self.fg_color { Some(_) => self.thickness, None => 0, diff --git a/core/embed/rust/src/ui/shape/qrcode.rs b/core/embed/rust/src/ui/shape/qrcode.rs index 491dae033e..1a0249e2db 100644 --- a/core/embed/rust/src/ui/shape/qrcode.rs +++ b/core/embed/rust/src/ui/shape/qrcode.rs @@ -30,7 +30,7 @@ pub struct QrImage { impl QrImage { pub fn new(area: Rect, qrcode: &QrCode) -> Self { if area.width() < qrcode.size() as i16 || area.height() < qrcode.size() as i16 { - panic!("Too small area"); + fatal_error!("Too small area"); } let mut result = QrImage { diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index e27b94c1f4..6f5ede8a72 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -22,9 +22,7 @@ impl<T, E> ResultExt for Result<T, E> { fn assert_if_debugging_ui(self, #[allow(unused)] message: &str) { #[cfg(feature = "ui_debug")] if self.is_err() { - print!("Panic from assert_if_debugging_ui: "); - println!(message); - panic!("{}", message); + fatal_error!(message); } } } From 0f1cac9695ee33ca8674d8ff199bb7c2fc23c9cc Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Wed, 12 Jun 2024 08:57:53 +0200 Subject: [PATCH 295/626] refactor(core): optimize assert/fatal_error for reduced flash footprint [no changelog] --- core/embed/lib/assert.h | 55 ++++++++++++++++++++ core/embed/lib/error_handling.c | 25 +++------ core/embed/lib/error_handling.h | 7 +-- core/embed/rust/src/lib.rs | 4 +- core/embed/rust/src/trezorhal/fatal_error.rs | 45 ++++------------ legacy/common.c | 12 +++-- legacy/common.h | 7 +-- legacy/firmware/trezor.c | 4 +- storage/storage.c | 16 +++--- storage/tests/c/common.c | 9 +--- storage/tests/c/common.h | 7 +-- storage/tests/c3/common.c | 9 +--- storage/tests/c3/common.h | 7 +-- storage/tests/c3/storage.c | 16 +++--- 14 files changed, 106 insertions(+), 117 deletions(-) create mode 100644 core/embed/lib/assert.h diff --git a/core/embed/lib/assert.h b/core/embed/lib/assert.h new file mode 100644 index 0000000000..511000f977 --- /dev/null +++ b/core/embed/lib/assert.h @@ -0,0 +1,55 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef LIB_ASSERT_H +#define LIB_ASSERT_H + +// This file overrides the standard `assert` macro to +// save space in flash memory. +// +// This file will be included instead of the standard assert.h +// as it is passed to the compiler with -include before the +// paths to the standard libraries. +// +// Our custom assert macro eliminates printing of the +// expression and prints only a short file name and line number. + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef NDEBUG + +void __attribute__((noreturn)) +__fatal_error(const char *msg, const char *file, int line); + +#define assert(expr) \ + ((expr) ? (void)0 : __fatal_error("Assert", __FILE_NAME__, __LINE__)) + +#else + +#define assert(expr) ((void)0) + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // LIB_ASSERT_H diff --git a/core/embed/lib/error_handling.c b/core/embed/lib/error_handling.c index ca5f3e73bc..6d9361e475 100644 --- a/core/embed/lib/error_handling.c +++ b/core/embed/lib/error_handling.c @@ -64,28 +64,24 @@ void __attribute__((noreturn)) error_shutdown(const char *message) { } void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line, - const char *func) { +__fatal_error(const char *msg, const char *file, int line) { #ifdef FANCY_FATAL_ERROR - char buf[256] = {0}; - mini_snprintf(buf, sizeof(buf), "%s: %d", file, line); - error_shutdown(msg != NULL ? msg : buf); + if (msg == NULL) { + char buf[128] = {0}; + mini_snprintf(buf, sizeof(buf), "%s:%d", file, line); + msg = buf; + } + error_shutdown(msg); #else display_orientation(0); term_set_color(COLOR_WHITE, COLOR_FATAL_ERROR); term_printf("\nINTERNAL ERROR:\n"); - if (expr) { - term_printf("expr: %s\n", expr); - } if (msg) { term_printf("msg : %s\n", msg); } if (file) { term_printf("file: %s:%d\n", file, line); } - if (func) { - term_printf("func: %s\n", func); - } #ifdef SCM_REVISION const uint8_t *rev = (const uint8_t *)SCM_REVISION; term_printf("rev : %02x%02x%02x%02x%02x\n", rev[0], rev[1], rev[2], rev[3], @@ -97,13 +93,6 @@ __fatal_error(const char *expr, const char *msg, const char *file, int line, #endif } -#ifndef NDEBUG -void __assert_func(const char *file, int line, const char *func, - const char *expr) { - __fatal_error(expr, "assert failed", file, line, func); -} -#endif - void __attribute__((noreturn)) show_wipe_code_screen(void) { error_shutdown_ex("WIPE CODE ENTERED", "All data has been erased from the device", diff --git a/core/embed/lib/error_handling.h b/core/embed/lib/error_handling.h index c811600d6b..574309ef42 100644 --- a/core/embed/lib/error_handling.h +++ b/core/embed/lib/error_handling.h @@ -35,15 +35,12 @@ void __attribute__((noreturn)) error_shutdown(const char *message); // Do not use this function directly, use the `ensure()` macro instead. void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line, - const char *func); +__fatal_error(const char *msg, const char *file, int line); // Checks for an expression and if it is false, shows an error message // and shuts down the device. #define ensure(expr, msg) \ - (((expr) == sectrue) \ - ? (void)0 \ - : __fatal_error(#expr, msg, __FILE__, __LINE__, __func__)) + (((expr) == sectrue) ? (void)0 : __fatal_error(msg, __FILE_NAME__, __LINE__)) // Shows WIPE CODE ENTERED screeen and shuts down the device. void __attribute__((noreturn)) show_wipe_code_screen(void); diff --git a/core/embed/rust/src/lib.rs b/core/embed/rust/src/lib.rs index c9d1b2260b..57c86e0dfa 100644 --- a/core/embed/rust/src/lib.rs +++ b/core/embed/rust/src/lib.rs @@ -53,9 +53,9 @@ fn panic_debug(panic_info: &core::panic::PanicInfo) -> ! { // Filling at least the file and line information, if available. // TODO: find out how to display message from panic_info.message() if let Some(location) = panic_info.location() { - trezorhal::fatal_error::__fatal_error("", "rs", location.file(), location.line(), ""); + trezorhal::fatal_error::__fatal_error("rs", location.file(), location.line()); } else { - trezorhal::fatal_error::__fatal_error("", "rs", "", 0, ""); + trezorhal::fatal_error::__fatal_error("rs", "", 0); } } diff --git a/core/embed/rust/src/trezorhal/fatal_error.rs b/core/embed/rust/src/trezorhal/fatal_error.rs index 3d8ca31b38..9c22fff3b8 100644 --- a/core/embed/rust/src/trezorhal/fatal_error.rs +++ b/core/embed/rust/src/trezorhal/fatal_error.rs @@ -34,7 +34,7 @@ pub fn error_shutdown(title: &str, msg: &str, footer: &str) -> ! { /// Shows an error message on the screen and shuts down the device. /// In debug mode, also prints the error message to the console. #[inline(never)] // saves few kilobytes of flash -pub fn __fatal_error(_expr: &str, msg: &str, _file: &str, _line: u32, _func: &str) -> ! { +pub fn __fatal_error(msg: &str, _file: &str, _line: u32) -> ! { #[cfg(feature = "debug")] { dbg_println!("=== FATAL ERROR"); @@ -42,9 +42,6 @@ pub fn __fatal_error(_expr: &str, msg: &str, _file: &str, _line: u32, _func: &st if _line != 0 { dbg_println!("Location: {}:{}", _file, _line); } - if !_expr.is_empty() { - dbg_println!("Expression: {}", _expr); - } if !msg.is_empty() { dbg_println!("Message: {}", msg); } @@ -56,49 +53,31 @@ pub fn __fatal_error(_expr: &str, msg: &str, _file: &str, _line: u32, _func: &st } pub trait UnwrapOrFatalError<T> { - fn unwrap_or_fatal_error(self, expr: &str, msg: &str, file: &str, line: u32, func: &str) -> T; + fn unwrap_or_fatal_error(self, msg: &str, file: &str, line: u32) -> T; } impl<T> UnwrapOrFatalError<T> for Option<T> { - fn unwrap_or_fatal_error(self, expr: &str, msg: &str, file: &str, line: u32, func: &str) -> T { + fn unwrap_or_fatal_error(self, msg: &str, file: &str, line: u32) -> T { match self { Some(x) => x, - None => __fatal_error(expr, msg, file, line, func), + None => __fatal_error(msg, file, line), } } } impl<T, E> UnwrapOrFatalError<T> for Result<T, E> { - fn unwrap_or_fatal_error(self, expr: &str, msg: &str, file: &str, line: u32, func: &str) -> T { + fn unwrap_or_fatal_error(self, msg: &str, file: &str, line: u32) -> T { match self { Ok(x) => x, - Err(_) => __fatal_error(expr, msg, file, line, func), + Err(_) => __fatal_error(msg, file, line), } } } -macro_rules! function_name { - () => {{ - #[cfg(not(feature = "bootloader"))] - { - fn f() {} - fn type_name_of<T>(_: T) -> &'static str { - core::any::type_name::<T>() - } - let name = type_name_of(f); - name.get(..name.len() - 3).unwrap_or("") - } - #[cfg(feature = "bootloader")] - { - "" - } - }}; -} - macro_rules! unwrap { ($e:expr, $msg:expr) => {{ use crate::trezorhal::fatal_error::UnwrapOrFatalError; - $e.unwrap_or_fatal_error(stringify!($e), $msg, file!(), line!(), function_name!()) + $e.unwrap_or_fatal_error($msg, file!(), line!()) }}; ($expr:expr) => { unwrap!($expr, "unwrap failed") @@ -108,19 +87,13 @@ macro_rules! unwrap { macro_rules! ensure { ($what:expr, $error:expr) => { if !($what) { - crate::trezorhal::fatal_error::__fatal_error( - stringify!($what), - $error, - file!(), - line!(), - function_name!(), - ); + crate::trezorhal::fatal_error::__fatal_error($error, file!(), line!()); } }; } macro_rules! fatal_error { ($msg:expr) => {{ - crate::trezorhal::fatal_error::__fatal_error("", $msg, file!(), line!(), function_name!()); + crate::trezorhal::fatal_error::__fatal_error($msg, file!(), line!()); }}; } diff --git a/legacy/common.c b/legacy/common.c index 0003588fe4..b04f8dfd7d 100644 --- a/legacy/common.c +++ b/legacy/common.c @@ -33,8 +33,7 @@ uint8_t HW_ENTROPY_DATA[HW_ENTROPY_LEN]; static HMAC_DRBG_CTX drbg_ctx; void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line_num, - const char *func) { +__fatal_error(const char *msg, const char *file, int line_num) { const BITMAP *icon = &bmp_icon_error; char line[128] = {0}; int y = icon->height + 3; @@ -44,7 +43,7 @@ __fatal_error(const char *expr, const char *msg, const char *file, int line_num, oledDrawStringCenter(OLED_WIDTH / 2, (icon->height - FONT_HEIGHT) / 2 + 1, "FATAL ERROR", FONT_STANDARD); - snprintf(line, sizeof(line), "Expr: %s", expr ? expr : "(null)"); + snprintf(line, sizeof(line), "Expr: %s", "(null)"); oledDrawString(0, y, line, FONT_STANDARD); y += FONT_HEIGHT + 1; @@ -59,7 +58,7 @@ __fatal_error(const char *expr, const char *msg, const char *file, int line_num, oledDrawString(0, y, label, FONT_STANDARD); y += FONT_HEIGHT + 1; - snprintf(line, sizeof(line), "Func: %s", func ? func : "(null)"); + snprintf(line, sizeof(line), "Func: %s", "(null)"); oledDrawString(0, y, line, FONT_STANDARD); y += FONT_HEIGHT + 1; @@ -80,7 +79,10 @@ error_shutdown(const char *line1, const char *line2, const char *line3, #ifndef NDEBUG void __assert_func(const char *file, int line, const char *func, const char *expr) { - __fatal_error(expr, "assert failed", file, line, func); + (void)func; + (void)expr; + + __fatal_error("assert failed", file, line); } #endif diff --git a/legacy/common.h b/legacy/common.h index 399818ba3b..42c1d3ad47 100644 --- a/legacy/common.h +++ b/legacy/common.h @@ -28,8 +28,7 @@ extern uint8_t HW_ENTROPY_DATA[HW_ENTROPY_LEN]; void __attribute__((noreturn)) -__fatal_error(const char *expr, const char *msg, const char *file, int line, - const char *func); +__fatal_error(const char *msg, const char *file, int line); void __attribute__((noreturn)) error_shutdown(const char *line1, const char *line2, const char *line3, const char *line4); @@ -37,9 +36,7 @@ void show_wipe_code_screen(void); void show_pin_too_many_screen(void); #define ensure(expr, msg) \ - (((expr) == sectrue) \ - ? (void)0 \ - : __fatal_error(#expr, msg, __FILE__, __LINE__, __func__)) + (((expr) == sectrue) ? (void)0 : __fatal_error(msg, __FILE__, __LINE__)) void hal_delay(uint32_t ms); diff --git a/legacy/firmware/trezor.c b/legacy/firmware/trezor.c index e326dce4f5..477e9e378e 100644 --- a/legacy/firmware/trezor.c +++ b/legacy/firmware/trezor.c @@ -45,13 +45,13 @@ #ifdef USE_SECP256K1_ZKP void secp256k1_default_illegal_callback_fn(const char *str, void *data) { (void)data; - __fatal_error(NULL, str, __FILE__, __LINE__, __func__); + __fatal_error(str, __FILE__, __LINE__); return; } void secp256k1_default_error_callback_fn(const char *str, void *data) { (void)data; - __fatal_error(NULL, str, __FILE__, __LINE__, __func__); + __fatal_error(str, __FILE__, __LINE__); return; } #endif diff --git a/storage/storage.c b/storage/storage.c index 069b51483b..591fb7e5d3 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -158,9 +158,8 @@ static const uint8_t FALSE_BYTE = 0x00; static const uint32_t TRUE_WORD = 0xC35A69A5; static const uint32_t FALSE_WORD = 0x3CA5965A; -static void __handle_fault(const char *msg, const char *file, int line, - const char *func); -#define handle_fault(msg) (__handle_fault(msg, __FILE__, __LINE__, __func__)) +static void __handle_fault(const char *msg, const char *file, int line); +#define handle_fault(msg) (__handle_fault(msg, __FILE_NAME__, __LINE__)) static uint32_t pin_to_int(const uint8_t *pin, size_t pin_len); static secbool storage_upgrade(void); @@ -1356,15 +1355,14 @@ void storage_wipe(void) { init_wiped_storage(); } -static void __handle_fault(const char *msg, const char *file, int line, - const char *func) { +static void __handle_fault(const char *msg, const char *file, int line) { CONFIDENTIAL static secbool in_progress = secfalse; // If fault handling is already in progress, then we are probably facing a // fault injection attack, so wipe. if (secfalse != in_progress) { storage_wipe(); - __fatal_error("Fault detected", msg, file, line, func); + __fatal_error(msg, file, line); } // We use the PIN fail counter as a fault counter. Increment the counter, @@ -1373,19 +1371,19 @@ static void __handle_fault(const char *msg, const char *file, int line, uint32_t ctr = 0; if (sectrue != pin_get_fails(&ctr)) { storage_wipe(); - __fatal_error("Fault detected", msg, file, line, func); + __fatal_error(msg, file, line); } if (sectrue != storage_pin_fails_increase()) { storage_wipe(); - __fatal_error("Fault detected", msg, file, line, func); + __fatal_error(msg, file, line); } uint32_t ctr_new = 0; if (sectrue != pin_get_fails(&ctr_new) || ctr + 1 != ctr_new) { storage_wipe(); } - __fatal_error("Fault detected", msg, file, line, func); + __fatal_error(msg, file, line); } /* diff --git a/storage/tests/c/common.c b/storage/tests/c/common.c index 82234756bc..59ac49ef37 100644 --- a/storage/tests/c/common.c +++ b/storage/tests/c/common.c @@ -28,21 +28,14 @@ void __shutdown(void) { exit(3); } -void __fatal_error(const char *expr, const char *msg, const char *file, - int line, const char *func) { +void __fatal_error(const char *msg, const char *file, int line) { printf("\nFATAL ERROR:\n"); - if (expr) { - printf("expr: %s\n", expr); - } if (msg) { printf("msg : %s\n", msg); } if (file) { printf("file: %s:%d\n", file, line); } - if (func) { - printf("func: %s\n", func); - } __shutdown(); } diff --git a/storage/tests/c/common.h b/storage/tests/c/common.h index 845dbf0c01..9b4952df4f 100644 --- a/storage/tests/c/common.h +++ b/storage/tests/c/common.h @@ -22,16 +22,13 @@ #include "secbool.h" -void __fatal_error(const char *expr, const char *msg, const char *file, - int line, const char *func); +void __fatal_error(const char *msg, const char *file, int line); void show_wipe_code_screen(void); void show_pin_too_many_screen(void); #define ensure(expr, msg) \ - (((expr) == sectrue) \ - ? (void)0 \ - : __fatal_error(#expr, msg, __FILE__, __LINE__, __func__)) + (((expr) == sectrue) ? (void)0 : __fatal_error(msg, __FILE__, __LINE__)) #define hal_delay(ms) (void)ms; diff --git a/storage/tests/c3/common.c b/storage/tests/c3/common.c index 82234756bc..59ac49ef37 100644 --- a/storage/tests/c3/common.c +++ b/storage/tests/c3/common.c @@ -28,21 +28,14 @@ void __shutdown(void) { exit(3); } -void __fatal_error(const char *expr, const char *msg, const char *file, - int line, const char *func) { +void __fatal_error(const char *msg, const char *file, int line) { printf("\nFATAL ERROR:\n"); - if (expr) { - printf("expr: %s\n", expr); - } if (msg) { printf("msg : %s\n", msg); } if (file) { printf("file: %s:%d\n", file, line); } - if (func) { - printf("func: %s\n", func); - } __shutdown(); } diff --git a/storage/tests/c3/common.h b/storage/tests/c3/common.h index 845dbf0c01..9b4952df4f 100644 --- a/storage/tests/c3/common.h +++ b/storage/tests/c3/common.h @@ -22,16 +22,13 @@ #include "secbool.h" -void __fatal_error(const char *expr, const char *msg, const char *file, - int line, const char *func); +void __fatal_error(const char *msg, const char *file, int line); void show_wipe_code_screen(void); void show_pin_too_many_screen(void); #define ensure(expr, msg) \ - (((expr) == sectrue) \ - ? (void)0 \ - : __fatal_error(#expr, msg, __FILE__, __LINE__, __func__)) + (((expr) == sectrue) ? (void)0 : __fatal_error(msg, __FILE__, __LINE__)) #define hal_delay(ms) (void)ms; diff --git a/storage/tests/c3/storage.c b/storage/tests/c3/storage.c index 3f5d18a607..4680c66995 100644 --- a/storage/tests/c3/storage.c +++ b/storage/tests/c3/storage.c @@ -171,9 +171,8 @@ static const uint8_t FALSE_BYTE = 0x00; static const uint32_t TRUE_WORD = 0xC35A69A5; static const uint32_t FALSE_WORD = 0x3CA5965A; -static void __handle_fault(const char *msg, const char *file, int line, - const char *func); -#define handle_fault(msg) (__handle_fault(msg, __FILE__, __LINE__, __func__)) +static void __handle_fault(const char *msg, const char *file, int line); +#define handle_fault(msg) (__handle_fault(msg, __FILE__, __LINE__)) static uint32_t pin_to_int(const uint8_t *pin, size_t pin_len); static secbool storage_upgrade(void); @@ -1634,15 +1633,14 @@ void storage_wipe(void) { init_wiped_storage(); } -static void __handle_fault(const char *msg, const char *file, int line, - const char *func) { +static void __handle_fault(const char *msg, const char *file, int line) { static secbool in_progress = secfalse; // If fault handling is already in progress, then we are probably facing a // fault injection attack, so wipe. if (secfalse != in_progress) { storage_wipe(); - __fatal_error("Fault detected", msg, file, line, func); + __fatal_error(msg, file, line); } // We use the PIN fail counter as a fault counter. Increment the counter, @@ -1651,19 +1649,19 @@ static void __handle_fault(const char *msg, const char *file, int line, uint32_t ctr = 0; if (sectrue != pin_get_fails(&ctr)) { storage_wipe(); - __fatal_error("Fault detected", msg, file, line, func); + __fatal_error(msg, file, line); } if (sectrue != storage_pin_fails_increase()) { storage_wipe(); - __fatal_error("Fault detected", msg, file, line, func); + __fatal_error(msg, file, line); } uint32_t ctr_new = 0; if (sectrue != pin_get_fails(&ctr_new) || ctr + 1 != ctr_new) { storage_wipe(); } - __fatal_error("Fault detected", msg, file, line, func); + __fatal_error(msg, file, line); } /* From ba56ff84832c9bed9ab3ff7958bc3dad75c12e00 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 13 Jun 2024 14:49:56 +0200 Subject: [PATCH 296/626] refactor(core/embed): replace ensure(secfalse,... with error_shutdown [no changelog] --- core/embed/extmod/modtrezorutils/modtrezorutils.c | 4 ++-- core/embed/firmware/bl_check.c | 4 ++-- core/embed/prodtest/main.c | 2 +- core/embed/trezorhal/stm32f4/i2c.c | 2 +- core/embed/trezorhal/stm32u5/i2c.c | 2 +- core/embed/trezorhal/unix/display-unix.c | 6 +++--- core/embed/trezorhal/unix/display_driver.c | 6 +++--- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/embed/extmod/modtrezorutils/modtrezorutils.c b/core/embed/extmod/modtrezorutils/modtrezorutils.c index d3c711784f..d00e35d11f 100644 --- a/core/embed/extmod/modtrezorutils/modtrezorutils.c +++ b/core/embed/extmod/modtrezorutils/modtrezorutils.c @@ -136,9 +136,9 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorutils_memcpy_obj, 4, 5, STATIC mp_obj_t mod_trezorutils_halt(size_t n_args, const mp_obj_t *args) { mp_buffer_info_t msg = {0}; if (n_args > 0 && mp_get_buffer(args[0], &msg, MP_BUFFER_READ)) { - ensure(secfalse, msg.buf); + error_shutdown(msg.buf); } else { - ensure(secfalse, "halt"); + error_shutdown("halt"); } return mp_const_none; } diff --git a/core/embed/firmware/bl_check.c b/core/embed/firmware/bl_check.c index ae8ba6f24c..bf31311eaf 100644 --- a/core/embed/firmware/bl_check.c +++ b/core/embed/firmware/bl_check.c @@ -204,7 +204,7 @@ void check_and_replace_bootloader(void) { (new_bld_hdr->hw_model != 0)) { // reject non-model T bootloader // 0 represents pre-model check bootloader - ensure(secfalse, "Incompatible embedded bootloader"); + error_shutdown("Incompatible embedded bootloader"); } } // at this point, due to the previous check_image_model call, we know that the @@ -213,7 +213,7 @@ void check_and_replace_bootloader(void) { // against the firmware hw_model. else if (board_name != HW_MODEL) { // reject incompatible bootloader - ensure(secfalse, "Incompatible embedded bootloader"); + error_shutdown("Incompatible embedded bootloader"); } ensure(flash_area_erase(&BOOTLOADER_AREA, NULL), NULL); diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 61a746e504..005819b8cf 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -79,7 +79,7 @@ static secbool startswith(const char *s, const char *prefix) { static void vcp_intr(void) { display_clear(); - ensure(secfalse, "vcp_intr"); + error_shutdown("vcp_intr"); } static char vcp_getchar(void) { diff --git a/core/embed/trezorhal/stm32f4/i2c.c b/core/embed/trezorhal/stm32f4/i2c.c index 1e0e818b97..319342b765 100644 --- a/core/embed/trezorhal/stm32f4/i2c.c +++ b/core/embed/trezorhal/stm32f4/i2c.c @@ -74,7 +74,7 @@ void i2c_init_instance(uint16_t idx, i2c_instance_t *instance) { i2c_handle[idx].Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_OK != HAL_I2C_Init(&i2c_handle[idx])) { - ensure(secfalse, "I2C was not loaded properly."); + error_shutdown("I2C was not loaded properly."); return; } } diff --git a/core/embed/trezorhal/stm32u5/i2c.c b/core/embed/trezorhal/stm32u5/i2c.c index e66a024a40..70b568b010 100644 --- a/core/embed/trezorhal/stm32u5/i2c.c +++ b/core/embed/trezorhal/stm32u5/i2c.c @@ -99,7 +99,7 @@ void i2c_init_instance(uint16_t idx, i2c_instance_t *instance) { i2c_handle[idx].Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_OK != HAL_I2C_Init(&i2c_handle[idx])) { - ensure(secfalse, "I2C was not loaded properly."); + error_shutdown("I2C was not loaded properly."); return; } } diff --git a/core/embed/trezorhal/unix/display-unix.c b/core/embed/trezorhal/unix/display-unix.c index 0b7f8453df..60bbf1acc2 100644 --- a/core/embed/trezorhal/unix/display-unix.c +++ b/core/embed/trezorhal/unix/display-unix.c @@ -118,7 +118,7 @@ void display_deinit(void) { void display_init(void) { if (SDL_Init(SDL_INIT_VIDEO) != 0) { printf("%s\n", SDL_GetError()); - ensure(secfalse, "SDL_Init error"); + error_shutdown("SDL_Init error"); } atexit(display_deinit); @@ -143,13 +143,13 @@ void display_init(void) { free(window_title_alloc); if (!WINDOW) { printf("%s\n", SDL_GetError()); - ensure(secfalse, "SDL_CreateWindow error"); + error_shutdown("SDL_CreateWindow error"); } RENDERER = SDL_CreateRenderer(WINDOW, -1, SDL_RENDERER_SOFTWARE); if (!RENDERER) { printf("%s\n", SDL_GetError()); SDL_DestroyWindow(WINDOW); - ensure(secfalse, "SDL_CreateRenderer error"); + error_shutdown("SDL_CreateRenderer error"); } SDL_SetRenderDrawColor(RENDERER, 0, 0, 0, 255); SDL_RenderClear(RENDERER); diff --git a/core/embed/trezorhal/unix/display_driver.c b/core/embed/trezorhal/unix/display_driver.c index 3eedcb25ae..ac4d23f2fc 100644 --- a/core/embed/trezorhal/unix/display_driver.c +++ b/core/embed/trezorhal/unix/display_driver.c @@ -83,7 +83,7 @@ void display_init(void) { if (SDL_Init(SDL_INIT_VIDEO) != 0) { printf("%s\n", SDL_GetError()); - ensure(secfalse, "SDL_Init error"); + error_shutdown("SDL_Init error"); } atexit(display_deinit); @@ -108,13 +108,13 @@ void display_init(void) { free(window_title_alloc); if (!drv->window) { printf("%s\n", SDL_GetError()); - ensure(secfalse, "SDL_CreateWindow error"); + error_shutdown("SDL_CreateWindow error"); } drv->renderer = SDL_CreateRenderer(drv->window, -1, SDL_RENDERER_SOFTWARE); if (!drv->renderer) { printf("%s\n", SDL_GetError()); SDL_DestroyWindow(drv->window); - ensure(secfalse, "SDL_CreateRenderer error"); + error_shutdown("SDL_CreateRenderer error"); } SDL_SetRenderDrawColor(drv->renderer, 0, 0, 0, 255); SDL_RenderClear(drv->renderer); From 81d5cc29d574a221e72b4ab0da3dfb109c65a87b Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 12 Jun 2024 11:21:34 +0200 Subject: [PATCH 297/626] fix(core/translations): properly update stored json version --- core/translations/cli.py | 62 ++++++++++++++++++++------------------- core/translations/cs.json | 2 +- core/translations/de.json | 2 +- core/translations/en.json | 4 +-- core/translations/es.json | 2 +- core/translations/fr.json | 2 +- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/core/translations/cli.py b/core/translations/cli.py index b0c59651b1..5a10441e85 100644 --- a/core/translations/cli.py +++ b/core/translations/cli.py @@ -71,7 +71,7 @@ def _version_from_version_h() -> VersionTuple: ) -def _version_str(version: VersionTuple) -> str: +def _version_str(version: tuple[int, ...]) -> str: return ".".join(str(v) for v in version) @@ -128,46 +128,47 @@ def load_lang(self, lang: str) -> translations.JsonDef: return json.loads(self._lang_path(lang).read_text()) def save_lang(self, lang: str, data: translations.JsonDef) -> None: - self._lang_path(lang).write_text(json.dumps(data, indent=2) + "\n") + self._lang_path(lang).write_text( + json.dumps( + data, + indent=2, + ensure_ascii=False, + ) + + "\n" + ) def all_languages(self) -> t.Iterable[str]: return (lang_file.stem for lang_file in self.path.glob("??.json")) + def update_version_from_h(self) -> VersionTuple: + version = _version_from_version_h() + for lang in self.all_languages(): + blob_json = self.load_lang(lang) + blob_version = translations.version_from_json( + blob_json["header"]["version"] + ) + if blob_version != version: + blob_json["header"]["version"] = _version_str(version[:3]) + self.save_lang(lang, blob_json) + return version + def generate_single_blob( self, lang: str, model: models.TrezorModel, version: VersionTuple | None, - write_version: bool = False, ) -> translations.TranslationsBlob: blob_json = self.load_lang(lang) blob_version = translations.version_from_json(blob_json["header"]["version"]) - - if version is None: - version = blob_version - - if write_version and blob_version != version: - blob_json["header"]["version"] = _version_str(version) - self.save_lang(lang, blob_json) - return translations.blob_from_defs( - blob_json, self.order, model, version, self.fonts_dir + blob_json, self.order, model, version or blob_version, self.fonts_dir ) def generate_all_blobs( - self, - version: VersionTuple | t.Literal["auto"] | t.Literal["json"], + self, version: VersionTuple | None ) -> list[translations.TranslationsBlob]: - current_version = _version_from_version_h() common_version = None - if version == "auto": - used_version = current_version - elif version == "json": - used_version = None - else: - used_version = version - all_blobs: list[translations.TranslationsBlob] = [] for lang in self.all_languages(): if lang == "en": @@ -175,7 +176,7 @@ def generate_all_blobs( for model in ALL_MODELS: try: - blob = self.generate_single_blob(lang, model, used_version) + blob = self.generate_single_blob(lang, model, version) blob_version = blob.header.firmware_version if common_version is None: common_version = blob_version @@ -214,7 +215,7 @@ def build_all_blobs( blob.proof = proof header = blob.header model = header.model.value.decode("ascii") - version = ".".join(str(v) for v in header.firmware_version[:3]) + version = _version_str(header.firmware_version[:3]) if production: suffix = "" else: @@ -239,12 +240,13 @@ def gen(signed: bool | None, version_str: str | None) -> None: The generated blobs will be signed with the development keys. """ - if version_str is not None: - version = translations.version_from_json(version_str) + tdir = TranslationsDir() + + if version_str is None: + version = tdir.update_version_from_h() else: - version = "auto" + version = translations.version_from_json(version_str) - tdir = TranslationsDir() all_blobs = tdir.generate_all_blobs(version) tree = merkle_tree.MerkleTree(b.header_bytes for b in all_blobs) root = tree.get_root_hash() @@ -284,7 +286,7 @@ def gen(signed: bool | None, version_str: str | None) -> None: def merkle_root(version_str: str | None) -> None: """Print the Merkle root of all language blobs.""" if version_str is None: - version = "json" + version = None else: version = translations.version_from_json(version_str) @@ -320,7 +322,7 @@ def merkle_root(version_str: str | None) -> None: def sign(signature_hex: str, force: bool | None, version_str: str | None) -> None: """Insert a signature into language blobs.""" if version_str is None: - version = "json" + version = None else: version = translations.version_from_json(version_str) diff --git a/core/translations/cs.json b/core/translations/cs.json index df085e210c..85afc615bd 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -33,7 +33,7 @@ }, "header": { "language": "cs-CZ", - "version": "2.7.1" + "version": "2.7.3" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktujte naši podporu na", diff --git a/core/translations/de.json b/core/translations/de.json index 169f99644d..577acc603f 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -33,7 +33,7 @@ }, "header": { "language": "de-DE", - "version": "2.7.1" + "version": "2.7.3" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktiere den Trezor Support unter", diff --git a/core/translations/en.json b/core/translations/en.json index bcf55d7237..3baeca142b 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -1,7 +1,7 @@ { "header": { "language": "en-US", - "version": "2.7.1" + "version": "2.7.3" }, "translations": { "addr_mismatch__contact_support_at": "Please contact Trezor support at", @@ -389,8 +389,6 @@ "instructions__swipe_up": "Swipe up", "instructions__tap_to_confirm": "Tap to confirm", "instructions__tap_to_start": "Tap to start", - "instructions__hold_to_confirm": "Hold to confirm", - "instructions__continue_holding": "Continue\nholding", "joint__title": "Joint transaction", "joint__to_the_total_amount": "To the total amount:", "joint__you_are_contributing": "You are contributing:", diff --git a/core/translations/es.json b/core/translations/es.json index d1781165e6..add221e892 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -33,7 +33,7 @@ }, "header": { "language": "es-ES", - "version": "2.7.1" + "version": "2.7.3" }, "translations": { "addr_mismatch__contact_support_at": "Contacta con atención al cliente de Trezor en", diff --git a/core/translations/fr.json b/core/translations/fr.json index e11614f3a9..97ac56bdba 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -33,7 +33,7 @@ }, "header": { "language": "fr-FR", - "version": "2.7.1" + "version": "2.7.3" }, "translations": { "addr_mismatch__contact_support_at": "Contactez l'assistance Trezor à l'adr.", From ce2436245dbe50d37fad5fdea6cdaa7d169c14c0 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 12 Jun 2024 11:34:45 +0200 Subject: [PATCH 298/626] chore(core/translations): add signatures for translation versions 2.7.1 and 2.7.2 --- core/translations/signatures.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 6cbfd83d31..6fa1b4a589 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -5,6 +5,20 @@ "commit": "51303659f1b4396c90afe2f7547464d140b2c9a9" }, "history": [ + { + "signature": "03e15faccf60328fee27c3cb2a22597656f22aa8d212537669a067e940e454c8eb90060c0fd8eb0783c9b5bb9e657a1fc40b5fea7f46eeee71d218a885fb68f401", + "version": "2.7.2.0", + "merkle_root": "47dc6ffabb554cd7f098a2fa87b96b7bfd8de82e94286a20355c5078f8df8d16", + "datetime": "2024-06-12T09:32:45.909833", + "commit": "905ef05f3aeb327f963785a8126e7f54bdf55b38" + }, + { + "signature": "03c2dacdc7800fed2c8bc4052ddbcd260a69d0529bda38d5282f081b4eb9b91b42d1002fa6976d1332815c30e1f38b9b9dc48ae05f040b693d7be906df8c2c6500", + "version": "2.7.1.0", + "merkle_root": "7fba6f82bbd54d09ca75a1454a0af359fd187dea5b689f4f19552b5ae1d8e2f0", + "datetime": "2024-06-12T09:33:19.676243", + "commit": "905ef05f3aeb327f963785a8126e7f54bdf55b38" + }, { "signature": "032facfa6224385230e30d6e61179f88c8ddced38759ac778d7f4e412ab70ecaf4f8ac020a25ed4e3c7fd647bdbffc1c66071613d39359ebc834161a0888bcc305", "version": "2.7.0.0", From 567de6579e8544db04eb56bf64cfb2389be113d8 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 5 Jun 2024 12:58:33 +0200 Subject: [PATCH 299/626] chore(core/rust): drop cstr_core dependency now that we have c"..." literals in Rust --- core/embed/rust/Cargo.lock | 11 ----------- core/embed/rust/Cargo.toml | 5 ----- core/embed/rust/src/crypto/mod.rs | 6 +++--- core/embed/rust/src/error.rs | 5 ++--- core/embed/rust/src/micropython/obj.rs | 9 +++++---- core/embed/rust/src/micropython/util.rs | 4 ++-- core/embed/rust/src/protobuf/error.rs | 12 +++++------- core/embed/rust/src/translations/blob.rs | 6 +++--- core/embed/rust/src/translations/flash.rs | 10 +++++----- core/embed/rust/src/trezorhal/slip39.rs | 5 ++--- core/embed/rust/src/trezorhal/storage.rs | 10 +++++----- core/embed/rust/src/trezorhal/wordlist.rs | 5 ++--- core/embed/rust/src/ui/display/toif.rs | 4 ++-- core/embed/rust/src/ui/model_mercury/layout.rs | 2 +- core/embed/rust/src/ui/model_tt/layout.rs | 2 +- core/embed/rust/src/ui/util.rs | 3 +-- 16 files changed, 39 insertions(+), 60 deletions(-) diff --git a/core/embed/rust/Cargo.lock b/core/embed/rust/Cargo.lock index 114e08484e..70ce5e4281 100644 --- a/core/embed/rust/Cargo.lock +++ b/core/embed/rust/Cargo.lock @@ -78,16 +78,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "cstr_core" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd98742e4fdca832d40cab219dc2e3048de17d873248f83f17df47c1bea70956" -dependencies = [ - "cty", - "memchr", -] - [[package]] name = "cty" version = "0.2.2" @@ -340,7 +330,6 @@ version = "0.1.0" dependencies = [ "bindgen", "cc", - "cstr_core", "cty", "easer", "glob", diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 30573b1af8..eae620d814 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -112,11 +112,6 @@ features = ["libm"] [dependencies.num-derive] version = "0.3.3" -[dependencies.cstr_core] -version = "0.2.6" -default-features = false -features = ["nightly"] - [dependencies.static-alloc] version = "0.2.4" diff --git a/core/embed/rust/src/crypto/mod.rs b/core/embed/rust/src/crypto/mod.rs index ecb5348f67..8e4c505d04 100644 --- a/core/embed/rust/src/crypto/mod.rs +++ b/core/embed/rust/src/crypto/mod.rs @@ -16,9 +16,9 @@ pub enum Error { impl From<Error> for crate::error::Error { fn from(e: Error) -> Self { match e { - Error::SignatureVerificationFailed => value_error!("Signature verification failed"), - Error::InvalidEncoding => value_error!("Invalid key or signature encoding"), - Error::InvalidParams => value_error!("Invalid cryptographic parameters"), + Error::SignatureVerificationFailed => value_error!(c"Signature verification failed"), + Error::InvalidEncoding => value_error!(c"Invalid key or signature encoding"), + Error::InvalidParams => value_error!(c"Invalid cryptographic parameters"), } } } diff --git a/core/embed/rust/src/error.rs b/core/embed/rust/src/error.rs index 4b2db7d02e..732e75ae61 100644 --- a/core/embed/rust/src/error.rs +++ b/core/embed/rust/src/error.rs @@ -1,5 +1,4 @@ -use core::{convert::Infallible, num::TryFromIntError}; -use cstr_core::CStr; +use core::{convert::Infallible, ffi::CStr, num::TryFromIntError}; #[cfg(feature = "micropython")] use { @@ -30,7 +29,7 @@ pub enum Error { #[macro_export] macro_rules! value_error { ($msg:expr) => { - $crate::error::Error::ValueError(cstr_core::cstr!($msg)) + $crate::error::Error::ValueError($msg) }; } diff --git a/core/embed/rust/src/micropython/obj.rs b/core/embed/rust/src/micropython/obj.rs index dd0913223d..38e75d00b8 100644 --- a/core/embed/rust/src/micropython/obj.rs +++ b/core/embed/rust/src/micropython/obj.rs @@ -1,6 +1,7 @@ -use core::convert::{TryFrom, TryInto}; - -use cstr_core::CStr; +use core::{ + convert::{TryFrom, TryInto}, + ffi::CStr, +}; use crate::error::Error; @@ -290,7 +291,7 @@ impl TryFrom<&'static CStr> for Obj { // SAFETY: // - `CStr` is guaranteed to be null-terminated UTF-8. // - the argument is static so it will remain valid for the lifetime of result. - let obj = unsafe { ffi::trezor_obj_str_from_rom_text(val.as_ptr()) }; + let obj = unsafe { ffi::trezor_obj_str_from_rom_text(val.as_ptr() as _) }; if obj.is_null() { Err(Error::AllocationFailed) } else { diff --git a/core/embed/rust/src/micropython/util.rs b/core/embed/rust/src/micropython/util.rs index a8f337cfeb..5ec0cb27dd 100644 --- a/core/embed/rust/src/micropython/util.rs +++ b/core/embed/rust/src/micropython/util.rs @@ -133,7 +133,7 @@ where let vec: Vec<T, N> = iter_into_vec(iterable)?; // Returns error if array.len() != N vec.into_array() - .map_err(|_| value_error!("Invalid iterable length")) + .map_err(|_| value_error!(c"Invalid iterable length")) } pub fn iter_into_vec<T, E, const N: usize>(iterable: Obj) -> Result<Vec<T, N>, Error> @@ -144,7 +144,7 @@ where let mut vec = Vec::<T, N>::new(); for item in IterBuf::new().try_iterate(iterable)? { vec.push(item.try_into()?) - .map_err(|_| value_error!("Invalid iterable length"))?; + .map_err(|_| value_error!(c"Invalid iterable length"))?; } Ok(vec) } diff --git a/core/embed/rust/src/protobuf/error.rs b/core/embed/rust/src/protobuf/error.rs index 90cf2ee380..e29975ec76 100644 --- a/core/embed/rust/src/protobuf/error.rs +++ b/core/embed/rust/src/protobuf/error.rs @@ -1,23 +1,21 @@ -use cstr_core::cstr; - use crate::{error::Error, micropython::qstr::Qstr}; pub const fn experimental_not_enabled() -> Error { - value_error!("Experimental features are disabled.") + value_error!(c"Experimental features are disabled.") } pub const fn unknown_field_type() -> Error { - value_error!("Unknown field type.") + value_error!(c"Unknown field type.") } pub fn missing_required_field(field: Qstr) -> Error { - Error::ValueErrorParam(cstr!("Missing required field."), field.into()) + Error::ValueErrorParam(c"Missing required field.", field.into()) } pub fn invalid_value(field: Qstr) -> Error { - Error::ValueErrorParam(cstr!("Invalid value for field."), field.into()) + Error::ValueErrorParam(c"Invalid value for field.", field.into()) } pub const fn end_of_buffer() -> Error { - value_error!("End of buffer.") + value_error!(c"End of buffer.") } diff --git a/core/embed/rust/src/translations/blob.rs b/core/embed/rust/src/translations/blob.rs index 3ba42610ba..8d734a8cbe 100644 --- a/core/embed/rust/src/translations/blob.rs +++ b/core/embed/rust/src/translations/blob.rs @@ -19,7 +19,7 @@ const SIGNATURE_THRESHOLD: u8 = 2; // should be max 1. const MAX_TABLE_PADDING: usize = 3; -const INVALID_TRANSLATIONS_BLOB: Error = value_error!("Invalid translations blob"); +const INVALID_TRANSLATIONS_BLOB: Error = value_error!(c"Invalid translations blob"); #[repr(packed)] struct OffsetEntry { @@ -145,7 +145,7 @@ impl<'a> Translations<'a> { let remaining = blob_reader.rest(); if !remaining.iter().all(|&b| b == EMPTY_BYTE) { // TODO optimize to quadwords? - return Err(value_error!("Trailing data in translations blob")); + return Err(value_error!(c"Trailing data in translations blob")); } let payload_bytes = payload_reader.rest(); @@ -337,7 +337,7 @@ impl<'a> TranslationsHeader<'a> { let model = read_fixedsize_str(&mut header_reader, 4)?; if model != crate::trezorhal::model::INTERNAL_NAME { - return Err(value_error!("Wrong Trezor model")); + return Err(value_error!(c"Wrong Trezor model")); } let version_bytes = header_reader.read(4)?; diff --git a/core/embed/rust/src/translations/flash.rs b/core/embed/rust/src/translations/flash.rs index 3a7387ad1a..a99b045de8 100644 --- a/core/embed/rust/src/translations/flash.rs +++ b/core/embed/rust/src/translations/flash.rs @@ -15,7 +15,7 @@ pub fn erase() -> Result<(), Error> { let blob = unwrap!(TRANSLATIONS_ON_FLASH.try_write()); { if blob.is_some() { - return Err(value_error!("Translations blob already set")); + return Err(value_error!(c"Translations blob already set")); } // SAFETY: The blob is not set, so there are no references to it. @@ -33,7 +33,7 @@ pub fn write(data: &[u8], offset: usize) -> Result<(), Error> { let blob = unwrap!(TRANSLATIONS_ON_FLASH.try_write()); let result = { if blob.is_some() { - return Err(value_error!("Translations blob already set")); + return Err(value_error!(c"Translations blob already set")); } // SAFETY: The blob is not set, so there are no references to it. @@ -42,7 +42,7 @@ pub fn write(data: &[u8], offset: usize) -> Result<(), Error> { if result { Ok(()) } else { - Err(value_error!("Failed to write translations blob")) + Err(value_error!(c"Failed to write translations blob")) } } @@ -92,7 +92,7 @@ pub fn init() { /// If the blob is locked by a reader, `deinit()` will return an error. pub fn deinit() -> Result<(), Error> { let Some(mut blob) = TRANSLATIONS_ON_FLASH.try_write() else { - return Err(value_error!("Translations are in use.")); + return Err(value_error!(c"Translations are in use.")); }; *blob = None; Ok(()) @@ -116,5 +116,5 @@ pub fn deinit() -> Result<(), Error> { pub fn get() -> Result<RwLockReadGuard<'static, Option<Translations<'static>>>, Error> { TRANSLATIONS_ON_FLASH .try_read() - .ok_or_else(|| value_error!("Translations are in use.")) + .ok_or(value_error!(c"Translations are in use.")) } diff --git a/core/embed/rust/src/trezorhal/slip39.rs b/core/embed/rust/src/trezorhal/slip39.rs index 6d061c8856..cc7e568680 100644 --- a/core/embed/rust/src/trezorhal/slip39.rs +++ b/core/embed/rust/src/trezorhal/slip39.rs @@ -1,5 +1,4 @@ -use core::str; -use cstr_core::CStr; +use core::{ffi::CStr, str}; use super::ffi; @@ -26,6 +25,6 @@ pub fn button_sequence_to_word(prefix: u16) -> Option<&'static str> { } else { // SAFETY: On success, `button_sequence_to_word` should return a 0-terminated // UTF-8 string with static lifetime. - Some(unsafe { str::from_utf8_unchecked(CStr::from_ptr(word).to_bytes()) }) + Some(unsafe { str::from_utf8_unchecked(CStr::from_ptr(word as _).to_bytes()) }) } } diff --git a/core/embed/rust/src/trezorhal/storage.rs b/core/embed/rust/src/trezorhal/storage.rs index 3013a009d4..46fa04e573 100644 --- a/core/embed/rust/src/trezorhal/storage.rs +++ b/core/embed/rust/src/trezorhal/storage.rs @@ -80,12 +80,12 @@ pub enum StorageError { impl From<StorageError> for Error { fn from(err: StorageError) -> Self { match err { - StorageError::InvalidData => value_error!("Invalid data for storage"), - StorageError::WriteFailed => value_error!("Storage write failed"), - StorageError::ReadFailed => value_error!("Storage read failed"), - StorageError::DeleteFailed => value_error!("Storage delete failed"), + StorageError::InvalidData => value_error!(c"Invalid data for storage"), + StorageError::WriteFailed => value_error!(c"Storage write failed"), + StorageError::ReadFailed => value_error!(c"Storage read failed"), + StorageError::DeleteFailed => value_error!(c"Storage delete failed"), StorageError::CounterFailed => { - value_error!("Retrieving counter value failed") + value_error!(c"Retrieving counter value failed") } } } diff --git a/core/embed/rust/src/trezorhal/wordlist.rs b/core/embed/rust/src/trezorhal/wordlist.rs index ecfd497e5c..a68a4b5670 100644 --- a/core/embed/rust/src/trezorhal/wordlist.rs +++ b/core/embed/rust/src/trezorhal/wordlist.rs @@ -1,6 +1,5 @@ use super::ffi; -use core::cmp::Ordering; -use cstr_core::CStr; +use core::{cmp::Ordering, ffi::CStr}; /// Holds all the possible words with the possibility to interact /// with the "list" - filtering it further, getting their count, etc. @@ -102,7 +101,7 @@ unsafe fn from_utf8_unchecked<'a>(word: *const cty::c_char) -> &'a str { // SAFETY: caller must pass a valid 0-terminated UTF-8 string. // This assumption holds for usage on words of the BIP-39/SLIP-39 wordlists. unsafe { - let word = CStr::from_ptr(word); + let word = CStr::from_ptr(word as _); core::str::from_utf8_unchecked(word.to_bytes()) } } diff --git a/core/embed/rust/src/ui/display/toif.rs b/core/embed/rust/src/ui/display/toif.rs index bdcf9f6b61..657f7d5b43 100644 --- a/core/embed/rust/src/ui/display/toif.rs +++ b/core/embed/rust/src/ui/display/toif.rs @@ -208,11 +208,11 @@ impl<'i> Toif<'i> { pub const fn new(data: &'i [u8]) -> Result<Self, Error> { if data.len() < TOIF_HEADER_LENGTH || data[0] != b'T' || data[1] != b'O' || data[2] != b'I' { - return Err(value_error!("Invalid TOIF header.")); + return Err(value_error!(c"Invalid TOIF header.")); } let zdatalen = u32::from_le_bytes([data[8], data[9], data[10], data[11]]) as usize; if zdatalen + TOIF_HEADER_LENGTH != data.len() { - return Err(value_error!("Invalid TOIF length.")); + return Err(value_error!(c"Invalid TOIF length.")); } Ok(Self { data, diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index ad12ca0517..0d349a6a5d 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -526,7 +526,7 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m )) } else { if !check_homescreen_format(jpeg) { - return Err(value_error!("Invalid image.")); + return Err(value_error!(c"Invalid image.")); }; LayoutObj::new(SwipeUpScreen::new( diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 538cc91b97..2076ff527a 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -602,7 +602,7 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m } if !check_homescreen_format(jpeg, false) { - return Err(value_error!("Invalid image.")); + return Err(value_error!(c"Invalid image.")); }; let buttons = Button::cancel_confirm_text(None, Some(TR::buttons__change.into())); diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index 6f5ede8a72..1beec7798e 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -9,7 +9,6 @@ use crate::{ }, }; -use cstr_core::CStr; use heapless::String; use super::display::Font; @@ -40,7 +39,7 @@ pub unsafe fn from_c_str<'a>(c_str: *const cty::c_char) -> Option<&'a str> { return None; } unsafe { - let bytes = CStr::from_ptr(c_str).to_bytes(); + let bytes = core::ffi::CStr::from_ptr(c_str as _).to_bytes(); if bytes.is_ascii() { Some(core::str::from_utf8_unchecked(bytes)) } else { From b406fc22f389fef664cda158cc6bff13b936a75f Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 5 Jun 2024 14:12:04 +0200 Subject: [PATCH 300/626] refactor(core/rust): clean up macro namespace --- core/embed/rust/src/crypto/mod.rs | 2 + core/embed/rust/src/error.rs | 3 +- core/embed/rust/src/lib.rs | 22 ++- core/embed/rust/src/micropython/macros.rs | 130 +++++++++--------- core/embed/rust/src/micropython/util.rs | 2 +- core/embed/rust/src/protobuf/error.rs | 5 +- core/embed/rust/src/protobuf/obj.rs | 1 + core/embed/rust/src/translations/blob.rs | 2 +- core/embed/rust/src/translations/flash.rs | 5 +- core/embed/rust/src/translations/obj.rs | 3 + core/embed/rust/src/trezorhal/storage.rs | 2 +- core/embed/rust/src/ui/backlight.rs | 4 +- core/embed/rust/src/ui/display/toif.rs | 2 +- core/embed/rust/src/ui/layout/obj.rs | 1 + core/embed/rust/src/ui/layout/result.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 12 +- core/embed/rust/src/ui/model_tr/layout.rs | 12 +- core/embed/rust/src/ui/model_tt/layout.rs | 12 +- 18 files changed, 132 insertions(+), 90 deletions(-) diff --git a/core/embed/rust/src/crypto/mod.rs b/core/embed/rust/src/crypto/mod.rs index 8e4c505d04..9b753f9632 100644 --- a/core/embed/rust/src/crypto/mod.rs +++ b/core/embed/rust/src/crypto/mod.rs @@ -1,3 +1,5 @@ +use crate::error::value_error; + pub mod cosi; pub mod ed25519; mod ffi; diff --git a/core/embed/rust/src/error.rs b/core/embed/rust/src/error.rs index 732e75ae61..51e59c670f 100644 --- a/core/embed/rust/src/error.rs +++ b/core/embed/rust/src/error.rs @@ -26,13 +26,14 @@ pub enum Error { ValueErrorParam(&'static CStr, Obj), } -#[macro_export] macro_rules! value_error { ($msg:expr) => { $crate::error::Error::ValueError($msg) }; } +pub(crate) use value_error; + #[cfg(feature = "micropython")] impl Error { /// Create an exception instance matching the error code. The result of this diff --git a/core/embed/rust/src/lib.rs b/core/embed/rust/src/lib.rs index 57c86e0dfa..23ed6a215d 100644 --- a/core/embed/rust/src/lib.rs +++ b/core/embed/rust/src/lib.rs @@ -13,35 +13,33 @@ extern crate num_derive; #[macro_use] -mod error; -// use trezorhal for its macros early -#[macro_use] -mod trezorhal; +mod macros; #[cfg(feature = "crypto")] mod crypto; +#[cfg(feature = "debug")] +mod debug; +mod error; mod io; mod maybe_trace; #[cfg(feature = "micropython")] -#[macro_use] mod micropython; #[cfg(feature = "protobuf")] mod protobuf; mod storage; +mod strutil; mod time; #[cfg(feature = "ui_debug")] mod trace; #[cfg(feature = "translations")] -pub mod translations; +mod translations; +mod trezorhal; +// mod ui is `pub` because of the re-export pattern in individual models, which +// would trigger a brickload of "unused symbol" warnings otherwise. +// TODO: maybe get rid of the re-export pattern :shrugs: #[cfg(feature = "ui")] -#[macro_use] pub mod ui; -pub mod strutil; - -#[cfg(feature = "debug")] -#[macro_use] -pub mod debug; #[cfg(feature = "debug")] #[cfg(not(test))] diff --git a/core/embed/rust/src/micropython/macros.rs b/core/embed/rust/src/micropython/macros.rs index daab06d6f2..c0ebe4e12e 100644 --- a/core/embed/rust/src/micropython/macros.rs +++ b/core/embed/rust/src/micropython/macros.rs @@ -1,74 +1,49 @@ -/// Create an object for an exported function taking no arguments. -macro_rules! obj_fn_0 { - ($f:expr) => {{ +macro_rules! _obj_fn_make_fixed { + ($type:ident, $member:ident, $f:expr) => {{ #[allow(unused_unsafe)] unsafe { use $crate::micropython::ffi; ffi::mp_obj_fun_builtin_fixed_t { base: ffi::mp_obj_base_t { - type_: &ffi::mp_type_fun_builtin_0, + type_: &$crate::micropython::ffi::$type, }, - fun: ffi::_mp_obj_fun_builtin_fixed_t__bindgen_ty_1 { _0: Some($f) }, + fun: ffi::_mp_obj_fun_builtin_fixed_t__bindgen_ty_1 { $member: Some($f) }, } } }}; } +/// Create an object for an exported function taking no arguments. +macro_rules! obj_fn_0 { + ($f:expr) => { + crate::micropython::macros::_obj_fn_make_fixed!(mp_type_fun_builtin_0, _0, $f) + }; +} + /// Create an object for an exported function taking 1 arg. macro_rules! obj_fn_1 { - ($f:expr) => {{ - #[allow(unused_unsafe)] - unsafe { - use $crate::micropython::ffi; - - ffi::mp_obj_fun_builtin_fixed_t { - base: ffi::mp_obj_base_t { - type_: &ffi::mp_type_fun_builtin_1, - }, - fun: ffi::_mp_obj_fun_builtin_fixed_t__bindgen_ty_1 { _1: Some($f) }, - } - } - }}; + ($f:expr) => { + crate::micropython::macros::_obj_fn_make_fixed!(mp_type_fun_builtin_1, _1, $f) + }; } /// Create an object for an exported function taking 2 args. macro_rules! obj_fn_2 { - ($f:expr) => {{ - #[allow(unused_unsafe)] - unsafe { - use $crate::micropython::ffi; - - ffi::mp_obj_fun_builtin_fixed_t { - base: ffi::mp_obj_base_t { - type_: &ffi::mp_type_fun_builtin_2, - }, - fun: ffi::_mp_obj_fun_builtin_fixed_t__bindgen_ty_1 { _2: Some($f) }, - } - } - }}; + ($f:expr) => { + crate::micropython::macros::_obj_fn_make_fixed!(mp_type_fun_builtin_2, _2, $f) + }; } /// Create an object for an exported function taking 3 args. macro_rules! obj_fn_3 { - ($f:expr) => {{ - #[allow(unused_unsafe)] - unsafe { - use $crate::micropython::ffi; - - ffi::mp_obj_fun_builtin_fixed_t { - base: ffi::mp_obj_base_t { - type_: &ffi::mp_type_fun_builtin_3, - }, - fun: ffi::_mp_obj_fun_builtin_fixed_t__bindgen_ty_1 { _3: Some($f) }, - } - } - }}; + ($f:expr) => { + crate::micropython::macros::_obj_fn_make_fixed!(mp_type_fun_builtin_3, _3, $f) + }; } -/// Create an object for an exported function taking a variable number of args. -macro_rules! obj_fn_var { - ($min:expr, $max:expr, $f:expr) => {{ +macro_rules! _obj_fn_make_var { + ($min:expr, $max:expr, takes_kw: $takes_kw:expr, $var_or_kw:ident: $f:expr) => {{ #[allow(unused_unsafe)] unsafe { use $crate::micropython::ffi; @@ -77,29 +52,28 @@ macro_rules! obj_fn_var { base: ffi::mp_obj_base_t { type_: &ffi::mp_type_fun_builtin_var, }, - sig: ($min << 17u32) | ($max << 1u32) | 0, // min, max, takes_kw - fun: ffi::_mp_obj_fun_builtin_var_t__bindgen_ty_1 { var: Some($f) }, + sig: ($min << 17u32) | ($max << 1u32) | $takes_kw, + fun: ffi::_mp_obj_fun_builtin_var_t__bindgen_ty_1 { + $var_or_kw: Some($f), + }, } } }}; } +/// Create an object for an exported function taking a variable number of args +/// between min and max +macro_rules! obj_fn_var { + ($min:expr, $max:expr, $f:expr) => { + crate::micropython::macros::_obj_fn_make_var!($min, $max, takes_kw:0, var:$f) + }; +} + /// Create an object for an exported function taking key-value args. macro_rules! obj_fn_kw { - ($min:expr, $f:expr) => {{ - #[allow(unused_unsafe)] - unsafe { - use $crate::micropython::ffi; - - ffi::mp_obj_fun_builtin_var_t { - base: ffi::mp_obj_base_t { - type_: &ffi::mp_type_fun_builtin_var, - }, - sig: ($min << 17u32) | (0xffff << 1u32) | 1, // min, max, takes_kw - fun: ffi::_mp_obj_fun_builtin_var_t__bindgen_ty_1 { kw: Some($f) }, - } - } - }}; + ($min:expr, $f:expr) => { + crate::micropython::macros::_obj_fn_make_var!($min, 0xffff, takes_kw:1, kw:$f) + }; } /// Construct fixed static const `Map` from `key` => `val` pairs. @@ -261,6 +235,36 @@ macro_rules! attr_tuple { }); } +// required because they are used in expansion of macros below +pub(crate) use _obj_fn_make_fixed; +pub(crate) use _obj_fn_make_var; + +pub(crate) use attr_tuple; +pub(crate) use obj_dict; +pub(crate) use obj_fn_0; +pub(crate) use obj_fn_1; +pub(crate) use obj_fn_2; +pub(crate) use obj_fn_3; +pub(crate) use obj_fn_kw; +pub(crate) use obj_fn_var; +pub(crate) use obj_map; +pub(crate) use obj_module; +pub(crate) use obj_type; + +// from https://docs.rs/ufmt/latest/ufmt/ +// like `std::format!` it returns a `std::String` but uses `uwrite!` instead of +// `write!` +macro_rules! uformat { + // IMPORTANT use `tt` fragments instead of `expr` fragments (i.e. `$($exprs:expr),*`) + ($len:expr, $($tt:tt)*) => {{ + let mut s = heapless::String::<$len>::new(); + match ufmt::uwrite!(&mut s, $($tt)*) { + Ok(_) => Ok(s), + Err(e) => Err(e), + } + }}; +} + /// Print arbitrary amounts of slices into a terminal. /// Does not include a newline at the end. /// Does not do anything when not in debugging mode. diff --git a/core/embed/rust/src/micropython/util.rs b/core/embed/rust/src/micropython/util.rs index 5ec0cb27dd..07b40bfb6f 100644 --- a/core/embed/rust/src/micropython/util.rs +++ b/core/embed/rust/src/micropython/util.rs @@ -10,7 +10,7 @@ use super::{ qstr::Qstr, runtime::{catch_exception, raise_exception}, }; -use crate::error::Error; +use crate::error::{value_error, Error}; /// Perform a call and convert errors into a raised MicroPython exception. /// Should only called when returning from Rust to C. See `raise_exception` for diff --git a/core/embed/rust/src/protobuf/error.rs b/core/embed/rust/src/protobuf/error.rs index e29975ec76..23ea2ae86b 100644 --- a/core/embed/rust/src/protobuf/error.rs +++ b/core/embed/rust/src/protobuf/error.rs @@ -1,4 +1,7 @@ -use crate::{error::Error, micropython::qstr::Qstr}; +use crate::{ + error::{value_error, Error}, + micropython::qstr::Qstr, +}; pub const fn experimental_not_enabled() -> Error { value_error!(c"Experimental features are disabled.") diff --git a/core/embed/rust/src/protobuf/obj.rs b/core/embed/rust/src/protobuf/obj.rs index 5efecf4510..7b4c69033c 100644 --- a/core/embed/rust/src/protobuf/obj.rs +++ b/core/embed/rust/src/protobuf/obj.rs @@ -6,6 +6,7 @@ use crate::{ dict::Dict, ffi, gc::Gc, + macros::{obj_fn_1, obj_fn_2, obj_fn_3, obj_module, obj_type}, map::Map, module::Module, obj::{Obj, ObjBase}, diff --git a/core/embed/rust/src/translations/blob.rs b/core/embed/rust/src/translations/blob.rs index 8d734a8cbe..414f30101c 100644 --- a/core/embed/rust/src/translations/blob.rs +++ b/core/embed/rust/src/translations/blob.rs @@ -2,7 +2,7 @@ use core::{mem, str}; use crate::{ crypto::{cosi, ed25519, merkle::merkle_root, sha256}, - error::Error, + error::{value_error, Error}, io::InputStream, }; diff --git a/core/embed/rust/src/translations/flash.rs b/core/embed/rust/src/translations/flash.rs index a99b045de8..238e41d717 100644 --- a/core/embed/rust/src/translations/flash.rs +++ b/core/embed/rust/src/translations/flash.rs @@ -1,6 +1,9 @@ use spin::{RwLock, RwLockReadGuard}; -use crate::{error::Error, trezorhal::translations}; +use crate::{ + error::{value_error, Error}, + trezorhal::translations, +}; use super::blob::Translations; diff --git a/core/embed/rust/src/translations/obj.rs b/core/embed/rust/src/translations/obj.rs index 7ba6fb4db0..9b341abdc7 100644 --- a/core/embed/rust/src/translations/obj.rs +++ b/core/embed/rust/src/translations/obj.rs @@ -4,6 +4,9 @@ use crate::{ micropython::{ buffer::{get_buffer, StrBuffer}, ffi, + macros::{ + attr_tuple, obj_dict, obj_fn_0, obj_fn_1, obj_fn_2, obj_map, obj_module, obj_type, + }, map::Map, module::Module, obj::Obj, diff --git a/core/embed/rust/src/trezorhal/storage.rs b/core/embed/rust/src/trezorhal/storage.rs index 46fa04e573..6bf44a3b71 100644 --- a/core/embed/rust/src/trezorhal/storage.rs +++ b/core/embed/rust/src/trezorhal/storage.rs @@ -1,7 +1,7 @@ #![allow(dead_code)] use super::ffi; -use crate::error::Error; +use crate::error::{value_error, Error}; use core::ptr; use num_traits::FromPrimitive; diff --git a/core/embed/rust/src/ui/backlight.rs b/core/embed/rust/src/ui/backlight.rs index ca2ce55ff6..98f6aff269 100644 --- a/core/embed/rust/src/ui/backlight.rs +++ b/core/embed/rust/src/ui/backlight.rs @@ -1,6 +1,8 @@ use crate::{ error::Error, - micropython::{ffi, obj::Obj, qstr::Qstr, simple_type::SimpleTypeObj, typ::Type, util}, + micropython::{ + ffi, macros::obj_type, obj::Obj, qstr::Qstr, simple_type::SimpleTypeObj, typ::Type, util, + }, ui::{ui_features::ModelUI, UIFeaturesCommon}, }; diff --git a/core/embed/rust/src/ui/display/toif.rs b/core/embed/rust/src/ui/display/toif.rs index 657f7d5b43..eff8808921 100644 --- a/core/embed/rust/src/ui/display/toif.rs +++ b/core/embed/rust/src/ui/display/toif.rs @@ -1,5 +1,5 @@ use crate::{ - error::Error, + error::{value_error, Error}, trezorhal::uzlib::{UzlibContext, UZLIB_WINDOW_SIZE}, ui::{ component::image::Image, diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index f01f1a8766..23ade324ac 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -9,6 +9,7 @@ use crate::{ micropython::{ buffer::StrBuffer, gc::Gc, + macros::{obj_dict, obj_fn_1, obj_fn_2, obj_fn_var, obj_map, obj_type}, map::Map, obj::{Obj, ObjBase}, qstr::Qstr, diff --git a/core/embed/rust/src/ui/layout/result.rs b/core/embed/rust/src/ui/layout/result.rs index f0dfb29f9f..bf91424b38 100644 --- a/core/embed/rust/src/ui/layout/result.rs +++ b/core/embed/rust/src/ui/layout/result.rs @@ -1,4 +1,4 @@ -use crate::micropython::{qstr::Qstr, simple_type::SimpleTypeObj, typ::Type}; +use crate::micropython::{macros::obj_type, qstr::Qstr, simple_type::SimpleTypeObj, typ::Type}; static CONFIRMED_TYPE: Type = obj_type! { name: Qstr::MP_QSTR_CONFIRMED, }; static CANCELLED_TYPE: Type = obj_type! { name: Qstr::MP_QSTR_CANCELLED, }; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 0d349a6a5d..2286c2b9d7 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1,10 +1,18 @@ use core::{cmp::Ordering, convert::TryInto}; use crate::{ - error::Error, + error::{value_error, Error}, io::BinaryData, micropython::{ - gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, qstr::Qstr, util, + gc::Gc, + iter::IterBuf, + list::List, + macros::{obj_fn_1, obj_fn_kw, obj_module}, + map::Map, + module::Module, + obj::Obj, + qstr::Qstr, + util, }, strutil::TString, translations::TR, diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index d606bc2e4c..9318ba1525 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -6,8 +6,16 @@ use crate::{ error::Error, maybe_trace::MaybeTrace, micropython::{ - buffer::StrBuffer, gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, - qstr::Qstr, util, + buffer::StrBuffer, + gc::Gc, + iter::IterBuf, + list::List, + macros::{obj_fn_0, obj_fn_1, obj_fn_kw, obj_module}, + map::Map, + module::Module, + obj::Obj, + qstr::Qstr, + util, }, strutil::TString, translations::TR, diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 2076ff527a..525600e64f 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1,10 +1,18 @@ use core::{cmp::Ordering, convert::TryInto}; use crate::{ - error::Error, + error::{value_error, Error}, io::BinaryData, micropython::{ - gc::Gc, iter::IterBuf, list::List, map::Map, module::Module, obj::Obj, qstr::Qstr, util, + gc::Gc, + iter::IterBuf, + list::List, + macros::{obj_fn_1, obj_fn_kw, obj_module}, + map::Map, + module::Module, + obj::Obj, + qstr::Qstr, + util, }, strutil::TString, translations::TR, From 8134490e2e380cfc5f0e2ec760e5a0855a6be448 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 9 Apr 2024 12:58:07 +0200 Subject: [PATCH 301/626] feat(core): introduce uformat!, use uDebug in favor of Debug now that we have ufmt, this is just much nicer --- core/embed/rust/src/debug.rs | 38 ++++++------- core/embed/rust/src/macros.rs | 57 +++++++++++++++++++ core/embed/rust/src/micropython/buffer.rs | 15 ++++- core/embed/rust/src/micropython/macros.rs | 38 ------------- core/embed/rust/src/strutil.rs | 40 +++++++++++++ .../generated/translated_string.rs | 3 +- .../generated/translated_string.rs.mako | 3 +- core/embed/rust/src/trezorhal/fatal_error.rs | 27 --------- core/embed/rust/src/ui/component/base.rs | 3 + core/embed/rust/src/ui/component/swipe.rs | 1 + core/embed/rust/src/ui/event.rs | 5 ++ core/embed/rust/src/ui/geometry.rs | 1 + 12 files changed, 142 insertions(+), 89 deletions(-) create mode 100644 core/embed/rust/src/macros.rs diff --git a/core/embed/rust/src/debug.rs b/core/embed/rust/src/debug.rs index 17297b0313..faabf208f6 100644 --- a/core/embed/rust/src/debug.rs +++ b/core/embed/rust/src/debug.rs @@ -1,7 +1,21 @@ -use ufmt; +mod unix_ffi { + const STDOUT_FILENO: cty::c_int = 1; + + extern "C" { + pub fn write(fd: cty::c_int, buf: *const u8, count: cty::size_t) -> cty::ssize_t; + } + + pub fn print(to_log: &str) { + unsafe { + write(STDOUT_FILENO, to_log.as_ptr(), to_log.len() as cty::size_t); + } + } +} #[cfg(feature = "micropython")] -use crate::micropython; +use crate::micropython::print::print; +#[cfg(not(feature = "micropython"))] +pub use unix_ffi::print; pub struct DebugConsole; @@ -9,25 +23,7 @@ impl ufmt::uWrite for DebugConsole { type Error = core::convert::Infallible; fn write_str(&mut self, s: &str) -> Result<(), Self::Error> { - #[cfg(feature = "micropython")] - micropython::print::print(s); - - // TODO: add alternative if micropython is not available - + print(s); Ok(()) } } - -#[macro_export] -macro_rules! dbg_println { - ($($args:tt)*) => { - ufmt::uwriteln!($crate::debug::DebugConsole, $($args)*).ok(); - }; -} - -#[macro_export] -macro_rules! dbg_print { - ($($args:tt)*) => { - ufmt::uwrite!($crate::debug::DebugConsole, $($args)*).ok(); - }; -} diff --git a/core/embed/rust/src/macros.rs b/core/embed/rust/src/macros.rs new file mode 100644 index 0000000000..b7addc8614 --- /dev/null +++ b/core/embed/rust/src/macros.rs @@ -0,0 +1,57 @@ +macro_rules! unwrap { + ($e:expr, $msg:expr) => {{ + use $crate::trezorhal::fatal_error::UnwrapOrFatalError; + $e.unwrap_or_fatal_error($msg, file!(), line!()) + }}; + ($expr:expr) => { + unwrap!($expr, "unwrap failed") + }; +} + +macro_rules! ensure { + ($what:expr, $error:expr) => { + if !($what) { + $crate::trezorhal::fatal_error::__fatal_error($error, file!(), line!()); + } + }; +} + +macro_rules! fatal_error { + ($msg:expr) => {{ + $crate::trezorhal::fatal_error::__fatal_error($msg, file!(), line!()); + }}; +} + +// from https://docs.rs/ufmt/latest/ufmt/ +// like `std::format!` it returns a `heapless::String` but uses `uwrite!` +// instead of `write!` +macro_rules! uformat { + // IMPORTANT use `tt` fragments instead of `expr` fragments (i.e. `$($exprs:expr),*`) + (@$type:ty, $($tt:tt)*) => {{ + let mut s = <$type>::new(); + unwrap!(ufmt::uwrite!(&mut s, $($tt)*)); + s + }}; + (len:$len:expr, $($tt:tt)*) => { + uformat!(@heapless::String::<$len>, $($tt)*) + }; + ($($tt:tt)*) => { + uformat!(@crate::strutil::ShortString, $($tt)*) + }; +} + +#[allow(unused_macros)] // Should be used only for debugging purposes +macro_rules! dbg_print { + ($($args:tt)*) => { + #[cfg(feature = "debug")] + ufmt::uwrite!($crate::debug::DebugConsole, $($args)*).ok(); + } +} + +#[allow(unused_macros)] // Should be used only for debugging purposes +macro_rules! dbg_println { + ($($args:tt)*) => { + #[cfg(feature = "debug")] + ufmt::uwriteln!($crate::debug::DebugConsole, $($args)*).ok(); + } +} diff --git a/core/embed/rust/src/micropython/buffer.rs b/core/embed/rust/src/micropython/buffer.rs index ee92471114..456d131f58 100644 --- a/core/embed/rust/src/micropython/buffer.rs +++ b/core/embed/rust/src/micropython/buffer.rs @@ -20,7 +20,7 @@ use super::ffi; /// The `off` field represents offset from the `ptr` and allows us to do /// substring slices while keeping the head pointer as required by GC. #[repr(C)] -#[derive(Debug, Copy, Clone)] +#[derive(Copy, Clone)] pub struct StrBuffer { ptr: *const u8, len: u16, @@ -165,6 +165,19 @@ impl From<&'static str> for StrBuffer { } } +#[cfg(feature = "debug")] +impl ufmt::uDebug for StrBuffer { + fn fmt<W>(&self, f: &mut ufmt::Formatter<'_, W>) -> Result<(), W::Error> + where + W: ufmt::uWrite + ?Sized, + { + f.write_str("StrBuffer(")?; + f.write_str(self.as_ref())?; + f.write_str(")")?; + Ok(()) + } +} + fn get_buffer_info(obj: Obj, flags: u32) -> Result<ffi::mp_buffer_info_t, Error> { let mut bufinfo = ffi::mp_buffer_info_t { buf: ptr::null_mut(), diff --git a/core/embed/rust/src/micropython/macros.rs b/core/embed/rust/src/micropython/macros.rs index c0ebe4e12e..c058bcb429 100644 --- a/core/embed/rust/src/micropython/macros.rs +++ b/core/embed/rust/src/micropython/macros.rs @@ -250,41 +250,3 @@ pub(crate) use obj_fn_var; pub(crate) use obj_map; pub(crate) use obj_module; pub(crate) use obj_type; - -// from https://docs.rs/ufmt/latest/ufmt/ -// like `std::format!` it returns a `std::String` but uses `uwrite!` instead of -// `write!` -macro_rules! uformat { - // IMPORTANT use `tt` fragments instead of `expr` fragments (i.e. `$($exprs:expr),*`) - ($len:expr, $($tt:tt)*) => {{ - let mut s = heapless::String::<$len>::new(); - match ufmt::uwrite!(&mut s, $($tt)*) { - Ok(_) => Ok(s), - Err(e) => Err(e), - } - }}; -} - -/// Print arbitrary amounts of slices into a terminal. -/// Does not include a newline at the end. -/// Does not do anything when not in debugging mode. -#[allow(unused_macros)] // Should be used only for debugging purposes -macro_rules! print { - ($($string:expr),+) => { - #[cfg(feature = "debug")] - { - $(crate::micropython::print::print($string);)+ - } - } -} - -/// Print arbitrary amounts of slices into a terminal. -/// Includes a newline at the end. -/// Does not do anything when not in debugging mode. -#[allow(unused_macros)] // Should be used only for debugging purposes -macro_rules! println { - ($($string:expr),+) => { - // Just delegating to print! and adding a newline - print!($($string),+, "\n"); - } -} diff --git a/core/embed/rust/src/strutil.rs b/core/embed/rust/src/strutil.rs index 3210ddc4a1..6ebf938540 100644 --- a/core/embed/rust/src/strutil.rs +++ b/core/embed/rust/src/strutil.rs @@ -195,3 +195,43 @@ impl<'a, 'b> PartialEq<TString<'a>> for TString<'b> { } impl Eq for TString<'_> {} + +impl ufmt::uDisplay for TString<'_> { + fn fmt<W>(&self, f: &mut ufmt::Formatter<'_, W>) -> Result<(), W::Error> + where + W: ufmt::uWrite + ?Sized, + { + self.map(|s| f.write_str(s)) + } +} + +#[cfg(feature = "debug")] +impl ufmt::uDebug for TString<'_> { + fn fmt<W>(&self, f: &mut ufmt::Formatter<'_, W>) -> Result<(), W::Error> + where + W: ufmt::uWrite + ?Sized, + { + match self { + #[cfg(feature = "micropython")] + TString::Allocated(buf) => { + f.write_str("Allocated(")?; + buf.fmt(f)?; + f.write_str(")")?; + } + #[cfg(feature = "translations")] + TString::Translation { tr, offset } => { + f.write_str("Translation(")?; + tr.fmt(f)?; + f.write_str(", ")?; + offset.fmt(f)?; + f.write_str(")")?; + } + TString::Str(s) => { + f.write_str("Str(")?; + f.write_str(s)?; + f.write_str(")")?; + } + } + Ok(()) + } +} diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index aad7b93e2d..4255f2c3a7 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -6,7 +6,8 @@ #[cfg(feature = "micropython")] use crate::micropython::qstr::Qstr; -#[derive(Debug, Copy, Clone, FromPrimitive, PartialEq, Eq)] +#[derive(Copy, Clone, FromPrimitive, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] #[repr(u16)] #[allow(non_camel_case_types)] pub enum TranslatedString { diff --git a/core/embed/rust/src/translations/generated/translated_string.rs.mako b/core/embed/rust/src/translations/generated/translated_string.rs.mako index 74acf67577..3147724698 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs.mako +++ b/core/embed/rust/src/translations/generated/translated_string.rs.mako @@ -35,7 +35,8 @@ en_data = json.loads(en_file.read_text())["translations"] #[cfg(feature = "micropython")] use crate::micropython::qstr::Qstr; -#[derive(Debug, Copy, Clone, FromPrimitive, PartialEq, Eq)] +#[derive(Copy, Clone, FromPrimitive, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] #[repr(u16)] #[allow(non_camel_case_types)] pub enum TranslatedString { diff --git a/core/embed/rust/src/trezorhal/fatal_error.rs b/core/embed/rust/src/trezorhal/fatal_error.rs index 9c22fff3b8..20c9692bbb 100644 --- a/core/embed/rust/src/trezorhal/fatal_error.rs +++ b/core/embed/rust/src/trezorhal/fatal_error.rs @@ -10,9 +10,6 @@ use crate::ui::{ ui_features::{ModelUI, UIFeaturesCommon}, }; -#[cfg(feature = "debug")] -use crate::dbg_println; - fn shutdown() -> ! { unsafe { ffi::trezor_shutdown() } } @@ -73,27 +70,3 @@ impl<T, E> UnwrapOrFatalError<T> for Result<T, E> { } } } - -macro_rules! unwrap { - ($e:expr, $msg:expr) => {{ - use crate::trezorhal::fatal_error::UnwrapOrFatalError; - $e.unwrap_or_fatal_error($msg, file!(), line!()) - }}; - ($expr:expr) => { - unwrap!($expr, "unwrap failed") - }; -} - -macro_rules! ensure { - ($what:expr, $error:expr) => { - if !($what) { - crate::trezorhal::fatal_error::__fatal_error($error, file!(), line!()); - } - }; -} - -macro_rules! fatal_error { - ($msg:expr) => {{ - crate::trezorhal::fatal_error::__fatal_error($msg, file!(), line!()); - }}; -} diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 3104180c77..6c5a1a8721 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -469,6 +469,7 @@ where } #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum AttachType { Initial, #[cfg(feature = "touch")] @@ -476,6 +477,7 @@ pub enum AttachType { } #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum Event { #[cfg(feature = "button")] Button(ButtonEvent), @@ -499,6 +501,7 @@ pub enum Event { } #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub struct TimerToken(u32); impl TimerToken { diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index b614d7d7eb..905c94a737 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -6,6 +6,7 @@ use crate::ui::{ }; #[derive(Copy, Clone, Eq, PartialEq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum SwipeDirection { Up, Down, diff --git a/core/embed/rust/src/ui/event.rs b/core/embed/rust/src/ui/event.rs index c92d24d395..1b60d4a52f 100644 --- a/core/embed/rust/src/ui/event.rs +++ b/core/embed/rust/src/ui/event.rs @@ -5,12 +5,14 @@ use core::convert::TryInto; use crate::ui::component::SwipeDirection; #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum PhysicalButton { Left, Right, } #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum ButtonEvent { /// Button pressed down. /// ▼ * | * ▼ @@ -39,6 +41,7 @@ impl ButtonEvent { } #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum TouchEvent { /// A person has started touching the screen at given absolute coordinates. /// `TouchMove` will usually follow, and `TouchEnd` should finish the @@ -64,6 +67,7 @@ impl TouchEvent { } #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum USBEvent { /// USB host has connected/disconnected. Connected(bool), @@ -71,6 +75,7 @@ pub enum USBEvent { #[cfg(feature = "touch")] #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum SwipeEvent { Move(SwipeDirection, i16), End(SwipeDirection), diff --git a/core/embed/rust/src/ui/geometry.rs b/core/embed/rust/src/ui/geometry.rs index 01f26b2688..632b5811d0 100644 --- a/core/embed/rust/src/ui/geometry.rs +++ b/core/embed/rust/src/ui/geometry.rs @@ -154,6 +154,7 @@ impl Lerp for Offset { /// A point in 2D space defined by the the `x` and `y` coordinate. Relative /// coordinates, vectors, and offsets are represented by the `Offset` type. #[derive(Copy, Clone, PartialEq, Eq)] +#[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub struct Point { pub x: i16, pub y: i16, From da37bce59d050bf0d069ffdc30352afeb5408635 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 13 Jun 2024 15:09:43 +0200 Subject: [PATCH 302/626] refactor(core/rust): drop ui::macros removing inttostr!, build_string!, and relocating include_res! --- .../rust/src/ui/component/text/paragraphs.rs | 3 +- core/embed/rust/src/ui/macros.rs | 25 -------- core/embed/rust/src/ui/mod.rs | 4 -- .../ui/model_mercury/component/fido_icons.rs | 1 + .../component/fido_icons.rs.mako | 1 + .../ui/model_mercury/component/share_words.rs | 10 ++-- .../src/ui/model_mercury/theme/bootloader.rs | 2 +- .../rust/src/ui/model_mercury/theme/mod.rs | 4 +- .../ui/model_tr/component/changing_text.rs | 57 +++++++++---------- .../component/input_methods/passphrase.rs | 10 ++-- .../model_tr/component/input_methods/pin.rs | 30 ++++------ .../component/input_methods/wordlist.rs | 15 ++--- .../src/ui/model_tr/component/share_words.rs | 29 ++++------ .../rust/src/ui/model_tr/theme/bootloader.rs | 3 +- core/embed/rust/src/ui/model_tr/theme/mod.rs | 3 +- .../src/ui/model_tt/component/fido_icons.rs | 1 + .../ui/model_tt/component/fido_icons.rs.mako | 1 + .../rust/src/ui/model_tt/theme/bootloader.rs | 2 +- core/embed/rust/src/ui/model_tt/theme/mod.rs | 3 +- core/embed/rust/src/ui/util.rs | 27 +++++++-- 20 files changed, 101 insertions(+), 130 deletions(-) delete mode 100644 core/embed/rust/src/ui/macros.rs diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index 9e3b54677c..7f33a47940 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -14,7 +14,6 @@ use crate::{ }; use super::layout::{LayoutFit, TextLayout, TextStyle}; -use heapless::String; /// Used as an upper bound of number of different styles we may render on single /// page. @@ -656,7 +655,7 @@ where color: Color, target: &mut impl Renderer<'s>, ) { - let numeral = build_string!(10, inttostr!(n as u8 + 1), "."); + let numeral = uformat!("{}.", n + 1); shape::Text::new(base_point, numeral.as_str()) .with_font(Font::NORMAL) .with_fg(color) diff --git a/core/embed/rust/src/ui/macros.rs b/core/embed/rust/src/ui/macros.rs deleted file mode 100644 index f286d8dcbd..0000000000 --- a/core/embed/rust/src/ui/macros.rs +++ /dev/null @@ -1,25 +0,0 @@ -#[allow(unused_macros)] // T1 doesn't use icons (yet) -macro_rules! include_res { - ($filename:expr) => { - include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/ui/", $filename)) - }; -} - -/// Concatenates arbitrary amount of slices into a String. -macro_rules! build_string { - ($max:expr, $($string:expr),+) => { - { - let mut new_string = String::<$max>::new(); - $(unwrap!(new_string.push_str($string));)+ - new_string - } - } -} - -/// Transforms integer into string slice. For example for printing. -#[allow(unused_macros)] // not used in TT UI -macro_rules! inttostr { - ($int:expr) => {{ - unwrap!(heapless::String::<10>::try_from($int)).as_str() - }}; -} diff --git a/core/embed/rust/src/ui/mod.rs b/core/embed/rust/src/ui/mod.rs index f1fed31e8f..da52799582 100644 --- a/core/embed/rust/src/ui/mod.rs +++ b/core/embed/rust/src/ui/mod.rs @@ -1,6 +1,3 @@ -#[macro_use] -pub mod macros; - pub mod animation; #[cfg(feature = "micropython")] pub mod backlight; @@ -14,7 +11,6 @@ pub mod flow; pub mod geometry; pub mod lerp; pub mod shape; -#[macro_use] pub mod util; pub mod layout; diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs index 730232cf4d..9818292212 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs @@ -4,6 +4,7 @@ use crate::strutil::TString; +use crate::ui::util::include_res; const ICON_APPLE: &[u8] = include_res!("model_mercury/res/fido/icon_apple.toif"); diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako index 5b832e9a27..4712ee4124 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako +++ b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako @@ -4,6 +4,7 @@ use crate::strutil::TString; +use crate::ui::util::include_res; <% icons: list[tuple[str, str]] = [] diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 6390db49fa..1d3173d38f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -9,12 +9,11 @@ use crate::{ event::SwipeEvent, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, model_mercury::component::Footer, - shape, - shape::Renderer, + shape::{self, Renderer}, util, }, }; -use heapless::{String, Vec}; +use heapless::Vec; const MAX_WORDS: usize = 33; // super-shamir has 33 words, all other have less const ANIMATION_DURATION_MS: Duration = Duration::from_millis(166); @@ -158,7 +157,7 @@ impl<'a> Component for ShareWords<'a> { .text_font .visible_text_height("1"), ); - let ordinal = build_string!(3, inttostr!(ordinal_val), "."); + let ordinal = uformat!("{}.", ordinal_val); shape::Text::new(ordinal_pos, &ordinal) .with_font(theme::TEXT_SUB_GREY_LIGHT.text_font) .with_fg(theme::GREY) @@ -204,8 +203,7 @@ impl<'a> crate::trace::Trace for ShareWords<'a> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ShareWords"); let word = &self.share_words[self.page_index as usize]; - let content = - word.map(|w| build_string!(50, inttostr!(self.page_index as u8 + 1), ". ", w, "\n")); + let content = word.map(|w| uformat!("{}. {}\n", self.page_index + 1, w)); t.string("screen_content", content.as_str().into()); t.int("page_count", self.share_words.len() as i64) } diff --git a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs b/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs index ce35b3fdb1..e97c985a8d 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs @@ -2,7 +2,7 @@ use crate::ui::{ component::{text::TextStyle, LineBreaking::BreakWordsNoHyphen}, constant::{HEIGHT, WIDTH}, display::{Color, Font}, - geometry::{Offset, Point, Rect}, + geometry::{Offset, Point, Rect}, util::include_res, }; use super::super::{ diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index da8c4f70ed..95fa66ec5c 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -9,8 +9,8 @@ use crate::{ text::{layout::Chunks, LineBreaking, PageBreaking, TextStyle}, FixedHeightBar, }, - display::{Color, Font, Icon}, - geometry::Insets, + display::{Color, Font}, + geometry::Insets, util::include_icon, }, }; diff --git a/core/embed/rust/src/ui/model_tr/component/changing_text.rs b/core/embed/rust/src/ui/model_tr/component/changing_text.rs index 089566d10e..ac8edbc906 100644 --- a/core/embed/rust/src/ui/model_tr/component/changing_text.rs +++ b/core/embed/rust/src/ui/model_tr/component/changing_text.rs @@ -1,10 +1,12 @@ -use crate::ui::{ - component::{Component, Event, EventCtx, Never, Pad}, - display::Font, - geometry::{Alignment, Point, Rect}, - shape, - shape::Renderer, - util::long_line_content_with_ellipsis, +use crate::{ + strutil::ShortString, + ui::{ + component::{Component, Event, EventCtx, Never, Pad}, + display::Font, + geometry::{Alignment, Point, Rect}, + shape::{self, Renderer}, + util::long_line_content_with_ellipsis, + }, }; use super::{common, theme}; @@ -12,9 +14,9 @@ use super::{common, theme}; /// Component that allows for "allocating" a standalone line of text anywhere /// on the screen and updating it arbitrarily - without affecting the rest /// and without being affected by other components. -pub struct ChangingTextLine<T> { +pub struct ChangingTextLine { pad: Pad, - text: T, + text: ShortString, font: Font, /// Whether to show the text. Can be disabled. show_content: bool, @@ -25,11 +27,10 @@ pub struct ChangingTextLine<T> { text_at_the_top: bool, } -impl<T> ChangingTextLine<T> -where - T: AsRef<str>, -{ - pub fn new(text: T, font: Font, alignment: Alignment) -> Self { +impl ChangingTextLine { + pub fn new(text: &str, font: Font, alignment: Alignment, max_len: usize) -> Self { + let text = unwrap!(ShortString::try_from(text)); + debug_assert!(text.capacity() >= max_len); Self { pad: Pad::with_background(theme::BG), text, @@ -41,12 +42,12 @@ where } } - pub fn center_mono(text: T) -> Self { - Self::new(text, Font::MONO, Alignment::Center) + pub fn center_mono(text: &str, max_len: usize) -> Self { + Self::new(text, Font::MONO, Alignment::Center, max_len) } - pub fn center_bold(text: T) -> Self { - Self::new(text, Font::BOLD_UPPER, Alignment::Center) + pub fn center_bold(text: &str, max_len: usize) -> Self { + Self::new(text, Font::BOLD_UPPER, Alignment::Center, max_len) } /// Not showing ellipsis at the beginning of longer texts. @@ -62,13 +63,14 @@ where } /// Update the text to be displayed in the line. - pub fn update_text(&mut self, text: T) { - self.text = text; + pub fn update_text(&mut self, text: &str) { + self.text.clear(); + unwrap!(self.text.push_str(text)); } /// Get current text. - pub fn get_text(&self) -> &T { - &self.text + pub fn get_text(&self) -> &str { + self.text.as_str() } /// Changing the current font @@ -155,21 +157,14 @@ where // Creating the notion of motion by shifting the text left and right with // each new text character. // (So that it is apparent for the user that the text is changing.) - let x_offset = if self.text.as_ref().len() % 2 == 0 { - 0 - } else { - 2 - }; + let x_offset = if self.text.len() % 2 == 0 { 0 } else { 2 }; let baseline = Point::new(self.pad.area.x0 + x_offset, self.y_baseline()); common::display_left(baseline, &text_to_display, self.font); } } -impl<T> Component for ChangingTextLine<T> -where - T: AsRef<str>, -{ +impl Component for ChangingTextLine { type Msg = Never; fn place(&mut self, bounds: Rect) -> Rect { diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs index d3f422a6ee..668e71038e 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::TString, + strutil::{ShortString, TString}, translations::TR, trezorhal::random, ui::{ @@ -270,7 +270,7 @@ impl ChoiceFactory for ChoiceFactoryPassphrase { /// Component for entering a passphrase. pub struct PassphraseEntry { choice_page: ChoicePage<ChoiceFactoryPassphrase, PassphraseAction>, - passphrase_dots: Child<ChangingTextLine<String<MAX_PASSPHRASE_LENGTH>>>, + passphrase_dots: Child<ChangingTextLine>, show_plain_passphrase: bool, show_last_digit: bool, textbox: TextBox<MAX_PASSPHRASE_LENGTH>, @@ -283,7 +283,7 @@ impl PassphraseEntry { choice_page: ChoicePage::new(ChoiceFactoryPassphrase::new(ChoiceCategory::Menu, true)) .with_carousel(true) .with_initial_page_counter(random_menu_position()), - passphrase_dots: Child::new(ChangingTextLine::center_mono(String::new())), + passphrase_dots: Child::new(ChangingTextLine::center_mono("", MAX_PASSPHRASE_LENGTH)), show_plain_passphrase: false, show_last_digit: false, textbox: TextBox::empty(), @@ -298,7 +298,7 @@ impl PassphraseEntry { unwrap!(String::try_from("")) } else { // Showing asterisks and possibly the last digit. - let mut dots: String<MAX_PASSPHRASE_LENGTH> = String::new(); + let mut dots: ShortString = String::new(); for _ in 0..self.textbox.len() - 1 { unwrap!(dots.push('*')); } @@ -311,7 +311,7 @@ impl PassphraseEntry { dots }; self.passphrase_dots.mutate(ctx, |ctx, passphrase_dots| { - passphrase_dots.update_text(text_to_show); + passphrase_dots.update_text(&text_to_show); passphrase_dots.request_complete_repaint(ctx); }); } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs index e977e4ea37..2044d9ab57 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::TString, + strutil::{ShortString, TString}, translations::TR, trezorhal::random, ui::{ @@ -132,8 +132,8 @@ impl ChoiceFactory for ChoiceFactoryPIN { /// Component for entering a PIN. pub struct PinEntry<'a> { choice_page: ChoicePage<ChoiceFactoryPIN, PinAction>, - header_line: Child<ChangingTextLine<String<MAX_PIN_LENGTH>>>, - pin_line: Child<ChangingTextLine<String<MAX_PIN_LENGTH>>>, + header_line: Child<ChangingTextLine>, + pin_line: Child<ChangingTextLine>, prompt: TString<'a>, subprompt: TString<'a>, /// Whether we already show the "real" prompt (not the warning). @@ -151,20 +151,13 @@ impl<'a> PinEntry<'a> { // any button click.) let show_subprompt = !subprompt.is_empty(); let (showing_real_prompt, header_line_content, pin_line_content) = if show_subprompt { - ( - false, - TR::pin__title_wrong_pin.map_translated(|t| unwrap!(String::try_from(t))), - subprompt.map(|s| unwrap!(String::try_from(s))), - ) + (false, TR::pin__title_wrong_pin.into(), subprompt) } else { - ( - true, - prompt.map(|s| unwrap!(String::try_from(s))), - unwrap!(String::try_from(EMPTY_PIN_STR)), - ) + (true, prompt, EMPTY_PIN_STR.into()) }; - let mut pin_line = ChangingTextLine::center_bold(pin_line_content).without_ellipsis(); + let mut pin_line = pin_line_content + .map(|s| ChangingTextLine::center_bold(s, MAX_PIN_LENGTH).without_ellipsis()); if show_subprompt { pin_line.update_font(Font::NORMAL); } @@ -175,7 +168,8 @@ impl<'a> PinEntry<'a> { .with_initial_page_counter(get_random_digit_position()) .with_carousel(true), header_line: Child::new( - ChangingTextLine::center_bold(header_line_content) + header_line_content + .map(|s| ChangingTextLine::center_bold(s, MAX_PIN_LENGTH)) .without_ellipsis() .with_text_at_the_top(), ), @@ -209,7 +203,7 @@ impl<'a> PinEntry<'a> { unwrap!(String::try_from(self.pin())) } else { // Showing asterisks and possibly the last digit. - let mut dots: String<MAX_PIN_LENGTH> = String::new(); + let mut dots = ShortString::new(); for _ in 0..self.textbox.len() - 1 { unwrap!(dots.push('*')); } @@ -224,7 +218,7 @@ impl<'a> PinEntry<'a> { self.pin_line.mutate(ctx, |ctx, pin_line| { pin_line.update_font(used_font); - pin_line.update_text(pin_line_text); + pin_line.update_text(&pin_line_text); pin_line.request_complete_repaint(ctx); }); } @@ -232,7 +226,7 @@ impl<'a> PinEntry<'a> { /// Showing the real prompt instead of WRONG PIN fn show_prompt(&mut self, ctx: &mut EventCtx) { self.header_line.mutate(ctx, |ctx, header_line| { - header_line.update_text(self.prompt.map(|s| unwrap!(String::try_from(s)))); + self.prompt.map(|s| header_line.update_text(s)); header_line.request_complete_repaint(ctx); }); } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs index 27bfd4fffe..2253034404 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs @@ -20,6 +20,7 @@ enum WordlistAction { } const MAX_WORD_LENGTH: usize = 10; +const LINE_CAPACITY: usize = MAX_WORD_LENGTH + 1; /// Offer words when there will be fewer of them than this const OFFER_WORDS_THRESHOLD: usize = 10; @@ -156,7 +157,7 @@ impl ChoiceFactory for ChoiceFactoryWordlist { /// Component for entering a mnemonic from a wordlist - BIP39 or SLIP39. pub struct WordlistEntry { choice_page: ChoicePage<ChoiceFactoryWordlist, WordlistAction>, - chosen_letters: Child<ChangingTextLine<String<{ MAX_WORD_LENGTH + 1 }>>>, + chosen_letters: Child<ChangingTextLine>, textbox: TextBox<MAX_WORD_LENGTH>, offer_words: bool, wordlist_type: WordlistType, @@ -174,9 +175,7 @@ impl WordlistEntry { .with_incomplete(true) .with_carousel(true) .with_initial_page_counter(get_random_position(choices_count)), - chosen_letters: Child::new(ChangingTextLine::center_mono(unwrap!(String::try_from( - PROMPT - )))), + chosen_letters: Child::new(ChangingTextLine::center_mono(PROMPT, LINE_CAPACITY)), textbox: TextBox::empty(), offer_words: false, wordlist_type, @@ -196,9 +195,7 @@ impl WordlistEntry { choice_page: ChoicePage::new(choices) .with_incomplete(true) .with_initial_page_counter(1), - chosen_letters: Child::new(ChangingTextLine::center_mono(unwrap!(String::try_from( - word - )))), + chosen_letters: Child::new(ChangingTextLine::center_mono(word, LINE_CAPACITY)), textbox: TextBox::new(unwrap!(String::try_from(word))), offer_words: false, wordlist_type, @@ -263,9 +260,9 @@ impl WordlistEntry { /// Reflects currently chosen letters in the textbox. fn update_chosen_letters(&mut self, ctx: &mut EventCtx) { - let text = build_string!({ MAX_WORD_LENGTH + 1 }, self.textbox.content(), PROMPT); + let text = uformat!("{}{}", self.textbox.content(), PROMPT); self.chosen_letters.mutate(ctx, |ctx, chosen_letters| { - chosen_letters.update_text(text); + chosen_letters.update_text(&text); chosen_letters.request_complete_repaint(ctx); }); } diff --git a/core/embed/rust/src/ui/model_tr/component/share_words.rs b/core/embed/rust/src/ui/model_tr/component/share_words.rs index c9ca066675..f1c98bf1a5 100644 --- a/core/embed/rust/src/ui/model_tr/component/share_words.rs +++ b/core/embed/rust/src/ui/model_tr/component/share_words.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::StringType, + strutil::{ShortString, StringType, TString}, translations::TR, ui::{ component::{ @@ -8,12 +8,12 @@ use crate::{ }, display::Font, geometry::{Alignment, Offset, Rect}, - shape, - shape::Renderer, + shape::{self, Renderer}, }, }; -use heapless::{String, Vec}; +use heapless::Vec; +use ufmt::uwrite; use super::{common::display_left, scrollbar::SCROLLBAR_SPACE, theme, ScrollBar}; @@ -72,15 +72,10 @@ where word_screens + 1 } - fn get_final_text(&self) -> String<50> { + fn get_final_text(&self) -> ShortString { TR::share_words__wrote_down_all.map_translated(|wrote_down_all| { TR::share_words__words_in_order.map_translated(|in_order| { - build_string!( - 50, - wrote_down_all, - inttostr!(self.share_words.len() as u8), - in_order - ) + uformat!("{}{}{}", wrote_down_all, self.share_words.len(), in_order) }) }) } @@ -124,7 +119,7 @@ where } let word = &self.share_words[index]; let baseline = self.area.top_left() + Offset::y(y_offset); - let ordinal = build_string!(5, inttostr!(index as u8 + 1), "."); + let ordinal = uformat!("{}.", index + 1); display_left(baseline + Offset::x(NUMBER_X_OFFSET), &ordinal, NUMBER_FONT); display_left(baseline + Offset::x(WORD_X_OFFSET), word, WORD_FONT); } @@ -142,7 +137,7 @@ where } let word = &self.share_words[index]; let baseline = self.area.top_left() + Offset::y(y_offset); - let ordinal = build_string!(5, inttostr!(index as u8 + 1), "."); + let ordinal = uformat!("{}.", index + 1); shape::Text::new(baseline + Offset::x(NUMBER_X_OFFSET), &ordinal) .with_font(NUMBER_FONT) @@ -230,16 +225,14 @@ where let content = if self.is_final_page() { self.get_final_text() } else { - let mut content = String::<50>::new(); + let mut content = ShortString::new(); for i in 0..WORDS_PER_PAGE { let index = self.word_index() + i; if index >= self.share_words.len() { break; } - let word = &self.share_words[index]; - let current_line = - build_string!(50, inttostr!(index as u8 + 1), ". ", word.as_ref(), "\n"); - unwrap!(content.push_str(¤t_line)); + let word: TString = self.share_words[index].clone().into(); + unwrap!(uwrite!(content, "{}. {}\n", index + 1, word)); } content }; diff --git a/core/embed/rust/src/ui/model_tr/theme/bootloader.rs b/core/embed/rust/src/ui/model_tr/theme/bootloader.rs index cc6388e0c4..72ddc72b59 100644 --- a/core/embed/rust/src/ui/model_tr/theme/bootloader.rs +++ b/core/embed/rust/src/ui/model_tr/theme/bootloader.rs @@ -1,6 +1,7 @@ use crate::ui::{ component::text::TextStyle, - display::{toif::Icon, Color, Font}, + display::{Color, Font}, + util::include_icon, }; pub use super::super::theme::{BLACK, WHITE}; diff --git a/core/embed/rust/src/ui/model_tr/theme/mod.rs b/core/embed/rust/src/ui/model_tr/theme/mod.rs index 1948620bd7..ba3c7b419e 100644 --- a/core/embed/rust/src/ui/model_tr/theme/mod.rs +++ b/core/embed/rust/src/ui/model_tr/theme/mod.rs @@ -3,8 +3,9 @@ use crate::ui::{ text::{layout::Chunks, TextStyle}, LineBreaking, PageBreaking, }, - display::{toif::Icon, Color, Font}, + display::{Color, Font}, geometry::Offset, + util::include_icon, }; use num_traits::FromPrimitive; diff --git a/core/embed/rust/src/ui/model_tt/component/fido_icons.rs b/core/embed/rust/src/ui/model_tt/component/fido_icons.rs index eff1f63950..e556cf093e 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido_icons.rs +++ b/core/embed/rust/src/ui/model_tt/component/fido_icons.rs @@ -4,6 +4,7 @@ use crate::strutil::TString; +use crate::ui::util::include_res; const ICON_APPLE: &[u8] = include_res!("model_tt/res/fido/icon_apple.toif"); diff --git a/core/embed/rust/src/ui/model_tt/component/fido_icons.rs.mako b/core/embed/rust/src/ui/model_tt/component/fido_icons.rs.mako index 6d76554ad5..6b95c7689a 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido_icons.rs.mako +++ b/core/embed/rust/src/ui/model_tt/component/fido_icons.rs.mako @@ -4,6 +4,7 @@ use crate::strutil::TString; +use crate::ui::util::include_res; <% icons: list[tuple[str, str]] = [] diff --git a/core/embed/rust/src/ui/model_tt/theme/bootloader.rs b/core/embed/rust/src/ui/model_tt/theme/bootloader.rs index ac2e320985..600b2b1b5d 100644 --- a/core/embed/rust/src/ui/model_tt/theme/bootloader.rs +++ b/core/embed/rust/src/ui/model_tt/theme/bootloader.rs @@ -6,7 +6,7 @@ use crate::ui::{ model_tt::{ component::{ButtonStyle, ButtonStyleSheet, ResultStyle}, theme::{BLACK, FG, GREY_DARK, GREY_LIGHT, WHITE}, - }, + }, util::include_res, }; pub const BLD_BG: Color = Color::rgb(0x00, 0x1E, 0xAD); diff --git a/core/embed/rust/src/ui/model_tt/theme/mod.rs b/core/embed/rust/src/ui/model_tt/theme/mod.rs index 77ccbc11ac..da8e73d8fe 100644 --- a/core/embed/rust/src/ui/model_tt/theme/mod.rs +++ b/core/embed/rust/src/ui/model_tt/theme/mod.rs @@ -8,8 +8,9 @@ use crate::{ text::{layout::Chunks, LineBreaking, PageBreaking, TextStyle}, FixedHeightBar, }, - display::{Color, Font, Icon}, + display::{Color, Font}, geometry::{Insets, Offset}, + util::{include_icon, include_res}, }, }; diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index 1beec7798e..dddf059dc7 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -155,20 +155,29 @@ pub fn long_line_content_with_ellipsis( let remaining_available_width = available_width - ellipsis_width; let chars_from_right = text_font.longest_suffix(remaining_available_width, text); - build_string!(50, ellipsis, &text[text.len() - chars_from_right..]) + let mut s = ShortString::new(); + unwrap!(s.push_str(ellipsis)); + unwrap!(s.push_str(&text[text.len() - chars_from_right..])); + s } } -#[macro_export] /// Create the `Icon` constant with given name and path. /// Possibly users can supply `true` as a third argument and this /// will signify that the icon has empty right column. macro_rules! include_icon { ($name:ident, $path:expr, empty_right_col = $empty:expr) => { - pub const $name: Icon = if $empty { - Icon::debug_named(include_res!($path), stringify!($name)).with_empty_right_column() + pub const $name: $crate::ui::display::toif::Icon = if $empty { + $crate::ui::display::toif::Icon::debug_named( + $crate::ui::util::include_res!($path), + stringify!($name), + ) + .with_empty_right_column() } else { - Icon::debug_named(include_res!($path), stringify!($name)) + $crate::ui::display::toif::Icon::debug_named( + $crate::ui::util::include_res!($path), + stringify!($name), + ) }; }; // No empty right column by default. @@ -176,6 +185,14 @@ macro_rules! include_icon { include_icon!($name, $path, empty_right_col = false); }; } +pub(crate) use include_icon; + +macro_rules! include_res { + ($filename:expr) => { + include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/ui/", $filename)) + }; +} +pub(crate) use include_res; pub const SLIDE_DURATION_MS: Duration = Duration::from_millis(333); From 8e52081d8af7591ef05922e7233e0dc6aa88d40d Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 13 Jun 2024 15:51:10 +0200 Subject: [PATCH 303/626] refactor(core/rust): unify String usage --- .../rust/src/ui/component/text/common.rs | 22 +++++++++---------- .../model_mercury/component/keyboard/bip39.rs | 5 ++--- .../component/keyboard/passphrase.rs | 4 ++-- .../model_mercury/component/keyboard/pin.rs | 13 +++++------ .../component/keyboard/slip39.rs | 18 +++++++-------- .../component/input_methods/number_input.rs | 8 +++---- .../component/input_methods/passphrase.rs | 4 ++-- .../model_tr/component/input_methods/pin.rs | 4 ++-- .../component/input_methods/wordlist.rs | 4 ++-- .../ui/model_tt/component/keyboard/bip39.rs | 5 ++--- .../model_tt/component/keyboard/passphrase.rs | 4 ++-- .../src/ui/model_tt/component/keyboard/pin.rs | 15 ++++++------- .../ui/model_tt/component/keyboard/slip39.rs | 20 ++++++++--------- 13 files changed, 58 insertions(+), 68 deletions(-) diff --git a/core/embed/rust/src/ui/component/text/common.rs b/core/embed/rust/src/ui/component/text/common.rs index 82d66e16c3..19ea2a54d8 100644 --- a/core/embed/rust/src/ui/component/text/common.rs +++ b/core/embed/rust/src/ui/component/text/common.rs @@ -1,4 +1,7 @@ -use crate::ui::{component::EventCtx, util::ResultExt}; +use crate::{ + strutil::ShortString, + ui::{component::EventCtx, util::ResultExt}, +}; use heapless::String; /// Reified editing operations of `TextBox`. @@ -13,19 +16,20 @@ pub enum TextEdit { /// Wraps a character buffer of maximum length `L` and provides text editing /// operations over it. Text ops usually take a `EventCtx` to request a paint /// pass in case of any state modification. -pub struct TextBox<const L: usize> { - text: String<L>, +pub struct TextBox { + text: ShortString, } -impl<const L: usize> TextBox<L> { +impl TextBox { /// Create a new `TextBox` with content `text`. - pub fn new(text: String<L>) -> Self { + pub fn new(text: &str) -> Self { + let text = unwrap!(String::try_from(text)); Self { text } } /// Create an empty `TextBox`. pub fn empty() -> Self { - Self::new(String::new()) + Self::new("") } pub fn content(&self) -> &str { @@ -40,10 +44,6 @@ impl<const L: usize> TextBox<L> { self.text.is_empty() } - pub fn is_full(&self) -> bool { - self.text.len() == self.text.capacity() - } - /// Delete the last character of content, if any. pub fn delete_last(&mut self, ctx: &mut EventCtx) { let changed = self.text.pop().is_some(); @@ -107,7 +107,7 @@ impl<const L: usize> TextBox<L> { // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl<const L: usize> crate::trace::Trace for TextBox<L> { +impl crate::trace::Trace for TextBox { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("TextBox"); t.string("text", self.text.as_str().into()); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index 5fb9488af2..a26604f177 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -18,7 +18,6 @@ use crate::{ shape::Renderer, }, }; -use heapless::String; const MAX_LENGTH: usize = 8; @@ -26,7 +25,7 @@ pub struct Bip39Input { button: Button, // used only to keep track of suggestion text color button_suggestion: Button, - textbox: TextBox<MAX_LENGTH>, + textbox: TextBox, multi_tap: MultiTapKeyboard, options_num: Option<usize>, suggested_word: Option<&'static str>, @@ -194,7 +193,7 @@ impl Bip39Input { // Styling the input to reflect already filled word Self { button: Button::empty().styled(theme::button_recovery_confirm()), - textbox: TextBox::new(unwrap!(String::try_from(word))), + textbox: TextBox::new(word), multi_tap: MultiTapKeyboard::new(), options_num: bip39::options_num(word), suggested_word: bip39::complete_word(word), diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 2e4966bf8d..abe8454bbc 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -236,7 +236,7 @@ impl PassphraseKeyboard { /// We should disable the input when the passphrase has reached maximum /// length and we are not cycling through the characters. fn is_button_active(&self, key: usize) -> bool { - let textbox_not_full = !self.input.inner().textbox.is_full(); + let textbox_not_full = self.input.inner().textbox.len() < MAX_LENGTH; let key_is_pending = { if let Some(pending) = self.input.inner().multi_tap.pending_key() { pending == key @@ -406,7 +406,7 @@ impl Component for PassphraseKeyboard { struct Input { area: Rect, - textbox: TextBox<MAX_LENGTH>, + textbox: TextBox, multi_tap: MultiTapKeyboard, } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index 8abda3993b..68c3574229 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -2,7 +2,7 @@ use core::mem; use heapless::String; use crate::{ - strutil::TString, + strutil::{ShortString, TString}, time::Duration, trezorhal::random, ui::{ @@ -14,11 +14,10 @@ use crate::{ event::TouchEvent, geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, model_mercury::component::{ - button::{Button, ButtonContent, ButtonMsg, ButtonMsg::Clicked}, + button::{Button, ButtonContent, ButtonMsg::{self, Clicked}}, theme, }, - shape, - shape::Renderer, + shape::{self, Renderer}, }, }; @@ -278,7 +277,7 @@ struct PinDots { area: Rect, pad: Pad, style: TextStyle, - digits: String<MAX_LENGTH>, + digits: ShortString, display_digits: bool, } @@ -309,7 +308,7 @@ impl PinDots { } fn is_full(&self) -> bool { - self.digits.len() == self.digits.capacity() + self.digits.len() >= MAX_LENGTH } fn clear(&mut self, ctx: &mut EventCtx) { @@ -455,7 +454,7 @@ impl crate::trace::Trace for PinKeyboard<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("PinKeyboard"); // So that debuglink knows the locations of the buttons - let mut digits_order: String<10> = String::new(); + let mut digits_order = ShortString::new(); for btn in self.digit_btns.iter() { let btn_content = btn.inner().content(); if let ButtonContent::Text(text) = btn_content { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index 79173a1db0..60cfe425d2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -3,8 +3,7 @@ use core::iter; use heapless::String; use crate::{ - trezorhal::slip39, - ui::{ + strutil::ShortString, trezorhal::slip39, ui::{ component::{ text::common::{TextBox, TextEdit}, Component, Event, EventCtx, @@ -21,17 +20,16 @@ use crate::{ }, theme, }, - shape, - shape::Renderer, + shape::{self, Renderer}, util::ResultExt, - }, + } }; const MAX_LENGTH: usize = 8; pub struct Slip39Input { button: Button, - textbox: TextBox<MAX_LENGTH>, + textbox: TextBox, multi_tap: MultiTapKeyboard, final_word: Option<&'static str>, input_mask: Slip39Mask, @@ -137,7 +135,7 @@ impl Component for Slip39Input { // To simplify things, we always copy the printed string here, even if it // wouldn't be strictly necessary. - let mut text: String<MAX_LENGTH> = String::new(); + let mut text = ShortString::new(); if let Some(word) = self.final_word { // We're done with input, paint the full word. text.push_str(word) @@ -222,7 +220,7 @@ impl Slip39Input { Self { // Button has the same style the whole time button: Button::empty().styled(theme::button_recovery_confirm()), - textbox: TextBox::new(buff), + textbox: TextBox::new(&buff), multi_tap: MultiTapKeyboard::new(), final_word, input_mask, @@ -231,8 +229,8 @@ impl Slip39Input { fn setup_from_prefilled_word( word: &str, - ) -> (String<MAX_LENGTH>, Slip39Mask, Option<&'static str>) { - let mut buff: String<MAX_LENGTH> = String::new(); + ) -> (ShortString, Slip39Mask, Option<&'static str>) { + let mut buff = ShortString::new(); // Gradually appending encoded key digits to the buffer and checking if // have not already formed a final word. diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs index 9d25e5db81..b033007fbc 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs @@ -1,14 +1,12 @@ use crate::{ - translations::TR, - ui::{ + strutil::ShortString, translations::TR, ui::{ component::{Component, Event, EventCtx}, geometry::Rect, shape::Renderer, - }, + } }; use super::super::{ButtonLayout, ChoiceFactory, ChoiceItem, ChoicePage}; -use heapless::String; struct ChoiceFactoryNumberInput { min: u32, @@ -31,7 +29,7 @@ impl ChoiceFactory for ChoiceFactoryNumberInput { fn get(&self, choice_index: usize) -> (Self::Item, Self::Action) { let num = self.min + choice_index as u32; - let text: String<10> = unwrap!(String::try_from(num)); + let text = unwrap!(ShortString::try_from(num)); let mut choice_item = ChoiceItem::new( text, ButtonLayout::arrow_armed_arrow(TR::buttons__select.into()), diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs index 668e71038e..f71d30878e 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs @@ -273,7 +273,7 @@ pub struct PassphraseEntry { passphrase_dots: Child<ChangingTextLine>, show_plain_passphrase: bool, show_last_digit: bool, - textbox: TextBox<MAX_PASSPHRASE_LENGTH>, + textbox: TextBox, current_category: ChoiceCategory, } @@ -355,7 +355,7 @@ impl PassphraseEntry { } fn is_full(&self) -> bool { - self.textbox.is_full() + self.textbox.len() >= MAX_PASSPHRASE_LENGTH } /// Randomly choose an index in the current category diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs index 2044d9ab57..63d7ecce7e 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs @@ -140,7 +140,7 @@ pub struct PinEntry<'a> { showing_real_prompt: bool, show_real_pin: bool, show_last_digit: bool, - textbox: TextBox<MAX_PIN_LENGTH>, + textbox: TextBox, } impl<'a> PinEntry<'a> { @@ -236,7 +236,7 @@ impl<'a> PinEntry<'a> { } fn is_full(&self) -> bool { - self.textbox.is_full() + self.textbox.len() >= MAX_PIN_LENGTH } fn is_empty(&self) -> bool { diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs index 2253034404..50f13c325d 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs @@ -158,7 +158,7 @@ impl ChoiceFactory for ChoiceFactoryWordlist { pub struct WordlistEntry { choice_page: ChoicePage<ChoiceFactoryWordlist, WordlistAction>, chosen_letters: Child<ChangingTextLine>, - textbox: TextBox<MAX_WORD_LENGTH>, + textbox: TextBox, offer_words: bool, wordlist_type: WordlistType, /// Whether going back is allowed (is not on the very first word). @@ -196,7 +196,7 @@ impl WordlistEntry { .with_incomplete(true) .with_initial_page_counter(1), chosen_letters: Child::new(ChangingTextLine::center_mono(word, LINE_CAPACITY)), - textbox: TextBox::new(unwrap!(String::try_from(word))), + textbox: TextBox::new(word), offer_words: false, wordlist_type, can_go_back, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs index 2f29ae6525..f3efc15515 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs @@ -18,7 +18,6 @@ use crate::{ shape::Renderer, }, }; -use heapless::String; const MAX_LENGTH: usize = 8; @@ -26,7 +25,7 @@ pub struct Bip39Input { button: Button, // used only to keep track of suggestion text color button_suggestion: Button, - textbox: TextBox<MAX_LENGTH>, + textbox: TextBox, multi_tap: MultiTapKeyboard, options_num: Option<usize>, suggested_word: Option<&'static str>, @@ -228,7 +227,7 @@ impl Bip39Input { // Styling the input to reflect already filled word Self { button: Button::with_icon(theme::ICON_LIST_CHECK).styled(theme::button_pin_confirm()), - textbox: TextBox::new(unwrap!(String::try_from(word))), + textbox: TextBox::new(word), multi_tap: MultiTapKeyboard::new(), options_num: bip39::options_num(word), suggested_word: bip39::complete_word(word), diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs index 9b31d9fca8..9b652fe060 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs @@ -163,7 +163,7 @@ impl PassphraseKeyboard { /// We should disable the input when the passphrase has reached maximum /// length and we are not cycling through the characters. fn is_button_active(&self, key: usize) -> bool { - let textbox_not_full = !self.input.inner().textbox.is_full(); + let textbox_not_full = self.input.inner().textbox.len() < MAX_LENGTH; let key_is_pending = { if let Some(pending) = self.input.inner().multi_tap.pending_key() { pending == key @@ -329,7 +329,7 @@ impl Component for PassphraseKeyboard { struct Input { area: Rect, - textbox: TextBox<MAX_LENGTH>, + textbox: TextBox, multi_tap: MultiTapKeyboard, } diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index 930965bcbe..8d1f4f6aa3 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -1,8 +1,8 @@ -use core::mem; +use core::{char::MAX, mem}; use heapless::String; use crate::{ - strutil::TString, + strutil::{ShortString, TString}, time::Duration, trezorhal::random, ui::{ @@ -14,11 +14,10 @@ use crate::{ event::TouchEvent, geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, model_tt::component::{ - button::{Button, ButtonContent, ButtonMsg, ButtonMsg::Clicked}, + button::{Button, ButtonContent, ButtonMsg::{self, Clicked}}, theme, }, - shape, - shape::Renderer, + shape::{self, Renderer}, }, }; @@ -304,7 +303,7 @@ struct PinDots { area: Rect, pad: Pad, style: TextStyle, - digits: String<MAX_LENGTH>, + digits: ShortString, display_digits: bool, } @@ -335,7 +334,7 @@ impl PinDots { } fn is_full(&self) -> bool { - self.digits.len() == self.digits.capacity() + self.digits.len() >= MAX_LENGTH } fn clear(&mut self, ctx: &mut EventCtx) { @@ -552,7 +551,7 @@ impl crate::trace::Trace for PinKeyboard<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("PinKeyboard"); // So that debuglink knows the locations of the buttons - let mut digits_order: String<10> = String::new(); + let mut digits_order = ShortString::new(); for btn in self.digit_btns.iter() { let btn_content = btn.inner().content(); diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs index 0794d9c280..66f11e86cf 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs @@ -3,8 +3,7 @@ use core::iter; use heapless::String; use crate::{ - trezorhal::slip39, - ui::{ + strutil::ShortString, trezorhal::slip39, ui::{ component::{ text::common::{TextBox, TextEdit}, Component, Event, EventCtx, @@ -21,17 +20,16 @@ use crate::{ }, theme, }, - shape, - shape::Renderer, + shape::{self, Renderer}, util::ResultExt, - }, + } }; const MAX_LENGTH: usize = 8; pub struct Slip39Input { button: Button, - textbox: TextBox<MAX_LENGTH>, + textbox: TextBox, multi_tap: MultiTapKeyboard, final_word: Option<&'static str>, input_mask: Slip39Mask, @@ -136,7 +134,7 @@ impl Component for Slip39Input { // To simplify things, we always copy the printed string here, even if it // wouldn't be strictly necessary. - let mut text: String<MAX_LENGTH> = String::new(); + let mut text = ShortString::new(); if let Some(word) = self.final_word { // We're done with input, paint the full word. @@ -200,7 +198,7 @@ impl Component for Slip39Input { // To simplify things, we always copy the printed string here, even if it // wouldn't be strictly necessary. - let mut text: String<MAX_LENGTH> = String::new(); + let mut text = ShortString::new(); if let Some(word) = self.final_word { // We're done with input, paint the full word. @@ -281,7 +279,7 @@ impl Slip39Input { Self { // Button has the same style the whole time button: Button::empty().styled(theme::button_pin_confirm()), - textbox: TextBox::new(buff), + textbox: TextBox::new(&buff), multi_tap: MultiTapKeyboard::new(), final_word, input_mask, @@ -290,8 +288,8 @@ impl Slip39Input { fn setup_from_prefilled_word( word: &str, - ) -> (String<MAX_LENGTH>, Slip39Mask, Option<&'static str>) { - let mut buff: String<MAX_LENGTH> = String::new(); + ) -> (ShortString, Slip39Mask, Option<&'static str>) { + let mut buff = ShortString::new(); // Gradually appending encoded key digits to the buffer and checking if // have not already formed a final word. From 8cf039740f770b36e18c9a9e96b3f2b0ab66e77e Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 14 Jun 2024 13:56:08 +0200 Subject: [PATCH 304/626] style(core/rust): rustfmt --- .../src/ui/model_mercury/component/keyboard/pin.rs | 5 ++++- .../src/ui/model_mercury/component/keyboard/slip39.rs | 10 +++++----- .../rust/src/ui/model_mercury/theme/bootloader.rs | 3 ++- core/embed/rust/src/ui/model_mercury/theme/mod.rs | 3 ++- .../model_tr/component/input_methods/number_input.rs | 6 ++++-- .../rust/src/ui/model_tt/component/keyboard/pin.rs | 5 ++++- .../rust/src/ui/model_tt/component/keyboard/slip39.rs | 10 +++++----- core/embed/rust/src/ui/model_tt/theme/bootloader.rs | 3 ++- 8 files changed, 28 insertions(+), 17 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index 68c3574229..b82d56b0d3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -14,7 +14,10 @@ use crate::{ event::TouchEvent, geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, model_mercury::component::{ - button::{Button, ButtonContent, ButtonMsg::{self, Clicked}}, + button::{ + Button, ButtonContent, + ButtonMsg::{self, Clicked}, + }, theme, }, shape::{self, Renderer}, diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index 60cfe425d2..a854f336f1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -3,7 +3,9 @@ use core::iter; use heapless::String; use crate::{ - strutil::ShortString, trezorhal::slip39, ui::{ + strutil::ShortString, + trezorhal::slip39, + ui::{ component::{ text::common::{TextBox, TextEdit}, Component, Event, EventCtx, @@ -22,7 +24,7 @@ use crate::{ }, shape::{self, Renderer}, util::ResultExt, - } + }, }; const MAX_LENGTH: usize = 8; @@ -227,9 +229,7 @@ impl Slip39Input { } } - fn setup_from_prefilled_word( - word: &str, - ) -> (ShortString, Slip39Mask, Option<&'static str>) { + fn setup_from_prefilled_word(word: &str) -> (ShortString, Slip39Mask, Option<&'static str>) { let mut buff = ShortString::new(); // Gradually appending encoded key digits to the buffer and checking if diff --git a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs b/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs index e97c985a8d..fd8c226b5d 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/bootloader.rs @@ -2,7 +2,8 @@ use crate::ui::{ component::{text::TextStyle, LineBreaking::BreakWordsNoHyphen}, constant::{HEIGHT, WIDTH}, display::{Color, Font}, - geometry::{Offset, Point, Rect}, util::include_res, + geometry::{Offset, Point, Rect}, + util::include_res, }; use super::super::{ diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 95fa66ec5c..79ca45ec3f 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -10,7 +10,8 @@ use crate::{ FixedHeightBar, }, display::{Color, Font}, - geometry::Insets, util::include_icon, + geometry::Insets, + util::include_icon, }, }; diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs index b033007fbc..83f944bbe0 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/number_input.rs @@ -1,9 +1,11 @@ use crate::{ - strutil::ShortString, translations::TR, ui::{ + strutil::ShortString, + translations::TR, + ui::{ component::{Component, Event, EventCtx}, geometry::Rect, shape::Renderer, - } + }, }; use super::super::{ButtonLayout, ChoiceFactory, ChoiceItem, ChoicePage}; diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index 8d1f4f6aa3..582a6c70cc 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -14,7 +14,10 @@ use crate::{ event::TouchEvent, geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, model_tt::component::{ - button::{Button, ButtonContent, ButtonMsg::{self, Clicked}}, + button::{ + Button, ButtonContent, + ButtonMsg::{self, Clicked}, + }, theme, }, shape::{self, Renderer}, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs index 66f11e86cf..1b7d909b3e 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs @@ -3,7 +3,9 @@ use core::iter; use heapless::String; use crate::{ - strutil::ShortString, trezorhal::slip39, ui::{ + strutil::ShortString, + trezorhal::slip39, + ui::{ component::{ text::common::{TextBox, TextEdit}, Component, Event, EventCtx, @@ -22,7 +24,7 @@ use crate::{ }, shape::{self, Renderer}, util::ResultExt, - } + }, }; const MAX_LENGTH: usize = 8; @@ -286,9 +288,7 @@ impl Slip39Input { } } - fn setup_from_prefilled_word( - word: &str, - ) -> (ShortString, Slip39Mask, Option<&'static str>) { + fn setup_from_prefilled_word(word: &str) -> (ShortString, Slip39Mask, Option<&'static str>) { let mut buff = ShortString::new(); // Gradually appending encoded key digits to the buffer and checking if diff --git a/core/embed/rust/src/ui/model_tt/theme/bootloader.rs b/core/embed/rust/src/ui/model_tt/theme/bootloader.rs index 600b2b1b5d..c132c54f32 100644 --- a/core/embed/rust/src/ui/model_tt/theme/bootloader.rs +++ b/core/embed/rust/src/ui/model_tt/theme/bootloader.rs @@ -6,7 +6,8 @@ use crate::ui::{ model_tt::{ component::{ButtonStyle, ButtonStyleSheet, ResultStyle}, theme::{BLACK, FG, GREY_DARK, GREY_LIGHT, WHITE}, - }, util::include_res, + }, + util::include_res, }; pub const BLD_BG: Color = Color::rgb(0x00, 0x1E, 0xAD); From 4e788aa2f5e8768eddad109d9cdc838c4c3dde11 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 17 Jun 2024 10:44:54 +0200 Subject: [PATCH 305/626] fix(core/rust): more careful management of ShortString capacity --- core/embed/rust/src/ui/component/text/common.rs | 10 +++++----- .../ui/model_mercury/component/keyboard/bip39.rs | 4 ++-- .../component/keyboard/passphrase.rs | 2 +- .../ui/model_mercury/component/keyboard/pin.rs | 3 +-- .../ui/model_mercury/component/keyboard/slip39.rs | 6 ++---- .../component/input_methods/passphrase.rs | 15 +++++++++------ .../ui/model_tr/component/input_methods/pin.rs | 13 ++++++++----- .../model_tr/component/input_methods/wordlist.rs | 6 +++--- .../src/ui/model_tt/component/keyboard/bip39.rs | 4 ++-- .../ui/model_tt/component/keyboard/passphrase.rs | 2 +- .../src/ui/model_tt/component/keyboard/pin.rs | 7 ++++--- .../src/ui/model_tt/component/keyboard/slip39.rs | 7 +++---- core/embed/rust/src/ui/util.rs | 9 +++------ 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/core/embed/rust/src/ui/component/text/common.rs b/core/embed/rust/src/ui/component/text/common.rs index 19ea2a54d8..34d5015cd5 100644 --- a/core/embed/rust/src/ui/component/text/common.rs +++ b/core/embed/rust/src/ui/component/text/common.rs @@ -2,7 +2,6 @@ use crate::{ strutil::ShortString, ui::{component::EventCtx, util::ResultExt}, }; -use heapless::String; /// Reified editing operations of `TextBox`. /// @@ -22,14 +21,15 @@ pub struct TextBox { impl TextBox { /// Create a new `TextBox` with content `text`. - pub fn new(text: &str) -> Self { - let text = unwrap!(String::try_from(text)); + pub fn new(text: &str, max_len: usize) -> Self { + let text = unwrap!(ShortString::try_from(text)); + debug_assert!(text.capacity() >= max_len); Self { text } } /// Create an empty `TextBox`. - pub fn empty() -> Self { - Self::new("") + pub fn empty(max_len: usize) -> Self { + Self::new("", max_len) } pub fn content(&self) -> &str { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index a26604f177..f7519a52ce 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -176,7 +176,7 @@ impl Bip39Input { pub fn new() -> Self { Self { button: Button::empty(), - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), options_num: None, suggested_word: None, @@ -193,7 +193,7 @@ impl Bip39Input { // Styling the input to reflect already filled word Self { button: Button::empty().styled(theme::button_recovery_confirm()), - textbox: TextBox::new(word), + textbox: TextBox::new(word, MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), options_num: bip39::options_num(word), suggested_word: bip39::complete_word(word), diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index abe8454bbc..1fc88cb8a9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -414,7 +414,7 @@ impl Input { fn new() -> Self { Self { area: Rect::zero(), - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index b82d56b0d3..da99c7c3c9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -1,5 +1,4 @@ use core::mem; -use heapless::String; use crate::{ strutil::{ShortString, TString}, @@ -294,7 +293,7 @@ impl PinDots { area: Rect::zero(), pad: Pad::with_background(style.background_color), style, - digits: String::new(), + digits: ShortString::new(), display_digits: false, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index a854f336f1..614470444b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -1,7 +1,5 @@ use core::iter; -use heapless::String; - use crate::{ strutil::ShortString, trezorhal::slip39, @@ -204,7 +202,7 @@ impl Slip39Input { Self { // Button has the same style the whole time button: Button::empty().styled(theme::button_recovery_confirm()), - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), final_word: None, input_mask: Slip39Mask::full(), @@ -222,7 +220,7 @@ impl Slip39Input { Self { // Button has the same style the whole time button: Button::empty().styled(theme::button_recovery_confirm()), - textbox: TextBox::new(&buff), + textbox: TextBox::new(&buff, MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), final_word, input_mask, diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs index f71d30878e..9fb05a2b5a 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/passphrase.rs @@ -11,8 +11,6 @@ use crate::{ }, }; -use heapless::String; - use super::super::{ theme, ButtonDetails, ButtonLayout, CancelConfirmMsg, ChangingTextLine, ChoiceFactory, ChoiceItem, ChoicePage, @@ -286,19 +284,24 @@ impl PassphraseEntry { passphrase_dots: Child::new(ChangingTextLine::center_mono("", MAX_PASSPHRASE_LENGTH)), show_plain_passphrase: false, show_last_digit: false, - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_PASSPHRASE_LENGTH), current_category: ChoiceCategory::Menu, } } fn update_passphrase_dots(&mut self, ctx: &mut EventCtx) { + debug_assert!({ + let s = ShortString::new(); + s.capacity() >= MAX_PASSPHRASE_LENGTH + }); + let text_to_show = if self.show_plain_passphrase { - unwrap!(String::try_from(self.passphrase())) + unwrap!(ShortString::try_from(self.passphrase())) } else if self.is_empty() { - unwrap!(String::try_from("")) + unwrap!(ShortString::try_from("")) } else { // Showing asterisks and possibly the last digit. - let mut dots: ShortString = String::new(); + let mut dots = ShortString::new(); for _ in 0..self.textbox.len() - 1 { unwrap!(dots.push('*')); } diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs index 63d7ecce7e..ab2de7be0e 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/pin.rs @@ -14,7 +14,6 @@ use super::super::{ theme, ButtonDetails, ButtonLayout, CancelConfirmMsg, ChangingTextLine, ChoiceFactory, ChoiceItem, ChoicePage, }; -use heapless::String; #[derive(Clone, Copy)] enum PinAction { @@ -179,7 +178,7 @@ impl<'a> PinEntry<'a> { showing_real_prompt, show_real_pin: false, show_last_digit: false, - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_PIN_LENGTH), } } @@ -192,15 +191,19 @@ impl<'a> PinEntry<'a> { /// Show updated content in the changing line. /// Many possibilities, according to the PIN state. fn update_pin_line(&mut self, ctx: &mut EventCtx) { + debug_assert!({ + let s = ShortString::new(); + s.capacity() >= MAX_PIN_LENGTH + }); let mut used_font = Font::BOLD; let pin_line_text = if self.is_empty() && !self.subprompt.is_empty() { // Showing the subprompt in NORMAL font used_font = Font::NORMAL; - self.subprompt.map(|s| unwrap!(String::try_from(s))) + self.subprompt.map(|s| unwrap!(ShortString::try_from(s))) } else if self.is_empty() { - unwrap!(String::try_from(EMPTY_PIN_STR)) + unwrap!(ShortString::try_from(EMPTY_PIN_STR)) } else if self.show_real_pin { - unwrap!(String::try_from(self.pin())) + unwrap!(ShortString::try_from(self.pin())) } else { // Showing asterisks and possibly the last digit. let mut dots = ShortString::new(); diff --git a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs index 50f13c325d..df622a01d5 100644 --- a/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs +++ b/core/embed/rust/src/ui/model_tr/component/input_methods/wordlist.rs @@ -10,7 +10,7 @@ use crate::{ }; use super::super::{theme, ButtonLayout, ChangingTextLine, ChoiceFactory, ChoiceItem, ChoicePage}; -use heapless::{String, Vec}; +use heapless::Vec; enum WordlistAction { Letter(char), @@ -176,7 +176,7 @@ impl WordlistEntry { .with_carousel(true) .with_initial_page_counter(get_random_position(choices_count)), chosen_letters: Child::new(ChangingTextLine::center_mono(PROMPT, LINE_CAPACITY)), - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_WORD_LENGTH), offer_words: false, wordlist_type, can_go_back, @@ -196,7 +196,7 @@ impl WordlistEntry { .with_incomplete(true) .with_initial_page_counter(1), chosen_letters: Child::new(ChangingTextLine::center_mono(word, LINE_CAPACITY)), - textbox: TextBox::new(word), + textbox: TextBox::new(word, MAX_WORD_LENGTH), offer_words: false, wordlist_type, can_go_back, diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs index f3efc15515..850fb01948 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs @@ -210,7 +210,7 @@ impl Bip39Input { pub fn new() -> Self { Self { button: Button::empty(), - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), options_num: None, suggested_word: None, @@ -227,7 +227,7 @@ impl Bip39Input { // Styling the input to reflect already filled word Self { button: Button::with_icon(theme::ICON_LIST_CHECK).styled(theme::button_pin_confirm()), - textbox: TextBox::new(word), + textbox: TextBox::new(word, MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), options_num: bip39::options_num(word), suggested_word: bip39::complete_word(word), diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs index 9b652fe060..6482cc6aa7 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs @@ -337,7 +337,7 @@ impl Input { fn new() -> Self { Self { area: Rect::zero(), - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), } } diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index 582a6c70cc..819d51f968 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -1,5 +1,4 @@ -use core::{char::MAX, mem}; -use heapless::String; +use core::mem; use crate::{ strutil::{ShortString, TString}, @@ -316,11 +315,13 @@ impl PinDots { const TWITCH: i16 = 4; fn new(style: TextStyle) -> Self { + let digits = ShortString::new(); + debug_assert!(digits.capacity() >= MAX_LENGTH); Self { area: Rect::zero(), pad: Pad::with_background(style.background_color), style, - digits: String::new(), + digits, display_digits: false, } } diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs index 1b7d909b3e..866f481d45 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs @@ -1,7 +1,5 @@ use core::iter; -use heapless::String; - use crate::{ strutil::ShortString, trezorhal::slip39, @@ -263,7 +261,7 @@ impl Slip39Input { Self { // Button has the same style the whole time button: Button::empty().styled(theme::button_pin_confirm()), - textbox: TextBox::empty(), + textbox: TextBox::empty(MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), final_word: None, input_mask: Slip39Mask::full(), @@ -281,7 +279,7 @@ impl Slip39Input { Self { // Button has the same style the whole time button: Button::empty().styled(theme::button_pin_confirm()), - textbox: TextBox::new(&buff), + textbox: TextBox::new(&buff, MAX_LENGTH), multi_tap: MultiTapKeyboard::new(), final_word, input_mask, @@ -290,6 +288,7 @@ impl Slip39Input { fn setup_from_prefilled_word(word: &str) -> (ShortString, Slip39Mask, Option<&'static str>) { let mut buff = ShortString::new(); + debug_assert!(buff.capacity() >= MAX_LENGTH); // Gradually appending encoded key digits to the buffer and checking if // have not already formed a final word. diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index dddf059dc7..c330eee000 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -9,8 +9,6 @@ use crate::{ }, }; -use heapless::String; - use super::display::Font; pub trait ResultExt { @@ -129,7 +127,7 @@ pub fn icon_text_center( /// Convert char to a ShortString. pub fn char_to_string(ch: char) -> ShortString { - let mut s = String::new(); + let mut s = ShortString::new(); unwrap!(s.push(ch)); s } @@ -137,8 +135,7 @@ pub fn char_to_string(ch: char) -> ShortString { /// Returns text to be fit on one line of a given length. /// When the text is too long to fit, it is truncated with ellipsis /// on the left side. -/// Hardcoding 50 (via ShortString) as the length of the returned String - -/// there should not be any lines as long as this. +/// This assumes no lines are longer than 50 chars (ShortString limit) pub fn long_line_content_with_ellipsis( text: &str, ellipsis: &str, @@ -146,7 +143,7 @@ pub fn long_line_content_with_ellipsis( available_width: i16, ) -> ShortString { if text_font.text_width(text) <= available_width { - unwrap!(String::try_from(text)) // whole text can fit + unwrap!(ShortString::try_from(text)) // whole text can fit } else { // Text is longer, showing its right end with ellipsis at the beginning. // Finding out how many additional text characters will fit in, From a01a787113b16257d837f6d42e60095f8e7964fb Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 14 Jun 2024 22:50:34 +0200 Subject: [PATCH 306/626] refactor(core): remove StringType This commit removes the last usage of StringType. In the future, we use TString. [no changelog] --- core/embed/rust/src/strutil.rs | 13 ----- .../src/ui/model_tr/component/share_words.rs | 51 ++++++++----------- core/embed/rust/src/ui/model_tr/layout.rs | 3 +- 3 files changed, 21 insertions(+), 46 deletions(-) diff --git a/core/embed/rust/src/strutil.rs b/core/embed/rust/src/strutil.rs index 6ebf938540..49e3e2cd1e 100644 --- a/core/embed/rust/src/strutil.rs +++ b/core/embed/rust/src/strutil.rs @@ -9,19 +9,6 @@ use crate::micropython::{buffer::StrBuffer, obj::Obj}; #[cfg(feature = "translations")] use crate::translations::TR; -/// Trait for internal representation of strings. This is a legacy crutch before -/// we fully transition to `TString`. For now, it allows some manner of -/// compatibility between `&str` and `StrBuffer`. Implies the following -/// operations: -/// - dereference into a short-lived `&str` reference (AsRef<str>) (probably not -/// strictly necessary anymore) -/// - create a new string from a string literal (From<&'static str>) -/// - infallibly convert into a `TString` (Into<TString<'static>>), which is -/// then used for other operations. -pub trait StringType: AsRef<str> + From<&'static str> + Into<TString<'static>> {} - -impl<T> StringType for T where T: AsRef<str> + From<&'static str> + Into<TString<'static>> {} - /// Unified-length String type, long enough for most simple use-cases. pub type ShortString = String<50>; diff --git a/core/embed/rust/src/ui/model_tr/component/share_words.rs b/core/embed/rust/src/ui/model_tr/component/share_words.rs index f1c98bf1a5..f1e920f281 100644 --- a/core/embed/rust/src/ui/model_tr/component/share_words.rs +++ b/core/embed/rust/src/ui/model_tr/component/share_words.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::{ShortString, StringType, TString}, + strutil::{ShortString, TString}, translations::TR, ui::{ component::{ @@ -27,21 +27,15 @@ const INFO_TOP_OFFSET: i16 = 20; const MAX_WORDS: usize = 33; // super-shamir has 33 words, all other have less /// Showing the given share words. -pub struct ShareWords<T> -where - T: StringType, -{ +pub struct ShareWords<'a> { area: Rect, scrollbar: Child<ScrollBar>, - share_words: Vec<T, MAX_WORDS>, + share_words: Vec<TString<'a>, MAX_WORDS>, page_index: usize, } -impl<T> ShareWords<T> -where - T: StringType + Clone, -{ - pub fn new(share_words: Vec<T, MAX_WORDS>) -> Self { +impl<'a> ShareWords<'a> { + pub fn new(share_words: Vec<TString<'a>, MAX_WORDS>) -> Self { let mut instance = Self { area: Rect::zero(), scrollbar: Child::new(ScrollBar::to_be_filled_later()), @@ -117,11 +111,13 @@ where if index >= self.share_words.len() { break; } - let word = &self.share_words[index]; let baseline = self.area.top_left() + Offset::y(y_offset); let ordinal = uformat!("{}.", index + 1); display_left(baseline + Offset::x(NUMBER_X_OFFSET), &ordinal, NUMBER_FONT); - display_left(baseline + Offset::x(WORD_X_OFFSET), word, WORD_FONT); + let word = &self.share_words[index]; + word.map(|w| { + display_left(baseline + Offset::x(WORD_X_OFFSET), w, WORD_FONT); + }); } } @@ -144,18 +140,17 @@ where .with_fg(theme::FG) .render(target); - shape::Text::new(baseline + Offset::x(WORD_X_OFFSET), word.as_ref()) - .with_font(WORD_FONT) - .with_fg(theme::FG) - .render(target); + word.map(|w| { + shape::Text::new(baseline + Offset::x(WORD_X_OFFSET), w) + .with_font(WORD_FONT) + .with_fg(theme::FG) + .render(target); + }); } } } -impl<T> Component for ShareWords<T> -where - T: StringType + Clone, -{ +impl<'a> Component for ShareWords<'a> { type Msg = Never; fn place(&mut self, bounds: Rect) -> Rect { @@ -198,10 +193,7 @@ where } } -impl<T> Paginate for ShareWords<T> -where - T: StringType + Clone, -{ +impl<'a> Paginate for ShareWords<'a> { fn page_count(&mut self) -> usize { // Not defining the logic here, as we do not want it to be `&mut`. self.total_page_count() @@ -216,10 +208,7 @@ where // DEBUG-ONLY SECTION BELOW #[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for ShareWords<T> -where - T: StringType + Clone, -{ +impl<'a> crate::trace::Trace for ShareWords<'a> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("ShareWords"); let content = if self.is_final_page() { @@ -231,8 +220,8 @@ where if index >= self.share_words.len() { break; } - let word: TString = self.share_words[index].clone().into(); - unwrap!(uwrite!(content, "{}. {}\n", index + 1, word)); + self.share_words[index] + .map(|word| unwrap!(uwrite!(content, "{}. {}\n", index + 1, word))); } content }; diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 9318ba1525..da4883d709 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -6,7 +6,6 @@ use crate::{ error::Error, maybe_trace::MaybeTrace, micropython::{ - buffer::StrBuffer, gc::Gc, iter::IterBuf, list::List, @@ -1331,7 +1330,7 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) extern "C" fn new_show_share_words(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = |_args: &[Obj], kwargs: &Map| { let share_words_obj: Obj = kwargs.get(Qstr::MP_QSTR_share_words)?; - let share_words: Vec<StrBuffer, 33> = util::iter_into_vec(share_words_obj)?; + let share_words: Vec<TString, 33> = util::iter_into_vec(share_words_obj)?; let cancel_btn = Some(ButtonDetails::up_arrow_icon()); let confirm_btn = From 799a78525fc9658fb2be855edca08e25e03fed51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jun 2024 01:29:30 +0000 Subject: [PATCH 307/626] build(deps): bump urllib3 from 1.26.18 to 1.26.19 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.18 to 1.26.19. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/1.26.19/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.18...1.26.19) --- updated-dependencies: - dependency-name: urllib3 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 60c805073d..5c700cc626 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1637,13 +1637,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.18" +version = "1.26.19" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, + {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, + {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, ] [package.extras] From f5d35da635abd64dc8ed727013acae7be89af815 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Tue, 28 May 2024 13:21:23 +0200 Subject: [PATCH 308/626] fix(core/embed): fix random delays in usb driver [no changelog] --- core/embed/trezorhal/stm32f4/usb.c | 6 ------ core/embed/trezorhal/stm32f4/usb_hid-impl.h | 4 ++++ core/embed/trezorhal/stm32f4/usb_webusb-impl.h | 4 ++++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/usb.c b/core/embed/trezorhal/stm32f4/usb.c index 8efc0f5fef..9249c4b9e8 100644 --- a/core/embed/trezorhal/stm32f4/usb.c +++ b/core/embed/trezorhal/stm32f4/usb.c @@ -487,12 +487,10 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, } switch (usb_ifaces[req->wIndex].type) { case USB_IFACE_TYPE_HID: - wait_random(); return usb_hid_class_setup(dev, &usb_ifaces[req->wIndex].hid, req); case USB_IFACE_TYPE_VCP: return usb_vcp_class_setup(dev, &usb_ifaces[req->wIndex].vcp, req); case USB_IFACE_TYPE_WEBUSB: - wait_random(); return usb_webusb_class_setup(dev, &usb_ifaces[req->wIndex].webusb, req); default: @@ -511,14 +509,12 @@ static uint8_t usb_class_data_in(USBD_HandleTypeDef *dev, uint8_t ep_num) { for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { switch (usb_ifaces[i].type) { case USB_IFACE_TYPE_HID: - wait_random(); usb_hid_class_data_in(dev, &usb_ifaces[i].hid, ep_num); break; case USB_IFACE_TYPE_VCP: usb_vcp_class_data_in(dev, &usb_ifaces[i].vcp, ep_num); break; case USB_IFACE_TYPE_WEBUSB: - wait_random(); usb_webusb_class_data_in(dev, &usb_ifaces[i].webusb, ep_num); break; default: @@ -535,14 +531,12 @@ static uint8_t usb_class_data_out(USBD_HandleTypeDef *dev, uint8_t ep_num) { for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { switch (usb_ifaces[i].type) { case USB_IFACE_TYPE_HID: - wait_random(); usb_hid_class_data_out(dev, &usb_ifaces[i].hid, ep_num); break; case USB_IFACE_TYPE_VCP: usb_vcp_class_data_out(dev, &usb_ifaces[i].vcp, ep_num); break; case USB_IFACE_TYPE_WEBUSB: - wait_random(); usb_webusb_class_data_out(dev, &usb_ifaces[i].webusb, ep_num); break; default: diff --git a/core/embed/trezorhal/stm32f4/usb_hid-impl.h b/core/embed/trezorhal/stm32f4/usb_hid-impl.h index d08be2a78d..349822287f 100644 --- a/core/embed/trezorhal/stm32f4/usb_hid-impl.h +++ b/core/embed/trezorhal/stm32f4/usb_hid-impl.h @@ -267,6 +267,8 @@ static void usb_hid_class_deinit(USBD_HandleTypeDef *dev, static int usb_hid_class_setup(USBD_HandleTypeDef *dev, usb_hid_state_t *state, USBD_SetupReqTypedef *req) { + wait_random(); + switch (req->bmRequest & USB_REQ_TYPE_MASK) { // Class request case USB_REQ_TYPE_CLASS: @@ -340,6 +342,7 @@ static int usb_hid_class_setup(USBD_HandleTypeDef *dev, usb_hid_state_t *state, static void usb_hid_class_data_in(USBD_HandleTypeDef *dev, usb_hid_state_t *state, uint8_t ep_num) { if ((ep_num | USB_EP_DIR_IN) == state->ep_in) { + wait_random(); state->ep_in_is_idle = 1; } } @@ -347,6 +350,7 @@ static void usb_hid_class_data_in(USBD_HandleTypeDef *dev, static void usb_hid_class_data_out(USBD_HandleTypeDef *dev, usb_hid_state_t *state, uint8_t ep_num) { if (ep_num == state->ep_out) { + wait_random(); // Save the report length to indicate we have read something, but don't // schedule next reading until user reads this one state->last_read_len = USBD_LL_GetRxDataSize(dev, ep_num); diff --git a/core/embed/trezorhal/stm32f4/usb_webusb-impl.h b/core/embed/trezorhal/stm32f4/usb_webusb-impl.h index cfc08d4fa2..3ffe4589e8 100644 --- a/core/embed/trezorhal/stm32f4/usb_webusb-impl.h +++ b/core/embed/trezorhal/stm32f4/usb_webusb-impl.h @@ -243,6 +243,8 @@ static int usb_webusb_class_setup(USBD_HandleTypeDef *dev, return USBD_OK; } + wait_random(); + switch (req->bRequest) { case USB_REQ_SET_INTERFACE: state->alt_setting = req->wValue; @@ -263,6 +265,7 @@ static void usb_webusb_class_data_in(USBD_HandleTypeDef *dev, usb_webusb_state_t *state, uint8_t ep_num) { if ((ep_num | USB_EP_DIR_IN) == state->ep_in) { + wait_random(); state->ep_in_is_idle = 1; } } @@ -271,6 +274,7 @@ static void usb_webusb_class_data_out(USBD_HandleTypeDef *dev, usb_webusb_state_t *state, uint8_t ep_num) { if (ep_num == state->ep_out) { + wait_random(); // Save the report length to indicate we have read something, but don't // schedule next reading until user reads this one state->last_read_len = USBD_LL_GetRxDataSize(dev, ep_num); From 8e429b0352babcb6f883d128cbaed1c63da95ca3 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Tue, 28 May 2024 10:00:41 +0200 Subject: [PATCH 309/626] refactor(core/embed): move usb driver to its own folder [no changelog] --- core/embed/trezorhal/stm32f4/{ => usb}/usb.c | 0 core/embed/trezorhal/stm32f4/{ => usb}/usb_hid-impl.h | 0 core/embed/trezorhal/stm32f4/{ => usb}/usb_vcp-impl.h | 0 .../trezorhal/stm32f4/{ => usb}/usb_webusb-impl.h | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_conf.c | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_conf.h | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_core.c | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_core.h | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_ctlreq.c | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_ctlreq.h | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_def.h | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_ioreq.c | 0 core/embed/trezorhal/stm32f4/{ => usb}/usbd_ioreq.h | 0 core/embed/trezorhal/stm32u5/usb | 1 + core/embed/trezorhal/stm32u5/usb.c | 1 - core/embed/trezorhal/stm32u5/usb_hid-impl.h | 1 - core/embed/trezorhal/stm32u5/usb_vcp-impl.h | 1 - core/embed/trezorhal/stm32u5/usb_webusb-impl.h | 1 - core/embed/trezorhal/stm32u5/usbd_conf.c | 1 - core/embed/trezorhal/stm32u5/usbd_conf.h | 1 - core/embed/trezorhal/stm32u5/usbd_core.c | 1 - core/embed/trezorhal/stm32u5/usbd_core.h | 1 - core/embed/trezorhal/stm32u5/usbd_ctlreq.c | 1 - core/embed/trezorhal/stm32u5/usbd_ctlreq.h | 1 - core/embed/trezorhal/stm32u5/usbd_def.h | 1 - core/embed/trezorhal/stm32u5/usbd_ioreq.c | 1 - core/embed/trezorhal/stm32u5/usbd_ioreq.h | 1 - core/site_scons/models/D001/discovery.py | 10 +++++----- core/site_scons/models/D002/discovery2.py | 10 +++++----- core/site_scons/models/T1B1/trezor_1.py | 10 +++++----- core/site_scons/models/T2B1/trezor_r_v10.py | 10 +++++----- core/site_scons/models/T2B1/trezor_r_v3.py | 10 +++++----- core/site_scons/models/T2B1/trezor_r_v4.py | 10 +++++----- core/site_scons/models/T2B1/trezor_r_v6.py | 10 +++++----- core/site_scons/models/T2T1/trezor_t.py | 10 +++++----- core/site_scons/models/T3T1/trezor_t3t1_revE.py | 10 +++++----- core/site_scons/models/T3T1/trezor_t3t1_v4.py | 10 +++++----- 37 files changed, 51 insertions(+), 63 deletions(-) rename core/embed/trezorhal/stm32f4/{ => usb}/usb.c (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usb_hid-impl.h (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usb_vcp-impl.h (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usb_webusb-impl.h (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_conf.c (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_conf.h (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_core.c (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_core.h (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_ctlreq.c (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_ctlreq.h (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_def.h (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_ioreq.c (100%) rename core/embed/trezorhal/stm32f4/{ => usb}/usbd_ioreq.h (100%) create mode 120000 core/embed/trezorhal/stm32u5/usb delete mode 120000 core/embed/trezorhal/stm32u5/usb.c delete mode 120000 core/embed/trezorhal/stm32u5/usb_hid-impl.h delete mode 120000 core/embed/trezorhal/stm32u5/usb_vcp-impl.h delete mode 120000 core/embed/trezorhal/stm32u5/usb_webusb-impl.h delete mode 120000 core/embed/trezorhal/stm32u5/usbd_conf.c delete mode 120000 core/embed/trezorhal/stm32u5/usbd_conf.h delete mode 120000 core/embed/trezorhal/stm32u5/usbd_core.c delete mode 120000 core/embed/trezorhal/stm32u5/usbd_core.h delete mode 120000 core/embed/trezorhal/stm32u5/usbd_ctlreq.c delete mode 120000 core/embed/trezorhal/stm32u5/usbd_ctlreq.h delete mode 120000 core/embed/trezorhal/stm32u5/usbd_def.h delete mode 120000 core/embed/trezorhal/stm32u5/usbd_ioreq.c delete mode 120000 core/embed/trezorhal/stm32u5/usbd_ioreq.h diff --git a/core/embed/trezorhal/stm32f4/usb.c b/core/embed/trezorhal/stm32f4/usb/usb.c similarity index 100% rename from core/embed/trezorhal/stm32f4/usb.c rename to core/embed/trezorhal/stm32f4/usb/usb.c diff --git a/core/embed/trezorhal/stm32f4/usb_hid-impl.h b/core/embed/trezorhal/stm32f4/usb/usb_hid-impl.h similarity index 100% rename from core/embed/trezorhal/stm32f4/usb_hid-impl.h rename to core/embed/trezorhal/stm32f4/usb/usb_hid-impl.h diff --git a/core/embed/trezorhal/stm32f4/usb_vcp-impl.h b/core/embed/trezorhal/stm32f4/usb/usb_vcp-impl.h similarity index 100% rename from core/embed/trezorhal/stm32f4/usb_vcp-impl.h rename to core/embed/trezorhal/stm32f4/usb/usb_vcp-impl.h diff --git a/core/embed/trezorhal/stm32f4/usb_webusb-impl.h b/core/embed/trezorhal/stm32f4/usb/usb_webusb-impl.h similarity index 100% rename from core/embed/trezorhal/stm32f4/usb_webusb-impl.h rename to core/embed/trezorhal/stm32f4/usb/usb_webusb-impl.h diff --git a/core/embed/trezorhal/stm32f4/usbd_conf.c b/core/embed/trezorhal/stm32f4/usb/usbd_conf.c similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_conf.c rename to core/embed/trezorhal/stm32f4/usb/usbd_conf.c diff --git a/core/embed/trezorhal/stm32f4/usbd_conf.h b/core/embed/trezorhal/stm32f4/usb/usbd_conf.h similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_conf.h rename to core/embed/trezorhal/stm32f4/usb/usbd_conf.h diff --git a/core/embed/trezorhal/stm32f4/usbd_core.c b/core/embed/trezorhal/stm32f4/usb/usbd_core.c similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_core.c rename to core/embed/trezorhal/stm32f4/usb/usbd_core.c diff --git a/core/embed/trezorhal/stm32f4/usbd_core.h b/core/embed/trezorhal/stm32f4/usb/usbd_core.h similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_core.h rename to core/embed/trezorhal/stm32f4/usb/usbd_core.h diff --git a/core/embed/trezorhal/stm32f4/usbd_ctlreq.c b/core/embed/trezorhal/stm32f4/usb/usbd_ctlreq.c similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_ctlreq.c rename to core/embed/trezorhal/stm32f4/usb/usbd_ctlreq.c diff --git a/core/embed/trezorhal/stm32f4/usbd_ctlreq.h b/core/embed/trezorhal/stm32f4/usb/usbd_ctlreq.h similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_ctlreq.h rename to core/embed/trezorhal/stm32f4/usb/usbd_ctlreq.h diff --git a/core/embed/trezorhal/stm32f4/usbd_def.h b/core/embed/trezorhal/stm32f4/usb/usbd_def.h similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_def.h rename to core/embed/trezorhal/stm32f4/usb/usbd_def.h diff --git a/core/embed/trezorhal/stm32f4/usbd_ioreq.c b/core/embed/trezorhal/stm32f4/usb/usbd_ioreq.c similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_ioreq.c rename to core/embed/trezorhal/stm32f4/usb/usbd_ioreq.c diff --git a/core/embed/trezorhal/stm32f4/usbd_ioreq.h b/core/embed/trezorhal/stm32f4/usb/usbd_ioreq.h similarity index 100% rename from core/embed/trezorhal/stm32f4/usbd_ioreq.h rename to core/embed/trezorhal/stm32f4/usb/usbd_ioreq.h diff --git a/core/embed/trezorhal/stm32u5/usb b/core/embed/trezorhal/stm32u5/usb new file mode 120000 index 0000000000..cbd91c097f --- /dev/null +++ b/core/embed/trezorhal/stm32u5/usb @@ -0,0 +1 @@ +../stm32f4/usb \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usb.c b/core/embed/trezorhal/stm32u5/usb.c deleted file mode 120000 index e05e3c0912..0000000000 --- a/core/embed/trezorhal/stm32u5/usb.c +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usb.c \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usb_hid-impl.h b/core/embed/trezorhal/stm32u5/usb_hid-impl.h deleted file mode 120000 index 89e47b5ef0..0000000000 --- a/core/embed/trezorhal/stm32u5/usb_hid-impl.h +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usb_hid-impl.h \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usb_vcp-impl.h b/core/embed/trezorhal/stm32u5/usb_vcp-impl.h deleted file mode 120000 index be4e3b8e74..0000000000 --- a/core/embed/trezorhal/stm32u5/usb_vcp-impl.h +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usb_vcp-impl.h \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usb_webusb-impl.h b/core/embed/trezorhal/stm32u5/usb_webusb-impl.h deleted file mode 120000 index 749c2f52f9..0000000000 --- a/core/embed/trezorhal/stm32u5/usb_webusb-impl.h +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usb_webusb-impl.h \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_conf.c b/core/embed/trezorhal/stm32u5/usbd_conf.c deleted file mode 120000 index 96c576f982..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_conf.c +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_conf.c \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_conf.h b/core/embed/trezorhal/stm32u5/usbd_conf.h deleted file mode 120000 index 21f3e5266e..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_conf.h +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_conf.h \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_core.c b/core/embed/trezorhal/stm32u5/usbd_core.c deleted file mode 120000 index 554c29cbfa..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_core.c +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_core.c \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_core.h b/core/embed/trezorhal/stm32u5/usbd_core.h deleted file mode 120000 index ee7585f5a3..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_core.h +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_core.h \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_ctlreq.c b/core/embed/trezorhal/stm32u5/usbd_ctlreq.c deleted file mode 120000 index a9065b0abe..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_ctlreq.c +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_ctlreq.c \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_ctlreq.h b/core/embed/trezorhal/stm32u5/usbd_ctlreq.h deleted file mode 120000 index 8f764f56a9..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_ctlreq.h +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_ctlreq.h \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_def.h b/core/embed/trezorhal/stm32u5/usbd_def.h deleted file mode 120000 index 72e5b4b70f..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_def.h +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_def.h \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_ioreq.c b/core/embed/trezorhal/stm32u5/usbd_ioreq.c deleted file mode 120000 index cf5c0a30e2..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_ioreq.c +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_ioreq.c \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/usbd_ioreq.h b/core/embed/trezorhal/stm32u5/usbd_ioreq.h deleted file mode 120000 index 06da29b5c6..0000000000 --- a/core/embed/trezorhal/stm32u5/usbd_ioreq.h +++ /dev/null @@ -1 +0,0 @@ -../stm32f4/usbd_ioreq.h \ No newline at end of file diff --git a/core/site_scons/models/D001/discovery.py b/core/site_scons/models/D001/discovery.py index d4b57c3626..3dd0d2babb 100644 --- a/core/site_scons/models/D001/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -76,11 +76,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb.c", - "embed/trezorhal/stm32f4/usbd_conf.c", - "embed/trezorhal/stm32f4/usbd_core.c", - "embed/trezorhal/stm32f4/usbd_ctlreq.c", - "embed/trezorhal/stm32f4/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_conf.c", + "embed/trezorhal/stm32f4/usb/usbd_core.c", + "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index 0100883ad0..42cd6d4e12 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -82,11 +82,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb.c", - "embed/trezorhal/stm32u5/usbd_conf.c", - "embed/trezorhal/stm32u5/usbd_core.c", - "embed/trezorhal/stm32u5/usbd_ctlreq.c", - "embed/trezorhal/stm32u5/usbd_ioreq.c", + "embed/trezorhal/stm32u5/usb/usb.c", + "embed/trezorhal/stm32u5/usb/usbd_conf.c", + "embed/trezorhal/stm32u5/usb/usbd_core.c", + "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T1B1/trezor_1.py b/core/site_scons/models/T1B1/trezor_1.py index a3814b05f6..a1a4da0a1d 100644 --- a/core/site_scons/models/T1B1/trezor_1.py +++ b/core/site_scons/models/T1B1/trezor_1.py @@ -42,11 +42,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb.c", - "embed/trezorhal/stm32f4/usbd_conf.c", - "embed/trezorhal/stm32f4/usbd_core.c", - "embed/trezorhal/stm32f4/usbd_ctlreq.c", - "embed/trezorhal/stm32f4/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_conf.c", + "embed/trezorhal/stm32f4/usb/usbd_core.c", + "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v10.py b/core/site_scons/models/T2B1/trezor_r_v10.py index b39bc7884f..db7e2365c3 100644 --- a/core/site_scons/models/T2B1/trezor_r_v10.py +++ b/core/site_scons/models/T2B1/trezor_r_v10.py @@ -65,11 +65,11 @@ def configure( ] if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb.c", - "embed/trezorhal/stm32f4/usbd_conf.c", - "embed/trezorhal/stm32f4/usbd_core.c", - "embed/trezorhal/stm32f4/usbd_ctlreq.c", - "embed/trezorhal/stm32f4/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_conf.c", + "embed/trezorhal/stm32f4/usb/usbd_core.c", + "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v3.py b/core/site_scons/models/T2B1/trezor_r_v3.py index d1a426f7e9..9a29a06176 100644 --- a/core/site_scons/models/T2B1/trezor_r_v3.py +++ b/core/site_scons/models/T2B1/trezor_r_v3.py @@ -62,11 +62,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb.c", - "embed/trezorhal/stm32f4/usbd_conf.c", - "embed/trezorhal/stm32f4/usbd_core.c", - "embed/trezorhal/stm32f4/usbd_ctlreq.c", - "embed/trezorhal/stm32f4/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_conf.c", + "embed/trezorhal/stm32f4/usb/usbd_core.c", + "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v4.py b/core/site_scons/models/T2B1/trezor_r_v4.py index 7654b83eb8..c11de45252 100644 --- a/core/site_scons/models/T2B1/trezor_r_v4.py +++ b/core/site_scons/models/T2B1/trezor_r_v4.py @@ -58,11 +58,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb.c", - "embed/trezorhal/stm32f4/usbd_conf.c", - "embed/trezorhal/stm32f4/usbd_core.c", - "embed/trezorhal/stm32f4/usbd_ctlreq.c", - "embed/trezorhal/stm32f4/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_conf.c", + "embed/trezorhal/stm32f4/usb/usbd_core.c", + "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v6.py b/core/site_scons/models/T2B1/trezor_r_v6.py index 1d02dc6295..790927fb41 100644 --- a/core/site_scons/models/T2B1/trezor_r_v6.py +++ b/core/site_scons/models/T2B1/trezor_r_v6.py @@ -58,11 +58,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb.c", - "embed/trezorhal/stm32f4/usbd_conf.c", - "embed/trezorhal/stm32f4/usbd_core.c", - "embed/trezorhal/stm32f4/usbd_ctlreq.c", - "embed/trezorhal/stm32f4/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_conf.c", + "embed/trezorhal/stm32f4/usb/usbd_core.c", + "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2T1/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py index 8a96f78284..78b9a7a32e 100644 --- a/core/site_scons/models/T2T1/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -100,11 +100,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb.c", - "embed/trezorhal/stm32f4/usbd_conf.c", - "embed/trezorhal/stm32f4/usbd_core.c", - "embed/trezorhal/stm32f4/usbd_ctlreq.c", - "embed/trezorhal/stm32f4/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_conf.c", + "embed/trezorhal/stm32f4/usb/usbd_core.c", + "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index a36c6a3813..7e43b8171a 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -100,11 +100,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb.c", - "embed/trezorhal/stm32u5/usbd_conf.c", - "embed/trezorhal/stm32u5/usbd_core.c", - "embed/trezorhal/stm32u5/usbd_ctlreq.c", - "embed/trezorhal/stm32u5/usbd_ioreq.c", + "embed/trezorhal/stm32u5/usb/usb.c", + "embed/trezorhal/stm32u5/usb/usbd_conf.c", + "embed/trezorhal/stm32u5/usb/usbd_core.c", + "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T3T1/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py index 95cf4d5ee3..8cb8dccbe2 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -102,11 +102,11 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb.c", - "embed/trezorhal/stm32u5/usbd_conf.c", - "embed/trezorhal/stm32u5/usbd_core.c", - "embed/trezorhal/stm32u5/usbd_ctlreq.c", - "embed/trezorhal/stm32u5/usbd_ioreq.c", + "embed/trezorhal/stm32u5/usb/usb.c", + "embed/trezorhal/stm32u5/usb/usbd_conf.c", + "embed/trezorhal/stm32u5/usb/usbd_core.c", + "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") From 0bc1d1f7061a1c94524dd01406b203f985d09c05 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Wed, 29 May 2024 10:22:54 +0200 Subject: [PATCH 310/626] refactor(core/embed): refactor usb driver [no changelog] --- core/embed/bootloader/main.c | 4 +- core/embed/bootloader_ci/main.c | 4 +- core/embed/prodtest/main.c | 4 +- .../trezorhal/stm32f4/usb/{usb.c => usbd.c} | 447 ++++++++++-------- .../usb/{usb_hid-impl.h => usbd_class_hid.c} | 210 +++++--- .../usb/{usb_vcp-impl.h => usbd_class_vcp.c} | 293 ++++++++---- ...{usb_webusb-impl.h => usbd_class_webusb.c} | 192 +++++--- core/embed/trezorhal/stm32f4/usb/usbd_def.h | 2 + .../trezorhal/stm32f4/usb/usbd_internal.h | 131 +++++ core/embed/trezorhal/unix/usb.c | 7 + core/embed/trezorhal/usb.h | 103 +--- .../trezorhal/{usb_hid-defs.h => usb_hid.h} | 41 +- .../trezorhal/{usb_vcp-defs.h => usb_vcp.h} | 103 +--- .../{usb_webusb-defs.h => usb_webusb.h} | 28 +- core/site_scons/models/D001/discovery.py | 5 +- core/site_scons/models/D002/discovery2.py | 5 +- core/site_scons/models/T1B1/trezor_1.py | 5 +- core/site_scons/models/T2B1/trezor_r_v10.py | 5 +- core/site_scons/models/T2B1/trezor_r_v3.py | 5 +- core/site_scons/models/T2B1/trezor_r_v4.py | 5 +- core/site_scons/models/T2B1/trezor_r_v6.py | 5 +- core/site_scons/models/T2T1/trezor_t.py | 5 +- .../models/T3T1/trezor_t3t1_revE.py | 5 +- core/site_scons/models/T3T1/trezor_t3t1_v4.py | 5 +- core/src/usb.py | 10 +- core/tests/production_tests/main.py | 4 +- 26 files changed, 947 insertions(+), 686 deletions(-) rename core/embed/trezorhal/stm32f4/usb/{usb.c => usbd.c} (63%) rename core/embed/trezorhal/stm32f4/usb/{usb_hid-impl.h => usbd_class_hid.c} (64%) rename core/embed/trezorhal/stm32f4/usb/{usb_vcp-impl.h => usbd_class_vcp.c} (62%) rename core/embed/trezorhal/stm32f4/usb/{usb_webusb-impl.h => usbd_class_webusb.c} (58%) create mode 100644 core/embed/trezorhal/stm32f4/usb/usbd_internal.h rename core/embed/trezorhal/{usb_hid-defs.h => usb_hid.h} (64%) rename core/embed/trezorhal/{usb_vcp-defs.h => usb_vcp.h} (51%) rename core/embed/trezorhal/{usb_webusb-defs.h => usb_webusb.h} (70%) diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 685c3bfc44..af6dce6b16 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -112,8 +112,8 @@ static void usb_init_all(secbool usb21_landing) { #ifdef TREZOR_EMULATOR .emu_port = 21324, #else - .ep_in = USB_EP_DIR_IN | 0x01, - .ep_out = USB_EP_DIR_OUT | 0x01, + .ep_in = 0x01, + .ep_out = 0x01, #endif .subclass = 0, .protocol = 0, diff --git a/core/embed/bootloader_ci/main.c b/core/embed/bootloader_ci/main.c index 3db0631a27..ca60278ee3 100644 --- a/core/embed/bootloader_ci/main.c +++ b/core/embed/bootloader_ci/main.c @@ -69,8 +69,8 @@ static void usb_init_all(secbool usb21_landing) { static const usb_webusb_info_t webusb_info = { .iface_num = USB_IFACE_NUM, - .ep_in = USB_EP_DIR_IN | 0x01, - .ep_out = USB_EP_DIR_OUT | 0x01, + .ep_in = 0x01, + .ep_out = 0x01, .subclass = 0, .protocol = 0, .max_packet_len = sizeof(rx_buffer), diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 005819b8cf..2a50696adb 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -148,8 +148,8 @@ static void usb_init_all(void) { .rx_intr_byte = 3, // Ctrl-C .iface_num = VCP_IFACE, .data_iface_num = 0x01, - .ep_cmd = 0x82, - .ep_in = 0x81, + .ep_cmd = 0x02, + .ep_in = 0x01, .ep_out = 0x01, .polling_interval = 10, .max_packet_len = VCP_PACKET_LEN, diff --git a/core/embed/trezorhal/stm32f4/usb/usb.c b/core/embed/trezorhal/stm32f4/usb/usbd.c similarity index 63% rename from core/embed/trezorhal/stm32f4/usb/usb.c rename to core/embed/trezorhal/stm32f4/usb/usbd.c index 9249c4b9e8..8b9f35f620 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb.c +++ b/core/embed/trezorhal/stm32f4/usb/usbd.c @@ -19,10 +19,12 @@ #include STM32_HAL_H -#include "usb.h" #include "common.h" #include "random_delays.h" +#include "secbool.h" +#include "usb.h" #include "usbd_core.h" +#include "usbd_internal.h" #define USB_MAX_CONFIG_DESC_SIZE 256 #define USB_MAX_STR_SIZE 62 @@ -38,39 +40,49 @@ #error Unable to determine proper USB_PHY_ID to use #endif -#define USB_WINUSB_VENDOR_CODE \ - '!' // arbitrary, but must be equivalent to the last character in extra - // string -#define USB_WINUSB_EXTRA_STRING \ - 'M', 0x00, 'S', 0x00, 'F', 0x00, 'T', 0x00, '1', 0x00, '0', 0x00, '0', 0x00, \ - USB_WINUSB_VENDOR_CODE, 0x00 // MSFT100! -#define USB_WINUSB_EXTRA_STRING_INDEX 0xEE -#define USB_WINUSB_REQ_GET_COMPATIBLE_ID_FEATURE_DESCRIPTOR 0x04 -#define USB_WINUSB_REQ_GET_EXTENDED_PROPERTIES_OS_FEATURE_DESCRIPTOR 0x05 - -#define UNCONST(X) ((uint8_t *)(X)) - -static usb_device_descriptor_t usb_dev_desc; - -// Config descriptor -static uint8_t usb_config_buf[USB_MAX_CONFIG_DESC_SIZE] - __attribute__((aligned(4))); -static usb_config_descriptor_t *usb_config_desc = - (usb_config_descriptor_t *)(usb_config_buf); -static usb_interface_descriptor_t *usb_next_iface_desc; - -// String descriptor -static uint8_t usb_str_buf[USB_MAX_STR_DESC_SIZE] __attribute__((aligned(4))); -static usb_dev_string_table_t usb_str_table; - -static usb_iface_t usb_ifaces[USBD_MAX_NUM_INTERFACES]; - -static USBD_HandleTypeDef usb_dev_handle; -static const USBD_DescriptorsTypeDef usb_descriptors; +typedef struct { + const char *manufacturer; + const char *product; + const char *serial_number; + const char *interface; +} usb_dev_string_table_t; + +typedef struct { + // USB class dispatch table + const USBD_ClassTypeDef *class; + // Internal state for USB class driver + uint8_t state[USBD_CLASS_STATE_MAX_SIZE] __attribute__((aligned(8))); +} usb_iface_t; + +typedef struct { + // Handle to the USB device (lower layer driver) + USBD_HandleTypeDef dev_handle; + // Device descriptor + usb_device_descriptor_t dev_desc; + // Device string descriptors + usb_dev_string_table_t str_table; + // Interfaces of registered class drivers + // (each class driver must add 1 or more interfaces) + usb_iface_t ifaces[USBD_MAX_NUM_INTERFACES]; + // Buffer for configuration descriptor and additional descriptors + // (interface, endpoint, ..) added by registered class drivers + uint8_t desc_buffer[USB_MAX_CONFIG_DESC_SIZE] __attribute__((aligned(4))); + // Configuration descriptor (located at the beginning of the desc_buffer) + usb_config_descriptor_t *config_desc; + // Temporary buffer for unicode strings + uint8_t str_buf[USB_MAX_STR_DESC_SIZE] __attribute__((aligned(4))); + + secbool usb21_enabled; + secbool usb21_landing; + +} usb_driver_t; + +// USB driver instance +static usb_driver_t g_usb_driver; + +// forward declarations of dispatch functions static const USBD_ClassTypeDef usb_class; - -static secbool usb21_enabled = secfalse; -static secbool usb21_landing = secfalse; +static const USBD_DescriptorsTypeDef usb_descriptors; static secbool __wur check_desc_str(const char *s) { if (NULL == s) return secfalse; @@ -79,28 +91,30 @@ static secbool __wur check_desc_str(const char *s) { } void usb_init(const usb_dev_info_t *dev_info) { + usb_driver_t *usb = &g_usb_driver; + // enable/disable USB 2.1 features - usb21_enabled = dev_info->usb21_enabled; - usb21_landing = dev_info->usb21_landing; + usb->usb21_enabled = dev_info->usb21_enabled; + usb->usb21_landing = dev_info->usb21_landing; // Device descriptor - usb_dev_desc.bLength = sizeof(usb_device_descriptor_t); - usb_dev_desc.bDescriptorType = USB_DESC_TYPE_DEVICE; - usb_dev_desc.bcdUSB = - (sectrue == usb21_enabled) ? 0x0210 : 0x0200; // USB 2.1 or USB 2.0 - usb_dev_desc.bDeviceClass = dev_info->device_class; - usb_dev_desc.bDeviceSubClass = dev_info->device_subclass; - usb_dev_desc.bDeviceProtocol = dev_info->device_protocol; - usb_dev_desc.bMaxPacketSize0 = USB_MAX_EP0_SIZE; - usb_dev_desc.idVendor = dev_info->vendor_id; - usb_dev_desc.idProduct = dev_info->product_id; - usb_dev_desc.bcdDevice = dev_info->release_num; - usb_dev_desc.iManufacturer = - USBD_IDX_MFC_STR; // Index of manufacturer string - usb_dev_desc.iProduct = USBD_IDX_PRODUCT_STR; // Index of product string - usb_dev_desc.iSerialNumber = + usb->dev_desc.bLength = sizeof(usb_device_descriptor_t); + usb->dev_desc.bDescriptorType = USB_DESC_TYPE_DEVICE; + usb->dev_desc.bcdUSB = + (sectrue == usb->usb21_enabled) ? 0x0210 : 0x0200; // USB 2.1 or USB 2.0 + usb->dev_desc.bDeviceClass = dev_info->device_class; + usb->dev_desc.bDeviceSubClass = dev_info->device_subclass; + usb->dev_desc.bDeviceProtocol = dev_info->device_protocol; + usb->dev_desc.bMaxPacketSize0 = USB_MAX_EP0_SIZE; + usb->dev_desc.idVendor = dev_info->vendor_id; + usb->dev_desc.idProduct = dev_info->product_id; + usb->dev_desc.bcdDevice = dev_info->release_num; + usb->dev_desc.iManufacturer = + USBD_IDX_MFC_STR; // Index of manufacturer string + usb->dev_desc.iProduct = USBD_IDX_PRODUCT_STR; // Index of product string + usb->dev_desc.iSerialNumber = USBD_IDX_SERIAL_STR; // Index of serial number string - usb_dev_desc.bNumConfigurations = 1; + usb->dev_desc.bNumConfigurations = 1; // String table ensure(check_desc_str(dev_info->manufacturer), NULL); @@ -108,57 +122,66 @@ void usb_init(const usb_dev_info_t *dev_info) { ensure(check_desc_str(dev_info->serial_number), NULL); ensure(check_desc_str(dev_info->interface), NULL); - usb_str_table.manufacturer = dev_info->manufacturer; - usb_str_table.product = dev_info->product; - usb_str_table.serial_number = dev_info->serial_number; - usb_str_table.interface = dev_info->interface; + usb->str_table.manufacturer = dev_info->manufacturer; + usb->str_table.product = dev_info->product; + usb->str_table.serial_number = dev_info->serial_number; + usb->str_table.interface = dev_info->interface; + + usb->config_desc = (usb_config_descriptor_t *)(usb->desc_buffer); // Configuration descriptor - usb_config_desc->bLength = sizeof(usb_config_descriptor_t); - usb_config_desc->bDescriptorType = USB_DESC_TYPE_CONFIGURATION; - usb_config_desc->wTotalLength = + usb->config_desc->bLength = sizeof(usb_config_descriptor_t); + usb->config_desc->bDescriptorType = USB_DESC_TYPE_CONFIGURATION; + usb->config_desc->wTotalLength = sizeof(usb_config_descriptor_t); // will be updated later via - // usb_desc_add_iface() - usb_config_desc->bNumInterfaces = - 0; // will be updated later via usb_desc_add_iface() - usb_config_desc->bConfigurationValue = 0x01; - usb_config_desc->iConfiguration = 0; - usb_config_desc->bmAttributes = - 0x80; // 0x80 = bus powered; 0xC0 = self powered - usb_config_desc->bMaxPower = 0x32; // Maximum Power Consumption in 2mA units - - // Pointer to interface descriptor data - usb_next_iface_desc = - (usb_interface_descriptor_t *)(usb_config_buf + - usb_config_desc->wTotalLength); + // usb_alloc_class_descriptors() + usb->config_desc->bNumInterfaces = + 0; // will be updated later via usb_set_iface_class() + usb->config_desc->bConfigurationValue = 0x01; + usb->config_desc->iConfiguration = 0; + usb->config_desc->bmAttributes = + 0x80; // 0x80 = bus powered; 0xC0 = self powered + usb->config_desc->bMaxPower = 0x32; // Maximum Power Consumption in 2mA units ensure(sectrue * - (USBD_OK == USBD_Init(&usb_dev_handle, + (USBD_OK == USBD_Init(&usb->dev_handle, (USBD_DescriptorsTypeDef *)&usb_descriptors, USB_PHY_ID)), NULL); ensure(sectrue * - (USBD_OK == USBD_RegisterClass(&usb_dev_handle, + (USBD_OK == USBD_RegisterClass(&usb->dev_handle, (USBD_ClassTypeDef *)&usb_class)), NULL); } void usb_deinit(void) { - USBD_DeInit(&usb_dev_handle); + usb_driver_t *usb = &g_usb_driver; + + USBD_DeInit(&usb->dev_handle); for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - usb_ifaces[i].type = USB_IFACE_TYPE_DISABLED; + usb->ifaces[i].class = NULL; } } -void usb_start(void) { USBD_Start(&usb_dev_handle); } +void usb_start(void) { + usb_driver_t *usb = &g_usb_driver; -void usb_stop(void) { USBD_Stop(&usb_dev_handle); } + USBD_Start(&usb->dev_handle); +} + +void usb_stop(void) { + usb_driver_t *usb = &g_usb_driver; + + USBD_Stop(&usb->dev_handle); +} secbool usb_configured(void) { + usb_driver_t *usb = &g_usb_driver; + static uint32_t usb_configured_last_ok = 0; uint32_t ticks = hal_ticks_ms(); - const USBD_HandleTypeDef *pdev = &usb_dev_handle; + const USBD_HandleTypeDef *pdev = &usb->dev_handle; if (pdev->dev_state == USBD_STATE_CONFIGURED) { usb_configured_last_ok = hal_ticks_ms(); return sectrue; @@ -189,50 +212,65 @@ secbool usb_configured(void) { return secfalse; } -/* - * Utility functions for USB interfaces - */ +// ========================================================================== +// Utility functions for USB class drivers +// ========================================================================== + +void *usb_get_iface_state(uint8_t iface_num, const USBD_ClassTypeDef *class) { + usb_driver_t *usb = &g_usb_driver; -static usb_iface_t *usb_get_iface(uint8_t iface_num) { if (iface_num < USBD_MAX_NUM_INTERFACES) { - return &usb_ifaces[iface_num]; - } else { - return NULL; // Invalid interface number + usb_iface_t *iface = &usb->ifaces[iface_num]; + + if (iface->class == class) { + return &iface->state; + } } + + // Invalid interface number or type + return NULL; } -static void *usb_desc_alloc_iface(size_t desc_len) { - if (usb_config_desc->wTotalLength + desc_len < USB_MAX_CONFIG_DESC_SIZE) { - return usb_next_iface_desc; - } else { - return NULL; // Not enough space in the descriptor +void usb_set_iface_class(uint8_t iface_num, const USBD_ClassTypeDef *class) { + usb_driver_t *usb = &g_usb_driver; + + if (iface_num < USBD_MAX_NUM_INTERFACES) { + if (usb->ifaces[iface_num].class == NULL && class != NULL) { + usb->config_desc->bNumInterfaces++; + } + + usb->ifaces[iface_num].class = class; } } -static void usb_desc_add_iface(size_t desc_len) { - usb_config_desc->bNumInterfaces++; - usb_config_desc->wTotalLength += desc_len; - usb_next_iface_desc = - (usb_interface_descriptor_t *)(usb_config_buf + - usb_config_desc->wTotalLength); +USBD_HandleTypeDef *usb_get_dev_handle(void) { + usb_driver_t *usb = &g_usb_driver; + + return &usb->dev_handle; } -/* - * USB interface implementations - */ +void *usb_alloc_class_descriptors(size_t desc_len) { + usb_driver_t *usb = &g_usb_driver; -#include "usb_hid-impl.h" -#include "usb_vcp-impl.h" -#include "usb_webusb-impl.h" + if (usb->config_desc->wTotalLength + desc_len < USB_MAX_CONFIG_DESC_SIZE) { + void *retval = &usb->desc_buffer[usb->config_desc->wTotalLength]; + usb->config_desc->wTotalLength += desc_len; + return retval; + } else { + return NULL; // Not enough space in the descriptor + } +} -/* - * USB configuration (device & string descriptors) - */ +// ========================================================================== +// USB configuration (device & string descriptors) +// ========================================================================== static uint8_t *usb_get_dev_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - *length = sizeof(usb_dev_desc); - return (uint8_t *)(&usb_dev_desc); + usb_driver_t *usb = &g_usb_driver; + + *length = sizeof(usb->dev_desc); + return (uint8_t *)(&usb->dev_desc); } static uint8_t *usb_get_langid_str_descriptor(USBD_SpeedTypeDef speed, @@ -248,37 +286,49 @@ static uint8_t *usb_get_langid_str_descriptor(USBD_SpeedTypeDef speed, static uint8_t *usb_get_manufacturer_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - USBD_GetString((uint8_t *)usb_str_table.manufacturer, usb_str_buf, length); - return usb_str_buf; + usb_driver_t *usb = &g_usb_driver; + + USBD_GetString((uint8_t *)usb->str_table.manufacturer, usb->str_buf, length); + return usb->str_buf; } static uint8_t *usb_get_product_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - USBD_GetString((uint8_t *)usb_str_table.product, usb_str_buf, length); - return usb_str_buf; + usb_driver_t *usb = &g_usb_driver; + + USBD_GetString((uint8_t *)usb->str_table.product, usb->str_buf, length); + return usb->str_buf; } static uint8_t *usb_get_serial_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - USBD_GetString((uint8_t *)usb_str_table.serial_number, usb_str_buf, length); - return usb_str_buf; + usb_driver_t *usb = &g_usb_driver; + + USBD_GetString((uint8_t *)usb->str_table.serial_number, usb->str_buf, length); + return usb->str_buf; } static uint8_t *usb_get_configuration_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - USBD_GetString((uint8_t *)"", usb_str_buf, length); - return usb_str_buf; + usb_driver_t *usb = &g_usb_driver; + + USBD_GetString((uint8_t *)"", usb->str_buf, length); + return usb->str_buf; } static uint8_t *usb_get_interface_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - USBD_GetString((uint8_t *)usb_str_table.interface, usb_str_buf, length); - return usb_str_buf; + usb_driver_t *usb = &g_usb_driver; + + USBD_GetString((uint8_t *)usb->str_table.interface, usb->str_buf, length); + return usb->str_buf; } static uint8_t *usb_get_bos_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - if (sectrue == usb21_enabled) { + usb_driver_t *usb = &g_usb_driver; + + if (sectrue == usb->usb21_enabled) { static uint8_t bos[] = { // usb_bos_descriptor { 0x05, // uint8_t bLength @@ -298,7 +348,7 @@ static uint8_t *usb_get_bos_descriptor(USBD_SpeedTypeDef speed, USB_WEBUSB_LANDING_PAGE, // uint8_t iLandingPage // } }; - bos[28] = (sectrue == usb21_landing) ? USB_WEBUSB_LANDING_PAGE : 0; + bos[28] = (sectrue == usb->usb21_landing) ? USB_WEBUSB_LANDING_PAGE : 0; *length = sizeof(bos); return UNCONST(bos); } else { @@ -318,45 +368,49 @@ static const USBD_DescriptorsTypeDef usb_descriptors = { .GetBOSDescriptor = usb_get_bos_descriptor, }; -/* - * USB class (interface dispatch, configuration descriptor) - */ +// ========================================================================== +// USB class (interface dispatch, configuration descriptor) +// ========================================================================== + +#define USB_WINUSB_VENDOR_CODE \ + '!' // arbitrary, but must be equivalent to the last character in extra + // string +#define USB_WINUSB_EXTRA_STRING \ + 'M', 0x00, 'S', 0x00, 'F', 0x00, 'T', 0x00, '1', 0x00, '0', 0x00, '0', 0x00, \ + USB_WINUSB_VENDOR_CODE, 0x00 // MSFT100! +#define USB_WINUSB_EXTRA_STRING_INDEX 0xEE +#define USB_WINUSB_REQ_GET_COMPATIBLE_ID_FEATURE_DESCRIPTOR 0x04 +#define USB_WINUSB_REQ_GET_EXTENDED_PROPERTIES_OS_FEATURE_DESCRIPTOR 0x05 static uint8_t usb_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { + usb_driver_t *usb = &g_usb_driver; + for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - switch (usb_ifaces[i].type) { - case USB_IFACE_TYPE_HID: - usb_hid_class_init(dev, &usb_ifaces[i].hid, cfg_idx); - break; - case USB_IFACE_TYPE_VCP: - usb_vcp_class_init(dev, &usb_ifaces[i].vcp, cfg_idx); - break; - case USB_IFACE_TYPE_WEBUSB: - usb_webusb_class_init(dev, &usb_ifaces[i].webusb, cfg_idx); - break; - default: - break; + usb_iface_t *iface = &usb->ifaces[i]; + if (iface->class != NULL && iface->class->Init != NULL) { + dev->pUserData = iface->state; + iface->class->Init(dev, cfg_idx); } } + + dev->pUserData = NULL; + return USBD_OK; } static uint8_t usb_class_deinit(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { + usb_driver_t *usb = &g_usb_driver; + for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - switch (usb_ifaces[i].type) { - case USB_IFACE_TYPE_HID: - usb_hid_class_deinit(dev, &usb_ifaces[i].hid, cfg_idx); - break; - case USB_IFACE_TYPE_VCP: - usb_vcp_class_deinit(dev, &usb_ifaces[i].vcp, cfg_idx); - break; - case USB_IFACE_TYPE_WEBUSB: - usb_webusb_class_deinit(dev, &usb_ifaces[i].webusb, cfg_idx); - break; - default: - break; + usb_iface_t *iface = &usb->ifaces[i]; + if (iface->class != NULL && iface->class->DeInit != NULL) { + dev->pUserData = iface->state; + iface->class->DeInit(dev, cfg_idx); } } + + dev->pUserData = NULL; + return USBD_OK; } @@ -367,6 +421,8 @@ static uint8_t usb_class_deinit(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, USBD_SetupReqTypedef *req) { + usb_driver_t *usb = &g_usb_driver; + if (((req->bmRequest & USB_REQ_TYPE_MASK) != USB_REQ_TYPE_CLASS) && ((req->bmRequest & USB_REQ_TYPE_MASK) != USB_REQ_TYPE_STANDARD) && ((req->bmRequest & USB_REQ_TYPE_MASK) != USB_REQ_TYPE_VENDOR)) { @@ -375,7 +431,8 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, if ((req->bmRequest & USB_REQ_TYPE_MASK) == USB_REQ_TYPE_VENDOR) { if ((req->bmRequest & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_DEVICE) { - if (sectrue == usb21_enabled && req->bRequest == USB_WEBUSB_VENDOR_CODE) { + if (sectrue == usb->usb21_enabled && + req->bRequest == USB_WEBUSB_VENDOR_CODE) { if (req->wIndex == USB_WEBUSB_REQ_GET_URL && req->wValue == USB_WEBUSB_LANDING_PAGE) { static const char webusb_url[] = { @@ -407,7 +464,7 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, USBD_CtlError(dev, req); return USBD_FAIL; } - } else if (sectrue == usb21_enabled && + } else if (sectrue == usb->usb21_enabled && req->bRequest == USB_WINUSB_VENDOR_CODE) { if (req->wIndex == USB_WINUSB_REQ_GET_COMPATIBLE_ID_FEATURE_DESCRIPTOR) { @@ -440,7 +497,8 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, } if ((req->bmRequest & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_INTERFACE) { - if (sectrue == usb21_enabled && req->bRequest == USB_WINUSB_VENDOR_CODE) { + if (sectrue == usb->usb21_enabled && + req->bRequest == USB_WINUSB_VENDOR_CODE) { if (req->wIndex == USB_WINUSB_REQ_GET_EXTENDED_PROPERTIES_OS_FEATURE_DESCRIPTOR && (req->wValue & 0xFF) == 0) { // reply only if interface is 0 @@ -485,88 +543,89 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, USBD_CtlError(dev, req); return USBD_FAIL; } - switch (usb_ifaces[req->wIndex].type) { - case USB_IFACE_TYPE_HID: - return usb_hid_class_setup(dev, &usb_ifaces[req->wIndex].hid, req); - case USB_IFACE_TYPE_VCP: - return usb_vcp_class_setup(dev, &usb_ifaces[req->wIndex].vcp, req); - case USB_IFACE_TYPE_WEBUSB: - return usb_webusb_class_setup(dev, &usb_ifaces[req->wIndex].webusb, - req); - default: - wait_random(); - USBD_CtlError(dev, req); - return USBD_FAIL; + + usb_iface_t *iface = &usb->ifaces[req->wIndex]; + if (iface->class != NULL && iface->class->Setup != NULL) { + dev->pUserData = iface->state; + iface->class->Setup(dev, req); + dev->pUserData = NULL; + } else { + wait_random(); + USBD_CtlError(dev, req); + return USBD_FAIL; } } return USBD_OK; } static uint8_t usb_class_data_in(USBD_HandleTypeDef *dev, uint8_t ep_num) { + usb_driver_t *usb = &g_usb_driver; + #ifdef RDI rdi_refresh_session_delay(); #endif + for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - switch (usb_ifaces[i].type) { - case USB_IFACE_TYPE_HID: - usb_hid_class_data_in(dev, &usb_ifaces[i].hid, ep_num); - break; - case USB_IFACE_TYPE_VCP: - usb_vcp_class_data_in(dev, &usb_ifaces[i].vcp, ep_num); - break; - case USB_IFACE_TYPE_WEBUSB: - usb_webusb_class_data_in(dev, &usb_ifaces[i].webusb, ep_num); - break; - default: - break; + usb_iface_t *iface = &usb->ifaces[i]; + if (iface->class != NULL && iface->class->DataIn != NULL) { + dev->pUserData = iface->state; + iface->class->DataIn(dev, ep_num); } } + + dev->pUserData = NULL; + return USBD_OK; } static uint8_t usb_class_data_out(USBD_HandleTypeDef *dev, uint8_t ep_num) { + usb_driver_t *usb = &g_usb_driver; + #ifdef RDI rdi_refresh_session_delay(); #endif + for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - switch (usb_ifaces[i].type) { - case USB_IFACE_TYPE_HID: - usb_hid_class_data_out(dev, &usb_ifaces[i].hid, ep_num); - break; - case USB_IFACE_TYPE_VCP: - usb_vcp_class_data_out(dev, &usb_ifaces[i].vcp, ep_num); - break; - case USB_IFACE_TYPE_WEBUSB: - usb_webusb_class_data_out(dev, &usb_ifaces[i].webusb, ep_num); - break; - default: - break; + usb_iface_t *iface = &usb->ifaces[i]; + if (iface->class != NULL && iface->class->DataOut != NULL) { + dev->pUserData = iface->state; + iface->class->DataOut(dev, ep_num); } } + + dev->pUserData = NULL; + return USBD_OK; } static uint8_t usb_class_sof(USBD_HandleTypeDef *dev) { + usb_driver_t *usb = &g_usb_driver; + for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - switch (usb_ifaces[i].type) { - case USB_IFACE_TYPE_VCP: - usb_vcp_class_sof(dev, &usb_ifaces[i].vcp); - break; - default: - break; + usb_iface_t *iface = &usb->ifaces[i]; + if (iface->class != NULL && iface->class->SOF != NULL) { + dev->pUserData = iface->state; + iface->class->SOF(dev); } } + + dev->pUserData = NULL; + return USBD_OK; } static uint8_t *usb_class_get_cfg_desc(uint16_t *length) { - *length = usb_config_desc->wTotalLength; - return usb_config_buf; + usb_driver_t *usb = &g_usb_driver; + + *length = usb->config_desc->wTotalLength; + return usb->desc_buffer; } static uint8_t *usb_class_get_usrstr_desc(USBD_HandleTypeDef *dev, uint8_t index, uint16_t *length) { - if (sectrue == usb21_enabled && index == USB_WINUSB_EXTRA_STRING_INDEX) { + usb_driver_t *usb = &g_usb_driver; + + if (sectrue == usb->usb21_enabled && index == USB_WINUSB_EXTRA_STRING_INDEX) { static const uint8_t winusb_string_descriptor[] = { 0x12, // bLength USB_DESC_TYPE_STRING, // bDescriptorType diff --git a/core/embed/trezorhal/stm32f4/usb/usb_hid-impl.h b/core/embed/trezorhal/stm32f4/usb/usbd_class_hid.c similarity index 64% rename from core/embed/trezorhal/stm32f4/usb/usb_hid-impl.h rename to core/embed/trezorhal/stm32f4/usb/usbd_class_hid.c index 349822287f..cddb6f10b4 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb_hid-impl.h +++ b/core/embed/trezorhal/stm32f4/usb/usbd_class_hid.c @@ -17,6 +17,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "common.h" +#include "random_delays.h" + +#include "usbd_core.h" +#include "usbd_internal.h" + +#include "usb_hid.h" + #define USB_CLASS_HID 0x03 #define USB_DESC_TYPE_HID 0x21 @@ -27,37 +35,81 @@ #define USB_HID_REQ_SET_IDLE 0x0A #define USB_HID_REQ_GET_IDLE 0x02 +typedef struct __attribute__((packed)) { + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t bcdHID; + uint8_t bCountryCode; + uint8_t bNumDescriptors; + uint8_t bReportDescriptorType; + uint16_t wReportDescriptorLength; +} usb_hid_descriptor_t; + +typedef struct __attribute__((packed)) { + usb_interface_descriptor_t iface; + usb_hid_descriptor_t hid; + usb_endpoint_descriptor_t ep_in; + usb_endpoint_descriptor_t ep_out; +} usb_hid_descriptor_block_t; + +/* usb_hid_state_t encapsulates all state used by enabled HID interface. It + * needs to be completely initialized in usb_hid_add and reset in + * usb_hid_class_init. See usb_hid_info_t for details of the configuration + * fields. */ + +typedef struct { + USBD_HandleTypeDef *dev_handle; + const usb_hid_descriptor_block_t *desc_block; + const uint8_t *report_desc; + uint8_t *rx_buffer; + uint8_t ep_in; + uint8_t ep_out; + uint8_t max_packet_len; + uint8_t report_desc_len; + + uint8_t protocol; // For SET_PROTOCOL/GET_PROTOCOL setup reqs + uint8_t idle_rate; // For SET_IDLE/GET_IDLE setup reqs + uint8_t alt_setting; // For SET_INTERFACE/GET_INTERFACE setup reqs + uint8_t last_read_len; // Length of data read into rx_buffer + uint8_t ep_in_is_idle; // Set to 1 after IN endpoint gets idle +} usb_hid_state_t; + +_Static_assert(sizeof(usb_hid_state_t) <= USBD_CLASS_STATE_MAX_SIZE); + +// interface dispatch functions +static const USBD_ClassTypeDef usb_hid_class; + +#define usb_get_hid_state(iface_num) \ + ((usb_hid_state_t *)usb_get_iface_state(iface_num, &usb_hid_class)) + /* usb_hid_add adds and configures new USB HID interface according to * configuration options passed in `info`. */ secbool usb_hid_add(const usb_hid_info_t *info) { - usb_iface_t *iface = usb_get_iface(info->iface_num); + usb_hid_state_t *state = usb_get_iface_state(info->iface_num, NULL); - if (iface == NULL) { + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_DISABLED) { - return secfalse; // Interface is already enabled - } usb_hid_descriptor_block_t *d = - usb_desc_alloc_iface(sizeof(usb_hid_descriptor_block_t)); + usb_alloc_class_descriptors(sizeof(usb_hid_descriptor_block_t)); if (d == NULL) { return secfalse; // Not enough space in the configuration descriptor } - if ((info->ep_in & USB_EP_DIR_MASK) != USB_EP_DIR_IN) { - return secfalse; // IN EP is invalid - } - if ((info->ep_out & USB_EP_DIR_MASK) != USB_EP_DIR_OUT) { - return secfalse; // OUT EP is invalid - } if (info->rx_buffer == NULL) { return secfalse; } if (info->report_desc == NULL) { return secfalse; } + if (info->ep_in >= USBD_MAX_NUM_INTERFACES) { + return secfalse; + } + if (info->ep_out >= USBD_MAX_NUM_INTERFACES) { + return secfalse; + } // Interface descriptor d->iface.bLength = sizeof(usb_interface_descriptor_t); @@ -82,7 +134,7 @@ secbool usb_hid_add(const usb_hid_info_t *info) { // IN endpoint (sending) d->ep_in.bLength = sizeof(usb_endpoint_descriptor_t); d->ep_in.bDescriptorType = USB_DESC_TYPE_ENDPOINT; - d->ep_in.bEndpointAddress = info->ep_in; + d->ep_in.bEndpointAddress = info->ep_in | USB_EP_DIR_IN; d->ep_in.bmAttributes = USBD_EP_TYPE_INTR; d->ep_in.wMaxPacketSize = info->max_packet_len; d->ep_in.bInterval = info->polling_interval; @@ -90,75 +142,67 @@ secbool usb_hid_add(const usb_hid_info_t *info) { // OUT endpoint (receiving) d->ep_out.bLength = sizeof(usb_endpoint_descriptor_t); d->ep_out.bDescriptorType = USB_DESC_TYPE_ENDPOINT; - d->ep_out.bEndpointAddress = info->ep_out; + d->ep_out.bEndpointAddress = info->ep_out | USB_EP_DIR_OUT; d->ep_out.bmAttributes = USBD_EP_TYPE_INTR; d->ep_out.wMaxPacketSize = info->max_packet_len; d->ep_out.bInterval = info->polling_interval; - // Config descriptor - usb_desc_add_iface(sizeof(usb_hid_descriptor_block_t)); - // Interface state - iface->type = USB_IFACE_TYPE_HID; - iface->hid.desc_block = d; - iface->hid.report_desc = info->report_desc; - iface->hid.rx_buffer = info->rx_buffer; - iface->hid.ep_in = info->ep_in; - iface->hid.ep_out = info->ep_out; - iface->hid.max_packet_len = info->max_packet_len; - iface->hid.report_desc_len = info->report_desc_len; - iface->hid.protocol = 0; - iface->hid.idle_rate = 0; - iface->hid.alt_setting = 0; - iface->hid.last_read_len = 0; - iface->hid.ep_in_is_idle = 1; + state->dev_handle = usb_get_dev_handle(); + state->desc_block = d; + state->report_desc = info->report_desc; + state->rx_buffer = info->rx_buffer; + state->ep_in = info->ep_in | USB_EP_DIR_IN; + state->ep_out = info->ep_out | USB_EP_DIR_OUT; + state->max_packet_len = info->max_packet_len; + state->report_desc_len = info->report_desc_len; + state->protocol = 0; + state->idle_rate = 0; + state->alt_setting = 0; + state->last_read_len = 0; + state->ep_in_is_idle = 1; + + usb_set_iface_class(info->iface_num, &usb_hid_class); return sectrue; } secbool usb_hid_can_read(uint8_t iface_num) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + usb_hid_state_t *state = usb_get_hid_state(iface_num); + + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_HID) { - return secfalse; // Invalid interface type - } - if (iface->hid.last_read_len == 0) { + if (state->last_read_len == 0) { return secfalse; // Nothing in the receiving buffer } - if (usb_dev_handle.dev_state != USBD_STATE_CONFIGURED) { + + if (state->dev_handle->dev_state != USBD_STATE_CONFIGURED) { return secfalse; // Device is not configured } return sectrue; } secbool usb_hid_can_write(uint8_t iface_num) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + usb_hid_state_t *state = usb_get_hid_state(iface_num); + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_HID) { - return secfalse; // Invalid interface type - } - if (iface->hid.ep_in_is_idle == 0) { + if (state->ep_in_is_idle == 0) { return secfalse; // Last transmission is not over yet } - if (usb_dev_handle.dev_state != USBD_STATE_CONFIGURED) { + if (state->dev_handle->dev_state != USBD_STATE_CONFIGURED) { return secfalse; // Device is not configured } return sectrue; } int usb_hid_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + volatile usb_hid_state_t *state = usb_get_hid_state(iface_num); + + if (state == NULL) { return -1; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_HID) { - return -2; // Invalid interface type - } - volatile usb_hid_state_t *state = &iface->hid; // Copy maximum possible amount of data uint32_t last_read_len = state->last_read_len; @@ -171,28 +215,26 @@ int usb_hid_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { state->last_read_len = 0; // Prepare the OUT EP to receive next packet - USBD_LL_PrepareReceive(&usb_dev_handle, state->ep_out, state->rx_buffer, + USBD_LL_PrepareReceive(state->dev_handle, state->ep_out, state->rx_buffer, state->max_packet_len); return last_read_len; } int usb_hid_write(uint8_t iface_num, const uint8_t *buf, uint32_t len) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + volatile usb_hid_state_t *state = usb_get_hid_state(iface_num); + + if (state == NULL) { return -1; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_HID) { - return -2; // Invalid interface type - } - volatile usb_hid_state_t *state = &iface->hid; if (state->ep_in_is_idle == 0) { return 0; // Last transmission is not over yet } state->ep_in_is_idle = 0; - USBD_LL_Transmit(&usb_dev_handle, state->ep_in, UNCONST(buf), (uint16_t)len); + USBD_LL_Transmit(state->dev_handle, state->ep_in, UNCONST(buf), + (uint16_t)len); return len; } @@ -237,8 +279,9 @@ int usb_hid_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, return usb_hid_write(iface_num, buf, len); } -static void usb_hid_class_init(USBD_HandleTypeDef *dev, usb_hid_state_t *state, - uint8_t cfg_idx) { +static uint8_t usb_hid_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { + usb_hid_state_t *state = (usb_hid_state_t *)dev->pUserData; + // Open endpoints USBD_LL_OpenEP(dev, state->ep_in, USBD_EP_TYPE_INTR, state->max_packet_len); USBD_LL_OpenEP(dev, state->ep_out, USBD_EP_TYPE_INTR, state->max_packet_len); @@ -253,20 +296,27 @@ static void usb_hid_class_init(USBD_HandleTypeDef *dev, usb_hid_state_t *state, // Prepare the OUT EP to receive next packet USBD_LL_PrepareReceive(dev, state->ep_out, state->rx_buffer, state->max_packet_len); + + return USBD_OK; } -static void usb_hid_class_deinit(USBD_HandleTypeDef *dev, - usb_hid_state_t *state, uint8_t cfg_idx) { +static uint8_t usb_hid_class_deinit(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { + usb_hid_state_t *state = (usb_hid_state_t *)dev->pUserData; + // Flush endpoints USBD_LL_FlushEP(dev, state->ep_in); USBD_LL_FlushEP(dev, state->ep_out); // Close endpoints USBD_LL_CloseEP(dev, state->ep_in); USBD_LL_CloseEP(dev, state->ep_out); + + return USBD_OK; } -static int usb_hid_class_setup(USBD_HandleTypeDef *dev, usb_hid_state_t *state, - USBD_SetupReqTypedef *req) { +static uint8_t usb_hid_class_setup(USBD_HandleTypeDef *dev, + USBD_SetupReqTypedef *req) { + usb_hid_state_t *state = (usb_hid_state_t *)dev->pUserData; + wait_random(); switch (req->bmRequest & USB_REQ_TYPE_MASK) { @@ -339,20 +389,44 @@ static int usb_hid_class_setup(USBD_HandleTypeDef *dev, usb_hid_state_t *state, return USBD_OK; } -static void usb_hid_class_data_in(USBD_HandleTypeDef *dev, - usb_hid_state_t *state, uint8_t ep_num) { +static uint8_t usb_hid_class_data_in(USBD_HandleTypeDef *dev, uint8_t ep_num) { + usb_hid_state_t *state = (usb_hid_state_t *)dev->pUserData; + if ((ep_num | USB_EP_DIR_IN) == state->ep_in) { wait_random(); state->ep_in_is_idle = 1; } + + return USBD_OK; } -static void usb_hid_class_data_out(USBD_HandleTypeDef *dev, - usb_hid_state_t *state, uint8_t ep_num) { +static uint8_t usb_hid_class_data_out(USBD_HandleTypeDef *dev, uint8_t ep_num) { + usb_hid_state_t *state = (usb_hid_state_t *)dev->pUserData; + if (ep_num == state->ep_out) { wait_random(); // Save the report length to indicate we have read something, but don't // schedule next reading until user reads this one state->last_read_len = USBD_LL_GetRxDataSize(dev, ep_num); } + + return USBD_OK; } + +static const USBD_ClassTypeDef usb_hid_class = { + .Init = usb_hid_class_init, + .DeInit = usb_hid_class_deinit, + .Setup = usb_hid_class_setup, + .EP0_TxSent = NULL, + .EP0_RxReady = NULL, + .DataIn = usb_hid_class_data_in, + .DataOut = usb_hid_class_data_out, + .SOF = NULL, + .IsoINIncomplete = NULL, + .IsoOUTIncomplete = NULL, + .GetHSConfigDescriptor = NULL, + .GetFSConfigDescriptor = NULL, + .GetOtherSpeedConfigDescriptor = NULL, + .GetDeviceQualifierDescriptor = NULL, + .GetUsrStrDescriptor = NULL, +}; diff --git a/core/embed/trezorhal/stm32f4/usb/usb_vcp-impl.h b/core/embed/trezorhal/stm32f4/usb/usbd_class_vcp.c similarity index 62% rename from core/embed/trezorhal/stm32f4/usb/usb_vcp-impl.h rename to core/embed/trezorhal/stm32f4/usb/usbd_class_vcp.c index 5652eb7175..d30f308bbd 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb_vcp-impl.h +++ b/core/embed/trezorhal/stm32f4/usb/usbd_class_vcp.c @@ -17,6 +17,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "common.h" + +#include "usbd_core.h" +#include "usbd_internal.h" + +#include "usb_vcp.h" + // Communications Device Class Code (bFunctionClass, bInterfaceClass) #define USB_CLASS_CDC 0x02 @@ -50,34 +57,129 @@ #define USB_CDC_GET_LINE_CODING 0x21 #define USB_CDC_SET_CONTROL_LINE_STATE 0x22 +typedef struct __attribute__((packed)) { + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint16_t bcdCDC; +} usb_vcp_header_descriptor_t; + +typedef struct __attribute__((packed)) { + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bmCapabilities; + uint8_t bDataInterface; +} usb_vcp_cm_descriptor_t; + +typedef struct __attribute__((packed)) { + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bmCapabilities; +} usb_vcp_acm_descriptor_t; + +typedef struct __attribute__((packed)) { + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint8_t bControlInterface; + uint8_t bSubordinateInterface0; +} usb_vcp_union_descriptor_t; + +typedef struct __attribute__((packed)) { + usb_interface_assoc_descriptor_t assoc; + usb_interface_descriptor_t iface_cdc; + usb_vcp_header_descriptor_t + fheader; // Class-Specific Descriptor Header Format + usb_vcp_cm_descriptor_t fcm; // Call Management Functional Descriptor + usb_vcp_acm_descriptor_t + facm; // Abstract Control Management Functional Descriptor + usb_vcp_union_descriptor_t funion; // Union Interface Functional Descriptor + usb_endpoint_descriptor_t ep_cmd; + usb_interface_descriptor_t iface_data; + usb_endpoint_descriptor_t ep_in; + usb_endpoint_descriptor_t ep_out; +} usb_vcp_descriptor_block_t; + +typedef struct __attribute__((packed)) { + uint32_t dwDTERate; + uint8_t bCharFormat; // usb_cdc_line_coding_bCharFormat_t + uint8_t bParityType; // usb_cdc_line_coding_bParityType_t + uint8_t bDataBits; +} usb_cdc_line_coding_t; + +typedef enum { + USB_CDC_1_STOP_BITS = 0, + USB_CDC_1_5_STOP_BITS = 1, + USB_CDC_2_STOP_BITS = 2, +} usb_cdc_line_coding_bCharFormat_t; + +typedef enum { + USB_CDC_NO_PARITY = 0, + USB_CDC_ODD_PARITY = 1, + USB_CDC_EVEN_PARITY = 2, + USB_CDC_MARK_PARITY = 3, + USB_CDC_SPACE_PARITY = 4, +} usb_cdc_line_coding_bParityType_t; + +/* usb_rbuf_t is used internally for the RX/TX buffering. */ +typedef struct { + size_t cap; + volatile size_t read; + volatile size_t write; + uint8_t *buf; +} usb_rbuf_t; + +// Maximal length of packets on IN CMD EP +#define USB_CDC_MAX_CMD_PACKET_LEN 0x08 + +/* usb_vcp_state_t encapsulates all state used by enabled VCP interface. It + * needs to be completely initialized in usb_vcp_add and reset in + * usb_vcp_class_init. See usb_vcp_info_t for details of the configuration + * fields. */ +typedef struct { + USBD_HandleTypeDef *dev_handle; + const usb_vcp_descriptor_block_t *desc_block; + usb_rbuf_t rx_ring; + usb_rbuf_t tx_ring; + uint8_t *rx_packet; + uint8_t *tx_packet; + void (*rx_intr_fn)(void); + uint8_t rx_intr_byte; + uint8_t ep_cmd; + uint8_t ep_in; + uint8_t ep_out; + uint8_t max_packet_len; + uint8_t ep_in_is_idle; // Set to 1 after IN endpoint gets idle + uint8_t cmd_buffer[USB_CDC_MAX_CMD_PACKET_LEN]; +} usb_vcp_state_t; + +_Static_assert(sizeof(usb_vcp_state_t) <= USBD_CLASS_STATE_MAX_SIZE); + +// interface dispatch functions +static const USBD_ClassTypeDef usb_vcp_class; +static const USBD_ClassTypeDef usb_vcp_data_class; + +#define usb_get_vcp_state(iface_num) \ + ((usb_vcp_state_t *)usb_get_iface_state(iface_num, &usb_vcp_class)) + /* usb_vcp_add adds and configures new USB VCP interface according to * configuration options passed in `info`. */ secbool usb_vcp_add(const usb_vcp_info_t *info) { - usb_iface_t *iface = usb_get_iface(info->iface_num); + usb_vcp_state_t *state = usb_get_iface_state(info->iface_num, NULL); - if (iface == NULL) { + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_DISABLED) { - return secfalse; // Interface is already enabled - } usb_vcp_descriptor_block_t *d = - usb_desc_alloc_iface(sizeof(usb_vcp_descriptor_block_t)); + usb_alloc_class_descriptors(sizeof(usb_vcp_descriptor_block_t)); if (d == NULL) { return secfalse; // Not enough space in the configuration descriptor } - if ((info->ep_cmd & USB_EP_DIR_MASK) != USB_EP_DIR_IN) { - return secfalse; // IN CMD EP is invalid - } - if ((info->ep_in & USB_EP_DIR_MASK) != USB_EP_DIR_IN) { - return secfalse; // IN EP is invalid - } - if ((info->ep_out & USB_EP_DIR_MASK) != USB_EP_DIR_OUT) { - return secfalse; // OUT EP is invalid - } if ((info->rx_buffer_len == 0) || (info->rx_buffer_len & (info->rx_buffer_len - 1)) != 0) { return secfalse; // Capacity needs to be a power of 2 @@ -98,6 +200,15 @@ secbool usb_vcp_add(const usb_vcp_info_t *info) { if (info->tx_packet == NULL) { return secfalse; } + if (info->ep_in >= USBD_MAX_NUM_INTERFACES) { + return secfalse; + } + if (info->ep_out >= USBD_MAX_NUM_INTERFACES) { + return secfalse; + } + if (info->ep_cmd >= USBD_MAX_NUM_INTERFACES) { + return secfalse; + } // Interface association descriptor d->assoc.bLength = sizeof(usb_interface_assoc_descriptor_t); @@ -155,7 +266,7 @@ secbool usb_vcp_add(const usb_vcp_info_t *info) { // IN CMD endpoint (control) d->ep_cmd.bLength = sizeof(usb_endpoint_descriptor_t); d->ep_cmd.bDescriptorType = USB_DESC_TYPE_ENDPOINT; - d->ep_cmd.bEndpointAddress = info->ep_cmd; + d->ep_cmd.bEndpointAddress = info->ep_cmd | USB_EP_DIR_IN; d->ep_cmd.bmAttributes = USBD_EP_TYPE_INTR; d->ep_cmd.wMaxPacketSize = USB_CDC_MAX_CMD_PACKET_LEN; d->ep_cmd.bInterval = info->polling_interval; @@ -174,7 +285,7 @@ secbool usb_vcp_add(const usb_vcp_info_t *info) { // OUT endpoint (receiving) d->ep_out.bLength = sizeof(usb_endpoint_descriptor_t); d->ep_out.bDescriptorType = USB_DESC_TYPE_ENDPOINT; - d->ep_out.bEndpointAddress = info->ep_out; + d->ep_out.bEndpointAddress = info->ep_out | USB_EP_DIR_OUT; d->ep_out.bmAttributes = USBD_EP_TYPE_BULK; d->ep_out.wMaxPacketSize = info->max_packet_len; d->ep_out.bInterval = 0; @@ -182,43 +293,43 @@ secbool usb_vcp_add(const usb_vcp_info_t *info) { // IN endpoint (sending) d->ep_in.bLength = sizeof(usb_endpoint_descriptor_t); d->ep_in.bDescriptorType = USB_DESC_TYPE_ENDPOINT; - d->ep_in.bEndpointAddress = info->ep_in; + d->ep_in.bEndpointAddress = info->ep_in | USB_EP_DIR_IN; d->ep_in.bmAttributes = USBD_EP_TYPE_BULK; d->ep_in.wMaxPacketSize = info->max_packet_len; d->ep_in.bInterval = 0; - // Config descriptor - usb_desc_add_iface(sizeof(usb_vcp_descriptor_block_t)); - usb_config_desc - ->bNumInterfaces++; // usb_vcp_descriptor_block_t contains 2 interfaces - // Interface state + state->dev_handle = usb_get_dev_handle(); + state->desc_block = d; - iface->type = USB_IFACE_TYPE_VCP; - iface->vcp.desc_block = d; + state->rx_ring.buf = info->rx_buffer; + state->rx_ring.cap = info->rx_buffer_len; + state->rx_ring.read = 0; + state->rx_ring.write = 0; - iface->vcp.rx_ring.buf = info->rx_buffer; - iface->vcp.rx_ring.cap = info->rx_buffer_len; - iface->vcp.rx_ring.read = 0; - iface->vcp.rx_ring.write = 0; + state->tx_ring.buf = info->tx_buffer; + state->tx_ring.cap = info->tx_buffer_len; + state->tx_ring.read = 0; + state->tx_ring.write = 0; - iface->vcp.tx_ring.buf = info->tx_buffer; - iface->vcp.tx_ring.cap = info->tx_buffer_len; - iface->vcp.tx_ring.read = 0; - iface->vcp.tx_ring.write = 0; + state->rx_packet = info->rx_packet; + state->tx_packet = info->tx_packet; - iface->vcp.rx_packet = info->rx_packet; - iface->vcp.tx_packet = info->tx_packet; + state->rx_intr_fn = info->rx_intr_fn; + state->rx_intr_byte = info->rx_intr_byte; - iface->vcp.rx_intr_fn = info->rx_intr_fn; - iface->vcp.rx_intr_byte = info->rx_intr_byte; + state->ep_cmd = info->ep_cmd | USB_EP_DIR_IN; + state->ep_in = info->ep_in | USB_EP_DIR_IN; + state->ep_out = info->ep_out | USB_EP_DIR_OUT; + state->max_packet_len = info->max_packet_len; - iface->vcp.ep_cmd = info->ep_cmd; - iface->vcp.ep_in = info->ep_in; - iface->vcp.ep_out = info->ep_out; - iface->vcp.max_packet_len = info->max_packet_len; + state->ep_in_is_idle = 1; - iface->vcp.ep_in_is_idle = 1; + usb_set_iface_class(info->iface_num, &usb_vcp_class); + + // This just make the data interface slot occupied so it can't be reused + // by another class driver. Data interface dispatch functiona are not used. + usb_set_iface_class(info->data_iface_num, &usb_vcp_data_class); return sectrue; } @@ -230,42 +341,32 @@ static inline int ring_empty(usb_rbuf_t *b) { return ring_length(b) == 0; } static inline int ring_full(usb_rbuf_t *b) { return ring_length(b) == b->cap; } secbool usb_vcp_can_read(uint8_t iface_num) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + usb_vcp_state_t *state = usb_get_vcp_state(iface_num); + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_VCP) { - return secfalse; // Invalid interface type - } - if (ring_empty(&iface->vcp.rx_ring)) { + if (ring_empty(&state->rx_ring)) { return secfalse; // Nothing in the rx buffer } return sectrue; } secbool usb_vcp_can_write(uint8_t iface_num) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + usb_vcp_state_t *state = usb_get_vcp_state(iface_num); + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_VCP) { - return secfalse; // Invalid interface type - } - if (ring_full(&iface->vcp.tx_ring)) { + if (ring_full(&state->tx_ring)) { return secfalse; // Tx ring buffer is full } return sectrue; } int usb_vcp_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + usb_vcp_state_t *state = usb_get_vcp_state(iface_num); + if (state == NULL) { return -1; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_VCP) { - return -2; // Invalid interface type - } - usb_vcp_state_t *state = &iface->vcp; // Read from the rx ring buffer usb_rbuf_t *b = &state->rx_ring; @@ -279,14 +380,10 @@ int usb_vcp_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { } int usb_vcp_write(uint8_t iface_num, const uint8_t *buf, uint32_t len) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + usb_vcp_state_t *state = usb_get_vcp_state(iface_num); + if (state == NULL) { return -1; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_VCP) { - return -2; // Invalid interface type - } - usb_vcp_state_t *state = &iface->vcp; // Write into the tx ring buffer usb_rbuf_t *b = &state->tx_ring; @@ -330,8 +427,9 @@ int usb_vcp_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, return i; } -static void usb_vcp_class_init(USBD_HandleTypeDef *dev, usb_vcp_state_t *state, - uint8_t cfg_idx) { +static uint8_t usb_vcp_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { + usb_vcp_state_t *state = (usb_vcp_state_t *)dev->pUserData; + // Open endpoints USBD_LL_OpenEP(dev, state->ep_in, USBD_EP_TYPE_BULK, state->max_packet_len); USBD_LL_OpenEP(dev, state->ep_out, USBD_EP_TYPE_BULK, state->max_packet_len); @@ -348,10 +446,13 @@ static void usb_vcp_class_init(USBD_HandleTypeDef *dev, usb_vcp_state_t *state, // Prepare the OUT EP to receive next packet USBD_LL_PrepareReceive(dev, state->ep_out, state->rx_packet, state->max_packet_len); + + return USBD_OK; } -static void usb_vcp_class_deinit(USBD_HandleTypeDef *dev, - usb_vcp_state_t *state, uint8_t cfg_idx) { +static uint8_t usb_vcp_class_deinit(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { + usb_vcp_state_t *state = (usb_vcp_state_t *)dev->pUserData; + // Flush endpoints USBD_LL_FlushEP(dev, state->ep_in); USBD_LL_FlushEP(dev, state->ep_out); @@ -360,10 +461,14 @@ static void usb_vcp_class_deinit(USBD_HandleTypeDef *dev, USBD_LL_CloseEP(dev, state->ep_in); USBD_LL_CloseEP(dev, state->ep_out); USBD_LL_CloseEP(dev, state->ep_cmd); + + return USBD_OK; } -static int usb_vcp_class_setup(USBD_HandleTypeDef *dev, usb_vcp_state_t *state, - USBD_SetupReqTypedef *req) { +static uint8_t usb_vcp_class_setup(USBD_HandleTypeDef *dev, + USBD_SetupReqTypedef *req) { + usb_vcp_state_t *state = (usb_vcp_state_t *)dev->pUserData; + static const usb_cdc_line_coding_t line_coding = { .dwDTERate = 115200, .bCharFormat = USB_CDC_1_STOP_BITS, @@ -393,15 +498,19 @@ static int usb_vcp_class_setup(USBD_HandleTypeDef *dev, usb_vcp_state_t *state, return USBD_OK; } -static void usb_vcp_class_data_in(USBD_HandleTypeDef *dev, - usb_vcp_state_t *state, uint8_t ep_num) { +static uint8_t usb_vcp_class_data_in(USBD_HandleTypeDef *dev, uint8_t ep_num) { + usb_vcp_state_t *state = (usb_vcp_state_t *)dev->pUserData; + if ((ep_num | USB_EP_DIR_IN) == state->ep_in) { state->ep_in_is_idle = 1; } + + return USBD_OK; } -static void usb_vcp_class_data_out(USBD_HandleTypeDef *dev, - usb_vcp_state_t *state, uint8_t ep_num) { +static uint8_t usb_vcp_class_data_out(USBD_HandleTypeDef *dev, uint8_t ep_num) { + usb_vcp_state_t *state = (usb_vcp_state_t *)dev->pUserData; + if (ep_num == state->ep_out) { uint32_t len = USBD_LL_GetRxDataSize(dev, ep_num); @@ -425,11 +534,15 @@ static void usb_vcp_class_data_out(USBD_HandleTypeDef *dev, USBD_LL_PrepareReceive(dev, state->ep_out, state->rx_packet, state->max_packet_len); } + + return USBD_OK; } -static void usb_vcp_class_sof(USBD_HandleTypeDef *dev, usb_vcp_state_t *state) { +static uint8_t usb_vcp_class_sof(USBD_HandleTypeDef *dev) { + usb_vcp_state_t *state = (usb_vcp_state_t *)dev->pUserData; + if (!state->ep_in_is_idle) { - return; + return USBD_OK; } // Read from the tx ring buffer @@ -447,6 +560,28 @@ static void usb_vcp_class_sof(USBD_HandleTypeDef *dev, usb_vcp_state_t *state) { if (i > 0) { state->ep_in_is_idle = 0; - USBD_LL_Transmit(&usb_dev_handle, state->ep_in, buf, (uint16_t)i); + USBD_LL_Transmit(dev, state->ep_in, buf, (uint16_t)i); } + + return USBD_OK; } + +static const USBD_ClassTypeDef usb_vcp_class = { + .Init = usb_vcp_class_init, + .DeInit = usb_vcp_class_deinit, + .Setup = usb_vcp_class_setup, + .EP0_TxSent = NULL, + .EP0_RxReady = NULL, + .DataIn = usb_vcp_class_data_in, + .DataOut = usb_vcp_class_data_out, + .SOF = usb_vcp_class_sof, + .IsoINIncomplete = NULL, + .IsoOUTIncomplete = NULL, + .GetHSConfigDescriptor = NULL, + .GetFSConfigDescriptor = NULL, + .GetOtherSpeedConfigDescriptor = NULL, + .GetDeviceQualifierDescriptor = NULL, + .GetUsrStrDescriptor = NULL, +}; + +static const USBD_ClassTypeDef usb_vcp_data_class = {}; diff --git a/core/embed/trezorhal/stm32f4/usb/usb_webusb-impl.h b/core/embed/trezorhal/stm32f4/usb/usbd_class_webusb.c similarity index 58% rename from core/embed/trezorhal/stm32f4/usb/usb_webusb-impl.h rename to core/embed/trezorhal/stm32f4/usb/usbd_class_webusb.c index 3ffe4589e8..55fc5448c5 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb_webusb-impl.h +++ b/core/embed/trezorhal/stm32f4/usb/usbd_class_webusb.c @@ -17,34 +17,71 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "common.h" +#include "random_delays.h" + +#include "usbd_core.h" +#include "usbd_internal.h" + +#include "usb_webusb.h" + #define USB_CLASS_WEBUSB 0xFF +typedef struct __attribute__((packed)) { + usb_interface_descriptor_t iface; + usb_endpoint_descriptor_t ep_in; + usb_endpoint_descriptor_t ep_out; +} usb_webusb_descriptor_block_t; + +/* usb_webusb_state_t encapsulates all state used by enabled WebUSB interface. + * It needs to be completely initialized in usb_webusb_add and reset in + * usb_webusb_class_init. See usb_webusb_info_t for details of the + * configuration fields. */ +typedef struct { + USBD_HandleTypeDef *dev_handle; + const usb_webusb_descriptor_block_t *desc_block; + uint8_t *rx_buffer; + uint8_t ep_in; + uint8_t ep_out; + uint8_t max_packet_len; + + uint8_t alt_setting; // For SET_INTERFACE/GET_INTERFACE setup reqs + uint8_t last_read_len; // Length of data read into rx_buffer + uint8_t ep_in_is_idle; // Set to 1 after IN endpoint gets idle +} usb_webusb_state_t; + +_Static_assert(sizeof(usb_webusb_state_t) <= USBD_CLASS_STATE_MAX_SIZE); + +// interface dispatch functions +static const USBD_ClassTypeDef usb_webusb_class; + +#define usb_get_webusb_state(iface_num) \ + ((usb_webusb_state_t *)usb_get_iface_state(iface_num, &usb_webusb_class)) + /* usb_webusb_add adds and configures new USB WebUSB interface according to * configuration options passed in `info`. */ secbool usb_webusb_add(const usb_webusb_info_t *info) { - usb_iface_t *iface = usb_get_iface(info->iface_num); + usb_webusb_state_t *state = + (usb_webusb_state_t *)usb_get_iface_state(info->iface_num, NULL); - if (iface == NULL) { + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_DISABLED) { - return secfalse; // Interface is already enabled - } usb_webusb_descriptor_block_t *d = - usb_desc_alloc_iface(sizeof(usb_webusb_descriptor_block_t)); + usb_alloc_class_descriptors(sizeof(usb_webusb_descriptor_block_t)); if (d == NULL) { return secfalse; // Not enough space in the configuration descriptor } - if ((info->ep_in & USB_EP_DIR_MASK) != USB_EP_DIR_IN) { - return secfalse; // IN EP is invalid + if (info->rx_buffer == NULL) { + return secfalse; } - if ((info->ep_out & USB_EP_DIR_MASK) != USB_EP_DIR_OUT) { - return secfalse; // OUT EP is invalid + if (info->ep_in >= USBD_MAX_NUM_INTERFACES) { + return secfalse; } - if (info->rx_buffer == NULL) { + if (info->ep_out >= USBD_MAX_NUM_INTERFACES) { return secfalse; } @@ -62,7 +99,7 @@ secbool usb_webusb_add(const usb_webusb_info_t *info) { // IN endpoint (sending) d->ep_in.bLength = sizeof(usb_endpoint_descriptor_t); d->ep_in.bDescriptorType = USB_DESC_TYPE_ENDPOINT; - d->ep_in.bEndpointAddress = info->ep_in; + d->ep_in.bEndpointAddress = info->ep_in | USB_EP_DIR_IN; d->ep_in.bmAttributes = USBD_EP_TYPE_INTR; d->ep_in.wMaxPacketSize = info->max_packet_len; d->ep_in.bInterval = info->polling_interval; @@ -70,71 +107,60 @@ secbool usb_webusb_add(const usb_webusb_info_t *info) { // OUT endpoint (receiving) d->ep_out.bLength = sizeof(usb_endpoint_descriptor_t); d->ep_out.bDescriptorType = USB_DESC_TYPE_ENDPOINT; - d->ep_out.bEndpointAddress = info->ep_out; + d->ep_out.bEndpointAddress = info->ep_out | USB_EP_DIR_OUT; d->ep_out.bmAttributes = USBD_EP_TYPE_INTR; d->ep_out.wMaxPacketSize = info->max_packet_len; d->ep_out.bInterval = info->polling_interval; - // Config descriptor - usb_desc_add_iface(sizeof(usb_webusb_descriptor_block_t)); - // Interface state - iface->type = USB_IFACE_TYPE_WEBUSB; - iface->webusb.desc_block = d; - iface->webusb.rx_buffer = info->rx_buffer; - iface->webusb.ep_in = info->ep_in; - iface->webusb.ep_out = info->ep_out; - iface->webusb.max_packet_len = info->max_packet_len; - iface->webusb.alt_setting = 0; - iface->webusb.last_read_len = 0; - iface->webusb.ep_in_is_idle = 1; + state->dev_handle = usb_get_dev_handle(); + state->desc_block = d; + state->rx_buffer = info->rx_buffer; + state->ep_in = info->ep_in | USB_EP_DIR_IN; + state->ep_out = info->ep_out | USB_EP_DIR_OUT; + state->max_packet_len = info->max_packet_len; + state->alt_setting = 0; + state->last_read_len = 0; + state->ep_in_is_idle = 1; + + usb_set_iface_class(info->iface_num, &usb_webusb_class); return sectrue; } secbool usb_webusb_can_read(uint8_t iface_num) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + usb_webusb_state_t *state = usb_get_webusb_state(iface_num); + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_WEBUSB) { - return secfalse; // Invalid interface type - } - if (iface->webusb.last_read_len == 0) { + if (state->last_read_len == 0) { return secfalse; // Nothing in the receiving buffer } - if (usb_dev_handle.dev_state != USBD_STATE_CONFIGURED) { + if (state->dev_handle->dev_state != USBD_STATE_CONFIGURED) { return secfalse; // Device is not configured } return sectrue; } secbool usb_webusb_can_write(uint8_t iface_num) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + usb_webusb_state_t *state = usb_get_webusb_state(iface_num); + if (state == NULL) { return secfalse; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_WEBUSB) { - return secfalse; // Invalid interface type - } - if (iface->webusb.ep_in_is_idle == 0) { + if (state->ep_in_is_idle == 0) { return secfalse; // Last transmission is not over yet } - if (usb_dev_handle.dev_state != USBD_STATE_CONFIGURED) { + if (state->dev_handle->dev_state != USBD_STATE_CONFIGURED) { return secfalse; // Device is not configured } return sectrue; } int usb_webusb_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + volatile usb_webusb_state_t *state = usb_get_webusb_state(iface_num); + if (state == NULL) { return -1; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_WEBUSB) { - return -2; // Invalid interface type - } - volatile usb_webusb_state_t *state = &iface->webusb; // Copy maximum possible amount of data uint32_t last_read_len = state->last_read_len; @@ -147,24 +173,21 @@ int usb_webusb_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { state->last_read_len = 0; // Prepare the OUT EP to receive next packet - USBD_LL_PrepareReceive(&usb_dev_handle, state->ep_out, state->rx_buffer, + USBD_LL_PrepareReceive(state->dev_handle, state->ep_out, state->rx_buffer, state->max_packet_len); return last_read_len; } int usb_webusb_write(uint8_t iface_num, const uint8_t *buf, uint32_t len) { - usb_iface_t *iface = usb_get_iface(iface_num); - if (iface == NULL) { + volatile usb_webusb_state_t *state = usb_get_webusb_state(iface_num); + if (state == NULL) { return -1; // Invalid interface number } - if (iface->type != USB_IFACE_TYPE_WEBUSB) { - return -2; // Invalid interface type - } - volatile usb_webusb_state_t *state = &iface->webusb; state->ep_in_is_idle = 0; - USBD_LL_Transmit(&usb_dev_handle, state->ep_in, UNCONST(buf), (uint16_t)len); + USBD_LL_Transmit(state->dev_handle, state->ep_in, UNCONST(buf), + (uint16_t)len); return len; } @@ -209,8 +232,9 @@ int usb_webusb_write_blocking(uint8_t iface_num, const uint8_t *buf, return usb_webusb_write(iface_num, buf, len); } -static void usb_webusb_class_init(USBD_HandleTypeDef *dev, - usb_webusb_state_t *state, uint8_t cfg_idx) { +static uint8_t usb_webusb_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { + usb_webusb_state_t *state = (usb_webusb_state_t *)dev->pUserData; + // Open endpoints USBD_LL_OpenEP(dev, state->ep_in, USBD_EP_TYPE_INTR, state->max_packet_len); USBD_LL_OpenEP(dev, state->ep_out, USBD_EP_TYPE_INTR, state->max_packet_len); @@ -223,22 +247,30 @@ static void usb_webusb_class_init(USBD_HandleTypeDef *dev, // Prepare the OUT EP to receive next packet USBD_LL_PrepareReceive(dev, state->ep_out, state->rx_buffer, state->max_packet_len); + + return USBD_OK; } -static void usb_webusb_class_deinit(USBD_HandleTypeDef *dev, - usb_webusb_state_t *state, - uint8_t cfg_idx) { +static uint8_t usb_webusb_class_deinit(USBD_HandleTypeDef *dev, + uint8_t cfg_idx) { + usb_webusb_state_t *state = (usb_webusb_state_t *)dev->pUserData; + // Flush endpoints USBD_LL_FlushEP(dev, state->ep_in); USBD_LL_FlushEP(dev, state->ep_out); // Close endpoints USBD_LL_CloseEP(dev, state->ep_in); USBD_LL_CloseEP(dev, state->ep_out); + + return USBD_OK; } -static int usb_webusb_class_setup(USBD_HandleTypeDef *dev, - usb_webusb_state_t *state, - USBD_SetupReqTypedef *req) { +static uint8_t usb_webusb_class_setup(USBD_HandleTypeDef *dev, + USBD_SetupReqTypedef *req) { + usb_webusb_state_t *state = (usb_webusb_state_t *)dev->pUserData; + + wait_random(); + if ((req->bmRequest & USB_REQ_TYPE_MASK) != USB_REQ_TYPE_STANDARD) { return USBD_OK; } @@ -259,24 +291,50 @@ static int usb_webusb_class_setup(USBD_HandleTypeDef *dev, USBD_CtlError(dev, req); return USBD_FAIL; } + + return USBD_OK; } -static void usb_webusb_class_data_in(USBD_HandleTypeDef *dev, - usb_webusb_state_t *state, - uint8_t ep_num) { +static uint8_t usb_webusb_class_data_in(USBD_HandleTypeDef *dev, + uint8_t ep_num) { + usb_webusb_state_t *state = (usb_webusb_state_t *)dev->pUserData; + if ((ep_num | USB_EP_DIR_IN) == state->ep_in) { wait_random(); state->ep_in_is_idle = 1; } + + return USBD_OK; } -static void usb_webusb_class_data_out(USBD_HandleTypeDef *dev, - usb_webusb_state_t *state, - uint8_t ep_num) { +static uint8_t usb_webusb_class_data_out(USBD_HandleTypeDef *dev, + uint8_t ep_num) { + usb_webusb_state_t *state = (usb_webusb_state_t *)dev->pUserData; + if (ep_num == state->ep_out) { wait_random(); // Save the report length to indicate we have read something, but don't // schedule next reading until user reads this one state->last_read_len = USBD_LL_GetRxDataSize(dev, ep_num); } + + return USBD_OK; } + +static const USBD_ClassTypeDef usb_webusb_class = { + .Init = usb_webusb_class_init, + .DeInit = usb_webusb_class_deinit, + .Setup = usb_webusb_class_setup, + .EP0_TxSent = NULL, + .EP0_RxReady = NULL, + .DataIn = usb_webusb_class_data_in, + .DataOut = usb_webusb_class_data_out, + .SOF = NULL, + .IsoINIncomplete = NULL, + .IsoOUTIncomplete = NULL, + .GetHSConfigDescriptor = NULL, + .GetFSConfigDescriptor = NULL, + .GetOtherSpeedConfigDescriptor = NULL, + .GetDeviceQualifierDescriptor = NULL, + .GetUsrStrDescriptor = NULL, +}; diff --git a/core/embed/trezorhal/stm32f4/usb/usbd_def.h b/core/embed/trezorhal/stm32f4/usb/usbd_def.h index 6f20975a95..82e9f08720 100644 --- a/core/embed/trezorhal/stm32f4/usb/usbd_def.h +++ b/core/embed/trezorhal/stm32f4/usb/usbd_def.h @@ -272,6 +272,8 @@ typedef struct _USBD_HandleTypeDef #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif +#define UNCONST(X) ((uint8_t *)(X)) + #if defined ( __GNUC__ ) #ifndef __weak #define __weak __attribute__((weak)) diff --git a/core/embed/trezorhal/stm32f4/usb/usbd_internal.h b/core/embed/trezorhal/stm32f4/usb/usbd_internal.h new file mode 100644 index 0000000000..9becc8dcc5 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/usb/usbd_internal.h @@ -0,0 +1,131 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_USBD_INTERNAL_H +#define TREZORHAL_USBD_INTERNAL_H + +#include <stdint.h> + +#define USB_EP_DIR_MASK 0x80 +#define USB_EP_DIR_OUT 0x00 +#define USB_EP_DIR_IN 0x80 + +#define USB_WEBUSB_VENDOR_CODE 0x01 // arbitrary +#define USB_WEBUSB_LANDING_PAGE 0x01 // arbitrary + +typedef struct __attribute__((packed)) { + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t bcdUSB; + uint8_t bDeviceClass; + uint8_t bDeviceSubClass; + uint8_t bDeviceProtocol; + uint8_t bMaxPacketSize0; + uint16_t idVendor; + uint16_t idProduct; + uint16_t bcdDevice; + uint8_t iManufacturer; + uint8_t iProduct; + uint8_t iSerialNumber; + uint8_t bNumConfigurations; +} usb_device_descriptor_t; + +typedef struct __attribute__((packed)) { + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t wData; +} usb_langid_descriptor_t; + +typedef enum { + USB_LANGID_ENGLISH_US = 0x409, +} usb_language_id_t; + +typedef struct __attribute__((packed)) { + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t wTotalLength; + uint8_t bNumInterfaces; + uint8_t bConfigurationValue; + uint8_t iConfiguration; + uint8_t bmAttributes; + uint8_t bMaxPower; +} usb_config_descriptor_t; + +typedef struct __attribute__((packed)) { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bInterfaceNumber; + uint8_t bAlternateSetting; + uint8_t bNumEndpoints; + uint8_t bInterfaceClass; + uint8_t bInterfaceSubClass; + uint8_t bInterfaceProtocol; + uint8_t iInterface; +} usb_interface_descriptor_t; + +typedef struct __attribute__((packed)) { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bFirstInterface; + uint8_t bInterfaceCount; + uint8_t bFunctionClass; + uint8_t bFunctionSubClass; + uint8_t bFunctionProtocol; + uint8_t iFunction; +} usb_interface_assoc_descriptor_t; + +typedef struct __attribute__((packed)) { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bEndpointAddress; + uint8_t bmAttributes; + uint16_t wMaxPacketSize; + uint8_t bInterval; +} usb_endpoint_descriptor_t; + +// Number of reserved bytes for the state of each class. +#define USBD_CLASS_STATE_MAX_SIZE 128 + +// Returns the pointer to class state structure reserved for the +// specified interface number. +// +// The function checks if the interface number is valid and the type +// matches and returns NULL if not. If the `class` is NULL, the function +// returns the valid pointer only if the slot is empty. +// +// The returned array has `USBD_CLASS_STATE_MAX_SIZE` bytes +// and is aligned to 8-byte boundary. +void *usb_get_iface_state(uint8_t iface_num, const USBD_ClassTypeDef *class); + +// Assigns the concrete class to the slot `iface_num`. +void usb_set_iface_class(uint8_t iface_num, const USBD_ClassTypeDef *class); + +// Allocates the buffer for the class driver descriptors +// (interface, endpoint, ...) inside the USB device structure. +// +// The callee must fill the whole buffer with the descriptors. +// +// The function checks if the remaining space is enough and +// returns NULL if not. +void *usb_alloc_class_descriptors(size_t desc_len); + +// Returns the global handle to the USB device. +USBD_HandleTypeDef *usb_get_dev_handle(void); + +#endif // TREZORHAL_USBD_INTERNAL_H diff --git a/core/embed/trezorhal/unix/usb.c b/core/embed/trezorhal/unix/usb.c index 63fb1c6987..0f628e94f7 100644 --- a/core/embed/trezorhal/unix/usb.c +++ b/core/embed/trezorhal/unix/usb.c @@ -38,6 +38,13 @@ #define USBD_MAX_NUM_INTERFACES 8 +typedef enum { + USB_IFACE_TYPE_DISABLED = 0, + USB_IFACE_TYPE_VCP = 1, + USB_IFACE_TYPE_HID = 2, + USB_IFACE_TYPE_WEBUSB = 3, +} usb_iface_type_t; + static struct { usb_iface_type_t type; uint16_t port; diff --git a/core/embed/trezorhal/usb.h b/core/embed/trezorhal/usb.h index b9b27a4de8..0922340e2b 100644 --- a/core/embed/trezorhal/usb.h +++ b/core/embed/trezorhal/usb.h @@ -23,86 +23,9 @@ #include <stdint.h> #include "secbool.h" -#define USB_EP_DIR_MASK 0x80 -#define USB_EP_DIR_OUT 0x00 -#define USB_EP_DIR_IN 0x80 - -typedef struct __attribute__((packed)) { - uint8_t bLength; - uint8_t bDescriptorType; - uint16_t bcdUSB; - uint8_t bDeviceClass; - uint8_t bDeviceSubClass; - uint8_t bDeviceProtocol; - uint8_t bMaxPacketSize0; - uint16_t idVendor; - uint16_t idProduct; - uint16_t bcdDevice; - uint8_t iManufacturer; - uint8_t iProduct; - uint8_t iSerialNumber; - uint8_t bNumConfigurations; -} usb_device_descriptor_t; - -typedef struct __attribute__((packed)) { - uint8_t bLength; - uint8_t bDescriptorType; - uint16_t wData; -} usb_langid_descriptor_t; - -typedef struct __attribute__((packed)) { - uint8_t bLength; - uint8_t bDescriptorType; - uint16_t wTotalLength; - uint8_t bNumInterfaces; - uint8_t bConfigurationValue; - uint8_t iConfiguration; - uint8_t bmAttributes; - uint8_t bMaxPower; -} usb_config_descriptor_t; - -typedef struct __attribute__((packed)) { - uint8_t bLength; - uint8_t bDescriptorType; - uint8_t bInterfaceNumber; - uint8_t bAlternateSetting; - uint8_t bNumEndpoints; - uint8_t bInterfaceClass; - uint8_t bInterfaceSubClass; - uint8_t bInterfaceProtocol; - uint8_t iInterface; -} usb_interface_descriptor_t; - -typedef struct __attribute__((packed)) { - uint8_t bLength; - uint8_t bDescriptorType; - uint8_t bFirstInterface; - uint8_t bInterfaceCount; - uint8_t bFunctionClass; - uint8_t bFunctionSubClass; - uint8_t bFunctionProtocol; - uint8_t iFunction; -} usb_interface_assoc_descriptor_t; - -typedef struct __attribute__((packed)) { - uint8_t bLength; - uint8_t bDescriptorType; - uint8_t bEndpointAddress; - uint8_t bmAttributes; - uint16_t wMaxPacketSize; - uint8_t bInterval; -} usb_endpoint_descriptor_t; - -typedef enum { - USB_LANGID_ENGLISH_US = 0x409, -} usb_language_id_t; - -typedef struct { - const char *manufacturer; - const char *product; - const char *serial_number; - const char *interface; -} usb_dev_string_table_t; +#include "usb_hid.h" +#include "usb_vcp.h" +#include "usb_webusb.h" typedef struct { uint8_t device_class; @@ -119,26 +42,6 @@ typedef struct { secbool usb21_landing; } usb_dev_info_t; -typedef enum { - USB_IFACE_TYPE_DISABLED = 0, - USB_IFACE_TYPE_VCP = 1, - USB_IFACE_TYPE_HID = 2, - USB_IFACE_TYPE_WEBUSB = 3, -} usb_iface_type_t; - -#include "usb_hid-defs.h" -#include "usb_vcp-defs.h" -#include "usb_webusb-defs.h" - -typedef struct { - union { - usb_hid_state_t hid; - usb_vcp_state_t vcp; - usb_webusb_state_t webusb; - }; - usb_iface_type_t type; -} usb_iface_t; - void usb_init(const usb_dev_info_t *dev_info); void usb_deinit(void); void usb_start(void); diff --git a/core/embed/trezorhal/usb_hid-defs.h b/core/embed/trezorhal/usb_hid.h similarity index 64% rename from core/embed/trezorhal/usb_hid-defs.h rename to core/embed/trezorhal/usb_hid.h index 9062d71eb1..54b99b05d8 100644 --- a/core/embed/trezorhal/usb_hid-defs.h +++ b/core/embed/trezorhal/usb_hid.h @@ -17,22 +17,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -typedef struct __attribute__((packed)) { - uint8_t bLength; - uint8_t bDescriptorType; - uint16_t bcdHID; - uint8_t bCountryCode; - uint8_t bNumDescriptors; - uint8_t bReportDescriptorType; - uint16_t wReportDescriptorLength; -} usb_hid_descriptor_t; +#ifndef TREZORHAL_USB_CLASS_HID_H +#define TREZORHAL_USB_CLASS_HID_H -typedef struct __attribute__((packed)) { - usb_interface_descriptor_t iface; - usb_hid_descriptor_t hid; - usb_endpoint_descriptor_t ep_in; - usb_endpoint_descriptor_t ep_out; -} usb_hid_descriptor_block_t; +#include <stdint.h> +#include "secbool.h" /* usb_hid_info_t contains all information for setting up a HID interface. All * passed pointers need to live at least until the interface is disabled @@ -54,26 +43,6 @@ typedef struct { uint8_t report_desc_len; // Length of report_desc } usb_hid_info_t; -/* usb_hid_state_t encapsulates all state used by enabled HID interface. It - * needs to be completely initialized in usb_hid_add and reset in - * usb_hid_class_init. See usb_hid_info_t for details of the configuration - * fields. */ -typedef struct { - const usb_hid_descriptor_block_t *desc_block; - const uint8_t *report_desc; - uint8_t *rx_buffer; - uint8_t ep_in; - uint8_t ep_out; - uint8_t max_packet_len; - uint8_t report_desc_len; - - uint8_t protocol; // For SET_PROTOCOL/GET_PROTOCOL setup reqs - uint8_t idle_rate; // For SET_IDLE/GET_IDLE setup reqs - uint8_t alt_setting; // For SET_INTERFACE/GET_INTERFACE setup reqs - uint8_t last_read_len; // Length of data read into rx_buffer - uint8_t ep_in_is_idle; // Set to 1 after IN endpoint gets idle -} usb_hid_state_t; - secbool __wur usb_hid_add(const usb_hid_info_t *hid_info); secbool __wur usb_hid_can_read(uint8_t iface_num); secbool __wur usb_hid_can_write(uint8_t iface_num); @@ -85,3 +54,5 @@ int __wur usb_hid_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, int timeout); int __wur usb_hid_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, int timeout); + +#endif // TREZORHAL_USB_CLASS_HID_H diff --git a/core/embed/trezorhal/usb_vcp-defs.h b/core/embed/trezorhal/usb_vcp.h similarity index 51% rename from core/embed/trezorhal/usb_vcp-defs.h rename to core/embed/trezorhal/usb_vcp.h index 849aed06f7..8759a11a5c 100644 --- a/core/embed/trezorhal/usb_vcp-defs.h +++ b/core/embed/trezorhal/usb_vcp.h @@ -17,73 +17,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include <stddef.h> - -typedef struct __attribute__((packed)) { - uint8_t bFunctionLength; - uint8_t bDescriptorType; - uint8_t bDescriptorSubtype; - uint16_t bcdCDC; -} usb_vcp_header_descriptor_t; - -typedef struct __attribute__((packed)) { - uint8_t bFunctionLength; - uint8_t bDescriptorType; - uint8_t bDescriptorSubtype; - uint8_t bmCapabilities; - uint8_t bDataInterface; -} usb_vcp_cm_descriptor_t; - -typedef struct __attribute__((packed)) { - uint8_t bFunctionLength; - uint8_t bDescriptorType; - uint8_t bDescriptorSubtype; - uint8_t bmCapabilities; -} usb_vcp_acm_descriptor_t; - -typedef struct __attribute__((packed)) { - uint8_t bFunctionLength; - uint8_t bDescriptorType; - uint8_t bDescriptorSubtype; - uint8_t bControlInterface; - uint8_t bSubordinateInterface0; -} usb_vcp_union_descriptor_t; - -typedef struct __attribute__((packed)) { - usb_interface_assoc_descriptor_t assoc; - usb_interface_descriptor_t iface_cdc; - usb_vcp_header_descriptor_t - fheader; // Class-Specific Descriptor Header Format - usb_vcp_cm_descriptor_t fcm; // Call Management Functional Descriptor - usb_vcp_acm_descriptor_t - facm; // Abstract Control Management Functional Descriptor - usb_vcp_union_descriptor_t funion; // Union Interface Functional Descriptor - usb_endpoint_descriptor_t ep_cmd; - usb_interface_descriptor_t iface_data; - usb_endpoint_descriptor_t ep_in; - usb_endpoint_descriptor_t ep_out; -} usb_vcp_descriptor_block_t; - -typedef struct __attribute__((packed)) { - uint32_t dwDTERate; - uint8_t bCharFormat; // usb_cdc_line_coding_bCharFormat_t - uint8_t bParityType; // usb_cdc_line_coding_bParityType_t - uint8_t bDataBits; -} usb_cdc_line_coding_t; - -typedef enum { - USB_CDC_1_STOP_BITS = 0, - USB_CDC_1_5_STOP_BITS = 1, - USB_CDC_2_STOP_BITS = 2, -} usb_cdc_line_coding_bCharFormat_t; +#ifndef TREZORHAL_USB_CLASS_VCP_H +#define TREZORHAL_USB_CLASS_VCP_H -typedef enum { - USB_CDC_NO_PARITY = 0, - USB_CDC_ODD_PARITY = 1, - USB_CDC_EVEN_PARITY = 2, - USB_CDC_MARK_PARITY = 3, - USB_CDC_SPACE_PARITY = 4, -} usb_cdc_line_coding_bParityType_t; +#include <stddef.h> +#include "secbool.h" /* usb_vcp_info_t contains all information for setting up a VCP interface. All * passed pointers need to live at least until the interface is disabled @@ -117,37 +55,6 @@ typedef struct { // rx_packet } usb_vcp_info_t; -/* usb_rbuf_t is used internally for the RX/TX buffering. */ -typedef struct { - size_t cap; - volatile size_t read; - volatile size_t write; - uint8_t *buf; -} usb_rbuf_t; - -// Maximal length of packets on IN CMD EP -#define USB_CDC_MAX_CMD_PACKET_LEN 0x08 - -/* usb_vcp_state_t encapsulates all state used by enabled VCP interface. It - * needs to be completely initialized in usb_vcp_add and reset in - * usb_vcp_class_init. See usb_vcp_info_t for details of the configuration - * fields. */ -typedef struct { - const usb_vcp_descriptor_block_t *desc_block; - usb_rbuf_t rx_ring; - usb_rbuf_t tx_ring; - uint8_t *rx_packet; - uint8_t *tx_packet; - void (*rx_intr_fn)(void); - uint8_t rx_intr_byte; - uint8_t ep_cmd; - uint8_t ep_in; - uint8_t ep_out; - uint8_t max_packet_len; - uint8_t ep_in_is_idle; // Set to 1 after IN endpoint gets idle - uint8_t cmd_buffer[USB_CDC_MAX_CMD_PACKET_LEN]; -} usb_vcp_state_t; - secbool __wur usb_vcp_add(const usb_vcp_info_t *vcp_info); secbool __wur usb_vcp_can_read(uint8_t iface_num); secbool __wur usb_vcp_can_write(uint8_t iface_num); @@ -158,3 +65,5 @@ int __wur usb_vcp_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, int timeout); int __wur usb_vcp_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, int timeout); + +#endif // TREZORHAL_USB_CLASS_VCP_H diff --git a/core/embed/trezorhal/usb_webusb-defs.h b/core/embed/trezorhal/usb_webusb.h similarity index 70% rename from core/embed/trezorhal/usb_webusb-defs.h rename to core/embed/trezorhal/usb_webusb.h index aa475bf365..216c3d6b57 100644 --- a/core/embed/trezorhal/usb_webusb-defs.h +++ b/core/embed/trezorhal/usb_webusb.h @@ -17,14 +17,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#define USB_WEBUSB_VENDOR_CODE 0x01 // arbitrary -#define USB_WEBUSB_LANDING_PAGE 0x01 // arbitrary +#ifndef TREZORHAL_USB_CLASS_WEBUSB_H +#define TREZORHAL_USB_CLASS_WEBUSB_H -typedef struct __attribute__((packed)) { - usb_interface_descriptor_t iface; - usb_endpoint_descriptor_t ep_in; - usb_endpoint_descriptor_t ep_out; -} usb_webusb_descriptor_block_t; +#include "secbool.h" /* usb_webusb_info_t contains all information for setting up a WebUSB interface. * All passed pointers need to live at least until the interface is disabled @@ -44,22 +40,6 @@ typedef struct { uint8_t max_packet_len; // Length of the biggest report and of rx_buffer } usb_webusb_info_t; -/* usb_webusb_state_t encapsulates all state used by enabled WebUSB interface. - * It needs to be completely initialized in usb_webusb_add and reset in - * usb_webusb_class_init. See usb_webusb_info_t for details of the - * configuration fields. */ -typedef struct { - const usb_webusb_descriptor_block_t *desc_block; - uint8_t *rx_buffer; - uint8_t ep_in; - uint8_t ep_out; - uint8_t max_packet_len; - - uint8_t alt_setting; // For SET_INTERFACE/GET_INTERFACE setup reqs - uint8_t last_read_len; // Length of data read into rx_buffer - uint8_t ep_in_is_idle; // Set to 1 after IN endpoint gets idle -} usb_webusb_state_t; - secbool __wur usb_webusb_add(const usb_webusb_info_t *webusb_info); secbool __wur usb_webusb_can_read(uint8_t iface_num); secbool __wur usb_webusb_can_write(uint8_t iface_num); @@ -71,3 +51,5 @@ int __wur usb_webusb_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, int timeout); int __wur usb_webusb_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, int timeout); + +#endif // TREZORHAL_USB_CLASS_WEBUSB_H diff --git a/core/site_scons/models/D001/discovery.py b/core/site_scons/models/D001/discovery.py index 3dd0d2babb..c8e18fbe3a 100644 --- a/core/site_scons/models/D001/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -76,11 +76,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", + "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index 42cd6d4e12..94e6fc7598 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -82,11 +82,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb/usb.c", + "embed/trezorhal/stm32u5/usb/usbd_class_hid.c", + "embed/trezorhal/stm32u5/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32u5/usb/usbd_class_webusb.c", "embed/trezorhal/stm32u5/usb/usbd_conf.c", "embed/trezorhal/stm32u5/usb/usbd_core.c", "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", + "embed/trezorhal/stm32u5/usb/usbd.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T1B1/trezor_1.py b/core/site_scons/models/T1B1/trezor_1.py index a1a4da0a1d..df938dfd9d 100644 --- a/core/site_scons/models/T1B1/trezor_1.py +++ b/core/site_scons/models/T1B1/trezor_1.py @@ -42,11 +42,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", + "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v10.py b/core/site_scons/models/T2B1/trezor_r_v10.py index db7e2365c3..7eb33ef442 100644 --- a/core/site_scons/models/T2B1/trezor_r_v10.py +++ b/core/site_scons/models/T2B1/trezor_r_v10.py @@ -65,11 +65,14 @@ def configure( ] if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", + "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v3.py b/core/site_scons/models/T2B1/trezor_r_v3.py index 9a29a06176..c7889b8f8e 100644 --- a/core/site_scons/models/T2B1/trezor_r_v3.py +++ b/core/site_scons/models/T2B1/trezor_r_v3.py @@ -62,11 +62,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", + "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v4.py b/core/site_scons/models/T2B1/trezor_r_v4.py index c11de45252..1d55473c35 100644 --- a/core/site_scons/models/T2B1/trezor_r_v4.py +++ b/core/site_scons/models/T2B1/trezor_r_v4.py @@ -58,11 +58,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", + "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v6.py b/core/site_scons/models/T2B1/trezor_r_v6.py index 790927fb41..ecac28d081 100644 --- a/core/site_scons/models/T2B1/trezor_r_v6.py +++ b/core/site_scons/models/T2B1/trezor_r_v6.py @@ -58,11 +58,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", + "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2T1/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py index 78b9a7a32e..6ad7905850 100644 --- a/core/site_scons/models/T2T1/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -100,11 +100,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usb.c", + "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", + "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", + "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index 7e43b8171a..61d13baebc 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -100,11 +100,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb/usb.c", + "embed/trezorhal/stm32u5/usb/usbd_class_hid.c", + "embed/trezorhal/stm32u5/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32u5/usb/usbd_class_webusb.c", "embed/trezorhal/stm32u5/usb/usbd_conf.c", "embed/trezorhal/stm32u5/usb/usbd_core.c", "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", + "embed/trezorhal/stm32u5/usb/usbd.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T3T1/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py index 8cb8dccbe2..a9951b895e 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -102,11 +102,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb/usb.c", + "embed/trezorhal/stm32u5/usb/usbd_class_hid.c", + "embed/trezorhal/stm32u5/usb/usbd_class_vcp.c", + "embed/trezorhal/stm32u5/usb/usbd_class_webusb.c", "embed/trezorhal/stm32u5/usb/usbd_conf.c", "embed/trezorhal/stm32u5/usb/usbd_core.c", "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", + "embed/trezorhal/stm32u5/usb/usbd.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/src/usb.py b/core/src/usb.py index 5dde66a1e2..33d43f25ea 100644 --- a/core/src/usb.py +++ b/core/src/usb.py @@ -33,7 +33,7 @@ id_wire = next(_iface_iter) iface_wire = io.WebUSB( iface_num=id_wire, - ep_in=0x81 + id_wire, + ep_in=0x01 + id_wire, ep_out=0x01 + id_wire, emu_port=UDP_PORT + _WIRE_PORT_OFFSET, ) @@ -55,7 +55,7 @@ id_debug = next(_iface_iter) iface_debug = io.WebUSB( iface_num=id_debug, - ep_in=0x81 + id_debug, + ep_in=0x01 + id_debug, ep_out=0x01 + id_debug, emu_port=UDP_PORT + _DEBUGLINK_PORT_OFFSET, ) @@ -66,7 +66,7 @@ id_webauthn = next(_iface_iter) iface_webauthn = io.HID( iface_num=id_webauthn, - ep_in=0x81 + id_webauthn, + ep_in=0x01 + id_webauthn, ep_out=0x01 + id_webauthn, emu_port=UDP_PORT + _WEBAUTHN_PORT_OFFSET, # fmt: off @@ -99,9 +99,9 @@ iface_vcp = io.VCP( iface_num=id_vcp, data_iface_num=id_vcp_data, - ep_in=0x81 + id_vcp, + ep_in=0x01 + id_vcp, ep_out=0x01 + id_vcp, - ep_cmd=0x81 + id_vcp_data, + ep_cmd=0x01 + id_vcp_data, emu_port=UDP_PORT + _VCP_PORT_OFFSET, ) bus.add(iface_vcp) diff --git a/core/tests/production_tests/main.py b/core/tests/production_tests/main.py index f783c6526d..5a806f0ebd 100644 --- a/core/tests/production_tests/main.py +++ b/core/tests/production_tests/main.py @@ -5,9 +5,9 @@ usb_vcp = io.VCP( iface_num=0x00, data_iface_num=0x01, - ep_in=0x81, + ep_in=0x01, ep_out=0x01, - ep_cmd=0x82, + ep_cmd=0x02, ) usb = io.USB( From a705335fe18b3f10bb28851ddb010e5fb5d234db Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 31 May 2024 13:23:34 +0200 Subject: [PATCH 311/626] fix(core/embed): fix disc2 target build [no changelog] --- core/embed/trezorhal/stm32f4/dma2d_bitblt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c index 65ab14f7bd..2ca307e088 100644 --- a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c +++ b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c @@ -624,7 +624,7 @@ bool dma2d_rgba8888_blend_mono4(const gfx_bitblt_t* params) { return true; } -bool dma2d_rgb8888_blend_mono8(const gfx_bitblt_t* bb) { +bool dma2d_rgba8888_blend_mono8(const gfx_bitblt_t* bb) { dma2d_wait(); if (!dma2d_accessible(bb->dst_row) || !dma2d_accessible(bb->src_row)) { From baff1691a0ece1fd72c787a1a1e35000c459d4c1 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 31 May 2024 13:25:47 +0200 Subject: [PATCH 312/626] feat(core/embed): prepare usb driver for low power mode [no changelog] --- core/embed/bootloader/main.c | 4 +- core/embed/bootloader_ci/main.c | 4 +- .../extmod/modtrezorio/modtrezorio-usb.h | 9 +- core/embed/prodtest/main.c | 4 +- .../trezorhal/stm32f4/usb/{usbd.c => usb.c} | 350 +++++++++++------- .../usb/{usbd_class_hid.c => usb_class_hid.c} | 4 +- .../usb/{usbd_class_vcp.c => usb_class_vcp.c} | 4 +- ...usbd_class_webusb.c => usb_class_webusb.c} | 4 +- .../usb/{usbd_internal.h => usb_internal.h} | 1 + core/embed/trezorhal/stm32f4/usb/usbd_def.h | 1 + core/embed/trezorhal/unix/usb.c | 7 +- core/embed/trezorhal/usb.h | 70 +++- core/site_scons/models/D001/discovery.py | 8 +- core/site_scons/models/D002/discovery2.py | 8 +- core/site_scons/models/T1B1/trezor_1.py | 8 +- core/site_scons/models/T2B1/trezor_r_v10.py | 8 +- core/site_scons/models/T2B1/trezor_r_v3.py | 8 +- core/site_scons/models/T2B1/trezor_r_v4.py | 8 +- core/site_scons/models/T2B1/trezor_r_v6.py | 8 +- core/site_scons/models/T2T1/trezor_t.py | 8 +- .../models/T3T1/trezor_t3t1_revE.py | 8 +- core/site_scons/models/T3T1/trezor_t3t1_v4.py | 8 +- 22 files changed, 346 insertions(+), 196 deletions(-) rename core/embed/trezorhal/stm32f4/usb/{usbd.c => usb.c} (70%) rename core/embed/trezorhal/stm32f4/usb/{usbd_class_hid.c => usb_class_hid.c} (99%) rename core/embed/trezorhal/stm32f4/usb/{usbd_class_vcp.c => usb_class_vcp.c} (99%) rename core/embed/trezorhal/stm32f4/usb/{usbd_class_webusb.c => usb_class_webusb.c} (99%) rename core/embed/trezorhal/stm32f4/usb/{usbd_internal.h => usb_internal.h} (99%) diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index af6dce6b16..4596373540 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -122,11 +122,11 @@ static void usb_init_all(secbool usb21_landing) { .polling_interval = 1, }; - usb_init(&dev_info); + ensure(usb_init(&dev_info), NULL); ensure(usb_webusb_add(&webusb_info), NULL); - usb_start(); + ensure(usb_start(), NULL); } static usb_result_t bootloader_usb_loop(const vendor_header *const vhdr, diff --git a/core/embed/bootloader_ci/main.c b/core/embed/bootloader_ci/main.c index ca60278ee3..f9dfe64a24 100644 --- a/core/embed/bootloader_ci/main.c +++ b/core/embed/bootloader_ci/main.c @@ -78,11 +78,11 @@ static void usb_init_all(secbool usb21_landing) { .polling_interval = 1, }; - usb_init(&dev_info); + ensure(usb_init(&dev_info), NULL); ensure(usb_webusb_add(&webusb_info), NULL); - usb_start(); + ensure(usb_start(), NULL); } static secbool bootloader_usb_loop(const vendor_header *const vhdr, diff --git a/core/embed/extmod/modtrezorio/modtrezorio-usb.h b/core/embed/extmod/modtrezorio/modtrezorio-usb.h index bdc036d57e..3afcc7846d 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio-usb.h +++ b/core/embed/extmod/modtrezorio/modtrezorio-usb.h @@ -190,7 +190,9 @@ STATIC mp_obj_t mod_trezorio_USB_open(mp_obj_t self, mp_obj_get_array(MP_OBJ_FROM_PTR(&o->ifaces), &iface_cnt, &iface_objs); // Initialize the USB stack - usb_init(&o->info); + if (sectrue != usb_init(&o->info)) { + mp_raise_msg(&mp_type_RuntimeError, "failed to initialize usb driver"); + } int vcp_iface_num = -1; @@ -224,7 +226,10 @@ STATIC mp_obj_t mod_trezorio_USB_open(mp_obj_t self, } // Start the USB stack - usb_start(); + if (sectrue != usb_start()) { + usb_deinit(); + mp_raise_msg(&mp_type_RuntimeError, "failed to start usb driver"); + } o->state = USB_OPENED; // If we found any VCP interfaces, use the last one for stdio, diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 2a50696adb..ced3767a46 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -155,9 +155,9 @@ static void usb_init_all(void) { .max_packet_len = VCP_PACKET_LEN, }; - usb_init(&dev_info); + ensure(usb_init(&dev_info), NULL); ensure(usb_vcp_add(&vcp_info), "usb_vcp_add"); - usb_start(); + ensure(usb_start(), NULL); } static void draw_border(int width, int padding) { diff --git a/core/embed/trezorhal/stm32f4/usb/usbd.c b/core/embed/trezorhal/stm32f4/usb/usb.c similarity index 70% rename from core/embed/trezorhal/stm32f4/usb/usbd.c rename to core/embed/trezorhal/stm32f4/usb/usb.c index 8b9f35f620..e82ccebaa5 100644 --- a/core/embed/trezorhal/stm32f4/usb/usbd.c +++ b/core/embed/trezorhal/stm32f4/usb/usb.c @@ -19,12 +19,11 @@ #include STM32_HAL_H +#include "usb.h" #include "common.h" #include "random_delays.h" #include "secbool.h" -#include "usb.h" -#include "usbd_core.h" -#include "usbd_internal.h" +#include "usb_internal.h" #define USB_MAX_CONFIG_DESC_SIZE 256 #define USB_MAX_STR_SIZE 62 @@ -55,6 +54,8 @@ typedef struct { } usb_iface_t; typedef struct { + // Set if the driver is initialized + secbool initialized; // Handle to the USB device (lower layer driver) USBD_HandleTypeDef dev_handle; // Device descriptor @@ -75,10 +76,17 @@ typedef struct { secbool usb21_enabled; secbool usb21_landing; + // Time (in ticks) when we've seen the USB ready last time + uint32_t ready_time; + // Set to `sectrue` if the USB stack was ready sinced the last start + secbool was_ready; + } usb_driver_t; // USB driver instance -static usb_driver_t g_usb_driver; +static usb_driver_t g_usb_driver = { + .initialized = secfalse, +}; // forward declarations of dispatch functions static const USBD_ClassTypeDef usb_class; @@ -90,126 +98,198 @@ static secbool __wur check_desc_str(const char *s) { return sectrue; } -void usb_init(const usb_dev_info_t *dev_info) { - usb_driver_t *usb = &g_usb_driver; +secbool usb_init(const usb_dev_info_t *dev_info) { + usb_driver_t *drv = &g_usb_driver; + + if (drv->initialized == sectrue) { + // Already initialized + return sectrue; + } + + memset(drv, 0, sizeof(usb_driver_t)); // enable/disable USB 2.1 features - usb->usb21_enabled = dev_info->usb21_enabled; - usb->usb21_landing = dev_info->usb21_landing; + drv->usb21_enabled = dev_info->usb21_enabled; + drv->usb21_landing = dev_info->usb21_landing; // Device descriptor - usb->dev_desc.bLength = sizeof(usb_device_descriptor_t); - usb->dev_desc.bDescriptorType = USB_DESC_TYPE_DEVICE; - usb->dev_desc.bcdUSB = - (sectrue == usb->usb21_enabled) ? 0x0210 : 0x0200; // USB 2.1 or USB 2.0 - usb->dev_desc.bDeviceClass = dev_info->device_class; - usb->dev_desc.bDeviceSubClass = dev_info->device_subclass; - usb->dev_desc.bDeviceProtocol = dev_info->device_protocol; - usb->dev_desc.bMaxPacketSize0 = USB_MAX_EP0_SIZE; - usb->dev_desc.idVendor = dev_info->vendor_id; - usb->dev_desc.idProduct = dev_info->product_id; - usb->dev_desc.bcdDevice = dev_info->release_num; - usb->dev_desc.iManufacturer = + drv->dev_desc.bLength = sizeof(usb_device_descriptor_t); + drv->dev_desc.bDescriptorType = USB_DESC_TYPE_DEVICE; + drv->dev_desc.bcdUSB = + (sectrue == drv->usb21_enabled) ? 0x0210 : 0x0200; // USB 2.1 or USB 2.0 + drv->dev_desc.bDeviceClass = dev_info->device_class; + drv->dev_desc.bDeviceSubClass = dev_info->device_subclass; + drv->dev_desc.bDeviceProtocol = dev_info->device_protocol; + drv->dev_desc.bMaxPacketSize0 = USB_MAX_EP0_SIZE; + drv->dev_desc.idVendor = dev_info->vendor_id; + drv->dev_desc.idProduct = dev_info->product_id; + drv->dev_desc.bcdDevice = dev_info->release_num; + drv->dev_desc.iManufacturer = USBD_IDX_MFC_STR; // Index of manufacturer string - usb->dev_desc.iProduct = USBD_IDX_PRODUCT_STR; // Index of product string - usb->dev_desc.iSerialNumber = + drv->dev_desc.iProduct = USBD_IDX_PRODUCT_STR; // Index of product string + drv->dev_desc.iSerialNumber = USBD_IDX_SERIAL_STR; // Index of serial number string - usb->dev_desc.bNumConfigurations = 1; + drv->dev_desc.bNumConfigurations = 1; // String table - ensure(check_desc_str(dev_info->manufacturer), NULL); - ensure(check_desc_str(dev_info->product), NULL); - ensure(check_desc_str(dev_info->serial_number), NULL); - ensure(check_desc_str(dev_info->interface), NULL); + if (sectrue != check_desc_str(dev_info->manufacturer)) { + return secfalse; + } + if (sectrue != check_desc_str(dev_info->product)) { + return secfalse; + } + if (sectrue != check_desc_str(dev_info->serial_number)) { + return secfalse; + } + if (sectrue != check_desc_str(dev_info->interface)) { + return secfalse; + } - usb->str_table.manufacturer = dev_info->manufacturer; - usb->str_table.product = dev_info->product; - usb->str_table.serial_number = dev_info->serial_number; - usb->str_table.interface = dev_info->interface; + drv->str_table.manufacturer = dev_info->manufacturer; + drv->str_table.product = dev_info->product; + drv->str_table.serial_number = dev_info->serial_number; + drv->str_table.interface = dev_info->interface; - usb->config_desc = (usb_config_descriptor_t *)(usb->desc_buffer); + drv->config_desc = (usb_config_descriptor_t *)(drv->desc_buffer); // Configuration descriptor - usb->config_desc->bLength = sizeof(usb_config_descriptor_t); - usb->config_desc->bDescriptorType = USB_DESC_TYPE_CONFIGURATION; - usb->config_desc->wTotalLength = + drv->config_desc->bLength = sizeof(usb_config_descriptor_t); + drv->config_desc->bDescriptorType = USB_DESC_TYPE_CONFIGURATION; + drv->config_desc->wTotalLength = sizeof(usb_config_descriptor_t); // will be updated later via // usb_alloc_class_descriptors() - usb->config_desc->bNumInterfaces = + drv->config_desc->bNumInterfaces = 0; // will be updated later via usb_set_iface_class() - usb->config_desc->bConfigurationValue = 0x01; - usb->config_desc->iConfiguration = 0; - usb->config_desc->bmAttributes = + drv->config_desc->bConfigurationValue = 0x01; + drv->config_desc->iConfiguration = 0; + drv->config_desc->bmAttributes = 0x80; // 0x80 = bus powered; 0xC0 = self powered - usb->config_desc->bMaxPower = 0x32; // Maximum Power Consumption in 2mA units - - ensure(sectrue * - (USBD_OK == USBD_Init(&usb->dev_handle, - (USBD_DescriptorsTypeDef *)&usb_descriptors, - USB_PHY_ID)), - NULL); - ensure(sectrue * - (USBD_OK == USBD_RegisterClass(&usb->dev_handle, - (USBD_ClassTypeDef *)&usb_class)), - NULL); + drv->config_desc->bMaxPower = 0x32; // Maximum Power Consumption in 2mA units + + drv->initialized = sectrue; + + return sectrue; } void usb_deinit(void) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - USBD_DeInit(&usb->dev_handle); - for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - usb->ifaces[i].class = NULL; + if (drv->initialized != sectrue) { + return; } + + usb_stop(); + + drv->initialized = secfalse; } -void usb_start(void) { - usb_driver_t *usb = &g_usb_driver; +secbool usb_start(void) { + usb_driver_t *drv = &g_usb_driver; + + if (drv->initialized != sectrue) { + // The driver is not initialized + return secfalse; + } + + if (drv->dev_handle.dev_state != USBD_STATE_UNINITIALIZED) { + // The driver has been started already + return sectrue; + } + + drv->was_ready = secfalse; + + if (USBD_OK != USBD_Init(&drv->dev_handle, + (USBD_DescriptorsTypeDef *)&usb_descriptors, + USB_PHY_ID)) { + usb_stop(); + return secfalse; + } - USBD_Start(&usb->dev_handle); + if (USBD_OK != + USBD_RegisterClass(&drv->dev_handle, (USBD_ClassTypeDef *)&usb_class)) { + usb_stop(); + return secfalse; + } + + if (USBD_OK != USBD_Start(&drv->dev_handle)) { + usb_stop(); + return secfalse; + } + + return sectrue; } void usb_stop(void) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; + + if (drv->initialized != sectrue) { + // The driver is not initialized + return; + } - USBD_Stop(&usb->dev_handle); + if (drv->dev_handle.dev_state == USBD_STATE_UNINITIALIZED) { + // The driver is already stopped + return; + } + + USBD_DeInit(&drv->dev_handle); + + // Set drv->dev_handle.dev_state to USBD_STATE_INITIALIZED + memset(&drv->dev_handle, 0, sizeof(drv->dev_handle)); } secbool usb_configured(void) { - usb_driver_t *usb = &g_usb_driver; - - static uint32_t usb_configured_last_ok = 0; - uint32_t ticks = hal_ticks_ms(); + usb_driver_t *drv = &g_usb_driver; - const USBD_HandleTypeDef *pdev = &usb->dev_handle; - if (pdev->dev_state == USBD_STATE_CONFIGURED) { - usb_configured_last_ok = hal_ticks_ms(); - return sectrue; + if (drv->initialized != sectrue) { + // The driver is not initialized + return secfalse; } - // Linux has autosuspend device after 2 seconds by default. - // So a suspended device that was seen as configured is reported as - // configured. - if (pdev->dev_state == USBD_STATE_SUSPENDED && - pdev->dev_old_state == USBD_STATE_CONFIGURED) { - usb_configured_last_ok = hal_ticks_ms(); - return sectrue; - } + const USBD_HandleTypeDef *pdev = &drv->dev_handle; - if (usb_configured_last_ok == 0) { - usb_configured_last_ok = ticks; - return sectrue; + if (pdev->dev_state == USBD_STATE_UNINITIALIZED) { + // The driver has not been started yet + return secfalse; } - if (usb_configured_last_ok > ticks) { - // probably overflow of 32bit ms counter, ignore as its just once in a long - // time - return sectrue; + + secbool powered_from_usb = sectrue; // TODO + + secbool ready = secfalse; + + if (pdev->dev_state == USBD_STATE_CONFIGURED) { + // USB is configured, ready to transfer data + ready = sectrue; + } else if (pdev->dev_state == USBD_STATE_SUSPENDED && + pdev->dev_old_state == USBD_STATE_CONFIGURED) { + // USB is suspended, but was configured before + // + // Linux has autosuspend device after 2 seconds by default. + // So a suspended device that was seen as configured is reported as + // configured. + // + ready = sectrue; + } else if ((drv->was_ready == secfalse) && (powered_from_usb == sectrue)) { + // First run after the startup with USB power + drv->was_ready = sectrue; + ready = sectrue; } - if ((hal_ticks_ms() - usb_configured_last_ok) < 2000) { - return sectrue; + + // This is a workaround to handle the glitches in the USB connection, + // especially for USB-powered-only devices. This should be + // revisited and probably fixed elsewhere. + + uint32_t ticks = hal_ticks_ms(); + + if (ready == sectrue) { + drv->ready_time = ticks; + } else if ((drv->was_ready == sectrue) && (ticks - drv->ready_time) < 2000) { + // NOTE: When the timer overflows the timeout is shortened. + // We are ignoring it for now. + ready = sectrue; } - return secfalse; + return ready; } // ========================================================================== @@ -217,10 +297,10 @@ secbool usb_configured(void) { // ========================================================================== void *usb_get_iface_state(uint8_t iface_num, const USBD_ClassTypeDef *class) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; if (iface_num < USBD_MAX_NUM_INTERFACES) { - usb_iface_t *iface = &usb->ifaces[iface_num]; + usb_iface_t *iface = &drv->ifaces[iface_num]; if (iface->class == class) { return &iface->state; @@ -232,14 +312,14 @@ void *usb_get_iface_state(uint8_t iface_num, const USBD_ClassTypeDef *class) { } void usb_set_iface_class(uint8_t iface_num, const USBD_ClassTypeDef *class) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; if (iface_num < USBD_MAX_NUM_INTERFACES) { - if (usb->ifaces[iface_num].class == NULL && class != NULL) { - usb->config_desc->bNumInterfaces++; + if (drv->ifaces[iface_num].class == NULL && class != NULL) { + drv->config_desc->bNumInterfaces++; } - usb->ifaces[iface_num].class = class; + drv->ifaces[iface_num].class = class; } } @@ -252,9 +332,9 @@ USBD_HandleTypeDef *usb_get_dev_handle(void) { void *usb_alloc_class_descriptors(size_t desc_len) { usb_driver_t *usb = &g_usb_driver; - if (usb->config_desc->wTotalLength + desc_len < USB_MAX_CONFIG_DESC_SIZE) { - void *retval = &usb->desc_buffer[usb->config_desc->wTotalLength]; - usb->config_desc->wTotalLength += desc_len; + if (drv->config_desc->wTotalLength + desc_len < USB_MAX_CONFIG_DESC_SIZE) { + void *retval = &drv->desc_buffer[drv->config_desc->wTotalLength]; + drv->config_desc->wTotalLength += desc_len; return retval; } else { return NULL; // Not enough space in the descriptor @@ -267,10 +347,10 @@ void *usb_alloc_class_descriptors(size_t desc_len) { static uint8_t *usb_get_dev_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - *length = sizeof(usb->dev_desc); - return (uint8_t *)(&usb->dev_desc); + *length = sizeof(drv->dev_desc); + return (uint8_t *)(&drv->dev_desc); } static uint8_t *usb_get_langid_str_descriptor(USBD_SpeedTypeDef speed, @@ -286,49 +366,49 @@ static uint8_t *usb_get_langid_str_descriptor(USBD_SpeedTypeDef speed, static uint8_t *usb_get_manufacturer_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - USBD_GetString((uint8_t *)usb->str_table.manufacturer, usb->str_buf, length); - return usb->str_buf; + USBD_GetString((uint8_t *)drv->str_table.manufacturer, drv->str_buf, length); + return drv->str_buf; } static uint8_t *usb_get_product_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - USBD_GetString((uint8_t *)usb->str_table.product, usb->str_buf, length); - return usb->str_buf; + USBD_GetString((uint8_t *)drv->str_table.product, drv->str_buf, length); + return drv->str_buf; } static uint8_t *usb_get_serial_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - USBD_GetString((uint8_t *)usb->str_table.serial_number, usb->str_buf, length); - return usb->str_buf; + USBD_GetString((uint8_t *)drv->str_table.serial_number, drv->str_buf, length); + return drv->str_buf; } static uint8_t *usb_get_configuration_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - USBD_GetString((uint8_t *)"", usb->str_buf, length); - return usb->str_buf; + USBD_GetString((uint8_t *)"", drv->str_buf, length); + return drv->str_buf; } static uint8_t *usb_get_interface_str_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - USBD_GetString((uint8_t *)usb->str_table.interface, usb->str_buf, length); - return usb->str_buf; + USBD_GetString((uint8_t *)drv->str_table.interface, drv->str_buf, length); + return drv->str_buf; } static uint8_t *usb_get_bos_descriptor(USBD_SpeedTypeDef speed, uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - if (sectrue == usb->usb21_enabled) { + if (sectrue == drv->usb21_enabled) { static uint8_t bos[] = { // usb_bos_descriptor { 0x05, // uint8_t bLength @@ -348,7 +428,7 @@ static uint8_t *usb_get_bos_descriptor(USBD_SpeedTypeDef speed, USB_WEBUSB_LANDING_PAGE, // uint8_t iLandingPage // } }; - bos[28] = (sectrue == usb->usb21_landing) ? USB_WEBUSB_LANDING_PAGE : 0; + bos[28] = (sectrue == drv->usb21_landing) ? USB_WEBUSB_LANDING_PAGE : 0; *length = sizeof(bos); return UNCONST(bos); } else { @@ -383,10 +463,10 @@ static const USBD_DescriptorsTypeDef usb_descriptors = { #define USB_WINUSB_REQ_GET_EXTENDED_PROPERTIES_OS_FEATURE_DESCRIPTOR 0x05 static uint8_t usb_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - usb_iface_t *iface = &usb->ifaces[i]; + usb_iface_t *iface = &drv->ifaces[i]; if (iface->class != NULL && iface->class->Init != NULL) { dev->pUserData = iface->state; iface->class->Init(dev, cfg_idx); @@ -399,10 +479,10 @@ static uint8_t usb_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { } static uint8_t usb_class_deinit(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - usb_iface_t *iface = &usb->ifaces[i]; + usb_iface_t *iface = &drv->ifaces[i]; if (iface->class != NULL && iface->class->DeInit != NULL) { dev->pUserData = iface->state; iface->class->DeInit(dev, cfg_idx); @@ -421,7 +501,7 @@ static uint8_t usb_class_deinit(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, USBD_SetupReqTypedef *req) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; if (((req->bmRequest & USB_REQ_TYPE_MASK) != USB_REQ_TYPE_CLASS) && ((req->bmRequest & USB_REQ_TYPE_MASK) != USB_REQ_TYPE_STANDARD) && @@ -431,7 +511,7 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, if ((req->bmRequest & USB_REQ_TYPE_MASK) == USB_REQ_TYPE_VENDOR) { if ((req->bmRequest & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_DEVICE) { - if (sectrue == usb->usb21_enabled && + if (sectrue == drv->usb21_enabled && req->bRequest == USB_WEBUSB_VENDOR_CODE) { if (req->wIndex == USB_WEBUSB_REQ_GET_URL && req->wValue == USB_WEBUSB_LANDING_PAGE) { @@ -464,7 +544,7 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, USBD_CtlError(dev, req); return USBD_FAIL; } - } else if (sectrue == usb->usb21_enabled && + } else if (sectrue == drv->usb21_enabled && req->bRequest == USB_WINUSB_VENDOR_CODE) { if (req->wIndex == USB_WINUSB_REQ_GET_COMPATIBLE_ID_FEATURE_DESCRIPTOR) { @@ -497,7 +577,7 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, } if ((req->bmRequest & USB_REQ_RECIPIENT_MASK) == USB_REQ_RECIPIENT_INTERFACE) { - if (sectrue == usb->usb21_enabled && + if (sectrue == drv->usb21_enabled && req->bRequest == USB_WINUSB_VENDOR_CODE) { if (req->wIndex == USB_WINUSB_REQ_GET_EXTENDED_PROPERTIES_OS_FEATURE_DESCRIPTOR && @@ -544,7 +624,7 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, return USBD_FAIL; } - usb_iface_t *iface = &usb->ifaces[req->wIndex]; + usb_iface_t *iface = &drv->ifaces[req->wIndex]; if (iface->class != NULL && iface->class->Setup != NULL) { dev->pUserData = iface->state; iface->class->Setup(dev, req); @@ -559,14 +639,14 @@ static uint8_t usb_class_setup(USBD_HandleTypeDef *dev, } static uint8_t usb_class_data_in(USBD_HandleTypeDef *dev, uint8_t ep_num) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; #ifdef RDI rdi_refresh_session_delay(); #endif for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - usb_iface_t *iface = &usb->ifaces[i]; + usb_iface_t *iface = &drv->ifaces[i]; if (iface->class != NULL && iface->class->DataIn != NULL) { dev->pUserData = iface->state; iface->class->DataIn(dev, ep_num); @@ -579,14 +659,14 @@ static uint8_t usb_class_data_in(USBD_HandleTypeDef *dev, uint8_t ep_num) { } static uint8_t usb_class_data_out(USBD_HandleTypeDef *dev, uint8_t ep_num) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; #ifdef RDI rdi_refresh_session_delay(); #endif for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - usb_iface_t *iface = &usb->ifaces[i]; + usb_iface_t *iface = &drv->ifaces[i]; if (iface->class != NULL && iface->class->DataOut != NULL) { dev->pUserData = iface->state; iface->class->DataOut(dev, ep_num); @@ -599,10 +679,10 @@ static uint8_t usb_class_data_out(USBD_HandleTypeDef *dev, uint8_t ep_num) { } static uint8_t usb_class_sof(USBD_HandleTypeDef *dev) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { - usb_iface_t *iface = &usb->ifaces[i]; + usb_iface_t *iface = &drv->ifaces[i]; if (iface->class != NULL && iface->class->SOF != NULL) { dev->pUserData = iface->state; iface->class->SOF(dev); @@ -615,17 +695,17 @@ static uint8_t usb_class_sof(USBD_HandleTypeDef *dev) { } static uint8_t *usb_class_get_cfg_desc(uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - *length = usb->config_desc->wTotalLength; - return usb->desc_buffer; + *length = drv->config_desc->wTotalLength; + return drv->desc_buffer; } static uint8_t *usb_class_get_usrstr_desc(USBD_HandleTypeDef *dev, uint8_t index, uint16_t *length) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - if (sectrue == usb->usb21_enabled && index == USB_WINUSB_EXTRA_STRING_INDEX) { + if (sectrue == drv->usb21_enabled && index == USB_WINUSB_EXTRA_STRING_INDEX) { static const uint8_t winusb_string_descriptor[] = { 0x12, // bLength USB_DESC_TYPE_STRING, // bDescriptorType diff --git a/core/embed/trezorhal/stm32f4/usb/usbd_class_hid.c b/core/embed/trezorhal/stm32f4/usb/usb_class_hid.c similarity index 99% rename from core/embed/trezorhal/stm32f4/usb/usbd_class_hid.c rename to core/embed/trezorhal/stm32f4/usb/usb_class_hid.c index cddb6f10b4..54ea28b83b 100644 --- a/core/embed/trezorhal/stm32f4/usb/usbd_class_hid.c +++ b/core/embed/trezorhal/stm32f4/usb/usb_class_hid.c @@ -20,10 +20,8 @@ #include "common.h" #include "random_delays.h" -#include "usbd_core.h" -#include "usbd_internal.h" - #include "usb_hid.h" +#include "usb_internal.h" #define USB_CLASS_HID 0x03 diff --git a/core/embed/trezorhal/stm32f4/usb/usbd_class_vcp.c b/core/embed/trezorhal/stm32f4/usb/usb_class_vcp.c similarity index 99% rename from core/embed/trezorhal/stm32f4/usb/usbd_class_vcp.c rename to core/embed/trezorhal/stm32f4/usb/usb_class_vcp.c index d30f308bbd..bb1d5c55b6 100644 --- a/core/embed/trezorhal/stm32f4/usb/usbd_class_vcp.c +++ b/core/embed/trezorhal/stm32f4/usb/usb_class_vcp.c @@ -19,9 +19,7 @@ #include "common.h" -#include "usbd_core.h" -#include "usbd_internal.h" - +#include "usb_internal.h" #include "usb_vcp.h" // Communications Device Class Code (bFunctionClass, bInterfaceClass) diff --git a/core/embed/trezorhal/stm32f4/usb/usbd_class_webusb.c b/core/embed/trezorhal/stm32f4/usb/usb_class_webusb.c similarity index 99% rename from core/embed/trezorhal/stm32f4/usb/usbd_class_webusb.c rename to core/embed/trezorhal/stm32f4/usb/usb_class_webusb.c index 55fc5448c5..8916a4b9af 100644 --- a/core/embed/trezorhal/stm32f4/usb/usbd_class_webusb.c +++ b/core/embed/trezorhal/stm32f4/usb/usb_class_webusb.c @@ -20,9 +20,7 @@ #include "common.h" #include "random_delays.h" -#include "usbd_core.h" -#include "usbd_internal.h" - +#include "usb_internal.h" #include "usb_webusb.h" #define USB_CLASS_WEBUSB 0xFF diff --git a/core/embed/trezorhal/stm32f4/usb/usbd_internal.h b/core/embed/trezorhal/stm32f4/usb/usb_internal.h similarity index 99% rename from core/embed/trezorhal/stm32f4/usb/usbd_internal.h rename to core/embed/trezorhal/stm32f4/usb/usb_internal.h index 9becc8dcc5..0ff961d5bc 100644 --- a/core/embed/trezorhal/stm32f4/usb/usbd_internal.h +++ b/core/embed/trezorhal/stm32f4/usb/usb_internal.h @@ -21,6 +21,7 @@ #define TREZORHAL_USBD_INTERNAL_H #include <stdint.h> +#include "usbd_core.h" #define USB_EP_DIR_MASK 0x80 #define USB_EP_DIR_OUT 0x00 diff --git a/core/embed/trezorhal/stm32f4/usb/usbd_def.h b/core/embed/trezorhal/stm32f4/usb/usbd_def.h index 82e9f08720..ec5a83da95 100644 --- a/core/embed/trezorhal/stm32f4/usb/usbd_def.h +++ b/core/embed/trezorhal/stm32f4/usb/usbd_def.h @@ -118,6 +118,7 @@ #define USB_MAX_EP0_SIZE 64 /* Device Status */ +#define USBD_STATE_UNINITIALIZED 0 #define USBD_STATE_DEFAULT 1 #define USBD_STATE_ADDRESSED 2 #define USBD_STATE_CONFIGURED 3 diff --git a/core/embed/trezorhal/unix/usb.c b/core/embed/trezorhal/unix/usb.c index 0f628e94f7..f5c1a00e75 100644 --- a/core/embed/trezorhal/unix/usb.c +++ b/core/embed/trezorhal/unix/usb.c @@ -53,7 +53,7 @@ static struct { socklen_t slen; } usb_ifaces[USBD_MAX_NUM_INTERFACES]; -void usb_init(const usb_dev_info_t *dev_info) { +secbool usb_init(const usb_dev_info_t *dev_info) { (void)dev_info; for (int i = 0; i < USBD_MAX_NUM_INTERFACES; i++) { usb_ifaces[i].type = USB_IFACE_TYPE_DISABLED; @@ -63,11 +63,12 @@ void usb_init(const usb_dev_info_t *dev_info) { memzero(&usb_ifaces[i].si_other, sizeof(struct sockaddr_in)); usb_ifaces[i].slen = 0; } + return sectrue; } void usb_deinit(void) {} -void usb_start(void) { +secbool usb_start(void) { const char *ip = getenv("TREZOR_UDP_IP"); // iterate interfaces @@ -96,6 +97,8 @@ void usb_start(void) { sizeof(struct sockaddr_in))), NULL); } + + return sectrue; } void usb_stop(void) { diff --git a/core/embed/trezorhal/usb.h b/core/embed/trezorhal/usb.h index 0922340e2b..c68c9f4c12 100644 --- a/core/embed/trezorhal/usb.h +++ b/core/embed/trezorhal/usb.h @@ -27,6 +27,38 @@ #include "usb_vcp.h" #include "usb_webusb.h" +// clang-format off +// +// USB stack high-level state machine +// ------------------------------------ +// +// +---------------+ +// ----> | Uninitialized | - Stack is completely uninitialized +// | +---------------+ +// | | +// | usb_init() +// usb_deinit() | +// | v +// | +---------------+ - Stack is partially initialized +// |-----| Initialized | - Ready for class registration +// | +---------------+ +// | | +// | N x usb_xxx_add() - Multiple class drivers can be registered +// | | +// | v +// | +---------------+ - Stack is completely initialized +// |-----| Stopped | - USB hardware left uninitialized +// | +---------------+ - Can go low power at this mode +// | | ^ +// | usb_start() | +// | | usb_stop() +// | v | +// | +---------------+ - USB hardware initialized +// ------| Running | - Stack is running if the USB host is connected +// +---------------+ +// +// clang-format on + typedef struct { uint8_t device_class; uint8_t device_subclass; @@ -42,10 +74,44 @@ typedef struct { secbool usb21_landing; } usb_dev_info_t; -void usb_init(const usb_dev_info_t *dev_info); +// Initializes USB stack +// +// When the USB driver is initialized, class drivers can be registered. +// After all class drivers are registered, `usb_start()` can be called. +// +// Returns `sectrue` if the initialization is successful. +secbool usb_init(const usb_dev_info_t *dev_info); + +// Deinitialize USB stack +// +// This function completely deinitializes the USB driver and all class drivers. +// After this function is called, `usb_init()` can be called again. void usb_deinit(void); -void usb_start(void); + +// Starts USB driver and its class drivers +// +// Initializes the USB stack (and hardware) and starts all registered class +// drivers. +// +// This function can called after all class drivers are registered or after +// `usb_stop()` is called. +// +// Returns `sectrue` if the USB stack is started successfully. +secbool usb_start(void); + +// Stops USB driver and its class drivers +// +// Unitializes the USB stack (and hardware) but leaves all configuration intact, +// so it can be started again with `usb_start()`. +// +// When the USB stack is stopped, it does not respond to any USB events and +// the CPU can go to stop/standby mode. void usb_stop(void); + +// Returns `sectrue` if the device is connected to the host (or is expected to +// be) +// +// TODO: Review and clarify the logic of this function in the future secbool usb_configured(void); #endif diff --git a/core/site_scons/models/D001/discovery.py b/core/site_scons/models/D001/discovery.py index c8e18fbe3a..68a6be7f62 100644 --- a/core/site_scons/models/D001/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -76,14 +76,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", - "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb_class_hid.c", + "embed/trezorhal/stm32f4/usb/usb_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usb_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", - "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index 94e6fc7598..0fe7f4f9e2 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -82,14 +82,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb/usbd_class_hid.c", - "embed/trezorhal/stm32u5/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32u5/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32u5/usb/usb_class_hid.c", + "embed/trezorhal/stm32u5/usb/usb_class_vcp.c", + "embed/trezorhal/stm32u5/usb/usb_class_webusb.c", + "embed/trezorhal/stm32u5/usb/usb.c", "embed/trezorhal/stm32u5/usb/usbd_conf.c", "embed/trezorhal/stm32u5/usb/usbd_core.c", "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", - "embed/trezorhal/stm32u5/usb/usbd.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T1B1/trezor_1.py b/core/site_scons/models/T1B1/trezor_1.py index df938dfd9d..daaf9ff3c6 100644 --- a/core/site_scons/models/T1B1/trezor_1.py +++ b/core/site_scons/models/T1B1/trezor_1.py @@ -42,14 +42,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", - "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb_class_hid.c", + "embed/trezorhal/stm32f4/usb/usb_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usb_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", - "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v10.py b/core/site_scons/models/T2B1/trezor_r_v10.py index 7eb33ef442..9cb1723ea6 100644 --- a/core/site_scons/models/T2B1/trezor_r_v10.py +++ b/core/site_scons/models/T2B1/trezor_r_v10.py @@ -65,14 +65,14 @@ def configure( ] if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", - "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb_class_hid.c", + "embed/trezorhal/stm32f4/usb/usb_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usb_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", - "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v3.py b/core/site_scons/models/T2B1/trezor_r_v3.py index c7889b8f8e..a8809aab6b 100644 --- a/core/site_scons/models/T2B1/trezor_r_v3.py +++ b/core/site_scons/models/T2B1/trezor_r_v3.py @@ -62,14 +62,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", - "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb_class_hid.c", + "embed/trezorhal/stm32f4/usb/usb_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usb_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", - "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v4.py b/core/site_scons/models/T2B1/trezor_r_v4.py index 1d55473c35..641ebd8ce7 100644 --- a/core/site_scons/models/T2B1/trezor_r_v4.py +++ b/core/site_scons/models/T2B1/trezor_r_v4.py @@ -58,14 +58,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", - "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb_class_hid.c", + "embed/trezorhal/stm32f4/usb/usb_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usb_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", - "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2B1/trezor_r_v6.py b/core/site_scons/models/T2B1/trezor_r_v6.py index ecac28d081..2f562f5dfd 100644 --- a/core/site_scons/models/T2B1/trezor_r_v6.py +++ b/core/site_scons/models/T2B1/trezor_r_v6.py @@ -58,14 +58,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", - "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb_class_hid.c", + "embed/trezorhal/stm32f4/usb/usb_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usb_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", - "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T2T1/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py index 6ad7905850..71b12d6216 100644 --- a/core/site_scons/models/T2T1/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -100,14 +100,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32f4/usb/usbd_class_hid.c", - "embed/trezorhal/stm32f4/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32f4/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb_class_hid.c", + "embed/trezorhal/stm32f4/usb/usb_class_vcp.c", + "embed/trezorhal/stm32f4/usb/usb_class_webusb.c", + "embed/trezorhal/stm32f4/usb/usb.c", "embed/trezorhal/stm32f4/usb/usbd_conf.c", "embed/trezorhal/stm32f4/usb/usbd_core.c", "embed/trezorhal/stm32f4/usb/usbd_ctlreq.c", "embed/trezorhal/stm32f4/usb/usbd_ioreq.c", - "embed/trezorhal/stm32f4/usb/usbd.c", "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index 61d13baebc..9d1cea76e7 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -100,14 +100,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb/usbd_class_hid.c", - "embed/trezorhal/stm32u5/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32u5/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32u5/usb/usb_class_hid.c", + "embed/trezorhal/stm32u5/usb/usb_class_vcp.c", + "embed/trezorhal/stm32u5/usb/usb_class_webusb.c", + "embed/trezorhal/stm32u5/usb/usb.c", "embed/trezorhal/stm32u5/usb/usbd_conf.c", "embed/trezorhal/stm32u5/usb/usbd_core.c", "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", - "embed/trezorhal/stm32u5/usb/usbd.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") diff --git a/core/site_scons/models/T3T1/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py index a9951b895e..f6ffda61df 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -102,14 +102,14 @@ def configure( if "usb" in features_wanted: sources += [ - "embed/trezorhal/stm32u5/usb/usbd_class_hid.c", - "embed/trezorhal/stm32u5/usb/usbd_class_vcp.c", - "embed/trezorhal/stm32u5/usb/usbd_class_webusb.c", + "embed/trezorhal/stm32u5/usb/usb_class_hid.c", + "embed/trezorhal/stm32u5/usb/usb_class_vcp.c", + "embed/trezorhal/stm32u5/usb/usb_class_webusb.c", + "embed/trezorhal/stm32u5/usb/usb.c", "embed/trezorhal/stm32u5/usb/usbd_conf.c", "embed/trezorhal/stm32u5/usb/usbd_core.c", "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", - "embed/trezorhal/stm32u5/usb/usbd.c", "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", ] features_available.append("usb") From d8d6410284559672f3a7ba0a844e3f40e3ff78fc Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 31 May 2024 13:40:52 +0200 Subject: [PATCH 313/626] refactor(core/embed): remove global deps from usb class drivers [no changelog] --- core/embed/trezorhal/stm32f4/usb/usb.c | 6 +++--- .../trezorhal/stm32f4/usb/usb_class_hid.c | 20 +++++++++++++++++-- .../trezorhal/stm32f4/usb/usb_class_vcp.c | 5 ++++- .../trezorhal/stm32f4/usb/usb_class_webusb.c | 20 ++++++++++++++++++- .../trezorhal/stm32f4/usb/usb_internal.h | 3 --- 5 files changed, 44 insertions(+), 10 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/usb/usb.c b/core/embed/trezorhal/stm32f4/usb/usb.c index e82ccebaa5..7b0bd295e1 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb.c +++ b/core/embed/trezorhal/stm32f4/usb/usb.c @@ -324,13 +324,13 @@ void usb_set_iface_class(uint8_t iface_num, const USBD_ClassTypeDef *class) { } USBD_HandleTypeDef *usb_get_dev_handle(void) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; - return &usb->dev_handle; + return &drv->dev_handle; } void *usb_alloc_class_descriptors(size_t desc_len) { - usb_driver_t *usb = &g_usb_driver; + usb_driver_t *drv = &g_usb_driver; if (drv->config_desc->wTotalLength + desc_len < USB_MAX_CONFIG_DESC_SIZE) { void *retval = &drv->desc_buffer[drv->config_desc->wTotalLength]; diff --git a/core/embed/trezorhal/stm32f4/usb/usb_class_hid.c b/core/embed/trezorhal/stm32f4/usb/usb_class_hid.c index 54ea28b83b..48feb58866 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb_class_hid.c +++ b/core/embed/trezorhal/stm32f4/usb/usb_class_hid.c @@ -146,7 +146,6 @@ secbool usb_hid_add(const usb_hid_info_t *info) { d->ep_out.bInterval = info->polling_interval; // Interface state - state->dev_handle = usb_get_dev_handle(); state->desc_block = d; state->report_desc = info->report_desc; state->rx_buffer = info->rx_buffer; @@ -171,10 +170,12 @@ secbool usb_hid_can_read(uint8_t iface_num) { if (state == NULL) { return secfalse; // Invalid interface number } + if (state->dev_handle == NULL) { + return secfalse; // Class driver not initialized + } if (state->last_read_len == 0) { return secfalse; // Nothing in the receiving buffer } - if (state->dev_handle->dev_state != USBD_STATE_CONFIGURED) { return secfalse; // Device is not configured } @@ -186,6 +187,9 @@ secbool usb_hid_can_write(uint8_t iface_num) { if (state == NULL) { return secfalse; // Invalid interface number } + if (state->dev_handle == NULL) { + return secfalse; // Class driver not initialized + } if (state->ep_in_is_idle == 0) { return secfalse; // Last transmission is not over yet } @@ -202,6 +206,10 @@ int usb_hid_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { return -1; // Invalid interface number } + if (state->dev_handle == NULL) { + return -1; // Class driver not initialized + } + // Copy maximum possible amount of data uint32_t last_read_len = state->last_read_len; if (len < last_read_len) { @@ -226,6 +234,10 @@ int usb_hid_write(uint8_t iface_num, const uint8_t *buf, uint32_t len) { return -1; // Invalid interface number } + if (state->dev_handle == NULL) { + return -1; // Class driver not initialized + } + if (state->ep_in_is_idle == 0) { return 0; // Last transmission is not over yet } @@ -280,6 +292,8 @@ int usb_hid_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, static uint8_t usb_hid_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { usb_hid_state_t *state = (usb_hid_state_t *)dev->pUserData; + state->dev_handle = dev; + // Open endpoints USBD_LL_OpenEP(dev, state->ep_in, USBD_EP_TYPE_INTR, state->max_packet_len); USBD_LL_OpenEP(dev, state->ep_out, USBD_EP_TYPE_INTR, state->max_packet_len); @@ -308,6 +322,8 @@ static uint8_t usb_hid_class_deinit(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { USBD_LL_CloseEP(dev, state->ep_in); USBD_LL_CloseEP(dev, state->ep_out); + state->dev_handle = NULL; + return USBD_OK; } diff --git a/core/embed/trezorhal/stm32f4/usb/usb_class_vcp.c b/core/embed/trezorhal/stm32f4/usb/usb_class_vcp.c index bb1d5c55b6..7905d884f4 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb_class_vcp.c +++ b/core/embed/trezorhal/stm32f4/usb/usb_class_vcp.c @@ -297,7 +297,6 @@ secbool usb_vcp_add(const usb_vcp_info_t *info) { d->ep_in.bInterval = 0; // Interface state - state->dev_handle = usb_get_dev_handle(); state->desc_block = d; state->rx_ring.buf = info->rx_buffer; @@ -428,6 +427,8 @@ int usb_vcp_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, static uint8_t usb_vcp_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { usb_vcp_state_t *state = (usb_vcp_state_t *)dev->pUserData; + state->dev_handle = dev; + // Open endpoints USBD_LL_OpenEP(dev, state->ep_in, USBD_EP_TYPE_BULK, state->max_packet_len); USBD_LL_OpenEP(dev, state->ep_out, USBD_EP_TYPE_BULK, state->max_packet_len); @@ -460,6 +461,8 @@ static uint8_t usb_vcp_class_deinit(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { USBD_LL_CloseEP(dev, state->ep_out); USBD_LL_CloseEP(dev, state->ep_cmd); + state->dev_handle = NULL; + return USBD_OK; } diff --git a/core/embed/trezorhal/stm32f4/usb/usb_class_webusb.c b/core/embed/trezorhal/stm32f4/usb/usb_class_webusb.c index 8916a4b9af..5d326517c3 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb_class_webusb.c +++ b/core/embed/trezorhal/stm32f4/usb/usb_class_webusb.c @@ -111,7 +111,6 @@ secbool usb_webusb_add(const usb_webusb_info_t *info) { d->ep_out.bInterval = info->polling_interval; // Interface state - state->dev_handle = usb_get_dev_handle(); state->desc_block = d; state->rx_buffer = info->rx_buffer; state->ep_in = info->ep_in | USB_EP_DIR_IN; @@ -128,9 +127,13 @@ secbool usb_webusb_add(const usb_webusb_info_t *info) { secbool usb_webusb_can_read(uint8_t iface_num) { usb_webusb_state_t *state = usb_get_webusb_state(iface_num); + if (state == NULL) { return secfalse; // Invalid interface number } + if (state->dev_handle == NULL) { + return secfalse; // Class driver not initialized + } if (state->last_read_len == 0) { return secfalse; // Nothing in the receiving buffer } @@ -145,6 +148,9 @@ secbool usb_webusb_can_write(uint8_t iface_num) { if (state == NULL) { return secfalse; // Invalid interface number } + if (state->dev_handle == NULL) { + return secfalse; // Class driver not initialized + } if (state->ep_in_is_idle == 0) { return secfalse; // Last transmission is not over yet } @@ -160,6 +166,10 @@ int usb_webusb_read(uint8_t iface_num, uint8_t *buf, uint32_t len) { return -1; // Invalid interface number } + if (state->dev_handle == NULL) { + return -1; // Class driver not initialized + } + // Copy maximum possible amount of data uint32_t last_read_len = state->last_read_len; if (len < last_read_len) { @@ -183,6 +193,10 @@ int usb_webusb_write(uint8_t iface_num, const uint8_t *buf, uint32_t len) { return -1; // Invalid interface number } + if (state->dev_handle == NULL) { + return -1; // Class driver not initialized + } + state->ep_in_is_idle = 0; USBD_LL_Transmit(state->dev_handle, state->ep_in, UNCONST(buf), (uint16_t)len); @@ -233,6 +247,8 @@ int usb_webusb_write_blocking(uint8_t iface_num, const uint8_t *buf, static uint8_t usb_webusb_class_init(USBD_HandleTypeDef *dev, uint8_t cfg_idx) { usb_webusb_state_t *state = (usb_webusb_state_t *)dev->pUserData; + state->dev_handle = dev; + // Open endpoints USBD_LL_OpenEP(dev, state->ep_in, USBD_EP_TYPE_INTR, state->max_packet_len); USBD_LL_OpenEP(dev, state->ep_out, USBD_EP_TYPE_INTR, state->max_packet_len); @@ -260,6 +276,8 @@ static uint8_t usb_webusb_class_deinit(USBD_HandleTypeDef *dev, USBD_LL_CloseEP(dev, state->ep_in); USBD_LL_CloseEP(dev, state->ep_out); + state->dev_handle = NULL; + return USBD_OK; } diff --git a/core/embed/trezorhal/stm32f4/usb/usb_internal.h b/core/embed/trezorhal/stm32f4/usb/usb_internal.h index 0ff961d5bc..adf0ffb6db 100644 --- a/core/embed/trezorhal/stm32f4/usb/usb_internal.h +++ b/core/embed/trezorhal/stm32f4/usb/usb_internal.h @@ -126,7 +126,4 @@ void usb_set_iface_class(uint8_t iface_num, const USBD_ClassTypeDef *class); // returns NULL if not. void *usb_alloc_class_descriptors(size_t desc_len); -// Returns the global handle to the USB device. -USBD_HandleTypeDef *usb_get_dev_handle(void); - #endif // TREZORHAL_USBD_INTERNAL_H From 089dc84f3840db6e112fdc4800e467f6cd4a104a Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Sat, 1 Jun 2024 17:30:38 +0200 Subject: [PATCH 314/626] refactor(core/embed): remove unnecessary call to usb_stop [no changelog] --- core/embed/bootloader/main.c | 8 -------- core/embed/bootloader_ci/main.c | 4 ---- core/embed/extmod/modtrezorio/modtrezorio-usb.h | 2 -- 3 files changed, 14 deletions(-) diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 4596373540..d54e0ba838 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -165,7 +165,6 @@ static usb_result_t bootloader_usb_loop(const vendor_header *const vhdr, if (INPUT_CANCEL == response) { send_user_abort(USB_IFACE_NUM, "Wipe cancelled"); hal_delay(100); - usb_stop(); usb_deinit(); return RETURN_TO_MENU; } @@ -174,13 +173,11 @@ static usb_result_t bootloader_usb_loop(const vendor_header *const vhdr, if (r < 0) { // error screen_wipe_fail(); hal_delay(100); - usb_stop(); usb_deinit(); return SHUTDOWN; } else { // success screen_wipe_success(); hal_delay(100); - usb_stop(); usb_deinit(); return SHUTDOWN; } @@ -197,12 +194,10 @@ static usb_result_t bootloader_usb_loop(const vendor_header *const vhdr, } else { ui_screen_fail(); } - usb_stop(); usb_deinit(); return SHUTDOWN; } else if (r == UPLOAD_ERR_USER_ABORT) { hal_delay(100); - usb_stop(); usb_deinit(); return RETURN_TO_MENU; } else if (r == 0) { // last chunk received @@ -214,7 +209,6 @@ static usb_result_t bootloader_usb_loop(const vendor_header *const vhdr, hal_delay(1000); ui_screen_done(1, secfalse); hal_delay(1000); - usb_stop(); usb_deinit(); return CONTINUE_TO_FIRMWARE; } @@ -228,14 +222,12 @@ static usb_result_t bootloader_usb_loop(const vendor_header *const vhdr, if (INPUT_CANCEL == response) { send_user_abort(USB_IFACE_NUM, "Bootloader unlock cancelled"); hal_delay(100); - usb_stop(); usb_deinit(); return RETURN_TO_MENU; } process_msg_UnlockBootloader(USB_IFACE_NUM, msg_size, buf); screen_unlock_bootloader_success(); hal_delay(100); - usb_stop(); usb_deinit(); return SHUTDOWN; break; diff --git a/core/embed/bootloader_ci/main.c b/core/embed/bootloader_ci/main.c index f9dfe64a24..33c6b70038 100644 --- a/core/embed/bootloader_ci/main.c +++ b/core/embed/bootloader_ci/main.c @@ -117,12 +117,10 @@ static secbool bootloader_usb_loop(const vendor_header *const vhdr, r = process_msg_WipeDevice(USB_IFACE_NUM, msg_size, buf); if (r < 0) { // error ui_screen_fail(); - usb_stop(); usb_deinit(); return secfalse; // shutdown } else { // success ui_screen_done(0, sectrue); - usb_stop(); usb_deinit(); return secfalse; // shutdown } @@ -134,7 +132,6 @@ static secbool bootloader_usb_loop(const vendor_header *const vhdr, r = process_msg_FirmwareUpload(USB_IFACE_NUM, msg_size, buf); if (r < 0 && r != UPLOAD_ERR_USER_ABORT) { // error, but not user abort ui_screen_fail(); - usb_stop(); usb_deinit(); return secfalse; // shutdown } else if (r == 0) { // last chunk received @@ -146,7 +143,6 @@ static secbool bootloader_usb_loop(const vendor_header *const vhdr, hal_delay(1000); ui_screen_done(1, secfalse); hal_delay(1000); - usb_stop(); usb_deinit(); return sectrue; // jump to firmware } diff --git a/core/embed/extmod/modtrezorio/modtrezorio-usb.h b/core/embed/extmod/modtrezorio/modtrezorio-usb.h index 3afcc7846d..39e4d9e8f0 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio-usb.h +++ b/core/embed/extmod/modtrezorio/modtrezorio-usb.h @@ -251,7 +251,6 @@ STATIC mp_obj_t mod_trezorio_USB_close(mp_obj_t self) { if (o->state != USB_OPENED) { mp_raise_msg(&mp_type_RuntimeError, "not initialized"); } - usb_stop(); usb_deinit(); mp_obj_list_set_len(MP_OBJ_FROM_PTR(&o->ifaces), 0); mp_seq_clear(o->ifaces.items, 0, o->ifaces.alloc, sizeof(*o->ifaces.items)); @@ -271,7 +270,6 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorio_USB_close_obj, STATIC mp_obj_t mod_trezorio_USB___del__(mp_obj_t self) { mp_obj_USB_t *o = MP_OBJ_TO_PTR(self); if (o->state != USB_CLOSED) { - usb_stop(); usb_deinit(); o->state = USB_CLOSED; } From 3460c4b891c29f882e4db359f5339a41359a180c Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Mon, 3 Jun 2024 20:01:49 +0200 Subject: [PATCH 315/626] refactor(core/embed): prepare touch drivers for low power mode [no changelog] --- core/SConscript.bootloader_emu | 6 +- core/SConscript.unix | 7 +- core/embed/bootloader/bootui.c | 8 +- core/embed/bootloader/main.c | 22 +- core/embed/bootloader_ci/main.c | 1 - .../extmod/modtrezorio/modtrezorio-poll.h | 4 +- core/embed/lib/touch.c | 22 - core/embed/prodtest/.changelog.d/3900.fixed | 1 + core/embed/prodtest/main.c | 24 +- core/embed/rust/build.rs | 2 +- core/embed/rust/src/trezorhal/io.rs | 4 +- core/embed/rust/src/ui/layout/simplified.rs | 4 +- core/embed/trezorhal/stm32f4/touch/ft6x36.c | 479 +++++++++++------- core/embed/trezorhal/stm32f4/touch/ft6x36.h | 53 ++ core/embed/trezorhal/stm32f4/touch/stmpe811.c | 211 +++----- core/embed/trezorhal/stm32u5/touch/sitronix.c | 149 +++--- core/embed/trezorhal/touch.h | 84 ++- core/embed/trezorhal/unix/button.c | 70 +++ core/embed/trezorhal/unix/{touch => }/touch.c | 229 +++++---- core/embed/unix/main.c | 5 + core/site_scons/models/D001/discovery.py | 1 - core/site_scons/models/D002/discovery2.py | 3 - core/site_scons/models/T1B1/emulator.py | 1 + core/site_scons/models/T2B1/emulator.py | 1 + core/site_scons/models/T2T1/emulator.py | 1 + core/site_scons/models/T2T1/trezor_t.py | 1 - core/site_scons/models/T3T1/emulator.py | 1 + .../models/T3T1/trezor_t3t1_revE.py | 1 - core/site_scons/models/T3T1/trezor_t3t1_v4.py | 1 - 29 files changed, 819 insertions(+), 577 deletions(-) delete mode 100644 core/embed/lib/touch.c create mode 100644 core/embed/prodtest/.changelog.d/3900.fixed create mode 100644 core/embed/trezorhal/unix/button.c rename core/embed/trezorhal/unix/{touch => }/touch.c (56%) diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 67c8588caa..0723bf05b1 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -112,7 +112,6 @@ SOURCE_MOD += [ 'embed/lib/image.c', 'embed/lib/mini_printf.c', 'embed/lib/terminal.c', - 'embed/lib/touch.c', 'embed/lib/unit_variant.c', 'vendor/micropython/lib/uzlib/adler32.c', 'vendor/micropython/lib/uzlib/crc32.c', @@ -150,11 +149,10 @@ SOURCE_TREZORHAL = [ 'embed/trezorhal/unix/fault_handlers.c', 'embed/trezorhal/unix/flash.c', 'embed/trezorhal/unix/flash_otp.c', - 'embed/trezorhal/unix/touch/touch.c', - 'embed/trezorhal/unix/rng.c', - 'embed/trezorhal/unix/usb.c', 'embed/trezorhal/unix/random_delays.c', + 'embed/trezorhal/unix/rng.c', 'embed/trezorhal/unix/secret.c', + 'embed/trezorhal/unix/usb.c', ] if NEW_RENDERING: diff --git a/core/SConscript.unix b/core/SConscript.unix index 3a9fe3f88b..000ce6e844 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -419,20 +419,19 @@ SOURCE_MICROPYTHON = [ SOURCE_UNIX = [ 'embed/trezorhal/unix/boot_args.c', 'embed/trezorhal/unix/common.c', - 'embed/trezorhal/unix/flash.c', 'embed/trezorhal/unix/flash_otp.c', + 'embed/trezorhal/unix/flash.c', 'embed/trezorhal/unix/random_delays.c', 'embed/trezorhal/unix/rng.c', 'embed/trezorhal/unix/usb.c', - 'embed/trezorhal/unix/touch/touch.c', - 'embed/unix/main.c', 'embed/unix/main_main.c', + 'embed/unix/main.c', 'embed/unix/profile.c', - 'vendor/micropython/shared/runtime/gchelper_generic.c', 'vendor/micropython/ports/unix/alloc.c', 'vendor/micropython/ports/unix/gccollect.c', 'vendor/micropython/ports/unix/input.c', 'vendor/micropython/ports/unix/unix_mphal.c', + 'vendor/micropython/shared/runtime/gchelper_generic.c', ] if NEW_RENDERING: diff --git a/core/embed/bootloader/bootui.c b/core/embed/bootloader/bootui.c index 0048ea2129..15d74d4c15 100644 --- a/core/embed/bootloader/bootui.c +++ b/core/embed/bootloader/bootui.c @@ -154,16 +154,16 @@ static void ui_screen_boot_wait(int wait_seconds) { void ui_click(void) { // flush touch events if any - while (touch_read()) { + while (touch_get_event()) { } // wait for TOUCH_START - while ((touch_read() & TOUCH_START) == 0) { + while ((touch_get_event() & TOUCH_START) == 0) { } // wait for TOUCH_END - while ((touch_read() & TOUCH_END) == 0) { + while ((touch_get_event() & TOUCH_END) == 0) { } // flush touch events if any - while (touch_read()) { + while (touch_get_event()) { } } diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index d54e0ba838..80911534c1 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -398,7 +398,6 @@ int bootloader_main(void) { unit_variant_init(); #ifdef USE_TOUCH - touch_power_on(); #ifdef TREZOR_MODEL_T3T1 // on T3T1, tester needs to run without touch, so making an exception // until unit variant is written in OTP @@ -514,17 +513,22 @@ int bootloader_main(void) { uint32_t touched = 0; #ifdef USE_TOUCH if (firmware_present == sectrue && stay_in_bootloader != sectrue) { - touch_wait_until_ready(); + // Wait until the touch controller is ready + // (on hardware this may take a while) + while (touch_ready() != sectrue) { + hal_delay(1); + } +#ifdef TREZOR_EMULATOR + hal_delay(500); +#endif + // Give the touch controller time to report events + // if someone touches the screen for (int i = 0; i < 10; i++) { - touched = touch_is_detected() | touch_read(); - if (touched) { + if (touch_activity() == sectrue) { + touched = 1; break; } -#ifdef TREZOR_EMULATOR - hal_delay(25); -#else - hal_delay_us(1000); -#endif + hal_delay(5); } } #elif defined USE_BUTTON diff --git a/core/embed/bootloader_ci/main.c b/core/embed/bootloader_ci/main.c index 33c6b70038..8f5436400c 100644 --- a/core/embed/bootloader_ci/main.c +++ b/core/embed/bootloader_ci/main.c @@ -206,7 +206,6 @@ int main(void) { random_delays_init(); #ifdef USE_TOUCH touch_init(); - touch_power_on(); #endif #ifdef USE_HASH_PROCESSOR diff --git a/core/embed/extmod/modtrezorio/modtrezorio-poll.h b/core/embed/extmod/modtrezorio/modtrezorio-poll.h index 77ffaa547a..a5f1bc89c2 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio-poll.h +++ b/core/embed/extmod/modtrezorio/modtrezorio-poll.h @@ -85,9 +85,7 @@ STATIC mp_obj_t mod_trezorio_poll(mp_obj_t ifaces, mp_obj_t list_ref, } #if defined USE_TOUCH else if (iface == TOUCH_IFACE) { - - const uint32_t evt = touch_read(); - + const uint32_t evt = touch_get_event(); if (evt) { // ignore TOUCH_MOVE events if they are too frequent if ((evt & TOUCH_MOVE) == 0 || diff --git a/core/embed/lib/touch.c b/core/embed/lib/touch.c deleted file mode 100644 index 197d209f67..0000000000 --- a/core/embed/lib/touch.c +++ /dev/null @@ -1,22 +0,0 @@ - -#ifdef USE_TOUCH -#include "touch.h" - -uint32_t touch_click(void) { - uint32_t r = 0; - // flush touch events if any - while (touch_read()) { - } - // wait for TOUCH_START - while ((touch_read() & TOUCH_START) == 0) { - } - // wait for TOUCH_END - while (((r = touch_read()) & TOUCH_END) == 0) { - } - // flush touch events if any - while (touch_read()) { - } - // return last touch coordinate - return r; -} -#endif diff --git a/core/embed/prodtest/.changelog.d/3900.fixed b/core/embed/prodtest/.changelog.d/3900.fixed new file mode 100644 index 0000000000..07815ecf41 --- /dev/null +++ b/core/embed/prodtest/.changelog.d/3900.fixed @@ -0,0 +1 @@ +Fix TOUCH VERSION command diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index ced3767a46..af6c6794d0 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -312,15 +312,15 @@ static secbool touch_click_timeout(uint32_t *touch, uint32_t timeout_ms) { uint32_t deadline = HAL_GetTick() + timeout_ms; uint32_t r = 0; - while (touch_read()) + while (touch_get_event()) ; - while ((touch_read() & TOUCH_START) == 0) { + while ((touch_get_event() & TOUCH_START) == 0) { if (HAL_GetTick() > deadline) return secfalse; } - while (((r = touch_read()) & TOUCH_END) == 0) { + while (((r = touch_get_event()) & TOUCH_END) == 0) { if (HAL_GetTick() > deadline) return secfalse; } - while (touch_read()) + while (touch_get_event()) ; *touch = r; @@ -348,7 +348,7 @@ static void test_touch(const char *args) { } display_refresh(); - touch_power_on(); + touch_init(); uint32_t evt = 0; if (touch_click_timeout(&evt, timeout * 1000)) { @@ -361,20 +361,20 @@ static void test_touch(const char *args) { display_clear(); display_refresh(); - touch_power_off(); + touch_deinit(); } static void test_sensitivity(const char *args) { int v = atoi(args); - touch_power_on(); - touch_sensitivity(v & 0xFF); + touch_init(); + touch_set_sensitivity(v & 0xFF); display_clear(); display_refresh(); for (;;) { - uint32_t evt = touch_read(); + uint32_t evt = touch_get_event(); if (evt & TOUCH_START || evt & TOUCH_MOVE) { int x = touch_unpack_x(evt); int y = touch_unpack_y(evt); @@ -387,14 +387,14 @@ static void test_sensitivity(const char *args) { } } - touch_power_off(); + touch_deinit(); } static void touch_version(void) { - touch_power_on(); + touch_init(); uint8_t version = touch_get_version(); vcp_println("OK %d", version); - touch_power_off(); + touch_deinit(); } #endif diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index e0de9d1681..9d664cd788 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -442,7 +442,7 @@ fn generate_trezorhal_bindings() { //usb .allowlist_function("usb_configured") // touch - .allowlist_function("touch_read") + .allowlist_function("touch_get_event") // button .allowlist_function("button_read") // haptic diff --git a/core/embed/rust/src/trezorhal/io.rs b/core/embed/rust/src/trezorhal/io.rs index 7f9af446fb..6ece57df9f 100644 --- a/core/embed/rust/src/trezorhal/io.rs +++ b/core/embed/rust/src/trezorhal/io.rs @@ -1,8 +1,8 @@ use super::ffi; #[cfg(feature = "touch")] -pub fn io_touch_read() -> u32 { - unsafe { ffi::touch_read() } +pub fn io_touch_get_event() -> u32 { + unsafe { ffi::touch_get_event() } } #[cfg(feature = "button")] diff --git a/core/embed/rust/src/ui/layout/simplified.rs b/core/embed/rust/src/ui/layout/simplified.rs index 176de577ad..a966e1083a 100644 --- a/core/embed/rust/src/ui/layout/simplified.rs +++ b/core/embed/rust/src/ui/layout/simplified.rs @@ -1,7 +1,7 @@ #[cfg(feature = "button")] use crate::trezorhal::io::io_button_read; #[cfg(feature = "touch")] -use crate::trezorhal::io::io_touch_read; +use crate::trezorhal::io::io_touch_get_event; #[cfg(feature = "button")] use crate::ui::event::ButtonEvent; #[cfg(feature = "touch")] @@ -56,7 +56,7 @@ fn button_eval() -> Option<ButtonEvent> { #[cfg(feature = "touch")] fn touch_eval() -> Option<TouchEvent> { - let event = io_touch_read(); + let event = io_touch_get_event(); if event == 0 { return None; } diff --git a/core/embed/trezorhal/stm32f4/touch/ft6x36.c b/core/embed/trezorhal/stm32f4/touch/ft6x36.c index eb2b4cf30a..eb1d18f0a5 100644 --- a/core/embed/trezorhal/stm32f4/touch/ft6x36.c +++ b/core/embed/trezorhal/stm32f4/touch/ft6x36.c @@ -20,34 +20,105 @@ #include STM32_HAL_H #include TREZOR_BOARD +#include <stdbool.h> #include <string.h> #include "common.h" -#include "secbool.h" #include "ft6x36.h" #include "i2c.h" #include "touch.h" -#define TOUCH_ADDRESS \ - (0x38U << 1) // the HAL requires the 7-bit address to be shifted by one bit -#define TOUCH_PACKET_SIZE 7U -#define EVENT_PRESS_DOWN 0x00U -#define EVENT_CONTACT 0x80U -#define EVENT_LIFT_UP 0x40U -#define EVENT_NO_EVENT 0xC0U -#define GESTURE_NO_GESTURE 0x00U -#define X_POS_MSB (touch_data[3] & 0x0FU) -#define X_POS_LSB (touch_data[4]) -#define Y_POS_MSB (touch_data[5] & 0x0FU) -#define Y_POS_LSB (touch_data[6]) - -#define EVENT_OLD_TIMEOUT_MS 50 -#define EVENT_MISSING_TIMEOUT_MS 50 - -static uint32_t touch_init_ticks = 0; - -static void touch_default_pin_state(void) { +typedef struct { + // Set if the driver is initialized + secbool initialized; + // Set if the driver is ready to report touches. + // FT6X36 needs about 300ms after power-up to stabilize. + secbool ready; + // Captured tick counter when `touch_init()` was called + uint32_t init_ticks; + // Time (in ticks) when touch_get_event() was called last time + uint32_t poll_ticks; + // Set if the touch controller is currently touched + // (respectively, the we detected a touch event) + bool pressed; + // Previously reported x-coordinate + uint16_t last_x; + // Previously reported y-coordinate + uint16_t last_y; + +} touch_driver_t; + +// Touch driver instance +static touch_driver_t g_touch_driver = { + .initialized = secfalse, +}; + +// Reads a subsequent registers from the FT6X36. +// +// Returns: `sectrue` if the register was read +// successfully, `secfalse` otherwise. +// +// If the I2C bus is busy, the function will cycle the +// bus and retry the operation. +static secbool ft6x36_read_regs(uint8_t reg, uint8_t* value, size_t count) { + uint16_t i2c_bus = TOUCH_I2C_INSTANCE; + uint8_t i2c_addr = FT6X36_I2C_ADDR; + uint8_t txdata[] = {reg}; + uint8_t retries = 3; + + do { + int result = i2c_transmit(i2c_bus, i2c_addr, txdata, sizeof(txdata), 10); + if (HAL_OK == result) { + result = i2c_receive(i2c_bus, i2c_addr, value, count, 10); + } + + if (HAL_OK == result) { + // success + return sectrue; + } else if (HAL_BUSY == result && retries > 0) { + // I2C bus is busy, cycle it and try again + i2c_cycle(i2c_bus); + retries--; + } else { + // Aother error or retries exhausted + return secfalse; + } + } while (1); +} + +// Writes a register to the FT6X36. +// +// Returns: `sectrue` if the register was written +// successfully, `secfalse` otherwise. +// +// If the I2C bus is busy, the function will cycle the +// bus and retry the operation. +static secbool ft6x36_write_reg(uint8_t reg, uint8_t value) { + uint16_t i2c_bus = TOUCH_I2C_INSTANCE; + uint8_t i2c_addr = FT6X36_I2C_ADDR; + uint8_t txdata[] = {reg, value}; + uint8_t retries = 3; + + do { + int result = i2c_transmit(i2c_bus, i2c_addr, txdata, sizeof(txdata), 10); + if (HAL_OK == result) { + // success + return sectrue; + } else if (HAL_BUSY == result && retries > 0) { + // I2C bus is busy, cycle it and try again + i2c_cycle(i2c_bus); + retries--; + } else { + // Another error or retries exhausted + return secfalse; + } + } while (1); +} + +// Powers down the touch controller and puts all +// the pins in the proper state to save power. +static void ft6x36_power_down(void) { GPIO_PinState state = HAL_GPIO_ReadPin(TOUCH_ON_PORT, TOUCH_ON_PIN); // set power off and other pins as per section 3.5 of FT6236 datasheet @@ -74,227 +145,291 @@ static void touch_default_pin_state(void) { GPIO_InitStructure.Pin = TOUCH_ON_PIN; HAL_GPIO_Init(TOUCH_ON_PORT, &GPIO_InitStructure); - // in-case power was on, or CTPM was active make sure to wait long enough - // for these changes to take effect. a reset needs to be low for - // a minimum of 5ms. also wait for power circuitry to stabilize (if it - // changed). - HAL_Delay(10); - if (state == GPIO_PIN_SET) { - HAL_Delay(90); // add 90 ms for circuitry to stabilize (being conservative) + // 90 ms for circuitry to stabilize (being conservative) + hal_delay(90); } } -static void touch_active_pin_state(void) { - HAL_GPIO_WritePin(TOUCH_ON_PORT, TOUCH_ON_PIN, GPIO_PIN_RESET); // CTP_ON - HAL_Delay(10); // we need to wait until the circuit fully kicks-in - +// Powers up the touch controller and do proper reset sequence +// +// `ft6x36_power_down()` must be called before calling this first time function +// to properly initialize the GPIO pins. +static void ft6x36_power_up(void) { + // Ensure the touch controller is in reset state + HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, GPIO_PIN_RESET); + // Power up the touch controller + HAL_GPIO_WritePin(TOUCH_ON_PORT, TOUCH_ON_PIN, GPIO_PIN_RESET); + + // Wait until the circuit fully kicks-in + // (5ms is the minimum time required for the reset signal to be effective) + hal_delay(10); + + // Enable intterrupt input GPIO_InitTypeDef GPIO_InitStructure = {0}; - - // capacitive touch panel module (CTPM) interrupt (INT) input GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING; GPIO_InitStructure.Pull = GPIO_PULLUP; GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStructure.Pin = TOUCH_INT_PIN; HAL_GPIO_Init(TOUCH_INT_PORT, &GPIO_InitStructure); - __HAL_GPIO_EXTI_CLEAR_FLAG(TOUCH_INT_PIN); - HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, - GPIO_PIN_SET); // release CTPM reset + // Release touch controller from reset + HAL_GPIO_WritePin(TOUCH_RST_PORT, TOUCH_RST_PIN, GPIO_PIN_SET); - touch_init_ticks = hal_ticks_ms(); + // Wait for the touch controller to boot up + hal_delay(5); - HAL_Delay(5); + // Clear the flag indicating rising edge on INT_PIN + __HAL_GPIO_EXTI_CLEAR_FLAG(TOUCH_INT_PIN); } -secbool touch_set_mode(void) { - // set register 0xA4 G_MODE to interrupt trigger mode (0x01). basically, CTPM - // generates a pulse when new data is available - uint8_t touch_panel_config[] = {0xA4, 0x01}; - for (int i = 0; i < 3; i++) { - if (HAL_OK == i2c_transmit(TOUCH_I2C_INSTANCE, TOUCH_ADDRESS, - touch_panel_config, sizeof(touch_panel_config), - 10)) { - return sectrue; - } - i2c_cycle(TOUCH_I2C_INSTANCE); +// Checks if the touch controller has an interrupt pending +// which indicates that new data is available. +// +// The function clears the interrupt flag if it was set so the +// next call returns `false` if no new impulses were detected. +static bool ft6x36_test_and_clear_interrupt(void) { + uint32_t event = __HAL_GPIO_EXTI_GET_FLAG(TOUCH_INT_PIN); + if (event != 0) { + __HAL_GPIO_EXTI_CLEAR_FLAG(TOUCH_INT_PIN); } - return secfalse; + return event != 0; } -void touch_power_on(void) { - touch_default_pin_state(); - - // turn on CTP circuitry - touch_active_pin_state(); -} +// Configures the touch controller to the funtional state. +static secbool ft6x36_configure(void) { + const static uint8_t config[] = { + // Set touch controller to the interrupt trigger mode. + // Basically, CTPM generates a pulse when new data is available. + FT6X36_REG_G_MODE, + 0x01, + FT6X36_REG_TH_GROUP, + TOUCH_SENSITIVITY, + }; + + _Static_assert(sizeof(config) % 2 == 0); + + for (int i = 0; i < sizeof(config); i += 2) { + uint8_t reg = config[i]; + uint8_t value = config[i + 1]; + + if (sectrue != ft6x36_write_reg(reg, value)) { + return secfalse; + } + } -void touch_power_off(void) { - // turn off CTP circuitry - HAL_Delay(50); - touch_default_pin_state(); + return sectrue; } secbool touch_init(void) { - GPIO_InitTypeDef GPIO_InitStructure = {0}; + touch_driver_t* driver = &g_touch_driver; - // PC4 capacitive touch panel module (CTPM) interrupt (INT) input - GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING; - GPIO_InitStructure.Pull = GPIO_PULLUP; - GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStructure.Pin = TOUCH_INT_PIN; - HAL_GPIO_Init(TOUCH_INT_PORT, &GPIO_InitStructure); - __HAL_GPIO_EXTI_CLEAR_FLAG(TOUCH_INT_PIN); + if (sectrue == driver->initialized) { + // The driver is already initialized + return sectrue; + } + + // Initialize GPIO to the default configuration + // (touch controller is powered down) + ft6x36_power_down(); - if (sectrue != touch_set_mode()) { + // Power up the touch controller and perform the reset sequence + ft6x36_power_up(); + + // Configure the touch controller + if (sectrue != ft6x36_configure()) { + ft6x36_power_down(); return secfalse; } - return touch_sensitivity(TOUCH_SENSITIVITY); + + driver->init_ticks = hal_ticks_ms(); + driver->poll_ticks = driver->init_ticks; + driver->initialized = sectrue; + + return sectrue; } -void touch_wait_until_ready(void) { - // wait for the touch controller to be ready - while (hal_ticks_ms() - touch_init_ticks < 310) { - HAL_Delay(1); +void touch_deinit(void) { + touch_driver_t* driver = &g_touch_driver; + + if (sectrue == driver->initialized) { + // Do not need to deinitialized the controller + // just power it off + ft6x36_power_down(); + + memset(driver, 0, sizeof(touch_driver_t)); } } -secbool touch_sensitivity(uint8_t value) { - // set panel threshold (TH_GROUP) - default value is 0x12 - uint8_t touch_panel_threshold[] = {0x80, value}; - for (int i = 0; i < 3; i++) { - if (HAL_OK == i2c_transmit(TOUCH_I2C_INSTANCE, TOUCH_ADDRESS, - touch_panel_threshold, - sizeof(touch_panel_threshold), 10)) { - return sectrue; +secbool touch_ready(void) { + touch_driver_t* driver = &g_touch_driver; + + if (sectrue == driver->initialized && sectrue != driver->ready) { + // FT6X36 does not report events for 300ms + // after it is released from the reset state + if ((int)(hal_ticks_ms() - driver->init_ticks) >= 310) { + driver->ready = sectrue; } - i2c_cycle(TOUCH_I2C_INSTANCE); } - return secfalse; + return driver->ready; } -uint32_t touch_is_detected(void) { - // check the interrupt line coming in from the CTPM. - // the line make a short pulse, which sets an interrupt flag when new data is - // available. - // Reference section 1.2 of "Application Note for FT6x06 CTPM". we - // configure the touch controller to use "interrupt trigger mode". +secbool touch_set_sensitivity(uint8_t value) { + touch_driver_t* driver = &g_touch_driver; - uint32_t event = __HAL_GPIO_EXTI_GET_FLAG(TOUCH_INT_PIN); - if (event != 0) { - __HAL_GPIO_EXTI_CLEAR_FLAG(TOUCH_INT_PIN); + if (sectrue == driver->initialized) { + return ft6x36_write_reg(FT6X36_REG_TH_GROUP, value); + } else { + return secfalse; } +} - return event; +uint8_t touch_get_version(void) { + touch_driver_t* driver = &g_touch_driver; + + if (sectrue != driver->initialized) { + return 0; + } + + // After powering up the touch controller, we need to wait + // for an unspecified amount of time (~100ms) before attempting + // to read the firmware version. If we try to read too soon, we get 0x00 + // and the chip behaves unpredictably. + while (sectrue != touch_ready()) { + hal_delay(1); + } + + uint8_t fw_version = 0; + + if (sectrue != ft6x36_read_regs(FT6X36_REG_FIRMID, &fw_version, 1)) { + ft6x36_power_down(); + return secfalse; + } + + return fw_version; } -uint32_t check_timeout(uint32_t prev, uint32_t timeout) { - uint32_t current = hal_ticks_ms(); - uint32_t diff = current - prev; +secbool touch_activity(void) { + touch_driver_t* driver = &g_touch_driver; - if (diff >= timeout) { - return 1; + if (sectrue == driver->initialized) { + if (ft6x36_test_and_clear_interrupt()) { + return sectrue; + } } - return 0; + return secfalse; } -uint32_t touch_read(void) { - static uint8_t touch_data[TOUCH_PACKET_SIZE], - previous_touch_data[TOUCH_PACKET_SIZE]; - static uint32_t xy; - static uint32_t last_check_time = 0; - static uint32_t last_event_time = 0; - static int touching = 0; +uint32_t touch_get_event(void) { + touch_driver_t* driver = &g_touch_driver; - uint32_t detected = touch_is_detected(); + if (sectrue != driver->initialized) { + return 0; + } - if (detected == 0) { - last_check_time = hal_ticks_ms(); + // Content of registers 0x00 - 0x06 read from the touch controller + uint8_t regs[7]; - if (touching && check_timeout(last_event_time, EVENT_MISSING_TIMEOUT_MS)) { - // we didn't detect an event for a long time, but there was an active - // touch: send END event, as we probably missed the END event - touching = 0; - return TOUCH_END | xy; - } + // Ensure the registers are within the bounds + _Static_assert(sizeof(regs) > FT6X63_REG_GEST_ID); + _Static_assert(sizeof(regs) > FT6X63_REG_TD_STATUS); + _Static_assert(sizeof(regs) > FT6X63_REG_P1_XH); + _Static_assert(sizeof(regs) > FT6X63_REG_P1_XL); + _Static_assert(sizeof(regs) > FT6X63_REG_P1_YH); + _Static_assert(sizeof(regs) > FT6X63_REG_P1_YL); + + uint32_t ticks = hal_ticks_ms(); + // Test if the touch_get_event() is starving (not called frequently enough) + bool starving = (int32_t)(ticks - driver->poll_ticks) > 300 /* ms */; + driver->poll_ticks = ticks; + + // Fast track: if there is no new event and the touch controller + // is not touched, we do not need to read the registers + if (!ft6x36_test_and_clear_interrupt() && !driver->pressed) { return 0; } - if ((touching == 0) && - (check_timeout(last_check_time, EVENT_OLD_TIMEOUT_MS))) { - // we have detected an event, but it might be too old, rather drop it - // (only dropping old events if there was no touch active) - last_check_time = hal_ticks_ms(); + // Read the set of registers containing touch event and coordinates + if (sectrue != ft6x36_read_regs(0x00, regs, sizeof(regs))) { + // Failed to read the touch registers return 0; } - last_check_time = hal_ticks_ms(); + // Extract gesture ID (FT6X63_GESTURE_xxx) + uint8_t gesture = regs[FT6X63_REG_GEST_ID]; - uint8_t outgoing[] = {0x00}; // start reading from address 0x00 - int result = i2c_transmit(TOUCH_I2C_INSTANCE, TOUCH_ADDRESS, outgoing, - sizeof(outgoing), 1); - if (result != HAL_OK) { - if (result == HAL_BUSY) i2c_cycle(TOUCH_I2C_INSTANCE); + if (gesture != FT6X36_GESTURE_NONE) { + // This is here for unknown historical reasons + // It seems we can't get here with FT6X36 return 0; } - if (HAL_OK != i2c_receive(TOUCH_I2C_INSTANCE, TOUCH_ADDRESS, touch_data, - TOUCH_PACKET_SIZE, 1)) { - return 0; // read failure - } + // Extract number of touches (0, 1, 2) or 0x0F before + // the first touch (tested with FT6206) + uint8_t nb_touches = regs[FT6X63_REG_TD_STATUS] & 0x0F; - last_event_time = hal_ticks_ms(); + // Extract event flags (one of press down, contact, lift up) + uint8_t flags = regs[FT6X63_REG_P1_XH] & FT6X63_EVENT_MASK; - if (0 == memcmp(previous_touch_data, touch_data, TOUCH_PACKET_SIZE)) { - return 0; // same data, filter it out - } else { - memcpy(previous_touch_data, touch_data, TOUCH_PACKET_SIZE); - } + // Extract touch coordinates + uint16_t x = ((regs[FT6X63_REG_P1_XH] & 0x0F) << 8) | regs[FT6X63_REG_P1_XL]; + uint16_t y = ((regs[FT6X63_REG_P1_YH] & 0x0F) << 8) | regs[FT6X63_REG_P1_YL]; + + uint32_t event = 0; - const uint32_t number_of_touch_points = - touch_data[2] & 0x0F; // valid values are 0, 1, 2 (invalid 0xF before - // first touch) (tested with FT6206) - const uint32_t event_flag = touch_data[3] & 0xC0; - if (touch_data[1] == GESTURE_NO_GESTURE) { - xy = touch_pack_xy((X_POS_MSB << 8) | X_POS_LSB, - (Y_POS_MSB << 8) | Y_POS_LSB); - if ((number_of_touch_points == 1) && (event_flag == EVENT_PRESS_DOWN)) { - touching = 1; - return TOUCH_START | xy; - } else if ((number_of_touch_points == 1) && (event_flag == EVENT_CONTACT)) { - if (touching) { - return TOUCH_MOVE | xy; - } else { - touching = 1; - return TOUCH_START | xy; + uint32_t xy = touch_pack_xy(x, y); + + if ((nb_touches == 1) && (flags == FT6X63_EVENT_PRESS_DOWN)) { + if (!driver->pressed) { + // Finger was just pressed down + event = TOUCH_START | xy; + } else { + // It looks like we have missed the lift up event + // We should send the TOUCH_END event here with old coordinates + event = TOUCH_END | touch_pack_xy(driver->last_x, driver->last_y); + } + } else if ((nb_touches == 1) && (flags == FT6X63_EVENT_CONTACT)) { + if (driver->pressed) { + if ((x != driver->last_x) || (y != driver->last_y)) { + // Report the move event only if the coordinates + // have changed + event = TOUCH_MOVE | xy; + } + } else { + // We have missed the press down event, we have to simulate it. + // But ensure we don't simulate TOUCH_START if touch_get_event() is not + // called frequently enough to not produce false events. + if (!starving) { + event = TOUCH_START | xy; } - } else if ((number_of_touch_points == 0) && (event_flag == EVENT_LIFT_UP)) { - touching = 0; - return TOUCH_END | xy; + } + } else if ((nb_touches == 0) && (flags == FT6X63_EVENT_LIFT_UP)) { + if (driver->pressed) { + // Finger was just lifted up + event = TOUCH_END | xy; + } else { + // 1. Most likely, we have missed the PRESS_DOWN event. + // Touch duration was too short (< 20ms) to be worth reporting. + // 2. Finger is still lifted up. Since we have already sent the + // TOUCH_END event => no event needed. This should not happen + // since two consecutive LIFT_UPs are not possible due to + // testing the interrupt line before reading the registers. } } - return 0; -} - -uint8_t touch_get_version(void) { - uint8_t version = 0; - uint8_t outgoing[] = {0xA6}; // start reading from address 0xA6 - int result = i2c_transmit(TOUCH_I2C_INSTANCE, TOUCH_ADDRESS, outgoing, - sizeof(outgoing), 1); - if (result != HAL_OK) { - if (result == HAL_BUSY) i2c_cycle(TOUCH_I2C_INSTANCE); - return 0; + // remember the last state + if ((event & TOUCH_START) || (event & TOUCH_MOVE)) { + driver->pressed = true; + } else if (event & TOUCH_END) { + driver->pressed = false; } - if (HAL_OK != i2c_receive(TOUCH_I2C_INSTANCE, TOUCH_ADDRESS, &version, - sizeof(version), 1)) { - return 0; // read failure - } + driver->last_x = x; + driver->last_y = y; - return version; + return event; } diff --git a/core/embed/trezorhal/stm32f4/touch/ft6x36.h b/core/embed/trezorhal/stm32f4/touch/ft6x36.h index 6f24a048be..8629a12693 100644 --- a/core/embed/trezorhal/stm32f4/touch/ft6x36.h +++ b/core/embed/trezorhal/stm32f4/touch/ft6x36.h @@ -20,4 +20,57 @@ #ifndef _TOUCH_FT6X36_H #define _TOUCH_FT6X36_H +// I2C address of the FT6X36 on the I2C bus. +// `<< 1` is required because the HAL expects the address to be shifted by 1. +#define FT6X36_I2C_ADDR (0x38 << 1) + +// ------------------------------------------------------------ +// FT6X36 registers +// ------------------------------------------------------------ + +// Gesture ID (see `FT6X36_GESTURE_xxx`) +#define FT6X63_REG_GEST_ID 0x01 + +// TD_STATUS (number of touch points in lower 4 bits) +#define FT6X63_REG_TD_STATUS 0x02 + +// Event flags in higher 2 bits (see `FT6X63_EVENT_xxx`) +// MSB of touch x-coordinate in lower 4 bits +#define FT6X63_REG_P1_XH 0x03 + +// LSB of touch x-coordinate +#define FT6X63_REG_P1_XL 0x04 + +// MSB of touch y-coordinate in lower 4 bits +#define FT6X63_REG_P1_YH 0x05 + +// LSB of touch y-coordinate +#define FT6X63_REG_P1_YL 0x06 + +// Threshold for touch detection +#define FT6X36_REG_TH_GROUP 0x80 + +// Mode register +// 0x00 - interrupt polling mode +// 0x01 - interrupt trigger mode +#define FT6X36_REG_G_MODE 0xA4 + +// Firmware version +#define FT6X36_REG_FIRMID 0xA6 + +// ------------------------------------------------------------ +// Event bits (see FT6X63_REG_P1_XH) +// ------------------------------------------------------------ + +#define FT6X63_EVENT_PRESS_DOWN 0x00 +#define FT6X63_EVENT_CONTACT 0x80 +#define FT6X63_EVENT_LIFT_UP 0x40 +#define FT6X63_EVENT_MASK 0xC0 + +// ------------------------------------------------------------ +// Gesture types (see FT6X63_REG_GEST_ID) +// ------------------------------------------------------------ + +#define FT6X36_GESTURE_NONE 0x00 + #endif diff --git a/core/embed/trezorhal/stm32f4/touch/stmpe811.c b/core/embed/trezorhal/stm32f4/touch/stmpe811.c index 4a503b1ec7..1d198513e2 100644 --- a/core/embed/trezorhal/stm32f4/touch/stmpe811.c +++ b/core/embed/trezorhal/stm32f4/touch/stmpe811.c @@ -320,26 +320,6 @@ uint16_t IOE_ReadMultiple(uint8_t Addr, uint8_t Reg, uint8_t *pBuffer, */ void IOE_Delay(uint32_t Delay) { HAL_Delay(Delay); } -static void touch_active_pin_state(void) { - // HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET); // CTP_ON/PB10 - // HAL_Delay(10); // we need to wait until the circuit fully kicks-in - - GPIO_InitTypeDef GPIO_InitStructure = {0}; - - // PC4 capacitive touch panel module (CTPM) interrupt (INT) input - GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING; - GPIO_InitStructure.Pull = GPIO_PULLUP; - GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStructure.Pin = GPIO_PIN_15; - HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); - __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_15); - - // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_5, GPIO_PIN_SET); // release CTPM reset - // HAL_Delay(310); // "Time of starting to report point after resetting" min - // is - // 300ms, giving an extra 10ms -} - /** * @brief Enable the AF for the selected IO pin(s). * @param DeviceAddr: Device address on communication Bus. @@ -439,17 +419,6 @@ void touch_set_mode(void) { IOE_Delay(2); } -void touch_power_on(void) { - // turn on CTP circuitry - touch_active_pin_state(); - HAL_Delay(50); -} - -void touch_power_off(void) { - // turn off CTP circuitry - HAL_Delay(50); -} - /** * @brief Reset the stmpe811 by Software. * @param DeviceAddr: Device address on communication Bus. @@ -470,55 +439,7 @@ void stmpe811_Reset() { IOE_Delay(2); } -secbool touch_init(void) { - GPIO_InitTypeDef GPIO_InitStructure = {0}; - - __HAL_RCC_GPIOA_CLK_ENABLE(); - - // PC4 capacitive touch panel module (CTPM) interrupt (INT) input - GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING; - GPIO_InitStructure.Pull = GPIO_PULLUP; - GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW; - GPIO_InitStructure.Pin = GPIO_PIN_15; - HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); - __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_15); - - stmpe811_Reset(); - touch_set_mode(); - touch_sensitivity(0x06); - - return sectrue; -} - -secbool touch_sensitivity(uint8_t value) { - // set panel threshold (TH_GROUP) - default value is 0x12 - // uint8_t touch_panel_threshold[] = {0x80, value}; - // ensure(sectrue * - // (HAL_OK == HAL_I2C_Master_Transmit( - // &I2c_handle, TOUCH_ADDRESS, touch_panel_threshold, - // sizeof(touch_panel_threshold), 10)), - // NULL); - return sectrue; -} - -uint32_t touch_is_detected(void) { - uint8_t state = ((IOE_Read(TS_I2C_ADDRESS, STMPE811_REG_TSC_CTRL) & - (uint8_t)STMPE811_TS_CTRL_STATUS) == (uint8_t)0x80); - return state > 0; -} - -uint32_t touch_active(void) { - // check the interrupt line coming in from the CTPM. - // the line make a short pulse, which sets an interrupt flag when new data is - // available. - // Reference section 1.2 of "Application Note for FT6x06 CTPM". we - // configure the touch controller to use "interrupt trigger mode". - - // uint32_t event = __HAL_GPIO_EXTI_GET_FLAG(GPIO_PIN_15); - // if (event != 0) { - // __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_15); - // } - +static uint32_t touch_active(void) { uint8_t state; uint8_t ret = 0; @@ -539,17 +460,6 @@ uint32_t touch_active(void) { return ret; } -uint32_t check_timeout(uint32_t prev, uint32_t timeout) { - uint32_t current = hal_ticks_ms(); - uint32_t diff = current - prev; - - if (diff >= timeout) { - return 1; - } - - return 0; -} - /** * @brief Get the touch screen X and Y positions values * @param DeviceAddr: Device address on communication Bus. @@ -647,62 +557,87 @@ void BSP_TS_GetState(TS_StateTypeDef *TsState) { } } -uint32_t touch_read(void) { - TS_StateTypeDef state = {0}; - static uint32_t xy = 0; - static TS_StateTypeDef state_last = {0}; - // static uint16_t first = 1; - static uint16_t touching = 0; - - if (!touch_is_detected()) { - if (touching) { - // touch end - memcpy(&state_last, &state, sizeof(state)); - touching = 0; - return TOUCH_END | xy; - } - return 0; - } +typedef struct { + // Set if driver is initialized + secbool initialized; + // Last lower-level driver state + TS_StateTypeDef prev_state; - BSP_TS_GetState(&state); +} touch_driver_t; - if (state.TouchDetected == 0) { - return 0; - } +// Touch driver instance +static touch_driver_t g_touch_driver = { + .initialized = secfalse, +}; - // if (first != 0) { - // memcpy(&state_last, &state, sizeof(state)); - // first = 0; - // return 0; - // } +secbool touch_init(void) { + touch_driver_t *driver = &g_touch_driver; - if ((state.TouchDetected == 0 && state_last.TouchDetected == 0) || - memcmp(&state, &state_last, sizeof(state)) == 0) { - // no change detected - return 0; + if (driver->initialized != sectrue) { + stmpe811_Reset(); + touch_set_mode(); + + driver->initialized = sectrue; } - xy = touch_pack_xy(state.X, state.Y); - - if (state.TouchDetected && !state_last.TouchDetected) { - // touch start - memcpy(&state_last, &state, sizeof(state)); - touching = 1; - return TOUCH_START | xy; - } else if (!state.TouchDetected && state_last.TouchDetected) { - // touch end - memcpy(&state_last, &state, sizeof(state)); - touching = 0; - return TOUCH_END | xy; - } else { - // touch move - memcpy(&state_last, &state, sizeof(state)); - return TOUCH_MOVE | xy; + return driver->initialized; +} + +void touch_deinit(void) { + touch_driver_t *driver = &g_touch_driver; + + if (driver->initialized == sectrue) { + // Not implemented properly + + memset(driver, 0, sizeof(touch_driver_t)); } +} + +secbool touch_ready(void) { + touch_driver_t *driver = &g_touch_driver; + return driver->initialized; +} +secbool touch_set_sensitivity(uint8_t value) { + // Not implemented for the discovery kit + return sectrue; +} + +uint8_t touch_get_version(void) { + // Not implemented for the discovery kit return 0; } -void touch_wait_until_ready(void) {} +secbool touch_activity(void) { + uint8_t state = ((IOE_Read(TS_I2C_ADDRESS, STMPE811_REG_TSC_CTRL) & + (uint8_t)STMPE811_TS_CTRL_STATUS) == (uint8_t)0x80); + return state > 0 ? sectrue : secfalse; +} + +uint32_t touch_get_event(void) { + touch_driver_t *driver = &g_touch_driver; -uint8_t touch_get_version(void) { return 0; } + if (driver->initialized != sectrue) { + return 0; + } + + TS_StateTypeDef new_state = {0}; + BSP_TS_GetState(&new_state); + + uint32_t event = 0; + + if (new_state.TouchDetected && !driver->prev_state.TouchDetected) { + uint32_t xy = touch_pack_xy(new_state.X, new_state.Y); + event = TOUCH_START | xy; + } else if (!new_state.TouchDetected && driver->prev_state.TouchDetected) { + uint32_t xy = touch_pack_xy(driver->prev_state.X, driver->prev_state.Y); + event = TOUCH_END | xy; + } else if (new_state.TouchDetected) { + uint32_t xy = touch_pack_xy(new_state.X, new_state.Y); + event = TOUCH_MOVE | xy; + } + + driver->prev_state = new_state; + + return event; +} diff --git a/core/embed/trezorhal/stm32u5/touch/sitronix.c b/core/embed/trezorhal/stm32u5/touch/sitronix.c index b705ceba77..91301376bf 100644 --- a/core/embed/trezorhal/stm32u5/touch/sitronix.c +++ b/core/embed/trezorhal/stm32u5/touch/sitronix.c @@ -360,7 +360,6 @@ int32_t SITRONIX_GetState(SITRONIX_Object_t *pObj, SITRONIX_State_t *State) { return ret; } - /** * @brief Get the touch screen Xn and Yn positions values in multi-touch mode * @param pObj Component object pointer @@ -1135,86 +1134,100 @@ static int32_t SITRONIX_Probe(uint32_t Instance) { #include <string.h> #include "touch.h" +// Touch driver +typedef struct { + // Set if driver is initialized + secbool initialized; + // Last lower-level driver state + TS_State_t prev_state; + +} touch_driver_t; + +// Touch driver instance +static touch_driver_t g_touch_driver = { + .initialized = secfalse, +}; + secbool touch_init(void) { - TS_Init_t TsInit; + touch_driver_t *driver = &g_touch_driver; - /* Initialize the TouchScreen */ - TsInit.Width = 480; - TsInit.Height = 480; - TsInit.Orientation = 0; - TsInit.Accuracy = 10; + if (sectrue != driver->initialized) { + TS_Init_t TsInit; - BSP_TS_Init(0, &TsInit); + /* Initialize the TouchScreen */ + TsInit.Width = 480; + TsInit.Height = 480; + TsInit.Orientation = 0; + TsInit.Accuracy = 10; - return sectrue; + BSP_TS_Init(0, &TsInit); + + driver->initialized = sectrue; + } + + return driver->initialized; } -void touch_power_on(void) {} -void touch_power_off(void) {} -secbool touch_sensitivity(uint8_t value) { return sectrue; } - -uint32_t touch_is_detected(void) { return sitronix_touching != 0; } - -uint32_t touch_read(void) { - TS_State_t state = {0}; - static uint32_t xy = 0; - static TS_State_t state_last = {0}; - // static uint16_t first = 1; - static uint16_t touching = 0; - - BSP_TS_GetState(0, &state); - - state.TouchDetected = touch_is_detected(); - state.TouchY = state.TouchY > 120 ? state.TouchY - 120 : 0; - state.TouchX = state.TouchX > 120 ? state.TouchX - 120 : 0; - - if (!touch_is_detected()) { - // if (state.TouchDetected == 0) { - if (touching) { - // touch end - memcpy(&state_last, &state, sizeof(state)); - touching = 0; - return TOUCH_END | xy; - } - return 0; + +void touch_deinit(void) { + touch_driver_t *driver = &g_touch_driver; + + if (sectrue == driver->initialized) { + BSP_TS_DeInit(0); + memset(driver, 0, sizeof(touch_driver_t)); } +} - if (state.TouchDetected == 0) { - return 0; +secbool touch_ready(void) { + touch_driver_t *driver = &g_touch_driver; + return driver->initialized; +} + +secbool touch_set_sensitivity(uint8_t value) { + // Not implemented for the discovery kit + return sectrue; +} + +uint8_t touch_get_version(void) { + // Not implemented for the discovery kit + return 0; +} + +secbool touch_activity(void) { + if (sitronix_touching) { + return sectrue; + } else { + return secfalse; } +} - // if (first != 0) { - // memcpy(&state_last, &state, sizeof(state)); - // first = 0; - // return 0; - // } +uint32_t touch_get_event(void) { + touch_driver_t *driver = &g_touch_driver; - if ((state.TouchDetected == 0 && state_last.TouchDetected == 0) || - memcmp(&state, &state_last, sizeof(state)) == 0) { - // no change detected + if (sectrue != driver->initialized) { return 0; } - xy = touch_pack_xy(state.TouchX, state.TouchY); - - if (state.TouchDetected && !state_last.TouchDetected) { - // touch start - memcpy(&state_last, &state, sizeof(state)); - touching = 1; - return TOUCH_START | xy; - } else if (!state.TouchDetected && state_last.TouchDetected) { - // touch end - memcpy(&state_last, &state, sizeof(state)); - touching = 0; - return TOUCH_END | xy; - } else { - // touch move - memcpy(&state_last, &state, sizeof(state)); - return TOUCH_MOVE | xy; - } + TS_State_t new_state = {0}; + BSP_TS_GetState(0, &new_state); - return 0; -} + new_state.TouchX = new_state.TouchX > 120 ? new_state.TouchX - 120 : 0; + new_state.TouchY = new_state.TouchY > 120 ? new_state.TouchY - 120 : 0; -void touch_wait_until_ready(void) {} + uint32_t event = 0; -uint8_t touch_get_version(void) { return 0; } + if (new_state.TouchDetected && !driver->prev_state.TouchDetected) { + uint32_t xy = touch_pack_xy(new_state.TouchX, new_state.TouchY); + event = TOUCH_START | xy; + } else if (!new_state.TouchDetected && driver->prev_state.TouchDetected) { + uint32_t xy = + touch_pack_xy(driver->prev_state.TouchX, driver->prev_state.TouchY); + event = TOUCH_END | xy; + } else if (new_state.TouchDetected) { + uint32_t xy = touch_pack_xy(new_state.TouchX, new_state.TouchY); + event = TOUCH_MOVE | xy; + } + + driver->prev_state = new_state; + + return event; +} diff --git a/core/embed/trezorhal/touch.h b/core/embed/trezorhal/touch.h index decfa212d7..d0fe29a561 100644 --- a/core/embed/trezorhal/touch.h +++ b/core/embed/trezorhal/touch.h @@ -1,32 +1,90 @@ -#ifndef _TOUCH_H -#define _TOUCH_H +#ifndef TREZOR_HAL_TOUCH_H +#define TREZOR_HAL_TOUCH_H #include <stdint.h> #include "secbool.h" -#define TOUCH_START (1U << 24) -#define TOUCH_MOVE (1U << 25) -#define TOUCH_END (1U << 26) - +// Initializes the touch driver +// +// Powers on and initializes touch driver controller. +// The function has no effect if the driver was already initialized. +// +// Returns `sectrue` if the hardware was successfuly initialized. secbool touch_init(void); -void touch_power_on(void); -void touch_power_off(void); -void touch_wait_until_ready(void); -secbool touch_sensitivity(uint8_t value); -uint32_t touch_read(void); -uint32_t touch_click(void); -uint32_t touch_is_detected(void); +// Deinitializes the touch driver +// +// The function deinitializes touch controller and powers it off. +void touch_deinit(); + +// Checks if the touch driver is ready to report touches +// +// Some drivers need time after power-up to stabilize. The app +// may use this function to wait until touch controller is +// fully functional. +secbool touch_ready(void); + +// Gets the touch controller firmware version +// +// Can be called only if the touch controller was initialized, +// othervise returns 0. +// +// We do not interpret the value of the version, we just print it +// during the production test. uint8_t touch_get_version(void); +// Sets touch controller sensitivity +// +// (Internally threadhsold for ????) +secbool touch_set_sensitivity(uint8_t value); + +// Checks if the touch is currently reporting any events +// +// The purpose of this function is very special. It is used +// in bootloader startup to detect if the user is touching the screen. +// On some hardware it's a bit more sensitive then `touch_get_event()` +// since it does not filter out any events. +// +// The function should not be used together with `touch_get_event()`. +secbool touch_activity(void); + +// Returns the last event in packed 32-bit format +// +// Returns `0` if there's no event or the driver is not initialized. +uint32_t touch_get_event(void); + +// Touch event is packed 32-bit value +// +// 31 24 23 12 11 0 +// |--------|------------|------------| +// | event | x-coord | y-coord | +// |--------|------------|------------| +// +// + +// Touch event bits +#define TOUCH_START (1U << 24) +#define TOUCH_MOVE (1U << 25) +#define TOUCH_END (1U << 26) + +// Returns x-coordinates from a packed touch event static inline uint16_t touch_unpack_x(uint32_t evt) { return (evt >> 12) & 0xFFF; } + +// Returns y-coordinates from a packed touch event static inline uint16_t touch_unpack_y(uint32_t evt) { return (evt >> 0) & 0xFFF; } + +// Creates packed touch event from x and y coordinates static inline uint32_t touch_pack_xy(uint16_t x, uint16_t y) { return ((x & 0xFFF) << 12) | (y & 0xFFF); } +// ------------------------- +// legacy: + +uint32_t touch_is_detected(void); + #endif //_TOUCH_H diff --git a/core/embed/trezorhal/unix/button.c b/core/embed/trezorhal/unix/button.c new file mode 100644 index 0000000000..3ff9cd4b6f --- /dev/null +++ b/core/embed/trezorhal/unix/button.c @@ -0,0 +1,70 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include TREZOR_BOARD + +#include <SDL.h> + +#include "button.h" +#include "common.h" +#include "platform.h" + +static char last_left = 0, last_right = 0; + +char button_state_left(void) { return last_left; } + +char button_state_right(void) { return last_right; } + +uint32_t button_read(void) { + SDL_Event event; + SDL_PumpEvents(); + if (SDL_PollEvent(&event) > 0) { + switch (event.type) { + case SDL_KEYDOWN: + if (event.key.repeat) { + break; + } + switch (event.key.keysym.sym) { + case SDLK_LEFT: + last_left = 1; + return BTN_EVT_DOWN | BTN_LEFT; + case SDLK_RIGHT: + last_right = 1; + return BTN_EVT_DOWN | BTN_RIGHT; + } + break; + case SDL_KEYUP: + if (event.key.repeat) { + break; + } + switch (event.key.keysym.sym) { + case SDLK_LEFT: + last_left = 0; + return BTN_EVT_UP | BTN_LEFT; + case SDLK_RIGHT: + last_right = 0; + return BTN_EVT_UP | BTN_RIGHT; + } + break; + } + } + return 0; +} + +void button_init(void) {} diff --git a/core/embed/trezorhal/unix/touch/touch.c b/core/embed/trezorhal/unix/touch.c similarity index 56% rename from core/embed/trezorhal/unix/touch/touch.c rename to core/embed/trezorhal/unix/touch.c index b90b418d91..d2aa918e1f 100644 --- a/core/embed/trezorhal/unix/touch/touch.c +++ b/core/embed/trezorhal/unix/touch.c @@ -17,13 +17,12 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include TREZOR_BOARD + #include <SDL.h> #include <stdbool.h> #include <stdint.h> -#include TREZOR_BOARD -#ifdef USE_TOUCH - #include "common.h" #include "platform.h" #include "touch.h" @@ -31,9 +30,6 @@ extern int sdl_display_res_x, sdl_display_res_y; extern int sdl_touch_offset_x, sdl_touch_offset_y; -static int _touch_x = 0; -static int _touch_y = 0; - // distance from the edge where arrow button swipe starts [px] static const int _btn_swipe_begin = 120; // length of the arrow button swipe [px] @@ -53,9 +49,23 @@ typedef enum { BUTTON_SWIPE_UP_INITIATED, BUTTON_SWIPE_DOWN_INITIATED, BUTTON_SWIPE_COMPLETED -} touch_input_state_t; +} touch_state_t; + +typedef struct { + // Set if driver is initialized + secbool initialized; + // Current state of the touch driver + touch_state_t state; + // Last valid coordinates + int last_x; + int last_y; + +} touch_driver_t; -static touch_input_state_t input_state = IDLE; +// Touch driver instance +static touch_driver_t g_touch_driver = { + .initialized = secfalse, +}; static bool is_inside_display(int x, int y) { return x >= sdl_touch_offset_x && y >= sdl_touch_offset_y && @@ -63,15 +73,15 @@ static bool is_inside_display(int x, int y) { y - sdl_touch_offset_y < sdl_display_res_y; } -static bool is_button_swipe_initiated() { - return input_state == BUTTON_SWIPE_LEFT_INITIATED || - input_state == BUTTON_SWIPE_RIGHT_INITIATED || - input_state == BUTTON_SWIPE_UP_INITIATED || - input_state == BUTTON_SWIPE_DOWN_INITIATED; +static bool is_button_swipe_initiated(const touch_driver_t* driver) { + return driver->state == BUTTON_SWIPE_LEFT_INITIATED || + driver->state == BUTTON_SWIPE_RIGHT_INITIATED || + driver->state == BUTTON_SWIPE_UP_INITIATED || + driver->state == BUTTON_SWIPE_DOWN_INITIATED; } -static void handle_mouse_events(SDL_Event event, int* ev_type, int* ev_x, - int* ev_y) { +static void handle_mouse_events(touch_driver_t* driver, SDL_Event event, + int* ev_type, int* ev_x, int* ev_y) { bool inside_display = is_inside_display(event.button.x, event.button.y); switch (event.type) { case SDL_MOUSEBUTTONDOWN: @@ -79,201 +89,190 @@ static void handle_mouse_events(SDL_Event event, int* ev_type, int* ev_x, *ev_x = event.button.x - sdl_touch_offset_x; *ev_y = event.button.y - sdl_touch_offset_y; *ev_type = TOUCH_START; - input_state = MOUSE_DOWN_INSIDE; + driver->state = MOUSE_DOWN_INSIDE; } break; case SDL_MOUSEBUTTONUP: - if (input_state != IDLE) { - *ev_x = inside_display ? event.button.x - sdl_touch_offset_x : _touch_x; - *ev_y = inside_display ? event.button.y - sdl_touch_offset_y : _touch_y; + if (driver->state != IDLE) { + *ev_x = inside_display ? event.button.x - sdl_touch_offset_x + : driver->last_x; + *ev_y = inside_display ? event.button.y - sdl_touch_offset_y + : driver->last_y; *ev_type = TOUCH_END; - input_state = IDLE; + driver->state = IDLE; } break; case SDL_MOUSEMOTION: - if (input_state != IDLE) { + if (driver->state != IDLE) { if (inside_display) { *ev_x = event.motion.x - sdl_touch_offset_x; *ev_y = event.motion.y - sdl_touch_offset_y; // simulate TOUCH_START if pressed in mouse returned on visible area *ev_type = - (input_state == MOUSE_DOWN_OUTSIDE) ? TOUCH_START : TOUCH_MOVE; - input_state = MOUSE_DOWN_INSIDE; + (driver->state == MOUSE_DOWN_OUTSIDE) ? TOUCH_START : TOUCH_MOVE; + driver->state = MOUSE_DOWN_INSIDE; } else { - if (input_state == MOUSE_DOWN_INSIDE) { + if (driver->state == MOUSE_DOWN_INSIDE) { // use last valid coordinates and simulate TOUCH_END - *ev_x = _touch_x; - *ev_y = _touch_y; + *ev_x = driver->last_x; + *ev_y = driver->last_y; *ev_type = TOUCH_END; } - input_state = MOUSE_DOWN_OUTSIDE; + driver->state = MOUSE_DOWN_OUTSIDE; } } break; } } -static void handle_button_events(SDL_Event event, int* ev_type, int* ev_x, - int* ev_y) { +static void handle_button_events(touch_driver_t* driver, SDL_Event event, + int* ev_type, int* ev_x, int* ev_y) { // Handle arrow buttons to trigger a scroll movement by set length in the // direction of the button if (event.type == SDL_KEYDOWN && !event.key.repeat && - !is_button_swipe_initiated()) { + !is_button_swipe_initiated(driver)) { switch (event.key.keysym.sym) { case SDLK_LEFT: *ev_x = _btn_swipe_begin; *ev_y = sdl_display_res_y / 2; *ev_type = TOUCH_START; - input_state = BUTTON_SWIPE_LEFT_INITIATED; + driver->state = BUTTON_SWIPE_LEFT_INITIATED; break; case SDLK_RIGHT: *ev_x = sdl_display_res_x - _btn_swipe_begin; *ev_y = sdl_display_res_y / 2; *ev_type = TOUCH_START; - input_state = BUTTON_SWIPE_RIGHT_INITIATED; + driver->state = BUTTON_SWIPE_RIGHT_INITIATED; break; case SDLK_UP: *ev_x = sdl_display_res_x / 2; *ev_y = _btn_swipe_begin; *ev_type = TOUCH_START; - input_state = BUTTON_SWIPE_UP_INITIATED; + driver->state = BUTTON_SWIPE_UP_INITIATED; break; case SDLK_DOWN: *ev_x = sdl_display_res_x / 2; *ev_y = sdl_display_res_y - _btn_swipe_begin; *ev_type = TOUCH_START; - input_state = BUTTON_SWIPE_DOWN_INITIATED; + driver->state = BUTTON_SWIPE_DOWN_INITIATED; break; } - } else if (event.type == SDL_KEYUP && input_state != IDLE) { + } else if (event.type == SDL_KEYUP && driver->state != IDLE) { switch (event.key.keysym.sym) { case SDLK_LEFT: - if (input_state == BUTTON_SWIPE_LEFT_INITIATED) { + if (driver->state == BUTTON_SWIPE_LEFT_INITIATED) { *ev_x = _btn_swipe_begin + _btn_swipe_length; *ev_y = sdl_display_res_y / 2; *ev_type = TOUCH_MOVE; - input_state = BUTTON_SWIPE_COMPLETED; + driver->state = BUTTON_SWIPE_COMPLETED; } break; case SDLK_RIGHT: - if (input_state == BUTTON_SWIPE_RIGHT_INITIATED) { + if (driver->state == BUTTON_SWIPE_RIGHT_INITIATED) { *ev_x = sdl_display_res_x - _btn_swipe_begin - _btn_swipe_length; *ev_y = sdl_display_res_y / 2; *ev_type = TOUCH_MOVE; - input_state = BUTTON_SWIPE_COMPLETED; + driver->state = BUTTON_SWIPE_COMPLETED; } break; case SDLK_UP: - if (input_state == BUTTON_SWIPE_UP_INITIATED) { + if (driver->state == BUTTON_SWIPE_UP_INITIATED) { *ev_x = sdl_display_res_x / 2; *ev_y = _btn_swipe_begin + _btn_swipe_length; *ev_type = TOUCH_MOVE; - input_state = BUTTON_SWIPE_COMPLETED; + driver->state = BUTTON_SWIPE_COMPLETED; } break; case SDLK_DOWN: - if (input_state == BUTTON_SWIPE_DOWN_INITIATED) { + if (driver->state == BUTTON_SWIPE_DOWN_INITIATED) { *ev_x = sdl_display_res_x / 2; *ev_y = sdl_display_res_y - _btn_swipe_begin - _btn_swipe_length; *ev_type = TOUCH_MOVE; - input_state = BUTTON_SWIPE_COMPLETED; + driver->state = BUTTON_SWIPE_COMPLETED; } break; } } } -uint32_t touch_read(void) { - if (input_state == BUTTON_SWIPE_COMPLETED) { - input_state = IDLE; - return TOUCH_END | touch_pack_xy(_touch_x, _touch_y); - } +secbool touch_init(void) { + touch_driver_t* driver = &g_touch_driver; - emulator_poll_events(); - SDL_Event event; - SDL_PumpEvents(); + if (driver->initialized != sectrue) { + memset(driver, 0, sizeof(touch_driver_t)); + driver->state = IDLE; + driver->initialized = sectrue; + } - int ev_x = 0; - int ev_y = 0; - int ev_type = 0; + return driver->initialized; +} - while (SDL_PollEvent(&event) > 0) { - if (input_state == IDLE || input_state == MOUSE_DOWN_INSIDE || - input_state == MOUSE_DOWN_OUTSIDE) { - handle_mouse_events(event, &ev_type, &ev_x, &ev_y); - } - if (input_state == IDLE || is_button_swipe_initiated()) { - handle_button_events(event, &ev_type, &ev_x, &ev_y); - } +void touch_deinit(void) { + touch_driver_t* driver = &g_touch_driver; - if (ev_type != 0) { - _touch_x = ev_x; - _touch_y = ev_y; - } + if (driver->initialized == sectrue) { + memset(driver, 0, sizeof(touch_driver_t)); } - return ev_type | touch_pack_xy(ev_x, ev_y); } -secbool touch_init(void) { return sectrue; } -void touch_power_on(void) {} -void touch_wait_until_ready(void) {} - -uint32_t touch_is_detected(void) { - return input_state == MOUSE_DOWN_INSIDE || is_button_swipe_initiated(); +secbool touch_ready(void) { + touch_driver_t* driver = &g_touch_driver; + return driver->initialized; } -uint8_t touch_get_version(void) { return 0; } - -#endif +secbool touch_set_sensitivity(uint8_t value) { + // Not implemented on the emulator + return sectrue; +} -#ifdef USE_BUTTON +uint8_t touch_get_version(void) { + // Not implemented on the emulator + return 0; +} -#include "button.h" +secbool touch_activity(void) { + if (touch_get_event() != 0) { + return sectrue; + } else { + return secfalse; + } +} -static char last_left = 0, last_right = 0; +uint32_t touch_get_event(void) { + touch_driver_t* driver = &g_touch_driver; -char button_state_left(void) { return last_left; } + if (driver->initialized != sectrue) { + return 0; + } -char button_state_right(void) { return last_right; } + if (driver->state == BUTTON_SWIPE_COMPLETED) { + driver->state = IDLE; + return TOUCH_END | touch_pack_xy(driver->last_x, driver->last_y); + } -uint32_t button_read(void) { + emulator_poll_events(); SDL_Event event; SDL_PumpEvents(); - if (SDL_PollEvent(&event) > 0) { - switch (event.type) { - case SDL_KEYDOWN: - if (event.key.repeat) { - break; - } - switch (event.key.keysym.sym) { - case SDLK_LEFT: - last_left = 1; - return BTN_EVT_DOWN | BTN_LEFT; - case SDLK_RIGHT: - last_right = 1; - return BTN_EVT_DOWN | BTN_RIGHT; - } - break; - case SDL_KEYUP: - if (event.key.repeat) { - break; - } - switch (event.key.keysym.sym) { - case SDLK_LEFT: - last_left = 0; - return BTN_EVT_UP | BTN_LEFT; - case SDLK_RIGHT: - last_right = 0; - return BTN_EVT_UP | BTN_RIGHT; - } - break; + + int ev_x = 0; + int ev_y = 0; + int ev_type = 0; + + while (SDL_PollEvent(&event) > 0) { + if (driver->state == IDLE || driver->state == MOUSE_DOWN_INSIDE || + driver->state == MOUSE_DOWN_OUTSIDE) { + handle_mouse_events(driver, event, &ev_type, &ev_x, &ev_y); + } + if (driver->state == IDLE || is_button_swipe_initiated(driver)) { + handle_button_events(driver, event, &ev_type, &ev_x, &ev_y); + } + + if (ev_type != 0) { + driver->last_x = ev_x; + driver->last_y = ev_y; } } - return 0; + return ev_type | touch_pack_xy(ev_x, ev_y); } - -void button_init(void) {} - -#endif diff --git a/core/embed/unix/main.c b/core/embed/unix/main.c index dac4b1141b..ffef7ca458 100644 --- a/core/embed/unix/main.c +++ b/core/embed/unix/main.c @@ -53,6 +53,7 @@ #include "py/repl.h" #include "py/runtime.h" #include "py/stackctrl.h" +#include "touch.h" #include "common.h" @@ -474,6 +475,10 @@ MP_NOINLINE int main_(int argc, char **argv) { display_init(); +#if USE_TOUCH + touch_init(); +#endif + // Map trezor.flash to memory. flash_init(); flash_otp_init(); diff --git a/core/site_scons/models/D001/discovery.py b/core/site_scons/models/D001/discovery.py index 68a6be7f62..327d6b9c58 100644 --- a/core/site_scons/models/D001/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -71,7 +71,6 @@ def configure( if "input" in features_wanted: sources += ["embed/trezorhal/stm32f4/i2c.c"] sources += ["embed/trezorhal/stm32f4/touch/stmpe811.c"] - sources += ["embed/lib/touch.c"] features_available.append("touch") if "usb" in features_wanted: diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index 0fe7f4f9e2..94f16b7c65 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -60,9 +60,6 @@ def configure( sources += [ "embed/trezorhal/stm32u5/i2c.c", ] - sources += [ - "embed/lib/touch.c", - ] sources += [ "embed/trezorhal/stm32u5/touch/sitronix.c", ] diff --git a/core/site_scons/models/T1B1/emulator.py b/core/site_scons/models/T1B1/emulator.py index e44f8d7f58..7763364912 100644 --- a/core/site_scons/models/T1B1/emulator.py +++ b/core/site_scons/models/T1B1/emulator.py @@ -31,6 +31,7 @@ def configure( defines += ["FLASH_BLOCK_WORDS=1"] if "input" in features_wanted: + sources += ["embed/trezorhal/unix/button.c"] features_available.append("button") sources += ["embed/models/T1B1/model_T1B1_layout.c"] diff --git a/core/site_scons/models/T2B1/emulator.py b/core/site_scons/models/T2B1/emulator.py index f8e5da54f8..6936b34ded 100644 --- a/core/site_scons/models/T2B1/emulator.py +++ b/core/site_scons/models/T2B1/emulator.py @@ -41,6 +41,7 @@ def configure( features_available.append("optiga") if "input" in features_wanted: + sources += ["embed/trezorhal/unix/button.c"] features_available.append("button") sources += ["embed/models/T2B1/model_T2B1_layout.c"] diff --git a/core/site_scons/models/T2T1/emulator.py b/core/site_scons/models/T2T1/emulator.py index 02102b316b..a35db0370e 100644 --- a/core/site_scons/models/T2T1/emulator.py +++ b/core/site_scons/models/T2T1/emulator.py @@ -51,6 +51,7 @@ def configure( sources += ["embed/trezorhal/unix/sbu.c"] if "input" in features_wanted: + sources += ["embed/trezorhal/unix/touch.c"] features_available.append("touch") features_available.append("backlight") diff --git a/core/site_scons/models/T2T1/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py index 71b12d6216..11550162d7 100644 --- a/core/site_scons/models/T2T1/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -82,7 +82,6 @@ def configure( if "input" in features_wanted: sources += ["embed/trezorhal/stm32f4/i2c.c"] sources += ["embed/trezorhal/stm32f4/touch/ft6x36.c"] - sources += ["embed/lib/touch.c"] features_available.append("touch") if "sd_card" in features_wanted: diff --git a/core/site_scons/models/T3T1/emulator.py b/core/site_scons/models/T3T1/emulator.py index 61ad1ad67a..fa5400b536 100644 --- a/core/site_scons/models/T3T1/emulator.py +++ b/core/site_scons/models/T3T1/emulator.py @@ -59,6 +59,7 @@ def configure( sources += ["embed/trezorhal/unix/optiga.c"] if "input" in features_wanted: + sources += ["embed/trezorhal/unix/touch.c"] features_available.append("touch") features_available.append("backlight") diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index 9d1cea76e7..64c5baab77 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -73,7 +73,6 @@ def configure( if "input" in features_wanted: sources += ["embed/trezorhal/stm32u5/i2c.c"] sources += ["embed/trezorhal/stm32u5/touch/ft6x36.c"] - sources += ["embed/lib/touch.c"] features_available.append("touch") if "haptic" in features_wanted: diff --git a/core/site_scons/models/T3T1/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py index f6ffda61df..6b32ca5e2d 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -75,7 +75,6 @@ def configure( if "input" in features_wanted: sources += ["embed/trezorhal/stm32u5/i2c.c"] sources += ["embed/trezorhal/stm32u5/touch/ft6x36.c"] - sources += ["embed/lib/touch.c"] features_available.append("touch") if "haptic" in features_wanted: From bfedb960712036fc0d1647fa96d2c82614ec1984 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Wed, 5 Jun 2024 15:59:15 +0200 Subject: [PATCH 316/626] refactor(core/embed): prepare haptic driver for low power mode [no changelog] --- core/embed/trezorhal/haptic.h | 78 ++++- .../stm32u5/haptic/drv2625/drv2625.c | 270 +++++++++++------- .../drv2625/{drv2625_lib.h => drv2625.h} | 64 ++++- 3 files changed, 296 insertions(+), 116 deletions(-) rename core/embed/trezorhal/stm32u5/haptic/drv2625/{drv2625_lib.h => drv2625.h} (65%) diff --git a/core/embed/trezorhal/haptic.h b/core/embed/trezorhal/haptic.h index f4f1c66bc5..ca7223b658 100644 --- a/core/embed/trezorhal/haptic.h +++ b/core/embed/trezorhal/haptic.h @@ -1,3 +1,21 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef TREZORHAL_HAPTIC_H #define TREZORHAL_HAPTIC_H @@ -6,30 +24,64 @@ #include <stdint.h> typedef enum { + // Effect at the start of a button press HAPTIC_BUTTON_PRESS = 0, - HAPTIC_ALERT = 1, - HAPTIC_HOLD_TO_CONFIRM = 2, + // Effect at the and of hold-to-confirm action + HAPTIC_HOLD_TO_CONFIRM = 1, } haptic_effect_t; -// Initialize haptic driver -void haptic_init(void); +// Initializes the haptic driver +// +// The function initializes the GPIO pins and the hardware +// peripherals used by the haptic driver. +// +// Returns `true` if the initialization was successful. +bool haptic_init(void); + +// Deinitializes the haptic driver +// +// The function deinitializes the hardware peripherals used by the +// haptic driver so the device can be eventually put into a low-power mode. +void haptic_deinit(void); + +// Enables or disables the haptic driver +// +// When the driver is disabled, it does not play any haptic effects +// and potentially can put the controller into a low-power mode. +// +// The driver is enabled by default (after initialization). +void haptic_set_enabled(bool enabled); -// Calibrate haptic driver -void haptic_calibrate(void); +// Returns `true` if haptic driver is enabled +bool haptic_get_enabled(void); -// Test haptic driver, plays a maximum amplitude for the given duration +// Tests the haptic driver, playing at maximum amplitude for the given duration +// +// This function is used during production testing to verify that the haptic +// motor is working correctly. +// +// Returns `true` if the test effect was successfully started. bool haptic_test(uint16_t duration_ms); -// Play haptic effect -void haptic_play(haptic_effect_t effect); +// Plays one of haptic effects +// +// The function stops playing any currently running effect and +// starts playing the specified effect. +// +// Returns `true` if the effect was successfully started. +bool haptic_play(haptic_effect_t effect); -// Starts the haptic motor with a specified amplitude and period +// Starts the haptic motor with a specified amplitude (in percent) for a +// specified duration (in milliseconds). +// +// The function stops playing any currently running effect and +// starts playing the specified effect. // // The function can be invoked repeatedly during the specified duration // (`duration_ms`) to modify the amplitude dynamically, allowing // the creation of customized haptic effects. +// +// Returns `true` if the effect was successfully started. bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms); -void haptic_set_enabled(bool enable); - -#endif +#endif // TREZORHAL_HAPTIC_H diff --git a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c index a4cf9e6c76..4f81f5ba6c 100644 --- a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c +++ b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.c @@ -1,61 +1,46 @@ -#include "drv2625_lib.h" -#include "haptic.h" +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include TREZOR_BOARD #include <stdbool.h> +#include <string.h> + +#include "common.h" +#include "drv2625.h" +#include "haptic.h" +#include "i2c.h" #include STM32_HAL_H -#include "i2c.h" -#include TREZOR_BOARD -#include HAPTIC_ACTUATOR +// Maximum amplitude of the vibration effect +// (DRV2625 supports 7-bit amplitude) +#define MAX_AMPLITUDE 127 +// Amplitude of the vibration effect used for production test +#define PRODTEST_EFFECT_AMPLITUDE 127 +// Amplitude of the button press effect +#define PRESS_EFFECT_AMPLITUDE 25 +// Duration of the button press effect +#define PRESS_EFFECT_DURATION 10 -#define DRV2625_I2C_ADDRESS (0x5A << 1) - -#define DRV2625_REG_CHIPID 0x00 -#define DRV2625_REG_STATUS 0x01 -#define DRV2625_REG_MODE 0x07 -#define DRV2625_REG_MODE_RTP 0 -#define DRV2625_REG_MODE_WAVEFORM 0x01 -#define DRV2625_REG_MODE_DIAG 0x02 -#define DRV2625_REG_MODE_AUTOCAL 0x03 -#define DRV2625_REG_MODE_TRGFUNC_PULSE 0x00 -#define DRV2625_REG_MODE_TRGFUNC_ENABLE 0x04 -#define DRV2625_REG_MODE_TRGFUNC_INTERRUPT 0x08 - -#define DRV2625_REG_LRAERM 0x08 -#define DRV2625_REG_LRAERM_LRA 0x80 -#define DRV2625_REG_LRAERM_OPENLOOP 0x40 -#define DRV2625_REG_LRAERM_AUTO_BRK_OL 0x10 -#define DRV2625_REG_LRAERM_AUTO_BRK_STBY 0x08 - -#define DRV2625_REG_LIBRARY 0x0D ///< Waveform library selection register -#define DRV2625_REG_LIBRARY_OPENLOOP 0x40 -#define DRV2625_REG_LIBRARY_GAIN_100 0x00 -#define DRV2625_REG_LIBRARY_GAIN_75 0x01 -#define DRV2625_REG_LIBRARY_GAIN_50 0x02 -#define DRV2625_REG_LIBRARY_GAIN_25 0x03 - -#define DRV2625_REG_RTP 0x0E ///< RTP input register - -#define DRV2625_REG_WAVESEQ1 0x0F ///< Waveform sequence register 1 -#define DRV2625_REG_WAVESEQ2 0x10 ///< Waveform sequence register 2 -#define DRV2625_REG_WAVESEQ3 0x11 ///< Waveform sequence register 3 -#define DRV2625_REG_WAVESEQ4 0x12 ///< Waveform sequence register 4 -#define DRV2625_REG_WAVESEQ5 0x13 ///< Waveform sequence register 5 -#define DRV2625_REG_WAVESEQ6 0x14 ///< Waveform sequence register 6 -#define DRV2625_REG_WAVESEQ7 0x15 ///< Waveform sequence register 7 -#define DRV2625_REG_WAVESEQ8 0x16 ///< Waveform sequence register 8 - -#define DRV2625_REG_GO 0x0C ///< Go register -#define DRV2625_REG_GO_GO 0x01 - -#define DRV2625_REG_OD_CLAMP 0x20 - -#define DRV2625_REG_LRA_WAVE_SHAPE 0x2C -#define DRV2625_REG_LRA_WAVE_SHAPE_SINE 0x01 - -#define DRV2625_REG_OL_LRA_PERIOD_LO 0x2F -#define DRV2625_REG_OL_LRA_PERIOD_HI 0x2E +// Actuator configuration +#include HAPTIC_ACTUATOR #if defined ACTUATOR_CLOSED_LOOP #define LIB_SEL 0x00 @@ -75,45 +60,68 @@ #error "Must define either LRA or ERM" #endif -#define PRESS_EFFECT_AMPLITUDE 25 -#define PRESS_EFFECT_DURATION 10 - -#define MAX_AMPLITUDE 127 -#define PRODTEST_EFFECT_AMPLITUDE 127 - -bool haptic_enabled = true; - -static bool set_reg(uint8_t addr, uint8_t value) { +// Driver state +typedef struct { + // Set if driver is initialized + bool initialized; + // Set if driver is enabled + bool enabled; + // Set to if real-time playing is activated. + // This prevents the repeated set of `DRV2625_REG_MODE` register + // which would otherwise stop all playback. + bool playing_rtp; + +} haptic_driver_t; + +// Haptic driver instance +static haptic_driver_t g_haptic_driver = { + .initialized = false, +}; + +static bool drv2625_set_reg(uint8_t addr, uint8_t value) { uint8_t data[] = {addr, value}; return i2c_transmit(DRV2625_I2C_INSTANCE, DRV2625_I2C_ADDRESS, data, sizeof(data), 1) == HAL_OK; } -void haptic_calibrate(void) { - set_reg(DRV2625_REG_MODE, DRV2625_REG_MODE_AUTOCAL); - HAL_Delay(1); - set_reg(DRV2625_REG_GO, DRV2625_REG_GO_GO); +bool haptic_init(void) { + haptic_driver_t *driver = &g_haptic_driver; - HAL_Delay(3000); -} + if (driver->initialized) { + return false; + } -// Set to `true` if real-time playing is activated. to -// This prevents the repeated set of `DRV2625_REG_MODE` register -// which would otherwise stop all playback. -static bool playing_rtp = false; + memset(driver, 0, sizeof(haptic_driver_t)); -void haptic_init(void) { // select library - set_reg(DRV2625_REG_LIBRARY, LIB_SEL | DRV2625_REG_LIBRARY_GAIN_25); - set_reg(DRV2625_REG_LRAERM, - LRA_ERM_SEL | LOOP_SEL | DRV2625_REG_LRAERM_AUTO_BRK_OL); + if (!drv2625_set_reg(DRV2625_REG_LIBRARY, + LIB_SEL | DRV2625_REG_LIBRARY_GAIN_25)) { + return false; + } - set_reg(DRV2625_REG_OD_CLAMP, ACTUATOR_OD_CLAMP); + if (!drv2625_set_reg( + DRV2625_REG_LRAERM, + LRA_ERM_SEL | LOOP_SEL | DRV2625_REG_LRAERM_AUTO_BRK_OL)) { + } - set_reg(DRV2625_REG_LRA_WAVE_SHAPE, DRV2625_REG_LRA_WAVE_SHAPE_SINE); + if (!drv2625_set_reg(DRV2625_REG_OD_CLAMP, ACTUATOR_OD_CLAMP)) { + return false; + } - set_reg(DRV2625_REG_OL_LRA_PERIOD_LO, ACTUATOR_LRA_PERIOD & 0xFF); - set_reg(DRV2625_REG_OL_LRA_PERIOD_HI, ACTUATOR_LRA_PERIOD >> 8); + if (!drv2625_set_reg(DRV2625_REG_LRA_WAVE_SHAPE, + DRV2625_REG_LRA_WAVE_SHAPE_SINE)) { + return false; + } + + if (!drv2625_set_reg(DRV2625_REG_OL_LRA_PERIOD_LO, + ACTUATOR_LRA_PERIOD & 0xFF)) { + return false; + } + + if (!drv2625_set_reg(DRV2625_REG_OL_LRA_PERIOD_HI, + ACTUATOR_LRA_PERIOD >> 8)) { + return false; + } GPIO_InitTypeDef GPIO_InitStructure = {0}; GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; @@ -145,19 +153,59 @@ void haptic_init(void) { HAL_TIM_OC_Start(&TIM_Handle, TIM_CHANNEL_1); TIM16->BDTR |= TIM_BDTR_MOE; + + driver->initialized = true; + driver->enabled = true; + + return true; +} + +void haptic_deinit(void) { + haptic_driver_t *driver = &g_haptic_driver; + + if (!driver->initialized) { + return; + } + + // TODO: deinitialize GPIOs and the TIMER + + memset(driver, 0, sizeof(haptic_driver_t)); +} + +void haptic_set_enabled(bool enabled) { + haptic_driver_t *driver = &g_haptic_driver; + + driver->enabled = enabled; +} + +bool haptic_get_enabled(void) { + haptic_driver_t *driver = &g_haptic_driver; + + if (!driver->initialized) { + return false; + } + + return driver->enabled; } static bool haptic_play_rtp(int8_t amplitude, uint16_t duration_ms) { - if (!playing_rtp) { - if (!set_reg(DRV2625_REG_MODE, - DRV2625_REG_MODE_RTP | DRV2625_REG_MODE_TRGFUNC_ENABLE)) { + haptic_driver_t *driver = &g_haptic_driver; + + if (!driver->initialized) { + return false; + } + + if (!driver->playing_rtp) { + if (!drv2625_set_reg( + DRV2625_REG_MODE, + DRV2625_REG_MODE_RTP | DRV2625_REG_MODE_TRGFUNC_ENABLE)) { return false; } - playing_rtp = true; + driver->playing_rtp = true; } - if (!set_reg(DRV2625_REG_RTP, (uint8_t)amplitude)) { + if (!drv2625_set_reg(DRV2625_REG_RTP, (uint8_t)amplitude)) { return false; } @@ -176,33 +224,57 @@ static bool haptic_play_rtp(int8_t amplitude, uint16_t duration_ms) { return true; } -static void haptic_play_lib(drv2625_lib_effect_t effect) { - playing_rtp = false; +static bool haptic_play_lib(drv2625_lib_effect_t effect) { + haptic_driver_t *driver = &g_haptic_driver; - set_reg(DRV2625_REG_MODE, DRV2625_REG_MODE_WAVEFORM); - set_reg(DRV2625_REG_WAVESEQ1, effect); - set_reg(DRV2625_REG_WAVESEQ2, 0); - set_reg(DRV2625_REG_GO, DRV2625_REG_GO_GO); + if (!driver->initialized) { + return false; + } + + driver->playing_rtp = false; + + if (!drv2625_set_reg(DRV2625_REG_MODE, DRV2625_REG_MODE_WAVEFORM)) { + return false; + } + + if (!drv2625_set_reg(DRV2625_REG_WAVESEQ1, effect)) { + return false; + } + + if (!drv2625_set_reg(DRV2625_REG_WAVESEQ2, 0)) { + return false; + } + + if (!drv2625_set_reg(DRV2625_REG_GO, DRV2625_REG_GO_GO)) { + return false; + } + + return true; } -void haptic_play(haptic_effect_t effect) { - if (!haptic_enabled) { - return; +bool haptic_play(haptic_effect_t effect) { + haptic_driver_t *driver = &g_haptic_driver; + + if (!driver->initialized) { + return false; + } + + if (!driver->enabled) { + return true; } switch (effect) { case HAPTIC_BUTTON_PRESS: - haptic_play_rtp(PRESS_EFFECT_AMPLITUDE, PRESS_EFFECT_DURATION); - break; - case HAPTIC_ALERT: - haptic_play_lib(ALERT_750MS_100); + return haptic_play_rtp(PRESS_EFFECT_AMPLITUDE, PRESS_EFFECT_DURATION); break; case HAPTIC_HOLD_TO_CONFIRM: - haptic_play_lib(DOUBLE_CLICK_60); + return haptic_play_lib(DOUBLE_CLICK_60); break; default: break; } + + return false; } bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms) { @@ -219,5 +291,3 @@ bool haptic_play_custom(int8_t amplitude_pct, uint16_t duration_ms) { bool haptic_test(uint16_t duration_ms) { return haptic_play_rtp(PRODTEST_EFFECT_AMPLITUDE, duration_ms); } - -void haptic_set_enabled(bool enable) { haptic_enabled = enable; } diff --git a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625_lib.h b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.h similarity index 65% rename from core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625_lib.h rename to core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.h index dcf449f443..40a0d5e594 100644 --- a/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625_lib.h +++ b/core/embed/trezorhal/stm32u5/haptic/drv2625/drv2625.h @@ -1,5 +1,63 @@ -#ifndef __DRV_2625_LIB_H__ -#define __DRV_2625_LIB_H__ +#ifndef TREZOR_HAL_DRV_2625_H +#define TREZOR_HAL_DRV_2625_H + +// I2C address of the DRV2625 on the I2C bus. +// `<< 1` is required because the HAL expects the address to be shifted by 1. +#define DRV2625_I2C_ADDRESS (0x5A << 1) + +// ------------------------------------------------------------ +// DRV2625 registers +// ------------------------------------------------------------ + +#define DRV2625_REG_CHIPID 0x00 +#define DRV2625_REG_STATUS 0x01 +#define DRV2625_REG_MODE 0x07 +#define DRV2625_REG_MODE_RTP 0 +#define DRV2625_REG_MODE_WAVEFORM 0x01 +#define DRV2625_REG_MODE_DIAG 0x02 +#define DRV2625_REG_MODE_AUTOCAL 0x03 +#define DRV2625_REG_MODE_TRGFUNC_PULSE 0x00 +#define DRV2625_REG_MODE_TRGFUNC_ENABLE 0x04 +#define DRV2625_REG_MODE_TRGFUNC_INTERRUPT 0x08 + +#define DRV2625_REG_LRAERM 0x08 +#define DRV2625_REG_LRAERM_LRA 0x80 +#define DRV2625_REG_LRAERM_OPENLOOP 0x40 +#define DRV2625_REG_LRAERM_AUTO_BRK_OL 0x10 +#define DRV2625_REG_LRAERM_AUTO_BRK_STBY 0x08 + +#define DRV2625_REG_LIBRARY 0x0D ///< Waveform library selection register +#define DRV2625_REG_LIBRARY_OPENLOOP 0x40 +#define DRV2625_REG_LIBRARY_GAIN_100 0x00 +#define DRV2625_REG_LIBRARY_GAIN_75 0x01 +#define DRV2625_REG_LIBRARY_GAIN_50 0x02 +#define DRV2625_REG_LIBRARY_GAIN_25 0x03 + +#define DRV2625_REG_RTP 0x0E ///< RTP input register + +#define DRV2625_REG_WAVESEQ1 0x0F ///< Waveform sequence register 1 +#define DRV2625_REG_WAVESEQ2 0x10 ///< Waveform sequence register 2 +#define DRV2625_REG_WAVESEQ3 0x11 ///< Waveform sequence register 3 +#define DRV2625_REG_WAVESEQ4 0x12 ///< Waveform sequence register 4 +#define DRV2625_REG_WAVESEQ5 0x13 ///< Waveform sequence register 5 +#define DRV2625_REG_WAVESEQ6 0x14 ///< Waveform sequence register 6 +#define DRV2625_REG_WAVESEQ7 0x15 ///< Waveform sequence register 7 +#define DRV2625_REG_WAVESEQ8 0x16 ///< Waveform sequence register 8 + +#define DRV2625_REG_GO 0x0C ///< Go register +#define DRV2625_REG_GO_GO 0x01 + +#define DRV2625_REG_OD_CLAMP 0x20 + +#define DRV2625_REG_LRA_WAVE_SHAPE 0x2C +#define DRV2625_REG_LRA_WAVE_SHAPE_SINE 0x01 + +#define DRV2625_REG_OL_LRA_PERIOD_LO 0x2F +#define DRV2625_REG_OL_LRA_PERIOD_HI 0x2E + +// ------------------------------------------------------------ +// DRV2625 effect types +// ------------------------------------------------------------ typedef enum { STRONG_CLICK_100 = 1, @@ -127,4 +185,4 @@ typedef enum { SMOOTH_HUM_5_20 = 123, } drv2625_lib_effect_t; -#endif +#endif // TREZOR_HAL_DRV_2625_H From ed624e1cb836bf8b4d1bc061a2b0c1b0e6c037d9 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 18 Jun 2024 15:41:20 +0200 Subject: [PATCH 317/626] feat(core/ui): use numerals in T3T1 checklist [no changelog] --- core/embed/rust/src/ui/component/text/paragraphs.rs | 8 ++++---- core/embed/rust/src/ui/model_mercury/layout.rs | 4 +++- core/embed/rust/src/ui/model_mercury/theme/mod.rs | 3 ++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index 7f33a47940..3c2af97b5f 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -611,8 +611,8 @@ where self } - pub fn with_numerals(mut self, show_numerals: bool) -> Self { - self.show_numerals = show_numerals; + pub fn with_numerals(mut self) -> Self { + self.show_numerals = true; self } @@ -628,7 +628,7 @@ where } else { // current and future tasks - ordinal numbers or icon on current task if self.show_numerals { - let num_offset = Offset::y(Font::NORMAL.visible_text_height("1")); + let num_offset = Offset::new(4, Font::NORMAL.visible_text_height("1")); self.render_numeral(base + num_offset, i, l.style.text_color, target); } else if i == current_visible { let color = l.style.text_color; @@ -657,7 +657,7 @@ where ) { let numeral = uformat!("{}.", n + 1); shape::Text::new(base_point, numeral.as_str()) - .with_font(Font::NORMAL) + .with_font(Font::SUB) .with_fg(color) .render(target); } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 2286c2b9d7..38ea10e119 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1063,7 +1063,9 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M .with_spacing(theme::CHECKLIST_SPACING), ) .with_check_width(theme::CHECKLIST_CHECK_WIDTH) - .with_icon_done_color(theme::GREEN); + .with_numerals() + .with_icon_done_color(theme::GREEN) + .with_done_offset(theme::CHECKLIST_DONE_OFFSET); let obj = LayoutObj::new(SwipeUpScreen::new( Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 79ca45ec3f..1e5909e2ab 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -10,7 +10,7 @@ use crate::{ FixedHeightBar, }, display::{Color, Font}, - geometry::Insets, + geometry::{Insets, Offset}, util::include_icon, }, }; @@ -802,6 +802,7 @@ pub const DETAILS_SPACING: i16 = 8; // checklist settings pub const CHECKLIST_CHECK_WIDTH: i16 = 32; // icon width (20px) + padding (12px) +pub const CHECKLIST_DONE_OFFSET: Offset = Offset::y(-2); pub const fn button_bar<T>(inner: T) -> FixedHeightBar<T> { FixedHeightBar::bottom(inner, BUTTON_HEIGHT) From 0cc2ccd568db5e057f1af97fa20183bc47c0aad2 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 19 Jun 2024 13:25:03 +0200 Subject: [PATCH 318/626] chore(core): update fixtures.json [no changelog] --- tests/ui_tests/fixtures.json | 220 +++++++++++++++++------------------ 1 file changed, 110 insertions(+), 110 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index da3eef25ee..b91b9768e6 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15607,12 +15607,12 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39": "d812d59dc25317e82112eb34d337380a4cdf68c2548c824960400f7a0381c976", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "e64d2d3b1069ce3300a8abafa7d96cef3a03981548dad9beee1be2270769d701", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5e5f9492ccfd188144df29ef903235c948f15e016759f112e50c4910cae42c17", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "57e85311eb20f640899575da6dbe2eee0c62b0150766a11cc14183d385c96487", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "aa59d975e4186c31b29071b155b110a639896fff529a13320efeaa4790695156", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "074f36b41c2ffdda2d0cc3ee3397a0929c95db959f0ae92d4a7d62735bde8377", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "68cff9707085c5bea2ba2ac12c8c3704251ae59dce2ee5419db29831b2bcfb0d", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8b204bfc21f80016cdbd3265116b1499d273b74c64819dc80deef768fbd3cbae", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5c84aed920474bc7ff0a22c0bd7a8305b59c78dc56d2d869a05ece16193a0f84", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c1ae825ac1d5aceacc40ea12cb34d2983913b186a9905ca81fa517684343e9a8", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "20db719b7a423884e3ffe625ae11a4e1038d6ac90ff078b1fd67e2f407abffaf", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "21557eecf5d217df35c2212c51485d65377ef7fefd2ef74b53464fd2aeb087dd", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bbca9f56144482c80b23f19143f3c96c974a4d39a9204a2a082e133a970877e8", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4406627f20133d40308f7bf0cde62119806204255c8e82c75e94c8bafe84910a", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "569d825d6fca86078ef3ccc04dfb9fd3a11d895f55ec59fbc601280e3af800d5", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "64fdf9721576f23c5b534a38f98309d770b3f636c0b7784b590875ede395c5ba", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "ce8feecfb19e4f522de3710d80dd374bc759e4cb21a24696d3b15627a2ce1da3", @@ -15656,12 +15656,12 @@ "T3T1_de_test_recovery.py::test_recovery_bip39": "b89f318ed038b136315a9a5cadb9dc366422b6bd856bdbafca98022574c33828", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "9fdbf2558a31b3a4db2df922aa0279f38bcca571c74011304ecb13aeca3b31d8", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "8d8d067b09b1339ea7b334633543925e0b8c6d1166fae6a27fa319bb9d9116e8", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "437fb3f00d185e5d817deb850fe1d2da7e5e9e513a72e028e6297cf78d9d8b15", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "478bc13be45e13f96c23fed69892834e7cf121781f2a7f7be9bb30c52337dcbf", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "a9ccf20e930e27adae1eed30cf75afa5d9d774086a1b49c50fa229043de0e712", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5a2bef661f4328e9a238f1dd528dd43eecf84b1940d4c7e903a65c8b1ba4c170", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "7b88b9f87fc73c0e137181945abb205675dcd67ba43a83b95395709df371a7ea", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b060bf1beffb724c6f3238dc3779c6cc42464ae2879312592bb25446e259c6a9", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5736b3339d94b3b2883d741734bf5ce5f55c4045a86f1f0c09222dd4a9d832da", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "137f309ecf0cf6198d41ebaf74e60e2fa9bfbdf3326e1d5520a4995e9093e472", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b1d5dc6e0b5df1a114ca5184f674d6921120d2b6384f5436472a605700fcaa41", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ebec791801f48eac53e7f1f80ee2f994dcefa85a3d6ee566abd17d433ef556ba", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "80ddfd0c588c419462dbb953678af75ce8f8c9b35149f3a0e416a922ef3b72b9", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "cb21bc7cc23f43dda1e015a495179c2024b896f8028d3e45360678644c7b1551", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a503cea4aa2373105c26d1739e8088609d063610b419aa8b3f1c2bafac98c657", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "060ebce8a030206c583046927ac2d763c80b48298653e94d01a3539c93a108a3", @@ -15705,12 +15705,12 @@ "T3T1_en_test_recovery.py::test_recovery_bip39": "673fb86bd0dc3524d4d26a560e55aa3efe5392e63494e55154c00cafae2a53d2", "T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "201f180025b004ff3a65b0730384d417cc671f20ef7ee8c4915c8807326d09a4", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "c24cf3b1d719e7fb57a63b23622277bf9f083e11853f979a19ea210026c95176", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "d2028a5e0b014a89489cae1493c6b3a83bd01946d6ef608a877d923f70447a7c", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "7a827f5e6a38ff125d5aa88b29713d8631b46c84ae36a32bbbcb0729d53f74b8", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "d5a14dae735a733ceb26bbf5ab65ddc4b4db2f43baa01d91d4698f499a860d92", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "623ebdd87ae7015ae701896e83fa036d4b482928cf535cf530d11be3c3a417d7", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1053e0cfa6f55060cd7c30b098f70660394b7b2bde9e50b7b0474702b9e8dd61", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "df4495905830912afab9cd87eab8d862d7a085fd19fc898748c01cb53826834b", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e0b690963d988a3f80687d5b891a6d7e355bebc93e5f487c0ccb759d2e80aa68", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "6e2b696ba55c7e3b1ebb985d35f32e5c7ec2f3f8c402d9ef4caaeca5348ca273", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d4c58549aa51fbda2731138eef863cc3f3b1eec6478e316575c71fec103764b5", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "087576f0378f0b616abe75449acc85e0c89e5ecc37964ecfc70d3cc1bf71d7d6", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "7902c8518d01dff567389b044b5dcce1c3de364138041bfec48c13e1fe5a903a", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "5e35c8d9d18488aa916cf7f74f8c65b5f87f3c9b385b2166cede5386e720f201", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "4420029f510ff0e02233c013e3bf1e5f2d4846e29865ca354e8050b469dd2dd7", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "0d953a3a1c08bdc9a1e6e39c1f466c1e9d07931042bb96b69ab1643c9f273337", @@ -15754,12 +15754,12 @@ "T3T1_es_test_recovery.py::test_recovery_bip39": "6624d943b3fd85c709deef35782a4cc267f9391c5a9b8de60696e7de7847608b", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "05e7ee369a43ee2f296ef87e77d22baf4c9e6069e102bc154294f8eb0d91e804", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "42f49a8f3488677b9c01a21a00df7fb70d7d03aee6a67521995ce26e9cb7f3d0", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "de3bfb4200717ce216f6ad51c0944b1fbcb9d73c1262a01b238bf21112c0ddea", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "3c516544c48e5ce8d7ad2da3beca467d4ad503c7cb18fb75d06fc30eb6d778aa", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "56c69e4dc03b2949706b79a45b789143c098d14dfcec820ce2d06c907e5b070a", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cde3bdd8e2dbfad21b823e971f20a6e8f450aed4835bb8c84a84d560e1621769", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "153ea45212f1074e0ffbca4d9ef7bb28ba28fbd29c37ac107960709aa63cbf3f", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "a14f4e2ce03a595d9ed3754763d493a28dbe628ec2c2b00f7aae001532f28cce", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "713fcbda30d9358f546f9b65e5c93c37bd2d4834575443f6cfd06db270e47f1f", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9370813adb35c917fc968d8c94a002638ffd2b0e15a6c59a909e7e1930efc04e", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d64af8c28aaf695b5bf357628b7728f8585af7960c8dba952e72acdc09eabebb", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7d534a0036d59c4daf3c46f45bde90101e6c75d578e00dff822cfbd3efd5e639", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "118c5366a21d5644f4022bf081702fbac28855378e5c0d6425a4c290c5139fae", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d4cd3dd9f166dd00f9f2169e7242ebaf382f3c2139fffa47d5c0f7e881f8e6cc", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "1da6dd736d4b61e742872aae00abebbda99016c4d7d13fbbdf58221857499fbf", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "d018435c45bcea7d7175e5eef1863e2d5015023b03c615aa0c48f40a4c116ebd", @@ -15803,12 +15803,12 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39": "72532c272ac3dc97a8b45c5c268f75bc122a3d03dcf6f89fe539e2dcf41a6888", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "33f278d1b98f44ae61915398409a7cdf1a247b2b49de72e1ad5e4f1002712387", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "4079df31415785686f540253e026b2ce6b66c60e0b45b608e5c269c689af3421", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "3dbde0c11b3260889af6f3f2afec0aab583f840db7fbd7dde18318855d314857", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "cc482e813e0d90213f3c7e2ebe81d3fb5f791bd14aa2b4f6255175c07609b93b", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "6a256de0b7360aee8131545a8ff2e506ec10a63b4dfc37490ee2585f67ecdf99", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "63270631505d8842b24593fde4cff22d150d4c31f4ce1e45ceed10e325468289", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "570db1eab6b53b52b202ec161e0c5d7725c5bea3ccd7431b50d65887877f9458", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "09acc60d60c22103a7076241a5776d224df4c4012c48b33ddcd7b52ef4dc0aac", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "74fca790957f5e10040ce9014e3872e72e7c329184d2ff75c50dac813d5bbdc3" +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "dc51cd54b5a34d5a2fb30a07e8bbe4916879b1b84a0942414769d1d04d9c26f6", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "61b662315a01756c41906bd189304ee05d71892bb425bfa4c869973603b161ad", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "60c3967c7d11e1d377c51a560ea539c83cdb797137e072ee8e9c026aed4b73c0", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "73803027f1f38df23d73b5f63d1fe03aafd24c7473935ef1783ce56ced9bd157" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f295121749eac5dcdb9c559b2d9405901fe75360237c82af1ae8d21a471327d1", @@ -16845,11 +16845,11 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0b8c85824db2ab953dd6b20348f17cfce23ee7009f3eb9d0117261ed6f063c4d", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "3fe4f4cd7284ff9e538658e67753cd65ceab3283fc2e6640f5693d0750900144", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fb1a15a9514d7e2da8e0c43cafb9d0eea217bb17446ce09716632195175d176d", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "14d7db3e7f7344c2f56ff7b4f0961f58f741d01d9eed331d107739c3f378ee33", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c94ae5b8fab4a2f68e1d63ddc0abe5c5ab50c005531a08353086739aa8e70371", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "5e988c4b9bddbbc30fca0b586972924086dd57f234f4567498bb4d5ed07703f5", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "435d7d0b2a88ffc99b2791761b5c2ed8ec33aa45f66ec306092447616b3af44e", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "eeac9ec92c69806892d8472b6d896c21cbe98b9e11fecf83eba74afa23a481d7", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "aa5a6dd403950ec60f120eef6755d73b8f5d4d778410e8c622a544d03e6dbd53", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9073012a4649fe2490794e7ae98457c0892fb5c93c868b9dc22506b5a2a51786", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2d0a06bc1f313342a2c61363459fd5497471ec2a45135793cefdaf9c5bab1dcf", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "4604e6f242816efb2c5ef137a9434012e5c64130cff88d5e1c94351b6cd9830d", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "7bbcaa13b35b1ad3b09bdfc62203a4b9622602fb83654136a242ae739cd61b39", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2e6c9dea686b0aff6892f0d943bc205362ba0a3d861bcdbc86b7f725d80885f4", @@ -16857,11 +16857,11 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0f4059f7a51f6dcb2d55ede0a517dbc87db5e44f50ffa357eac296be591f87ca", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8e4beef12088cf81d02e19a4cfd9befcd818ac955103df7c91bf9b8d6ae7c2f4", "T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0e1ef9aef9df4c8263750ee1e99a0a8d57e91c2213c72302abebdeedff605ed9", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7cbe475c22f16c291345a60d8a1d76cb63386359a495b2a8839b36d73c0772de", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "00e18240e2e31bba8eada3b8bf273cb80bebc68062238663979d1f3e2468f524", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fcc5872dc571de0ac90a8b4e85b0c71ec3ccdf57259395d64ef17ff77c817109", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b52b6513d853fc8e8a86dedcf392b2e11164d53dd968a9e01cbd1ba2562640c0", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e2998d7af0f778bd24035d463e8be2e0e9449527ba0613c82f7f39819e247de8", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8a08e0f4e4c28c88b271897b4edc91d86110d907bdc61c794fd41e9f920329b1", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "778b7d2cad305f7ce5681e7fb9c9e573193dd12be7faf0b619b5bd090b2dc52d", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3edd6483e1b99abea85e92b895fbf46ff6af4d8d417b40179b0ec549caedd6fd", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a854bbda85d269f7c1089cb098d88a159ba6490a9bcee04e8bd32675d4a100b8", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0a90de00d492ab40c330c6910acc85117f5b6ffe7d234abdf86c1300dae5d2d1", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "50603c4d74b3601655e8858f44ea3aba4e8b3068040c462defe9039a39fbedc1", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4abbaf876f8cb7a9ab5dbda9268e019869bd76407f073da1d705891e6a4c3f9f", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "0148d8453e66fc43a37a4f159306ef9997a31509045d20db72650330e47754dd", @@ -17063,10 +17063,10 @@ "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "741f044e2c5e2d4be2cb9cc4a3727ac047d7c1f36b063fec84d622230f8fc9d8", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "6009d612aef0a77e5683e3de4b7f078ca1360bab8fd126b7829c3f1aea6491f7", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "fd9a6610bba06fd860dc9b504ef9f3eb95d196dbda2ad92cd6aa570b5af2f7ee", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "7819b7108d3909aa5bd6be905a1775e51fa518df7278208928fe46931b98ea0b", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ec069f4e4a0f1b79a0919b65faf3b8ba6ef2f4f5b628e20a8b05cb1995128c9b", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a9a1025a22c3b2bc7da35c8428bb74dfaa87cc2a924fef00510693dd74625e10", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4fbd2efaadea3e681dc27eb156c4bb3e4a0de641677222c4ff4b3d8a6c1baefc", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c71fb0d010a97e178fc293b40879b3464b2e04b492653912431078d9597b14c0", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "068b3849ddb052c8f5b49963722477b83d469c2da2e7768b15ad0f3667f668fa", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9f3cc858d34670f8d0fd8f2eaecfd9a8414154d5357adf69dfc303e3cf30236e", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "58ef70a11f925c50fc1680b6ffb68753688f5f4d68dfa7341393d9841d79bde5", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b355543bda120777fde39751cf53e1e56e5f135ccd3d198d5299dc1260d0fa5b", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fcfb46cdfd2fa670c313dd3e08429e01b58cf15192eb88553d2f9b1db2ad4185", @@ -17119,10 +17119,10 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "47dcd5b7cf013a81152f000449e4f823d481331d72318ab8845359a17a9d0286", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "db119b55d10692e0a0ef40c09ecd87ed55db89b9341d604fab8ab63d11d13b5c", "T3T1_cs_test_protection_levels.py::test_wipe_device": "0ebc0fdd142d19312c591bec597f35fb7ceb3d71c8bb91628a3e8cc31090426f", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "3dd0013a5dac7130298a7476f581d18a24d316a47b5ca3f7535b5e9c047fe6e6", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "3560c2feec8b3e76cf61571d692f12a4868c7206728eed1983dc6685cebfb26b", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "33a3d38d2ea40d4aef546c586f7713d2ca6afb7d5d3f7d256b40d6c47a631fff", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "41bdc491beb24110814f18812d48ed9966ca58d24f93f015a60d19471b775160", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "8ac33ac1d73d2a44932e61522c33d05627c0ab5e9dce422f2612bbfdd0153511", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "c7660426a3fd1b3f95b4a422e949c5d0329f1649ddca3f825f207662f7b46b78", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a9ba189efda099c44474221ed74dd44987336238d38c819f30b8ede13d75dd2d", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "83f5076c97c5b6864dc498a59363963ef367c8e6e9db9eae5ccdf5d739794454", "T3T1_cs_test_sdcard.py::test_sd_format": "2bf6f6dd008b387e0295865b0926c58e1972c6615b213daa423254cad4828c8b", "T3T1_cs_test_sdcard.py::test_sd_no_format": "d775aa49d5afe8d5ca5e0a0b6c9b2b2cb00614fb9188ddbb7cea06e4d0164944", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "4c755ed046a6e9cf1fa4afafe5b2f6157e5a9ca6093ac6d0b3c8140438c311df", @@ -18209,11 +18209,11 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e5ab874d614015da4387361f4c33e53019383964f795e7e3c22afb4549770cfe", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "38002d81da98997775ac1fd990f456c1604f2375dbbe46bf187a182ae403ea1a", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "910dee2ea1a30feabbe9c9630dc8f68324263b31e42cd22a45a9915ee0cd8403", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "bbce4c33f26f74f601d9b4a1db6f1f6637851a7395ed30cd6c62578b9871cf92", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a7562d6180c4d2f3df05452f8e930c3b077153eb8f58b002dd285c01b5edbc1a", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "771aab476f80391cc63c62e11e9b7a879e5352bf366ded2ebe85d06b7e9f87b0", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "11992cebec9d0957f4096d7f7da7f2bb3cf639660bb6162bc21c980589ef8828", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7b3793b9ae31c57110f6f891d274e0e75ebf0c392d97a146473dbb7f679ab41a", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "3ad2c08bc575a4777823011b0ec0d88f12ea5cad1ad74f7c9ec183a95b8188fb", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "193a5abd7d596ca78c0deba15c87c6e0c1b10e41b9680727d7dc360d277c3b9b", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5cb1a64ddc0b7a69ea96cbb13f3e414081653498f2d31244d46dc86557a16dbc", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "49846b690944520386e4f517867c3ea90544d00aa7aa49bbafc7f395074abcb1", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0db733ddad58a3268e1eb6617f4afd5fc8efee30b1f4646725663b52200fc004", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6df5e9ef96ae040a17f00208e8ff84bb96c8d10e53e4c18c199771cc1dad6a8b", @@ -18221,11 +18221,11 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ba9e1eb8e54bc435eb22d5d5c76bc6a2ac996a083a98e93fd92f7559ed073ca1", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "24aa7ee508e53ef9f3ad1e95bcfc6096e96d3f93cbea4c02a19f9fbbe7341cd5", "T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "762d092f390ee436559ec2f00ee541d117390714cf9fbc5fedee363be2f73715", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "82ff9769737dd4329687a365262e35223e53ee58f42fa8800b092c406bf170f2", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1061d2aabc7ae7d9405ca3094769d448280122e53be3590b29acce4536ac59c4", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7e603fd33ad51076925cf29ccf5a520c9af56516dee68cef91a8fca8e1862f24", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "dfc7ebe4272f0ff3aeb373e12149734fedd4bb35c641116744cf7a06c7dc77a1", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a3e5fa34530877f7b87fe77f3716e0cc37e0384930f43107caf15f076a3496c8", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fea7a62614d782aec918f7667ce6217c96181f21d15f0085a5c271f1ff358fb3", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1f2237210f56c74a06a1e2ce9c1d92bfc9d0cf5269bc012efa2eee60af49641c", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e034e206761ade262c719b8c4362b6a9abe6669d0765780f3803d7d59e4e596b", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "185e9eb8d05e6aaf008773642eee06f3e031f43b70e96a23fe3142e85919970b", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "3b99c011b508b24330223e83366b0c995eacae83a55cf732aec904176806a9ad", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "cab8e7643e74d28332a2dd920745153bd419931147fe9d6ea6311c8f2393d6b1", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "b86d3e58d4700ac2fb634a9e981697e2fd9513b9a07996e09ad8c9b3b0a3cdde", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5e55eb462b0f225b18e4c487789337106344734b236f934c7a16de7bd4859788", @@ -18427,10 +18427,10 @@ "T3T1_de_test_msg_applysettings.py::test_label_too_long": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "07e415943999d9052d9b834c1ade84393f38237ed4364422ee559c49e3e46c95", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "6c4290e1ddaf619a7dee19daec4898ee161fbab7ed6de84db717e087cbe6e424", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4b3000d092e04afd52c77f954c9fcbb4700082984b2c0a8a4015bbc7d89d8ea3", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "bd30dcdf8810046500a1b9aa44684efdaedef7d1a818573d9ab9803c3374254f", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4ce7835304f0eda292faecd3c6287544bc72ed752e32731d1794d8e8f6512b33", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "7622aefbd77df8452b1bb88fbcfc08a2b6209c955d38f2784e2376874b2daa8e", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "954b130b168005a9361a814893e807535ed9a081460cb585a87fd7080ad4baad", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0ceb2a838fb99cf74264aaa7e4ff555f230c968f0e2f545bbdad87874b8cbda1", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4e56975686939667495f384d76a5d1e17dc520f4c657a00b51a6136ec66a179b", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "eab4fee173a597938e72db782e7a266a87e2485d506adc91c948c51eb3c8894d", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "2fe2798b72190312d3daaec08084ea0c847ada3f259ec9d08966efe48eecb681", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ebeb917b2f284de9d0186ac27c96cee711d269d22d5cd4bb40bbf762049f4b72", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "2694879a33e782796407e84e395f3c6aee3862fba15ee81b579d1bad53d1d273", @@ -18483,10 +18483,10 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "64011d4e3bc84b5c02f62e2d3152c335247346f5e435c0f721b4144d9dd7165e", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "c20b035c9f2450a668a79adc18480c290e986ca645d1f71107d257abadce5731", "T3T1_de_test_protection_levels.py::test_wipe_device": "34029ef417717f458064fb4d461c4daffa32275b9d65c3eb895cf9c46101ea67", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "e7f370fc83060941d5ed571be5b5f27d40ff7ea6e9c62d55ea2adfce33e705f5", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "6a53a3782beb58a1f4868563057f21a1c5beab181e92f7eb443b2b746dd325c5", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6e1a36f745a5d56ca68e4518ff7069b0e7e4706f07da2da37ac67e6e27a73037", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b74728ca7f0ac352b944b1996971b6edb5ee0900cbb40e6c3ed38c05341b54d8", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "4ea9974111630ff0c74a1e0cc4ad006a2ff503ba112ebd2fc5284736dbdbbc1d", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "3226ac2d929457a8e9ac05549ac8512d8afeb203a257ccc26365c5c6ea6e856f", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fbd0e6a474a33c6b02192358763be2d7b1b71fb6bdb8ee3b293ee76804aaf080", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c29599bfd1f451ec90f17b7feb3b98f7a700d979858c46aa133ffecd88b857b1", "T3T1_de_test_sdcard.py::test_sd_format": "87fca14832eaba934ac4b811e69e7f373c9c6cf02b4118adb85e2e783d0ce053", "T3T1_de_test_sdcard.py::test_sd_no_format": "abdcff28d21d3c15d835c5ea2df1b5359785cf3013b441783b6cd7be4dd67016", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "9b6a729df60f6bf847d56dcdc2da51ea34583d51d468fccac59a2f56671766ae", @@ -19573,11 +19573,11 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d8dfa7ade49312ffd3f606633306cac2ecd9884ee2dd807c495b4affa9bc8697", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "38802d2b84eeed5964d56bbb746cb3b14d4e01f0493689787b09caf4c80d34d7", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9affcebca66455beafdaf7f3a5c5c3ac8c55f5367500c8418763e5a7a15ae10f", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "af793305aaaf4e720c1af0c7a539cbfcd323a9f335e8246aae6bd0f789680f32", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "194f71b95370990b28742ba444092bc30eebd7a06b74bbf935861eecaa06b37f", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9165a802507af68c27fc67274c60299215b4860bd2c1fc2c0072df787ac533b2", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e8cc685bee8b74f94405cbd4e4be22a2e8bc5ae5d5bd5cf56195ec379e9c59f8", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "73dd5c0f1a80f100077d41369fcfa2113c903b519105e55eb8645fccdb12a05c", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6801a164222b37d4fab79338c5c8ffd37eeac893d2f3d0209dd0a6271354e39d", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "44b427fe217297260573e490875341592c234867b103a52f48fb27d3bed5ee49", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d259f9b8ee7005d06c3e733e21c6a7215435851e3ee31051716040ede28bf40a", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8d773f34b06fab01bdaedeb698cd24f9a5979f920967ad60f7a3f11b45f89f03", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a1b546acad68074379c3ff14e226a9d88303ab97ccc71abfcfbee271cdae492a", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2f3af2a4097b6434709c6f7d9c381194c925f558357dc8360731e1b004f401fb", @@ -19585,11 +19585,11 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a57e366c9614a3d27fb4c6debebc3ddb0ef4d9402512320c564615cc05f3c1f6", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "847502c61d8241e9be0d4ae6cb6b3e9c49da71841c0c97548780fa8d5b24136f", "T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8812ab3e17725473649c76839fc3694cf30e39d4f3c51bccd512b51f9b1fe28f", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "746e78811ebba60e4668c7c2b77e879be322489c7b9ac2e0ee9fa66c309bd045", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "876e187cdaee6eaf1396c6382a27fe47d3a3778bd78e1c36a4a9d854a9302699", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "df4c41497183c4257cfb0accfbf009018cac2baecbcf46aab496100303e3fe52", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8ebdadb8089ec9f5a5b2ce45abf2a4b28ee622306bfce745c8de0937877e9b3e", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9ccd5a324932f01c94910b0a4216d1b180af20557418d5bf7188e3ed0fca84cc", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "84d6a5897f63a5e2e44208d04be889a06da333a130ec070988816fe1840ed303", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "07c4e72bb8b8fe9d5c2d21203dcadf2a608e437db15e594230dfd1cde63245c6", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5ce56e81fc20b84081b92aa65d7a141183db9e524faae093d71eab4a352c4012", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3da15da69a9c492cbff68745a3e79bc8f3e83f7f3798949681acc05c973a4aa8", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "95b64edde7f4af26ce913ebd2b068572cf6fce1f6b27983b53596acead8f5e47", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5c93811a2b24863a769f0236b91ff6e562a1928d5c19db9bc29dc66dfca124e9", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "af84e4f609298b46ff221f6e8f53b27b12075abec75e2492d51b0cbdd96d7d59", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b3b9aa431ee6d3cb94b2425c1ac8ce255e1e88aa392c01ca71e1147ffc8e5774", @@ -19791,10 +19791,10 @@ "T3T1_en_test_msg_applysettings.py::test_label_too_long": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "8f8b42a0a7b64fb86a6429109ffaddaacc191fe2e7e1a6c33fe523bf96a59d0d", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "40b7a7147d4c04eb6fbf21ec1f6fca8d7212553bc95371b0ee42333e062905e4", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b733fb16642e275780ddedb1860eaab1c4b5ff917737f5790a0a047585e4d064", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b1a41c2799849db7f6796e82f7bfc6a5ef5f6a068b49f6ee1f90ea6bd1f3ed28", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "703a0227f2398d324cdb9bed0c71daf5cac6beed6cfcac6afe7095abba5e962c", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "370a854e7b1939b2d7b0d3c579ee45b579a2fa0668933ac65899d7a3a45b5861", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "88ef0e0f67910e505d3fc90d12075fcbeef9c463fe2ff055a764e5a00acc28eb", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "16d737cfe047fe9f16af63e0b377ac07017e4ddae76e635ce229f24e5ea3de59", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "c34787dad860d55e2bc3c85a0c368a9da8c57bc563026723b9c80ae77fddf082", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "914b96817ee12dc7053925ad6a8f03cb99bce738dfc30de7e9e3bf06377978c6", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "564f7ca8efac421027694e12d1cc97ed4544102a2a609867ab3289a259fb7642", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e047ef1a569b6bd151d3b69f6bb54416e58db4e82778b43634e9efbaeede1a6d", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "146f947718edeb0994c61cf6d455e62e02950a78095215d32c9eb89657ed5f1e", @@ -19847,10 +19847,10 @@ "T3T1_en_test_protection_levels.py::test_unlocked": "7d56c6330e2b96da1e3d9274e1defb1164e8e665b2de9de82cc3b49137990912", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "753f59b6176fd08d9ec3909212f338bd20f163b9ff4c73d28c2755f153650b99", "T3T1_en_test_protection_levels.py::test_wipe_device": "7aa79b2c578b3466f89aa2b09e046f94ed23efe22a9953e3d9c7ff117ed6558c", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "a215d123c0d14da00fb02c3adfc7fda0a4e3681db688ab9414a392fa731211be", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "962afefaea95bf8d8fa143b8529fb3a70efd6aa0e88cdd08932bc6d26af07832", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "34ed8f7efb640fab0f71d45099421ab25046334c72490febc1c1b20a9a32f2e9", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "67baa8e44caefc7352796d1631e406720aebd5c4b9a0004f98387447cf481b33", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "b231da5a177e459789c9489161d014675e3c1e9a32d22f45ca9f5615eadf853d", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "0fdcfcabf3f6954672f08b4e88e93d83dc795fa8fce78730017b14182e029264", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b61e49f3f20ba192f699e2f61fd74c058906aa72ce599541cab76c8ac6f94033", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "761c589a97f527c679c8de9b27471929f92d1361c18050006bc9b91f5c80bf20", "T3T1_en_test_sdcard.py::test_sd_format": "1716990cba7d3a47bef4700590a796dbcfb3df7b0cceab76d0e6c378d74408cb", "T3T1_en_test_sdcard.py::test_sd_no_format": "4a23edde8d891c33658f18b17d437c523f022f84ff6b9befd30c8faf67bd60a9", "T3T1_en_test_sdcard.py::test_sd_protect_unlock": "4c3bb63f83b0b8a101cd04dab2972685be27350f869a9e5eb1248049bd1587bc", @@ -20937,11 +20937,11 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e67fd97a9436439c72b32b737ed0ef0556d947e3fdca905d6eb69b4aad5273b5", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "391c5680d1c40df99e2feb1300d32f2d64d0130bdca6f7b388eb81ca53cd0d7e", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "032120f2368ad27b8755977c5819e5294af4f5cd0817d1601124233e52aebe2a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f5d1f6a5bc3a13d0433fc17620dd6e675e3b08bf1817131c296fd060f9d72872", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "076e762dbfc86ff7d9e4ff8a324b5aa1711a42362f008e80c898a747bca090a8", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4802acedc44df2a0e111bf36156b3aedf4a74bd92b15c460c6993eabd610a2dd", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "0b003e2b1c007cd6554e0b80b6268cddf5cfd080d6056994f648b7401f916884", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f7780b5d2ff07ca51240ca2632254228c6e96feccc8f21026e1550d93f96331b", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2073e73996a9a88ab89e09fef781bf45eb3277328e19933fb4f7c75229feabd7", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "fe3323da45963fc02a9fdde07414a2eb2a66627d5fd985fb14b1772d17eba6ee", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "58280e7a9defe26a2e210ac7b5375fd6d30be12cb6c621de9062ff8117e1a005", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "77c01c268547d3cecfc432bd9dfdc2985b8a479726d831e92c193cabcff6c579", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ebca7557acbd0ba7bf37e6c5edda2b88084be86976307910b39423da0e7b4310", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6e80eea9a17f15496b9b8664aabded358a0229647d0a49c8fe43082c17200933", @@ -20949,11 +20949,11 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "30d8f9b1a28117d23c2fa70e7503774a1fe0fc19c9f6c0234e55bab677d15e33", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "0f37fd27a16c19b8bea8b34b6e07554a756d5b47796a4f46a3777107066aea8f", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "874763ece4916a39d8f433ad9b2a95b7d5594545493283928ba60bf8a22bec83", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "243c238ac936e568c30306cffcfdc227f0f825160c4abf13a7da80dcfeea3b89", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8ef4eb1edc2a97857a2c9509c9ebc2fc284789f65dccde07ad011dba458f25a5", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "db3432ff965fe72a9c5496d2e95b8d89c0a5b4fc4a6abe5e4bc75e2b97fac293", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5fbeab1f30bca03af9cbdded83d7812e414fd6eb14020468e52393548102f773", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f31755f5dab8897a68f7f403068f40581e72158e39cad9176b27f179d2ef6c7f", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4e38695fcbdd4c22894ec2602823331b55afec89682472d218baa7cbfb0d2183", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4ae5d98d34184d44169ed16dde86a275de3c6e92376f49284a8868f99bc32747", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "cc74a4c933af0dc77cf24cbe84bebe84511df7687f4441da1c13f1716d868cd4", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0485ccd42eb3971ee8fd1903874204d0283444955453d224a6e801181701f8af", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "361f9f24af32a3e9b91cc3ff64700cd6af692464115d2b0b0befd1f337922793", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8d5f267b00d53701f731738a2a9bfd230b04425bdbf3eeb9ffc6c701cc39a968", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "371688d95e2b3f66989431fa39e698263a783380fc44c7bac57992157b93469f", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6b05cf4fcdd0d75f4ccccbb04a93d4b663209f40f425ff738de10ab7aefd6fe3", @@ -21155,10 +21155,10 @@ "T3T1_es_test_msg_applysettings.py::test_label_too_long": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "49fb86f0e50d6cdd78ff381a99f801c690b745e9e679915087c06f29d9fca501", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "e1d6c513f2e95e481b963b8fced7f8f224425b70337195f1aef0c5f3d0afa673", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a198e32feb2d70179dee702124c5041eaab70845ae1b5e29adffd1970c3575d1", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "21b6b0f341f17d40de0978324cd9c4f0149e897711e857d7d98cab8b071b9f1c", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "8000292580d2c52eb4813c36d17bd823c63866f1f01b35065a58f1870fd7cc22", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d553e455fbe83cde5ba20198aa2c08014d4fcaf4e334d8e87648ba89c004bf48", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "05dfab7b4b3b3f664021ebc5cd022d884b5aaa34dacaec74e84c1557cfe742ce", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "72630455a14239ffe184423f6370a1e28c799ab77182d6a67ceb995ee9161f0a", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "8472a6ee908f77943d9895ecbc0833c1767392ae1e0f0c831cc806149c882f76", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1623d53b3d71ac353f42e764ed3af3f6b315fc9bd1ed38b7a64d2a98635ebe1e", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "f30277f400fd3e0ee282235e2b83f80524531b2853a211c723d29c33ea94f3b6", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "2822e1cb5912319491d72c971165fdd5d8e893648b91a2c2144e29c258809d4e", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a5307973d9d6742a994599fb392d567daed24175a855239fef35c589e6b2eadc", @@ -21211,10 +21211,10 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "b5f7523c1963120655c5ddc7fda0853ad01d336a612f09f4b54ca7790a61f44a", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "97ce1e09ca7bf9b8b94a6d55a01b0a28575c9dc25e5aee70e442d23ad7c10d69", "T3T1_es_test_protection_levels.py::test_wipe_device": "97610e6da5f399b060bd8216c74c3d1268d121d0f3ad8cfd530473fe7e431878", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "c7db58092f700b32138b1686cd67d766d2bf69e853cf1844447cfc28bac29c6f", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "74e9364bd728175f1e684a3400ddb265ba00c4fc1ad92c21895774b1886b3b82", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "50e2b7b9bfeac6a7cfd42350c64491053b4a88194c43aaca4921ffd71cfb78ad", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4425e78e4910563ab65d7a0f2ef98caeb57475bf72defc152752ae3275ed5cbf", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "05379a9b7375f1a53c522bc6bcae5f62e7b60a662b16a47205e8eba9fae7a06f", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "b24ffd3d8aa03bb39852e38bbf89041814d49ad0940656f854af94b6c4710d99", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1702cd764033501b25197b3c79cc465280e93fde247f570616d74ab586abeabd", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8f393ff5dc70e0561a18354644d7eb47be3c5d76f972e85f54d11e3937fa7dd0", "T3T1_es_test_sdcard.py::test_sd_format": "2d3eadebc53baf9e73850df77ebf264316667d92d977ffff807edac30a2ca4eb", "T3T1_es_test_sdcard.py::test_sd_no_format": "fcd7ee499c336d76070703c8c60baa583a267efec1f77a2e92201ba630876640", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "37bb970f069e7957ebcbd2a1934e95a9e7049b5d6bcdb0fb094642da7668d588", @@ -22301,11 +22301,11 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "78a369b184b485eb2653a48edc07eaf5a8aec32691ebc21ef63b899aaa61c5bb", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "9eaae8f66bccdd48933bbc7baa8e7d34560099cdcf08e77f7c4e69bc60e46b0b", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "97853845f52377892d6e214f693212dfa95572d05f0c02df45d0d597a13d0e75", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "47885ba27947c85b7fb66277da0ab6dd73b1b3d8c23a76445c802bdc95decc7b", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "43fe7ff7dc29b9d4b99fe986ec479ad4404a81faaec3fa69a20e7ae93bad4892", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "418a2dbae1154de989c6b00b002cd64015d4c37e434db218b9d760d8bfc7ce1b", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "11a7e9e32d3a41d52e6832f9f15d7ddb9f6f26b192c6c0cfff5ce226435d4963", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5dce331e9668899cd6ef6da6e746187a6a81abde78c97c1d5f9e299956a3f109", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f53372743acdb56f4c1ff725db25fbb6c93f0b5174ce1a197a85f1186e3f3f6e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "66e6e1aa2e8ef902b1701a67d7973bc637d127dad6f0fc0d7505f74e01484c6e", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "e2bfe0e84150020ec4dd23bf1c3c3ddeb7e71062800d8c84f46af141ffa0be39", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b5ab3ef7d4cc2c07bed6dd23d1aec963dfaeded2c6ef44a682e021340491a1c5", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9bbbe0ff07daf68f350f92868567611f11a1d61c0f25112bf45df199a42ff06c", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "16456784878ad824bce8c43ce91f28a5112a1a1aef4836d0c2827fda6b976520", @@ -22313,11 +22313,11 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2e678df14411a1573f4c0c5b9c5486ebb6ba50888f5be574e4e15849b04f7389", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c7a51d540ad145800233cd7c5aa3359a0a874cb8f970976690984f13b9699551", "T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1f3033f6b65054b4fecc76fc2823be72859a4cfb26524bc63bd30a4bd98dd693", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9c9473f105029468077268a35f358154f67b24c72358980752ea206dc60eaada", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8c5417f481657232cfbdae778ba0606ba2676efeb511276fbabadc15bb28f8e8", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "10401c667d47d04fb4eb4086dc76bf6cb091883a961b0c1183c9a02595066e4d", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "ebb5241fed461254913bbd4beafcc407c75a7bb3def990ce36639727e2ce1090", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "33057aae7d93c8c4125b2e85e147c2dae9ab79e58d936d199877d2452b80bf2b", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "944c84c132000efef66c2e5a6a7c87f6062b8502b28734b061eb3229361fd115", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1f64c7b31d7d498a0ade663834b70ecb36f70e698f5284ec643aac3bb0e10818", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8bc1757e022761b4753eaafeac69e82d7ae982dfc81991b3f63906061b12737b", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "78e8f1f7ae1f624ce4b9f96575678389672b94b3ef7bc059c3555e0e97c87176", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "52989e28ab665b125999d9ee984d6f5f760988757ff8567afd00ed10d0c7a3fb", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "1eff1ed9c60943369f0a400f0722e570eff48e4ded73aa4345fba24fd827ea7b", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "10d2a505e2d7f4e8caffd397b75eaa99d048cbcb9d12d172a566b3293e17c390", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a38baf7bbd7b2c6af02784c57c3074ba0907aab4048bd328314a59009b25fe6f", @@ -22519,10 +22519,10 @@ "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "d07cb0e260158eafd735649cd369ac378ea588f3d4bbb0de84e2ef7abb7c76e0", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "4bc48e6f1279014f299c4f3cb4a9ca1316dd0267f4eb4143a61aef358c3fd487", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7c18286bb2d247ce2f5fe65893906fa16d4493418456d1f6ba15d264ddc66b01", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "8c5c4bcda213599ecb9fa2bd84c2d4b0324a442967e9388d3a235e5edc17366d", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "98d9f3473e6894f7554025d37900d6379336c796f0874aa8e947e8b75c01257e", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "822d298a34369da898399d79f5e8e54c578054aee30652b9fbff90e759cb6bfb", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1e418948783eb4902683f2ee7edacadda05d73a9fa729195886b6435c6bc3794", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6ebdb073043241bd236ee286e138e545eaae24e4b8978c58698e2400aeaf85f6", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "06a2e3aa7851cb65aaefbf95d095fa4f00510efca0f7de151496da239614d9fa", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9c9cc69bd9b23beb7aaecc633d23a78df38deef85a88a1b3af5e102ab62edcb4", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "af35bc713d80ebc075a958acc7b1269c2e871b0fb6edfc353ffd74f8d73920f8", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "aa9561b1acf9f37ceb7b8c464212ea3521405f1301628612e8611b5136fb04dd", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "4f21ea95d722ea7a161051af2bb24e14a24eb0c972d79f83c2c037c6fa8e5289", @@ -22575,10 +22575,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "35cbeb9d02695d1e32461f9cda335beb65f7eb5c7580a1bed62dbc1dd2b54cb2", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "194d8261551236ade76cbace4e915c634673775cd825f18c0e8678365069c8e1", "T3T1_fr_test_protection_levels.py::test_wipe_device": "2c7147da05699ed5e4e210d2809369817ffce4ece65e210d69313ffb90c36de6", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "2d6a93577a095b140a058011bcb2add36343d9c93c483aa1898d277d0fa670ac", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "299c3201f848c3f87f10a179a089d5db3880410296e77bc7c5a6d6501af7e1f2", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "64f7becc9c41558d51b2483ee40f305e6bebd0edc5a9473984aeb0a127436f25", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6b103e68defdf52ba3068458b25f97338937d9dcdcd44322a52a53306c8eab07", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "b3a9090dd3aa168ec36c8aef7417f7c95380b26adbf042de2c57a2d3d3b03afe", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "156c18a39673a23da766b6b4874745e3cfc67415bcd2022bd99311229938f1fb", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "dfde294e39d4fda04d8a3afcbbaad5abdd7e732b1e7c926481eae6a9ce0cc354", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "64d5f0ebd8640a53379862194fa5062c0d6bb8e1aa9b520529551c430a00ffc1", "T3T1_fr_test_sdcard.py::test_sd_format": "6683e27dce5276f9a5646c90d8c5aa19d8df5af098f5c808304abef02ff09d9f", "T3T1_fr_test_sdcard.py::test_sd_no_format": "cad883696fe6ed7320aeec419e118acdc897b22eea22f5d9cdff84ba5b0504d3", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "9f74d824c66a01638b8e1d1172dca750facfb2b2a6e3759642d688afcbe216c7", From bb310ad60d73e32cb2cdad3e2810eea5250de18d Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 6 Jun 2024 13:19:02 +0200 Subject: [PATCH 319/626] fix(core): improve framebuffer switching [no changelog] --- core/embed/trezorhal/bg_copy.h | 20 +- .../trezorhal/stm32f4/displays/st7789v.c | 4 +- .../stm32f4/xdisplay/st-7789/display_driver.c | 26 +- .../stm32f4/xdisplay/st-7789/display_fb.c | 278 ++++++++++-------- .../stm32f4/xdisplay/st-7789/display_fb.h | 2 - .../xdisplay/st-7789/display_internal.h | 59 ++++ .../stm32f4/xdisplay/st-7789/display_io.c | 5 +- .../stm32f4/xdisplay/st-7789/display_nofb.c | 18 +- core/embed/trezorhal/stm32u5/bg_copy.c | 9 +- core/embed/trezorhal/xdisplay_legacy.c | 6 +- 10 files changed, 279 insertions(+), 148 deletions(-) create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_internal.h diff --git a/core/embed/trezorhal/bg_copy.h b/core/embed/trezorhal/bg_copy.h index 2bbc8959d7..be40c25428 100644 --- a/core/embed/trezorhal/bg_copy.h +++ b/core/embed/trezorhal/bg_copy.h @@ -7,9 +7,10 @@ #include <stdint.h> /** - * Wait for the data transfer completion + * Callback function invoked from the IRQ context + * when the transfer is complete */ -void bg_copy_wait(void); +typedef void (*bg_copy_callback_t)(void); /** * Performs data copy from src to dst in the background. The destination is @@ -19,8 +20,21 @@ void bg_copy_wait(void); * @param src source data address * @param dst destination data address * @param size size of data to be transferred in bytes + * @param callback optional callback to be called when the transfer is complete + */ +void bg_copy_start_const_out_8(const uint8_t *src, uint8_t *dst, size_t size, + bg_copy_callback_t callback); + +/** + * Waits for the data transfer completion + */ +void bg_copy_wait(void); + +/** + * Immediately aborts the data transfer + * + * @note The callback will not be called */ -void bg_copy_start_const_out_8(const uint8_t *src, uint8_t *dst, size_t size); void bg_copy_abort(void); diff --git a/core/embed/trezorhal/stm32f4/displays/st7789v.c b/core/embed/trezorhal/stm32f4/displays/st7789v.c index 55659d54ae..b0b03d9e1c 100644 --- a/core/embed/trezorhal/stm32f4/displays/st7789v.c +++ b/core/embed/trezorhal/stm32f4/displays/st7789v.c @@ -567,12 +567,12 @@ void DISPLAY_TE_INTERRUPT_HANDLER(void) { if (act_frame_buffer == 1) { bg_copy_start_const_out_8((uint8_t *)PhysFrameBuffer1, (uint8_t *)DISPLAY_DATA_ADDRESS, - DISPLAY_RESX * DISPLAY_RESY * 2); + DISPLAY_RESX * DISPLAY_RESY * 2, NULL); } else { bg_copy_start_const_out_8((uint8_t *)PhysFrameBuffer0, (uint8_t *)DISPLAY_DATA_ADDRESS, - DISPLAY_RESX * DISPLAY_RESY * 2); + DISPLAY_RESX * DISPLAY_RESY * 2, NULL); } pending_fb_switch = false; diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c index 2a3cd3e6e6..74a49e4f1a 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c @@ -22,6 +22,7 @@ #include <xdisplay.h> #include "display_fb.h" +#include "display_internal.h" #include "display_io.h" #include "display_panel.h" @@ -39,14 +40,8 @@ #error "Incompatible display resolution" #endif -// Display driver context. -typedef struct { - // Current display orientation (0, 90, 180, 270) - int orientation_angle; -} display_driver_t; - // Display driver instance -static display_driver_t g_display_driver; +display_driver_t g_display_driver; void display_init(void) { display_driver_t* drv = &g_display_driver; @@ -84,7 +79,8 @@ void display_reinit(void) { void display_finish_actions(void) { #ifdef XFRAMEBUFFER #ifndef BOARDLOADER - wait_for_fb_switch(); + display_ensure_refreshed(); + svc_disableIRQ(DISPLAY_TE_INTERRUPT_NUM); #endif #endif } @@ -135,18 +131,4 @@ int display_get_orientation(void) { return drv->orientation_angle; } -void display_wait_for_sync(void) { -#ifdef DISPLAY_TE_PIN - uint32_t id = display_panel_identify(); - if (id && (id != DISPLAY_ID_GC9307)) { - // synchronize with the panel synchronization signal - // in order to avoid visual tearing effects - while (GPIO_PIN_SET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) - ; - while (GPIO_PIN_RESET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) - ; - } -#endif -} - void display_set_compatible_settings(void) { display_panel_set_big_endian(); } diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c index 8a53c48823..a0e89d1bd2 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.c @@ -25,6 +25,7 @@ #include STM32_HAL_H #include "display_fb.h" +#include "display_internal.h" #include "display_io.h" #include "display_panel.h" #include "xdisplay.h" @@ -41,173 +42,220 @@ #error Framebuffer only supported on STM32U5 for now #endif +// The following code supports only 1 or 2 frame buffers +_Static_assert(FRAME_BUFFER_COUNT == 1 || FRAME_BUFFER_COUNT == 2); + // Size of the physical frame buffer in bytes #define PHYSICAL_FRAME_BUFFER_SIZE (DISPLAY_RESX * DISPLAY_RESY * 2) // Physical frame buffers in internal SRAM memory. // Both frame buffers layes in the fixed addresses that // are shared between bootloaders and the firmware. -__attribute__((section(".fb1"))) +static __attribute__((section(".fb1"))) ALIGN_32BYTES(uint8_t physical_frame_buffer_0[PHYSICAL_FRAME_BUFFER_SIZE]); -__attribute__((section(".fb2"))) -ALIGN_32BYTES(uint8_t physical_frame_buffer_1[PHYSICAL_FRAME_BUFFER_SIZE]); - -// The current frame buffer selector at fixed memory address -// It's shared between bootloaders and the firmware -__attribute__((section(".framebuffer_select"))) uint32_t current_frame_buffer = - 0; -void display_physical_fb_clear(void) { - memset(physical_frame_buffer_0, 0, sizeof(physical_frame_buffer_0)); - memset(physical_frame_buffer_1, 0, sizeof(physical_frame_buffer_1)); -} - -#ifndef BOARDLOADER -static volatile uint16_t pending_fb_switch = 0; -static volatile uint32_t last_fb_update_time = 0; +#if (FRAME_BUFFER_COUNT > 1) +static __attribute__((section(".fb2"))) +ALIGN_32BYTES(uint8_t physical_frame_buffer_1[PHYSICAL_FRAME_BUFFER_SIZE]); #endif -#ifndef BOARDLOADER -void DISPLAY_TE_INTERRUPT_HANDLER(void) { - if (pending_fb_switch == 1) { - if (current_frame_buffer == 1) { - bg_copy_start_const_out_8((uint8_t *)physical_frame_buffer_1, - (uint8_t *)DISPLAY_DATA_ADDRESS, - DISPLAY_RESX * DISPLAY_RESY * 2); - - } else { - bg_copy_start_const_out_8((uint8_t *)physical_frame_buffer_0, - (uint8_t *)DISPLAY_DATA_ADDRESS, - DISPLAY_RESX * DISPLAY_RESY * 2); - } - last_fb_update_time = HAL_GetTick(); - pending_fb_switch = 2; - } else if (pending_fb_switch == 2) { - HAL_NVIC_DisableIRQ(DISPLAY_TE_INTERRUPT_NUM); - pending_fb_switch = 0; +// Returns the pointer to the physical frame buffer (0.. FRAME_BUFFER_COUNT-1) +// Returns NULL if the framebuffer index is out of range. +static uint8_t *get_fb_ptr(uint32_t index) { + if (index == 0) { + return physical_frame_buffer_0; +#if (FRAME_BUFFER_COUNT > 1) + } else if (index == 1) { + return physical_frame_buffer_1; +#endif } else { - HAL_NVIC_DisableIRQ(DISPLAY_TE_INTERRUPT_NUM); - pending_fb_switch = 0; + return NULL; } - __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); } -static void copy_fb_to_display(const uint16_t *fb) { - for (int i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { - // 2 bytes per pixel because we're using RGB 5-6-5 format - ISSUE_PIXEL_DATA(fb[i]); +void display_physical_fb_clear(void) { + for (int i = 0; i < FRAME_BUFFER_COUNT; i++) { + memset(get_fb_ptr(i), 0, PHYSICAL_FRAME_BUFFER_SIZE); } } -void wait_for_fb_switch(void) { - if (is_mode_handler()) { - if (pending_fb_switch != 0) { - if (current_frame_buffer == 0) { - copy_fb_to_display((uint16_t *)physical_frame_buffer_1); - } else { - copy_fb_to_display((uint16_t *)physical_frame_buffer_0); - } - pending_fb_switch = 0; - } - } else { - while (pending_fb_switch != 0) { - __WFI(); - } - bg_copy_wait(); +#ifndef BOARDLOADER + +// Callback called when the background copying is done +// It's called from the IRQ context +static void bg_copy_callback(void) { + display_driver_t *drv = &g_display_driver; + + if (drv->queue.rix >= FRAME_BUFFER_COUNT) { + // This is an invalid state and we should never get here + return; } + + drv->queue.entry[drv->queue.rix] = FB_STATE_EMPTY; + drv->queue.rix = (drv->queue.rix + 1) % FRAME_BUFFER_COUNT; } -#endif -static void switch_fb_manually(void) { - // sync with the panel refresh - while (GPIO_PIN_SET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) { - } - while (GPIO_PIN_RESET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) { - } +// Interrupt routing handling TE signal +void DISPLAY_TE_INTERRUPT_HANDLER(void) { + display_driver_t *drv = &g_display_driver; - if (current_frame_buffer == 0) { - current_frame_buffer = 1; - copy_fb_to_display((uint16_t *)physical_frame_buffer_1); - memcpy(physical_frame_buffer_0, physical_frame_buffer_1, - sizeof(physical_frame_buffer_0)); + __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); - } else { - current_frame_buffer = 0; - copy_fb_to_display((uint16_t *)physical_frame_buffer_0); - memcpy(physical_frame_buffer_1, physical_frame_buffer_0, - sizeof(physical_frame_buffer_1)); + if (drv->queue.rix >= FRAME_BUFFER_COUNT) { + // This is an invalid state and we should never get here + return; } -} - -#ifndef BOARDLOADER -static void switch_fb_in_background(void) { - if (current_frame_buffer == 0) { - current_frame_buffer = 1; - memcpy(physical_frame_buffer_0, physical_frame_buffer_1, - sizeof(physical_frame_buffer_0)); + switch (drv->queue.entry[drv->queue.rix]) { + case FB_STATE_EMPTY: + case FB_STATE_PREPARING: + // No new frame queued + break; + + case FB_STATE_COPYING: + // Currently we are copying a data to the display. + // We need to wait for the next TE interrupt. + break; + + case FB_STATE_READY: + // Now it's proper time to copy the data to the display + drv->queue.entry[drv->queue.rix] = FB_STATE_COPYING; + display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); + bg_copy_start_const_out_8(get_fb_ptr(drv->queue.rix), + (uint8_t *)DISPLAY_DATA_ADDRESS, + PHYSICAL_FRAME_BUFFER_SIZE, bg_copy_callback); - pending_fb_switch = 1; - __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); - svc_enableIRQ(DISPLAY_TE_INTERRUPT_NUM); - } else { - current_frame_buffer = 0; - memcpy(physical_frame_buffer_1, physical_frame_buffer_0, - sizeof(physical_frame_buffer_1)); + // NOTE: when copying is done, this queue slot is marked empty + // (see bg_copy_callback()) + break; - pending_fb_switch = 1; - __HAL_GPIO_EXTI_CLEAR_FLAG(DISPLAY_TE_PIN); - svc_enableIRQ(DISPLAY_TE_INTERRUPT_NUM); + default: + // This is an invalid state and we should never get here + break; } } #endif display_fb_info_t display_get_frame_buffer(void) { - void *addr; + display_driver_t *drv = &g_display_driver; + + frame_buffer_state_t state; + + // We have to wait if the buffer was passed for copying + // to the interrupt handler + do { + state = drv->queue.entry[drv->queue.wix]; + } while (state == FB_STATE_READY || state == FB_STATE_COPYING); + + if (state == FB_STATE_EMPTY) { + // First use of this buffer, copy the previous buffer into it +#if (FRAME_BUFFER_COUNT > 1) + uint8_t *src = get_fb_ptr((FRAME_BUFFER_COUNT + drv->queue.wix - 1) % + FRAME_BUFFER_COUNT); + uint8_t *dst = get_fb_ptr(drv->queue.wix); + memcpy(dst, src, PHYSICAL_FRAME_BUFFER_SIZE); +#endif + }; - if (current_frame_buffer == 0) { - addr = (void *)physical_frame_buffer_1; - } else { - addr = (void *)physical_frame_buffer_0; - } + drv->queue.entry[drv->queue.wix] = FB_STATE_PREPARING; display_fb_info_t fb = { - .ptr = addr, + .ptr = get_fb_ptr(drv->queue.wix), .stride = DISPLAY_RESX * sizeof(uint16_t), }; return fb; } +// Copies the frame buffer with the given index to the display +static void copy_fb_to_display(uint8_t index) { + uint16_t *fb = (uint16_t *)get_fb_ptr(index); + + if (fb != NULL) { + display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); + for (int i = 0; i < DISPLAY_RESX * DISPLAY_RESY; i++) { + // 2 bytes per pixel because we're using RGB 5-6-5 format + ISSUE_PIXEL_DATA(fb[i]); + } + } +} + +static void wait_for_te_signal(void) { + // sync with the panel refresh + while (GPIO_PIN_SET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) { + } + while (GPIO_PIN_RESET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) { + } +} + void display_refresh(void) { -#ifndef BOARDLOADER + display_driver_t *drv = &g_display_driver; + + if (drv->queue.entry[drv->queue.wix] != FB_STATE_PREPARING) { + // No refresh needed as the frame buffer is not in + // the state to be copied to the display + return; + } +#ifndef BOARDLOADER if (is_mode_handler()) { - if (pending_fb_switch != 0) { - pending_fb_switch = 0; - bg_copy_abort(); + // Disable scheduling of any new background copying + HAL_NVIC_DisableIRQ(DISPLAY_TE_INTERRUPT_NUM); + // Wait for next TE signal. During this time the + // display might be updated in the background + wait_for_te_signal(); + // Stop any background copying even if it is not finished yet + bg_copy_abort(); + // Copy the frame buffer to the display manually + copy_fb_to_display(drv->queue.wix); + // Reset the buffer queue so we can eventually continue + // safely in thread mode + drv->queue.wix = 0; + drv->queue.rix = 0; + for (int i = 0; i < FRAME_BUFFER_COUNT; i++) { + drv->queue.entry[i] = FB_STATE_EMPTY; } - display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); - switch_fb_manually(); + // Enable normal processing again + HAL_NVIC_EnableIRQ(DISPLAY_TE_INTERRUPT_NUM); } else { - wait_for_fb_switch(); - display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); - switch_fb_in_background(); + // Mark the buffer ready to switch to + drv->queue.entry[drv->queue.wix] = FB_STATE_READY; + drv->queue.wix = (drv->queue.wix + 1) % FRAME_BUFFER_COUNT; } -#else - display_panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); - switch_fb_manually(); + +#else // BOARDLOADER + wait_for_te_signal(); + copy_fb_to_display(drv->queue.wix); + drv->queue.entry[drv->queue.wix] = FB_STATE_EMPTY; #endif } void display_ensure_refreshed(void) { #ifndef BOARDLOADER + display_driver_t *drv = &g_display_driver; + if (!is_mode_handler()) { - wait_for_fb_switch(); - // the update time is collected after starting the BG copy, then we need to - // wait: for the bg copy to finish and for at least one full refresh cycle - // before we can consider the display fully redrawn - while (HAL_GetTick() - last_fb_update_time < 40) { + bool copy_pending; + + // Wait until all frame buffers are written to the display + // so we can be sure there's not scheduled or pending + // background copying + do { + copy_pending = false; + for (int i = 0; i < FRAME_BUFFER_COUNT; i++) { + frame_buffer_state_t state = drv->queue.entry[i]; + if (state == FB_STATE_READY || state == FB_STATE_COPYING) { + copy_pending = true; + break; + } + } + __WFI(); + } while (copy_pending); + + // Wait until the display is fully refreshed + // (TE signal is low when the display is updating) + while (GPIO_PIN_RESET == + HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) { __WFI(); } } diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h index 437b546466..0afa1de2d2 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_fb.h @@ -29,8 +29,6 @@ void display_physical_fb_clear(void); void display_ensure_refreshed(void); -void wait_for_fb_switch(void); - #endif // XFRAMEBUFFER #endif // TREZORHAL_DISPLAY_FB_H diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_internal.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_internal.h new file mode 100644 index 0000000000..611e02e0c9 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_internal.h @@ -0,0 +1,59 @@ +#ifndef TREZORHAL_DISPLAY_INTERNAL_H +#define TREZORHAL_DISPLAY_INTERNAL_H + +#include <stdint.h> + +#ifdef XFRAMEBUFFER + +// Number of frame buffers used (1 or 2) +// If 1 buffer is selected, some animations may not +// be so smooth but the memory usage is lower. +#define FRAME_BUFFER_COUNT 2 + +// Each frame buffer can be in one of the following states: +typedef enum { + // The frame buffer is empty and can be written to + FB_STATE_EMPTY = 0, + // The frame buffer pass passed to application + FB_STATE_PREPARING = 1, + // The frame buffer was written to and is ready + // to be copied to the display + FB_STATE_READY = 2, + // The frame buffer is currently being copied to + // the display + FB_STATE_COPYING = 3, + +} frame_buffer_state_t; + +typedef struct { + // Queue entries + volatile frame_buffer_state_t entry[FRAME_BUFFER_COUNT]; + // Read index + // (accessed & updated in the context of the interrupt handlers + uint8_t rix; + // Write index + // (accessed & updated in context of the main thread) + uint8_t wix; + +} frame_buffer_queue_t; + +#endif // XFRAMEBUFFER + +// Display driver state +typedef struct { +#ifdef XFRAMEBUFFER + // Framebuffer queue + // (accessed & updated in the context of the main thread + // and the interrupt context) + volatile frame_buffer_queue_t queue; +#endif + + // Current display orientation (0, 90, 180, 270) + int orientation_angle; + +} display_driver_t; + +// Display driver instance +extern display_driver_t g_display_driver; + +#endif // TREZORHAL_DISPLAY_INTERNAL_H diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c index fe02ca207a..edb12ef49c 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_io.c @@ -22,6 +22,7 @@ #include "display_io.h" #include "irq.h" +#include "supervise.h" __IO DISP_MEM_TYPE *const DISPLAY_CMD_ADDRESS = (__IO DISP_MEM_TYPE *const)((uint32_t)DISPLAY_MEMORY_BASE); @@ -35,7 +36,6 @@ void display_io_init_gpio(void) { __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_FMC_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStructure; @@ -87,6 +87,8 @@ void display_io_init_gpio(void) { } void display_io_init_fmc(void) { + __HAL_RCC_FMC_CLK_ENABLE(); + // Reference UM1725 "Description of STM32F4 HAL and LL drivers", // section 64.2.1 "How to use this driver" SRAM_HandleTypeDef external_display_data_sram = {0}; @@ -141,5 +143,6 @@ void display_io_init_te_interrupt(void) { // setup interrupt for tearing effect pin HAL_NVIC_SetPriority(DISPLAY_TE_INTERRUPT_NUM, IRQ_PRI_DMA, 0); + svc_enableIRQ(DISPLAY_TE_INTERRUPT_NUM); } #endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c index 011bc7a3b4..412427a0b9 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_nofb.c @@ -25,7 +25,23 @@ #include "display_panel.h" void display_refresh(void) { - // if the framebuffer is not used the implementation is empty + // If the framebuffer is not used the, we do not need + // to refresh the display explicitly as we write the data + // directly to the display internal RAM. +} + +void display_wait_for_sync(void) { +#ifdef DISPLAY_TE_PIN + uint32_t id = display_panel_identify(); + if (id && (id != DISPLAY_ID_GC9307)) { + // synchronize with the panel synchronization signal + // in order to avoid visual tearing effects + while (GPIO_PIN_SET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) + ; + while (GPIO_PIN_RESET == HAL_GPIO_ReadPin(DISPLAY_TE_PORT, DISPLAY_TE_PIN)) + ; + } +#endif } static inline void set_window(const gfx_bitblt_t* bb) { diff --git a/core/embed/trezorhal/stm32u5/bg_copy.c b/core/embed/trezorhal/stm32u5/bg_copy.c index 054328c962..97c2b6b66e 100644 --- a/core/embed/trezorhal/stm32u5/bg_copy.c +++ b/core/embed/trezorhal/stm32u5/bg_copy.c @@ -9,6 +9,7 @@ static volatile uint32_t dma_transfer_remaining = 0; static volatile uint32_t dma_data_transferred = 0; static void *data_src = NULL; static void *data_dst = NULL; +static bg_copy_callback_t bg_copy_callback = NULL; static DMA_HandleTypeDef DMA_Handle = {0}; void HAL_DMA_XferCpltCallback(DMA_HandleTypeDef *hdma) { @@ -46,6 +47,10 @@ void GPDMA1_Channel0_IRQHandler(void) { HAL_NVIC_DisableIRQ(GPDMA1_Channel0_IRQn); data_src = NULL; data_dst = NULL; + + if (bg_copy_callback != NULL) { + bg_copy_callback(); + } } } @@ -57,12 +62,14 @@ void bg_copy_wait(void) { } } -void bg_copy_start_const_out_8(const uint8_t *src, uint8_t *dst, size_t size) { +void bg_copy_start_const_out_8(const uint8_t *src, uint8_t *dst, size_t size, + bg_copy_callback_t callback) { uint32_t data_to_send = size > MAX_DATA_SIZE ? MAX_DATA_SIZE : size; dma_transfer_remaining = size; dma_data_transferred = 0; data_src = (void *)src; data_dst = (void *)dst; + bg_copy_callback = callback; // setup DMA for data copy to constant output address diff --git a/core/embed/trezorhal/xdisplay_legacy.c b/core/embed/trezorhal/xdisplay_legacy.c index 516f746403..8f63db4bc9 100644 --- a/core/embed/trezorhal/xdisplay_legacy.c +++ b/core/embed/trezorhal/xdisplay_legacy.c @@ -40,4 +40,8 @@ int display_backlight(int level) { } } -void display_sync(void) {} +void display_sync(void) { +#ifndef XFRAMEBUFFER + display_wait_for_sync(); +#endif +} From a8f808822cf44ab4657d27451b5b7dd4b04d486c Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Thu, 6 Jun 2024 15:17:57 +0200 Subject: [PATCH 320/626] fix(core/rust): shorten the ANIM_FRAME_TIMER deadline [no changelog] --- core/embed/rust/src/ui/component/base.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 6c5a1a8721..accdfa2e8f 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -535,7 +535,7 @@ impl EventCtx { pub const ANIM_FRAME_TIMER: TimerToken = TimerToken(1); /// How long into the future we should schedule the animation frame timer. - const ANIM_FRAME_DEADLINE: Duration = Duration::from_millis(18); + const ANIM_FRAME_DEADLINE: Duration = Duration::from_millis(1); // 0 == `TimerToken::INVALID`, // 1 == `Self::ANIM_FRAME_TIMER`. From ecf31610b0530112bfeaf467262e141520f9a209 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 11 Jun 2024 10:29:41 +0200 Subject: [PATCH 321/626] refactor(storage): Refactor storage_upgrade(). --- storage/storage.c | 57 ++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/storage/storage.c b/storage/storage.c index 591fb7e5d3..388c13ffb5 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -1529,41 +1529,24 @@ static secbool storage_upgrade(void) { unlocked = secfalse; memzero(cached_keys, sizeof(cached_keys)); - } else { - // Copy all entries. + } else if (norcow_active_version < 4) { + // Change data structure for encrypted entries. uint32_t offset = 0; while (sectrue == norcow_get_next(&offset, &key, &val, &len)) { - if (norcow_active_version < 4) { - // Change data structure for encrypted entries. - const uint8_t app = key >> 8; - - if (((app & FLAG_PUBLIC) == 0) && - !(key == PIN_LOGS_KEY || key == EDEK_PVC_KEY || - key == PIN_NOT_SET_KEY || key == STORAGE_TAG_KEY || - key == WIPE_CODE_DATA_KEY || key == STORAGE_UPGRADED_KEY || - key == UNAUTH_VERSION_KEY)) { - if (sectrue != norcow_set(key, NULL, len)) { - return secfalse; - } - if (sectrue != - norcow_update_bytes(key, ((uint8_t *)val), CHACHA20_IV_SIZE)) { - return secfalse; - } - if (sectrue != - norcow_update_bytes( - key, ((uint8_t *)val) + CHACHA20_IV_SIZE + POLY1305_TAG_SIZE, - len - CHACHA20_IV_SIZE - POLY1305_TAG_SIZE)) { - return secfalse; - } - if (sectrue != - norcow_update_bytes(key, ((uint8_t *)val) + CHACHA20_IV_SIZE, - POLY1305_TAG_SIZE)) { - return secfalse; - } - } else { - if (sectrue != norcow_set(key, val, len)) { - return secfalse; - } + const uint8_t app = key >> 8; + if (((app & FLAG_PUBLIC) == 0) && + (app != APP_STORAGE || key == VERSION_KEY)) { + const uint8_t *iv = (const uint8_t *)val; + const uint8_t *tag = (const uint8_t *)val + CHACHA20_IV_SIZE; + const uint8_t *ciphertext = + (const uint8_t *)val + CHACHA20_IV_SIZE + POLY1305_TAG_SIZE; + const size_t ciphertext_len = + len - CHACHA20_IV_SIZE - POLY1305_TAG_SIZE; + if (sectrue != norcow_set(key, NULL, len) || + sectrue != norcow_update_bytes(key, iv, CHACHA20_IV_SIZE) || + sectrue != norcow_update_bytes(key, ciphertext, ciphertext_len) || + sectrue != norcow_update_bytes(key, tag, POLY1305_TAG_SIZE)) { + return secfalse; } } else { if (sectrue != norcow_set(key, val, len)) { @@ -1571,6 +1554,14 @@ static secbool storage_upgrade(void) { } } } + } else { + // Copy all entries. + uint32_t offset = 0; + while (sectrue == norcow_get_next(&offset, &key, &val, &len)) { + if (sectrue != norcow_set(key, val, len)) { + return secfalse; + } + } } // Set wipe code. From 7b636df35fa9423a76d6e708e7fc06325c39c900 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Thu, 13 Jun 2024 14:17:11 +0200 Subject: [PATCH 322/626] feat(core): Rework Optiga PIN processing. --- core/embed/trezorhal/optiga.h | 10 +- core/embed/trezorhal/optiga/optiga.c | 322 ++++++++++++++++++--------- core/embed/trezorhal/unix/optiga.c | 14 +- 3 files changed, 230 insertions(+), 116 deletions(-) diff --git a/core/embed/trezorhal/optiga.h b/core/embed/trezorhal/optiga.h index 8e73161ac2..e196a65bb9 100644 --- a/core/embed/trezorhal/optiga.h +++ b/core/embed/trezorhal/optiga.h @@ -60,12 +60,14 @@ bool __wur optiga_read_cert(uint8_t index, uint8_t *cert, size_t max_cert_size, bool __wur optiga_random_buffer(uint8_t *dest, size_t size); int __wur optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]); + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]); int __wur optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]); + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]); + +int __wur optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, + const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], + uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]); int __wur optiga_pin_get_fails(uint32_t *ctr); diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index b51c0320ef..b3cde1b419 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -47,8 +47,12 @@ // Key for ECDH PIN stretching step (OID 0xE0F3). #define OID_PIN_ECDH (OPTIGA_OID_ECC_KEY + 3) -// The number of times the stretching is repeated in each PIN processing phase. -#define PIN_STRETCH_ITERATIONS 1 +// The number of times the stretching is repeated in each PIN processing phase +// for legacy storage version 3 and 4. +#define PIN_STRETCH_ITERATIONS_V4 1 + +// The number of times that PIN stretching is repeated. +#define PIN_STRETCH_ITERATIONS 2 // Value of the PIN counter when it is reset. static const uint8_t COUNTER_RESET[] = {0, 0, 0, 0, 0, 0, 0, PIN_MAX_TRIES}; @@ -363,8 +367,64 @@ static int optiga_pin_init_stretch(void) { return OPTIGA_SUCCESS; } -static int optiga_pin_stretch_secret(OPTIGA_UI_PROGRESS ui_progress, - uint8_t secret[OPTIGA_PIN_SECRET_SIZE]) { +static int optiga_pin_stretch_common( + OPTIGA_UI_PROGRESS ui_progress, HMAC_SHA256_CTX *ctx, + const uint8_t input[OPTIGA_PIN_SECRET_SIZE]) { + // Implements the functionality that is common to optiga_pin_stretch_secret() + // and the legacy function optiga_pin_stretch_secret_v4(). + + uint8_t buffer[ENCRYPT_SYM_PREFIX_SIZE + OPTIGA_PIN_SECRET_SIZE] = {0}; + size_t size = 0; + + // Combine intermediate result with OID_PIN_CMAC. + optiga_result res = + optiga_encrypt_sym(OPTIGA_SYM_MODE_CMAC, OID_PIN_CMAC, input, + OPTIGA_PIN_SECRET_SIZE, buffer, sizeof(buffer), &size); + if (res != OPTIGA_SUCCESS) { + memzero(buffer, sizeof(buffer)); + return res; + } + + hmac_sha256_Update(ctx, buffer, size); + + // Combine intermediate result with OID_PIN_HMAC + res = + optiga_encrypt_sym(OPTIGA_SYM_MODE_HMAC_SHA256, OID_PIN_HMAC, input, + OPTIGA_PIN_SECRET_SIZE, buffer, sizeof(buffer), &size); + if (res != OPTIGA_SUCCESS) { + memzero(buffer, sizeof(buffer)); + return res; + } + + hmac_sha256_Update(ctx, buffer, size); + + ui_progress(200); + + // Combine intermediate result with OID_PIN_ECDH + uint8_t encoded_point[BIT_STRING_HEADER_SIZE + 65] = {0x03, 0x42, 0x00}; + if (!hash_to_curve_optiga(input, &encoded_point[BIT_STRING_HEADER_SIZE])) { + memzero(buffer, sizeof(buffer)); + return -1; + } + res = optiga_calc_ssec(OPTIGA_CURVE_P256, OID_PIN_ECDH, encoded_point, + sizeof(encoded_point), buffer, sizeof(buffer), &size); + memzero(encoded_point, sizeof(encoded_point)); + if (res != OPTIGA_SUCCESS) { + memzero(buffer, sizeof(buffer)); + return res; + } + + ui_progress(200); + + hmac_sha256_Update(ctx, buffer, size); + memzero(buffer, sizeof(buffer)); + return OPTIGA_SUCCESS; +} + +static int optiga_pin_stretch_secret_v4( + OPTIGA_UI_PROGRESS ui_progress, uint8_t secret[OPTIGA_PIN_SECRET_SIZE]) { + // Legacy PIN verification method used in storage versions 3 and 4. + // This step hardens the PIN verification process in case an attacker is able // to extract the secret value of a data object in Optiga that has a // particular configuration, but does not allow secret extraction for other @@ -376,86 +436,85 @@ static int optiga_pin_stretch_secret(OPTIGA_UI_PROGRESS ui_progress, // Pseudocode for the stretching process: // result_0 = secret - // for i in range(PIN_STRETCH_ITERATIONS): + // for i in range(PIN_STRETCH_ITERATIONS_V4): // cmac_i = CMAC(optiga_cmac_key, result_i) // hmac_i = HMAC(optiga_hmac_key, result_i) // ecdh_i = ECDH(optiga_ecdh_key, result_i) // result_{i+1} = HMAC-SHA256(secret, cmac_i || hmac_i || ecdh_i) - // secret = result_{PIN_STRETCH_ITERATIONS} + // secret = result_{PIN_STRETCH_ITERATIONS_V4} HMAC_SHA256_CTX ctx = {0}; uint8_t result[OPTIGA_PIN_SECRET_SIZE] = {0}; memcpy(result, secret, sizeof(result)); - uint8_t buffer[ENCRYPT_SYM_PREFIX_SIZE + OPTIGA_PIN_SECRET_SIZE] = {0}; - size_t size = 0; - for (int i = 0; i < PIN_STRETCH_ITERATIONS; ++i) { + for (int i = 0; i < PIN_STRETCH_ITERATIONS_V4; ++i) { hmac_sha256_Init(&ctx, secret, OPTIGA_PIN_SECRET_SIZE); - // Combine intermediate result with OID_PIN_CMAC. - optiga_result res = - optiga_encrypt_sym(OPTIGA_SYM_MODE_CMAC, OID_PIN_CMAC, result, - sizeof(result), buffer, sizeof(buffer), &size); + optiga_result res = optiga_pin_stretch_common(ui_progress, &ctx, result); if (res != OPTIGA_SUCCESS) { - memzero(buffer, sizeof(buffer)); memzero(result, sizeof(result)); memzero(&ctx, sizeof(ctx)); return res; } - hmac_sha256_Update(&ctx, buffer, size); + hmac_sha256_Final(&ctx, result); + } - // Combine intermediate result with OID_PIN_HMAC - res = optiga_encrypt_sym(OPTIGA_SYM_MODE_HMAC_SHA256, OID_PIN_HMAC, result, - sizeof(result), buffer, sizeof(buffer), &size); - if (res != OPTIGA_SUCCESS) { - memzero(buffer, sizeof(buffer)); - memzero(result, sizeof(result)); - memzero(&ctx, sizeof(ctx)); - return res; - } + memcpy(secret, result, sizeof(result)); + memzero(result, sizeof(result)); + memzero(&ctx, sizeof(ctx)); + return OPTIGA_SUCCESS; +} - hmac_sha256_Update(&ctx, buffer, size); +static int optiga_pin_stretch_secret( + OPTIGA_UI_PROGRESS ui_progress, + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + // This step hardens the PIN verification process in case an attacker is able + // to extract the secret value of a data object in Optiga that has a + // particular configuration, but does not allow secret extraction for other + // kinds of data objects. An attacker would need to be able to extract each of + // the secrets in the different data objects to conduct an offline brute-force + // search for the PIN. Thus it reduces the number of PIN values that the + // attacker can test in a unit of time by forcing them to involve the Optiga + // in each attempt, and restricts the overall number of attempts using + // OID_PIN_STRETCH_COUNTER. - ui_progress(200); + // Pseudocode for the stretching process: + // for i in range(PIN_STRETCH_ITERATIONS): + // digest = HMAC(secret, "") + // cmac_i = CMAC(optiga_cmac_key, digest) + // hmac_i = HMAC(optiga_hmac_key, digest) + // ecdh_i = ECDH(optiga_ecdh_key, digest) + // secret = HMAC-SHA256(secret, cmac_i || hmac_i || ecdh_i) - // Combine intermediate result with OID_PIN_ECDH - uint8_t encoded_point[BIT_STRING_HEADER_SIZE + 65] = {0x03, 0x42, 0x00}; - if (!hash_to_curve_optiga(result, &encoded_point[BIT_STRING_HEADER_SIZE])) { - memzero(buffer, sizeof(buffer)); - memzero(result, sizeof(result)); - memzero(&ctx, sizeof(ctx)); - return -1; - } - res = - optiga_calc_ssec(OPTIGA_CURVE_P256, OID_PIN_ECDH, encoded_point, - sizeof(encoded_point), buffer, sizeof(buffer), &size); - memzero(encoded_point, sizeof(encoded_point)); + uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; + HMAC_SHA256_CTX ctx = {0}; + for (int i = 0; i < PIN_STRETCH_ITERATIONS; ++i) { + // Process the stretched PIN using a one-way function before sending it to + // the Optiga. This ensures that in the unlikely case of an attacker + // recording communication between the MCU and Optiga, they will not gain + // knowledge of the stretched PIN. + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); + hmac_sha256_Init(&ctx, stretched_pin, OPTIGA_PIN_SECRET_SIZE); + + optiga_result res = optiga_pin_stretch_common(ui_progress, &ctx, digest); if (res != OPTIGA_SUCCESS) { - memzero(buffer, sizeof(buffer)); - memzero(result, sizeof(result)); + memzero(digest, sizeof(digest)); memzero(&ctx, sizeof(ctx)); return res; } - hmac_sha256_Update(&ctx, buffer, size); - - hmac_sha256_Final(&ctx, result); - - ui_progress(200); + hmac_sha256_Final(&ctx, stretched_pin); } - memcpy(secret, result, sizeof(result)); - memzero(buffer, sizeof(buffer)); - memzero(result, sizeof(result)); + memzero(digest, sizeof(digest)); memzero(&ctx, sizeof(ctx)); return OPTIGA_SUCCESS; } int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { if (!optiga_pin_init_metadata()) { return -1; } @@ -467,50 +526,57 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, ui_progress(200); - // Process the PIN-derived secret using a one-way function before sending it - // to the Optiga. This ensures that in the unlikely case of an attacker - // recording communication between the MCU and Optiga, they will not gain - // knowledge of the PIN-derived secret. - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE] = {0}; - hmac_sha256(pin_secret, OPTIGA_PIN_SECRET_SIZE, NULL, 0, stretched_pin); - - // Combine the result with stretching secrets from the Optiga. This step - // ensures that if an attacker extracts the value of OID_STRETCHED_PIN, then - // it cannot be used to conduct an offline brute-force search for the PIN. + // Stretch the PIN more with stretching secrets from the Optiga. This step + // ensures that if an attacker extracts the value of OID_STRETCHED_PIN or + // OID_PIN_SECRET, then it cannot be used to conduct an offline brute-force + // search for the PIN. res = optiga_pin_stretch_secret(ui_progress, stretched_pin); if (res != OPTIGA_SUCCESS) { - memzero(stretched_pin, sizeof(stretched_pin)); return res; } - // Generate and store the master secret / PIN counter reset key. - res = optiga_get_random(out_secret, OPTIGA_PIN_SECRET_SIZE); + // Generate and store the counter-protected PIN secret. + uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; + res = optiga_get_random(pin_secret, sizeof(pin_secret)); if (res != OPTIGA_SUCCESS) { - memzero(stretched_pin, sizeof(stretched_pin)); return res; } - random_xor(out_secret, OPTIGA_PIN_SECRET_SIZE); + random_xor(pin_secret, sizeof(pin_secret)); - res = optiga_set_data_object(OID_PIN_SECRET, false, out_secret, - OPTIGA_PIN_SECRET_SIZE); + res = optiga_set_data_object(OID_PIN_SECRET, false, pin_secret, + sizeof(pin_secret)); if (res != OPTIGA_SUCCESS) { - memzero(stretched_pin, sizeof(stretched_pin)); return res; } // Authorise using OID_PIN_SECRET so that we can write to OID_PIN_COUNTER and // OID_STRETCHED_PIN. res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, - out_secret, OPTIGA_PIN_SECRET_SIZE); + pin_secret, sizeof(pin_secret)); if (res != OPTIGA_SUCCESS) { - memzero(stretched_pin, sizeof(stretched_pin)); return res; } - // Set the stretched PIN. - res = optiga_set_data_object(OID_STRETCHED_PIN, false, stretched_pin, - sizeof(stretched_pin)); - memzero(stretched_pin, sizeof(stretched_pin)); + // Process the stretched PIN using a one-way function before sending it to the + // Optiga. This ensures that in the unlikely case of an attacker recording + // communication between the MCU and Optiga, they will not gain knowledge of + // the stretched PIN. + uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); + + // Store the digest of the stretched PIN in OID_STRETCHED_PIN. + res = + optiga_set_data_object(OID_STRETCHED_PIN, false, digest, sizeof(digest)); + + // Stretch the PIN more with the counter-protected PIN secret. This method + // ensures that if the user chooses a high-entropy PIN, then even if the + // Optiga and its communication link is completely compromised, it will not + // reduce the security of their device any more than if the Optiga was not + // integrated into the device in the first place. + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, pin_secret, + sizeof(pin_secret), stretched_pin); + memzero(pin_secret, sizeof(pin_secret)); + memzero(digest, sizeof(digest)); if (res != OPTIGA_SUCCESS) { optiga_clear_auto_state(OID_PIN_SECRET); return res; @@ -526,47 +592,21 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, ui_progress(200); - // Combine the value of OID_PIN_SECRET with the PIN-derived secret and - // stretching secrets from the Optiga. This step ensures that if an attacker - // extracts the value of OID_PIN_SECRET, then it cannot be used to conduct an - // offline brute-force search for the PIN. - hmac_sha256(pin_secret, OPTIGA_PIN_SECRET_SIZE, out_secret, - OPTIGA_PIN_SECRET_SIZE, out_secret); - res = optiga_pin_stretch_secret(ui_progress, out_secret); - if (res != OPTIGA_SUCCESS) { - return res; - } - - // Combine the stretched master secret with the PIN-derived secret to obtain - // the output secret. This ensures that in the unlikely case of an attacker - // recording communication between the MCU and Optiga, they cannot decrypt the - // storage without having to conduct a brute-force search for the PIN. - // NOTE: Considering how optiga_pin_stretch_secret() works internally and the - // fact that the PIN was already combined with the value of OID_PIN_SECRET, - // this step is not necessary. However, it is preferable to explicitly execute - // it, than to rely on the internals of optiga_pin_stretch_secret(). - hmac_sha256(pin_secret, OPTIGA_PIN_SECRET_SIZE, out_secret, - OPTIGA_PIN_SECRET_SIZE, out_secret); - - // Recombining the returned secret with the PIN-derived secret means that if - // the user chooses a high-entropy PIN, then even if the Optiga and its - // communication link is completely compromised, it will not reduce the - // security of their device any more than if the Optiga was not integrated - // into the device in the first place. - return OPTIGA_SUCCESS; } -int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { +int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, + const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], + uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { + // Legacy PIN verification method used in storage version 3 and 4. + // Process the PIN-derived secret using a one-way function before sending it // to the Optiga. uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE] = {0}; hmac_sha256(pin_secret, OPTIGA_PIN_SECRET_SIZE, NULL, 0, stretched_pin); // Combine the result with stretching secrets from the Optiga. - optiga_result res = optiga_pin_stretch_secret(ui_progress, stretched_pin); + optiga_result res = optiga_pin_stretch_secret_v4(ui_progress, stretched_pin); if (res != OPTIGA_SUCCESS) { memzero(stretched_pin, sizeof(stretched_pin)); return res; @@ -622,7 +662,7 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, // stretching secrets from the Optiga. hmac_sha256(pin_secret, OPTIGA_PIN_SECRET_SIZE, out_secret, OPTIGA_PIN_SECRET_SIZE, out_secret); - res = optiga_pin_stretch_secret(ui_progress, out_secret); + res = optiga_pin_stretch_secret_v4(ui_progress, out_secret); if (res != OPTIGA_SUCCESS) { return res; } @@ -634,6 +674,74 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, return OPTIGA_SUCCESS; } +int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + // Stretch the PIN more with stretching secrets from the Optiga. + optiga_result res = optiga_pin_stretch_secret(ui_progress, stretched_pin); + if (res != OPTIGA_SUCCESS) { + return res; + } + + // Process the stretched PIN using a one-way function before sending it to the + // Optiga. + uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); + + // Authorise using OID_STRETCHED_PIN so that we can read from OID_PIN_SECRET. + res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, digest, + sizeof(digest)); + memzero(digest, sizeof(digest)); + if (res == OPTIGA_ERR_CMD) { + uint8_t error_code = 0; + optiga_get_error_code(&error_code); + return error_code + OPTIGA_COMMAND_ERROR_OFFSET; + } + + if (res != OPTIGA_SUCCESS) { + return res; + } + + // Read the counter-protected PIN secret from OID_PIN_SECRET. + uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; + size_t size = 0; + res = optiga_get_data_object(OID_PIN_SECRET, false, pin_secret, + OPTIGA_PIN_SECRET_SIZE, &size); + optiga_clear_auto_state(OID_STRETCHED_PIN); + if (res != OPTIGA_SUCCESS) { + return res; + } + + if (size != OPTIGA_PIN_SECRET_SIZE) { + return OPTIGA_ERR_SIZE; + } + + // Stretch the PIN more with the counter-protected PIN secret. + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, pin_secret, + OPTIGA_PIN_SECRET_SIZE, stretched_pin); + + ui_progress(200); + + // Authorise using OID_PIN_SECRET so that we can write to OID_PIN_COUNTER. + res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, + pin_secret, OPTIGA_PIN_SECRET_SIZE); + memzero(pin_secret, sizeof(pin_secret)); + if (res != OPTIGA_SUCCESS) { + return res; + } + + // Reset the PIN counter. + res = optiga_set_data_object(OID_PIN_COUNTER, false, COUNTER_RESET, + sizeof(COUNTER_RESET)); + optiga_clear_auto_state(OID_PIN_SECRET); + if (res != OPTIGA_SUCCESS) { + return res; + } + + ui_progress(200); + + return OPTIGA_SUCCESS; +} + static int optiga_get_counter(uint16_t oid, uint32_t *ctr) { uint8_t counter[8] = {0}; size_t counter_size = 0; diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index 0f62f0f970..c6418aae8f 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -155,17 +155,21 @@ bool optiga_random_buffer(uint8_t *dest, size_t size) { } int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + ui_progress(OPTIGA_PIN_DERIVE_MS); + return OPTIGA_SUCCESS; +} + +int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, + const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], + uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { memcpy(out_secret, pin_secret, OPTIGA_PIN_SECRET_SIZE); ui_progress(OPTIGA_PIN_DERIVE_MS); return OPTIGA_SUCCESS; } int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { - memcpy(out_secret, pin_secret, OPTIGA_PIN_SECRET_SIZE); + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { ui_progress(OPTIGA_PIN_DERIVE_MS); return OPTIGA_SUCCESS; } From 183e53d3c29312072b9aa2f779fcc9cf1dc256b8 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Thu, 13 Jun 2024 14:27:51 +0200 Subject: [PATCH 323/626] feat(storage): Rework PIN processing and upgrade storage. --- core/.changelog.d/+pin.changed | 1 + .../extmod/modtrezorconfig/norcow_config.h | 2 +- legacy/firmware/.changelog.d/+pin.changed | 1 + legacy/norcow_config.h | 2 +- storage/storage.c | 196 +++++++++++------- 5 files changed, 125 insertions(+), 77 deletions(-) create mode 100644 core/.changelog.d/+pin.changed create mode 100644 legacy/firmware/.changelog.d/+pin.changed diff --git a/core/.changelog.d/+pin.changed b/core/.changelog.d/+pin.changed new file mode 100644 index 0000000000..9ef5242176 --- /dev/null +++ b/core/.changelog.d/+pin.changed @@ -0,0 +1 @@ +Reworked PIN processing. diff --git a/core/embed/extmod/modtrezorconfig/norcow_config.h b/core/embed/extmod/modtrezorconfig/norcow_config.h index 32992e0556..f9233cb7e2 100644 --- a/core/embed/extmod/modtrezorconfig/norcow_config.h +++ b/core/embed/extmod/modtrezorconfig/norcow_config.h @@ -30,6 +30,6 @@ /* * Current storage version. */ -#define NORCOW_VERSION ((uint32_t)0x00000004) +#define NORCOW_VERSION ((uint32_t)0x00000005) #endif diff --git a/legacy/firmware/.changelog.d/+pin.changed b/legacy/firmware/.changelog.d/+pin.changed new file mode 100644 index 0000000000..9ef5242176 --- /dev/null +++ b/legacy/firmware/.changelog.d/+pin.changed @@ -0,0 +1 @@ +Reworked PIN processing. diff --git a/legacy/norcow_config.h b/legacy/norcow_config.h index 8d37b1bc5e..2f03ecd0c0 100644 --- a/legacy/norcow_config.h +++ b/legacy/norcow_config.h @@ -38,6 +38,6 @@ extern const flash_area_t STORAGE_AREAS[NORCOW_SECTOR_COUNT]; /* * Current storage version. */ -#define NORCOW_VERSION ((uint32_t)0x00000004) +#define NORCOW_VERSION ((uint32_t)0x00000005) #endif diff --git a/storage/storage.c b/storage/storage.c index 388c13ffb5..006157352d 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -469,10 +469,11 @@ static secbool ui_progress(uint32_t elapsed_ms) { } #if !USE_OPTIGA -static void derive_kek(const uint8_t *pin, size_t pin_len, - const uint8_t *storage_salt, const uint8_t *ext_salt, - uint8_t kek[SHA256_DIGEST_LENGTH], - uint8_t keiv[SHA256_DIGEST_LENGTH]) { +static void derive_kek_v4(const uint8_t *pin, size_t pin_len, + const uint8_t *storage_salt, const uint8_t *ext_salt, + uint8_t kek[SHA256_DIGEST_LENGTH], + uint8_t keiv[SHA256_DIGEST_LENGTH]) { + // Legacy PIN verification method used in storage versions 1, 2, 3 and 4. uint8_t salt[HARDWARE_SALT_SIZE + STORAGE_SALT_SIZE + EXTERNAL_SALT_SIZE] = { 0}; size_t salt_len = 0; @@ -518,11 +519,10 @@ static void derive_kek(const uint8_t *pin, size_t pin_len, } #endif -#if USE_OPTIGA -static void stretch_pin_optiga(const uint8_t *pin, size_t pin_len, - const uint8_t storage_salt[STORAGE_SALT_SIZE], - const uint8_t *ext_salt, - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { +static void stretch_pin(const uint8_t *pin, size_t pin_len, + const uint8_t storage_salt[STORAGE_SALT_SIZE], + const uint8_t *ext_salt, + uint8_t stretched_pin[SHA256_DIGEST_LENGTH]) { // Combining the PIN with the storage salt aims to ensure that if the // MCU-Optiga communication is compromised, then a user with a low-entropy PIN // remains protected against an attacker who is not able to read the contents @@ -566,10 +566,10 @@ static void stretch_pin_optiga(const uint8_t *pin, size_t pin_len, #endif memzero(&ctx, sizeof(ctx)); } -#endif #if USE_OPTIGA -static void derive_kek_optiga( +static void derive_kek_optiga_v4( + // Legacy PIN verification method used in storage versions 3 and 4. const uint8_t optiga_secret[OPTIGA_PIN_SECRET_SIZE], uint8_t kek[SHA256_DIGEST_LENGTH], uint8_t keiv[SHA256_DIGEST_LENGTH]) { PBKDF2_HMAC_SHA256_CTX ctx = {0}; @@ -587,42 +587,59 @@ static void derive_kek_optiga( } #endif -static secbool __wur derive_kek_set(const uint8_t *pin, size_t pin_len, - const uint8_t *storage_salt, - const uint8_t *ext_salt, - uint8_t kek[SHA256_DIGEST_LENGTH], - uint8_t keiv[SHA256_DIGEST_LENGTH]) { +static secbool __wur derive_kek_set( + const uint8_t *pin, size_t pin_len, const uint8_t *storage_salt, + const uint8_t *ext_salt, uint8_t stretched_pin[SHA256_DIGEST_LENGTH]) { + stretch_pin(pin, pin_len, storage_salt, ext_salt, stretched_pin); +#if USE_OPTIGA + if (optiga_pin_set(ui_progress, stretched_pin) != OPTIGA_SUCCESS) { + memzero(stretched_pin, SHA256_DIGEST_LENGTH); + return secfalse; + } +#endif + return sectrue; +} + +static secbool __wur derive_kek_unlock_v4(const uint8_t *pin, size_t pin_len, + const uint8_t *storage_salt, + const uint8_t *ext_salt, + uint8_t kek[SHA256_DIGEST_LENGTH], + uint8_t keiv[SHA256_DIGEST_LENGTH]) { + // Legacy PIN verification method used in storage versions 1, 2, 3 and 4. #if USE_OPTIGA uint8_t optiga_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE] = {0}; - stretch_pin_optiga(pin, pin_len, storage_salt, ext_salt, stretched_pin); - int ret = optiga_pin_set(ui_progress, stretched_pin, optiga_secret); + stretch_pin(pin, pin_len, storage_salt, ext_salt, stretched_pin); + int ret = optiga_pin_verify_v4(ui_progress, stretched_pin, optiga_secret); memzero(stretched_pin, sizeof(stretched_pin)); if (ret != OPTIGA_SUCCESS) { memzero(optiga_secret, sizeof(optiga_secret)); + if (ret == OPTIGA_ERR_COUNTER_EXCEEDED) { + // Unreachable code. Wipe should have already been triggered in unlock(). + storage_wipe(); + show_pin_too_many_screen(); + } + ensure(ret == OPTIGA_ERR_AUTH_FAIL ? sectrue : secfalse, + "optiga_pin_verify failed"); return secfalse; } - derive_kek_optiga(optiga_secret, kek, keiv); + derive_kek_optiga_v4(optiga_secret, kek, keiv); memzero(optiga_secret, sizeof(optiga_secret)); #else - derive_kek(pin, pin_len, storage_salt, ext_salt, kek, keiv); + derive_kek_v4(pin, pin_len, storage_salt, ext_salt, kek, keiv); #endif return sectrue; } -static secbool __wur derive_kek_unlock(const uint8_t *pin, size_t pin_len, - const uint8_t *storage_salt, - const uint8_t *ext_salt, - uint8_t kek[SHA256_DIGEST_LENGTH], - uint8_t keiv[SHA256_DIGEST_LENGTH]) { +static secbool __wur derive_kek_unlock( + const uint8_t *pin, size_t pin_len, const uint8_t *storage_salt, + const uint8_t *ext_salt, uint8_t stretched_pin[SHA256_DIGEST_LENGTH]) { + stretch_pin(pin, pin_len, storage_salt, ext_salt, stretched_pin); #if USE_OPTIGA - uint8_t optiga_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE] = {0}; - stretch_pin_optiga(pin, pin_len, storage_salt, ext_salt, stretched_pin); - int ret = optiga_pin_verify(ui_progress, stretched_pin, optiga_secret); - memzero(stretched_pin, sizeof(stretched_pin)); + int ret = optiga_pin_verify(ui_progress, stretched_pin); if (ret != OPTIGA_SUCCESS) { - memzero(optiga_secret, sizeof(optiga_secret)); + memzero(stretched_pin, SHA256_DIGEST_LENGTH); + if (ret == OPTIGA_ERR_COUNTER_EXCEEDED) { // Unreachable code. Wipe should have already been triggered in unlock(). storage_wipe(); @@ -632,10 +649,6 @@ static secbool __wur derive_kek_unlock(const uint8_t *pin, size_t pin_len, "optiga_pin_verify failed"); return secfalse; } - derive_kek_optiga(optiga_secret, kek, keiv); - memzero(optiga_secret, sizeof(optiga_secret)); -#else - derive_kek(pin, pin_len, storage_salt, ext_salt, kek, keiv); #endif return sectrue; } @@ -649,15 +662,14 @@ static secbool set_pin(const uint8_t *pin, size_t pin_len, uint8_t *pvc = buffer + STORAGE_SALT_SIZE + KEYS_SIZE; uint8_t kek[SHA256_DIGEST_LENGTH] = {0}; - uint8_t keiv[SHA256_DIGEST_LENGTH] = {0}; + uint8_t keiv[12] = {0}; chacha20poly1305_ctx ctx = {0}; random_buffer(rand_salt, STORAGE_SALT_SIZE); ui_progress(0); - ensure(derive_kek_set(pin, pin_len, rand_salt, ext_salt, kek, keiv), + ensure(derive_kek_set(pin, pin_len, rand_salt, ext_salt, kek), "derive_kek_set failed"); rfc7539_init(&ctx, kek, keiv); memzero(kek, sizeof(kek)); - memzero(keiv, sizeof(keiv)); chacha20poly1305_encrypt(&ctx, cached_keys, ekeys, KEYS_SIZE); rfc7539_finish(&ctx, 0, KEYS_SIZE, pvc); memzero(&ctx, sizeof(ctx)); @@ -827,7 +839,9 @@ secbool check_storage_version(void) { return sectrue; } -static secbool decrypt_dek(const uint8_t *kek, const uint8_t *keiv) { +static secbool __wur decrypt_dek(const uint8_t *pin, size_t pin_len, + const uint8_t *ext_salt) { + // Read the storage salt, EDEK, ESAK and PIN verification code entry. const void *buffer = NULL; uint16_t len = 0; if (sectrue != initialized || @@ -837,12 +851,28 @@ static secbool decrypt_dek(const uint8_t *kek, const uint8_t *keiv) { return secfalse; } + const uint8_t *storage_salt = (const uint8_t *)buffer; const uint8_t *ekeys = (const uint8_t *)buffer + STORAGE_SALT_SIZE; const uint32_t *pvc = (const uint32_t *)buffer + (STORAGE_SALT_SIZE + KEYS_SIZE) / sizeof(uint32_t); _Static_assert(((STORAGE_SALT_SIZE + KEYS_SIZE) & 3) == 0, "PVC unaligned"); _Static_assert((PVC_SIZE & 3) == 0, "PVC size unaligned"); + // Derive the key encryption key and IV. + uint8_t kek[SHA256_DIGEST_LENGTH] = {0}; + uint8_t keiv[SHA256_DIGEST_LENGTH] = {0}; + if (get_lock_version() >= 5) { + if (sectrue != + derive_kek_unlock(pin, pin_len, storage_salt, ext_salt, kek)) { + return secfalse; + } + } else { + if (sectrue != + derive_kek_unlock_v4(pin, pin_len, storage_salt, ext_salt, kek, keiv)) { + return secfalse; + }; + } + uint8_t keys[KEYS_SIZE] = {0}; uint8_t tag[POLY1305_TAG_SIZE] __attribute__((aligned(sizeof(uint32_t)))); chacha20poly1305_ctx ctx = {0}; @@ -850,6 +880,8 @@ static secbool decrypt_dek(const uint8_t *kek, const uint8_t *keiv) { // Decrypt the data encryption key and the storage authentication key and // check the PIN verification code. rfc7539_init(&ctx, kek, keiv); + memzero(kek, sizeof(kek)); + memzero(keiv, sizeof(keiv)); chacha20poly1305_decrypt(&ctx, ekeys, keys, KEYS_SIZE); rfc7539_finish(&ctx, 0, KEYS_SIZE, tag); memzero(&ctx, sizeof(ctx)); @@ -877,18 +909,22 @@ static secbool unlock(const uint8_t *pin, size_t pin_len, const uint8_t *unlock_pin = pin; size_t unlock_pin_len = pin_len; - // In case of an upgrade from version 1 or 2, encode the PIN to the old format - // and bump the total time of UI progress to account for the set_pin() call in - // storage_upgrade_unlocked(). + // In case of an upgrade from version 1 or 2, encode the PIN to the old + // format. uint32_t legacy_pin = 0; if (get_lock_version() <= 2) { - ui_total += PIN_DERIVE_MS; - ui_rem += PIN_DERIVE_MS; legacy_pin = pin_to_int(pin, pin_len); unlock_pin = (const uint8_t *)&legacy_pin; unlock_pin_len = sizeof(legacy_pin); } + // In case of an upgrade from version 4 or earlier bump the total time of UI + // progress to account for the set_pin() call in storage_upgrade_unlocked(). + if (get_lock_version() <= 4) { + ui_total += PIN_DERIVE_MS; + ui_rem += PIN_DERIVE_MS; + } + // Now we can check for wipe code. ensure_not_wipe_code(unlock_pin, unlock_pin_len); @@ -934,25 +970,8 @@ static secbool unlock(const uint8_t *pin, size_t pin_len, return secfalse; } - // Read the random salt from EDEK_PVC_KEY and use it to derive the KEK and - // KEIV from the PIN. - const void *rand_salt = NULL; - uint16_t len = 0; - if (sectrue != initialized || - sectrue != norcow_get(EDEK_PVC_KEY, &rand_salt, &len) || - len != STORAGE_SALT_SIZE + KEYS_SIZE + PVC_SIZE) { - memzero(&legacy_pin, sizeof(legacy_pin)); - handle_fault("no EDEK"); - return secfalse; - } - uint8_t kek[SHA256_DIGEST_LENGTH] = {0}; - uint8_t keiv[SHA256_DIGEST_LENGTH] = {0}; - // Check whether the entered PIN is correct. - if (sectrue != derive_kek_unlock(unlock_pin, unlock_pin_len, - (const uint8_t *)rand_salt, ext_salt, kek, - keiv) || - sectrue != decrypt_dek(kek, keiv)) { + if (sectrue != decrypt_dek(unlock_pin, unlock_pin_len, ext_salt)) { memzero(&legacy_pin, sizeof(legacy_pin)); // Wipe storage if too many failures wait_random(); @@ -973,8 +992,6 @@ static secbool unlock(const uint8_t *pin, size_t pin_len, return secfalse; } memzero(&legacy_pin, sizeof(legacy_pin)); - memzero(kek, sizeof(kek)); - memzero(keiv, sizeof(keiv)); // Check for storage upgrades that need to be performed after unlocking and // check that the authenticated version number matches the unauthenticated @@ -1437,6 +1454,24 @@ static uint32_t pin_to_int(const uint8_t *pin, size_t pin_len) { return val; } +// Legacy conversion of PIN from the uint32 scheme that was used prior to +// storage version 3. +static size_t int_to_pin(uint32_t val, uint8_t pin[V0_MAX_PIN_LEN]) { + size_t i = V0_MAX_PIN_LEN; + while (val > 9) { + i -= 1; + pin[i] = (val % 10) + '0'; + val /= 10; + } + + if (val != 1) { + return 0; + } + + memmove(pin, &pin[i], V0_MAX_PIN_LEN - i); + return V0_MAX_PIN_LEN - i; +} + // Legacy conversion of wipe code from the uint32 scheme that was used prior to // storage version 3. static char *int_to_wipe_code(uint32_t val) { @@ -1471,6 +1506,7 @@ static secbool storage_upgrade(void) { // Storage version 2: adds 9 digit wipe code // Storage version 3: adds variable length PIN and wipe code // Storage version 4: changes data structure of encrypted data + // Storage version 5: unifies KEK derivation for non-Optiga and Optiga const uint16_t V0_PIN_KEY = 0x0000; const uint16_t V0_PIN_FAIL_KEY = 0x0001; @@ -1486,7 +1522,7 @@ static secbool storage_upgrade(void) { auth_init(); // Set the new storage version number. - uint32_t version = 1; + uint32_t version = NORCOW_VERSION; if (sectrue != storage_set_encrypted(VERSION_KEY, &version, sizeof(version))) { return secfalse; @@ -1496,13 +1532,14 @@ static secbool storage_upgrade(void) { ui_total = PIN_DERIVE_MS; ui_rem = ui_total; ui_message = PROCESSING_MSG; + uint8_t pin[V0_MAX_PIN_LEN] = {0}; + size_t pin_len = 0; secbool found = norcow_get(V0_PIN_KEY, &val, &len); if (sectrue == found && *(const uint32_t *)val != V0_PIN_EMPTY) { - set_pin((const uint8_t *)val, len, NULL); - } else { - set_pin((const uint8_t *)&V0_PIN_EMPTY, sizeof(V0_PIN_EMPTY), NULL); - ret = norcow_set(PIN_NOT_SET_KEY, &TRUE_BYTE, sizeof(TRUE_BYTE)); + pin_len = int_to_pin(*(const uint32_t *)val, pin); } + set_pin(pin, pin_len, NULL); + memzero(pin, sizeof(pin)); // Convert PIN failure counter. uint32_t fails = 0; @@ -1582,12 +1619,22 @@ static secbool storage_upgrade(void) { version = 2; } + // Version 0 upgrades directly to the latest. + if (norcow_active_version == 0) { + version = NORCOW_VERSION; + } + if (sectrue != norcow_set(UNAUTH_VERSION_KEY, &version, sizeof(version))) { return secfalse; } } - norcow_set(STORAGE_UPGRADED_KEY, &TRUE_WORD, sizeof(TRUE_WORD)); + if (norcow_active_version == 0) { + // Version 0 upgrades directly to the latest. + norcow_set(STORAGE_UPGRADED_KEY, &FALSE_WORD, sizeof(FALSE_WORD)); + } else { + norcow_set(STORAGE_UPGRADED_KEY, &TRUE_WORD, sizeof(TRUE_WORD)); + } norcow_active_version = NORCOW_VERSION; return norcow_upgrade_finish(); @@ -1605,9 +1652,10 @@ static secbool storage_upgrade_unlocked(const uint8_t *pin, size_t pin_len, } secbool ret = sectrue; - if (version <= 2) { - // Upgrade EDEK_PVC_KEY from the old uint32 PIN scheme to the new - // variable-length PIN scheme. + if (version <= 4) { + // Upgrade EDEK_PVC_KEY from the uint32 PIN scheme (versions 1 and 2) or + // from the version 3 and 4 variable-length PIN scheme to the unified PIN + // scheme. if (sectrue != set_pin(pin, pin_len, ext_salt)) { return secfalse; } @@ -1634,7 +1682,5 @@ static secbool storage_upgrade_unlocked(const uint8_t *pin, size_t pin_len, memzero(wipe_code, wipe_code_len); } - // nothing to do for upgrading to version 4 - return ret; } From 09ed141a0acf6a75205d161a2f0b555eb7d85fae Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Thu, 13 Jun 2024 14:28:09 +0200 Subject: [PATCH 324/626] test(storage): Update storage tests. --- storage/tests/c/norcow_config.h | 2 +- storage/tests/python/src/consts.py | 2 +- storage/tests/python/src/crypto.py | 12 ++++-------- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/storage/tests/c/norcow_config.h b/storage/tests/c/norcow_config.h index 3aa99a827a..e850c8fdc9 100644 --- a/storage/tests/c/norcow_config.h +++ b/storage/tests/c/norcow_config.h @@ -41,6 +41,6 @@ /* * Current storage version. */ -#define NORCOW_VERSION ((uint32_t)0x00000004) +#define NORCOW_VERSION ((uint32_t)0x00000005) #endif diff --git a/storage/tests/python/src/consts.py b/storage/tests/python/src/consts.py index e2edb33cc6..baa0da83ff 100644 --- a/storage/tests/python/src/consts.py +++ b/storage/tests/python/src/consts.py @@ -113,7 +113,7 @@ NORCOW_MAGIC = b"NRC2" # Norcow version, set in the storage header, but also as an encrypted item. -NORCOW_VERSION = b"\x04\x00\x00\x00" +NORCOW_VERSION = b"\x05\x00\x00\x00" # Norcow magic combined with the version, which is stored as its negation. NORCOW_MAGIC_AND_VERSION = NORCOW_MAGIC + bytes( diff --git a/storage/tests/python/src/crypto.py b/storage/tests/python/src/crypto.py index 30b1f851d2..173bd8a9c5 100644 --- a/storage/tests/python/src/crypto.py +++ b/storage/tests/python/src/crypto.py @@ -10,17 +10,13 @@ def derive_kek_keiv(salt: bytes, pin: str) -> (bytes, bytes): kdf = PBKDF2HMAC( algorithm=hashes.SHA256(), - length=consts.KEK_SIZE + consts.KEIV_SIZE, + length=consts.KEK_SIZE, salt=bytes(salt), - iterations=10000, + iterations=20000, backend=default_backend(), ) - pbkdf_output = kdf.derive(pin.encode()) - # the first 256b is Key Encryption Key - kek = pbkdf_output[: consts.KEK_SIZE] - # following with 96b of Initialization Vector - keiv = pbkdf_output[consts.KEK_SIZE :] - + kek = kdf.derive(pin.encode()) + keiv = b"\0" * consts.KEIV_SIZE return kek, keiv From 9c50e15cf7753e315fc44ca21106abde94faf6b3 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Thu, 13 Jun 2024 13:49:43 +0200 Subject: [PATCH 325/626] chore: Bump firmware and fix versions due to storage upgrade. --- core/embed/firmware/version.h | 6 +++--- core/translations/cs.json | 2 +- core/translations/de.json | 2 +- core/translations/en.json | 2 +- core/translations/es.json | 2 +- core/translations/fr.json | 2 +- core/translations/signatures.json | 6 +++--- legacy/firmware/version.h | 6 +++--- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/core/embed/firmware/version.h b/core/embed/firmware/version.h index 3fbc3611f3..2d2dcda7fe 100644 --- a/core/embed/firmware/version.h +++ b/core/embed/firmware/version.h @@ -1,10 +1,10 @@ #define VERSION_MAJOR 2 -#define VERSION_MINOR 7 -#define VERSION_PATCH 3 +#define VERSION_MINOR 8 +#define VERSION_PATCH 0 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 2 -#define FIX_VERSION_MINOR 7 +#define FIX_VERSION_MINOR 8 #define FIX_VERSION_PATCH 0 #define FIX_VERSION_BUILD 0 diff --git a/core/translations/cs.json b/core/translations/cs.json index 85afc615bd..5ad3b4ebab 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -33,7 +33,7 @@ }, "header": { "language": "cs-CZ", - "version": "2.7.3" + "version": "2.8.0" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktujte naši podporu na", diff --git a/core/translations/de.json b/core/translations/de.json index 577acc603f..6a1caffce8 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -33,7 +33,7 @@ }, "header": { "language": "de-DE", - "version": "2.7.3" + "version": "2.8.0" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktiere den Trezor Support unter", diff --git a/core/translations/en.json b/core/translations/en.json index 3baeca142b..ada21e7592 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -1,7 +1,7 @@ { "header": { "language": "en-US", - "version": "2.7.3" + "version": "2.8.0" }, "translations": { "addr_mismatch__contact_support_at": "Please contact Trezor support at", diff --git a/core/translations/es.json b/core/translations/es.json index add221e892..fc136d941a 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -33,7 +33,7 @@ }, "header": { "language": "es-ES", - "version": "2.7.3" + "version": "2.8.0" }, "translations": { "addr_mismatch__contact_support_at": "Contacta con atención al cliente de Trezor en", diff --git a/core/translations/fr.json b/core/translations/fr.json index 97ac56bdba..50ae18f934 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -33,7 +33,7 @@ }, "header": { "language": "fr-FR", - "version": "2.7.3" + "version": "2.8.0" }, "translations": { "addr_mismatch__contact_support_at": "Contactez l'assistance Trezor à l'adr.", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 6fa1b4a589..21fa4a538a 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "5c985119b49ed632fff3959e7691a0f6a2faae2c865123be82626c8ba2041c8f", - "datetime": "2024-06-17T20:07:58.410696", - "commit": "51303659f1b4396c90afe2f7547464d140b2c9a9" + "merkle_root": "965333c69ea67f8fb0c199da2293677c7568962e5c1221624f4f13011e8ac88d", + "datetime": "2024-06-14T10:32:18.803684", + "commit": "3e5af95a88c28082ea2c37f38339956991c1255a" }, "history": [ { diff --git a/legacy/firmware/version.h b/legacy/firmware/version.h index 77eccd0f58..1574eefad2 100644 --- a/legacy/firmware/version.h +++ b/legacy/firmware/version.h @@ -1,7 +1,7 @@ #define VERSION_MAJOR 1 -#define VERSION_MINOR 12 -#define VERSION_PATCH 2 +#define VERSION_MINOR 13 +#define VERSION_PATCH 0 #define FIX_VERSION_MAJOR 1 -#define FIX_VERSION_MINOR 12 +#define FIX_VERSION_MINOR 13 #define FIX_VERSION_PATCH 0 From 509e2911187e7af360fc5468b7cccf5b995958a9 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Thu, 13 Jun 2024 18:24:09 +0200 Subject: [PATCH 326/626] feat(core): Rework Optiga PIN slot configuration. --- core/embed/trezorhal/optiga.h | 4 + core/embed/trezorhal/optiga/optiga.c | 454 +++++++++++++++++---------- core/embed/trezorhal/unix/optiga.c | 7 + storage/storage.c | 20 +- 4 files changed, 314 insertions(+), 171 deletions(-) diff --git a/core/embed/trezorhal/optiga.h b/core/embed/trezorhal/optiga.h index e196a65bb9..2335313672 100644 --- a/core/embed/trezorhal/optiga.h +++ b/core/embed/trezorhal/optiga.h @@ -69,8 +69,12 @@ int __wur optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]); +int __wur optiga_pin_get_fails_v4(uint32_t *ctr); + int __wur optiga_pin_get_fails(uint32_t *ctr); +int __wur optiga_pin_fails_increase_v4(uint32_t count); + int __wur optiga_pin_fails_increase(uint32_t count); #endif diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index b3cde1b419..7fb5084aba 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -26,20 +26,29 @@ #include "rand.h" #include "storage.h" -// PIN counter reset key / Master secret (OID 0xF1D0). +// Counter-protected PIN secret and reset key for OID_STRETCHED_PIN_CTR (OID +// 0xF1D0). #define OID_PIN_SECRET (OPTIGA_OID_DATA + 0) -// PIN counter (OID 0xE120). -#define OID_PIN_COUNTER (OPTIGA_OID_COUNTER + 0) +// Digest of the stretched PIN (OID 0xF1D4). +#define OID_STRETCHED_PIN (OPTIGA_OID_DATA + 4) -// PIN stretching counter (OID 0xE121). -#define OID_PIN_STRETCH_COUNTER (OPTIGA_OID_COUNTER + 1) +// Counter-protected key for HMAC-SHA256 PIN stretching step (OID 0xF1D5). +#define OID_PIN_HMAC (OPTIGA_OID_DATA + 8) -// Stretched PIN (OID 0xF1D4). -#define OID_STRETCHED_PIN (OPTIGA_OID_DATA + 4) +// Counter which limits the guesses at OID_STRETCHED_PIN (OID 0xE120). +#define OID_STRETCHED_PIN_CTR (OPTIGA_OID_COUNTER + 0) + +// Counter which limits the use of OID_PIN_HMAC (OID 0xE122). +#define OID_PIN_HMAC_CTR (OPTIGA_OID_COUNTER + 2) -// Key for HMAC-SHA256 PIN stretching step (OID 0xF1D1). -#define OID_PIN_HMAC (OPTIGA_OID_DATA + 1) +// Counter which limits the total number of PIN stretching operations over the +// lifetime of the device (OID 0xE121). +#define OID_PIN_TOTAL_CTR (OPTIGA_OID_COUNTER + 1) + +// Key for HMAC-SHA256 PIN stretching step used in storage version 3 and 4 (OID +// 0xF1D1). +#define OID_PIN_HMAC_V4 (OPTIGA_OID_DATA + 1) // Key for AES-CMAC PIN stretching step (OID 0xE200). #define OID_PIN_CMAC OPTIGA_OID_SYM_KEY @@ -47,20 +56,17 @@ // Key for ECDH PIN stretching step (OID 0xE0F3). #define OID_PIN_ECDH (OPTIGA_OID_ECC_KEY + 3) -// The number of times the stretching is repeated in each PIN processing phase -// for legacy storage version 3 and 4. -#define PIN_STRETCH_ITERATIONS_V4 1 - // The number of times that PIN stretching is repeated. #define PIN_STRETCH_ITERATIONS 2 // Value of the PIN counter when it is reset. static const uint8_t COUNTER_RESET[] = {0, 0, 0, 0, 0, 0, 0, PIN_MAX_TRIES}; -// Value of the PIN stretching counter when it is initialized. The limit is -// 600000 stretching operations, which equates to -// 100000 / PIN_STRETCH_ITERATIONS unlock operations. -static const uint8_t STRETCH_COUNTER_INIT[] = {0, 0, 0, 0, 0, 0x09, 0x27, 0xC0}; +// Initial value of the counter which limits the total number of PIN stretching +// operations. The limit is 600000 stretching operations, which equates to +// 300000 / PIN_STRETCH_ITERATIONS unlock operations over the lifetime of the +// device. +static const uint8_t PIN_TOTAL_CTR_INIT[] = {0, 0, 0, 0, 0, 0x09, 0x27, 0xC0}; static const optiga_metadata_item TYPE_AUTOREF = OPTIGA_META_VALUE(OPTIGA_DATA_TYPE_AUTOREF); @@ -70,10 +76,12 @@ static const optiga_metadata_item ACCESS_STRETCHED_PIN = OPTIGA_ACCESS_CONDITION(OPTIGA_ACCESS_COND_AUTO, OID_STRETCHED_PIN); static const optiga_metadata_item ACCESS_PIN_SECRET = OPTIGA_ACCESS_CONDITION(OPTIGA_ACCESS_COND_AUTO, OID_PIN_SECRET); -static const optiga_metadata_item ACCESS_PIN_COUNTER = - OPTIGA_ACCESS_CONDITION(OPTIGA_ACCESS_COND_LUC, OID_PIN_COUNTER); -static const optiga_metadata_item ACCESS_PIN_STRETCH_COUNTER = - OPTIGA_ACCESS_CONDITION(OPTIGA_ACCESS_COND_LUC, OID_PIN_STRETCH_COUNTER); +static const optiga_metadata_item ACCESS_STRETCHED_PIN_CTR = + OPTIGA_ACCESS_CONDITION(OPTIGA_ACCESS_COND_LUC, OID_STRETCHED_PIN_CTR); +static const optiga_metadata_item ACCESS_PIN_TOTAL_CTR = + OPTIGA_ACCESS_CONDITION(OPTIGA_ACCESS_COND_LUC, OID_PIN_TOTAL_CTR); +static const optiga_metadata_item ACCESS_PIN_HMAC_CTR = + OPTIGA_ACCESS_CONDITION(OPTIGA_ACCESS_COND_LUC, OID_PIN_HMAC_CTR); // Size of the DER BIT STRING header required for inputs to optiga_calc_ssec(). #define BIT_STRING_HEADER_SIZE 3 @@ -244,7 +252,7 @@ bool optiga_set_metadata(uint16_t oid, const optiga_metadata *metadata) { static bool optiga_pin_init_metadata(void) { optiga_metadata metadata = {0}; - // Set metadata for PIN counter reset key / Master secret. + // Set metadata for counter-protected PIN secret. memzero(&metadata, sizeof(metadata)); metadata.change = OPTIGA_META_ACCESS_ALWAYS; metadata.read = ACCESS_STRETCHED_PIN; @@ -254,43 +262,64 @@ static bool optiga_pin_init_metadata(void) { return false; } - // Set metadata for PIN counter. + // Set metadata for stretched PIN. + memzero(&metadata, sizeof(metadata)); + metadata.change = ACCESS_PIN_SECRET; + metadata.read = OPTIGA_META_ACCESS_NEVER; + metadata.execute = ACCESS_STRETCHED_PIN_CTR; + metadata.data_type = TYPE_AUTOREF; + if (!optiga_set_metadata(OID_STRETCHED_PIN, &metadata)) { + return false; + } + + // Set metadata for HMAC-SHA256 PIN stretching secret. + memzero(&metadata, sizeof(metadata)); + metadata.change = ACCESS_STRETCHED_PIN; + metadata.read = OPTIGA_META_ACCESS_NEVER; + metadata.execute = ACCESS_PIN_HMAC_CTR; + metadata.data_type = TYPE_PRESSEC; + if (!optiga_set_metadata(OID_PIN_HMAC, &metadata)) { + return false; + } + + // Set metadata for the counter of guesses at OID_STRETCHED_PIN. memzero(&metadata, sizeof(metadata)); metadata.change = ACCESS_PIN_SECRET; metadata.read = OPTIGA_META_ACCESS_ALWAYS; metadata.execute = OPTIGA_META_ACCESS_ALWAYS; - if (!optiga_set_metadata(OID_PIN_COUNTER, &metadata)) { + if (!optiga_set_metadata(OID_STRETCHED_PIN_CTR, &metadata)) { + return false; + } + + // Set metadata for the counter of OID_PIN_HMAC uses. + memzero(&metadata, sizeof(metadata)); + metadata.change = ACCESS_STRETCHED_PIN; + metadata.read = OPTIGA_META_ACCESS_ALWAYS; + metadata.execute = OPTIGA_META_ACCESS_ALWAYS; + if (!optiga_set_metadata(OID_PIN_HMAC_CTR, &metadata)) { return false; } - // Initialize the PIN stretching counter if write access is possible. + // Initialize the counter of the total number of PIN stretching operations, if + // write access is possible. memzero(&metadata, sizeof(metadata)); metadata.change = OPTIGA_META_ACCESS_ALWAYS; - if (write_metadata(OID_PIN_STRETCH_COUNTER, &metadata)) { - optiga_result res = optiga_set_data_object(OID_PIN_STRETCH_COUNTER, false, - STRETCH_COUNTER_INIT, - sizeof(STRETCH_COUNTER_INIT)); + if (write_metadata(OID_PIN_TOTAL_CTR, &metadata)) { + optiga_result res = + optiga_set_data_object(OID_PIN_TOTAL_CTR, false, PIN_TOTAL_CTR_INIT, + sizeof(PIN_TOTAL_CTR_INIT)); if (res != OPTIGA_SUCCESS) { return false; } } - // Set metadata for PIN stretching counter. + // Set metadata for the counter of the total number of PIN stretching + // operations. memzero(&metadata, sizeof(metadata)); metadata.change = OPTIGA_META_ACCESS_NEVER; metadata.read = OPTIGA_META_ACCESS_ALWAYS; metadata.execute = OPTIGA_META_ACCESS_ALWAYS; - if (!optiga_set_metadata(OID_PIN_STRETCH_COUNTER, &metadata)) { - return false; - } - - // Set metadata for stretched PIN. - memzero(&metadata, sizeof(metadata)); - metadata.change = ACCESS_PIN_SECRET; - metadata.read = OPTIGA_META_ACCESS_NEVER; - metadata.execute = ACCESS_PIN_COUNTER; - metadata.data_type = TYPE_AUTOREF; - if (!optiga_set_metadata(OID_STRETCHED_PIN, &metadata)) { + if (!optiga_set_metadata(OID_PIN_TOTAL_CTR, &metadata)) { return false; } @@ -298,7 +327,7 @@ static bool optiga_pin_init_metadata(void) { memzero(&metadata, sizeof(metadata)); metadata.change = OPTIGA_META_ACCESS_ALWAYS; metadata.read = OPTIGA_META_ACCESS_NEVER; - metadata.execute = ACCESS_PIN_STRETCH_COUNTER; + metadata.execute = ACCESS_PIN_TOTAL_CTR; metadata.key_usage = OPTIGA_META_KEY_USE_ENC; if (!optiga_set_metadata(OID_PIN_CMAC, &metadata)) { return false; @@ -308,41 +337,12 @@ static bool optiga_pin_init_metadata(void) { memzero(&metadata, sizeof(metadata)); metadata.change = OPTIGA_META_ACCESS_ALWAYS; metadata.read = OPTIGA_META_ACCESS_NEVER; - metadata.execute = ACCESS_PIN_STRETCH_COUNTER; + metadata.execute = ACCESS_PIN_TOTAL_CTR; metadata.key_usage = OPTIGA_META_KEY_USE_KEYAGREE; if (!optiga_set_metadata(OID_PIN_ECDH, &metadata)) { return false; } - // Generate and store the HMAC PIN stretching secret in OID_PIN_HMAC, if write - // access is possible. - memzero(&metadata, sizeof(metadata)); - metadata.change = OPTIGA_META_ACCESS_ALWAYS; - if (write_metadata(OID_PIN_HMAC, &metadata)) { - uint8_t secret[OPTIGA_PIN_SECRET_SIZE] = {0}; - optiga_result res = optiga_get_random(secret, sizeof(secret)); - if (res != OPTIGA_SUCCESS) { - return false; - } - random_xor(secret, sizeof(secret)); - - res = optiga_set_data_object(OID_PIN_HMAC, false, secret, sizeof(secret)); - memzero(secret, sizeof(secret)); - if (res != OPTIGA_SUCCESS) { - return false; - } - } - - // Set metadata for HMAC-SHA256 PIN stretching secret. - memzero(&metadata, sizeof(metadata)); - metadata.change = OPTIGA_META_ACCESS_NEVER; - metadata.read = OPTIGA_META_ACCESS_NEVER; - metadata.execute = ACCESS_PIN_STRETCH_COUNTER; - metadata.data_type = TYPE_PRESSEC; - if (!optiga_set_metadata(OID_PIN_HMAC, &metadata)) { - return false; - } - return true; } @@ -369,9 +369,10 @@ static int optiga_pin_init_stretch(void) { static int optiga_pin_stretch_common( OPTIGA_UI_PROGRESS ui_progress, HMAC_SHA256_CTX *ctx, - const uint8_t input[OPTIGA_PIN_SECRET_SIZE]) { - // Implements the functionality that is common to optiga_pin_stretch_secret() - // and the legacy function optiga_pin_stretch_secret_v4(). + const uint8_t input[OPTIGA_PIN_SECRET_SIZE], bool version4) { + // Implements the functionality that is common to + // optiga_pin_stretch_cmac_ecdh() and the legacy function + // optiga_pin_stretch_secret_v4(). uint8_t buffer[ENCRYPT_SYM_PREFIX_SIZE + OPTIGA_PIN_SECRET_SIZE] = {0}; size_t size = 0; @@ -387,16 +388,18 @@ static int optiga_pin_stretch_common( hmac_sha256_Update(ctx, buffer, size); - // Combine intermediate result with OID_PIN_HMAC - res = - optiga_encrypt_sym(OPTIGA_SYM_MODE_HMAC_SHA256, OID_PIN_HMAC, input, - OPTIGA_PIN_SECRET_SIZE, buffer, sizeof(buffer), &size); - if (res != OPTIGA_SUCCESS) { - memzero(buffer, sizeof(buffer)); - return res; - } + if (version4) { + // Combine intermediate result with OID_PIN_HMAC + res = optiga_encrypt_sym(OPTIGA_SYM_MODE_HMAC_SHA256, OID_PIN_HMAC_V4, + input, OPTIGA_PIN_SECRET_SIZE, buffer, + sizeof(buffer), &size); + if (res != OPTIGA_SUCCESS) { + memzero(buffer, sizeof(buffer)); + return res; + } - hmac_sha256_Update(ctx, buffer, size); + hmac_sha256_Update(ctx, buffer, size); + } ui_progress(200); @@ -435,39 +438,27 @@ static int optiga_pin_stretch_secret_v4( // in each attempt. // Pseudocode for the stretching process: - // result_0 = secret - // for i in range(PIN_STRETCH_ITERATIONS_V4): - // cmac_i = CMAC(optiga_cmac_key, result_i) - // hmac_i = HMAC(optiga_hmac_key, result_i) - // ecdh_i = ECDH(optiga_ecdh_key, result_i) - // result_{i+1} = HMAC-SHA256(secret, cmac_i || hmac_i || ecdh_i) - // secret = result_{PIN_STRETCH_ITERATIONS_V4} + // cmac_out = CMAC(OID_PIN_CMAC, secret) + // hmac_out = HMAC(OID_PIN_HMAC_V4, secret) + // ecdh_out = ECDH(OID_PIN_ECDH, secret) + // secret = HMAC-SHA256(secret, cmac_out || hmac_out || ecdh_out) HMAC_SHA256_CTX ctx = {0}; + hmac_sha256_Init(&ctx, secret, OPTIGA_PIN_SECRET_SIZE); - uint8_t result[OPTIGA_PIN_SECRET_SIZE] = {0}; - memcpy(result, secret, sizeof(result)); - - for (int i = 0; i < PIN_STRETCH_ITERATIONS_V4; ++i) { - hmac_sha256_Init(&ctx, secret, OPTIGA_PIN_SECRET_SIZE); - - optiga_result res = optiga_pin_stretch_common(ui_progress, &ctx, result); - if (res != OPTIGA_SUCCESS) { - memzero(result, sizeof(result)); - memzero(&ctx, sizeof(ctx)); - return res; - } - - hmac_sha256_Final(&ctx, result); + optiga_result res = + optiga_pin_stretch_common(ui_progress, &ctx, secret, true); + if (res != OPTIGA_SUCCESS) { + memzero(&ctx, sizeof(ctx)); + return res; } - memcpy(secret, result, sizeof(result)); - memzero(result, sizeof(result)); + hmac_sha256_Final(&ctx, secret); memzero(&ctx, sizeof(ctx)); return OPTIGA_SUCCESS; } -static int optiga_pin_stretch_secret( +static int optiga_pin_stretch_cmac_ecdh( OPTIGA_UI_PROGRESS ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { // This step hardens the PIN verification process in case an attacker is able @@ -478,15 +469,14 @@ static int optiga_pin_stretch_secret( // search for the PIN. Thus it reduces the number of PIN values that the // attacker can test in a unit of time by forcing them to involve the Optiga // in each attempt, and restricts the overall number of attempts using - // OID_PIN_STRETCH_COUNTER. + // OID_PIN_TOTAL_CTR. // Pseudocode for the stretching process: - // for i in range(PIN_STRETCH_ITERATIONS): - // digest = HMAC(secret, "") - // cmac_i = CMAC(optiga_cmac_key, digest) - // hmac_i = HMAC(optiga_hmac_key, digest) - // ecdh_i = ECDH(optiga_ecdh_key, digest) - // secret = HMAC-SHA256(secret, cmac_i || hmac_i || ecdh_i) + // for _ in range(PIN_STRETCH_ITERATIONS): + // digest = HMAC-SHA256(stretched_pin, "") + // cmac_out = CMAC(OID_PIN_CMAC, digest) + // ecdh_out = ECDH(OID_PIN_ECDH, digest) + // stretched_pin = HMAC-SHA256(stretched_pin, cmac_out || ecdh_out) uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; HMAC_SHA256_CTX ctx = {0}; @@ -498,7 +488,8 @@ static int optiga_pin_stretch_secret( hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); hmac_sha256_Init(&ctx, stretched_pin, OPTIGA_PIN_SECRET_SIZE); - optiga_result res = optiga_pin_stretch_common(ui_progress, &ctx, digest); + optiga_result res = + optiga_pin_stretch_common(ui_progress, &ctx, digest, false); if (res != OPTIGA_SUCCESS) { memzero(digest, sizeof(digest)); memzero(&ctx, sizeof(ctx)); @@ -515,13 +506,15 @@ static int optiga_pin_stretch_secret( int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + int res = OPTIGA_SUCCESS; if (!optiga_pin_init_metadata()) { - return -1; + res = -1; + goto end; } - optiga_result res = optiga_pin_init_stretch(); + res = optiga_pin_init_stretch(); if (res != OPTIGA_SUCCESS) { - return res; + goto end; } ui_progress(200); @@ -530,43 +523,110 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, // ensures that if an attacker extracts the value of OID_STRETCHED_PIN or // OID_PIN_SECRET, then it cannot be used to conduct an offline brute-force // search for the PIN. - res = optiga_pin_stretch_secret(ui_progress, stretched_pin); + res = optiga_pin_stretch_cmac_ecdh(ui_progress, stretched_pin); if (res != OPTIGA_SUCCESS) { - return res; + goto end; } // Generate and store the counter-protected PIN secret. uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; res = optiga_get_random(pin_secret, sizeof(pin_secret)); if (res != OPTIGA_SUCCESS) { - return res; + goto end; } random_xor(pin_secret, sizeof(pin_secret)); res = optiga_set_data_object(OID_PIN_SECRET, false, pin_secret, sizeof(pin_secret)); if (res != OPTIGA_SUCCESS) { - return res; + goto end; } - // Authorise using OID_PIN_SECRET so that we can write to OID_PIN_COUNTER and - // OID_STRETCHED_PIN. + // Generate the key for the HMAC-SHA256 PIN stretching step. + uint8_t pin_hmac[OPTIGA_PIN_SECRET_SIZE] = {0}; + res = optiga_get_random(pin_hmac, sizeof(pin_hmac)); + if (res != OPTIGA_SUCCESS) { + goto end; + } + random_xor(pin_hmac, sizeof(pin_hmac)); + + // Authorise using OID_PIN_SECRET so that we can write to OID_STRETCHED_PIN + // and OID_STRETCHED_PIN_CTR. res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, pin_secret, sizeof(pin_secret)); if (res != OPTIGA_SUCCESS) { - return res; + goto end; } + // Process the stretched PIN using a one-way function before using it in the + // operation that will be executed in Optiga during verification. This ensures + // that in the unlikely case of an attacker recording communication between + // the MCU and Optiga, they will not gain knowledge of the stretched PIN. + uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); + + // Compute the operation that will be executed in Optiga during verification. + uint8_t hmac_buffer[ENCRYPT_SYM_PREFIX_SIZE + OPTIGA_PIN_SECRET_SIZE] = { + 0x61, 0x00, 0x20}; + hmac_sha256(pin_hmac, sizeof(pin_hmac), digest, sizeof(digest), + &hmac_buffer[ENCRYPT_SYM_PREFIX_SIZE]); + + // Stretch the PIN with the result. + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, hmac_buffer, + sizeof(hmac_buffer), stretched_pin); + // Process the stretched PIN using a one-way function before sending it to the // Optiga. This ensures that in the unlikely case of an attacker recording // communication between the MCU and Optiga, they will not gain knowledge of // the stretched PIN. - uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); // Store the digest of the stretched PIN in OID_STRETCHED_PIN. res = optiga_set_data_object(OID_STRETCHED_PIN, false, digest, sizeof(digest)); + if (res != OPTIGA_SUCCESS) { + goto end; + } + + // Initialize the counter which limits the guesses at OID_STRETCHED_PIN so + // that we can authorise using OID_STRETCHED_PIN. + res = optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)); + if (res != OPTIGA_SUCCESS) { + goto end; + } + + // Authorise using OID_STRETCHED_PIN so that we can write to OID_PIN_HMAC and + // OID_PIN_HMAC_CTR. + res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, digest, + sizeof(digest)); + if (res != OPTIGA_SUCCESS) { + goto end; + } + + // Initialize the key for HMAC-SHA256 PIN stretching. + res = optiga_set_data_object(OID_PIN_HMAC, false, pin_hmac, sizeof(pin_hmac)); + if (res != OPTIGA_SUCCESS) { + goto end; + } + + // Initialize the counter which limits the guesses at OID_STRETCHED_PIN again, + // since we just depleted one attempt. + res = optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)); + optiga_clear_auto_state(OID_PIN_SECRET); + if (res != OPTIGA_SUCCESS) { + goto end; + } + + // Initialize the PIN counter which limits the use of OID_PIN_HMAC. + res = optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)); + if (res != OPTIGA_SUCCESS) { + goto end; + } + + ui_progress(200); // Stretch the PIN more with the counter-protected PIN secret. This method // ensures that if the user chooses a high-entropy PIN, then even if the @@ -575,24 +635,18 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, // integrated into the device in the first place. hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, pin_secret, sizeof(pin_secret), stretched_pin); - memzero(pin_secret, sizeof(pin_secret)); - memzero(digest, sizeof(digest)); if (res != OPTIGA_SUCCESS) { - optiga_clear_auto_state(OID_PIN_SECRET); - return res; + goto end; } - // Initialize the PIN counter. - res = optiga_set_data_object(OID_PIN_COUNTER, false, COUNTER_RESET, - sizeof(COUNTER_RESET)); +end: + memzero(hmac_buffer, sizeof(hmac_buffer)); + memzero(pin_hmac, sizeof(pin_hmac)); + memzero(pin_secret, sizeof(pin_secret)); + memzero(digest, sizeof(digest)); optiga_clear_auto_state(OID_PIN_SECRET); - if (res != OPTIGA_SUCCESS) { - return res; - } - - ui_progress(200); - - return OPTIGA_SUCCESS; + optiga_clear_auto_state(OID_STRETCHED_PIN); + return res; } int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, @@ -648,14 +702,6 @@ int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, return res; } - // Reset the PIN counter. - res = optiga_set_data_object(OID_PIN_COUNTER, false, COUNTER_RESET, - sizeof(COUNTER_RESET)); - optiga_clear_auto_state(OID_PIN_SECRET); - if (res != OPTIGA_SUCCESS) { - return res; - } - ui_progress(200); // Combine the value of OID_PIN_SECRET with the PIN-derived secret and @@ -674,10 +720,47 @@ int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, return OPTIGA_SUCCESS; } +static int optiga_pin_stretch_hmac( + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + // Process the stretched PIN using a one-way function before sending it to the + // Optiga. + uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); + + // HMAC the digest with the key in OID_PIN_HMAC. + uint8_t hmac_buffer[ENCRYPT_SYM_PREFIX_SIZE + OPTIGA_PIN_SECRET_SIZE] = {0}; + size_t size = 0; + optiga_result res = optiga_encrypt_sym( + OPTIGA_SYM_MODE_HMAC_SHA256, OID_PIN_HMAC, digest, sizeof(digest), + hmac_buffer, sizeof(hmac_buffer), &size); + memzero(digest, sizeof(digest)); + if (res != OPTIGA_SUCCESS) { + uint8_t error_code = 0; + optiga_get_error_code(&error_code); + if (error_code + OPTIGA_COMMAND_ERROR_OFFSET == + OPTIGA_ERR_ACCESS_COND_NOT_SAT) { + return OPTIGA_ERR_COUNTER_EXCEEDED; + } else { + return error_code + OPTIGA_COMMAND_ERROR_OFFSET; + } + } + + // Stretch the PIN with the result. + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, hmac_buffer, size, + stretched_pin); + memzero(hmac_buffer, sizeof(hmac_buffer)); + return OPTIGA_SUCCESS; +} + int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { // Stretch the PIN more with stretching secrets from the Optiga. - optiga_result res = optiga_pin_stretch_secret(ui_progress, stretched_pin); + optiga_result res = optiga_pin_stretch_cmac_ecdh(ui_progress, stretched_pin); + if (res != OPTIGA_SUCCESS) { + return res; + } + + res = optiga_pin_stretch_hmac(stretched_pin); if (res != OPTIGA_SUCCESS) { return res; } @@ -687,7 +770,8 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); - // Authorise using OID_STRETCHED_PIN so that we can read from OID_PIN_SECRET. + // Authorise using OID_STRETCHED_PIN so that we can read from OID_PIN_SECRET + // and reset OID_PIN_HMAC_CTR. res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, digest, sizeof(digest)); memzero(digest, sizeof(digest)); @@ -697,10 +781,16 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, return error_code + OPTIGA_COMMAND_ERROR_OFFSET; } + // Reset the counter which limits the use of OID_PIN_HMAC. + res = optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)); if (res != OPTIGA_SUCCESS) { + optiga_clear_auto_state(OID_STRETCHED_PIN); return res; } + ui_progress(200); + // Read the counter-protected PIN secret from OID_PIN_SECRET. uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; size_t size = 0; @@ -711,26 +801,20 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, return res; } - if (size != OPTIGA_PIN_SECRET_SIZE) { - return OPTIGA_ERR_SIZE; - } - // Stretch the PIN more with the counter-protected PIN secret. - hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, pin_secret, - OPTIGA_PIN_SECRET_SIZE, stretched_pin); - - ui_progress(200); + hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, pin_secret, size, + stretched_pin); - // Authorise using OID_PIN_SECRET so that we can write to OID_PIN_COUNTER. + // Authorise using OID_PIN_SECRET so that we can reset OID_STRETCHED_PIN_CTR. res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, - pin_secret, OPTIGA_PIN_SECRET_SIZE); + pin_secret, sizeof(pin_secret)); memzero(pin_secret, sizeof(pin_secret)); if (res != OPTIGA_SUCCESS) { return res; } - // Reset the PIN counter. - res = optiga_set_data_object(OID_PIN_COUNTER, false, COUNTER_RESET, + // Reset the counter which limits the guesses at OID_STRETCHED_PIN. + res = optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, sizeof(COUNTER_RESET)); optiga_clear_auto_state(OID_PIN_SECRET); if (res != OPTIGA_SUCCESS) { @@ -763,8 +847,43 @@ static int optiga_get_counter(uint16_t oid, uint32_t *ctr) { return OPTIGA_SUCCESS; } +int optiga_pin_get_fails_v4(uint32_t *ctr) { + return optiga_get_counter(OID_STRETCHED_PIN_CTR, ctr); +} + int optiga_pin_get_fails(uint32_t *ctr) { - return optiga_get_counter(OID_PIN_COUNTER, ctr); + uint32_t ctr1 = 0; + uint32_t ctr2 = 0; + if (optiga_get_counter(OID_PIN_HMAC_CTR, &ctr1) != OPTIGA_SUCCESS || + optiga_get_counter(OID_STRETCHED_PIN_CTR, &ctr2) != OPTIGA_SUCCESS) { + return -1; + } + + // Ensure that the counters are in sync. + if (ctr1 > ctr2) { + if (optiga_count_data_object(OID_STRETCHED_PIN_CTR, ctr1 - ctr2) != + OPTIGA_SUCCESS) { + return -1; + } + *ctr = ctr1; + } else if (ctr2 > ctr1) { + if (optiga_count_data_object(OID_PIN_HMAC_CTR, ctr2 - ctr1) != + OPTIGA_SUCCESS) { + return -1; + } + *ctr = ctr2; + } else { + *ctr = ctr2; + } + return OPTIGA_SUCCESS; +} + +int optiga_pin_fails_increase_v4(uint32_t count) { + if (count > 0xff) { + return OPTIGA_ERR_PARAM; + } + + return optiga_count_data_object(OID_STRETCHED_PIN_CTR, count); } int optiga_pin_fails_increase(uint32_t count) { @@ -772,5 +891,10 @@ int optiga_pin_fails_increase(uint32_t count) { return OPTIGA_ERR_PARAM; } - return optiga_count_data_object(OID_PIN_COUNTER, count); + if (optiga_count_data_object(OID_PIN_HMAC_CTR, count) != OPTIGA_SUCCESS || + optiga_count_data_object(OID_STRETCHED_PIN_CTR, count) != + OPTIGA_SUCCESS) { + return -1; + } + return OPTIGA_SUCCESS; } diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index c6418aae8f..42ba824322 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -174,9 +174,16 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, return OPTIGA_SUCCESS; } +int optiga_pin_get_fails_v4(uint32_t *ctr) { + *ctr = 0; + return OPTIGA_SUCCESS; +} + int optiga_pin_get_fails(uint32_t *ctr) { *ctr = 0; return OPTIGA_SUCCESS; } +int optiga_pin_fails_increase_v4(uint32_t count) { return OPTIGA_SUCCESS; } + int optiga_pin_fails_increase(uint32_t count) { return OPTIGA_SUCCESS; } diff --git a/storage/storage.c b/storage/storage.c index 006157352d..2e39218bef 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -1275,9 +1275,14 @@ uint32_t storage_get_pin_rem(void) { #if USE_OPTIGA // Synchronize counters in case they diverged. uint32_t ctr_optiga = 0; - ensure( - optiga_pin_get_fails(&ctr_optiga) == OPTIGA_SUCCESS ? sectrue : secfalse, - "optiga_pin_get_fails failed"); + optiga_result ret = OPTIGA_SUCCESS; + if (get_lock_version() >= 5) { + ret = optiga_pin_get_fails(&ctr_optiga); + } else { + ret = optiga_pin_get_fails_v4(&ctr_optiga); + } + ensure(ret == OPTIGA_SUCCESS ? sectrue : secfalse, + "optiga_pin_get_fails failed"); while (ctr_mcu < ctr_optiga) { storage_pin_fails_increase(); @@ -1285,9 +1290,12 @@ uint32_t storage_get_pin_rem(void) { } if (ctr_optiga < ctr_mcu) { - ensure(optiga_pin_fails_increase(ctr_mcu - ctr_optiga) == OPTIGA_SUCCESS - ? sectrue - : secfalse, + if (get_lock_version() >= 5) { + ret = optiga_pin_fails_increase(ctr_mcu - ctr_optiga); + } else { + ret = optiga_pin_fails_increase_v4(ctr_mcu - ctr_optiga); + } + ensure(ret == OPTIGA_SUCCESS ? sectrue : secfalse, "optiga_pin_fails_increase failed"); } #endif From f393064ce7cef9e6e49ff4583b7322370e8aeed1 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 18 Jun 2024 20:20:27 +0200 Subject: [PATCH 327/626] feat(core): Improve PIN progress precision. --- core/embed/trezorhal/optiga.h | 8 +++-- core/embed/trezorhal/optiga/optiga.c | 14 ++++----- storage/storage.c | 44 +++++++++++++++++----------- 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/core/embed/trezorhal/optiga.h b/core/embed/trezorhal/optiga.h index 2335313672..a58c223d7c 100644 --- a/core/embed/trezorhal/optiga.h +++ b/core/embed/trezorhal/optiga.h @@ -42,9 +42,11 @@ // Size of secrets used in PIN processing, e.g. salted PIN, master secret etc. #define OPTIGA_PIN_SECRET_SIZE 32 -// The number of milliseconds it takes to execute optiga_pin_set() or -// optiga_pin_verify(). -#define OPTIGA_PIN_DERIVE_MS 1200 +// The number of milliseconds it takes to execute optiga_pin_set(). +#define OPTIGA_PIN_SET_MS 1300 + +// The number of milliseconds it takes to execute optiga_pin_verify(). +#define OPTIGA_PIN_VERIFY_MS 900 typedef secbool (*OPTIGA_UI_PROGRESS)(uint32_t elapsed_ms); diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index 7fb5084aba..8191f9cf06 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -401,8 +401,6 @@ static int optiga_pin_stretch_common( hmac_sha256_Update(ctx, buffer, size); } - ui_progress(200); - // Combine intermediate result with OID_PIN_ECDH uint8_t encoded_point[BIT_STRING_HEADER_SIZE + 65] = {0x03, 0x42, 0x00}; if (!hash_to_curve_optiga(input, &encoded_point[BIT_STRING_HEADER_SIZE])) { @@ -417,7 +415,7 @@ static int optiga_pin_stretch_common( return res; } - ui_progress(200); + ui_progress(250); hmac_sha256_Update(ctx, buffer, size); memzero(buffer, sizeof(buffer)); @@ -517,7 +515,7 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, goto end; } - ui_progress(200); + ui_progress(300); // Stretch the PIN more with stretching secrets from the Optiga. This step // ensures that if an attacker extracts the value of OID_STRETCHED_PIN or @@ -596,6 +594,8 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, goto end; } + ui_progress(250); + // Authorise using OID_STRETCHED_PIN so that we can write to OID_PIN_HMAC and // OID_PIN_HMAC_CTR. res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, digest, @@ -626,7 +626,7 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, goto end; } - ui_progress(200); + ui_progress(250); // Stretch the PIN more with the counter-protected PIN secret. This method // ensures that if the user chooses a high-entropy PIN, then even if the @@ -781,6 +781,8 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, return error_code + OPTIGA_COMMAND_ERROR_OFFSET; } + ui_progress(200); + // Reset the counter which limits the use of OID_PIN_HMAC. res = optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, sizeof(COUNTER_RESET)); @@ -789,8 +791,6 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, return res; } - ui_progress(200); - // Read the counter-protected PIN secret from OID_PIN_SECRET. uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; size_t size = 0; diff --git a/storage/storage.c b/storage/storage.c index 2e39218bef..4614e9f986 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -91,11 +91,18 @@ const uint32_t V0_PIN_EMPTY = 1; // The number of milliseconds required to execute PBKDF2. #define PIN_PBKDF2_MS 1280 -// The number of milliseconds required to derive the KEK and KEIV. +// The number of milliseconds required to set the PIN. #if USE_OPTIGA -#define PIN_DERIVE_MS (PIN_PBKDF2_MS + OPTIGA_PIN_DERIVE_MS) +#define PIN_SET_MS (PIN_PBKDF2_MS + OPTIGA_PIN_SET_MS) #else -#define PIN_DERIVE_MS PIN_PBKDF2_MS +#define PIN_SET_MS PIN_PBKDF2_MS +#endif + +// The number of milliseconds required to verify the PIN. +#if USE_OPTIGA +#define PIN_VERIFY_MS (PIN_PBKDF2_MS + OPTIGA_PIN_VERIFY_MS) +#else +#define PIN_VERIFY_MS PIN_PBKDF2_MS #endif // The length of the hashed hardware salt in bytes. @@ -451,6 +458,16 @@ static secbool is_not_wipe_code(const uint8_t *pin, size_t pin_len) { return sectrue; } +static void ui_total_init(uint32_t total_ms) { + ui_total = total_ms; + ui_rem = total_ms; +} + +static void ui_total_add(uint32_t added_ms) { + ui_total += added_ms; + ui_rem += added_ms; +} + static secbool ui_progress(uint32_t elapsed_ms) { ui_rem -= elapsed_ms; if (ui_callback && ui_message) { @@ -721,8 +738,7 @@ static void init_wiped_storage(void) { ensure(set_wipe_code(WIPE_CODE_EMPTY, WIPE_CODE_EMPTY_LEN), "set_wipe_code failed"); - ui_total = PIN_DERIVE_MS; - ui_rem = ui_total; + ui_total_init(PIN_SET_MS); ui_message = PROCESSING_MSG; ensure(set_pin(PIN_EMPTY, PIN_EMPTY_LEN, NULL), "init_pin failed"); } @@ -921,8 +937,7 @@ static secbool unlock(const uint8_t *pin, size_t pin_len, // In case of an upgrade from version 4 or earlier bump the total time of UI // progress to account for the set_pin() call in storage_upgrade_unlocked(). if (get_lock_version() <= 4) { - ui_total += PIN_DERIVE_MS; - ui_rem += PIN_DERIVE_MS; + ui_total_add(PIN_SET_MS); } // Now we can check for wipe code. @@ -945,8 +960,7 @@ static secbool unlock(const uint8_t *pin, size_t pin_len, // Sleep for 2^ctr - 1 seconds before checking the PIN. uint32_t wait = (1 << ctr) - 1; - ui_total += wait * 1000; - ui_rem += wait * 1000; + ui_total_add(wait * 1000); ui_progress(0); for (uint32_t i = 0; i < 10 * wait; i++) { if (sectrue == ui_progress(100)) { @@ -1015,8 +1029,7 @@ secbool storage_unlock(const uint8_t *pin, size_t pin_len, return secfalse; } - ui_total = PIN_DERIVE_MS; - ui_rem = ui_total; + ui_total_init(PIN_VERIFY_MS); if (pin_len == 0) { if (ui_message == NO_MSG) { ui_message = STARTING_MSG; @@ -1311,8 +1324,7 @@ secbool storage_change_pin(const uint8_t *oldpin, size_t oldpin_len, return secfalse; } - ui_total = 2 * PIN_DERIVE_MS; - ui_rem = ui_total; + ui_total_init(PIN_VERIFY_MS + PIN_SET_MS); ui_message = (oldpin_len != 0 && newpin_len == 0) ? VERIFYING_PIN_MSG : PROCESSING_MSG; @@ -1360,8 +1372,7 @@ secbool storage_change_wipe_code(const uint8_t *pin, size_t pin_len, return secfalse; } - ui_total = PIN_DERIVE_MS; - ui_rem = ui_total; + ui_total_init(PIN_VERIFY_MS); ui_message = (pin_len != 0 && wipe_code_len == 0) ? VERIFYING_PIN_MSG : PROCESSING_MSG; @@ -1537,8 +1548,7 @@ static secbool storage_upgrade(void) { } // Set EDEK_PVC_KEY and PIN_NOT_SET_KEY. - ui_total = PIN_DERIVE_MS; - ui_rem = ui_total; + ui_total_init(PIN_SET_MS); ui_message = PROCESSING_MSG; uint8_t pin[V0_MAX_PIN_LEN] = {0}; size_t pin_len = 0; From da068fb32e7d4e4882edfb3ff860c68f4cc62209 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Fri, 21 Jun 2024 18:16:12 +0200 Subject: [PATCH 328/626] fixup! feat(core): Rework Optiga PIN slot configuration. --- core/embed/trezorhal/optiga/optiga.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index 8191f9cf06..c2a7382503 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -100,7 +100,7 @@ int optiga_sign(uint8_t index, const uint8_t *digest, size_t digest_size, &signature[2], max_sig_size - 2, sig_size); if (ret == OPTIGA_ERR_CMD) { uint8_t error_code = 0; - optiga_get_error_code(&error_code); + (void) optiga_get_error_code(&error_code); return error_code + OPTIGA_COMMAND_ERROR_OFFSET; } @@ -672,7 +672,7 @@ int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, memzero(stretched_pin, sizeof(stretched_pin)); if (res == OPTIGA_ERR_CMD) { uint8_t error_code = 0; - optiga_get_error_code(&error_code); + (void) optiga_get_error_code(&error_code); return error_code + OPTIGA_COMMAND_ERROR_OFFSET; } @@ -736,7 +736,7 @@ static int optiga_pin_stretch_hmac( memzero(digest, sizeof(digest)); if (res != OPTIGA_SUCCESS) { uint8_t error_code = 0; - optiga_get_error_code(&error_code); + (void) optiga_get_error_code(&error_code); if (error_code + OPTIGA_COMMAND_ERROR_OFFSET == OPTIGA_ERR_ACCESS_COND_NOT_SAT) { return OPTIGA_ERR_COUNTER_EXCEEDED; @@ -777,7 +777,7 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, memzero(digest, sizeof(digest)); if (res == OPTIGA_ERR_CMD) { uint8_t error_code = 0; - optiga_get_error_code(&error_code); + (void) optiga_get_error_code(&error_code); return error_code + OPTIGA_COMMAND_ERROR_OFFSET; } From f396d00c673410316dc06ef2acaab7b8dc2f4e1c Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Mon, 24 Jun 2024 11:20:51 +0200 Subject: [PATCH 329/626] fix(core): Fix style and unix build. [no changelog] --- core/embed/trezorhal/optiga/optiga.c | 8 +- core/embed/trezorhal/unix/optiga.c | 6 +- tests/ui_tests/fixtures.json | 2934 +++++++++++++------------- 3 files changed, 1474 insertions(+), 1474 deletions(-) diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index c2a7382503..a4be9f1e88 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -100,7 +100,7 @@ int optiga_sign(uint8_t index, const uint8_t *digest, size_t digest_size, &signature[2], max_sig_size - 2, sig_size); if (ret == OPTIGA_ERR_CMD) { uint8_t error_code = 0; - (void) optiga_get_error_code(&error_code); + (void)optiga_get_error_code(&error_code); return error_code + OPTIGA_COMMAND_ERROR_OFFSET; } @@ -672,7 +672,7 @@ int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, memzero(stretched_pin, sizeof(stretched_pin)); if (res == OPTIGA_ERR_CMD) { uint8_t error_code = 0; - (void) optiga_get_error_code(&error_code); + (void)optiga_get_error_code(&error_code); return error_code + OPTIGA_COMMAND_ERROR_OFFSET; } @@ -736,7 +736,7 @@ static int optiga_pin_stretch_hmac( memzero(digest, sizeof(digest)); if (res != OPTIGA_SUCCESS) { uint8_t error_code = 0; - (void) optiga_get_error_code(&error_code); + (void)optiga_get_error_code(&error_code); if (error_code + OPTIGA_COMMAND_ERROR_OFFSET == OPTIGA_ERR_ACCESS_COND_NOT_SAT) { return OPTIGA_ERR_COUNTER_EXCEEDED; @@ -777,7 +777,7 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, memzero(digest, sizeof(digest)); if (res == OPTIGA_ERR_CMD) { uint8_t error_code = 0; - (void) optiga_get_error_code(&error_code); + (void)optiga_get_error_code(&error_code); return error_code + OPTIGA_COMMAND_ERROR_OFFSET; } diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index 42ba824322..8e63f7ffa2 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -156,7 +156,7 @@ bool optiga_random_buffer(uint8_t *dest, size_t size) { int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { - ui_progress(OPTIGA_PIN_DERIVE_MS); + ui_progress(OPTIGA_PIN_SET_MS); return OPTIGA_SUCCESS; } @@ -164,13 +164,13 @@ int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { memcpy(out_secret, pin_secret, OPTIGA_PIN_SECRET_SIZE); - ui_progress(OPTIGA_PIN_DERIVE_MS); + ui_progress(OPTIGA_PIN_VERIFY_MS); return OPTIGA_SUCCESS; } int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { - ui_progress(OPTIGA_PIN_DERIVE_MS); + ui_progress(OPTIGA_PIN_VERIFY_MS); return OPTIGA_SUCCESS; } diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index b91b9768e6..754748fe80 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -737,18 +737,18 @@ }, "T2B1": { "click_tests": { -"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f1187009ad9b010c8c57570a113b5950b7f6821468057ba8b5ca92508007544d", -"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "248d3de9d6f90e91ee5d019a0b6cb1146bcbe41908fd515cce809fe079cc7420", -"T2B1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "724cd9716838c5c4f2580425885476b4aff27038589a9cf59906de1f7ba08741", -"T2B1_cs_test_autolock.py::test_autolock_interrupts_signing": "02874299d8db61ad9fe894f3bdda6267e61e89258b2912dcd9ce996e97548410", -"T2B1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "7e37d10fd0fb53741c00fae0249e149f812a84cc36f0aab072e83b7cbfe55d33", -"T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "c272f39acc61f4b107c4f22ced26a358a1ab1a8fe84ddbe5d5eb55d21846a32e", -"T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "cf159a4d1b3eefa80fe2d3034db7e136c757de4eb8c3ac087e63114f6ad1c551", -"T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "39e858a1d9879f999b19d9555fb57efcab53fea56b9f161c94e5f38f13f3d658", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3c9dacda4dbb3163604eaa22b61088dd8686158b0bccaf2424bda2e7ece1429c", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "6f46b2e6288cb8c04516122d47d0dbdb813537b718012b8bc4868ef702172ab7", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "800eea5a196408360c49a3c0b1d83fbb9437f3096258fb670ef8786e3bc6cbd8", -"T2B1_cs_test_lock.py::test_hold_to_lock": "c0fa643e8fec7a18e7046e06b605e1eb1fc4673983c33b966858e7a061c08581", +"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "823e1a1a4ee1519fbc8d3495f541e3c92e9f7dab7811ebd798fd17e4be38131d", +"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "22b2712bb4de1b9d8ad41f9ba298a76d084087215df6aa337ab81617e7523101", +"T2B1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "8043917ad574b7ce0ca9c5060054c696c798b49187bf8264fa14a67ccbf6d28f", +"T2B1_cs_test_autolock.py::test_autolock_interrupts_signing": "77331e8264ac73c629d8f5a9c6a812f15e7ec6f02b2a8c1f018a80f23b5d5125", +"T2B1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "a7342cf937462d9502ec0e96308f13f1ad965fd31e95ac978fd9a5e93afa4840", +"T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "ad6708b0d3dbd753b191a08dc91fb2c4698585fd6fcd15f866538170a4f21a66", +"T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "249a05bf0473b440320ddc349794f7aea8ba237cedd02e968c304cd37011417e", +"T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "ae10d192c3a22cc99ccfacc2fc3759f526917d5e7789df3825418ad8ddda06da", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f7994f0f14e265209a9572b5de9091b8e32313beadf407a1276fb852a80faadd", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ee9ea3cf6bde89c29aff416b420ed07b7b1984952a41c4a3d1123facba58329b", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "cb58c79255487641f46c2ab79ff87a6a243896e8d504e9c18d010d37177d18b7", +"T2B1_cs_test_lock.py::test_hold_to_lock": "07cee6c56f7dbc28317dc500eb84feb1ce6b4123de16e31b72e5c47dd1d3adf3", "T2B1_cs_test_passphrase_tr.py::test_cancel": "3f02823f2de1e46c30dadc9aef8d1c1fe2cdd2ecff0d1ec9aeb770793ff482f2", "T2B1_cs_test_passphrase_tr.py::test_passphrase_delete": "1e464363ef619f450d2c0c9f82d5336e666ee3ded7107ce1079267dd75a3cdb3", "T2B1_cs_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "476649816e1e9dfb2c34133c89cc4ee9832ed69adcb47899b2fced844071e6be", @@ -758,43 +758,43 @@ "T2B1_cs_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "26ccf5e617ca7014c7801c10c3b4be2e011457a6969109f709824494123ab98a", "T2B1_cs_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ba468e87e835f86f67e382ad4175d3f95de2b45207b141f7226ec983d4fbc36e", "T2B1_cs_test_passphrase_tr.py::test_passphrase_loop_all_characters": "42717296ddc466af7f2ff36d3ff80345f0e7dcaa8950d2daccd2402ada07a33b", -"T2B1_cs_test_pin.py::test_pin_change": "8b7d47098fcd794be49486e10b4741923fb8e7b45c0d3542adbcc2126b194691", -"T2B1_cs_test_pin.py::test_pin_delete_hold": "14f636bb512ddbd199f98d0084e25636bc1b6e61bad3c392327d073c0949c3cc", -"T2B1_cs_test_pin.py::test_pin_empty_cannot_send": "f5a9eab8ae7fcba02628bc5d3af9b1b05e978fd6c07381bab96d9b8c5d0a9cb7", -"T2B1_cs_test_pin.py::test_pin_incorrect": "0a60b46ad40816b76660505ac83d260f48ab7808e15a810daa18fe19714fcaa1", -"T2B1_cs_test_pin.py::test_pin_long": "def7f1ed3d39a71a961671e84048664f0ac8f5881f28907cac69d3191992b32b", -"T2B1_cs_test_pin.py::test_pin_long_delete": "bb6e0ce9ae0ba2275aad2bd1fe55bd598a7a0aa8ba3a652ea575f4b1d9a8ce62", -"T2B1_cs_test_pin.py::test_pin_longer_than_max": "e803370869e1d4d1e5712f0d50517b3dca111e80e764b757d0535c7a1dea09d3", -"T2B1_cs_test_pin.py::test_pin_same_as_wipe_code": "cc51d2d9d46c2374c1ec6551624f848fafbded8af762c9dc1250698b8ea77ca9", -"T2B1_cs_test_pin.py::test_pin_setup": "971f59d39aed4609f220c6d3c16322617a7773295bd41be72877fd76ff2c7ff8", +"T2B1_cs_test_pin.py::test_pin_change": "fabce062d33968a98b9544dcd23331551760ecc0e5b75be0df31bd948012de4a", +"T2B1_cs_test_pin.py::test_pin_delete_hold": "fbba62ead6066aa6b12e6105dbf9208173a09d532eed66e76c4edb6c1222eb19", +"T2B1_cs_test_pin.py::test_pin_empty_cannot_send": "9a44d6d3858d01626dcae41661958417354ddf687ced54d6386addaf6511e3df", +"T2B1_cs_test_pin.py::test_pin_incorrect": "fb782af1b6ae84af8b5e02b3eb5992331188e57ea732507feb9945a3a329190f", +"T2B1_cs_test_pin.py::test_pin_long": "86b48712c47f1a9b8e86120712ef7d73d2ee2ac1de3aa90f4e3b8169e7a2e215", +"T2B1_cs_test_pin.py::test_pin_long_delete": "910d75cc74e2dd6738d53dba80b32ff0f64c23420a82c01978712a3b6ddf1739", +"T2B1_cs_test_pin.py::test_pin_longer_than_max": "4ad6ba2a21f3ebd6c62bd5eed382316eb8805ddb53dc0db03791cfff03384965", +"T2B1_cs_test_pin.py::test_pin_same_as_wipe_code": "54bb3b9e10a371c7ea578393ac620a663801fd5c175d0fc75a8eed4dbf426f19", +"T2B1_cs_test_pin.py::test_pin_setup": "fbe2e54e166a899bf29ee830865eaeeb39dca7321a1d8b0e91a683f81b100263", "T2B1_cs_test_pin.py::test_pin_setup_mismatch": "41da639b7b8d8446b7b4e18df7f4d9a065e4ca418fa82cdb907db4326bc1e10e", -"T2B1_cs_test_pin.py::test_pin_short": "3ab81cf8e392b3a5dae098b708866e5412042563844f44b633df2e946df1661e", -"T2B1_cs_test_pin.py::test_wipe_code_same_as_pin": "54ac7437efa78aa1d9d2ab2ffee9bc4884765a42da2d2ee0ee75c5cce8702f57", -"T2B1_cs_test_pin.py::test_wipe_code_setup": "a04b640c59cc1f0bfaf3e91450ce3a61a03e4b77a3596df5e2dbfa302fb87f61", -"T2B1_cs_test_recovery.py::test_recovery_bip39": "375a6f59a10b331b0862948495728220d6b73513b3ef00d0059c2416b97612ad", -"T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "7e1bd02324afa7842526afdd37dc1466253b2f88dfc31095f23d1241623f8f6d", -"T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "c12c729746d5096415c4c63e212222e7354a2b35a11810774466322b59e18d65", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "eb5fd0336c22d6a9e19339a5cc2405d4dfa777a54d4eebcb9c143e6a5ff87e69", -"T2B1_cs_test_reset_bip39.py::test_reset_bip39": "a230df6897a2329be025591a340d4dfaa22dcf908aa24e30d837ef80dbbe254b", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e70b2900b5f7a8487fc24566d5ebfe58c590817017ca78440246abce1660d484", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "cf0629dd19db3de2c3499caee7a5b1b79c45151c33bf78e98ece9354bb8873bb", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "9e9d338d6061fec81f5b4d8450b87ea89385ed1f174e801706246693de7b86cc", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f43f4210c3fa6a17ae3cc17c3835c694c4217e56de51e6320d81cd358ae1f7a5", +"T2B1_cs_test_pin.py::test_pin_short": "396d24cc6ce74559c6e56ee989dcfd4d22c5972c555c06ce06b353fad2fa7554", +"T2B1_cs_test_pin.py::test_wipe_code_same_as_pin": "ead8d4d5fa61f9c91c6fc3e57d4ef61579eb1972c1214f2a429bfc2cf7992252", +"T2B1_cs_test_pin.py::test_wipe_code_setup": "16e7d0386ac030784ea9e265fff79f95f92d3738d69bd62d80b69cfa21b4f927", +"T2B1_cs_test_recovery.py::test_recovery_bip39": "5ff6772084786a60dfd86c4f9cccb6a0c0ff20516a3a840f86f043e2fa3815d0", +"T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "c99da3fd48bf60357a622edf95e43aa006efce6abe4cb012f4dd2734eda928e7", +"T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "34dc24d15b42b8a40c187d289f2916062e8cbad8011afe068950970671b2aea6", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "b6863664b2b879a2549e911d158158dccdd1b1fc9130d4e900ddb278292e7902", +"T2B1_cs_test_reset_bip39.py::test_reset_bip39": "959a1d079d5697b8df5a42f4e991c0b3d0c9b43edd8988684ee128fa2018b0ad", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9167883bb6c34b39d64b072bce959481bbd0fb7f30b07f746b6fc6b0ebd6636b", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "645d18a049985e741fd2a2bc592fc81075d5947aa2c617934f4ed88828486dfe", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6419409dc0fe960bd4f3fa314a37780c8b9b696888e6285198ad4301eab8278e", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3c13d436e354481fca05139cc41f82b6d321f8d4640f438f6290349ea5f64148", "T2B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", "T2B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", "T2B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", -"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "9c27bf9333ffbb46c561f090ca0b626c51f97e42be966fa7325e9a8a211917aa", -"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "c7611f87512353c4140725d96e1e39ba24cbeb7a611d83379b939d706ccd2ba6", -"T2B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "d14aa9dd9e0d8fbfb5b4018271b939434b7951a3dbc24e46ffa96e47a816bed9", -"T2B1_de_test_autolock.py::test_autolock_interrupts_signing": "2b6718ec5c0978d1c8028eff7e9653e0bf069d01d2354fdffa6f350c4f9ad63c", -"T2B1_de_test_autolock.py::test_autolock_passphrase_keyboard": "112ea6d5bd593e28b376a6ba04c6d60c39df2fdce1ed4a40b215b716a7ffd9b0", -"T2B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "f365e2ed0d3ec8c2b49c602df1649bd0b339ef325623250339ea443e39dd52f2", -"T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "c48381a4420c0a6c9892ed24a4c2863dc2ef6492422335af7c1fc15957f15893", -"T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "2614cc40069651512c393206d3a7302eba83f52d47b0d4b38688952fe09c46d5", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d227b727f1cb985af2ba2b34fa9821a34eab24ce085d85eb03df55f3968c0ef2", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "45ecf0cbd209ce9fde312a41492286ae1e8a3df6e7150afe9b73279d8ff0d953", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6c78069d422d95ba3a299e28968c84205c17dc94bc7a944d92cf9dc85f5b753f", -"T2B1_de_test_lock.py::test_hold_to_lock": "fcc639edde3349bb64883e5119289d94ff26c0225b84c987fe3afa4c9ff49380", +"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a71c1ea99c846d8fc75157f453b60b83ef631fd0658634b92a04562872da422b", +"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "03dc1396a34f2576bc9f217046727fc44275d19827dfec487b4dc6f94040819b", +"T2B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "467f64d7cfd733f231130e170c2329f2e3a001c7eb6b6b03a76b882a75902fad", +"T2B1_de_test_autolock.py::test_autolock_interrupts_signing": "c3ec6025af6fd0ec892500b49b2933a3dd8ef86cad167f3a857b05e246decc13", +"T2B1_de_test_autolock.py::test_autolock_passphrase_keyboard": "e8b82ae5279611c2a1d5cb134289db0c7a5f19a72b737ca8b638a10e5b9ad89e", +"T2B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "29355f758b11a936a47ee8580c5685db2c0780faf05a60cf507f50d488a32961", +"T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "e1a7501fc6179d47f92157b863c51b93be8dc86ccd0dfff241f0c6bb9c06ad3d", +"T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "a32941fcc1a7ee40d906080eb970abe32046c27bf13278b4e1eb552d0d1664c9", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "231aeb488c0d66297a9394fb8dbaf8298c8c1cfd21d8119326fe3c2edd5bc3e3", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d1ba86382a5579a09d9e530029f0e45522ca85cd45c2aa130cd6f0e6fe78d044", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "fd44524dd5ca02e11a69edac331f9c63764b582f8052604bca71ad47478f3f0a", +"T2B1_de_test_lock.py::test_hold_to_lock": "256b4bac41881451e351a4713a31fa72fdbbddee4b1db82adde5af13664c3cc0", "T2B1_de_test_passphrase_tr.py::test_cancel": "260dfca06b933d88120da15c6a981c9e2bf136a1bb148cbaf0244a85c80c6767", "T2B1_de_test_passphrase_tr.py::test_passphrase_delete": "18f04b5c66ea5d1ede7e616f03e1a937dc57a0a2bc55bdf8c9d1aa917194e6ed", "T2B1_de_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "3309fe04be297d037c64a21c595ec13401222bbd788981310181fd673bc1462d", @@ -804,45 +804,45 @@ "T2B1_de_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "821733b59c68a2705621d6283e9acc4039ac95052e4512416010ea4346598528", "T2B1_de_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "7bdcd7779e686289b7acb1d5bc7f9f46c3a08c141542ea284e748ecf896b4241", "T2B1_de_test_passphrase_tr.py::test_passphrase_loop_all_characters": "8574b98ef9d743e6aec18c0cc2444b3270fc6312d1c4d29b0838bda6781efd7b", -"T2B1_de_test_pin.py::test_pin_change": "e5f5f401d8592b83f1be78c631c67efa06b475a3ae3b4fd2a62b9525876fc5bb", -"T2B1_de_test_pin.py::test_pin_delete_hold": "fa1177d8c335ea0b032b862a74a73d44d10136a70f1d8092c74024915da50fe1", -"T2B1_de_test_pin.py::test_pin_empty_cannot_send": "ad453904dc15477f652df643ebe1dd7cdfadaf712444dd584e23f8fec7acaed2", -"T2B1_de_test_pin.py::test_pin_incorrect": "95f894fb6011711bf5cf3d94c6a981b3555636a8b0a0edbf3fbfabf36f82fe2d", -"T2B1_de_test_pin.py::test_pin_long": "7b543e536c9ad5e3d970d62b5be764d8b380972c35aeab6c24374cd6798bc159", -"T2B1_de_test_pin.py::test_pin_long_delete": "363226d550efba6831fc866b9411d244e5560fa66e0d10b397916712deb10fa7", -"T2B1_de_test_pin.py::test_pin_longer_than_max": "d5a3d41ffd42bb91927ccb39ad6029ded8a8240c0a8b7a709a06bca8c8dce052", -"T2B1_de_test_pin.py::test_pin_same_as_wipe_code": "da14ce4c84d3e052ac22eaf3b8bc965f79e92a52d227f66b1c9a6cb8ce3bfcae", -"T2B1_de_test_pin.py::test_pin_setup": "e1f572457c54d830d331fd826f9f36fcc8f9e13cadc0a231f564443f51c703fb", +"T2B1_de_test_pin.py::test_pin_change": "bfb93e288bfd1ca833b10f1ccd2450e907c871f691e1751abf9d02e607004a69", +"T2B1_de_test_pin.py::test_pin_delete_hold": "8934e85caf11cbbc2bc7923d9ee86a3dd7cb3ea7c6ffa5fe1c85bb4b19ca92dd", +"T2B1_de_test_pin.py::test_pin_empty_cannot_send": "3c2e70369ae8d6f18b17fb976adedd0ddda3638384b5e8ad624d03f2dd2e1aae", +"T2B1_de_test_pin.py::test_pin_incorrect": "ccdf0531513eaa823749a88c8a7c43a656a8392710e02612c395746d2bce8012", +"T2B1_de_test_pin.py::test_pin_long": "0d979aee3dc9d6c05714f5752970cf288119a3cd262f6382d24d4ae90ede3417", +"T2B1_de_test_pin.py::test_pin_long_delete": "83e1c443c2e2adf77d8c28a7b7f601a2ac7cd5e4a3cb183b29c808384e7c6589", +"T2B1_de_test_pin.py::test_pin_longer_than_max": "346efe9a6e36a746299e23216beae13b8fbf77db8156120ee0e2db956ce88234", +"T2B1_de_test_pin.py::test_pin_same_as_wipe_code": "bf8f32db962f43fc11eb247e75ee1ba7c45a817badccfada589482e3ddd99d0b", +"T2B1_de_test_pin.py::test_pin_setup": "42ddf65bd107a6a788e876ea5f5960a86117a0ef2e30914d4d69b11edcf59140", "T2B1_de_test_pin.py::test_pin_setup_mismatch": "d8186819e4483ebf85bf929420432d72f41b44c7900ef7b7319763e0f1b72ca5", -"T2B1_de_test_pin.py::test_pin_short": "83e7a8ceeab1210100dcdd99d8beee7de6af772daf1c56a574ad823f644f33e9", -"T2B1_de_test_pin.py::test_wipe_code_same_as_pin": "ce44be19f56562e130bea35ba9ea87299609519a0790398eab16c9cbc5d986d6", -"T2B1_de_test_pin.py::test_wipe_code_setup": "8f1352109892e8f1768a023700c75e5f45cbd225428cce19639db55e71bf7c57", -"T2B1_de_test_recovery.py::test_recovery_bip39": "86b3980aa38255b490fc4cdc8b73ed8c0324a235e65a3296b52fe7d9a0a342b2", -"T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "6b006ad60a479d373f5abef8ac37d941853f3768e162aa12791fec0d56a65e77", -"T2B1_de_test_recovery.py::test_recovery_slip39_basic": "923a429e844a91eaadffc6d022c2912d2ad356c00d78f898dd4cb120a4255fdf", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "50dac6ada070947e4c509cd1fa597e6f74aaca88ea02b97682e397811003a407", -"T2B1_de_test_reset_bip39.py::test_reset_bip39": "bf18ca3a182cb1f3460dee4334f6c4d0a3e0b5e2e973658745f231caee97bbda", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b2f2f713a04815a71bc6b3e24ec7c7d99aef68e90545065e64c38e09c3d04a46", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c605a432fa0b9c0a809116422c5fc09931bb8f15b1e6f8b2452ba1887e5d86ef", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "dff15fa04d19398def574fb546f9b37cb8c58277f3c6f5eeff82dfe44a4e7a98", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e00d3f925f16380afda323b26bec2ff1b51f3c04bd312189f67fd0a4d0466348", +"T2B1_de_test_pin.py::test_pin_short": "2d61f13f8fb24cad2e50ccdb6d012e24e6659f20f72f353cb56c48b4face5cba", +"T2B1_de_test_pin.py::test_wipe_code_same_as_pin": "12252307f44a0ce62415d1d86086fe0469ac77effef305e0f287c66fd13b62df", +"T2B1_de_test_pin.py::test_wipe_code_setup": "6db5feaf103f0755a11651e19c12bb69aa1b791d3d199d0761cb0619c9e544b3", +"T2B1_de_test_recovery.py::test_recovery_bip39": "b5176ee7b79551841803a2c9e9671b06a2bbe767665c6b7df0bab552167ec428", +"T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "abd8e35b06c21c53fba8576c7775175b39f03549deae4b2196e753a3726f0ff5", +"T2B1_de_test_recovery.py::test_recovery_slip39_basic": "7defc84d112d0965716e783790f7a706e57f9cc8dbf0b705f490ff579b1cf596", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "675464644acc0fc97ad61420db168824a6ee8ed83b721c7cd4b62af5a9a0fb4e", +"T2B1_de_test_reset_bip39.py::test_reset_bip39": "4453a2aab9b7462e40d351f05b21a3e5b037f94b7be55e974b16752f916d1c81", +"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5254d5f305f00a41f22e0296b7a2d04f8dc05c91367b4721152ae6d776a55d1b", +"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c6e1e3c090fe5f67541c9cd1ea5e5701f917d4318e94f066d36bf32b1f5847f9", +"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ca0283263e58098402cbddbc759233deb03eaab4f385bb737daf04839c39d85d", +"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "63f1128c2038062180665a0c089a7861350bb352861187df74e87b4dfbef1816", "T2B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", "T2B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", "T2B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", "T2B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", "T2B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", -"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a67277433c9ad7c59332178eb5f280711273eb8555c1edf40cc523896c2d4425", -"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "ad5313372d860f1bc3462da66e43b8c12226fc6b392ed48535c39f69f9bc4d38", -"T2B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "e73c51702985c2970a12ce1caa885cba2e7619e42dbcbfec52544af60b7fddfd", -"T2B1_en_test_autolock.py::test_autolock_interrupts_signing": "94cf82d8fa72992b17ef6d86f87d96f9bc6155ab7039f4c40e4d8bc6d7db9069", -"T2B1_en_test_autolock.py::test_autolock_passphrase_keyboard": "8237ce015dcfead178e0c4c050d214c4499eae172d7ac124c1fde54239d6363e", -"T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "8cee21fc74611c4ecdb3926314fc7da5fb41cdc11070ba64b28b863b6a55153d", -"T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "a4c1153fe9496a0d1db51a4c3afdce7e141e285fa512a26649f02016af928f94", -"T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "1338f82e478396a01e3bc9d8e36abc96122324d9911448529759a5005b0a251c", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "001d17f8ece1465655c2132f4f4bb4aa8e420ff2faae65b907037825c6697a88", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "8e437a64319cb0f66a5d9d2e5745abef54f5f0b323d82a9a26a4fa227cfb75bf", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ae709a6db3bb87e54a308d5c002a0f87cccdebd5d7e4079bc3b601c9043f4f71", -"T2B1_en_test_lock.py::test_hold_to_lock": "83e2d055215b03150069d9fcb3aee6dc3f78a0d2bc43d8133425bf6b000c191d", +"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f8c715c228d21c5bc1afb0b4ad06971143e76f3f6b4518eea753282507951a60", +"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "540249eb9f57e5ba95bda57de368a0adb81af0cf866af1c1ed9589ef501b79bd", +"T2B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "1d0412811d1a4fa6b829d51229f994e924c501346b859a6c486e17c457b17001", +"T2B1_en_test_autolock.py::test_autolock_interrupts_signing": "59293dbebe4630a026ced1f72df1ba433e686d05828410ad575074e2f769686f", +"T2B1_en_test_autolock.py::test_autolock_passphrase_keyboard": "20a92b21374e752bbeceb8d3b2466739d108e0c9898a20e2843729844f29bb56", +"T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "77fc7b5ad26d13b7c35d028eb174acaf1810549d85e61bec67fa8f6c78722492", +"T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "4852311a7c5e9f6bd9937372bba1f4ba72f2555356c046f7c213004affee5c5e", +"T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "68b018fc77e99dac22907b4c65aa7052e50addabb209006405e912b20841ebb4", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "322271eef0e3769baab34c6f3ab67ea581d20878aad979b56768d1657882e367", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9f9b12d1e1cd1bf0f106752faf566daa0f6bb10c7269f2eb68ec3d1e1dd8bd21", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7d0b5a0bcd904e45062e07101fbd55f07a2a21b21ef54e3ab7d9796122668356", +"T2B1_en_test_lock.py::test_hold_to_lock": "3dd15d65399a0805d614bc7c1858370d62224d2725ae17c5fbfa196c548525c3", "T2B1_en_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", "T2B1_en_test_passphrase_tr.py::test_passphrase_delete": "28468562292a54f2d8cc954129c6b1859c267bc5a9b94f9b406352e71a4c8036", "T2B1_en_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "8d6c2c13039c420ba1430f990053a30bb0358a4a9d17b46a6a250d577f7643f8", @@ -852,43 +852,43 @@ "T2B1_en_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "8bd1754cf1967a6570339e29224d61f45e919cb23d7296e3beb6876dde84b289", "T2B1_en_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "502828e28edd8147781b1714cae83eea6f71a9820c30446d7e38eeb3a43617c9", "T2B1_en_test_passphrase_tr.py::test_passphrase_loop_all_characters": "e06ec53edbd9c3d8927e141e8a8e2af521641d0064a20b7953ad15f1a1d48f52", -"T2B1_en_test_pin.py::test_pin_change": "4da53241f5751bcccbdaabeb8eaad3b201d7d8ab14508158432660862e2ac169", -"T2B1_en_test_pin.py::test_pin_delete_hold": "a172ef00b79d79e7de7238bc29d1b7c9e34424a86cbe42865e59127fbc683f0b", -"T2B1_en_test_pin.py::test_pin_empty_cannot_send": "0f4cc246f9c1f0c81c3f6a7bdf7540225a8a075a878d31b145f6c9c449d8871b", -"T2B1_en_test_pin.py::test_pin_incorrect": "6a919d78d4487681b25e125bb36a5b3ea5f17dc68f95a74c220c3d57919935f7", -"T2B1_en_test_pin.py::test_pin_long": "f1c5957deed24a1c5f955712d87b8687565eab5660a5e6ef415a2566a4a93536", -"T2B1_en_test_pin.py::test_pin_long_delete": "b91a529aae7ab1e340cd38644b5323364b0623a640f5a7a712917436c6f38287", -"T2B1_en_test_pin.py::test_pin_longer_than_max": "1ddba1966d23e9677fb04bd6ab5798bae4fd36535129035716e07fd90f89df9b", -"T2B1_en_test_pin.py::test_pin_same_as_wipe_code": "a1b6d8fd0a6bd6a5d2dd0a2ec75f57829fd9a532ab164e676f647e15db3e4e04", -"T2B1_en_test_pin.py::test_pin_setup": "77763635ad3d67a3a821c0f340f71e7382391c657cc51a81ac3a24f2a4b536cb", +"T2B1_en_test_pin.py::test_pin_change": "a92119eaac657c57fd92753bc1f055ca8fc77d75c1f798d014c3624e5a76de31", +"T2B1_en_test_pin.py::test_pin_delete_hold": "85468f48ba08e9c64c64bbc54aa0a30c8e6df84a7dd41687321ca72bcc33ef08", +"T2B1_en_test_pin.py::test_pin_empty_cannot_send": "dbb9e465661c4389b75a92246eded10e79921485bf22e0c12adf5899a8093ef7", +"T2B1_en_test_pin.py::test_pin_incorrect": "6535005391a9f84f00ffe195c142e4a0101273f25a6117924713e00373ac4cea", +"T2B1_en_test_pin.py::test_pin_long": "ea17c066f6b0dcf1367802c555c58e8fdb9512ab5b0401f8f48315afc507ed82", +"T2B1_en_test_pin.py::test_pin_long_delete": "0667064f106a3d96ba51fc9c31e90bf1afbcdaac7b9d67d1738afbb661a31d5e", +"T2B1_en_test_pin.py::test_pin_longer_than_max": "14dc08573610c7dc9562d35e0952d050b4e9b1c38479d20a12fecb71345c0099", +"T2B1_en_test_pin.py::test_pin_same_as_wipe_code": "0de709397bd118acf163210803ed1236ecbc803efbb025ff3d34ba81bd744dd5", +"T2B1_en_test_pin.py::test_pin_setup": "15c3e20179a6f120c7ad255448ba654e846058d8f70d9befcf467fed1dee1e65", "T2B1_en_test_pin.py::test_pin_setup_mismatch": "a7d0d19e7ba5e7a7cbfcb92c38f0f3eb75c0e19eb12fc953185a3564b20aacb1", -"T2B1_en_test_pin.py::test_pin_short": "79f02039db164cc349d186a04ed0fdc974879d009c44ca65f031c158b211298d", -"T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "242efdbabbe39e4eaf7d10ef0fde8c3a499ec27419deb41632549c6412b79c59", -"T2B1_en_test_pin.py::test_wipe_code_setup": "2924233cb43eba66815a860d720a0e6c399acbde23c9ea74234ca53da106f71d", -"T2B1_en_test_recovery.py::test_recovery_bip39": "1e5ebf29bd14674cedd6f2cfef42bda268c53e98b1b67a531610ee9b70804391", -"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "6dc40e36be62f5b8d6c26b9c923cb643c1f715689f4d92db5b28363b5f2dff9f", -"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "938f3b9b8ea993a5bdaf363812a6a0c43d06c34bac46059e3d228d5e5f100b45", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "31a1bda17e7c7fa3653e1b11db9aca6cd01c8b811cb06581e2eb12a2628486dc", -"T2B1_en_test_reset_bip39.py::test_reset_bip39": "5e3278c2c3c22dbe3070e86a5d9e54a20be2f8ea61474b451cf44bbdf230f755", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3cb34f14385238fa61330059c4ef6152daa14e0656caef1c156cce0fd60f3360", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "83b6b14cb700410fe809b14602ae899627160f7d98add958893cf5b7e6508f4a", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6bbaa71e3d962296948aba41171f7a9bdc0fb1ceb484f82c6423721a20d40a9c", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6f90b4e57679e6a6183f66b16b1e548cabcd942d717c4304f58c41f7967233ca", +"T2B1_en_test_pin.py::test_pin_short": "b8d39ac6ef6ca40473ec59daad9d68e3905798d1c8eefc0f4b7dc0526fd8aa63", +"T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "85742d9a22952eb5666d792566130e838938c6af4893cc639c0952a3250a57db", +"T2B1_en_test_pin.py::test_wipe_code_setup": "be49e634528dacde843544f480cbdbafc0d6cdd7bbf5987373d4a46e2e773431", +"T2B1_en_test_recovery.py::test_recovery_bip39": "95c04efe15172e11bc9817b27de357ed213672ad7c71746ef248c38a37a190ef", +"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "380cb8d09c82da4d8ad4f43f2c01dc55c229b46b553e14e90ca04f7ae03390a6", +"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "bff1701ac0c4c157ec0ce559391cea37ea076f1a47ca910069dcd4d9ffc11866", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "793e64242a2ce4294b7e9e3461b4426a13993751c82921ca6a460cf7762668eb", +"T2B1_en_test_reset_bip39.py::test_reset_bip39": "aaf5fee8946e2534c32999109eca980d0568c77238f01f069eaefccba437974d", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "62d8e01e55a75b9aad8abc8cd777f72b4b5d7d0b01da9d0f12f193580d15b657", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6b64e7bc772c85109cf2944a50d16d26300e7dd253c3b17f77f22c036fd490e4", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "982fdb9d8b8fe23caaa0cfa96de8185cb19604526164933945bb5ce4522e0bb5", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6376b71e18524202bfc25e17ddd2015ed2bcad869db84245d117cf45c513b92f", "T2B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", "T2B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", "T2B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", -"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a85a6de70f985b8c9ff8c5f6fd54207d0101e6ba1c0922d7ca2df58197b00f46", -"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "cce0564467d0cb12c0d8f9d0fb9acb7455ba997874d0120467e81a9ff910383a", -"T2B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "430309b8b8a1beb5df1afa9290cf1596a698c00c09101141acbef565c06fa8b0", -"T2B1_es_test_autolock.py::test_autolock_interrupts_signing": "5dd6a4181a21ef7ca089918c07a3a935c7a222c7ca85ae9bf0bbc31dee76b9bc", -"T2B1_es_test_autolock.py::test_autolock_passphrase_keyboard": "d124c54caddcdcf1dc239724bbeaf36a6eaa39945670107f39abbcff06735e24", -"T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "1f1b83d430f4662b25854c6d0135375c8286c8feebe39f4ee69df5538c69de34", -"T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "5590f60c28de6bedcf1bafadcf103b81a3a418f4f7ea31b8c3585f06e48ce391", -"T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "09e18b001bb66c7ea14b489b50e05fb55a48fa67f841f3259b5f751b7901f1e0", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ee805e2ec9817224dd98cc9160e4ee790a52550c5e5902a984bbdc7d7c3f0b25", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4961e5b3bdd71b38d716f8b83711d04cb2aab8ba2f0feee22f5d346aeab8b438", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "bfa27e6b6237d5623fce98724eefb94691e06876a9c5d75314f099230f750465", -"T2B1_es_test_lock.py::test_hold_to_lock": "8b56379898b0f83deb893fbf6892242c3014bf896782854e7538d685fd6749b2", +"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ef1a1bd6b6b1e60baaa0ede6da0912736468a5f9d0e75f17d54f82717e4e6f31", +"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "15ab35eb333f87cb41baee7c7997512ad058b144f72b262ab469c76853f5bede", +"T2B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "6dc50192c2e13e67fdf449a72f249242ab73bdc1f6bc43e78a2cad1e358bab56", +"T2B1_es_test_autolock.py::test_autolock_interrupts_signing": "32051d634d1f5d2535acf53cee10d6c29fac10868556807cf03a023767f10579", +"T2B1_es_test_autolock.py::test_autolock_passphrase_keyboard": "f86fc134c5234bc71c7af3b6bf976024cea6a314ea3d9647c4c18cd697f45964", +"T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "0757d41e0cddd582a61e061d6a5ed79629ccb25d64a170745a694889bf65ab27", +"T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2bf57c62afda405b469261e8b0e9f8d9aee498d4ca020d55d3bb15649c81813b", +"T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "cc1dd08a2a77b6944fbdb40a8f316527b43c8c1ad0c6064e29c62e13a6f52ff7", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6093274812262b3d4092e4bc6c2d41c9e29a6cb48498646a0712e9c00d009790", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f30dab9f28454f505be2d2b2ba4209e035233335d0754207c7bea1f1a9cd172d", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7762f733b28544fee8c79096a66f181af44db5929078ab5bcb033136ea5d14f4", +"T2B1_es_test_lock.py::test_hold_to_lock": "486fb944f3cbe98860738aed52b3411398ad41dd69dedf5b1af6ae05319a41d9", "T2B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", "T2B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", "T2B1_es_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "5c05aaeb8a37df6fbd119fc87b9cdd92638111279c93ffa8ab402e921208c1c1", @@ -898,43 +898,43 @@ "T2B1_es_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "dbb4db4ceda8eb660bdc5bacc611649753f2b273ea76f72f1694282cc853415d", "T2B1_es_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "07e07da20ee6fe6cb2c96e47db180a821356ef62af8bee79493421eaf2c076d0", "T2B1_es_test_passphrase_tr.py::test_passphrase_loop_all_characters": "a7f2464aae4002550a0a9a9ffad46e483ff860572091d4478f157e6be3cf078a", -"T2B1_es_test_pin.py::test_pin_change": "aff69c607c1f3dddc0bc6dd4377a9e52e256b24372b40d95316935ba1fb9192d", -"T2B1_es_test_pin.py::test_pin_delete_hold": "c12edcd5ef54ca093d37bd76b2c8a1381327ecb10eab3e4e7542d81bae17be04", -"T2B1_es_test_pin.py::test_pin_empty_cannot_send": "5d98b0becd4bb1b641bf3e1c4ef840e6daaac312560160b8127fd959834b7813", -"T2B1_es_test_pin.py::test_pin_incorrect": "96867d96589bd7dae7731cc227d04470bdda82cd3f1de06d54c30869f3c662e1", -"T2B1_es_test_pin.py::test_pin_long": "bc88b7b89b54074a582e9df5be9136d5c27d343099f7ea02ab9ddbe9fcbab3e1", -"T2B1_es_test_pin.py::test_pin_long_delete": "4143b2ff210dfabb790f52e8fafaefa0fc7716d5d845955edd6c1373ea9e5e9a", -"T2B1_es_test_pin.py::test_pin_longer_than_max": "2569644bdfbc1d8b39e8d51a6cdd42078e4dfd3f268f51c80ebc9be927587bd7", -"T2B1_es_test_pin.py::test_pin_same_as_wipe_code": "d2a657a42c5a37e5c708c8dce8300635790c454fb4ea9b3b7ebbd41f3bc922c3", -"T2B1_es_test_pin.py::test_pin_setup": "758d1f8c07ee7c6659dccce3bdb8b3fa252a56cd440b252edfbb0d57e8717104", +"T2B1_es_test_pin.py::test_pin_change": "9ccebf4e2628a3861fe9077594bc780e9fe0d424bad2fcec638d307b5a0d1014", +"T2B1_es_test_pin.py::test_pin_delete_hold": "f6410136d640fa92b2c466ac0f524ba3e28925be28b9e9aed68891fb138fa80b", +"T2B1_es_test_pin.py::test_pin_empty_cannot_send": "6f8962f34a9a8d8ef9e819e5719ec99b3fdc818a4b0bbab192fc33b31d45de67", +"T2B1_es_test_pin.py::test_pin_incorrect": "626006a87b61629b5f0bd74c6a9f3a06ad7f054f29c3a486ae0a11bc0ae8b023", +"T2B1_es_test_pin.py::test_pin_long": "d679e4ee22fadcb6ff2f426d5bd5f4476d9d2240907f1569c644184bb401c6ff", +"T2B1_es_test_pin.py::test_pin_long_delete": "f76ad1874ca2b8b16ab2a0494b890bbb5eb6f4a305edc94223b28714e79fbd91", +"T2B1_es_test_pin.py::test_pin_longer_than_max": "e515cfd42ec8b46b8bde8ade7ff132ab8bb3b7da6891178c24ed40639ebc3663", +"T2B1_es_test_pin.py::test_pin_same_as_wipe_code": "057da08cf00e08a61c6884dde5b672bd3139665eefc084e20eeaf8eb883314b3", +"T2B1_es_test_pin.py::test_pin_setup": "b15a60507f8c5f9382057bf3d50c00cb23abd60b67b74707ff2e1f4a737ad192", "T2B1_es_test_pin.py::test_pin_setup_mismatch": "5c2706aa9ac8a9a0f6175353d67b1750ba6a329ccb3acf6b2cbfc86c96db5d47", -"T2B1_es_test_pin.py::test_pin_short": "0e99a5101d7ea8e56aa6fd0f1ddb7e5458c0d9621ba4408427dcb27448a9773d", -"T2B1_es_test_pin.py::test_wipe_code_same_as_pin": "de05c94ff93ed2effdf93cc6587657b05a8c72773ce8eb6609bae62e1ebe1e8c", -"T2B1_es_test_pin.py::test_wipe_code_setup": "28dc846e7b88f147a7c5a6b2707417b253ccc1155778de9e13e8a170e9f3503c", -"T2B1_es_test_recovery.py::test_recovery_bip39": "1d60d8f5eb658ed44eba51a4ac73a9893c98fbd40b3b8ffc96f9f26d36ffa604", -"T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "a45747e147ad29beea8329c6ebe657cd9780f44e9e20ba6248f708d1015a9522", -"T2B1_es_test_recovery.py::test_recovery_slip39_basic": "5f573a064d1b85081484f35e95f5e27c3dff62f301dae4606acf01234cd04352", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "0accfd3c21c9fa3a8a18eb87510803131065973678e660e87d868e1e227f0e5e", -"T2B1_es_test_reset_bip39.py::test_reset_bip39": "34c0ef033878298114450c5f4754352cef69d8b79ace14eb2ebfd6600162d032", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9ae04292356d8b353b021626d2165228d9b3e373d4a488fc0e971791e583e988", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "42ebf9db101f9ab1ca38688cd261e16457cee3240cd66d9c7d854e6ffee2ac40", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e0c3f348de2ef431308b078a35dd8518e1a93b1b923f456725bdf8c968bed5f9", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c4b2e5e08f008bce808bb84b9d3b18b2be523c3d913dbadb6ab1b077930897c1", +"T2B1_es_test_pin.py::test_pin_short": "042af2df883141d38e52782b4cf382e9b0f4c5a649b9bccc8e471cfdafb172c8", +"T2B1_es_test_pin.py::test_wipe_code_same_as_pin": "d9ba061fccf43343812239a64cb2eca407d388ac3fa32cbd4efe3af5454ea302", +"T2B1_es_test_pin.py::test_wipe_code_setup": "089bef91b19e6f432b69154c44a6617903217288b735632ee044516f26a43555", +"T2B1_es_test_recovery.py::test_recovery_bip39": "df2974b87e67cf902966613e669f428e26a8e453f573aad110c90ae2996517be", +"T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "8f5fffcc1376ca8c458e9447cb9d99eb48614854e714ed818e3c0eb886e7d014", +"T2B1_es_test_recovery.py::test_recovery_slip39_basic": "b2ea8a449ce2ce3316289aca0a132de09ef499745013d2f4cb1e0b9fa512d690", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "4eddce1abc2f8423289ceb68ab70c3638dba21630ea77b832681caaa2382b1f1", +"T2B1_es_test_reset_bip39.py::test_reset_bip39": "7ac206a45e1495d4a9086f83b7d458d4bdacd773c2c08c193a9fa3de2b340b2a", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f3467575508ca1ffd995b859ccf1ece9ec843c813ad15f23994c2e970f9f4408", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b38beab8d965cf41b75d67c6421298e2860dc010c1b7c9e1e26d9e8ff69ff011", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d86960204514e979b05335899f8eb4025c6139bdeab3129cb3a8d4c590378e07", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "222ee03c6a33011e50aa812a665ae3fd71d9f6cc6b45a208d0529b56aab020f1", "T2B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", "T2B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", "T2B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6934db439eddb700875e004ac09d750c580a4d3842bb729d143c4fdface7dd1f", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "73103e29c507fd0dbac4e2c13eb900790b21cfe9d2ee1aa060dd2f5421b88598", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "0dab91b272953039e6bfeb76e61aee84fb82d743c22a6d31299c3b96fb824311", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "e77b0d0271192485af62dca8b2b9343a5b1b6c9e99b62f386fb077b4aabd1f8e", -"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b7d9d4531bcc863d8fa86fec858e474694ffca08dfb52dc2044affce37580910", -"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "e440727f60bcd583f656da40dcc3ae54ebfa23e0f2837ba5fe31a97015455828", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "3eb1b565b842224f82b3aa0195a67649aaa3a91dfafa3613c8ffaa606b23ca47", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "f1d471feb6a1a143fe78e6cd527694e8d93238955a575e12596520a27590b1e7", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7954aac5e6abdd9c0abcddc2ad97dfac11cb9c496a948ae0643262b511a2266b", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b28215fbacd9415665fa7acc070e61af880ed440b4be345af57064e30a55527b", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "35b4c237196d668dab1ae298edfd58ed6152ba093bc70c8c087927f16a208726", -"T2B1_fr_test_lock.py::test_hold_to_lock": "120c4051eca095f220eebb6b54122b6a72da41c5ee67f1215a5c964e6b76d3a6", +"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "15908b9ea093410c2a54e709078a2a30f8aa954c5a5ece66034a744148025c23", +"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "2e9b968b1fe1197b602d2ecc35b2311800b463ef843dea329a573b64bd7cac27", +"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "3b74e0688a32364007ce9fce23312ba4a3aee25c9fa5e7c8d01efb536a233f3d", +"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "30ebe81f92a5b0f19a5270657d52e8fb29d1f65bc454ddedb843ced3d4065137", +"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "0c2364a08d4143433fde5731c7135f0fb15362ffc5ebbed4a13e4cc840a6a0e9", +"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "1c1a63e10e6c670644a238b21668af29356733b3275a0bcb7f94ebcc99c4e56e", +"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "32eef285e297fe2336da444598c375c69cdf55b5b7509275e684fd3998f3854f", +"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "d7a6e59453cc4a05930096e8372d42e05307590516d759c28f04714b627256db", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "874b1f06ba13bb24a0b34b66bf7369e927f4a35983b02755c0fd4efe32e23960", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4acc6348e4ec886b72104a3927ecc6163fd86623bd6ae5b1bd0b87e59bdbaecf", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b66be71643b68cf92ae826ee2a361d99007a4b4792000f9a60705244036fc1fa", +"T2B1_fr_test_lock.py::test_hold_to_lock": "7253f7857a54d33bd53b5524f798596e62876d9518120feb86a93295d5aabef2", "T2B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", "T2B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", "T2B1_fr_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "9c4f6394ed4c0933978b7179586103b2de51607242410c2a369bdfca8deb7094", @@ -944,28 +944,28 @@ "T2B1_fr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "61c6497db6c69de9338547c8184bdbcd1cb452ad1f36ab37f4516a90473441fd", "T2B1_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "8da058fa6f29f5327cffe6239655cddf530719f0dcecb3cded5554f0f317a9c7", "T2B1_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "9f70b92d9ccdbdf713e473f25e12f0a81684b1070483f6e4efa14dc2f30612de", -"T2B1_fr_test_pin.py::test_pin_change": "a56b215fc633721feccde9909db5e4afadaedc3974e65656549b8344f3731ee0", -"T2B1_fr_test_pin.py::test_pin_delete_hold": "c04dbfe19835ed7242500ab90b94e1fa4ab84108a327d257e5f568eb481c22f1", -"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "fadd4f84f97ddede5fe2885326f4d3112b8d7d7f2d3a888339ffc664b64b089d", -"T2B1_fr_test_pin.py::test_pin_incorrect": "745136d0e0ea889b9d6e859eeeebd5d75556028c6bc2915a36b3b02167d8436c", -"T2B1_fr_test_pin.py::test_pin_long": "eda77b24c1b96b9bb25995ccfa4b688e0dce2aaa397e00a8d049d31a1b2ee7c3", -"T2B1_fr_test_pin.py::test_pin_long_delete": "e9a257bd01008ee70e79eef27f6f8991d2e06d884a05d4c17d2dd2a77c373f48", -"T2B1_fr_test_pin.py::test_pin_longer_than_max": "c08f164144f88438176cee245f8e5236e79baf299712857cc468ddd479a10b02", -"T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "287226fa2b15fc4bff47335e052ee853e26d75cc35db38175d66a18d8e5050c7", -"T2B1_fr_test_pin.py::test_pin_setup": "56312a77d93ba23745f020f1db6e08c2520243e5fb5839c9b1c752c84299a302", +"T2B1_fr_test_pin.py::test_pin_change": "c9c39eb69368caffb1a12aca10c8e51b7620c8093afd582ceb47e06c171a5150", +"T2B1_fr_test_pin.py::test_pin_delete_hold": "e6a372fdb83876027699403406f8ec79f2658859f94d2522569f257d2df6805e", +"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "a1394bcea1539204bd12c485fde124bc2076c2953b1ca6cdb0a5eba316f16ac6", +"T2B1_fr_test_pin.py::test_pin_incorrect": "64f314fc3f17896b09c731bf1d6e5bd68d16ebe0257ea743f96143fc477640b6", +"T2B1_fr_test_pin.py::test_pin_long": "efdebade297862976809860ed4d584e421606254c6741967476dd224fd2740f3", +"T2B1_fr_test_pin.py::test_pin_long_delete": "3d9ee00acf12db55445024b86e6e334a20fd6540d6439ca92fdabb912eccf98b", +"T2B1_fr_test_pin.py::test_pin_longer_than_max": "f438c8862011b5ffaaa44784f75116418ebbff998827e53de162af862b6ce51b", +"T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "194e0d177b7ad1b48970769384d58d2fdbadd9a1fe83c20f304208f854517c90", +"T2B1_fr_test_pin.py::test_pin_setup": "4dc8b8be2acefb045db0d450289b3093b75e3edf58b1c898407603a57dc05063", "T2B1_fr_test_pin.py::test_pin_setup_mismatch": "2355be5932873459592cbfed1950b07cf03a88aee418b8d8645476953450de8b", -"T2B1_fr_test_pin.py::test_pin_short": "df297fa50dcfcc5865c1c190d0c997a158836a5d2ca3b01ac1ea55d2e347d5a7", -"T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "847dc181953db227e00e0d616f3cedabe367e4684e0fc77aa6dedc0abc67546d", -"T2B1_fr_test_pin.py::test_wipe_code_setup": "746bdefd49d511099c5fe90663e2ffdff261821960f3f663295349bca359a57a", -"T2B1_fr_test_recovery.py::test_recovery_bip39": "cbd5332c79af0d104411a43f862135c499052096748d5b47cbe9efaec45bb5d3", -"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "c105a2013a1270d516f84dd41c1ab6ebf3690cd1dc60ed9d356ec4550bc144f1", -"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "ef586e7a53fa4d827f5dc12ba9f6d59cda8c8a7f7aee9e9861c5edd3a16aa74d", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "b3034dda94de7183ff8da2c7a2be9179c2748c795675eba420f0ba814f77a1ec", -"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "a9c6151e2d78468978330506004f60f7a0215cfe6490dd3ded10ba455c48a5ad", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "186a0b58543180d63fdb3a9cc35c4d450f8b0d483fd816359c12cc202cde0902", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "59f11a8ee23b085fa36d0bd2b48b4a1a0dc50de1583bdf0ec5d73e3a89a6dbcf", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "064142ecc63197d2bb81c342473bc1d7d33645f84c241998c1198676f0d54afa", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9e8433d1aaf18cde6dff11a9bd478ca7294a8c744cbceb9a7ef421cabd229169", +"T2B1_fr_test_pin.py::test_pin_short": "6a8d8b277f254ab3b60422cafae89760714a22bb9f93a25f6bb567e04f0cfa8f", +"T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "12ee4fc077d391bc75afc413dea8012f2758cc322433b7e0f8d8768d30d13622", +"T2B1_fr_test_pin.py::test_wipe_code_setup": "8657f375b846cc2b4a9c4a79475124b7170e0ec71be3c70f93171cbd10cc0d6b", +"T2B1_fr_test_recovery.py::test_recovery_bip39": "803476796c14d80a04eaccce572f15e4cfae458fd549230f90ebadf82874d1c5", +"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "a2540655e7e610a0be652e3094e136bf9235ddc96be8c8755f08e38ce4e789cb", +"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "d46fffc6c0659e1e794a0dba0becd036275093b35a4eec4cf7c295fa45455422", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "64a00ec6af3a21ac3145039a03aae71da6c50c3361be659ce87269cef980ee77", +"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "4691bf245d7c7f5bf2b1595776a52502cdac2659d6b4140543ee5da749161cb1", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "836c148a809f074af74ea332229018d02e8ad65017446d35197009f636bb94d0", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ad1493cab22eb1ecb955b468d4566c33939f7f0358cd4d6ea5156fb0302d9a68", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "28b6cd8ebd7376df4f0a677f2fd97475b4340a66459ad2c3f698f0692c90fb0f", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b2c65dab91182024ff95e1dc5fc61fb1cb94fa5264689a9860533f7ff81752ed", "T2B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", "T2B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", "T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" @@ -986,8 +986,8 @@ "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6ccfdf12ec748ecf1717eeadf42e392e3636bd5c567b45fe7f6ca48db41bda43", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "32b25b6de46f3ebc29be9841dc162b61c561d314a97e683b26a0bd84d391625a", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6731877dffb2f660016695b8880961d9f8f72cb783fd111bcaf53c573cfc2201", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c2892ee7eabbe69c77b80e9283604224c512ac876e85648520d1ea4ea35e7593", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c2892ee7eabbe69c77b80e9283604224c512ac876e85648520d1ea4ea35e7593", +"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "0ea1073bce78b0836dffb895afab444578c142c6010ce5ea3534515fa11d6ed5", +"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "0ea1073bce78b0836dffb895afab444578c142c6010ce5ea3534515fa11d6ed5", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "c8ff767346e56aadabcdce445535211dc94ecec88149cf1048d8439393161288", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5ac9b722e18622fb08e3c872641938705df8c04db2d0f4a455ab0195028ece1a", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "d4128698d292c124c0c222fc1919e662f0ec9a07f3cb6eb6920002a927193090", @@ -1999,57 +1999,57 @@ "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0755ba14aa7b30e097f0f6899b553cf060f2da8fa31b6b24ade8f98445d2ae04", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6f4f381315052c55b12e37ba3e36211c8839846c6e4cc7519a75907676d07497", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "925f1e3aad162264ecfd89285510fb44349543613014d96eea7a0bfa641ece57", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e6d251b235e885338a53d35e0017971f7c09239ab51daca6c726c9797691ceb1", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "aa950618304ea938455a09282fd15261e3e2972431b1461fde648488ec079fdb", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "63cce0f5ccd4ccfb7ce3b06e0e6c4485c0891d4a5f49c6a1b621f53da3ac4674", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e2d2d8334eb6a543c7a70795c2c35f08374cd2ce017b51d1f31f63f6dbc9f415", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "5c3fbdf422e2bc1aacd54075f35bb1ed40f576aadd0414796c937a20b8dd823c", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "af390c611b41f2ac6f5b03c05591c95a8b18b3d9aa95e99d67d323e98d225d12", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "afc492d0ccb0d83d20c7b511322be2af267374b07a00c470023b3c88a3140301", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "fed9ec8eb7ab5ab3243fc778229a26e1b8c17357b7b2835a51a78c7a64e266ff", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "762780a54cc2c6c2b5360ac8c1c6522d9785ff6591d54b24b263cb1f62873d41", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0701f487c7ada0496492f295f787993528af3363b223e85503b136b437d4fbdf", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "13c69455d3aa010fa5f88c7053adc774a31cfbc4bbc1348347477922c85c890f", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7c327249391ad9a984c2e5444727f26758b678990a49505007fe112bc72c644b", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "13c69455d3aa010fa5f88c7053adc774a31cfbc4bbc1348347477922c85c890f", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "7c327249391ad9a984c2e5444727f26758b678990a49505007fe112bc72c644b", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "9ad67ce8350b09f3c7c3b4eb83ba4dcdb926399c687f1a8039f26da639299d71", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "bee60954094581e5f9ef3b2e3d780d8d89ca904140eabab1cac468e9179e3784", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "be3b53677099eef3793ba21f3d08dd8f370b9a8cdeeb5340feb54aff26ad4ff5", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "af390c611b41f2ac6f5b03c05591c95a8b18b3d9aa95e99d67d323e98d225d12", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "5ffd0e7897bd42c5a917275f4288be0f92712256fa0c9d4c5221f2ffeb12c85b", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4e9a362f2147a505b1b5e0696cf1b593249357c9bb54c1a3a178885c7eea5b42", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "ad99f8a9033a97a66be6e8c83f7aa32673fc879d769b3b8be5b0cd79a3384d29", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "19bd64f359786311571d89028e273e5090c6442e038cc53fdfb8dfdf9bbc391e", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "f711bc69728f43be4ff3a83e7a8298f0a837f023734f85c5edd84204797e760c", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e1917a15377b21678869a2b3715127561d4a3adbe792d9fcee5cda73f3f4dd68", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "f7e15054e4f2fbfc0aec1ce913536b13c9e707b6f034038e47bee2fe2745adf2", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "1640d93822b2a06a27e86c26e29415b33eac1f442042cb2448f5d132c4c6d55a", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4b9d8d4d9f440330c5a9fca7ca831360785b8d6dab962f8779eb0fb51cf86f19", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6ef9e299a65812dff47ab236d51246fc1960c812272e7d300c9691b3f835b06c", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3c0da9b0270606af2a327d471c81e7eb9bc23c1b560a15d49abf7237d5069e50", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "ce6c83847f749b2b86133b1203fd177071439a136e9ad3b0abc341da23c4cdea", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "ea5952e082dbbe5acf3b2005191addea107d37f90961538d94aba08fe9dbc30f", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2953af6fb4d677cae36b61c6e3451151c64d6bfc1b910ea655def66505b7e897", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b7c04544d8759f253ba09e474bfde8770289951a50ef0e6445c6a5de23a04cc9", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "b8cad2a9e0bc52fcf2b68884efa537d4dfbdfc40f0df58919b704d77c269d913", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "45e6fdf94c335fb93c1dc185b32ef78f1d9a9ecb8cb8d005294d185ff71cefec", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9c59438805f9f37f752e5308b20c0f9d24f80e6d66d61677bcae2747a612bf19", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8d20230edc61741a672afda7865be123db9298ac8e3ae9af72087795852bc65a", +"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "6a40492e7ef272ef91c95ac1f879b4b4a1535559a96c3b4fbf09fb55dc35b53f", +"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "ad7ef459d2e30222956daf8192e43b83850de776fc49afe8cdef679ea7225dbd", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1012384fa6d7c5797a321dc83b42ad516ddf35a0e3ea430ecdac8713479a40d0", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "efe32b4db6669367ee47394c85ce492dd2b97f95c3d0f49e5c7665c20993c1f7", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "84ccdffa66e6cae0a75d9d0f1b2943fda356391dcb3219925620fbc38d164f48", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f3018552a33dc569ac4f10da8f21a2b2da65d173954338591e2407f30b44f12c", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "838310835d53850bcec7948fca720b4491fc79e771553ebc004cf20c871164ef", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "37d7a22dba0314d3f640f29985c796f736e0697188c02f01a3e88e80f65706e4", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7ed66e977651d01a2752afb162be1d6fb0efc594e29e4c93908cb6cecb4f783f", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "37d7a22dba0314d3f640f29985c796f736e0697188c02f01a3e88e80f65706e4", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "7ed66e977651d01a2752afb162be1d6fb0efc594e29e4c93908cb6cecb4f783f", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c52e76c39ca7d83752d570b741a5f8e44883f7e62dbd730ae9eda1322d5dd59f", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "fcc8ff88872dff72b6d4bb71dda37abbacbc7e4306fbebcad86b514bc369c45d", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "17880f70da55259ac5bb9e4971d6c38095e43ed201cf0a4c35949732f3129d69", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1012384fa6d7c5797a321dc83b42ad516ddf35a0e3ea430ecdac8713479a40d0", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fb06fd4a57d44e7f547c50be4bccbb0ccaf2b849e3d9b8f46ea140c597c5fe8c", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "693ef028ccddcf05b479b36f8ba55c8c88b52780937b19defd2c1439d537b63d", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9133eaf4e1bfc321b9abcdf9dcf3e1c393bddcf5345b193379bcbae938e15ab4", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "45aeb49a4892cc67ccac8e837177f0dda3e05fe910c648bad7484bffd977b015", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "27d1515cfd085ab94148851f322200a792da65e90c3c5989ec86899f0a4fb6e1", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ba70b6e2192cb4213bec0c2a65097c2dc37947f961526f98d54cb17369a617cf", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "86c2a239e52d9cbd2bac320a85cc9a3e857d925be027e21ee47d1e57e0ceb544", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7848e9ac6be51be5504ae89017f53b2a06125fbd2292b598ec21f9f7a202fa89", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "67dad6bee42b6bcc70b6936b81651e45e17f7663f27ef31f313dcf713d301e3b", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9b36edfac4678e57e759e4a0e5a660143c4b5c673a91a1f12868d19ed23fdf84", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "507922d70c38e8c9734ac354333079836d10e1a8c3cdffc29ea03b646abfb79d", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "1fe2b41790caaf7b4a3f6268fd35f45fa87acf3ba9f7e8eb69d5df329a7ed784", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "68164a333ff7dcfd8dc0d1e91e8f86d33857108010daec3c531b48df1243faf7", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "98f475178af1c7e040c753e679a8ab128b0e140b413616b7a37a2bc09dc0260e", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6b545f70cb0fb680824d77772d11d4ac690dafeb52571ab5a3642e7fad8c3321", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a2db357f87b05bbd80ecbe6e71f32fa7a1ae76711de6122a041ee945f16f4263", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6026b80f136670f8376f431d498d0ea7cf07af322d90d865ddf4d9e9c318273d", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b6e03c14b2fe09dbabbee01a4ae1abb1d6f6f1eb596e85560e8cb1644b849d42", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "6e4d1beee91b9c6cd67ee4e115a23e37ec34b2d443b1f9e886f251782ffb5c06", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6a6d57d7b4d1d5179264eef1ed3b57b5f6d095c9f8e108e1049a0512f8811103", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f4be6c88ff1aabfd1b3a60bce21ee1131e23e3c02880df088ddec00d1273213b", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b48ddc72f95997c4fe6e994f093de21c01a660aea5c137b565a0610da0d06e98", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "48d500ba97a16fdec926c80ad85b3288b5d56a8b818b029a34e839576208a0b2", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "cca3330f595d976acaffd565c4ee3392941cef0d9a63f646075b567a30a4c8e8", -"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4a98a23b453f65bb3523aab20f2441a1f026124326d24958acb76e06b29d5b66", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e9cdd3cec40eed1a98e3ee43bc66742fdbedd5508ec63e0f49552d4764a8c07e", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2cf2fd1f7099bb47b8894b60ad201bce0a20ea96fcaafa3327353b28144247b7", -"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3a00f6b5500fc685cc0a852505435cb9f38dd4300b3eb8dd6e16932bfce56277", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b4e0c6b46f77dc201dbce1eec702b230e08e012a0db5ff0e840ae230227299c3", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1caa96a30e1ee1689ac838ee79134ff3d97d6d1c93b429f50c8cb28580cb0107", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "1a0a524049ea18e5c7c963d0e3efa67a7e9deb8b2e64877e02e91b8bbbcf4773", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b788198438949d95433689c69e5c6f457825c24a14566e8eb2e8c60d5a211661", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c6f9ba04b1e0f0afd2e1926ae82a478baaf4462869934c3c1944efc1b606b29c", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1701fd5861a688c152d937ca3a2c2085348ead18f850b14828908f90c421979a", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "818c90dec461149ab452610364964c9b7fedf7f66e867039736b1c3eafabbde4", +"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3d896c6612cdd88e4b5a44dfc3da676b404f56bc52548a7a97b734c10277a246", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "812f1c99f2e117f254e61eb571fd7e590a0ffbd4cc1aae3ca2dd2c35afc814f8", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "94c8b9692a762c48673bdcc6894e6ea1e946ece937f01279b6ba3ae091a09e42", +"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7fb12da4ee794b7dd9047ce735176012f306bb5f22b83dcb6d69a453514d6d73", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2cf11d10ebb0f5d0e234fb39d2e078586a0be8e0b2421ee15c857d8057c4e3f9", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "60e43388b7e8b35ee3287d983db6f268bdc1ca3152a8eb1ea7ae54ce691eed8e", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8ccf16649aeac16d0845fd44fee2a1dbd2b223d367966ed15878478da43e5b92", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d737f4992a9b77b6f1e942ec780ac06eebc1d222622ab93071c90e7c0092d6ed", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c0cbbe91fed1a92fd632ddc86618f0e30ef58d16e931990cc0735b47362ddc08", @@ -2190,35 +2190,35 @@ "T2B1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", "T2B1_cs_test_authenticate_device.py::test_authenticate_device[]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", "T2B1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay": "e4acc5b870a39884108e03904e502ca59d70cf1c4d9006aa8dbcdaa6af80fc79", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "d75bcba7305de08f56f3f5de2301d72b76d65d474d5de5d2fb112a45dacd1f48", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "28da4855e5222dc3f1f4b1487a83915b2414b6c78749d532a86cf50560607238", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "ec822d8fa06e6a29e96933431070bcfe3c44ab50b67a090f3faabba7e4fd991d", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "31c36cad6d7b76541a91679d9811d5e0a0e8e54ca516fb9d25b9a887da76ef16", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5eadf109dac01fb7d394ae9790df1fa1f947c698abeb223343fa9afc9aa3660a", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "6a62cd6bcff8a3bfc0d97a695a5ce9b2a3852bb0a48fd3d5fafc81ca182e953d", -"T2B1_cs_test_autolock.py::test_autolock_cancels_ui": "d21c1abd39d9de0d4b7e5388fdf73ede08482ce1eed78e319395ef9cd5b27857", -"T2B1_cs_test_autolock.py::test_autolock_default_value": "fc209f1517a962c1c820db24cf391626838a897332133404befa866b3c3c6c02", -"T2B1_cs_test_autolock.py::test_autolock_ignores_getaddress": "6d7dfe534a9214fbdd1ea326a376f4d69e2ea57f9ad8351c5aeba484d3c3cdef", -"T2B1_cs_test_autolock.py::test_autolock_ignores_initialize": "6d7dfe534a9214fbdd1ea326a376f4d69e2ea57f9ad8351c5aeba484d3c3cdef", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay": "2486b410339b941704a9ff935dc7a6a86f286963057718648fdcf59333eda1da", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "97a5c9cc15fc4bcb954b8b178770cbd29f52c3dddeeab2323d6e1ba242467672", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aa0d900831d4c7b82ae43c06ce3e50379b7079631141057f0cec600eea33c092", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "6b2c32205253e2993d78e970d90050fcedc8c178236a6f69eafdcf3129b22245", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f2b266f156c38c66bd8c60b423c9631779ae12828343f7b1cf6e6a44f656e014", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4f8adb10e57138c6d0e44b13fdb56550d644ca94a36c00d7ee1c894cbf5ad359", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "974f1403138932bd2f493c8c22eb864a7ba1c8a8ac2e4ce899584ffb06a46846", +"T2B1_cs_test_autolock.py::test_autolock_cancels_ui": "c66f00702f4ac6bc3ab41743c9e9a4770da8754bb83aa8e5713eae69d440b4a2", +"T2B1_cs_test_autolock.py::test_autolock_default_value": "6a4a2bd33e88e860bbf0065da194fac9b022a2f135cc9500a070db76194766cd", +"T2B1_cs_test_autolock.py::test_autolock_ignores_getaddress": "69b434b7bf8749ebcf9a50821f304aca0005195fdd6bbc9579a66048f22ce743", +"T2B1_cs_test_autolock.py::test_autolock_ignores_initialize": "69b434b7bf8749ebcf9a50821f304aca0005195fdd6bbc9579a66048f22ce743", "T2B1_cs_test_basic.py::test_capabilities": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_basic.py::test_device_id_different": "6297507a80a6105805985b094ea72787b9a5ea5162b919ad5b6c1d2cb1bd6a0c", +"T2B1_cs_test_basic.py::test_device_id_different": "32333d6a7e4d200acefb89c004f83a2bb5c0f11e091dd378acbd086534a9a11e", "T2B1_cs_test_basic.py::test_device_id_same": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_basic.py::test_features": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_basic.py::test_ping": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_busy_state.py::test_busy_expiry": "3ada1eb6b81ca1cba6132b590848152d4f95741a58e0175443a634043b6b95b4", -"T2B1_cs_test_busy_state.py::test_busy_state": "3bb4c4aa4854c6d542c2bae491cfe25cb7d9128ffa2126f1e59b1acd2fa27715", +"T2B1_cs_test_busy_state.py::test_busy_state": "5b8376a84d90e57722b642c34c590dddd0adfae3203dfb7faebf60ce37160a3b", "T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", "T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", "T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", "T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", "T2B1_cs_test_cancel.py::test_cancel_on_paginated": "0561a2e23122e7ca49c00bd4f28c193f03126f8ee99292cb163ce48da8c1ce74", -"T2B1_cs_test_debuglink.py::test_softlock_instability": "3cfe5b39e49fc6a9461c9f55e484acaa81b0da0d71f0612819bf88a60fed17ce", +"T2B1_cs_test_debuglink.py::test_softlock_instability": "bb653532993c499a94dfc3954d09ada9560e1224d04e8d584e15231479c9c6a9", "T2B1_cs_test_firmware_hash.py::test_firmware_hash_emu": "f7e29f0aa9167d32f7ae0f5475c29c0f0fd39ba665c8e4cf4638ff07447b3c25", "T2B1_cs_test_firmware_hash.py::test_firmware_hash_hw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_language.py::test_error_invalid_data_hash": "19a433acf4351dbce77ae09e1e7ca459fff8644639e6c8f8e809e87cab219ec2", @@ -2233,7 +2233,7 @@ "T2B1_cs_test_language.py::test_full_language_change[es]": "1db03f150dd5b88c7912d6afe88d7869ca6ab407e58c59535de56440aa9c05c6", "T2B1_cs_test_language.py::test_full_language_change[fr]": "0263ccab0d6aefd19896c2d96a7f6f9a8871257392fcacc0c8fee6212ec340bf", "T2B1_cs_test_language.py::test_header_trailing_data": "abbf6b257e8db657a83cc80f0fea86a46fadec4aafb7fbc3bf8a50123cd73635", -"T2B1_cs_test_language.py::test_language_is_removed_after_wipe": "3ae483e3963ca8fcaf29070da360ec683ab9c29729f87be8996ca09f8a509ccf", +"T2B1_cs_test_language.py::test_language_is_removed_after_wipe": "d6a85c0986ec53c3cc4ece6479d6774901c619de301d5fbd6233d86487f3ef07", "T2B1_cs_test_language.py::test_reject_update": "a5bc2e6015b97e3cfe40b400b8139f2e9890d391bca3f934497b05b3308618ed", "T2B1_cs_test_language.py::test_silent_first_install[False-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", "T2B1_cs_test_language.py::test_silent_first_install[None-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", @@ -2243,17 +2243,17 @@ "T2B1_cs_test_language.py::test_switch_from_english_not_silent": "fb2e18e513a44a58cd1e31fa563c3c9783d5ec0a692ffb0b6635b833e13d76d5", "T2B1_cs_test_language.py::test_switch_language": "0c2bc505e2a70aa7f544d15a20c2cbec91ae70da6cc48fe6947ffa4de9bcebda", "T2B1_cs_test_language.py::test_translations_renders_on_screen": "fd543359e3be7f3e65c8e1129df243572305b0a458997343524d7f79a553fe74", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "6f776239150a1ec16f20d242b43026cfbdf83c8d2d1aa44741b54e0699ec60b3", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "a24bdf53d0e25134598a274d20d95a885eb4d06d5b258b6985d1a5f00d8ba9f8", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "2ceb28bcde3e1af715411e08be2858b0f3fd4f3d7dcf198776e66449f0055a16", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "4bd7fc29a9ff8ab05c5bd5631800c6cb6884585b5eb63f1cbfbeec148a5477c5", "T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "f0b4b3f8352e82e83de2b756ce4a88c8de6937213054f0b7eb7fa990b880653a", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings": "ce5645274b5fc13450d0a790dd1d5630c02a9b0495583bdb9db5cdbc6e1388e6", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "a95c15a8583f1b50942df922698dd20e35e2f7d09e526738cb2ced20303efc3e", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings": "fc8b13033aee5898ee17a7da5bcb6faa876f2f078fb92829865f4361aa9fb17b", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "9aca3b519b6024f2026a27d93894745e5670ca1dcbbdda6c476870ef9130eeb1", "T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0f1467141822cf93346a757aa1d3e0f71ea2ac68ff318c5b6b91bbb80e74464a", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "487177fc514575393734e77c463767580be49587960c2acb21b24e97a17b20be", -"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "e38272686dea67f5d13d89589518db14a9481716bc7ec5b1cb7e126dea09a373", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "a886e0b0c49556e30581ca61c2765d4910d84c61811efa2a1af8e08622db8620", +"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "fed60c1103e3ac497cb19ab1f484bdf154ca63894da0d22f4a0fad61e5bb18a6", "T2B1_cs_test_msg_applysettings.py::test_label_too_long": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_msg_applysettings.py::test_safety_checks": "c663fd32d9d6e18a0685cd69382e433f480c82933d5a84a3a53d8dee0d1d8f80", "T2B1_cs_test_msg_backup_device.py::test_backup_bip39": "51ca4acfa41ee2b628f44379bf763d0cb349b97a268c39de1b3422d366dba05d", @@ -2267,54 +2267,54 @@ "T2B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", "T2B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", "T2B1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "567d0fb48b141d6d92f39f1adff92de5ad3ca27f77f004abd46a8862d61b2d43", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "57e90fba05243baa9f7c55a08c8628f882d6d906a9dd62d8ea419d36ce8442f1", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "89f27080a046d8dba2154cf898c5c3374dff08890ee76ee3544949df18b8da4b", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "f99a59610ed9160dc805420f331d6921824e9f3559aa6d34c3b028fade052bcd", "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1d56ba8d29b61fc3d41c197093da2fb465d1f0ff87622df2ceb599420f8cb78f", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "375273cd94cf39a22e9fe082073ed5b390de87a366dc26490826eab60f7a7aaa", -"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "70386aa95061c4549f54cb2228b92ddf10c9d85f6f653d9185089aafbc8e9db7", -"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "fc9c7caa47ac8366e1bb4fc0b8e781b7063d39f20eb03344f1cb0aa95f7df349", -"T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "6d92c6a4f45a1751ed3795bf424c905bfb40f1266229be7b8fd23b2c9a7aafef", -"T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "391220bb0e17eeb125a0ba7589ff6623d76b2bf8440aaf43d800b0b8ceffc9d2", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "668bbacaace228ef135da4cb1ee5f4404cc6a45e52ea11c5421f6f49ef09d240", +"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "e00e445f8ddc70f6158fe9026c37b33b00b23bfd28b7cd1f4e53471d65f2e01a", +"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "12e335d0db4d423a6c5b42cb12c769080360e46ebf2ad03aa7b26e4ca04953b0", +"T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "f65c1846c1766449999ebfdd0c8bca3408ad90847c2c2f9e207681d2d11ebb61", +"T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "d96659f742ebaa490216648602a45445d3a830a733f407d7f3b63350ac9a5418", "T2B1_cs_test_msg_changepin_t2.py::test_set_failed": "77677a25860127358ec60b8ddb191b1a6adb3f88461434c34b36db34eb33139b", -"T2B1_cs_test_msg_changepin_t2.py::test_set_pin": "25eacd352596d8a7f5d83a118bf32ecb228ad4b1b92320730c3fc093b5ff9c7e", +"T2B1_cs_test_msg_changepin_t2.py::test_set_pin": "a0bac985c7a66bfa3d775b70c1e3dabcb7ec618c985cd1b0e0fd061c20c4acf2", "T2B1_cs_test_msg_loaddevice.py::test_load_device_1": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "df51c15b53fcf7544fbefad78084ea0218f647ebce87333a011220fb7b79c85a", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "cecd17791b52f20a06099d69d6e52856b04dc0be82bff5aed29d4247611471d7", "T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", "T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "4eaa579cec5ea98a0a663dcd225638eaf417cd01f5ab2ce2436a96d50654b2fe", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "02d4b461cb2d2611d2913648e47162a057c0b28bb2d8786aceeb72ecde71f22d", "T2B1_cs_test_msg_ping.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "23dec1004dafc2f7c89663b3797a5d20e5786ed051c4226310b61d278047d62f", -"T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "6297507a80a6105805985b094ea72787b9a5ea5162b919ad5b6c1d2cb1bd6a0c", +"T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "34f48d5d1c1c8b81a1c8590e63afea7e489302086b65f0e4cb99673178fafd5d", +"T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "32333d6a7e4d200acefb89c004f83a2bb5c0f11e091dd378acbd086534a9a11e", "T2B1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", "T2B1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", "T2B1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", "T2B1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", "T2B1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", -"T2B1_cs_test_pin.py::test_correct_pin": "1406001cf897efde1c6b431e4ab6738fbbe6c1165c0954db0ee318b32d1c4c16", -"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "bb69d4668cff5eb0517e34e3b58308122cdf8288452f2f09f76fb52cb6852e9a", -"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "72f00ba9b833ed091df10e375a996e56cc17529c03d0984a26f1133adc616247", +"T2B1_cs_test_pin.py::test_correct_pin": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", +"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "1a5b54970cbb1063c5ffb6beaa85af26756b15f04a2d498857771e504c9aaf7c", +"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "4350872da469a4ac52d365db8e5461f609d73c9308626e7b3aaeaa3d94a8f599", "T2B1_cs_test_pin.py::test_no_protection": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_protection_levels.py::test_apply_settings": "aa9ce7c028eb5ff7ea7a9d8ccaffc3cdddbef9c4d6ad9567c10385a2877c20d7", -"T2B1_cs_test_protection_levels.py::test_change_pin_t2": "2144c7b84a45efbc176bffd6aebbcbfeb602bedb6948474b485d02d4d6bd6c6a", -"T2B1_cs_test_protection_levels.py::test_get_address": "e65ab39200c44c1417844823a6e78da8fdd8fce4fbe66b99a2b8c50bbbf3cbaf", -"T2B1_cs_test_protection_levels.py::test_get_entropy": "24eca43268845aa42597e492722290a85fa067e1f4a3485ebfc638db8d9f6e28", -"T2B1_cs_test_protection_levels.py::test_get_public_key": "e65ab39200c44c1417844823a6e78da8fdd8fce4fbe66b99a2b8c50bbbf3cbaf", -"T2B1_cs_test_protection_levels.py::test_initialize": "48f0ba1c3e264b529a4530b2f667ad07b5f9629c0a5c44f8e64ca69c72137920", +"T2B1_cs_test_protection_levels.py::test_apply_settings": "50e38c7fff7e4d0c7ad05fa4d7a535019399e6ef113a7b4d06a57883436fe6a1", +"T2B1_cs_test_protection_levels.py::test_change_pin_t2": "71ba1a4eb0f6ab7cb96d75fa6e6a0dd6680519fdfc426e05ae363c99aa131ab6", +"T2B1_cs_test_protection_levels.py::test_get_address": "5d239e0c784ccbf33e5563253d705be65408318b95da2165beae47f960c0b59f", +"T2B1_cs_test_protection_levels.py::test_get_entropy": "43e05f132a20422b6613dbec531a5f8d945e9944b3006a7d47e67a7a5739c953", +"T2B1_cs_test_protection_levels.py::test_get_public_key": "5d239e0c784ccbf33e5563253d705be65408318b95da2165beae47f960c0b59f", +"T2B1_cs_test_protection_levels.py::test_initialize": "330ffb18886a88c7e2b76048b18073c8188edee74e3b3454af69b99c2f15036c", "T2B1_cs_test_protection_levels.py::test_passphrase_cached": "0ca4df8cfc49be43d21350e06d1bbb218736cb534c6f18a4c93a157686197339", -"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "09c8fbddc79247e0d34ad5fd0223bb6929937aed9e06526acde0e544bae73b14", -"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "cba2a22cafa905cbe40388b035cf4505a8c07fddf8bf8d9d1de62651015b73f3", +"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "0f07eb05ccc503310777d86490d8d60aa842a08962084171d4da578ccb5d9cc6", +"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "f2c13fd7e1b8f2c40addf5d28cd4c51aa9e5d234f2f3848c8a3d27e79c3428b0", "T2B1_cs_test_protection_levels.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_protection_levels.py::test_sign_message": "8fd7a240caadac30c199ef819e5e80c84b09d0ee241eb8141cf67f0f724193b3", -"T2B1_cs_test_protection_levels.py::test_signtx": "379c71e1fb213b5cc1feb4dc446ab929b8d25b4dd2492fb49bfd893dec140632", -"T2B1_cs_test_protection_levels.py::test_unlocked": "d45aa3fa066835bb5ed5c7f803fcd0693564f2a84c6fae377fc3fa13c6683429", -"T2B1_cs_test_protection_levels.py::test_verify_message_t2": "7adb0534531529fdf43625541659156273d7daa7d2d3394c18ce4054372992dd", -"T2B1_cs_test_protection_levels.py::test_wipe_device": "0d00b5c915f5b958051384fd9075a3c752777ec3e6b4863e444b7d681e04ab79", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "3cde97f160d23c031bc9e14e16d2d03fa8bbe229fbd05915e3855c2e6230837a", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "d6de618be8b4936659f42442375169903247549f15e680721c387952b2afcb75", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "000f2d238b51506f1bb5e52fd30d5cb87c56f2be08451eda06232bafbcb9b296", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f0d6aabf51f98318c4d9ba50650fac9751c5a935ee5d2e17fa47afaaa689c825", +"T2B1_cs_test_protection_levels.py::test_sign_message": "c4cdb3ad33feee3516afea37b148aa499d51f33f255459defe411cb6cf5ec904", +"T2B1_cs_test_protection_levels.py::test_signtx": "a7c73f78cd6a8bf07e97adb4bbc03b36842a3ede495c13c97df178e58432fbca", +"T2B1_cs_test_protection_levels.py::test_unlocked": "161d578d884d5f414bb362dba46df7b939a89e02fabe079feb580ed615caf55d", +"T2B1_cs_test_protection_levels.py::test_verify_message_t2": "da169a7cef407a333af12fbef1ca8b264e194d93ed736109b16fce372c4851c3", +"T2B1_cs_test_protection_levels.py::test_wipe_device": "6adb2d35bee471dccd4d66d48fc48b98fbf48db2a188b6b56aa4b77b7779a074", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "da21a8734c2fd8ab165bae093d332758ce8b7ca9044751880f6771c11f04f257", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "d926f6c22a05bdd167e9aa7c3444301c534c781396ba18b4d60ec3e707ebe8b8", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fb69b0dc5454c73e2cc06053f47230fe567923fcccd517a4806f42b22896ed42", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ef03eb6d4dc1576786fd9bc7e792f6260bd14bc021c151a3039c99b4d1614701", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_clear_session": "9ec6f277513545d0a4ce3f94de451f47dada0868bda3e989bd458f73566a98b2", +"T2B1_cs_test_session.py::test_clear_session": "88c8146d79ce538ac2215eeccbd3c0f2dede590f39b156e825198837496534ce", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_derive_cardano_running_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_end_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -2377,8 +2377,8 @@ "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "f05be5e263e97d8ec91dc113e8289fda07acabb87acc7d5159a6ea53d74e7671", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7d7657a854dcf7e21c0ecbb08087edca6f2eac142d526ff0c86ac3343c5072b7", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3cc3122f8ebe8d3d19b709ff4524425d9cde56e79478a52419ba7a7b6ba06de7", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "6038ce950ffe6c7e2f1ea79ae1d481c78f91267ec23d320d1fed4a4b7e47246e", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "6038ce950ffe6c7e2f1ea79ae1d481c78f91267ec23d320d1fed4a4b7e47246e", +"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "39cbcb5ae5b13a38da67a67dde0faf2f6b4241a1221b700d4d470456992720ce", +"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "39cbcb5ae5b13a38da67a67dde0faf2f6b4241a1221b700d4d470456992720ce", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a944e4159fa05caf2445f7745bf02e9135ac786a5638760104e47460b6a09f85", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "e7d320723a1aff20c75df42104a5dcba078c81c6476c86d456be847f95f5038e", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "e37748e9115109a9f39caa335f0dd201dd21cdf43b174625399dc55355bb28ec", @@ -3390,57 +3390,57 @@ "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "ed95b085d1c98f2ca465dc069d0172da0a5198e1590e81527ec2c6fd7c9e8c1d", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c1b1b62f0ba8d32eb40cf342d86778e37afa0ea28508a64fffdd3af2bc143d1c", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "25dee7b3acb0ba9abfa6df110fc900134fbb8af93f27ecb7dfed506d6eea0ab1", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "bb747c243439bed087304f18a3f1073dbadeba27ed1e5e48bcee75d035e398f6", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "ffa3187636b6b45f8b9900573a2567451e9b47ef33bd05080806daa2aa005d4f", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "b50e53567300a66f742944bde838bafee9786e7f42a5884433f102717cd3cb31", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "796cfa7a28859a30f5ad60bcb7cec1846e3e2f82552f7c452b464351122e6fb4", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0e3628e04eb301df47d05f6591e2aaaf95fedbb64881a3a9c3ae3c51be4a0167", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "4a0826caf62574b42880b889e8f1a68fb345c0467649d1a7ee7c951dbda1be0d", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c04f3fdd0fd35ee22592336541f2a7e328f0a0b3f5a345c39d3b4f1b74eacd01", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "0cfa236541f2f6a656d5d3ceb4355be447df0c9ba6c7d63c9f586ae36b51fd3d", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f92ea12c9cf85036efb50f11d9ec497d90bf05ca0882fee4e6a10e2b6b4f415b", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "ce6c73d7a777ce56fc982a8f2ae9dcd7d83d42ead5f7bfaaa12d9d3bdff48908", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5023107c8974c22a41f7cc638a4b6d6feac4f2375beae624de32ff81edc6bdc6", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "61bddc148cf700f8a875840067063f0063e7bcecfe3a5578266d16bec3e782f7", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5023107c8974c22a41f7cc638a4b6d6feac4f2375beae624de32ff81edc6bdc6", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "61bddc148cf700f8a875840067063f0063e7bcecfe3a5578266d16bec3e782f7", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "42855d1a57a746273d7e3c00ace31e2f00583e28e7fed60dcce5e75b481b95a5", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "37fc0027f42f5f72b877781c838edeb8cc9bbd20d31cb58518a8d9a0719056b4", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "86975eb0d942d627ef84ff1f89e87af9dc3debdfa570e4138580073c7ae38756", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "4a0826caf62574b42880b889e8f1a68fb345c0467649d1a7ee7c951dbda1be0d", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "374fefbcc5da54cbb4241d41f65bd002c1e06876dd24cb89319dcdb544ddf249", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "9b46bb445b7ff09d3862a326d6d1d2c69ee386899a1b11d7fc6c53163bc44d42", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b52e216a5c16367988fc9e56fb6e8133a78ce5cfcd70ccb6f157a5c9148c5579", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b6d7233799649afc10a09c8b446646962005fa73d7744aec0d0351147a14b353", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0e3d370dc65692eccdddb3883d6164f6cb79123082c65b5bbac6372ecc7374b7", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "879c74a86c42a8276e1d987522e7a0c7593e791b7e9ae3461232760db178ea3f", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "637657c05d54b54e6e3ff2bff7f462ba6b323034626b0cbc18a4d586d424d7c3", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "366920d3ba4d0e454394002cc51ce37fd5a74ddbb3f51572a9cc8304103a1077", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "717f0580435a3f21e5978242e52bd628118e8e66f71bb05e7812752093a34c96", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "92ec37213993f8f3fa7e19600bd7fbad6f783dcdeb4fe1bd735bd77de36fd411", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1ec6376628c1d77646f2de9e9d72081ede6adfd7b85f7a565953cea1e5126b72", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "4fae023884340ad9e2c6feec3a82d335e6d558e9eb31fe2b4f50f02b89ff4462", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8532888ff10badc8f5191c0a13e63cce2565fe2687aa62c8baad344e823dca9e", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7fb893232f7bf3245bfe1c65e2c4b5d97ca6cb71caeec089e2179f67d7adc629", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "95182882648dd4d4c6c028ffb304579678131422c1c21d3f2ee428015f810074", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f5887c8e5d502794c72e7be33b07094dd54998ee8783bd22a48b58bdc980b331", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5c6f0b7e5ac834464d8b623ea02546776883046d3711ebad65bb8a8d756ab6c7", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d01970d5a515550b42d3f32546cb7acd53e0228c7ff6102819b452ef92923f05", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "66986f00d636c3a38beac842384cd8cb930ca96522e07724b56177f475e10e89", +"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "f6260a5d114d7c56402c4e62448f61facd6594115cc4b351f03b0881584c8d6b", +"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "82159bc98b1f406aceb1ba9f1ab90f7ef6fa2f42d3ba2369284eba8c776ea1bb", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b762c07a242113aa35333d1e063d08092bd1afbad06fb91745d20e22d5121e1a", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "1d8d91394f70ef7ca6398f73fcb402345e9791a995fcdc858d5863375f72a0b8", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "f9cfac8065d55d0caba7d7b0ab7911aa2ddfc5234b495223fdd6f32b223a53fe", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8c014516e52e2e37c06e1504ce7c715a2ddebc699a01b8245b7a253b8d0815cc", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "a5924b2cd7dfd2262dad2ec7c586fbfe3d790c53ad58927c08c3cf7f08967cb1", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "356e63b44217f9319525b841229b836a1291618902783de58299526ad7aa7996", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e72ef8490fef5c6b8cf4054a66bf970f2c1979fcd40548382cea609e95c6908a", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "356e63b44217f9319525b841229b836a1291618902783de58299526ad7aa7996", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e72ef8490fef5c6b8cf4054a66bf970f2c1979fcd40548382cea609e95c6908a", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "3e79dd696b7f3de7bcfd7738508fc8888fbf27b83b8a4ae5fc2578e3edfb26ea", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a380ef576293eb2dfc5e66a4c7073377a84fc73392bf74bf0771fc69751d5c6a", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "0c097002ec61a0b6b72c8837333520b8e14c27503bd5fc8958712bb26e24ca30", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b762c07a242113aa35333d1e063d08092bd1afbad06fb91745d20e22d5121e1a", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0afdd93910244781cd37ab92f307080263565fdf3a12ac4a4be9a04a6f69715e", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "f98769029ff10a6b8c55806816c24547cd99e460f1193cee3f3091a89bc44a68", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "6f480ca4c557635ce5fe2f1b8192b099ca626566699bd94f799da3c88b663fe9", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9ae9e7de53e181b2685bc207bc43e26e20cbdf9ca670774bf311663a8e4b0a69", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "56d2d704ebff84baec48007365b901afc071702094fdf0b5c79962ea4649d910", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d0b175ac578373922a125a236a8630f714eec13668541983f35b66990577e817", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e88ffeb56b6050f66b3ffb5a1733faf74e73597e171faf98e6935bf1121e5bac", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9f814233f2172617f42deebd6d8a39f8e238df95c1ce2085aa74644b6b328613", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "07434e3fac271e0ca16deed822bf8dd52e989d3e8a5fba71a1a92f2d28727d75", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "1ea1e5980ff731cd7a396ef15a51156ea7d1fccdf47daa1134b1e779e79c80c8", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d427f608e1cf73c70d9d80693c42f93a05718b605f2b4dbd3236dcbc4bbc0083", +"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "221f7413fb80a10b4b1d397b9e937f6b2a04d6b2e0c3bbe7da660561cd30ffcb", +"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "30143be8528e00eadf8e42b2d744036de71d60273c7b4983a2f7233aae30ef39", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9ae65afdfa112faa286896b51941f8b572dc308cb1223bccab9db978005482ba", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "743217fe2cdf362c3c30e825f182202132e4673ce880a9778bb0f4483f0fd38a", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9700ceb77e6717178872e70d4c07d75039c47a0138234cb24c158e987e86341d", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "70024900b2c10e936bed74a5a146191e4d1a4170cc3b342b20e9b5c9380845d4", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d72c9102a4e4332210c511c5a89a327092e92279ba4c3359178fbb6d3139d958", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "15d64510b7ef87f60ce2aeb744e38fb57da97a0e85170cdb6743cd80eb4b25fc", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "16d383f7ce236bc1eb209f276ce2244e3793dc6a7219d7154bbe187b44465203", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1a8d83825ddb43228011a7fa923f82ea77b0bd4a308285b59d06915f94fc8963", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "4bb0566d836b2db3c930fce054dc397de1273f7530f204b1857993750f92d31c", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "942e5c3fbcc258c2451c499a9038eb6ff219931daf0f90c3dc859a3e50f09b99", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "02d9e06bdc1930321b2a9bbce4a6f9bf6c8f4b25edad90227b916dbd8b53531b", -"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f4e810a60dd262ad7844b9346ddff531bf3e5fe1f0131051afde3c8e318b9cb7", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8a08786ff6f7557370118325d584b288790b8893c24f5cefb22a4c79475caf3d", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "99820ef8f57c7001fd424d795ed9ed7c2c4ec20428ec714f244ff223c7922e20", -"T2B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9cdd6db69525b47f8516bb5a1160f0a5201779d815b73ea8472f934e40657d68", -"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "426ec9b73c0a3f62c7df0ce708479737fcab604c0d3e78d2d0aedee24797d4db", -"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "821e9dc0b8fe56f9c0bd6e8aa0621b06861d9560da0f58fa3bb40b6a52ebf3dc", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "33cae98cb56cd212db3375023f387571fcab55af794e47dedc2dce6a838e84ea", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6db29d4c9853465f07d8511f5feda4dece10a1c8f0dc30d990d40d4053fa47f9", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c256a0cdb030b2c221da05af130f45f45ec00421c99529590540acb788d9944d", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "82e6b7415db25bf8284de57b10c7b28007f1b6236ba3757357e6b64be5f9c2b3", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "5545460cb4e2762950fbbc87ab96aafceb2d9b692da81f8079c4d7dd3bc74421", +"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3992cf6d8cc0a48ac57fbb631ebe7a3c23205502835957bd26fe0d92498325ce", +"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "62324e252477f5d1b7a0dfc6836a0df3d56beb4a11ae1df4b6151fcf8a2488a4", +"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "62028751ba298810bf61a54bb5042ce7a4cd87b5380a85377a09f3de056f39a0", +"T2B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b2c1d6d9e7539e2dd42c285102e1e622a422ce1611310998e2e06adb25850c88", +"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "9b281f721b2ec551aaec0319ca769bf72d8dc3050bb2caf34b5a05c760b4f1c0", +"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d16e8f231fa2314c8db94bbaa23a685c2f497e138e52da37fa76ed7506cde767", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ae44a9e4ed76fe84dcf93d1d2cd7773ab322e0516f6019180fe96a44196244e0", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2df63bd0ddb47544520de33b69f3000d0a1396fb419e874482953507cf10bc97", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6f125524d4131b42c889eb584f891a3d1e2ea94f5b609eaeb58846a39d92c12d", @@ -3581,35 +3581,35 @@ "T2B1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", "T2B1_de_test_authenticate_device.py::test_authenticate_device[]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", "T2B1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay": "d00d4b470ec6816171d31372e42312a6f7984c14ab2848f0dbc2f280fc0f2549", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "8cd92e1fc03e34e0380866dfd0f67e40be1a02f9e0bfb7cb13182a3861c35df2", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "a30a777503c78911128856fe5b096a52f38740dd5cf3837b93f6f89f2f4705ec", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "ad9091ed758913c12fc24abb4b466eec6ed51ccd897bab2d76a7dedc907fe71c", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "c06f6288d8c3cb4b8a9ca09c1d87b85c0a3c453f5d786e964444fa9ce414aa0a", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8366d101efacd651ddb177f3fa0fc50ef5ccfb4566ef515d6c6dbef026dc72e8", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "d2d6d70e61b4ea8543b60da18ca1f798002828cb47712604e9afbca01b39a694", -"T2B1_de_test_autolock.py::test_autolock_cancels_ui": "dedfed3b218c42df786a1c4831187e8a5ed479fa709a820d1f747d936e1147b6", -"T2B1_de_test_autolock.py::test_autolock_default_value": "b5a25b772a93561751339d077a30992754be8c8d72669dbfa08a904a46dedb15", -"T2B1_de_test_autolock.py::test_autolock_ignores_getaddress": "8ac7e49b4c87869fcb40b29ff7e9f9b6e9bfe77644bf5b4637d51852c0ed6f0e", -"T2B1_de_test_autolock.py::test_autolock_ignores_initialize": "8ac7e49b4c87869fcb40b29ff7e9f9b6e9bfe77644bf5b4637d51852c0ed6f0e", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay": "1c44e08f6db7f11e4afb30c530c5114b59051334655e417a48f8c8f4f5a5d142", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "18b89301d20881567308bb6cf872ae0d0b084fe1e9388739406fee22771ef8ed", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "efa393cb0b6ff03e9125b03eb01c517fceabbe54cf3008e0875a952a1de6ee04", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a25081f7a53d14266f01f813bb6c06091db7d87545c3935f1fe68f12d28cb375", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "14c46c8f75066ac393cd5445519f5572ac043c1eeeb37338514a368c53bf8cda", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "cc9b566dd2304be61feb9c578555cb42946a47b417763ac54be6cf340434aaee", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "291f4dd8118016e1aebdc3a776a4d674027972eb04e0eb877a28c8c347db0511", +"T2B1_de_test_autolock.py::test_autolock_cancels_ui": "fbefa6f6d0b6774549b7392d0dde0edc6d49d9a520d244878d06e70fa3028674", +"T2B1_de_test_autolock.py::test_autolock_default_value": "1af28f36274380ff170db0bc7eb3d797e860220e9362e2b016453a84de260713", +"T2B1_de_test_autolock.py::test_autolock_ignores_getaddress": "2d41871268f8c8e5028afa03917a34f2159abaa88936f2f398de26f0c8ad7006", +"T2B1_de_test_autolock.py::test_autolock_ignores_initialize": "2d41871268f8c8e5028afa03917a34f2159abaa88936f2f398de26f0c8ad7006", "T2B1_de_test_basic.py::test_capabilities": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_basic.py::test_device_id_different": "e385b141ce2b606f086a4c1c6644e60bfb31e2c72c5f6cc3d8c677f996c7b523", +"T2B1_de_test_basic.py::test_device_id_different": "fb5b17f7f35230b2fbe04cb96bbc7ac3d768b35926f35615e8efce5ad6f7f14d", "T2B1_de_test_basic.py::test_device_id_same": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_basic.py::test_features": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_basic.py::test_ping": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_busy_state.py::test_busy_expiry": "f060bd0cb42bced5d02923279994ebadb2d6bfdac236f2bf62fb204b1f6f67c7", -"T2B1_de_test_busy_state.py::test_busy_state": "6c8ec720ce4313ef7c3809e0a5d562879be9faa3db24c3cb28cbf780e760d85b", +"T2B1_de_test_busy_state.py::test_busy_state": "e4b37853d250f196cf3cd8ce56bc63d4217bc02c6e56476bdf5d6af0a598b94f", "T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", "T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", "T2B1_de_test_cancel.py::test_cancel_on_paginated": "22e5ca5da1248baddd00fad0a3c14072719cf8db8046dedb6f67239ea019bd6b", -"T2B1_de_test_debuglink.py::test_softlock_instability": "2f3d6d49f89438c57cb46590be9e7e17e34d353f26b8b3fbbaef5b6a34b878d4", +"T2B1_de_test_debuglink.py::test_softlock_instability": "cb093e0041a2cbdf0397ef7ea4a364eb24e155b1cdb61a23980755ab32a61fc2", "T2B1_de_test_firmware_hash.py::test_firmware_hash_emu": "b64812ac9c7f3d3f34118ae559f44c9727e02409211003966ea5475b026225d8", "T2B1_de_test_firmware_hash.py::test_firmware_hash_hw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_language.py::test_error_invalid_data_hash": "001546a6d7d6fd797f5d358a85afbb653ab3dba0ee15650b38981149460e33ad", @@ -3624,7 +3624,7 @@ "T2B1_de_test_language.py::test_full_language_change[es]": "2fd72d78dd1d1176ac6aecdfd3ea790aa2aafac0d705b406d44c0e9c9545002c", "T2B1_de_test_language.py::test_full_language_change[fr]": "fda57886e4c371f3219a29dd54b01de43e96bbb94a6fcc7d6c9e1bd1e7e30ace", "T2B1_de_test_language.py::test_header_trailing_data": "8d546f37251d84f6493b199cb84219d818def9318c908e3fb7feaba788862028", -"T2B1_de_test_language.py::test_language_is_removed_after_wipe": "c0cf6626c33349cb62e1bfeaa324aeca236f7e2bd2c846ebbff217aa2a95fca4", +"T2B1_de_test_language.py::test_language_is_removed_after_wipe": "f78894965f847ccb984358a9a3e9b53a75313301bcde51710de511af72f5e4a8", "T2B1_de_test_language.py::test_reject_update": "c030eaa1b84ee548a68f0e20ad74201cbbeea1f09095dfafe0465020f3215a7a", "T2B1_de_test_language.py::test_silent_first_install[False-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", "T2B1_de_test_language.py::test_silent_first_install[None-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", @@ -3634,17 +3634,17 @@ "T2B1_de_test_language.py::test_switch_from_english_not_silent": "734df403a42da192b49b0bfc990db9f4b84e118c0b678da7e159e6a0c2a86896", "T2B1_de_test_language.py::test_switch_language": "e922d8763c8d4c700a92727e4bdf3b7ad962d1980512c38e66e1aad8979b116d", "T2B1_de_test_language.py::test_translations_renders_on_screen": "76682d785587a89e97813092dd09f407f8cbc8c11845f84d7b891fc25d21ad0e", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "876c1685a5b5cb8104af1bf2d79234bfe7e8451bc67de9e609da658efa1c62df", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "e5180625f1534c840329c2f46c44445d942a2051135bf8270504b43e2abc8012", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "b86dddd030829a7bd53fcba8711b0dc0942113c37a1a27ecb3b8efaa5abd8436", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "cfaac27f3934867dbb4eba7c80bbb258f5d29d475ffd4567a449c536a39424c6", "T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5d88ca231c16a760f9db2005d7cdb24ed282ff7377026a947e023523654b2971", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_msg_applysettings.py::test_apply_settings": "6f7d8210c403a81250b9d0276f817392621b78e6059f0616875485e605fb5bb1", -"T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "03161eeeaae6282787ff3f765b7935711d975c54f20ed9da760ea7986eb953dd", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_msg_applysettings.py::test_apply_settings": "ba73d0e6ad5eb61351d009b2a1849876fd24d374be3f272100a7aba4f59461f8", +"T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "4c2541a061fd0949af7b0e835d63c229ed701e84300f91c7467618c168c9ca13", "T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e55071aed329923cf60c90370319a7024f24b3ebc209a1270bc9e6ba19195505", -"T2B1_de_test_msg_applysettings.py::test_apply_settings_rotation": "8aa851de9542b1fa09c0663ead94994203c8040e2c832bb40e01ba51fbe6b2dd", -"T2B1_de_test_msg_applysettings.py::test_experimental_features": "f5df5058965c4398b3539df50a4aa7ac77d4b40e876685a8f4a2e54771283f91", +"T2B1_de_test_msg_applysettings.py::test_apply_settings_rotation": "6f7c12dff31ed9db8dc644150b7c0755925973e81852212ecc14e69b241b4e0e", +"T2B1_de_test_msg_applysettings.py::test_experimental_features": "486b4fdaf01f0ec1e078d6972cebafaf766958a38a711580f39d4f625267b540", "T2B1_de_test_msg_applysettings.py::test_label_too_long": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_msg_applysettings.py::test_safety_checks": "91668616d03dbdbb3400a647bb89ecd1195b3fb5d8999c6229ee91b934ab53d5", "T2B1_de_test_msg_backup_device.py::test_backup_bip39": "e1bbf95c340e6262b00c14a485006470a14f282a7fb487cd8d40489296c37884", @@ -3658,54 +3658,54 @@ "T2B1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c925fcea96ab652c5cba68ecf4c6cfeb069da7eed29037211d72301b0e34fbb0", "T2B1_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", "T2B1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0c88c1506e0d80e3440ba7f6069e43fcf35dc3ed296c8310f6638d11cdc7dc93", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1325026b5ec3b3bc60237082d1b58b6611b799ab54e1964e225d795e52e4fff4", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "71544cf341c0e0c34c10059656b3edce840f15eb906bc582cfeb31d0457996f4", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "b0f8b53a7845ef472a2b1ece1efecbda6ad54426a9ef5221f9465a6549a0bf55", "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5ed7a9edbef7af20347d0d89bfd78e877c19e28c59a0460d61c9a30b4efe2eca", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "dfcba29ac3a43714f69bc8dd0bc2fc2d05ce60c9ef2a0b4aa5a53c07180a44cc", -"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "1c1b487d28fa6d1d7d60918aaeebb0c39a772e3d4a7b3ff7dd3596c4a8704077", -"T2B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "5ef3dddc3cc1974a4e15a13350a7959192319bf40f5bf2a1b989b3b3d4165192", -"T2B1_de_test_msg_changepin_t2.py::test_change_pin": "3df9a2c360f67026a145d74b059ccfb8ae353859eb14e84d66b3eb28bdb4af1e", -"T2B1_de_test_msg_changepin_t2.py::test_remove_pin": "4c1dbafc3b02ad5ffc5f5404f79b1c56efde82e2e1a7ceab44dddb6544e94efd", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "40c8ce51447e16b4b87c33226ee83967c86104bae8a74b749bd8b5179d199631", +"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "35741755bcbba6364090441cd7da11849778abaa92d7c1885207c58ed0ef345b", +"T2B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "0c8cf6cf957e577cd270dd4f27ff97e27e5eb61f42e027a0157d6f844e4b51ea", +"T2B1_de_test_msg_changepin_t2.py::test_change_pin": "14382cfc204e82c0aa3d8fb0e16d1f2c67a9bf42ed3be0e076a90d928b3ef120", +"T2B1_de_test_msg_changepin_t2.py::test_remove_pin": "c04fd6f59907a08efba7f6ff3be6c69bebb6d7a8c886c5cd50570a9f2cc0c373", "T2B1_de_test_msg_changepin_t2.py::test_set_failed": "7a66af5eaf3ad7fa6a77a65a7962c81da50ac048320681727b9a9ae397b7d9bd", -"T2B1_de_test_msg_changepin_t2.py::test_set_pin": "b4aa6064d8f7824e034bc7a1f46103c1529d9de3a2bb83d70a5bbc67be2547cd", +"T2B1_de_test_msg_changepin_t2.py::test_set_pin": "dee45ffb5576a68f97495b1042ee188359445440fd01ec1bb2e6c8262479ff7b", "T2B1_de_test_msg_loaddevice.py::test_load_device_1": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_2": "c78c591764d6b08c12d21e6f1d600f944132beccfb90ae1381cafa0916036717", +"T2B1_de_test_msg_loaddevice.py::test_load_device_2": "5c5647afdc3cdbc18edd15d1bd6c2f2a9d2df4fd0eb8c9f47b9542f8fdc4e571", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "74da8070b56e8dcc29668940892db2f0fdb06bdf9fce2e8588afe957e1370f77", +"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "c118e2897c98c6bd3cf990e11fdfc0973b021fa221e3a4065cca8af26a057b5d", "T2B1_de_test_msg_ping.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", -"T2B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "091523cdac2db517c52b84a4d31f61d03e28adcf9f1000dea2f5f7dd3fa297b7", -"T2B1_de_test_msg_wipedevice.py::test_wipe_device": "e385b141ce2b606f086a4c1c6644e60bfb31e2c72c5f6cc3d8c677f996c7b523", +"T2B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "e26df73450bc2a06d48cbb70dd53135d1087a81fe8a13427205a771022aec115", +"T2B1_de_test_msg_wipedevice.py::test_wipe_device": "fb5b17f7f35230b2fbe04cb96bbc7ac3d768b35926f35615e8efce5ad6f7f14d", "T2B1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", "T2B1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", "T2B1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", "T2B1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", "T2B1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", -"T2B1_de_test_pin.py::test_correct_pin": "7178dbeded44d0116014c2ece9a1b3cd434487547a53e339ab91ce9cc236fb00", -"T2B1_de_test_pin.py::test_exponential_backoff_t2": "3ef033ed737a4010a249faf443a2b25365e14df95cd163892aa7983ebef06ffc", -"T2B1_de_test_pin.py::test_incorrect_pin_t2": "e004a2980c8998c775e270fb966478c19b01936e8f8cb0aa5949f51a019e9678", +"T2B1_de_test_pin.py::test_correct_pin": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", +"T2B1_de_test_pin.py::test_exponential_backoff_t2": "2fc09c906ba594d57de29edff17dd87d5047b4b6e0a5e409bc6cda70f0ab9e7a", +"T2B1_de_test_pin.py::test_incorrect_pin_t2": "df4410c603bf23d4d1baeeb0939f40130b6bc909827c1add3d3225f47de466a9", "T2B1_de_test_pin.py::test_no_protection": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_protection_levels.py::test_apply_settings": "0f071683be4e5a4b39401787716df674c13eca2d4016826def607d5b5a5ef909", -"T2B1_de_test_protection_levels.py::test_change_pin_t2": "8c955dacc00b7f17188a960b1c00812a16557eb26bb68116eabb2619c84a27c0", -"T2B1_de_test_protection_levels.py::test_get_address": "34951f65d561465217ae696493d810113d073b73df52a17ed6720c755f1ddbe2", -"T2B1_de_test_protection_levels.py::test_get_entropy": "7e034ac3a2ef5d7683138204b1c48c496af46af70c87302d8f8e7f63dc01633c", -"T2B1_de_test_protection_levels.py::test_get_public_key": "34951f65d561465217ae696493d810113d073b73df52a17ed6720c755f1ddbe2", -"T2B1_de_test_protection_levels.py::test_initialize": "2b64eb584a774f89b5c31efe0cb7fb289465e0b89a1fdbc82fb9a375d7689d6d", +"T2B1_de_test_protection_levels.py::test_apply_settings": "475a8312c3da6bd91e5323bdcc2777e6933d5a392e8a6379c07ae3c0b5a19fe1", +"T2B1_de_test_protection_levels.py::test_change_pin_t2": "ecd1246b80ac42dc9fa40f3cbf227db4377a09d259ef9f796d21e28f99fb131e", +"T2B1_de_test_protection_levels.py::test_get_address": "13ed15a5a6697efbc4b48f0821c0d6ef900f502c49f01199c28ce4eede965a9b", +"T2B1_de_test_protection_levels.py::test_get_entropy": "e63614f7ded0befa3747f831bc6d472e92b8850b782b0c024b24365350311531", +"T2B1_de_test_protection_levels.py::test_get_public_key": "13ed15a5a6697efbc4b48f0821c0d6ef900f502c49f01199c28ce4eede965a9b", +"T2B1_de_test_protection_levels.py::test_initialize": "d817d3ca55c2b73840b43430f662aa3c821e33171591d7c3ea7eb0d7f2f4b0e3", "T2B1_de_test_protection_levels.py::test_passphrase_cached": "d2467c07fd34ffad1ff6c5887af6ed74bde2ac95953e290c1ca1a7bcf22abfc8", -"T2B1_de_test_protection_levels.py::test_passphrase_reporting[False]": "cb69fbc5fbba1d2a680c8545e4c5ec5e0ec8060083233324ef3b5c032d8b8f44", -"T2B1_de_test_protection_levels.py::test_passphrase_reporting[True]": "a33cac608acbc9b7c37d3579e84a3b67b4429708091d06609b43e647cf5ac028", +"T2B1_de_test_protection_levels.py::test_passphrase_reporting[False]": "dba499e21d0e05b5ab9916898513a212ddb77c6c15b3e60bd215d8ece59cd450", +"T2B1_de_test_protection_levels.py::test_passphrase_reporting[True]": "86b129f6fac4a3a753f68a47f66ae4c47cfc0e16093cb247df583701b8af5e85", "T2B1_de_test_protection_levels.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", -"T2B1_de_test_protection_levels.py::test_sign_message": "a9ca29d1384881e99377451ee8b0ff9d354b3d31bdbb24eba53aa3cde7611b96", -"T2B1_de_test_protection_levels.py::test_signtx": "449826d9c2c9db67957c83d0607359ac11868e1325d954ff46d48e3e3779de84", -"T2B1_de_test_protection_levels.py::test_unlocked": "eb7f30e5a5194d575f621b11a5b3adcae50692b7a683fc070eef692b95879f0b", -"T2B1_de_test_protection_levels.py::test_verify_message_t2": "a5f0fe7d3aa6bb746e3037d780f492f29e6226e499de5567903f3d1e353ac608", -"T2B1_de_test_protection_levels.py::test_wipe_device": "8c5ca43ea512e8f466ebc493e13f6ab2e303aace2684e81855e47d722c44c368", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "4ddc9d2c4d5f61b5e8001033320196f73010f23777b5f07bbea6c9e12dbf62e4", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "8922069edfde40c340d919d345ae1fa8b68d94dc802b23fe1ad325788a505148", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "93f775a9c28048e4fc12e779277eec8bf4c92587f87a059971d8eeaa74bbd89b", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8c5495c747495a6cecda1dea72e3e87710a86a6bb5c4b456b6302441dc94f078", +"T2B1_de_test_protection_levels.py::test_sign_message": "4069c15b088d65cb78f37d63cacf9990283952f69806449fcee44c40f06610e8", +"T2B1_de_test_protection_levels.py::test_signtx": "e08859fe0ddda96cfa0b44027a6d17ca082c7fb5a351745db37b620c6def4f9e", +"T2B1_de_test_protection_levels.py::test_unlocked": "2411bb3cf12d9f10cd0e6591218d8636d43b005b5836faf651b6854f90ab39a3", +"T2B1_de_test_protection_levels.py::test_verify_message_t2": "5a32a46a25ea8478ebc0c1e0ba1a419175f27c3e5bd42026b56e87fa959b7cfc", +"T2B1_de_test_protection_levels.py::test_wipe_device": "391742f30ca6f4e65a530f4bab95c26c415740f95ffd25ee6a692f038fb87da0", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "e5f1ab32c69ff0bc91d0b7ca1823b0b9a5325e13264830f86e2105627c2923d5", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "ef31b6ab8056b1847ac4f1376a16800b506ae9c5bd1ca29c23e3d8a2d100f0f9", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "649f57fffb6e4333cdac09fa86130fec8a513465a5b8fa141dc93c75fa7928ea", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "869ce210f3e562d8a880c1abe73ac80c50b71beb2425d0d588e321296403a462", "T2B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session.py::test_clear_session": "fc55d72baf2a11881021f5e45439388e0aaf38472e5e08093c2356a5d3af7a5b", +"T2B1_de_test_session.py::test_clear_session": "31f023585471579ef3b4db1c362b4455238ec96494ee23606d248a3faa83132f", "T2B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_derive_cardano_running_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_end_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -3768,8 +3768,8 @@ "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "a96bebc82d5aff9c6a8583ddb354e6427689a3be4fddf082c3cd0e8722e54d46", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "4c2bba305bab30de2fcff0cec5ab1192f2e4d826d86f91f7172dfa624f5f3139", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5f70b535406a6254113ed2a5f780ba98b8205abf6425eb7038d22395953aa560", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "bf962269c96493db17d34978f049d3dba44ca7a311fbf53822046f7f1e3ec4df", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "bf962269c96493db17d34978f049d3dba44ca7a311fbf53822046f7f1e3ec4df", +"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ad427c4abd092292854407bed36be56dbc18569a0a70841cc22c57c3fab3a96d", +"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ad427c4abd092292854407bed36be56dbc18569a0a70841cc22c57c3fab3a96d", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4f275de439c812363140d3839ebddd9243e2bb34d80d02a487361148b2bbab71", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "64fb8501fd5c522084222d12a008938b44051131452af9efa5d354246a43a3b0", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a005bb59161fccac967b138bb4113b8e46163b45869b51d526d5ac004aa86d5b", @@ -4781,57 +4781,57 @@ "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "426abf5d94dd3a9c8828244751db69653c686030ad453a51cc26390986929f84", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "503741df9a835f3959ac18e666f55899d5295629926f0d45feab92c452ceb8ef", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "829c12770a146dd2660f235e34ff8f3a69c5d39040720a9b1833b4d6ab7befd4", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a54b2b5eabb5251ade0fe4f5f88a671947eb103452883aebbaa7e52b0adb9615", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "212986bf1794bf13cac510ae1313e920fa60563c705d0d0213a9ce443b64a0b0", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "47637f942a4e57cf549c7adcc925e97bab0bd886d3800fee052b821c2ea136b3", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "455610be81423df2a8ee884cea711dec7e651dc15534f439af2aab54782f7e4d", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "72521d95a5eb9033c358a14acf15b3d44ec291758663844753fa9a5fb149b17b", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "086b3eec1ecf14039c3f168667029b65aa6765e3a7fca1eb918914e7dda083ed", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "7784669e4afb1eae0655582f379f1a7d687785e13ec949e7fa752ca5868db9cc", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d08a26683b1d323eca068fe20341632cc98d27d7e4db8da3ce471813a128c549", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "abec16082d7844d9ddd2bf4033e3175e9289053708be6ec7646a0dfb60b02135", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c674a3a7e10a4983d018daf9350b789bfcfd0767900364baa3fc07e8ec96c325", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4de2a30fa14e1e7cdc1283ed76032c652a58bb4fe1366fe4536e03667aebaa95", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "c674a3a7e10a4983d018daf9350b789bfcfd0767900364baa3fc07e8ec96c325", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "4de2a30fa14e1e7cdc1283ed76032c652a58bb4fe1366fe4536e03667aebaa95", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "71897579824a797a9f9c4f44a7067be8dd6a81a535af465fef21315fcfe153ac", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "cacbd98f9529935bcc29e7f1f23967c1d82bffde0e69ec6d9c9b63f0eaa50acf", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5bc172bf16f3fbfbabd1b0dc67f73d450a3a3c33e490247a51b2ab1594eac447", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "932e08b9efb0b08782b7dd07aa4373d5969d5cb7c5fb3b34d1a94e552f3dcbb1", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "cde269cab6e5f1ccb6b1d360f4c20ad1edbdb89b11270aac2a743ea7097916d2", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1c7dd2ebbfcc55483d603f51fb0cd334fc8f82e92b5b26fea1fc1942c7100797", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "77d3b42be22976619ac6b2eb18133cd436d8980b7a2db9b23cf34b5468886fdf", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "03b33a18acd888e7056c552db074a839b6973694b17cca464f2424e3c179db48", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "87e608594a17a721217724849c04f6764bda34c5205df6f65c9cc01e8c843c98", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e21a10925179b11df8cb8265bbc5b5b28fdd83560f851a59188084bf90474ce9", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3c36a0821a4c806cf921341365c0cfc22c84353fd9a19a62689032f1de89e308", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "133be6fa7420121dfe8aa7682f0b4039459401f2432e00fc5c2744cfbe015984", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "1a3d4aa3cdfa46211876f90e68484e0b0510da44419b07f65b9e3b6f5a8f83a5", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bcda38d2135ac23807ad3638e49bed1ed8dbb12827b54ced191e9acd2520870c", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "85966bbeef891eb3bf6e0d18ff73311e88d4e3d44661b65bdaf23f0da112cde3", -"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "08f7755171d23b3157264db6408a7a2330e362a99a8843ab89b5c8b3baef2321", -"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "df5db3a22b80daa13cc5a45fe91d417a4d12adcad1cd6177976840c094929884", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f95c49828cd87ae0d90ca369166a6ddccfbcce497ceaacd2561f0c002363d95c", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "a5961b4b97e3fbe98bcacc1d2c6d11f36ba264db69485dc39a6381b7a709b5ca", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "506f8adfef01bb0f76ab2c48f0e81f38e8dfc2e8d70cb5022c721a2beaa06206", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6bd90c87f780eb419e8fbed9a996186e7dd6f24f6ac8e5e4ca4e507b14f2d4a9", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6ed36a78ce923cb85db796c447b55c5cea549fcc600035685edd08596b37c356", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "30fcbf4446ee21237b8b951bae112253195fe79ce5a89bf6dca0e9c1e9ee1cf8", +"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "9f47099931f6bb9e3cee4f34f8bfc84045b6ed308f92912e9004cc9a8dbe77b2", +"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "777b2298ca40e7ec3e084af039bf8a72335c485b58bb30d436ae71f6dabfbad2", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "25a43631737a84c47d6460c42b33e39039675ece2e79bec6151b5f06603bfc31", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "006965b46b36256faa8500e37e1db895875716c2ccf0311faa9e8cd1c68d8d10", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "0e8045db0d731498f55564b4c53efbe708c5da47059320871df095ce35da08ca", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "44fa73f78794001f8235054123b01a007d8fa270ab28ca51488023f7c1d8e564", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0155ae2f56d48e51ecbc1ac546582fcf63a1534e4917e3a2b8be6da5e0e8e0aa", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "16272aaf3c56f23bc5c452adc1ff1beaa7e8b911a622d2021dbc1faa9555e481", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d5396ed4bd9c967ddcea02ec795f59565536a9fac7c8d8fb6608ef46731c3c5b", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "16272aaf3c56f23bc5c452adc1ff1beaa7e8b911a622d2021dbc1faa9555e481", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "d5396ed4bd9c967ddcea02ec795f59565536a9fac7c8d8fb6608ef46731c3c5b", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d4defa2ce5b065364bce0148a7187b5e4bac655db8d155cd3042bc849b0d0877", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c61f27776b900128c0c881c641c306475d031d3f8125a50102e8d34d1c3e3977", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2e21c6bfbc2fb4eef7013fae964adabfeb4cd1e00d50fd85e9d2705dd94a0b67", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "25a43631737a84c47d6460c42b33e39039675ece2e79bec6151b5f06603bfc31", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "145e14c07f2ff047deee5f114b25d85539da9dd4bced167851d79b107f584a93", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4ba17452978d2e4948ba5daae060aa8f2d44d83b2d21d97dae7e38626a6cf7c3", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b3f7d9c18ff93a0ae21491028c01ec9d04179f9d82023e6bf5ff56f87bdaf344", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "69eefcbddcf30cbfbc1f26e4729d8f50edfd9b19cc1acc604d10630ed28053d4", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "bd9c2240058288de1dd34a29769ed5fa780413d67de71c66e94d010540239af4", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3ca18041002e9f760b385187465a3245466a99f9f6a73a5948eac5af36f20a65", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "95e02f1f7b35a9055535c6c3ab1b27b6aa4a88b28a6a97a44921f1d9c772fba1", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "79534fc91b0e6258da19eebc62e1420e3fe35d909bda03dd5c1d67f269959606", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7223468fa3f2773421ee0268eb9d1651371c1317dfd32e0977a247745ae7df3a", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "2c1611773f8e627cf272167a9046fb29dd7530b5e674d35f56792625cb20479f", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2aa9e29475844be152baa54bd16a8261b4a71e3fc9f6c2730f569fa0f7254f5f", +"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a0de43548db0b3ddcc01acf62384669ad6fd531167cdbff37adbb7a7d70d9ba4", +"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "92c1f15564ca8db7a5ebbe7c0f1ef514ce36f23a42c047078eb6956ab79344dd", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fc80344ab3289aa36efff072e94f95cba07ce11761c8daf7ff8da587902e61e0", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "8ea99a6a11498bfc3112fa0b187f628177064c65659c989cf3fd30f2470d70ec", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f47105387bb0fbe56fbc4a0186a56ad0b7bbf2575eda0323267c965170c2614c", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "ffa9cec4630e245fdeb525f57241ff9f1ac4731f3aefb305ecdd0a93ef0ed292", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "40105066acff9f5737049bfa9a1f99c69be2b7bcc896944bbb6064992b581207", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "298d18f2bf3da5f203f5b512e272b4601c16f13fef1b02d30fb1ac8d40a2825e", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ed4662a5df961dcdde60d11bdda2e8984f49de7be79b7dd5e7c184de265fc219", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "ff53bc8395f0cad4c5583d334c19138fe7943228267f625bc41fd0157d4d39ea", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9c0073084f3c0db3b8b3a277fec7280d1fd5d95b320ad9ff2655c1ced78de911", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0642791589f8e61947c5aa3891877ca94d9cd55750e231ed9a1ef13003bd00bf", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "86171ab9d39186d411e62aafd79ab04a064520957bc5b7495583eccd90d4a5ea", -"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1b22e39ab321a554e101dbc8b5027fe8eb886502e775f9f9700d037677042375", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d3d0b0c4f7c27c7e6563e7cdcee362fbe4c4653548a8e7577ba15a0a542dc6ef", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "090bae86d3105646d6eb5f443a1bc801586d64ff602c41b276ac7404c2a4459a", -"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e2b8c06f601d994e0913d2291e484f2a5f5a698b423697929588ccca84d61ae0", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3461dcbd931d8c847e4367d88167958219d3e909c61532f72921935c1a59266f", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1d227c9596a152ccc1a446a42e65a7b6b06c2deabbf6b07ede4f26e1a0db1840", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f0b64276a6b56488409182ef534ec857222a89fd5839b302f8e0909e5e59bf01", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8ddb89393af071f6c6a3c01fd7fa2c6f1f60e45f9231e004e155a058ae89fcee", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b9e1ac1393e9e8f127c53c0f30ec116e4b1ee538cf11b17bd0143b7302358a0e", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2dd94ead858ba3754b84984c16ef1f917efecb8cf83219dde68c26a6f27bae35", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f57209fc53d5bb0bf639a88f69b6d47f884e94892c2958114074c41d6d7975d2", +"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e91280e603e2723403ae0c63a9becba80168dffa074d2217b47976107d3a6cac", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "68934193263b621e35e295681872c400e4c46dfa28328755fdeeb98b7608e8ca", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d9e4db01b4929c7c607a8a022e24d7a726bfc903567786cf75ab0fb21d9b1b8a", +"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7060ef8cfe85c5d5ae25af3506dfe3b104dc503dcc800186e2ae6baa5585e4de", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a8373dab1a36a7b9d61623e9f10edbc44f40db75d6f1b75cf2e2e048fdd04c8e", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "66f9032e1206419433c5728a0c07e39ece72f23018ed79a4f264acf8faf62915", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", @@ -4972,35 +4972,35 @@ "T2B1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", "T2B1_en_test_authenticate_device.py::test_authenticate_device[]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", "T2B1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay": "72017c65dfad66972539257525df43f9675e459a3134fd5c4fcb724cf99cbc0e", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0a3678f498d4dc42342329d458ed91a878986154817c137f6f81e4c1ed3865ef", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "621cccbb86c434ff5b58c7076efea8e2d2fc548df9d6e36549aa35b2d61a5893", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "d1c4eb5123ebed0df8121d2884c82f5619085f795cdebd3745f5e31e4e311bca", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2f8b69d4fceefcfd91d31316721f828df7d529c2d503bef3c695588705d4336b", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "32c7a5610dce4ff84b66177775c7d543f8ae7be4266365827781f44bfa5dbdd7", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "e2a398a02eddbd8f5c6d3f92f7422761873768640b939ad605355ab4cc95f36f", -"T2B1_en_test_autolock.py::test_autolock_cancels_ui": "1653b4a6efa55d96038fdcf9c3d7e805b04541cadf020e11e38a7885eeecd915", -"T2B1_en_test_autolock.py::test_autolock_default_value": "d810436f4404563b1a3dda410cbda2f42969ef6bc746b85fefc6fce2fe835369", -"T2B1_en_test_autolock.py::test_autolock_ignores_getaddress": "fae83f0eb74c41cd7d822b1514d71dba1c80d0c46f3dc2835e2fd9dab80995d6", -"T2B1_en_test_autolock.py::test_autolock_ignores_initialize": "fae83f0eb74c41cd7d822b1514d71dba1c80d0c46f3dc2835e2fd9dab80995d6", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay": "80caf62dce3a352a5be2bdf5d44760fe6f6b694ab81a2c02a465b4e4d4d3eb77", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "408ecad83747a000b39e8dc0479b9fc77f34eda51ba0115b9fbd606f47835b48", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "9607621b8f408f594c44f2b83c24528c07a5333d2c25e18e33a1ab74e1010ef5", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8d92ed3715e42c2bd5fa652ee5e0d839724b48caf737484fc5a9b47d322b5dc6", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "9a2a9666400b101ee13aad8d69d841bf1e4131d99b5d8e211d18cdf2c7bb9381", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8c15fb4ac5228e8f6db7bbb124b1d21b0f26452443cc68e655425f28c5332048", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "dfb8953ac99dac98122b900a38aca30cc3407db01108f42b4f9dd0c281580b91", +"T2B1_en_test_autolock.py::test_autolock_cancels_ui": "6f30232a3563aaf074b713777493f0a1ff1ceaf4f6c3b400f625e59a3d8b407e", +"T2B1_en_test_autolock.py::test_autolock_default_value": "24645662c5cef489504f808177229c5d95318e0463bedb0a3a985ab5352468dc", +"T2B1_en_test_autolock.py::test_autolock_ignores_getaddress": "94a673141990f188d83def4d70ac53cdcf30d14be7df69062a38befec5bb2f11", +"T2B1_en_test_autolock.py::test_autolock_ignores_initialize": "94a673141990f188d83def4d70ac53cdcf30d14be7df69062a38befec5bb2f11", "T2B1_en_test_basic.py::test_capabilities": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_basic.py::test_device_id_different": "0abb37c5dd2cc89e22f3952cfec9191413873c9c291df8c8a43a7c89f23b5fd5", +"T2B1_en_test_basic.py::test_device_id_different": "24cbf3dc4bab039784125fddd81852cb7791d1162ae77f5f501488be16cb503f", "T2B1_en_test_basic.py::test_device_id_same": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_basic.py::test_features": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_basic.py::test_ping": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_busy_state.py::test_busy_expiry": "0cff54da20c3c70d5b5de75a45fc265b29683fe322ad498f947656118691eeca", -"T2B1_en_test_busy_state.py::test_busy_state": "7bdbfa392d76bcf551685c356042ffe4463538e61e194c1381ad0eb70ef0112b", +"T2B1_en_test_busy_state.py::test_busy_state": "17b8ec3402de11b18a4258dd9bd1d8604ce06fceb280c0876cac6ebba2a374c9", "T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", "T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", "T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", "T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", "T2B1_en_test_cancel.py::test_cancel_on_paginated": "3091ac71ff4b66b9f0182122cf29539eb424609570cf4c8ee720f8eab5ca3b83", -"T2B1_en_test_debuglink.py::test_softlock_instability": "cff029b728b242ec07f405a0fcd12a77212f0a28e9ec14f1b9e2db1b63293783", +"T2B1_en_test_debuglink.py::test_softlock_instability": "064d1b62454e05d9f222c5d74190317040ac9ab4c440f01fe1e73c341a80efcf", "T2B1_en_test_firmware_hash.py::test_firmware_hash_emu": "07a18c9e52c1a1d865fbe57960ebdafaf1f32a3d426af991469680000cbbe0f4", "T2B1_en_test_firmware_hash.py::test_firmware_hash_hw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_language.py::test_error_invalid_data_hash": "0cb01b8002472dff316d6eb3ba901dffb762d88fdf61e5ef8642ca7772d3e71c", @@ -5015,7 +5015,7 @@ "T2B1_en_test_language.py::test_full_language_change[es]": "94ead6f9d0f308f60ffd135c9bbd5012a30f05b4f44fdb22286ae259bef9e205", "T2B1_en_test_language.py::test_full_language_change[fr]": "2f3a0e8541cc7b96dc983d4de2149e4e2b230b43e1971153ec6bc82e7dadafb8", "T2B1_en_test_language.py::test_header_trailing_data": "b0f85bab7d392d0dc605b67a47ddab802d355f71c6038b44b243990e1f73430d", -"T2B1_en_test_language.py::test_language_is_removed_after_wipe": "3d66c4feb4a8a216c07985ee09eec58ba2ce18414da858220ef5887eb88570db", +"T2B1_en_test_language.py::test_language_is_removed_after_wipe": "8efd518dc4bf57add639b604786ed8036f4c90d033cbd22f4a80494d6f965b06", "T2B1_en_test_language.py::test_reject_update": "949fb112e684d3fb8a204a8ce15a202ebe9613bd3a453408138b3e54bb42e99a", "T2B1_en_test_language.py::test_silent_first_install[False-False]": "8b4ff15060372f2e8f4a59a8c97bd4afd77b3d57d5268000654d57e676dd7523", "T2B1_en_test_language.py::test_silent_first_install[None-False]": "8b4ff15060372f2e8f4a59a8c97bd4afd77b3d57d5268000654d57e676dd7523", @@ -5025,17 +5025,17 @@ "T2B1_en_test_language.py::test_switch_from_english_not_silent": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_language.py::test_switch_language": "b74085538e1bb7f0217ba5880c41542938ce41ded7e2499b1807c0aaf51d6fc7", "T2B1_en_test_language.py::test_translations_renders_on_screen": "47922d94fd02016582810dea2286605d73f71ae325532daa72d55dc94ba7bb31", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "97e0cf0388d784b38e8c48cf7a941800d82b846593d179a0f1933c754b0ae92b", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "1d856263be6852e1e1ca2097cd5c0fdb2b1c9df50aacb2ed26d1de1af192caa3", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "eee723c40995e36155677033d1371af0ec8d7ec466ebba19fa915ae33005a402", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "76a9871967a82b747811eb0a63b8ad66ff5d2273461da749f07ca145db998ae7", "T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "bb644f67c0d8e20639482a7cc7f736b391c2ed5217e84fcfd09e1e7b69d8aa5e", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_msg_applysettings.py::test_apply_settings": "e84453642c927b2fe15325a109672814103f2f94d7b5d70a313d921f21b88a37", -"T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "5775d63130fa4646263cd26d47bebc87691344dafd9e849c9fa361a1ea7f7e6b", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_msg_applysettings.py::test_apply_settings": "f6602bba98b193641b36c3cdea8d6ba08c84355e3ae7d773fc287dab14418a6b", +"T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "e5191b2a75d958b7840b35f26922a47c934f683cea76f482b310385d093beca8", "T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e595040cd60ac0e5a31a768dcbdb517c5a8ca28e02707ccc35be95a0e516ac95", -"T2B1_en_test_msg_applysettings.py::test_apply_settings_rotation": "28c4463b15fdd9d455f2bd6f229fd22432bfe9ba48606602e2ff637b1bc7a6bf", -"T2B1_en_test_msg_applysettings.py::test_experimental_features": "0ac7ff5ebcc73c8922545b14e8584d13199ea0c5d0712189b16e24ded22e3c17", +"T2B1_en_test_msg_applysettings.py::test_apply_settings_rotation": "fe432af1c83c212161f994eff9c98645d2f0d3f4f33975899bbc5988ef7e22a4", +"T2B1_en_test_msg_applysettings.py::test_experimental_features": "214e3b83ae4f87d937154235e668fff4067fa43b1b18bb6160793b42b9f99408", "T2B1_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", "T2B1_en_test_msg_backup_device.py::test_backup_bip39": "2c19ff45c8c02dadc065f360af23af8d357dedc066711cdc30c846cfc07a7d4d", @@ -5049,54 +5049,54 @@ "T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", "T2B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", "T2B1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0f13f63c07c028b6f7f637231792f7c59440fd409a17727c93892532a6e92826", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "0afc4dafaf546cc71104a6c4d27f686abf874468a33400191892e07bb741a23a", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b57199178923c17f83c14ad7cda25a585c48ad5b150d22084d088259d520ddf5", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "27303e475189ba1f2961ddac5a65c09401720c00d27bd4b7d38209621148132a", "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "d3f19f4a02a571d07a410ac56b92e79da7bced18d91b7e788290211c6cdeb6d0", -"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "b14b34ff4912c6815325aac6d556ef1042e0fe58a148d317b547f20d979b39ab", -"T2B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "0435985cdde633a543e80a88d84100bc1cf11150c60a2619035a64285a3420cf", -"T2B1_en_test_msg_changepin_t2.py::test_change_pin": "a218c9db7f5567458053cf075cef32d3afaec724111c3ba9f23d53b468d4b0a2", -"T2B1_en_test_msg_changepin_t2.py::test_remove_pin": "9e69d8a6e72383d4b48af12340790bef5e55ed77821f80c7ac959522885097a8", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0dcd5b97efa8a7a18d02eb54ed11ca8ab2de7a892625f1b6579148f9c8d054f4", +"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "9388ece09712591b53fde12e7b2c94fd8d52935d21f46081f86fa2003d7a4933", +"T2B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "1bfec4af35876d04fedb25d70033799bf45d26b81c6dc1709dd57e1004610844", +"T2B1_en_test_msg_changepin_t2.py::test_change_pin": "940efc3d38f48d97a604ea26388e944b237dd539372edf367cfa7ad78bea418f", +"T2B1_en_test_msg_changepin_t2.py::test_remove_pin": "60aa21c2d6b7b8a89dc85dbab02a2d419462c1bcde54dd4dd53a657c561543d6", "T2B1_en_test_msg_changepin_t2.py::test_set_failed": "200c1497e33124deadccd5b84e68616d6d27d03a3613a00055ef733604a12d9d", -"T2B1_en_test_msg_changepin_t2.py::test_set_pin": "d40621de37584c0affe3be30154eb58687d8423bfac40e96b430cb35d54fac52", +"T2B1_en_test_msg_changepin_t2.py::test_set_pin": "1762bb8bf4cc22b94a420396105ce7b9ad6001b65b4c2e88bf228884a5a157ed", "T2B1_en_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "87a1e14338a917eb020069bad8a2223ccbf754546cd1fb34336abb2c72e6e3a4", +"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "946dda0f0f2f8c8463ee29f4c41a25419cfb2945872936f0f349c04fe6220be8", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "44a2f1a4ebf10bf5eee7cbb5fa8dad40cfbe41c5a3f1e46bf6672e3cc3aa08aa", +"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "04b32df9703969463ff557b5d876a8b7e97f55e53bd8ba6102501276b413974e", "T2B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "356d80f55b60e8f24543b2438fd835e5985ef66a25c14ffb80752353cd194de3", -"T2B1_en_test_msg_wipedevice.py::test_wipe_device": "0abb37c5dd2cc89e22f3952cfec9191413873c9c291df8c8a43a7c89f23b5fd5", +"T2B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "8654e727e4301a3d95c631e6fae7d022dae3731c4edcb2cbbbf44d05279e036f", +"T2B1_en_test_msg_wipedevice.py::test_wipe_device": "24cbf3dc4bab039784125fddd81852cb7791d1162ae77f5f501488be16cb503f", "T2B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "977087a6cb4cc7c9e1fceb78f36e6da50bce7f62868e6cb4e534669b713307ae", "T2B1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "977087a6cb4cc7c9e1fceb78f36e6da50bce7f62868e6cb4e534669b713307ae", "T2B1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", "T2B1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", "T2B1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", -"T2B1_en_test_pin.py::test_correct_pin": "deaec3ee8e787b4ef58ef675e64f4fc1c721296c07029bdd430ca487ec073152", -"T2B1_en_test_pin.py::test_exponential_backoff_t2": "3785284a7044f46b47123c8867801b989a81ea1d7fccbd2186c944f9049473d8", -"T2B1_en_test_pin.py::test_incorrect_pin_t2": "e0c34c861c8f1d9a1a4cbc0bd8c96d3ee05183631bb7b5161450bb90cb0e4416", +"T2B1_en_test_pin.py::test_correct_pin": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", +"T2B1_en_test_pin.py::test_exponential_backoff_t2": "c0c19d9fd09e8f9f95882a098a6e7c2e7656473d8e07bfff8c3ada78cf3efe31", +"T2B1_en_test_pin.py::test_incorrect_pin_t2": "66a01d2b4e7cb12d4ace6832c96f95c973f92ada3ef542f084d583b96876963b", "T2B1_en_test_pin.py::test_no_protection": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_protection_levels.py::test_apply_settings": "5ef2a8b4abd91ffa462afeba9aaff358b280dbcdc2f9486505dfdefa159cc630", -"T2B1_en_test_protection_levels.py::test_change_pin_t2": "eb1e880c4ef5318605679e049636ec2999acd0f0bc6c8312ba9546e40c174ffd", -"T2B1_en_test_protection_levels.py::test_get_address": "5cec735f5e5577477fcf06968c197d9e3df43d2d2071bd6fc73822d28245f4dd", -"T2B1_en_test_protection_levels.py::test_get_entropy": "cdc3b72ac640e0e9307ef5c21a7c2df7f0e5906b6ff714e4e639c6c44802b0b7", -"T2B1_en_test_protection_levels.py::test_get_public_key": "5cec735f5e5577477fcf06968c197d9e3df43d2d2071bd6fc73822d28245f4dd", -"T2B1_en_test_protection_levels.py::test_initialize": "d22db62a01a9522abe132e6e4c1b69d62b7e74e7d558ad103776a36b71b02b6a", +"T2B1_en_test_protection_levels.py::test_apply_settings": "0db00033ac6ef0abac7e7c0281661bf0f1a7bddd6408c8b955c4f97757204cc7", +"T2B1_en_test_protection_levels.py::test_change_pin_t2": "703b09068e85b6179362abe5762293cb41c0fcdcddb815cfa705f8bf698f14e4", +"T2B1_en_test_protection_levels.py::test_get_address": "46381a74de22fade9f3902272b644b2095d1708c98c6b77e5b0cf1470a1d4b67", +"T2B1_en_test_protection_levels.py::test_get_entropy": "224e87c9777cb6fe92a8bff9e3b43519375e8dd968c7ed7045548ff2e9fc81db", +"T2B1_en_test_protection_levels.py::test_get_public_key": "46381a74de22fade9f3902272b644b2095d1708c98c6b77e5b0cf1470a1d4b67", +"T2B1_en_test_protection_levels.py::test_initialize": "3ecf30f726041324f67bc1ee0291491d5d819984750f7109738b839554aa8c21", "T2B1_en_test_protection_levels.py::test_passphrase_cached": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", -"T2B1_en_test_protection_levels.py::test_passphrase_reporting[False]": "c5a8172367cd2a97f9b446512c4349bc2e2e275eadc055114c3c9c2c0cc74055", -"T2B1_en_test_protection_levels.py::test_passphrase_reporting[True]": "ddf4eaf9c9d1d341cd484658135750b684ed31a7d77a5f4e6972fa8553bd0a29", +"T2B1_en_test_protection_levels.py::test_passphrase_reporting[False]": "ef5aad468d4f597795f2fb39ca84a2c19da4a50287996af7d9efd98d5487e2ef", +"T2B1_en_test_protection_levels.py::test_passphrase_reporting[True]": "27dd2772de028beb05480b91c4f190922af82df947a55a4960caf7c18e88a954", "T2B1_en_test_protection_levels.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_protection_levels.py::test_sign_message": "3bfb26e19709830584f27aa1b1f114e7bf41cf15ca57a4ec9bfa618fcba80ad0", -"T2B1_en_test_protection_levels.py::test_signtx": "b1979809dca35d8a776144bfb8a1e00e325c316dde995ef2b727a53f8a3fede7", -"T2B1_en_test_protection_levels.py::test_unlocked": "e76b12522fd28fc08af0135271615d63a13a0ba9f013ebd1afe20ef72abe0803", -"T2B1_en_test_protection_levels.py::test_verify_message_t2": "5f04a88b0acc2daa3e87c02074a64969aeb34157006adbf15a3655e94f838bdf", -"T2B1_en_test_protection_levels.py::test_wipe_device": "bc06c63c7f5b9e7f0ada0d3d342125905b4fc463fb0eb2ba363b300909dedb9c", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "4838ad2a5ccdeb7f34855a0c1b8222a4a01cc2dd28604b100c1ce02a784503a9", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "56179cc17e5b0774b3ec0a3dcb7d59955afa043843e31605e581bc24b24c2abc", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6cbd79e798c262e608d2f75d1b22bd13029efb7e073a30af52da70bc5cc0e255", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "42f084ece4b861234364d3cf5efe7d8343c644deb1f1fbc63d72f2a360cc1a75", +"T2B1_en_test_protection_levels.py::test_sign_message": "985ed797de3c6c12bfe5aaaf84e3a92bf1fd4eb4b7686aaa6cff8b16b474eaa6", +"T2B1_en_test_protection_levels.py::test_signtx": "334c4de8a500a7329b5339c55b3171dc3d0cff4b06c1e9aa300d46942eb0f287", +"T2B1_en_test_protection_levels.py::test_unlocked": "259c9cd84cf214a375e96e42c8f9946caa7700f1d232cf9bc6a67c4254295d28", +"T2B1_en_test_protection_levels.py::test_verify_message_t2": "4967babcae13a116c212af5fe8ec97eb79d05ed8a9ff611d6a0b399c6441e597", +"T2B1_en_test_protection_levels.py::test_wipe_device": "d2aea706365ca35980848c193983301b5005f105a370070d0e4669adcd805568", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "9f4af71b632af46b9449787b24f7b7bb9632a80daeabc69de4657b926f640764", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "d7d472e7b8eef30964cb79f8dfafae94c59234bc0b7c6d7246587e2af5df28d0", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f9e3368ca4644b4f4a81100388ca61cfd64470dbd3cb33e1ee793e93685d1e02", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "15fa67577facfefcbc87968876193aed79598068b4fcfaf24cecbef7575bc5cd", "T2B1_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_clear_session": "c4ec976d3a6d21237c46f4bae10a16d792cda271feae0530cbe570b91fd81a49", +"T2B1_en_test_session.py::test_clear_session": "a61ddf876e27a09dea82e968dd6e7174f881b043ccbeab146cf505b769d3e498", "T2B1_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_derive_cardano_running_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_end_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -5159,8 +5159,8 @@ "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "610b680fc768e0ea25d782a3158d904ab55880e347a159460bc520bfdf71770b", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "fce796742f8bdb5d18d9189395a558dcd41a89e8e4e0cf9b425894afc085a7a2", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ab9079b221552a78d899b2ccd2e4a951597781ed31621c8e813d0b7bb2138e09", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "f760ea0d91e221b43da64c7e048ae736a108a010524c87c6af5e3f051f6b7537", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "f760ea0d91e221b43da64c7e048ae736a108a010524c87c6af5e3f051f6b7537", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "7a13f4522b6044940afa4036a2b1544a7b3809830d8ab4b3effafea3cda9ae5f", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "7a13f4522b6044940afa4036a2b1544a7b3809830d8ab4b3effafea3cda9ae5f", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "00c53611345581b92df202f11bc1c943857bcdc59500caff6519da95b4b226cb", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "21dbc28353e0e5cc571d5bac605cec888a6e99b78482a1c7a95056db2f3be6a2", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "c46f223715b7919e84b8c20ac59a0b670e7507bbbf30f1c4123dfec3b805f9f3", @@ -6172,57 +6172,57 @@ "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "77000f51357d47a737aff427cf05512d08efb8a309e1b37ce6106f89b410ea96", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f31fc6ed7713f35b56504aadf7b44131494f7572e2bc6d3a78e85819de63eaeb", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d28d729876736906b8bc4424585860802acb641e3e41fe6d7e8bb6eb6254ae35", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "6418e5583632e3657a016f6b36f6b32cbbc5dbc02ab5d3e90ee3becf35b1afc7", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "2976c1d9fc9cec18a9923f82e88a6b3b297ba29c0ba6a91e3e31ca1472760d2c", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "32daa10ca25bd500835ba23fbee44338e16db85c20e26e49ce33ccb82aabd732", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1a1fb4708a061c1c4f2006074bfa606ca39287027658592cfc1afc1e9b4083a3", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0fc41c5a4fd4ad91da1a783acb800d25b06a77462bcb5e4831290ac68acea92c", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e558fd4383c18f5860285557e9d07251c6aea8b87bb6ac30988822a0642163ae", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a1cf82a8c6063c2f33ec994c8e48e07c0b68adda471ebe8f8982f3550a8951cf", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "911963551a84234a81becde8fcf18d127a04ce91c7b4c8c5be8da8a0c67e43d5", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c616eb9f5a7db8420a0e63e0e706f0924b22b749f70c901941541391d58456c2", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "88acf2b1beaa8b0af4963a75e83902e2ecf7b3c90ae5e75cafe53936407a5556", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "09c99af8f9d6c9d4d99aecfb52ed4fb3db148e5e0002ce5cbf38d8f54921b2ed", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6398341fa7a63e884cf3cb7494a40457b7a3a52ea5cd8cc92cc88057ed13dd81", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "09c99af8f9d6c9d4d99aecfb52ed4fb3db148e5e0002ce5cbf38d8f54921b2ed", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6398341fa7a63e884cf3cb7494a40457b7a3a52ea5cd8cc92cc88057ed13dd81", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "efe313d602a82e7e975f9f3b2bbe937ef641f775943655bd45d1e72f40e72120", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "269d5d0f0b09b61f532f050a4b59f474449116b526565e95c1702c61bbc91f4a", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "fd4205ecd4d0b8ab036eb4a5f0d1282dc55c0999f8e1d01387cd6280eb3510a8", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e558fd4383c18f5860285557e9d07251c6aea8b87bb6ac30988822a0642163ae", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3809beae56c42b01914fb536cc72a8365169c655c5c239dbc99f41e4c9563651", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c925a75f1fd31f6f6660ea93da1d7630f624e6327ec60eca13d5e9dcf7e42450", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "dd5ba7f7bfbefbdeb90f8b3f18dc76691288fca760b4f472601cc4cb8f38af1e", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f5960a0b979cd0e6000a08b19bd8caf3cdf91811129cf9c3e7a69f73e347350f", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2bc4e17083339ba5fef1b2218492c5ca8819690854f92e58dbffe65006163def", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "30d54b6b12b4c33e4d65b519b5ebb6b476182dde8755b982a5ddc48e65eeaac4", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "d5c00d2c4339f35deaeae30b76a20b7df7690f49e4b7a0ee79325647690094b4", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "73c97b67eb73167842f3cef61b219ef20666f87802032c182053649b013825d9", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "ee48f761fc82ecebd2d1276807abb515e549398837ef881f7dc6b70f07a67de5", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "1765d3bbc6c8e30bb02a5bb5be60edc75746d0fa3c441c49ff689579b07b546e", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0f513ed19b61835e1418afe47e37f13561ed0db01f2b0f292d553dbdac443d63", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e91ccc00d7fb05f3cc20e23b783765769069ae0e11c116df0b4cb3249b8da3e2", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "04e085305c7feaf58f99366569874d60aea334e9eafb9629d609c52d53c89e5d", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f08999315d6bb09ab74c1da0847a53880423a4f6690a5e9959fd83c31ed31306", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "7b84e58cc85e079fc25d426edf6f98f7be9bde6339dd77eb88f0d418dcb1591d", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "b0cac186d6d1eab4e506bfb713c746f509c44541dd99cf3ba766134585ae8bd6", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7ae82e6dccfbe279f1f0d90ac711ba19f1eb3e01699d6f41f2937614cc0309cd", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "80fc4bb079d519b434bc19ddfd6c7b860f4f825997dc1200c639a96c5b3a4878", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d395aafbb9ef0a4bd51c8199e8953d04eb773cd9956077303cdb34df887f47a4", +"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "791c1e5b4cd894dc4713708c589e4e44d1cdb2c5feb06f0840b4f51ef222d4ba", +"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a57298bd2ad30d7e510a1010e563cbe8e322ed5647cd13181dfbdbeb28e87eee", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "33425970a4e6d9db2e5d031523563db2c5aeed61cdd16c110030b922156808cf", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "b76381538dacbb9c58d685387f9039a644b484e8d7e2e9cfe599f279072b6a6e", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "7e427b4b5d4b50c86672adb0347685d54004ebde4b556f0a495c31c459804616", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "613163f1695c7c826bd59650564f087eb49b43fbb2ce3f65de54dc9056f6ad49", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "67b68cb3edc591308d1759b6cd79d5c501fc7aee9937b04df8310649e01a1c1c", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e2691cff0ce449302d2e8663012b6458e294276fa0fac4ab7ecbfbe73436f782", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1909582b1c8d9dddcfecbfce06705d707e5239373b9bdeeefef337a143814efd", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "e2691cff0ce449302d2e8663012b6458e294276fa0fac4ab7ecbfbe73436f782", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1909582b1c8d9dddcfecbfce06705d707e5239373b9bdeeefef337a143814efd", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "fc305399585c88d83106e997864a536dd5f2b8ea6262c3c9d3a2a291033af839", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "6dd262ef9697c9a2026d3b7fb5ed718e0a67baa31745e6f974d4d9c93bf90ba6", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "b772a9e4e27a9b2fa5faa48e2a289bc3d3ebc068cd4215366bbccb745c5fab21", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "33425970a4e6d9db2e5d031523563db2c5aeed61cdd16c110030b922156808cf", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "eabe73b83f8f381b74eb60c3eef7c382c735be0bc96f59010b9378bd09ade0fc", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "85d3fa8db2269e77218b957f85ab7cacf96b6243a0e4411c58570a8750a3bbd6", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f5d0f51f57cb94cb3cac96e46f1ee1a26ce4cab8d501c666bed035fc48e26e2f", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "09382685f48f43dd6a3238a61f226583a631b1a47c2081e456c8335888af85b7", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b8e0f40e2df8935fd11934d3b421ae0ff0b57f3357e2e32ae04aeca1d260387e", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ef0ac352d95c725856ec3f13855772b8d62f66bfd54a0b65dd03abf18e680b16", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7fa54e0de81bbd0e5659965efe37db4592b5ac012826c5c9012c1eff11e7e005", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "beb3244e9cde0b8035cb4b183bf5e0b1c5cb8112b2e78ea0a18e85f852d98785", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "896ec863e81210979783b40a36f3d022dbb550f50350579e9cd5967ed0550442", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "58fe6cad63c13b2a79dc46c50cd3a708e7b1d2cb74bd97d2fe91125e84448643", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d99bf30713ddb816d2c1a5cc3bfd3c54a927662c2ff35a02593efc2d2ac7ee08", +"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "4fa4c29b7293698184e63ac61faf108b2a26912b58d2fa7171ac2ba4f8b19540", +"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "edc995779d5fbf874243bab2777105086dfad8b6f26dee689e87687c14686163", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1bff370c9344e01167a84fa80fc709f6332ad3dcb63d343f996b308a5c9df472", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "5fa5754af89d1955a868de9d8c0f16ac0e81153c9d0e969d9d700f2a3a3c5832", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "090baa600f0694e9d7d6490e5db3648994bb4c7cde24e7e4aa2283ff1207e5a6", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d0ca9bb0621411353855fe72409475273257c06b0b7127cf96547d3d9493775c", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "97b413111841a8f83f5a9a165a4b62908bbb88ee1e9e88f40d8c195574feff4e", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "044b2abd2d72d2c791a4c1de2d5a8a02938c2786e90fc3bb65d00aa62f4c4f0b", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0b3762e61964f9ab527ca5b7193fbbba493f74944391f7f764e83803f7e98e4d", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8f0eb74f70cda93331df287f3b830e7f7f641170ef7777a6431b0e4ce8aebb15", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "f9c70abbbba152a0e369849f6ce9e05c0bc831dbaba9548133ff83bcd3291efe", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2f178633743df76f198d162acd22f79e45a4a78d862ebbe5d2c0ac0717e1b057", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "733da3797b2555f9b3f2f34c95c9f83d97ed4057d9172876b51cab2e7fc57ff4", -"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "46ecfcf50ff0c6185662805832f54f78e542fc6d567e074ff899e022185b796e", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "99d6a798753b99fa5ac4012f716173237b8ccab6d35d8b9f62a5ab72487904be", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "30a11e953fe51042926f56d27e4e728d47c0f338be9ea30a1ee8043724b9bd22", -"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ed53bd2c73c0796028fdff99e52e7ad206e3dad1b5a56b78f3ff57fbc603394d", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2919df27fb977be9caeed4eb9904df9a0f76f0ccdfabbb7565018669f38dd291", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ec99eb7903d297f529471b8600f8814b312e5b2c1ffb04b0c5e7d272f88d99db", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "51f445ee6553df3ef8fd3969bce0d0a9b8b5f3a5d92e69092380beb148471da7", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "e46a148d1e84c7553a1bb83adee407459c204acecb218ffc75b4f489d15d39bd", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b53b585bc70ffec49f03ed766eeaec8db9b10f4da338403b7a5941c30a24801c", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c009bdc913b187a4c85060a1331ff1511eeba893c0e655c89dab80be93d0d445", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "9eb9c35eccaa3d1223a4fa40c41ff4f8d11215e7946209bf39df5d9c0603923f", +"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e1fa22eede00bb2720cd63652eb96d8f62f5cecf6274ae6606136c547917a23e", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f53f545446f38135630884823fd7952b5d4ac0ddbb1a08fa8f84cc26a54c152d", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7ee7e023a01ffb49420232ddac953708028db77fa1070a6de7043502fd8f2c89", +"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d04340a37e7a8a4ef13197d56446620e67515607a4043e12f7811a42a916177d", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "7d37dddfab8492f02afe004fa629afa4f5fb9f77fc8f581fb8e2e54772e072de", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6788142ede4ce7de363b3ee4e2204d2f9835034776954b21158956cef72c669c", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "78f919438ef71fa5fc80c7ef7f9d3eda33473aec868c69691995bb7532105360", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6582438e0b80f97108f7f2cd7caf92721afe2fba6bc31513280d840d3c0bb522", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2eb70fa9f5f3acc615ee2594ca083e48e273c0406f18500690982f2b1b5d7dc1", @@ -6363,35 +6363,35 @@ "T2B1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", "T2B1_es_test_authenticate_device.py::test_authenticate_device[]": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", "T2B1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay": "c7bae4d89a676c4baf0562088ab07376a2dd1c514205326508d8a772af811f5f", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "14dd9baa9b88db36bbbd1f59f35767f37280b51d9cb57c953570d1b242767dbd", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "a3f9a0ec62e952a262b2ac51438f19ebee64e7e686209ce8bcbac6bbd508e830", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "bd86a9df70923a7221f1725d1202fa279df02dd8c2798045d120d00d85c531d7", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a3c108fec15fdc16153bd669d342b7199458ca710fe7826f7ffa726a3dce5bcc", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "882e27244cbae9acba1687ea5af9cefa22a5e14a52aab926f825df1ea87f3319", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "39c34566a07ab0a139db4f7ec967421de2ca0c9e37aeebc970c9f94d7e576592", -"T2B1_es_test_autolock.py::test_autolock_cancels_ui": "aa7a58b70deabb5b5aa323fbab42ea9a994002ab5ceb052012defe3224046618", -"T2B1_es_test_autolock.py::test_autolock_default_value": "0013b263631444bcca1d48d185892fcca936039d4ac26e28abaec8e3560adbdd", -"T2B1_es_test_autolock.py::test_autolock_ignores_getaddress": "50655dee423465b388a00e3331276ba7b064873c1add4eb2021841bef290756d", -"T2B1_es_test_autolock.py::test_autolock_ignores_initialize": "50655dee423465b388a00e3331276ba7b064873c1add4eb2021841bef290756d", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay": "aaf0c0ecce0df61b04b668a541e8bf2eddabd8ebceb12e010a6a34bc03a31b07", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "842d93f084df7570fb637f3a23b73810d55b75a2526f7aef19519fbfc5378a86", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "529274a3313100fb37d443cc291fe5665f2c08101efa6ba2db73d1d7e0653046", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "4235bbee97ead3b25bbd895e2ca37f0d2fdbcfd0eee6d2e93258d0b6732b1142", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2a370512af05265553647cdbdea4d0d6828b397abab0ee1f3e192a72e9d8ef9b", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "6c3158acf1ca35bd3a3d24f7087889f8780941e4d6b2771347e9c409a3876d10", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8daa3dc9cea371e20b7c5c20e6d01960fb551d0f75cc43fca9bd13770deb86e4", +"T2B1_es_test_autolock.py::test_autolock_cancels_ui": "564a370102ca32c9e5e022cc58f44d29e5fb6ddfc6053f82107412fe51cc1f02", +"T2B1_es_test_autolock.py::test_autolock_default_value": "1b7971ead1d21fe50e97c3e4891052b7b554801f9dfa3296df266445208b55e3", +"T2B1_es_test_autolock.py::test_autolock_ignores_getaddress": "d9cffaba768ef6f87700069372b562b5d9bb59a6e3970924cf7233e0341af7fd", +"T2B1_es_test_autolock.py::test_autolock_ignores_initialize": "d9cffaba768ef6f87700069372b562b5d9bb59a6e3970924cf7233e0341af7fd", "T2B1_es_test_basic.py::test_capabilities": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_basic.py::test_device_id_different": "5d99ab091c35709fd2d388351538161738f487c01c31d2d3fa76bac690c711a1", +"T2B1_es_test_basic.py::test_device_id_different": "f8a96440ba8a97b504fe8b325bd2a0099d59b289fe741690b8db313876df87f3", "T2B1_es_test_basic.py::test_device_id_same": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_basic.py::test_features": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_basic.py::test_ping": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_busy_state.py::test_busy_expiry": "c550a9bbdc796a989d6e46a699b8e138c1b87aef7761dbad49ce4977bff27f26", -"T2B1_es_test_busy_state.py::test_busy_state": "dfaabd8f84d62e7ce0e8849097ea02e16dc095c49bb6855f8f635e03ff83fe55", +"T2B1_es_test_busy_state.py::test_busy_state": "f3fa2e344bea56a698fe31391048667ea0785bc968a2ffb3ddf632507c3fa798", "T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", "T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", "T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", "T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", "T2B1_es_test_cancel.py::test_cancel_on_paginated": "805b975be8d70b88749f35aeabb809759dfbb81b031c2a0f67d6645b825d09cc", -"T2B1_es_test_debuglink.py::test_softlock_instability": "9fc02701c8431843b697b313c3bf66d0bd1223896d0a1787346b72b25279314a", +"T2B1_es_test_debuglink.py::test_softlock_instability": "b4291af4c9035a1834a60f945ad4e73bd9fa1a13c57725b2d4aeb8a1d52e76c8", "T2B1_es_test_firmware_hash.py::test_firmware_hash_emu": "9d58ce887cde18e51f4df0c52ac8697481866bf4ee27260207925ce6c8e148bf", "T2B1_es_test_firmware_hash.py::test_firmware_hash_hw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_language.py::test_error_invalid_data_hash": "1e4a266ea51d55976cf4a1f8655e58629092b617c9d36e0603a5081961130564", @@ -6406,7 +6406,7 @@ "T2B1_es_test_language.py::test_full_language_change[es]": "51aee9f7f7e76839471274c909bcdd2c117e3fe6d9ca634ef71f1209dcb2271a", "T2B1_es_test_language.py::test_full_language_change[fr]": "0f7df785e611deec165dcce914efbabb497cba640795c8b90f396c223af7f3f0", "T2B1_es_test_language.py::test_header_trailing_data": "112c52b046074513671e25a0c27fb8e1e52c94d403be29e68890afbaeb7b5fda", -"T2B1_es_test_language.py::test_language_is_removed_after_wipe": "f5b289bd2063748be25744389207c429595f8dca2df5ff393ed6ba68d95bd71a", +"T2B1_es_test_language.py::test_language_is_removed_after_wipe": "65d12ae6cec9082b534f859708ca9f71ca2fc3161185aa1a8d00bd5952358daa", "T2B1_es_test_language.py::test_reject_update": "72b5cc4bb1d3a1024ef5348356565e711392fc379afee08a9d4275b7d627c213", "T2B1_es_test_language.py::test_silent_first_install[False-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", "T2B1_es_test_language.py::test_silent_first_install[None-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", @@ -6416,17 +6416,17 @@ "T2B1_es_test_language.py::test_switch_from_english_not_silent": "a9b0e47be4dac0a6e99582439a6225527e8e365b7e74cca03892675853b1a152", "T2B1_es_test_language.py::test_switch_language": "26c80e43afd26df2a04f55e21c44c36cf8bbb9c4f5ee3012ee7a4a5f8e2313c7", "T2B1_es_test_language.py::test_translations_renders_on_screen": "7f3f39ddad3967195db73c2609822dced686f8fc8efe77c72c5606b840b17231", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "0f9c5c41a75ae09288566edb2c46b105ba6790956d2646748efcd3c07b987a33", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "0d5ca389cd9e8aed00ab9d4b357b40d038c0d727fc61cf409dc51d3b22c60f11", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "1d2ccf6cd4b02e47db80071bc00b536d21bf03286c57c2f69b66c0d2cd7307b7", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "2e8da6d392e9a734f9355e7b83ed9fe369cc663e15dbce5a8d8d7001134efc6b", "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "42d31cb3e5f776a6512929f0a38b08f8de26752fa6f30ede6cae926558ac2f02", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_msg_applysettings.py::test_apply_settings": "802fd720d7ac519643d99914d7aeb3267eda886c26f040081fd6a6fce627b8e4", -"T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "842d006744f6e5ec00d8ec3ed6e729b20eba1681811c45ffadc0ddbef01e4f51", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_msg_applysettings.py::test_apply_settings": "3cd7fd7bac824ba86513f394f0cb5e802b12323b426d59c5588f1fd3f59d8d33", +"T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "c394de0f80cd00a4519f77597146940ac8dd404c49d11e9f6634b212c6fd8e2d", "T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "130cdc99035708d25d7bfde37f8cfef972acf0e1ad4628db33b5f7f981d8090c", -"T2B1_es_test_msg_applysettings.py::test_apply_settings_rotation": "00ae6d0f5db108d7280cba13baa2a7d16e6c2cb92ac7066a93d84a0dbf6a1c04", -"T2B1_es_test_msg_applysettings.py::test_experimental_features": "c1861214daaa9976defd978202dc4ae3fe32f5d3b85ff86f016bb2f1c559092b", +"T2B1_es_test_msg_applysettings.py::test_apply_settings_rotation": "648a51202ee2e85dae9849ee44b1884ec3ddaa9a50897ab579ee7ba7837ac1f5", +"T2B1_es_test_msg_applysettings.py::test_experimental_features": "60402c3fb339e4f27c83a88737ee52a1b46b2698a83343a78fd0c5349d172d80", "T2B1_es_test_msg_applysettings.py::test_label_too_long": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_msg_applysettings.py::test_safety_checks": "4ef5ad04d866dd8c00c09551e1eb84f0742fd5d4d2ae4605d3612d764d6c4a12", "T2B1_es_test_msg_backup_device.py::test_backup_bip39": "7afdf5bdd9889633dc2c7943a6c5f28504c7dd137ed74a06d11cb99bd8ce0965", @@ -6440,54 +6440,54 @@ "T2B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", "T2B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", "T2B1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "2b10f8a157e7fb4091f5d4f2755391c6e5d214f86542b7f168977548024bcd7a", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c2e05978f88968095f6365a4add766180ede88f1b298f6a7fe43879914ce1239", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1f77599ef03ad4fdeb71f868ccbeacc5c9f6dcaf5276403967f6c7c56ed9bede", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "044b679fe6ec97c8ba7358cd372048d9a85bf5615f229f8d320a4a03e1043136", "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "22ae79c8dc2b0d32a5d9bacddd9be52b6bf8ce8216aa69360270e746e5d7a2a3", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "bfcd2eb2e9fcf7f95fb18f7300d4ccdbd807388ef4d4f499024b622ae825b386", -"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "d79fa1505f49b7aec9c9508de31da55bb5093221d3fa7be623aa5c540d68f063", -"T2B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "402ec1eac6e3b1adcca0164837908a26857c1aa232708128b8e20db65f958100", -"T2B1_es_test_msg_changepin_t2.py::test_change_pin": "b5c6d6ed8d87b35f91b9601c9d6a87e25bad879b326e4108080d3c08291d9722", -"T2B1_es_test_msg_changepin_t2.py::test_remove_pin": "9cd99fe144e94eaadae6ef1adc12439b62745a553cc8a0664dfe5eafeb01b0aa", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b2d5b91857172df030df76df69a6faf02ea862a5126a46661810afb967c68f89", +"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "e37f90e69432d55fc03b207e8ad302f1fbd60b2617ffca07f1f9f7da10b19b92", +"T2B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "74532d48c818271fb4c2dbf25e114ab50c085df7f2356897bd420b2ba04852c7", +"T2B1_es_test_msg_changepin_t2.py::test_change_pin": "e648c43f5ff821cedacaa235e653d6e68992ea55d40ea357945f4d1ac19dd932", +"T2B1_es_test_msg_changepin_t2.py::test_remove_pin": "95744693b2962c58de35ab690cba09c72f8cd5b23b2ead000ebd37b91cae9ff7", "T2B1_es_test_msg_changepin_t2.py::test_set_failed": "e4019ce947c756c2ffb3753b86b1e2603e8d2a1e2b9ac9c08bb87758f4ac9ca9", -"T2B1_es_test_msg_changepin_t2.py::test_set_pin": "ebed946b3783686304c682d00ab75de96b95129e068b6485646b3d1cbc952b8f", +"T2B1_es_test_msg_changepin_t2.py::test_set_pin": "b52a2a5efcde8c5ab564cfea2f5b54c1a7d15f65b54619e8fb0fe90e29c79e05", "T2B1_es_test_msg_loaddevice.py::test_load_device_1": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "3bcb373bc1e4ada4b5a190348240989624fd53f965708ca36557d03e5c70cec7", +"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "15165318872f4fbf4dfe6e0fdd110edf2deb7b3f480b035646da56e76aee9dd5", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "e2107a6bd52d0b8d99d1d3a3aec17fbbefb093b8ddc8c84b537f4e54d7a8268f", +"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "70497a8ad5730369ac347f4bd10bbcbac236198ea2baa67f2ef033954e8a82e6", "T2B1_es_test_msg_ping.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", -"T2B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a6f0cc9d7151f3d1832c43201ce1cc88ea680aee75ec0237ab0227268a0d46d3", -"T2B1_es_test_msg_wipedevice.py::test_wipe_device": "5d99ab091c35709fd2d388351538161738f487c01c31d2d3fa76bac690c711a1", +"T2B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "4f4669992482e791c262f13e1b29ed45d82bf2f71db29cb9509e146b616a43f9", +"T2B1_es_test_msg_wipedevice.py::test_wipe_device": "f8a96440ba8a97b504fe8b325bd2a0099d59b289fe741690b8db313876df87f3", "T2B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "971615ec06d9bb02995c0945715b8307c458f7995a1e04c3bafe919565bf795b", "T2B1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "971615ec06d9bb02995c0945715b8307c458f7995a1e04c3bafe919565bf795b", "T2B1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", "T2B1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", "T2B1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", -"T2B1_es_test_pin.py::test_correct_pin": "6efc82f70b8dd755f513770b1d17d3becff735654715eb00b522faf971339b7c", -"T2B1_es_test_pin.py::test_exponential_backoff_t2": "78ad2f510e92b27b59a9f500ac549469a07ba8832ca24813f38211bf1c58bf47", -"T2B1_es_test_pin.py::test_incorrect_pin_t2": "ef679bc107489d2f3e4cf3c197913be73e49d5a14cf3e755288c6aa59f46570b", +"T2B1_es_test_pin.py::test_correct_pin": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", +"T2B1_es_test_pin.py::test_exponential_backoff_t2": "a5df422eee225067a7e1fd636efa259d73cbbeb3bd3d0f7b473d55186c649be7", +"T2B1_es_test_pin.py::test_incorrect_pin_t2": "91819eb7ce01c208f71754c4fe8032f451b66627abefa4d09a8c27788e325601", "T2B1_es_test_pin.py::test_no_protection": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_protection_levels.py::test_apply_settings": "fedfed36bcd8e9c1861e1fa9597865f72d4bba9ae465f2042a05d4973904a760", -"T2B1_es_test_protection_levels.py::test_change_pin_t2": "d7c383ffaafd9dcbbd5318622ab5a73112e3adaa5d466d1a33131dec4859b890", -"T2B1_es_test_protection_levels.py::test_get_address": "494d6d2608f70ec4b2183f040cb0d1edf4094065689c9d3fa901ff6639f67cd8", -"T2B1_es_test_protection_levels.py::test_get_entropy": "28b987a354efa7a44ebcdb7905e36c0b2d68301bfe6bf218501f68412c79f259", -"T2B1_es_test_protection_levels.py::test_get_public_key": "494d6d2608f70ec4b2183f040cb0d1edf4094065689c9d3fa901ff6639f67cd8", -"T2B1_es_test_protection_levels.py::test_initialize": "fa5ad27a996d806a3751eb82bce493948795f6089b10eb254b95505ec41d8f60", +"T2B1_es_test_protection_levels.py::test_apply_settings": "65cf3ce3b5c210a64be28d078426581e3dcf1909b938d53fb3bc16a134d308d0", +"T2B1_es_test_protection_levels.py::test_change_pin_t2": "95b94663acd12e1e68a2743d5d47d10f15d5f961d669eb27337a4aa20e68013e", +"T2B1_es_test_protection_levels.py::test_get_address": "7bd3803da7445aee4321789819936d1941d9e72e0f23c9304e53132e312e269e", +"T2B1_es_test_protection_levels.py::test_get_entropy": "1ef6816985cf169f70da8d192dd75e41e27d9933eb160d5928b9321a125c8562", +"T2B1_es_test_protection_levels.py::test_get_public_key": "7bd3803da7445aee4321789819936d1941d9e72e0f23c9304e53132e312e269e", +"T2B1_es_test_protection_levels.py::test_initialize": "f340a91cc4adb571e0d4d1592bea98acc59e1f1aee0b5c4d5bd8e29ab603bbb9", "T2B1_es_test_protection_levels.py::test_passphrase_cached": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", -"T2B1_es_test_protection_levels.py::test_passphrase_reporting[False]": "33e08db5b173148bde69426487fa4e76a32c0a0087df972878f4a83fc375187c", -"T2B1_es_test_protection_levels.py::test_passphrase_reporting[True]": "15b39984b9b5a4a2b20f25099df17439eb69a59c4d96fcebdf5d17e0c87c0219", +"T2B1_es_test_protection_levels.py::test_passphrase_reporting[False]": "2bac7360e4f4edd59bfb0e8a724ff61848e596859b59605b99f741773ecbc8be", +"T2B1_es_test_protection_levels.py::test_passphrase_reporting[True]": "59ec4d37d67082091feaf15ca048fc8e106bd0faf22c8fe9703fc7b89f8431a0", "T2B1_es_test_protection_levels.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", -"T2B1_es_test_protection_levels.py::test_sign_message": "9ee0893abb2f7ac2cdd4e90547383828b69584c4ef58dde38df962a1cbaabc83", -"T2B1_es_test_protection_levels.py::test_signtx": "53252d086c7cc31e658bb663a769b94af75adaff3ae76722c856850dac10355a", -"T2B1_es_test_protection_levels.py::test_unlocked": "7e49c5e3ccebafeafcd1fdd76fbc77cd561c414579adcbecb91c79177ea68fff", -"T2B1_es_test_protection_levels.py::test_verify_message_t2": "4fbbae479bace26c116b9771cd10044d1e9d6f3a3cc4ce150f0a294443789ad6", -"T2B1_es_test_protection_levels.py::test_wipe_device": "407280cffb503e26c7c5848fc9d71826be24df1410258a6531f7be58002cc82f", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "0fb26c034cad1eb818e2a6d8bc08bd58ec376e462e4f2c5cc06d6c2a7c624d62", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "f7b174e2d94c27341ab9438ae7ff60415ba119e243fc8e4d023c01e0c6d2cd13", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e51ca1872306a7d353abe1a2c156a373eebec4fc56811b123a6ccc8d804affda", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "eab673450dd9c8491a6bb346a32be0ee2b81ccc8fef78e037032297a22cad0cb", +"T2B1_es_test_protection_levels.py::test_sign_message": "46e06c41180ac21d612cc4515bb130638de3cd02364fe8bbb5e51d9bbedd5ca1", +"T2B1_es_test_protection_levels.py::test_signtx": "89015b022a2e707593064844edfda84893dc102e9dee4cd90e590ed6d07dd30c", +"T2B1_es_test_protection_levels.py::test_unlocked": "d1a7dff82167ece9e31ddc3bcf2f76f8a1789b4578e6bc39b67fc7a6bc559ad5", +"T2B1_es_test_protection_levels.py::test_verify_message_t2": "442e1f70b44e9df1d397d14f8a1c628aa9ba00b86ae318fe4f3dd6345f7b707a", +"T2B1_es_test_protection_levels.py::test_wipe_device": "e2b4141bf1362cecb872c5df9d99c7286cecc0e50127a471449ead066b33f217", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "b576a30e78cc65369bf25078c3faa46ce20419482e0c249d23352b0f0c7fdcff", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "4a22d0fe51e532c493df44a4e374425855db92fd6b758b50ec5ef90f8ce40364", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "50781ad49d2a4347265b5ae8c63a754bd78752afd4ec3bba1606b0670cf8f076", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c6d196f05387b8768c3d0b80037db9ec904f621bff9e6295c02740d270e01ae7", "T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_clear_session": "980ffef9c644ff1300f931fe756a31fa8b1836dfeda81943e2b223a8ea6fb8ba", +"T2B1_es_test_session.py::test_clear_session": "02f065568162703b39c4dd711300fa176f50a8e4e80d0e6f51d74cf3997dfad8", "T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_derive_cardano_running_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_end_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -6550,8 +6550,8 @@ "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ef13f3c0105c9888fdf2d973dc28f71658d5ddbf0b3c1f05f26b8870e74786fd", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "8facfdf6bc9b56f2723a820d1130cb2e15399787f8a2081eb1b7a80ba0180d40", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "a2f6531846847c9e3f81a936cc6c391b30b794f0397adc9055defda4a0c93662", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "0b2b1b6b4fabcb811edda118bf11332bbeedba0813a9964cd3216ec23bfc5ddc", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "0b2b1b6b4fabcb811edda118bf11332bbeedba0813a9964cd3216ec23bfc5ddc", +"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2cc813fcfff16f15f334c53c8a64e97f5d24174856d2de31e1dbe12d61c87ade", +"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2cc813fcfff16f15f334c53c8a64e97f5d24174856d2de31e1dbe12d61c87ade", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "bc3f138901692e6e14ac1857f526b8e3c738653f7f2c7d19639132ea1984023f", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "6c68537a122fa4de1ca6b6a6ddfc307fedb668d3f961b4604878e6dc87d89c4c", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ab1e06c5e72e7ebf9296e3c161c3655f2037c33ad89f33f9702f6577125a295f", @@ -7563,57 +7563,57 @@ "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "74b15ea6d56792e639957fe6873180bb7c5adf2fa700c245b00b66474aa47fa0", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "2b934bfc05a8ad1282a17b76b77896cea7a4b01d4e9383496322eda415da0042", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "194b03b326e0bd2f9a9cf7a88a09caec0163fb2c1ba5acb078a75f76654871a3", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "30cd1518a847b4e3429e094ff3010472c60a74987f5f3a11f9d96e8a8c44fe69", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4ca369c85915840ffda7e8691eebd2d49a459591137df2b4b8d1404d54a87cd4", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d45501b1ce3499a0d19c120e5bd18c08bbf97aee34fd1ff9e5cf78b80f502951", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e26620e655d62caa99650332b0e06ddabbb96f1c7340233f797a6c98cc5c46ae", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "358bdd58d485582f0df5115de54e9180df643863996939de962552dbb1027944", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "ff1467749ed3e022171ab66fd03c6568b71f3c193f2c90f7a5595ea0c5f8e824", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3d0db06890c7ed55d36f1b115df2f77b0a10e43c4bf97b65244bb5cdb8560a95", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "94de6de9fc72f92ab25494eaf6ac7d19fa5f6a71aace50d3917b49c664aab89a", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5e1cc69596f5693d7cae0b8752cf0d98162a45861557727642630a1054f0a62d", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4655521a47bcfec585f056d25cc03a130de58d7abb49e6cf288ba7ee62f23a65", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a46c6095658a0d461c2f2cecace44666220118dc9d5d52388f6c22279c27dbd6", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b7c74bfc9dbc074fb7f173aee7a2c914fcb54ef43613d0de0d0e7d8ea8e0b330", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a46c6095658a0d461c2f2cecace44666220118dc9d5d52388f6c22279c27dbd6", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b7c74bfc9dbc074fb7f173aee7a2c914fcb54ef43613d0de0d0e7d8ea8e0b330", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "0d491430f77ea78d347a6e96021ac43caa03a49e0e09d49419d2ad38be78b4f7", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "e9833c19b59419cba81c30878ca5d52c065b1e8ce8a6a48cb5396e47c9692529", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "04a6d819891a52e6be2e3f1890e62a342b181c03c78ddaab07ae7edfa0278d6c", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "ff1467749ed3e022171ab66fd03c6568b71f3c193f2c90f7a5595ea0c5f8e824", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6a7c0f2a4013e50a24d45159d831893f0ba9e56575191540c925947a54e6856c", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "644b519e32943f22b877a5e75bf1bf048dbcc5eec9f370c0fcf7d4e98c8c5b9d", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b89f1665602f4b730100e8fcafa503eec6c62da6af33b8b5ed415349a543ad35", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "57b60a05a9b5239e789c1d8fc310f2bc1c3c8028ee8ba243f2e09c263bea3a94", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7a2e2619aaf39b07c1afc397c7e198af1c6969dec1a35b015ece5eed7f4af9d7", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "51bb1316edf2a2e6b4cc159fac8fbf2a4e9a6f92844c936813915b2a423d3960", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8526063a5922fe464fcbcae8d3afd873101c898283a229253227b4e2e8580609", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ec3f8b2bed4189a2d692ac76218e03426e02c4e5a8b235fba8a2bf3cc3763550", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "52135af7288e7e0c936d40862b6a204a2a9e9ecea982206960fa62e5bf373500", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "04ffb07feb0e9b9274db680e3cc1a5b0ca8927e6553a14e8b415c91ef567a4b3", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3ee21b904ed2f46a545ff245375361b976ba51b7705702b85b46f82c621b7936", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2a4fc40c7f5e42b49cf752da5728b7f1f5386e9993100db268c269c854095cb0", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "463e0cd462e2d6481ed3217e45e439ef727649a6347a1e76dfca54e618f66fe1", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "66ec0e2342b68a3c450c2dc17fb766fb45120d53cfdbec0481c4dd2d16f444bd", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "5dbc08212313f8e6cb46bd6d2335dd6a9293bcfba62842ee0b6c56ae3b38fd95", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9b88c0299eea7a699d9ad283dedb82aa090700da292d9befa149e4369d9727d3", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6fc675d6cee62250b7e6cee1a11d2121ce428299894cff7c83e84aaaa7edc058", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "89fb7e47ae2684a3c6b9d0d5bdd97d609775c49f32676df9543ef41d815c760c", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "7d71d4e42cfb0d95e9940d79df1199e35e3e20ad3014e4cc1f7ec5abfef97442", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "82689d5010ea60666d74f29effb2a04626d2564d80830ea2914960d8a60c50ee", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "710410dd0ea29701b12d6533186efb446ea3038ea58cfe20c7bd4146972670b8", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "dbd296500e3ddd9c605d951d32319dfed10023d1ca90824f2040f0cb32dfbcdd", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "83ccf8ed3d01454ae1173b1cedab0dc74f7c7fb6fccc5eeba280072a60a66e9d", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ea2490e4a450bce7eb59189225a6a8ae4a81facf47d6bf7a35693d461dfd9c96", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dbd643707a8c52f6af9877eb65e189da826dc068fe71c553681f8c57ff1d8f0a", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "55e93ff2657c1d19221247d8b9df6ed0f78b9f438bc066f5e9b52245cfce2cc1", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a79b85f977a4a4cb8a9a3352240e38c4c65a293120bec3a360ca41b2aea697ba", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8791013b7e137f2ea6d5850ab3f78adf9746daa0148d8d8796137783ac9d97aa", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a79b85f977a4a4cb8a9a3352240e38c4c65a293120bec3a360ca41b2aea697ba", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "8791013b7e137f2ea6d5850ab3f78adf9746daa0148d8d8796137783ac9d97aa", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "41c0d1b57d80b4b3bda554e6131c71eba6e397ccb9e383588658f24ea6e0a3cb", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "388d6161798ef339d70155b056981cff8e4926834d05baae45ef1cafd6158d31", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "956780e0ab211b5421fa107baa25e7238fdb658d0e4b79a0a67fbe9adacc14ca", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "dbd296500e3ddd9c605d951d32319dfed10023d1ca90824f2040f0cb32dfbcdd", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "098e39ffd9398e6d44149e175bb5bbe7e81d51318d1a6cb87adff88788c34f37", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a804a3918ba208cf6476d8b0be23a9c5934c29073f9140cbbfa81ba9944d4e6b", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "582405fe7fbb6fa12e7cc1d1f6a43290652248854608e1fc322acd008e4dcda9", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f038a86f1def4c5c80b5b4f054b29ed1fb8e0ac58169994f53aa8ed4ffa5938a", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "67a0a77cef294bb58f28f8bcaa971e6ba97fb65baedc641b355223e77799693f", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6fb4e0758ebc6384a0e871b0b8a207a05fc66a37dfe0590d8d7b111bea3698ea", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fa24f3d4601bbcbdc4514c49f82340c1d611fd86c618db8ca38a9dca79987ed5", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "3a696ce23353a3a462fb35df46df8e9594894ea3ba2b880915f7f77b830f9815", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "10e7f1d751b9240d96b0a3d4d1697b716a3e4b72d0addddcb5567e0eb1359aff", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "b13955502df1301668946644a16c564c81068e396b30ecf4833b83c9d6525ab9", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d4f949f97e6053742b385da90442ef600f59efb7c7e0d1d32aaffc402ef88f9d", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "064ed23fdeb54e17562caa9805be48a4754affd6a2b52d3e29410ee413971b18", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "812ed55f301299142808c8de6e9bdd87e0e89e92fae91c50eaa26a1e6442451a", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8b919001496bce610c943f5f2fe01171decdd08604003f37dfa0b45565778898", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "63795b3282ad190c09827eb1c429a7bdb23a2998fdb6fd9032a14c7b7d6b5b9a", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "cd2ba4730c9552b5e36593bce256705a5f6f1576ee255c4a5f0af16811f43a08", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "0aaabd5b2c5d7d7e9bb282addf2f0b2c4fad0fda6088adf8aa8c086d69ee9c40", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "63c889efd6fedf03c02beff64eca70baec1df92267cd5f5fd86a842387605051", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a28e957f9e5b7275c5f4a160a04b10959731bd616711ee9ecc49befa531037fe", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dca0b979475234a86f863ff4c1a13b2f1232a8f1937a83443d0331e087359f63", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "ec19b87a13aef8ef4dfcc78011d3c7c1e98ce2584e9b1e78b59398652a8cce8b", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c391f8162af600e065cc9bde350f7ad8b09ee22d70b1b9ac24725f8cc31b69c7", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "b25670dd00f1fb35fe91705c538a7f5750a93eff15f1d1a21f986f6e3fc79949", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3a0fe6299cf4672d1ef4fea334e3ccd9ec64097934331c8392a5f32bbbd66cec", -"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a7e073005999550adf0805ed4b9d6ccd95ca4f938cf60cbfae063c7c9523de01", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "841b4976348b5720f7c4fa6097f49c8c88619501df94deeee55398e768027538", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "18e73ea0df112c6c2ce23886f2da4067f488be449c0264565f50d97bc0f022bf", -"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ef315f0941f76bbf942a4140151a1d554ef0aa872b9420a905ed8c464a6c36f4", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2ccc6ca7d69a68b5858c5d4934dffa03562a1c6fb7f35ab479bd2e7d18a2975d", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cb110055d62b21990338dc5cbfdea0c8c813fd6ab35144414fff04bda2974426", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dd7fef4dca56e9d2c666c20443451860a141a00fda216d26eec4156c795ac15a", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "33c2d5ca1659f4a8c05ef063b140418c0c379320c4b6aaa2eff7bafeb965b412", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b6b0216f45d61acbfd6bbe1acaebaaad12d5b39abb3286b7e434e3fd14781bcf", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "869310a046e43e9ce99abd326f4a202108ef151f8c55d2d4260e10bbdae53154", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f4b83c0be7ff1632ad20fecd8c07aab0082e7b796ba62a045aebd404d467616f", +"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c0412c4a126d1fa058abdc26f75507f54a0eacc9b054d2412657659434275501", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "dd01e90fad183bf67da5ad171cac53e10a601f4d377a65da90e0152b2942d044", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "057adee0ec3fd05d88171ce23e8041d7fd4d3398834a35404a0febf11ddbbc7e", +"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f7f4667d55d4836d6d6a880a3a259ceb17e14f31d6e879f3ab2bd11532db3a1b", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a7933b0718f883cc38eeb7ab62662fb6dcbdff1e339402a75987ec7f1ad0ba70", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ca680d139f00f4835c746ddf1b269bf6e319cd637271b640eaa07ceef483e1f2", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "851bee61c1b9d2d3417144b6d0504f0ae48409a1e01da5498d6cc1c4a5fb9e0a", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "47bc3fb72c06124191ef7e9586df146a892f87046107218384d08b06baceb34e", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3256148778d8e34a180b5ca01b0bb41ff5cf573055a8b4fea6a8f42aa084b5b3", @@ -7754,35 +7754,35 @@ "T2B1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "230797e47cff136255e693ebcc18a99b34607f782c986a7bbfb972b3d2c96231", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "3361a26a0e268488acb40c0b4fac5d1520d240d1d62011e3f2a85b8433ab5727", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "7b15cf1e7b8a26e7ec8c87e95e3928c6aed07d811592f7fd6e8f4688012790bc", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "db2bc1f117733b393f4ee44c6e13ca2600602c9b995a14d5bf325ba1c2918087", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "7d50ee33b8e74a7aedc93f1f36c0a7062d6c9a84023731a7786457fccf844aa6", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "e4ee2a67791b943192e2d20ab38beabbc613e2379134a756f8c6ed652f139c99", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "669e33fc2cf3f5364304f27a750cbfc5b3894a32d3ae18af3c28108149c3e14e", -"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "7ca0d8884998733c6827101376e8e48d6b90650d2f032016f33a6b24536a62bc", -"T2B1_fr_test_autolock.py::test_autolock_default_value": "5099b0a452966b3dd842aacba8404269d4c656ff7e6f4ee605adb85120d605eb", -"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "2655228a3e9e307973fe8c0e9e4701ed610bb872a1e3d19caab6ceb41335851f", -"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "2655228a3e9e307973fe8c0e9e4701ed610bb872a1e3d19caab6ceb41335851f", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "baf64d77d3123de24af8e9e716d09402be2c8526c483b329a9e98db9be3563fb", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bc288ac32aa6f282ecad1b8ee6fa8d46baeba144d71f302866f25e88fce96648", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6bacd86c766a4b53acc9fc80801b3644bf8b2122572cb810abbca5bad0f7f2e3", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "77627d2bfcf00e4e8eb272dfdd48e24fa5efb7e45b34838b32ba4bb8ff5936f3", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "3fb14495f297c10418337e876004f8b616dc227312bb8ca43cc91cc30edfe6ad", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "62e7de563fbdc3c8c54edb59aa2d6df577f83b327d4e21d84b13fb32af3e4725", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "80fc41f0321e159b3d9b8097d46f587585081bf2c7c14154e5592aa4de148b11", +"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "a7b3c45120a812e7defee73a0bf8b92af938d70a08392e4a74400b08c09b3279", +"T2B1_fr_test_autolock.py::test_autolock_default_value": "be4113440caa9c9976dac564d7040fd0e29d824a91b06fbae91fdbff0cd663a8", +"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "9e9f0a6e3d9e9fe56deeb0df58fe0500bd406a356842c3a00944aebb713e90c4", +"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "9e9f0a6e3d9e9fe56deeb0df58fe0500bd406a356842c3a00944aebb713e90c4", "T2B1_fr_test_basic.py::test_capabilities": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_basic.py::test_device_id_different": "960d2712951d706d1c588545edb7eb3f2718765e24c172d0dfbfe4b10b20ed17", +"T2B1_fr_test_basic.py::test_device_id_different": "1f5525585c477a3fa88ed865c0a57273c0bf6e73a4d483898ddb49f5dba3589d", "T2B1_fr_test_basic.py::test_device_id_same": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_basic.py::test_features": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_basic.py::test_ping": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_busy_state.py::test_busy_expiry": "3c4520b8aadefa089195d16d37ebc6f834963a65fa4df8eeef3fb981d7c78615", -"T2B1_fr_test_busy_state.py::test_busy_state": "c772773c3f7a94a889f997454d1ddd530b705f38d406965d34a74beba7df9ba3", +"T2B1_fr_test_busy_state.py::test_busy_state": "d665ba0f5f660fa4ea6284c2c7120dcedb63fc4b6047d47ed60ea9552218b52e", "T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", "T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", "T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", "T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", "T2B1_fr_test_cancel.py::test_cancel_on_paginated": "60d68603b1bbdd9b041ceafde30fd6444d265b375dfeaf215212e0c9701d1a17", -"T2B1_fr_test_debuglink.py::test_softlock_instability": "d8951e60aea2164863302838edccbf0f0b4e326062b3e02b8d366cc5e6f0ad51", +"T2B1_fr_test_debuglink.py::test_softlock_instability": "b8db22e0f833d5c81b0dfc6c12a220038e90d2a220a257e95d717fef784a4212", "T2B1_fr_test_firmware_hash.py::test_firmware_hash_emu": "29f74094a536aee7cafbc2e63fb29084607787ab9351a9b74ab74b20a34c60cf", "T2B1_fr_test_firmware_hash.py::test_firmware_hash_hw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_language.py::test_error_invalid_data_hash": "c3c594c2d963c7562250b5cae43e6933a6c67c8b7aa7063e58de94e56fdad446", @@ -7797,7 +7797,7 @@ "T2B1_fr_test_language.py::test_full_language_change[es]": "e27434b09eef1556fe6fa0b050fb2b43eed6b4f37d622b7831a5fcbcde3f72bd", "T2B1_fr_test_language.py::test_full_language_change[fr]": "7fae72778d7111b0d7746ce3fdfdae724415f651b2c3e195da55dc3cf6e24f8e", "T2B1_fr_test_language.py::test_header_trailing_data": "30a19ba738d7bd2b5309351740a5102da462e73c6ec923a0ae92dc385c1c6f9e", -"T2B1_fr_test_language.py::test_language_is_removed_after_wipe": "a7a194ab630b992155a116a4ee46f4635c2d3d63555cbe3c6631fe1e6dcaa77e", +"T2B1_fr_test_language.py::test_language_is_removed_after_wipe": "45b9b6a06064ad9b178f8d8e40267f5c52842593ab73609ac4253b08b2b0ee6a", "T2B1_fr_test_language.py::test_reject_update": "4c1d851a4f7ca6075e71d096a4b124b31f8ff280d609cc2495ded9750f057b51", "T2B1_fr_test_language.py::test_silent_first_install[False-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", "T2B1_fr_test_language.py::test_silent_first_install[None-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", @@ -7807,17 +7807,17 @@ "T2B1_fr_test_language.py::test_switch_from_english_not_silent": "2d59eedb25da2468512d9576ef7d7f4528804d4fb8bb1921d4ee8d4d20d91196", "T2B1_fr_test_language.py::test_switch_language": "d64c176bfb4ea6ddbb57c7b609ac0983b335ae0ce503c653480d379caf71976a", "T2B1_fr_test_language.py::test_translations_renders_on_screen": "c96510d7b9812933713c70d22e2a549f12e888a28d8a2624a649d73bf3871d12", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "cc2a971bea1961b8f83db9163ceb75fdfefd0691cbd578fd297b26f3069f5557", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "0ff4f3d608382e8e96b8c457cf878de0a84b61fe8d4462f0288c0daee1b9923c", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "dff1e20db00e7445a6bf6f45c1e409fae384e0b59308bbf86b226a76ba9f5603", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "4b78cfafde8d47ad5190c86f9a0f22142c6db6400451176a4eb61a1049896461", "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "55fbc311b8bac5c3b50b0c3e0dee2677d696243418d6695fc3cc93b1ab8f0032", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings": "0ce53f3674eeb019f329302658ccc492d0858f384ce9a13b37a03cc8a9309b27", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "c1b835279bc81667a9cc57eba5ff1473093e144296592efd529906b32ccf0f91", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_msg_applysettings.py::test_apply_settings": "b044613741517e2eea55bf9ca0539b44dd4e4462abd67e5112fc8b7edca5bc1c", +"T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "9fac9f89816aa4bed621bc6243a8939fe86e8813f3c72cf56f6840bf5d94f372", "T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c2af499645a7ee44dcc4ddbd9e9df812493082162739ec035b406dbbc29dfc3e", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "5356daa0967b68d5c9877abc1d376b7b2605835ad8559deeac25c0bdf2afc592", -"T2B1_fr_test_msg_applysettings.py::test_experimental_features": "0f4c5e072ac6d8b3b79ec627c72c15ac39690ba89f6f29c1da95539362b2a0f4", +"T2B1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "1161a50ccabd3c0fac43ece6e75e651df600cba4b205f0e016f8bada88db6916", +"T2B1_fr_test_msg_applysettings.py::test_experimental_features": "20d5a290c9c33b8526b0c14d5b49c5bbbf590ee1632e3bc34bc1d46f0b3ef35d", "T2B1_fr_test_msg_applysettings.py::test_label_too_long": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_msg_applysettings.py::test_safety_checks": "6cc280764a02e46da93f042f4b6b2fd1ee4464a460d75f7c0fae38759728e4f4", "T2B1_fr_test_msg_backup_device.py::test_backup_bip39": "c8377359bd7bd73fbd3f168e775e3a27a52c6e33b620c58cd91b64a7c9d98838", @@ -7831,54 +7831,54 @@ "T2B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", "T2B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", "T2B1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "371819f81b71d649e3651d1793a2866bf050a8f82bf647c0d7fdf88ecd478075", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "15e4d4dc16d24eea2049675eddc8d29eb8bd77ee63c8bcd084b5a0c6cbee06c9", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "754ca5864d4deed648872c8b780141ea9841a552a5f510f54c1a46a0bafe51a6", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "659fc7272a62506b6ae48d408f2fbb24e119028a2224f0f18d72ffcd0dc6ef3a", "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5364e98bc3e6941907557b4d563bd51b1dea6c6c2b789acd75cf81ea3b1f2b44", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c3376efdc912344ece8840ad8df189c89d37f8869a0badb8e899bcffb27bba12", -"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "311e8461d17fdb92fd1a6d29e485973a5a0bdf6faefa798f18dd742e9b6c98f3", -"T2B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "5d9102a9d47e0fe4c2a89b56d2bda768787a9a6170fe95f15180a023a0da4043", -"T2B1_fr_test_msg_changepin_t2.py::test_change_pin": "16eda873ebd99eb3ef94ab98187cccd6fa6d630ed2151b385d2f96ad2ffe7a10", -"T2B1_fr_test_msg_changepin_t2.py::test_remove_pin": "248dad8c0f796f0bfa8f24c1213ab207a2032d5568ca714707a9a42acb377e1b", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2fbfb44a5b9ed2549a0cf83c851d5ea542dc3f17a318e6a204109046ae457ffe", +"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "9eade46737746d6a0d8f90e6668d0ce0ab476afcd737b3d7a224759d84806eb9", +"T2B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "7d662c4089213411418447eca9ee81924bc3f1fa5221df5c0265ffed19a16bab", +"T2B1_fr_test_msg_changepin_t2.py::test_change_pin": "46015ce68bfca2c5fc3e778db49cf960910c90d0e185fdf4452fa691c1da671a", +"T2B1_fr_test_msg_changepin_t2.py::test_remove_pin": "29c37ad0eb3e0a18839afb654933037af54b7ab1d2d6fa0cab23c1be5f2e76b7", "T2B1_fr_test_msg_changepin_t2.py::test_set_failed": "c54eef85a1d0dc450a51346dd3d7427dc351f24c0b2350c878cc08b48472476b", -"T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "a5f4bb1f4708018e27cc69c8b44b4af3a1933b57dcb113c2214b4d0caf4b2b4e", +"T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "a93c2eea7a932de587b4d2037ca677efb9346c0ac4e129137706f27b74fd20a9", "T2B1_fr_test_msg_loaddevice.py::test_load_device_1": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "90c610ca45224a9eec9d80e32bc8e21977c6945e925470dd49aace859e45f01b", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "0e1ae49a558b9913aeac0067c3c3cc4dec9de9f57440bd06f854fda6d983d8b0", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "97b3033899ff61437a5ebd4e79ecd3a8bf1c11a4194d7e4000ff4268a2775524", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "613e53351272762e8eed7928f36c8f57801d7eefda18338482ea3808deb6e920", "T2B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "7f93eea2cbfcef42295eb67d50d9562dc76a90dfee9041ff05bcba60085d3b82", -"T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "960d2712951d706d1c588545edb7eb3f2718765e24c172d0dfbfe4b10b20ed17", +"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "8dd8ccbcc59b743da50ae4cf18de76f01759b7248f60575d75af2335a949f380", +"T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "1f5525585c477a3fa88ed865c0a57273c0bf6e73a4d483898ddb49f5dba3589d", "T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "cfb9e3e4e192b4e4be3cb9589e3f89686929030ceea7fe629a0c10612886498f", "T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "cfb9e3e4e192b4e4be3cb9589e3f89686929030ceea7fe629a0c10612886498f", "T2B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", "T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", "T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", -"T2B1_fr_test_pin.py::test_correct_pin": "cee30c4095dca8810463ce7582563c229e3fc82a4ad3d155c57b5b30aa1fbd65", -"T2B1_fr_test_pin.py::test_exponential_backoff_t2": "d93978c7b01dcc3819595a4f76343b227fdceee7e4d70f5b14c2376795db027a", -"T2B1_fr_test_pin.py::test_incorrect_pin_t2": "f05b31710bfca662821c34ad797a3b53163729e76fd79494a19d80d56ce89a56", +"T2B1_fr_test_pin.py::test_correct_pin": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", +"T2B1_fr_test_pin.py::test_exponential_backoff_t2": "d15350bfd583a4ced3083fd4b8df814318369b8c4bb89c6fa9f3de0684a974a8", +"T2B1_fr_test_pin.py::test_incorrect_pin_t2": "25258ee576b744253e433f9ee6e385f0d403d88080a94c61027c8482b3dcf58a", "T2B1_fr_test_pin.py::test_no_protection": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_protection_levels.py::test_apply_settings": "f8cde865d9eb752ccd56d92b86492929b5aaae985d3b05067d02150ac96e3759", -"T2B1_fr_test_protection_levels.py::test_change_pin_t2": "e6bd00b17137025c7d2e5b32adf28bfe5371f4c85585d11edbaede3d8c9434da", -"T2B1_fr_test_protection_levels.py::test_get_address": "36197524003da43bf2b559f4c2ce9cb3fb8df03ead75599af8a49b7e5ad4d28b", -"T2B1_fr_test_protection_levels.py::test_get_entropy": "a04c717eaa80bd59fa114e23c7fc86255cba9bdfa74db4dc955c4434f9d4b575", -"T2B1_fr_test_protection_levels.py::test_get_public_key": "36197524003da43bf2b559f4c2ce9cb3fb8df03ead75599af8a49b7e5ad4d28b", -"T2B1_fr_test_protection_levels.py::test_initialize": "02bca869d376f3c714b3329bef7b10434facb9b9b6f257f4be4db872a0137940", +"T2B1_fr_test_protection_levels.py::test_apply_settings": "3b1581a6ed0caa64f8a09a259812160ce919fd0af9c47e1e6bced63b0428140e", +"T2B1_fr_test_protection_levels.py::test_change_pin_t2": "bd3704c0b8bb9e28ff9af7c664ded92b8f904e3c901976856a9673c3f2641920", +"T2B1_fr_test_protection_levels.py::test_get_address": "23001bd98d3d88b2bb224c5f04b226580de8b245b24caad3b35eb56683a2160b", +"T2B1_fr_test_protection_levels.py::test_get_entropy": "4b18b9d99d9e4b9875fd4926b8e6d0c5f2862dbe2ec4a94d1e0e1687fa5eaa2d", +"T2B1_fr_test_protection_levels.py::test_get_public_key": "23001bd98d3d88b2bb224c5f04b226580de8b245b24caad3b35eb56683a2160b", +"T2B1_fr_test_protection_levels.py::test_initialize": "0facccddfdb226334c131cb38254ddd5962cad4719a826ca198b9275bc9b4ef8", "T2B1_fr_test_protection_levels.py::test_passphrase_cached": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", -"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "a5be633fbdfdc006956e7c139a01e8b586831ecc9b4256cd97da14bb64b769f8", -"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "06a63c50f118177a031e2c672ce4009819d5f5299d2784c6ba8c4cbd9b434380", +"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "3240f05603125f9e3b7433b60ab13b5f1c5c37a2faab9869c49f53f631ecbbcc", +"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "010c81115dcab4f2a10e91c252c820ea0a1e3b6b36da5c3a8489abe6aebe8dde", "T2B1_fr_test_protection_levels.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_protection_levels.py::test_sign_message": "4b829662889932d1d72f97d9eaeb7276ca8139699c42641a1fdaec1ffa522b02", -"T2B1_fr_test_protection_levels.py::test_signtx": "1c24dc4ed399862e558ae48bea44ee9a515ebc6244423cc13e165fc970dfa0c1", -"T2B1_fr_test_protection_levels.py::test_unlocked": "a60373cba99b534c687d3543ca00b1a1bfe152e758ef2471766ad75efc4740b6", -"T2B1_fr_test_protection_levels.py::test_verify_message_t2": "3e88a839e35eeb0948de1aeb83ac8f06cb91c5a8a4517f488d4e743d2eb15867", -"T2B1_fr_test_protection_levels.py::test_wipe_device": "63b8efbe636c36ad664ee33d5f8fbaacfbedfed2236096f3b08e02749f5fb89d", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "e81dc319fe69ddc743253fac993233a14d8e3f7f59c0d0a05ebfc06b16438740", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "e24ca689f6a4db15587e42776be179e92006775c0693e5ccff8c051cc4e7f482", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "d66f6fb97e18f8198414a51c35820a68aeaccc4db0ede5513ebe4742a6640346", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e3102e8c7bbfe6474c7ed965db77c481d5db4f4ac9ad6236e3446ba864be123f", +"T2B1_fr_test_protection_levels.py::test_sign_message": "b380d161b84d2a005470bbaac67827fd6ba74802cb5f16eff0960760e3d488e2", +"T2B1_fr_test_protection_levels.py::test_signtx": "0cea4355a59536a0c39e4bca4a9c5177e67409ec0aad0d759a20d54dae5f2807", +"T2B1_fr_test_protection_levels.py::test_unlocked": "2c716e0d2ec26f8c7437949dddf44da1a015235606b5192be3cd1b79a851dc1c", +"T2B1_fr_test_protection_levels.py::test_verify_message_t2": "c203e5f88604397905ae74a8266d50925af6f472a346f350cc19a30fad13d2c0", +"T2B1_fr_test_protection_levels.py::test_wipe_device": "872d579cf9f96b2bdbf0dcd2cbe91fd5e16555a286620dee48904622828d581f", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "db554f0690f1cc34e5825e08e19892b7649e63402008897e4ff3e7f7f941ad62", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "e64fa82d14ba1bff479126526d29c81d2ca76e7307676f80bcfd87650854e046", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9a8510de7928962da87e3dec4f6a6a31e755a653f1efe9be455d00a6fd271389", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "846c93ec262d52ebf476cb880870654e922f177d097dc5542ab31a2aa53d28c8", "T2B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_clear_session": "f217db103a83feb3187047d23f5ae3c9fa2f9a87dde2a349f4fcfe8d666967d7", +"T2B1_fr_test_session.py::test_clear_session": "92606bb08ae39488007a5161ebfff9f6692612bcaf79556a9f919591691a74d6", "T2B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_derive_cardano_running_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -15564,18 +15564,18 @@ }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "40986c8eabc83c14d1007af63982128300e790c064f6610779128b03a216c7a4", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "61d721ae6f0c1e7d293928cbaf4af2b72910f50d1f1ca1cb6b9de4e80f1a78f0", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "eed9ba701f97208876978868cd9ba17b4d7446ed9b94059ec1e268e437821372", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "cdcf26642e1f61bc4941b8358c960040a9ab7a34b4ec579d7a5dce6ef563152d", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "4f6278e0e915a7012ce29a8b4bfcc9f72a793e0bdd1b30a365cf56adf7bbb19e", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "3167dc530369f3f290c3942f2516b7684e2f6fde82d7c0c4ec6a43de8f83941a", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "2516c0fa0cf9dd9b82ccd79b343c2f5a5dc2a50f261ce71a312f24cac81d3b6b", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "b170a390c0a8a055c85e0352bd611529cb29bc4aec66aeb768c78dc48fd2dc1d", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "be27454992dae1e2f2fc8648bff5d6803aa10ca4918c813b5d44d428e95b11d1", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f36b238d7f8bae2a962d4b171c4441079e4674fef67adc313e98068b75f34756", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0b857e181d9ea0d8b4d1f4eb7f6ab58ac4bb98a9ff1af3bc18d371f0fadf2df8", -"T3T1_cs_test_lock.py::test_hold_to_lock": "bb56e1f09fe410d1fcc6f2180e4942a407e97760d797a11cb483baa017d317de", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e31de955a6a977a17084cc67ba9e7d841e313af75c0185d219d33c22925872e8", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "8417a66d8fdac2bb40dd9ca340acf4b84fd6489601df46ba68a379ce3021fce7", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "8f699765bdc1dccec23580ea4d81ea80abb9cfe6204aaec5d1aa7a1627566538", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "24fac8a71e4fcd5991e9ff9326cfafc06248c5b35e86486c63acbe4c2119d6ac", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "1ffc95cf89ec602900d014fbe0172e6e268ea581b31b2e383541d2a84c928761", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "37494c1a3e7355c060d2e7be8caa5e27bb605837687319d22368b5e9b6248558", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "466e518641433bcf023872d0c4e118ade406364b4f49cd6561e8f8bb1fae1083", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "ebcd25ca623d4a4d5cdda21b23639c2aa15c4c7de9f3fa2ed6e3fc34b151db8c", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4d8d5585d2a660cc80ed787bd817f465cadc6ffccf007ac82886443708baab65", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "169c40a04535510ff1ea7f3f9c62c178edec89ee95fa5fa2f419a13b044ff45d", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "4e3afbd0132bd66193f6a93416ca099b5654d5c704103c8bce62d33af24d0429", +"T3T1_cs_test_lock.py::test_hold_to_lock": "50786fc6b08808c23d5f495cdc1fd26e2875d43ea27e64aad57dd873ef90ea73", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "fdb8bd6a3e599448283dceaa4498a3172d0c60bec8c5d564ad8f39f35c87411f", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "4d7dde39879cd44ae810500ee3d78a17dfba353978fbe6fc68f752fef51c117a", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "a3ceb2aab671fbd86effe007265fde26f07ed36ac6c0cc4807061eac0b20ee60", @@ -15591,40 +15591,40 @@ "T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a67d38203018dd5ae3777180568df9066501bff83bfdefe4de19b16f1a95a4d7", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "5d645807f80f60a8ec41060feb0f1a03b98bfcf6be51d9b6fce46abadadd6c5e", "T3T1_cs_test_pin.py::test_pin_cancel": "53786682ed6efcbc1e60b6565463732fd4d5fe3f19345e0cf8ecc93f8b963eda", -"T3T1_cs_test_pin.py::test_pin_change": "63d15b7dd7c1ddd722119213714c1f936175ece07968f6f286c010023b3b8e4d", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "008220458873478e2fbcebceb0a4eabaa0b009dcc2b2e426723f9def3afdaae3", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "31d31d9a0e0043b6ab2d819ee6f9f0130a769482a22d86a009033c059e4c6dcf", -"T3T1_cs_test_pin.py::test_pin_incorrect": "08bee374cd6f1bb3fd3af5dfe62ffe1278dccedfdd5b18dbaf417c3bb8d2dbcb", -"T3T1_cs_test_pin.py::test_pin_long": "f6a9b08d8614f79dc2605c6b3dc53fef8dcb23184fc8b1cb1225c42d092fcc05", -"T3T1_cs_test_pin.py::test_pin_long_delete": "bb4c9b23e353dbe3411f4fd51e1508769eb8d95a92f550f3a8884b2a5e44b156", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "c56ebc082f14a20454a9e9f7bf9950a16bdde82c56adb40295ed51b70dc7b242", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "8fbfdba11cb93493303a016dc7dec0ca675fa85678f421131722f959315ec55b", -"T3T1_cs_test_pin.py::test_pin_setup": "c31d56393527b5510f40a32f3adb27d1f987e53e35a41516bed314d5da2f9267", +"T3T1_cs_test_pin.py::test_pin_change": "941355e7ce2c8383ae87405c6cf090941e8d817b793684dc32cce8f078cd5ab2", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "8a6ebfa096c6d5cbd943aeecedecb1e2d509d09aa9fa24d8aabe564752e7cbfc", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "712cf74607e464405fc9c542a8172758326393b22be0e681548e9e544187708d", +"T3T1_cs_test_pin.py::test_pin_incorrect": "cbf00f2a53844ee9e51562ed40630a653fdac6fba48902ccedac9ac700c4f321", +"T3T1_cs_test_pin.py::test_pin_long": "c6396e0e52e157cca354b3a26f8a5662560aaa3f68d8bee0455bae2aa9f07c20", +"T3T1_cs_test_pin.py::test_pin_long_delete": "be7703ea6177573ef084aa93685e513a6d3045cedaefe538e190138dbccb1e94", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "77d6ca1e73f74f8f41a8b7830dba4d56e7e7799942dd0777a146e9c961701816", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "37ea71178c6d972cb7117394086f44b2db256e5e94491533bbbe6b299f285d11", +"T3T1_cs_test_pin.py::test_pin_setup": "ae25de879f714d686a6200446b0e1b17ed928264791d1fef7e2a5d2121bd70d9", "T3T1_cs_test_pin.py::test_pin_setup_mismatch": "c4d01c4db01d2af326f83d817d025cc4587e0ee486bbbf4cf5e74162d05fe0c9", -"T3T1_cs_test_pin.py::test_pin_short": "31d31d9a0e0043b6ab2d819ee6f9f0130a769482a22d86a009033c059e4c6dcf", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "0cfbfe3170ba066f85f70d127db88a5e9a5a6c8342e235ab642f0c9b0b67c7a4", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "46b6939b2dfefa922d38df317484324f7733a31a93ab9bf2308ffb6aa74f1d33", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "d812d59dc25317e82112eb34d337380a4cdf68c2548c824960400f7a0381c976", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "e64d2d3b1069ce3300a8abafa7d96cef3a03981548dad9beee1be2270769d701", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5e5f9492ccfd188144df29ef903235c948f15e016759f112e50c4910cae42c17", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "aa59d975e4186c31b29071b155b110a639896fff529a13320efeaa4790695156", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "074f36b41c2ffdda2d0cc3ee3397a0929c95db959f0ae92d4a7d62735bde8377", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "20db719b7a423884e3ffe625ae11a4e1038d6ac90ff078b1fd67e2f407abffaf", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "21557eecf5d217df35c2212c51485d65377ef7fefd2ef74b53464fd2aeb087dd", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bbca9f56144482c80b23f19143f3c96c974a4d39a9204a2a082e133a970877e8", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4406627f20133d40308f7bf0cde62119806204255c8e82c75e94c8bafe84910a", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "569d825d6fca86078ef3ccc04dfb9fd3a11d895f55ec59fbc601280e3af800d5", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "64fdf9721576f23c5b534a38f98309d770b3f636c0b7784b590875ede395c5ba", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "ce8feecfb19e4f522de3710d80dd374bc759e4cb21a24696d3b15627a2ce1da3", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "9a81fb3ad40ac48cde13fe222bad51a17210a6b60998c90b6089ad07b06fc979", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "1fc358b3e04bfa9bbfd7972242d331c323a313440b78d35c9962eada5615fb85", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "37ee41ae1520e3ca86a37fd67227754bbc570f0943831adf49481d613aff2b60", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "c79256ff45472bb155d185c2ab33b14de0a6381c5f42d190100b5942883cedcc", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "5cd0337a7f758fda31b76fba95b0b11fd007c15702bf372789accf8f69feedee", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "179586cbf597d9ca3d74f8aa82b73116d82b7e014bfd634cbf6b29cef76921b9", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4851f1582d92000629f3bcb127668b89c316ce9ab56d4b693ee387378a9b1eb2", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b88497a249dbeb631f3eeb79cc4b5ed71e5178263e71914ecaeb36bc24aff073", -"T3T1_de_test_lock.py::test_hold_to_lock": "4cbca495490833824560344224a26c6c8c5960d8dd088aa355b620f9ac39a1af", +"T3T1_cs_test_pin.py::test_pin_short": "712cf74607e464405fc9c542a8172758326393b22be0e681548e9e544187708d", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "ea07b61cc605e2f0c1ac87191659d9125873d2d8b3d55c182a0981528fefb4ff", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "24f94267a3f38b1eb6451121b30b731af1766d2e7a3ad811e3a5d02a009b90fb", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "1f0d376cbc956410fee0a247d59ff0cedac84455c9226ecff93b770c3e55329d", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "eb493ebed82f777bab258d3c7aa332097af3361a8958b9657bbe89dc34f1b4ff", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5bc89b21d10a249dc37a401a02507da00c4a94d45a3a558301d15e79dd73d773", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "cda3e7dc81201cb98f782bd9a75bd63a084f2514a96ff393800995333339054b", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "af08f9c57e0313204467c2052325910540fc262b9e3dedebc1fd94017fadb154", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c14745d7a3b1da3d2047df835fc9855b3fd2b9a45495d0dc6e2e9b504ca0c2d8", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "78278c5bd47d32d219785b3a0c46aa1847a316ce668b174eaeff4749ed44581e", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d2d81332ee9d371db11d5338084619ad0bc77064737143fae76cd64236143c16", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4450227fa8e9c17bae7b1bc846969f25032720e8c33252e653cd38082d78da22", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "cac38fc39a17bc9a791d1ef484e36e8029d461deb34aad557ce3775971d5ad00", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "48bd221a35e5006f73663f6659205f16f3e8b77c33cb4426a27d15b4947c5ec4", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "0deac92396a44ebdecd195bf703af9775dee0658cc451020f19155acca56f7c3", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "98a84d89acfdc4be88d4206856716d166ac5143d9a7c9ab4400f4b70e47937f1", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "903a902d56f73dfd6a27b41cd933e45bf2515f420ddf1115c9c59ff3693ca1fb", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "338d689746907f33748bc2845da69b8ec91f6ecb4c995ebb859213ba58b91bf3", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "a470758d3590737b8d0d600a2371f5bee02c98dca92c91511028d375279bc2f7", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "2984dc89f26a0e70cde79349d29229ea913162c942f575b74fbb6984a1c2ebfe", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "bcb7645bc4d222924b4425ded261477f01f76164bf4fa66376de2d337bbb5f7c", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9e20442ab0e637f28dfa550552eb0100420a80ffb73571eaf1b2108d8f615085", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f8a3d5f95eccff6628eacdb6385af702eb80fe39beaa08658f2f71aa740a4025", +"T3T1_de_test_lock.py::test_hold_to_lock": "a3d56d03ebb4eb9e7be654d6771f42b241a31325f9af4bb9cf795d7700458f67", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "e6903cc676f6727c02a8d28c44bc1a74e8e5c54a77c50d1b2ba4b32264bb1fff", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "91aac467a55bf577d4efc6921d17a843c5e996d8076786dd4c2c379d57eeb353", "T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "3be73ec91ad1a5e0c91ed7f10bc695743f6c800e0bba5c6db5ef2df2465f8078", @@ -15640,40 +15640,40 @@ "T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "7ef593ebf33caf92fab7eff37a67c100083f29ee3e16f08a75b311b4542d7d84", "T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "1a2336c6e8c06abd08dd377a7fc0c5863d521a57717bf5cfb8c0d3fdf40754c0", "T3T1_de_test_pin.py::test_pin_cancel": "17a2eb9b4ad904e86b6775449d448f100a35d82a809cfd7d444ae856dbc1a341", -"T3T1_de_test_pin.py::test_pin_change": "86f3f245435518accdc0de43bf9858812870d34b61e036124e306b3f964196d9", -"T3T1_de_test_pin.py::test_pin_delete_hold": "157bb08f8a2f7426d73660fffc3ee61fda5a06f89daf71740c4dc9960d029d06", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "f20363a084e52a612e2db3954bef2323ac4465f94b55a12feb0fab89353eba0b", -"T3T1_de_test_pin.py::test_pin_incorrect": "aaa3a90aaba5bb6282673cfa5dd62c6c767824162d621bcba6d0dc4e97d890c1", -"T3T1_de_test_pin.py::test_pin_long": "b8497c4156671c80336156c05a752c82135ede632c3016a53bb71646859deda6", -"T3T1_de_test_pin.py::test_pin_long_delete": "502a5ee54dcdcc686f33c6b7a750dc44fa969744e33c4a5c4d81480951c16ca7", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "0ce3c2d198c686e0bea4cdc1647728a65e4abdbd002c2c4b271614e931122d9f", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "d567828acaf3a5cbd881c1424e63777b6acd60850c82f6aaec127b097df63e80", -"T3T1_de_test_pin.py::test_pin_setup": "792ab25fe2b5842f8f036d742d799d703b63228f1ac968d92553971085a53caa", +"T3T1_de_test_pin.py::test_pin_change": "9fc491b9dc26a855961a5070f9d6ba4f7981a659a309a2c41ad7a81294ff1671", +"T3T1_de_test_pin.py::test_pin_delete_hold": "f25c3d9acac7d31358f9cb65bce5ba770c9e954f1eb5965f729fd3be00f05a2d", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "e2e64aadf3b548235b949c080fbb16656c3f4e3a5e68502f2c48a5a8869de37b", +"T3T1_de_test_pin.py::test_pin_incorrect": "e7e018e0e57fc036b3c2efde80b451fec37a3d4a6d5a96c4ae3bd5ce33a06cce", +"T3T1_de_test_pin.py::test_pin_long": "2be9c6d3ec92f1ff748f5c3c4f608791499b7965b153eab9603df8a11e871a2e", +"T3T1_de_test_pin.py::test_pin_long_delete": "ed830608f38b53541639c8bab958f156439184b4cd228fc09a29fdbeee985f7e", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "13f6e9ae3cceabda04b61f920a4b2e368527098d39e4b526909b50ca43d62ba1", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "64eef54266097874b50638b7f6cf2f6d2217b1eeaa3b3b4e0738c1b2daf1ae43", +"T3T1_de_test_pin.py::test_pin_setup": "e3ab7e7b1e26c88268d20c9fcca3d5f7eee032eb1f020c0319c30093b6c11386", "T3T1_de_test_pin.py::test_pin_setup_mismatch": "572ad507f54580580f8e6a93620d72b436b62c2dde1cdbece1f88334576e0b9c", -"T3T1_de_test_pin.py::test_pin_short": "f20363a084e52a612e2db3954bef2323ac4465f94b55a12feb0fab89353eba0b", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "2b5d6073e8cfd71c0298778b3660372e5d96ba4fb0fe37d180d70fce3e91eccc", -"T3T1_de_test_pin.py::test_wipe_code_setup": "dad3e675a46bb5ba5ce3f5df1db9adeb47a531d2c4c6ebe4b82e693b1072481a", -"T3T1_de_test_recovery.py::test_recovery_bip39": "b89f318ed038b136315a9a5cadb9dc366422b6bd856bdbafca98022574c33828", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "9fdbf2558a31b3a4db2df922aa0279f38bcca571c74011304ecb13aeca3b31d8", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "8d8d067b09b1339ea7b334633543925e0b8c6d1166fae6a27fa319bb9d9116e8", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "478bc13be45e13f96c23fed69892834e7cf121781f2a7f7be9bb30c52337dcbf", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "a9ccf20e930e27adae1eed30cf75afa5d9d774086a1b49c50fa229043de0e712", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "137f309ecf0cf6198d41ebaf74e60e2fa9bfbdf3326e1d5520a4995e9093e472", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b1d5dc6e0b5df1a114ca5184f674d6921120d2b6384f5436472a605700fcaa41", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ebec791801f48eac53e7f1f80ee2f994dcefa85a3d6ee566abd17d433ef556ba", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "80ddfd0c588c419462dbb953678af75ce8f8c9b35149f3a0e416a922ef3b72b9", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "cb21bc7cc23f43dda1e015a495179c2024b896f8028d3e45360678644c7b1551", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a503cea4aa2373105c26d1739e8088609d063610b419aa8b3f1c2bafac98c657", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "060ebce8a030206c583046927ac2d763c80b48298653e94d01a3539c93a108a3", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "6949a677ae87e5e82e2d6616506c88eb04cba51b9b97bb95254ba9988ff6fcdc", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "6b7cd861f1226572041dad96833fdf9a96f313cacae538440944fc07891d111f", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f63eca9c03979f21d2be1142e304e36b8bab089a3e673d6d17987356f723d267", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "87d99249d2250f91ca5eb33c4dc95936f9f23f18b04ba3af71e132fc0fd4f127", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "7b06e7ba99df4571a912de4c54c0282d7f662bc05b21f7972f78b19597abc449", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "eebfdb10f3dcfe0497126eea08c66209c39d53eade3099bf0de4868d66b399fd", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "e0afadd3d1cb7de4327e9865b8dc5dbb630d8d4e6fd96007b66dbb7122c7564d", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "36b30b0daff98c3e7c81b197ee06e7ab09067624d6643cf0abd642615119bf51", -"T3T1_en_test_lock.py::test_hold_to_lock": "5fb3a71d4a3b1141a0162ee8ef4c05d5fb457eca6955569916dec084762f440b", +"T3T1_de_test_pin.py::test_pin_short": "e2e64aadf3b548235b949c080fbb16656c3f4e3a5e68502f2c48a5a8869de37b", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "132297f7399934eba5fdc59d90df5d0bcda54b18d8ab9ef68d6d06f614bacd88", +"T3T1_de_test_pin.py::test_wipe_code_setup": "b78c6861df5eb380b639dc231954cd8153cc15b4899ae110bbada7ac8107cc61", +"T3T1_de_test_recovery.py::test_recovery_bip39": "89b5435f7232f21fa91f7e91ef943d01b4fb03a44828119f56898c9971dddc1c", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "ebae148d586480c7492759a2379bd1b10f9b0ee88690733bc7917f4e1e313579", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "af2357f73e2204661bdd5de363ee676f856438430222421e1d7981a9fdd0ebe8", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "44687380b0f7ab9dda85f9f98621037f913e84f24246a8f6d9da8ea48664acf8", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "0c901427c84f48380510a10a3282e1fc54cff000c54e2c55f88b011ea4204575", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "36b11f85b939d9d1160af19e962cc7cb5485cfeaf1ff383789ec6bdb09ed70e5", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "94070631fe852ca1997d99fdf81ca56fddbb1a8a9257d6c0325972b4c408b2ef", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0ff2eb77642ef360c7b4819c86989e53977139653b41aed7f19ccc1755dd9670", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9e42104286a4cd98733f75cd920b285042638a40bec786657adf41594fe8ccb2", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bbdf9ed51855851bee3076d93a0aff8f32ea76a463f737f14c36b04b06208793", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "4325831d8c838ef9f3f2af83e071eb4626a740c721a2a05687a454867251fc48", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "1c2222ef34a3efbf1d75444734bcf2b9ef92fb7a71230413a00cfc97870c3855", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f2754938aab50aa44ad5d847b12d29baa516e51fd4b685022d4649988ed31352", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d8968a8ea8217801b9d2f37ff0cda748bb36af5c0643e11d074b218947d4a848", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "bd856a9fac7127aaec65a1dbd0e0168308b22d97973ed56c3e3337e12098dc7f", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "8b6ffc881484240f7233e55e3365daa13fb96e15dc3d96fed087e7d673a1790e", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "0a8787babcdb9165229cd17a2d7f76aaae4df698fb11b041d6f20593b7569013", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "47b0f2bcf705596a5f944e990ff68c31ccd3957370afe0da9d86ec7e47ea09ab", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "58e46a2c7499f88907b63c8ba570aa4915e3745a9f41446090e16e8bbd6a1b25", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9a5d4ef2e0839c35937bfef23fbb962e958d7c70c1cb4137bc540fabbe291695", +"T3T1_en_test_lock.py::test_hold_to_lock": "88af05723c07bf2d59b4f0a58bdb2adc559bdfd2fdf7614a491a2f8d3b50138e", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "04fe9bf02faa4b261a2e2c105de6130bd0bdc85ea143b520c677aad6b50421d8", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2f35a9daaebd8a78a57987cb4f556f33e0ad43881b22410d8af7547887b779af", "T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "a9ccd9c60dbb8ce2084be680627baad4daa8ba2ae02675f605b1884a210089f4", @@ -15689,40 +15689,40 @@ "T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "68e6e3eae0794b66f3ec627b9a77678e45194bd95860d2b4a97d86f01645a0d5", "T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "60c0141a187af6bf093c2e0379b597aed744bba07d26e7a7c7b7c17d6590e4de", "T3T1_en_test_pin.py::test_pin_cancel": "c387a29daa533698d520155eae09c9f5b070cbacd7dec7f61de2afc230c276c2", -"T3T1_en_test_pin.py::test_pin_change": "8054226baf2c7593f3bf92e3cc5987c8a132a525d2ccb3e9b9ce8b84738087ae", -"T3T1_en_test_pin.py::test_pin_delete_hold": "558e90aba211cd20e086157d5f323e5274a5022f13c152b9a2875026d3b048ae", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "c0aa1a82536a10f106a75f8b805a6e31fa660b5484a70e3be755407fef9b4f3c", -"T3T1_en_test_pin.py::test_pin_incorrect": "2b23777453c59caebac3e229c60c2f75818afcb940f7e5810fe6081129da5ac4", -"T3T1_en_test_pin.py::test_pin_long": "2247f95b084026ed5a5c0f02ef065b0c94492d639b40626651a8d6d9d4c48ec2", -"T3T1_en_test_pin.py::test_pin_long_delete": "cf73a41852b9827afd079f0e6583fe4c3f828f616531e16c97697c9caa0dec9f", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "7b0c05d7b1b3aaad3c1cdc6383f7788fe829b96ba37413707aa3759cfba2e8b6", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "ec5550577d563999b5beb0fd879d4b5cd74f3dfcbf2ea3673e9c40041cdc4473", -"T3T1_en_test_pin.py::test_pin_setup": "cffa27b1fc549d1f3847b55ec81e34684cd3ebfe510f830b4c60ca993d634b6b", +"T3T1_en_test_pin.py::test_pin_change": "7a6d483ee27f529c351ccaf252684b942defb84bf6151b10f4ef8e1fb96ba5b3", +"T3T1_en_test_pin.py::test_pin_delete_hold": "5cf0981557cfd75c52cb366816754100540f845468d3d75a5f4157b7229eded7", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "4b36dbf41c1cf1e1c6cc44b317b72e7c38b6928ba78212c7a79475bfc84f8cb0", +"T3T1_en_test_pin.py::test_pin_incorrect": "3fda14e9177f9105765ce1b487de9fe668707dec46424b2674c897666725916d", +"T3T1_en_test_pin.py::test_pin_long": "1335ceb5cba5643bb17889975e2195b0ebe5a95e29a7c2820083162901c049b0", +"T3T1_en_test_pin.py::test_pin_long_delete": "3799b5eada2e5ecf888b2b91e6eaf06de6fa92711e2f753afcca5030617be660", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "5205be3fe5c9eda4189797231fcdd21edefcb5309900a355c4c13bb8fbf19bb1", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "8df4e2947f341cd220e9b91e738e36e87c5ab3974ef3c31d021a58b5ca28f1b2", +"T3T1_en_test_pin.py::test_pin_setup": "754f8cfe6dd77b4e2ed910e0523b56a5ee9df147a7134294d56d51d9d3f8dc83", "T3T1_en_test_pin.py::test_pin_setup_mismatch": "7a5acd0b7d27d5f29e6bf6b173bec4a5a716846721adf5e606983e0a63611918", -"T3T1_en_test_pin.py::test_pin_short": "c0aa1a82536a10f106a75f8b805a6e31fa660b5484a70e3be755407fef9b4f3c", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "d4bf6af382a31e4d586cdfa47d08d00431ddbbedf7c6059e20a6c19b1dccde09", -"T3T1_en_test_pin.py::test_wipe_code_setup": "96fe8bedb4ec78ac27f68a93f8ecc776cc2e79dad87a2f1affa1f4c7f6eee33c", -"T3T1_en_test_recovery.py::test_recovery_bip39": "673fb86bd0dc3524d4d26a560e55aa3efe5392e63494e55154c00cafae2a53d2", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "201f180025b004ff3a65b0730384d417cc671f20ef7ee8c4915c8807326d09a4", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "c24cf3b1d719e7fb57a63b23622277bf9f083e11853f979a19ea210026c95176", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "7a827f5e6a38ff125d5aa88b29713d8631b46c84ae36a32bbbcb0729d53f74b8", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "d5a14dae735a733ceb26bbf5ab65ddc4b4db2f43baa01d91d4698f499a860d92", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "6e2b696ba55c7e3b1ebb985d35f32e5c7ec2f3f8c402d9ef4caaeca5348ca273", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d4c58549aa51fbda2731138eef863cc3f3b1eec6478e316575c71fec103764b5", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "087576f0378f0b616abe75449acc85e0c89e5ecc37964ecfc70d3cc1bf71d7d6", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "7902c8518d01dff567389b044b5dcce1c3de364138041bfec48c13e1fe5a903a", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "5e35c8d9d18488aa916cf7f74f8c65b5f87f3c9b385b2166cede5386e720f201", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "4420029f510ff0e02233c013e3bf1e5f2d4846e29865ca354e8050b469dd2dd7", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "0d953a3a1c08bdc9a1e6e39c1f466c1e9d07931042bb96b69ab1643c9f273337", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "3cb6e78520ec3bfcde74a0e172f2ceccae86249e0455f7b3bfe7a6e8b2fc6563", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "534a980b2f52c2b2a61214587743cb9546705ec0d0f4fe37b6de7e63f656c5c6", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "0835abb90939b29a09353e1ed62a4caa2dd34b21ab87672e00930298f00096e2", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "f7397c35d415bc508d528acd792317b728b45225fd446dd570465e1932757baa", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "0ff1d57998e816f32cb4ed5f67c63ef2bd3ed94acd7b0349e197fea4e8051ad3", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6cd7e54334efec0cce02858d7748a6881d9221074f0acb920a42dbafa43d29f6", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "97502fd952dd7ed2f92aa168831dc0c88c4eb3eadcdfbc7d23a40f569e4ace8b", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0c12d7ac0a4ba869083823ccafa223e16adaceac088ef712fe0170bae274a6e3", -"T3T1_es_test_lock.py::test_hold_to_lock": "15564fd01c7abf2ae98f514d144fc1dc3bc55a29cada6bb23802c02e06e809c7", +"T3T1_en_test_pin.py::test_pin_short": "4b36dbf41c1cf1e1c6cc44b317b72e7c38b6928ba78212c7a79475bfc84f8cb0", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "a39c332f87e1fe09a3e2fa16dff5dd0147fc80109e107df95367d9d9bd547ce4", +"T3T1_en_test_pin.py::test_wipe_code_setup": "f7224b73874d0e97a0586349bce4214373a16dbe1008294d96b35802fa69b9f5", +"T3T1_en_test_recovery.py::test_recovery_bip39": "b25bd7eb37e73404fa5c566618bd3cb0d1ea93671e7898eadb8b7b9f03830551", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "6229d06b80b7fac7a728e4453aeb006ca36607390c24928a8713642715a49ddd", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "858c7c5bab86f001608a0a150ee97e75614c0d4c75b34efc2af173a0b5fe5d4a", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "6e2d6784063dfc3cfc31fee60625969c51428d2fbaf45c634cdec943d9bb89d4", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "881c109a74e5125a96cff6770e849b523b038d5cc451150babd7c01f85c28277", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a8820aed37149e18f340fce946d92b87c95bdf8b9c94057d2cf371a3be41bf3a", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0a2ba7129edd4cf98692cdefa56c5207c7af0f584528d5988fcec4d887cc63f8", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "fbd88c2eadf6c8b775450f5c617abd83af1339856035b0259a98ae7614e6fccd", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c480806c387d0cca7507542c31aea0a762afbcb36a58eb887fc945d88d8b13b1", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2f0852de0eecd6de352803445316ca480f262d27da7a1415784a21a795bb4a7e", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e03e9287d538b49e04ab15e74fdfebe1227a34a7861ef3f3b3ce4f8df043c66b", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "445d4ce1f46151e25d1b6c09fae2ac9e9c63eaa1165d63e605bfb04b294b39ed", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "8e9a487ccfb272bc5599240ab18658df02cb120d3f2868eec28cde9e13fe4779", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "06093c81d8e93ed2862915b84f92b799d8fc6d5de2977b3e65ccda8efe909d88", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "615085481599bb96ed9096ed87a3443f03650916181804450aa7248d60bc614c", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "e75d6ea160841e94e153730283281feb54cc2c34efafbf445a82a79c99afae53", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "ac2c17cdf7b800c1de2429673af361eed6a26b2745bbffb5603efb1e54a804a0", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "0724cf148cbbad5c391f4e966bdb222ae43f2879dc33036a796d56f477b6f5e5", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ab1ffe9bbf721d55ec2cd6a6f674dc19abab55c6f328fc1084714d93fb60beb8", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "29d7642bf1893d6a74269099d9645dc16ee8dc2113059a506b0ea494b9b51572", +"T3T1_es_test_lock.py::test_hold_to_lock": "06f14f257c7e8b6fcc179741eb9034fd570bd269c6fcb1b2855d3c289b4ce9cc", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "59518f6e9fa953c405467afc29c6758e63644b6c87077c05da5d2302aabe8844", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "da27fff7ab24769defda45bb284295058dc86ba8379dd53fa0ac34ae8f6e9c9b", "T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "f4719374c7e9853ee0ce24c062b3f9a06222d753fd60f03804223f791031c526", @@ -15738,40 +15738,40 @@ "T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "79bdca257097161f797779eab8e0b8a9a7ff59752b17f1213d2671f566e2488c", "T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "82258a3534d8fd363ab9a3354534f2eaf4921b638d82689cc074fd32f1d95826", "T3T1_es_test_pin.py::test_pin_cancel": "626c049494964aa9317a9829bd5f6a164f322ca42f9d6e6be751bb38d6e82fa7", -"T3T1_es_test_pin.py::test_pin_change": "80eca044be966b286fa64d0ce2a826ceeca53a9696fad7919d46eeca56642fea", -"T3T1_es_test_pin.py::test_pin_delete_hold": "96d60fdb7b16b4fa4719ad47b3ad26f8cbf0c6495cdb49233c179b1fb0e7d74f", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "f49219c6f411f90c7b03f9eda28711bf5b36c36822734d5f9ddb1f3805ddb2d9", -"T3T1_es_test_pin.py::test_pin_incorrect": "83a788e33d9dd4786f544af8f40442f33010acbaa359aa361ea01fad796ad3d2", -"T3T1_es_test_pin.py::test_pin_long": "d05e312fc8756b686a4651ca8d7594512afef59c91be3f03c5ba7842d450c38c", -"T3T1_es_test_pin.py::test_pin_long_delete": "0b9a728bddbcc0768c430eb676d4fc0dcc608872ac9386ac011ecadb6db429c9", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "a93f4008b1c87237d51da09356ac0796f07cbd42cfb1c5135fe35b71f803d2bb", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "657f5078c2f30bc26339b6b29dd9c750b1a1bf85cdd48361d58fb8f9e4882daf", -"T3T1_es_test_pin.py::test_pin_setup": "bfd9c0ec0a6303f9fcd02c7aa41618e247992dcec712102c2892a6634a666312", +"T3T1_es_test_pin.py::test_pin_change": "d97132ab2e074c6847d8f44b8add952b0bfc265a1cca309aec3916da62f3941b", +"T3T1_es_test_pin.py::test_pin_delete_hold": "b5e828994996f0eab5ed84f559e7f8f8ab0e652d6520a92db64c673a350e5c06", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "21df29e41aa696d5995ec776ec46f9bb8cfa7167ce84ba47de26866ed9d332f8", +"T3T1_es_test_pin.py::test_pin_incorrect": "fcfed0cf1fbec87540e9c3148497d03151c32f1c1176be007445e560a3cf218f", +"T3T1_es_test_pin.py::test_pin_long": "789a88b61c81847d2c4f2d8ec4fd031a65b152496bc472b6923899fcc2ad423b", +"T3T1_es_test_pin.py::test_pin_long_delete": "683d7ec914a34b896c297b5412efbc19b79b377d17fc01d5d2dd1785413aabec", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "82a14eb1d49cb3ba0dd5570a7adeaf3c056d8b1069b35011f36340d2f93ecbc6", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "ad6b67d040b667228fbcfb82b325cc37636bc814b68cdfd25ef6aff3edf0c0d2", +"T3T1_es_test_pin.py::test_pin_setup": "78c1fd03f74f93c129521e3670cb4ac15fbef82a4f6ca4055f384ba8b71fa20e", "T3T1_es_test_pin.py::test_pin_setup_mismatch": "0fa95c12686fa6cdf648042dee30da094891ffa10fe9155769c0f5a2f0ecfc26", -"T3T1_es_test_pin.py::test_pin_short": "f49219c6f411f90c7b03f9eda28711bf5b36c36822734d5f9ddb1f3805ddb2d9", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "8d1e31dc7884e731f1516aae547966ee7f5839c21cc6f33d4a588a264844eb03", -"T3T1_es_test_pin.py::test_wipe_code_setup": "06c0bf039e4a7965e5e6c9b584b1227d2b95702aae4da74f7475a73bcba87ead", -"T3T1_es_test_recovery.py::test_recovery_bip39": "6624d943b3fd85c709deef35782a4cc267f9391c5a9b8de60696e7de7847608b", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "05e7ee369a43ee2f296ef87e77d22baf4c9e6069e102bc154294f8eb0d91e804", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "42f49a8f3488677b9c01a21a00df7fb70d7d03aee6a67521995ce26e9cb7f3d0", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "3c516544c48e5ce8d7ad2da3beca467d4ad503c7cb18fb75d06fc30eb6d778aa", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "56c69e4dc03b2949706b79a45b789143c098d14dfcec820ce2d06c907e5b070a", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9370813adb35c917fc968d8c94a002638ffd2b0e15a6c59a909e7e1930efc04e", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d64af8c28aaf695b5bf357628b7728f8585af7960c8dba952e72acdc09eabebb", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7d534a0036d59c4daf3c46f45bde90101e6c75d578e00dff822cfbd3efd5e639", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "118c5366a21d5644f4022bf081702fbac28855378e5c0d6425a4c290c5139fae", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d4cd3dd9f166dd00f9f2169e7242ebaf382f3c2139fffa47d5c0f7e881f8e6cc", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "1da6dd736d4b61e742872aae00abebbda99016c4d7d13fbbdf58221857499fbf", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "d018435c45bcea7d7175e5eef1863e2d5015023b03c615aa0c48f40a4c116ebd", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "4216f59750c009ed63d5d9f042ba3d7e0ff3a4ba9f74da2dbb5328ddfb3a38ec", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b9fcaa7c4dc24525ee03419f66f22c9f5c030cdcaabebbbc97df59261c4e338e", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "fc65fc7c7e6a2e1b533fb7c11d7edc872ccddaef1168b91b30acad0289b7fe63", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "6209e73dc8115750bdd665e3b8f16a77e4bd255180e75f248992359d48477480", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "89616aba3ccef70ab51186b1ab221441a926eb189c8c6494c2f6d36de1676168", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ad994c2a68680668665cbf056b3839cc4a9298cf28b5745d5b47b3818149c2e2", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7253f109185c9941051dca8f7887604e310f23d9d8ab499683721cfd6ccb3a7d", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "38a91a36879497aee7317327f2ed075d8aed2bbb8d69cb1e69202f8df5f15237", -"T3T1_fr_test_lock.py::test_hold_to_lock": "cc512f25a8d77cd344b60d90fe9fee49ac03b85e04ff03004e1637e3c1334f5f", +"T3T1_es_test_pin.py::test_pin_short": "21df29e41aa696d5995ec776ec46f9bb8cfa7167ce84ba47de26866ed9d332f8", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "ddb1e514395abed6cdf96f9b2acd556a70192662ddeeaa88900a45acd2d461a5", +"T3T1_es_test_pin.py::test_wipe_code_setup": "e6b53d8fb38b583a7ded503f35bddf710122a8d442a8b1a9b0904d7ad9d3cb2e", +"T3T1_es_test_recovery.py::test_recovery_bip39": "f9c574343b8012ef278a609951c319f1a09ebab1325b847268e86a716ee9d4ae", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "af184999b7de61d185b7d8c703ad908180389bbbf58769c823da9de689f2889f", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "beb45318099e4644fe5d2032c34426451cf0a747fecf87bce51b458ced04e7b9", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "328a9e10a5f8fbf192be7d309305226ef44aa871d712a70fd2e992308c4b86bf", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "bf7beed81084b3f4f7f3d1719c9d3e6cb68f75ea5df914eba865568f951cf011", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "397909ed90555e383468cc336a6e081b017209d7775df553015420b2a46e03fa", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8faadd842742ed27e0135a88910a8135ab426b859c323f17d9ecf7ebe899323c", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "9521d9fe46b4d40045b6e4e0fe20bba2e54edf978e59c19a6e2b4857a3af1c5c", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "31f207a25f96a2fd24108e5a5710a54399b72237699396e83394b7a2dab33a13", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "35d318e556ab59bf81c160dbe2ef576482e47e55cacd8a51062009c8ad150d37", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8f94a2e6567890744808094a771228ac5250ee120802e33da8952de7f39d53b", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "172164fbe70d9101329c444e87e73e49ae974ddac150706dbdf51227e6c15bb4", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "0b476693cd615e18c97ee4460b071408662cc33152ab857d0144f6088ffed7b7", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "54d94aa7510524e1756db967bed635fc165a0f3c922e6564ebf3b247c2ac59bd", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "ae4181f65e1bd92716ae644d91dda666662a834ae6b38cd31c1b51c1fb75931d", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "9634fd092b41ee84602d78e0fbcdbaf19e8584293844fa40db63e91538b8da44", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "1f452f84f894ab768912c57dce4351c5395279cdc6136ccfe211f4ef6bf810ca", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ecf4fd30fc8a87da87f80b46a44781234dcf4b635f24d6f7c2ede07995525563", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b70dd73201ced9e625d67b6ea30f5825dc98e17c9911296582dd6659167e1bd1", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0099953cf51619c4440e806af15f180148700ea3a8efc7e4afc728c68e7860a5", +"T3T1_fr_test_lock.py::test_hold_to_lock": "815ec9e22c162f9a75c5d56d093d78aae9c71d0bf77d3eaac1ac642bad097dca", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "147911b8c6ae46898131ff069328b4a7f364a0c6770b9b589027092da1d6bd5d", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "10f4c4c13033898c22773d8d571eea299c085887cf9ff4644b37a5de29fb2210", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "78b1fdbbdef6afe6036527cb5a1be3e8210fc4fc405bf64d3ed42c208966573d", @@ -15787,28 +15787,28 @@ "T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f0862f1cd39fa608c5618383656f3758bb16da253953a7f811873562281f0e71", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f33a87c14365dcad1d786c8d7b9c2b53e4e1d5f0cbf7d911cb12cfc0fe06a4a0", "T3T1_fr_test_pin.py::test_pin_cancel": "e5f845ba0df3a595721108eed4a2251c07b5196123afb4d00506e7144a3768b0", -"T3T1_fr_test_pin.py::test_pin_change": "854f1678953e3a10719f7ef8efbb90dd8a490bc9bb5b2513e599c3a3971d3714", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "2caaf6075d0f6ebc018c7fa0d2e9b14327aa5b039f6beafae42373d7caa6bef9", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "4f62c2f784ad58b3e083b2c06e80178feafcf4840042904b46acd3c50e044c8f", -"T3T1_fr_test_pin.py::test_pin_incorrect": "2e88c6a399e2284920e043c46353317185e02857199f2b4babc037aedc1d3686", -"T3T1_fr_test_pin.py::test_pin_long": "c09a8449d955ed0be027593330477ba9763952c0b2464c647135959bb4f683a8", -"T3T1_fr_test_pin.py::test_pin_long_delete": "c21fbc7d034c1c89b3ba4bbdd54626da7f7bc1d863dc560df7fc92a268e6b09d", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "036f1a91d2895fc28e0a2c83e8f195cfe8508ef6d53249fa6f70e2080e1d8cde", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "4f776412c3335c9ffd13caf0e0e5c756a4e7b4607f43f26f8849980a314d9ccd", -"T3T1_fr_test_pin.py::test_pin_setup": "14b3b31057d44f4bf5395a80a99d496c903d5e0221667372f33639c896806c33", +"T3T1_fr_test_pin.py::test_pin_change": "4873d8491a9529d5f84cc42de233cb1ceeba5614be170afcb16dd7add615ecdd", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "7b3158ec6361dee9a42486e2fccbccddfc75fd28f1f20e8d2665abbabef3cb6b", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "138e3f92033a1c704e3ec739c1e2d50dae453542a24dc2f83291a2bab9dca25e", +"T3T1_fr_test_pin.py::test_pin_incorrect": "6564a79de88f03f3ed0bcf9b20d0e3d6cb4bb6533d5f8119eb6ce2fb145a2587", +"T3T1_fr_test_pin.py::test_pin_long": "7295a91fc5e570727cecfe4194087ab496bfe97f5ceedb6e51a91de6fbdbd7a1", +"T3T1_fr_test_pin.py::test_pin_long_delete": "f7ee100e89b53bdbc78603cbefaaa66aec83fd59d8ae06d7672b5f7c1ba68815", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "8baed933f2cb94ce4118752a9b54e1c572a2b20af65f12eed10481aff4f519fa", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "5c4153168884de0dfb4baf53a7a5a737927fafe3c2a1d38aeb48b3f6f119c4f2", +"T3T1_fr_test_pin.py::test_pin_setup": "ed8c79ca55bce6ec3b6174017c0fef812546d87c0b5f901885253ce91e69f2d3", "T3T1_fr_test_pin.py::test_pin_setup_mismatch": "09b64bad3cb7d3109e86c4e9349bcc58b8b4cbbbc175005b01d5fe37017bd387", -"T3T1_fr_test_pin.py::test_pin_short": "4f62c2f784ad58b3e083b2c06e80178feafcf4840042904b46acd3c50e044c8f", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "888b673b8cd9de44479baff9d1471d5f3d9a2b3cd55ed3769c8dd5de7e28e805", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "8a399c58c57e8c0fe049a9976a4fe58d3171122981d4e2dcf07e28ca7622f04d", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "72532c272ac3dc97a8b45c5c268f75bc122a3d03dcf6f89fe539e2dcf41a6888", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "33f278d1b98f44ae61915398409a7cdf1a247b2b49de72e1ad5e4f1002712387", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "4079df31415785686f540253e026b2ce6b66c60e0b45b608e5c269c689af3421", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "cc482e813e0d90213f3c7e2ebe81d3fb5f791bd14aa2b4f6255175c07609b93b", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "6a256de0b7360aee8131545a8ff2e506ec10a63b4dfc37490ee2585f67ecdf99", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "dc51cd54b5a34d5a2fb30a07e8bbe4916879b1b84a0942414769d1d04d9c26f6", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "61b662315a01756c41906bd189304ee05d71892bb425bfa4c869973603b161ad", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "60c3967c7d11e1d377c51a560ea539c83cdb797137e072ee8e9c026aed4b73c0", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "73803027f1f38df23d73b5f63d1fe03aafd24c7473935ef1783ce56ced9bd157" +"T3T1_fr_test_pin.py::test_pin_short": "138e3f92033a1c704e3ec739c1e2d50dae453542a24dc2f83291a2bab9dca25e", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "7084ea2e96cc1dcf63d0e15e49be2cba186287b4d60a12a5c645ca237827883c", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "b3b6197d81868a66d6953015572d5dd454ecd4606b48f77bc7569319750184cc", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "e2ac9cbc7dbbedec8b45e9772454b7cec74e668948eab53b856f639d916ca16c", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "5073f71f15b68d3cfb26fbb7f22d23205616fd65cb98d170b7e065cf259a1a16", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "036e3654e56696cffd2e5d56822f8675943896dcbf96829d67a57255c469a83f", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c9098032d19e33940eea57cf41134d488e8a4d129440bc9f06c87fc6f381c00b", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "a1583d1399aae68d3a2354541cf4d31c55e88fdfd70f7464c1a6b6e78b8275e6", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0251b3338cf2f22bbecd503e99fa0237c08595dbfea11fbf44805f463bc0d1d7", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e0d48917088e5b22e5df72ee226f595addc68589a46008ae944606b2b7e9d095", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4982a23230f955f121f9fdaa0f4695a776d636165ffc83b7c8c4ddc70b288a6b", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5c7a2d88ffa5bc215dc419100dac0de6c3c264ac97d057807143d8c4855b2720" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f295121749eac5dcdb9c559b2d9405901fe75360237c82af1ae8d21a471327d1", @@ -15826,8 +15826,8 @@ "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6e545e47108bec5ec086c3a2179ec13266a2c909c8d0738757fb45762f59349e", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "795268a332beebdaf826bfd93eea5986c0d2604857d0f3499f57e6cee45bc5ee", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "e429b184583ab43ce892cf4cf0e3280ccc1e6f79e4f66e0daa825274df611dca", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "bf300999c66545883a2f318121a38efb57e4bbb052d3fcaf6cb68e92aec46f4f", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "bf300999c66545883a2f318121a38efb57e4bbb052d3fcaf6cb68e92aec46f4f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "3d78e641f238bbd1258b48fb7e0d77b90f995e8dbfefea4bd6654f465b7d9aac", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "3d78e641f238bbd1258b48fb7e0d77b90f995e8dbfefea4bd6654f465b7d9aac", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "cfc9900f79f72abb65f2d710461c95f8a809a32c216c71eb38fe3c49eb17247f", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a6d1b34a007609b4fca0403d6d3f024374cc884167557271927d426bec4df2b7", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "59430b955ef05ac2832580785523eec8dc4a79d8e95dceab3f36357890c3746f", @@ -16813,55 +16813,55 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b18fe54c1510cfd55f65c20cae4c50f113cf6053ff9fa06777789ddbb7856f7f", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "bc32053b2b12c960eeee5408309c80e91a53e226a99d4611cb12f3c67b91bbea", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "e5d4f54bf029f98a3e30ee9cbb98adc9fbbf555a57e3aa1dbeb1490ecb8d092f", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d6ef416ac7b735b2d877fd93fbb5b3062dff40521dd6fbd6b6c84042c7a9900b", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "dde81485dec7db1783d58d1b3720ba6d2c4283521a7bf342208d0e9d2426e0a4", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "abe65d454406b55d0387f4bf9067a67839b3592be1e4489dd2beeb3adcd6f694", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e5719be41b95c3e1a4c22411ffb160ef7e6d961985b52db055cdd17cbef2bc21", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "71a0a7daebacd7a544842b80599a2b7f2d2848d13054ff57e3424364fa0add3b", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "97ab65938fc4f8249fb2810f8a1a8b7bca222d97de93608748c090b259e6fd43", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "01eecb05491c460de3be2c05190bbfb1f75830dd5e8fa4847ed3344edd561397", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "feb7b6c0e4eddaff2b131ed114be67d10db65744c3db73d4376beb98469bbc24", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e82ea1d420c6a9f5958b8dc4212cbdbc8fd0332f619f5ba06648f586ca430ddf", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b7541f1c5c7380c9c46f7bc6ddcf121d75d383403f6e733da748eec7f65d8285", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f3ced1d3ea66dbaa1abaf206b9ef26651899347aaa7b49e60db84c7414e80cf2", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7c1d16c34372f09a63bb433f30e63d98aeba165e6e0a1499e997bd34d903c421", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8a5f6e8d036b43a58398409b34682d40f704a3857e00dd8df0dafdcffbb3aafb", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d21c2a979e5971989c58875428b1e23d3835722f4f323ad78c732acabf63ba25", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5e1189e03be25bac6b8d6ac0fc8a098f8fe781a58eada0370c6f195136f87a60", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "97ab65938fc4f8249fb2810f8a1a8b7bca222d97de93608748c090b259e6fd43", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "77f908b5e788511cc0201bdb7e54789232f1245f2a11564720b0f2bece9cf048", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "7224516374d4457838c964efbcadd470140053e0f2456dd5053361d47ba73fd2", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "40216e28388c039707bddeaafc43b96a410a112e46c56ac6c48118758f096f7a", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c8826d0d1ad0494c9c723425c7ec57226c13116b82c0d5244a10137d27822460", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "99c15802ef82b6c6638d51ace77dccb7b70fb851d33d2be0e6b94a1a3a6a8e86", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "cb949daba4e381c1c7970493c41b10bc363ef425a7fa2e8a813b715b0ed89dab", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "997860a35d5801281ad8d1bae69d017b6ac179f1c57fcf95d6aa7c9966a75c86", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "52ef4122911bd928d393891e76d9e324b40281e48ced4820372d8b1b05c15486", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "6289a90fa22d5a67868ce84ffa2a4b8fee856e4ebcbf1869782db9bf32050443", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3cbd19a403d5fa7c0816956db70465ec43c992d1beb5cc76167378061525e943", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3f20d3bc475bff55ca7aa04f2175714193990815fa1bfc835e28635d9cc8768c", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0b8c85824db2ab953dd6b20348f17cfce23ee7009f3eb9d0117261ed6f063c4d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "3fe4f4cd7284ff9e538658e67753cd65ceab3283fc2e6640f5693d0750900144", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fb1a15a9514d7e2da8e0c43cafb9d0eea217bb17446ce09716632195175d176d", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "5e988c4b9bddbbc30fca0b586972924086dd57f234f4567498bb4d5ed07703f5", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "435d7d0b2a88ffc99b2791761b5c2ed8ec33aa45f66ec306092447616b3af44e", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "eeac9ec92c69806892d8472b6d896c21cbe98b9e11fecf83eba74afa23a481d7", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2d0a06bc1f313342a2c61363459fd5497471ec2a45135793cefdaf9c5bab1dcf", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "4604e6f242816efb2c5ef137a9434012e5c64130cff88d5e1c94351b6cd9830d", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7d4410c68d76d7c688293080c56e97181b949f087eb8025e82a4703070956278", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "22b9bf4b0e63d8af23ce1839dae74e96d9f1a25eebdc1fc3b300918b05611110", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "5d6962f30e494f92367f12482f8faa44a3f06b62691ddcafa2ff2a2c8efd899f", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "812f1db443b85401aae2374e4540f9cbd0d5e8754f6191404c39a54c35951156", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "21c6e91e068cb4191b38d68f57e615af46b383dda06cfb2d58ef011f7e05e81a", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "007e9885f394c279f2ab8ce5f4cbb3309de2a68db1a16d63940936fafe1daed8", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb83128f7a0355de2e753929c3cc17159782236b1059b159b6db63e075d5df1f", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "bc529300537b099d6d61e41b1f66c6a325b83c55e77cdb37389239579fc5074f", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "10f85793232f7fd70509087e7a70e0ca7a1cc655a815d35d3aa8a28338551efe", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "6e7ed5290ef6c00c5dcc216745b302bc3c8a56a672651416d8989e0948fb2f8b", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c79aba2001ab603b93998560d92b1fec141ace32cfd165d189cfff1e860dd49b", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "65669ad03d6dd8b9fc6e1654f000c060509031d48e3b302c0e8afcae52d2f7e1", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "5d6962f30e494f92367f12482f8faa44a3f06b62691ddcafa2ff2a2c8efd899f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "a8b6fdf24af3bac4e1782a52073fcde94bfcb53d3411eae46157e83ef61a4d64", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2391f07c958243a88db7e7f07eaeb1d439c522ffcf9938c11456081d97098e07", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cfd78d8518d3c7a87c64152fadf9d9c6bf1e470384c938a48fd03fefcd13d422", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "05efb147d2f5cd1199e652e822f68c9f43743083711853a11cd0a5541386eca0", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a6c7d863251773af780b6d31fe93e2f1936d7180493be392634f4bdd0a57264a", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6d4789f288056b7e45b049552262b652789427cbcc977808abc87a3fb27ea5a5", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "199b2ab77605e98ec4e9a91f9818ba568facbac18f608d3589fc4d9e4e245f8f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "31dbbd798f32b7b9f70e63c2ca3992c7f0d126bd48d3d325a9a3fbe10291c718", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "bc95c7986683ce6f68fad93b4b95ba2d829dddc5d814d20954bd1cd73db73f36", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3bbe35e7e3381cbd731587115364a23ca81f3c46daae139a3f4b3318657ecad7", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "078e39ad342f3a002fe7cdefcca973ce570bc7407db129968aea78d29e9247cb", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c9f7c4431bbf69d2371943e0b0fff4414d1b9e1bea20ab41e6b50d6313409be0", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "35bbfe03f3ce4f473fa495a2fce298e89d644f4f36877b90e087b2e6237c1ed6", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "5967a8074677a2b5f022f4e6fde57d37b78a8ef6fb00994db10e70943493b2c7", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "792355c269a86c78b64ddce9e915bdcf4d72a59ed2c085503939264ec441ee5b", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "236422426930207756998a98f248b35ff4acbf2751288e54734b379b8e7c038f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "64010cf1bc269e156046935b88d68ee5ad6d7b6a24cf8f4a52a7173298c4cbc6", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "354d102ab42b9202869716600d31dace4762a2fed929d9618dcd5155e6f018ff", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "310e53ca83d964fc2308140ff0259c206d9afa063f3f955efa54c147e788bf8b", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "7bbcaa13b35b1ad3b09bdfc62203a4b9622602fb83654136a242ae739cd61b39", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2e6c9dea686b0aff6892f0d943bc205362ba0a3d861bcdbc86b7f725d80885f4", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "6b47f2346191704e8225841068619ee94e585605e4b34397abc8b63b6f98dce0", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0f4059f7a51f6dcb2d55ede0a517dbc87db5e44f50ffa357eac296be591f87ca", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8e4beef12088cf81d02e19a4cfd9befcd818ac955103df7c91bf9b8d6ae7c2f4", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0e1ef9aef9df4c8263750ee1e99a0a8d57e91c2213c72302abebdeedff605ed9", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8a08e0f4e4c28c88b271897b4edc91d86110d907bdc61c794fd41e9f920329b1", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "778b7d2cad305f7ce5681e7fb9c9e573193dd12be7faf0b619b5bd090b2dc52d", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3edd6483e1b99abea85e92b895fbf46ff6af4d8d417b40179b0ec549caedd6fd", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a854bbda85d269f7c1089cb098d88a159ba6490a9bcee04e8bd32675d4a100b8", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0a90de00d492ab40c330c6910acc85117f5b6ffe7d234abdf86c1300dae5d2d1", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "536a43b2531a39202556103ae3f9e4b071c2609a1ababd30244cbb888ef861b2", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b49b525ef014b998859a653941b2fa1786ab18f18815a4a562f29500c917f622", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "aee9f43bb380f610f410140e70da8d42fee223ab7db428d0476d61a50990509b", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d5b5da11543250fe8848c57800cc713a4ffd2636c80f4e258ad8b34f7e537f2d", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e3d0f245b143b41bbcc096a20cb99952f65fdaeeb03d8b9c276faf74af0d8a40", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "727643405f48783ca95943180916757e81cab105127fff396de4f119200a1fc2", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "855d89b5d2bf8ce37aaf9beefdbedda656091de82f24ca64bc4b83dda7de9f29", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "42f2c1895986664c57a96bac9a6c108e46f0df9c1cf4babfc24805729bf0b0ad", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ad94ba8002a74790b9600af8871014f3675aff804b0be1843a88427aff8be646", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cfd0be31ad705347ab368eea0fe2ff8376bb351aec953aae8dc96b12ce52740b", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4a9a276950de04a860bd856884df99581d7a219b99fff7d5f4d97d1759bd5525", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "50603c4d74b3601655e8858f44ea3aba4e8b3068040c462defe9039a39fbedc1", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4abbaf876f8cb7a9ab5dbda9268e019869bd76407f073da1d705891e6a4c3f9f", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "0148d8453e66fc43a37a4f159306ef9997a31509045d20db72650330e47754dd", @@ -16998,35 +16998,35 @@ "T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0c2afd4028d5c756e58e180da4b1a457319cacda0dd25babb6cc3f62146ef6dc", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3615699f9635c5dac8810213b90a265132d8b84bbc30e8b8a3873cb0e1079408", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "9194d62ce7c02c9c8ff84ec8ca9e94e6907e5da3cc5c6472b16e812ee63bc1b0", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "27633bfcfe93683486500b67aef71997a79960a76a485d0dd06ca4e56b94e6a9", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "df02bccc1e11e36486eff9ef607283a27bba798ec9d57b4c7f6a88d22ae4bab5", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "946a681fb9a9b961bada437c675c863464e1f098dfcc650adce9e47dae532462", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "b4bd3273385ee088a136a2ec64d28955ef3067c7488ba0866ecc91eb29d010a1", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "7ec7c7329725b99bd1f9ed06baa454136876f6f7e624c52cb0d8cedb863f47e9", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "c63c13e5dd1557b1fdcda3654822d8a0da7135c94c02beefb3cf5a2ed99d9a5d", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7fb75455a5ca4bca7ffd54b0b3761f8380d576f1fc4802b91f92782f6062e0e9", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "096de7510aa8224b495f352ccc5ef707604846686e867510a5c563c155e8768d", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "4b61de109f66d5131203b30821f201444f3da5c700bd7e78009a837ca57dd917", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "85e335514a1fa0fef627f0329cf03db7cca7057767c941fdd9f4b3f09ea57bd6", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "85e335514a1fa0fef627f0329cf03db7cca7057767c941fdd9f4b3f09ea57bd6", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "492fc86c2fc7586167e3a652f679c98c28da15112b4523fb0065936802c18377", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bbb2dda6e17db270bfc8e358024db13d40c5103a463dba97d81207f3fc8a2f10", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "25ed1c282a6458e68a1182ae22bd12aa8c220e946b0f610908cdf5a15193db6d", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "2a4022f7d5cd0cf4f9b49f8e7995c2f9b4fbfdb95085d9237f2f5daecd7b92ee", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "3d379efd702960fe75c90296c6f4f9f413ec96058fe7a9a0d2a85146b274ba68", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4695f7f85a6d226f233f9d24147f8892914c3f884ece3e333527b22bd4c3388f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "3d36bbb1ed0dde625d153bd3cc8fdd94e9ecc0e201cf969fc18f40c526c306fa", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "fde9d5f9ea96f1218cf4c98809d341f0470ffa66a41ab63cc135d69f8c20cbe3", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "0d4a26bdd42162e9d7eec871a9e2fa1d2c9e648107fd499668bd9bd5b7b7ed37", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "a73c5276d116275e5710ed8ceac9f0e50e938dee175e4e5cfa94a9bf4e72e578", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "a73c5276d116275e5710ed8ceac9f0e50e938dee175e4e5cfa94a9bf4e72e578", "T3T1_cs_test_basic.py::test_capabilities": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_basic.py::test_device_id_different": "cac4a1a1a02db2fa46b5585297c398c7ad9cc455f430d126f9a5ef2b84115af3", +"T3T1_cs_test_basic.py::test_device_id_different": "3ec2d1bd71e5f528658cb9a695881b9039295c3667d81c1cae673c51c676ded7", "T3T1_cs_test_basic.py::test_device_id_same": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_basic.py::test_features": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_basic.py::test_ping": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_busy_state.py::test_busy_expiry": "a2f1a220091d026e1ef43fb075fc4ee8e5efe47f811bbbb0317a7df173075106", -"T3T1_cs_test_busy_state.py::test_busy_state": "12b3fc0ed1c6ecbf5abf26c06e3b6e799b3c648a559040614d039aad9516feaa", +"T3T1_cs_test_busy_state.py::test_busy_state": "f67f56a03f467d8109e2eb06c9664fc6b39807f96c52a72ea28910eb6edc645b", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "79c1a7760da5929438cabbebfdbd67b822f3b26812c695f3e7a674a877400fee", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "79c1a7760da5929438cabbebfdbd67b822f3b26812c695f3e7a674a877400fee", "T3T1_cs_test_cancel.py::test_cancel_on_paginated": "7a109cf0bf01162a19330a39224ab3f2da81994e393cdedec0187a9fbc5be0b2", -"T3T1_cs_test_debuglink.py::test_softlock_instability": "fdf6a34e87947bd47196af675f9b574f29276379d0daf61d72c6b1c093fff6ff", +"T3T1_cs_test_debuglink.py::test_softlock_instability": "24fced490ff22e103d3fd5b4b4cc2f6aa1b76f114cec4abe1626f18c44e88730", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "c3f1de4575b8475a9c106c2581439eaa8f932a591ae25294099fd900ce09bd3b", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_language.py::test_error_invalid_data_hash": "fe1affe77aee510b17131fc106b95ee574f7f24722d85ff03af8297d79578f24", @@ -17041,7 +17041,7 @@ "T3T1_cs_test_language.py::test_full_language_change[es]": "2d1765fc50f879bfbafc94ec8e554da545ce2c33c648c06dc17a6734f6385618", "T3T1_cs_test_language.py::test_full_language_change[fr]": "a540d967409e17ad3276e635df51bf65ee2ea08344c82658e14b03c0b609054a", "T3T1_cs_test_language.py::test_header_trailing_data": "fd9bc4811b97174b4739c19f9c20f2b98757d7ece5535057e2b6e968f9d7e4e4", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "abfc034ec3dfe98f606ea4b37a25060c65268112793db94f47abf17709ad203e", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "889c348d54f03a01f0330ef8c03bc6549fbb6043f061166400119b37c21adc5a", "T3T1_cs_test_language.py::test_reject_update": "3c1e5fdf306a2f81ca2cbc0a3bfd1b87c3ad8f45e9c887c9187fdf6a38e6a32d", "T3T1_cs_test_language.py::test_silent_first_install[False-False]": "32d56e7465b2ed22644a173ad2567e8f5fba5a6e5e01c0f89b4581d590a34b56", "T3T1_cs_test_language.py::test_silent_first_install[None-False]": "32d56e7465b2ed22644a173ad2567e8f5fba5a6e5e01c0f89b4581d590a34b56", @@ -17051,15 +17051,15 @@ "T3T1_cs_test_language.py::test_switch_from_english_not_silent": "bc82cc5997cb8b1c358012103f4ccb166a85e1f1d890b23f14f4e376a1ff3f01", "T3T1_cs_test_language.py::test_switch_language": "d55edb66e6af54074369ca2016fc862c58910e9191e7f0eecf028988a4f16431", "T3T1_cs_test_language.py::test_translations_renders_on_screen": "659d89fd1885aa1ac0970530a0418ee31ffb0f1ff49ec93a952500373c09cf5b", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "19f76ace8059fbc04d3fe4518d9f36b072bff87aa6655b66511f3670b8ae07cc", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "83e36ff6cf4c7031397ef0dcf5ad93381f4b8d819383a5bdd4d70701c476ec40", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "68194bdf2baa9d8acc4303edde000f662debdff4be8033e1a5d7b95d8d3e1aa5", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "052e4603f23fa78221be95d3aeb8fc05e01ddf8c4fdc035cf5fd08deda8a5b76", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "cedd581765f7b7c9657dc3343f9b3c9dce753458024c98869b14f291ac76b5f9", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "07fde9513dc060aaf03a5b9d3fa2e2fdcd0c8440c805dc7d9425f51395c00e2f", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e05f361c19859e0090b23e4a79af3204a90532c9b3a4a758636cd4cf24aa1d5d", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "c990b555bfcaa06d3f22d85038c868f3d96e49e9042ca36484f757875f7479a9", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "bf16a6e311d82973cc2c049083741f9b52577ece0d54735ae972f8b89851d55c", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "1eb23bedd91e4caa61a9eea4362fc5cf1bf9f29a78395750a05a535125bb28ec", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "135b61ca7afa721b144490b129fb7ec6f9d6b4ede717c0123c2524fb229a4159", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "741f044e2c5e2d4be2cb9cc4a3727ac047d7c1f36b063fec84d622230f8fc9d8", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "6009d612aef0a77e5683e3de4b7f078ca1360bab8fd126b7829c3f1aea6491f7", @@ -17073,61 +17073,61 @@ "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "5d3656f11464664b2a3d0207cd810a7ea3c9049dc75a5b6ca065db6f9aee9d35", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "4d6427231d3ad3b067da6bf74cc1ceeffdd6d613f8962334cb208896c6377655", "T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "999dd5fb42dd91828f9639aea295d23c986cd9e83b545a57cf375c8b8119f81d", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3c4d53f7dd5ffe0139e904eab6f7dd1abfb64536557d4d4f5cb30e95a3023b95", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c963b54173b4d502ecd3625591d3d293f75bcb0277a416fe76adeeab6a6a46b3", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "2ed0a909ff10f5ff7e843ac2ce3c4163035fbfc6a7e01048f34490b6ea9be24c", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "65afcd1f0cfeafcfe5f9cb1d41dfbb24c450d3d93a287ff8a25c09638595553e", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "be29e707e013647c57c3b3014e4b699a26dbb768cafe88448d1dcb5a3508d84a", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "0733f3e32415faaabfdb919d89df8032f1edd83cc81272d118943aa29a880b39", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "39a6687814b8bc2850883854cf7b45451c71c2af2ab5b2dcc573533b5de743b0", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "dd1070885af7955ca9ea1b69d5de6a658189bce345adfd2312eac143a2f5939c", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "3107afd18ed572d2f0824eab6115d4d738304c48b781716c50199176270bb097", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "e3cea166fcdd282c920ef2360ec653088609c64bba4ead96cdb0654bbc7581b9", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "07a5944253d75c9a47b999dc95ea90b020d53be61838d820178a6f5713f1788e", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "2467f96cfd518d72edcb85559d2b328e0b7b0ea0897a901982751bd18ef4f094", "T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a9a8e3b5e6a5b38d2d3643a8f5ce3c50013b0ad8d14e58900cd6ddba77b89287", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "fad789bade2e49d39fdfaa3a812b5d8d959ee5da279405314f17827dcae855c1", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "6fac25cf4277a2392745060287578394aff52a6a1f91c2679ed698c416dd00eb", "T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "b3cef6126517f2baf81f822b1d5236de97b0e2e6665de160095791a4c5644446", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "e2fbba4896dde08bb45b375e1bc5ed04176088e8b61edf23c094899708028ede", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "f77f84bdc18bc68912f28219aa3cba0aa1e1bac2e961c27e9c7ca8a4b93b8d98", "T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "da9100969d8dcad3311ba32dc406ffe3451b36176ff7c6a2647ad212824e8ea9", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "5866437ef392adb1af12cb6a64760e0ea1b05632adec9117834d0ecca2f676cd", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "9b59fe2039ab4f7eaa44f15534d343112ec82ed8bdf74beaf89e6481bc393f29", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "c44be8e2a40bc98f93eb694123919f866076474e3f9c1141a2cbc3eb7c93558a", "T3T1_cs_test_msg_ping.py::test_ping": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "2218680b089704b98d4581739d73ca6983022a559e5ee0bf40d7fc1379363035", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "2354bd24613b7cbddbf92061989bfada01d8401925503d9988950479bac60b08", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "d83d1ae6368bd2417181bf76cbec66fbf6422f04745370e0c499f0e4446a1aba", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "ce7190583e3104155c7e8f593e1a997ebac8eda959a47b32b0ba64f3a194a3fe", -"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "cac4a1a1a02db2fa46b5585297c398c7ad9cc455f430d126f9a5ef2b84115af3", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "72733050e7e11b3494ec47444ebdd92709d5163d715f06504806f193518c28f5", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "8c2e21ee72e4038ba7854d9893f78647f639d1c84dfc021ecc20d2bff2ecd8df", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "899860593365914e71dfeb4aed254efe0a197576c4074f93c0d77848a2febba4", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "13b668b62b848ddea98d130990a70c72b7d00d565f6cb1d5ac6410d0d1eff256", +"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "3ec2d1bd71e5f528658cb9a695881b9039295c3667d81c1cae673c51c676ded7", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "86209ef09e8c78f747cf1a397c3ba02b9917ddc3ed5e76579277726895f6882e", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "86209ef09e8c78f747cf1a397c3ba02b9917ddc3ed5e76579277726895f6882e", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", "T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", -"T3T1_cs_test_pin.py::test_correct_pin": "a29fd79a728f8a637ab45a3ca75a0d0e962ae15404f6733682bc0fa39625dc82", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "e0670d40cf26941b48a6d6d5536fed719b32051247ff543ff420328f94550075", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "5c1ac27507358ede8827a6d58285eca01813180d191b5601f5686f8cb5942c3d", +"T3T1_cs_test_pin.py::test_correct_pin": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "4f7e4bbc468ad727d9c21c3f7e1ba69be50cad84316dbbbb9757cf2fed051199", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "6cc0d38c8118d13a95bcedc4cbcc19decf0162158a8824590ad6a3c20ddcabc6", "T3T1_cs_test_pin.py::test_no_protection": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "4d039707264026b173dcb200035351f73d68ed088f421e5c3815e3921709cb0b", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "410b4d0e64f18e72d21594e71477f9b4eef2c3863a304d9a8164c2a15564f2dc", -"T3T1_cs_test_protection_levels.py::test_get_address": "af1092f3a2fe1313466ecb869055820e148ed001fffab4a9d74c0d11b24c493e", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "f16e2b285a75aa72d17c252db21e026bca10e6060525898991c0305bd5de91b6", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "af1092f3a2fe1313466ecb869055820e148ed001fffab4a9d74c0d11b24c493e", -"T3T1_cs_test_protection_levels.py::test_initialize": "1f11a68bbf2288f6778817063a85060ccb4f2b50bd83ad8b193d0465599e9507", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "130472e6635b44a4813f4c0f5b720d2a2f16310c97086592622fc5c5126b72c2", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "cf812a2725156ea16a9f195797c724066464183b80a3663d1c7acb1667a6b1ab", +"T3T1_cs_test_protection_levels.py::test_get_address": "97dce1aeb710aae710efe96dfe209bd4ba4704e271a25a27057e37a627f5af5e", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "d8ffe57f15df91391d6e286248d05bce734149ab2ae8771e1f19192feb9ba6bd", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "97dce1aeb710aae710efe96dfe209bd4ba4704e271a25a27057e37a627f5af5e", +"T3T1_cs_test_protection_levels.py::test_initialize": "3744a59df33bf25a9f5e19138c18c8b317d602049f2e9465beaaa2ac66f72596", "T3T1_cs_test_protection_levels.py::test_passphrase_cached": "ac13e5effa20b7c35521656a7f7e73772ad2aba44a677d7c7566e4fde3ab1de6", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "5872391ef432749ef7bbc826434c8d573ae8d3375994a73154ef4ae3c37eb431", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "73a5b9067cc5bcd9aa38f3355bde6266468b84502637b4c6f63ae74bfb464f7b", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "14102d3f7dc5cad90e0d9d80f67ccc40fb7a42a232b5d8fafee2efc3ccc3086c", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "0437e826dda4995971606c4439e6049321014163087fcab1db4f0ec875aa83f2", "T3T1_cs_test_protection_levels.py::test_ping": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_protection_levels.py::test_sign_message": "12dbb52226b2ecd376ddf0f7ac7d54a296e40d41d839d039d50c346af48a8b85", -"T3T1_cs_test_protection_levels.py::test_signtx": "2d66211a69a98f8109545ffe3c0a75df69f69d02058ff4e959295a1daae35d89", -"T3T1_cs_test_protection_levels.py::test_unlocked": "47dcd5b7cf013a81152f000449e4f823d481331d72318ab8845359a17a9d0286", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "db119b55d10692e0a0ef40c09ecd87ed55db89b9341d604fab8ab63d11d13b5c", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "0ebc0fdd142d19312c591bec597f35fb7ceb3d71c8bb91628a3e8cc31090426f", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "8ac33ac1d73d2a44932e61522c33d05627c0ab5e9dce422f2612bbfdd0153511", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "c7660426a3fd1b3f95b4a422e949c5d0329f1649ddca3f825f207662f7b46b78", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a9ba189efda099c44474221ed74dd44987336238d38c819f30b8ede13d75dd2d", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "83f5076c97c5b6864dc498a59363963ef367c8e6e9db9eae5ccdf5d739794454", -"T3T1_cs_test_sdcard.py::test_sd_format": "2bf6f6dd008b387e0295865b0926c58e1972c6615b213daa423254cad4828c8b", +"T3T1_cs_test_protection_levels.py::test_sign_message": "324abe15572218eacff89c9085b08230b16092f8348bc68356cca42217362a06", +"T3T1_cs_test_protection_levels.py::test_signtx": "f2d1d3ec9d86368e0332e9da4170e3624078d57d591aa7dcdb70da1b0bacf51c", +"T3T1_cs_test_protection_levels.py::test_unlocked": "914f4ddfb7bbe164c60e6b1e452122799928e657906dece356d80a2c08991c10", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "bf72b2d06b2f7086a344850aa03ec8b6db2cb25afdbc1efbbb85c20186c97b46", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "786d16016f228130a6d3cbd364cea674fe067c2527591c61c2fabf10b572135b", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "5c2257fdae7afa64e12010ea941bc9a5489d7294e2183cfd0fa90c0ee5a78787", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "9c5a4cca3f84efe04bbb5210e6485e640b2e3789e0e2ad994805512e23235741", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "07c4a61f6571e02867c5639b04322a5a2768c88baa703e8003170fe7fda4e9fb", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6c4a65085efc55e40d553ae8b259044e80f8a83fde4b206c808bc9b6fa266321", +"T3T1_cs_test_sdcard.py::test_sd_format": "39304f54a0ad2570e0b8993fec9a3118fe7347c64d45b0b8ebef4f1e7266b651", "T3T1_cs_test_sdcard.py::test_sd_no_format": "d775aa49d5afe8d5ca5e0a0b6c9b2b2cb00614fb9188ddbb7cea06e4d0164944", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "4c755ed046a6e9cf1fa4afafe5b2f6157e5a9ca6093ac6d0b3c8140438c311df", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "a672fc557fbd9eaaa1bdec34dbfea8da64223f18fc50b8437d52f8a510370efa", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_session.py::test_clear_session": "2f3e91c76c4beb352df931f4cdf6068d3e29f06eb90c1242df04c65fb9fedcaf", +"T3T1_cs_test_session.py::test_clear_session": "61aa803c09322a6de38251c38242771b228c7f0a97069d333d3303b46601710a", "T3T1_cs_test_session.py::test_derive_cardano_empty_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_session.py::test_derive_cardano_running_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", "T3T1_cs_test_session.py::test_end_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", @@ -17190,8 +17190,8 @@ "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "6e0b795fec2f0fa5a6ad3c3c29daaf4245ac9eff7e32858b4967819336f8d793", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "3f1dc1dcaedfbaad08a0f2a9e0fa647ecd5080f621cd3398cec4d17055b1264c", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "8832a745d87675a3ea63189f52ae09d9e48d734c4f087433fd349441c707db7c", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2a48672daf15ca01c31504903339e3aa4bffffdc5d3cdd5391e6e650ccac92aa", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2a48672daf15ca01c31504903339e3aa4bffffdc5d3cdd5391e6e650ccac92aa", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "14e4d7081fafcb856552ac88b2978cd85d04cb8869e5a2d53ea18fb87be4d98a", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "14e4d7081fafcb856552ac88b2978cd85d04cb8869e5a2d53ea18fb87be4d98a", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "975aff581408fc960458326d58a828144dabf184f0d613da8b7b5cf337a7e547", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "0705d973f15f20ffcc25917a66423001eaf3d8223fe4956b9217da694fcd49fe", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ff3b5058598abc9a7abbffda5c06396e7b37c6406635ed262021cd77ec0b8847", @@ -18177,55 +18177,55 @@ "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "7c7785acebd87b7878cb0d09426c5804594326797862f94f27011019727f941c", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "226150a1e7952520589b0fb661f9bb8ec9edf1e27a57dbb74afc6c0b32026e27", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c63b1d2db83270765eeeaa33e49387fbf76336dc73de2eeac7b4af46302e3129", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "05ab5c02834fea5115b94d59803802231b030989ebe3ce894ea4ff75fe0d81c0", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "7841a8ff65ca49b0d2acc883da8b1ac6cd614e32cbb8df9a0714f43fece7ed1c", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "18647b1d1ca057e0feefb731e88807a7a563288407b6556ded099401ae5d03f8", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "b967bbbe778f8bf6742832984a9b3867ce4b5aed51e9fcfd56303ad448bea824", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "6f8ab1c38509fdf1b4e2e5110b22e1c51e0291cc81420682adcd9ebd00164fbc", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1fa5a1d62ee9bb8c595fd6e97afac728ccd230f76657ffbac4ecedfd218c25c2", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "925085d1a4edb21b0c624a2c49e3a65d001015de330381990a8446f8dca518f4", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "dd5c479a1d9454264bcf8d4c84017af84e471b4ce987d3bc72cf156e98d0ef21", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "30456e6fd43ccaa4c0954c8a466dc62d943b9be94b1a4f26e00d27821f49a2b0", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e9b69577ceb6f9b69ddfb7dc90685f83ce48d381f736dbf6e59fe9aeeb72b3b8", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "33bf9b8b21f75dc92c0ba236818b3b4cca14e805745094493a28a348bf0d97cc", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6abd808024065e5d80ee9e12a9f64692923ca14d9d95915fd46735186c6ad451", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "9f9a6ba2324a6cbf01e9493a13c2d9177c9ddf52846dda655f3ec4784218101a", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "36e2818a424075d2e9b42ce8fb7f0dc8b94617b18c81f5972ce5a30457e83d89", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "c0b331f2130d04808aad59d80ab3299b3e7e30e16b8a88413d0d28668650d007", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1fa5a1d62ee9bb8c595fd6e97afac728ccd230f76657ffbac4ecedfd218c25c2", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "09a5d135a125c1162f0f82a51d36e14ec3cade3fcf54f5bd53439f2bd1476fe1", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2996f684e7a915199cd965d65acf74c65274252b9ea4c970495fdce33fd33a0a", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "4e72c568cc1d869d2912e49fd10c122e4e58df2a6df0efe7d3b47559c5f73f1e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3338b68f1e369480d1e89b13b5ed6e80c3a3a7c2680cb982a33de72e79c4a79f", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "30ceec349dbcfe4b9ccf2e0242bb11c38bf6b32a93bb67606f0cd404690b7737", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "32f74deae979dd2738ea7e2ee6a181e1fe143eb410c0b81a265ead433ab5b682", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "1e9745933d71346cfd7221a6db17a62cc1822a621769008d32f1064ae1e485b6", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "117b9125a10c94a602fede1623f9199008fde940212619b8a6b2af94a0c863b3", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "42819077aa0e14d728189d255a20edbe39e63b61ded862d89e71f27e13b1efcb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "cc5001780f794fb3a637c76073faf85f8f8db66b3d84ddc6e0e1e8638a83731c", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d7b3bc4d8bdef4b04946e734523c46f8f9cee0c137e3bd34983778add5a06627", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e5ab874d614015da4387361f4c33e53019383964f795e7e3c22afb4549770cfe", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "38002d81da98997775ac1fd990f456c1604f2375dbbe46bf187a182ae403ea1a", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "910dee2ea1a30feabbe9c9630dc8f68324263b31e42cd22a45a9915ee0cd8403", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "771aab476f80391cc63c62e11e9b7a879e5352bf366ded2ebe85d06b7e9f87b0", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "11992cebec9d0957f4096d7f7da7f2bb3cf639660bb6162bc21c980589ef8828", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7b3793b9ae31c57110f6f891d274e0e75ebf0c392d97a146473dbb7f679ab41a", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5cb1a64ddc0b7a69ea96cbb13f3e414081653498f2d31244d46dc86557a16dbc", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "49846b690944520386e4f517867c3ea90544d00aa7aa49bbafc7f395074abcb1", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "aa6b54eb63ba87e49093f0d2aa9b2131cebd60570880b02fda19191395e57a5f", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "860b41ea35e49fc64d0be869c12eaa21cea1570cd05eb56feeb9b0f594c5f6a0", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "914b883dc9117e4ca1e833a7427f4ca0e8be4975dee6efcff334a9094e71c348", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "024b2ae0514125f80ee168a75f64987702ca3b22242d3653caef94a321992594", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "547134f45681003d07c2fae530500e52f4ce888754adeb30988e1b4dae3752cc", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8521b4613e25e19f17ecab38a6b262918015ed4bfd13d9e38bf99cbe1cf822d1", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1151e567beb39f361af380040fb4b2e43814ca406ac4147444e7eafda53f4873", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "b50c76f4cd81adca4e92af14ac51dabb9bf889f28d8605ff427fdeb130bf997b", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6a070be1a94362c84f84ad3498e2db6395b6541f6eceb75361838d5ba85cc632", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "64a900c24f2cfaae5c2e6724f048bcfe5a33003f535005e3fda189734092637e", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "782f2e34ec0d3060375a403eebb7c7e966970f2b280a68a7d74999d4c55e4f0a", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "68359683deb0a82e6fc292046fdcb0026413af84a14ad15a77f42ec23bee3791", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "914b883dc9117e4ca1e833a7427f4ca0e8be4975dee6efcff334a9094e71c348", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8c1320c0628b41618c6b6ef9478699898b70cd648f942ee7a632a5b457f2dd36", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1172fd1347b269f7c54b5a84024d5ce8a8676cb7cd049fffbdc55d66f62de479", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "c17807cbf891887172a683247c21ab2a44750e066093c56109fda3917dd5748c", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1b562fe01c819addc39708904ad2b4c4af19f4f1228e81740d61952ffa0e6274", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0af95821922508faf5075add6b617e56a3905ebbeedcdf28dca82e450b573e66", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4c8848dae3f68e9d8693cb6737947556c0549e627b8e98f3794f1fcbc8813055", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "53afa5408f4aac281288b6d432313b969f752727ae65a3c3f01ba603764513cd", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "550f207d06272a6adab2cea38e8e62e11abc77d205fd2b4114dcc8bb5da86acf", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "31ca44ee610ec896e35962e0da39a53f3ad38e332aaed4912021a5abce048d97", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "74fb6df9fd698ab0c8c4ed4d6019a1e0f456f69efd2e99f47b6d21ec280b71a3", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3ccfa432601a526346d86640723c2b483c5bd34991f09d0669d4d12d94f64ed4", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "849edbb64b3ed557fc31a8512254adac35c6de26cb7d0a955041c53989b66ee5", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "322e3034d45acce5319be2e89756026663a65da1cd5159f3052fca80a2671ab6", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "b4b58d8c2760b7a049aa805f4b7e72415dafd8e799dd21de6c38a00c83da5703", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "a2d24bab590a32be3d06480e26583e3b74d122a04f710dd4e849cfe8d9a725bf", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "48eb69ad3b7e7b902af2b627c675ca416ad93804a5cc5fd3a04422f225653b36", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a53eaf5ed39c7fa6ad53a63f8160b9e394a52b0387bef23b01677d1e78452fcb", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "aca3810b5c279e58b402a44c7ecbb1bf256c2b658073fccb24e92c1080b8e332", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b0c7d2386c9b7a546f0621a467ab02d63ca3af38c3f8bcc2a1ca8322356153f6", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0db733ddad58a3268e1eb6617f4afd5fc8efee30b1f4646725663b52200fc004", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6df5e9ef96ae040a17f00208e8ff84bb96c8d10e53e4c18c199771cc1dad6a8b", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b06b6f90627161fec991d7a0ae098652c3b0a4eebe65243e8f2a139c37235987", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ba9e1eb8e54bc435eb22d5d5c76bc6a2ac996a083a98e93fd92f7559ed073ca1", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "24aa7ee508e53ef9f3ad1e95bcfc6096e96d3f93cbea4c02a19f9fbbe7341cd5", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "762d092f390ee436559ec2f00ee541d117390714cf9fbc5fedee363be2f73715", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fea7a62614d782aec918f7667ce6217c96181f21d15f0085a5c271f1ff358fb3", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1f2237210f56c74a06a1e2ce9c1d92bfc9d0cf5269bc012efa2eee60af49641c", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e034e206761ade262c719b8c4362b6a9abe6669d0765780f3803d7d59e4e596b", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "185e9eb8d05e6aaf008773642eee06f3e031f43b70e96a23fe3142e85919970b", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "3b99c011b508b24330223e83366b0c995eacae83a55cf732aec904176806a9ad", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f8da4e5737f103c94975f61348b751272e6c3b418f1ce24241cb03cf8a8a870f", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "fc20958732aeebbf50bd84e20341fee1b7b38aae13f478f6794355f63fccc0a9", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "341433ba09453109169ee188b17c54645473e55966e8d0f61b6c9a98c8616324", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "02797f44a5c2df646724fe3ad4bb404302189ecd9a28584696ffe574a910660a", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "72485cbc45e2d33c25cefbd50edfc6595499b93df658e863874a61931003d839", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b7584cdbb8c5c025003c7762a50bf26481a2463a04aef2359ee9e09dfa4fa6e7", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "066d3c957c12fa5b7f131cb528739fa625820a26105a9ff55dbede87c320ef88", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f41da7fad40831f006144e9fb7561f6bd636f8beac81308abb8b4c7e7f20684f", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "854e959d8091c65bdfe25643be5465393f5460c9f55cd3b84bf768a54ad9a287", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6bb7a0839c13e7f92f2f609ac84e3c986f3d8983c14682d31bf4c157cc109498", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a5ba41ea2fb3805e2e3848326ffca3bdcde0a2fd4430498afa3638719570854d", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "cab8e7643e74d28332a2dd920745153bd419931147fe9d6ea6311c8f2393d6b1", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "b86d3e58d4700ac2fb634a9e981697e2fd9513b9a07996e09ad8c9b3b0a3cdde", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5e55eb462b0f225b18e4c487789337106344734b236f934c7a16de7bd4859788", @@ -18362,35 +18362,35 @@ "T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "8f24d1f46a020fd0c71299417bc8b38e81c93fc4e3539345490e7603301dbe30", "T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3826529edf9447bcc375e77211aa02a699ec9b274cdc51d5f5296ced85296c31", "T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8b81960e34d461700c710535304f2e83bf9bae1c0effca5bf8519623372e718f", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e242ab02fd9bf91e16eb197cd343d9278e937a46aa82fed16d0e164a463bf6b4", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "131a5aa547f1ddca0954ee01955e8fbd58e4aed3e23c12af97b7e9179b2bda2c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "eb97415db4519c656ad1edd7cd2f79f8f1ca661c65f5926dd1a4f9c61f5b3282", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a551c7e68675767e108ae794fc7f8855319320fd3b99cc5d1d1e456aa7ff69c0", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b8d393e3739a7e3c40ff82516b6f95b340dfa1fa43b05d54c50c632d78912557", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ab2ee76fdd7e5a2f7bc67674cc352cc77ccaf89f2bfdf64e51ef1369cf1cde4f", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "39fae5dfba2b38d094fe2d8ce0924bbecba33ebbbe25b0742ce01f34e0892df7", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "5bf2337dc1fadfa37949b0ea08711f3b206ef8279c9b1bb0f7aa4747ec2d1e59", -"T3T1_de_test_autolock.py::test_autolock_default_value": "99f0c1dc95cc8bc5b5ad1e534a2dae550b1506fc0be29826d237d5fe0dda2c81", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "d113ed8ad29e2c78bbb41325c94c10c7774ddbb7be3eae4a31875e4c0b00fcb8", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "d113ed8ad29e2c78bbb41325c94c10c7774ddbb7be3eae4a31875e4c0b00fcb8", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "7faef371b0685238fc68a9b1728bd3b2e76e71f4780731585adcc28f7dfe27dd", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ba826072228da37df7e72b0d17cc0d154ea53afc77e989e402da3e21c9ded1c3", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aec1c35781352ee55925f8cea2ab7686003e8c561e3402e261785a1ccf17184b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "ba71ca446347dd48950ce366be7bf4d238ae4a783ca4fadf04f2627ba88beb9d", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "cd670d8b1235bb620d5268061ab2933d08e28595059f7c325a18d96b7d22fe75", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "10083c36c0f70d47849709516fe643d5a5a325995347485c3f99f04e3d69582e", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "ae88d19139a8b33e08c29a5610cf08f07972012bdf7485210019705ded27b5da", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "4bf7a946f52eaffc31662a88e9ad906eb024307d81d03fc5d5063115f92af7b8", +"T3T1_de_test_autolock.py::test_autolock_default_value": "65fc11829be2090d3767591ddc0970c81059289bac77b5a99ebd23be83953d04", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "d2fbe3a515ba4e663d3545e245a4706d51ca51f023949336d887af5174d4cbd6", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "d2fbe3a515ba4e663d3545e245a4706d51ca51f023949336d887af5174d4cbd6", "T3T1_de_test_basic.py::test_capabilities": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_basic.py::test_device_id_different": "8e65d9e35441a2a3d8e3d8b2ad3e1654101f507f85405b5e51ee4b4bbcde9b62", +"T3T1_de_test_basic.py::test_device_id_different": "5621206e80232188c3189f1d20c18d0cccb844eafd99ca79dc3ec1b6e33508a4", "T3T1_de_test_basic.py::test_device_id_same": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_basic.py::test_features": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_basic.py::test_ping": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_busy_state.py::test_busy_expiry": "218ccf08ea64bd2795e57c147909f93e014e34b95eb5203934b677e7cac8e11a", -"T3T1_de_test_busy_state.py::test_busy_state": "f72d7efa7959fef8c91a276764351ccb0bb1efff0acc5ffe21e039f337efe529", +"T3T1_de_test_busy_state.py::test_busy_state": "03cce1e883d09fe94b9df9207b303db85f0f47b55797e99a1d46991caf7e08e5", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "6b947bcd43006a0b7f7030dd2149a62000ab4e0900f9f5b15ccd7bbba0a60c39", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "6b947bcd43006a0b7f7030dd2149a62000ab4e0900f9f5b15ccd7bbba0a60c39", "T3T1_de_test_cancel.py::test_cancel_on_paginated": "a65d43e1c0f31b083cc42839daaff521078294b0effff7e9dbe73d7cd20b7822", -"T3T1_de_test_debuglink.py::test_softlock_instability": "03182288f911280db29fd5e24a854add482d3f540d9c857f4d2a129c100901c0", +"T3T1_de_test_debuglink.py::test_softlock_instability": "0f7ad746b5752911b6e5464d24eef7511184a1bbdbde5ef13065900f83857811", "T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "bf2f818f1145174c6b3728cb9d1b31b02e37c73f9c3e9a34de5edf9d4158caf7", "T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_language.py::test_error_invalid_data_hash": "f6fb72dd5883f7baba49500764d119d4b144c89fb14d795e6c2dc9174a5fcece", @@ -18405,7 +18405,7 @@ "T3T1_de_test_language.py::test_full_language_change[es]": "7f237ea6a4b08068bebbadb694a297203cb875fb152acd8fbb2f1a85d778f564", "T3T1_de_test_language.py::test_full_language_change[fr]": "b400810e21e3c04d417f4efd3d796e6b79f6fc81ffd504724d65db94ffec641b", "T3T1_de_test_language.py::test_header_trailing_data": "b22fdd50b69397c8eb92c8778a390a2b07318875f9284546157b93acf06cc8a6", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "efbc6a48a27301e81e21bb44c4dfb6236c2b516a893f1f017bd11f9027482b75", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "c06d2c136d3640a83db000b0064c2b4ab75e8c5dcc7ed8ef80d21a6c3a4811d5", "T3T1_de_test_language.py::test_reject_update": "47487fedb409b1313046b9b7195bf2a8c70d852d10c973c92f303940764ddfc8", "T3T1_de_test_language.py::test_silent_first_install[False-False]": "990c1a3c0f64b4b23e6bbb87765f3dfec70b94a421121c62d956e3ac9f313be8", "T3T1_de_test_language.py::test_silent_first_install[None-False]": "990c1a3c0f64b4b23e6bbb87765f3dfec70b94a421121c62d956e3ac9f313be8", @@ -18415,15 +18415,15 @@ "T3T1_de_test_language.py::test_switch_from_english_not_silent": "bd161d195bdf79d40b6b1270650042ad5b5c1864ea36cd47bc91c8d975857a7e", "T3T1_de_test_language.py::test_switch_language": "f2a91409b6a92cc9d12f36702e729624a449edd4f4c8cf640fa1e55b290c15ac", "T3T1_de_test_language.py::test_translations_renders_on_screen": "6c79de36a66e3ce5a00e40b55177696687dcb9826815016b55c0cef89aaefecc", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "80fca3e714162b62d2caf6e4598db89ea5586734cd772f84deecc5a559e2298e", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "b1b04045b59bba1fd121c4f5da1619dcdad9c329dd5c6ef00c7e594c17c37641", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "7420011b609fdcbc9a9eb03a0551cbd9cda0df7f30901f1fc6d405cc9711475f", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "77e971255caaa6ad26e881bf25b02300b1d72af7e1e621986d11ce0c70fa317f", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "eb0a1e3243e49c3d4317f3170014a21ffec12b314274e86d3305a9cf256e87cd", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "e9926b5c3d5ed86cfeb72d791c3ad7cc35282ed5a774b3b6e41733c22ab49077", "T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "79fa1a43fe800b6dd858ba363f341f096c0a9d85a5fce9afc02d96c88f5e43c4", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "95bb1f302257a635151759a705e3465ce70713d53d269ebfc3dee28d2f4338da", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "47f02b3bab692c055cf5f32de31f7ef7de9d69aa9ca976bcab4088d6bece36f5", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "c18dfbfac4657f78f47f7b37bcb13069fae03bcf601a0ee660ab40f5e682cdd3", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "bbe9f6bb2d4e1cd0a27ba159a401518ddecb0c2ad43990f90bd67af1983bf4fd", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "07e415943999d9052d9b834c1ade84393f38237ed4364422ee559c49e3e46c95", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "6c4290e1ddaf619a7dee19daec4898ee161fbab7ed6de84db717e087cbe6e424", @@ -18437,61 +18437,61 @@ "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "403f991e3d8897307ff50cd369327a95e139dd62207d416515320b999526bc44", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "daf89ad0f2da3d74dd7619fb29502770dcabd2fe34e8f2dc3c356dcbe57dfdad", "T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "39736913a24c98329d9bbd61a9c488aef91fa8a3d68b89940fafe47ff30d156c", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "a72be2f83571fa2242916bf4acf1595c38c7cb13d757e489549822fffd4d87e2", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ee17311334585aec07b24c30c04e14026cc9226bc0ebdeaa8da41ef52617869a", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3cde5a5f18b377d496167ee307f1bd0d2c19454205e1f2d8c509fce3c48f5a17", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5cd6d996f06cee41ebd98b845c2a49b521a0c7e58db9c018ac049d26f8fe0201", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4872d6f62f77ba98e9b0d7c3ed1ea3c54eb4306516f99db2c3625961e1166d6f", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "15e64d08fd11a98226577ee13f2c3c30902b1e92640f2fa3163e7b65cb9fd7eb", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "1d7d9efc1d354b58e497c692138f3a4e07b402c1a6850bf55e302f38175718cd", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "5c6e0cfd449f827f567c1b2221de47143a1b2ae461875524a473204cb012bfb1", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "f74f4fa96f85f765ce66c68b8fd32c8e300691d0214f6a8d5eb95e4bda6ecae2", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "c07893520ac2bb897884589899331f9e687015bbfd5ebde28bc9f3366ec3dd3a", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "eefee07e5d1961957dbd96e1fc522bc7daaf1e70af0da9f6a19109095d91632b", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "1e0737064f3707d283df8a98020f8f9244c6fedd38505ff3bd5089fa1b2cd628", "T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "775b5519ed232cbd4b34336ad7dc343ec901a0fd78e8fcd93a8dd2986165f4b5", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "e67fa370374ceff3c48b57a44370850037465302354647fc1ff6598f86f5f0cc", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "3457da59e581ecced57bb92299ced2e449074a0343c7a1d4c611751e9ccbebf1", "T3T1_de_test_msg_changepin_t2.py::test_set_failed": "4e08236c01ef1451f3e6c49d0b5d36ab016c9300faf5d93a15a9108cb2d09a66", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "1c168301c70fc0925b248366183e9bd02e89e0050797f5a78470414a0e6e2eaf", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "6d8a248e0c7e2419736e7388de4b0901d17436f2a9b0e28d17c8ee7d32985507", "T3T1_de_test_msg_loaddevice.py::test_load_device_1": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "59697d016ba4408b55f1ac9371d114d59d9bb088b4eeee02de375b44726228cf", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "21cf2ea066ee11c565f6c66482d2ac1208db51d2ef313823152f6545615201b1", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "c7da841b644b4dbd43d61c413c27c78fe8f0865a6c44aacca76d64143792f75a", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "b2a2ff43d86321720984b51df6935c57ed9295cb5187be94fe8841393f9a82c5", "T3T1_de_test_msg_ping.py::test_ping": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "29cba18b471af22a5590892f8c79bfdaaa162f4a0ec0c78578fb3713265150e2", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "c8e40ab20bb99ba731eb8d634cd7eef5100fc05eaf68878e15faa8a9b2975487", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "cebbe100765d54bdf826ac3bbe8dd56d8edbd41f6a55763d6a8710a70743d7c0", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "4b71fc476cf42443d282564534ae15e3b44250db7ad09d8d930520ea215a5704", -"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "8e65d9e35441a2a3d8e3d8b2ad3e1654101f507f85405b5e51ee4b4bbcde9b62", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "dd28412cf5592326bdfd4520241f7105fd1957e5ddd6b88af964d812db5c4cc1", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "87d08947a4acdd4efef4fb913dcd3f9cd42fd87936dacd5fc66c3c1f9a8565b8", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "24a6630bf8eb1323ab99b95119e1f25025b7c87432fff15b9ecc70bdf0f19c2c", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "2772e6c78671d9806f08f66f388ddfc9d277b28c5e509f0377ed7485c0f1a06c", +"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "5621206e80232188c3189f1d20c18d0cccb844eafd99ca79dc3ec1b6e33508a4", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "35076ab12a43e7df06a0bd98bfaa585d1f8191161bbb6a70e024012f9b4f9829", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "35076ab12a43e7df06a0bd98bfaa585d1f8191161bbb6a70e024012f9b4f9829", "T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", "T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", "T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", -"T3T1_de_test_pin.py::test_correct_pin": "5a591a23a6ed3bfcdd81d4552fd7e83d93a583a67d119d4a732e27f95d249022", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "42bc178ebb921c20907da6687b512d1948899b3279fc078c273aa25eb1445d30", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "35c0acaae2dce44e5f638545b413a3e5457216ef2a161c8c6298e7b7bfdf7209", +"T3T1_de_test_pin.py::test_correct_pin": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "890a345d0444bf8f5c561b5c67b4545bcef07091521e313a27fc9fd04bae9298", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "2b2485d336d988eb169573e3b10599866c67755edd1dd06c6f85c04f89029aca", "T3T1_de_test_pin.py::test_no_protection": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_protection_levels.py::test_apply_settings": "feafaa1ca7f1d22f97d7863eafc79c84dcb7b4688c9d76d8c2c074d0499d48f5", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "382fc3c77dcf00877b386339d4e70d59bb14886f143f8cf652da4fd743778994", -"T3T1_de_test_protection_levels.py::test_get_address": "f7bdf9ac5b52fa791f2fb4ca094057d6495b65853d903d46a343e6bcf7410069", -"T3T1_de_test_protection_levels.py::test_get_entropy": "9c9f7a2ab4eeaf9677d78751d57e19981a1df899872d9f86f1a36d067c3f9c5d", -"T3T1_de_test_protection_levels.py::test_get_public_key": "f7bdf9ac5b52fa791f2fb4ca094057d6495b65853d903d46a343e6bcf7410069", -"T3T1_de_test_protection_levels.py::test_initialize": "2d1040b043c272cf48d56e29a56da6674b9cfb39e0587e238933402b8dbe670d", +"T3T1_de_test_protection_levels.py::test_apply_settings": "cbe7db26646136f2fac26d85cab5c4e08b9cbda3fc6c412631f57acedd6982e3", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "22c631218f986e9fbddc2a3c472079f0affaa6bda7e476e89b96f21678b22b4f", +"T3T1_de_test_protection_levels.py::test_get_address": "813eefe093d00bf7299ee68b64a6043f1057739799ae3cc0677f53cc06ccef29", +"T3T1_de_test_protection_levels.py::test_get_entropy": "bdd283657701663c874036a0ed0e1ed4528ee339d2dd1532ee3e9057ddb2b45c", +"T3T1_de_test_protection_levels.py::test_get_public_key": "813eefe093d00bf7299ee68b64a6043f1057739799ae3cc0677f53cc06ccef29", +"T3T1_de_test_protection_levels.py::test_initialize": "5b0b4ea1ab41a45a7b243254cf4a41d7548574b721cfb438e2e18eb87a1f485c", "T3T1_de_test_protection_levels.py::test_passphrase_cached": "0396b00c2e34a8012d1d9c6ccabc6ba40fd5a2d0ef2edab962207cffbe8e41c3", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "d59de1179a135f726c601480eb9d7b7953b433da3a0db9aa0650b2590b27e651", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "01ee9fc575e95899351f5d6ddeda6d36e5fe4be44f31fe9e92df26bacf0ab226", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "e00233d6afdb1e50cc6e3bc64a1a2022bc0f2905ee53a86377da7b721c087d52", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "39dac4f900a7fc364b0addac525874b3ecb9cf814a1decba575632617fb2b782", "T3T1_de_test_protection_levels.py::test_ping": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_protection_levels.py::test_sign_message": "b05709334e5f903ca1175fc5f1c1d23080dcac38e5f9a4007371b9e9b934ac51", -"T3T1_de_test_protection_levels.py::test_signtx": "b101b9fcb7d019b6eec9ae4c698bf574fc966a6e1e84be24edfa54c45d4d345e", -"T3T1_de_test_protection_levels.py::test_unlocked": "64011d4e3bc84b5c02f62e2d3152c335247346f5e435c0f721b4144d9dd7165e", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "c20b035c9f2450a668a79adc18480c290e986ca645d1f71107d257abadce5731", -"T3T1_de_test_protection_levels.py::test_wipe_device": "34029ef417717f458064fb4d461c4daffa32275b9d65c3eb895cf9c46101ea67", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "4ea9974111630ff0c74a1e0cc4ad006a2ff503ba112ebd2fc5284736dbdbbc1d", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "3226ac2d929457a8e9ac05549ac8512d8afeb203a257ccc26365c5c6ea6e856f", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fbd0e6a474a33c6b02192358763be2d7b1b71fb6bdb8ee3b293ee76804aaf080", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c29599bfd1f451ec90f17b7feb3b98f7a700d979858c46aa133ffecd88b857b1", -"T3T1_de_test_sdcard.py::test_sd_format": "87fca14832eaba934ac4b811e69e7f373c9c6cf02b4118adb85e2e783d0ce053", +"T3T1_de_test_protection_levels.py::test_sign_message": "86a781f036ab5b6a0e13edff4e9b7c809bf82b9ee27a814bf8f14ab12fa505cd", +"T3T1_de_test_protection_levels.py::test_signtx": "4c60a3faac7a9f10fac6ac7a54c70bb4dceb01789e135117790024378cc154f3", +"T3T1_de_test_protection_levels.py::test_unlocked": "ac4bee893e967dbbba3d65eb3d6e0cbfa8888b200101655167c448bf8507ca9b", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "e85d5a0810843e68b500f8dfd9abdc2038542e9628fcd9c35c008cbf26ec2fc8", +"T3T1_de_test_protection_levels.py::test_wipe_device": "1ceda783f83a9bbd5c6644309f2d65b9f7811505f11a1dccbda9db35cb721f78", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "75585eab4823e7e87292d6564bc424198187afb9ea2b677e232c57477600158b", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "09af1ae7780ee2c459817bc6103dce2eccf054fb357a48a8a2d6f5f1b6857cf1", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6256a49751013335e0a96990b81144b1b2355c24140be0f5556c57cc4847090b", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "98aaba2ce82dceecec460d22b485a62203e4565609d40bf7505ef1910c5d2f49", +"T3T1_de_test_sdcard.py::test_sd_format": "b15bde96dde9702ed212031e9377b86aac616cb03feeab8bd9499f2db4162898", "T3T1_de_test_sdcard.py::test_sd_no_format": "abdcff28d21d3c15d835c5ea2df1b5359785cf3013b441783b6cd7be4dd67016", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "9b6a729df60f6bf847d56dcdc2da51ea34583d51d468fccac59a2f56671766ae", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "ee5c0af6dbac63de42a0fd3ed61b0944ca817d3dbc72f1f36a88279d826fc25e", "T3T1_de_test_session.py::test_cannot_resume_ended_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_session.py::test_clear_session": "358d5eaab139f824ed71c0fa6ce68176bed3dc22207fcbfd71a63dc3f5bc13cd", +"T3T1_de_test_session.py::test_clear_session": "ff07a9672cd6f4a22a6caddda744d5cd1f39a6849134ed82b4edcad475340a57", "T3T1_de_test_session.py::test_derive_cardano_empty_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_session.py::test_derive_cardano_running_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", "T3T1_de_test_session.py::test_end_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", @@ -18554,8 +18554,8 @@ "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "42b1aa73cfc895a2ba5630e148aa05133a085d1a3592bff246eae6fcec36d6a0", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "cde92b3d53f38260deb5076348b0340f040eb2413a54097420867045d62ed579", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "10506444c558713643e5d59f175afbc5fdc4ebc088600871f74b45eb4a528987", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c31b82cf353e9bce8f6bc20c7f33d86daadd42d2991841a3737a5f15d3e3b015", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c31b82cf353e9bce8f6bc20c7f33d86daadd42d2991841a3737a5f15d3e3b015", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "518e9cf1aa4b91e8e62b0db112b750a74dcf7eb5c364ee4ecf4fc5bc065f7320", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "518e9cf1aa4b91e8e62b0db112b750a74dcf7eb5c364ee4ecf4fc5bc065f7320", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "e566e26f904a35cca5b66af023509ed8eeaf1001cf42ca6ba18bbc2bfb40d896", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cb03a8800e9dea4ca9350accaf8e853bbac0f14573783e6a8044117075b1246e", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "1925bd985206f6532d93978812325138ae12846ebd451ddaf14f921f3fcb34ec", @@ -19541,55 +19541,55 @@ "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d84f423497cfabc5d955704880a03c60f726568056035ee2766a42b3d5206bd8", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0eea282277dbb8bc444de123ee27279412de510b37305b9330e0074b79fd909e", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "89b6089b87035a6f085c73a6a0537c426f4678b08edad9506abeec014c9665a4", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "024a5e432903933f459b7f520fbb1d23c403cd0dc5fceaaf21adff060c087124", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "2fb6a46883fdcf7888401d54d9860e333b4a2b23e74aa0d2fb3d08028dbfdc5a", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "28c98c0e2c9f2629567faf7b7a7c0bd00862b425d43aa5cde105fe83c0007956", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "3e2b020a8f303dc8863e3c6a54dad68cf05aee55ee59f9781a0afc0487f36e9a", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "571e2a1b9bde986a412179f0d4cc50d10d0a81dc96f8269a129ae95acc83a790", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "cd5df6131a524ec7b7889c6eddfe82de1a2d6bc6d7f4959e22ba8cc36eb83647", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3645a1348fa77f3808688867573390544572a779ac49f3febe569a210e7122dc", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "978962c123d65befd8a51bb7df52979cd204cffd177fb2efe2b45ce7c5d46ae7", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "35f17c668de22b3bcb60065b52782629890cc8e45f09309cc92ee4c64bc1e50e", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3e8e15e8b192ca5d0b2e39cb686b324096a40ca945d603dca8b8557ba4d9a6cf", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "4a087aa77252eadf208ea9cdc30e1bf47cbf37dc1ec105d1c24580f70b621613", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "113f96b3d95c0e68b9feefd4a1438f751221d8dd7985edbe21d41f2036f46388", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8c5a6810227f00af6a244addc734737659741a89a86d451084725ca99d398fde", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "ed9b3777d57d8b927ae2f7b0b87969b62678fe5020e45027edc80b04b54db17e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "44207cb17877e09948c7be74ef6d5e86496b207c879aa2b38d0990ce42fc6f1e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "cd5df6131a524ec7b7889c6eddfe82de1a2d6bc6d7f4959e22ba8cc36eb83647", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "af42c219ca1d91cd58e556621f1137f30d06fb6d5bc56baec8678db8c6c646e2", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fe639b73c82bf223817ca8bc265db7e1150ab4aa6ab387f6ae8edd4d2d02b570", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "dbce03f4a7d5dc33d62ee15d5107da13e0bb95384b6c1386043531d7ad76c950", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "80f80db5bb192a45e3c95991314b5925f624bb2713c7656f1ad6b8aa0ea21bd7", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "de74fa815019ef2be207d470543e3afd0bb8657e32976c4600e7f37831ffd06a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4ce0f01582044769eeb348b6254a84f4669bf3cb076dc9cebe7c2c3c2e80ac2d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "466f12755a1f825764166072b051194a4ea79aa10fea015842c72d9da43b6945", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "06a94ff5c11f2918e9152c3ba539a28dee34dcc7a694a98fe97bfa00fda49885", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "15b0bc67ee9e9d6cf5a861bd17aed8c78b730d33c9f32e4ba22a497ba2999b37", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d0a5fc12d7fd7eb84bac0549ae0aa6a1ad45a0a2b325582d6525d58806904a06", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "cf4d21a7b4f691335c79f1505a488002d23503702ed652c03373693b98fafb00", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d8dfa7ade49312ffd3f606633306cac2ecd9884ee2dd807c495b4affa9bc8697", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "38802d2b84eeed5964d56bbb746cb3b14d4e01f0493689787b09caf4c80d34d7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9affcebca66455beafdaf7f3a5c5c3ac8c55f5367500c8418763e5a7a15ae10f", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9165a802507af68c27fc67274c60299215b4860bd2c1fc2c0072df787ac533b2", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e8cc685bee8b74f94405cbd4e4be22a2e8bc5ae5d5bd5cf56195ec379e9c59f8", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "73dd5c0f1a80f100077d41369fcfa2113c903b519105e55eb8645fccdb12a05c", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d259f9b8ee7005d06c3e733e21c6a7215435851e3ee31051716040ede28bf40a", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8d773f34b06fab01bdaedeb698cd24f9a5979f920967ad60f7a3f11b45f89f03", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "07e1d4dd61188109427b1299ca62de8734f5325688506c3f38a97991c8a2aae5", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "34ae60631c0201725c79a4a979ab62352e55d37e1b33bad70680cecad3b3cfa6", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "ca8ee451be276714cafe818058aa63d1f1862b817ff65e22ae492a61415b3c1d", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2ed789fca755cc1f92d3bb6e80f03a2c41d9ff5d91b1eb1ccaea4d373d7be700", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "22e3013bcdfa66544728acd16f3e114e8faf3ea1dcb0d88fcccaaa7eaa37ef69", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f6cec4ca3de402955aae4e16ed7443c2c0341f0cd00b2f55275482d198015dde", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e75d1351685175499ed150332f2fd2904a26f7e9e7f560ba69be3baec4d87994", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9e84055c06c62f7e17308f6d141e87a63e642368357cfbe7f0b38705ff751c87", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d5acb8e58d9d9362b1daa919aa5d76831bd4d3717e1469b32831a78a57d2fa21", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "f804d50795f4046fb27c043fe9c52c7250eba3c15e179742d681a9a66b9a62e6", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a8e9668fcd62434cfddf28ccea35ad1cd5f317061b485614ae6386d810cef21d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "18060c1275a0cd3ddf84e51133626215751b4d1875ac5dbd1c2b434d6592cef6", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "ca8ee451be276714cafe818058aa63d1f1862b817ff65e22ae492a61415b3c1d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8f7e87cc1ecaa72fa6253b106fce88656b4c0f46b43e5040de26ac4c24fcd7d4", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "827e77e59e6ef9e0b6f6479c633c2fdbb1d027a1d73e8701f91ac411c039df26", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0dd7e0e69b9edfd9ba893908c741b959d7e4493c1181cd41bb9433ba90880165", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "875320ae5dc829083111a055437a20695343d7e5f987f9ac2ef4472d660e9f4e", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "3775b2be602f5a0ddfc7076cd2a1df4e0bdc89d9b2a4277a7932a9f87ad81e3a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ec20ccb0f7a8ad2176bd42ee4236162bb9711ffd34fdd64410505cb2c0e3f267", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "88ef7492e648781b4f59335f49084c1fc8cfa1ad7e5bfafad1d3f6f3d1cc17a2", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "75e9a3a5654e6ea6a7286d86e73a4acc7c687a7335dab5007ae4166093e379af", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "923c119e8035282ec1dfee2910e3098c794ffdd369e61701f1c512e94c54d2b9", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "35d7bdc918ca1a0e75e1db122c166703973af8529f9eb3e528e5b43c635e3434", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "c9182509f56094d248dd4a68b0bde217a4ebeadf4fa2b95ce5da5d71330e039e", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "025fcb8d7de1ee1430e7ee891c3756a57c72276958d126237a392cb4867479f6", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "dc0178f17e21e70ea18f53bf8289b614263a3ebae5f297c858a82b7b842d3c4e", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "90e62c20b1f717f213243c3ea9cdc6be0ad7af83a997a092ae53df0866e76828", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "e8dbbf3141e7928949c3ab9bb00311a539ff9105656b08b968bb1517b96c4f5a", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "d086e83aa3f7220ec8b5d8a4f5eb44a67919891aa0c6cf975e0ab133357be5b0", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "233f9c5848326cdedd83dc287b4a80920453b651cb8d8a54dbec76f1ae26345f", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "eb64434ee95270fee76ac306cfb888b502f192151663efedf9467cc3eacd9ba4", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "09652f011844b11ce9aa10af4be7aa35afbcb54ef1d82999bca41f357328623d", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a1b546acad68074379c3ff14e226a9d88303ab97ccc71abfcfbee271cdae492a", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2f3af2a4097b6434709c6f7d9c381194c925f558357dc8360731e1b004f401fb", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "422a2915fce8afe5dbf9829f653efe9b1d29625e62ef18f92f1e1e8a7d8213df", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a57e366c9614a3d27fb4c6debebc3ddb0ef4d9402512320c564615cc05f3c1f6", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "847502c61d8241e9be0d4ae6cb6b3e9c49da71841c0c97548780fa8d5b24136f", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8812ab3e17725473649c76839fc3694cf30e39d4f3c51bccd512b51f9b1fe28f", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "84d6a5897f63a5e2e44208d04be889a06da333a130ec070988816fe1840ed303", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "07c4e72bb8b8fe9d5c2d21203dcadf2a608e437db15e594230dfd1cde63245c6", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5ce56e81fc20b84081b92aa65d7a141183db9e524faae093d71eab4a352c4012", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3da15da69a9c492cbff68745a3e79bc8f3e83f7f3798949681acc05c973a4aa8", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "95b64edde7f4af26ce913ebd2b068572cf6fce1f6b27983b53596acead8f5e47", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "fce8f8e1ba4dc54663618315b09239e589cf5b2b42985f175d5d192d33585edf", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cf4a27ee627e6b5fb4050f45bb754baed6bc05ed1432d1c513d540c72baaab2c", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "004c89cd72076909a702502e4888ae6dfd7ecd43cc21008483fb18cf0fd66dfc", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "db5119f69d202bf9f921ca9e335610a0e988a05675c2c1d6e6dee82b81999f30", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1ccd1074ab307251705001632a9a0707124ebed86e2d9b50d63f02150efc0585", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "fca2777544f1517fe8e6998c4d1095221b6d78bb1e277dcc9eb24c11410fee2b", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7fc79a250cd42dcb78a44026b56e1bca9b47e1ea207e885647aa2055231cda01", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2b80596cadfca48867695b0799f0421da738971416583cfd55da8d1346a5c7bd", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "87753b7744ae00c587e5aec198355276bd20ade6405b9b8287aef742a7543721", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "db3aaa065e22c4ddf0272e8262607e75685d7d8f6645c37ff8de283d414472af", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "181a3d81eb8ae31948b75e49cf3e8ea00b592c5c8ba131f3d555b3f7871b32f9", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5c93811a2b24863a769f0236b91ff6e562a1928d5c19db9bc29dc66dfca124e9", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "af84e4f609298b46ff221f6e8f53b27b12075abec75e2492d51b0cbdd96d7d59", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b3b9aa431ee6d3cb94b2425c1ac8ce255e1e88aa392c01ca71e1147ffc8e5774", @@ -19726,35 +19726,35 @@ "T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06db44a61b0a01b9cbd48fe531b7d9a0a6cb8d8514df2b614d957b60f3d99373", "T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "55df02db8f27f836ec722710ef785d61fa2ba21f4abd4e8827a8f053ccf924de", "T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "b1672c89438d07b7013f6e46cb722fa8d3fdee202d2f5e8c6657fe3af4c7d322", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "cbf1d0458ddbdbad98bd7fbf92744d13ea1e30e69b62aeb23549b6c24270059b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0fabec6656d0799cc83960acf437181acc7a1a566184182a8d77f9dba5a19263", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "fca66442855a70e0c95afd05b4bf5383ba6b9745c174d9d8f1d765a394d416b8", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "03226e15f748a566c579c20225960d2c7c76906c213b28aacd32fd56f720ea52", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "84e254314c3e5611688da3b2631797c6c97979112d286b9592aea212a2a47766", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ec840e0811e489b7e6a45df4233e5f7576aaddee42395514d912d5381b4fcf4f", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "2001af1877144b465d572605839841f216b83d55613bb4cf2521743139b17552", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "6a474ef16a33c62d9e0e6755329704408c8aad880bbc5b269dbc62e9b03a978b", -"T3T1_en_test_autolock.py::test_autolock_default_value": "5f272284dc280e8ac6a65030d53c16718d808d92426c2124f8a514b3ad55fcf7", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "a3a42f4b63f95cb1c11ff6f83d8dcd205ccb71753168824342425fe655f0b111", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "a3a42f4b63f95cb1c11ff6f83d8dcd205ccb71753168824342425fe655f0b111", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "8647d0a94dc6f095d673830420765d1d9f8ccf72e46ca2fdea2cbdc73fc7df35", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1a6ea3c13002062fc007ee6bed43afcca538b3b6cc1906e67629f4e6998adfa5", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "21be50cf7f339039b1d99ab9c21b02fab753e21961684f8a9806aacfe8179a7c", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8a440ca4a83f74efcf7ff23bfa83be3716eef5bd9de4a1d5c9abad443f51debc", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b9f5c34dd464b4323ef1f1f352fa2e7f65b6dd641306dc76bceacd400d1f3f5b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "04d2f931616507152383565db047e13d97cb2d8e82c383b1f0cd04ef6b2e18ac", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "4403109f436d828bf97a682dc89585318246bd9e936a6f5b819a541d2a2d8562", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "96cd7c7f786a104da99c12dbfff3934df9e714cc9989bd4ae61c08502ef6dc58", +"T3T1_en_test_autolock.py::test_autolock_default_value": "d982d6baaba083cfba2668e369d7bfca6e4d809d7c2f4fda4e1ee399cd651ccd", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "ddd3762403e5217f71a96836b82490f65a702d57674cc9c26871229855e042cc", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "ddd3762403e5217f71a96836b82490f65a702d57674cc9c26871229855e042cc", "T3T1_en_test_basic.py::test_capabilities": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_basic.py::test_device_id_different": "7ec59322689cc251f70fc8d93e8e18c063091de65d715bed22833c80b657652c", +"T3T1_en_test_basic.py::test_device_id_different": "7f6819f324b2543c4189e497f5057cd8245ae8e4ea301612d99cf2d28715a7fc", "T3T1_en_test_basic.py::test_device_id_same": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_basic.py::test_features": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_basic.py::test_ping": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_busy_state.py::test_busy_expiry": "23f97c207e937493d1debeab20070f637e3ddb744b22325b750309bce8eeb610", -"T3T1_en_test_busy_state.py::test_busy_state": "913ea4870860251aa2e23a64bac845bae37b17a07c167ef9f8e2fda7c3119d49", +"T3T1_en_test_busy_state.py::test_busy_state": "8ffb1448200486d9b788cfd9d5524b1a19fdd05d59ac364d5c18529947a58764", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "11c548bd1e835f106f20c2ece5b3c3dca288bdc229e64c8f8d4f56ddca571285", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "11c548bd1e835f106f20c2ece5b3c3dca288bdc229e64c8f8d4f56ddca571285", "T3T1_en_test_cancel.py::test_cancel_on_paginated": "0c710e87aa0bc7c0745d0901b9af547effe4344482ae7481fd81065c3d350201", -"T3T1_en_test_debuglink.py::test_softlock_instability": "c57ba0e5ebbedc664b4bd2f9a728f448bc16bb5e2fed6dbdf8e80ae19e5b54f1", +"T3T1_en_test_debuglink.py::test_softlock_instability": "0367a7ddf127169778577b0dacaa68a19222a414423b08bf3d0b304c3bd08c82", "T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "ab4461520ac776496e41de48bd7ca4f4823929f1e81503ae2646a4d09c3ec699", "T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_language.py::test_error_invalid_data_hash": "c3f8f983b936fe77d2c2fb884b7a19091605c946f4073e5725fed4a98da23c2a", @@ -19769,7 +19769,7 @@ "T3T1_en_test_language.py::test_full_language_change[es]": "e4983068d07313e1b14664824bc940aeef78a8bed930b2d42b134257cb15f4c2", "T3T1_en_test_language.py::test_full_language_change[fr]": "9b3bd0881958fc69a649df3773a0653a1687564cf7a58cc170b5f6d4e664e233", "T3T1_en_test_language.py::test_header_trailing_data": "ad607dee387427eaffefc24e9c207d94368df905a25c067471febed894e13f79", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "7152bd0fecad4ae8231aa13800d59825e59723349c417f73d31d5917bc1be095", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "6071bef676e2f6bdc94064b4666fe3c8f1604211cab791f784216f6b9f5b287a", "T3T1_en_test_language.py::test_reject_update": "55ed87f0bfa2e6522ab78b36052c296106751ea48868ee7507dd7beec1d49d87", "T3T1_en_test_language.py::test_silent_first_install[False-False]": "ec236de207ee3847682382fc8d0223d5b75005dec16b8e2687313878561586d5", "T3T1_en_test_language.py::test_silent_first_install[None-False]": "ec236de207ee3847682382fc8d0223d5b75005dec16b8e2687313878561586d5", @@ -19779,15 +19779,15 @@ "T3T1_en_test_language.py::test_switch_from_english_not_silent": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_language.py::test_switch_language": "983b4c3fe47e6b5487b32cbd70ac94c110437a6641cac95795190499e9b103e8", "T3T1_en_test_language.py::test_translations_renders_on_screen": "c0d20e8901d2b057da2bc190b75494449dc9f88040f8adcd807c6f6df196deb5", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "44f8847231d19b0629b9327b2dccde010e5c47d3f158f9452e128f889e51a667", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "61d7aa795abb5f12e649cf3c1573a368d563f8692afadf9bce8fc9d0da684d5d", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "3cb8b1409326e399b51cd92e60da259680a9293fcca7398d8b2d4c90a0f6dff8", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c1035d0450b2f6c7e69edef032c1867084f5a9c2273c628a24149746fac66dbb", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "cce7b3ffbb7710d415d808f22818ff192fe481c0e91c8c6f2d24a7b15b88a07e", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "da26fe67b19d9eb97bf58b52b288c10c0fa201da2b8d71bd31e2e07af1445c6f", "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d84cd0c05df9e66e46b622333ece38cb3058db24c20c961debce17a0101d2c5d", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "f59875cedd33a8082c78708e9c62e29b2166f756b7b6aa16cd13e20bd09a7170", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "a374d4f6b01185016b51593a7c7a5e3d15f357a8e9113d948461ec88d5f9c798", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "b107c9a9fe76397b916d22e7228aa12c76b489aee91e5ae75e01d899469124a0", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "3c63237ccdd47e7cedb9d8a30cfe3b4fd84f5cf52d469f92b1692779ccd62269", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "8f8b42a0a7b64fb86a6429109ffaddaacc191fe2e7e1a6c33fe523bf96a59d0d", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "40b7a7147d4c04eb6fbf21ec1f6fca8d7212553bc95371b0ee42333e062905e4", @@ -19801,61 +19801,61 @@ "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "03718e1a2cb958a9d8506955890486385c8792ac0e8b4c83aeaebd9b690a84d2", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "f044231aa22fe9c9e99e843f45121a1c62eee7b5bd758bf7e8e28b5d344ccf3f", "T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "9015b1e31adec62ea2cae719461e6c9f2d048c59d861610b48730524dda30652", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c1602f080c748b4617440aac9ea7d09d85a7e0d5b4fb8ccc6a1f64140429d981", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "4cb18f253fc90e26bfc4369661843eeefb30d74635cb043409a7c37de439596f", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "0d54e9c2d68262cc906b1e631294f7b6a8a917f37c6b21bceff90a3d7b860645", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "229301de940d0a72c0ab1ed9354993827a8bc503fae4be07586ee929e137ac37", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "51812bdca879842871524098139892ed50f50166f7fb366008f610f02955cc21", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "e3a09893c0f808788a4a2d9f93bacede5c5043862212ef2901a18dc0bf99892c", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "a4c447300850a5a91df206c44a0afb30f19d17b6ab7fefbf268112efa49ac80f", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "bf965d7f7c6826755bdcbe267613f50932f4b5c776fb0d29afb6c74233df86f2", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "839f63cc1f4dd4c49af5dd67c31d8eb958c6162184803f78804ca53968ed3bd8", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "91f798c16eb0289976e0d08721b5115517ff58309c10620e6bcb99af63feeca6", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "6fe76ae507a174e12f143a37771c96978be88c0622c23092c7f84814f812b9bb", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "392b04a5973d8a53b50906a9d7f6a0e1aacd495b45b1b66d32e1c330b6917083", "T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "3af6e9d0dd5201afc909db2287a4bfc4ab0d0d05a5aa114094ab71f4143df03d", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "556795487d2396347e1670d2950bbd8b44898f89e54c2122d58e269630f1e911", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "9afbef8dbc756e376f7b3afb63629b67b750d122a450c39f385342b6380e2d89", "T3T1_en_test_msg_changepin_t2.py::test_set_failed": "9e288bb5885db81afb67afefb3918ddfa8385bdb8b0b66d3639a45dde3c04a34", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "67b821beca343d742f31263ee939162d54e4144ceec6fb73a609e0354cf9b154", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "5d39fce87b699d0d01805653ceb73f30d82c805c5088bb62bccd6805617a6e15", "T3T1_en_test_msg_loaddevice.py::test_load_device_1": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "2742600e680a629470fb7af73436eb6284ed81c31510ced07252d9fb4a7fe540", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "4b86885954fb34dd9ee585c8759a594cae49b21b8e5d3b2024f216b7b7f0e7ab", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "ff494d038cfb3075fca4dd863b941fb9b3e95a88fc5bac81a044d048cfcd136c", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "c079711da56149b7134d91abec061bcacf11eddcfe865e512afd1c92fccade65", "T3T1_en_test_msg_ping.py::test_ping": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "9a6d1cf4af4ab3d0cdb3ed5c6f6fa26db5d332c7c9742a729feaa8f1a0a2ca63", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "041d3d5f90faf82feb141267f624cfd9e60a6aaee65a50fa1ca70d4a6269bd0a", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "3d24e43c3df35479aed83a0549fd317aa7648d3328721eef784f65c8c4780ab4", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "4d6faa71bac36aeea32348e4d399b30a70be79aa7c7c575042d84abac714df8d", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "7ec59322689cc251f70fc8d93e8e18c063091de65d715bed22833c80b657652c", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "d97bbcd2116635dce9462ce5b710692424baf29837f647b4d4fe3ef3f92986f7", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "0bd0f389763295d99ea5bdc6f8f086716fcc7cb14cdbf5bd5dfeb49f4f9a5103", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "c6dacee8ddebb3e4d2f21bef0f86911176e5e7922965bf956c746bc8fdc60ab0", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "fa56588215a09c4829d7013b5daf04a22b9a9e9be8185ee9c62e93d84e283779", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "7f6819f324b2543c4189e497f5057cd8245ae8e4ea301612d99cf2d28715a7fc", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "54990297ddf4f0b6ef5b50f00df5c46f63aa1f60ba9048c8ae3a5014873b1c30", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "54990297ddf4f0b6ef5b50f00df5c46f63aa1f60ba9048c8ae3a5014873b1c30", "T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", "T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", "T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", -"T3T1_en_test_pin.py::test_correct_pin": "30c4606e1d1924fc445b33579a37389621f5359adfea7474a0e9b9239382aaf3", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "55f2284117d67e0d572f1aea5b38618161e88abea15a3bc591935bb5445e9a1e", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "feed36f1e587440eb8ceb454128e4ad79f4d004b6fe9f324912839f6ecb335e9", +"T3T1_en_test_pin.py::test_correct_pin": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "1e5fa4644e258d5abd6c5890f29905b6a745a3e5c82b068a2443366a0c3d9fda", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "21709fff3c391e71060bd1f4a2c6301adc49729dee8f9a1a7a33e84414995718", "T3T1_en_test_pin.py::test_no_protection": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_protection_levels.py::test_apply_settings": "6fc6bf39c1fd792202822809c81cce3d3e5f1f58b38a63a95453668a9783caf9", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "d101aecb4691d598fbd06a83dd359ef35e3ce26543b206b1139de767a2fe20f7", -"T3T1_en_test_protection_levels.py::test_get_address": "d6f356cc7b465c698b6fde35642a4399c8075e9520f0d4deefe576c2f6b841fa", -"T3T1_en_test_protection_levels.py::test_get_entropy": "c37e8c509a62563006795f5d061f682ba66fbb25096be351552b0e14b137938f", -"T3T1_en_test_protection_levels.py::test_get_public_key": "d6f356cc7b465c698b6fde35642a4399c8075e9520f0d4deefe576c2f6b841fa", -"T3T1_en_test_protection_levels.py::test_initialize": "70e7ea0df30df13ac0f4472043ea3b29206227b47e718e37d5a2625144003b46", +"T3T1_en_test_protection_levels.py::test_apply_settings": "fb28818f9bf8d9f9a2096d43da7134d9b9cbf98052ec30eb9b463c311e2ed6a5", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "5de910a635eb0f41bad1c5fd8736536b5495ff362531d308bf9212d1db0b4773", +"T3T1_en_test_protection_levels.py::test_get_address": "54947ca5cb66df47025def3633baa2e06549e060fea732937e75061971ac418c", +"T3T1_en_test_protection_levels.py::test_get_entropy": "388fefbb3865f48e86a1d19f6022b052df47e38a07dd915c7e81d9364287c0aa", +"T3T1_en_test_protection_levels.py::test_get_public_key": "54947ca5cb66df47025def3633baa2e06549e060fea732937e75061971ac418c", +"T3T1_en_test_protection_levels.py::test_initialize": "4affdfac00bbf8ed72fdb320208f442ab7db17491f46f8a1d3a395f468e71137", "T3T1_en_test_protection_levels.py::test_passphrase_cached": "d68c5489de2b5d09233683769ddefb9710dfd7f461c671711c0535d4fd4f3c7e", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "c2028d79ecaf0d8a652e4de10f03ef3220a47380e57d4de55dbce2c090b4c1ce", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "31ad0031374cbb703f7ce1282f2d1e9dbe55ca7992ecca5c1871e78fb6c2b15e", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "ae7ce84fd0df55478cdecd4f1be0a791ddd412d51f3de7867458ac5269a92f5a", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "39d92fb92a5797f3bff0f00f1968f1e74f9876a78f23d35b668f923af1596e7a", "T3T1_en_test_protection_levels.py::test_ping": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_protection_levels.py::test_sign_message": "104157e9cf0f200b2e8c53e2dcaa7e079811663b1a56c4467d058d0eec37e9af", -"T3T1_en_test_protection_levels.py::test_signtx": "5652fdefa003db698931ba040a5c592fd2ea8dcff51bf8cb3576b397aa73dfcc", -"T3T1_en_test_protection_levels.py::test_unlocked": "7d56c6330e2b96da1e3d9274e1defb1164e8e665b2de9de82cc3b49137990912", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "753f59b6176fd08d9ec3909212f338bd20f163b9ff4c73d28c2755f153650b99", -"T3T1_en_test_protection_levels.py::test_wipe_device": "7aa79b2c578b3466f89aa2b09e046f94ed23efe22a9953e3d9c7ff117ed6558c", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "b231da5a177e459789c9489161d014675e3c1e9a32d22f45ca9f5615eadf853d", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "0fdcfcabf3f6954672f08b4e88e93d83dc795fa8fce78730017b14182e029264", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b61e49f3f20ba192f699e2f61fd74c058906aa72ce599541cab76c8ac6f94033", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "761c589a97f527c679c8de9b27471929f92d1361c18050006bc9b91f5c80bf20", -"T3T1_en_test_sdcard.py::test_sd_format": "1716990cba7d3a47bef4700590a796dbcfb3df7b0cceab76d0e6c378d74408cb", +"T3T1_en_test_protection_levels.py::test_sign_message": "364d8681036f0a9d80d61583fdfe63af0aa5fc39aa7544656dc6190208508fd6", +"T3T1_en_test_protection_levels.py::test_signtx": "87ca077036497515ab94f96c39a8c0787544cadcbdf1dacf8fe944442027a835", +"T3T1_en_test_protection_levels.py::test_unlocked": "13ca7305ba2baadc972d57ce471562940cec5a178fbe753efc55e3bcd89112fb", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "ef4f1e03d59cf0c9ceee3a79f06b1d62ec90ee857983f66ba1fa783bb78df800", +"T3T1_en_test_protection_levels.py::test_wipe_device": "52a4d3dbcd0903b8723d17091dc7b20836c7eeab97b444be0230b88ae1e9e1d8", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "0705777e49cde2592040072b1391ac6895ca1a0996747b0e8aee7fc185e744b5", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "ad0c5bb9d66a50760d14a28f8fc7d7371fb7d067188888518d226804aecaa66c", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b2bf65264294051544c7d89a97475fda8fd750c4e3b55af026b2f1b4aa3bb568", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1e6d38cc0b383e3027ef93cd3704311c3f352237ffd1cec3897b82db9261f137", +"T3T1_en_test_sdcard.py::test_sd_format": "017ec143ddaeada2812ec45ddbdac689f76c98e9e0af32633fd6018ef4b699b4", "T3T1_en_test_sdcard.py::test_sd_no_format": "4a23edde8d891c33658f18b17d437c523f022f84ff6b9befd30c8faf67bd60a9", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "4c3bb63f83b0b8a101cd04dab2972685be27350f869a9e5eb1248049bd1587bc", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "5aabfe244679fbea81e1499a719778502efc8edb453c5a5f91fb97284548064d", "T3T1_en_test_session.py::test_cannot_resume_ended_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_session.py::test_clear_session": "2e54374bedd33162d90817ca15376431a463d2f589a7930d052a3fb0abb55ce3", +"T3T1_en_test_session.py::test_clear_session": "1267c15a5dbbc3f399e70c672478ae2989781c853cd31a5593c78684d20fbd80", "T3T1_en_test_session.py::test_derive_cardano_empty_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_session.py::test_derive_cardano_running_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", "T3T1_en_test_session.py::test_end_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", @@ -19918,8 +19918,8 @@ "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "61d863a3f23cd91a6e01da628b9f69bfe5ff11abe5aae244930d6f538bcf1a3d", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "d0b2296d8c64caab9359945e03aeb6cd40687faecb448907146bfb11f80dcc8e", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6efdc126231e6616b24835f9a2a7cadfff910a22d3462b0c1880047e1d2a5101", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "8f9440b257d0ef3475d4d618e6ad7ba5a688c4ee0e5bf1f2a266096d74b78b89", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "8f9440b257d0ef3475d4d618e6ad7ba5a688c4ee0e5bf1f2a266096d74b78b89", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4d16c81456baed1bab8e882e70ffbd059276427b421433acabab583cb9f97831", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4d16c81456baed1bab8e882e70ffbd059276427b421433acabab583cb9f97831", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "842f811dcc9f3bf2a3fae5db447ee49bf27fe59b5074afc4d8c28051098f0e7f", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d5abae3846bbc039e0078951fdfe3f1e57e93042d129497aad0f43edcf823723", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7ebf8859c5a74faa7916ec5785d130d58ba2dbd63ba2b1887b744f82db1f8531", @@ -20905,55 +20905,55 @@ "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0f3b5114c7a0fce1d55c79ee7f710efc3e48fb6a82731428223077268d1e63d5", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8f5895d5a836867d6544962fe5ca7b44302bf30a790ff1c54737f229690f17b6", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "e401a9be49f234140dcc67846295122706d7d982b3e2ec790484bbefbfe3d4c5", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0742f16081b4ff538faf13dc2e8fc07867cc4842f64183ba9cbfd22f57f14127", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "2018a1f9b5df049eec67d34de6bd57c07476963558d05a0d5a3bb968590ad015", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "24eb7a9b329b35c9dc0d7087ee89e0248793c9e59aa3957705b0f23b3c7c1e3a", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "349ceb3e2e52246f69b8a175d6dacc2e9747eb0c1a7cc6a3d598008d179fbe81", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a6322f39bc2481cfcd5a7a68fe3b5ea93c7b214bac77e16426b9a1d2633450b6", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "a4ddd68e5daf669e64a9d8233f105d9857c5625e4a3775d1c1f422e652a8e2bb", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "22f497b02c5bc77af38685328994a1c049a3e4168a4bc3e62ed95fed008b6340", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "33ff11abab8489028e2a6b3dbd9b596ef26dc749a121ff430dd4eaad6db02552", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4dc5e4d3e45e8f6afef8889219891e0180c2ea52d7ddc10c3f61cae07a6cdb64", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "503abd29919f0da5c33e73a5519c3fa858f32ba9fc7e661e82546b2e60ca6793", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "8b10d51d5a34344a5e8bd20fd8c8241af2b5c804e5d40a969c1a3a9b14e11fc0", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0fed520fe9685e09c9ecbce893ee0bac5fa6df156566e6e7c154a4b7b43c864a", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "0233c3da99485f45e1cad1bb7be6a529d27c28a18ff07abe60a0f0678dc10924", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "96b3c69a6e88a0cea4253b67d408412e312d4fa093c2580b688c6551e9baa9f3", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ddec9866dbac95fed85b3d7ce5928419519d1c15bdfb9eddc400fbefa7107136", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "a4ddd68e5daf669e64a9d8233f105d9857c5625e4a3775d1c1f422e652a8e2bb", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "664fe460fa84b9a51a5b231529f9b61d93075fed4dbd514053202484fb663827", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "aa9462e7d4b8aec6db1e5fde2fa58bf96848c39e4a7f58f3235bc11c4bb20a07", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "5194f5aaf4add398801f9bb90f343f26eb8b6061280360f3bbc4e7ceff9676a1", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "8fb2201e1ee04c73a26844c9233ebb76397c67ff2cb0afb1a1b987b32d22d2db", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "35db17d3ae543e1bd071642fbe38161bfa5be112711d3d7b63281bafa8730136", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "9d681e81787f668bef6628c65dd91b128748ef1baf5ba760e233aa24fa5be68e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a1f97cd45c6a00482cdef677736585c44bd58deec78b8c45f099714bd2af73ee", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "47ddcb54cabebd7a44644cb658d03d5dcca1bada21a329f746b9210d8aa4a3ed", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e1fb71a8ce102f3dfd57e2fd89ed8256fed5f607861650a8aaef6c760f591afe", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "1ad8512ee2c478f569ad51f554e23dfcf88da96a93599bc5e83ae4580aacc0e6", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "cc27fdd2ba7adb34b525e4c89cab53dd2bda8c35f8105ec28989674ee83de058", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "e67fd97a9436439c72b32b737ed0ef0556d947e3fdca905d6eb69b4aad5273b5", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "391c5680d1c40df99e2feb1300d32f2d64d0130bdca6f7b388eb81ca53cd0d7e", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "032120f2368ad27b8755977c5819e5294af4f5cd0817d1601124233e52aebe2a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4802acedc44df2a0e111bf36156b3aedf4a74bd92b15c460c6993eabd610a2dd", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "0b003e2b1c007cd6554e0b80b6268cddf5cfd080d6056994f648b7401f916884", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f7780b5d2ff07ca51240ca2632254228c6e96feccc8f21026e1550d93f96331b", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "58280e7a9defe26a2e210ac7b5375fd6d30be12cb6c621de9062ff8117e1a005", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "77c01c268547d3cecfc432bd9dfdc2985b8a479726d831e92c193cabcff6c579", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "09cc04b891c9666ad22a599a4c28e2dd85d8f3fbcc02812b0c9946fde608e1b8", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e8655007535e9fb4d49bb6f0dabae95af4b27d0aa45a903f66642c25269fe5e2", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "7bdce0a9137201125ab89f2e2254ba66dec2a1e9d031745e186b159d1e38957a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c76a7abcf869e0eb9e8d0661730ee1618c886816ed9c3629e0a93a1af8dac2ed", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "da6a577a46bb83072367ef44425430c3c21dc3e0e36df0765eca0b85fb7b8a66", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c77977cb2944935a549b6d69a4a14c5e47232c1d268823e4e8d30ba3662ec361", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3a54850e406ab0cb368616bbd16d45cb82a3416d00e96f1cb21789d0b044c37c", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "31f7bd9e1deea92f9f2048c11541897db3d42b083638ef2892391caf6a11ca98", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "cb9c23cfd8e161088927e2c04f8c88c5ecc8102391009788f2ae45d5ee3c2a33", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "71fb0fa0538cb85cd401e3b9f447bd3b5fc1bf17f265e1ad30a26d5ea9624bd8", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d47655870f482bc260ec96d7598fd5014316d3760d4371ffd22533575f8c58a8", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "bf721e60b519f34ce52920e28e758ad00d185f3c8652a36385bc54b4e63d583a", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "7bdce0a9137201125ab89f2e2254ba66dec2a1e9d031745e186b159d1e38957a", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "aeff3c1f08781f2a928b74a6507954f208627d46add4cf13b128658e4baeecf6", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "9b18ab85af2ce5a60f4ba60da71ae403b07561f79f267627d8a33880cb095bab", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "4c27cfa8ae9acd0c4203ab851931708e94518ee638583d78e3f6b879a4d37862", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4cd9e3a1926eedc2497b3d7e4fb5748f879b68a6db33399bf1add5838da040d0", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b4c89cfd1af2b3c872ba69961eb997ceb7d31d6fc241bd4f253267f247b4e63f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a9756c53a26d0f09d628f03b962b05926181d5424b36e8132ae16e22c412c5ec", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7ec2b736d4f45c6a5236412f04285d21cd431facfdfd23a21d298f3922025d3d", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "c1db81d9e7197e8cf6d0d7b2d283be7c49f57fe707f7b89431afa9c7d5e244c3", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b188fa57ec891325a36948009e75b6efcf3cabd33c12d29a8d98361d9cea2039", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "e031c20619a4087b75886776484b64550414d32c091fbf4bcb7e5dd98126f6ca", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "49c0111fa5df9151e5d75a7825fff4533e9ca4ef0dd9f64469eb7fb075617479", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "3a56a9dea031b452439d4434a2bb196000771482fa0cfcb36b3d2fa70f2d233b", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6ed65313c57258ac771fc2d3dabd61cdf7181c73073857d452da906cf44ea679", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "0dcf5f45f206ecaf66bceb30ce5259a2fba8d63d62de5bfc9291019565e3ffd3", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "85c7a8678980a793a1840205a063e7a942dd71ba47b4f1930f1a7813c170801f", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e773e837529ac570a42a2c1beef5e02a3057e1e203cfd72ba251cf76011569f3", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "35d237554e5a422288d6221e650ea534775767040d7663c615b8fdf25fd48774", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d07eb401c54589e89db0238544880dc476cee63982632aa73b14571ce03bd90f", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "09621e2be2279281b5485f635e35d5147188f9b61b11553748923225228e538d", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ebca7557acbd0ba7bf37e6c5edda2b88084be86976307910b39423da0e7b4310", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6e80eea9a17f15496b9b8664aabded358a0229647d0a49c8fe43082c17200933", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "33020a77ea1a3e35e3e569674bd591b32d71cd440d0a635ac61d45e7a4c16056", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "30d8f9b1a28117d23c2fa70e7503774a1fe0fc19c9f6c0234e55bab677d15e33", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "0f37fd27a16c19b8bea8b34b6e07554a756d5b47796a4f46a3777107066aea8f", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "874763ece4916a39d8f433ad9b2a95b7d5594545493283928ba60bf8a22bec83", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4e38695fcbdd4c22894ec2602823331b55afec89682472d218baa7cbfb0d2183", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "4ae5d98d34184d44169ed16dde86a275de3c6e92376f49284a8868f99bc32747", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "cc74a4c933af0dc77cf24cbe84bebe84511df7687f4441da1c13f1716d868cd4", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0485ccd42eb3971ee8fd1903874204d0283444955453d224a6e801181701f8af", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "361f9f24af32a3e9b91cc3ff64700cd6af692464115d2b0b0befd1f337922793", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0aa5db3fb528bfd92b740d6f87fc3334de116820e41ec5088167eb6c8f6727df", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8cd5fee1e6b64c359479233ed07f1bf572b837fcd416e7606503e289f528d7ca", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "18dd3119a41282a3b221ddd3bc485baad28c9581ed2c2bfc44f6c6a838e234d4", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a56be9654641af229666c072741818aeb73015b0e0d2887aaed937d62b4011ab", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a4fa613cf066e24da1d45e99060f13318756ee8bfd533609f312da2e435afe21", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d21f8bc5d20c17068401b5bd0da395b3d3aeb92fdda055a781452d353c8bee08", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "796f991ca2361e0168b4c1ac8950eaa38d48c0fc986be2f03b18cc7f941e94ba", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "37ab66cb4f14ee6d3798a7be47baf4df8134f5ca735bc96de6d26ed8ece5ee81", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fe9d0dd1845da487a7871ca603aedb042cb88d174fa348d8ce209205b8809bb3", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5ed933de1fd4a841b5403f3ff661e131edafa156385874786a8ac0af98b0cf74", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b72bdcbdef00ac3e891e28bb465da33390705e08baa075d9c584eee1c9f95362", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8d5f267b00d53701f731738a2a9bfd230b04425bdbf3eeb9ffc6c701cc39a968", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "371688d95e2b3f66989431fa39e698263a783380fc44c7bac57992157b93469f", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6b05cf4fcdd0d75f4ccccbb04a93d4b663209f40f425ff738de10ab7aefd6fe3", @@ -21090,35 +21090,35 @@ "T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "f7e813d8f6023d96bee2565d744d35a9a2eee1083ee66f4f314ddffe39e27bd3", "T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e25c97ea8e3b299dc0b00e4ca22f655ebb032ac6a0c8669d89644685644e8bed", "T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "9aa4bf4f9c2e965fd580acd1278088930d869a798aacfe6c4e94c4835a7cba8c", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "6e83c7914f8f180056072f915ee477df13a26683eb79e8bca743ecdb3a7ffe40", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "97f97e6575bcb79ba020e7b2547750b59810c53073d7758c80de765415bf3d9a", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "69f08fb67d8ff4d7ec5dac700f3faf83a130a29a1778ca2b98ecc9dc371c9443", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "35ce120fa6b9d2fa52febb86b718c60d2ce0b9d554c9f69e3cd509b225a9725a", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2816815fb7204b991943f3db2ae56c0f8c4199ecaf10c5f997702f6e5914de75", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "cb5316337d8c4407d65a2a409e9ed906ef43071995a5572e129eb62b12b4bc5a", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "75991992304e022848bc603fb8398c6b236b24a6590b020719b3fb9691a94efe", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "d229422033342e63db4e6ba45faf51684a78e9e4e167613f844b92c427d08b76", -"T3T1_es_test_autolock.py::test_autolock_default_value": "fa4bbc332490da856c4ec27cbab2179d695532e94601361879225f4b714c1d02", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "6900e532cd7ca2a89c8b3c5345a841e7f03f90ddccc73fcefa08ba22fa33f151", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "6900e532cd7ca2a89c8b3c5345a841e7f03f90ddccc73fcefa08ba22fa33f151", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "65f179418444c34edd2f8abad60b6d6396426588ee72fc823cfd07dcf53ea7b9", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "961b982bfd3c60ac6cd56fafeea708dfee4ea04968e3fa3889739b7de5ec200a", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "1ee24b732d58ac5795faec43952071da092addf3b827573d27aede9206ee6eb6", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "dfd018b6603974a37c0ba21a3d3b4177f0d77a644076f3ee3083de544224ad59", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "0303285faa88fff4cdfe298e8f1958728b45672720f483e0b1a4a4605d22a783", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "2a103746ee47cf6c3f0f435d2fbc15783b93f91ec5020a8d3c8e7e34ca2ff8fc", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "6a2ca5eee1cc6b24b0a6d70c8c38e2877f852dd72a431a80e817bd263223db90", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "c303fe24c1af4eee650484d38b615a8da4f2946bc3da37bf917c741d03984a5c", +"T3T1_es_test_autolock.py::test_autolock_default_value": "00ed174ede9b2001c9d60268c9eb080c13f9e7a374a74dc8fa014f5b4cfdcce4", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "dce29bf89b6ef38e0079b03cbb445223340ee6011d4c689020178d1ad192a6fc", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "dce29bf89b6ef38e0079b03cbb445223340ee6011d4c689020178d1ad192a6fc", "T3T1_es_test_basic.py::test_capabilities": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_basic.py::test_device_id_different": "4bdf9dc69c7051a283b952d537e94fd2581914843cdc3e2d322a269d03274f12", +"T3T1_es_test_basic.py::test_device_id_different": "dd83f0fdfb32ebb944e104f6ade76200b8730642c450a4fc5cf7cc086633fd35", "T3T1_es_test_basic.py::test_device_id_same": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_basic.py::test_features": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_basic.py::test_ping": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_busy_state.py::test_busy_expiry": "a440d4eec0125da0443133038f79982c342cb30190e60678123d0702aa00a8bf", -"T3T1_es_test_busy_state.py::test_busy_state": "38f74ccd181e538af514f6ac959d8e4bad2bcf150ee225fa356d52115fa2ff37", +"T3T1_es_test_busy_state.py::test_busy_state": "2a9866e34f2623e63d7a2eeed1e43d8563e893c7b392ced06f10a4fef33cb2f6", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "24922c59035c55e5db86da744453fb6038bee88d518b0047e06b5ecfe2595fce", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "24922c59035c55e5db86da744453fb6038bee88d518b0047e06b5ecfe2595fce", "T3T1_es_test_cancel.py::test_cancel_on_paginated": "161490453244e136023de8b1b91a3fa8eebacd9d57dcd60588cfddaf393e3be8", -"T3T1_es_test_debuglink.py::test_softlock_instability": "c801ab5876a2aefa973e9eb680b6a53433087d0a8718e5b8cbfd26172b0fdb2b", +"T3T1_es_test_debuglink.py::test_softlock_instability": "fbc0aac26998e3a7ba2eb70c9d308162250aa1e2e6cae205405b95d102d82a32", "T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "81e0a15715d2b5e2a5076154740ead6dfc642da8dc17840de480296d8027ae52", "T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_language.py::test_error_invalid_data_hash": "81673a629aa8073f27daf5b64fa2b459234adcac4095f47e9452c2256ecc1eaf", @@ -21133,7 +21133,7 @@ "T3T1_es_test_language.py::test_full_language_change[es]": "9f4594e287ad74fc5ba2fb95f7d40d32f6409f839e3cf80037ac80f1d2ebfa95", "T3T1_es_test_language.py::test_full_language_change[fr]": "84fbe2ef581bae47828adee2ce2a6c8862febb4b2eadabe6c573505aeb07e644", "T3T1_es_test_language.py::test_header_trailing_data": "9e76fdf169724989d0c77128b96b941022ae86e1856db5d49ade9cc1ee49a987", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "bfd62066fbc000a3f03e15c03569716f91b0ba200bbb7ea64b1e571434cb6b16", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "85596788cd5a27808594d949b90f8f4ca3696aaa3c74ccc425761739804212a7", "T3T1_es_test_language.py::test_reject_update": "1ac93de16da2ca4aaf4d60ecfb978e7074699c7ea6e9ecc2e9f8c62a27b0bb93", "T3T1_es_test_language.py::test_silent_first_install[False-False]": "9dc38e114e8159a73515824370937c4dd5fb3503aa8420e88eec8690da175b4e", "T3T1_es_test_language.py::test_silent_first_install[None-False]": "9dc38e114e8159a73515824370937c4dd5fb3503aa8420e88eec8690da175b4e", @@ -21143,15 +21143,15 @@ "T3T1_es_test_language.py::test_switch_from_english_not_silent": "878a493e4d2343f62d63dc473059c2f013e16f8c0578da0698ccf9f1b02c6c99", "T3T1_es_test_language.py::test_switch_language": "c9142ff4e4597ec3cdc4f4b7bee9195c24e7047a08e594154c689894e624a11c", "T3T1_es_test_language.py::test_translations_renders_on_screen": "1ffd228090f0036d89f0925b1269d97ed3954c73cd76a2f1ea4b0c9f8f153b31", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "cd9488c31648e3b7cf259bbfab9f304c8db9beb51b331edd56cafbb830809251", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "d51ef6c31cd86dfd8b2bc88a1167030c989d56e5229dd0457c3b1533225df30b", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "f60f62e58cb6451b198e28485173a330806033e81deec51eaddfb4b8245b26a9", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "695c9e382737f52a9cf22d2dc2500a403139f244a9edea5fa4f775e3e35135f3", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "f5797f9a3f1b265630a2b3fb657dab4d41a0416140e9c2f0dd19322e03cc9d17", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "b7b7f438b489eb8b39f33846e618771e707330f2b5264803e31e7b1eb9889648", "T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3483d8d2b3292d85a6a2fa5c48af7a194bfb46eefe5ecc17de6df60adb4f77b3", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "daaf8fb3e9f77ed6ba1da6595211a730b6c386cc1d43009f80cb4f3246799d49", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "705dc2d0d3c8f60954c624fc65629349f669f0b0caf79700eceffdf0f2c5ac70", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "20bcd37a83358d8d31583720731a4932f068808709ed30aa5eed303a5b1a9632", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "eaac55ace72f43b4ee65710496fd059ebd833a9b9ff88f986e3d3a5f92019389", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "49fb86f0e50d6cdd78ff381a99f801c690b745e9e679915087c06f29d9fca501", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "e1d6c513f2e95e481b963b8fced7f8f224425b70337195f1aef0c5f3d0afa673", @@ -21165,61 +21165,61 @@ "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "ca9026e0100a30fa6babc257654bc2f4fac3900b410d411454fc389eb02fb7af", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "dad5b5fdce315f955db0d61207e6ac5d4282c3534d0142fa5ff1e7dc2436b24e", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ba347d59940e27d866fcf984300d1d6a2ec9f52b43240407dd4c629ccee66d50", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c756194b7b7ae391f4774e8e6caa99f3ae5a163d3369d103a3b198227628d07b", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "75909d9d9b659635a629f141a9eb7672b2d8bb27a39c0a641cc0139ebf523958", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "78f63b3cd71b6b7654fac7a67ae0796572ec716fef48b03c781eedbf38e3f349", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a4f0b719e07ff85ee9a8a3e8489f9af64e50e497e8d098f7c5eff71f8fdb328b", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "31ae12a56672da2313fb1be8069f1da572f1678dfc838220ae5e4632ad207965", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "e741e5cf1a884d774bd1238c1629445208d4c27878dbd36b2d547a6bffe73a13", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "3d7c554a1b8b5dd82e62b19932904977680aee137fbe7df567007f3a32a31128", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "5c11c7e83c252fe22ef0fe9ae296929c17d8248e5cb65b4548ba38c2433b3c79", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2f8da644d0592b517835cc505daafb8a2b7f81634ce9a0d688c8181617fa1b1e", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "05d1c4aacb68b89a2debeaa0a60d6fd17b7ba699dd7279a7e4437af6118326c4", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "c786e3c6b2a4b203dcee542bcb78a114146d61b555f41d4f8ff81c4b8ee3d55b", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "9b681eb550926e1b4e5f8dcce56e3361deb2a4b5ff428987417d9a3474509e60", "T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "9a2a004c2eef6f0ec5e9af44c954f7a27b681889a1b952c57e8c60441f3c2e92", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "cb68c4fb0dd9355bcd2458a4cd05be0d4c46bffaa3652f3ff25ecf2bb1c97433", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "527bdd0a2ff6b617dffcaa2808b2788e6331ecf56d8c7b364e834c5e075b221b", "T3T1_es_test_msg_changepin_t2.py::test_set_failed": "8d8b6b5b4aead4b9eb8453953254f2da974103a57d9b30ba60eb37d0625c663c", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "a0ab968dcf47e0e43764cd4f13bdbf6a0239b6c4cfd4c14dcedc93b01e5ebcb8", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "cd4a36a09f34768ec4af7a77313c6dbca8af51b9de025c93c39320e63aac8f66", "T3T1_es_test_msg_loaddevice.py::test_load_device_1": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "93a4da8c70820d944364f37ea1d5a43da6432f5269e5571ecc26b3d4c596d2cf", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "ccb978ce4d5ad10d4d83cd26cb666f2178b17878e1281addb426006b8f9e7520", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "e84609a569767341946a840fa4d05bc95ede4a87fcf732d320eec2ca9b5511e8", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "e0fe66dd04703f533cbffdf46cdac5847ebe887787baaeab9e95fa5dbeb63fa8", "T3T1_es_test_msg_ping.py::test_ping": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "7769c3bba31114c6ac64f2f354f67df0002aca072bd9cc18539ce074aab0225c", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "5872eb76db8a54ae7ae243eefddbac24ae9eb784f6b8a3bb787ac2739d5e4acf", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "6bf8fe73451c795e8176af7cee4243cc2a9ddd09741e719512477c68e79f0e3c", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "5cae915c555f49ef1b6f20b8e4db15979569ccae68dd2b327d39e3b2edb06d7b", -"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "4bdf9dc69c7051a283b952d537e94fd2581914843cdc3e2d322a269d03274f12", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "583029a505483e7340c64ef784fb06c1b444d29c1c418b645e6072356e2dd474", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "a1684db00530992569800aeb1e37652b1cf7721f50a22c9e1e74a9e21c892eb8", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "5cdd3a28c5658e29b4188a068f388e8b228f659bff9988aad316137cf5e5abcb", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "16bbfd2992baa20529aa8bfa54d2c0d982b791072d009fd4a289c90478f3f662", +"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "dd83f0fdfb32ebb944e104f6ade76200b8730642c450a4fc5cf7cc086633fd35", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3a241b796d831ba9f770162b496d1d485e40a9e5daec00cd6e226b82d565a081", "T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3a241b796d831ba9f770162b496d1d485e40a9e5daec00cd6e226b82d565a081", "T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", "T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", "T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", -"T3T1_es_test_pin.py::test_correct_pin": "2a98494c2492888b9a296c98e1c6ada0fb604fe14cdae916a39a5383cf80e3ad", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "6ad6121606485e577c258b0038135504ff1ccb6e6fd79826f208f563bca60f9a", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "f0a06572dce5c11290f40e9bdc5bd5fba94f4b4fd10c7455a12f279bf52ce1e3", +"T3T1_es_test_pin.py::test_correct_pin": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "587894910edac351d2a1e1305c3e4f8113dc5f9e54a44163386be57b5dfc0ad4", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "3bd281c8d6647d7916a7af1367b8560edb03dc213364a9e50a22480f0aa70b1f", "T3T1_es_test_pin.py::test_no_protection": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_protection_levels.py::test_apply_settings": "92530482b20542e9c7570c45353cb252a07e9b641f3c83a85ec5e884ec239a68", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "1c8728532caac0ccd19ca5924ecb150c241ff8e4b33c0b01c67b412eb7eee8dc", -"T3T1_es_test_protection_levels.py::test_get_address": "d035b202da3ba08fe4e64c1f5e13617a9c78b2e5a5d84287314347b85d5ebb54", -"T3T1_es_test_protection_levels.py::test_get_entropy": "c166b83c0f045ea4e49e5181e821ede625055de925d6fe5d481ca1c2eebe9cc3", -"T3T1_es_test_protection_levels.py::test_get_public_key": "d035b202da3ba08fe4e64c1f5e13617a9c78b2e5a5d84287314347b85d5ebb54", -"T3T1_es_test_protection_levels.py::test_initialize": "57cbd9fa11cd3cb64b6a52e7be5469e186c4594af4146d6817062f98e671b567", +"T3T1_es_test_protection_levels.py::test_apply_settings": "d5f041667016c6440e4b08cd582dd6edeebc0a8b5544f0f5ee18fce9b0ffc831", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "662d0f5b1667e2f2e07e8a4778481e37b56754504689e8b27ed8c6f5d8249731", +"T3T1_es_test_protection_levels.py::test_get_address": "3a4fe81523b506d9613f4d6815359ed4ded0f1cd07f39ca7073954248d10f578", +"T3T1_es_test_protection_levels.py::test_get_entropy": "0398c5a5bfe4bd02a0cd45d3cf9446b5b13e6dada337ffd2d190d294e90e5802", +"T3T1_es_test_protection_levels.py::test_get_public_key": "3a4fe81523b506d9613f4d6815359ed4ded0f1cd07f39ca7073954248d10f578", +"T3T1_es_test_protection_levels.py::test_initialize": "14d989329d4393090a0f6ea44bb5b3439f3681dcd64d7cd830e0c0162736342c", "T3T1_es_test_protection_levels.py::test_passphrase_cached": "e22fa6fdfce398b66813703fd67c868d62fdd3e569eb80d803c5096deb9afe50", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "1984b58b0afcac97a6df5af9a43034899c55aceb939e9babb56707307b47849c", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "90a63af679cdae7dd505b924535fd0e092fb064224f279f511ca38bc69712967", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "8b6732ec00fedee759f15ef89224aeda534271f7fd713edc4b26a98d17a9e439", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "516ca70f4230a6b66073d8c25df2199308c4ea7687d0a900760a233b785aa912", "T3T1_es_test_protection_levels.py::test_ping": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_protection_levels.py::test_sign_message": "1044bca3f6dd100e115964ce812bd80023629fbd5191e5cab835832d03be52a3", -"T3T1_es_test_protection_levels.py::test_signtx": "07bcf9f8c911371d1ca775508f002166e373ec22c01a2e50b5e3f1ed1484b9ed", -"T3T1_es_test_protection_levels.py::test_unlocked": "b5f7523c1963120655c5ddc7fda0853ad01d336a612f09f4b54ca7790a61f44a", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "97ce1e09ca7bf9b8b94a6d55a01b0a28575c9dc25e5aee70e442d23ad7c10d69", -"T3T1_es_test_protection_levels.py::test_wipe_device": "97610e6da5f399b060bd8216c74c3d1268d121d0f3ad8cfd530473fe7e431878", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "05379a9b7375f1a53c522bc6bcae5f62e7b60a662b16a47205e8eba9fae7a06f", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "b24ffd3d8aa03bb39852e38bbf89041814d49ad0940656f854af94b6c4710d99", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1702cd764033501b25197b3c79cc465280e93fde247f570616d74ab586abeabd", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8f393ff5dc70e0561a18354644d7eb47be3c5d76f972e85f54d11e3937fa7dd0", -"T3T1_es_test_sdcard.py::test_sd_format": "2d3eadebc53baf9e73850df77ebf264316667d92d977ffff807edac30a2ca4eb", +"T3T1_es_test_protection_levels.py::test_sign_message": "fc09c66d1834cf8cbe5131650e64c458a2a9a0fbe15cfabc6c340aafb82736fb", +"T3T1_es_test_protection_levels.py::test_signtx": "7340ce39a7817a58769687922fa5f469630ed19bdb89d27af5844b56bd82725d", +"T3T1_es_test_protection_levels.py::test_unlocked": "d36f9d491b33003599fb84981076e05bd4edc1f09126ce71077732c9a1b9da4d", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "d4b71283c63c741a2c79070cd9f0acaf6af0e03c401c76c088ddb7de48bfe23a", +"T3T1_es_test_protection_levels.py::test_wipe_device": "f9673ab3fc9843ebaedc7cf307958d95ebd00d8f7124a12955e5b084aebc1ca0", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "a78204be3592f7d5d3c3fba547aeea24fbda5b541e0355e629154f7569f0a19f", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "06f565fe26554d033d5c0ed3f743d150f399406941c54a7ef4ab4575c378e8c8", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "716aa623f840cf3868725297d4266981f88971d244a041241a0d07e1b7bf736d", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f69c72b7f6a29984b6a4b13e4584c17620d1d3ca7e35b67f4ad2e16c4188bf93", +"T3T1_es_test_sdcard.py::test_sd_format": "7d00c1ae543eb67e3dcb545b0aa541862b0594e81e1b19fb202e75b2374580ec", "T3T1_es_test_sdcard.py::test_sd_no_format": "fcd7ee499c336d76070703c8c60baa583a267efec1f77a2e92201ba630876640", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "37bb970f069e7957ebcbd2a1934e95a9e7049b5d6bcdb0fb094642da7668d588", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "2de300d6a44c96385e31f2809026965cbd4778cb7ed275b84124ac8e0b2dc4da", "T3T1_es_test_session.py::test_cannot_resume_ended_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_session.py::test_clear_session": "0fc01e194982756a98ec5319fd8173729b93f7eb65dd0128f02cc47b388a867b", +"T3T1_es_test_session.py::test_clear_session": "a3137b76c16ac630cd79f67cb48795542f15f7f63c4aa241f219690027e6aa84", "T3T1_es_test_session.py::test_derive_cardano_empty_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_session.py::test_derive_cardano_running_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", "T3T1_es_test_session.py::test_end_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", @@ -21282,8 +21282,8 @@ "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "d84c34adcd20dd934dbe7c3949d5e034d57e4db14ba93fefe50cac524bbbe6e4", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "6f29b0104ef7076880cccfefc32fc7bc5b9618c83491abcc53a2ea5b4838631c", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "36bf7ec2c36cfd74aa2ad42997fed91fd46db40eb76cb6fa85d450747e2037eb", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "16beef6b091787de3ea07be750b4c6186155c9e4698e6238c078fab651275388", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "16beef6b091787de3ea07be750b4c6186155c9e4698e6238c078fab651275388", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "053f121ead848208b16659d7f1e148448a4478caf7ffcff530e44386084147c8", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "053f121ead848208b16659d7f1e148448a4478caf7ffcff530e44386084147c8", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1df910c16db065eb897127a221b9666f2a053138c85bb96972f62448bb377725", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "8b17ff8efe40d9f246c65029c386c4562b5561c3ce5fca7e4d4aa90544ed0f71", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "42350583e7796dd7885edb21c632bdc4089494f6a4d1b257437fc8f6df25bf55", @@ -22269,55 +22269,55 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0f802f5359c3ef63c68fb8218a94a3a94896bbc6c204a614af05935585232bda", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4ea62fa2dc55e50d5e840237b9de2ba48ce61cf1c82ac477e22e87e4f4ca3708", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "33372f157c7beb0308b0e74c16d85c4335f4413343989df6b27852c8f24c7585", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "29bf331a5849578e2ec3df5c69240233c4fa922b902957c0a671bff348f4a39a", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "3113558ff41fefc1fc378c4bb9259f75f32991a4df5f8eb004695f63fa8672ba", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "05695e65e048edb2c56a1601fd29223f7262b30937ccdd77b2b0c0793fa35118", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ca390ff6af2491e27399ae015204d05717a23b1d2a50a59a4e49726a08f6ecb7", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "46d4bc535f95e497ef941d2ff1ab4d58a7545c0893ac2b366440423daf5c63c4", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "7dbb489fc49e9d04859b40afadc01f889591023578b2020dbbc5f28b8f6aaa9c", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "1cfb07f1b7ac835055849c9c192c754f329dd56f9a2659a901510618aaa65883", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "47a22c6271ba2c8e8ffe2b5e2546e90b48299fe08eb38405b38a2142feae4711", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4c82b3bda6e04f1737d68c58e16be6d9b4b845a65c192ae15b4a5fe02accfbfb", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "53a2fb2ad71224bad0f7dd12c89fc5c1a8b91aa3a76cbd7fedd2330e9cceb605", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f82bb2a4ce2ff99348a752344e8d9460acc4c2094c35395044efe6ddac535118", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "782c0d1ca3189142777c5a2089479860c9fe97ee19d676535c48aa31e1757dec", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e9f284eee2b92ad97815905b1847bd4f7a10485a57cc44a3bf7d1f7f16a8e592", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "b59478c0effb14dae4dee21b04f7ca8f94657524b5c52026020d44acd6c7d560", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "1135900b6d5b210833e60db1e4137002a8c4f0e24cb8aea5b645c93691a6b1b8", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "7dbb489fc49e9d04859b40afadc01f889591023578b2020dbbc5f28b8f6aaa9c", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6373ad0f80ffa8a2ff54740c15add0150b0d8271ef719ed27f8fa82b3b49d4b0", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e6931efe7a24ba44ac763465b1df6ae32aba5e733ba399032ead05819c02093f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d8e712af3fb025e88073ad8adb9f92a39cab6648b8cf7b8c11f884c5e28a3cb8", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5dc2e4a971260fb070753cbb4a3e46bd6c1ea57fd169d01f6125f2a061c59e43", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7c1c912388ba5b959c29a588ac9516945bb0f294eea8590115ea2f74e14dc906", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8ea4fde6edbbd251f7bfc276c500ffcb1553bb98cf01a8b7c64cd450d0bfb223", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4e7da46e1098ada02c7e3ce27d0892d02b8e4fd4a87e02fa21cce1ee84271f3f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "be7660231d866dfad9d3dcab2cee0d64879905ad19c218e0eb538b87211b937f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "55c92a05e532e0065c638e409deb36d01f615d949bca02556b4e3d8c3f4b77e3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5ebd165a7e3ae3e3a7b970dd26215d223b4f7c38443c3bb3f7bea4066d84fbb8", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "c0fe93704a2d57b9b9df184b96b903faf8f0636f58937ddb84b74b665468b99e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "78a369b184b485eb2653a48edc07eaf5a8aec32691ebc21ef63b899aaa61c5bb", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "9eaae8f66bccdd48933bbc7baa8e7d34560099cdcf08e77f7c4e69bc60e46b0b", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "97853845f52377892d6e214f693212dfa95572d05f0c02df45d0d597a13d0e75", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "418a2dbae1154de989c6b00b002cd64015d4c37e434db218b9d760d8bfc7ce1b", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "11a7e9e32d3a41d52e6832f9f15d7ddb9f6f26b192c6c0cfff5ce226435d4963", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5dce331e9668899cd6ef6da6e746187a6a81abde78c97c1d5f9e299956a3f109", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "e2bfe0e84150020ec4dd23bf1c3c3ddeb7e71062800d8c84f46af141ffa0be39", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b5ab3ef7d4cc2c07bed6dd23d1aec963dfaeded2c6ef44a682e021340491a1c5", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "0045a398e3449054327f3319d85f0431b751f44bb4b0f8c7b3993df2284c18eb", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8f4ed7a1049ee80a79917685eb587b9ef20e23cb76f0dd6d1b7f2f2079ba0fb3", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1c6c6801f7059a08c028d504abc90310e05e2f5d644109f2a5ddd9e6a1f27b98", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "330a5195d87f4bd034041d61ff7140f7d81694e2b66e17a564c6afcadf86dc5d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "51f9584d7bc01a584bc1a8e4cedb744e5c139265a36ee21b96cba4f98d37f640", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "74e872e7907b493b8c4472349ed76ba7a583df4d98cb22b7f0eafcc1c1df3b39", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "545147ed21b5842cf21746541f7c69c90a49391726cec813aa3c75b1aaf2b09f", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "68b55511b2a92fc82c57f8f0c95f672b2e4b806307bf78a30ccf4eda593869c6", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0ac264390368b5acb6e99a2d9fd4ec591add570d51325ee18882e1384b16b6ce", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a73b504d80b40d09dcfdc171a244a5893dc5f758a574e75be2ea7bd4b91aa2e0", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a53b8bbe7af8d64ca5743d64a37bcfd8aa7b0b7f7b03cf01696d27b1da0ff7a4", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "700ea1471a45434b2994c9a00d03a2a53224aa9201108db115cc5f843aba2c49", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1c6c6801f7059a08c028d504abc90310e05e2f5d644109f2a5ddd9e6a1f27b98", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "27dd89605f334555a534d2038aa15835cea2bec21755ea99b31d024fa332c653", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bd4df1188fbbbb3e9a9e0abb02f66deef28810ca145b29008333cdf01a3292ad", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cf5dd4a444ff15e58b4ec1baecbaae22bb22872aa5e419919f22a4ad010afa26", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6356bf9a91e6a103ba5478e21a6d545402cdfe9989926f763a4561340c8fcba9", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5741f3287869ac3e301e8de0fe3969346f6eb20b2beeb042d93b4affd0cfd12b", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a4f84dd8df4b6bc6933c39ab3bd1561cb9e8b3cdaca7ec5bbd4be7e44375e7df", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "f7b6ea1e96561fd8b8671fac1f2f7f04fa804b42257465341ea7ae404940695e", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "f04282cddf58e4d81d4392722c5b8a77e68a2d108870cd282104c10c25d07af3", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "ab51559aa4b9865327b0c12d210de300364ec1eee5c5ed64da288541daf3ac46", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "44d30c0592a3825e6e0ee3eac3f316123e4d154ab3feca70c6d68c74384b804f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "fad7ce0d9f948a6057a724203f3d3134e96ef8f816415fe80c054fb5fec2a8d3", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c4cbf117a0821e50932c58725457ebfba978f2b152fefe01adc2adf763fb642c", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "af3249331f841ed89e18682c9243e6b21ab8299ce187aae062c5dd6eef20dca9", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "cc6e347a66e7fc4b308b5179ba4d5ef83c487249656d94960881609e68d0fe60", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "1ddb21a1c1de8f3401ca8fe6b7e588589ebd32da29edc3d4a633dc6f241385c5", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "3572d1a8b49a0e29ba34516e9c6ad79a2858b42974c389195b60ba441d388a53", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5039d0b90b13b135f7f95bf313406cfbf7717e0783be74b83960f86af057a3be", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2cb2a8e7aeca5f8bf114b43ee82ac348aad0e1ff5e7ec27b9f3a36747042a2d3", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "022620beb8bef7f69465d2d38474f7bf5c5ddba33ee43f09be6350ee64378975", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9bbbe0ff07daf68f350f92868567611f11a1d61c0f25112bf45df199a42ff06c", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "16456784878ad824bce8c43ce91f28a5112a1a1aef4836d0c2827fda6b976520", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "fe98a9c5b6023f91ff4d2b054f1676b62c5bc3b44dc6548ed88aca70ef9b964e", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2e678df14411a1573f4c0c5b9c5486ebb6ba50888f5be574e4e15849b04f7389", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "c7a51d540ad145800233cd7c5aa3359a0a874cb8f970976690984f13b9699551", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1f3033f6b65054b4fecc76fc2823be72859a4cfb26524bc63bd30a4bd98dd693", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "944c84c132000efef66c2e5a6a7c87f6062b8502b28734b061eb3229361fd115", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1f64c7b31d7d498a0ade663834b70ecb36f70e698f5284ec643aac3bb0e10818", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8bc1757e022761b4753eaafeac69e82d7ae982dfc81991b3f63906061b12737b", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "78e8f1f7ae1f624ce4b9f96575678389672b94b3ef7bc059c3555e0e97c87176", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "52989e28ab665b125999d9ee984d6f5f760988757ff8567afd00ed10d0c7a3fb", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "721ccab3634941912714d822da406b583c34966b4243268a809886110ce4e4b8", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "fdf7110435e6d0ff15e3c24baa5b20924e3159112a72053885632d25ad995b0e", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "be5654c8ada648b04b330689ccdf4ada807f004078e1c7c245966cd4211e1057", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c0e431086eceada42987834769bb2111953bc4842b023932c5092aa29b195c4d", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "580dff375b0af246775004ccd53df9468b6d496b0f97a7998ca887073180921b", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3107a376fb96b0063acbb3e1f9082a600aaf0551eccc87ae36875c12fbd106ec", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "74128fcb7555a441b8b7fcdcc681f2ef400f79f715d6bb474bcc347bd6cfbb78", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d9fa30df9f91a6acf5b5eb05d2a24554f594215d1d1653d523275ac58950bded", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b5c254e2d8236671f73a5f12a4400fc98d1de3c5c787bf99448c72161682a3d8", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "67a403200e92c91436c3ccc463d522efa1319a2640184a8d32a7cd6364806d88", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eeb214c77f059c6261206b163e2c2d9a09a80b89edafad3131aaab4d56350694", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "1eff1ed9c60943369f0a400f0722e570eff48e4ded73aa4345fba24fd827ea7b", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "10d2a505e2d7f4e8caffd397b75eaa99d048cbcb9d12d172a566b3293e17c390", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a38baf7bbd7b2c6af02784c57c3074ba0907aab4048bd328314a59009b25fe6f", @@ -22454,35 +22454,35 @@ "T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2cb5014bb5ea9037f269776bcfccae02a73cf3a6910d6b638745bf5decc538f8", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e94364041a9580ac17009bd422a79a04371c725b023c344d540dd63c0b01cb70", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5a8eba40e720a2b13ab45651e000e0d4aef20da2c917099a7cade728b2fc1f0e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "c902023c17a2ba211a7d67f735fd4fbe4be594f0d3524ade5370123e4d589716", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f5eeba19ffabaf48dca84c7624a3e58363a9cae8c67fd568e37780d7bbb31285", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "1ecee3d6396763cf214a56219f5aea9252bdc74a96b12a40d69a695ed7a9df11", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "b4937b89f0e33d5c92f4632c824b1aecd422984998d6b840fdced58d400495d9", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a19c1c1978b5888e8785be7853e8ec497b009964f2420b356de0d3e70f396585", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5004da41288414fe18df30eb15418a4f6509d51a34b58c40eab0fba9549d2e52", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "849dda5ffd57f93dc37451f2038c1fc3b2c0b9c482f67e868f9c9a91182c8045", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "82435b87521466f82b024ca169dc6c52881092eb25cd50eb35dc163538be55c9", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "eed5ddb868c8f435f1457ffcc3d98a0978dad76aceb483b6ab7b7c9558139a57", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "c98c77aaf8c0436847adb04a1f41832c4b5d468df81ae341cb70a73c7059e535", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "c98c77aaf8c0436847adb04a1f41832c4b5d468df81ae341cb70a73c7059e535", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "1316abcf9bbe1fafa6ec41c92c93bf76c5127597de521531057da4a0f19fac72", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bb82988a41e86d9297be6142aa9aa0a32dfcdc72b9593fabad87b758da7bff18", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "f6eadec0b6410bcddfb6989685c19548b19b54415e8470e8e21019d07db96d63", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "31294a29f7d8c3c517614ad9d847743f2a6ee5abe459e6c6b419be8d22e679de", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "cfcdbc90ffb4c26966289cea81d858680611ca9a7fdb2a0fd9c600b4f390f5e6", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "c03ba618ab2d5e8bf8aefbfccc00291317d0e803fa9aa766ccc2ebddf96bf466", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "62e9cd36cfa7438dafdb1cc80e4a972cc71824372ccb334e09da9018683b810d", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "c3cff068a1bb38ff4c53c9f0af9813865aad6c5f62865cea554b51df41ad6c90", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "835ad60ca3c4f926d7328ae3d8d7a665710beb08a1ef627c01cd6785d51c246c", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "cce6fb2656ed81b326298c067557bb0f97c1c2e72a27b7938686847fb8f16f6b", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "cce6fb2656ed81b326298c067557bb0f97c1c2e72a27b7938686847fb8f16f6b", "T3T1_fr_test_basic.py::test_capabilities": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_basic.py::test_device_id_different": "24cc2f8c9a1d1a6ca836057248f8601c2659e238ecb31ec03b2bf566ecfe4d54", +"T3T1_fr_test_basic.py::test_device_id_different": "0ee45dfea4994dc5753ad573c2bc7c261157ad8405918278f4dfa1683ce0e611", "T3T1_fr_test_basic.py::test_device_id_same": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_basic.py::test_features": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_basic.py::test_ping": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_busy_state.py::test_busy_expiry": "84cd25dc854499ec9f3b61828d717f723e0aaaede31edaa23c16b120e2065969", -"T3T1_fr_test_busy_state.py::test_busy_state": "ccb4a621a888105a042644f778e20ba1d498619cfef944ceb59144583b7b7e8a", +"T3T1_fr_test_busy_state.py::test_busy_state": "4d88792fa431c1b47315cdee6e948f58a36a2803acb3d91d969cf46b213e817e", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "bb4fcaa0adfed9fe2787d494a15988497c4470992c0910a793f16376650b8c90", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "bb4fcaa0adfed9fe2787d494a15988497c4470992c0910a793f16376650b8c90", "T3T1_fr_test_cancel.py::test_cancel_on_paginated": "9d84d8ee4c098c156248719e20bcec62b950d7e1371c3fa0dee68001f827a034", -"T3T1_fr_test_debuglink.py::test_softlock_instability": "5ceb54b40b7c17ad769404a8ea8cf1f00a0f661f64887a93f4876e4eb8cb5459", +"T3T1_fr_test_debuglink.py::test_softlock_instability": "edd0fcc632a9f660c69204e0be49d9595c9ee659826461472d5c6447aee217c8", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "9d6027004d77af136656d8621570fc0d9063c7cbf6056fe80c2f5bf636de30c7", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_language.py::test_error_invalid_data_hash": "30a4d490f3318239565869520656140d25aa91fb9704e8b5cbee74ccd93c39b9", @@ -22497,7 +22497,7 @@ "T3T1_fr_test_language.py::test_full_language_change[es]": "102b83872457a9fdeb0e6147ccc21b18b8a92ffc413b12663e02d3d8f3d24f35", "T3T1_fr_test_language.py::test_full_language_change[fr]": "edcee0269b26c8eed88c73ce5aafcad0ec8715ef16369271329d9836b683ec8f", "T3T1_fr_test_language.py::test_header_trailing_data": "2a51f97ec8a9bbde6971d617e919efc5fe89cf6fd1ba0545649135d36476fdb3", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "b317e5dfb572cace82fea582efa80aef5e5efdd131038fd17469829193674017", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "4bad1ca13e7900e08af7d2dc94e7626cc922412975520e08f0ef08c093423b34", "T3T1_fr_test_language.py::test_reject_update": "55cc1dfec01526e8687b104387261b99c637f8ecfa14c341f3b8bf6081c571b2", "T3T1_fr_test_language.py::test_silent_first_install[False-False]": "90889a3769463179454d8304ecf1edf4b07840e96e51b7b485b47bb3c14a6cd2", "T3T1_fr_test_language.py::test_silent_first_install[None-False]": "90889a3769463179454d8304ecf1edf4b07840e96e51b7b485b47bb3c14a6cd2", @@ -22507,15 +22507,15 @@ "T3T1_fr_test_language.py::test_switch_from_english_not_silent": "d17f1d5766f9c047f14e86b448fa012b9255426665eb973c3914a2bf41a2f894", "T3T1_fr_test_language.py::test_switch_language": "b8c02677d8c91a844146904387e3fa204733e59ff129e6707c011adce829b36e", "T3T1_fr_test_language.py::test_translations_renders_on_screen": "e57ecedb711f69e23e25b10a88c79d4374c6623228a634776196665d098bf727", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "ae8a5acfaa391f85a1ffa2a55fae1e4c8a37ba785322b27e49d236411656e55b", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "1b3e706d1b75c75ae139f2b1a4eb02e66454283af5fb2e16baa99997b6a5d6bd", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "d74e81387368b7b1491ea6ab2e9366d0ea4274b8ac7612d374449253085e87d5", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c447d1d0e7208761a919957250b686278ddff75e2b17cce2f10c4729dd884b2a", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "0f55e00b5ac5b7f45b04419b9050a88208614fbef5a996d72c18de46b7af9cf8", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "ef1a70cfc97f3dece2215f9a02ed32562706b1ff8af13c83f2bda4dd6026d48d", "T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "67c7be4b9522e1b5151b6ba2dd8aa0677bc376e8504e165655744f0a9911ca82", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "10fac101016918147991c413ac26bc5107d3ee74d6104c80d9793b4ba34cdfc2", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "285d51abed07f08cdbd9c6ac41c88d4732455eaae3ad1cda839646df601873ee", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "c3401c8dfbd251d154fb1be31f9177e423b2eda7885c6980d05cd9a5f4497f11", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "0c7a664e384871ff86eaa415d69ea3e224a84186640d6289710ea1bb196b6365", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "d07cb0e260158eafd735649cd369ac378ea588f3d4bbb0de84e2ef7abb7c76e0", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "4bc48e6f1279014f299c4f3cb4a9ca1316dd0267f4eb4143a61aef358c3fd487", @@ -22529,61 +22529,61 @@ "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "b0f69e4210b1218889ffd36920a253e7224dfbb09581b76d47be583e1f6c7abf", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "bc64bc809e1294b4b1fcb2c610ccbc4fb2d5e235025710294c10a70f5555339b", "T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "7516edf5b888110c45fcbdba23b199d3bbe6dc13804ecce21b9971ad6499b1ae", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "91a0d6ddcfcb8adee946e935fc365f9704b74a1b0c1e9ecd3b4f814b0ce1e6b3", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "cf6bf6e17869c53571358ba5fd2f01c62e4e48353d976a17436058967c62259b", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ac6a5fa6556a2ef0d0dd88c9d07da26c665a7683fa99a1bf4455cbf40fd8fe06", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d19b5df7744136e04f7a37dc4e435187872a8b343696c168cd25bf4bd2117f51", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "887d7525f06f75b7e2c7f29020c41fabeba7275f4fcabe0833760409322ff38a", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "b25b76335353fedd8e4dccf65ebd34dc112ba712fd04134e88eedd1d2e3af9ab", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "8039f5d122c82e44cc80457b567f2fbd676b2fab50bed552324f4e6ec14dc5f9", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "9061e3aaee2331508d8410d211d2c2898e6ca4f867d1c603818a8012f4d96da3", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "5fd038926462ea1ac30ad5129bc412111509319ec8f209aed33355ff1b4ed3cc", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "35dc46a4112687102f37d98f32dd1ef067d6d33b00824aeb3ce26d067c88d6df", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "60250a505790f755aee8854af3207864b1d4169d85b98052548a681ca076562f", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "f2fc8e02f75ec4772c379df8cb8ab43ba19a81a67b8cdfadecac8ce927a0d607", "T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "e28fc9de0a3d18c516cfa85439b2515fe4eff8a35d91f70005401b0e949e20aa", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "90c703b726313b016fe92fd718ad38fbdc552ca5e1832f2ecd7b02b1f9105f53", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "d8eba5bc93ac313aa910c15e1e07ab75bc11550226870647d78bcaa352a3452c", "T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "ceb7fc910d335b69d18d841697b589a9f3e1547948de83303cd50674d157da0b", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "90d63a46c40fc23562156fe9e0c791fb9af755d69384c4c79a8441284456b0b6", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "4fa14f5ab22629a7341bbd090d000758ea1aae2daf63293aac974930072cb842", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "31726c87dbc7d4a0562d08681a46b6fc42430a0313a0b10e22cf04b1f0f6b77d", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "0162de963358192df4cb4bf273513442d81f160587d6834b0b2ddf4110e225ab", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "43f125c2f1c277d0c72ee1145164bcf2f13d74fc2adfff73b3aab3f37545e428", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "114a85b71c6475849082ad12cb2c6e21da7207c5252f3d80b1ecfd78a4ef88ea", "T3T1_fr_test_msg_ping.py::test_ping": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "89b9e5246d1af047201ae6765efa5b719c0c787ba3b9df546467f12078edfe4e", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "db03b59d8c6d83a5eddd0f418b3f73c8fb647b01ed1a1e8216f947429ee4ba44", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "79aea26e05d87ada486aec4f2a80fd850bf28a3acdda2ac4e14971ebeeabb1c7", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "eb7da940724e56dc9eff0547a0e7e058ed808adbdad75f6c71bbbcd4007edc8d", -"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "24cc2f8c9a1d1a6ca836057248f8601c2659e238ecb31ec03b2bf566ecfe4d54", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "28af79fd635dfdfd9cb71fb1a03e37331e65d1738d1188829329a2ff274bf8dd", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "1c5e14580c12d74b497ac6c2950902a1bfc1f2f17fffcce98aa5f454411ad4e1", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "73429c585d9b42b7d9eb3e1057d562a65f8d899100f8068792575f517991333f", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "8a4347052197c7347d823859ed54636f2f1212c3f669b69c9fc88e83256e5db1", +"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "0ee45dfea4994dc5753ad573c2bc7c261157ad8405918278f4dfa1683ce0e611", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2fd8552441cb399591fe7a7d9380a0122dd20620c98e1a3e42be90e97e3ce709", "T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2fd8552441cb399591fe7a7d9380a0122dd20620c98e1a3e42be90e97e3ce709", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", "T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", -"T3T1_fr_test_pin.py::test_correct_pin": "ff4ef70f1b1cf709e490cdca04995d5d840cf09e3bf0bffd793b5b14bcd2e38f", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "63b60d483de9ce91a00f95dd52de03f45685b0ea4cffed14901dcd72f63eac1f", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "4b35238527dcaa01399230f7bcaf7d21fdcf54f5be3c359821a9538455a5d887", +"T3T1_fr_test_pin.py::test_correct_pin": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "17e8fa9f575f1a26ddd78f8ccfbd20b98e5d2fb05177f1f4484a01d1bdcd0c9f", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "edb14c28b1c1a81e0029e6cebc74c082b2d76276f71c566f998033ab06cd36d8", "T3T1_fr_test_pin.py::test_no_protection": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "6f391c1a16ce55acb2ac8b1e83464efe638a5ebf3f5d79e9ac53452b5e4cac4b", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "696784a7eaf1c6072ece62aff3008196b03892119053b66d6e2a89a9cefc362f", -"T3T1_fr_test_protection_levels.py::test_get_address": "a7e355d325f1e383c2810d1389e102881ff297083344ffb8dfd8545bc2f88d64", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "fdd7ecbc62d9dae36b71c014f5adabf7a1524e69a7d772b53544736ceac49f1b", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "a7e355d325f1e383c2810d1389e102881ff297083344ffb8dfd8545bc2f88d64", -"T3T1_fr_test_protection_levels.py::test_initialize": "770725a2d2d7b1fa459a8cc6e4f46937640f5cc7fb3fb1f12900ef6bc6f0b7fe", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "5d13e17ff34580eaf3d9fabb040025c7d4cd9edc224e36424dc5e912300d0b82", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "9eaa6ad8b4def668a6f529fea4caf9474f77768a5696336f8d12a9c45546373a", +"T3T1_fr_test_protection_levels.py::test_get_address": "3a6b31767cfd763bdb9905ece207e056c61f98a6137c8ed8ef3089e1b05fe1fd", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "f050ab350b89c64cfff138144166eaf8fd754331507a871be471d4a7b829388d", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "3a6b31767cfd763bdb9905ece207e056c61f98a6137c8ed8ef3089e1b05fe1fd", +"T3T1_fr_test_protection_levels.py::test_initialize": "0e8497ce83509d9aa158957d1fd582b191f7d0855505c61b2525085a733f994e", "T3T1_fr_test_protection_levels.py::test_passphrase_cached": "51564c08a23ce031181432e95291999544e01ac35682c59c2fff2d896261841b", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "48d47ef41d64f2753f87392b6793d6dc51ab6fad7744d0de1b83e808a0c484bf", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "2b1cb68abca3f83ee0376dcd14865c144a3edbb172785e2295a6b9919d7ccbee", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "39f40b855a2397b2c52256d443696b5433c1a89ba2f396a39d126dc49baad81d", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "908e7c771721b7368db48d92a38dfe2fd45605d9661c7dc3cea14ccd694d9ab8", "T3T1_fr_test_protection_levels.py::test_ping": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_protection_levels.py::test_sign_message": "84da17b6c521c3cd7d1a5fd11075ce7e21f979aeafb66c2d204cc2cdacacf0c8", -"T3T1_fr_test_protection_levels.py::test_signtx": "d2329faa047973f7732bd9670148b32da2e2570222b9e7df59a692dfcd25f41b", -"T3T1_fr_test_protection_levels.py::test_unlocked": "35cbeb9d02695d1e32461f9cda335beb65f7eb5c7580a1bed62dbc1dd2b54cb2", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "194d8261551236ade76cbace4e915c634673775cd825f18c0e8678365069c8e1", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "2c7147da05699ed5e4e210d2809369817ffce4ece65e210d69313ffb90c36de6", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "b3a9090dd3aa168ec36c8aef7417f7c95380b26adbf042de2c57a2d3d3b03afe", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "156c18a39673a23da766b6b4874745e3cfc67415bcd2022bd99311229938f1fb", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "dfde294e39d4fda04d8a3afcbbaad5abdd7e732b1e7c926481eae6a9ce0cc354", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "64d5f0ebd8640a53379862194fa5062c0d6bb8e1aa9b520529551c430a00ffc1", -"T3T1_fr_test_sdcard.py::test_sd_format": "6683e27dce5276f9a5646c90d8c5aa19d8df5af098f5c808304abef02ff09d9f", +"T3T1_fr_test_protection_levels.py::test_sign_message": "b8edd6de8fd5b9da2f5ce274d40f5d35be4bf3d0cf3017841c2b90b72866721a", +"T3T1_fr_test_protection_levels.py::test_signtx": "2cee3729f735e4249d352d87b8369f93ad2943cc8eb7a0547339b621e7ff8c0f", +"T3T1_fr_test_protection_levels.py::test_unlocked": "8b73f0fbdd66cfa46d39f00115bcdd1c3abecfcde6334ed23fd8e54c36094557", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "e95b9a1faeb3246c904d7e693f599ac4c23be55fdd21548386642746fd9d4a0d", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "281e188fe7e914922ff06765a8b8e0f7252c09e795f93315820a8c087cf540c3", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "27de6e612ce7cb0fe021763fc0eca64d0caa3969666e3aebde657fb11e38a036", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "84cb2fd89ce2eaaa326240410b9a6c307d5b9f8f578cd9fdbfbf0c3b0c13ccf3", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "4891130331ab27f65db773547624b991169692d7d9b1c1540174ba43f1a6b8cd", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ff38cbd72a2bde4cbb018ae54b5427b9869336aa0e36bfe8f7b522ebdda3b23e", +"T3T1_fr_test_sdcard.py::test_sd_format": "2589c6be0fb532ebeaabfe3973b59a10450935727d612e63a5ce4fc2f749e506", "T3T1_fr_test_sdcard.py::test_sd_no_format": "cad883696fe6ed7320aeec419e118acdc897b22eea22f5d9cdff84ba5b0504d3", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "9f74d824c66a01638b8e1d1172dca750facfb2b2a6e3759642d688afcbe216c7", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "03c2bafb82f9fd94e1a5c3dbd37536ff44fba0a07013d2ed31c0055123837d38", "T3T1_fr_test_session.py::test_cannot_resume_ended_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_session.py::test_clear_session": "0a1ad6a2e78022d4ff4588b6604ec34aee16e3f998b269318d9467c7ce6de18f", +"T3T1_fr_test_session.py::test_clear_session": "0ef8ec19c8f6a1c16ef72a3d4a0d416bb5cf7cf0c36ffa26e98e6a468996e0a0", "T3T1_fr_test_session.py::test_derive_cardano_empty_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_session.py::test_derive_cardano_running_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", "T3T1_fr_test_session.py::test_end_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", @@ -22633,14 +22633,14 @@ "T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "7d18d65883b195be762f7d2e7ca1337d19caf65eb4c2c439484a8abc0b7a9f32", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "b01f34ba8953a78b2fb235e345c862a54b91dd0ff4b072fa7172d0f24977558f", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "db8312f6b5f6bd3e8d2bc9989139ed32ee681ae74de382fe65f690f2b94bbbd3", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "7c6844d9a988846017166c9a27011085ac047d43467fdd1c52ebb0381d1069f2", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "af33c79edd0533b40cc0b1db1624ba6f8371a148e7d7bdcbdf7097b7e32bf575", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "1be26bbb4b0f39b8b8a7dfb88795cc514ec81c818cbfceed1a5b58b0a4abd94f", "T3T1_en_test_shamir_persistence.py::test_abort": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "d6a9929fafc8bdcef318e70b4bca18a1809bb40676d0ad2533b2bda076bf5fd9", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "8524623d8d0e3d75b112a764b877ab128e0e43fd77de0e498a6388f29232b2fe", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "c2f0f060f34cda401a4ca7dd1fe685186dd6ecc4885be506072677088ddb3017", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "d250aad4cba370f28bdac1c2e59b1dc59ba9fcbfd6ed7be5f0e74544a7851424" +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "9429af33b789431a92a14419d498e4c01dc51bb1c5d134f833ea215abbb38768", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "397c86ad577d6958a19eb84c9d55f54b3cdf3ca15771d58168f2047cef8f59b2", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "93e6e35390827e127cb5321003ec813cc991cf411c5bee91058e84adcd41dfe8", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "17824575273fffb27f0013b5fea1f3f39b6eb10e33f3e765f5df72a10c94cdfd" } } } From 3a3259b574656055a39fc37480d16d6fe92ed27e Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 10 Jun 2024 09:22:25 +0200 Subject: [PATCH 330/626] feat(core/mercury): change homescreen flow --- core/.changelog.d/3907.added | 1 + core/SConscript.firmware | 3 + core/SConscript.unix | 2 + core/embed/rust/Cargo.toml | 2 + core/embed/rust/librust_qstr.h | 2 + .../generated/translated_string.rs | 14 ++- .../rust/src/ui/component/cached_jpeg.rs | 98 +++++++++++++++++++ core/embed/rust/src/ui/component/mod.rs | 4 + .../ui/model_mercury/flow/confirm_action.rs | 36 +++++-- .../embed/rust/src/ui/model_mercury/layout.rs | 48 ++++----- core/embed/rust/src/ui/shape/mod.rs | 2 +- core/embed/rust/src/ui/shape/utils/mod.rs | 4 +- core/mocks/trezortranslate_keys.pyi | 6 +- .../src/trezor/ui/layouts/mercury/__init__.py | 5 + core/translations/en.json | 6 +- core/translations/order.json | 4 +- core/translations/signatures.json | 6 +- tests/ui_tests/fixtures.json | 26 ++--- 18 files changed, 211 insertions(+), 58 deletions(-) create mode 100644 core/.changelog.d/3907.added create mode 100644 core/embed/rust/src/ui/component/cached_jpeg.rs diff --git a/core/.changelog.d/3907.added b/core/.changelog.d/3907.added new file mode 100644 index 0000000000..5cd8fd5119 --- /dev/null +++ b/core/.changelog.d/3907.added @@ -0,0 +1 @@ +[T3T1]: improved change homescreen flow diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 53a89386e6..127a63592d 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -843,6 +843,9 @@ def cargo_build(): features.append('ui_blurring') features.append('ui_jpeg_decoder') + if NEW_RENDERING and TREZOR_MODEL in ('T3T1', 'DISC2'): + features.append('ui_image_buffer') + features.extend(FEATURES_AVAILABLE) cargo_opts = [ diff --git a/core/SConscript.unix b/core/SConscript.unix index 000ce6e844..b98314393a 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -885,6 +885,8 @@ def cargo_build(): features.append('ui_blurring') features.append('ui_jpeg_decoder') + if NEW_RENDERING and TREZOR_MODEL in ('T3T1', ): + features.append('ui_image_buffer') if NEW_RENDERING: features.append('new_rendering') diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index eae620d814..0cb686ea62 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -26,6 +26,7 @@ ui_bounds = [] ui_antialiasing = [] ui_blurring = [] ui_jpeg_decoder = ["jpeg"] +ui_image_buffer = [] new_rendering = [] bootloader = [] button = [] @@ -60,6 +61,7 @@ test = [ "ui", "ui_jpeg_decoder", "ui_blurring", + "ui_image_buffer", "universal_fw", ] universal_fw = [] diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 3640e9ef84..270c7f9df8 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -251,6 +251,8 @@ static void _librust_qstrs(void) { MP_QSTR_homescreen__click_to_connect; MP_QSTR_homescreen__click_to_unlock; MP_QSTR_homescreen__set_default; + MP_QSTR_homescreen__settings_subtitle; + MP_QSTR_homescreen__settings_title; MP_QSTR_homescreen__title_backup_failed; MP_QSTR_homescreen__title_backup_needed; MP_QSTR_homescreen__title_coinjoin_authorized; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 4255f2c3a7..f6f1024add 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -546,7 +546,7 @@ pub enum TranslatedString { homescreen__title_no_usb_connection = 327, // "No USB connection" homescreen__title_pin_not_set = 328, // "PIN not set" homescreen__title_seedless = 329, // "Seedless" - homescreen__title_set = 330, // "Change homescreen?" + homescreen__title_set = 330, // "Change wallpaper" inputs__back = 331, // "BACK" inputs__cancel = 332, // "CANCEL" inputs__delete = 333, // "DELETE" @@ -1334,9 +1334,11 @@ pub enum TranslatedString { recovery__title_unlock_repeated_backup = 933, // "Multi-share backup" recovery__unlock_repeated_backup = 934, // "Create additional backup?" recovery__unlock_repeated_backup_verb = 935, // "Create backup" - homescreen__set_default = 936, // "Do you really want to set default homescreen image?" + homescreen__set_default = 936, // "Change wallpaper to default image?" reset__words_may_repeat = 937, // "Words may repeat." reset__repeat_for_all_shares = 938, // "Repeat for all shares." + homescreen__settings_subtitle = 939, // "Settings" + homescreen__settings_title = 940, // "Homescreen" } impl TranslatedString { @@ -1877,7 +1879,7 @@ impl TranslatedString { Self::homescreen__title_no_usb_connection => "No USB connection", Self::homescreen__title_pin_not_set => "PIN not set", Self::homescreen__title_seedless => "Seedless", - Self::homescreen__title_set => "Change homescreen?", + Self::homescreen__title_set => "Change wallpaper", Self::inputs__back => "BACK", Self::inputs__cancel => "CANCEL", Self::inputs__delete => "DELETE", @@ -2665,9 +2667,11 @@ impl TranslatedString { Self::recovery__title_unlock_repeated_backup => "Multi-share backup", Self::recovery__unlock_repeated_backup => "Create additional backup?", Self::recovery__unlock_repeated_backup_verb => "Create backup", - Self::homescreen__set_default => "Do you really want to set default homescreen image?", + Self::homescreen__set_default => "Change wallpaper to default image?", Self::reset__words_may_repeat => "Words may repeat.", Self::reset__repeat_for_all_shares => "Repeat for all shares.", + Self::homescreen__settings_subtitle => "Settings", + Self::homescreen__settings_title => "Homescreen", } } @@ -4000,6 +4004,8 @@ impl TranslatedString { Qstr::MP_QSTR_homescreen__set_default => Some(Self::homescreen__set_default), Qstr::MP_QSTR_reset__words_may_repeat => Some(Self::reset__words_may_repeat), Qstr::MP_QSTR_reset__repeat_for_all_shares => Some(Self::reset__repeat_for_all_shares), + Qstr::MP_QSTR_homescreen__settings_subtitle => Some(Self::homescreen__settings_subtitle), + Qstr::MP_QSTR_homescreen__settings_title => Some(Self::homescreen__settings_title), _ => None, } } diff --git a/core/embed/rust/src/ui/component/cached_jpeg.rs b/core/embed/rust/src/ui/component/cached_jpeg.rs new file mode 100644 index 0000000000..493ae9464c --- /dev/null +++ b/core/embed/rust/src/ui/component/cached_jpeg.rs @@ -0,0 +1,98 @@ +use crate::{ + io::BinaryData, + ui::{ + component::{Component, Event, EventCtx, Never}, + display::image::ImageInfo, + geometry::{Offset, Point, Rect}, + shape, + shape::{render_on_canvas, ImageBuffer, Renderer, Rgb565Canvas}, + }, +}; + +pub struct CachedJpeg { + area: Rect, + image_size: Offset, + jpeg: ImageBuffer<Rgb565Canvas<'static>>, + scale: u8, +} + +impl CachedJpeg { + pub fn new(image: BinaryData<'static>, scale: u8) -> Self { + let size = match ImageInfo::parse(image) { + ImageInfo::Jpeg(info) => { + if info.mcu_height() > 16 { + Offset::zero() + } else { + Offset::new(info.width(), info.height()) + } + } + _ => Offset::zero(), + }; + + let mut buf = unwrap!(ImageBuffer::new(size), "no image buf"); + + render_on_canvas(buf.canvas(), None, |target| { + shape::JpegImage::new_image(Point::zero(), image) + .with_scale(scale) + .render(target); + }); + + Self { + area: Rect::zero(), + image_size: size, + jpeg: buf, + scale, + } + } +} + +impl Component for CachedJpeg { + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.area + } + + fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { + None + } + + fn paint(&mut self) {} + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let off = Offset::new( + self.image_size.x / (2 << self.scale), + self.image_size.y / (2 << self.scale), + ); + let pos = self.area.center() - off; + + shape::RawImage::new( + Rect::from_top_left_and_size(pos, self.image_size * (1.0 / (1 << self.scale) as f32)), + self.jpeg.view(), + ) + .render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, sink: &mut dyn FnMut(Rect)) { + sink(self.area) + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for CachedJpeg { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("CachedJpeg"); + } +} + +#[cfg(feature = "micropython")] +mod micropython { + use crate::{error::Error, micropython::obj::Obj, ui::layout::obj::ComponentMsgObj}; + impl ComponentMsgObj for super::CachedJpeg { + fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { + unreachable!(); + } + } +} diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index a7d80d7368..3bbdaeef1b 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -4,6 +4,8 @@ pub mod bar; pub mod base; pub mod border; pub mod button_request; +#[cfg(all(feature = "jpeg", feature = "ui_image_buffer", feature = "micropython"))] +pub mod cached_jpeg; pub mod connect; pub mod empty; pub mod image; @@ -28,6 +30,8 @@ pub use bar::Bar; pub use base::{Child, Component, ComponentExt, Event, EventCtx, Never, Root, TimerToken}; pub use border::Border; pub use button_request::{ButtonRequestExt, OneButtonRequest}; +#[cfg(all(feature = "jpeg", feature = "ui_image_buffer", feature = "micropython"))] +pub use cached_jpeg::CachedJpeg; pub use empty::Empty; #[cfg(all(feature = "jpeg", feature = "micropython"))] pub use jpeg::Jpeg; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 3dd86b068e..ce29e42bac 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -173,7 +173,7 @@ fn new_confirm_action_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err } #[inline(never)] -pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static>( +pub fn new_confirm_action_uni<T: Component + MaybeTrace + 'static>( content: T, title: TString<'static>, subtitle: Option<TString<'static>>, @@ -182,13 +182,12 @@ pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static> hold: bool, info: bool, ) -> Result<Obj, error::Error> { - let mut content_intro = - Frame::left_aligned(title, SwipeContent::new(SwipePage::vertical(content))) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()) - .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .with_vertical_pages(); + let mut content_intro = Frame::left_aligned(title, content) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .with_vertical_pages(); if let Some(subtitle) = subtitle { content_intro = content_intro.with_subtitle(subtitle); @@ -261,3 +260,24 @@ pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static> Ok(LayoutObj::new(res)?.into()) } } + +#[inline(never)] +pub fn new_confirm_action_simple<T: Component + Paginate + MaybeTrace + 'static>( + content: T, + title: TString<'static>, + subtitle: Option<TString<'static>>, + verb_cancel: Option<TString<'static>>, + prompt_screen: Option<TString<'static>>, + hold: bool, + info: bool, +) -> Result<Obj, error::Error> { + new_confirm_action_uni( + SwipeContent::new(SwipePage::vertical(content)), + title, + subtitle, + verb_cancel, + prompt_screen, + hold, + info, + ) +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 38ea10e119..3615cd2c77 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -22,7 +22,6 @@ use crate::{ component::{ base::{AttachType, ComponentExt}, connect::Connect, - jpeg::Jpeg, swipe_detect::SwipeSettings, text::{ op::OpTextLayout, @@ -32,7 +31,7 @@ use crate::{ }, TextStyle, }, - Border, Component, FormattedText, Label, Never, SwipeDirection, Timeout, + Border, CachedJpeg, Component, FormattedText, Label, Never, SwipeDirection, Timeout, }, flow::Swipable, geometry, @@ -41,7 +40,10 @@ use crate::{ result::{CANCELLED, CONFIRMED, INFO}, util::{upy_disable_animation, ConfirmBlob, PropsList}, }, - model_mercury::component::{check_homescreen_format, SwipeContent}, + model_mercury::{ + component::{check_homescreen_format, SwipeContent}, + flow::new_confirm_action_simple, + }, }, }; @@ -516,38 +518,38 @@ extern "C" fn new_confirm_homescreen(n_args: usize, args: *const Obj, kwargs: *m let obj = if jpeg.is_empty() { // Incoming data may be empty, meaning we should // display default homescreen message. - LayoutObj::new(SwipeUpScreen::new( - Frame::centered( - title, - SwipeContent::new(Paragraphs::new([Paragraph::new( - &theme::TEXT_DEMIBOLD, - TR::homescreen__set_default, - ) - .centered()])), - ) - .with_cancel_button() - .with_footer( - TR::instructions__swipe_up.into(), - Some(TR::buttons__change.into()), - ) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()), - )) + let paragraphs = ParagraphVecShort::from_iter([Paragraph::new( + &theme::TEXT_DEMIBOLD, + TR::homescreen__set_default, + )]) + .into_paragraphs(); + + new_confirm_action_simple( + paragraphs, + TR::homescreen__settings_title.into(), + Some(TR::homescreen__settings_subtitle.into()), + None, + Some(TR::homescreen__settings_title.into()), + false, + false, + ) } else { if !check_homescreen_format(jpeg) { return Err(value_error!(c"Invalid image.")); }; - LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned(title, Jpeg::new(jpeg, 1)) + let obj = LayoutObj::new(SwipeUpScreen::new( + Frame::left_aligned(title, SwipeContent::new(CachedJpeg::new(jpeg, 1))) .with_cancel_button() .with_footer( TR::instructions__swipe_up.into(), Some(TR::buttons__change.into()), ) .with_swipe(SwipeDirection::Up, SwipeSettings::default()), - )) + )); + Ok(obj?.into()) }; - Ok(obj?.into()) + obj }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index 7aabc3aebd..7b0bf52e14 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -36,5 +36,5 @@ pub use rawimage::RawImage; pub use render::{DirectRenderer, ProgressiveRenderer, Renderer}; pub use text::Text; pub use toif::ToifImage; -#[cfg(feature = "model_mercury")] +#[cfg(feature = "ui_image_buffer")] pub use utils::ImageBuffer; diff --git a/core/embed/rust/src/ui/shape/utils/mod.rs b/core/embed/rust/src/ui/shape/utils/mod.rs index 1d374a7fbe..76825d3f25 100644 --- a/core/embed/rust/src/ui/shape/utils/mod.rs +++ b/core/embed/rust/src/ui/shape/utils/mod.rs @@ -1,5 +1,7 @@ mod blur; mod circle; + +#[cfg(feature = "ui_image_buffer")] mod imagebuf; mod line; mod trigo; @@ -7,7 +9,7 @@ mod trigo; pub use blur::{BlurAlgorithm, BlurBuff}; pub use circle::circle_points; -#[cfg(feature = "model_mercury")] +#[cfg(feature = "ui_image_buffer")] pub use imagebuf::ImageBuffer; pub use line::line_points; diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index c1a1fcd033..ecc3341de0 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -356,7 +356,9 @@ class TR: haptic_feedback__title: str = "Haptic feedback" homescreen__click_to_connect: str = "Click to Connect" homescreen__click_to_unlock: str = "Click to Unlock" - homescreen__set_default: str = "Do you really want to set default homescreen image?" + homescreen__set_default: str = "Change wallpaper to default image?" + homescreen__settings_subtitle: str = "Settings" + homescreen__settings_title: str = "Homescreen" homescreen__title_backup_failed: str = "Backup failed" homescreen__title_backup_needed: str = "Backup needed" homescreen__title_coinjoin_authorized: str = "Coinjoin authorized" @@ -364,7 +366,7 @@ class TR: homescreen__title_no_usb_connection: str = "No USB connection" homescreen__title_pin_not_set: str = "PIN not set" homescreen__title_seedless: str = "Seedless" - homescreen__title_set: str = "Change homescreen?" + homescreen__title_set: str = "Change wallpaper" inputs__back: str = "BACK" inputs__cancel: str = "CANCEL" inputs__delete: str = "DELETE" diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 2c0cf093d4..2c8d9f168a 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -425,6 +425,11 @@ def confirm_multisig_warning() -> Awaitable[None]: def confirm_homescreen( image: bytes, ) -> Awaitable[None]: + + from trezor import workflow + + workflow.close_others() + return raise_if_not_confirmed( interact( RustLayout( diff --git a/core/translations/en.json b/core/translations/en.json index ada21e7592..9d785d50ec 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -365,8 +365,10 @@ "homescreen__title_no_usb_connection": "No USB connection", "homescreen__title_pin_not_set": "PIN not set", "homescreen__title_seedless": "Seedless", - "homescreen__title_set": "Change homescreen?", - "homescreen__set_default": "Do you really want to set default homescreen image?", + "homescreen__title_set": "Change wallpaper", + "homescreen__settings_title": "Homescreen", + "homescreen__settings_subtitle": "Settings", + "homescreen__set_default": "Change wallpaper to default image?", "inputs__back": "BACK", "inputs__cancel": "CANCEL", "inputs__delete": "DELETE", diff --git a/core/translations/order.json b/core/translations/order.json index b42c337a07..23d3a0db17 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -937,5 +937,7 @@ "935": "recovery__unlock_repeated_backup_verb", "936": "homescreen__set_default", "937": "reset__words_may_repeat", - "938": "reset__repeat_for_all_shares" + "938": "reset__repeat_for_all_shares", + "939": "homescreen__settings_subtitle", + "940": "homescreen__settings_title" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 21fa4a538a..b6324b7af4 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "965333c69ea67f8fb0c199da2293677c7568962e5c1221624f4f13011e8ac88d", - "datetime": "2024-06-14T10:32:18.803684", - "commit": "3e5af95a88c28082ea2c37f38339956991c1255a" + "merkle_root": "5b5781c3374ff27125228c121ab97436a2ba1f0581657ee56b9fa601fe3bde97", + "datetime": "2024-06-24T13:47:55.544267", + "commit": "d79768cec726c26ac1f82e62fc71b6d4568786a2" }, "history": [ { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 754748fe80..19358ef190 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -2243,9 +2243,9 @@ "T2B1_cs_test_language.py::test_switch_from_english_not_silent": "fb2e18e513a44a58cd1e31fa563c3c9783d5ec0a692ffb0b6635b833e13d76d5", "T2B1_cs_test_language.py::test_switch_language": "0c2bc505e2a70aa7f544d15a20c2cbec91ae70da6cc48fe6947ffa4de9bcebda", "T2B1_cs_test_language.py::test_translations_renders_on_screen": "fd543359e3be7f3e65c8e1129df243572305b0a458997343524d7f79a553fe74", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "2ceb28bcde3e1af715411e08be2858b0f3fd4f3d7dcf198776e66449f0055a16", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "4bd7fc29a9ff8ab05c5bd5631800c6cb6884585b5eb63f1cbfbeec148a5477c5", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "f0b4b3f8352e82e83de2b756ce4a88c8de6937213054f0b7eb7fa990b880653a", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "14b9aba9fd57cf4bc0efbd34decb35c4d86c75bdce7e9593679b361ba3243551", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "ca1c06375c98d3f9ebd84d4ebc63fcded735ec2320babf81e04185ea3ac5edfe", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "4cb5fb5f00faec18c34436b4d97ac7199bc10d619c772cc97bbdaa9aa84e69b7", "T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", "T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", "T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", @@ -5025,9 +5025,9 @@ "T2B1_en_test_language.py::test_switch_from_english_not_silent": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_language.py::test_switch_language": "b74085538e1bb7f0217ba5880c41542938ce41ded7e2499b1807c0aaf51d6fc7", "T2B1_en_test_language.py::test_translations_renders_on_screen": "47922d94fd02016582810dea2286605d73f71ae325532daa72d55dc94ba7bb31", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "eee723c40995e36155677033d1371af0ec8d7ec466ebba19fa915ae33005a402", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "76a9871967a82b747811eb0a63b8ad66ff5d2273461da749f07ca145db998ae7", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "bb644f67c0d8e20639482a7cc7f736b391c2ed5217e84fcfd09e1e7b69d8aa5e", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "e27094d0aa2dcf0aed21de9500df795dcda1c0c4c8ee61124fc3369ea21b9cc5", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "e46c4e3e502dcad92ff6795352a2e1c423be352e1a1ed79623fce78e8673d1a1", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "6629641be9c219175d87a006358d20c8a68e05324c5b8b047ea8fbe884a0c7a4", "T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", "T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", "T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", @@ -6416,9 +6416,9 @@ "T2B1_es_test_language.py::test_switch_from_english_not_silent": "a9b0e47be4dac0a6e99582439a6225527e8e365b7e74cca03892675853b1a152", "T2B1_es_test_language.py::test_switch_language": "26c80e43afd26df2a04f55e21c44c36cf8bbb9c4f5ee3012ee7a4a5f8e2313c7", "T2B1_es_test_language.py::test_translations_renders_on_screen": "7f3f39ddad3967195db73c2609822dced686f8fc8efe77c72c5606b840b17231", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "1d2ccf6cd4b02e47db80071bc00b536d21bf03286c57c2f69b66c0d2cd7307b7", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "2e8da6d392e9a734f9355e7b83ed9fe369cc663e15dbce5a8d8d7001134efc6b", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "42d31cb3e5f776a6512929f0a38b08f8de26752fa6f30ede6cae926558ac2f02", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "05d1fa08b413e81a2466285c59eb37bf9ac9c56cbb3c36cca6261b465fad449e", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "2756046c76d02f4adcff4a2807d26cd8cc27f6fed3a753ca48f91e4da4e7664b", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "9a453e964eeeb279c1f11855a380a1b44399e2726f8f29aedb7ab44fc4878950", "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", @@ -7807,9 +7807,9 @@ "T2B1_fr_test_language.py::test_switch_from_english_not_silent": "2d59eedb25da2468512d9576ef7d7f4528804d4fb8bb1921d4ee8d4d20d91196", "T2B1_fr_test_language.py::test_switch_language": "d64c176bfb4ea6ddbb57c7b609ac0983b335ae0ce503c653480d379caf71976a", "T2B1_fr_test_language.py::test_translations_renders_on_screen": "c96510d7b9812933713c70d22e2a549f12e888a28d8a2624a649d73bf3871d12", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "dff1e20db00e7445a6bf6f45c1e409fae384e0b59308bbf86b226a76ba9f5603", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "4b78cfafde8d47ad5190c86f9a0f22142c6db6400451176a4eb61a1049896461", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "55fbc311b8bac5c3b50b0c3e0dee2677d696243418d6695fc3cc93b1ab8f0032", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "6fbb8c3d87ac90a8bfe8553489db45d7974a12095faf9b312a135812e2ae1ece", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "6a2aa372458517e208753585d9b7964dd59f48d4d4c09f83048ccec5e8d180ff", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "7ea6d0c55fa400dd8b6181146e6c4ffe0605959487243e8ae3a2b71aedc92086", "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", @@ -12467,7 +12467,7 @@ "T2T1_en_test_language.py::test_switch_from_english_not_silent": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_language.py::test_switch_language": "96d22e81bdc95a01571b678688798ea58868f818372bbc28fff6cb2415531d56", "T2T1_en_test_language.py::test_translations_renders_on_screen": "bc06283850dbfad95bf96a97768c276df1543073d41d89909097ea2fc4f3f9ad", -"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0e2a71ac60add6bebc03645b6f4f6f19abdba56f1e55e799479b116e5a66aef6", +"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "d4e26a1227c1867413ce73f259f16174e43b3e75d75b508dd71b117e06749243", "T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", "T2T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", From 9ab2ba9157764ad9557524146b7b64c7fcd0b456 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 10 Jun 2024 09:22:42 +0200 Subject: [PATCH 331/626] feat(core/mercury): animated device label on homescreen/lockscreen --- core/.changelog.d/3895.added | 1 + .../ui/model_mercury/component/homescreen.rs | 263 +- tests/ui_tests/fixtures.json | 14146 ++++++++-------- 3 files changed, 7276 insertions(+), 7134 deletions(-) create mode 100644 core/.changelog.d/3895.added diff --git a/core/.changelog.d/3895.added b/core/.changelog.d/3895.added new file mode 100644 index 0000000000..c1ba65f9e6 --- /dev/null +++ b/core/.changelog.d/3895.added @@ -0,0 +1 @@ +[T3T1] Animated device label on homescreen/lockscreen diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index 99a1692b8c..ba2e05c497 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -18,8 +18,10 @@ use crate::{ use crate::ui::{ component::Label, constant::{screen, HEIGHT, WIDTH}, + lerp::Lerp, model_mercury::{ cshape, + cshape::UnlockOverlay, theme::{GREY_LIGHT, HOMESCREEN_ICON, ICON_KEY}, }, shape::{render_on_canvas, ImageBuffer, Rgb565Canvas}, @@ -41,22 +43,14 @@ const LOADER_DURATION: Duration = Duration::from_millis(2000); pub const HOMESCREEN_IMAGE_WIDTH: i16 = WIDTH; pub const HOMESCREEN_IMAGE_HEIGHT: i16 = HEIGHT; -pub const HOMESCREEN_TOIF_SIZE: i16 = 144; -fn render_default_hs<'a>(target: &mut impl Renderer<'a>) { - const OVERLAY_OFFSET: i16 = 9; - - const RADIUS: i16 = 85; - - const SPAN: i16 = 10; - - const THICKNESS: i16 = 6; - - const NUM_CIRCLES: i16 = 5; - - let area = AREA.translate(Offset::y(OVERLAY_OFFSET)); +const DEFAULT_HS_RADIUS: i16 = UnlockOverlay::RADIUS; +const DEFAULT_HS_SPAN: i16 = UnlockOverlay::SPAN; +const DEFAULT_HS_THICKNESS: i16 = 6; +const DEFAULT_HS_NUM_CIRCLES: i16 = 5; - shape::Bar::new(area) +fn render_default_hs<'a>(target: &mut impl Renderer<'a>) { + shape::Bar::new(AREA) .with_fg(theme::BG) .with_bg(theme::BG) .render(target); @@ -66,23 +60,147 @@ fn render_default_hs<'a>(target: &mut impl Renderer<'a>) { #[cfg(not(any(feature = "universal_fw", feature = "ui_debug")))] let colors = [0xEEA600, 0xB27C00, 0x775300, 0x463100, 0x2C1F00]; - for i in 0..NUM_CIRCLES { - let r = RADIUS - i * SPAN; + for i in 0..DEFAULT_HS_NUM_CIRCLES { + let r = DEFAULT_HS_RADIUS - i * DEFAULT_HS_SPAN; let fg = Color::from_u32(colors[i as usize]); let bg = theme::BG; - let thickness = THICKNESS; - shape::Circle::new(area.center(), r) + let thickness = DEFAULT_HS_THICKNESS; + shape::Circle::new(AREA.center(), r) .with_fg(fg) .with_bg(bg) .with_thickness(thickness) .render(target); } - shape::ToifImage::new(area.center(), HOMESCREEN_ICON.toif) + shape::ToifImage::new(AREA.center(), HOMESCREEN_ICON.toif) .with_align(Alignment2D::CENTER) .render(target); } +struct HideLabelAnimation { + pub timer: Stopwatch, + token: TimerToken, + animating: bool, + hidden: bool, + duration: Duration, +} +impl HideLabelAnimation { + const HIDE_AFTER: Duration = Duration::from_millis(3000); + + fn new(label_width: i16) -> Self { + Self { + timer: Stopwatch::default(), + token: TimerToken::INVALID, + animating: false, + hidden: false, + duration: Duration::from_millis((label_width as u32 * 300) / 120), + } + } + + fn is_active(&self) -> bool { + self.timer.is_running_within(self.duration) + } + + fn reset(&mut self) { + self.timer = Stopwatch::default(); + } + + fn change_dir(&mut self) { + let elapsed = self.timer.elapsed(); + + let start = self + .duration + .checked_sub(elapsed) + .and_then(|e| Instant::now().checked_sub(e)); + + if let Some(start) = start { + self.timer = Stopwatch::Running(start); + } else { + self.timer = Stopwatch::new_started(); + } + } + + fn eval(&self, label_width: i16) -> Offset { + if animation_disabled() { + return Offset::zero(); + } + + let t = self.timer.elapsed().to_millis() as f32 / 1000.0; + + let pos = if self.hidden { + pareen::constant(0.0) + .seq_ease_out( + 0.0, + easer::functions::Cubic, + self.duration.to_millis() as f32 / 1000.0, + pareen::constant(1.0), + ) + .eval(t) + } else { + pareen::constant(1.0) + .seq_ease_in( + 0.0, + easer::functions::Cubic, + self.duration.to_millis() as f32 / 1000.0, + pareen::constant(0.0), + ) + .eval(t) + }; + + Offset::x(i16::lerp(-(label_width + 12), 0, pos)) + } + + fn process_event(&mut self, ctx: &mut EventCtx, event: Event) { + if let Event::Attach(_) = event { + ctx.request_anim_frame(); + self.token = ctx.request_timer(Self::HIDE_AFTER); + } + + if let Event::Timer(token) = event { + if token == self.token && !animation_disabled() { + self.timer.start(); + ctx.request_anim_frame(); + self.animating = true; + self.hidden = false; + } + } + + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if self.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } else if self.animating { + self.animating = false; + self.hidden = !self.hidden; + self.reset(); + ctx.request_paint(); + + if !self.hidden { + self.token = ctx.request_timer(Self::HIDE_AFTER); + } + } + } + + if let Event::Touch(TouchEvent::TouchStart(_)) = event { + if !self.animating { + if self.hidden { + self.timer.start(); + self.animating = true; + ctx.request_anim_frame(); + ctx.request_paint(); + } else { + self.token = ctx.request_timer(Self::HIDE_AFTER); + } + } else if !self.hidden { + self.change_dir(); + self.hidden = true; + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + } +} + #[derive(Clone, Copy)] pub struct HomescreenNotification { pub text: TString<'static>, @@ -96,9 +214,11 @@ pub struct Homescreen { label_height: i16, notification: Option<(TString<'static>, u8)>, image: Option<BinaryData<'static>>, + bg_image: ImageBuffer<Rgb565Canvas<'static>>, hold_to_lock: bool, loader: Loader, delay: Option<TimerToken>, + label_anim: HideLabelAnimation, } pub enum HomescreenMsg { @@ -114,15 +234,28 @@ impl Homescreen { let label_width = label.map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); let label_height = label.map(|t| theme::TEXT_DEMIBOLD.text_font.visible_text_height(t)); + let image = get_homescreen_image(); + let mut buf = unwrap!(ImageBuffer::new(AREA.size()), "no image buf"); + + render_on_canvas(buf.canvas(), None, |target| { + if let Some(image) = image { + shape::JpegImage::new_image(Point::zero(), image).render(target); + } else { + render_default_hs(target); + } + }); + Self { label: Label::new(label, Alignment::Center, theme::TEXT_DEMIBOLD).vertically_centered(), label_width, label_height, notification, - image: get_homescreen_image(), + image, + bg_image: buf, hold_to_lock, loader: Loader::with_lock_icon().with_durations(LOADER_DURATION, LOADER_DURATION / 3), delay: None, + label_anim: HideLabelAnimation::new(label_width), } } @@ -218,12 +351,15 @@ impl Component for Homescreen { fn place(&mut self, bounds: Rect) -> Rect { self.loader.place(AREA.translate(LOADER_OFFSET)); self.label - .place(bounds.split_top(38).0.split_left(self.label_width + 12).0); + .place(bounds.split_top(32).0.with_width(self.label_width + 12)); bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { Self::event_usb(self, ctx, event); + + self.label_anim.process_event(ctx, event); + if self.hold_to_lock { Self::event_hold(self, ctx, event).then_some(HomescreenMsg::Dismissed) } else { @@ -239,33 +375,29 @@ impl Component for Homescreen { if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { - if let Some(image) = self.image { - if let ImageInfo::Jpeg(_) = ImageInfo::parse(image) { - shape::JpegImage::new_image(AREA.center(), image) - .with_align(Alignment2D::CENTER) - .render(target); - } - } else { - render_default_hs(target); - } + shape::RawImage::new(AREA, self.bg_image.view()).render(target); - let label_width = self - .label - .text() - .map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); + let y_offset = self.label_anim.eval(self.label_width); - let r = Rect::new(Point::new(-30, -30), Point::new(label_width + 12, 38)); - shape::Bar::new(r) - .with_bg(Color::black()) - .with_alpha(160) - .with_radius(16) - .render(target); + target.with_origin(y_offset, &|target| { + let label_width = self + .label + .text() + .map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); - self.label.render(target); + let r = Rect::new(Point::new(-30, -30), Point::new(label_width + 12, 32)); + shape::Bar::new(r) + .with_bg(Color::black()) + .with_alpha(160) + .with_radius(16) + .render(target); + + self.label.render(target); + }); if let Some(notif) = self.get_notification() { - const NOTIFICATION_HEIGHT: i16 = 34; - const NOTIFICATION_TOP: i16 = 202; + const NOTIFICATION_HEIGHT: i16 = 30; + const NOTIFICATION_TOP: i16 = 208; const NOTIFICATION_BORDER: i16 = 16; notif.text.map(|t| { @@ -290,7 +422,7 @@ impl Component for Homescreen { ); shape::Bar::new(banner) - .with_radius(16) + .with_radius(14) .with_bg(theme::ORANGE_DARK) .with_alpha(160) .render(target); @@ -351,6 +483,7 @@ pub struct Lockscreen { bootscreen: bool, coinjoin_authorized: bool, bg_image: ImageBuffer<Rgb565Canvas<'static>>, + label_anim: HideLabelAnimation, } impl Lockscreen { @@ -378,6 +511,7 @@ impl Lockscreen { bootscreen, coinjoin_authorized, bg_image: buf, + label_anim: HideLabelAnimation::new(label_width), } } } @@ -387,7 +521,7 @@ impl Component for Lockscreen { fn place(&mut self, bounds: Rect) -> Rect { self.label - .place(bounds.split_top(38).0.split_left(self.label_width + 12).0); + .place(bounds.split_top(38).0.with_width(self.label_width + 12)); bounds } @@ -406,6 +540,8 @@ impl Component for Lockscreen { } } + self.label_anim.process_event(ctx, event); + if let Event::Touch(TouchEvent::TouchEnd(_)) = event { return Some(HomescreenMsg::Dismissed); } @@ -418,22 +554,19 @@ impl Component for Lockscreen { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - const OVERLAY_RADIUS: i16 = 85; - const OVERLAY_BORDER: i16 = (AREA.height() / 2) - OVERLAY_RADIUS; - const OVERLAY_OFFSET: i16 = 9; + const OVERLAY_BORDER: i16 = (AREA.height() / 2) - DEFAULT_HS_RADIUS; let center = AREA.center(); shape::RawImage::new(AREA, self.bg_image.view()).render(target); - cshape::UnlockOverlay::new(center + Offset::y(OVERLAY_OFFSET), self.anim.eval()) - .render(target); + cshape::UnlockOverlay::new(center, self.anim.eval()).render(target); - shape::Bar::new(AREA.split_top(OVERLAY_BORDER + OVERLAY_OFFSET).0) + shape::Bar::new(AREA.split_top(OVERLAY_BORDER).0) .with_bg(Color::black()) .render(target); - shape::Bar::new(AREA.split_bottom(OVERLAY_BORDER - OVERLAY_OFFSET - 2).1) + shape::Bar::new(AREA.split_bottom(OVERLAY_BORDER - 2).1) .with_bg(Color::black()) .render(target); @@ -445,7 +578,7 @@ impl Component for Lockscreen { .with_bg(Color::black()) .render(target); - shape::ToifImage::new(center + Offset::y(OVERLAY_OFFSET), ICON_KEY.toif) + shape::ToifImage::new(center, ICON_KEY.toif) .with_align(Alignment2D::CENTER) .with_fg(GREY_LIGHT) .render(target); @@ -459,22 +592,30 @@ impl Component for Lockscreen { (None, TR::lockscreen__tap_to_unlock) }; - self.label.render(target); + let y_offset = self.label_anim.eval(self.label_width); let mut offset = 6 + self.label_height; if let Some(t) = locked { t.map_translated(|t| { offset += theme::TEXT_SUB_GREY.text_font.visible_text_height(t); + }); + } - let text_pos = Point::new(6, offset); + target.with_origin(y_offset, &|target| { + self.label.render(target); - shape::Text::new(text_pos, t) - .with_font(theme::TEXT_SUB_GREY.text_font) - .with_fg(theme::TEXT_SUB_GREY.text_color) - .render(target); - }) - }; + if let Some(t) = locked { + t.map_translated(|t| { + let text_pos = Point::new(6, offset); + + shape::Text::new(text_pos, t) + .with_font(theme::TEXT_SUB_GREY.text_font) + .with_fg(theme::TEXT_SUB_GREY.text_color) + .render(target); + }) + }; + }); tap.map_translated(|t| { offset = theme::TEXT_SUB_GREY.text_font.text_baseline(); diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 19358ef190..bf9bf85671 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15564,7083 +15564,7083 @@ }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e31de955a6a977a17084cc67ba9e7d841e313af75c0185d219d33c22925872e8", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "8417a66d8fdac2bb40dd9ca340acf4b84fd6489601df46ba68a379ce3021fce7", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "8f699765bdc1dccec23580ea4d81ea80abb9cfe6204aaec5d1aa7a1627566538", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "24fac8a71e4fcd5991e9ff9326cfafc06248c5b35e86486c63acbe4c2119d6ac", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "1ffc95cf89ec602900d014fbe0172e6e268ea581b31b2e383541d2a84c928761", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "37494c1a3e7355c060d2e7be8caa5e27bb605837687319d22368b5e9b6248558", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "466e518641433bcf023872d0c4e118ade406364b4f49cd6561e8f8bb1fae1083", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "ebcd25ca623d4a4d5cdda21b23639c2aa15c4c7de9f3fa2ed6e3fc34b151db8c", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4d8d5585d2a660cc80ed787bd817f465cadc6ffccf007ac82886443708baab65", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "169c40a04535510ff1ea7f3f9c62c178edec89ee95fa5fa2f419a13b044ff45d", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "4e3afbd0132bd66193f6a93416ca099b5654d5c704103c8bce62d33af24d0429", -"T3T1_cs_test_lock.py::test_hold_to_lock": "50786fc6b08808c23d5f495cdc1fd26e2875d43ea27e64aad57dd873ef90ea73", -"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "fdb8bd6a3e599448283dceaa4498a3172d0c60bec8c5d564ad8f39f35c87411f", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "4d7dde39879cd44ae810500ee3d78a17dfba353978fbe6fc68f752fef51c117a", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "a3ceb2aab671fbd86effe007265fde26f07ed36ac6c0cc4807061eac0b20ee60", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "dbdcaf229bdebee2be35da1bfb015892a211d9e5e71548b55504354364ccf427", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "2b134626b8107246c77234520ca231834cea65414845e007318279c7caa4fd9d", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "adb6ce2b425de6cce5ad25abdc459e9e3c36fc3f4589180c8caa78bbff2678b3", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ff2e4ea169104d3d34231963e56c64b5024ee76a78f9ebe83d500b65bed9f4cc", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "9826e90e3f4c36802c0cd8fa3c19ee7072b6536e53b9074fca524ca542b67615", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "bdcff80eef43e15e7e80eb2ee9d8d743a395388eac834732f4a2a13fe26bbd6e", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "a17781cb830474cdd1863017ba43ccddb8ee48d2774255f924424b99b95d2716", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "bdcff80eef43e15e7e80eb2ee9d8d743a395388eac834732f4a2a13fe26bbd6e", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "fcae3ea91adb0ed7d3d4c5311f690106e8d3c0f7c8d5d49c9833b5e7be4e500f", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a67d38203018dd5ae3777180568df9066501bff83bfdefe4de19b16f1a95a4d7", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "5d645807f80f60a8ec41060feb0f1a03b98bfcf6be51d9b6fce46abadadd6c5e", -"T3T1_cs_test_pin.py::test_pin_cancel": "53786682ed6efcbc1e60b6565463732fd4d5fe3f19345e0cf8ecc93f8b963eda", -"T3T1_cs_test_pin.py::test_pin_change": "941355e7ce2c8383ae87405c6cf090941e8d817b793684dc32cce8f078cd5ab2", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "8a6ebfa096c6d5cbd943aeecedecb1e2d509d09aa9fa24d8aabe564752e7cbfc", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "712cf74607e464405fc9c542a8172758326393b22be0e681548e9e544187708d", -"T3T1_cs_test_pin.py::test_pin_incorrect": "cbf00f2a53844ee9e51562ed40630a653fdac6fba48902ccedac9ac700c4f321", -"T3T1_cs_test_pin.py::test_pin_long": "c6396e0e52e157cca354b3a26f8a5662560aaa3f68d8bee0455bae2aa9f07c20", -"T3T1_cs_test_pin.py::test_pin_long_delete": "be7703ea6177573ef084aa93685e513a6d3045cedaefe538e190138dbccb1e94", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "77d6ca1e73f74f8f41a8b7830dba4d56e7e7799942dd0777a146e9c961701816", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "37ea71178c6d972cb7117394086f44b2db256e5e94491533bbbe6b299f285d11", -"T3T1_cs_test_pin.py::test_pin_setup": "ae25de879f714d686a6200446b0e1b17ed928264791d1fef7e2a5d2121bd70d9", -"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "c4d01c4db01d2af326f83d817d025cc4587e0ee486bbbf4cf5e74162d05fe0c9", -"T3T1_cs_test_pin.py::test_pin_short": "712cf74607e464405fc9c542a8172758326393b22be0e681548e9e544187708d", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "ea07b61cc605e2f0c1ac87191659d9125873d2d8b3d55c182a0981528fefb4ff", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "24f94267a3f38b1eb6451121b30b731af1766d2e7a3ad811e3a5d02a009b90fb", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "1f0d376cbc956410fee0a247d59ff0cedac84455c9226ecff93b770c3e55329d", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "eb493ebed82f777bab258d3c7aa332097af3361a8958b9657bbe89dc34f1b4ff", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5bc89b21d10a249dc37a401a02507da00c4a94d45a3a558301d15e79dd73d773", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "cda3e7dc81201cb98f782bd9a75bd63a084f2514a96ff393800995333339054b", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "af08f9c57e0313204467c2052325910540fc262b9e3dedebc1fd94017fadb154", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c14745d7a3b1da3d2047df835fc9855b3fd2b9a45495d0dc6e2e9b504ca0c2d8", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "78278c5bd47d32d219785b3a0c46aa1847a316ce668b174eaeff4749ed44581e", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d2d81332ee9d371db11d5338084619ad0bc77064737143fae76cd64236143c16", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4450227fa8e9c17bae7b1bc846969f25032720e8c33252e653cd38082d78da22", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "cac38fc39a17bc9a791d1ef484e36e8029d461deb34aad557ce3775971d5ad00", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "48bd221a35e5006f73663f6659205f16f3e8b77c33cb4426a27d15b4947c5ec4", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "0deac92396a44ebdecd195bf703af9775dee0658cc451020f19155acca56f7c3", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "98a84d89acfdc4be88d4206856716d166ac5143d9a7c9ab4400f4b70e47937f1", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "903a902d56f73dfd6a27b41cd933e45bf2515f420ddf1115c9c59ff3693ca1fb", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "338d689746907f33748bc2845da69b8ec91f6ecb4c995ebb859213ba58b91bf3", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "a470758d3590737b8d0d600a2371f5bee02c98dca92c91511028d375279bc2f7", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "2984dc89f26a0e70cde79349d29229ea913162c942f575b74fbb6984a1c2ebfe", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "bcb7645bc4d222924b4425ded261477f01f76164bf4fa66376de2d337bbb5f7c", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9e20442ab0e637f28dfa550552eb0100420a80ffb73571eaf1b2108d8f615085", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f8a3d5f95eccff6628eacdb6385af702eb80fe39beaa08658f2f71aa740a4025", -"T3T1_de_test_lock.py::test_hold_to_lock": "a3d56d03ebb4eb9e7be654d6771f42b241a31325f9af4bb9cf795d7700458f67", -"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "e6903cc676f6727c02a8d28c44bc1a74e8e5c54a77c50d1b2ba4b32264bb1fff", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "91aac467a55bf577d4efc6921d17a843c5e996d8076786dd4c2c379d57eeb353", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "3be73ec91ad1a5e0c91ed7f10bc695743f6c800e0bba5c6db5ef2df2465f8078", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "5f6e87efc424f5ad4c4d19f8dd1fc91bfd69d05700a7518195650b9d31a72bf5", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "0f89a2b8e1ceb9637bbbb29947e989168b556ca5669f4056736c0a97d3d8a57b", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "111874d79730d7112bca341f4eb8a9393da8936eaa8fd06107605694ca1f9300", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "d1dbf1bfaa8ff375c5dfb2b189734f8e16d074b6ca2684040ba301dc97009aeb", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "37e54694cd8474f69709e322dad28bd6dfdb7afbf09826e97fc659d149d7dab0", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "84e15668073d94476d95208a86a05b20f6d627547a76bc334ec2bd561fd6f934", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "f1e3b053df12915161fde21e5b26d6f307204e8077f2ef17b69f720f0bb282fa", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "84e15668073d94476d95208a86a05b20f6d627547a76bc334ec2bd561fd6f934", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "e128d29266b699e0f732171e5e877574a30aab9d3badc000a4a752936f289c91", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "7ef593ebf33caf92fab7eff37a67c100083f29ee3e16f08a75b311b4542d7d84", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "1a2336c6e8c06abd08dd377a7fc0c5863d521a57717bf5cfb8c0d3fdf40754c0", -"T3T1_de_test_pin.py::test_pin_cancel": "17a2eb9b4ad904e86b6775449d448f100a35d82a809cfd7d444ae856dbc1a341", -"T3T1_de_test_pin.py::test_pin_change": "9fc491b9dc26a855961a5070f9d6ba4f7981a659a309a2c41ad7a81294ff1671", -"T3T1_de_test_pin.py::test_pin_delete_hold": "f25c3d9acac7d31358f9cb65bce5ba770c9e954f1eb5965f729fd3be00f05a2d", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "e2e64aadf3b548235b949c080fbb16656c3f4e3a5e68502f2c48a5a8869de37b", -"T3T1_de_test_pin.py::test_pin_incorrect": "e7e018e0e57fc036b3c2efde80b451fec37a3d4a6d5a96c4ae3bd5ce33a06cce", -"T3T1_de_test_pin.py::test_pin_long": "2be9c6d3ec92f1ff748f5c3c4f608791499b7965b153eab9603df8a11e871a2e", -"T3T1_de_test_pin.py::test_pin_long_delete": "ed830608f38b53541639c8bab958f156439184b4cd228fc09a29fdbeee985f7e", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "13f6e9ae3cceabda04b61f920a4b2e368527098d39e4b526909b50ca43d62ba1", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "64eef54266097874b50638b7f6cf2f6d2217b1eeaa3b3b4e0738c1b2daf1ae43", -"T3T1_de_test_pin.py::test_pin_setup": "e3ab7e7b1e26c88268d20c9fcca3d5f7eee032eb1f020c0319c30093b6c11386", -"T3T1_de_test_pin.py::test_pin_setup_mismatch": "572ad507f54580580f8e6a93620d72b436b62c2dde1cdbece1f88334576e0b9c", -"T3T1_de_test_pin.py::test_pin_short": "e2e64aadf3b548235b949c080fbb16656c3f4e3a5e68502f2c48a5a8869de37b", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "132297f7399934eba5fdc59d90df5d0bcda54b18d8ab9ef68d6d06f614bacd88", -"T3T1_de_test_pin.py::test_wipe_code_setup": "b78c6861df5eb380b639dc231954cd8153cc15b4899ae110bbada7ac8107cc61", -"T3T1_de_test_recovery.py::test_recovery_bip39": "89b5435f7232f21fa91f7e91ef943d01b4fb03a44828119f56898c9971dddc1c", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "ebae148d586480c7492759a2379bd1b10f9b0ee88690733bc7917f4e1e313579", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "af2357f73e2204661bdd5de363ee676f856438430222421e1d7981a9fdd0ebe8", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "44687380b0f7ab9dda85f9f98621037f913e84f24246a8f6d9da8ea48664acf8", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "0c901427c84f48380510a10a3282e1fc54cff000c54e2c55f88b011ea4204575", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "36b11f85b939d9d1160af19e962cc7cb5485cfeaf1ff383789ec6bdb09ed70e5", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "94070631fe852ca1997d99fdf81ca56fddbb1a8a9257d6c0325972b4c408b2ef", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0ff2eb77642ef360c7b4819c86989e53977139653b41aed7f19ccc1755dd9670", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9e42104286a4cd98733f75cd920b285042638a40bec786657adf41594fe8ccb2", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "bbdf9ed51855851bee3076d93a0aff8f32ea76a463f737f14c36b04b06208793", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "4325831d8c838ef9f3f2af83e071eb4626a740c721a2a05687a454867251fc48", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "1c2222ef34a3efbf1d75444734bcf2b9ef92fb7a71230413a00cfc97870c3855", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f2754938aab50aa44ad5d847b12d29baa516e51fd4b685022d4649988ed31352", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d8968a8ea8217801b9d2f37ff0cda748bb36af5c0643e11d074b218947d4a848", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "bd856a9fac7127aaec65a1dbd0e0168308b22d97973ed56c3e3337e12098dc7f", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "8b6ffc881484240f7233e55e3365daa13fb96e15dc3d96fed087e7d673a1790e", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "0a8787babcdb9165229cd17a2d7f76aaae4df698fb11b041d6f20593b7569013", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "47b0f2bcf705596a5f944e990ff68c31ccd3957370afe0da9d86ec7e47ea09ab", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "58e46a2c7499f88907b63c8ba570aa4915e3745a9f41446090e16e8bbd6a1b25", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9a5d4ef2e0839c35937bfef23fbb962e958d7c70c1cb4137bc540fabbe291695", -"T3T1_en_test_lock.py::test_hold_to_lock": "88af05723c07bf2d59b4f0a58bdb2adc559bdfd2fdf7614a491a2f8d3b50138e", -"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "04fe9bf02faa4b261a2e2c105de6130bd0bdc85ea143b520c677aad6b50421d8", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2f35a9daaebd8a78a57987cb4f556f33e0ad43881b22410d8af7547887b779af", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "a9ccd9c60dbb8ce2084be680627baad4daa8ba2ae02675f605b1884a210089f4", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "4aeaa0254df4513c2c6a823b1137b77ce61ca8dacfcf8c92804cb4970cc65b3a", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "ab8e2dc201933f0e8583de64981e527dc3305257c7ca630e8dfec797f0466ce7", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "549e1c64f6b8437753e5f4c47bfdacf40d150515344eb5419307ba970761e4db", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "106cdb7a55149eecf0aca2a51d4a2b9db02ba3af39cc7961678fe4cac1e2b905", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "042e0e40ab62804f9a05075089ecd72ed1a61de1d010ae903b123a13ff53dc42", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "c7af1f9093271f3f8ad6259b0a32737e4bd7c64f438cbe68714737d6fad46141", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "0846675ea5c074ba842dec95be4c4c2bee7505e3d6cdba64d12a7d90c94638c9", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "c7af1f9093271f3f8ad6259b0a32737e4bd7c64f438cbe68714737d6fad46141", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b6d5f87b87d21d260f54e48530b87bc98991889cdf50c37ce49dfa6a6e6518f4", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "68e6e3eae0794b66f3ec627b9a77678e45194bd95860d2b4a97d86f01645a0d5", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "60c0141a187af6bf093c2e0379b597aed744bba07d26e7a7c7b7c17d6590e4de", -"T3T1_en_test_pin.py::test_pin_cancel": "c387a29daa533698d520155eae09c9f5b070cbacd7dec7f61de2afc230c276c2", -"T3T1_en_test_pin.py::test_pin_change": "7a6d483ee27f529c351ccaf252684b942defb84bf6151b10f4ef8e1fb96ba5b3", -"T3T1_en_test_pin.py::test_pin_delete_hold": "5cf0981557cfd75c52cb366816754100540f845468d3d75a5f4157b7229eded7", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "4b36dbf41c1cf1e1c6cc44b317b72e7c38b6928ba78212c7a79475bfc84f8cb0", -"T3T1_en_test_pin.py::test_pin_incorrect": "3fda14e9177f9105765ce1b487de9fe668707dec46424b2674c897666725916d", -"T3T1_en_test_pin.py::test_pin_long": "1335ceb5cba5643bb17889975e2195b0ebe5a95e29a7c2820083162901c049b0", -"T3T1_en_test_pin.py::test_pin_long_delete": "3799b5eada2e5ecf888b2b91e6eaf06de6fa92711e2f753afcca5030617be660", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "5205be3fe5c9eda4189797231fcdd21edefcb5309900a355c4c13bb8fbf19bb1", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "8df4e2947f341cd220e9b91e738e36e87c5ab3974ef3c31d021a58b5ca28f1b2", -"T3T1_en_test_pin.py::test_pin_setup": "754f8cfe6dd77b4e2ed910e0523b56a5ee9df147a7134294d56d51d9d3f8dc83", -"T3T1_en_test_pin.py::test_pin_setup_mismatch": "7a5acd0b7d27d5f29e6bf6b173bec4a5a716846721adf5e606983e0a63611918", -"T3T1_en_test_pin.py::test_pin_short": "4b36dbf41c1cf1e1c6cc44b317b72e7c38b6928ba78212c7a79475bfc84f8cb0", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "a39c332f87e1fe09a3e2fa16dff5dd0147fc80109e107df95367d9d9bd547ce4", -"T3T1_en_test_pin.py::test_wipe_code_setup": "f7224b73874d0e97a0586349bce4214373a16dbe1008294d96b35802fa69b9f5", -"T3T1_en_test_recovery.py::test_recovery_bip39": "b25bd7eb37e73404fa5c566618bd3cb0d1ea93671e7898eadb8b7b9f03830551", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "6229d06b80b7fac7a728e4453aeb006ca36607390c24928a8713642715a49ddd", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "858c7c5bab86f001608a0a150ee97e75614c0d4c75b34efc2af173a0b5fe5d4a", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "6e2d6784063dfc3cfc31fee60625969c51428d2fbaf45c634cdec943d9bb89d4", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "881c109a74e5125a96cff6770e849b523b038d5cc451150babd7c01f85c28277", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a8820aed37149e18f340fce946d92b87c95bdf8b9c94057d2cf371a3be41bf3a", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0a2ba7129edd4cf98692cdefa56c5207c7af0f584528d5988fcec4d887cc63f8", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "fbd88c2eadf6c8b775450f5c617abd83af1339856035b0259a98ae7614e6fccd", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c480806c387d0cca7507542c31aea0a762afbcb36a58eb887fc945d88d8b13b1", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2f0852de0eecd6de352803445316ca480f262d27da7a1415784a21a795bb4a7e", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e03e9287d538b49e04ab15e74fdfebe1227a34a7861ef3f3b3ce4f8df043c66b", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "445d4ce1f46151e25d1b6c09fae2ac9e9c63eaa1165d63e605bfb04b294b39ed", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "8e9a487ccfb272bc5599240ab18658df02cb120d3f2868eec28cde9e13fe4779", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "06093c81d8e93ed2862915b84f92b799d8fc6d5de2977b3e65ccda8efe909d88", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "615085481599bb96ed9096ed87a3443f03650916181804450aa7248d60bc614c", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "e75d6ea160841e94e153730283281feb54cc2c34efafbf445a82a79c99afae53", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "ac2c17cdf7b800c1de2429673af361eed6a26b2745bbffb5603efb1e54a804a0", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "0724cf148cbbad5c391f4e966bdb222ae43f2879dc33036a796d56f477b6f5e5", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ab1ffe9bbf721d55ec2cd6a6f674dc19abab55c6f328fc1084714d93fb60beb8", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "29d7642bf1893d6a74269099d9645dc16ee8dc2113059a506b0ea494b9b51572", -"T3T1_es_test_lock.py::test_hold_to_lock": "06f14f257c7e8b6fcc179741eb9034fd570bd269c6fcb1b2855d3c289b4ce9cc", -"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "59518f6e9fa953c405467afc29c6758e63644b6c87077c05da5d2302aabe8844", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "da27fff7ab24769defda45bb284295058dc86ba8379dd53fa0ac34ae8f6e9c9b", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "f4719374c7e9853ee0ce24c062b3f9a06222d753fd60f03804223f791031c526", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "b0143063f520f4cbe04419934c99116f57b5b478a69bb983c8e8da4a2032a62d", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "f46afd3dabfd82c3551e57dad67159c626d0652011c79a1acfed30a92c286608", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "8f460ad047f0f126ea6952c0022451d9811f249955ff5002a57a70235856a919", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "53393c3a8f882359e4de803a4d0fbc16a544eed9bc33e9227d95c043d4e3e625", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "92aa10590eb26ff94637f664d5ef9c209d3a5bf432d8098f6410355b23504e77", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "38bda90319ddc1809bba620abd6fbaede809c50a5daa474315fc4ca157ea7604", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "cb299bf23443f77e909865fc938ed58647bcb5c2bf2366818e1ae8f0d90f743f", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "38bda90319ddc1809bba620abd6fbaede809c50a5daa474315fc4ca157ea7604", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "8f7581b8ca411be76ee439d6c7fd8b0eae27fe8f1018dcb5ef026f11ac98ec67", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "79bdca257097161f797779eab8e0b8a9a7ff59752b17f1213d2671f566e2488c", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "82258a3534d8fd363ab9a3354534f2eaf4921b638d82689cc074fd32f1d95826", -"T3T1_es_test_pin.py::test_pin_cancel": "626c049494964aa9317a9829bd5f6a164f322ca42f9d6e6be751bb38d6e82fa7", -"T3T1_es_test_pin.py::test_pin_change": "d97132ab2e074c6847d8f44b8add952b0bfc265a1cca309aec3916da62f3941b", -"T3T1_es_test_pin.py::test_pin_delete_hold": "b5e828994996f0eab5ed84f559e7f8f8ab0e652d6520a92db64c673a350e5c06", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "21df29e41aa696d5995ec776ec46f9bb8cfa7167ce84ba47de26866ed9d332f8", -"T3T1_es_test_pin.py::test_pin_incorrect": "fcfed0cf1fbec87540e9c3148497d03151c32f1c1176be007445e560a3cf218f", -"T3T1_es_test_pin.py::test_pin_long": "789a88b61c81847d2c4f2d8ec4fd031a65b152496bc472b6923899fcc2ad423b", -"T3T1_es_test_pin.py::test_pin_long_delete": "683d7ec914a34b896c297b5412efbc19b79b377d17fc01d5d2dd1785413aabec", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "82a14eb1d49cb3ba0dd5570a7adeaf3c056d8b1069b35011f36340d2f93ecbc6", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "ad6b67d040b667228fbcfb82b325cc37636bc814b68cdfd25ef6aff3edf0c0d2", -"T3T1_es_test_pin.py::test_pin_setup": "78c1fd03f74f93c129521e3670cb4ac15fbef82a4f6ca4055f384ba8b71fa20e", -"T3T1_es_test_pin.py::test_pin_setup_mismatch": "0fa95c12686fa6cdf648042dee30da094891ffa10fe9155769c0f5a2f0ecfc26", -"T3T1_es_test_pin.py::test_pin_short": "21df29e41aa696d5995ec776ec46f9bb8cfa7167ce84ba47de26866ed9d332f8", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "ddb1e514395abed6cdf96f9b2acd556a70192662ddeeaa88900a45acd2d461a5", -"T3T1_es_test_pin.py::test_wipe_code_setup": "e6b53d8fb38b583a7ded503f35bddf710122a8d442a8b1a9b0904d7ad9d3cb2e", -"T3T1_es_test_recovery.py::test_recovery_bip39": "f9c574343b8012ef278a609951c319f1a09ebab1325b847268e86a716ee9d4ae", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "af184999b7de61d185b7d8c703ad908180389bbbf58769c823da9de689f2889f", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "beb45318099e4644fe5d2032c34426451cf0a747fecf87bce51b458ced04e7b9", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "328a9e10a5f8fbf192be7d309305226ef44aa871d712a70fd2e992308c4b86bf", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "bf7beed81084b3f4f7f3d1719c9d3e6cb68f75ea5df914eba865568f951cf011", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "397909ed90555e383468cc336a6e081b017209d7775df553015420b2a46e03fa", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8faadd842742ed27e0135a88910a8135ab426b859c323f17d9ecf7ebe899323c", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "9521d9fe46b4d40045b6e4e0fe20bba2e54edf978e59c19a6e2b4857a3af1c5c", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "31f207a25f96a2fd24108e5a5710a54399b72237699396e83394b7a2dab33a13", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "35d318e556ab59bf81c160dbe2ef576482e47e55cacd8a51062009c8ad150d37", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8f94a2e6567890744808094a771228ac5250ee120802e33da8952de7f39d53b", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "172164fbe70d9101329c444e87e73e49ae974ddac150706dbdf51227e6c15bb4", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "0b476693cd615e18c97ee4460b071408662cc33152ab857d0144f6088ffed7b7", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "54d94aa7510524e1756db967bed635fc165a0f3c922e6564ebf3b247c2ac59bd", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "ae4181f65e1bd92716ae644d91dda666662a834ae6b38cd31c1b51c1fb75931d", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "9634fd092b41ee84602d78e0fbcdbaf19e8584293844fa40db63e91538b8da44", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "1f452f84f894ab768912c57dce4351c5395279cdc6136ccfe211f4ef6bf810ca", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "ecf4fd30fc8a87da87f80b46a44781234dcf4b635f24d6f7c2ede07995525563", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b70dd73201ced9e625d67b6ea30f5825dc98e17c9911296582dd6659167e1bd1", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0099953cf51619c4440e806af15f180148700ea3a8efc7e4afc728c68e7860a5", -"T3T1_fr_test_lock.py::test_hold_to_lock": "815ec9e22c162f9a75c5d56d093d78aae9c71d0bf77d3eaac1ac642bad097dca", -"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "147911b8c6ae46898131ff069328b4a7f364a0c6770b9b589027092da1d6bd5d", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "10f4c4c13033898c22773d8d571eea299c085887cf9ff4644b37a5de29fb2210", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "78b1fdbbdef6afe6036527cb5a1be3e8210fc4fc405bf64d3ed42c208966573d", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "903ddbe3129880b7d14fb2e8b8f0695185d84314cec7b549015566848018404e", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "71983b2ddc9a36399bb5e1f9e3de2ecccd537145bf5e4681fe7ab7feec62849a", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "55bc43c28a1cf012c1494b7c02b6044e2df5e4ac38f97e7ffb86c50de10dc9ed", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "64ec60cb027f39856a809c38a6a5e8e6c4611bd6ce6020fdb27a1349e62c3340", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "925d63b0eb8d677bfd04ab283ec2ee084238d36c6da5627366af9be105a6a73b", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "712fc317e74c19b892a769a346e54e1f81214f6860b3fd498bec043d034215c5", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "3d9327d4930aa014a18d7c32034dcc1a3a461e08c2a062c4c40daebee1d0fff9", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "712fc317e74c19b892a769a346e54e1f81214f6860b3fd498bec043d034215c5", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "6adde64dffd1fd507aa7d33c8cdddd71634130a211c05638020bb9ddd43ca29a", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f0862f1cd39fa608c5618383656f3758bb16da253953a7f811873562281f0e71", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f33a87c14365dcad1d786c8d7b9c2b53e4e1d5f0cbf7d911cb12cfc0fe06a4a0", -"T3T1_fr_test_pin.py::test_pin_cancel": "e5f845ba0df3a595721108eed4a2251c07b5196123afb4d00506e7144a3768b0", -"T3T1_fr_test_pin.py::test_pin_change": "4873d8491a9529d5f84cc42de233cb1ceeba5614be170afcb16dd7add615ecdd", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "7b3158ec6361dee9a42486e2fccbccddfc75fd28f1f20e8d2665abbabef3cb6b", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "138e3f92033a1c704e3ec739c1e2d50dae453542a24dc2f83291a2bab9dca25e", -"T3T1_fr_test_pin.py::test_pin_incorrect": "6564a79de88f03f3ed0bcf9b20d0e3d6cb4bb6533d5f8119eb6ce2fb145a2587", -"T3T1_fr_test_pin.py::test_pin_long": "7295a91fc5e570727cecfe4194087ab496bfe97f5ceedb6e51a91de6fbdbd7a1", -"T3T1_fr_test_pin.py::test_pin_long_delete": "f7ee100e89b53bdbc78603cbefaaa66aec83fd59d8ae06d7672b5f7c1ba68815", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "8baed933f2cb94ce4118752a9b54e1c572a2b20af65f12eed10481aff4f519fa", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "5c4153168884de0dfb4baf53a7a5a737927fafe3c2a1d38aeb48b3f6f119c4f2", -"T3T1_fr_test_pin.py::test_pin_setup": "ed8c79ca55bce6ec3b6174017c0fef812546d87c0b5f901885253ce91e69f2d3", -"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "09b64bad3cb7d3109e86c4e9349bcc58b8b4cbbbc175005b01d5fe37017bd387", -"T3T1_fr_test_pin.py::test_pin_short": "138e3f92033a1c704e3ec739c1e2d50dae453542a24dc2f83291a2bab9dca25e", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "7084ea2e96cc1dcf63d0e15e49be2cba186287b4d60a12a5c645ca237827883c", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "b3b6197d81868a66d6953015572d5dd454ecd4606b48f77bc7569319750184cc", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "e2ac9cbc7dbbedec8b45e9772454b7cec74e668948eab53b856f639d916ca16c", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "5073f71f15b68d3cfb26fbb7f22d23205616fd65cb98d170b7e065cf259a1a16", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "036e3654e56696cffd2e5d56822f8675943896dcbf96829d67a57255c469a83f", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c9098032d19e33940eea57cf41134d488e8a4d129440bc9f06c87fc6f381c00b", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "a1583d1399aae68d3a2354541cf4d31c55e88fdfd70f7464c1a6b6e78b8275e6", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0251b3338cf2f22bbecd503e99fa0237c08595dbfea11fbf44805f463bc0d1d7", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "e0d48917088e5b22e5df72ee226f595addc68589a46008ae944606b2b7e9d095", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4982a23230f955f121f9fdaa0f4695a776d636165ffc83b7c8c4ddc70b288a6b", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5c7a2d88ffa5bc215dc419100dac0de6c3c264ac97d057807143d8c4855b2720" +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "da92603f608e110231d6aceb2fe496bd83acf16a11a718d883d9cabf96afe743", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "c902a6d745ccb04f79308dc7e3b4b4460c6d3be6f6f74f1c57c5df3b46f5a88c", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "88889bc3869f56415f27cc7f1eecf927c1467e4d0f6c61c93cd1f3c0464e5af0", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "24533f792f4ef0610ae68636b099af89820eccf81c40ad69c3bade2490b7e5b6", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "f4e1d439f39e72f43d5839352e31fec233d49ee51eb9d00a664405bb82e23a16", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "99990d9d30d24be6f6ace6f376f0639a634f34039f359efd60c0dc22b5e7057f", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "930757ee48edbf3ac068bf150dfa43ec698e87c491f0820dbf14ae04b154ce6b", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "22c2a28bdb0915fd525525b5620582892c3fcfdc404295cbf3134202055254c8", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2739033835f6b16d30d997f9ab5ed250f2cb9fc54a63b8bdd0e739cf86ec0aa0", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "504e8853b44a2eb9a4140df26bd8f5f5a068de57f509c9c9c877b2cbbc247724", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9bab475f87da1eb909f4c643df6072be930be1cbf68216b077d4c97cba66cd7c", +"T3T1_cs_test_lock.py::test_hold_to_lock": "7b338d98b53590d9504072c6eda96c93410d496f10cc5cbe88158ed59aebbe79", +"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "0196b595b39d7e4633df61d6e4651b1152d5606f0a538d394589bb672a01abf7", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "6d467d6c4e7ce5dc647dd0589b46e8ff12f242e8b2f0132ede8f18ff4f53d899", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "1115569fa6ddd3804f6bfd3b05ddbbff6bc0545941d6b4a587adac948fa63f02", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "a0ee2acba98d415588ee045be2d082ecf67058702b610d397cc063a797988aca", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "731299eaf3f48b8947af923205eb64fac708a16d12c96389a0c658f4b1bbb988", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "b9e184782262ab17c52695662f2e16717104d38cbf665a80ec1793da90c986de", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "429e3e796394c53b60950eaed4757423824845734093a03e1b75411f421e82f3", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ddde6836334ed919bfcd826b590e7c043d0b12ed017d209b470470fde5aaf74f", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "e6dbc784955d366d4c5a6555226f5f8513e9a45c19eba03a5ec6e6e76f3f61bc", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "c6b0aa5562fb14c19f1cc0116f7c5aa5ac5c2bd07e0bca20429c62471e37ad9e", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "e6dbc784955d366d4c5a6555226f5f8513e9a45c19eba03a5ec6e6e76f3f61bc", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b8ef02ee5d4623b8e5793ad88947025005d4df68154628cf0969f0f3a34b470d", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a8a16e00d8825b91c14937c57c4af2d68063118e061f9c165d9c97834d8136bd", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "cd188c8eb6b45d7d9f74806b1e788a4a6e2e7cafe51371ae062ae2fc56c89f4a", +"T3T1_cs_test_pin.py::test_pin_cancel": "4ee6a51cd2654a2216b196b72d06ba50fe0f478b85054afc83c8e38734f5978a", +"T3T1_cs_test_pin.py::test_pin_change": "935d035ab81cad2b99fe0dec117415c2d47a5439ea39040301f0317148e3f07b", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "09ad78aeeea53f107129df4a66bea341c7f86e42864f34d155f650a0791856f0", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "b34882a24c8d88a6ea0e1e86369800f79a618d4a15dece65b4ee43da1c3be584", +"T3T1_cs_test_pin.py::test_pin_incorrect": "fe8aab96b5c7bfb001b16816309b6cf55327f6c5f26c5ae34b6e69cc26ecb57c", +"T3T1_cs_test_pin.py::test_pin_long": "73a5439627302c271458bb3affe2e2b5ff67b199833218ad7434c063b3c4720f", +"T3T1_cs_test_pin.py::test_pin_long_delete": "98b65791376079733017e6611e63488465be0ebea1a58169f93c18ee6b0d97e6", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "1d82d34741b9224046ae0eefe829ac78d405d450e87574684c5ba4b6419b509f", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "3a2dc7c84d141e3e4dd933b76acec6acf67b5f3ed84b5b89f423f0403da9176e", +"T3T1_cs_test_pin.py::test_pin_setup": "e08f7679828398799951fc630733f3819384cdf48c901a01dfbf8ee39952fba1", +"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "5f67e609797e18ce9e95a84948934e81bb109d045b0f0a14ad86cd686eabe2e6", +"T3T1_cs_test_pin.py::test_pin_short": "b34882a24c8d88a6ea0e1e86369800f79a618d4a15dece65b4ee43da1c3be584", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "e86a5f40ae80473fd44ecffbda037c8523c803a0e451d79727e4854ae5b5ed24", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "bab8ea4e644ad338e02e28eb5c00baaed3a944717ca97e79dd08ee76d087f8d4", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "3b080ccae2278363e89a2ee7e2388afbd5f4fed1aedd7e5631f26ddda182492e", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "e27c0d45b5bb798ec298fc90cb8d392aed55015fd14d58c47836b4fa2680a424", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "98a75a543282faba207104dcc59560c06b001a194ab2d1eeb9eef23b01c1e5ee", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "1e92bf96cd88bc1057d7c7e9cc0eef49f5c0093ee6fc108d06151e21d02e339d", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "47043d81cd313389209e574d4ca119b9947da7c95a4456424558becbaab74b20", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2d500400d572a6e637b585f433dd7237380a58de3d0db70ff1c0861ba36c1199", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5cf3ad879bbe85b5d6a9cda4314475b0bf0fa1b84a3c96e3a83f11c2965eb674", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "093148c5af372126f3474f05e0bafffa64cb55f25b12d84eede24821714e2a8f", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6a0d9109a5bc4d6a989d891fbe8caab6dd6db4f905d07441fc105036368de037", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "679e5b9a0f2cbf4536e4ab704a8a29807fd76edb9ffd6b4335e41857f422921b", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "6f3091fcaa6d140e56a73a1c06e80f55b698d2a48bc9a70ce2e19f579ff323bd", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "3ea38dd96b13c0ef5dac13e25e96c9b6073e56728ff6ab7fc76b12af9527eb61", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "65d6e99a5f62b2c078b72093c8510726dccf6b8c9e36ec241ceb923f7f044568", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "6afffec0f830e84b9d170418e3899aa5ec10443589933adfb447d4e7ddf6bad7", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "18bbf07028015fb4b206e17e26f4682471cb12ec798e3a6eff4b9b41d91c204b", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "9f0145481b88ada2eed41960d53d1dc8d20510a58782e696312ec6be1a973276", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "30cc429769829e090c3c3680cf5e6fc83d6308ccd93216ea9051bf314c53a276", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "fa384b2e0e0a5a84cec1bdbd3ec5636cb24554ce98fcae8fb9d6837c655eedab", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c67aed55635b943f14cb6e2bdb291a16fc591cd1e34a8f2b4f379fa72cd04a13", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1f949b34846bc82b4d0cfec0e5d72892e5dbca757dbcda47e83b1a286aad9057", +"T3T1_de_test_lock.py::test_hold_to_lock": "ce28d0b35169318566d0fa0c5d67b774cf1eaa8be251af72f5aaed3fd4e9751f", +"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "a33bc181fde1c0ac16b38a273108fccdfe6b0efd8d9bfc1c692da7aca92ce8f5", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "8bdace586fc8b201bcace67c994b4eafd638f3e32f5409f60a58ab88a242ee2f", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "76704bf2037ca24df1906472035c620265545e1c4092db4831e71cdbe386fd35", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "d01729e9cb57668d222b5c100ed4675c5740bb62261ac7e8ce1f7edada9cb78f", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "5e714ba99cf9b27fb45e3746ccbe203f3612c7089ba69e1bc95520f3520577bc", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "d4445b5ddc5a0a06af2d75395e49ea3f02915b3ce5a39e6f2aee08e7d0766a37", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5ec52eb6965f161c6f7f4690c7a9edad2e1887c48f19d8d8b7e96c15be5fefa5", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "30188ec04ea045e992fa775cd284c089ac52b221868a0358af0815daf3772a6c", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "9fe557e73e62662910e678680aab13aebdd47835ec39177dab94b897cbd84ea8", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "095dd0acd98e1bc3d045aab7d5ffba3300227539eb91e5d0aa7990d22d19504d", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "9fe557e73e62662910e678680aab13aebdd47835ec39177dab94b897cbd84ea8", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "456fe823f25dfdf03de7893efc80d5fc63576b2a8b689b230b143a10f339fbee", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "63ad9100c6f42d85f5318d7c8f514cc72eea0311c39cce71f9aa90aab8efec10", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f39f2f6e2271f239847f5c38fb5dcd6bf06ca9d9707f6761fd62c9783f082bbf", +"T3T1_de_test_pin.py::test_pin_cancel": "bb5c60fc4d9d8132a975c97ec4b3954cdf238c12e9130328655a8e35fe0e51f8", +"T3T1_de_test_pin.py::test_pin_change": "e6c56454b8b8e9330418cf6d7951fdd444c94be9a77d09b46b84d870b0e6518f", +"T3T1_de_test_pin.py::test_pin_delete_hold": "496523a2f5fd6536052e60008dbe11d296ee48608c30f5952f105cf6da1f63c8", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "28bddbbc87f28d5e43c6562eea0941258b133036d47826780d971f151a85ac78", +"T3T1_de_test_pin.py::test_pin_incorrect": "b2afced7f3a7a93bd7479619798c5e88f697249bf8d6a4b555255fbb7b71542f", +"T3T1_de_test_pin.py::test_pin_long": "c8b9d6568b0b5b16c1b8a319c80d31d21c0e22de20cb5ee89c8143d1e85e3b57", +"T3T1_de_test_pin.py::test_pin_long_delete": "57872ca36b1ead605ee39c5469216e050e1a81f847f27bf3e52426ee35ca4acf", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "ccdc2c5ede7d743cdd2b54bc0716912db68b5ac03f1264ee59e27c25536d846d", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "aa3c6996a20424079542d11213ff19bf7800b36f4465a3fa346d41b729901a91", +"T3T1_de_test_pin.py::test_pin_setup": "6f1fab7b8697da7e69043b9f2deea251ce7ec9e339ba410e12e5dadf982b02a2", +"T3T1_de_test_pin.py::test_pin_setup_mismatch": "c547631c68ff8743f4ccd55c80a2843ff481053ab24e5c0065ea3bd586af69e5", +"T3T1_de_test_pin.py::test_pin_short": "28bddbbc87f28d5e43c6562eea0941258b133036d47826780d971f151a85ac78", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "e5f4c23f0dda841e325ed182298e7105b96d36df1523cb6c0fc3c0c0a5084e15", +"T3T1_de_test_pin.py::test_wipe_code_setup": "0aad092b4268dd541ee676bdb162a242965a3d6109f00404c14d6b6eed8c0d48", +"T3T1_de_test_recovery.py::test_recovery_bip39": "fc8cc7dcbd71ae830fc89e21f239b22bb3b6d6efdcd73a3f3f01f02f44f18a85", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "9e41a09be2d4670fdccc0f0ad71c598c1a42f0d6c73c9d9574e42ffc713fe228", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "18b33a025bf8428584de0909a47896fa3b4eb5d759f903e3c67eac4e6c02d147", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "6320981b794bdaa7fb5a5ef74363b610a6dba3a1a87423dd51541c80d807e35b", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "f0da6ba481118eb41fc5a88592b081fdea68618f415af72f1d2f097fdae317c1", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d71c2e9a51093222b8da2509cc8595bcacd108253a316a08697f5a134301f101", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1bbd3614b55e6b1b39d5d39aa94c8960c037c61be5a7bb3152bada8c8fbc8529", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "2ceb51a0c077326c8413296c410b6889c8d0634ebde2a83af387076963327e26", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "7e2faa42321cd094c0a48a9bc5eb38f43b2deac7bbd5461e3e6198de5a9b4c08", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d69fa223918427ecd7aba0583ed3ccfc28af6547257b3f32fe755bdebe59657d", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a85ae2f7caf40307ea02e29baa623d24f0b26eb5ffb75585abd0cc0e0b7f6cbe", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "7b8d2a779d1ad13c0cdcb752d4dc02373bca5a8b21a64e0d9508b9a5a573d981", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "8330513aed8d53383656ffbc8e7c146a0b66e90ae7f15b82fe9f6e2671059c0d", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "a85f229c568f96fb109a5ec57903a08be5a829427bb81d09e64deab57544fb5f", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "4fd6c65379b53d08a3c07b2aeba26a9b82bf7f271666fd0b010acb31f8f28439", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "37f4152727160d9762047ade9bae357c7240cde02b68b7a0defbd0e458815674", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "02695fe4ac2725ce107299add60d4ceed7681df5a350b6e258a7ec63fe7532e5", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8116419ee28266f0184b41e715ee2b64b9915fc5c79de66deecd5d7f66105eb9", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "64560da03fd1ab235ce8ae68d07d3c317888b8c2dcdd9279592ba48a91b69220", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "bb4137f567ed0d792b7af1711738dad165698640fe1754ef7aa11ae0b033d94a", +"T3T1_en_test_lock.py::test_hold_to_lock": "ab70110423055f79ec5b37596c1eeb9fbd5051bf9cb42435a0f6882154a5747b", +"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "45b7d15ee8c8741d65803aa7e14f7beed2ceb25fdc928c77009f303e5f62758a", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "6d6d745741b4b9c2cf3ce58b3dcab21cc4c7a739b1d5b71237709831558a3722", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "91d1336cfb87c3fa3c967cda9ee34a4a358f6b05c5b120f8bf9750736ffd1426", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "bea7a7fd80172c0096163098c1991776a3a1993dc491de13b6ae591df6a78562", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "49555db52f381dbff6d2e7b5d03b018fda9279c290d3c265945608d6d9d5e2ec", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "af3e02bc60b713391e65a1e2b0adbb9052815df90c8109ecbe81e34220674de7", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ebda2abe0f82e0b29e90a83d40175b5ca157f55e62ef9b6a1eecb1c38035c041", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "50297b16dc76ef5c17ea212e45e1bd7a582e970f0fb4d0434ee12b3e18da6912", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "f41e9108142fe81156ee0d04f9cc1e4e4a839e1375956d66f74dd439886c8c11", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4539be2dba47390d5f6c7158dddb74a8a853df087808e5f0413078a7885a07a0", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "f41e9108142fe81156ee0d04f9cc1e4e4a839e1375956d66f74dd439886c8c11", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "d5dc1ffaae3ad8be857accadc813fb0aa6277e4906b45eefcd0d7e2d3f9d9e8f", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "b0e54002891f1a4023c8b6f8a900b0d8f0fda1c5a9d2aa352cdde951bb6c19e3", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "dee584a1bf0606a333d957a3549dd9e2321251d921c77d5ee9c8aa08a77b76ce", +"T3T1_en_test_pin.py::test_pin_cancel": "9516192b881c7125e34cba7cd6cd7d5a0271145659c51d87e34282fc73bec17a", +"T3T1_en_test_pin.py::test_pin_change": "4b4e868d3f5bfaad0f3d3925f807ed4506a93da40567dc2d3f8de17e5c41668a", +"T3T1_en_test_pin.py::test_pin_delete_hold": "570c1ee7c5b3d1e40e387373bc0c283520488df5561d64a1d1f1db03089dfe9c", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "88e9933a00018c24f3df8dff25459a7fb430e643c0c91761b40fb0984c85d6df", +"T3T1_en_test_pin.py::test_pin_incorrect": "b4eb0c6974d0781d5cb0ef7ccfc1a1b2d45f3174c358b0b98f013f4eeadea632", +"T3T1_en_test_pin.py::test_pin_long": "c0b585a3cd74d04b5bdc68d6156d6c07f9ef77b0e7e9d354d3061a75bbc14b3b", +"T3T1_en_test_pin.py::test_pin_long_delete": "bd99f184a71e463b9f9eede0c16e3096c418d94473fdd7016c64014caea3c7a8", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "5f2a71ac6e744b308cdf196e78bee66018d458fac3af374d3df5269834142815", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "c139da416bc72da572f892056e293e6a3f6c384b9f58f305fbe17731f2d337bf", +"T3T1_en_test_pin.py::test_pin_setup": "2e300b5a3b93841fce6887f8dc7eddae07813648d5ba3a067c0c416c0c9a0b4f", +"T3T1_en_test_pin.py::test_pin_setup_mismatch": "158fdaf1f19f814ac6fc2380c54501ccb9ff5138efdc001dc87095787a47c29b", +"T3T1_en_test_pin.py::test_pin_short": "88e9933a00018c24f3df8dff25459a7fb430e643c0c91761b40fb0984c85d6df", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "dee44d23789dd8e82301a0c8ecc3c232b6e4820523965aa98ac9ee3bdd74b2da", +"T3T1_en_test_pin.py::test_wipe_code_setup": "f93c71c6dee25d6f4772ab259f20d3d795ae63126d53abda9f71c4c311bba1aa", +"T3T1_en_test_recovery.py::test_recovery_bip39": "726b9bb0f92ec6a15bccc4a3c5efadffb4fd5077d41348ce88e4fb45c4a02295", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b401edd8ab74d14ab71885334af74f279725a446e19e9c9c89377aea469ac491", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "f9cbada338d5e4e2d8f45ad6f98090d1c51aaae7fce1d578b4cb358f1b5bffff", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "f21f070aa258e83b1a2d3e86cecf8df87ae050b48ceee91b72b5085dd7a73cf7", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "a44ee023be0456388031dea977d63945858903ed60085a9e2a9c8f2c5e81f9a2", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4acf84d4ddca9cc289f7c58820661ddf3da35346848782b6887283b043999390", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6108e0c860b0c401d80a34532c163de91bd8cdbb714c6c5af79b9d767b3162ac", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "be24b43d42b0eebc289ee5669b7a26a8b8dc3fc5a32cfee8a2588878f037486d", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9ae4ecaa42bb2ce1ac284a1510e00d5ab6eab8ac2735f7c3111287e5dc03ddbf", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "420320cdf80ff2251b9dd86201ed1c2aa8a8f1d4a1182c95ce24dbf1fb9e93c8", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "8e7c1b1c2ef864dcc190bc9d8b85f451227af78b4b4bd7c247ebc837eb42bf27", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "582e536d01eeb67a146670bf397e08f9aa80bcab24df86c4274789e60ce0da98", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "fd9e4a8221b8bc8b9454b52303636ef5a0036d7b2db6338a39f10f4c2486a5e8", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "205227301292e4e0794a9854f920ee2afa052885f6f1943f922ac8d0704f203e", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "0ab0d9686aebff9c03117798b06f7400652282d2e158198ea8977b62eedf21e9", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "49c5901e0655a8a4d30122587f7d21eac74938c2dd1a4da1c43272242c236035", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "118e51fc0034b0205546443256503e06e82c4ef5f93af28f248ade9a6e0adc3c", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "c6db64aae718fc98cf41772fa351b7dcf941d4b1ffa59cb67ac92b402ae5025f", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7ac4b7e9eba9d0e363ef2aa79eb5d92977bbac97e583dbc1dfaef0b43a3ad681", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "78fe2a1dad00072e78b24794cb93102014c441c8cd89824b3821d8240f25eab4", +"T3T1_es_test_lock.py::test_hold_to_lock": "3c595807b765d89d25bf5a6200c11c9da4c5ac7a6a7eeaf2651c23b3638bde70", +"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "c3335909736ab6720417df11d6d226f38be81d524fb679b7dc35b02f1d786d6a", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0d3db8328eeeb2946c890189eddd32b38bfa43b0e5b05b4b23d1b08d8bb07841", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "cbcae2fed45432f38f43465a47ec86b5328bb178a46b8647b804615ac6a545dd", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "d340775b7d1300536d57f9967ad8264a1e670a81e2af0d5efecba898c99133cc", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "79b2ddfe1f51d6270ef9b26efab155ac8663de36bfa42436fdd90d64e3de7b9d", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "cf1988383720bdf01b8e3801ddab56cc4cea5a1431f1934f09f0d35fb4c75cbd", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "fb9e8e89825d1f04497df483cab19d76481b5adf38f9d89049a280686e0ee750", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "f83c6f5977fb89dd40d65c8604b77413420fc82d7b9c0bba0df0eec031ab7790", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "429f3ea058ef7850504c9f13272b57c23ee712665a30c2750593a9400377f2a6", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4d7a0d562b8e12e26ba801b086d60720f525d5a0cbc1668110d93845883231e5", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "429f3ea058ef7850504c9f13272b57c23ee712665a30c2750593a9400377f2a6", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "5ecf809cee2a2b6d1a24972c881e1c1add9e64d475bb25b7ee4fe7910f0066e0", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "5503105e49337830c4d9a6a9aca3c0b7e7a17bdf5e6ebbf61e3bfb3190c6d835", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "a8d6cb97213b205e24fae5ad4590d9c469bf350db4f555e62e5ef5f79ec5138d", +"T3T1_es_test_pin.py::test_pin_cancel": "253c69ac343bcbb39c927f540fe2e969ce9c54f29400c6c0ec14edb8ab775a21", +"T3T1_es_test_pin.py::test_pin_change": "428440f1b2ee82f856a25438a106854b84f1fa24f3d54c6cfc0d1981276599ad", +"T3T1_es_test_pin.py::test_pin_delete_hold": "cc59eeaae1d301e4538e672e903bf4d8eab771dbfaa6c5c5aa47f5be904de6c2", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "2fa91a380c2e4338583032ba6ec68e664814037d4a991d60f204561764dfe64d", +"T3T1_es_test_pin.py::test_pin_incorrect": "9230e6ba7381328f0e1561b1c47edbf6eb2d7ef13da550e5e0ea334755d81295", +"T3T1_es_test_pin.py::test_pin_long": "b10cb621384eea5ad6f23b32cdbf88ea3f2c4d116a2bff23e63e04995759ca51", +"T3T1_es_test_pin.py::test_pin_long_delete": "e792112d818e17f2bee2516aa3b7100a788fa31d8d1db19902edfdc11b15a4b0", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "384e7d985cfc61ee1a0414d8073b85b44e7b7ae9294a08614420be0598cd7195", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "624263e6e66fecea1293b575ad0c40e0d5a02199aca97ae771a51bf72ab21101", +"T3T1_es_test_pin.py::test_pin_setup": "d1d6c8b9ccaf9484d530ad225106b803adf723825753708cb930280c292b4c17", +"T3T1_es_test_pin.py::test_pin_setup_mismatch": "1f9cbe01c8469d4648c1495801dd06092f8630b0fa0aa4826ccf3808a4e5c4f3", +"T3T1_es_test_pin.py::test_pin_short": "2fa91a380c2e4338583032ba6ec68e664814037d4a991d60f204561764dfe64d", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "b0c9c1d71182e94c4b314427e099453b41c9f1bd6ff523754b390d9451fa8184", +"T3T1_es_test_pin.py::test_wipe_code_setup": "8cd870b853e632d4ff43ca4e13171d3ff5c8ee15bc3a9ad2a1b6828c83582e16", +"T3T1_es_test_recovery.py::test_recovery_bip39": "26928900333427959e86f128ae4bf73eb75622fb30d8b0ee25ac1ff2f2a74bf2", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "88f9448e8914d798e118dc16be2085bd620a1b0628bbcafd7f6dca72a54e7420", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "ace38506ab51166837c094b3f62d1dd2db9bdf51ed2eb94686fa7c09c1754e32", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "800a9a9f36a4687be2dd70c39e74b7bd327a3db9862c4277aa4cba1b6a34671c", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "88da51b12f241471ce91f574b86901c8d49f422e2fd1f3298b50b452dd125abe", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "86a7824c455a584f0a5450e18e15980b54ace8e356879a6506a367a76c5cc7d6", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1f5a7120d4d79c167076e49092c058795c94c65a1bfa9234d7bbac8233f6674d", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b1c1a7db0d8b02e274deba6302024355168decf5689326a9371f67ee8db0abf4", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "388b37beb972226e79b63077b9dfdcd3e5b2a0a41573632020467e9d36e5ed5d", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "06a2f06ba8d59e126caf41826a0cc6ba033f87e5e7de6fba8f14806aa347b097", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "70fb98a33fd54c66b482941ce4a7a0eccfc8ea8580745ee51b5a3aeac6f12f90", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "cc5fa43d5c4bb0fb104030d540314f6f231161845f6d42f92031855e535be919", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "1797bdeb40b18bb2aa93b271605b9c3a176d08b6e3d2330d83ed5e833e1131eb", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "365463f6002c06da68ae5bbe8bd02558a3668bb30fbceadc6c27d6f224e96089", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "ce7365e2c847ad4d3e212f177b8a9cfde370c06c34d74011ef989ddcce9e80c8", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "27c454e6baaf3927555e77634b40fe2e445022b8664258c0975b7b17bee4d2d5", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "37fec61a1249027d765e0af8fab9d4256460eb0ae484c76ed15814ff33890342", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6cfc97693948763ff408083dea91e0233c6298a0b65ab2a8a1c1fb8358f87e85", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "093275f18de7f2102482aca98c1320a6956cea13363be39826b489c373b45997", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b3b65a0d5782b028a868fa20fde3885799467cda8c69d4daf93548f39d047ebf", +"T3T1_fr_test_lock.py::test_hold_to_lock": "31e3106cceca40454a3ce2bcb0dde4ea44a25ef1fa2c2a0c015505170d3f04b8", +"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "9f5532507cffced9b2352a5a0dd164f0e4ee72d47cb0aa8e892653c2704ad8c2", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0c38cdb7b9d03ac983a305b9ffc2f882c33df18db87b8bcc33d9a16bb0aab727", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b24e053fb87679fd9e46ec4b64f48bbc8782d9f66d8079eac65e1de86f549400", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "70989e1e60aff7cfb326b7ad9121abe5be2800e65925f062e6b58c190d6614ef", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "7cc67dd54dafb1bd0b556614be4d096b67b54bdcbd131b38a3d4cbdf003bafe0", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "155488b8debd97e8f4aa96e3297e57e2e961792334468ababa800444c85a0fe5", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ded629920557bfd8e5067e467f968cf13275b805055af13c5f2dd1ceb19cbc73", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "de00ea7cd4c1fb2db96de2d86ea107dceb6a286a070e156391646571ac99c8cb", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "4998154f49589fa080db729178de79fe4c27bf747717c3939a4c53be09c248cc", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "5352ab7b0f5ddc6ee3010773d0ad08303ccb5eecae99149f1fe9a00be3a6920f", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "4998154f49589fa080db729178de79fe4c27bf747717c3939a4c53be09c248cc", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "46759e52efc5f5be57797001634765d563a04eaaae2b0e101f1df0a59545d8f9", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "d44745151b89807ee5b79d16d21be9c454670f721b5f4a6d622f808232c9d172", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "afd79366291e92367c6f5abfe7fd9628b1ee7e006d964cc382b896e1e102088f", +"T3T1_fr_test_pin.py::test_pin_cancel": "6925593808fc0ba8a62d6257d89c41f20458fab4906a8f6c3d6c9ba5cd03ad5c", +"T3T1_fr_test_pin.py::test_pin_change": "2069fe3cd4e34bd338c2e3d083b6ab8a1fd1d26add324af6901f3c4f9881d3e2", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "5c169a8d9941b90fd14d0301c00999fb838be99484b2b7b726da29a18ac1be83", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "d3d7c2e6ec9f1e5a434d4cc55e2d3688ada0dad4d05e2abe23ae5cae0be20e25", +"T3T1_fr_test_pin.py::test_pin_incorrect": "b180c78d144ac85df590a44841939538533eb718666604ea61c8e618c0a2fadb", +"T3T1_fr_test_pin.py::test_pin_long": "0f2146acbba225de7bfe145e7f86c52d839f38082fd2cbe290c2b045026e6472", +"T3T1_fr_test_pin.py::test_pin_long_delete": "620964d1f17e41fd2bf6546c584124927be4100bffd41938dfcb1d8bdf0a9e9c", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "ee88f2a23f479ffcd123a92abc265b937bd5e6c7db1a10a49ffe121035f0ac9c", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "a157ecc04d3543dd5dcb0667b56b7bee4954aa21f820ab152756254e977c148a", +"T3T1_fr_test_pin.py::test_pin_setup": "3a74dd475a4d2a6f5522463cae45317ff2cfa109bb03c87f4d99a3348e1014d4", +"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "f444abed6ed741384caa6fa1b0bb054a8e4aa6231c01f84a59004e4f4ee4aa64", +"T3T1_fr_test_pin.py::test_pin_short": "d3d7c2e6ec9f1e5a434d4cc55e2d3688ada0dad4d05e2abe23ae5cae0be20e25", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "a5d17baa44c9cc3d769b2e61e58efeebf5f8cb81846bba4db855736988f16746", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "7d2dc9d2258f568b8f5b8df92ece5c8b892064d6a4d4e2452cb1047a9b9a77e7", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "b339fb95c64744b0d9966c8469e6d0d32b7b23e240b5bd57f5ed63cdac2ce08e", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "c863349a8ffc50507ae2aed634347613fdd27a5aa639fd32f1395dd06192d863", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "79ada4df8d4005c62898b4cc30ecf37e4948d2bc5dd22f8b46234d957ec417ec", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "82eaf4d66369b484908342cb7773a788d057bac48d07887d52b8c4315a85a57e", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "0ac6d2d94cdb305171ed5b786c674f8b8f0a87feef5ee6f14dda64d62119602c", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "335d2251a0126677c090f0fb54a54d965a1fd55c495a7b9aa190464783a92d36", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "28f08549cc5dd06402e9b17340cb37c39883b3b91a9bd1b54fe7c81cd88481ea", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "2b157db845c96534d441aef8eaf81af7eded3f94cd6c92fe97b20553bc1f29a2", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "410e7d16bd938d8a32031a3bfb98f15fd9e5b0bccd3d1f5c15cadbc1f2009a2e" }, "device_tests": { -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f295121749eac5dcdb9c559b2d9405901fe75360237c82af1ae8d21a471327d1", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "8c0edcbf338893a7ffc27b689735b99548d6945275ea2ae85f1d57dc07980df9", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "bc2786564c9cd21e7d05b401e3b72d047274c578eca7bc451a7329ac07fd8d88", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d742f36c806e1f71a259c455bb2c65078479c38e866c12c8cebb046f971454fe", -"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "ffb94f05fd8d442b0ca04d568cff1d4eb3a0da15ecec4433ab50257f565eb9ba", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9ba5f27fbe7ddfa45ca08769be93b01725c92889db846ba1b6d1c93d10129ede", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "c3a5571672a88192f94c54261da10e13799cf741eb1677a8b54ea7483f361109", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "bbf7d5096842f590747c8f87275d7676c45ca29c1520a2526573908db9ce872d", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "9ba5f27fbe7ddfa45ca08769be93b01725c92889db846ba1b6d1c93d10129ede", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "c3a5571672a88192f94c54261da10e13799cf741eb1677a8b54ea7483f361109", -"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "bbf7d5096842f590747c8f87275d7676c45ca29c1520a2526573908db9ce872d", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "e25138eb09e3b582a16a475bc97d14374e4e14737a2e4804120b73e98b2a2181", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6e545e47108bec5ec086c3a2179ec13266a2c909c8d0738757fb45762f59349e", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "795268a332beebdaf826bfd93eea5986c0d2604857d0f3499f57e6cee45bc5ee", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "e429b184583ab43ce892cf4cf0e3280ccc1e6f79e4f66e0daa825274df611dca", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "3d78e641f238bbd1258b48fb7e0d77b90f995e8dbfefea4bd6654f465b7d9aac", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "3d78e641f238bbd1258b48fb7e0d77b90f995e8dbfefea4bd6654f465b7d9aac", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "cfc9900f79f72abb65f2d710461c95f8a809a32c216c71eb38fe3c49eb17247f", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a6d1b34a007609b4fca0403d6d3f024374cc884167557271927d426bec4df2b7", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "59430b955ef05ac2832580785523eec8dc4a79d8e95dceab3f36357890c3746f", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "310f8ed3247844324cb9e72c29026cb681e7f678f4781f4ce54c0b5909797acb", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "310f8ed3247844324cb9e72c29026cb681e7f678f4781f4ce54c0b5909797acb", -"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "0120aec2d358f25ad48faa357a85d6e0a4f147c1041363ff78406da244a568aa", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "0120aec2d358f25ad48faa357a85d6e0a4f147c1041363ff78406da244a568aa", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "094d0c1627e0462a9735f591443914b45d31d1307d0cd849fb4808dee40f021b", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "2ac5f04f83a7c87e36f83bd3be59bc42653d7f2c2776a9cc75f849496b815998", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "135b2b2f4573be1903932bdd7be95373c1de09159bf89fe8cea9143c61188ecf", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "35142abfd997046b744fb723bc283efb9fea116e6749df59ceb9806201902db2", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a340bc0a00477a0df9976a049b034e539c3d4afea1d653fc7a2575dc59df4f3d", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c35de691515759ca50a5e864a0f4831c69ac8051bc3ed4b8b911f253ef97d6e7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4a64bd3d93fa2921ef9b93a4151dde05db4ebfe27af641a4833c6336214ab177", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "cb7f468554dfdf6983a010eb58d0be929a51c463f0c7adc36481308a8f3b519e", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "cd3e0905e7fe5ff2bf63a5c3b13dd1aa91dffb78b63ce95d6f92c4c7f03b2053", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c18dfa1e98ab5d3d629890db17010fe8f9b8676456da7c062ffdfacd52ea833b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "a596b9a0fb80b83ae5015e5ec158377273b708d1ae8cd8dff12d34474efe0e6a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "25163125d59f168efbf70932da7af7c063c7d839b84d9b0c02482715623aceca", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "7d7113605543bf316e2733f6efce9e5274f89c9987c61aa968d15a10044c03cf", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "b55e3aeee1ad4e1f06168bb8feddf2dee26a6757b4df16a673396979b581eac8", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "add9e631cf9a375477165aa65e204cbe0543594ff9baf1470c27afae8602bf0e", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1db07055d414ac08c96cfe4d923343124e1d1f0dfd8ba443690b7385c22ba7dc", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "154d7606c894400d522ea1e6b602d0b8637c82847cd201edc35adda93d12db3b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "399d67c49b9e96d549cb257b0f7ba4c8c0ca696cbe6e1593fa9a78dfbc06cacd", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "29871a5a0146126b008e315fab05f0097f117c436cf146483d99cf9e1f848dbc", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "a988b3def8a1b50b350526846f67fcdf7b227fcee4ec58e8af3151597c5b9073", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "815458ee6826ecd42aa6b553107de5cd7f77cedc4408514d50037d178bc9758a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c35de691515759ca50a5e864a0f4831c69ac8051bc3ed4b8b911f253ef97d6e7", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4a64bd3d93fa2921ef9b93a4151dde05db4ebfe27af641a4833c6336214ab177", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "cb7f468554dfdf6983a010eb58d0be929a51c463f0c7adc36481308a8f3b519e", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "cd3e0905e7fe5ff2bf63a5c3b13dd1aa91dffb78b63ce95d6f92c4c7f03b2053", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "c18dfa1e98ab5d3d629890db17010fe8f9b8676456da7c062ffdfacd52ea833b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "a596b9a0fb80b83ae5015e5ec158377273b708d1ae8cd8dff12d34474efe0e6a", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "25163125d59f168efbf70932da7af7c063c7d839b84d9b0c02482715623aceca", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "7d7113605543bf316e2733f6efce9e5274f89c9987c61aa968d15a10044c03cf", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "b55e3aeee1ad4e1f06168bb8feddf2dee26a6757b4df16a673396979b581eac8", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "add9e631cf9a375477165aa65e204cbe0543594ff9baf1470c27afae8602bf0e", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1db07055d414ac08c96cfe4d923343124e1d1f0dfd8ba443690b7385c22ba7dc", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "154d7606c894400d522ea1e6b602d0b8637c82847cd201edc35adda93d12db3b", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "399d67c49b9e96d549cb257b0f7ba4c8c0ca696cbe6e1593fa9a78dfbc06cacd", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "29871a5a0146126b008e315fab05f0097f117c436cf146483d99cf9e1f848dbc", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "a988b3def8a1b50b350526846f67fcdf7b227fcee4ec58e8af3151597c5b9073", -"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "815458ee6826ecd42aa6b553107de5cd7f77cedc4408514d50037d178bc9758a", -"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "5f76b59e7cb5ef16282811a3a38767e653690233167041513a3f6b17fb3257ec", -"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "7eef6ea828fd09e6d7e27f3e56930b16e2e28387a2b6e478f49bef2178b0d36f", -"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "c888756ba82903badf0c53d903e4c5d23be5f8e2793b8d0d9bd0abc2d90d432d", -"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "71073072ad99c576e6df80193a982542f1058f69a5fe36d728e6c1e0ed322ff2", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "ded376916d152fbe73e925970ccc66cd3f5c739eb0bab46585e30cba9a3edab1", -"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "ad38496c1e1629f70b9dfbdd7bf6fc92918010c0ca3b5cb320fb93e0389dfe63", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "7a614f73d5f036935c66541fa098c01d877b013da8a4c17e64dd11ee152d6a7c", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "8f18baea56c91924c56c8b28abc0fbef2e919aca897164263279d370e96f317a", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "97a1caf7f988c26baa5fe2f03cba5693983880a51fb94247d5329db566e63ddb", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "1dba11471d8e0fd15b5b381eabc33e0b93540ec0fe4fd82539516042426663ff", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "62d21f48cfeb0d80b3a1d2097bd1d3ad242ecceef91da6e50528684d3b4bbee1", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "06e8047f7b570a9cb934a4588d058490dac14ecd22908e00f8758d7dda2e37ad", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ca54f26279a404a047891a509173c12835a75869409d9fdf13ce81c9bfe67b56", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "f5d3422ee8ae944a36f6db2f08fe982b177468b3ce1baf408080a1ea7fa0b1c2", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "d2e2455e8586df1b96f1e3a057024376d2405529fe45e54f6da1bd505ab26e91", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "deca3e961154ec0265534eaa20f7b9d0107fad7463749538a5f9a476a65b3917", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4b5cc6c83ee4d37d8a8c45eb1b102165935c1d2dfa251747180519a305cfbe38", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "cf7dbcfbde86dfef0953d8b6bd0254498719b4115cce5983ebc3d4aa55feea0d", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "cfa61c5b93f3132bb3057d23cafb691af1b89c7b1755f158ce78430c2f8a59d8", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "f481556801bc6145d13cc2f75cdeab6b70f3f609ea67ca54d5c1f0dcbbabeae8", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4dc247410fd2999c59a2c694f7664fadab814f8ed93ded040d4a38ed0aef74e1", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "f3443f1c233c25542e40adfc064da2acba8a701f4fbfcc4fe04f858efb665cd1", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "212fdcf7f57e413919ff0253e4df16d4a9e6ac8825935f3c671d520296f7803a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "44ca5c71feebfb2f19d3cb9308b768bcaafb3d4dc9e4551f18da6c12ee63b9e6", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "540e730b69cb5afd19ddbd1fd53403acc1b69c4bce1939e254859b105506127e", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "489645ac21a7f2a81855034147b15125e3444309c66a65e8a421e62a483a2608", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8f04e4959d5d5c1e51828515b6a48d8149dce38abe8f63828f40778bcd576c8f", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "aa886570cbb0e5a1a37cfa341832553246c3618add20ec8c8771621346e5214d", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1e654f347aa22466f0ae031a8139dce7d072f0c93b1119f5c83bd7a30d406806", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "3138525937e1c824c1fcfa8b678fe0e567f9b450bc998d38728355e69613558b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "3138525937e1c824c1fcfa8b678fe0e567f9b450bc998d38728355e69613558b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "33e8c0df48d2de986fac94919fdef14f516c20e5f706c3ee0aec61c038a3d932", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fb0d58c21858205dbc21b9aed9c927932e40f50618bf06a52ba1d565b98f3145", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "581cbe088065dd08ee1e868a91be1c7c97334e971af4c962ef70a3cec07b3022", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "9343cc4bbd64db2004d7ef333ba58ad4d1000924dc666bd5f38e90724a92b691", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "58b6d5e713c8aef2fe7cf53392b70f58d173e8fe4c62ab213c349ded23c2e1c2", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "44827a585bc946b9ca66ee008f7dbcdcb4666ac3e2264b34257a28c00b6bc496", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "49747ec85ff28be24230b67922861e0289f6228ce12ea65f3aae2aa86eaa8454", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "763829f5b52ec9371e4469f08bbfb7d9c5044a8a5d4ec8edeb014642b4b986ea", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "59b95950a67dd520cf9aa73761a6aceb67d028323214cafc5ee509c4d8fe9ef4", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "8dc57ba351f4bdb46778f0d0a1cd547c05521f9e27eb818d28383a137e2d556a", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "7a6fa615b5d3e3a61e1bb1ce1fc1e27bc5126f258ead53d8e9f2b92f2f997c80", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "9c913740164c1903e3d1b2cb6534023626566f8f4f886badcd9729923d7e7817", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "5b9748cf5823cdf39590bab564da072937c58ebe5f7630d1b384aecb30af948c", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "c15b610ecd8b226dc8e4faf697a1ef5b15a9f42358c066a909370db0fd8e73fa", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "acc60735afeab395622da0e30c389ebf96558bdf7143b15fc3d90b9153937c83", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "f16133c83edd9bfdd4e5c585416ad71d5166eb2ea627f20a1916b3f7289b2c21", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "db5364b7ba16311234ab1a05d70f329a0c958ec1012d4c14e37dc24d25a73126", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6415c61eb3f8d859180d410a347e02ceb45e408db668d0ef3105e85e57d1a931", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "7889627a5b2c8bd6c18feef283f87f1da80b4a44328fa9fd555b04a225f459e8", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "38a5682413fa1889c65ca260d88f730b6976f25f49bb1ab4e31a81c8b997b880", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "c8998c1f23dcbaa74c02d34e728c04b6913f2c5f345306ccfdec4b79b1ccde37", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "69cf92e442d8d273924d0c719b45790a2b3a21e6e5e28c65dcd7bb1d12bd1c17", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "883459b4a1ec13f45fdb621558e27432cc6066aa77f25a7824770127cee55b3e", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "43ba207ad3eb56da5824795b8f3499da9a587e1e28b84e377b739aa9cde972bf", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "26e5002215d51e35afc6cbd967fdd6693a3e402712d51acfe7b14c5da2a7fd1e", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_grs.py::test_legacy": "3df71604064c42577d230cf87f68e4338981b1da53b3749b1e3a7300d11288b2", -"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "048df3a3f676c579543e04d414fe86c4708aeea5a0cdfae9c7b1eebd7fc55392", -"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "9cf8c4f0aa466b88e8322f53e50cfbc4fff8d304d097954bd77bc5e2ae522a58", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "9f1ef1d03dc00918028294134ed690b9929b5adab7dc3bb5ca8f6f749b71bfe0", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "e3ccda0b775d0aa6629a24ebdf4bea6c99f4cf150f341ab9e0d10075857b38c6", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "751b480ca1fc948daf2fa75614e196bfbfa87592b46e2b4c954026b010fe13ef", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "503fe40470c139d73600ca469efcf6f71e375bfe57d15605239be437a387e580", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b795c21913cef2d26bd85b1e2320643b8fe712b4b597c4aa1173e5b8af737314", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7fa737f82e108e2d2d60bc201bf686becaa588c9011d781597a8f205d00770d8", -"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "79d4b104f8d5d4416988ec160845f5adc54d195f5218c5b49ebbc0c252622a80", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "c9acc80df039c993d1eee74eede5954d92a25ffc8e2022415c74c8405e430ee0", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "a626c39016ba5edce7bdb43b7c0f32c8c8807bd4c4f08198d8c91d577d1a8b9b", -"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "ce74a5f0d967fbd1c6b706eaf3f0738f7f0247184c5cee940be63425ffec9242", -"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "c7ecaf308ebed8526ee1800216370ed7c7a9817f8a927d74d5291a0c4a0da7c6", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "8bc6a25eb26428b204c16442fab5d26fba69949f468c937d0edff320366f83d4", -"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "bfe97f64e011f7424b394d32de321ea4e39ab045b6262b506476d11336592886", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "31d01fca86b66a31384992dce0c904df58a8de86bb7e5c428ee0a0411a808a33", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "b0af71369818df1e824ff4a4eedd1c9c00423e5a40f11c6428e1909bbdb5f051", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "e84de1b0c0de184d4823d56f69c67db3102d16e9d4f7142cb87034381ed6e23a", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "6d7560634cdd782bed2be7c318ad4367d8ed79fe1bd4a1352784d48bc05f45db", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a0b57a4394d8ca37fdc08da5282cf240cd34c24ee05cb6cdd3a6c01b6de5f7be", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "2e241d918ca317665198ced45c3204f160d85e56753c24493ab3a38179afa662", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "6e4d57cf8925aed9c90544d0200fd62cc65c1c42f9244138b9163e679ff4aaff", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "bb8ba64d9382d49a2975d7378f1ab380556bd7683c86072e90de8463bce37245", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "4f525d7816b421ec31d28b6915271c6fa45d46cfaec00aba6b6402b5be536692", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fe073a206b251d4574b97ba05b499117029a4a8b118223bd02d229ffb083d1f3", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8918516e241ad3824d530086093ec62055ce7fd19782b94a6a1520dcf619a634", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "844a660b63fe8357f09c99f9f2bed2c99f818b430f46df51018c5b7fe3516d0a", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "b3708324b5eba4672120132ff45247a68fc8082e4cccecbe9d907e583de07bc4", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d9c2ef8920116ef0308efc7959a7a9cfc216040514a7297a877f62c97296eb0d", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "7021812cf6a8df4230c1cb7433519e6381281317920aad9f38b6ddd4cc382e57", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1c6aedf32e9b859282770ee4c7759231b2eeaaca3172e94efb3cf5eb5e1dbe28", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "87948925ffa1e9d239b6717e1225d6d74dd57aa73c570759b0cce9ecb1cd7e40", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2c2c275a5ff5072f65fdfc7b985af2429f6531e0d9b7d3df4f616ec16a5e8759", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "717d638feab18cd298e9c400ff31a5ff3203a75ceab35b88853a7f9b4fdcfa44", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "bc0f1b9bb74d22db2fae44486ef63afae5948f843e828794d31494592eb08d2b", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "8a4bf54a1c2996363647a423e37f11e62011f3ea1cee42b33aae23d727e63f82", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "abf92d19707ce9c027dc2b9c950a63d5b4de1dc68057e445a9579a919b4bad0a", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "0d609ce922977bbb691d39b733d194c5b7a25fe8a1fdf20ff78838af9dba895a", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "97aeaa7ff0931e8b77f2d413608b1c5c4d2083f24da3b0e059e8405f76017c3f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f683ed2077519459966ac699a830b65f4005d74dc1b27ea101b9625c3546b1f6", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "4a49b154d2b773767d22d337c221ef76b88b7c09a7e1232e330a71f31ebb2d61", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "996a8475143fd5a1ef757ec10f2070e7bab5916a1f8c2c61067b35ff3e98b608", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "7d9c06f5e1fb24e62dc5702d4b6d95ed778fe74959419e077f72803dabf21402", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "2920d4ab8c9100edc1d7e43bd7bd857485a9d0e4aeb08ee5b5002bce09cb306e", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "052e141cde72a884f25e7446fb91d21d24de4d3ef60f6148846703adb6d819f0", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "e7239fcfa4940c7b209e496e2ae02f36175d8faccb72eed6aa5cae58f0fb25ad", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "0e1044d92aa45d5f16f2a5a98ce0f57279ea4788909372a8fe9ad9a2becd5e08", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "5b9b5ec161eb149e6a06d727f08108f463736a410cd788e2ca24824984a3ff90", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "f81a3858eb0474a4fe2409376c71e1088fbcdc2e89b03f2eba377fda11b375b8", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "40485121ed1e26d7646d4d01b9e6589292900f60079c6b718710bfcfc9f1ec14", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "7b5052181dad11a0adbd0477ffe60a71ef8b5e6ab2dff86411bf188bf341f815", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "84383a37c6a73eb6cb9092b4549ff31664f5f3df49cad06301ec167d96582ade", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "40485121ed1e26d7646d4d01b9e6589292900f60079c6b718710bfcfc9f1ec14", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "40485121ed1e26d7646d4d01b9e6589292900f60079c6b718710bfcfc9f1ec14", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "40485121ed1e26d7646d4d01b9e6589292900f60079c6b718710bfcfc9f1ec14", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ecec2c7841b18a7262b7e9c43b0b69b63c46b5e532c5203861009b9f10d31ef8", -"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "c8a77a57c98b3ce86d15463154e207e81c9a1968128fc72700a1035824e88e07", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "11500957bc3953722adf67b8e3fda4923584500ea481b5b559bf195dbdce9f23", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "85f611390fc85505e22acdab58f03dffafc0266cb066b35421e0e6a48b446668", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d92364d9df275d2d1b35ca8ec1788a6018066eda9f4f031ddb86a6b2f7baaa43", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d92364d9df275d2d1b35ca8ec1788a6018066eda9f4f031ddb86a6b2f7baaa43", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "2e5aba18a3fe82160286ccaf4c05a7a7b059bc91c582270bbc53f415424bc8c9", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "5111355554390c18941a1cab3485d60d5dca422e7567797ad7c51cf829e07267", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "6f3e483fc6096b2a2fae270e20a7c7f5c95fc9b13562052a3e408d77d628916b", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "a2d80fb5585d1ec25dc7f851a359b1057a4df8f5e72239d684139ac7fc8174e3", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d8ee83b1aca3f6c38dc23068201ed5810a77327b3f7e40cfdc4b3a8df77f4079", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "cd58b955a2c9e508cfcf1be7aa16f16abb9cce32f90d1ba3b08121d86aba191c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "cd58b955a2c9e508cfcf1be7aa16f16abb9cce32f90d1ba3b08121d86aba191c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "566ecdc87df6191aef7ff1c74015562f36dd842fcae0e64eb50b8a7cb5281f21", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "1876e5ca7b3820bcf1ce25211976f3445feb105645fc3601fce5f38b82d2bca3", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "faa610cef8dc8cdb494e54848433de404397eba9bce21cdfd6339db46447fb85", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "faa610cef8dc8cdb494e54848433de404397eba9bce21cdfd6339db46447fb85", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "440d4073887b8bfc32ac1c50b8baf8927ff9966e19d266b9fb4aef4cc59e2f33", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "dccf093eeed5f3648c361111fb5d1d5276da94a92b1808cad3847e7397394434", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "06727cba40cc9cbfdd1680ad774b5f792be914a18cb6ca0623724069ee8373ad", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "06727cba40cc9cbfdd1680ad774b5f792be914a18cb6ca0623724069ee8373ad", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "f413be7858a5df8663b7af30e20249e3d2c5dda4952435e4538c593af4f06eae", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "0eb28137bf536a404313ce9accfb1a7cc6ddd42ab7dace99cc049a46eb8a3f1f", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "3f227d73b7f7b8b61b29a9980cf02c091c55ebf49741dbd82b0118041c446371", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "260df8d50d9ae10ca33415398b5dec07832c75274291467ff3dc11c30a4e20fa", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "21497fabe4205c521a1c7f8c4804c5e29afc4fb8338c7576c872254e8c27a22c", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "5342dd2af5686647da2b5e9c7035a9ba606649a56213bf2f2515c1ee28b54747", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "e04b0d0b085cf3d1170ed1560637576c2eb86ec5522a7607071daeb330dc1c63", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "f12ecbc744ba8cbb8c6dcec79d593ebebcfd25e80669c100651dc2b80e7aa2ab", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "d662faf327bee11909bec28380ee84b3d02c28f12642051062e944385cd4d571", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "6cf35f8f88110cffa24e76bb65e5d7d799de8c4f2985153ae5bf5279c969aefd", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "6b2fcc853bd2615159265b1ca858cccf91ba881eecb48b65e60d5cbb86d8bf89", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "593b7e946c9e2f3b49d7c43ca0f289803b168198b0a743d8772d43827ba9390f", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "05f79141d7c5f1c752ae9cc08884224ce15ad0bec40efb0b49bdb01e13dd6e42", -"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "05f79141d7c5f1c752ae9cc08884224ce15ad0bec40efb0b49bdb01e13dd6e42", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "c8f5728d5c396a8137217955f84c21235e8a9154a700e5288cfba9510d999496", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "8b37bdceab71c4777b7016e3e7bc7707cd6cb06fcf52016fdfa1744deecfc266", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "afd7ac92a72ecb14f06b3cb8adadf43ec32589fbcdcb024d0c889474d4871710", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "9b69bbecb886a8e4f0092983870152aff06cf2705d694332d3b24c3bebe735d6", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "57c6984995184ebece4f2fabd9cafbcf3754ee4b6d38146fb275013bce4f9acd", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "8500088f498f74b789023769614fddd9e211c6e765bf9bc5055e9ab1ec943df6", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "2d903e1763890d3c1e91b4cc6322e76fec67b33e5076a508b291648a8f20e275", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "620c7d24e9057076b36d301bd55f4c5232d3eafc501d1cccbbff9ec6a73e1af2", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "2d903e1763890d3c1e91b4cc6322e76fec67b33e5076a508b291648a8f20e275", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "620c7d24e9057076b36d301bd55f4c5232d3eafc501d1cccbbff9ec6a73e1af2", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "e3ce21562dd3e5edb75b18d12afbbc963a2353e5ea190574b7f67254352da1ab", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "97725ee40ba8c9a91ab2f473f4313f45e01595b1de67cf4a7e7b4f4925449938", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "32dd5a93ba0661e7a87b3b401cc80d8ca419fc2c45178916a9c60caab40b8c9a", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "fce826402d14b4a85c624405f7d0cd9e30600a93f995688232fd001dddbda875", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "c69f1d68065afa864d8b5260126501615b805e7dca4fa3b324420a919f4ae68b", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "3aa16f206d314dd0869e48ac31f0df36d943cee0d7c1eba2edae77506e43a334", -"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "6716eafc60a7c6d18991920b76920d5e65fb968b66cb133fac76a46538401cf7", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "3bec5949f34b56c95ca54e605076a68bf0c3d0e1106131dbf39b7aa06fbe471c", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "8f90a6ee2d267a85c848380966556de7b40b4e77ce3138a51719db8b71dc9408", -"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "70c032aaa86e7050b1512da751dab9a7c931a4590b73e3cf22c256b93fccd9f4", -"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "6be218ebc19f31629a40ae5a54b6463ae0579502bc03fd2d9d96d38acad3b010", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "08c558ec1431108a09360cca6496b12be14d85361b6f15cf2d9ae036753aeb78", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "ab5aaa712ba354f942860fc10f0758a48f21dea65cdeaaa328d2df6ddf696ed4", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "dcd3d19c186b597e5ef113dc3347502d57a7470382dc9ae70ebf2d00865bab3a", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "d766a11ae63c3f6c2dae96f13358ce14e23085759db4688f17c7883e31e2a15a", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "05f79141d7c5f1c752ae9cc08884224ce15ad0bec40efb0b49bdb01e13dd6e42", -"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "4426acbbd5618aa22a3de912e691044c54b4bab76e7f89e21b9cfa9ea4004ff1", -"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "a86e54a85d33a4c3decc2e93ae20df4cc602ce182a7ed5dc8be2eef9d78fea47", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "6716eafc60a7c6d18991920b76920d5e65fb968b66cb133fac76a46538401cf7", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "59df5c4c1ce663412bf39f5bb46d2b9e8102e7494995ff6a84c77f2c0240ec7a", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c6d3e0ea97ee7ef65b317a9e3d5d4eb2161de4f5dad3db258484c3dc1b57d64b", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "be98b9aa0545fa20c6dc07ede1f01026221905fed371238183e68e445e550962", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "6716eafc60a7c6d18991920b76920d5e65fb968b66cb133fac76a46538401cf7", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8f8f7bf7eb412b874b9e50405465d0679df8cd29cafae44631926d292f7a58af", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "5fd260743f061fd5229ec94e860a8100d8e9b8ea3d600a6ff5d47b837938fc3e", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "6041d9e6b9d899addfb33ceb8413cb267fef4b7fd9b50a31000a93a59c002200", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "496e7910afab490c5acca17f9faf885d25086638cb548ea4e6083feae55ef588", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8f8f7bf7eb412b874b9e50405465d0679df8cd29cafae44631926d292f7a58af", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "f1d3d10644d867a5ffb0821d88f19adc313e200b4659b85f2f47ba72fac6fc66", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "3a1440e89d1d6ae5116b5010f4cb937091df5f4f669b16e45c78968e067f1dc8", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "6922a3e3cf9301898d29d24d29407035d6444205be37f83845203cda35d849b8", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "48c94b10a2a2738a903b447708fe3bf94887ec19f8c068cea9b86f48753df066", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "fb8f2b16de7567a9af55130656ffc62ab769bec39080a610b42e51248fbecf67", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "667c8685437c32db4afb7e7f3a6ddab65bf7d7addacae7cb98d3bd9199d12e34", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "b07f6ac464ff6bfd4d36f4a385e8d77e85746b0f1560b2a683c2de8d05662a4c", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "711781299884753b052087ab5a2c45e3395bfd5e49aa99e11e04a9d4f19c6e07", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "34f8fea645acb5eb8068be953f503420e1a86150c993e9b61fde9c2900edd43b", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "ebf5bc035bdb250a2cd33d4d9ad7df7213aea0c61fff2e0b7c09ec22ce5f87ba", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "8dc6a40d68a0580dfb27099508506a4af3e5c792facc4bdbaf838ca9023d644a", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "0840a1a70b846690720ce0668901c80fc8a1083ee0607a74653bf385e596f253", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "5de6e32f987e7b79761b25ea7d684138dbe659f062b047a872f15fb3410d46ce", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "c51f394638f4c703f5c6a918e76d0fb251eaf19653a616f2528204fd57f2ee31", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "5de6e32f987e7b79761b25ea7d684138dbe659f062b047a872f15fb3410d46ce", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c51f394638f4c703f5c6a918e76d0fb251eaf19653a616f2528204fd57f2ee31", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "8de765f8d2e6cc835f971a570d57831e6fd1736c5af0d725fd488fdc314d3c51", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ad9b138975f058af8a188eb4ad544c6a950b8ef5ff247bf5ca1c9a6c99a6dcc0", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "acc6666ad017c2b8cf99c412edf499b77af2d781ac10717b852f2d5dce7a00ee", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "842573f87c2e302c63c0582842128533b19f373ab8f36299fc4bae5e1bbcd372", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "90041d98ae5de92f8d1e82fbc6889519c883daa48d886e65864def89f8a621a2", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "43c0bf18e15784f38d37d886b60b1f63bae34cc168dc9ec5f0f275aae8791283", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "e6f00d9627245dd08a7e20fb1a8ee142c69a00c349a94e95595d082ebee35f53", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "93228dae31463d7de2b1c88cfd597267d6f3c4e8a68a3330d4f1f6fa8670de1b", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "bfe33ab31fc87d78b3092c299796fad7a3882bbb6c9a104f0679c37adc6cda38", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "bfe33ab31fc87d78b3092c299796fad7a3882bbb6c9a104f0679c37adc6cda38", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "bfe33ab31fc87d78b3092c299796fad7a3882bbb6c9a104f0679c37adc6cda38", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "bfe33ab31fc87d78b3092c299796fad7a3882bbb6c9a104f0679c37adc6cda38", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "e8870bc49bdb14e2f132a4934d2b4420d6c3a3743c304c1a5dfd83bb185f6871", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "e8870bc49bdb14e2f132a4934d2b4420d6c3a3743c304c1a5dfd83bb185f6871", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "e8870bc49bdb14e2f132a4934d2b4420d6c3a3743c304c1a5dfd83bb185f6871", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e8870bc49bdb14e2f132a4934d2b4420d6c3a3743c304c1a5dfd83bb185f6871", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "b0ec4fa6721bf988cc086a6a02eb44778aa5e76942df01dc3748df309b408bbf", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "530cf2208bc98ef2ce81dfb644b560a6173ba396cb9ec54700e4ce715de69497", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "35879021c8807a706907cce1c4635f6a2532e0f4ba9667d8792936b4376d9d99", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "35879021c8807a706907cce1c4635f6a2532e0f4ba9667d8792936b4376d9d99", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "a54f432a971a3cfac8bdbd229e6ad472133980d8a9091e78457b5abeffb9638b", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5e45c16b1f10907370ff9aae4ee4758a1e35688f8b451e6400c7523fe7bd295d", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "7340867e3a69f131c9e561731c8135841eabf888fac2e70ba06a07d6fbd8c78a", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "a54f432a971a3cfac8bdbd229e6ad472133980d8a9091e78457b5abeffb9638b", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "df3f1ef30a9d706ed51cc66e6bbbde845772ac2afdf1f616901464ecbfad6220", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "826788d42be65de7fa304de3dc4cf7919d7409b5703c449512a4ae0e500a37d6", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "826788d42be65de7fa304de3dc4cf7919d7409b5703c449512a4ae0e500a37d6", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "826788d42be65de7fa304de3dc4cf7919d7409b5703c449512a4ae0e500a37d6", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "a22a436417e54fe9930808f8f71a3ea68f1dd777926de3c1b8bd6a71fe6e9d85", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "826788d42be65de7fa304de3dc4cf7919d7409b5703c449512a4ae0e500a37d6", -"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "81fc7f8e10dd2d304fcf4bf7d1a09f74d245a24c925a7b4b5b0ebc8533f9cb65", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7e88207683303de1ba96a3763e1f9d988d5ad4e9cb853d2e1a2f7c64fbf76106", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "920d50660d2aea0b12ec5e4bd5bdc5c9f64949e38b5dc6042c58552e83238380", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "3e44fe4e7e7b0de7093d8d187e0cca02950ba4ca2948001f223f1b9a6f4ae7d0", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "1fdfd140d1c0425f3c713e48c8e8604a136ea8fe866ce802d9aba7628e919224", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "095aba108b52574bad660ca8cd13277cc936fb622073a523d2db3ce77f26eb6d", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "0dd8454cedc297557b6f670d93567294ca1d417fbd87b8e6481c4a0cf89ba787", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "9a22a18032599ee7ac1be538b2098f82cc19f973bd4bc9da76452dd4dfdb8052", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "29423d8a3fcf04e09d083e1c29d6b30ece6b7aa1ebc355ba9459dad459196c3a", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "56c1ba2ee0f5c87bd076e642846a57c19342ed8934d270b401d02faabaf8505b", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "c906a58df53f1f166b569be806bfe5e74b33089ef2b67155f68851a23fa3bee6", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "57029b2a7c61dc146a0e109cf81cdb61647996c9660c890763afbde51da3ee8b", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "1f37bb312f877f97fbfffbfcaae7915449c2407bbb71b0b1ca42337b19c0f717", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "68a01d68e080b6cd2965813c8fe85e770f2adefde7b74c8263d573bbde4a08e4", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "8f8f7bf7eb412b874b9e50405465d0679df8cd29cafae44631926d292f7a58af", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "34b141e44e2167b47d04d85f4f98536cb133e5bc9e099af1e632fcac152592a5", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "c52b231f89bf1eac74ec88044acdfe204e37874eaad638af9146608664ddd4c2", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5175dbcd32076af42e39a00c140c1140d1cd68655bbba5aa5d98d3f2763d8eee", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "882fac0fe08ba3d804991ba8be15bc8d15fba79f70606d52b86642089cb018e7", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "cf06ab85d6fcd836e7ebb71156f75574aff83938860d6226658b3e95ad131c80", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "71cf3fc1a056b3c53751ff11afb0d26b62f62638da2233f279b73b16f09ec6df", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "538b507cf439691b6d2f2cd51822b550f7392c9304721baddb68c77f06802cf0", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ae6343fd50827c74513d686f81bb661dfcbe9b62cebe2bef09ed90eac26c2929", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "db88b24e707a26028512eaa444d925522253b3ac8a3aee56ae43ee6ce8d80d06", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "33d1da4f0977508ac547b589679114b7dbbe6c1969b8d5ef1dbd456d5993e132", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "f134d279af0a4c743f16be57760c6d21401789833eff972fef1f16d216b0184c", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "7a126023f5eede83abd45edba535ead4df7256ab7fce4a40ec8575a8fa99453d", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "5fab103a48a0aa7611fe4f9746342c0f301bcc435cdc38edc55951d858076177", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "28a59b06e5e1044b20a7e1db1246cfc8ccd574fc5efb793b82a812c497086098", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "d1c03681d4fcd328fa6451b672c8e87ec24f97774fff3af7c55d5ca5f88062b5", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "bb38f95d6f1dc3319727490e321848dc259a78fc953c091eca23c8b8becdf148", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "0578b28f330f91f5722a45f5800dcf19ed187e9f6b378e8886afd64f4717eed8", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "ceb6bb1520d9b1590ae22d50297e9af7e770ed98b01add74109d152db8698c9f", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "6e7a293a5f3cf5680a25002408656a41fe88be9e76b7e8c5c7fea354d9bb9072", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "fcde734524b3fe5ec66c18bbe2b63aefbbed6da860db7a593ed8010cf25c03ec", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "adec78221be60c2e679b5d042da0b43a5402fb759e8230482683ddb456170157", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "ca201dbb5a404b4d33711bd8055ea17012232b6ba86218947fe10cc840e88871", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "4fd0c6a9e32e82a7ea92ba102e82ec0d7b93d867f1e96c73c59157941ba616de", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "e20aa4a1fb35ec8ada4f18d2a5e897fa34d21cb4f157525d378cb5dca1f68450", -"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "427e1358f94e08e39fd82399731d45a37c1bbda4bea31ac3ccd8f3b14bab2168", -"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "f9acfcea4d0b05e61681a4cf99d00658586a3e1ede7dc247f0fa1ef76e8e974c", -"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "d0221c3558c1615cdf73d1ae4395aae9417fd32b6c309bad97d9b962159c5550", -"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "1a4f1cea22d643c2e1ff91c00d9a4ca3a2f9222a5e42112edb15c62067b1c289", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "bd2fd50514a558dbc67312f4f743eb0df23bcda287c5878509d93071af5f76c7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "5a2629b56be08d3fcd432043fdfec44c93d52d4f9867997517807c8c3b2dcc62", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "fe24ac4284f78ba3503a1feb4e6b81f7d4b8e6a75bc0c437ea15b01f7821f57a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "18f83883cc3e88a88fdf75791f809f72066c87649ea5a5772dde9d6f13ab7e8d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3f22bbc1df606be69611c5bfc06f1d8b8ff0ba5b17adc8235331d15fd2c168ee", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "926b08bcc492abfa7046f49a7b3d5dbeafec05d2c70279c3e2ff03916d2f810a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "8eadc2fc156c2d58d489c78e37aa1fc18475afb2cf3e383e5c5f78b0492d3422", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "7c6f0fb1e709935c4bb1d1959aa68325bb888b90aa27d0a3baf718aef7905657", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "98746f9ed8a3f18b64bceff9a3596357815a468d7c75465b90116eb23f5c1cb5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "0867105a5fda938aee016c20bdc84a713acb940f165fdb56c2541d5d9d95b71b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "f2aeefc1ea5d7e333f4535cade4993327fd350229fe4ad97cbc46a5c7c58c0f5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "c4350d0201228bfb4b351339ade2cac55f6accb9d1eecbe43aabe6efa2b8937e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2d179adb51a177a1b89de1a99d265a62aa337d22a3d48149541cf77640286182", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "0c2fe5ac188e927104aed1e6c9242c9b82a056ccb7ce7c60822ee0d81b7b1fae", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "380602da929f686c4352d12a8d3b08f7ebda11a0602e0fe6385c34375e365b5d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "da95d1d6a27541fbe90eb53d82bbee2b6de39b6ab0d01bebc59c006bb5ac44da", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "3dbe22dae9b2e1c254d12bdaec48f29026cabac680fc92743c1a5f6c1b72b24c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f718988d1d5ba11382cecde69994093c84a8140b7fa58d725ed86b393885515f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "878fad3599a41627e244bd770c83130b1e4502d419547bc06abd45475acc21e5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ad57bd031a626f419966c6a1abc4e7cfcdc9fb754b07a6c87f108296da4f0e72", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "a020e334d9dcee22dbe09aa340efdf0e4088941087eb0a8a7d978b79fe1ad99c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d47a180735802a521f2eac359250387fa06997c6cf51f46054b58993b13206de", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "f3b7bc25a49aa1808e98168966e06dac846050169d91e129daceb0e70b1e0869", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d48a54b7c1e6aab8e7a6deb96431b69c7b00972f79ed00f713466e8872a16941", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "d5869f4524c87e3236bccecc7b9b3d517ce630543fe0a46e48f591ad719e5ba0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "aeae690b56377fde71266b8da044ba53bbfa8bda78cc2fe06ce654a32017f589", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "3942ffc2b8f42736447dd80946f3a48a1a244351e46735668994686297845180", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "9387e0ca8ec8d0683ae627b29bbbd717517ffd58c8975bf29864eea5e7d15d4c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "30d2d6e78c96f692fd07460cd428ccf72aff3b9d63ec2480a07c73decf6eaa76", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "b59f5dd7639bb67b99794181393e141e442eafb1437fbf1b9670ecb1d7ab1508", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "02505c9c2db0f84520a6d832818cbcbe824679fbb6f7891c03b99c695b04d546", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "b68c14172eb0af0d71d6a6dedf8e399b6fb2c9fd3d0819aadfd3e94de212b7b6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "12d28ad8a85f29c84539a9eab6f108190a49a13e51ce53a32f8dd10f162ec363", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "4f1b43d03b5ca2b4bc3e96cd7b4442bbaaf67d6b346708b8eef044fd223cca61", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "92f3eaf02f844b2a21c804cc413edcdce48ba40ed29519cf6e0a51ac5f48568e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "88fd090d2b2dab8ed153f75f00c5dbb7dbf675a449b1df27797cce4dd2160509", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e4994eb47b22c6928cdcd2911d348514eeb890c99514bf14817779b1298043d8", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "136aa6d109936b482e50dcf6464c0865d0725eb881b437ea0c8f006e83bbbb0d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "7eb6dcb4e0326bff47c487bc1dd6fa7b2f5568b3d7f453edd01e9295532b9af0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "825881ba87847d4b8e70aeaae8c04601085d9a7728c97a311ecc7beedc83c6ae", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "26bb473b29e4ec2f4470f1d3eaa08f6078b4ec65ff8c3413e80585f5131af1f9", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "b2e830770ebb161cd06861b9ad164cca6119f65f4e63b01e2424b7b1b23ce2da", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "c846b8318f2508b56c94849772e902971dee8adf62942bb967b95c02a7b91c87", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "0175ccd332289d9cb18c9439c7c2999a63e28e0a7aabc9113abd89c49302b20b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "55db4c77f5f6b5d889a7bcc1d0eb1a59fa759c6ec5641ab06e19566f50750aa7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "f82cac2d4fe3d71206600b2269719914070ac22c7882d30560adf25ed4d1ef28", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "dc3684364f3430aa3237c75b5ca7fceef63402d2ac8cf19cb0a7cf9f65befb1a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "9f17f36b7b7aedd8bc4b9f5ef5a8a2c66e5e3f25594492963054ff79650cfc8b", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "4c0abfe80ab323885e30e3f8c77d640fb486feb55e12f3a99f8fbc5dd511847e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d6a70eaf10d969d6280ce37ace23fdbfa15d3dca35ce907b227b7659d6b90573", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "41be270527cb29d1ef90637038e3a3e2c7cf3afa970f714ead29f94116f4c43e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "92d8ab84ca862861a335cd040fc0827fa7cdd4dcb61d2258e8ca990381948163", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "2cd1351e17ee636cf80183a84cf7fab080471b4f361d83de9c0dc7e11f18e8a4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "03f12b5bac54203d71949b89b1f13d1fc421cb9cf4d25344a87b116f2c9497d4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "96711521fb4bcab5afa21d98b6eb22c913cbfa1317d5d48ff7e4fa3e34f2776f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "32ca5ce7129261182b5775cc4c18eda416f7355a9bb6bfc0e6773f1cf8441223", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d96fe56ad358b41d287f17b4135ce4a0e6733ad8388e58c03e9d4a0ba7d05dba", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "4bd226af29b31089cd30f7b80b1244b0ef727408a6bcff364b0f55ab2dce82a7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "fcfce227c8a7214ed0b9eca15c7ed608785c68ac5bca5437b5951c2e39405f21", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "2edd51d0efe13e6ff44d54bddfbf2037723adc8bf60573ec702decfd79576357", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "4db57c544f62e61cccf843477d4d4de8fd1b4302673c46ed9f69311dabd73b62", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "a0712f15be77c593874a05a120844a7426615025d943970882f43dae02cfdb8d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "6ac1f0d9fe2eb5f7e14d500e141a4eee9d49e10db634a0771df32c988f4d6d5a", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "7b2fa94450b8a4d71759c13adf8646868208f545dfc1d1cc636b7309df104257", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b466c3074fb8f2177e2e9261d2595c829683f04d28a705b87879f3b3482db5f1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "f1a9721c40bb790350d17c8476da653e62fe9cc68eaacf380a8d3e1a76ecf288", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "658f735d12a5cb6f5f4ef1cdc2c5bddd1c1b6b286a69f03f381ca84a4068a1fa", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "39c53be9f277bf5b71101478ce425be4a0bb527f5e9b73410f70183cc0475f60", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a9ccf3fd157b469d5f3f52bf3b3b45da6de95171fafaea54ebc831c7e09d8e48", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4181e232880fe2a1d838d5185515311abf1e49ef4669f6b7a1c116348c04f325", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "9a9785c09f0802dcdfb3fac92923ab188311e748c157b4e3ead08f13c3271907", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "48eb166fae383e2f15ad328afe3e1229732ac697e609af0db2e9191345bbe039", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "4028652f73e5ab7ab310f1277b91e094ef91ec317ba6264d24f27debf2c49645", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "1380e2ce0aa441ec7273415802634f96471e3dd746cb45920d7964310b17e1b6", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "d7e4456a2709342c4c03c721a6301145b4ff69482e21d4678166953284e9cebf", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f8816a6f7adf73b5dc06c494ef49c9894deccf52c689ac99e53d190781921408", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "dc577b700d455495c35d2d5311c33618ddb19f13d61dabda7ae598bbcfe91b2c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "5e2000c4e96cc212bd9fd7a0669c433d26de6ed3a6aa929d3206cc414133004f", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a13f09bbc5cb1cca39d74ce56f3a1bec1a29a96d644ea996773be5f4e267f202", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "4429cd4e635b6d094c348f9fc06436fe8b2c32f99beb8ab4b7d302b9168a05ae", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ee2deb7b9355fb8cc643d15759463f33d133984f2d8ff9bc4df9cec180472216", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "cc4fe28d21209fd66f52c73dddbb5243c0b80ea3a284871d9fa72cbc30be3ef0", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ec6394c2a97f7ca2fa912eeb6cfceda8cdc2b70a597ac7e308f441062e422d5d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "dba6dd628337af95db37b279d110174cd82f7c82fad0fb80cae274cea0587d08", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "d7b93a4ef4b750817221b0b95d7a8ebd19b06228849048d69335f61b145c2fe1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "cc4efecd176e83323dac0ffa1259c1f2b0fdd5f423fe61a5b3e3e2ca5bfec63e", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1eb1cfcfa1a6c1a65bab22b2e41bc3020a3192ed22febfcecfcd3821f5f3849c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "1779e6a0bd263e15d1546909162a5bc5c5c8dab9ad4a4f9b7d001f922ef56136", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4aae844613483ad481fd093bf3fe1e392bef83db044a366f18bba4227bb51de5", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "e9825ed7e84e2ac3a9488f3a15b29c3488b46fd5ee0a48ecf416349eb1bd15c3", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "24bf7e0a8a939c8ab47df20fd70bf06a9a3fa0959418f2f2eaa77b25a4dc801d", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "ba31576d2ee5b052c37f7cdfdef929f5725bcf878134cd034fa17166b863b845", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "286ff2e4ec705d38236aeef53185137308185681f1a8028bffbec6e95b97cdbc", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "07aa2402c274ebd3a7b2be8272e722be7ec0ede14002b1dd46d55e469012d389", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "acaaaf96048d51c868056441aea9b3d0c4ab36dde6c26f3b054dfb4d80fa2470", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "7b08e04b138180eb92006eff8e43db7a1fa9dd00dd89250d743bd5922959c262", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c99fdc1a4b58ccd5674f5b08c4fb82c0fe2ece7cd53f33320034dd195d8420f4", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "e8335e079329579a2011e4f11cb1d93bd6d9e553818b3f7b4cd343f20475eb52", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "592946a434b8a661400a55cc5b313a74d86d7b5d9d203a5242b9d0439eded675", -"T3T1_cs_cardano-test_derivations.py::test_bad_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "f72b3e0cf002db6faa94a6e17150105ba1ec11003ddb15863db247857cb0ca7e", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0c0bd52845a0d3f830d6ae14f4a4a68b8a87f8cd5b65cef6cabc7c44a7a8a6dd", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "3768243cdcf58ebe59555bbad044597de73c07b3bb992538264c62e6be90d704", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "8ca1b9c7190229cd8951f64f94fd5b10bfc38bc34c36ec77921cc9f1be817199", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c0c7d710c97f6c6b52020c086147b6e866aa73311447c7bcb3964a556104b3b8", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fda076018a178c025b78bfb8ce713d39fd6abcb864a19c4bec494b4805310c58", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "011fa0533d0d4cec718e8b69266623d73dad32a9497a2e05be1e63eb0c9382b7", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "a81c0e0489495b85ab865d1516754babc9e43a1f48aff60347fe22d2b6e5d767", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "c89579855df7f25768d6438115a2953e306ef971ddb55c730198e1d807d2ddea", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "030a4e38dc5521ae290b3a210bd92d1b7627ce11451aa98b31125a42e47d34f1", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "2fe26f168f9ccd8941f734c9acf7b4ffb756be8311a6ca361a04af81290e0b41", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "23278ecd31d7efd533ea4e8d041836795e58e8f3556cca5188a79a8d225c9cd7", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "17ced6cd99dec95365884d1b3a3ee3fc525322f281962095f709c950d3dae865", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "34c2a5866bf0b5b83a17a09531887b0f2a69f282b520aaa3e1370434d5c9e5ee", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "04317537c16111a5ba67e75f97aec78a180f12912f397e35cba05c113d8d0121", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4b0f1a23fbdd4a4ee4fdc26beba7e781ce164562724d81cab8317c880f671ac1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "598770042b5d6e716638a3853c9578fcb80bbe25aa710a1a124f9dd0defbde6f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "e5581906310c34c521a39ee8e43fdbdf68cdc413970f97a0e0c3082b270eb085", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "78cd1f88e4a4f15c2b17cab62fb2bf3937844c204e98a2a22d39157fbf73d727", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "7e0ca29248fb40d41660221a30667b71d0c55f64611c4f9960b32d843f0afc25", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "a64036565916015d019103d714a9aa5d077d007b269a11295bc35774e11a706f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "81855e13c5d5119a89b8e92aafab022920a33cdc823f3e0bf0cd37ee1640ba5b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "30cd7125b0d6118097d17f49ddb636ce105936ff7afe82923b20cac91304b2e5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "c9359a65b37eb5f768b14fbb0d7a2c1638a3e83a3e9a6842b9868fdd510b6792", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "257b094026d4c2664eb260a1ef7eaa4f1cbe4961cee3a53ae5b962a82b3266ef", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "257b094026d4c2664eb260a1ef7eaa4f1cbe4961cee3a53ae5b962a82b3266ef", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "cf6b13ad9b340253df3a03f5c6186bd330909c8cdf23db9fec42fb89222f69d7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "00b9d7ed54af3e2b03c625c6e1006105c40ad7eb4078b2b4c86008b44d88d73b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "5600bb8c8ac870b357c8d35e1cc193ce1166be830ea3040866a4149d27d9b62f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "9e42ad07057eff41ccb3d048a8cbea1d308a6926f892bf7e278e951ee2060cc0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "2575bb807baaf0d6df6c26a4c82c5a36f47ed370b3764a40a768d1268014c73f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "f98c761aa6cdf74937d5bb49a1731c442f8939c697708a2e79218bee2e3a9fdb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "68360de550d7559285c4a303c69913ddf6c2122e6c155845bf64b3106b099e28", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "b4db405058e7928f0fdc05e93f2f673cd7495afeb161a8e015ed1cf2496ea0f0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "d74cbe016d6e27695ff1a6d0c3a75f113a076f920d66a33bab6514f95ecd943f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "2575bb807baaf0d6df6c26a4c82c5a36f47ed370b3764a40a768d1268014c73f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "f98c761aa6cdf74937d5bb49a1731c442f8939c697708a2e79218bee2e3a9fdb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "397aa6f2227bb327cc39b7610577242a3628ca7559b8929c8fe9140ecb6c2157", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "7443b4aca85131c15e9e5063b47b3a1c4d9ff43b170c2ad271518cc2b05a90dc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "27a42225dcfc345dd0df5c8d56d2aeedfb41e7ab1d4ebb956b1291804d5a2cb2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "4b45576ab3b800f09d0baa908fc66c9a2c8b4ca90483d8ef918823229dff5cdf", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "782e702a2779e30581ece410180bd67a86cdb012d4abf714872e8ea1e6940f5b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "f684837da40760a318811ff2efe7962102f3bf74fe9323d854a71b66c994bc65", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9616088751911bd114124046943dc4d5ab16a3d2dbeba014e06dd368c2001e09", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "0fb0fcd5f6e0cf784c304e046323badc33c70e1a617b9e9f414403562d6ef449", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "a04c9e6611e1f587c18b796c455d5f1d9a5938f1b5c3f370bf3a137f53832a5b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "1c9a1cf37f40603e862210a63799bd6484365545d6fe23924812336f1d1a0a3e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "5805c76d0fa526d3a5491ea96675223cfa740298531c552a06fb9a640b34c799", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "4768ff6e4b0ccab237edc4618341c4889c92c9458858a1d30d41fff9191933fa", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "247a02ba5d4f451220189c097ae5cc019fb48a481c504e4425ca66265299fa7f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "41569ce9780aaf14e031628c88ddb2dc24c98d20e9200d5ab25ab164c61eab2c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "4556ad2458f89943009aa683cf4dd5351ad95e4d02c4e91266d187bd3622238c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4e615e0af9518c7478b023784f50fed3503424d73f8fcc9e307d0b1481678a4f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "caa4544aba8d8c8ac520c44b565f8ace930e6b7ade7a97eea89b693603774b96", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "ca464bf3e1ccb3c6ff104947475849db78429b28c00f10ef745db10825421d21", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7613658ae720bf392e0f1ff622c9dc451b8b1a13b2b224bd4196561cfa704ffc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "0e747ffecdd139ff1f17c5706d9657aac1145e1bc92c07ef0daa983adb6d304c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "28d33910da7c496b21ef3dd11425ad0d52c2885cf3a0737e7a81b3504b6eea96", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "17d1e0c49328746264b378a36134ac6e3fe1c8a02c3ae3edbc8fa225c24e0cc8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "444b27d25302ee67cb35a2dab747501fabb9558c3e72f3e7029d09fd81dd5d8f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "e07ebb0981748d59e33c928fde04861b92182940c5d51c4a2f36108fa13bde82", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "faf0795b73cdceebad35fffc19837ad749adfb74c08636e4d9f583e9c1624587", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "e320de528e838c5dd7190d1f0f536830959939fe86800f4e6a3daab4bb1e1227", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d6a79f84a661259cfc4fa4a41635eba46a3393548d9ee721a2685f1361f5aed5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "13ac00865cfbf44d51d3e525207a1203317db6d352e94cb4d16d934bac458593", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "bf546282d777ca232c63c330b8ec53ce90bfe61dd2f3c517944564593c5584cc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "35403066a7fc57e8b07461f83bbfb95dc804cb021cfddd7c863cb77d0043658b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "474c778725d57248b73d80082a5d3af9d0224531f15f877348d3b747a7550d9c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "920b9ff30b061dc5a2521bc1833ba8931a70bccfcaf6cd118134a29e0fd4a46a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "daa914a488f3e728ec4bf4adc4f66a079ba50eaafe36408946adc5be63da9155", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2875b252de5105b94a85aec7d15c3726c7b3a5d6fbf0ad3c0eaeffde10ebc4d0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "5e5d1ffa3775268f693088c4e86aa35b157e723e5989ab65dfe71be7bf28ce6e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "22f0b782a1a7e5faf6a22c5f03dd182379c5344e6bf509649dfa9b2cbc265411", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0affeb1bd78e4a5b6c25525efc91ffeaeb995ac9c0ee87e2d5410d4c603b9d2e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "859e03aa6ecf708c9f27d893a74cb602eef8811f2a40afb79d03211e3ddc0b50", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "ed663676fd629ca02f6e6dccce0537f8390bf65c76a595fc3ea45b18e24d8070", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "472e3b784c8c0efea2d91059d8572a094814f3f74f7e727fce1d1d0041574cb1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "93297b903e175d01c44a7b9ac58e44137aea51de31bc6aec0aef70e6a62970ad", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f5b2ac1ad07b1a984f106c380d747cd6f08c8841308827f1965413e58c2ea28b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "5c0dae252a0e674717927ccfb6d95f5e02d1058dc0e2104842250291f00ae229", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "0b63bf1168913583af3df1c56cfca62e47ec98c960870b66bd74665e91bd3ccb", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "86042d4400935e79ce466735d5103282756daaf883784ebbb0632b438ca3f767", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "601cff55a2c69f376b76ba8d373b7dab1f062a3350f08c561693cd706e969135", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "5f53044e1e518f7af4b703fb3cf1ee752efb8accd82979de5f2814827827f52b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bb244d1b4d35d2cb39436439e496b99eb373d1643c4fe1796c9f12e4e0fd9eab", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "5804d2825f349320a30524e4c56674c46d76bfdc0219ae6f65aa0e0967ff73a6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "09a1ce3922bb897695a118bf68d45e7598e2496973b158a712900163483d5cd5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "62bd1f6189402c2afca2a241c8dd27bc7ecde1c39fdadd399fa05aaa4cda6d39", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0530d440daba0a3d450b576d72ec300b277dba47994a1f55e9b68e6df955c543", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0530d440daba0a3d450b576d72ec300b277dba47994a1f55e9b68e6df955c543", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "a4463c26f958e93a133d228efcc0e9f189706a9a0dc6c44d95f076496043ec24", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "75dd6ddbc75ba22e3db2a632f371533fe9485f2ce0b4cec059a50048bd46f64b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "75dd6ddbc75ba22e3db2a632f371533fe9485f2ce0b4cec059a50048bd46f64b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "55a27cfc62611627154daffc8e89a75e2d799b1dd9b3f20ddff1fb38234aa6e7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "931f4ab34f295713a841c9b2f9c034181fe8ad3de6bb24ff842cbf206b2f43e0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "521aa7d3fd3152b441257a67a924ecd809d94c6d5324787ca59f6d66c1945951", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "44322b503a6f6b0688bf1d776b91fc52b1abcc4b9c55d9b391c12e3d147942e5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "eed18501bd6f44a45ae1d55c540aef17be0873fbbd091b33ef87d27b9a510866", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3c161743c0f47c1541a4a6804c9a7becd4aed84f2be1d4af047daee9db5f5584", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "cf5a9e354c092fdf53b0ee39c952a8cdee643de3bd5597f1809b294beacd584c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c00d93e0c612d44b2b16e3d45f4600e3f477ff14ea85b097e6729489ac214153", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "e5d201561deb38b49e53078ae479600ebef11bfd860b5e97c3d8ed0d04bbfed6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "0c870448edde2c0380857b9f9542149d673bd49840d27b3644cdb86cf851c8d9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "34c2a5866bf0b5b83a17a09531887b0f2a69f282b520aaa3e1370434d5c9e5ee", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "7e0ca29248fb40d41660221a30667b71d0c55f64611c4f9960b32d843f0afc25", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0ec3bda89937b17376ff16539931fb17366d777341090cad7d13639581d6bd76", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "c27c1b1f35c8c5d6b21d6023f842554ce161dc844bcdb889e8c652101ca5288f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "c27c1b1f35c8c5d6b21d6023f842554ce161dc844bcdb889e8c652101ca5288f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "d5401cee06f247e9d1f20a36b543ef926ad62459cc3e72ba94a46e1752e80927", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "a1ff1c952b34e1c4a99bc80fd5a9197f5e0923961422d460dfd1f5af671edd5e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "eab1533d358e2db7b3c7a6e4c39421f166100c7c00a336598d5233ef5d4b895a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "10aa0ec85875a548cc4bcac6227966db31972f3cb88f265f8eeca675060d12db", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8fb77595f043db91c397dc86cd8ecf39bd28aae34b0b0157096af7918879ac84", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "23d9c5f32947b6d962f824c8a44f06cfdacd50c07e14fe4012ae7ebd54e90569", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "434145b6aa4ee6154bd6b17688a9a7e9beae3e89cb111d7098d01d99a4259af3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "9532bd42ce023f06a3da9f6260d65fee6c537caac4c39811952539286235b207", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "9532bd42ce023f06a3da9f6260d65fee6c537caac4c39811952539286235b207", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "9532bd42ce023f06a3da9f6260d65fee6c537caac4c39811952539286235b207", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "9532bd42ce023f06a3da9f6260d65fee6c537caac4c39811952539286235b207", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8fb77595f043db91c397dc86cd8ecf39bd28aae34b0b0157096af7918879ac84", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "c161bff40232f09546543843a34801c561bbf8f3b88f8b2574fd8dc48d33ebf0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "87c082b29fec5a69760e8179fff1166f12df37da4ed4440b6a70514a7d91d094", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "9c3d021a50319d1f61cfa71c67ee2c2bfd46a929c3f29445480e5d742fe923d1", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "ed4b785869cb2fb8540cfa43043666d3bb72ebb3a11df72b25c5d04734cce914", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "c68c5e0eba47d40fa7a77a9fbae82e6ebb2740f4beca78208cf17b1d21dd569f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "68ce01d833d0bdad931a490a68b57a2775058ce3899d423a8d583a1da48913e9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "d3ca529315c67e0e7a1009d958e6e188a37cd29c5581a81cff8a9e9861b81e6c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "1437aeaa2950b08e0af51498db0b05e6db3f4afc7a6711e5cdbe526c2cb29f27", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "4d766da44927f956a17b21673ae99dbbc14e2ba10333aa15c23e3ebcb4c7685a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "986813d4953c4cd72435908c25c00e5f863ecad5063b05f4fc9ed5100cee8166", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "64662dc5fe9c5849798dbe55703454d717447bd8cb3f99bfd1a955aec533004b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "c27c1b1f35c8c5d6b21d6023f842554ce161dc844bcdb889e8c652101ca5288f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2e37c5ee34da97a1b6c451b7b1a8af6bb1ac743cc13c8467fa4e65cb5b2104ee", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a26b151ad8ea56b2b35dd7d70f9c2e0508b9a4adb36e4b1eeba6531551e66f6d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "d0ac8fcf2d52f1882bcdc68f516666da3397b7de7af58bd8018cda6e2d15a79d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "e5bcf936ad927b6bea9d8eb756b5e2590ce054f7f3cd4c2ff826ba3c6b0d1aa5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fcea60690b951eb15e50406947f2edf72e2f33cbbb37a4c0e97460142cbd3617", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "8f219adf694b3733acd1fd8d6e1ddd6a65e37b91aa0af1e9ec035203e4896da0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "d44f5af1eb96ad5808ff2c932b646b1865956a322f7651c673af2b5f2869163e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "8196f2973e8b9941ac657667501ae3f1600b3ac54f896afd8cc8e4911275ba54", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "b189f9f36c16c1043913a9161d2b53a5b4dcfd993c173259f991990c453d2e67", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "be6bdb8d25a352c6481de81683c5ea9a5ffef06eb9d8dafcf9b0230115f9baba", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "67813e2fb333e850b8ae186fd13ec34cd376d3c8d7e294436de27674cf47af1f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "2b7305ad0753e84d4a4619c82ed3a69073ee51c054618fde42f51a7f3d8cbb95", -"T3T1_cs_ethereum-test_definitions.py::test_builtin": "519c42d71c73c20ddacd0c216fca77da6c35ae8ad2b5764eaee15f88e775dde3", -"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "3d337a849134f8e83207ab4db004fddc1cdb39f5b596ee8ac3e9776f6f549c81", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "4c64f47a05f0f9c45def8240bc4c8b2b151b5f0ec1c025ee455e7f1912f1978b", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0140884e6a620b7a710a82045e7d2562d4dcd5298e9e61f850607216b4e91b77", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "af40cb3d357d02beb3328dfd345fbb833eacf163da67e76b26514f48f0990f61", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "1983816e5e6088c18631b06afc2a214579b112313ed95c0b21c22bd1081b75a0", -"T3T1_cs_ethereum-test_definitions.py::test_external_token": "da3fbaf2216266b21d4d31237481786b2da7a65a58d987d94c0f82d438dfa2cf", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "1340d38f80f6f0203fc60f7532115a678e5bc0321b3b674476cf123b3a7cbcfc", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "4449a983efdf0b820aa057f8b1ec4568b786b2b5da4f7d7cca260c4f138b0fd2", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "86034133ecf3306f195f698b347018d81c7b80a49126dc053ec789e6a74cf3ef", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c61e8b0093f723453fdb22b4803b2f51263695538362d908cf14d97a4401d215", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "d165120660fe947555d1aef204cac03e86967cbf06bb6c4ca9a7f2f196c7d73e", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "c0788d7b5f5f560ed0eda1f13eb5186bb632f452931fc5e10007b2af08932f20", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "77fa991edad1fdf9b3d2cdb6803edd61a86c7eed3cc54e0237675aa036004c34", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1b49f2fdf92fbc6aab940710821f2f200b95d8c032e7b4d670dafbbef0841b4e", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "1bf98b26469a3fa79e788db0c52db8e47aa6c014038e4ac2656c9340ab27e70c", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "30882e0b42492d8152b22aac211c0a057f32d65011b25c9f6e41c6a6b39cef8d", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "2be8a10bc814cd42adf83d60a8b7a53f6c07913c8dba5484c545a083a425cd29", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "58d5eef010f6025531f618a36845244d7ae509de019631735ce7bf256629471e", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a3e327a43fc36d81a24de781bccea9c53802a5de31aea00b3657efe804113a0f", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "36399d81cc0b979d9ab89f086400cf39eb5a711c3363e9ff8bd733908b9502de", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "b0889a4910e3107170af293eac1fa2aef47125fd0c98c36680f92daca585e46c", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "ecc6471f2bbfb7f9f7553f9bc2a515d34b124b251e348fb214c216ad911408f9", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "248fd7c1efca7736077467f1054cac4cff52d1c372eb059e8c23082920cd8d99", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "f0d75ce83efaae73b3e6267ea3987ad8c82c0935966a0ac33d7b2b82208a984b", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "76fb5cc83d06cb8e5a9fa3a177d91090289676d4b1fd389837faedabe5fba654", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "b0bd4d095113712d235efdae60a364e222e4da1c5db7238d91504d94715a120d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "e3b5c16b4cf0c56ab544b75ea8aa3fc1a2f0280fafe3a29c8829b06d095789d6", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "4812ed2861dd8118cd0d8503e2e9c9b924f1759db340c10138928bc7c7ead08b", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "d44eca584ed1e194733a28d120e4dbd9e49c20a9b90228ee3b25a46fa845a480", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "b0bd4d095113712d235efdae60a364e222e4da1c5db7238d91504d94715a120d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "b0bd4d095113712d235efdae60a364e222e4da1c5db7238d91504d94715a120d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "b0bd4d095113712d235efdae60a364e222e4da1c5db7238d91504d94715a120d", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "e57d2d567909e66452f836424849780bf9796427fbfcf1be260ea49488d5e763", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "d3044951820b81c1543de6f6b22e36083d6745f1e96e638259e0613c85bd6cb9", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "54c5ffcdeb6a8f4a6669584c8839c417dd48dc648f03c88cfb2d82c9c517843e", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "ca4ed388f750dc34de14c987e5cb92f2e73ca52e559b525ce550c50a6a7397bb", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "0c7df9972c6911fd1b163ea125eaee2fe83fd6cb4a471639802a7e7711c236f8", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "9ceeedbb8f5ffe77a18afd93bf3827f1a9bbda4f95f101188f73c4d5a9d0715d", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "d8bc28cc694173a807e15bbb29832f019decb925ac7ef0475836703d7cee824c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "7a7617d98a68e3409d4099a1e30a4e36798539bab668e93442b6ec5233288896", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "568bd314e039ca93c9ff29343bfc7039daa546464448943ab205b378cca08525", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ce086bbbf8232f02d6833ab4a7829adcd48048af7209f533954cf4925badaaa7", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "0d1bb2a1891957a695554743bca87f9c1f0d4652af94d269e3c7eec0a733a089", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "b0b104b0428536a05e9d636c0d69fef393f104dc64adf9b9b51c9c311008b9d2", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "0cb0e683a1d63226128b3b8ad1a2f7fbe518151bbfee640d6026dc6c4218f791", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "0cab50026e6c7d6128ac9f3ea996f9ee2793ffac17010e30d7388bea1f5dfd4e", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "b20a4c0bdb0ede976d2747e6df016da7c07dac24fc1b20172f5835c37b896911", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "afe056312c418113ca6d116597422418649569a1e9cac05f10368820627d796c", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "1395ac363fd04d7e987b51b4528fc7d70f2bd074cf9f71d3da423b5a2bfef26d", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "930dc712ecec6f262d5285b6fd1194d13b3d51a228b7dc24632f7d36f2a7eb80", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "0d1bb2a1891957a695554743bca87f9c1f0d4652af94d269e3c7eec0a733a089", -"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "68b4a3407fd306b28b2b9f21f04ea665d5f68d93bf0710df5e77742d6262154e", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "b0a9660c1fd1a33cca4bb22273cfbea684341b92b6167a28f9108b72f378fde0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7acb46a07600d2833b2f108ae01366d076e448926bf568ccdf5a3dde3e36a06d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "07b62b947e8f45e4f0adf2f3834ba86bc9120859d56f3fc6cbc9b2324cf4c7ee", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7acb46a07600d2833b2f108ae01366d076e448926bf568ccdf5a3dde3e36a06d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0f865c27e096eb2423c258c000c822a5ff7f264170e5f5924b4354e636482dd7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0f865c27e096eb2423c258c000c822a5ff7f264170e5f5924b4354e636482dd7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "8e7fc59b5ce17b1ac194f283eb3c1a3134f81b876087bcc47ada84998a4e44d4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "274cd349427225209890ded00aadd7f3c675452512487a9b81cfd9ea253ecff9", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "b6e64e6402680deec127a53255d67a8b86a30c8f02577008f1d92292b0924b4a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "976409dad5a1554d579127cf38e30c9fc1268c9d8d6110f47f5da7c18ed4ee57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "b1df18550d4fa642490310ddc912061e0da8425b7a76008b00a5612621d11aba", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7e54501e14f0840cc80f218182e2a67adf5f2979f45bdae8dd76f122fa7cdc37", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "b8ea1e8146d900793d6c76bbeb9134ab63bbcfccb2df5bb40f2accdf32f39f44", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "8e4f4d694f1f693b422d66f117b1132b05418d1b96f687eb69395a4f65aac617", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "1eaa0d59d0201364267924678fb176d14aee897bc7e2c66366e468957cd1aabc", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "1d778059e447123a0c62963b9ccf29ddbe33c4306983420d1faf25390e2cd4c2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "5248f5f725647f4ec8dccc73793eb44834f042539004758bb035702771f2af32", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1d778059e447123a0c62963b9ccf29ddbe33c4306983420d1faf25390e2cd4c2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "fa642af5149f2e3d19d82a371d93275d7160e15f30c48aa0ed57352f65af0801", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "fa642af5149f2e3d19d82a371d93275d7160e15f30c48aa0ed57352f65af0801", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "8674ac19a23b711a2b927ab7f9678732fe662508000d885f8ac3c2ccee55cb5c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "a99c749be8ada3f83df4691703440cf298136aea1a9a847fda5524578c04f78e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "41f01937393d36f536a6e95efda5c5b33b397e1f1ae5d19496d846dfa8f02345", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c08b16a00294b1d6afe42e9a9654b79566c8eef7d10ac3ff72379093c594712e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "b1df18550d4fa642490310ddc912061e0da8425b7a76008b00a5612621d11aba", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e2e57aae4e0c26116b77b9e5ce1868a67fd54dc68538a1b2098867ea4a0fcd11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "573d1985a2f49529b75a34d76053d722c1386fbca07cf30855f6b37364d31ade", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "314471fa182e68c85d41452ad286660ecfd7d475da2d1489535d21e8e25e06a5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7e54501e14f0840cc80f218182e2a67adf5f2979f45bdae8dd76f122fa7cdc37", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "8e7fc59b5ce17b1ac194f283eb3c1a3134f81b876087bcc47ada84998a4e44d4", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "caad9d69046122531524f2c80046ce4566843260628ef83ee8ed151ff21f598d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "b6e64e6402680deec127a53255d67a8b86a30c8f02577008f1d92292b0924b4a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "5d96b736e041c8a11ce48ebe21f3cab763aed31ebd2d8e20a9e6df545d25605f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "d99405bbb4346f5105bb2de4d3001ee8c0975d9d622b3e03bea820090e6d2209", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7e54501e14f0840cc80f218182e2a67adf5f2979f45bdae8dd76f122fa7cdc37", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e2e57aae4e0c26116b77b9e5ce1868a67fd54dc68538a1b2098867ea4a0fcd11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "8674ac19a23b711a2b927ab7f9678732fe662508000d885f8ac3c2ccee55cb5c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8317185e499bbcffd637cc86be4fbba23d5ec156b3bccd5eda431a164d628f5b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "41f01937393d36f536a6e95efda5c5b33b397e1f1ae5d19496d846dfa8f02345", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7c855c2d551a2bb7bc464e920d8b472ee5eb2496cb701bbccafb4e965d052708", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "85c5cb2fbbff2cb071b4a732889788c2043d2818671286e789548a8547d14866", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e2e57aae4e0c26116b77b9e5ce1868a67fd54dc68538a1b2098867ea4a0fcd11", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "be972eda7f2aaa42775092efe1025a3c2dcd649cef57159275e61ffac287ca57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "be972eda7f2aaa42775092efe1025a3c2dcd649cef57159275e61ffac287ca57", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "7dba76e4de853473d0283605d8d0bd4037fc80bd6e9aad9703d96d533e7f5d7f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "1376aab55d72f62512542811b3143a8af1243b919ef2f4bc1ea336eb8180fe91", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "5b56063e7a8f9cc5a8574dec164603967b94e77ed0dce7737a008c2856336d87", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "5b56063e7a8f9cc5a8574dec164603967b94e77ed0dce7737a008c2856336d87", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "63ddb1bcc147b55999035a581da9fe9a607db9acf454cb307414b4b5c5e26e16", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "63ddb1bcc147b55999035a581da9fe9a607db9acf454cb307414b4b5c5e26e16", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "9fb0a5c06500ffeaa6b953b6e476857ff20a70c82d5d7229ad93503e212eb0c5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "9fb0a5c06500ffeaa6b953b6e476857ff20a70c82d5d7229ad93503e212eb0c5", -"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "26b0847640991a493bab11fe8448110a109619e8ac807737e6817f9be046fb72", -"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "26b0847640991a493bab11fe8448110a109619e8ac807737e6817f9be046fb72", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "2efcda3152a2c8f45b4b84cbab237010e92b9252db2a9df18a69201413ab9809", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "70c03a56bb4f4a237e80ed5cf67e9014814075396f0092d2ca082f1c0e06d1f9", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "41fb5ae2b836dfedd2d3edbfd573b7ebcb278ecc1a9cf17632248f6e96d9408e", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "42b1af946023eb074d764c4800ed8dddc3a5a0217e8ef11788dbab4e24d13a71", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "475ced912a2fa37ca7b3deef526d651583f053d1e92b407556c21fa469efae4e", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "5870264ea9c210931979aa9026f0ac437b5d4e5194286fe05f5f00cd02c93184", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "52921c23ee83039660794d73ad388ec7df876b1399652d4f98b3fc2b3a19ca13", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8b09dd61b8f0561006f1911992d7befc6af75de97f8e62b2985afb61f0c1b03d", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "52204691ba449c5b535a72590f1be0a03ee36d7adcd6ea0e2eeb33ec3b5cb84e", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "8ce3e815de16699c71d1654738178dd2eb8e9b51eac2f27f0979b6f015ad5db1", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "3ee1ee58ed453f39dff41ae17b924906f05ca72992bdace84f761080a0f4769f", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "d952f434bb6b1002c556e7b82c2c7359a22eeb1c294b4d431c9c2d1ea4aa1a8e", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "07b4a08130d529d6026e5f416f51199877b45b994f332c2380f840674ce99452", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "bce6655b89f9c3d50862a3f7afcfd7a613aa3e04dd8c56a878ca3d2edb095d2e", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "840ff896ed73e52f8f6746c425a31dcb27552dd86f4a65d88356f4860359949c", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "c151c5234691339746e987ac7536b31701b941dc9af54293a13e5b1e0da9817f", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "dbab3fc37b140b9c624e39b9fbd98fd52a615c917f569dce7c74f34320c5dc1d", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "84938d7cfba0d5c742ec6ab0532a96f08d93acb4e6fff34b0b5c73dba232cbd6", -"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "4f39852fcec30a852e74b8ede0043637b67598965f0fef3925fb78160dd7a7ea", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "214f188525486bb34673ccf7b0bce79919208fd888ef1904f1c6fc02df206942", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "5354941e7093639a96684258f349f4e913cb31dc7fb886baa4ea1961acf77bcc", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "6a45f7cdb93561fc85ada02debbb1557f710cb73510223c305a5dc72df1c8960", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "58c144556790826166643f3ca1e91c1f44beabe14e56ec29e22a16e9b1662828", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "c94e99466c76302a25147f292147dbafa395cdcf7ed4a2121b24518924b09c0b", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "701a065709ea9a966e7328c97bc08af6217dd2a5aa1a6c6f391868271d236092", -"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "30ae4806ff6b6fee52fa42639444a4fa2713a969de51b24398d28fed5ec08171", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d6ef416ac7b735b2d877fd93fbb5b3062dff40521dd6fbd6b6c84042c7a9900b", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "dde81485dec7db1783d58d1b3720ba6d2c4283521a7bf342208d0e9d2426e0a4", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "abe65d454406b55d0387f4bf9067a67839b3592be1e4489dd2beeb3adcd6f694", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "7d4410c68d76d7c688293080c56e97181b949f087eb8025e82a4703070956278", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "22b9bf4b0e63d8af23ce1839dae74e96d9f1a25eebdc1fc3b300918b05611110", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "5d6962f30e494f92367f12482f8faa44a3f06b62691ddcafa2ff2a2c8efd899f", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "812f1db443b85401aae2374e4540f9cbd0d5e8754f6191404c39a54c35951156", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "21c6e91e068cb4191b38d68f57e615af46b383dda06cfb2d58ef011f7e05e81a", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "007e9885f394c279f2ab8ce5f4cbb3309de2a68db1a16d63940936fafe1daed8", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb83128f7a0355de2e753929c3cc17159782236b1059b159b6db63e075d5df1f", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "bc529300537b099d6d61e41b1f66c6a325b83c55e77cdb37389239579fc5074f", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "10f85793232f7fd70509087e7a70e0ca7a1cc655a815d35d3aa8a28338551efe", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "6e7ed5290ef6c00c5dcc216745b302bc3c8a56a672651416d8989e0948fb2f8b", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c79aba2001ab603b93998560d92b1fec141ace32cfd165d189cfff1e860dd49b", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "65669ad03d6dd8b9fc6e1654f000c060509031d48e3b302c0e8afcae52d2f7e1", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "5d6962f30e494f92367f12482f8faa44a3f06b62691ddcafa2ff2a2c8efd899f", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "a8b6fdf24af3bac4e1782a52073fcde94bfcb53d3411eae46157e83ef61a4d64", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2391f07c958243a88db7e7f07eaeb1d439c522ffcf9938c11456081d97098e07", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cfd78d8518d3c7a87c64152fadf9d9c6bf1e470384c938a48fd03fefcd13d422", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "05efb147d2f5cd1199e652e822f68c9f43743083711853a11cd0a5541386eca0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a6c7d863251773af780b6d31fe93e2f1936d7180493be392634f4bdd0a57264a", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6d4789f288056b7e45b049552262b652789427cbcc977808abc87a3fb27ea5a5", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "199b2ab77605e98ec4e9a91f9818ba568facbac18f608d3589fc4d9e4e245f8f", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "31dbbd798f32b7b9f70e63c2ca3992c7f0d126bd48d3d325a9a3fbe10291c718", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "bc95c7986683ce6f68fad93b4b95ba2d829dddc5d814d20954bd1cd73db73f36", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3bbe35e7e3381cbd731587115364a23ca81f3c46daae139a3f4b3318657ecad7", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "078e39ad342f3a002fe7cdefcca973ce570bc7407db129968aea78d29e9247cb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c9f7c4431bbf69d2371943e0b0fff4414d1b9e1bea20ab41e6b50d6313409be0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "35bbfe03f3ce4f473fa495a2fce298e89d644f4f36877b90e087b2e6237c1ed6", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "5967a8074677a2b5f022f4e6fde57d37b78a8ef6fb00994db10e70943493b2c7", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "792355c269a86c78b64ddce9e915bdcf4d72a59ed2c085503939264ec441ee5b", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "236422426930207756998a98f248b35ff4acbf2751288e54734b379b8e7c038f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "64010cf1bc269e156046935b88d68ee5ad6d7b6a24cf8f4a52a7173298c4cbc6", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "354d102ab42b9202869716600d31dace4762a2fed929d9618dcd5155e6f018ff", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "310e53ca83d964fc2308140ff0259c206d9afa063f3f955efa54c147e788bf8b", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "536a43b2531a39202556103ae3f9e4b071c2609a1ababd30244cbb888ef861b2", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b49b525ef014b998859a653941b2fa1786ab18f18815a4a562f29500c917f622", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "aee9f43bb380f610f410140e70da8d42fee223ab7db428d0476d61a50990509b", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d5b5da11543250fe8848c57800cc713a4ffd2636c80f4e258ad8b34f7e537f2d", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e3d0f245b143b41bbcc096a20cb99952f65fdaeeb03d8b9c276faf74af0d8a40", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "727643405f48783ca95943180916757e81cab105127fff396de4f119200a1fc2", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "855d89b5d2bf8ce37aaf9beefdbedda656091de82f24ca64bc4b83dda7de9f29", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "42f2c1895986664c57a96bac9a6c108e46f0df9c1cf4babfc24805729bf0b0ad", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ad94ba8002a74790b9600af8871014f3675aff804b0be1843a88427aff8be646", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cfd0be31ad705347ab368eea0fe2ff8376bb351aec953aae8dc96b12ce52740b", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4a9a276950de04a860bd856884df99581d7a219b99fff7d5f4d97d1759bd5525", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "50603c4d74b3601655e8858f44ea3aba4e8b3068040c462defe9039a39fbedc1", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4abbaf876f8cb7a9ab5dbda9268e019869bd76407f073da1d705891e6a4c3f9f", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "0148d8453e66fc43a37a4f159306ef9997a31509045d20db72650330e47754dd", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e739ca92ca25748f96183431e9497e524a02d888ba59365595feb52f39e2a8d7", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "c77c15d18c9c6fa480a654cc78cf3f31bb8d4145542e7e06a6cb59e60fb01eac", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "6f81a56d36580ac4b2a70f2b2ae8157e3abcebde87d04172ba002c21a72a4b93", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a759baaad79a72c6e9c9542d47880433f71be13be4014bfe0a6ff6e8a0518993", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "31b98378e1639b21d9b0cd2115e2b36bc660a5a0cb23263770f0f6a2688ade6e", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "19202ef42b7c58a773b043f1c10322cfed6fe6da0391a11a1f63fd3d50d81c7f", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "131e1079caf5485a0b853454351f8cf081fcf173601c575bb029e623f1250f87", -"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b78e9c0354897a943f837684f23653cbbabfb17698c93adab779a4e8ce5c3626", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "128abc2858b9ebfb1dec79a9d65fcdc73e4dae7203627fa106a30c35152ed291", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "53aa3f326a66a8a75d91bdf1341a60fe24f6d1a4741fbd115321bdba4a0760fc", -"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b7c28928ed2ad9991b6a484a7a3a41b8da45e4bc574078b99defd67f21c07f84", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "acaae17ed9b0fbc11e0cc9bf43a680155eb5613cd594d8b4c003004bfe3e9575", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3a40ee7f271952a52a7fa156ad91006ae0747464dc86d85f3d18e0af5b6f1a16", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "96f01caad0447f3efbe6f19923b024f3452833a8d1b312e89896f3cdd3b4ecdd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "71b26da6cd628a99abbd5a71d8d3dc2a51f1db9e9c661a4606435078717016b2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "fc06f092e1baaeabcba2189741b4812dbc041c7f0acd3595304ec275d68977d7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b1196e4d197399411f53b7e4f655d7aae31b4b8d30e60cd7e536c3d6ff0c6ea9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "e758af17900d656659cc33cfa1ff69a21ac651f986dc7ac179c35e7bba497e9b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "a89eb4d2719c16883c89f8e270e8154410a3e3738fd25bac4e8a80e8510ca396", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "44b8fb50f21d5dbaa0dd24c3abbff08f0fc35b6ac973ca10c2f0b5840cdc998f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "77898973ca7fd7f80f88d44de660aa390cf2b5fbd6deb7b777f75a69ecd1cfb6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "293c447a30808b3070e30815de47c8b3072af9f5b4209d9a76d5753c772cced7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "c79ce240ac63092a8bf19387339c120c245c66865deb7b492ad1dbebdb6ba6e2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "80b7370c6d35aa031b67d4e7275d461c4d78cefb6b4d749187e40761fc844979", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "8675522ebb295ff50c363c04f19be113e64fdf7e76a7167bdc4db75061cf64ed", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "1e91a07742c689b33fa6ee08f626f50ecb09c7d3f8afc9922bfd952e62fb80eb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "4cc75b8253f79410966d3dfa5eeabfc4ab3edd9e91372c593a642aa739d4b2c2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "01612892429b47f9f5c6ebf2f5d3701778f7755f60e6e69f519c3509b4f18908", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f9c6bc70f9ba59fb7ae770cb874ce404ead99b1cad14f4e596ad71d63bfdbca2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "929b3d61c149da8e4b2506ff7fa8b668704a614dd60c919e137ea3f6e7d345f9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "61c9c3283b544afaf6fbeecca53995649c9e0642d1fab44f8bf61043fa2e17c8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "eee0a1377a640bc4eaf835e8cc65d11c4d66dc87b94add2803e75206bbecdc9c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "eee0a1377a640bc4eaf835e8cc65d11c4d66dc87b94add2803e75206bbecdc9c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "52a85bef8f2eedb7f7459a5a8952a4cbc5ef4b52cd133bb2d4daae0f594832e1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "39f8547f36ce1c89611620285b4612d6fa3cfea1e30e4d43c68d4c100b73e0cc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "03ea2bc77d125b532627052d5e67e535250ff904ae529dd6f7bb454b01cbc955", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "416719b3db8b7f5cb20e1c95cc653580b2eb1a1729ad399e75e2b4d7f526d382", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "36940e29c91fa52875616493c7af97c8a6303e95c413f05fd5f1b0c6915994bc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "09afd6fa5038446962de5e104ae7f1d81b1ea945b5df01637078a2380cd555c0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "793e95ad0a4ef3711acb46033020677c88394737e6e5ad1cd840f5f898900863", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c632d4baf90a6349ba7f20390e27938e4701f3e4c7ab5f06d41c1c0d5d57e36f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "5cf3e62aa4d56d8d8ceaa8027cd592475b45ac904dab5518703f3f24faa91681", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "4d2d71a7edae6817baf64eb5380999ea55b051c335a2de178c763b5acf159c18", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "184ca82c9a9214f8769a3172acb86e9e224a3749d325801bf7b46c28ff815490", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "cf7465491990b5ae74052530815a16fcaa726d573de72fa10a0985667a9ab815", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "c9ce754d8ef269e979a2e48cb467bd82810eef6f6f742700354cfb4151a5f756", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "734dacac9c527f6ec7e6cf85cf120cdadb4fb788074b0a4e0ca2cd415e3b6e34", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "9d41a103de0e39e03b08ed867d33f07b9d1ae6f2bfc3888d38c223ca1fbf040c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "35bd461ffa6017dffc5c89ba1ecf8ebc227a3ac926087795836dcf8e718eca28", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "12355d2c27aaeefebd040000d76bef93c08219463441920ab4cfd27b6da7222b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e34acc9fc207787ad94b7884973315d659e9f561731b1039428d2e2b548dd94d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "e8bc8f9a7b6c77f2e035aa4679d981281a3c9e0441f2c2fa0b0832b94cea500c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ed4264a7da4ecdc23e936fa4f8587ca9cadd777991b02a0b4f9bc7ba8c574fd8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "aa3a5c869cbdf0f96793687aa39c75927b2766ec57b3d0e7ec5fdbc52c173ce1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "42307db8319f0ea9e959d0c743b91688bb4f06d16c21e5ecd295a599be82aca9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "51cf7e80fbbbfd490d16fe1c52f3ce5efd86aa1acb20da8732e300219572d391", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "3454f6f36a791e806765b175e48840500df402bb26b6b9823b3aa9a9c7498086", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "ec3576a859965b4330681ed43444c8dfc2d7d02109a8de76caff1b1df12d873a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "2dc1b529db4e9069c4d13822d036f4453f3275467010bcc199b2a9f7e411fce6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "886a852cc79f7ed0f205e69e23741c900f84518109722da6b9bb845ccb551b49", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "10fb18dbecc0c2f7c97e858c92118bc6b1aa7986e69ce433c6a8e46f570eae17", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "c7864dac12058f1eee9e8e69349c1a740c7c7c8adc7ff294bd156087325ec11c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "d29e1926635be225d92f4ae4dabd06fe0fd2329eff266b877a98581106647de9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "ad223fc723e7d39c387228a25fbc52d9823fb66f47917896329a69443587c4d4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "5d29ef111e114a5c15db80dfa31ca03a2e896512b05e0c158ab6b6b88a9f3c5d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "d0d176cc4d9414d5ef8a667bbdbec5b1cca50ba12c30c40610661d8eb0221493", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "9c1fef5115c1148f860d6043f25ceda9a6607db0a7a8b1bf12aed5fdf04becb4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "46046adbee88b10af9eb09f4d8338f06343373c2fa2ffd2ce5caab41413d4edb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "e04c172f02d2c6d2a3b5d378b3f0ab45ef5b0d4d2dff04157ca04ac98de877e1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "29fb43a02a84b0b781f562515e9a5cfbdf7d5adb5579d1a57ca42068cd18bb57", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "03ea2bc77d125b532627052d5e67e535250ff904ae529dd6f7bb454b01cbc955", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "675c3b75e6ae403efe6d6c5b5280844438ff3691ee88061cec97b537f79a3a7f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "5c606adf0825ac3d9573a07d1aa089825caecedde8827982953c46bb9c63b809", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0b5030ad29286c5938ceb09d6956b2f44c9488d90e7517bff96e2c301494d1b4", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "a7b03e780b01b650b4d32b71dd5dcd92cfe2b8f8e8cd209582119fe338862828", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "6f0f107f6e05d61503a31e21ea769f5d9d5dda4fed11c9ded1f123c2da663156", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "4f42477ae2acb4f0ff3493984668f34da86ce73df9e20f933f724594bcf5c6c7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a79be0d65ca173fcba0a54d5640ed34ef25f3627125b181d63c8fdf0c1de753a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "18ce9b7ca7f9b8624f696c74b70b101ae1bf7c2e5d81204c7218ee9ba27d5473", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "00f80564af22147d73b60a6bcb6c5cb3c00cbbb42871ea1d51ffe91a440242dd", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "5906d27374b998e6c9e66e593d4d886c1517b02ca0b13523f11a62e5c5d695a9", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "925f3bc03ae6e2df59c98251b3bb69134580c5c7da0e64985f055dca23367db5", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "faebe94e3e8c793a9c10dcaabeaa230eed88136a0db2bc708ef0bbecd3a239fe", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "014cee4d4b4638d5ea37a311f018d5200a66154d8c36a57223e070ec11e45ad4", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "0e6c993a2f42bcf268769a1a504532096fddb83de4bb688d7974605a19bb6d44", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "43fd13f074f5fb6ee58e29ecd686014f9cb828b6866c5c1d1180e8d8c0101087", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "82f8964da22a68ba01e8b369fab19ad6b2d81a868a0f44e5bc2a4c807dfba1f5", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "73618ad15376493e8b223304d889ba02278a9ee9c631cac63a4f4f4dcd109158", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "7a24ebb022c7ea29f285e969e3895fa9b4de5bfdf992d06b33ed3415549b69b2", -"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "0e575ed84e8cd2e87c901509a57f34a633f8c5d450b319b202bd790aeeda4367", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "caff7597497c88a9c2dde20f6d08fda852914c18a4cc00555e17caee03354229", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0e446d2144d8937d9d4897a57ef37b2a6fe426c60d1b001952805d965201c59e", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "de50a6250fc127a1bfcc829732da26223a5b64854ab0176db6b1199a139e42fa", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0ec82e7bde0c37727d58e3ccd838b26de0150fd875571661ed72c42365953f77", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ecdb7201452efe685a1882d668bc1a896c2f8b66a145ada8bb39d69ec0b08144", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "f3279e9a2adc37c425036e01343cb73244c80636745d8327cfa0653a1c301821", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "5486e594fc015a3f396d8a1450b4aacda7172099124cba93488eaad696c6a056", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "5753225e1480a0f649a44d8a20e271f61e71a6e253069a5767a09856e6b5951b", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "719cf665adba8647b546101bbb558f4db0118bae88946dcb16216101cbc73443", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "9f5bd47630738cbab2c0a305b831e909ebcb246bafe0ab72ec7222b92fdce825", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "1b4032b26887edf72b877a9757c6f1b72485ff33e1e12d7cd1ce89edc1bb6d10", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "65defb235f87d6b43a1da12e004c4de90dda7589fd5186af9a6fad40667a90ee", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "33250f58847e51ef0b75dde43a5a49dbd0a6724eb37d05412d248cf4324b9822", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "7db38a95ae88dca6ede0c0627b76e0bda5d4adfc96634a3cf77f969a92d14493", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "2ac86b97caf5ca260dabbd4e9eb9bd4255f6ced817b66bf5a0b23228b392dc0a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "d5fffc8f172a733792be42f74551754e490e939212672e5ae52ea397b0c0d4ab", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fd2f608b62fd6a09c0ad8740098d9c9799eded72d533da40f389d8ff50986c57", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "1a77b032a7242748d4661e2f7f3727d173d693babfa91c66efe00601dcda2068", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c44872ce7b3d3caf1a0e48f772ca784735cdb2c272f920efdacc9ede683ac3f0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "756b84c66f87729d8afb66b182c1faa96f45849f34b3ea211a826f7d0110f527", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "f1cc1a12204c6cfaa14d3ea8873ba8700bfafa6fd10d0ecde5473bb541fb7fdd", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "87ff04bcd924b7ad4a2d5f11a9f08947a69055722990d02e6c07d8c3b73e02c5", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "61683d304fb2ef45343a60f55079fcbce9c7b3b1c248243727d10e2804b5e9df", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "f3b3d58b431cb1b43d51b090199910c2e22f9c6129aff0bc09b89d0edb77545d", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "44e7bf497b9457babb2b63146553f03af0189db4356f90b1d00fc562f9cd21d0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "1d7983297df245e949a6f83cbff23d9c492f9e615648fadd0b5935d59abe3c9c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "3615699f9635c5dac8810213b90a265132d8b84bbc30e8b8a3873cb0e1079408", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "300c96c59dbf5e1667e93323e179ea9fbc8e2c5920aa36598cdf9c87d8a99bae", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "6a18e808e64515fb49abba00961eaa7fd98778f3210e55f2f40c05c295926a47", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "38b4bb070372cfe1aec61b30f56d1e6fd6b8903dfc1c7055f84168aef91077a6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "f3d3e3f6134555f7d49f1fe2aa180176a838abc8c9f8cedc9b30f971ce227587", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "028d7c24cf618f7ec7b9b560d6a395a13d45e6899560b4e06ff8de7124c3f9d8", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "fa011c5ac32516ae526702ada941d9f5ff2ed854755e5f2c7bae7530825818ce", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "6c3b902c705f7f207b893360cd46622f1bb19d2b37422207285f8db85087a3a6", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "fe0d30f630d58dd487fc1d504e17d1672e9aaf91e18d1ec3dd0dbbd7c3c877ac", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f579430af17c91cef59abf47e0196866bf7293811c3f030126269332d70f0750", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "1c28f32619b7c17461ed5a79f8d28ed06699b98ad408e247612c56b75b402635", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "c3d488ce092d63cecadae92a75265db4988555f5e71edcf7a24b6c06755636a3", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "0c2afd4028d5c756e58e180da4b1a457319cacda0dd25babb6cc3f62146ef6dc", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3615699f9635c5dac8810213b90a265132d8b84bbc30e8b8a3873cb0e1079408", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "9194d62ce7c02c9c8ff84ec8ca9e94e6907e5da3cc5c6472b16e812ee63bc1b0", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "492fc86c2fc7586167e3a652f679c98c28da15112b4523fb0065936802c18377", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bbb2dda6e17db270bfc8e358024db13d40c5103a463dba97d81207f3fc8a2f10", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "25ed1c282a6458e68a1182ae22bd12aa8c220e946b0f610908cdf5a15193db6d", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "2a4022f7d5cd0cf4f9b49f8e7995c2f9b4fbfdb95085d9237f2f5daecd7b92ee", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "3d379efd702960fe75c90296c6f4f9f413ec96058fe7a9a0d2a85146b274ba68", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4695f7f85a6d226f233f9d24147f8892914c3f884ece3e333527b22bd4c3388f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "3d36bbb1ed0dde625d153bd3cc8fdd94e9ecc0e201cf969fc18f40c526c306fa", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "fde9d5f9ea96f1218cf4c98809d341f0470ffa66a41ab63cc135d69f8c20cbe3", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "0d4a26bdd42162e9d7eec871a9e2fa1d2c9e648107fd499668bd9bd5b7b7ed37", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "a73c5276d116275e5710ed8ceac9f0e50e938dee175e4e5cfa94a9bf4e72e578", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "a73c5276d116275e5710ed8ceac9f0e50e938dee175e4e5cfa94a9bf4e72e578", -"T3T1_cs_test_basic.py::test_capabilities": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_basic.py::test_device_id_different": "3ec2d1bd71e5f528658cb9a695881b9039295c3667d81c1cae673c51c676ded7", -"T3T1_cs_test_basic.py::test_device_id_same": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_basic.py::test_features": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_basic.py::test_ping": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_busy_state.py::test_busy_expiry": "a2f1a220091d026e1ef43fb075fc4ee8e5efe47f811bbbb0317a7df173075106", -"T3T1_cs_test_busy_state.py::test_busy_state": "f67f56a03f467d8109e2eb06c9664fc6b39807f96c52a72ea28910eb6edc645b", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "79c1a7760da5929438cabbebfdbd67b822f3b26812c695f3e7a674a877400fee", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "79c1a7760da5929438cabbebfdbd67b822f3b26812c695f3e7a674a877400fee", -"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "7a109cf0bf01162a19330a39224ab3f2da81994e393cdedec0187a9fbc5be0b2", -"T3T1_cs_test_debuglink.py::test_softlock_instability": "24fced490ff22e103d3fd5b4b4cc2f6aa1b76f114cec4abe1626f18c44e88730", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "c3f1de4575b8475a9c106c2581439eaa8f932a591ae25294099fd900ce09bd3b", -"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_language.py::test_error_invalid_data_hash": "fe1affe77aee510b17131fc106b95ee574f7f24722d85ff03af8297d79578f24", -"T3T1_cs_test_language.py::test_error_invalid_data_length": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", -"T3T1_cs_test_language.py::test_error_invalid_header_magic": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", -"T3T1_cs_test_language.py::test_error_invalid_signature": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", -"T3T1_cs_test_language.py::test_error_too_long": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", -"T3T1_cs_test_language.py::test_error_version_mismatch": "03d40f3e0c8f8d3171b92495aec04c01615701e9053aa74b664b7b6eb341131b", -"T3T1_cs_test_language.py::test_full_language_change[cs]": "095b159596b45439d627def2213e657881e6a921040c1641b0908ff2611d975e", -"T3T1_cs_test_language.py::test_full_language_change[de]": "dbf73f90c8b37900cd7e58a76640e7b49850e6feddcf287c9390f14dc916c2e4", -"T3T1_cs_test_language.py::test_full_language_change[en]": "8cb2cd2912d6c82e03afd16d8e9ba928c4afc32d5f9f8b2655328672dd443121", -"T3T1_cs_test_language.py::test_full_language_change[es]": "2d1765fc50f879bfbafc94ec8e554da545ce2c33c648c06dc17a6734f6385618", -"T3T1_cs_test_language.py::test_full_language_change[fr]": "a540d967409e17ad3276e635df51bf65ee2ea08344c82658e14b03c0b609054a", -"T3T1_cs_test_language.py::test_header_trailing_data": "fd9bc4811b97174b4739c19f9c20f2b98757d7ece5535057e2b6e968f9d7e4e4", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "889c348d54f03a01f0330ef8c03bc6549fbb6043f061166400119b37c21adc5a", -"T3T1_cs_test_language.py::test_reject_update": "3c1e5fdf306a2f81ca2cbc0a3bfd1b87c3ad8f45e9c887c9187fdf6a38e6a32d", -"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "32d56e7465b2ed22644a173ad2567e8f5fba5a6e5e01c0f89b4581d590a34b56", -"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "32d56e7465b2ed22644a173ad2567e8f5fba5a6e5e01c0f89b4581d590a34b56", -"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "aa5646fea2119dd61dc27266424813e8163c0eb8f5ac01946f21030cad40b064", -"T3T1_cs_test_language.py::test_switch_from_english[None]": "701603fbf001bd5769f181212eec88c17df6231de3cb6d4b3be0665d53a9b317", -"T3T1_cs_test_language.py::test_switch_from_english[True]": "701603fbf001bd5769f181212eec88c17df6231de3cb6d4b3be0665d53a9b317", -"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "bc82cc5997cb8b1c358012103f4ccb166a85e1f1d890b23f14f4e376a1ff3f01", -"T3T1_cs_test_language.py::test_switch_language": "d55edb66e6af54074369ca2016fc862c58910e9191e7f0eecf028988a4f16431", -"T3T1_cs_test_language.py::test_translations_renders_on_screen": "659d89fd1885aa1ac0970530a0418ee31ffb0f1ff49ec93a952500373c09cf5b", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "052e4603f23fa78221be95d3aeb8fc05e01ddf8c4fdc035cf5fd08deda8a5b76", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "cedd581765f7b7c9657dc3343f9b3c9dce753458024c98869b14f291ac76b5f9", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "07fde9513dc060aaf03a5b9d3fa2e2fdcd0c8440c805dc7d9425f51395c00e2f", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e05f361c19859e0090b23e4a79af3204a90532c9b3a4a758636cd4cf24aa1d5d", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "1eb23bedd91e4caa61a9eea4362fc5cf1bf9f29a78395750a05a535125bb28ec", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "135b61ca7afa721b144490b129fb7ec6f9d6b4ede717c0123c2524fb229a4159", -"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "741f044e2c5e2d4be2cb9cc4a3727ac047d7c1f36b063fec84d622230f8fc9d8", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "6009d612aef0a77e5683e3de4b7f078ca1360bab8fd126b7829c3f1aea6491f7", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "4fbd2efaadea3e681dc27eb156c4bb3e4a0de641677222c4ff4b3d8a6c1baefc", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c71fb0d010a97e178fc293b40879b3464b2e04b492653912431078d9597b14c0", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "068b3849ddb052c8f5b49963722477b83d469c2da2e7768b15ad0f3667f668fa", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9f3cc858d34670f8d0fd8f2eaecfd9a8414154d5357adf69dfc303e3cf30236e", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "58ef70a11f925c50fc1680b6ffb68753688f5f4d68dfa7341393d9841d79bde5", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b355543bda120777fde39751cf53e1e56e5f135ccd3d198d5299dc1260d0fa5b", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fcfb46cdfd2fa670c313dd3e08429e01b58cf15192eb88553d2f9b1db2ad4185", -"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "5d3656f11464664b2a3d0207cd810a7ea3c9049dc75a5b6ca065db6f9aee9d35", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "4d6427231d3ad3b067da6bf74cc1ceeffdd6d613f8962334cb208896c6377655", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "c963b54173b4d502ecd3625591d3d293f75bcb0277a416fe76adeeab6a6a46b3", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "2ed0a909ff10f5ff7e843ac2ce3c4163035fbfc6a7e01048f34490b6ea9be24c", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "65afcd1f0cfeafcfe5f9cb1d41dfbb24c450d3d93a287ff8a25c09638595553e", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "3107afd18ed572d2f0824eab6115d4d738304c48b781716c50199176270bb097", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "e3cea166fcdd282c920ef2360ec653088609c64bba4ead96cdb0654bbc7581b9", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "07a5944253d75c9a47b999dc95ea90b020d53be61838d820178a6f5713f1788e", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "2467f96cfd518d72edcb85559d2b328e0b7b0ea0897a901982751bd18ef4f094", -"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a9a8e3b5e6a5b38d2d3643a8f5ce3c50013b0ad8d14e58900cd6ddba77b89287", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "6fac25cf4277a2392745060287578394aff52a6a1f91c2679ed698c416dd00eb", -"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "b3cef6126517f2baf81f822b1d5236de97b0e2e6665de160095791a4c5644446", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "f77f84bdc18bc68912f28219aa3cba0aa1e1bac2e961c27e9c7ca8a4b93b8d98", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "5866437ef392adb1af12cb6a64760e0ea1b05632adec9117834d0ecca2f676cd", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "b286fb3bb27e2119ba0296b258144aa6813bfc6a33d9d037f51850779ade9141", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "c44be8e2a40bc98f93eb694123919f866076474e3f9c1141a2cbc3eb7c93558a", -"T3T1_cs_test_msg_ping.py::test_ping": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "72733050e7e11b3494ec47444ebdd92709d5163d715f06504806f193518c28f5", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "8c2e21ee72e4038ba7854d9893f78647f639d1c84dfc021ecc20d2bff2ecd8df", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "899860593365914e71dfeb4aed254efe0a197576c4074f93c0d77848a2febba4", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "13b668b62b848ddea98d130990a70c72b7d00d565f6cb1d5ac6410d0d1eff256", -"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "3ec2d1bd71e5f528658cb9a695881b9039295c3667d81c1cae673c51c676ded7", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "86209ef09e8c78f747cf1a397c3ba02b9917ddc3ed5e76579277726895f6882e", -"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "86209ef09e8c78f747cf1a397c3ba02b9917ddc3ed5e76579277726895f6882e", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", -"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", -"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", -"T3T1_cs_test_pin.py::test_correct_pin": "d121b4e1f71ea717408b1c5e5957cc9e357e113bc7b80dffc21598dd9a71dee7", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "4f7e4bbc468ad727d9c21c3f7e1ba69be50cad84316dbbbb9757cf2fed051199", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "6cc0d38c8118d13a95bcedc4cbcc19decf0162158a8824590ad6a3c20ddcabc6", -"T3T1_cs_test_pin.py::test_no_protection": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "130472e6635b44a4813f4c0f5b720d2a2f16310c97086592622fc5c5126b72c2", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "cf812a2725156ea16a9f195797c724066464183b80a3663d1c7acb1667a6b1ab", -"T3T1_cs_test_protection_levels.py::test_get_address": "97dce1aeb710aae710efe96dfe209bd4ba4704e271a25a27057e37a627f5af5e", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "d8ffe57f15df91391d6e286248d05bce734149ab2ae8771e1f19192feb9ba6bd", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "97dce1aeb710aae710efe96dfe209bd4ba4704e271a25a27057e37a627f5af5e", -"T3T1_cs_test_protection_levels.py::test_initialize": "3744a59df33bf25a9f5e19138c18c8b317d602049f2e9465beaaa2ac66f72596", -"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "ac13e5effa20b7c35521656a7f7e73772ad2aba44a677d7c7566e4fde3ab1de6", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "14102d3f7dc5cad90e0d9d80f67ccc40fb7a42a232b5d8fafee2efc3ccc3086c", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "0437e826dda4995971606c4439e6049321014163087fcab1db4f0ec875aa83f2", -"T3T1_cs_test_protection_levels.py::test_ping": "1efa833c4f427965ba022b31c2e27863de9d68548500e60290c4533254910925", -"T3T1_cs_test_protection_levels.py::test_sign_message": "324abe15572218eacff89c9085b08230b16092f8348bc68356cca42217362a06", -"T3T1_cs_test_protection_levels.py::test_signtx": "f2d1d3ec9d86368e0332e9da4170e3624078d57d591aa7dcdb70da1b0bacf51c", -"T3T1_cs_test_protection_levels.py::test_unlocked": "914f4ddfb7bbe164c60e6b1e452122799928e657906dece356d80a2c08991c10", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "bf72b2d06b2f7086a344850aa03ec8b6db2cb25afdbc1efbbb85c20186c97b46", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "786d16016f228130a6d3cbd364cea674fe067c2527591c61c2fabf10b572135b", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "5c2257fdae7afa64e12010ea941bc9a5489d7294e2183cfd0fa90c0ee5a78787", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "9c5a4cca3f84efe04bbb5210e6485e640b2e3789e0e2ad994805512e23235741", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "07c4a61f6571e02867c5639b04322a5a2768c88baa703e8003170fe7fda4e9fb", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6c4a65085efc55e40d553ae8b259044e80f8a83fde4b206c808bc9b6fa266321", -"T3T1_cs_test_sdcard.py::test_sd_format": "39304f54a0ad2570e0b8993fec9a3118fe7347c64d45b0b8ebef4f1e7266b651", -"T3T1_cs_test_sdcard.py::test_sd_no_format": "d775aa49d5afe8d5ca5e0a0b6c9b2b2cb00614fb9188ddbb7cea06e4d0164944", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "a672fc557fbd9eaaa1bdec34dbfea8da64223f18fc50b8437d52f8a510370efa", -"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_session.py::test_clear_session": "61aa803c09322a6de38251c38242771b228c7f0a97069d333d3303b46601710a", -"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_session.py::test_derive_cardano_running_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_session.py::test_end_session": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_session.py::test_end_session_only_current": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_session.py::test_session_recycling": "2347404be44829a7cb44d62c9de33e8a985db4e0825dbf4dedc9d9be4833b559", -"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "947aa0b67f7082c1fa8551ceb973c968266358ab96d8fd654e341e37804e050a", -"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "12a8e0e6dc81a5c44a171a5beb484581c3f17ac004bd02eb3ec8a8fe6315db4f", -"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "781f41305cb333cc4f9733e84e51010db3f2a929f2900854fea0cf08995be6e8", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "af7ebd51ff545492801e75f01490378775862368cb0e4b98b1e3f9c3900a5609", -"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "63a4778333c5c2345d723130c8520525f4317cbab9a7669967d03dc31f9aa63e", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "5f17f03989d82a377f6385c9d03fc919eaa29a001d093f879b833dc274d49d99", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "f4af478c881b63da3489d3a86874eb9f9e712c93a6a8f41d291607ee993cf557", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "ac13e5effa20b7c35521656a7f7e73772ad2aba44a677d7c7566e4fde3ab1de6", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "29ec4d3d874aa029f6b01d4be33c7c5fbbf4d3eb0f7cf2e7f181e0c3bc0594d6", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "c8d945581c6858f581b5581d543e210b42bc9f5613729895888ab02d8e358b4c", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "40615d91e6259a21993811512e49e35f5821519f59196cf33d51f19b08827685", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "62aa257671cbef5b0aba590feeb95d16d9649eea807bf24a9e75ed16f47773d7", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d22c54476d52d8a1f1c0aff7578ef7a413622fd22c3fdedf44c31e9e5bcecf1e", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "448f6af0264b10b8394b3930751089840d5d4be8013e270382882b9c5eb9a806", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "c5dad0ac67c4a34af2a2cc683e207a800dcc1291042921561e7e44734a29e475", -"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "b55a875eec7185f154ef28c06995bb3b29e3d29fbd1e13966b0134e003b15e55", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "203035fafc67ca2fd386886fe4e0898aaca3910e641a6763568b8c62b4f143fc", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "4092e393d93170b022d8dedb0af9bd022b46e6a3a0f508c639ff2178d4e9a74d", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "8240e44b26a4d7b7bda9c17389e2abc7b5d5e5fffc00e77ff7d060501355d6b9", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "008db58b35ff615b72b43da94a72ff335186354f7a80011b79f6a70097f08762", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "0f792b6e53cd340dd7a709f8f9796744867eb0658578cb3902fcdda00b225d82", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "3827db3d6922191fad6e8647aac66697348572310a0da22b88a5584d844676d5", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "c3fb567250cf89df721f0ad79bb0e871769a0a19765a12c69ec9a467016f2639", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "1cb21312ed32a1084a421bb9819f662e5df72558cdb3d297cfdfd3f808afcc48", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "ba7e73fc8a409ad205f0156115c37ba300c7edc53ee4bdfd2363a9e742a3a036", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "6689231c873522097db9c3e7b91a8cd9f1b154232e2dcf9703082730e63d86a7", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "b7a515c894ccb00713c7921dce1a44deb389d51f9842e7a23c8216ce8c1a211e", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "61d4dcd19276aad23adcfcd8df53de296391a298b5cfef5a156ef06176589e11", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e7583f4c5dc4a48229957fd20f9b16c1e536ffa2d972a91999792ab4901154f9", -"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "5d076bc6f2c20009089ac38dcc0d77349bda2f514e7c3577f44a45b5114b5cb5", -"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "7e35a186b883df1016338f336b379b0a1ff3c810b0209f94006fb22e0e702f21", -"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "427e1358f94e08e39fd82399731d45a37c1bbda4bea31ac3ccd8f3b14bab2168", -"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "c0d3a1ef6d442c418bacfe60b409bf483cd36d7229380bb1d4986be1db2d11e8", -"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "70f66e5c9c546b24aa10144414c5fd983b191a99c229aeaa3a70e52cf3fcd45c", -"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "bcee62f725a134b769def445646311e6589ca7d012cf91f785445c457cf6a86a", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "271afcf9baf994b36ff16d0feb29d11f725fa403bc49950cde96077c30d574d6", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "d9611046dd0354e0719599fd4889017c1c1de4a4ff35c3eec744b8952292cf1a", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "eac7c9183829cb7cb48d5a254cb5bedef5437d91fde98dfa735c032761a517cc", -"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "407b27ab4f1c201ea206617724408e2ea3097ea239ff824fdb1bcc25044de99b", -"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "c885421ceea538851d20e6f8922bfc078da92fc431826753b3eb7ebe7663206f", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f928c6cc555fda8997a05766104411a51a0c3d913f88b411cfe3c592b6082734", -"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "03e643479c4245aefceaf163e403195f5d72f86ce90d3ce07855816e13187cf6", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "04cce9e5761f34074afdb6a19786eaac34d8101605e46287a2aaa6ac5160e09e", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "6cf0c83a2778407d8027b2f4b0e47809d2f00f54dbe10fe8522e6fd7d4eedd55", -"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "49fe0009333a1010a20ae5a6fb723e1770298656bb3503b04cada12d0b8bd6c1", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4ff58317c7488dea29958cbbb6c674407174432bc8a96eaece276b608838f722", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "3e28545928e4c3a89f1832d785b59de7f1664b51366e2d3b0563fc464edfd3ae", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fb00423cf3189d8753385d56dbba2de48dfdcda6071059818d06f52ad29c8248", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "4ff58317c7488dea29958cbbb6c674407174432bc8a96eaece276b608838f722", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "3e28545928e4c3a89f1832d785b59de7f1664b51366e2d3b0563fc464edfd3ae", -"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fb00423cf3189d8753385d56dbba2de48dfdcda6071059818d06f52ad29c8248", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "89f77c5701d55ee1b097816ff6989556ee7785b910d3cb0dfa496d965e79f127", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "6e0b795fec2f0fa5a6ad3c3c29daaf4245ac9eff7e32858b4967819336f8d793", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "3f1dc1dcaedfbaad08a0f2a9e0fa647ecd5080f621cd3398cec4d17055b1264c", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "8832a745d87675a3ea63189f52ae09d9e48d734c4f087433fd349441c707db7c", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "14e4d7081fafcb856552ac88b2978cd85d04cb8869e5a2d53ea18fb87be4d98a", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "14e4d7081fafcb856552ac88b2978cd85d04cb8869e5a2d53ea18fb87be4d98a", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "975aff581408fc960458326d58a828144dabf184f0d613da8b7b5cf337a7e547", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "0705d973f15f20ffcc25917a66423001eaf3d8223fe4956b9217da694fcd49fe", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ff3b5058598abc9a7abbffda5c06396e7b37c6406635ed262021cd77ec0b8847", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "deaf98fa3fa294a7b6a3aa5ab50321ef8ce1d8ad9cd4a3b2c51df0482e86b0a0", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "deaf98fa3fa294a7b6a3aa5ab50321ef8ce1d8ad9cd4a3b2c51df0482e86b0a0", -"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "8236bc59b03d9775e52ff75724dd9c905a39ab26185d3e3479e843541874cfa7", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "8236bc59b03d9775e52ff75724dd9c905a39ab26185d3e3479e843541874cfa7", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "37265673b13efb02aa809be1d935670cba4b5bc56b50182467e08d3884ae7a05", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "507415fcbcfc235f9a4265772226ffdc47f48b8812119175666095728c28606b", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "e52bf2b926dfada0475555f24afbc0cea03a8da6dbf95351635e09beb96123ab", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "ac18141076ac087c30615747091d39434d47f0f9558f6484c1558c57b9998e34", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "386fe8e1b512f90596b415ae90e8a475c2a083894b7bc80eaf76db36e9e0fb90", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "79c10c13efda1d7586da96a0337914cf170810d20533d3c350e49c626b093d2c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f8ae2a125f4f136d2d0f1cbab11dc7909b4bc99ed42fc30341a9b811b60a8740", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "5943f14ca043989b6ddc2c000f70ffb9a5103c8da56cca10b0e5d5ed3bd54a98", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "a4b1e3960db4e72de8c75ee37c908624dbf28aeb522e8a62c87bd842ca8cb943", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0c20ad45846672f070c5d3458bb2d58576edc3beb2b0d27dc74d39f6367eb66d", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "6e960c26df3e37d04fd35c5ce8da512f0b336aca5beeb7043758fc47d0fe2e91", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "d4c83ec0e787b4bbda61e71b90acf202631ed9950e819818a413cf2df64ae0bf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c5f1156a1b2bcb948e83fd87e120df0dcd10e089ca6e98a8425e5648006510be", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "33d7060c2756396a85f262e9338b095268b03f749b515e0637a5d19832d3e69b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "fded80d445b881885c81b743fa0e9af84abfa21add6c02d015fce20098a7cb8e", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2a32fbe6a8fc2469a1c7121416c0464905140a4f2aabc6f2ddfdba09b9fd8243", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "fe73715b68cba71b408518b95999f75d36b2b2aae24fe42db3ed09abd6f23101", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "08a7078c92c64e57aac998d02e355d2d46bedb406336916be0da323704adc5e8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5c15d361fe8540b456261b506f51a8d2e7a631a903c2fcc456ed4da925818388", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "64b5a884ab6c086867b7971c0f792805a13dd938993b7a3df9eaa7885323be9a", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "393f61a399bb281b6d985d04bb94750e7f9d4aaf0002cf260b5b2745f61e55eb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "79c10c13efda1d7586da96a0337914cf170810d20533d3c350e49c626b093d2c", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f8ae2a125f4f136d2d0f1cbab11dc7909b4bc99ed42fc30341a9b811b60a8740", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "5943f14ca043989b6ddc2c000f70ffb9a5103c8da56cca10b0e5d5ed3bd54a98", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "a4b1e3960db4e72de8c75ee37c908624dbf28aeb522e8a62c87bd842ca8cb943", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "0c20ad45846672f070c5d3458bb2d58576edc3beb2b0d27dc74d39f6367eb66d", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "6e960c26df3e37d04fd35c5ce8da512f0b336aca5beeb7043758fc47d0fe2e91", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "d4c83ec0e787b4bbda61e71b90acf202631ed9950e819818a413cf2df64ae0bf", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c5f1156a1b2bcb948e83fd87e120df0dcd10e089ca6e98a8425e5648006510be", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "33d7060c2756396a85f262e9338b095268b03f749b515e0637a5d19832d3e69b", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "fded80d445b881885c81b743fa0e9af84abfa21add6c02d015fce20098a7cb8e", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2a32fbe6a8fc2469a1c7121416c0464905140a4f2aabc6f2ddfdba09b9fd8243", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "fe73715b68cba71b408518b95999f75d36b2b2aae24fe42db3ed09abd6f23101", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "08a7078c92c64e57aac998d02e355d2d46bedb406336916be0da323704adc5e8", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5c15d361fe8540b456261b506f51a8d2e7a631a903c2fcc456ed4da925818388", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "64b5a884ab6c086867b7971c0f792805a13dd938993b7a3df9eaa7885323be9a", -"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "393f61a399bb281b6d985d04bb94750e7f9d4aaf0002cf260b5b2745f61e55eb", -"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "e66bef90461fd23c25b465b6b484fe8e3a3216e55afcff7e47d6a41a4636e5fb", -"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "04b2fa27bd1cb14a4299c8a467d0f66813777d3fbe406ee8cc82e5de8ce31398", -"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_bch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "bbcca3f3396a6aa9d2b9f153fa5c4188382506b64b7ad55cad933d864224b0e4", -"T3T1_de_bitcoin-test_getaddress.py::test_btc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_crw": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_elements": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_grs": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "cd2876d3dbb24b4e8e0087a7a9f4e5a3b995f1e8af17cfa585bd44a602cf6fbd", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "229dd2a895a5d2163da07627cd817b395e89ad73a2225bfebbbb4ef5fed02bec", -"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "55970b8f30ec1b034f338534f37f2c8663424b4de6e6833278fdc91e0d96a2e4", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "9ffb79ff36b00ce77760924e87bbee6228f5c79eb194af08f267214950d7f6fe", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "49d5b999a05cd06e5cb805802385524cefbadcaa414abf58cac64dbbc96cd3a2", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "789b0c1c6d2640208336582273a3b3a5b06aa78c675b7ee4e780c363354ae775", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "92dd853583f2021043f94d5576219c31396c38b71e1ce023c4370c0589e954cb", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "08497eed3cf9f7e097e590a753f53db7c4216dfe894c812026ab51a8e14d912f", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6c4294e5f5f0baf99925e5a83f45d9dc97ef94af9c00a3fefc17e3cfa9cd1f32", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "566c4f3764fec63f5e0c836b5410020f4be079385b163589ef76acc63d6e5a21", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "beed63827f04eddab3c605ee56766fe31bfd91d66e54f0ed7932dd07e8da14a6", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "69e1b0c18d2ae75a307fb10800b4cec13137ab56d7ebb82a96268d6917d0ffd3", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "4f6753d445521063fa2a8f368b71f879e1ff45bb3a118e8fdbf812b6922e9ef6", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "cc9f2ab4aaa06c6dc1568552e497bf81ba15a74ed1b2a47e9813c6330c4a8062", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "7c047ddf52f477ecb2f4d6c0fb6843044682478e06992d48184f28c72a7a7155", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "0556858aff854a463617775a7f7d89c5fd9718a3fa062590f4f6f5d609a55e9c", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ee3195247ad72211b1dc6434529f7b51945efc10aa13250cc2dba006c54ca1d6", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "a23c9cb96616b54a058e67e202dacea218f4bacc94b4226afc595c0cd6a6ba8c", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "7730d77c98c282402cd3e23f5f7ac01fe4c632b1af6d97e0459c982d4d28f44e", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "1669c1717e09b93a70d0ff5f00a0c158158b0be0c149c6b0e3a046f4dfe62b98", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ea14ffc201728bc2250339c5130e8334a08eed5138522b7293074997dd8c427b", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "b29825a1187cda2a6f1f2f98c3e42456d6190eac3dee379b61657985a0055955", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "0db48d4a4ccd1752d70b6e8beb260508ea162ba5aedcde58dc3a0ac44fd0d949", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "06ec433a79fe7f7cc83110e76dace45e38401437fde34b2c985d1fed6010f3ce", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e4b031e6049fa9c14ae33528f744d10a466de4cee69b29ddf46786a10675a1d0", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "a69ababda2469ac53b4c004be0472e6d60028e69324bb50c18c7c453ab484692", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "35bb3154ead77108002fbb15b4a35c49387df04c5fd92ddd1543f797abd2a215", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "35bb3154ead77108002fbb15b4a35c49387df04c5fd92ddd1543f797abd2a215", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "82f785c48e6c2fe86cd3f195cc677f82bccfe2afb3ead2880a177d40cccf7df7", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "f22559411d9451f77f85cffc1b753e6ee871c2523e65e9d1ff01c1064590de62", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "2244c192d56f1f905ba7166e518e53f4e83d9082005e8a2bd750ecd4a4bec5ec", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "157c7f4707e968289b47bab9bfe3fc01daa07c71e75d0b7b8d79a739e83b9a59", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5262d007231b581fa59cd402589eb14eaab9b44fc3baca30e4b7fe7d8196b768", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "61671b8b6d86bab4571b8cfa5c4889f3405a70fd033399129ef02d7aae379877", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f10940262646183b0c6bd6b15c650aec213c5c75dc54caec1216564f122915f1", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "d29ae7b4616cbe5d11444dedda9815a145625d7110499c013c4af528fa0b0914", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "e61d40a6c49e92c2035ce51356ba6e8ae7a7f4e3e3bcc51875d12f2304aac9b5", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "c1e9162a48d29694350ea173b30c20ae8d734ec9c58675785cff49981ed93814", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "74ffe6a0baf06c8c8c26245e55b3e603a8d7c38065d372c544ae275b82e77aec", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "fa1a37429826e81d62a3c2b8d87228aee5287c795dd16dff531f9bc4c9d52589", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "aae088e2363ba33700177340d81b0b533fc428fad222ec68e650c0ad336bcd99", -"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3c0491851f6c7568ceecb9756100e218dca29271acbc4157ecb0202e5dd4714d", -"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7d271ee8e211d044ead1cecf0d22012dbd3fa08251f57a592ee1009681894df1", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "bec12784ee8614d14309e209e420ae66806b9b1b464cbaf0ae3e1b9abeb786f6", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "c480ca90a6782370273f61f0ad113baf6919416a2ebb3ff1179e1823bdfa24fd", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "dda52d6688efe066be3ce0aaec799b8a86cda0e6bde2734727491e529ae2c67e", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "a560a59a6445b18344b22539b6b0f7a638206a0fdaceaba43171704d957dae24", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "1e16e4eceee57e68fd6f3ce2858fd94892bbbe03526c6d87695464928eea3706", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "192c673a671ad9d18e1ace53a00eec225d06ad08fcbd8c26d1c5b38aa3a8cd67", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "48c39a567879d0fce1ab299591b63f77f174d560358f2ff1c7a863095585380b", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7f26568232a062ea4f8bf7114321ba20f9c34f6de8453dbc1b74f2fba5833884", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "4981d935ee39b294a0c559dfd0602e341b4c38abea4dfa13d74b43a2bf84c2bb", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fe43a5c0bc9c1d9b7b88104e6681ebeb3f555847adbbeb56f7a31ba732e5bca8", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_grs.py::test_legacy": "0b20c3589e7e758257e1427705cd590d2c33f84fb6bcf1d7bf83e5576b39165d", -"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "d914d8c94fcbe385258294cdaf837e2b29389162f031359e67957a84df6b04e1", -"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "3dddb7abc4688e77d8cb4868dc78990450e7008213b11f4d3ac598d33f266988", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "dccaf7a4455e50d23f3db4cca4bca4f7295604e7864ef381f8ad35212eb0b3e2", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "d649b386716130bbaa622586890ed4d9450904986f48cc22fc9db7b21cbe70d0", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "6c3d4733d957073dc83fde5b161c0710e575ca8d8e2addf0c2a8fd17d551ab16", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "146cdc1e1ed63ad801b4b68460891d0f9f1c4c3bd52625b18e54a3c669e79570", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "6cc11913ca118d301279a2c892cbcf8642e2c940cd7cc6f8fff830b6b6eff293", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f5dcea30da41186243eeabd4cf91de5ee6021383f2a6b1f976110d2e47a844f8", -"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "2d02d1e15d5c654ecd574251bc0e3027ef84a246b6f72d2a894fbc2ca4bd1b1d", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "f488d411c7303059c1b979c6fe9dd9dbae0a6938da9014d142c84cf0d22b7ec8", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "d4997c940dc680c74f53b66561899e00a176fe58ed7a869835de1f5c404bf605", -"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "347132b3b87a640aa7e440f45b6fabf4fe49ed003673e0ab4e031a9eff678798", -"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "69edc865b17341aa6ad6e2c781f7e522700ea52ceff9fe1b42b82906b6559d63", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "2661ca95d91c5d4d4ec13c27b9f6700b60671d6d7f6f817fdb2e5e4fe4f91ca2", -"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "c9a4387be4d953e3187fdcd80af1973011e298a83ca3fd4eb8da00aa84f01636", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "221302d9505e1c0cd9be7b3a660fb89c50c25a2d4043d5c08f897c05d92d3fe3", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "9cf556ff01461f4ead145f47b2b03f320388a86e92cd9a30660b11f7af48cd34", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "55fc461ff3e9b3e0c8111c0ea4f935b89d07b2b98148c03bf30867f26197e099", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d1adb7c339aa9841a73af0762cbdcec4bbaa437d24a91f530f7c2c7eb87d9ab2", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "3fe757186784d5ca33484ffab55e8697fabb2f3523bf86c414d50374e6199378", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9f9f0e6ba6612396c07f1665ddd77a106b0f1801b474c63d7a6d5508fb20cda0", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ad6b94af336bb30aaacfe6ebea97948961aa470d1c5029516d5c710adcd2ea35", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f8f3c72396177e9f014deaa5418a4bc8add1c31e63a05aa578fa0b7d76989b1d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "f168fd75bb0827b5e1b875ff13f125cfa55558517f85a85fb1d1a3b90363450c", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "fbdd1a7444a1e0815d2d8d73e09f026c9bdcdef69ce664bc81b4a5286ee87e3b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "ce8342bf682f3a480298bbc049181a496a6cc007933d00f2138d78eefc791eba", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "7d67b60c63047beb5b252dbed4e55f63e5ec8e601f2dd1ca42d25e801122339b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "7749e32a65b8f708c05dd8e9830948f6276390f1e58ab3b2337798aa15ce2e1c", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "bb58fc9a2d6e485161cb6b860927c938a1dfb603339be4c321289a62bfccf57b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e6fcb061ca901b0229ede34ed5f5bef4b7c4290ba03081749cfae81a1e4b0234", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "7ba8168ad015c5f9b30a8c2a3a300cf6df4faba0ca0e78282f7f085bc1273bdb", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "575c7c630e0cc56e360d19964e6fd9161ea041aafbfc0ab55e83dfce4e1b9a43", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "f5cb19dbf8e35a7a6f76d9f9eee82056c48b4be4f40eb3ea5001c8cf8e4cb86d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "ea667c2041bbf30b7ca78e608ebc47f2ad8d6c5b61c9fd57edac3e27c20f4a6b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a419d6c94fe7fd3a9dc0a0b9386260aeeab3d22203bbe3d50e4616293661dcde", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9eca3071f95dd59e54140f2228ed9f6d9046b308aba31fc259c4282f3dbf8faf", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "2b83ab20b5dd9ffde2193fac70b7e4389545bd77d4f20c3f803e06992e5c1358", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "25d8f3c49827ea55b293fde11ed4f636c6bd7044d74cddfe1477ea4c6b4ed9e6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "1ced21c46d9574c349834e4da20d818910ec54b3e13c9f8416af3cbc18fe1779", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1eb8c62e5e1116e048778697ffb4b5c01aec1349d01a142676bbe379e007a01f", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "a880b2ac5456f757adea83c86d8f5e82acb045cba367b6ffb051afbac1cca80e", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "9c234aa82abb2b24158e8289a64fa74d4ba88ca3c0836572f49f2fe6aa14c5d2", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "ad0ad84604fc1d2f649a6d07c54bc6eceab365da3192993f984c503bbdf0f362", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "2f0196255c23818d1159ffd18e90cb00c0f88bc8a3833dc19c2d4837f4e9f867", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "a46066d8a0456897463b0422b712addde264e6e208e055243562848108bef336", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "5c904eec3c993c23d0eb4074d258d3f03331ab973f4cffec113a0b89bea6b4ff", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "069b558b999ca916b2772cf506baa14ca4775d5034863fe54e334b0da6649555", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "0accde91b903dcf4702c7c6da3932434c1e49b3e5199b6d4882a1f952bc6c97d", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "c0f161cc5dd108ff7ee46038289d1658fce497d2388c7118630834afc97e6cf3", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "dd5b9a2a8c05b0a825bd0418032339658d621c52f8c88974b25bbbafe01a27f6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "8e62dc29e810abff04c9e337e8620db41ac74187af0464d1f667447cd7d3b680", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "967a54df67fe33e8ff8477f4ad9b7e1c9f301ee184eb22ebea70947e83af2b0a", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "dd5b9a2a8c05b0a825bd0418032339658d621c52f8c88974b25bbbafe01a27f6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "dd5b9a2a8c05b0a825bd0418032339658d621c52f8c88974b25bbbafe01a27f6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "dd5b9a2a8c05b0a825bd0418032339658d621c52f8c88974b25bbbafe01a27f6", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "7731f8ff876e33d3f1907bf8c87f6643f417a5f327b7c42531d2ba58a5e053b6", -"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "e14eb9acd5243f6ed32b10e3a2f950a25395036e09c17b37f3b87f0f67aec918", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "aabd0433bb3bb602621223e448a8c04f21782cb2ed15e511fc39ce1389615b48", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "86a6deb194223737e1f12e67cf599991ab822b10466fccfb6fceb6f0b0c20c33", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "41b78cca92b29f4c8f7165c849c90614eadea3c70888a213a03b847273720e60", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "41b78cca92b29f4c8f7165c849c90614eadea3c70888a213a03b847273720e60", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "cc7f5fa4e01fe77eba8ea4c00bed07c31ca61811d2d5b0e8223eee0baab91fa2", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "3e1f96e37cd9a1e5aae42872bae1a8835f291e9a9e3cf1550cf3503973ce95f8", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "5fd49e2a34893ac5e388c275448c2597f2eedeaff54a9ccad537fdeb1b53be26", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "c49d5459960d5bf5cbcd4f44ee01c799a9aa11ecf1135885f8fbbb90b94568bb", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "1b8e315f4c51ce52f7bc0fe1b27c8f7be29621f8e25169d438b63f840224e177", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "c9dc2932607b4e50bb6ad66d6921632f21bdce0425bcb341e75f7d2df7936928", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "c9dc2932607b4e50bb6ad66d6921632f21bdce0425bcb341e75f7d2df7936928", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ca782ea32a156f42b30769d82f57a3add39086951d55900e45ed8d88b0e8e4d9", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "c064cfdbe7d702a55bf0a98d77de2afe31edaefdb0bb7f1eb886b9bd8ffbbc8f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "8c488eebf6349249f3d0f088706bc46a1ec35f49ff56e2e0bd0be51e3862ae86", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "8c488eebf6349249f3d0f088706bc46a1ec35f49ff56e2e0bd0be51e3862ae86", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "62a56049e05a39fd5b04fac174775879aef33e9e30c6e5f5e53d0dcac8f3b73d", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "46be016a0f30efbafe18f70e521bb3dc13d1704d71989ac302a8dbd4bd1ecad0", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "df6283eab2cf0369767cb7e07cd298a292ef35a193b4118c9604bac8afc363ba", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "df6283eab2cf0369767cb7e07cd298a292ef35a193b4118c9604bac8afc363ba", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "08ba209456730b9e1b3d45f60591560937737cb6cf378fe99cecd7bf815675db", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "9101f2a871e364574b0be9168e9f851da13b912027735c793afa8b56b067e5e8", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "50f714f90604175cecda69cf4e0775f695d6c4cf5749523d4fc33dc27fb30b9a", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "612ee5016059cfcf51644bf773311bb22638af76c4a09d14f6d480662820fc8f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "5a654e9eaf6db237a8e63ade3deb12ddc34a52e1fa58eb6ec7ec2911c3f3d04e", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "ea17fbb26a96cfe9fe4ab545e33165764d08df6c094be01dfa4413ec4a8aabb1", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "c553145cb86c19bb4afd8f68b32796f0703db04c6b958086cd27388e9a8bb521", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "57198d9609594394ffe5fb9efba140400f814d1cc584e5c202b1d34f620d092f", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "597b7c070519f8898309da8a40ccbff1e8c15fb353f5fb45678410526855be04", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "929cf9e37dee92d37ca9be000adf367d80a9a052fb26ecf38951733bed8fa0e2", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "f688fc0cb70aaa4f19af0125e16f86ba8f1726e35ca9e8369a4ea687c1b994cb", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "558338c9b0ddbc305da4ff9f513d2d4d0f5707a9e834fe604a55084a448a5e61", -"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "e67107c1a07e35abd4dac09fe0a63a31c1523c76080a87454391abc6a8490a49", -"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "e67107c1a07e35abd4dac09fe0a63a31c1523c76080a87454391abc6a8490a49", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "bdf3ff58103c42a6f7840362ff1b6706a55382d31ed06d3ba8c41e8ce316429d", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "d9071062d927f4acbc7567a328d2c2abcf2baa80b8899d8e90a1df793b400a48", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx.py::test_information": "bdbd58176b8ed33d6b5cf7ffb4a3827100befa6a14c8ef2b350937a305c4c085", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "073fb01a9d098f93382e97a9753b435222fdfe6f9075e709a4e516722c1f080e", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "6177ec4048d1182d455b113c6ad37a0d47ed875e993c339c11a0fb7ea2435db9", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7d57a324ff346075ef4de1cfba4425ae75b8854216042050ede44911fb69ce50", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "5a42180f6a59e586b2f5abe306eabf9feaffe9fba33bcafb12e93800d86966bb", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b1f59ae5d6a6e520abe50d2f13b620ecf63ee2eddf7061d59bb8fb214803fe32", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "5a42180f6a59e586b2f5abe306eabf9feaffe9fba33bcafb12e93800d86966bb", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "b1f59ae5d6a6e520abe50d2f13b620ecf63ee2eddf7061d59bb8fb214803fe32", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "b0091e2aa376765d7c35a0e3f4ecf57ccbf2aa944ad002afd4a5a4995e63a819", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "359770f00ac522784adbf7c51c39c5045045ad797ef05c3c49e8fbbaa0b922ac", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "e36bff218cdcc6cebcd622f881376b328d822022df596c3e03a3de56cae7d003", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "26bbf238f5fd26e51838c0979bf4460f7e45d6e108013d1ae644dcf06250593f", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "22e19f7d759d2ce059b2f81ef5c7a52eba4e641bdbc5ec92cd884fa9d7f39161", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "47354593fe71cd1af05f37cdcf80d4ef4d5e510a11326e6355af9d440fec44ad", -"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "4cee1d4d48be3f02c2f0b84a484972769c8b4cee150f4ef5119a1a7e9cfcd420", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "8868659edd0934af66ee97e1a5a9d49eb16cf78fced16d0df480dfcd26fa4b2c", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "c7f0d40d83cd9dd8ecf6206e37a70f64b1d1dea627f7cf10abf1265ae05ecbf5", -"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "595fa176d901abeb417394d5a6337f1425df1952892929bc42ed3a71f120ac80", -"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "7f91f560b2306b86b252c42ee09fc0e7208a818da4a4e43ce726f52716cc918f", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "e3bbb8a8960a77c2399bb6ac471efd760820919d367cfb28e7ee8fc184e08519", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "bb1f46c462a36812aa4512edfd0017a0dc2df5f8de807f4504b24d00706bdfb7", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "642b8399f6e5a2c0da82c70aa122bf5db5c6c22fb27a1e218828cffd3efb3de0", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "8f1ac04154d0a6c18e600186ffb31076318117f6ee863163967fd8f431c74961", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "e67107c1a07e35abd4dac09fe0a63a31c1523c76080a87454391abc6a8490a49", -"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "93a70e8247754688cbbc7e60ab5a08332168c1f36b9eefb9660968be0c953133", -"T3T1_de_bitcoin-test_signtx.py::test_two_two": "bf4e7e890a496ae8c2db804e261cf9224e46c46902c702a49551b4301fd1beb3", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "4cee1d4d48be3f02c2f0b84a484972769c8b4cee150f4ef5119a1a7e9cfcd420", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "3e05ca867c1dfb4542b3c01dbefd975e75a6fcbc7f287caebc64766d7aa82e9c", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9afdc413025e5fa2bf0c1130d0d6c0f18891db8cea3151367f457cf8ba878ec0", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "18fac203bfa618e994a6d6193569f7ede8418751700703d5f1b2dab7305faffc", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "4cee1d4d48be3f02c2f0b84a484972769c8b4cee150f4ef5119a1a7e9cfcd420", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "d480c601e0b05cded7d39fd1e106032bc0d6a392801b0b3e64ab3de9ee966272", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "ef7065d8971fc8a453acc5d38c7ee464be720400a685a3bf8822bd3412d954c6", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "cb264129167b030d83280e75678629984db284952fb1a029623f01632d280d09", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "b3d977f36b2df1ddac4b9410074c2dfb16f99cdb2288f90dffaa8ce4470bcf3e", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "d480c601e0b05cded7d39fd1e106032bc0d6a392801b0b3e64ab3de9ee966272", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "ae0c815954a41d6227757f6e1bc725d98b33d809dd8b1a8a32fc0c5d1cfc9b77", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "7968567419ddcb5468deb9ced44dd2b44dd326e8e6171d6f2cf904cbfa2a5025", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f2194ff61cd2ca6a40aaa07c036231410fda6db308886b78177aa941e143e290", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bace35284c696c54a147e545e2690897c2fc349c91a0609b306f35dfc5c0f45b", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "25e84fb4564c122b6b8ee74b71ab2aad42f0610894b8c3b8f08f11cd41fab8ce", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "a55137ab1d19d0fc3704086d57cbe83e7048b0623cc93f4532580cf83a595274", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "16fdb7d5cb9083813ec04825ec85591ce54568c7e09a4e9412f2fdbabb3a8db5", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "672cb6e43dd51d090d7658cf7f19a7d5081d868f24ef790e8a89bd5093498c57", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "6a3549037f3e83ef30a033deb37db41752cbf8f0d0e0ebd3545875f848b90daf", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "1d199a82b5b86980b32320a8ca528bf8b342011bd943321bfb4da9aba6566121", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "e75790b7faf042da5252f7c1a36f65102354a0d31ee7be3854d9716ce98ea95a", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "a23e900ef994c73382b036129118287f5d92769276da88145ca47924b0569b31", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e3a1b22e441213dc4fde9c1f404894559ed19e287a3aa66099c6ca85178a599b", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "bf02d0f96972e901b3a25ceb445acd54d7537e3460000518d4cfe6a04976285c", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e3a1b22e441213dc4fde9c1f404894559ed19e287a3aa66099c6ca85178a599b", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "bf02d0f96972e901b3a25ceb445acd54d7537e3460000518d4cfe6a04976285c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "0410bf5a2c7b4334cdfc21a3d33ed0f72e1c896bc6c37e145eee395de21194d9", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ba4d8fae18e5bfdff4c3e6b45378cac8f8ff3b3355598afd6c9eb92af4eb44f3", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "45d703091d1c1f31ee8fe90b5a7e2c4a7f522499a2a7bbf59f922196858ad03d", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "6d78926fc627d52252f2a98e87c1c2ba4f96c763c38be41fdbc64cbc49310f44", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "b73f9cf6028d6b55091e1475a8dca17e0cb36b21a8a485a720d4ddba59ffa0a5", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "f475070c41627a0597d9ebb430ff473954fa5f45964b13fe4cbca6d1d24e35e6", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "c22bb0a3005eeb9f51457eb459a711655ed559b4b0e0330d90c3c32ac5ebca75", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "a337baaf61245e33f692c3b04d3d10e98916e333280de599d8b3bc05b9fe16c6", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b8aff320fe2b1231bb7cdc3b6792fe1bd32a4acc479dcf1f1cb2e1933410890d", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b8aff320fe2b1231bb7cdc3b6792fe1bd32a4acc479dcf1f1cb2e1933410890d", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b8aff320fe2b1231bb7cdc3b6792fe1bd32a4acc479dcf1f1cb2e1933410890d", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b8aff320fe2b1231bb7cdc3b6792fe1bd32a4acc479dcf1f1cb2e1933410890d", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "6b222ed64094b356fdd610b80aa16d693f2a950fe8089e6fe3d70042293a81a4", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "6b222ed64094b356fdd610b80aa16d693f2a950fe8089e6fe3d70042293a81a4", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "6b222ed64094b356fdd610b80aa16d693f2a950fe8089e6fe3d70042293a81a4", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6b222ed64094b356fdd610b80aa16d693f2a950fe8089e6fe3d70042293a81a4", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "35be3ad845cb7ee99bf0732305b63e95fc72bcb632b939533de93c85bce69400", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "a8afb537125029ffc2d50a8715293aa36d75e358d6319ccd37e98c57bc4e3bbc", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "fb1af3a0ea948f9197fe7e83dc2523ba26ecb21f38659f27a369eaca4b0afc78", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "fb1af3a0ea948f9197fe7e83dc2523ba26ecb21f38659f27a369eaca4b0afc78", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "999396e78bab1d3cee70ba5a9d5cc4328e19de531d3c577d74354e0a2fdc3b7d", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "ab07cdb5cfe9af5bf647bae50ed472300479e7831cab32fb21dbf89cd16657a6", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "0f339a9245764119c68bf3023fd077321f9b1b7c80602a88578516777fe823ab", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "999396e78bab1d3cee70ba5a9d5cc4328e19de531d3c577d74354e0a2fdc3b7d", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "488992d7229081aaa7df09565a454ea53791bb219b274e0922c8a454658b2090", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "378c5e02a19a8e2e26779f2ff8744c32b34f5f1584b183b51479edd7b6f6a217", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "378c5e02a19a8e2e26779f2ff8744c32b34f5f1584b183b51479edd7b6f6a217", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "378c5e02a19a8e2e26779f2ff8744c32b34f5f1584b183b51479edd7b6f6a217", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "80bf4f0c64d90e363fdce043fe58e9ef1a7090f107706fd2c0510ad0044a72a3", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "378c5e02a19a8e2e26779f2ff8744c32b34f5f1584b183b51479edd7b6f6a217", -"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "e7a717e1f6fa6dd7f2dccff23adac9af6fb26c2aa3ad8b16a5e51e3323b09256", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "3a6f0d733f6d9c6cd2fef46a7c7e6ddb28b0f2d3b4247ec3a1b0be4037b96721", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "fe51248c29e97282589502b10944a10ec07a5b9cab90747048b8f6022665cd6b", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "a103e8c2b28b89986a5872ec9d8c5930a12a6210276ebd9c7a887318f82bac53", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "821385710a32c5f73ebdcdaa05cb71df6c793535592d189ff07004bcb9cf6608", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f802eebf34bbb4ce78f20007b807d2a0c86d6f7bd3fae9e00b2b7148d7cba52d", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "b6232086902fb5eb689d6b768f938a43cf86bb9d80810a10a7ed2c05c45015b5", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ab372f2c3f27f61b2135fbba194e73233edde42d51d60acb087899e91af7f5e3", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "659270aa7f469047f6996cd4cb65430fa72b0f0bf7eb587b3526ea6ecca76cc3", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "01b15029eac7251f5a7d58514de83bb0fc8ead56898ef9aaca443b95dc16a458", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "dabe5f7267f726542e823f85b2bfa8019cf6dd3ff6a75c4ca9c031083d444a82", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "7ef1b67ffc0be815b674558fd4a4583f915cc3dbd48e30bf5e651371cd46ec83", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b447e7e49d98a9e5067fa51b20afd438584391079a7a89fdf77e50c6a0ffd75d", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "762491a3f84be16c1970ef89b01d243e9f492a1789fd2e3b1d515c990bc3a88f", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "d480c601e0b05cded7d39fd1e106032bc0d6a392801b0b3e64ab3de9ee966272", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "b391bd60a3bc7fbe9b48c2739e92cb9df1bb1c60bbd125dbf7e4a186f53deefb", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "e053f99360cfe17327f5edc6eae15b859f05fcaa7b56b3bd76d2bd2f83b7f2b4", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "75606422acd846ec96530ae2236d57b37f88dcd3b29606449d5fae901eeff342", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a3ee5bafeb91cd1e7821cc99da5a5bc2bfd8be242f6b98c253b66cab2ce2766a", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ff882af8dbed8d57a5d0981fc8d964328e5c375f6d487d5e19280ddedbbc7154", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "3737de7289e6d26050f1b6a8a1c7ba230e6462d8eeb60e8f377627c2958a164a", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "01578ec8c139f4b98c1354986940e075dea504f141cfa4e69ad7226d02759a89", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "08269560ca5e56796a6274c7656cfa21e969d78cb854a3242bc065e079aa1034", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "a0a681512ce45ff090bdf5d8bf4cef0122000cc6841edfb6540d7a765af9564d", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "2f706f92ddaf882dce131fcfc52b4e304d1181716aedfabfa11158cbae7020bc", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "2cfe36b573cc0009207115192411952e1bb4f9d1675570dacb9997f23284a2a6", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "330683efc12b39d65799ae2b76fb8c4a1f1f35e9da5f273ca1a9217ec2ac1fad", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "5c49624feb73de8a740baaebfcafb07c618dcc6a085b006f20c99571e684160f", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "20ab3d616232f22a340fa24a03ec417e65829ea3b071540c68f3dc102309ff7f", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "46fafff604feb3412e12adf8087469f0d400c7f22d1891071e7dee78484e16ee", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "ed47652f9ee3f67efe3048cfba8c2674edc168bc869db322b0f0a189d11b83a4", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "e1a3a0528a0a4092ef8405eb568c664d05d3fa52840bca4973fd337d51eae45e", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "51f02005f328d373e267b8996cc356f7c6aac96b92c0d5211b241013fb02f89a", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "a894f5acfa460ef2a8247368dcaabf4ca66a8bb0db1f129245d4b673e03944b7", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "dfbc9ee79ba715fbfba12248626716109f08193e6fdec5beccd5e7f7af59d3a6", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "efe430903d18d2941c3f57a436828d68b57fe1af0a948457f505b655060ed0be", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "1945fac5294f239fcf4e8fa8b9d4a25aafc858204099e85bfd61078671172181", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "2e70a042352bd007bf92f754f9c5a66564aa337b3025062f0ee91e16ebc7e34d", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "7ac0d3c757e16522363110584c11c10f135ef106269eab82d486b38936d225cd", -"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "e8ac58a337f725c491b9481028f72cfe19910d0503dff09654fc34e97b0207b8", -"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "379ed561a240c675841e04dc8ade8a00db5febf6f3a2285886e7f66039b7b490", -"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "d08832269b183d716b6ed3ccf6d3418a9f33dbb7ef2e0f467e2ec1fe581a0746", -"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "3f0905d46128dfdda8e5bc31475fef6f6bef65b261487c153fc28b3424fb8419", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "12b942067f1b8a2c785e18cd7b8dedec6116c5039a4767e445d6da314cd77e85", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "17ceb6a0b7c3a25354c806a67d6b591e734603da46d50c36489b7cd661f42309", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "3f589e3df06ac545d4e1d3cbde54e351e0cc04caba6d823159d0d2d1581612cc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "973603deb3fc1bc0435a7db69115e498cce81fd4cd2145da765a37b484f27301", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "6d8d4569e27e17333c3f6f0b0dbbe9b59e69f9ff13b7ebe030dcfb2840f17804", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "7da36aa4cad85dcc37379d7d6af8a5e752f05ce274e1cbcf9dfd21c8f5bf7222", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "660078dc3ae69fe7dab6e5416dc67c6178a39803ed32a6a59c2e425fd0a729fc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "65d5dee40ba09f5b895d0fedf30e99e38b2e25a6e4d7de3ce48470bec90b0ccf", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6ec519b7d835a81c67f70677d5578ef6b249ad9d2d48592c524a07161dea4301", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "e155aa3da698cc997fd9216dc9237084ee45d56ed9d492c152247455c6b79aa4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "4014ee2c6b9bbdb1091cf0e2fec3a09d1926a56c6f654f9099087905d22776a0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e96006e2f1ae90b11f746a2913ff54362fdfa8a4d868da87233cbc95ade11c86", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "4b64ecff2ee88eaa9a27a9829f44724520180c023b2b54cef29871caed93cf17", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "6e0b5558910b72aafad7713d6160f622a108fde029a213342b50aefbc745b84d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "d37c60a72e21fc4fb061d42bb16fa8d7551b9938f50713d2d17db45a667b73f8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "9efbacd79d224cef03cedcc06c9718939a15e3d1cfb15ace4ebb100da2c39f54", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "4e9649dbd9b7ecf7b3dbcf0b0e1db1ea40ce5c5ce9c4c7f952aa89fe35206416", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "aa9fe418eecac6a12632e8765034a09295e71074bc2b9c608effb1a0dd67bb9d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "300a00880ee3b2fbd95b23498094795f704edb6e9d059324143324ca5dbf2b55", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "ff8967bf0121a6d7c26f3bb22a297cf15f0d86c1b3eac8aa7cd209fca3a126fc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "23354f7ccbc45156500ac97f1ffffd163938787b968e2e0a57b7c491c48113f3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8f3666c147e19ffee56b712efbc638f488d4d20252553817568014a6b7e5a773", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "5a5af8d317d1381d0990d141459f8ddc8e6cbea20737ce0f8239bd36ff75b98b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d7a34f92f90035e5cb41639aea1b2175699515b018dd356a32119fde87054f11", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "a69e07e912b533fc56469aa29d4f997ab275ff9a50f70b6af17155fc76a1ec7f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "9e4f23accdabf3164ec9402e2a4744b7a9f2ba9d42596e8d98ef257fc3393c83", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "2c79b60fff49893b720e232a644927d6239c308d82103bb77137001bcd16fed6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "915f0de143a6239b906448161f73486a0178b50bf6291e2abc9c8aa15be6915a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "4ebe4bcd9580f34fcbfa6bce3fbeb660718f557474f0291b64d637ebb196a35e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e6954fe7380f76289a66f0a7728dc8e40f5e7938875323d46e9f5a545b0bf719", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a22407bdfb6cd842dbeb074d32f5074c9e27ff443226949156d434e5b4edaaf7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c4e18a3097a537df4ecad80f22bd450335ee94c0c727ad1fafe332c30f35360e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "3d28bca3a8a84cecee029ad125dd50079c09f27d9f1be79ca5c52fbcf2e329f1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "173f6ea9393efa2895dee64afa6f0f45cc8d852dce8bbcb2afa99017458dd9ae", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "34955015e0de20a165e6f55df7557d133f2581798744a7a1c55577a1655bf761", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "308875bb48cae3fec792da875a4f82f4691cf59a3eff1167d51838f27191af35", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "a69414e4e7df2c45f4acb6925d7ac5de76321b71601981d9021b0ad6ec23ed65", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3a29c85271740cb6d13ab2bd8dc9f56eb33e7359348ba9b7e5d2b73c2ea46e00", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "c3190601b3ff1be82cadcd32dd63bb881e81a48bf955bfaa795c829cdac31c2e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "cd0eb305988e7d6a76a872833d67b011e16e130ccace6cc01fcd6c020d9645f9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "44fcda0998daff53dba84b30c2d2288830596117c362f4353fd5cea7ee9b22a5", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a35d1aafe115b0cfe55454f30adc29db363fe7560697f6a20f46f781c30d7bfb", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "35b80e1864e9bdd76562e219827ed2470dbc6bff2e41f1f3a2001783ccf7dc51", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "7fec08d0f493f35d1ccd435f49a8133b159f70d10a81acd3d348ce8afa59359a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "de5298fbf526ebe87fd9dee394ca0d5b5017de0e88a73d5c6cf637e5db33868d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "ae7097a4b740c15ff42c43ab4d77073006a96c85a112d71bee97494a5f1d4006", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "d432519e4a920fba0f631c128096e098f23e610930c3363c924964709a9e8ba0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "14d518e51d3b1d022d5ac8301e1b4b41dd17286da71dd5947c19177f73220b02", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "e664e899c8e735cbdb0f7dbd1c5292f5242c2a0108303fa2bfbd916614688f0b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "40dc6a45fa0ede9fd50495da2ab2b9ffb6aa630cd0e7c891baf09b1f2b8b17da", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "07609db507d8fd8d437c658cdfa578c1a86000f3112d572380d4c18cd00f0b34", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "d407c8d7b267bf9279cc9c2853897e4e6c58f943ce1db40a93edf82024f74678", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "da3d4370d5d176ba53fe97fa69e83855c9dfd0fa055694efbb310b328785a75a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "b0e4b1eb2e824bf0463a60bbf55ff4043503d0efe4eb79e8dc8b2948bd8aab4c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "fde4e64924e8d13cf1d35ca5cf4241eb32344ff9e1dca5a3b04c3131cace25d0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "a536598ff76e4c8786b067071f50c0d7bd808c483b901e9f4c85a8f1281c48e2", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "54ef944f25937ff14cc41fdc7ae426d956c3c72a294c8df086866d1ce28b3aaa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "c345f0541d989f8d568ef1b4d6a72bdf737ec3e4c0082b4e6744848d8e42f324", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "d1e27544f936460bb8feba545694120dde46facd0640e0c1b702aceb25af7019", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "183e0ae99db79a58782437a63bf6a0d7b77bde378ea965d413d7f4a3016503ec", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "74c0e43e4046187a8cb16dd6e7000dddd0e0d7519ca889151e4979ab35604d9e", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "67ef7800b7e79b210f8a25e4517ee60d02b980889fe06d190f00759a2daf9ad7", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "ac9a7f73cb3f2786e52b14da110112528aada8dd736d45632419115c1ced5603", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "c82337421af49a0e869f05624b0579cb5c27f30867839091d0c9d7944d486e1d", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "2c1724e547f56ba9fe06be6fd6bec9fed58011c54f847061365b143791d6da68", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "480d31d1895b7109890fc8f52f9173c068df2cc610ffe0ec55ef262dfbff3dea", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "9a451bcff5e6795f14e3adce657a8fb5c206b31da5ff26b58a5f40b08b7e5d37", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "59bf58b84670ed490fe514f70f352bce6ff309c3e49ac830c4b2fdc346321f81", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "020dba110b4147e6c60344f8e154f9d1f85ea6e05dc90e02d405f142e4b0b56c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "80ab2e1304a16669d572f5c8946808f844236b55e3fe42af6e5deb622fef10d4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "3db0ea74b0e2cb240d3c1c8afc9f9c87a58a51d3ca590f74ff04382d2ddfd01b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "0008dcd54b328bf792fe98033598ceb631b34de8edcf1b599437ffed80910a89", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "fe455ac46f1676ea8da2233b5554f15144f3ee1de52b1bf31bde09990ed39a56", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f69ebce114b3995decee051ee7574d45526bf6db2cb237803b3315cea278f21c", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "c29d48307e014f53d305c1c592dc9d172d3dbe550f6b88946659afdbf7c3e378", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "fc1e7d51d2483e85a1ff5f59daf3d2613195431c907d15ac25310d3604de49ca", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "2b98a243887c8cd5b328f0f74b112450c57627b8008d15b655dda9abf18c9ee6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "972b5f5595eca2c8230bc2843e2b77f26c1067e59b4bd9920905adc06ef22b02", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "bc8c50d7d463cd5a8f6e5b77674466f11e4b56b8b9dbb7c01b22cbec5dc6c0a8", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "c56357017dd0dd4ed5ec8d2017b9f442067ebd839bcf1b9b45d21133a3d1514a", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ffe4bb1d1d072af3723414af172dff1479fdc8f947870d404dc903dd064d6374", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "6dfe8d5250f883503370ff495d7d70d8aa6a011d13a0af43f13e2fd2482be996", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "ffedc537df4118d5e4e2d58c19cd830b374a5e32e25e3139b1d679086d263da4", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2a4ac68d9e789802c0ccbaa49b741c6d2c604a0b10b215837a11682bc61f944b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "eec3ae3f653d6e92a2e5a0460d7523b14dfed6171d7b8c4f9e6a73bfb4f39224", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "893a2e1318766bdc8948cf1d7221184e3a7adfc4d1791692fa4f03f88d4db07b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6d0820e91a8af66af6402f11df08420b066c928eb0d2e47ef615b6ee2b7d83bc", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9c47067199f5d82e8692718a1ccf89736e0565a3739d6c960e0cc77530f47c2b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "94041ead94c29e1c241f50ceaed49495ce19d66b7f73679f974dd0751fedc430", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8d6c1b95114ac8ba88c9f91f91c16d19cf42ee1e3f1ca9cbebb85770e81bb81f", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "55b1435243f65393901c75894d4bbf87689ec57ba6289209d1328ec0737cc374", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "31b90e7cbde5141a82830d5da88d00980c5a1c1e8d34e65b0fb2147e149c27a9", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "93ec15d9793890cf3ea658e3184b5202d1ced3a2b60ca812885e10ac32a04fa3", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "c468478b97069219c2a2ecd42b6110004c81c4e22179a4029dfb55eafb88f352", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "45a5e19c34b43d6e537d22b9fb295e4f252a7535f8c50c6685f020c23079ce03", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "09d603411528c8d1f0d2d16d3317d0f781322f5c6eb4853d7ccbfbc1bd1b5247", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "11be3ae103b60485821ca51f8ae446f5328ce1714948f155d82651758968489b", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "f65c5432d07df0378e3a0016d1cea243016fe265b6f8aa175d7de60052bed074", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "582b044d6fe331bf9440a7e2f83d7f3afef152446c362725e8248efea256f3ac", -"T3T1_de_cardano-test_derivations.py::test_bad_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "f4cbd47d49b36bbb7d65826f6d1f6b9854a3d132ed1a224539883e6c2dbe2518", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "61015434e9f1f27427a04af0b6b566eaea920732b81f507ff08a3559ddd06cf8", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "7c3339596b84225636524fa6addee4d0e0d883953d67d43423c60516ac84292b", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "688600eac433cb6951e4bbbf6acc2c9d79e5649f0d668ac71e95e4c6554011db", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "e606d680b0ce47baa05cbf5ba6ba31c95b3b039c9b2938647a0b671a6ad06adb", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "db1d3f63d5799b2d296568e2f5ca04bc42209784c89ddcb0447a5328f663060a", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "03fe5d2c586a71b04ab3fcde5fd768a162746294d0313f39e5051485464d093c", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "1169fd902e18988a6b1e3de0fcd7688683f3a2692c9f11f114cee4b66592d12c", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "c41d6743cab04713ff27b4e235d214509e501e9c77b19ff373530eda5e476862", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "6cc6fba4cd1400de8869bd073254fb7b087d62107ba8a4b7ed01b582155a87ad", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "49a425f4a25c645351c37917b0b6a4926e261c90e3ef964cfbb8cb5835211445", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "870ddfba25b29af6f709c388211a816579c8891fc3918b5db0fe0f3810853896", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "8b5cb12e15eb18573251abf70a50ad677c1f88b5ab65ab73b2da24da4946191b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "1c97b06d857eb47ddd30f948b5e136c015afec4d29cac00c64eeeebd3d85e513", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "43b69520f8c09f328f0ce0693959bd27e19f6921d8007857f0b73cd7502e1395", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "254fe526cd8908a21f6f88739750c118f4047f40cd27d9e22341a4a00da78555", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3c5402da998bdbb231133318b255d2faeef03930fb1aee217bd5c8aaa5c89759", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "82d9e1a956d2adcc1d8f91a72ec33a208f98e822eabf54a26566fc2f668f86ec", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "73a7f779b4a1cb08042651d763673a3c2bc9b819616c799a61a3c1523b10794c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "8e9351e16e635aebeb332644d96aacb40551cf6dbd14085dbb6aedabeaebffee", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "3a076817686480065fd42b1b6fa64a8dc02f765aa82a15cbed55439f4f04ac0b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "69ff4765d86dd38a072d26d8e5878395ebe2c6eed4aea201351abd3a350f43d4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "8e37499105ac2acbcba0e7fb27c3301fe297e1dde7739947d79f78bfae768960", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "a06b5b7b5e871e0b80ce211f467fb7ec1d96caa0da519bed0568ebabe56bc2ff", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "1b27ff3efe13a916e88c74f69f8b7b7d8cf494d5fc32333d6a3bd3b4b1a3d4f5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "1b27ff3efe13a916e88c74f69f8b7b7d8cf494d5fc32333d6a3bd3b4b1a3d4f5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "5a9f44e56d34d290d1650169dbf0229ec0ffadda4ba48e6cf51d405e6104a998", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "adbd6f2606266ce0555f2791044cc147b899e55ab90c67c2172c469bb661499a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "72edbe9ccb5deb35b9f7a1c8561d533f65ca16683cc882c23c1907078d1698e1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "7a071d86b8f5693425238b8c3553145891d090c02e34d9adff6c6b9296c5b844", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "cd415c89d9812eecbd89fd42bc468871e2b5ae9b882550c0c57e58e334962f96", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "dccbda890eeacfe7271692d8fafc6100722d2fec8a850783cae03af1629dfd3c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "dba9d1e5c9b62b5a51ec2f6aab895ab373ed663553d685096cdd342614bcdb2a", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "bfa5ed666d5c59713772e508c71553db0e054b38fda69e1de610bce5489530b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "6cdbbe70ffaa67b82af883cdd4dc90da4d6878b9a2f21752b67994d6ff8e0e97", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "cd415c89d9812eecbd89fd42bc468871e2b5ae9b882550c0c57e58e334962f96", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "dccbda890eeacfe7271692d8fafc6100722d2fec8a850783cae03af1629dfd3c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "a625e7ca858a13eda7b178a588d97559d7cf2e3388a267dd7619b610558d9b37", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "6b8cbae3e9b1420ed72eb1113fcdd71131dcc9c83d84a653aa61797ae11868f2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d805633614a8fe79de58831a9f1c381e4b57daaddc89072add452ba26cd35247", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "fc913f2bd141965783ad3c83d60087557f8ef8b012e056b2e68c203668a5d4b4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "13a253a1eae6a5f4959a6a75e5d03f4f9e0c1da285d52c0fb027c9b294f21222", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "8cd230b49fb4336f9b551a8e3c2e8f507c93d5160b19ed5e48efa5b660fc6123", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9295147648d9b2dd6ed1143b29395ef63594c663951eb87eded0ef8ca1f9abdd", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "e208945370da4b7408b0f69c9b019297e2a876fc48265867f5308f66a025e9ea", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "fe30d10d824384d7f863a084cf3c2e4c76054866f2003f3a5be90feed7db2519", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "b1e7a32d785eedfe2c475a0f488c5d247da60e857099219e82b5b57343fb6f27", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "11e5c49e8e99239ecb2d6fe61d5ac202fa4c80dbae60ab58e9821f0b36e1076c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "d4c74b5e3d55051514e607561726ef360f7487ed5ef69277ccd7937f8af7ae94", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "c09d4f058e7426aa2c4cca8482485516926882df01550d8dd3bfe7d38243d9b0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "e2fc0090d04dc3f2ae241c10a5a386ae71b9b2bd4b4eb56ede3e3fdf6c63396e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "83af1f44cf7a3eb34eeb0b647916d67b41876f8963b69337dc15e3d5d2506ea2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "d4e0ec859e2e1414b1012f83ff0123a7a747cc06ef95450d8e5572b5a90a4a04", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "eade709a1cced0665b504ac41ac56702cebbf8b0c850a204de28a3971c463033", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "06704372aa4f75fcdb81ff48e2a8f800304d6419ce772a10227c4de979e7cee1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "cb1a4a991ad75dd1b43de9d9844edf62cc8c3bdffed0b9f4a5c76ebe928bd9c2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "721d82cd134e077f7582f15b3d8bb3dd7074b28361c59c7bf74642e7ca7875f9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "1b3bccaf82b17365bd5fdf68725929b9986f45310b6688b264fdc2f3b36e508c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "af57130e7a1c0db5882f4f46da1797c76aa2b95df145245d625c7173425a6edd", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "e6f28407ef21a9867c60228da076684ce2c4ca438677cb87610110cdbca6a72f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "d2fcbc3914a0400f60d513e45c1fb1c79d6b9496d121ee47bbb2d3213fe18456", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "6e177f1f21dbd9232389edc60e3fd371e1839b8e0598a02720002866793bb5ba", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "60371548c099965a9c5384c33431093039d88a60df629125397f64fb770a5553", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "8e5be458674be3d5898ea56b1789863dd6a9830edb7aca2a3857ec8aecf9893d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "9cf4c42bc6b12de0695e2c75abac52ffb4d86cb58d0158c17e13ff37d97ce6b7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "c382c6c5d28b38c42ba67e4b8655eb4b9117ee9c6f88519b19e405145bde3db0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "199668d03097c7d6fc3248ce3226471c82e2a666d898d8dceb40f149ea75c258", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "1690452a109e1f23784a981ffc80f2fe2960685948047a03e7f5c829048035c3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "86898e1c15caaa52dabc52755ff83e1ab3b942e15626ffdeec6290962c1d0701", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "0ed0a3646dbf246748b64bc637e0682d6e66e1e20865b629651c91f308d803e2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "d4ba9cf1ffa330404750d97bae84acb8a90db3ad6d5acab53834f9a9729b9416", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "f8a0de5eefba096f0da0e20a955c83e4deee83928307c83abbcbdd01168fe27c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "6d5c5711eccee52dee9ec4fd3e6402d0abdaf801c1bd4eaef532588f888c2666", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "d4de9bdf311502d9aeb3cdb608ed94ee17b2535b0cad09157c8705793132dd21", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "f2e1dec23bcdc829af367d12847f006ddbbdf810cbcfefc45b8dccb86e690926", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "bab2ead4a612cfb502daf45b60aa58933e9636356d03a67292cde0d277c92637", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "666cc2142fedbb33865c1bb6c1efdf725680f5956d4c8ffad513aad80f2d4a0d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "6af37789516dbad5bcecc5f8f8be45a2b0406159831637105521f457d79072af", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "e40c68a74a05344ec707d92b3d647247b0b4c5ac833955189b096897d260d726", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a17d827d98e947638dce5b522abbc284a64ba6653daa2c785a7ad6142c165171", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3b7bc5ebd638910a2a49d7a791a1a3b11934462bfecfd01cffa59ef678a04d28", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "26305ef1368e192052b41301ba1f75997529c285de746251b9513bc62d8859a0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "422547740724cf0889b8afaa220b2c5de3f060e97957a65b2a8dc74073840214", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d2a07b2f230c3f8d7483d320a2e810a8ff658d539c57d60b477adab4f4491b22", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1d800e66af6c3eddd6b09968843094ee591ea3d143faedbfdaa1d43ca99f6086", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "42836c27fdf64b24fd1b08688a866a495b3353f73ba0067ac11deaa3ab6f5614", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "6371b1f1b62452f6e6a34c4a40fdf211482277886fa01f6df77861064409f2d5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "77bdeff82658da47b1812f0e85b9c3f50b858c7d486c175b0ff4288a32f5fff1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "04f448036b0295a0ba19cee6d6ccf19acecd1de8c2cf4e9709c66b76db6004ea", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "04f448036b0295a0ba19cee6d6ccf19acecd1de8c2cf4e9709c66b76db6004ea", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "adea500e87d196705246aa0ecbf17fcbde9546755d9418578e3c0de595a42f22", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4afd06a24b0983936615f37e66546a58b99ed7c43974ce2972739bc765d7cc18", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4afd06a24b0983936615f37e66546a58b99ed7c43974ce2972739bc765d7cc18", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "b96b9d7af17961ef8a8a19e8430eb989738af960cff7e4eb6630cecec4606311", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "8836789ac256e3ee48950738ac4cf5ff2ca29b00e71da0392ce87c3f4a824bb7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "636deec36354d3239f36d01625302ee4608b83f32a959b8ba330b52b8bbf85ab", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "df7a414453a464d536cec4552839a3ef4131ea936bb9dcef6ae4cde782dd9b9d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "341b8dbe17623509b17c06ced392c11d924dbe8e57b941d7697ddce8c18f40e7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "dafbd7f68ea24317a7ee2d9e5b044074791e16f890f3e7c5d5bc515b59e4b950", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "5d79d96f449cd8939231cc5ee4382700edf0735ef59e18944e6eca91d70556c2", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "e2d77f46d7b939e951d2a05fe80acd439d6d1e4827b8c7c62aaf10dca773b804", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "8f991f7090ec7d1b4db03a06d55df270d6b97ded34dc44d15e43ed109e688399", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "4d4ab231fef9c9c9278e28d53aea0cd33031dbb662d3839827495e203f38d988", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "1c97b06d857eb47ddd30f948b5e136c015afec4d29cac00c64eeeebd3d85e513", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "8e9351e16e635aebeb332644d96aacb40551cf6dbd14085dbb6aedabeaebffee", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "d2ba3027fe03aa3fea2cf1b24baa052bf6b6dd19b2864270b7c7a1f53905e920", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "68c8def7a5fa2d33ceb707cc357907d9804c36a6a788e4255f4eab2fc3e2939d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "68c8def7a5fa2d33ceb707cc357907d9804c36a6a788e4255f4eab2fc3e2939d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "85c80135033d84741d4c590470e7f12172557a773607bb42e46fe470e3d3540f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "9c2f91cf8dcdb7c9dfdaa166dea3a076b3a357a051723f78b53a68d8a8f6aa2b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "ff11268a4d9a5a12824e658314e4443a9d6c0bd58a761f9bfa249d802ba6cc7c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "cf0e541a5f5c1053f2416730277c464140ff401cfad2898e4aab8f2156db49f4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "c18061d1ebb0d75572fe27c6cec60839a6bbb6fd0d7f911da46e657a4fadfad9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "ec099c0bf4d0210e565dae64872a3511f0a362888f8ca0779d1903ba63512f02", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "a44b94266f2906634de5d8b72d30b07ef5ab728c20d6e68af687707626ff3c97", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "e38a8e75d7a8ff7feb3087f5738f270ad5b7fdbabe1b520847f66ecd65dd0e73", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "e38a8e75d7a8ff7feb3087f5738f270ad5b7fdbabe1b520847f66ecd65dd0e73", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "e38a8e75d7a8ff7feb3087f5738f270ad5b7fdbabe1b520847f66ecd65dd0e73", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "e38a8e75d7a8ff7feb3087f5738f270ad5b7fdbabe1b520847f66ecd65dd0e73", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "c18061d1ebb0d75572fe27c6cec60839a6bbb6fd0d7f911da46e657a4fadfad9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "b01962a8f30a6454cacfe589e5ace9be21a81d622da28f52aabadc6eeca5edb6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a3887bdada96ff4a6bf0cfa6374a7ca35935493ec62a130542eacf25600ef95c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7ab1db2be4d92ccfe5ec34f6df411152ee6b0916a85fbe86995ca9130b992510", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "591103ac1ed73149aa6d917f6fe82a0ac65205d644b2b0a10361ac0aab611bfa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "0ea4f282dda07d5bfe952a01b1f3b5b0b6f76a51c50951f701b51904fe0c939f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "343c3c8e99f703ed4db3b731bcaf413bb2f8202db147bb2119e9ff1e580cd337", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "1aca35a724842c1faa8dae9d6081d1e14fe99561b241f09cf8586990fd3a6a87", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "752f4b28501bcfc76b12d463df6aa70cf6ba11c5d45e94e703413d285692910d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "e2a19e8a15a9ce116fedbf4b9eca4bba37340825ad7975c49e7fd73f5d1edb61", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "630fda2a90fbdbf0ea37fe1028852b01e93b66c63c396816f0bd19b0c2c96c95", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8612f73dfb64b55ad54a133b08572696f80bf2ece7ba53dc9352c3baf53bfe6f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "68c8def7a5fa2d33ceb707cc357907d9804c36a6a788e4255f4eab2fc3e2939d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "d34aee569ef98b259d3568ec8ec92af8283e0e19d250357e0bc81a51134450c7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "55793b0329621b747c1b75229d34458d7ab7419352529a23e9c7fe940136a195", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "d2ff1526f5ba246826156f4924afe760003d778064cb5b4bd870a19f9fc851b1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "48712821dfef9fb71af02f71887544d6b61766d1a430ebb55b31d714e247c072", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "807b278ba50fcb48f04c5fb47b54d6749769d45e7b0c83b0656ff014d50bc502", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "bea3845699efd38b0598688a92e0e488cfcccdafb018ccd42bcd0f0ca976b06b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6113c66d4ee2774bfcc74cf521ddd7dd32ccd700265c40277b91d8d527465e3d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "202527641062fb224e28b7f4d6e09c3fa528da191015010c4377807d94a17b44", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "fbb28273017fd935f7fd3e660aa78970fb48a7cab278b307b71ac4e5c8f7e5c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "c127871a59c4ce17272cc7481316d9dec7f426ee1dbba9533203e59b7df4e484", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4895f2accfeb2e36100270dc37fec820553c6a91d8dbb75dc7c986ee277409c1", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "426798916a8cf8520c93d28c5300720dc2ad1725212c340c8d90f863c09d772d", -"T3T1_de_ethereum-test_definitions.py::test_builtin": "5e011a063f04f282dc002c77661da6daa675d1def961905c57a04015fb3f0884", -"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "77fa94a2df3eddd5ebf01f3ed761a731c016ad36bdb01119fe7781b38e912e76", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "3293cd6dd2ce6e1bd84dd4757c1b94e350a8757bf806827b7663b4ed60e79eef", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "7bbca1d01c98069a34b907f92a5022815ca8e810ea82a434d5fc363cf870f9ba", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "924684d032593c99f05675fe0685ea313c5999642d1b7818a90b49a1cf0d498f", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "477ffe689b16904feb5d9d5217acf7de38b6c1bfae49131f3c457429158efe65", -"T3T1_de_ethereum-test_definitions.py::test_external_token": "5dc3b88580d0629110fc6c813591b76fc79ae4a90242554067b9b78c1c5a857f", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "92be2038b7362d2fca9dca5b369d327545f6f1804ac6af1c6b0f5d7226a2ba9f", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "bd52a0f8a0a164c3cd0ec791dba50e5f531bcde843280cd920bdb4276a349f5b", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "c630a3cfc6d5ab4647ff16a24bed88b828630e3d16d5f0ac76f0f9edd2c6277a", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c0e983c10563742f2cda7e6d970f5f64edb792031ac8e229a21765387e8df9c2", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "634a484001ce920584b82a6de4cd34d5d8c863741b31c9e3143cc2503c056e6a", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "fd77d62984ab18bc73016b8616ceb9206fb4ec5c9ea075e87d2ba1a481090297", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "a9a51dbbf2f7a44d662b99b55ceacd200629d06db9fc77bb1307cfc617809095", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "7328eacc0298df4e2fc16e36ed025fa5e2b9706b961b54d8e345a4151c1549ae", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "d0ef93d46b0f72088a06be89874005a6554b59b66f94ca64a8ad738f946da232", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "785374898d36874148f963fa8941b415ae89ef59f8dfe83f77eed22558670b15", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "a3c82119b1c727b8f4d3329ddb50a118e060c978b83caca14c39ce4a051e439e", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "b069a2b08041ead12f897fcf3fc1ccf27fa3e95c27a89676431ee5fe3f234a08", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "4a66ce36dc0979548a4c513a001bfdeedb36bcf6306955e8d953be7fddf20b6c", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "5b23211211b86e20f9b37307eb1237de6d7aaf6a94871a55c613d77d4359bd8c", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6f9493962e1f6a150b2f605ad339eb7db54a8827183f9db2f10dbc75ce7d0a5f", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "1991f47afa740e770b539fa6a00b2a2a596b97c0ca325e4ad9cd9651a7c10ee8", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "288432781bd11b06e6c90dc0a056d4dc6e7c409b5c408d39e1df54596e10d7ad", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "31ae68173de49c3f0abe2f4a5595721119f2cfeed095be201a1c3f649a668f7b", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "bce69bc0d2874b0213ca36682d443e10eb579d1204d3d754729ccb9ba1063e8e", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "2111d23651f785a13ec40f7020c152b16733534c300a7d26e3ec7434e5a75cc9", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "7b2af915464d220fca269bc37ae76e0e74a68a28a97dcd9d639820b094a72025", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "9e72cf301c65b9c93be20b8dd6288b47372ed6f2f7c53bfeaa2e8ba3f36d5bb8", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "3d8ced5b0ada9175d820c7f00c95d7905a72a68112b578475bf5204762f84e67", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "2111d23651f785a13ec40f7020c152b16733534c300a7d26e3ec7434e5a75cc9", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "2111d23651f785a13ec40f7020c152b16733534c300a7d26e3ec7434e5a75cc9", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "2111d23651f785a13ec40f7020c152b16733534c300a7d26e3ec7434e5a75cc9", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "6dd0c21075208cf31a7c459dd16004dbe9c83fbe221f211c3dbe714c03c9dca6", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "e7e4f6d52fccaa7e7bb4e06afd69548f3e03432b2d93086ed4620916e3bc82ac", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3c97431b3403739a04e4db059828281c0b093566214cd8c8f2911dc7bcd5414e", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "19810f31f55b77cf08e2ef4d7c0f34824d628884b64b2fca55eaaa2c5ff54b3c", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5d5be6dc8a3e3ce7449868f52056b3c3f75e7da4a8c07d5d00557e0b126fdafc", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "e0b5b014e8da36661ac8d93a388bc77a4bf205ef9f6f233e72e198b8e699efa8", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "01d903dab1fe78299f6774d4703109fda021ac4dff47c984d1dbda96888f1d91", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "ed87c1fc29a39fa81de1300211fdc323ab4d3e7f04323200338520cd1583bc33", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "17832c7ef400b1abfd2c974acdcf62cea729b72505260886e8d51db4b373ad24", -"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "aa9f11a5e63d88b68e55ac524d38d5971f3971525a5ca15e02cd1585263d1735", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "a54115657f81e06d6cd478db623f6b9c09c6341d0669a9aa4be276cf89d42c88", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "e8d0f44ef24ca2057e4474decb556ecefc1690533a34c8e551dcaf9cf386cd6c", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "8bf1818f6c4913b51d57f44926cb51839cb251a71487bf9a94f8330aa0bb193b", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "946aaa418658b370caa8bdf287218b974ac5b52c9244659feb6c256285c00fd9", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "86678364d86adb0090426fc9ea8fea06b1be3d01f56fa3823079f9ffaa25efd6", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "706d37b00f6481d1e153be1073112bd72b28166a41be53de9f66ab0c6d915034", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "c9fe2a74feb9e11ba5c6e07aeb3b44c9ff6cec59ffc6fd4ea872fe7e17f4a969", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "ce3340c5185e0add42ebea02efa6c175722aefc9eedf132849e6a260de4b881e", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "a54115657f81e06d6cd478db623f6b9c09c6341d0669a9aa4be276cf89d42c88", -"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "bde1e4fef931d2026445919489eb12da65bf8c0e5df2f2cb65901b0f0d64676a", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "c3fd61b4a2f07948f9e4c313654589cd4baaa9dd879e689075b034931d2b2f6e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "e55c14f1dadfc1f8abc77a8a95f27abf9b5f38abfbb980db68123327d74c1f3a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "0a089316146ad9d989d617b1e41bee941a1360fe3d2bb423339525f42861a69b", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "e55c14f1dadfc1f8abc77a8a95f27abf9b5f38abfbb980db68123327d74c1f3a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "9ce15969e60c49c7dccec38e43406f0411c30070e2a68ac0db65b3986c491f02", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "9ce15969e60c49c7dccec38e43406f0411c30070e2a68ac0db65b3986c491f02", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "4e4e5c2e0d1e59c9755a1a5c1e7ccb1d23a7a65445a7fcb00d03809f8ce58413", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "cc417567232e451e3fbd0d0256b0034647855732cb4aaf5a800c53f3b4b3459e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "9834fe55806eb2ea65830a5ba6f458e26ef0e80437fed8e544edf5cbef990eef", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "d616c9601f09477b0519db7252deff2ae464b1cc5658b521e118b54ccc360522", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "068a4fc31be7a1f579d8cefd8f5ab25776a31edd8942fc8d943fd9923da0870f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f1f293b990ba5f81c59406b9803a286267e587a3806a6ec2d1236991b048f50f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "9d7470778ecb62d8b358b49360703ce8f00bfeb4f88567cfc8337faa49e18e3f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "a095c66a65e4088a52e32eed5f78f255e45856901bf9b681ba5a7752f4fd4413", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "eda73788572f6147557b1dbcafd768d70e95d2e845b684f293327605fa8a04ea", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "2bbe767836476f67783ef2e154152975dda151ce360197cfb60581b221877d9a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "18c51594e5106bceb5d0188e19f583edc34f6af4acb79875237fd76b2afbf726", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "2bbe767836476f67783ef2e154152975dda151ce360197cfb60581b221877d9a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "5e9e7b66bf17e001e15e08a80b04b9ff999bb31ec009ba49daa8940013426df3", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "5e9e7b66bf17e001e15e08a80b04b9ff999bb31ec009ba49daa8940013426df3", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "27026ee7896b4017d9f074f63e9d0d42900d93c0a5410cde9ff1ec9fc61037bd", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "aec2fe134f045a14f4a2c5e73f820f738f5637b03f8d0057d9566b54d68305f7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "c3fe271c44016bab1b0b32100afa75bae6980d6c605e3baceb82f1b53fce5070", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9b5b9b165016b37f53bbc82bfdddc185468aadab1cfde253949bf4fd27ca6712", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "068a4fc31be7a1f579d8cefd8f5ab25776a31edd8942fc8d943fd9923da0870f", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "c207ec086163b03ae82279ad1e0f515216d5c0cf37c674dec04eb0c16a9fcead", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "fb905bfdb6577022b943cb8a589d6d403d8b8281a50ce85b5a06fd00e4a3e696", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "e433cb084a2c713ea2c46977f58700f9d0ad7df0b8e113eb5d8fd9692f09d67c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f1f293b990ba5f81c59406b9803a286267e587a3806a6ec2d1236991b048f50f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "4e4e5c2e0d1e59c9755a1a5c1e7ccb1d23a7a65445a7fcb00d03809f8ce58413", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "335c2fb050c3e84b8fcf0d5e6592a1011d6e245f726ce7b12a6565f90e0b018a", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "9834fe55806eb2ea65830a5ba6f458e26ef0e80437fed8e544edf5cbef990eef", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "732ed8ed9e99dadaafc1ce7e45c838a035204ef782f0dffb4671244523f4a789", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "74dbdb9596f76df1036847f897319d0f6854a45d8025f5b35d38c168addb1815", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f1f293b990ba5f81c59406b9803a286267e587a3806a6ec2d1236991b048f50f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "c207ec086163b03ae82279ad1e0f515216d5c0cf37c674dec04eb0c16a9fcead", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "27026ee7896b4017d9f074f63e9d0d42900d93c0a5410cde9ff1ec9fc61037bd", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "88750fd49f3d6525e0e4ac4c10a4933d2e54c456d8ba0d1dd8bac695032a8120", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "c3fe271c44016bab1b0b32100afa75bae6980d6c605e3baceb82f1b53fce5070", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1caea316b2e0e22c0aa4cf73e02c2e5cfef1bf69423b645065b25d8834f4180d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "4786ae41465845335a5ea66fe9da48d162eb9a9b172429e0210542785204117f", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "c207ec086163b03ae82279ad1e0f515216d5c0cf37c674dec04eb0c16a9fcead", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "fe77140db75777079e387979714dfd6d96604c915f606e81ae1c82be5cf75295", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "fe77140db75777079e387979714dfd6d96604c915f606e81ae1c82be5cf75295", -"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "d99a4d02ff1c0e2b5868afc7dbd44014011d141702921f838c998fcfde6ada4e", -"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "70d68ea251106ca5715e324cdb5284a94f659ab9060cf4b2cda638745c40c7ec", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "53fc65c9ab59327b3d9ccbd7303bbf5e1dface506d0f0753db5dbe91eba45353", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "53fc65c9ab59327b3d9ccbd7303bbf5e1dface506d0f0753db5dbe91eba45353", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "703299a34ea39c37801cd11b66c73ff8d650faa39fa55f4d28d876e1085d220c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "703299a34ea39c37801cd11b66c73ff8d650faa39fa55f4d28d876e1085d220c", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "526caffb9cd66a73d95ea4653ab240cc7f55127e1b383435134427e2100f98e8", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "526caffb9cd66a73d95ea4653ab240cc7f55127e1b383435134427e2100f98e8", -"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "2dfa072c8eda1067b7dab9dc286fcdcc1d6c8a84db31a1c7dc2a4d3ac9c933d8", -"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "2dfa072c8eda1067b7dab9dc286fcdcc1d6c8a84db31a1c7dc2a4d3ac9c933d8", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "b27f160070d5204c0149f7293d8f37d4a575db002e8a9e42fee87e5419c0fafe", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "8c542e9a88a5e41baa94c6372edbee0e83ee9941afb0da1372236b161828cac8", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "edb59a8bdd6f34f81cf0d2c43e29a88e7f08d8c4f7bece5b89dcc1d43ea37f11", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "2d68f2192e87b557627f7a0eeae42fe637da84882cc8bad6f30d1140065ebfd2", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "6fd6483f0bee78d5343b96fc22c81f3736c20b017bde51c8eca0d098fd3e1066", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "6f673ee48a21d2d33f5f9473b9e917b63fbb4470301deb9b6cfe8a0955c0a526", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "62228fbc7cc84c27e75411c5f613880893d1b5698aa56c310399f17554976da6", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "c4c37ff4863b36385e863b360ed3f10b3048becc9f4d57ebcf6809c50c1aae7c", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "81c035bacfa74738b0658ee4f9bd5ce548283de7a241cba8584d5ec62a6a2d79", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "0a36a85330bcd1b1c419d7767ea4486c8e4af9d80d83656a6c9d346c31b956b9", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "403b88ada23033e08d202093bab5c49d53dc3aee4a4323de1efebc861b72bd95", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "9ee278ad5a76b306a465ddd35f1282f203be8888258cd1b4f70a95b097bb34de", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "ac6dfc5028d5b72c58801fc9ec3a5ce2d52b570f51c6c39e9542c2364075fa2f", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "dd33e9b9370e91dc588181d6a1b4ac0c714f68fa8f0e97aa620475858a387f9c", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a13b16050e2e9b1979d384fbce40c3a3c869c6803b0fbe9c3b8cfc426093ee39", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f2af996026689ac9748ab0622b4d3fbdd9f88fdf85a26c3c1135b9999d5a9711", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "48bb2f52db7216adcc6b0a7f9b7f2e891b07155f8cf94ad8a3bd39e89de51c83", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "edaa11861a5b03fd6c5cd66d1eb2c5fbbcd0f30da4d959823661732714fd2337", -"T3T1_de_misc-test_msg_signidentity.py::test_sign": "9fbfc01e0639441f85bdb79cfc3e700043c0728f31e561a1f260cd675367c4a2", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "c949ed31030623eb8755425bb80b2f96f24bf39a0d4f18970547f880012eaa8a", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "dbd91247e53fca9ad9c0423ac23a05eff09e9b06dfecd04fcb4a6be08d9f9904", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "9672d1f277d9ba72a1871af7a5e9ac076d4face09774250405318db6236e331e", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "02ce1beb3c719599f88f990bcdb37ab9f02b7134b71dc80aad1659522aa0aad9", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "ce612799e7ccf7d4bceb471b053aa417ee0348b03d114a71e3e367e84a279208", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "417a2113c8bd96cf3d070d65378e7ea6a976aab2e7a1fbfe41d5d735349ed475", -"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "3f152b740ccafc458ad07057f40e49be5bdd678dca7d858e0cafd7c462550ee1", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "05ab5c02834fea5115b94d59803802231b030989ebe3ce894ea4ff75fe0d81c0", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "7841a8ff65ca49b0d2acc883da8b1ac6cd614e32cbb8df9a0714f43fece7ed1c", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "18647b1d1ca057e0feefb731e88807a7a563288407b6556ded099401ae5d03f8", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "aa6b54eb63ba87e49093f0d2aa9b2131cebd60570880b02fda19191395e57a5f", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "860b41ea35e49fc64d0be869c12eaa21cea1570cd05eb56feeb9b0f594c5f6a0", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "914b883dc9117e4ca1e833a7427f4ca0e8be4975dee6efcff334a9094e71c348", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "024b2ae0514125f80ee168a75f64987702ca3b22242d3653caef94a321992594", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "547134f45681003d07c2fae530500e52f4ce888754adeb30988e1b4dae3752cc", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8521b4613e25e19f17ecab38a6b262918015ed4bfd13d9e38bf99cbe1cf822d1", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1151e567beb39f361af380040fb4b2e43814ca406ac4147444e7eafda53f4873", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "b50c76f4cd81adca4e92af14ac51dabb9bf889f28d8605ff427fdeb130bf997b", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6a070be1a94362c84f84ad3498e2db6395b6541f6eceb75361838d5ba85cc632", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "64a900c24f2cfaae5c2e6724f048bcfe5a33003f535005e3fda189734092637e", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "782f2e34ec0d3060375a403eebb7c7e966970f2b280a68a7d74999d4c55e4f0a", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "68359683deb0a82e6fc292046fdcb0026413af84a14ad15a77f42ec23bee3791", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "914b883dc9117e4ca1e833a7427f4ca0e8be4975dee6efcff334a9094e71c348", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8c1320c0628b41618c6b6ef9478699898b70cd648f942ee7a632a5b457f2dd36", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1172fd1347b269f7c54b5a84024d5ce8a8676cb7cd049fffbdc55d66f62de479", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "c17807cbf891887172a683247c21ab2a44750e066093c56109fda3917dd5748c", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1b562fe01c819addc39708904ad2b4c4af19f4f1228e81740d61952ffa0e6274", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0af95821922508faf5075add6b617e56a3905ebbeedcdf28dca82e450b573e66", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4c8848dae3f68e9d8693cb6737947556c0549e627b8e98f3794f1fcbc8813055", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "53afa5408f4aac281288b6d432313b969f752727ae65a3c3f01ba603764513cd", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "550f207d06272a6adab2cea38e8e62e11abc77d205fd2b4114dcc8bb5da86acf", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "31ca44ee610ec896e35962e0da39a53f3ad38e332aaed4912021a5abce048d97", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "74fb6df9fd698ab0c8c4ed4d6019a1e0f456f69efd2e99f47b6d21ec280b71a3", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3ccfa432601a526346d86640723c2b483c5bd34991f09d0669d4d12d94f64ed4", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "849edbb64b3ed557fc31a8512254adac35c6de26cb7d0a955041c53989b66ee5", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "322e3034d45acce5319be2e89756026663a65da1cd5159f3052fca80a2671ab6", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "b4b58d8c2760b7a049aa805f4b7e72415dafd8e799dd21de6c38a00c83da5703", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "a2d24bab590a32be3d06480e26583e3b74d122a04f710dd4e849cfe8d9a725bf", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "48eb69ad3b7e7b902af2b627c675ca416ad93804a5cc5fd3a04422f225653b36", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a53eaf5ed39c7fa6ad53a63f8160b9e394a52b0387bef23b01677d1e78452fcb", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "aca3810b5c279e58b402a44c7ecbb1bf256c2b658073fccb24e92c1080b8e332", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b0c7d2386c9b7a546f0621a467ab02d63ca3af38c3f8bcc2a1ca8322356153f6", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f8da4e5737f103c94975f61348b751272e6c3b418f1ce24241cb03cf8a8a870f", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "fc20958732aeebbf50bd84e20341fee1b7b38aae13f478f6794355f63fccc0a9", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "341433ba09453109169ee188b17c54645473e55966e8d0f61b6c9a98c8616324", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "02797f44a5c2df646724fe3ad4bb404302189ecd9a28584696ffe574a910660a", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "72485cbc45e2d33c25cefbd50edfc6595499b93df658e863874a61931003d839", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b7584cdbb8c5c025003c7762a50bf26481a2463a04aef2359ee9e09dfa4fa6e7", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "066d3c957c12fa5b7f131cb528739fa625820a26105a9ff55dbede87c320ef88", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f41da7fad40831f006144e9fb7561f6bd636f8beac81308abb8b4c7e7f20684f", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "854e959d8091c65bdfe25643be5465393f5460c9f55cd3b84bf768a54ad9a287", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6bb7a0839c13e7f92f2f609ac84e3c986f3d8983c14682d31bf4c157cc109498", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a5ba41ea2fb3805e2e3848326ffca3bdcde0a2fd4430498afa3638719570854d", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "cab8e7643e74d28332a2dd920745153bd419931147fe9d6ea6311c8f2393d6b1", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "b86d3e58d4700ac2fb634a9e981697e2fd9513b9a07996e09ad8c9b3b0a3cdde", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5e55eb462b0f225b18e4c487789337106344734b236f934c7a16de7bd4859788", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "55b56ded415b23ad054c8181bde6e481ab0b617eff506b784a68afce3a35e18e", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "803eb5ae27566d5cd9d811f1db24b051a20f7bdb4a26cb6a0af45421cf1f2cff", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "7c31ab83fb2e04aa3303331c0b8bdf10328fd446fff2e1c8ba957de385a8517a", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "87f3a5b7f38947178e0d868f45dbc1874d150420931bcada82e201d547d46491", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "f702b60bbf9b8dad7ec6141aafe731afc4b9da9522dce65f4a4559a5d3ea2853", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "e6c7304b5df3e4baad64871dc3db52c8c09fb8505e34286d445e6b6462490505", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "329a03f94ddf8dd0f294dc90455502419beb0cdffb06ec47481ba73ae72d94bc", -"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "d1162bb365ba642db3b499363dc84d9daf298027b084705136fa9846a055b370", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8b8ca8ebb8b84f11db0b994b717f64864157523d5b1deb800bb98c9f8a4b8885", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d532ecc0df4eba1a7ccc0af54945ffcdebc8ca66f878e6475544721bbeab0789", -"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "849ca85aa61a37058648c2c191b6659030ea4a575f47587e5ac60fa4ff338981", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "0c129fdd9475932381aba8894a6bce840266338f2d6eb57bf5f4d1ac7e0881e8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "7b0f87a9ec819934121a168f679279e5eb4616bf0ce9c8d234b40a7065b2238c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d832438223cf065dc2744f19765280fa2a38358887876506f97d7f1f005cb70c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9fa273b0095c8378abe4e624f23c8193cf7373e97939b30c3cd3d62e1931c90a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "9ae522d89b52aa1467a3961e94eab5f678b82659aa414b2890ff03a026f21af8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "c06c8c6dfd0c7a1871c250d3e41725e2b1dc15e64196553e64c6f814c76f673c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "db66fe30364d5a42419e2a5fc2526436420b549a05fdc2b009b2e838aa01a654", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "df5a173f16acb3dc29c57efcdc70db73a4aae603373751d9694fa0af76e12915", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "4e8d78a1596f038323cfddafe375dcd87990c1e8688ab3249cd164c500a283e4", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "4b0e5e46cf7935955b9a806b285365f8aeef6de7ab9d4124641d747aba472611", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "6c6a70787820d30d2142eae33a5925ce63ea88a9f174817fbca783f3112c4d54", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "973e92425359e7461f73a23246639a6626047ac9e660cec34aa8613a6ac9d7c1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "a49451ad7b2eacac01baf93eb42266fdd8727c62f71bce2eb6bbbbc5d392db23", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "01c2f1ffc52a7b30045ab307744ad14cbff6493742bd2aef58251831d1978b97", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6952e4a6e89ed95762302cb983a9cca7f2e39b2d555b95505115e7d79809650d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "ca8e03273245e263828db765242a48730bd13d46d169505b2854cb3a7f88316b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "83d0ad3cc0f59f575dc6e7b83378080275a0c3d47833f59a657587474161c2f8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "87f9c7c1a806413183fb962c8ee60d3aa9411ca5845bb762274c716900bf2e08", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "16489ce07a71b594480a956dd85178cf14e26863bbb5b7de0699013eb1fed33a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "9a663f49bff1423fd08647557a94146fbe3e8aefa576047612b0fb2517801da6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "e2e7e63496a50715962abfc2f89f9a06c3187092b76e71108834434cc002b94b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "e2e7e63496a50715962abfc2f89f9a06c3187092b76e71108834434cc002b94b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "7b43e4c1fc03736a87e503e65c8ff52fd888f42a4b8b386a8f80540b13ee2ea8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "ade460a139c645a5306e73250f07f009785250fdadb6701f39a4911b7879a7a2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "742c72551179ab9e09bde73d8571e7cd060a3c093d6db8fa6cceb2c5ab216ef8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f40d57ed5d039275a1f2ec5f67c1539162e3650434444792b6c353374ffa0db7", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "4218c822b6c82bc3a6c91577d7423b3c7c7749a66568f75138d969a8ba105a41", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b803c67d8e7a35303407ec9cca615f8a07a10bf02699788aa20007efa6871606", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "7d0530e4c13275ff1a2b309633edf1768b6eeb4cc74d31a484aa391d32a6c3f7", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c0ba29f713be128fb78820e82e39bb292a5d6e880408ef40e5172e50d8a041d9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "b7b15c3f485f5d50d53ca385dc6afc323a36c39ff60a1b925e952c09583a6ba2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "714a149bf6451cac4cc7de1dbd78f72672c31818b11ab2a86e046a8f11a7d68f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "524b28ee8f78da5a1c34b0c6a9c4913a69bb3a4685e4eedf5e2d4f794baf3ace", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "0cbf5033be99440f38072062ac5b9fae7ab86f0987ded7aafe346a79d7cab8cd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "ad2542f33fcc1479584a5ca598355b2fcbabf913cf4fb8e86ae50e42738f4d07", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "2785defb9fd3195ee558d844f104ffc82bee379c534f204a9399b4d842dfa49e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "1837d6cf6f9d77dd6e0dc96046b2dd888bed2a997ea162bf659139e42ff5c2d1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "dbe7fa923381da8b6f29f7f9d3aa355f1c9aa73096d166902d408969f41c60c0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "9ea9dfe65ce242c944782406fa7acf3af4b7ee4c60ba554d0aeca627e043550c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e46e429e7a70bb4a85b6b71989ba304cbc7621629071ff352a8b1dcd8cf227e9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "6d5376cd2411fc5b9f67d3dc258b892aa4150400107d3a8d4d9d34a9c65eff63", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "14099b84504d026fde926f94c8c8640a5401cc2b18ad292b264edf7ba030b181", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "5fbe8873e6a19bad68605aef4ebaaf52d66a855f257d41af2f1389eca383e324", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "1cdb0a8754df74a5e89e1f9fe87022a2b564d36a9d616186e13d974b6747fb0d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "3bc40185e729c1ea30aeae96b500bff75297be1295571001a1d070a597d85f05", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "b60038a28f82c7ff1b22047bc2cec37fa9f1a797c622a7bb5b01a709ed7a0574", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "553cbead9233e4bafcdf37b0bfb49b61c622de22c14ed4df9ca2e8bea0898f5f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "bcd6aef6f8b57787e011444a97bf96317af068cabbfe575a4ee9af876f2e0eb1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "b53ceaa4625d5670b5e1891a8f6ea83119ae2016b86850729d0f7ca3e8982bd0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "f91d131fd1cfb44036e67bc38e464b1c5c2731759ed850b9190814fbf1be3a88", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "d4b2c5d306fe49ca4fa7d1d5f245b1f6265a0d628ed614a0db3f2872435f4394", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "bf87818071541f3a01e3e56a7210a631d24dc1d0a17f7111c6b05da613de3519", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "b47e013215cb7953aa9dff14045e0131054d510dbf00ca366959ffb3aba34703", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "76f232343e7d721b36992fd6fa1c15efcc50f40d6149a61a2bc050b17acd9237", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "1f74835d3c173413b3eebdab1da057fc340c1714f1ab0ba31ba8618a6d86577a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "a3b1c187d82e9b0e24e34317721e3831f0d45218d689575782bb9409e8a67b75", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "1595f068152388e342cc6e7ebd28951337d495856986eb5a67e5c330492ee7ba", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "dd76225122cfc49691a77ca686da74da57aaead018e575179a954357fb81c385", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "fe1e73d8a4d29793bfdf90d9397b66cde88e0230fa096cf67060b29bdf3c816b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "742c72551179ab9e09bde73d8571e7cd060a3c093d6db8fa6cceb2c5ab216ef8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "d67c67bb1cfb0257b97945e6b7581b68f4b64ee426c4893b44b2d5fcd9b7316f", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "1bf673590655cbf6dc5e68009b2fbc4007bfd34138effe816b099acacf71aa43", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "431a91efed9e0fcff7513b787d927d55f9965418a8339395a672792c9fc91560", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "1a37d7a6bee987242974aec5dabce5ab5f1729c279fe5fca0551e7ac6d836c28", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "37f5442fd8cc407fd86c3153b9830968a75c71b779f69caa0e1db694b2f015a2", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "be489e5a3a124ffdde7147b2efdb9ada0b57980e4f1fa2dceabd94c9e854c667", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d54dfc905c5778dbc35d66d9e9cd5f41a6b2a80b0f95fd2fa362112857bcb6da", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "0cd94418279dfa790df1f8e791b057015b609177b84131254dd03e8582271554", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "01bda8a68a6dd18c1d8507a2a233990508104606b2796733978d0543575fb2dc", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "dadfe476f99a13b8a8c5f1875762e1ac34bf059c14d703f35e44178f7807e6b6", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "927194295d5398723922407e0d364d27e074c68eb967e83f5fc8a12f6e0a3099", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "dd3a4d4751dcb7fef5935b7ff60d80612f19427b131cfac3658b25763e07c7b7", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "32f114f8b9a0d105d93e65672b8f30a3d537bd33ea4994355c025022ecb005f4", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "80f8b6793e11825427762c31fa0f79bdf53aa021f3ac3b2b7757de2dcc200abd", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "e4ed1bdf7bebe639b55b643f5df9e17d8ab29312917fb7822072be17a0dc6fb0", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "e39c766f20ea178786e225560086559eb222f62ad7cbb3078d65d7c3b783463f", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "9a8abee62ea7ca4e3710d7e1e46e645cfe0582b3a659ae4e298cd4956dd60abb", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "8386c6c2d37ae21dc6bb6ed7f02619598c8dec9c6358f8c48151e92a5cbaa3ef", -"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "21f97aa5941c99a19dcd8addf80ddddbbe8a98069bf343911effcb891fc54ba5", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "229bf84315817c43148335b75bc94f6b49b5956b8b008b6a54ac3ad64c946f0e", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "49943fbdaf521509212eea8f59f84d2ab72758bfbd5a0ba0d018fe0b318910c7", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9e2d9515b3e2b09bdd1ddc6fad4210621069e1ea0319b35736f1c066619dfd87", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "6c46c2146d0ebe44a41ee9ab66fbf6ebcb1f8e6d16eeb277965c784a019e8e25", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "120ff9217d248f42250e5f9555386614d073896e4d9962c058d485c2a258888b", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e48a95f89a0cbade320179d127b5d711837b9d10a83bb0e4112580958349609e", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "c4fe429c6ab2d25041a043f7ab1b45d24f5c309f634f80b6e45c9a7de9905b9f", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "e4a16a0ea6a6d2e9f788ee987c7f33409451f786936a4ed2e240f7bb957ed5cc", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "ff3575c4a6bc86501b9f9601979fa379c999e4d62eb1976a119b72ba566f8fec", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "64969d3608822d3c234198dd0c7766e10c4e98d38fcb5e7fe31b63f45f0256eb", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "8e4e30780090b4330aef651430341177a417baddd4410724bb1d00c82b8d2233", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "75d7a81beb661942df988371cf26259ef8f42e9e8186185fd65dfaaac261445d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "38828afee6a4fd650aa4acacc0d32782fe7a106e153a1eb611dae3a039b90ecf", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "6da6de3f06b0df463eda5c0f507877c0e7ea6e18dda99fa18aa04c06a520b9c8", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "6588d2b1ac3166eac83646eb8b328869f4ba8bb9f5ea0adf6186e566e38a94c5", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "97a2a4d389946545ba37cad82837922732de07fc8bd5988a6d0a2fe5241f3232", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b03efc2a61eb14a3dc55dd567fc9772771d4f899924c9fb719afc34ec0e9180a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "27af760369f1cf58fb285a2c85ecb9544529b46da01495c42253b8743e559757", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "246ef955db3b4677544f6ce9c0aadf2b32d91b4683e324480d868167ae093a9e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2446e1765cfc3c2b06eba9f4607d821456aa25dfe9d043d5561aa059fbeeb785", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "2c7f04a733b38ded99bd41371282db6a88730a9d688bc9dad12b494eb06117bb", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "03a4ab1b25c7b83e922f57fcec0d88bd992315ec4e97fd583c44409b5031f00d", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "7e0101510b0999964ba08671981b1e157bb1495361df28912732f892fed061a7", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "cedefe5a737ef8f0c3932f7dfe034fbacb87482dd6a83cc7f4f109e0a85449e3", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "ba60d2f740d3e056d740719dd3496ddfc674c7897736774b41b2290d20c2a24e", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "23ec5169ecea72f7410b76fc0d4d2998332d1bf95d44f58d41e62c2cb43fc47c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "3826529edf9447bcc375e77211aa02a699ec9b274cdc51d5f5296ced85296c31", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "abcc0abfd6c8d6ea76dc32cf61e9e7e4176fb70a2b9f86b5b9aba282cafc7059", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "cd9c8dd0452971dde9af2aa5339eeee7bbffca0ac8df53504147ae4b2600c80c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "667eb67a6f89363ee12542765dbc79482b5f60d543cea0e4ef53e7a1aa90ca02", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "9b7962a4c18897b7ffbdf91bfe273e35326f120b9d9447ad9005ec729a7929cf", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "458807fd4b74535a8efe8c6a63324aa7033aa8b7d16f9e4216b046e5659a9ab8", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "abef2f7e1b1e9a304deae33e0545bbb7fff4586a2127415e21cc0a4e9769e08c", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "f272ec45b0a6d8b832ed2bb59df31e78b046d8ccafc5ac50d6a1203dd7462db7", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "cb1c49469ed033ee5f5e4ea1d1c3348455a9be4ccb39def99d78f53ec643e421", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "83e90e14967916cb004dd98ae5f97472cd400be1fc923dfeae31e0c3d8e57fb2", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "77c7824d7f6e65ece07a0988061e2559aeff3b68344487be5843d90f675fe951", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "b68a0b930ddfd366b791739ce4bbd7b300775784a2d18574700db871173c4d80", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "8f24d1f46a020fd0c71299417bc8b38e81c93fc4e3539345490e7603301dbe30", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "3826529edf9447bcc375e77211aa02a699ec9b274cdc51d5f5296ced85296c31", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8b81960e34d461700c710535304f2e83bf9bae1c0effca5bf8519623372e718f", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "7faef371b0685238fc68a9b1728bd3b2e76e71f4780731585adcc28f7dfe27dd", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ba826072228da37df7e72b0d17cc0d154ea53afc77e989e402da3e21c9ded1c3", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aec1c35781352ee55925f8cea2ab7686003e8c561e3402e261785a1ccf17184b", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "ba71ca446347dd48950ce366be7bf4d238ae4a783ca4fadf04f2627ba88beb9d", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "cd670d8b1235bb620d5268061ab2933d08e28595059f7c325a18d96b7d22fe75", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "10083c36c0f70d47849709516fe643d5a5a325995347485c3f99f04e3d69582e", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "ae88d19139a8b33e08c29a5610cf08f07972012bdf7485210019705ded27b5da", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "4bf7a946f52eaffc31662a88e9ad906eb024307d81d03fc5d5063115f92af7b8", -"T3T1_de_test_autolock.py::test_autolock_default_value": "65fc11829be2090d3767591ddc0970c81059289bac77b5a99ebd23be83953d04", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "d2fbe3a515ba4e663d3545e245a4706d51ca51f023949336d887af5174d4cbd6", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "d2fbe3a515ba4e663d3545e245a4706d51ca51f023949336d887af5174d4cbd6", -"T3T1_de_test_basic.py::test_capabilities": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_basic.py::test_device_id_different": "5621206e80232188c3189f1d20c18d0cccb844eafd99ca79dc3ec1b6e33508a4", -"T3T1_de_test_basic.py::test_device_id_same": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_basic.py::test_features": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_basic.py::test_ping": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_busy_state.py::test_busy_expiry": "218ccf08ea64bd2795e57c147909f93e014e34b95eb5203934b677e7cac8e11a", -"T3T1_de_test_busy_state.py::test_busy_state": "03cce1e883d09fe94b9df9207b303db85f0f47b55797e99a1d46991caf7e08e5", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "6b947bcd43006a0b7f7030dd2149a62000ab4e0900f9f5b15ccd7bbba0a60c39", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "6b947bcd43006a0b7f7030dd2149a62000ab4e0900f9f5b15ccd7bbba0a60c39", -"T3T1_de_test_cancel.py::test_cancel_on_paginated": "a65d43e1c0f31b083cc42839daaff521078294b0effff7e9dbe73d7cd20b7822", -"T3T1_de_test_debuglink.py::test_softlock_instability": "0f7ad746b5752911b6e5464d24eef7511184a1bbdbde5ef13065900f83857811", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "bf2f818f1145174c6b3728cb9d1b31b02e37c73f9c3e9a34de5edf9d4158caf7", -"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_language.py::test_error_invalid_data_hash": "f6fb72dd5883f7baba49500764d119d4b144c89fb14d795e6c2dc9174a5fcece", -"T3T1_de_test_language.py::test_error_invalid_data_length": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", -"T3T1_de_test_language.py::test_error_invalid_header_magic": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", -"T3T1_de_test_language.py::test_error_invalid_signature": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", -"T3T1_de_test_language.py::test_error_too_long": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", -"T3T1_de_test_language.py::test_error_version_mismatch": "0fd6b2b2617544fad696fdf53102f04d540f7b7b86a2d8b417321a623e67187f", -"T3T1_de_test_language.py::test_full_language_change[cs]": "70cbbb5dc93900e41d79ad01fd1b4b516984ebe755f757dec49b30991b19e72b", -"T3T1_de_test_language.py::test_full_language_change[de]": "b911565bc5862892e12628542b51a5b19a4d404ce05120f987ee1ef7b634f004", -"T3T1_de_test_language.py::test_full_language_change[en]": "a0a8a645df7e0dd716fd7000103b555faf995cd131fd670c7ee90c590f6eade5", -"T3T1_de_test_language.py::test_full_language_change[es]": "7f237ea6a4b08068bebbadb694a297203cb875fb152acd8fbb2f1a85d778f564", -"T3T1_de_test_language.py::test_full_language_change[fr]": "b400810e21e3c04d417f4efd3d796e6b79f6fc81ffd504724d65db94ffec641b", -"T3T1_de_test_language.py::test_header_trailing_data": "b22fdd50b69397c8eb92c8778a390a2b07318875f9284546157b93acf06cc8a6", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "c06d2c136d3640a83db000b0064c2b4ab75e8c5dcc7ed8ef80d21a6c3a4811d5", -"T3T1_de_test_language.py::test_reject_update": "47487fedb409b1313046b9b7195bf2a8c70d852d10c973c92f303940764ddfc8", -"T3T1_de_test_language.py::test_silent_first_install[False-False]": "990c1a3c0f64b4b23e6bbb87765f3dfec70b94a421121c62d956e3ac9f313be8", -"T3T1_de_test_language.py::test_silent_first_install[None-False]": "990c1a3c0f64b4b23e6bbb87765f3dfec70b94a421121c62d956e3ac9f313be8", -"T3T1_de_test_language.py::test_silent_first_install[True-True]": "f929150eb75c9bfec11b4c32f01a8791aaca3aa79ef8bd168b491604ee4d3275", -"T3T1_de_test_language.py::test_switch_from_english[None]": "a208dae9f0bdd4818120ffb0ea38c7d635cabfa30c682703d6f202ba06bdb63d", -"T3T1_de_test_language.py::test_switch_from_english[True]": "a208dae9f0bdd4818120ffb0ea38c7d635cabfa30c682703d6f202ba06bdb63d", -"T3T1_de_test_language.py::test_switch_from_english_not_silent": "bd161d195bdf79d40b6b1270650042ad5b5c1864ea36cd47bc91c8d975857a7e", -"T3T1_de_test_language.py::test_switch_language": "f2a91409b6a92cc9d12f36702e729624a449edd4f4c8cf640fa1e55b290c15ac", -"T3T1_de_test_language.py::test_translations_renders_on_screen": "6c79de36a66e3ce5a00e40b55177696687dcb9826815016b55c0cef89aaefecc", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "77e971255caaa6ad26e881bf25b02300b1d72af7e1e621986d11ce0c70fa317f", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "eb0a1e3243e49c3d4317f3170014a21ffec12b314274e86d3305a9cf256e87cd", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "e9926b5c3d5ed86cfeb72d791c3ad7cc35282ed5a774b3b6e41733c22ab49077", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "79fa1a43fe800b6dd858ba363f341f096c0a9d85a5fce9afc02d96c88f5e43c4", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "c18dfbfac4657f78f47f7b37bcb13069fae03bcf601a0ee660ab40f5e682cdd3", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "bbe9f6bb2d4e1cd0a27ba159a401518ddecb0c2ad43990f90bd67af1983bf4fd", -"T3T1_de_test_msg_applysettings.py::test_label_too_long": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_msg_applysettings.py::test_safety_checks": "07e415943999d9052d9b834c1ade84393f38237ed4364422ee559c49e3e46c95", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "6c4290e1ddaf619a7dee19daec4898ee161fbab7ed6de84db717e087cbe6e424", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "954b130b168005a9361a814893e807535ed9a081460cb585a87fd7080ad4baad", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0ceb2a838fb99cf74264aaa7e4ff555f230c968f0e2f545bbdad87874b8cbda1", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4e56975686939667495f384d76a5d1e17dc520f4c657a00b51a6136ec66a179b", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "eab4fee173a597938e72db782e7a266a87e2485d506adc91c948c51eb3c8894d", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "2fe2798b72190312d3daaec08084ea0c847ada3f259ec9d08966efe48eecb681", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ebeb917b2f284de9d0186ac27c96cee711d269d22d5cd4bb40bbf762049f4b72", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "2694879a33e782796407e84e395f3c6aee3862fba15ee81b579d1bad53d1d273", -"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "403f991e3d8897307ff50cd369327a95e139dd62207d416515320b999526bc44", -"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "daf89ad0f2da3d74dd7619fb29502770dcabd2fe34e8f2dc3c356dcbe57dfdad", -"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ee17311334585aec07b24c30c04e14026cc9226bc0ebdeaa8da41ef52617869a", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3cde5a5f18b377d496167ee307f1bd0d2c19454205e1f2d8c509fce3c48f5a17", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5cd6d996f06cee41ebd98b845c2a49b521a0c7e58db9c018ac049d26f8fe0201", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "f74f4fa96f85f765ce66c68b8fd32c8e300691d0214f6a8d5eb95e4bda6ecae2", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "c07893520ac2bb897884589899331f9e687015bbfd5ebde28bc9f3366ec3dd3a", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "eefee07e5d1961957dbd96e1fc522bc7daaf1e70af0da9f6a19109095d91632b", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "1e0737064f3707d283df8a98020f8f9244c6fedd38505ff3bd5089fa1b2cd628", -"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "775b5519ed232cbd4b34336ad7dc343ec901a0fd78e8fcd93a8dd2986165f4b5", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "3457da59e581ecced57bb92299ced2e449074a0343c7a1d4c611751e9ccbebf1", -"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "4e08236c01ef1451f3e6c49d0b5d36ab016c9300faf5d93a15a9108cb2d09a66", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "6d8a248e0c7e2419736e7388de4b0901d17436f2a9b0e28d17c8ee7d32985507", -"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "21cf2ea066ee11c565f6c66482d2ac1208db51d2ef313823152f6545615201b1", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "9156a3aeb89efc46ce6140d203615e0e8d43e485908caf739e3166a77076345f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "b2a2ff43d86321720984b51df6935c57ed9295cb5187be94fe8841393f9a82c5", -"T3T1_de_test_msg_ping.py::test_ping": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "dd28412cf5592326bdfd4520241f7105fd1957e5ddd6b88af964d812db5c4cc1", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "87d08947a4acdd4efef4fb913dcd3f9cd42fd87936dacd5fc66c3c1f9a8565b8", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "24a6630bf8eb1323ab99b95119e1f25025b7c87432fff15b9ecc70bdf0f19c2c", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "2772e6c78671d9806f08f66f388ddfc9d277b28c5e509f0377ed7485c0f1a06c", -"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "5621206e80232188c3189f1d20c18d0cccb844eafd99ca79dc3ec1b6e33508a4", -"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "35076ab12a43e7df06a0bd98bfaa585d1f8191161bbb6a70e024012f9b4f9829", -"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "35076ab12a43e7df06a0bd98bfaa585d1f8191161bbb6a70e024012f9b4f9829", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", -"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", -"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", -"T3T1_de_test_pin.py::test_correct_pin": "9cc27473a9ae089c69b5e8d6f99e228de452c98ee531b80c341ed76620bc9a5b", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "890a345d0444bf8f5c561b5c67b4545bcef07091521e313a27fc9fd04bae9298", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "2b2485d336d988eb169573e3b10599866c67755edd1dd06c6f85c04f89029aca", -"T3T1_de_test_pin.py::test_no_protection": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_protection_levels.py::test_apply_settings": "cbe7db26646136f2fac26d85cab5c4e08b9cbda3fc6c412631f57acedd6982e3", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "22c631218f986e9fbddc2a3c472079f0affaa6bda7e476e89b96f21678b22b4f", -"T3T1_de_test_protection_levels.py::test_get_address": "813eefe093d00bf7299ee68b64a6043f1057739799ae3cc0677f53cc06ccef29", -"T3T1_de_test_protection_levels.py::test_get_entropy": "bdd283657701663c874036a0ed0e1ed4528ee339d2dd1532ee3e9057ddb2b45c", -"T3T1_de_test_protection_levels.py::test_get_public_key": "813eefe093d00bf7299ee68b64a6043f1057739799ae3cc0677f53cc06ccef29", -"T3T1_de_test_protection_levels.py::test_initialize": "5b0b4ea1ab41a45a7b243254cf4a41d7548574b721cfb438e2e18eb87a1f485c", -"T3T1_de_test_protection_levels.py::test_passphrase_cached": "0396b00c2e34a8012d1d9c6ccabc6ba40fd5a2d0ef2edab962207cffbe8e41c3", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "e00233d6afdb1e50cc6e3bc64a1a2022bc0f2905ee53a86377da7b721c087d52", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "39dac4f900a7fc364b0addac525874b3ecb9cf814a1decba575632617fb2b782", -"T3T1_de_test_protection_levels.py::test_ping": "7f2b7a664d65f0f67ae906b4446bcaea152b04fe5a33d408990990465e8ffb54", -"T3T1_de_test_protection_levels.py::test_sign_message": "86a781f036ab5b6a0e13edff4e9b7c809bf82b9ee27a814bf8f14ab12fa505cd", -"T3T1_de_test_protection_levels.py::test_signtx": "4c60a3faac7a9f10fac6ac7a54c70bb4dceb01789e135117790024378cc154f3", -"T3T1_de_test_protection_levels.py::test_unlocked": "ac4bee893e967dbbba3d65eb3d6e0cbfa8888b200101655167c448bf8507ca9b", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "e85d5a0810843e68b500f8dfd9abdc2038542e9628fcd9c35c008cbf26ec2fc8", -"T3T1_de_test_protection_levels.py::test_wipe_device": "1ceda783f83a9bbd5c6644309f2d65b9f7811505f11a1dccbda9db35cb721f78", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "75585eab4823e7e87292d6564bc424198187afb9ea2b677e232c57477600158b", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "09af1ae7780ee2c459817bc6103dce2eccf054fb357a48a8a2d6f5f1b6857cf1", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6256a49751013335e0a96990b81144b1b2355c24140be0f5556c57cc4847090b", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "98aaba2ce82dceecec460d22b485a62203e4565609d40bf7505ef1910c5d2f49", -"T3T1_de_test_sdcard.py::test_sd_format": "b15bde96dde9702ed212031e9377b86aac616cb03feeab8bd9499f2db4162898", -"T3T1_de_test_sdcard.py::test_sd_no_format": "abdcff28d21d3c15d835c5ea2df1b5359785cf3013b441783b6cd7be4dd67016", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "ee5c0af6dbac63de42a0fd3ed61b0944ca817d3dbc72f1f36a88279d826fc25e", -"T3T1_de_test_session.py::test_cannot_resume_ended_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_session.py::test_clear_session": "ff07a9672cd6f4a22a6caddda744d5cd1f39a6849134ed82b4edcad475340a57", -"T3T1_de_test_session.py::test_derive_cardano_empty_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_session.py::test_derive_cardano_running_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_session.py::test_end_session": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_session.py::test_end_session_only_current": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_session.py::test_session_recycling": "02b2dd567b57a27bf4a7d2f9c914d97915fe85829589b76c4388d66c7eeb3598", -"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "d320251d3d56228376baeaa48b97efad7bbaa5c2f50d8942c54bbd0584b4a58d", -"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "712d435e431dac8fa942e51cec860b0f5ff8ad1b9544bff39f37d93ee3b7c84d", -"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5d63356b1e397331fa99759bdd8c9efca9d215f5ac6e8d6987deb521f3b62e7f", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "f9a677734bc3f39da6c0fe624fd8b72aa3d8b51b0bc2e7e4da6f5bc2b691c608", -"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "14e60dd0928f39531944173b6502aef905f0c559421f33a632f69407433df6b6", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "4c5ed4cf3c42b04e4617ea6a67de402dc44775999f1909b8744e5dd0a4820f7f", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "8698b39ceaa47b0a911640497d1bdb5fb29efd6c779d1f711d2eb01e9b80a7b9", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "0396b00c2e34a8012d1d9c6ccabc6ba40fd5a2d0ef2edab962207cffbe8e41c3", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "00f26a228fecbcade38f24b5ea666ca9d399e3ba7899f4d09295e6fd7948ad29", -"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "381c2e9cbc1c68ef5511f8c0921715ddfc3579556156e07725fc20f5de700560", -"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "4cb32697dd27c9b3355699ac03f132b1f180e3d0861b93c503c2fc53d440b8ce", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "97de64b2cb7bf8f5e87b67f2379a3c87920d693fa8d9dbe798fe277765784a1e", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "36cd4fe86efd1649a83c18d09e6a35dc5d4af2d095eb60ef88b492a25a6392e4", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "3428c414c9092bda35c8efb3e43adf9cfb87f630166d65cac852ed805e662c7b", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "eb32b59cb44faf38b7ae34529ecfefb6b2146aaabaecb4a7acf63fde49459e74", -"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "28ab89a7bb7e91fb4bbc58b0c041f3994eed32e2b9314176209aae852a1c0f4d", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "faeece7285f4a3478eb0a0754ed711e72aaddcf1affd662a6395d6c2ef41cb66", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "13fa24f759d29453795c8501fe074d89d01caae9eb3ed4b410f9c84fa7378a79", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "5ebbf8b65cc2a66b04e566624249a83cc65673afdc7bff2e61ee46f47fa3f2b8", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "d57014341b94a7ea8132822e25da8845767f0f99d3b72a92b287c872271c067a", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "beaadebb11bdd98d2cec1715d1581e73813cf2320ab7e0663603da55f43a940a", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "7f8c8eddbf9f8530f209f8c3768ac0a6c28bb9c5cf149509ec4c5265a980a44a", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "e42997b3c1175f0341e370724f6f851e24d0b2dfab99c9edc53c66defd70711a", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "8035a10993761644462f28a78fa14fe21a1d69224baf199236bd3fa95a180389", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "0385d2407b05c98f3aa3c44562e1c7f414b989f8ed83a7bd95150b71c7d5ecc6", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "a43cd2601cb384b8311e3d83908a2c3a1d56ac9450bd0c9109e9cbe044120a66", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "6611a0372d3d0b16a0d3e6224a1d6505575e5c408338d0503ed44337af9258e2", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e2e0e391cd4343e31940301be4ca3b70a4b3548388f286d9246380abeff305a3", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "a7fcd2614f9200eb2fb804f21f81541d0361e589e4aad3445fac98ce84c3f017", -"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "f761c2fc5414c2f81badd788543518d57954fc67fddb250628fbc8f21989bcd7", -"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "27d7686351e84b6df02378c34ee869b66d09adf16020d4cd65b053da802fa90b", -"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "e8ac58a337f725c491b9481028f72cfe19910d0503dff09654fc34e97b0207b8", -"T3T1_de_zcash-test_sign_tx.py::test_one_two": "c8623ecaeb9bb4e2a4b87d29e13d8ed8e5707699a36b2a1232304ac44cbd9db6", -"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "cb33e0c4d396f92997fe0809ebd610c86c9ba580bbe757e2f5d44b64ace44b93", -"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "784500ab784bd8736023c1c78825abafedb4356bd5de78e5d610e31f4ae1e5c2", -"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "a963cd0378141291b1dd71a2446416024659f911b4ecc9b654d6e050d6aa8554", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "65784003d9609ff8f16da8133b8fd5275de623a2daccab07c968563f55be57b3", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "bed6dfee1041fd7cdd7a1a2947065182dc7a36b4575e3d572c48b18c7b210ab8", -"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "73c94ac41dce524c9a6b9f4d4a60d1e915779e521a90087443615dd8af8df0c8", -"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "a4db2094a19bfe6b681a0f40dc8b75890f41bdbfd617f16eef106e3e4ec04ac8", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "8074dd1e78d9b7778f397b01296e4e4645a779adbaa2fe0026c4561f326b4e0b", -"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b2177b2d49ad8968f443ae7c3eb40a61c5a79f359fcab22f394ed033e94d07ca", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "2e1f9259ccc516a2f355626f17a21aa7e352f34d2a88cd6fa6e752db31ad03a7", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e670c8ec334dfd1608c7a68a4a5fa0d5c00a014ca6dee589cb62527159cc6986", -"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "7a7ed2a7e3b8c6e3509cf83b14b096a140e8d8095724bceb45817cc35f0bc8b8", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "380ac53675e261dcbb4d68aa378bde7be830d926326d1aba14c1e0324b9ef306", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "24c96654c356fd64c7b84df817a4ffe031566a985efa1a0c84d517052235aa00", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1fa1e818ad800bb128893b099fb1488679ff5223ec1dfd1cfdd553172603b9f6", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "380ac53675e261dcbb4d68aa378bde7be830d926326d1aba14c1e0324b9ef306", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "24c96654c356fd64c7b84df817a4ffe031566a985efa1a0c84d517052235aa00", -"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "1fa1e818ad800bb128893b099fb1488679ff5223ec1dfd1cfdd553172603b9f6", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "1be9cd9f5f1b75cd04337d86287dd6d08a0edd60efb8008c9bda92323b601be7", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "42b1aa73cfc895a2ba5630e148aa05133a085d1a3592bff246eae6fcec36d6a0", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "cde92b3d53f38260deb5076348b0340f040eb2413a54097420867045d62ed579", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "10506444c558713643e5d59f175afbc5fdc4ebc088600871f74b45eb4a528987", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "518e9cf1aa4b91e8e62b0db112b750a74dcf7eb5c364ee4ecf4fc5bc065f7320", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "518e9cf1aa4b91e8e62b0db112b750a74dcf7eb5c364ee4ecf4fc5bc065f7320", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "e566e26f904a35cca5b66af023509ed8eeaf1001cf42ca6ba18bbc2bfb40d896", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cb03a8800e9dea4ca9350accaf8e853bbac0f14573783e6a8044117075b1246e", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "1925bd985206f6532d93978812325138ae12846ebd451ddaf14f921f3fcb34ec", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "2d230107e25db32392f50c0e18ccfe91b0579b09ad505f537251aa3b29fcc465", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "2d230107e25db32392f50c0e18ccfe91b0579b09ad505f537251aa3b29fcc465", -"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "64c7f3dccfb13f68276f332e9ed8881322b75cb321d549dbb24f775ba9200a2d", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "64c7f3dccfb13f68276f332e9ed8881322b75cb321d549dbb24f775ba9200a2d", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bed30c2f41c83abc57c901c1db5669d7b234265fdbc615968f7ef0d7c808ddb3", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "a81ffc0150b86781923384b58c4dfa066c361a2f28994b7cad071ee507696d95", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "2c916a8385b9c6f1b1eb984167d84e8ff4d7042fa087bd14cab9602680fbf3aa", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "bb3242dd5e5c5ee611ff5ca41d9fdacdb8efaa3807d8401935fe4b7305f07d88", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "baa9af35d53edc4ef279e242c55812b79ab3fdd2312760f8dd70ddbcdca69605", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5822ea720589f38dace79341c968ed365d85af236cb80a0ec3e25f7fe4e89269", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "4fdb43112dea576922b2369f0d02709be172d86fd60f949d89da6349882cb907", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "2813cf0c24c54df9233cb2f8d239a387f02baa5e6389656189104b5d188d4f6f", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "289085b1c437397d0dc43fb96d7292e85141ba740fb5740c4e414c5acfc04294", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "e301436b15b0229b5483c709c6d85854837408e9fce074c81f0bbce840ad8a05", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "24d0dedf895cf2288372872c7667e17eb3ed2c4b9726a8dde4dcacba7d5d854d", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "86e9a14d954ef719e83cf1837a72ac8cd1a181b524ee2bac9a2a5fbd364b6e79", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "17bb62ec9f19f4a4892c497c2dde58ed10c8a330a80a7d510628cbfa70fe42a9", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "3465678c099b7aafec1c8a7f903fc085dd74563ef42349e9dfe33e3c8b3594ae", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "f67d4b2ff8bad94152ef254bcada59a9eb0aac44c4c3b89e976c5ab848cc0fd2", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "1b965021e8270a5e0e1ada848ef8a86da6f0a6b2f3f386c68e14b928d865b044", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "18b38262487935c410df9dd8a6fc7c015dc4edbe88c2b3e545d9617c776854c8", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ac5208d0ac16e3a769a1686b1adc438c51fe17ae37750e59b221caa73e363ab4", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "4581823acd2684482120b8f27b6037f7699d87c7f239b138e18add6942321b66", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "c7f94c86a26d97f62f0b3624825b085cefb2bb98bcf9b68b2d719fbb07a6f408", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "2c197c93f8af2ffe49188644a5a0a065f1911b7e6fab62121c99489c5e758077", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5822ea720589f38dace79341c968ed365d85af236cb80a0ec3e25f7fe4e89269", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "4fdb43112dea576922b2369f0d02709be172d86fd60f949d89da6349882cb907", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "2813cf0c24c54df9233cb2f8d239a387f02baa5e6389656189104b5d188d4f6f", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "289085b1c437397d0dc43fb96d7292e85141ba740fb5740c4e414c5acfc04294", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "e301436b15b0229b5483c709c6d85854837408e9fce074c81f0bbce840ad8a05", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "24d0dedf895cf2288372872c7667e17eb3ed2c4b9726a8dde4dcacba7d5d854d", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "86e9a14d954ef719e83cf1837a72ac8cd1a181b524ee2bac9a2a5fbd364b6e79", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "17bb62ec9f19f4a4892c497c2dde58ed10c8a330a80a7d510628cbfa70fe42a9", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "3465678c099b7aafec1c8a7f903fc085dd74563ef42349e9dfe33e3c8b3594ae", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "f67d4b2ff8bad94152ef254bcada59a9eb0aac44c4c3b89e976c5ab848cc0fd2", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "1b965021e8270a5e0e1ada848ef8a86da6f0a6b2f3f386c68e14b928d865b044", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "18b38262487935c410df9dd8a6fc7c015dc4edbe88c2b3e545d9617c776854c8", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ac5208d0ac16e3a769a1686b1adc438c51fe17ae37750e59b221caa73e363ab4", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "4581823acd2684482120b8f27b6037f7699d87c7f239b138e18add6942321b66", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "c7f94c86a26d97f62f0b3624825b085cefb2bb98bcf9b68b2d719fbb07a6f408", -"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "2c197c93f8af2ffe49188644a5a0a065f1911b7e6fab62121c99489c5e758077", -"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "e6cdcb76dc77e9e73759c523d38283db2938028cf53d6e8ce7cd892a6c1bcf56", -"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "544d03882451929ba6e33303dd7d4e9f5e62d90f8f1cae35a2f2ddb142d39a01", -"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_bch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "19728d270879ff4508201ce7fbcf42f3a127290f2081c6633c46ee2c3b1bde0c", -"T3T1_en_bitcoin-test_getaddress.py::test_btc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_crw": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_elements": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_grs": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "caa48b7a0394e559051fc6d15701f985cac0991ee5bf81ed91fa3442849b7e53", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "1923b930049eb8e26b3ada5db79f7a2eb79d963d700762641c9f6e7c46be0e4f", -"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "807424f508c8a0a24e65ce46121b760dbf01a508e091c52e0bab6af5e7bb930c", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "4fc76d9dee68702bde32ce5b0e78dfb145764ec6e30bf2b3325a0683fd71dd3c", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "ed9d78b68efdc4dbde185d6f3ca4ec1233e884fb862f26aa4862fc4ca9c97268", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "e8421571a30da588a75a3a87d7514dda696469af137e90e0f31de2a77f21309f", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "ebaff42533a1fee17b04ceb449edb9275ca65a3cca042a8cd7f22a4b40e3008c", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "657ac8f99a138b9415fec0d58f919d2643469ed85cfb87ffcebe3ea4f2f71e39", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "1ea00c6082116044d2f209b320048d91f3c094c73dc9081dd7946d27309661e7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ce9f71ca623c157e239779f65a0a3b687cff155b3b18c7c3f8b0e1c09bd7f53c", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "3aa617cd38b20f2a0781baacce3498b5017e2a7bd12c749ab760df95ed833a55", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "acc768bfc9d725528a0cfbb5ac61b64d0dadee0e6188cf9e3eb09104ef406693", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "2728c4c2182ab306f1dc284236cda9015b4c9445645cb523d652d4c243850add", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "a4033bc72e4257e6b48bbf31416fcfeecd56be1bf4b5fa2cf3010824d66e7008", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "2bd5faf2bebea1b30001c4c1924d647b21cb9d9ee02ec99ab7def769893941c3", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "9596aeeef55c2847dbd6badfef7e27310078114d369b8a33facd498d535e92c1", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "d0d5835496111a896b226694a217f54cd61e373c617f30ca88f1296c360d4453", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "bf62d5e462afa40227579920095effa9ca7bf20c0c268f06fb54dd4e5a71c48c", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "d93f287cc4edea166f5a5b3e77f94ce0159562062a423fe0d2e2f73f1baf5f78", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "c46c807631c51826c0fed3f47e473224af0151ca6b5d0aa741fb3f5e12ccfcc6", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "612fcb0e254538c34abf81caa03e34a9cc25e5c2725bb22adbe04263288bf635", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "eadedc81fd2cef2a4fe7042f0fc8d5d23c6356b269127e1781b0ce9e30a749e1", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "bf759fb91724441675a2d17b57451886b175dd2225ddfb8fce716a211fcaa428", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "b7e950965fa0955d618935ab5042a7f22d61367a851f0f11d3b213c39f3fb026", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "a9664f9921f14bbcfe7a753f50966381612bf503c79076b4d329c9d4a5cea4d7", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "6829954e38bcd9c8c903e6066d390b405f7b77687741707253cbe1b82638baa0", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f6c7d01ff2acd5062f178bb07999d2e0cdbb2b8b5688cd822ac9d9ddd7b3f4a2", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f6c7d01ff2acd5062f178bb07999d2e0cdbb2b8b5688cd822ac9d9ddd7b3f4a2", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "3d3199981728e42d9ed84ec25fe37964527a90358e7180e4a19fa2ca0ca60bf8", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a74813c83b3a2236233864b071372913424ff28b3592f76d3826e4f4b6dc38ab", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "66ce57fa53783e79f939181795641f8608e2903f67c3306cf8a387972e7f3541", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fe3da25d69c00375edfe8c0287e3f3e81848c9f178e7fd94651d7bf5d91753bd", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "67ab0ec229f4cf683e5f48307120da33d93b4cb29ad857b85108ebcb804333a0", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "917580e9871a9c10c1c0e93a2029b1ce3ac4d72eb46ab44b0f19b2443770fb3d", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "9cbe90661fbdd8974280e418ce5f942b6033ab50c1d251cc7cce7158e5503061", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "768accaf8a52b39ddc2359f73c85a6819ee82ee948b29c56a2131e0f8e704a2f", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "366097efaf3f05204134d45117a99f23a3429ba9afa81efe012e15ecef603ece", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "2881e11a7a2782ecc2885b7f163e95b34fd14097135948fed9ace75d297659aa", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6fe3600465850fc2d1480ef583a8666e0c5fef1057040245cd49dab16712c6cd", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "675b3a98a2d4db16b49aa976abf92b3f79d891a9b99423b87cdccf02a07267ed", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "94784562ef1c4fd318cc627273db05ea3cc9764c8ed1b6b602997202770ff52b", -"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "1052a8045fccc8fd37996caba0fc3ca30d34745ffaece5a50befbd0e35265ccf", -"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7cb9ba18a4f9ae559372677a6f33fb705e7d204987d1b8bb382e9b1dcab4ae8d", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e0ee283bee33c89b39af9f8579652f8618e37c8269bb62d6c07b4ae3020144ad", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "990da17fc0a477b2fcc17480277bb1d118745592d24e7a85456f9026a1751edf", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "90b4a8d78be865851997678447f55a2cf9ed5112a3eccd1916e9cf410fbf4e0e", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "41e7eda7a7083aaaa514217a3dd8e895dae785c53c9875cbe0d4d21678ff2e0d", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "bbfdbb028211d3207c0cc8d3ac613365f7dcad2004c2869938b3509d33f17ee3", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ac7406e293c542e1a52807a75d627e2bc6553806b55ce7918f6158583a6d6f39", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "c558fa916c291a43540c5d2e22babf8ace1e95090dede50b4941b1202e4b61b8", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "4c20f709e50502a5e43473f0737503a95ebf534b087f595945ba2db219d0bad6", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "bc96937115d8a288d1bfc4ba4dd40b93b812416431a0b65c14c3bf52bf059431", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "911059cffc040dbdd3e2b689744074833e9309d0fddac2964bef9d797801a9c4", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_grs.py::test_legacy": "2c07ac3cf88f86fbfa7415945a15287cdeecfebf6f0e0bcb002d681042957dbd", -"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "9d969eb4928b56215bec9d20d1246e2cea7b32f4885797915a8a9a8ac0e2fb89", -"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "d972707086bc0f90b9b3362cd37b2c421f6f5b641c4263e8292f86e78600d663", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "de756c62f25eb78c64d9c8cc5fd8e698c8d8b0dba91a7ad3991944cdd96c7001", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "a84997b8ef37125b42f75ab5bb35ca91830e5ca52c268899c3ed4dfa70d1ab8e", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "d35fb4cc18563aad382e66851af7b1ee6afa27c425c24aaaafbd0d10fb3e89b1", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "4bfa9be707cd2d33a7eb45084ff7752c1483717b8d5cf66a46bd87f6d3e6c14e", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "608afdab303404db53e8fe6882edf54c355a31dd4caac7b2d9a0414e4620de84", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "465a8f0571240d24248f777ced3d8f5643b897d45b72991793654db8aab573ba", -"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "906346e37601d8947e1926f952151006c208dcf7d969b0db53a4a7539e002342", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "6ce1fec4a45cb077a7cc73988b730e30d5faed4a86d0c6a0c7688513544cd20b", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "7549e8bd8d5fcbaf6b7b697656e162489c569b9e00c13f758c57220d3c04efa4", -"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "d87ea24ecd8d70b233c447fb8dfb8e641c112dc4032753f81194d7c77a816dcf", -"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "53d0f45456f7e0dd9e4fb980d1795e6fcb02d231579ec10334270eefc3394571", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "4da910dbcb5a971954adea79c18ad9579f760d4bed94245dbc17432ffc1b0e39", -"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "d2a511e88c8b6fc540348de3ad937c6d0a6adccc7e3960db60bce9a9612e4955", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "d45f9d2a879ae16fef4581624bb674ced428e3cc553d2ab556f3b2932d9b8f84", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "79fc5451adef33f6e1c40f4dc47cb59006687b0f2e1628fa1eefedd19edd1e42", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "c5f53e6b9fc7fbc051be9e362821811a15597c51d8f10d8eb305bf52179a104e", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "862064ac649a9722acb30f5c08b1bf706d9841c14362f181e092f7309b849b82", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "ba2724207c12a26d15ca190e6def281473704391850d674e4165bbc4bfaf8fee", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "a095b0333c4c48e2efb2bf64a3f9d46f022bcf97e69fbac53776e863fc3a5254", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "55e1ee5c6872be4098e08cefed46d719db95d9ebba7c36b366c04b6d70a3402a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "98ff82d4f8959ffb8782ccb9ce6a6c2d31560885622eebfc0a0c3735bad98ffe", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "2b40d59738a385004183cd4886cdd20bb262729d9dfb107b8d10f1e70009f86e", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "dd2d40f9e0196ae6a67273376b16a5f42d0179eeb400f9381c17c63ecb320d4f", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "59ff2e44a8bfcb535f66d3216b92f992a4c987cc61d8364b75a8c35e9046d938", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "08532a1cd2ff9e5ab87fd2fbd138f548df7fda283f1d0518dcc78241d8644310", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "c8fc403bf1c33cd6841bf54643f6aa05227adec49c64733b80dd2455146ea828", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "75012f06b4a05fd166209375933707a950169c13d7e1b1f6add28a4930c55025", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "ebc4c388887adf51b66160ef2355d60dc99024ce61677a016d5d241e58a94281", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "f42dba72d689ddd3113fe699a695343e0fe04dc8ffe5e04ffe05ab63f5aa81da", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0bbc9b59b3e36a6eea444f3ccb469b047eeb1db1b390c260a216a85980ab3d71", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "1f6706f0b9351b3e9992042938266d77a78684eb068ca6f733aa2c773701608e", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "df23fcbca6713c0d9227007c216163569c7064e9e3d04ddf257435e1b654677b", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "db8f8e7878e12e4924e4576e938681b5b01ff11cddcd472dbe73881256af1431", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "ae83e78096e6009e69ad48e4b708f05f62fb3becce8d63ca796428c96a8eee35", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "7ff8cfeb25dd698d199e51bbf39d146efc0c7be3b70295abffe7591bb240ae31", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9914b5cf8d3721e816b8177d0cbf708fede3afa9006b8db65a9db2c6a761d16c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "3aa72289f99aa315910c793bfce318f40b3807cece0ce4a61fb8eb213e6ba6f7", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "33369672efddcc29b520ec8c611e087e01bf7367370d1e08cb607947d0e71973", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "70e1e7c0fec86d49164368a64d2543edc1b2009879a2006a065ad29d74361dc6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "c31694308b48eace0c10586780b41785d0004beb6ed9b92e27d8bad5be185aac", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "14ec4f0a7061dd47ee2593e575d7c4f70092fa135573c3ba1b031cc2bfccda49", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "9fa9ff751c3479067e64b45abee14aa08931b63eee27935af46082ef6391c302", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6fced9354210d6520bb65a265b9055fee24642f2fb0053a668f0fe2fabec6f82", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "a1e9c360d78f523799cf001292793dd88f595775fecad0f9418ea139f1b1db0b", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "402f84d0063ea81f133c303c21fe481f4fce6f641cfbda8cbab3c9a0f9f0d586", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "ff293df83d4d144a4b3f8f6e71cfe0c3f61b0c37660158f92284ea60259d9746", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "293ef10998d010987827ab8ff412e9e8a25d7f449b818954c1f4f00be878f341", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "17fc21661c88174eaa22b66ce1a66e88ddfcc5021bcfcb9db206b5c44836cc4b", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "d9a0030abd15dd24acbfc237266d7d50b54f3f38bf8c8d13c70d661978dea4a8", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c99aaaf6804fe91cda277b84f643a1b2deedb175b1fe93a6cd9b66ed871cef41", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "0a2bf188b4e19b9528116680bef93e3fd0dbbe3f48beb679a5e9c4a1967610b0", -"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "3469198031a3ffda9e078fc7fa656394d7076047788b912083ae9939e4df3c05", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "d5627a9184e265efb3d89a769e8b929b472515cccb07a4a4d99ec6af14adab21", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "3bef9690334ab0f325144988876e9af9636e8741d81f247f9a0f2be64a8a7520", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "98c6ec9a90352feed680316cc329427f3fb38b06ba0fe85bf7bee14af296a990", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "98c6ec9a90352feed680316cc329427f3fb38b06ba0fe85bf7bee14af296a990", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "ae6912755811f502572bfce4f3f1f7591624b36fdd92e38ae0b91cd7f1e24b10", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "bb176671bc20621a7a35a6f954fed664b07b0bea5094175c62b63e299ebd0732", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "f9c0fe0b71ccfdf56e6ed9216a3ea0e78ff62ca7f3fe3d1250a823afe76f8bee", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "aa82c2770d010729239c61cc0dc4ac93aafccf52156b705c1930e98b10bd204f", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "9138f9f59e68c2a3d98bcdda4c23a8529fab4d1f058eb5c6dfb04ad65807b5c3", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "97e1f4c17568c9ade770c36a3b5c4f656a7df71be48f5fa51fb0c75752b45e38", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "97e1f4c17568c9ade770c36a3b5c4f656a7df71be48f5fa51fb0c75752b45e38", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "a62671186e9724d0d09b4082f5f9a5f3491eafa2b9a97c4576eacda82fa89998", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6089c238089366ca88bcd6c2372e42a4ac6332aebc1e7c81bcd3815125af6954", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "411018d0c213ae7258db24e398c2a401b5fbcf70dc5603a65bb77b48d4f7f834", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "411018d0c213ae7258db24e398c2a401b5fbcf70dc5603a65bb77b48d4f7f834", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "e42424b85832c8a2a95b5934deb211cf80654e7e0932da98155ec6b3fdc5973c", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "c4a1a2849ecfc5232636060c60f94ff89d205fe18b23746b321a8dc063b432f1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "f0c3f647406ef7b15763b06aeecb09024a58ad7b267c36453451561deece318b", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "f0c3f647406ef7b15763b06aeecb09024a58ad7b267c36453451561deece318b", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "200a0d61f06a6a521c9be24c0b23ec01cc9ca0ff5886e0f282a71b41590add64", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "4b5036d01043a5c8d14e3b1bccbdf79e52677508dea549b14400e11b8a4d65ad", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "ae211cc0faf23ee0010edc4f87b2048757382c0e4a93ce1b865d9ab6623085d1", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b49f741cf6fcbbad73d7554a4d4059b35d9b45320a78f371aeb1563e2f9badba", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "71e7f8e63b2af0e9e4908074ec65e5b84fd1791cebcaf483d924c7efa55c9bf7", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "7af81c491da19a112b86d21419b34e89fe60bcb2a2d90e93b26b237a52a935ef", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "ef04598b2b77e91191c4a15ec6cfd1c802d1c44e447da3e3f6d62528d4800aa2", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "877a595df83229f254b52106fa2e25dbcb24e45875013943bf4cf091d8036e85", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c5da7dab822bde34e57ef6aec744c473b81b32eef3cb8b8876d02cfe43c7e1b7", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "41dc17b76f3c76cb36a9b427e621acaa570e0069e5270c16161587222f07b70a", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "3509e7d26bbd3e7583274b10e0ac48205ca388969fb9d2ef42a6034ed5f534e9", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "589ecb29383359ab82ef0e172f2100e1b97bb18dfb6867cf098fbd1c14188279", -"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "f1142e1128fa55eb1089e31841823dd048bac59d9ff6dcb1c7a6996e2042b43a", -"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "f1142e1128fa55eb1089e31841823dd048bac59d9ff6dcb1c7a6996e2042b43a", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "ad7958671fa555a7d7fcc2b702ed0b6b9e653c1840f9770369f90d080e03817e", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "6160d378f11f48042eb425c08a8feb440df65837bb4d040e016635ec4673c190", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx.py::test_information": "9ab93f8d4b572d4de5557a0e2c0ee06a800f73cc3f55ef97c243b71a8cafc86e", -"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "6aa402f9394bce9f0bee3d92c60663f0870ee2036bb446986f266266bd00e706", -"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "8c4bf876240bba3e3c9c72c00d0b0e50f57e83c34f73b9425b293628eeb746b6", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "ddc62fc79029bb0f155a56a244b62ff24157a05fc519ef96db584ca13bdb836e", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "ce890d82b51ed723cb0d0ba361869ae97b4498d15ada88b263c6f45582fe7bbd", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b45a12681d8ecdbe65b5cc2177585f9469afff079a467c4ac39f0a2cb6eac257", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "ce890d82b51ed723cb0d0ba361869ae97b4498d15ada88b263c6f45582fe7bbd", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "b45a12681d8ecdbe65b5cc2177585f9469afff079a467c4ac39f0a2cb6eac257", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "8f9844456d999ab949d4f4799bc7c4c40bbfc294eb94d6758482f0396c6f9e87", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "8a62d1c3ab024d6a34a432caf38e6e6e821c4d1dc0384fdcf79bdec080254fac", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "4dcd31522ead5a241e4e42781ea827be67d3fde8375fc38d50d8629a1de1c39f", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "1f1189c8ff829145ffbb0bcb9812337fd383833a62a662867f9832345321cf9c", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "b468ac75e14e041c2cd562aa1bde65a1a69efee4221e8b2b19f04fa4bd10f205", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "087741f80642a762d68ca5ae4ffe1c14dcbc58100f9de518353834d2cd89c6c2", -"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "bb3926e5bbe411347e2a34d87a128769c205a34a819eb28bd96a59d3770fb9f1", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "2e26fb90126d17455da389ae90478554bbe1be07f56cb98fff65aef1dd61b4af", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "fcdd9d9556d4702f2c583d550363af9370c54ba2d0a7c8fd2701f20f533c6f23", -"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "cf3034cbb2e6326ac7ae284b3b06557fe639d20434cf9486fd576aad45634cd0", -"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "944d7d4e300aafb069d51210a467b603716eaa949a7d3b19b07298446a7ff85a", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a92e6864d1d53e55b7bb2d6dfbbb44fcac75888bb4452fdea486f23925c55668", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "869dbb5c7525a9adfb1c3dfb41b0a6e8a74fb30cb0f41ca0f961b4a99830a8e5", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "9a54414d7451988df54cf0ec95c8d1dc36b56477913188e87adc8ad3e364211d", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "34d545937abf5ed8b6fbae6aca5f77fa1717044a29a8d8600f3cb8a01c10519b", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "f1142e1128fa55eb1089e31841823dd048bac59d9ff6dcb1c7a6996e2042b43a", -"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "2424846384bb28e3454f8517463494c1b08a705a4d1881fe59b43e62012f7bfb", -"T3T1_en_bitcoin-test_signtx.py::test_two_two": "7978063ee5eaf1034a5fda0b553847e4e10a049a256eedb2f73608c154d1b951", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "bb3926e5bbe411347e2a34d87a128769c205a34a819eb28bd96a59d3770fb9f1", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "34437ebada26e8c6b8f922e8a6c0f46b1069fe7c667e792a460c62a9f3ce3faf", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9c390ebee85db1d060d96860523ed2e97c5e552ed95a6089c20d8bf90999913c", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1695785a392c0dd27aa3afffc4f28e79a04f24a81e4ac1191d1b8c8c70adb3cf", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "bb3926e5bbe411347e2a34d87a128769c205a34a819eb28bd96a59d3770fb9f1", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "3223679c003e04345dfc4ae0697fdc102dced51785d059aaaf1f6199ca228dc4", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "0aede403a9e495e7aa626e9dfb3dcb2ca61c73d7b98062f1348eb49e3700d202", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "f92cf61a9dc95f65aad60a3a37cc2ad8a8e6b5f7ea8ac22167987569eba56778", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5c689cdd5f64156c4750f5d35850c0f9558c9b91088b04c2a26b4918592e032e", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "3223679c003e04345dfc4ae0697fdc102dced51785d059aaaf1f6199ca228dc4", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "4993cfa31c4ad58515260f9e7a7e06144e9f84452b1336a7a5d86ee76c73703f", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "fe7039ac26a4029f5d5cac074288648884be369c72e11cb2ed8f8c7fbcc2f08b", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "0135a2ce6fb53d1844e5180cae97f4987715a1dd82b5330b5960f07295cc8ce6", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "323e2c04fc642c048e1a8e650b854fd0e03f975a6c426ec690ac37265b6458cc", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "f4c43d215c6412ce080460312bd6fc4ced515fa631d5aaa84877fd85d4f6693b", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "6102f3a27a6bf58befc09701fd20128e8e06dcb4b3cc84521800ae3a820dab08", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "e2d6ad84244cf57ef8508b2e5cb2075df1320504d9e36a5af4e3b765eaa2a0a2", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "0978d2b8196416aa7237b764a807d8a3d08175662309c4be0c8fdca96e8ded01", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c913aa6442f2edcbb569f539f53c0ea528f5e69209c3e0fced2c25402a4d75cb", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "925d4f873c05ed311c66de3c717fb4ec5045752751eec9032425d2880897b9e8", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "b8e2c8a16ef01408b7e7fa033f5a4a04338b4c596512a026d28a2c73f89f538b", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "76f2a0dfc62de9aac2e74d1b14fdf1a83ea06efd7c03e93718aa5b43662eafec", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "8b175b41520ea4a30e6576f38978ef536dbe88e35bbe8a9a45f0e0ab564101ea", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "36db99bc3b1fc496ea9065383fc51b277eeb3d68eb5a0baa38953a0b823537c4", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "8b175b41520ea4a30e6576f38978ef536dbe88e35bbe8a9a45f0e0ab564101ea", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "36db99bc3b1fc496ea9065383fc51b277eeb3d68eb5a0baa38953a0b823537c4", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7e14d8735b58a6553149f10977ff82d0b6038ae2c4919ef5a9ed808b4f6a871d", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "28099ed9a2fab45b9ee20b9de26e7d59b539e86aa99bc6bace02c18c8c5ab415", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "a3fafc9a902d446984a19606091b936ecab002e611f255eb1d17e3241e665253", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "000fa647879d5a32ac5ccd97a08dc3cb8ac227cf0529050e56ca340cfa003ace", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "11ff7103b1efe2d4cf3f3fd3bdc199c847188591a10fca163c83f838025045d9", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "f9b1b018331ce1a25eaffb21af253462210df2ca4f954015b4944c8b6135726f", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "f3eaf7e2554a31b88f6b3db51077d39a4b9497dba375757484e56427d9beea4d", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6812b214cabef431f29d4886d950a291716405e647b31b36ae86b474256b15ee", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "c5ef2e3dc5516571a5c179c84e5c66b1e4abe039b896141165cb322a235e9ea9", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "c5ef2e3dc5516571a5c179c84e5c66b1e4abe039b896141165cb322a235e9ea9", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "c5ef2e3dc5516571a5c179c84e5c66b1e4abe039b896141165cb322a235e9ea9", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c5ef2e3dc5516571a5c179c84e5c66b1e4abe039b896141165cb322a235e9ea9", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b22999d2579cc8186553d15bbab088e4244449b88b36ce4c624ad6209d7af11b", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "0c02262bb89757a56a8c06bbc7628772db8b39b83e42da1b5ae519425393d399", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "c150ccac1d2a62a34a38cd7be6a600a3cf609a29c2adcddcb58123f9e9252d72", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "91d37d6fdaaff61f53d01295355923c2c409e0a96633fee770be5fe6f773fecc", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "91d37d6fdaaff61f53d01295355923c2c409e0a96633fee770be5fe6f773fecc", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "7479ab933a382b5e2fe2db6001fd88cb92ca62de370f34675001ed507f782e13", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "520128fbfb11501413df234feb9a5cb8866f15a66c1fbb1d16be43e4a9907fbd", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "610e44fefa235cbbb2972c805cecfead8fb3cf8bef2827425bbead673f2d07ef", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7479ab933a382b5e2fe2db6001fd88cb92ca62de370f34675001ed507f782e13", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "cc0263c88494e22af81bc648d97f399fc4083f2cd6215f12793e6069d9fbc1e7", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "d4f3e1a820aaf076037363ce20b7b8aa26119896f303655c607d591f88dac52e", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "d4f3e1a820aaf076037363ce20b7b8aa26119896f303655c607d591f88dac52e", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "d4f3e1a820aaf076037363ce20b7b8aa26119896f303655c607d591f88dac52e", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "e08895606445b66ec41cf3dd18a8c995ca972337b42ffee367e6d29bbdae8c9a", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "d4f3e1a820aaf076037363ce20b7b8aa26119896f303655c607d591f88dac52e", -"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "900285200923bc7ebdc8be8e273705dd9657bb5e1a52ccb4a579cbe4c1a5a6cf", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "4952595a5734b8eec931957004f5ce1ce9a4d404270fbd1c41f3278830df04e9", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "dccb77e26b919e2e748d01ae50e32cc3bdb5b5c110198adf90712ad8bded2b28", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "cf272aef156c5009036e51b0684753820ae96507d2386e02c8afb2f40ec9f000", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "6aa7ca2d4c1bdeec7d012a384d2f70538a8305dee93b8d7c5000e58103debfab", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "cfe67132895840a53bf62a6a7792f1563c44b1f614377b7d41c3859816890bf6", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "168d3aeac75321c9a8c932e1d0d9188aeddb846cb390b595216f9dc678b0a93f", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "ded3686287141d4158fcd6e88b58948700d45ee9cddcb59dba2fd07f02b81590", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "f1e932f53ca46d8202f0d4bd6e95887f796ca314a6e02b58fbe0aec3f9a7dd94", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "a18fa7d7b907a04b635580e6949b3eaeddd1c301506c6df496838773ad1b07c3", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "0d8ea1567eb3552ef0b695397b653b79fbf404d00299eb078fdfc4050897b077", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "aa7125b940adc096193a1bab8a9178a9f1c5e31b8269025f98a792c779dbb953", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "ddf847cdf231b4b14350527a48aacc8b60b214dc705d56a585a79572523aae8f", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "10a9a5df6475eea1c28dd331cb8f59603557eeda12f5c1a67f21f84a47955d98", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "3223679c003e04345dfc4ae0697fdc102dced51785d059aaaf1f6199ca228dc4", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "a54821f9ee53eb18de7356b2ab63afec5ba5da0a7456fa85db03b9c5975e48f3", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "7b06ae83ff2d7437c5b8b3b6fde61f5e7d0c235f5c0671069b48d2a05c5e230d", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "47fd231ab3beb66099039cfad1c8a524814484e74624e6c3d7162932fdc11130", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "6af06581d00f9ed76d64ab1d55836fea8693c8904b2fd1358b88b8089d4fb0f7", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "09ff58cf1759f0f37fe0e210851fbabd4335a49028eb29274361c631886c21d4", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "795798685b0b5b5b15bca15f345af226341c8d71c38b760bb163af3a71eaa16b", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "0c752205de83da145329f7b6e9a02f94cf11b4a8e1a7058fbead1977365afbd2", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0797afd5166cbb6dc611d076dd4c187aa006b3092047ca16b604bcf99f83bbc7", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "410d0254fb1db69660962d05d51e44976c3e4273e0ec75cc851a2e677d9fb051", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "65596a129c43050b60fc5f3c8ddbc0bddee1f01f17c90faf7942260c33d013fe", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "90b68e7076128d2e35a8638ee8a62cbcd2b29093f2856919eabcc1a6c5da5680", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "dfccef3f97cf8866be7c3250b9f4340cbea8349886e6c130909c5a2831420c79", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "81c9a008dfacca95e88ff6bab54baa0a9f3a1e1dcbdfb6b05158774b6216c925", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "b69bffc9e30f9780250c01abb7e5078c6cc2a39f789d1762c5315ec0aea4eefe", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "49f46ab5589dc30269ac4bf0b45269710f25f8d69fc76c6e09a7e1acbbf7d64b", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "4d67738f9912471a7fea7fa8e7a4b44163efc884addd3642e3db1a381ae78c5b", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "1b948775b635975d65cf3c328d72e4324aef8e174e3b45232c604da7f44320a2", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "6b8db2da05283f9b3c00e6182fadd83cb652658389270495d3d94458a7720859", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "ab65fc252df466b73c321bb8dab34af6f228435e4ab4f35c0de74955f29522dd", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "b4de5e99474f30579de998f0c71ea14d50899194376b7174c4ab38f9668ab751", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "a0b28e4bc80eddca77a02480e061d2c3462cb27df9fc52fc370afa0744e97a60", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "e9794281df16696853bd48f4f168d3ddc34a4bcc1ecac3d79149ec4cf70676d1", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "33534f457d8aad1ffb068bb9a751cb103f5f1033beca211403a8cc36041337dc", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f6867649b5230fdbee87d2a8b6e3c073d1a1ddab7f0125b71bb699a930726852", -"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "c784707e36249b24855017856e1855388401fe22d2ecac7cee389e83afb28130", -"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "166512f389ff5b5a13e4b2f68b607810a0f9e1046e1189fa4e14cf80490b0647", -"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "059725dc906ebb0356758625a2016e61303f3a0a1a7161418287d34921360a02", -"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "12453cbbf39eb9d79b2cac51deeeee7b0b28fb974ea6b2e9e88e911b3fc43ffa", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "d0515fc63a389e7f5ab6d8db217270280ffe3465a838bc3fe63755242bb06638", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0b47f5fa2df881b43d7d1f5ede242f6dc6924ca310c40db2b2a6a7a53caa9a29", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "b07434387da6171206bcdf08e1aeb67c28b0c4d16703c2dddb3e987f8986c132", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "71bb7d6283ba06a5b9e6f7c5334376e9f2ac08a71942cadbe4f90eaebb59d943", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "5ccc12bb50d4ffc0dd750d2ec867034e1fbf3e78080e77451d2d19905348ec08", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "91488f9ad5887c08ab541a545743785a2b5900506f6169158fda5dcf0c88c324", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "5136a60a83bb151fb64848fa6a023e7b1bf1d011879cdd18e6837816452f055d", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "de9c65353dd92c8a910282bf1249b57861483a24745ccef2fe49aa2ee64e4f93", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "770fb37e83b3a2bd9c2f6fb1158d16f839af0f24db1179c7a26c73abb2195ea6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "603a59f90d05dcd6b6ed8b6f23ee0e917a13cf479fc109b3a3b1324508e9ca9e", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "42b178eb2650380e45f52d57e4c29c7b17e794fd50d74ad0ddb643c38ca24b7a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a946b51f20072b25df09ec384246ee892a983b029ab36f4a87375bbfa1ac7c14", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "794aa8c258749e34431b6f5e39f9af12e4c6a3ddca9fb28406a5f4a81c27aa97", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "0f57e9000b0c512dadc90a481e23d8b235cd6d587c9b6f95e85255c17397325b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "2bc845b5dbf69183e883690689fe14592dd0cf26e7600c5c8447113b0442f7b5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "f6395d32a21f2654810edbf852874eddf4fbdc6a9f0920ca6eb1996064629298", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "efeb32caaed83e333767c854c15db2d3418543837da09bbfaad8f69090f909be", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "3f80e62b66cdb4664881fccacd366c3137663b05dc389da138ee30a18f0a4699", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "329a415aa1c6992daac8a4d5ae36d2557bb17163f27b21204d1e4296e3a2710c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "1ef1d82e0799b4bc5a3c373a57969dde7d6164e07ea91b5d14141382e422b6d0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "f26e54ae2eb9e395ac03580b884e6702cb83f64db67bf3040e92797cb2656fea", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "875aff40c3be2422e052a03c2905c9468771637c4aa3b92d18bd253c31c058ff", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "690782cad7ac193db9b684de1ec5120e5816ed19e0459052af6cfe1951ed7137", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "bb1f3144010993ed8885b6425530b8a784514b3d0e513c1db6d667bd0991c584", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "25ea5b243af474a4766325721a907c533fe504c0cd6d5f9704498fe135064bab", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "01569bcdbec3f373bad3699d671a93cd6e35a0c165a6f52ce9e797768e7f25e0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "a1f6bb656602661404e9a06dbcb38f5d81f34573fee9d94e7c8db423495c28c8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "2a8310d9d7f42db3732f376fae6258482d9a8d1b1532242973dbe028b0e43b8c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "366600e881460575bf69fe650f9eb22170a3ce48c0d60ea9a575b8e0987992d3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "5f2cddbe3a83872b372cc7c9f9f610d7af685d24f8640eafd6898a2623e3f5c2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "eec6e4d4a22d00d8752b5f966794a905f79926ce29750fd8e852da51197985d3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "e592555af4ac6f1aad641c57ae2be3daabea26cfe7d25cd3a160a14107d5a71c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "1efb905f86feb67c2d0dfc6bbb97d043de7b888980f7fb413c67192279de5801", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "1a6addbba4d47a2d8718d09859e1d8e5d1e5ea356f4c432e3f3dd25ef9ad9de9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "db69c2a7db57478e156f4ee7b18c29691c53d8789cc30b19645a4ae0a5fa0f83", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4756cfe165eddddfb92331072878184eb4c3dbca54633e9ba83b5fcc8ebf9ef2", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "80dd2ba64dc3308e1ec9e775cdad67d1bd0f4f72c189d47476f0e2c1021b63ae", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "8b41782f5a231ccedaa82fc860803060526205aa60a4172f6ae785cab8e36408", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "c26175129860a4f3cc4e4af581c4435d574ccd3325e78ea46ad8846ac460af15", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a450afa3dcdcac54500023adfd9ba7a583d549062768fb8092877d8642302622", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "66f36f3d3d56decada9f4af870f72a6ff7bdfb73d6cc7ea3027d1678553c9a8b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "d9fd230db2f7694cbbf18e0e833adf93189defda5df884f86b85c40559e2f5d0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "f022b359a74e4369198e0c439b5b3edcb4c3fed7810f89e05bb23c1cc3d3b4ae", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "17fc7bbb81318d073db6dcaf10a3f75f347d5864ee9dc6be904ff533726e3540", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "ea8e473cab029f2a2c3ec1086fddd1bb722f40c858ec6067e295fd3eb99b3107", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "3513a44e5fe3acd5d9411001cd87822d29c211f473b266a81beb5d197baba7dc", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "aef3fc1de2b982a681d934303b48b5130b09d173eb5290f1f24db8036ee31d03", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "832011ea1de191dbff12a2cd2af7c7684555c5876711e23c056118c6bdd4d510", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "50ca054036f7ae5ed27cbc476a437671d351538fb1969f2b9425bf6297c209a9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "4850dc66490e3717375a313722fb12439bd10af6717f4216094099bf35de19b6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "bf581611bb9a3504cb8e4f186451004a79fa5db4985218ccd0e7958199ea3b02", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "ea8d83dae02477a7adf1be75284fba0cf11554c87cdfa55c49eba3cf9e24f3da", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "15196cec0d2adfaee92b30ac3528af317114f96a77ca66c9711dd7a815148c24", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "ad5d17b9e80c61486899c0aadd50b3c0fb6c10a85ecb9ad8267817e3e3d2bddf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "113e558e64bc1ac39ee9ef9084123e8715f16590499374cb3651c804f4fa4adf", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "6bea96bbc85de591f4de84751b44474cca078520dfb2ae6b61d333f108b22bc7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "e3ad13db5c5ae56b72e183253c4b1f794bfb389ca0a753e0eae303168d78a35a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "636520319a566ef34e9461c070e0b17dcf6c992e3916f111f4c4f83055b46def", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "c4d9568659df436ed61e3794c3d1ec6c7d4837907b5576dfc37ab62ec7302cac", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "5eda28e506216e6b71890c4742debf605746a056f78fea4f917eda00467e25c4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "90ee1a05e5c3d9285c9f848fdeb44d8e8da8e0eb07249cf3c50a7843ae5b0554", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e3b62113734ab5b40720ff650868d9e7c73ccc3921de13c6223063697bc1bb63", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "d4e8f6393f9ddce557a32c46fb6ed11bbd5c9a3796945733fcb2c653809621c0", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "370452068d54260301d688e437b9d9d0876b20fb70d1e45170526f73400dbe37", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ca989b00bea2c8369f2ec97c74d8ea12fa834327725fb19fd8f34601ea062d9b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "064801918c304c207e6b8bca4dfd2f25800ab9d15d54dee0cfa7b4e8c69e4f04", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "30423f38e5b368230e2ad7872157a82cc6427b1972b82acc6d3bd4d36378a533", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "8ba6638bd77d59036e2112b3d9696d8c44a9698c89f2e2142793cd700708782c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "33d29f988e6cb280130407ce84525bf11c354eccdb4968d410101c3c26087036", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "f9bb5c8aa436611d69334d23c5b1ffea85066819d594f334a2c29d88f1045e8a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "c87d2d25b20f1497128155219d1f594252ccbfd1a2a717be62613c244182f834", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "8e904d1a95c57896dcb309c506017a27dae6b07d9e9899a1087867646d136020", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ad901976745ee5585e91b852b9559c6abec964c019887313d89d9594155fda82", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "bc535215b4b18b7624c95ca331ec7386cb56273779ec01dad2b104f9a7a03227", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "1910fd97c0eedaab184a3b94b783b429687953bf5f5284abefb8cddc164e65ac", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "5036421cfad09bd5c5561b7397801d600897487796c248e515c447ce6a84a521", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4514e54791b68e6e10243a9ac4d1ef78043405d4486d22566cd32ad87595577c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "48594bde585a3fa8272f328957a70269b71215c3f7110529638b5421ce260cc6", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "79cc12af43f7b308494a03713ea1869a79b43076b136927a6c3a1193aa72ac2c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "d9101163a8ef002c8de1a177adfc0b2ffceb75f2587f9ec33ebb14462ec8cf60", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1d6f6b49db3144f6b88b0039e2ba1f6c6ac059a0d4cd0f320d5fa83951c3d19b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7f19cb47359560b64d482b26f67c97519ed6ad7fc163c9847855ce1511b5211a", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "05f2ecfa87261bbe407d99e9cd3e5b329f94447da799e1e40f099205d8a84228", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7ceca6adfd2bdfa5939b9a268935e9158885d6a89420cd9c3dd7ad17f83bbf6f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "e8a43d68a9b8ec2f62badac6e759a0d0818a1d43990d08068a021c1115b631ab", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "7fcac68d1e4a9f849afc0f6151a41f3ae8268357319abd3904602cd41762028b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "f8a23118ae7d466e4545a2f3a239edda9a66225f5d1e05371d9f650a3f444b6b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "e2a0f1f2a0cb6fed3310854bd19c11f397a503ba995fbf40a7e278a8358056db", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b9e24fd77b10e99dd2727e62513c43e391254833e6c24e4b3c57119ccb5d18f4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c24040a73fdc0c340b8cef63a016374a447581eafcfe1e64e3cb208e8a918a38", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "67ce2420ab1aa62be03ddabfe48ed2e47a88e1d7d8431ddd751a1356a0e7dd8b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "5700c499a5ffd3c288de91be4d7ede230d8ff6879b6aeeb077cd84645074c27f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "9e3e55947d8d52ddf1e88d6494d12e381c9b4394e004964eed6e6ad71eb9df4f", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "be28573fbe9e3fcab352218f2610c99175c6f3433ec15246b0bb1cae916a9150", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "36e4be65355fc20638f0b9ad52360862f26d209033f5c69f8aee8507c18ed453", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "bc37ab6b38012f10b58493411a95fc9720b00536c738799876c03467765d2c65", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "829e113b49804f67e8d6dff8432d931164fe27073d8c81648cd17762953820e4", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "193ed0f9e2438af75af402d5d8ee1317d33f6dceda7252fac46381ddab0c3a65", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "01fac89c60540f88b7e8dee9d4752789c7c78b5aac7e9da402d516742e5cf603", -"T3T1_en_cardano-test_derivations.py::test_bad_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "30b95f81aa188adc63b16ac2f777fb6285959b4eec19437c93217e56e302651f", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e930010ded48d06ecc55afe5113b7ab6cedf70477fb41f644814c0e336e63632", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "ac862ed50650c9316ac06e749420b96f8a7974f83002f1e9d521bb98114a6419", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "fb25c94430eb9fec34186f3c8586cd04ac3e0dda6e20cc00038a60f9e33a138e", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "accae44931d71e29fe4d19d3b6f4376af3f14b6918ee1a0547a8f06302298e6d", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e1932485683f9feb12093467f65f521e4da471e3b493f261c91a98b705200196", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "08aba0b9c17640eba7da4b7179ed40122fc77c3c4c39679e098062da7007ba2a", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "d1e238ded4c6285b7b1bebf0bb122f59fb9c2310218ae13e88872e769fc02ea1", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "a7b19aff52b018363d06e95d8f6c266211ae599e72ea0075bf4d3c114b23c453", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "ef3846e85b2fcf4adfa2aaba84acae808a452e9b85f5e1b26143de105f77100a", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "73f0079f1d24ff8ee0016a5d00e5ec8e65039154360c4d969af9bad614f60e16", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "543bff43599debcfaa927c4ccca0957a3556c2896be0f6ce148a07ad08b78aef", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "0db3876d2c2e5b94ba95b01734ff89c81be9f820021324aa11d9e8eb1bb4e146", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "3f93ff94445b6a54c2d5c4cd60c96e0e16cf038ba525f94322f990b8e6dfd773", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "3b1545b7829f5e8f344892a9d02dc979bc1358e8baff4d9b685033d47d49d262", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3e41563b98d255b7f1a7512bc8a8045f760c258e569c8777a8eba6ebf6e96685", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "aa341e78eed348b4498c6b536fb9bb5a1ed3f920364247c3948689fb9b6751e3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "7f776be28f6601d252f54b43dd5195bb664d3d79a592dfed1bd3ece22362f87b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ca6ee2d877e07a9ae9ff8388524cfa1a2604ff86fdd0443a458469a8ca1f8b94", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9e789bce90296fd3fdced9d0b4ce3ef50c5e67daed5a5ebfe87ba834e6dcd837", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "4139d585b62cac368d1305a131381b149efb56fc03859839d5f1312ac2939915", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "63fd6553621d788de2d297819afa1c1e82ff939b049c64719fa393b33082c6bf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "a0a7f4bdf1a39472870baa7b86cf3a662ae33335b304bcc544cd164aa3c82dc4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "37ccbad3214ce5d87e7e4cccb53a290d5a4346230e5035ec785d3ae6441ed5b7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "bb5cca0fb7d19845e59b7ea460df1507736fb88bb216e1e2c305a8f265af6f33", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "bb5cca0fb7d19845e59b7ea460df1507736fb88bb216e1e2c305a8f265af6f33", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "bdc86071c4281d233ef662917ee47a5d0134225362d70f1a4ae8437d2abb8def", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "7432aa4a13c7a578f436a0909c2dfd5d25475d0c28182fbbd5b431baa0cff39f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "8d49c212da8f212767587651a9c2de4fdb9dffffd5cbf114c2fdf384890421ec", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c61ea57d6297b75700826e644e9c6ad55ff2443391be251cc8d70935835a4ae0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "3bdf9b483e8e186abbec0e0be65e6cb2d9cd740166c0b72a6292b8b08d9cfbd9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "26a92e0c09ffaa401ded493b4357782642615a3698989578d236b94fecc2612d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "8a7c2e96ce797552f91cf27897351563726f58fb7fa246bb08977d3d0235c445", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "d975875044b4b022a72e632fad33e39d2bd5c16d7a6a02ab504c66e132a9d365", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "7618e9baaffb8cdc95aa8c45ace30af6e8ec9b58b6125413b804d6268e036c06", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "3bdf9b483e8e186abbec0e0be65e6cb2d9cd740166c0b72a6292b8b08d9cfbd9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "26a92e0c09ffaa401ded493b4357782642615a3698989578d236b94fecc2612d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "bb70c4b40022b46cd2cfbf83de6d6b29c1b6b0f6a9f5e34f410c710423f73da1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "c35a8aa94f05e823db4b982c8bc061229eb2be07ae4c36d6fdaa51d4de1a341f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "ba0b8079673be7710e1d9d9e00fcd4af4e0da2844290f6dd533c7fcee37f3e89", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b3651540a8aa399898f221776dbeff806ce94852798b1c675f7d57892d8047fc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "667f16e86e2d18966f3845068d78ebce06f6de59ae1197fbe24d946033263c28", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "cdcaa9d2376df3f6ab2c1bd93153a2199663aca9252c69c643e8a45ec6b6cce4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "09c5f6bb195ca94293a670ea61514fbd2937ecd8b9a5d7409f3a69f93b445a66", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b6b82005c57d75c6b7b3c965ef8990a60269152f5b0d94ef5f5b2170e1363a22", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "2e748c816f81f620b28481f43f2ea82885af2ee0be6041109650dc3277fec24e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d0286823ed3f46d68b8a09f16edfe13210c7ced777d1197197aee77021b28e7d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "6d109da70dc76570c868f75425c708314b535045cec46640e19c4edd0db9accc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "03663c3f277337a25252f997ad17f820d77564127b9797259efede8a3582fb49", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2d38d45a2c46b26d06a3b255572deff2cb7accd32e63ae2acaf066e601c80baf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "d5829a1f93edcae6371e44970a9676284e12472db2c8ff9cc803da000270240a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "171c7d6062d51dfe149bd6ddbbc7918ffb733ba0625d5146b15369cb8b3a494c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "e0440706bcd2245c17ff7507cd9ac227cff67ea0adbec343ab6dbedf612ecf98", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "a45a0c8a0343d8c8949541e2d8605b0e23a1248dc79f90b97ddd0a2f512366bd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "9075fd57d684e1a83bdb944249bc47f5fb95110573c1345cc8ab3afd3328c14d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "81f6817b1b0ffc1b4ec49c66cb9d8bee9f00e04b2f0b636aedded469e033a76e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "107374125aad62e86cf81a761b9c2189c3922df85f4ff3d8c98e90359ab4b06b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "3937e1031ecb710a840af12c9d695f4ea5a23c208bfdc0d0b5c96ff6066d7751", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "dac8390aa65b38d191356ce9c7f7c40976bddfb9e59c3f02defbfe2ace473499", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "d9249234118add3c9a1f09a8ed5be658bfd0d6bf13064372ab6349b515ff1aa1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "0a1874db273aa00a7536417815cee3e387693610ec697a81d7fee0bb08bc7723", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "ffd7227038fa6a057f358a14e59ab7da3fd466888ce59e6e9342a9c2b5f886d0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "94ed1f1085ed520edc4d2b08708cd40bc86f44a02564fc5de0526bf89acd5750", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "7fdb92d827ca5bccf6fcb4f6bef09fd9cc41b993da678291f78f062dd983f256", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "5fab4b771d023b39ad6f902dd48555487e6dab914bb0a3e1576d00969f332f47", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ad2fdbaa205acc06543620ef4758556398586160c1b7afeff2b12c33af9fb420", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "4e1c3877153f92604d98c6a8d06ac473c1c2299a75df2f906e3fdbe634019904", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "ca417c2421e80ea119344a0e612a058523d35a5097edc90999d7db5782498405", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "3ed2c7f9454eb89edba1219f8c5e1d6a4fcffa35a9f8f9bcc3beeb6fb0261e81", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "a3a8f3774c911239a8db8bcbf56880ebdc7704291d45fa6489ee9d16b38759a8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "61ef97b45bde29acf1ef4c9e2504595faee7f50cd4c245e9d98fdb729002ec59", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "e821038402bba9194563e1f2b8587ba697b4c3bad49c8801f5de43e4aec5af08", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a90adaaaa4b916764cbf3c65e50c4065f7f8ad7bbcf5a89c16d7556b648a0fa2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "deae734e3a74420abe1f1fac25fd4fdc6cc7333d18cb7bfd391b15d283e0fc6a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "8bae58d5b32da1308b7c12010e76176ea90aac134e01331514082b3fe289891c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "08edadb37bd35bb076df1d2cf8bc48b9bc62c5f0fd231d29271799183fe5ff87", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6bf94a63a327f8199d45f89cecc9eb1c02bbf3cb9b843303fa41ea364dca45a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "c4e7c553c0d421dd75a257a21c6b2710fbb84dad2464e5fb8b0926fb5747c022", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "65105fdd83ce9d84e12aee91d74d2f78e83ab385aff144f52c7663e7c65bc5e5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "2979d5b2208fd7366a1ad8ba5e5c40a80cdde9b885be0293299205c3bea1c894", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "27866d76a29e538faa94c891bf9d0f3b3e8b5a0c3960e73cc3709893ee990f5e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "b00a5788d94522c3f98ed33084d2e9a2de22e52ec84a5b1dbc17a203f75b36c4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "bd0dfc1670bd6c23fc63fd2fcce5c76df61dee0031cd7e8ac106ee7d9bc950af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "61c4ce05d44c38fa5a51212af486ac1fe2a81ca65b2763d969d57a9836f6ee8c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "c3f81428c2b58374eb999653550cd0c0f25ea2c2e773a51a9455ac7ba43c9511", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "cfddda2305238f8c97b2ad5b90bdde90f2419ddd6a9c6fd25e1a18473760c513", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "a8576ddef50603e9e29c3936670972a31f4feb364697036100e2fb45133d8a89", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4f675686cbeb426a84c7e43c5c7fd02e70e6ffa018dc5c24fd42602214f3fefd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "6ee626029f5c57e5ae6172ef2de84ce6c2c19161eec747db0163690090be922d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "6ee626029f5c57e5ae6172ef2de84ce6c2c19161eec747db0163690090be922d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "7903c0eb3783a287c8210c987312cd786567c6578ef3b5391680584a8a0c4f34", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "f715edbcf6ab16ef24fbe684128da64792ffe05bfc04174636c3b669e473a345", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "f715edbcf6ab16ef24fbe684128da64792ffe05bfc04174636c3b669e473a345", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "8589f70119f99ec8950560e1eb3a1689de0a389ee66026354dd6ccb2f6ad74a2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "ff7bced4b08dde88d17554e1e7d3339ad6f24a434070e673c6d76f174ace7fcd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "0862e9c284ee9110a952bbe267b04c38935c7d24f1d8ddf8cb3194e347a18783", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f40f129a68889a10858d4a0396f25f0f3cc917339bbb342901813f352e45073a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "089fa346844ee9521d57a48fd50cea3b2174fc0fceade51d747bb8294b87653d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d57ba4a97f60d74288ac4cac5419cd1466ada52e7e12c88ced34a225e817996b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "ade18511c375b55311b3d38dc16336a739f9bf8fa10f1fa2bb584258d9565de0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "10a35a4586b786de5233bd68110cecf349c21067bca5a09f31966b71b6fca139", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "547816c1b2fef88fdae83c6f6156c303ea451b609ca07d271f47d46ce711e891", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "0db0017f4a2beada55da61c9ca5a6877e04f857d5ad36ab70dafabdf39d1649a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "3f93ff94445b6a54c2d5c4cd60c96e0e16cf038ba525f94322f990b8e6dfd773", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "9e789bce90296fd3fdced9d0b4ce3ef50c5e67daed5a5ebfe87ba834e6dcd837", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "134e1fc2c63cb4ab96a806d8508a60f9094da1bada8095fa79dd2575052177bf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "a23964f84188566ec8e4e9c3785ecffefb8df7662782c4080d459fd5c0db708e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "a23964f84188566ec8e4e9c3785ecffefb8df7662782c4080d459fd5c0db708e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "3518f3dd9a7df0e7d0dba85571bd958b4fa60ae84ace0bbea15933d5c9a2d939", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2431ab5fa57266ba410f30fd17bfe4a291e169aa16abbdac2f3592da68386493", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "fd5cc928e2d68e0ec4959f1ac5818e3cc42740739bcb8aac5d9b5056f0138e9b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "bf8a58b2426fc0388d69369bf1e82f6986668cb57690103a04cc1745bec91a0b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "957bb6a6d941e9bd2179db38f591a506e6c95b58efeecb49ac71d139aa4a24f8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4f426bb57acae8fca426ac4abd4a98b075337e325089e4baee0be02698e157cd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2e79ff13aea7316b924c577660ae83f040bdaa4ce5072f835c094ed684204e67", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "27b8ff4d5b5411cd68a7ce97ffc473277051ba3af45e044c709d6bba140e46ef", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "27b8ff4d5b5411cd68a7ce97ffc473277051ba3af45e044c709d6bba140e46ef", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "27b8ff4d5b5411cd68a7ce97ffc473277051ba3af45e044c709d6bba140e46ef", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "27b8ff4d5b5411cd68a7ce97ffc473277051ba3af45e044c709d6bba140e46ef", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "957bb6a6d941e9bd2179db38f591a506e6c95b58efeecb49ac71d139aa4a24f8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "3b62172f960f72d266a454f0333eb89ffef273fdbe65fa1922089b73a0bcaa60", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5eb4302c88d6d8b9aef2856a8d153a3e8f0f9d2d84056a577c2440dd1fe6c806", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "c65c04065b82751072e36de38fe4d8b4813f735d15b1fac47a3a16ef9deb4dcc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "412ee48f758f1c39dcfca5829369cbe9f7aa5fed4cf9144484bf88929f67c5a3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "de750011d07f495c66bdae8126820d47a1c4286fe41bfbebf4e0dafe98ebade4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "5fa40511b631528f6fa86e9b527c1c90d6cefe661f6a9c63f31539a53697cc88", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "d74c72f0fd838f74502b44296b50e0714cc71cb886b9061e5f91761078a7cdb0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "cb8d8dd075b0526f7f68b4fda960ff433a52ca2416003e96b3e12485e8c141af", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "d74616ba6413b788442c598d39ce82a59997a18dcf48e4d86f58044d70671785", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "476145692994f0013b00bd37f5658e79485f160e47538207be6f7b20b08faf35", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "2968a78ded67b1559c9cf6d6fa3a5d324b19eec7cf05324ce6d71099f5cd7986", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "a23964f84188566ec8e4e9c3785ecffefb8df7662782c4080d459fd5c0db708e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2350b383303005c566ee86af7aa6a48a70409b0596899a221ecf6cbc7098e571", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "be2cb7e54112ed8d14416d87742f82a0519311fd62f7d836673f96eb6ce83372", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "1a9987f9ac729c1f4e71a5b8315b95d2c0501ea08cc3060951b449ca16f3647a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "de3153abb79bf53eb4bfb099fc804adb934ab12c6aae7a1deb010833a58e0644", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "afcd83f7dca76f120f599c69067a227d3af8fbc053b1431678fca4da29c8fcef", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "8277670aa4dfd7d4ad229fc11c254732b70a264ad8b31f5eff06043448676aa7", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "547528cdd76391e81dee88af69a05671b0d2a94c6012fa4ec3bbfd3556eecd09", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "6211700a388ac15a77b290d2a7905015b511a0d4811a1a3099a930131e1abd19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "bdef2c05b26d40aedaabbb19eb634b9013dfe84f01669dfd990830e43a9cb7b6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "02b877f4ff5eeb67ff1599cb736d982443f07a785fdb213acf8bf0e38972564c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "e6d19fe7df7f7e035e12336588fec3e0228fce92f0ebb9651858c32c3d6276ca", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "aa6985b77d7dc8501574b11ca87872e2fa8038e7aa19a82b518a572ffae9970e", -"T3T1_en_ethereum-test_definitions.py::test_builtin": "80a85215e4ad6f33cbffc7d4487e5ac8b28104b9671113d3a55838e5a1fe4fab", -"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "3c60e394fec156fa6331dc99e09593cecd51d0898e006001ef83cf06535a473d", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "f3f5f94dd269cb88c63455ff9134ec93ac3809192d85a92a30001814fc65d249", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "1e525f075028cd76a275827373d123a18f3b6ae295db67050e0b4cba7875d9d6", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "c2a9d399c5e2300ca8bde3189cdbbe94431746af0d6775f0992d6931d1c804b3", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "8c4cd7dd886ab9935954fa64a9b751a31e1b63b6395fbe9e1fedb7482569b6c5", -"T3T1_en_ethereum-test_definitions.py::test_external_token": "b1039a9596d1db31a3d8b8872ec5dd91a084e234476f570c97d2f1b43ef94797", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "c0c8b5dd8cff886ffe9ebc75d19a09f804aa8f01c408d6e5967d31fbb0367016", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "32377587568461781b03eb52fb1962875f4290afa65053f82d3f87ddd7d102b3", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "15cbf1068078e89ef18415f3b702086fc6948b4f611f802d14e5cc365d345c5d", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c9bc4529f6f26c43ec2db22393c88e76403d20138b25cf49b180e597b33fffe6", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "0809cc3aa3d0b53515b1ca40cf02c7eecf2cc29ff2a893129a864df669f72c63", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "c0e490b26c9211772d4f8956dd3444002cb0d59eabe86af652030d8731213598", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "72dbeee683de45b5537cafc0c5c650903df0f46208453fcc690539594d2dfca5", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "20a76d1648f5f744374df59c3d6cd905a71897ffdc8a4f395999b153d9fe0cd0", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "3211698822b0e24d936da3cffbcdcb9aeb64de0385cdb88e3c847484295bf236", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3123b055aa438eb01dc5e563eb3102c02b9cd943c89e84e3f26eb8499af96538", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "bf9e9f7ae2e03a3a37fab39930bb1dbc212bdfce9c5069ad0bccaffd66580e38", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "adc7b473d28eb5ec15d4c198a571659b68d15b32b414c4f5e5c1b5f44d20660e", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "da3bcef666fae3f042525b5fa0d12d02b29c6cb75caf894a9edf75155fbd1e34", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "4e986a8e4a4e3e8aef5b128feccbf72ab94ba7b6582a78a902532b3d5aecda52", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6849b6d621a8a40b326f7eaefd4b08812aeaa50bce287edaa8732d4d806df8c5", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "86c90510563fa10f30d79dbfa82476861d88457afc277cec74d7ba17e4ff633f", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "2749581544edcec8e9e5af9d768e2e94e155adb66fa83ca241b11efaaf4a1de8", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "1d8c8ffc842a77ec8c8273c073533510bcf47b5f99044750d8c35d6fba4562de", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "b523becf35d9f2b4e987df248d3b767bc4b3fe5aa256ba82ca38c34f1adc3595", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "3a1813d7d4bd989a1c9e24c7a65ef00f2223ae5ddbed28e857d82cf7ad9f8dce", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "6cc2826479317327327ac6a7627eed612ab6e8b38367a9bac6a48c0603e3154b", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "e71f70c2526bc454e76285293bcefcc3f03a219f68ac6012edbd6ea77a0c699a", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e92a5a8a8b6ac548debfa940c76e17c8d5d61cecb0797082d43e1e20cf061881", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "3a1813d7d4bd989a1c9e24c7a65ef00f2223ae5ddbed28e857d82cf7ad9f8dce", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "3a1813d7d4bd989a1c9e24c7a65ef00f2223ae5ddbed28e857d82cf7ad9f8dce", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "3a1813d7d4bd989a1c9e24c7a65ef00f2223ae5ddbed28e857d82cf7ad9f8dce", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "bb082dbc9ab9cf75cf8085c2acaa4adcd0e830e0fbfa2a88c8892167dd1a2f90", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "7d4d6846e7d7520347663fa986bb78611e7aed70514b646f071cc4ca5651007d", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "1a8a8910f7424dba8ce99e4dcbf672541ebd79dca5fa408402ccba50c6556e0f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "d96a013151b392b0ae8e13f25c6ddf863d5c09790137546e3d52f4868d99a9dc", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "a8158832f05c2af410cc7940f719fce81160f63c5143de33ec03eb4a76dfb5ca", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "366b73b64259a0ddafb5e304bb82080e28c0d5a3868d8015425527db06f321aa", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "0012cba9793112004dbb58765c0bf264c9d1ffaa3f498049f8638a1c482349e8", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "5907243acdfd465cf6a00f1c4e9a5ae114309dcb070f3c59cf3d717e4a99cd5d", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e5466b6dd3a9b67b9edf3f34bcd6ad390cd45b630902d8fdf638aa655f365104", -"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "a0ccdd397db3ed4ad4e6ab6dc7af0a043e5c1d1bc2024b824026e85489a8436b", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "7e8ba6cb9db6f137aedc8a7fed5ad70dcbc534713bceb626807609fc50e3d387", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "d7d36b1cb34d52dc4466a7366b10f5cb8e1af8dd6cb95c907009fc4b1471c4f5", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "bcf5cee67c93d27e35a72dc2d3569d45f14694b5e032c803d5ad3c3d17b6d50f", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "43f9a2b11e51ce03e90bbe2f504474ef0f2afbed9e483142ac3a13d9f3cf3436", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "bef1dfdf2ffd1ed803a26af5531271cc22fcd7007a8b349741834bf4c752d00c", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "4687ddb02c33327675eeaa77e2aeb155be932b0352632d549c548a2991059d7c", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9d187184640e881c77e949bda16691281ebec0d50cf122556b8b24a252697b74", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "5c1b46694789d951062b3df7a19c41c9f505b5047a28ad8616c7e1c9209cdf34", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "7e8ba6cb9db6f137aedc8a7fed5ad70dcbc534713bceb626807609fc50e3d387", -"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "333b656b3b8a71a660513f3d688b1de14fbe75e27bacc7544e43f5df1570c093", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "b4668d3a56c9fe5ca89c174f2e209f106cfebca2fecf27c294b959e73eb31471", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "9fc513e651719e29e42184cef436f3d7146e54ed99ac897181f71b9ac8a83f9c", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "0531c89774c3998e2ed1b3fe530e01ca66e28ebff46ab2f4ca1d0dec602ce648", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9fc513e651719e29e42184cef436f3d7146e54ed99ac897181f71b9ac8a83f9c", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "472eadfec59b8339ad132e1319aa891a8115db22882f7e6c5a7484ffc9f69d1f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "472eadfec59b8339ad132e1319aa891a8115db22882f7e6c5a7484ffc9f69d1f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "2326597421e4e79ace8b4f6f947a295fd4c67c93015ccec01e78fdb2d541fad2", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "b67e279c013916299fa5358b6b78d1f74424f6c122d7b7aaddbcfedf122e9699", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "aed8138e6050bb40a2cee1af611d4d7fa1818b44caf7b8b4cd4ccd596b6dbf4f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "f1efd662b318b2e6bac7cb2b2f772bd100a89b2a562448a5215d66e05a0d3f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "6b6f0598ad195d550a11fc949b8d82b7182bb3cedd00c13b64d557d282d089dd", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "3532c74c7c483b3b77d6fe6fa15ad2c93a96e969010a50b877c92dda8322156b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "11656c4b1de57308835ed724a2ad64a5d186e42b8b0df6b6cd3b9a8cfdc8aac6", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9d84adc22ad52a95c4d614f1e0417ba1b29178989dc1081ab376f9b85b8364f0", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "dbfbb2f09c0179ebb22aa56e6c984be05cd501189854abedca9267d7fe18df33", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "639de7960786891661c47aa23435622954ea6f93ee4b90054da1fd04a556c26c", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a9838d3000de4843b43a07ec212a500b0059a934deefe4530a141ff176b7bbd8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "639de7960786891661c47aa23435622954ea6f93ee4b90054da1fd04a556c26c", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "e75c1145ac061b99a3377b96cba58300a09a5393efb7c352bcc408bcefb8bfa6", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "e75c1145ac061b99a3377b96cba58300a09a5393efb7c352bcc408bcefb8bfa6", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "e43e68f65e4a8e8bdc758b894809212b839a73aef915f249d2e2fd5a67c7de99", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "9fdd926969dbc05e8c4c11770eaf028641c74d01d684289202c68c72208d0fad", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "6f50a07b8571f79569c8b855be4a3eaa4f9bc44b868ece5ba7315e4586e8db5d", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9b421b79188f84f9ccf9b9dec319cd31b684814cf23eeb98380d4d79fbb7c488", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "6b6f0598ad195d550a11fc949b8d82b7182bb3cedd00c13b64d557d282d089dd", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1d61b04db603df4e178110b3e610b089438340ede699eef78d296b9bb687c79c", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b3305d1d9591df33379e792cb139ab97d5908942c70a01f60b906878392cea49", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "c1e93c991b0de375ad54ae6e4620faa561ebb334b7eeb8136379f9b47e35a0ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "3532c74c7c483b3b77d6fe6fa15ad2c93a96e969010a50b877c92dda8322156b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2326597421e4e79ace8b4f6f947a295fd4c67c93015ccec01e78fdb2d541fad2", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "5235f803ac4206eb08c00222cdd0996685002bc4b694184de30a2595e59b363f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "aed8138e6050bb40a2cee1af611d4d7fa1818b44caf7b8b4cd4ccd596b6dbf4f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "65faa6dabadd455b4737d5f59946880add6426e4abcc871297e6b206de11be11", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e0bfed2434472d4c150dcb545776c7b0c6e9f7cda1f1176583fefe6cb89fc04a", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "3532c74c7c483b3b77d6fe6fa15ad2c93a96e969010a50b877c92dda8322156b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "1d61b04db603df4e178110b3e610b089438340ede699eef78d296b9bb687c79c", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "e43e68f65e4a8e8bdc758b894809212b839a73aef915f249d2e2fd5a67c7de99", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "e6f575a7bee44218b7d41c5e824239257ff6e5d9e470067f57ae08b6bea555e0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "6f50a07b8571f79569c8b855be4a3eaa4f9bc44b868ece5ba7315e4586e8db5d", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e6302083a5a25552b8cdccf7de52d56c18168d814aaa63a006acbe80d1cf1b5f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "36bcf15972324062292b2132cac3a233306fed4d8670fe25eacee1e24ae43fba", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "1d61b04db603df4e178110b3e610b089438340ede699eef78d296b9bb687c79c", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "22c238aa521579a5a8a9cbc9c98b4584764d084080f1d7dd3cbbf735ca427623", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "22c238aa521579a5a8a9cbc9c98b4584764d084080f1d7dd3cbbf735ca427623", -"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "d9a6b8c8db58a4744454edf1ef85055accda762024386a7e15e288718d4cf956", -"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "97cba68ebb81912766aa10d4fdcbb2ef8da0ff3fcaf748b6097e169aef8e3490", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "8f093b2b8d2c884e44240faaf6fd841fc9985ecd51e45a161f4db2313d4f09d9", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "8f093b2b8d2c884e44240faaf6fd841fc9985ecd51e45a161f4db2313d4f09d9", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "0a0b4d4ce91e305d47a145b97a2489790a9954088ecaa5c4911fc3a5732b3057", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "0a0b4d4ce91e305d47a145b97a2489790a9954088ecaa5c4911fc3a5732b3057", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "14fe0f95696a6df42e8592fe98528d931fba208379012ace2ac76145fa3ee8c4", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "14fe0f95696a6df42e8592fe98528d931fba208379012ace2ac76145fa3ee8c4", -"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "0d36a5e12025e6d784a966f826854156804189fb4f44db6062f5144415296d04", -"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "0d36a5e12025e6d784a966f826854156804189fb4f44db6062f5144415296d04", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "1b47b8617388e69d6bf7d90ce398d11b9fb076adf174c1a006f43926a571b6e3", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "9e8489b68f8aa912fb2ab568467ef412347744d2547a215a6a198c973bab63d6", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "51e218265d9e2eda0072a13246dc844eefbd8ba603f1dbe2fe9a76c72e8aa78c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "eb498ceb9409006a7dca71157bd19b5ab6e09d79e78477cde3c7e25b130535ab", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "b2aa2a6da1b252589acbccab68eeca083afc349a430fc8aa03383c31c170637c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "1b8db9d042aa3d0b19416005589e681e2d56c6b91c5a09d2e5bed9c25bbb0fd3", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "5733054de9971931035a549b38921695e5533a77c6a7261fd858d44ef696406d", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "77311530017955fc7040aace1746800b6d9c55b735f8d23c4e61c9aafc74e87d", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "805d45e3a8cb7977d5e82b62e9d82e737ad812b2a6e11feb56f121a26a8d7155", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "370caefa68c25f5f82fcd7f112f6c5bcabc457661568e5e4812927bd0a5840c7", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "2fcb9a3c40617a2cf2e292f634b558e6a8a4eac6c3bbd9563588d738f8620106", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "e2d297f261322b889cde605634929b02f081d4bcad2f96f43726a6343895cfdd", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "01a9dda8ae1b215939f735c88fb71497e068b223e6a0145aad911688e87446a0", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "f68e89a8020ffc73ad0793b4efad30fa653818e652a37ab480bdb2c6b9d87c02", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "30b8bea1b5d79f6e66cfa1b91f9d2c712d4d7688f704dadcbe9d426ee82b0156", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "438391ea3a03688ac505418d5abba03e3f1a1add2af0ab716b028c92fb9ef1ff", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "68a962e4c9efdefab4ac2ec68f1e0aaea4d3e8b176e4fe67413100b1e66ac8c0", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "dcb963bbe3c510d275e210326b9a38c1201458f0545ea8895d2236caea149837", -"T3T1_en_misc-test_msg_signidentity.py::test_sign": "c3e2e8eeef468f2a93a04e2e3b91f52a9beba20ddd376de32a1b8f0d296ef263", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "9eda676e014969fc2e1c668b0dc2267418901ab3cf3f8cf852542ef7768624b2", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a7bdd5a377308e54614ec031e561403a8a26ffa8b2bf63a579e32770bd962c26", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "43ed2247fc20c6b97e2fa6f830048b3ade80a5c71bb570ce915e7f52e940c304", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "17efac836aa516bf859d9092f05e66a214062e798f1a3a6f6b95f45247562261", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "b7c5c7de5e76878a93a3f89123e706e0040bacec25ed5ffaaa300257737d513c", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "25da6e57e8e3d26daab5e5f1b978a89083b7e8fca4a6378c1daaa53b207e0364", -"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "c9a1b4bb0aba74b4e474ef4d576841c69a1fbefdb036c9c702badfa4ef6a2b41", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "024a5e432903933f459b7f520fbb1d23c403cd0dc5fceaaf21adff060c087124", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "2fb6a46883fdcf7888401d54d9860e333b4a2b23e74aa0d2fb3d08028dbfdc5a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "28c98c0e2c9f2629567faf7b7a7c0bd00862b425d43aa5cde105fe83c0007956", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "07e1d4dd61188109427b1299ca62de8734f5325688506c3f38a97991c8a2aae5", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "34ae60631c0201725c79a4a979ab62352e55d37e1b33bad70680cecad3b3cfa6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "ca8ee451be276714cafe818058aa63d1f1862b817ff65e22ae492a61415b3c1d", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2ed789fca755cc1f92d3bb6e80f03a2c41d9ff5d91b1eb1ccaea4d373d7be700", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "22e3013bcdfa66544728acd16f3e114e8faf3ea1dcb0d88fcccaaa7eaa37ef69", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f6cec4ca3de402955aae4e16ed7443c2c0341f0cd00b2f55275482d198015dde", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e75d1351685175499ed150332f2fd2904a26f7e9e7f560ba69be3baec4d87994", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9e84055c06c62f7e17308f6d141e87a63e642368357cfbe7f0b38705ff751c87", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d5acb8e58d9d9362b1daa919aa5d76831bd4d3717e1469b32831a78a57d2fa21", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "f804d50795f4046fb27c043fe9c52c7250eba3c15e179742d681a9a66b9a62e6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a8e9668fcd62434cfddf28ccea35ad1cd5f317061b485614ae6386d810cef21d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "18060c1275a0cd3ddf84e51133626215751b4d1875ac5dbd1c2b434d6592cef6", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "ca8ee451be276714cafe818058aa63d1f1862b817ff65e22ae492a61415b3c1d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8f7e87cc1ecaa72fa6253b106fce88656b4c0f46b43e5040de26ac4c24fcd7d4", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "827e77e59e6ef9e0b6f6479c633c2fdbb1d027a1d73e8701f91ac411c039df26", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0dd7e0e69b9edfd9ba893908c741b959d7e4493c1181cd41bb9433ba90880165", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "875320ae5dc829083111a055437a20695343d7e5f987f9ac2ef4472d660e9f4e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "3775b2be602f5a0ddfc7076cd2a1df4e0bdc89d9b2a4277a7932a9f87ad81e3a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ec20ccb0f7a8ad2176bd42ee4236162bb9711ffd34fdd64410505cb2c0e3f267", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "88ef7492e648781b4f59335f49084c1fc8cfa1ad7e5bfafad1d3f6f3d1cc17a2", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "75e9a3a5654e6ea6a7286d86e73a4acc7c687a7335dab5007ae4166093e379af", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "923c119e8035282ec1dfee2910e3098c794ffdd369e61701f1c512e94c54d2b9", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "35d7bdc918ca1a0e75e1db122c166703973af8529f9eb3e528e5b43c635e3434", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "c9182509f56094d248dd4a68b0bde217a4ebeadf4fa2b95ce5da5d71330e039e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "025fcb8d7de1ee1430e7ee891c3756a57c72276958d126237a392cb4867479f6", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "dc0178f17e21e70ea18f53bf8289b614263a3ebae5f297c858a82b7b842d3c4e", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "90e62c20b1f717f213243c3ea9cdc6be0ad7af83a997a092ae53df0866e76828", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "e8dbbf3141e7928949c3ab9bb00311a539ff9105656b08b968bb1517b96c4f5a", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "d086e83aa3f7220ec8b5d8a4f5eb44a67919891aa0c6cf975e0ab133357be5b0", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "233f9c5848326cdedd83dc287b4a80920453b651cb8d8a54dbec76f1ae26345f", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "eb64434ee95270fee76ac306cfb888b502f192151663efedf9467cc3eacd9ba4", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "09652f011844b11ce9aa10af4be7aa35afbcb54ef1d82999bca41f357328623d", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "fce8f8e1ba4dc54663618315b09239e589cf5b2b42985f175d5d192d33585edf", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cf4a27ee627e6b5fb4050f45bb754baed6bc05ed1432d1c513d540c72baaab2c", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "004c89cd72076909a702502e4888ae6dfd7ecd43cc21008483fb18cf0fd66dfc", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "db5119f69d202bf9f921ca9e335610a0e988a05675c2c1d6e6dee82b81999f30", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1ccd1074ab307251705001632a9a0707124ebed86e2d9b50d63f02150efc0585", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "fca2777544f1517fe8e6998c4d1095221b6d78bb1e277dcc9eb24c11410fee2b", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7fc79a250cd42dcb78a44026b56e1bca9b47e1ea207e885647aa2055231cda01", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2b80596cadfca48867695b0799f0421da738971416583cfd55da8d1346a5c7bd", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "87753b7744ae00c587e5aec198355276bd20ade6405b9b8287aef742a7543721", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "db3aaa065e22c4ddf0272e8262607e75685d7d8f6645c37ff8de283d414472af", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "181a3d81eb8ae31948b75e49cf3e8ea00b592c5c8ba131f3d555b3f7871b32f9", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5c93811a2b24863a769f0236b91ff6e562a1928d5c19db9bc29dc66dfca124e9", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "af84e4f609298b46ff221f6e8f53b27b12075abec75e2492d51b0cbdd96d7d59", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b3b9aa431ee6d3cb94b2425c1ac8ce255e1e88aa392c01ca71e1147ffc8e5774", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "0a488c2ff95f1c6194256697103a082f94f991ad58d2e58abc133771d4ee8eba", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "a37d0e73c462763544c80aeac75f3b5c71c3ef6181bbbaf774482412276db720", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "06e0160a9b67d60b01c665d6a0979c2ae489a0cce0c40d10cc559669f27a4fbd", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "ef68a2d7871cac9d63829c0dfd4c9301d424ca1f7afa1515eb60d5f7610cd939", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "8f710c50aaef7a2918198914e9fa80918de54197299fe81d2f5c96bb47918086", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "e7f4c5ac27ba47921f61b6c9b76ab93e1437bf8ee7b1e9f1b79c0a3e0fb539d2", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "dd68ca5dc8e2fa72a075a4557f93d2dcc95985fdafecdcde9584504aaa04e1ea", -"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "3225b56e14d4f3489407f10fb04399523af061ef8e50e490582d8dceeb399cd9", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e155f460028110f14617bca120fb80b55a7d3f32032fd8e78f2670f787c87a2e", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "c557bbdb926f1c1ce335f0cf09cd1797fb7cf11fb011947365bac844742b476e", -"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "3c664b8f16146c1ec0d5b4700e3943af890531ca130c26f47c3f7467612e3474", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "cd25e920fe43a1aa8d828bdaebc94476f1eef2cea862e7eda30b62a4fc987425", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "3b824ed78866ce81c3b8bd6f76f5ae24c1a363a78e0699a5ed25561b7e801352", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "b3eabf3042027e046c2e4a75db92bd4499e01a44f8de38c33b49dbc8af2e3620", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "aa01e190a0df3ffbc4852ede734b5c23ee12a47499bd4c909f74f4f0857d4b16", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a8368238e04eb62e3e388027fc57e5d87335a78aaea5dbb254b9cfa43d880b6d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "9f176da41ae32957e42fbd6ac44fe83a3ccfe787a5c9d59b294e18585f45f06d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "180caacea6b6c5ea60ae3e77ce00050e412a798561b1aae41312691053ad8094", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "01b225a0454e62f1423daf34367e8e6d65142e3eaac567018b44f3bb576b2680", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "fde682e06ca6050659154ddc45895224658acccd8ccb1827e15bbe823988633c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "ec30585ec0c6765efc16190f0fdb885d6195b8ef5a5eb423275635d3b0da55b4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "2c0cd283bbaf42b5973d97465ac0699b0bf311b580909992633c1c6f23a0cdd6", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "f8617632f2ae937a75e13cc894bd123ac0c07ae6a2e1c93e28c80d9678ad0649", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "1b98bcf437187102eec0cb60c5e419cc12cdaf8966630cd53f9c396a84ca8861", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f58ed872caf71ddaa2e3e4a350b30121e0f492f4a443f2c1747baa10e0e1cfc3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6a69df8ed4f776dd12e0036f00a3711a940f74b31111c19435498b728893e6cf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "7a0985b07bba32208ed2ce29b1e9c9ef107e5546070de461fdfcc661f0e1c961", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "937c0331ece9d25d33aa7b69cb39c8e16fca75789cc513a4369f03db50dfa49d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "772bcc151bb53d08049837bcec33508725b2b9ee99455fd6bfc21a1fa6971af5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "08d983cb89f1695ce716259afc39fca92cded4b192a5b8f4d517c71871f9d869", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "84b1d23b08a8f46072113eeaf1e81dc872d38eeb185101c11fc5ce44b805acd8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "dd019cf183345467a30ab1a04965ce338448c93d15c8dff3051982534ab0fb75", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "dd019cf183345467a30ab1a04965ce338448c93d15c8dff3051982534ab0fb75", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "de9f3f31a743d48a397dc66a19598aea0bee211ff7edae01f08f88e8aff3ce71", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "0d2a8e49124afb54274fdf2d8435c3b6602489bada606381ca38af8ee49bdffd", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "6fa80e97ec7c7cd306cf08dc892c1d86652869dd4f244ba210d027cf7cc14d1b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8a3d7cc9b923d3d6186e35dd0f594c4d53a07bf9f35dd0648a5bffc79fdb2a7a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "a86b6e3fcaf391ba578abd0469fe79e5554d1a7e6a33514700f16e1320a733ff", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "e80d25580d70e960cdfe944dbac32e60b83103b4db7d42d73a7f7e869b79babb", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4827b1725ab47ad8ad8a4c8c4dd12f08e721b6e33ba6ce00fe956b664460619b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "19e480311b93e8663c8cb7a15470d4d41c2e5d8b173d9639bb6c01daf812c8d7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "a0c1781d8e75c74b8e8bfe09ddf7bf66c80574875eefb5551e6115e90113750d", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "8fbc14cda39944b734a8e70c339b7fd6f9aa5cd7afe921af9f25814497e94158", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "49a253f6f22d80e6589e6a1f38080b2e001a48b4ff696c884999ec83f2d2732c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "4e92f620ea6c6ced6818f5252f04578079befe27f1f23f31a35da534ad328ba8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "019c26db5b4dbd6142d5a1e15d44f10a307e7f4fc8f2b2cc2df890ccc5c43460", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "2b35cdd7ec798b4b2fc245a0dc19e91892728d95b9d77fcca066d670fbefb0d7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "630e132fc8e9f5e2d8c15d68e792721c0100e3f2009bb0a407b7b9b3ff3a7afc", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "d4ac65381701c07dcfee340ad76b81bbb6e447f6b195d73a152848aa3e67f37e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8133fe9e57158e749438143fdd32f030d074ae5ee20243dd8e93b283a050bd7a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "e4b71fa96939a2503e8de6118997b4ade192a1a7b2183c70c218ca5b7cdd46e8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "4d9ceeeef98b77432852a2d383388ccd6b4c533daff84be7d756d075ca862dce", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e2f5f2d04a5fc930b460cf5727d2fba612ba35aa46e35edc31f84ea4c99e29f2", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "e8b54e4f8ad0bf78a3e098b9ab30c4c5ed4be84abf3e0d6f4d887c400439f94b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "917dadadaf18edaef7ec7cd7a5503c68ef11a1a9c507dddad7b827885cdbeeee", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "62c27ab52c947469e5ddc137d55b1c380851d6864287ca2060000a619867ee5b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8f6b85dbd6ea55c2b2b02eed6ed2a74c56364f685c3fa65923399385c25545f6", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2e53a85b30c95afd680c3182d50135319b057557fea0c57e38833d61774263a0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "3b704d0994502e495819b10a863783e3df9fe21811c82b2909a54480db197520", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d4ff8e6788aaec44427f68cfaf0c318a77287412baa71ef44926866a7ec92b18", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "680deb2f43a9113bbad5a76e0a35c0c3f7e1905e43f20c972b3ae59a3bd085fe", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "f5405c4d078df2a7747087d2400638e9b54d884a6f0029db772f35e66fa66d0e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "cc48a3c4edb33b0aa959140f29a27ff91bb6bf7be464146d512781b2cdb9f0b4", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "9232e84ceaab761f5d4297d1cf0bd0bcd65f8906f7f38b731a9f414b3c9015f3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "c831d2abe9b543b28ff080086c0cc332c647c3c575c6b198a52f11e809688281", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "cedcc552c53a34e0585b9b0bfd68216eefd0cdae3b2fa55734ce76c9d7849f43", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "7dc1e194815ebed568ed26ede33232ac90976a72c255c50ab1b148ee744b0875", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "6c32c58e52592ff1548e40fe0b55b1a4a972bcc8ed6428a78d7db9d3c9ed12dd", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "cb9822613e7dd860784842405d8dabe0e39507566a9f8b9403f3022b530079bd", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "3e490a601da15af0bd87251c3d124d860270d61c4aa20525041eb3941f65a590", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "6fa80e97ec7c7cd306cf08dc892c1d86652869dd4f244ba210d027cf7cc14d1b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "2b415943f27093ea8f59282f24683c09ab09f5a50263f4fa28eebe3c2b1572e0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a42adbf776f73ffecddf3e3246d122451c60c5f737a58dcab95c05f0ff03cdc0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "6fc9792851ccaf186305b8e436d9fce36a98d1e1e6e6d5902ffe199497c48380", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2e925782aa18b473a4b98a522e89189baff450180d16984a2e38924747177d95", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "2f69006bc356d9742bc91f1a6d2501979b353e2fced1f6360e62cb29e1ae2db7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "5513b39780d00ea145087367ca8473ab62680980ff74f72836d0d8c9ff40f961", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "23fd379c88c651361b40b5902799b1793daa26384278729a4e420d56a8e70da7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "03d6ceceb300671dd0fac48b62fed679c1e701deeb8e4b53c28483647d8ff896", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "578b099511d4db544ed880d88fb88c36eba41982f0ea204d046822849b01f4c6", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "4a002ae604149d90858d61b2378688f4ac34cad1789885f7b7f128f70ad6bc9d", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b7e872bc5cb376e16c15b14d3eba5a992dc107f9ab68ef036313f4054a886323", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "3df56fa78cd25baffb28ab91b2e2bbd8e510069b1b4525c29f9e5adb125bc00f", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "6b07a713d4fb2a4f60e6f8931f176bf5e73b862b6e819a247a08d75ee574963e", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "313bbed79f74f1cd67f6fe006ff026a1a1280b0af2bb58697c43a9df14713826", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "cd1ae11464cfb6c550798356eddc70126ae6f7bd0c0e108b853a341bec6476f4", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "37dec8359a53966bf3555f32510f96523ecbb876c357c2a595d4faa206563554", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "243f0e6482806572398fb99757135b74a3ea9f6dee9e2ce6033fa913f65b87b6", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "b560260a448fff96818051e9ed8f7932623d5cb1b88918d8cabcd4e843a05472", -"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "9011d7a8540e238741418286eb6731c4290f3ea97bea41c28768f9d01f240ec8", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "19a04d82f5675f39e847b3ca5d37fc830ee0c56864b658b130000faba639f3e5", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "e2158628b9265e05c31ff8b11997e3bdb9ccaf152bc674ae8ecb4c5fff588e53", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5c15b80b3290f56f26910bff9bdde4344953ce6cd285a41b9e20da4887ead148", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "ea9d84e3b741e1aeb01343575075278e0c2b6248b25335bd07a787032b9ce2f5", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ad6aeb8030f434c7c58b6f7d4851ff8bda4ea10a0262e666821e2a7ae3335016", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "03357c650bb5087285f244d4453bd982d2cab9862536542e68cf9de16779a392", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "edb30dd0bb8fdb37f95b80472010c0c79965d32845274d2068a0229a058251ef", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "714ed51373718b99edae7508e44b30c33b20bea22b77cc9ecc8460a9a48e2a72", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9ef5fc72dd8ec6d449fc91aca115727692a6ac5d661394c638937136cc79d6ac", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a11bfb00f59a1ba3ece6dbc03cfe559180616fb63a41606a5806a192204b0bce", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "4102b339be07a8ecdec29721db22856823f029073371397776a5a6821f13e784", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "2b83b024db8e8b5289179f494adf10da205bb6eed6d34bd84353c9c9a38dc94e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "1ea9344e985b14b64564c0bfdf97e278fc3a20d78052c30339d064591ffa8d25", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "2273f90e222cdc7141aa53dba48e191859e57607ff98f430de767656d646cfdf", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "0a48ca9645984e31e6117b9bcca3c2984876c5ac03f0f156146a00eed320a11a", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a4d3960d5b71d1b41ba64ca669f09d59f8d72ff5069c613fdcb1dda57e1032e5", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "095f4b1d14a255200ef42f44fede7fc0d510356ac860e3424f88503f29b32f65", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "c7341e84946efe1dfe3bdb26e96c6711f799e8bf055cf4c8f055ca0b2f9006ec", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "e4868ecd3e39068d5cc638a8460590d1212cc4a04f78b0706ddba93eec264422", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6b6b35f76536a1225401fc2f77aff8bf138f755e0b8656e43a16bcd0860ee4ed", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "5cf013fc95f650a6f2ecf0f220e151e7c0cd74840fc81fdda90ce2aec247c781", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "34802866f8721daa39a3494ce85c8442bf1fc833f9a0d8531f95c16d1ef87be4", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "e9fb337b56d006c2656e02a9a657f2f9f700b09deedb12c99976d898b333df72", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "67e87abc490a606ef14cffa1d88f36c0fb0c80abdbd5246b4e8dbcdbb625d8d9", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "39c495be96110c02348bf2438d460b5d313abeef1dfd6726f75e234f70963acc", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "6da7aec12fb3332477d596a5b36c591c668e1edf85b7c1d7aed63e03031902cf", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "55df02db8f27f836ec722710ef785d61fa2ba21f4abd4e8827a8f053ccf924de", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "992df73cfae246a8bd8790bf709d8e4bd25164802ef80ad4a15d0bc45eeeac97", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "23bc368d264e0a31d575d344220debf7f8cd6645a9d4d25d4feb92328ad11b51", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "86d5a2f80701b18d12c7ca36213b9eb605d8660625bae800f3070a9e0838c93e", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "487d44afb07e0501be568dc622bf97a129341dd470f22ebfeeebe67981969873", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "ce8ff2d501220ef2f68ed95aaca36d0cd93f42093d2f6555a565791197c2afac", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "eef82e65c93f34b66580e97b7284391c1e93f9a83a711d3754770d88e3ec9777", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "d21d78a41fc024b45a2c3f946c0a9a86643db4133b8a2b9ff95e4d470fd61486", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "394236a750daca4f05fe521f79944b52d0bbd93b565d6ba9feb6024cd5c9daca", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "61affbffb4bc2402ec1fa60ab1d1cf083d27a8050ebcc448afb57fa6f6c497ee", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "03c669729f7964b494d9e597a252b6925235840bd687a983521eeb7a468f2731", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "1810381ddf293f9721a541f7d5553147559bd58deab957f3305c14b4f2556c92", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06db44a61b0a01b9cbd48fe531b7d9a0a6cb8d8514df2b614d957b60f3d99373", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "55df02db8f27f836ec722710ef785d61fa2ba21f4abd4e8827a8f053ccf924de", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "b1672c89438d07b7013f6e46cb722fa8d3fdee202d2f5e8c6657fe3af4c7d322", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "8647d0a94dc6f095d673830420765d1d9f8ccf72e46ca2fdea2cbdc73fc7df35", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1a6ea3c13002062fc007ee6bed43afcca538b3b6cc1906e67629f4e6998adfa5", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "21be50cf7f339039b1d99ab9c21b02fab753e21961684f8a9806aacfe8179a7c", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8a440ca4a83f74efcf7ff23bfa83be3716eef5bd9de4a1d5c9abad443f51debc", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b9f5c34dd464b4323ef1f1f352fa2e7f65b6dd641306dc76bceacd400d1f3f5b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "04d2f931616507152383565db047e13d97cb2d8e82c383b1f0cd04ef6b2e18ac", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "4403109f436d828bf97a682dc89585318246bd9e936a6f5b819a541d2a2d8562", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "96cd7c7f786a104da99c12dbfff3934df9e714cc9989bd4ae61c08502ef6dc58", -"T3T1_en_test_autolock.py::test_autolock_default_value": "d982d6baaba083cfba2668e369d7bfca6e4d809d7c2f4fda4e1ee399cd651ccd", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "ddd3762403e5217f71a96836b82490f65a702d57674cc9c26871229855e042cc", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "ddd3762403e5217f71a96836b82490f65a702d57674cc9c26871229855e042cc", -"T3T1_en_test_basic.py::test_capabilities": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_basic.py::test_device_id_different": "7f6819f324b2543c4189e497f5057cd8245ae8e4ea301612d99cf2d28715a7fc", -"T3T1_en_test_basic.py::test_device_id_same": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_basic.py::test_features": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_basic.py::test_ping": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_busy_state.py::test_busy_expiry": "23f97c207e937493d1debeab20070f637e3ddb744b22325b750309bce8eeb610", -"T3T1_en_test_busy_state.py::test_busy_state": "8ffb1448200486d9b788cfd9d5524b1a19fdd05d59ac364d5c18529947a58764", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "11c548bd1e835f106f20c2ece5b3c3dca288bdc229e64c8f8d4f56ddca571285", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "11c548bd1e835f106f20c2ece5b3c3dca288bdc229e64c8f8d4f56ddca571285", -"T3T1_en_test_cancel.py::test_cancel_on_paginated": "0c710e87aa0bc7c0745d0901b9af547effe4344482ae7481fd81065c3d350201", -"T3T1_en_test_debuglink.py::test_softlock_instability": "0367a7ddf127169778577b0dacaa68a19222a414423b08bf3d0b304c3bd08c82", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "ab4461520ac776496e41de48bd7ca4f4823929f1e81503ae2646a4d09c3ec699", -"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_language.py::test_error_invalid_data_hash": "c3f8f983b936fe77d2c2fb884b7a19091605c946f4073e5725fed4a98da23c2a", -"T3T1_en_test_language.py::test_error_invalid_data_length": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_language.py::test_error_invalid_header_magic": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_language.py::test_error_invalid_signature": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_language.py::test_error_too_long": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_language.py::test_error_version_mismatch": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_language.py::test_full_language_change[cs]": "4b8e50ddb1f0c527925438c2b52fb83d1edc18afadde293873765659ed14b8dc", -"T3T1_en_test_language.py::test_full_language_change[de]": "c42c8ccc5513113d4949a0e991d317e9aa18b000b94835bf92d0353e8d17ee4a", -"T3T1_en_test_language.py::test_full_language_change[en]": "684a99b183f90d5861dc4e5ce8135ccfb85bcad1a6c4b756105af47112bcc54e", -"T3T1_en_test_language.py::test_full_language_change[es]": "e4983068d07313e1b14664824bc940aeef78a8bed930b2d42b134257cb15f4c2", -"T3T1_en_test_language.py::test_full_language_change[fr]": "9b3bd0881958fc69a649df3773a0653a1687564cf7a58cc170b5f6d4e664e233", -"T3T1_en_test_language.py::test_header_trailing_data": "ad607dee387427eaffefc24e9c207d94368df905a25c067471febed894e13f79", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "6071bef676e2f6bdc94064b4666fe3c8f1604211cab791f784216f6b9f5b287a", -"T3T1_en_test_language.py::test_reject_update": "55ed87f0bfa2e6522ab78b36052c296106751ea48868ee7507dd7beec1d49d87", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "ec236de207ee3847682382fc8d0223d5b75005dec16b8e2687313878561586d5", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "ec236de207ee3847682382fc8d0223d5b75005dec16b8e2687313878561586d5", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "c09f6907799b460d11ad292fdb86fa796cedede33f231d99cc3df6ea979596ab", -"T3T1_en_test_language.py::test_switch_from_english[None]": "0138e2cfeee5a52a7b2e19b712fb0716ac1efc3400c7bc736617e1997cd3eade", -"T3T1_en_test_language.py::test_switch_from_english[True]": "0138e2cfeee5a52a7b2e19b712fb0716ac1efc3400c7bc736617e1997cd3eade", -"T3T1_en_test_language.py::test_switch_from_english_not_silent": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_language.py::test_switch_language": "983b4c3fe47e6b5487b32cbd70ac94c110437a6641cac95795190499e9b103e8", -"T3T1_en_test_language.py::test_translations_renders_on_screen": "c0d20e8901d2b057da2bc190b75494449dc9f88040f8adcd807c6f6df196deb5", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c1035d0450b2f6c7e69edef032c1867084f5a9c2273c628a24149746fac66dbb", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "cce7b3ffbb7710d415d808f22818ff192fe481c0e91c8c6f2d24a7b15b88a07e", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "da26fe67b19d9eb97bf58b52b288c10c0fa201da2b8d71bd31e2e07af1445c6f", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "d84cd0c05df9e66e46b622333ece38cb3058db24c20c961debce17a0101d2c5d", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "b107c9a9fe76397b916d22e7228aa12c76b489aee91e5ae75e01d899469124a0", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "3c63237ccdd47e7cedb9d8a30cfe3b4fd84f5cf52d469f92b1692779ccd62269", -"T3T1_en_test_msg_applysettings.py::test_label_too_long": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_msg_applysettings.py::test_safety_checks": "8f8b42a0a7b64fb86a6429109ffaddaacc191fe2e7e1a6c33fe523bf96a59d0d", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "40b7a7147d4c04eb6fbf21ec1f6fca8d7212553bc95371b0ee42333e062905e4", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "88ef0e0f67910e505d3fc90d12075fcbeef9c463fe2ff055a764e5a00acc28eb", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "16d737cfe047fe9f16af63e0b377ac07017e4ddae76e635ce229f24e5ea3de59", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "c34787dad860d55e2bc3c85a0c368a9da8c57bc563026723b9c80ae77fddf082", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "914b96817ee12dc7053925ad6a8f03cb99bce738dfc30de7e9e3bf06377978c6", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "564f7ca8efac421027694e12d1cc97ed4544102a2a609867ab3289a259fb7642", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e047ef1a569b6bd151d3b69f6bb54416e58db4e82778b43634e9efbaeede1a6d", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "146f947718edeb0994c61cf6d455e62e02950a78095215d32c9eb89657ed5f1e", -"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "03718e1a2cb958a9d8506955890486385c8792ac0e8b4c83aeaebd9b690a84d2", -"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "f044231aa22fe9c9e99e843f45121a1c62eee7b5bd758bf7e8e28b5d344ccf3f", -"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "4cb18f253fc90e26bfc4369661843eeefb30d74635cb043409a7c37de439596f", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "0d54e9c2d68262cc906b1e631294f7b6a8a917f37c6b21bceff90a3d7b860645", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "229301de940d0a72c0ab1ed9354993827a8bc503fae4be07586ee929e137ac37", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "839f63cc1f4dd4c49af5dd67c31d8eb958c6162184803f78804ca53968ed3bd8", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "91f798c16eb0289976e0d08721b5115517ff58309c10620e6bcb99af63feeca6", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "6fe76ae507a174e12f143a37771c96978be88c0622c23092c7f84814f812b9bb", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "392b04a5973d8a53b50906a9d7f6a0e1aacd495b45b1b66d32e1c330b6917083", -"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "3af6e9d0dd5201afc909db2287a4bfc4ab0d0d05a5aa114094ab71f4143df03d", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "9afbef8dbc756e376f7b3afb63629b67b750d122a450c39f385342b6380e2d89", -"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "9e288bb5885db81afb67afefb3918ddfa8385bdb8b0b66d3639a45dde3c04a34", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "5d39fce87b699d0d01805653ceb73f30d82c805c5088bb62bccd6805617a6e15", -"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "4b86885954fb34dd9ee585c8759a594cae49b21b8e5d3b2024f216b7b7f0e7ab", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "63833039e28ace228a9d38cebaa61af2c6661ec92e095ef7544c4e952c92a61c", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "c079711da56149b7134d91abec061bcacf11eddcfe865e512afd1c92fccade65", -"T3T1_en_test_msg_ping.py::test_ping": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "d97bbcd2116635dce9462ce5b710692424baf29837f647b4d4fe3ef3f92986f7", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "0bd0f389763295d99ea5bdc6f8f086716fcc7cb14cdbf5bd5dfeb49f4f9a5103", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "c6dacee8ddebb3e4d2f21bef0f86911176e5e7922965bf956c746bc8fdc60ab0", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "fa56588215a09c4829d7013b5daf04a22b9a9e9be8185ee9c62e93d84e283779", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "7f6819f324b2543c4189e497f5057cd8245ae8e4ea301612d99cf2d28715a7fc", -"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "54990297ddf4f0b6ef5b50f00df5c46f63aa1f60ba9048c8ae3a5014873b1c30", -"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "54990297ddf4f0b6ef5b50f00df5c46f63aa1f60ba9048c8ae3a5014873b1c30", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", -"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", -"T3T1_en_test_pin.py::test_correct_pin": "34f49bd30d882624c0d2c6c52b26bca73472a06134e0517420573fd7cdadf4a7", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "1e5fa4644e258d5abd6c5890f29905b6a745a3e5c82b068a2443366a0c3d9fda", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "21709fff3c391e71060bd1f4a2c6301adc49729dee8f9a1a7a33e84414995718", -"T3T1_en_test_pin.py::test_no_protection": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_protection_levels.py::test_apply_settings": "fb28818f9bf8d9f9a2096d43da7134d9b9cbf98052ec30eb9b463c311e2ed6a5", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "5de910a635eb0f41bad1c5fd8736536b5495ff362531d308bf9212d1db0b4773", -"T3T1_en_test_protection_levels.py::test_get_address": "54947ca5cb66df47025def3633baa2e06549e060fea732937e75061971ac418c", -"T3T1_en_test_protection_levels.py::test_get_entropy": "388fefbb3865f48e86a1d19f6022b052df47e38a07dd915c7e81d9364287c0aa", -"T3T1_en_test_protection_levels.py::test_get_public_key": "54947ca5cb66df47025def3633baa2e06549e060fea732937e75061971ac418c", -"T3T1_en_test_protection_levels.py::test_initialize": "4affdfac00bbf8ed72fdb320208f442ab7db17491f46f8a1d3a395f468e71137", -"T3T1_en_test_protection_levels.py::test_passphrase_cached": "d68c5489de2b5d09233683769ddefb9710dfd7f461c671711c0535d4fd4f3c7e", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "ae7ce84fd0df55478cdecd4f1be0a791ddd412d51f3de7867458ac5269a92f5a", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "39d92fb92a5797f3bff0f00f1968f1e74f9876a78f23d35b668f923af1596e7a", -"T3T1_en_test_protection_levels.py::test_ping": "6afcb08739ed9227517bad5e167069e51480b7ff0ced26f350a90c91c5f7da51", -"T3T1_en_test_protection_levels.py::test_sign_message": "364d8681036f0a9d80d61583fdfe63af0aa5fc39aa7544656dc6190208508fd6", -"T3T1_en_test_protection_levels.py::test_signtx": "87ca077036497515ab94f96c39a8c0787544cadcbdf1dacf8fe944442027a835", -"T3T1_en_test_protection_levels.py::test_unlocked": "13ca7305ba2baadc972d57ce471562940cec5a178fbe753efc55e3bcd89112fb", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "ef4f1e03d59cf0c9ceee3a79f06b1d62ec90ee857983f66ba1fa783bb78df800", -"T3T1_en_test_protection_levels.py::test_wipe_device": "52a4d3dbcd0903b8723d17091dc7b20836c7eeab97b444be0230b88ae1e9e1d8", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "0705777e49cde2592040072b1391ac6895ca1a0996747b0e8aee7fc185e744b5", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "ad0c5bb9d66a50760d14a28f8fc7d7371fb7d067188888518d226804aecaa66c", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b2bf65264294051544c7d89a97475fda8fd750c4e3b55af026b2f1b4aa3bb568", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1e6d38cc0b383e3027ef93cd3704311c3f352237ffd1cec3897b82db9261f137", -"T3T1_en_test_sdcard.py::test_sd_format": "017ec143ddaeada2812ec45ddbdac689f76c98e9e0af32633fd6018ef4b699b4", -"T3T1_en_test_sdcard.py::test_sd_no_format": "4a23edde8d891c33658f18b17d437c523f022f84ff6b9befd30c8faf67bd60a9", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "5aabfe244679fbea81e1499a719778502efc8edb453c5a5f91fb97284548064d", -"T3T1_en_test_session.py::test_cannot_resume_ended_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_session.py::test_clear_session": "1267c15a5dbbc3f399e70c672478ae2989781c853cd31a5593c78684d20fbd80", -"T3T1_en_test_session.py::test_derive_cardano_empty_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_session.py::test_derive_cardano_running_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_session.py::test_end_session": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_session.py::test_end_session_only_current": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_session.py::test_session_recycling": "ada0a97b5b79f6bb5b1cd0b90e7646f1240cfbeac5ccd5d6ea233e5745d4fc3b", -"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "1661c5cfddbb40be538006280264bc8e30db72c05a38000f849ca9bc29742d14", -"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "42c1f9aa3c2967f567c61dccb480a8e4da5f9b691b6270cc42f95527dd515d72", -"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "882c54902bcf08afff84eb17ae609628586af6ba408a27fc4bc1837967e4cc13", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "2487ed14df5355bc72d1ab5a068562755044a69b88083c725ff29755a4f53ef4", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b6e880a10c158bd7c5516081f07bc51d1e9b57c620f93cb3a7122259262b1611", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "edbb9b22c4d9653632f08a5733ddd62d55af8c718ae9e1409e488346e81c5bac", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "a125cba9c26f8be35caa5c0d0525a8d5fc7de319cbf6c317d7921df3e74f635b", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "d68c5489de2b5d09233683769ddefb9710dfd7f461c671711c0535d4fd4f3c7e", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "0488bcfcedcbfb0a254571c3880e53b519bfcd9c48aea66ce426b063f9e6f694", -"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "55c744cff577c702c6570e1c0a6fb297e1b7ad5b7497146c3272ac3c7fa484ea", -"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "eaa5c86634b1c7b1fa1906afbd0f644b4a07119369b5ea61b7fd741d0d049c46", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "8cb5089bcc38132a33e27a1b6a6b21a723e56ae41e4ddbacfe6a0a50261e678f", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "7f0ae7e269f087f8b2935fe54c6af3b6ed31e6a11017ba07f6e0e8a85e8151ce", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "53cf62cf91a7c0edd98fe177d3b6c60f96fc47d2203ec8d4f10d5e29bb40de67", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b2592e0d823c1cb39659168f784385beb6b1598d01bcf5877617a8285289f7e7", -"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3ebb9f1c88006cba897357182b858088182606bc73e819a416b0c15bedca3778", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "f345e720600ede1798fde1783ddb285f03433fb1990aa0e9005915a76a41d0b0", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "62a59700f8f083f84a57390956a7c77c09438cf4a75521f6800f29c2f483fa64", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ca9acdfcc9cf6d0556cc1e106a92ba6048a7b54750cdf52658a7932351389731", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "9ed12e82bc4eddf03ed25be430129148aff0985ab675f6fc667bf0cd6a95b1fa", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ebd53bc69874cab3da61fd9ebb907bc571b577510f323d2b3ab90ce930e6b2e6", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "5e2819e09655d495e6cff56f1f19771afc5041c01d063e8480a33584f3758581", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fd4cb96d43ae589d575bcdab821edf44a837f849ec74e6f79ef307c0e07f213d", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "1300e5c49e238a20cc043b25153e0c38bfac455a3144723b761c716c2af2475d", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "80ef196f07c130954c242fa916bf56573394017b2f2a857f7cfd913a358930dd", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "5da07e0f447f877baaea76ece6a0bf927d24777b7e728614081eac18b81bb72e", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "8c4f8f3547688adf0fa9e12b564a4ae6e1b7b573d1f01e0d955ff1e1299895ac", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e42a0932f8ce798cd593d3eaf29590956054a9c72107cd18c3fc6e3ca8c78d3b", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "7f0ddb38a094f5a3e5460cc2628467079d0e140839a3357fc4999cc171f6cc0e", -"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "92024bca84983491b17ea260caa650e695a5e94f804cf8583f1878fc45136dd0", -"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "38995efc08d761ee8929b115eb4c38f42f5210fa987cbdc51cdd4d87bf244a98", -"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "c784707e36249b24855017856e1855388401fe22d2ecac7cee389e83afb28130", -"T3T1_en_zcash-test_sign_tx.py::test_one_two": "dc219bc61bc850922c8e68272a1b0f716f040342eabd928adf80615a1845167a", -"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "9cd33c63a1c2cb1c73e56b10524bb5b494e06f7b2f2cd71fb1fb47079dec3dc8", -"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "5320df12b0ae7a6d2cdbb221159fa40d8db9950e52f09816696a49ed26d89efc", -"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "d1eca3bf87b03c9a8d32343a8b1f1a7c1005edd37ff23e78eac57e8aecf47c89", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "4ffb57a8775709cc8b57e368b9bb8ea38653d6f9af432d068fbccce76b50cb7f", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "5b0755dee09e8c53bf0fb979b77cdd8ab5008c196d16120c19c195b5e6c2666c", -"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "254e319fa5ae4452a9036fba7947d47997ca57005943cc72e91d31a1bea521a7", -"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "1a80c86235485f8179bbca8bb304daf9b20e73c3c29be076722aa88b6d26f3c7", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "042cd72b60ba27782bf58f02e1357b324a8637fc4218724035398351f71854cb", -"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b86eb04aa17db7ee96ff1a0710854751dc89ac00c5ae5c5895704e9a9f84a09a", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f31d7469ee6e07a119650a8ab9ce693585615f3d24ae58f568802ac2270cfbbd", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "b8728e21a8b802b0d59deb631000a37e56554cee716e4b4debc5f3f237c1dfeb", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "8c84da02262be30b230c3547a6dd04f7cce73be8346f4cf208d3e8b3c58491a4", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "af717139ed153dbd0fb7b2c17974b3f3bff9020263cef711f4c6021b612c115e", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5c4adc8f4c57d7ec898ee1f42c852ff3df662c7d4d69be5fdd3474fbe2387a45", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "601b1e06b1be826f9cbb10dbe83d9b6852e7d22efc6b98bd2c9f4faf8ebf1442", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "af717139ed153dbd0fb7b2c17974b3f3bff9020263cef711f4c6021b612c115e", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5c4adc8f4c57d7ec898ee1f42c852ff3df662c7d4d69be5fdd3474fbe2387a45", -"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "601b1e06b1be826f9cbb10dbe83d9b6852e7d22efc6b98bd2c9f4faf8ebf1442", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "cc7b5f0cae4ffc2df808a84bd1e58a3c6aab25299073bb3a70703305b94b3ce6", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "61d863a3f23cd91a6e01da628b9f69bfe5ff11abe5aae244930d6f538bcf1a3d", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "d0b2296d8c64caab9359945e03aeb6cd40687faecb448907146bfb11f80dcc8e", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6efdc126231e6616b24835f9a2a7cadfff910a22d3462b0c1880047e1d2a5101", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4d16c81456baed1bab8e882e70ffbd059276427b421433acabab583cb9f97831", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4d16c81456baed1bab8e882e70ffbd059276427b421433acabab583cb9f97831", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "842f811dcc9f3bf2a3fae5db447ee49bf27fe59b5074afc4d8c28051098f0e7f", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d5abae3846bbc039e0078951fdfe3f1e57e93042d129497aad0f43edcf823723", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7ebf8859c5a74faa7916ec5785d130d58ba2dbd63ba2b1887b744f82db1f8531", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "dc30ab8c74630acf07b8bbe8fd18754209666de1cc16978f5c505c5a94024cb7", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "dc30ab8c74630acf07b8bbe8fd18754209666de1cc16978f5c505c5a94024cb7", -"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "1738088c1e014cb30802ca9e75cbc8f5b60d20d2ed9776f6f4380e3169b3b90c", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "1738088c1e014cb30802ca9e75cbc8f5b60d20d2ed9776f6f4380e3169b3b90c", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d50397280ed56c7dbc672d08a626461ad6a412962636d649718a7844d7e025ed", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c9ae97222041f09fc4ca9d6657fd3cac3d7c1702eb5ca2c25370869d305eab1f", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "51b2010eda968da7bee7719e08cfe2917ec1cb5b539b8af6cf56b6e18fa304b2", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "1554124da30ccbd86539daaa1bf6eefd0aaed2e77c6760a938925c6cdb5a301a", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6205977a43a139a3fd6a495e8c2254d06fe1fa554cb4738892775227016ac5cd", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "c4c9aee3e0b9e94a845e4268780930cf13095764336a139d57ab6e393e3425a0", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "1522c446685ff09f1ba2d489c6a5bcb79fdf99eb901d70ccd3609825a56a7ff9", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "33e7c75c7c03258845bda1009f38d50d35eb12af1b71d66d57a14799094ecf3d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "1065bef098cd184acc99ccf809b4928327e6af6bff0727ca5b9f1874f973aafb", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "8d7a2d9b17d090180d554eaad64b84d6a8c1b9bbcd8b53110ce34533f8994b70", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "14e4f3d950317a49e1e86f0f14438e771fd38759889a70478946b0c45235e169", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "90de9dd72c99108de4844519d67166ba2e1dc8249c1ca95e7b9d2a32fe2e4d95", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "5f7d2b4d9c8a5d5287f284fa00187bb9b00ab26d2cffa2a1283dc4b2f9422475", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "dd02fbce15993333da6f673aee176b8128c8c43b4ae838b431b16f01866a633d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "460bfeb3a814653cab2af282f620693dba13ddb4bbe62dd7d05942168c532b59", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "993f1e4e3fb5f95fbdcdfd20d606df21b74a7cbebd7827af740cc7e2e959ab64", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "9fe0bcd844ddd9ca3989dc4eadabbdc429f74b1618b0e836e5198acf515388f9", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a018e2e944a9ee9416c95007c51acc4e1d3bbf7cf24932cb17e9176361b64a80", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5eddfe2278bb9f42e3468830e60f3497b85df4d9fc21f69407586fa1ae68f7ad", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "e166196f590557c7b9d4d142a2b9c179a7b5357a3b69aeb086c329835d0cc8a2", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "7e635dd5f631c15ad2cc91fbc8f2b758a5b7bcdab02e62e713890fd098278403", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "c4c9aee3e0b9e94a845e4268780930cf13095764336a139d57ab6e393e3425a0", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "1522c446685ff09f1ba2d489c6a5bcb79fdf99eb901d70ccd3609825a56a7ff9", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "33e7c75c7c03258845bda1009f38d50d35eb12af1b71d66d57a14799094ecf3d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "1065bef098cd184acc99ccf809b4928327e6af6bff0727ca5b9f1874f973aafb", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "8d7a2d9b17d090180d554eaad64b84d6a8c1b9bbcd8b53110ce34533f8994b70", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "14e4f3d950317a49e1e86f0f14438e771fd38759889a70478946b0c45235e169", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "90de9dd72c99108de4844519d67166ba2e1dc8249c1ca95e7b9d2a32fe2e4d95", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "5f7d2b4d9c8a5d5287f284fa00187bb9b00ab26d2cffa2a1283dc4b2f9422475", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "dd02fbce15993333da6f673aee176b8128c8c43b4ae838b431b16f01866a633d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "460bfeb3a814653cab2af282f620693dba13ddb4bbe62dd7d05942168c532b59", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "993f1e4e3fb5f95fbdcdfd20d606df21b74a7cbebd7827af740cc7e2e959ab64", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "9fe0bcd844ddd9ca3989dc4eadabbdc429f74b1618b0e836e5198acf515388f9", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a018e2e944a9ee9416c95007c51acc4e1d3bbf7cf24932cb17e9176361b64a80", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5eddfe2278bb9f42e3468830e60f3497b85df4d9fc21f69407586fa1ae68f7ad", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "e166196f590557c7b9d4d142a2b9c179a7b5357a3b69aeb086c329835d0cc8a2", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "7e635dd5f631c15ad2cc91fbc8f2b758a5b7bcdab02e62e713890fd098278403", -"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "65d773acc22faa1382670edc8b9258f4f33cecaf6d856ca367591812d501ac49", -"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "7043397fa76718f62b1f6d12468ede2f822e295ee9d0a162857c142fc3e82f59", -"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_bch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "7c653422dbaf3072712a92b52b279c362616beee763f510626c4121e9dbfa4b0", -"T3T1_es_bitcoin-test_getaddress.py::test_btc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_crw": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_elements": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_grs": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "44ee361a0a43578becfc12ddb920f3086c84f52f45b19b48712d86fb84fd2e62", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9537aceb609ae27e84e5d7f7288e5db3da52873ba1b000e2f3178dc1187e9545", -"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "c0d30d99b0fa6d9f9aa10ae6950cb4e2eeed4e70ae257b0a2977c72d3d532060", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "cccf8a4b9ec9581f4c22d823a222ce0d84e2babfa6f4c3b053fee278c6b8840f", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1ea7f9445d02aa3c116cfd3df05ab9ac45512191ae7f0f011cbdc45b96bf7906", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d0b04583d2623b2f591cf31939f4dd8a05f3d3a139a9d68d13a9375159c019b1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "16224c1dee1a568d2d44d62586011a9dc00dd84573715c8e1b7b2faee41744ab", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "6cea411b8522d4407769e2ccea2b81a92a346754c3f203ded8f1db9e1fa6ade6", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "b3da6ef4c5d9a6a78f99aca72b2a3fb201f76f4773294f465f72f556fed72bdf", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "bdeda96fc10043ac56e638920cb9d3cab6f2d6113fa44d90ecae444f7524ead6", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "06e1146e8f1684a4d0bdd6b9ed79f7b3fcbe1efbab5cd3baf47db13782edd692", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "ca3d075e013c453e2be1533aa03efe6dadd815595e317fb66194eb1a14be04b9", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "fcbee435d278d4f241c286fd550ebe25c9c43a0ab0f44d81b632646d7740be35", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "24ae670c5c21d84ef42b1fadc6243138dfc2956976c022f135fddcb8b0685860", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "b53b42339cc0c4bd97fb80868ecd40b797874e4b29a4f064add2d38d811dee29", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "5db43c08170d2e5170ff343609b3eef7f29b68bf04fdf5b7b4b6247a9b9c722a", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "0313b9e59c663c0a16013a0f29ba7ab23643ec4f8c15e6adad88c774a2e1b37a", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6c1bdcc61602bcd4a36d16d1a8e4e2313e270122a9e4e1ab6906ebb399a94bc5", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "591f942883c4597f8d92194c2c48e5eb62308942e3a006f3f2bac011fb140d65", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "6042ec28187010e0c128802a1d3b81838d9f64ff5cadef391869df3e3702c9a3", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "e99702e56b33af02bc172b668a34e33442dcc8d8d5be4081c39d60506f1da045", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "e6885bcb1586d9a175148640edb3506ba42cb1e97c4511d798a00fda01a5d58f", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "deae52a983bb0c8634cca5aa95baef4bf8b8666e96e1cfdf3942018659d8cdca", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "53aa63bcf55136f8a51fb8069eb847f79c0491d5ea3949b0e00b141e45c38215", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "fa6c021e9e8698d29b4eeebe5a830d00611f1da312c84efeaf91c23a81e7695c", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "9eab42837d5df4313cc6ac3638b2c3a8c6259bb71750527f1c72924e08f54654", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f61b26a4542532f98404f7e2276fc64906cc429615f079cc456e7fbd09b6f61c", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f61b26a4542532f98404f7e2276fc64906cc429615f079cc456e7fbd09b6f61c", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "7eb8f48e27676b284c09fc69c992a254f9d4cd64bd6fc0425f2f48bf0e13ceba", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "e5614063a99b2ed09f6f4f727c73e5496ccde69d19cc40fab7013023425f0fc0", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "9e85d4fe6ec2115ba2a8d5199bf963f1ccfc603c54d0c07d71edb35d729f63cd", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "952b7b4e97da058476e9838111556f4dfdbf3da5122f695eb49626933286126e", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "a61ba3a70e3fcf9ed969d33fde51cde39b442271a81045e1eef957e67af9cf56", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "3fab5406f1ae77f2c6405d032edae19d9bc1634454e4a7ca652617ed348d173e", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "82f382896a8ca0861c2abd1ea53f2f9d94896a250cbcec8c578378a6fe447c96", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "65a86ab823f32a0082cb41f9b3ff7b436a70539c2b772866585b348f79f5899a", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "630974e7d9ab6331b495d4c9eca55effe96867e6ff3d1048562a87754293c56a", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "239affc80e19c7bcca247b2ab7246373b9ddad8db240c5f87402431a37e221c6", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "c5e9708a1cba71b675707ae7e650cbac8cf3fd80270210f8e969c52094ba425d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "246c322e14d23f91a9cac87ec7b459cf5ac666cdc3c5e84e6e47ad368a487c41", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "91e044dd6daf86816f59b07373e4afde37fdabac6fdbe255206ed2bcb0d3f5da", -"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8c1ad58116a752fc2b5f988230b4e2ec0e2cd219e49680a7ee545870116cba13", -"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "e51cd7b467ba186e65f00f212237316dfd0ac8304d00a8d76fc650ed909944a1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b03d9b85f2f00e79edaf8156d0974dd095ba69dc00ab92e21ce42c4de06ede87", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "91deb01c130ada6f503f4130ac12686f79e8ce6f97113eba8e2107c85c548dfe", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "38a95f9148e4f1cb5788fcf86d3337ba9c17becd0d5b46ad08bf0fb78dd6f820", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "9bd409644c54c4e0ba150391f546a6a422e9f569bc34962668064d60162dd37e", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "f627c22a06ffcf1a678ed699be73ac0ed21ffafd1ddfa7a7cbd4f12f7dbba883", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "93e54ede4706a5dbfccf702ce536dccf292e289f81d234c06706627e1d13f274", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "89d0c4ee0cdc031ac0b9195f640393847a5710a3012b6dd4ae94bbc643019c35", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "cd8553d1e940c99e1343a5083c4da255d0cc47ebe6870d7dfe1693a3f7d68c2c", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "16305e6e8a806b984c962a5663bfe13d91ea5e6bd3d7bf6d0b84d0a9eaf39a87", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "66cce99b6b8d88176b4f69d743d2646031b911a133cccd2150aabf49c28bb2bb", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_grs.py::test_legacy": "54d852edad737ceff97e7516cec6eae720ad210742a568fbe5bc6005cdbf0213", -"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "fd3d72993f6b6a4aaa792896cddf6230429d6bd16a313bc7bb9979dccd0567bc", -"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "758cf572aeb2da584028107349dc10e69ed2d77af84016df026ac0c073e81928", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "b15a2551e3d6ccc419be6fd3d8e279d2f00364409f752a42ec197b7f3d1b0a3c", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "e73effe50388609382879780db3daaf5fd6af8b98f8ebcd79ac789537bba6430", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "d888b2a41d9881f5a4158309131ca3362b25555235d80eb14654eb82e1e82e1d", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8183785a97cf0739b907a99d47a98d7c66999be841572980ff6866958c3452e7", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c379bde5eb2efdfe21152a989e366631c0ed65b69c3ffc85001a09cdd45349a0", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "5f0db334227477404df1e9c8561f53709f9ab47bf7ac38cd99133207e4f5a039", -"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "b3fd7276e31043c80db61eac8f73ab5cabee224a8ddae8bbabd4d4279feb1f7b", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "f403d0876f41e687ddc6f2daa889eb82c73b6c835a003934983cfa7ad808c113", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "3ad105f72df19490b83de61c039241043c6bc8852b962af3df13ddbe1ab4363f", -"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "050a1918381f34484260ce91d1772f36de291bc19a02a19fe2135ba933ec87cb", -"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "2f233d57f791b6cdfc46417a1dcba3c06013c7371017e05d2b8f1661ca16a6cb", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "c24dc9265699b7b8eeea63898e361d18beca3304faa6cfd7ab54767fa751115d", -"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "2255ec865f50f4173c32b6ea66e2ef0fc210f9db36c02b8e64c1d6c33119f03d", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "96f97f651a9dec4637d6f86dc89ee87cc1924efe49206e3579f955a1aea753be", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "48a3a1c95b6ca9f2992f33826aef60196c6575ad0e2b0e5af0d24c758f4e0c5f", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "efef5dbaa21e2282a8edcb6191831d164e902ea7063b2a54a4e50176823cb6b6", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "a9ef4250acbd711656b51f63f0ecebd8fbc9cb80717f50800f8321e3f5bfad21", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "4f40e74779ad80f91892f6f1c7a3e0729233c7ce24ac9253a74b91d46fad541f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "4d7fcfc6408cca013b038feaec8679a45e35bc03dccf0ca4515f2baee10aa917", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "5d44cf34baf58fe2cdacae61c4b4e6d4dc7d352e4a47b3b107e5a34612043832", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f70c88f39cbe5219b0047f305459612abb4f6a34ed871550a9378cb524215914", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "c1f685685ae375b85ebb7b429fe7c8e3d75bc95aa1022a46c6be2bfb5cfff4b9", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "5ca60f38ac289aacfefc0bcc9ad1ee4b3209354516a28c18be0298d9243d512d", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8ab0d8789bd4aa4b00d58e252a6552f4b5ff02491a0a227cbcfa060daa7c6cc0", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "43d02a6cf3109a1ac2b30b53da17cd69faf069a4f33b425571b6e07a1a3a6d93", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "fd13aa487775a6b6380dbe8e815cc1b538b184da2385e9deefaeb534b56fd639", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "7431abd0b1c6d0ca393a8e6f66d1251c939476c1a696028f5292cc81989acdf9", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "4c680b93f34e50056d75a609f4ef90161ece046f3e23bfe9ffe69696ce3fa7f9", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "403538e3a6239e75c1138048c8273792f6f1c7cce3cef8536e21703a564c74c6", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "3fda4189d6e047c3e771be4046ffbba19bfafcdde4246edb813bebcb21b22de5", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "4d9cb396fa24fe80cbf4d2bc7ce813afd1a8e62576d86aadd04e3bdd1103ba44", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c833181368e2bddecca26417f747855bf40ae2d76223a829fd31647a32784542", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "3abc3de168952378ef29333eea8550af2e2ef10ac0e0d878285c0d421a15d941", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a1c9cb749300eb4b53b6f84629cf854c1823e364b58e1d3d632c2d66b145e792", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "f7612d762a4fb0597c0dee8c3a0e97713d57a8fd9f0abf66f9bd63d55ff69861", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "b1defe7ec013eca6b865b41b11da522a1e10fa83d038b8b001492cfe055f490c", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "fbd57a300cb7ae3fc04b96072f6d7766545d95ef08b129968801ee0f5e38f6ae", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "bcf5593345c1c15b953d16bdc97640e0e7358e88134522830856c00efcd74048", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "6b1c84e656b50eaed0fc66e84f93a2dcd248d1e277893a693db42444865f5b83", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "0fba893ac122117ef75d4bb64040484e988db36c3bfc7633b0df9f33a4d6ee37", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "bb053ff1d2a180c26b9743f3b91473d7c63b4128b48d4401fe4715f18a3cf062", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ea49f8a22a7fc90b76716a10d9567205ea61113689bd77bdae6a940ca6e13100", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "0d1a96151dbabb68e841140b6b01e926daa32177b896b9d1d3ef901177672841", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "25ad0425b0b1fadfb54157efa498910183be625c0a2d02d5e6e307a12ae1f68d", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "03fc478527157e7a88344117a894283e7b46facae69b3c657a6970998b3147d9", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "b94d3d00fce9cf47e31c5eaef30e0d331bd6c86d60954a1c1843bf5c303f3b8e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "307eb1cd5666c75c2e037900b52e652d78006bdf8cc30356b864c66d9e21a122", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7bde8b27bdc13bed1c8ff9b1312265caa369aaef8185be965da285d8ac30bd28", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "83958be3c8cee2d2e01261c6eb4aaa79e440fee301605192abbf79e23113d0fa", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "32a9cc4be3becfedc77b8f63d34ad627166a6d777aae47c822dc611275da1225", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "7bde8b27bdc13bed1c8ff9b1312265caa369aaef8185be965da285d8ac30bd28", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "7bde8b27bdc13bed1c8ff9b1312265caa369aaef8185be965da285d8ac30bd28", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "7bde8b27bdc13bed1c8ff9b1312265caa369aaef8185be965da285d8ac30bd28", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d3d93aeb39a5bffa12541738a5c9088a21827fb797a99839a972f389a798cdbd", -"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "13481daa6ded445d479e7eee70cafc8f6d462a13458bf635a8159d23fda478bb", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "710c564b1d601f9af7be22038bfbde2b1989477f9bbc0e3a5f747b3e1290e70f", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "5966101c2189cc85fb044d9b6d8ac220320d519a63a99e40f05964ffe9b62458", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "fbdc1e8d7380355fc49cfc9757b9c63411bd8a89e00b46cbc13dad30c93740a1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "fbdc1e8d7380355fc49cfc9757b9c63411bd8a89e00b46cbc13dad30c93740a1", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "76b199eeaa5d33914f30a07cf42216b24b6a42c024ff98a2ed2689d4c75489df", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "7ce5358a61f0c22febecfc07535bffa837adf8687f70640ebdba325cb6d46749", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "533f5d0e411675610b7fb2e8d4d77ec6db7c726c0b8a9908b67ad4e3800ab322", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "0e069cfd56e83065eaa8c5188586148561e56b3046120f33e748cc7bc3a05718", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "cc864bc2b70106813503d956ffba598b0109ab91466739a0120049a3ab2fa931", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "888d9dab16b7646822867d39efe38b882e628294d162882a44de739acbac20c5", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "888d9dab16b7646822867d39efe38b882e628294d162882a44de739acbac20c5", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "105c68098ecca0a90528007d6ee129287e67a276d2dd873bc7cd32b6813fe713", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "ea3241911aeb22a7e772971843b8b82e8ed0c87a63a31d4b9483573f3aed0ab2", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "685379638919e4c7f094bc28cad246cf6fc8625bb73ffeff0fc3a7057866d5c4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "685379638919e4c7f094bc28cad246cf6fc8625bb73ffeff0fc3a7057866d5c4", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "f6dbf7653071f28a265c54e016b9e133a81e75a1a73405decb32e45c7e346eac", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "5155d6b01c7461a7ee61f6b68f593bd3a62f96221ca832a642ae33b8463e31e2", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "4a0e2d5f151b2731671966e2b6b5e144c1be90881a9b30df727d8025764370f8", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "4a0e2d5f151b2731671966e2b6b5e144c1be90881a9b30df727d8025764370f8", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "62bbef331c816a359a3fd60299219f1cc4c25aa410faf6875734dc86ffe42876", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "ee567ee295c7273a63fc6cf94bac045db4532eb9f899fc944f342e9621a140cc", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "e16b37f10a59d35baeca180f8fefe926dabe21f5de409e4c53580126caada74a", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "b957d324fd22ab260c226fd0d8ce33caa752c8b28e4ef078dbe581c36b4416d6", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "073bc0f9ce14c0a7087c86cff795b5f3852ccda7456572e8b1f0033de57a07be", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "97d2363e38acab3b979431909792d3122b0687b482374846bedd9a37c8a5716d", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "3deb52c385b57d269ce73fa93e547dd2e6d38cd4efafedd38623de3dedc5153c", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "821a9612ba898b82599eca5457ee451fbd9609635538bb8b48f47c6d01e681fc", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "7e371285f4b73ba09bc38459600744f4e90cc42b06ebdd726a3b2518e15fc2ce", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "f32f93855fadad704cd826e55cd76ca72c8538eaf14890ef7b4d8c28bb704319", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "d55e6eb2ed722141241d96eaacfebba812b25f5aa3007e373150d45723de1334", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "4bdfd6f3efa7777d7bdf19c99a3aea1215c9db8d77b4d0f4b1356f7423ef6afb", -"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "fa170022dc5d97c3b668b1ab7bdd45342dbd07e4826e636672bc80f490695e9d", -"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "fa170022dc5d97c3b668b1ab7bdd45342dbd07e4826e636672bc80f490695e9d", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "99de46c2e38f6899c368d9c5130b95c92b5420448db1e65cfa24ba25ebef765b", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "c24ba616d41e89c67257318f65e1bc90a054f3b9492b63852278312d35c59506", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx.py::test_information": "c1a90b0e0470e41570f85edd16783da73f1a39b4082c7d81dc76ab1fc775a23f", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "9a6cd2c53c6404d5b45dacbc7a976d49f4f665cb0c2c8abb7bb3d718c32f5524", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "077d19d8d989f462447b2a8da31366b589a8e34ca13ff56102dcdfed5d30ef2e", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "28a07599f2b1556e2bd538712d140b8831dce9bac801bf442935feae618f0592", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "3990829a79f19fcb13707720cb6c904b460197f18e138b9555aa9b69648d51b1", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "c8b4cb6acba37a5298986ce31af5198dfe4f3e56aa545912ae7d9f15041ab63a", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "3990829a79f19fcb13707720cb6c904b460197f18e138b9555aa9b69648d51b1", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "c8b4cb6acba37a5298986ce31af5198dfe4f3e56aa545912ae7d9f15041ab63a", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "deecf1730d1abd14bfc25deba2ab269619d4d6124bb6d1920cf2696a720eaa05", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "00d5b08fda7ac5394838cd9a1ebea7cbdac8d43bd26a3883a64feab2ee61d8bb", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "20ad0fb96fc48d8aadedea0b0b24c1b53dba4b2288426d6262f68414a2536459", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "7e2696b4745569f2d24bfab14d43fbaa1471eb2662b4f848b0184c7248911823", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "12edc3735c1a2dac329ad9dc6dd0ffe3df58bd75696bbc6ed68913c5150ae676", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "1555ec495cddb16e5cb6de8cdfb652013dbfb48b9c081d30b52d304f8aa0c5a0", -"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "084b4786fd2bde9ffedd754376041ff7d3b6d1c2dabbe1eef2804c9ec0b2eb26", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "4245e03212eed7e78f7e56e7a3d6d208abc5b7632ac440d66d0e1345a150c9a7", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "39a8b20468166b5d8252d4d7f1e448eb55cf4ff8f57d08071dc3a151ab6b72ad", -"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "07b432fbf7485c22fbfe9e79e73cd8e771e60cf5264b7e201f2b3da3eef6f876", -"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "b46195463d98243e9ff63417de45d64171eb344e8136bac83c39f116160420c4", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "bcaca805b9da0d4836d8087ea65ffbe14f81f4540d30e269ce1e36574de4ea6c", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "e218143cba28460e9e194165551750658386ca81587f2f32c3e41f248dc668cd", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "dc7cc5929377cf9710b0126f0e1fcde7a2360eed82766dc85d27d0eaaeef4c49", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "3e488a0bcc80410820fd3b03b7afe1eafbef7012db0882147d6fb76e07c8f9c5", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "fa170022dc5d97c3b668b1ab7bdd45342dbd07e4826e636672bc80f490695e9d", -"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "8818368acc817667c31d73617e18b769c8d70ed149432e8efb1194118e8be0f2", -"T3T1_es_bitcoin-test_signtx.py::test_two_two": "79cc8a009c706c6895f78b7427e3061859950c3fa00590a9f672c0c5d022553a", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "084b4786fd2bde9ffedd754376041ff7d3b6d1c2dabbe1eef2804c9ec0b2eb26", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "1ef15319fcb5e00aab11be6feb5222507a390041aac9a8b6ec7ed158842be4ee", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "ef7fcdd1cd77ead26718b92a51e18434862b622bc9bc5b5ce738f3a4dac27339", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "413ee88c1fc78fbb22b92144feaf37cc56ab1a3afad6d845286c59fd2b13b33c", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "084b4786fd2bde9ffedd754376041ff7d3b6d1c2dabbe1eef2804c9ec0b2eb26", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "4bfaa67856ae1beee2ffe732e1d58eb089435703f388b4f86118bbcbbbf53ed9", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "59334648e6d1e4553cbcb56e1271e8a34920ceab2cab91d91cf55a71609a8585", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "038c022b706e67649f3ced6ecfbaa7167c460d232ca82e78eefb9492c0824ba2", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e5ed901df270702651a124fd625be2e360fbfe81175d93d4bfd05c10a6db4787", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "4bfaa67856ae1beee2ffe732e1d58eb089435703f388b4f86118bbcbbbf53ed9", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2a71cf81d3eeadab8919a09360df94ca99943b23c5d188ca8c4aa150e46d5ddb", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "4943a0b9bfd54871029d75b557c20a8b01d00cdd4937ae790fe9a3ccaa7e7c73", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "5f61ffb9cfabc18719bcb559744366b33e551bb10766b29381fa93244055ef0b", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c07e4fc01048924fce568d39839ad444ba77c5f0f1be51d1fa311811e1889e9a", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0f5b34b5d410df0bba63e447b24bc7c0e054e44ebc1188f288cbcb51b68d5627", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "710ea44eb642e763ec4e1b0817fe7504038cdd11c3bfdc31eeff55c2a672e5b4", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7fb8b89e88cc07019f0292e948c1ffa03252affa1435746ef598478fd5e34b56", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "77796388d0819c4ba7d7234d3c59944454c21f886a98ae4c6c49974d172bf12a", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c6a40195f4d510d34e6c759bd0107b6b55a031096eedfd5c1ff136333793c3aa", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "8d089fbe440b0c00b959afd37cd074350feb78b52b6b60e93efc41b9784e9965", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "5a141625bc0e65a0293cc0370de2cd8c6d9242ba7b8eb30503fb4224fd8d622c", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "4b5301d08a2f04c35342356c2c0ffe8eb68de6b90eba2dadb504ebb6f47425dd", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "e2d7e7b2d286b7c4139388f84d05a760c9571d5d9842f066539238f0b0178a11", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "62a14a9d1bbcc092a71962c49b7d7f6e3ab5c3851ada783d8e2d88b0dfe2abf7", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "e2d7e7b2d286b7c4139388f84d05a760c9571d5d9842f066539238f0b0178a11", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "62a14a9d1bbcc092a71962c49b7d7f6e3ab5c3851ada783d8e2d88b0dfe2abf7", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ab2f9149d885df57071e32682546f9447a9df3667b5164d317dbccd869b66ff4", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9c176563cdc9af0326b9c7d66dfc867dd793245c256792eb1b836626ebe263e1", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "f083198b2bd78a3d68a00a140aaabb3a698282934f95c7616bfd21b0557f2bb6", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "fc768d22cc63922d63f52e461e21e31551ac12670f61fc84467a65bb158ef373", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "6f49525645f7f3da3646eccc20a3695acc4e23ad06419edd3c291e1ea8f3b967", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "296078c99fa6139ef94499832a212cded44bb75d9c3e5fde55ac59e67646aa53", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "d5eaf7d09f7ff7a7ca4f5b1c1e52c03a4142fc0b7be86b7ee155eed9e035f211", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "e640aaa19057049f3bfd8049ca1478c5118478ac0f5e36565e32ed97347595b2", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "0297751ffe3e6a7574535a68ddca41b82d08717e4ed2f25b93241533ab8fa30e", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "0297751ffe3e6a7574535a68ddca41b82d08717e4ed2f25b93241533ab8fa30e", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "0297751ffe3e6a7574535a68ddca41b82d08717e4ed2f25b93241533ab8fa30e", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0297751ffe3e6a7574535a68ddca41b82d08717e4ed2f25b93241533ab8fa30e", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "5cd5f7adce28236e45b8112239b02c58d03cca2142880cd4ebc7c5295dc8447f", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "5cd5f7adce28236e45b8112239b02c58d03cca2142880cd4ebc7c5295dc8447f", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "5cd5f7adce28236e45b8112239b02c58d03cca2142880cd4ebc7c5295dc8447f", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5cd5f7adce28236e45b8112239b02c58d03cca2142880cd4ebc7c5295dc8447f", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "2bcb6031dad6b981e5e85d480caf235c962ae559947000059b0467c981f38127", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "cc2c593b57a0e443b7c31d01a62b3d64582d8cfb07180312701b8083ef4a17b3", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "e186a8189129b0709cc6b119485699361231017bbb82b378778b710421b18f40", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "e186a8189129b0709cc6b119485699361231017bbb82b378778b710421b18f40", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "08f485095e11115dfdd866d28232439e44c0691679518118cdf725646044f1e9", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "a9b15ef65fc883e50a07387187b1a49c16cb659e9adf0bf5cc96cb82da930cb7", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "76653655d3546cf21c347e7e51a8a7a8531c77e800a4700ca13f1823cd1c593c", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "08f485095e11115dfdd866d28232439e44c0691679518118cdf725646044f1e9", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "5c6965eac49bf40ac0acddab0ea3afc0ef01c9a9c6a0eb5cf7e1505a273195e3", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "1db369bea3f4a5a8a4c904b3d97ca20f8b2344d17266e223b0aaad7e21f1059b", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "1db369bea3f4a5a8a4c904b3d97ca20f8b2344d17266e223b0aaad7e21f1059b", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "1db369bea3f4a5a8a4c904b3d97ca20f8b2344d17266e223b0aaad7e21f1059b", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "17b11e739e95963f65f296cb9722861417089de47260aa5a5cd53e358d17f9ef", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "1db369bea3f4a5a8a4c904b3d97ca20f8b2344d17266e223b0aaad7e21f1059b", -"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "b5d37ad5a8f98a3ed5785dcd67d40e90ef12fa15b2fe19b9428db0c9491900a4", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "6dcf35eebeee694706808123a32744d2f524998bd7a4f0256650d9644581020f", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "e86c69d70d9b6e01344f052220aa757f937b178d4bdc6a10f6da5a8ca85c3905", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "1cefb875c3a5c9803550e02caf6da6e2db196db75a3dd0860d4cba0f686545b0", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "e54ac8aec4f3839b4259fdcc7d99540f74a2aae4e9698d10b84af6e2bbfd2346", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f30f2944e93ef3fb22343aad6de31786ef9c3f59080e931047722deeb631c406", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "b1562798be74739b16270acf49c398976f3ef8de473a923ffe1570746f25bab6", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "805fe046b09d3b5d4114c1867995f9b3335a114951eee98d85c027348c9ad685", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "dc87fd4204e7118e26dad4bb9b92e8d8cdb5089023dea0f568c11a1f89cc39e3", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "3ff7b9e28792581e49fba60bb962bac8a5001c984b277710522bafb1408c82c6", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "a8c2d9a17f8bd538fd998889b7b98a579b244dc4136ad40cad814c11a15ba736", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "35d81745d146c61e6f3e9204a856dbd3f0e5b8a2049861036050e9f5d0dafd98", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "22b50c2afcaaa6157c535d0716d932bb9178bf2fdca2aab5eae7f6a8e3cdaf4d", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "0083a87238e3c3238390b7c7703b5576aad17bcc3fe5e180df1d8fefbb0745a3", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "4bfaa67856ae1beee2ffe732e1d58eb089435703f388b4f86118bbcbbbf53ed9", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "3044e8b46c01ffa3cb84134ee73caea70d14dccc007bbf69cad9c904eba994b6", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "cbbdc63f67d6b0c93e47c29d472cc186e4fcabcf3f67d4c746bec0e43bc7319e", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "109220067a416bc125ec7b4b538c0500f0f2140cb55003945bbcc9c0b530c09f", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "8492d606bd596df345ffc666a096df9b671d166e6f52bb99d7faf0d8cde3d49c", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "b5abd1658f73ff9e5951caf9221ea265c8017263d1d6a714ecc2919b8c28cb60", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "09bfdaecce6142002ba895936a653c2f459f8e1ccce512e62d24f58961a5045d", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6d2d61cbd83f75cbdadd90bee9de61f70950cc47586601252f8f016a25e1549a", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "baa6800465450887869d1a14339f2ceed25fe9fa35182e8d57504848a44fc887", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "39512d55906288d96efeba92fda17c961b02af77c20b755397015564bc69c08f", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "1fef5252669102745f35841039ec73cef10924e98cce721e61b9db85b7392697", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "afd4eb73bd8387e509a7b507bdfd92b2aadc8e05c59264fee30b0724b5647a6a", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "71f3e5eaba793dd222b8831d1d194ba335147a1c56f50babaf7d69e54991dbb2", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "99a075597b0d75fbef20c8371ff1003ed709e981ccd0e03bf0d52e01ffd2afc6", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "ef30426245a65b9b1ead841dc76e58362191b73ccee011d88c563f488fb48283", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "5fff480773f51cba71bf1e1d6f8cd9159e11137d141ff170f8cfb41f3da44aae", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "b5ab029e781cfe3bfce8c22079b1f2efbd9e7af31cbaa6484ee99ad41e5fbeea", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "31096adac12e7baaa595e4bdd269927b8e95eceb422e1e009796518db3612f1f", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "fa00dd06f9ae7503384e09e8d477d10158fe271b5caa2521074bcb69b70b95f3", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "bd304c0e5ed0508614fc4a9ce9a16a4da95ce13ddfee63428a093cfb8a7f01de", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "bf8167e117ae08235a7ac1eaab8f3daeeae9e7c49fbd1f8625e9df03fe3e36c7", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "5cb1ec457b415f0851056f9fa7f75d5d51cc8707093ea024710c5e41cb2fe770", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "e95ffdbe64277c85de25fd4f13f3be1207003cc6f7b2abdcf94d75454cd13771", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "108949b23d9bf58186afb703a167acd59a86f7f1adaced28a878886423603acf", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "8f070280dbbc1ee82edea2bb595e61079f8081c4895d84bfb7b43e46e97cdb57", -"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "5e5e27f2baad6a28d2663601ee132b99fb2ba6d82a29fc05dd0189907fc57d11", -"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "1d8ee62ae1d62493f468e15071fc0a2195c9ef6b87b56dba50aac33c8b3dff47", -"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "6819141617696b0a9b0cc9931d896b79a0c6574b5e7bae611ecb54bfda7a13aa", -"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "9eca551b79f12b016260be6e12b95fce9b4195e5444a9998f60b23ac2410c553", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "dae9faa990792397301ad8203c5e88df38d0d108d90629afd3cb45c02f1c94b7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "755a8f228040389412a3177d640cd29d7e357decf9088b405d46ff4dcd813186", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "323c86d80ba7dec6b7e1f1d2befa7c07461f8812c1fd53fb545318e1a04166a1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8340633e419738e1901a4ae655d69e8c931c58658480b6b4350fdb16060aedd1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8f8713259de6941ec3f9b899501814e2fb17e3cc26ab6b0127ae27205c83c753", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "03263634b3e58c924b3260c3ab790efda608626d9f39c4f4aeeaf92099dc35ff", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2857226954c35189ac000384bcb98a4486054db297c13ea87a80cc9387276bc2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "101ad992f85632b46b83728f13b61af21503095268829d55e55e36aab5b3d90c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "631dc66d4de46909a26e8aac320508de0a8f6e9fe537823276e15ec5234b938c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "149ceec770448c1bdf9682870c8183e4d7bd67e7c07d92835c4b32a4a0270285", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "341f1e43cf7f40f1a5477d55e795ecc7258674d6b88ea59a0746ed7096ef4d1e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "25c1c77780d29aab6a11aeaa82bc4904e3f9cc8e06cd541b166da21a6a89c180", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d1bac517d1d98d8ed479c195e0c827c6b3aad37eaf5bb61f4e0279d23d173c6e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "a2ea1ea90a42eb0d067389b03ceb87255d2fff432bc6e5fce4d01bb9b0fc47fc", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "03bc04a852201296996c710bbdb472af2818b0a0f0f7e1dc41d6868e89ffd68d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "d4b67e04ff95bdf0bf8abe5df8571e713db5c6002186f3f9ed682b73057db415", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "67bdb202d6a41ef7621a788e1c0c1238c14fc18fcb66f19ba4cecd37416fe519", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "00a74ba749fa08f24261eeaecc7a5466412913a7cf58a63c1ac9982dc920ceb8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "1b6bf1e473700095eb69b9b6ced0f55213969b854ab89e126bb998edc9199478", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5cf194fdbdc2fd9e60882606f984db8f774e6fedd62ecf44d6fccd3c1612ae5f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "184609f6b144118a5e8b23d77693b2d12838889cb1bc52dfd6422baa188027ca", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "cca62868e8f3fadc61e6762245f74282921f7a8f359e11aaac9711afc41fdafb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "1064c0e8dec80ac29b4e67f3038e4851593dc876f85783c5dc114354c44b936e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "af997c8f32e8672c7a4aefcc4fbfe0e3d92d2a5387331c51a5777fa2cb3a1a9f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "6dd9440cf463d4f4678f52f56bbc508b471315f5fd9a39e2d60711839cb91b66", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "21b8c3896abf71341bab2c4094c062ed487a888aa7a1a7f02e02dd262c36d5ea", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "7e0e3270656715094e40c1f830cb454d198dd552504c71f5bd788647ee4b9a0e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "058f729907a805610710adfb4e38c696f8eb83164d56b8d697ee54eacace0f01", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "41194cac3e56cbdb27c6d24b398692c557e7f3ec232916b64ed18ccd6bc3673d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "9d3ce91116e25b51d933fe4c0d9f5a75ace47a81b271e4cffbf75648450c605a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "16dbfa9ae7d9d5fdd6ef26f54063434578fb8c99bd69455bc1fe9a5a343d2a84", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "68d58c621a718625beac4ec9006ec09068cbc49a5430278ff7d7844e0de42fd0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "41694ddce75c32c4a813543b69e801472f4954bd42178307a112848d976fc44f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "1ad36ccbba9d9081fd109223e9f726065c049df2268faf948d4b08bcbaf979a8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "3a6308802c7feb6a4461b079e9b2962e1ca159991094b46a43c9992ed36c57d1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "c265fffb5d8d87d0629b804eb934a962d984ae8e6fac6547d208473cae86e031", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "18d86256f86edc88fc84a63429763829af5fac3ec82e8e25adb196010dc79e47", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4e149d2f2bfe46e915d163c83598d1a3063104d3667bc233d377e1ecae4544ab", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f0e8e568b4dbf812137cbec3bdabd6c4c2dc273215e0fe4c7eec09dc3fbf43c1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "38726d077d4b3a7283f50f5ce0c03658f0c9a9e1fc1ee042a906f3497b4322e5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "01b5c91edcd1b25315a5b5d4016cb67653de0fe7f42be234d9838c5f30c207bf", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "962793af0a786450ea3e3237dcdecc6a53077ea09c2fd92e8772170e39752408", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "283d3b945a4d326225c8dc38a2b35d58c7d087042652c99f6418c5093a0298d2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "6302ad192070b6ef53c3710091e5ad175d5037ffaf38d11f3bb5c74307a566f5", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "83b2ffcac42a364a2b42f7c816bdee2da18b617f6a13f2db7030a01003d2dba0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "526ca1fe12ce9963b44330098b7287eb05d448218c2e924bf6707e9beb61b26f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "947bd8f6c47b70da3b43f60c893ce6168620c62b6c406cef0eea3911a93881fa", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "52a3dee2b0ca59662962f8bf9aa0ab7a09b2b8e3b3d1574b8dc4a330502c4b7e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "53e31019413c872a074249a1cc32f9d58f4f95f67d113f64656c15bad218edd2", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d031651e74bc7ef0535eba1426810cc12bc774dedf282e41859f10fb31a9fa33", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "3556b538d44cef4012296c26e37f44ab4ed8f0343a022fa6fa74055632141231", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "dae6e436cf97812576b788aafe892cf12851905ff2bae7de6a760b3d2bda1091", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3513f0420ccc8f232d3dde3748ed209be6931af5eeedc32728c6bf3e3b479dba", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "d0bf033aa9d594801eb2d672f73223cd47e99a6459064e5bca0e250d59651068", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "4ae1a5e73dfac699318d667682e579f2d97797ffcaa3e6def48b99d52d57cdfe", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "cb5528b53a39b3f02da39a2e355d374384a59f34a56189b40c8b1ae1260c1e1f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "160217b86934c2ad7209f27cb26d2e32f7e504a1258bd2d62a29c1d97f50abdb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "ab202f39c26c38f1f14f9b111abfb447608ef186b3d6e8a698b852def2e0789d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "929b0bee74a2bf85fdcd3d11866cc8abb3221a1b306e75b3032841ce21438f91", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b26150dbb82eaab4d1c1826ff6530f8e77f8bf5f16bf7287d16a4c829147fc69", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "7acadf2d2b629afca12651364adc154dcbe0a9a41e11d81982892e94d1e4cf14", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "05f72b0c6e87e6b47283c549f80e4b702313b192c68588d3363256179861426e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "468c89ba1587550df7f1f8d861f1b665de71f720baa4afecb6cdb5c774b09152", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "556e721866c14e458f3404d3f6bdcf063fa3960b77beacacdf59265e6523cf5a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "f062e21148c649b5026a7e6d23a903b7c3d48631389a15278d4aa08e8bcb02bb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2b965f01e60e168dc8a7a8e1ebf4d7cc3b0a06aa563b6e82abc5a03d72f348b3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "2d1b7a2f0601ccd91134c6636d9cbd589199f62a3ef4a59e96469a140994eb5c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "edd096018c3b086f5ea62084971d531b1be45f0d3efeac1c6f4d68ed03a55bbd", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "c4695037fb8fd83799b8211e6d87fa93903964cdfc46c5d34828795926c5cb65", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "c4c13bec3f20bb4421e069b55f14c4abb1e42f59c54dff71ae1231b2fefef51c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "2423792f898d7541e562fd309af1504501e6a3100285d3d3b636dc3e44cafd32", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4a08519ead1d48b086e221487b5d9cb1eaf00a5b9b86d691552323f6b8677a9b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "5e783b74bd51f92e4b4b1e75949a8bfd7ce0852cfce542b809996bf89b5717da", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "a7fa648043c8bf406f67fa6322e06b3272f6b99dcc4b8c024c27c1e515b27e59", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "f1ed24e411fbd03cce9a73b482c44c8a1f291e30f9d5f5658c6a3295fc4b2232", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "75558b824c4d6cba53484234bf1553deb4e6f1c28c2ece758d93a543dc31aa91", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "bebf9e0bfd26a0d7f9cba1f18134e841ea360bfe5610de14ca150457d73c61a7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "56bb9aeed773255909679309d17e131fa09afa048a128398a03ef5595fe2fbc4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e43b13ffe021a11103d07b9e95b896fd2fa31698b89c2f195dcd1d865112f9e1", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "64e7f06bbde0499ca24525c8c8ceff711429fca0422e2a895f386aefbd02b97e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "7a4bd8d148288bd7f6b3ac6ce94d7d05d95dac2f35168b35956c6081af8d7cbb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "b3e25e8703fe30c2d721679807507c76f548a209918199caa01824d92dab074a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "4c871e7ee2e2d538fad7a0e75c86834dea11c97d9ce2b97a056294b6166cf60c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "8523228cb5d20c3010473410fb13aea8b9aa821e07e648790a632fe889f17270", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "914372605e6cf71ba26dac0ee8d222049e56338a6bae9a7e13eee073788b567d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "bf98b4b8df02f24576fd739b3f68029fc8adafdb6751bc58fafc124af66ba5ed", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6933d4171739722afb7f98355ea8b330832047571539cd25e62d7d83643ad2c9", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "677f7918c37b3cdd01ee93aae1036a6acf92510c2591ba3e087359c80ae9da70", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "93054461b27d283281345fcabe8cc94fe2d923c22d51e7ebccede22e028454a3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "149836334bd17a3650448f23dc9b54af49d13275679430979c4c817eb73c37f7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "41f3a69c6d02b828f29d44c156f33c3af4ed8d298fc82f2222ffbc39a4412ef0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "4e3449c9fa8598271e942740c94102e039baf07c865f70ae990227afd57b5e5b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "514ee8959905117e178c1b3b84633dbcfd045806247c3fa3caec9973d0c04a6c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "5ea180a1b39f681dce2789dd617b9c6d099a8fce76f3dd1671da40d0f7918d8c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "8ae089d8d451c658721e22ea28917f0e9dfb7dba4724ebb6c32d62d30e82e098", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "435c0f848f3b2387d9223069c6ffe88901d9f7ed9174f1a90422305ca95df4cb", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "6222f5dcf29680a5c14d53a5783a23e067de604829e7e9a8dabb4c8c327ff9b0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "ba4e91985ea7a9c83c6883bcf2d34179a47e87a6950067d66ced0d317eaa49e4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "face901e0ab149e057cc239773b91064023c63ba4371953676ca1bac68234fe6", -"T3T1_es_cardano-test_derivations.py::test_bad_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "2772581a866908903954629208cad44d66797f36120095868fe0060eab4f8247", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "453136b9cf03c92ee3295130c559043410ccd680e90f4612c692cab77677df07", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "43507549a1f29a612b30828fd3de42c68e88000d5788e7d9874be448bb22b541", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "48e04dc51cfa296e774b69fe5104353c02549e5980e8979c98abb8978d27ca0f", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7ffe3b9d89a44e21b922cb746f409ef321c253e7adc81c7f855d0c7aaad1a5af", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4dab75687dfbe6faa61c50ca3212af789bb605e93e334e287de89e38b846d244", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "9e3772873e2c65603bcf535d0d1b956f8bd0920b497f66386090949b8a947fd7", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "ca2866b58b59326e9029180e79e63c0d7140f13fb48ff0ece30473b5af2a9d29", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "f8fb895a7509f70cd2b1b5fe30f1169d23890f185c6b2cd53765ee698dcc7d90", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "4069f8cd92b007dd25cd35c98bb9706d6541ed03ab4b78e1226486f2a9526d22", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "3beafcddd040e4ad6f0a885cbed274fe84b9c60b3feb3143d93c3a4500476281", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "6dbef35ebbd763811abeb9916c166b6873fe3df9a95ef2d29c807ae88026e510", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "7542d18ba400188522d60857273adb5f32b32e4e33e362af984fabd7913c5601", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "e4c5ee54eecf937a89898773b37db54fc01ca13f10c25397b14de8151194db0b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "7b62a982c272aa46df0200495d9bf938b7ba0d383771139ebb08b4e601ece7e8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "e0a1b8230fdf38dc39b64c64a9c0161ac9494b785a56f9e4e1e993623dd8dd27", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3356ee2004523a31f463eea52698a879e2ec31c2db221ceda4575e4f620c2158", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9729ce87060e5b63bdf38c73a155d7162552187fb7c1de6554c45e3d0a45c235", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "1e378c4abd9cf31030a79e4629c881d8353d6ce7659b28372c5ca5af3e6bc92a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "4ac5944932060c456a6f095f102fae11dd2bcbb06e41dec8a13e452b950bfc33", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "59a7ebd1232ad46994b7647a9bf2046cf29e4a1830dd398bdf32aed94f7c822a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "1dbff93298705320d8356db5f50b4df7a796f1f64e0dda7b1d3a68cab1a23074", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "b158d74e01aea835bb3451d4cdf63e81f689f6884a2ac86e1903fa298180139e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "0ae121d07fc23cefa9c2feb2b726462670def90fb9da170e2bf7fc3b930fceb8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "7d166d5a83216bdea97acea1cece1b4a17f9323277f4e6120a2995d21b51417c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "7d166d5a83216bdea97acea1cece1b4a17f9323277f4e6120a2995d21b51417c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "00d55fa66bb66ec2dd6e57d8621de37f4824c0d5bb048d0e131ca2e951df152d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "a8393952b69280c6a0d9e0aa05d231e5b448e13a4e8095404596c77c3c664aab", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6c5e4fc010c4538e6edc0410db88804a45d27ca59edc8b7c845bd562cfc902eb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "be73cc90fc2198497d19f980957db9d0181ee3373e26cd27d6a868d3428b4951", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "b0b79f9b57fdbd1be9d9a6c9180e53e85e23a989edba782c412d330aa51ce63f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "b38c35897c82d4c1acc7e4a6651bed0057e68a3270b012d00559c8bb67953e55", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "8caea34d0a3b658944b3d413d44dfb041dfbdd1f752130bf9979733f057407af", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "6d5fa74117b04622e67ab186d8056fa1637ff3ce29dffee7d0557b8707a9b12d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "18a7609ba20402307998c7ed5ea3ce1500350b1f80cb7fd555e49b6465b5a127", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "b0b79f9b57fdbd1be9d9a6c9180e53e85e23a989edba782c412d330aa51ce63f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "b38c35897c82d4c1acc7e4a6651bed0057e68a3270b012d00559c8bb67953e55", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "f3ffab71418cfdb6ed2aadf29d431b85884a4d28b5ee7d931da8adc739b64c2a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "4a540196684566461e6d2cbc3e90304236e7f6d6148e099cea1c2d3b3057c19d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d23e3229f38b6edc4500c0157b561ca3339172ddd9ab5f95db544ccfe1954bb8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b96868aff7fe171e0b712d4314721f4db17ea5ddf6de3af39ebc3bbc48902d3a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "eab68b7e29b31f55b02aa3d16d00aa8a41635ba0c573f4629f8f9018f9562817", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4abb8b401d7488953b00103de89150f03770237abfdf0df4711587598c070ec9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "15d7221c6c7375f35e15d38bab197c5106f062059df0fc9c2be83c744411db90", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "a309cb9dccdb2cf46d252ba799c89d487687ef54b647bd0598a927aa8599eed6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "8a1f7cedaabfd46662b15bdc94e3319d5e6990aa493fc295eebc8a8bcf63f8b1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "1c38fb23e897482649a01add32cfb1612727c81da300377622db43ffa2d30235", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "9a7db118577ec200186928655782398426ea9d260f2ffd4cfad129f0365654ac", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "a2b1cf42b8f03d36c784d700e87ce7ae670aeee570e3b5b8351a41e733c1e64a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "d35a4511badb3712817b065f13fef3a05c161bf085825e3e4c4fb3e836937db4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "6a362f32b67cb89384094537f4e5369a31028894bf78b4cb76efec24de89edbd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "ed5c96af16ce928d40ce9c36b60469a92a20cf45597605a9a873c95312e545b6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c4d079d967fabdb788508b9843de557943a5f4939d445710fa1d25cddad193d0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "a5922218b23bb198ab24d6825f17755d97cee94a35a74bf13c63b01943265e1f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "6f48b5dc53b70bb66582f38ab314b42aeff63d382344712ee8c2330792531022", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "766904e54d142c4e5f283871e28da02a9c176981d3e2fce1b46c2723fca35edc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "9a0932b1ee23887655a0006bd9bff6447eed14c685b605d5626483927bc756d5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "32c3974679c95c3be4db19a793a9c96aa74c290316d92109b6ea26c91366bc2c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "a686dfedafb8696ba798f4884428a701ff37226e576c80fccefd9079c652e801", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "e58c8d2ba0a9663672f40de38af82f5f29aefb1a0e8ce4e89cd05b073c94ec09", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c0c0a53255c1a93a99db01d5cac19c8287b5158fc9df83201ae567ac4915f3d0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e10ae7610cf11d5972b21117d5ad4ddb5e027e521b4d617e5736a295701c229f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "195bda3b46d142284cccb45da1fa99f1152fd293f88b8f6dff0a0b1c944c3f25", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "15f8dd764d8108ed9f54c0fb3ea4dfe503d85ee268219af194dafac33d2494bf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "7134ca97713579590f5e5d59165df5a5120f69abd3fd7087bb17b9ee87f03a7d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "a8a4b2170aad8feb9fb2a737d971914a464fb5e5227c02a95e75d39766d6fc30", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "cc990ee1d8b83b30e531a60911b97ff68a8a492e3fd3891ef6ccb830e72aa621", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "377b472bbcc11d2c8ac45957f69327a924d5a6fa225f27c163876a7b5447a8ee", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "3106406098979a5dfc19bbea3436484453d53e9995b46d8d4aa995d392b6c5fd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "4fd621fd2a2ff1cd327c698eb12e79cbe142779be2007e048afba2089f152b5e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "6eb2a249bad3319b3ea961d3fe11184ba6b2ea614adba4baa88aeb754aa94f93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "588d2a688947476d9bbf9f7e9b0b28bce462aec3e2d92d42a316339172a73815", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "6ed751c4866e69b6e7f43c809f13a28398f7a7bc4e556c52cebc891a726efdb4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "ad43d8134e87b077531752d05c5989d23249e1720a074dd0004d6e00ca455db9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "223a9bc55f74699ed586e0751ca3e141d79d231bfac979ce58aa3e5369aa48ba", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b068d7f0f748db2c3cb78b62d2c74837e819edd10edb921c3399c5a14c877a0f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2deae30ceb3d0d015afc94a8985586b6d8bc10c47d3cb92c1d383330c1a6a48d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "dfebfdd399b440986c91450912357a3489c56c1e65e91862b76c720358186b36", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "ca9ab61e329f7eeffcc190a3ab47cf53b76ecfad5f7feef344d35a84baac71ef", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0d3cf9bb6b9d22e1729eff435680d1cdc2d98b176bb4dba58a368725d5a3a049", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57a22556104fa93d7497c07710d410d32b5c98714472858908784a00c6c3ef2a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "f5f36187fad5cd778fd8c65cefee6c2d4366ee010595352664582ea4e324c209", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "7570f5ce78e1231a182d0311d01f25060b068b72f77a0f2d8e6829b4a18b0df8", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "a6a7939183ad087704dad66dc07a726976645c2f9df5110d6fdf8a028e7534e7", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "c231a3c7c9e4c49dfa55d8845f9c0094fe4cf30755de13af40653ee4247c6c66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "cf8480f9ce920de74031ba5a059b28fd938821c0dcb40bcfdb94bbd23c97d357", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "36cdc367acdfd31ecaaeea732fcdd59b0f12ea0b04e1b40a07b4fca44eea71f2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d7cabe2d934a9b29a4a2c9b56af44d8829e1dec0801cc672dca63e35972157e5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "f8db72e167d803b65308f5c15d242462c54a94e304cd68cb407ab5db1ede11bc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "f8db72e167d803b65308f5c15d242462c54a94e304cd68cb407ab5db1ede11bc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "83d47aa0d5a242c8e08e45745bad36d6aaa575347feeaa84524f96795f030037", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "286c69bcaa7bfe756245474c259f06977edac2d1705abd6fe3a7495c05f3e89b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "286c69bcaa7bfe756245474c259f06977edac2d1705abd6fe3a7495c05f3e89b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a33ad6421f91cf9d2207d9b5e040916f23dd1c2822837ddb84855688b02c2c84", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "5576275d8203ceaa6fc8c11a96641154902a2cfd6fac71a8025c04e862b40a46", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "93d75c6b0585472d50762d8bcbfb7096bad394e932f8a2ce6e180a06529f5096", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f29be4efa5e3d60741582171e6bb191d1643fb860af2fcc1588f00d55380f0e1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "e2602770ddecf902d97f32bc841930a39dcc2e77f9fe7063efd2ef5e2a3f2b65", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "d5402179f4c89776045e69d985f924d1414decc8b010b359e3a434a83222efe5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "e49a86d6101ea5f78360d7691d53cf121f94f886db7114a760e6f3dab539eaf9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "5b17bb7f27f2899d92cfb71c51d61973cda924af850ec7e4ac6a3df9f3649e06", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "4b66a704922a09e7c34381fcd92beee50cc5a4d16ae0876c2c562d58db670097", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "33b979763deeb12ecac21d1ad0c5efd35ca5a98bdef22adedccd752eea975529", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "e4c5ee54eecf937a89898773b37db54fc01ca13f10c25397b14de8151194db0b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "4ac5944932060c456a6f095f102fae11dd2bcbb06e41dec8a13e452b950bfc33", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "0edfb82899c670de81a6e061752e35114ad92a8ff805e5dcafd8cb5f298018d5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d9be5fc9010973a8861fb7e9856fc07aae6308c8f81c3ca27b503c630d8de830", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d9be5fc9010973a8861fb7e9856fc07aae6308c8f81c3ca27b503c630d8de830", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "2e37a34f42cc8e60f064ca55923d450b6d6426167bbf02b071037a3eefcf1809", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "3d4d7907f8ff82a37e7e2caeb9fb1731bbac56fc965ea2c35a49ee6f1a73bcd5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4b717938453affaa1fe8fa05d55a62f3922d4f6d47d8028edb3de4ec0f1f655e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "20cc4aaab040fec3828e3a3c7711bdc9f0efa75d7f806a5120b0f326c1494ea2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "78c9af35083f5c184061ae4320cdeb940ecf5f3d5b8fda80209687a6f0d5111c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "56197bf7c40dbc49b003e0abd06723dd8abcb2a17ace9b3f145cfbc988dd4b4f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "bbede4ebd6b9b14272e8128ac0baf881755be04ae8a6a6e671957b93ed9f6c67", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f7b54879009932f89580ccde8d7e05ffac22af9cde2f7114463b427838b9cb94", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f7b54879009932f89580ccde8d7e05ffac22af9cde2f7114463b427838b9cb94", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f7b54879009932f89580ccde8d7e05ffac22af9cde2f7114463b427838b9cb94", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f7b54879009932f89580ccde8d7e05ffac22af9cde2f7114463b427838b9cb94", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "78c9af35083f5c184061ae4320cdeb940ecf5f3d5b8fda80209687a6f0d5111c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "130de74b48815346959650c094a694f72fc7f42602f3138dda4c4fe4022838bb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5bac9c9117a5a7e2b2192d8528e6848629c162e39d6eb724b15c69a028cf5a37", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "8afa503423f037974d63a0489df877ff189006e693d28667aa7714d8672c287a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "c4b441555836c43af85dc41d7de63a5fc5c01202f27af7a6d1e4dab8d47551a4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "3c17b14a7ad7108df8b2d469b07f30618849d2a63d1adf92220dd2fb5a5e2248", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "be45276c623bd72e6d7a40f0b9d73d38a3ccfe43736496c55e33c158107e09d3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "be3303f5cbf6b3b70ed871dff39352ea327438b8aa6af36bfbc2e000543c445d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "e19ec62cee368c049ac7990fde8b278843a66abcf19bf3e5520a38ab7737e681", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "cb21f84ee98bcc3c84a99ff29d9252e4bad37dd2f191feb6408ad21a604af16d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "5d64f3f5e531e3a18aeae8ea1d05def868c2b9a0c2e088e195c2b7fc2fb8ec9c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "f8eb21de2830d02f15565fe467a5df294ffee931de78cd159daeceb86bfcc1ea", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d9be5fc9010973a8861fb7e9856fc07aae6308c8f81c3ca27b503c630d8de830", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "41ca1a11f7372f833221bbf661f7b07a7fb0a08aa3b3779a1cfc571d511640ee", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a00a338b33f741844f77465fe8b3accd794d2c0af5192d01a82ed8b1cf19277e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "07d62de605044cac7568316d059295d62d87bb4d0a2bef5e505ead67dba171b3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "211713edeefc7718418cffb778167e8f6ddd56863e6aadc2b0fe0c10ded0e791", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1de1a2c68731370d35bd5d2795ba80ece2b6e33722711d2efd6b01343039c665", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "1181dcac2dd6833921da94752e965b612281c82df74bd6bac8cc0d4690ce6540", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "87be58bafc8439d2085590febf6a8cf8d562fcd259882cc8d59bab31b1df8a83", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "7e4061ac7957de94d17bf9daca5daa1fe5b67c976cf039061e6ee66f8e324328", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "75d48eb579180135d5044cf5af0281ae0713f1e15cf0b1c5cc752536eeb97e7b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "5f28563a50e78bc171f36c24899300377c05c421497d601258aefa9310dc025a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "b3e1fc5ba6e8aa3e7606a895f32c55a3aeebc34e70be8e997abe36a61156989d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "93fe561aa8c436be50687c7dd4e9cd31246f96ed36f7c7d641036c92d52880cc", -"T3T1_es_ethereum-test_definitions.py::test_builtin": "6c4cd61eefd969e99872c951e891e2de258e82be5b563b5732c27bf2094d3795", -"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "5ebde2d157b625ddf0dd55b6cbbe14aba5b40d32dc42a8369065036e93856117", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "2595a2dd6bc22fbc47093daf37970762c45f5de6702231d21eb1f11dfee8d5f5", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aa30b7a7dab8aab4dc0755b30faf41bd2b47e3f51bdf80787c00b967d7ba8c8e", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "37869663d068e341490bcb1e1a4df6b939edd21ae6db546a2bb52c0e044ffa59", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "bbc83f664a31b1e6a9aba832dc874a9686d500dc20f43e0b9124cc42528ebd20", -"T3T1_es_ethereum-test_definitions.py::test_external_token": "61eb957fb65d4ffe38f51d4435cefbee17615bb941da27d45bf3c848baec2fc5", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ded16791df1aeea3ee25ca8921970d6055e934d9f239f8e40d614d3a070481c0", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "0222c9dde20a685d34a5c36720b7f3e1d1824bc2028d9238d984eabda21e1bc7", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "4922e850bf74a0a7b0c52d3a373435cdf37ff66d02f29529417430369ac276de", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "c4a6484b3a24b2a40ab357e7f8d6d7f85d8d036f3810de8df87846a1c158ec85", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "37dc556c6c31782d1de3ef03a2728b41f82f8b2a2f964c16fb2b88c043e14f68", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "91c66f3201e6454341f06cb3d28179e0a4c9e7e3c12d6e08070b38ef5e0b9672", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "39e507ec31812944cd9fe0da89ee40c0280aa4af2666c38708ef4ba44b44b226", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b5c7f938cadd148293ff65d35cc7030a930ffe3062fa9f9a88a3eff9cc790886", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "6a252c9d65c7b853c067227d8d30548fd6b9331ecd1dbe3efcc21e5fce67557b", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "e30a555fb6fd54f87e275253a213829744a026f5a4196cf42a389e744f64c589", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "42fa9f4fde100e3b99f28afd74ea3b8effffb8e96817b9131dd99fb02a0603a1", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "0839342de80b51b5fd2533a0dd63ca5b919383e548bee9167fd513abbdc7dd40", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "6b23908e3dd7b30b0ef325bf68d2f16de5b0680e3d03322949362d11da6d9031", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "54518cf7676310f911666781bca19c5bcc06706e0e7cb3ed71e30fd1e26fc936", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "6e10996bab9bdce83b2ce1c6df4b7d86152df34cc2d42d7841462e0cf0b879b0", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f787d22ba08e0f47e065d99601c8261c2df8e4da6a782598723dffcba87ba24e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "d3b46fd3255a3d57df87d0e0efb376d1fc5eaa652f340aff50c4b17bf3eb6345", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "7cb8022e9ba1f1bbf02e8535627be0a21cdc65a2c45bccb7f6ca595e01f58e37", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "dfa8bcd9f62752c5b1c958c63bbe0324d5710c796145c72f8b704cb1e417128e", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "e0f634d8020f4ba2581895e3dfbc67e7f46b4c692fe411c920aa92bb01d385e4", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "90eadb63170026c0dc10a16c21383a59372d2554479f41aaccbf9bab1c45f42e", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0c8157212520a478863295ec44cbc8b1d153da0e290c26052a10a8bc61db4ee4", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "2cbce43791b4da480d5fa7e306cc2448bc25c1271bf45c8ca9ac01a0e19f5217", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "e0f634d8020f4ba2581895e3dfbc67e7f46b4c692fe411c920aa92bb01d385e4", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "e0f634d8020f4ba2581895e3dfbc67e7f46b4c692fe411c920aa92bb01d385e4", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "e0f634d8020f4ba2581895e3dfbc67e7f46b4c692fe411c920aa92bb01d385e4", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5b8f6c2ce2158e5918e7b1688746ca9b550a17c8e10f725aad20f80ce2cf0ca5", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "3b13aca88171ba364a39c6ee3202aa5da111a3d719dd50cb46e7d9a7590c3e71", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "dd25a2fa4750fe6e7784ac82c195098389d23bb64fee5c662e190d77ab9c2f57", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "71dedc849f727a57379dd34aeb6363193a799762498c5d9867b6d4ce2088bfb4", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "8138e99f7d1fc2de66c8ac7d751cf43e22735a80e0c7a9e3e1308387056cae94", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ad22f57e971fc0e6011a767b842158deab0c37c08647729a2c30dcd7ee35b268", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "981ce01d36a9dd2955b229a5bf0f69d8a144b4352bb86df7d27100ee579f4415", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "cf2321bf64244bed441eb2a0dc3c4a595dfed098566a84ecfebea276544d2308", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "0eb7b1d4a0de2da58eb11b1ff6f3b6d6f3074bc7448813e3b91c5fdb0224409b", -"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "f9c7e3db9a1c5163b002538096d163926503bee9677fa592480c6ecc102efbcb", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "3052d6165d817fe984164936577c02285f63f1aad4c3652eae1088c54c90c6cf", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "082515737c5291bf9b686968d4e470b5b1d53afd6c7dfe50581a247dfd94fd39", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "17901a7ca1d4caa1f2fd1f28f7f051d04d8eb45960d1f98343f823ef03d23457", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "204a025738823094467e56ba79fb7e02045b7a74d4cdf0f915d34ea5c8334312", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "18f70233d20f87ca774587d38f172538e2fb04cc4be0214f949cbdae35b7963d", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "658ed49ccf3b4a920ef68101bb77bede94042a3bfe210120795610af44395ddb", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9f59c08e848e45d339d4ee612a84bcad14dc9a28792382b783f3c9ac5c9e6b11", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "0833fbd07a8adb9f7086bf6fda5951b7ca71947a2ee411a8206c6838a521b82c", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "3052d6165d817fe984164936577c02285f63f1aad4c3652eae1088c54c90c6cf", -"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "46945c80b5ec4cdedf784efb0080ea3152e031e32f3337d9778afa0f4d1163ee", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "1f411381dafc7293248d1e5e553c3b976714f1215564ed11e131c6c524d47073", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "748fa424528aa8a557cfc2fe84802c662f4535a8eededf96bf582b5d64b3c10a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "261c6bf47705fe1b03d5765bf30a487feb7cdf634918fb4658fc1522262130d5", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "748fa424528aa8a557cfc2fe84802c662f4535a8eededf96bf582b5d64b3c10a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "93cf03d9c695c032e0313eb79905de59bb21405796772e00b30bc6921cf87252", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "93cf03d9c695c032e0313eb79905de59bb21405796772e00b30bc6921cf87252", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "da5697bda5a2acad167532b2c5a091040ae0adf84f520697099051a95c47554c", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "fcc228b38f970d8ab71f7e3068d1ac9d776b161a4eab912cdb62eef84963fe2d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "2ffa6c039ff02a65bf449a9e64c442f493d5759ca24450d2bd2cefa5d999da4f", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "1cdf5c6f11555db6893a67bb35e9f993b804fff296e5a9598642e0bf555f72a4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "52e5b5f689421ccbcda3699b9298d2cccc6032d6de68e7a7a15f5a8b3ea92cd7", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "1de14523158c5610083dab333aec5a44b1cc400e3636450cf4e754141747ff53", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "d35e7ba172f839ce6fb0977ae9f3a48628d4ebd2b6ae96988148bd6cefcb3fd5", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "2700cb3538f9a4047e8b8b02adeff2a491f66263da134ebe9da6ffb630eb139a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "d31788404bedf9df47d636d354513ee0b1dc3776bc9f7a463acfe4224be9d835", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "13bbf171914a70685a288886a856a7d79ddbd34d1391470cde4e0f7d5731594e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "8642812ee6effe02069cc54a156dbe2e5ad2998ba2e20ca916adb8ac814f0937", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "13bbf171914a70685a288886a856a7d79ddbd34d1391470cde4e0f7d5731594e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "8dbe8b6c0cd2e589ce8aa95b6df7a844c19b616f44d54f9de2d791d162d91b2c", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "8dbe8b6c0cd2e589ce8aa95b6df7a844c19b616f44d54f9de2d791d162d91b2c", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "becbec8f616784d3c894d10b6aa3ffb586409926545ca9a57440cca7aeba9193", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "71ed0d7c882697e306dc4e6e1649f5099e4dd167cebcbc8ec3463b748aff7539", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "74e9690de21e61371ac6b1b86a1c4e126c3c469e128b3b7559926fc6861c70e6", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "295940e1045a6acb4efc4931f334a5e358b45a015957ae71d5be7b1942497d57", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "52e5b5f689421ccbcda3699b9298d2cccc6032d6de68e7a7a15f5a8b3ea92cd7", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9cb31596b1eb447ed8bd33b409db1ed4592f816c12d8563e67bdda3483d3a313", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "25570d0b70a1a9314811cc58832eeb40a7da276db184f27c3d67056beb60aae8", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "6ab873739bbe7ff6d2527ec6898598ebd5714e4ae3669ed88efd0a8f532a4615", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "1de14523158c5610083dab333aec5a44b1cc400e3636450cf4e754141747ff53", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "da5697bda5a2acad167532b2c5a091040ae0adf84f520697099051a95c47554c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "7555098c81e0b64be812dab5dc5447dcc01d94c94eebb73bfcd9f30e64712367", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "2ffa6c039ff02a65bf449a9e64c442f493d5759ca24450d2bd2cefa5d999da4f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "c0873dcb51246c26306cadb3a0db8d6451f413c81b0b0b475e9e41d7db79450d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "6841150c710e64435bfd250e15a79a675aba4f0ee63987db72fd9e797bc068f4", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "1de14523158c5610083dab333aec5a44b1cc400e3636450cf4e754141747ff53", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9cb31596b1eb447ed8bd33b409db1ed4592f816c12d8563e67bdda3483d3a313", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "becbec8f616784d3c894d10b6aa3ffb586409926545ca9a57440cca7aeba9193", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "c491acb9cf3341b71cfb255c93bc1916541aefd2992082f42c840a4e4e778e34", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "74e9690de21e61371ac6b1b86a1c4e126c3c469e128b3b7559926fc6861c70e6", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "c047b1f6eb18998254e9fba80e65f80c1a2df936564ee4348fb68b55db121212", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "909043bb5f11bf396579afdeefd21f3b81228d84d099687808f9b59a1a608eec", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9cb31596b1eb447ed8bd33b409db1ed4592f816c12d8563e67bdda3483d3a313", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a30c7203be121cb341b6537b2d75e94fb727ed59b2125e0b2d48163c0bee0857", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a30c7203be121cb341b6537b2d75e94fb727ed59b2125e0b2d48163c0bee0857", -"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "f46bb24682f333d4fedc656de3b001972910e14960d7965929e0a48012efc57d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "4422dd6fa7e338386320d987e3cb775704b3b226079865e5e190612fe87d6bc8", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "01407463ed6e613833ca0260576762ad6e513ecf5ddde2caab5bfe72c22a7903", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "01407463ed6e613833ca0260576762ad6e513ecf5ddde2caab5bfe72c22a7903", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "6f79a28a0c40756b53059123bbc4062c8cd47bc4cc6f615febab821ebf86d381", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "6f79a28a0c40756b53059123bbc4062c8cd47bc4cc6f615febab821ebf86d381", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "6133e06c35f029aeb34edca641597f9bf7cdf2962b9eb2ac249e016bccb83076", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "6133e06c35f029aeb34edca641597f9bf7cdf2962b9eb2ac249e016bccb83076", -"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "c7c9fddc585e98ef7709f7d81b2f94cbef6667345420b0b0bb91c1233dea3815", -"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "c7c9fddc585e98ef7709f7d81b2f94cbef6667345420b0b0bb91c1233dea3815", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "427ad4e025352b4adeb1163c21197cd0a15c30b59326ccf5c201f691e09d5c0d", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "a650c4fa5188abe05b05614e20d9189de5aa779d3f244053e23b1c236a5bc5fd", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "c8ee4e79a08bb9bc94c06d82203762f6b627bbb250c9d979e6f5f82eba47a2f8", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "4faa8e664904abf15eaf6746f5a95d55fcc910d5b8b5af3a70749666248aaf67", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "db4c127a12e464279cf01f5e0eed16981c8456d9904c618b3a6bdd45544638e1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "667ab92058327c069b433602c3922708e9c99a23319945347b4c07dd65054b90", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "1f8297ab102a070d8087af9862c6f24a8979faaef48dfbf824496fe6c3ef649f", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8f3b73f3ca9563b1575ef4e2f438778416893d0f4c667147b5b92f384e1892a9", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "97f3a7fc95338c907b2654e4b51d607fe9bce3057c785596c2d4b0419378008a", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "0e8abee4e5ed154f11cf70f930fceefcb5764a69a90e55e618d255f68d7400c1", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "34247419012a7e3d033115032b1726e948f632c87f979d7b6caf54a691b1578b", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "839b5da79f5b79170266c170bff3954a7b37be985705acc910db67ee2d7c1386", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "60a856601c91445ecf51a74de046ebe62dbe6224d3c174473fdd4c1f178b49df", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "c1926870ed3923159eeabc896c115a1dfcd8b52d4999d9e707c7181f4196a3ab", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "8cb02fbc8075d2f9017552b43811bbefb90762dc3b800f8c28c619d4d0c2c7a2", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "10c62f53d494857f3f693d2a2180c86b129564bace4b647d67b9b45f34fb74ad", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "064490e02f25df9c8c69f5f6ee7c3bba194b5de2eb35b5f56aecfd35742654e2", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "019d509d96e000fe52a390bb1d176885a5a3a90fd90258c3ef21a03468b735a3", -"T3T1_es_misc-test_msg_signidentity.py::test_sign": "2ecbcf7f7d499654641216bacc3200254c14148f0d136394757c5015bc6dbd96", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "d0c4ed3b0ee850b1f9521b144a1d42388c58baf476190283d017d68043f7dfc5", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a3a06bedfef5516146feff5558a7f7423dda639b81ea780f03026eb406f65f82", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ca05646ad1f5a0ff6807dcd6c672f17e985b10e5d2095bc6411614501a135bfd", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "9763409306202379e5f6742a3e98b8cc98638c4bbf841dea68fe7e46049744c9", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "2cb9f3392838edabbb81504e3f86840dfef4630280e2551e74b63cc31723da17", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "8b87a018c9cf731642e5de2017920e81273a67025983cec59dcc4b8dba08459b", -"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "50f4aedb7666bec6625966286d5ba22439e6a10a83332548023cea32cf336fe6", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0742f16081b4ff538faf13dc2e8fc07867cc4842f64183ba9cbfd22f57f14127", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "2018a1f9b5df049eec67d34de6bd57c07476963558d05a0d5a3bb968590ad015", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "24eb7a9b329b35c9dc0d7087ee89e0248793c9e59aa3957705b0f23b3c7c1e3a", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "09cc04b891c9666ad22a599a4c28e2dd85d8f3fbcc02812b0c9946fde608e1b8", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e8655007535e9fb4d49bb6f0dabae95af4b27d0aa45a903f66642c25269fe5e2", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "7bdce0a9137201125ab89f2e2254ba66dec2a1e9d031745e186b159d1e38957a", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c76a7abcf869e0eb9e8d0661730ee1618c886816ed9c3629e0a93a1af8dac2ed", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "da6a577a46bb83072367ef44425430c3c21dc3e0e36df0765eca0b85fb7b8a66", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c77977cb2944935a549b6d69a4a14c5e47232c1d268823e4e8d30ba3662ec361", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3a54850e406ab0cb368616bbd16d45cb82a3416d00e96f1cb21789d0b044c37c", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "31f7bd9e1deea92f9f2048c11541897db3d42b083638ef2892391caf6a11ca98", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "cb9c23cfd8e161088927e2c04f8c88c5ecc8102391009788f2ae45d5ee3c2a33", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "71fb0fa0538cb85cd401e3b9f447bd3b5fc1bf17f265e1ad30a26d5ea9624bd8", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d47655870f482bc260ec96d7598fd5014316d3760d4371ffd22533575f8c58a8", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "bf721e60b519f34ce52920e28e758ad00d185f3c8652a36385bc54b4e63d583a", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "7bdce0a9137201125ab89f2e2254ba66dec2a1e9d031745e186b159d1e38957a", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "aeff3c1f08781f2a928b74a6507954f208627d46add4cf13b128658e4baeecf6", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "9b18ab85af2ce5a60f4ba60da71ae403b07561f79f267627d8a33880cb095bab", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "4c27cfa8ae9acd0c4203ab851931708e94518ee638583d78e3f6b879a4d37862", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4cd9e3a1926eedc2497b3d7e4fb5748f879b68a6db33399bf1add5838da040d0", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b4c89cfd1af2b3c872ba69961eb997ceb7d31d6fc241bd4f253267f247b4e63f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a9756c53a26d0f09d628f03b962b05926181d5424b36e8132ae16e22c412c5ec", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7ec2b736d4f45c6a5236412f04285d21cd431facfdfd23a21d298f3922025d3d", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "c1db81d9e7197e8cf6d0d7b2d283be7c49f57fe707f7b89431afa9c7d5e244c3", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b188fa57ec891325a36948009e75b6efcf3cabd33c12d29a8d98361d9cea2039", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "e031c20619a4087b75886776484b64550414d32c091fbf4bcb7e5dd98126f6ca", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "49c0111fa5df9151e5d75a7825fff4533e9ca4ef0dd9f64469eb7fb075617479", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "3a56a9dea031b452439d4434a2bb196000771482fa0cfcb36b3d2fa70f2d233b", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6ed65313c57258ac771fc2d3dabd61cdf7181c73073857d452da906cf44ea679", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "0dcf5f45f206ecaf66bceb30ce5259a2fba8d63d62de5bfc9291019565e3ffd3", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "85c7a8678980a793a1840205a063e7a942dd71ba47b4f1930f1a7813c170801f", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e773e837529ac570a42a2c1beef5e02a3057e1e203cfd72ba251cf76011569f3", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "35d237554e5a422288d6221e650ea534775767040d7663c615b8fdf25fd48774", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d07eb401c54589e89db0238544880dc476cee63982632aa73b14571ce03bd90f", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "09621e2be2279281b5485f635e35d5147188f9b61b11553748923225228e538d", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0aa5db3fb528bfd92b740d6f87fc3334de116820e41ec5088167eb6c8f6727df", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8cd5fee1e6b64c359479233ed07f1bf572b837fcd416e7606503e289f528d7ca", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "18dd3119a41282a3b221ddd3bc485baad28c9581ed2c2bfc44f6c6a838e234d4", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a56be9654641af229666c072741818aeb73015b0e0d2887aaed937d62b4011ab", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a4fa613cf066e24da1d45e99060f13318756ee8bfd533609f312da2e435afe21", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d21f8bc5d20c17068401b5bd0da395b3d3aeb92fdda055a781452d353c8bee08", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "796f991ca2361e0168b4c1ac8950eaa38d48c0fc986be2f03b18cc7f941e94ba", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "37ab66cb4f14ee6d3798a7be47baf4df8134f5ca735bc96de6d26ed8ece5ee81", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fe9d0dd1845da487a7871ca603aedb042cb88d174fa348d8ce209205b8809bb3", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5ed933de1fd4a841b5403f3ff661e131edafa156385874786a8ac0af98b0cf74", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b72bdcbdef00ac3e891e28bb465da33390705e08baa075d9c584eee1c9f95362", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8d5f267b00d53701f731738a2a9bfd230b04425bdbf3eeb9ffc6c701cc39a968", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "371688d95e2b3f66989431fa39e698263a783380fc44c7bac57992157b93469f", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6b05cf4fcdd0d75f4ccccbb04a93d4b663209f40f425ff738de10ab7aefd6fe3", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "11cb9cbd40696a68ff66131bbb96ee924ffe069ba623a178b1855b3bed5d728a", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "2cf9da3ee63768d42cc27b2bc0c1d149ca7f7ec2cd5d3c9b72a9ff78edc43c09", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "02716e566f9cd2a69e45a97659338a63cb1349cae8bdcec2ec14c876f40f8018", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "8c99fb15034c771c0620163b29985d9a6b26e881ca150c7845bedcc0ad61e54d", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "96258f9ab3f76964a7064daa433582ac0af01eefbfe93b8fa9dbbdde7419e2bd", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "94546d81e9238f7e16054f64334d8c92b98c5a9136d21f161aab6086a7bb23f9", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "262d66fcfdc5f6e6ad932cb128b646ee84c3955b0b433c69ec691434bebc2a5c", -"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b008209006435dce64b8de44069018d33d35240b7ed467b7d8056a015b36496b", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "0f1e3644d2162cbd80cb052d46193603a4cfc0834e51e9390dee8f06b278c3aa", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "0091ee5b7d35b6ad9afbdb65f0d314a7821b884481b533cf8aa5efc841326cdf", -"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "56a3ea40922032c4798914f9d600d18934378b8a66205c17a50779a5b5073df0", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "33b46b74a567df77733e54c3b5b799a5938528c021a91c20f7de472e38209a82", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "8e8c83ab3ab483ecfe4b8083a5079ced0f544007c789f879146163c1830f29bd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "55e7509316aa88b9d939132e4624dea97311a2caf6ea324dd24f1070fb2cd5ed", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "44d7621f87343f1bf48c878f0031341d9878b6c8251b34ec7d5e9dfc21e7a8d3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "bf16d4ca260e159479cfe2a5f25de7fbfd2f73a260227142f5de6bc9317550b6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "daca988345aaa8cf8cd168b5b51a10031105567fc89d939f5132b363a0852527", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "6d5f5b2b68ceca6c1a3c55b9775d451ee09d2989e75eb5fd3c0c9cfb80056c8d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0c98c99db9e715f6608242d9fca78dd2ab0fa9a91e48fcc861a11d447cf57e3e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e0701498ec210fcef93b621f27eabaae2947a5bab34bd4c64b4292e357f9027d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8079b893dbe1c2c5e9cc058f7d44cdd8bebd474afd20d7c90b8a4b259701e91d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "07c84b2ed0e09232933cb7e6303fd59590014186a8d88c062f55394426251aad", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "a01a9e659d488fa03865542719b855afd64d27fd7f96147ec2f4ee3b4e360f92", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "9d8b719e9dffd352919bef09c625b371b88f5798d71fa9246783ca1f11ee0503", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "ed9e211acf9cc0bbbd2dbf7ab1a1db9364532b92e43ac866d18bd22d7a9ee140", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "e686152aad5707481ce67935a4ded0758eb8abe62d59674846284e05ef99c345", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "d966d08342d31369c1ec445136c99a7cde75d15b130a584e1ba899e11b47bcc9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "9030422ab7a5187d5f8e475fb981e8ff1ffe16083f2d6337c71e6f002445356b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "82bc9584be3b89d552c6a4018c584d89599df3ad4a014e86e2275fd2c4837e2f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "543632561902ea295672d1092614c2309090e7da50206cd0cb77a4a92d9575ab", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "d6e461646af46089db79c394c2cd89b83404c3c450cb7a24c9ef7b07e8d4692c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "d02556dbc72f713fd226d7885b505006d33f339c27246f2210a149096d25e361", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "d02556dbc72f713fd226d7885b505006d33f339c27246f2210a149096d25e361", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "0440c77bf3fab788e7b56ba5a09591f385382dc9332d18f8ee7f2b003c8e5755", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "61b9619e40195cba16af6df95e1a31902dce904ddddc6b4bc20ec1a912fee8b3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "766ee8129e5d17aed0baa8061b69d78bf30c3be4814142e7c5d4cf5fcd4d4956", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "ab39f2ff5b276abd134dcbfae0cebd3552de880ed1fe3a889186ffa551d825da", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b94ada264c3267584d89108791c2cee5139c3549849967d29ad42fff1f967b97", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "59807afceab08751a795a8273d6679b4bc30bc6f288154d3aea674033c7cdfe3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "45dc3e052ded3659de69abf1a04b0e802be8afd1c9c7bd8624924d1ad454d44c", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c7141357824b5e20803196f7b84dcc1f92493e723a942bfae0ff74f1b38e757d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "76e72ea41ae05f0c43da0cd91818d1ea3a0251e806c1a755ffade77c2f41ad9b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "311d0ecbfd5b38a4f42862088893e986a8ec87d10ac7c4f9cbca7ef4a312b1e2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "757fd24b4a9f252c20be134828df5c701456773e02022cd10168675ee9907eca", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "9f4dfc44830e5bf64ae5880e693ed8373840826e23443d7bd70ae460c5356d98", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "4b80d05919cbcd8f195fc9deb86564b2a84bd37c3ffdb2c5a6d49ad11c87bfbd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "144762fc5730ee3de00669a4f097e54698f916d2fb6a3b3d9c4dde08f5b59db4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "936148635ae407a85a06110e6290796e2b36ab8e742b5430c615f4d36ff184d6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "f5cd04587800af25deae750c101a321749989981a5a07d29841966e2eec63564", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "627362d5f018520f8162d7ca4d420abb0fee0ac396976eafe71746f4c24903b4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "8723163a2fb30b7e0b55770d0e4fdaf3f324f54b911daa8e391969cbcfd7d724", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "fc8e28922258233144ae629eff422c0acd743a1b6d5da400912088edb98c64b9", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "dcdd9a42ad218198c78a1fb025d12f719a909896bc0e3a1a910af61b38eb48a6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "096b5e541e12fde617948b4c1868dbbb8fed105d0befd4c4337d20da6d492600", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "0b3fc2d1232234c22ccc7841b77d977f134e53c97f380229507ff250d5e60d85", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "2753649d7843d681ccf0ba2fac98b7d374ef1134572847e10427a10e42c4e904", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "28f0978cb31cfa777ba86dfcd76f800b888f78cd1d670ebfb476810c7069f28d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "a6dbf5bdd095f7ec91752edb39485d692607fadb955875f72cee360570941757", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "994b72b5353ef6313c172da7bda68a804a566e3ff9cf67a856a91062f5edc4af", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "4cb5b1341cbcdc284ad81fc92b7ed3bf0c50b09b09d75c603413b0e157bffecf", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "49036991c4807af21fc3957d1d3faebf1e8880e8a381b529f6577add8d06f91f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "51e0214e0f45a5f587e769eb6a85aafc273d7d2a55d7b29e11ea744d72c73f5b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "0bac88b0fc423f5aef06cd690ca47f7e55756ba5268a8d23007daf91b2dfb823", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "b53801449c5661b050f8c2245673afa736bab9d68375d3e625065c89a3b13735", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "a2802b4d8beaec465846f03a04b9d034b40ca96fc6f0157a18caff6582f03ef2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "5df8f2a78beaa1e89c2321fa3bd14dabff46bdbb040b411dc9d0c45facaacebd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "5fb6e1e1035c8cb45416e6c816994c21f5221c3d9123e5e9bd56e28e34573bf2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "38538f0695207ee5a78a6183220032d3a2345eda0edd39b3af80c6f7c3abf110", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "ddf42eeff57eea8f4989a858095c5bf7ce27c9e9bb6095979ca036d231c371fb", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "93756462042c2a470a780827c82a7164f256af2c89ab303308d89c6f14c3d7de", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "766ee8129e5d17aed0baa8061b69d78bf30c3be4814142e7c5d4cf5fcd4d4956", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "cd02f41c7c16ef5168328d202a1bb672542caac597a80fbdf3d4b14b71454326", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "86d5d98d275f5a673998915a2f03e9ceb6430d8d142cb2e69a7f0915247b2814", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8280f2329689a89150fc9f3698b39f1b0deed6c347cf343a9497eea45f234321", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "31e0dd3a7a0cb6497df98149741a790f636a3ce04cf0a2174c42fef3a43f50c0", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "abe68ab957995c75c07d909cdbf7f05fba2e1713e03146f1f130b2ffad22e132", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "6bf91dd222723af3e96fc232bd23d5d3942c4d9bfa1bdc0097a3c3063ec4c750", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d8b47c647c834a41396b247a75a45ac73c523ec8d5b6ab56313c19ec59ab19d7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "eadd39481adc6e9a3adaf7d93b81ba43093652b9d9b3f947edcb8f8b4750d7a4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "70e5d647ed4fb2a07f999be3cdeaf33f204413d0b5fd0a0d0e61e91d3e1807b4", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "40872731421f1df43d519411c57714e751c73af93183a040fb85b70a1b467717", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "ce925957f5b3f386725a97d2b767e3523ede38fe958b84fd1459706585b33438", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "21935329a019276b72739f50d5de6a0a5e1f4128ae9f00de04004db861f16143", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "56ccbbe02d8ee7aa408ddaf190809ecc11dc57e55f3f9e0ab3e3cd1859829c71", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1fd39228110b287d243c107c6b1aa8d51d38794e5f55f44e77de7f8ddb8635ed", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "59a7fa5fcd25d2cf559e7ef6ec596a6d502af94a5dac152d447d389e634f6448", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "2edcb607f574f94bbc2fffc84df3bfef6ba02fc92a076c8ea9aa6a1efb93910c", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3ef18fccf28797b2d390713224acc85faa7aa4577f778a2d55269e4c36906901", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "6734c478b48424eadb0bcde875365a0c9afeebfa144bee475c8a8a4a474272ef", -"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "ec3c28440d2b638234b273a04bf3dac9864d6107c2bf4df48995676c1157fc59", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "9a09a75c5957ed3cdb54afba65de7e4727e8ffaa211e709856ea9b77a65d1fe8", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "81e841ba48bffce50a084e97c7696c43ffb66056223c777ca81e7fe5d378561a", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1666831f5579393a449578cd1ba383d0860aaa82b3df151ccda8b9e4ad0e056f", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "cb74232038db658e365318e641e9079146aca6a49e43a88224853c5826ba7bc9", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "2ade000ec04a7a60f1488c4f61145ce70a4c0a713004d1ca9c90301796637535", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "433a20b8032534198c49830d3121c6aafa2dfb9664cb71bedbef1e5694e6040c", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "2408abe16a1bd1c158b53dccea105aa68e1fc156f0a8ab06ffd99c3771550e2c", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "ebcee8685c69b7a1b6d72e1e0beb7575f6c0d232c0793c7aef612b81caaedce5", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "babedc58df9a6b55abff97c38fa23d71af8546587e1d2e74af9d7e219485468a", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "384d1f41a6702da460ed90e361ea0095d2da1dfcad74edc105437fb5a42c8d75", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ddb432626514764becafe07e34cf728e0113a300b83e422b0491312b6b3e2bf4", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "e4c858b51b2fdbe7d9906f0f636b18bd313790c6bc3f550963dba06d79847454", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "60a684ed3261188efe00bb872ab231df9899a7e44ad43e6dfbaf48c8a7b33bdf", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "239919f2ba5222917193984f0cf7f5e149cc41e12a78a126119b5a26fab9df85", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d25ce75066efc49f1598ee5fbf476108dc34a53e3ee43ccf4bc3a78cb9147309", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "f561fabd41347fad0ebac194f5bf3e15450ebafad99aada3c99798f323176507", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "48249962f039682b75b4d2340a21dc84f9189db67a35f5d65b01c557fdcbe342", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "0025e84016208ca9770ee162a70981398ea452d01da619e0e795638c6e5da888", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "ab40064606b2c74d4c259165e5a1a59a3eaed702cea8c26cc67b18f0b4abf3ca", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6502733c10356915eac326b84b51ac4f3b927f7c36930c45a235311c59e356ec", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "8977ec74a9e726353e95dfa5252201e1a77d0ac8ef6361e75b4589d47b50bb5a", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "98943fba22e4bcf3af6130e6e37c692fc5f6a625c1500d675528b0ad20a54632", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "665c3374dd057a0892b6585a49c79b336238463934aa7b1981ae2ba6c3802129", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "5421c2842ddcd649f50276cb9d8b63bb3a8aa6881d9a5c3a6f2c24e5e1101a13", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e6872fd75383c04e3c5b7e92ac65ab48065c5dd5aed403485ac55ef8163ec41f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "88351f212f62a4ffa6cf0f2778f04bb604a5f42bd7489f61fd6bddf20dd31669", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e25c97ea8e3b299dc0b00e4ca22f655ebb032ac6a0c8669d89644685644e8bed", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "ad9a47bc0f75b1061f768e9a8958d705d00f3d84f1447b676d12614aa691acb9", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "595c30354e6265e490e2b38461049825d3718946898e9dc3d2f59c7c9d236cd4", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "7f81b4c88d27a80016214f52292ac38ceab8d1927606420a60710030590522f2", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "4a035c63647a0e05ab4f57f5e787a37dc8a418354e644bfdb420187ef6b71a51", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "89a2efa3f8700159b356039ffda507c0f4a032abdcf0c3fc2e8e34eb42dd582f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "b2d9b4820e0f71e911e1447fe061792168400b38b5db170cebe5465ef209a3af", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "202d7760bd67b0653d17681a4bbf0d9ee3261cdd5eccb6bf832ad2f9d5090af5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4291d1c159d46d236af4e82bc620d61794e47531943b82ec314b42dd1fbac694", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "c908a0cab738b1ff5a0925091b90ba474a0f34aaedc9348b045368119f64a1eb", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "c5353bb846bb80357eeaf5dac3f40672e5a8680c5901cb65cbc1a48e9be4b721", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "9a146d9887e79c86f73e227de39225d0f2aad1c86881dbf9d8189263363c12d2", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "f7e813d8f6023d96bee2565d744d35a9a2eee1083ee66f4f314ddffe39e27bd3", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e25c97ea8e3b299dc0b00e4ca22f655ebb032ac6a0c8669d89644685644e8bed", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "9aa4bf4f9c2e965fd580acd1278088930d869a798aacfe6c4e94c4835a7cba8c", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "65f179418444c34edd2f8abad60b6d6396426588ee72fc823cfd07dcf53ea7b9", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "961b982bfd3c60ac6cd56fafeea708dfee4ea04968e3fa3889739b7de5ec200a", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "1ee24b732d58ac5795faec43952071da092addf3b827573d27aede9206ee6eb6", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "dfd018b6603974a37c0ba21a3d3b4177f0d77a644076f3ee3083de544224ad59", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "0303285faa88fff4cdfe298e8f1958728b45672720f483e0b1a4a4605d22a783", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "2a103746ee47cf6c3f0f435d2fbc15783b93f91ec5020a8d3c8e7e34ca2ff8fc", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "6a2ca5eee1cc6b24b0a6d70c8c38e2877f852dd72a431a80e817bd263223db90", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "c303fe24c1af4eee650484d38b615a8da4f2946bc3da37bf917c741d03984a5c", -"T3T1_es_test_autolock.py::test_autolock_default_value": "00ed174ede9b2001c9d60268c9eb080c13f9e7a374a74dc8fa014f5b4cfdcce4", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "dce29bf89b6ef38e0079b03cbb445223340ee6011d4c689020178d1ad192a6fc", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "dce29bf89b6ef38e0079b03cbb445223340ee6011d4c689020178d1ad192a6fc", -"T3T1_es_test_basic.py::test_capabilities": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_basic.py::test_device_id_different": "dd83f0fdfb32ebb944e104f6ade76200b8730642c450a4fc5cf7cc086633fd35", -"T3T1_es_test_basic.py::test_device_id_same": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_basic.py::test_features": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_basic.py::test_ping": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_busy_state.py::test_busy_expiry": "a440d4eec0125da0443133038f79982c342cb30190e60678123d0702aa00a8bf", -"T3T1_es_test_busy_state.py::test_busy_state": "2a9866e34f2623e63d7a2eeed1e43d8563e893c7b392ced06f10a4fef33cb2f6", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "24922c59035c55e5db86da744453fb6038bee88d518b0047e06b5ecfe2595fce", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "24922c59035c55e5db86da744453fb6038bee88d518b0047e06b5ecfe2595fce", -"T3T1_es_test_cancel.py::test_cancel_on_paginated": "161490453244e136023de8b1b91a3fa8eebacd9d57dcd60588cfddaf393e3be8", -"T3T1_es_test_debuglink.py::test_softlock_instability": "fbc0aac26998e3a7ba2eb70c9d308162250aa1e2e6cae205405b95d102d82a32", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "81e0a15715d2b5e2a5076154740ead6dfc642da8dc17840de480296d8027ae52", -"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_language.py::test_error_invalid_data_hash": "81673a629aa8073f27daf5b64fa2b459234adcac4095f47e9452c2256ecc1eaf", -"T3T1_es_test_language.py::test_error_invalid_data_length": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", -"T3T1_es_test_language.py::test_error_invalid_header_magic": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", -"T3T1_es_test_language.py::test_error_invalid_signature": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", -"T3T1_es_test_language.py::test_error_too_long": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", -"T3T1_es_test_language.py::test_error_version_mismatch": "5ffd5ff8d15481d724fc30a3277407216e30c7fac1ca99626b203135ab26dfb9", -"T3T1_es_test_language.py::test_full_language_change[cs]": "791cd42bd8366cb23d976bbceeda38188dbc6737cd62ca8c006bfae30a7a56f2", -"T3T1_es_test_language.py::test_full_language_change[de]": "797ffee654c9054eb27490033ab0ed00bf83373ad3e71bfea0d5c904839b9364", -"T3T1_es_test_language.py::test_full_language_change[en]": "d89b0c0c2556011000da2a092e4c6abbe06a508c3e482b07682fc2c6c876897f", -"T3T1_es_test_language.py::test_full_language_change[es]": "9f4594e287ad74fc5ba2fb95f7d40d32f6409f839e3cf80037ac80f1d2ebfa95", -"T3T1_es_test_language.py::test_full_language_change[fr]": "84fbe2ef581bae47828adee2ce2a6c8862febb4b2eadabe6c573505aeb07e644", -"T3T1_es_test_language.py::test_header_trailing_data": "9e76fdf169724989d0c77128b96b941022ae86e1856db5d49ade9cc1ee49a987", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "85596788cd5a27808594d949b90f8f4ca3696aaa3c74ccc425761739804212a7", -"T3T1_es_test_language.py::test_reject_update": "1ac93de16da2ca4aaf4d60ecfb978e7074699c7ea6e9ecc2e9f8c62a27b0bb93", -"T3T1_es_test_language.py::test_silent_first_install[False-False]": "9dc38e114e8159a73515824370937c4dd5fb3503aa8420e88eec8690da175b4e", -"T3T1_es_test_language.py::test_silent_first_install[None-False]": "9dc38e114e8159a73515824370937c4dd5fb3503aa8420e88eec8690da175b4e", -"T3T1_es_test_language.py::test_silent_first_install[True-True]": "a860e93eb4f51eadfc5c4315643f0588e20a011d1e01aa9370cd7f72d4818918", -"T3T1_es_test_language.py::test_switch_from_english[None]": "6daa25e9119a240f33f4d88f5b640591aed760688cd71ca0d45a74b312337337", -"T3T1_es_test_language.py::test_switch_from_english[True]": "6daa25e9119a240f33f4d88f5b640591aed760688cd71ca0d45a74b312337337", -"T3T1_es_test_language.py::test_switch_from_english_not_silent": "878a493e4d2343f62d63dc473059c2f013e16f8c0578da0698ccf9f1b02c6c99", -"T3T1_es_test_language.py::test_switch_language": "c9142ff4e4597ec3cdc4f4b7bee9195c24e7047a08e594154c689894e624a11c", -"T3T1_es_test_language.py::test_translations_renders_on_screen": "1ffd228090f0036d89f0925b1269d97ed3954c73cd76a2f1ea4b0c9f8f153b31", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "695c9e382737f52a9cf22d2dc2500a403139f244a9edea5fa4f775e3e35135f3", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "f5797f9a3f1b265630a2b3fb657dab4d41a0416140e9c2f0dd19322e03cc9d17", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "b7b7f438b489eb8b39f33846e618771e707330f2b5264803e31e7b1eb9889648", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3483d8d2b3292d85a6a2fa5c48af7a194bfb46eefe5ecc17de6df60adb4f77b3", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "20bcd37a83358d8d31583720731a4932f068808709ed30aa5eed303a5b1a9632", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "eaac55ace72f43b4ee65710496fd059ebd833a9b9ff88f986e3d3a5f92019389", -"T3T1_es_test_msg_applysettings.py::test_label_too_long": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_msg_applysettings.py::test_safety_checks": "49fb86f0e50d6cdd78ff381a99f801c690b745e9e679915087c06f29d9fca501", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "e1d6c513f2e95e481b963b8fced7f8f224425b70337195f1aef0c5f3d0afa673", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "05dfab7b4b3b3f664021ebc5cd022d884b5aaa34dacaec74e84c1557cfe742ce", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "72630455a14239ffe184423f6370a1e28c799ab77182d6a67ceb995ee9161f0a", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "8472a6ee908f77943d9895ecbc0833c1767392ae1e0f0c831cc806149c882f76", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1623d53b3d71ac353f42e764ed3af3f6b315fc9bd1ed38b7a64d2a98635ebe1e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "f30277f400fd3e0ee282235e2b83f80524531b2853a211c723d29c33ea94f3b6", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "2822e1cb5912319491d72c971165fdd5d8e893648b91a2c2144e29c258809d4e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a5307973d9d6742a994599fb392d567daed24175a855239fef35c589e6b2eadc", -"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "ca9026e0100a30fa6babc257654bc2f4fac3900b410d411454fc389eb02fb7af", -"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "dad5b5fdce315f955db0d61207e6ac5d4282c3534d0142fa5ff1e7dc2436b24e", -"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "75909d9d9b659635a629f141a9eb7672b2d8bb27a39c0a641cc0139ebf523958", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "78f63b3cd71b6b7654fac7a67ae0796572ec716fef48b03c781eedbf38e3f349", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a4f0b719e07ff85ee9a8a3e8489f9af64e50e497e8d098f7c5eff71f8fdb328b", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2f8da644d0592b517835cc505daafb8a2b7f81634ce9a0d688c8181617fa1b1e", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "05d1c4aacb68b89a2debeaa0a60d6fd17b7ba699dd7279a7e4437af6118326c4", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "c786e3c6b2a4b203dcee542bcb78a114146d61b555f41d4f8ff81c4b8ee3d55b", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "9b681eb550926e1b4e5f8dcce56e3361deb2a4b5ff428987417d9a3474509e60", -"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "9a2a004c2eef6f0ec5e9af44c954f7a27b681889a1b952c57e8c60441f3c2e92", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "527bdd0a2ff6b617dffcaa2808b2788e6331ecf56d8c7b364e834c5e075b221b", -"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "8d8b6b5b4aead4b9eb8453953254f2da974103a57d9b30ba60eb37d0625c663c", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "cd4a36a09f34768ec4af7a77313c6dbca8af51b9de025c93c39320e63aac8f66", -"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "ccb978ce4d5ad10d4d83cd26cb666f2178b17878e1281addb426006b8f9e7520", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "d4707955e6506bb167616924914497096c7eaceb0ca1d124b7d5f913ff8bff05", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "e0fe66dd04703f533cbffdf46cdac5847ebe887787baaeab9e95fa5dbeb63fa8", -"T3T1_es_test_msg_ping.py::test_ping": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "583029a505483e7340c64ef784fb06c1b444d29c1c418b645e6072356e2dd474", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "a1684db00530992569800aeb1e37652b1cf7721f50a22c9e1e74a9e21c892eb8", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "5cdd3a28c5658e29b4188a068f388e8b228f659bff9988aad316137cf5e5abcb", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "16bbfd2992baa20529aa8bfa54d2c0d982b791072d009fd4a289c90478f3f662", -"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "dd83f0fdfb32ebb944e104f6ade76200b8730642c450a4fc5cf7cc086633fd35", -"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3a241b796d831ba9f770162b496d1d485e40a9e5daec00cd6e226b82d565a081", -"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3a241b796d831ba9f770162b496d1d485e40a9e5daec00cd6e226b82d565a081", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", -"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", -"T3T1_es_test_pin.py::test_correct_pin": "aeb30e3edc5f8b7b441eadc6521dae4aa6b4f5f76ba3c0b804b7952013c9c0eb", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "587894910edac351d2a1e1305c3e4f8113dc5f9e54a44163386be57b5dfc0ad4", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "3bd281c8d6647d7916a7af1367b8560edb03dc213364a9e50a22480f0aa70b1f", -"T3T1_es_test_pin.py::test_no_protection": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_protection_levels.py::test_apply_settings": "d5f041667016c6440e4b08cd582dd6edeebc0a8b5544f0f5ee18fce9b0ffc831", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "662d0f5b1667e2f2e07e8a4778481e37b56754504689e8b27ed8c6f5d8249731", -"T3T1_es_test_protection_levels.py::test_get_address": "3a4fe81523b506d9613f4d6815359ed4ded0f1cd07f39ca7073954248d10f578", -"T3T1_es_test_protection_levels.py::test_get_entropy": "0398c5a5bfe4bd02a0cd45d3cf9446b5b13e6dada337ffd2d190d294e90e5802", -"T3T1_es_test_protection_levels.py::test_get_public_key": "3a4fe81523b506d9613f4d6815359ed4ded0f1cd07f39ca7073954248d10f578", -"T3T1_es_test_protection_levels.py::test_initialize": "14d989329d4393090a0f6ea44bb5b3439f3681dcd64d7cd830e0c0162736342c", -"T3T1_es_test_protection_levels.py::test_passphrase_cached": "e22fa6fdfce398b66813703fd67c868d62fdd3e569eb80d803c5096deb9afe50", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "8b6732ec00fedee759f15ef89224aeda534271f7fd713edc4b26a98d17a9e439", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "516ca70f4230a6b66073d8c25df2199308c4ea7687d0a900760a233b785aa912", -"T3T1_es_test_protection_levels.py::test_ping": "674c22c9dfb96801272cd77ab823689f9831b80cb6b653a2a41998c320672e95", -"T3T1_es_test_protection_levels.py::test_sign_message": "fc09c66d1834cf8cbe5131650e64c458a2a9a0fbe15cfabc6c340aafb82736fb", -"T3T1_es_test_protection_levels.py::test_signtx": "7340ce39a7817a58769687922fa5f469630ed19bdb89d27af5844b56bd82725d", -"T3T1_es_test_protection_levels.py::test_unlocked": "d36f9d491b33003599fb84981076e05bd4edc1f09126ce71077732c9a1b9da4d", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "d4b71283c63c741a2c79070cd9f0acaf6af0e03c401c76c088ddb7de48bfe23a", -"T3T1_es_test_protection_levels.py::test_wipe_device": "f9673ab3fc9843ebaedc7cf307958d95ebd00d8f7124a12955e5b084aebc1ca0", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "a78204be3592f7d5d3c3fba547aeea24fbda5b541e0355e629154f7569f0a19f", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "06f565fe26554d033d5c0ed3f743d150f399406941c54a7ef4ab4575c378e8c8", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "716aa623f840cf3868725297d4266981f88971d244a041241a0d07e1b7bf736d", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f69c72b7f6a29984b6a4b13e4584c17620d1d3ca7e35b67f4ad2e16c4188bf93", -"T3T1_es_test_sdcard.py::test_sd_format": "7d00c1ae543eb67e3dcb545b0aa541862b0594e81e1b19fb202e75b2374580ec", -"T3T1_es_test_sdcard.py::test_sd_no_format": "fcd7ee499c336d76070703c8c60baa583a267efec1f77a2e92201ba630876640", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "2de300d6a44c96385e31f2809026965cbd4778cb7ed275b84124ac8e0b2dc4da", -"T3T1_es_test_session.py::test_cannot_resume_ended_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_session.py::test_clear_session": "a3137b76c16ac630cd79f67cb48795542f15f7f63c4aa241f219690027e6aa84", -"T3T1_es_test_session.py::test_derive_cardano_empty_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_session.py::test_derive_cardano_running_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_session.py::test_end_session": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_session.py::test_end_session_only_current": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_session.py::test_session_recycling": "a7cb41476609e7a6bfa964925219c9e8156dd5b1622f1a1a3b810bcbea672751", -"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "0218aec792a4f892316e21db9bd7c37bbb1353338c36cb06207d273d0d53fd3d", -"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b00dccd96882a6f112b8f606fab96b88f14b1d0390299281177fe0d2d958aef3", -"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "e294e0ecf32c6a080da0280fe91e14407298081f2be0bcea57c880f1a99e1eba", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "f00e681887793c69adce8c947e7644a95b0603f575c1b3d24f59514f4e735963", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e3ab3e32de12ac15dc25c5320de7f84562e275aa2c34e43ca24f59cb64588d9e", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f68ff79bbee4bb85cfbb61004728dd28e7dd45cd31b47a03682188a0787ec892", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "b3e9cb5e9ca8722406ce1b10bcee9ad8f7cd78e2284dab57c870cd6abcbff29b", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "e22fa6fdfce398b66813703fd67c868d62fdd3e569eb80d803c5096deb9afe50", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "a146c44b8b62f486fb1c3a9bc8e9adf452f7bf2c4a6b808d4519935dc499b518", -"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8cd460826e05f6167e06c987489e7431f5f5e589f28a2b3f9ae6d950b293e44f", -"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "88dee002aa6602bd01b5f13ea460b214e57f9767b3978dbf397d2bea47e95a48", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "7548c2b4aa42332117822e537b9832f183d6b05e4617bfde328da54c3b46163c", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "184e4f22f2be0905e3a7169a2d860fd22a00cc6b710cdbfe63b76814a22fc620", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "2cf27fe7763ed8ab0b38b746852fb7e82a62c178627013d7b47d26fb5d3973f5", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "bc563c690bd4257713b8f44cd4a89208ee49b5014aed63df2e9640b067b3cc47", -"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "4eed258c542949dee1eeaeefd6592fff3a5c6c73047f77114b4adbd5ea807657", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "b726ae44d83d2a7b010a9b49e5a99283d9eba07c35046119198fb451845abe6a", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "383071425f3be14b637c868c826351a0c39261eb15da37b19adea0d71c76e3dc", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "d68b46bcce692c28be68b352f4242484ce67f8b750ddfc47ad94bf7c9ec821bc", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "7e28fc145980f500115ed2f4e20928ea7538f5525248f3f81d021dd6f4907fe7", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "e5cbd2b0f675a39b63fc77ff4c45713dd5cee692dbdcbc6b0b1fcdd10eeb8d4f", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "cdc664e592629a5c256b839aeeddb5f456dddff21c8848c5deb969140ef2cdca", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "99b584638e74c1caff52454697bb33a831ba75c039d79e5aeca1e594b5b17a84", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "a928ce4fde2e4b68a9b7de8ecb78ac98fa213e8874cdca02d89449b6cf79536d", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "c1e516ab062487d069c4fd0848352ac90e60b7015fd472d1d9479f7854757b93", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "773bff34c92862b035f72d35fbbafb1bf574f629b989615aa1eafbdc00268843", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "98838a8fc5ca6610f02e9edb2b7b2ec0ffd479a8e60d72b1d7194bdca14e8948", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "c46bde278653724fa3ef748616db943f6d7613c2102cdb3a55f75acf2ca01f40", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "c58cf7f0fae7b405d38ad99bf8faa7ce3f1f8874626091effe0ca24223cebf82", -"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "cfda4afb0e615d0305723c8b8d2b3f3669241fb1011f147fb62e2c5c4b4b254f", -"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "09e3b3e4a8b7cae5eee61a68cf15d3166d2f94aa6b976550594344d32408ee24", -"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "5e5e27f2baad6a28d2663601ee132b99fb2ba6d82a29fc05dd0189907fc57d11", -"T3T1_es_zcash-test_sign_tx.py::test_one_two": "55fd0ad7af97a32ab6506196cba070c49b92dc3514a8863a2d2d53b6a44b9809", -"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "984b82f942cbaa7fd466fd51386f592aa2d71e6bfc0586ec30ce64398a0af442", -"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "b4f0d5dc470b7a2bd4b58a4e15431d0d7e1a1ab2b3c3f639cf276b8886d9338b", -"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "09ad8de0b4e726d664de601c0b1b8286f89680742ddde370b4927da4bee3ef7e", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "e20bf59515477062a3f3864e6865011c5d8d38acab191694224dcc60faa4ad40", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "2af72bc5e13e2b4ea3f8fc2633cae9271b1127e5a88bd29beabf7dd81221e84a", -"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "c89558db34d987f5cc5c84dc3941f08d765dac9a77f536ceb054282a7de1de13", -"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "c1a9c1723f6362ff63d5da2dd36bd569e0f5b50c2b913a3cfa860dff47152cd1", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "c9a86833521a97973ee833235078a1ff8dfd82d7fd216669a8aa3de8166077bd", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "87f16a918acbee105f19ef65ab5503f8167a5797448be3adeededee93be9c338", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "318f8c852ef9eae3018fe9188cccdcc66972f36e838d40408827260119b10d90", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "445cb46512ba1d162b17cf2372f339df38b1bccf933d9614a7487f70991bacb1", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "34a0ae66a66133045a92bdb422d75826150ac10bb8eb010f7c275d0760ed9d14", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "45d284f633063255597cb39c9499eb4c798ad5b3e3817664929a5304f3cbeee8", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "9a9345c6f3028bdb2c41f1a3426cfb9d1c44b2ec83b1a6995242b33b6552897c", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "f25e50ab7cf4bb9ac55fb95d0b75bafc9f345dd52d86dbe73b3d2f69fb74de81", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "45d284f633063255597cb39c9499eb4c798ad5b3e3817664929a5304f3cbeee8", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "9a9345c6f3028bdb2c41f1a3426cfb9d1c44b2ec83b1a6995242b33b6552897c", -"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "f25e50ab7cf4bb9ac55fb95d0b75bafc9f345dd52d86dbe73b3d2f69fb74de81", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3ef3bb573d68cb5f628329c7b74b1e11c5a7d272f92a542503153c1136b8d198", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "d84c34adcd20dd934dbe7c3949d5e034d57e4db14ba93fefe50cac524bbbe6e4", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "6f29b0104ef7076880cccfefc32fc7bc5b9618c83491abcc53a2ea5b4838631c", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "36bf7ec2c36cfd74aa2ad42997fed91fd46db40eb76cb6fa85d450747e2037eb", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "053f121ead848208b16659d7f1e148448a4478caf7ffcff530e44386084147c8", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "053f121ead848208b16659d7f1e148448a4478caf7ffcff530e44386084147c8", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1df910c16db065eb897127a221b9666f2a053138c85bb96972f62448bb377725", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "8b17ff8efe40d9f246c65029c386c4562b5561c3ce5fca7e4d4aa90544ed0f71", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "42350583e7796dd7885edb21c632bdc4089494f6a4d1b257437fc8f6df25bf55", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "f7562eed1971221dd463599cbf4e24b90310d0ca40d5ed71546128f360c93f50", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "f7562eed1971221dd463599cbf4e24b90310d0ca40d5ed71546128f360c93f50", -"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "e83e4585d90ef85b7d0de56c7bd76a433a419e514d486856453780dfec469775", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "e83e4585d90ef85b7d0de56c7bd76a433a419e514d486856453780dfec469775", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "3c4ad8e72e310290b33a2fbd7c909569490886476f09c77cae7863816484404e", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "b827ed9123d0beefe9259adbb904b097626ca4c7017dc5c6c71b7c5ad9d89fa1", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "269007441cc9a35b08a55aadf235335aac82c10755ebadc9851a60a5d7107bde", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "4e18491069d1d9ea64ec0d3e5357b64308242f4153279656a1e2f448d7901843", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "05e8809d40c9923faf4ba7942546d4c7e0a73a12d3b10b0071336ffc38892a91", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "8bb9318c206f0affcdc6716ba5761cf668f8a7aa867aa053f34a028b38faa878", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "3887c628011a16821664589f3aced578bcec7ee816ab3a2e08ece15f1d8690a4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "5d40814c2f6137c4ed9b6f79c75622b69f66d5c7a6696e4ae8ddca97711f64be", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "633d2a19e64bd99ef0f24fa51f816f6bc9de07054131c77aeeb73d1f6c39d669", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "b0c428ebae3d36cdc5c35299f26f3d511a1de265c747292cb1a8641660abb450", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "e5fb725384f926e141e6528c210fe5906ca0bfd30ee6b1a2cf5dd1892e1ad8c8", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "47459c181eb1e6be50ad677050111408ec841ce526d438095aa1da38355200f4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "a4756a088876ebef14ef53fa4f7c7b78acc5ad04f1910e49f53c91a9d88fd9bb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "165ff3832c38c121f01fe831d7db906f1e689d140c683103489cd3d7cdb2ffd4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "61c00391f843a1cc9d27881399a808478f278a0fed1d5faa072d6dffbe6ae803", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "700676917619176c9f757742087a90de1168bb48a9fddba946f49f0e0daf7d94", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "0053df45d692382a381814f00b0fa9dc79f1334fff6c0da1f899acc70bc78f94", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "0c1fa64b1c0c8480bd22f8f366c66ba7e85ae6721e8eea4c47a5461de6c175ae", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "ae57913b4fc9df69bf61006be960043d52d65ebd3d416f371471d465c61102bf", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "9e3438a88145609c590c5d9102070e588bfbeed41a8af130703dbfade5370535", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "4e50b77feac1948376eaeb76e1f82c4b2dac450565b1d7c297b2e2f0336fe5b6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "8bb9318c206f0affcdc6716ba5761cf668f8a7aa867aa053f34a028b38faa878", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "3887c628011a16821664589f3aced578bcec7ee816ab3a2e08ece15f1d8690a4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "5d40814c2f6137c4ed9b6f79c75622b69f66d5c7a6696e4ae8ddca97711f64be", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "633d2a19e64bd99ef0f24fa51f816f6bc9de07054131c77aeeb73d1f6c39d669", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "b0c428ebae3d36cdc5c35299f26f3d511a1de265c747292cb1a8641660abb450", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "e5fb725384f926e141e6528c210fe5906ca0bfd30ee6b1a2cf5dd1892e1ad8c8", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "47459c181eb1e6be50ad677050111408ec841ce526d438095aa1da38355200f4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "a4756a088876ebef14ef53fa4f7c7b78acc5ad04f1910e49f53c91a9d88fd9bb", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "165ff3832c38c121f01fe831d7db906f1e689d140c683103489cd3d7cdb2ffd4", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "61c00391f843a1cc9d27881399a808478f278a0fed1d5faa072d6dffbe6ae803", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "700676917619176c9f757742087a90de1168bb48a9fddba946f49f0e0daf7d94", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "0053df45d692382a381814f00b0fa9dc79f1334fff6c0da1f899acc70bc78f94", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "0c1fa64b1c0c8480bd22f8f366c66ba7e85ae6721e8eea4c47a5461de6c175ae", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "ae57913b4fc9df69bf61006be960043d52d65ebd3d416f371471d465c61102bf", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "9e3438a88145609c590c5d9102070e588bfbeed41a8af130703dbfade5370535", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4e50b77feac1948376eaeb76e1f82c4b2dac450565b1d7c297b2e2f0336fe5b6", -"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "728306dbc959a4ea695f8098276f6861a878c7fe19c0d32f4d18ca6652ddf63f", -"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "22948c6e57737a0edbd864b02bf779d4bae9f818e3b1a4c5ec83135580bb6b76", -"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "02ffe9c03405c99ffd2ee42b0ac2479c04f4c64c30972b9c08967d282c0512c9", -"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "44d2512ef732a88d1e46486fe81acd2ed596863bdc93cc952645ce30929b7a07", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "16efd5c6b4855710860d1db9cfb1800be675f0bf67217e30ac8e97bd3da930a5", -"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "d419e39fc1ca62ff657ba4ede1a24fa2a1dd132f72b4eb6abb8469fac5c5e91d", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "0c7aec815d3b6a5c4f2c74f4669ca8735d48864643871af01915625d1c6d05fc", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fd72e6d944f2a7af98743667a18aab32f22b2ef8141bdc8bc85722c301949d83", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d856dfed0c83de35e6050531baa6dc2c22d75f78fb1502ee1af7c63bcafaaaa1", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "48a9851ee5cf14fe59d089c6d8979f92ee8388fc26763045124065512faf7077", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "829022252b0af5ae867fdb5c5160d2d248e16640f74affc28f234a169d4a71b5", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "017c6d0024facaf684f4b982735be287ec972ecbc4313a0f941442ec8ac119d7", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "9cf0eb6e78a37d1e80d5a90a78a61d87ee54c018a38a5d73c4ea954d3098a71c", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "ec60757ffc7e589c814dfe1737cabd824728309d7ac60019dcc51e5a0512a6e8", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "03a5dbd55872f14adae640870707b86a14396afc90661384d1226c3e2f0e8624", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "2d5bcff3d4298a0c2626aa806524285755db06e9969cf81abb0966f97b77bc8e", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "d4cac542d4b05c7bfecf0e068ba7fa17107d434c9be98da423e8a86fc62faf4d", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "7da665b897a53b118d71cd2bddc67edf23325918874505a969354e6f8e17e2c2", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "45a75ace24a8ed02e1b1c5364c77ede322cc0df5f6b87cf75b1f3e4f74aea70f", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bb0012cddf417eda6a33a6a47a4606359e1e4f728c0d01320748acd34bc6a7be", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "272e0fde75ade7434c23f0d344c4820290e4c4e1c99feb68f514f4c939a65f83", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "916f0503fcfd7ddf92124c7f5513f7af3a286e5cf582a3f9d16b1f74cb3580f7", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "504439920fcf77b061afa6d4c7c114698d21eb4be0b0841ca56778b447a74ecb", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "50ee12ddf78cbf9bfa6703f464a0585b0c434f87d342e8010ea4b1e4bb169c0e", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "451809b70e33bf81bfc303ce09b114131127a734648c78d728a91c53a72810ec", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "fd3f4035e4896c1be460cbe15c38ae9b57d32fa0433753eade3bf41481c9e6f5", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "89ca5541fb288c9f4b53ebcfabce045fe2f4908dae351c4f4dc8daaeaa0fcbed", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "6f66e7203dc0e0111ff7888751e7d19c44b178ee57dde5d899d6d1833a1eeccb", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "56e6bb5e5272514b8c4798b02fd5511b05638673a07b9d68d7198ed303a0f911", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "24c6d88e2c070f2889e60506f4d3c619cfcefab54d44a05b0d482a97d0349e3d", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "24c6d88e2c070f2889e60506f4d3c619cfcefab54d44a05b0d482a97d0349e3d", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "01786f318d778d456414c3a0fa9ceba041672b1d5e80e70f4be1eceab9138645", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "200d15e41c3dabb4f1483046506553ff8b9d384be67216e3f9573d37111229a7", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c53e6a0e48fbc9655063a51539284119ed77fc15aa81e76340d7abd3257e7007", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "7884c2fdb0aeda9264663ae7c8986e25d3df120d77e67ccc2bc2c76766a08e51", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "77f7603fc9b0e81a1bbc2416c83c6805c7e9a26e3c3a25d4cb298f972f091b38", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "7c8f0d5c74f7c8bedb46ba44708823e6f9d9fa999bc0d41d85591afdf1657f86", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "e3996b18599747ecf0651169cfb3007d79ced4ddd396c0e02840c8a9ec26d490", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "b1a73d78da7dc3f249ce446be56bc009c0b0c1ad022df3173922b38b07c73909", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "48fc41ea8ac84e75e93d11fe2796b5fde5486ce10dbd8f0c2651f98cbadbd202", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "f65222bff56f0ea6ba8b0b4453450a2d83a96bc35df105cd8b8139db1e7857ca", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "1abdda29e5b8004fda5433851fc61039ffea8380cda5023d256d5f87c3eda362", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "47cc8621d57b865dc03a3b16568743ccbe7a5a8b1d911dbe605319985f72c85f", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "09e3dcfc21450c5bff4b75bef6652368414e30b845accdc3a6a58bbd03f366b6", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "c30f9dd77c3712e6f65f194c086b2d4642f83d8fe497474a6427e65ac70f8937", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "265a574f6b77655100f30a154e2e99eec9b53dbcde73db19492ecac34a276c1b", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "ac087740120d70b58a343ca885fe7a5107c9b70ac91050d5f8186171c6348a3f", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "82f4673196f84d925561ad69cf7e18a43152714c16ca7def566a6cd58d521c22", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d0e16d0ce0c9e984b8c0c5e27585728d81205953889e01de94a3f44fa957a5a1", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "54bd5b32638c5765feff53518c327e927203a2df95806222290b986ff1d381b9", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "bace1486d7c6dcaf763ab3dbf19aeaf0185357d0a2f87b6f334edc9ac60933ef", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "78680ceb0a5eab54a8cf95ab44c1c5771602790295fe839d3e62ddbbea209ca3", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a546c83658204b9089f4a4cc6d23a71b92cbe6aa231ea2a61181e2d529744727", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7fa69e20090e88e861709f61b5165029e168f163f098021fca2183eb6c54412a", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "142d3deffbbd0114a3639394d03c4a980ee6ec73c426b5bb7b51569eb8ed8d41", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "98e261efe68fe7b59aa6cc738f24f5ac53dde22f2f5f3080220d0b094a1847c2", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_grs.py::test_legacy": "a7d388e9aa6bc1dc8b38bb5dd122484bb1c1bee483884e1f7a0a612edbd7c907", -"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "f85faa882eeac0430d7e43a2d6ceb294b5afd4a786c6db7749b076c90bf22d9a", -"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "7d27ea69372bb97cfe92390537a6cba8758f55b96ebddd28388117b3b3ae9f43", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "c663ad0aa5c5555d80da6160a066cd418884006d4ccd8eb7257bd67aefec2239", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "beffa088b569909b1c8f5fe9325395a10b0dbb99b488e3ba4e33ab5167b2b7b0", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "b19bc735fe19ffc11e2e0e87eddb5d216a3f20f5e24ceaa32170904619954a4f", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "308d5592a35f9fb3a5651cb58fb1ac78e6e6dd2e7fd056914863539abd8a5da1", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "d2c443453e68fdb69f2ff34c2f2af6d74d2fc0e983a688fc7e798e210fe7995d", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "868de1d0b540b8125a061140df5758e69420de0cd044d6218a955040655ef0c2", -"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "e2bff35cc5c1a9462f7b14df3833a05876f871dfd3e5e72ddd6d4a4383886a47", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "c676c82606c65acc57f757a4ad3103e445ac7553c8005719d7bc101a2d512c94", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "7ce9bc9de83f5b42b38742b902b8df5b4a1d3bd85c66afb73228a04174115d37", -"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "5309eb0c5d5b92e69427c2f6a3adf4cdb50d3e12e83241e5bf7da94c2c0ed1ff", -"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "7e9c18f04f1081d7ee60dbec8fd6979408a1479f6857b49cbbd61b927f32668c", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "c74a3ac39237b2bf8f81a96a3e701d7349a8a215597a469cbb1281250086e64e", -"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "17fd19a1faf7803ed948d0f62d1e37ef01583f3d27a7a3ab65e4388e9b8ea649", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "5b020a4630da368ddc04f16d6bc0cabe59a6cda2cc3d585b87977b8121de1256", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "ba9c48f335421ad0b41079a9c3da8976aafe1d937f92fbaa073f2f752ef46623", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "60f6aab156cefe8d1d13428c9c6a23b801e7662a61df39e52cf90a07756363ba", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "0c12b8df9e557fbe12b367f41e79c234d328bb097d471f8c1644b2b7e21a501c", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a02920bc87bbdb1294d94e471986a3af816d59674566777fdd095ffbe8860795", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "55522bccad4c86ef50ed66ddb4a743c704b09c46c68e69ff07fb1f8afb7c967e", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "4b60ad2d54f2b8e68cca20bbde5ff83833581bc95af1291f09685315b267b2f4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "4d2c709c09d2b6585331df75bf35779613d50c16155433052d8051009ff9ba30", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "89b14b90c115c3258105dc00b112ec9a03061608dc32b155eb9317d0f480d2a1", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "093c3eb3b91baaa9b3ac2bfa76d99e72cc32ae54c29a75017b5eadb8b559dd0d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "74c3c9f2d64a26d93c69370a08c72698dfb3be2b758adfb9c489787a77300d68", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "cf3b85ff7e6fed1301e7d091dc441265582d34af773a324bda23184e6a61514d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "9f37508008428dd53dfc41617337886cd519a6abdedc46ffc921b65c397173c8", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "884c27ad98eab77a2303d55978164ff1c34a0ef96d56e9b179f51709becc0a2a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "8545d2e4f0ebb3c82dac1446801fdb077387fe188bb734f318d0ed8dee1acfe4", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "72b649726cf47bfb0aa1f3b0bb1d53a2939e8d8e0cda82bfceed91f6df04c015", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "1733b1c61bd192a0ef4b2019d9a0a909eee920eab6bc06195da86f14dc06b791", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "6acb16b40ba5531a81369087de896a78ed5d57050eb4faf2df1500f724451be8", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "2cb939bee79c001cccdec9781e5bc975abb1f890d34623e729c4d9a5b6adf59d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "474471ed235634f8756f863dffd86131b5d7f3d35ca51e7cb6d4eca3805d57e0", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "253451c863befa95481ad442ae1479e83ebb2f07a14277e9cd0213eb3c725b61", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "d194399bffc7ff162826bea5bb29e87fff553ef65469d9f4a11a3d5170bd7ff5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "d68eb365b37d0b7a7cfd909d32a130e9fd8930582c0651d3b062a439f6819c99", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "d1007ea1e462dd4304a23302b107dded2e717ef56a2e4e08c89c2dd01641b070", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "9b34ac3587e2d9e6441bf32549a66a0c5f3f808f1e81a0f108a34d3e429e03ba", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "36e0fb4554e1fc79d72a7d22b994c620ec5a37d7245550c49642929835c42f74", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "92b9f853971c43b5e1dadf6bca813f6643f327ced40dfab9f4392b76c64d7743", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "4959ee0d725234f8713ce5aab703fb48d35f9999e9f76e9b444a35b3e70ef1ba", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "f10149556acc874e69b49e39564425270d4c3b7eef1bc27d5bd2c93a6a293e7b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9df645be517965796dd4c9d6ee2182e011312d4ba5cab8e1af86ec1d091a312a", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "1549e6b63b2d43c9a1856876c15b70369ab6075a161b6005cf8f35d3c4c749d1", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "1e7f64b1bb43ccca7685c4c7e3c86063d626788948ef9aa7695eaa61ee968eba", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "584a38158c4fde9b0a31d60f4adfe48588f7d805cacee32bd0433241e62a1414", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "2582394f0d56237fb9b7a6f625fb37615c3200334e4d9f4685d44927e69966b6", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7d179eba7c51ece5cc5cb5cde40763ab40dcea7efab1fa7cd8d5a436c0397711", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "2db0924d90c5e276c0cd0cae2fe45ae4b49ba7698e12024cb1299f001dbe20a1", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "2358d5aa19a9a171a95570e567e8913fb0543e5a38fdd827c0d556f886331782", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "7d179eba7c51ece5cc5cb5cde40763ab40dcea7efab1fa7cd8d5a436c0397711", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "7d179eba7c51ece5cc5cb5cde40763ab40dcea7efab1fa7cd8d5a436c0397711", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "7d179eba7c51ece5cc5cb5cde40763ab40dcea7efab1fa7cd8d5a436c0397711", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d0341d9aa0adedfcba23f153ea4861c32f175b6bf018a365120405000fed776e", -"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "4e56ffa6c6a5b36748e330aa637632c572bb7c6021cc9a35bc4f1bee10d7b43e", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "48f772192f3ca705c074ba7fc66b1be56de10cc13c019851315a2dfb54e065d9", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "48d696135a79b35c9fc41cf026155b06d09cd40795caabf8cb34e38d7c6f68e0", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "581780c59610e23d933f30110ca2bce36e4e28a75bd4920a4719b5fd23099271", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "581780c59610e23d933f30110ca2bce36e4e28a75bd4920a4719b5fd23099271", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "ee91fd295e8f371334c5f4f787db271ea3e547a5fedef7db9da367fbe5d9ee95", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "55536442cd693dad1096d0db17fbd6e62816a93c8aa0381bc75592efa633d44c", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "580be9f6e23d94c5a26c73a85b1175ab30366cafd5b6129ec1a06a86f40a0eb7", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "49b7e5a00f3e078bb00a577eca2fed3a9cf2268acbe8438deed1ff6a617a91c8", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "f7647d77a42959bb39c651f4d828a46dbffef629a92677d219696bbab945411e", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "1f783374882ac9d39c5c8f1abd436fe59a4983938c7f2200af44a3cd4ca5d18a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "1f783374882ac9d39c5c8f1abd436fe59a4983938c7f2200af44a3cd4ca5d18a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "bdbbcddb9913b6c6b295a68bee9784defe9e38d0c5e70107aeea07b07e0d1321", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "46e0188a06e6dcaf45afb15b8f014a24522a4cd5a8902f8abe2904ca5c4e16bb", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "c4121280f67f228380bd9e1014366d251cc5d58842f7a2dce824fa1c5a9b945b", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "c4121280f67f228380bd9e1014366d251cc5d58842f7a2dce824fa1c5a9b945b", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "6dff7d6f7ff5ce0edf020a4ad557f5d27c9c0e2f637945bdccb9f6675c3a2dc6", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "fcfd1b2e45cba2dc112dc6d377633ea5e8ca58d0ba146718d92d673fde95c978", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "0559ce8a71dd18d743d4d6a098551ac36dff08aa934db0d79a97ed6f68fcc81d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "0559ce8a71dd18d743d4d6a098551ac36dff08aa934db0d79a97ed6f68fcc81d", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "e6feadaecf4445cf6d2e4c2000d8f7d04e4522b46902fb56cb6aff31bfe3e677", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "512947c27ff1e14ec33ca7ea6251e728c9c273e38192a6d926bded9b8a11c940", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "9c4fe2b61261e760eef98b022347f9acff86b4a46b35a9d4a85c2dcd2040cf4f", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "42727f9c2694997ef9c898939287f926a474c97effc000d30a377d007f9f3fa1", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "17088b651339ed5b8ff7df6e0419879ece8d56b51fb75d6e33de31cff55b6941", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "1fdfd11f748351e38c3710a4d37cf8c6aa0a5da1cdacbb0be72353cdc9045c66", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "8db41a8eb2328edcc91956d3af4b2fa078f51ec92c7fe010229c460e66000fd7", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "6f9b1863376eca499f702670884fca40b7462891b6300e5b5885bef58360ed11", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c4b350b8e4d54d0192a641f169f059fa465f3078f852e64085fd6c75ef63158a", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "113159bc307209d10d911946f0562103b87e616f8207660d838b8f0d83063f38", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "51c0d6c74cfc41cfdb99e37b0fb438c702b1ce3a9f40c2787261803692c75f05", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "9f97c607a18273802634c85eb4520beaee54a04972cd913bb68987141a9d5f7a", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "fb61bf13f0be90e730a776dde118f9376ea22c0c00a44f890f2c61338a0e06a4", -"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "fb61bf13f0be90e730a776dde118f9376ea22c0c00a44f890f2c61338a0e06a4", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "75d7a4994608e7028aa5dc4138650a30698f4ab3ba57d7ba58393804df0048f9", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "c8921b6074baa884bbfcf4058046fb4a942e31fca6f77b3a07ea407484184448", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx.py::test_information": "e40a7e8dd7a02b8a76da74a3f4d788d5c9f5bf82cbee9a1939a5e4833d717d02", -"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "06423e4133a83f01499b8fe2b5b6919048b7901f4634d5eff89d8c9dd99fc776", -"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "d0f301897dc5f0da59b6f9d8137b256e3fbae00dc6a191d48bc1cb3f08c0fffe", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "be59b796911f81472105ba7c0911fafdc8ae811e6ba7df4463da4e9528c45b15", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "42390066b484d2f1b8804218bc7026a5c4425b0273537736b409e6a00b753cb5", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "5e37f441c92f5c0a49a8d1f879d50482b49eb2fffab6968dcbc386f9b193e922", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "42390066b484d2f1b8804218bc7026a5c4425b0273537736b409e6a00b753cb5", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5e37f441c92f5c0a49a8d1f879d50482b49eb2fffab6968dcbc386f9b193e922", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "3db5e378840acace48b8636bb786dab1ea420c1f9408011f82622fe171702216", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "9a4dffce3f6493f28beca5e239ac240b10161096bccf9fad610ed1c884a6ec31", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "0799df22dca9dcbb2d9a4eb9f24ee9d72eed08fe4261a1f0184207b8d4379081", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "8921148c6ccffee4f5f4153841c79199075ddcda53e92bcacad3f90027da5a79", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "5c1a84cd0d06ed0e6c2ec2f561d34606c30ba898408de37638fff961eafa8560", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "c1b9e8dcce66e97545bb647fe3c481fa031e60b40087f65d7e9ba6249b0b9909", -"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "cad4a52f1c18a51f39566e89385bf2922d875c1638577f7334c3311c69549791", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "617fca40c373fbc465a37fb3447cc7d2ac559da61d15a36d17b8250edf08ff78", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "d5a4d016f1c535f3e6ac64e63307f0a035aa9a169a40c222a8dbfeb4b5a2778d", -"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "c9aa7ae124701bc36d512084685ccae78c40ee6facb01117707ff2e7c543e296", -"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "5e1ea872ac252aefef4c820e7640106a81d561c2fd9672bdf44583f26265f453", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "fa29a43a100cc4a28244eb329b17b2d4db67cda9c54223f89e0346ee019a021f", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "fb04b125105de1029a7b84253b5538585bee19534edbd5c3373d6c38a18da6b1", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "0b3f2a40469e42a5a7cc3faaa544e885ac4b1dff3708f6cc76480a2b56336f5f", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "01365a5bcd53916fba6efd32162d5ed213e43583bb4655770b6ed97a5ec0aaae", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "fb61bf13f0be90e730a776dde118f9376ea22c0c00a44f890f2c61338a0e06a4", -"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "bdd1af8ce3b39810a5ca3e890107a59c6068ef8906f39937824babeb3ebe5306", -"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "1a477e38005fc1c005f3efe4bcbcccd3445b58a3b58f656085a862d8594394e8", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "cad4a52f1c18a51f39566e89385bf2922d875c1638577f7334c3311c69549791", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "3fb29a7345e2487bd5d48fc5b46576e57318714200de3776d313f7a847119883", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "049f00ee5880ac76861502800f484112c6ec949bb4e7d72d277c7441960e2e12", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "e51568ac5d523276f0d921492073e2652adf8d3e11def2646b07ca2bc624f876", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "cad4a52f1c18a51f39566e89385bf2922d875c1638577f7334c3311c69549791", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "3f1605244a9a661ecbef8e512bf72bf375e4bf7008f19f371a77a263c8cd03b5", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "cd5f37cbd9f94ef9e8daee20d03a73461c289ba81390aed155b1ae2911b5ca05", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "4f61169652314e9e90fc6aa4df579d170178d89facf68c71ecbc41109c890e96", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "b013a8b9942ea5c01829be873ec238d31b9030ded3d2380a7a5672e89c80f9d9", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "3f1605244a9a661ecbef8e512bf72bf375e4bf7008f19f371a77a263c8cd03b5", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "3ba9e52acbba70903df6a3403b1a0d45e74fd600f88b58a2356ea0d445569b4c", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "ad6cf7b44a678d202675ab590ab3062008402b0ce8a356fd2b9dfdf28f32b6a0", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "78cf491631e9b60dd41baded3429a18c10d33098e97c71549119ac0a58a35092", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c7b0f720d63a3bc6b4e6b612b94ae3b19b72a4d9e0f56b66832bf31d9859e4b8", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "260db4b0162d415c41033df761e1b1d69944e23f5a0c86396caac2eeca0a3ee2", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "27e5cd1fba903e06470e1b6ce9d617ca654168fe1d73674ff363482dd834cccc", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "0e0d61d8b339845c00e9cc722cfe7ccbd1e7d11bac050e3fe70adcf234652c89", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "f939cf86601b1a10be7377c8ffbf6d2eae841cb695442f58171bde0f50fd82ad", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "6325331913f0a2a618ba3c933653c6aa4221f30a3e27066f3577a3ce45c01baa", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "0fa26f97ebf7c888873699951281b1a2ce3633cc541753b4ca189dc787d9d4fc", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "954c8f6ccd87e93b8ec94db0877d43e638cff7f0cc705d5a151c40d37aaa10ba", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "e27aced4e36bf5907df10328af10ab4c0c85bc29e178de5f37dbb5933417fdb0", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "fa070f4e8a24a7b03c102c62e971a22afe21af30f4fe35c4c155b6bcf755acda", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "ce4f2a9eeb9eb7d68f428911eedb7878bf1e5f5b1602fd884ccb5a9a273a9702", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "fa070f4e8a24a7b03c102c62e971a22afe21af30f4fe35c4c155b6bcf755acda", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ce4f2a9eeb9eb7d68f428911eedb7878bf1e5f5b1602fd884ccb5a9a273a9702", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ac8a0843e256727d1e4a1fb33dcbad3e7f33be7585ea6e4aed0e753edb580580", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "691a42cd2087c5a296952a2e6a0d74cd1e34979269f4c5dc7ece737f7cde69ce", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "cb5a645428f3cebe33fa5c28933726c093f8bd375ba002bb6c9564dc9ab45fe8", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4e4d0f100b5ae6bb673e65b2c72bbd8e2e70de1661fea9a3751b44ecc4dbb019", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "b4644a4408d34e916c58c73c8f7ae7f1fae686aae3d0b6e5120add538aeca11c", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ea817c7b827b2fd149d02a4ccb41350b201af575814d04791d89ebb3c18d9cda", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "8b5bf4a863dc2df160d90cce32144af4e17d1cf4c2bc56947c5428797d09cde4", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "ea7db77e079d2405360ddbee4e66cb623c9183554ded14ab4cfb92a7811328ba", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "3687cb1ec6b3f16cf782aa9baeeab0790e437c28cd444b434d02e9a0d1ee6c15", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "3687cb1ec6b3f16cf782aa9baeeab0790e437c28cd444b434d02e9a0d1ee6c15", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "3687cb1ec6b3f16cf782aa9baeeab0790e437c28cd444b434d02e9a0d1ee6c15", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3687cb1ec6b3f16cf782aa9baeeab0790e437c28cd444b434d02e9a0d1ee6c15", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "38ac60627ddf9f74af5381f4c2711f5b9e79ac727bfaa28f155bbd9cb3fd51eb", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "38ac60627ddf9f74af5381f4c2711f5b9e79ac727bfaa28f155bbd9cb3fd51eb", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "38ac60627ddf9f74af5381f4c2711f5b9e79ac727bfaa28f155bbd9cb3fd51eb", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "38ac60627ddf9f74af5381f4c2711f5b9e79ac727bfaa28f155bbd9cb3fd51eb", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "27539ef4380d037fc9180a623b518f11852eaa8a3202145ac0950ffd389df8aa", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "21d83f3cf674c1fb032157a062c4c87f7e9e42d6631f1a7837d16f665bba384a", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "1becfb3eb637dfe75998d840290f8d40a9ad5d709ad689640da7a96113914985", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "1becfb3eb637dfe75998d840290f8d40a9ad5d709ad689640da7a96113914985", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "7375eecab172bc52c07fc9051e7f51601a9a53936a72b043919fe848df4d2e82", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "bc2e7bd5cf4a3792710fc9428b67c30168a274138bbf0437d9356ad3e1ed2927", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "6777be4cd5439dbbd7db4c1faa9505f3d66bf14bdf81010e30b61fab657286ef", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7375eecab172bc52c07fc9051e7f51601a9a53936a72b043919fe848df4d2e82", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "b24daaea3a70f2cb761c38a03bf1ea16a03dfb6ceef70a2eefb46329729ab48f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "b997f128c107f9455e7fff1d2eb8cb7e7f9d9f8ed4b92914048911e47ffc59e0", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "b997f128c107f9455e7fff1d2eb8cb7e7f9d9f8ed4b92914048911e47ffc59e0", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "b997f128c107f9455e7fff1d2eb8cb7e7f9d9f8ed4b92914048911e47ffc59e0", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "b3f12fd4320071414f812207cbf462d629aa2d1e11e5168fc8a202b5ec56d57f", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b997f128c107f9455e7fff1d2eb8cb7e7f9d9f8ed4b92914048911e47ffc59e0", -"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "081c0abd92427b58c77ff7863e14bc43cb1fe702571f611c38642bbbfa068e37", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "55099895f21155b8deea9a33c0d2c6c8e83877f43cb6c01fb8ec43e1af368184", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "99323b898abcb7754c219b8b0bb8c1e13ca58ab464fef84afd3612c9dde8284a", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "667fb26ec5341cdab2e45309613222666045a25e76904d1f501b070cdc681cac", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "709ee1fa77676c6e288af36704f4ede5f4abfde86ac6a5bcf8ab223e2635dc25", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "83f406252a21dee2e642060ee7fc8d33e185ce6f47285953f9d427194b83fff4", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "5d8026e76c352a95e987077b68a75515e64a62848a6d108f857a54a483f67841", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "80f086d8d3faa04304c9b62763e82a75677ae22fc7347a3a152bf212caa6e9f2", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "cf0df1b8f83c674c03698417e68415dc2d4bc74f35b8954487b4459b2f841a91", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "68fab9332546d355d104eb21371bd6d490347745b3ccd8659de735313a1733a4", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "9e5e4c81cc6d20506c840312aeb236ccf68c9fbb1cf6aaf1342b52290d5c2aa4", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "9fbb6cefd2047345e085fb7f19780a106991b1209e36250bb0e2d6e9ddfce55b", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "589f2f2780f8438ee43535914d25dc3242233a02b0ff446e72f974e6b36dda98", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "44677bf711d7f033cb43fc1286f13d4b13d92feba81e3bf2758644650f72d4ff", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "3f1605244a9a661ecbef8e512bf72bf375e4bf7008f19f371a77a263c8cd03b5", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "5a11b5ec5bfce0fb5c26b28621168655d5a9516586509e1950c3b885017da42a", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5bced2b264b2abf6ebe9d0135948d20fde89523184308d4cc468e94c439021ed", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a3e9c317b0c90eba0e7f20a504a8a289119ce2afa53c3c4c21e036aa58e60478", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "5835e3301bba074f5d5f6c470e6fa399e247124fb63a643a0bcb41d1851291ac", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "1931dcca85943b86d6e14100e9026c607b7c0cd8729507ccb76d96427de0bfe7", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "0b95a95822842c2d8fb33fe6e767937835da2286053fd62a7819c3645b6db323", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6266a49f87e7fa7fec4c26eebcdd2fd5b4e6fe2002a737cd57d17392ea93643e", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "0f91f8010876a46e2ae6b87d28f7a3903b8c82ca5ce23c1d80b7f639e36e692d", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4ae294865e425c3be800d6033aadb78e8e7672b3317d64ca7de4589d22f894df", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "6f18a6cbba077867aafc5c9963d81c0dff4390592e5435d5d3b8cc8365ac0650", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "f6b88818c3c9d16b07fa9f590573b1ab90edfd2993707fbf1c786ce38e70a2e1", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "6d3dc9f8315bdb2b998be592617df76dd9f0caecc0f47cfc22598464b06674db", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "103258788f094cc1aefe482692900500fc65336158be366bf47e6d0ac26710b8", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "20a08076ef9186fe43672d9ab3d3638d49a0c9df2066dd34e3529fa4a4766814", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "4b57a22f8d9171557af91d18a1455096785c14f081c2ac24ad2d7a5258a5b518", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "a0b3bf24ab0cf1682262427e2c4c9c2fdc5491eb4549724e5488e75ca4136751", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "cdc0ed1f18ec23809629e51db356ee76d3d8af913cedd35981289e517d776a30", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "f70d1209ee28dd83cc17636f92d54d76282672808459321460d44611e9aee3d8", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "ab9acfa412bbbd3ec19260036647fd53abd43d985e3fa86bc3197a60f7edc040", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "bec77416772cb2cb3b02d907016dbd1aaff6c8511fa8d241dccd73444e549f1d", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "aa9a6445e470a68edb1752f7cf5fe7a4179d377b950fb1322d09a085d1b9fff5", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "cd3d252066b9a4a6a013a1abf7298556b7162f3a751b189c1531ab5f6ba44da3", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "d99531850795fc8041c3ad4de93b59bcd381941aba38cf2cb036a88965ec98fe", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "1bb3eab2e2c294e68bf393da46397b17f9276adbcedb04ee1e21d8fc7b03704b", -"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "899cda0597bb21f4a87ca0236b56fa2537e8d63f15378d1398951504f732bc50", -"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "f48a9fa36292a03497b58340d32de6f760307ec4879d6f1070ca81b8eb3fe07f", -"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "57cfb8a22b5f3f6cb65c965744ed0d4c5da73a85dfdafe303e1221c63929b80e", -"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "25351b3538ca8aa37b6ea5acba18dbe09d6df0d55b629c590dd5f56bf0e9a127", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "638741c6c5193fdeaac84876deb4381bb146fa4f04bf6900759c234b69b6279c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "7a7335ef82924136df0fda8c49c78d9f7f86817e4852272c705959e12c398dfc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "2483b4ccc73f734d45a8da57ac1b2f9d008a34a4b9657df900df75ce016b2f4d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "57d8f54744cf3613533052605096a36dabbff2fa521fb740cbfb691e0048ebd1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d57d0b5918cda72f0e6270134234e179edde9013ee7c71118b831f368a3c33c7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "39257f5573ce9e054b892da66002fd4600b1b89acbe0e53118c273018adc54e0", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "1f6ac439debf61228ee50b92a7b9f8bd746dc0dbd428eb233d8e9fe7747ff965", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "02d201f3af0334c0c65cf0e7c84f193b5bd78d87bb4e4c5d7d5edd84b6c23efb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "e22b9c2b872bff13bb2b4501cb7daa81513ff3187dd54c9608e31a96b7a59e32", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "cb7fd2838726e57c1cd54b5a5085d51c83bffe80682fdefa3f13b7cace1fa86c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "22cd2fd6576ce3eab041d2fdc4ac8f0b02bbdbd5defd4ff5b922afb186b1b6be", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "773cb7f8eefc83ba7729e9159e4892478becb72d64f598e7f6d409258a112c8e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "c2cdea9afe809798f16ba8f555d4e766fbb839d271736a65e6c5ff6b48ceed19", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "14376df28fdb7b5bdc836fa0d77d6c407e56934be8ffb52a80971f32589eab39", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "b065b18f8c90de8410472dea2a73754d296d7e8be6a209a465b94392ceff5537", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fa2723d0d1eb94e2741e81a22639e0edaf4d62cb95f291b7db57b00374af906d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5af691ef03e39d6c0419877ae6e6af099d12e3ccbf8b31e016e8385e5836a9b3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "17cf959f2162fefe9040a53ab65432372c41411e13b6bed0e2cd5c059ed50098", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "01c4ddc884351ed28ea975e8a2faecee84acd490ecc9e975b0632b088c8525e8", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "dc1e626fb6ccc4fbd70b65f7ea89e7f42e47aee4caa72aafa5b9bb53304a6e68", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "0b676f1cebdb3c3882427cbb1f09f4458a3576a844aa26520a2af2404f48c029", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c174c213d08bf78f4e253b17add361712ac203df03a507fbc0f0af436b49d13a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "dcdcbe82bfeebc3c8cc2b07841860a2885effdfea82430687d44f60fbd4410f3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "e1ea688e85ec37464c50a9cfca991154e5427ed58171b5a9a4d3832517536146", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "007a76897822415a5676e1e660939a764e70ee4492ed6b50b2c0fdf109268658", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a0c59033e5024debc4cffbab4a54dc99ba7ce4d37b6d7345debbf463547977a7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "26fddf81c6162458bb09f9bc07834f7e2f65df80a6c5d21ab82204465bd5c92c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "65b40a783dd26e3f6532590c34c60494f1f8a62dfbe582187e9e89760db17fa9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "6b191ba4c5ee21f1950589ee4aa5f6e06687fd20daed7cb39fb5c4d7382b1e7f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3ca03d81893f34399d74a56dea79f4c946ae38d93e3b4f8b66e6f387f3d82adb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "80ea93f5fc92017e492ffcf7dfc56c7dcbd8774fa0154561ef3d8c7242d27cda", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "5fe5fdf1dd308f3328c9a48476a4cba58ed16c6de9e64af20a5bf0718eccaabd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a9ba452b20204b6bdd3e96c6e5896207331009d85533ad3b36fb11ca30359743", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "19b99085f6e9ccb34def6af8fb8f7628c9d792e34434f6ef1bd0a42589272e13", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "34f9ca3af4ed2ae3b4535c378ac0a220bcbb51528627894dde5180538cdb35f1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "69d77e11a0ae8bfd67f3d18e3cb7a13bc97fdc9b1f2af76d474084ef09429b67", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "5321af4241daedcc6f8ec1ea64a25fe7da9f8457d768cf9c8f7396780a511c75", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "a73dcaf4ba120322c09801f69c9021c39bfa69a14caf125420f785b1e8e0df7f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "bf7ce413a0f05182155bced062300952b336fad9cbd0fae69ae2ecdfbac8f9cf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a4d800b9d6ba9c50bb83a8f6007396a8b53906fd9d21a272424615e41ba9688d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "fd394cdbd52f8f8a228ef6d61d91befe950f838fd507666115ebc90ba7bcbb94", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "99c2cdcb621878a8f6eb7ced489d08591ad40634fc7ae02dac756b6f2707fb19", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "3023b41576117720750192e35fc508c6584f74d7cac654f5a2cfa2f54963302c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "4e37168d4b5799ba050803d7a96d9ff0f6ee92b4c155f96243efed8afd1f4acb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "4c2ba34c37d018ecf0571afcb1b9bee0dc8fe35e7743c2134721b6a7e99b9ab4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "006bf3e339a62deca063cd91a793faa0feda3f602ed129e1bd9d3ba51af77931", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "f37a0a5a9d41c8dacd88dc5986a74e580de7f0427b906ad1150697aa5a0a6330", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "b5a61763fed10689689dc11857a7e769b2f98f252b39404f74fd8a89f79e58b9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "7667049119897d807fe5a40e06b3a85878395d3a98f3a9b6c11940a69b283ea4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d02b8b721e6ac3165e1ef5f4acd12b9a93e031471ad3e45596c9c0ffae3239ed", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f926db033dc5e438673a15c05ab7b9c25d40604f8f99bdb294cf5a80c0221cf7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "4ac0e7ed505ed82cb223b9aadd1bccd44572e95655fb3a0a5c51b0da00004585", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "177555b827281de3e81d4c8014f5948ff6d54abe2191fa7f4c366ce3c920866e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fbcadda2c7df65f5d3804d98fa7c1affa00c1e5e51f01124960be516fcf4d877", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e381df872f47cc98bd390f3b07bbd1ec07f424bedc34065514716cb3a165f8df", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "4dc2a54718d53e89b9a7209aa4ff5dbfa16e9c850743af036bc1dd09418e91c6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "c18a7ef995d7c525e5eef5f084315bc58c15966279b85223eeeaa7732eaa91b6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "6d0fa35b22a649a9e5d10aab74d5d437e095dfc1e75942628404ab6cb3345e3d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "0997c2de2bff7465c8af6cfd02c04aecd89fcfe6a6af93c8c79c44fae25a3876", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b88bd0e9ff2cbf394092e664913f8d899a412425a5e3db7d0f520f75c33c118c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "dcecd2657aa6f39e3cb6f85bda97c49ccf36b96ecee29905e3c21d73823ad9fd", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4c5dec20ebdbebaeacc707c8296c6d645d5733b6a713b4030e20ae5cc3723218", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "0d55dbeb6e6277858290b18b67b233c6a9899dca97f77abadd9ed34e51ff2698", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "042780b6a45b8156beaa35af848d474086799c9ce66f4704c6a33ec77d02cebc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ee2562c2d8c153f15c2b104cef1af24ea3520517acc01818e2d48387fb1fd60a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "7fca6b7a15b3252ccbb2bc5a16093d18602717041ff00f6234d83735f233082a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "d9439276112862a0c2ff3c16af0cf182a0b1efaf13ec2bc3b4b6f6a6d335ea2b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "261deb36de8607f86c737fcfb9cfb7fa1317790fd1307a6eb621cd70f4e47253", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "040c8c5d0a789cfef2db60380041f8ccd8dceb442bfe9e1b8280ec2aa63e25b4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "64f4f86cca2673a9cd5ab6e155b8edf6e59f27689856d4ddcbb379138d707dae", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "1160929602aea9c0b56fdedd095ba44413ed19c74fb694fac0325a15b437900b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "58eb23cd1cd187db6cbaf89b6899ed9b591d692a572874415541fd7d27cf9130", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "deb4444562f59a1914a4c5342956a48871fa50b87d4349849e61a0306fe617d1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "88478eab6da47ae6d56f8e3ae1272210a85ff11ee98091938edd8109cffda807", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "7a1fe6606438e6be0726ea9facfd144027a892919d84e0df01fec601f3584d18", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "9b320859ccdcc87ae7b6fbbab7f584c97142c7c5cadca721732576c1f8d1ab41", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "a6cb95a29577a724bb6f287b33e9e4fc893ebb54191ad796ed28834078f38891", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "f6a617a757d20c026736ff8cff16dcf4c409c71697f238b64a0adb81e6161744", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "2ee7b595b056359e7227a09663dd339d8985bd088b6f444d01d2a9e9b802aaf2", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "00e3f03a8624d46c20811ced1c8be00f6ac1b9b04c498ae164ce7aa327de306f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e4fc9c200c6300e6b0d1ffbe50ec3c77414c0882fe5d22a249550d84e7ccf162", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "7065d6f68cf1e5822221657bf8cb1d7ce979f0fbccfff7dcd8128c8afc0c2c59", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "d92221e893bbae8ef691f9cb6472360b2248fc98d1158b1f8293108ac6e524c4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "1fc1219eb3a8e0ac28b54cf7bdd969d2d025078e0eb7c8e8287f677dfda79435", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3552eb144e34eaade43d2897fa2f01310d9af011c14564ed187e344d114aba13", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "026465c5f30b73af559134f2a7dba2f0caa04eee505cc5fa07cc22a74d3cfb9e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "16f33c6f25b1e510b2abeb49b99ffa22e6c942348696095dff697f5f738b0167", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "788f3588e89d7a5f019e51340232f5784b94bc858e4e7d56be5cd6ecb0962554", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4d5d3e5bbfe4911763a44cd70f5c46046663450d0d1c722017203bcd8ba82828", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "72cc42010b07134c9fe4af9d1d48c6c257fc495221f86d764d6737156b04d07c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "be1a1626cf5c5adc4e2788b7784b6398ec7a8928e4333c74a7176129e4e9dce1", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "f1a0b686f188f7020d6a080d8037705f9c881c211513aff8804b72c3559688eb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "43387ed6e470782e5c42f4765a9e01d5d001204a5a098063b70ff6e751d9840f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "7e6c9f4d1698ef73ec1c06d989025ccfe091162c8ebb4f83539253522603e2ce", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "01a2450d9e9921ec277d0e5a58c7136e0e6f922b46e5a8e6b04532ed7a80edf6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "73b6b0eec2e97d526f0f2a95c3a1f9481d32c6bb09670a29d53f89544f6b0b54", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "e3a2f463ca9202f4b35df5a4a4d5a6e2a762660fe1d3a27809275cedf715c580", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "9d7137b5879bb10bbb0c5bce7f28038e2185b4af5156c302f5695ec8532f35ea", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "5791da26468dc43c036a0a2d4fc3001780cb8ab4eb353336ad6a7a8e3040f684", -"T3T1_fr_cardano-test_derivations.py::test_bad_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "920bed98995ba6aa83dc7068799358bd5bbbde1a600d74139a779aa8b9818331", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "4843e0952a711496de4828b5946884c7d01c6e3100330bc1066121c88109351a", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "085b13f5d9058a5788e33b203edfe0a812af45a72a501b4f3155ae03b24e100f", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "db1264e9d5b2892666def2acb4c3e3c8d6df3488e23c7c38655d5e4c7521355e", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c7fe473b47154bd3aa744999a83deaae756750d5d82c10d4b4266f2f7b112464", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "99a30636995b43262ae346bb7081330246601e0a3a43049a77f7a466dc104c17", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "7b3b032ce220dbc49e0d16ddbd2cb6e75e335e2543006cbe8a0807e4845afb0d", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "13bbfe8b124e70b8531fd6e640fcb90efb52884310f2c9019c97c7c8581e19f8", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "3ad3ed254df485cccda629d8ba95dde53ce89b1686263d67fd80fa618fc6ba19", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "4226597061991473bb9edea7882bde206da8c72df2e4cd9839c7ad730be15712", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "ca382af5f63f5e19046b7895f92c20723099c73083cd3c3f093b8f34b45c8f9b", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "dd44d5ad33fc32b6a0ed27b30a7b92e0d6c83d1165b9a1d63831b549356d5917", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "e0bf1e3d93084afb6d96a6b6cbccd4660a63b7d40ac211bc8e17803c00fff911", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "9e9249ae7384b6b51aa0be181290d298797251bd218a996689dfe9305320fc4b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "3c1486fd48bb2cc5419b7393f3ba7bc7600a9862808b3a9522c9939a94f309ed", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "0e48e214d630cb2b85643506a564b8a0ca5d1c57b1a39eea4ef5dcc257c54577", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4d6d11b3b13f81457ee292531e95dbb940a8791e7b2c26d19c2dc11a8da32ed3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "02b4905ae23fd46d1d3b98f80853d08e38bcc47731c938192d6b85328e0b201b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "aa2d3b253ce8af91aca5296850515b9835d22373ec63d500deab25fe3965f240", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6a324507813603b274d0fdd565dfe79f57e7bafbf424016ee51a1be6fc45b0e1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "602b7bd4021608f8641d3f0e80e11a9442f50c5f5aeb8b0425080b02f0b13109", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "94a7ea5d7b873bd2ecf78b6055efd68edcef9b4957d87bc6125d535ec8d4a8e2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "3452bec02c63212f2dde724343e079942cb3ffd5cffc2805c9b8f192b6feaafc", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "8b58bb4fc1362864a18a98b617faee92ff77084d0190ffe6e0259a5cad0d5bb6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "b3d414f5ff871e22025a363ee3bf25187931fd29db7efbc0ddf56f47bf00e67b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "b3d414f5ff871e22025a363ee3bf25187931fd29db7efbc0ddf56f47bf00e67b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "300d58791ceb64abfcd23feb622acb953a4fd9917276e4a41076e49a0deba262", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e0dec6e33a724c551765209408c86edea78695846d6ae91b1c8466abb757fa46", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a1c2fa6ced7ac89d73dfe49fbcbe61da9f45664c4751aa042fe219bd620335b9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "6a52b07392fb8744a4da8e0634aa51aff0ddf7e95513c5a91ea2b852a588ac3a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0472be3ca2e52e115c2fe46ec6a58539326f082d6b47c53fee3b7e21ef852482", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "7095b0b877da1d53a7fe9dd19e1c1e075fdd3d887604c47b77d8a87c085d32d1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "853b3a1f40aeba1bf043e14544fd57d392c236dbc232b9f6c7e5b018140a1e25", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1c76a739e6e35bab58130dd296b6292d89711091e38502f2baa7eae548c81223", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "47a586377df8a1d50cddd2b846ec305debbdd323645488d92a8ab180bd791c47", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0472be3ca2e52e115c2fe46ec6a58539326f082d6b47c53fee3b7e21ef852482", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "7095b0b877da1d53a7fe9dd19e1c1e075fdd3d887604c47b77d8a87c085d32d1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "8abacd55884dedb2a907b8d0bb88c3b3638272f7eaabb345257c67085ce85cd0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "cd00d01a95d59b3b05524fe27cdeddc854110d0b0fb9bd74b31304bf1f5bf6bd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "45144165acf3ebc20b8389bccc2ef5d6c4e1a70a35526cc3d8a8ea118214d68b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "8c75b88234cac7a872746f729960b2b0a53c2abb856c0d76d0907d36c8d3dff7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "f47a809cb4552d6736067f0acf60dc35356e27fb2d4631698096a0ade6dac80d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4b8a5148975c76a1517708514be50eb927b288c497552099832f122a723ddee0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "c37dd848f6e3eaaef08c620ad7ffb732667396bad68b256c4b34106dd3d30c67", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "21fdd6f8cae3aec3aa81f01b99cfde8e6c2b1595deaeb97270a05d92adcb459c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "4a4c6d06d8e7e143c0439a9115b326a90d9eff29fee177e0dc438bd640fe074b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "ab6360e430f7a5398e701ae230bd98976bade09532908950f72c2ef9f564b660", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e0112a1ed8932a97b663d2bfe89806e3879869d2ebf8d16497b3f65535345538", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "3a167db590cf080be75f507c08e0bd428513c2dfa35734d9fd962ef8d16d7e96", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "980efe50cb54d0d40a6f62baa2e1ea1a61278fbcc9ef46e059165746f53acc5e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3ec926e8d366196bdda54ac54baa76e83454af718ded33655411f18fec219900", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "ec930fa60c3e134dbd67f9cb35d43f107b32a3edaf0e0d5e9c4beba974e5dbed", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "a712138093dade344f36cd4c35de92f6d480ec72c0af0ca2beb2fc1b0b17f80a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "9009aabd12e43046e73b05460087cabf467143656fbee483327bda9290e06213", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "32cc4908c6e18e36a375618458b67bb94539e228b43a7d3ea4f5e9cfe8027c61", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "2af5de4a1db365d2f56d08759c1cc36dae8dfc0d27ef5b81ad9b21831da0b1ea", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "e232f80006c34c1f25fa275b059c90cb495987befbb6daa9998dff536ecf443c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38efdbb0c183bf6d26c8d44ddb1268219880505372b085da97bf5bbee3c507fe", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "a56a893eb64ebbd36e93a674f8e5933dfeba35ddcff39a4b449d82ee68d83317", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "7ce2141ac484857382977d80a0321130a4d18c8f71b927fc42f9c04ae88e3dc3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "85e59da124c747ba1bf332c9450be62513fe6cf2738588e90beb313854d22b3a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "3d15d750e628d419bc9c1e97be8000089dff61dd013da3be15ff4809832f0905", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "be94448f97ac0bc51d53a86b87436f7e2fbed66f1c98a6c0e9ed79d78708bc89", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "86d3ef7cd59bae4fc620b274336c3da368631640637bde36b8200fdeeeaf4ae5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f33c75edba4d136ca50d2cef40fb97d9bd69c7c8de92de372490df60aa3984a6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "a7a82516dc2ad3605970cd3807830dd3ddcbb4d30c38a470c492df0832bc7c53", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "a5a92904a8bcf09d7477da1e7dd0cfd8482fe896d3097c9cb8730dde5ced1f37", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "1713b33ab66f20a58c25ed94656b6cd2c4ba641840bf536d6f24943cd4d81a0d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "68ecf4655c9e1d82cff60721cbf64dbaf02d31beb15cc9131ee7c0a4c7ae05ba", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "bb37a50ec402232b1c49e06cf0068c824a71c69db9a6487ef315255d96dfb722", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "98ccb6e1bf47f4c81ac1e8910cfce2957a9d8e7351658dd08154f6fa9b3499fd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "4ef3841b68645145bce6f6601c98b4d4bdfae5765a412d5c107a36a44a33da15", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "466e59374ed366e9defdb1e05fd61f14688f2b8fed530c3f5520d754b458e0a7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0ae120c8002dadca8935a2866a3abbd0cb6d2204e73c33bcdee9e31f9aff9ff6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "99d36bc76eb0ddf48503585ed074d554366473d60d082024658c29bd19290b13", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "67cd5fd76302bf62317e6f9f12f5bb5d7e7db21b6b7c12d33bb08ee4e6180e15", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2d8a34066c761b305ccd8c998ee39505e6eed06eab201c0981686f8774e4deca", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "78d0854b47e680b872bc25c24782f141c93cf8bb9e4fd2ad4835015c4035da06", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "60782ae79097b90ae579d731e696ef679d587778c8f60c1e6d74bb97225de218", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "397778dbde4352e7dd156a53652bf9f4130a83e1936a0f7437658ad59894faea", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ed462e828d7ec1ef8127c4359c7c70113694cfee87fad428b1e898be71d012f9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "8e2c8678d2ba0f415f5af1a57ae8af1106992103e268bbe51f722c61de2e3e57", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "04d25fb14c503888168a496ff89b6c0e633c8fdcbe2d1b1fdf720fa251e4161e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "23e815dbd50d41df4c24ebc658423249c36a486d1a0e051e7e70ffe271550e30", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "a84c1304753e633725ce80cabe5c2a58c7ac773a9d9156ab0e50c5061e9bf3ce", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "7ea24d530462e01f083f070a5acd5019cfc810b61831feb7958cd6a747caf904", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "27f4a87b50f14a1275b7c455692da253273530cd2606ab5164400484f319827d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "41fc4dc7fbe8c3734e77f5d7c37bef38d0897960dfb701da2296d982aff1f75b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d5ea62127694b17df613fe42455b2779992df7f8a0734a791f735d2b6531aefa", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d5ea62127694b17df613fe42455b2779992df7f8a0734a791f735d2b6531aefa", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "8cf5f9f48f4e323d824a30e9535dbeb777825d129f79b11bac8e3095ca014fe1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "99cbc05ae2504875618b921bb35003d1243f87edef0157b77685b1916cb71a7f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "99cbc05ae2504875618b921bb35003d1243f87edef0157b77685b1916cb71a7f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "9207458d83362879a5469e9ceae17c89ee67a8a0534c2e933c4d8f6b4a1d806a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "f8b936d3c929d595dfb0288efd3d9945ab3645a95f506faba20b1db02317171b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "ed89ebdb9e2bfdc7d2944c43b9760b4cf1d16462632a8fb62fb8d33e887e8726", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "f23422a8e473038b8b1d52202a46bda4ef7c48347e9bbb64b2bca4db47955eca", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "521b169cf3fc32444fb74fbdd95de4258f05a0ae154f3fd64a13bc941ea69b8a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "84b8abec35c8c09dee62c84accf2813c51b27b4b01b880c841661afb469ead80", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "d28b0cf2362c5dc58adad370f7c1c3e5d86a836bd84c269a2b6984d43e021568", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "c482c3eb1b464d09246ef469329d3c5b5b6e12db7e4d3d629a4364ef3d4fa851", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "b3c6833390b7b8015d5ea47e293aa5da3baad4c5948a8e48ed6e151346c6062d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "dd507f62c9115b22a5eb68930eb56f7d209e081acd89f4530b04eaba1ea0b9d8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "9e9249ae7384b6b51aa0be181290d298797251bd218a996689dfe9305320fc4b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6a324507813603b274d0fdd565dfe79f57e7bafbf424016ee51a1be6fc45b0e1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "93ed3c2fec6f3f90da0e92c4429193e08851361769f92f97e95187f81604a185", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "c9558281cbd4fe395f538a1bb8190ac11862dd365a104589e88d6d2d7cb11939", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "c9558281cbd4fe395f538a1bb8190ac11862dd365a104589e88d6d2d7cb11939", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "b2d9a9cabec0f9ed41f516c3a7d2d8c7f62a763588b1ff4111cbc844b95353c7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "9f1d4cd22b37ae6fe173810404a95a2650213dc2e19c41f4f74732e36e7fe28b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "54a20204f9055ff352152ee92c1247225caec321a288680755e8e58caf3aea11", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "2e21e0c4958863205a348d5cbe3fbcd5a4dc53b5d2385c16e1cde514a81c1d1b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "53452f78a82087537e2dc8f1db233d0b053ab65f18dd84508e80f60c0bcdef96", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "fccfb39f9f063d7702e0fc625f8b6b7fb0aa89eba85999f780d78e8ae25877d6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "50a9289c04795b0a32aa07518bb4c334213f2ba64e364854ad06d35447895558", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "31f11b9c281ee5143cf261ebe7267d442b15a285761c92532724014a753f2a72", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "31f11b9c281ee5143cf261ebe7267d442b15a285761c92532724014a753f2a72", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "31f11b9c281ee5143cf261ebe7267d442b15a285761c92532724014a753f2a72", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "31f11b9c281ee5143cf261ebe7267d442b15a285761c92532724014a753f2a72", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "53452f78a82087537e2dc8f1db233d0b053ab65f18dd84508e80f60c0bcdef96", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "bf0643fb0cafa4e57426d11bbf3d3dcb0cbf2cce61bd71c5736a46ac06602994", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "5c9badf8c1508e5a1285db2509591e677c99b67c8bca62e25386831146bc2242", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "cfb903ef12b4df898e36f2d74446fa0680f0b362baa830eb824e33f87760d922", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "6d321adbaa7c75e9c644905a2f91453b1f21e0288537f6a2cc8d7802bdd19afa", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "85ba6cb99117aca5e7b013ebddf95088ec6f3f924583dcea16a39a615c532433", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "bdf89a79dc457c4c0ea7794edb87b991e2cc5e0e96d1340a51a29d1eee3b9c03", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "e7a46f1f0dd9f3dc0d6f8441f32fea5f29b3a2601158eac5324d1be70259a937", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "1b9cb45a6e55129d089b8edb18ad0e60db43b58f81afdb21ac1beb0fe86a950d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "7764c1a5aa6c3f28554aca1f7879b4d58f514bea302b8649dda955bb30611b9d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "4dfd83b866ea36df5544ca35c52dcc795257462e354120fbdde6929a4b3bb18d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "3a328876590f61b029d2100e999f6d4e12de715d465f4130c8fcdcb2c171fadb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "c9558281cbd4fe395f538a1bb8190ac11862dd365a104589e88d6d2d7cb11939", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ed0c638007185e1f5147f1157a07aea54816678d86fc4581aa5e840c23f5ecec", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "933858b130ba2bb04a31e49851c1721a698995038e0c1401bbd8599811eddedd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "86a45d81421341bebe9f09aa00883fde11d9f7317c082e2b30a8dae8d85f9f9f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "4dff038ffe758a358b9ee127379bbd36354a5b0e5a32952630842f0262b8d380", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "7fae6bc149ef266db51e53e8573292225948c8a4c84945bb4718afd7a165ee48", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "a9e1e7c318757f847e633c50d76df9c46a133b4fac04add0b69b2419500c061b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "d3fd155db38caab7823a553e6926aa83ba67b354bd128de065fb068a4eaac214", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "a1f7a0290b6caec29f318611618f15ea33d30230a81f90715ca26f2c066037ad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c96d9d951b022f7d3c8aea257373b6203c142502f0cd347fa84fc7a16b03e0df", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "7e54d60407a2d496c1eea5d081d1cc6efab561f3be3a1afc64a9a3d4efec0d7d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "6fa742247b94c87b4e8f0ba975d613d6ea703d6de8225ed91705170715e17dbf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "fabf015088c41c912a37d5faf67ead8284587671a7d31dfc0cdd8302c8373fd8", -"T3T1_fr_ethereum-test_definitions.py::test_builtin": "c1ae143540f408984ba6ef1b8f8f23efc806a8b0cf0cd04ee1b99d0afb14ddc0", -"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "5406818155b401a324815bcdcb30a30d21a7fc3a9f06b970b7db09d49b39bbe3", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "e9470171d89b37dae1592ea1e3402a1edd2b724cee82c692db69dd1ca33e690b", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "a38d16398b9bb6b6c32691ad3ccec30662f70d3fd0b2339dcdc98ffd6a836168", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "f49539c2ee7a9eab9db449ba157a50d887af949f1ee1b6c8921bc8448c9ec92f", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "22bec2e0d07005bbe038f8f4aa9f09597f86b2a26e4cb98ce1ceca75bc016830", -"T3T1_fr_ethereum-test_definitions.py::test_external_token": "d96cc5e60a2a13926903ba278030ce288090828d8c1301298618cfc71ee4ed2e", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "8cdca26ab6c21d77d40ba85f752b84f64e7ff09936de5e9a9e19d678fc4b80c0", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "437826f66a34e8278db977e2f97e54bd8e26b6938663f7ca59005f15b79e9e39", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "7d7b051faa905bbaf809ecb5e5a350e374ea4c2be039226386bf0da786303df0", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "f664b02b1b6f66744829b787519cfe023b321b9b2fe312667e516c6312699529", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "b8d584e02787cef2d3c71d0b0505e479280d99d3b4b280618505f2ba89f3e4cd", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "6e96630a0f748ac0e088ea0c692b67894f3056bb9c7319ff454c08c5cf16a7c5", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "eaeeb5e83d2422cf348f5f7aba4ba76dc28dd1be7b24512f23027aaa65b29bfb", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "42aa43a0b260bc50de5ee1007f33e7d235ee311a155daa1490bd3a4d8c44c6f4", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "33c96caad45f836fb7c46ac13bc41d00844d6ecdb1293b5a5ad7ec0daa74b216", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "aa1cdb89fffdf36e4cc571c7c6cb0e4090952f1e2a08bcfd36e3ff7be65a5a5c", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "72e3cf8e3bfa9dfc24da46a485ea258d0594111e8045c8a7dca02407db0eb05a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "390e3ca66f27b6fbf1dfdb522eb52887732775ad0882ec9d6cc2b574990cc2c9", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "826f94278b4c288a0b3ec8b248d3fa66df7b0d5b3a48b8a1ab33814bf6cecbd6", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "92231bf1384aec93c86b61d73c9fff0edb8ce0707ff4bfa676ec89680eaad540", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "3c2c15bc46e556a2740524dc2eeebe4cbea9fd04212d5967441f14e1b47fa254", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "3c87eb21460d4dc911f90e142fee85825cf85027c53393076e195d854f6c1675", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "a69a552e6c0bc1b52c1827f316b6fc0399889e0d91f73897b20e39dfd15b69e7", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "5006797aaf2595800b2ca6889e455f49e95ff97bcdd3e0ec019dbcfd63116eb7", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c9a6fc77bf761eaf9d4a32b30a59694824e8d6a7f45cecb8e4406c4d57d1e79b", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c311cea4ff3d8ad616c049b5feca51eb0d931b0b90a787ce6979c063b01f735e", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "2e00c9036b3aa54495595cd13c6d88d8a6db6ec77e45083570cfbe3a9943cea8", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "92a41d023ea104f6d64ecee2f686f3897f007d45e39d66ad278a7527e95f1e46", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "4caf194d55da76a2e23dbe82e3c601903dcce6f0bd69ea4d625d5d2705ff2233", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c311cea4ff3d8ad616c049b5feca51eb0d931b0b90a787ce6979c063b01f735e", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c311cea4ff3d8ad616c049b5feca51eb0d931b0b90a787ce6979c063b01f735e", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c311cea4ff3d8ad616c049b5feca51eb0d931b0b90a787ce6979c063b01f735e", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "05608aea09638a16f71b677c742714b1014ef7e71de8556b0c9ff8177f9bbad4", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "6fee6246cfc118111e9760afbba7792a7c3e3b0ff072b527cd6a5d6393a26b3c", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "07273d0aa1d7ea4a3b9ff22a60d98114b5afb201e707d364d429efc588d84ee7", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "9d6b69fcaca427435d8730db94e92f3a2f1c0114c92fd6db6258f8ae061a39ab", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "01ccb3ae6b608a4b58f72123fc85aef9bff3668e0f33dd05b79b45f9f57ad6eb", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "539cddaab4b060306eedb535ce456edd020465cb55e90d8cfbe235f69a4327c8", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "9f483529dedb81325ee74c6ff413a7e836d45c467f11e25c3080b6f582837d1e", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "c595aa08b059be6583d584afeacc72d86a6b456750d3aea41bdcc843427b6148", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "346b88667dc9cfc6c56d78b098b6a63fb9cc43611e93ceced3a8c086f4455e37", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ecab1c9cb17d62556f1509da3bc5b9e9df347bcae1b77068f134f8d75508ce06", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "78c41871bcd623e73b0b165c861e2b330c69f463512cb491b869e9a3528184cc", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "a57dd32dec963d92236fd5302f6131967b1691d53bad66442b16efec76fd6295", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "973a35eea9767ccfcd70cdbd5baa567f9e41c9080d475a24c0bd8dea8bcc177f", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "07ed8eda51eb361c1f9880b8a4b62332a719414e23b207394367747d6f4d8b0d", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "35da7f7438019dc5e1a4a693a5c3110b26cd14f597e2ba443a9cd6c72190a6c5", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "7188718809f517f84a1d49d22d5a3575b15ab1108f963f847867ef9488497324", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "35eaae569fcb64a78f772b62012b7fde330552014506042c011dd410d1879e3b", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "a3214462bc208d3e5cd13d3956d3cf1edfe55fe4815aea96c81b911d6bdbcde7", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "78c41871bcd623e73b0b165c861e2b330c69f463512cb491b869e9a3528184cc", -"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "656c54ef5f8a22c3d3181f2bd293aebe3de52d9f46c24948f467dda1a5df9d1c", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "0e6cec8099ecbc07d167d46a9014511baed82c8f1185bd2222255d3c3d12f123", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "93d6f2251cb2b3ce4663d3d2dd378ecd9836651f4a98277771c921578d6e81bb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "115643e62c52d365020116724f281e7da949ab602907eafcd3923cd60e8cc17c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "93d6f2251cb2b3ce4663d3d2dd378ecd9836651f4a98277771c921578d6e81bb", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "dafa894762ed9dadb04379eb87276a5dc05313ac0d7e072eeb326bc6bd58ef86", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "dafa894762ed9dadb04379eb87276a5dc05313ac0d7e072eeb326bc6bd58ef86", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "c1bcb4f84c1dd5b5c992b5399a7a15c13bf8929f9b530a09ccdc5e95c0a9628b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "48a55883513f4bfff1548bc883f8d9fa126df1c81ee7636215fd09f086fb5bb0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "12670a0ffea66c9cdd5965257ddc0f35b8380c0fc86bb421e9b3612d6f05dad9", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "3edadaaafcc26d4056479ce93965edc5a5b63144aa67f2809f08be7cf6487138", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "918e75c64960ae81a360d66639a49fe72f878b6b4d4a0f35aa6309e824e0a1fe", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "77305883cb99b15f23dc207863d801d2d7cf4628a873b9033a6d98fb8e0e9574", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "54a7e6f03efc0cd9a053e5b022cd5ee82007c9b6c8ddbdc862fecb8a82a6a5b8", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "663b60e087b59f887b19889e22dee1166258c442310713470f5b4febf93e2559", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "8f669ddd8033fd985e3368f405c12086865af4ea242c7a97d67713e1aa389f02", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "01342dfa184dd0bac834926655c1cac557bc692e4a4d6989030f9daa35cc6fd7", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "b59f6ee248af83b4eacc31cec3ee938e174faaa0ea84512ee88805b25076bfc2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "01342dfa184dd0bac834926655c1cac557bc692e4a4d6989030f9daa35cc6fd7", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "62ff269e402fed96ea403e6394c8332106e14ed396f1b1a3d502fcc691fd8230", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "62ff269e402fed96ea403e6394c8332106e14ed396f1b1a3d502fcc691fd8230", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "a468b75a352b7f9c707fe888e42798f2604f1051465d6b45d25360f63273b9a4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "6aa9dec373c6c39bc5674b01b318790fc74f422db524bd5d39cc20feb201b2e4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7210084753f85914a63c9185eb85e20be20fc2d10b4a4e06224589b2fad7bfcc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "3633ea70a11aef095b37a284e62de951254301cba1b329fcde6d20556ab0516a", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "918e75c64960ae81a360d66639a49fe72f878b6b4d4a0f35aa6309e824e0a1fe", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "9007bbd3ad9c71e5523637200cb051c3f85fbee65b090da93edb3ba11a61193d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "7ecb74c79a3c1c9d8dcf6467e779fd5169147e001b321410054c6dd781cee82d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "0f9dd6747418f439ab4e46072cb48ac71129eb8e1673e9cb321b8b831b145ca0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "77305883cb99b15f23dc207863d801d2d7cf4628a873b9033a6d98fb8e0e9574", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c1bcb4f84c1dd5b5c992b5399a7a15c13bf8929f9b530a09ccdc5e95c0a9628b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ababddc21071a446e4204147428a92f6dc763acf972b7d1ab4ba23a1e4345544", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "12670a0ffea66c9cdd5965257ddc0f35b8380c0fc86bb421e9b3612d6f05dad9", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "1104f5cf9d2dfa1c4ccdcf42d55aed69a652a40fac0f40c4a903813c92d83614", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "3a9717111f5ad2d355927e8eaddba225d1be9281b21b8830d41e8e7bf483e225", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "77305883cb99b15f23dc207863d801d2d7cf4628a873b9033a6d98fb8e0e9574", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "9007bbd3ad9c71e5523637200cb051c3f85fbee65b090da93edb3ba11a61193d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "a468b75a352b7f9c707fe888e42798f2604f1051465d6b45d25360f63273b9a4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8871f37513aa191666338b58e596c4a39061c57533893dfb5b23ff5b1e54419e", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "7210084753f85914a63c9185eb85e20be20fc2d10b4a4e06224589b2fad7bfcc", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "df9e6f098b192d241d2e0c751b751adfd59927948c673662c570ec4441a15fe7", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "ee5fc33198868cac13196084172d5f709694d0eefbf6786a2dc9cb5461affbee", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "9007bbd3ad9c71e5523637200cb051c3f85fbee65b090da93edb3ba11a61193d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "49a431bc9007ff24b2fea9600bbab0824ce8096fa6da2d43f3f0b29573ab3b8c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "49a431bc9007ff24b2fea9600bbab0824ce8096fa6da2d43f3f0b29573ab3b8c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "14a88ba4ecfcab93ec9756fbe4feb856520607ba682c72eb89c308547a6c5370", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "926fcda43586a593fe354d7eff54ef7ba468e6bdf3e80d6c5bacd6ca18cc0b67", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "6f2f12e0663512e764dba171cd999707c2b1cc2e9927704a9f3e6aa3443df3ee", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "6f2f12e0663512e764dba171cd999707c2b1cc2e9927704a9f3e6aa3443df3ee", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "df86ca835fc00e6d508bc55003ff1a16e0358f9af4fdf8acc209959a246c6b35", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "df86ca835fc00e6d508bc55003ff1a16e0358f9af4fdf8acc209959a246c6b35", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dcbb0efd6402292f5e8c7d1da9b5cff32d7450111dbbc779290200484192a3b8", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dcbb0efd6402292f5e8c7d1da9b5cff32d7450111dbbc779290200484192a3b8", -"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "562c43449765a3b8ae3a57093233aeca3798b1f70ea150060994490772b0f60d", -"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "562c43449765a3b8ae3a57093233aeca3798b1f70ea150060994490772b0f60d", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "7336b0a7d38e28e55a4b8a5748cd2f33f289c7fcfdd9885374da6fc65ca71782", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "92652ebd64d41277ab6716f7b58d817f4a4114b23cf62ee4e7ecc39998412d38", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "e04cfe49c4a7704be5a57e5704eec01954868f80096e0ac78f934d31451a0e8c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "0412970ccc3ce666cca87cd7c6600952be40735fcfad68bcbd36dc965e24390c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "c4a45368ef8076c90d1bd7dbbf3c0ef9b8d7726de41608cbeaf13a297ebf0b8d", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "2569139bbc3b5165e725ee09126bc5405cc53db86fee8611b6956a615935408e", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "82be29cf7db7e54e61af3795605bce50ae46345ee9ce5669665e8bdc914662b2", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "6fa2d65e5b95b15068042c4ef32e1a68947d29fc8bd90acd1eb91e1cabe9388b", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "d84b68c067a3f47558cac8f97a0182ca2db6b6b353265abd488c4b139047772a", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "117a47020a545131d5b46e0b1648beed8e5b5da7ed741741850b96af3ed02ae0", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "fee93fd9f5a52b6527ec260a06349b338ee422f4e62400cea2303af0b5f10d98", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "10e967648565469b273da362f9f516851dae0049437a8778464b7dcb9d543cb6", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "dcf1ee6366f46ddc2922dc03deb8cc17b4368419d9ea83cf61f9573e10993aba", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "046dfc5970ea20e3a20bfa23676494d6d1e0ee8af5a0cb89db9e2e565e1989a0", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "c1a967e22991ff07e9a010433812afd96f693bbb980aacdb4bfcfbebbd5b3906", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "58b596f923d7b4c107f09953574342d727a9a665d47856150a681f5f0f2002ab", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "5170e424030688b02d69287eab6d2ab6b9af03f50a3579d78d3e9f0534bed7ab", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "ee5474823db3443d3331e005d05bd735776e3b12f11c67470689c1e9826d3084", -"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "5429b341abd8dd427710839e53b5e80c567b1ad9fbb0e80fa5e43cdbc0adda8f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "8d7cab3a239fc2b93a824f26a423d0090123da576812ecf885a00f343053c7d1", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "a0e2b0fbb8ed2933331c9164e10e10d8f270a0f5caf0121a6fd281b2ec4b4fb3", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "65e2f968dbf96ddcba3efedcd48047cf91d455e67f4abcc72a456f50b3408b95", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "72044bebd59525f5771aad115df3dd94abd3116e7172ee34db46758e0ee0831f", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "69ff8ac3ff60432a31a6860070cdd63b295ed0f6fee511cf9b77c5cb440936c4", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "11dd405b79daf68e062631b4886fec52dca6c16f44eaccc878c3356566064c39", -"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0c211bbdd9c4f5a1d3c0556f2fe91e2c1bb91935650dc7472a354aa5fade13d6", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "29bf331a5849578e2ec3df5c69240233c4fa922b902957c0a671bff348f4a39a", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "3113558ff41fefc1fc378c4bb9259f75f32991a4df5f8eb004695f63fa8672ba", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "05695e65e048edb2c56a1601fd29223f7262b30937ccdd77b2b0c0793fa35118", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "0045a398e3449054327f3319d85f0431b751f44bb4b0f8c7b3993df2284c18eb", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "8f4ed7a1049ee80a79917685eb587b9ef20e23cb76f0dd6d1b7f2f2079ba0fb3", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1c6c6801f7059a08c028d504abc90310e05e2f5d644109f2a5ddd9e6a1f27b98", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "330a5195d87f4bd034041d61ff7140f7d81694e2b66e17a564c6afcadf86dc5d", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "51f9584d7bc01a584bc1a8e4cedb744e5c139265a36ee21b96cba4f98d37f640", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "74e872e7907b493b8c4472349ed76ba7a583df4d98cb22b7f0eafcc1c1df3b39", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "545147ed21b5842cf21746541f7c69c90a49391726cec813aa3c75b1aaf2b09f", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "68b55511b2a92fc82c57f8f0c95f672b2e4b806307bf78a30ccf4eda593869c6", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0ac264390368b5acb6e99a2d9fd4ec591add570d51325ee18882e1384b16b6ce", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a73b504d80b40d09dcfdc171a244a5893dc5f758a574e75be2ea7bd4b91aa2e0", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a53b8bbe7af8d64ca5743d64a37bcfd8aa7b0b7f7b03cf01696d27b1da0ff7a4", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "700ea1471a45434b2994c9a00d03a2a53224aa9201108db115cc5f843aba2c49", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1c6c6801f7059a08c028d504abc90310e05e2f5d644109f2a5ddd9e6a1f27b98", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "27dd89605f334555a534d2038aa15835cea2bec21755ea99b31d024fa332c653", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bd4df1188fbbbb3e9a9e0abb02f66deef28810ca145b29008333cdf01a3292ad", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cf5dd4a444ff15e58b4ec1baecbaae22bb22872aa5e419919f22a4ad010afa26", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6356bf9a91e6a103ba5478e21a6d545402cdfe9989926f763a4561340c8fcba9", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5741f3287869ac3e301e8de0fe3969346f6eb20b2beeb042d93b4affd0cfd12b", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a4f84dd8df4b6bc6933c39ab3bd1561cb9e8b3cdaca7ec5bbd4be7e44375e7df", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "f7b6ea1e96561fd8b8671fac1f2f7f04fa804b42257465341ea7ae404940695e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "f04282cddf58e4d81d4392722c5b8a77e68a2d108870cd282104c10c25d07af3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "ab51559aa4b9865327b0c12d210de300364ec1eee5c5ed64da288541daf3ac46", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "44d30c0592a3825e6e0ee3eac3f316123e4d154ab3feca70c6d68c74384b804f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "fad7ce0d9f948a6057a724203f3d3134e96ef8f816415fe80c054fb5fec2a8d3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c4cbf117a0821e50932c58725457ebfba978f2b152fefe01adc2adf763fb642c", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "af3249331f841ed89e18682c9243e6b21ab8299ce187aae062c5dd6eef20dca9", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "cc6e347a66e7fc4b308b5179ba4d5ef83c487249656d94960881609e68d0fe60", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "1ddb21a1c1de8f3401ca8fe6b7e588589ebd32da29edc3d4a633dc6f241385c5", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "3572d1a8b49a0e29ba34516e9c6ad79a2858b42974c389195b60ba441d388a53", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5039d0b90b13b135f7f95bf313406cfbf7717e0783be74b83960f86af057a3be", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2cb2a8e7aeca5f8bf114b43ee82ac348aad0e1ff5e7ec27b9f3a36747042a2d3", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "022620beb8bef7f69465d2d38474f7bf5c5ddba33ee43f09be6350ee64378975", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "721ccab3634941912714d822da406b583c34966b4243268a809886110ce4e4b8", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "fdf7110435e6d0ff15e3c24baa5b20924e3159112a72053885632d25ad995b0e", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "be5654c8ada648b04b330689ccdf4ada807f004078e1c7c245966cd4211e1057", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c0e431086eceada42987834769bb2111953bc4842b023932c5092aa29b195c4d", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "580dff375b0af246775004ccd53df9468b6d496b0f97a7998ca887073180921b", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3107a376fb96b0063acbb3e1f9082a600aaf0551eccc87ae36875c12fbd106ec", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "74128fcb7555a441b8b7fcdcc681f2ef400f79f715d6bb474bcc347bd6cfbb78", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d9fa30df9f91a6acf5b5eb05d2a24554f594215d1d1653d523275ac58950bded", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b5c254e2d8236671f73a5f12a4400fc98d1de3c5c787bf99448c72161682a3d8", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "67a403200e92c91436c3ccc463d522efa1319a2640184a8d32a7cd6364806d88", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "eeb214c77f059c6261206b163e2c2d9a09a80b89edafad3131aaab4d56350694", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "1eff1ed9c60943369f0a400f0722e570eff48e4ded73aa4345fba24fd827ea7b", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "10d2a505e2d7f4e8caffd397b75eaa99d048cbcb9d12d172a566b3293e17c390", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "a38baf7bbd7b2c6af02784c57c3074ba0907aab4048bd328314a59009b25fe6f", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "9a455131e6a8112e76bf00457943ecce06fd0f9b8f42e4890b6aeb6253af10a0", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "bda9bbeb89e5ca5e82dd3020a9f9b54372ad0cf8a174feb25e9a65a3cc967876", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "dc57e9e363ff598fb3eec8a29965ec4f93a804b44615d7964ca819a95ad5e585", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "5a098e683fa2fb67ccd3e662f831ca8e603ae4d47b7945edea61419757cfc73b", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "e7282815b647fdb64d08bc71b56999584a74b9354bf4874109642699eccf00f5", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bf8f29c0d4313692222e36318558b6d6b3bc64c1de31f5954e17692b86dab14f", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "d565255db9e4569f37842a612f9f8630e70b3f53a12a57f7ce6620d769e0a26e", -"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "7883759283821a16e5440659eb3d9b01f61dc7a06009dcca28457e3515cb0d96", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "14bf04adfbd92b52382bd04ff20ead7a54a35281756f0603dfea1f13fd8bde42", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "ae6ebfd51c0676cd134d54ecece320886c18806f2ab0ef1c6fd697aed78d199f", -"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "10214d5c9fea6deba8663bde1efbaed99befd8ab82cdd63d66b58e0f015bedf4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "db3a30bc6a98b76ee5777696c19daf4199a53597807aab264a024d01a38f54cd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "cd5ae60066bec8d60552249c2b8613a86ead773b49edb7a8ddb3712d7ac87030", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "1c2ac5642633b2bf1b3cfb2f5f8bd996f7a71812ef9bf83ef562e005413fe7b4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "13cf94d4c0665d911195fe31558e2e552e6d1dc6bc980dc32b32a1841a546539", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "4b04c74f5820486d629872a9b4c57683806ef26ccc595761652ce5d8345ddc26", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "be267f07d30b8aae57c7f5ee549bcd55dad93057a8b6cb244774eb80b2d075f8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "97513680ae8fefe106341273531a034ccec5e4e2a4be149c6cd4f929afa8ce51", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "aaade941387253addfbc8f37c553d0e07eb43d42464f8cd547d42fd66335db99", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "5a16fe81294bdc0c3b686c83ec00b4828427bf47502487a4f8f0999eb6a22c94", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "04b4bc332c834c04544e12a719275bbab5b416b47e6ff786fc483a23fbf44a75", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "ad37b8fa16c530329e50a0aaea75f24459f83a945b5a4bbca108c5e2a0bb22c7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "d1061c277e2a1a58eaa290de1c5d04f5b87f440855434ee34f903741e2698d53", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "4cc558bda4dd45fae6dd8a1c433eadb301c082bf7e7a429c5232072e1de43d61", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "328fbab44be2033e9b65527058045ef735abba0c62ed7ee8850a3b6dff975582", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "547676db574da787dc40d6eb38cd94a3de48caff538cf2e30a70106408e64899", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "a4b24047e66c654a9227d37dc2b3451fbd46c8d87d3925e2ed3192cd2fe75d26", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "46057b6e5aaf68b53b0ea0e41cf2afc7124ce8e6b9304e56d554dca7194464c6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "20aec79aec74c6177f1425b1f8251987a61d75fd80ee4cbf1f1edce6fff8451c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "49df299f125e73dfa35c177d3d00c0afa5040eb69efc69516d7ae9ef9b7b5c0f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "9eb7f1c90cd6de8f2d4b0c1183504761ca1edd23373a8e9cb5758f6decd4c655", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "4e949e2faed3188fa155131c00cf64ed853e361f6c78d79060c0e24b7f186358", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "4e949e2faed3188fa155131c00cf64ed853e361f6c78d79060c0e24b7f186358", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "5f5b0613ce4949e6c4b4a09d028e3b7b8b94e27d57b439d1b5adf14aae31f07a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "31a9265d5f702e5c1edfecc73a1c625f6f465c6746e43377548ad4b63dc3e669", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "8144beaf56f5a91c3a8e1fd02e0452826f793e5b5361cf7bef587d58e243d399", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "c94394dd2147f8573d65b89c2e90d413e342c245150086a4633abfb7b9520878", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "f9a8c48463d9c8f8f252deeac9ed3d2148e996017aabe3c5388dd6db44489942", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "1d8f9d241435776322d5f6530769c1d35254a140fc7d150117a7e97cff140f0a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "77361ef217c9dd51abb0199cfb3247ae8a362f4f884407549e8eec8ead8adbef", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "67408d2de0c2a84e3546dabd117ac3d69d0a9af7fd9ec2f1f62f9fd03ee5850c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "aa36c513e57c7c0035b732edf9924a2804cf1d26c3fee353ac86bae45ee08d41", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "787b195e19d57a49989e9978fd1b33f5ea55c06b6505ae0de8ea0ba494ec5473", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "8f400b15ae26bc53e3a9f374891600aaec1790d4d2fa4b7f321c90c3b49b0060", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "52cafd142f482c8b2f44fc16109467801ced01a412adf11d3cb667044be254f7", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "073be731df292bb9fab7c439a7c3ca4b945f567577cfa212fbfdce9a405b162f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "9a18fce5d5c2c4c91a9ff0906e438a6acfc6f7d16f407c02ad67a4798a0a8243", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7e7d5f0084e03eb9b8c7af322b1bcf52666bc13fa39a6a4f881ca083058ff534", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "5bf41fea8ef21d4eadc6ea1723c54037751f3d9b80ec5401b51714ae14c79cef", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "3fd5850fa0a88979e9aea25d3a69d02badb3e4443fcaed5e4a5532e152120e01", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "1cdcf983f739282d953f6ac9d05b09fe4446a1b0ee880ef7dbc8f299832a989b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "0f2ec7ae764ce393e9157dddc6ef493c0863a8e1dc0ca49cf885a17440085abb", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "f471e0c311798fc2e9654f05af80e34f0a72ec2944b4337e887e4550cd686573", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "389896b4cc171bb90bdd547efa5aba5fdf257e0cc09eb4c7fb417b0d2e62c6e5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "fe50fdc86e3d8ed066f4167a67e06985da052a5c82dce50e1d97110d6083825f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "077df553fd22004e6210da7f7f06194fbac2fd9d28ab95211b8b950fc8356fc9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "fb37f79e8d7d662197342893bee6c42015943884f7aa93dc1fe8ec2b5ecb9dd9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2b40436a2a0c3d5132dd687eff0ed3874df2bd9b6543608d5efc137913de1987", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "5c540196546a02b7592f77a7beb392d7a2c19a0d472301570489e8e73488c5b5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "3a0c2259776fa99160e2985fb363d9f0d4fc084fb3e105b2c2ebbccd71e74cb4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "ec8d20918fb36cde0f59ff943cdf0d229c56048722f56604353ec39914f91587", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a5466934521402baea31e9066f60dd93a993372d8dbd7fceb442b94b6949258e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "0b506e4d3c02404d7239b6fe4678da882bac1705f59c14d63a4fa5943866ae42", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "da9b454e88a1e0a79b146c4159c1a1fe7c1830c855ce280a980af8c4d36a399f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "c9e4cfcc5def134e749a8c472406271599c9e75e040e9b74bc06f2d18796809b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "1aff9862708fcbe2678163ffe7a894587b1ad31f688e458caf74f5b5ef80ad84", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "1830a8ebff806adfcd260a08d8a61206767bbaf47bd5d9fb4520eef5434e52c6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "0a73f97cdb36d6dcab47c34fd04d4bcc93e3bd7204ca87ae47d3fc7210bb0eeb", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "7a9c776c6a1d4c8a4c6e6ea0539340e501ed12e993d091d4c8390327974e7312", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "d84117ddc3273708d12f271332d1d47536d14f10fad9ba5e8bfd2221298ac637", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "8144beaf56f5a91c3a8e1fd02e0452826f793e5b5361cf7bef587d58e243d399", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "188270b97e75e50e97ee9ef4ef9474a99326e082c3dc2f2376999376b2533a7f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "7705cdd11953ace9c8f737d2f72e6888e163e026d16239e9a66a760e5ef89a5c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0b787dd0f790d9c65f27f00621bf9c0d5252dfa00b76bd99fd5c6ec5d23e8272", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "1a9de89a68e27c613de78889c50e791d854dd7d744b0b200fcc7e6cbdc90a7dd", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "ab816687290e0f17a3832ebcdfd1f55161864e187ea3272087ec88568dc7249b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "3885f37ee2f5b84503a736274c49f991d46dd931530692b5ba054991f90ee834", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "bb64ae75315b6b84732ac9ca8b12802b92305872db2f62eb0aabe4aeb3587149", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "b48446801d47e01a8ed672f3a3aacf9b2522589ee6f73c730a2dd617a1c395b3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "8df747d8c9759e1dddd445fb4a0588efb1fe25c019d0dbdc9243662d0141f735", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "1d9641ac02e2ff05a2170cb67edc80c328aa59057e4c3727d0704540cceca039", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "874734eb7ee1bd6b185ba348e2dfb8e2427149fc89ae224248c8ef2ea2c80329", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "c98e545e013f82dbeb7c36fba61d241e293117296a5fea9978bd32ac84c5b784", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "7e9463447b16f81c54fa83c2a643c57c095d26feaa7401655e8a0dbe6b3e8cf1", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "5e1cf6bf6599bd4a9ababa78280ea8105bbda6a3062d00aa6f541b243df3a527", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "fd122a92d1fdf77379c8934fe28daf9830d288f03c12f337a63374c7bb0bb16c", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "0c4d51369f1b68f59f50762d6eeeae0af2bed9ba78792a8e47440929b0a4a5cc", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4ef7d77f0d9a64b010efc338719ececc7acb1a14151a3a40f38473cbea45beec", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "e6b9acf1f91f7260f176c328d5d9c28f0fc7724d6733516c233cf89eca993b27", -"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "e966447dd6dd1387fab011976cded5d4bd827c838ba1cc37c95d8621bbc6e252", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "b591e85ccc326b6cf57e47b76ac53e9218f9e7e9fdad27205e77f6b1ef741ba9", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "9937a978bd79510361e49e2c17e07f7b36cbd4e6fc9a3d4d2b555be1275425b3", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "965b863fcb20518e0a423f4d10f02ce689960af4ce895136f72d637e5686a7ae", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "1dbf7fc24d6be2ef7d2eca3d9a017d91e3390c350e44d8a16fee8868bfbfc144", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "dce2d43d0e28583914f7bdb1013c52ef830e90883fee8fe5dcb9479edbe5d5ad", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "7bbd3089a7265b9bd74371794f01c273e0cd1d0bf50636aa89c68988cd29d033", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "cd752d3d7d5eebdbed8ad7e3d4e826672132434fcbeb7babcada876622d9606a", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "a2523f1a070767b0e36954b8030ea3f30d2d1b68deeb2f8ff3af398524a519b7", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6012ce20e89ad7e41c941f139e57d584207bc427737420a229fcb024fa01b6c3", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e77207b85b300df7086eccce61995c35d8a0373c4941113b9c119b047afa3d68", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "65c0ec7d523b23c68dac3b969325dfda612f843b2ea4d34d722375b45d3ae097", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "532a96ae734c986395962fa6c1c84b242f1af04b21647f49a7b6c1adea71b538", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "63945b2be60a95999ff4b214dc679e4bfc47b2d664348f3316a44d3c22b8b099", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "2866d9c415e2098095912748514315db90bd52d8b94437848937cbb9e9640b8f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "2f654f949be88c17ceebdf8949ea27489299183323cc4fdfc06131cce1d03132", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "5df182ec7a3950fa8d73228c334348268b0a2a58319c8a29ea0c7100bceed818", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "98f272f8efa0ca058aa052b20995fe4728289c20f25dc44c440d8d9aaf0a0df8", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "f7b6e13b6953a4add061d8eb93f58bd50d94dc584655da0707aa623c60e70b98", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c96d848ecd11007df2c9dfe4a92cbd480641095520cf0a77a433135a3b9695ec", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "15d638c5a3b2e16d62111bda8b5f5a94b03b751d1e27b9ad177843aafe32cf6c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "d15943e81516490f7e5740b1d1fa1d45a5c0eb1aeae83b4a07eea860899136ad", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "7d886af6a18ae384625cb3af71bb83f53e7952dc55dbe258cad55e698268db22", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f3bdf131a2f9fdc13997f5f8ccb3a865acf6794b33ab33f69bee90f33e1dfcd8", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b51091f6d83db15dc82fd6bd4167484c1fca176de09f6e892ea07d4fdf29de10", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "de866888dd748e98d5194c633fd57ceb8a8cffb832dbb4e9572479ae85e5a205", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "bb2e6c9cca112362a834444dc3448dd0439d65466b0f77a4dabd769e3f513243", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e94364041a9580ac17009bd422a79a04371c725b023c344d540dd63c0b01cb70", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "2dc31115d348d35e17323f71043e0c1c9e1344415ea947688c704bacc040088f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ee5f291d9746335e6667cd228e9c55fcdecf6520b3dd93455ed671d1a8e3b6f6", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "ed52879e58ada498a5aec4be1b07e19a7e43321652e2c43931b35673e7f7df7e", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "35a30e62da1c9af6c9e36b95d834cd53ec021201b5b5b78a92a36ff55571b72f", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "1eda5d1de67b1957a8b15da2a86aa39b037564a0044f53aa4861647a55d48c37", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "06ae8ced45716c7f97346430c4c9167c772634e9ecdf7abc7493b5f9d8c8be7d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "8d4747a03e5c4b553f600bd8532aa35e55696279681d86327e0db1db6a486ab6", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "b4f2668d15c90fb4b91a95b0d795c626c3b358aaf0b229224fbc45d9df15cd9d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "2871189d8c88fb27152f675e68be10f23d4329ac40c001b43ac16584fb43c883", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "44d1cf4cb67011413f07c23ea36da4509fc3926913fb33eb678d0f35986c51fa", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "bb3a68bf85182e602e1dd36ff80cb1117a6dff8a513072d5459eecfa08823253", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2cb5014bb5ea9037f269776bcfccae02a73cf3a6910d6b638745bf5decc538f8", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e94364041a9580ac17009bd422a79a04371c725b023c344d540dd63c0b01cb70", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5a8eba40e720a2b13ab45651e000e0d4aef20da2c917099a7cade728b2fc1f0e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "1316abcf9bbe1fafa6ec41c92c93bf76c5127597de521531057da4a0f19fac72", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bb82988a41e86d9297be6142aa9aa0a32dfcdc72b9593fabad87b758da7bff18", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "f6eadec0b6410bcddfb6989685c19548b19b54415e8470e8e21019d07db96d63", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "31294a29f7d8c3c517614ad9d847743f2a6ee5abe459e6c6b419be8d22e679de", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "cfcdbc90ffb4c26966289cea81d858680611ca9a7fdb2a0fd9c600b4f390f5e6", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "c03ba618ab2d5e8bf8aefbfccc00291317d0e803fa9aa766ccc2ebddf96bf466", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "62e9cd36cfa7438dafdb1cc80e4a972cc71824372ccb334e09da9018683b810d", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "c3cff068a1bb38ff4c53c9f0af9813865aad6c5f62865cea554b51df41ad6c90", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "835ad60ca3c4f926d7328ae3d8d7a665710beb08a1ef627c01cd6785d51c246c", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "cce6fb2656ed81b326298c067557bb0f97c1c2e72a27b7938686847fb8f16f6b", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "cce6fb2656ed81b326298c067557bb0f97c1c2e72a27b7938686847fb8f16f6b", -"T3T1_fr_test_basic.py::test_capabilities": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_basic.py::test_device_id_different": "0ee45dfea4994dc5753ad573c2bc7c261157ad8405918278f4dfa1683ce0e611", -"T3T1_fr_test_basic.py::test_device_id_same": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_basic.py::test_features": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_basic.py::test_ping": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_busy_state.py::test_busy_expiry": "84cd25dc854499ec9f3b61828d717f723e0aaaede31edaa23c16b120e2065969", -"T3T1_fr_test_busy_state.py::test_busy_state": "4d88792fa431c1b47315cdee6e948f58a36a2803acb3d91d969cf46b213e817e", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "bb4fcaa0adfed9fe2787d494a15988497c4470992c0910a793f16376650b8c90", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "bb4fcaa0adfed9fe2787d494a15988497c4470992c0910a793f16376650b8c90", -"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "9d84d8ee4c098c156248719e20bcec62b950d7e1371c3fa0dee68001f827a034", -"T3T1_fr_test_debuglink.py::test_softlock_instability": "edd0fcc632a9f660c69204e0be49d9595c9ee659826461472d5c6447aee217c8", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "9d6027004d77af136656d8621570fc0d9063c7cbf6056fe80c2f5bf636de30c7", -"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_language.py::test_error_invalid_data_hash": "30a4d490f3318239565869520656140d25aa91fb9704e8b5cbee74ccd93c39b9", -"T3T1_fr_test_language.py::test_error_invalid_data_length": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", -"T3T1_fr_test_language.py::test_error_invalid_header_magic": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", -"T3T1_fr_test_language.py::test_error_invalid_signature": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", -"T3T1_fr_test_language.py::test_error_too_long": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", -"T3T1_fr_test_language.py::test_error_version_mismatch": "a934fd1d3b2b10abd42edcde01ba11804710612275c56c584653ea40997abbdf", -"T3T1_fr_test_language.py::test_full_language_change[cs]": "7dbb81ba53c893ad6eb923ba190382406978c4420fad9a53ac2a968f35d2d622", -"T3T1_fr_test_language.py::test_full_language_change[de]": "626ac41668288d1a32981f9720b6703de64e64ce6b3218c2012266e5d9287671", -"T3T1_fr_test_language.py::test_full_language_change[en]": "64f789ee9946f26bc7cbec1097c01b803ade2f06adc8c9b90cd0eed6a1d2dadf", -"T3T1_fr_test_language.py::test_full_language_change[es]": "102b83872457a9fdeb0e6147ccc21b18b8a92ffc413b12663e02d3d8f3d24f35", -"T3T1_fr_test_language.py::test_full_language_change[fr]": "edcee0269b26c8eed88c73ce5aafcad0ec8715ef16369271329d9836b683ec8f", -"T3T1_fr_test_language.py::test_header_trailing_data": "2a51f97ec8a9bbde6971d617e919efc5fe89cf6fd1ba0545649135d36476fdb3", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "4bad1ca13e7900e08af7d2dc94e7626cc922412975520e08f0ef08c093423b34", -"T3T1_fr_test_language.py::test_reject_update": "55cc1dfec01526e8687b104387261b99c637f8ecfa14c341f3b8bf6081c571b2", -"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "90889a3769463179454d8304ecf1edf4b07840e96e51b7b485b47bb3c14a6cd2", -"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "90889a3769463179454d8304ecf1edf4b07840e96e51b7b485b47bb3c14a6cd2", -"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "4973b9a4a346ab08ffd6ff0c46b2a869f5952d5e0f95b6bd7a72af23723816b8", -"T3T1_fr_test_language.py::test_switch_from_english[None]": "d3a60f293498eae171a770ef7ed631693544bb64a3a231f98abae578386a0d8c", -"T3T1_fr_test_language.py::test_switch_from_english[True]": "d3a60f293498eae171a770ef7ed631693544bb64a3a231f98abae578386a0d8c", -"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "d17f1d5766f9c047f14e86b448fa012b9255426665eb973c3914a2bf41a2f894", -"T3T1_fr_test_language.py::test_switch_language": "b8c02677d8c91a844146904387e3fa204733e59ff129e6707c011adce829b36e", -"T3T1_fr_test_language.py::test_translations_renders_on_screen": "e57ecedb711f69e23e25b10a88c79d4374c6623228a634776196665d098bf727", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c447d1d0e7208761a919957250b686278ddff75e2b17cce2f10c4729dd884b2a", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "0f55e00b5ac5b7f45b04419b9050a88208614fbef5a996d72c18de46b7af9cf8", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "ef1a70cfc97f3dece2215f9a02ed32562706b1ff8af13c83f2bda4dd6026d48d", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "67c7be4b9522e1b5151b6ba2dd8aa0677bc376e8504e165655744f0a9911ca82", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "c3401c8dfbd251d154fb1be31f9177e423b2eda7885c6980d05cd9a5f4497f11", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "0c7a664e384871ff86eaa415d69ea3e224a84186640d6289710ea1bb196b6365", -"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "d07cb0e260158eafd735649cd369ac378ea588f3d4bbb0de84e2ef7abb7c76e0", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "4bc48e6f1279014f299c4f3cb4a9ca1316dd0267f4eb4143a61aef358c3fd487", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1e418948783eb4902683f2ee7edacadda05d73a9fa729195886b6435c6bc3794", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6ebdb073043241bd236ee286e138e545eaae24e4b8978c58698e2400aeaf85f6", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "06a2e3aa7851cb65aaefbf95d095fa4f00510efca0f7de151496da239614d9fa", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9c9cc69bd9b23beb7aaecc633d23a78df38deef85a88a1b3af5e102ab62edcb4", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "af35bc713d80ebc075a958acc7b1269c2e871b0fb6edfc353ffd74f8d73920f8", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "aa9561b1acf9f37ceb7b8c464212ea3521405f1301628612e8611b5136fb04dd", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "4f21ea95d722ea7a161051af2bb24e14a24eb0c972d79f83c2c037c6fa8e5289", -"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "b0f69e4210b1218889ffd36920a253e7224dfbb09581b76d47be583e1f6c7abf", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "bc64bc809e1294b4b1fcb2c610ccbc4fb2d5e235025710294c10a70f5555339b", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "cf6bf6e17869c53571358ba5fd2f01c62e4e48353d976a17436058967c62259b", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ac6a5fa6556a2ef0d0dd88c9d07da26c665a7683fa99a1bf4455cbf40fd8fe06", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d19b5df7744136e04f7a37dc4e435187872a8b343696c168cd25bf4bd2117f51", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "5fd038926462ea1ac30ad5129bc412111509319ec8f209aed33355ff1b4ed3cc", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "35dc46a4112687102f37d98f32dd1ef067d6d33b00824aeb3ce26d067c88d6df", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "60250a505790f755aee8854af3207864b1d4169d85b98052548a681ca076562f", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "f2fc8e02f75ec4772c379df8cb8ab43ba19a81a67b8cdfadecac8ce927a0d607", -"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "e28fc9de0a3d18c516cfa85439b2515fe4eff8a35d91f70005401b0e949e20aa", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "d8eba5bc93ac313aa910c15e1e07ab75bc11550226870647d78bcaa352a3452c", -"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "ceb7fc910d335b69d18d841697b589a9f3e1547948de83303cd50674d157da0b", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "4fa14f5ab22629a7341bbd090d000758ea1aae2daf63293aac974930072cb842", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "0162de963358192df4cb4bf273513442d81f160587d6834b0b2ddf4110e225ab", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "74fef86dd72e8dd280992781d923f5f64cbf1bb9ff02d3e6d014d199ae27c944", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "114a85b71c6475849082ad12cb2c6e21da7207c5252f3d80b1ecfd78a4ef88ea", -"T3T1_fr_test_msg_ping.py::test_ping": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "28af79fd635dfdfd9cb71fb1a03e37331e65d1738d1188829329a2ff274bf8dd", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "1c5e14580c12d74b497ac6c2950902a1bfc1f2f17fffcce98aa5f454411ad4e1", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "73429c585d9b42b7d9eb3e1057d562a65f8d899100f8068792575f517991333f", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "8a4347052197c7347d823859ed54636f2f1212c3f669b69c9fc88e83256e5db1", -"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "0ee45dfea4994dc5753ad573c2bc7c261157ad8405918278f4dfa1683ce0e611", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2fd8552441cb399591fe7a7d9380a0122dd20620c98e1a3e42be90e97e3ce709", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2fd8552441cb399591fe7a7d9380a0122dd20620c98e1a3e42be90e97e3ce709", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", -"T3T1_fr_test_pin.py::test_correct_pin": "e77bdc1fee7685708347b1f81c0fa4eac6c2eab28a29c4d624f1e3d43ee87da2", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "17e8fa9f575f1a26ddd78f8ccfbd20b98e5d2fb05177f1f4484a01d1bdcd0c9f", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "edb14c28b1c1a81e0029e6cebc74c082b2d76276f71c566f998033ab06cd36d8", -"T3T1_fr_test_pin.py::test_no_protection": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "5d13e17ff34580eaf3d9fabb040025c7d4cd9edc224e36424dc5e912300d0b82", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "9eaa6ad8b4def668a6f529fea4caf9474f77768a5696336f8d12a9c45546373a", -"T3T1_fr_test_protection_levels.py::test_get_address": "3a6b31767cfd763bdb9905ece207e056c61f98a6137c8ed8ef3089e1b05fe1fd", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "f050ab350b89c64cfff138144166eaf8fd754331507a871be471d4a7b829388d", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "3a6b31767cfd763bdb9905ece207e056c61f98a6137c8ed8ef3089e1b05fe1fd", -"T3T1_fr_test_protection_levels.py::test_initialize": "0e8497ce83509d9aa158957d1fd582b191f7d0855505c61b2525085a733f994e", -"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "51564c08a23ce031181432e95291999544e01ac35682c59c2fff2d896261841b", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "39f40b855a2397b2c52256d443696b5433c1a89ba2f396a39d126dc49baad81d", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "908e7c771721b7368db48d92a38dfe2fd45605d9661c7dc3cea14ccd694d9ab8", -"T3T1_fr_test_protection_levels.py::test_ping": "0a79f9519f0ae84a2f6ca32a70bb3879d4ba635d1637eda690703a5d989cd313", -"T3T1_fr_test_protection_levels.py::test_sign_message": "b8edd6de8fd5b9da2f5ce274d40f5d35be4bf3d0cf3017841c2b90b72866721a", -"T3T1_fr_test_protection_levels.py::test_signtx": "2cee3729f735e4249d352d87b8369f93ad2943cc8eb7a0547339b621e7ff8c0f", -"T3T1_fr_test_protection_levels.py::test_unlocked": "8b73f0fbdd66cfa46d39f00115bcdd1c3abecfcde6334ed23fd8e54c36094557", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "e95b9a1faeb3246c904d7e693f599ac4c23be55fdd21548386642746fd9d4a0d", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "281e188fe7e914922ff06765a8b8e0f7252c09e795f93315820a8c087cf540c3", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "27de6e612ce7cb0fe021763fc0eca64d0caa3969666e3aebde657fb11e38a036", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "84cb2fd89ce2eaaa326240410b9a6c307d5b9f8f578cd9fdbfbf0c3b0c13ccf3", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "4891130331ab27f65db773547624b991169692d7d9b1c1540174ba43f1a6b8cd", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ff38cbd72a2bde4cbb018ae54b5427b9869336aa0e36bfe8f7b522ebdda3b23e", -"T3T1_fr_test_sdcard.py::test_sd_format": "2589c6be0fb532ebeaabfe3973b59a10450935727d612e63a5ce4fc2f749e506", -"T3T1_fr_test_sdcard.py::test_sd_no_format": "cad883696fe6ed7320aeec419e118acdc897b22eea22f5d9cdff84ba5b0504d3", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "03c2bafb82f9fd94e1a5c3dbd37536ff44fba0a07013d2ed31c0055123837d38", -"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_session.py::test_clear_session": "0ef8ec19c8f6a1c16ef72a3d4a0d416bb5cf7cf0c36ffa26e98e6a468996e0a0", -"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_session.py::test_derive_cardano_running_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_session.py::test_end_session": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_session.py::test_end_session_only_current": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_session.py::test_session_recycling": "4cc22a2094fd4119c10363e58f07e8160bfef13e8c0a7c97a7a2bf12338407cb", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "3a9f395d4bcba445918148cd601e3ae5fa79d1629ea22b2fd1ff027af20fbca8", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "c5ed3679764831362a6ff1546c38bb60319a7edfc6955f898b4f67779f1908b2", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "f44e15fc6f8eefe74269308f6ed1e3c72c0ade8df74aaa98b16d053cecc1e139", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "902f20c4045dbd40a7ed87549a25b5e2e7400e7dcc23269396bc85a2283e3421", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "6b83d038d37f9216659c8cb3e24a935024ab82ae29e28621335a7cd6e9144bab", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f8dda185685ccd7d3eece8eaed0ad77008eb9f13ae4522f203f272f4940311e6", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "fc3de7b4f9d9ab60d694022b134d464f7268a38c97815efe10df81e5a11e5196", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "51564c08a23ce031181432e95291999544e01ac35682c59c2fff2d896261841b", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "0c121034cd8b20e4c55103d0a8a209e0f95e378a6ab1e40bfdfd4cf696be5f88", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a8310696d820a3b4f30e83674c7aec61661b09a96756118167c26ea4f65cdaf7", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "dab7b414af44abf7f73a58a956b176ce88b3e733bb8ad964e271c5d88fbacaba", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "dcdf7ba76597be0b129109ad441f65eacd9c1e773afc319f5eafabc15a969aa1", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "cce5eea4857c0a2f7ae527d60b811ceec327ac3a2e1ace22ac5bb74316311b72", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "4dce8496f9ad5ec342efb52407e21054e93f9831c26543077ab275113ac9ad5f", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "19238f998bb9f24095af86604d757de1c7cecf65f2cd65bdfd651d3bcbceeed1", -"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "d1a001e21774456665162646292cd69a609089075979ea7e7a0601c3884ad2cb", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "27b0abca90bbb0f19f597a3f6f6d980de5dd3f51fdcc5dbeca8e4b977119f6ef", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "55fbc2930fa383fc7bd979f8ba1d7ba1508786de3c2886d8dfb49a43bf6dc8d2", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ef7750a499b367fa56aa3ee4710d0fa200179993dc15d4493a34f51bb24a3e9c", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "72818339558e0991dd0d2954b513ff2d0196505c6be1c77acebcf75ffe82a0be", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "596525eb7f17f4482ae40fce163e1abb366c6f2de572f0125ab465211f44716b", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "54c9654fc164e76a2937bf6918d6cd21d3effdec2644d1f5a02e6a9ddda1098a", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "9e951f965a9f1c8059d34b4a57595ba1d0bf42d305e3b5c09f95e06719c2d55c", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "66dca7ffdb4882514c07727de21c78924eafe3b8f01d372c474d25148cf59494", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "31e25fb28fd7818ab18093bec525b8d23bdb56515a208a7210c5c92e39d662bf", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "4e6e8a961d915e3e2876e18e58883c735009f02768173da64bad3920ac23c05c", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "4d7dde087b3d3a126cca4ec75af677cafbd9809eb11c38c19a6a718e41c8ed2c", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "1725b477dca5f2519cb4c31d9ea7b425981e53efbf2410dab112e2d4985e040e", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e0b08d52fad946741111e051bb763cd608dac887dd2a3f152810b482560a6da7", -"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "3f2ac7effd37fb8bb0765dfc229ac0a175606ae42aa31596d958ba329bc6e9b2", -"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "cafad99249f1c03a6576ce8b2ea670bd0328765f3220b5fd0f707de3c71629ca", -"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "899cda0597bb21f4a87ca0236b56fa2537e8d63f15378d1398951504f732bc50", -"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "83e8692d02277d911a0fdb0fc6b550476cfd7a04d8cde16a19c74e5363f5a2ff", -"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "68bd09e7ca56486f37dba7e2b359610192d2b7c9904cf49419c9ffd1331890fa", -"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "0f98d389e7ae999d3494e66fb014bcff7993de5d64ff478de0d02db73a041889", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "f375b1f2b715a9781f8261aea1c373421c37fba042096464c6c0da94e0c6376b", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "b63b213b81f9f4012fd808eb10b54317be871938f4f7114348e85451f4a8f4cb", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "66b95cebad99bead194e6149f92e1f0bc0d80ce640a3b367564593bb342808c5", -"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "d9e2c718cf34f3208b3aa611eb56e7e01323241f954a697e8a260c06f2d2856f", -"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "a1dca0aaeff4fb7729555224ca5a135313c99ea443fc20e95b273f364d5c4faa" +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "5cfc60601705372057cdc48cb73a2bfa596c586fe3214e20bb68ac6859c54537", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "611c14e482cf4c9ef8ee830a2db0b752cdf5d7c48ee41f24f9ab3f5e95aac5ef", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "846087ccb8fade8d7fbf3397e5455e7b3f0410a448a3037a5bf64e904aa57b71", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "c7cc1fc1586b189d72ce8dcbc495bd38fcfa089edf38b85677de5d0f316cfeb2", +"T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "895434b304cae4560ef7299917ad02bdb1bf8f32e6b05caa3e1f37938775cb9d", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "aa56f144d9410c171cc7850702d203289101bcb9609b132b5b9363f356709d03", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "ea5a82740129d994c4896119b0b433f10ad38b09ccda8475ab1bab4917e380a1", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "0b837c989389caed569189440b4a0802282b095e7b655aeb7fa0a3f13c081a3f", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "aa56f144d9410c171cc7850702d203289101bcb9609b132b5b9363f356709d03", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "ea5a82740129d994c4896119b0b433f10ad38b09ccda8475ab1bab4917e380a1", +"T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "0b837c989389caed569189440b4a0802282b095e7b655aeb7fa0a3f13c081a3f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "66916b6ed3c0a710a268d22cab13a6a431f6b8521cb31aeddf97ebc604fb888c", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "f8b3684d2b01416a933a1e05bfe4f91529269bc6ea4eddfaa575cc7890383cbf", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1fec2c810e9631239d1823418c415ae06177abfd45a7e24efc607d152df8214c", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3f1da5b0111e0a220948767be850e97e6587292ad6e1b102e4c98162c75b3b99", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "846d2f32234374d528de63705c519744254379d1e56128aa90c179b4aa286aef", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "846d2f32234374d528de63705c519744254379d1e56128aa90c179b4aa286aef", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "430ca1c36794926de3cd45887ffec373d9ef8ca6f6fa2dcc8eb4943809cf57c5", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "dc4919222f78aeda8bb96bd006d1059d4c845d63ac0a7328a55cb591ba48ac36", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "59e9617ef1581ffd472879ccc60ae6058d2d17a01f7d2017d2643152074acadb", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "17777bd37c85bc21af5170bef430be6254eb50d5e6c493ab4b48b794cd3ef5e1", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "17777bd37c85bc21af5170bef430be6254eb50d5e6c493ab4b48b794cd3ef5e1", +"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "2b345550f55f93131dc992681b134e13fd4651c0656efd9810b27b06e30a4865", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "2b345550f55f93131dc992681b134e13fd4651c0656efd9810b27b06e30a4865", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "c30b05acfe06e02bf9a8439b33a1430483daa74c66d9dd12c2be4b32d3f10bdd", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "07f535e20eed207523f5ab65ca8d20f2cc4a3bbdf5fc9e4e8c3ae2bceb580045", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "d904567b233b9c3c2ef2488bc02573ec42bcb0e94a8b56d502d566e51dbe8c1b", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "ceb1559b54639b0ecf4492118e6cf634b4aea04f9ff6c94df9d5b0b95ea0a5b6", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "1c43a65d51253cbce41e150ba8b14d376eb20a8890330d6aad7ea36c88825daa", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "980271773cd806ee494409b4be96f258d17d8253826da7d20ed09b4a5a0dee00", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f864ca76da0c64c4ac545dd0be973b3e3476213c6458b38382443bd397617650", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "47ef1f297ce14e8669d31550836ae1a79870e02c4fead8eec33c21bcc7877763", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d2c91e92cf91836644dce8e25a4c826562c9a0699b24003097ef67611a4b601c", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "80fb7554515d342ba07c14e58b7b3e6fdaffca1a82433b258ae9ec174da82c47", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "7ec71d2527102ad1ae892e9999eaad53a31d77f4d34202b201f27275241cc3fd", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "6df51c3239623239801740d991f689e6177f50cc211e9835519d51668f469c37", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "94f9cabe9ce51fe11ba1f4a8d4f03c231571edff91ba0ce58ea117f2791c8718", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "a9443cd68d039fa4da50c6b6c7da781c6e836b1c606d52e95638bd01407e9c47", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "312381d35c19ade7b9a389c802d94c72f15902bc23c335cd48f8a71ff0ef8229", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "833bef70004c646bb8bacaadb6f97e264fc7310f6f3dc3428bd24203c84e6cc2", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "020ef8d2473d931c71ed0d7c43f27e3476eecafc2334624f64a4aea3fa06d0cb", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0ee8e3b847dfbd93ddf71c4ebd12e0f57271e0448ba48bb1738cacea0ecfc671", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "106d86321ab59e95181ae10443c4a1b5cb6ae07e4f3f9f8ea4c59a2d9c3697b4", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "f13682230b40fe101bc9d4ff2190e7dfccc6ba08d07ef7618a50b06cb886fa66", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "f6f5c2c96a86425399629b6503e205b9e6bff04d57a510293dcc6c41723c609b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "2fe301845f9bcd51dbfed0274df1dc215e13257d11631faf0994f557874b8037", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "2de49a943c96f9a7ee82fba87c59156670acbd712070d5a3c4c00f35908fee84", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "980271773cd806ee494409b4be96f258d17d8253826da7d20ed09b4a5a0dee00", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f864ca76da0c64c4ac545dd0be973b3e3476213c6458b38382443bd397617650", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "47ef1f297ce14e8669d31550836ae1a79870e02c4fead8eec33c21bcc7877763", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d2c91e92cf91836644dce8e25a4c826562c9a0699b24003097ef67611a4b601c", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "80fb7554515d342ba07c14e58b7b3e6fdaffca1a82433b258ae9ec174da82c47", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "7ec71d2527102ad1ae892e9999eaad53a31d77f4d34202b201f27275241cc3fd", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "6df51c3239623239801740d991f689e6177f50cc211e9835519d51668f469c37", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "94f9cabe9ce51fe11ba1f4a8d4f03c231571edff91ba0ce58ea117f2791c8718", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "a9443cd68d039fa4da50c6b6c7da781c6e836b1c606d52e95638bd01407e9c47", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "312381d35c19ade7b9a389c802d94c72f15902bc23c335cd48f8a71ff0ef8229", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "833bef70004c646bb8bacaadb6f97e264fc7310f6f3dc3428bd24203c84e6cc2", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "020ef8d2473d931c71ed0d7c43f27e3476eecafc2334624f64a4aea3fa06d0cb", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0ee8e3b847dfbd93ddf71c4ebd12e0f57271e0448ba48bb1738cacea0ecfc671", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "106d86321ab59e95181ae10443c4a1b5cb6ae07e4f3f9f8ea4c59a2d9c3697b4", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "f13682230b40fe101bc9d4ff2190e7dfccc6ba08d07ef7618a50b06cb886fa66", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "f6f5c2c96a86425399629b6503e205b9e6bff04d57a510293dcc6c41723c609b", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "2fe301845f9bcd51dbfed0274df1dc215e13257d11631faf0994f557874b8037", +"T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "2de49a943c96f9a7ee82fba87c59156670acbd712070d5a3c4c00f35908fee84", +"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "a7ab2f35f801966d74aeea0666c8704569607200577d35d4ffd5d84b79c4f7c9", +"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "79b0d20749a95883455d9f5468226432dd4d10b6ea1046b12fae611ea3153810", +"T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "2ac6823b8546880c5612db42a6d68b006fc65e344526d3ea2e54ee2e2850c1bd", +"T3T1_cs_bitcoin-test_getaddress.py::test_btc": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_crw": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_elements": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_grs": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "96851bd45a326396d6eb425de0d9403f77e3639e6b03e52210b8a38eecdd59d4", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f69eca7f9a61426c834f289c63032d30d8cb511d8ccd4558ba3f055fd443f910", +"T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "7122ddb5f868a3e7bad43d483a6635d0de4a8ed7d35d1df0b7d670441dc18c98", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f8db619ddebac872e6911d2a8ae4662e2dc1b6b37f1fb6fe2d42ef9cdff31c9a", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fc0ddc2846d0f37c293f8ebb39ad8293fbf2415ac8bfc21d4b5a42501e6088bb", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "c4f54550766972f1da772ee5bdd2bff70b6a9755b2fd6afb7600fc16587a1f95", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a150527610066c50ba291670241de0a032bfd6b475b724e8571f51930426cb38", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "bdb35cc04c1641eb0540ec6093101a238e1ecb8bbf5bc6283eba119f24b82609", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "480e11247170b603d5f84c97245fe5d6c7724183e67e52f213ef189928af9d33", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a367f2e6dd274ef945fa023fb611588dfd64cc1ce04cf9fb2f300d7302c7002b", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "56f94d648dd359ba37bfe9592b573bcf199905f3d38b95aa7d2c8ae88e6ce780", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "906c1ea7ba0520157e876efaa119c350258270969d711c1386610b6c3c73ab83", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "cb16cd83d2dd4f77843ec442f7ee8d282933f7221fc5d7f524811f088e22350e", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "3a5811fb5a4bd6f26840e50815f6a3e7223f2f3eb0b71129a9fc6fdfc8f96f53", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "aeffd190d72d896fe7bf8c476cfc48cc1001b58eeb0716daac24beeaed88e4b4", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a5d92c28d77c3cc0162d673f443ce069817723f7439aaf99d3b475525e8e7405", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "fef1e65593f7d44f0ef422a3bc1d1d1d4c7b3052bcf1f29e814c8e62d611bae7", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "bb8ac476ade00fbb997ea2e64fb85a416eadce6df8eba6c3cd8d78c87d45ac4b", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "58b0f1bedbc5e4f50e6b80e2f087a6a7228c15c661e2d4ac102380bffe012a18", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "6c938e9fa27a83165f7f7a1f963699bc23de3906de9e00e30109b2140a5018a1", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ab642c88e2ee4a8bfe134a09fbe25027b821d99917c89b950251d89d36021ab6", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "069185287f8e7dc7b3ea290c2948497281f98ac170da511a32d8bed4468db703", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "5301471d92fcf7a96b7b53f42c2808536b87ed52b576693de6dc94a4fecfb8c1", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "7eaca87422a991ccc41eac85ab1d6871a7e57cc6d1b4ea914392b3e7d552790f", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e78a9a8e2913d070cd644abe775b355f45d75d2b05e1b96bcb2835a775edec2e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "12f2d76bbc5ecb88db11fc8c39fa1770cbdd84881dc8d883094e896f4869b3cd", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "6a70172881e7cacb5bd14175d95efd03e295f1ebbbf9eb42446eb89c3ac5a31b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "6a70172881e7cacb5bd14175d95efd03e295f1ebbbf9eb42446eb89c3ac5a31b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "7110e31cb7990c2e4d7bf31003baa200e3aad40c05aab2dd7e1dd7729af31d76", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d0be0d7fdb4f787375d4a0e3fedbdd8376a7e831d431f36dc3b1ba3fa76b8dde", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "a440e08500dcf5565c873981f17b19597d2dfe0fa85c8233b7dbeb1087957fa7", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "49c1bcacf4e88f7ef4dd911d2fd5592ddea5cb882474878016b3f680f8f79c30", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "93726f17212642e8f15acd04a44794b5a16805fcd67a47cb18b6427b4e53cb33", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "1f815f4e855df7869a1bbb6c3d64b8e2bdc5206960351fb4674b3a5b997f0230", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "14567f076a1c04962f26713ce4a2cc7c23941f74ed478407d6e85832d158f1dd", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "b6deed2d64cea4ebd5e4848dbd11ca29762b8cbeff165d6001db61c0c00bde58", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "f1b51c9a3d55cb2145dec4d18455ddd5d9ed866f81612bad02a35a16ca655c4b", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "2d99eaddfb5a037cac28cc9b0f191d36b75aadfc07daa67b752c81c4344d1cdf", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a13cc40c4575fd5961f5ed5b150b1731b0202957773b0b910dc409abf0d52a39", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "e6654cadfe2af30916893f1bd9496cfdbf2e4becbd7f4183f951521b6d66277e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "e6023224e2b37071d90677b7c9f6ebde0eb63baadcbf4e2603c2d22dbdad4738", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "1ed491a2c227e2b293c96dae2d5009f61e6e8bdb809c32e200dae7578106196c", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f864ca76da0c64c4ac545dd0be973b3e3476213c6458b38382443bd397617650", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "9b5e0c091c942d6ea1800c81fcd88ad35d104595484db9ba5faaa95cf5ebadcf", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "6cb8a9d154dc8d5a5895f37d55d4985ef0547f21de3e0a40de27b22e238e8aa4", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d459e32fd3fbdec0cc68904b80028b11a38d8d33dd2066b5bf2410f5359ee3ae", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "919c458d0bdd0fc2749ad9c8384aec93e3ae0c68e2b0691076014880386330d7", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "7756047b492da44ddea2d6545703a82917eb74aea1c6ebf1db5007a65f5d98e9", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "a763db652c4ee3201cff5aa207e0561e29681662b9fbd2c3c6ae52c886f4014f", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "36ef3a03ed58256f1c0f94d614830f219644c3de5bf3910e57454268d9b94d02", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "19d09a8e6ed82834101c213ebe735d2f13bef2c04424bbd92f33f3a2e84447d3", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "833bef70004c646bb8bacaadb6f97e264fc7310f6f3dc3428bd24203c84e6cc2", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "d3cc512a08db93743bceb44574a505249155b67cae640ca51dadeeb52aeb0bb6", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_grs.py::test_legacy": "722fb4b472e22eb8604e47f6c653f885c787d621e4d162064e0e987b4af863ce", +"T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "b53d57a98a3ed4e5871e6bd1575361f8a316bbbdd5bf2f3cb30038b51852f37f", +"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "c6bddcf0d106e57446a0ca8964a1fe2e014b3522996fd5ff34bc411521b00492", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "fb681ab934b2cfad4a8d353ace1552125cb1885fe9574fdb6192d6d6d7e9c00b", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "97e239e6c5d7a436f2ba5d36c46c8489c8e25f7f4c28c52f742f02bba1b82ea9", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "0b33888c404f66d03f71d6843b779b446c4e05f55a77b2bdc1b0e712acf62a1a", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "6238964f0c0844057b839222decd8aa966e6f340209efdef080f0f4cd6244879", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "79cc2b23d0a06b1ad3df29d56a7fa9909413aed0dae2eb5fa2c8978ae2ac210b", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "1c7df45972262e0fb98c66aed6ffe3d82a0ed0d0b0ce2eb0531da448593b99ec", +"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "3faf85b1c507ab4bccc963813034a325e52408ce4174d0a439cf622784cc57ce", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d8bb5858b4edf5d64a77bc9c15ad059213ebabe40c7a347d6ddc59865edeed2c", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "f518920c433bc644de656bbe488431f7c73a1931bab41a15c908bc63f7a153da", +"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "633ef6b98ccf962c46168b99c5b2d1d1345fad98e98c7653774f69aec33caf04", +"T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "fb16a6ba0934315c77534cd14516e10753597da5485ea8acb85fb675cc258fbe", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "d376de3fb71b92e59bd6effed50755c57c0f57cf3e107ac9f2be60ad293011e2", +"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "56b9f74eb9c206bf85fba4f8db83749a358fb1e5d1b881b0467b49f7429b9e1f", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "4b6ae997edbc247d47189d4b31a988086381e64afa46ab0493a728d069419ce5", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7becc0c2a8256dfd8f6b63a60164bc5ac169b99158a23dbce443efcf8beeb11d", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "2f7aa1f39c552fca4602024cd53442036e29d8ec736bea3a9ae60f5b25dfd073", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8ff32cfac4bb8b14f541788b767443b302e8cd47a9f496e66fea3b5cc37e4489", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "beb1b8b3906427a4e34efb404aae953c2d700763a366853ad99536dc8e6973f1", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "d661baad1b42c5b42b1ebcaf2556d07fef234ac10f08295151738b72d1c14ac3", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "205bda26b289bcc2db2b834c689c2a8cf1144db0634bb5b7294d30dd19083c91", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "a678c0b7c8dfac1126f926ceb9cca1d0580b2097e13aee8e3490c7777abf6283", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "b26d7e0ce04c06fd7e45d65c6aeda970786d0a4fd286d4632c4243750b1c7b2e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "dc60907613bb6a8831a4bd898fcc94d612217aa48c28c2ad045cbe27ccc999f4", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "940f63ddc328253c8b95fc834ef9924db9710a74a9cafa7d82da1963cd055fe9", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "c9d73d5e49e55adeeec1740cbe7e16caa8b9d4c26efb9dedd9cc3685c3e7e77f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "3bb66c7e54e19bba4f96a00ec36d1b95a3f238988954a2b5086f1af522c4b1e5", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "6a5427bd1adbb67fad37189663592b4aa39ad3d95b8b1e4b5ddfd1ac9981de7b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f0d7bac8e4add8585784c67fd70dd21531a811de551dde3c3b8ad2c4257b2e50", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "c87a40b4afd8319107ed49532aa425e301cf328d2ca0befa7cf06252f8e3813a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "de2966424345957fea14bb623b8138c95d33a97ff264cec04c2ad8d8efd9d326", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "943811fb0c092659078a0a2da681b8e1d398b3328a781ad9b8393f1dbff79f70", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c768f00cdbd5642bea284b115fdb6ee0c2741dfae3e95ef7fba671bd02274315", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "6cb8ca7c8b65c5c40f6ca8f3b0923e8b0f5a3edbaad9b9f60fbdd65787d9d055", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "800f9281a727f04e696d92ed3282de58e50a0e5c7c831fb358e9f631181847f0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "294425a4a3c87a415d563e4d724d34941ae90d1d2ae84546fcf8895ff12a36a5", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "23ad7e9223b53f1aa375b49a37d428dfb82a36001235582674c521598e7f3575", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "8b41068c069594ab58cfcc64c3f67b826d361144c94d1929be0ac4df24a3c10f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1e2015f875f369fd89556f81dfc311948e5435f65220f4f1bfd24f98d102f258", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "513de7cd639adbba31eb6bdab7b5f36a1ea98a012740c91bd0e2e80ef338b61a", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "800f96abe260c99d33eb1decb1bfb18d0eff2a3b98fe62fcf2c711647d1b1c43", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "d65ee3592efdd464b8bdb3ab658f4182793d1cc0e8d5ecf73b80ebafbc1820bc", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a79d6e173a39921c669547aea0fa2e90a7a897e0359d354baa516d0294d0b1ad", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6569ea5ee9a650a21171d86665a69b179c66b866050c89de702c7bccbef49494", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "8cd8487c20eec3006ea81a349c19971c5b58afde79b1066353dba348e786ea1c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "bd48aae11a20e70d35c4deca5c3280c8cde815a9a1540ade4eb0b194c176dbc1", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3db39b31a2cfbe37ba88a351b767abc866fa6a678c9b1af34db65a7a6d501661", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "87f1291fd2db3bc5281974279fda80599c55256ec9cdd15d30bbb5d8989f82d8", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "454253e72ee53af8fc1f68f5128c8195c8532625e46adda42de29cc27f0c6841", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "4ff339c69e8ef1ba422f6a7cfa31231eb8041aa3c0c3002073ad5e3f17b8fffc", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "9ca60ce8c8b12f89a94fd9ddbfc6b421347050d3987adcd10f0d7bf6809374bf", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "454253e72ee53af8fc1f68f5128c8195c8532625e46adda42de29cc27f0c6841", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "454253e72ee53af8fc1f68f5128c8195c8532625e46adda42de29cc27f0c6841", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "454253e72ee53af8fc1f68f5128c8195c8532625e46adda42de29cc27f0c6841", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "e91fb4273d2c44196ca09f43194d84a05fa3967dc805323002d54ce87aab873b", +"T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "afcffafa3fc9277c37dbe4d3b23e6942fe0c56e49d0841fe589175a69483d876", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "405e3b5e35b2621e38821ccffb6e2c4c21e5e569cfa3f1885642097899c49791", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4b084806f8009c079638a3fa4ee9d02f8c5a6937905bd87921446cb6a8f0cf46", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "90477509837ed3d31ae2ee81ba7b0986bbb34ee8e790cf6f0ed30f397f1e875e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "90477509837ed3d31ae2ee81ba7b0986bbb34ee8e790cf6f0ed30f397f1e875e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "709340f6a6b1ecaa16549590290ec5c25145cfddb56ffdb13d2e5fbd7693c993", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "0815063be925b6ab631f0cfb319d25b6982045af39b93b0ad7efe19e27655f2f", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "641cf47aa6dd89ff5b304289f4a449b07768004a843b759a7c40498adeb6995a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "11ef7a7177c664ce5d8f38c9664be9e2a70a07aaf97c07a2f27a7b921f9d461e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "b725c64f92fe62ca9ccffdb14202cce08033ec8d888905e46c1188fee66f7c14", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "dccae7b1ea18c66a143d5f24b87d233fa68737add2d4e1a7df72e13b4f4db50a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "dccae7b1ea18c66a143d5f24b87d233fa68737add2d4e1a7df72e13b4f4db50a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "592e8a7922b0598f54dfc3ca8a32410891d433abdb21c18f4c41999c753ac404", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "975efdfb6fb370755bf065ae20dc5658993313b0e17c265db84231f8fe0c759f", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "6f2d323da83420ee3cabfdfb5da62239cd230022a4f75d2479b75db9c85b54d1", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "6f2d323da83420ee3cabfdfb5da62239cd230022a4f75d2479b75db9c85b54d1", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "1004814010c516a4e1abf56852dd768daa833bcb1e6d408ea243210f80988b88", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "cc0f81935e8ad547b2a6d3ea239d62a3545b85c1ccc6ffb132257781d4fa8702", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "771b825c5a58bdadeeabd38a80f9351218243671a2e429683ac5897c6ebba865", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "771b825c5a58bdadeeabd38a80f9351218243671a2e429683ac5897c6ebba865", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "9707b20fc9a2be508709274b05249e4b868419d4820705d6071b862a41e0c277", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "6793ceacf08616e02bcb5470c0e7199c83e5dc4ef79df26eb439f5f48a855a9a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "aa73b16d6e10a3b68e92c18aec6b2797cea0d57df3b083ab83a5285c03ce7e9c", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "07025dee476c3b37afa07090d84a8e6e18d158ced464d5702fff38c6a3701ebf", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "fe88f758104f0fd69299e963ee460b09fdca213cc3157d04e88cb542f66e710e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "f45a0b64b7402e655f031b6b3f87ea2a02def0a994b33fe2989e69686fd40d2a", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "4061e3c49774b6562f8bc4e01857c3dd44adc184af5043a780a65d22fc510872", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "dfefee7e2a52c5f9729b01bcc05e62e17d5e86b5e9d1fe0259550f9956aceae9", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "77c25f4e138267a8d2e26c5a7baa11fab7602920cc5943f6189aee2f7bebd182", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "b8b9003253bcaea1b77066cda0b8cc14b1ff09a77f9550af882d22ca30b4f104", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "0f64ca5f163a43a45b1751257e36e9bf564977d871f5df9c05b46051f20df78f", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "630ce86236c2cce278187188a04d579e30b13fa26f791466c2d0cc256fbad608", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "72b1e4f0a8a59d7b73977f8b7e7dae77bf00b0da02bf0044153882914fa8f2f9", +"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "72b1e4f0a8a59d7b73977f8b7e7dae77bf00b0da02bf0044153882914fa8f2f9", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "2fd8cddf511a44e0bd54443fe85a26f0bf364c784695a1f8503b11093167c93b", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "c60c0328446718d7d0e649daaef849350b4c8f0a0cbf06fb99ecc5bb1ff6258e", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "8db0b6b442c57637a251ba6afc88bea7888d846f8945d6d5286672895b6e7afb", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "fd0c75fe2189958e52cae903028f57283e5319467478ccf8209800aa08091af3", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "e3575fea3093f80b3bb633ce38c3cfed144919c659a7bd0a22e1ef909b979a98", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "47b7229685e684866c533bfbaf134b03a0f6f866711b905890384edbc1e64fd2", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "88a46fd671c1aec9982d21bc802ad7629fe4fb2fe91046754caef6d948fba8f4", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d64218019aa3c8ce4e5be7be213788673007b75557f6e45e17df3e6a119fa5b6", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "88a46fd671c1aec9982d21bc802ad7629fe4fb2fe91046754caef6d948fba8f4", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d64218019aa3c8ce4e5be7be213788673007b75557f6e45e17df3e6a119fa5b6", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "acddc1d7e6e01ed78af54e97cca605c0880a440df01b54bc1dc90f2a2afe19ea", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "bd3a39e0757829c3f9736d8307d778c75c2b9e61cc21073cb8cafa994219ab8c", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "c73626660ed09943c911ad2764b97de4c0fd45a9a30319600e24c3f537f7b0f6", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "7e0484d07ea658e0336970b607ef08fb2cf9562641f3c9f451dd6544c5757714", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "54a7339552575573e8d915ddb24cd3bdb5820bb4b35e05f2153c18356bf6846e", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "93a999b62cf5f00bf2f1449617ad8be171ef47ba92051073853798233ccef72d", +"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "3ccb808cddebd66cf8e5a43be1c67a5968ef20945b2c54d15687fb791887d1f0", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "aed98af9c6264a81bcd2300f7e6fd77df0c5b552d51dddb8c06d8bb19dd69969", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "3975adcff50cd78a741ffd93eb804252c73201ed149d826b68fc382099fa48d8", +"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "763d84643aaf4af2c6eed376bdcb560dc8b75be7cb83fd688e5205d92daf7cc9", +"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "99c42ef13263cc7055fb2d84e1865306f7a61261a2730fe994410f89b4e7737f", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "1f2323c59884606dd8a78bfd1172b0f0cadf2fcd7dfda9566f24811fc6f63b2b", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "7865687c7f08ca7fa7a9ed7ebc6540fb10f20b5cb1dbc7f283085fc8bb353547", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "a944c1a0233dadba016ace0ca8e0d1df2fb87b5d89e7f0eef8da0272d7bc7c15", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "72b1e4f0a8a59d7b73977f8b7e7dae77bf00b0da02bf0044153882914fa8f2f9", +"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "3201fcbc5ee69234d98edc6550bc927a8c0164cfe3f8fa06dab5f115de4f1b19", +"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "5b5ac7934c0dfa58c94c8fa30f96f3fc20dafb7a66c2d4cf2663ef6aff8ccd98", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "3ccb808cddebd66cf8e5a43be1c67a5968ef20945b2c54d15687fb791887d1f0", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "6611d9c2eef8d8e1294968de6e1d67ac821a09c14799e2d7f88b5eea5b51502b", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "6e749aea943e8acb18fed0223b65e04670620ad2f79bb5e809bcb77cd609b47f", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "e897dcb9ff2dfe3d05517d6ddd336561bdc81fa5cfd1aee0f538bd5ac63c4304", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "3ccb808cddebd66cf8e5a43be1c67a5968ef20945b2c54d15687fb791887d1f0", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "2f7773f20db5cc78086dc07b08692f4a72fed5fd7c95f21cedce622db4808245", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "4f1fa45267f4257176b1a61067a28bcb9a69012855841de07f7e00995f2d45e7", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "afacf645ae89428b8b1f91f0069138af0558ae0e88f870dc7561e5805940f465", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "b2857d74b4fbe4a559a3280b652d375bcdfd594bbae54b6dca2ef29c8d5f6254", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "2f7773f20db5cc78086dc07b08692f4a72fed5fd7c95f21cedce622db4808245", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c93549f8edf35d5d86c5cef0a883d6ae8c49fa61214a58b15929a4e2ab6c187e", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "f976d4c025325f06b90c3217c918337f901a74f23ec5917d730077a08ec15475", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "41874c93e7f5377e43c8a8b8d79c4ec44ce5e311a56e95377b77cd6b87cbf6ca", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c219f6dacb6730e2db534cef8cf16159e992b5ca78b04c6ee97090e7a67c43ba", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "41bcd318b0eb6a4dd0b077731f64c57257a479dcfb437bcd8dc0d75666eb1ab0", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "04d0c6f6d5763a4c12b1cec1b9f8297e1807d6d1d6c8143cf10ec67f8a96604c", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "9ec54645e613d6460707cdda4104f295a819a335ce80f6a05d12564afe489987", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "adf04ef4afbd3bcc45ec34b9b4467a92a7a66764fbc3e21adf9f94ef112cbca1", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e9279b9d6e890a94167d4cfca9a3ddb6f1b7f959ce08272bd8bc7c82b7dc3ae0", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c7ad9622a1720fe74a87a4e2fdbced34d0845a8cc3b6e341f1bc719685cd040e", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "50daa50ab3780b31e27ab4fa46570bc7a4d9326d7c814aa35a788da9cd7f902c", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "97f8449182c06a5b4b129e0b45a8fb741050690e8310ac3b6ac27f945da97aaa", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "7bc782470653ff929d75f44bcd57a8f794c64432b6e3711d4e3f8a7042b8ef9a", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "ff04e0a969df18181d148ef9655fc87036f62062b9011f498fa2823a9322db56", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "7bc782470653ff929d75f44bcd57a8f794c64432b6e3711d4e3f8a7042b8ef9a", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ff04e0a969df18181d148ef9655fc87036f62062b9011f498fa2823a9322db56", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "efd80a317957b50cabc2df94a6bcd154eccf01c864771375b08ac7b485a23229", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "f1b9f869b023a8ac2bb2ca314a98427f91d0baebf573358a016fe296c310d55d", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5b0958fe8046f2f1c74b9ebb6504e60a8f2f6955acefd8a311de72a128706d86", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "801b7ce0ec52cc301600d1b1c41df1f39524466966e5ce3830ec45972f512c67", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8af605fa1da84b57044b3d4e8a6968f6f3694379291e9b4811838e1335c83043", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b1450769efdf72f7fbe256e6c29f13e7cc3dc23c0894dafb459b96946262263d", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "3e79a1cb5c69840a26c0dcb023ccb8021c07d972d11b10144e17da20c712e399", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "a13c74f0db73ece91b3668772c4832195c79298b8a4fe98c38c7d709031990d2", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "eba8976d6955ae750bfaddfdad61168967ffa70e5adff2e7b9864ca1446185b2", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "eba8976d6955ae750bfaddfdad61168967ffa70e5adff2e7b9864ca1446185b2", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "eba8976d6955ae750bfaddfdad61168967ffa70e5adff2e7b9864ca1446185b2", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "eba8976d6955ae750bfaddfdad61168967ffa70e5adff2e7b9864ca1446185b2", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "4ed9c215b080c1b1b7fe58f7919859d7fd537dd48bc258af68931e80d64f5478", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "4ed9c215b080c1b1b7fe58f7919859d7fd537dd48bc258af68931e80d64f5478", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "4ed9c215b080c1b1b7fe58f7919859d7fd537dd48bc258af68931e80d64f5478", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4ed9c215b080c1b1b7fe58f7919859d7fd537dd48bc258af68931e80d64f5478", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "f42c0733e08ed8aad8f745c58461b1ea826917011edebe83f6fe172235f9a43c", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "7d04316bd253f08005205b0dc3adad70e74571ad0ed85798d0cfd8e26dcb584f", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "9bdc1149944926c772e230e9a0ff05b115b24fde4d043cee7e9050b096ad943b", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "9bdc1149944926c772e230e9a0ff05b115b24fde4d043cee7e9050b096ad943b", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "6a446329e6d6fa003340ddcd8792c09db862485ea9b14ed9868406a502068890", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "cf6087200442a8c728e6db9e2cba09b5c60d2d4111f99acf8e3a25a80c84ab29", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "2a706f1a5694870bf0f2545c1b028daabc5c8eae51361a5d511d11b38e09fef3", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "6a446329e6d6fa003340ddcd8792c09db862485ea9b14ed9868406a502068890", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "bba134a00e0f2f0294033172ddf8ce2a4c89813271a909412408d0d1790e8dc1", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "bcd7724cd88da59fcac1e96bbd0d8adb92b8ac5295e3b780748556a4d9355152", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "bcd7724cd88da59fcac1e96bbd0d8adb92b8ac5295e3b780748556a4d9355152", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "bcd7724cd88da59fcac1e96bbd0d8adb92b8ac5295e3b780748556a4d9355152", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "760f5c71fc20c98e4a3e99f119ceedac20446360482214a08c5daaa518221737", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "bcd7724cd88da59fcac1e96bbd0d8adb92b8ac5295e3b780748556a4d9355152", +"T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "42d4a6b679b356d49ce859d20e307b25124d2fde5e66af489cdac7136a9bc96c", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "b13a9a39cb8b3c7ea6dff66270e7dec5dc6dd8f0160c69c132c1660a2ff8dc4e", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "5d959d443e4a49e0d7b7748f1bedb23bdb00668e5570271de799df939d026042", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "7abe8815d35f43c6374cd13c7faada41897a0e74fc78de49adf7179ac9ccca00", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "db12e01af9fa98bb4899d81a0ae219b0a5142a842684538ae5ed3d754c312b3f", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "fe30bc5f38c52909f67e80c82f3477468be77243bf6b4c2575daf05611825e15", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "419f30f463c1a2a93925a2bc7937521a1bd5bf35096bd74d4fe668384765f98f", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "e0b828eeab4d981051eebbfe430954f9d03c68ebf8992d7acdab440de90aed91", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "57ef6e90afdf32601f562e67cbf00f90248035a5ef80437787213097f734654c", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "604d5683355da02d7c9aa7f05892ca5a203c76d28de02f0a26a3bc4a3e4a0caa", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "a13acc12035f2c90265ac6ab6ca1f4461f3f5be024c443a90c6ec10db41a53f0", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "31a3d66bed0aac02a9d6e7284085561e5b8e9ed0fa285a4a81cc3b8535672499", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b83ea31d2a9674d99a2dca296696d5de254bea5d6b437310b0eb237d73f7f678", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "fb9564e5ac6ad7ec276ff69a73e31d9aae59d6f07698e454ebaccc700b78713b", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "2f7773f20db5cc78086dc07b08692f4a72fed5fd7c95f21cedce622db4808245", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "dfb64d0e0a0e9d835892eb1e49fc10a5227058e2b3def26f8d3ff0c9fc9751f0", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a58bb57fd26ac722e897aa0d48813a137404fe57500b95fc424d489c729aa177", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "39a021fe76fe3cba9278a44be2471ba5d0f7bc1ab9ea38f7fd1d68acaf57e75b", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "47b7d3aa9c83da87ec9c070d7b3962d47dc8a496be22caaef81d7aad6555d5df", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "4059d84e28770f0d380ea6fbead8e949cb15ecd16abcf0949f4e70ac3651f3a5", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "d20c9a1a03f859d770a1bbacaec9645024a187b6bd991d8117dcc514b38fa0f9", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "1950064451f9a48a6dcacfc2762d52146369b800eb19a74319360ae570f65002", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "e8684ee05524c973d3524a1fe4470b5b121087a0f9252fa386eae3343eed88aa", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d54f51a113bc836976f95c8fa488c6809376aab6ee0a31d2d4f4230e901ed19b", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "780daabf25f58c1d24a4f326488c3f2de5e455cbb8bf08799baba865eb505ca8", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "a6cf77898dd487cb0fc04df9853c96a22272b450b2b1233379895fe0153aba54", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "73f447f4c4e73a02b24df53a330846aa109e42f3f05cacc57678eebbfc498043", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "b09ceb4248fc2bc392486d5a0b3d34c75e004cef106aee5ce8fa73038e5d0f22", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "16dcbaff1691867507756ab0e34dfc30e7be88b9166d7004e6235b249d1ead30", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "7eba4753fb2bde39840defcf3fa805814a9f66c5943f42e69ac52f2b090181c5", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "ead0fe704931201c741c43935377e99e1111a8bff2aa98220f68af709da4213b", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "967bad366da45913d0d37b304861889c59525ca3376ad2957b955562e5b4977d", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "3659e4c41baeb91cc41eccbd06d4c0d629b79553f1d8b57f1b5b99cd766cb415", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "dd0fc259cb0c2d833fc32fb69a47162bc08067f5ea8effa88238c93bdc10ec3d", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "2a50834a2f3ee8efe6131ad9ccba24d377ec46551fadfdfdab69875f6e978e47", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "9aa9bf4b5636d6f18e9f7b499564f01c69be9d9df854dfb32d913e0b335beba0", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "c41e271e4aa551832218a1acc159d7916cfd786cab928d72ad8b38be64deefba", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "8961b6790e894a3811d9aa5c2ab8d392cf321f38760786ea80246ab15fd48995", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "c1789ffa0dc03a349e819991d132f8908df37b3f576b2a6333e72f14ee746d47", +"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "033751a38b0c4c16d2299e33d53042a3bab22fff43bb613b3ea090e5e1e01348", +"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "57fc7427a7211990d428f5770d8304faea6c20c86b2f85ddebdfc03f5d1826c9", +"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "f13a01c7fc4eb2c283db6723b6b90bc326186b2b025898e4c0c8cc3fba15afa5", +"T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "b1d1409ea55570efc3758535ad36ac9de8ca3ff8915f17f96176afb4f70aedfe", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "ebb45660bf1835969cf4fcae9d301cb6cec35a5e4598cb1cdf99fa88cf3bf239", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "10387f755c6c854926f938cd2583e3c723c6ccb50eb2759004dfd7061957f3f4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "023608cb8c8c175e8468f650a0ce2ac0d55fbe017c2b30963655ac6a34613b3d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "bfe64542de748435a6066cee0f5926fa5f0f154ec919a475548e6955ebb0ebf6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "714cc869059cfa5c7835cf7ad1b76714c5ff983b0055ffba7c000f66b8370fbf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "30a57756b3191abd4149bc5faf8afe5676e96f446b3639ad1d970f003116c92a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "e0b7288adf221244fb2cb18eaaee8b01dd42a9630d04d7fdb5a3165e581f7387", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "436a3a58a4475a9ad17f591c0ff3d282da9561ea753f2845026cf95018535dcc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "64d5fdfcdcd5b39e0773c623b9a8e06fe5b35a90f938f537900172bf5c3e3c4d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "31b757fda20d7789aef8a25d1c0252a05780c70c13d9c3f702c3e719165eb6a5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "63fee7ce0ed8310d75a1aba9e6b5d79a459c6329e115486cf3d6827863f8d9d2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "f41155792ff13424bd9f7c5796c90e2c8848edba05dd91dba47504088574f462", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "385a7aafe9d9d3bddeccb9c8619619f51301de62ed34070858cc8cbbde6b53b7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "83f1703ead97cc541b87408b70d536da96713565daa631782d933d23c70cd4f6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "a2ef5d6fd7eb4a8ea587c7afb7d8dca30f0c6a094cf4761292461d340c76f0e9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "a99be9af103e5b9cc23ddb67fa6e11f6de4c6b534d8716824bc6ea3dc6275ad2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "04e0980d3366c269170d212b707c8d9130f2347913e3d0bd634666459359bdf5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "94fad11d9ae75f73415be7712d727dad6f376b1963bd4da2b1ba20ab8770031e", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "78b31930f9b9b972ef6d17e8d9f005937f663a886cd50b68a6986c3fb640e8d3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "44b5c01ea0c71fadb693506fcf179b2210f3d7634f65c5a3cda700863f1558c8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "26e82a6ba6b1e87dee060a67b4a3a28f134b6922a106e0b1f6b4a40daafbf0d4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "9fe52969f6cfefae4db57f0b359d6f8b09fca9bf7f3264f9ec6a2f7e02b8fec3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "10763db5aef165a4742e817994a5ef97668c426389e86b00cbe6580eda9d762f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "945bc115fea02c6ee0bf1fe917e12c050ca08a8d780a9b112e5e6f9cd7339969", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "bab6a7c6c88da473f55166310e229755b7cbc89487d175ed60549fad29bf0935", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a1f3f7d6a00cad7996be99218db63336bbb20e6067f3b8b2246c5dd9d1d6a2f1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5c104e894260b5813de9f75153ee48115dd92dece717455aabcbd6774eabd9d7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "b159fe45e01ec62fa5fe58a65ec07805167e2bec62f373ab766aae289397bf88", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "ff89fcda23b842db4695799041d6f6d4a447866df393f9365c63601ffca4b06d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "48e9deffce29fb057b432db41ce3f2fba25970b42f05613c249a1189e3a29c99", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "02e2a782a9bc14058ee32f8ec595a671be8290ea0c3edb41884f5ae691c22e6b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "b5df3a63be57e1d9e78e2e509d07258c79c8f6f3f9dc6e586d9e545c1300e566", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "031ea138253e9af5886b5f02cfeb681948e5de7b96c4d4557cef3d4154ac9b11", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "8fe9adddf1936aba88d97628643ab549de7395e98813920e8908c2e312a7fdd7", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "d5f0055e1698fab9e561eddb727636f59415e27f0f698751dfbd866ceb460c6f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "429a630975b45444d78873b5e1cb1bf5d74b83f2c932cf15f3ec208aead47ccd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "92eda364d195dc6ec1ef9fd11cbc2f90ca92600fa1086aa27e525655b90ba0e5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "8a610738bb7d5b9fc2feb860d4a4482aea3e812ff1a37d88f86da6276b3d7dd8", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f83b77a7b404478db51955e8c3f35013f983aec4d1c799e3f7603dab8548b187", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "f960353dbb291fb2d44fe584190bd4396c9f7022b215cc4cbd27ce63fdac5c23", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "cd53766b657e33757822e602fd51a518a8aaba5926923382abd9e8d20dadb918", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "3e15d79e9f392c883d4ef24d2d80008aaf72ce4af3234162b700fed9d40de785", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "845fcf8896a5173f0f7239a75630fe3c55f10f37a502ba1ee4bf02be92794f3c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "14ce586e49470a2175966120b534f40e94cc73fc2c8a58172b215ae354acb355", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "df746481a85b965a73388da1eca88515e52f8a86593eeec1d9abd37a71bc78ef", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "b4505b8eeccd07e8ec427841e8269a6a5b0cb5e698d09f1ce7c5c95e5c6d946d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "bd2eb158047d29025c081dd04a4a2c77baf91dd744c14ab4fd22a528ca18ea2f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "80a4d3e5d5db6449a3aea02ec2c6e2e9f6bc858ec4adbf5717f9f632f88ed0d4", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "da6a3b86e782c30187695337c71d2bff756cedbf9e1e0aabe7466f7f85bb77c2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "c899678d575edc531aa3ce5070c9e729f19dc1b7f76bf2a02f1cec379e734be2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "33dcd3266c1166caa0198734bb57cfe5333bc5e8f671b9b9fae5cb8fefa819ef", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "7e842958ef9f306ad27f140474fc05e006114b60220b81ba294d855dcb42b749", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "7ad86bb61ec0cd7c651cd202c08911d0ddce5cd2a6904b33bb4445ab27bbbe6f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "07d0d2165bcb7d31a5b56a3e0c96155ec3d1e220d816c9173a967791b5b526c0", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "9e5cd60247ec852a2397a2d9664fb8fc9e0784d007db587175e37a4b1c0e0f95", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "a183a309aa245c4e40adc2a271dbe011edb8b0080b8d6af08d27cdeb4ac1ccfd", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "d510b1213e9f27edd92a01df004181b48c08c9c9171ff2b34ff9fc3c9185349f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "63803d8011797b396e13ee0379e69d25f11da566ed677cde0100a409a212668b", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "7a0f4fb8e3a35248614bc8a2bf8e56a8ee8834d30c8e1d191c03bcd3c68ed9e6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "ac1c32c5f9326ad99098236237acf47c83e0311645039a7cbafc9285f199b6e3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "07b62b706cdf04dfd70bcc1a1e73db5f8b0e42a4bbe3fce601d457915785f2d2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "9f96c34e53c981896f61c04843c8fec968c8c8bde58573bb588fad1efadbd0ec", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "ebb729eefa42cfab098bcb58dbf4b5599718132d47fbec0c52b7e1f5937e0b45", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "9ef0e0f43432f7627e3a254a8ed2c3c4d554d6a7eee07a6413b95fc66b4ec431", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "56e831bdf0df7a35b015ce7ad5d2672429f17f6c1721d8d44e673bec2cc7179f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "251d6ea5dac2575c62b961548f02f3908e314dec503fba763b8d51906ea803c1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "99dd7ea4d350d04f6976b2c254c7e61b6db877949bdc382fcc12dba60491104c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "403e7ceaceebb92e972f57b56abbf60c98cdef10d72e76fa9ce0b0444154fa67", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "4d66b695e60ec35e6f9dfb7f588c1ee2f1d3664cd5bb5009e581e738628718e3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "5e3e74738a084d96baf2842a9c96d3516e3c8aa6c26ac879befec71f4c41f42c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "7e6c72d59600fada42e988e2688cc9ee35369fa85273f131c4f952090f800e62", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "f1ac0c596ca39ffb2bdd8015d67fc991c6ee87a27eb44054a65f28162ec6f379", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "99dd11bb1d82ec1d069a17772eb30021431272281610a8b024071f625fd2a7ad", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "a66b594c2490d0a596727cc7822fa3bad52750375b578245594a326993e8cfae", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ce537a8d5d7da82e4c03f0b714baa3fb620ba8afea22e193c1ab709054fdc860", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "28bab6c4956f37f68b0466de02280819f7b23a23ef937b4dce6caa1dadbd3f2c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "dfafbd3dc43eaef0ef2d85fa34418f7a72e6608d36fa2f4631307eaa5af0a872", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "24c4ae4c3b591afec3d937b2d321063aa880b0a471e29b64bc3a3c8ab292e466", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "5572a777cf489cd94c92a437b467eacfd2a8f993e5dcdd970dbc25e805f40fd6", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "9d1520420225ed9d152740c2adf456e7d368c6e170ab15ca37775a436ac1f090", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "b01128cc8f3abcf3f4163d056c5064605a362c6b9a4aec7e0289a50ba652aefb", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "2ae924c438e597abc3ea38e893353973e6ca6147d3d0a2381f70c8b47ad90b1f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "94a248f6f5580c2b4a233551427d938709877c3a1ded61afe45faac1acf95129", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2601294107f79e1df73f37d2db9392c5a88c6cbe233495c2d92b28360929a33d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "cbef4108f1b6ec18dc13f7484e88bec1baa56f37b4dcd57cf8e2492a9248c255", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "7499e31ec131f363924a219dfd7da194284ff099217a710e8e575894b79d7eb1", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "b1188df7644cab4485b83d2f660266a51a56925a1f0fce14f73e6a691e7d5de5", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "f8abdc9c639c4bf1e450fa5c3b998b3bb1b5ba0a04c0cc000e2ec547ee199e5a", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "197fe4d26e0e5f45ea4114cf46347fdb023e88540ae3e8475cd70328a12ea5fc", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "83ae688f45917cb821e6100055d8480e9d393574caf240fa4a954858b644c664", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "0fbcd7ea252996f5a4f37acf603ef70cdcf06183062c117c3194d36dc4e92427", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "5d4ee2cecd2e275674c911adf194c6860a0824926ead3bebac5dbaf1f32f22b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "ef7cad8abfea5aef9fcd662b383b2f1f05e7fa2ceada8f8c7ea5e89557acbaaf", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "95a9099596f8bb86ccc7a391a7c048b15258e5bdd7d3113e8d9b7c2a5dd359b9", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "0a362cb1beaf3634a3556be4777a62ee1fe8cf95243e59f19448be5c443a98a2", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "90170e7fc93d6414862853109eaa80f3068d2c0a072c28650d417e0cc550a1ac", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "da62a979fa30c57891dd86b4073f60132dfb3abe274a3d154fa65049acb2a551", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "f06bfad953885c2211cfe35a700b419209c00dc3359a787e5c65850aa404fc6c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "ede4bc8a67e008cc64943e1773a58efc73b006934305e7b1a09a36c287d68d43", +"T3T1_cs_cardano-test_derivations.py::test_bad_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "6ca55ce57ef6a96d1986e2291ce482dddc327ff77363e81c2a46730f4ace64de", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "4459b10e6a028b0cd195111e4c5edc541796b4988632e1a278bd9701a39bca44", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "11184966298f43cd6d40a180a3c5eba105f31d73eca0569502943301c155f908", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "71ead6f043b90c9ab67ff876c16a78e498e0614dabd94d1552834f3a07e2e2a0", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "498bd254ee2f514d820b9ad9563343d2b78608f489582a2d8a97ba9f5c9ca14e", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e13902166c07e6374e35e3fb3997b8d48236a9818452d1f72757457e3b671a48", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "7b69f9364716a9de95cc2a3bdad5a7523ecbf23ccd962c76215e828d6cc197a2", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "f1f3b60bf7a4e6d666786f12a652073dbaff9999aa77226b232f9b639c580a07", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "2e45a80f16be0152c35b33fd49824d410e758510ff22a929960a7eed06434177", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "ff643f198822eb3183b5ef15cca7fba3c475f245171d5bee3660e843b2bccc2c", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "956040d02a772b496de70b973064354fbd1742cac22e8ba67d05abecf62ab7f3", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "847c9893bc443d8c2be6868344bc65a85b64e0b3809215a45ea17e7dfe089de5", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "f06db68cfd73101161c9f8704a77d0ba46490f24d035e6e35cf7ebc1603ea7fe", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7b034af259e56f62860830552f6570d5a542eba25c60b57b0fba23e0d4e5716d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "496ede8595351fc19e2f00ef7b51d29ba8d7f25f87df9ad8d751fa1691e99ab8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3da71504151796ec773dbb2f67dee7b2e10a459edd52e4de09a7c02f87fd05fe", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "fc5d298360c233926eb9e33234656fe411ba776b1b97779d828557b86a0a35b2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "881444bd87cce3671bc9c2718296c8d70fd968e1e697cc3f62bb937bad578b7b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "5306c5af107ac8b19b230b6c44e174dcb5525ad2b2d186ac3c06d7eeebef3c80", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "50faf9feaf527d89cea24c4075ce4d353015d1e7b6df8fbd05a96ddc449ce039", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d5e40a66edaa181b42a1091bd7029beb935f3f80d2e8b7936777a1406843366a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "6613ba8fd22546b819a090a5099c51c51aa6ba026d9de2c2270b4abe7edf96a7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "09a592b0a2a9855b77b1d53bda4d7fbaf390bb29117a7cfa6eb7407cced7c13c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "a716dfcac60e64a55ed92041ccafbe8767784a46770fdd7a1bd102c9abd136d7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "b76fd25676bf22f915a88329e0e4100d9a3a6f80961e21b9927767a2f8e5ab5d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "b76fd25676bf22f915a88329e0e4100d9a3a6f80961e21b9927767a2f8e5ab5d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "d9afd0e9bd1c31cd0bbd308aaf5d2d591559bde8a8990b203bed42acb928f4df", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c0c96475c9ea76ab88c64b301b97b9d98e67af640a97837954c39dc5f154c6ff", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "06885f23e53283ebf3991873d7c5aa862efb53fd6462eb331027fc6bccc1f63d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c1136200ce381044160121dfb71fe62a25eabeb220a116f433c553e4fdae1177", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "c9916b0b5987c27e1fa28e17c1ed1efd85ad67079ae812f5e6b8b942b032ec90", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "d1cce916c10e4d12ecec68b869744cf74ea9746faa72b46cc66e3953294fd559", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "efa99f4d6af6b587fda97754c933a3b2897f09e0cda3dd90c952d2ef791d8bea", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "816caeba753310e2b3d6d50ea3dd25528b7c8a58b089493fc262d65ce7610294", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "6e16a36b077d414dfdd828acbfd4479e21c683e324ac24490aaade58ae6e7df3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "c9916b0b5987c27e1fa28e17c1ed1efd85ad67079ae812f5e6b8b942b032ec90", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "d1cce916c10e4d12ecec68b869744cf74ea9746faa72b46cc66e3953294fd559", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "784366797468d7c9dc121d9c5684c91554752b5ef7d6a1d222bb0cfeb4da9e41", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "5e3bda2666a1409ef051e95b50eab0f707956bd33b3e6bd84d336010d7d776d9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "66b4841a242821cada4da7683b196293f7bab8e0c56e7011162a0122ff41a55a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "c3ed3e36b021b446dc0e6fd64ed79b823181db704082d21bad8b0d7b7a3b1541", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "351e5685ad1e07088b7042f85ffc2d4cb0409138d5ee70e45ad0bea042665eb4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "bcacc65b738d998164eabc63958f9088728a8b561dbd1f5c1d56a2202026543e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7713d52f455b7af96f1462022a281653cedbb3b3663186c9b560f3a7f07dd4f6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "dad55deedf1ce67a18fbff36dfa90a298e690bafe755ec320cfa6a025f773e2e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "2251793376a97d7564f92d790b2c30e3170cfdfa3cf7d8e73bbdc9957586df8f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "266db4c7f9256b7e7866abcade774165b87f9321e3f05685472f1077d40e73f9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c9f27d6c2e817c1782108734ec51428bccd21393b47100af4714a5eb258b46e6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "b3c05a1e0eee7d14875cc5ed5672c70bae7e8c7aab29db60a3995883c226bbd0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "ae44cb4e536f37915348084756bbc9040fad5e9e57ac1f67549b118b17fd4a3e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "5a0fce8e57595541d40c75ffb63eb1dbd3e72bf3c1dfffe719472574fd8e55b9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "3224d827cb5d79e3c5d73b1fff1856216f551e4a6c3544c95538f2b60cf842f2", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "69eef2b3dc73a3b536770e27bc5e213289034a5d640832ae026531e3084f3fa3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "91eb190be38e7dcfe01c197a3faa810f99652429af8a0d79d488c375fee77d98", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "83fd19d6f883c8db1f22fa45abe335f1b24ff9f3007c3f295860f37aec79cede", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4bd87de759ae62a4c82ae9d2dca40ef2802edcc9eed568255029a3327e57f894", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "2d2ca405665e279c7f6373b893d76f5baa0cb0522d1394867796b2a0ab70199f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "44ae718503c9eb34c105d3da8e6878079657d322b794ed8d170274a86a2abf96", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "7958d6c04278a88039ed46feba60013dc0d9eab8068df9bd7b2862c92f801dc6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f82ca75becccadc67db03bcae9aa897cc2cb47edbd38e469adaaa0e5bc39fb3a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "457ffb8ccca63b8bbcd13c4341e55def6b36b330511f228f125bd5a20a8bb503", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b408ea75b77c0a719a98391c20d5bd8c0f15471e33e3f18de551485e700f6365", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "4f2b8824c02d6f40266ee96dbd8d2d0857871c442b4236713238a02912455a2e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "969e0b37b221adbbb38c287d834552d3a4713f8d4bbf41a811a9839e04f05f53", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "55025b34c3b82d18325b85e037098ca73e79aaafaca323efe9508e5842fe1164", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "89b11bd35a4e56b1b574bb382c26f99cc456520ee00b546231d64d7ca4e2ab25", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "66b246157e50849e445a38b4ef2d268c0ac7b23254cc590ecbc18323d7712075", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "a42990bfa7045c33a7d569679c94aa2171f531b9dd625a70a72d89bda2b3dff6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "8f4293b39b805e6ad9baba97321a39d1938aa38e2bf79cfd75ff9e49a7adf5b6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ec906879742d7f63cbeffe328ebb85c0c48b3d1abcdc41fc870c9bc12679bb1f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "c22e44a23023cd5918334297382e85b95a7fca4302bb9e2203e8078649f7b62d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "fcae85fcc69231c0b806d603e8d47e81df164f86ecbab2986b4959b52051076e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "db4b9f764c79ccd84aee96a86df05b811f906a1bd955987c6d6424a964bb561c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "7eea24e2be4c3e780dd303d4e9591f50254e2ee83f05a9f3d259bbef5f28b244", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "2d0f38b02f8d5c241b2a8927abaff5c11c67aa907b2e47ca395d8504e3a785d0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "6acbbce00ce6e18580f689fb8a77ff433120e96e5c90aa46467334fc965a95ab", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "10a8e623589f3adccee20180ba50006fde4bf2d84c1205772a75da51eb46376e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "99cebf827ce93f5f862537fe47fe168c5c385412986313f30fd150165154f91c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f570cd41269a3f233b8fdfed90d7e99fb1d90750ac919a1433eff63986f1081b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "40b7ed4ab989ec97a39f28e0573e2c54adf4ace3186a2d2d6d8cbed4c905a2cc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e2ddc3fd7b2a60b79ffb1a9e2d9cbea3411901d19dd0569fdde26da218e1192c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d395f75d9792107e551a965a9b56935ddd6f749f5bf9a19e356ca2f225483185", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ee76c3498a4e2a93d7e09158296f669862b5b99647e0013c6d61bf4c9abb513e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "7388ef54e468505bb58e628b6fba68469103426bcebfaa4880b9d905a36f9d25", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "7cdb77f534626ecf81b6f5103b5b65c12ecc767bb4a32d632b507e398f56aad0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "aa175855573cd9a372949a94c4e0bbecd89c49b2567039aa51a184d7e128630a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "4846967d34676d5457fa4515c39df210d11d10dbcb338ff5c3969a32531c8c59", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8bb5bb2712ff7919e7314c2290a7fcf065699be7b870928c25392beb3048141d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d24f772da4f25774d2bf0633fddf0dec6c944f2a90416e55bad15a389594a612", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d24f772da4f25774d2bf0633fddf0dec6c944f2a90416e55bad15a389594a612", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "3fa79680b99ab2b8ad5e1c8026c4e04fd85b7fd448eacf7330289f9a0f1f0800", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "071ccd1df0399db2ee2c0f3eb08cc8aaa1b64eb698c849d46e16f9bbcf1bed45", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "071ccd1df0399db2ee2c0f3eb08cc8aaa1b64eb698c849d46e16f9bbcf1bed45", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "8b0e0c3f3f6b5dd2909072bdb234b65eed8e07a2b3925e5e879a242226044a06", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "6cbcdbc020b8dbd75829fca732a431c91185996e1e2c40c4c19493fdf4035624", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "9a85653e891386a26a3a2f590e18e39c8afc874d1a5a92c031fe540d84b5a2bc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "5ed48c8b528b98fa4528de5f421f675eb9c1481ed64b2f409705cc72e60e804b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "556e6fb1165ef1581f0c44cd3fff6342e8e89ee4574546da3b6556645bc531df", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "2c8b892d49efde3a91a63f5858c8edb258aaebe0aef5388d6dd21b2da5105906", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "79615297424e1a7577f322b380d794f8d349b07f3becbf594b1d2731490a232a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6cdca4dcd16e9a848ec156823a6915c8c8635aa0ec73d0d20bfa2a3f95fcabd7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "1db29fd8c7e6d3ef3e4beb2c80188b900bbe159323a94a07a6389c1e96e6d7ef", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "7b034af259e56f62860830552f6570d5a542eba25c60b57b0fba23e0d4e5716d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "50faf9feaf527d89cea24c4075ce4d353015d1e7b6df8fbd05a96ddc449ce039", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "a26a943c414c0cb949858b1375edc53c3446c66b6bec2d417a5bc9248b0120ca", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "708908dedf4a23cf257126a242aa52dc3c57a79fbb759785d03fff6a9c7c3543", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "708908dedf4a23cf257126a242aa52dc3c57a79fbb759785d03fff6a9c7c3543", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "5e298a2ded21931400af093a944327e6a149a7483d3bb18e04935f137fbb1dc6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "dee948c481a982e656a264eb92cf09bcec51e34bee11769ec8a9f950f5b8b496", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "75686a9af30103c0d8368fc127b4fc7fe763c6eaf078d58bb4a14ad22a087d87", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "be93dea2e6f5241b8b8af353ca23edce888522cd3d7dae4619209b04d4e88bc6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "54b3a5792774c5960c1cce243b77b04607bd5fecc5705ca93c48c90869614ebd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "b04ec8658efbc7b83d954bc31628bf2a9bcff93dbc42b8e88de353e6fda884fa", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "fda6e1b6cbc51f00b400fa3ce0f893446f812a8c09a4e09aea0bc8af183c09ef", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "347413c42a0301e2ac989a8326402cf28f9fac2ba60522322b7679a0474bb36e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "347413c42a0301e2ac989a8326402cf28f9fac2ba60522322b7679a0474bb36e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "347413c42a0301e2ac989a8326402cf28f9fac2ba60522322b7679a0474bb36e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "347413c42a0301e2ac989a8326402cf28f9fac2ba60522322b7679a0474bb36e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "347413c42a0301e2ac989a8326402cf28f9fac2ba60522322b7679a0474bb36e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "347413c42a0301e2ac989a8326402cf28f9fac2ba60522322b7679a0474bb36e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "fda6e1b6cbc51f00b400fa3ce0f893446f812a8c09a4e09aea0bc8af183c09ef", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "fda6e1b6cbc51f00b400fa3ce0f893446f812a8c09a4e09aea0bc8af183c09ef", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "fda6e1b6cbc51f00b400fa3ce0f893446f812a8c09a4e09aea0bc8af183c09ef", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "be93dea2e6f5241b8b8af353ca23edce888522cd3d7dae4619209b04d4e88bc6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "4da086f45968184822f3ce006b8086a8d9bac65e91b57092230379ab677f02a0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "3dea1ff62e4ed4b303acfb8f8b29ed419a078a73241ea406a1accbf7a4507b48", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "020dc4fb4602b807852b3ee99aa911e8d53d6ce3af3414407aa50c7d557a9cdc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "2b7f5e7063b884f072502c9fc466db59259d5c185330e9fa594dafd0ce89b2d5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "760c525298e8e9e54366f821da824570e6327136ef41578955589379b7e0f585", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "3900f27993a57b6b5d74798bb32912f2b0175551a8225d1b4489135eba483462", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "1d4faa10c9b1b0aaeda5a3cdaf7194ee9118a4c9b1ba0601928cc2928f367432", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "fd9469ff5b06a6d17db2cc1806a976cc4042f6f6e9a5c6cfa9af8602b5a23131", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "9656fbc4e8f920c3441aa00c8736cbd8dde993b0922d7c19b2bc1ff1a3b7cc76", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "7a5e96316cb632d049c1d244f552576e327d492d89cf468dd9e0213889e4b6ae", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "201a179ef001ea2f3ad62402fda53f155de347d90068f05e2fa279ef66e734b4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "708908dedf4a23cf257126a242aa52dc3c57a79fbb759785d03fff6a9c7c3543", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "393361c2344fdd36c9bf0cad1cff10f134b694e64c410ee90c1c6bc512dabdba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "d83b99723a7e05423318369393a39db22491a39eab9920670c6d9cc25f54d4cc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "65f43fd628660e3bae15fc7b703d5e330e0a54612b80ec02d56d0e38745eab3f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "11771c2997cbb72e5560de0dc1075854d0637997be9e1c2f756f7d5d6c65a175", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "347413c42a0301e2ac989a8326402cf28f9fac2ba60522322b7679a0474bb36e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "8a8761c961c99ef95431042f1145d66f5b69529eda89723b2febf350cded17a5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", +"T3T1_cs_ethereum-test_definitions.py::test_builtin": "146f340cc9a934cce4ed52f404a541c51fe38652afca311dd732357a43c4543c", +"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "6bc77dd863a16263e29db64e27c139d90f12d68bdc605262c1c6e8b58dfeb7d6", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "6fe92b35c92b129a234aba0761143e6f7e4a7aa6d84acb8a512d0f681c3f622a", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "78d9305a4ee3d93d16cc06ffc4d8ae688e2982d283f999ec4692cf0fb38a5074", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "0de7a9b5935c902211a124397961ed86bc4fa09e0c01269ca9a510c7319a4c90", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "bc240ffa909ba8ba05f0b9b4a3aa672646c4570765f48b494914013bdc88990b", +"T3T1_cs_ethereum-test_definitions.py::test_external_token": "b20b610fb8e977eea67759f92ab03fd6a5a4f715365ca1b5097e7e567ce46ad6", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "386e1030cb895600962ebf18a32d7778407e05d8d8d09887760353150462a9bf", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "190f0958e1e59d951e091007e2a6e5335a883083100549e8f2bc1d54e8d80fb4", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "45ec817d65325efbb343745d562a7df94c4fef74c40cb82f307f9120ac623e8e", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "ad87601e4ab1414f5d1521339b28ec3c0fce5330640f6d61908b040b4bd452db", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "6c77dfc19f704055f1fb8e22b459d3be7d1ff29157c3e8ff62d6c2aa50ccee0e", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_bad_type": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_outdated": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_short_message": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "f703c333cb561e997b7bfdcc18f8fbe2a00f032ef5a2e0a522e136d9f9996da9", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "156b66b94511d5ee015ef157014e7e8ef5e15d64028ea9d1bf8a0fd2814a062c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "eee891dd01ccd5944f7df02f4ba27c6cb252b44f1b088452df60803382a80144", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "865f0b6ca38a9efbf2e8f7498697ab3621aeadb9bd5f64dea278c1208a05bb7c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "651ce7fad3b633d5027914fd156a3aafe0e78767544482c5163035b0a0cd157c", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "4e1099aa4707c5fa2085410ebed7d5569fdf3e16933fde4b7e3b128912bfa194", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "716271d755d96cee35040e93bdfaee6a39e6d891976773d447fe94da4818e0e5", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "1791fe7865a3f551ad31d7d75f78f6f5b9ed29fb0bd9450a5c9c00e52a1b1cfa", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "f9c136e1de3af60172a8227f719e82f9e1690a5921232af821b5686b41e13fd1", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "cc59a36e38a9222377a897ba8c9d74c741669b05cdd768160d500a4755c3e933", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "4945c5511f965860ce21c18b339805dee0c1549098e5bbd6291308b5f770ce54", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "ce140e9d4bc966c88d5056bd8cee8583bdb5cf99d8757f402b4c45b68813dbe3", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "3b7cb4e490814d98e9f329d71e88b630df5141c4f958e41f15d226f8dfb90bb3", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "34c59464d525863e8534723f39049dd59096f7aeb2659bc834a2acad534a8d8a", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "60da1abcef13d3a36ecb6f84ca213f6fbb86cebb7582cdd09709c029121a8207", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "aadcd4d43d9e363240a59bf3375106cab146309fc98b67f1660fa0ad59d9e225", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "fefc9a4bde91262f50a0f7c6edf8dcdadf2a3983ac6e1dfd60a6839c3419ffc8", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "b94349cac6d415972156336e73b50607da2881b2ef18269d869bee7000e267f5", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "60da1abcef13d3a36ecb6f84ca213f6fbb86cebb7582cdd09709c029121a8207", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "60da1abcef13d3a36ecb6f84ca213f6fbb86cebb7582cdd09709c029121a8207", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "60da1abcef13d3a36ecb6f84ca213f6fbb86cebb7582cdd09709c029121a8207", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "644c64107910131182a85ba5281e705b168be51fb6cf3fddb09e9e2037022d6b", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "7b687746bf0091f01ff6283a91c426c063d4863de2d92f450617d9866460a548", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "a4e5011d7bba5aa5be6a45551df279ce7034fa6437e8b1635cfcccbc4423a0a3", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "70f4ac4e04638ce9f805770345bfa2d0ce2ed2fbeadbb8d7fbdc18ca42e833ca", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "ca95ff8673fc8e4dda8158d861a7ad856dabceaee637559fc0e9d8113afbce5c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "c07c8781a9a69e5b29da346a45594023dfe50576c3c769a96e7529593d37e59c", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "90fa0b8f3152ce3a5dc14906cf249d7f6dc1cd026deb6ae94a2c6dc986be6928", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "e5145e23bd01d5cd2cd9fc101700a9c9ee18897881957c672450bc6f19f67ba5", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "81a0a571d94e67511c330c248b703ab13de11057b53831207e319eedd4350a9d", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0f3006b69756f5d97364cb146580dc0da2cf7c2a9e031fc7cfde4242faa448f0", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "391a486f15aa7305cb953c3ca9f3bf52701923aa9d0169ae94c746f91149b448", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "94db8f851db70d4b26c094aaff0493fe49176b8b161e01e0c50199603e504da7", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "89464c2e1b3ab151d6db8ac1e1f33cc61ee5fc16a275db64154a443a61c5ba5e", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "a6103ef6ab9b140e0d72a4445e16e1e885d5ebddf3ab6ae641ca96f800d1a7d1", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "ca652800ba02fa9507c9ff6a0a7220426b214e40dbb6c3d213dacdb9d6fbe76e", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "f9149eac1041432067e96527c25cee17a62206d1be7c7864aaeabcb644c16e05", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "49046ec09046bc2917cfeb9015c366b1755719fe994b60a626e412812d58a9ed", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "390e5d7a462838428c12959aa48445b62770c03d34a01cd9521fce3368598dd3", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "391a486f15aa7305cb953c3ca9f3bf52701923aa9d0169ae94c746f91149b448", +"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "76727f7d9980f8d1572fe42cf6ea2174f7072500ae69648d5f883bff2fcb003e", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "df019dc473830b69007c7ff6edc48462fa185a2e322d07b894684320eccef520", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "09765f5c5772d1d5eb1b2ac762f64899dbf9d935ced0c6deda899b1439425e20", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "7c1a784134a9b39cb94ae48c7aad5bc95443069ddc82aba9a60d26ea5fec2a27", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "09765f5c5772d1d5eb1b2ac762f64899dbf9d935ced0c6deda899b1439425e20", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f071e29a597b8f564c63adb08dde47b29ffe50c27ef3a0841858f8685c805d42", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f071e29a597b8f564c63adb08dde47b29ffe50c27ef3a0841858f8685c805d42", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "0dc3ee3c0cd4cce66233056e11857392157eff056f5bd3b536d42c18a952bfc5", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "0e532602665e94b6a95e4cebbabbe94e52c0034d2d815ff910e475523f40745a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a3b59cd93bb059b5b5cd7aa586799a161b26d396bf239e79c031dea735fd082c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "229b0c878e5811859803b47b67c0e93f7802ff10d40ed94e8c950b0446abc5b4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "53622c81e8b83ea2db1661863fdcdcab3fc21547779b2410f6f4bbc689ab49ab", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5abbd13b8d4a1fca4472698daf402206b29d45282e7bbdab51cfcb6deb7d9533", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "7a352ac09259427850628474c72a84bd5f78ef50aa62c6ffea5cb76a9abf69b1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "a6578a44eb7008459650424c777438382a4f38ee26111cab9eaa0bc0507456d0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "297a96ecb10dd7852d6947c8d7e5fa9041edc9c1bb3b6d2c78c78594dfbbba49", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "a6578a44eb7008459650424c777438382a4f38ee26111cab9eaa0bc0507456d0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "d69997b860d09805f0cca00a1d9eb1841c9b3fe76aff52509a0d4f4a68d8146a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "d69997b860d09805f0cca00a1d9eb1841c9b3fe76aff52509a0d4f4a68d8146a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "c5ff47196c3c92b7b583b343bb75b3abb41854f52369a593d66db1ca495ba3eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b090061b791adca4f3d06e975c2b98d1d128537a80edda58fd873e87fb7f0074", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "ef6395a08dbf548d08e13cec6b534da79bb0a2d26f469d6215ab2d481cf3cdfd", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "229b0c878e5811859803b47b67c0e93f7802ff10d40ed94e8c950b0446abc5b4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fe0ba83ca08ad71c48c42967f4744403071620d4ad32561dfc6ceafa24bad3c3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c4fb35f3a318e1d5f7b4a5c55a213a03625936fe6e0a6ac3e9bcec90d6b1eb9d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "c146dca57f928b92e4749354c0bd1470d4e1d5e7a95f1fe211df0642ebcd0066", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0dc3ee3c0cd4cce66233056e11857392157eff056f5bd3b536d42c18a952bfc5", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "60c9801d0c4a6f6069aab04eb379a2268813e62e9989a394340a32607abd5fde", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a3b59cd93bb059b5b5cd7aa586799a161b26d396bf239e79c031dea735fd082c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "359b73f5bb65c0df2200cb9689618e1608f24ad0333218d268de6ac53bb43679", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "a2ecc1fbfc669c642a0f8fe64189b8f1bd110d9fb25bdcef81cfc4a84ef395ff", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "fe0ba83ca08ad71c48c42967f4744403071620d4ad32561dfc6ceafa24bad3c3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "c5ff47196c3c92b7b583b343bb75b3abb41854f52369a593d66db1ca495ba3eb", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "803c895152789f255b94a47c975d124a846d88a926ea011df10c6aa9dacbbf99", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "ef6395a08dbf548d08e13cec6b534da79bb0a2d26f469d6215ab2d481cf3cdfd", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e19ef1abf5cf004e9c8d5dcb763a7eabb529138b13a59318c80d383aa6f3f051", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "651b986c8a2e21cf2e20cf27002fc1a5c4a12258e359f5d50e9783b4ddc4625e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "fe0ba83ca08ad71c48c42967f4744403071620d4ad32561dfc6ceafa24bad3c3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "310074074419291f1c5a25cea8aaf8fd081bbe31bddf2b4beb0889e6870d4479", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "310074074419291f1c5a25cea8aaf8fd081bbe31bddf2b4beb0889e6870d4479", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "80510a62cf80bfbfa159a399fea59c94ad2daa404f43cbb05c41b4b1367e984d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7080fb54b780bb764d198fff1b5a449e369b1fe963a24c54b2c5ef54e1838ee1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "392c9e843ac76e965bc08ff116dc5124a7b4a0cc430fd5ee4dbd3f29c2444377", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "392c9e843ac76e965bc08ff116dc5124a7b4a0cc430fd5ee4dbd3f29c2444377", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "ded996ebdb16ac51a7d467d75ebaf88c83783148cc0e16bfa130fc11d10d6f27", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "ded996ebdb16ac51a7d467d75ebaf88c83783148cc0e16bfa130fc11d10d6f27", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", +"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "92b30792e93613c00c6d9e410a14d3920017f1c959ffb2dd892049035d678c11", +"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "92b30792e93613c00c6d9e410a14d3920017f1c959ffb2dd892049035d678c11", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "721c281322dcbba5893086c230a4ae3c2914cc8d8c646a5bb9eaf8e0216938bf", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "4270bed59cad22f896d5ce602501319ae2a2ef3442020d0bad20ac36f50a7bed", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "019ba81aa54a3cba059232f19343d51c0a8b22cd78e2f17774e9a5fadec13904", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "b430a223e76d67c57ab0aca33e7fed98dd0b14f24a2cfa099c52fa0c5bacf8a8", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "f54bacd2e2639878fa088b92ebc9b350357559826f944866822d271c85d800ee", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "4d6d5b194106ce72bd1ed868d54ccba2465688fe72bc7f12b26bf3eee33d6ba4", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "0c9ea30680733395ab1f56274e968a8e4a708d376aed94226148ef2604d950e6", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "5bb20bf1eea67a8b182011f0aca47108655094dc30ccce3292f92a99bac8ff43", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "bea9cd59f578f397f19174b053278c87ec7a6d588c336bc3265780a142b7305e", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "908390ce421760fd3f6eb66b3bff55fe500caf726fa749d0064286de3d0d99c6", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "e27f887d7f20231fc7a438e5d31e80947070f51a52819091c3de2c187a725b77", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "0d04fcdb5df2aa6b09e2ef08ea99b44e29b347ea90281be6dc4cd51460308947", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b614de056146f5162a7e3ceda5e48b39e052398fa43239c0f4a06ad0944983c6", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "089c0f0c136b75bf62650a502e5317fd898c9b80b229e25cdf817139ef8221bc", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b6d121f8fcd0b024665ec26f72507d88fd5d732ebf22dd2aa7e9751cd9c6e9cb", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "597a04b0251de100f25faafdf1bc0961ed58943d057d7ba09cedf214a7b2674e", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "9d1cb21aef8b5d54ccaf2e5e1989d2efb91919253be891f629fb0b15ceb9dded", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "f32f2076cd22074a6583175c9a375b12f3c89257114ca002094834f7a7759294", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "5804a78d625ec5794a5279cae4f39eee2743ec029bb7943494533c237e297b57", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "5cb1740903a4a9b159185be423a234f39a73756362cdd48c8b9790bb041a9234", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e85f019b637138d7ec284248933c4c1300b347ed707675531c8480755a4ad19a", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "eace01e137c380d3ac46e60b43f398726c81278765b04555e2200e6ca4acc0ec", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "bced65c9263127b4e8b15935781df9db9f7eae4d99bef8510775b58eb1b263e3", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "6dde1e9ac65743bac8aaaa4a7b25ea56eccb6c2f73aa27fb055467da382a0f5a", +"T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "6f1ad8c80aaaf757745ed9e069f7a5c6b4d63eb2ea47c570b904ff4fbf082b7c", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a22d5e1adce339aa5e3a7f4dd9fd0be75f29d9c1c4be4da4ee981292f40553dd", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "33c85e43f3691c95c66e72ec59493fe2e59da86de85331117eea5fa993947345", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "665e88603f76396a4c1a1f554f0d02248b02f881784a88c712352e9685541f63", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e6fec1f5cdf157c5a1766c6db6d0d8aeea92b3827058ab88a48600f1da35b355", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "269b3c53a4392d318a8a6d22751207b0b2dfa7381858bc71851f65e5c9230171", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "5a438f4a95b3bf683d226de56d026200639041d0d6e2d6dfe90c6002a49b3ad7", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7a3f22f04417f0186b07306a8e5436e402c6b7576bd68429353bd18ce53a3b64", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e23d75685b9c5bc3570e1585a417007daa7a20b8a92e0df874efa9b42e0d9dfe", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "3c8a4b0682136f0c80a7ed07ed3a5d35e8e2761f5ba95132fbea5b78e0fb49e2", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "9627d32bd6597450672f7b9d6e80597d63a59a7c7436a06c01bea896993548f7", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "b25d0005bfbad92824b9b18d185ed436e050a9e7f31b62422c40a8dea735d329", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6cdaf5e54c2796e71155585f4452354691af7aa3ec85ce412ddd212452f39d3b", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "272d01af59f92b87983caa8b95020769c524f3f663e6f0995941f8dbd2f12a1b", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "93af4d378c5687d6750849d5859c9c192a9b37f3c9dbe426993e3b63f57116eb", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "1ff38ae6ac4ca1f3f72dd2c9319400425848271edf37dd9f9cbeb0dc8cddac87", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "5a438f4a95b3bf683d226de56d026200639041d0d6e2d6dfe90c6002a49b3ad7", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "aef27b3305fce266e4568400bab5352f1ac947b48935b75a3e8d5c444e829030", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "668379c060a8fc3e97a6961932f2b10220b1f6a6f3e212d1f312e0e35e3d0efd", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "43103e483483d534dd477af3881803a792a2fee7da89bf888a92dcf1df1430f2", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f10a053e14cb76df3ac1aca31db92b0c6d3a81f06cd6df3be6718a254462714d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ad3b641082d48b0a602067a68b82915b902eb404f98cb658d3a6ac659ff19bee", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "43e2530a1dfb5a36eecf5537105059ac1c9864867f1a4b76be3bde6c82d70b0e", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "c08b9b820d8e1cd5285d1c84ee546101d53f30184057532021f8997436c6b12d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "8efdbe497d4e3652e3bc051d881e8998a805f2794e3e3c05ecb300837253865d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f5e5cdf72f6ac6eea8c1e4b258ac81d24ab181fd0ab381b582a31d9a68d2a8ac", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "48141a43b86292967b8d66ebd9ce49814f042756678e72dfed70ed9eab47af13", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "9fe2ba41b952e984a799572d2322be668cee7c633fb488a2f799b7c17381a079", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "411310ddc7d29b45bbb45f611938a86cb79ed53073004f071bc3505a2609d8a1", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "e79a06a5e14e5948654d0aec78a4c95c1792b126288265447c56afbb3f52089f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f2b1e9a86ce603232e67dd3d2c9b64efcdbedb0f0f77fe749dac342fbabf217f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "53ac0b05235a4a6c4abb0a763ead00e499b929a747adef8632ae07048cacedf9", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "3125d27a320bb1be379be9e51de7b7ae1ac13d147c79454b85129489cb20fa67", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "dc785425404836985cdce3a4aeba67f7ca1020085695add2530d1dcd607caeef", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "8a1723bd313d05d035b93bf9417d1755f53cb551c01f1bada01959cf01043640", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "27093b9dc8f5e690048529ed9804fb81acefabca4a3252fea20dbcd537aa87e7", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0c6ee86f9b9120028b6a54b64ed1db1dc4859829384feefb2033b47520c8034c", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cf2695843ac9c70dcb91e42264fb68c66b0871eb874a567b44c9a5ce218d55db", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d7bd0e25fdf3b6cb65b95ac51970f5d28ce537bc2f8a4c3f9e090a6eb4a6095b", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "8fd2cb1e41da1862d86becc4e24a58c82238b5366e1234b0c473bd58f48d75cd", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1ee3b9c657288f6a18f74c1a20ce4397f6ee7dd85d35ca3f4d1bc85697ff964e", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "44b914eecbcf38437d801ae569b8da632f76184dc42425d9bb5e8eb22b1dbaaa", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "3a4721303ca891729200c58afe20c6fc92b45b4b9d6bc84b94912a68e1a40867", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "6296cd301a0694252ee58c218f4ceabffedb209f08ce0b15d3b3d5d253a680f9", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "20c9ec48a3122f359deebe6bd4659b6ddf2016cee427ee888663d46dba4f3aa9", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "db9ffa0d85dfb7c38b9ab50ad272656b384f02de49483b2e58ee2dc05e18b72e", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "c7c1368201b8cf342506e0f74b55570908d878a9b666bd04939863aa53f0e5ee", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "786a4ff04f8fc543645eae6ac33075a08c32efd3d92cb7b95f5746152902d149", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "388845ea867ae63588eaad720440148f60a5d2c0a29a4b6831e9d399a8143641", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3d8bc8e1613153a51b1bf2afbfd616b2908e6ef45ff2375251fbf3fd92ebad1e", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "f2dcfdebf09188bfbe49150dfc2e09292501abf05f92ae930a116dd63254ff04", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "abc6199a1646f74d9f07a8f712b173edf36ac8b1132ad68919609113bfdd417e", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "769e04df8c93cce199ed6ce3d3b50bfe3eab07120138a19102200047f4fd2281", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "68e620f73fac95da1d1c7aaf7422cc2468dcbf8bed168434d29a9d49e07f443d", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d8084f7db6835f16ac0135370944370cbc0ac708314d7c21e1bde36ce9d6d109", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "24d82bb9d8db0e7a5e8e138bbf6e839e7e78ccc857cd4022c30d56947e3b9b4f", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "089e1bc6caab60aefb39a3263047c0db48e160c3b7973fd4e9b00c7e9877bf82", +"T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "e12c21bf360403793db4c74d4f98950b33e49420c1b51a7a7defa1b2ff93e5c8", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "d5cc19043c14ecd0b72e81b686d88010b14f4e91fefca878d498e004cdbae066", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8e16bbca9ddb58d435311c50dfc7c5311609626295e70a36af38a0421b42c646", +"T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "8acaf7476ef6d2bc60f9f5b828ed4c682335fd1c4d6b2a95a6d1b8fb9808bb56", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "edf95354fce19a6efd8ec49ce6040d8dbfd2233da0375ec78f87bea973461f8b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "0933f3a2617ac44fc7c8d2b09bd03591ea5e9d15d1e1aebc577af899b2674b1d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "1652b3bc4f4279b2250f20c542da6b72e35ea6b61278f6acd12d3e740b4fb618", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "b4f51c9ca11abaeb10de883704752c11b7e711c9706c045107a7fbabb84a17e1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0e4e5be1af1c5f2e6b146dcf2dc3c030d4c5faaf1bb862f08b86625db4095431", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "35fbdcf8d62dfb1c80dc29fcc5d84364dcf2ed4c6596233c0c437918b35d40a6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "b0e41cebca68ab278796061c83c7d2ed641cd448dc1a629889b46c427ae883aa", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "518ebcb3c89c91033be1d07e547910cdf0f5e3d45b552a310457149487a714f0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a31bc0c1cd10e656f24f967a3c8d87e38df48c13838cca08e617f00e5f15b07e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "92437677fb51f22cfbeb34332e99303f26e2e717184266e5d5e313a64a10bb05", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4786a083c9c8f0d8ce776543d1807b817132c10913d296f97686b58db7d4782e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e4828af0717addef94151315b899ca4e4758f39bfd2330c34235a3c376f8dc29", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "9fb985fb106c71fe656b8992cbeafa060a06715d86538982f814c0fb521ce8f7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "7ec34ac5bd6ab7388d824213903414d4eb32ab9a9501bd62eb898de6961c0e4a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "253e48ace98a4195d1a605c198ee4e50880b2a6368612eb433a5b7baaf77f7dd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "7ed3ca9fda7a7549ffe474a8188160a978a90a4882d3ecd73f6b04747c4486e2", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "01374b5b1d28d2d6e534cc0598305d36619358b277357a9a7dee3a088def0ab9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "aae145433e5c20a2d4d6cc5e9848676b686a12e6d6efa1cfacc1b8edae3f19b1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "047ce6bb6509a3a90eb73ed9d597f066a6104749a67cfb6e811e5422160e49f9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "5590f65206196944b20c052ce4bcf2b9cd8a83475b8530ba024c4387a7b94717", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "79830e041811f7b90808db364272cb8a938d5046f042bf9635b5921fbd38f58d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "79830e041811f7b90808db364272cb8a938d5046f042bf9635b5921fbd38f58d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "db798053ba8f8b7f726ae470c174d87c7e6e8d38132ab5f0debfc6b1d6baf942", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "b9977bd994efb7470a57eb320f7d5383ccdf203ed5c54e40a7d0810635f2dcbb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e617b5493245e1dc696aece6b1debac4b3cd3ecf0e0a646f848b63df89c4708e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "ffe9940f5e8c0869a4916680a2705244e7d3796332948354aa779e706f0a19a8", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7044b6c64a5595ea5aaf3f3c8e295e8dd137ccd4c7276f796f46398d13fca696", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b565ff7a9782b7d0fea210dc9823b94b04c17955f4f921767effcf6184731d6a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "722c814892b30b8c7ed18e8d2bdaa37f08dcc8ad4d15b85c156f722cb35b6216", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "aaf74b54a73f63b4de573ab1a5cc93c2bdec52a031734f9a10dbe3c5c6fd36eb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "3422d34048583975f24f9057d346d21504064daa09fc999b90adc22f624ebc0f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "c84ff2a8792fffee70111e1c717e358e06013f3cc8363dc564b4a353179f7dfc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "d56f41ef675cb5b56330e297957995740cf4f15cb94bd03a80d536f89b2c058e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e65f345b53b5beab3eb9055b60432744c9527bb8f3b21232367d023d62e037d0", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "a4c10c4ccbb0a98ab8d178382e001a4155ac769f180bbbfe92710d1ea31004eb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "a52868eec394b88d5e809e03f1f7fc9ade16ae6d219d53fdca0d626b502fb85b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "aa560c4ac376e1a961390cf3a94c93fadb67b287af5dff95b5a3aa09da0d7cd1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "feb18aeba6e1dd5d4ffa90dd38082775d85cf997f8df99148d92e45d447c859c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8e7f00fea771daa76e958aac4de98e640904f1ce8425a565bfdfdf74ed792991", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f79a376ba82882578f50b5c4724ba7d44773087466569d49a3fbeae86fb69e94", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "09816f9d091fca398a6bfaf5c430d581dc2776bae055e2c37f384aacaae45000", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "fa8ca5e00c9e328f9eb1559c36ce7c455f69dcffe920f3550c7ad98cf23a3b70", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3bf94374a18e040f667942d0a687392489f1ca2e2ada64a0bd20dd65ff353d86", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "3d8e1a1ad77624937d4a170908397735281223abf6a05e318ab622eaee5edc37", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "f75701cbfa5eb85d72464cddf9457fa7be71903ad0a6cc973e6dd31a360cd8b5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ca1cc198b771b91fee70b9c7840c76675604057764b1f03a40c7fe0a6a8808cd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "4ed2636fa8e3ca992dbff2100739604a2fea940d11e7b95558f12a3956c9b378", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "900d218ce1140c9e716017a10c295b575884cddbc63162b9dc69cf7bb3a8525b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "a28773d660b0259cefb1bb4bef5ee1ecbdb3bfe188094e81733682ae6495e46a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "dacb0c7a7ce1174003a385117a3432407c96e3daa2b50b03a7206f9eeb6c1674", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ff10f8e302103ee1ca8fa90ae98f4f996981e13a0e75e5ad9b39b4ff77ac4d79", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "8e9dd866c3bb608cb700b4902142fd877f481b6c72ca1d6000668f58d4deeecc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8eb3a5f85659835789b35bba94166777e30fc69a0667f651edf198f586dc78ab", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "821736d3f8666fa307bc3b92401f29d332ddc4b2cd7bbb3576b81c34e9951662", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3426a160f81e10266eb323fa2940e120beec0308c8598b76bf58d9a2bf570714", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "6f52fb1614a19cc08a7dc8a3c7860da11a8974c13d810aab7706f50020c9dc33", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "defb56c834791c626cdeb7ff6f643a7019831ec02eaabffb2cf47f42feca2937", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "8208ed04568249a0a42ab290e989da9abd788ee3ac517f0f3b13ffe6d299fead", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "a90584c4af7cc7d7e5798fb2c48e89bf93cad6d45c3af02f21f8bfe9bf8cb7e1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "e617b5493245e1dc696aece6b1debac4b3cd3ecf0e0a646f848b63df89c4708e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "6762175b4e4939e989237f9c3579308c2f84985ce1cc106cb8a494e3e50c9820", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "0b131e75a7f5d0db1d169e8ef293ed955919ded7c95544a60b0e2fda79cb8d2d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "899fb6771645b4c8d0e178cfaa8393e3564955b3fbde0aca0bb34af5919c4f62", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "a4c3d9057d054bae3eed98c60e5a24ed56c6cf52bec7f45891d2dfd854ba4704", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "53c5dfcb48aabae6c3e2411c707ff5110699dec7385f0637931e9e37683964f6", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "b801357563512243e365e575e279222aebbf1ff02e8c4a5022ff507e75769774", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "792d3342896d17d22f24fb25c5a9478be075794dc04fc9f54c2f5b7bde7d476c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "a6c29b18e1e27aedd728b33ba52aabfacb5cae6ec3b8303106c18d717ac28a33", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "b29cdef3935dec9b754bfc05a305b1b386b838b691a9653ef8949aaa41d5bdef", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "e3916934709aaa0ad6d7c92b93b09c192dc986bdf49850e15ac93a5dacc3d29b", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "11d0cef68e3bacce1ce44d7423d3ba4d3512c825cd58517ca8aafa715dd48b31", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "06e9c364d85b03b034f542d6215a7b261a583c7e2f46b6cd3f80383f852890b1", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "d51e76ac475ba2832126aaef832e6c75c10cd9e6c239209fa86d11c3a66adc5f", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "8e99c6dd3ff4174cf792b28841021e436b33eda0fc01fc7ec1636b0b5fec3b04", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "875a3f0ff0c7971dfdf19b7f0238513cfbda2db9d57a68cfa5911cb380508497", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "fe2db645dae57c9efbbd57c87da3bbdec3a7a14fbcd6725a52caa7f66aa9df35", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "43ec173726b6af69c09ee122a42320b177110ea68560f6a03677f75a67d1eb69", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "0ca0da5e5269b9a424f970c35a521ec06f7dfbe81b3155cbdbd2db0ff856edfc", +"T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "2f913a65c7ed639aa0591703f61ded963aaf94021d8a4e87bb2decc6e72be20c", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "385a9cf1185b3dd198dc8d240b92ef19295b8eea8d2f50f7d289b4e2ad57c0b3", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "6ae67697c3b201b5f77c3c2d6f79d647d6bc56ac2547137e253a83f73aeb1374", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "ff0efd9c91cc8ba158bd84bc8cdb6a7cc35c121fd68425d59d12fadcb4cad9ce", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "80a5e26256974a867341302814311881beda510c1e1da1ef174357e8d7de0f49", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "1ac1223b675399dddf1e6f3c86f8daae3ba0c614c726c697e19df6e8b158495d", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "be9f48187dc832606186780ea43566a12d521d8477a00c766a805344facc7efd", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "174503a970cf592d0520db4b9a34f80d90ba892932254753709fd67402467ad8", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "c7b02e778bb8339c99e8ccce81da2712a3d9d987c39f220d74908d0a78c3b4cc", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3dd06f1f2bf3c8d19ebe52c5a9bb710138f15f7cb087ac9061abc990b4de870c", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "fa855a4863750a059589877ea79ccfc47ade9cc092abb007c31db5fd16869820", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "70ca306d39dbf5239dca097f5d124b68bca7f6a7a07439ade24c676688fb070a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "68228296764a46e3a9bb54c42633696eefd1d93b1bed72b8390fc1eacce5e41e", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e47e045a553778a32485e505de5f3bfacc21f67010162abf1559ef450c301a6f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "f99c5679b7a0e3f6ace63a16916248d6fbed24f73ac30e4de130574ecacb68af", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "dd3e7a3dd30c0f8c4a9824c0b1bde86e7dc82749ec022551f09fc59956c6d135", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b50200da6be1c3a375414b2a4d0570686b33f05d7826999d80229417774bfac5", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "4519b490b5973ee8c24e5a04f664337a73e382fc120c8a0858bfe8ad92d9456f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "8ea0845a94fc0a4424998996c7980e7d2eb78f21b3e9b53a7017d0f6ad62d375", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "2af485e80a75613419f9b6ef96f758f2671c0de6f01a2b36116f2566065b8332", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "c8644622cab34daa123b9bf808705b312b1e92e08b493e31260f602736077b8a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6b6eb13b615abc6fd19baedf5f082084c0af385cb9f08e2fec938e4e8b2e58a4", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "f8d2798b9332ad285193a2f10b052145af91e67ef9b267868de6c0b8b2fa9e19", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "3f2ec39941021ef44ee5b6c2051a9ffa2628acea6b9120797666469de8b68e8c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "4dfe707450e3d75c47fa6729f48a8003294f1723e3066067152f9ca998e42854", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "c09640b1b5be6de3d1bdc67c0ad5bed800aba0d4abc58a8ceec5174b7abf87cf", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "6ebc30bea847ceeb44864283effbaca053b8b085bd6edf0a9d854e241ea7f98e", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "f49ef66e4f6bb867a23a5ae8ec6442bb2ad3ac91ba10cb07dbb5edd9bad8d258", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "42776a02ea66b70bf60029ab616fd031727c66304892bed7d6143d37d8a54e45", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0776267db6eae356ed6e970af2d3784e04fc1ca148e56d31b5bb9ccc5a1cba36", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "894225e070a7b2a93711d74223cbfe906d2f022873a08f2f59d190932d502796", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "cc8efb0ee37b353ed362924e6e0e883e564afd2cab0bfd27d16e69439db84f75", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "7624bd81f09267e30e75b34c13bdcb4642f06a60597ae54c5ec73f07dd8a82b0", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "c1e86790142dcdbb3663722d0ee557530186b7b45163673fd09392a4ed2cc076", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "c60a62e72588cb19486ed57b25db71c2ff662f49d3f1fc32026acd7424325a34", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "977af261cb85f36c70f0fec1d0a7a9744ed3900611952068874b373e5da26103", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "cff4aba8818839b721baa5c9e05395d54f3144ff7f55b62981ac6b07c25db2af", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "28e03214922442dbd61eb061226171b37fb5fb1c267319f057d92ff705b23129", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "1d0b9939a942f8fb665ed0ad1346b1b15f4c2de4d9060e83815a5166d7bd5395", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2480e92bb23741957a33c55727e1107c89c3161e919eeac7ac571833927030aa", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "f49ef66e4f6bb867a23a5ae8ec6442bb2ad3ac91ba10cb07dbb5edd9bad8d258", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "2301f38538123cb20a4688800cf60635173f8f4465577d68a89f012aa41b6a2b", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "10861ca732e29baa2598872f1281dcf03009939a2f5babde882d975fc11820c8", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "28b513d5e54a5a4aae30dc27da691ea50c294f33dca8c570a4fcc0b1d42bf516", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d5b9ed0e7806689c76cd5e96c4677ea91fbe4711a476ffb744d5c7338ebd9d9e", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "d13d835f0731b5f5a42ee289d4d96edb9ee3d62d58529f91cb31c069515128ff", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "1c8e9abd480546ad3216c2a6b99e7462ee660ed96475da7c46b5ffe423c3cafe", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "14501ec1571c0a8393007e43a8cab1aac00feec46828c5e608061bbe7d337e3f", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "98dad1ff14c6e206fe5b1ba656027095065d845abb4681502d25935d75c35493", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "b64987056433d94220e0db0c49e04ff0428fde0327ba3410af84372075755f2d", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "3d952687f5337a01519b98941929b6bedb3ea0bb87f1b464389e0588f4e73d39", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "4f01ae00ac123b2632dfc3f7f7ede3d3b2d47bd2a864ebe6c259a1d8382dfd92", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "4f01ae00ac123b2632dfc3f7f7ede3d3b2d47bd2a864ebe6c259a1d8382dfd92", +"T3T1_cs_test_basic.py::test_capabilities": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_basic.py::test_device_id_different": "2883e63b941e190f9906dd570bd047057552d363cce17bf8775a291a0165d170", +"T3T1_cs_test_basic.py::test_device_id_same": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_basic.py::test_features": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_basic.py::test_ping": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_busy_state.py::test_busy_expiry": "d4b91a858db64bdf1e5661a9e7ebd7da285cd8c244dd1bb38aebac0edcc1d6a1", +"T3T1_cs_test_busy_state.py::test_busy_state": "e348b727d32fcd045864d512ca01cd71eccbd8dd05c9173f4a0a5d79f9f44a3d", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", +"T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "e9d2f819046fea277edc6d1d2590c86d82e1e7abf31e31f3afa8d549f6d927f4", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", +"T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "e9d2f819046fea277edc6d1d2590c86d82e1e7abf31e31f3afa8d549f6d927f4", +"T3T1_cs_test_cancel.py::test_cancel_on_paginated": "aac60a7786841d7e70f40a98b58f2b338a81b16f1831602564755df9a5cc45fb", +"T3T1_cs_test_debuglink.py::test_softlock_instability": "35a919b49acbd9788cdfe2ee302b362a5ba9aacabfb24896533849f2f739a715", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "b3eb00a0ccf0406a85d623598121f40bbcaf37f097d34780131f600d6addad9a", +"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_language.py::test_error_invalid_data_hash": "75fa3a8df587223b856b112a130efaab476c707a2dc36d9540915038e534096b", +"T3T1_cs_test_language.py::test_error_invalid_data_length": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", +"T3T1_cs_test_language.py::test_error_invalid_header_magic": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", +"T3T1_cs_test_language.py::test_error_invalid_signature": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", +"T3T1_cs_test_language.py::test_error_too_long": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", +"T3T1_cs_test_language.py::test_error_version_mismatch": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", +"T3T1_cs_test_language.py::test_full_language_change[cs]": "50400ced72cf6643b98798aebd9b004cc83a176573aba6bc8537c49f96f68a23", +"T3T1_cs_test_language.py::test_full_language_change[de]": "8372a7ddda25a6c6621747eec043c8a4923b2fbea8c75bf2cd96548bc8618e88", +"T3T1_cs_test_language.py::test_full_language_change[en]": "cb98f96887f13a82434ec00200e70c1b85c52d3ee9ad52d5e0d13a8bbc8652d3", +"T3T1_cs_test_language.py::test_full_language_change[es]": "a36a4c3246d5924841c1ed00f423ef255e4db169f8baa9b9b45186c1fdf2519f", +"T3T1_cs_test_language.py::test_full_language_change[fr]": "7ad0e0c7d828dae9aa96ae3bcded96d9c9ef428404f54f20d1bc20425204758f", +"T3T1_cs_test_language.py::test_header_trailing_data": "4f31bb0aae025bc89cdd85c64432eb8fd1687abf261102c6e6a94d7e9bfaf4c9", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "fd27a6c0c7a5866a974d9f0244a04829c1fb62cbd09d95d34f06480ad0abd6f9", +"T3T1_cs_test_language.py::test_reject_update": "ded5f116b38e6f0c64cacdbd230c33d061123a528742a0b11fdc70c45c4d2167", +"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "2c981a112478910c67d930767d5e43a6d590eccbc0fe74299e8e448795ed542c", +"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "2c981a112478910c67d930767d5e43a6d590eccbc0fe74299e8e448795ed542c", +"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "ba59de6d1f8fed698890b9dec33e6286e45554a7208a8a034e95f48e3a0e9328", +"T3T1_cs_test_language.py::test_switch_from_english[None]": "adda49d244490bdf99fae24dcb7336b22ab4ec0e7a7b4d276806e48d1455898c", +"T3T1_cs_test_language.py::test_switch_from_english[True]": "adda49d244490bdf99fae24dcb7336b22ab4ec0e7a7b4d276806e48d1455898c", +"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "36ae0eec30003081208fbfa3668e3974897b032dd1e407e33e708c73cfa7f207", +"T3T1_cs_test_language.py::test_switch_language": "aa9002a61e6953692e134bd98df773a5099dd50cb61562138e7238a5818d2176", +"T3T1_cs_test_language.py::test_translations_renders_on_screen": "c859df8d506ad6ad5f7dfa0c333196cb3b0006d57f120812934d5b2ae3caeabe", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "ec87c37acf291bb6af9a3ee384553fa3d3f3559dfc9e3b62bfeeb3851b883e20", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "c8d6941cf0d61b40c299e3a6e9d27a939c305143246f6d107fa73adcf40e5b06", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "49bb14829b282213a363bf2c6520dac2a15ac07e1357312ee730925d2e704d1b", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4741416de5b0ae9aa27367c5a7f9d5f7a3607d1323a5a12e2709df429dfc3784", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "8ea87fcf755fae172cf1a275dc2ab238f91f3e095e374fa2ff5e490962655d39", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "454fe2d13fcc9c64d4f2819ccef8c2603d93fb2567cf82fdf4503faa1dc0bf43", +"T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "c241c378463848274c8e9914331c59a0b25dfb9c3ea8fee4156407439c8b0e3f", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "2ec42b5e9c136922ea119ff3ef760d3bfddb81473b4177aafab03ab391b1a1ed", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "423ec70528f52faf5372dea72db8a21ea1e8a5bf3ba18cc4aee8976bd98759d4", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e7f89c634c64cfcde769581e9f09cdb090a6c90b7852275df183613f528858d1", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "5f0fd7341a7f6107f1efa68dd2ce04718b0508ee2026b37d3f9545aad21f63be", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "151ba8a3dcb7617f2af82b82a571dda237d1d7f742d483021d3e05411c772025", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "7ef37ea90132c29dd5e3dd85f5f03cac4b10cf768c9111f45dda5c9fc022051e", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "59a395e32d04dc4bccfff02251299177fb243021c0b67b3a70225bc6fb2c8561", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "80d40c775449eec775776a66bb861b6030ce593e98ce2d253df4dc0dbf93a5ae", +"T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "c9ca005679502266318da239e432a9661bb71967c41455abc9a78ab14ab16588", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "8672624f9269d4c29e8f2d20f6a887c94ea4faeef950c748d3832cab22488471", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "de1592140e59c272831892af67974d282e247194969534dfb80f67c828ae0d98", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1bf928b5b5de43abaef3da0ddd03e853a0a948fae7d29daf2425cd6f42735ec5", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c9d564370ece24839e4d3dc59a19cd92086cc8f0c7cc3c71943f7c7fc5ee27a0", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "ba6bc1794986d333b5747c3e35504746ee4071d42c0d3a8d59eba20d9cabe77a", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "ce6bfa7ade5030ea5c1b0ebe66ea337717dfe162a45ab271eb8901316438e9bf", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "31571ef27a916ce4e5f8813b57432788f8c4192b154c04877dad132eb7eb836c", +"T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a596131e04b11288252167292f6611c4f327a97a7fd307661106932b99dd8e6a", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "0f7209d7a00bbab7bb93232164fa00fd61c5ccf025ca4b017d7fc55d19b6ee7a", +"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "ab0a7d76da244050b4ac6c47b04738cb2bc601f75fe9a21c510d92bd9caf12b0", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "48949d8079b59ee05974bec0c7eef5d3e43acf2942d253ddfa9c7b1a31e9662c", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "3067fb5faf6c0c43a271af08d9b66b0d27e22b10f1358cf8517adb922f866657", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "17f0ae6eee88cabbb45938d74bc74a162aedaad9c275877414810025c356463e", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3067fb5faf6c0c43a271af08d9b66b0d27e22b10f1358cf8517adb922f866657", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "3067fb5faf6c0c43a271af08d9b66b0d27e22b10f1358cf8517adb922f866657", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "d9a276eb1fc1444f2e321496daf1496eeadc5fcf019b8a5189778818604b389c", +"T3T1_cs_test_msg_ping.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "5fed39e039fcf65a9dff4780e32e39f748002e9b9019a11db199dcc5ce413e13", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "3ed0cbf6d166e1b416736f4b1d1e1b58ec8e16c27a99c3b37db81a03934327cd", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "c1a53ceb61e9acaf37eb7539cf99267fe6357a65e5c8615f4c7808a970614bfa", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "4f20e0c0081ba79e8f8b462188cd705d559941b372658883aec71851a6466bd9", +"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "2883e63b941e190f9906dd570bd047057552d363cce17bf8775a291a0165d170", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", +"T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", +"T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", +"T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", +"T3T1_cs_test_pin.py::test_correct_pin": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "1d5d91a76c3b6105f565421c60bb54f617661522c377c7060321a7482b447467", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "d45f5d1bc6146d4791524b5f8686db0c680c625a8918469bb07eb839ccfdbbb3", +"T3T1_cs_test_pin.py::test_no_protection": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "5e9f1a952cf3a429ad8098599cfbbec7c7beebedf0df17a9e5c47d7bc2e868aa", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "c2e82b8c6682fee875eb2c88d95737d4bd40bab6d185a79606a104d72ee0218c", +"T3T1_cs_test_protection_levels.py::test_get_address": "82cba88191df81f6babdcf61ae18042375f25ac31e04f78c0684319f9d0305c3", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "16f9e8c24826e91ae114be16d6cfccc7313cbfb8d8d8fefe8be4cb51ffd349eb", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "82cba88191df81f6babdcf61ae18042375f25ac31e04f78c0684319f9d0305c3", +"T3T1_cs_test_protection_levels.py::test_initialize": "5246fca773f95ed7b8e4b6444b7d67e6d70be06cc6eda120f6f0f03caeeeeb5e", +"T3T1_cs_test_protection_levels.py::test_passphrase_cached": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "831a663c65a183eed8fb503d7e7174fd42bed61390c95daead4b670d190ed5e1", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "b8860b13e996a08906f850ce2964b179caac9c36da1d6431e98fc9bbbdab1f75", +"T3T1_cs_test_protection_levels.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", +"T3T1_cs_test_protection_levels.py::test_sign_message": "e81b6a058872b2a89a1a8b9a46414ae91178fe63f1ceb56d9ef569f81b066c5a", +"T3T1_cs_test_protection_levels.py::test_signtx": "13b94d9440c895feabc8b03b392f43d5428ddf854aad39483041d7053357c4ec", +"T3T1_cs_test_protection_levels.py::test_unlocked": "73d2abca755bf1de2a2e1b11ba26d8995a1c3324f70537db5ced3cb42bcbf2fb", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "56b031c77a85fe8a0f7b20f35733b7273dad5113583c0eabfd67fa62054da927", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "822494d84f36704f54d5eed55717d181504862eec3069810c08dd7e853b36d87", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "53e1ec9d505ace8ef18e42f028d7c3f3d2e6f8940b55d31e66ce846b88d2274f", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "df69d6a1ec1b82fe082a6e5905a29237772ed2ace43545f76c6d3632bcac553b", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f9440f17063c26bba72d0df14f8f43f18ad3c0de43b29112fdd9b1a083ba2941", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8f8179b6e444efb908fdbd33b250a79925dbaf55a66ca1e4bfe05b4983f31e31", +"T3T1_cs_test_sdcard.py::test_sd_format": "3cda5adf0b1de2c373b060003b594c1efca6f9a25d9662834918506d5b5b1123", +"T3T1_cs_test_sdcard.py::test_sd_no_format": "48a01dca18c8b6ae5a038da60d914bdac8c85b33b2b1e7a1f9ccbb6d28f7c69f", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "1eeef8cc9bccd1faed204870559c38fe9a33264d2151dde7a01d0ee0989f1042", +"T3T1_cs_test_session.py::test_cannot_resume_ended_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_session.py::test_clear_session": "854f9fda38feb37900cff0189d51269e180f277cdf551e6367b8449bc8cbb09e", +"T3T1_cs_test_session.py::test_derive_cardano_empty_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_session.py::test_derive_cardano_running_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_session.py::test_end_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_session.py::test_end_session_only_current": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_session.py::test_session_recycling": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", +"T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "94efd83f7441978cd2c844677a39ada47302be09c89deeeea93e1dec2c50f244", +"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "83f7a3919a270c23ae45b68dffd09edb65f462b2fb993f93eea48a3a6a8d5851", +"T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "0408525b19e98110cb3f2d29b44e93ff192df9891568193b97641ab2cd7e5346", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "09d51becff25e14cde93c880973b8b09c13124db9f9523fa4108efc82c70392d", +"T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f06afb6564f81021871cc732837ad2ff7d513405fc5480e003a91930c8ad502d", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "23c7e79f4dd0ed9a3203889159a2de0998fa062622ed9751f08b9f1f9f8b165b", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "c63380088ed049e335ff95364af4243ffb78a95fccfe2404d651c35b24a073fb", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "392d42ce2f371b3460f84fee0bc60c87c64b004e44c1660319e0fbec7d628aec", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "680c6be19b6652a1c7c21463f9d1c036e42aa3d38f48e7f828bf9c434325975b", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d0c6d02cde6433ff256b99e465f43b8fa64c0e336044f6ef56fc0c749caf7b5b", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "414ad69722e0d68f6c9aa1d930d8ce52ed33b8fb6d3c84efed1c347b26a984ca", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "bffff606d1a5b847502c5718e750441553d2565aa08736346d1597c18280f444", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "92152f415105dcf6ee4f25dedfa534bfe6fc889980347f91f3523635a4a6256a", +"T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "54cd6564b30717319261ae27fceddee739c92ede64e6a9b6a0e192b1d3db0ba2", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "042095e96fc0490fbb5aabdaef412b82fa1308ff10cbb294ebc56bce339d5aec", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "df013db44b5c5459280f9307873532eeb8035340bd70a3c646e41b00a7a44b88", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "0696be676429e5347cdcb67d98f690af14baa578f67039e1955f1839a6859c3b", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "cbb1ac26b7b245c97a5b67f1f20f3e275a6d98158915c1b4685a31cfa395d9c0", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "5ea23242ad81f4a4b9d0738f1af19c8b32eec8080ad5a2b1f95fcc9657acefe0", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "408d4525bf79574212b04b84510c61866d301a91deb2caf692c7be86967153be", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "4111c81b60c6f789a62644ec47e12813cfd6e7d77c40fc787137f3dd452dbf01", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "90292a008ac75f9511ca594baa4e91f90cadc99ddfc3e7775157d74482460d29", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "33921ecef5ab717fb3a8e8f2cd31cd4f8bd67696a0e50f5d5ef5052ff0d757aa", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "a053cfc17b3cc9d949333d25ce8ef3010146124b802988e8803f07b00b4505bd", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "6398d5ea4ba0124d9b5b137d25105dfac025db8b554ecb28ca7884041aa9a578", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "a0ec5adc925d8546a9ee52224f874029ca989882daf762e24eb72701722755a2", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "9938e23983b3f11af45521aa0c2488ad21dffd3f75b28f3ef30885da3bfb7123", +"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "774d5723974299a9358b8c6321971abec584e01c9187626caff8fff1092bc93f", +"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "d02bc3fcc865dfaea3d9a447e590da6e82cd371e74f485766542b108689cab34", +"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "033751a38b0c4c16d2299e33d53042a3bab22fff43bb613b3ea090e5e1e01348", +"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "82f189cb1081bf85b324a1006bbd0b2917039005d3059d5cd4450eb33e039abf", +"T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", +"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "699d6b32c383ae193a5258b9fa338a4a7fc5ec854f230ccb70d706ec7557acc3", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "12e941a273afa1f5c5a37070b65c22284c9324d25996fe2c1f1a061d1aea954a", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "d8b4f1de99ba28eb7abbe620bf42c67854f0118f1674df35c41110b87ec908a8", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "4d3885cd0f99214833a2b5940e0f428af0c4e367a4e73832cccc4c39efe5f2a9", +"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "ca8aaac1b730e8d5809793ea9b61efcb13d971c0206985e685c58850c8f88423", +"T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "82be5a189446a500c2bd45551fff87a6b385f104a6a6347ad7a1cb1b218e2a23", +"T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "eadf259acfb7e2a6bd8dacd22c4d9ffe53e44c4ae43e4aa3932ad52ff8af0d2c", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "fd9123d183ffa0b37b79f1335841afd3500068adc4b0f27741ebc76d1138ea89", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "a109a20d4b6bce5523493f8ed2852549045ee81600a1a69ec0fd563860b3323a", +"T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "2a0ab925a74490650691d6191fde5879fc1643f55f5ac5df0e24770396119ca4", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "d07826f516ebe688987dcbffcef9f15380a3fe84d1c289021ab7e5d3277bdfb5", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "11356af0d84240bf54e81216a7b7f4f7907cf44e929b01823d4b11a14acf5e24", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "77f0c82eba913b0409258ef1420fa804f136ae3ed8177419bbd9ed949bbd5f8c", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "d07826f516ebe688987dcbffcef9f15380a3fe84d1c289021ab7e5d3277bdfb5", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "11356af0d84240bf54e81216a7b7f4f7907cf44e929b01823d4b11a14acf5e24", +"T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "77f0c82eba913b0409258ef1420fa804f136ae3ed8177419bbd9ed949bbd5f8c", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "f03c9f7ef6e922475e6c982a2d91453c3c68911a42b1f0af16afd5ee4ecd4676", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "5c341f07af8ad9183f96d46c30bcabaa87ba1321331755381019f2220a2692a4", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "bf7ca3828609d2567341a575140312089f5f7e3a44653af95dc42ffc53a85752", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3a67b3b1d921e8dbaf5e22db1e287dd4866d76d6b0570d70c511a6d84e1c03a8", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "20194dac0e607e7ee7b49f674479100725cd23f3688502c6dee2bd613422de8c", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "20194dac0e607e7ee7b49f674479100725cd23f3688502c6dee2bd613422de8c", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b81b0e06942c76968c14934a842fe91173bc7c4bdce8a709f7febd525fc6c863", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cd514eeb3d391dd75ec906812ff8ef9b1e204e270d0bbfe5c623376e38167120", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "d24bac72344b94249a1f677c963913fde46742a773baacab420575b2d8d7f0da", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4f1dbeddfb66c7f654782b4c5a1031dcf42bdf39a8df01cd0b0bb4a841d6c18d", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4f1dbeddfb66c7f654782b4c5a1031dcf42bdf39a8df01cd0b0bb4a841d6c18d", +"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "70593343dddd9ef0b6ad82f6e8e3557b5d6dec6e82d35752d1c0347da674ff74", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "70593343dddd9ef0b6ad82f6e8e3557b5d6dec6e82d35752d1c0347da674ff74", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "87a3a6cd2217fc1e6a76dfdfb826838fa421d8f20810c089f3704b18ac2078bb", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "88490c3fd2cfb62a1a7a1a4882d26592bff0edb66ca8d0e21c0b813e8563f519", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "15e87a6511e245d79391fcb7b8e0e8bfda9fa68e50d4dfa575caa5bdec6e6baa", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "7634954b129988deec9aee5e1ecc3dfd6c3064d5d72cd2401e439b8cc717583a", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d3c7f0c4e37273e2cd2500c828a3ab2aed62a7a25ecd0d28b9a6765f81235e72", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "18c46bbb72a790326ed93bd768023fea44acd58cb31f355b63f3b4d33f04642e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "87a582288dcf379188738006aa899ff6d371aa7d279b699827406205cf078f2d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cca1adcd27ef1c3afb250d6babac3ce191f206532041cd997ec3e51e19941566", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "6d8917566684555cf0060e5b6de767abd68a517b3fd36896d8351b654d78e003", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "20d0c39d9014752478fe1ed14488e3289a6f2909a4c40a531fa7ac3a58cd79e5", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "24bc93fabab027b0871d5d15a08bac07ad5724843e09f0a93d78855fb11190f2", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "ffa51bafb5b281adfa5500900be8e547e5a52872ec387ff46363b8b03114bc59", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "ef81a81eefca4ddb6ea23cebafce45b92c5d3976723a9da3d51baf75fe9fb973", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "024692a3a6e25a5019a9d91960b9ffaa228b6066d66e374921b50146a8fad53a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "ab619367f43acfd97342eeed0850cf1619f51dc941e565fd29f15609a32c15a7", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "3b1c09eeccc7e2e71eb86cf2261a2d634ad4acbf355c6b8a58749a83dd805a17", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "2c9af88772a9351f3c8ab72988911b96d2ff4fac6fb3d647cca43259918a973a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "e597089c902daa2ec83eb116e0252004a5a8770c5bd82d8c232b2d57d0dd3723", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f2ed4ab53ae77d33d5f7da8c781685a92f9e0a4abd83c29d28e7bdaa31689799", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "9865ac94b942e3f5bf0a2e9c1d522997b2a22fef7766e770b5fe47161df4f089", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "e9e12538e733a330291f341c3789b58734f63cccabd19f3ed9bb35bc805c2f2a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "c3ac04cef5a78ab480a00b323de3d4ad028e8eccf054b2ef90decdbb834062e7", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "274536a3298475b9ec3813273dd5595ce83af659545c67d7db2038dcab431565", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "18c46bbb72a790326ed93bd768023fea44acd58cb31f355b63f3b4d33f04642e", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "87a582288dcf379188738006aa899ff6d371aa7d279b699827406205cf078f2d", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cca1adcd27ef1c3afb250d6babac3ce191f206532041cd997ec3e51e19941566", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "6d8917566684555cf0060e5b6de767abd68a517b3fd36896d8351b654d78e003", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "20d0c39d9014752478fe1ed14488e3289a6f2909a4c40a531fa7ac3a58cd79e5", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "24bc93fabab027b0871d5d15a08bac07ad5724843e09f0a93d78855fb11190f2", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "ffa51bafb5b281adfa5500900be8e547e5a52872ec387ff46363b8b03114bc59", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "ef81a81eefca4ddb6ea23cebafce45b92c5d3976723a9da3d51baf75fe9fb973", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "024692a3a6e25a5019a9d91960b9ffaa228b6066d66e374921b50146a8fad53a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "ab619367f43acfd97342eeed0850cf1619f51dc941e565fd29f15609a32c15a7", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "3b1c09eeccc7e2e71eb86cf2261a2d634ad4acbf355c6b8a58749a83dd805a17", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "2c9af88772a9351f3c8ab72988911b96d2ff4fac6fb3d647cca43259918a973a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "e597089c902daa2ec83eb116e0252004a5a8770c5bd82d8c232b2d57d0dd3723", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f2ed4ab53ae77d33d5f7da8c781685a92f9e0a4abd83c29d28e7bdaa31689799", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "9865ac94b942e3f5bf0a2e9c1d522997b2a22fef7766e770b5fe47161df4f089", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e9e12538e733a330291f341c3789b58734f63cccabd19f3ed9bb35bc805c2f2a", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "c3ac04cef5a78ab480a00b323de3d4ad028e8eccf054b2ef90decdbb834062e7", +"T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "274536a3298475b9ec3813273dd5595ce83af659545c67d7db2038dcab431565", +"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "fa20fd5e9030c728e389468406f05055563b4378e373cb9932b60b5104eddb40", +"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "c88249bbafcf8cdb8578df8503a00cddeef6205164ec07fc09bf3ea6c57491a5", +"T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_bch": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "7f75c1d19d99d34b18864233ad70a33016298caf99c0ce2704ed5d3d9be4cf68", +"T3T1_de_bitcoin-test_getaddress.py::test_btc": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_crw": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_elements": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_grs": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_ltc": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "20055731f61f0c8be594956547e049a8b7454da01f713a6a006eb611572e9b52", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "fcfa122722882509ae2a9b6d1b481797685361de9764a386350fa416b67f6ff8", +"T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "e0a396dff78e7ce4f5bfc7617bd08950883f29046910e19bd11d66f94b400bcd", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "8d089d17582bbe21cb48deba24d90c960f040f1d23b9d9ca9907f1776d72e64d", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "94e0b410661c6a746bbe77872878649a52b87fb61295f988a9c074a3c23abf56", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "f89bbfdc2c28b63b6ae20a371378151f7a54bcdbfda1f5faaff7ccbe16f2db98", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "607792edb43356cdbb8286d61e4845ac8e45e2624a7ed161206d55f0e92f6da9", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "732bff9ef71531446605b27dbf5049edf287b7637152d1390ba2da8356fb118f", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "f4dabbf0ad5866c7a147f38d48871720132e4a1d18bbd05ef9df422d4c150ba3", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "97ac440d431ec85a1fe7279629eb958fc471478cbe0b43816e0f3d9dc033c9da", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "07f4e3edd17e3b2c53d357e7b7b36d07b8807838c9b1bee23d419c57e204c6db", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "d547ed7bfd270c6610d5cd5b3584e9a05e01f125078709c77bac910fe8f2ba4d", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "82a44e97453ca31a26ac154b2eb1007e569afbf0c9da6792983955da3e2c12c3", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "76e0d3f22738177a9bea9c95c55619e7bb91e0b4683fa2eb9cada905e452bfc3", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "f3ea77fa80123a46ec476201e2317b2cc1814df65ab8bbc61a465b73719c23f2", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "03ea0fd524dc5f576610dda8dc968020f096bfba77b99b50d863b2c453f6fbd7", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "f72506e3a82dab118a75a4a786e43c6a6cb5b81bebe9099bd02b90fa5fad5d52", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "5a0a9661ebdd251e5a6668f4ce9ea28e94e069e3ce675120abb2412210167c65", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "947b4732e54d14b801c96fb157f503d8016d64ebeca05215258cafe20d8b0ecf", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "668ec40dd2cd5555306065e3ba0459f1c2796ec3d1d4c21ffcf35bab07a02bec", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "409d6c9b016f95154c1ad4a92f372bd5afbe344be3991bc327aa4cb972d2d672", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "f357cf9e28c0bdf7c6832a9e709703c7f7dbb2b1493a1c0745abe7a0bfd3e01b", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "6a6bae8b30105271adde54e6327f06a37c9cf66b80596d64ece8b912e0cdbd19", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "6fb91c992d295761eeca96d6bad64bff369f7fada60f4961c0e989eda874b808", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "2b7ef7fcca2199ba242a9248e550cc2626c333007b94bdacc38beaf7648aeb74", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1c934e023153f4bd8182e573b3c3abf5cd7aef54a095a817c4d8340e43abf7c1", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "257d239e7b1fe2ca4a7df626d847d567d480c1de0b1ab334a9ba666399772036", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "257d239e7b1fe2ca4a7df626d847d567d480c1de0b1ab334a9ba666399772036", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "593c8288fa8f6a8fb90dc3ff2d6969e833021b8b3cff57ef0916d1347d331988", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "4dad6eb29ad70cb001bc55280763360151682bcdc6589ac472baa602907325c4", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "86ef54e36f682c4f4134836a550345339a617450efc50fa31d66141596e9188b", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "68477bdd20146ca81225294a7824784fbd4250692bdeb6cd5af55e629f82307d", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "85ad08f2725039158c3730195d7e6357d1a928997d746668d3de45f360262dca", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "755317535bbd396c25e5b5f5adfa67c43754e1e8515d7d8b2edc86688a7824b4", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "acb0778a74fc26b5dc7ab6575f5a12b75aa585c50d8d38a57dff4e2502c481e9", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ce0ed458a2cc92323808bc18ad11ad7a00592794b7bd67096cf3244ce016da92", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "0a8db078d4e15d4fa9180d4225310354050a950d96be227a99c18933b3c60647", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "46ddc4d2da24b7835bdbf891bead575863035ce325bfc0c02a43a9b07978b7c0", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "39c643fbcb9886c31ef3fcf1e9eb052b9bce2beb1544c86c5b6daa1c9fdbfb56", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "eee43b5f60efe2216e9a8b0fadaf6ef80b896163fef13397b54cad9476d4a961", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "029e5051852dce7f48128c32a0e965872bd76cc6b70696f5a08fb2cee049ab32", +"T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "5f59f173a788cffdc2daee5b357a20200dee005b2c6dc9638bf3734528ee4b7d", +"T3T1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "87a582288dcf379188738006aa899ff6d371aa7d279b699827406205cf078f2d", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "52d710781e9510b5fe23b5fe1b8d4afdf25dbe07699ecde3585a3539db0f4e2f", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "e3738f7bea1d3c52d7c3836e3c792aeaa7f04d5119b3631b24226fd145977055", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "f01e8d0e67ede6003f527d674f105a8638eada957fe8dfa6fe77e900bc21fa11", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "4d14133487fadfd2d1962d6fac0df9d97e90a5b6ca4357db4bbdc5ad7e203d60", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "b82e89124a0e1d282d80d291021d585054062fab55970c90c34c55635942fdaf", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "33d39787c72439e8eac168d37d694c791d66bf8143aacda91d2f5d8074eaca48", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "7dcb44a1777fcbda428e1ead3786ab68b955385712f16cea02dee890e7d172ca", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "f3c4ad7aedf423030993d3ebbad050cabe82dae66e02d8d805b7c9778d98444e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3b1c09eeccc7e2e71eb86cf2261a2d634ad4acbf355c6b8a58749a83dd805a17", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "e20a3ca18f9f363f2bbac746a1f62d30fdb497b2cfb0bd94b981913d7075f364", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey.py::test_slip25_path": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_grs.py::test_legacy": "e7279ca250e10ab34c8ce56b6f8ca60eb08f70192a75c11dbec46b53deedf3a5", +"T3T1_de_bitcoin-test_grs.py::test_legacy_change": "bc90fa059421ead4259b18607420ab84caf044bd090f7dae09bc995f52f37581", +"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "0e088fc0758189cacfb2f3b1bb5c87171ab0799307810dec9e45a21799eef725", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "314b496764fddba06810edf4b869b12ecda08161e6d49160be3460b2bbe80075", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "f8156c35565d221eda9692f994f5a3af99986d7f652abc619b3a3389d533134f", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "148f9988e760b0d68edd1c0322bba773c395c9e6cd1db0409d6a408a7e8fc40d", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "592c3b78ab9b4e55a345b58b50dac5c3806b6de3b08969fb528d85aa0d1a2b02", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8ee12236431825102ea056415b1863aec59364a2c324d9809dcf4e605cd299ec", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "504a5e1619fd4572091e97971944f9a055cdff30b65cadbd414f287d69f15c08", +"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "5d76565b66a9795e43a637aa49180615a8e2274cef9da6593289dfce000eae76", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "074090cfc96cf6db1cf95e71ecc11f9ca637c63dfc8c0e208bf51b4761e6f0e8", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "281f8e407baebd9717b0cbc07c11991c247f06b5d771d4386f38efa98a77c02f", +"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "d963e99a46649d3ba8201ea3132fcdb422c00e5920bf553ada2a1eb75a8a8126", +"T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "97b42b54d62572cf0ee31f8088a743eb39f6d33d91965e372fa5aacaae2812b0", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "a2f4912de9511492cc90185eed1d8310cb1ddf9618b8410782a8659b5519b284", +"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "6f65f5444c43065b3c19a99aedd39cebc6e458ee4511268b2b972b9d76b515e7", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "b258f7c4867a2a9efae11b150ecc0104ca61cb07883fd52a33fc9c083190a529", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "643ee1092aa965ec30c1e9be0a06de97cdbb349d31791cee62c939a1f0e0a583", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "eeae169e4fd71ef6438cb4f8e1a5d135494524fdd763dcb279d688637fd4df68", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d82cdd14eaf1b4d503294984510dd37914018fb2b9a4cc60f9b0902a25b920b7", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8585ba3ab3fa1cc3b64cf0c0127242f2dcc65b12b8add2f86e8054b54754a4a3", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "183070b5cb374baae8ba922f0ba6f5102407aa652923ad3f9259046c0317be3b", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "497ca5d2fded3841e3c537be144b6990e722dace3908e274c1e3d02ec75d7779", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "0caa0c49171e1317bedc93d9de88f77144dde12be448bb03597cf6d1fec8c9ba", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "217d1b5307402e1db76e7cd7f501e6db09ad8fbb74596b549cd2058b13eef9c9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "c93cc9e3241a4442440244cadbf09db7f6bd3d48da65093bc85a2cd6685c5eb3", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8a74121564c53d5373c6107c11da48d57c3e4edd121d7fff0e4f980f4e9dfddd", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "a30b8fa70efee18a8ed4050da7f94bfec3ae400f0260c075f8afb9ed6334f2fe", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "0042ef58b8d2ad3378d99d5d46fa7a22d341c225770a329bf3b4edeb8ba057ab", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "a1b8c692b7ed901e1b81d72018c15a1961b81a0c28a85a4ce0a2129f986a54c7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "a331566716ac42f66b1b236ad893e41cff8c08ff745815949bc1378ed82c2e02", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "c6937466840a500ee1f76bdc5011289dcbc7d4940d601b81e267df614c888857", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "533cd3c9e2594ab70f1144d5b77bb446821e6aeff373d81c37af8e27ac44b013", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "e0a974521bb398c0cb6431e874313e73b9fb636b0172ccb30ca5626ab0299ad4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "165aa7919df6670611c8d533d7d81c53c9c9196b27c13aaf6675af94e3caa450", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "3c11f1b45250a4794a31d3b23db855dae09b552c1f394838a476b2bb16652995", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "8a563945543281a20f1d16b24f39cd0ce2d290159467856e8191b8002d066039", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "3fde1874e9450766ce35863687f70b977e87a07f11a1284c87bcc504b89a37f1", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "623b4f3841acacd3d5d0c927df7330b6b0d48ffc41ca3bb9d9a035ee61f72178", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "daa9d2ca4e635cd31f0724a68fa7850cfa18ec163a7a377de88d0f3464d66840", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "9d8438f060ad3719fd5ff7a26247954428021df8f8f1c201ab5bb4d2eb720fd6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ac15b9e7e1f2afc712e4dce1b620c73a731d42fb7c603cbce62d32e8e0ea51bb", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "5c9666caa366457102143704413aae068c211b85819aca6be4c71563bbf90e3c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "e5d442264dff7bfc1417cfb0f912bc6d8de683c9fdb25ab02e8dd3297d4f3141", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0c75e4661f7a1afdd4bae9924e8fe43e66929f6fcce87458a2a5d2ace1112912", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "045b7623c60adf6cf2eb49ecb8e35a20b7b8ee1998ce641ede39ef3132168be9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "47d098edf7598c71a216b5790be68bb495356a3b6b553bbb4952182698a0b0f7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "f8261f31b17ba0b7ba5bc71b98bf23799dbab520f5ec496dff3301a17ded2e05", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "cbca3de9b7b5ea2e782b03468438a3624928040dbb40ee21841d09798166b8a4", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "be5501591aa8625249a949132cf39fa76196235a854af0d2a3684cc09055f0ad", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "34f72b06b13e4ae59fc3c0addcde76f4492148edb08d70060a8da86e66026796", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "554fc25c7e334ef5769fda544d2def1635c700f6499ba65c352f77fe6d6af4c1", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "e90966371ee9634e859cafeb35650014573d2f7604d20adf265c41855f2149c8", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "34f72b06b13e4ae59fc3c0addcde76f4492148edb08d70060a8da86e66026796", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "34f72b06b13e4ae59fc3c0addcde76f4492148edb08d70060a8da86e66026796", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "34f72b06b13e4ae59fc3c0addcde76f4492148edb08d70060a8da86e66026796", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "09934c53277278a19c5e190ea733dc4d16a8ffe6d346185edb1e672373b79bce", +"T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "7423df0ebd5eb6b9acfc4d77ed07df2625ff65a2bc7fe4d560e54b27d5560df2", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "88343275616d70120313f57218834c296143b527705f6b4e69483c0efabb9ba1", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "0eb9b41efc6df52844a7135406f9bf5b2deeabfd1d376aff8a56a24ccacbba09", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "976e112c5d76274e19136bdfa86d3b1cce5435bf02dc3109d19d04627e40f906", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "976e112c5d76274e19136bdfa86d3b1cce5435bf02dc3109d19d04627e40f906", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "b827260eef705f3d2fc88b1f6470e39bcb7828d8dcc9367fed7c0121661309a1", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "662dd725488b02bfd07af9c614019661faf544539f8921fb0fdabc21d7d65d22", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "822d0e167fd4b393de2c72f03cf83ad29f351b7f44f1bb17c86e3f50b2b7fc2e", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "da3117c405cfd528935f405347e843b53fe7ef62ea048c0c46d7586fc9231087", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "f7aaf6e48401c052c06439b60868d51765c5fa5e8f6af753c6d0a4ba02b4d679", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "be04ccad38d5116330b519934de2b23ba487e05ceee64e7efc448638b0a42a7b", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "be04ccad38d5116330b519934de2b23ba487e05ceee64e7efc448638b0a42a7b", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "881322dc6509038dfdb8bc6a501b1c2084d47f3de3f59b4d0a70f9ae93bb6d5a", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "7e3e5c6994c3639aed791543bf7db09067a26297bb759d2cf51bd9f66b1d0772", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "c629ec3e6e406209d1a69512836a9c971472d2fa7e56feefd2ae0a90f972057a", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "c629ec3e6e406209d1a69512836a9c971472d2fa7e56feefd2ae0a90f972057a", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "27803f6a38b129e0eb4a63d4fa100227d3f842b151660a29ed25ad427945cceb", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "bc3c367021e4bc62b57bd2aa385a133f5ce23043121eed495c02ee923fd87746", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "eaf6377bee69d8cab5a3159ba827c28435f63d27f86f89ffab212f162803f641", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "eaf6377bee69d8cab5a3159ba827c28435f63d27f86f89ffab212f162803f641", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "657df86b042ae85c394544733d5509c24c5c32628ed4b292c3f3f2b32a9b9301", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "f512004a6a55c6b5f9ba4b0a1ba5470cc55f73bc79aa916d566506e670ec7ae0", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "350a74283431fb4bc31c15c93724caac31bfa492195eac4c5ff589a1a6563fd5", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "158e6775da0f22196ab1af6a19e8779fe49aa1ce1ce842094a70cadb3c0a92b3", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "2b52e1b524505164ff6eb4847f0ceebc1250dfdcf527ad915bf8baea20b8c13d", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "79e0fb4a76ed65fe234c2081e928218b1dec96f66c758d44e29dbd219b2ea1cd", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "d3c452513720e67c32383cdc02ab8571c88d5c4adc78e1f590113182e6c14dfb", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "a0020109576453332c7e11e616c033b22baefd93d6b2531bbe5bdff4380a9c8e", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "9cba8c1f2278c6efbba01fd309450135edfe6037c7c2d4cb0ea475a74397dae0", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "ae469170ddb150a2b4e979ebba13ed23661ea620a42fadb68c274248015810de", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "7b60798b6ff375774a31cb47df0814046b0a9994c3fcc1d895507e2481c9b0e2", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "73bd47abf8a4322b86be4ff1c4daa8bd6d3dd4243f9918b1a478e7e2074b5f73", +"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "4541437417ec236f06a165d3547affa68c7ef55cdcff101c05fa45b8520718a3", +"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "4541437417ec236f06a165d3547affa68c7ef55cdcff101c05fa45b8520718a3", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "bc6d6287426691a6188f90bb1d1ec2250ca090b24dc8629a558e9d1702760d67", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "badef3a33a1291ee87139ee3a2f23cdf153b0509352418684c7757409bbec0f8", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx.py::test_information": "e7874b622a0c4db032a89f245267146057b03e895a714452628932bcc8718ef5", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "1d3bdb715bd1467c0a6e101da486d25dedf082901e1fb98a7a90b5c55c34d316", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "c3ff36f3d4ea373ac2b1022a0059e1499a25ad436a7e07f7f8ada2b197c8c1d6", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "15c5680fb8a5d2d606e88862893feda572d8b647bb7fda7b961bbbc138bd77e8", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "d54cc8d72e6d2fea108ca4b3b7a93b04e189ef5c00adec0432ca76df5da91089", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "8d4c52607984d0e332a13bebbce267c0e4b248e612cedcb96f2a643303862b57", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "d54cc8d72e6d2fea108ca4b3b7a93b04e189ef5c00adec0432ca76df5da91089", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "8d4c52607984d0e332a13bebbce267c0e4b248e612cedcb96f2a643303862b57", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d5a83e42faf5164e35e379e11d83d3ec777faebe7b133875dc266c5def10cb28", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "b9460680f53d470a931ccf100d21368454ec2e3e7333ca12e7f7abbcd75a86ec", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "3d5efdd1f662c5c311ddada56fa7c9cc92da39a5e678923ae21fcb43bac3ec74", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "118868f70a33c1ee48358e6bad4cfe70668ac928af765ec8d6921bbae68f2cc4", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "ca88152eaf5c7f96f084dab2afaf017c0675e0b71e8099513b5430693f343fb2", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "f2051951636c0ffca0b7303e4d4f4d346a60a0f9a37b43cb49b87d336015ac00", +"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "019e4cf06b502f6e72afbc56c0bfcbda1b2cffb42421f90b8b51c9ecec2a5908", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "8381c9b29ef6fa004b2ff5c0da7019c17310d1348d8d619ae8e18a55ecc1e5c8", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "4af94c7c666bbb2957b609fb2c4bdbb8ece436f37fa56e6fb45b98fcc254752b", +"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "a3a42fa29bacd5f8fee2c9f3a40cbcfa915e2543ae766f37bf6b4542cc8ef286", +"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "7e242de04a21a865ebb2af3f7659543f1fda19169e63b576c7604fa238d6dbdc", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "9dc3db3052ae4919009175ea26d34fc207d389aafd8a7a6097a8b0a24583a728", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "3b169db8272b910f94e56c4d8130ba3af9f39e2c5b98a78763fd464e7e7fc0ca", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "dbb763a5ea16967676a9b506777d54e6e8d132d172ad18ec30b8c15c72d243e3", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "4541437417ec236f06a165d3547affa68c7ef55cdcff101c05fa45b8520718a3", +"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "36d464c8ef437fd8040bfa1bb56648913b5d3c5f627a5f2b4b088a6739b30a92", +"T3T1_de_bitcoin-test_signtx.py::test_two_two": "5069f49739b46fb5a3c16225fc6768d1ee0302742cf6317cb0b0922f824d8206", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "019e4cf06b502f6e72afbc56c0bfcbda1b2cffb42421f90b8b51c9ecec2a5908", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "ddcb569e90a73a29be83537f8a1bb32951b63b1dcbcb318d7908cb906c121dfc", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c56002cee93049f521f2a465c63dede0276822e02a7db4c3f455193b8faa80ec", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "79e1ee33f47d5ea82a6587d4cf8eefc35a4da9bba85fe7add4b04537afdf0cb1", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "019e4cf06b502f6e72afbc56c0bfcbda1b2cffb42421f90b8b51c9ecec2a5908", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "002cec38dd6e63f3c13df7e14767a6ee18b7d7d4dea9785e36dd9104d9fd8805", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "49c507d00511b0ab2dab81009833a7f8796f15eefcb22f11f157cba0c3448f0c", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "e4a11edb31089c2db1392ca7dd220af8dbc6a1f5bb5ed80943e3c20dd4d211dd", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "a97fdf9275d4d0470a1800abd48c22aa4c4abebb943a14c7b88402c12d385de6", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "002cec38dd6e63f3c13df7e14767a6ee18b7d7d4dea9785e36dd9104d9fd8805", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "804a599b53e9f70b264696cd74544f9c657e633386926ecc022c4007be94dd3d", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0c2a37a85aa5d7ca5f33540ddabfb3d2599de416b6dbdaa8b0f304e485fbd04c", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "d02dcc3aad929ef6dcbb1a72559e78832e09bba7a1d2bee4a2a7291abbf2bff1", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "f05ff32b88d9de38700e259d1bb80a85b86d1a6eaca07a1aeba963f3e32545be", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "33b74782340f51951300e8af4729aa3db831ba52fee066425ea1e994456cdc95", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "36db62166fd122673430883eb8c2aec33f8d092a8664d2059de5daf0c1533dd0", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "cb019d1f1c09cc8be0cd00413a9b53e34838c8281b3c73434c2190e4fd84cd52", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "99959c962feb0e30f6c67d2c792dcadf482e6dd7f06c00491db7a8e54de905ac", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5f3bbc1ceb5bfd61403bb724ef50a08820b705df5c6fa3316026244fa544312f", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "4cd3cd511dd0a1060169912d02cf966cc0a015fb4e555c5f6e7220495fb76011", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "799b57310f10ffd613ba5f20abcb2f015e5e40ba037e324ab09007bdbda93d2e", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "bf36e6559417312612cd8b99c46884f9b4d57b0769da9662c5863481dc44fba8", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "65d3bb78db97e7b6ccc526702c733f9f54f51d38e9fb7da6487d6f34c4901e62", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e3fc9f921ed1c8a0425babcb97fcd241a3ad4bc641f0b4f07b6cb9c8cdc81ee6", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "65d3bb78db97e7b6ccc526702c733f9f54f51d38e9fb7da6487d6f34c4901e62", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e3fc9f921ed1c8a0425babcb97fcd241a3ad4bc641f0b4f07b6cb9c8cdc81ee6", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7f063f1b6f08bc6dcc25e633e037515b55136db52fc1ed867ba08d86371fcb23", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "45e812f29aacfaa7971a5d6a8fc584a837c6d16f71f3d2024a13d97f98111734", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "78ea607d7bc94ef2e92d32cc66f6bfaafc5e533eba61812734d8143e6b61e1ff", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b914123d4717afa75d63271d7dd9c9e97875e2b8ada3b034b28b796136d11552", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "90b8c9ead532421be2cf8c773ead7702ab7b3549c448953b37ff2a1b6b9dfb0c", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "992e2b8fc566cc288b2cc6faf68df157c279e9f46116ae29c175e00a0f5613ed", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "5628f5bd41cf91a9e8a138e103118779f6fa8069acfc02004131ad78d2f1b5af", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9a35a7be3c50db2cee2ee23b0d32da5cabd2c7146ce26e07b87de7712a362ac2", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b89716f8d58f88989d051aaebce4d045c005cbe386cb7855953914c35e4763b7", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b89716f8d58f88989d051aaebce4d045c005cbe386cb7855953914c35e4763b7", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b89716f8d58f88989d051aaebce4d045c005cbe386cb7855953914c35e4763b7", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b89716f8d58f88989d051aaebce4d045c005cbe386cb7855953914c35e4763b7", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "1273100283109ed050f06be000b2da48be4204ad218d0f666186530658f352ba", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "1273100283109ed050f06be000b2da48be4204ad218d0f666186530658f352ba", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "1273100283109ed050f06be000b2da48be4204ad218d0f666186530658f352ba", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1273100283109ed050f06be000b2da48be4204ad218d0f666186530658f352ba", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "d3ed0daf92c767d3c773f2f89740c3dc16c300411df3b948cb10fa376455a1b1", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "49ca5bc3578d92cedefa785272f83e943edc408ca90d57f931768f64d4123f34", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "202be696a5122a1d25d8b2824a314707b292fc3073130503968e634f31b8961a", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "202be696a5122a1d25d8b2824a314707b292fc3073130503968e634f31b8961a", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "9b7e1a801a3ddd009a0c66e4505e50a623d00c54041a84b4ea78eace43a91841", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "f7d31db2406c293b75f7ead87314e717b8a648d281515a386cdb8b6a3fb2a07b", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "fdb293eb75f9d30f68b039f9adb5b9c8ce3bdb38913a6309a131278eba6d3c61", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "9b7e1a801a3ddd009a0c66e4505e50a623d00c54041a84b4ea78eace43a91841", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "023af2d235e8389a6f2f4f6f2373dbf0d4b6b4b0ee5cc54d95b27a62a5b3eaf8", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "5eccae26b7755fc5b62e3f9f36a1a15bd84b7facd3848d37a5a10b762636f105", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "5eccae26b7755fc5b62e3f9f36a1a15bd84b7facd3848d37a5a10b762636f105", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "5eccae26b7755fc5b62e3f9f36a1a15bd84b7facd3848d37a5a10b762636f105", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8d903b5eaa96346fb6bf5ee41fabd0a8dd318d9275fbe80cc868f50f7f26958a", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "5eccae26b7755fc5b62e3f9f36a1a15bd84b7facd3848d37a5a10b762636f105", +"T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "f6aa2ccde1ebdea48ed9b84b565ab2591cf77e2df897fdae1babb3b27157afc7", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "d7bba861fc434800c37385d733b10017abbe3559efebab16d91c2b57eedc8a54", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "6c933a1cbac1f1e2057f2ccd721b01243473bb16e982067fa3abe486b6a0875d", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "dbc6db3afcfc010b6bd3fa8331fa7cbc47d35c68121cf5767ccdf7bf41a9a731", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c0f3558630607fd21195b29b4bf562718e7cc16622e128f6d223fb61eead0ef2", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "d6d2f9090ba8c396ead7ccc6e4cbfb77fa61a1ab3c4bbc0c2ae5273a86fb8b09", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "490f8ee2aa086b735a111432d1fb22cad4aefa98cedac8f0d9c33b77be16b8d0", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "259a5dad7e6bd9c6fd3dfc6897095e8aef9784d9dccbe3cbb55c22143cc44de3", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "63da2e3172ad25c9a129a0ba8e0d7e4bff83b0dd7d1f19884659cc37be5e962a", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "96b8d578f6fd2f934c21ca546001c2d126889ea0d2c7e839e1e56d8eaa700390", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "32c5faa492b4389f214f59933001fa06104dd031a869f5ab2608799147073304", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "f02fbdecb5dd16c51e00975c310c5161fcd7d8f3c3812776b6a91c90095d75e5", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "97ac9f8622f2f71e4851f9e50418257e7d68049a5f92ad4ae396c9508655546b", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "624801f90f8428b210fe59cfb28163c70b73925d1015ba08e6a753eeb11f51df", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "002cec38dd6e63f3c13df7e14767a6ee18b7d7d4dea9785e36dd9104d9fd8805", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "c3273e74116b942c8fdf2f4b402a4ebef1ef43e547e75fb95b9c49dc687f4131", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2b2aa1083fcdda5332cb5556e09eaa463806dabc0d211eac3762f6369aaa2610", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a98dc1a8816d5aa6963faa335856ba58e0c3931e2a621d3342eefd73a264cebf", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "38588c24bd42dfa5d9953de59a6b9c139d2f42170b86e40c123f3383c679aef2", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "f56d5519c5017d4f0f5ee34cd39564e41b468aea77f31662fb2e0e9b850ec092", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "9a87af17802ed81793b4b187b6568cf68593a76d801a05a1aa325a4d5c817469", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "ba57dbe1cb8c08fdaf7db3696ca306483fe5cb8338e25730129f9344107a478b", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "cab79c9cad6bbd5f67a99bde70edd3bc15377cb14a2b3477abd9374ea1f99bba", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "24b69f315d1c1893dad48611a53d9c0248795d478a9d590a464e4de9ed92e6f4", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "1dedfdf175d28447840a15620c90540fb5d08542003b6630e1523ad7e94d1bb6", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "e8e359a23e5dfdfc70de963fc31aaf46fa32c0d82eba37e3c8339d267319c8b2", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "85cffb6df650ef50dfe0778eae1855e9f58fd22eab0f7f4930fda6c7429036ca", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "cdf1c94d6ad742ba9dde8415df3607bd90024f948b795f37140c3dfb109473b8", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "caf48c9cf4171846861f20d2f05e5262ebaa363cbd65b8c03a118827f3886ee9", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "44c68bc9f75e785a9dceda6df08ef1e3d2db1b1d366b6c38c28c7c13a35e268c", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "991f504f464f7a04007f18091b84606e7bf54ba89dd010646598a97be241bca8", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "21272715f0c3bbb30e6f259b54c5243707a750bb29f34806ca6ef70d0dca9ff8", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "72f75a06c53417a2dedaa5c02555d0db33b446ed4cf7a8ce76332de8315e778d", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "aed2f985a23104e1d6c8e7df3707b2b77c6ed501a204e13fcd846e530581bfd2", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "f118a21ec48b79f22154fb9af409923e0ccfc8d2d1a26f306ceffaa32324169d", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "45785e5171aa7c1d526639c8bb3a6b7cf9e4b247f62d6569acea5dae0ac2a05e", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "73bf9ed2bcd68bb1cb1e3917bb84f3afb4d56b72755c6b7950b3e4896a5ae245", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "727ba919d05c463eaeaba103620340ce28e3af634857c8a6b0a590dc3edbf03d", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "b19fe8e04666031b9872e81b66af52d57d05e810d0389780fb49f18201ead2e2", +"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "d8ad3a1342be7012869fd40b9fe543aa528295a86e265d3aa1b5787afe36db93", +"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "ffc114aa5e509fa9999a48dbcb24ed711fa278fa594a47e1e91ee8336bb768c7", +"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "2fee0cba1c8e23080fbad874bb4435dc172c7508d1ad33b2a90671aa06183e16", +"T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "b38a83b9d3119cc83254dc92b01118c92fb95d4b0abf3ba3a8529c9159bfbda2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a5988da6f03a27b5b542346d9bf9a32de9f6015ea48c7649cddb0644674d88b8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "d240cff8ceda2fe8c171386dbe42530713d068910e54acdbd865f7920b106fd9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8388c266e607e2a8942cf9cf6064851626bf82367623e84c3d0b65b8bd8fdcc3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "953e7139601fbdf6055658444b314e2b3f535f56ad159d086b786b2913806414", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "1b7f5989caba1f74288ab2ff308d1916418fd924bb68692fe04a5aca15260a02", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "8db129f8d7eedd692fab8a86691f635c0e52e544b56475e940b8ed11e41d399d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "9eb514e58b4419e9da4a88d62ce83992ae3fd2d36dc7985c50abf5c5f90e62ae", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "7c20013bc9420b8a21d2da7370cd949c9a74f6d088b13682ed1d3d90d787eba8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "445ab7435319d199fc5e11b95cb7718feb87efa0b213a7dc0a263f09d29a249c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "bf73909ac9280bf44a7de7fe219901e110b552c62fab5819464bdda27766df4e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "3ed48b56ffff0ee869cd0b9365891152e1fa8ce48e385587dde69e2c0553c80a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "11580323b98ccedd03b3b77de5381af215274a8cd74b0fd750408f96cce8c5da", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "4b93880853f25e739cf84af7b0d0b1552f703019803ad4c869cbd14ece72c0cc", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "91450087f4c9032c5aa50fdf754cc671453dc55f70623e9df1956cd69fe33803", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "840df0a01b8dd021f77d63a96bc580152f4058134bedd83d83332c21aad6a826", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "e7d4bec3d8b944da13de00036fedc5c4369325c1e27d73532c8aaa73d04cc2b0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "b2096b667bf85177c0aba63dd6dbbe9b2227330a653f4ed1acf34560412e9493", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f3ce277bbf8d27bbbb76b4d7810591cce9462800cba63d6c8aea1b370c9316ef", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "391d3aeb79f1daebaee8cce715fc87f37ab5cc3c78ea293ac1a2097287baaced", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "fda93d3d014061ee6cc857aa75f2ba030caf69b7b67889748bf2dc320ccdcc7e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "615041d258d13191da12b56f7d65539f8c04e72ed9e4a7ab97ad51a3b3f0b839", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "67d5b5b739656ce72bdc79b2779d2561146f20c38ecfd85d82acdc0994a6cae9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "b44ac7a34a0989f6d72d08e2348ae0be6db9aaef9206a875580e2f951993259b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "f08e5e1da008a9adc0175357b044cb281626cfb7bd9ceb0e2662a0d5b06e0398", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "a4f7d7476b062b9ffb8ed7f51ee72da1618ad4ece79029f1721ff817f5424717", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "70a24fbe186591d7f51f8ec93ad121f9c82e3cdceca0dc5745f363c52a822e01", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "71861e7508192a47e90aafa4e54698c5eae0abec72407e2ab480279a950a9363", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "b48607545b88a75b9aea0b418930928c79be0778e96ef3c71c2301756f1b58aa", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "900395934dcbccc8c1298fc8ad56e31b35d6e202dcd4480329179b9166664d9f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e59e099962cffb226d84932aab5a0d5b4c84d028037e375f31a2d6c0f43bcf1d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "d11c0a23481792dfcb23b9400d82fcfe9992d8149056d481801865effc02c191", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c031b9497e38ff7a907fd5cf0959880829bf1880ddd284186189f03aa3496e54", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "1ff94034a558b4adb30f6d711cd06cc44043d75f21cf2619577e6c6bf2a6bb72", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "4d2b2977e2d24cd0ef1f49e07fd88f224a2d4ab0a6471d96dd670065b93f1717", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "56ed0cefe083d01be3b28efc9ae79bc9c10b810aff7719debc4530b8b28d7b59", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "f6544e04cf5686260892f5dfe9a95ecf88deda453848249b238a328a5bc0f5ea", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "4d6445218144b46a6b78ed8e1a4986bf2ecf9b13ba4a2ce206db87743f60e13b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "7574c7541bbcc3be2032c06675e1cfa76938dedbbafa24ec6e17d37706398bf0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "c13329962f5c5238ee21e4db1c2574a3d2f54564432d21bbc50e8f11d0c0354f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "edeb9702136f099088ed18c38875b2f4329bd3ad2599211df9f2840e18fd4b13", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "6bffc6db25c4d83fb1fc778281b74ec639d54bf0438ba9122a3d33fa72d0e63b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "a712bdb9c5aa8f302087765110a84a904df05a3bb5838f604dfb74c3bf379cc1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "64310c494c207bfa313a13611338ff276ded91434abce8625e872b9c373f1f8c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "f1fca2288006a220de17ebdcf70f55ed7d8b5d2653058b39fc19a25d20ca2866", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "3c102188db85df08999a30443f2e40f71902c77770e45eff9ce2ed099b6ddcb3", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "5a408cd895b6068d3a61afd37997c7d98cb9a9b810c8ac5f3aeb60a3666cfa33", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "6d53ac97ed151f5281e989fb98b37e79869ec67bf543eb1a477daabca5582226", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "0a7d659c788456107bad9e8b1d1e8bdc654aa452b9df2ad636e0653dbac05926", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "206d8ff20d5dae8c43055e0092b993f94f9f23324fa425aab9dff5f8a6fd332a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d3868fd46d2cd6434239b9f0c169acfe5e6c5030b0f536ae4b17473d37e6becd", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "79f4257942f95cfba206f977aaebca8b9c4b2b6f2f1573c1ce854e5907647dca", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "dd973482ecfe42b389a6ac674b96a93a2650580df910905969ab34d9a559fe69", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "4aa5943c1c796f52b5ff14c0f5d88ba9cb0ad19439254d76291a8516a2e77809", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "6f97ac643d7d5a36a4fdb773d0daafbbcce4121f599fb43e5f9fd47d08b681a9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e78b8b318f290b55fd3d115ba0177915056ca6eccb6124ea8f2890b16675cbb0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "8b8da0063175be57594e61571c8c23e4bfcb60e02ebed290300878a788eb6b42", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "c18bcb842749d599ee212ef16b51aca9657c895419308b9f4ee59dbf15edeff9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "d54239fc8083c934d3d3ac4340bf5682ca57c237c33beb1b83427e30b6876be9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "07f7535401427c1652bfd7ce84cb39c033311167382b1f195cba6c64e79fd56e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "e41b72ba162c8a915117f330744bff57906d32edeeac5be52265fed7c1a0ec23", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "0b38c2a6b3a014830759e4520bdd119eb312d804277deb3670f2c96168f51ec8", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ac96614af07b11b7411acc2112b75ff9ff21e37495fe6091ee4d878bd81d1780", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "b4c9caa81d2d62f51e3baff5dcd586dc4218bdb2d891e76d78593cbdd06091db", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "545bc3e785bf871d78a81f3df34540a776124eed43afdf94b43c086c62b4eaac", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "73d76b710b6d201381a868fc8ad9bb13025945ea1e1d15f8f30a3f11972d0874", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "1b18389e0377d9fb50638b04b25d7371539000603a88166686d11fe1c75699d0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ee71b6d46593c9a0696c617a1fadba02e27ba5d78fe8b78950fe029973ab9ba6", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "df047e2e79e973851a0e4535c683e40ce6803fe3f51007ad4b11bc87f4cce1b1", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "0f90dfa3e195051dbe90b8f2363e2e24f920f2116b1f244bb213a9176d13a068", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "d4704f1860b39d722a08236f8bb0c61f2726c9dff36e2341e00ed8775e16d041", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "f14f3a65c3c0d8022274e5d097ab54c7cd1a0764ddc7472db6d8f9082fe07615", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "5936c19690d8e5077a2237c6d19d36e8a86802687db8540c1a4a21b45bfdcd3b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "87baf3b7a84dcf27ba0e1e46c0a7cd0703bbc04179d3ae3b6af185fdb82adb0e", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "71ca61c5fe62bc747f39137939f9616ed948397739124e444c74733df9492404", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "67acd0078d147e12884ac4268f04e612cc5ecebd1f5bd23ef528c0be9f2d152c", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "0d763bfb4ed03bf44048172d8ce93c97543d72dcb591dbda70d0ec5e22401362", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "570a41a3ba2bdc0b6228fb1809b617098b6736842eacb61f1ed36c9a6ef42d33", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "cd64de6ca261413a73d2c51fb7b8d29f8e5bce93c5d5e283ccb12d0a9fa47097", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "d8bdeef38f7bac4de34df9b7868039ebe4091cd75efeb757edb9fd1700f0f0f9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a88fbdfb9d4e7b2259965cc94e8c8ece59929bedb949e7f6be260aaba6315135", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2cee33185cc0b9e646fa2d28a349aa730e16f65203e0d4cda306467020717a0b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "2016729e13c613c060b466e7ceb419def84656302aab08e0a96a650201df21e0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "fced879d331efa38b08bbbb8e924ea63b4e9dbc887b4cf891cc452f7b6128491", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "d267a0eebea6a421e7e5c8dd0d7cd5baf248e59e646e8b62c477f9aa44cc47b0", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "b0e1207e031221dcc4aeb7668f423d8583d6820f6da699f3d17038fa66099f31", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "2ae0195b8e4529d24be42b05e1c5cc84b54e8ee8b3be5e61a0e2e0dcc14c33e2", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "71d8220580e8510d224add06a3fe101f79f0c67caed38e77fc86a9390eefc7fe", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "0f606b5b1a44e1bd384745b6384cc40f29f9a8df2fbc098160a332266d8e6836", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b2c0a9bd5f79d4340857aa4442ac49499d5a926da2c3cb43c81f26e278248fcb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "1d713f768785a906f6ffef90a340e399fade0712168c10ba778e6a477697a36b", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "158956991c5c48a76b10feb20b39592328f5ce46ee91203f051059a10746554f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d694647eb7891b647bba6195814699aa8232637201982916347373e679ed093f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "1f06cbd22e8678f7547cbb001a7b4eaa4ff2884b3c4ec41fd54d1bf596ad5c60", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "086cf438883f1f36b67ff9d6e74bcd9eb0ac5592274ffebdd2843902376938bb", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "04e6fcb7d8b591513ed3be8b7ef97d522d0e4db45d25ca8716a795878c34c90a", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "3b07f80753638207ec6aa5068af813c23fce7625172ac5c15ed11621f2a234c4", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "9cafc42a477adb29e60f249e752cc13329c793748c5e7774f4b42224df3c96de", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "2c1f86679e982d13beae6a274d41f867a924493c5c8117d5194dacb9d5bf5b75", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "46e86f058126a3cac0a21e093e8b51ddf380a1d74a1f81b48e48a14a9fc11034", +"T3T1_de_cardano-test_derivations.py::test_bad_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "a4452a0c487bc18f1824659b2900314dbbf0df5156b3b5cb7ed22a468460b4c5", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e782a9015f98ff0f783018b1adea0b427ee310e80430c392a1a1b5ff828b188e", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d7dfcd970dfbd841cd066ef9a26752a74ee3ffdf48a8ac031d42718be8de7eb7", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "d018193e09bb2e2c93fdb2e0c919814a977efd637d15a018758c3ec21f07f156", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "789a8fd2236840f3c337db5cda01347fea9a55cd8379d46ad3ac5ac039138273", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e37eb940ef90a504aca726cc41dbb5582416a6212ccfea4cda483d5da96ef46d", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "7bae669037497f09805cb2f4502a1798a53fe85259014978492a49eb5f0a6068", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "366dcebbfcafc858b50321feb82569269f2c401141e32f943ee7951d1bd3ead7", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "50e20095c1d3fc8d3b0b01636415e002f0bd0e5c2cb079469bdba74a9da606b5", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "7890aa102c785f8de8cf43854f911c07eb96fc6bbe41d79c36bdd2d14229a8eb", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "1fac11a2db13154d355225073c96fa8d7ab6906fb061dfaa14c44141c60d7116", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "b2ea544b574ac5e8d061c3d4f73be92d53e090ecf54675714777180b6e8bab8f", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "14a38e07735132571cb89211f1fa9693ad348cbb9e0ed21bdfca7a87cf9d6d41", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e84bdcca5f8e58999f6f6d6b7a4153e330f12b81ad9d953a7cba003ed962d54", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "693a99cfe8e7f45957140b0c626af9c7e2a1c7a5337f43764602388c7a456acc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d7b509f3f7b50717d32e115c132742bda77a7bd4bde3ad7d2e81bfe6dac6d438", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "db3f3488fcbb6e896983ad793d836278c19b8026c3b5295d1f260d76ba6c9a1c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "4ada61ee39dd962467351aedc082d17a51e46f7a4ea9f43cbff66a6f0bda3671", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "735be539d1122ccc80dc03d46f1b378de5a6911f10107579c15e4e435175c4a5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "a2f5c69f8a952b99a00039972811e9e0056f558883c546a834d3c5e1fd6c2581", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "afa62348327c167bcf217ec9788997504767dd17a52c330bc1d90c3b63dce6b3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "2b37e888ff826c253fb4aa7ce4cb1af668991cc5c27781e1c9b61b018465f965", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "03e18bc21112caea1731998aa53d2f3e3e2daf92aea919c68ff69a46383d66df", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "004e28b3cb581a1a0a1e1eb911c48f292bfb85b1196bf8a432585a62879137f9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "3f56a0ef2d185d1da7998b3fe75fbb5a95b3b868e1465ae7ec13d41135908f70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "3f56a0ef2d185d1da7998b3fe75fbb5a95b3b868e1465ae7ec13d41135908f70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "ae0fc825eae0b154aa6d1812e959cbcbe328f7567340f8eba0a817c56378b337", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "26f606ce3a562fdf27beab083e76aed63146c509a71897cc5dceb0c6e7707a00", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "8a02a46475c2487c8cf52daafb0aacc2f8f3069a7825f4e4aa3d65bb419d14f7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "5a6b4209bd1a2dcee568d22cb33b46498c7ad35c0fea43f7123d97b00e0b4891", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "cee6da8765af8c87d7ab0344796119aa1bc18ca9ae38b263b74796e8094e725d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "3553737e2da77b68c6f8fb3d722ad92946b4e9572e8f7185c2cde2f8ddabce83", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "b0ae490bf7f68b67c883186e3060b8aa693a053a2100aeb719954c819131cc37", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "54a53225fea4f975bf73ee76dad27bc97c1b31cbcbf73d65f7315a3bc54d695f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "6f926ea3fecb8b1ad6ce826bb048918fb2e9b34af1a22d1ae3af6f3676143dd6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "cee6da8765af8c87d7ab0344796119aa1bc18ca9ae38b263b74796e8094e725d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "3553737e2da77b68c6f8fb3d722ad92946b4e9572e8f7185c2cde2f8ddabce83", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cebed16d5b4c468da001bf58f4ff47cca9807ee6902e4d04d784f04054916708", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "fbfc7adb2c54f5c977795c5a2c74ca9c2dcb1e2205a43a7bfba6a7dfdb6f385b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "56eb2895e2619935964b63f53d7744d71ce99930b41bb3681f42333ba9c8928b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "54f1b9d21e7732f594bbb3a861c180c22a52e90212cc7b10929f5187aed9109c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "a07cfdf9111c5a3812360b0a0ec37e2be16571e5c65e75a72feefa51490afaef", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "ee2c2ff9b8023aeeab4b002b79bc0e19a7cb80a796abafed45b0655a03486afa", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "d560af9e9156e7240f7bf75ab85d73152a28aac5d37adb8a874254d01bc22c2d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "5fdfbbadef5de67035455aa613304b1f2f5c116aa1711de69ea5c304fcabb401", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "929ea951a328fd1b047c4041a8f37c54640b96494adcb398c71553b55743205d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d29e6c579365ad419b4ad91d81b169c3baa509273e0dfffc0215c7d870f5f740", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "4818ddd790a24da2e72394f1680704983134f0b5e8465df02eb650fa3ea2a4fd", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "06888d44c2802f6bd990e270b4287c90e68e9d9754e33f9053039f1b17d35dc8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "9b834db65b02c255c42ceb126ba3948c80e0c5c0b34261bfaff477b8640d2d29", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "bbfab6bd344b7049b4037b2048aa5f8c0f2a06f484f480737a576b385e063e18", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "619ac98d1ff2f0072364484db53c039c0e5b07dec27b42b1d1d60af9102cef91", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4230ef063d843ce46979626f2a51cadbdb4f25329d19986315ba8fce318a7e8c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "e45817de81930d4051ccf7a80a9215a6e109ec6d8cda299fd92565ddc8a4c411", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "09473e7c67b103e24014f8f216b39a9e0039b49c450a2bdac65867196f1ce4af", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "9f35b80fe738a4a1975bcabc8c4c871f1628c33cac17d84c1fa863527d572f70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "5c5ba93a274297a08e605f536f12a71f03cf00dd37aefddc4fad5d8475c8e5ea", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38721a5473208be415dec60d4c7a354b559aebbc4b8af79a3060caf99e3b27b6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "3b207c867838912e0ad788f67b81194809c8a00421af1bbd6b17eb34e904a882", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "27e148039bd1602134376bb5e099267b60ef61c50f974d5ef7365519bf7193ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "ba1306657f8f7021e8b45d3742f4bd522577bf8a4b844f7d1bc5903e9eb7c3c5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e177b1c22eecb9936e231ac2dc4441f8e1ce86cc2b0828f229da672a9e18ec63", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "801c603262e078e894818bec4bd3414a2f74e65c039efd0a69b63af26be7174e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "df6bb23c2ee44e4c1e41a0eaa4dbb8082aa0d021194a476e75f83f4098263e93", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "c51757cf486386b9f912da0dc0f2178af5db9b2e5721137beecb668a0946b515", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ef0748e16b7e3533b663a8ea7bb9fafc19d26f02bb87f3d7a217fee07e1ab84f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "afdba7c3e6054f1dd6ad79ea38186469546a123ffa4de469410acdd8d9852ed7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "066e1c41b30286f95f4c3841c390760810ffe7f10e1ee0e42f692fe6114d9f7c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "ac2995a9a8152fa5f7d0d4513d3348e62a665fa1096eee596683b55eb7123c90", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "2a6b6f97de5fcec4e33c7e87948637e684c270a8a4f05f7ae483a6a3d2c866db", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a2f0ef6921d2ea0498e6b41ad863e1e6185319b8d3c650d10c26d9edf627c439", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "3dc05953698bd0ea1c2f2721e790d06905b9855dec21dab64d5c2befe5670353", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "e9215bccdfc520d59fa60fe93508f0553324b8f56d3f51203dfa9669faa63333", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "198e675356f1459a5203c4f72e9d83ba7b829d4f899967c4b01ea5759ef149a4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "de40f18e4d6e799e9a703a818c98a75c423ae7b68f756166b7268329ebdfbb93", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "fe84167e64863a452f2904c75b4d7aa4cc1bfea89da084b808506f3a21632841", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "e6c33463fdd50183d1e1f8409a3e57a3c8300158c9c154b230c45c00bb01ccb5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7102062efc7146edad18ef1286645ea0c2a6a8297567da54b55f2ee887fcbbcb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "78d6867efd4bb1e0a4a3a0023fec984cf7865065a44e096c1ade938229d09ed0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "cbef31ced1da79e9c34bb33ae6264dd86b984c5dde07a6c305db1a950c95b589", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4282eeffeba9a6c78d90a3a34a585a8f6d9b3d850d8e52221505e36cf650bbc0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "2815b5a1e493a1c0047d59d98ba09c81d514986aa80b6c9fdcff16e27563bbae", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "b7c9aaa1fb8628e4e7a43bd98f310b21e712183fdd8f43b39dce57fea926e365", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "f5302635462623d04be011eed5860d070cbeb49b483cd362d989755e81085438", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "dab696d9331b18444e02d1f06ebce1782ebb7e9b279644904715719a0f77823d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "a84f4d55d2ab52529f3f547c9bf9f62840eb44b33e183c3a2aae96f9e88cf3f5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f26a8afb4f5f24c7694957ca40e373d84bac1dc0a4b7273a0d7c869535d8f9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "edb0d416b03e1ffc910dea2410e34afff3c9f5e996e81737627074bdaee287ce", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "46363a5db8a0fa809261a804ab3135820346e9ec5194f880b7e892542d8ae336", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "46363a5db8a0fa809261a804ab3135820346e9ec5194f880b7e892542d8ae336", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "07514088e67f0a915181877b26cfd4cbabb07735161f316dc39fe31f8c81a154", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4ffcf7ca9a01aa00d9999732b9be245f208ee75113133441572e7c278c684034", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4ffcf7ca9a01aa00d9999732b9be245f208ee75113133441572e7c278c684034", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f0c9738333defb776f8dae8f7fe23e826283cfc99c3224e53e81b789263df805", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "9345f55c44781c97065ee0a802cff1093d0cc3a98827205905edd753cb55c1f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "695151a7ca51d1481cf9f396635f91de0e7a8e0bf12f20a80190187be45acacb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "ce98b5ebcf22088162586852f56042ff1086b6e64cbfdd54058c11141faa4492", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "5df04325df3b9cae4af5c4cf4628c85e98882d8fb705ed6393bfc840d580977f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "e2c60303c38c9e37c6f9fedeb69564371032d0ffc2f5b896a72b8303bb551b52", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "99425a1328b9ad48c798e4a6162c7b99c557d2ad85af397b696b1ab342b058e0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "cadd74ed521d57ce1222a8c656ab46d52021ee37b0742374048dc6a0f573005d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8c017022078689c78ab0d8c03ff9e92404a8748b55bf1ae9a1bae80591410bc1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "2e84bdcca5f8e58999f6f6d6b7a4153e330f12b81ad9d953a7cba003ed962d54", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "a2f5c69f8a952b99a00039972811e9e0056f558883c546a834d3c5e1fd6c2581", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "28b8be560d16fecf76ce477bc398e0a280a9ff0527ca2bece8a876fa3c1420d8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "bc101a0832e04d3556dd0fca2057f431a09a717a7501a05362c4478f0df434df", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "bc101a0832e04d3556dd0fca2057f431a09a717a7501a05362c4478f0df434df", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "b3469c81a377800ef50705072e5a3b7a96450a77b8eb81c6acb1d97a1ab439ee", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e87c63d6babef85f0e231cb0d87e07699ace8c4a0fbc2ecadb7b7370ee0d2826", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "25a83229ff1f8d959fbde963d7953f9b8794e641ddb5b48c7a0dfaa283d88862", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "6895043bdede0abfe6ea3621b01cf372a3c6dc086bfbb883744045a64983b97f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "24da0d34eea976b53ef76a96426152c840431f31284b63f7ab53502b67f1ba86", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "6dc20a7580a0d316bd8067555c9f6172115f05b536464c0ebb55112899b65d9d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "0095486b725e4b46e5b48e6161b13f49c998a3f08530090476687e7bd918fec8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "c36c07a963201dc34256e539ae82479ab2d0a38ab2db3967ac34df72e540b181", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "c36c07a963201dc34256e539ae82479ab2d0a38ab2db3967ac34df72e540b181", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "c36c07a963201dc34256e539ae82479ab2d0a38ab2db3967ac34df72e540b181", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "c36c07a963201dc34256e539ae82479ab2d0a38ab2db3967ac34df72e540b181", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "c36c07a963201dc34256e539ae82479ab2d0a38ab2db3967ac34df72e540b181", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "c36c07a963201dc34256e539ae82479ab2d0a38ab2db3967ac34df72e540b181", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "0095486b725e4b46e5b48e6161b13f49c998a3f08530090476687e7bd918fec8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "0095486b725e4b46e5b48e6161b13f49c998a3f08530090476687e7bd918fec8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "0095486b725e4b46e5b48e6161b13f49c998a3f08530090476687e7bd918fec8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "6895043bdede0abfe6ea3621b01cf372a3c6dc086bfbb883744045a64983b97f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "b92a80cf3e3e731821dcd724295186b913fb6ddebc3698b3fffc9224a24a9455", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a97329d6fd703e8a08f92720b42a0742074f291ee239ec3eb8644b2406e47b05", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "fe545596d3aef25d658567d3b6967bf9219e25fef0aa260e5830a6aa3ebe1078", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "d7372bb637b8b1943d4f3c93899ddc83ebe3a82f62c01b5a07c4721925767cd8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "268cca485cf014e14b024e3a5e9eaec29697cab454e1dffb0961084940d05187", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "bc9a77f8c47460a5f552bb3a0e539bcb8143e91125170aa1caf4e9ae209d2010", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "9e44f6c14d76feaeea03c8055838ce588f36f9aea532a1187c801d20c686badc", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "0e1d9cac042d9411aef6fc861385573d91be2d3fe4220d5dfc8889f4ffa49f06", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "8556277b409223db5ef3257432282a4ca5c6ba1c0476c4c31902d6bf803a3ddb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "8dc24f24c8830d86cdac59a4c4c5c8473032134128b4bdd1f48870a3a861d9f8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "bb7bbd93cd55b69a9b51f8ab6ac8a433a5758ea55653ae34cd756b177f2468de", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "bc101a0832e04d3556dd0fca2057f431a09a717a7501a05362c4478f0df434df", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "3b9ae5570af6cc379cac67f8921ffbb88e1ff07687904c348613d95bfb2ab07a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "d320676504cc6a0cc77e91f385fea578886cfa79d803a3b6fd98a3bb894e0f5a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "f40c816958c6f00c3852ad36676502211254b0ae43d6ca1544748fb65b46799b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "e9804a905656ee90ce5153a228645899fbe63280408a00bcefa997378740c1b2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c36c07a963201dc34256e539ae82479ab2d0a38ab2db3967ac34df72e540b181", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "1d25d851d23e4f2ced32f001a598fa8f1c6e4103f00d385bb9c6e6faaf997057", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", +"T3T1_de_ethereum-test_definitions.py::test_builtin": "be322925718beb426b76e8f990bbc67a12963ef3661b1fc6b42675c32bc0ad6f", +"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "39c17fdfe992c37be2f579e0ff46fd8322efdac7af09fa0aa96afa1bb74d0229", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "9f5b76f9c835b4f95c103cb70da0a20911c7db53ccf68e1372b869b4693db8af", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "ccfe216bcfd4eae1c39e01065e297f9f524f120fb732c1d129229dede457ed3a", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "ae5e572642abe4be37a65fc67d71a35b79c20dd59dd62b4bab18d3e6f956afa1", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "d2e14397347f3ffc44ce590dde66b7c9f79a3296538df4481a7a7a183013df6f", +"T3T1_de_ethereum-test_definitions.py::test_external_token": "0e30eb035d22ff1f65adcd75730eed4a8a69a90d5595c42aa1711b291a63b3eb", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "1883a1e91b55debd0a644ed1df57b3b4b4dbe760cf8b7291baf839ce47af37d3", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "965c43a0dfa492fbe03be789e086d8870a35c7930242579eb9e9a56f4d15c05c", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "419e10df68dba2dbb64e49a8abe975ae45e6637ac61028ba1b8cb8c5dd38cf95", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "599a962aaacb92d048a0da6de5303b8c1d3401dd7892f54c2672f874423a84b3", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "b2d7cd15150890652dc2038e83c70f43047a90f545de58efdc9ff4434070da76", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_bad_type": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_missing_signature": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_outdated": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_short_message": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "aa8a803888365d0e22ccced0232d0bc4e6d9cedbefd6dc5b44cbc81a4d5e37c3", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "08c374b8bcc2fcdd1b29435c80584408964788251cd460d365bea2bc41307169", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "ca29f89a9f946a580b589d2aa589ca48c9de88d17188c15765fe7f921f5ae891", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "d58abd5f49abfa7287443db9dbd9295a27bb7b6d003f3b1dac1ebe166e6c4971", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "bf22ba046c2ca778ebd4cb012d334674c50467bb38e4c438261026c24252bb34", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "3190e8c9b26ff6e2594402a8d5d71ee3d31a91b8c8def5ef9bcdd87e978ced74", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "659f72a232c88c33cc85e23a689ab49164b51bf1324765a41a0fdcdd13939ba2", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0c9a4c6e9940c34e922c19bb7a721c24da0679c35c9e89ed55c522ad85535505", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "53f29d9d843bae0f49715cbc61cdcea40b15da12bb188fc213b46d5a40646deb", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "8cd9785f9241cc65541cb5e00798d68ef803af28038a1923fd7f604dd25fdd1c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "e9961949d719ed2558dad315f3cebedc9e7327abff01606a86da647a1d204c26", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "001d605c14286036139ed570d5801346004e31f4c52eea46f8340a36ea53ad35", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "54d98f649f243752f9935b3bb47b511a65f74ee896d07cf6c62f829b10b9bb06", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c2200945cb3a6304805f0c09da6491b064cb72eb68533a8f7eeb8b1a8b7dbb56", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "3e89323f826bc5f5e65de9d777a4332e9245fbf621f1eec24f05dec607e12717", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "aee75fa519e4fb11d12bd1b6547d9440caf0ea40d8ec0e152c1317f613d65eef", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "7c3884bd9aa99420534020c37dd9610ca23c1aca6b583da3195e8fb73f8233dd", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e303eb3da5f8866e762bfbabfd5d1bd17618d5874b447e6a95bdf4120b97378f", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "3e89323f826bc5f5e65de9d777a4332e9245fbf621f1eec24f05dec607e12717", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "3e89323f826bc5f5e65de9d777a4332e9245fbf621f1eec24f05dec607e12717", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "3e89323f826bc5f5e65de9d777a4332e9245fbf621f1eec24f05dec607e12717", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "a81b17affc6bdac7f96e803e69d55310007d21f3437dd312051183f749a44fb7", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5c1186fd178223f4f8c0569208d2215bdbcccd40933d1382e15dc1d2241f2736", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "41f7a61ef963395239e8cb2a92b73e5349de201e1a6a603c71d03aa5cd3779d7", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "c8967707fcc4cc3083bfa1d4aca29af948304b6b07b01362bbbc2f2566d81ca4", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "c8ebac3d980482adca96238894e9b3e6b1f56791f3cc26c1ba62258c5b149653", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "7bd728dc71972494af734c26ed8579107aea46cd3b93de242e27cf5961e6b15b", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "83a56f65dc3d7a5e2ed3aa66e4609ad6d83e765efd3a1f2ba313e9bedf018ea8", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "d890100987d84e23ee9cb484207d7426beeb3562dc58ab1fe46eae100a4a76a1", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "d8e0c648025ac2196dcd54846fc23f76b66433500a3f8a5342fef2814b648a69", +"T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "2379647bdcdbdc744fafbd4221c303fff70ebf35c46a84e307c94965c7d2c2af", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "62c144084b9756d904b47b6bd2076f78ece7e8dff51999f5237b50277edd4d68", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "fd53ff14d0e36fc007d258c46bf1d79f6e48c25d8b2b17eab7d427258bc94515", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "1a6c0e9a557052ca61f5c246e1c04ffc5fcccb6ff0db14a42ee875a017a8cb55", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "c15da46c21b0b5a88a665ad62adb3b7b41940c28a1e6ba36c44aa40efd8be440", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "1dbb552884f7fdbb518d6907b156e0402d4585c46b59092a25eaddd949b0ea08", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "8cb07c3653ab301d324e839578c9fa6a3a242a2f4696533a60c3fbfb699ab1c2", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "308a8ee38d4a48a12cfcc0a88843183ebf972e06350c27a5b837490eb52ed14c", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "6fa31a8d65050b9eadb6185b10dcfda0d8a55bd01e787d440f31e38651df2dec", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "62c144084b9756d904b47b6bd2076f78ece7e8dff51999f5237b50277edd4d68", +"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "c6b2ee1fcc71e7e5c00b241c8416333124351adaf9e379cb266d421375242751", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "2037d579d0b1e702e4886395cfa6c68c5d2dae139367783993476c833e91c4e0", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "d0e192550b85b86bb2e5d1a2c80b45a68b9252ef0e55d29475580cd559ee3cd2", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "9e0d4a9795c028547d51a283911c79dd45a0d6ddf7e69852c9121b8aeda30a02", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "d0e192550b85b86bb2e5d1a2c80b45a68b9252ef0e55d29475580cd559ee3cd2", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "98ca7b629fcf0c4c67be29317710bcbe93283fa7315eb00bbb06505f39a8f9ee", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "98ca7b629fcf0c4c67be29317710bcbe93283fa7315eb00bbb06505f39a8f9ee", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "516e53ced01352a6140e4ec6c38d7a63502161cf584582df61a8afc22ec855a1", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "af4d5b864e9e3c98bfd40db0197fed2080fabc02690c0dce4a85fa3c1b4af3fe", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "ab4ee586b8baf7ef29620145bbf811d541fefc075d2c94c0bc81fbbf09d86edc", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "ea30fc462790e421951b4adffb771b2d4219132ad3099e1cff3cc40d7d957cac", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "302024fccae3ee96b0dcf3b621f411149e8565e26b7e00c56dd9d548e2a57cff", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "e4f46ca198e4c2db6c8d9b6d50026e05c84df75f43a27afe5708b0d94a22afbe", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "ee0dcc9bc33b17341cfa1eaacdd799786ff3cbdff7811d084a6bad7c37053f83", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "3d0652d529e675c71404c886c760c8c44d47b3986e057c669bd2f1fb06815ad4", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a846383072148ffd977e437fb95a2d26e862717a0cfee097909a9d64d95b3664", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "3d0652d529e675c71404c886c760c8c44d47b3986e057c669bd2f1fb06815ad4", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "2761c00663a989f9c8412e3f19b4a5d2a038b1c22572aeb23b465ef911dab592", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2761c00663a989f9c8412e3f19b4a5d2a038b1c22572aeb23b465ef911dab592", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "2fde507f4b6657ed713db3c79857964144e8625cdcad12923f7b667cb9304bc4", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "1d83a24a8e3c8264855fb6c2a4167fa9f7eebc8b0b2536933608ddf6e1c05b1c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "dcd7605bcefe01b9b5331d99a9d62dd46e6d1d8eaad6aec92beced3981beaa99", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "ea30fc462790e421951b4adffb771b2d4219132ad3099e1cff3cc40d7d957cac", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fee7cf6fbcacc9976bbd37a10fe9f58f25c96c16adc382a50cde090934f4f2eb", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b4a8bea9c0ff815b833ef3ce78ab553eb62db8c0c1f3608ba948719c8528c9f2", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "4c7f1adcaca46cfa0df61e35bfb7621cc56cc5f3a175c14ae54081073d2f2499", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "516e53ced01352a6140e4ec6c38d7a63502161cf584582df61a8afc22ec855a1", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "7be375d1db5d67d474266ca0c325ead140b6064ba85459f9d0758689a76f0c72", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "ab4ee586b8baf7ef29620145bbf811d541fefc075d2c94c0bc81fbbf09d86edc", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "4b02a2725793a8af6a4b2ec09b33af2fdd38462a1020fdbf092dddfef7b407f8", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "301ac123204e81766c4a4dba0f829f007f3c19c7d11274bcf3b90ee9df2b486d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "fee7cf6fbcacc9976bbd37a10fe9f58f25c96c16adc382a50cde090934f4f2eb", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "2fde507f4b6657ed713db3c79857964144e8625cdcad12923f7b667cb9304bc4", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "a118eab4ed44b22ed234c65a9bd46771da21efd0a649948cac00869d6bc97f0a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "dcd7605bcefe01b9b5331d99a9d62dd46e6d1d8eaad6aec92beced3981beaa99", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "eedae983f5b61469602e8d00c22f69b51b2aaa5bf789e5b8013632af51785e03", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "691f7326c5c46b9fcb54e7e7de39ffe5b79d85674ff35fc4fa10e5377ca077eb", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "fee7cf6fbcacc9976bbd37a10fe9f58f25c96c16adc382a50cde090934f4f2eb", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "3eb8fdd101fa55b5223057def53a68f2994528640f1ec08a209fffeb18903b17", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3eb8fdd101fa55b5223057def53a68f2994528640f1ec08a209fffeb18903b17", +"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "dad405c1123725358c27329073ed3c01224532fc549e4cbf4bbb12490b56ba99", +"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "23dfce8d7608e849c2085687f5dee7cdd31002bc2cf31d19c784b4c3af5c9daa", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "e2dde31b972d7192e156142a56d4753e9d8f2a96f7e6843b5de060de95863879", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "e2dde31b972d7192e156142a56d4753e9d8f2a96f7e6843b5de060de95863879", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "11f323fdeb0b2dc3bcba00c238dc48a3f840122dca34d7ddf9b0cd1b25b36320", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "11f323fdeb0b2dc3bcba00c238dc48a3f840122dca34d7ddf9b0cd1b25b36320", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", +"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "9e7012c653df31820568b770277b871d233113c2ec2b2e930dfaa617d23672f1", +"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "9e7012c653df31820568b770277b871d233113c2ec2b2e930dfaa617d23672f1", +"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "d7ed75e102b63097f48cfe70d32837e99c8f5c49eaee23dcc8dcabc203d59967", +"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "173a3e522133d5f8b958954da8c39704686a49a8905dd8ee8eb594c0eb7173f2", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "3abd615eabed6032a66c9d3f9a45075c3c4a3d8026e835ce0d7aeb58f56055f6", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "cef67907a9b33453883f13f404c64327de1016d0714b9a70a37168b7e4e0c02d", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "b01dac46038029b21675921d6d131ac920a135be7f2a91d93e45a4803a0c467d", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "2d193110033480e0b1c16abb63501139ffb1080a938e50789e0081379ed2a087", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e9e40fcb6012065d5aa89851c7870eb98cd7e9204ee676a9b37c0c28cfb2a753", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "17aa3bac3698b13446772ecc7344247e93c6f03d1906a2ee5634fb3b34ca96c6", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "94968f2441f9086c2cd9a560b5d0af677cf275e20e7f5fa4c128bff6c64a7d41", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "1712ab103587ab7dc36f04c18792980ddf7925b4ea9de4a6bcd1a83d2c7890e9", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0736b5c166acd867f8308d4a7429a0650aa512250d50c7021cff473b53ad8921", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "635fb46af6685f1bfafc38a067c8e2a420f1abc94fa5996d7b7c6b8e9979aa75", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "6c2aab04cccc714f40cacd5a405053ce2b05891007f7ddbce29f5beabab7b1e0", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "b57b18a150e85887d724e8ed9422d1433705786f77f287cfc8a9c84205de6639", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "ce09f4bd846b200e487c5860a715f3a9b72de88c939fa673dc31722b69f37050", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "6699507cdc6c60cc5eb70e966255f4f9c47164ca71784ebc2341fd315e056674", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "3213e0e870833bed27501f3310cf0b56f8891ef0b091f62116b418ad289ed6bc", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[129]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[33]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[3]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[4]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[512]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[513]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[5]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[64]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_signidentity.py::test_sign": "771672fc83f043bd854a633f9b5e31cb9be6853acab78f8d5c8e8c4b49a0af7a", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "4e6add2ab1b808121208c2f587af849986d275c24aefb4dfde60a1b720d35c55", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "336382c1affbe9b95c641db57f0babba61dba662aaff290680d412cbe9d7c5d9", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "38e218b3b3442e382f53d70a82240b64a0530f561e768c03565c074fd8eac176", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "ab801ff2b2f6218264e790b493e987e4bdc166bfb8ade4924426740784255cea", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "23714b7d05483ba1e7c72604e3da8bb9a0b563d4e9a87a63bab12ab5cbfe4949", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "4773fb71bbdd2da9ce215bb63dec930364988ad4304ccf7694645e9b72ec2330", +"T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "42a27232e6b2e83ade8cc2fd92bf6478d0958418f84f52d20ce742aca6134d4c", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "70d59a451993c7e8c122fd2c34a71c8595c35a627edb27971ceddbdcf048ea1a", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "69cd3987f05ca8e4678647b1dcd5b059e07184f8418d71f1f914da52348a4259", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "bc392936d94079700076ae860db6eb7b6cab84309d5a98c6e8b231a2915078f4", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "30b51f5b2760c6cc9cc7c8cc69f0d4ea506d68103a912d2b647d0bd4b1cc857d", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "1a165789b703c489d0b2c24949bc3e1a4d271d8af499abc6fca0ef1e5920fc39", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "9faa48f0fed21d27e0f33f20225f47df801f27b993e3d1ed2142a42fc10f2c2b", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "6bb54c7ed665a70c8c6fe96fd5af76c5c96b38b037919c832ccbf3f5ee91032e", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "1d42a514be43452ebcf24586399c9b3fe2bc1756bc41417c84e8954af4c662dc", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8d9a830233648371b5a31b96a4aa6346c82a56a9857547d00ec2c86ab0414947", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5172521ea9307ab7d5d8eead87e40851bbc956c3369401c644229b20e855d769", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "abc5f01a16bbf53603c6b4686f5436bcde660089d604d498f895dc5131ec5ddf", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "462542276e36e5d2f7f42069bbfef8ec25a6424ca5990cd8794bd5ca50fdee93", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "bd6349dfb90b0a08bd30c735f30e35b632b1a79fbcddaf81b09bf93cc767bf73", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "928377c799e4cb330ce2b76ead48e1554806033a0c24796e6c426d5705b87a31", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9108b9cf9e83f8e68950099f1a792cc42bb0a45b8b144240b5391dcca1c9341a", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "9faa48f0fed21d27e0f33f20225f47df801f27b993e3d1ed2142a42fc10f2c2b", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2003901a9b56cb2fa19516f85afacabd8d71c6b5dc3cd3dd5772e462679f4195", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a2eb79348f54344c5edb41fee47f2296f63c49d9e87b29ff337386718e991b3e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "4fef8756710a8814a1e5b144275a4ce6eb1e9a12194f03179a046aee2771c706", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "326ce796df427e4d7ffeeda9074c2eb07445f47a324650a72ca8568fdc011b2f", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2d083c023cadac920c515a907089be9021a48c1610379171f425c11f4f9e5389", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6fbc3bd093fc448e55f9f1e0c48bfdd1230c889a575c83a21551ad0d9c345755", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e46b6136b649c597c3551e4ec65bb8f8499f03f02fa6008248697166921fb783", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "1aade3b31e8136a7ca7b64100d4c8bbd4264ff072462ffe849d49eeae30c3ccd", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "371bb100fd1da3c9d5ff5fe4c17dd25a546ef253183596f0cc21370e89880479", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8875d9e0ed91f29efdd42c14c030616db9380a7dbad19d6a34dc032e374139ff", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1c26ae870715f96891e1f97a597a52358fe04d37cef640fc980281a7e0b89f24", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2c8a47450a43f39a5a5a0f0405bdbce32e019499b3b4dfda34609969457d6a3e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "745b498e103c93c90e8b693b051d250399040d3a89241fa565f1b9566469ae8e", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "bc4139932e6e36539238fecd45d644ecfd4b6eca9d906dfb6fcb1ce46e870d5f", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "857a1771d18018c4ae5d784feac308e6d0aac58703321f93e024feef0a19f243", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "dba7efac6714fdf5c8e448a3c13c5711f3f219030d2e69d0d8b4383628a8b338", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a8ece141a31c697cd6ab6e5c17fe0edcd5bd2b93fe2e7048bea5fa8fdf694120", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5aedb08dfdd7e6df735f2276ac403fa4b218df0a49305dba4d0be69fc4cf4bc9", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "092715c6dbf2bb3d487f2d89b32edcdb29606457717ce33bee04f97355446699", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "bbae8b148cee497ff332b57281054fe833a1aaf2f82a178744f1327fe0134ebc", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "e5f0d5ab69461a466c727785a8cb9ccb604ac7b8a3dc9d4538f69b4180d47476", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c66532e46ce97ca339f3164077abc375d5ef7c9f1cc9a301202b79a9881a23b9", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5c206332504fe954b8d05ea0edb1d624255a9d450eef63f32fa91e77cb6610b4", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1719e2209e5bfd2d92af7f4139593a5e1456612e61cb2dba114940060fd916b5", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "9ec300c5b6a5aaeefb3fd75cb438265234483489154d3123d8b8f3d6094ad443", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6875796b913127cd119583bec7548be3ca4102382dfe87a7c86279caae27b135", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0c9b427c77143722750fccb5fded3b2d6789bdfef0eff8cd5841fc2ecf8309b8", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "882a5192755a5c01bf804030f7c3296ba79ac0214ff8a0f6be06b8bc525b7e6d", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f9883ac65490108143f67902a0dda0d2c4a4938222cf535e71125a177c0603d2", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b649b65af0a44b31ade0c380dc311a95a52244aeee4510d6dca84d463ccc3d28", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f23feeb1f495c66872cc7710c0b9efb6ff61ae6d892341a7563084b4bfc11d4a", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ac77d26f757ee7492e6c0395fc5290451326a10e149f67673d6f4cfcc060966f", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "8e7259a76adaaa9da300395eca4ec0d621085229eca92f6248686c348787df42", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5e88577270ffa6ce1e11aa8218016941ee3721a691f063641082344a865d68ce", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "557d95645e0c5140194f5320fdc1c8ce09871a9329ee27069da16fca7fc548c7", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "943af0108d47648dc85e762619cecdacf75d6a93950b01c7b5f91b6089a22c4f", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a3108bb866d3dc7fcb5b919ec04062329259a3d072357d028bbcce262dc563f6", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "eb2de9ea06620346e5c954f673ca9c4dc2c41d858d55a0cd0aa50152d7c4f052", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "201c82347ffc2a39b0b777d52884c6edd86ef9cce56f24be19be70381a4ad500", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c73e6ed0015fea0b36da889dfd45c94ed48a795ffdc8a0968bfdc8bdb2674cfc", +"T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "ab52a805d36cb9209da697d4ed3ae012d75418fb6399d001f09e55ddb001d556", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "0de5f79590f6ca4f153bd5b6a6ac7e0d0ac6f6ae5947728032ff7217c5e6c2f6", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "7506038c1d9f40387b2b69b487aa9d9e4cb1ac34ce7c4f91893386fad2617a44", +"T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "e4cd4473506dc0e0938265190003a384285cb9bc8e176e6ee0a3257c0d1406c9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "400ea0398a37e0d5f47f52507ca0214a7c944158c71a031a3944a8f24c042c12", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "084a2105789004cf8770d4b664fd2f43bb04a606fe858dfb6abf809cfcecb9d1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "f0ec3d2962ca472e9623027c32808e109d35f48e4d09ac4d8832d97739e9a995", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "478809d550c269aebd48a3b25ea69a80fc52a0cb0163ef283e19f5aa264007b0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "146e66c1b8f8661c026be6abbaaebd51a103379eda50ab48dfe24f2166ab13fa", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "988bc968b71c4b7f8bc0c1ae20278ef2bc871a9332a67a7655d0321e7762ac6d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "a019049f2895e1affe043828b277aa95e2eeb63d12d2950905149a4dfc14fc47", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "1675656aea44890a664f3b417d15737e1b4e75b42de31d7f3af2cd4be93cdf36", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e447ff0ae80a65341a274cb03eb6899d5688b25766198c7ffe01da78fe8f13a1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "4e8e97b3c920a864949a446037dc4a184d41d1cd6c11ed4e40821cb2c5e3887c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "04077d6dc0e15eb0177dc12ade7de7b3d3007ee84185119f59816d1ad4260414", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "0ad3ffce13bb798552b85c362c0619a2a41e6e0bc7d806b8d6888e7efa3525f8", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "6bb1dfe1323acc5e4d0c38f01e3867f6b76daac8c3186b091c4bae1c9ced4668", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "43ca1ca0734b56322c4248ff40fd74460f174ab731fd37c69e76c0a75c19aee7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "4256ec4d9ab834e0db95e4e6f78fd2838399f61577d5d21d865636a54925fc9c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "5fff82587b29cb09c2734e7cd1f305199c54009f6167b2978856a6ff7383c578", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b7a8eef7a965fd4b0ddb5225ee47db5806c5a73b3bad8573d0f6436f6bb1849b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "63383f41b4e1fccee907eddde637e204299662efb5268d650b8264df2356341e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6edc2f515853836ef6926b45eeb0db5589f3fe971efe7ae14e1a5797f2491c4a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "1825eaa51fdad673b8a7c1b7d3a0b9f072c9595b734731cd3597a933fe6ce513", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "898eef52bae8c416148fc522bb0fefea9e8f55e51f36ddca8c20a04d752bddc6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "898eef52bae8c416148fc522bb0fefea9e8f55e51f36ddca8c20a04d752bddc6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d7cf955fde7bc48e6abc34423f7bb04484b839ad1bcc31bdd1c43c13101bcd58", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "0529123725b1eb408b352147f8f7af22a128de7eca69b7a4c3ffea60f72722e9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c6d840b00e8c8a6b402a24ce937fa76d278d14e88ff9080dd82fe729e113896b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8496316eb8d4c4909ffc1714010e65ec19b01f7924c71d887dded4f31e0a6794", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "aee79c42dc1717cac34237896788c690ce425025929c877832c61d49af38d77b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "6a6d3957e33b9f5476e7c9636776516ab29593f75aa990ca4cf57d857c099d0e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "062c251ad1617a636f9ceeae36a5af011e6af0e063b697a07761f092fce5a4e9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5ef1f9e7bcd84da40c4fad08c801d7ca97605a67b02ea3add4b174375c255101", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "c169cbf41e0c6c6fb556cc05a9b38bc749041378a0774bb17fe37cf98c4fc2c0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6d69d8473772e26b6e773929a0826ade82c7ffa1449eede2579ff176b777c4d7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "5f49185e847979f09ea00e54b82d2120ff2dcf8f488d69017f03be0497b0f891", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "cf69008a3f4c4f951ddae1003b09b592ab8877b6533868bbc55d441267c7d02c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "72eaa4e0ec8524df1b9076c94ae598c4cc98d8993c94e4dc3092299be7967d2a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "9b844bca9ca068ed1d7ae15cc88861d68b7b12e50a332ab935294f7558468667", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "15fcf66b3ecd32a07d39000bbbe1c00251d6a157017b9b6330e21c99355eabbe", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "db41d4bce4db6fc877f0cd52c4ce73de507155b1c545a72e9e2c5fa285c99cf6", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "42ae279e4f29edfb7d094eb125ab2b1841eebba4eebf5a74032784fc6fd15f8c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "1da27b4aa7e06560b4e2df459f7d365fe0c412b4d2ebbd326691be4abc67bc43", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "51f5f4399d9b2bfef49bde835c3e44c09c355ee8249ab20a587286902f4b7c26", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ad1ff6598f22f687fb3ce6814ee5c3b2d9ef1aeb2f40ee72ba1c36edc7e923fb", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3eef542ec5e9c48e128b7538a939612ef811ddd743a0c75940ea5471a482a0ff", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "27fc51cc4ab9fb1e1f2b33306e578100eb6a5e65a32f6091fda35f63f40297cd", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "d288a338873f171b4cc3e10481af7716e4ba78da73ad2d3a7beb294b26e72cc4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "41d49fe94a7f80e31642575aab9d8fcaf709487708ba4700b8886277ea52bff9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0b352fe735708df687da46a8e145617c3bfb5e7078403b47a21712c739f8e5bf", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "433d2a60b8474305bc57710cd0e3a40f46e428d5e563a829f0716f5185998b0d", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f80314927a3c223e0d0db3aa03a90a30fa641c4baf9f415402e309b891fa6a72", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "bb46338673135e30bb6e93517e889affecc25def7d25d576820142acb0532688", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "44917b588f3d1ef2ecd242e6d30230d1abeae7e6a2e4b8be1c16580164b3d239", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "8aa1c82ae57e8fbae94431aa43f88e34f1cd4f722d7e1d7d0aaed9ba03728aaa", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "1d36330462efdd502deb515011696766a9260b9599380faf1e764251afc758f0", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "191d1c639d0a45c07bc9f238f6ece72034331d844b72d2e4f1b618b285b3c864", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "b5b132ed2f22431bd2f5c28744f393d0acabd5d2a7508ca1bee01700d47f7ef2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "cdb384acc7f08e36cf7aa4991b3505a83334594868aa5088d9cee2876c829c02", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "b1fe05286ec9de448c4ee8e852ebedc36ec1ba8812fb8fccfb2e28373b07b286", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "9e95fd0eeab779af522f74157462cbfb4d44e07496ae02c47b1831de3b6b0735", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9e3aac3e872da1bf8debc740789dce47867e0270599f5ce4b58a4c97e78f3944", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "c6d840b00e8c8a6b402a24ce937fa76d278d14e88ff9080dd82fe729e113896b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "14b3f53860a4643dd7b2ccb2543643a71ee54287a6994de2497f9a3e717d30f9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "c4cee95eb45cd3e52a68d4232f264a82473e5ac46b77e20c24261a1068841501", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a7b16c878c6b94de624586e7ee5cee168bf4dcebabf1ce8225458b0e61b8c383", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "4e2578b1fa546917292f1cc6fa952f3706c595934e223e24b3dfd1f73128557e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "9f78007f00d55abcd9237fc5fae7e275e1a1d41544de560a4a6bf35fdc449b28", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "7cd54333ed660f178da4c3ab37262e4fcc5f7393318028f4944e6642d127fba3", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "78486821de53a6a54d1e518b8d7b18e2eb14ce71fb5e19b83894f6daf2229784", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "d6bd02ca73562ebe8ead45a4e4875314748ff3a931c6df46b2eb7a80cc471135", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "4e3d5e450e697e426aed63887d2f1ef10c618a531b1fdfedbea2109172d97266", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "de627e52923ccc4ba0fb3cafdeb2da683c9b4738db3efba6389d15f10af3af8d", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "4a9a354ad293ecd65b7eda8707b87cf076c2d13198831389322ed57eea76b2ef", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "96765f90e334b270b07f52591ea6036fe90509243f8498d594d2eb87509c8187", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "0ac2891c738c7a6ce4f8708aa24d0d2801bc0741133d750f55ec5b6117e24e70", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "fea3f982f6cd4a1d4f06d3f761e16edeee03f429b4331aa24745125642cc836f", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "b43076de29b601979cacebcb6c2a383a3c46b5e5654970b1991111eebc114c85", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "8570ab25c5df8503d68ab32b908990852fe2f37898e53c64ef0226371f13bb9f", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "a460fad4da34a0cd8926c69afe7b3dd68a9a31fb6f0a2cd8049beb4bac5167b3", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "eedbccc43034b509770565301eb857f26e6030a636f2531a7452c3da3b758f95", +"T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "99df73f64f0967874191ed38c8b9570b7dc537fb0e45dd0a6d3b50065d2382ea", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "9d09069807f03ed15074c01a36f5a31eb3b91bbec133024edeef0aa5e2833eae", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "851c96670efdcd525b81063b9236a451e24b4021cf0caf0851282d381b984b98", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9d7c9f44ea3d80bef595e5f7e2d2727966dd60a244ef2fa5c6eb84f9a3929995", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "a894861a4ac53b0274850a8f2f137de31b9af99a7e6f7f4e64cbb0f7768d70fe", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "bc672cd30bbf9da741d765548ef841bbf8f5a59b2050b3cb9d60b5fa91309a74", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "31b4460d2914061541e35e5503711dbec80f86e4667658488d2d7b33506d6364", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "6c05ab21b2372aa5301e51170a4fcc5759789f43b8199484d18793de03637f7f", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "7f9f4d76cc974cebed8e0d23b12985be4fcf4b11f14edd1b745f15e77daae041", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6e4881069b1de4349cac001a21437ef99cc9cfc124c58081c15c3ca793ceaa65", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "f5681d3468c14b999885abf249085aa63ad86237523114c444471afee2592f74", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "81d7f27cdf8b7f44ce28c8b7235b297a039d62ccddf39a5a855928237c5c9401", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9a07da52fc2c1e598718ad5033556860316288268ba920a02c0efcc322f12d08", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6e84036c36ec36824bb4b1d2d2359bb95d80813caf074e94430770e019358ea2", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "0c243fa02d706682bbbdf40355f48b085cc3228a2f938ba472069402d5779eba", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d1b74c6186e31b68dce2a120187b8f1262af236058ce84c6f80ec3f41ac2334a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "afdb1550e7d656d856ff18a8e2edfffdfbe55527e9c6ac808abb28616c6f6d80", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "f8c1fddccc72c29600ad3daba3dbe7d085661d54f02eccc92aab0acfcd2598bb", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "e1e9be738a78dcbf1f3917689ace45d50b51059879f3c0fbd1294adada301ba7", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "3c8286d12e0c71be68ad825fe8e970b5ba0d69d5213573d398aee1fe9c0e1e99", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "742dde86da3af82115a3e9d3776def00bf9cb70f6e4eff7915cd4c1735491535", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "ad6dfe0361550b763d552d3a27a84cbc841c1253e38212afa7c9adaadbede905", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "b24bfd272d4b0c600aa6c8422acb686e991564165ed93cab09871881b2606967", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "5c6636fa982016c205e886e01e0bdece8983722cbde6a86d18942a58ec361171", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "3a373ebb1596598e1235611c8ee311e1c31b6b39c0c64c1c70f410a0ff374579", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "6ed0b88c09865d3684805bc6048d201376640f0f17401cc3f176185e2e8a5356", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "45cc83f1321fff7b7bbb76dbc07894d143bea9578c973bcfb2892b271820a2ce", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e55a9c9bc7648ece67e5f2da1196f09745338d5c77c6cc957bd5b4b482a4c9ab", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "1b6a6e2011fcf2876912d3254b2be110a2b7ab7d44a3b2a3cbd55b488b4ba907", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "93e40a374fe1dfedabe3d13fe2afc09e85ca6951dabe0a3d249ee5346205e22f", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "5697890bd63ae2e6cbed64c1d63bbaa91c73b236d8ba2844a4c33b1f11fcfc09", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "618d06739d4f12fab7aaa68939558a5a7a15bd9035b33c93e50e590ae48a3320", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "8ee5b0c99f62c60b8130a8823457d72fd4faeebf8f78476523a2d78f4cef142f", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "2bb4482f67b2f04c920b54bae06531903c7451ecf4bd77ec66a722e12c735e00", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "6171e944e7884cfaa68aa1f41439752c69cd2efe093e4e1d8fcb2b658b3b68a5", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "3aa86fb5e017aab9377bb70767bde954af784b999dc392254a7284b58d0d75d1", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "7a2f2216da6ce4416508a5fa007d1f672c2a7ce250ab2701ca1ff7938681c278", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "2b635e5d9eeac28895e73d642afefb37044c6e25a7fdf199febec19f5c678b8b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6a7ddf122da188d537de3a33ca92fb8a2c1e5e0cf18c7ddcb114f443fdc6c089", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "4eca37db90b32012f390115dcbbbf154dea6785d6ac39a32378b048e5e106302", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e55a9c9bc7648ece67e5f2da1196f09745338d5c77c6cc957bd5b4b482a4c9ab", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "f6df1471a998bfcff8920accfd4bc0949d9bb86109c50b1a191c9a88dc6052b1", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "c3fb7e8e0bf81b89cd6badc79dc13a55345de491daaf6f093ed9c567ce196f64", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "9cf9a3a7a5d7f90cfd4e9aeb6c85d3901489682f55d036e30fce2be5443d05a9", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "832881567c7404333e08db0d61cd731717a2dbe2a00c29bf3b59df9ff9c270e5", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5886444ef2850d2de7ca788540bfbae24117714a5541dac967c021e3ee204199", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f183f3e793391cd99be2888af424d23b1cfd66323da158ba0b9c3a71c5e32785", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "b898ee265af4b257149fdd0c46105832a5b82821bb4b7f03db268b81f056ad65", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "fd13e0b14c509d1e5944a5f23d5bb645ad594161070cae500029c61b543c56bd", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "a228e777862bfb36b8680a2afe7df067853677ecce672c80322857436082d649", +"T3T1_de_test_autolock.py::test_autolock_default_value": "fbb9be35ae47a66114285e25b1f3d4d465dd5665dd6b24bbb572fd77ce6a4a46", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "f2cff45b043fa802e2d381406da4d95621a67187911eda277ce41cd1507a4f4e", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "f2cff45b043fa802e2d381406da4d95621a67187911eda277ce41cd1507a4f4e", +"T3T1_de_test_basic.py::test_capabilities": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_basic.py::test_device_id_different": "13548b484f56bda9b97f3955810e5e72a0620b240958eef9350e5b8b0d99856a", +"T3T1_de_test_basic.py::test_device_id_same": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_basic.py::test_features": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_basic.py::test_ping": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_busy_state.py::test_busy_expiry": "42708037ef9e7e034aa46d6d3cf64d51dbba8be8e346b00e4f724e974525548f", +"T3T1_de_test_busy_state.py::test_busy_state": "4c1d79ef83391375ca217693d50467b6c940539defb8ca36344753f65cd04dd6", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", +"T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "312cbfa84055cc90ba1bf7cc08fb396db4ac1b47c2b93cd077c0081ca4930661", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", +"T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "312cbfa84055cc90ba1bf7cc08fb396db4ac1b47c2b93cd077c0081ca4930661", +"T3T1_de_test_cancel.py::test_cancel_on_paginated": "6928682f498397e0a69b87e5d936a12f00a79cd1ce3df5f171904274405d2e0b", +"T3T1_de_test_debuglink.py::test_softlock_instability": "1bf85fb4559d86c8d3ea80244261217d531b9994a42f2e3a20387faace24c0eb", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "3ab7e7be6b946950c575bacd21610d26768aabdfe9a24a48d89c156ed2a2d55c", +"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_language.py::test_error_invalid_data_hash": "d64e5beb97239858c596885a32b86939f5760576f0b3761ac01a6d522ba9a728", +"T3T1_de_test_language.py::test_error_invalid_data_length": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", +"T3T1_de_test_language.py::test_error_invalid_header_magic": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", +"T3T1_de_test_language.py::test_error_invalid_signature": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", +"T3T1_de_test_language.py::test_error_too_long": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", +"T3T1_de_test_language.py::test_error_version_mismatch": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", +"T3T1_de_test_language.py::test_full_language_change[cs]": "6bb5397ee6e49dee5501b8dece66f48249818e5c9e1f7187d76b362052a461f9", +"T3T1_de_test_language.py::test_full_language_change[de]": "4c88cc1b92c2b2656a259423401bfa1ce7466c0d93bf534e7da2905b1cd50c2b", +"T3T1_de_test_language.py::test_full_language_change[en]": "79f228488bae7740f0e4021c62bfb295613f47686112f18525ea87e967d31346", +"T3T1_de_test_language.py::test_full_language_change[es]": "8927eb900b402d14e39322eb6bb40b0cae2bfbb2a175079cdf549e2c3942b39d", +"T3T1_de_test_language.py::test_full_language_change[fr]": "4a251850445d3b3f1f21974bd4b9fe133a7b2a0da0a4f72ef3262387ef40fc83", +"T3T1_de_test_language.py::test_header_trailing_data": "8e198165bed53d92f4c58b31acec7b1d6b872eaf922d523174d92b0f6681d862", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "33bbdcf8b628e8cce2cfc19560e1665318652407a68ff55db5e65e39e0f658d6", +"T3T1_de_test_language.py::test_reject_update": "8608388f972372883ab6adeabc1871f8ae2b6992e51b41a2c5e702f0f5caadb7", +"T3T1_de_test_language.py::test_silent_first_install[False-False]": "d5d5b085c13990ef6aaf23a8aedb6f1b7a10ea334ff9ae85a2c5275ec64b4c68", +"T3T1_de_test_language.py::test_silent_first_install[None-False]": "d5d5b085c13990ef6aaf23a8aedb6f1b7a10ea334ff9ae85a2c5275ec64b4c68", +"T3T1_de_test_language.py::test_silent_first_install[True-True]": "153cfc90be43eaa7126aa330b9266215c5d9f4c2ca4042b33d9da26b9dfa0805", +"T3T1_de_test_language.py::test_switch_from_english[None]": "eeb074bb70d89a4f57d7fb1e61c830e51b255339244be927eca460819dd03c44", +"T3T1_de_test_language.py::test_switch_from_english[True]": "eeb074bb70d89a4f57d7fb1e61c830e51b255339244be927eca460819dd03c44", +"T3T1_de_test_language.py::test_switch_from_english_not_silent": "5dbbf948c50ec08f09d99f5a32c85b563f52fbf084e176f2e77bd89cdeb140ab", +"T3T1_de_test_language.py::test_switch_language": "abf56b709144025c2b3e6ac2dd69bd0e095645f2bd8c27e62a0f193f45a59861", +"T3T1_de_test_language.py::test_translations_renders_on_screen": "1fce1554e947b0f54d7052615e763117adff35868f5d968ce35f9e77bbd7a214", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "59e6f7424dba79bdf6266e8aa24252b5c863e64e3382c225cc086fb3027c7b41", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "3addf04db351f8e7ba8eccfebb06ac7738e2d7e61d5fb02f77caffe70e6b21b9", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "95e9d5ec12fb3d892bc1b69d63bc06975071c5ab2e14413a46f83a932041f841", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "009732212982e29ead5a635e51e4301b9f0bb20134c01ccda4968979446af371", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "1b3a28286222012d3c11d4f109f1ad7934623996708b8b85a3e13849f9abfaee", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "80900a10f39b130e4afc48143c2fc9a8e6ec9da57f4c0ca8884e7717f673233f", +"T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_msg_applysettings.py::test_safety_checks": "1540113c25aae9cbe0e9438724c71a9e54d73751ed64698f56ce2d73c90253c1", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "bcbc5c4a8b64d402a1f2062392daeab48125efa9e10fb7f928bcdeeae391eb0a", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "58fbc4a6ece4247bdfbc7c7dced873e414b85cf971ab848bc650ac07f40fd236", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "a2ac740c10bc577f2e815edd6e7ab15931afae478388b4cd92af5a595c46abba", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e40fcd79f20ec38c0db7268ca78bd3edca90170cf72d517e1eb4493720a94a28", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8d10d1b71a88972e2508cf443f8339e6a1d8fbb972d4e80d7172dc59df7cff49", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "da146744b0fcab4b113a9c5cb57430bad2b7401027cd91ab18546beab8a55f7d", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "240dabf5f1242ef54f84292a391be668a499576cd6d48f06a112ccea802a9ae4", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b678010fb5eeef1b9dee08f67102a60d9eaed37e1728d51c8255565a8d67275b", +"T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "46a0aaa1de9d5768ec769aa75c050cc6c3f7f037b54d191336ccdb52b12d716a", +"T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "3c27d51b28767f7ef347d31c482c4cb1a3a0e857f45d2e249ba59767d8622d9a", +"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "bc0059f84b1dcf085a54dd8a41d3b30c2cea01efd3df96c89c2e176c7796ad94", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "82a74fb854f1a277aa219e5c3952e6a9d8ba3d07d62b04811a1c26eee91598cc", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "ddee360ba333d9da592e66d7a3ee3d0dc3e890aed19215dce937eea0de8d8bdd", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "223f96921bc161bfb353a6c734458bb8a1b197c5bd0cb7b4bc4734e1bbf750c9", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "451e743ba90f64b6bea9a272e76baecfb79c27f88b6c5b78bc08bf92307ce3a8", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "fc28cff7ce545c2b83b0e750e31593772e6438fb363633506516056b7ea0d479", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "dce9fb9e4e6c6f9029d9809c6e9e5ffe611b6e45b2b8ff617ba541d7184f2930", +"T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "efa912893b7dc06358d6ed480cde3299d5c8631ffef0c668c74d75dc2a5b0d22", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "8cc5c92c3f86823c81d35f8e0b055eebf34754923ae45ac49e8236cebed14298", +"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "a8372bf706cab97b6d84aff86244e925f4c44f7465129911a3a3b167411faf6c", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "9d781814569d5f2dc039655224e3b2f8c482bb37bc2b60f9d0413e0951af1a43", +"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "ac1e279409f71826c066a3f29a94f6d40ea83d7e333365a16516aba82e8b7bbc", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "10747ec5fcebed3bbe33922668253463fd99252f742747e3ee87f6fb720b7c6f", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ac1e279409f71826c066a3f29a94f6d40ea83d7e333365a16516aba82e8b7bbc", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "ac1e279409f71826c066a3f29a94f6d40ea83d7e333365a16516aba82e8b7bbc", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "fafc9ceec83503bcddd3af7f6ac2f79795a6ef791650fb0c80149b49fce96daf", +"T3T1_de_test_msg_ping.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "a784cc68627c04881077ba8aed34445ddeff575592fcac19a3f9b76d68a6fb19", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "6a143782c193d40954931d5d9900b6bd03728073a1adb93fbc142664e54bd623", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "496ade768995ddbf8cfc70ef7c3fc70cadfe07a00c276baa72c3b45f0de35af7", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "e665ddeec83cc28313a8c360e4d144cc11d8812f101c0d545458ba468e096ef0", +"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "13548b484f56bda9b97f3955810e5e72a0620b240958eef9350e5b8b0d99856a", +"T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", +"T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", +"T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", +"T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", +"T3T1_de_test_pin.py::test_correct_pin": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "6c2b61ef1bbd8343f7ce10223d4cd22a798d0be44f926ff24f5444f34a998aae", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "7c6db43daeda61d5a54c37995e0bc4d153706c5b1e5fcbc5b1f5e619d5c690d2", +"T3T1_de_test_pin.py::test_no_protection": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_protection_levels.py::test_apply_settings": "2f8413a15a24688ddda4fbe39a620c082fc2a02343ab429e3818c1a4d1403c8a", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "a16c171bd209f8517ad7fd56426c6282f2471cdc56d5e654f9884f0eb0889fd7", +"T3T1_de_test_protection_levels.py::test_get_address": "2b4c74515f87a478098e1335d81c25516f2a6faf3fc2c641a1e5f534007c8cc3", +"T3T1_de_test_protection_levels.py::test_get_entropy": "1e76b7130718de4cd5f66cb7a2b057981a6f141ae67d9720738d4fc24e385ff1", +"T3T1_de_test_protection_levels.py::test_get_public_key": "2b4c74515f87a478098e1335d81c25516f2a6faf3fc2c641a1e5f534007c8cc3", +"T3T1_de_test_protection_levels.py::test_initialize": "6836d659e32914e10a0b604dbadff16dac8af3498fe925f5106b2ccdfb128766", +"T3T1_de_test_protection_levels.py::test_passphrase_cached": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "009d00009a990eeabb16c57312414da7e7e95a6f148d71af3a347ca1f9c7bab7", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f3e43cd6e3f9e7931233ab99f4d28a6ddbd618ae19e6be922c52ccc9019a6107", +"T3T1_de_test_protection_levels.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", +"T3T1_de_test_protection_levels.py::test_sign_message": "842ba90e419bf90081d100bd9a591d0de706f7c009ee6576ab6f97c431953d1f", +"T3T1_de_test_protection_levels.py::test_signtx": "be36983b17bbe727252ac7cd50d3e94af550e3ae8ce7d7a644bcd86a056b3a2c", +"T3T1_de_test_protection_levels.py::test_unlocked": "e0b95937966e70551fea9fd4550df72ab616b289148b19554baf1497ea8535d7", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "90bd4239aefa01c3411de89edb81fa7db6621a9c8a0a1219b5256fb5251244a9", +"T3T1_de_test_protection_levels.py::test_wipe_device": "bc49bc2398db10ab4427ae62ad40b8caf9685858ef78033b8c5b7bd1cb33ba0c", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "682ea9311e4a657e0ac708022c56d38e482117afadf2fcd3a65e37dbc34a1563", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "dcdfdb3e95a48d049c0fec2e9967386e259a3c98d7dd7e16373dd3250d9f26ad", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "285a51f9d31a21ff9a988696ddeb20f595b34df2a24c85f0e634c976e649c3b8", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "93dad854760b5eacbbef522c4280d2427dab3bcd8e9f474f72b042c0a82ea275", +"T3T1_de_test_sdcard.py::test_sd_format": "966a73c534aff7e9f9c13f1946517e82e14e9d032589a9d993e661cfafbf0bcf", +"T3T1_de_test_sdcard.py::test_sd_no_format": "123db9ec3d93ea61ca6543d432e153311358f3b62c4c4a6f9c116f1d4a3f6455", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "1ade1b6b6bff1f87618403af662e2d0501f39d0e87c6c7fd0cc7d1b4871c8b3b", +"T3T1_de_test_session.py::test_cannot_resume_ended_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_session.py::test_clear_session": "becb06b14fd05779d4f0cda828ab135b435275970713b8085b543296541475d5", +"T3T1_de_test_session.py::test_derive_cardano_empty_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_session.py::test_derive_cardano_running_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_session.py::test_end_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_session.py::test_end_session_only_current": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_session.py::test_session_recycling": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", +"T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "4dad740f196419b2ad1da1fca26008944e65e310e1f011afbb39fdfd20aa1bfa", +"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "2b5423c872ef285d12a9895c73595683d6ca72cb9f2368fec07bf9b7f8528a71", +"T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "de72c5e328f9971e0c72d082b9eb4014950df9c6d7269c6003d225add40ccc9f", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "104cd214edf99de7a26c659376166e8247bc1d205f63ef63cf3bc7ca2e1a2bf2", +"T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "cf5bae976cad736d6cee520bf8b5c8c7c7a0775a3a6a32b4609d6eabfbc3a2fe", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "ebebd751c01b13e111fa148e96bb1a091b5e416493a53d92f439586c1bb02b94", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "4f0a4c61653440ff4a916b1a2b2f3e846fae09d795550efcea6e70ef99b1972f", +"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6fbaec9f0136ef04374bc709ab3940bc0d74895e16cf7338d6a77b40f8d12fef", +"T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "77e570ab1eb2d498b8896bd3beff1350e522fbc035939e57300a209bf5feafd2", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d13ed8c06e93d53ec52f740580c63688432d60fa00bde7afc0e3a9060b8758ea", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "f6b2dfdb708c189e779bde5b30a628debe1803003f8e8b2a7cd5f0ede4f7e72a", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "cf70c477688bed0fb691985b92dce65e32c186efb438ad4cb91739a74ebb3dfd", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "6c399e3fa15ea50630cb2374ca1277aea44c5d6474537b6c1c60fa445c10361f", +"T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "f8002659698556d8ca34be9468feb71b642b0d679649022ac7d5f1853e19821a", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "7e861dff0079ffc02e522eefc96a01faac172a1b4da87b195a1c2ca8a50a2048", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "fe44e0aabaaa54d76152fcb356c79c8625ff7a0e54840f55aa00b9ade9d05300", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4d5ab8e2f9f4467f99b95f69565b78ef1cec8bc57d4decc630287d04a57cbb40", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "445877c6b171a3e45a0167ccfa61f8474e1487f9d9e9e814edaff365f8a8f27c", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "259cb384d7c9b3360c54eac6961b61c80b94583c05f5e46ce43ddb7b51d19518", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d1c7cccf3e2555d338a9dd0c007fde0754bd98b38db8a2115002e8bc18f27fa4", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "f87bb85a535190f2a94e0d75767c9c55dd17f2cad10105f838ece8fd7670e317", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "ec3c1f0f772711420948bc6910befacd5b2c3c1cff68d5fee5a3dd1c6b9c56a9", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "babf828217da7790f41f90618d4a998c43d7c6dab17dd0e1132b17a3bd60d81f", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "b1ac0ffb00c02cae073dea26b33958bf45e23e6752287edc3fd5fcda97fadbbd", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "48c95c62a849a8ce04a218f574856ca3d35e54f478b764b34bf3941e8374ef40", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e787f8ef4c14ddcdaae214d30f3499335d9cab6e2066b31a53d47858a407a7e1", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "fc619426393e344424721750988489067b17a7a85861bc2d7703053a1b99fa46", +"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "a66b0728f23397fe59b13bde88a9ee1cd8a666d67e6ba1fa5badcf6d32687584", +"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "cc390c818b6d060c4332672efdf119da5956e806978ad4b69a9e546b5385250f", +"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "d8ad3a1342be7012869fd40b9fe543aa528295a86e265d3aa1b5787afe36db93", +"T3T1_de_zcash-test_sign_tx.py::test_one_two": "7a8131e9b9b911369e62fe65c40e0859b81f403a5a57df513cc1b4908620742d", +"T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", +"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "ae6879612b6fbcb536dccdbc22fef035dabb570a70a769f0091f1a6020b37d1c", +"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "d9d88273009b340281ed71eaf24d314c2dbee24ceaeb25570c018266820ce1ea", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "3fe08b0975e669ffb712b317eae730db87b5b785a10335bf7e5fa6fac6156e21", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "722782a61953d393049192cb05346601a214658833c5e51a0fb04db5646be461", +"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "7672ecd6c877a8eb571c82bb07360a6e823e18e4640f6b5e74a71017b66d0fd4", +"T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "910bd18971e73c5192c9fd442c4ccb7f700d1178c778c1b214d3882d6451ba24", +"T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "eee28333f3f0a427906b6407b4b469f72963fa5b8a506accb388a0fec0274add", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "fc1a1d0ec1812df00840ab18e3f6e633f9fb03cd7637a229670473a1baae1933", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "6d574f6b41535ef66e41552f031375798ecda7b17b9b9d3ac6afaf842d70c581", +"T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "7953161210bd9e319ee745f0328924b2dc852656a116e40b12cc8d04a76b0d76", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4a72c94add77a970ddbe515e4a29bee12761fe70fa4aeecbe729b2f4d53e71c9", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "9299697ba1cf7df6ae9e0f9fdc94983c2bc51813dbe72db41888e22a7e42df9f", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "0c7751234f6b5f22e968c99e93b0cbaeed7e5b81321068685f7fdd9848ebe6fc", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "4a72c94add77a970ddbe515e4a29bee12761fe70fa4aeecbe729b2f4d53e71c9", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "9299697ba1cf7df6ae9e0f9fdc94983c2bc51813dbe72db41888e22a7e42df9f", +"T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "0c7751234f6b5f22e968c99e93b0cbaeed7e5b81321068685f7fdd9848ebe6fc", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "213cccbc964ee361b902e1bc4a6eae9594c0de7ed6645bd62249150f1528d82e", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "672c577d3649ad1a8e58a4b988056da6e4af8739b3e9bb9c820f5ea52d9b13c5", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7ac50950de855c9b70dbbe07f76c726a76fae6f21411c929dabe0eff223510b1", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "163ac3af44cb42bce9f768c18ff371ac6a04ecddfae2f45b8261683b9238c90e", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "774f161fdfb27270bb0d563fd4619c6105fcd3db608967ea6178ff33fc20d8ef", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "774f161fdfb27270bb0d563fd4619c6105fcd3db608967ea6178ff33fc20d8ef", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "43d40d4e791b00ed7c36eb2e76aca3234fdf30e8b8874d201017b7187c8cae19", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "3d66920b0f4105ea7d0b18ae0746cb9fe07ed277059e74d272963b95138d9038", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "15b404555dc250a215a233eeddce25de6d3ecd8f6b37d2eaaa8334c7690f9ab7", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0bbd7646285100d50de4be4c6986016e84c00b080278f0293c4658978dbb17b4", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "0bbd7646285100d50de4be4c6986016e84c00b080278f0293c4658978dbb17b4", +"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "4fa2fd90c03b850a855d41f0f4e7b4c45bfa67ee53ee313766fb76f1d3777bfe", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "4fa2fd90c03b850a855d41f0f4e7b4c45bfa67ee53ee313766fb76f1d3777bfe", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d5422e52d1fc4ff5ed65f6213153b7a9ba8525224ac4c3e7f24edc0e85725b3c", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "aff99f2563d3a11bf546ac6f526b7c45649007bb5fe2aea0dc381ded35ccff9e", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "dad654b41fe915c1cda7addc404817a2c28a554b0eb9ff6c0b0961f21be8b204", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "962c37bda79bb00edfce56793fb3e750d6075290de8f91349ee33e12413be590", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a1ad2b363967a2452684fbd72b9d2e1ca3244cf361f506455c3b30902a1e9db9", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "3a74d5f81e9caf44a9ed7b7c6380326b28c228d7ce79ec95dc47c41b1d57897e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f77b05ca2d18406e035ae08be1bda18f34696a0613e15b933d622fabe5cd03f2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "2326c233db14d8b0d5a1e6dd972256cf1fdf5abf03b26aed534e541d25d8c161", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "43f06e65075a4f6067b2dd4b91388010ddedb5d162a05e6d55fb86e885e1e293", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "88201481aa2f2b8f68f812db7078c1c19cfe8a69af3b93219b47e85212cc5b5c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "f7278cdaece74f5da4f5f6dabff34f6d17bc6da390857339206ae5a76d5cef6c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "866bc386a45b26b2ca91883c5c0dd1e3be8fb3d64033a9ca01489c1dcca64b4f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "ad08000c63c1cc20b7803213671e1df559d4a42653ec58490534a7ecabd56c1f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "98d7649b4b067cc6ac0f6db4ad4e664ef883838003b7a2e9a80d31d2629ce628", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "4b10cf2513ff20433ceceaab58e105a7afd9a75b1468eb4b2f73572069fb4cb6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "3fdb234bcfd51686ef9980ffc08beca6d6ecb4c9a78efc38ab13de57c4d3db90", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "3ade8df479d0c1fff259ecafb2534f524f79c7bfe0255405bbd6b412c031c971", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "eb97c3ccd4291a4c17f311104a7b987460f90e185f1c914537b6a9bcf40d1d36", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "9f783c3c08efc34d327de95f2cafc6943faecf7b04292b5c27c1382885d6c026", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "14ad30345772c30806ee2083315bc6d6af6df047f8a6f50192e95cc38a4d7244", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "543d29927acdcbca51880417f4c0f79d66acdc4f8d2940eefa44d49bf1270d90", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "1273567357341bb168e1165ea6446e7b01218b29ef7d5acb302e772a3eb1ef4b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "2cd1d17e6647c4625d1ff911f1707397274ba5c4adfeb8d4e54cc1fcfb8d78b6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "3a74d5f81e9caf44a9ed7b7c6380326b28c228d7ce79ec95dc47c41b1d57897e", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f77b05ca2d18406e035ae08be1bda18f34696a0613e15b933d622fabe5cd03f2", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "2326c233db14d8b0d5a1e6dd972256cf1fdf5abf03b26aed534e541d25d8c161", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "43f06e65075a4f6067b2dd4b91388010ddedb5d162a05e6d55fb86e885e1e293", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "88201481aa2f2b8f68f812db7078c1c19cfe8a69af3b93219b47e85212cc5b5c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "f7278cdaece74f5da4f5f6dabff34f6d17bc6da390857339206ae5a76d5cef6c", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "866bc386a45b26b2ca91883c5c0dd1e3be8fb3d64033a9ca01489c1dcca64b4f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "ad08000c63c1cc20b7803213671e1df559d4a42653ec58490534a7ecabd56c1f", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "98d7649b4b067cc6ac0f6db4ad4e664ef883838003b7a2e9a80d31d2629ce628", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "4b10cf2513ff20433ceceaab58e105a7afd9a75b1468eb4b2f73572069fb4cb6", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "3fdb234bcfd51686ef9980ffc08beca6d6ecb4c9a78efc38ab13de57c4d3db90", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "3ade8df479d0c1fff259ecafb2534f524f79c7bfe0255405bbd6b412c031c971", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "eb97c3ccd4291a4c17f311104a7b987460f90e185f1c914537b6a9bcf40d1d36", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "9f783c3c08efc34d327de95f2cafc6943faecf7b04292b5c27c1382885d6c026", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "14ad30345772c30806ee2083315bc6d6af6df047f8a6f50192e95cc38a4d7244", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "543d29927acdcbca51880417f4c0f79d66acdc4f8d2940eefa44d49bf1270d90", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "1273567357341bb168e1165ea6446e7b01218b29ef7d5acb302e772a3eb1ef4b", +"T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "2cd1d17e6647c4625d1ff911f1707397274ba5c4adfeb8d4e54cc1fcfb8d78b6", +"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "3681bf8c89e62d135ee9c59f00893e70aae239e3c209d3deaf0462f836320f82", +"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "85066d069049d0d11554fb08dc5cb18abfaf1156a8663c5c6a537b2d85d4a90e", +"T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_bch": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "17e591b575aa2a6ef7fa4b5c88a4285bad2df6bd44898ee845fa42f1b1b55785", +"T3T1_en_bitcoin-test_getaddress.py::test_btc": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_crw": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_elements": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_grs": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_ltc": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "99adca92891444fc82643cf775cd2508c217286bba04d7136ff96c73c2cb1c27", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "6c556ba16ce5ed9ed4333f14409ff480144b45e7343952657748d7890ac09b94", +"T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "a70b0f118a986f27520f53d9fc87e65d6f14f6bb782333cd6285e2d7f667d395", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "80a10414546a612b4ffaae17ce4f713b0b66d6e5e310c961b05a7d353ed06f44", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "deb2f695d342f7c0e9439d1d43f2367ea9e8ef1bf2fe178250183aaea545e676", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "9926abb9332a6eaac41b4996c5ebd536d2a357bf0a46c4d632b6d13151c2d25a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "b413c1995d05a38c44032ca0b96ce7445e64e5a3a30dd7e1dc4526ac46e281cc", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "1e0656340d1a8813d433af74fccb8a4537908e2ebeac115131e8385c84ec0448", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "da06a15ba1052812f4a2791499467356c717e01c38ad5c11ee1bf7ad75c47e79", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "dae3fb911aa338cdb71ff8aaedf8944984c9dd1b98b020b4721dc68ba510f42d", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "56bb36420379fe100f93d287bb6bd69c00b7d47664d9b76ec3f47043c8c74a63", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "9b8e7bbacca5bc46c0266bbd173c336a6ff1546407bb69f4b5c14254d94a877e", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "239c5bc7b0fa0b5c1c844d3f709bf1d304e762ee9f8362c30a9ac7ae80f7f144", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "c27fdc96796fd1029b1f556a05c37fdd4f71a5b0834403fe8c1b92a944a5c703", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "75575e9ed7c67b5a003b598fdcf306fd7d0988411df108a875eee5bd91cadef0", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "6e32f48b714f129904b91270d6acc7f7296d7e5099371197e00e682b07984f00", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "4319905e58b4ef1bcb94f6de089b1b97a21f0f75f62bc4fb36c4154d208a86cf", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "033f065067871a2ee62c013ea4e4e6ac93d5b8b95685cf525966d3c70aeee980", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a699e4279f14abe1f3d895111cb5918d7377b6e68635c7338a8b9054fa2fa97d", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "bd8e835783b36a26ae5f2b929b5c4d8b2546cedff22f7322b3b3766b520108af", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "0bb96c75cb2e72eec300fdca1f532516ed34af9e5b262c455a580569070832c8", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "8aba3e0ff7713713ff58ece9d39592436825cf8235cb6c5e5ec8b0ecd0d8c91e", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "7d2c63571dc700907befe1d3177b3ce5c212508bdf15dde131cbb244db0e2dfc", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "597c1388095a1fc258c3412ada980a8f3ba06f2e03052e1da73802e09e087f07", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "35a9236ed63ee4a5cc28d83d7e800cc37f529d4b84b3b9181e3f26409986e961", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "ed0bda441818b86edeb6f1ffb77254604d4fa28963742269c3bc33a94e334ca0", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "732ec5ddb576a3ac17f0db9a72ca5e3b52d3952280e7cd4d38db13262c291d75", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "732ec5ddb576a3ac17f0db9a72ca5e3b52d3952280e7cd4d38db13262c291d75", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "2ec243233783d4a29c46600700270ca69f48613656f208cfb92db73591acd8dc", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "cc13d0a6feb33a18099f250182740e9accadf3a0d782edd5516258145bb3883d", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c1ef75ba27231de49a2c536617c192e054f3680ad0bcb0e2b51ca236da64eec3", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "f49f59895fc07f3b45839a144129b28ebf337e7014b6a9a9b1338b084a07a9e8", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5dce68160a75682417daff0c80871691a43d8fc4144e901f75b21401c204daa5", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "8d494805eb068f5d5db028ef69044edd1c7fcb75e7bdec603fe46c8a7db5ea20", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ed7ab1d4e6f561d414fb8e2ee5962015750c5c5a4cb362e13ec4ca7200ae83c3", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "bd8d7b809d129fad49bf1574e39461a654a64bc0f6c9d5e92097e6d7bffc464b", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d3663a25de91063a0a64e315627fd187622355cc619bbdedd6badf593ef777cd", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "3e7e43e45eed9097cb46fc25439845832b8d3ccb15661abca2182c2c50480e99", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "97b0161e0a3a81c4f9353ac5219736ac91738d68745cd10b646e4afac2140560", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "6d5db4455b38c01e6f823617bb451ec1dd43449c7cbab3ab6a4735e0cfdf834d", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "8d2b8d06f6f239c5c11e64140db451b50cdee0b0a1cccb9efa10a1880e0cd423", +"T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "20805c4dd838603d9cf1e8a5466f4217848c81029ece0fc92cb9f9a3b9d34f98", +"T3T1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f77b05ca2d18406e035ae08be1bda18f34696a0613e15b933d622fabe5cd03f2", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "1e601059310fdae2182ac7883b2e889f343d0e679c12bfe5a946a17b3b2c13ed", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "51927fc3c81aac557a25bf75cc9fc83f967f4818bb1e2d348591560a430c4c2a", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "8afc20f547a9e0ecbaa9bffb0c2f9d47136f0e3bd3a747f08953776bdded0358", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "c37722668522fc2317332a3b6e625108da0245e10cbe0fcd296254353e651d07", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3944998d35438f6d4322a91dd57620f209d652472bb4c7d041476af57303ff06", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "6603b349ca45b2f7009ebbc962d0805d4aee7126b02874616b003208ef70e396", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "5fd30b940609c1c041ea3337fd9bce2cd77ade6a3b85d5b21e0b40af88795142", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "4bcd119c8f18dd5ed2fa2db467f75e52972e4a6d57c4badd3eb1051297804662", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3fdb234bcfd51686ef9980ffc08beca6d6ecb4c9a78efc38ab13de57c4d3db90", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "96063d6f25be8825f89e14408a87bdb99e8d0c87478a72f30704aa7b9b24c115", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey.py::test_slip25_path": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_grs.py::test_legacy": "744079e52a133e99ed12becda80646b5fa0113cef68d8116e4686d022182d0f0", +"T3T1_en_bitcoin-test_grs.py::test_legacy_change": "a1b082134e1386faf28835ed61893ba2a5c291ed0bedfbb8676fd84a58c8148c", +"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "f48758568bbf80529e8822ce42abac0f70a959e164de5288da3a5d0670d608d3", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "4df8e0be4eab19d835237c6d470b588ce37ba8e883af6534ca8a6fa205b79eca", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "fe54a5e6e4249056e30fd1f2087945362d5dd0b233e83d428a5796c0faaaf3ab", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "670a67685bd20c9f681643c9dd762df4a0d1f3d9e1c70100499682ca8d1b4ca0", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "66dcaf6994aa3a508ea36b9e669fc94aef512ded7c1e44974c95f05f6837eb12", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "5e51043c8bf1c49baae597a36ce2174d4c7d5ed85df3588f413811e2ab5f8d79", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "bed59f5d4d9ea4e2baa226644e842455a65bba71804fd856875cd895e61d887d", +"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "b529b3ee35f202931b7037ab8d551e52db6728488b0888ffde8ed975ec0e93eb", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "4814f551e4c88411776fac91d923158db488d0631cfffd43f47dcb2c681114fe", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "96c81495800eae83cf9ed97754b6b983e67bd5b58933e12240c589dbb10684a0", +"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "f3adca3edd5f6e75244d8ebb14c0964abaecba0b60b6ca4bb4608d095770943b", +"T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "479e973cc476f578200c0b2858331930fbe580654ef1299dc13ead4ebc63b94b", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "8c419d46539d7ef8b0ad77d78df8be051fab1df9b051d44e496af0e6b8f6c6df", +"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "b0af422ecd9feddccda735724f7921fc3d39c8052497bc43a056f52ccce913dd", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "9a5c60cfe2ce0e4c0c6bc280c01bdc76f2c56608d78068a3434de5324712383a", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2e3624efd9f72d19539e9104113d3d80f3ab6e6ac2649fdc7b614babc1172a94", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "2037e440b7b46f0f8f3632e22490f82aac87721101987f716e0aed6a0d022450", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "7eeee62f2fb9a7b18a62d2a2cc5ca9cb2774419fb191087474ceb8ac55a1bcb6", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8f0cded41850fb6b9201fe09b0013af3091cb48ad832ae7d8260ed07b92d1d2a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "509a1501d98e080233a020e71e1eabb8a790c2af518afca0d36db73911a4efd6", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "34d486b171bfd4419ea2faec7104253f4546869b453fce2285572016ac34b6fb", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "5ecb4f67613e567b5c86ba4e89fb4755e3d30c66540e8745d8fb36975b31b509", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "4090ab43c6209951f0b75e380b0f3fdb354abea467f9d27726e11688c1018a4a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "b14cc7ee1f45a61dd739191366739874ec8a7389549b64bdfc1fa43d5165524d", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "359bb21bcf87dc487d7321de7c55b85975688bd2119df9912688b7dfb586cfea", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "d315c6d7f56e669440d9ede29253ae3ee626b939ba3d4137f402d57b02619592", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "e43ffb2af18eabc1a3093017683cf6783410a14ed2525acf01cdabced44e7e7b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "818d1d577578feb38a92d07e50b566785b14a2835386b1204dcbfae1b0f4eae0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "beb77a2fe61e2f3c1a297c22ce1ed14c8a90ff4acf06a2467e4154e20c357a28", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "d9f8ced5b3922d4dfd3c970b7e7aaefaeaa4a4a0bf2d998c3da630929fee4ee4", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "de907298f431b878f75e0c29f3f3803e49dc31c968af33d1a6589b2eea1e3388", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "ac32f2ad1a8e1a343196c57a29ad2f17e7378b304cea499cdecbe8d804311bb0", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "aa130a633150e8961fef0d74ecc985fbd53263300c9ae828d66eddcb868f256b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a1038bbc186820a99b2f401386994b2a0eea6751df19535a959b808f3025b458", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "06c074ba5d3795b9d7e155e19bcb8b6e7be12835cb236c207fdec6d522203728", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "c77dbbd6ca8e285b7bc16e8b6f9292fad0f444e63472ab39cb3b8f37f2840683", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "b921f69566212cf52bc8df373e5778107dbec7571b38e48c9ac0104b2aeea932", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "29f5cc1b4b0d2014708946669dc0bdee431c0ec9a504c3c89b23d6e0f7fdcb91", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "31632187b03f7befb305dd0a3846b0b6d29b39296764126cf38e882858c985e7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "35b4d02dc4b994e43627613bdb8ae2bba3436d49a7a73f06b608a0440d0ea3d1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "5d1753beeab44ee454f7d31bd8a6b1d839de5ede64d67967f5f805d981260c3f", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "3ffa6f6d26d8ab2c009d0d47e44823dd8f715938495236ddc8530f89f559450d", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "72b3d8ef891b9a5efb2dbedde2e27285573a8e9efb5fe97f1a9b47d6bd7e03d5", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "cb385c338e8785ca01b3fa6d2d4bf07aae979eae72b185ca6b001ac6681a11e3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "09562c29ecd51129f30ec2323aa7d3232b265bb156e446f6ad47d781a3fba13c", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "ef0a7c3192a140f4b27541f192d102c941a1935c37c4b01ecb804d77769bc584", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "c8bbeb18bf0c59a8c32904d8f9bc6388937db244a1fc787c14e1c7405eb41e45", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "615019059a747904b9682f447c4a5a25bd3e8557fbfb22f2696e702c6283ae3a", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4bf731858ab16cb6850dfeebb253f5e6278b4fc7db2dda8f0d18d9ff645d8d00", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "4f8b089a6d0eedc4a8aaf215d31af84dacd39b3049b694506bb353bb89a80123", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "a573c22520c198500ab4fd206979d0a7d7acb3ae2d43cf7f3d2ee1b785701f24", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "4bf731858ab16cb6850dfeebb253f5e6278b4fc7db2dda8f0d18d9ff645d8d00", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4bf731858ab16cb6850dfeebb253f5e6278b4fc7db2dda8f0d18d9ff645d8d00", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "4bf731858ab16cb6850dfeebb253f5e6278b4fc7db2dda8f0d18d9ff645d8d00", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "adb1835ae42854c6ced18eb7c9214a26adc591b99d1452704277019e827e1198", +"T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "990a81b1d0d6dbbbe0fca15b44c376fd917585d55b8a426113051b8612cb0976", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "35e809eaff07d9246da766f2f920035b02e5ad5d8a01a71c70ec3523e7db60c9", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "03d5e2b3276b7d78f04704fc1251d05c944ab18e058a656414bbe91f80971990", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7d87eb953219034f889fb2e204146c367ba64387db63abd771b0ce7f23947da4", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7d87eb953219034f889fb2e204146c367ba64387db63abd771b0ce7f23947da4", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "dcb567350c5fc59b9bb3e2bcc214cfe32854392ab6cf8e79991b1adbace96e19", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "6366d541b9224248a6398541055ba4fd53a5793af8fa53a6bd74693ea5a74b84", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "844859897a57f9d3387f173b5e460de11369031f699d456744ef89b405c1e110", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "b0d87f6fcf17ce429bd8628df95773a80a2cc1f1c76520b943de610eaf693f53", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "5c6ecb60bf445f3fea53324aa7aadad2cf802e989a53855c714a4b0f4be52ae0", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "e7dd6ad33d329e0064ae1b9aacc9b8d3e61952accd207b7169e370b47844f13c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "e7dd6ad33d329e0064ae1b9aacc9b8d3e61952accd207b7169e370b47844f13c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d47cc8735f2d17caf60558c1f176ac7a16be963a50172a571a7e931eae6af7d1", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "e9b19a3c8074079d0cb31f2fd6e9d305d2ff9c777eb04c7d4ad6b7e0a455a3a5", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "92410a37712e3302f4442c7e9b95383128d8bad67d646853958368d9abce5bc4", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "92410a37712e3302f4442c7e9b95383128d8bad67d646853958368d9abce5bc4", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "aedd0e3106cf6fb2083d979e13efe25c616b4550ad4acc01d6d672c24606f5f6", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "9383fbcc5505863bcfdba621e2f896a84c14de3944e9a713e15a02aa62682600", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "a4ca2337a87a74278b6a2029fdfe5d71bbdb212f14429bba6732265a0c49da59", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a4ca2337a87a74278b6a2029fdfe5d71bbdb212f14429bba6732265a0c49da59", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "0fbaab67ba85c45a96fbde1b65467d31bd2bba9b31ee906b2a2a7ced74974172", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "586e34212ea2bcf7aa81b45228d95bc08dbc03dc9754bfd1718afb7e39639dcd", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "4beea59a13f397a3b03b07b92dd72cb96f3fb17ec8ef7d685ea278e8f72392c5", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "db5b29882b0fe10199ff86c360ec63a74d046eb8622c21678aa7ef9f0b420e21", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "72a37ede5785411b2c2ea3c8f4768cc805d0448414c5949d072a508861961a0c", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "59daa8670ed9a3d0e4ec994f288dbc70bf4d67c4be501eadea9e2e95d0e32128", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "646316b739741f41f4e80e8cc7195169182881e5869b723b5ebd07f0c8ee33a7", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "9519951339bcc6f92a13c88d2ec60e04501dd66acae9dd191117900fbdb3bd0a", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "825b4d508e3f4954203a7ebeef72c4c6750481934c5a395fab5417c7ccf01432", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "93e2f9c06fa6e78f4efd5a0fa486ce22a105d2565b7681abc925e15f608d1f72", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "df7c2e09b3281d1bd04e3f7de00a9bc2d1edf1093e47f4bfc1061dd31882d7ae", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "d45a55805aa6fcd8d193a31d91a6cce23bab189a8664a990015e2bfb3d198fbc", +"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "b116b47a0fe82e4e8f361c75ce58ce5a708e4e8e1d00bff257dcd02d720bf486", +"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "b116b47a0fe82e4e8f361c75ce58ce5a708e4e8e1d00bff257dcd02d720bf486", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "6a1b799556a65f9e9d8041442b8557f78d44577aef202da11e41256db24b6850", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "df5299bacb5c2c32ec65dffbe117ecd6cce1ba217a28cb494822e448e3ec416e", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx.py::test_information": "467186e3a17e4e3d05ec4c2989ea3a2703f8a7e878982564a0c300ab0aacb757", +"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "6157fb187b913fad0af5fc1875b41fc288b234c85039ca8043dafe6232e68afd", +"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "e54aa73515296a4be869f45debb2ab19d98333f32f8368d6e03aaff9065ccd88", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "174cb49b53c0fdf223b20b24164e3abfe2bcf1265ce86a37e24950b531a71b55", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "3b6b8533b3f970073004b07d3aa7b10e46b5faf814753878685364720f37ad4c", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "c57bfd7e24e0c1adf47fdb4353dec2ce6cf2dd392beb6c2b4a6a229b3c3f6dec", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "3b6b8533b3f970073004b07d3aa7b10e46b5faf814753878685364720f37ad4c", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "c57bfd7e24e0c1adf47fdb4353dec2ce6cf2dd392beb6c2b4a6a229b3c3f6dec", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "812740e91a1b6c0aab6af4716c41cc24dfa9625ab953ac40a790892b2246bd02", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "747af47ffe8c46538065b09d5767005db2e3173c9dcdad02e770e30fb4234933", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "f5545c194a712ec4ee6501bfd49f9ed10af20d41b4bc8dd90b0884d079f2b84c", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "91ec84cf23a51127b176d4d674826a3863c5af0ae6ccb6bffd49be01354d13f6", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "1878f296db4bf6dee99aa7d22d15a844add741845f62c38b976a12291c8389ee", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "8793c7d265e95886f8b72655f0a4e4f438043acf5a62f5179f6a0c5cd9827862", +"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "cdb09429c22da7af5c263c7523f53f0ff929ac0fa859cda85f03e5cbf7d87173", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "15cf3c2dfa3868f9d74244cb6c89265e7e25cebd1357710fd1727b18768a3efb", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "2f6e693e3cf3aef42098c3f46c7ad5060fb056bfeb72cb2ec880e6b43d92ed52", +"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "1cff0fb8c6a278ba63f55ef49285fbb8df7633f2a6963fb4ccc1f838670b692d", +"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "8117ea9996e0af1fa20671bc6c344d81044f80b6ad6faf07bf8574d0fc47527c", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "dd0a915fb8d2763c1419d1fef4102f57a7b16086e3ccd9fda85a5bc7109b3642", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "ab9e3843b55b6dc3c3916efadf8fe4cd7598a1836d9d10e5aa6d6ee67970c72f", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "b9c97a09e3fbc07d4dd4646eabf8b8169adf5c57c1de485fe74cc0ebfaa6af65", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "b116b47a0fe82e4e8f361c75ce58ce5a708e4e8e1d00bff257dcd02d720bf486", +"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "f1d80d72ce9a400a835aca8bd54042ea6407208176c8b0609372c31a91e2f491", +"T3T1_en_bitcoin-test_signtx.py::test_two_two": "8acda1700e6e7e09405b99eff4598ff342511cbca27380dec1c4e2472b44af25", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "cdb09429c22da7af5c263c7523f53f0ff929ac0fa859cda85f03e5cbf7d87173", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "5de8c4a80afbc228a08a73db63f269ce51b783984ceda8b66b6f799e14d4f252", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "6824fbea055bdc7ca73e8261ca8fac5b7509bd704f656f96de32c52486eafd55", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1447cbdfb3e22eea65d91400edec7c5cedd9efed087601b661f80d31b215392e", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "cdb09429c22da7af5c263c7523f53f0ff929ac0fa859cda85f03e5cbf7d87173", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "00ff7313bc260796b5ce4d57e82b2a29b9a1102baed4a4ac4bf418a86d04f0e6", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "3b7e32a490812c0b95ae7849d58bd4590d32adb26d423f77f7e48b93244921fa", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d3fd7d15e94193ee08e4669f8a540ef47a304deb62a193e733d1899b02632130", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "89231e6e8746d48c59f076a4295c9efcbe383f4061649563e0333889c05fed6e", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "00ff7313bc260796b5ce4d57e82b2a29b9a1102baed4a4ac4bf418a86d04f0e6", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "dce1c2c35859d2611270ee38fc4c2716cd59cc9a8889e74b0f92b1e7afc21710", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "511fac9c12e89f68d560029730da1eacadeaab96200b4f2fad19067ef8dcffd4", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "18fdcfc3daf5c4447e953dcb2b8a0dee38907f6831786d80ca7f43c265edbd9d", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "1797841709dc6f4a6fb0c2fdac60164d794004881af9ec934df83d0383415f48", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "b6cf0a22fd448146be056187e2eb2241776367242be6dde66242f669fa26a655", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "04d0fb58710713aa5327e682e33f96ecf0665d2a2c158288d0cf657ca7e0be84", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ef2152a00a5ea9a0e82acca3c6fce63c809e0b52593dd461e6ff7c7409f23d83", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "76c1ee09b80c6f4941e0d1f3f5e5b94e430f31e59bbcee3106ec1d683495fe63", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "f475b3631ec42114401baa41726cc73b571eab4627dc83dd5e771a2ee2c8f68f", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "f8598e0bbf1b9335e8714dcf5eb4fd14ab36d23cafd19ef0f49dd731a1e58e8d", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "99f4d0dc847d34511079d6b7f82e35ef47c13d66c095c8708b66534ecb26fc3f", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "add494e760f0553f4d5b14c15dff4219c661ab425ae677dc141d9a8f0034d284", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "b32b4184a215f7ca38e6ea7eb8d8eb4adc6dc2436337ff4bcbdb0827431ef6c2", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "fc49c8bfd389abb6d37da50ae67a2635760b001cc1f2b2bf022b9ac3ecf46f2a", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "b32b4184a215f7ca38e6ea7eb8d8eb4adc6dc2436337ff4bcbdb0827431ef6c2", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "fc49c8bfd389abb6d37da50ae67a2635760b001cc1f2b2bf022b9ac3ecf46f2a", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "847b5e8b3cd25c9758d4030217a269bdc9421d52bd5700cccc554069f54870d3", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "bc865d3b26056ef4818aa25972dec39be3afcae4d07cb2e21acfbcd755497a89", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5ce50ab296880aa4dcaa7d35b17a8945b4694db084792b4a8171eb05ad4d8496", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "e33d37fe698460f436887e0fc849982aeb07c1e6e99652c7cdbb72a5de5a1d7b", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a403d98952513d135ec9ddc5d25eba73c59cdd137b0aedf37e167592f57bdb7f", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "708528f02d39930fc25ea33f58cfa426c9cff073d229019d0ce483e853c28681", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "0d203af06b432ba406898844e69334dcd4a209209a55b21a2c6b6e8375b968b8", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "131f4c296ae77d4d4a78f218f75968479166d34778232577e0d4602ed4b3b712", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "5b09c8b2e60b95b59c1f3fa3a6bac69811ca51e746d176aefc832b28dd872592", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "5b09c8b2e60b95b59c1f3fa3a6bac69811ca51e746d176aefc832b28dd872592", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "5b09c8b2e60b95b59c1f3fa3a6bac69811ca51e746d176aefc832b28dd872592", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5b09c8b2e60b95b59c1f3fa3a6bac69811ca51e746d176aefc832b28dd872592", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "2be217e937c73e2c5471bcea7a2de98fe788beba97f390d48db7feef43a0ae08", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "2be217e937c73e2c5471bcea7a2de98fe788beba97f390d48db7feef43a0ae08", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "2be217e937c73e2c5471bcea7a2de98fe788beba97f390d48db7feef43a0ae08", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2be217e937c73e2c5471bcea7a2de98fe788beba97f390d48db7feef43a0ae08", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "e925c0988b85c93ecb33493a7f87144ef95642c48bbd16ad20f4822989561441", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "7b39905154071a44bb91a7816b84b0e107836ee10be9880789a5fcc5cdf476b2", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "ca7b1b9ad18fa24f7a3b8b43a920c2a13d84a68c41897db28b2ea3539a16f8ad", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "ca7b1b9ad18fa24f7a3b8b43a920c2a13d84a68c41897db28b2ea3539a16f8ad", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "149063917fa17ca824f93d97290b67aa9a96ccdc7e9e1fa81c95b4215c2bff6f", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "a6ccb1b350d88ea238f952747bc340417b969ea7ffbdde16fc2738bb47f54975", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "fe8eb5627fdaff779bdc8450fb33302ea944f94ed7c42844a8fdde59de001e54", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "149063917fa17ca824f93d97290b67aa9a96ccdc7e9e1fa81c95b4215c2bff6f", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "6471e075f48c035d0904186921848f6ca71ecb73a4c4913fc1dcc1234c4fa3dd", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "a7e75619020cbfa2ef1c309c96376c0071bf674f915618aca0f3e57e13e302b1", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "a7e75619020cbfa2ef1c309c96376c0071bf674f915618aca0f3e57e13e302b1", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "a7e75619020cbfa2ef1c309c96376c0071bf674f915618aca0f3e57e13e302b1", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "678432c31d98b38ce0c68ae65012b538c66e8140f54e9a67e3ba730042f65a61", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "a7e75619020cbfa2ef1c309c96376c0071bf674f915618aca0f3e57e13e302b1", +"T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "91567ba34d1aeb925d26973e22fc89f2584756ae509f85713f9938d4e6a06fe8", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "752935d6bde196d17f82c724db8eee88fdb663e37a9fade7716217936bcae614", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "f960c45ff55f058e6c4be0133f23d3cc48f8be38e93e3aadeaabfe83c51a129a", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "9471d13642f6f1a2f8098399392becd5b28b9e2cdb4b39c921af2abfbd874aca", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f4c2608a2e77a4f9fe5398ad9eb3e4278eaa659d90dd577efd96746e82e2aef5", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "2418d5af6a06def7414744838228546dd93d3efa6d913d8f52bf075bff3609dc", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e10ef6f179faea5fd50117352679573bcebbd07736f2c50e4770a956b72f9064", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "76fe2f38612be8522a80e2a008540bc63cef4382077479adcebf4ed6e8c91119", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "f0c19b6eed37e06342124f45045583c262c00e0e3b686e31995d2bafb554f61b", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "ab3138fbac4b1a5fbde523452a5b878071f5cf7e605d9a50203a98259ebf70c0", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "277e135244a3bebdcacfdd0cd8f3279fa42e9284211b45e8fb7fc75772d4c649", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "b6221e7f9231428ce8fede6e5b18677a3a83190207f18bac726bdfe23cd2859d", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "2718c5bc86ad2a133e96218eb40ba3ae78fc10445220645bdd8d577a6e66886e", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "8bde2dc8036fa36f926e41781c1f1d316ce5fdf77df8fa36ea9028437349b3cf", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "00ff7313bc260796b5ce4d57e82b2a29b9a1102baed4a4ac4bf418a86d04f0e6", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "b45686268cb54daa04f4cc8436c902d02a578e7439e67058a445bf708efe7e27", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a5a43d1642a7eb48172164d798bb1a170d63500ae9bcbe8467bf34e3ec42378e", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5cfe74eeb6e447e577e30ee62b08078052d1ccdf81d2a9db2b45af1cda268037", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a9dc697752bcba3e42df379466bf4890bf08950c2a81d80069e2750d4c1a6d65", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "a160ee2be8a4f80609c058ebb698e5de9ef23fb68fa6d5cebb14ad6778dce111", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "26448d496053fdef7ad12fc4bb976137f1d1f3feeb7c5284f6f6facbd5bfb59d", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "010d25e7b2d78180bf8db8a4fb6db006650c0c377f5ebf33346c5d7c887f31f8", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "b6a530c200bd6bea0216807dd948221d346a546414ce466dd8669e02ec676d52", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "059af6f571281b9aab475311bbdbf7b6b4f0645f14f1dcbbe8acd5e2ba9d2897", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "f867f9be49dd59215512a2ebd9d4027c0af8c3bd7c0af44ce129331d84fccebb", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "ec5900f75ee8be88c5c3da133ac1f2f71f6085ca19d9e60c7f94349372e3b626", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "b42b4053e7dfae91d8fceda38b64dd47ef8c66c661f72031e45a0f0fad4e0309", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "09b56c382bf64e542d8d4558bcf298a225007ce921792460032c6c8aadd4f3eb", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "01f281ea61bb46e25ecdd85b39ae44bc84e99c3fcabb8b05a361870994132741", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "ea78a829fdfd25f9033583ea42df9e9b078f99b3175b8f66b7e28dfe32b7cb99", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "06d817fc17a70020c335096b9aa6f56aa126fedce77237e5c223a66c960d089b", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "c5380a33de3eb47abd2c55495be97fd5d9cf31b7a6c2deba3b96451c6ab979a1", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "03d31955a951caeffafd80b998370725dbb1d7c6580e9284884f426a1ea0909c", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "6ca2c2097728581e5871aaf2a3d2e8c20479c242247b7a05d1bd559251eff770", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ecce49fa4a06f9ac2c57d5449814f583db925c679a1a18dfd3a92c7ea5032e2e", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "7903093c79948dbb7c8e19bf845d68f509edc673189ad28c64e3ca44b4c105f8", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "9e57c0c90fa44bcbdd3ef33b80cd91e843d5eeab8799efa4d4edf9b469b60397", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "081457ab2943e9cd8ea47c11762347f2574ca830c742c05a932e5b2f6a3c26eb", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "dc1855315e8d72a146fe88fb92a86e7be24beb180f9d0d36615693d0e10c9e06", +"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "d10c0dde0959add46d266575b6516ae1848889297ba3fed412f4fa4ae84266ab", +"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "8da9a05abc31d586ccb6c0ce71207c338b034803584bfc9d355bb5e8f0d237ee", +"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "4f76feaccfcf726e941df55c7285ae9b12a68b54af68edaef5b5c661d1d5bc0b", +"T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "b6d4521080a00b40bbba6c7674cdaa5d87c4d8a338ce853e6fc02b2373328287", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a479fd837b6fdf6a08d029c3cdd1a97c8f07e8e2d854b27406d4d9f4033249a5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "132ae1aace0ae044fb6aca0ff2d30aaa90887234ddc37a3f753a9055675c8796", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "155374383ce921968b782b1a7ed1b19204ab183da0be47f25b6fcdbbbbaf9b8f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "a9b58c9e5f2f7c00798f424deb12a64cbcfbcb3e22deeab8b17c78d478325fe9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8940fe562917c7685785990304fabd8bf8a80130c664e9eb98818780ccbe50b8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "02f6cbc1034498c696edbaf61a3c092d9f63b2836024b4da73980fd1c049bdbd", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "d042135fa665917ec28ff6de6d9f723900302fb8655bdfee12b7cd70f5649e11", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "d25dad4156db737360669cf2f356e7fe335dac39ff6b7214e42fb029d2a0f00c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "0ff775238ef21f3d478e1cc2f233a8ef18cae5e8baf2007b0768da9614ef470a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "3df2e8c5cb799ca0a24b15b82158396916783925236839a93fb704d6a724644c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "e1703ebe77fe631328598137c2186c1ad853b262035db8a4f69b29d6b56f4571", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "026e658ef7d5d2fe9e20f2f6d785ab92761959865131f535c5fd4ffdaa6e0779", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7f7da21105dfde9c82279387c2129423ad741c433c98e3ed091fb61a1ffc0451", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "7c4a3aad9c1883075259347832eb4841bead7fbc92548d851ca189a620867e73", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "64f46461001fab8953c49d323829b8d2efe4e30afaf63788c906389bdfac8b5a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "a3adf320b2d2e284daba35bcfde26fe2cb4f3d74cd5baca74c0cc43ef8cc39d4", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "c8a36bd6d3958eba792a312cc60837b5f424ed3f97577c289f1323a7a595821f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "d8612b16bbf05493eadd754f590634c293dd3037af454075e57e1d934158c899", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "34d8939258aa99e0e35f84f4d47f9537c9062957c3f3ec9dc814eba53ef7ce8a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "998b858a2bbe8bb360dad81660bc1474b2b1509c0f95e6004e682502a8ce7844", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "d0e086dfa0f36fea21a6ab31c6066991105f37c36a26d0eac4e394ff8f1b17b8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "2fd2a41531f63d7297d59ded7176226b1845c56896f492405b15958e634b0411", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "6436b2af0ee7d10d5fbe902bc18b151ce525d07ab184af89e2f5280eb038ed9b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "683c09169e1bdeeca837724b06edd1ef09cc7f6bf85916426837f5c4f26bf8d5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "b93a1b7764013cde803f9a71d34e92debb92976a77c12c12157d01c88d4de04c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "6948e9f5e09ef26b8f4b86b6c6377def7dfae7476fc2ae2b79f6af4c16f541eb", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "4029989f41c0c46bbc4f6495ceadd45ec73f17c8a803086e6f7fc76282dfe876", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ba5a531315c1a6655c3abfd0e362853fb97ce2682d9cc6a9240474a8850ca933", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "12f639eba2c484ab887503215095a02caabaca33eec4f8fdfe28a8752bb4d8a0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "dfd380537f1edb0e307bd20e664d1418f46379654be39bbd03262d76a2b30c17", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "1a20f2ca30e101fdfb9fb644723b1907858fccf5c8b92e899a1d154de40c3d28", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2bb7cd19c9a0a78049b51c98836ea6838b457b85ed7f24b80810f8b2f591f147", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "bd743d1b2c24c365059dc7990e168ade6a8aea9942566f38fe9634f9c48b47e3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ba056db944adc682f9ccbea45fe60b04d9a994cc2d2651417585acc4de31409a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "a97932cd2364dd67351ac08994969293cef0419ffe82bc85ab258cc6f84f8103", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "36568f660597ca6a817a67638a5a7cbaf9fd4b5183cf21f74aad24d638c04f9b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "939f6101d62d3718e0b3c16bcbbd47e0d4e5993ecc15841a7139f2a9215dbef3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "794cd7527ff55de26f6d2e6fe56f008ee03adb3779ebe5fb97bf847d50097807", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "985d68bc91e582ab178b4cfd40ff8073890bf51ac7563a570d0e8a2bd9dcc051", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "d706c9608699b438c175a065cc4f7fb31f23f89fbcb4a44052f0e8962e983685", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "17299417c5d742cce1c4b39212eeb51b98bccc6ba22f1bc76605d2f966c191c3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "07f2d384e26fec24ddab93913e85d055079d97bc075fa65b4cbc38f53a3a2f3f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "1aabdc6306d6e2655c3cd7a81f9a9ed5604198bb26db7ca337714ffe956666f5", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "cfe8cad6df60c586999477476424e7f1ada767d3487673845fcc217b4bf19799", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5cc227d20a7c10c2c9fac4f7e1749dafa97f65044d8893cce1b32b2ef49493e1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "7e9507616c6365e7bc2fc2512c80d1b2c343754e3a4bf61fcfeac49f729a464d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "da12326664c35ac287bae76b7401102fe460b0756967d762f2ed1fae755ada91", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "71bec5655dee5bd3fe9248b4c631ea5d7598304096d7ce260ca90e89eef6c2fd", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "2ab5c69eb39bc5100b28141df19274c217ceb42a16936ae8ffc1cc0c2798d9b7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "0575e4e9d18ff813666a85f31cfb8fdcec3f5583a371afb755b19a730c870e27", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "b1baad69810d7e44a62729f8f80d88e58e96e21b6da2e818347ffa847ccbedca", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "6c1629b60f82822db9d5b54b5ff1d0564f85e8c7207346169c1302f09fee83c1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "fb2410a3b7ae4dfd2850001631571a459ee7ceee2eb95092cc8c3f0325bfda3a", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "2dc6426399f9a60d218f026729dac88afd400005ee7a590b474e86ad69a0908e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "51cb4170ea5281f6eb544a28bc3928cea60ae8b6018f0fa1660f1bef79fbcbdd", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "7b9f0d3c6e90e37aea65466467d2444f37951b094f69074dfa0e70d3f6385b2c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "354d36bdc3c4050728ddb4cd76f4e351482c07a0eaa9d6b68ab0e78ada7d3cd7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "6136f3c308b58bf16ba31be6f5381f24ef63dcae2c1b0e29f017a98c40afaf18", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "db744a76c19cbbcf83ec300d1c62dd8a5fac5fbf35025a79e83f63e341b0cf9d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "0f53893da43a4dae4b211db2a96d8bef67ac59a29abb729510ca9bc4d35e56e0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "43983ac954b7fa59edbc489765c7794fba78c308a928d7a9c92aafe88a7a026c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "71b998f52fc5aae74c8e4607a7b0b430514491c2848414e63e9c399f5ac7cc61", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "5e637c6113562c04a5f115c8e0f1cb72bf010ef8e2c619ef49ca33e90665363f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d913eaf2b55b0dd3d6d042e9b925ada7339582606c52227e49f3aced67ab33f7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b2980bff12b57bdfaf0cb51f17aec66c4f0edafd1392aa26556e7cb562be0a64", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "f301a2a305b42468355ed64d65b6cccd0dea8abb7e62c6b121696ffd1ebb4027", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ab55a8825a88ae374a283b5e7400a33818e4cd1f84b3f109a33784562d882196", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "890f04850d160f168687018f03a66ba19ea4dba83d9649d1c81267ae445cf233", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "9d5c20f274ec1a4ffb3d718a22c2e7182461b0101f6705030f9db7f9c3ddef0e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "a4840cf3f71beeea5018324fef637da30f4f5320a992348e33f3e5f71c550c38", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "f2977bb3c8c7020cefb6f8f6e09c438721c89a81af6f47c8dd023f421f243dbf", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "2267d5bceff4d35c472f2fabee31bcb9a094219ecda070f203d9e1be5206613e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "7b903750178ab191eb42479ca0b3f2a312c9ffcfe7a675e3a8884a28022246a3", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "653eb396779808d1b81ef2d02c3b19860e4d361002598277a6353bce9254a3c9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "bff530bbb56bf345cc69be1738b6584187011a7b7c00584df1421c3474d1e5b1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "07f7f558924ce02e261ef4603b25afcaaaca0b06472794d1d3fa0f1fa792c2e8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "89aeb09385ad67bd0c18c727cf6c866e7b30b4563b5b333b424a5a1f39ba3cf7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a43930084af18da483c0eb5dd44b1c2b275ada1cd073facb14212f6f8965acbd", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "4b8a0247fce7b5dc34c24e1bebca4bb645bdba23ff81bb7350cd4c8ddf3515b1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "157e2763c0ad8403265d21269edfff5575ab6992bd640ee737946bbc80d662c0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ceefa7b8f63b4be2ea64fd6dfbadb2606af8d0ffadaf6a655b8c274adec50c78", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "705a8422d8d9860ede9c52643a23f69ec918acba05bd7944c09e32742d9fbd67", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "587b5ac7b373177342563fa4ea95c1d2b6cccc42d97784a3718d9358dca557fc", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "3fb9eecb15400729fdc6d60458d7f5e42235f142f7933dc3c6ecb23dc2241585", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3c0640d492c8a62a4be0b43da71aa8fcd55affe16c926532a554371cce8b3857", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "3bb5a804accb371cb9afdb31948a039bd557281f1c14c4b0f95ec339d838f065", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "ff8c8a18452fb8c2bdba9ad8d97dc24566072ece3846a391e094efd77b022904", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "143d3b381ac23c26974d325df12ec16c0a393e3ced78d87c5f027a077b3b441c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "de184a05863522406fd9d8bd265baeb605a087accaea8778decddfc85078b3c9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f9cb0433ce3157bdae1f796b0833f95b7d37fb3d3b8af4d4ae5a651e50b749b7", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "0aadc2fa6a3949318ecbf619038c01cf4e0c9200a0e43bf8912e874d6b686713", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d201e5dd4f97fba0e2ee1c4bbae67f5ff878d038edc1edfcf9840374620ad576", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "8e0764928ed2a8d3491c1e04138d401b1847c2908ad7ad9d6c6e83c2c07f8ad0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "18fea61a3020f3eae38b7e6f35730c683243ee940b1dc5f3cb6b9e3262410287", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "88b8b05612da9d2bbe7630cd17d2b2224a336758283a62a1b2bf38b440364237", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "08cc54f215b16fa8d94ef2466418e61ac83b1bf47664abc2147750674014cf04", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "c082ca55d11a18cff302ea452019c18cbe92d1d1abca90f87f6d4f559ccb6da2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "21f0d75ac9c12331efa961784e142bedeafc068953a7d0d2ab5e961a72bd54a2", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "1a05a45672ec97948ef03e1a6d5bd819b3ac8107ab3e84614a0751e16f337ba8", +"T3T1_en_cardano-test_derivations.py::test_bad_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "154e5c8577a535669809351fa90bfea849e8ed96504f89ac3e5e65795ceb9254", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b7c45ae869ab48db261c9d926788ec40e75140a925fd8835ccea73a86dad8fad", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "14373f6791e4865e29ca69c6cbe7c5b73667c9f517e79c36bbee1cf68775f7db", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "948cda7ac238aa3d22c34d922f46611f3e4ed9463ccf3eb0c2d1c55ad5b8a6a4", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c0ac53452d120137fc54da99bae939d426e4ee4cfc6f65290bd5c8dc183ad628", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "329764e44e3ceb6c9a91eeaa2309631f89180c13fd4d88fe1332c8fd567faca4", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "660ee35d090d05d5b27906d857d6c1c71e90ac5bbc16d7badc9708dabd2cb9e8", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "72778124ef6c22b97c8a7ea2fd5613924d84d95f9ba68246aa122456060283eb", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "497f03d3764786ebcc3d2346ea9134f40e0b36b67fc38f380bc4994a1676463e", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "83e9d2538cc79110c903c08d95e8bba818711b4ab6d857e0f31de995de205840", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "119fc152926f4468f7b9442c5805040f2d2f46b61afa62aa506dc353424ad77a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "89a500360f41c471a036f6b0a8338ba1d95416d7358e673f47eeb927078b2ce0", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "48f9c2b19b01895306278ea2418f70d25b15cba8cb0973985db1d260066c8f8c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "fa7b1924df190c575dcc0e4708d8529b6e0b48c3c1905e6bbc44c644cd6e6ffe", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "3e234e25f414c5a7955150805ee632125e4873ae68ee470bf43ef49daed9edaf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "cf68fa805c804aa1b7e76569d829605c5513301e554a28526e5badc6ed40d885", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "e35b771cd8b589c25f1303044a78dbf94213328431ff4818e4e718d4641ffb3b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "fb10ff3dff2f65d547bd48419cceec7e45754e99820316be9a30a0e931b471c1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "1f619d8d01cf81d47efa88f1f608d3f40e98d8b4399bc30b0826699cdabda6d0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "1b9a230537e0dffef18f5840a763a96f8af93067501b10b1fed5079ec7efd6ae", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "80f4909dc487db3423e61731f9aca6b581d7a513221d8f99f8ff1b6a4a67e382", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "cf54b83891128084c74d23f03e4d597d4c3be493851d12731efb3bb7b1749ab3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "60d6a6d06661669dffad99207dbe3d0ccaa2c2e4bd79d1da763e98a921c40c47", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9f3531fe26f7e82f240f13d907bc470a3278dc89e4606a952ac8e885a0d84a0a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "cef0ef56f93e75dcab1f5cd1f733743c05b2e94769332014ee0a010c04635e68", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "cef0ef56f93e75dcab1f5cd1f733743c05b2e94769332014ee0a010c04635e68", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "13098bb4a84ccfdc18e385d264f4618d4ee12cf3d844cf910a6e331955b9647a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "69cba415ddc202d3fe78687b1442636ad6637eb422689d491063b22454848f20", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "eb2b704a03b356065e2f079211d1e18524f9e40f81af3cfac8449ddb800d66ac", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "8e409177080688f44cb8e5ab4957a1665c2795636df7415060b9fe29ea9a26f5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "a7fa82b479c8bae54c50d44028f0e7439cba0195f65c7c37385c21f2612b3233", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "f4c1f88263a6299371564dee7906bf5665c32e5c726f02e5c288293d5617507e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "1ff2a3f3f187647fb8d69255d018f3df5af3191b099eaaceb3309216c08250ee", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "cdf822162302722f0967f8a775605693a630879eb1582347d0f195532ea82845", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "e17d4590c5faddf981942e4e72ad32e87694803f7531ebf64b95dc2b1b87dbe0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "a7fa82b479c8bae54c50d44028f0e7439cba0195f65c7c37385c21f2612b3233", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "f4c1f88263a6299371564dee7906bf5665c32e5c726f02e5c288293d5617507e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "1de3856d0fd54ba21b6b9abd86adc711ea16c2db0333c4b21de288d5b4d9006a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "5a2bdf2b986d60f519ec834a4439d93f3882fa13f9e4bfb51f124a3f1c22aa98", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "29595cd65d8da95abe710244473c3d229fd468fdc58327c0261f38b83f728ad1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "0fac831089ea17d50515c35efd54774525e4674467db67b1afc00221e1fcda4c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "6d223445347dd3c3152684257c4a0307d56c00b43405a6911d1ccb77859955ca", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "12e72fa0c3c41a9ca7f0e4dd12d5e02ab8e4bc5df400944d6002f265222280f8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "cad034b4a83842b82684da6703b535878e24c55d2fbc41c39f2c189846c18529", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "6b0f5a8d44069bc0e1384fca773de8a947ff6238043bb5cbcd7758f3f4acb765", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "861869a263f831253c2be42f49d3b92e69e9ab58532ea8bf2ee480378e7a9919", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "1a9306e4c6a9853498652ddf6d2e9805068100e5f03e3f2a6c65bf75c42b74dd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "3cc5f16fa1c4eac862c16cb281e1385af14209d7433fcb8e483803a510746607", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "00c351d842657028c04c64d54ae831219ff134c92051282c8559c75ac54d5b1b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "1e2cadd567748a6f1f129d36c7571ac8d5e5ba5d0e6a9207e46b306052e96a96", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "d9d798eb40ec057192107bccaeff725cf79199025ef534bef89d42d9cfe79d78", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "6817435e3dbf2ce0550257aa365e6f3f9e72ef390a4285942fbdde6535350ee8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "8f55da60053c0a473b064819f6af2d94b1420f346c5efe8f8332df4acab5aa87", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "afcde2be50b4844680771da6cb2f242b3b76a2204b5881501d7c1dd3e82c09c3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "2e09a651456223c3997af443595be333997bf7a3c574a3fd59e3109bb0c67188", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "8c863188d4c66243efff8fa785f14ab85b7d49344b1573bc904543d403767534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "e2c284d208b36c183a70ffaf36f1d7b66360bb5b71c61a055cca74de9ba21615", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "d60f12868bd0bd5e4d530abd42685d3ed916f15192c5eb56fe82f427323b1164", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "4ea96a8623072a41078e231a724648756d4deb409af1aaf57df248403fddbef3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "677e9b92364e463c7ca18297b473048ab9ef11b7ca94220491aca095197ada90", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "4fa3ae0a013cf5e104af0e9dd045fccd3757544a88b259ab8271562ad1231aa6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b6021b429cef4b5fe3f7692d3bb77437210a3c27bcb4532f805a718633d4a6dd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "119645bfdc9a03789dfa5cf21e371ccd15671bb462355ee5d4ad73715207a160", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "09e3ceb78db53dd7ec086ae629d78c1fb11b828ff9289d12008076058b7025da", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "801307d8565180a1254cfbab5025ffa218a66246afa47604f44317928aefee5b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "bccda9709d8b585211edb590b29ea367b328aff826f5a40925b270a7c473e0da", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "ff73851248e0881cc537284075b8013f70bddc534056e557970fa8bab6f17c75", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "bba8e816d563bb02525707741e1b82a68586e848c09cce16a7baab45d6da3e7f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "957d10cd236ba2365ce20f5c584a5c74913411470d7fec5c69241c18c511daa6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "9cd4669b8970c768ac06965c091a7baa3015e1c022dd2ca3f8f37af5d8a0a2d0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "04e7f8b14534404cb4b5dec004683f3522dcb76400b14e1caff9afed1d747b57", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "fe7dfb7436caf2e0e2bedec4300dd888e29e83757427a26bac9a3904823966ee", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a4cabdfa964fbd091ed0fe4d4d4eb6a6eec75de722522a22dd3e44ba2cff53fa", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2391ecb057e0004f0a109a7144b36d811c78fb0782993752cd1a5a1ed9eeb0f9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "446e4115dfd177ebbee6790d3e640b96038c75616bd210e0c529ef3e65fb9a48", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "a6e7aa372457b5ecdc69f148d9565782708343b5d056c10a85f03aacaacbb238", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "3bf52fbd0f040af9dcf4f9b94141d51ce7f9683ae491ef259998a842a38d1a92", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f85d86069a050bfaca09be923de5ca23d20ec60144643fbf62dda99997bbf43e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "079374b13743166fefebdf32020dc3ed4e0d19043b167845ef128b1b533aa112", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "52ca521c545af75649656c26ad49dc7c192c2b23f1a6d8581858d562f8edbcb4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "5ae12736d56754b38104df143ab3eb06a751ef897b192ff747867dd01bdc53d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "13a730e045398158b186dec08c785d9048a92df47209a42fec4d2e009e655a49", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "879a2c877b4045d374d1f6607b671054dc6cf6e46eb272592738da0a8ad94ca2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "da8d999b76643934c788efcecb81f2ec2682dc50a4cf00a0852b2d3224c5a702", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "cca3e48ae8c31f4323dc01ea7f34b40e9d77b0fedfade967088b3ac04360fc19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "b638aeb9d934c77c410c7d900641a518fea5be787a577989a55ff93d11472437", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "a792ff2b16af0262cef462a377cd6797154d8725c227e931bbcbb63fb8f248e0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d110712ebded3db4935c9bc455294c4d86943138ce2b9077a76b8ef69bfeed43", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5b5dae767aa4522a6f35d7d90419fffc94a5c844c2e75d2f9c3a9d239427fd21", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5b5dae767aa4522a6f35d7d90419fffc94a5c844c2e75d2f9c3a9d239427fd21", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "8e99f44cb0700510913eebb3817325b7e6366553553534edbb8bc0c2c8ed0391", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "70b4a86838d7f140e14ffdf8d1c6100ce66915af6d0e520d5a48f64ef58df5b8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "70b4a86838d7f140e14ffdf8d1c6100ce66915af6d0e520d5a48f64ef58df5b8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "dcf32d691a222393bea82f5a554e504a5f6ccb0a6d8132a37a4729af8d517077", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "0b66957027b1413d02b3d977f1c57a215e5943eb4154060f2cdadfecb10faf54", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e06c110e31b1df65d47930b41befadf6ce4df79fa1e17ada0467303a91a7dce1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "ec6c3b7c7bb3368195957ef7096c144ef4796662a0ef3f4c44b890264164a586", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f3273ebe2373ef325941eb40c826fac44930fe5a7787eda58ee65035a3d4b559", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "f560b690b8a834729fbedbb18b8ef6462476d2b5a143eb87b7f63c73817d190d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "0535dc8e613ed8235e5d859f38816ce933e80bc975cf5b9a8f5bc3f94ded6cac", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "c22c00020cd1ee0416d72c385be2eadc32ae8c5685f404522cd9f502610e9d26", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "120a7a1d47fe2ff54a1538a713d17c28e858f795c21c41f8f5284f989d4b540b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "fa7b1924df190c575dcc0e4708d8529b6e0b48c3c1905e6bbc44c644cd6e6ffe", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "1b9a230537e0dffef18f5840a763a96f8af93067501b10b1fed5079ec7efd6ae", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "79f83d893438f90b3b5671ca49b352f0b1be75dcb41ae3e451ddeaa3771ec834", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "33f141b0e247d81543289ff28727c5f4888a82f0485335c67577f6a9aeff5b2a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "33f141b0e247d81543289ff28727c5f4888a82f0485335c67577f6a9aeff5b2a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "db88d3039cc2aaa4f3d6725557c374f16e1f2d149fa7b954748dba6d471d915a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "4645af8dad42527a620217c3e63000b6ad148b2891f3dbef9b37c47de07b0cb1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "988d1ff42d9c58a456fa528bf8339a65a3623399c3ec3456331d536652701d96", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "1cd8d00e69598417a9544942fe41092f0abdecc3a66ee377554ee44648b04145", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "97a22626f3ed9f8c146409d59c1191e3ba009a6b9f2245b529a9661b97d2f6b8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "b3703a0e0fb04e0478c4f607fed86bf22af567dd74ce668ee0be4e5b09ba6753", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "b66204bcd1736ab78b098c43df2d1e4bee1285299caedf152134aa955d1663f2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e1f8f7b4d9bfe05c72d2c049bb88ea155afd07f3b5cb4be9d2b145147337326f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e1f8f7b4d9bfe05c72d2c049bb88ea155afd07f3b5cb4be9d2b145147337326f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e1f8f7b4d9bfe05c72d2c049bb88ea155afd07f3b5cb4be9d2b145147337326f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e1f8f7b4d9bfe05c72d2c049bb88ea155afd07f3b5cb4be9d2b145147337326f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e1f8f7b4d9bfe05c72d2c049bb88ea155afd07f3b5cb4be9d2b145147337326f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e1f8f7b4d9bfe05c72d2c049bb88ea155afd07f3b5cb4be9d2b145147337326f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "b66204bcd1736ab78b098c43df2d1e4bee1285299caedf152134aa955d1663f2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "b66204bcd1736ab78b098c43df2d1e4bee1285299caedf152134aa955d1663f2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "b66204bcd1736ab78b098c43df2d1e4bee1285299caedf152134aa955d1663f2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "1cd8d00e69598417a9544942fe41092f0abdecc3a66ee377554ee44648b04145", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "b9a81b020ac9f82d7c956ffe663541b2f13051486357224bac06ee49e42558e5", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "b83c677cd7714891329f7d17882c5732832a33e6c9eca3776c36912602a6b0cc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7d62fad4f51225f5ed007cc1ffba0544a5bd6a9ad49e476918b9a25d4fb977b3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "6ef9335628d6a192b67866dfe33ca3611f4fe40f0f3e3e032cf69602a24a79e0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "014282e5a709df480d69eacf2ac6dd5f05bad359fddf2c514f0fce3f886dfec0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "b34a013d2d24089f0a6343e4f71b5175cfae0faf462a84d294fe680cb81ed330", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "056cc72fa16dd7c83b2f489d69a55b0e06540f923a4d540892ab61d4af860bbb", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a762a7bdb469f545fc71f4023299a2419e37bdf986646b5506cc49380e23fe5e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "4cc5e44d76f4267589fd7d7372b0c965c91f38726789e5a07bf47e4d4f770164", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "8f00acc25b3e2fb14feb28115b296239ff2a66d551172ed947548c9f2ee7882f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "5aafd8a98b8e56b7541f048be660a8f4b463e3f94f42102761c43a5029672e75", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "33f141b0e247d81543289ff28727c5f4888a82f0485335c67577f6a9aeff5b2a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2cb6761edc3cc18bb50cf828ba829c710826844d419d7011b350bc6c70f7238c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "f6bf141c06e1a834c7e8741f44886d8b44ed3c161047e2d5f2b10d8c9c628815", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "b2c4f1ea8a8eae787cf14e5f7104ffc95961060aa6241736aa8a4d2b68cfa85c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "eb84a65d2eb3d61f02d8e0bede47fea0a5eea98163ae28abbc3a4fb471694861", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e1f8f7b4d9bfe05c72d2c049bb88ea155afd07f3b5cb4be9d2b145147337326f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4972baf8d8776f4fd7c625a9aee0646c7f505dcbb0fbc697ff0c19e2c872f6c2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", +"T3T1_en_ethereum-test_definitions.py::test_builtin": "b605a64b843e89831e440ee9c44c1dc12a4bf5062d3279f707f34739257926b7", +"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "2b10036d64f8d34e04cc27fe1057bae9ad70ad5d1f034fd76f39656040c2d492", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "875e8029e1d22c55342149fefd1f12f9bcb075b0063d10e2c3fd7276bb6fbfdf", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "fcf99475735b6d37e98dc4a0dd5881b525b2161b41de2874667ca8017a5cf63b", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "f7ea3fce70c0c26353e3c4b4bc0e9353ff5fc56d6cbf1c2056d2cb9819ef1269", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "3c3c43f30da2c784304ce0fb0cf5bb04e9db57b13e8b6aaf5df283a0f7eb7896", +"T3T1_en_ethereum-test_definitions.py::test_external_token": "bde77578d3a09d6b480af2c2f60a062aa215bedbc85c7508188ef4cbac8cced4", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "872e512f159bff20b7fd06fd56ba3843c58836eb90d961f17aaedd24fd06a8b5", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "34651e0c0cd0ef2e87c0e34acb578d678943646d78d7013dce8e8744c11efb37", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "f94b9a224c3327a9bfc24185e70cb78ece256acaca954e0e22757c41b8fc1802", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b6216f03db3e312b4567a75931951df04f6836d33512030fc228c335cc993a9c", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "232d717c5343ba752e687911084e50f87b255fce1b4223a9be5d488e567e4dfe", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_bad_type": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_missing_signature": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_outdated": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_short_message": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "ade58eb183d8aa2541fb630309df3c4e868cfcd2dd476fd2dc14572f05532c36", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "75adac82193c97ebbfe5773ae53b72c461abb914ad0f934dceab0c68c2dbaf24", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "bcc19e387c69f6a430d75adb592cea9b3c4c1a4ecbdaadb9948a685bc0a83bf5", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "26c67def8bb8481782d005a4bd8195866814ee3e339333171d16b6d43e8fb4e8", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "fe2e4d2abecea5d30cccc1a1cb508c2302200fab6f82a4f08354ebeb65e76260", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "c8d95230187edc6df2622bff27deb0f93d7b290e7ca66221e449fc7fa4530e6f", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8cad10c0261f4463e2dd41589c99e355c48cdf641cfd36701b91347e0dec24e1", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7f723a02146042be5d1a7c95fdf6d4fc656cceb1a4a97b93a55e7dd4121ac148", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "9a106d588cce6eff26b1e2b44bb79fa7e53e89da3d169eba2f52c6d29d242350", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e908b4d6f03e50b92fd157530f4ae98a2e797c3c856c989d80e486705d4cbadd", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "db07246529eea59f4a824ab0e49b7ea39968fcc0e443e0d41ef41534c10003dc", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8949208a964ab06469a92679b1eb2d2affa217a34f2386fce34fd06a9edc3583", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "9171ee1d7a52c3c35755ddef3d3a14a93663bb2bb86ba1705bb3bfbe99430626", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "b474150626cb3f18e0e303f980dec08387d40b043b83f36abd6da6b44cfeedfa", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c7f58274cb8d99f89f31174faa177c25c09fff2ea7cff39a0067a773f72e417c", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f62f95e56f7164b28db0a621ce28d3fdf82e77d6ec57ec9e7f427740fb5d604f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "7df3928b4377e32e94d578b849131921645f266bacfc9f93ca126167f2a3271d", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "03002e03820c12ee92613f70a4f89be29aca918a47826cd16ac298175bfcd162", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c7f58274cb8d99f89f31174faa177c25c09fff2ea7cff39a0067a773f72e417c", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c7f58274cb8d99f89f31174faa177c25c09fff2ea7cff39a0067a773f72e417c", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c7f58274cb8d99f89f31174faa177c25c09fff2ea7cff39a0067a773f72e417c", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "c6b9d39cb8c1dc077446d3494665a914a264efa58c930ae2716fbed2ca5a19f9", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "fb444988d291857c46c48a8c909de05f532894aeea45fbf38fb3f38d1fb24250", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "479064ce512b17bf0a5a9e4057f2894667e0350a5a1953d619a1b66b79d5e702", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "6ee88b2c18497b4c2e25229fdf109cb6b0ecd64582e288f758ef34e9e26915b0", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "a6fccfed7a62604ec281054ed1185fe3bbbf3fc49c4ddee0c90e39556f110318", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "1b0ab71fc8ae4b945192a57d50faa37520fd917c959ac556053a70fecac3302b", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "db2f7debf2045ce5023cbfad0c30ec9a3fb3d62c66983e0c2c0d7065f211aff6", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "7f6d31682fa3141b398ee933672728bf591075a3f6bf4b9a5d15534e0e3928ce", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "1931c1c99d277be18489656119f1e62abfce15bb1747f9d632650135c4fcc874", +"T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "b1a764be825fdf773501aa301c4c9a525b8260bc532274b467cd0ce176e9ce23", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "e2ef3f20ca938f6927e578c27a7a5582bafc71fbbbbb0a2663693f2dc2b34d1a", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "4c83de206f6be0c2138a5441f0432943cbd8e3d0855809d898ea24c5252b8801", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "0f2b0c8928a8832dc6ec3e13ff66f1466cf36be9d031e5f3ac4ea945640a6614", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "23f58962ca08e7fc58c4e37053fd2164a62ababe0a48db1b21cc589599369c72", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "a2d81760ea60892bc1e90ab20cccd1af2b47eed3c21255233ce2cc5bac367009", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "d49d007222f0fbfe4a16e29b770c69d90c4dabfe56379f72e9ab23176f455cfb", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "65427b7647e1655c4dbc7a29f67e33a8f49a6e02f75408ad5b4b1ce3d47d27b7", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "47e798a9d824029be9b6fc249ec884751e8782f3192f7b0969c7340b82c2ae1a", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "e2ef3f20ca938f6927e578c27a7a5582bafc71fbbbbb0a2663693f2dc2b34d1a", +"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "3a47efd3dd7500b45c22d4939510eed307ee2bb6cdcd8ac00b96ddfc9f4f1cf8", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "445637b736d5e0cb2a00217ae7c55644ac50232ce33af63f847031b609d0bc1f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "cfad113cdbb95b121cbc1a077b996600a4d640509ffed86013ea3e2ab35722be", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "a789be9eace7bc495530535b12eecc0bf8ef89142c530139e1c38c2175cd1e33", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "cfad113cdbb95b121cbc1a077b996600a4d640509ffed86013ea3e2ab35722be", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0c42808945204f4baa128f9783e07b02ceb621bfdd67370c6c447eced647f738", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0c42808945204f4baa128f9783e07b02ceb621bfdd67370c6c447eced647f738", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "50c084ff7259cd3aed52a2f8ea718e600eec3a1cee8d3a1faf693f04cd43a57b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "37e3daa3d677ed7c19587a387f6df6bc3d74b61486ee590b7f7b91c29197f900", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "b26b7dbfb483361a289c750310d4db34a2dfb7fb6b46c544166c1d735a8a9f12", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "45c51c25d3edc4ab1b32d65a44a3915e564e3ade35c93178fd3969c5b4a9aec0", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "6478b2f7fe2bb5ba5b6877d7f9209b521da3a34d2a46a90071aca1cf73549fc1", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "86f5f744d7aa31484f051d4ea28bcefbccca9900e0a98f4c8bc6ee8a9925aa43", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "a56ec7acd67b5dc52c12ec0a0968e640bc8549175adfa97875f783704258dc03", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9c45a68b3e4308f632c2da333b353ee27b627f888c0ca2cab39a5a5e10268d77", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "46e95812eb5319ec55f19be624c097b715538e0f2969c9804f00861d73de5baf", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9c45a68b3e4308f632c2da333b353ee27b627f888c0ca2cab39a5a5e10268d77", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "954201170bf340c99a3f7e87d113a7d9b107617b0c2b01fb6e66204baec7a374", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "954201170bf340c99a3f7e87d113a7d9b107617b0c2b01fb6e66204baec7a374", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "46a5f08789bd56ce77e63cca6c45c78c74dd8b920301364bc95ed5286ed9c7fe", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "47373f2529d90d27a29d2a255941dfe717ca8f346810133627c0675e4e17496f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7af4ae79b354b8fbcbecc8a1e91965e64286c46e27561bd95c1dd0a955db2fff", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "45c51c25d3edc4ab1b32d65a44a3915e564e3ade35c93178fd3969c5b4a9aec0", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "f35dcc06d20f1eb30acad5893efd6679500749390287e96971378da8cadf5a79", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "5e9a56ed0d435eb71c086d851d2363ab3da1fd6a514a3d24b2dbbf9ac677295c", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b1fe85ae0746d360ab7a3ca15ab43199686d57473aeb57efdfc4f74f8c6eb7c5", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "50c084ff7259cd3aed52a2f8ea718e600eec3a1cee8d3a1faf693f04cd43a57b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "65aaac10e525eb1454f5c0b736aabb8904b17258d084920c71703eb38e57524a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "b26b7dbfb483361a289c750310d4db34a2dfb7fb6b46c544166c1d735a8a9f12", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b610c76a4cbf67112f04a326d7bdaaf2469c6bae0c0ec79c2ea396cc00fe66a2", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4723bf6ce0bf8037da50c5bf2a534c8d7a9992a5081d37eb4ca966a314030b7b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f35dcc06d20f1eb30acad5893efd6679500749390287e96971378da8cadf5a79", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "46a5f08789bd56ce77e63cca6c45c78c74dd8b920301364bc95ed5286ed9c7fe", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "4eea317c5f25534c7d78a932995737aa908a8f3bedeefd1b28a1df0b7b29fd12", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "7af4ae79b354b8fbcbecc8a1e91965e64286c46e27561bd95c1dd0a955db2fff", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7de181bc17de9f3cb0281d4e0b4a56fefff71f27ea0953c02b755b445857adb0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "54ace8cfbfa5ec3115a6bb95de505f2a65eb9e08a7c1e8f31521c1891419515e", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f35dcc06d20f1eb30acad5893efd6679500749390287e96971378da8cadf5a79", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "5727664e843777a2abbd1fe4a3334eefa023c84314842dbf7098363347172264", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5727664e843777a2abbd1fe4a3334eefa023c84314842dbf7098363347172264", +"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "dab3a2a9c2a2e2429d6a749bf25ab272d8620881b7518c2036f78c2cdb3e2f44", +"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "6902b90abea50a3f6037a6e5d217e2e1704ab9dcaa0d114404ebc6b8da0b96a0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "571cdbecf1aefa07a05f3d102342dd571f4b5dd23318e75911164b91b5cbc207", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "571cdbecf1aefa07a05f3d102342dd571f4b5dd23318e75911164b91b5cbc207", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "68e0f086eb6f19ec9ac84c8ca58399ec58ba6a7fcceb92921807926b5c00226a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "68e0f086eb6f19ec9ac84c8ca58399ec58ba6a7fcceb92921807926b5c00226a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", +"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "f418a841ae6c34d8be72ba849fcc414bd0b91381665e7d2cb55f247678e6e77b", +"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "f418a841ae6c34d8be72ba849fcc414bd0b91381665e7d2cb55f247678e6e77b", +"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "37b6b104057533cd83028d96bed69973aebde4352e4f1237c1b6f4ada8272167", +"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "3bff8a7cd38dc143aa62f31fc3c06b15ba195861e94bdbaac22b4d447cdb4dbf", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "0d6ed4635e3659f7137f1fb56363ab17208d6854fa4fb8342345a395ab08aec1", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "1bad9df0942bfe967808bbb8752aa331a74c625ae085e255a8827220f9be5147", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "4bc2d142ab6e0fd5c50cf71dbfd5531f8f9c293dcb92ece2487c56057a6375ec", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "0d2f9b24a077a5511bf1fc946eb46c65f89c2cd5017a386ac5ea0796e873f3e9", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "2858eb79ffa8cd64b993088a6782ee4e8b1ef5c18776797346bd9c020552a27b", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "feb4a2c1fb47cd448cb6fa75b563ca8c12ab8979b5e5396c89a066de439d62db", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "b77c01d2741f2b38876eb940275e66faaea5d0ba48da247951325a50b0269a90", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a5c22b9f1b4c27cd2a2d3babaf5c8fdeb9eee6a28de2d7b46a33edb6e3c76d6a", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0b8f3e50d15c522f4aec00b831610faf000c9c450e38c52659ab8d112c5809e6", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3a12fe5138327dbc6ccdbefbc0062023a085fd6e0d7092b3265cdf7c201bd72d", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "32f50cdf7202aaa7dcac0c4e40fb87cc2c751f7d8d10f94df44492b683c455a1", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "2c6edb94d37fc478a831f3843b5bdc10e50100112eca73c8781435f393ab4a57", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "3ed262313e769a636f8a07cdb2a2e3e41352fd99be2411de91558befb8fa4a69", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "cbb66e2253138416aa5ac72569ade8355795607874d7c21ca93950d315f86fd3", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "ae126da6438993ce47b8bb9bd4a5488051ad15e65f7fb6a67933b85a559656a4", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[129]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[33]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[3]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[4]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[512]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[513]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[5]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[64]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_signidentity.py::test_sign": "e40de875b137de0ed683a0da21ae730ede1ebc5ef9bafc1414bac0df84f1dd93", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "515d1e0be26d82162ee645c3a0b2d4036bb4c00b2ad0b053fd21709c10c85aa3", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "439a5febe57591d1660f61a18a36fed8f62d8ed6fb4bc4b5971fef9c9e3c9cbe", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "1cb6b195913712ceefcf487c9ee80fbc869633fd25bc5056dd28bf4981b6d9ad", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "461436e422350e8368d9ed0e4e8253b8ba3ed2e3eb63a96be5ad45707ae84da6", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "099d48ea1fe1ec96a1f2787dde7b6c1f7bf18c36f98877040005015c1c9c63ea", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "e842c0dc4d53e8873beb703f7e1e2a9a5ac5d752c93b6c6a46cb82e9d2c4baf5", +"T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "5341b7e23f17727e4235dc08ca955bb17ea29357f16ea724df1bb6f62ec77212", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "dba5f802c5e35ed8878910f50478ccf2164f57f31f0ac4fc93ac487063be6a63", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c5e4eee4aac52203d51007144ab23ec056317cef9605bc3adf878e7196b42a80", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "14b061109b0bd4ee4684f05b9c5b230d5d2e57c016aec3ea8b2eb199a02b8fde", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "4a8b363e98dfb752cbc17287fa161578171884bc51dfcf9f24ebd4f9bd7c2d99", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "53ff8efe3154fd00af76d9ebb4ff8bfd57ad8799c9b7357b6514b3e2cb1b4578", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "69069a5423c27d07ee2d41a4a825a92052c66d1d25e1e5ad75d3dcbc9837f216", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "9a4dcab8a5d3ae632bbe68f7d85cf4cda1a75bd8bd60688a6cfbcff487ff951a", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "bfb50ae6daa64bbb2721dade1d8151262effbdd253744182b2cd732ee520dbca", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "85fe921aad178f97ddfc4855498195d1e4be30dd375c31935ed2573517c5f679", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "83d163df8994a054160c7d634dcbf4e8be5eee5910d7fe8b28c2a637f9dcbe5f", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "226a1d1fd57fe2cb9c3019617c570ebede886e450538fbec50c518dda6afed0c", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b6cc86887047c5c4615b2fa86f6d707889a7725a29e51c32a06f9aba2b75ae64", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7bd33ae6b662945ab2100c4c8f7df7e757fcc49e6867bc5291afc22ea554af00", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "202c0788f9a543bb51a21dcaa254e6fba8f8b47ce89ece42b7eaebb18c355147", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "45f04c1dab3aea28ccee3d4840a211d7047f2ced5c7b83392d4a639ca2b511b0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "69069a5423c27d07ee2d41a4a825a92052c66d1d25e1e5ad75d3dcbc9837f216", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2b04256d3dcd98e2356ae5014700de35ad0913bed2a71033b983db0b668e0c91", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fce1e56c44870daf7b9da0b84d585d232dcf957d8e98f2980849bbf9f5e6f520", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0bcdef88fed87db88456140f109bc81198cdc405a1bd353fc4dd4082f5e3876e", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "24798150cfbe528d7e51a314c6a3ed215376d588982b958c9b2117e1896ee8b0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9b2b0cf81d774d98f8a92249d3f9bbe62af2e33167772d60555e0df662f1addd", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "5e4d6e03a7a1936189a2721cecd0332670dc0ae9881b9a0f069fb280ef695e80", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fb6f3762015ebd53698731c8641f0198d8997121008d30b3b3665e7d6c788989", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "0b83e659fb51d321cdecee5922a31b81fc56e1108a45ff2eea27a9b0453b704a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "658b29419b4b192d8e4f7c3df3c56dde7537776652bde56a1646f50ddebe3996", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bd195aa9f53a3347c29f1a583d28d94ec30737b34b31d3fa0b8bc53d37c5214b", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "7c0d0072b5c7db6e5490f8e8cac40b46db80576d2df7364bbc0e26f48c08c8bc", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c1b4ff5d28d8ea3de03a41820645ed08f8144bc0995c63313a4e04c137244705", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "9ec6d8d72ff186a2cac90856e1c14c54c796725dcaa9fe8629cd4b8818b10d38", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "70b3a5233a55be43a496a6bfa012d558d48f45ab80bc03e9aa53058736635759", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b721efb4995dfe1a2db39197c57e4065a1c3f89565c999022363aa4482ba551d", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6919cc4acd2df7fea16b39164d1efe8fe7c4ac702e7b1bf4f023fb22349e1cae", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "db3f8f34ef7f195c6e15eb5b196cf8a3da4317e3a71d3063dc65ee8d23e38a59", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a2e930fc3d2601024715dab9bff89088d236fa47c87715297f3c3d2c0d0102b7", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2dc3ad342ed5b3676f9c4b9b0b35a1a753a35c15425999cd2fb9ea5eb0b1cf2f", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "46dac4a701c0fa42500044779596c712966c02a70d96ea1d7754d92cc3ad677b", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cf502e5efb80f2dd4060241997eb0f8aeacee19c31c33c27ed77eee78d1de6c0", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "40a4399bd6d5f4d15f82bc96c5838c66c4d63acae5638da0b548c953d9f3d094", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "dea6234d1f022742ee27ba9c2802fcd22f93743eb453417df771b5cbea06c984", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1137d10d30af2f33721fad3f658e2c18bf80f8511266f955ff5117493f96c326", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2cee43e76c136237e39f57e2a33cd4cddcbe1d7cb7fc89a102ece3c77173a0c8", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e64ac03aeaf6ed50c427eaed31cba58d025064fc431cdb6fa6740084c40f1580", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "e94bd526172c623541049dc7fd1f1928eb0e4605a22bdea3284be26346ce1ace", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "39357858f453bb2523f090b34f5649554c42ce9ed735adc4380296d8e5444a01", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a529a3c5bf0c13463dd08bd9d472327998ad09a5d55797461b09ff4821e88c52", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7e99254d7e67c6910159d36312c4b857764e5f97eb607ced66ba08c6ed1dc340", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "009f4d31a4c23cd611b3aa1b3577e6758a5ab67bf507af2ecffa0526191e177f", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "81b9ef3c491de698533eca5e26e417942d03971c547cd9facae540dfad8a8c4f", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "1cf51af6c1d26e9acdd8b3412bfec28f632d5a2f24783050b643a6828e9ca74c", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e8731ef439848135680c837b01d7febae17125aaafdc3c6e80381eccf6077695", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "6245868ee2cb75d6bf9910de9f2a9af16810ad1093d3b37de44bbc4c4ec5bd92", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ec3a78a4f85e1f13fc8a9eef8dcfc4013e90797482b35a00ea85184f85dc7c3b", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "bb0671d6c01be50d22ab926c132595047360a93aac20c601a430f7c5fa3d614b", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b081feb4f788f4dcf16d31f9bb0cbfec11dc8d2dd7e99a4bc9abd0bd3dee6650", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a0e7513eacb980a8c3cabe8cfba6ffe8934c4dd9f8160c56fc43c42b2a411d60", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "edb140a1b9ac8cec3a4e52e30131e1f95b08c07f60a317a63864294a0d73ab1b", +"T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "98028c3fc2c30788c69d179ceea0f26782bd5b933ceac1eec8e10145ec8f9ebd", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "94d89a7a13beb45914785745de64c5d16d236d131c9ed5c90dc325ff109d99b2", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d2c3f861604672aca5fdeedca3043f39041baa9e48327eac9fbf42d18dbb3f84", +"T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "7346a3f0afe16b2a4e72b8555965909cc8960cce2ac923e2039a88f6cdac3478", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "81223315376f8cd6b8c807bb36ba9405dcbc475d500be2c7b98ef6a6e72cc4dd", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "c9d41b297dfdb615b9bfea9d3796ce82a38740e9dd6c5de5fe78b3dae751ecd5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "06cc1aa61f750316e3f4c3353f96d7920cc080d76f1952f6184c266b72212027", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "dee85ffc0d33b0d2e4eb612d8fe6dd67493ed305a848e1774eb5181196536b3b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0794191dc142abb3e21c20cc8336176259b08d050637d8cc2cca53a21ee7b455", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "1319a67ed921d713c3b35bbab8492e052c8f4a274a98e9be6a20ce9e3f8ab840", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "71e2d988eadd8bd1c69eab5db73367ece9037cfae523cd4eba6a55e9987ccb7c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "c479c64029a62b902b610f063a88189db6b1080273bb2c8f9631709a399ef0c2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "02856742caffae168d256cad2864c7e78771ea128b8de3430a2941f737e11ac1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f2cca6da96bf20ebd3c0eec5773a5f033f230defe9256d6407110cc6fe747b07", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "cf4bbfd21006a3a60ec5b318472be782bf295d43f36538459abfe5a9cd18e975", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "3a1e2f9afe2a2e7a9648e9dcb43f0e238f2e3de9bf1493ddbfd44bb8326f805e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "1bd0c1615b1e4e58e0b29574372bc28a2c894052dea837cd0845abd368f11724", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b93270de2507f0b1c4cb2f4dfc58d58196ce4fb3f1bef6e808a37f951255019b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "25a1796330f4937d6689c57654b4013bc3a3e38675961529fbd33c5f117f3d1c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "e4202b68dd3de1387a570343d91792e1d75f8a299bf4f8e035cb55c65754450e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5d3136c182432fb13e73b28df556e2f055436b63ea070e39216edc5fc1c60211", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "6ba35feb24d3ade10ebcfafe162c35c443fd407b2bf8eadc93fea8fa32d6e253", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "745d1234db097d4142ffc588b6a2cd4dcb45f290ce1b22a5887429688e5de412", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "d43a692eec8d9d113bafa337d4d39887d53edf749fd878a5192d8d7b045fe4b9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "85c4f55c45f24649249bf88751c43785dffcc9968db8b71704eb9244970c4331", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "85c4f55c45f24649249bf88751c43785dffcc9968db8b71704eb9244970c4331", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "792a89ed1b63966c41cc578bd0e9d07cbc64cbc6502dc9c764d2ee256badc104", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8b1b166bc09357c20741c8907d742bcf49cccca29ab454a0d84771a860ef85b2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "cb19a65d3e1d6c0bee291c263a1be274b891fceec7185d464bf8d8335b5750a0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8279e14988740c2b963f100b93a0391dacb5b2488f90cdebc29b77dd7da3a3ba", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "5aa1ead2481dd21ce724d8c0bdba3b55ea59c530d30dbd73b46efee4046681a8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "77cb7deb89fe9506dc3ddcd6c9acd3342397f39a8adcc1fcfcc4f45e298bfdfa", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "8cc01763806bdcdfd751ad960e894b8e8ca243dba51306f7ae15469b11339794", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "374b4c0cca0ead71c5cf93cb4f8f7b550c4e915ee5a721983f8c04e0441472bb", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "920c4dbca77cd939458b3d820101d6e7a991742e457263fb8c3121ae7aff8d49", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "1a5b3e741506a920cd7c212840c8bfafb686c3e27f147fca75e5710422c20365", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "351fde7d42969230c67e3b974c15187f590b35a82b2b05c7690e215a5c67b584", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "16d155f43dfd1f6c62c0b609207e145eae981c10aaa7e1f65812deb5bea40906", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8b25f8ddb9878f7fe88dc413c7178d79371393a24f24346deb437529e3602256", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "63d47953359c5e69275c426d2e666e2f429b9c65a7f81163f08ab152682ec6ed", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "458df775020a74509bc8d4b4ba2569e040b1e66e788cf1cf2bc22a8dce5b2778", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "216c171ec1e345909ee2451a6c69162fe1318fae3a01ff964c342c8c25948d10", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "03a17c982396f9093a1b2a05c9d84ffe8aa7f12c0242f1839a99cb6a6f19eeeb", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4e837996749b39f9a5760d28bb6211884b955dde293738360cbd3435ee1b8e1a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "7dad5428e74295ffec5b8e988b5716aa2f2d3d2007926e14fffd77df66343d7e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "d16ba5d7c6c3a0ca6ee26a16ec9e4eefb961dc77934568059839b794b178de83", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "e0d5157c3b4f1549c50d440b4bacfe11f4e50fd42831f8ac75885d2f20a104dc", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d7ec74325548e19d10cd9cb32389fd653bd4250a1c7542b3f87dc1cacf897a78", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "659abb0811a63067738f9303ed0e148b2927917ecb4352cc159a0ebf002a8316", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ad622a9cb789fa181fa314ed7a068fd7fa27d42da84eeccb797847595220f9ba", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "81b74fda69f8d7bbc64f27243930bde45a8e5d1d87ab3c513f80c26381e099b7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "6ab15ae8cd6da6de5b7706fa77a0d72b9eb5c84ccb9468aef47bcd66da5c2be3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "bcef62fb53b1df7b87c4d4eaa4c6795efd27afa1f16f5d385ef4a46e5fda899f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "04f41ddca295b56d90b8b3e3d5d2e0830c72eb24aeaf78e525d7ce0c74b32e37", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a9a7da8d053dd73734c09f222af02c300d1ae45c2fcbf55a0b9073e25bc2dcaf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "fbeb3a087e1d619dbff6394bef4273c985e747ba66228f9f8793aba1cfed03da", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "527f6398b8c9ba0538c98c25d68b805bf844a8948e3cc528fb36b7b8145d3233", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "051718882e3319cfd8887a7bd7e39fc9be435b0cec2748d3b13fde72b3239d3c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "57b5a0198064a51d120fc5129377e15d9feb82f4158d09cb1df8e9970982258a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "43ae476534c75cad190c8cf19c22b9a4082db9388719351194e7313f72963f95", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dd3509020f03a842c7d136b8d429a5ab71314f88fe5ed5e7dfbd9330d3ca033f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "0b6fbc3223afb2d6634d91f53ebeb302f9eadce8b7c97bdb1cca8cf951dedae3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0c73f3e529ac6477c41414acf70b3128811ba53eaff73b99b1db98036447b189", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "cb19a65d3e1d6c0bee291c263a1be274b891fceec7185d464bf8d8335b5750a0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "f17a0b8587c76a1ce5dddc6e59f51461c85125512b87fe6cf90b75434e1e6e82", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a2b1315545a09a30e4d73b5a7e259698332f89de9f0a727f9f49785c5b3fb08f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "46ce72025db10bb861b7c6e9ea1ed364db5cc5038f9bd7f89bbc515603851815", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "b487efba7f880c1a625327302e2a2a1cb3af560d6c43affb83b9ee44a4f2fb71", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "8d8182f2fb4828910043c87e7b9ea989b881fec19148ec49025dc862fbd9cdee", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "eb49079221756b71d4bdcf261b2aa61f269191fe50ae1df9620ecef37deadc6b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "f5756016eeff05ee001993169601242c88b4c565e14f6da8397f37c0690284c1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "31e72f84ad2135314b5b4b4ab1627c2bf6a8965f8182f81acec286646ed8a989", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "a21a9e5697ccb52eb542e851da8b522d996a5b1efdb5321efc092da1cb25181b", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "e3b7172eb3040043d6dbad156745717843645414351194210fceda6051146d5c", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b3c621420278c692e71773e4096bd2273a521b233cc9bcc25d605a9030a58a33", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "ef631ead26ae88d04cb9f50a04f878e4d0c7fa13ccf9a5d96b46a6ad922b4076", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "a1b7178046df8743746829a167dae22d1f7250915a67be49af79cfc9b0983fe3", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "5688cb897594c6dc447361f5426010b3e72b01277819aeebacc0b50bfa7dc70f", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "b1915cb0cddaf5d2a9f4ee15c5c676c45d25bd9498e319b4713429fbc6b9b688", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "3f5b7931e4df43da4c472207b869760df9a6f8f95bae2bbec37d671924ac75cb", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "fb95bdc525d4e779c4534b7687fc3fc2a724f6ccb50df3fcb05effd77c922006", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "f99a927e12f02db00c8656f58a7504b3f8ff12e69569ed313640af1c7d1f8f34", +"T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "6e28be07cefb0711c5dcf26ff6ccd427515a2d39ff059dba599c36262a2a4c25", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "e43abf115ae9e3fc1450d8a9815f72c48a9b256cfaffcae8410c87e7fd8e9735", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "ca208edd685f4e8c565a48cdc511f82ca14424de8d7158c662a3d778ed504202", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "2830711d069cae83a7039913949aa313d1e9854f5013508e731fd69bdae19466", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "dcd15f510e2820cb97c43782712e509114769d44c5c228a4d73620dcebb4e718", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "8574fb956bd3581bd9fdaff08258db2ea5fb1510943d2f7a6c5ede4498fc60db", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "7bcc6221994c957c1b247ddcc8e159840387ee5f52f0a2debf3f77d91a31c61f", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "6affdd05bbdd988dda8efdc0f81fa0710bf15918e8cfc3a9e16a1dac8ffb6cbb", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4dfe666d732d3ba8f2d0ff543e5211e4f8803c710e42f8bc478e6e556502ce50", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "1b5809fde034a42d41be4685a8ff5b6ee93d35e68c247694c0f2b1f25fa47b07", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "87f4c98f9a91a0b9b695c035ea08f59a63cbcf96255490222334240f3b673f94", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ccd8e4aaf78b90d3f19627dc634d66bdc18841ce28885cc2077cef1276ba30a5", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "405d028aad8ba2409e5a1c0b0c6fcd93f1b4fda709a777beee6cb739f196bcea", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "9e2de5fa9ff37b99a9ae6e7a043b93fe54c61ed8c550705777744c8492770f84", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "d296028c5206815b64791f5d50df66a3feee75234b8f5b4ff4c9ae3e7a129dbf", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "b07ddc8a8204f72c5e05c69f315e3a10b9416ea49af9b02697672f8ae328d712", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "6103a012acb290a6e5367034a5733de44d72227deb13d9d998facd81fa3da63f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b8fdfa88ab15324b0d0588bc4c3d4381b2404bb47d98d949ca6e14c2673d0f98", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "8054c726084e5f347c87ad128ae3309822895d8aaf0138387e7e475fb0c0398a", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "dde52248d16edb65211d6134b628ff0ead4a4a84854c11407ef61294cb0bad36", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2a598dc53a1dd4b19f9068c50bf9543689e0a21f0a7ae07405df91475343b9f9", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "416cfd9c79c86fbeddd33ffdf204ef9b51093bfef292f7288b5132c6087b7390", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "0bc0cacbc7bd9da53d0cc3516e8cca3da58d9dae1833a151c6dfe6e3260abf4f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "01803a3b24b61f92d827af3ac7c3dd201ddef6fb5000c9ede662db2d06e4b009", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "61c7fd75e73fd19c1e9620a22cba5b05989d7c8dd7b50ef5341511ee93923764", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "438068c2992fd7dc28619aac4d8522d1df3cc163454e79dce7bee860628ec35c", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "08efc0953c8b61044eaa7d2867a2b0702faa2f6213213838b3ac0658882a0e07", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "dff608ce1e062b82c7acea1f69b17cf5d658a0c890c496bff83ecbeac9ab9493", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "e69211e178348cce8b6cc61897797514f8c396ad996a71ea672f4b72a070bc0b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d0b1a4a9190059d6553345af33002943d89a9c6664b9e49239cf23340c717033", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "480af3c9f4c5449f480cab9a382c6ff4dd36958ae24d40bb871516295a5f7e44", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "3b7d0015a893d7775520bf19931324efe2e6a535de0fcdb40e395a89da6682bb", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "f1e35c6c73ddda69e1c21143ebee9fe07e0adc22fb1bd99ba3cc5e5b6a984eb8", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "c163d6f0b60aaf6424bdbe93c600329bc0f49cad54872108ea718aef779b5723", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "d4ddc45a58f6ebba65abc63e5a5fd0499bca3b39c1546680977222a16e8e59c3", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "fec3ee755de7c97facce7466b289538b80a21188e87e21b25dabad126968d918", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f92faa366815cc9c6a7e1f37d0ae111dc43c8b7fd42e64648fdbc1ae993593f8", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "de79654f74d63428e6ee0da558e82348a582776823d2d091e6abd8ba44dc3691", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "7c12de006526f2284e14fce8381491471feec7ff1e736dfa0e9e898f886d3f9d", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "d5e2ff9126931e6be96ca37160cf2c49315598181b586e52645b919a874d2303", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "dff608ce1e062b82c7acea1f69b17cf5d658a0c890c496bff83ecbeac9ab9493", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "d5102f43eca35b66ed3dbd99c6d6dd8bb7a63d01ba85ca9cf3f5843143c99d35", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "13e2eb2a974686f59cf552ec3cac9e889772b05f772b80dc1eadf3e815305da2", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "463f72f2b66b34167a6f7c928257837d6ed481dbb1a864e78347ec03c6c545df", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "3e00865695d9a56e0fc5208cc48ab6132db9651bf3390de65d6a3dff81afb0fe", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "22341ac084f718a0c36db762e8acb774904b38ffa74ce093388a60295ae4b071", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b5ed6fdd2d648346ccccdc1ac56623fe935bb20322e5494bff07b16a8bfd90f1", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a228d589e97873debfeda17b5b7235371dddd8dcf9d0e991085d4e05160c19e2", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a7afb5cd1dc0a889555b44ceb0f2d91962ca3a06d76808e629f89d46be75aa8d", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "cd2e45d01fea0f2177dab0b58a946c1a487908d53f2b732d2a44c7b4127462c0", +"T3T1_en_test_autolock.py::test_autolock_default_value": "2cb4682bf95d564068d07fb2996ed1c4a8eaef3ba4964235d652e739f31b8797", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "19ffd626f6828cf2975bce927010e710ce0760f280e16f613dacc8e185e52fdc", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "19ffd626f6828cf2975bce927010e710ce0760f280e16f613dacc8e185e52fdc", +"T3T1_en_test_basic.py::test_capabilities": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_basic.py::test_device_id_different": "b96755bf00f47f7fa7f4732d432daa123fe0acebf5e49636a5697cb624cace4b", +"T3T1_en_test_basic.py::test_device_id_same": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_basic.py::test_features": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_basic.py::test_ping": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_busy_state.py::test_busy_expiry": "ea75a9f878d9c38982376f2aa948766d3f714c5bd6e6d85d467196de5298a47c", +"T3T1_en_test_busy_state.py::test_busy_state": "74093132f8ca87ada6962a1d2adacc1e40fbc520df55109a3ab3ec93fb63bf5d", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "f9a11c51c2c0bacdd7383b0d6f1425324257c194819385303246d757e3fa659c", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "f9a11c51c2c0bacdd7383b0d6f1425324257c194819385303246d757e3fa659c", +"T3T1_en_test_cancel.py::test_cancel_on_paginated": "270884d5e7fdb0fb60531e13f464750de8265de42b93a6edd6e966d737d3be56", +"T3T1_en_test_debuglink.py::test_softlock_instability": "eb87af9b0d7173a9e1af381439cfb81761cf86f9ae6e3855ea7294b06c2f1b16", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "c67de4a16b2668c5a4a05c34189759beb1611535aefbf74aeffdfad0781c75aa", +"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_language.py::test_error_invalid_data_hash": "d8004e9158d2dfbb578cbc3fcc594d0faf33081d97945518098c7ff02cf1b43f", +"T3T1_en_test_language.py::test_error_invalid_data_length": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_language.py::test_error_invalid_header_magic": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_language.py::test_error_invalid_signature": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_language.py::test_error_too_long": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_language.py::test_error_version_mismatch": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_language.py::test_full_language_change[cs]": "0f96735e9ca4ba6098ff56760d389ecfcc3d7adea2665e3d52a7b7994e0d2d83", +"T3T1_en_test_language.py::test_full_language_change[de]": "bff4d8044ba458ea0551f6510bd7f25cc5c6a8b5996bfff3feeadf0a15fe6f55", +"T3T1_en_test_language.py::test_full_language_change[en]": "f304aa8bf425d6cfdf8bc90822675834827432f6a1c56389f63385e2fea93462", +"T3T1_en_test_language.py::test_full_language_change[es]": "5012477a8512c1c47e54b390188d80f56caf27f8dc257e29705333c616143b3e", +"T3T1_en_test_language.py::test_full_language_change[fr]": "e3fc549ce03c716f23e22f4b9f9af779562ab5ae1f33bf2ebdc3daae9aa856f3", +"T3T1_en_test_language.py::test_header_trailing_data": "1ef965ac62e3416645da0148ce97cd0eae755e4115e31157bc463ba8c23e163c", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "1c16fdbf36cbb6f392a705eac2a037e8abcfcaa1c20f6235a9964d5ba230e930", +"T3T1_en_test_language.py::test_reject_update": "3edfb420e30cc58fd7e3c26a18b12f2d82544bd0bd6e604f47db6a6ad5748126", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "0b2c1abff78da669f97266a5a713381685dc8943e07fef86879d84ab57a616f9", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "0b2c1abff78da669f97266a5a713381685dc8943e07fef86879d84ab57a616f9", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "06b1b61b673bc9cac0f41eb764b6f1565a28141cbf2163c6414d0ab78c1fa8d9", +"T3T1_en_test_language.py::test_switch_from_english[None]": "a55c76debfa9632fce7906b4b976e7de6156cb0f7a4633e93aba9d26d9df6b2e", +"T3T1_en_test_language.py::test_switch_from_english[True]": "a55c76debfa9632fce7906b4b976e7de6156cb0f7a4633e93aba9d26d9df6b2e", +"T3T1_en_test_language.py::test_switch_from_english_not_silent": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_language.py::test_switch_language": "f0613dbe70632c05cc1bc8f0f7b3fdfe189bcb31f8ba8bb5212b7d61f8346974", +"T3T1_en_test_language.py::test_translations_renders_on_screen": "b0a8dc19a95d153210ddbf543ce59dadbb0997b8fab9ecc8a6f9f26dd4262ab5", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "64f523d67622da33aeb28a27dafa37d66a157e7b4812c9cd7b039e5b1c6c2fca", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "e5f38a9bb5748ba321b07ed92b4382165e200d3ea8b4e4dfbd6b3cab39c33e18", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "11c899f4f7fece4760e8abb997b76031b4733a421cb374e0fab7a25c81a73bab", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "75a8135cc46a082b667abb29e54c7549186b1c4469a912b02ba67ff3841b58f2", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "9aa6b11b0eb79640d9d5bb949a18c51b4ecdbafb7f001eaea62382fe02d948d3", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "ae8e24fc6d13475b2b208ced1c18288d80cf22c13707ad9cdb4691912155a909", +"T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_msg_applysettings.py::test_safety_checks": "13e182ca6ea302d2aac9d1a79ee88f5b2f2e6a2d3c7736574f993ed0d6902cbf", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "7b3c24c81f6eb6b0eab37bdd893a24c5f1f84ecc1e8bcdc4715fc2fd021354ef", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1b1d606ce8bcd27723d2710d138a794f429372c94a30bece6cc31269a1f21072", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "f10f41495cae898d12e3af94805da827efa9a03fe859fdd3bfa817b95b891278", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "39254c7aca95a73f6c94ba0b078edf6703735c5460d9ddadc0a5783a9032980d", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1bb988cde8c3b831d190044a4cbfd2777d65c418121f68d3557b3fcd80a95a18", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6f64a3f2a3b6beccddec22a22ed3974ad16fa651e113b346d879c60dc1db8b23", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "0af92ae46f374e63f5c2c331848d5478d93eb74187a3f2a0d0723b04c8c96dfa", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fd5f1ff66830a71a43339cbfe7af0f430526c26c0d69d57f24f12033fecef06d", +"T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "6867b3fefe40bbdf848693ad940eb096c9974e57e476f1efa9201c30502ff621", +"T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", +"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "23d53668464ede2e26daa6564ee13e6b6387ef676373d0f80f409fa7f9c3dad4", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "72a8ca804526cda3824b1623d8054aefd1f9224fdffc709e97027d95b13c2bb7", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "12ac3b5914172aed8e4f65af84c0f578195c81995874c18d002a7c5b1caae835", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "99a1ed7d1a712c8ae7b9c331494c8479b0b0f96d35467026f3726af652825260", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "b269f100be9f6c4044bea8b1369d635fa87968777dfc9b63d23c3e5761c2e99a", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "56a3ddb6a2c327da87691545ab2f9b29da0e58330c181ee6fcc6f8b332d8ca56", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "410462caddbc24ea6943b73bbb1fc8e2b61a88b24a8a398e241ef9a749f1fe57", +"T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "f91581bebc54a9bd1314dcde8875243b791f5cf6daab448018825900b4ee4a99", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "0b2cfca6e7a4455e8452823fcef7889741da7b53a6237c3d04cf5d2e8f6faa47", +"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "47164fc9aad71812ca6e96555943b4bae4178b420d0c7916e126891c06985369", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "0ff9ca7e929297f9d8cefde3831e7eb08655aadbb642fdd5ac547c80f55019c5", +"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "1498d301498842cf9e4e368b5c3d8b0691376d1f7df47a44949064ae612cc3fd", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "187573b5638cad2d53d519fe2bf5ebb816d8db99e6a67b7bfd7944b8bb65b5e1", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "1498d301498842cf9e4e368b5c3d8b0691376d1f7df47a44949064ae612cc3fd", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "1498d301498842cf9e4e368b5c3d8b0691376d1f7df47a44949064ae612cc3fd", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "4468411a31f193a9334fcd47c88159cdda21a13360d4eabfdcbe0b3bea77ec43", +"T3T1_en_test_msg_ping.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "e64d37f2fc3cacf8ad12bdc186d4f6cb6ca577ef1583617c1f9a0a84fa3c9606", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "4d20418eb53cc48819771756690536702142e7236bdb02f8967a32308ec1cc7f", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "a17dbf92db477b25e50b9247ca3aa92681e37ead19183422d614de12be423101", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "9dc902e551ac4c8c3362a2f008206dfcc07afddee8327cb66cb00a7cf05f1136", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "b96755bf00f47f7fa7f4732d432daa123fe0acebf5e49636a5697cb624cace4b", +"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", +"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", +"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", +"T3T1_en_test_pin.py::test_correct_pin": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "c97e172eec86a98b5a3d3056ef0d84b42c1df9e7131b94edffc435a668c6a468", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "1a9f6eece6177d8eaa7483a232232bb1d350a7e4280985ebbd9197eeea75e2c2", +"T3T1_en_test_pin.py::test_no_protection": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_protection_levels.py::test_apply_settings": "b222b0ed44245ced7ae145437c318dc3605d6e64eba9e145c9c9471b38b47c37", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "4dedc4b034e381331bfa7450db635d0ea1fb34e2380ff449e893a6911effdacb", +"T3T1_en_test_protection_levels.py::test_get_address": "19ebb478eb3f5bc9a7e5d973a2c89d38a4d9f76a31e9ad4dbf9d08ed502bc896", +"T3T1_en_test_protection_levels.py::test_get_entropy": "88ef41abaaab3c0fa5fb9d7176c5c5bca20942f634a7ebc6fc9d2268b5fe1b2f", +"T3T1_en_test_protection_levels.py::test_get_public_key": "19ebb478eb3f5bc9a7e5d973a2c89d38a4d9f76a31e9ad4dbf9d08ed502bc896", +"T3T1_en_test_protection_levels.py::test_initialize": "47b0d74fc8864593a7cc45e7376a2865542a1c010ec2027641564077d170e291", +"T3T1_en_test_protection_levels.py::test_passphrase_cached": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "487d5832616e7933a7dfb15d3bf9f9df26d81f35795ac1588fc42f8815841313", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6426cb18f42ba96e7edc71d57224b730b5e746b12d8e5404847327bae34fe6d6", +"T3T1_en_test_protection_levels.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", +"T3T1_en_test_protection_levels.py::test_sign_message": "310b4b89db8a4e375bb0e8c6575c28e7038680053d83c199f996a9efbde8ec61", +"T3T1_en_test_protection_levels.py::test_signtx": "450a89ef4b76241da3f052c4c5993f82d620eda93d63f9b35d9348329836ac43", +"T3T1_en_test_protection_levels.py::test_unlocked": "8ce8e6f0c36539f09a0d92c3e1f911b4c25f706e08e83f14ed2e8468d7dd1b3d", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "c263d8cabf3f9c673e8f508285e60aaaa5876a5b289e6c1f9f8a59f0313c9cb9", +"T3T1_en_test_protection_levels.py::test_wipe_device": "11eba492f529037ca60cdcc4551f911db89d2aff9dcff3391bbf7f9234f789b5", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "52467c6ec1e708a8eb2fdb15edc6ea1f24c46b73a3d1ed2b49dcd4d0abfa9305", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "ab1f5c89c8d8623063a176dbd01e37bf40e76223eb1d8343ce0dd7af245c4107", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "eaef311f84930fc6febe2452471ac3414adb9247f224186d9a32a48051978162", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "91dca037194cd69bd5fffbe8e3155a0daee46dbf2b785b08e4ec73f878a84c6e", +"T3T1_en_test_sdcard.py::test_sd_format": "a09b474182d5bc7362079f5a4b0b9294bd3f8f2283cbbc3d2b90b09844a91d32", +"T3T1_en_test_sdcard.py::test_sd_no_format": "dbff72930103b6605d206e5144566a373f735bcf24fa8fd0860b3e1137ca834e", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "776749a894b6dfe4c4d9ace0afb4af54e75c7cb98f0176d0521ed219dd26015c", +"T3T1_en_test_session.py::test_cannot_resume_ended_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_session.py::test_clear_session": "52daf67d6fae1226e3bfeaa096520809db121d4c71dacbb34cab189e61697c1c", +"T3T1_en_test_session.py::test_derive_cardano_empty_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_session.py::test_derive_cardano_running_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_session.py::test_end_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_session.py::test_end_session_only_current": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_session.py::test_session_recycling": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", +"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "59a9b9fbfbe92fb73a444f7cd67c57883dba9e5c2b219651fd7bd6ba546eaea4", +"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4036f4a9b235b5fa274cb69537c6eb08e0342ec75523e33710c50f66152a0359", +"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "a20cba7405117cdc6d7ccf7c9098ca29e5ae0743edc01fc2c890ef878ac40a4c", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "5389a24e5e9d99a1c4e9910292de37720acacc5f7c4aff9ef661475357062d08", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "546988b0e402ace4b3240ed3a973ba35629872a69d9cc23b25878c7ca9b08512", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "bc4f39786a92ed52ddb564037b23be3639813fe2189ef9117b90fb62d3473688", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "8b882408869f267b9d2039890d9ee6fee6d9ca08cb42ee12ed1a158f528a8bbe", +"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "e6594b2d7a799b113123cfea4ef5ef3662943eb19178f3d2a336d5461e7bf7a6", +"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9fefd47db12895cb9f34c6e85fc57d683edeabf96157a6fea0cb1e94814380a5", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2260b3ddde77ab38e6f1d8c373cb3fcb5c0763ad794d364770e68657ae72f1bb", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d42b9d33225764a1594808eea8499ae5deb9ddd84ec658aa7ada598191838a78", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "67fee06302c4593d652ee7ff72975083203ac47248d895728d6bc723098e9498", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "ee6fd24611c22fc1132ee28e06965050bda20f74479507f82b97d75839944e08", +"T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "6b4825d5c621db5742cee58368abbe80464911da51c1c3cffefd27905518ba14", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "7e7bdefb63dec080b6630f832c18e46e3e0237cc37dd7881abced80796a78029", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "08021b49a689539017ea7441334e64b4fc031dbdbe91837e2bd5a9a4e821fbad", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ba5b25d07bf58e4f99ddd923e0cff166c12c6be36f7f139288884541b9e2972e", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "abdeae6317000bbc9759857dfc8178c63e350a4dbcb5e28aa36a13794bfcc2b7", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "04ef2716224ba5633d22e53c5421faf7895e9e17685d84558aca6ea24c0d9bd9", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "84212ecbe445c7dd4b6b59b0eaee4094d887e9dbe3b35457f97582e1f40a1d5f", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "2023bf841f3d18fbbaf26765065cd92abea0eee4f8b2f7ade225963934f1b03c", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "c78c66897eb06eb1640d0125a039522db20593d2b381b53c3163fc905d1a062c", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "bb6bb367b0fc9bbefc08730706126f7c7b5d8f478134bb0b49fff955b85bd234", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "b933e11507605e551b7fa529c85ed557dd07106220510feb5aa6d6a8e68915b6", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "75a726e2efae76755a44179d8269c1c794de24c1d74b05bb47a36e5e4af9fcd7", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "23ccb252c1ff5847c1db298a36dae6cb48fa2ae0962c10acc05bcf666cbe9875", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ba87e90e6d810d1a8e39febbc867d89a69007b1ce7bdcc63224627e14914ab66", +"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "330f7f0028869424b70ffd52b56584663cccf30342086022ffdaa836af34e12d", +"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "a9fe118399385e034e683665083a4ccbd85fbaaf633d1b63df1727e4fa68cd85", +"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "d10c0dde0959add46d266575b6516ae1848889297ba3fed412f4fa4ae84266ab", +"T3T1_en_zcash-test_sign_tx.py::test_one_two": "55b4a2d9fe8cb0d0f5977e58b232e73895e69896208efaef1a2e6cba8efe57c4", +"T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", +"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "69ad02c3b01887f4b1b4e2241791b34449a8cc6319174077634f02e74217489a", +"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "5de22744b72e34926cdfde5cd8bc6a7be1a6d8578b07965de2e4961be16beee8", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "f263aeae7eb9643d6bff1592bdc8dcf7aa207d81694b255d006f1404adc723a3", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "bdbc974780afd609c08d9ef755c9d111947f695b5712aef70899d27bf82c8ef8", +"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "e3878817fe299c2852f7aaa1e663fa270405031e71817d8140b7056415552ffb", +"T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "b15ce77f1ccb9de9cf3ba7a8cd6bc97bf52040fab84bb80ecde321ec59ed8dbb", +"T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "6093b1b647c91bdea75429533c16f92483abe01e7278cddf8311dc6d63e9a42c", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "a10021a9de1fd7726f1edae3eddacb4026d019456338caa6b087e64bb095fb42", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "8a9dc7a898d49c9db6863481f4f2c4c3086d7b954ac89b01564e296c04917ac4", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "cf5a52723f0599b739202dca77da2fe387c52a5ce1885b9b5dba025a50b9fe4a", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "d5ce001ab5b814e7e2599eb38e353980d0911c4d32546f843c0a54d513f0b35d", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "4ee7888beccdf7a8ccd06e72e4267ed02ee0a05f5826db237a0a1b61123bd4d6", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "837d521274bdb9f793da96aa158c90405b44e1f60b1c18374fa5ba93b24b8f8f", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "d5ce001ab5b814e7e2599eb38e353980d0911c4d32546f843c0a54d513f0b35d", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "4ee7888beccdf7a8ccd06e72e4267ed02ee0a05f5826db237a0a1b61123bd4d6", +"T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "837d521274bdb9f793da96aa158c90405b44e1f60b1c18374fa5ba93b24b8f8f", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "f610ff3f5205dc11a3a3bc2d3a00f45d90ceddf47286911cd6b0875ac28fdd6b", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "67cce35faad540e24df64451de67cccc334b76a931449b5c6cb173768cab0e64", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "214466d2c0357c010e2df721b450736747bc57268d566f370973a3802f13eb22", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "48883805f726692aa612ace74c51d0b0c6fe06eda6898d41c80b9c7eb3e44030", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "a314e354e83333112e0e11264e97c175e9e3e911c3c212f2139a7be1e86e3083", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "a314e354e83333112e0e11264e97c175e9e3e911c3c212f2139a7be1e86e3083", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ef2ea30f4ae3da933ae53bfb1b741c94526222bcdb3618ef5e27c04ecf2f7b26", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f19ba1a048878a769fa8b842fd2a23dd8533e0b72c501fe5cda93a5ff9075241", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "6c82037c7944ef866c41b578ac7f680f0c578da7b1f136c055a46773e2207ddf", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "f1bd5bbecaa4460f1171ed5c9c140babd496843fbfcbd61bf748fabb4f33ec8f", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "f1bd5bbecaa4460f1171ed5c9c140babd496843fbfcbd61bf748fabb4f33ec8f", +"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "c356969585783154be37819dcb5c1b22b5574747ffa2d37d7ee458e996ec27f3", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "c356969585783154be37819dcb5c1b22b5574747ffa2d37d7ee458e996ec27f3", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "357bf0ca950533cdd3d452b2dcb7aa06ba1ccb929b00e0217dc77d1132261ff2", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c45d7d59ea1f5fffc34bd34fab10a08bd49372df79d538a7a5d94e5656e93e37", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "eb077f6722eb8dc0851d578beb11f054006df01ccfb60890b6a6fba31ade8831", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "d86801dfb8aa2f35f83588cff84b15afee02af23c1041d09bd85aa93531a14cf", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d359600c03265612b1da57090bd6b344dcf15dca2b6bb11082132445ddf61e0d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "8fd3972e119070574de778b1d2144e47925c4f1b822cf82da7ebff47038f3309", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f83868727119831ef97bfc3ccdd03fdde9122d9c7446e2d4e897f1fa6a22355a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "a7a05777a0bd2d6ee796aef96036487b8581efaac9cd16ab84cb80866ac0b255", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "a2e30316dfa1e1cafd8cc6169971555e8a89e47c37fe765df6e9557bdff89df9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ce7e19cac1a192f5838aa3e947e235653ac5654ed750bb2a7c8ca3d7cab7f5cc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "ebf08c5cb26f7889f4c35c3c705188e2ed69a190b6fb7d676b3843da44b9f3cf", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "c226fdb7d080d0561f791ff5240f3bbd23609c406e3c9c5daec41bba4753e980", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "db41ea5b4c0e4fa313f67aa29d6331ce624ba79ec82103273da47079d422e2d3", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "180e34e65d4869f6826c3137de20dc7bc333cd14b4abf866eaa0932af4c08db5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "5db5cdf4602fd039cb0061bb7183c918a0727369359c7ff6f0a3a0d2b38794f6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b27f1a9a3ec8e9511a550e7f317b8fdfef5170da3af6de7f1fe6effc3f352d5d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "5e817c8efa97fbb35e49e36defe2de884652ed698fdb5203bdbee10f1d82ffcb", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "cc0e8ff4c3f97cfa9a6a57e60574ecc90ec1c83e0b46501c56f6a3d252da6f95", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "93e30f2d8931f22cba138a877a21fed01de844c3f5199520a06ac139a4d9c541", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "c0a441130364247682ffcb719448209687dee9ed7a2b6ac1fe107dbc407524ba", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "f6981ce57969456e40df06201824c5ed70de5407f87d4ab86869e15e04afa015", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "1e44abb57d3a3f76e5ddb103e4f9eaf4b2d7227e4e0f5c58e07b1df693914590", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "956551cd4f59daad41129561474ce1c9c228f525dbf8de77acd28408d1913212", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "8fd3972e119070574de778b1d2144e47925c4f1b822cf82da7ebff47038f3309", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f83868727119831ef97bfc3ccdd03fdde9122d9c7446e2d4e897f1fa6a22355a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "a7a05777a0bd2d6ee796aef96036487b8581efaac9cd16ab84cb80866ac0b255", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "a2e30316dfa1e1cafd8cc6169971555e8a89e47c37fe765df6e9557bdff89df9", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ce7e19cac1a192f5838aa3e947e235653ac5654ed750bb2a7c8ca3d7cab7f5cc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "ebf08c5cb26f7889f4c35c3c705188e2ed69a190b6fb7d676b3843da44b9f3cf", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "c226fdb7d080d0561f791ff5240f3bbd23609c406e3c9c5daec41bba4753e980", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "db41ea5b4c0e4fa313f67aa29d6331ce624ba79ec82103273da47079d422e2d3", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "180e34e65d4869f6826c3137de20dc7bc333cd14b4abf866eaa0932af4c08db5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "5db5cdf4602fd039cb0061bb7183c918a0727369359c7ff6f0a3a0d2b38794f6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b27f1a9a3ec8e9511a550e7f317b8fdfef5170da3af6de7f1fe6effc3f352d5d", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "5e817c8efa97fbb35e49e36defe2de884652ed698fdb5203bdbee10f1d82ffcb", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "cc0e8ff4c3f97cfa9a6a57e60574ecc90ec1c83e0b46501c56f6a3d252da6f95", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "93e30f2d8931f22cba138a877a21fed01de844c3f5199520a06ac139a4d9c541", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "c0a441130364247682ffcb719448209687dee9ed7a2b6ac1fe107dbc407524ba", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "f6981ce57969456e40df06201824c5ed70de5407f87d4ab86869e15e04afa015", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "1e44abb57d3a3f76e5ddb103e4f9eaf4b2d7227e4e0f5c58e07b1df693914590", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "956551cd4f59daad41129561474ce1c9c228f525dbf8de77acd28408d1913212", +"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "7ba2fef7b33d9b3d37c2003879d1f7a490a889a219e4297f9a23779535184718", +"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "479da1b9b8cbf10921750351a4b8e250981bec9154f1b2f2afad73b2c4f9f602", +"T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_bch": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "4790b34ee2af5c36bfb1d1b12ab5234f7dd733d28d858cb1babd2b6e566880fd", +"T3T1_es_bitcoin-test_getaddress.py::test_btc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_crw": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_elements": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_grs": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_ltc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "5d0ef99d730ac59d18191f4693273f0eeaafcb6a2b40ead0230387d8936f18f6", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "dbf9d1efd50e10064798b97bbe122baba1e1ec9c488f161f9fb6003b65063075", +"T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "a563affc4c3b3beb6852f9d9ef1efa993f545f6d646b0a39425a28b076306510", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "e8d5cc92d7599fc0f51f0b0569e82c85dd48246ffbd6a49c0c5f88cf1c333a2d", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "480173be10485b04906552b39b1d47508fa318353273f4f91ffc5ebfe16e49ee", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "89de41c64a6e237a0790875541b0ccbff7b4e34f9f19a7c35f567a031fd95fb2", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "e74ccde11ec60a3881f8fd98b6560c2d720c1bd7f5c6b7e2a61b624ce17687df", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "bd29d040fedd616166aaaae692eca4f6c74038133b330f868c469a9bf510ef40", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "0187f76784a15ef91e9cec4e9c6ef4d6bf867f488e06107fa960bb197b895604", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "78f3ed8611b370c777d51e7b5456fa79e1f3cb4901a65012870bc7083fd30c2a", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "9edf495e26f5e44ec81d8d571f553bf228456994938a698c864cfeca07d13b9f", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "596eb6f235a5e4a5fadbcc3d73acaacd58e72dbce585d07fcf19566a834691f1", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "3123c7f7e7fa8aa3c22e9f8ec2fc3ac387b9bdec11190d96808a300b1bfdba03", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "19ae1d5f3650a8dc0f04db323f8eb1f3eac908530bfd34bf975eabce2e7b442e", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "ecf467964be383aaecd50fa326a2c24048e11f6267d16667ebd907f5fd1f430a", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "6347223eb9663908717aa2dbd6a3ec00ee42452d1868e7421f054dfaa20c6b11", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "e53ecdb9e22b347afd7cb02561c0e8511ecce80c490058ecffb7132e7be9e14d", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "b1db596b9ed9d50f3fbb1ff04218b8e24d8dab938b946d0b3fb734c4364348e0", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "f819823dab1ca20a566406ecd33be89da9bb132b2f0741f3f69e2520b4046d0a", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "e3c09a5c5189e006e99b3d0ba6e39fb61ad69b9cffd0321dd72f2b2c94afba09", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b790d44a8e0732a01daf178eec9984bb5a661d79b0b4c2d0d8967dab55f6fb1f", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "75a2c7eebd35b909cee3e150ce3a64ce6017b8c3e5415d9f4d803ddc4a78e2d5", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "3bd7c2f4ce28270484f067f86d5297640029dea68604dce741ce7e34f51df3ab", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "46a990dd535b00d5dbcc88a70193f69a571bb393990ce3171507fe887943f3b3", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "9bbb4d7882099cd63b660ac266573a0933fd3c9735a3bb52b4dde47a018dce56", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "8d713e67a3f8e179e28a52e7b85d343716a64e9e722f08fb1eaad633352a6b59", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f6f4ff6a2dd814119e667d892b766b7d4e45571aab95be63f0b4993bc51d47a4", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f6f4ff6a2dd814119e667d892b766b7d4e45571aab95be63f0b4993bc51d47a4", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "7128ae10d8119469a2f092ea8d8775dd49012d276049a9c804e8c59144f9ef40", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "013343b328baf708fef1d5108b18f115f9db7e3f8407ef22db594c0db3ab0359", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e00c17cd2a01ba01f12cbf9eda31edb80cdda56f15488bdf76b0cabf50563921", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "5e687c77482ddadb97f020563713f088945fee956e98cc9da664fdc0da352c73", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "23653b11501519e6fd0287df1303e95b738ea0ca98c7b7f245cfc95972abbddb", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "e8f1b740eb94c1105f1552686b1e01f8a5ea23756a4e80473c730d2aa2faec24", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "0b5bf8e1e1d65a1cd495b9e0f037070aab334d11f33f2d5ae33f89383dc0db50", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "c71fb36cb557e26e38524f0a0f13df1b7cb7d12b8bacf6cf7534feb04505ac1a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "bd8bef5cc3636d06b2adba42877e7790c1219cd798fc44b5c465c245626aa07e", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "bf6e2cd01ec77ba6ce494620d0f80a1a5afb05e1e06ac399bf55249051ca81c0", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "aab91678db4ea1f9028979797fcc87b85bf66793a7a5fdfe08978814d605825d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "ebc9faf6acb3975dc408d9d087b91d04c6f21bc32d52ee351e3a20617bbe11b4", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "7ccb1a25d3b74248a3fbe32a11130badfe105cb080602e4a715ba17f6a8f5f32", +"T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "a4d600d45dc0fbae573c0e4124863d29f5b8048341b1c84968871424eb4f18bc", +"T3T1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f83868727119831ef97bfc3ccdd03fdde9122d9c7446e2d4e897f1fa6a22355a", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8dd4032523da4c02bb67250ee8b0fc60f377da14989c2595e699f4d0a5a16ef1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "50258e0a7deeb50d0a9a7ea49f2b2aafb43f3163a0cb6aa99460edeebe5d4bf8", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "eb34c96d21f3c0babf23a781d8287aeb4458104cf4e51bba63cc23506a404a6e", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "05e14b36676c7b42ea79229495a11d58a470cc340c1ab9e83dbeeb11c91a6d41", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "863f194e732a5adea21f8a4e4d709d813cad33b58162825b397478aaa1cfe4cc", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ed1ad6236ffe1a3e4c9573b2412d0b7b188a2820c5ac45c1441e0320a0c01bfc", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "0369bb9916e710f7d5cd53515b47a55d33e369d8dc7a99dd830b04209b5f0a24", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "54af223b196c203521f51b9fbbb04d653cf4b73f741d49f1fcbbd6306722102d", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b27f1a9a3ec8e9511a550e7f317b8fdfef5170da3af6de7f1fe6effc3f352d5d", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "63a6fea73716073670358486261948505aaecb36c46f01784099049e42635953", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey.py::test_slip25_path": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_grs.py::test_legacy": "06e929ecbafd55f868a7455c90e8fb62db6d5aa33a1d19af7ae1b63e44b7ec8c", +"T3T1_es_bitcoin-test_grs.py::test_legacy_change": "3fc9cfb36d8bd254855d3edc13c52495f2fd0624ae649168a0095ae3863ed46a", +"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "1a4331497aa76b84e813f490bd6b3e0983f9e9be6988c55eb04a503ca62a510d", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "aa0205059d9a24aa2f86633ccb80cfc24a49b32667042d2bfa4eb2b8552031e7", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "ebbd86349820b18047229d39d50d73bbc248167ebf429a70da262bdaae147c9b", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "c1ee150a3396eef4267f33f33ba48ccc3080a3f7ddddb6b21f6195d8500645b5", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "fc087c7f9592e2e0148d6ebb71ac62597739009ac1d5c5f186463b29454434bd", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8d203dca558ef4d35fdf3e680b72281ca9e6d662b3177ea94943f62ead21a6fc", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "69cec340fb94a78d5257f7924e70500b7b77094be8d411c7ae93a943ef539f42", +"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "3271dd67d454b3e0b6f44258a54ffd6e092af83225844dd31819743a0b8fa530", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "c709a332c32299c6a250e814c3257644abfdf2fb7f3afb07f01ae44a49fda83c", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "81beb8f066419280a098312fd796278a8fba044d67557aea3cecef3f5e8d0d8a", +"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "4b5d700a718e64ed0c98696e77bf0e10266a5e62706c778d2a562d88b189809b", +"T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "7a7595974310601ee0cd7f6e2b238cf53a11f35e51625cf9677b837e7847b692", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "fb58af7d8cfd94149982706ee6f6141cc7daab15538d77ae1e3b864b108d7c42", +"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "596c872d15b1731bfcb0fbf6f608e234511e5b714aa6ef10519ec9df6a624856", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "9c7dbae99d672ac03ce67a6c04d9961319afa7fd536097489b00fc0197e123ae", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "91419e3101b2cc905c635c9b9a50ea40005d2211e396fc8a2e77c8fc7f800688", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "6eda04bad4907f8beb1328ba54f9c94784cb3153f48f219d32cac299114d02d9", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "5f3079de8557ee0c00fc01706fc355c5162fe53fb45682891e012923fee9611e", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "914b1cb3ab05c070093ce2373b0270772dda95881e070ba151251197cca0d710", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "5a77c516530a010c3d8f8efcea6fe6e41ea23658df996b53845c724cd81052a1", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ddfb6eab9c763bc9957d63eed763990d0bc08450a108aac99639ec67c827e639", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "bb171d0d7e8efd6cbf97d5077602145106cdf9266abb97f55f586afca864c5f5", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "96e22e066a384a5fa98a083eef502f6050a57f997ebdc7f593b2e82906976e35", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d8cca097515dd601faa73ee4318b42bee2b0681450a8f2ea295bb52764340718", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "ebb424b995b05f9508dc4c6384788eca1995e25916cb42bec3bbb96bc2c1536a", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ca0fa41adfa10d999a7148fe1198d5d862b990273e02c69a6c02bace5b52900e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "5da8729b4b4e4a8d67c3fe1bfa693a73ab8559d4c2f48e242fcc7fae86ca2ca2", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "5a5c52ab62f17ab3c0460806703f25ab5ba66b8023fb78aa61f2f0b47413b233", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "7628066c77550d3be041a64356b7084f8ea6ba7e4a45daefccc464ad8fdb9c46", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "d71cc30d8f669365e772ba2827089d12df79f8cde0ac678d9ab8646767894100", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "334545851168672303809e0e9b5e4e53d695e512beaec2b8db81bc9cb4d9f291", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "5d9934ab22f4525b52fefb1f493d86df907e08529810e89a28072646ea35f63e", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "346a4d32e6990ae002eb3d18b75933c07f3015c25c1d81f5e199c7c36f5243c0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "cc24c07037d233a411783667862c2f5a89630a460c18073e390236c1a9190c69", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "3841d0e9cf2f5dab2f008b36b4e6097112d3bb8885bcabfd67f7acaf944dbde0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "2aeeebe69f622307e1cf0fd9c9bcc37b4a814dcd43158a5f257a99649fc096fd", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "fc9d57cc145e44a87c31d5d50d457cf6fdcbdafe5d0c1a5fd813e68a5f3dc79a", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "9f82fcd809b994972c7895ce45e99f93df84167e15e4f21e78fcaced3f0e78da", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "8b93370be5c072c5859301216fab40b7930e6320f7c1a192fdc98bd6909c80af", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "40c25d2a86415352a9c62185ef5f24b4ffb893d3fc38316c898cdb8f74fafde8", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "bdbd4995f9c671d9d0498f4fdd17fd758aa7224e286cf2d4612c5ded78421ae9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "d44b4f5842f05b8097f842669e9349634e59cad4ac36be91ed5e785e41a876cb", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "859d53aa3f3d5256926a02ef851051fafad59756306be3504ebb4bf4435ad0ac", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "e8647418d2e97ed514ddd0b9986561b8415eb9038b9dc3e1dd3138957a02ca92", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "db2b58eb719150ad1c02b5b08f27d3513d90f42363cda186c366a93c83fa2333", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "bdccfabe374cd320cc4de12d84cdc70358910bcba9bb47ad1165e9db4e72fc66", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6b2eb9a5e9cc85ae5a9a87ddcfea0d1be765ed66c27c6a59f48782fd37652273", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "6d60b14f880f72e97d62499538d71acc32d305be206ea5f10e196596743eb021", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "66c2b614822902b17913496c6b0fb770885f3913fe7f1518b7863aab25bff1be", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "943930ba3f028cfed6c5af3ac58286e54aa28ebaaae8d85195582b72e8ffdf2f", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "681c33972a90191f7da49764e49ade176fb2b5dd3ae74f4d3be7bca1b3c3ce94", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "66c2b614822902b17913496c6b0fb770885f3913fe7f1518b7863aab25bff1be", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "66c2b614822902b17913496c6b0fb770885f3913fe7f1518b7863aab25bff1be", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "66c2b614822902b17913496c6b0fb770885f3913fe7f1518b7863aab25bff1be", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "479fd7cf268cb8b3101f92e26d476636057891ce7f96305fb63af174b07cf513", +"T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "e5362a06b5f7a073bb5f1d4b0b854dc436703a70bd8efe03c0a5c4120f4afa77", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "d98fdee72488a33cd0ab4344cd516bb7aac0f427944edcd10ecab4ff350d0973", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "a1ad2d2a277e106e0130a63a060bd709c8a417911e568d16f0078580e0fbc4ab", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "75135e4c84b0961efc966ba88ac093b977872aafbaebe968003761b166037e46", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "75135e4c84b0961efc966ba88ac093b977872aafbaebe968003761b166037e46", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "6adf936697d39c299f9850f90be87a850716bca9c94c2f0dec1615427cedff29", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "aff007c29362be19ecbc6973fe3570393aff3594e2dcaf930fef485302531b01", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "fd93e7704d2e54e6542ae2938aba809c2a7d7a83db9ad6e469c74c1e11c62d21", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "10d431f6756751acd12b2de7bd5220508e3052a6831eaf2db6306d3b2a4fb490", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "cc8e0c2da1a73d3bba863365d6a635f577c5fbec52e81716369222f25da1a017", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "fc88a2763640903356f099f63d78d6d8acb81a692b1bbf7b9e2bb9d4e5792080", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "fc88a2763640903356f099f63d78d6d8acb81a692b1bbf7b9e2bb9d4e5792080", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "cf2a7eb19b2cacb0a16b785e5b4f349b936592a001c5c819f4c4c1ca234af1fe", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "4d1e20cefbfa85ef125a5d824228a3f7405caa747416427050be4355ff3a4a74", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "b78aacc058450864aaab57e8e8c7cc8ddd068b65395451e6ce86f9bfccdf3ee4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "b78aacc058450864aaab57e8e8c7cc8ddd068b65395451e6ce86f9bfccdf3ee4", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "175057468bed6fdc79e3d022d56d0238665d80ec3ce0ec51b8e4fd4d6db884c1", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "788cf92b85280e5d26fc7c634bd8174acacbd0eda3c9d28e39f15b313948ba73", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "b15f6c46ec9909550f678103b4073fa13e6913727204bee766815aa25046fd14", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "b15f6c46ec9909550f678103b4073fa13e6913727204bee766815aa25046fd14", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "74a72f8153129f50ec8759bfa5da8f3779fa6e04dad153a330091d5df23b4df7", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "314d8bd796667d154b7888cc3bafdd1a0dd80308d189ad79af071ec2892acbb6", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "24f43febdf457aad8ce2b0d7121b847c7b61793e71b9177262c9022d04256515", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "897586742f92d707e36e6c7b3ee9c1385f8e246e265c15a8296a391052c99353", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "bf6f137c622a3476212832edcc0445ee1fc9431991b04ab35c9d434b2a454d4e", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c0fbff56efd95a30c5433df31fa3e8e2da39469f1cd0230f9c2f31711905abf5", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "8fd80802be2f95fec01cba2e0b268288a4b3dd79c23a1f142ec456a95e96ac83", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e6b89a68deb6773c79fc9758b2d4fe8a29e76939c0fb54bb8341da7d074d8906", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "b0b1bf9030390c2d88e2f051389ec0a8fedab96e6d9186c2076391665f8db946", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "a897eebb20b8c7e07674910004ce5818a29f506a27c25943b7de7c6b57a2abb1", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "cacf25cba937fe5c6d7a73e51481f49693cdcbad15e27bfa0c673985e4650317", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "bfdcfbeae3e8814ef9c7cc660c2a7a9feecde4911a7a67530e20189946d4d488", +"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "999921a1d1280a0c295176101cd1bdcb7d0002f817f180b6cfb1c5d704ef1b57", +"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "999921a1d1280a0c295176101cd1bdcb7d0002f817f180b6cfb1c5d704ef1b57", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "bb7849d402eac1097fb1413d36c782ad4b0ebbcaa7465feed204756a5214c0e0", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "dcfb4639dbad27208fe18c7c4f1ca7c0bd0c124887c7d5c7c44750ae40befa64", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx.py::test_information": "b80a13e107d24940f7886a27be341dee470a751110d07166408929507a0e5869", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "48a3a3d6aab6c5485b1502c67f311083ca107ed5c75f0639b27db6bb1cff0612", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "46e005527ea0251756924c1a1d64233d22602c6ff82fdec7dfd67c3e16346295", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "e8c9c26794e53e2773d52d463077a864b3eb4a2ec9ee29f6e1e324772ccebc8c", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "278f5b4bfd6d0bf0a51d8df7d534c1fa37e0ec9a714f3ce88c5f6dc2aacabec0", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "13b6de69c00da95fbe34450c15aa7a7df17b7967d977bbd4e4303663728edc88", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "278f5b4bfd6d0bf0a51d8df7d534c1fa37e0ec9a714f3ce88c5f6dc2aacabec0", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "13b6de69c00da95fbe34450c15aa7a7df17b7967d977bbd4e4303663728edc88", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5bd86209d0cf6b0867fbcab32a17951539cb4e34b0cba20a236bcbfe55a590cb", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "626ac1bd87e25042e8c9d6d6fff344b97ea25a39da34bd8afd9b5cc2f10a236f", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "42735d8b6cf101c2204eebabeac768f02b97e50d870b18e34b6b0123b98d7c24", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "c62748a65fbf5258a4fc1d3c3efde430b45ee91ecb131d1ac984eb77b669fe09", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "124374cfa0b9e752d4d90770dfde8bd476efe3ee056d18d8e9fd651af9d988a7", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "036141ad946baf86f450076d1607a25498ff3baef46ff21bb24a42adbd1b1e7c", +"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "81bd082f0a8830b438334ba002ddbda295637b396e5f71167509858606ea99c6", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "02986bf4bd2c87135139a369b217b0ff0c2e5cea64f3b36e9acaf21ab138a105", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "6e1befebffe100db94f6a14d4cf32a44721a2839e2ab9ce5e35c46f237d65e77", +"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "1c86295cc9d8af83b912d9f052798002bfe419a7b97bcac450561afb705a1be2", +"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "ed6fa18443b65067ce9d78e855f723299bbfbbf4c852ff270ee716bb0cbd0973", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "216b523b7fe89d6cf364805c402462e9be1584a52ef5a41aafecdf742dc97e73", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "9a3600b4b877ef192e72e43a2acbeb1d925b3f76fe02621ee9ef271f1bbfa9c4", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "5c95c16d6a2989cd5b2d12888a98aa19ff5961a138d05f1e6f5251a83d67e28f", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "999921a1d1280a0c295176101cd1bdcb7d0002f817f180b6cfb1c5d704ef1b57", +"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "985d0b84ba25f7727222d937b8a8bb31148ebacd48ae2d14d82a43ce2ec95377", +"T3T1_es_bitcoin-test_signtx.py::test_two_two": "29c4127455b6d4f6aaed439c65857247ff704e2ad164d9703bbec219c602e238", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "81bd082f0a8830b438334ba002ddbda295637b396e5f71167509858606ea99c6", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a97cd4301327920a0f3735459d2118c475914b2e269b52aaa057dba0d1f2ab07", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "e4daf7dc7bd196fc5bbadce6fa8d4af06a748431bf70e75599376525052978c6", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "260119886e7e972ede8b9e404aaae9c4845df6313d5fe3dc452c441087e4b324", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "81bd082f0a8830b438334ba002ddbda295637b396e5f71167509858606ea99c6", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "9e395c14ec65cfa95268c390ac46fc6d347fbfb5b0a2c610a8741b0e1dbc0f69", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "305bea2baf9cf401d5edf00d95fe3ffb273aae43b76ae0bdeadb7d150887eb86", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "79448172a859a440ee54584ba56021ab0aab9aeeca3c3831f76055ea6f717b66", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "d6a72589a5bbc6fee9b30d60609935e7d733bf32e4956e4d049b2c45b25794a4", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "9e395c14ec65cfa95268c390ac46fc6d347fbfb5b0a2c610a8741b0e1dbc0f69", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c12ef74b08c66f1ad1bd7b17105b57c2daa450b39998e6f5f761c04c9aa13680", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "793a877d506067aade4296069c6978f5603442a62e0c5460047af188c1843528", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "5ba88e432735f7cc7ebbc9ca1b2afa99a25348e0a042e7ea299746c5f9dac9e3", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "d38081ce3c0a4f7c6ad7a70c0d4cd8db3e645caa560871dbc44875001557726b", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "50048d6e13e45fab0394a711f31e3e766236b508f2d5503af7af6e286c10db84", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "38c479dc3f1cc4df374765b343cc2e1af57971a02c0659811f62e485181730c6", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "bd813f96adc6a17388803bc0dbcb71b6ad533f0ff17322be5599d087279c3b7a", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c2653fb24e47524b25954628c24a0bbe809ee034462e38e078a31c765289eab4", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "17e06b7c58c268ffc4b59aece19362b1f7917f115b70be4621d22c9747bb6528", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "8d7547d33e98ac2867b9cca3120c1ebb19885aa81c78f23465f0c03fdb00e49e", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "494f21896dfc8a108d2d8aa92aafdedffca1c73dbf29637df7069a28575db651", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "efd13d0116644b1f745bfce20249f96a74bc0ae70fd82ba1b3731918d2c41021", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "31b83cd3a423e9500444fb25097fe4fd344b4458031e7eeed237739ac1fc40f5", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e0cafdb6463279c6cdb986b6b1e976bb0c98c95f23aa229fb36d33dd8fc1a478", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "31b83cd3a423e9500444fb25097fe4fd344b4458031e7eeed237739ac1fc40f5", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e0cafdb6463279c6cdb986b6b1e976bb0c98c95f23aa229fb36d33dd8fc1a478", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "f06f92f777bd7c57637469dbca117869ec20bf7fdf855b9e195e5725e851858b", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "04595054208c5a5d9299961a1395171d155c35d15ccf2324b847abfea2781e71", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "38edf24b5785ba7a3a4c84a4b5d52acbb4dd34f5d773d690b6ca4285da30651a", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "3c54d31fc14f3c9929c41c336162ca01e866a6b909ac8f7f747b7d51d32c22f6", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "6b405427f512d84b364c57d729a95f45f0fc3a5c39855c82d14e253899a9c240", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "174e3d7308690d7bfddbc95cca60459e966e8941682df145a6c1405035e49340", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "c540cf4b4499e20afc5a4002e9661c90bd80ddc0cbf5a41cd82350b72c4a3157", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "b4157b03e937000474f4baf8df1a07e2fe1f7e21b6895abc44ffb0b380ed5d13", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "714c01501b6bb6df038cab4ca458393dbd78f928e7d22cf4ddc7f110f925255b", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "714c01501b6bb6df038cab4ca458393dbd78f928e7d22cf4ddc7f110f925255b", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "714c01501b6bb6df038cab4ca458393dbd78f928e7d22cf4ddc7f110f925255b", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "714c01501b6bb6df038cab4ca458393dbd78f928e7d22cf4ddc7f110f925255b", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "fe15123a7ca6dce6b9acf4d4632d983e5661c810a55ce7c8963604a78d19adfe", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "fe15123a7ca6dce6b9acf4d4632d983e5661c810a55ce7c8963604a78d19adfe", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "fe15123a7ca6dce6b9acf4d4632d983e5661c810a55ce7c8963604a78d19adfe", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "fe15123a7ca6dce6b9acf4d4632d983e5661c810a55ce7c8963604a78d19adfe", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "a332744334826d42357dab116e566ea56cb677f172cf342b9b96dfbd5e9e0b30", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "0f83854b48faf9b94b4f236fe33bdfea5d810b504b1add29247f8e0141a852fe", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "e2e22fe3a8594e042c796093bfbcdb09e2bcbaaac41b2b5f8878f9a21cc96ca1", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "e2e22fe3a8594e042c796093bfbcdb09e2bcbaaac41b2b5f8878f9a21cc96ca1", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "5e19716181d5262dd306040bb0133481520abe71e53067ae8ae60cd26a752beb", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "6c0f859f7e2ab110a9149d93e603e494abd6a74cfc381606b3f79bf4a204dcbe", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "f0dc0ceabc1454317ea71de05982c1755761085d25798aefcf395438c5db3bc1", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "5e19716181d5262dd306040bb0133481520abe71e53067ae8ae60cd26a752beb", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "f00acf5268cc53529afcd804dacd7aa475d63c615fc0fce97a106044e377421f", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "c9d939e06ddb2b22b31cd261e43d75a35279bb260910ad8559ded69e5a6815e8", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "c9d939e06ddb2b22b31cd261e43d75a35279bb260910ad8559ded69e5a6815e8", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "c9d939e06ddb2b22b31cd261e43d75a35279bb260910ad8559ded69e5a6815e8", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "a286ab003500f31532f4d7ea0bf2b4bf4c39ab47bb81fd9bb5be67eb6c8f9008", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "c9d939e06ddb2b22b31cd261e43d75a35279bb260910ad8559ded69e5a6815e8", +"T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "4ce4c23392243c1f96e4608faed631576ed597a282f9763e461f5e052d71a609", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "732c7cf901e00505783c70a107cd222a140a8a327d4503d53de78639275b5516", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "315dcd333e8ea0b66c8223b80e065f2f41531dca424c3ec13dbf80b6f2820f1d", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "2ad6f85e9185a993691afeb6680d6d054a308703f2283ffd078cd19842e8e483", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f058367659dd3b7f5ce90ee40f669375c736690ae7f34d43a2a4dbc00ea89dfb", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "5d0cd49cb40d60eba86d1d3de18807c53da128c64eba22f21b57eb3625faa5e1", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "03b9d4e6d98985974f0ba4102e81cbd4334e5033ae1fa0da6d5742fb2d94b8fe", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "35e7c7f1d6ed050cc62611d89b455f1bb5f664d3bb6fec0a1b3e5f8b9b5d57f9", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4738ab0e22933cf76f04e9c6b4ce3276d9143a8230611e1a30a6c31e00ad5988", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "21690466b42ed554295de9b05e7c9c62929407c77c523e253d45fd28b2ca24ae", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "6a8e7dc3bbcbe2cfb90a5b035b65c51fd24c4bc635fb57129ff511df6507009b", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0ad67bdc80a0519da7bb67852943441f6979a37e7c9ef46221d4813f732e32fc", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "36269ed73b31a79ee77714c09dec28a22824ff3dff6469cc0218eaf4ea190e5e", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f2c9e044d5372ba1dfa91fffff5dd67411fa27c4e8c3776aedd23df1ffaceaf2", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "9e395c14ec65cfa95268c390ac46fc6d347fbfb5b0a2c610a8741b0e1dbc0f69", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "01b455b191a65843518528200a993df96737602e00574a8d2ba943390582cffc", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "bad8b69b979d26b7f987484bddcbdbd1fedfdb1bae66b71eb87d2cb4b17cfca1", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "12cb6059ebbcec29e7dfb950d242418f93dcf2e2da7cdabdb34eb4ecb09c4b1e", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "6cc8f75f5e71c1cdcee1f29efc94afc96b257ae413c7c7a61eb0a70026bb826e", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "a47251ce1784227e231bdbd291ec8b748363d238cc36b8d4bf9d63ebdc338eaf", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "15e04f3c369d7561c8729a94a332c87d1ec610d0a8345304a2c58a4d124a3722", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "dc633c1fc78b6669584ba4f9c66cd69500f19edbb5564d6dee04d187d8a9fa43", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "3432904ed8c4bd4c769f452f8cf20cf059caa58939d210881706c94d22defbc0", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d133c7f3622b30e35be20d7c669628cd4192db3afa0a5efe24d95d782358e6be", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "079af6c75173ba4177d4cd9b884e827bcee3f50df8eda4105c7a9e7f9347ce23", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "140235f549fefb14e1ea667923a22971ebe22430a74a9e5f45e06a8cfca32217", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "0a6397dce804438f3ee27372c3b6d2df30ccb63ce967cd887bff337e8cfc6d76", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "dd434f80b75b7e2fce0ec436125fc0e795909bb18a4f28a805d1ecf94b6a42fb", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "54467aacea740cd5a9a29604c0cb2a96b0891638141649e2618087d1a84ace2e", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "12b33f5b803ca8f3ef357d753b2356541cb78ce2167c964736466e6440465c1f", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "e22edc9ff504495522ea316b909373d5cbd250f9a92498a1755f2c27ba43ec03", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "0af2235afacbfb33ac8f2870cc5f176f7c315ac6a316a9d9029e778c42ba6f6f", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "96016c68484fc990e1d902ef44d3b219b54cd5726bf38cd6914f7a7550f6b78e", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "3e6b2555d78ae6fb5d5e552312401daa81f4e27d2cc0043bc5cd7ce74d8836c4", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "18bb814a1728113c9dded56a5e811caff047a826c39053d84a49a417e363fdc5", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "5c6c0c83de9eec8536b7a3247fb19ecc1fe50f709197686c739eb0505cc16e72", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "535abe6d684c896acd7cc51ae8be9aa0b46ea01639d8a6f85d83b81b40b293c1", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "eef28558c90552f97e8caafdf0245669315073145fb49ef1fb6ecd3024cce00b", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "800c901d57bca33ea2de3cba9565ba98019b371b9cd5aa9170cf980c4fe02b0d", +"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "dcf141348153cba1d1d0ee8673dd411bad8e4f54aefb23589d90472e459069c2", +"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d2b160c77d848a92cde0d69ad0c908e46b236ec91d2ee865913ca4708331c3fb", +"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "a64fde6ec28da4e87f16405a30fa547f1c17f9dc61f75d62988643f5357dcd48", +"T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "79b9ad6bf4d2c927d2d4b631e07c8779c78c9a89aa0ce9c0ca53dfc786489f86", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "e046a59f27fe730091d21bc1778fc009c6c18b231a799f15e656239e4df824a6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9ff0d3d8aef9be7c9428cc31295affbab4613e654a7ffd82020392ea5e84fd95", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "f56af5d69ffa50694b0a69eed414c63f821e2a13c30d3d7ed0a97a51028ebf0c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "dab5eab5b6020566c9e43a1555c23f4407f1259262a8f388bba71f955c8cfaba", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d535f68598a6b6ef664d34d1f854861fc87175dd2ddf2b00add9cb4af2587ce4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "557f234086c3067c6b0e1a0e8b3dd6f1c62a9973b5e800a9291e1f8602d9ce9d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2204fd58dae8c87a9c71caafd654e57883cf97fb0e2746f12f6eaa27a2177032", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "6ce82e56a4ae3b4dea196d15ae948b15bc0e7fbb9bc12149143669ca07c94b67", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "44e546aa5ec03eac7aa2e68ed60bf791e636918c4f8cf17e0360fae6316a1f66", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "5cba8f19ba55afed5f0c3edbb70429b492cc9a8622f86228259535ddea4ad9e0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "fde3f7480a0abb5808ecbd6ef77a47f483944267b46d416eb83c7b6c82abf8c0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "d4b615e1f2ca4e3da474b036296380c677b2d63633f358d708d5376264517f4a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "f8b72b065e7ca1b65e41c4b43f848623ff3f69af5dde53fe326f12425fa84168", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "07e05bcb6cdbf367f4cf45f5d5a60210bcc7d974f545ddcf03920dfae606da16", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "ca3c6cc50aef318a7ae05995a9c843cd4fff713bf0931e083da7bc3cc6f7d751", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "159c1e8b48c148fe6605d67cc1f63e75378275bb4a8748b22c294d2f6a9ef5eb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "b6819ebd2c0a6135efb02372c47c03ea5107486096bb96055c06bb60522380c3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "b1a902e41c4a12048d435c7e0d14306c33395718bd591dfac2365d99dfdd2c8b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "a1416c1cd37b7893f5244ee766e38b4729eebba726d420d64c2820fafc825862", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "fe9dd030122199f149135ba459abc30b401bb84824df823639bf1b2ca81a1a46", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "e56af73ace24ad6782864c71d3a60737eef3ab040674789473e3ef446b49a7d4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c9b6ad3f3e8bb64e3258dc54645d83345a89f4cc93a99c4ef8ed58a292a8ed5a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "47dbbad54249107636a65340b35efb2073bf2560f7bc8c9c06e596acc187e7df", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "8e82a2ce4d90dcbdc6c79b3e9b63f937e10037c60b9b2d8a22837d6d335a8f9c", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "0862855f92273fc9379989a85c691ea1b8391254800bd8284b14ae37632be18b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "2e427d5a5296e86904f93f4df66cd189cd9fb05e5d56cc2df25660fa5193779d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "048add69d57fdc842f305b2ac0926dfb22db00ffffbb359eb85883fcbb7164c8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ca29f302ea37c86834909a0b066375222da6023fb131c1f6e527dc201ed7c652", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "4c21bc677c77b5519205d96e0752ee063b699c532b52486a40dd0ad563defcd6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "9df306486a4a877e45798200f6fe0a40cb4e1b900449cec2b5d2b35f6054e7d3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a59c400a6f9cb042a7232dd9c742ffa320376fdcad4c1b5474b991704bd89e16", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "fcfb2d27b4c2b1bfd91efcbf8a25b233c2cfaaaf0c447b0e175720c2865ff60a", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "d7d8cd425d5addc92f9c5a4d8bc6ce5898265ace3a33230651a0082a9efd0705", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "a553daad93cd33e14eb9ba0a39fe7b9c5ae708fd75dc0ddb07b4bc4f05a730c2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "9bd647bd275d49d2c98c66075825ca8990328f092b98a7bbce14b74b6b4387b8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0bde1cdcc1ac9ad82dd6c90d72efcfcf0390a5bdb5e729a3fe4e4e3d1435b06d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b434456c91ff2653a7a5ac3d1504f6d91278138af267cf08b5b6292c4f119662", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "de8b67f2041ee5e877d248decdc5511b6d5a94f2bff779d5a08119662e67f89e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "2e7d41ae0490da386441f00922e15ed9faa8650c1b1230e2c1005b11c000b304", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a57206d2ba29a0775aacc6d00d73c508ac21bf91f6ae9e4ff42b35d2d4f087cd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "e07d938a5e61edf90be26a5d90a03e1984348375906df6ed605ad57058f51825", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "e7d6db3daebe4be35cdd4842d9ff7dcbd8033fb557b7b93a6edd1de49ab1ae1f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "6ce3fa46689d4abe03965c73e8257782e164b1a150953dd9c6cab99ef5fb35cb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "f7cabf6ad647d22d1270f5015974034f137c9f403dd0526119c260ace2487143", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "b8ec62d3608e42c09cfed04ab7ef68022617466296fefed3b7a767f58ae8872e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "f43bfaabbedff6e979a11170dc6662627836beb37ea6cf00f85432e58fc2c634", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b22ab08f8733a899ba440120d6bb4465276c2f07a7766fc7c680599bd466bf68", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "7e2fc403472456a86e990b81e81d68c5bcd0520e807b3c419866a34ffe208bb1", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6a341016ea669db4e2da9857ecd5ed484104c51c36554ba3d1620ade49008fd2", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "ccf92759328451783614c63dd7502656b3455b0ab99516f7513672cca73d9ba8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "09c8f29ee4a58156c81130d7912221cf5aad62fb2fa49719959ffb19584a3075", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "80345cf8cc5d80da9f3de34444ba29793a75a45374966df013cbf233621f3d3b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "b721766dfa3d6a7a6bbde57d767fe6bbcdaac02f5449d22dfa31e1b9a43c9f1b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "2c9267a119ca771724748f17aa53ce9d4320eff3457a8db2d6bc186b3144d86f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "465d69fccbf6f9bc8cc10233834f366e1a34f44f3f25deefd8748ebe5569d6c0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "5e4575ca30f39347cc784bb04b04d22924682c21245bcd61801888e0f904ab9e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "b93807466e9ee982386ea1a11b45e6fbd7edbcdcdd63519b9f968bf1d82e79db", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "e0925fde6c6d4e849951f417bbfd15267df2b54260e6156e2966c603e5fe492f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "5e1e884bfd3dfe83ec7e7c6fd6fdb499fa2a80ca0bee2c2f9010e11128883047", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "55fdbb3479e0175e1472a94f0459bc5cf797fa6ce5277c5fd2db806a7a51ed08", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "258a25d2f14d6041bdd9ea9433e3b4a5e49f82e0d9b95be64f7f6d90364f2e38", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ab734169e61a6226157d8fb630e04db5753835f0044b3a0c12da7534c0cd69a9", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "99a701a039a25a751a4e947bcc6a1b542d0f59d322163a25b2879e85e3260c96", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "e53a3af2f5f5b0d026978bd0ebdf5a82f8c485c9a72da6dd16fe66cd8184ff5d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "32bb24f2a80814c4024500a003ff23a0eba6debda260dce8f044eeb89951e381", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "8f1ee9f9313cf0d4181033fc520e4f07bddc01b78420d5d96252167bb723cc25", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "4ee60e44520367d245c23b6210ddb08ff92ba990bc9de32c718dae3d8c9feb90", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "3f854531930e6875cac067e76a1b3e06a1acc2f0ec3b45f0fa06d915799f0f8b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "b122d79e423d82aa4ff414369facce21f300a292570b2e87ce5a8cccfdd4dc01", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "993358e46caca8049c8adce593a257619f49afe26a053f0c12667aeec9bf3c8b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "bf078b36bcc665b22f7feb301c88e7c0655e43e8f5d1c1d06b890da28fa71b24", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "3c003e8bf9cd5bc7a911cbbd57ff464d3fa0762844add3f9dd5a59fe2aa56d17", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ec0e75c206f7dbe3a5426b16d3bdf7f24c5ad09d394f937de2bc6f26d31ee2bb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "ed390d33fb018fd00bd4027c77fc7b4dd6d3b9580163cae73243873482c93045", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "0fd376496b0025207bc3c7d007c84ddb3b7c839627827ea869aa9116a6078933", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e822d1a969209741608547341dd96e5ad7203e2477ae172a74ac8b3e72cbbfd4", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d02f885aeccb2ac1d890880af1b46eac05bc0d08a001de8c18c30dda2bb71461", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "75d7cfd915f7714d1ea15c0ccac56fb25204795fa0d31c54145f1eed93bf352f", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "dea4068e87c7a7eabcb48fe520f20ba2ce0a046c811fe707ec4e86d36828b221", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5d38ec4d35fc7bd234fac68b4231fdf3320205575931141b9ec3160e50ee0a10", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0d0f2ea474ae4f1987935f1653340cb5bde1223d9799c631dc849270eec6b00d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "c77b227e20d89d74c08b2e8f277194858f914f84093b26685d2d2b790a81ba50", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "920174225cfc06828b56a5b55cf69e210e85318f9c942d97a044da14fbe79c96", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "9d8f2fa2a1e5e35924501ba171fdcb0c36814ec63d98af6258e206cc571a57b8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "1f319fd496645e224d8a2f96dd987c765d03ce118f2bf12d0d20c609d8dc63db", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "c753e577d257f499e3960744874c38bf9e17844ffb9dbc72e64c673dd1a5ab70", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "bab0461d15b1c271a242b84757a5578ad636acfa311ae79d0ee4a743e22ae8b3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "722dd8dbdbc3acffaa8b10dbad32556512b7ca9e4f0ac18e307b526b6cf2228b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8ff4906fc472c1839bd8befa231dbfad277c63083060f4d293e599aa45d952ec", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "cde9440f31c4337af2476badb82967a8c0ba47605c0a751e8d26f71b58dec6ca", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "49b8ab14e95001ad2b1d16de24f66e20a37fba96d50fa228229ccc553d093067", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "2e83efa10b346d7f5b947d7d2ef9f55c16c21bc60a758154a46569e6cb17e8e8", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "07a5dbc578a03d531af5de180cbc24ccef503b4ebf7cf11f7798d0941d695648", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "b31f5666f78f0359631f4eaf08b56af8cfa34aaa71abc46eed3860f4d089bb17", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "f6fd7cfc15191b49d301847305a93c4e3634a58722e48e5ff3bcf7d03e83afe7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a16450edf58ddce10dce0ccf35fa61a6ba2aa725fc10e69fc34dc52e2a94bdf0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "a69ba0d3b98968a24567ac85cbda44fd0a413d6243bc1fd45d85c0f84c98050d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "299f16f9717e853b2b193ee006484b89e73ab0123ce387e348b8d14fd991cfc6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "44b818a7ef2bd7622a1968ab0d368ac2f48cb03b53b32b36bddcaea103d5aeb3", +"T3T1_es_cardano-test_derivations.py::test_bad_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "762f3bc20bab90b3cbab27d0d440b5d7d3338d8f70280f28c0c6d43e4de65e6d", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "5cbf9a07c2b1b7f23a940344ce06669d73b6d59d6709286244f5d546db159729", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "aed054238771dde87e0605d4f96afa30c78fa855fb1f03914f5467e41f9caadc", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "68f7686c8ffda999a21825e739f1691b20ca3471a439933a31a212e8199ef42d", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "314ceefb3ff079136e44d6a6916b0a0e68d148cc6935b0aff3c8432b2fdb7586", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fc1ba1da06f446ac34cd5db17420143f33d924de1a6acbdc8e0f83cec1021c2b", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "6ec1b6bf597d2f999bfc875c01cd77758e377532655baac759ab0bbffbacc89e", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "761eda34e78c1e897f297ddd9788730ee67fb9eae0427947b42801dc24cd210b", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "55b62de2f01566baa0c5d8d0f8a9df054c009665d8d4150aa8d35d82cc89bcfb", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "743db120cbe98ee08ac422c24d9eeb0c7523c9797e9445c0e2fff02080f164b1", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "eb0ec62f1eda0aa8b96c6cdae9c2d1d3da1e6b4c4dd65df562a1c9f3e66eb010", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "a4cafeb80a9b4a622fc4f719be40e0de721e91cf6fd614a4891eaddcd6f602da", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "076fedec78a9397732f2fb786a9456d6fdbdfcdf6f396a936e3602fedefd928e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "072a72c596b2445fb72056b14775a8fd32bc46f4c0bb916ac914f95e6b15a8cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "4b1594e1d069d81cd5c2151e7582d07381e37835d57a18d1dc0a9f2c913b90eb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "7ee09424e3544e5153a47707b8392a6c89e4ee4bccc9fe2dec4ded88ac06586c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "85cb9c64a4d346b049b493f9e3ffd4663279fe033e7fb47bf77014952006d12e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "f36fa4fabed3d7aa01ea3a96510bd5c5a6d0d053b1560a107da80973e127007c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "d9585d813af4b75c932a13c25f3e4f8639f50bb6d659873fabb52f917cd528bb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "1444f8543981957cc9a6e94fe235eee9e515d7c7ff37a0697a905f74262e1020", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "ec7aafb31cc29c0e072dc51b25231f2a2f7c17aaf97af9b6c4d24f3976a11f4b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "f992dd0509cd58a251d5354eeae753ac3f49ca3f28e3d8265d7aef3d0754252f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "fe3486f9af72df573c81c3b4aba06998a0b3379cb45eb2fcde1716f65f9123c5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "50deda3035b4384b6f01d682db69ab1412f2769e7cb63b8cd3682c85f8476a06", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6c439dca3b7589f7c41958181f95a1f0204856cbb1626f6deaa29aea7effca2f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6c439dca3b7589f7c41958181f95a1f0204856cbb1626f6deaa29aea7effca2f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "6a99fec989f2612ec3e1446beb769d20e7e832fcbff1be16f08e0aaa54e6839d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "197254aedb97f97bf4d054971b843efa24c7951bc4813fca32ba7876a55c3c6b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "73500e567f3ca5fe423d89f43af7c30261eae1e034391ecb4e075968edc16bc3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "ae8e4c548965332fc87aaaa6e4ee30ded6263a559b736484b5d33a60f496d3f0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "b4662481c8671653ce9902633e228808c551c0544550ebe49906a77c9b68e629", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "69282ec8fc86ba1dbf880497f26ee18cab043d85f9ebd21db33c035c880ec8ac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "ab0d29d7b3fa0bdb7dba8e8c68a8ecf149fd0176af4e02fb994d79563244b48d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "991859d8d4730f0e54fd493abe6219a96f3c7c50a3021fcab819e5a53b6fdeb3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "fb0644dfc668260623d51cca2caf3953ac7f8895ada60636e87a097ca0f8e98d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "b4662481c8671653ce9902633e228808c551c0544550ebe49906a77c9b68e629", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "69282ec8fc86ba1dbf880497f26ee18cab043d85f9ebd21db33c035c880ec8ac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "a3b58d26236345cdcda6b39edfe073b758d24b4969a5e5b511578867ac9c4891", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "452d9f6556c7680f246acabe00d4fed7ce15a0fe86d648c711d0647319593f62", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "bfaae660c7dbf90f8bf3a5ea06d14410f624617301d2bdf38e1063296a3a16ec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "c423fc767bab5003737689d8b50aa1210c1aa6901d5b5bca3dd4ffeb55b2a4ff", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "0bcf973a126729c75a850f8c3cf4cd14fca5c9a2bc5bc47e96761ada629970a6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "e4e25294447987d0fc926adaf2dd6c3acab1ab965777fe9630f9047ab1eb623b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "3a46caf37e2b4239c6a0fac61cf8055c6499ec665b79f9a787f59021bec0da46", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "41bf1cb2527dffef10cd0862bbaa1e33fd8324b1da430480e554db84d66fdd31", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "743f82f20442f95900f818c8c960cccebdcb60b4ba04f788eb736e908af702a3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "cf5be1979526994f6926ec76dca063d08cdf2f4643618df514bcadf026d67538", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "79ddeaa094c53695f00f6e6bb1bbf6fd499f35b449811da2a8dbae94bd55e136", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "7a24de10448a6d40353d45a9134feab5b0ca68ff84c7ef09fbea33062e865cb6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "10bd57d9027e53692b6eafda87407aa30ec22692d959fcdeef6984c484f782a0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "a15d270256401f823433274d8d47849ff8a021fc3559214c6fca9d71f9f256bb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "f0f30d0bb5fef4ae575a361ac09a18a6df685039e061ef271834d37e28c2178d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "10d58ab651172e3b39340414b988697f9d2aa01b7dd49b8564df9f2de6c32db6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "e9d7cb21871e77e84bd466b7de0fbc4f187177ad1f3cc29ad147b6d9fc52eca9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "8b1e10c30fc17ca46c95d80b87154fe4af4080f927dd972da9792bf870e9790a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "dee03d67407212913def4f6e82bc44703f9821f7025d5c77713cdf76ff5567ce", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "7db51df75fbb62b2e1e9b5a0a19b9e69254dee38412e8159a958df04ae0cde65", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "b0fdadf043aad83c7b8b2f917e29c89becb632c2dae5b89fff5bcf8fc2b9016c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "9c71c6abf0a7e30cfac4abdf87b4274be0adbb56171c1d0d0845b363f178edcd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "895962d30da2b46c80b1494205b2efded282f547ab6af0b5e0d2636c482dd866", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "d9bc345826c9a1fa2e7971b67bde684201b6d65ee0da7972401c703677685897", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "5d795f948428f1f5d9336d9da332c79ef22ffb3928d6f069a1638e17815f0a0f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "3f69e555adb2dcfaabb0cf2639ced402a281633da8531122887a1ce808433103", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "7c8a8bc8d4ccbfa78ddb641f4f225582a79943d3f76cb2bed403e2948ee7e49f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "539f9dcaca0f8b08fe45ca0f2001a7fb1596b1ff85ff7cc6a057bdf7fc621668", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "b762b719949eca6ab47acfb08e3abdf0bc01022553ca10e234d82aeba209e994", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "8599f6a64252904033e536fb25d364b287cda479120cca114c48a51ebbd98525", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "d37c5b17a20de6cb137100e99f03271e8805e04eabd3b0859f417a725dd2c40c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "ded1bd44e92e8d5681a6d60433596c100e0f52131ed95f5a748447d0dc9cf2a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "fae49f25cbe51f67932b3f57f2a2b6e7b9c20cb44efb33481f68326d7534f140", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "cfadfde9c4c3f7feb52237e7306f4ad8b812013746fba4f4310dd345dfdfbb8f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "56ae53bc69936f9a2826e3f0d148aa55da5496aa063e0f67494fb83d5e41c4c5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b9f58eea78cb8dd7aa66449f52b163862309a3af5f6b97a1280ecaefc619c378", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "7455492d9020444fe080dfda10d7569b1084cf13bb7d0a3ad9ae5bb880ccc599", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4de3d3bd8ef9d4cb7c278967495679546b0bb8ceae277c7af49da6e23f79c10b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b6f484b5e42174b2a89d6fa73775da1a6e50585dbbedd1e4c0e6d502f22200ed", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "233196b2c9e3c99a0f932102cf84c545e57dd626adc02862d24038404a1cefb4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0551790103340e6492638ebfdd9b9519728046d37ae9db124ff1c9809b7e8143", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "eafab3011dcae4045e78c388e0247ae542613526c60f396608e045455f5fa933", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "4d8ba79a0f1da23e7c182c1b7a13d85c406536a7509085b4a27f597dc524292b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "f8400d1a02cb0b2077d1f3afdbf82fe3e99416d7a776246a7b6f38b159a7268d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "4cd5800b7f31c571f13ffa274b9776c3953b50d75a686352bb883a8879e94d57", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "19ff47448e8051791f75045af535d6c3f888b39d573d90df2892e34c96fc7baf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "69700ffa24923c3af10b41ef05f56f1e329661b1563ca3fea61e2d8d6d7d4705", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "e7d06ba2ba20d794a5093bf6e0c26492cedd1b6ef20a74df6e88e34d573aa83d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9e2f473b1efb2e432baf13d90b21c56d4f2c69451cd7c82b302f4129309c7877", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "9a8dbd41cc6d71993a185aaaaedd25d51e6a60b195d652187badf8593b6bd4e1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8d7af66556164b3cb24b20ae009618e98dc11d435652de3e28c30be5ba95a24b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "889afcecae819d357811c27a988d1f7dda38bab3855a3eaf0a3624274099fccf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "889afcecae819d357811c27a988d1f7dda38bab3855a3eaf0a3624274099fccf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "f1295b7acb263dbe022f994e733c99943c4c4c6f497c40e31c538063f4de5931", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "796fb351a069e621a6b98221f1eee6a7510d8bf82cb589cea9112f449840c86d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "796fb351a069e621a6b98221f1eee6a7510d8bf82cb589cea9112f449840c86d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "c058bdcb91a8b5039b2af27ec03932aa3b68c552525ee8e337d0f3a4c6dc6c91", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "88b68ac4da1ac3d1719d7eccd5a9b68264f56172ad6a8e6946b37bc86aa69cc4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "982f8dc98dabe68e3191956a2a3bf34861ba7223958f73ee0543f993a0652c39", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "a6ba6b3b83b0eded692edefc9a9ae997f0dcfd569cc2fa0fa19b34fe209f02b1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "129b24dc7aade632408c65af4d869b5bf0f9686ecfe09e0ea8c299b3be746347", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "90852dd7a296fd6b7f20534d3d9ce4bfc1b6ed94a7d0cbd476e7788d2aa67e00", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8b3c7c8dbdac84b4079d9b4f18dbebcb044c065be3cd14c39d27ed9368818f30", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "db715f39aaed75b26dc9a37af173b6666f46397c1d25fb8c98ee34796e208dad", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "e22cf9d08db12437c39c8786006a2ea79cab792968d30425f39ab1471fba8124", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "072a72c596b2445fb72056b14775a8fd32bc46f4c0bb916ac914f95e6b15a8cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "1444f8543981957cc9a6e94fe235eee9e515d7c7ff37a0697a905f74262e1020", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "92683f28ac4b6c443e25519e065d9b223619b24bf12e9202e541026826c6c2a7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "31fe5a2730c0ac2991e967f3578977d8e7f12c0ac688e368d286579a1ac8e8a2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "31fe5a2730c0ac2991e967f3578977d8e7f12c0ac688e368d286579a1ac8e8a2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "bbe255875eae9fc589cf5c7fc40752e6bf1c60c437b81ecd4ef35206de758dbc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "5c965f8572cd49e043147fcef0502631dbfb126e3383f1fa57a17ad940dda789", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "09b33e5c2c03bb08b7ff6b1ccf164ee0e988046ea516d8bbf524248ed5ef1c65", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "96d00e648e3baa6f308e17c42aa9a740e116b6f32531af0131611ed88d5755db", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "cb498dad3d37325e96ae2b0f09a691c90caa5dd949e72efdb3004f8b9da80f1f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "722c3025064eb7bf7489901e6e67aa2f14c9571ba1c41e4fcef3f6c12e935952", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "05b070f725d8a8c477f59927aa309d9937046da6845ff57fe376bcc90683a7f3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e66b66e1d2d2ed75c964a7608896f301cb242b16b18edc286542ad960e618ef1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e66b66e1d2d2ed75c964a7608896f301cb242b16b18edc286542ad960e618ef1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e66b66e1d2d2ed75c964a7608896f301cb242b16b18edc286542ad960e618ef1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e66b66e1d2d2ed75c964a7608896f301cb242b16b18edc286542ad960e618ef1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e66b66e1d2d2ed75c964a7608896f301cb242b16b18edc286542ad960e618ef1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e66b66e1d2d2ed75c964a7608896f301cb242b16b18edc286542ad960e618ef1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "05b070f725d8a8c477f59927aa309d9937046da6845ff57fe376bcc90683a7f3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "05b070f725d8a8c477f59927aa309d9937046da6845ff57fe376bcc90683a7f3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "05b070f725d8a8c477f59927aa309d9937046da6845ff57fe376bcc90683a7f3", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "96d00e648e3baa6f308e17c42aa9a740e116b6f32531af0131611ed88d5755db", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "435321819d8493478af6a6c58c3c6e6de2ed86479991e8e4cd7de7bd857208c6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "c170c36bc5c564d18a5436aab095c45d87557ab25a04eb4e3c93b1644966b1ff", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "511fce49a32d439a388a0dd00400cec6fdd23db9e4b36ee7955710e388ae7439", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "9a162b6442ac266362bd8fcb6ea443ff897a385edc507f016c3c5d92d82374ec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "c6646e56dca8303ec608ae0a0991a740d5508d26898461653aabf00be4d0672c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "91fd79f325c254d52a32c303e58258db5b7434f74f1d0592ca253baea0f3f09b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "8708e9512c08a309c8b29b41119a9fca047b80ca67656c7ce18d0c0c273dddbc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "6bc5101bdef719f85125968bdd4e73261d8e795fb3be0afefe4e79d5fd968f01", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "460a3560e8a6e09f2b747f587d6138e587d712306e6e027bcc25250a1356b9cc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "0f4b891f6c3f223e5ab75e492fd9c8f509089eb15ea64829a842e0102b0f3889", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "251e47fdc60166d2a69211e4ba87559c3372162f9e624eef7ee8e7ffdd807e8c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "31fe5a2730c0ac2991e967f3578977d8e7f12c0ac688e368d286579a1ac8e8a2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "92fa3cedef55ab63fed36320ca83e47d9eb369d67230bc2b4932ec322baf42e8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "c4ccb9cacf5d9ca1d98a85b85099fc710390a8ccc2c7423d74f4b957837722b9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "c4e1bd1c857f8ab85f2df99bbb4b6599e673a6bd2bc5237a854c10a8e7a779ee", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6cea9ca55692504b6d486c454b2f75a644032ffbd3e89e34975f10051b7fcc19", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e66b66e1d2d2ed75c964a7608896f301cb242b16b18edc286542ad960e618ef1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "a76d63b8b2654a4a01a2e2192751c6c4d63fb1ce5e0796d92912539606bdae08", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", +"T3T1_es_ethereum-test_definitions.py::test_builtin": "0bcbb8abb9e4a36b8eba5d7863bc185cd11a597c99b973f954c1a97dcaaaf50c", +"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "b99b5d49819f1d0b8e1189da0582aae58d441bb11f28c13b8d8cc10bb92a43da", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "7355f8eb2cfe09582b23e545e510149fa60f36c7f49d4d5ebf6278091d44e433", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "00eec1fbac492468146c4d71b7adb829d915caff2f81519bab56465d783dffc2", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "07e97ff8d3fcbafb3983a32ebdfe3ffb45533d2182684efc903dd761741693c0", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "44cc613ba9c8ba5cb07fd1d0bb0fb44fee452a81dcb629fe40d39db6668bd387", +"T3T1_es_ethereum-test_definitions.py::test_external_token": "20631399e2f852d90cc80e5f1fc147050eabf5c3d37c5d794a253ef2b5eeceba", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "cfa5e6ecdecd3975df20d7a102acd5a5b210ec89a052be3326187a1af6189fa0", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "94be7e21e93b63815d6be200f0a823eb4931f503a8aff65f6b2bb7dcb01b6a89", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3c606443e8f303acceb7b493d32d02a23734ef2b89e7cc30d83d64d67a1a4b2d", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "3d05185a22b61dd09640664cc5e714e29b97690d9d89df55b16f3d64c971a935", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "018736989f4950deff6367d981048e59ff8ed266e261115183176611f113ef4d", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_bad_type": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_missing_signature": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_outdated": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_short_message": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "ee622b79dff5c9dc161e6bee61645c3b992de35c0625aeb84910d1bb94472ea8", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "405fc61428b53d021b53dca6423262f940d4a54cb6527bf3611f9fcef16a7c28", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "25d59b44ff8a1ef529b6081161d99e76836bb6e07134d897a8f02585b5a148fa", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5a6bcbade23abc09e916995b954c06283fef230a68ab89c7fc7f0db3b0628349", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d006f7ae1dda4a34a4311b16cef24d9651fe14c44ff7ac39e6a0be577d690539", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "00a6361fd0330027ea8505cd72c275aa75d32acfd006bb4281adc9e170d26076", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "422ff47f8e3f4aa8467a12dcea8165461dc671d62376baee024288f1b25f5918", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2c60de63f2c8ee4fa3dd966e370e904abed726a2d018a6a9c800894b44364cef", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6e456ea3887d9dd213a9f99a0eca40eaa006911a07509782fb6f60a2d514aba5", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "38936976adb3a412ae1d0eaf99dc763788d54418364d6e9faa798a2ca19ebe12", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "4eaf119f5fe86d801232bf89b7447b567f7bffb59df83d716cd3e49ffc37600e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "4f46d9c0fed3d2e5001368350881ec8fbc239762c0fb85dbe9757f32f0524a9e", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "73ca2e593554e6dd409484034c068494d439cc92d0385e48f7acdaf60f72a03b", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "233dabe99a97ce63cbafe19c0d776533ee9ac38595f17ddac7ef847ac6ec59fb", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "e0551ad3a1f0572cc1b0f48869cde14351446a9190e99f93a60f37081ce2ad60", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "d6f7e7c9003c273c7ad5b9898218da5b181041a6efdf79ac2f03de07fa04030c", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "ad42f8c3f79cc49673fe8f1c124acf31908768450183e1bbc535fc73f3c83fbe", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a9d8cf39c0033b521db7a88c86d2d8a1a82e2729414d49eecb80e9ac5500ce93", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "e0551ad3a1f0572cc1b0f48869cde14351446a9190e99f93a60f37081ce2ad60", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "e0551ad3a1f0572cc1b0f48869cde14351446a9190e99f93a60f37081ce2ad60", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "e0551ad3a1f0572cc1b0f48869cde14351446a9190e99f93a60f37081ce2ad60", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "58b6bd7b63422637172fcf1bc53e0532234aed40aed00d67abf2746e4b0f98c9", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "1cd092216390e2ad4495dcbcf21bc97c82b848d5197f47a1d07d32a44758cd74", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "84beac21c999e4877e01d50d0fd03660277ddc4cdcad172b73b141f0f6f7b25c", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "87e47c53cf7ef6b37714d6e9c639b83420675c7a423165a55deb2d614e4cf97f", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "dd198f236882688114fbb8d8ed7b644f5941c2a0152e570a376049cce92573bd", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "48814328e19a7622cdf9ba306c13fdb070849e0f2dff43987ea641a402c06820", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "bb4c6120e547afa4349a9b3a749cbbef67971b6b3cbdbcfe3ce478482ba747cc", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "ed3490d35af9d6d6b4a5007874f83c190b4b0412b61054ef66cc27ee143b7900", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "402c0ddb2d2584a96b6d35b40f7e40ed9fbeba49e7793ac0c3cb2f30fe29508d", +"T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "77f5d146e0986c8d175fa3b0adaf3ae946a31021d70b99ef44d6e510ea592394", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "7e1d6a7c583ff8e1bafbe8d168fdabd6158e7c709f1d0c91ee8540219cc4c5dd", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "2f3226d4ae53cedf1059385548548f82351d3ade35da82e8d88b9d10cbdb23ab", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "e44c7c55ad5ddf0421705819d915187bd1274e04246053133111bfa2e9e07b54", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "52a259da175214603eed3ab2cb3527797d861d6847a5b84c80ebfcefbdfa9fcc", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "7e67679ba78347a720f20c31607f73b04efc6e9b67d54435acef165ddb8aa666", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "58a71c5b1ff66b806ec2d772a6245a93dd25c6935a955f16f8a87f2d21970dc6", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "e4421a0a4950fe2ac7760388678d66933eac236cf986aa781b90fe306c5db9b5", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "66b694c8dddb1f69f88b30caf7dc3e8b82728e0bb0036074f36bc6600a83a67c", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "7e1d6a7c583ff8e1bafbe8d168fdabd6158e7c709f1d0c91ee8540219cc4c5dd", +"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "c7ded90be3c91a60e04fff08d4b1759a8731e496fab7d26a0428105aad1f05cd", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "36617038b14ca7b917d203b74759afd912c31cb8c56624d12bec9d315ab8dd4d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "a42c867e98a91e01451c1bf7c06a65f853af9aeb53e2e8bf2fe19172559d746e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "6f522df0b7e7ba290c0aee8f0ad48eaf5a23650bcbc39141808cb93073fb6b0b", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "a42c867e98a91e01451c1bf7c06a65f853af9aeb53e2e8bf2fe19172559d746e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "220d11a91b096f3afe1634ad77c06c28a532f473509e25036d58173fe2314a9d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "220d11a91b096f3afe1634ad77c06c28a532f473509e25036d58173fe2314a9d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "ef29afe03698043501f2ea32da37b19f8c9be7e4f1842e6dc0572e6589adba92", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "360494bd22211b6dda9f779c8bb11f09188842783b45010ae261af64802db841", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a8c99d7cebbaf46b31d7dc0a5eab08afb710a31988a46170085b99bfbf2b726d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a832bc1f3fbf759b19660ce7c7f6f926ff87fa18fe6d8130aeb666bdb5151d3e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "086342492ed12262c5d6bc5f02067005d87a919391d05218814fbb5c8f679723", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b7063bda23766efd821036b0d36f4caa78b60d70a644c0f2f6dd508c50d5123b", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "c8a3d24e05079b0603761169884fa43e44801b8a448fd215c349b95f633ed47e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6756f452696e7aea40f8eb9e82e0eed80ecc8ee7aef05d040eb3f7273bc7d2b4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a214466137aa36208a023acaf57736791463ec982df424221abc7bb680b1a58d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6756f452696e7aea40f8eb9e82e0eed80ecc8ee7aef05d040eb3f7273bc7d2b4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "eb87ec4167450d453f20d064c61b288ec013a97706994272ca224dcf971b9208", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "eb87ec4167450d453f20d064c61b288ec013a97706994272ca224dcf971b9208", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "f26871b641b24caf5a035864cf5e71e4b9e2bb13444184fb7856d5fadaae1eb4", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f4c6c645799ec88d16647dbbeffd6a8ed5e14ba5e72e3526c8c577b87359fc8e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e05f4dc3bfa5795953aec7ec10253ce79903f53f19ac25c59ef3f88080b9cb54", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a832bc1f3fbf759b19660ce7c7f6f926ff87fa18fe6d8130aeb666bdb5151d3e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "5c2d4a2a4cdb950b9f443ad00dae583b57e25c5a90e00cc24b97227a2a3e3bfb", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2ba6c995da8e4b15949f316d8eecdfdf66ef185ffb20e23f0787b774a0527e7c", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "607bd7f927cf65cd813e85864c546282d8f0954795f17bede5f85450fb431dfd", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "ef29afe03698043501f2ea32da37b19f8c9be7e4f1842e6dc0572e6589adba92", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ed5ad4d8c7ea0cee8eba728c7f66c7f41e600468abcfd7c90ec3382aec883201", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a8c99d7cebbaf46b31d7dc0a5eab08afb710a31988a46170085b99bfbf2b726d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "fad918d2a349b02ed238fd229357f9ab270e2cf15bee34aae673e9b52db98413", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "23f0844e096e68d2d24bb49c76276e377b50be22e37e68b817e1bcb760ac5172", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "5c2d4a2a4cdb950b9f443ad00dae583b57e25c5a90e00cc24b97227a2a3e3bfb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "f26871b641b24caf5a035864cf5e71e4b9e2bb13444184fb7856d5fadaae1eb4", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "66f9d90b85283d33b73f81846cebcf715e4d6fd9b1a2886a2d990e24625b7fdb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e05f4dc3bfa5795953aec7ec10253ce79903f53f19ac25c59ef3f88080b9cb54", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "849d0c942c3f3ae4fbdd966f9f9f2966fbddc3751100d8c9feab0a5cb224e332", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "d0b4829d235b2adad94ab75e32f7de7c7d864e7809b9050011d9b96115fe5eaa", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "5c2d4a2a4cdb950b9f443ad00dae583b57e25c5a90e00cc24b97227a2a3e3bfb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "7fdbfd85468a9bd6d91b159ad07eec49f9f1daf39506427e9c3f7c2706bbb454", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "7fdbfd85468a9bd6d91b159ad07eec49f9f1daf39506427e9c3f7c2706bbb454", +"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "60be87d4431af14c8d731bbbc9932dee25f5ca60c43174af683b0b5a4b1ea1e5", +"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "a5470a3f2ccf55b8ac8d1fd97eebe4ea056a1b5e1ded52fe4e95d67251c304bc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "c664ca74bfc3e28e7578c27b7f31d232c5d0e15b5ca3eb6fb99b16008feb0192", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "c664ca74bfc3e28e7578c27b7f31d232c5d0e15b5ca3eb6fb99b16008feb0192", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "7ed435d0ea98ddd5318c024d9bbd9b19f492955dccf20009aa6e063d6f5a654f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "7ed435d0ea98ddd5318c024d9bbd9b19f492955dccf20009aa6e063d6f5a654f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", +"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "dfa7f68df551863d4ea67f19ff449c0936cc1b41e6c185e88a81fb64bac29713", +"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "dfa7f68df551863d4ea67f19ff449c0936cc1b41e6c185e88a81fb64bac29713", +"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "b89f37541afcf01875e58a47e19c5c086653477f06a2a77f52df59297df194c8", +"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "1b6efcb2bc398f26121e970bbf6e7f2b632ad1eb928acba5f151dead98882e26", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "abc6c1471ec5f28d8991055e4215d23ef3b409e577a22ea2e7fa85fb279a4ab8", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "c0cac2956a44dac9810ea9de933650a9cb8759d3c590eebda0f216fa5b7494bf", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "3271640310cd8d23e3a9ef515077a92cf7bd37c2eae0b444ca9db2d01a362525", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "7469ccfcb9279659408371c36e6768770877666c80dcd88ef95e6d5274deeaeb", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "ac6d454297d888ea72789cad20b66e2b80c51e4aae36d4fe17973b8f25b27703", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "4436153558f56adbd7ddb24f8154c3e1cd9cc6ee00d7691646eafb163b8b48e5", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8e7ca86417bbfdd0c0b69131f2fa0642068e89c36bfc61196ce2bdfbf87a63ad", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3af2ca0bb6c1329401665a1ef26af47e2e40b1b0588aeb9db08d36ea8ebc23ab", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "d2cc9e9f3e074f18c6a07a47b1c093a4a0fb89e14a4813cda257b9ad336f1ed2", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "ffb381e0b7d631738201114fefea18fb4fce0df66da37cd91624af6309b66f55", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "1e1fffa60ff912aafd720ad67ee2cd90ade2d9e9d46e1cf0734cbb549146f7d9", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "0873efe54125414339f44427afdde8c7126b6f2814635899eb5fa0b1cc1bb6ae", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "fc47625a3f603dbe8a0db9d3553b9d7281561b38c4c3fde2567eea644a7dacc6", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "daf3043a91993cad60c9f091364e2f13ac58470c610192c992a901ab4d67a0ad", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "8802c735611bcf51f8a395b095b6546ad36c1e0e27be6244a852fec5e20a7398", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[129]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[33]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[3]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[4]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[512]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[513]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[5]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[64]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_signidentity.py::test_sign": "940be1b9ef8289a5aa258d64be75f356e613aafeb9ed32957d26a8d06cfc0435", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "4ceea07e3dbc713e086faf4005cd554a2b9cf6115852374b90ad4f413df1d1f4", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "48e303100c2701625f0cb096aeaeff15634dae299d0b8685dc01170244caf9c0", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "bcc6e600d07887a176f7eeb11c3e2cc9c412a64d9559e3fe943255482dc71604", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1cf8a13d3ed3c979fd6575ca3a6d8aa2f933abb9c9ffb705d7bd0f5aa3335a31", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3be6bbf539fe912b1f4f4ef1664782e48024b026a7eac3a6013c4bf425f00fe7", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "ff0eb6ceaf169dd8cdd861be87048d28b5c21a5d723469b22f92a9930fda09f7", +"T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "a01e8976a383b973efeccb020ca2e466bc56e81f71df7f2745d02129f621d996", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "76aee3b6f51da4fba787240e6e7860b8557fd9fe9dc53dbeffe2ed40adc62cfd", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d05aad4cbbc8832c8a4600ebfb45737919645a52689fa7baef3f307936fcc97d", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "3d6f4c8843e955afd4101debef4973d11460a9207327fb3e74fe1adcf7af41a0", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "594d87b89a426e691f396554a4564f79004fc1136eb6cb46a582f4b8a682ce4b", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "2f8b630dba5485ce95a4b092a4b1b2fb9e4d92e0604a8500154772972d7bf586", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "d9cf1fd510ddd274e089dc25f47b9a5bb60893e06b9c774fdb3dc8a1d0a5d55e", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "9651140a1828aa272b2b0495f914dbf64dfc0ef981e3d4b88af11146a1352613", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "56aee36f9d9dcbf19e16e15225b0969affc77cdd764d0d89b55daf45bedcf3bb", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "7664d21364d921bee239ef801b562be4d7d47e597cc4ff8a4cb8b9686f9bc8b9", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "40db68f87f230d11dbf47a4a4d5483b187eb53c21857685dea43d776f27ba2e6", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5d929e7d2ff82817b4eb57962c9350d37972eebefc390a80f4c0439ccd4f239e", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "57083863ab7c6411785a43c7bc59a6c410df269e6a36b68e34d878892725df84", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d8dc57c8584e74f4dcfc6dbd630685b2c84a699a605fb51be1975f60f2116cb5", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "5feb0509ee6616315d19004a5dac77c1b1364752bf2344fb0a50f4117e3fe9d4", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9f6cdc9903b8e0c79a32ddd952c33a81afcfd177feba40b8e356611abdc89818", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "d9cf1fd510ddd274e089dc25f47b9a5bb60893e06b9c774fdb3dc8a1d0a5d55e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fe7b90b815a8d3a5b70de7bb0e40ab24ed73fd9df43622e7fe12604a5f27c506", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fc0acb89aff3ec2c91ed46286aa8a9ef68b07a367f6eb05f9a49490b4d05538f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "552e500701e764ccc0a4b5f52173589e511ac6d7d959c7262fb1624112e12dfa", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "09b80bfd965fb966ba0b771aec48ecfcb23953851106a8d5f2c4da948dd0d448", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "1f6026bf49c2856d43511799d302589f312287950baae27e89bd33f53b0b88d8", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ba2f3b871c1da68f4b578eee44c50d48421c1a4538c10f375177c4e9729137a0", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8db135e27923f5f57e96f2882318b67eb3740eb63c4fc8e88d2c4b60a223951c", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "631bb912f556535693f5ba363aae4f1a01e99b1f59e55d7e53e0ee8164bb36ce", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c5508c0596a2d176191331e5f9fbe608d360e7f2290189060ba6c50de794de74", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "31ff14b276c12f33b9710665c040981a7a298f4c80c3a43bc40ad6958f5b9a8d", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2c83eaf612f6540ec4e318cf419dbe803be694c8a0b51bc320d241d671042694", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a44e61773c2e5bd1014a3eaa5aacf33d0277783f2e5e4f5076cd47359df88b55", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "59de79f74294b71b77329b9b834d7a9e3884d9fb4b5c822b5b96c9b5265453e8", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "21673581d0ec1a06031035f2d77a3b3a750afaed1c40da629ec90e770b2783c7", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c87e4e2631bfc7cf11575691e6926b685d08fc056fbf7082a24957f08839e9d7", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a4663c1e1ff0fc52a87702e8ddcfbd594d6eb63809ddb1e36950e0f550a8ed87", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "97316a6023c1473cee32b731d589a9dc92f5475f3acdc1e29b00086d8c932730", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7fb670113b48b8c39779d917a526f1043b477736be867a1417544b6515e25b72", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "169d0851a59ddc4a02e0a73352e371ec13a2c2ad014717c5578b90d13fff1b8f", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "029f6134bbfe2727661241009b924a3359391e5f656effac9008cea26bb4596f", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "01172d4c33aead03f91ce7a3d744519b55769b309d9ccbc130ef51d98a97fe64", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0667a3a004c4381d20fdb395a7e5f7bed9567b76623d1667aa701add147f2db4", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "47737d5e83db10d5d247282b0a5428994a5768ba3d3b33b542352335c65c385c", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a08f3878051f2902063baffa7bb4b61ea1230487ca12f8e2a6d4bf95363cb3d6", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b3ba79db3ef2bc07552e52384d1eb2b7a889b285c9bb84f48c4cc6eb4e9ec207", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0b8ebaecaff0e334a0d8f08707aa8dd1be9adbbad8e8f191f3eaf77ea31eb2a9", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ceaf19ae91eecea3b66be7a07d0ffccc868738a851c3bd0f6ea67e853e306ff0", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "031774b81cc3bcc573464d5454e07cc91010c6c92df3b6f9dc0248754f5afa24", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a7cb86899ba31288036ff92f0bdb0127d12a02352c430624069dd3accfe4baab", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2171e180099bef5679257a3a0c404faa33d5ce4f8084e809dc242813325db9ff", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "89bf880bda758eb19f52ed52e067db9eefc50ae733ee22b5fb588c1503bff329", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "225f1137de97158d11ea2764a86265a4e3f75a79b8f513fb2ecea8727040b5b4", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5d5718a47541b038f212f045964e93f42e5465399399475494ff8e19231d8609", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "8f864ea5b121927a1cd8999246603f79ba32806c6c37da4214d8f6d38c6c96a7", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1a01eb95ad0f68ebae0f924503d76f47168512c4eaea22fdcddd28f7ed52c593", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "078da2a0c8705dc26478ec2d4680f3e70e42b72efa72cb3f0fdaa4cbb0261777", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "8d511740e208bb929174a79279011d3b07b01c984ed6ca0c923bbadca6a7d091", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "797715d86d41983cb0172bdd1013b8c325c945787b40f02673138a29a7ab3a48", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "0584211aa1847ff8c1db27965e110d6ffcac8a22c139cf1d9513be709b8d110b", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "76306a0b39f7994b41bc6aae81be7ff29d112bb7a0de79a5d78642f34858d84a", +"T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b3f501108c87c7db047bdefcbe78d70e7035f13eac131d24d5a26b3fa436f90d", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "10b7115050d9051c50f197fa6082927e2d2bf856caf6ad70fa10bd30a7e1450f", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d4c0e2475a6497d958d32055fa449e6f2618889e41bdd20fade1b10e2360f7d6", +"T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "d1d358b4712cec2022698b0fd2264875feaddac26de3d0c7625ce20eeae2e296", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "f390e181479fe1ab8bfcb84b40e5769846aea045b5fd042c8ffb7ccd103ef51f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4ef4f37dd9166fd73afd48af2a98c938e8da759038198cede76c12c917b18fa4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "93b5c825d72e16d07f87b17631324a6a3b220b4567958237f4e454bb33ec1d11", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "e82c4ae28e85732a40aa37cb7e3369435eceaf1ced1c2a8529a02253e0d9636e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8be54fdf47cbb00496314b50700aa6c87650a108dcd507805c635a483828fb00", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "ab7db0b0eb500308a02d8b89b38199ee1c891bfe7b682cdd69df539b9e50eb6d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "8cc32eae6d6d34310dfc97bddde5ce074947e5c7593005df777aa0602d9fc0d7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "ffa0f0f9ce26743233a21e22579156a9034d42482baf39499491c6fedf194ccd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "dd2e8e9a1a1e93ef155f88364b5dc1e844eddbb9203edb66af958aa693d9bc8b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d6cb88342ab26b6da8ed309f04aafc34eca1e10c0c4d7c55c879c9b3e34eadb3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "882311bce41544dd10d76cca97d52918d6b67cdba14379e410b3e22d0ef199aa", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "a776c33e61847fe4f50e2865f8765d192fc12a96f1fe819c6c677c03a546a398", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c9625145545bc4815790d7398de0f5f5efec5589f08993ef6e7a89f040f164b6", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "e2fb6414170c65dbcfe8a3fdaf9a3d480dcaf396f97a5d3bb93247bb2586e378", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "363647c7d6f7ac17247c9a6bd57a687a886138f78e1603e7ee8d0b808b5fe8ff", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "341a0f461f0b70edb1b5ed7f74ad882bd901dda73a8e9cfedecf0bb7f76d6fbe", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "83ce54dabd2681be74ead8c34dd5725e54ce35f7c9668bac69666b3bf1d56965", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2829ad86153996b8e5f5701e55a6fa2688e2cdf10281e9cdf9149738f0f006ce", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "53ee33f80416f01cf5d6c7f071fe4895140deba22c9d4bb91c0ba55c09a91396", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "6a4fc0cb3dc4a66eb6a355baddb36e9665e094a7d55acc428ddb753d5b78a79a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f5f4ffb503c60a00e8072d640811373d79835208e1cb55c3e0e459fcbc809d8e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f5f4ffb503c60a00e8072d640811373d79835208e1cb55c3e0e459fcbc809d8e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "43ee64b045e721e38a3f075d76c005eaa3b5e574fc37cc36682c1bebadb68739", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "ca49fa3fabf84844c5171343f33b58e6f778cf8fae3c30818ac7c4cb8a066722", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "5a6d16d7eb3b500045c2c8f4210c8bdc1d59c56330ed0c90bb09403ff30c28ad", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "1334b4b81ef8f7109aa2ccee6c1ac60351ac8d520910e328e187d3c57d13a771", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "17fbf888029892657bae9813bc3448f3c9035c4f19ee6efec395028bf49eabc3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "591f37217b89bbae6d06efa411bca0bf91332622bb9c68cb6da3d93a42c4c547", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "d8e40d7e9a516ecdf57aaf80453603956e6873c66b4e5a9b6baba67746453705", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "4ad3caf7d152e3a7c7594a87828b479883ce2ba7e04a6b8d866824363affe5c3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "606e1e4c4089d05d431a5eb5e350872f7c273827e3fb27741bcf10e19c9657ff", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "ca0794d1dc41432ce85b373ff24dd0e094f0f1b470ea578a887893515c2003ea", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "e9fd9708a385422dc7677c569c9973909b521671aba533067430484cf094b938", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "5b4e0680784641b263dd018743e222094cf192cde799d08e56933c208ef80a7d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "5148f04f007b21c0e1bade23d1d319798b73490b8dd224e26298482b4c7d1fb0", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "f0ef391dfb36996dfd3a3087b175f0898a39393a510cd77e62569d3b5aaa3854", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "00f4a27b5252bcbccba183da7ac34edbf2fedac7ae498367d453e9166bc9e7a3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "6a745040a6a9ac1d46386d632a5430ab58830f41df1081d61b0daba13dae270d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "1c8c7770ad8e0fe4579984d497e7d29e895eabb0a3c58216167509b517a324c1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4403dc01077699b566575ccd7678f905d0e8b766344713307d659989c0d67169", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "eaa3dda2133c41aa9e072417423c7924b3ed0df41682e7818d90a634839365b4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "1eb0da97fa75d289383693c72d5fb080f266fd3d5dbd494d0adeadb4b6565d21", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "06f236a631f48f6318ce3fd58f261be51c5618371282eb14bdc093a0349e899f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "305076f45325142efc0bcf61bd4f2a73dd3d87704f8f5f79ad50eb17428adcd4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "92d7205f9b6caa2637af17318a369646ec6b90995c93f1f451049a9f627effe2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "7c22b79d185ce9551703f34dc9f35ae389f2e0e7e956b839826a53daece42341", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "64700f5cf5c2fd727d1bc820c4857500bf1f3b22e0709fcfe68bb573c3f704c4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "13cf7343ff43f961b0f663773a2790818171052f0bf83476e62d1a6f61bbf7d5", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "12c38af43cd48efd97c0c164bbd6041e0f915b6c50be34b92521bbfa3c430f6f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "708f52e28e94b7e1ff3dc799d38eae167129e425a96a8bda91f56d57e28c2cd1", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "80f589d5a45899e3339051983377aa618a1f7cdb8154b548cf15d1f753acadcf", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "00165928eef3130ab79c6e9c0a358a162138d2325a88c5a3a194ebbe96ad194b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "79decae3ad37cb062a0387a6b121e3ac3e232e7010c1aa61c63f9950e59cc773", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "875614ec1d7db6a6f21fa1f15889c0c28de0f74336d7e0c5cff254e81d158281", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "5e5a4e26fc5380aa78d6eb797588f887e6743952fbb5de1d2d68ab1a45a407a8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "70b9e89a42f518aeb26df4cb65d74311688138d9f6c65e8c6c12ebed79f773d3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "ac7e172ebc1b231161242292736d6793ea14a75ccda732437ce91aa9bc969801", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "748433894a7a828be86227bc5e687577be0dd7e5b3795179982bf41700957919", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "25e857e9a1d3fd2b95bafefccfeaddd6e113b981924bd9ae02307e4cb8bd21c5", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "5a6d16d7eb3b500045c2c8f4210c8bdc1d59c56330ed0c90bb09403ff30c28ad", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "f3ced918ef3433b928236767456a7460ae9e862781099ef4f92619633214a1f8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "4867ac8fbe0ca96fc6be38772d3f5577fd1d74f53749b40949d3b3832a6665aa", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "1e6a1c8613838f6d5d1c696bb08ee79f58546d50db24cb1f7eaefa933feff5db", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "80acaf6216e8158ddce1d960dae43c05aef34abbbbfed87fe1b730528e7b5702", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f3053e45568eca97cfbdd18abc5a6f4de3602fbd0e2297054143d3f3281e3473", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "02be66931fc772fadd07a017275a8a251bdf82ca15f1fdcdbd34c14c81d27727", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a9646d8555204395350bf848ceb7cb25c088310b4223e76edcfc8a339db56712", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "4914b448bd631dc3b726f94f4f96d2ab6da2f8b5fad7a9366d1828667c9b1c43", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "514d9b507a05a9a247191366ea64421870417465f6d09ca634705e833fef724a", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "3db2af73a5082494fc030b94f51f85fc8cd0d6f2c828d076992b907493911f0b", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "dd226e7f4f0644fd9b53925eb4fd9feff1acf31bc673b40ed2d9ed99d4814679", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "0d63bae6a2dd8cb87af36198737a77c3d9a7836cb90d1ce5be663562d4da66cb", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "d00d1f47843957bf7d8dc0aedceab33b1d72ee3a5cc8f04dac49792be1be7ed8", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "051106c4264c2a645d6cd49fe3d68819a48bbc2f86a86017c1515312188eda30", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "cdf5a39dc0f58871d2ad42424ffd1f43c31078d317bfa92818183db7ab2dd4b3", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "d5800719efe11010cb460e8abf369e4310e10c8ec851b0bec23c2523227ed290", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "bdda4329f4c64b5a8b394c4f2d6238a2e309d2d6f9d8fac0fa22b371264270e1", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "5231708cea497ece36853ee7aff92b01a56c12e4d7b149b54ea88d17937868c5", +"T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "54425ada4138e710631379130b2d01e2c046c698e8ef65f449cbff2ad94bfca2", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "ecd910b5b29ddadb97c6d07bae13e4866488599a6f6ce011d63a30f4cbe340b9", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "7f52ed42d58bb8f0dbd18d7df879751bcfcf6dbcf23102156e33caf4a26764ec", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "64a001783619c18233f8e8083843eb0d35b103986c416099540d40411ccd0d76", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f3b01400ee20bcc0515667d518a29da29592e072f9bd0c9caee1dff428d7efa2", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "786400993d57729237e65e5734dad3ded951c31cf9d2c863c061c5a05010db76", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5ac631e7597e82052a55e31351a60fd4b831fb8a5f043d22b2737130b813ccb6", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "8a5f52bda876ce4f56f532f6cece42c6190628f559fff12be624648c76b3e64e", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "7cedf37f20e4209357d52c3db2c8a9e96dbb196858b7dc695da47858016ca37d", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "29c4355a9179f851f0e82f7d30fc4894b1e09d734d9506258bcefa9c7a4b3695", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c2902b47f6db00e0ce4aa03e34ba8bad29b04b6d602addb379569aa69fdb2693", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "7418e0e2e6ea63ce6cadf08371afd4f1bbfaedae7e595cf052a937ea4e588960", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "db6ffcd584ea678c75f70aee2007f50366b6e71dbc36b1d2cd7664a045c7bc28", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "2cec25b8f39b9a10aca2727fee877ba4d848f0d9eb385a4c3020e9035d6e23b5", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "09039d992f8858b004c0e79d61fbb0dd5db46a53c2cca92b2dca7ef855e32b9d", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "0fdbc3ee1462b55673d93c932b0bb4c76d3fe784ea8f229f6012425b23b5832a", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "14e6a226239429332ca51a02b3a7acacf81ce95f2a3e6783603f1f43a74dd4ee", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e50a0f87c0ac95662ca3634e64406334e24d281731ea1122d6d7171c92dd1624", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "e9baa23c99b41fc98119836e456d4393b08672f76dc0b449cf436d56a314e2b3", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "9d595922d4359340fe429d70eed6fa2c3bc3c73b5d7243c76873ed06ddbfeda8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "fc3e8147978abb73bf4bb37ce84cfe4d2b94fe37aee35e7ac89247ecc2f3c002", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "74e7754331164027cf15157cc5a8e61e4552d43af483f3c6894b0a53533dbe72", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "897209b260119a4639d348e2fe7c05e9962ed96dd39e8f00997f0d8b9be3a55c", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "c52300a8a9be4f5017918b7faca9df0f860855bdbe2fdc2c4c02097db78cae4c", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "2e495b8b6f176360e48d180ea563dd44df0f3c9494c2bd343b65c951447001dd", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "b44d1d1ce09497404a2878c095ecd261df3e1faad0ed3041514741cc1a68851e", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "b2b0430838bce5f98a6e728f51fa60cd5f136ea38980ee324164129a707c6a91", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "a28f6b3e3e2850718047f29b64cbe66f528ac59b925fdafc20bc16eb4ca29e41", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "bd96bb08499461cb817b4e5b5b44a8f810ce92688f624aecc746568c53d76737", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "a3838e4d33ca2e671d3d31454266099395e023111feb4f929717076f748b9fc0", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "8e365787b0656d8b13cccbbe7ca4c92bd65b610c0b3d769143c5583721d8700e", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "bb3d48c2dd7d2a5dde8a48564687c258b05969cdc45b35dddea506cdc28c6ce6", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "d1c791dedfb9fcf8fd6408c7edd94976715f0fb07f72c2a1f77d9c629c09b760", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "5daa3abbd00bc6e1213331a2052dbad3b4cf42c7a9520db7ef5235691884fc89", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "543f97cbe6b360b9b7820833439d2ff610fbd39e60afc4ff6f35c3ed491bc5a3", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a39283eeac7a2f6a420d288540f8f4a24472f0aa3f9a1002d9caef9a68699642", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "b8a77001844d8a78fe6181226dfd9aacda1c1759922e94e0030976c4f68a8909", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "ed4a739c1e414b7c833c019a129bb7297767dedfe43bf8a2d45566e1419dc962", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "c26e63735d5aec8b7a5a0fc5031b4207774a6547d6f90fc45a711b0e80e1aab2", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "b510d27178903d732a757c21710916e67e28819f4e985aa6fe82c6c95cb9018f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "a28f6b3e3e2850718047f29b64cbe66f528ac59b925fdafc20bc16eb4ca29e41", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "6a63d2376341c8892d5cdaa7d85a3adaecd48161de82d85595b9650c2d0b714a", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "d9ebe7756ab918a916a7ea21f966ffc7d93481a4e05e9188a3ca3172cdbc8407", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bce94ee86b8322e6fc394452dd9c23b149ba88e288ac8e0d92ef885b8fb1cd50", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "4c1a6cddeb2a6ae6e5b345415d20bcf957f7a2e4450e1afa5e5e35f7d27b0cb4", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "ed2a9ec6c9c5879fcaf3e34c56d0822e02db9cd9f59fe21d658de2b4feecab6e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "324def35f7316f73c615adf885b06d22078378f02516e9f9171b9e9782b807c7", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a1e067f9a82b6c6dee412399b2d3a2f88df6e47a0f77040f3681d40f59432a28", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "d4d3cf360d0327673a9eae5a4eb969c9ce38dd1e410a940bfda651c8827f6866", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "6decd08473a70a8677e7b3f486d764016552b03b763e89813a4ba085fb212acc", +"T3T1_es_test_autolock.py::test_autolock_default_value": "181dbb06669eb3c20dc75fa1d13580e9dd62849350f44919feafb5afb3e3eaaf", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "3a18618f41ea473a243b9e5363b1e4d9bb5e87f1defa04a17102ab24e3561acb", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "3a18618f41ea473a243b9e5363b1e4d9bb5e87f1defa04a17102ab24e3561acb", +"T3T1_es_test_basic.py::test_capabilities": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_basic.py::test_device_id_different": "d308ce5d954682be97ebc1b01bc8ba26a85aaa1a9e96ce73219eeb3b68503095", +"T3T1_es_test_basic.py::test_device_id_same": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_basic.py::test_features": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_basic.py::test_ping": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_busy_state.py::test_busy_expiry": "b9fce5bb65a28375614b3d0f0be4ee86334bced0acc6b8515e364e5c4668f4cc", +"T3T1_es_test_busy_state.py::test_busy_state": "65163d9de7b0c43dd02f5b6c21d4252b79bf13b291f2b4d4767cc405f03e1a87", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", +"T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", +"T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", +"T3T1_es_test_cancel.py::test_cancel_on_paginated": "e5a3496bcaca85f81453303aa5c8cbe07cd288da5b6a09de324a92fd90b2beb6", +"T3T1_es_test_debuglink.py::test_softlock_instability": "5af1c1dbf0f8341c5fdb620308f0d918025fd8f283221a658cb53110bb000b76", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "52c7ada1d96481aaffbe62bcac73caf6b4edb933f4a06c075593e3074536dbac", +"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_language.py::test_error_invalid_data_hash": "c36253c2168e4fb39315ebd7c8f924bc7a6fc898dc30d4579991682c40d35951", +"T3T1_es_test_language.py::test_error_invalid_data_length": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", +"T3T1_es_test_language.py::test_error_invalid_header_magic": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", +"T3T1_es_test_language.py::test_error_invalid_signature": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", +"T3T1_es_test_language.py::test_error_too_long": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", +"T3T1_es_test_language.py::test_error_version_mismatch": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", +"T3T1_es_test_language.py::test_full_language_change[cs]": "776f85f7b1f3ee30d1bd138655b7764577e2862a15fad73acd400e39a6e81a75", +"T3T1_es_test_language.py::test_full_language_change[de]": "0c8ff98b91f6d693da0faa33b6b6e204b3e2aa140bddd8ad429ba5db9512f367", +"T3T1_es_test_language.py::test_full_language_change[en]": "553dbdea784e4f70228b979c9185de42dda84a6416934d6360e4e65fd8831718", +"T3T1_es_test_language.py::test_full_language_change[es]": "cc6f432c87d4732b16e362a61d4c809fff4489f4ffaf54f8667c18a8c126ea50", +"T3T1_es_test_language.py::test_full_language_change[fr]": "7b3c6d92c4021ec1456ab282c9a707071e97d0837f170017bdb817659966f7ed", +"T3T1_es_test_language.py::test_header_trailing_data": "da0eca61925fdcb627b81f1c4ae62390299934652e996c64bca4ac9b75668ad1", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "c3aa48eb05b7219f03c09a72a9bbebd5c929c657a7d166089613d39e81a4578f", +"T3T1_es_test_language.py::test_reject_update": "126edadff76e22ad518edd5de8b2029819820f050e5b4002a332a3e38c787d74", +"T3T1_es_test_language.py::test_silent_first_install[False-False]": "4630f645f8d3751bec01499dd0ad679bdac3dd930f4ff0f633cf18bea006e209", +"T3T1_es_test_language.py::test_silent_first_install[None-False]": "4630f645f8d3751bec01499dd0ad679bdac3dd930f4ff0f633cf18bea006e209", +"T3T1_es_test_language.py::test_silent_first_install[True-True]": "1f085c05dbc62bec7bddda65f9bfec2e88eae2f6d104325a3dcde30dea82b8d8", +"T3T1_es_test_language.py::test_switch_from_english[None]": "16d96358f453cb9c6eba8e79241a6e0009e1b1271eb0aca28b2c9722b1e87368", +"T3T1_es_test_language.py::test_switch_from_english[True]": "16d96358f453cb9c6eba8e79241a6e0009e1b1271eb0aca28b2c9722b1e87368", +"T3T1_es_test_language.py::test_switch_from_english_not_silent": "341aa1930c0757e8f6b630760a40ada16b26b03913c9052efac175b01d2b6cbb", +"T3T1_es_test_language.py::test_switch_language": "25fb8ac71b1e5b76ea5b79eb492e8b56afdedd8df71c126bee4a0452d4e230d3", +"T3T1_es_test_language.py::test_translations_renders_on_screen": "c8c6c9478d53e92bbf12dfbc31cec270b68010101ecab5a761ed2eb7f1d63b42", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "2ad0b8c4b79111014b74f91d1aed51a15f3f4ae7e60b5305741f0e0951e76896", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "40b20384c64bc1773f11c48149aa137efe5091c51acd12a977c29d326979d764", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "d174e9d4cbb69b1a119ab73d67e393b372702feb287bfd81a24c01a99d14ece8", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00c5d64174cbfc42469465b5e80ba5a1ba5eb4fb56426994a9b5ad335dc8438c", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "0d75d61ede8e9f9290acdc123880030bf45d0e3f5f5278c05c1cb0731a987c61", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "8ed0748cd04b3ac8323c7b5839b7443f59eb0f178332873258a648ce2a019949", +"T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_msg_applysettings.py::test_safety_checks": "5dc065bade013602e4e77d602cb59145004384b7a78e9eb610da582df02f9593", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "9df2f5bc72771ff47a807ba1c2d38976e8243860ae36353090933576f12ce487", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "913bce8ffd9420702bf441339d53c781d2815f43cba3bf9c3ce55f617adf5f36", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "d64aba54347cfd8262baecfb0dd1ff58c563464d8f7ebf394c4fe473ed784fb2", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ad1b62313e9ee6f2244b4c123286325bd19f8ecb3440640c1c84b4479d516293", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "21981e8085b0d87819dec97d446307f20bb7f847f1c06847fe4b0296026371b8", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "3f21cf3db35d37e18091ba0219182e0b91022acd7e6c1002e26c3bdb771dc42e", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "96e0564da56d0e1b8ef615120eee2ea1884cc5890d09f65f4757c0812785b8a1", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a5ff34b643020bd2517ba411fbf18ffa71516e3dffd17351a613c3498c206bd6", +"T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", +"T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", +"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "6c40ff2cb792dd60aca2d109dddeac2bbcd0265b003557b8f3d16d6d52706d4d", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c0d450f3e81c50e1e455f4bafa5f17da556af6c5cb073f3ccf0bb5999807dc28", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "2d1617427fb960164fa569d225b61313b4f21a0a6ee18a67a726882321aa2c54", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "794274dfb96834da8fdcd9ae650043063e724700946e40bf1d688ce39a470623", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "d758a747c04b6d93736d4ff797eb4e566493606f8da23362952a0bec076be5b7", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "847383e0ccc265049e06d4147605e2accfaaeb71ccc2d3f4a16de048f87926fe", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "5e40e71d1acc8f9696d41f58af7f265b0d688db214ec1cc59bac03da9025d8b5", +"T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "58597f0ea23dc1b1ba2009cc073df5672385484cdeef261ca6835c3b8d66fc2e", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "6199d3bc234d0b2dfd73cc2fd8f2d791287ee3bf0c144fb66d6a2e2526744b8e", +"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "3789bc2cedc969cc21748b513fdf9c915de98e6f3dc7d85b699404f654e22997", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "b29dc17e3b2a2b7aebefde5eb67c804324aa7a78f9c67196ab28f98616d75f30", +"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "61fa30d7e1c1ff74009b7e3f9d6f343e242db892d0cf2a652689aa937248cab0", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "afd75c1ba3c8a26ed67546aec0861c6b3ccfbef94468d7bd500183716cc50312", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "61fa30d7e1c1ff74009b7e3f9d6f343e242db892d0cf2a652689aa937248cab0", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "61fa30d7e1c1ff74009b7e3f9d6f343e242db892d0cf2a652689aa937248cab0", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "d2f25b0fdb5de570ec756253b9e0b5e65ccb03b7c9c5f8ce3bbff36a12dec7e4", +"T3T1_es_test_msg_ping.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "c89f42d09a427326b4d35a2a160a71daddd47bc184b871c8414c64a51132f544", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "de7ed49ad72e9b465f47cdefc9f1bf39c2125544f024b65aae71881ebf4630bb", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "97ef572e1ae351c6cf26a1bec8adc38c299ea590d452e42d0f5bbfee7d70341d", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "6f57bc74e288f5b435bd4f4dc11c32caf5611dbccee4aad5940f83e773e6ac66", +"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "d308ce5d954682be97ebc1b01bc8ba26a85aaa1a9e96ce73219eeb3b68503095", +"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", +"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", +"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", +"T3T1_es_test_pin.py::test_correct_pin": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "f6e4bbbd527628f4c7964e02b6d679efbd24fe70edeaa71b696d4e240c605591", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "f6d512e1a764b3d00f99865b2d0183bfb5cf94ea218f867be9c40d5401d12b85", +"T3T1_es_test_pin.py::test_no_protection": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_protection_levels.py::test_apply_settings": "115dbec91dad9caffd7b50645d468ebb6bc6cd8039c7e0e2f7c95acb45c22e83", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "6a26f61db04b386ee3a4dce832d4e60e94bf892b254c8cad19db908ff5b8d830", +"T3T1_es_test_protection_levels.py::test_get_address": "0edf5f277287ed29b95d3ccd567f9e0f53f474ea33b4310a31568df02c28a728", +"T3T1_es_test_protection_levels.py::test_get_entropy": "a70efc4697574ecf38dfe005045a0101c55b77e36e21f446477962632275390d", +"T3T1_es_test_protection_levels.py::test_get_public_key": "0edf5f277287ed29b95d3ccd567f9e0f53f474ea33b4310a31568df02c28a728", +"T3T1_es_test_protection_levels.py::test_initialize": "69faf440de4798b031414e4ca77206fac9e9b33ceaeed05ac3d30e064590b80f", +"T3T1_es_test_protection_levels.py::test_passphrase_cached": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "57f8d67a75a9063c446c83b9aa9ae8077df0d2f8b59a7c66644cbd76d37ff246", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "1390a110c7f5a984e3b1f60b0ecc56a4ea2f708e930702eb6350d2440311503d", +"T3T1_es_test_protection_levels.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", +"T3T1_es_test_protection_levels.py::test_sign_message": "fc9972fff94fb5f4e6de1b8149b04b6435b983577e7a0d2a046d5728d8b6db82", +"T3T1_es_test_protection_levels.py::test_signtx": "349133da6230bd4c4fe167519d6b6b84dd21334861a52808047203080832361b", +"T3T1_es_test_protection_levels.py::test_unlocked": "07a1e1d7f242454533b65f00524b896758cef7b263ee7542c34cd958296665ae", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "bf7abfa886ae563f506c79c8687d2d3630099e43ee52289ff35503b732e298f5", +"T3T1_es_test_protection_levels.py::test_wipe_device": "0e99ebe512a10b1f32a1f12e3b3af5b0c979dcfc4811edd5b3184963af1128c0", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "c5b09c09a97448be4319ea8768cf17ef48be933138219cb4535e59670fd85337", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "1649eae38dedcdc027ca815d842aebfb3581ce678b8167149dafae047f558bc9", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9e66a84121b0d3c07f70a377432da0b7422ab3c3284befada4a95986cd42cc8f", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "092a6ef644b9695c12f5d32681804ecd7ca37b16193670c529975f34d33aa1f9", +"T3T1_es_test_sdcard.py::test_sd_format": "764b0ff24822c87064c6d355e5f5509a0cb33b549c3764a526ea8fb4dc0b9b7e", +"T3T1_es_test_sdcard.py::test_sd_no_format": "48798b0c9d72ca968868817283ee4a95094c02b03351150f3405a9f688569ecc", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "af8ce9797f4afe392f0110b6d6a19995b915d6c4a2d58ef841c1a45c65526a59", +"T3T1_es_test_session.py::test_cannot_resume_ended_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_session.py::test_clear_session": "6bdc73dd77ed9ed3dc40ac878d9284e6032e4e3b83a599ba21adaedb1730d08e", +"T3T1_es_test_session.py::test_derive_cardano_empty_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_session.py::test_derive_cardano_running_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_session.py::test_end_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_session.py::test_end_session_only_current": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_session.py::test_session_recycling": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", +"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "830cdadc929bdbc2cfeb97b9188e57d3d8ed50b118b99371dfd30ada1e4d1987", +"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "2b5ee070998b431b248af37af5a58902a65102fb2c1f3a2c7e397ee9b13dbd80", +"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "94897a889f24f2f82e0f06651a28043b94a713c01784926ebaf78c7850d4a84c", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "dc447a62d85b77f0c1644fa4ecfc42f243772cc41a32e27a91b415a7808d65c8", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "1f8b359025d6ed864ab8eca8221284987eeb62de822a1051a7e2a6f8eccfc874", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "7be553ea978220b1bf49a1ca359a92f6531b0cdc333449b510b990e92d70e73f", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "462a1ac3d2d5fd7c4728ae9982cbe44eb74938713d77dd248b2629c025e8f62c", +"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "74664875d2f7c17c91e4a850e5cb99eaa27b9af02ac7f53aa5c8ac059fa70a10", +"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "1c9452d995b711de9986e7ae260bb2f6f382e54a720330f989afffecc11449db", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "faa3fe89f0e40b73585f8ff38a46017fa083236ec02a3d3d847980e5d8f18164", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "727a8ecc2ce13554ff1335082c344550b71536e6fca9254492cd3509437d7ca9", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "8fe15a990edfd25a99e01883323d2866c33e313d233dafdd787f1596ef7a8b7b", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b501a2ef4238dd393ba155db916843344a2a3e78e0dc59f28226830aba844f81", +"T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ff862409e700035a0c53fd740f60d95ecc96103f8bdde3f7e47693b03d9d5f4c", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "c9e78c29eee865e7bc5e48e9d4ffaefe715a6c5dd414cb98cc50a56c4bbe364d", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "fa4a309b23c9a2e0e2557a81f62b086e05c31ab1a3c367cf0cfe497ef074f080", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "f146d1b396d45a1496e0c481f6ca9df22fe8971d369f3d68b324073c140916f0", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "bc7daf534813685eb934cc9c6dfeeafa8c99b5fe33822540b378649ba9cd5675", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "865d124881388b6f881a4ee01e09ebf07a622eebcd1a9fbd72d5ec8cf9f33f9c", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "48105a7c192f056dd6eb9142087c355598df250304a5da0eb5ed42f85cb5d0c2", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "539238f2fb9f6bfbc690a50dcede8edb2ee77d7b646c5300fb1886d57bb8ee06", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "2ef8419f5a45a32667513171e27b6fc6e1a9f97c07d452c8d97824523c11da42", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "20959421e423c54160b70f753bab15ebd58ea0a3addfb6c2e0d589eea751587d", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "6949c2308105cd517c0c78bf54576773430b04548316c837f0ae4a29e61c615c", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "a8ec424c23ab6a8763dca7ff6be8d5125bd48329c0ab7557e3476ed489c38561", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8c3138d7b797bcaea06d66998cc049d19448030b5c0f3c93112e5fd046422e67", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "f91fca0f393aaaa079d872dd72286065f0df707dc66b7cf70b030e63ac4fec45", +"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "310511986f493af5a50e8c30b0574046e2a935dee59f543d735980deca08f358", +"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "9a3318670c8cc490df11889d240c8f6ac6a9519a443caa58ff103f0d43e0ea9f", +"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "dcf141348153cba1d1d0ee8673dd411bad8e4f54aefb23589d90472e459069c2", +"T3T1_es_zcash-test_sign_tx.py::test_one_two": "ec94a0a6d0132ca3bf7fd0ef3691c15faad1fd7377ec1c433dc1397dcdc5fac8", +"T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", +"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "1a28918d2778032474369529a67dab67a20a68923329406b3f0db2229808119d", +"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "08fa664731a45760fcb67ef7bf3703fe871cb9bd817dda7714bc69a7f4085422", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "b6a866a33937bb926143ca70946370d1d178475e910050588497a3b90778faa7", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "a29812adb68ec325c4dd0f1217683f0f445d4071d0a00bba134b55a757cac02e", +"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "2b5228659310767993d2a6a4a5e4895f631393c4eaceba5dc888c5cd32629d5b", +"T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "2d3d54cd06d36caa063de4a1943df12ff37de3e4279e38aec93f24e259763d5d", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "164817fdc5862401d790b282965da438253de612380270b8446c7adca7cda297", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "21736bebb2ac62cda59c273498d44f9a33a5a0726080ec1ea0d23fb6d6840cd3", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d22f435a4cb29d0d2556795f181681d7c3a0b4856a8e302b5613bc5f65da937b", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "98cecf7f2c431278df4b7b0fcb4670e03d097879085a9b106e61e093654cfa02", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "14bd7797ed91b846a7a2fbb33a7f0699bbad82aa33a77f25cd759bc57e502665", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "0c4cdffba554f4c8ff78fdf39a1d54732acbab86de919fdc82a6f2987921a83a", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1e933ba8d215b7613a649235d706137206b04ce3dfd2c8bbc337403a50460e9f", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "14bd7797ed91b846a7a2fbb33a7f0699bbad82aa33a77f25cd759bc57e502665", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "0c4cdffba554f4c8ff78fdf39a1d54732acbab86de919fdc82a6f2987921a83a", +"T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "1e933ba8d215b7613a649235d706137206b04ce3dfd2c8bbc337403a50460e9f", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "7bfc03440b8f9be730f18ba29ff49c6630228c5acea1176f0f08e95dd43cbda0", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ed918a22412456053778cb6bcb6c637fca336f794973ef01bbac07be0ce53ae2", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "5214780974d69362699b9f38c5a96565178038035c4769dd6aae33c62abbd9ce", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ca881290c32ea550e86f81a1b3e00388943e74f55fbfe88257aca55df30c7dfe", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "86354d1f44e9701f97ac4c40b822fdd555fb0e539166de77843b786d1ea9e7fd", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "86354d1f44e9701f97ac4c40b822fdd555fb0e539166de77843b786d1ea9e7fd", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "865a0ce90ecb38cb4a30c53093123c7989daf69642ef67f9e51c6f4c6b757154", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "92038e8b4c4561ff73a058dc18b90b83bce84655ae1cee83c47cea7d50bc9e58", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "bc42342ea8af167c858c74659394f6fc2563fbbf6e400409f4d6a3efd39b01e0", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "3aa55fce9aa0bdcdb3b1621917cb86ceec54e898246023556f1d251c6fe4dece", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "3aa55fce9aa0bdcdb3b1621917cb86ceec54e898246023556f1d251c6fe4dece", +"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "dd569af820edd172856b93318d7fe5162c47212a7c75dfc869e41a6228438412", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "dd569af820edd172856b93318d7fe5162c47212a7c75dfc869e41a6228438412", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "4082b36935f4f6dfb7e448a8db4a9d4b74ed730b130bcd686cd446be5318ad02", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "9cde2b295fb4b1f6ad7cd0f00650a45fdf85a058a48ebb961d77f820af9b7048", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "30a1cc1da2d3d3b88acb45eb84e0d239077e4535f7a68b4c111c30de559aa70d", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "bd7d9cfa5eb86dbbd7dfce671d4a3a6734d7596c5552dec2c304987e02b78796", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6199f1199e7f5228655ac76078a7ce0c10e45ecddc9c6487fb67faaba60c6d9e", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5d0b4918063c9dce34fdf0af88e7dc850157009f981a03c504fcc19af0e0d218", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f3a59629c951f13a7f7dbbec40d019ef92dfe424195d63577f082e6b2e8398db", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "1f2ce03625d122a0e07ae80aacf6defaa219c2e900053fab6cfc0adf05aae611", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "6cfabba40a18314ae3784905b7747591c539552efc56de9e9c5228e254816ce6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "b94cb0a30179b74915c8972fa1d716436361c1ca86919c82001a178aec5c2b97", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "a3bb80774a4361170ef3983f6f70980eb187b306171048cf37a4e435fd0aeff5", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "0658fcf5b15a238864f791ea7f7381725df2275a77669db04d83f6d47afecfca", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "d8a4cb0b0902c6bec975a2fa88c7d6a2891555484e45aa1cbe14677720a7fd06", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "3c42bb0ef4e75d90262fbaa7d14d14d11b33f9f86e4b48f502b84e65d95af0dd", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "cf65ed0f9b110de871c36291097a923f5faa00bd0f0a785a7a78a718184f4356", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "5fd237aeb450acf19acf5d5bfacc4cfb47de9fe43339f11e85606bb25fd77dc7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "a562207679e4b4aab1c6e935b2badcb1bdc74f154e7318ab3a94de4d182b7a95", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "9275e8e94062a0acd1d1831cbb9845464b3d2f3f5dc27d2956d5c0a40d32f291", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "4159b67485b4b03e4b7bf778897c9aa3ca0cffc998337d18828a024cedd92bfa", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a7ec2674f61204866dc6210696c6332d063cc292107ab72b9624507e4e458cc7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "30cad621551099918b93ccd9af696bf928ba5c833f87fe26b0d3da52453beeb5", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "65b6d172e1afdd97686554e5f7057c62f01dcdc71e0c0f1895e2843711b24b2a", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "201eb9133e462ff97c8af705d80a11c708b5b2ffcccce365fe74f96a3b8268a3", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5d0b4918063c9dce34fdf0af88e7dc850157009f981a03c504fcc19af0e0d218", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f3a59629c951f13a7f7dbbec40d019ef92dfe424195d63577f082e6b2e8398db", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "1f2ce03625d122a0e07ae80aacf6defaa219c2e900053fab6cfc0adf05aae611", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "6cfabba40a18314ae3784905b7747591c539552efc56de9e9c5228e254816ce6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "b94cb0a30179b74915c8972fa1d716436361c1ca86919c82001a178aec5c2b97", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "a3bb80774a4361170ef3983f6f70980eb187b306171048cf37a4e435fd0aeff5", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "0658fcf5b15a238864f791ea7f7381725df2275a77669db04d83f6d47afecfca", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "d8a4cb0b0902c6bec975a2fa88c7d6a2891555484e45aa1cbe14677720a7fd06", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "3c42bb0ef4e75d90262fbaa7d14d14d11b33f9f86e4b48f502b84e65d95af0dd", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "cf65ed0f9b110de871c36291097a923f5faa00bd0f0a785a7a78a718184f4356", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "5fd237aeb450acf19acf5d5bfacc4cfb47de9fe43339f11e85606bb25fd77dc7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "a562207679e4b4aab1c6e935b2badcb1bdc74f154e7318ab3a94de4d182b7a95", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "9275e8e94062a0acd1d1831cbb9845464b3d2f3f5dc27d2956d5c0a40d32f291", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "4159b67485b4b03e4b7bf778897c9aa3ca0cffc998337d18828a024cedd92bfa", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a7ec2674f61204866dc6210696c6332d063cc292107ab72b9624507e4e458cc7", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "30cad621551099918b93ccd9af696bf928ba5c833f87fe26b0d3da52453beeb5", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "65b6d172e1afdd97686554e5f7057c62f01dcdc71e0c0f1895e2843711b24b2a", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "201eb9133e462ff97c8af705d80a11c708b5b2ffcccce365fe74f96a3b8268a3", +"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "3fc9269e5f10eaf1b1b960dc316d65c53a25427f8ae588742e1e5a44d901f027", +"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "0fde8a60bf50d28171e48fdac675dcbf96510215f05a7b2e2f7024e97243e4b9", +"T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "415ac3917b0e7b0d02e23b4abecaa075e971ec477284aa12ee3e055adf211c02", +"T3T1_fr_bitcoin-test_getaddress.py::test_btc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_crw": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_elements": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_grs": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "6fecf39d6581cf6bc88f0d340c17af44b1a70bcad3e42d6bb6e79cadfcff7f2b", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "7c90a2f97f76bb3b43b04cf6b39f5ce7410d08c63977d502326fc8eb48dd08c1", +"T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "7045b36c635d77e4e0217eb179d9d5c804a51a863d51f6d82b03529daa7fe52a", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "778f34eea938bede357805ec7110a3bce46c4e674d513612949b4b789a8cf87e", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "e05251a3842ba512b48a1f1949d5353c75628d12bd28f4d4efefaaca911c4d1f", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "627e60f36a0e7afd890d5a8e4bdc46076411eac12fde2191a4c6a228607c3300", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "43b841dd8aefa5b41705b4f86406bc1f1ab9acfb2f654b0519824da064d0d916", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "b26cf5c10806a823bb461b18b5cccb539ae2f675e7fd4681318315be0438eb9c", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "bcdb8619948252654ce3092806f34f932623ff181c50f01b2f3530542a974b9f", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "aed93d2dc2cecab8d11dd59d057f0dc6c86f7d31bc139e5db8747e61c7b506e4", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "3093e27c9558a19b7359a5123e18bbf8e622e098feee1fae51238005d690daec", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "8d18a14eba1e51c1d0add36f0e6e398031c7269a4d6211a0bf7eee9fb1d04af5", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "1ce8b3a7d7214b715021fe98b901db60ee979b2f77552fc53a8111386069948f", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "6aa06f8f5ee98a327889c2b1cb79e2a9a03f6ca45801c59f7aa4a42c622fd7d2", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "3398605bc7679ee13f9dcd3b9cc5e60fe14b18b060cdaa2a02235a5b23a0edc1", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "0a10a41d0947ca1c7445aa4a294c3d8168e82dc2b70fb1352f243df971dbdf08", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "3e5fb8c2392090c7ed16de105ce92b112289c4d97ac539421abca15844b5f4e1", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "125ee9d5eb0d7506d550b54169b4e4899210ecfae8955bf1e27093634cddc9a8", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "daf0970a78d6d0ed472649a0dd286e3c1aa59c8845c69bfc70bfbc1416b5d5d4", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "d39bbe42f0325f79a33348cfff7e301bc61b26c42d53703fde128c0a2635cb80", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "c539ef1f091a5f6e87bb74a07c03657ad18d9dd30cb2ac715ff83ba536849f75", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "61b107044ae71a12e1749735f21b00f92e12dd68db381544694273e2bbf8027e", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "86cf736371dfd37554157f0a56b38de6e66996ee915cea5b1bfb28e44099924b", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "03a42b542b68478ca3d478c25e5e7c4e86048cde956780d3f9c59d7bebc670ec", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e1dfc05cb29d86ab703656e8ff7227e3e053b7f936aca96421e2df60a35fe420", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "41d287728608b9b99ffe2d1e469057524fbe69be2545545346e3389428a88cf4", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "601bfd177d21a27a0edd99c4f2537453c633baf5d03ff8efe514367c61fc4b53", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "601bfd177d21a27a0edd99c4f2537453c633baf5d03ff8efe514367c61fc4b53", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "91598c1468a6186e0c499f7919bdbb1641b20bab71a0cf2b04d8bd3dd34f04ae", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "477743cb26e09b9c14f0067aa220081fdcf2a65e8b86e3f202bbca64d7fcb217", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e984355b1d4f89f349fc35cacf674734c82ecb06abb521be85163b07ad4e6415", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "370e650b9797f40c56306fe389dd1dc1a070220cebefc136cb61f17edfa4ae4c", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "b637d376b6394e1270eb0f22c86cfdb92f8fe72a186f0b6de8f244e46ded5311", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "5e56cf87dc9782adfc399a8447e3b45fb620b0df03a515b42fe83660731f6fdc", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f35141da7ff1c6b1c01a6f97870324e338ecdbadaa822382e511b337d713a11e", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "d96840693672c766e2ee77663e7569a8e060c321a2e123aec02dcae90985a7e1", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "aa3a8fa7fb9f779a0b4ef8a066fd696600b7824a39edcf63f7bf9261c258b35f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "9d7a0d844a561228ea8c0f2f86e1ce5e815e0d3d2f840ca79d340f4f6811cc71", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "4b73ca39e53380d2f8979534425d99ff737838feedbfc1aa5000ca290f1f0d9d", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "c0e2f44fea9cecac74ef521580d045f781136afc7a8365f3cbe3f954d36e438f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "308a798aac4ca789ace179ade3096e1c1871936783bb2eeef578ae2cf89d02c4", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "6dd57e9c4faadbdf1bf04ea19be37c170655b376aa4f7e939ad363c2b9401c59", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f3a59629c951f13a7f7dbbec40d019ef92dfe424195d63577f082e6b2e8398db", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b98c58e23878eaa0f8d7b963045567f8e8eabf9baa230522b80a1e1a09296de7", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "0ee2daf5250f1c60140d4e9707fbc31c8c3cef6b4cd2f5714efa17a8cc0a80f5", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "551bf640c786df36bd83727d851090037cd370c9af2d2a860d53c572ec3a6d6b", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "06b4b53187e14804ec4236d94fb5897ae090906ee3f2f87141642d0aa4e11a89", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "ba7a6d75916c910532adc4c838111fc7a57eb26c3f6d27b8db56da97b3bd7ca1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ac64da560edf66ed71957aa5428fba918ada53ccbecc4eba1079646f2cd11544", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "cd2a2a693d49256bac89d6eaf09a2808b4b32ec442ced4957f6f3a6f89041cfa", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7ca4f024bdd18ded959bad6309b50c54b1c9ae1d7c0dcfe33a543ff3d8c303e7", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "5fd237aeb450acf19acf5d5bfacc4cfb47de9fe43339f11e85606bb25fd77dc7", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "9b2d802db4c93d0a32dc8e2c400130c1005ec3024a65ef83a9db6f5e9db43500", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_grs.py::test_legacy": "6289e7dc8e7cc7217fa273029291b810a88d150e89478291bcd0aa6cc36f5e3c", +"T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "6b69e1bb6df191d38a6881658b45d7346c277d68ba656f75051655b3e8f1e4ef", +"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "360c20cfbc6f21e058ce4be7ac090211324292586ea453aa422bc00ae8154254", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "c309879cc8dbe3a4a5aeeffcc43484bc3e543a67b45af5701133c14e0b9facac", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "b71de4f0de15b52331261fb9bf49ef43bc0a1fc6755272b898c138494b21253e", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "46c1afd5ba26cabfa9842ba5c26de286ecee631d4fa038072cbdfb382798cda2", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "58ea42e8d6792269bc0d2aba0cb58b3b4b2a53df55e44a0556ccf6cdff922778", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "05127b408c7b3605899b4d9774a41c6e3046807dc7453184adff116f61652831", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "ea5bb0d02b116215d9c2ce49ce391c77044081fb474fb70e84c271b616116aef", +"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "f1a033ead754fa15713b82d50a1b7ae12405cc932de6c4524d6311edb816ce4b", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "577414e297b2fd74c135263c539db2d1ddc9e1aad3983438aa89203d9a81dc9d", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "6235d423e34db95d849101208257f895e304d52acf2b3f5aa58c755329c3b53f", +"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "ad47ea2da0986c75528fb36c003473749c67022b074281d27302c6f002fe43a6", +"T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "49530286df1333d587352dcf927b8fc931e9213cbbeb4671b67dbe5d6a298b24", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "275c1b0845499854ea106beee9e9b00e71195c6201bff40bc87df1dca1825ad5", +"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "3cf2d0e8cf38773e11aa90442b06539ddd367f096917cf7b02b3409d617326ee", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "2a0d5f531195f7771ade8934e8360cb324ec35bfb4dd3a2db3fcce48eabadc2c", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "decc2ca5f242c9359109733ba8a4a5fd06456eb917bb5f1e18f31abd0084271a", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "8621da083b8b863cb7376d3d1c3b1cdb74c1bdbb9efc21f9a0fb65234af4f9df", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "5e412355bcfea01dd7fbdb048fc8ca9be2e29ee13df0b41cf2fe27a606a938b7", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "7ef11a06671f95fe6cbe7d98c5906491a4e1345e494136b5914e61e12ee020b7", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "23cc3431444ee89500affdfaa1bf303f1c5e65fa848ef4a456bfd97e587cd14d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "4969ec97a2f4b24d75d3681ceccbc0516356ae93cbfeaaee97c2b4f42a4edd15", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "abc4203d5a535ae0a4580fc142cbb7da4ea34e250533a11d3dd35e669885d941", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "be8bd2ce0ecaf4a18f5b25109d6e6e0b34675f88b5b0246ea9a1a80b27cfe986", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e4309a8ed3a66d8972bb271382a6bc13f1198bf270c557d281a6859512943ed2", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "77fe121ce986074f7f4a9626e56155a9cc9b09afcec6faed568ca04f01f4a679", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ff5839872ba9abf9541ec3a6730bdc91aa52baa0acf205adb3aff22536bd244d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "29f10fb3e1f8c7dc103489978f422683ce26f8ab1bb36d3e7ab66b7249c571e0", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "22d722b1222c04c11036cf693e427cc6b82d64f71029002274e1b0ba29d7ef9e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f09a0980b24dd6d9d55afd92a6cf05582023efbf159532c42b3557bdb9172420", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "c3cb88ff498a4607d570e6a104ff4ca35db8c642cf1e7678178a9dc96c9c23bd", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "6a768fbd63bda79fcf26408155c7e0f5e12cfc085ff12f94388a23038eee6c54", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "213c8abee2ba6d12b7be649af9be7a940235cdb8ad482e57da1e3cbeb2a7e3ac", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "1c02500ebadb208b2db63eabb7d77a7eecaeb659060fd50080203733045b3a83", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9e401576e1ec8b7a94e971110fd3de512c26e1babd1719a834599ec2e4f37bef", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "c4a1a2bf84ef0db822aad1d95e034a45b4aceecf912907a8eaa98b6b7c28be82", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "78fe5cd542af065d475263bf70c4bc052395a644c4aa978845b3042f7293792f", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "2b2ed2a5d48de96f72586e91aa1886c43b851e0f418b8cc37c6572b890952f9d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "ff4303c064dffaba4893aedc61d3c78a5acacc16063ceb06d4cf92f2277e5ffb", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "55ad1365e270bf5a92c62dcadceac997e435e1cc5196ae0991a527f4d8a2cbe2", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "f2b8cec934a41fb549582522ed813b3f5bdb90ee35cd23ae455949873b10d82c", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "e41a9c24780ff485418e1dbd7b9c71115f1d061f8a74a8ef392883332e8973c4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "88c769aac58e4d6e1c77d83cc22f0dd1f269a0b99bcd47da902eb9214c9ddda9", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "9e03c38ead66679968499ca9438b4139fb2421c8c390075b1290d4d2e3b95147", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "553425152d0e6856b729d70ef2035c3ccdc05b55fdcf1c28c64193cb347b829e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "037ed1ff425ddc164e3081a9aaed535c7416f2dd1b892bc63dbcf99c628e37a2", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "b2440bd2e176fec4326a5c7a740ac912ef103fd595ad7dd335cbfe9c23df08e5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "527586f08b334eb2a42d864da6e8d0b0308c3d524670884e5319b9098d3b2c95", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "6d43cbc83d0d960ff648bf3cab22ab8a241006fb5a62f17610370da3e2d1d96b", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "62bccc42549d68a51a30795d9225ab83cae77939a50baa7e0943af1fdc714478", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "716f5f629007fa54c8d846b12a735b88e965cc44345eb36f1bcbe81f7622307e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "2b327b4b128dc54413be6c46eab559cc3fff56e5849d7589da54d8479b856ee3", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "62bccc42549d68a51a30795d9225ab83cae77939a50baa7e0943af1fdc714478", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "62bccc42549d68a51a30795d9225ab83cae77939a50baa7e0943af1fdc714478", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "62bccc42549d68a51a30795d9225ab83cae77939a50baa7e0943af1fdc714478", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "911cc29889b8e008d7522295d3fb42ac7696b7785c8debd4b8ba5b30f3fd3f98", +"T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "3410fa84ca776b417d39067821ef4deb36c8661afc3c4da13d9f1420b83f7322", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "9291d4802fb9d5d757a66ab259bde0d16442f25ba3dc7efda0d2e664ae9538e7", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "efe91ca80f6f56be2e368e87a404bff7d4dd7aee91d522ec59961c86548e815f", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "622c9ba493a28134c66df0301deb9b37eacdeda30866adcb78492414f978874e", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "622c9ba493a28134c66df0301deb9b37eacdeda30866adcb78492414f978874e", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "df68d87d50e76941fe344de313ce1a902bec9116fd7d331a15d995e32550d8f3", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "abc1b89743b33df6b38ff9db599575a024d00e5165151fcf3b545e1da1bb9cf4", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "9cb47be07cea181c1f2b19deec025c299584d32505daf9a25dc9e11c9f3147a0", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "f86e50f020fa7f033614c4b6d9fc5815c35ad8fa49194b783c3e3b79adda632b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "e802343b3e3c69b477f015fe531614b0088bc23d64fb75f8d85192b45445c1f4", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "3257848082d34e324598a267c178ed8b21604d004aad19e23bc13f7cf9d309c8", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "3257848082d34e324598a267c178ed8b21604d004aad19e23bc13f7cf9d309c8", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "c87e9fcdb7a12ad401b657e4b0045a8ce2db656a8a6a06f276736c1f5f692574", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "fa11eb9d9fdc8a1b51e3179eceed072e5a108363c1f2031e4b673f5dc62ec7d7", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "494aacffe3780b6d2a44ea6c029422588ff5c38357ea7285b96828addfe51c6b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "494aacffe3780b6d2a44ea6c029422588ff5c38357ea7285b96828addfe51c6b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "7b2cfd3275c89f294e4e396810f943e41fe73f0ec09747def2f56bc1f876b24f", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "3f29614c0f00234d181bd24068a35646421a8b7b0e9d8634f11be2c8520c6807", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "00fa39ab57661ca5ca9115aa850296cffb489f2feb1abc8580a8b4a43f705630", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "00fa39ab57661ca5ca9115aa850296cffb489f2feb1abc8580a8b4a43f705630", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "0b80b65a1e34f1d0e22246f8afdf6cca37ee8576aa16fa9dd293c2af22760c2b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "68b0230834b13460bebbe90ce625b07e6e96f5d1f7d9f36ec54e23988adac8d3", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "eee77798caa53faf15dd209f3be66aa44d85d62c527c910e7716dbc0f57dd7b3", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "0096a83989fc18a3163f420919a3af5490b1e32218a5f19180df88149bb099fb", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "abb9c42fdc6d1e76b6d4af987991fb2876f0bfac8c62085c506540be25fe7c67", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "bb811ac5f99ed1ef1794f00a48b6e3aa3acc60455d94bb5843e53efc6c813d3f", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "d3bd0848e296dc0ac993558544d45d843809eeb7e2f6634755e64789c8adce54", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d87a5c30ea9f4b9c82e030523c9b94c7de5aedd4b328d667ea397b4de759987b", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "26e30570cedbb79bdba71cc07a1d6bb5e1498ca3f2b9c3969fd8af844865dd22", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "1b0f74b9b3876fef356d433a9485669d76c53cdefdb20594bc13ab373147fe39", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "e74c552d7d62def1d0b1cacc971521e9b5230660219b22a12905304b427eedaf", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "438e6f8e6399973919e93f4d5a32a50fc6dd4fdc9aeeb73c7fe01f9b98b9b788", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "e822cf702a2fac85fdc3452fed9ab69c41b12502d4332d8c493bdbd4cb409b54", +"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "e822cf702a2fac85fdc3452fed9ab69c41b12502d4332d8c493bdbd4cb409b54", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "73b77944f673315dce348288babe931dd98e5ecde889a542ca566936e1b62c8d", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "706defe42ecc7439ae546add7b2f798a86f77b054fa1daa795937d6c0132014c", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx.py::test_information": "5cb7164bcea57742b764e62bf40a7179f888565038985e3a9ae147455833ff0e", +"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "f6fc92dea4ae386aa836e4872fca4381f0f13901228a9d2765b64142fea36568", +"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "d29da9e71e01a04feb87a00a01ac8f18e9611fa0e322d9e2d9646e58b0924df2", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "9e5c7fb61b1cf746bd60b1211a58b05ab68cbd6997039d4302bb330bca5ea018", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "2f2815858270b6637af1af71cc640053a4d43d4557e452270c28520049a95dea", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b59aaac4900fd3bd5780c725b230729aa5b685843c79d140b7b27dd39637af1a", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "2f2815858270b6637af1af71cc640053a4d43d4557e452270c28520049a95dea", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "b59aaac4900fd3bd5780c725b230729aa5b685843c79d140b7b27dd39637af1a", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "63f1872ff4a60121e6b9a1d44bc3a573aaa527ab4d48b9091d1cc9227141c7e4", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "4a9fdb5e32de53a7af7356d109a6d00e0c7fe905c2f30845a953c15dc93723e0", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "318c0880c8a6c40ffc54c9a1a977c15bcead9b6d79b6fa67157e1d10c3c93a4e", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "bbd3872dabe2944eb33c4ea4bd56e1a72d67b5f600320c09a319eb1ff22fe174", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "2a84cfd6eaab5dcdedfb7ad3a2344fcad69d05b2ce4b01d962e05bb8f5c127c0", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "a2caa1f40f7415ce0c8ee015c257fbc29b860c4684b49920f773f34a22c94bd3", +"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "05865399917fed835feafede4ee2207b6f68d373e894d93d932ca1417811dfa4", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "e0eadc59f11d29d8b7f8a3dd5d9f445eb30bf184d1cc8088f032a34f790bdd46", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "af686e7f30b039fe3f099dfac4461956faadc411154c6930cce3deb7992a2778", +"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "779d856268b0187ce4afcaebb9601883e5f759a1edf93202f9b036b9e4e524b1", +"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "0f0abb0927474845b77ca2c3cc85bc534890cb8fbaf4950bc17cb3cea8773863", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "1e28193e7cc446d7957aa68196129e5ff60fced9db1e4b8ffe82baa81cb9c937", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "b66839ac8318483bb49bd90380d47abcea85b666200fdfae41ce5a7ce7eb3530", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "41268e67a36d5d2f9200b5cb93c7708f7d2630fc25433babc28d338a1245bb60", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "e822cf702a2fac85fdc3452fed9ab69c41b12502d4332d8c493bdbd4cb409b54", +"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "59034b3e773d1ad7cd116839cb056bf930fe3f02fd502f064beb619b30152c6b", +"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "fd03f788993a729d52ebb23379ecb4b44eacafdb38513203ac78a70262fce93b", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "05865399917fed835feafede4ee2207b6f68d373e894d93d932ca1417811dfa4", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "58cedbd2b0f00a077a79db2e6b1ee334a4a822a52f5f8c26e9680c1ecc9e30da", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "61a2155e831bf1d7cf0f878b6dc5203323d48747cc3b406c0ba83097d68dee14", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "9ed346bf9ddadb8822274e81cceb02b4524d41b56d43b692435143046c914426", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "05865399917fed835feafede4ee2207b6f68d373e894d93d932ca1417811dfa4", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "7337bc3b982d8046d7af373ae75e24cf99b9868965f82abcd360f212f5ca0e7a", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "51aaebe0f471a9a9d1633b487e9d9740d27a4181f193ba89fc0df76ad3d73e6e", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "16fd1a940019d86162054c5626d68a7f772d17ec36f0c5881efd4597317df98b", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "4a09a3cf18fb19d93070cc25f14ef8d6cefaf29d16d094fd1da45803505d84d4", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "7337bc3b982d8046d7af373ae75e24cf99b9868965f82abcd360f212f5ca0e7a", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "96f427e2d635dcc749db3e78ada77e8f65603975239fa2f271aef050fe456141", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "7121fb5d87a773d745548d1363d1761f51190732cc1e08720903a9d6fd9d4231", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "5d955445d35b2b8f23c8cc01e308e87a5701b2d996694be7205d30346127ed47", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "3e48a3d1a9400d14a44a8b225cb59888f9094456962692515b23a46be8e96066", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "12dd6136d6c3683b2e8115fea3e2af0164cb480cef6bb21c24e8732b106ae508", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ccdc2664e622e30f2282817efc9f33d01929c2300ff90489d1d0ad318fd7e2bb", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "2c0a4d20dce45e2034b303fe810cd31e4309f07bc1c5f7f03150e47e6dd2e962", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "b0fba0f4fd737c7b6bcf8eb945bf0117aebd966feca4fc791af3b367418c5707", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "4404338211a915e093c66c128ce0cf46730414b764db363be0ff4c23d84f8018", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "b0afa61265daa4557e637c1a1c44ead06a3fba27bdc7e6635237701aecf514c9", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "c2a28688494200a7ec1dc4197c1e95df5c973d33596b9fd786b2fa34e7743ebc", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "8e66b245817a8faf6c83007b1357dfa2d723eb945feab2bdca5b4353ea9baa99", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "b47496dd4bbd9835e6204adfa01859e7742ced97b43ea14892903f159f9786ee", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e638071fcaa6adbb0676379d4ed1922d3f52f5b78d32c103006cb943c455024e", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "b47496dd4bbd9835e6204adfa01859e7742ced97b43ea14892903f159f9786ee", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e638071fcaa6adbb0676379d4ed1922d3f52f5b78d32c103006cb943c455024e", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ddd160c355cbcfea9bbd507e39f62cd7d9f265458cd1f927e59535d339b537ba", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "0c92b4dda23b392b0712843adf334818f183a19b7eaa1357199fc54f89abbed5", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "e22902c80724ab06ff26fc6c37fee640d437363b3cd28bf0aba181b4abb111ac", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "ee538d290057ff9c3a3da088516757d511c820a886eb4c14a8c8589d3dc17a4e", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a36965bf7d65979cce8b49ca918451472e4a97d0acbdb38d8c23067511731fd9", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "30c22f9e132fb19f47bd7b2f8611770f6f3e927bc6756c10d0ba0778377dd769", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "52eb5a4b556599b3ca6c7f6e84294d3e85b61fda41a143a6a17d5b184dfe1499", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6293d74c064ac9f32bf6db05fac7f32c98f5be527f47ade37b15bd3593af550d", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "411def112158dd0e13f24117073b871e1f20cf7d00d9ba5d39894268d925cb58", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "411def112158dd0e13f24117073b871e1f20cf7d00d9ba5d39894268d925cb58", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "411def112158dd0e13f24117073b871e1f20cf7d00d9ba5d39894268d925cb58", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "411def112158dd0e13f24117073b871e1f20cf7d00d9ba5d39894268d925cb58", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d51dd62cdbed10434c6cbe4b24570213ab77b7126a953f4f0844a5e6a93961b2", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d51dd62cdbed10434c6cbe4b24570213ab77b7126a953f4f0844a5e6a93961b2", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d51dd62cdbed10434c6cbe4b24570213ab77b7126a953f4f0844a5e6a93961b2", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d51dd62cdbed10434c6cbe4b24570213ab77b7126a953f4f0844a5e6a93961b2", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "55c393b8014b2de2e153e13f75e6ed66143c2010f59ca9c4643da176d438ce96", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "aca1d0918616220f2ac88a3243174fa901e0a306d9a85c685f37e55f382672e6", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "328b226bfced1530de780c9bf4edf4be6db7c7047d838317cd5c16d93000387a", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "328b226bfced1530de780c9bf4edf4be6db7c7047d838317cd5c16d93000387a", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "fb7b7cdea094807213c19e204e5c261e927a7b0cb446f52a07eb18c990698494", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "15a625f3614aa7804558c9d8406ed31ec20e6bbfa1bbed69d6408303ab0fe33f", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "cd022d9bec1da42b1597b7f2608099ed77aae8b09d664cb7c85b44f769d920ea", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "fb7b7cdea094807213c19e204e5c261e927a7b0cb446f52a07eb18c990698494", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "523daf6e6fd10e6ee3913d377144118e944a63ac71823f808c93de53cbfb4850", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "01fa7a4e821cfee11ed64c4c33cb2df3736dec6aedbd859007f803ad3cc2e408", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "01fa7a4e821cfee11ed64c4c33cb2df3736dec6aedbd859007f803ad3cc2e408", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "01fa7a4e821cfee11ed64c4c33cb2df3736dec6aedbd859007f803ad3cc2e408", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "5380979bcd51be250dcc3bec1c627bca3933eafdf9cc5c0853cdcd1050c402c6", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "01fa7a4e821cfee11ed64c4c33cb2df3736dec6aedbd859007f803ad3cc2e408", +"T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "118e249f1772e7e75c3ddfc0d10238942af3a65d0ae8393d58b752ace02592cd", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "156ef03dd9ee2268e80b3d8b212a1bb1df4a08fec49b7ee4e107c21db1c292d1", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "f67b6d0802fbf04345fd488de977e581eed2ed13b60d3f75d326f7999a4a2845", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "05b5a05d5e1c86898bfe199aecad2d07934b7311e8d993b48aea6d28f2c27524", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c264b1efc138d10bd397bb4b5162fbe1eefad3ab0d3f9be622ffdda28b13e2e0", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "84f29d34b6d4f1a9e76603c6bfe2d8489e04d25921ad9a05bbf66086d940e6f4", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "1fe9213588a9e363a1d2f4d89ec7a67d1b6000dd0f8b613e70291aadee298dd9", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "9fb5b3ff4eff27f8c7e65df31b3d1f4594520dbe906b6eba1ec4357852b3740e", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4aed96b915f10bf26318aac1941c9c43c4c9833aa0cedb79a3f09fe8e0870cae", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "fc1312198238400cfc4cb093da471e81bcdd5ae38f9e6dcd314d20733cb42e1d", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "47d3ac67390b5e8d464ef34611007a15182eb8ac2ebbcb76299970aa02eee8a1", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "dbd59f5be6da78990ac105c21d3ca9691e689d109352a389991a61246338479b", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "ad45924b2d2777506954d93db9cad483765f395d86c9ddad9fb8693a6a13aadf", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "02adbe62c480e8c779720bda7bafece5b2cc38b5a382f87c45407e230f0cb322", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "7337bc3b982d8046d7af373ae75e24cf99b9868965f82abcd360f212f5ca0e7a", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "fcd95e8ec3ae143955d05cc5b623f59315c4889d899c074407b795b1be86c779", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "f5a149be5cd990e4d932b228537769aacd8d84256da801f37e13568bf74d43fa", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "73923c6e53884d791c1ecba438363799170f6b643def00c21633a2b684b1f231", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "3e464991c1192e879ed472a08dbe7fd611947e6ffbf4ddaa87fe21e02844e3a4", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ee4ca415aa27e024055f04465929eec702b8dbd8bdcf8eb841acf087c1a60e2c", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "27d7a951f83b3ab03fd93f72ca3d979a3be8757aa685a07ff776ff41adde0ccd", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "c473a4b8f5c60e4cca027e708125c2ac98f389168e8b69499ca174700d226c75", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "1a9c668ee74047489d429900e6f31e6d406fcd0de8f0eb23829da1699bb94657", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2a76beb92671cad903d02c0dc40b2e6a1283d27a5a23e98d18e27c5d2962aa54", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "8f944728a887d6556b08692ea9cd221aa1f23ea23d82b4b2311bd099ed18f5ed", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "7dddccc3bfc2a8ed2fa284dab95c913cf2be50a8f603a9d01211aae97603eef4", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "9bc5f43d9c777fb9349ea30c69d7aa745f88332d7e5de46a5172efdf30ae98b7", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "1899a0657205e9311f0b4c6ea200c5ab43a9fd82bf3cb21080dba90889006090", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "670d06c0905f6308d30fe89685a7c342c6eb29385463c55da42dd07f98d56590", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "7514ca7aea11818fac40170757823d69db64064f2e3f750e51698be508ac9e7b", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "3e95c1ffdf5f032a67b8ae8aba8b8b9d72aa6262d7be58cd29b4fe70e4b5e257", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "f668faf66223a22e49942f942f0bc8558a7acf64c086d5ee7e5ab62c2abb7c79", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "86cf15487e15741a3de70e68a73de14bbeee86d5952dfc0085ecb333bded0454", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "d65d1112085ac2dffb15a3c7584e7fd0a07102ab1bcad448cdf3e9403707ccf2", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "6b8683b225dfd137cfdbf4a1d3c082a81fdca1a64fb724e734317885d71a7b3a", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "405f0ea5cf46ff453eeb4bf1848b831324bc06f4be8efdbabc2c9cc014b3c2fb", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "77a84f0b3fa59c5c0daeb98a475b70b9f024db6923d3f9250bb35f1719a636a9", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "06095d90b05853e8c4caf3bbb3f0ac51ad720ab2fe47b006565842fe5feb5c6e", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "ddd6ea2edab4b1538dcd94091bb5fb3c814caee54d6ba6cd0dcc584d41e74537", +"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "7a3c9d103761ac457813701961cba445494ab6af9cd28b2fa0bd98c3666fcf02", +"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "53b2f5b68f6a7fe14f45ad637716ec0a6dfeca59930cd374f7bc4a434a25e93b", +"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "4e729ccad4f954b5c1296f100c4c6d5f699d5eb6daa02ebb90ee79e4b1e428bb", +"T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "9f4ebf50d1214d1cb6c273be28a15441df4e4134f317b6212841b28468982a2b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "fdf4a99966125f9f684db349aaf1b935852626ca5534a6b6e696a50adc9bb53f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "65442d456d3d521ba59aee02f930aa2203d11071cea13c0ed31d6497ad6c77e4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "7fcd35e688e8ee972f222f45ec34a01acbe817191cb2ac98a130495860bad82e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "0b1b00d9e82fdb3a6a1a665d7b1860b2b3e381b399f30338ac5c0ac01614ef36", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "aeb3d55d6877571f9a8c7b073e2629ab85caad7aa027f844d3926c1e218019b7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "99520106d3c6ed0e52af2f46b274d47dfbef69d9f934b5ed78488665e7c63b6c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "6072be81bf0b333e30019206fe3c0932970c869a5905c61394303a2ecc4d1570", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "4fd99df9d27d24a5912322ead6651ce08f2b6aa5900b2e23759e07e662757f35", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "2cb81883166b264fd5d514bfbfa2f86391ad94d8a21c16f0cb9727a8d24c03f6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "20bc713b4adb7681ea3d5d71cbee6560816faf7a24938eec09bbbc893a9b65d3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "13105587bfb4866cd65b1f6b51de6c4cb40337510d2ddc1adb675d7f7b0ab3c3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "00d736399d885780f175ae5ee3846ea2fbe7bd05404f81118f2da0813482fb02", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "a0862951a73e69dce78390fe853f8a482a7815481bca78e71dfdf9fede4bdfab", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "7aefe3667cd4d4f2e5ca5cd7e2fc57e27007c936c0e5ac221d3224905fb04166", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "ce01e0d29fcfa0862809e9b28d8a4c3970c452bf0cd041fde1f8a5815743a9ef", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "d590a2e0c60926525bddd5a997f245edfcd86058cf619475434803980ead35f9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "cb1af0c8607a7e63237df86e1934c7b1e3dddc0fd5ad569f7c0eb7578b3499c8", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "bdc116adc8d4d32cb28d85c39d2042b75410ed4f7be25761a379d04f79d131ff", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "cf49df3e3e76b4a854ca3a049e06a133725f04e5e76d8a8b1a8490cca5c5ae42", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "505cdb8617e30404b439cd6966a51e083be798905beb5676adf0d18214c2d5fc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "012c6abb23166995ab30078bfd00aa223f86bb527049429a5eb8cd8583b05825", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "2efb8e1e29c0e3d4b60b17de0cb0d8b07bc72637b17804747a6801b659b48854", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "7b5f62ec21dc9adb5b3d1f12add86d90b4813713ca666a111a711bae2a1ce78c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d511970f72c3ea54fee4bc9915a1df2b34cf61c1ae9c28c66ff74f079d4a87e3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "81d0e34d341a55f3050ae76574c38c2ec7c6739196c1c78b64067b969614152c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "790565587b7b242be0907dba8617305e2a1686f2eabdb3954ed2444e93879acf", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "b46638d59143890b1fa3c8b85152035cc4df4eaf4fa6aed97c9f8af10b339a13", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "55ec537f3599ebe8d8c22a006e10c5f63075d2b2f45d7da65f97607ebb5ec30b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "594c17a7a81d6ec67e6d19c2b223aa9fa0c05ac491c3dcda2f5b16087c3318f4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "875548e98a8aff34f938f90029fcf36e5632b649825e352d8ea850e462a469fd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "1efab2f5a4441332c6e931dcd3a19143651b6a2dd84b5a2000eedc6c7afc10d7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "443e57a7695a8a91c39f2a5176aa353ac59d48170832d42a02531e476a4071e1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "7d561d8448c9da41817218af1917d84cc4317a3ef3d3d583f7cf66698e9968b6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "bcf0e2a1fa567b792a0b7e06997cb49cc39b6c854708d7cc205f27c04fa3972c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b01ae467c0df90ee63d74e75804b67cb538a951d7fa971942aceb74db1e9d651", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d3e8771a9941ccd8f8ebd72fc7cdb6c68365e459128c8a0d5fcc2419e47c67e9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "d3d0ca8b15341ab7fcbbda68b64e2c4be81b86abf1a45b92e25f77921e68f9d4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "14d42083d9d28d1e86e587042fe993b7af3c36b71bd757786a09d3005b494a34", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "28d3cbb241b30a28097ca39fa2aff71e970af0a264ca8d9576e7740958bc01b7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "01c287aa4d24a862bcc371a16382b5db28281523f155b35af5f647d46bf7a907", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c24b6523b0fd6931855318048b690a1868d017da94166a30afaab34dca35cb29", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "82646557b8aeea5f813789ace8f750283910de2cf983ed356ad4c0c99ca0bc5b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "56f2a02d046b14a25118b26320462691a312d35a1c123af6d01ed9ca695ec729", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "64323c9f66c26e229c54bd3f49bbf87dd8ac5969dcce09d651a72afdd0a3d455", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "f631d43bd2de8bf6942d9636f5f882e9eb4c4f1d02db5f0d53765766039b5283", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "0ce983cccc1ef25889f5e0aa2623d2fdcd1ff2623cda6a62ea13f0a8959b368b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "137814e0aebe1f2a09eee183218d1b3e19363e2a5700ab870eb822f7d32c5aa4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "3bb4f1974796e51b293cd43f05d36dc5b6da422c7cb4e12f9cf9c2f8356a4fdb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "36366148d1586503079ced39177c3d0d92e2781d64806976ab7a13f448730fd6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "86a8d4634c64a53576d8de883c42a265325c36c21083c8f04fce23af8399b172", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "5a9556e67b3ce47e35802d32fd4b45bd505e28b3f0f88c3b27a3d74c60a03776", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "47c783fb6aa83d447e0b13a81e7c921e6c68b5e21419b8a3c11a8842e1f3eea7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "46cb5ad9809aaefa053d52c3a38422838890b7cb1296a3cfa6af3ca1705d74aa", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "388b75a50535b8f22ccb28b136856ea123d3d22a5c5217c361bf31a679d94e93", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "2c85f0b3dffcb5a193929723fb8f772662c08d0a7f5716a9191df5413fbd7f9c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "52c9dfb4435cf181bd6a5fcad569bc05cfc22030ad58358312c8f7554631c42c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "18945f14ed8d639574ab53a49db799dbd7ff457c9efc157736ef7dbb357ea6da", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "61eaaa062f9d7b6cc00889da53cba87f2cd069270fd0812592968b833fc99cdb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "870c338f2d1c42daca8a350672bb068d8fb62b2384910f1cc2979e80f1bdeb4f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "db38a0f5381a9a6e4bb39bbcd07df160e237dc6acc647b44420448df5fabde71", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "6cda1cc8a39d5e6a60d13d7ea78ea9f03c82652185be251a9bd801586d0a3e0c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "7649382fa07becdb8dc697d96b784a14b961b98eb3973527519c5e30dab75552", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "560860afc8495234c3d81c8861a46a1229d7040c831f09ae8cadcd6a7835acca", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "baeba4b1c3e7e5852317de8828e43731c7b3bac5459b82dd331971a2e0a97487", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "fafe2bc073b500af3a296a98f8b65f311b253bf59a3c92899d7773faa62003fe", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "9cc8f3cc6fff07e04a3ef141055adafbb2ece0a4103bed86f01734074a23dbb7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "6613635dfc3898ce372864633be64afb54fc954cf1ce0aaeec559bbc7fdc3dfc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "6db4aeb5b6ab8d832416f0e2fd9ac361dbbc90a8512b865c02209a5916c7cd17", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "19c26981131ea694832270f6de40dcae140911649fca68f7e6220724b51bff7a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "d272629f59f89189a5a49beedea12385d6d7e387242bc3e55f59c2b4a5bc0a74", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "167921bc36f98673d0fdb04edabe40cda485cb51faa1d0af8f40d525f5c7a402", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "a004c14ab3cf2eaf15da85a57df316d7a923a130545b15029398d280b2006c0f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "87d8f3d292dd2b1b87d6bc1c2a17b9d17501583a436ae673c7c00ae9a8bfa208", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f5022320b1f86fdeb07f6a507cfc560aa7f87cb88e36509c13edffd3f3b2986c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "70b4f9ef41baaa3344606071a0c8ce23e4fb654b3bff3eb2cb7db5602aa755a5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f0377bebef9b49783ae6e1037be2e39a253bce52913a23794202635e02f65b0e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "c68befd5af9438ce218aaa5986bbb295c45e495e78211f6a5aafdcb1e8d515a6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "9c97b9a6525c024a3f1320694662747bdf449bfe8849f15f8fa679d6e3f72e4a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "76daf421e38e4a4a1e694d915b8cd5d1b39aac461fe2b32185d85dd32cac96cc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "9b0316def113760816e1d0dd860b3d24e91a7ecd265b787fc22a8e544dc0887e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1b5affdc4a3b3acfb6574ffc3a7002f3d8ec17dd8a98bb107f48e2926678e3d9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a81d84551ade18836ad6e966bbdaa97ca6da01f4354c3b8a17c8a2b19f2f2982", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "daaa052e8c3cc7c85f3aae3f6e26a5ca626647d3cbc9c1b7efde48469581c951", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e3f23d6eaf834a163496f0a173d20395fcc713b5fdb4b379052d2fdd0b94fce3", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ddea86de344eb0d41d50bbfd61b8188b0f2b635f0e4eaad3cd1c3b1367723556", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "0288fcbf818decdd67f328c8d1d6a663689debb7376e66f582ff3860a538498a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6714257c9f0a8664d2ef99e2159e9484e07bb60f79c3e87f34c603c03a1f1b8f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "eb900758db099b0e32e4ab2457bb36c812a23a304db037f572663b4528d70ebc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b6764e6ac9d6136011eb859ddd3133b752c7a6ce9e8a3ae8255718bfce8a661a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "6136e9177de3d198553fc9e55d90fa81b13e09303025e99b88483063f36a3495", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "87e992228ffba47d4e73db8f7682dcd61daf7a2c5f675250d90b75453e9e4f81", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "4a7bad8df987f22a13031b89e60cf90b4deea803059ef236be024c949e8a180a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "de739b099b84cb9b66546eab0b53b59970bb7f47156c0b908997e321b3a4eb54", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "4d47b8b72d559fc2cdb1dbd6dc924e6ebae230f70ac856b6d6c9032439e1b46a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4e7a883f1de45d05956903da6054a5cb59df6da9fcdfcf885527d405a1bd224d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "6ac40ef73d2efb7491d86195aea0b3c49a1c9216942c2eaf5e7ce42e7a8f107d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "32eb2b727b2bc8518cc3282d3ad0561f2515cbeb3bce77dea1112a4ced333645", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a4b1759464d1831a39ff16df02d8791fbc99fcb8b039a31250c0e5b989b54105", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "87cc2fa4e1f3beca1c130754d214f4689c3eeddea205dba6bcd5674a4f218ca7", +"T3T1_fr_cardano-test_derivations.py::test_bad_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "ea589d000fa95376b2c752bb18caf1d34a067639ab206c278bfeed5b2af6b119", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "8ed40100cdb1376e0122fe01ad50344b21cd6c586dad82912556b84922264938", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "8dc576c239f101fd7e188ba2464bdeacc373242f761f58cdd47d1eaa837d1cb3", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "57d15ea6b71c06a8496a95bfd4f4ab59dd9ddf5a312324c18f1915f2d2a28edc", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "cf93cd8bfc2cce7f624e29475d5e2417919027c5144384d8a7409d204411db52", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "9e33905209fc2e5df9bb63dc08c4c9d93b513003ac2ce710698ee7392ec6e3a1", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "99c29b4eb696cc43bc0e903e089317eea6e14047d7109948c403b528bc07cb0a", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "5d83245a1ac2d071291d44b92f444e557d37b089829b8862d0a02ade6b5494e6", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "2e1c4bbe9dd9a3543521f061a3c2af10195707670b0cf576fba060621a310a72", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "52aca9265ed536b0f9b1e8c594e62c24242d02a63ff71ceb281c29dd41f0a917", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "f9258d38e58638ca238330c8ed61dd2aa2476cfaf1bba10bcd7e75534ad1b417", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "35efe30cee06c3f175905e1f389a686fdb10590be0adb7cc8599c2c0ce896b92", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "03e182bfa21c6bae9b286ec2849b61c0894f2e253805708d903eac7545d2c95a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "bc8cc136dbfdee105d5c6c816b1c84c976f881221cfcd277d7178aaa1d6f2ec5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "7b0b001187ae3371824c60ccccae5005703d524f4bf63bd96ff73308bcca4da3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "22172849cef60eeb10c8138664d2f4a5127e3aab0b8e6f73001fd20cf7eafd12", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "64a0730ddcc51be13501d51114278d1ce670e00582f33da116867e090dfa7e8e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c3cb2fcb57d647a438d33f4b9fb8279ac9e9fd43e47cb56ed0da39f507dea03c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "440ac129787ab880d4a8e2221c55e76c3ce553668995afd5c872b869aac84a54", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6860dd2bf19c1b1479adab501d445e0bd7283f86128a43efd4981b363da2fe11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "3f3bab493d90415abec67926228a6a78694bd3cb07cbe28448191f8468bfbe95", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "54d2a9abe1215bd01985195aa71256407eda59766bafb601f006e225b2b6fa92", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "5d77b8aaf7655ea2a7e6b9368076a2392b18d034806a0ef7d1e5ea0cc65ff401", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "a6977da1bed226a833c288ca72b4f5cab755978274e10805ca947218ce8c73a7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "71ca8430f283197d3cf0cabab04e51b343beed76c2c07a6b24b6eac3a7a8dd81", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "71ca8430f283197d3cf0cabab04e51b343beed76c2c07a6b24b6eac3a7a8dd81", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2209b458be5f45daa63b11e218d1b17dcd63f66de0f0908e25f5cfff1b872600", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "08920615e4ce7582ce31f039459857b49b3ad5e13e24cae1759856b7d5b339b0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "5cbd9d896bb5f3e5a1cec3d8aa8247aa3254e94bb81e3684fed793327c344091", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "ce932392de1b22999ee23834e367c2d3407db43c74d571df5c7a366fac88b5e0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "27b9a4d73437ddd5d6e82313926efe54f6b7629f2b53da0f17a17bd5c35ace0e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "85875f5acf1bb81106cc9eb2c6a8defaf688960fdaef0798ad525697cdcb1d04", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "b50c046b25281f6bfaddd6f9b7d0c670eb767b3d9f777b3d753abc9fbe4f683b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "9d9628a5d2281314e1f9a33a87fbae9fde4920ee2224ea63deecb60c0fd74de3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "67ca7ac81373aada1fa5c81c2c454c06ac5791cfbf92eb2f20d7e9efb5b89f03", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "27b9a4d73437ddd5d6e82313926efe54f6b7629f2b53da0f17a17bd5c35ace0e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "85875f5acf1bb81106cc9eb2c6a8defaf688960fdaef0798ad525697cdcb1d04", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "5be18e1b3207d37bba46818a8b7dd74b721cb5ce53f6adc1255171d248048c4d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "4f7ca7b865d40c47b6b2fca37eb0eddb71b3bfd11f93db63949c59ad79b0a5ba", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "94ceb8384776fedbb46324f901582cb118ed2d3fa5ecce26a5ee3f21c184819f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "4113afbfcac3a37631d769ea1d4b206fe5bcbf4869888f07b58051130466c645", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "27bb7b48ee15ba81244c17346e70de1724bde1387eb71d8a632d11083b47e48d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "5a5ce451da2f69630a47b37138e0ebdb269fad62aae5c7cecc57be98c578b36f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "4d1db4191a2bf2b7671551adc277b0899ea4e9ec7b159670c5841ffa73f13eca", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "c017691e448bb1ee393d5e9d109cb1f4203e299dfd0eb87eb8b831cda784461c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "70eb54f6f0488f11b6858f0704b8ff1f37fe7893ff816e6a66aaf36419f4057a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "71e4be51ec24b232bd040a534ea8f504e6869242d5a0b7013894ededf186234b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "65bc410af70a00b8c6a7c3aca4d8fb57066aca2a21b768c20b321ca4a79004b9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8e3cc1300cdbd3f69e9441a9750c8e366d3c828009477fe39ffc0b58b6b90663", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "45bf1893d3e806544d428b5ab5e86e198e3482e7424c5cf1106f9632c1051814", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "34a8a3578bf50bdf57ca778bc08a08a47ee1455fbfec9bf9f8dd5553d94eeef2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "eb333dc3c2056f31adeafb8f8271e8fcd995469f76b073d32fddb9a821703227", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "de0d95272bc1cb9ff3b08ccc8dc65164afc11ebcd1400fb3ff8cfbcecf142172", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "bc2fb2b3f26531c8a66bfb06713d5e0446301ef15733df26bd2fb125c35f2d49", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "28da3f6511ff862dd9bbb73cb98e8c3061d6db02abb568fa1c3cd1cb57233c70", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "0073c03acbd7347c15ad561f6888959ba5d87911300d9efced5b2c3b84188b3b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d1c4d21703a99d6e41bf8ab0a5c3f691cdaaefbcebb7d1415e862cff4534a234", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "9ca4357e914e9e5495b82d2155bbe5f8600143a8e964ea09874f5e3b1d155c59", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "4bb4786292061053882c04267e36c97666d76d510ccd4c1f3f4246fd2ec0767c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "ab3fe7ee9c22e5a1237a3338b5eac740d4e4f344f191ef2f7b15cff47a27ebf7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "143a631ccf817b4df199d45e538038bc59cd273a9faa51fe0a4467d75c75e422", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "89ccd14c44a02c3edac85192dee239b24fef4a8568f4d876af63e4a61ccad3bd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "d108be6ab7541c4cc23d7254af835200aff6a1cfb0e44d8f3b026540eacc765c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "22fa43c3ea63111d6d1e9c43ee398dcae78f5d7e5366a3d19b10ae1823833e35", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "596c186a2fb90f23ab55fcda3e6aa8853d9627b9b0702bb885a93a289c711d4a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "9ca38b248903efc4233428e6b704a0c8c51454ad0abc2b07dbff5cb94415665a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "2b1c0bc4d6b06790e0fe563753dd235b493cd9637e17e8d02beec4379174dc57", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "2267cfe5ff7ea14e9e0dbbd4e214230a3165bbce75a45bc4a681b356b85dadaf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "e5010103e746aa8417f13dc2df2e4308376b7941c96507ba8e80f1c068e11de6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ad5b41276667539f5f75ca3125e218bdd8e61e79117507772ee9b32dd0dd087c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1d5bd36de71d56f7b431fb9a5edfa1bc81959d11210a4a899eb0930c21f70103", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "190871860b83eb05094d1b8d2556b1a268dbb48d7a91907a2472a3564a648cbf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "5e3a4084da8b491d3788a8d5c2c1692a746eeae318a9a8bf4406aafc95657aa9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "72b274f8dc2ab9d1718072b97f7b09586f9bfac7f7cccec7540f66eb7acae454", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "90e1349a236a7a8d18984fb4fb27ffb838982376918132a246f9c6cbcfd32e43", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "f92431b5634cb6ccc601b204eeb0a2c56aad0091a8307261b3f31f95fd978f93", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b571790f7da97e3c4337ac3d1da4a70193b5011ce8bfeea72b4d5415343100ea", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f5d3694e608e36b0ffd06193c94f5ef27ce46423444c1d5d3e60d0678f6f0f65", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "6c6705978e50f22df4432644e622f8e58a7454967440e2ea3087d4d14e806f3e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "02219b98c18d856c9be4505422d826bbd726d47ba0d9f0c199ba084e630c7089", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "746d386a357386fd832d3688876f2efc0a80dee119f29d59e3f57a44dc9732bb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "2a2306878034f692d7b78aab905e84481208fd33acf26831f8a169e3d77f3867", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3b4700cd71443791cf7cfc3c7338cbe2fe72b3cff6db1e98712c6246e90b1143", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "5b8f0a4e77216c32ced7ee935132e3b6df7b7e347ea23373c11169159dd2eb0a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1569267c90b9b71edaf4687138f2442606a8008e2c59878ed64820ddc2e9a45e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6fd84a5651692a3dbdc0cff90f53f1f771f7265efa924d5bea9d2d39b3c957f1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0852a8703bb2eba6a468012cf7abfc8943e2dbc197bba4591bc36bde4a0ad8b4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "1ae796ee709fc2eb3a9a4b72441107091a150bfd757fcab1d7042033a311b507", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5f0cdea180a505d5639f318c73e68cf4f24579ca4628609cb1baf12488b297c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5f0cdea180a505d5639f318c73e68cf4f24579ca4628609cb1baf12488b297c5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "2fc6899b4ad76fdb593f9310846ccf2d31baf5fa78a58b7a0c6ffde5816f232a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "7feac003504735bc95541b3a9aafde7d1c7e4c904a2a5b1ed8873289adb6ee3c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "7feac003504735bc95541b3a9aafde7d1c7e4c904a2a5b1ed8873289adb6ee3c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "25ffdc73d1d58700da7ff6402f5546ec6dda81c2c0567ddb7b6ac75ba9a2a2f5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "44e68385588b6d65f705c1728e56a38ffeca3e00ca5efabcdba75a7444163628", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e9b5dd4df9a6e1bf4f794c850d6b0a94d2416053d0c51b146e428bc18e7ece2d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "7dbf7fc5e1ba05152b475a8007945bec4c985615da35efdb54235b67e2ac0f0a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "e5347cae82e73a582775d04ab3405b4c81ae3cb24f9f47fe30e7c30eb56aefd6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "525216e85e08ce1528aaf98254aa85924f9c0f25b2ab437bcb912ce5c68e880b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "930da956a75f5877a58b30a64081fa74f148c4446822093a9ede40d2c5e98fc7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "a0f7a2d318df4d00d9f3d0759d6ac1fa7f6933a5732363bfde45e614712afe3c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "4605b387a1a3261ba21d7f1a88bea8bd8a786d0b10ff9c19e83acee08864b010", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "bc8cc136dbfdee105d5c6c816b1c84c976f881221cfcd277d7178aaa1d6f2ec5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6860dd2bf19c1b1479adab501d445e0bd7283f86128a43efd4981b363da2fe11", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8b7309a6157458e49fa5334cf825ae17502887ae5bd15cee479e5be4dd6c0ad7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "cea457dc5c17f76b5938c2953d1520defad250e039b9a90c8344a443207c74e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "cea457dc5c17f76b5938c2953d1520defad250e039b9a90c8344a443207c74e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c58c4b0348e9b18e5844d7d4445aba077290c7afc38bc7d336ee827fd76737a8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e8fdf70977db2b2e1a0cd35126970373461738b2fe54cd791575315102f95c2b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "b43943241c4c39ac9d5a02b718c77d50c1d12e9f591d7bde6a94733a9f03a2a7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "14e1ab0d9bcb3ed3580590e929aa0e48e3318816b7d1482062bfa10d220cf9d9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "805328a7bcd3999a38f7914c2f178f88dccf22398e0e58353e85d4851aa45f33", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2a19353738a04685022f320a09f94d6f85a7397369a530cd048ae7a7bb86afcb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "caf16bdd41c07bb42087f2a86fe2c92ed32dfa261c2917b31e4880b56bfa0e3e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "24ab057e11c0b49a2f01c72cafd14853309ccbc7ec9e4277e4cf878ffc21c54a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "24ab057e11c0b49a2f01c72cafd14853309ccbc7ec9e4277e4cf878ffc21c54a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "24ab057e11c0b49a2f01c72cafd14853309ccbc7ec9e4277e4cf878ffc21c54a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "24ab057e11c0b49a2f01c72cafd14853309ccbc7ec9e4277e4cf878ffc21c54a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "24ab057e11c0b49a2f01c72cafd14853309ccbc7ec9e4277e4cf878ffc21c54a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "24ab057e11c0b49a2f01c72cafd14853309ccbc7ec9e4277e4cf878ffc21c54a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "caf16bdd41c07bb42087f2a86fe2c92ed32dfa261c2917b31e4880b56bfa0e3e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "caf16bdd41c07bb42087f2a86fe2c92ed32dfa261c2917b31e4880b56bfa0e3e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "caf16bdd41c07bb42087f2a86fe2c92ed32dfa261c2917b31e4880b56bfa0e3e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "14e1ab0d9bcb3ed3580590e929aa0e48e3318816b7d1482062bfa10d220cf9d9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d811d691be95cd86241aaf19d12c39bd34742da5c990cb587d328a60109ab6e3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a5701636e0aa9e02d5814bb1438560231616d3723777cf133597ca9ca740eac9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "a1c6decfa6eb46f78c5a75e63109c8cead8d74a50e06ccd1262ab56f6b2bb8e2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "f27bf35b30c3dc34cd8b27557e63addba1708bfaf816261c44f997ccb4ddfc48", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "4da6eb8615c0b8d92270da3f1b70c87741de42276318c926cda58d72776fd97f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "3cb55811ba771bfaa7c961b9ce9570e1780c6edf9dd2b1326203f1a5e8321190", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "2d7127575d96f48cdbf54c34fb7be977b43ca903dffefb1c8d3d8527578f4f0a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "a1fa50ddbf541885f8df67393541269e28a6006bb68536b29d8a982927fc3e8a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "25f09e1d9e56b93e870353b154832500ff6fd8dcc7a4c1bc0ecc1d335f2bf745", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "18abe00a43306c3526625c67b188f2e133cd0ca7969d2f52643c6e0dfbc1b687", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "e21ce120f5fdf3bf144e093f3a4673a82413f01c2a210efc13c812bf036330bb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "cea457dc5c17f76b5938c2953d1520defad250e039b9a90c8344a443207c74e8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4f8e8595b5fafa197361abc98ccfbb4fc71be821bd1897c53ea40afe85726753", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "754f6d1b366b537d965e3f92db0f071f77b427d0e552cca2a3b2d33b07b3968a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "ca651865bf56c73890dafef1cfe9bae6cf18055e1b51782f40310165af0a35d2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "d1013d767263ae688853a5b8c9ddae6d94050bd2da7ad04c49e1404fa741e33f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "24ab057e11c0b49a2f01c72cafd14853309ccbc7ec9e4277e4cf878ffc21c54a", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "b816fa053a42eaffc057ec132a2867423b2aad471821b42f70aeb460e92a5304", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", +"T3T1_fr_ethereum-test_definitions.py::test_builtin": "7a402f9f64147a7cff27cd9b7f242598b8087c41c18c36c981525ce1d0f48943", +"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "f616cc25eb131fad619326aeadbb2bc20a340aefceae78a101388614839079d5", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "77ebfe7c9cb119175c8ad3f4a4374c1d1ec1afbec8468ccbb24f54f15dbaa6d2", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "04168a06be0d65680b7b4a2772e2d439535b69192152f1ba4d623dc234d2373c", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "28f99ccf9ff8053371856ea89882ca20de3d53cf350861c4eb9b5254bcd42328", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "29b058c62e59a808178e644ee6e2aafdf00951dd18eef29d950960d92c99db4a", +"T3T1_fr_ethereum-test_definitions.py::test_external_token": "5a1bc8da58b96f068c78bf15f5caf16088f97d60483094c3f0f7ac8cd2fd6ba9", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "b7de51cf08d6693258c6c96c0c5027d2a137cc21bc909ac1494793d7b68ff647", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "b39add119a7fe2b3f8a551d942fb49b307c12b8c3c4e266358a91775a0b2129e", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "f281a4acedaf1fc8668051d4ad8980b6f7ff77aff66d0fc9dbdf7dd913ab8444", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b6ff723e751f85d215fcd8c6f8304e5dd9ccd89112aa9caa3e7601e122eb9510", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "49b2754193d331c3d2bac703c0616d3f775753d5c7f86e61cb43652097f9f62e", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_bad_type": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_outdated": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_short_message": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "7d692280a39772db123819260c3a793469ed7668a01198cfe8ace95ee8289e9b", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "7132b8af5b937bbaa1a86fbc66d0ecd39ec91294821ef50f54fa4b843a32c706", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "9eb575101bd461ce2af37ed04bbc7ebc56563a2dce986299932209a9291de619", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "b84739865ca17bb3ef472461af0b8b1f18af067c3b9ae1475740e20c9369f6a4", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "b9f93b4487a50cc2c9da32b37c5441f0e6cb140865fcf1e388ece004f64ae733", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "1ab74fa6395c24bc6231221652cec1862861b9ef28ae0022c7702e8ff4b88b7a", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "bd0a407aa855e3dc01d0b025181ba627ed6d5ea8dc1331139177459da4a00f44", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "9c52d2ed31045c53c5fc01cd7108e2204950a310b34153841b1ddf38686154df", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "e108bd8dd737130fbef5e7c6bf9861c130758c7256cb97af89a92e0435d7054d", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "684c8d00d82206266e4125baea6eac6d6ca554ed982a3ccb556d39176841aebb", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "2259885c39d1c2db4e1fe43ed11326cbaa14eb85e2b9e0b26bb7f54bdb8edb31", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "99c9381a3fa741ba2980eddc42390454f67500e10d3ca6f3e4c4dee90ba55600", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "f9d162bdfff8eed2218ea1aa59f67c857017f58496ab965648b39331310174ad", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "8c81eeee81618d9aa8bac4b7fde9bf26b981e07016208476951c32cbfa8a145d", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c9efff5e517990b641bf349b7029935268fd11368c6dea8197721ded90f9614c", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "32a83ee81df8569e880a8ece4823207e25e6796edf592dfe0684cbcdfee01712", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "229d62387dc3b001e4e53fec0f9b927f7b03451891c9b8d7a656eb65ea2d6b12", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "70430e8f51cebcbf64aaf07549b5baa365775f6d5c0d55b28724d681f16f79e3", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c9efff5e517990b641bf349b7029935268fd11368c6dea8197721ded90f9614c", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c9efff5e517990b641bf349b7029935268fd11368c6dea8197721ded90f9614c", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c9efff5e517990b641bf349b7029935268fd11368c6dea8197721ded90f9614c", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "34c0fa080e35b7237dc9406dba8b17480491d28e03c7af5876f151af66fecc5d", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "3b46c01ca010f53efef23984e047062b07d0ba55b7ec0d33b58221f7206944ae", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "a6b2d07c3039f3ac34e3e07d5692de043967156baddbb6df56da297351035b6f", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "f57f45d1ccecb74d502163da7acee3d1e970f60b8bbe8ed9f914836b930c3728", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "6a37fe406ed08d6c23e65be8302d30f8252192933a1152f7b0cf6ff49cb53604", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "8f5c7cec5efea6b3b449da76c1e742aeb3c5215a487134dd50ff3cb63aea3a42", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "c4b82a326a4e4576d893cd56a4696ab6f5c98830599ee218c164ca94a4b801e5", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "16f45832864cf0d2a54ece701f293d4d9471ecb28d72cee4889664b78cbd1ecf", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "1b1de73cd68c831db47da55a18cdbcdf787721fedd53ab374b16e0c64de47ca0", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ce9cbaa9360def1b454ed468129a021ad65a80b2e34470f1d2ec3304112987bc", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "82cd7db7d46d8f319df7d332bf1fd02c6dc1ac5798109264c003ed641544300a", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "19732dd3fd350f196cabc66c2105378d45050b2540ac82fde03aa1ae5ce81500", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "c712751099c72122bb672e23fc813509ab6ce61f9d5bb1e3b250c3fcaee140fd", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2bd8a4682fdc9cd1764d76fe9947ef25b7826130fc7b8ac2c5b6b542ff84aab1", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "16ff5f3e1780492bfaa5009d73f4a28dc14337576ed4e70d112ee2ba9d2fc5f0", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "77003ef644e29eb8d36c7142de6ebdbe65684c05dd682d7cb30f26ed7a64ed01", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "11e0b39d7535fbb41c0006272b9f34f950d8c7a141e2bdb31d7a3c5d653ecadb", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "5185fdd2d6de2159ba4ae5887808cbad13a3c022ccccab8b35016aee672dff58", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "82cd7db7d46d8f319df7d332bf1fd02c6dc1ac5798109264c003ed641544300a", +"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "4a32f4404a255cfa055d10c60a638cb7f8b336df1fb998dd36d5e84794290038", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "f139b00c372dc8925af53e4f3ff4c578a0f02d5f8ed1ce2dcbc3eeb59a676fd3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "16406c15f17f035607266fb96c0ab40e02a88c82b8e370f1b45ba3ca25b82263", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "2527bafe3ccddf322d2f206f8ae835fe7a2fc08a95258e580cbce076385da3ac", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "16406c15f17f035607266fb96c0ab40e02a88c82b8e370f1b45ba3ca25b82263", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "39fbc2396f88a6e946da3e3b2c4ea149a526d640de9edb38e0907417ba8d3453", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "39fbc2396f88a6e946da3e3b2c4ea149a526d640de9edb38e0907417ba8d3453", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "a13518fafc9911f11620e13626449e63190a7d2d309d352f47ae4777e17e1691", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "629f2d3d1f414fd31ce4b2489f07645729314d70920ec0e0ace588ad90fd310d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1dc47e6b3962a8e91897fdfd25e0287f191ee7fb85e31f8e99fabc5a2f3012d8", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "aad38bea46a3ef894ea39461f510867532342e2dd0e7a2ecc6d7edd1525e241a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "592362a5429d13daa3b323bec541fd6ad46ac767122261aa95be5136303605a2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "42701b5c2b6949607eb93e9a71888756ec5b0b6958183d5751eaae80a41dd4a4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "0565b7b023a86373e7222ace325758d228b673b01bf41c0dcdd64df35f25a942", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "505ffada94b49514d1a48fe5e00dfac0b05a0e79a3bda865d73e2367394c2da2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "63105a336e4bbc2be9e4603808da0067d52893e5cdbc521ba4d1bf893e90f015", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "505ffada94b49514d1a48fe5e00dfac0b05a0e79a3bda865d73e2367394c2da2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "9624cf5eee5cbcc8fee67dfea23a1dd6d01cfd6055b3756a380d9d3383f256da", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "9624cf5eee5cbcc8fee67dfea23a1dd6d01cfd6055b3756a380d9d3383f256da", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "dcee564a2c7c07e681afcb1703ef0a95607b9dac60d3c6494432993d05424dd6", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "8c6e064a2494fa73659bf57ae0c653465a01c7a6c2d52c870f79b81b6d0b2ff2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7c85fea4217087a2d5fe209c988c5b0d3476547688eeac7ef0ce3c742c3e8682", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "aad38bea46a3ef894ea39461f510867532342e2dd0e7a2ecc6d7edd1525e241a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1a1c681cb798a5350dfabb2358f2539d9c0413d4846234f34b1a34ff26045d17", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "1a9a2cdb163d1a60f00644c8a8fda75e61d09995d3299b86e9637c50d80f8255", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d846017b38a50af96e41a90eded9796e4876cc9834da8c118c3995c5a9b22ea9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "a13518fafc9911f11620e13626449e63190a7d2d309d352f47ae4777e17e1691", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "0003227f239c1862506e91aa6a5ec818522a12791a8916607175aa6c5a1b5d3c", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1dc47e6b3962a8e91897fdfd25e0287f191ee7fb85e31f8e99fabc5a2f3012d8", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "2dd31c7de2e00f515ff9aed6d8fdd1fc3c5afc71710f3741e172e2855209ec03", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e18942f84b7c02b06360f66d4d4db82f4a1294d63ee38e50687e6eb87126f32d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "1a1c681cb798a5350dfabb2358f2539d9c0413d4846234f34b1a34ff26045d17", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "dcee564a2c7c07e681afcb1703ef0a95607b9dac60d3c6494432993d05424dd6", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "081c428bc2c5936f907eabf4b7d2557cbbf4ed32fc538441975354703af83ae9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "7c85fea4217087a2d5fe209c988c5b0d3476547688eeac7ef0ce3c742c3e8682", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "70dec2ba507f4881070308ba9b1d3c3d0c135dc22239e3acb194a6465b7f0af0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "ddddaef5156ea65f897313a71fd5773578f7cc16bd885c69189b61e45b4e067b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "1a1c681cb798a5350dfabb2358f2539d9c0413d4846234f34b1a34ff26045d17", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "8231d3e53653597dd3c325233ff702b7fae8dc50fac08a5be41b75bc82247d22", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "8231d3e53653597dd3c325233ff702b7fae8dc50fac08a5be41b75bc82247d22", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "6e0d98d8af31a36a596e9bc7ba20f1c7074dc4eeabb259012c5426e6dccc959d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "546f0e8007aa77a2af521ac00663f1277484f6509f246b761649223f08f71595", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "67bba4c7b941a7bba39422bb79bee3000ff52a14fdd8ad79338a201f7e44f955", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "67bba4c7b941a7bba39422bb79bee3000ff52a14fdd8ad79338a201f7e44f955", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "958b83692ce78ab79690d310cfb0e26b34de15182c82cca99a78b6d2cd879e34", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "958b83692ce78ab79690d310cfb0e26b34de15182c82cca99a78b6d2cd879e34", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", +"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "6b7457c89ccbc9febd3053cbeab21aacc9880ceccc428e8daca2ded3e56fd626", +"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "6b7457c89ccbc9febd3053cbeab21aacc9880ceccc428e8daca2ded3e56fd626", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "ecff6eaf1277137b16f8a227817a9af2570a1c46da6b824c64c477b710b3e00c", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "6e8c1a4fd84f5db0f80dc9de4e35e5d1843d911f8d33a838b5fc91150ca78be4", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "9836b0ba86b9e7d58ccb11811aba96618ab9ade63f6e4e83e801e89eff4f184f", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "145234fb9efb21e4840db363e261a9ee9343352cc9317617061f29cd375ad43b", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "053800d2a876d6766cd1d8b0a5600a0f66e28577a546c59fe404ef9de4125881", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "81287a253e0765dd014abda2a57de5b20a2425895f376e84099d86349f439ba9", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "3b1d17044a41289c209543987ce1201eb3fcb08d82ac6a2f3213dbef4919b040", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "10b9ab92d1e8ef2e831ab20a63e3f74d0574f8b8f144b498b6eef58a720b1b8e", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "a30a7232aaf89fa73a916b0a5abc1537a87ce8a0be93e352b3afe7b926964513", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "9e2b02e39439aab046f225c2734ef661b679856fb86fbd13872ce5ccbe58096d", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "98dd05d472320da4aaf57f00c9de193668651e4b3e44728ae237f739ee98f2d1", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "a31df5bdf943d0e44f9c5937e37dfb05ba24a9c46b9d18bba93e4d32512c2c8c", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b8d64aa72fad35082b6b2b3391ebd6470bc83af0115775e6bc660073188b534f", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "2b0a2e12c23e425c0c777a188424f3011478a85010613696eb544a2e4a194f75", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "f5cb35f904c7529192420410c7bd72e847558828779379267d5634f552d5e642", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "b6d5de09c2ccfed35f49055768acd28a617cb7afb31719d6d44bec9c7029df00", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "728181b5efe8ee243d8a97aa2738faa708b71952a88c3b78878268f7aadfbbae", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "8668b51f0d0319cb641c22b1abe66efc7c444fa781201498ec1ebe5b94254c0d", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "6f1af5bcdb69b1785e2869383b5b8c00c927e34f9db99cf7eaae81dc89d7412a", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "cf8eed70a16404ee6cd0cebbb5415fd0a13ad47bf1ea0a31b75b27b6e4e92b44", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ecc8fb21a4be46de8ad9213d967f9d1b7dfdb66389b6b6397dd47293b09afe67", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "37fe3033e891ce4549a8765bbd3f30fbfbdcf3da4cbf783adebf60e5bd97424d", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "0604dde865a64007bf1cdddc3e0810d0cfb19b46489b1506fbc097293cd7e64e", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "85b4c7a962de0b356c940570165ad62d126c703a21d299356a09addfa1ba125d", +"T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0a0d39084bbcb9c014340f3bbae0d2f3b56607d2c71df23fb4cfa8404479d186", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9dc0347729cb690c1937c0fa5987fc02c319885044990c81e803475fc624d875", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c072f3b9ff064560c81fa90f95d7b8052ed24998512cc831f624925b54d2c425", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "cfd96567bb435bc0312c728db723d70720d0ac040c01da3ed7213f4f584fd44f", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "b595e1eccf12e5900275682dbd16b2d4c81b0331ee9d95f8f34685cf0bef1470", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "77544c67441c0ccb179eaf85aef108f00af773ed285f570d26b96722a82722bf", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0706b1a2c77ae9e9e466e2d4fc0097d84f61218b327055f2810d0cbcb72ff52c", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "6516c6315b3b3c4b5339076e1aa9e77bb543e876a6c1c9966928ef6325730760", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "97020c2155cd49685072c2431ad624ff14c4ae55b2025eae268a77f088f2f482", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "7cebfaf20bf59de093569cc31a212f1d3b9c67daa836868362fc8dbd939677bb", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "de3a5ca424f3dbfb7555858aa9ee80a4c8fdf149c486bfb296766deb4a4edf27", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5d0a47063d8792501c593176a36f484d6ad2bd55e7c4401df7e4cc50af1aec2a", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8c2cbbbef79ce8276aa81e185f2ea0401ade4b1022f726d72f182b0b2e617453", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "67c2ac7a2c93bc64d4852fe771ee8e466f69bd0744b0e90a0fcd82452a37de48", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7a804e6df4d5ad2e6bd2dd1404af0bfc36c5d23cf417e87dc247b277a7b9f749", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e9bf60ba2b6ef438291549cc4b1249f646ed597ce9d0e30d59118ca3522a7625", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0706b1a2c77ae9e9e466e2d4fc0097d84f61218b327055f2810d0cbcb72ff52c", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "449220f7f7b468ca9246411888f8ea8cf597efa1964b3448ce90c2f2aa585cfd", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "877cad76bab1a8fa1e3ec23fba75d134f6a59e0c0fe7033175eb33560cd4aefd", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3b126b284b5f0cc50ede602f340d2a14d4acb53fb26db33d22c9c31b40583295", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "766bd50b875d9dc044d09b2f24e3bbda79917061dcfb7c2ba56597811d09975f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "988a29e5098c9785f4bf6ca5fb786e1276e5793d729b5d05b9f2d2832cb69d5c", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "48104bbe44afeb5bbe4dbdcea87442a672ddf30b58ad3f89dba079c8b46bf6fb", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4398bfc8641386c350ba8e40d353f288e7953e17196d427cbe02182e0c1836ca", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ff1a4163b65bd65e3864bcc54a077562dd069c82f7ab380455238daed6f21d03", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0885cede81534f157159f1a52d5f36c11e8529aef2cfc8c0012b212b9ca648af", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3ff4200ec7597124cf682754ec770d9e108c44b92aee70c335861daf4eed45e0", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1cd854296495a470408be4132ab4c1ea3f859bd3ae04c44b7940017ad4129370", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "cd39245b8474ac2b57cbfaab8f0f351ce4aa6a9786a3a0e1f3735ec4d0bed77f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2cc9df0942337caf30ed441830c2bffd9f79c8c5704a1d2b2c0c2d8acb2e1d53", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "77f78efaced6c65a1c94ed1fcc50b75a12e5d7a25d4979fc4892017b510f5991", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "af92811d11595e6fae1ee2e40a356a26e2c3a4682526d301c0fda17771531852", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9ba071cf5dd01d79b3218da00c54c980a69d366fd45c48498cdbf1dff8db99d9", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "03d2b6f021517a62ad1dd810f0521da7302b27c8d029a0d5783c5e7675da8cd8", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a88a7dabc05629361f27d2939b5d566e20c232e94754aaf680ea9c56901ee608", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "5ad2e4ca30986da3a3748f7ea162545018170dcab746ae2f08dcd7c06ec92ea3", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5f292ff3460064b95ec192cd667341dfca7fa4cba2cf42947abd90ace687394d", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "49c969e1d74134be83f6f320794d5f2532dc3b211b80438eca1d5e0facf7a1b2", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "3adb483ee3b38608c6e83f0eecedb0d30e1dfc6c7f9b6620eaadbd3f811ecd18", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a7ce3d6a6da4340930f0fe70d241bd17065ea66ca33083ee595c0b6c5bcd6a24", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e83b498089bb049fa2598aa40ee5aff762125c07c47e9c7147ef92ea2faedcd1", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "53d51c34207a624d4cc8d0cff5f6ae82a5f85449e2e0e70e96d59040c6f0202f", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2e6bc241484cd1a5a05a60bd773b5840bb5959cd36644bafbdc07303e3419733", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c7552e66adc94dbbbcdd9f548511572a698047128e5a36c90b53edcf87a72f2e", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4f16a1f314e96224c7fa0b5ecc9665393b2ad0a148dbf406357fce38860c006d", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b14912e0ec3c8d9898001abc593bb62ea10324a3c02d3a2bc24d2744b56b58f3", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f3152c53c65d5dccc3106b30b36426f3bd78d26f8456583da1d1e58ef5e9b9dd", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "202e5e73de82f528da179679b2bb7c80aa8333e417e0b0eda44ad2e74a0c3dc8", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "3daa711a54b41d9584fb509d13f5f497d70b978c9b544a790a979ce23c4d7fbc", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9f3033804af14d08d8c6dc67e83eac4d06990a7ecb355445fd19baa98f974ab0", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5cf57b199c4102d4f336c7f1df9d2fde86e728bce5ddb0ebd1e45e5b37d02ecf", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "756fa3d79c580eb4ff9bb5b64263aaf98d7bdaf1110986dcf2c8d74e0e5f4117", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "73191401673c02de0a069983f0f0321960bedf47676e35d14f729adeae5a30e4", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "1f42a588fe0d827231a66b991ee76adff5ccadc28779ad8e1ba10d30f77ea396", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "79f8c3df20e11ea0aaedd3ba1da1a3bd4b4c150ec5847a45f443e3c766d9b7b4", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8770ca54ef8c9f34663e13e7e326a421bf95fa3d94b161f8386b98aabd329bf7", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "a3ff63bca6627c183e7204a75cd7d0b7971ec30ee56e37e4dbbff07cd904ea62", +"T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "8555a85ace28b9f1f4e58fe66a30f2e64c74e9e2d6d69fbd69b883a27bfed3aa", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "79f572e356e3fcc18369b1ffce1d07291e4b5ced0f174ef8e35ccc33fdf75c11", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "917a43e5321f55efd99b0ccefa60057afdb24c7ae594d23840c1e3146590add0", +"T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "952b53c11160149cb1733caafdb9097bf21dcbd83d5edf619611e6e38dc564ce", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "dd8f5213e04ca8d9fd520999db9eb4ddeab372d62b944fdf2ec7a8a2b98cbb46", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "490178e4eeba43e622ced4ebe8274498ee6b5437570abdf41c46f464c65b672c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "8d11514c76b064b4b4cb2b4cbbb43c5a5a0dcf4d32e58844b51ba9f4d09f1940", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "6892287097016eb1097fe7552797152c581b5f5157d42c8b89be0b4e11234a2e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "d2d487eb444c3ff5e95a576747b6c81a5c92c886f83b23b842a6b60a46e655ec", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "a6c484186e93fa9f17ae3101998b05542223cffe07c5f8a06e622cbab1622b67", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "644fc689e51f8624fc628c34fb0e3d9e9b5001931ad53f7e97cf3cd04410ed94", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b063cdfaa9ac6ec8a65ac6a647f7fc5359b539935188c259b962588720865730", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "c8429cdbdb3b2fbeb744aca0477f930a6160f2ecb7930f9a5489f1f3b6583044", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "af98a96a522f5c52b5171a8c7017e1d1f6452af6086d0f9adc6a2c7ec303b7a1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "66b5374be965a4d415c69fbe14ccbf546aebcadfad927ee7e69fd9a7dfc4a9d8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "228be4eaeece98d0f060d17014dbcc88054df819db1078fd58745601aa41c0f2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "228e4c0a7a8daffad3b2474526dd88eb77b5f6c37a9b650b77db6ce637f8dad8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "76669cc1754dd4e930cd6d5b8694949760817ed25925c7044a2f4c5d7773a11c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2bb4379a94509f22fceb303ce30e9a6b4e5c017928e58f4bea8fd1a56ed662cf", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "f392b2efe46ed33e3846385b4a6d26911adfaf554fc52d71102aa5b58f13f581", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "254c2f9a69154cf3112f2dae7ad587c9e54fbf0ae2e5f0f485214924b88db4c9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "fa846cad4ce3a22bbedf1eafecc4744f91537d3ac4526fb78059b7d8fae94930", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "fec612dbad564f7680599ec2818d09b93efff9aac8ba0c2ac311180467a4d17a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b310122f8a469ce01b38dea57262cfcbbad4f0528890387a07d360f0a6e9a129", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "dcec2e98b5c1ea405e30169ca206ef9e9cc899a85ec9f09f4b74f9d8dd0493f1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "dcec2e98b5c1ea405e30169ca206ef9e9cc899a85ec9f09f4b74f9d8dd0493f1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "62303ae63b925a065755f8f1baca230d5fe7335fd94754e3e1185ddd62fb598d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "6fa4d1073d5fdd0b44d00789ffed6bc50e5c3edf3b1668fddfa575fc649253cf", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "312ca83606acf63fea69c95130077ef2f7180c78d91199609d37c731603519b8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8267d8d301b686d5bb777884f6aabd18f5204194ea3279113a6655086b66965b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b92e326a41b43400fa42485ed2cad7ff37cd1fddec1c70cc2c78a57707279a3d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "aa95e341c57582d957beb1337446dbbee1fe366748a51aada6212913637e5401", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "5440f1926ba32428526ceecfd399ecdb707ee5dc4142a7f971de1d014bbdfea2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "545bf29d70e3455bd8491bb923564c7cf84296fabf61a4dbdd96e5b5fe2fd71e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "6e26a3f9d7b1390797d435ee3f51e2039832a3b474064bb834fc1bd70620af49", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "23d6ff8cc7af27c7df0f3150c44e1b404a2f74f1fecc26dac3d186031697e7ad", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "352bb901d54f4629d33a1e85f849f7011a63de01278f709ecb2c4661b99e20a6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "6032e9dcfc2a77f2dd79582ef2ff56df56ded492ccd85b1755507fed5c937a65", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "130f4768a60b01d7f4e011bf91940bdd99583ada660ed4f793e2a6c9c2baad76", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "6c7d64eb0269e34492035e1cd328505f6a5ec78d85a0ce5074e29f4adf14a440", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "a396f86a46de35e65276e1456e2ffc17914b286e3c17c743c1cbf0b7f4de38e5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "7e5fa2338b4fe31f23229c4abb816dd0c35011d8b1856d367dcd99baf920a6d4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "4aedae185b768a02ca2bb6fbe573958a76e23aa66382a36146cc05d6d92f0629", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "8956a6030604d02ac4f3eaac4cf5d573bc116388740f92a11a09f91fdea2cabe", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "4f1c2dde51b29923a94ef74771730b5c8a0718da5456849a0cc86e62e9bd10a1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "516ecb02a3c3374f6f1c3069805eb1f471571b953a51285281b4ef5c272fce51", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "40303d6330c3ec20b390ab8b3bb16fefa75d030f69e662bdcc7859f4b191a893", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "711e9535caa3cf57c0ac49b83a5f4beb65876a119d7641c8edb77a2caa79fdab", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "87e41f01c8e3cfb7fc036a17f38924084cb65f36d3bf7f3751e8d426c020df7e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ae11a301f4f4aa40ab03f1cb555958d31282741a78734509e1cc959022ec8ead", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "4c2299d95068ba0af13bc7513028aac5e1ba7b0d57172162552c72dce7e96775", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "4c360c0192a92989c4d99cb237d93476d1c7a18f8a1922a8b860f2e86ffc886c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f779d0b0b9a336478e651cb7b74bd4cb62b50ef6cd1561ad0c252b7e0107766a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "d04de09078617f233a7e17716d87088c1ddd33f0545f9f8955cfda73248e9123", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "f39f872b6a1383b22d8f059970f39e2d5272e09cdf4506bbe1ff58c6fba4700a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "7b23ae60b2e8b2d208c25f3ea9d151ab463fb1171a8059f67016a6d2763287c1", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "c4f4dacf91f76def722ed1d21aa63fb77afabd9f54f26ce1a9574f4fad38c7d3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "3bae8fb1825fbacb4409e4b7ff237d39aaa83be21b3681e1832a67bdfeb1d07f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "ba16dab3d73a8a7d18b1305d1f3d470e4a07f08b81da63c4bb0af833a125479c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "6732f4a02577df715b0f731680de8b08955f96454b39501c988b0e0b64010a33", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "b5bdec8bf12e39f94fcc38811534f301c476bb908c4be96f5d4bc22020f52a38", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "ee13b0733ef38da7f3052889e1ba183cd479d75b31f46324c04e7979b75d0295", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "8a95bdb8762d78e398538d006e7926b4ca3868834169af91003952bf69619e75", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "312ca83606acf63fea69c95130077ef2f7180c78d91199609d37c731603519b8", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b440d63af7da9d501bb71593498e52fba4d0cf4c22773934332a9fc350f34e29", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "34dd25d073f14ce42dbb946562e304e1fcfcb73415c819320647a3a0798ddf3b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "25abe49109859f88d3b419a61184a060218afc240f15d20a05b25c3b24b8e5c6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "98d9b823b6c534666b2cf2fed2af4b61f11ec0d3ee42a05032a9797206a915ef", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "1a3c6936d604d7096adaf893187387416cac96aefa21427a080bf14906cbe880", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "df18166f892f1adb091fc74d9dac5818deb75953420e643d62b500a065694782", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "e370b70838acbfba7465fbe8c5cc1ced69b279ae0262cab272a32a3f6e4df077", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c2e88f92ecd08307be05684e0aba0def0fe6e63121048c0c12a2d5999cb470a6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "fce0c2e286b1801208f07ea8cf5b985c417690a546d7fb3a528058a25370288e", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "6532c640f13d15df133218ef7580c67d19c27fe083bfa4bff383b0d011b5fa36", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b5b3f074e9880bc516d8d36ab0e7d6439eb96bc4169c3b07a3a6d9b5a98e2da9", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "48553c5ecdcbd89382aecae295887df32e1349d60308fd44da6790c94b888386", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "115ddb6dac8eb1d5d2163fd53a54a650b3636e5bd9cb67462bbf3a4546c10c11", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "90b0fda9c8133d6addb12665c8734390b9248e8c0e744075421df6d2e87a6b87", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "86bd7a0f57023058ec6785edd1fe8aaeb3c962cb3c2efbf85bee9d8e067f82ef", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "d3147fa9fad7db8d49d49da673d1e5619b81cdc096558f1a1380124f84d2be78", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "b6429d040f99e9c3432ab9cd2cf82016245f620abe8456971262525fed3f6bfe", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "54efdd2a12510752f99b16e62d7b4b06b2070b3ab8b3e44b268c8efdf136957a", +"T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "aa67179e047b45578be8eedbea592174a41b97726f776f801b32af1834621ea5", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "82ca7d75ff52ee2bbda10161c9efb05aa773a452c63547f0a00413938e470a89", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "26320344c2f9590a0f2cd293aa7e1efe7342bfea50bfa98083562610edea5184", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "2e9aaae1b01d259c92243a8a7bbf35d35a9c427440f9232060e889b863a9eafa", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "dac4ab1b107be7f6aeb71700c67353b2e2ac3887899cf551c30e6d4dc0624326", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "d9a4cc8496d2c4eb5710dea36c88e4bf2ba99a834caeb569c79a29bd7e5f5d2c", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "1fa2682031eff56af5abcb95d634868551b2e611ccb499bf42fce6766420932a", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "fd4ac97a1463a5465a8e27b297d117f0ca3f36c959b7db231e4e1ff00bfd738c", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "d0a162592241e9901e06b34410797218bb505ec40499c87349e40ba034dd6af0", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "15c4ea872516da41849937c063f962e0c86349fed30dca5274d2271578ebdafc", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e59780f4f024580c7ee0a83fc0a410271fa5f66ce7aa060323828925cada5fa3", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "045523bbcf15ba0bb9f79eeb9e37a197e647eea9e953a68f8477cf249c2c4030", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "4d671d01bd4a3420445207d9b6b7246056e46f35fc68dbbc22a929f2c7fca409", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "28ac25cdea58342e3677fd5d376e3ef5cf7030e56b9ab3c1466b9ef21e511e55", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "4b581a01a0131cb08ccb018f15f32bc405eeb23066309d88127ecd8357f073a7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "1cb38c322e394d4d7bb8d989c70ebe0c8a1116ee2692426d147579f1892a6900", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a84d75175485488099597567a6801f797b41a001285b104ddba32be4e4a60ca5", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "f8fd23bc26862c4b3f333065189ca306d3eb71ded492fac0e94261d4dc38bcf9", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "c1bac1433071bead9031a9e315ae7ba2aa80cd10e4fae13422ba15bdb33a95e6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "2d02ff5b025d03353459cd5182669b7d5d5fb61a8bb1a833769247b16f11f03c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1e9a0927d784b6ae86aa22f597c28feac9553af9b4a6ea3cdd3e3bd0c610fe93", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "fd4914f921bb5235282896b2f04b4c8a7886e5c4fd02f469986608706dee4204", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "03476db5d0993393d24edb0c2eeced116df0c070bc77ac14f97d7954d9a90eb2", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "8cd54ab812b1732af1f30b4b18ed49176ebef31743b54744cabf5d00a033de80", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "59768dc27bbf00bcee38c048a0922b057985f88be92924e9451b6830c278ee6d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "b519a9b1c1c1c06b1495d8be974a949f48a22dc513fdcee03fd95a3a3c414e3b", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "fe97fe42372d5821fd7f9cbae1f5e153d88a53291f8e5088628e12badd341047", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "0ed58a40aa061ec895a923c5cc3c98fc9d9230818038ebee3cf9ba4b21f045d0", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "4af6ead2142086e5403f5031abcaad8f54777b1ba11dfe224ddff5305b9f3b16", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "124f0ceead20b4b468955e4fc12c0d2ed903e00c44d8256e90cbcd28fba4c307", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d35a372b38f4f64049dddd70727b0be7b1814c0ab427a116abbb61ac3ef75932", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "0b70d99affa07dfd75119e8d3f32bffc22fab3a01cd3a4b6917caa0b8b37966d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "cf0c3c9477d4191afd16a235b25f4c601f983bb44d2e7960340181d924664d8b", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "802c316b542f5db8476a95341ba323608f42cb32694ef308c83a5e27c7377e82", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "46a27725032b3ef43cfbb369c87bd6e402a428ae672608fbb68ec3f12a285ac4", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "516a5542b4732e46a2407b1687b7d28f37eb9cf65999c5ea4e28afe1cdebaaf1", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "1d1e842f0ecd42a4383c1ac343d998c26305e306d33798151ad8a093847bf1c5", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "e28a7cec5f36acd88a86446174b52688e8015a19f80562457414f9cb58e86f0d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "08f1c8a4a7eb609f91066d46aacccf289b04986030dd92fe7e749a3e743d657e", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "c90a598b899bb8b4185c1dcca9a4b292b8c3e308aafb2eecce39aa1ff2f56658", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "0ed58a40aa061ec895a923c5cc3c98fc9d9230818038ebee3cf9ba4b21f045d0", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8469e1292faff89db8a0a10f923c5ab94f5594fb30fd8fd8e5e615b7b2864c99", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "7cdfb0607eca40cbc6ea696491ea4afd8f244a6eac57abb7acbdb2ba8c7bd38c", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "9ef9700298160132dded9903f211b1aa39e283e1f840181d154c934316747f2f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "edabaa8c9593f65bb3f2830462e5a52394d18bf031cb4604ac943a03f0b2914a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "7244b8a823bb6573b89645b000e2338883e2c133a31fa97aff021b951447f84d", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "955b20840afad081c2de468dc9aad13f257116faca8f92b0d02f1afc6363ccb5", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ba35508c8dbdd1ebc1870c432b61036e2fbf0a7b1ec63d1a0f8162b75f6acf35", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "05242322072ddd62fa0898d7092682d316a267061aaf8eb4f32cb2bf4b89a6a5", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "33288d9dd5e46d2b32a88cdd79db31fde790c4ba59bc649dc9987e132549ee57", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "de5b483edbf657b3cce82300ced19201eb82c747c4a5e4844c140b639f63ee54", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "168993da0c7c177bab428703eb1ec3b0a024e53fdbbbe59a03d0d02579723ccf", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "168993da0c7c177bab428703eb1ec3b0a024e53fdbbbe59a03d0d02579723ccf", +"T3T1_fr_test_basic.py::test_capabilities": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_basic.py::test_device_id_different": "7a6e9d9acf20fbb898540539232f93c6a703df5f6ccf18533f59c29a8bed2b1a", +"T3T1_fr_test_basic.py::test_device_id_same": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_basic.py::test_features": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_basic.py::test_ping": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_busy_state.py::test_busy_expiry": "ada47de94f258bacb141bdbdead093883cf8c619ebf2d8bb93db3e551b15111c", +"T3T1_fr_test_busy_state.py::test_busy_state": "40a55afdcac5fe2309e8ed3890ac7037f9c41d59b8fa582bdb265610f31463d7", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", +"T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f201ffde0a95ccf50c2a3d176a81fe7057dc8a1a35665a9e227c451c2dde4de", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", +"T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "0f201ffde0a95ccf50c2a3d176a81fe7057dc8a1a35665a9e227c451c2dde4de", +"T3T1_fr_test_cancel.py::test_cancel_on_paginated": "05ae316c64e2ff20085d9f86c9182bdf0aacc5af0bf5ad748478bb955514c2b2", +"T3T1_fr_test_debuglink.py::test_softlock_instability": "f2fe0632c580385427c561c216664ef89e40a89fe7ccde86b5b7900db4a73467", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "c6e89f9a3ae02d0c6eabdb2bdc97deb75194ed8e6976fd0ac39d5910b897e00c", +"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_language.py::test_error_invalid_data_hash": "53b7a23dc43061161cefd9fdf6f528d82dd9ec825a947e9f1127e7941b1dfae3", +"T3T1_fr_test_language.py::test_error_invalid_data_length": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", +"T3T1_fr_test_language.py::test_error_invalid_header_magic": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", +"T3T1_fr_test_language.py::test_error_invalid_signature": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", +"T3T1_fr_test_language.py::test_error_too_long": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", +"T3T1_fr_test_language.py::test_error_version_mismatch": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", +"T3T1_fr_test_language.py::test_full_language_change[cs]": "090e5e699c2a893db977486683cdd66d3ebcfcfadae47c67055dc88d2233d546", +"T3T1_fr_test_language.py::test_full_language_change[de]": "d498d6baa4dc633356cf5506392b5981f71727a46cf13f0e7f5fca63ec440672", +"T3T1_fr_test_language.py::test_full_language_change[en]": "cf5fa6b095cc9afc478f871fbbc63e2a467557e52aec0be883ba7a010e297081", +"T3T1_fr_test_language.py::test_full_language_change[es]": "77de92938877af30cd5f0c699e19a2f8a879c0f734baae345f5af5d383d54083", +"T3T1_fr_test_language.py::test_full_language_change[fr]": "f65dcf17f4cfb333bd90132069367a27622b973860e2b4c7277559a3c235ac0b", +"T3T1_fr_test_language.py::test_header_trailing_data": "b9bb6e32eb8f17dfebb54d6db841d95458341550d7616dbc7d7affebb0c718e4", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "2d077ad5a63d27d251471ec046c3aff6b851159a69bd269d420ed1fac8104a6c", +"T3T1_fr_test_language.py::test_reject_update": "ff0e3d6fe760a82de7bdc23d9658a880b817acac12aeadc82445c3bda5893ad3", +"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "4206ca7ecef3bbe4296cafac77cb81266832d6dbc07e89aac4656b1a8bd86099", +"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "4206ca7ecef3bbe4296cafac77cb81266832d6dbc07e89aac4656b1a8bd86099", +"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "b4c54a77175ba58ce018b8d84b14fd7bdb0a867155edd78b6b5c3da7dbed4944", +"T3T1_fr_test_language.py::test_switch_from_english[None]": "69d9f3e66067b81fd64596b5476fcb7cebc8443aaa8ee1a57e0c4b16e6656370", +"T3T1_fr_test_language.py::test_switch_from_english[True]": "69d9f3e66067b81fd64596b5476fcb7cebc8443aaa8ee1a57e0c4b16e6656370", +"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "2924fc0c3564069dc503497e0c019c57ed93a78f5e2d051149870d889a561680", +"T3T1_fr_test_language.py::test_switch_language": "20efd0fa5bb3521fdb876cff0742eaf8aa0268223d4fbbf17a2afa7d0abf9bdc", +"T3T1_fr_test_language.py::test_translations_renders_on_screen": "89126c78192f2671e3c71eb58ff1e22f0bb5f7248989b59d441a51db559c61cf", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "49a4a9e5d950e204ceeb425749197f6a675a5e07ea83901e894fdbacbde8f9f5", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "19ff2764586ccbb85343e24419d287264b49c2db02281d860a026264964eeee1", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "1fccda9a449173e1ea4b04994566e67d9724a3c1598639f13e79aff112308bec", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "95dc8034980a6c20e1f84cfcd178ed12cc87134b4536d7e5bbe375c36a293750", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "cdfee664fdc173efeca2c4acbbd5b520a48f85156b4dd2832b555664d97f956c", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "0e1158fc4648d1cca7622ae0767a70520935df394d54b38fd23f56a477dde800", +"T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "60750aac6a7fd2e4a6e5ba36a697fbba71f5076b01d74b0dbc8f9270fe01da93", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "2828791f58c28f932a9aae56f117d749718f2c2de1e97f3bc7ea3572b7cf36bc", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1286c40270b484a1190030d4a0302c27cc8e07a93b2647519387f4b3d8605fcc", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3bb11518fe3252431bf6f7cb72fda32714c0527061fd356dca9a0275b9d645e4", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "9d04a6834c582bef07146e1c1fa2b7aa41be6ee70a3e42c9ad0050f0fae775c8", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c2ab2d501b0f03b9c9e1e3b0f48085b084021e93e8744a0071e7b4444a7d3c00", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8dbd7ca635311c6ef328eb7d05de185bc3f1a2ee137297a574f8632fe3572c69", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "cd76938717fc605be333fe6a7a535f8eaee3b882be39e318992bfe3029a114f2", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6fe3e56fd0a647d098f108978bf4a20da7d7dacc7688255c2c358f916d917c75", +"T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "5d51aa9c99a634b1698dc0f397730154010f6ec9849a68c2c0a02aa8ec15af95", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "45ab430c21ca8553948adcafd2d651a2f77479f2ca67e9192eb53da7495b1fc1", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "ed45faf2fe3155feefc402b14944a3201e2371df04c32a9ab10de14c17af8f8f", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "88c92cab9534bbe6a9a152851df37cb001579b1c7e381d3abde2e64b2efe2100", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "f938d408d5e1456574533c58104480772a11d9f6e985167bfc0aea53a321e2e0", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "471067e14e72e884ca471d0060122ae8760045bc4ce5b612ba88860073244c1d", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "f03bc6f6d6d940b8a9cee917931121d51eb8728ad23ad526fbe9496545ca97df", +"T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "ef0fca1345fb5bf320a37dd2fadff4b21ee4f8062b19061ca7110e0ef5ef7707", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "c15e2bcfaa54d6be2209e47c30798ccbea93fb9cd972f10850688d385093ff22", +"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "d40fbcef1f31e489d4bde3ddee195c011ac75d0fb3cb4853af947d573e1cb590", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "875b1562b6f38138db6003ec4c71a4f9d3874dd1e42c0646d4da945ef7e305cd", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "044736cf66c5f1ce5ae21eaa55da4d02b79f7f22ec3f46ca848feda086dcaeea", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "9097603eb152c3d4e8ecb72cdd4d9415d90f11dbba7aeb81febf365a70afe2cd", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "044736cf66c5f1ce5ae21eaa55da4d02b79f7f22ec3f46ca848feda086dcaeea", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "044736cf66c5f1ce5ae21eaa55da4d02b79f7f22ec3f46ca848feda086dcaeea", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "f8c0d67256d57546ce37ba64991676944795b8e7d7261a05eff34a41ae19ae48", +"T3T1_fr_test_msg_ping.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "102fd1775fdc38054e7d5cc0d742912e7c144f74b0978685b77d8d661b233bf0", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "44a9fb07470d866b214298c9a83e93a8ebae720ae91f3fa0b95bf4886ff368bb", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "b51bdfa587e3df2bb5c0fd2dbf3bfeb14dc5506b4c53fca1ed02e6bdff47e23a", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "dfd556afba7eef492da1478f6017434045536cd28f96fb4557b0ea9779759936", +"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "7a6e9d9acf20fbb898540539232f93c6a703df5f6ccf18533f59c29a8bed2b1a", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", +"T3T1_fr_test_pin.py::test_correct_pin": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "fcc39a557be478409a6d7047632fb50eea52c3fe99af0037452aeb994c4c336b", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "37897b25b2f8e92048d9d58544cabc7a3d8ef326f70c16b9349494f62d90b349", +"T3T1_fr_test_pin.py::test_no_protection": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "1a618379da1f4b65fd30ca972ec458e9b5fceabcafadf623f012df82ea37d557", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "42978061d4e00b59c87ff6a3e463e846d5d24190818d93bc17688e7e29251601", +"T3T1_fr_test_protection_levels.py::test_get_address": "9997d4b9c241d21eaf1f487b6934ecd14630137496ab904f2ab781d067fcae2d", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "5bdb4e8624925139371c53bd46f3fda28210de00f7381865522419c5c49295ca", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "9997d4b9c241d21eaf1f487b6934ecd14630137496ab904f2ab781d067fcae2d", +"T3T1_fr_test_protection_levels.py::test_initialize": "9b38628247ec248f7e184313f6bf722c527ebb17673a5f4cdb6b1419a12ebeea", +"T3T1_fr_test_protection_levels.py::test_passphrase_cached": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "cfbe54bc47c083273cd89f477e74e23133d952d08a16ec14b9018df0f42b451b", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "83cd6c25ff57a2b666feb1b12023b5381e1e3e33ee332ccd7e5c167375ce7a1e", +"T3T1_fr_test_protection_levels.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", +"T3T1_fr_test_protection_levels.py::test_sign_message": "97f7fc43f001a85d9cba04979a9c14ba8be856b5d99bf803b566c343f21c9d2a", +"T3T1_fr_test_protection_levels.py::test_signtx": "cd83532acbcfef45a9b49b099a045d51110cfde0308dc07e7d7ddd97ac262960", +"T3T1_fr_test_protection_levels.py::test_unlocked": "68ea05ff19d0e5d000a0188c46b0e40c9b62275802a28df92c3e3b3fe93f9101", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "e4a0708dc5828935d4054d03071e34800f01389bbe0a62a15e50ddaa83f04300", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "358567d791d7fad628ebaa39fcc0302a13ff72c8f9eb5626fff31d2a3e779182", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "faa54646bfb6ad19b83d6b61032c30560146f14ba6e783b6a43db1859b7a92d2", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "8722592d319bbe57e80d4380fa6dc1b861a0bd9547f0c9ca44e1c11a04fef0a9", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f084412f6c4cebb7cfe5d09325f85b51fbbdd6904a4f66718e7a07893afdc3c5", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a9bf264d5feab3ba79d4a32e0e29cc51552a7d59d7eb683c7c77f91781dfa454", +"T3T1_fr_test_sdcard.py::test_sd_format": "e0e4d53e6a3ef10fbd0121343a5b720bb99813cda164f97fcd0b195effc4680b", +"T3T1_fr_test_sdcard.py::test_sd_no_format": "2bfa5f75dcb773d287676b117528ae5be60834cc16c5b7f1927dc48e125a4208", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "01252541440c56124663835c28ac1d267d1b806eee39b8c2f5e17f8b04b8b1c5", +"T3T1_fr_test_session.py::test_cannot_resume_ended_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_session.py::test_clear_session": "633104fb671a273fa8166ce3f93c0f8091815c3b15b24aaeb4995d62098f7370", +"T3T1_fr_test_session.py::test_derive_cardano_empty_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_session.py::test_derive_cardano_running_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_session.py::test_end_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_session.py::test_end_session_only_current": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_session.py::test_session_recycling": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "cbaa5c31450c0951ed28605dbb3afb73b768c395860da44d648e5572d67414e4", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "995795cb54bf23179f5ae59cf059697261ce08d4a2d5598641df2bf2470b3707", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5845603b87774e931fc2e63564e958b750d91e270c4cc6fccd4d14895e239999", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "ae4efbae55935340c767e11d0bace79b16d48e20324d46c816f808ea37aa17cf", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "bf7ba27892502e5e7f7cf75d1cd537da7f8eaf5ec595b41734e9af991ac26f10", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "932857f746174d5a01348e8467a4c215c12b35517d035c9282be8366a915cef9", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "09b32da43b9c3ad50521cc90750c8de0731299a7a745aa168875849023b89e08", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "83e65a930718cc89d52171e14d998457fd880f64e4a7785f85deaf9856c572ce", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "d69fd4643f9f8456871dbdb07a641482f0ba5aa433de190aa4307c53d257e5b1", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ec2caffc016d8c0cc628a4039774779149406552f38baa3230ca674766e18469", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "73959134ab8f750768060a39c13a1fbd5995b9e69c4d63dcb910a4e23f704434", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "8ecc9f66c9b707e20233ac8fc04183737f7feccd0240b02d19c90673ccbfd3f9", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "17becf8c653ad36e4d5dc9f99a300f1f0f9724d67ab69b148dfbf2bc54c278cb", +"T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "cc492307d757bebbb550562b54de8ce373cd2547cadfe897f1886d3ea2e45a98", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "e3ab0d129679ba0c23e84a9f164436d6393efcd6740fce0be0b3619062c371fe", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "17e16783a6b880691499e2d6bf8eda530117f0c7d21851e3e31c0b79bfd6cfe1", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "d16369e546f08814d85735b38eed2b9b2c0094b64b8f22727a4b5e458c451f62", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "a88abf8a98f0c47ec46be81f203d6031bc380cd244a2a239a153f5c75f201eb0", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6bc5b0dc18c7bc3abeb40be7b7c4bf68e04cb5d9310311705023b631a1ce5db0", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "539c89223a28b1c965423163705e22d69b2064df1128d1528939465fd0297ed5", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "1cd23500d770a9ef559d035e45294c7df415e01485060e0f5ac700b42c1e18fb", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "1e8a5b9790158784e2b822d8de59a215e27bd1488dcb6095922b69186d67efa8", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "acb90472797e386909eed599fe25e603a1f35a0c12619478ea37964ba68644e2", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "1e506ed85d3551102deac89731d91cb82d586049f6575c4faee163844cffed81", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5c6a9ed85d45526c6d0af9776cceeaddf0f310fb2094e9a67e902db2c9bccf29", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e05975469765465d77085adce8e3adc259e5c8e653a2be6fcdaf428277805f22", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "01bdb5b8ceac205728755f3f9e555c30ab7a6caceb03c6156542f2955bf08ea8", +"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "86d5d149fe800a06673016df3c546da83e0e59226bf4d7f21082e21e1f99783f", +"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "9e9ca8d8e458a971cb4d1fec92265f1d0a49f4b075dafc5b226b9e978239027c", +"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "7a3c9d103761ac457813701961cba445494ab6af9cd28b2fa0bd98c3666fcf02", +"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "fd7a3f62e5180bb81b2685b887f6fdad95b550e24fe1687f52db26b59e857002", +"T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", +"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "3864b2ac53c8bc5e7f0afa46625469f3f0c50b6067acdf99891e53a27e9a0e25", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "52eca2b91848f3979df391ba464ae57a6e8be76180c0ad6557abe10653a455b2", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "2964e7585c96700a199bc768678179298c739166c46b8d2469b9b565f7e4c30c", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "598fa8bdb44537bc4d5fdcaa7aedcbca28698f5abbdc20e67cf3ec1bafcf7841", +"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "8b586e941f9e2a6e6d6d6583880d2c0ba49f20cb00ea4c5655e1b66de9a3c6d4", +"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "7c6844d9a988846017166c9a27011085ac047d43467fdd1c52ebb0381d1069f2", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "af33c79edd0533b40cc0b1db1624ba6f8371a148e7d7bdcbdf7097b7e32bf575", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "1be26bbb4b0f39b8b8a7dfb88795cc514ec81c818cbfceed1a5b58b0a4abd94f", -"T3T1_en_test_shamir_persistence.py::test_abort": "a1bb0393f40369d65478bd037fafdec4d64a37486cc432b68ffe7051c5f27df4", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "9429af33b789431a92a14419d498e4c01dc51bb1c5d134f833ea215abbb38768", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "397c86ad577d6958a19eb84c9d55f54b3cdf3ca15771d58168f2047cef8f59b2", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "93e6e35390827e127cb5321003ec813cc991cf411c5bee91058e84adcd41dfe8", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "17824575273fffb27f0013b5fea1f3f39b6eb10e33f3e765f5df72a10c94cdfd" +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "db5d0a9eb6a9ca95a0ca5bffeb8d2ff33517ee0b146c397e34a8154f30a3be11", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "03e0648852617fed8da5373856a37951e229ca3e0c91ec0e45ff8e890b79a70d", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "9ed0f49d5723fc697f51fdd2063f151ca4f79d60c55ae7fa7c04c0e1c82d46b1", +"T3T1_en_test_shamir_persistence.py::test_abort": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "409a325d0ee584aed327c057781cb9d2ecfd357d784631deea1976e306beb604", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "399206728a1281281031961486b6ec96203467363c7cb19704e3816111f1ff04", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "f38e83a9a58cfbcce678e590f511e91fc90b696b0f1a2a7ef66fcd4513f143c3", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "f28106e260fcb53535c1e14630c851b9309ce1c1069b1d4f28b74ed8173714ca" } } } From 60add32e3b32d5d8fd1d01754c5b7137157cbb4a Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 12 Jun 2024 17:12:08 +0200 Subject: [PATCH 332/626] fix(core): T2B1 - left align title when changing homescreen [no changelog] --- core/embed/rust/src/ui/model_tr/component/homescreen.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/rust/src/ui/model_tr/component/homescreen.rs b/core/embed/rust/src/ui/model_tr/component/homescreen.rs index a8a5048697..8f6ddb605c 100644 --- a/core/embed/rust/src/ui/model_tr/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_tr/component/homescreen.rs @@ -435,7 +435,7 @@ impl ConfirmHomescreen { pub fn new(title: TString<'static>, image: BinaryData<'static>) -> Self { let btn_layout = ButtonLayout::cancel_none_text(TR::buttons__change.into()); ConfirmHomescreen { - title: Child::new(Label::centered(title, theme::TEXT_BOLD_UPPER)), + title: Child::new(Label::left_aligned(title, theme::TEXT_BOLD_UPPER)), image, buttons: Child::new(ButtonController::new(btn_layout)), } From 95c2cb2008a298d4ac78977bb43b437d516a7abf Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 18 Jun 2024 10:39:45 +0200 Subject: [PATCH 333/626] fix(core/mercury): show coinjoin authorized notification --- .../ui/model_mercury/component/homescreen.rs | 114 ++++++++++-------- 1 file changed, 63 insertions(+), 51 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index ba2e05c497..2141e09c87 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -6,7 +6,7 @@ use crate::{ trezorhal::usb::usb_configured, ui::{ component::{Component, Event, EventCtx, TimerToken}, - display::{image::ImageInfo, toif::Icon, Color, Font}, + display::{image::ImageInfo, Color, Font}, event::{TouchEvent, USBEvent}, geometry::{Alignment, Alignment2D, Offset, Point, Rect}, layout::util::get_user_custom_image, @@ -49,6 +49,47 @@ const DEFAULT_HS_SPAN: i16 = UnlockOverlay::SPAN; const DEFAULT_HS_THICKNESS: i16 = 6; const DEFAULT_HS_NUM_CIRCLES: i16 = 5; +const NOTIFICATION_HEIGHT: i16 = 30; +const NOTIFICATION_TOP: i16 = 208; +const NOTIFICATION_LOCKSCREEN_TOP: i16 = 190; +const NOTIFICATION_BORDER: i16 = 13; + +const NOTIFICATION_BG_ALPHA: u8 = 204; + +const NOTIFICATION_BG_RADIUS: i16 = 14; + +fn render_notif<'s>(notif: HomescreenNotification, top: i16, target: &mut impl Renderer<'s>) { + notif.text.map(|t| { + let style = theme::TEXT_BOLD; + + let text_width = style.text_font.text_width(t); + + let banner = Rect::new( + Point::new(AREA.center().x - NOTIFICATION_BORDER - text_width / 2, top), + Point::new( + AREA.center().x + NOTIFICATION_BORDER + text_width / 2, + top + NOTIFICATION_HEIGHT, + ), + ); + + let text_pos = Point::new( + style.text_font.horz_center(banner.x0, banner.x1, t), + style.text_font.vert_center(banner.y0, banner.y1, "A"), + ); + + shape::Bar::new(banner) + .with_radius(NOTIFICATION_BG_RADIUS) + .with_bg(notif.color_bg) + .with_alpha(NOTIFICATION_BG_ALPHA) + .render(target); + + shape::Text::new(text_pos, t) + .with_font(style.text_font) + .with_fg(notif.color_text) + .render(target); + }); +} + fn render_default_hs<'a>(target: &mut impl Renderer<'a>) { shape::Bar::new(AREA) .with_fg(theme::BG) @@ -204,8 +245,8 @@ impl HideLabelAnimation { #[derive(Clone, Copy)] pub struct HomescreenNotification { pub text: TString<'static>, - pub icon: Icon, - pub color: Color, + pub color_bg: Color, + pub color_text: Color, } pub struct Homescreen { @@ -259,29 +300,27 @@ impl Homescreen { } } - fn level_to_style(level: u8) -> (Color, Icon) { + fn level_to_style(level: u8) -> (Color, Color) { match level { - 3 => (theme::ORANGE_DARK, theme::ICON_COINJOIN), - 2 => (theme::ORANGE_DARK, theme::ICON_MAGIC), - 1 => (theme::ORANGE_DARK, theme::ICON_WARN), - _ => (theme::ORANGE_DARK, theme::ICON_WARN), + 3 => (theme::GREEN_DARK, theme::GREEN_LIME), + _ => (theme::ORANGE_DARK, theme::ORANGE_LIGHT), } } fn get_notification(&self) -> Option<HomescreenNotification> { if !usb_configured() { - let (color, icon) = Self::level_to_style(0); + let (color_bg, color_text) = Self::level_to_style(0); Some(HomescreenNotification { text: TR::homescreen__title_no_usb_connection.into(), - icon, - color, + color_bg, + color_text, }) } else if let Some((notification, level)) = self.notification { - let (color, icon) = Self::level_to_style(level); + let (color_bg, color_text) = Self::level_to_style(level); Some(HomescreenNotification { text: notification, - icon, - color, + color_bg, + color_text, }) } else { None @@ -396,42 +435,7 @@ impl Component for Homescreen { }); if let Some(notif) = self.get_notification() { - const NOTIFICATION_HEIGHT: i16 = 30; - const NOTIFICATION_TOP: i16 = 208; - const NOTIFICATION_BORDER: i16 = 16; - - notif.text.map(|t| { - let style = theme::TEXT_BOLD; - - let text_width = style.text_font.text_width(t); - - let banner = Rect::new( - Point::new( - AREA.center().x - NOTIFICATION_BORDER - text_width / 2, - NOTIFICATION_TOP, - ), - Point::new( - AREA.center().x + NOTIFICATION_BORDER + text_width / 2, - NOTIFICATION_TOP + NOTIFICATION_HEIGHT, - ), - ); - - let text_pos = Point::new( - style.text_font.horz_center(banner.x0, banner.x1, t), - style.text_font.vert_center(banner.y0, banner.y1, "A"), - ); - - shape::Bar::new(banner) - .with_radius(14) - .with_bg(theme::ORANGE_DARK) - .with_alpha(160) - .render(target); - - shape::Text::new(text_pos, t) - .with_font(style.text_font) - .with_fg(theme::ORANGE_LIGHT) - .render(target); - }); + render_notif(notif, NOTIFICATION_TOP, target); } } } @@ -633,7 +637,15 @@ impl Component for Lockscreen { .render(target); }); - // TODO coinjoin authorized text + if self.coinjoin_authorized { + let notif = HomescreenNotification { + text: TR::homescreen__title_coinjoin_authorized.into(), + color_bg: theme::GREEN_DARK, + color_text: theme::GREEN_LIME, + }; + + render_notif(notif, NOTIFICATION_LOCKSCREEN_TOP, target); + } } } From 4d4ee9971695644492724afb0a31629415536842 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 25 Jun 2024 06:46:48 +0200 Subject: [PATCH 334/626] fix(core): Increase Optiga MAX_RETRY_READ_MS to 6 sec. --- core/.changelog.d/+optiga.fixed | 1 + core/embed/trezorhal/optiga/optiga_transport.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 core/.changelog.d/+optiga.fixed diff --git a/core/.changelog.d/+optiga.fixed b/core/.changelog.d/+optiga.fixed new file mode 100644 index 0000000000..6bb8d93502 --- /dev/null +++ b/core/.changelog.d/+optiga.fixed @@ -0,0 +1 @@ +Fix Optiga-related RSODs diff --git a/core/embed/trezorhal/optiga/optiga_transport.c b/core/embed/trezorhal/optiga/optiga_transport.c index eafd430b70..7eba26b38f 100644 --- a/core/embed/trezorhal/optiga/optiga_transport.c +++ b/core/embed/trezorhal/optiga/optiga_transport.c @@ -66,7 +66,10 @@ static const uint32_t I2C_TIMEOUT_MS = 25; static const int I2C_MAX_RETRY_COUNT = 10; // Maximum time in millisecods to retry reading Optiga's response to a command. -static const int MAX_RETRY_READ_MS = 300; +// If the SEC is high, then the throttling down delay can be as high as +// t_max = 5000 ms. The maximum time to execute a non-RSA operation is 130 ms. +// We round the total up to the nearest second. +static const int MAX_RETRY_READ_MS = 6000; // Maximum number of times to retry reading Optiga's response to a command when // it claims it's not busy executing a command. From ca4bfa2ebd7f7b018ac2c397fac55fc8260217f3 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 25 Jun 2024 11:23:25 +0200 Subject: [PATCH 335/626] feat(core): Implement optiga.get_sec() [no changelog] --- .../modtrezorcrypto/modtrezorcrypto-optiga.h | 17 ++++++++++++++++- core/embed/trezorhal/optiga.h | 2 ++ core/embed/trezorhal/optiga/optiga.c | 7 +++++++ core/embed/trezorhal/unix/optiga.c | 5 +++++ core/mocks/generated/trezorcrypto/optiga.pyi | 7 +++++++ 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h index 08a77d8a4e..44a713879d 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h @@ -104,10 +104,23 @@ STATIC mp_obj_t mod_trezorcrypto_optiga_sign(mp_obj_t key_index, sig.len = sig_size; return mp_obj_new_str_from_vstr(&mp_type_bytes, &sig); } - STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_optiga_sign_obj, mod_trezorcrypto_optiga_sign); +/// def get_sec() -> int | None: +/// """ +/// Returns the value of Optiga's security event counter. +/// """ +STATIC mp_obj_t mod_trezorcrypto_optiga_get_sec() { + uint8_t sec = 0; + if (optiga_read_sec(&sec)) { + return mp_obj_new_int_from_uint(sec); + } + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_optiga_get_sec_obj, + mod_trezorcrypto_optiga_get_sec); + /// DEVICE_CERT_INDEX: int /// DEVICE_ECC_KEY_INDEX: int @@ -116,6 +129,8 @@ STATIC const mp_rom_map_elem_t mod_trezorcrypto_optiga_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_get_certificate), MP_ROM_PTR(&mod_trezorcrypto_optiga_get_certificate_obj)}, {MP_ROM_QSTR(MP_QSTR_sign), MP_ROM_PTR(&mod_trezorcrypto_optiga_sign_obj)}, + {MP_ROM_QSTR(MP_QSTR_get_sec), + MP_ROM_PTR(&mod_trezorcrypto_optiga_get_sec_obj)}, {MP_ROM_QSTR(MP_QSTR_DEVICE_CERT_INDEX), MP_ROM_INT(OPTIGA_DEVICE_CERT_INDEX)}, {MP_ROM_QSTR(MP_QSTR_DEVICE_ECC_KEY_INDEX), diff --git a/core/embed/trezorhal/optiga.h b/core/embed/trezorhal/optiga.h index a58c223d7c..05ff3c8af4 100644 --- a/core/embed/trezorhal/optiga.h +++ b/core/embed/trezorhal/optiga.h @@ -59,6 +59,8 @@ bool __wur optiga_cert_size(uint8_t index, size_t *cert_size); bool __wur optiga_read_cert(uint8_t index, uint8_t *cert, size_t max_cert_size, size_t *cert_size); +bool __wur optiga_read_sec(uint8_t *sec); + bool __wur optiga_random_buffer(uint8_t *dest, size_t size); int __wur optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index a4be9f1e88..0008ee4c92 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -159,6 +159,13 @@ bool optiga_read_cert(uint8_t index, uint8_t *cert, size_t max_cert_size, return OPTIGA_SUCCESS == ret; } +bool optiga_read_sec(uint8_t *sec) { + size_t size = 0; + optiga_result ret = optiga_get_data_object(OPTIGA_OID_SEC, false, sec, + sizeof(uint8_t), &size); + return ret == OPTIGA_SUCCESS && size == sizeof(uint8_t); +} + bool optiga_random_buffer(uint8_t *dest, size_t size) { while (size > OPTIGA_RANDOM_MAX_SIZE) { if (optiga_get_random(dest, OPTIGA_RANDOM_MAX_SIZE) != OPTIGA_SUCCESS) { diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index 8e63f7ffa2..c80e8bb852 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -149,6 +149,11 @@ bool optiga_read_cert(uint8_t index, uint8_t *cert, size_t max_cert_size, return true; } +bool optiga_read_sec(uint8_t *sec) { + *sec = 0; + return true; +} + bool optiga_random_buffer(uint8_t *dest, size_t size) { random_buffer(dest, size); return true; diff --git a/core/mocks/generated/trezorcrypto/optiga.pyi b/core/mocks/generated/trezorcrypto/optiga.pyi index 25af0f16c7..f4f2d2be40 100644 --- a/core/mocks/generated/trezorcrypto/optiga.pyi +++ b/core/mocks/generated/trezorcrypto/optiga.pyi @@ -29,5 +29,12 @@ def sign( Uses the private key at key_index to produce a DER-encoded signature of the digest. """ + + +# extmod/modtrezorcrypto/modtrezorcrypto-optiga.h +def get_sec() -> int | None: + """ + Returns the value of Optiga's security event counter. + """ DEVICE_CERT_INDEX: int DEVICE_ECC_KEY_INDEX: int From 4ee81daee74da2e9bc5c4922a5b0c4f149c0296c Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 25 Jun 2024 11:22:58 +0200 Subject: [PATCH 336/626] feat(core): Add optiga_sec field to Features [no changelog] --- common/protob/messages-management.proto | 1 + core/src/apps/base.py | 5 + core/src/trezor/messages.py | 2 + python/src/trezorlib/messages.py | 3 + .../protos/generated/messages_management.rs | 282 ++++++++++-------- 5 files changed, 171 insertions(+), 122 deletions(-) diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index 955d3cdf6c..8c119ae5f9 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -116,6 +116,7 @@ message Features { optional uint32 unit_packaging = 51; // unit/device packaging version optional bool haptic_feedback = 52; // haptic feedback is enabled optional RecoveryType recovery_type = 53; // what type of recovery we are in. NB: this works in conjunction with recovery_status + optional uint32 optiga_sec = 54; // Optiga's security event counter. enum BackupAvailability { /// Device is already backed up, or a previous backup has failed. diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 02621f252a..628bd12f8e 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -151,6 +151,11 @@ def get_features() -> Features: else: f.sd_card_present = False + if utils.USE_OPTIGA: + from trezor.crypto import optiga + + f.optiga_sec = optiga.get_sec() + f.initialized = storage_device.is_initialized() # private fields: diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index b6c4216370..e90c7eb505 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2168,6 +2168,7 @@ class Features(protobuf.MessageType): unit_packaging: "int | None" haptic_feedback: "bool | None" recovery_type: "RecoveryType | None" + optiga_sec: "int | None" def __init__( self, @@ -2222,6 +2223,7 @@ def __init__( unit_packaging: "int | None" = None, haptic_feedback: "bool | None" = None, recovery_type: "RecoveryType | None" = None, + optiga_sec: "int | None" = None, ) -> None: pass diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index bde2dcf07b..5cb4090c8d 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -3284,6 +3284,7 @@ class Features(protobuf.MessageType): 51: protobuf.Field("unit_packaging", "uint32", repeated=False, required=False, default=None), 52: protobuf.Field("haptic_feedback", "bool", repeated=False, required=False, default=None), 53: protobuf.Field("recovery_type", "RecoveryType", repeated=False, required=False, default=None), + 54: protobuf.Field("optiga_sec", "uint32", repeated=False, required=False, default=None), } def __init__( @@ -3340,6 +3341,7 @@ def __init__( unit_packaging: Optional["int"] = None, haptic_feedback: Optional["bool"] = None, recovery_type: Optional["RecoveryType"] = None, + optiga_sec: Optional["int"] = None, ) -> None: self.capabilities: Sequence["Capability"] = capabilities if capabilities is not None else [] self.major_version = major_version @@ -3392,6 +3394,7 @@ def __init__( self.unit_packaging = unit_packaging self.haptic_feedback = haptic_feedback self.recovery_type = recovery_type + self.optiga_sec = optiga_sec class LockDevice(protobuf.MessageType): diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index b7e87556a8..283e93c601 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -466,6 +466,8 @@ pub struct Features { pub haptic_feedback: ::std::option::Option<bool>, // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.recovery_type) pub recovery_type: ::std::option::Option<::protobuf::EnumOrUnknown<RecoveryType>>, + // @@protoc_insertion_point(field:hw.trezor.messages.management.Features.optiga_sec) + pub optiga_sec: ::std::option::Option<u32>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.management.Features.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -1620,8 +1622,27 @@ impl Features { self.recovery_type = ::std::option::Option::Some(::protobuf::EnumOrUnknown::new(v)); } + // optional uint32 optiga_sec = 54; + + pub fn optiga_sec(&self) -> u32 { + self.optiga_sec.unwrap_or(0) + } + + pub fn clear_optiga_sec(&mut self) { + self.optiga_sec = ::std::option::Option::None; + } + + pub fn has_optiga_sec(&self) -> bool { + self.optiga_sec.is_some() + } + + // Param is passed by value, moved + pub fn set_optiga_sec(&mut self, v: u32) { + self.optiga_sec = ::std::option::Option::Some(v); + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(51); + let mut fields = ::std::vec::Vec::with_capacity(52); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "vendor", @@ -1878,6 +1899,11 @@ impl Features { |m: &Features| { &m.recovery_type }, |m: &mut Features| { &mut m.recovery_type }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "optiga_sec", + |m: &Features| { &m.optiga_sec }, + |m: &mut Features| { &mut m.optiga_sec }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<Features>( "Features", fields, @@ -2061,6 +2087,9 @@ impl ::protobuf::Message for Features { 424 => { self.recovery_type = ::std::option::Option::Some(is.read_enum_or_unknown()?); }, + 432 => { + self.optiga_sec = ::std::option::Option::Some(is.read_uint32()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -2226,6 +2255,9 @@ impl ::protobuf::Message for Features { if let Some(v) = self.recovery_type { my_size += ::protobuf::rt::int32_size(53, v.value()); } + if let Some(v) = self.optiga_sec { + my_size += ::protobuf::rt::uint32_size(54, v); + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -2385,6 +2417,9 @@ impl ::protobuf::Message for Features { if let Some(v) = self.recovery_type { os.write_enum(53, ::protobuf::EnumOrUnknown::value(&v))?; } + if let Some(v) = self.optiga_sec { + os.write_uint32(54, v)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -2453,6 +2488,7 @@ impl ::protobuf::Message for Features { self.unit_packaging = ::std::option::Option::None; self.haptic_feedback = ::std::option::Option::None; self.recovery_type = ::std::option::Option::None; + self.optiga_sec = ::std::option::Option::None; self.special_fields.clear(); } @@ -2509,6 +2545,7 @@ impl ::protobuf::Message for Features { unit_packaging: ::std::option::Option::None, haptic_feedback: ::std::option::Option::None, recovery_type: ::std::option::Option::None, + optiga_sec: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -11089,7 +11126,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x0emessages.proto\"\x80\x01\n\nInitialize\x12\x1d\n\nsession_id\x18\x01\ \x20\x01(\x0cR\tsessionId\x12,\n\x10_skip_passphrase\x18\x02\x20\x01(\ \x08R\x0eSkipPassphraseB\x02\x18\x01\x12%\n\x0ederive_cardano\x18\x03\ - \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xb7\x17\n\x08Featur\ + \x20\x01(\x08R\rderiveCardano\"\r\n\x0bGetFeatures\"\xd6\x17\n\x08Featur\ es\x12\x16\n\x06vendor\x18\x01\x20\x01(\tR\x06vendor\x12#\n\rmajor_versi\ on\x18\x02\x20\x02(\rR\x0cmajorVersion\x12#\n\rminor_version\x18\x03\x20\ \x02(\rR\x0cminorVersion\x12#\n\rpatch_version\x18\x04\x20\x02(\rR\x0cpa\ @@ -11138,126 +11175,127 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x182\x20\x01(\x08:\x04trueR\x16languageVersionMatches\x12%\n\x0eunit_pa\ ckaging\x183\x20\x01(\rR\runitPackaging\x12'\n\x0fhaptic_feedback\x184\ \x20\x01(\x08R\x0ehapticFeedback\x12P\n\rrecovery_type\x185\x20\x01(\x0e\ - 2+.hw.trezor.messages.management.RecoveryTypeR\x0crecoveryType\"C\n\x12B\ - ackupAvailability\x12\x10\n\x0cNotAvailable\x10\0\x12\x0c\n\x08Required\ - \x10\x01\x12\r\n\tAvailable\x10\x02\"7\n\x0eRecoveryStatus\x12\x0b\n\x07\ - Nothing\x10\0\x12\x0c\n\x08Recovery\x10\x01\x12\n\n\x06Backup\x10\x02\"\ - \xc2\x04\n\nCapability\x12\x1c\n\x12Capability_Bitcoin\x10\x01\x1a\x04\ - \x80\xa6\x1d\x01\x12\x1b\n\x17Capability_Bitcoin_like\x10\x02\x12\x16\n\ - \x12Capability_Binance\x10\x03\x12\x16\n\x12Capability_Cardano\x10\x04\ - \x12\x1b\n\x11Capability_Crypto\x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\ - \n\x0eCapability_EOS\x10\x06\x12\x17\n\x13Capability_Ethereum\x10\x07\ - \x12\x17\n\x0fCapability_Lisk\x10\x08\x1a\x02\x08\x01\x12\x15\n\x11Capab\ - ility_Monero\x10\t\x12\x12\n\x0eCapability_NEM\x10\n\x12\x15\n\x11Capabi\ - lity_Ripple\x10\x0b\x12\x16\n\x12Capability_Stellar\x10\x0c\x12\x14\n\ - \x10Capability_Tezos\x10\r\x12\x12\n\x0eCapability_U2F\x10\x0e\x12\x1b\n\ - \x11Capability_Shamir\x10\x0f\x1a\x04\x80\xa6\x1d\x01\x12!\n\x17Capabili\ - ty_ShamirGroups\x10\x10\x1a\x04\x80\xa6\x1d\x01\x12$\n\x1aCapability_Pas\ - sphraseEntry\x10\x11\x1a\x04\x80\xa6\x1d\x01\x12\x15\n\x11Capability_Sol\ - ana\x10\x12\x12!\n\x17Capability_Translations\x10\x13\x1a\x04\x80\xa6\ - \x1d\x01\x12\x1f\n\x15Capability_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\ - \x01\x12\x1b\n\x11Capability_Haptic\x10\x15\x1a\x04\x80\xa6\x1d\x01\x1a\ - \x04\xc8\xf3\x18\x01\"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpi\ - ry_ms\x18\x01\x20\x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\xc4\x04\n\rA\ - pplySettings\x12\x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\ - \x18\x01\x12\x14\n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_p\ - assphrase\x18\x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\ - \x04\x20\x01(\x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\ - \x01(\rR\x10PassphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\ - \x18\x06\x20\x01(\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\ - \x07\x20\x01(\rR\x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_devic\ - e\x18\x08\x20\x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_check\ - s\x18\t\x20\x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\ - \x0csafetyChecks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14\ - experimentalFeatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01\ - (\x08R\x16hidePassphraseFromHost\x12'\n\x0fhaptic_feedback\x18\r\x20\x01\ - (\x08R\x0ehapticFeedback\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\ - \x18\x01\x20\x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\x01(\ - \x08R\x0bshowDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_le\ - ngth\x18\x01\x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\ - \x20\x02(\rR\ndataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_chun\ - k\x18\x01\x20\x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\ - \x18\x01\x20\x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\ - \x01\x20\x01(\x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\ - \x18\x01\x20\x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperatio\ - n\x18\x01\x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProte\ - ctOperationTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07\ - DISABLE\x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\ - \n\x04Ping\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\ - \x11button_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\ - \x06Cancel\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04\ - size\"#\n\x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entro\ - py\"/\n\x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tc\ - hallenge\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\ - \x04hash\"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02\ - (\x0cR\tchallenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\ - \x01\x20\x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\ - \x0cR\tsignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\t\ - mnemonics\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\ - \x01(\tR\x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\ - \x14passphraseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08la\ - nguageB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\ - \n\rskip_checksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f\ - _counter\x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\ - \x20\x01(\x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\ - \x08noBackup\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\ - \x20\x01(\x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\ - \x03256R\x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\ - \x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\ - \x08R\rpinProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08langua\ - geB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\ - \n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_back\ - up\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\ - \x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.m\ - essages.management.BackupType:\x05Bip39R\nbackupType\"\xe5\x01\n\x0cBack\ - upDevice\x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\x0egroupThreshold\ - \x12O\n\x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.messages.management.B\ - ackupDevice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10membe\ - r_threshold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_coun\ - t\x18\x02\x20\x02(\rR\x0bmemberCount\"\x10\n\x0eEntropyRequest\"&\n\nEnt\ - ropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\x8d\x04\ - \n\x0eRecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCoun\ - t\x123\n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphrasePro\ - tection\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\ - \x12\x1e\n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\ - \x14\n\x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\ - \x18\x06\x20\x01(\x08R\x0fenforceWordlist\x12j\n\x0cinput_method\x18\x08\ - \x20\x01(\x0e2G.hw.trezor.messages.management.RecoveryDevice.RecoveryDev\ - iceInputMethodR\x0binputMethod\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\r\ - R\nu2fCounter\x12O\n\x04type\x18\n\x20\x01(\x0e2+.hw.trezor.messages.man\ - agement.RecoveryType:\x0eNormalRecoveryR\x04type\";\n\x19RecoveryDeviceI\ - nputMethod\x12\x12\n\x0eScrambledWords\x10\0\x12\n\n\x06Matrix\x10\x01J\ - \x04\x08\x07\x10\x08\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\ - \x20\x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordRequestTyp\ - eR\x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\ - \x10\0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordReq\ - uestType_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\ - \x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\ - \x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2\ - FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\ - \n\x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelA\ - uthorization\"\x9a\x02\n\x12RebootToBootloader\x12o\n\x0cboot_command\ - \x18\x01\x20\x01(\x0e2=.hw.trezor.messages.management.RebootToBootloader\ - .BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\n\x0ffirmware_header\ - \x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14language_data_length\ - \x18\x03\x20\x01(\r:\x010R\x12languageDataLength\"5\n\x0bBootCommand\x12\ - \x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01\"\x10\n\ - \x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\x14\n\x05nonce\x18\ - \x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\nUnlockPath\x12\ - \x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\ - \x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\ - \x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10U\ - nlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\x18\x01\x20\x01(\ - \rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0c\ - Slip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18S\ - lip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\ - \x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckL\ - evel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\ - \x11PromptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\ - \x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03*H\n\x0cReco\ - veryType\x12\x12\n\x0eNormalRecovery\x10\0\x12\n\n\x06DryRun\x10\x01\x12\ - \x18\n\x14UnlockRepeatedBackup\x10\x02BB\n#com.satoshilabs.trezor.lib.pr\ - otobufB\x17TrezorMessageManagement\x80\xa6\x1d\x01\ + 2+.hw.trezor.messages.management.RecoveryTypeR\x0crecoveryType\x12\x1d\n\ + \noptiga_sec\x186\x20\x01(\rR\toptigaSec\"C\n\x12BackupAvailability\x12\ + \x10\n\x0cNotAvailable\x10\0\x12\x0c\n\x08Required\x10\x01\x12\r\n\tAvai\ + lable\x10\x02\"7\n\x0eRecoveryStatus\x12\x0b\n\x07Nothing\x10\0\x12\x0c\ + \n\x08Recovery\x10\x01\x12\n\n\x06Backup\x10\x02\"\xc2\x04\n\nCapability\ + \x12\x1c\n\x12Capability_Bitcoin\x10\x01\x1a\x04\x80\xa6\x1d\x01\x12\x1b\ + \n\x17Capability_Bitcoin_like\x10\x02\x12\x16\n\x12Capability_Binance\ + \x10\x03\x12\x16\n\x12Capability_Cardano\x10\x04\x12\x1b\n\x11Capability\ + _Crypto\x10\x05\x1a\x04\x80\xa6\x1d\x01\x12\x12\n\x0eCapability_EOS\x10\ + \x06\x12\x17\n\x13Capability_Ethereum\x10\x07\x12\x17\n\x0fCapability_Li\ + sk\x10\x08\x1a\x02\x08\x01\x12\x15\n\x11Capability_Monero\x10\t\x12\x12\ + \n\x0eCapability_NEM\x10\n\x12\x15\n\x11Capability_Ripple\x10\x0b\x12\ + \x16\n\x12Capability_Stellar\x10\x0c\x12\x14\n\x10Capability_Tezos\x10\r\ + \x12\x12\n\x0eCapability_U2F\x10\x0e\x12\x1b\n\x11Capability_Shamir\x10\ + \x0f\x1a\x04\x80\xa6\x1d\x01\x12!\n\x17Capability_ShamirGroups\x10\x10\ + \x1a\x04\x80\xa6\x1d\x01\x12$\n\x1aCapability_PassphraseEntry\x10\x11\ + \x1a\x04\x80\xa6\x1d\x01\x12\x15\n\x11Capability_Solana\x10\x12\x12!\n\ + \x17Capability_Translations\x10\x13\x1a\x04\x80\xa6\x1d\x01\x12\x1f\n\ + \x15Capability_Brightness\x10\x14\x1a\x04\x80\xa6\x1d\x01\x12\x1b\n\x11C\ + apability_Haptic\x10\x15\x1a\x04\x80\xa6\x1d\x01\x1a\x04\xc8\xf3\x18\x01\ + \"\x0c\n\nLockDevice\"&\n\x07SetBusy\x12\x1b\n\texpiry_ms\x18\x01\x20\ + \x01(\rR\x08expiryMs\"\x0c\n\nEndSession\"\xc4\x04\n\rApplySettings\x12\ + \x1e\n\x08language\x18\x01\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\ + \n\x05label\x18\x02\x20\x01(\tR\x05label\x12%\n\x0euse_passphrase\x18\ + \x03\x20\x01(\x08R\rusePassphrase\x12\x1e\n\nhomescreen\x18\x04\x20\x01(\ + \x0cR\nhomescreen\x120\n\x12_passphrase_source\x18\x05\x20\x01(\rR\x10Pa\ + ssphraseSourceB\x02\x18\x01\x12+\n\x12auto_lock_delay_ms\x18\x06\x20\x01\ + (\rR\x0fautoLockDelayMs\x12)\n\x10display_rotation\x18\x07\x20\x01(\rR\ + \x0fdisplayRotation\x12=\n\x1bpassphrase_always_on_device\x18\x08\x20\ + \x01(\x08R\x18passphraseAlwaysOnDevice\x12T\n\rsafety_checks\x18\t\x20\ + \x01(\x0e2/.hw.trezor.messages.management.SafetyCheckLevelR\x0csafetyChe\ + cks\x123\n\x15experimental_features\x18\n\x20\x01(\x08R\x14experimentalF\ + eatures\x129\n\x19hide_passphrase_from_host\x18\x0b\x20\x01(\x08R\x16hid\ + ePassphraseFromHost\x12'\n\x0fhaptic_feedback\x18\r\x20\x01(\x08R\x0ehap\ + ticFeedback\"T\n\x0eChangeLanguage\x12\x1f\n\x0bdata_length\x18\x01\x20\ + \x02(\rR\ndataLength\x12!\n\x0cshow_display\x18\x02\x20\x01(\x08R\x0bsho\ + wDisplay\"Z\n\x16TranslationDataRequest\x12\x1f\n\x0bdata_length\x18\x01\ + \x20\x02(\rR\ndataLength\x12\x1f\n\x0bdata_offset\x18\x02\x20\x02(\rR\nd\ + ataOffset\"3\n\x12TranslationDataAck\x12\x1d\n\ndata_chunk\x18\x01\x20\ + \x02(\x0cR\tdataChunk\"\"\n\nApplyFlags\x12\x14\n\x05flags\x18\x01\x20\ + \x02(\rR\x05flags\"#\n\tChangePin\x12\x16\n\x06remove\x18\x01\x20\x01(\ + \x08R\x06remove\"(\n\x0eChangeWipeCode\x12\x16\n\x06remove\x18\x01\x20\ + \x01(\x08R\x06remove\"\xaa\x01\n\tSdProtect\x12]\n\toperation\x18\x01\ + \x20\x02(\x0e2?.hw.trezor.messages.management.SdProtect.SdProtectOperati\ + onTypeR\toperation\">\n\x16SdProtectOperationType\x12\x0b\n\x07DISABLE\ + \x10\0\x12\n\n\x06ENABLE\x10\x01\x12\x0b\n\x07REFRESH\x10\x02\"O\n\x04Pi\ + ng\x12\x1a\n\x07message\x18\x01\x20\x01(\t:\0R\x07message\x12+\n\x11butt\ + on_protection\x18\x02\x20\x01(\x08R\x10buttonProtection\"\x08\n\x06Cance\ + l\"\x20\n\nGetEntropy\x12\x12\n\x04size\x18\x01\x20\x02(\rR\x04size\"#\n\ + \x07Entropy\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"/\n\ + \x0fGetFirmwareHash\x12\x1c\n\tchallenge\x18\x01\x20\x01(\x0cR\tchalleng\ + e\"\"\n\x0cFirmwareHash\x12\x12\n\x04hash\x18\x01\x20\x02(\x0cR\x04hash\ + \"2\n\x12AuthenticateDevice\x12\x1c\n\tchallenge\x18\x01\x20\x02(\x0cR\t\ + challenge\"U\n\x11AuthenticityProof\x12\"\n\x0ccertificates\x18\x01\x20\ + \x03(\x0cR\x0ccertificates\x12\x1c\n\tsignature\x18\x02\x20\x02(\x0cR\ts\ + ignature\"\x0c\n\nWipeDevice\"\xad\x02\n\nLoadDevice\x12\x1c\n\tmnemonic\ + s\x18\x01\x20\x03(\tR\tmnemonics\x12\x10\n\x03pin\x18\x03\x20\x01(\tR\ + \x03pin\x123\n\x15passphrase_protection\x18\x04\x20\x01(\x08R\x14passphr\ + aseProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08languageB\x02\ + \x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12#\n\rskip_ch\ + ecksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f_counter\ + \x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\x20\x01(\ + \x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\x08noBacku\ + p\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\x20\x01(\ + \x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\x03256R\ + \x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\x08R\x14pa\ + ssphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\x08R\rpinPr\ + otection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08languageB\x02\x18\ + \x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\n\x0bu2f_co\ + unter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_backup\x18\x08\ + \x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\x08R\x08n\ + oBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.messages.ma\ + nagement.BackupType:\x05Bip39R\nbackupType\"\xe5\x01\n\x0cBackupDevice\ + \x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\x0egroupThreshold\x12O\n\ + \x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.messages.management.BackupDe\ + vice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10member_thres\ + hold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_count\x18\ + \x02\x20\x02(\rR\x0bmemberCount\"\x10\n\x0eEntropyRequest\"&\n\nEntropyA\ + ck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\x8d\x04\n\x0e\ + RecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCount\x123\ + \n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphraseProtectio\ + n\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\x12\x1e\ + \n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\ + \x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\x18\ + \x06\x20\x01(\x08R\x0fenforceWordlist\x12j\n\x0cinput_method\x18\x08\x20\ + \x01(\x0e2G.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceI\ + nputMethodR\x0binputMethod\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu\ + 2fCounter\x12O\n\x04type\x18\n\x20\x01(\x0e2+.hw.trezor.messages.managem\ + ent.RecoveryType:\x0eNormalRecoveryR\x04type\";\n\x19RecoveryDeviceInput\ + Method\x12\x12\n\x0eScrambledWords\x10\0\x12\n\n\x06Matrix\x10\x01J\x04\ + \x08\x07\x10\x08\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\x20\ + \x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordRequestTypeR\ + \x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\x10\ + \0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordRequest\ + Type_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\x20\ + \x02(\tR\x04word\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\ + \x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2FCou\ + nter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\n\ + \x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelAut\ + horization\"\x9a\x02\n\x12RebootToBootloader\x12o\n\x0cboot_command\x18\ + \x01\x20\x01(\x0e2=.hw.trezor.messages.management.RebootToBootloader.Boo\ + tCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\n\x0ffirmware_header\x18\ + \x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14language_data_length\x18\ + \x03\x20\x01(\r:\x010R\x12languageDataLength\"5\n\x0bBootCommand\x12\x11\ + \n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01\"\x10\n\x08\ + GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\x14\n\x05nonce\x18\x01\ + \x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\nUnlockPath\x12\x1b\n\ + \taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\x02\x20\ + \x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\x18\x01\ + \x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10UnlockBoo\ + tloader\"%\n\rSetBrightness\x12\x14\n\x05value\x18\x01\x20\x01(\rR\x05va\ + lue*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0cSlip39_Ba\ + sic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18Slip39_Sin\ + gle_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\x04\x12\ + \x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckLevel\x12\ + \n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\x11Prom\ + ptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\x10\x01\ + \x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03*H\n\x0cRecoveryType\ + \x12\x12\n\x0eNormalRecovery\x10\0\x12\n\n\x06DryRun\x10\x01\x12\x18\n\ + \x14UnlockRepeatedBackup\x10\x02BB\n#com.satoshilabs.trezor.lib.protobuf\ + B\x17TrezorMessageManagement\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file From 8a3133bacc21d1d7ae04fcbe5244d7012a5b57f5 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 10 Jun 2024 13:36:59 +0200 Subject: [PATCH 337/626] fix(core): include valid staging certificate for T3T1 emulator --- core/embed/trezorhal/unix/certs/README.md | 7 ++ core/embed/trezorhal/unix/certs/T2B1.der | Bin 0 -> 901 bytes core/embed/trezorhal/unix/certs/T2B1.h | 80 ++++++++++++++++ core/embed/trezorhal/unix/certs/T3T1.der | Bin 0 -> 906 bytes core/embed/trezorhal/unix/certs/T3T1.h | 80 ++++++++++++++++ core/embed/trezorhal/unix/certs/gen.sh | 11 +++ core/embed/trezorhal/unix/optiga.c | 86 ++---------------- core/site_scons/models/T3T1/emulator.py | 1 + .../device_tests/test_authenticate_device.py | 16 ++-- tests/ui_tests/fixtures.json | 20 ++++ tools/snippets/README.md | 5 + tools/snippets/recalc_optiga_for_emulator.py | 50 ++++++++++ 12 files changed, 273 insertions(+), 83 deletions(-) create mode 100644 core/embed/trezorhal/unix/certs/README.md create mode 100644 core/embed/trezorhal/unix/certs/T2B1.der create mode 100644 core/embed/trezorhal/unix/certs/T2B1.h create mode 100644 core/embed/trezorhal/unix/certs/T3T1.der create mode 100644 core/embed/trezorhal/unix/certs/T3T1.h create mode 100755 core/embed/trezorhal/unix/certs/gen.sh create mode 100644 tools/snippets/recalc_optiga_for_emulator.py diff --git a/core/embed/trezorhal/unix/certs/README.md b/core/embed/trezorhal/unix/certs/README.md new file mode 100644 index 0000000000..d2e3f0f364 --- /dev/null +++ b/core/embed/trezorhal/unix/certs/README.md @@ -0,0 +1,7 @@ +# Certificate chains for emulators + +The DER files are generated by asking the staging HSM for the given model, to sign +a certificate for a private key `01000000...`. + +When you add a new certificate, please add it to the `certs` directory and generate +the header with `gen.py` (using `xxd` to convert bytes into a C array). diff --git a/core/embed/trezorhal/unix/certs/T2B1.der b/core/embed/trezorhal/unix/certs/T2B1.der new file mode 100644 index 0000000000000000000000000000000000000000..e7b00ca3770cfdc6c9bd2c88028502bd9968f6ab GIT binary patch literal 901 zcmXqLVw`W##OS(!nTe5!iN){HQhoz2HV&;ek8`#x%uELUhTI06Y|No7Y{E>=QHF8` zG9V5Yk7!6yYE^!bf^&XuL1JE|La|<vUcR28f`J@Jo|#7+D({<^SDKcXTvA$;nU}8M z>}Vh-&TC|3U}9`wXkut)U>GINYl6%*kTsMxkc5~a6k_CLr~ox6I590%!Pp?uK$wjk z>^de!s56-v*_oXfSZ42MyLEGQB<q8a!gFF*m2^4}omxC!O|9xcNug#({9YI7GxaNc zA1W+P554u7E8qRafh&9Oh%)D0TI^E$t4h|cW3i)wy#XK4W?6nl#{Vop&oeX_@PPQj zAU=};gMmDVr_3T@Al4v~e)P)o5B(FjJ@>fpw10kyyz`~vQsj_h_Fyn@Wm06==i}C0 zb+@$q$jv3ozc=N6HRcYO7Pvm~XxYIFadGKgeoP7u%kNHZUg4l}<mai*o70wjkge@C z-^#5$!~TrNyCtG=p}^?52gEJVDDwFD?I^NE1|g(Hk*a|*BzR@8Mp00HehDa^6oByr zj3giggD44pBLh=p0qQ3W+;O`rq2=`aT{Uf2udYbsSScI2s37c?-|BsLUvy1<c<RNT z$4MNWVpZ$wbvLHX?4QcnvPv?pt$*4h4d%mVXG%YowS2zV-M|$!ZkbpNgy3<@VZa8A zVkSn^7(TIelk;W+=QA8z?pPHqym$8e^;fr%10E8?3QPx?xHcd2yZJ2Q?~j7XMJFEw zH{J7#C~Y{g>xjN{h1X4B8kos2LuOCLx(&H@D+Q<YCJSEsHpRhe_wLkrQD3z`>lq&b E0NiXKr2qf` literal 0 HcmV?d00001 diff --git a/core/embed/trezorhal/unix/certs/T2B1.h b/core/embed/trezorhal/unix/certs/T2B1.h new file mode 100644 index 0000000000..2380fb25d1 --- /dev/null +++ b/core/embed/trezorhal/unix/certs/T2B1.h @@ -0,0 +1,80 @@ +// This file was generated via ./gen.sh + +static const unsigned char T2B1_der[] = { + 0x30, 0x82, 0x01, 0x9f, 0x30, 0x82, 0x01, 0x45, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x4e, 0xe2, 0xa5, 0x0f, 0x30, 0x0a, 0x06, 0x08, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x4f, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x1e, + 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, 0x54, 0x72, 0x65, + 0x7a, 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, + 0x73, 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x0c, 0x17, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, + 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x69, 0x6e, + 0x67, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x34, + 0x33, 0x30, 0x31, 0x34, 0x31, 0x36, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x34, + 0x32, 0x30, 0x34, 0x33, 0x30, 0x31, 0x34, 0x31, 0x36, 0x30, 0x31, 0x5a, + 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, + 0x12, 0x54, 0x32, 0x42, 0x31, 0x20, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, + 0x20, 0x53, 0x61, 0x66, 0x65, 0x20, 0x33, 0x30, 0x59, 0x30, 0x13, 0x06, + 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, + 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x9b, 0xbf, + 0x06, 0xda, 0xd9, 0xab, 0x59, 0x05, 0xe0, 0x54, 0x71, 0xce, 0x16, 0xd5, + 0x22, 0x2c, 0x89, 0xc2, 0xca, 0xa3, 0x9f, 0x26, 0x26, 0x7a, 0xc0, 0x74, + 0x71, 0x29, 0x88, 0x5f, 0xbd, 0x44, 0x1b, 0xcc, 0x7f, 0xa8, 0x4d, 0xe1, + 0x20, 0xa3, 0x67, 0x55, 0xda, 0xf3, 0x0a, 0x6f, 0x47, 0xe8, 0xc0, 0xd4, + 0xbd, 0xdc, 0x15, 0x03, 0x6e, 0xd2, 0xa3, 0x44, 0x7d, 0xfa, 0x7a, 0x1d, + 0x3e, 0x88, 0xa3, 0x41, 0x30, 0x3f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x00, 0x80, 0x30, 0x0c, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0x67, 0xc5, 0xd4, 0xe7, 0xf0, 0x8f, 0x91, 0xb6, 0xe7, 0x48, 0xdf, + 0x42, 0xbf, 0x9f, 0x74, 0x1f, 0x43, 0xd2, 0x73, 0x75, 0x30, 0x0a, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, + 0x30, 0x45, 0x02, 0x21, 0x00, 0xbe, 0x4c, 0x46, 0x8b, 0x7a, 0xdd, 0x75, + 0x77, 0xc4, 0xd9, 0xa4, 0xa7, 0xf7, 0x82, 0x6d, 0xf5, 0x33, 0x0b, 0x50, + 0x96, 0x51, 0xaf, 0x61, 0xc5, 0x76, 0xc1, 0xd0, 0x5e, 0x5e, 0x67, 0x8a, + 0x4e, 0x02, 0x20, 0x40, 0xa7, 0xdd, 0x93, 0x83, 0xa8, 0x40, 0x24, 0xc4, + 0xf9, 0xca, 0x89, 0xd9, 0x96, 0xa4, 0xf0, 0x1d, 0x7d, 0x8d, 0x37, 0xb5, + 0x0b, 0x2b, 0x98, 0x3f, 0xcc, 0x48, 0xee, 0xa4, 0x15, 0x5e, 0x55, 0x30, + 0x82, 0x01, 0xde, 0x30, 0x82, 0x01, 0x84, 0xa0, 0x03, 0x02, 0x01, 0x02, + 0x02, 0x04, 0x48, 0xf1, 0xf6, 0xc5, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, + 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x54, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, 0x54, 0x72, 0x65, 0x7a, + 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x73, + 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x0c, 0x1c, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, 0x4d, + 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x20, 0x17, 0x0d, + 0x32, 0x33, 0x30, 0x31, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x5a, 0x18, 0x0f, 0x32, 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x31, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4f, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x1e, 0x30, + 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, 0x54, 0x72, 0x65, 0x7a, + 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x73, + 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x0c, 0x17, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, 0x4d, + 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, + 0x20, 0x43, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, + 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, + 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xba, 0x60, 0x84, 0xcb, 0x9f, 0xba, + 0x7c, 0x86, 0xd5, 0xd5, 0xa8, 0x61, 0x08, 0xa9, 0x1d, 0x55, 0xa2, 0x70, + 0x56, 0xda, 0x4e, 0xab, 0xbe, 0xdd, 0xe8, 0x8a, 0x95, 0xe1, 0xca, 0xe8, + 0xbc, 0xe3, 0x62, 0x08, 0x89, 0x16, 0x7a, 0xaf, 0x7f, 0x2d, 0xb1, 0x66, + 0x99, 0x8f, 0x95, 0x09, 0x84, 0xaa, 0x19, 0x5e, 0x86, 0x8f, 0x96, 0xe2, + 0x28, 0x03, 0xc3, 0xcd, 0x99, 0x1b, 0xe3, 0x1d, 0x39, 0xe7, 0xa3, 0x47, + 0x30, 0x45, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, + 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, + 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, + 0x01, 0x00, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0xc8, 0xb5, 0xb2, 0x43, 0xb3, 0x30, 0x43, 0xcc, 0x08, + 0xb4, 0xdc, 0x3a, 0x72, 0xa1, 0xde, 0xcd, 0xcf, 0xd7, 0xea, 0xdb, 0x30, + 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, + 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x02, 0xc1, 0x02, 0x0a, 0xb3, 0xc6, + 0x4e, 0xd9, 0xe6, 0x58, 0xfd, 0xf8, 0x70, 0x93, 0x72, 0xc9, 0xe0, 0x53, + 0x82, 0xde, 0x4e, 0x58, 0x75, 0x80, 0xc8, 0xba, 0xc4, 0x2f, 0x43, 0x78, + 0x4a, 0xd9, 0x02, 0x21, 0x00, 0x99, 0x00, 0x98, 0x1c, 0xbc, 0x68, 0xae, + 0xb0, 0x6d, 0x3e, 0xa9, 0x11, 0x94, 0x8d, 0x63, 0x11, 0xd6, 0xf6, 0x94, + 0x40, 0x3a, 0xbb, 0xbb, 0x65, 0x9e, 0x5a, 0xf5, 0x2b, 0xf3, 0x2e, 0x33, + 0xc4}; +static const unsigned int T2B1_der_len = 901; diff --git a/core/embed/trezorhal/unix/certs/T3T1.der b/core/embed/trezorhal/unix/certs/T3T1.der new file mode 100644 index 0000000000000000000000000000000000000000..0cc915224914d3759584656ecf9b3ce8f24f4859 GIT binary patch literal 906 zcmXqLVw`W##OS(!nTe5!iG^|hhb0DFY#dr`9_MUXn3)Xx4Y>_C*_cCF*o2v!qYUK? zWI!A)9?_7Z)T;a<1?T+Sg2cQ^g<`!Ty?i}G1p_&dJTs3tRNgl+uQV+&xumoxGcR4i z+0j5woY%<6z|_dZz|6$Z&>~8l*94hsAZsXXAPF%;D8x9#PyuRCaAI1jf~i5IfiN38 z*mX>dP-ikTvNJm|u*}}icI)QqNY)1-h3CYsD(Q3{I<<Jdnp)L?l0wan_`NRDXX;n@ zK2%to9(wCDSHAm;16TIm5oON1wAiKgSCy<?$6`kVdjme8&9eNAjQ?4Ho@Zz<-~sW4 zL3}0y1_OBzPnku+K&(Ne_FdWG&HVTIdaZ-fV?P;oKHsU05^~HQ3<j=DiVSzxn8!Ve zJD~4*TEz9wucy)Hy3NA;f=jnHmVVe`JZs8(CIziOOE1^<D_q;NHzAXOBW}^AU0X!7 z|0^ChS$cKi|At%H!034l#2t_*;z<3t%EO_h>KRHjg^(6ass_rCAeO-zO+oqjC7`%c z0LGPxfw3VF8d;i{L`m=iqY5ZsU<MVSe)7N_zfJQxQyKeThv-c*JGto`$B&eyaW^Gw znIgmd`B+V&S<<t(-<utst9bd4N5<9!d2YeU%l4noZS<4*U3o|~i}hvjVs`^q)c9p$ zF%W{sFNXmeFq)YdQDgZW*C+nfT{{+Rj7<{Vo38u1r#IOjIpCQ+84TQjv3xJ`oY=0N z@z;Oedsu2WJv%*hm0D{MU(4ZrbsY075@Q;HN`B0KS9hg9wov=OMa;76RgahCC7w_E PulK)}ZI*JFua`Oig6<ig literal 0 HcmV?d00001 diff --git a/core/embed/trezorhal/unix/certs/T3T1.h b/core/embed/trezorhal/unix/certs/T3T1.h new file mode 100644 index 0000000000..bd1eb7a9e4 --- /dev/null +++ b/core/embed/trezorhal/unix/certs/T3T1.h @@ -0,0 +1,80 @@ +// This file was generated via ./gen.sh + +static const unsigned char T3T1_der[] = { + 0x30, 0x82, 0x01, 0x9f, 0x30, 0x82, 0x01, 0x45, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x04, 0x01, 0xbf, 0xf0, 0xa4, 0x30, 0x0a, 0x06, 0x08, 0x2a, + 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x4f, 0x31, 0x0b, 0x30, + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x1e, + 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, 0x54, 0x72, 0x65, + 0x7a, 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, + 0x73, 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x0c, 0x17, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, + 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x69, 0x6e, + 0x67, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x35, + 0x32, 0x34, 0x30, 0x36, 0x34, 0x31, 0x31, 0x38, 0x5a, 0x17, 0x0d, 0x34, + 0x32, 0x30, 0x35, 0x32, 0x34, 0x30, 0x36, 0x34, 0x31, 0x31, 0x38, 0x5a, + 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, + 0x12, 0x54, 0x33, 0x54, 0x31, 0x20, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, + 0x20, 0x53, 0x61, 0x66, 0x65, 0x20, 0x35, 0x30, 0x59, 0x30, 0x13, 0x06, + 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, + 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x9b, 0xbf, + 0x06, 0xda, 0xd9, 0xab, 0x59, 0x05, 0xe0, 0x54, 0x71, 0xce, 0x16, 0xd5, + 0x22, 0x2c, 0x89, 0xc2, 0xca, 0xa3, 0x9f, 0x26, 0x26, 0x7a, 0xc0, 0x74, + 0x71, 0x29, 0x88, 0x5f, 0xbd, 0x44, 0x1b, 0xcc, 0x7f, 0xa8, 0x4d, 0xe1, + 0x20, 0xa3, 0x67, 0x55, 0xda, 0xf3, 0x0a, 0x6f, 0x47, 0xe8, 0xc0, 0xd4, + 0xbd, 0xdc, 0x15, 0x03, 0x6e, 0xd2, 0xa3, 0x44, 0x7d, 0xfa, 0x7a, 0x1d, + 0x3e, 0x88, 0xa3, 0x41, 0x30, 0x3f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x00, 0x80, 0x30, 0x0c, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0x7d, 0xee, 0x76, 0xc3, 0xb3, 0x0f, 0xdf, 0x0e, 0x8d, 0x3b, 0x52, + 0x67, 0x5d, 0xf2, 0x31, 0x89, 0xe7, 0xb9, 0x2b, 0xa4, 0x30, 0x0a, 0x06, + 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, + 0x30, 0x45, 0x02, 0x21, 0x00, 0xdd, 0xac, 0x37, 0x5e, 0xe2, 0x5e, 0xc0, + 0x2f, 0x49, 0xcb, 0x14, 0x45, 0xfc, 0xfa, 0xe5, 0x5b, 0xce, 0x8b, 0x36, + 0x56, 0x4e, 0x53, 0x75, 0xb5, 0x81, 0x75, 0xf0, 0xb4, 0x33, 0x9a, 0x94, + 0xef, 0x02, 0x20, 0x2a, 0xfc, 0xa5, 0xd3, 0x7d, 0x8f, 0x20, 0xd6, 0xbc, + 0xbd, 0x60, 0x69, 0x00, 0x08, 0x5e, 0xa2, 0xb2, 0xba, 0xb4, 0x14, 0x2b, + 0xff, 0x21, 0xc7, 0x34, 0xa5, 0xd5, 0x91, 0xff, 0x80, 0xda, 0x6b, 0x30, + 0x82, 0x01, 0xe3, 0x30, 0x82, 0x01, 0x88, 0xa0, 0x03, 0x02, 0x01, 0x02, + 0x02, 0x08, 0x65, 0xf1, 0xaa, 0x48, 0x40, 0x84, 0x7a, 0xe6, 0x30, 0x0a, + 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x54, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, + 0x5a, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, + 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x20, 0x73, 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x25, 0x30, + 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x1c, 0x54, 0x72, 0x65, 0x7a, + 0x6f, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, + 0x72, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x20, 0x17, 0x0d, 0x32, 0x34, 0x30, 0x33, 0x31, 0x33, 0x31, 0x33, + 0x32, 0x39, 0x34, 0x34, 0x5a, 0x18, 0x0f, 0x32, 0x30, 0x35, 0x34, 0x30, + 0x33, 0x30, 0x36, 0x31, 0x33, 0x32, 0x39, 0x34, 0x34, 0x5a, 0x30, 0x4f, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, + 0x5a, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, + 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, + 0x6e, 0x79, 0x20, 0x73, 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x20, 0x30, + 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x17, 0x54, 0x72, 0x65, 0x7a, + 0x6f, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, + 0x72, 0x69, 0x6e, 0x67, 0x20, 0x43, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, + 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, + 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x82, 0x9e, + 0x89, 0x65, 0x01, 0x8f, 0xeb, 0x54, 0x2e, 0x92, 0x36, 0xc9, 0xb2, 0xce, + 0x08, 0xf8, 0x64, 0xa5, 0x5e, 0xd9, 0x18, 0x3d, 0x02, 0x59, 0x56, 0x4f, + 0x0e, 0x05, 0x34, 0x5b, 0x04, 0x67, 0x6a, 0x0b, 0xef, 0x36, 0xc5, 0x9d, + 0x21, 0xd3, 0xc2, 0x48, 0x68, 0xb5, 0x60, 0x1f, 0x0b, 0x11, 0x93, 0xa6, + 0xbf, 0xcf, 0x6d, 0x81, 0x4e, 0x1c, 0xfb, 0x79, 0xc2, 0x25, 0x6a, 0x05, + 0xe9, 0x53, 0xa3, 0x47, 0x30, 0x45, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, + 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x12, + 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, + 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xce, 0x0a, 0xf2, 0x0f, 0xab, + 0x8a, 0xb8, 0xa0, 0xb1, 0x5d, 0x62, 0x15, 0xbd, 0x67, 0x2d, 0xeb, 0x8c, + 0x8d, 0x63, 0x4f, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, + 0x04, 0x03, 0x02, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0xde, + 0x59, 0xce, 0x16, 0xba, 0xb9, 0x5f, 0xd7, 0xf9, 0xde, 0xe1, 0x75, 0x3e, + 0x97, 0x6b, 0x67, 0x65, 0xaa, 0x26, 0x85, 0x52, 0x0e, 0x84, 0xc3, 0xbe, + 0x7e, 0x08, 0x9e, 0x38, 0x61, 0x5c, 0x81, 0x02, 0x21, 0x00, 0xf8, 0x9b, + 0xee, 0x7e, 0xd4, 0x8f, 0x5d, 0x71, 0x2b, 0xff, 0x38, 0x5c, 0xa6, 0xd7, + 0x7a, 0xe3, 0xa4, 0x6e, 0x61, 0xcf, 0x62, 0xff, 0x2e, 0xff, 0x7d, 0x06, + 0x9a, 0x23, 0x56, 0x4d, 0x4a, 0x27}; +static const unsigned int T3T1_der_len = 906; diff --git a/core/embed/trezorhal/unix/certs/gen.sh b/core/embed/trezorhal/unix/certs/gen.sh new file mode 100755 index 0000000000..a27c6fdee2 --- /dev/null +++ b/core/embed/trezorhal/unix/certs/gen.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +cd "$(dirname "$0")" +for file in *.der +do + header_file="${file%.der}.h" + echo "// This file was generated via ./gen.sh" > "$header_file" + echo >> "$header_file" + xxd -i "$file" | sed 's/unsigned/static const unsigned/' >> "$header_file" + clang-format -i "$header_file" +done diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index c80e8bb852..e6380fdd9a 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -24,83 +24,15 @@ #include "optiga_common.h" #include "rand.h" -static const uint8_t DEVICE_CERT_CHAIN[] = { - 0x30, 0x82, 0x01, 0x9f, 0x30, 0x82, 0x01, 0x45, 0xa0, 0x03, 0x02, 0x01, - 0x02, 0x02, 0x04, 0x4e, 0xe2, 0xa5, 0x0f, 0x30, 0x0a, 0x06, 0x08, 0x2a, - 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x4f, 0x31, 0x0b, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x1e, - 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, 0x54, 0x72, 0x65, - 0x7a, 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, - 0x73, 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x0c, 0x17, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, - 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x69, 0x6e, - 0x67, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x34, - 0x33, 0x30, 0x31, 0x34, 0x31, 0x36, 0x30, 0x31, 0x5a, 0x17, 0x0d, 0x34, - 0x32, 0x30, 0x34, 0x33, 0x30, 0x31, 0x34, 0x31, 0x36, 0x30, 0x31, 0x5a, - 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, - 0x12, 0x54, 0x32, 0x42, 0x31, 0x20, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, - 0x20, 0x53, 0x61, 0x66, 0x65, 0x20, 0x33, 0x30, 0x59, 0x30, 0x13, 0x06, - 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, - 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x9b, 0xbf, - 0x06, 0xda, 0xd9, 0xab, 0x59, 0x05, 0xe0, 0x54, 0x71, 0xce, 0x16, 0xd5, - 0x22, 0x2c, 0x89, 0xc2, 0xca, 0xa3, 0x9f, 0x26, 0x26, 0x7a, 0xc0, 0x74, - 0x71, 0x29, 0x88, 0x5f, 0xbd, 0x44, 0x1b, 0xcc, 0x7f, 0xa8, 0x4d, 0xe1, - 0x20, 0xa3, 0x67, 0x55, 0xda, 0xf3, 0x0a, 0x6f, 0x47, 0xe8, 0xc0, 0xd4, - 0xbd, 0xdc, 0x15, 0x03, 0x6e, 0xd2, 0xa3, 0x44, 0x7d, 0xfa, 0x7a, 0x1d, - 0x3e, 0x88, 0xa3, 0x41, 0x30, 0x3f, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, - 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x00, 0x80, 0x30, 0x0c, - 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, - 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, - 0x14, 0x67, 0xc5, 0xd4, 0xe7, 0xf0, 0x8f, 0x91, 0xb6, 0xe7, 0x48, 0xdf, - 0x42, 0xbf, 0x9f, 0x74, 0x1f, 0x43, 0xd2, 0x73, 0x75, 0x30, 0x0a, 0x06, - 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, - 0x30, 0x45, 0x02, 0x21, 0x00, 0xbe, 0x4c, 0x46, 0x8b, 0x7a, 0xdd, 0x75, - 0x77, 0xc4, 0xd9, 0xa4, 0xa7, 0xf7, 0x82, 0x6d, 0xf5, 0x33, 0x0b, 0x50, - 0x96, 0x51, 0xaf, 0x61, 0xc5, 0x76, 0xc1, 0xd0, 0x5e, 0x5e, 0x67, 0x8a, - 0x4e, 0x02, 0x20, 0x40, 0xa7, 0xdd, 0x93, 0x83, 0xa8, 0x40, 0x24, 0xc4, - 0xf9, 0xca, 0x89, 0xd9, 0x96, 0xa4, 0xf0, 0x1d, 0x7d, 0x8d, 0x37, 0xb5, - 0x0b, 0x2b, 0x98, 0x3f, 0xcc, 0x48, 0xee, 0xa4, 0x15, 0x5e, 0x55, 0x30, - 0x82, 0x01, 0xde, 0x30, 0x82, 0x01, 0x84, 0xa0, 0x03, 0x02, 0x01, 0x02, - 0x02, 0x04, 0x48, 0xf1, 0xf6, 0xc5, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, - 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x54, 0x31, 0x0b, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x1e, 0x30, - 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, 0x54, 0x72, 0x65, 0x7a, - 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x73, - 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x0c, 0x1c, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, 0x4d, - 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x20, 0x17, 0x0d, - 0x32, 0x33, 0x30, 0x31, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x5a, 0x18, 0x0f, 0x32, 0x30, 0x35, 0x33, 0x30, 0x31, 0x30, 0x31, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x4f, 0x31, 0x0b, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x1e, 0x30, - 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x15, 0x54, 0x72, 0x65, 0x7a, - 0x6f, 0x72, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x20, 0x73, - 0x2e, 0x72, 0x2e, 0x6f, 0x2e, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x0c, 0x17, 0x54, 0x72, 0x65, 0x7a, 0x6f, 0x72, 0x20, 0x4d, - 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x69, 0x6e, 0x67, - 0x20, 0x43, 0x41, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, - 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, - 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xba, 0x60, 0x84, 0xcb, 0x9f, 0xba, - 0x7c, 0x86, 0xd5, 0xd5, 0xa8, 0x61, 0x08, 0xa9, 0x1d, 0x55, 0xa2, 0x70, - 0x56, 0xda, 0x4e, 0xab, 0xbe, 0xdd, 0xe8, 0x8a, 0x95, 0xe1, 0xca, 0xe8, - 0xbc, 0xe3, 0x62, 0x08, 0x89, 0x16, 0x7a, 0xaf, 0x7f, 0x2d, 0xb1, 0x66, - 0x99, 0x8f, 0x95, 0x09, 0x84, 0xaa, 0x19, 0x5e, 0x86, 0x8f, 0x96, 0xe2, - 0x28, 0x03, 0xc3, 0xcd, 0x99, 0x1b, 0xe3, 0x1d, 0x39, 0xe7, 0xa3, 0x47, - 0x30, 0x45, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, - 0x04, 0x04, 0x03, 0x02, 0x02, 0x04, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, - 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, - 0x01, 0x00, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, - 0x16, 0x80, 0x14, 0xc8, 0xb5, 0xb2, 0x43, 0xb3, 0x30, 0x43, 0xcc, 0x08, - 0xb4, 0xdc, 0x3a, 0x72, 0xa1, 0xde, 0xcd, 0xcf, 0xd7, 0xea, 0xdb, 0x30, - 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, - 0x48, 0x00, 0x30, 0x45, 0x02, 0x20, 0x02, 0xc1, 0x02, 0x0a, 0xb3, 0xc6, - 0x4e, 0xd9, 0xe6, 0x58, 0xfd, 0xf8, 0x70, 0x93, 0x72, 0xc9, 0xe0, 0x53, - 0x82, 0xde, 0x4e, 0x58, 0x75, 0x80, 0xc8, 0xba, 0xc4, 0x2f, 0x43, 0x78, - 0x4a, 0xd9, 0x02, 0x21, 0x00, 0x99, 0x00, 0x98, 0x1c, 0xbc, 0x68, 0xae, - 0xb0, 0x6d, 0x3e, 0xa9, 0x11, 0x94, 0x8d, 0x63, 0x11, 0xd6, 0xf6, 0x94, - 0x40, 0x3a, 0xbb, 0xbb, 0x65, 0x9e, 0x5a, 0xf5, 0x2b, 0xf3, 0x2e, 0x33, - 0xc4}; +#if defined(TREZOR_MODEL_R) +#include "certs/T2B1.h" +#define DEVICE_CERT_CHAIN T2B1_der +#elif defined(TREZOR_MODEL_T3T1) +#include "certs/T3T1.h" +#define DEVICE_CERT_CHAIN T3T1_der +#else +#error "Cert chain for specified model is not available." +#endif int optiga_sign(uint8_t index, const uint8_t *digest, size_t digest_size, uint8_t *signature, size_t max_sig_size, size_t *sig_size) { diff --git a/core/site_scons/models/T3T1/emulator.py b/core/site_scons/models/T3T1/emulator.py index fa5400b536..b2ba96833d 100644 --- a/core/site_scons/models/T3T1/emulator.py +++ b/core/site_scons/models/T3T1/emulator.py @@ -57,6 +57,7 @@ def configure( if "optiga" in features_wanted: sources += ["embed/trezorhal/unix/optiga.c"] + features_available.append("optiga") if "input" in features_wanted: sources += ["embed/trezorhal/unix/touch.c"] diff --git a/tests/device_tests/test_authenticate_device.py b/tests/device_tests/test_authenticate_device.py index 4db77708ba..519c45a1d9 100644 --- a/tests/device_tests/test_authenticate_device.py +++ b/tests/device_tests/test_authenticate_device.py @@ -4,19 +4,23 @@ from cryptography.hazmat.primitives.asymmetric import ec from cryptography.x509 import extensions as ext -from trezorlib import device +from trezorlib import device, models from trezorlib.debuglink import TrezorClientDebugLink as Client from ..common import compact_size pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2t1] -ROOT_PUBLIC_KEY = bytes.fromhex( - "047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a" -) +ROOT_PUBLIC_KEY = { + models.T2B1: bytes.fromhex( + "047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a" + ), + models.T3T1: bytes.fromhex( + "04e48b69cd7962068d3cca3bcc6b1747ef496c1e28b5529e34ad7295215ea161dbe8fb08ae0479568f9d2cb07630cb3e52f4af0692102da5873559e45e9fa72959" + ), +} -@pytest.mark.skip_t3t1 # FIXME https://github.com/trezor/trezor-firmware/issues/3596 @pytest.mark.parametrize( "challenge", ( @@ -37,7 +41,7 @@ def test_authenticate_device(client: Client, challenge: bytes) -> None: # Verify the last certificate in the certificate chain against trust anchor. root_public_key = ec.EllipticCurvePublicKey.from_encoded_point( - ec.SECP256R1(), ROOT_PUBLIC_KEY + ec.SECP256R1(), ROOT_PUBLIC_KEY[client.model] ) root_public_key.verify( certs[-1].signature, diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index bf9bf85671..a0563b6b13 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -16998,6 +16998,10 @@ "T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2480e92bb23741957a33c55727e1107c89c3161e919eeac7ac571833927030aa", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "f49ef66e4f6bb867a23a5ae8ec6442bb2ad3ac91ba10cb07dbb5edd9bad8d258", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "2301f38538123cb20a4688800cf60635173f8f4465577d68a89f012aa41b6a2b", +"T3T1_cs_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "5b819bf081463e339f3dc0754f84b8d69b1a8155378d6a1ef4f206b37bfe1eff", +"T3T1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "5b819bf081463e339f3dc0754f84b8d69b1a8155378d6a1ef4f206b37bfe1eff", +"T3T1_cs_test_authenticate_device.py::test_authenticate_device[]": "5b819bf081463e339f3dc0754f84b8d69b1a8155378d6a1ef4f206b37bfe1eff", +"T3T1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "5b819bf081463e339f3dc0754f84b8d69b1a8155378d6a1ef4f206b37bfe1eff", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "10861ca732e29baa2598872f1281dcf03009939a2f5babde882d975fc11820c8", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", "T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", @@ -18362,6 +18366,10 @@ "T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "4eca37db90b32012f390115dcbbbf154dea6785d6ac39a32378b048e5e106302", "T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e55a9c9bc7648ece67e5f2da1196f09745338d5c77c6cc957bd5b4b482a4c9ab", "T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "f6df1471a998bfcff8920accfd4bc0949d9bb86109c50b1a191c9a88dc6052b1", +"T3T1_de_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "76ffd01c81f0cfcf46c169ec9a6ce2a75024ed186be929b2d365494a54602e09", +"T3T1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "76ffd01c81f0cfcf46c169ec9a6ce2a75024ed186be929b2d365494a54602e09", +"T3T1_de_test_authenticate_device.py::test_authenticate_device[]": "76ffd01c81f0cfcf46c169ec9a6ce2a75024ed186be929b2d365494a54602e09", +"T3T1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "76ffd01c81f0cfcf46c169ec9a6ce2a75024ed186be929b2d365494a54602e09", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "c3fb7e8e0bf81b89cd6badc79dc13a55345de491daaf6f093ed9c567ce196f64", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", "T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", @@ -19726,6 +19734,10 @@ "T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "d5e2ff9126931e6be96ca37160cf2c49315598181b586e52645b919a874d2303", "T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "dff608ce1e062b82c7acea1f69b17cf5d658a0c890c496bff83ecbeac9ab9493", "T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "d5102f43eca35b66ed3dbd99c6d6dd8bb7a63d01ba85ca9cf3f5843143c99d35", +"T3T1_en_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "1a60f93e249861e97de0d5bbac6b3d0712bdfed93be0265172dd0f75b1268681", +"T3T1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "1a60f93e249861e97de0d5bbac6b3d0712bdfed93be0265172dd0f75b1268681", +"T3T1_en_test_authenticate_device.py::test_authenticate_device[]": "1a60f93e249861e97de0d5bbac6b3d0712bdfed93be0265172dd0f75b1268681", +"T3T1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "1a60f93e249861e97de0d5bbac6b3d0712bdfed93be0265172dd0f75b1268681", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "13e2eb2a974686f59cf552ec3cac9e889772b05f772b80dc1eadf3e815305da2", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", "T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", @@ -21090,6 +21102,10 @@ "T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "b510d27178903d732a757c21710916e67e28819f4e985aa6fe82c6c95cb9018f", "T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "a28f6b3e3e2850718047f29b64cbe66f528ac59b925fdafc20bc16eb4ca29e41", "T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "6a63d2376341c8892d5cdaa7d85a3adaecd48161de82d85595b9650c2d0b714a", +"T3T1_es_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "2222f68a64f0c3ce247e36e145bbcb6065ac0873fbc9fc66cfc541df141fdae4", +"T3T1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "2222f68a64f0c3ce247e36e145bbcb6065ac0873fbc9fc66cfc541df141fdae4", +"T3T1_es_test_authenticate_device.py::test_authenticate_device[]": "2222f68a64f0c3ce247e36e145bbcb6065ac0873fbc9fc66cfc541df141fdae4", +"T3T1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "2222f68a64f0c3ce247e36e145bbcb6065ac0873fbc9fc66cfc541df141fdae4", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "d9ebe7756ab918a916a7ea21f966ffc7d93481a4e05e9188a3ca3172cdbc8407", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", "T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", @@ -22454,6 +22470,10 @@ "T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "c90a598b899bb8b4185c1dcca9a4b292b8c3e308aafb2eecce39aa1ff2f56658", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "0ed58a40aa061ec895a923c5cc3c98fc9d9230818038ebee3cf9ba4b21f045d0", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8469e1292faff89db8a0a10f923c5ab94f5594fb30fd8fd8e5e615b7b2864c99", +"T3T1_fr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "919aab5d554f644b77fa391ade84093719e1a2835bda15af0470813ea75c3e1a", +"T3T1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "919aab5d554f644b77fa391ade84093719e1a2835bda15af0470813ea75c3e1a", +"T3T1_fr_test_authenticate_device.py::test_authenticate_device[]": "919aab5d554f644b77fa391ade84093719e1a2835bda15af0470813ea75c3e1a", +"T3T1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "919aab5d554f644b77fa391ade84093719e1a2835bda15af0470813ea75c3e1a", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "7cdfb0607eca40cbc6ea696491ea4afd8f244a6eac57abb7acbdb2ba8c7bd38c", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", diff --git a/tools/snippets/README.md b/tools/snippets/README.md index 11119d52a1..c0d093f7f0 100644 --- a/tools/snippets/README.md +++ b/tools/snippets/README.md @@ -21,3 +21,8 @@ These scripts do not need to have a high standard, but each of those should have ## [eth_defs_unpack.py](./eth_defs_unpack.py) - Unpacks the definitions from a `definitions-sparse.zip` that does not contain the Merkle proofs for space-saving. This format is not currently distributed. + +## [recalc_optiga_for_emulator.py](./recalc_optiga_for_emulator.py) +- Takes a valid Infineon certificate from an Optiga and replaces its public key with + a pubkey for private key 0x01000000..., so that the staging HSM can sign the resulting + certificate. diff --git a/tools/snippets/recalc_optiga_for_emulator.py b/tools/snippets/recalc_optiga_for_emulator.py new file mode 100644 index 0000000000..95345781b8 --- /dev/null +++ b/tools/snippets/recalc_optiga_for_emulator.py @@ -0,0 +1,50 @@ +import sys +from pathlib import Path + +from pyasn1.codec.der.encoder import encode +from pyasn1.codec.der.decoder import decode +from pyasn1.type.univ import BitString +from pyasn1_modules import rfc2459 +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import ec + + +def load_certificate(data: bytes): + return decode(data, asn1Spec=rfc2459.Certificate())[0] + + +def save_certificate(certificate) -> bytes: + return encode(certificate) + + +def calculate_ecdsa_public_key(): + privkey_bytes = b"\x01" + b"\x00" * 31 + private_key = ec.derive_private_key( + int.from_bytes(privkey_bytes, "big"), ec.SECP256R1() + ) + + return private_key.public_key() + + +def replace_public_key(certificate, public_key): + public_key_bytes = public_key.public_bytes( + encoding=serialization.Encoding.X962, + format=serialization.PublicFormat.UncompressedPoint, + ) + certificate["tbsCertificate"]["subjectPublicKeyInfo"]["subjectPublicKey"] = ( + BitString(hexValue=public_key_bytes.hex()) + ) + + +def main(): + in_cert = Path(sys.argv[1]) + certificate = load_certificate(in_cert.read_bytes()) + public_key = calculate_ecdsa_public_key() + replace_public_key(certificate, public_key) + updated_cert = save_certificate(certificate) + out_cert = Path(sys.argv[2]) + out_cert.write_bytes(updated_cert) + + +if __name__ == "__main__": + main() From d3bdedf421fb09eb54c55a6237108b78226b20e5 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 8 Dec 2023 12:32:23 +0100 Subject: [PATCH 338/626] feat(python): implement full certificate verification in trezorctl (fixes #3364) --- python/.changelog.d/3364.added | 1 + python/requirements-optional.txt | 1 + python/setup.py | 1 + python/src/trezorlib/authentication.py | 383 +++++++++++++++++++++++++ python/src/trezorlib/cli/device.py | 94 +++++- 5 files changed, 471 insertions(+), 9 deletions(-) create mode 100644 python/.changelog.d/3364.added create mode 100644 python/src/trezorlib/authentication.py diff --git a/python/.changelog.d/3364.added b/python/.changelog.d/3364.added new file mode 100644 index 0000000000..46f1be3711 --- /dev/null +++ b/python/.changelog.d/3364.added @@ -0,0 +1 @@ +trezorctl: support for human-friendly Trezor Safe device authenticity check (requires separate installation of `cryptography` library). diff --git a/python/requirements-optional.txt b/python/requirements-optional.txt index f5e08485e9..a016c7b428 100644 --- a/python/requirements-optional.txt +++ b/python/requirements-optional.txt @@ -3,3 +3,4 @@ web3>=5 Pillow>=10 stellar-sdk>=6 rlp>=1.1.0 ; python_version<'3.7' +cryptography>=41 diff --git a/python/setup.py b/python/setup.py index ccb7b0ac05..64ea79097b 100755 --- a/python/setup.py +++ b/python/setup.py @@ -31,6 +31,7 @@ "qt-widgets": ["PyQt5"], "extra": ["Pillow>=10"], "stellar": ["stellar-sdk>=6"], + "authentication": ["cryptography>=41"], } extras_require["full"] = sum(extras_require.values(), []) diff --git a/python/src/trezorlib/authentication.py b/python/src/trezorlib/authentication.py new file mode 100644 index 0000000000..39e26f569f --- /dev/null +++ b/python/src/trezorlib/authentication.py @@ -0,0 +1,383 @@ +from __future__ import annotations + +import io +import logging +import secrets +import typing as t +from importlib import metadata + +from . import device +from .client import TrezorClient + +try: + cryptography_version = metadata.version("cryptography") + vsplit = [int(x) for x in cryptography_version.split(".")] + if vsplit[0] < 41: + raise ImportError( + "cryptography>=41 is required for this module, " + f"found cryptography=={cryptography_version}" + ) +except ImportError as e: + raise ImportError("cryptography>=41 is required for this module") from e + +from cryptography import exceptions, x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.asymmetric import ec, utils + +LOG = logging.getLogger(__name__) + + +def _pk_p256(pubkey_hex: str) -> ec.EllipticCurvePublicKey: + return ec.EllipticCurvePublicKey.from_encoded_point( + ec.SECP256R1(), bytes.fromhex(pubkey_hex) + ) + + +CHALLENGE_HEADER = b"AuthenticateDevice:" + + +class RootCertificate(t.NamedTuple): + name: str + device: str + devel: bool + pubkey: ec.EllipticCurvePublicKey + + +ROOT_PUBLIC_KEYS = [ + RootCertificate( + "Trezor Company", + "Trezor Safe 3", + False, + _pk_p256( + "04ca97480ac0d7b1e6efafe518cd433cec2bf8ab9822d76eafd34363b55d63e60" + "380bff20acc75cde03cffcb50ab6f8ce70c878e37ebc58ff7cca0a83b16b15fa5" + ), + ), + RootCertificate( + "Trezor Company", + "Trezor Safe 5", + False, + _pk_p256( + "041854b27fb1d9f65abb66828e78c9dc0ca301e66081ab0c6a4d104f9df1cd0ad" + "5a7c75f77a8c092f55cf825d2abaf734f934c9394d5e75f75a5a06a5ee9be93ae" + ), + ), + RootCertificate( + "TESTING ENVIRONMENT. DO NOT USE THIS DEVICE", + "Trezor Safe 3", + True, + _pk_p256( + "047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c" + "4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a" + ), + ), + RootCertificate( + "TESTING ENVIRONMENT. DO NOT USE THIS DEVICE", + "Trezor Safe 5", + True, + _pk_p256( + "04e48b69cd7962068d3cca3bcc6b1747ef496c1e28b5529e34ad7295215ea161d" + "be8fb08ae0479568f9d2cb07630cb3e52f4af0692102da5873559e45e9fa72959" + ), + ), +] + + +class DeviceNotAuthentic(Exception): + pass + + +class Certificate: + def __init__(self, cert_bytes: bytes) -> None: + self.cert_bytes = cert_bytes + self.cert = x509.load_der_x509_certificate(cert_bytes) + + def __str__(self) -> str: + return self.cert.subject.rfc4514_string() + + def public_key_bytes(self) -> bytes: + return self.cert.public_key().public_bytes( + serialization.Encoding.X962, + serialization.PublicFormat.UncompressedPoint, + ) + + def verify(self, signature: bytes, message: bytes) -> None: + cert_pubkey = self.cert.public_key() + assert isinstance(cert_pubkey, ec.EllipticCurvePublicKey) + cert_pubkey.verify( + self.fix_signature(signature), + message, + ec.ECDSA(hashes.SHA256()), + ) + + def verify_by(self, pubkey: ec.EllipticCurvePublicKey) -> None: + algo_params = self.cert.signature_algorithm_parameters + assert isinstance(algo_params, ec.ECDSA) + pubkey.verify( + self.fix_signature(self.cert.signature), + self.cert.tbs_certificate_bytes, + algo_params, + ) + + def _check_ca_extensions(self) -> bool: + """Check that this certificate is a valid Trezor CA. + + KeyUsage must be present and allow certificate signing. + BasicConstraints must be present, have the cA flag and a pathLenConstraint. + + Any unrecognized non-critical extension is allowed. Any unrecognized critical + extension is disallowed. + """ + missing_extension_classes = {x509.KeyUsage, x509.BasicConstraints} + passed = True + + for ext in self.cert.extensions: + missing_extension_classes.discard(type(ext.value)) + + if isinstance(ext.value, x509.KeyUsage): + if not ext.value.key_cert_sign: + LOG.error( + "Not a valid CA certificate: %s (keyCertSign not set)", self + ) + passed = False + + elif isinstance(ext.value, x509.BasicConstraints): + if not ext.value.ca: + LOG.error("Not a valid CA certificate: %s (cA not set)", self) + passed = False + if ext.value.path_length is None: + LOG.error( + "Not a valid CA certificate: %s (pathLenConstraint missing)", + self, + ) + passed = False + + elif ext.critical: + LOG.error( + "Unknown critical extension %s in CA certificate: %s", + self, + type(ext.value).__name__, + ) + passed = False + + for ext in missing_extension_classes: + LOG.error("Missing extension %s in CA certificate: %s", ext.__name__, self) + passed = False + + return passed + + def is_issued_by(self, issuer: "Certificate", path_len: int) -> bool: + """Check if this certificate was issued by an issuer. + + Returns True if: + * our `issuer` is the same as issuer's `subject`, + * the issuer is a valid CA, that is: + - has the cA flag set + - has a valid pathLenConstraint + - pathLenConstraint does not exceed the current path length. + * the issuer's public key signs this certificate. + """ + if issuer.cert.subject != self.cert.issuer: + LOG.error("Certificate %s is not issued by %s.", self, issuer) + return False + + if not issuer._check_ca_extensions(): + return False + + basic_constraints = issuer.cert.extensions.get_extension_for_class( + x509.BasicConstraints + ).value + assert basic_constraints.path_length is not None # check_ca_extensions + if basic_constraints.path_length < path_len: + LOG.error( + "Issuer %s was not permitted to issue certificate %s", issuer, self + ) + return False + + try: + pubkey = issuer.cert.public_key() + assert isinstance(pubkey, ec.EllipticCurvePublicKey) + self.verify_by(pubkey) + return True + except exceptions.InvalidSignature: + LOG.error("Issuer %s did not sign certificate %s.", issuer, self) + + return False + + @staticmethod + def _decode_signature_permissive(sig_bytes: bytes) -> tuple[int, int]: + if len(sig_bytes) > 73: + raise ValueError("Unsupported DER signature: too long.") + + reader = io.BytesIO(sig_bytes) + tag = reader.read(1) + if tag != b"\x30": + raise ValueError("Invalid DER signature: not a sequence.") + length = reader.read(1)[0] + if length != len(sig_bytes) - 2: + raise ValueError("Invalid DER signature: invalid length.") + + def read_int() -> int: + tag = reader.read(1) + if tag != b"\x02": + raise ValueError("Invalid DER signature: not an integer.") + length = reader.read(1)[0] + if length > 33: + raise ValueError("Invalid DER signature: integer too long.") + return int.from_bytes(reader.read(length), "big") + + r = read_int() + s = read_int() + if reader.tell() != len(sig_bytes): + raise ValueError("Invalid DER signature: trailing data.") + return r, s + + @staticmethod + def fix_signature(sig_bytes: bytes) -> bytes: + r, s = Certificate._decode_signature_permissive(sig_bytes) + reencoded = utils.encode_dss_signature(r, s) + if reencoded != sig_bytes: + LOG.info( + "Re-encoding malformed signature: %s -> %s", + sig_bytes.hex(), + reencoded.hex(), + ) + return reencoded + + +def verify_authentication_response( + challenge: bytes, + signature: bytes, + cert_chain: t.Iterable[bytes], + *, + whitelist: t.Collection[bytes] | None, + allow_development_devices: bool = False, + root_pubkey: bytes | ec.EllipticCurvePublicKey | None = None, +) -> None: + """Evaluate the response to an AuthenticateDevice call. + + Performs all steps and logs their results via the logging facility. (The log can be + accessed via the `LOG` object in this module.) + + When done, raises DeviceNotAuthentic if the device is not authentic. + + The optional argument `root_pubkey` allows you to specify a root public key either + as an `ec.EllipticCurvePublicKey` object or as a byte-string representing P-256 + public key. + """ + if isinstance(root_pubkey, (bytes, bytearray, memoryview)): + root_pubkey = ec.EllipticCurvePublicKey.from_encoded_point( + ec.SECP256R1(), root_pubkey + ) + + challenge_bytes = ( + len(CHALLENGE_HEADER).to_bytes(1, "big") + + CHALLENGE_HEADER + + len(challenge).to_bytes(1, "big") + + challenge + ) + + cert_chain_iter = iter(cert_chain) + + failed = False + + try: + cert = Certificate(next(cert_chain_iter)) + except Exception: + LOG.error("Failed to parse device certificate.") + raise DeviceNotAuthentic + + try: + cert.verify(signature, challenge_bytes) + except exceptions.InvalidSignature: + LOG.error("Challenge verification failed.") + failed = True + else: + LOG.debug("Challenge verified successfully.") + + cert_label = "Device certificate" + for i, issuer_bytes in enumerate(cert_chain_iter, 1): + try: + ca_cert = Certificate(issuer_bytes) + except Exception: + LOG.error(f"Failed to parse CA certificate #{i}.") + failed = True + continue + + if whitelist is None: + LOG.warning("Skipping public key whitelist check.") + else: + if ca_cert.public_key_bytes() not in whitelist: + LOG.error(f"CA certificate #{i} not in whitelist: %s", ca_cert) + failed = True + + if not cert.is_issued_by(ca_cert, i - 1): + failed = True + else: + LOG.debug(f"{cert_label} verified successfully: %s", cert) + + cert = ca_cert + cert_label = f"CA #{i} certificate" + + if root_pubkey is not None: + try: + cert.verify_by(root_pubkey) + except Exception: + LOG.error(f"{cert_label} was not issued by the specified root.") + failed = True + else: + LOG.info(f"{cert_label} was issued by the specified root.") + + else: + for root in ROOT_PUBLIC_KEYS: + try: + cert.verify_by(root.pubkey) + except Exception: + continue + else: + LOG.debug(f"{cert_label} verified successfully: %s", cert) + + if root.devel: + if not allow_development_devices: + level = logging.ERROR + failed = True + else: + level = logging.WARNING + else: + level = logging.DEBUG + LOG.log( + level, + "Successfully verified a %s manufactured by %s.", + root.device, + root.name, + ) + break + else: + LOG.error(f"{cert_label} was issued by an unknown root.") + failed = True + + if failed: + raise DeviceNotAuthentic + + +def authenticate_device( + client: TrezorClient, + challenge: bytes | None = None, + *, + whitelist: t.Collection[bytes] | None = None, + allow_development_devices: bool = False, + root_pubkey: bytes | ec.EllipticCurvePublicKey | None = None, +) -> None: + if challenge is None: + challenge = secrets.token_bytes(16) + + resp = device.authenticate(client, challenge) + + return verify_authentication_response( + challenge, + resp.signature, + resp.certificates, + whitelist=whitelist, + allow_development_devices=allow_development_devices, + root_pubkey=root_pubkey, + ) diff --git a/python/src/trezorlib/cli/device.py b/python/src/trezorlib/cli/device.py index 15b5c36274..59ac4fa855 100644 --- a/python/src/trezorlib/cli/device.py +++ b/python/src/trezorlib/cli/device.py @@ -14,9 +14,10 @@ # You should have received a copy of the License along with this library. # If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. +import logging import secrets import sys -from typing import TYPE_CHECKING, Optional, Sequence, Tuple +from typing import TYPE_CHECKING, BinaryIO, Optional, Sequence, Tuple import click @@ -46,6 +47,8 @@ "refresh": messages.SdProtectOperationType.REFRESH, } +LOG = logging.getLogger(__name__) + @click.group(name="device") def cli() -> None: @@ -347,15 +350,88 @@ def set_busy( @cli.command() @click.argument("hex_challenge", required=False) +@click.option("-R", "--root", type=click.File("rb"), help="Custom root certificate.") +@click.option( + "-r", "--raw", is_flag=True, help="Print raw cryptographic data and exit." +) +@click.option( + "-s", + "--skip-whitelist", + is_flag=True, + help="Do not check intermediate certificates against the whitelist.", +) @with_client -def authenticate(client: "TrezorClient", hex_challenge: Optional[str]) -> None: - """Get information to verify the authenticity of the device.""" +def authenticate( + client: "TrezorClient", + hex_challenge: Optional[str], + root: Optional[BinaryIO], + raw: Optional[bool], + skip_whitelist: Optional[bool], +) -> None: + """Verify the authenticity of the device. + + Use the --raw option to get the raw challenge, signature, and certificate data. + + Otherwise, trezorctl will attempt to decode the signatures and check their + authenticity. By default, it will also check the public keys against a built-in + whitelist, and in the future also against a whitelist downloaded from Trezor + servers. You can skip this check with the --skip-whitelist option. + + \b + When not using --raw, 'cryptography' library is required. You can install it via: + pip3 install trezor[authentication] + """ if hex_challenge is None: hex_challenge = secrets.token_hex(32) - click.echo(f"Challenge: {hex_challenge}") + challenge = bytes.fromhex(hex_challenge) - msg = device.authenticate(client, challenge) - click.echo(f"Signature of challenge: {msg.signature.hex()}") - click.echo(f"Device certificate: {msg.certificates[0].hex()}") - for cert in msg.certificates[1:]: - click.echo(f"CA certificate: {cert.hex()}") + + if raw: + msg = device.authenticate(client, challenge) + + click.echo(f"Challenge: {hex_challenge}") + click.echo(f"Signature of challenge: {msg.signature.hex()}") + click.echo(f"Device certificate: {msg.certificates[0].hex()}") + for cert in msg.certificates[1:]: + click.echo(f"CA certificate: {cert.hex()}") + return + + try: + from .. import authentication + except ImportError as e: + click.echo("Failed to import the authentication module.") + click.echo(f"Error: {e}") + click.echo("Make sure you have the required dependencies:") + click.echo(" pip3 install trezor[authentication]") + sys.exit(4) + + if root is not None: + root_bytes = root.read() + else: + root_bytes = None + + class ColoredFormatter(logging.Formatter): + LEVELS = { + logging.ERROR: click.style("ERROR", fg="red"), + logging.WARNING: click.style("WARNING", fg="yellow"), + logging.INFO: click.style("INFO", fg="blue"), + logging.DEBUG: click.style("OK", fg="green"), + } + + def format(self, record: logging.LogRecord) -> str: + prefix = self.LEVELS[record.levelno] + bold_args = tuple( + click.style(str(arg), bold=True) for arg in record.args or () + ) + return f"[{prefix}] {record.msg}" % bold_args + + handler = logging.StreamHandler() + handler.setFormatter(ColoredFormatter()) + authentication.LOG.addHandler(handler) + authentication.LOG.setLevel(logging.DEBUG) + + try: + authentication.authenticate_device(client, challenge, root_pubkey=root_bytes) + except authentication.DeviceNotAuthentic: + click.echo("Device is not authentic.") + sys.exit(5) From f6924c1ad491f0caaa422f6a62d80454dc075374 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 20 Jun 2024 15:26:33 +0200 Subject: [PATCH 339/626] feat(python): add certificate whitelist for device authentication --- python/src/trezorlib/cli/device.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/python/src/trezorlib/cli/device.py b/python/src/trezorlib/cli/device.py index 59ac4fa855..de45fd82ca 100644 --- a/python/src/trezorlib/cli/device.py +++ b/python/src/trezorlib/cli/device.py @@ -20,6 +20,7 @@ from typing import TYPE_CHECKING, BinaryIO, Optional, Sequence, Tuple import click +import requests from .. import debuglink, device, exceptions, messages, ui from . import ChoiceType, with_client @@ -348,6 +349,11 @@ def set_busy( return device.set_busy(client, expiry * 1000) +PUBKEY_WHITELIST_URL_TEMPLATE = ( + "https://data.trezor.io/firmware/{model}/authenticity.json" +) + + @cli.command() @click.argument("hex_challenge", required=False) @click.option("-R", "--root", type=click.File("rb"), help="Custom root certificate.") @@ -373,9 +379,9 @@ def authenticate( Use the --raw option to get the raw challenge, signature, and certificate data. Otherwise, trezorctl will attempt to decode the signatures and check their - authenticity. By default, it will also check the public keys against a built-in - whitelist, and in the future also against a whitelist downloaded from Trezor - servers. You can skip this check with the --skip-whitelist option. + authenticity. By default, it will also check the public keys against a whitelist + downloaded from Trezor servers. You can skip this check with the --skip-whitelist + option. \b When not using --raw, 'cryptography' library is required. You can install it via: @@ -430,8 +436,20 @@ def format(self, record: logging.LogRecord) -> str: authentication.LOG.addHandler(handler) authentication.LOG.setLevel(logging.DEBUG) + if skip_whitelist: + whitelist = None + else: + whitelist_json = requests.get( + PUBKEY_WHITELIST_URL_TEMPLATE.format( + model=client.model.internal_name.lower() + ) + ).json() + whitelist = [bytes.fromhex(pk) for pk in whitelist_json["ca_pubkeys"]] + try: - authentication.authenticate_device(client, challenge, root_pubkey=root_bytes) + authentication.authenticate_device( + client, challenge, root_pubkey=root_bytes, whitelist=whitelist + ) except authentication.DeviceNotAuthentic: click.echo("Device is not authentic.") sys.exit(5) From 6338ba994ac2312cd7bf694487491c9c04e21a33 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 25 Jun 2024 13:33:20 +0200 Subject: [PATCH 340/626] docs(core): update Optiga-related changelogs --- core/.changelog.d/+optiga.added | 1 + core/.changelog.d/+optiga.fixed | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 core/.changelog.d/+optiga.added diff --git a/core/.changelog.d/+optiga.added b/core/.changelog.d/+optiga.added new file mode 100644 index 0000000000..365be66461 --- /dev/null +++ b/core/.changelog.d/+optiga.added @@ -0,0 +1 @@ +Expose value of the Optiga SEC counter in `Features` message. diff --git a/core/.changelog.d/+optiga.fixed b/core/.changelog.d/+optiga.fixed index 6bb8d93502..4c6800e516 100644 --- a/core/.changelog.d/+optiga.fixed +++ b/core/.changelog.d/+optiga.fixed @@ -1 +1 @@ -Fix Optiga-related RSODs +Increase Optiga read timeout to avoid spurious RSODs. From 0fc193ab80d07cb08f564680aa390064ec3bc868 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 12 Jun 2024 11:50:41 +0200 Subject: [PATCH 341/626] fix(python): increase homescreen quality when uploading via trezorctl fixes #3893 --- python/.changelog.d/3893.added | 1 + python/.changelog.d/3893.changed | 1 + python/src/trezorlib/cli/settings.py | 9 +++++---- 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 python/.changelog.d/3893.added create mode 100644 python/.changelog.d/3893.changed diff --git a/python/.changelog.d/3893.added b/python/.changelog.d/3893.added new file mode 100644 index 0000000000..a177ebc672 --- /dev/null +++ b/python/.changelog.d/3893.added @@ -0,0 +1 @@ +Added `--quality` argument to `trezorctl set homescreen`. diff --git a/python/.changelog.d/3893.changed b/python/.changelog.d/3893.changed new file mode 100644 index 0000000000..ace7ea4671 --- /dev/null +++ b/python/.changelog.d/3893.changed @@ -0,0 +1 @@ +Increased default JPEG quality for uploaded homescreen. diff --git a/python/src/trezorlib/cli/settings.py b/python/src/trezorlib/cli/settings.py index 276bcdc6d7..01e9ca68f1 100644 --- a/python/src/trezorlib/cli/settings.py +++ b/python/src/trezorlib/cli/settings.py @@ -117,7 +117,7 @@ def image_to_toif(filename: Path, width: int, height: int, greyscale: bool) -> b return toif_image.to_bytes() -def image_to_jpeg(filename: Path, width: int, height: int) -> bytes: +def image_to_jpeg(filename: Path, width: int, height: int, quality: int = 90) -> bytes: if filename.suffix in (".jpg", ".jpeg") and not PIL_AVAILABLE: click.echo("Warning: Image library is missing, skipping image validation.") return filename.read_bytes() @@ -147,7 +147,7 @@ def image_to_jpeg(filename: Path, width: int, height: int) -> bytes: image = image.convert("RGB") buf = io.BytesIO() - image.save(buf, format="jpeg", progressive=False) + image.save(buf, format="jpeg", progressive=False, quality=quality) return buf.getvalue() @@ -307,8 +307,9 @@ def flags(client: "TrezorClient", flags: str) -> str: @click.option( "-f", "--filename", "_ignore", is_flag=True, hidden=True, expose_value=False ) +@click.option("-q", "--quality", type=int, default=90, help="JPEG quality (0-100)") @with_client -def homescreen(client: "TrezorClient", filename: str) -> str: +def homescreen(client: "TrezorClient", filename: str, quality: int) -> str: """Set new homescreen. To revert to default homescreen, use 'trezorctl set homescreen default' @@ -334,7 +335,7 @@ def homescreen(client: "TrezorClient", filename: str) -> str: if client.features.homescreen_height is not None else 240 ) - img = image_to_jpeg(path, width, height) + img = image_to_jpeg(path, width, height, quality) elif client.features.homescreen_format == messages.HomescreenFormat.ToiG: width = client.features.homescreen_width height = client.features.homescreen_height From eaeb58fb253e3db34df649da5dc3d206156042d6 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 12 Jun 2024 12:08:07 +0200 Subject: [PATCH 342/626] chore(python): annotate package with minimum python 3.8 also add 3.12 to tox config --- common/tools/README.md | 2 +- docs/legacy/index.md | 2 +- python/.changelog.d/+0596394e.incompatible | 1 + python/README.md | 2 +- python/requirements-optional.txt | 1 - python/requirements.txt | 3 +-- python/setup.py | 4 ++-- 7 files changed, 7 insertions(+), 8 deletions(-) create mode 100644 python/.changelog.d/+0596394e.incompatible diff --git a/common/tools/README.md b/common/tools/README.md index b0cf350e4f..748fc1f8a9 100644 --- a/common/tools/README.md +++ b/common/tools/README.md @@ -5,7 +5,7 @@ This directory contains mostly tools that can manipulate definitions in [defs/]( Tools are written with [Click](http://click.pocoo.org/6/), so you always get a help text if you use the `--help` option. -All tools require Python 3.6 or higher and a bunch of dependencies, listed in `requirements.txt`. +All tools require Python 3.8 or higher and a bunch of dependencies, listed in `requirements.txt`. You can install them all with `pip3 install -r requirements.txt`. ## Tools overview diff --git a/docs/legacy/index.md b/docs/legacy/index.md index 48ae4c0e4c..db7c6bd737 100644 --- a/docs/legacy/index.md +++ b/docs/legacy/index.md @@ -38,7 +38,7 @@ For firmwares older than 1.8.1, please clone the archived [trezor-mcu](https://g ## Local development build -Make sure you have Python 3.6 or later and [Poetry](https://python-poetry.org/) +Make sure you have Python 3.8 or later and [Poetry](https://python-poetry.org/) installed. If you want to build device firmware, also make sure that you have the [GNU ARM Embedded toolchain](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads) installed. diff --git a/python/.changelog.d/+0596394e.incompatible b/python/.changelog.d/+0596394e.incompatible new file mode 100644 index 0000000000..231e9a3cdc --- /dev/null +++ b/python/.changelog.d/+0596394e.incompatible @@ -0,0 +1 @@ +Minimum required Python version is now 3.8. diff --git a/python/README.md b/python/README.md index 8390c2adf2..e2e8043ae8 100644 --- a/python/README.md +++ b/python/README.md @@ -9,7 +9,7 @@ See <https://trezor.io> for more information. ## Install -Python Trezor tools require Python 3.6 or higher, and libusb 1.0. The easiest +Python Trezor tools require Python 3.8 or higher, and libusb 1.0. The easiest way to install it is with `pip`. The rest of this guide assumes you have a working `pip`; if not, you can refer to [this guide](https://packaging.python.org/tutorials/installing-packages/). diff --git a/python/requirements-optional.txt b/python/requirements-optional.txt index a016c7b428..2b9a06c415 100644 --- a/python/requirements-optional.txt +++ b/python/requirements-optional.txt @@ -2,5 +2,4 @@ hidapi>=0.7.99.post20 web3>=5 Pillow>=10 stellar-sdk>=6 -rlp>=1.1.0 ; python_version<'3.7' cryptography>=41 diff --git a/python/requirements.txt b/python/requirements.txt index b0712b3e2d..440bc2a2be 100644 --- a/python/requirements.txt +++ b/python/requirements.txt @@ -4,6 +4,5 @@ requests>=2.4.0 click>=7,<8.2 libusb1>=1.6.4 construct>=2.9,!=2.10.55 -typing_extensions>=3.10 -dataclasses ; python_version<'3.7' +typing_extensions>=4.7.1 construct-classes>=0.1.2 diff --git a/python/setup.py b/python/setup.py index 64ea79097b..05a36a877d 100755 --- a/python/setup.py +++ b/python/setup.py @@ -27,7 +27,7 @@ extras_require = { "hidapi": ["hidapi>=0.7.99.post20"], - "ethereum": ["rlp>=1.1.0 ; python_version<'3.7'", "web3>=5"], + "ethereum": ["web3>=5"], "qt-widgets": ["PyQt5"], "extra": ["Pillow>=10"], "stellar": ["stellar-sdk>=6"], @@ -64,7 +64,7 @@ def find_version(): entry_points={"console_scripts": ["trezorctl=trezorlib.cli.trezorctl:cli"]}, install_requires=install_requires, extras_require=extras_require, - python_requires=">=3.6", + python_requires=">=3.8", include_package_data=True, zip_safe=False, classifiers=[ From 27fef37cc930a31120b46871033a6755182e374f Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 12 Jun 2024 14:11:53 +0200 Subject: [PATCH 343/626] style(python): modernize type annotations in protobuf.py --- python/src/trezorlib/protobuf.py | 56 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/python/src/trezorlib/protobuf.py b/python/src/trezorlib/protobuf.py index f0d407191a..be4050616b 100644 --- a/python/src/trezorlib/protobuf.py +++ b/python/src/trezorlib/protobuf.py @@ -22,23 +22,25 @@ For serializing (dumping) protobuf types, object with `Writer` interface is required. """ +from __future__ import annotations + import logging import warnings from dataclasses import dataclass from enum import IntEnum from io import BytesIO from itertools import zip_longest -from typing import Any, Dict, List, Optional, Tuple, Type, TypeVar, Union +import typing as t -from typing_extensions import Protocol, TypeGuard +import typing_extensions as tx -T = TypeVar("T", bound=type) -MT = TypeVar("MT", bound="MessageType") +T = t.TypeVar("T", bound=type) +MT = t.TypeVar("MT", bound="MessageType") MAX_FIELD_SIZE = 1024 * 1024 # 1 MB -class Reader(Protocol): +class Reader(tx.Protocol): def readinto(self, __buf: bytearray) -> int: """ Reads exactly `len(buffer)` bytes into `buffer`. Returns number of bytes read, @@ -47,7 +49,7 @@ def readinto(self, __buf: bytearray) -> int: ... -class Writer(Protocol): +class Writer(tx.Protocol): def write(self, __buf: bytes) -> int: """ Writes all bytes from `buffer`, or raises `EOFError` @@ -60,7 +62,7 @@ def write(self, __buf: bytes) -> int: LOG = logging.getLogger(__name__) -def safe_issubclass(value: Any, cls: Union[T, Tuple[T, ...]]) -> TypeGuard[T]: +def safe_issubclass(value: t.Any, cls: T | tuple[T, ...]) -> tx.TypeGuard[T]: return isinstance(value, type) and issubclass(value, cls) @@ -189,15 +191,15 @@ def __init__(cls, name: str, bases: tuple, d: dict) -> None: class MessageType(metaclass=_MessageTypeMeta): - MESSAGE_WIRE_TYPE: Optional[int] = None + MESSAGE_WIRE_TYPE: t.ClassVar[int | None] = None - FIELDS: Dict[int, Field] = {} + FIELDS: t.ClassVar[dict[int, Field]] = {} @classmethod - def get_field(cls, name: str) -> Optional[Field]: + def get_field(cls, name: str) -> Field | None: return next((f for f in cls.FIELDS.values() if f.name == name), None) - def __init__(self, *args: Any, **kwargs: Any) -> None: + def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: if args: warnings.warn( "Positional arguments for MessageType are deprecated", @@ -220,7 +222,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: # set in args but not in kwargs setattr(self, field.name, val) else: - default: Any + default: t.Any # not set at all, pick a default if field.repeated: default = [] @@ -235,7 +237,7 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: default = field.default setattr(self, field.name, default) - def __eq__(self, rhs: Any) -> bool: + def __eq__(self, rhs: t.Any) -> bool: return self.__class__ is rhs.__class__ and self.__dict__ == rhs.__dict__ def __repr__(self) -> str: @@ -276,9 +278,7 @@ def write(self, buf: bytes) -> int: return nwritten -def get_field_type_object( - field: Field, -) -> Optional[Union[Type[MessageType], Type[IntEnum]]]: +def get_field_type_object(field: Field) -> type[MessageType] | type[IntEnum] | None: from . import messages field_type_object = getattr(messages, field.type, None) @@ -287,7 +287,7 @@ def get_field_type_object( return field_type_object -def decode_packed_array_field(field: Field, reader: Reader) -> List[Any]: +def decode_packed_array_field(field: Field, reader: Reader) -> list[t.Any]: assert field.repeated, "Not decoding packed array into non-repeated field" length = load_uvarint(reader) packed_reader = LimitedReader(reader, length) @@ -300,7 +300,7 @@ def decode_packed_array_field(field: Field, reader: Reader) -> List[Any]: return values -def decode_varint_field(field: Field, reader: Reader) -> Union[int, bool, IntEnum]: +def decode_varint_field(field: Field, reader: Reader) -> int | bool | IntEnum: assert field.wire_type == WIRE_TYPE_INT, f"Field {field.name} is not varint-encoded" value = load_uvarint(reader) @@ -336,7 +336,7 @@ def decode_varint_field(field: Field, reader: Reader) -> Union[int, bool, IntEnu def decode_length_delimited_field( field: Field, reader: Reader -) -> Union[bytes, str, MessageType]: +) -> bytes | str | MessageType: value = load_uvarint(reader) if value > MAX_FIELD_SIZE: raise ValueError(f"Field {field.name} contents too large ({value} bytes)") @@ -358,8 +358,8 @@ def decode_length_delimited_field( raise TypeError # field type is unknown -def load_message(reader: Reader, msg_type: Type[MT]) -> MT: - msg_dict: Dict[str, Any] = {} +def load_message(reader: Reader, msg_type: type[MT]) -> MT: + msg_dict: dict[str, t.Any] = {} # pre-seed the dict for field in msg_type.FIELDS.values(): if field.repeated: @@ -500,8 +500,8 @@ def format_message( pb: "MessageType", indent: int = 0, sep: str = " " * 4, - truncate_after: Optional[int] = 256, - truncate_to: Optional[int] = 64, + truncate_after: int | None = 256, + truncate_to: int | None = 64, ) -> str: def mostly_printable(bytes: bytes) -> bool: if not bytes: @@ -509,7 +509,7 @@ def mostly_printable(bytes: bytes) -> bool: printable = sum(1 for byte in bytes if 0x20 <= byte <= 0x7E) return printable / len(bytes) > 0.8 - def pformat(name: str, value: Any, indent: int) -> str: + def pformat(name: str, value: t.Any, indent: int) -> str: level = sep * indent leadin = sep * (indent + 1) @@ -568,7 +568,7 @@ def pformat(name: str, value: Any, indent: int) -> str: ) -def value_to_proto(field: Field, value: Any) -> Any: +def value_to_proto(field: Field, value: t.Any) -> t.Any: field_type_object = get_field_type_object(field) if safe_issubclass(field_type_object, MessageType): raise TypeError("value_to_proto only converts simple values") @@ -601,7 +601,7 @@ def value_to_proto(field: Field, value: Any) -> Any: raise TypeError(f"can't convert {type(value)} value to bytes") -def dict_to_proto(message_type: Type[MT], d: Dict[str, Any]) -> MT: +def dict_to_proto(message_type: type[MT], d: dict[str, t.Any]) -> MT: params = {} for field in message_type.FIELDS.values(): value = d.get(field.name) @@ -624,8 +624,8 @@ def dict_to_proto(message_type: Type[MT], d: Dict[str, Any]) -> MT: return message_type(**params) -def to_dict(msg: "MessageType", hexlify_bytes: bool = True) -> Dict[str, Any]: - def convert_value(value: Any) -> Any: +def to_dict(msg: "MessageType", hexlify_bytes: bool = True) -> dict[str, t.Any]: + def convert_value(value: t.Any) -> t.Any: if hexlify_bytes and isinstance(value, bytes): return value.hex() elif isinstance(value, MessageType): From cd55d32407244bf9609cdc203487815acba7ba78 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 12 Jun 2024 15:55:49 +0200 Subject: [PATCH 344/626] refactor(python/protobuf): allow field types imported in the same module --- python/src/trezorlib/protobuf.py | 199 +++++++++--------- python/tests/test_protobuf_encoding.py | 15 +- python/tests/test_protobuf_misc.py | 25 ++- .../test_recovery_bip39_dryrun.py | 8 +- 4 files changed, 115 insertions(+), 132 deletions(-) diff --git a/python/src/trezorlib/protobuf.py b/python/src/trezorlib/protobuf.py index be4050616b..836716a542 100644 --- a/python/src/trezorlib/protobuf.py +++ b/python/src/trezorlib/protobuf.py @@ -25,12 +25,13 @@ from __future__ import annotations import logging +import sys +import typing as t import warnings from dataclasses import dataclass from enum import IntEnum from io import BytesIO from itertools import zip_longest -import typing as t import typing_extensions as tx @@ -62,10 +63,6 @@ def write(self, __buf: bytes) -> int: LOG = logging.getLogger(__name__) -def safe_issubclass(value: t.Any, cls: T | tuple[T, ...]) -> tx.TypeGuard[T]: - return isinstance(value, type) and issubclass(value, cls) - - def load_uvarint(reader: Reader) -> int: buffer = _UVARINT_BUFFER result = 0 @@ -135,14 +132,14 @@ def uint_to_sint(uint: int) -> int: WIRE_TYPE_INT = 0 WIRE_TYPE_LENGTH = 2 -WIRE_TYPES = { - "uint32": WIRE_TYPE_INT, - "uint64": WIRE_TYPE_INT, - "sint32": WIRE_TYPE_INT, - "sint64": WIRE_TYPE_INT, - "bool": WIRE_TYPE_INT, - "bytes": WIRE_TYPE_LENGTH, - "string": WIRE_TYPE_LENGTH, +PROTO_TYPES = { + "uint32": int, + "uint64": int, + "sint32": int, + "sint64": int, + "bool": bool, + "bytes": bytes, + "string": str, } REQUIRED_FIELD_PLACEHOLDER = object() @@ -151,50 +148,76 @@ def uint_to_sint(uint: int) -> int: @dataclass class Field: name: str - type: str + proto_type: str repeated: bool = False required: bool = False default: object = None + _py_type: type | None = None + _owner: type[MessageType] | None = None + @property - def wire_type(self) -> int: - if self.type in WIRE_TYPES: - return WIRE_TYPES[self.type] + def py_type(self) -> type: + if self._py_type is None: + self._py_type = self._resolve_type() + # pyright issue https://github.com/microsoft/pyright/issues/8136 + return self._py_type # type: ignore [Type ["Unknown | None"]] + + def _resolve_type(self) -> type: + # look for a type in the builtins + py_type = PROTO_TYPES.get(self.proto_type) + if py_type is not None: + return py_type + + # look for a type in the class locals + assert self._owner is not None, "Field is not owned by a MessageType" + py_type = self._owner.__dict__.get(self.proto_type) + if py_type is not None: + return py_type + + # look for a type in the class globals + cls_module = sys.modules.get(self._owner.__module__, None) + cls_globals = getattr(cls_module, "__dict__", {}) + py_type = cls_globals.get(self.proto_type) + if py_type is not None: + return py_type + + raise TypeError(f"Could not resolve field type {self.proto_type}") - field_type_object = get_field_type_object(self) - if safe_issubclass(field_type_object, MessageType): + @property + def wire_type(self) -> int: + if issubclass(self.py_type, (MessageType, bytes, str)): return WIRE_TYPE_LENGTH - if safe_issubclass(field_type_object, IntEnum): + if issubclass(self.py_type, int): return WIRE_TYPE_INT raise ValueError(f"Unrecognized type for field {self.name}") def value_fits(self, value: int) -> bool: - if self.type == "uint32": + if self.proto_type == "uint32": return 0 <= value < 2**32 - if self.type == "uint64": + if self.proto_type == "uint64": return 0 <= value < 2**64 - if self.type == "sint32": + if self.proto_type == "sint32": return -(2**31) <= value < 2**31 - if self.type == "sint64": + if self.proto_type == "sint64": return -(2**63) <= value < 2**63 - raise ValueError(f"Cannot check range bounds for {self.type}") - + raise ValueError(f"Cannot check range bounds for {self.proto_type}") -class _MessageTypeMeta(type): - def __init__(cls, name: str, bases: tuple, d: dict) -> None: - super().__init__(name, bases, d) - if name != "MessageType": - cls.__init__ = MessageType.__init__ # type: ignore [Parameter] - -class MessageType(metaclass=_MessageTypeMeta): +class MessageType: MESSAGE_WIRE_TYPE: t.ClassVar[int | None] = None - FIELDS: t.ClassVar[dict[int, Field]] = {} + def __init_subclass__(cls) -> None: + super().__init_subclass__() + # override the generated __init__ methods by the parent method + cls.__init__ = MessageType.__init__ + for field in cls.FIELDS.values(): + field._owner = cls + @classmethod def get_field(cls, name: str) -> Field | None: return next((f for f in cls.FIELDS.values() if f.name == name), None) @@ -278,15 +301,6 @@ def write(self, buf: bytes) -> int: return nwritten -def get_field_type_object(field: Field) -> type[MessageType] | type[IntEnum] | None: - from . import messages - - field_type_object = getattr(messages, field.type, None) - if not safe_issubclass(field_type_object, (IntEnum, MessageType)): - return None - return field_type_object - - def decode_packed_array_field(field: Field, reader: Reader) -> list[t.Any]: assert field.repeated, "Not decoding packed array into non-repeated field" length = load_uvarint(reader) @@ -304,33 +318,26 @@ def decode_varint_field(field: Field, reader: Reader) -> int | bool | IntEnum: assert field.wire_type == WIRE_TYPE_INT, f"Field {field.name} is not varint-encoded" value = load_uvarint(reader) - field_type_object = get_field_type_object(field) - if safe_issubclass(field_type_object, IntEnum): + if issubclass(field.py_type, IntEnum): try: - return field_type_object(value) + return field.py_type(value) except ValueError as e: # treat enum errors as warnings LOG.info(f"On field {field.name}: {e}") return value - if field.type.startswith("uint"): - if not field.value_fits(value): - LOG.info( - f"On field {field.name}: value {value} out of range for {field.type}" - ) - return value + if issubclass(field.py_type, bool): + return bool(value) - if field.type.startswith("sint"): - value = uint_to_sint(value) + if issubclass(field.py_type, int): + if field.proto_type.startswith("sint"): + value = uint_to_sint(value) if not field.value_fits(value): LOG.info( - f"On field {field.name}: value {value} out of range for {field.type}" + f"On field {field.name}: value {value} out of range for {field.proto_type}" ) return value - if field.type == "bool": - return bool(value) - raise TypeError # not a varint field or unknown type @@ -341,19 +348,18 @@ def decode_length_delimited_field( if value > MAX_FIELD_SIZE: raise ValueError(f"Field {field.name} contents too large ({value} bytes)") - if field.type == "bytes": + if issubclass(field.py_type, bytes): buf = bytearray(value) reader.readinto(buf) return bytes(buf) - if field.type == "string": + if issubclass(field.py_type, str): buf = bytearray(value) reader.readinto(buf) return buf.decode() - field_type_object = get_field_type_object(field) - if safe_issubclass(field_type_object, MessageType): - return load_message(LimitedReader(reader, value), field_type_object) + if issubclass(field.py_type, MessageType): + return load_message(LimitedReader(reader, value), field.py_type) raise TypeError # field type is unknown @@ -446,47 +452,41 @@ def dump_message(writer: Writer, msg: "MessageType") -> None: for svalue in fvalue: dump_uvarint(writer, fkey) - field_type_object = get_field_type_object(field) - if safe_issubclass(field_type_object, MessageType): - if not isinstance(svalue, field_type_object): + if issubclass(field.py_type, MessageType): + if not isinstance(svalue, field.py_type): raise ValueError( - f"Value {svalue} in field {field.name} is not {field_type_object.__name__}" + f"Value {svalue} in field {field.name} is not {field.py_type.__name__}" ) counter = CountingWriter() dump_message(counter, svalue) dump_uvarint(writer, counter.size) dump_message(writer, svalue) - elif safe_issubclass(field_type_object, IntEnum): - if svalue not in field_type_object.__members__.values(): + elif issubclass(field.py_type, IntEnum): + if svalue not in field.py_type.__members__.values(): raise ValueError( - f"Value {svalue} in field {field.name} unknown for {field.type}" + f"Value {svalue} in field {field.name} unknown for {field.proto_type}" ) dump_uvarint(writer, svalue) - elif field.type.startswith("uint"): - if not field.value_fits(svalue): - raise ValueError( - f"Value {svalue} in field {field.name} does not fit into {field.type}" - ) - dump_uvarint(writer, svalue) + elif issubclass(field.py_type, bool): + dump_uvarint(writer, int(svalue)) - elif field.type.startswith("sint"): + elif issubclass(field.py_type, int): if not field.value_fits(svalue): raise ValueError( - f"Value {svalue} in field {field.name} does not fit into {field.type}" + f"Value {svalue} in field {field.name} does not fit into {field.proto_type}" ) - dump_uvarint(writer, sint_to_uint(svalue)) - - elif field.type == "bool": - dump_uvarint(writer, int(svalue)) + if field.proto_type.startswith("sint"): + svalue = sint_to_uint(svalue) + dump_uvarint(writer, svalue) - elif field.type == "bytes": + elif issubclass(field.py_type, bytes): assert isinstance(svalue, (bytes, bytearray)) dump_uvarint(writer, len(svalue)) writer.write(svalue) - elif field.type == "string": + elif issubclass(field.py_type, str): assert isinstance(svalue, str) svalue_bytes = svalue.encode() dump_uvarint(writer, len(svalue_bytes)) @@ -549,9 +549,9 @@ def pformat(name: str, value: t.Any, indent: int) -> str: field = pb.get_field(name) if field is not None: - if isinstance(value, int) and safe_issubclass(field.type, IntEnum): + if isinstance(value, int) and issubclass(field.py_type, IntEnum): try: - return f"{field.type(value).name} ({value})" + return f"{field.py_type(value).name} ({value})" except ValueError: return str(value) @@ -569,30 +569,20 @@ def pformat(name: str, value: t.Any, indent: int) -> str: def value_to_proto(field: Field, value: t.Any) -> t.Any: - field_type_object = get_field_type_object(field) - if safe_issubclass(field_type_object, MessageType): + if issubclass(field.py_type, MessageType): raise TypeError("value_to_proto only converts simple values") - if safe_issubclass(field_type_object, IntEnum): + if issubclass(field.py_type, IntEnum): if isinstance(value, str): - return field_type_object.__members__[value] + return field.py_type.__members__[value] else: try: - return field_type_object(value) + return field.py_type(value) except ValueError as e: LOG.info(f"On field {field.name}: {e}") return int(value) - if "int" in field.type: - return int(value) - - if field.type == "bool": - return bool(value) - - if field.type == "string": - return str(value) - - if field.type == "bytes": + if issubclass(field.py_type, bytes): if isinstance(value, str): return bytes.fromhex(value) elif isinstance(value, bytes): @@ -600,6 +590,8 @@ def value_to_proto(field: Field, value: t.Any) -> t.Any: else: raise TypeError(f"can't convert {type(value)} value to bytes") + return field.py_type(value) + def dict_to_proto(message_type: type[MT], d: dict[str, t.Any]) -> MT: params = {} @@ -611,9 +603,8 @@ def dict_to_proto(message_type: type[MT], d: dict[str, t.Any]) -> MT: if not field.repeated: value = [value] - field_type_object = get_field_type_object(field) - if safe_issubclass(field_type_object, MessageType): - newvalue = [dict_to_proto(field_type_object, v) for v in value] + if issubclass(field.py_type, MessageType): + newvalue = [dict_to_proto(field.py_type, v) for v in value] else: newvalue = [value_to_proto(field, v) for v in value] diff --git a/python/tests/test_protobuf_encoding.py b/python/tests/test_protobuf_encoding.py index f3942b6e47..25f8ae6ef9 100644 --- a/python/tests/test_protobuf_encoding.py +++ b/python/tests/test_protobuf_encoding.py @@ -20,7 +20,7 @@ import pytest -from trezorlib import messages, protobuf +from trezorlib import protobuf class SomeEnum(IntEnum): @@ -94,19 +94,6 @@ class RecursiveMessage(protobuf.MessageType): } -# message types are read from the messages module so we need to "include" these messages there for now -messages.SomeEnum = SomeEnum -messages.WiderEnum = WiderEnum -messages.NarrowerEnum = NarrowerEnum -messages.PrimitiveMessage = PrimitiveMessage -messages.EnumMessageMoreValues = EnumMessageMoreValues -messages.EnumMessageLessValues = EnumMessageLessValues -messages.RepeatedFields = RepeatedFields -messages.RequiredFields = RequiredFields -messages.DefaultFields = DefaultFields -messages.RecursiveMessage = RecursiveMessage - - def load_uvarint(buffer): reader = BytesIO(buffer) return protobuf.load_uvarint(reader) diff --git a/python/tests/test_protobuf_misc.py b/python/tests/test_protobuf_misc.py index b23bf23ead..775a9aff47 100644 --- a/python/tests/test_protobuf_misc.py +++ b/python/tests/test_protobuf_misc.py @@ -18,7 +18,7 @@ import pytest -from trezorlib import messages, protobuf +from trezorlib import protobuf class SimpleEnum(IntEnum): @@ -55,18 +55,11 @@ class RequiredFields(protobuf.MessageType): } -# message types are read from the messages module so we need to "include" these messages there for now -messages.SimpleEnum = SimpleEnum -messages.SimpleMessage = SimpleMessage -messages.NestedMessage = NestedMessage -messages.RequiredFields = RequiredFields - - def test_get_field(): # smoke test field = SimpleMessage.get_field("bool") assert field.name == "bool" - assert field.type == "bool" + assert field.proto_type == "bool" assert field.repeated is False assert field.required is False assert field.default is None @@ -91,6 +84,19 @@ def test_dict_roundtrip(): assert recovered == msg +def test_dict_to_proto_fresh(): + class FreshMessage(protobuf.MessageType): + FIELDS = { + 1: protobuf.Field("scalar", "uint64"), + 2: protobuf.Field("nested", "SimpleMessage"), + } + + dictdata = {"scalar": 5, "nested": {"uvarint": 5}} + recovered = protobuf.dict_to_proto(FreshMessage, dictdata) + assert recovered.scalar == 5 + assert recovered.nested.uvarint == 5 + + def test_to_dict(): msg = SimpleMessage( uvarint=5, @@ -204,7 +210,6 @@ def test_nested_recover(): assert isinstance(recovered.nested, SimpleMessage) -@pytest.mark.xfail(reason="formatting broken because of size counting") def test_unknown_enum_to_str(): simple = SimpleMessage(enum=SimpleEnum.QUUX) string = protobuf.format_message(simple) diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py index c8d749a395..7fc6c54eb4 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py @@ -124,13 +124,13 @@ def _make_bad_params(): if field.name in DRY_RUN_ALLOWED_FIELDS: continue - if "int" in field.type: + if field.py_type is int: yield field.name, 1 - elif field.type == "bool": + elif field.py_type is bool: yield field.name, True - elif field.type == "string": + elif field.py_type is str: yield field.name, "test" - elif field.type == "RecoveryType": + elif field.py_type is messages.RecoveryType: yield field.name, 1 else: # Someone added a field to RecoveryDevice of a type that has no assigned From e5686c24e33480aaad4070538c9631ee9ba4c6ba Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 13 Jun 2024 13:04:45 +0200 Subject: [PATCH 345/626] build(python): update setuptools manifest --- python/MANIFEST.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/python/MANIFEST.in b/python/MANIFEST.in index 4beada4d6b..a55bb16423 100644 --- a/python/MANIFEST.in +++ b/python/MANIFEST.in @@ -2,8 +2,12 @@ recursive-include bash_completion.d *.sh include tools/* graft src graft tests +graft stubs include AUTHORS README.md COPYING CHANGELOG.md include requirements*.txt +include tox.ini pyrightconfig.json exclude src/trezorlib/_proto_messages.mako exclude tests/*.bin +global-exclude *.pyc +global-exclude */__pycache__/* From 92e8bf5e60203c0da8484a822202e9b85b50e0df Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 13 Jun 2024 13:05:03 +0200 Subject: [PATCH 346/626] chore(python): regenerate documentation --- python/docs/OPTIONS.rst | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/python/docs/OPTIONS.rst b/python/docs/OPTIONS.rst index c0f01ca40a..8aab782037 100644 --- a/python/docs/OPTIONS.rst +++ b/python/docs/OPTIONS.rst @@ -189,8 +189,9 @@ Miscellaneous debug features. --help Show this message and exit. Commands: - record Record screen changes into a specified directory. - send-bytes Send raw bytes to Trezor. + prodtest-t1 Perform a prodtest on Model One. + record Record screen changes into a specified directory. + send-bytes Send raw bytes to Trezor. Device management commands - setup, recover seed, wipe, etc. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -209,10 +210,9 @@ Device management commands - setup, recover seed, wipe, etc. --help Show this message and exit. Commands: - authenticate Get information to verify the authenticity of the device. + authenticate Verify the authenticity of the device. backup Perform device seed backup. load Upload seed and custom configuration to the device. - prodtest-t1 Perform a prodtest on Model One. reboot-to-bootloader Reboot device into bootloader mode. recover Start safe recovery workflow. sd-protect Secure the device with SD card protection. @@ -405,9 +405,11 @@ Device settings. Commands: auto-lock-delay Set auto-lock delay (in seconds). + brightness Set display brightness. display-rotation Set display rotation. experimental-features Enable or disable experimental message types. flags Set device flags. + haptic-feedback Enable or disable haptic feedback. homescreen Set new homescreen. label Set new device label. language Set new language with translations. From 32d26933a65869f758b34397b9429f3d9d140cbd Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 19 Jun 2024 10:22:46 +0200 Subject: [PATCH 347/626] style(python): modernize type annotations in cli/device.py --- python/src/trezorlib/cli/device.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/python/src/trezorlib/cli/device.py b/python/src/trezorlib/cli/device.py index de45fd82ca..e1afac71af 100644 --- a/python/src/trezorlib/cli/device.py +++ b/python/src/trezorlib/cli/device.py @@ -13,11 +13,12 @@ # # You should have received a copy of the License along with this library. # If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. +from __future__ import annotations import logging import secrets import sys -from typing import TYPE_CHECKING, BinaryIO, Optional, Sequence, Tuple +import typing as t import click import requests @@ -25,7 +26,7 @@ from .. import debuglink, device, exceptions, messages, ui from . import ChoiceType, with_client -if TYPE_CHECKING: +if t.TYPE_CHECKING: from ..client import TrezorClient from ..protobuf import MessageType from . import TrezorConnection @@ -104,7 +105,7 @@ def wipe(client: "TrezorClient", bootloader: bool) -> str: @with_client def load( client: "TrezorClient", - mnemonic: Sequence[str], + mnemonic: t.Sequence[str], pin: str, passphrase_protection: bool, label: str, @@ -169,7 +170,7 @@ def recover( expand: bool, pin_protection: bool, passphrase_protection: bool, - label: Optional[str], + label: str | None, u2f_counter: int, input_method: messages.RecoveryDeviceInputMethod, dry_run: bool, @@ -218,10 +219,10 @@ def recover( def setup( client: "TrezorClient", show_entropy: bool, - strength: Optional[int], + strength: int | None, passphrase_protection: bool, pin_protection: bool, - label: Optional[str], + label: str | None, u2f_counter: int, skip_backup: bool, no_backup: bool, @@ -263,8 +264,8 @@ def setup( @with_client def backup( client: "TrezorClient", - group_threshold: Optional[int] = None, - groups: Sequence[Tuple[int, int]] = (), + group_threshold: int | None = None, + groups: t.Sequence[tuple[int, int]] = (), ) -> str: """Perform device seed backup.""" @@ -331,9 +332,7 @@ def unlock_bootloader(client: "TrezorClient") -> str: help="Dialog expiry in seconds.", ) @with_client -def set_busy( - client: "TrezorClient", enable: Optional[bool], expiry: Optional[int] -) -> str: +def set_busy(client: "TrezorClient", enable: bool | None, expiry: int | None) -> str: """Show a "Do not disconnect" dialog.""" if enable is False: return device.set_busy(client, None) @@ -369,10 +368,10 @@ def set_busy( @with_client def authenticate( client: "TrezorClient", - hex_challenge: Optional[str], - root: Optional[BinaryIO], - raw: Optional[bool], - skip_whitelist: Optional[bool], + hex_challenge: str | None, + root: t.BinaryIO | None, + raw: bool | None, + skip_whitelist: bool | None, ) -> None: """Verify the authenticity of the device. From d1981e745ea0de588fba751b5797249bb5f51f6a Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 19 Jun 2024 10:31:34 +0200 Subject: [PATCH 348/626] fix(python): fallback for `trezorctl device setup` on older firmwares fixes #3956 [no changelog] because the slip39-single feature was not yet released --- python/src/trezorlib/cli/device.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/python/src/trezorlib/cli/device.py b/python/src/trezorlib/cli/device.py index e1afac71af..2e42e9b7b3 100644 --- a/python/src/trezorlib/cli/device.py +++ b/python/src/trezorlib/cli/device.py @@ -214,7 +214,7 @@ def recover( @click.option("-u", "--u2f-counter", default=0) @click.option("-s", "--skip-backup", is_flag=True) @click.option("-n", "--no-backup", is_flag=True) -@click.option("-b", "--backup-type", type=ChoiceType(BACKUP_TYPE), default="single") +@click.option("-b", "--backup-type", type=ChoiceType(BACKUP_TYPE)) @with_client def setup( client: "TrezorClient", @@ -226,22 +226,33 @@ def setup( u2f_counter: int, skip_backup: bool, no_backup: bool, - backup_type: messages.BackupType, + backup_type: messages.BackupType | None, ) -> str: """Perform device setup and generate new seed.""" if strength: strength = int(strength) + BT = messages.BackupType + + if backup_type is None: + if client.version >= (2, 7, 1): + # SLIP39 extendable was introduced in 2.7.1 + backup_type = BT.Slip39_Single_Extendable + else: + # this includes both T1 and older trezor-cores + backup_type = BT.Bip39 + if ( - backup_type == messages.BackupType.Slip39_Basic + backup_type + in (BT.Slip39_Single_Extendable, BT.Slip39_Basic, BT.Slip39_Basic_Extendable) and messages.Capability.Shamir not in client.features.capabilities ) or ( - backup_type == messages.BackupType.Slip39_Advanced + backup_type in (BT.Slip39_Advanced, BT.Slip39_Advanced_Extendable) and messages.Capability.ShamirGroups not in client.features.capabilities ): click.echo( "WARNING: Your Trezor device does not indicate support for the requested\n" - "backup type. Traditional single-seed backup may be generated instead." + "backup type. Traditional BIP39 backup may be generated instead." ) return device.reset( From 9b1bffca3b2cd9f076064934ed6131c0616ae211 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 19 Jun 2024 10:34:23 +0200 Subject: [PATCH 349/626] docs(python): changelog for 0.13.9 --- python/.changelog.d/+0596394e.incompatible | 1 - python/.changelog.d/2919.added.1 | 1 - python/.changelog.d/2919.added.2 | 1 - python/.changelog.d/3208.added | 1 - python/.changelog.d/3359.added | 1 - python/.changelog.d/3364.added | 1 - python/.changelog.d/3422.added | 1 - python/.changelog.d/3434.added | 1 - python/.changelog.d/3496.added.1 | 1 - python/.changelog.d/3496.added.2 | 1 - python/.changelog.d/3504.changed | 1 - python/.changelog.d/3636.added | 1 - python/.changelog.d/3868.added | 1 - python/.changelog.d/3868.incompatible | 1 - python/.changelog.d/3893.added | 1 - python/.changelog.d/3893.changed | 1 - python/CHANGELOG.md | 37 ++++++++++++++++++++++ 17 files changed, 37 insertions(+), 16 deletions(-) delete mode 100644 python/.changelog.d/+0596394e.incompatible delete mode 100644 python/.changelog.d/2919.added.1 delete mode 100644 python/.changelog.d/2919.added.2 delete mode 100644 python/.changelog.d/3208.added delete mode 100644 python/.changelog.d/3359.added delete mode 100644 python/.changelog.d/3364.added delete mode 100644 python/.changelog.d/3422.added delete mode 100644 python/.changelog.d/3434.added delete mode 100644 python/.changelog.d/3496.added.1 delete mode 100644 python/.changelog.d/3496.added.2 delete mode 100644 python/.changelog.d/3504.changed delete mode 100644 python/.changelog.d/3636.added delete mode 100644 python/.changelog.d/3868.added delete mode 100644 python/.changelog.d/3868.incompatible delete mode 100644 python/.changelog.d/3893.added delete mode 100644 python/.changelog.d/3893.changed diff --git a/python/.changelog.d/+0596394e.incompatible b/python/.changelog.d/+0596394e.incompatible deleted file mode 100644 index 231e9a3cdc..0000000000 --- a/python/.changelog.d/+0596394e.incompatible +++ /dev/null @@ -1 +0,0 @@ -Minimum required Python version is now 3.8. diff --git a/python/.changelog.d/2919.added.1 b/python/.changelog.d/2919.added.1 deleted file mode 100644 index a3bd005bab..0000000000 --- a/python/.changelog.d/2919.added.1 +++ /dev/null @@ -1 +0,0 @@ -Support interaction-less upgrade diff --git a/python/.changelog.d/2919.added.2 b/python/.changelog.d/2919.added.2 deleted file mode 100644 index cd2a54d207..0000000000 --- a/python/.changelog.d/2919.added.2 +++ /dev/null @@ -1 +0,0 @@ -trezorctl: Automatically go to bootloader when upgrading firmware diff --git a/python/.changelog.d/3208.added b/python/.changelog.d/3208.added deleted file mode 100644 index 632f19ecc6..0000000000 --- a/python/.changelog.d/3208.added +++ /dev/null @@ -1 +0,0 @@ -Added user adjustable brightness setting. diff --git a/python/.changelog.d/3359.added b/python/.changelog.d/3359.added deleted file mode 100644 index d2392f6491..0000000000 --- a/python/.changelog.d/3359.added +++ /dev/null @@ -1 +0,0 @@ -Added Solana support diff --git a/python/.changelog.d/3364.added b/python/.changelog.d/3364.added deleted file mode 100644 index 46f1be3711..0000000000 --- a/python/.changelog.d/3364.added +++ /dev/null @@ -1 +0,0 @@ -trezorctl: support for human-friendly Trezor Safe device authenticity check (requires separate installation of `cryptography` library). diff --git a/python/.changelog.d/3422.added b/python/.changelog.d/3422.added deleted file mode 100644 index 17fb87f434..0000000000 --- a/python/.changelog.d/3422.added +++ /dev/null @@ -1 +0,0 @@ -Added support for T3T1 diff --git a/python/.changelog.d/3434.added b/python/.changelog.d/3434.added deleted file mode 100644 index 49ffffe1fb..0000000000 --- a/python/.changelog.d/3434.added +++ /dev/null @@ -1 +0,0 @@ -Stellar: add support for StellarClaimClaimableBalanceOp. diff --git a/python/.changelog.d/3496.added.1 b/python/.changelog.d/3496.added.1 deleted file mode 100644 index 6e208d171f..0000000000 --- a/python/.changelog.d/3496.added.1 +++ /dev/null @@ -1 +0,0 @@ -Cardano: Added support for Conway certificates diff --git a/python/.changelog.d/3496.added.2 b/python/.changelog.d/3496.added.2 deleted file mode 100644 index 509c632add..0000000000 --- a/python/.changelog.d/3496.added.2 +++ /dev/null @@ -1 +0,0 @@ -Cardano: Added support for tagged sets in CBOR (tag 258) diff --git a/python/.changelog.d/3504.changed b/python/.changelog.d/3504.changed deleted file mode 100644 index b04eb4f091..0000000000 --- a/python/.changelog.d/3504.changed +++ /dev/null @@ -1 +0,0 @@ -Renamed `trezorctl device self-test` command to `trezorctl device prodtest-t1` diff --git a/python/.changelog.d/3636.added b/python/.changelog.d/3636.added deleted file mode 100644 index 2d5938422a..0000000000 --- a/python/.changelog.d/3636.added +++ /dev/null @@ -1 +0,0 @@ -Added ability to request Shamir backups with any number of groups/shares. diff --git a/python/.changelog.d/3868.added b/python/.changelog.d/3868.added deleted file mode 100644 index 70e92a82bd..0000000000 --- a/python/.changelog.d/3868.added +++ /dev/null @@ -1 +0,0 @@ -Added flag for setting up device using SLIP39 "single". diff --git a/python/.changelog.d/3868.incompatible b/python/.changelog.d/3868.incompatible deleted file mode 100644 index 3b9aaafc21..0000000000 --- a/python/.changelog.d/3868.incompatible +++ /dev/null @@ -1 +0,0 @@ -Renamed flag used for setting up device using BIP39 to `bip39`. diff --git a/python/.changelog.d/3893.added b/python/.changelog.d/3893.added deleted file mode 100644 index a177ebc672..0000000000 --- a/python/.changelog.d/3893.added +++ /dev/null @@ -1 +0,0 @@ -Added `--quality` argument to `trezorctl set homescreen`. diff --git a/python/.changelog.d/3893.changed b/python/.changelog.d/3893.changed deleted file mode 100644 index ace7ea4671..0000000000 --- a/python/.changelog.d/3893.changed +++ /dev/null @@ -1 +0,0 @@ -Increased default JPEG quality for uploaded homescreen. diff --git a/python/CHANGELOG.md b/python/CHANGELOG.md index 79ea70ad16..a37d368424 100644 --- a/python/CHANGELOG.md +++ b/python/CHANGELOG.md @@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.13.9] (2024-06-19) +[0.13.9]: https://github.com/trezor/trezor-firmware/compare/python/v0.13.8...python/v0.13.9 + +### Added +- trezorctl: Automatically go to bootloader when upgrading firmware. [#2919] +- Support interaction-less upgrade. [#2919] +- Added user adjustable brightness setting. [#3208] +- Added Solana support. [#3359] +- trezorctl: support for human-friendly Trezor Safe device authenticity check (requires separate installation of `cryptography` library). [#3364] +- Added support for T3T1. [#3422] +- Stellar: add support for StellarClaimClaimableBalanceOp. [#3434] +- Cardano: Added support for tagged sets in CBOR (tag 258). [#3496] +- Cardano: Added support for Conway certificates. [#3496] +- Added ability to request Shamir backups with any number of groups/shares. [#3636] +- Added flag for setting up device using SLIP39 "single". [#3868] +- Added `--quality` argument to `trezorctl set homescreen`. [#3893] + +### Changed +- Renamed `trezorctl device self-test` command to `trezorctl device prodtest-t1`. [#3504] +- Increased default JPEG quality for uploaded homescreen. [#3893] + +### Incompatible changes +- Renamed flag used for setting up device using BIP39 to `bip39`. [#3868] +- Minimum required Python version is now 3.8. + + ## [0.13.8] (2023-10-19) [0.13.8]: https://github.com/trezor/trezor-firmware/compare/python/v0.13.7...python/v0.13.8 @@ -787,12 +813,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#2832]: https://github.com/trezor/trezor-firmware/pull/2832 [#2833]: https://github.com/trezor/trezor-firmware/pull/2833 [#2880]: https://github.com/trezor/trezor-firmware/pull/2880 +[#2919]: https://github.com/trezor/trezor-firmware/pull/2919 [#2967]: https://github.com/trezor/trezor-firmware/pull/2967 [#2989]: https://github.com/trezor/trezor-firmware/pull/2989 [#3037]: https://github.com/trezor/trezor-firmware/pull/3037 [#3045]: https://github.com/trezor/trezor-firmware/pull/3045 [#3048]: https://github.com/trezor/trezor-firmware/pull/3048 [#3203]: https://github.com/trezor/trezor-firmware/pull/3203 +[#3208]: https://github.com/trezor/trezor-firmware/pull/3208 [#3227]: https://github.com/trezor/trezor-firmware/pull/3227 [#3237]: https://github.com/trezor/trezor-firmware/pull/3237 [#3255]: https://github.com/trezor/trezor-firmware/pull/3255 +[#3359]: https://github.com/trezor/trezor-firmware/pull/3359 +[#3364]: https://github.com/trezor/trezor-firmware/pull/3364 +[#3422]: https://github.com/trezor/trezor-firmware/pull/3422 +[#3434]: https://github.com/trezor/trezor-firmware/pull/3434 +[#3496]: https://github.com/trezor/trezor-firmware/pull/3496 +[#3504]: https://github.com/trezor/trezor-firmware/pull/3504 +[#3636]: https://github.com/trezor/trezor-firmware/pull/3636 +[#3868]: https://github.com/trezor/trezor-firmware/pull/3868 +[#3893]: https://github.com/trezor/trezor-firmware/pull/3893 From 58b1a95052287adf0daa8b49588492c09e8679d3 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 19 Jun 2024 10:59:40 +0200 Subject: [PATCH 350/626] docs(python): update README --- python/README.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/python/README.md b/python/README.md index e2e8043ae8..e2497c232c 100644 --- a/python/README.md +++ b/python/README.md @@ -52,6 +52,14 @@ you install HIDAPI support (see below). pip3 install trezor[stellar] ``` +* **Extended device authentication**: For user-friendly device authentication for Trezor + Safe 3 and newer models (`trezorctl device authenticate` command), additional packages + are needed. Install with: + + ```sh + pip3 install trezor[authentication] + ``` + * **Firmware-less Trezor One**: If you are setting up a brand new Trezor One manufactured before 2021 (with pre-installed bootloader older than 1.6.0), you will need HIDAPI support. On Linux, you will need the following packages (or their @@ -64,7 +72,7 @@ you install HIDAPI support (see below). pip3 install trezor[hidapi] ``` -To install all three, use `pip3 install trezor[hidapi,ethereum,stellar]`. +To install all four, use `pip3 install trezor[hidapi,ethereum,stellar,authentication]`. ### Distro packages @@ -136,8 +144,8 @@ You have to enter: **3795** ## Contributing -If you want to change protobuf or coin definitions, you will need to regenerate -definitions in the `python/` subdirectory. +If you want to change protobuf definitions, you will need to regenerate definitions in +the `python/` subdirectory. First, make sure your submodules are up-to-date with: @@ -151,6 +159,3 @@ directory: ```sh make gen ``` - -To get support for BTC-like coins, these steps are enough and no further -changes to the library are necessary. From 3a039c505f48b97542e6118d9fb2dc867306770a Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 19 Jun 2024 10:35:07 +0200 Subject: [PATCH 351/626] chore(python): bump version after release --- python/src/trezorlib/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/src/trezorlib/__init__.py b/python/src/trezorlib/__init__.py index 6e0ae48ec5..c3e5b69a3f 100644 --- a/python/src/trezorlib/__init__.py +++ b/python/src/trezorlib/__init__.py @@ -14,4 +14,4 @@ # You should have received a copy of the License along with this library. # If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. -__version__ = "0.13.9" +__version__ = "0.13.10" From aaa2ece3ba8439fd416044b7a7988ce0c3c7bc42 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 11 Jun 2024 16:31:50 +0200 Subject: [PATCH 352/626] feat(core/ui): highlight repeated words on T3T1 ShowShareWords flow now informs the user if the word is repeated. The most typical usecase in 1-of-1 shamir (SingleShare) where 3rd and 4th word is "academic". --- core/embed/rust/librust_qstr.h | 2 + .../generated/translated_string.rs | 3 + core/embed/rust/src/ui/component/label.rs | 4 + .../src/ui/model_mercury/component/frame.rs | 36 +++- .../ui/model_mercury/component/share_words.rs | 177 ++++++++++++++++-- .../ui/model_mercury/flow/show_share_words.rs | 9 +- .../embed/rust/src/ui/model_mercury/layout.rs | 1 + .../rust/src/ui/model_mercury/theme/mod.rs | 2 + core/mocks/generated/trezorui2.pyi | 1 + core/mocks/trezortranslate_keys.pyi | 1 + core/src/trezor/ui/layouts/mercury/reset.py | 2 + core/translations/en.json | 1 + core/translations/order.json | 3 +- core/translations/signatures.json | 6 +- 14 files changed, 218 insertions(+), 30 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 270c7f9df8..f2168dc75e 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -246,6 +246,7 @@ static void _librust_qstrs(void) { MP_QSTR_haptic_feedback__enable; MP_QSTR_haptic_feedback__subtitle; MP_QSTR_haptic_feedback__title; + MP_QSTR_highlight_repeated; MP_QSTR_hold; MP_QSTR_hold_danger; MP_QSTR_homescreen__click_to_connect; @@ -528,6 +529,7 @@ static void _librust_qstrs(void) { MP_QSTR_reset__slip39_checklist_write_down; MP_QSTR_reset__slip39_checklist_write_down_recovery; MP_QSTR_reset__the_threshold_sets_the_number_of_shares; + MP_QSTR_reset__the_word_is_repeated; MP_QSTR_reset__threshold_info; MP_QSTR_reset__title_backup_is_done; MP_QSTR_reset__title_create_wallet; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index f6f1024add..0e3caf447f 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1339,6 +1339,7 @@ pub enum TranslatedString { reset__repeat_for_all_shares = 938, // "Repeat for all shares." homescreen__settings_subtitle = 939, // "Settings" homescreen__settings_title = 940, // "Homescreen" + reset__the_word_is_repeated = 941, // "The word is repeated" } impl TranslatedString { @@ -2672,6 +2673,7 @@ impl TranslatedString { Self::reset__repeat_for_all_shares => "Repeat for all shares.", Self::homescreen__settings_subtitle => "Settings", Self::homescreen__settings_title => "Homescreen", + Self::reset__the_word_is_repeated => "The word is repeated", } } @@ -4006,6 +4008,7 @@ impl TranslatedString { Qstr::MP_QSTR_reset__repeat_for_all_shares => Some(Self::reset__repeat_for_all_shares), Qstr::MP_QSTR_homescreen__settings_subtitle => Some(Self::homescreen__settings_subtitle), Qstr::MP_QSTR_homescreen__settings_title => Some(Self::homescreen__settings_title), + Qstr::MP_QSTR_reset__the_word_is_repeated => Some(Self::reset__the_word_is_repeated), _ => None, } } diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index 087583d1f0..d9fe59ffc2 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -66,6 +66,10 @@ impl<'a> Label<'a> { self.text = text; } + pub fn set_style(&mut self, style: TextStyle) { + self.layout.style = style; + } + pub fn font(&self) -> Font { self.layout.style.text_font } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index a2f80b6884..a7d284a8f4 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -86,11 +86,6 @@ where self } - pub fn title_styled(mut self, style: TextStyle) -> Self { - self.title = self.title.styled(style); - self - } - #[inline(never)] pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { let style = theme::TEXT_SUB_GREY; @@ -125,6 +120,18 @@ where .button_styled(theme::button_danger()) } + pub fn title_styled(mut self, style: TextStyle) -> Self { + self.title = self.title.styled(style); + self + } + + pub fn subtitle_styled(mut self, style: TextStyle) -> Self { + if let Some(subtitle) = self.subtitle.take() { + self.subtitle = Some(subtitle.styled(style)) + } + self + } + pub fn button_styled(mut self, style: ButtonStyleSheet) -> Self { if self.button.is_some() { self.button = Some(self.button.unwrap().styled(style)); @@ -160,6 +167,25 @@ where ctx.request_paint(); } + pub fn update_subtitle( + &mut self, + ctx: &mut EventCtx, + new_subtitle: TString<'static>, + new_style: Option<TextStyle>, + ) { + let style = new_style.unwrap_or(theme::TEXT_SUB_GREY); + match &mut self.subtitle { + Some(subtitle) => { + subtitle.set_style(style); + subtitle.set_text(new_subtitle); + } + None => { + self.subtitle = Some(Label::new(new_subtitle, self.title.alignment(), style)); + } + } + ctx.request_paint(); + } + pub fn update_content<F, R>(&mut self, ctx: &mut EventCtx, update_fn: F) -> R where F: Fn(&mut EventCtx, &mut T) -> R, diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 1d3173d38f..4eac9d94f3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -5,10 +5,13 @@ use crate::{ translations::TR, ui::{ animation::Animation, - component::{Component, Event, EventCtx, Never, SwipeDirection}, + component::{ + swipe_detect::{SwipeConfig, SwipeSettings}, + Component, Event, EventCtx, Never, SwipeDirection, + }, event::SwipeEvent, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, - model_mercury::component::Footer, + model_mercury::component::{Footer, Frame, FrameMsg}, shape::{self, Renderer}, util, }, @@ -17,12 +20,112 @@ use heapless::Vec; const MAX_WORDS: usize = 33; // super-shamir has 33 words, all other have less const ANIMATION_DURATION_MS: Duration = Duration::from_millis(166); +type IndexVec = Vec<u8, MAX_WORDS>; /// Component showing mnemonic/share words during backup procedure. Model T3T1 /// contains one word per screen. A user is instructed to swipe up/down to see /// next/previous word. +/// This is a wrapper around a Frame so that the subtitle and Footer of the +/// Frame can be updated based on the index of the word shown. Actual share +/// words are rendered within `ShareWordsInner` component, pub struct ShareWords<'a> { - area: Rect, + subtitle: TString<'static>, + frame: Frame<ShareWordsInner<'a>>, + repeated_indices: Option<IndexVec>, +} + +impl<'a> ShareWords<'a> { + pub fn new( + title: TString<'static>, + subtitle: TString<'static>, + share_words: Vec<TString<'a>, MAX_WORDS>, + highlight_repeated: bool, + ) -> Self { + let repeated_indices = if highlight_repeated { + Some(Self::find_repeated(share_words.as_slice())) + } else { + None + }; + Self { + subtitle, + frame: Frame::left_aligned(title, ShareWordsInner::new(share_words)) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_vertical_pages() + .with_subtitle(subtitle), + repeated_indices, + } + } + + fn find_repeated(share_words: &[TString]) -> IndexVec { + let mut repeated_indices = IndexVec::new(); + for i in (0..share_words.len()).rev() { + let word = share_words[i]; + if share_words[..i].contains(&word) { + unwrap!(repeated_indices.push(i as u8)); + } + } + repeated_indices.reverse(); + repeated_indices + } +} + +impl<'a> Component for ShareWords<'a> { + type Msg = FrameMsg<Never>; + + fn place(&mut self, bounds: Rect) -> Rect { + self.frame.place(bounds); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let page_index = self.frame.inner().page_index as u8; + if let Some(repeated_indices) = &self.repeated_indices { + if repeated_indices.contains(&(page_index as usize)) { + let updated_subtitle = TString::from_translation(TR::reset__the_word_is_repeated); + self.frame + .update_subtitle(ctx, updated_subtitle, Some(theme::TEXT_SUB_GREEN_LIME)); + } else { + self.frame + .update_subtitle(ctx, self.subtitle, Some(theme::TEXT_SUB_GREY)); + } + } + self.frame.update_footer_counter(ctx, page_index + 1); + self.frame.event(ctx, event) + } + + fn paint(&mut self) { + // TODO: remove when ui-t3t1 done + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.frame.render(target); + } + + #[cfg(feature = "ui_bounds")] + fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} +} + +#[cfg(feature = "micropython")] +impl<'a> crate::ui::flow::Swipable for ShareWords<'a> { + fn get_swipe_config(&self) -> SwipeConfig { + self.frame.get_swipe_config() + } + + fn get_internal_page_count(&self) -> usize { + self.frame.get_internal_page_count() + } +} + +#[cfg(feature = "ui_debug")] +impl<'a> crate::trace::Trace for ShareWords<'a> { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("ShareWords"); + t.child("inner", &self.frame); + } +} + +struct ShareWordsInner<'a> { share_words: Vec<TString<'a>, MAX_WORDS>, page_index: i16, next_index: i16, @@ -35,12 +138,11 @@ pub struct ShareWords<'a> { progress: i16, } -impl<'a> ShareWords<'a> { +impl<'a> ShareWordsInner<'a> { const AREA_WORD_HEIGHT: i16 = 91; - pub fn new(share_words: Vec<TString<'a>, MAX_WORDS>) -> Self { + fn new(share_words: Vec<TString<'a>, MAX_WORDS>) -> Self { Self { - area: Rect::zero(), share_words, page_index: 0, next_index: 0, @@ -76,25 +178,21 @@ impl<'a> ShareWords<'a> { } } -impl<'a> Component for ShareWords<'a> { +impl<'a> Component for ShareWordsInner<'a> { type Msg = Never; fn place(&mut self, bounds: Rect) -> Rect { - self.area = bounds; let used_area = bounds .inset(Insets::sides(theme::SPACING)) .inset(Insets::bottom(theme::SPACING)); self.area_word = Rect::snap( used_area.center(), - Offset::new(used_area.width(), ShareWords::AREA_WORD_HEIGHT), + Offset::new(used_area.width(), ShareWordsInner::AREA_WORD_HEIGHT), Alignment2D::CENTER, ); - self.footer - .place(used_area.split_bottom(Footer::HEIGHT_SIMPLE).1); - - self.area + bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { @@ -199,12 +297,61 @@ impl<'a> Component for ShareWords<'a> { } #[cfg(feature = "ui_debug")] -impl<'a> crate::trace::Trace for ShareWords<'a> { +impl<'a> crate::trace::Trace for ShareWordsInner<'a> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("ShareWords"); + t.component("ShareWordsInner"); let word = &self.share_words[self.page_index as usize]; let content = word.map(|w| uformat!("{}. {}\n", self.page_index + 1, w)); t.string("screen_content", content.as_str().into()); t.int("page_count", self.share_words.len() as i64) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_find_repeated_indices() { + let words0 = []; + let words1 = [ + TString::from_str("aaa"), + TString::from_str("bbb"), + TString::from_str("ccc"), + ]; + let words2 = [ + TString::from_str("aaa"), + TString::from_str("aaa"), + TString::from_str("bbb"), + ]; + let words3 = [ + TString::from_str("aaa"), + TString::from_str("aaa"), + TString::from_str("bbb"), + TString::from_str("bbb"), + TString::from_str("aaa"), + ]; + let words4 = [ + TString::from_str("aaa"), + TString::from_str("aaa"), + TString::from_str("aaa"), + TString::from_str("aaa"), + TString::from_str("aaa"), + ]; + + assert_eq!(ShareWords::find_repeated(&words0), IndexVec::new()); + assert_eq!(ShareWords::find_repeated(&words1), IndexVec::new()); + assert_eq!( + ShareWords::find_repeated(&words2), + IndexVec::from_slice(&[1]).unwrap() + ); + assert_eq!( + ShareWords::find_repeated(&words3), + IndexVec::from_slice(&[1, 3, 4]).unwrap() + ); + assert_eq!( + ShareWords::find_repeated(&words4), + IndexVec::from_slice(&[1, 2, 3, 4]).unwrap() + ); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index 37337020f2..a044be6b79 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -85,6 +85,7 @@ impl ShowShareWords { .and_then(|desc: TString| if desc.is_empty() { None } else { Some(desc) }); let text_info: Obj = kwargs.get(Qstr::MP_QSTR_text_info)?; let text_confirm: TString = kwargs.get(Qstr::MP_QSTR_text_confirm)?.try_into()?; + let highlight_repeated: bool = kwargs.get(Qstr::MP_QSTR_highlight_repeated)?.try_into()?; let nwords = share_words_vec.len(); let mut instructions_paragraphs = ParagraphVecShort::new(); @@ -108,12 +109,8 @@ impl ShowShareWords { .one_button_request(ButtonRequestCode::ResetDevice.with_type("share_words")) .with_pages(move |_| nwords + 2); - let content_words = Frame::left_aligned(title, ShareWords::new(share_words_vec)) - .with_subtitle(subtitle) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) - .with_vertical_pages() - .map(|_| None); + let content_words = + ShareWords::new(title, subtitle, share_words_vec, highlight_repeated).map(|_| None); let content_confirm = Frame::left_aligned(text_confirm, PromptScreen::new_hold_to_confirm()) diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 3615cd2c77..1810aa959a 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1710,6 +1710,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: str, /// text_info: Iterable[str], /// text_confirm: str, + /// highlight_repeated: bool, /// ) -> LayoutObj[UiResult]: /// """Show wallet backup words preceded by an instruction screen and followed by /// confirmation.""" diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 1e5909e2ab..21e65597ff 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -717,6 +717,8 @@ pub const TEXT_MAIN_GREY_LIGHT: TextStyle = TextStyle::new(Font::NORMAL, GREY_LIGHT, BG, GREY, GREY); pub const TEXT_SUB_GREY_LIGHT: TextStyle = TextStyle::new(Font::SUB, GREY_LIGHT, BG, GREY, GREY); pub const TEXT_SUB_GREY: TextStyle = TextStyle::new(Font::SUB, GREY, BG, GREY, GREY); +pub const TEXT_SUB_GREEN_LIME: TextStyle = + TextStyle::new(Font::SUB, GREEN_LIME, BG, GREEN_LIME, GREEN_LIME); pub const TEXT_WARNING: TextStyle = TextStyle::new(Font::NORMAL, ORANGE_LIGHT, BG, GREY, GREY); pub const TEXT_MONO: TextStyle = TextStyle::new(Font::MONO, GREY_EXTRA_LIGHT, BG, GREY, GREY) .with_line_breaking(LineBreaking::BreakWordsNoHyphen) diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 3fd35708d5..b5d3856fc7 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -405,6 +405,7 @@ def flow_show_share_words( description: str, text_info: Iterable[str], text_confirm: str, + highlight_repeated: bool, ) -> LayoutObj[UiResult]: """Show wallet backup words preceded by an instruction screen and followed by confirmation.""" diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index ecc3341de0..472a8870a5 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -664,6 +664,7 @@ class TR: reset__slip39_checklist_write_down: str = "Write down and check all shares" reset__slip39_checklist_write_down_recovery: str = "Write down & check all wallet backup shares" reset__the_threshold_sets_the_number_of_shares: str = "The threshold sets the number of shares " + reset__the_word_is_repeated: str = "The word is repeated" reset__threshold_info: str = "= minimum number of unique word lists used for recovery." reset__title_backup_is_done: str = "Backup is done" reset__title_create_wallet: str = "Create wallet" diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index e3cc9b0ae2..a7ff154c55 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -23,6 +23,7 @@ async def show_share_words( ) -> None: title = TR.reset__recovery_wallet_backup_title + highlight_repeated = True if share_index is None: subtitle = "" elif group_index is None: @@ -51,6 +52,7 @@ async def show_share_words( description=description, text_info=text_info, text_confirm=text_confirm, + highlight_repeated=highlight_repeated, ) ) diff --git a/core/translations/en.json b/core/translations/en.json index 9d785d50ec..f4148d799f 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -666,6 +666,7 @@ "reset__slip39_checklist_write_down": "Write down and check all shares", "reset__slip39_checklist_write_down_recovery": "Write down & check all wallet backup shares", "reset__the_threshold_sets_the_number_of_shares": "The threshold sets the number of shares ", + "reset__the_word_is_repeated": "The word is repeated", "reset__threshold_info": "= minimum number of unique word lists used for recovery.", "reset__title_backup_is_done": "Backup is done", "reset__title_create_wallet": "Create wallet", diff --git a/core/translations/order.json b/core/translations/order.json index 23d3a0db17..076ca0eda1 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -939,5 +939,6 @@ "937": "reset__words_may_repeat", "938": "reset__repeat_for_all_shares", "939": "homescreen__settings_subtitle", - "940": "homescreen__settings_title" + "940": "homescreen__settings_title", + "941": "reset__the_word_is_repeated" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index b6324b7af4..5e71313709 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "5b5781c3374ff27125228c121ab97436a2ba1f0581657ee56b9fa601fe3bde97", - "datetime": "2024-06-24T13:47:55.544267", - "commit": "d79768cec726c26ac1f82e62fc71b6d4568786a2" + "merkle_root": "e283dd87dd502e2b2c3e2cbe1f52efcbe99c2bf6cd8ed883ed26800a6885e4e7", + "datetime": "2024-06-24T12:47:16.181365", + "commit": "c66a73b895b37f2a9de3ac6427f372c649ecea8d" }, "history": [ { From c73115df7b38e7b67d115ead9b37fcef9dd06cea Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 13 Jun 2024 23:07:01 +0200 Subject: [PATCH 353/626] feat(core/ui): add PageCounter to T3T1 Footer PageCounter sub-component is used within Footer to indicate progress in screens, rendered e.g. as "1 / 20" for the first word in wallet backup. --- core/.changelog.d/3917.added | 1 + .../src/ui/model_mercury/component/footer.rs | 264 ++++++++++++++---- .../src/ui/model_mercury/component/frame.rs | 12 + .../ui/model_mercury/component/share_words.rs | 14 +- .../rust/src/ui/model_mercury/theme/mod.rs | 6 +- core/embed/rust/src/ui/shape/text.rs | 2 +- 6 files changed, 227 insertions(+), 72 deletions(-) create mode 100644 core/.changelog.d/3917.added diff --git a/core/.changelog.d/3917.added b/core/.changelog.d/3917.added new file mode 100644 index 0000000000..04c2c23324 --- /dev/null +++ b/core/.changelog.d/3917.added @@ -0,0 +1 @@ +[T3T1] added word counter during wallet creation diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index e8e9a12816..cd2f069345 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -2,9 +2,9 @@ use crate::{ strutil::TString, ui::{ component::{text::TextStyle, Component, Event, EventCtx, Never, SwipeDirection}, - display::Color, + display::{Color, Font}, event::SwipeEvent, - geometry::{Alignment, Offset, Rect}, + geometry::{Alignment, Alignment2D, Offset, Point, Rect}, lerp::Lerp, model_mercury::theme, shape, @@ -12,38 +12,46 @@ use crate::{ }, }; -/// Component showing a task instruction (e.g. "Swipe up") and optionally task -/// description (e.g. "Confirm transaction") to a user. A host of this component -/// is responsible of providing the exact area considering also the spacing. The -/// height must be 18px (only instruction) or 37px (both description and -/// instruction). The content and style of both description and instruction is -/// configurable separatedly. +use heapless::String; + +/// Component showing a task instruction, e.g. "Swipe up", and an optional +/// content consisting of one of these: +/// - a task description e.g. "Confirm transaction", or +/// - a page counter e.g. "1 / 3", meaning the first screen of three total. +/// A host of this component is responsible of providing the exact area +/// considering also the spacing. The height must be 18px (only instruction) or +/// 37px (instruction and description/position). #[derive(Clone)] pub struct Footer<'a> { area: Rect, - text_instruction: TString<'a>, - text_description: Option<TString<'a>>, - style_instruction: &'static TextStyle, - style_description: &'static TextStyle, + instruction: TString<'a>, + content: Option<FooterContent<'a>>, swipe_allow_up: bool, swipe_allow_down: bool, progress: i16, dir: SwipeDirection, } +#[derive(Clone)] +enum FooterContent<'a> { + Description(TString<'a>), + PageCounter(PageCounter), +} + impl<'a> Footer<'a> { /// height of the component with only instruction [px] pub const HEIGHT_SIMPLE: i16 = 18; - /// height of the component with both description and instruction [px] + /// height of the component with instruction and additional content [px] pub const HEIGHT_DEFAULT: i16 = 37; + const STYLE_INSTRUCTION: &'static TextStyle = &theme::TEXT_SUB_GREY; + const STYLE_DESCRIPTION: &'static TextStyle = &theme::TEXT_SUB_GREY_LIGHT; + pub fn new<T: Into<TString<'a>>>(instruction: T) -> Self { Self { area: Rect::zero(), - text_instruction: instruction.into(), - text_description: None, - style_instruction: &theme::TEXT_SUB_GREY, - style_description: &theme::TEXT_SUB_GREY_LIGHT, + instruction: instruction.into(), + content: None, swipe_allow_down: false, swipe_allow_up: false, progress: 0, @@ -53,33 +61,49 @@ impl<'a> Footer<'a> { pub fn with_description<T: Into<TString<'a>>>(self, description: T) -> Self { Self { - text_description: Some(description.into()), + content: Some(FooterContent::Description(description.into())), ..self } } - pub fn update_instruction<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { - self.text_instruction = s.into(); - ctx.request_paint(); + pub fn with_page_counter(self, max_pages: u8) -> Self { + Self { + content: Some(FooterContent::PageCounter(PageCounter::new(max_pages))), + ..self + } } - pub fn update_description<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { - self.text_description = Some(s.into()); + pub fn update_instruction<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { + self.instruction = s.into(); ctx.request_paint(); } - pub fn update_instruction_style(&mut self, ctx: &mut EventCtx, style: &'static TextStyle) { - self.style_instruction = style; - ctx.request_paint(); + pub fn update_description<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { + if let Some(ref mut content) = self.content { + if let Some(text) = content.as_description_mut() { + *text = s.into(); + ctx.request_paint(); + } else { + #[cfg(feature = "ui_debug")] + panic!("footer does not have description") + } + } } - pub fn update_description_style(&mut self, ctx: &mut EventCtx, style: &'static TextStyle) { - self.style_description = style; - ctx.request_paint(); + pub fn update_page_counter(&mut self, ctx: &mut EventCtx, n: u8) { + if let Some(ref mut content) = self.content { + if let Some(counter) = content.as_page_counter_mut() { + counter.update_current_page(n); + ctx.request_paint(); + } else { + #[cfg(feature = "ui_debug")] + panic!("footer does not have counter") + } + } } pub fn height(&self) -> i16 { - if self.text_description.is_some() { + if self.content.is_some() { Footer::HEIGHT_DEFAULT } else { Footer::HEIGHT_SIMPLE @@ -106,8 +130,15 @@ impl<'a> Component for Footer<'a> { fn place(&mut self, bounds: Rect) -> Rect { let h = bounds.height(); assert!(h == Footer::HEIGHT_SIMPLE || h == Footer::HEIGHT_DEFAULT); + if let Some(content) = &mut self.content { + if let Some(counter) = content.as_page_counter_mut() { + if h == Footer::HEIGHT_DEFAULT { + counter.place(bounds.split_top(Footer::HEIGHT_SIMPLE).0); + } + } + } self.area = bounds; - bounds + self.area } fn event(&mut self, _ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { @@ -137,8 +168,7 @@ impl<'a> Component for Footer<'a> { } fn paint(&mut self) { - // TODO: remove when ui-t3t1 done - todo!() + todo!("remove when ui-t3t1 done") } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { @@ -162,40 +192,45 @@ impl<'a> Component for Footer<'a> { }; target.with_origin(offset, &|target| { - // show description only if there is space for it + // show description/counter only if there is space for it if self.area.height() == Footer::HEIGHT_DEFAULT { - if let Some(description) = self.text_description { - let area_description = self.area.split_top(Footer::HEIGHT_SIMPLE).0; - let text_description_font_descent = self - .style_description - .text_font - .visible_text_height_ex("Ay") - .1; - let text_description_baseline = - area_description.bottom_center() - Offset::y(text_description_font_descent); - - description.map(|t| { - Text::new(text_description_baseline, t) - .with_font(self.style_description.text_font) - .with_fg(self.style_description.text_color) - .with_align(Alignment::Center) - .render(target); - }); + if let Some(content) = &self.content { + match content { + FooterContent::Description(text) => { + let area_description = self.area.split_top(Footer::HEIGHT_SIMPLE).0; + let text_description_font_descent = Footer::STYLE_DESCRIPTION + .text_font + .visible_text_height_ex("Ay") + .1; + let text_description_baseline = area_description.bottom_center() + - Offset::y(text_description_font_descent); + + text.map(|t| { + Text::new(text_description_baseline, t) + .with_font(Footer::STYLE_DESCRIPTION.text_font) + .with_fg(Footer::STYLE_DESCRIPTION.text_color) + .with_align(Alignment::Center) + .render(target); + }); + } + FooterContent::PageCounter(counter) => { + counter.render(target); + } + } } } let area_instruction = self.area.split_bottom(Footer::HEIGHT_SIMPLE).1; - let text_instruction_font_descent = self - .style_instruction + let text_instruction_font_descent = Footer::STYLE_INSTRUCTION .text_font .visible_text_height_ex("Ay") .1; let text_instruction_baseline = area_instruction.bottom_center() - Offset::y(text_instruction_font_descent); - self.text_instruction.map(|t| { + self.instruction.map(|t| { Text::new(text_instruction_baseline, t) - .with_font(self.style_instruction.text_font) - .with_fg(self.style_instruction.text_color) + .with_font(Footer::STYLE_INSTRUCTION.text_font) + .with_fg(Footer::STYLE_INSTRUCTION.text_color) .with_align(Alignment::Center) .render(target); }); @@ -218,9 +253,120 @@ impl<'a> Component for Footer<'a> { impl crate::trace::Trace for Footer<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Footer"); - if let Some(description) = self.text_description { - t.string("description", description); + if let Some(content) = &self.content { + match content { + FooterContent::Description(text) => t.string("description", *text), + FooterContent::PageCounter(counter) => counter.trace(t), + } + } + t.string("instruction", self.instruction); + } +} + +impl<'a> FooterContent<'a> { + pub fn as_description_mut(&mut self) -> Option<&mut TString<'a>> { + match self { + FooterContent::Description(ref mut text) => Some(text), + _ => None, + } + } + + pub fn as_page_counter_mut(&mut self) -> Option<&mut PageCounter> { + match self { + FooterContent::PageCounter(ref mut counter) => Some(counter), + _ => None, } - t.string("instruction", self.text_instruction); + } +} + +/// Helper component used within Footer instead of description for page count +/// indication, rendered e.g. as: '1 / 20'. +#[derive(Clone)] +struct PageCounter { + area: Rect, + page_curr: u8, + page_max: u8, + font: Font, +} + +impl PageCounter { + fn new(page_max: u8) -> Self { + Self { + area: Rect::zero(), + page_curr: 1, + page_max, + font: Font::SUB, + } + } + + fn update_current_page(&mut self, new_value: u8) { + self.page_curr = new_value; + } +} + +impl Component for PageCounter { + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.area = bounds; + self.area + } + + fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { + None + } + + fn paint(&mut self) { + todo!("remove when ui-t3t1 done") + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let color = if self.page_curr == self.page_max { + theme::GREEN_LIGHT + } else { + theme::GREY_LIGHT + }; + + let string_curr = uformat!("{}", self.page_curr); + let string_max = uformat!("{}", self.page_max); + + // center the whole counter "x / yz" + let offset_x = Offset::x(4); // spacing between foreslash and numbers + let width_num_curr = self.font.text_width(&string_curr); + let width_foreslash = theme::ICON_FORESLASH.toif.width(); + let width_num_max = self.font.text_width(&string_max); + let width_total = width_num_curr + width_foreslash + width_num_max + 2 * offset_x.x; + + let center_x = self.area.center().x; + let counter_y = self.font.vert_center(self.area.y0, self.area.y1, "0"); + let counter_start_x = center_x - width_total / 2; + let counter_end_x = center_x + width_total / 2; + let base_num_curr = Point::new(counter_start_x, counter_y); + let base_foreslash = Point::new(counter_start_x + width_num_curr + offset_x.x, counter_y); + let base_num_max = Point::new(counter_end_x, counter_y); + + Text::new(base_num_curr, &string_curr) + .with_align(Alignment::Start) + .with_fg(color) + .with_font(self.font) + .render(target); + shape::ToifImage::new(base_foreslash, theme::ICON_FORESLASH.toif) + .with_align(Alignment2D::BOTTOM_LEFT) + .with_fg(color) + .render(target); + Text::new(base_num_max, &string_max) + .with_align(Alignment::End) + .with_fg(color) + .with_font(self.font) + .render(target); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for PageCounter { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("PageCounter"); + t.int("page current", self.page_curr.into()); + t.int("page max", self.page_max.into()); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index a7d284a8f4..4f09eb5f41 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -153,6 +153,12 @@ where self } + #[inline(never)] + pub fn with_footer_counter(mut self, instruction: TString<'static>, max_value: u8) -> Self { + self.footer = Some(Footer::new(instruction).with_page_counter(max_value)); + self + } + pub fn with_danger(self) -> Self { self.button_styled(theme::button_danger()) .title_styled(theme::label_title_danger()) @@ -195,6 +201,12 @@ where res } + pub fn update_footer_counter(&mut self, ctx: &mut EventCtx, new_val: u8) { + if let Some(footer) = &mut self.footer { + footer.update_page_counter(ctx, new_val); + } + } + #[inline(never)] pub fn with_swipe(mut self, dir: SwipeDirection, settings: SwipeSettings) -> Self { self.footer = self.footer.map(|f| match dir { diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 4eac9d94f3..eb959847b1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -11,7 +11,7 @@ use crate::{ }, event::SwipeEvent, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, - model_mercury::component::{Footer, Frame, FrameMsg}, + model_mercury::component::{Frame, FrameMsg}, shape::{self, Renderer}, util, }, @@ -46,13 +46,15 @@ impl<'a> ShareWords<'a> { } else { None }; + let n_words = share_words.len(); Self { subtitle, frame: Frame::left_aligned(title, ShareWordsInner::new(share_words)) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_vertical_pages() - .with_subtitle(subtitle), + .with_subtitle(subtitle) + .with_footer_counter(TR::instructions__swipe_up.into(), n_words as u8), repeated_indices, } } @@ -81,7 +83,7 @@ impl<'a> Component for ShareWords<'a> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { let page_index = self.frame.inner().page_index as u8; if let Some(repeated_indices) = &self.repeated_indices { - if repeated_indices.contains(&(page_index as usize)) { + if repeated_indices.contains(&page_index) { let updated_subtitle = TString::from_translation(TR::reset__the_word_is_repeated); self.frame .update_subtitle(ctx, updated_subtitle, Some(theme::TEXT_SUB_GREEN_LIME)); @@ -133,8 +135,6 @@ struct ShareWordsInner<'a> { area_word: Rect, /// `Some` when transition animation is in progress animation: Option<Animation<f32>>, - /// Footer component for instructions and word counting - footer: Footer<'static>, progress: i16, } @@ -148,7 +148,6 @@ impl<'a> ShareWordsInner<'a> { next_index: 0, area_word: Rect::zero(), animation: None, - footer: Footer::new(TR::instructions__swipe_up), progress: 0, } } @@ -287,9 +286,6 @@ impl<'a> Component for ShareWordsInner<'a> { self.render_word(self.page_index, target); }) }; - - // footer with instructions - self.footer.render(target); } #[cfg(feature = "ui_bounds")] diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 21e65597ff..11bef8da50 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -57,6 +57,9 @@ pub const QR_SIDE_MAX: u32 = 140; // UI icons (white color). +// 12x12 +include_icon!(ICON_FORESLASH, "model_mercury/res/foreslash12.toif"); + // 20x20 include_icon!( ICON_BULLET_CHECKMARK, @@ -141,9 +144,6 @@ include_icon!(ICON_UP, "model_tt/res/caret-up24.toif"); include_icon!(ICON_DOWN, "model_tt/res/caret-down24.toif"); include_icon!(ICON_CLICK, "model_tt/res/finger24.toif"); -include_icon!(ICON_CORNER_CANCEL, "model_tt/res/x32.toif"); -include_icon!(ICON_CORNER_INFO, "model_tt/res/info32.toif"); - // Homescreen notifications. include_icon!(ICON_WARN, "model_tt/res/warning16.toif"); include_icon!(ICON_WARNING40, "model_tt/res/warning40.toif"); diff --git a/core/embed/rust/src/ui/shape/text.rs b/core/embed/rust/src/ui/shape/text.rs index 3ecf64e7b1..130f935feb 100644 --- a/core/embed/rust/src/ui/shape/text.rs +++ b/core/embed/rust/src/ui/shape/text.rs @@ -27,7 +27,7 @@ pub struct Text<'a> { impl<'a> Text<'a> { /// Creates a `shape::Text` structure with a specified - /// text (`str`) and the top-left corner (`pos`). + /// text (`str`) and the bottom-left corner (`pos`). pub fn new(pos: Point, text: &'a str) -> Self { Self { pos, From 7adceec5968d51747ba6f018848feb974f662a61 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 21 Jun 2024 10:44:21 +0200 Subject: [PATCH 354/626] feat: use alternative numeral glyphs for T3T1 Numeral chars 0-9 mapped to glyphs indices 1298-1307. This commit does not modify gen_font.py, see issue for that. --- .../lib/fonts/font_ttsatoshi_demibold_18.c | 20 +++++++++++-------- .../lib/fonts/font_ttsatoshi_demibold_18.h | 2 ++ .../lib/fonts/font_ttsatoshi_demibold_21.c | 20 +++++++++++-------- .../lib/fonts/font_ttsatoshi_demibold_21.h | 2 ++ 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/core/embed/lib/fonts/font_ttsatoshi_demibold_18.c b/core/embed/lib/fonts/font_ttsatoshi_demibold_18.c index c1e481a39e..f46c501dab 100644 --- a/core/embed/lib/fonts/font_ttsatoshi_demibold_18.c +++ b/core/embed/lib/fonts/font_ttsatoshi_demibold_18.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> // clang-format off @@ -6,6 +8,8 @@ // - the third, fourth and fifth bytes are advance, bearingX and bearingY of the horizontal metrics of the glyph // - the rest is packed 4-bit glyph data +// NOTE: numeral chars ('0','1',..,'9') mapped to alternative style glyphs contained in the font (glyph indices: 1298-1307) + /* */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_32[] = { 0, 0, 5, 0, 0 }; /* ! */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_33[] = { 3, 13, 5, 1, 13, 248, 12, 248, 12, 248, 12, 248, 12, 248, 12, 248, 11, 247, 10, 245, 8, 244, 7, 64, 1, 132, 6, 248, 12, 248, 12 }; /* " */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_34[] = { 6, 5, 8, 1, 13, 254, 146, 127, 254, 146, 127, 254, 146, 127, 254, 146, 127, 34, 16, 18 }; @@ -22,15 +26,15 @@ /* - */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_45[] = { 7, 3, 8, 0, 7, 0, 0, 0, 0, 243, 255, 255, 14, 243, 255, 255, 14 }; /* . */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_46[] = { 3, 3, 5, 1, 3, 135, 4, 254, 9, 254, 9 }; /* / */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_47[] = { 8, 17, 7, 0, 13, 0, 0, 178, 11, 0, 0, 246, 13, 0, 0, 251, 8, 0, 0, 255, 3, 0, 80, 239, 0, 0, 144, 175, 0, 0, 224, 95, 0, 0, 243, 31, 0, 0, 247, 12, 0, 0, 252, 7, 0, 16, 255, 2, 0, 96, 223, 0, 0, 160, 159, 0, 0, 240, 79, 0, 0, 244, 15, 0, 0, 248, 11, 0, 0, 253, 6, 0, 0 }; -/* 0 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_48[] = { 12, 13, 12, 0, 13, 0, 48, 234, 174, 3, 0, 0, 246, 255, 255, 127, 0, 32, 255, 109, 198, 255, 2, 160, 239, 0, 0, 253, 11, 224, 127, 0, 0, 246, 15, 240, 79, 0, 0, 243, 31, 242, 47, 0, 0, 242, 63, 240, 79, 0, 0, 243, 31, 224, 127, 0, 0, 246, 15, 160, 239, 0, 0, 253, 11, 32, 255, 93, 197, 255, 2, 0, 246, 255, 255, 127, 0, 0, 48, 234, 190, 4, 0 }; -/* 1 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_49[] = { 6, 13, 7, 0, 13, 0, 240, 111, 248, 255, 111, 248, 255, 111, 66, 244, 111, 0, 240, 111, 0, 240, 111, 0, 240, 111, 0, 240, 111, 0, 240, 111, 0, 240, 111, 0, 240, 111, 0, 240, 111, 0, 240, 111 }; -/* 2 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_50[] = { 10, 13, 10, 0, 13, 0, 162, 238, 76, 0, 32, 255, 255, 255, 6, 192, 255, 86, 253, 15, 240, 111, 0, 244, 63, 113, 23, 0, 242, 79, 0, 0, 0, 249, 31, 0, 0, 128, 255, 7, 0, 0, 248, 143, 0, 0, 128, 255, 9, 0, 0, 248, 159, 0, 0, 144, 255, 76, 51, 35, 240, 255, 255, 255, 143, 240, 255, 255, 255, 143 }; -/* 3 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_51[] = { 10, 13, 10, 0, 13, 0, 179, 238, 92, 0, 96, 255, 255, 255, 7, 240, 207, 102, 252, 15, 162, 26, 0, 243, 63, 0, 0, 16, 249, 15, 0, 0, 253, 255, 5, 0, 0, 253, 239, 4, 0, 0, 33, 250, 30, 16, 1, 0, 240, 79, 245, 31, 0, 240, 95, 242, 207, 85, 251, 47, 112, 255, 255, 255, 8, 0, 196, 238, 92, 0 }; -/* 4 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_52[] = { 10, 13, 10, 0, 13, 0, 0, 248, 255, 5, 0, 16, 255, 255, 5, 0, 144, 239, 255, 5, 0, 242, 79, 255, 5, 0, 251, 11, 255, 5, 64, 255, 3, 255, 5, 192, 175, 0, 255, 5, 245, 47, 0, 255, 5, 251, 255, 255, 255, 207, 251, 255, 255, 255, 207, 34, 34, 34, 255, 39, 0, 0, 0, 255, 5, 0, 0, 0, 255, 5 }; -/* 5 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_53[] = { 10, 13, 11, 0, 13, 80, 255, 255, 255, 31, 96, 255, 255, 255, 31, 128, 207, 68, 68, 4, 144, 175, 0, 0, 0, 176, 159, 16, 0, 0, 192, 239, 255, 175, 1, 224, 255, 255, 255, 30, 128, 120, 2, 245, 143, 0, 0, 0, 144, 191, 145, 57, 0, 160, 175, 224, 239, 86, 250, 111, 64, 255, 255, 255, 11, 0, 162, 253, 124, 0 }; +/* 0 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_48[] = { 11, 13, 10, 0, 13, 0, 145, 237, 91, 0, 0, 64, 254, 255, 255, 9, 0, 224, 239, 87, 251, 95, 0, 247, 47, 0, 176, 223, 0, 251, 10, 0, 48, 255, 2, 253, 7, 0, 0, 255, 4, 255, 5, 0, 0, 255, 6, 253, 7, 0, 0, 255, 4, 251, 10, 0, 48, 255, 2, 247, 47, 0, 176, 239, 0, 224, 239, 86, 251, 95, 0, 64, 254, 255, 255, 9, 0, 0, 162, 237, 91, 0, 0 }; +/* 1 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_49[] = { 9, 13, 10, 1, 13, 0, 224, 127, 0, 0, 253, 255, 127, 0, 0, 253, 255, 127, 0, 0, 67, 228, 127, 0, 0, 0, 208, 127, 0, 0, 0, 208, 127, 0, 0, 0, 208, 127, 0, 0, 0, 208, 127, 0, 0, 0, 208, 127, 0, 0, 0, 208, 127, 0, 0, 84, 229, 175, 85, 2, 253, 255, 255, 255, 8, 253, 255, 255, 255, 8 }; +/* 2 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_50[] = { 10, 13, 10, 0, 13, 0, 145, 253, 92, 0, 16, 254, 255, 255, 8, 160, 255, 87, 252, 31, 224, 127, 0, 243, 95, 112, 39, 0, 241, 111, 0, 0, 0, 248, 47, 0, 0, 112, 255, 8, 0, 0, 247, 175, 0, 0, 112, 255, 10, 0, 0, 247, 175, 0, 0, 112, 255, 77, 51, 35, 224, 255, 255, 255, 159, 224, 255, 255, 255, 159 }; +/* 3 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_51[] = { 10, 13, 10, 0, 13, 0, 162, 253, 108, 0, 48, 255, 255, 255, 10, 208, 223, 87, 250, 63, 160, 58, 0, 240, 111, 0, 0, 0, 247, 63, 0, 0, 250, 255, 7, 0, 0, 250, 255, 6, 0, 0, 32, 248, 63, 16, 1, 0, 208, 127, 242, 63, 0, 208, 143, 224, 223, 70, 250, 95, 80, 255, 255, 255, 11, 0, 179, 254, 108, 0 }; +/* 4 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_52[] = { 11, 13, 10, 0, 13, 0, 0, 243, 255, 10, 0, 0, 0, 252, 255, 10, 0, 0, 80, 255, 255, 10, 0, 0, 208, 143, 251, 10, 0, 0, 247, 30, 251, 10, 0, 16, 254, 7, 251, 10, 0, 128, 239, 0, 251, 10, 0, 241, 95, 0, 251, 10, 0, 247, 255, 255, 255, 255, 1, 247, 255, 255, 255, 255, 1, 33, 34, 34, 252, 43, 0, 0, 0, 0, 251, 10, 0, 0, 0, 0, 251, 10, 0 }; +/* 5 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_53[] = { 10, 13, 10, 0, 13, 96, 255, 255, 255, 15, 112, 255, 255, 255, 15, 144, 191, 68, 68, 4, 160, 159, 0, 0, 0, 192, 127, 16, 0, 0, 224, 239, 255, 175, 1, 240, 255, 255, 255, 13, 128, 104, 2, 246, 127, 0, 0, 0, 176, 175, 146, 41, 0, 192, 159, 240, 223, 85, 250, 79, 80, 255, 255, 255, 10, 0, 179, 254, 108, 0 }; /* 6 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_54[] = { 10, 13, 10, 0, 13, 0, 0, 243, 127, 0, 0, 0, 253, 13, 0, 0, 128, 255, 3, 0, 0, 243, 143, 0, 0, 0, 253, 255, 108, 0, 112, 255, 255, 255, 9, 224, 239, 53, 250, 63, 243, 79, 0, 208, 143, 243, 31, 0, 160, 175, 241, 79, 0, 208, 143, 192, 239, 53, 250, 63, 32, 255, 255, 255, 9, 0, 161, 253, 92, 0 }; -/* 7 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_55[] = { 9, 13, 9, 0, 13, 248, 255, 255, 255, 14, 248, 255, 255, 255, 14, 66, 68, 68, 255, 11, 0, 0, 64, 255, 5, 0, 0, 176, 239, 0, 0, 0, 241, 143, 0, 0, 0, 248, 47, 0, 0, 0, 254, 11, 0, 0, 64, 255, 5, 0, 0, 176, 239, 0, 0, 0, 242, 143, 0, 0, 0, 248, 31, 0, 0, 0, 254, 11, 0, 0 }; -/* 8 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_56[] = { 10, 13, 11, 0, 13, 0, 162, 253, 124, 0, 32, 255, 255, 255, 11, 176, 223, 37, 248, 79, 208, 127, 0, 208, 127, 160, 207, 3, 246, 79, 16, 252, 255, 255, 8, 32, 253, 255, 255, 9, 192, 207, 2, 245, 95, 241, 63, 0, 160, 175, 242, 79, 0, 160, 191, 224, 223, 19, 246, 143, 64, 255, 255, 255, 13, 0, 162, 253, 140, 0 }; +/* 7 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_55[] = { 10, 13, 10, 0, 13, 240, 255, 255, 255, 111, 240, 255, 255, 255, 111, 64, 68, 68, 248, 79, 0, 0, 0, 251, 13, 0, 0, 32, 255, 7, 0, 0, 128, 255, 1, 0, 0, 224, 175, 0, 0, 0, 245, 63, 0, 0, 0, 252, 13, 0, 0, 32, 255, 7, 0, 0, 144, 255, 1, 0, 0, 224, 175, 0, 0, 0, 246, 63, 0, 0 }; +/* 8 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_56[] = { 10, 13, 10, 0, 13, 0, 162, 254, 108, 0, 48, 255, 255, 255, 10, 192, 223, 36, 248, 63, 240, 111, 0, 240, 111, 176, 207, 19, 247, 47, 32, 253, 255, 255, 6, 32, 253, 255, 255, 7, 208, 191, 2, 246, 79, 242, 47, 0, 176, 159, 243, 47, 0, 176, 175, 240, 207, 19, 247, 111, 80, 255, 255, 255, 12, 0, 179, 254, 124, 0 }; /* 9 */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_57[] = { 10, 13, 10, 0, 13, 0, 161, 237, 92, 0, 32, 255, 255, 255, 8, 192, 239, 53, 250, 63, 241, 79, 0, 208, 143, 243, 31, 0, 160, 175, 241, 79, 0, 208, 175, 192, 239, 53, 250, 111, 48, 255, 255, 255, 14, 0, 162, 254, 255, 4, 0, 0, 242, 159, 0, 0, 0, 252, 14, 0, 0, 96, 255, 4, 0, 0, 241, 175, 0, 0 }; /* : */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_58[] = { 3, 10, 5, 1, 10, 254, 9, 254, 9, 135, 5, 0, 0, 0, 0, 0, 0, 0, 0, 135, 4, 254, 9, 254, 9 }; /* ; */ static const uint8_t Font_TTSatoshi_DemiBold_18_glyph_59[] = { 4, 12, 5, 0, 10, 208, 175, 208, 175, 112, 88, 0, 0, 0, 0, 0, 0, 0, 0, 224, 143, 240, 79, 241, 15, 243, 11, 32, 1 }; diff --git a/core/embed/lib/fonts/font_ttsatoshi_demibold_18.h b/core/embed/lib/fonts/font_ttsatoshi_demibold_18.h index 38da0fa2d4..0508e3a324 100644 --- a/core/embed/lib/fonts/font_ttsatoshi_demibold_18.h +++ b/core/embed/lib/fonts/font_ttsatoshi_demibold_18.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> #if TREZOR_FONT_BPP != 4 diff --git a/core/embed/lib/fonts/font_ttsatoshi_demibold_21.c b/core/embed/lib/fonts/font_ttsatoshi_demibold_21.c index 2a3079b125..edd6f21f3e 100644 --- a/core/embed/lib/fonts/font_ttsatoshi_demibold_21.c +++ b/core/embed/lib/fonts/font_ttsatoshi_demibold_21.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> // clang-format off @@ -6,6 +8,8 @@ // - the third, fourth and fifth bytes are advance, bearingX and bearingY of the horizontal metrics of the glyph // - the rest is packed 4-bit glyph data +// NOTE: numeral chars ('0','1',..,'9') mapped to alternative style glyphs contained in the font (glyph indices: 1298-1307) +// /* */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_32[] = { 0, 0, 5, 0, 0 }; /* ! */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_33[] = { 4, 15, 6, 1, 15, 245, 111, 245, 111, 245, 111, 245, 111, 245, 111, 245, 111, 244, 95, 243, 79, 241, 47, 240, 31, 160, 10, 0, 0, 228, 110, 245, 111, 245, 111 }; /* " */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_34[] = { 7, 5, 9, 1, 15, 251, 10, 253, 8, 251, 10, 253, 8, 251, 10, 253, 8, 251, 10, 253, 8, 218, 9, 219, 7 }; @@ -22,15 +26,15 @@ /* - */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_45[] = { 9, 3, 9, 0, 8, 96, 102, 102, 102, 0, 240, 255, 255, 255, 1, 240, 255, 255, 255, 1 }; /* . */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_46[] = { 4, 3, 5, 1, 3, 235, 46, 251, 47, 251, 47 }; /* / */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_47[] = { 9, 20, 8, 0, 16, 0, 0, 32, 136, 2, 0, 0, 128, 255, 1, 0, 0, 208, 207, 0, 0, 0, 242, 127, 0, 0, 0, 246, 63, 0, 0, 0, 251, 14, 0, 0, 0, 255, 9, 0, 0, 64, 255, 4, 0, 0, 144, 255, 0, 0, 0, 224, 191, 0, 0, 0, 243, 111, 0, 0, 0, 247, 47, 0, 0, 0, 252, 13, 0, 0, 16, 255, 8, 0, 0, 96, 255, 3, 0, 0, 160, 239, 0, 0, 0, 240, 175, 0, 0, 0, 244, 95, 0, 0, 0, 248, 31, 0, 0, 0, 253, 12, 0, 0, 0 }; -/* 0 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_48[] = { 14, 15, 14, 0, 15, 0, 0, 197, 255, 108, 0, 0, 0, 144, 255, 255, 255, 10, 0, 0, 249, 255, 187, 255, 159, 0, 32, 255, 46, 0, 210, 255, 2, 144, 255, 5, 0, 64, 255, 10, 192, 239, 0, 0, 0, 254, 12, 224, 207, 0, 0, 0, 251, 15, 240, 191, 0, 0, 0, 250, 31, 224, 207, 0, 0, 0, 251, 15, 192, 239, 0, 0, 0, 254, 12, 144, 255, 5, 0, 64, 255, 10, 32, 255, 46, 0, 210, 255, 3, 0, 249, 255, 187, 255, 175, 0, 0, 160, 255, 255, 255, 10, 0, 0, 0, 165, 238, 107, 0, 0 }; -/* 1 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_49[] = { 7, 15, 8, 0, 15, 0, 112, 255, 4, 148, 217, 255, 4, 247, 255, 255, 4, 247, 255, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4, 0, 96, 255, 4 }; -/* 2 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_50[] = { 12, 15, 12, 0, 15, 0, 80, 235, 190, 5, 0, 0, 249, 255, 255, 159, 0, 80, 255, 191, 251, 255, 5, 192, 255, 4, 96, 255, 10, 240, 207, 0, 0, 255, 13, 32, 18, 0, 16, 255, 12, 0, 0, 0, 160, 255, 7, 0, 0, 0, 249, 207, 0, 0, 0, 160, 255, 29, 0, 0, 0, 250, 223, 1, 0, 0, 160, 255, 29, 0, 0, 0, 251, 223, 1, 0, 0, 160, 255, 191, 153, 153, 25, 208, 255, 255, 255, 255, 31, 208, 255, 255, 255, 255, 31 }; -/* 3 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_51[] = { 12, 15, 12, 0, 15, 0, 112, 236, 190, 5, 0, 16, 253, 255, 255, 175, 0, 160, 255, 174, 251, 255, 5, 240, 223, 0, 48, 255, 10, 80, 53, 0, 0, 255, 11, 0, 0, 0, 145, 255, 7, 0, 0, 242, 255, 191, 0, 0, 0, 242, 255, 95, 0, 0, 0, 97, 232, 255, 4, 0, 0, 0, 16, 254, 12, 163, 74, 0, 0, 252, 15, 242, 207, 0, 32, 255, 13, 192, 255, 174, 251, 255, 8, 32, 254, 255, 255, 191, 0, 0, 128, 252, 190, 5, 0 }; -/* 4 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_52[] = { 12, 15, 12, 0, 15, 0, 0, 176, 255, 191, 0, 0, 0, 244, 255, 191, 0, 0, 0, 252, 255, 191, 0, 0, 80, 255, 249, 191, 0, 0, 208, 239, 240, 191, 0, 0, 246, 111, 240, 191, 0, 0, 254, 13, 240, 191, 0, 112, 255, 5, 240, 191, 0, 241, 223, 0, 240, 191, 0, 248, 191, 136, 248, 239, 56, 250, 255, 255, 255, 255, 111, 250, 255, 255, 255, 255, 111, 0, 0, 0, 240, 191, 0, 0, 0, 0, 240, 191, 0, 0, 0, 0, 240, 191, 0 }; -/* 5 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_53[] = { 12, 15, 12, 0, 15, 0, 255, 255, 255, 255, 9, 16, 255, 255, 255, 255, 9, 48, 255, 156, 153, 153, 5, 64, 255, 5, 0, 0, 0, 96, 255, 3, 0, 0, 0, 112, 255, 100, 87, 1, 0, 144, 255, 255, 255, 127, 0, 160, 255, 255, 255, 255, 7, 176, 255, 40, 80, 255, 31, 0, 0, 0, 0, 247, 79, 48, 35, 0, 0, 245, 95, 224, 239, 2, 0, 251, 47, 112, 255, 191, 234, 255, 11, 0, 251, 255, 255, 223, 1, 0, 96, 235, 207, 8, 0 }; +/* 0 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_48[] = { 13, 15, 12, 0, 15, 0, 80, 236, 207, 6, 0, 0, 0, 249, 255, 255, 191, 1, 0, 128, 255, 207, 251, 255, 10, 0, 241, 239, 3, 32, 253, 63, 0, 248, 111, 0, 0, 243, 191, 0, 251, 15, 0, 0, 208, 223, 0, 253, 13, 0, 0, 176, 255, 0, 255, 11, 0, 0, 144, 255, 2, 253, 13, 0, 0, 176, 255, 0, 251, 15, 0, 0, 208, 223, 0, 248, 111, 0, 0, 243, 191, 0, 241, 239, 3, 16, 253, 63, 0, 128, 255, 191, 251, 255, 10, 0, 0, 249, 255, 255, 191, 1, 0, 0, 80, 234, 190, 6, 0, 0 }; +/* 1 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_49[] = { 11, 15, 12, 1, 15, 0, 32, 255, 8, 0, 0, 150, 201, 255, 8, 0, 0, 250, 255, 255, 8, 0, 0, 250, 255, 255, 8, 0, 0, 0, 32, 255, 8, 0, 0, 0, 32, 255, 8, 0, 0, 0, 32, 255, 8, 0, 0, 0, 32, 255, 8, 0, 0, 0, 32, 255, 8, 0, 0, 0, 32, 255, 8, 0, 0, 0, 32, 255, 8, 0, 0, 0, 32, 255, 8, 0, 0, 183, 203, 255, 189, 187, 1, 250, 255, 255, 255, 255, 1, 250, 255, 255, 255, 255, 1 }; +/* 2 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_50[] = { 11, 15, 12, 1, 15, 0, 180, 238, 108, 0, 0, 128, 255, 255, 255, 11, 0, 243, 255, 188, 255, 111, 0, 250, 111, 0, 244, 207, 0, 253, 14, 0, 208, 255, 0, 34, 2, 0, 240, 239, 0, 0, 0, 0, 248, 159, 0, 0, 0, 128, 255, 29, 0, 0, 0, 248, 239, 2, 0, 0, 144, 255, 46, 0, 0, 0, 249, 239, 2, 0, 0, 144, 255, 46, 0, 0, 0, 249, 255, 155, 153, 153, 2, 251, 255, 255, 255, 255, 3, 251, 255, 255, 255, 255, 3 }; +/* 3 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_51[] = { 12, 15, 12, 0, 15, 0, 80, 235, 207, 7, 0, 0, 250, 255, 255, 223, 0, 112, 255, 191, 234, 255, 9, 192, 255, 2, 16, 254, 13, 64, 69, 0, 0, 252, 15, 0, 0, 0, 97, 255, 10, 0, 0, 240, 255, 223, 1, 0, 0, 240, 255, 127, 0, 0, 0, 96, 199, 255, 7, 0, 0, 0, 0, 252, 15, 161, 106, 0, 0, 248, 47, 240, 239, 2, 0, 253, 15, 144, 255, 191, 234, 255, 11, 0, 252, 255, 255, 223, 1, 0, 96, 235, 206, 7, 0 }; +/* 4 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_52[] = { 12, 15, 12, 0, 15, 0, 0, 96, 255, 255, 1, 0, 0, 224, 255, 255, 1, 0, 0, 247, 255, 255, 1, 0, 16, 255, 188, 255, 1, 0, 128, 255, 164, 255, 1, 0, 242, 191, 160, 255, 1, 0, 250, 63, 160, 255, 1, 48, 255, 10, 160, 255, 1, 176, 255, 2, 160, 255, 1, 243, 239, 136, 216, 255, 104, 245, 255, 255, 255, 255, 191, 245, 255, 255, 255, 255, 191, 0, 0, 0, 160, 255, 1, 0, 0, 0, 160, 255, 1, 0, 0, 0, 160, 255, 1 }; +/* 5 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_53[] = { 12, 15, 12, 0, 15, 32, 255, 255, 255, 255, 7, 48, 255, 255, 255, 255, 7, 80, 255, 155, 153, 153, 4, 96, 255, 3, 0, 0, 0, 128, 255, 1, 0, 0, 0, 144, 255, 99, 71, 1, 0, 176, 255, 255, 255, 111, 0, 192, 255, 255, 255, 255, 5, 208, 255, 39, 97, 255, 15, 0, 0, 0, 0, 249, 63, 48, 35, 0, 0, 247, 79, 240, 239, 1, 0, 253, 31, 144, 255, 191, 234, 255, 10, 0, 252, 255, 255, 223, 1, 0, 112, 235, 206, 7, 0 }; /* 6 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_54[] = { 12, 15, 12, 0, 15, 0, 0, 80, 255, 12, 0, 0, 0, 225, 255, 3, 0, 0, 0, 249, 159, 0, 0, 0, 48, 255, 30, 0, 0, 0, 208, 255, 6, 0, 0, 0, 247, 255, 207, 7, 0, 32, 255, 255, 255, 207, 0, 160, 255, 175, 233, 255, 9, 240, 255, 2, 16, 254, 15, 242, 175, 0, 0, 248, 63, 241, 175, 0, 0, 248, 63, 224, 255, 2, 16, 253, 15, 96, 255, 159, 233, 255, 8, 0, 250, 255, 255, 207, 0, 0, 80, 235, 190, 6, 0 }; -/* 7 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_55[] = { 11, 15, 11, 0, 15, 247, 255, 255, 255, 255, 6, 247, 255, 255, 255, 255, 6, 148, 153, 153, 249, 255, 5, 0, 0, 0, 242, 239, 0, 0, 0, 0, 248, 143, 0, 0, 0, 0, 254, 47, 0, 0, 0, 80, 255, 11, 0, 0, 0, 176, 255, 4, 0, 0, 0, 242, 239, 0, 0, 0, 0, 248, 127, 0, 0, 0, 0, 254, 31, 0, 0, 0, 80, 255, 10, 0, 0, 0, 192, 255, 4, 0, 0, 0, 242, 223, 0, 0, 0, 0, 249, 111, 0, 0, 0 }; -/* 8 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_56[] = { 12, 15, 12, 0, 15, 0, 64, 235, 207, 8, 0, 0, 249, 255, 255, 239, 1, 80, 255, 142, 199, 255, 11, 144, 255, 3, 0, 253, 15, 160, 255, 0, 0, 250, 15, 96, 255, 26, 80, 255, 11, 0, 249, 255, 255, 223, 2, 0, 246, 255, 255, 191, 0, 80, 255, 109, 165, 255, 11, 208, 239, 0, 0, 249, 47, 240, 191, 0, 0, 245, 111, 224, 239, 1, 0, 250, 79, 128, 255, 142, 183, 255, 14, 0, 252, 255, 255, 239, 3, 0, 80, 235, 207, 24, 0 }; +/* 7 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_55[] = { 11, 15, 12, 1, 15, 253, 255, 255, 255, 255, 0, 253, 255, 255, 255, 255, 0, 152, 153, 153, 251, 255, 0, 0, 0, 0, 247, 159, 0, 0, 0, 0, 254, 47, 0, 0, 0, 64, 255, 12, 0, 0, 0, 176, 255, 5, 0, 0, 0, 242, 239, 0, 0, 0, 0, 248, 143, 0, 0, 0, 0, 254, 47, 0, 0, 0, 80, 255, 11, 0, 0, 0, 176, 255, 4, 0, 0, 0, 242, 239, 0, 0, 0, 0, 248, 127, 0, 0, 0, 0, 254, 31, 0, 0, 0 }; +/* 8 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_56[] = { 12, 15, 12, 0, 15, 0, 80, 235, 206, 7, 0, 0, 251, 255, 255, 223, 0, 96, 255, 142, 215, 255, 9, 176, 255, 1, 0, 254, 14, 192, 255, 0, 0, 252, 14, 112, 255, 25, 112, 255, 10, 0, 251, 255, 255, 207, 1, 0, 247, 255, 255, 159, 0, 112, 255, 108, 182, 255, 9, 224, 223, 0, 0, 251, 31, 241, 159, 0, 0, 247, 79, 240, 223, 0, 0, 251, 47, 160, 255, 125, 199, 255, 12, 16, 253, 255, 255, 239, 2, 0, 96, 236, 206, 8, 0 }; /* 9 */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_57[] = { 12, 15, 12, 0, 15, 0, 64, 235, 190, 6, 0, 0, 250, 255, 255, 191, 0, 96, 255, 175, 233, 255, 8, 208, 255, 2, 16, 254, 15, 241, 175, 0, 0, 248, 63, 241, 175, 0, 0, 248, 79, 224, 255, 2, 16, 253, 47, 96, 255, 159, 233, 255, 12, 0, 250, 255, 255, 255, 4, 0, 80, 235, 255, 175, 0, 0, 0, 48, 255, 30, 0, 0, 0, 208, 255, 6, 0, 0, 0, 247, 207, 0, 0, 0, 16, 255, 47, 0, 0, 0, 160, 255, 8, 0, 0 }; /* : */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_58[] = { 4, 11, 5, 1, 11, 251, 47, 251, 47, 251, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 235, 46, 251, 47, 251, 47 }; /* ; */ static const uint8_t Font_TTSatoshi_DemiBold_21_glyph_59[] = { 5, 13, 5, 0, 11, 160, 255, 4, 160, 255, 4, 144, 255, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 255, 2, 192, 223, 0, 224, 159, 0, 240, 79, 0, 209, 13, 0 }; diff --git a/core/embed/lib/fonts/font_ttsatoshi_demibold_21.h b/core/embed/lib/fonts/font_ttsatoshi_demibold_21.h index e995c54edd..79c7b42403 100644 --- a/core/embed/lib/fonts/font_ttsatoshi_demibold_21.h +++ b/core/embed/lib/fonts/font_ttsatoshi_demibold_21.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> #if TREZOR_FONT_BPP != 4 From 665854cd9b68871ef837dfd28864afc22873d236 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 27 Jun 2024 16:48:12 +0200 Subject: [PATCH 355/626] chore(core): update translations Translated copy for additional wallet backup info and some leftovers from previous PRs. [no changelog] --- core/translations/cs.json | 17 +++++++++++++++++ core/translations/de.json | 17 +++++++++++++++++ core/translations/es.json | 17 +++++++++++++++++ core/translations/fr.json | 17 +++++++++++++++++ core/translations/signatures.json | 6 +++--- 5 files changed, 71 insertions(+), 3 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 5ad3b4ebab..a035fa0d26 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -113,6 +113,7 @@ "bitcoin__unverified_external_inputs": "Transakce obsahuje neověřené externí vstupy.", "bitcoin__valid_signature": "Podpis je platný.", "bitcoin__voting_rights": "Hlasovací práva:", + "brightness__title": "Nastavení jasu", "buttons__abort": "Zrušit", "buttons__access": "Přístup", "buttons__again": "Znovu", @@ -157,6 +158,8 @@ "cardano__addr_pointer": "Ukazatel", "cardano__addr_reward": "Odměna", "cardano__address_no_staking": "Adresa - žádné odměny za staking.", + "cardano__always_abstain": "Vždy se zdržet", + "cardano__always_no_confidence": "Vždy hlasovat Ne", "cardano__amount_burned_decimals_unknown": "Spálená částka (neznámý počet desetinných míst):", "cardano__amount_minted_decimals_unknown": "Vytěžená částka (neznámý počet nedesetinných míst):", "cardano__amount_sent_decimals_unknown": "Odeslaná částka (neznámý počet desetinných míst):", @@ -184,6 +187,9 @@ "cardano__credential_mismatch": "Údaje neodpovídají platebním údajům.", "cardano__datum_hash": "Hash dat:", "cardano__delegating_to": "Delegování:", + "cardano__delegating_to_key_hash": "Delegování na hash klíče:", + "cardano__delegating_to_script": "Delegování na skript:", + "cardano__deposit": "Vklad:", "cardano__for_account_and_index_template": "pro účet {0} a index {1}:", "cardano__for_account_template": "pro účet {0}:", "cardano__for_key_hash": "pro hash klíče:", @@ -253,6 +259,7 @@ "cardano__unusual_path": "Neobvyklá cesta.", "cardano__valid_since": "Platné od:", "cardano__verify_script": "Ověřit skript", + "cardano__vote_delegation": "Delegace hlasování", "cardano__vote_key_registration": "Registrace hlasovacího klíče (CIP-36)", "cardano__vote_public_key": "Veřejný hlasovací klíč:", "cardano__voting_purpose": "Účel hlasování:", @@ -383,6 +390,9 @@ "haptic_feedback__title": "Haptická zpětná vazba", "homescreen__click_to_connect": "Kliknutím se připojíte", "homescreen__click_to_unlock": "Kliknutím odemknete", + "homescreen__set_default": "Chcete změnit tapetu na výchozí obrázek?", + "homescreen__settings_subtitle": "Nastavení", + "homescreen__settings_title": "Domovská obrazovka", "homescreen__title_backup_failed": "Záloha selhala", "homescreen__title_backup_needed": "Je potřeba záloha", "homescreen__title_coinjoin_authorized": "Coinjoin schválen", @@ -610,6 +620,7 @@ "recovery__title_dry_run": "Kontrola zálohy", "recovery__title_recover": "Obnovit peněženku", "recovery__title_remaining_shares": "Zbývající části", + "recovery__title_unlock_repeated_backup": "Vícedílná záloha", "recovery__type_word_x_of_y_template": "Zadejte slovo {0} z {1}", "recovery__unlock_repeated_backup": "Vytvořit další zálohu?", "recovery__unlock_repeated_backup_verb": "Vytvořit zálohu", @@ -636,6 +647,7 @@ "reset__check_wallet_backup_title": "Zkontrolovat seed", "reset__continue_with_next_share": "Pokračujte další částí.", "reset__continue_with_share_template": "Pokračujte částí #{0}.", + "reset__create_x_of_y_multi_share_backup_template": "Chcete vytvořit vícedílnou zálohu s {0} díly z celkových {1}?", "reset__finished_verifying_group_template": "Ověřili jste části zálohy skupiny {0}.", "reset__finished_verifying_shares": "Dokončili jste ověření částí zálohy.", "reset__finished_verifying_wallet_backup": "Dokončili jste ověření zálohy.", @@ -662,6 +674,7 @@ "reset__only_one_share_will_be_created": "Bude vytvořena pouze jedna část.", "reset__recovery_share_title_template": "Část zálohy č. {0}", "reset__recovery_wallet_backup_title": "Záloha", + "reset__repeat_for_all_shares": "Zopakujte to pro všechny díly.", "reset__required_number_of_groups": "Požadovaný počet skupin pro obnovení.", "reset__select_correct_word": "Pro každou pozici vyberte správné slovo.", "reset__select_threshold": "Vyberte minimální počet částí potřebných k obnovení peněženky.", @@ -672,6 +685,7 @@ "reset__share_completed_template": "Část č. {0} byla dokončena", "reset__share_words_title": "Standardní záloha", "reset__slip39_checklist_num_groups": "Počet skupin", + "reset__slip39_checklist_num_groups_x_template": "Počet skupin: {0}", "reset__slip39_checklist_num_shares": "Počet částí", "reset__slip39_checklist_num_shares_x_template": "Počet částí", "reset__slip39_checklist_set_num_groups": "Nastavte počet skupin", @@ -684,6 +698,7 @@ "reset__slip39_checklist_write_down": "Zapište si a zkontr. všechny části", "reset__slip39_checklist_write_down_recovery": "Zapište si a zkontr. části zálohy", "reset__the_threshold_sets_the_number_of_shares": "Počet pro obnovu nastaví počet částí ", + "reset__the_word_is_repeated": "Slovo se opakuje", "reset__threshold_info": "= minimální počet seznamů jedinečných slov u obnovy.", "reset__title_backup_is_done": "Záloha je dokončena", "reset__title_create_wallet": "Vytv. peněženku", @@ -694,10 +709,12 @@ "reset__title_set_number_of_groups": "Nastavit počet skupin", "reset__title_set_number_of_shares": "Nastavit počet částí", "reset__title_set_threshold": "Nast. počet obnovy", + "reset__title_shamir_backup": "Vícedílná záloha", "reset__to_form_group_template": "k vytvoření skupiny {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Nastavte celkový počet částí ve skupině {0}.", "reset__use_your_backup": "Použijte zálohu, když potřebujete obnovit peněženku.", + "reset__words_may_repeat": "Slova se mohou opakovat.", "reset__words_written_down_template": "Mám zapsáno postupně všech {0} slov.", "reset__write_down_words_template": "Na kartu zálohy napište {0} slov v pořadí.", "reset__wrong_word_selected": "Vybrali jste chybné slovo!", diff --git a/core/translations/de.json b/core/translations/de.json index 6a1caffce8..a7c59a8448 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -113,6 +113,7 @@ "bitcoin__unverified_external_inputs": "Die Transaktion enthält nicht verifizierte externe Eingaben.", "bitcoin__valid_signature": "Die Signatur ist gültig.", "bitcoin__voting_rights": "Stimmrechte an:", + "brightness__title": "Helligkeit einstellen", "buttons__abort": "Abbrechen", "buttons__access": "Zugriff", "buttons__again": "Wiederholen", @@ -157,6 +158,8 @@ "cardano__addr_pointer": "Pointer", "cardano__addr_reward": "Belohnung", "cardano__address_no_staking": "Adresse - keine Staking-Belohnungen.", + "cardano__always_abstain": "Immer enthalten", + "cardano__always_no_confidence": "Immer „Nein“", "cardano__amount_burned_decimals_unknown": "Verbrannter Betrag (Dezimalstellen unbekannt):", "cardano__amount_minted_decimals_unknown": "Geminteter Betrag (Dezimalstellen unbekannt):", "cardano__amount_sent_decimals_unknown": "Gesendeter Betrag (Dezimalstellen unbekannt):", @@ -184,6 +187,9 @@ "cardano__credential_mismatch": "Daten stimmen nicht mit Zahlungsdaten überein.", "cardano__datum_hash": "Bezugspunkt-Hash:", "cardano__delegating_to": "Delegieren an:", + "cardano__delegating_to_key_hash": "Deligieren an Key-Hash:", + "cardano__delegating_to_script": "Deligieren an Skript:", + "cardano__deposit": "Einzahlung:", "cardano__for_account_and_index_template": "für Konto {0} und Index {1}:", "cardano__for_account_template": "für Konto {0}:", "cardano__for_key_hash": "für Key-Hash:", @@ -253,6 +259,7 @@ "cardano__unusual_path": "Pfad ist ungewöhnlich.", "cardano__valid_since": "Gültig seit:", "cardano__verify_script": "Skript verifizieren", + "cardano__vote_delegation": "Vote-Delegierung", "cardano__vote_key_registration": "Vote-Key-Registrierung (CIP-36)", "cardano__vote_public_key": "Public Key für Vote:", "cardano__voting_purpose": "Voting-Zweck:", @@ -383,6 +390,9 @@ "haptic_feedback__title": "Haptisches Feedback", "homescreen__click_to_connect": "Zum Verbinden klicken", "homescreen__click_to_unlock": "Zum Entsperren klicken", + "homescreen__set_default": "Wallpaper zu Standardbild ändern?", + "homescreen__settings_subtitle": "Einstellungen", + "homescreen__settings_title": "Startbildschirm", "homescreen__title_backup_failed": "Backup-fehler", "homescreen__title_backup_needed": "Backup erforderlich", "homescreen__title_coinjoin_authorized": "Coinjoin autoris.", @@ -610,6 +620,7 @@ "recovery__title_dry_run": "Backup-überprüfung", "recovery__title_recover": "Wallet wiederherst.", "recovery__title_remaining_shares": "Verbleibende shares", + "recovery__title_unlock_repeated_backup": "Multi-Share-Backup", "recovery__type_word_x_of_y_template": "Tippe Wort {0} von {1}", "recovery__unlock_repeated_backup": "Zusätzliches Backup erstellen?", "recovery__unlock_repeated_backup_verb": "Backup erstellen", @@ -636,6 +647,7 @@ "reset__check_wallet_backup_title": "Seed überprüfen", "reset__continue_with_next_share": "Fahre mit dem nächsten Share fort.", "reset__continue_with_share_template": "Fahre mit Share #{0} fort.", + "reset__create_x_of_y_multi_share_backup_template": "Möchtest du {0} von {1} Multi-Share-Backups erstellen?", "reset__finished_verifying_group_template": "Verifizierung deiner Recovery Shares für Gruppe {0} ist abgeschlossen.", "reset__finished_verifying_shares": "Die Verifizierung deiner Recovery Shares ist abgeschlossen.", "reset__finished_verifying_wallet_backup": "Die Verifizierung deines Recovery Seeds ist abgeschlossen.", @@ -662,6 +674,7 @@ "reset__only_one_share_will_be_created": "Es wird nur ein Share erstellt.", "reset__recovery_share_title_template": "Recovery share #{0}", "reset__recovery_wallet_backup_title": "Recovery seed", + "reset__repeat_for_all_shares": "Für alle Shares wiederholen.", "reset__required_number_of_groups": "Zur Wiederherstellung erforderliche Anzahl von Gruppen.", "reset__select_correct_word": "Wähle für jede Position das richtige Wort.", "reset__select_threshold": "Wähle die Mindestzahl erforderlicher Shares, um dein Wallet wiederherzustellen.", @@ -672,6 +685,7 @@ "reset__share_completed_template": "Share #{0} abgeschlossen", "reset__share_words_title": "Standard-backup", "reset__slip39_checklist_num_groups": "Anzahl der Gruppen", + "reset__slip39_checklist_num_groups_x_template": "Anzahl der Gruppen: {0}", "reset__slip39_checklist_num_shares": "Anzahl der Shares", "reset__slip39_checklist_num_shares_x_template": "Anzahl der Shares", "reset__slip39_checklist_set_num_groups": "Gruppenanzahl wählen", @@ -684,6 +698,7 @@ "reset__slip39_checklist_write_down": "Alle Shares notieren und prüfen", "reset__slip39_checklist_write_down_recovery": "Notiere und prüfe alle Wallet-Backup-Shares.", "reset__the_threshold_sets_the_number_of_shares": "Die Schwelle bestimmt die Anzahl der Shares ", + "reset__the_word_is_repeated": "Das Wort wiederholt sich", "reset__threshold_info": "= Mindestanzahl eindeutiger Wortlisten für Wiederherstellung.", "reset__title_backup_is_done": "Backup fertig", "reset__title_create_wallet": "Wallet erstellen", @@ -694,10 +709,12 @@ "reset__title_set_number_of_groups": "Anzahl der gruppen", "reset__title_set_number_of_shares": "Anzahl der shares", "reset__title_set_threshold": "Schwelle festlegen", + "reset__title_shamir_backup": "Multi-Share-Backup", "reset__to_form_group_template": "zur Bildung von Gruppe {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Wähle die Share-Anzahl in Gruppe {0}.", "reset__use_your_backup": "Verwende dein Backup, um dein Wallet wiederherzustellen.", + "reset__words_may_repeat": "Einige Wörter wiederholen sich möglicherweise.", "reset__words_written_down_template": "Ich habe alle {0} Wörter der Reihe nach aufgeschrieben.", "reset__write_down_words_template": "Schreibe folgende {0} Wörter der Reihe nach auf deine Wallet-Backup-Karte.", "reset__wrong_word_selected": "Ausgewähltes Wort ist falsch!", diff --git a/core/translations/es.json b/core/translations/es.json index fc136d941a..c3d4e38718 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -113,6 +113,7 @@ "bitcoin__unverified_external_inputs": "La transacción contiene entradas externas sin verificar.", "bitcoin__valid_signature": "La firma es válida.", "bitcoin__voting_rights": "Derechos de voto de:", + "brightness__title": "Ajustar brillo", "buttons__abort": "Abortar", "buttons__access": "Acceder", "buttons__again": "De nuevo", @@ -157,6 +158,8 @@ "cardano__addr_pointer": "Pointer", "cardano__addr_reward": "Recompensa", "cardano__address_no_staking": "dirección: sin recompensas de staking.", + "cardano__always_abstain": "Abstenerse siempre", + "cardano__always_no_confidence": "Votar siempre No", "cardano__amount_burned_decimals_unknown": "Cantidad eliminada (decimales desconocidos):", "cardano__amount_minted_decimals_unknown": "Cantidad acuñada (decimales desconocidos):", "cardano__amount_sent_decimals_unknown": "Importe enviado (decimales desconocidos):", @@ -184,6 +187,9 @@ "cardano__credential_mismatch": "Las credenciales no coinciden con las de pago.", "cardano__datum_hash": "Hash de datos:", "cardano__delegating_to": "Delegar en:", + "cardano__delegating_to_key_hash": "Delegar en hash de clave:", + "cardano__delegating_to_script": "Delegar en script:", + "cardano__deposit": "Depósito:", "cardano__for_account_and_index_template": "para la cuenta {0} y el índice {1}:", "cardano__for_account_template": "para la cuenta {0}:", "cardano__for_key_hash": "para el hash de clave:", @@ -253,6 +259,7 @@ "cardano__unusual_path": "La ruta es inusual.", "cardano__valid_since": "Válido desde:", "cardano__verify_script": "Verificar script", + "cardano__vote_delegation": "Delegación de voto", "cardano__vote_key_registration": "Registro de la clave de voto (CIP-36)", "cardano__vote_public_key": "Clave pública de voto:", "cardano__voting_purpose": "Propósito de la votación:", @@ -383,6 +390,9 @@ "haptic_feedback__title": "Respuesta háptica", "homescreen__click_to_connect": "Clic para conectar", "homescreen__click_to_unlock": "Clic para desbloquear", + "homescreen__set_default": "¿Cambiar el fondo de pantalla a la imagen predeterminada?", + "homescreen__settings_subtitle": "Configuración", + "homescreen__settings_title": "Pantalla de inicio", "homescreen__title_backup_failed": "Error c. seg.", "homescreen__title_backup_needed": "C. seg. necesaria", "homescreen__title_coinjoin_authorized": "Coinjoin autorizado", @@ -610,6 +620,7 @@ "recovery__title_dry_run": "Revisar c. seg.", "recovery__title_recover": "Recuperar monedero", "recovery__title_remaining_shares": "Resto rec. comp.", + "recovery__title_unlock_repeated_backup": "Copia de seguridad de varios recursos", "recovery__type_word_x_of_y_template": "Meter palabra {0} de {1}", "recovery__unlock_repeated_backup": "¿Crear copia de seguridad adicional?", "recovery__unlock_repeated_backup_verb": "Crear", @@ -636,6 +647,7 @@ "reset__check_wallet_backup_title": "Revisar semilla", "reset__continue_with_next_share": "Continuar con el próximo rec. comp.", "reset__continue_with_share_template": "Continuar con el recurso nro.{0}.", + "reset__create_x_of_y_multi_share_backup_template": "¿Quieres crear {0} de {1} copia(s) de seguridad de varios recursos?", "reset__finished_verifying_group_template": "Fin de la verificación de los rec. comp. de recuperación del grupo {0}.", "reset__finished_verifying_shares": "Fin de la verificación de los rec. comp. de recuperación.", "reset__finished_verifying_wallet_backup": "Fin de la verificación de la semilla de recuperación.", @@ -662,6 +674,7 @@ "reset__only_one_share_will_be_created": "Solo se creará un recurso compartido.", "reset__recovery_share_title_template": "Rec. recup. nro.{0}", "reset__recovery_wallet_backup_title": "Semilla recup.", + "reset__repeat_for_all_shares": "Repite el proceso para todos los recursos.", "reset__required_number_of_groups": "El nro.de grupos necesario para la recuperación.", "reset__select_correct_word": "Selecciona la palabra correcta para cada posición.", "reset__select_threshold": "Selecciona los recursos compartidos mínimos necesarios para recuperar el monedero.", @@ -672,6 +685,7 @@ "reset__share_completed_template": "Se ha completado el recurso n.º {0}", "reset__share_words_title": "C. seg. estándar", "reset__slip39_checklist_num_groups": "Número de grupos", + "reset__slip39_checklist_num_groups_x_template": "Número de grupos: {0}", "reset__slip39_checklist_num_shares": "Nro.de rec. comp.", "reset__slip39_checklist_num_shares_x_template": "Número de recursos compartidos", "reset__slip39_checklist_set_num_groups": "Ajustar nro.grupos", @@ -684,6 +698,7 @@ "reset__slip39_checklist_write_down": "Listar y revisar todos los rec. comp.", "reset__slip39_checklist_write_down_recovery": "Escribe y verifica los recursos de la copia", "reset__the_threshold_sets_the_number_of_shares": "El umbral establece el nro.de rec. comp. ", + "reset__the_word_is_repeated": "La palabra se repite", "reset__threshold_info": "= mínimo de listas de palabras únicas para la recuperación.", "reset__title_backup_is_done": "C. seg. completa", "reset__title_create_wallet": "Crear monedero", @@ -694,10 +709,12 @@ "reset__title_set_number_of_groups": "Ajustar nro.grupos", "reset__title_set_number_of_shares": "Ajustar nro.rec. comp.", "reset__title_set_threshold": "Ajustar umbral", + "reset__title_shamir_backup": "Copia de seguridad de varios recursos", "reset__to_form_group_template": "para formar el grupo {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Fija el total de rec. comp. del grupo {0}.", "reset__use_your_backup": "Utiliza la copia de seguridad para recuperar el monedero.", + "reset__words_may_repeat": "Las palabras pueden repetirse.", "reset__words_written_down_template": "Escribí las {0} palabras en orden.", "reset__write_down_words_template": "Ordena estas {0} palabras en la tarjeta.", "reset__wrong_word_selected": "Se ha seleccionado una palabra incorrecta.", diff --git a/core/translations/fr.json b/core/translations/fr.json index 50ae18f934..180b5fb371 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -113,6 +113,7 @@ "bitcoin__unverified_external_inputs": "La transaction contient des entrées externes non vérifiées.", "bitcoin__valid_signature": "Signature valide.", "bitcoin__voting_rights": "Droits de vote pour :", + "brightness__title": "Régler la luminosité", "buttons__abort": "Annuler", "buttons__access": "Accéder", "buttons__again": "Tuto", @@ -157,6 +158,8 @@ "cardano__addr_pointer": "Pointeur", "cardano__addr_reward": "Récompense", "cardano__address_no_staking": "adr. - aucune récompense de staking.", + "cardano__always_abstain": "Toujours s’abstenir", + "cardano__always_no_confidence": "Toujours voter Non", "cardano__amount_burned_decimals_unknown": "Montant brûlé (décimales inconnues) :", "cardano__amount_minted_decimals_unknown": "Montant frappé (décimales inconnues) :", "cardano__amount_sent_decimals_unknown": "Montant envoyé (décimales inconnues) :", @@ -184,6 +187,9 @@ "cardano__credential_mismatch": "L'ID ne correspond pas à l'ID de paiement.", "cardano__datum_hash": "Hachage de donnée :", "cardano__delegating_to": "Délégation à :", + "cardano__delegating_to_key_hash": "Délégation au hachage de la clé :", + "cardano__delegating_to_script": "Délégation au script :", + "cardano__deposit": "Dépôt :", "cardano__for_account_and_index_template": "pour le compte {0} et l'index {1} :", "cardano__for_account_template": "pour le compte {0} :", "cardano__for_key_hash": "pour le hachage de clé :", @@ -253,6 +259,7 @@ "cardano__unusual_path": "Le chemin est inhabituel.", "cardano__valid_since": "Valide depuis :", "cardano__verify_script": "Vérifier le script", + "cardano__vote_delegation": "Délégation de vote", "cardano__vote_key_registration": "Enregistrement de la clé de vote (CIP-36)", "cardano__vote_public_key": "Clé publique de vote :", "cardano__voting_purpose": "Objectif du vote :", @@ -383,6 +390,9 @@ "haptic_feedback__title": "Retour haptique", "homescreen__click_to_connect": "Se connecter", "homescreen__click_to_unlock": "Cliquez pour déverr.", + "homescreen__set_default": "Remplacer le fond d’écran par une image par défaut ?", + "homescreen__settings_subtitle": "Paramètres", + "homescreen__settings_title": "Écran d’accueil", "homescreen__title_backup_failed": "Échec sauvegarde", "homescreen__title_backup_needed": "Sauveg. nécessaire", "homescreen__title_coinjoin_authorized": "Coinjoin autorisé", @@ -610,6 +620,7 @@ "recovery__title_dry_run": "Vérif. sauvegarde", "recovery__title_recover": "Récup. portef.", "recovery__title_remaining_shares": "Fragm. restants", + "recovery__title_unlock_repeated_backup": "Multi-share backup", "recovery__type_word_x_of_y_template": "Entrez le mot {0} sur {1}", "recovery__unlock_repeated_backup": "Créer une autre sauvegarde?", "recovery__unlock_repeated_backup_verb": "Créer sauvegarde", @@ -636,6 +647,7 @@ "reset__check_wallet_backup_title": "Vérifier la seed", "reset__continue_with_next_share": "Continuez avec le fragm. suivant.", "reset__continue_with_share_template": "Continuez avec le fragm. #{0}.", + "reset__create_x_of_y_multi_share_backup_template": "Voulez-vous créer une sauvegarde multi-share backup de {0} fragments sur {1} ?", "reset__finished_verifying_group_template": "Vous avez terminé la vér. de vos fragm. de récup. pour le groupe {0}.", "reset__finished_verifying_shares": "Vous avez terminé la vér. de vos fragm. de récup.", "reset__finished_verifying_wallet_backup": "Votre seed de récup. est vérifiée.", @@ -662,6 +674,7 @@ "reset__only_one_share_will_be_created": "Un seul fragm. sera créé.", "reset__recovery_share_title_template": "Fragm. de récup. #{0}", "reset__recovery_wallet_backup_title": "Seed de récup.", + "reset__repeat_for_all_shares": "Répéter pour tous les fragments.", "reset__required_number_of_groups": "Le nbre de groupes requis pour la récup.", "reset__select_correct_word": "Sélect. le mot correct par emplacement.", "reset__select_threshold": "Sélectionnez le nombre minimum de fragments requis pour récupérer votre portefeuille.", @@ -672,6 +685,7 @@ "reset__share_completed_template": "Fragment de récupération #{0} terminé", "reset__share_words_title": "Sauv. standard", "reset__slip39_checklist_num_groups": "Nbre de groupes", + "reset__slip39_checklist_num_groups_x_template": "Nombre de groupes : {0}", "reset__slip39_checklist_num_shares": "Nbre fragm.", "reset__slip39_checklist_num_shares_x_template": "Nombre de fragments", "reset__slip39_checklist_set_num_groups": "Déf. nbre de groupes", @@ -684,6 +698,7 @@ "reset__slip39_checklist_write_down": "Noter et vérifier tous les fragm.", "reset__slip39_checklist_write_down_recovery": "Notez et vérif. fragm. de sauv. du portef.", "reset__the_threshold_sets_the_number_of_shares": "Le seuil définit le nbre de fragm. ", + "reset__the_word_is_repeated": "Le mot est répété", "reset__threshold_info": "= nbre min de listes de mots uniques utilisées pour la récup.", "reset__title_backup_is_done": "Sauv. terminée", "reset__title_create_wallet": "Créer portef.", @@ -694,10 +709,12 @@ "reset__title_set_number_of_groups": "Déf. nbre de groupes", "reset__title_set_number_of_shares": "Déf. nbre de fragm.", "reset__title_set_threshold": "Déf. seuil", + "reset__title_shamir_backup": "Multi-share backup", "reset__to_form_group_template": "pour former le Groupe {0}.", "reset__tos_link": "trezor.io/tos", "reset__total_number_of_shares_in_group_template": "Déf. le nbre de fragm. dans le Groupe {0}.", "reset__use_your_backup": "Utilisez votre sauv. lorsque vous devez récup. votre portef.", + "reset__words_may_repeat": "Les mots peuvent se répéter.", "reset__words_written_down_template": "J’ai noté tous les {0} mots dans l’ordre.", "reset__write_down_words_template": "Inscrivez les {0} mots suivants dans l’ordre.", "reset__wrong_word_selected": "Mauvais mot sélectionné !", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 5e71313709..cae558bf2a 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "e283dd87dd502e2b2c3e2cbe1f52efcbe99c2bf6cd8ed883ed26800a6885e4e7", - "datetime": "2024-06-24T12:47:16.181365", - "commit": "c66a73b895b37f2a9de3ac6427f372c649ecea8d" + "merkle_root": "21b44a01ac264efd5336977e2da46f69e223dd8c80071599cbf4836a53f39953", + "datetime": "2024-06-27T14:58:08.073537", + "commit": "3bf052f81a87afd9a2ac94499f095acd3971133b" }, "history": [ { From 2e10618876be8a09a9d985098429f3016baf348e Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 28 Jun 2024 15:39:32 +0200 Subject: [PATCH 356/626] chore(core): update fixtures [no changelog] --- tests/ui_tests/fixtures.json | 6602 +++++++++++++++++----------------- 1 file changed, 3301 insertions(+), 3301 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index a0563b6b13..344cf7674e 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -746,8 +746,8 @@ "T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "249a05bf0473b440320ddc349794f7aea8ba237cedd02e968c304cd37011417e", "T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "ae10d192c3a22cc99ccfacc2fc3759f526917d5e7789df3825418ad8ddda06da", "T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f7994f0f14e265209a9572b5de9091b8e32313beadf407a1276fb852a80faadd", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "ee9ea3cf6bde89c29aff416b420ed07b7b1984952a41c4a3d1123facba58329b", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "cb58c79255487641f46c2ab79ff87a6a243896e8d504e9c18d010d37177d18b7", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "5237aecc0c9b289dc67afbf7c8ac6837d5d606af3134bcf758e7b1899a8103b4", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9ca6b642bda2cb093b5f13d1b749f2c244a71cc9323f71610dde539cc2d25b39", "T2B1_cs_test_lock.py::test_hold_to_lock": "07cee6c56f7dbc28317dc500eb84feb1ce6b4123de16e31b72e5c47dd1d3adf3", "T2B1_cs_test_passphrase_tr.py::test_cancel": "3f02823f2de1e46c30dadc9aef8d1c1fe2cdd2ecff0d1ec9aeb770793ff482f2", "T2B1_cs_test_passphrase_tr.py::test_passphrase_delete": "1e464363ef619f450d2c0c9f82d5336e666ee3ded7107ce1079267dd75a3cdb3", @@ -774,7 +774,7 @@ "T2B1_cs_test_recovery.py::test_recovery_bip39": "5ff6772084786a60dfd86c4f9cccb6a0c0ff20516a3a840f86f043e2fa3815d0", "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "c99da3fd48bf60357a622edf95e43aa006efce6abe4cb012f4dd2734eda928e7", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "34dc24d15b42b8a40c187d289f2916062e8cbad8011afe068950970671b2aea6", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "b6863664b2b879a2549e911d158158dccdd1b1fc9130d4e900ddb278292e7902", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "b3ef535c29cb9669cd8e584609b48b8e8b6de126839c396593aacc57d34c0b9a", "T2B1_cs_test_reset_bip39.py::test_reset_bip39": "959a1d079d5697b8df5a42f4e991c0b3d0c9b43edd8988684ee128fa2018b0ad", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9167883bb6c34b39d64b072bce959481bbd0fb7f30b07f746b6fc6b0ebd6636b", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "645d18a049985e741fd2a2bc592fc81075d5947aa2c617934f4ed88828486dfe", @@ -792,8 +792,8 @@ "T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "e1a7501fc6179d47f92157b863c51b93be8dc86ccd0dfff241f0c6bb9c06ad3d", "T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "a32941fcc1a7ee40d906080eb970abe32046c27bf13278b4e1eb552d0d1664c9", "T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "231aeb488c0d66297a9394fb8dbaf8298c8c1cfd21d8119326fe3c2edd5bc3e3", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d1ba86382a5579a09d9e530029f0e45522ca85cd45c2aa130cd6f0e6fe78d044", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "fd44524dd5ca02e11a69edac331f9c63764b582f8052604bca71ad47478f3f0a", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c11752e8cef05da0268c4f93e3f281be6c8dbce38c5f57cca51e00399b2a2441", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7c24b6f5b21dad6fbfc77d7285122bb502e4f492f0281ab668d0ad080ab2f8b8", "T2B1_de_test_lock.py::test_hold_to_lock": "256b4bac41881451e351a4713a31fa72fdbbddee4b1db82adde5af13664c3cc0", "T2B1_de_test_passphrase_tr.py::test_cancel": "260dfca06b933d88120da15c6a981c9e2bf136a1bb148cbaf0244a85c80c6767", "T2B1_de_test_passphrase_tr.py::test_passphrase_delete": "18f04b5c66ea5d1ede7e616f03e1a937dc57a0a2bc55bdf8c9d1aa917194e6ed", @@ -820,7 +820,7 @@ "T2B1_de_test_recovery.py::test_recovery_bip39": "b5176ee7b79551841803a2c9e9671b06a2bbe767665c6b7df0bab552167ec428", "T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "abd8e35b06c21c53fba8576c7775175b39f03549deae4b2196e753a3726f0ff5", "T2B1_de_test_recovery.py::test_recovery_slip39_basic": "7defc84d112d0965716e783790f7a706e57f9cc8dbf0b705f490ff579b1cf596", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "675464644acc0fc97ad61420db168824a6ee8ed83b721c7cd4b62af5a9a0fb4e", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "ce1e8b7c52ab9a3ae6b548f7d9b37e61b7002a26e9d689d519283938657a5c0e", "T2B1_de_test_reset_bip39.py::test_reset_bip39": "4453a2aab9b7462e40d351f05b21a3e5b037f94b7be55e974b16752f916d1c81", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5254d5f305f00a41f22e0296b7a2d04f8dc05c91367b4721152ae6d776a55d1b", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c6e1e3c090fe5f67541c9cd1ea5e5701f917d4318e94f066d36bf32b1f5847f9", @@ -886,8 +886,8 @@ "T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2bf57c62afda405b469261e8b0e9f8d9aee498d4ca020d55d3bb15649c81813b", "T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "cc1dd08a2a77b6944fbdb40a8f316527b43c8c1ad0c6064e29c62e13a6f52ff7", "T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6093274812262b3d4092e4bc6c2d41c9e29a6cb48498646a0712e9c00d009790", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f30dab9f28454f505be2d2b2ba4209e035233335d0754207c7bea1f1a9cd172d", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7762f733b28544fee8c79096a66f181af44db5929078ab5bcb033136ea5d14f4", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3da9f8c41070f690a136c1e4056d951648b97929fb376ec86fe34d0a22002bc0", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b0efa7819d276c17a8563da04716d3b5f83de2cdcac3067b16aaf26068caf68e", "T2B1_es_test_lock.py::test_hold_to_lock": "486fb944f3cbe98860738aed52b3411398ad41dd69dedf5b1af6ae05319a41d9", "T2B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", "T2B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", @@ -914,7 +914,7 @@ "T2B1_es_test_recovery.py::test_recovery_bip39": "df2974b87e67cf902966613e669f428e26a8e453f573aad110c90ae2996517be", "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "8f5fffcc1376ca8c458e9447cb9d99eb48614854e714ed818e3c0eb886e7d014", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "b2ea8a449ce2ce3316289aca0a132de09ef499745013d2f4cb1e0b9fa512d690", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "4eddce1abc2f8423289ceb68ab70c3638dba21630ea77b832681caaa2382b1f1", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "23c1fb6202291df00003e22563435d9c6a02fa6240930e7b3fc19eda99485439", "T2B1_es_test_reset_bip39.py::test_reset_bip39": "7ac206a45e1495d4a9086f83b7d458d4bdacd773c2c08c193a9fa3de2b340b2a", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f3467575508ca1ffd995b859ccf1ece9ec843c813ad15f23994c2e970f9f4408", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b38beab8d965cf41b75d67c6421298e2860dc010c1b7c9e1e26d9e8ff69ff011", @@ -932,8 +932,8 @@ "T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "32eef285e297fe2336da444598c375c69cdf55b5b7509275e684fd3998f3854f", "T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "d7a6e59453cc4a05930096e8372d42e05307590516d759c28f04714b627256db", "T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "874b1f06ba13bb24a0b34b66bf7369e927f4a35983b02755c0fd4efe32e23960", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4acc6348e4ec886b72104a3927ecc6163fd86623bd6ae5b1bd0b87e59bdbaecf", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b66be71643b68cf92ae826ee2a361d99007a4b4792000f9a60705244036fc1fa", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1b294c14657f6c8e49f86d25c845dc980ece0a0f8cf1942ae17306e69414fc71", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f09d46030953251fde0b9a3263ced0204f3f342ba9b5f23648c75a0888337450", "T2B1_fr_test_lock.py::test_hold_to_lock": "7253f7857a54d33bd53b5524f798596e62876d9518120feb86a93295d5aabef2", "T2B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", "T2B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", @@ -1612,10 +1612,10 @@ "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7351417f44da89666c19b7ef8e6781c78b131a69c72292fd7ce289045f8e2ee9", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "f06053998dabb6b56d371b0dcfc72bd0ff2860bb5b4b9188ace88b66f6a386e4", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "f5cf02092762cace7339182b4e1c8348b30afa2a3f598fb03004e0e1e1c7cf4b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "6550ac553fa550f60505345d83eff46f0dbe5a9e2c9afb3dd9e36d1e6aa90321", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "5aa3d42ae24166e37f0f85ed9c0c0470be818099692c02c222ad80018d4aa0c1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "27a18a51df432695c4b111d58ee36798a274793e1118ae343aa2ec0e976ed58b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "74b2239375c5b09e3414103d0404abcb663c0c131ecc21c1cd1f52153739e229", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "ceb1e2bcc35650084e46dee05b9777442e23cdbadcc0dbb2b59ce4cb24195727", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c0bb7886007e30fbf2285f550a6db60276e8c2d8daa6ff64b5476c1db24e92c4", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ed02281e38cf7946af72fec2acf95358bdb48335823268e6b150fb79d1707239", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "cdb5fc9d1fdad77cc7cddb939cd456f68ea9a852d1aa0644fec414fb93004893", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "477caf4eb070fffc0740a578b55ae756909c0ca947abdca6934366661474517a", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "edcd19b971a6dd738fa844318dfbd7e522da0c17f687eb8f85307a688f09cd45", @@ -1625,9 +1625,9 @@ "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "3fc9ff7a259b18fba6e6314b03ac4c291a2c010979b87c83a46bec0fdd33ad15", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "da54d529e08559a3c21b5ed2292994daefd64cfb36b30bc332a43cb453a91452", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "fb8bdacbfe3dd97bc7cedadd985f6b50148543d99d75acc6b979f4b6819c4170", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "0060865e9d77b78fdee51a53907686c7f5f444e7d7c23009138c41b65a57a762", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "82b38b6bb03a4824d701c5fc061a82cf64d93d071a9df50e8a36d8abba76a637", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "82b38b6bb03a4824d701c5fc061a82cf64d93d071a9df50e8a36d8abba76a637", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "3fd92bf5f7db193a3d5257baf09c36106534c20d54d50480f89dcf6f4ca880b2", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5a19145c8f7f7d1dbdc34bcbaf6951b38f1949fced93af853e7370cd2487089f", +"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5a19145c8f7f7d1dbdc34bcbaf6951b38f1949fced93af853e7370cd2487089f", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "968c85fc0bd3628bf4f28a07c7ba57f94efdb6d578df28ab6f9249c5974d525e", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", "T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", @@ -2262,8 +2262,8 @@ "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "57c42749f5bc7753984bb8cb726059b7ca71ab3b58f1a1c09a140624b43d08b6", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "95115ba157f4bc100649ad6f32cd23a1c202685b57050df21f9880fe3f17ffec", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "4d8e12107f5a1894ff6df28c5d17f914ec309af93b74cad6624afaac0e547042", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f2332ce545c88d187730313b4f1b4340a9373a76de7b8e6bf5341c8a62b2c64f", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "45958fd14a15ead3e7bc065f619b9c7e6bf7ccce6b8877dc1fe78ef76c0645ba", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "9bdf9f49f613a7cc622ff29045f1506622b11bb958bfc7d662e138054b95cd18", "T2B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", "T2B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", "T2B1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -2309,10 +2309,10 @@ "T2B1_cs_test_protection_levels.py::test_unlocked": "161d578d884d5f414bb362dba46df7b939a89e02fabe079feb580ed615caf55d", "T2B1_cs_test_protection_levels.py::test_verify_message_t2": "da169a7cef407a333af12fbef1ca8b264e194d93ed736109b16fce372c4851c3", "T2B1_cs_test_protection_levels.py::test_wipe_device": "6adb2d35bee471dccd4d66d48fc48b98fbf48db2a188b6b56aa4b77b7779a074", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "da21a8734c2fd8ab165bae093d332758ce8b7ca9044751880f6771c11f04f257", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "d926f6c22a05bdd167e9aa7c3444301c534c781396ba18b4d60ec3e707ebe8b8", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fb69b0dc5454c73e2cc06053f47230fe567923fcccd517a4806f42b22896ed42", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ef03eb6d4dc1576786fd9bc7e792f6260bd14bc021c151a3039c99b4d1614701", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "4119ec5a78fc509a7c80b25a48860afa8f5dcfe06469c0be43051287ecf51a17", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "204be8c9e730f3bb659faf081afe500d2d49be580706f5035226d2896e6c907d", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "2151b8a268bc77dcb59932cfa05723beb68467af3f9c9297369c24b340bb5cf2", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c1eb1b5f9c832e22e47d36b7f01a7c6f0f133528128d85d3f4fffa9956f105df", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_clear_session": "88c8146d79ce538ac2215eeccbd3c0f2dede590f39b156e825198837496534ce", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -3003,10 +3003,10 @@ "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "60a9d9ac4ebb9f6e0057e2ad2e34f61c0f09e8e38ee178c34458e0f28d6a1720", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0f7fbbfb16cb77cae760072b23ddab0b1799c2b6fbf3df1e85a3a5a710de18db", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a677a31ef5db9daaa73ca755a4b69f374565529101266afd199f2cc1f8784c78", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "da934e07425f824a0983ab20d2b4060e6653085d49b7d8b642f94d84da8ef66c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "49d1b809a257cc7c35dec486636a6351812c8ff3a24701485f23fb2a1ef4bf9e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f2579152bb33b47dfd8a814b693d79fba4016634333e4304c7e88ce5e2e123a8", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "1bf39546be6d0ec3013f935992c88eeae61393c3358fcfbd2bc7a83f97841eac", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "ed0c82a62d6dcebeba185d8dbe78ced56d43e389b1f94be56b36253a845d10ee", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "1ae03d74e2b34e2a4a9d162162bd7e943303a596b749445f904a9bf20e034cf0", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "d0b20a72e6fa2034f4f17e9c7027e71c4009d9a883bae8cdb239c282e242ebb5", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "1aae66d84744d99f4e28b50dd33401ef18537aeebed098fc08d0b12ac7289630", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7dd23e53757333064984ac2354624e41e9d07f17eb90e18f07f8b91718679d50", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ac8f6736cf2dedf2cd6125525a4bc7a72a4b3a07528d52ac82021819da900ce6", @@ -3016,9 +3016,9 @@ "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4f83cc5158e035cb1b611bd19eb09d7296832846eb0cdde6a6b57c2c6d208d19", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "503072788c5bd3a575809acb3cc26e7488d20a3f9d2e6a445bd440cde433ffe1", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "789c20eee409a0634eac71baae437f474e8c7cd1b1454fd5707b90750e121ff1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "b9e58343faab958df9f3ade895791c0839eec4b0a87961b4799fd1eb686f60c8", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "394187ef1e4a499c00470b38c0ce305da8adb2bb4e75d1749b5b7555c315db25", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "394187ef1e4a499c00470b38c0ce305da8adb2bb4e75d1749b5b7555c315db25", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "a7f414281706a3593b1fedc3947d0a3af3b0065776bc9e94db2397ffa828bc5c", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "ac2c59f04e97a0a3cb01a4560503d5d45594a1d55facb5506a891f44fec4d529", +"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "ac2c59f04e97a0a3cb01a4560503d5d45594a1d55facb5506a891f44fec4d529", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c92b7ad08baa6c60c94ae28fb5e709e43b10300dc7d31c2ee629d80f9150b08f", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", "T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", @@ -3653,8 +3653,8 @@ "T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", "T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "df347660c07be4db80d435494de3e8ad14c1c27803f989e69e9b855411ffa96a", "T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "feb1fdd06e5ec80a6841d869807490f6e4985e744f29d215c6e9b071c0bafcb4", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "a2252852c18abd93c8d2639c0a744f516dd27a9f28cc566c2af120c0c3e82cab", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "822d73267ec62696e46f4ecd5731fcf69915df8dbda4ff696e737b0a9e46319c", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "5283145460004dc83b60cebc7faf355e72a602de0538eee70d502441c1beacd3", +"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "331e67d7e99409f48516a400926c853cc47369951d0f489af36a4566d1651e45", "T2B1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c925fcea96ab652c5cba68ecf4c6cfeb069da7eed29037211d72301b0e34fbb0", "T2B1_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", "T2B1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -3700,10 +3700,10 @@ "T2B1_de_test_protection_levels.py::test_unlocked": "2411bb3cf12d9f10cd0e6591218d8636d43b005b5836faf651b6854f90ab39a3", "T2B1_de_test_protection_levels.py::test_verify_message_t2": "5a32a46a25ea8478ebc0c1e0ba1a419175f27c3e5bd42026b56e87fa959b7cfc", "T2B1_de_test_protection_levels.py::test_wipe_device": "391742f30ca6f4e65a530f4bab95c26c415740f95ffd25ee6a692f038fb87da0", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "e5f1ab32c69ff0bc91d0b7ca1823b0b9a5325e13264830f86e2105627c2923d5", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "ef31b6ab8056b1847ac4f1376a16800b506ae9c5bd1ca29c23e3d8a2d100f0f9", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "649f57fffb6e4333cdac09fa86130fec8a513465a5b8fa141dc93c75fa7928ea", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "869ce210f3e562d8a880c1abe73ac80c50b71beb2425d0d588e321296403a462", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "e6047b051e5e5ca9b2119a3dc66cf85fbc334c3b78227134bdfca3d3ab1f610e", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "18eb36995db074748e05f4ac24b737a5c9f52f910c249b25bc83d6d2506a7cb6", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "46bae34afd7b208a07077b261a2fa6b165505e098b99951ba66a2de6084b8a0f", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "5d9282a8f63c7009d003cdd2ce38278d9b0d4130adb221392cf8c718d700e489", "T2B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_clear_session": "31f023585471579ef3b4db1c362b4455238ec96494ee23606d248a3faa83132f", "T2B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -5785,10 +5785,10 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "c71ca04cf884c0958b5b26659df368298befafee5faa92754b66d878a53a97d5", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "af03f4e6ba4a68e994fec97691ea567958e61d501726147dfb9804a0e1b5de22", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4e4d37cd12863bd851aaf6e00acc92db393e73a48602b71ae03fd2d3b1b23775", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "793b8cb7572dd886e79bb0036328f37ef3bb482d5c31c51240ff2691dac2e023", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c79ff7ebae6c5ea1265435e93c2f1e65c21f338360c5fd526af55d91694c0349", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "231e661ac81dd888c4ed4f277a0415d30cf1975926b0b2f6c48dff457126ce90", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "6915c07cd12ffe13624032c2ed05659bdda7070d0b817fc6e0f683f1cd31ecc6", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5ca2ca9569a03f92f8454625fa2a515facdd54d1ca6b9e09430021eb9518467a", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c5c2c0df91051bff949d55ba87780bb7b122e70ca87d9646dbeb523a2fba0083", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "84ce774f4972446fac86ba4b62fd16892496919e7fb6dd502d3cb98801153e11", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "1172aa79eef2f959c5aeaf3bbbea1182ca4b515763c9f8dc89f4dc36acb8dfe3", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a41ac286ffef907e5fc2f444fd4a9d032674f8c462d2c863d710e8e932946963", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "a4b06ea9fce28a99c2a231ed5c43f902a07094098a6f625fa79cd11b772dc366", @@ -5798,9 +5798,9 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e4adf36468a3279c471737311baaf5e415aa6584784140a2ee05d261e4fd68a", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "5b58023ca8c689fa8291dccebb52a93b8bf255e2215ac0f1ac1505f3dc3827f5", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "5f5d461d57ecf98710a8da853c4cbff081c0b29c170f04d654e1c2fb8ff31a47", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8e98733ea7c7f524540ebd96ed170f114bf23d7f91b919be1024c8b17fcad144", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "c74c44cbf21c6375a86bb7e6006a77f1e5b3e0c6b3f9600a925326db305cd650", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "c74c44cbf21c6375a86bb7e6006a77f1e5b3e0c6b3f9600a925326db305cd650", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "2e97aacc124814a57494ac76660961132007e9075a7a0b1d6bcab191bd6a2945", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5d9573e068247df02487b7626ed1c84ea27b811c5b700dc327357b3ea422c322", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5d9573e068247df02487b7626ed1c84ea27b811c5b700dc327357b3ea422c322", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c11dd00da5f0cf32e89b24721e750a9be89476bca3f792eb695e31fa51a6e4c6", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", @@ -6435,8 +6435,8 @@ "T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", "T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "7cc7136d98b6e38717b13db495fef26a2dc7d495f2b52ec89f147e48b439526e", "T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "604e85a87648a491841f51c2a134d160064c8a552300b0813ae62e9ce5caadab", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "49b972297c1c0270065fc6abbcacf39f7b719843bd24c3ae8e353f048f2f31fd", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "2c2e7a2e6f48bc395bf9abf6d964e59eac64209b5144b098ecee0e5200156005", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ff380b5465071a147b824e255576a2eb3fc2fca2a7f7094a85074735a07eff47", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "82e9ad580472de26e6edd2f60eea5fd1f6d27ac7ca973652a37991cc0b91ecf2", "T2B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", "T2B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", "T2B1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -6482,10 +6482,10 @@ "T2B1_es_test_protection_levels.py::test_unlocked": "d1a7dff82167ece9e31ddc3bcf2f76f8a1789b4578e6bc39b67fc7a6bc559ad5", "T2B1_es_test_protection_levels.py::test_verify_message_t2": "442e1f70b44e9df1d397d14f8a1c628aa9ba00b86ae318fe4f3dd6345f7b707a", "T2B1_es_test_protection_levels.py::test_wipe_device": "e2b4141bf1362cecb872c5df9d99c7286cecc0e50127a471449ead066b33f217", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "b576a30e78cc65369bf25078c3faa46ce20419482e0c249d23352b0f0c7fdcff", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "4a22d0fe51e532c493df44a4e374425855db92fd6b758b50ec5ef90f8ce40364", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "50781ad49d2a4347265b5ae8c63a754bd78752afd4ec3bba1606b0670cf8f076", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c6d196f05387b8768c3d0b80037db9ec904f621bff9e6295c02740d270e01ae7", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "0157da87e69174eedb81341920984534cd941de69831f69ca1ff2fc643ef24ce", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "c341d7e93354ae3f3eb8b32409cf2b486af242b26d5a3e5f0d0a12285f525cea", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "00de6596c902f1875732c515266a4090ccb8f2a53aff167af2d9294dc438c170", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "96a1350897888aa5219a4efba3aaf46cf600bd37b1661d6b3cd2dff45a0ad054", "T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_clear_session": "02f065568162703b39c4dd711300fa176f50a8e4e80d0e6f51d74cf3997dfad8", "T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -7176,10 +7176,10 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "49df6bbfe2a333aa99fc836fdc42520a10bbcf527ab618ddf30b6ef22f40c968", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "86eb89febd533cdedcd1fb9ae8df7774ad941482196c94247636fbc750187055", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "d64c60d3c2c132eff3924f0b119ad5e4a48921cc681fea4410bd7731e6e99809", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "bc0ecd2b7dc9081fd589cabab4dd26fc3187cd2accb0b1fc72b61478799a1685", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "866c936531b9c4417432bd1692b32a99c0acf5deb15a6dab2d635714f362506d", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "db1e88015c7e20bec12ddaea5962b5fe5d936dfc9e65cfcb7e723a664df3e705", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "3c8753edec573565f3ef71cbd77cca00e652828659196685a044636fc6692e51", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5006caae3772336e8113e4e80ab29151ce6e2f1d2338e9b2f1dfc9700538caf6", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2a7b896c6c7a1fefc59a5d5fde8cc691605c537e0dcbb11712f3f6a20e0f23bf", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "2e02721d4017f477711c5cfac9e5c21ca863f5bb8cc2f16e55164a301f97798a", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "8f6e740cfd6049ade118a36c531064f3ea7eb48a4445c47ef4ffdfcac385502d", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0b6d36f11550f0f8b59ccee39600c937fe4b8d47c43684ccabed75580bd543ff", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "60dbdd92aa9d03d231214be4c4445f4fbb18e8d00031d14ebe36905f29432924", @@ -7189,9 +7189,9 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b8365a7c21df14fbcc42fa79aadf8d2c6981bb2ae679c87816ce97c718354293", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "59fae57ca493a6d4c8f365058710ac475d4a02faed1817895d6942b2480075b7", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "6fa7f8c42e5507af7d6c9a4a5b985c95da4b281e9c4313ec5f8c9da8f7a5d053", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "dcd1e44b01341e96ee7eef8008a8212312fbfcd8819f8cc901dc0cc1741a594f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "2b1d0e50b872bc5f57d16db528c3566817064305d7bec7f11e5925e171930220", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "2b1d0e50b872bc5f57d16db528c3566817064305d7bec7f11e5925e171930220", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8801ce4beb518ad84cc0944ec3cc10497d478c14b2f279c0ad35d9e792cef19a", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "2525f87f414ff825719dad3beed9cbbd20ebff9b8f9284df12ab86294c88c39b", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "2525f87f414ff825719dad3beed9cbbd20ebff9b8f9284df12ab86294c88c39b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "deb80a2e72daf3f9383243267c0bfbbe011950fcc5514206802900a146a87fb0", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", @@ -7826,8 +7826,8 @@ "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d7bda948e8a77810ae51b47bde75d01468c612ef55f9e5f8c0855217a66c79aa", "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "38ffde2b77a58fc328bc4fc4e96cb95a63787aff475841f3c4299706f032a03c", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "24af19bffb7afffb515568f06b49163018d23efd6aa7d9c278fdf0179be5ed1b", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a88becfa0d3f3c83a5d6d492cedefdfbec57572b1c5956fda3fbbc926c0a90c8", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "97c11fecea8c9aa6531d0ec2088b48e5bba66e8bfccad63086baa9b02c2592e0", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d6da5a09b37b2c4195cbb6a7026c4914be05f5aa8a4c960f68497119f114aea9", "T2B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", "T2B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", "T2B1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -7939,8 +7939,8 @@ "T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "14425620334e05b9f93534c9bbabf2a3d5300801085438c84a7f793727ecee65", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "55788725d6cf0d1f341c4557e343a0e3b9845c61e0d297b1d7de5b9137f91bca", "T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3637f9f8c5a37009b9f4c0ce0d50160b1c30fe8cbfeadd5c437c625cafa0876a", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7b6cb8cf44add7a322052d504d0e769d76ebc488ab3637e26978b317ae6be200", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "5572ec8b0bcca3bf889a81304c8855e443a5b959bf9aa7e0f50fbc31a30ec40e", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "77669b69396c6668256165ac27c4089b2fb4a4efff6af5df8c2c05aaba356a52", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c2642403fbb914094194295ff32e445d2b1d87cc09e027acf46864ca33e86ac1", "T2T1_cs_test_lock.py::test_hold_to_lock": "cae9be494e1bf8cbc1b0a37835e6b4892cec88757ad2b0e4e68f89f3f1f97e1b", "T2T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T2T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", @@ -7973,7 +7973,7 @@ "T2T1_cs_test_recovery.py::test_recovery_bip39": "58e2ee5e462f2e6a8bc870e25c48553a8975300571f84ca95dd863ac01053544", "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "f08eeb1b8fb36878fc420636e8f94f26eba2f94c742146d5bc71bf4223fed350", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "8e44525da87337f4535a5f25f0ac23a341b49c7672e3c16ca086c6fecba3a4e0", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "53f95072fda06c168f289ff07e66c94b72fc84c54f899224690e234e7eedb5b1", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "662e6d35d564077faa1eb4c855fcbbf255b5590b1137995c984ce896f3e653a0", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "796d2366b938ef928c4f4021157c15b7ec07e343daad5a0ec373ecfdc921a856", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1210e840ca4853cfe1b2d1458e0c5e4df0872ebe36bdba6f3ca4f62989e01f92", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a1977e1ee6f6fb75127bcb40ca551b554acba70a9ab18f0d06d765fb9e855afa", @@ -7988,8 +7988,8 @@ "T2T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "4e99f4dffe668064111f70fecba063895cd23f9923e6f164eb00f648fe396c83", "T2T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "493f869f1ba0294330601931650218298597a239222ee154f87079e6255cdd33", "T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "79559772e80dc90acb5cd743e5a2084b4ca4ed876a07cae2b2a57fc977ea5a6d", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "b78b3c5c3d13beb14739bc7a62229488f1398063fd38bff7b1c7732f6628c4de", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "d8f3721892440136a606df1329de5bf08f6d6023760a059875df309052da750d", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c89571472236ff2220d13ed5b46dce7a503c222d7015714275a7d7a2e5433cfc", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c3882984d3d61213b6290f11e58a7068d14a2039ef1bd2ff29a1829beeddc019", "T2T1_de_test_lock.py::test_hold_to_lock": "4254a324366ca37a8e3cbf7f4aa1b7bcb02f4d631ac9e4fbca50a2ed60131858", "T2T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", "T2T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", @@ -8022,7 +8022,7 @@ "T2T1_de_test_recovery.py::test_recovery_bip39": "9b1c68e4b89a8d328b7ae32025c2a9cbd3438aabab03d51bd7be36b679a7e17b", "T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "1c17a4527106240500aab5280074afe3699baa2351c006a835a6173654fc024e", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "607e3bc1a785b510fa6a27e386986e168fa572bce9ee352dd74ee1380570bbd3", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "4b7d136021ea48fb787943494d043a937752534e9b1f1f70a9d7a22f9c7bc3d7", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "fcbc41ed2b312153f47d589c5e6e21bab2373669c995cd6d9f88fe21561f4f82", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "e1e62b9f04fccf0fbb14793c83da9df4d8de8bc56083db0d41e342d8fd5f4028", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ede09c533b46478208c9c0d0bc328491f9dc50e5ac19a1bf3c92c1a838bfd9f7", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4edcdd947819cc9e137c013b0899572a2aebfafaa74af5300ec27dd3c90d8541", @@ -8086,8 +8086,8 @@ "T2T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2ab38b584b868bbf22501c70c13bc4fec9c376b65cac52cfec63836a98f2b703", "T2T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "b6077aa0401c1a8a52f69272a0b8a1e99a4928a9cb3d1fd7c7e5c3682759ed49", "T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2a2e244e53664db0da2d51bc61f715eb3aba64eb9c55a408788299508856ab4b", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "2f6564c72e1aa64f4840c230e51d8306d1b088406f86e136d29048e2dbd2d3dd", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0a162266e7e45c698138e228846681c12a8028a01ea4d7659a63c7a30cf7478b", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "acf2c6cd992e38fb6de61331407550681009727e7b0ed78eb9f2431d72abd655", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "38ad043d37210a03347f95f33b587783b6bb59b17094986a5751b676bb95543f", "T2T1_es_test_lock.py::test_hold_to_lock": "11c1e5e33d8e6046326c9c30f61216130a83ca9916172fef6808080bc9c67216", "T2T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T2T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", @@ -8120,7 +8120,7 @@ "T2T1_es_test_recovery.py::test_recovery_bip39": "a82be5ecbdf91e860636537758eb19f8aea27a76e78b3c275077bac4982c52ae", "T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "12a96269f52788419523af93d2f34bf2a8c72e9116c6948c5f81d296b5df8f14", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "595438a8dd044db890c02231f473d6c168a833585acfd46dbec0334e70a6bb96", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "ccd4e917ec8689bb8bcb9fd763eb8d42f1710732d2d6f0265b58c132d2f8d7f8", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "bc4e28ed88920100ac05815c43e34f36ba0258b5ce07197e37ac84848e8cc814", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "b12db06135c50bed8492b757cef803fe6ece5e4e571917dad60e6f69c75e63d8", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2c68e0cac7449ad644cdd60be655803589f62f4d02496425a2848783489939c8", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1ae2de2a191816d2483b733740da6f2b139f1e925acf0e2766175e524be11803", @@ -8135,8 +8135,8 @@ "T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "f38f6472b8844173866ac411b877ac13b3c7532c3e1bed333e372d29c5200826", "T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "53c0576723532458534e7d221644f5ea12a25f0474ce20d81b29833ae15cc9af", "T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4d4ea9d6b060158149a8fdd67469c8a3b285329a90e387f24cdcfd44256e6c8a", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "22ecd132a59ca0974db0db8ae40f283804c025ce5cd94128de96d76340ae8c55", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "723cf07ad5dd82763b81d4ec0f0375ade7e2219638784e6bba1dcf95891471b8", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "df2daa81bf29e8b827c4b01ad6a738c72d1abd074b895b6c342b1b8d6a4cca86", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "bd9c0ae1fd1bc955309e04328591739f81fe79fe73ad0b001ecf230504f66f7d", "T2T1_fr_test_lock.py::test_hold_to_lock": "9806bca2f87c93ad68284e812c702177535768017bccce6e6264ca4dc63b7c30", "T2T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", "T2T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", @@ -8861,10 +8861,10 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "53656cb3eecd84e1f9041eb8477306db31eb21aa3c4ba8c30cc8124a45a0ff8b", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "01af3ce2ac5ce642410a9dfac7e1360dc8c51ca73677915e95cb2d9998c674c8", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "8e5851e131bec6226267c69a4d5a306079bf4736550a5481a164e1a57aafafd8", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1a5d11217da86a13481168c2e92cfb4fef166b85e3258d0f2b38a70c6487984b", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "7b5f77b7b371b7e2a2c057362b05a38d153a7d0aaf9cb9a631bd1d7adedd670f", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "8d4064e131e72967ce48b12767a3acbbfdeda21c9786fa493d5e63e07d478afd", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "45ee577b70c312633a00732f720f98474ce1361e1d85c672e91886dc5239ff61", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b52cfc9457f1654177d2d246c3cd4753d0910f74aaf32c422e352bddb14926b7", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "5f89e2cc86ac2c57f2831c40fa5de2a058d89695a8917e8c9ad3d257acf1fa82", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "cd19f021436a51fe28533b59c6723125bcae3a08a63c9dfc15c4ebafcb024416", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "7d045ea5eeb26b54437a681af3dd5573d8727c908c089a9de956a80d2c737df5", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "88d886f1bbc6dae2c0fdbe529fa9359f978eae07e54729dfa825a5d7687eba1e", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "371d13a75eebd3578bdbf89af63325dc432853cfebe4585edfdd21d32698d596", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "3d2a1e54ce93f505a8671ab232772b7a696bad88cde38159f528b0c0e43c2698", @@ -8874,9 +8874,9 @@ "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "961dc7581378dc4a35d10cd27a51d7ee7892443ca892e801ed3f4e16e3272d0c", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9deb71c5bed9352a429568ee4be0c5454522786873d71ee12d6fa08d34b9916c", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "efa7fb9b031385ce06ff26df22187790b1d694503098dcd203ee88c0903d4ace", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4bf1ecc8f36058dba0a82c5268e54e9a389bee07cbb4f8f7caef81403ae4adb0", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", -"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "0a6d5a8865a385844221db73d28823dae0f8910bf01ea5fecc4b65f2dd9b65b1", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "7626b8279c5dc66019cb7ae8d57b594c9e30d4ebd1595d4140f0986351efed36", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "63263f1e3076aba248058fada000616a8ba951b90abe0490cc736d306ec3486f", +"T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "63263f1e3076aba248058fada000616a8ba951b90abe0490cc736d306ec3486f", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ca8c279751c123558fd05fe350e16a57d7a1d91e8e6a91d367d579a282eda994", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", "T2T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "5f57158b905bbed6c59ebd0c24255a122f77b3789d6aa5d26cb48c1400b70129", @@ -9542,8 +9542,8 @@ "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f8ba8ab62fd58174f9fbe8c2b3e22f72b93be3b8e5008b60882247e9148f4cf2", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6bb270520a4e999a02b2ea3b2759630d5285c65b0d3cd3b03f1ed27962c4564c", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "7cf053c7ce5e76b796e64d03d843e3921acf53abffc252e76d28bd2f4a97429d", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "637ad1782391eb548411f1c00498304dd7c7190a63117f399561cd38989783b8", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6be98f6680a59b16910e2bfb974aab4db97d445f6625a8cb06abd8b9688fc67a", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "3558f1ddafe6350e8877838eefbc7a37fd11254814ff1110e487c49e0d709452", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d5ff212f9789ab6e5c6b7de5211262b11724ef7761435a095acf8809b8128c42", "T2T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", "T2T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", "T2T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -9592,10 +9592,10 @@ "T2T1_cs_test_protection_levels.py::test_unlocked": "03c60806a17607d7e3b39d76d3d82144ceef92ebbf90bc25ecdd6233bc0081cf", "T2T1_cs_test_protection_levels.py::test_verify_message_t2": "7cbc1f75a41c00a6d53fe6372113fdba190489e8819fb6d4a7f6d9898b0115c1", "T2T1_cs_test_protection_levels.py::test_wipe_device": "e2f47c3779d782bb71d8dfd553560ef36b4d6fa67a629719e380e30af8727229", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "42ee2eb397242af181668d52a5198ef2d2d4eee4807137173440f718fe9c0790", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "c899053aa9fa16bc6912447370f78b9078dc2c8972e8293e524da78f59ef3bb0", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9d6aff86fcf5c2b5a048db966c53582e9cd0870770c0fb67f63bef2f19494eb9", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f96f096ff5cd5520971b2afe7fef745152aa0b9a391bf29ca0873a090387446e", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "865d021ea723e717470d259409e81de4c3a525770e22e34bac0705d25dd63082", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "b003ed30eb601209f6d14abbd072eb3c402c9fe89aec3342050f1dac517b9790", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8230d644447354d9ec6cf83c33936c666a77c4505ff4c2d295c36b56bd2da994", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "468419bc8ba343e8645e3f5c0448a313421ff8c58cbe9878c7d2a4b342d86306", "T2T1_cs_test_sdcard.py::test_sd_format": "8f1ca58187e0eb32b6e23e369b1e9a3f68ee244023e2a0d25930d887f9bff5f2", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "f919e4e387fcb3806adb43f7b8f71ae3b14a30970b3d79bb4c9bd063804a084c", @@ -10332,10 +10332,10 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "403883195f0bba908a2a8e5f36598a3a7a748de46226186667e88946e7ea28a9", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a7eebb90c9e1e952ae42b721140d1f0d4cebfa831366a2b9668de1dbe8ef699e", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b5ceee12e024e420174f262d296bc8f9955ffbadfccc8dd1c005c3b8d6cc743b", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "12e4199c992ed2a334403814367b872be55986c98b5a9a94187376f3b9530e3c", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "62bb28cf7b173cd652fc4bbedcfeb8172e2735294d088e1841ae7bf9973eeda4", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e945588bcc167e340f87e5752b24c7c38af390135c0c640529fcd8c7d88b0860", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "fc862a70389bb4dc49628f34a5633327b47d2e8206c0c0a5ba506fe21606c6d5", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "40a3870afad0e5e0a7ef48d9c267399930ac66d0460003e0bf2a98c655ac8bb7", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c6c594be5d2a8ca39a6b8254eb944aef5c17d1ca565779c71dcac48cfda63176", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "3bb19fc8eaeaada8a9e05b60344228378f5cf743cc8e0e6041eb014059cfd307", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "82fa2ae68894ee9d57978f8b19d4418fcb97e457c42289e3321e9d3a539368d3", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eb884571059bea85bd816058d9c59205d164bc64bfbb986ef3a4ce22a8ee7b58", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "6a3dedfefa16c32ce6a1fe470d271645ba08e4e4ad8552857095fcfa5183283b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "1592544e84850950f1fe7ae4b073c682c63130d35ad6ed5bb879b4e972407ab3", @@ -10345,9 +10345,9 @@ "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "066507d14abd8f7b6cbffab1b6c3d0c60716887e47b4a1b2115b9a26c44ed08b", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9f985619d4e544dc52b4af43a52fcc259b01235f44ddb1882731b993284a64b5", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b6fe22230ff6ee382ddbe8aeb2489c566db47b18082b46377f33e7d0aeaa8512", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "074e4b5735bdc9740dc6df06e74a45231a89ad76f5bd6f365b302c8b6109a409", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", -"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b70f5df174f2e10ae8f885ae5b2775f1cda8676ecb4d1151c09b4f4acc35250e", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "de802bcda388d37ebba154def068fb578620c58357bd32dc13af58c79a21b655", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d8e4da2bac14d7442290b23bf14ca320b6679e1a3c0f165565f2819bf183e171", +"T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d8e4da2bac14d7442290b23bf14ca320b6679e1a3c0f165565f2819bf183e171", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "63b341a969ee8579b716adc52b15c31c7fb200790a080eb6d8ed304a688ab417", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", "T2T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e62b3449cfc1343dfd55a866b4e0956690b1b18e4146ecec0b986cf7f6abf66", @@ -11013,8 +11013,8 @@ "T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "5b0367c8bfc8f8745cbbebb630c59a1a2331d311c0782929952f8414cac7a7a6", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "fed9e2cf2598712f083ba4083c068033b6f9572f90641217b214c52daca64418", "T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "78cc326246205d9947ca9cb280e503c867b93b27821f53f850377c4edbdf3e27", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "195a4d96987bbe98efb78a91501f06521901a4b4f339f0c3a9c2652ecabb935b", -"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "56591d109a91409a57294e82f5265af69844733c3b29f27f508f360713bbebf6", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "76b778725eb1017c59788b18cab294dae51b01f6e1900cace6c9639be267c771", +"T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "370ba430452bf181ebfe18376104ba5356fc8686c17ae7a196064c6f92834bf9", "T2T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", "T2T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", "T2T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -11063,10 +11063,10 @@ "T2T1_de_test_protection_levels.py::test_unlocked": "97cde4874c0952f2da6f2f41845b8ce279e4015ea95ef38bd8c0e0d55039b80d", "T2T1_de_test_protection_levels.py::test_verify_message_t2": "b0298371e1eb13ab94bd944dbfca4079e5e6751003fb9e0a2bb4dc35d02db844", "T2T1_de_test_protection_levels.py::test_wipe_device": "2b6b86e0caebab7123f67264d3082849c56ee4d94ce8da13fede6d1012b866cc", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "95b1538f046f71b45ba6d6918216ecd5bf015cc9e9fa5f93d526530b24a0ec4d", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "77fd9a50967e7b157c0636100fff7673b866aeea9034c4926be7a5cc786fd47f", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "d488f32f666f986acd3add811fee31a87e32021f9e9f094202c4b556d0ddcc94", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ddde7c9be65109b09359c0537456306c80c845d0ae4529f9d1d8bad0deabdca5", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "4a8c6be253329d272354f3e250e6d2d39fa706b5f3bf45544b696919e4c52eaa", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "ec58ad0a2e117e4219e1ac8c6e49834b588b82e9bb5b66dd1fac516e41a93b39", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "14481caec093b8f1f642237c4d930cf5e9a82629651a93b45b1a3379bf4a678d", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ce139f37653f372cf7523e8580cb9c00b7ceeee1cfad826e8838f04fcb2e0740", "T2T1_de_test_sdcard.py::test_sd_format": "3e307eee23db4db1a7f3810af0d90d6720da8e5bd81cbd4e924579ff4528b51c", "T2T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", "T2T1_de_test_sdcard.py::test_sd_protect_unlock": "89dfea5d01815a7927af69127a7fbece5b8ba3bd36713298ea2edc8f860d6d32", @@ -13292,10 +13292,10 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "dcba7cd0a0db12546f434edd9ca58a8c4e71286e45c5ee699e7241e5e3e27e47", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "489a7376b93d1caa83c889788a762f46c1f6ec4577d0e2753013f1162b9e8d2c", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "321d00f3476599733b43b066c9ac38a3549400777bd5ef1555519d662fcd64e0", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7c0a59c98455d2f16e2f028a7636d76aad371036f6b8e5b0b5164c796296144c", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f8ca850fd8238d0797c56927710654a48b187ae0d630434fbcf437e51293927f", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "c19a1ac1776ec44f6b74b4a070006c39f1439ed54ce5525f60b7a11d553b1e35", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "520df8f6132a3209e9d1d4be9b09dff576703e0d31b43a7a0784c6288851f200", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "002246b014c00612613d2521a8022b182070af1745740d40b2915666bbb245af", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "68b65a37c84b02520f6f36b2d3a4132b6806920a3f772133f637206a85ddacd2", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cac5be757f13fff0c68316e3b6913d236c06fa7e90ea3e7a331d7813a7aa9e5c", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7acac1fb4aea9ae638e70890863da73e371152253a22976a2b17ef88a274df0d", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e7b6abc9b166d7d586abe7f59a17d099fab1d55b5a2b916a8e1ad30e38cccbc1", @@ -13305,9 +13305,9 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bf84aedb1f4a63bde4bd13c45ed4645696563362c9b84a1fc8da535f1c02315f", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d91a813a0768d73f1d52029e99ed75987bc0cf744f1da3700f789f6202917666", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f7e6639d7d13d04596ca456f4b6df3937a3c9816f52ed78d27122b4488e54b", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "ffda6edfaa7af5e2de9095b4498ac493dfc1fdc02f1fd79c0d73cb3a2c22bfb4", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8f011ac4b19ff488fdcfdc0fca2973db803143724d0e481184d8e2af5c75e914", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "5e4cfb2e84a0e77077aa5e3eb29a87bd834951a287aaea2b7cb2131061a55370", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "7f941244a1956debe5bfe5f6bde367673671627fcd5ed28d73fa4d3568d8cc65", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "7f941244a1956debe5bfe5f6bde367673671627fcd5ed28d73fa4d3568d8cc65", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ea63a77b0b42d0491b6dfc49f78ca520abe3456a24c7161de3f32ccce06714fd", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "910589795159358dff80d742450378b54b02f6b40ac06749a41598377dbf30fc", @@ -13973,8 +13973,8 @@ "T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "83416177c4bc7da938e411c6d0a14616be9486ff639f4f1b4ecfe4e836301562", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "05753b744a3526241a602c8826566798a7c1a7205dc6b4fda6d5374172580a40", "T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8687815e7a6293bf7f3631ad9c09adf1f23e554ad48218e1b7f399bce6c9797e", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1127acf16b6ec6084586fe0448a99c50b09d5e3f05058a800a4216f28e0553c1", -"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "1087a032a04a6291ba82822f6583f0d25c5bc6434bdfff63c1f4ece19f854ccb", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "8bb73627d622922b64e56c743e3682f7f15f1654aa771d39f1ac5e16071631c5", +"T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ccd42cd88af5803b23f2fa07312bb6c09ce51b945eb95571e28baa54b0ae2afa", "T2T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", "T2T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", "T2T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -14023,10 +14023,10 @@ "T2T1_es_test_protection_levels.py::test_unlocked": "6bf1c8d03bbf9a844f5fc4e31fe7faad8d6c49a9d5d8edcd9c0e04e975386632", "T2T1_es_test_protection_levels.py::test_verify_message_t2": "c970730c7f45321957056c9c1c47ed605d50ec6030a61c093cc82e4b910dd26a", "T2T1_es_test_protection_levels.py::test_wipe_device": "9aaa390ea2296772b8715597159be66d6660d5c418ee783eb44d8443afaee71b", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "16df9efc20ec71366ae4b2fc62bc5123d1ae592aeb61235de5702d6ed54d2315", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "763634c6354ccf46ce28a610d04163c5bdf17563077e67c19e8a6fab7c1570a5", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6dfdfe05f51bb0b082628490073e17988a3a54fec9b33ef5dcc0ce0a6dfa7aa2", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e4bcceb9f4fde8a712ddaf07a2adfb5b6dd9eac66b88b2a670042d5552e999a7", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "a9945b96d9b2b2b3029c5a8e0517fb1b1e919375e6e6d95e7af7e38bcc2bbc01", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "f6e2d47557c0dbbbcfe671c75f41d04e371e252854204ad867f4cb1f2fac7fc1", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "325af0a8e9c99380996e48497f1108589b7db1b8aeb97c3050e9d1120a36a664", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "152e33d2b713278276220278a239918ee4b23f3e95340f8ad4286b84787d5349", "T2T1_es_test_sdcard.py::test_sd_format": "96fa6f12c78fc4f0e0d0e65e07d29772b9a27291564a7c12b0ec18a441b4b2fc", "T2T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", "T2T1_es_test_sdcard.py::test_sd_protect_unlock": "7296463f55e2a2142ace309c3a6665e398103e24b015ec0aeff34d2c2537c697", @@ -14763,10 +14763,10 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e31bee62cd3a5aa0c24e945311409968d70a03310d7e4c9459301d380be9c66b", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "1cab6523a7a5b46631b08034b8b260910c808b0cbe73206657a4c8fade1f3973", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b5afcc4f7275aa41f2b59615f242eb5128102b9a4f2b17c272162d7b3a9df850", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "adf4203b973746c9cc0abd83d067df69b5cda20f9bbb58fedccc6c81727de659", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "844c73b7715c7dd0fe2f4d54e380c3abdc9ac0ecd1f84d101a027afa449c6307", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "2767d02ad1cf3559e06307b9b1473aa49ba531f6e1ffe17792d894db1e25f7f0", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "72bd97f0f34bc14466119f5b9626bb55639ca1b78ab0670f40f2b5e8db16698d", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "1f8693e7979c83f231fd36a3f8be5167bd8964dfdd2ceabaddd0a2bb69af469f", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "ea9368ffac0bcf77a4b7633fd3e7fe7fa9b636b0946a753ac9147ce1c183f059", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "57d2f1b030473165a1e5fdd96cabed3261e9b33c22ba03be66929648e8c88c18", @@ -14776,9 +14776,9 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d67317da8d8529f32f492c15a36a6f56ae3f224de46d957cfffb686cfd3843bb", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "dedd91139f4c90adcbb218c9cbc469a0c3a58b2d1d1a20c149d470d9572f9914", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "3b25f3a58e621fff908387ac16386cb852e14971cda033da7b65c101a0ab0325", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d22f5fc713c8928e8a86e4282624535c2fe722ae82207355f6ca8d81b8353c05", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "7f26d54562c8f3ec46d260fffbff0c6ecf612afa2edfc20342a66e96bd0d96ec", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "33d4bdfd92ca83174a6f3b74b6f96b664f94b5f7b9a3a35b7b31a5f8193e8df5", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "e7738265d6604e6946c33d493a5b12d53bda098dcd6d4d45ffd07d380377f6e9", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "e7738265d6604e6946c33d493a5b12d53bda098dcd6d4d45ffd07d380377f6e9", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c14cf088eccbabcaa50cf49ba0653bafbf1e01228bf87883b573ae72df926fb9", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b83d6c2ec98d1b71547039dfa8f82758e1cfbd8b61d7d14db48d6fa5755de1b1", @@ -15444,8 +15444,8 @@ "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d77d842c703751c1ce7324280b8c2969d9ddb6c1f845044202322653bab497f6", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2b2c40d8f8a86ba016dd3b5407b0bcd1c01b50d05608881e56bffc68437054c4", "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "36cefa5ea7f11ff3422953a37467bb13a5a765b03d6e454ef226ffde45235b14", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "051d28f4f2a0096e87190d0a55dc6c45466b1e4ee52be0ffa684662f4a6d607a", -"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "8b58a5f7468bc37e760556db89245d875fe5e9645512dc097e3de110c28c56f0", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b2fd1617b983084b5ae4c5368180838dc72beeaadf0d002532ac9d3a893ed74c", +"T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "0c40701baa20aff63e32f42f4f16e346e098b8b414eb4d62db53c4a5ece0bf14", "T2T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", "T2T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", "T2T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", @@ -15564,251 +15564,251 @@ }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "da92603f608e110231d6aceb2fe496bd83acf16a11a718d883d9cabf96afe743", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "c902a6d745ccb04f79308dc7e3b4b4460c6d3be6f6f74f1c57c5df3b46f5a88c", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "88889bc3869f56415f27cc7f1eecf927c1467e4d0f6c61c93cd1f3c0464e5af0", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "24533f792f4ef0610ae68636b099af89820eccf81c40ad69c3bade2490b7e5b6", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "f4e1d439f39e72f43d5839352e31fec233d49ee51eb9d00a664405bb82e23a16", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "99990d9d30d24be6f6ace6f376f0639a634f34039f359efd60c0dc22b5e7057f", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "930757ee48edbf3ac068bf150dfa43ec698e87c491f0820dbf14ae04b154ce6b", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "22c2a28bdb0915fd525525b5620582892c3fcfdc404295cbf3134202055254c8", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2739033835f6b16d30d997f9ab5ed250f2cb9fc54a63b8bdd0e739cf86ec0aa0", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "504e8853b44a2eb9a4140df26bd8f5f5a068de57f509c9c9c877b2cbbc247724", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9bab475f87da1eb909f4c643df6072be930be1cbf68216b077d4c97cba66cd7c", -"T3T1_cs_test_lock.py::test_hold_to_lock": "7b338d98b53590d9504072c6eda96c93410d496f10cc5cbe88158ed59aebbe79", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6d6a82892d458c81451c97b0661cba6999bf5b8809afd66624d3f92ad7addcc3", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "c585a658000fecf7099e506e2190dd0deab26767e4b63d5e011ffd0743716130", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "cbad0ce4fb182391019bc5a5099eadb73ae83981ac6d11a8bd603f6db96d31b2", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "158063167ac24ca7c8804d949193086183f09ddc81fe89bb0e4d10e7663451dc", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "e1e6e268dc74001d4218128669a46f0ece4f95b4cc42229d0dfe7a80d6b94283", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "3e38f50a51d984976a6e42168cf1c605f78414a65ea7bb0e08b7c16b9500e49b", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "8f05761047f33de567da53e5cd7afbf2e57e4f27d8b656bb759242572ad74d7b", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "2d87536848d98fbe7a47c20797ae1e3d313f6c0ed619c60721a227decde5ffec", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "838f3267db86e7101119735199326a46c41eaaf05007debb1c99d135d85439dd", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "48d702aa8aa9be657e0e36ad1ea7b65d6817ddc243108ee68af87bae392b0b6e", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "e0b00054a328e3cf4f982e307efb94b89ea7b61fea4ec80dfceb54b172980f19", +"T3T1_cs_test_lock.py::test_hold_to_lock": "dbeb4dc363746c139b98a2bd61475d54b467cb9edc5ab0b5f08c1f7c75acd124", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "0196b595b39d7e4633df61d6e4651b1152d5606f0a538d394589bb672a01abf7", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "6d467d6c4e7ce5dc647dd0589b46e8ff12f242e8b2f0132ede8f18ff4f53d899", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "1115569fa6ddd3804f6bfd3b05ddbbff6bc0545941d6b4a587adac948fa63f02", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "4daa3281a8619b38979c38e33e08ea769c207c91715339d09e2a4dfa959df3b3", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "a0ee2acba98d415588ee045be2d082ecf67058702b610d397cc063a797988aca", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "731299eaf3f48b8947af923205eb64fac708a16d12c96389a0c658f4b1bbb988", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "b9e184782262ab17c52695662f2e16717104d38cbf665a80ec1793da90c986de", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "429e3e796394c53b60950eaed4757423824845734093a03e1b75411f421e82f3", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ddde6836334ed919bfcd826b590e7c043d0b12ed017d209b470470fde5aaf74f", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "38bb374b21dfc0c3791ad6578fb265d118677527b15f67625837dc7c478d55c3", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "1b333f8c38595941b756ffe9cb59fba1ac8245e9e55be0269ce4c1e6c3dd9542", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "b2d47fbe052edbfcb25027257570cf0470376b88d32f4ed70c643328d5124ae9", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5e982907b2c9bcb8d28dc2269312a5d93c19eb9774c306b2f2e2c03eecf17416", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "e6dbc784955d366d4c5a6555226f5f8513e9a45c19eba03a5ec6e6e76f3f61bc", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "c6b0aa5562fb14c19f1cc0116f7c5aa5ac5c2bd07e0bca20429c62471e37ad9e", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "e6dbc784955d366d4c5a6555226f5f8513e9a45c19eba03a5ec6e6e76f3f61bc", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b8ef02ee5d4623b8e5793ad88947025005d4df68154628cf0969f0f3a34b470d", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a8a16e00d8825b91c14937c57c4af2d68063118e061f9c165d9c97834d8136bd", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a84df1a96ebc454bb4833c9413e993547e54dbbb596a75be041386120af7e3fd", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "cd188c8eb6b45d7d9f74806b1e788a4a6e2e7cafe51371ae062ae2fc56c89f4a", -"T3T1_cs_test_pin.py::test_pin_cancel": "4ee6a51cd2654a2216b196b72d06ba50fe0f478b85054afc83c8e38734f5978a", -"T3T1_cs_test_pin.py::test_pin_change": "935d035ab81cad2b99fe0dec117415c2d47a5439ea39040301f0317148e3f07b", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "09ad78aeeea53f107129df4a66bea341c7f86e42864f34d155f650a0791856f0", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "b34882a24c8d88a6ea0e1e86369800f79a618d4a15dece65b4ee43da1c3be584", -"T3T1_cs_test_pin.py::test_pin_incorrect": "fe8aab96b5c7bfb001b16816309b6cf55327f6c5f26c5ae34b6e69cc26ecb57c", -"T3T1_cs_test_pin.py::test_pin_long": "73a5439627302c271458bb3affe2e2b5ff67b199833218ad7434c063b3c4720f", -"T3T1_cs_test_pin.py::test_pin_long_delete": "98b65791376079733017e6611e63488465be0ebea1a58169f93c18ee6b0d97e6", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "1d82d34741b9224046ae0eefe829ac78d405d450e87574684c5ba4b6419b509f", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "3a2dc7c84d141e3e4dd933b76acec6acf67b5f3ed84b5b89f423f0403da9176e", -"T3T1_cs_test_pin.py::test_pin_setup": "e08f7679828398799951fc630733f3819384cdf48c901a01dfbf8ee39952fba1", -"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "5f67e609797e18ce9e95a84948934e81bb109d045b0f0a14ad86cd686eabe2e6", -"T3T1_cs_test_pin.py::test_pin_short": "b34882a24c8d88a6ea0e1e86369800f79a618d4a15dece65b4ee43da1c3be584", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "e86a5f40ae80473fd44ecffbda037c8523c803a0e451d79727e4854ae5b5ed24", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "bab8ea4e644ad338e02e28eb5c00baaed3a944717ca97e79dd08ee76d087f8d4", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "3b080ccae2278363e89a2ee7e2388afbd5f4fed1aedd7e5631f26ddda182492e", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "e27c0d45b5bb798ec298fc90cb8d392aed55015fd14d58c47836b4fa2680a424", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "98a75a543282faba207104dcc59560c06b001a194ab2d1eeb9eef23b01c1e5ee", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "1e92bf96cd88bc1057d7c7e9cc0eef49f5c0093ee6fc108d06151e21d02e339d", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "47043d81cd313389209e574d4ca119b9947da7c95a4456424558becbaab74b20", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2d500400d572a6e637b585f433dd7237380a58de3d0db70ff1c0861ba36c1199", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5cf3ad879bbe85b5d6a9cda4314475b0bf0fa1b84a3c96e3a83f11c2965eb674", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "093148c5af372126f3474f05e0bafffa64cb55f25b12d84eede24821714e2a8f", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6a0d9109a5bc4d6a989d891fbe8caab6dd6db4f905d07441fc105036368de037", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "679e5b9a0f2cbf4536e4ab704a8a29807fd76edb9ffd6b4335e41857f422921b", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "6f3091fcaa6d140e56a73a1c06e80f55b698d2a48bc9a70ce2e19f579ff323bd", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "3ea38dd96b13c0ef5dac13e25e96c9b6073e56728ff6ab7fc76b12af9527eb61", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "65d6e99a5f62b2c078b72093c8510726dccf6b8c9e36ec241ceb923f7f044568", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "6afffec0f830e84b9d170418e3899aa5ec10443589933adfb447d4e7ddf6bad7", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "18bbf07028015fb4b206e17e26f4682471cb12ec798e3a6eff4b9b41d91c204b", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "9f0145481b88ada2eed41960d53d1dc8d20510a58782e696312ec6be1a973276", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "30cc429769829e090c3c3680cf5e6fc83d6308ccd93216ea9051bf314c53a276", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "fa384b2e0e0a5a84cec1bdbd3ec5636cb24554ce98fcae8fb9d6837c655eedab", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c67aed55635b943f14cb6e2bdb291a16fc591cd1e34a8f2b4f379fa72cd04a13", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "1f949b34846bc82b4d0cfec0e5d72892e5dbca757dbcda47e83b1a286aad9057", -"T3T1_de_test_lock.py::test_hold_to_lock": "ce28d0b35169318566d0fa0c5d67b774cf1eaa8be251af72f5aaed3fd4e9751f", +"T3T1_cs_test_pin.py::test_pin_cancel": "1ce502c02d983a3343c1a9586d22beda391207d04c8763383a974a9fc5359170", +"T3T1_cs_test_pin.py::test_pin_change": "a218f295e8c1a6cc644ea060107d94cf1f068770abbb5a7aee4e7418baff8d08", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "3004714a6c750d0c468986e75ca3691f4f00720fd02cf921ff5299b308471eb2", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "82ec78b916a2b8adc3f87f8d554e9bd4c295fe181699b7cee14337ea7148aa3c", +"T3T1_cs_test_pin.py::test_pin_incorrect": "4dc94aac2a1ccd61814043c3387780e3f0cbfa779b59154412aebfba8f6891f5", +"T3T1_cs_test_pin.py::test_pin_long": "02326091bae1fe69e3737d7307d430007f0d788c493cf28dbec3b5f8b4d0d129", +"T3T1_cs_test_pin.py::test_pin_long_delete": "79064cccdc5372c549269321075af93f31f935436bd1a5408f48982ba221c4f7", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "cb80f9254d990bb45d96f1c3ebcd0ff7cca3a443d2eae4d4418c2a5587984908", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "1e99fe568567bb3a0f463633dd4292aff77c148f5cabd525990be2c873767533", +"T3T1_cs_test_pin.py::test_pin_setup": "4ee4a4f6394b84899207159126885da162e6c4d666f97c147d9544b5116e7d77", +"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "1680121fa5b3d0756deb327b69a55bfcf0ba2014567b2b9d22bb9a6b8c681ba3", +"T3T1_cs_test_pin.py::test_pin_short": "82ec78b916a2b8adc3f87f8d554e9bd4c295fe181699b7cee14337ea7148aa3c", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "8ec99682064fb1acdee6532caa313f85fe7cde630fd4651dc57cf3b0ea7def0e", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "d49fe7b65300f4ee25f0062dd389c492bd42d3e893187df597ca1fb8236238b6", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "8149c5e7f74827ac7d0835001e4daca4b0683fce5350eedf20c846a5ee711910", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "c22f2f731e15f77a622cafb52798c43f32080f6d5076915afe813c11610874a9", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "9c5a4183729c87a23be5a587610565f03b5fcbf6153b77bc7048544fb3a136ce", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "a93fa6807dd978df80b266227e8ad564f2d8f0cfe1e82bc3d3f22f152e8d0791", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "b9e79a1c265027b33e7d1e38517fdc07ab6484eb1e3eeba73e32db935312b5b6", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e478c3b1f09d183439436e09a6c6bfb13f2f7693bd4d754d157ccbf181535f3e", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1f19633eac793261ecbd1ce4cbb9abf26bf0eed3452ad626e9dfcfd623f65a20", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3d6e7839b5c932643b158aa6eb07f9ef46f0b910904fa5337b94fc064f4b418b", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "68fe15769ad2e528a77f389d0325e0d4b7182a73eb2ffca731a443c8f4f0d7c4", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "07945ffa9f4953f4157804798050bd533cd78b3cb14b715b524d5c023f0493b2", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "2eacc5f2551ed96b067e9f0b85f23fb62e7a374aab8e00320d443d5107e2e56e", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "4e2565d24d12fa35425a08454dce4b3bfade358350f847028e8ba4eb7579c14c", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "353e5ee163e1c34da2e56620cbc31c6310416ae723142c2fdd18bc34aef82dcf", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "1dc920129fac070ae15866c3219a47792432aceff12df8926cc9e7ab195f505e", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "dcdcf8bc0181916cd9b3363b9bc92733aa3881574e5475d5dbcd0dd73fa1ef02", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d6eee80b5c1b8b858e0473c9d9bb843dad7f6fd656c58e9a7c0e9600379f6f3d", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "094d38e00e8ca0f4c399678775f555007109a94a664776f3d1ee317c01dc6cd9", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "93258bfa223d8778ddc868453599c776d52bbdda1ef5fb613f7c1ea69b8ce8ee", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "892860714b53e011e560d8c4df16dee1d236e8fd24dae6e8b0144dd25f32e1f4", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7ef4102658ccb3fcbc9914192b959bfe7819bbd84bca78b8ca3a5d078dd23448", +"T3T1_de_test_lock.py::test_hold_to_lock": "d035edb5ccbc1b16e903f3d38f8a3f799dccca6abe84f5004a20779748140344", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "a33bc181fde1c0ac16b38a273108fccdfe6b0efd8d9bfc1c692da7aca92ce8f5", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "8bdace586fc8b201bcace67c994b4eafd638f3e32f5409f60a58ab88a242ee2f", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "76704bf2037ca24df1906472035c620265545e1c4092db4831e71cdbe386fd35", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "6b7966cc6cc5b4176a84b3dbd5a40c9299d9447c8d6f15a920f88e08dd71036b", "T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "d01729e9cb57668d222b5c100ed4675c5740bb62261ac7e8ce1f7edada9cb78f", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "5e714ba99cf9b27fb45e3746ccbe203f3612c7089ba69e1bc95520f3520577bc", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "d4445b5ddc5a0a06af2d75395e49ea3f02915b3ce5a39e6f2aee08e7d0766a37", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5ec52eb6965f161c6f7f4690c7a9edad2e1887c48f19d8d8b7e96c15be5fefa5", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "30188ec04ea045e992fa775cd284c089ac52b221868a0358af0815daf3772a6c", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "be12b13f6e9d2b228834db6ae250507184a68cee7e97040683a3522e37de09e2", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "d6d5d243d3b98d52442cea5b60306e988ccdfd73bdac54a45732d3c798822367", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "4c59270d2458dd03b3b18888e9708f3e33ce643e3ff5167c6513bb863d8c9b7c", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "c9450701e2215f77109e477c78ab0d4a129c74bcfc71c6b6724181c2f1aa33f9", "T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "9fe557e73e62662910e678680aab13aebdd47835ec39177dab94b897cbd84ea8", "T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "095dd0acd98e1bc3d045aab7d5ffba3300227539eb91e5d0aa7990d22d19504d", "T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "9fe557e73e62662910e678680aab13aebdd47835ec39177dab94b897cbd84ea8", "T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "456fe823f25dfdf03de7893efc80d5fc63576b2a8b689b230b143a10f339fbee", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "63ad9100c6f42d85f5318d7c8f514cc72eea0311c39cce71f9aa90aab8efec10", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "92863b70c1fca55d4d9a76f602ec828385def4cae1575976d4bd2b1e11f8a2db", "T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f39f2f6e2271f239847f5c38fb5dcd6bf06ca9d9707f6761fd62c9783f082bbf", -"T3T1_de_test_pin.py::test_pin_cancel": "bb5c60fc4d9d8132a975c97ec4b3954cdf238c12e9130328655a8e35fe0e51f8", -"T3T1_de_test_pin.py::test_pin_change": "e6c56454b8b8e9330418cf6d7951fdd444c94be9a77d09b46b84d870b0e6518f", -"T3T1_de_test_pin.py::test_pin_delete_hold": "496523a2f5fd6536052e60008dbe11d296ee48608c30f5952f105cf6da1f63c8", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "28bddbbc87f28d5e43c6562eea0941258b133036d47826780d971f151a85ac78", -"T3T1_de_test_pin.py::test_pin_incorrect": "b2afced7f3a7a93bd7479619798c5e88f697249bf8d6a4b555255fbb7b71542f", -"T3T1_de_test_pin.py::test_pin_long": "c8b9d6568b0b5b16c1b8a319c80d31d21c0e22de20cb5ee89c8143d1e85e3b57", -"T3T1_de_test_pin.py::test_pin_long_delete": "57872ca36b1ead605ee39c5469216e050e1a81f847f27bf3e52426ee35ca4acf", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "ccdc2c5ede7d743cdd2b54bc0716912db68b5ac03f1264ee59e27c25536d846d", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "aa3c6996a20424079542d11213ff19bf7800b36f4465a3fa346d41b729901a91", -"T3T1_de_test_pin.py::test_pin_setup": "6f1fab7b8697da7e69043b9f2deea251ce7ec9e339ba410e12e5dadf982b02a2", -"T3T1_de_test_pin.py::test_pin_setup_mismatch": "c547631c68ff8743f4ccd55c80a2843ff481053ab24e5c0065ea3bd586af69e5", -"T3T1_de_test_pin.py::test_pin_short": "28bddbbc87f28d5e43c6562eea0941258b133036d47826780d971f151a85ac78", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "e5f4c23f0dda841e325ed182298e7105b96d36df1523cb6c0fc3c0c0a5084e15", -"T3T1_de_test_pin.py::test_wipe_code_setup": "0aad092b4268dd541ee676bdb162a242965a3d6109f00404c14d6b6eed8c0d48", -"T3T1_de_test_recovery.py::test_recovery_bip39": "fc8cc7dcbd71ae830fc89e21f239b22bb3b6d6efdcd73a3f3f01f02f44f18a85", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "9e41a09be2d4670fdccc0f0ad71c598c1a42f0d6c73c9d9574e42ffc713fe228", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "18b33a025bf8428584de0909a47896fa3b4eb5d759f903e3c67eac4e6c02d147", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "6320981b794bdaa7fb5a5ef74363b610a6dba3a1a87423dd51541c80d807e35b", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "f0da6ba481118eb41fc5a88592b081fdea68618f415af72f1d2f097fdae317c1", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d71c2e9a51093222b8da2509cc8595bcacd108253a316a08697f5a134301f101", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1bbd3614b55e6b1b39d5d39aa94c8960c037c61be5a7bb3152bada8c8fbc8529", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "2ceb51a0c077326c8413296c410b6889c8d0634ebde2a83af387076963327e26", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "7e2faa42321cd094c0a48a9bc5eb38f43b2deac7bbd5461e3e6198de5a9b4c08", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d69fa223918427ecd7aba0583ed3ccfc28af6547257b3f32fe755bdebe59657d", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a85ae2f7caf40307ea02e29baa623d24f0b26eb5ffb75585abd0cc0e0b7f6cbe", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "7b8d2a779d1ad13c0cdcb752d4dc02373bca5a8b21a64e0d9508b9a5a573d981", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "8330513aed8d53383656ffbc8e7c146a0b66e90ae7f15b82fe9f6e2671059c0d", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "a85f229c568f96fb109a5ec57903a08be5a829427bb81d09e64deab57544fb5f", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "4fd6c65379b53d08a3c07b2aeba26a9b82bf7f271666fd0b010acb31f8f28439", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "37f4152727160d9762047ade9bae357c7240cde02b68b7a0defbd0e458815674", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "02695fe4ac2725ce107299add60d4ceed7681df5a350b6e258a7ec63fe7532e5", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "8116419ee28266f0184b41e715ee2b64b9915fc5c79de66deecd5d7f66105eb9", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "64560da03fd1ab235ce8ae68d07d3c317888b8c2dcdd9279592ba48a91b69220", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "bb4137f567ed0d792b7af1711738dad165698640fe1754ef7aa11ae0b033d94a", -"T3T1_en_test_lock.py::test_hold_to_lock": "ab70110423055f79ec5b37596c1eeb9fbd5051bf9cb42435a0f6882154a5747b", +"T3T1_de_test_pin.py::test_pin_cancel": "209bd5972dc6e7884446fd4e6cffb69917116fdf40a45127daa7b87e0692c625", +"T3T1_de_test_pin.py::test_pin_change": "52a1a3118a9bbb7a308780a2d75987f0e145bf8ee3182be3317fed8258975081", +"T3T1_de_test_pin.py::test_pin_delete_hold": "87716d722268ca5a6a98d2f5fb9ee69e8215ad6b55bbd7639890cc11f9e14f14", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "3ccda15cd2c76602411031210d4ea66eae140c822da17c0fad1d756655b85499", +"T3T1_de_test_pin.py::test_pin_incorrect": "a0683b9deec6acd1b0fc471f6f33553d05b3d5cdd4097edfcdd32e2dcdef0aae", +"T3T1_de_test_pin.py::test_pin_long": "1b0fbde6838ea233a460b81ea3fc72ee48db6084d7fe2e749cf2d81a83b1d4ed", +"T3T1_de_test_pin.py::test_pin_long_delete": "0c5994aa22af877f8b59c236dd635a474f8832f7d02c470504a7a0ffab2f5c0f", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "549fb314632bcbe1a0a012b74e6f233be3af09445477a7672ab39a721d4472cd", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "501d1b7cea6549cc75386d8d302710178d06165fa587f6e51e0a3777c104fc2f", +"T3T1_de_test_pin.py::test_pin_setup": "6b42047d89a464171c500f258b9dce8a01d7e2bc63e9f96f3e25a3ba62665773", +"T3T1_de_test_pin.py::test_pin_setup_mismatch": "b3cefab55a82b22f54d963213fc4ffa2bf451dc5c37eea619e6b3b0e4ce56b2e", +"T3T1_de_test_pin.py::test_pin_short": "3ccda15cd2c76602411031210d4ea66eae140c822da17c0fad1d756655b85499", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "ca755030d2d258c811ecf7b1dba03ac6ca0d68404f5437aa5d9b8fdf7fc69281", +"T3T1_de_test_pin.py::test_wipe_code_setup": "26f46aff3d68812d6fe036059e3a2a34576778631371683695492324b371adfa", +"T3T1_de_test_recovery.py::test_recovery_bip39": "c5104874895584c053afb59953c9cbc5418ab98f2c9bb9853ce85af6fc87e43c", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "fefeb165495961f2b4f99272ad813fcbd4da47479dd0b385ba4855dc2ffa5011", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "491bd2a211e119df85c6d251e4d5d1c40423595b14eb195977e5a331bc74fa15", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "64abdab46d9c13b5d2235fcfea4696f21aed0943b6dbf5abe428dfcdd5cf2381", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "57222b603884e5c5b4f0667c4bc23a0dc0bc08d274404cec2644387e327fd3b8", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "56ea9feb0e2a77e5a96b5003c561bbd63fab0e5b417391425485642d9f005061", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bd44555375181366118e9bfa7bac765c692115f3bfadadf3d4969eed71ccbc09", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6954de6b5ffd5a71c62f7b96fc8fcd25d2bb1df0665f2a8dbfd8e78573f48fcf", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6dd93a9a6879694068e3e2444b98443bfe7b7f3335d7447e722c785faf54a458", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e484cc97837f0c93bfb2530710fc4c1a007ed28f518bc05d4d4e637612969fa2", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "88f4b09b5fd4ab41f94ef38fa1f544f2e11b5a5f91446f6c94b56cfe1716fa53", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "4aeabb7364149029935eede99316a224adb1b8408160e00fbd819cb622520b26", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "9f32d77ae1b28eaa2fc04c9c7daa8e40a193907062bdc77a89c1fb2974ca61a5", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "093c3c3e7e07f050385ae5d8d53f9e02609df1d4ffaece15aa274541faff075f", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "af55056df9e40150fbc775bfa977cefe4467f1e70cb61be782c9b36c1a6468c8", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "47402064b7eb861a656762194834b5650f68e9c9e8d7bb4837cbd71392bf5af1", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "c19ac243baa005287c4e29af79fdf8fe051ae9a0c33b806cc71f9103b04d9bd0", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cb89fec564c9e44dee3c9516a44940f948bbc30a96c7ba6295179692b402c275", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d69d4743c013521ea76f3f5f4182d525600520c116357dac0545193e5745ec23", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "cdfca792b399e20645b0fbb2d12dbd2238fd869f805ebe54f86b9e3c80769d90", +"T3T1_en_test_lock.py::test_hold_to_lock": "a2455a98916552cfbc524b9699ff4ffd11fff45589c9953f107f496c184f8759", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "45b7d15ee8c8741d65803aa7e14f7beed2ceb25fdc928c77009f303e5f62758a", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "6d6d745741b4b9c2cf3ce58b3dcab21cc4c7a739b1d5b71237709831558a3722", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "91d1336cfb87c3fa3c967cda9ee34a4a358f6b05c5b120f8bf9750736ffd1426", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "ce62533885547708e9ab37fb07e90d5a828da79c3a4754a56585fc1427b33db7", "T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "bea7a7fd80172c0096163098c1991776a3a1993dc491de13b6ae591df6a78562", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "49555db52f381dbff6d2e7b5d03b018fda9279c290d3c265945608d6d9d5e2ec", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "af3e02bc60b713391e65a1e2b0adbb9052815df90c8109ecbe81e34220674de7", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ebda2abe0f82e0b29e90a83d40175b5ca157f55e62ef9b6a1eecb1c38035c041", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "50297b16dc76ef5c17ea212e45e1bd7a582e970f0fb4d0434ee12b3e18da6912", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "f03ba8cf6c795c63d3a22493b81af6a5bd5abe2086a27519a4c69dc42dae9d5a", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "c6967f228673b9aade5195c7a00a22f4c732360430ca20ad78b3075f34d54ca3", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "287c21fef0ef5931ac5e73b0b5acba3977fc47cea8c339d1f957ad23869adccb", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "a93ce2a97e5dd22475fe46a041f8fd475350445b49c1b560eb3c35503139c321", "T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "f41e9108142fe81156ee0d04f9cc1e4e4a839e1375956d66f74dd439886c8c11", "T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4539be2dba47390d5f6c7158dddb74a8a853df087808e5f0413078a7885a07a0", "T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "f41e9108142fe81156ee0d04f9cc1e4e4a839e1375956d66f74dd439886c8c11", "T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "d5dc1ffaae3ad8be857accadc813fb0aa6277e4906b45eefcd0d7e2d3f9d9e8f", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "b0e54002891f1a4023c8b6f8a900b0d8f0fda1c5a9d2aa352cdde951bb6c19e3", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "5355ef31a0c0f69ac17ef0f9fe5ff88d0709a1e6e4849a3e9982bb29dcc006db", "T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "dee584a1bf0606a333d957a3549dd9e2321251d921c77d5ee9c8aa08a77b76ce", -"T3T1_en_test_pin.py::test_pin_cancel": "9516192b881c7125e34cba7cd6cd7d5a0271145659c51d87e34282fc73bec17a", -"T3T1_en_test_pin.py::test_pin_change": "4b4e868d3f5bfaad0f3d3925f807ed4506a93da40567dc2d3f8de17e5c41668a", -"T3T1_en_test_pin.py::test_pin_delete_hold": "570c1ee7c5b3d1e40e387373bc0c283520488df5561d64a1d1f1db03089dfe9c", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "88e9933a00018c24f3df8dff25459a7fb430e643c0c91761b40fb0984c85d6df", -"T3T1_en_test_pin.py::test_pin_incorrect": "b4eb0c6974d0781d5cb0ef7ccfc1a1b2d45f3174c358b0b98f013f4eeadea632", -"T3T1_en_test_pin.py::test_pin_long": "c0b585a3cd74d04b5bdc68d6156d6c07f9ef77b0e7e9d354d3061a75bbc14b3b", -"T3T1_en_test_pin.py::test_pin_long_delete": "bd99f184a71e463b9f9eede0c16e3096c418d94473fdd7016c64014caea3c7a8", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "5f2a71ac6e744b308cdf196e78bee66018d458fac3af374d3df5269834142815", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "c139da416bc72da572f892056e293e6a3f6c384b9f58f305fbe17731f2d337bf", -"T3T1_en_test_pin.py::test_pin_setup": "2e300b5a3b93841fce6887f8dc7eddae07813648d5ba3a067c0c416c0c9a0b4f", -"T3T1_en_test_pin.py::test_pin_setup_mismatch": "158fdaf1f19f814ac6fc2380c54501ccb9ff5138efdc001dc87095787a47c29b", -"T3T1_en_test_pin.py::test_pin_short": "88e9933a00018c24f3df8dff25459a7fb430e643c0c91761b40fb0984c85d6df", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "dee44d23789dd8e82301a0c8ecc3c232b6e4820523965aa98ac9ee3bdd74b2da", -"T3T1_en_test_pin.py::test_wipe_code_setup": "f93c71c6dee25d6f4772ab259f20d3d795ae63126d53abda9f71c4c311bba1aa", -"T3T1_en_test_recovery.py::test_recovery_bip39": "726b9bb0f92ec6a15bccc4a3c5efadffb4fd5077d41348ce88e4fb45c4a02295", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b401edd8ab74d14ab71885334af74f279725a446e19e9c9c89377aea469ac491", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "f9cbada338d5e4e2d8f45ad6f98090d1c51aaae7fce1d578b4cb358f1b5bffff", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "f21f070aa258e83b1a2d3e86cecf8df87ae050b48ceee91b72b5085dd7a73cf7", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "a44ee023be0456388031dea977d63945858903ed60085a9e2a9c8f2c5e81f9a2", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "4acf84d4ddca9cc289f7c58820661ddf3da35346848782b6887283b043999390", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6108e0c860b0c401d80a34532c163de91bd8cdbb714c6c5af79b9d767b3162ac", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "be24b43d42b0eebc289ee5669b7a26a8b8dc3fc5a32cfee8a2588878f037486d", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9ae4ecaa42bb2ce1ac284a1510e00d5ab6eab8ac2735f7c3111287e5dc03ddbf", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "420320cdf80ff2251b9dd86201ed1c2aa8a8f1d4a1182c95ce24dbf1fb9e93c8", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "8e7c1b1c2ef864dcc190bc9d8b85f451227af78b4b4bd7c247ebc837eb42bf27", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "582e536d01eeb67a146670bf397e08f9aa80bcab24df86c4274789e60ce0da98", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "fd9e4a8221b8bc8b9454b52303636ef5a0036d7b2db6338a39f10f4c2486a5e8", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "205227301292e4e0794a9854f920ee2afa052885f6f1943f922ac8d0704f203e", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "0ab0d9686aebff9c03117798b06f7400652282d2e158198ea8977b62eedf21e9", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "49c5901e0655a8a4d30122587f7d21eac74938c2dd1a4da1c43272242c236035", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "118e51fc0034b0205546443256503e06e82c4ef5f93af28f248ade9a6e0adc3c", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "c6db64aae718fc98cf41772fa351b7dcf941d4b1ffa59cb67ac92b402ae5025f", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7ac4b7e9eba9d0e363ef2aa79eb5d92977bbac97e583dbc1dfaef0b43a3ad681", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "78fe2a1dad00072e78b24794cb93102014c441c8cd89824b3821d8240f25eab4", -"T3T1_es_test_lock.py::test_hold_to_lock": "3c595807b765d89d25bf5a6200c11c9da4c5ac7a6a7eeaf2651c23b3638bde70", +"T3T1_en_test_pin.py::test_pin_cancel": "9e3eb58dfad0eb2a047f616ad797926ec682e0862a3debc88f9d64a1c22d250a", +"T3T1_en_test_pin.py::test_pin_change": "ef65a96a3539282bc0595412ac3c3819d34c102d9c2c931b367412ebf81ad8d9", +"T3T1_en_test_pin.py::test_pin_delete_hold": "7cf6fc3192df960b94ea5b1370c1e79a566824f933b0df3bfde87dc78e6544c4", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "1455a6987523aee9e408f33b32afe3c63e9df1b29ddaee9a6c6ebc1c3d08cef5", +"T3T1_en_test_pin.py::test_pin_incorrect": "762442feaec8a8dd387a8092b302ed8e18cbafecefc7cbb9eb9a9c5529af230b", +"T3T1_en_test_pin.py::test_pin_long": "399ede9180ee573bb16ee1e2c63ddec5813828f0e20bb00b8e6033d29fd279f2", +"T3T1_en_test_pin.py::test_pin_long_delete": "43999dfeae6a3a55e4e5679ec925cb7d3bd53b993b0d6aa92c4aba1458738cd0", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "d52f3e2ecb73b233443a7fdd38f5701cdfb4188ca712e29c5375b60cd3f59ebf", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "58a1d738be1e02baeef595b62ce1ecc69fcf7c9c5a2a23c2025a351738f353b9", +"T3T1_en_test_pin.py::test_pin_setup": "220278ad40de226b5812b0c697a896d91b1e4f5efb43af6641cd57be4f4e8017", +"T3T1_en_test_pin.py::test_pin_setup_mismatch": "0f52ceabec69c9c4df0102a9766892f5a5ce0e33b14b568163671f24b3e9819f", +"T3T1_en_test_pin.py::test_pin_short": "1455a6987523aee9e408f33b32afe3c63e9df1b29ddaee9a6c6ebc1c3d08cef5", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "e26a844530882513d516a63300da792a27cf069fc04f2cafbca0b0263daaccaa", +"T3T1_en_test_pin.py::test_wipe_code_setup": "ce1e51c264f42c0882db9b64cafac7528979646db930373fcab74fffc910241d", +"T3T1_en_test_recovery.py::test_recovery_bip39": "e4a4b67bb4df6abc7fa3b41143bad5af6a730bc8149badb3bca27e223a2e740f", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "d3f1ae68c3f53b9a4f420d401b17fcf0e1df9e72d7588955607be9171d6dccde", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "8c41faa6e0fa47ecaf6d58c8ba56abe42b5f4c9af5674f1f43c6bdff52262781", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "f6cd30963a0541521c5ec5895e4e72d90581648587aea97b0fb6a3e01f066669", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "d30d7c70bed00306c1ce48ca9cee7550c2dc67da6c7d5ca310b2ae80b0ce7b78", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0871e2cb30485cac25e17e1bb9d4a8b16a151845b8c5d62f5e1c517aa2d11127", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "64f4a3aa57b7aeba88aafabda05dff768d12aafb05876de1b3af35b2a5794025", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "8ec7c62473d597734610f5a868ad70890decf3edc40f89a370716d38794a0d40", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a12e32a489b56eb680b8325469e79f39ccaf28e60b846d2257bf7c4226524e67", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2794c14a75aa221a6b3c03b72a0e0fe0802baa5083317df2d765105cf7b1c21f", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "0c1f4562b8f546de446463e1e6b1a97d824f37967951575fc68031b5fad5f008", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "dbe0de6721ebc6b132cce2f4dbbf4773ddfd7c0c51560aeff1f8ba26ed0fb90d", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "a99e69cfb579f3a66f944f613edb01e6c315276b2909074c3c29f825b93217dc", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "634db6b8dc3b5798b136dc9886683dc9ea04e391ba1a328ce5703e5a80b1677a", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "a66048aef76e5a96375b717daf4c934f2b7be0f361f85f03d68e4627593d8f4a", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "0d28129e9ce1247b613c5c57c445ce02fc3518c01377d813677dab87e90b9efd", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "e4ffb53fd4c7b863b84c818fc1bc5a2e84034368fbefc50405083b75f278355f", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6b130d292dec4116743776bde5a318a8550a5a5dfd4311c0f1622f619007e6ba", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "85ee31647a32e229b72049bdefc7e616daddbfa609385abca02eff75ee23d219", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "18b7a0948bc9dd72a4a95ebc38aee45340df4df5e9bc508f1f3f6c5971e289cc", +"T3T1_es_test_lock.py::test_hold_to_lock": "f5c249e824118a5df9c9659893fb22f7181cbbc973ee74020bd326138e806629", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "c3335909736ab6720417df11d6d226f38be81d524fb679b7dc35b02f1d786d6a", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0d3db8328eeeb2946c890189eddd32b38bfa43b0e5b05b4b23d1b08d8bb07841", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "cbcae2fed45432f38f43465a47ec86b5328bb178a46b8647b804615ac6a545dd", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "66b85031ee76938702c05b9ca9504d264943bbf7d0c56f334cf42d66e87de5cb", "T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "d340775b7d1300536d57f9967ad8264a1e670a81e2af0d5efecba898c99133cc", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "79b2ddfe1f51d6270ef9b26efab155ac8663de36bfa42436fdd90d64e3de7b9d", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "cf1988383720bdf01b8e3801ddab56cc4cea5a1431f1934f09f0d35fb4c75cbd", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "fb9e8e89825d1f04497df483cab19d76481b5adf38f9d89049a280686e0ee750", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "f83c6f5977fb89dd40d65c8604b77413420fc82d7b9c0bba0df0eec031ab7790", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "c031d0633ed3311118bb7b97d41c97e7d47c8785b3523ba0bcb251ea1d64c769", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "f2bdfd6aa89233493006918b3565e7aa0ae634300230e3f0c1779879f844e5f2", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "e7d8502cd4bcab18b3ee3bceb0238ab6087cb61a710ad42f543383c3458541a4", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "74e573e3ac5ad4cbe7d5d7c891d8066b3f1638bb9b783f944e35021f67234db2", "T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "429f3ea058ef7850504c9f13272b57c23ee712665a30c2750593a9400377f2a6", "T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4d7a0d562b8e12e26ba801b086d60720f525d5a0cbc1668110d93845883231e5", "T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "429f3ea058ef7850504c9f13272b57c23ee712665a30c2750593a9400377f2a6", "T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "5ecf809cee2a2b6d1a24972c881e1c1add9e64d475bb25b7ee4fe7910f0066e0", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "5503105e49337830c4d9a6a9aca3c0b7e7a17bdf5e6ebbf61e3bfb3190c6d835", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "0093926453edde5c1b90e62d8c6557be13a4f21b2dd39da79a1659bec620e6f6", "T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "a8d6cb97213b205e24fae5ad4590d9c469bf350db4f555e62e5ef5f79ec5138d", -"T3T1_es_test_pin.py::test_pin_cancel": "253c69ac343bcbb39c927f540fe2e969ce9c54f29400c6c0ec14edb8ab775a21", -"T3T1_es_test_pin.py::test_pin_change": "428440f1b2ee82f856a25438a106854b84f1fa24f3d54c6cfc0d1981276599ad", -"T3T1_es_test_pin.py::test_pin_delete_hold": "cc59eeaae1d301e4538e672e903bf4d8eab771dbfaa6c5c5aa47f5be904de6c2", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "2fa91a380c2e4338583032ba6ec68e664814037d4a991d60f204561764dfe64d", -"T3T1_es_test_pin.py::test_pin_incorrect": "9230e6ba7381328f0e1561b1c47edbf6eb2d7ef13da550e5e0ea334755d81295", -"T3T1_es_test_pin.py::test_pin_long": "b10cb621384eea5ad6f23b32cdbf88ea3f2c4d116a2bff23e63e04995759ca51", -"T3T1_es_test_pin.py::test_pin_long_delete": "e792112d818e17f2bee2516aa3b7100a788fa31d8d1db19902edfdc11b15a4b0", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "384e7d985cfc61ee1a0414d8073b85b44e7b7ae9294a08614420be0598cd7195", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "624263e6e66fecea1293b575ad0c40e0d5a02199aca97ae771a51bf72ab21101", -"T3T1_es_test_pin.py::test_pin_setup": "d1d6c8b9ccaf9484d530ad225106b803adf723825753708cb930280c292b4c17", -"T3T1_es_test_pin.py::test_pin_setup_mismatch": "1f9cbe01c8469d4648c1495801dd06092f8630b0fa0aa4826ccf3808a4e5c4f3", -"T3T1_es_test_pin.py::test_pin_short": "2fa91a380c2e4338583032ba6ec68e664814037d4a991d60f204561764dfe64d", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "b0c9c1d71182e94c4b314427e099453b41c9f1bd6ff523754b390d9451fa8184", -"T3T1_es_test_pin.py::test_wipe_code_setup": "8cd870b853e632d4ff43ca4e13171d3ff5c8ee15bc3a9ad2a1b6828c83582e16", -"T3T1_es_test_recovery.py::test_recovery_bip39": "26928900333427959e86f128ae4bf73eb75622fb30d8b0ee25ac1ff2f2a74bf2", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "88f9448e8914d798e118dc16be2085bd620a1b0628bbcafd7f6dca72a54e7420", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "ace38506ab51166837c094b3f62d1dd2db9bdf51ed2eb94686fa7c09c1754e32", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "800a9a9f36a4687be2dd70c39e74b7bd327a3db9862c4277aa4cba1b6a34671c", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "88da51b12f241471ce91f574b86901c8d49f422e2fd1f3298b50b452dd125abe", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "86a7824c455a584f0a5450e18e15980b54ace8e356879a6506a367a76c5cc7d6", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1f5a7120d4d79c167076e49092c058795c94c65a1bfa9234d7bbac8233f6674d", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b1c1a7db0d8b02e274deba6302024355168decf5689326a9371f67ee8db0abf4", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "388b37beb972226e79b63077b9dfdcd3e5b2a0a41573632020467e9d36e5ed5d", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "06a2f06ba8d59e126caf41826a0cc6ba033f87e5e7de6fba8f14806aa347b097", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "70fb98a33fd54c66b482941ce4a7a0eccfc8ea8580745ee51b5a3aeac6f12f90", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "cc5fa43d5c4bb0fb104030d540314f6f231161845f6d42f92031855e535be919", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "1797bdeb40b18bb2aa93b271605b9c3a176d08b6e3d2330d83ed5e833e1131eb", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "365463f6002c06da68ae5bbe8bd02558a3668bb30fbceadc6c27d6f224e96089", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "ce7365e2c847ad4d3e212f177b8a9cfde370c06c34d74011ef989ddcce9e80c8", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "27c454e6baaf3927555e77634b40fe2e445022b8664258c0975b7b17bee4d2d5", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "37fec61a1249027d765e0af8fab9d4256460eb0ae484c76ed15814ff33890342", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6cfc97693948763ff408083dea91e0233c6298a0b65ab2a8a1c1fb8358f87e85", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "093275f18de7f2102482aca98c1320a6956cea13363be39826b489c373b45997", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b3b65a0d5782b028a868fa20fde3885799467cda8c69d4daf93548f39d047ebf", -"T3T1_fr_test_lock.py::test_hold_to_lock": "31e3106cceca40454a3ce2bcb0dde4ea44a25ef1fa2c2a0c015505170d3f04b8", +"T3T1_es_test_pin.py::test_pin_cancel": "4a8317bec7ae2dd2ad79bce90b57d481b6434b2ce1a8a2f4fcaeebe5b8d32525", +"T3T1_es_test_pin.py::test_pin_change": "26e5cc2f5a695b2731b09dd1a8bf3cba3a32869627c7c9f5e4cb01c835153f40", +"T3T1_es_test_pin.py::test_pin_delete_hold": "84fa941898a08845edb93acf921ebef126eb3e3c7b4072b23e6f8f0112d3afcd", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "37ebc2c8377495d678b377fa86190625a6951ef05f866ef4ec16c02184067578", +"T3T1_es_test_pin.py::test_pin_incorrect": "7712b0a0c4f00de2ad495e4b71a78392c9208d1f6692ade9674ab4de417d00aa", +"T3T1_es_test_pin.py::test_pin_long": "597dc63974253774cac191b849ff4deaf78246b6f2cba9c9151f78986b7093ba", +"T3T1_es_test_pin.py::test_pin_long_delete": "675788dfa66deb5b00fe92f88c61bfd05c4c245a339973a1cd69fb9d62dd487f", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "d5dc0e06be05d28a07b651fe423e2fcf21264bd38c970cc3fbb6d03e38929d72", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "163f25ba48838930520677a85c37bab7492fc6bd6353a142752442e7136b03cc", +"T3T1_es_test_pin.py::test_pin_setup": "e578b90346025a3ae256f366c334f79cec3aaa47af2298c4bd46abb88169d88e", +"T3T1_es_test_pin.py::test_pin_setup_mismatch": "ad7ad92882200143c36c9c6ffc6a33a8664beabfa448548957350d09ce6e8b57", +"T3T1_es_test_pin.py::test_pin_short": "37ebc2c8377495d678b377fa86190625a6951ef05f866ef4ec16c02184067578", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "3eb0747153f022cfa990a8e81e719a858a7254742d60e3ae1ea7dc952e354b16", +"T3T1_es_test_pin.py::test_wipe_code_setup": "898c0d4260cefbf0ef0d2f5a8bdda8849690bb6ebd68007561cd37ff6028c329", +"T3T1_es_test_recovery.py::test_recovery_bip39": "9faea4220e4647c307d74fb30029c73086a026a477fb6b1254aafcc5128cf845", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "8018b369d6ebbcd2dd6dbefbc18eb86124f57610d9a6d8a6ed30419d3396fc4e", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "76d8bced36dfea2bd56756619aa2d20c13c912f1e012ec0f34a761fea72b900f", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "42f18b49669caf6b1de52c4e44ee4cb083bfc418f236f59b7cce25c3e9afd188", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "bdc7ce82f37ec3e53bacae7621d075b623b9c6341d5aa33b44497a6799dce180", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "db96b69f2727fd3ad30143a275995f228da07f0a0c15ca193b23aa2754f99f6e", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "50aa3ca82b411765778412ed3b100579d9d4268a1d3d0ce1f37bacf3e8c9fca5", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4f9da73f2e6f4fa3f7c5802192c262c29451dbbc4be091f9892f6a4a323372ac", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "76007df5ab579bd73a04caf1777c86a7228ca7eae527f50ced07d939a62e766c", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "c3a13f54e667112200c3f98c8a6a9cd5c7c44e95f969da70f0541aed18f4aa3b", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "355c8b1a25b9b82283e5abb3c7f40126ebe355ba4f308b7fd1afa14dbc4ff930", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "20e2d4622dbadd7657f1434620a1e2ed4c47b45bd5dffe704f2b08f036b72097", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "e2f04d9f67dde80d19bd1a50e745ce670c31956ea6bc2c9dab80c716b6f8d710", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "c3ddae125406eaa38bc42f65004ef09f2926edd1f9bbc112968b8ba108311797", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "a0e88cedb93c8665773c4743c33a35085d5f3a4e14eec688c23183ea88605cd1", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "b8d3edd4c3796fecce361d9c7357078af8a2f4168519c60ada332111f5e2d017", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "177da2d5bcc99db5bf09b3f797b8b242783c13158b5adda3642ed2c0dd5bbe4e", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5fcb3b12c8313eda0559af056c6026515a037713a3c36f9fd6e47455ffa7eea3", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "96d3d83431c4c4b1f998e240bb03b7d52b0bf83b43fe0c50a643e30954aaeec6", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3e7c3aee4c812b6ea2cbf3a6455e27d7e10f92b5e3e7099d94c77df37182a727", +"T3T1_fr_test_lock.py::test_hold_to_lock": "f341d9e178a3c06a14759666046ef00f48ec01ebccb3df187b8bf6e4ff2b7337", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "9f5532507cffced9b2352a5a0dd164f0e4ee72d47cb0aa8e892653c2704ad8c2", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0c38cdb7b9d03ac983a305b9ffc2f882c33df18db87b8bcc33d9a16bb0aab727", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b24e053fb87679fd9e46ec4b64f48bbc8782d9f66d8079eac65e1de86f549400", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "046a0c1d9aad00ec396f8e4d89a17a17f7ed4578f7e2a91076b3f35030119d72", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "70989e1e60aff7cfb326b7ad9121abe5be2800e65925f062e6b58c190d6614ef", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "7cc67dd54dafb1bd0b556614be4d096b67b54bdcbd131b38a3d4cbdf003bafe0", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "155488b8debd97e8f4aa96e3297e57e2e961792334468ababa800444c85a0fe5", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ded629920557bfd8e5067e467f968cf13275b805055af13c5f2dd1ceb19cbc73", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "de00ea7cd4c1fb2db96de2d86ea107dceb6a286a070e156391646571ac99c8cb", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "0261410316af4b2d96b928f0f0fa06f51b0040a4215af84f0971f308c140eeef", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "ac6daaea89adf16bd21e59bd92994fb5fcacd3bf4e333833b3c07b3198972aa5", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "47b160bfb0861011389f2371e574e9d48cdccff5483122df60da296ef2c17d11", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "aee078629fe799f72f3002b23a960eff971f3501c2d65e88b77e962018b83939", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "4998154f49589fa080db729178de79fe4c27bf747717c3939a4c53be09c248cc", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "5352ab7b0f5ddc6ee3010773d0ad08303ccb5eecae99149f1fe9a00be3a6920f", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "4998154f49589fa080db729178de79fe4c27bf747717c3939a4c53be09c248cc", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "46759e52efc5f5be57797001634765d563a04eaaae2b0e101f1df0a59545d8f9", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "d44745151b89807ee5b79d16d21be9c454670f721b5f4a6d622f808232c9d172", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "53ec4c708ac19023e68ae35d7f26e93ceb06da7b2bee64de54927418824e367d", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "afd79366291e92367c6f5abfe7fd9628b1ee7e006d964cc382b896e1e102088f", -"T3T1_fr_test_pin.py::test_pin_cancel": "6925593808fc0ba8a62d6257d89c41f20458fab4906a8f6c3d6c9ba5cd03ad5c", -"T3T1_fr_test_pin.py::test_pin_change": "2069fe3cd4e34bd338c2e3d083b6ab8a1fd1d26add324af6901f3c4f9881d3e2", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "5c169a8d9941b90fd14d0301c00999fb838be99484b2b7b726da29a18ac1be83", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "d3d7c2e6ec9f1e5a434d4cc55e2d3688ada0dad4d05e2abe23ae5cae0be20e25", -"T3T1_fr_test_pin.py::test_pin_incorrect": "b180c78d144ac85df590a44841939538533eb718666604ea61c8e618c0a2fadb", -"T3T1_fr_test_pin.py::test_pin_long": "0f2146acbba225de7bfe145e7f86c52d839f38082fd2cbe290c2b045026e6472", -"T3T1_fr_test_pin.py::test_pin_long_delete": "620964d1f17e41fd2bf6546c584124927be4100bffd41938dfcb1d8bdf0a9e9c", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "ee88f2a23f479ffcd123a92abc265b937bd5e6c7db1a10a49ffe121035f0ac9c", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "a157ecc04d3543dd5dcb0667b56b7bee4954aa21f820ab152756254e977c148a", -"T3T1_fr_test_pin.py::test_pin_setup": "3a74dd475a4d2a6f5522463cae45317ff2cfa109bb03c87f4d99a3348e1014d4", -"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "f444abed6ed741384caa6fa1b0bb054a8e4aa6231c01f84a59004e4f4ee4aa64", -"T3T1_fr_test_pin.py::test_pin_short": "d3d7c2e6ec9f1e5a434d4cc55e2d3688ada0dad4d05e2abe23ae5cae0be20e25", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "a5d17baa44c9cc3d769b2e61e58efeebf5f8cb81846bba4db855736988f16746", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "7d2dc9d2258f568b8f5b8df92ece5c8b892064d6a4d4e2452cb1047a9b9a77e7", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "b339fb95c64744b0d9966c8469e6d0d32b7b23e240b5bd57f5ed63cdac2ce08e", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "c863349a8ffc50507ae2aed634347613fdd27a5aa639fd32f1395dd06192d863", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "79ada4df8d4005c62898b4cc30ecf37e4948d2bc5dd22f8b46234d957ec417ec", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "82eaf4d66369b484908342cb7773a788d057bac48d07887d52b8c4315a85a57e", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "0ac6d2d94cdb305171ed5b786c674f8b8f0a87feef5ee6f14dda64d62119602c", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "335d2251a0126677c090f0fb54a54d965a1fd55c495a7b9aa190464783a92d36", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "28f08549cc5dd06402e9b17340cb37c39883b3b91a9bd1b54fe7c81cd88481ea", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "2b157db845c96534d441aef8eaf81af7eded3f94cd6c92fe97b20553bc1f29a2", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "410e7d16bd938d8a32031a3bfb98f15fd9e5b0bccd3d1f5c15cadbc1f2009a2e" +"T3T1_fr_test_pin.py::test_pin_cancel": "2fca535d497ffdd906f891dc40b6f9fe7e30d2e980756f774387ba4c6e41e335", +"T3T1_fr_test_pin.py::test_pin_change": "aaa962d12e351db313328f127d0734dccc50596edfec66a254a2db6725f55a6b", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "c2676ecea7d91c43d2099f5957e5352fc849ec6f369bee4758370e7b05e9771e", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "4ba4278702c62d30a8a9b3ba44a512cc2b3b1cd5e992d5339515f7adfa65c41b", +"T3T1_fr_test_pin.py::test_pin_incorrect": "1b7984b7ada6c4f9a74986618fe89828cd41ec1d22ae6477fbc549fe762e4097", +"T3T1_fr_test_pin.py::test_pin_long": "f4137dd9fd07f0ed914969a4091f95e6050ae8ead6a1f90212ac8eeeeabb0087", +"T3T1_fr_test_pin.py::test_pin_long_delete": "4f661cda0b54b48c16f48d422af6931c266ff146d381617ec992d1227262c4c3", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "ea336a072263f618eba9fc91ba0211f1fd4a3b0d5d18bb47ed263e1c895d565d", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "7faaaddce7afdc83f31ade22cff76dcd67e66e39a195b4ff3e4cebd9b551a0e9", +"T3T1_fr_test_pin.py::test_pin_setup": "6642d0597e37e2c1bd1be7080de7843e961fc244d948ac3d53ea232cc74b915a", +"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "3f624b4d2ad4a1d27026d94d65ffb870152e79938f02f79f8a2330db63eec442", +"T3T1_fr_test_pin.py::test_pin_short": "4ba4278702c62d30a8a9b3ba44a512cc2b3b1cd5e992d5339515f7adfa65c41b", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "879ad87dd9444fba448173d2eb293c69b411c560efda320413f7f748717d2e0a", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "b9928f9f875a5fe69c513c039549c83fa7fb10cce9de2ffeba9e4dd59dc24efb", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "3183879668614125ac314182445687905f8d7c45c5496e23377c155c42c78af2", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "0e39032f63ae304ad5e0106e188b8abcbd8b21060944ff2fcbbd43298863a059", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "01aea704838e18d2d2306d22c8a29fced8105ffa1ea5f1e32dda05ee24694b29", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "1262c3e03d52043abd255fae1df6744c638dc6f5ac9ac78196d4d639e2573878", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "1933417739aedec9b09f9c6940b67fde4cb219f80f4e08db6a7a855972104788", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a54008b35fcdb1a257977942a530f38467153eaf71940374c0abc29162679a93", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "235a2cc8ce651af20fa09ea26e1cf6213f2df64327ff90c2ed00c1109c8657f6", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f0d3eb3e7606e76abf89d38817641eeafb13e8a698eadea7e26196a20d77f636", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4e0798ce007ca77ff64320fc1c502e7fa9a26cfacd9de222e31371e1fbb9da12" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "5cfc60601705372057cdc48cb73a2bfa596c586fe3214e20bb68ac6859c54537", @@ -15826,20 +15826,20 @@ "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "f8b3684d2b01416a933a1e05bfe4f91529269bc6ea4eddfaa575cc7890383cbf", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1fec2c810e9631239d1823418c415ae06177abfd45a7e24efc607d152df8214c", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3f1da5b0111e0a220948767be850e97e6587292ad6e1b102e4c98162c75b3b99", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "846d2f32234374d528de63705c519744254379d1e56128aa90c179b4aa286aef", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "846d2f32234374d528de63705c519744254379d1e56128aa90c179b4aa286aef", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "02dd8a56a1849489b073c68067e8e4286d1611c7cc331bd911c087cfe4ad2866", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "02dd8a56a1849489b073c68067e8e4286d1611c7cc331bd911c087cfe4ad2866", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "430ca1c36794926de3cd45887ffec373d9ef8ca6f6fa2dcc8eb4943809cf57c5", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "dc4919222f78aeda8bb96bd006d1059d4c845d63ac0a7328a55cb591ba48ac36", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "59e9617ef1581ffd472879ccc60ae6058d2d17a01f7d2017d2643152074acadb", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a62ca52204fb4be15277909855a2f257bbbfc3dde1c08e2993922725bcdaeda8", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "17777bd37c85bc21af5170bef430be6254eb50d5e6c493ab4b48b794cd3ef5e1", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "17777bd37c85bc21af5170bef430be6254eb50d5e6c493ab4b48b794cd3ef5e1", -"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "2b345550f55f93131dc992681b134e13fd4651c0656efd9810b27b06e30a4865", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "2b345550f55f93131dc992681b134e13fd4651c0656efd9810b27b06e30a4865", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "c30b05acfe06e02bf9a8439b33a1430483daa74c66d9dd12c2be4b32d3f10bdd", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "07f535e20eed207523f5ab65ca8d20f2cc4a3bbdf5fc9e4e8c3ae2bceb580045", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "d904567b233b9c3c2ef2488bc02573ec42bcb0e94a8b56d502d566e51dbe8c1b", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "ceb1559b54639b0ecf4492118e6cf634b4aea04f9ff6c94df9d5b0b95ea0a5b6", -"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "1c43a65d51253cbce41e150ba8b14d376eb20a8890330d6aad7ea36c88825daa", +"T3T1_cs_bitcoin-test_bcash.py::test_attack_change_input": "7963439165e95e6cf2a1ca494a92ce98a707d766f506f1e9c4297febdacd2a7d", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_change": "7963439165e95e6cf2a1ca494a92ce98a707d766f506f1e9c4297febdacd2a7d", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "ea80fdc6ea0ddc13d0569787c71a9e94349df96dfaf9f72023f13dd687490058", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "517e072087798730f57b394bac580cc3ae92c113ce096a9d11d1be5804cc0b58", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "3e9219853fd6d9ef873696a45e6d2c432847875d8971a90d34637fe89da2a565", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "6cccfd0099d0a9956f55c90637ecc6a5efd5ae524c4836d8f3a69ea3ba875f2a", +"T3T1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d9f731651cac92294bd9dbadd1a79883cdd3531cebf7591789004dbd03360280", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "980271773cd806ee494409b4be96f258d17d8253826da7d20ed09b4a5a0dee00", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f864ca76da0c64c4ac545dd0be973b3e3476213c6458b38382443bd397617650", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "47ef1f297ce14e8669d31550836ae1a79870e02c4fead8eec33c21bcc7877763", @@ -15876,30 +15876,30 @@ "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "f6f5c2c96a86425399629b6503e205b9e6bff04d57a510293dcc6c41723c609b", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "2fe301845f9bcd51dbfed0274df1dc215e13257d11631faf0994f557874b8037", "T3T1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "2de49a943c96f9a7ee82fba87c59156670acbd712070d5a3c4c00f35908fee84", -"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "a7ab2f35f801966d74aeea0666c8704569607200577d35d4ffd5d84b79c4f7c9", -"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "79b0d20749a95883455d9f5468226432dd4d10b6ea1046b12fae611ea3153810", +"T3T1_cs_bitcoin-test_firo.py::test_spend_lelantus": "347fea22090a0fab89581c15f4e83b7304f697e32080c73a727f00ca040464b6", +"T3T1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "273d0bf05b51783bc7ab30ef7dacbc0bc77eba208af4b80d7c374ebf60724d3d", "T3T1_cs_bitcoin-test_getaddress.py::test_address_mac": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_bch": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "2ac6823b8546880c5612db42a6d68b006fc65e344526d3ea2e54ee2e2850c1bd", +"T3T1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "8cc4d72bd8501e9a7e8b1c9c447eb97313e89751fa820f42f070e3973aa74c4f", "T3T1_cs_bitcoin-test_getaddress.py::test_btc": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_crw": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_elements": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_grs": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_invalid_path": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_ltc": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "96851bd45a326396d6eb425de0d9403f77e3639e6b03e52210b8a38eecdd59d4", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig": "25f633e29a76c6c1fe33ecbe46837699051ef80eea331ecb0cd6098cd5b0f8b5", "T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f69eca7f9a61426c834f289c63032d30d8cb511d8ccd4558ba3f055fd443f910", +"T3T1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "2eabbcf6f49ef08776c543249ecb78dcea9d3e1124addbac2f9ecac247e2fac4", "T3T1_cs_bitcoin-test_getaddress.py::test_public_ckd": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_tbtc": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress.py::test_tgrs": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "7122ddb5f868a3e7bad43d483a6635d0de4a8ed7d35d1df0b7d670441dc18c98", +"T3T1_cs_bitcoin-test_getaddress.py::test_unknown_path": "4a4f3c367ef4c6406e105fe28a384acaff646038d66841f7182b261ce6ff5bda", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f8db619ddebac872e6911d2a8ae4662e2dc1b6b37f1fb6fe2d42ef9cdff31c9a", -"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fc0ddc2846d0f37c293f8ebb39ad8293fbf2415ac8bfc21d4b5a42501e6088bb", +"T3T1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "f254bc4283dda10ac1606868b6db7ba420935fdfc3482ae4b7299338e5a4204b", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -15942,12 +15942,12 @@ "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "7eaca87422a991ccc41eac85ab1d6871a7e57cc6d1b4ea914392b3e7d552790f", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e78a9a8e2913d070cd644abe775b355f45d75d2b05e1b96bcb2835a775edec2e", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "12f2d76bbc5ecb88db11fc8c39fa1770cbdd84881dc8d883094e896f4869b3cd", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "6a70172881e7cacb5bd14175d95efd03e295f1ebbbf9eb42446eb89c3ac5a31b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "6a70172881e7cacb5bd14175d95efd03e295f1ebbbf9eb42446eb89c3ac5a31b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "7110e31cb7990c2e4d7bf31003baa200e3aad40c05aab2dd7e1dd7729af31d76", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "d0be0d7fdb4f787375d4a0e3fedbdd8376a7e831d431f36dc3b1ba3fa76b8dde", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "a440e08500dcf5565c873981f17b19597d2dfe0fa85c8233b7dbeb1087957fa7", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "49c1bcacf4e88f7ef4dd911d2fd5592ddea5cb882474878016b3f680f8f79c30", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "310dae9a7248a4ebb2a85f60cd548fb41edac2406d4227a19c9b7725648bdcf3", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "310dae9a7248a4ebb2a85f60cd548fb41edac2406d4227a19c9b7725648bdcf3", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "c88eafa2ed9e136abc2baca3b8bafd85a4555ca1b4f357fe370a5a4c8ef6dfb2", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "eb078530ef81162a1b39b25ec4373968707b3aca8a8e64484b68230ef294b338", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "5ecd4b9e482bcf60255965cc28e9f31685877296b9e2c5def3625512b7495e8d", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "67e23d01c997a166325e27145eb3633cfab671ea2a4098c6b42f3c80f1bacc58", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "93726f17212642e8f15acd04a44794b5a16805fcd67a47cb18b6427b4e53cb33", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "1f815f4e855df7869a1bbb6c3d64b8e2bdc5206960351fb4674b3a5b997f0230", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "14567f076a1c04962f26713ce4a2cc7c23941f74ed478407d6e85832d158f1dd", @@ -15978,15 +15978,15 @@ "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f864ca76da0c64c4ac545dd0be973b3e3476213c6458b38382443bd397617650", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "9b5e0c091c942d6ea1800c81fcd88ad35d104595484db9ba5faaa95cf5ebadcf", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "6cb8a9d154dc8d5a5895f37d55d4985ef0547f21de3e0a40de27b22e238e8aa4", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d459e32fd3fbdec0cc68904b80028b11a38d8d33dd2066b5bf2410f5359ee3ae", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "919c458d0bdd0fc2749ad9c8384aec93e3ae0c68e2b0691076014880386330d7", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "7756047b492da44ddea2d6545703a82917eb74aea1c6ebf1db5007a65f5d98e9", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "978b2235c541c331fd75cd1e49d1a4faca86d2a71a8abe507f07d98d9e64827c", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "793ec1616871c72e8a21b0ccb2b2b68a05404ebb82801488b1c416859e9aa229", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "486f149392bbcbc49b311d3f50a8b9f32b4ffe467d173d49015aebae60203427", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "1fd25668b4878cb2d863ece2f40aa9c2168508197aa651a740542fea0a835a40", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "a763db652c4ee3201cff5aa207e0561e29681662b9fbd2c3c6ae52c886f4014f", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "36ef3a03ed58256f1c0f94d614830f219644c3de5bf3910e57454268d9b94d02", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "19d09a8e6ed82834101c213ebe735d2f13bef2c04424bbd92f33f3a2e84447d3", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "0ec1a80e7a4e6ba9b81e11355c2fd012172647f6cc36d9c26d1e06ab1c3c3960", "T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "833bef70004c646bb8bacaadb6f97e264fc7310f6f3dc3428bd24203c84e6cc2", -"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "d3cc512a08db93743bceb44574a505249155b67cae640ca51dadeeb52aeb0bb6", +"T3T1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "8ea840011fda5f6142adfe18b35c96d31ff01f68f3a4ce6d49fc8e4508e50b23", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16005,32 +16005,32 @@ "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_grs.py::test_legacy": "722fb4b472e22eb8604e47f6c653f885c787d621e4d162064e0e987b4af863ce", +"T3T1_cs_bitcoin-test_grs.py::test_legacy": "827828944d064d1bde8977793aa450135a6e893b64ddcf8107de28e7ffca24ec", "T3T1_cs_bitcoin-test_grs.py::test_legacy_change": "b53d57a98a3ed4e5871e6bd1575361f8a316bbbdd5bf2f3cb30038b51852f37f", -"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "c6bddcf0d106e57446a0ca8964a1fe2e014b3522996fd5ff34bc411521b00492", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "fb681ab934b2cfad4a8d353ace1552125cb1885fe9574fdb6192d6d6d7e9c00b", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "97e239e6c5d7a436f2ba5d36c46c8489c8e25f7f4c28c52f742f02bba1b82ea9", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "0b33888c404f66d03f71d6843b779b446c4e05f55a77b2bdc1b0e712acf62a1a", -"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "6238964f0c0844057b839222decd8aa966e6f340209efdef080f0f4cd6244879", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "79cc2b23d0a06b1ad3df29d56a7fa9909413aed0dae2eb5fa2c8978ae2ac210b", -"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "1c7df45972262e0fb98c66aed6ffe3d82a0ed0d0b0ce2eb0531da448593b99ec", -"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "3faf85b1c507ab4bccc963813034a325e52408ce4174d0a439cf622784cc57ce", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "d8bb5858b4edf5d64a77bc9c15ad059213ebabe40c7a347d6ddc59865edeed2c", -"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "f518920c433bc644de656bbe488431f7c73a1931bab41a15c908bc63f7a153da", -"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "633ef6b98ccf962c46168b99c5b2d1d1345fad98e98c7653774f69aec33caf04", +"T3T1_cs_bitcoin-test_grs.py::test_send_p2tr": "97160e94ce2374b1970458904645686114067d46a4895c493c4f955ea8703d56", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native": "8d625354d9baa8853d0f43eff1f98d5878e4bafd0abec376372876b5065bd0dc", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "b3b3c3e432e880233a61ed6fb7c0e3688a03982cfe443cfed02dbc2483cac4c5", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "551eda14a3a5f2844a29044b4e9046043e525ce87ed68ac30bbc882406536d93", +"T3T1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "66b829e1c680b361b0b6978758affc59f842487d93ce25d4d0c522a62f2b1975", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "857a5704eaf3bbac85472a5c38fbe6c4329cbff067ed8dca7e6de640e1f7705a", +"T3T1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "811a6cb9110af836cb4c86b6a8055ddf8b8621f114a98249f798f952da5f906a", +"T3T1_cs_bitcoin-test_multisig.py::test_15_of_15": "98bee0140ba8603b940154ad9940ff19b20faaae9d1b142afe6c302a47d4ecd1", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "1cd003b019eef5b0905636b9a94bb9ab3e75b8d0da07ea3edf97a347b10521b8", +"T3T1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e09c35424e1791b60fbefd81309adb80e8b495386645cbc6bc5e3c67885a98f3", +"T3T1_cs_bitcoin-test_multisig.py::test_attack_change_input": "1d1dfa5f08e44aec401ca20e2a31c20cafd711e618f9e6ce795f0261d5127da6", "T3T1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "fb16a6ba0934315c77534cd14516e10753597da5485ea8acb85fb675cc258fbe", -"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "d376de3fb71b92e59bd6effed50755c57c0f57cf3e107ac9f2be60ad293011e2", -"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "56b9f74eb9c206bf85fba4f8db83749a358fb1e5d1b881b0467b49f7429b9e1f", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "4b6ae997edbc247d47189d4b31a988086381e64afa46ab0493a728d069419ce5", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7becc0c2a8256dfd8f6b63a60164bc5ac169b99158a23dbce443efcf8beeb11d", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "2f7aa1f39c552fca4602024cd53442036e29d8ec736bea3a9ae60f5b25dfd073", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "8ff32cfac4bb8b14f541788b767443b302e8cd47a9f496e66fea3b5cc37e4489", -"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "beb1b8b3906427a4e34efb404aae953c2d700763a366853ad99536dc8e6973f1", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "d661baad1b42c5b42b1ebcaf2556d07fef234ac10f08295151738b72d1c14ac3", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "205bda26b289bcc2db2b834c689c2a8cf1144db0634bb5b7294d30dd19083c91", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "a678c0b7c8dfac1126f926ceb9cca1d0580b2097e13aee8e3490c7777abf6283", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "b26d7e0ce04c06fd7e45d65c6aeda970786d0a4fd286d4632c4243750b1c7b2e", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_external": "65c4b3fcdc5558d3ce7d6a22d06ee8ddb6376d592b4032ca4b8e7d2f036e45c4", +"T3T1_cs_bitcoin-test_multisig_change.py::test_external_internal": "9e69acce10032f5c8bf230afb912cecabaa6dfba3aa8d9ef37a627036226e702", +"T3T1_cs_bitcoin-test_multisig_change.py::test_internal_external": "0e5b7cbab854b18532baaee9586ef6f24a5015a4b30ea72d7418d464f0c06b76", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "5e38844052c7b42627c33b3c46263f0f92712a6d78cd16a2a3f4c17e6a01f27c", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2778a62ad400604506865df84488b3c554caa7d3441249bb6980e4ed36f9ea87", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "9a2677a2cc9f16ff020ff42f065e3ea9d532993844e9a7605218a2e8e235befe", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "f9c8862b40ae1322aa9da22877bb5613d4932b6a9bc8882ada38d8c4f8ad68f8", +"T3T1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "26cf722a56dae634e4a9ad9676b0a47582b43581c21e1d8028870ff29005a004", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "ebf25937c9b5dc0679c4c1383889e3cc75726b40f140e04a9281f854d7584d87", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ac7311f2540e82c44293676b8cb8a6355263a5afc46f31e8965cfc1dda11416e", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1030a4c2b0c4c31df559c4998745105c9555036f7998961dcb1e3c925d8627c0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "f9c024b4de5e669009bea46bd211d7ce94d56bfcd9b83edc4a01fc24c61e4524", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "dc60907613bb6a8831a4bd898fcc94d612217aa48c28c2ad045cbe27ccc999f4", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "940f63ddc328253c8b95fc834ef9924db9710a74a9cafa7d82da1963cd055fe9", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "c9d73d5e49e55adeeec1740cbe7e16caa8b9d4c26efb9dedd9cc3685c3e7e77f", @@ -16039,41 +16039,41 @@ "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f0d7bac8e4add8585784c67fd70dd21531a811de551dde3c3b8ad2c4257b2e50", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "c87a40b4afd8319107ed49532aa425e301cf328d2ca0befa7cf06252f8e3813a", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "de2966424345957fea14bb623b8138c95d33a97ff264cec04c2ad8d8efd9d326", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "943811fb0c092659078a0a2da681b8e1d398b3328a781ad9b8393f1dbff79f70", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c768f00cdbd5642bea284b115fdb6ee0c2741dfae3e95ef7fba671bd02274315", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "e2b9ece7a76940d2c051248a6d373301790dc96d8c84b0639028011ddb17302c", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "67e6a9a216b11790145ec0e800907f03b9340a6cee435976d65e9415e6f3313b", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "6cb8ca7c8b65c5c40f6ca8f3b0923e8b0f5a3edbaad9b9f60fbdd65787d9d055", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "800f9281a727f04e696d92ed3282de58e50a0e5c7c831fb358e9f631181847f0", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "294425a4a3c87a415d563e4d724d34941ae90d1d2ae84546fcf8895ff12a36a5", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "23ad7e9223b53f1aa375b49a37d428dfb82a36001235582674c521598e7f3575", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "61b7446d4cf98452dd59bc6daa5179793e14aeea3ebc4a2d116f6db7af98fd82", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "8b41068c069594ab58cfcc64c3f67b826d361144c94d1929be0ac4df24a3c10f", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1e2015f875f369fd89556f81dfc311948e5435f65220f4f1bfd24f98d102f258", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "cab40a1896e6177d91716037263565c92dbf05b4c6e58b3fff87260777327bd8", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "e2ead2c15da695641044071062079ad65106836bc8982188bb57f64c21f55bcb", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "513de7cd639adbba31eb6bdab7b5f36a1ea98a012740c91bd0e2e80ef338b61a", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "800f96abe260c99d33eb1decb1bfb18d0eff2a3b98fe62fcf2c711647d1b1c43", "T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "d65ee3592efdd464b8bdb3ab658f4182793d1cc0e8d5ecf73b80ebafbc1820bc", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "a79d6e173a39921c669547aea0fa2e90a7a897e0359d354baa516d0294d0b1ad", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6569ea5ee9a650a21171d86665a69b179c66b866050c89de702c7bccbef49494", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "8cd8487c20eec3006ea81a349c19971c5b58afde79b1066353dba348e786ea1c", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "bd48aae11a20e70d35c4deca5c3280c8cde815a9a1540ade4eb0b194c176dbc1", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3db39b31a2cfbe37ba88a351b767abc866fa6a678c9b1af34db65a7a6d501661", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "87f1291fd2db3bc5281974279fda80599c55256ec9cdd15d30bbb5d8989f82d8", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "454253e72ee53af8fc1f68f5128c8195c8532625e46adda42de29cc27f0c6841", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "4ff339c69e8ef1ba422f6a7cfa31231eb8041aa3c0c3002073ad5e3f17b8fffc", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "9ca60ce8c8b12f89a94fd9ddbfc6b421347050d3987adcd10f0d7bf6809374bf", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "454253e72ee53af8fc1f68f5128c8195c8532625e46adda42de29cc27f0c6841", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "454253e72ee53af8fc1f68f5128c8195c8532625e46adda42de29cc27f0c6841", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "454253e72ee53af8fc1f68f5128c8195c8532625e46adda42de29cc27f0c6841", -"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "e91fb4273d2c44196ca09f43194d84a05fa3967dc805323002d54ce87aab873b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6f5ed432ef000b80850188bb4b3b076945b8883609a29a414cc0b363952bc5a2", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "ad939f770ec0db19b0ac4276047c3c15039bc1ff947ce63f87cdc9fa1a91587f", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "b0982336d78082e4fd3068b358504cd1d4d31aabc1cfd5f0748e40def0341b7b", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "643aaf3fa5ca7a81e407f605662ffab9aefcae4f76ee1ff36f94ee619e9b74d0", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "24ea6f5c00f2a5016dc13275af1b07944cf17e48954654351dd2a268966fd6d3", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "7184327146f5e9691887a931f59f01cc52d228fa4c71c30410608aa88cafe14d", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7b78295e1bfc8ada6274f35688cc08874526c2cd8fba3ae902ee64ca9be27c45", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d48bb3ee3b2380c72bb7f184a6470c7554dd05f65f04403973318531b0052fd9", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "9decea4293d6ed51ed3d1f69c1f676527ccd978f508425ab2ce931538cd2fd33", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "7b78295e1bfc8ada6274f35688cc08874526c2cd8fba3ae902ee64ca9be27c45", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "7b78295e1bfc8ada6274f35688cc08874526c2cd8fba3ae902ee64ca9be27c45", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "7b78295e1bfc8ada6274f35688cc08874526c2cd8fba3ae902ee64ca9be27c45", +"T3T1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "47873ca9da0b60aa11ba14a4882791758ed9c3f15a2daab2a6f816b57926e2ed", "T3T1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "afcffafa3fc9277c37dbe4d3b23e6942fe0c56e49d0841fe589175a69483d876", +"T3T1_cs_bitcoin-test_op_return.py::test_opreturn": "453499ec3cf3599f0908708f431f64ddec9eeae5807710a5884a62c9fcac0163", "T3T1_cs_bitcoin-test_op_return.py::test_opreturn_address": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "405e3b5e35b2621e38821ccffb6e2c4c21e5e569cfa3f1885642097899c49791", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "143489bec43c5f2ff5fe0fe68d01b353bab7f041c8f7d2ddac7960edfaf1597c", "T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4b084806f8009c079638a3fa4ee9d02f8c5a6937905bd87921446cb6a8f0cf46", +"T3T1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "7e306b94176a3546141507666c8faac62c225e5df0f5487656be85b176c770ce", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "90477509837ed3d31ae2ee81ba7b0986bbb34ee8e790cf6f0ed30f397f1e875e", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "90477509837ed3d31ae2ee81ba7b0986bbb34ee8e790cf6f0ed30f397f1e875e", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "709340f6a6b1ecaa16549590290ec5c25145cfddb56ffdb13d2e5fbd7693c993", @@ -16100,103 +16100,103 @@ "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "4061e3c49774b6562f8bc4e01857c3dd44adc184af5043a780a65d22fc510872", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "dfefee7e2a52c5f9729b01bcc05e62e17d5e86b5e9d1fe0259550f9956aceae9", "T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "77c25f4e138267a8d2e26c5a7baa11fab7602920cc5943f6189aee2f7bebd182", -"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "b8b9003253bcaea1b77066cda0b8cc14b1ff09a77f9550af882d22ca30b4f104", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "0f64ca5f163a43a45b1751257e36e9bf564977d871f5df9c05b46051f20df78f", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "630ce86236c2cce278187188a04d579e30b13fa26f791466c2d0cc256fbad608", -"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "72b1e4f0a8a59d7b73977f8b7e7dae77bf00b0da02bf0044153882914fa8f2f9", -"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "72b1e4f0a8a59d7b73977f8b7e7dae77bf00b0da02bf0044153882914fa8f2f9", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "2fd8cddf511a44e0bd54443fe85a26f0bf364c784695a1f8503b11093167c93b", -"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "c60c0328446718d7d0e649daaef849350b4c8f0a0cbf06fb99ecc5bb1ff6258e", +"T3T1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "695f5e12fac4e877189d405fa9a403462c7b1b0c13a3b64715375bdff20cf71c", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "32ba1ed2879f5621190e0a174740ab5480213e85881f561f7baade1aefc4a7dc", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "e805cb382fe2ff019c1e3d3c837132ee7ec681bf9fb888be08aac6f9f9443a17", +"T3T1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "5a591e1cd014a11b8e27f5881d9a3578702e3d79b308c0125b1bb53b02fa5b2f", +"T3T1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "5a591e1cd014a11b8e27f5881d9a3578702e3d79b308c0125b1bb53b02fa5b2f", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "e54d4308b6aa8b74e858562c4a396335052342ec5af93bcb1dd5d4d101f446cd", +"T3T1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "f94cb019d131f149bbd9508ae29e78e015f2b9e61ec0326f9384e710799dd633", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "8db0b6b442c57637a251ba6afc88bea7888d846f8945d6d5286672895b6e7afb", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "fd0c75fe2189958e52cae903028f57283e5319467478ccf8209800aa08091af3", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "e3575fea3093f80b3bb633ce38c3cfed144919c659a7bd0a22e1ef909b979a98", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "47b7229685e684866c533bfbaf134b03a0f6f866711b905890384edbc1e64fd2", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "88a46fd671c1aec9982d21bc802ad7629fe4fb2fe91046754caef6d948fba8f4", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "d64218019aa3c8ce4e5be7be213788673007b75557f6e45e17df3e6a119fa5b6", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "88a46fd671c1aec9982d21bc802ad7629fe4fb2fe91046754caef6d948fba8f4", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d64218019aa3c8ce4e5be7be213788673007b75557f6e45e17df3e6a119fa5b6", -"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "acddc1d7e6e01ed78af54e97cca605c0880a440df01b54bc1dc90f2a2afe19ea", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "bd3a39e0757829c3f9736d8307d778c75c2b9e61cc21073cb8cafa994219ab8c", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "c73626660ed09943c911ad2764b97de4c0fd45a9a30319600e24c3f537f7b0f6", -"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "7e0484d07ea658e0336970b607ef08fb2cf9562641f3c9f451dd6544c5757714", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "54a7339552575573e8d915ddb24cd3bdb5820bb4b35e05f2153c18356bf6846e", -"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "93a999b62cf5f00bf2f1449617ad8be171ef47ba92051073853798233ccef72d", -"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "3ccb808cddebd66cf8e5a43be1c67a5968ef20945b2c54d15687fb791887d1f0", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "aed98af9c6264a81bcd2300f7e6fd77df0c5b552d51dddb8c06d8bb19dd69969", -"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "3975adcff50cd78a741ffd93eb804252c73201ed149d826b68fc382099fa48d8", -"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "763d84643aaf4af2c6eed376bdcb560dc8b75be7cb83fd688e5205d92daf7cc9", -"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "99c42ef13263cc7055fb2d84e1865306f7a61261a2730fe994410f89b4e7737f", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", -"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a8ee390713505146c4c68f5793ba9b4f6870681d5e0f7e293510f5bbbf6b62e7", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "ade3a6238c78ce56d8436bd3e32d37d4df62347d19b21e7ed3152505c0ecbbc8", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "12a7debcbec0b4dbc955ceeb781c0476e8b1d1470a2842544ba231694e6b64bf", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "aee7e17ffc905d035922d174ada0c220c1ce9487cb3bbd567eb904c5b0373391", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "6995e511f29645e4debe460482f966968edf98cbf950fa8a0e467d9c5c89d09b", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "be9019c229df19c7b2b0e135dcb0c1f65b9442527135f9679fc6c118e6393188", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "fb5315f44f8f37f614f049a7d08610d528a6ae6af6e295fbb9d380bed21783cf", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "be9019c229df19c7b2b0e135dcb0c1f65b9442527135f9679fc6c118e6393188", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "fb5315f44f8f37f614f049a7d08610d528a6ae6af6e295fbb9d380bed21783cf", +"T3T1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "224cf2e73f04bb94fe01fe156f04125c6e2481e71894e7b5619762a71e0ca1ba", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_change": "d85989cc5c7e7d6ed2db9dcc5e4c6720417b161ae156c724500b55d5d48f2578", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "60eec4da06719504ff0a9d1594d8622757abd5886fd42afcbf8840e237e698ca", +"T3T1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "7f1c5b0fb54ab2a263ffe5a32b912c4c3b2ed3386d07ca4b931be63e29e1a370", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "7a641b6779c3ade29777bc50088d5261c031c58ff3207848048b380ef4cb147b", +"T3T1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "a500e46e77553168855ee6e79bbd9c0d12f6b934b6f5f8e56d1a944168e2190c", +"T3T1_cs_bitcoin-test_signtx.py::test_one_one_fee": "cb549f69ba13c0f4787d8a59c2c5666a1a391bea438e624c95e95091510b7033", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "cdb09cda880a43c03b982d71ade2b0c737d9deca6570ecc007f18d2399b5d3c8", +"T3T1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "f5d75997ef6fa3f814d74c59a71b2fd62df9510b82aff16f309276aa8e698c23", +"T3T1_cs_bitcoin-test_signtx.py::test_one_two_fee": "559814e705e983be22fd0a4272a71ed6c23425c2341a428ab510748a500c9071", +"T3T1_cs_bitcoin-test_signtx.py::test_p2sh": "b1fee977a417b7feec777233497c5aea5884d8a11d4eff34cd5458807e79ddc9", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "6389a6227ab1976362ae96e8f0202724ff352699f0c9337cfaa4af494e21b76b", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "6389a6227ab1976362ae96e8f0202724ff352699f0c9337cfaa4af494e21b76b", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "6389a6227ab1976362ae96e8f0202724ff352699f0c9337cfaa4af494e21b76b", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "6389a6227ab1976362ae96e8f0202724ff352699f0c9337cfaa4af494e21b76b", +"T3T1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "6389a6227ab1976362ae96e8f0202724ff352699f0c9337cfaa4af494e21b76b", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "1f2323c59884606dd8a78bfd1172b0f0cadf2fcd7dfda9566f24811fc6f63b2b", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "7865687c7f08ca7fa7a9ed7ebc6540fb10f20b5cb1dbc7f283085fc8bb353547", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "a944c1a0233dadba016ace0ca8e0d1df2fb87b5d89e7f0eef8da0272d7bc7c15", -"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "72b1e4f0a8a59d7b73977f8b7e7dae77bf00b0da02bf0044153882914fa8f2f9", -"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "3201fcbc5ee69234d98edc6550bc927a8c0164cfe3f8fa06dab5f115de4f1b19", -"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "5b5ac7934c0dfa58c94c8fa30f96f3fc20dafb7a66c2d4cf2663ef6aff8ccd98", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "3ccb808cddebd66cf8e5a43be1c67a5968ef20945b2c54d15687fb791887d1f0", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "6611d9c2eef8d8e1294968de6e1d67ac821a09c14799e2d7f88b5eea5b51502b", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "6e749aea943e8acb18fed0223b65e04670620ad2f79bb5e809bcb77cd609b47f", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "e897dcb9ff2dfe3d05517d6ddd336561bdc81fa5cfd1aee0f538bd5ac63c4304", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "3ccb808cddebd66cf8e5a43be1c67a5968ef20945b2c54d15687fb791887d1f0", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "2f7773f20db5cc78086dc07b08692f4a72fed5fd7c95f21cedce622db4808245", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "4f1fa45267f4257176b1a61067a28bcb9a69012855841de07f7e00995f2d45e7", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "afacf645ae89428b8b1f91f0069138af0558ae0e88f870dc7561e5805940f465", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "b2857d74b4fbe4a559a3280b652d375bcdfd594bbae54b6dca2ef29c8d5f6254", -"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "2f7773f20db5cc78086dc07b08692f4a72fed5fd7c95f21cedce622db4808245", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c93549f8edf35d5d86c5cef0a883d6ae8c49fa61214a58b15929a4e2ab6c187e", +"T3T1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "5d6cf7a39d0b73eace669d4789c985b046401683c8343240a708e1100503f9f8", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "ca56e9a22dd69bfa12d3dfa61d5b681a91e12b5017be80fd6bc4969d21e5bfe7", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "562db940ab6c08a8a6af29a121b6d82ba1fa9991b3aa59abf869fe05d49062af", +"T3T1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "5a591e1cd014a11b8e27f5881d9a3578702e3d79b308c0125b1bb53b02fa5b2f", +"T3T1_cs_bitcoin-test_signtx.py::test_two_changes": "21fc9dc73778ea89b47855488c57d58d7415a683c4d32c0c7d31f53883ea2005", +"T3T1_cs_bitcoin-test_signtx.py::test_two_two": "2ee32112107697aad12cb3672aac3f346429bf5b038fa82f2cacf5b414d6bbf7", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "cb549f69ba13c0f4787d8a59c2c5666a1a391bea438e624c95e95091510b7033", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "f95d34ff6be171cb4ed75a825662a2c4c1ddb7d3e1f9629857069f537dfbc2a5", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "dbe4b586db50f0edbabc9f36fd37ac265bc7a9711130d776aea9e753c0de154e", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4c291ec911ac24ee0670abc1e3ff3acba762b7d2a498d8d0db3f48074fe6130e", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "cb549f69ba13c0f4787d8a59c2c5666a1a391bea438e624c95e95091510b7033", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ae983be91a86d1846a076fd714429cfdb8ec1422f2bba5d55fbf975e1a9b54c0", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "38f10fd254f5620ad0e040819c3a66384668f2e7c28f61fd2a7e0e534b9ef837", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "6e6b1c3cf2d893c516207a6f6387fea6c6e7ba0f0e2ab44523b95cfc55df438b", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "85c6b60626ed3849dbe2fc81c51333ed711167d004c4231f06b112a0b8553433", +"T3T1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ae983be91a86d1846a076fd714429cfdb8ec1422f2bba5d55fbf975e1a9b54c0", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "b89cc1d60b06d04642ae7ef4976bbdef85ca0f9612b771af894d070a5ce8c4c2", "T3T1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "f976d4c025325f06b90c3217c918337f901a74f23ec5917d730077a08ec15475", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "41874c93e7f5377e43c8a8b8d79c4ec44ce5e311a56e95377b77cd6b87cbf6ca", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "c219f6dacb6730e2db534cef8cf16159e992b5ca78b04c6ee97090e7a67c43ba", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "41bcd318b0eb6a4dd0b077731f64c57257a479dcfb437bcd8dc0d75666eb1ab0", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "04d0c6f6d5763a4c12b1cec1b9f8297e1807d6d1d6c8143cf10ec67f8a96604c", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "42c2ea1d0ab0f7eaf3a2ba597d7feb6d6b7df747ce889a3b8a9bccb912628345", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "98afb1cdabb8e516c052853680b25463df68f46f0e3ce6b5dbaaff062cc744c2", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "ab85feb878e0aca9e60e6d9a4b2354d4f9b1835e447e8035c482f7ac980666ec", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "162f2ae74904efb8de93a5bafb5a309f59a34c49c2127ae40b96844d2ab1a3f8", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ffa17e81040c8c761ac876dfedca6020babf5fa55783330a69c9bff9f0c03ae8", "T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "9ec54645e613d6460707cdda4104f295a819a335ce80f6a05d12564afe489987", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "fb4b4e7a3cf512dd7f68974f34c549adfb7f1d710b2dbff5e28f2dc3a95c6ffb", "T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "adf04ef4afbd3bcc45ec34b9b4467a92a7a66764fbc3e21adf9f94ef112cbca1", -"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e9279b9d6e890a94167d4cfca9a3ddb6f1b7f959ce08272bd8bc7c82b7dc3ae0", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c7ad9622a1720fe74a87a4e2fdbced34d0845a8cc3b6e341f1bc719685cd040e", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "a3a756f30dc5b794a0d805a3c913a820f0cae84c3fbeee79515718610b0e99df", +"T3T1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "3551485490c37287c1d29e91d108465a7c509157503e2c093a724f5e76c4955d", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "744b4fcc2891faf35eae33e23a97cc848545e4a86add5041d8383b0767afe09f", "T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "50daa50ab3780b31e27ab4fa46570bc7a4d9326d7c814aa35a788da9cd7f902c", -"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "97f8449182c06a5b4b129e0b45a8fb741050690e8310ac3b6ac27f945da97aaa", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "7bc782470653ff929d75f44bcd57a8f794c64432b6e3711d4e3f8a7042b8ef9a", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "ff04e0a969df18181d148ef9655fc87036f62062b9011f498fa2823a9322db56", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "7bc782470653ff929d75f44bcd57a8f794c64432b6e3711d4e3f8a7042b8ef9a", -"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ff04e0a969df18181d148ef9655fc87036f62062b9011f498fa2823a9322db56", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "efd80a317957b50cabc2df94a6bcd154eccf01c864771375b08ac7b485a23229", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "4d399706ace3aa6d1a12c069ebd36a691a99e34bb505cf2087d10d895830e60f", +"T3T1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "7d274326bccf7351aac410d33986fe32a39429e26059cfb1d684ba85d8362ac2", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "689ae555288eeef4d2fc406c01efce150ca4c84aacaa9bb8ecc6c0859028fb71", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "7ba2e53bae52c72bf9f110ee63990ab614f3b140ae9cdd236c50d0b4a7c3c7fb", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "689ae555288eeef4d2fc406c01efce150ca4c84aacaa9bb8ecc6c0859028fb71", +"T3T1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "7ba2e53bae52c72bf9f110ee63990ab614f3b140ae9cdd236c50d0b4a7c3c7fb", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "0aa9314736f2190da43400f7e397a19e630cbb4c1e3e74c98bcbd93d4d141555", "T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "f1b9f869b023a8ac2bb2ca314a98427f91d0baebf573358a016fe296c310d55d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5b0958fe8046f2f1c74b9ebb6504e60a8f2f6955acefd8a311de72a128706d86", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "801b7ce0ec52cc301600d1b1c41df1f39524466966e5ce3830ec45972f512c67", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "8af605fa1da84b57044b3d4e8a6968f6f3694379291e9b4811838e1335c83043", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b1450769efdf72f7fbe256e6c29f13e7cc3dc23c0894dafb459b96946262263d", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "3e79a1cb5c69840a26c0dcb023ccb8021c07d972d11b10144e17da20c712e399", -"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "a13c74f0db73ece91b3668772c4832195c79298b8a4fe98c38c7d709031990d2", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "fb54fe69bf289ed49e90f603afcfb734762afcde1b13c311db0e13dbe99d7bf0", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "9d212f556654f56bb9087fa366b2ae2e4bbeb0279f0411e9fbff2e7742a5ab67", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "98a36c324f8087aa044b420e2b04f6e3f3d3b3a9d558ac524eb7a3e868be622f", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "e06675357498db358bcec0a466b2eabacb3fd315940aa29d4eb3bdd7c52980d1", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "c3eac3ea1d88431dfcc24e1d0249ad7f2cf22bdb5d9504fc0032cceffa6c134c", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "62d85dfc8fe99ac38d2d3a9b3403686aae1a4afbb0e0a9e52f47ae38f75a6138", +"T3T1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "2f90a3a6da9afeea977cbae78753538a1ad6d10eac4c07638c4eb8d285771226", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "eba8976d6955ae750bfaddfdad61168967ffa70e5adff2e7b9864ca1446185b2", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "eba8976d6955ae750bfaddfdad61168967ffa70e5adff2e7b9864ca1446185b2", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "eba8976d6955ae750bfaddfdad61168967ffa70e5adff2e7b9864ca1446185b2", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "eba8976d6955ae750bfaddfdad61168967ffa70e5adff2e7b9864ca1446185b2", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "4ed9c215b080c1b1b7fe58f7919859d7fd537dd48bc258af68931e80d64f5478", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "4ed9c215b080c1b1b7fe58f7919859d7fd537dd48bc258af68931e80d64f5478", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "4ed9c215b080c1b1b7fe58f7919859d7fd537dd48bc258af68931e80d64f5478", -"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4ed9c215b080c1b1b7fe58f7919859d7fd537dd48bc258af68931e80d64f5478", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "340c287b90ec0bd7df28390b77d3ee5a1f8cf0794361660569b2e5d546006b53", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "340c287b90ec0bd7df28390b77d3ee5a1f8cf0794361660569b2e5d546006b53", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "340c287b90ec0bd7df28390b77d3ee5a1f8cf0794361660569b2e5d546006b53", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "340c287b90ec0bd7df28390b77d3ee5a1f8cf0794361660569b2e5d546006b53", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "21b66c0821399e76ba105e0b7a5b5e771d298a4add47300682266c0b4ed82619", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "21b66c0821399e76ba105e0b7a5b5e771d298a4add47300682266c0b4ed82619", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "21b66c0821399e76ba105e0b7a5b5e771d298a4add47300682266c0b4ed82619", +"T3T1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "21b66c0821399e76ba105e0b7a5b5e771d298a4add47300682266c0b4ed82619", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", @@ -16215,33 +16215,33 @@ "T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "760f5c71fc20c98e4a3e99f119ceedac20446360482214a08c5daaa518221737", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "bcd7724cd88da59fcac1e96bbd0d8adb92b8ac5295e3b780748556a4d9355152", "T3T1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "42d4a6b679b356d49ce859d20e307b25124d2fde5e66af489cdac7136a9bc96c", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "b13a9a39cb8b3c7ea6dff66270e7dec5dc6dd8f0160c69c132c1660a2ff8dc4e", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "5d959d443e4a49e0d7b7748f1bedb23bdb00668e5570271de799df939d026042", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "7abe8815d35f43c6374cd13c7faada41897a0e74fc78de49adf7179ac9ccca00", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "db12e01af9fa98bb4899d81a0ae219b0a5142a842684538ae5ed3d754c312b3f", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "fe30bc5f38c52909f67e80c82f3477468be77243bf6b4c2575daf05611825e15", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "419f30f463c1a2a93925a2bc7937521a1bd5bf35096bd74d4fe668384765f98f", -"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "e0b828eeab4d981051eebbfe430954f9d03c68ebf8992d7acdab440de90aed91", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "57ef6e90afdf32601f562e67cbf00f90248035a5ef80437787213097f734654c", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "604d5683355da02d7c9aa7f05892ca5a203c76d28de02f0a26a3bc4a3e4a0caa", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "a13acc12035f2c90265ac6ab6ca1f4461f3f5be024c443a90c6ec10db41a53f0", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "31a3d66bed0aac02a9d6e7284085561e5b8e9ed0fa285a4a81cc3b8535672499", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "b83ea31d2a9674d99a2dca296696d5de254bea5d6b437310b0eb237d73f7f678", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "fb9564e5ac6ad7ec276ff69a73e31d9aae59d6f07698e454ebaccc700b78713b", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "2f7773f20db5cc78086dc07b08692f4a72fed5fd7c95f21cedce622db4808245", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "dfb64d0e0a0e9d835892eb1e49fc10a5227058e2b3def26f8d3ff0c9fc9751f0", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a58bb57fd26ac722e897aa0d48813a137404fe57500b95fc424d489c729aa177", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "39a021fe76fe3cba9278a44be2471ba5d0f7bc1ab9ea38f7fd1d68acaf57e75b", -"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "47b7d3aa9c83da87ec9c070d7b3962d47dc8a496be22caaef81d7aad6555d5df", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "4059d84e28770f0d380ea6fbead8e949cb15ecd16abcf0949f4e70ac3651f3a5", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "cd35c6d2309049f9c016c4a8bdb9f387e6c2ef46db0ea61486868918300cafae", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "154cbf1a5eefe010a03d103d5aa13fbe0b08a535167eeaf0f5d37094b2c04450", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "e242b1252bdb3ca4c86eb5b5ce655cda25bfacdaf8ed2aa7d4b164e97b4c55d1", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "008363a6487ba08ee8cf682cd7e5834cc2ea59c02ef6843383ab9b3855123911", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f45c57f5f0937302a050585bb0279b81b4115acd8926ac34d34177cdb8aabd77", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "3b4b25f429f2920720d66960164fa1484c232729248a513dbc27026c83c602f2", +"T3T1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "3b854cb0fda3b7389864dfb28fe35739e757527730b5a740277d721e972976e5", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "e85c1bfb0ee7b0444a8382c082ce6e7a237dcf94e1aad38d5906cb425b0d2f10", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "d0f4a9dac41bd145ff35554fb3f9c523c3411e4357e670ba238a1b2ab62c9b4e", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "09fb4d66c68cd4364301aecaf18a739526c9f538887dfb051ca9b4832b4ca90a", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "e73d792946fa8aee61153a8b62e159bf19cb347eb8df97ccaf04d36e3ea581d0", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "46533ef70350464bec24f7e981465718911b311709fb457d89d854f3180efa88", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "7297dae5a612fe9392deea565e0f2227fc0a8ddcd7a92cc13e16f10a9b2eebdb", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "ae983be91a86d1846a076fd714429cfdb8ec1422f2bba5d55fbf975e1a9b54c0", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "24f667477e7685269bc5484e8f351dc1c894a321975390a6b039159c13693c68", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "fc3034e12ffdf5748f07af1ff0f8a86715985c22441736f3ecf914f4a58123f1", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "4ec8d1d36a582cf3085145bc0b71bdb435205283c0149b577aa1e8371aabc5da", +"T3T1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "83a5e480d65937984005a4092b0df4814848758a2f188c7ed76289dc202cf4c8", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "69d40bbb42147a1b05c697525e9fa72496bb87402594521332ea7b691815ad63", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "d20c9a1a03f859d770a1bbacaec9645024a187b6bd991d8117dcc514b38fa0f9", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "1950064451f9a48a6dcacfc2762d52146369b800eb19a74319360ae570f65002", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "e8684ee05524c973d3524a1fe4470b5b121087a0f9252fa386eae3343eed88aa", -"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d54f51a113bc836976f95c8fa488c6809376aab6ee0a31d2d4f4230e901ed19b", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "aa2fe19587153354fdc7a04e52635a3fa980008c5774524afd6487095e57c292", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "db5d928e3a33acb31184563637171409bb3cc26c7220ba733455d28102916b42", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "817cce6eedcb3f95c029404bfba6b2c6d3d5aaaa5af1964b43f74e1d04056078", +"T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "55e193d44704094346ac2220519f74edcfd1d4e105030cca861a4818e6201495", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "780daabf25f58c1d24a4f326488c3f2de5e455cbb8bf08799baba865eb505ca8", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "a6cf77898dd487cb0fc04df9853c96a22272b450b2b1233379895fe0153aba54", "T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "73f447f4c4e73a02b24df53a330846aa109e42f3f05cacc57678eebbfc498043", @@ -16257,9 +16257,9 @@ "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "c41e271e4aa551832218a1acc159d7916cfd786cab928d72ad8b38be64deefba", "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "8961b6790e894a3811d9aa5c2ab8d392cf321f38760786ea80246ab15fd48995", "T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "c1789ffa0dc03a349e819991d132f8908df37b3f576b2a6333e72f14ee746d47", -"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "033751a38b0c4c16d2299e33d53042a3bab22fff43bb613b3ea090e5e1e01348", -"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "57fc7427a7211990d428f5770d8304faea6c20c86b2f85ddebdfc03f5d1826c9", -"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "f13a01c7fc4eb2c283db6723b6b90bc326186b2b025898e4c0c8cc3fba15afa5", +"T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "8e8f8d7c9e18312b93627a202e55bb6b4ed48d2a7c30bc89493bc945fa47fb37", +"T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d2de1317c2814f4fbf5224c12e5944a70ae19ec8c44eae7c01f5fbc1f07423ea", +"T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "7750ccaa664bb327def6e6b767d9710a96331e1f9afac0cd02ba525e07f21859", "T3T1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "b1d1409ea55570efc3758535ad36ac9de8ca3ff8915f17f96176afb4f70aedfe", @@ -16287,11 +16287,11 @@ "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "9fe52969f6cfefae4db57f0b359d6f8b09fca9bf7f3264f9ec6a2f7e02b8fec3", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "10763db5aef165a4742e817994a5ef97668c426389e86b00cbe6580eda9d762f", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "945bc115fea02c6ee0bf1fe917e12c050ca08a8d780a9b112e5e6f9cd7339969", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "bab6a7c6c88da473f55166310e229755b7cbc89487d175ed60549fad29bf0935", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "ba1049fa8a465a2c7b93b98a4e390f719b9285a7532d8a00fb2d5c67590f58b0", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "a1f3f7d6a00cad7996be99218db63336bbb20e6067f3b8b2246c5dd9d1d6a2f1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5c104e894260b5813de9f75153ee48115dd92dece717455aabcbd6774eabd9d7", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "b159fe45e01ec62fa5fe58a65ec07805167e2bec62f373ab766aae289397bf88", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "ff89fcda23b842db4695799041d6f6d4a447866df393f9365c63601ffca4b06d", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "0c5b0ff94a208ea21b08652901f85d8fa538c09a66cdbe92e28827f8819b1a3c", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "956905251eaaed6ffcecbc49a8cd3f75af3677d5fb8e512f624e8f194f66c944", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "913a75d591b7aa2794cec61fa2a92efeb636c22f3a489d6d06de2824c7df5944", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "48e9deffce29fb057b432db41ce3f2fba25970b42f05613c249a1189e3a29c99", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "02e2a782a9bc14058ee32f8ec595a671be8290ea0c3edb41884f5ae691c22e6b", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "b5df3a63be57e1d9e78e2e509d07258c79c8f6f3f9dc6e586d9e545c1300e566", @@ -16327,11 +16327,11 @@ "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "9f96c34e53c981896f61c04843c8fec968c8c8bde58573bb588fad1efadbd0ec", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "ebb729eefa42cfab098bcb58dbf4b5599718132d47fbec0c52b7e1f5937e0b45", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "9ef0e0f43432f7627e3a254a8ed2c3c4d554d6a7eee07a6413b95fc66b4ec431", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "56e831bdf0df7a35b015ce7ad5d2672429f17f6c1721d8d44e673bec2cc7179f", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "d6407f9e2e805cc70e9919d53973a434c640151160ec5e82adabc2e5368c180d", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "251d6ea5dac2575c62b961548f02f3908e314dec503fba763b8d51906ea803c1", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "99dd7ea4d350d04f6976b2c254c7e61b6db877949bdc382fcc12dba60491104c", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "403e7ceaceebb92e972f57b56abbf60c98cdef10d72e76fa9ce0b0444154fa67", -"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "4d66b695e60ec35e6f9dfb7f588c1ee2f1d3664cd5bb5009e581e738628718e3", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "bd42ba7802d302818d357eb73f7f9602265da716d3811bea54ce5ef069e44aac", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "1336659cb313367ecf6c4d8d0e675fbacc09a13e351cb486ec7f701c57ec6e81", +"T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "c433361fd791ee5eee96d14b64e705141124e0beae6703d38c57dccf6acada74", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "5e3e74738a084d96baf2842a9c96d3516e3c8aa6c26ac879befec71f4c41f42c", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "7e6c72d59600fada42e988e2688cc9ee35369fa85273f131c4f952090f800e62", "T3T1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "f1ac0c596ca39ffb2bdd8015d67fc991c6ee87a27eb44054a65f28162ec6f379", @@ -16367,119 +16367,119 @@ "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_cardano-test_derivations.py::test_ledger_available_always": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "6ca55ce57ef6a96d1986e2291ce482dddc327ff77363e81c2a46730f4ace64de", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "4459b10e6a028b0cd195111e4c5edc541796b4988632e1a278bd9701a39bca44", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "11184966298f43cd6d40a180a3c5eba105f31d73eca0569502943301c155f908", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "71ead6f043b90c9ab67ff876c16a78e498e0614dabd94d1552834f3a07e2e2a0", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "498bd254ee2f514d820b9ad9563343d2b78608f489582a2d8a97ba9f5c9ca14e", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e13902166c07e6374e35e3fb3997b8d48236a9818452d1f72757457e3b671a48", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "7b69f9364716a9de95cc2a3bdad5a7523ecbf23ccd962c76215e828d6cc197a2", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "f1f3b60bf7a4e6d666786f12a652073dbaff9999aa77226b232f9b639c580a07", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "2e45a80f16be0152c35b33fd49824d410e758510ff22a929960a7eed06434177", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "ff643f198822eb3183b5ef15cca7fba3c475f245171d5bee3660e843b2bccc2c", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "956040d02a772b496de70b973064354fbd1742cac22e8ba67d05abecf62ab7f3", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "244d1294562147b5241de0104827c9ba4294b10290332c7a0bb6dd3560d9a8eb", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "befc6fe5fa9696e7546e98b95c4c5bb6dde9bad801c2f5d5eb65266ce27e1b05", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "7ee92bc43d6c45569f4e12f3712903d4e19b49308d41ec72592b774d9f9ad844", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "311309fa333c89b7676cded403adde2155b1869e3a235a44ce508f6a62219ced", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "d167f9109f3e9aef6d6f3340662ea51eadb7f252a4f27464746553c577642794", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4d5f09d7c529523a613fc76915ff9be09f97ab61e56bdc2a4dc337dd08fc6c98", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "0d7579e28023ea41c0dd5f3b04840764d8ebe685993bc35ef52a0310c301efb4", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "055d213cb6d8115d5c8fd7098434fb55db18147235afc778b3931c746cdbbc79", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "4f71649460e5597f243b01de134a8f6212a229aaac2138878529bb89e6156243", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "ca3b62c8db69ca1e9ef2538dfc2003624150b578c5cfdaf1b06874a1e28edde3", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "3df8a0a4adf005672e19d4e95a3d092f15395a1fc7410af1f67ed10842ee3399", "T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "847c9893bc443d8c2be6868344bc65a85b64e0b3809215a45ea17e7dfe089de5", -"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "f06db68cfd73101161c9f8704a77d0ba46490f24d035e6e35cf7ebc1603ea7fe", +"T3T1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "2f132a233bf072ef4edd48978adb6e8b237bc34ee73772d0f270ccc1b8ad96df", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "7b034af259e56f62860830552f6570d5a542eba25c60b57b0fba23e0d4e5716d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "496ede8595351fc19e2f00ef7b51d29ba8d7f25f87df9ad8d751fa1691e99ab8", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3da71504151796ec773dbb2f67dee7b2e10a459edd52e4de09a7c02f87fd05fe", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "fc5d298360c233926eb9e33234656fe411ba776b1b97779d828557b86a0a35b2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "881444bd87cce3671bc9c2718296c8d70fd968e1e697cc3f62bb937bad578b7b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "5306c5af107ac8b19b230b6c44e174dcb5525ad2b2d186ac3c06d7eeebef3c80", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "7e4fd5c7e2e76a35fff4e2c5b026741b5383d1315a7eed673880be6b7e0202c9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "256b9aa0f5d4578f09cc567e2d645c862cfcc65d8ec4382b47e626e2f34204b7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "4a459380f7b11251a46fa6d5a8118b3df58326cea75e453e6ce4249e0441917d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "4a459380f7b11251a46fa6d5a8118b3df58326cea75e453e6ce4249e0441917d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "1b03aedefb9234368776a90252827e38d0c0d2af7dd3f032b2e20c77090fe3bd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "8cbec6cff6bf6992b22f51cf3e031bd178a252980baf1affde6178751049ae0a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "c56fe2d0b41f5553764b292411a0480188717718c37a655600b0a22afa88ab5e", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "50faf9feaf527d89cea24c4075ce4d353015d1e7b6df8fbd05a96ddc449ce039", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d5e40a66edaa181b42a1091bd7029beb935f3f80d2e8b7936777a1406843366a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "6613ba8fd22546b819a090a5099c51c51aa6ba026d9de2c2270b4abe7edf96a7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "09a592b0a2a9855b77b1d53bda4d7fbaf390bb29117a7cfa6eb7407cced7c13c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "a716dfcac60e64a55ed92041ccafbe8767784a46770fdd7a1bd102c9abd136d7", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "b76fd25676bf22f915a88329e0e4100d9a3a6f80961e21b9927767a2f8e5ab5d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "b76fd25676bf22f915a88329e0e4100d9a3a6f80961e21b9927767a2f8e5ab5d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "d9afd0e9bd1c31cd0bbd308aaf5d2d591559bde8a8990b203bed42acb928f4df", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c0c96475c9ea76ab88c64b301b97b9d98e67af640a97837954c39dc5f154c6ff", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "06885f23e53283ebf3991873d7c5aa862efb53fd6462eb331027fc6bccc1f63d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c1136200ce381044160121dfb71fe62a25eabeb220a116f433c553e4fdae1177", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "c9916b0b5987c27e1fa28e17c1ed1efd85ad67079ae812f5e6b8b942b032ec90", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "d1cce916c10e4d12ecec68b869744cf74ea9746faa72b46cc66e3953294fd559", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "efa99f4d6af6b587fda97754c933a3b2897f09e0cda3dd90c952d2ef791d8bea", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "816caeba753310e2b3d6d50ea3dd25528b7c8a58b089493fc262d65ce7610294", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "6e16a36b077d414dfdd828acbfd4479e21c683e324ac24490aaade58ae6e7df3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "c9916b0b5987c27e1fa28e17c1ed1efd85ad67079ae812f5e6b8b942b032ec90", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "d1cce916c10e4d12ecec68b869744cf74ea9746faa72b46cc66e3953294fd559", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "784366797468d7c9dc121d9c5684c91554752b5ef7d6a1d222bb0cfeb4da9e41", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "5e3bda2666a1409ef051e95b50eab0f707956bd33b3e6bd84d336010d7d776d9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "66b4841a242821cada4da7683b196293f7bab8e0c56e7011162a0122ff41a55a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "c3ed3e36b021b446dc0e6fd64ed79b823181db704082d21bad8b0d7b7a3b1541", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "351e5685ad1e07088b7042f85ffc2d4cb0409138d5ee70e45ad0bea042665eb4", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "bcacc65b738d998164eabc63958f9088728a8b561dbd1f5c1d56a2202026543e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "7713d52f455b7af96f1462022a281653cedbb3b3663186c9b560f3a7f07dd4f6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "dad55deedf1ce67a18fbff36dfa90a298e690bafe755ec320cfa6a025f773e2e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "2251793376a97d7564f92d790b2c30e3170cfdfa3cf7d8e73bbdc9957586df8f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "266db4c7f9256b7e7866abcade774165b87f9321e3f05685472f1077d40e73f9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c9f27d6c2e817c1782108734ec51428bccd21393b47100af4714a5eb258b46e6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "b3c05a1e0eee7d14875cc5ed5672c70bae7e8c7aab29db60a3995883c226bbd0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "ae44cb4e536f37915348084756bbc9040fad5e9e57ac1f67549b118b17fd4a3e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "5a0fce8e57595541d40c75ffb63eb1dbd3e72bf3c1dfffe719472574fd8e55b9", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "3224d827cb5d79e3c5d73b1fff1856216f551e4a6c3544c95538f2b60cf842f2", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "69eef2b3dc73a3b536770e27bc5e213289034a5d640832ae026531e3084f3fa3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "91eb190be38e7dcfe01c197a3faa810f99652429af8a0d79d488c375fee77d98", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "83fd19d6f883c8db1f22fa45abe335f1b24ff9f3007c3f295860f37aec79cede", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4bd87de759ae62a4c82ae9d2dca40ef2802edcc9eed568255029a3327e57f894", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "2d2ca405665e279c7f6373b893d76f5baa0cb0522d1394867796b2a0ab70199f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "44ae718503c9eb34c105d3da8e6878079657d322b794ed8d170274a86a2abf96", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "7958d6c04278a88039ed46feba60013dc0d9eab8068df9bd7b2862c92f801dc6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f82ca75becccadc67db03bcae9aa897cc2cb47edbd38e469adaaa0e5bc39fb3a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "457ffb8ccca63b8bbcd13c4341e55def6b36b330511f228f125bd5a20a8bb503", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b408ea75b77c0a719a98391c20d5bd8c0f15471e33e3f18de551485e700f6365", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "4f2b8824c02d6f40266ee96dbd8d2d0857871c442b4236713238a02912455a2e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "969e0b37b221adbbb38c287d834552d3a4713f8d4bbf41a811a9839e04f05f53", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "55025b34c3b82d18325b85e037098ca73e79aaafaca323efe9508e5842fe1164", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "89b11bd35a4e56b1b574bb382c26f99cc456520ee00b546231d64d7ca4e2ab25", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "66b246157e50849e445a38b4ef2d268c0ac7b23254cc590ecbc18323d7712075", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "a42990bfa7045c33a7d569679c94aa2171f531b9dd625a70a72d89bda2b3dff6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "8f4293b39b805e6ad9baba97321a39d1938aa38e2bf79cfd75ff9e49a7adf5b6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ec906879742d7f63cbeffe328ebb85c0c48b3d1abcdc41fc870c9bc12679bb1f", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "c22e44a23023cd5918334297382e85b95a7fca4302bb9e2203e8078649f7b62d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "fcae85fcc69231c0b806d603e8d47e81df164f86ecbab2986b4959b52051076e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "db4b9f764c79ccd84aee96a86df05b811f906a1bd955987c6d6424a964bb561c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "7eea24e2be4c3e780dd303d4e9591f50254e2ee83f05a9f3d259bbef5f28b244", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "2d0f38b02f8d5c241b2a8927abaff5c11c67aa907b2e47ca395d8504e3a785d0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "6acbbce00ce6e18580f689fb8a77ff433120e96e5c90aa46467334fc965a95ab", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "10a8e623589f3adccee20180ba50006fde4bf2d84c1205772a75da51eb46376e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "99cebf827ce93f5f862537fe47fe168c5c385412986313f30fd150165154f91c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f570cd41269a3f233b8fdfed90d7e99fb1d90750ac919a1433eff63986f1081b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "40b7ed4ab989ec97a39f28e0573e2c54adf4ace3186a2d2d6d8cbed4c905a2cc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "e2ddc3fd7b2a60b79ffb1a9e2d9cbea3411901d19dd0569fdde26da218e1192c", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d395f75d9792107e551a965a9b56935ddd6f749f5bf9a19e356ca2f225483185", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "ee76c3498a4e2a93d7e09158296f669862b5b99647e0013c6d61bf4c9abb513e", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "7388ef54e468505bb58e628b6fba68469103426bcebfaa4880b9d905a36f9d25", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "7cdb77f534626ecf81b6f5103b5b65c12ecc767bb4a32d632b507e398f56aad0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "aa175855573cd9a372949a94c4e0bbecd89c49b2567039aa51a184d7e128630a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "4846967d34676d5457fa4515c39df210d11d10dbcb338ff5c3969a32531c8c59", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8bb5bb2712ff7919e7314c2290a7fcf065699be7b870928c25392beb3048141d", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d24f772da4f25774d2bf0633fddf0dec6c944f2a90416e55bad15a389594a612", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d24f772da4f25774d2bf0633fddf0dec6c944f2a90416e55bad15a389594a612", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "3fa79680b99ab2b8ad5e1c8026c4e04fd85b7fd448eacf7330289f9a0f1f0800", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "071ccd1df0399db2ee2c0f3eb08cc8aaa1b64eb698c849d46e16f9bbcf1bed45", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "071ccd1df0399db2ee2c0f3eb08cc8aaa1b64eb698c849d46e16f9bbcf1bed45", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "8b0e0c3f3f6b5dd2909072bdb234b65eed8e07a2b3925e5e879a242226044a06", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "6cbcdbc020b8dbd75829fca732a431c91185996e1e2c40c4c19493fdf4035624", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "9a85653e891386a26a3a2f590e18e39c8afc874d1a5a92c031fe540d84b5a2bc", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "5ed48c8b528b98fa4528de5f421f675eb9c1481ed64b2f409705cc72e60e804b", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "556e6fb1165ef1581f0c44cd3fff6342e8e89ee4574546da3b6556645bc531df", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "2c8b892d49efde3a91a63f5858c8edb258aaebe0aef5388d6dd21b2da5105906", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "3bae66efdaf225dc287886c668ca8ed881136158b6e02a13afffc386915c0c2e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "033bdd3e69f28d023b2a32adbffc15821e5a2dbc97d2b3b1701015bd5683cee6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "9b6b5cdb22c6de3f0113d6606497ccbac7a5baa1e2e8df249c7ebd90d8643818", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "90465c3cc2860bd9efb195a904343626ff0cee89c490b88dfe774ca84e185023", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "5b7e14442e44a71decf7bf40bb276c61c699c9950d661d24716b122cb63b2ddb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "5b7e14442e44a71decf7bf40bb276c61c699c9950d661d24716b122cb63b2ddb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2d8049f6095e9c006c9f87fb80d1a7b162294d4af45c2ee24eb3802295aa89c7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e74bcb94d110c8ed8356c1f5166bf691f988511dbbceee2e9510545d9b7ef2b9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "9e989d5b2cdf41aac6ba3a9b737c24509639188ce32533f81fbb4911ed602ac4", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "cbd2ce8fee3238604ec9bb3597d129b4e349021dc5aac64e4f8e35946733850f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f657fd8f819ea7ba384578ee6bb0c8fc129867c2c9c37931ce64b3a80e6b5b3e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "835522f2b025756008bf0bbf25f9508bd07b4a1101c5fee8aa61d84ca7d912d5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "d1d8fd57766bb2b44b70a6c9540f6c34651fee831188e4c626809a85209102da", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "c181bc0ded0f6b0e9e6aacbe741a5224004b10e75afb4e17a62335889e51a8ce", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "4a459380f7b11251a46fa6d5a8118b3df58326cea75e453e6ce4249e0441917d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "5881fc656a70bbf24ad7fc5233d7ad243fd2732bb285c1eb0d048a5fc3795dc8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "cbd2ce8fee3238604ec9bb3597d129b4e349021dc5aac64e4f8e35946733850f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "58f99cbad1d58ecf0d54a90dc427ab367533d9c4fc5f5ac44976dea12f5317f3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "835522f2b025756008bf0bbf25f9508bd07b4a1101c5fee8aa61d84ca7d912d5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "d1d8fd57766bb2b44b70a6c9540f6c34651fee831188e4c626809a85209102da", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "6d8ae4928569ee9db307c5df33c10c40e0e75108c362e791852e1c374aec9dee", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "cbd2ce8fee3238604ec9bb3597d129b4e349021dc5aac64e4f8e35946733850f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "96d51447af4995eea75525ee1c90ee36b7d861045df711aa4d239c6faff44fe6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d4265f3f7e30d4cc1cc6944ed22ae28f3bc81fe5f8137684ff41141811fe0b14", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "8e0e7d26cc5bbb92aaae7877d682a4bc7914f174732e3519c9adccff5b0c650f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "4521213d69660bb8b32cc47eb3ca5866bd6f5d6182bf3c95e507595599aed5ac", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "b8af2f3716026d289b464089d019d70056c3315f5ae3596a4429ba04f261d47a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9a1b2b00448c72f2530ebb47a9731006c3aee64643516967ee6bc41c5fe99b92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "9a504e3043d3dced11d50526bf3142c74e62181c2e62db0cbba8728f2e672389", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "2ebf19bd11a9b65b037aaad5d02571220f0ca728e16f8befe5f166fad7066967", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "210c943c8e75d3f1cb6432f0cf8d50a79d2e7615ef37b45ab21b796292f39a92", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "d9c70c99b8480a3243e38c63c9d71e3279a446e1ac29b3ede4a7de35adc221fe", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "afbc7997d599e28ea065b05b6fbb04d1ab96ddf07e9919c6b470060f5227a969", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "3a2cbcbcc544ec8ebc5bd093f24c11658e39e16eb97ccb63dee45c3ff8cc7612", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "cbe05d17ce2e7ac82ee474d74fe86057d694275f969e53067af60573de4e0090", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "2400d4c4918f33bb09a4aa49a4a08213679dc0be34cc1d34f9d1c35ed27ea7b3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "ab046bfde77a5dd97fad1586ea69a504eb7019e9513af225a1b237c2436d1476", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "269c66469da29faa19597eff69c39811666a82a8a54f4025b3a01757210305c3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "509b4f32ef34b3708080812836a46a8b4886d0fa2a024b0558a56893ef7ea679", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "d7d225a7c0011ec49d4fc7a38afb24f8309f8d498a8f211997e0262eb8269c42", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "8d14eaf93feb78f0aa175efeebc6301a8a8b1ede273c9ab3f761f71e4a6c0ebf", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "128b41db0e588848e2fbdbd66764f9e327cc2d7c3c69ef617f918ba2e240a1e7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "0bfca20616b0110ff2e1eb75d9350adc64ccd81d6e366b92794864b95ff424fb", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "543e690e9d309fd36ae8cff7753c94a5e2bd45f43c98e5addc1f9e0a9a2a8e76", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "69f130bbb6b3c94ffd6c15cbc95a480725f58128dac651887be70bfe40ebf216", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "69f130bbb6b3c94ffd6c15cbc95a480725f58128dac651887be70bfe40ebf216", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "95750c75d4e83840216cc4f90a918af84575b4be60afb17fcdee12d1a9f721c9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "440e348f45cd38fb2bc347b32a9df73ab2cfc23d23fd3ebd58a003b8b2bde5aa", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "b01f383ec01c787556354acfc5b5b574946d6402492fce41ea1c9a3e45853c82", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d115b6faad6b9e25b7e2b28a57ef89b2736e1f7a443c473cc29b77336ac8840d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "c7366061882fe41dce9018c56345d320b7871ba8221cd0e82c8a2a58d06808ea", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "f5ab57d969e8487491bedd76d58be8ee7522ebbdf9e56430faa1d5c3d81d7cb9", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "759979a71c082157d499283ce9e8769986e5f8e4709ae038e4b61125434f9f86", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "ed4023ca3d33377d08d69750cbf0025100826a6078bced4cd0c92e99ec05282a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "cbd2ce8fee3238604ec9bb3597d129b4e349021dc5aac64e4f8e35946733850f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "1aa1856ea803090553788c0553d56390ed04a350d804540f4816302b204fcc07", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ec022a38204c57e0f87fe1627e9ada8c62cfd2b0d5ac74a5f7bcd23764455c4b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "c4211aded8923abfc7b858064a7786fab9e855acf836d0f68d7a9e8c8e663740", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "34ca9fa55fa5b1b301e9239897f0f2984dc62c6ee11942f2cee69782ea0d9172", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "ba7e86e2ffd8751367b2eb04555862dd189af0eb466c7a90ace8987f0e6d94c1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "a28978c28afa9dc11f34b41b8aa893a31d04bc8636bcb658de0d9d54a8e2afd7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "35628f8d66e83a91d0bf0e74ba9d5b39f076a8c713bafe58c8ad130307b5c617", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "3d6720323bfd77d7d645546a213eadfb02296528757780b673211e424b03a51e", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "45bc9ce321ed7b2e8c2cdb509c83decf782c5b98240ced889934273f69113744", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "1ec72f735ba350145f5d22f36e0c17448d6abf7db1c1c7c454850b1d3b29e8b5", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "74c5a4ca0d7513f41fb0664d0c88d49a90a96227d27277de163aaf2b63e2c4d0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "cbd2ce8fee3238604ec9bb3597d129b4e349021dc5aac64e4f8e35946733850f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "780c2af758296ec94b4673e686a2a332cb5763604e196f79de38c61781c67711", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "b6e4ab2d407c65292f52b756f2e1629df6a35f3113793fb09ee317fbc45ff7e0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "331c7c7b939a6cdabf22e8d10c340b20fa8b11c59506f2a47d9fac2cb68558b0", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3e0a8e7dfefba1f4356f773fafb44a9bad9a9af33f510afe0333e0116f4f8950", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "27cbdb5fda6ba65e61ddf8f34c14212b081892b6c932be96700c49b5552ab7ee", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "3991d0fdd1616d44cdda47892ac8568b4ae457cfc96cfbbdf2a8dc3f897a9678", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "72ebe60f4c14d89e2ba7163afad009a72e3ecc720f16f94290a42272d8e574f8", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "477c3de58f0ece36ae799f33019694229d5f221e5cf5a9c6bdfca7b0311aca71", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8c3564b7721fa0c3e30f6386cd22b507cd1b8fc4a419eceb9117f8cc7c256e69", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8d857a3269a290c34152a12e50bc77d1b26c042319007d057248bad2c46328a7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8d857a3269a290c34152a12e50bc77d1b26c042319007d057248bad2c46328a7", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "cbf419b9eec6b3292ae79575ffc0923ede503d58353b24a4cab7b6c635b43c61", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "c8779cf5b2df4d165c177dcfe533cc546e26dd59196be2d214c7ec81a7e3e214", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "c8779cf5b2df4d165c177dcfe533cc546e26dd59196be2d214c7ec81a7e3e214", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "05c68dc557b0cec6f2f332b79d3f2bdb80f00c971f17fa389c0f06c74b626542", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "c1dc2504d67af972883d29c063bff138c61805d5136916d9bbec5bb731a9d86c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e85baf35b03d6fa9ddfb18cfa46daf6481d1c4d0e1678db6af751f1a15dd0ab1", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "a61c22b23c77ab7aa9d982f142cf4016b0d99839c65400a6112fabfdaeb0a3ef", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "06a2634777b1d002d5e0e2d43da938051a51ec7d064ca7dfb8f8b6749c737604", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "77589ccdab57eb857a963f93c0de7e1a390b0b1a13be5e76937f441e7a3f3339", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "3a12139e7ada053722b95575cb5f7ac8207232524fe687d4d2f10e04e5d9ff99", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "79615297424e1a7577f322b380d794f8d349b07f3becbf594b1d2731490a232a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "4a459380f7b11251a46fa6d5a8118b3df58326cea75e453e6ce4249e0441917d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "4a459380f7b11251a46fa6d5a8118b3df58326cea75e453e6ce4249e0441917d", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "bae6977b16f062ca559de755e0eefc417058c30d92c1ad76d8a7acd69b3f14e8", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6cdca4dcd16e9a848ec156823a6915c8c8635aa0ec73d0d20bfa2a3f95fcabd7", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "1db29fd8c7e6d3ef3e4beb2c80188b900bbe159323a94a07a6389c1e96e6d7ef", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", @@ -16508,19 +16508,19 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "5e298a2ded21931400af093a944327e6a149a7483d3bb18e04935f137fbb1dc6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "dee948c481a982e656a264eb92cf09bcec51e34bee11769ec8a9f950f5b8b496", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "8a53d7757ab98a6fa5aef53dd38a09dba4ad7fe4baba998e276703d737a3846a", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "e5b6ad7373a4e64b925657fb528c6a13221833c08a72cc97e6d0ae5cc970384b", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "0aac85b08b10bb80cdea1617073f60c8eec75989217910d972d561f68ff76e77", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "cbd2ce8fee3238604ec9bb3597d129b4e349021dc5aac64e4f8e35946733850f", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "75686a9af30103c0d8368fc127b4fc7fe763c6eaf078d58bb4a14ad22a087d87", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "be93dea2e6f5241b8b8af353ca23edce888522cd3d7dae4619209b04d4e88bc6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "24fb0d1c6ace61eb11f4fc5a451d6fd5638a698c232773d0caaca1e4a925ba00", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "0533d4fba093f7f5a4ec8db5d118d0c351bcd5a2c57761d1b562f02e9f6b8d7c", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "54b3a5792774c5960c1cce243b77b04607bd5fecc5705ca93c48c90869614ebd", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "547178acd2255e727e2c54b7d856db60700f60ab8532b546bd7380548c419772", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "b04ec8658efbc7b83d954bc31628bf2a9bcff93dbc42b8e88de353e6fda884fa", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "fda6e1b6cbc51f00b400fa3ce0f893446f812a8c09a4e09aea0bc8af183c09ef", @@ -16534,10 +16534,10 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "fda6e1b6cbc51f00b400fa3ce0f893446f812a8c09a4e09aea0bc8af183c09ef", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "fda6e1b6cbc51f00b400fa3ce0f893446f812a8c09a4e09aea0bc8af183c09ef", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "fda6e1b6cbc51f00b400fa3ce0f893446f812a8c09a4e09aea0bc8af183c09ef", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "be93dea2e6f5241b8b8af353ca23edce888522cd3d7dae4619209b04d4e88bc6", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "4da086f45968184822f3ce006b8086a8d9bac65e91b57092230379ab677f02a0", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "3dea1ff62e4ed4b303acfb8f8b29ed419a078a73241ea406a1accbf7a4507b48", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "020dc4fb4602b807852b3ee99aa911e8d53d6ce3af3414407aa50c7d557a9cdc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "0533d4fba093f7f5a4ec8db5d118d0c351bcd5a2c57761d1b562f02e9f6b8d7c", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e090e0dcbf92f244d074ca29c6189f313f2acb72e3426aa608a15b05bf9fe7a6", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "6d11d887b90632baa52a57a3498ffd9c2073e0611c44304a3caa943201a104fc", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "51ba07b6634ea207d04df2c1ab4e25b11ddfd27944d02e3a567c38683d0d827c", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", @@ -16559,14 +16559,14 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "201a179ef001ea2f3ad62402fda53f155de347d90068f05e2fa279ef66e734b4", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "708908dedf4a23cf257126a242aa52dc3c57a79fbb759785d03fff6a9c7c3543", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "69f130bbb6b3c94ffd6c15cbc95a480725f58128dac651887be70bfe40ebf216", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "69f130bbb6b3c94ffd6c15cbc95a480725f58128dac651887be70bfe40ebf216", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "393361c2344fdd36c9bf0cad1cff10f134b694e64c410ee90c1c6bc512dabdba", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "5e56bb40841a5b80dfb50fb4a8514d01ef76363c941c0ac014308c9d927a010e", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "6e8606a80d04d38571bffb3b206b788a6d4b30af84c8def28052c473f8da8fb3", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "69f130bbb6b3c94ffd6c15cbc95a480725f58128dac651887be70bfe40ebf216", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "43cabc024ecb6a479fb8c3a066f8b034c3520a3d0a270816e5060626e5a45036", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", @@ -16576,14 +16576,14 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "65f43fd628660e3bae15fc7b703d5e330e0a54612b80ec02d56d0e38745eab3f", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "041483afc37e3dc232b4869e59e45fdf971c5b9c27754d7d80a5f8b4b3ba9ac5", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c8b2e8f221d3cf4a7b0bb0ad28f368a75a2144c091ffe04ceddb766b86449037", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", -"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "11771c2997cbb72e5560de0dc1075854d0637997be9e1c2f756f7d5d6c65a175", +"T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "950ecb2945363105e73ab4f9d83eb10cec266c2beef915bfcf9e68c58a281bb5", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "9115ccb0f63b5433007d66ec03cb7b03c0c2e5d30e3d93c97f4ac908d670776a", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "347413c42a0301e2ac989a8326402cf28f9fac2ba60522322b7679a0474bb36e", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "2b3e8115eed1061f62e2d9305a3be8cd931aff4623e1e9b161011c9f2f608ae5", @@ -16605,13 +16605,13 @@ "T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "bc240ffa909ba8ba05f0b9b4a3aa672646c4570765f48b494914013bdc88990b", "T3T1_cs_ethereum-test_definitions.py::test_external_token": "b20b610fb8e977eea67759f92ab03fd6a5a4f715365ca1b5097e7e567ce46ad6", "T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "386e1030cb895600962ebf18a32d7778407e05d8d8d09887760353150462a9bf", +"T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "6e4ca2d3855a0be980a3c6b1a2cddb050d2d13a277323858a899d2f2afdb3f41", "T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "190f0958e1e59d951e091007e2a6e5335a883083100549e8f2bc1d54e8d80fb4", "T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "45ec817d65325efbb343745d562a7df94c4fef74c40cb82f307f9120ac623e8e", +"T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "e4b0dcaf847166242683cab325bc433013e592b1b6e2d65bb14555801f600a95", "T3T1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "ad87601e4ab1414f5d1521339b28ec3c0fce5330640f6d61908b040b4bd452db", "T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16650,16 +16650,16 @@ "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "3b7cb4e490814d98e9f329d71e88b630df5141c4f958e41f15d226f8dfb90bb3", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "34c59464d525863e8534723f39049dd59096f7aeb2659bc834a2acad534a8d8a", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "60da1abcef13d3a36ecb6f84ca213f6fbb86cebb7582cdd09709c029121a8207", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "aadcd4d43d9e363240a59bf3375106cab146309fc98b67f1660fa0ad59d9e225", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "fefc9a4bde91262f50a0f7c6edf8dcdadf2a3983ac6e1dfd60a6839c3419ffc8", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "b94349cac6d415972156336e73b50607da2881b2ef18269d869bee7000e267f5", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "60da1abcef13d3a36ecb6f84ca213f6fbb86cebb7582cdd09709c029121a8207", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "60da1abcef13d3a36ecb6f84ca213f6fbb86cebb7582cdd09709c029121a8207", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "60da1abcef13d3a36ecb6f84ca213f6fbb86cebb7582cdd09709c029121a8207", -"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "644c64107910131182a85ba5281e705b168be51fb6cf3fddb09e9e2037022d6b", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "815f5cb0b9f8ce629deaa29a37aa5756047948e515479c4317ae8063af14350e", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "dc0fd1deee401bf7271e76592de9cd519d48f93ce5c71b381bb022554833dc17", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "8ca35517490b3e862db00f9225578a94e9f2e4fa87deb69d29de748acc8ec5d9", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "883a8ec8f259c110b2a21e9b1bcfe1592c0b283aeb81c11dda10e12f93153831", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "1f5f2aeec7c2d7ef8cfd9ae9a3f53ebebe3c728a86d197f1fccc0846baa8c046", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e256957609f1514b2822a05e303ab80877fca99d8f3223706cda3558ba5d3995", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "8ca35517490b3e862db00f9225578a94e9f2e4fa87deb69d29de748acc8ec5d9", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "8ca35517490b3e862db00f9225578a94e9f2e4fa87deb69d29de748acc8ec5d9", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "8ca35517490b3e862db00f9225578a94e9f2e4fa87deb69d29de748acc8ec5d9", +"T3T1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "61cd63c1e66538c976f99d08529100f440168b8bcb4e46a553df933ebaa66906", "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "7b687746bf0091f01ff6283a91c426c063d4863de2d92f450617d9866460a548", "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "a4e5011d7bba5aa5be6a45551df279ce7034fa6437e8b1635cfcccbc4423a0a3", "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "70f4ac4e04638ce9f805770345bfa2d0ce2ed2fbeadbb8d7fbdc18ca42e833ca", @@ -16678,7 +16678,7 @@ "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "49046ec09046bc2917cfeb9015c366b1755719fe994b60a626e412812d58a9ed", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "390e5d7a462838428c12959aa48445b62770c03d34a01cd9521fce3368598dd3", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "391a486f15aa7305cb953c3ca9f3bf52701923aa9d0169ae94c746f91149b448", -"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "76727f7d9980f8d1572fe42cf6ea2174f7072500ae69648d5f883bff2fcb003e", +"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "c33960434a2f59eb9a39eb5ee37d45f23f4988f0ea0ab9469fb7dc8b9ff42e62", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", @@ -16692,13 +16692,13 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f071e29a597b8f564c63adb08dde47b29ffe50c27ef3a0841858f8685c805d42", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "0dc3ee3c0cd4cce66233056e11857392157eff056f5bd3b536d42c18a952bfc5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "0e532602665e94b6a95e4cebbabbe94e52c0034d2d815ff910e475523f40745a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "f6221a1a99395d4bba919fce6f2844f595cc6b51d15d4f3b7639c02bdca74819", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "f9e912d11c7ccbda6c9f9f58a56dd5b106461fe5f841f1b2871ca5770b79591e", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a3b59cd93bb059b5b5cd7aa586799a161b26d396bf239e79c031dea735fd082c", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "229b0c878e5811859803b47b67c0e93f7802ff10d40ed94e8c950b0446abc5b4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "868b00500057092f8266feba72b263d3b25230411045981cc37dac9c99ef8998", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "53622c81e8b83ea2db1661863fdcdcab3fc21547779b2410f6f4bbc689ab49ab", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5abbd13b8d4a1fca4472698daf402206b29d45282e7bbdab51cfcb6deb7d9533", @@ -16713,26 +16713,26 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "d69997b860d09805f0cca00a1d9eb1841c9b3fe76aff52509a0d4f4a68d8146a", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "c5ff47196c3c92b7b583b343bb75b3abb41854f52369a593d66db1ca495ba3eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b090061b791adca4f3d06e975c2b98d1d128537a80edda58fd873e87fb7f0074", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "27224f62eec48605f4209bad4cf51f896288d16531c3a8f6e0070c7d4716ab0e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "2a805d3f7a405032974f4b0b96b8ff7aab4ceafdb57831adb4080994dbfc117b", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "ef6395a08dbf548d08e13cec6b534da79bb0a2d26f469d6215ab2d481cf3cdfd", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "229b0c878e5811859803b47b67c0e93f7802ff10d40ed94e8c950b0446abc5b4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "868b00500057092f8266feba72b263d3b25230411045981cc37dac9c99ef8998", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fe0ba83ca08ad71c48c42967f4744403071620d4ad32561dfc6ceafa24bad3c3", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c4fb35f3a318e1d5f7b4a5c55a213a03625936fe6e0a6ac3e9bcec90d6b1eb9d", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "c146dca57f928b92e4749354c0bd1470d4e1d5e7a95f1fe211df0642ebcd0066", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0dc3ee3c0cd4cce66233056e11857392157eff056f5bd3b536d42c18a952bfc5", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "60c9801d0c4a6f6069aab04eb379a2268813e62e9989a394340a32607abd5fde", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "f6221a1a99395d4bba919fce6f2844f595cc6b51d15d4f3b7639c02bdca74819", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "62cefd0f7eda5e90b660548a444afc3a292ece41d7da9e1c736f2e01b4b1829e", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a3b59cd93bb059b5b5cd7aa586799a161b26d396bf239e79c031dea735fd082c", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "359b73f5bb65c0df2200cb9689618e1608f24ad0333218d268de6ac53bb43679", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "a2ecc1fbfc669c642a0f8fe64189b8f1bd110d9fb25bdcef81cfc4a84ef395ff", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "fe0ba83ca08ad71c48c42967f4744403071620d4ad32561dfc6ceafa24bad3c3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "c5ff47196c3c92b7b583b343bb75b3abb41854f52369a593d66db1ca495ba3eb", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "803c895152789f255b94a47c975d124a846d88a926ea011df10c6aa9dacbbf99", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "27224f62eec48605f4209bad4cf51f896288d16531c3a8f6e0070c7d4716ab0e", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "198190b29b5844e34ef7f9f3185c753a336734a1ff9ac3131c34e2d5b2a9f7d2", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "ef6395a08dbf548d08e13cec6b534da79bb0a2d26f469d6215ab2d481cf3cdfd", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e19ef1abf5cf004e9c8d5dcb763a7eabb529138b13a59318c80d383aa6f3f051", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "651b986c8a2e21cf2e20cf27002fc1a5c4a12258e359f5d50e9783b4ddc4625e", @@ -16753,11 +16753,11 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", "T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "92b30792e93613c00c6d9e410a14d3920017f1c959ffb2dd892049035d678c11", +"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "ec3b7173ff6f19e7200c69a8166120edd16c0bb598b5e83275776fee3a64e9ff", "T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "92b30792e93613c00c6d9e410a14d3920017f1c959ffb2dd892049035d678c11", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "721c281322dcbba5893086c230a4ae3c2914cc8d8c646a5bb9eaf8e0216938bf", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "4270bed59cad22f896d5ce602501319ae2a2ef3442020d0bad20ac36f50a7bed", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "ec3b7173ff6f19e7200c69a8166120edd16c0bb598b5e83275776fee3a64e9ff", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "c0d90dc4e64d8bc96716d16227eef9c943ca0a5b99abfcb9041fe04ef04383ad", +"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "1108bcdd49beb6be03ed3a59a1d0ed6cd4c5a174e4cf27c42965afd54fdc4fb1", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16765,20 +16765,20 @@ "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "019ba81aa54a3cba059232f19343d51c0a8b22cd78e2f17774e9a5fadec13904", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "b430a223e76d67c57ab0aca33e7fed98dd0b14f24a2cfa099c52fa0c5bacf8a8", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "f54bacd2e2639878fa088b92ebc9b350357559826f944866822d271c85d800ee", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "4d6d5b194106ce72bd1ed868d54ccba2465688fe72bc7f12b26bf3eee33d6ba4", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "0c9ea30680733395ab1f56274e968a8e4a708d376aed94226148ef2604d950e6", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "d4954efa2dd143ed449ce985b980a3c68ef35ee999ee48ceb4560d1c9fea2880", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a52b2a0d57d232949f624f1ab3af111fa4caa7b39213cd5903d8588eedc68437", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "7117a75677a6dbde53683703bb8f60911d610a53546035b64181fc0857fa5a23", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "7b99b70c2b02481607d5e7b7306b64d54745b490e9fedc598f2217a16c5198cf", "T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "5bb20bf1eea67a8b182011f0aca47108655094dc30ccce3292f92a99bac8ff43", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "bea9cd59f578f397f19174b053278c87ec7a6d588c336bc3265780a142b7305e", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "908390ce421760fd3f6eb66b3bff55fe500caf726fa749d0064286de3d0d99c6", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "61c8b685592b080877810095bddcd06d3782f6a747b27c032b770189313568ea", +"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "0813f1554a574bc947bae65d6c935fee9a697e091a53289784395f2f6f3c9638", "T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "e27f887d7f20231fc7a438e5d31e80947070f51a52819091c3de2c187a725b77", "T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "0d04fcdb5df2aa6b09e2ef08ea99b44e29b347ea90281be6dc4cd51460308947", "T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b614de056146f5162a7e3ceda5e48b39e052398fa43239c0f4a06ad0944983c6", "T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "089c0f0c136b75bf62650a502e5317fd898c9b80b229e25cdf817139ef8221bc", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b6d121f8fcd0b024665ec26f72507d88fd5d732ebf22dd2aa7e9751cd9c6e9cb", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "fc42856145638724b237005cedb803a0693ce8b0f593350b97b79583d08a100b", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "597a04b0251de100f25faafdf1bc0961ed58943d057d7ba09cedf214a7b2674e", +"T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f714bf3001e4de3125ce491394f169edf71006a83dcf16018b0ce0dd0f055889", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "9d1cb21aef8b5d54ccaf2e5e1989d2efb91919253be891f629fb0b15ceb9dded", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", @@ -16801,7 +16801,7 @@ "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", -"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "f32f2076cd22074a6583175c9a375b12f3c89257114ca002094834f7a7759294", +"T3T1_cs_misc-test_msg_signidentity.py::test_sign": "8126e849c3cea12da202c4ee0ad583831a7489ca4df010c5a6d2367d33478afc", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "5804a78d625ec5794a5279cae4f39eee2743ec029bb7943494533c237e297b57", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "5cb1740903a4a9b159185be423a234f39a73756362cdd48c8b9790bb041a9234", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e85f019b637138d7ec284248933c4c1300b347ed707675531c8480755a4ad19a", @@ -16813,55 +16813,55 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a22d5e1adce339aa5e3a7f4dd9fd0be75f29d9c1c4be4da4ee981292f40553dd", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "33c85e43f3691c95c66e72ec59493fe2e59da86de85331117eea5fa993947345", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "665e88603f76396a4c1a1f554f0d02248b02f881784a88c712352e9685541f63", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "682068a5b4601c7fceb7497442710aa0f5e6f5d31066a414eadfee52db971616", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "fef362201100c0d78b4f5b10f08c04ab0d5e451f1fb522696729c71015bc48b5", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "800055844e2043632ad50f59c2ac388835f26dcb830e0bca7a2550f640d167dd", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e6fec1f5cdf157c5a1766c6db6d0d8aeea92b3827058ab88a48600f1da35b355", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "269b3c53a4392d318a8a6d22751207b0b2dfa7381858bc71851f65e5c9230171", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "5a438f4a95b3bf683d226de56d026200639041d0d6e2d6dfe90c6002a49b3ad7", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7a3f22f04417f0186b07306a8e5436e402c6b7576bd68429353bd18ce53a3b64", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e23d75685b9c5bc3570e1585a417007daa7a20b8a92e0df874efa9b42e0d9dfe", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "3c8a4b0682136f0c80a7ed07ed3a5d35e8e2761f5ba95132fbea5b78e0fb49e2", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "9627d32bd6597450672f7b9d6e80597d63a59a7c7436a06c01bea896993548f7", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "b25d0005bfbad92824b9b18d185ed436e050a9e7f31b62422c40a8dea735d329", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6cdaf5e54c2796e71155585f4452354691af7aa3ec85ce412ddd212452f39d3b", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "272d01af59f92b87983caa8b95020769c524f3f663e6f0995941f8dbd2f12a1b", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "93af4d378c5687d6750849d5859c9c192a9b37f3c9dbe426993e3b63f57116eb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "1ff38ae6ac4ca1f3f72dd2c9319400425848271edf37dd9f9cbeb0dc8cddac87", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "5a438f4a95b3bf683d226de56d026200639041d0d6e2d6dfe90c6002a49b3ad7", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "aef27b3305fce266e4568400bab5352f1ac947b48935b75a3e8d5c444e829030", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "668379c060a8fc3e97a6961932f2b10220b1f6a6f3e212d1f312e0e35e3d0efd", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "43103e483483d534dd477af3881803a792a2fee7da89bf888a92dcf1df1430f2", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f10a053e14cb76df3ac1aca31db92b0c6d3a81f06cd6df3be6718a254462714d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ad3b641082d48b0a602067a68b82915b902eb404f98cb658d3a6ac659ff19bee", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "43e2530a1dfb5a36eecf5537105059ac1c9864867f1a4b76be3bde6c82d70b0e", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "c08b9b820d8e1cd5285d1c84ee546101d53f30184057532021f8997436c6b12d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "8efdbe497d4e3652e3bc051d881e8998a805f2794e3e3c05ecb300837253865d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f5e5cdf72f6ac6eea8c1e4b258ac81d24ab181fd0ab381b582a31d9a68d2a8ac", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "48141a43b86292967b8d66ebd9ce49814f042756678e72dfed70ed9eab47af13", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "9fe2ba41b952e984a799572d2322be668cee7c633fb488a2f799b7c17381a079", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "411310ddc7d29b45bbb45f611938a86cb79ed53073004f071bc3505a2609d8a1", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "e79a06a5e14e5948654d0aec78a4c95c1792b126288265447c56afbb3f52089f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f2b1e9a86ce603232e67dd3d2c9b64efcdbedb0f0f77fe749dac342fbabf217f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "53ac0b05235a4a6c4abb0a763ead00e499b929a747adef8632ae07048cacedf9", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "3125d27a320bb1be379be9e51de7b7ae1ac13d147c79454b85129489cb20fa67", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "dc785425404836985cdce3a4aeba67f7ca1020085695add2530d1dcd607caeef", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "8a1723bd313d05d035b93bf9417d1755f53cb551c01f1bada01959cf01043640", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "27093b9dc8f5e690048529ed9804fb81acefabca4a3252fea20dbcd537aa87e7", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "895a55c6543456c6119794d68513045cac0ca34a68dd7bfba74a25c119dca06a", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "302271eedb4a33c98e99cb652b1431e73e9682ec983d666464b9aa6d20c9d5c9", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "a75a202ebd245fdc83fc317cfbc173ede05b66cb10d79e5fc641534c03cfd1ce", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "82020711ccd4c2a0eb291c8dc9196df31546449a0538970699d272bd5d1e2420", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "125e8aefdb215f89e99dc5e7599ba216a691971a012ca8f99713fd156f260f56", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "0a1731155077bfc0009486ebeff6b71c9b4db9fff5aa911ee5244f496bfe8b38", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e5d52e78310b4356b060c48c2b632e2dd4e99c1198752788301e5dd784ba512e", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "746d0610ae334ddc75dabc688080886bba6077c1a1da167eb029bdaded81f4cf", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e665275dda541c1ed0b43ab664e4c74597415af28a7e1e7f2c7486fa14b2ff50", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "3b8f0983892e73dce2dede9799b6b0603999acaf401001de2455c513ef9caaed", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "fa00aa7ec474461302fc861fc5f9208f8e61b9f1eeaa72b4ec2201b21286f741", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5febd24c877ac8c2ca389e51ae7dbbbe7a4e4a6a9a6cfa028d380d0d93365509", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "a75a202ebd245fdc83fc317cfbc173ede05b66cb10d79e5fc641534c03cfd1ce", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f00cbcc886763638c5fc8fbba276d084d488f0eeb24c43e8a4d9ef9fc46c9332", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d8613d698241fa371aeb40c21c105fcff9c4afb55ab4adaed9682ea0a2a46c8b", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f8a94b2a2fd9acc8344a77eb78312d33e1f27d95ca671851957c0b30042271fb", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "544c420301de2fb05b653e94e995cc7f7aadf902c4241834acacc5dd5b7646e7", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7e703c1f0aee9ae9557a79130be08b86374c9a2f4c08c9893494e76e1ddb3e8d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3a4f349c4b7af5bd10235ad38f994f6ac667399c0561b32b2bc8dac17ba7e48c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b44ef0bec6ae76af9fa33108b2e171167326113b60a4257bf9cd7cfb8b70b07c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "660597a325031fc59a84fab55a69aa42a5df8d526a01ac9a3d2edf67126ba09b", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "39fbb9d8ebd5ef7d1722748f70409d72274d7dc21fa9b49613e06ce00f391f7b", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "31d76f680ae7dc46ae7e490a2b82fd4cec2c9af04aea8067fe06551a6c7b1e87", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "414003a858c0d081e53f0f20a56454c220a5ae07e54e2cefe0d51407c2d0e3a3", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "fd413d7b14729264fffccce60d37cf453008d44b1ada3939fe36f7996598e923", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "c93d09d47220a529571b6ba6f8b03f9a84ac7c793b526ee1c10421619a37f2d0", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2535070b7d5e3c868c2cafefc17ef1a63f917e39ed609bc2c1367cb1082d59ce", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "72111105c28708fc346dd8efbd71679ea96ab184f5cd73416b167743f0eed083", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f6666732afb49cc122ef2307fb93cceca5f08e3e4fc6e2aed9f0eee5551ec47c", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "c84b591962ecbdcd1a3b4f258febe906db01046d27b9184706a519fadcd0446f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "543166fac323ea641a8e9b67ab98126aabe664cd2be72f505ec14e4bbb1c86eb", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "5bae4a55a03d5637d110957f096d0175bc2b063d049338e44cee44e5270f443c", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0c6ee86f9b9120028b6a54b64ed1db1dc4859829384feefb2033b47520c8034c", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cf2695843ac9c70dcb91e42264fb68c66b0871eb874a567b44c9a5ce218d55db", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "d7bd0e25fdf3b6cb65b95ac51970f5d28ce537bc2f8a4c3f9e090a6eb4a6095b", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "8fd2cb1e41da1862d86becc4e24a58c82238b5366e1234b0c473bd58f48d75cd", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1ee3b9c657288f6a18f74c1a20ce4397f6ee7dd85d35ca3f4d1bc85697ff964e", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "44b914eecbcf38437d801ae569b8da632f76184dc42425d9bb5e8eb22b1dbaaa", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "3a4721303ca891729200c58afe20c6fc92b45b4b9d6bc84b94912a68e1a40867", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "6296cd301a0694252ee58c218f4ceabffedb209f08ce0b15d3b3d5d253a680f9", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "20c9ec48a3122f359deebe6bd4659b6ddf2016cee427ee888663d46dba4f3aa9", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "db9ffa0d85dfb7c38b9ab50ad272656b384f02de49483b2e58ee2dc05e18b72e", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "c7c1368201b8cf342506e0f74b55570908d878a9b666bd04939863aa53f0e5ee", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "15c7e9fdac942d6ca2cda8222854f7fdb57f017bf0230d84066076e91d27dbde", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "98c9c9ead1a0c39e2e48292697b8cbeb5c238279437d3a6c838d2e853dd851b5", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "a941669b828e4e740354aa0fe5d45852e48f40e692a6bfe7b2c4b3b4cd56422a", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "59323b8175c52cbcba6a7edeb4df10f186eb8396a75e5960cb7d4e74d8f0ac57", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "38033f7db4d0744691aaae9a2c931e2789a7671226be90f5a3070fcbdca6b358", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "44bb6451557137a12e1eb54c67900758f9ac72ace902be0b36623c77c04c8131", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9cdb5e96d3ebbbd676e9353d15ddb5965322e97ff446f933bc1bb2298eed8374", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "153855e747dabbce0f3102ae71cc227cecf38f3e54f8305ab68a314212296663", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "347664c8a959bbfa26801955fea3c0b8186e16968d6261fc0df3566ac9f82610", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4e4801a23a5c044003b38a9026aef5dd40f8169e69e7357e52436b57f2585e1b", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cf219892d7fbc81a74133d11cad89ad8bb73b08406f7d538b889ab9ceb0050a9", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "786a4ff04f8fc543645eae6ac33075a08c32efd3d92cb7b95f5746152902d149", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "388845ea867ae63588eaad720440148f60a5d2c0a29a4b6831e9d399a8143641", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3d8bc8e1613153a51b1bf2afbfd616b2908e6ef45ff2375251fbf3fd92ebad1e", @@ -16870,83 +16870,83 @@ "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "769e04df8c93cce199ed6ce3d3b50bfe3eab07120138a19102200047f4fd2281", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "68e620f73fac95da1d1c7aaf7422cc2468dcbf8bed168434d29a9d49e07f443d", -"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d8084f7db6835f16ac0135370944370cbc0ac708314d7c21e1bde36ce9d6d109", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "f933ddf4bbca11db97732486901b7a2414a2d2ef36981fa3422077629cc10826", +"T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "fb7e9294ec021f830c0dabe09313b017b72abe2176afb4cfe487a7011e1f44aa", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "24d82bb9d8db0e7a5e8e138bbf6e839e7e78ccc857cd4022c30d56947e3b9b4f", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "089e1bc6caab60aefb39a3263047c0db48e160c3b7973fd4e9b00c7e9877bf82", "T3T1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "e12c21bf360403793db4c74d4f98950b33e49420c1b51a7a7defa1b2ff93e5c8", "T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "d5cc19043c14ecd0b72e81b686d88010b14f4e91fefca878d498e004cdbae066", "T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8e16bbca9ddb58d435311c50dfc7c5311609626295e70a36af38a0421b42c646", "T3T1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "8acaf7476ef6d2bc60f9f5b828ed4c682335fd1c4d6b2a95a6d1b8fb9808bb56", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "edf95354fce19a6efd8ec49ce6040d8dbfd2233da0375ec78f87bea973461f8b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "0933f3a2617ac44fc7c8d2b09bd03591ea5e9d15d1e1aebc577af899b2674b1d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "1652b3bc4f4279b2250f20c542da6b72e35ea6b61278f6acd12d3e740b4fb618", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "b4f51c9ca11abaeb10de883704752c11b7e711c9706c045107a7fbabb84a17e1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0e4e5be1af1c5f2e6b146dcf2dc3c030d4c5faaf1bb862f08b86625db4095431", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "35fbdcf8d62dfb1c80dc29fcc5d84364dcf2ed4c6596233c0c437918b35d40a6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "b0e41cebca68ab278796061c83c7d2ed641cd448dc1a629889b46c427ae883aa", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "518ebcb3c89c91033be1d07e547910cdf0f5e3d45b552a310457149487a714f0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a31bc0c1cd10e656f24f967a3c8d87e38df48c13838cca08e617f00e5f15b07e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "92437677fb51f22cfbeb34332e99303f26e2e717184266e5d5e313a64a10bb05", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4786a083c9c8f0d8ce776543d1807b817132c10913d296f97686b58db7d4782e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e4828af0717addef94151315b899ca4e4758f39bfd2330c34235a3c376f8dc29", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "9fb985fb106c71fe656b8992cbeafa060a06715d86538982f814c0fb521ce8f7", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "7ec34ac5bd6ab7388d824213903414d4eb32ab9a9501bd62eb898de6961c0e4a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "253e48ace98a4195d1a605c198ee4e50880b2a6368612eb433a5b7baaf77f7dd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "7ed3ca9fda7a7549ffe474a8188160a978a90a4882d3ecd73f6b04747c4486e2", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "01374b5b1d28d2d6e534cc0598305d36619358b277357a9a7dee3a088def0ab9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "aae145433e5c20a2d4d6cc5e9848676b686a12e6d6efa1cfacc1b8edae3f19b1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "047ce6bb6509a3a90eb73ed9d597f066a6104749a67cfb6e811e5422160e49f9", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "5590f65206196944b20c052ce4bcf2b9cd8a83475b8530ba024c4387a7b94717", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "79830e041811f7b90808db364272cb8a938d5046f042bf9635b5921fbd38f58d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "79830e041811f7b90808db364272cb8a938d5046f042bf9635b5921fbd38f58d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "db798053ba8f8b7f726ae470c174d87c7e6e8d38132ab5f0debfc6b1d6baf942", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "b9977bd994efb7470a57eb320f7d5383ccdf203ed5c54e40a7d0810635f2dcbb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "8db27ce0f1b9661a48fb25efaa27702a0921030266e65ba82dde3e12b25adaea", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "101e9f2239a27a5d936b005fc8ed1e72bace72ac13fe9fe6cb2e38493deed892", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "ccdb5f3de8ab683ef7da1866c462182c25b43ae49ae95ef751a3408c8221433d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "0320c43d86b8b6b9896f53f26d808f72f8f658c2cfbe80016827c7fe91d863a7", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "ce94a5756918b2a34c72fde6f5d5845ddd8e64a5b85281278a24a752048ccdad", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "0e75f6f172296795fa5acc9f0da9219f6f19331d29399d87c31186b49bf3f1c3", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "bdbe3c22a0bb47ce2980bfbe77572e62b4ebfcba0928aba69b871eef3c6fa3c4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b4c2abe3710ffdb5c98242cd8de021d54c4b024b91d4e108811519d4f7e5f159", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "12c9a6399ff35d6a426141e9276fc7bddc8f003fa0c6e90644e475862ad26d9a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8abc50f986c30fc470ae3a5964143c0e326fa3b612684afcf69d322b4a0abc17", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4137dab63645027dfef97b3bd3a4da74280e637b457a8108f90105716d522368", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "5f1366a8e80769574cce8870f3e2630cdfec40a37a960debac0829b22e095ccc", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "0c7f7976c6c690f1eee18fe334a8ccbf10705d11a519460257356e121da9aadf", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "fe46f2d10deeb80a304282888c6581466ff33a5159807c4360e5afe83c249a70", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "84fc7e266d97f261186a0cecbd446e957e9dff9910d00660917fa4b247086304", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "21095cfe08a1abfa2507e119da9348ed43df6d1e942188e0f38ec4f71e9cb6fb", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "402ed3927a1eaa94784e662915d4e5200f62df38d3952fc6ffaa937166564f28", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "91daa17a535341c1202665be4194dde61f2ed61b64c32e2346d44849e15daf8a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "850f15807eee3d90e5f4ef80e8cbf5bc576afc22fbf62fdd2fad2ab76c86de5a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "e80f4a6e01fe9b958f53b38ec41e5ed69bb73747584448e071b82ccb009ed21e", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "48da852f87f377ad7447c4a0dd44b6216244e22b4fea7196a0333d5a21f0abde", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "48da852f87f377ad7447c4a0dd44b6216244e22b4fea7196a0333d5a21f0abde", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "dc2e2b0a1ed20985e5fdd4ead56d752933a9f96511a01b518e8e8c7806b3845a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "fd418a0ab03e68a7e8f0abc69fb19dd84a640a848b7c19a7bf116b93f450ea74", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e617b5493245e1dc696aece6b1debac4b3cd3ecf0e0a646f848b63df89c4708e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "ffe9940f5e8c0869a4916680a2705244e7d3796332948354aa779e706f0a19a8", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7044b6c64a5595ea5aaf3f3c8e295e8dd137ccd4c7276f796f46398d13fca696", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b565ff7a9782b7d0fea210dc9823b94b04c17955f4f921767effcf6184731d6a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "722c814892b30b8c7ed18e8d2bdaa37f08dcc8ad4d15b85c156f722cb35b6216", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "aaf74b54a73f63b4de573ab1a5cc93c2bdec52a031734f9a10dbe3c5c6fd36eb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "3422d34048583975f24f9057d346d21504064daa09fc999b90adc22f624ebc0f", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "c84ff2a8792fffee70111e1c717e358e06013f3cc8363dc564b4a353179f7dfc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "d56f41ef675cb5b56330e297957995740cf4f15cb94bd03a80d536f89b2c058e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e65f345b53b5beab3eb9055b60432744c9527bb8f3b21232367d023d62e037d0", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "a4c10c4ccbb0a98ab8d178382e001a4155ac769f180bbbfe92710d1ea31004eb", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "a52868eec394b88d5e809e03f1f7fc9ade16ae6d219d53fdca0d626b502fb85b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "aa560c4ac376e1a961390cf3a94c93fadb67b287af5dff95b5a3aa09da0d7cd1", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "feb18aeba6e1dd5d4ffa90dd38082775d85cf997f8df99148d92e45d447c859c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "8e7f00fea771daa76e958aac4de98e640904f1ce8425a565bfdfdf74ed792991", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f79a376ba82882578f50b5c4724ba7d44773087466569d49a3fbeae86fb69e94", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "09816f9d091fca398a6bfaf5c430d581dc2776bae055e2c37f384aacaae45000", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "fa8ca5e00c9e328f9eb1559c36ce7c455f69dcffe920f3550c7ad98cf23a3b70", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3bf94374a18e040f667942d0a687392489f1ca2e2ada64a0bd20dd65ff353d86", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "3d8e1a1ad77624937d4a170908397735281223abf6a05e318ab622eaee5edc37", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "f75701cbfa5eb85d72464cddf9457fa7be71903ad0a6cc973e6dd31a360cd8b5", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ca1cc198b771b91fee70b9c7840c76675604057764b1f03a40c7fe0a6a8808cd", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "4ed2636fa8e3ca992dbff2100739604a2fea940d11e7b95558f12a3956c9b378", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "900d218ce1140c9e716017a10c295b575884cddbc63162b9dc69cf7bb3a8525b", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "a28773d660b0259cefb1bb4bef5ee1ecbdb3bfe188094e81733682ae6495e46a", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "dacb0c7a7ce1174003a385117a3432407c96e3daa2b50b03a7206f9eeb6c1674", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ff10f8e302103ee1ca8fa90ae98f4f996981e13a0e75e5ad9b39b4ff77ac4d79", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "8e9dd866c3bb608cb700b4902142fd877f481b6c72ca1d6000668f58d4deeecc", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8eb3a5f85659835789b35bba94166777e30fc69a0667f651edf198f586dc78ab", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "821736d3f8666fa307bc3b92401f29d332ddc4b2cd7bbb3576b81c34e9951662", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3426a160f81e10266eb323fa2940e120beec0308c8598b76bf58d9a2bf570714", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "2e2d976c4b5c349c46e599f79313ba921013d8e2e9d732c8bc6a50ead9328590", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "5f8c24399189c57ca92828a558116261bc8c31980f707c2d11984d0ceca5fbb1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "c790cb61c6fb0a25f23f28763d6517ca86be121f8acba111805ffa75fefb042b", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "bfdb623e0d5d2b000e3f171c462528f0f7ecc781563d9418d21da5deb1199085", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "367cd0647e4bc805302c497fe7614debb8ceb15867d086f19ff0fa52c009aa2d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "5c158f1bafe02114a8e5af380c34c8406c572cf366d7985653d8eaa4421116c5", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "8e7c10f719dc3d85f941fae2003b19aa9a2335a951ce13e470a252ddd649176d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "16709d016f151a66c352e7257064b284f0e17d7f14df1ee7b23bb4043451bf21", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "ba359640d0d27de10036a05d0bac8dd458de3d7b0ee6f41ae8fcec92ba044464", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "78da3062b2c7811d811cfbfee0a947152eac30e61659c9e7e6960256479c1cae", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "7b4e96842ca6a035bf224aa3ea17ae06bac36811d4c03b376fb934664e25ab66", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7b4e96842ca6a035bf224aa3ea17ae06bac36811d4c03b376fb934664e25ab66", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "f6ea87773089c04112180d380fff3d7f75666f8e2a81b014cfc2260045bf5846", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "42a3a7b3b704fffb6574276605c0cefe980b5b05c597d65aa0f80585ae3580cd", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "ae575d34147f7dc4a200e546f40d2af07f9406c88553a9ed40ce0414c85f5aa4", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "2e9d5b349d3f2de643b5c0578b4fb640db6fd5e6131dc4cea94c1321e570492d", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "54375a6b5d50022b83f7e863a72c626197e242935a703788c2fe9f1a9fe33d14", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3ebff6657a2d58d34854ee7eff95603a4469034cf924a6678f1e5a2907b50612", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "3f1850c623517c9698b5fb420503a8b19b029f971b1a0943487f9741404ede4c", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "168e52edce2715974b49d19f276bcd3cf656ab75eef1f5085142321634eacf73", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "02dfa00832983afaf73fbc65947aa9972a5568c8fce9a0f7d8e8f49d018ca243", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "1b2a5d6a1f59bb9924ef770f78e4e623e22b91db49ec168d8c8c86e6b6a7cdef", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "cd119740a876116fdfc18b62858368e2e255eb30aa1af82241f8f213e9b65f0a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "78a1adf8f940ccc73fa7d865e83d7df22c3c98540cc4895406efa8a22e14d3e9", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "7cad8285eec2dd30ce8ac676fc14890b6e9c4c931bbcb63f765f6b297d439848", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "386343143b60b2d6cd0990858fd99ad50ac91f1fa2bd51447ed8079ce37d8640", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "29989df7848fef3f7edff9875d29eadd6a5bd3776aaeaf305954273a966ffa70", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "2c3010150f9fff8ad02edfc78623484d0d3190aed33355a4c8f3c2e07306a005", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "91ba116a4fd4a0327bbea7ae6967822dd071976a5729b45c81f5b3a4cf44ea7f", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "df19278c27efc22e5cab7650a877f975176fb78cf8b749d919d1841648d7d320", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "6f52fb1614a19cc08a7dc8a3c7860da11a8974c13d810aab7706f50020c9dc33", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "defb56c834791c626cdeb7ff6f643a7019831ec02eaabffb2cf47f42feca2937", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "2c52109edb3e13cda97d983cb37545c5ef75bc214cb5f8fc67f4e02da3c21376", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "8208ed04568249a0a42ab290e989da9abd788ee3ac517f0f3b13ffe6d299fead", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "a90584c4af7cc7d7e5798fb2c48e89bf93cad6d45c3af02f21f8bfe9bf8cb7e1", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0fb934a9251728c61b71e8b305958ffd655a5d95d5fa28710f5f914d596fb7d7", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "e617b5493245e1dc696aece6b1debac4b3cd3ecf0e0a646f848b63df89c4708e", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "6762175b4e4939e989237f9c3579308c2f84985ce1cc106cb8a494e3e50c9820", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "c99e6f3df371d72047f6a10c12a0dcdf9cdde0aa76b869e7310d6e42c5fa4599", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "0b131e75a7f5d0db1d169e8ef293ed955919ded7c95544a60b0e2fda79cb8d2d", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "899fb6771645b4c8d0e178cfaa8393e3564955b3fbde0aca0bb34af5919c4f62", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "435d29b6d2842a9d756090608b616829776b319beb4ae640523710867ceab5c2", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "a4c3d9057d054bae3eed98c60e5a24ed56c6cf52bec7f45891d2dfd854ba4704", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "53c5dfcb48aabae6c3e2411c707ff5110699dec7385f0637931e9e37683964f6", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "b801357563512243e365e575e279222aebbf1ff02e8c4a5022ff507e75769774", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "792d3342896d17d22f24fb25c5a9478be075794dc04fc9f54c2f5b7bde7d476c", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "a6c29b18e1e27aedd728b33ba52aabfacb5cae6ec3b8303106c18d717ac28a33", -"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "b29cdef3935dec9b754bfc05a305b1b386b838b691a9653ef8949aaa41d5bdef", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "7b638d45c447f8a6418bca78ab2d7c5cfdea35fa94cb0c400f8cdb4b8763ecdf", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fd924f33b07ae0755cfaf27d44384874a4bfcb7bb83bb0026856dfc8d25ac195", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "7a0703dccc4287d96aa4a9d7b02716c65db2b12e3327e23edd45f8c404d27eed", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "5430106bd1e6c9c0719015495186f3833f069065e08317df97dee162d29eb22a", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "09d5a1b78d9f38c2bf2e655a677f1a0af4e24947ee2233bc4ed51f07bf32b442", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "e3916934709aaa0ad6d7c92b93b09c192dc986bdf49850e15ac93a5dacc3d29b", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "11d0cef68e3bacce1ce44d7423d3ba4d3512c825cd58517ca8aafa715dd48b31", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "06e9c364d85b03b034f542d6215a7b261a583c7e2f46b6cd3f80383f852890b1", @@ -16967,70 +16967,70 @@ "T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "c7b02e778bb8339c99e8ccce81da2712a3d9d987c39f220d74908d0a78c3b4cc", "T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3dd06f1f2bf3c8d19ebe52c5a9bb710138f15f7cb087ac9061abc990b4de870c", "T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "fa855a4863750a059589877ea79ccfc47ade9cc092abb007c31db5fd16869820", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "70ca306d39dbf5239dca097f5d124b68bca7f6a7a07439ade24c676688fb070a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "68228296764a46e3a9bb54c42633696eefd1d93b1bed72b8390fc1eacce5e41e", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "e47e045a553778a32485e505de5f3bfacc21f67010162abf1559ef450c301a6f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "f99c5679b7a0e3f6ace63a16916248d6fbed24f73ac30e4de130574ecacb68af", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "dd3e7a3dd30c0f8c4a9824c0b1bde86e7dc82749ec022551f09fc59956c6d135", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b50200da6be1c3a375414b2a4d0570686b33f05d7826999d80229417774bfac5", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "4519b490b5973ee8c24e5a04f664337a73e382fc120c8a0858bfe8ad92d9456f", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "8ea0845a94fc0a4424998996c7980e7d2eb78f21b3e9b53a7017d0f6ad62d375", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "2af485e80a75613419f9b6ef96f758f2671c0de6f01a2b36116f2566065b8332", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "c8644622cab34daa123b9bf808705b312b1e92e08b493e31260f602736077b8a", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6b6eb13b615abc6fd19baedf5f082084c0af385cb9f08e2fec938e4e8b2e58a4", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "f8d2798b9332ad285193a2f10b052145af91e67ef9b267868de6c0b8b2fa9e19", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "3f2ec39941021ef44ee5b6c2051a9ffa2628acea6b9120797666469de8b68e8c", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "4dfe707450e3d75c47fa6729f48a8003294f1723e3066067152f9ca998e42854", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "c09640b1b5be6de3d1bdc67c0ad5bed800aba0d4abc58a8ceec5174b7abf87cf", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "6ebc30bea847ceeb44864283effbaca053b8b085bd6edf0a9d854e241ea7f98e", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "f49ef66e4f6bb867a23a5ae8ec6442bb2ad3ac91ba10cb07dbb5edd9bad8d258", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "42776a02ea66b70bf60029ab616fd031727c66304892bed7d6143d37d8a54e45", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0776267db6eae356ed6e970af2d3784e04fc1ca148e56d31b5bb9ccc5a1cba36", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "894225e070a7b2a93711d74223cbfe906d2f022873a08f2f59d190932d502796", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "cc8efb0ee37b353ed362924e6e0e883e564afd2cab0bfd27d16e69439db84f75", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "7624bd81f09267e30e75b34c13bdcb4642f06a60597ae54c5ec73f07dd8a82b0", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "c1e86790142dcdbb3663722d0ee557530186b7b45163673fd09392a4ed2cc076", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "c60a62e72588cb19486ed57b25db71c2ff662f49d3f1fc32026acd7424325a34", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "977af261cb85f36c70f0fec1d0a7a9744ed3900611952068874b373e5da26103", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "cff4aba8818839b721baa5c9e05395d54f3144ff7f55b62981ac6b07c25db2af", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "28e03214922442dbd61eb061226171b37fb5fb1c267319f057d92ff705b23129", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "1d0b9939a942f8fb665ed0ad1346b1b15f4c2de4d9060e83815a5166d7bd5395", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2480e92bb23741957a33c55727e1107c89c3161e919eeac7ac571833927030aa", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "f49ef66e4f6bb867a23a5ae8ec6442bb2ad3ac91ba10cb07dbb5edd9bad8d258", -"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "2301f38538123cb20a4688800cf60635173f8f4465577d68a89f012aa41b6a2b", -"T3T1_cs_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "5b819bf081463e339f3dc0754f84b8d69b1a8155378d6a1ef4f206b37bfe1eff", -"T3T1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "5b819bf081463e339f3dc0754f84b8d69b1a8155378d6a1ef4f206b37bfe1eff", -"T3T1_cs_test_authenticate_device.py::test_authenticate_device[]": "5b819bf081463e339f3dc0754f84b8d69b1a8155378d6a1ef4f206b37bfe1eff", -"T3T1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "5b819bf081463e339f3dc0754f84b8d69b1a8155378d6a1ef4f206b37bfe1eff", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "10861ca732e29baa2598872f1281dcf03009939a2f5babde882d975fc11820c8", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "28b513d5e54a5a4aae30dc27da691ea50c294f33dca8c570a4fcc0b1d42bf516", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d5b9ed0e7806689c76cd5e96c4677ea91fbe4711a476ffb744d5c7338ebd9d9e", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "d13d835f0731b5f5a42ee289d4d96edb9ee3d62d58529f91cb31c069515128ff", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "1c8e9abd480546ad3216c2a6b99e7462ee660ed96475da7c46b5ffe423c3cafe", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "14501ec1571c0a8393007e43a8cab1aac00feec46828c5e608061bbe7d337e3f", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "98dad1ff14c6e206fe5b1ba656027095065d845abb4681502d25935d75c35493", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "b64987056433d94220e0db0c49e04ff0428fde0327ba3410af84372075755f2d", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "3d952687f5337a01519b98941929b6bedb3ea0bb87f1b464389e0588f4e73d39", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "4f01ae00ac123b2632dfc3f7f7ede3d3b2d47bd2a864ebe6c259a1d8382dfd92", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "4f01ae00ac123b2632dfc3f7f7ede3d3b2d47bd2a864ebe6c259a1d8382dfd92", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "d88fcb2a23ab0ad4a5747f435d819745327892b69e1eb5d8d66fd3768347a44f", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "63f22181c74b7f7aec79d447676a95a4f62c90b62dcb739a07f6f5fbe002e07b", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "70d2a95e1d5b27230a1eacf12f5fb96e3344b88ce6d05e85845a3870985ded4d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "459274c2a849f3fca4870200ff60f495dc819f904214234bb820ad8de745311e", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "5e4d9ee1318e60583533975c8e427515e6be18c9efa27568a631307b52297ef3", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a8db3d8bd5518b05246dea763997dfcbddd9062c10bccd4f1b3faf76980551df", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "f0aabcbfeab887f178881111858fa8a62fe84c13ddd2312547ad93458eeb1302", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "2e0170037ba3df5900fda0e5054d01928c21d351353645c33b6a22a3ad5a32c5", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "72fa7b6a73fff4879fa926988c299daf0922ea6eb8318933c288cf698a4afbf2", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "15eb5d51e4cb73068b564e67fed0b1ecddf908512f9bc42916267e0f21e33690", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "574c607a32b4fca8ed960f5c991db40e13d550ff2337ca40bbeb737f60113063", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "99172df2b311377875c94296e5cd73d17f7eb8b237f93fb30bf760fa297a6d20", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f41f3eaa8ae1f2ad95fc1ffeaf70851c987737f681a4d25f20417bfbce4fd80a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "d924e76e2256858ed97d34830886349240c85870b387bcdd62a3f6cf2015278a", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "002365e66dd5529b2bb844cbfd902311b901dca37d8b534a91aca40a6507bcee", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "2595788d6a6d3fe3c897d4c61f9505f73618ce2331dc2a1759a91714f44927db", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "214c114b3b7c9b305b97e68596384d9a680f159e5feddd84d99fbe2954b1544d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "62c9d09cdeaa6596dfa01a0cdf3dad320c93c8ba8ec406507ee216b48337eb78", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "79202ca4962c447304dcb8d266df279c85cb5fc7e6f829774dc73cce3fdffa06", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "5c6f8a1320240803dd100dd3c993dd6148cafb1dab04ee2a06ef02e5ee724aee", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "7f447afc4b801269ef7211d98c7f41d2e77e8975ed3a24ba55fbd066c97aad4d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "29f5b334d437b98e62a9f14f168938f9ff519c220a9e1c62cf35a10a194fdefc", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "138080ed6c721ae231f3c4b4e1f420ebfb8550b6a50719e914e89efafcc1bce2", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "ea42389c619c49528e83fb7c7a22661a33757cd1a38b9f25a21c1711649f7c69", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "22493bdf432794a89c3844d09a94c74f6a340f0bb9afaa5aabb290db61793a89", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "be8ef057fa5f44801b4d6e4ce3939a134fdc7aa09b3d615e98924c69bc1f8968", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "15430fcaeb598af631269e025f7ee4e5f03483de373890e29dfcd206ff601338", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "37ec02c63d6f88aaed234f6767f3d40369b28c512a9b8fb13bb788c62d015279", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "81412c536e141992883ee897fb75211c6acaf9728d8b65fbc9b3f15223c8689c", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "214c114b3b7c9b305b97e68596384d9a680f159e5feddd84d99fbe2954b1544d", +"T3T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "df7fc27e180ec7946d72d91553ebc7532deb06100b4bc7b473745b317a923f2e", +"T3T1_cs_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", +"T3T1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", +"T3T1_cs_test_authenticate_device.py::test_authenticate_device[]": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", +"T3T1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "63e8c9c330b4e881feb9142fe617bd48d0ce3197a2b629e606075db3b536a957", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "103856982c36a714a79a3119db9f8a3ca5103ba3778ffea714920694f195e6c8", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "0485130b17ad66d263f47454cb9a32786081d91ac04782e6f3b987233a725a27", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "0af0d816e46243f4cf974cf46a2fee3870f373d1cf324bcb2d29761702f9cc79", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f8941c5550563008b76d5b9cf1acc7d1cea2d13131398c80bdfd0a1500a7b91c", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "65f1e11e857be6161480eb0b4eb57b29b32734a22a08472e2c78fa84d036dca0", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b45cdb775bcc6b5d5b23c42707a093bf15b666d949c88b8588dbc1fbffdab90c", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "08b8a81f65729ecfcfabe316944944863446f47bd61afdd3d22c0a779efe8fb6", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "cc7288182836d3fc248062d0f488fa5156e6119b99f7a52aefabd5172acb5470", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "925d8934e9e307478bba2a4f4042b66d942db4c9f708137aa984ceb948d9225c", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "925d8934e9e307478bba2a4f4042b66d942db4c9f708137aa984ceb948d9225c", "T3T1_cs_test_basic.py::test_capabilities": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_basic.py::test_device_id_different": "2883e63b941e190f9906dd570bd047057552d363cce17bf8775a291a0165d170", +"T3T1_cs_test_basic.py::test_device_id_different": "b84f88ca55158174b5c0ee5a38695f9572d3a0a2477133580ca0b366ba446dd8", "T3T1_cs_test_basic.py::test_device_id_same": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_features": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_ping": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_busy_state.py::test_busy_expiry": "d4b91a858db64bdf1e5661a9e7ebd7da285cd8c244dd1bb38aebac0edcc1d6a1", -"T3T1_cs_test_busy_state.py::test_busy_state": "e348b727d32fcd045864d512ca01cd71eccbd8dd05c9173f4a0a5d79f9f44a3d", +"T3T1_cs_test_busy_state.py::test_busy_state": "5b0e81b21c8e72884e746da4429187b6dd87d2928b8ea90c4ffb04e7100efacd", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "e9d2f819046fea277edc6d1d2590c86d82e1e7abf31e31f3afa8d549f6d927f4", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "e9d2f819046fea277edc6d1d2590c86d82e1e7abf31e31f3afa8d549f6d927f4", "T3T1_cs_test_cancel.py::test_cancel_on_paginated": "aac60a7786841d7e70f40a98b58f2b338a81b16f1831602564755df9a5cc45fb", -"T3T1_cs_test_debuglink.py::test_softlock_instability": "35a919b49acbd9788cdfe2ee302b362a5ba9aacabfb24896533849f2f739a715", +"T3T1_cs_test_debuglink.py::test_softlock_instability": "ba4e25494ee7abaa2f48fb1f76ee3927d1c4d0604c4f2a76a3c42fe021fad52a", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "b3eb00a0ccf0406a85d623598121f40bbcaf37f097d34780131f600d6addad9a", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_language.py::test_error_invalid_data_hash": "75fa3a8df587223b856b112a130efaab476c707a2dc36d9540915038e534096b", @@ -17045,93 +17045,93 @@ "T3T1_cs_test_language.py::test_full_language_change[es]": "a36a4c3246d5924841c1ed00f423ef255e4db169f8baa9b9b45186c1fdf2519f", "T3T1_cs_test_language.py::test_full_language_change[fr]": "7ad0e0c7d828dae9aa96ae3bcded96d9c9ef428404f54f20d1bc20425204758f", "T3T1_cs_test_language.py::test_header_trailing_data": "4f31bb0aae025bc89cdd85c64432eb8fd1687abf261102c6e6a94d7e9bfaf4c9", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "fd27a6c0c7a5866a974d9f0244a04829c1fb62cbd09d95d34f06480ad0abd6f9", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "7177d8b7d1ce8e35fa8981253bf7c53851964ec9fa7cfca67acb77bf6cc3bb04", "T3T1_cs_test_language.py::test_reject_update": "ded5f116b38e6f0c64cacdbd230c33d061123a528742a0b11fdc70c45c4d2167", -"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "2c981a112478910c67d930767d5e43a6d590eccbc0fe74299e8e448795ed542c", -"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "2c981a112478910c67d930767d5e43a6d590eccbc0fe74299e8e448795ed542c", -"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "ba59de6d1f8fed698890b9dec33e6286e45554a7208a8a034e95f48e3a0e9328", +"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "4f38508888503bca37f7ef083c5aa8572bee6987ccc1fdca5fbc71d1eddcc086", +"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "4f38508888503bca37f7ef083c5aa8572bee6987ccc1fdca5fbc71d1eddcc086", +"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "bb92256c38039e44861fcf6d46ccf069709d213c4670275f181b6290fa2ef4bb", "T3T1_cs_test_language.py::test_switch_from_english[None]": "adda49d244490bdf99fae24dcb7336b22ab4ec0e7a7b4d276806e48d1455898c", "T3T1_cs_test_language.py::test_switch_from_english[True]": "adda49d244490bdf99fae24dcb7336b22ab4ec0e7a7b4d276806e48d1455898c", "T3T1_cs_test_language.py::test_switch_from_english_not_silent": "36ae0eec30003081208fbfa3668e3974897b032dd1e407e33e708c73cfa7f207", -"T3T1_cs_test_language.py::test_switch_language": "aa9002a61e6953692e134bd98df773a5099dd50cb61562138e7238a5818d2176", +"T3T1_cs_test_language.py::test_switch_language": "fddc8ab027e570d255471cb98cd05bfe1b9247119e8fb9a518c0866f9ec59f56", "T3T1_cs_test_language.py::test_translations_renders_on_screen": "c859df8d506ad6ad5f7dfa0c333196cb3b0006d57f120812934d5b2ae3caeabe", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "ec87c37acf291bb6af9a3ee384553fa3d3f3559dfc9e3b62bfeeb3851b883e20", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "c8d6941cf0d61b40c299e3a6e9d27a939c305143246f6d107fa73adcf40e5b06", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "49bb14829b282213a363bf2c6520dac2a15ac07e1357312ee730925d2e704d1b", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "2f85dddd2631b73d3db7dcf9a1681afc1c9a15949f603927f699f696cb7223f2", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "169170847cfb75d39f06e97d00057f305d25be9c2206d4c285fd706a769b6b76", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "d4cefffddd33da955e47a52a2264136ea2abb32cb876da40f39a5f0f29842734", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4741416de5b0ae9aa27367c5a7f9d5f7a3607d1323a5a12e2709df429dfc3784", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "8ea87fcf755fae172cf1a275dc2ab238f91f3e095e374fa2ff5e490962655d39", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "454fe2d13fcc9c64d4f2819ccef8c2603d93fb2567cf82fdf4503faa1dc0bf43", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "31bf9f496e7d1c038490ae63a677f2b3d2299e163e5f83fff755cbe677277e75", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "b9690acc5e625195c7ea2af1e70eaf9825da8c83c8376930e370c8793e04f381", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "c241c378463848274c8e9914331c59a0b25dfb9c3ea8fee4156407439c8b0e3f", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "2ec42b5e9c136922ea119ff3ef760d3bfddb81473b4177aafab03ab391b1a1ed", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "423ec70528f52faf5372dea72db8a21ea1e8a5bf3ba18cc4aee8976bd98759d4", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e7f89c634c64cfcde769581e9f09cdb090a6c90b7852275df183613f528858d1", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "5f0fd7341a7f6107f1efa68dd2ce04718b0508ee2026b37d3f9545aad21f63be", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "151ba8a3dcb7617f2af82b82a571dda237d1d7f742d483021d3e05411c772025", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "7ef37ea90132c29dd5e3dd85f5f03cac4b10cf768c9111f45dda5c9fc022051e", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "59a395e32d04dc4bccfff02251299177fb243021c0b67b3a70225bc6fb2c8561", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "80d40c775449eec775776a66bb861b6030ce593e98ce2d253df4dc0dbf93a5ae", +"T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0eed526ac2842f7e35e9c2cb5684d622178b696e1c834661c62224691a7992d5", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "97a766b1537dd43d112f397be6d79ebcb05a6d1f5226b976dcc05865c97031af", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7c7edfb85179fc90c9678142163e1832001586238f1638a9bf8300e097085904", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0005d6733957ed2f452b557ee2db39125e774b0180274b6fbdeb041220becb02", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e549eab5fbab80a949482faee7e6757c63304406539d42135c87fcda42f33301", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "de68ba0aa25dd69af3a7fb10e8054861e2244088f65882c9abe04e2679fb4ea0", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "dbc16b2d7ad7eb983f5bd5714810a1b8470cf66752ceeee6437d0a235ffd0c2e", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "36cf5a34b221fbc8ef8d11e037ffb9289a4daa15a458aa84ba2942fd751ebdae", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ba042e3d148aff9914135de961e7ab6c237f7b672e1c49968686ac49761d7f8a", "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "c9ca005679502266318da239e432a9661bb71967c41455abc9a78ab14ab16588", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "8672624f9269d4c29e8f2d20f6a887c94ea4faeef950c748d3832cab22488471", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "de1592140e59c272831892af67974d282e247194969534dfb80f67c828ae0d98", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1bf928b5b5de43abaef3da0ddd03e853a0a948fae7d29daf2425cd6f42735ec5", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c9d564370ece24839e4d3dc59a19cd92086cc8f0c7cc3c71943f7c7fc5ee27a0", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "ba6bc1794986d333b5747c3e35504746ee4071d42c0d3a8d59eba20d9cabe77a", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "ce6bfa7ade5030ea5c1b0ebe66ea337717dfe162a45ab271eb8901316438e9bf", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "31571ef27a916ce4e5f8813b57432788f8c4192b154c04877dad132eb7eb836c", +"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "bf6ca148422ae1e6ff5b95977bbee36b3563a267be6a48bff9f406eabe906f7a", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3a90f368ff7afac1b2e44e1cd41ec3d9a9f2ab0fa19991d86ac26e827f8cd7f8", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "573647144e5242ed3df627bb38ea77c22ef15c76ce809e43a66c2945743f4b9a", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "1417e2be1aa070c75e14cb290340bc984904b52eb68646cbaf1ecc3996039143", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "bc0d36d57d758261bc7c7004c5897e5c6f3873d6195b25fc7c49efa0b598ebb8", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "c4a9ad06c0a34099ec3df5cbc9f31ee511165d92f3968ee0eb175122997f5213", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "acf688788051deffebe8e2fc703d51dd8abb891042dd81c8e1dbd29401017ce0", "T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a596131e04b11288252167292f6611c4f327a97a7fd307661106932b99dd8e6a", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "0f7209d7a00bbab7bb93232164fa00fd61c5ccf025ca4b017d7fc55d19b6ee7a", -"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "ab0a7d76da244050b4ac6c47b04738cb2bc601f75fe9a21c510d92bd9caf12b0", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "48949d8079b59ee05974bec0c7eef5d3e43acf2942d253ddfa9c7b1a31e9662c", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "3067fb5faf6c0c43a271af08d9b66b0d27e22b10f1358cf8517adb922f866657", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "17f0ae6eee88cabbb45938d74bc74a162aedaad9c275877414810025c356463e", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3067fb5faf6c0c43a271af08d9b66b0d27e22b10f1358cf8517adb922f866657", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "3067fb5faf6c0c43a271af08d9b66b0d27e22b10f1358cf8517adb922f866657", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "d9a276eb1fc1444f2e321496daf1496eeadc5fcf019b8a5189778818604b389c", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "de4ab1963a99471ddcbef1ab97b292882f4aa700a91c38fb71fbfc19e2e6c555", +"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "2508903aed7d1bfe2f613e79f9ef4dec54d2a8d162848bbf343befd9d72bf833", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "db91941c10c2779342756c80b892a430e2f44fd75a82d0115a3f844922b43db8", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "b1b8f662a839ea49f8dd7477d3d93b0b06a89fd54fdddb2ad1f999bf2173b079", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "702b5bbcf01c469c217b24e7540390423359f6d6978e0de32eba5b6972d241da", "T3T1_cs_test_msg_ping.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "5fed39e039fcf65a9dff4780e32e39f748002e9b9019a11db199dcc5ce413e13", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "3ed0cbf6d166e1b416736f4b1d1e1b58ec8e16c27a99c3b37db81a03934327cd", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "c1a53ceb61e9acaf37eb7539cf99267fe6357a65e5c8615f4c7808a970614bfa", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "4f20e0c0081ba79e8f8b462188cd705d559941b372658883aec71851a6466bd9", -"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "2883e63b941e190f9906dd570bd047057552d363cce17bf8775a291a0165d170", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "2780a4d8692fce49d872ef3c4a37d7b10d5221ab82a5029f3a65c174ab0d8c52", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c7921ffc03197b2ce0dfa629b554c3fe7286bd94442fcca5f38ea4b383c70c8", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "929aba5a5e05532e2b311b90e1c3b4c5793fa320d585a6da68c89f52d90f4a9b", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "15634c12c115ad6d29a9f9421ad8f7dfa94253fdc897f913f8448508957775eb", +"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "b84f88ca55158174b5c0ee5a38695f9572d3a0a2477133580ca0b366ba446dd8", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", -"T3T1_cs_test_pin.py::test_correct_pin": "8221eb7ae04f946892b117dec3b55e0806321e5d34257edb02729dfb2090d22f", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "1d5d91a76c3b6105f565421c60bb54f617661522c377c7060321a7482b447467", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "d45f5d1bc6146d4791524b5f8686db0c680c625a8918469bb07eb839ccfdbbb3", +"T3T1_cs_test_pin.py::test_correct_pin": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "eb685e08a7139b71598fec3632d510c2f608270ecf41a3971ab5e5d1feca6830", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "1829b8c91e86299235cb7ef68244a3c5c32b747d63327835424ecb1f1469b67b", "T3T1_cs_test_pin.py::test_no_protection": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "5e9f1a952cf3a429ad8098599cfbbec7c7beebedf0df17a9e5c47d7bc2e868aa", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "c2e82b8c6682fee875eb2c88d95737d4bd40bab6d185a79606a104d72ee0218c", -"T3T1_cs_test_protection_levels.py::test_get_address": "82cba88191df81f6babdcf61ae18042375f25ac31e04f78c0684319f9d0305c3", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "16f9e8c24826e91ae114be16d6cfccc7313cbfb8d8d8fefe8be4cb51ffd349eb", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "82cba88191df81f6babdcf61ae18042375f25ac31e04f78c0684319f9d0305c3", -"T3T1_cs_test_protection_levels.py::test_initialize": "5246fca773f95ed7b8e4b6444b7d67e6d70be06cc6eda120f6f0f03caeeeeb5e", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "3b72389d83b673e6ecfd666358110b4d7c29e1e922e8070e23e073783e1bcb09", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "460f626b2827a52fac33da8e66fa69da27bef55bac4015cd51a1d286d41eb24c", +"T3T1_cs_test_protection_levels.py::test_get_address": "b1a709dc5a568483ed8471cb62c9bb53bf86d29f0cb673007d43e44cb04250ea", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "1c61116a8894e5a57b4b7369174bebb06af930a3d06afbbcbc62f5c9f0ff56f4", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "b1a709dc5a568483ed8471cb62c9bb53bf86d29f0cb673007d43e44cb04250ea", +"T3T1_cs_test_protection_levels.py::test_initialize": "d2c8aefb7f2d55618efd08138127a0a6bb3ac3a3821315fcdbd17af487aaa36c", "T3T1_cs_test_protection_levels.py::test_passphrase_cached": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "831a663c65a183eed8fb503d7e7174fd42bed61390c95daead4b670d190ed5e1", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "b8860b13e996a08906f850ce2964b179caac9c36da1d6431e98fc9bbbdab1f75", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "65cfabdb0bd5c27fb26fe1befdf775fd867a92b7ea76767b5f71c17eb4718258", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "db6c6f306ce8431e50d5f91bf91717888349806bb6b1e53d81a7bd4c019f1c27", "T3T1_cs_test_protection_levels.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", -"T3T1_cs_test_protection_levels.py::test_sign_message": "e81b6a058872b2a89a1a8b9a46414ae91178fe63f1ceb56d9ef569f81b066c5a", -"T3T1_cs_test_protection_levels.py::test_signtx": "13b94d9440c895feabc8b03b392f43d5428ddf854aad39483041d7053357c4ec", -"T3T1_cs_test_protection_levels.py::test_unlocked": "73d2abca755bf1de2a2e1b11ba26d8995a1c3324f70537db5ced3cb42bcbf2fb", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "56b031c77a85fe8a0f7b20f35733b7273dad5113583c0eabfd67fa62054da927", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "822494d84f36704f54d5eed55717d181504862eec3069810c08dd7e853b36d87", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "53e1ec9d505ace8ef18e42f028d7c3f3d2e6f8940b55d31e66ce846b88d2274f", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "df69d6a1ec1b82fe082a6e5905a29237772ed2ace43545f76c6d3632bcac553b", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f9440f17063c26bba72d0df14f8f43f18ad3c0de43b29112fdd9b1a083ba2941", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8f8179b6e444efb908fdbd33b250a79925dbaf55a66ca1e4bfe05b4983f31e31", -"T3T1_cs_test_sdcard.py::test_sd_format": "3cda5adf0b1de2c373b060003b594c1efca6f9a25d9662834918506d5b5b1123", -"T3T1_cs_test_sdcard.py::test_sd_no_format": "48a01dca18c8b6ae5a038da60d914bdac8c85b33b2b1e7a1f9ccbb6d28f7c69f", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "1eeef8cc9bccd1faed204870559c38fe9a33264d2151dde7a01d0ee0989f1042", +"T3T1_cs_test_protection_levels.py::test_sign_message": "096f31a06e9ab82baa5c0483c3097aa59d5dbb5ed17963407a222af0f43abf1b", +"T3T1_cs_test_protection_levels.py::test_signtx": "b9407e827346608ce2a6f9d291a7ca043052bd230826dd7e56a2ed872a5d56f8", +"T3T1_cs_test_protection_levels.py::test_unlocked": "a5824ff779c0cfe10198e90f2e535a9b57569275b84871e9fdd87f3761029bda", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "0036be1713ff4a4dc3772ad48b9314e6d703168231ff42978ec0b0df507c225a", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "090370e1ebfc625b843001a0fc08d612b5850a37e377dc8df1f8b997c01da815", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "0beb72dbd8548f47613041acfa125c20ef4af2349f4f5dd72f77e49c7a5766ec", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "f53c4fb776b02a1b054f26cbd0a32eeb3fd36bbee62168c68069e09e4884072a", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ec457b935f0eb6c44eb8b9c37c7f6a6007307cdede6bf1755391af434cb194b6", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d6fac38fbb412a19f85179adc6d01a5c78dd04991583e8f73858f788ff1f86b1", +"T3T1_cs_test_sdcard.py::test_sd_format": "7faa569163f0a2f3dbbbffd93983c8f0c698ea9386cb977f2e49a8f5ca49cb40", +"T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "76bc4ccbe9ff07870b94d7ad7331d198a739c7d141744ecbd4f1de35886e61d4", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_session.py::test_clear_session": "854f9fda38feb37900cff0189d51269e180f277cdf551e6367b8449bc8cbb09e", +"T3T1_cs_test_session.py::test_clear_session": "f11c4c2a1d7a54d5711f92699b47c863a1daf3d091fc2ec92a7428c43d573464", "T3T1_cs_test_session.py::test_derive_cardano_empty_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_derive_cardano_running_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_end_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -17154,30 +17154,30 @@ "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "bffff606d1a5b847502c5718e750441553d2565aa08736346d1597c18280f444", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "92152f415105dcf6ee4f25dedfa534bfe6fc889980347f91f3523635a4a6256a", "T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "54cd6564b30717319261ae27fceddee739c92ede64e6a9b6a0e192b1d3db0ba2", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "042095e96fc0490fbb5aabdaef412b82fa1308ff10cbb294ebc56bce339d5aec", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "df013db44b5c5459280f9307873532eeb8035340bd70a3c646e41b00a7a44b88", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "710b677831a4329fd5a827ec69bd01662c58a5f4560dbcd02a9236c7a5b4d9e5", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "785fd04f880cfd36d07e0da9d8697ca1dce1584371643615c5dace2128cb8e44", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "3270b710320ca39e87f19e36470cb5c772394cdddccb8be8beb2d7bdc1d52b3f", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "0696be676429e5347cdcb67d98f690af14baa578f67039e1955f1839a6859c3b", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "cbb1ac26b7b245c97a5b67f1f20f3e275a6d98158915c1b4685a31cfa395d9c0", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "a876ece188ef689725c02294badb6c686c92599b1517c833dca130ae94e4a6f2", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "5ea23242ad81f4a4b9d0738f1af19c8b32eec8080ad5a2b1f95fcc9657acefe0", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "408d4525bf79574212b04b84510c61866d301a91deb2caf692c7be86967153be", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "4111c81b60c6f789a62644ec47e12813cfd6e7d77c40fc787137f3dd452dbf01", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "90292a008ac75f9511ca594baa4e91f90cadc99ddfc3e7775157d74482460d29", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "33921ecef5ab717fb3a8e8f2cd31cd4f8bd67696a0e50f5d5ef5052ff0d757aa", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "a053cfc17b3cc9d949333d25ce8ef3010146124b802988e8803f07b00b4505bd", -"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "6398d5ea4ba0124d9b5b137d25105dfac025db8b554ecb28ca7884041aa9a578", +"T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "c86f8a5e634d46bb9e213275ca59ebb7dd57624660c1f8381e3f37b44b3687cb", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "a0ec5adc925d8546a9ee52224f874029ca989882daf762e24eb72701722755a2", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "9938e23983b3f11af45521aa0c2488ad21dffd3f75b28f3ef30885da3bfb7123", "T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "774d5723974299a9358b8c6321971abec584e01c9187626caff8fff1092bc93f", -"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "d02bc3fcc865dfaea3d9a447e590da6e82cd371e74f485766542b108689cab34", -"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "033751a38b0c4c16d2299e33d53042a3bab22fff43bb613b3ea090e5e1e01348", -"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "82f189cb1081bf85b324a1006bbd0b2917039005d3059d5cd4450eb33e039abf", +"T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "748b990a8eb65c96e9720ac5a339a058390c1546db631dd1cd65aac6ad848251", +"T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "8e8f8d7c9e18312b93627a202e55bb6b4ed48d2a7c30bc89493bc945fa47fb37", +"T3T1_cs_zcash-test_sign_tx.py::test_one_two": "e4375b012b97230a765d04857674758533540eda29111ba36ccedeb6008472dc", "T3T1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "699d6b32c383ae193a5258b9fa338a4a7fc5ec854f230ccb70d706ec7557acc3", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "12e941a273afa1f5c5a37070b65c22284c9324d25996fe2c1f1a061d1aea954a", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "d8b4f1de99ba28eb7abbe620bf42c67854f0118f1674df35c41110b87ec908a8", -"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "4d3885cd0f99214833a2b5940e0f428af0c4e367a4e73832cccc4c39efe5f2a9", -"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "ca8aaac1b730e8d5809793ea9b61efcb13d971c0206985e685c58850c8f88423", +"T3T1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "ec08463fe78db7fd4ced98e2c7fad39b48f622e4ce145938c9cf1712e79332ee", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_multisig": "87fd3ee5606cc4ccf43aabc7076d76833269db638f823cb92fa147cd8da4d6db", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "1759dfef4d3214e6131850455efad24cd18153b64b9d13eb06cfe0825a7dd18a", +"T3T1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "fd4f931367f1e9491e0b4f8014ca5002ca395c44c1f93b33bc6a0c5987a7f328", +"T3T1_cs_zcash-test_sign_tx.py::test_unified_address": "38994da8a2a11fbff3ef115bf11fdbdb30e8343ded50e0d983fae3b5cbaa808d", "T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "82be5a189446a500c2bd45551fff87a6b385f104a6a6347ad7a1cb1b218e2a23", "T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "eadf259acfb7e2a6bd8dacd22c4d9ffe53e44c4ae43e4aa3932ad52ff8af0d2c", @@ -17194,20 +17194,20 @@ "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "5c341f07af8ad9183f96d46c30bcabaa87ba1321331755381019f2220a2692a4", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "bf7ca3828609d2567341a575140312089f5f7e3a44653af95dc42ffc53a85752", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3a67b3b1d921e8dbaf5e22db1e287dd4866d76d6b0570d70c511a6d84e1c03a8", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "20194dac0e607e7ee7b49f674479100725cd23f3688502c6dee2bd613422de8c", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "20194dac0e607e7ee7b49f674479100725cd23f3688502c6dee2bd613422de8c", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "926aab76c93d938d8d30e77d1a46dbc7c9cf8cffaa59c783859f38ae0742ee24", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "926aab76c93d938d8d30e77d1a46dbc7c9cf8cffaa59c783859f38ae0742ee24", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b81b0e06942c76968c14934a842fe91173bc7c4bdce8a709f7febd525fc6c863", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cd514eeb3d391dd75ec906812ff8ef9b1e204e270d0bbfe5c623376e38167120", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "d24bac72344b94249a1f677c963913fde46742a773baacab420575b2d8d7f0da", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "46680442569a65b80d8e5e1ce0c4497aa8c6ae474739277e46c96e055ab91080", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4f1dbeddfb66c7f654782b4c5a1031dcf42bdf39a8df01cd0b0bb4a841d6c18d", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4f1dbeddfb66c7f654782b4c5a1031dcf42bdf39a8df01cd0b0bb4a841d6c18d", -"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "70593343dddd9ef0b6ad82f6e8e3557b5d6dec6e82d35752d1c0347da674ff74", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "70593343dddd9ef0b6ad82f6e8e3557b5d6dec6e82d35752d1c0347da674ff74", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "87a3a6cd2217fc1e6a76dfdfb826838fa421d8f20810c089f3704b18ac2078bb", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "88490c3fd2cfb62a1a7a1a4882d26592bff0edb66ca8d0e21c0b813e8563f519", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "15e87a6511e245d79391fcb7b8e0e8bfda9fa68e50d4dfa575caa5bdec6e6baa", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "7634954b129988deec9aee5e1ecc3dfd6c3064d5d72cd2401e439b8cc717583a", -"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d3c7f0c4e37273e2cd2500c828a3ab2aed62a7a25ecd0d28b9a6765f81235e72", +"T3T1_de_bitcoin-test_bcash.py::test_attack_change_input": "fd6f99fd414a10003e3dd882384a110d797d0361940134a947985dd6ec6b52e2", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_change": "fd6f99fd414a10003e3dd882384a110d797d0361940134a947985dd6ec6b52e2", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "c1a9da83589ad0725e2cc8af63e031be6bc2d74f41d56cc72a917c4be5d8f2b2", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "5838bc66fe04eee5518169f86d74f9cf5557932972d00cd9a1f54c9cc84e6164", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "9ceb74674ebca0afb738704776f0b545d841d2b3bc71d8e9c4da772a07476100", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "120d7004a2a597284a6213f84b7d59a00baa409a03edf437a72254c3605eab5d", +"T3T1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "2078ab00d9ca14ad9dae3cd755ce6ec37e5d37ae6c96a436d597410db2e56591", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "18c46bbb72a790326ed93bd768023fea44acd58cb31f355b63f3b4d33f04642e", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "87a582288dcf379188738006aa899ff6d371aa7d279b699827406205cf078f2d", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cca1adcd27ef1c3afb250d6babac3ce191f206532041cd997ec3e51e19941566", @@ -17244,30 +17244,30 @@ "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e9e12538e733a330291f341c3789b58734f63cccabd19f3ed9bb35bc805c2f2a", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "c3ac04cef5a78ab480a00b323de3d4ad028e8eccf054b2ef90decdbb834062e7", "T3T1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "274536a3298475b9ec3813273dd5595ce83af659545c67d7db2038dcab431565", -"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "fa20fd5e9030c728e389468406f05055563b4378e373cb9932b60b5104eddb40", -"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "c88249bbafcf8cdb8578df8503a00cddeef6205164ec07fc09bf3ea6c57491a5", +"T3T1_de_bitcoin-test_firo.py::test_spend_lelantus": "60839f44b914e8ef1d3e133d86551adefe339b3ff80fea7f7d1844aaa5012950", +"T3T1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "b55aebcb927d704c061375d9fd5181817f7f06d4d1b943669804de0543059c8b", "T3T1_de_bitcoin-test_getaddress.py::test_address_mac": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_bch": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "7f75c1d19d99d34b18864233ad70a33016298caf99c0ce2704ed5d3d9be4cf68", +"T3T1_de_bitcoin-test_getaddress.py::test_bch_multisig": "3cc278c7644a793a85709f942f37846d8e2223b5b7c4fe07b1913167a528dfca", "T3T1_de_bitcoin-test_getaddress.py::test_btc": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_crw": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_elements": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_grs": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_invalid_path": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_ltc": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "20055731f61f0c8be594956547e049a8b7454da01f713a6a006eb611572e9b52", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig": "aa461cede34400a6f7e3224273477c5b8be2894567d0fa5e27b71f057f4c6df6", "T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "fcfa122722882509ae2a9b6d1b481797685361de9764a386350fa416b67f6ff8", +"T3T1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "8a0cbf792bd98095573ee2025605d76f6238aa5d06b13a86f79e8e4cea110d5a", "T3T1_de_bitcoin-test_getaddress.py::test_public_ckd": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_tbtc": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress.py::test_tgrs": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "e0a396dff78e7ce4f5bfc7617bd08950883f29046910e19bd11d66f94b400bcd", +"T3T1_de_bitcoin-test_getaddress.py::test_unknown_path": "9f02faf09030180e6850566a340470726556727c1cbf1c1b2fcd2f601220325e", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "8d089d17582bbe21cb48deba24d90c960f040f1d23b9d9ca9907f1776d72e64d", -"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "94e0b410661c6a746bbe77872878649a52b87fb61295f988a9c074a3c23abf56", +"T3T1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "47cbc81b4df6d97c4d68bba9252238ff9bcbe48ef84a2834f1fe9a658a740ee2", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -17310,12 +17310,12 @@ "T3T1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "6fb91c992d295761eeca96d6bad64bff369f7fada60f4961c0e989eda874b808", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "2b7ef7fcca2199ba242a9248e550cc2626c333007b94bdacc38beaf7648aeb74", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1c934e023153f4bd8182e573b3c3abf5cd7aef54a095a817c4d8340e43abf7c1", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "257d239e7b1fe2ca4a7df626d847d567d480c1de0b1ab334a9ba666399772036", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "257d239e7b1fe2ca4a7df626d847d567d480c1de0b1ab334a9ba666399772036", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "593c8288fa8f6a8fb90dc3ff2d6969e833021b8b3cff57ef0916d1347d331988", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "4dad6eb29ad70cb001bc55280763360151682bcdc6589ac472baa602907325c4", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "86ef54e36f682c4f4134836a550345339a617450efc50fa31d66141596e9188b", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "68477bdd20146ca81225294a7824784fbd4250692bdeb6cd5af55e629f82307d", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "ff2a5dbad2d7cd23d81df48848ecc2d266c85ac43c66659a85be9ac8519dcdc3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "ff2a5dbad2d7cd23d81df48848ecc2d266c85ac43c66659a85be9ac8519dcdc3", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "dcb193dcf9e30a60bea7ba09d985341450d7c4ae8022c9ad7fcc7b7d59831b07", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "bb106599ca9a9d8079c85f9a26a2c2074e84d424df8a71998adfadccef5e10b6", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "cd0de2674485116ebca04e0bd788492fe3802769c7613950b678438eadb4fe68", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "d16e3d25d8aaf63ab961365bd08f9f29e7f09a563fe2759dd00a4d9c3dd7e916", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "85ad08f2725039158c3730195d7e6357d1a928997d746668d3de45f360262dca", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "755317535bbd396c25e5b5f5adfa67c43754e1e8515d7d8b2edc86688a7824b4", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "acb0778a74fc26b5dc7ab6575f5a12b75aa585c50d8d38a57dff4e2502c481e9", @@ -17346,15 +17346,15 @@ "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "87a582288dcf379188738006aa899ff6d371aa7d279b699827406205cf078f2d", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "52d710781e9510b5fe23b5fe1b8d4afdf25dbe07699ecde3585a3539db0f4e2f", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "e3738f7bea1d3c52d7c3836e3c792aeaa7f04d5119b3631b24226fd145977055", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "f01e8d0e67ede6003f527d674f105a8638eada957fe8dfa6fe77e900bc21fa11", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "4d14133487fadfd2d1962d6fac0df9d97e90a5b6ca4357db4bbdc5ad7e203d60", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "b82e89124a0e1d282d80d291021d585054062fab55970c90c34c55635942fdaf", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "69b468893b7da27ce418242b16b1e9008f0c51ab7bf5afccdcb08ecd8a1d78be", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "87947624061944ef340de37b9a8e1d79eda4b9b204de701e9f7209887215875c", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "84ba336288e929f067d4c5595a2c4dd5362f74343315961e899e9543e58a111c", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "f2e9f4cd511077864f80aa1b6592ebadbfb6ad238c913cf0041426192384fcca", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "33d39787c72439e8eac168d37d694c791d66bf8143aacda91d2f5d8074eaca48", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "7dcb44a1777fcbda428e1ead3786ab68b955385712f16cea02dee890e7d172ca", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "f3c4ad7aedf423030993d3ebbad050cabe82dae66e02d8d805b7c9778d98444e", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "8a4013d50c9e28e041a03a6d613e9aafcd6ef10d4106c013e2c87186eb1fcdef", "T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3b1c09eeccc7e2e71eb86cf2261a2d634ad4acbf355c6b8a58749a83dd805a17", -"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "e20a3ca18f9f363f2bbac746a1f62d30fdb497b2cfb0bd94b981913d7075f364", +"T3T1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5d21b25eb0fb056a5439db8b9cd9a1347bd063c436b4e98aa18aca8989ff8282", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -17373,32 +17373,32 @@ "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_grs.py::test_legacy": "e7279ca250e10ab34c8ce56b6f8ca60eb08f70192a75c11dbec46b53deedf3a5", +"T3T1_de_bitcoin-test_grs.py::test_legacy": "9571fa63c20856a33a335b52be4375ccb9b59a3352ae811a77e4cbf7dd0405ec", "T3T1_de_bitcoin-test_grs.py::test_legacy_change": "bc90fa059421ead4259b18607420ab84caf044bd090f7dae09bc995f52f37581", -"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "0e088fc0758189cacfb2f3b1bb5c87171ab0799307810dec9e45a21799eef725", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "314b496764fddba06810edf4b869b12ecda08161e6d49160be3460b2bbe80075", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "f8156c35565d221eda9692f994f5a3af99986d7f652abc619b3a3389d533134f", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "148f9988e760b0d68edd1c0322bba773c395c9e6cd1db0409d6a408a7e8fc40d", -"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "592c3b78ab9b4e55a345b58b50dac5c3806b6de3b08969fb528d85aa0d1a2b02", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8ee12236431825102ea056415b1863aec59364a2c324d9809dcf4e605cd299ec", -"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "504a5e1619fd4572091e97971944f9a055cdff30b65cadbd414f287d69f15c08", -"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "5d76565b66a9795e43a637aa49180615a8e2274cef9da6593289dfce000eae76", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "074090cfc96cf6db1cf95e71ecc11f9ca637c63dfc8c0e208bf51b4761e6f0e8", -"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "281f8e407baebd9717b0cbc07c11991c247f06b5d771d4386f38efa98a77c02f", -"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "d963e99a46649d3ba8201ea3132fcdb422c00e5920bf553ada2a1eb75a8a8126", +"T3T1_de_bitcoin-test_grs.py::test_send_p2tr": "9d43f51478c4134f367d3550c03598f2ae1d3386c07226a356d4512a8d5de2d8", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native": "dd1cae7d0164d62be533e62f2c000f1962f5a0570401a56376bccbe704421d09", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "c2ad0fb6e09f15546e01885fadef2f161b1bcaa8fb7ec8ec3b5c27be5feec9df", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "a09269cd00c71cf12f20fd5b149e5ce4c2adad18073bb5d897ae708a8582987b", +"T3T1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "59278a18d9da9cab942f2647e11960dcc0ee25aa506669d48cacbf0237e8ee7e", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "7e3cbc6b2b913ae34e6a9cb16f0f3cbd883d803c646555972a4897d8341c7820", +"T3T1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "9245cfa72d5a1a8fa3353c4a10f038b6853d319e73283c9ea52366b9994959e8", +"T3T1_de_bitcoin-test_multisig.py::test_15_of_15": "7533c08d654e4f7a4e3b30810d7aba9fb6d783d33d2d42c900278a93d3ecc6ed", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "35821a23efbb32909ed2b3b924802a8d05abacf06e516ae0e5dd5bbf48dae624", +"T3T1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "353c39920e533b59081139829b442a5750212374ee85ab594426933d64d645fe", +"T3T1_de_bitcoin-test_multisig.py::test_attack_change_input": "0f0c3cd5499731691fa88171d9c3e2cb19802425f82880e37fb530cf8ea994fc", "T3T1_de_bitcoin-test_multisig.py::test_missing_pubkey": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "97b42b54d62572cf0ee31f8088a743eb39f6d33d91965e372fa5aacaae2812b0", -"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "a2f4912de9511492cc90185eed1d8310cb1ddf9618b8410782a8659b5519b284", -"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "6f65f5444c43065b3c19a99aedd39cebc6e458ee4511268b2b972b9d76b515e7", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "b258f7c4867a2a9efae11b150ecc0104ca61cb07883fd52a33fc9c083190a529", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "643ee1092aa965ec30c1e9be0a06de97cdbb349d31791cee62c939a1f0e0a583", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "eeae169e4fd71ef6438cb4f8e1a5d135494524fdd763dcb279d688637fd4df68", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d82cdd14eaf1b4d503294984510dd37914018fb2b9a4cc60f9b0902a25b920b7", -"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8585ba3ab3fa1cc3b64cf0c0127242f2dcc65b12b8add2f86e8054b54754a4a3", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "183070b5cb374baae8ba922f0ba6f5102407aa652923ad3f9259046c0317be3b", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "497ca5d2fded3841e3c537be144b6990e722dace3908e274c1e3d02ec75d7779", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "0caa0c49171e1317bedc93d9de88f77144dde12be448bb03597cf6d1fec8c9ba", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "217d1b5307402e1db76e7cd7f501e6db09ad8fbb74596b549cd2058b13eef9c9", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_external": "4c86c7198c4d803aa2e929e422e2958336cda1fca6e68275175a0a95d6095457", +"T3T1_de_bitcoin-test_multisig_change.py::test_external_internal": "c92d2aafb29b06b6d7e7e918914175b6315c1130a43ab94743cfa4fca52fbd3d", +"T3T1_de_bitcoin-test_multisig_change.py::test_internal_external": "53aa38ee2635fdb584fe8dffe27c3f82757c3564602fe0c40afd9bf8dbbde416", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "0032d1d0949cf9466490d5388b1441e97e25dc45931356477f28c8b14d15db07", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "f152660c7161b473a42da348b247ef898d8b5ced7c31d50636c8538edcad0ca8", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "98471f1afcec58fdde84dca2f05481e07510296a31120a50caba1f7f5c11a449", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "322847c0f25dec77343f524b429a211713ee12f7df76c88dfab949ab5a138355", +"T3T1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "d6b258f7989ee16d570ec3c8ec593682f57f9a15c212f438af0b1fdb1246b8b7", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3aacc933201ab05e2d1513245502c7463b89aa320868a69dbe06b912b1cd9d4c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "42bc56a5af67e241d4419b69c59397c4a3b208c9ef9caea070efef33c417ce57", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "7babbf6b1a5b4949184c9324024b4e74301950351f2978a5b8b09d2e3dc4fcaf", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "6fd321af6bce5804216488157a56a4905900a7bee3e22449e69b5260b0218b99", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "c93cc9e3241a4442440244cadbf09db7f6bd3d48da65093bc85a2cd6685c5eb3", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "8a74121564c53d5373c6107c11da48d57c3e4edd121d7fff0e4f980f4e9dfddd", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "a30b8fa70efee18a8ed4050da7f94bfec3ae400f0260c075f8afb9ed6334f2fe", @@ -17407,41 +17407,41 @@ "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "a331566716ac42f66b1b236ad893e41cff8c08ff745815949bc1378ed82c2e02", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "c6937466840a500ee1f76bdc5011289dcbc7d4940d601b81e267df614c888857", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "533cd3c9e2594ab70f1144d5b77bb446821e6aeff373d81c37af8e27ac44b013", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "e0a974521bb398c0cb6431e874313e73b9fb636b0172ccb30ca5626ab0299ad4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "165aa7919df6670611c8d533d7d81c53c9c9196b27c13aaf6675af94e3caa450", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "7e7aa5887ae02994a8da447349667592f289d7f3b343d067c058e47e7f2232b9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "7172c29f4f217ad7f68c10bdff6ea37ee3279f6f79b6007cce63b64db79729dc", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "3c11f1b45250a4794a31d3b23db855dae09b552c1f394838a476b2bb16652995", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "8a563945543281a20f1d16b24f39cd0ce2d290159467856e8191b8002d066039", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "3fde1874e9450766ce35863687f70b977e87a07f11a1284c87bcc504b89a37f1", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "623b4f3841acacd3d5d0c927df7330b6b0d48ffc41ca3bb9d9a035ee61f72178", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "bd17d83f63b1e0b0e30b866e5f08c1e530d6ec52238105cf088d3dd1ed1b595d", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "daa9d2ca4e635cd31f0724a68fa7850cfa18ec163a7a377de88d0f3464d66840", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "9d8438f060ad3719fd5ff7a26247954428021df8f8f1c201ab5bb4d2eb720fd6", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "cb8c0ea2105f73cb608e0cf49fd14da157dd65046b129effba5ec368631012fb", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "2e6910c30cd6a8baa813bf668d5ea448a787c04b3ff71a4485468d5b94ffc897", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "ac15b9e7e1f2afc712e4dce1b620c73a731d42fb7c603cbce62d32e8e0ea51bb", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "5c9666caa366457102143704413aae068c211b85819aca6be4c71563bbf90e3c", "T3T1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "e5d442264dff7bfc1417cfb0f912bc6d8de683c9fdb25ab02e8dd3297d4f3141", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0c75e4661f7a1afdd4bae9924e8fe43e66929f6fcce87458a2a5d2ace1112912", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "045b7623c60adf6cf2eb49ecb8e35a20b7b8ee1998ce641ede39ef3132168be9", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "47d098edf7598c71a216b5790be68bb495356a3b6b553bbb4952182698a0b0f7", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "f8261f31b17ba0b7ba5bc71b98bf23799dbab520f5ec496dff3301a17ded2e05", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "cbca3de9b7b5ea2e782b03468438a3624928040dbb40ee21841d09798166b8a4", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "be5501591aa8625249a949132cf39fa76196235a854af0d2a3684cc09055f0ad", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "34f72b06b13e4ae59fc3c0addcde76f4492148edb08d70060a8da86e66026796", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "554fc25c7e334ef5769fda544d2def1635c700f6499ba65c352f77fe6d6af4c1", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "e90966371ee9634e859cafeb35650014573d2f7604d20adf265c41855f2149c8", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "34f72b06b13e4ae59fc3c0addcde76f4492148edb08d70060a8da86e66026796", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "34f72b06b13e4ae59fc3c0addcde76f4492148edb08d70060a8da86e66026796", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "34f72b06b13e4ae59fc3c0addcde76f4492148edb08d70060a8da86e66026796", -"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "09934c53277278a19c5e190ea733dc4d16a8ffe6d346185edb1e672373b79bce", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "c30d10a41bed804c02806bac4a67c0d23eb21b44f1627b6fd8aa4f96441b27f0", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "f6db4c24f008b7b831360e9c3b47a673aa68bf4105e5ace13c7300d8301935fd", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4af9371cb4d73a760820583f5ffdd6087cf58c928934dc9ef117383daa166172", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "05a0696306c590c6d109bb07a1726de76a5e58120297a490f7ffbc407c2ffea1", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "928775cc55625adf94c95d7bf705ce878fae15a376ec310a07d5ee18509f0e12", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "01eaf15f24555c8d0e57efd9fddae2bcd384f35758ba50e93bab54b317c33a12", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7892e9acc78d96a9a6e4e2078687333296498cab9cec98126781aefe2681b4c9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "122b9dd6d531bf6741eb93a852709e6f87ebc40784549d70b8f52d2c7f624e7e", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "e4eec836fa64a941934ae01a0a7151494b489b5e6f4c304e7a32caa4f5c2326c", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "7892e9acc78d96a9a6e4e2078687333296498cab9cec98126781aefe2681b4c9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "7892e9acc78d96a9a6e4e2078687333296498cab9cec98126781aefe2681b4c9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "7892e9acc78d96a9a6e4e2078687333296498cab9cec98126781aefe2681b4c9", +"T3T1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "7201ab4cb870325d896030435e24632108f606f65ac3c27ef78076fff9d11623", "T3T1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "7423df0ebd5eb6b9acfc4d77ed07df2625ff65a2bc7fe4d560e54b27d5560df2", +"T3T1_de_bitcoin-test_op_return.py::test_opreturn": "5b724a6936c5f12f8cd1019034f00d13b9c53a7cb608297bd5bd61bc58ad6a3d", "T3T1_de_bitcoin-test_op_return.py::test_opreturn_address": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "88343275616d70120313f57218834c296143b527705f6b4e69483c0efabb9ba1", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_included": "6f3f05a1f4a544dce3f9f8ff69eb4d96bc3ebcf144e90bde2666c8e977601cd0", "T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "0eb9b41efc6df52844a7135406f9bf5b2deeabfd1d376aff8a56a24ccacbba09", +"T3T1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "0a4816e750cb2e70de291fd23df039e9eed2d0f864a4122d05035f539c9e10a9", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "976e112c5d76274e19136bdfa86d3b1cce5435bf02dc3109d19d04627e40f906", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "976e112c5d76274e19136bdfa86d3b1cce5435bf02dc3109d19d04627e40f906", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "b827260eef705f3d2fc88b1f6470e39bcb7828d8dcc9367fed7c0121661309a1", @@ -17468,103 +17468,103 @@ "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "d3c452513720e67c32383cdc02ab8571c88d5c4adc78e1f590113182e6c14dfb", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "a0020109576453332c7e11e616c033b22baefd93d6b2531bbe5bdff4380a9c8e", "T3T1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "9cba8c1f2278c6efbba01fd309450135edfe6037c7c2d4cb0ea475a74397dae0", -"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "ae469170ddb150a2b4e979ebba13ed23661ea620a42fadb68c274248015810de", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "7b60798b6ff375774a31cb47df0814046b0a9994c3fcc1d895507e2481c9b0e2", -"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "73bd47abf8a4322b86be4ff1c4daa8bd6d3dd4243f9918b1a478e7e2074b5f73", -"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "4541437417ec236f06a165d3547affa68c7ef55cdcff101c05fa45b8520718a3", -"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "4541437417ec236f06a165d3547affa68c7ef55cdcff101c05fa45b8520718a3", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "bc6d6287426691a6188f90bb1d1ec2250ca090b24dc8629a558e9d1702760d67", -"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "badef3a33a1291ee87139ee3a2f23cdf153b0509352418684c7757409bbec0f8", +"T3T1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "6215b52a511e482cf8fe190ebbf8f3ce37e0f5b4c46c785b53420f2929395994", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "d7fd35537abbbf2742a35f3523be11579e2226b5be34caec08d5d5ee9bf846a6", +"T3T1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "7ffdc1ec904e8e968420293e16f963945c5404c009bbef7bf7eafe08eabe2b27", +"T3T1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "f7cdc902ab4cd99762c0a53763f1ad061e8f47bd00447c1c92abf0d2707f86a2", +"T3T1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "f7cdc902ab4cd99762c0a53763f1ad061e8f47bd00447c1c92abf0d2707f86a2", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "0c0fac30489623e60435766a92796fc9382d605d13d6f0d3c685a4c82968d47a", +"T3T1_de_bitcoin-test_signtx.py::test_fee_high_warning": "9296726baaf578b72e670ae547e3dc162b1919ce23cd63c66f62c1a8a1dead08", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_signtx.py::test_information": "e7874b622a0c4db032a89f245267146057b03e895a714452628932bcc8718ef5", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "1d3bdb715bd1467c0a6e101da486d25dedf082901e1fb98a7a90b5c55c34d316", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "c3ff36f3d4ea373ac2b1022a0059e1499a25ad436a7e07f7f8ada2b197c8c1d6", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "15c5680fb8a5d2d606e88862893feda572d8b647bb7fda7b961bbbc138bd77e8", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "d54cc8d72e6d2fea108ca4b3b7a93b04e189ef5c00adec0432ca76df5da91089", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "8d4c52607984d0e332a13bebbce267c0e4b248e612cedcb96f2a643303862b57", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "d54cc8d72e6d2fea108ca4b3b7a93b04e189ef5c00adec0432ca76df5da91089", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "8d4c52607984d0e332a13bebbce267c0e4b248e612cedcb96f2a643303862b57", -"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d5a83e42faf5164e35e379e11d83d3ec777faebe7b133875dc266c5def10cb28", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "b9460680f53d470a931ccf100d21368454ec2e3e7333ca12e7f7abbcd75a86ec", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "3d5efdd1f662c5c311ddada56fa7c9cc92da39a5e678923ae21fcb43bac3ec74", -"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "118868f70a33c1ee48358e6bad4cfe70668ac928af765ec8d6921bbae68f2cc4", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "ca88152eaf5c7f96f084dab2afaf017c0675e0b71e8099513b5430693f343fb2", -"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "f2051951636c0ffca0b7303e4d4f4d346a60a0f9a37b43cb49b87d336015ac00", -"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "019e4cf06b502f6e72afbc56c0bfcbda1b2cffb42421f90b8b51c9ecec2a5908", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "8381c9b29ef6fa004b2ff5c0da7019c17310d1348d8d619ae8e18a55ecc1e5c8", -"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "4af94c7c666bbb2957b609fb2c4bdbb8ece436f37fa56e6fb45b98fcc254752b", -"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "a3a42fa29bacd5f8fee2c9f3a40cbcfa915e2543ae766f37bf6b4542cc8ef286", -"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "7e242de04a21a865ebb2af3f7659543f1fda19169e63b576c7604fa238d6dbdc", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", -"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "6e84c8fad10bb042adeb79d9d2be70c5a7d6e7872e5db2e7eb9eea0a3229eb81", +"T3T1_de_bitcoin-test_signtx.py::test_information": "fab07edfce390adb6b11b189d282f58313ae64f05c7da475a23e8ff25fa117ce", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "bfda4b3eb1a1b1e7e9180a419ee9b5d3356e289e6195b6063160e8606c247158", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "0e6658ddb3af487155f14e893d06fc7b0b28747513db777d8cfdbde52d26bc6b", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "5af3799c0b7814d982fa36d00a42f6f82ea54527f3fa2c77d44f899cf1a13829", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "667361a8d8cfd5408f87d8f9b35bcd37f32faccaf17636a1783120e799e15ea3", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "7381c585cf6b31cff9eb5f95891ca8cb6efd711206a301d5808193613a70ea81", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "667361a8d8cfd5408f87d8f9b35bcd37f32faccaf17636a1783120e799e15ea3", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "7381c585cf6b31cff9eb5f95891ca8cb6efd711206a301d5808193613a70ea81", +"T3T1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "6727a6a629e8d8f8670ef76d3e5e0c47cfee0007f30b75f2496fa734d61a464a", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_change": "c36530ecce7898d7d50178702968d9dfbda731f45a675ca7dfd500cd04b7c7a8", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "0f73ad80169993e502ccabcb6f3dae73eefb5c2a47c86312b2838637c7c72b5c", +"T3T1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "649f5812c578782f40693a87d9a8425363d7d013a4cc338d46b662d5af49b751", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_funds": "4833fe513c9c76f7c215f224ba66ed52e718fb4187cb17ab0ae9d4281c42a89b", +"T3T1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "11bbdb42f785997f622b35248100d718b18d019b7b50efbb49d7f89fce6a8db0", +"T3T1_de_bitcoin-test_signtx.py::test_one_one_fee": "e3e670787bfd79a6e3c6306d59a77e4d3aeca366d15dbec4c02467ef74d2219e", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "45af38e6fdacea7cba157734c09e38dc77e2794f4434114ea4be493be8e6baaa", +"T3T1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "ca1a2d0c32be246b8bcd49a1aa514d5defb72fc8e9e7890e3319fecf4d617b0f", +"T3T1_de_bitcoin-test_signtx.py::test_one_two_fee": "764476b51e372d94b9a0f112d7fa8835570d6f480176d2c37ae708ec309dd490", +"T3T1_de_bitcoin-test_signtx.py::test_p2sh": "1d0b9f45b56aa3c6fa12dc6d3eecd9da7663e90537cf809c5bffcc6455b9031e", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "cfc1f2ac8e950afacd855c33b2f601d10ad51ca2a3f040e7b41ee5898054a068", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "cfc1f2ac8e950afacd855c33b2f601d10ad51ca2a3f040e7b41ee5898054a068", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "cfc1f2ac8e950afacd855c33b2f601d10ad51ca2a3f040e7b41ee5898054a068", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "cfc1f2ac8e950afacd855c33b2f601d10ad51ca2a3f040e7b41ee5898054a068", +"T3T1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "cfc1f2ac8e950afacd855c33b2f601d10ad51ca2a3f040e7b41ee5898054a068", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "9dc3db3052ae4919009175ea26d34fc207d389aafd8a7a6097a8b0a24583a728", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "3b169db8272b910f94e56c4d8130ba3af9f39e2c5b98a78763fd464e7e7fc0ca", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "dbb763a5ea16967676a9b506777d54e6e8d132d172ad18ec30b8c15c72d243e3", -"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "4541437417ec236f06a165d3547affa68c7ef55cdcff101c05fa45b8520718a3", -"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "36d464c8ef437fd8040bfa1bb56648913b5d3c5f627a5f2b4b088a6739b30a92", -"T3T1_de_bitcoin-test_signtx.py::test_two_two": "5069f49739b46fb5a3c16225fc6768d1ee0302742cf6317cb0b0922f824d8206", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "019e4cf06b502f6e72afbc56c0bfcbda1b2cffb42421f90b8b51c9ecec2a5908", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "ddcb569e90a73a29be83537f8a1bb32951b63b1dcbcb318d7908cb906c121dfc", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "c56002cee93049f521f2a465c63dede0276822e02a7db4c3f455193b8faa80ec", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "79e1ee33f47d5ea82a6587d4cf8eefc35a4da9bba85fe7add4b04537afdf0cb1", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "019e4cf06b502f6e72afbc56c0bfcbda1b2cffb42421f90b8b51c9ecec2a5908", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "002cec38dd6e63f3c13df7e14767a6ee18b7d7d4dea9785e36dd9104d9fd8805", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "49c507d00511b0ab2dab81009833a7f8796f15eefcb22f11f157cba0c3448f0c", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "e4a11edb31089c2db1392ca7dd220af8dbc6a1f5bb5ed80943e3c20dd4d211dd", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "a97fdf9275d4d0470a1800abd48c22aa4c4abebb943a14c7b88402c12d385de6", -"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "002cec38dd6e63f3c13df7e14767a6ee18b7d7d4dea9785e36dd9104d9fd8805", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "804a599b53e9f70b264696cd74544f9c657e633386926ecc022c4007be94dd3d", +"T3T1_de_bitcoin-test_signtx.py::test_spend_coinbase": "004945b1fcb1eccbae6ae8d501b86337d6520539c585f91e257ff6821af96e7a", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "384435e19e121be7c2edc7d8cd73a5cdd256435c4df580d2d02d5ee81b6457fe", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "f4f9d9268966bcc05141bb9c43e244814997a15f6c543b614c34a7bbde4198a4", +"T3T1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "f7cdc902ab4cd99762c0a53763f1ad061e8f47bd00447c1c92abf0d2707f86a2", +"T3T1_de_bitcoin-test_signtx.py::test_two_changes": "554420b68e19dfad2d9ee672b89eb1e477f07c1d9dbfcc03e6e0f4019ab4a6e9", +"T3T1_de_bitcoin-test_signtx.py::test_two_two": "e97f32ee1161c8838e6530206b7f3d88404ac7fae309fed24c14f9cf8d37d2a4", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "e3e670787bfd79a6e3c6306d59a77e4d3aeca366d15dbec4c02467ef74d2219e", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "0c065df614b7966584562c72d4b52c204a47d7fc0695e9d1a81eeb2bff227a47", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "164ceaebdfab5203a3f3a144e647c693242a8916e61a76dcc8d25e4a1d7529ef", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "c41f47666598ff1a47a2a2e5c095678814d5e57157ef8897f398837e97a42c0b", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "e3e670787bfd79a6e3c6306d59a77e4d3aeca366d15dbec4c02467ef74d2219e", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b50138ad22d919d7956eedc9c5f026cf54602f74c952fb804416fca3d1d0de43", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "f947aa7bc5ae5adc6372ca78bc4f73e0286b1e0e368d6e656ac325b530f3b0fd", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "4be6491ed51cef565a224489464c947404b474983bd42433388ee185f6e93123", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "82932b4bc5a7c8059f13d7bae442bbbf778cde0bf4356aa9d7561ecf9cf38dee", +"T3T1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b50138ad22d919d7956eedc9c5f026cf54602f74c952fb804416fca3d1d0de43", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "7b338f7a73cbfa09110cf62140b2e357315a48115893186d3b6dcab2bd3da1f3", "T3T1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "0c2a37a85aa5d7ca5f33540ddabfb3d2599de416b6dbdaa8b0f304e485fbd04c", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "d02dcc3aad929ef6dcbb1a72559e78832e09bba7a1d2bee4a2a7291abbf2bff1", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "f05ff32b88d9de38700e259d1bb80a85b86d1a6eaca07a1aeba963f3e32545be", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "33b74782340f51951300e8af4729aa3db831ba52fee066425ea1e994456cdc95", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "36db62166fd122673430883eb8c2aec33f8d092a8664d2059de5daf0c1533dd0", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "bd25e363157fa3bfb4e600eb73ea4668c1c08afc22b82432e2ace39eac532502", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1ed7baaad1ea4d9908bed5e832381931df745723234b82171bbde3c297f8df6d", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "92eaa5993c5ab9e217ab1366c4bed86f6850366eae13131c1bbe832b12b5ebb1", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "5ff116aa262b41c111f1a84e7d75038b11199cf869934d559a0beb039bd3c0c3", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "f9ba86c809b2027feaf86aac46126d683cb5427ced1a35ed4073e82a883eba27", "T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "cb019d1f1c09cc8be0cd00413a9b53e34838c8281b3c73434c2190e4fd84cd52", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "179dc20fc86c019f3ff3b3c3d14cbb09cf143720f5312826c32a689bcce95f85", "T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "99959c962feb0e30f6c67d2c792dcadf482e6dd7f06c00491db7a8e54de905ac", -"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "5f3bbc1ceb5bfd61403bb724ef50a08820b705df5c6fa3316026244fa544312f", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "4cd3cd511dd0a1060169912d02cf966cc0a015fb4e555c5f6e7220495fb76011", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "685d3fdb2a1e676745805ad010ab8e8604da177b824a30a1447ea9cd479c1788", +"T3T1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "7e5131bbca565d74777cb2a1d4d06894ed254da588ad00e47890d69deeaac469", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "9ea1c341f4ff0a9a39d785685c70bdc57345d3ee6e11a65c2475c27065570cd8", "T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "799b57310f10ffd613ba5f20abcb2f015e5e40ba037e324ab09007bdbda93d2e", -"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "bf36e6559417312612cd8b99c46884f9b4d57b0769da9662c5863481dc44fba8", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "65d3bb78db97e7b6ccc526702c733f9f54f51d38e9fb7da6487d6f34c4901e62", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e3fc9f921ed1c8a0425babcb97fcd241a3ad4bc641f0b4f07b6cb9c8cdc81ee6", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "65d3bb78db97e7b6ccc526702c733f9f54f51d38e9fb7da6487d6f34c4901e62", -"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e3fc9f921ed1c8a0425babcb97fcd241a3ad4bc641f0b4f07b6cb9c8cdc81ee6", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7f063f1b6f08bc6dcc25e633e037515b55136db52fc1ed867ba08d86371fcb23", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "c3f5062b1d30b08189bb265fd3a5c407b00ee40ac6de0f2b657afbd68d91457c", +"T3T1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "93a587527943e4cce160795155192c1a04dab1b2da80791fda888f1d2c29dc72", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "18a84246cc85734a3fcca4bcc1a3c4ae1b34bc969bfc5b36dc44c24e20a6d2c7", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "5bd4d02bee4142a2353381f189b66ed316d78a14f511bbf47cddc3be3eb48cdf", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "18a84246cc85734a3fcca4bcc1a3c4ae1b34bc969bfc5b36dc44c24e20a6d2c7", +"T3T1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "5bd4d02bee4142a2353381f189b66ed316d78a14f511bbf47cddc3be3eb48cdf", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ffb97b054e1697b1665567145dad42dad3a4aa8f901712e42e601fc9c7069763", "T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "45e812f29aacfaa7971a5d6a8fc584a837c6d16f71f3d2024a13d97f98111734", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "78ea607d7bc94ef2e92d32cc66f6bfaafc5e533eba61812734d8143e6b61e1ff", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b914123d4717afa75d63271d7dd9c9e97875e2b8ada3b034b28b796136d11552", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "90b8c9ead532421be2cf8c773ead7702ab7b3549c448953b37ff2a1b6b9dfb0c", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "992e2b8fc566cc288b2cc6faf68df157c279e9f46116ae29c175e00a0f5613ed", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "5628f5bd41cf91a9e8a138e103118779f6fa8069acfc02004131ad78d2f1b5af", -"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9a35a7be3c50db2cee2ee23b0d32da5cabd2c7146ce26e07b87de7712a362ac2", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "92e6b71a366b0daefa8611f03191d8c533c51e01058737a8780c1e5f123a5041", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ceef2d6179a6ffc108d448f56652dfb5557d1245ca2225b5e9f750e35f6de026", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b10bd8a972ea21b0399ab21f98f483d158f7d3d38c715cf492cbd42e836b7f46", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "ef5deaba45fa50bf98d51fccdccb510b9026bf341e45690adb9d68fcabab4e7f", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "050195f8a62aea091dc044a8cd6401d26fe35ea9a16189798a50f31124b58bbd", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "179b50ea0d21d6e7d72a1e86e452e60d17f9c4baa61cf663f3d8364270d0c154", +"T3T1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "c79e056cce0d94ff9b87261ffcc2a7702e8711c3c9d4354388b67259413b0942", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "b89716f8d58f88989d051aaebce4d045c005cbe386cb7855953914c35e4763b7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "b89716f8d58f88989d051aaebce4d045c005cbe386cb7855953914c35e4763b7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "b89716f8d58f88989d051aaebce4d045c005cbe386cb7855953914c35e4763b7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "b89716f8d58f88989d051aaebce4d045c005cbe386cb7855953914c35e4763b7", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "1273100283109ed050f06be000b2da48be4204ad218d0f666186530658f352ba", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "1273100283109ed050f06be000b2da48be4204ad218d0f666186530658f352ba", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "1273100283109ed050f06be000b2da48be4204ad218d0f666186530658f352ba", -"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1273100283109ed050f06be000b2da48be4204ad218d0f666186530658f352ba", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d24550e40de9d74b44f499b97253fae49e41c6b5eadb15eef64ca5c86c85126c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d24550e40de9d74b44f499b97253fae49e41c6b5eadb15eef64ca5c86c85126c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d24550e40de9d74b44f499b97253fae49e41c6b5eadb15eef64ca5c86c85126c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d24550e40de9d74b44f499b97253fae49e41c6b5eadb15eef64ca5c86c85126c", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "f6b04f8512da7234e992d333a2c77f6fdfa5408ba71ac48c479b8e4a85a1dc10", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "f6b04f8512da7234e992d333a2c77f6fdfa5408ba71ac48c479b8e4a85a1dc10", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "f6b04f8512da7234e992d333a2c77f6fdfa5408ba71ac48c479b8e4a85a1dc10", +"T3T1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "f6b04f8512da7234e992d333a2c77f6fdfa5408ba71ac48c479b8e4a85a1dc10", "T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", @@ -17583,33 +17583,33 @@ "T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8d903b5eaa96346fb6bf5ee41fabd0a8dd318d9275fbe80cc868f50f7f26958a", "T3T1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "5eccae26b7755fc5b62e3f9f36a1a15bd84b7facd3848d37a5a10b762636f105", "T3T1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "f6aa2ccde1ebdea48ed9b84b565ab2591cf77e2df897fdae1babb3b27157afc7", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "d7bba861fc434800c37385d733b10017abbe3559efebab16d91c2b57eedc8a54", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "6c933a1cbac1f1e2057f2ccd721b01243473bb16e982067fa3abe486b6a0875d", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "dbc6db3afcfc010b6bd3fa8331fa7cbc47d35c68121cf5767ccdf7bf41a9a731", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c0f3558630607fd21195b29b4bf562718e7cc16622e128f6d223fb61eead0ef2", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "d6d2f9090ba8c396ead7ccc6e4cbfb77fa61a1ab3c4bbc0c2ae5273a86fb8b09", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "490f8ee2aa086b735a111432d1fb22cad4aefa98cedac8f0d9c33b77be16b8d0", -"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "259a5dad7e6bd9c6fd3dfc6897095e8aef9784d9dccbe3cbb55c22143cc44de3", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "63da2e3172ad25c9a129a0ba8e0d7e4bff83b0dd7d1f19884659cc37be5e962a", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "96b8d578f6fd2f934c21ca546001c2d126889ea0d2c7e839e1e56d8eaa700390", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "32c5faa492b4389f214f59933001fa06104dd031a869f5ab2608799147073304", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "f02fbdecb5dd16c51e00975c310c5161fcd7d8f3c3812776b6a91c90095d75e5", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "97ac9f8622f2f71e4851f9e50418257e7d68049a5f92ad4ae396c9508655546b", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "624801f90f8428b210fe59cfb28163c70b73925d1015ba08e6a753eeb11f51df", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "002cec38dd6e63f3c13df7e14767a6ee18b7d7d4dea9785e36dd9104d9fd8805", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "c3273e74116b942c8fdf2f4b402a4ebef1ef43e547e75fb95b9c49dc687f4131", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2b2aa1083fcdda5332cb5556e09eaa463806dabc0d211eac3762f6369aaa2610", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "a98dc1a8816d5aa6963faa335856ba58e0c3931e2a621d3342eefd73a264cebf", -"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "38588c24bd42dfa5d9953de59a6b9c139d2f42170b86e40c123f3383c679aef2", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "f56d5519c5017d4f0f5ee34cd39564e41b468aea77f31662fb2e0e9b850ec092", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "3a6992e0f40080a7ea6588b70bd5f617c810126c7eb220064d6dbf588ac63cf5", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "441105071e05d3734f31d9ef5d61e73a22b0ca2e013c61b687e9599777bfaa3d", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "1eba526330b392bb7b1792896c91426b989a0fec371b82e6a3c6a160ca47ba7b", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "a2f19bb53e7e39989c69f1f5f819aa07083e3f16ddf75059882c93e188309ae3", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "24e6874d9054c0189cf3c09ed48f4bf22a66780535fec91d559884e7db6e80c5", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "012fa1d8419a8e1dba0eea02587a176b82c7a46b2701c255ffb2d2c5192295fa", +"T3T1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "092a375cabb644356cbcd728202b57b71038f939be51def03aa767c19ef50141", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "be69a838091bd596e53891d42793d7090f02411fb7ad9865ae1ef73642660be5", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "f5ba2a936fb83eb8a6980bf55eb3a4b0ac6dddfe853c28c091ab8e6d8e797b2f", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "e5a564b6340d0994531099a284acb5ccb6ec58d7a822b058d399f4a9ea9ec9f4", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "b7bdacd9959cf9100da0f4e5b162e6313dcd6b7b2867c6d5f7d7b41071b9ba43", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6b29b2a6a78da25f5f1a1bf43ae43db93da7a884cabc53ee00d769875cd25266", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "357006a8a71ca3a8817b343dc65bf2c0e8aac4213fcf25b7fd29a6825e3a6411", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "b50138ad22d919d7956eedc9c5f026cf54602f74c952fb804416fca3d1d0de43", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "996633f6ae6ecae3ec043b628a7faf7fef6d8543438ab1b95a48176b6a12a461", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "c4e775e6a39789a54f354706bb7ed2ae9c95bb0ae50adbbda7382cc8e8843ba8", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "2e849862e78aaceab58196967e7bb26ceda75b9b1b4be056fba312ff2d2e333d", +"T3T1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1dad80a06dcb983ab387a230b1e79186b1b8a7886acff1ce4a33b4694a168a4b", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "baa5f326f793a66b468b7a2b184ced3f571d4f86df1481f650d193745e0247b7", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "9a87af17802ed81793b4b187b6568cf68593a76d801a05a1aa325a4d5c817469", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "ba57dbe1cb8c08fdaf7db3696ca306483fe5cb8338e25730129f9344107a478b", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "cab79c9cad6bbd5f67a99bde70edd3bc15377cb14a2b3477abd9374ea1f99bba", -"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "24b69f315d1c1893dad48611a53d9c0248795d478a9d590a464e4de9ed92e6f4", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "d2b3ebf9e1b587c30d56312255bcb04e20a97767dc30f0eab90b45630352cccc", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "739c247e97e2eca6843fab48c2a60cb4583f73b4838d9d4837d322c925d7bb8c", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "396e61699371eceab3a9154da81328e00cc0c1cc684c4128f428333cd0c3f782", +"T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c2c56f0a9f42b284376cf21fcee50c03c6d7f8016e15d045272a84c8c0854310", "T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "1dedfdf175d28447840a15620c90540fb5d08542003b6630e1523ad7e94d1bb6", "T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "e8e359a23e5dfdfc70de963fc31aaf46fa32c0d82eba37e3c8339d267319c8b2", "T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "85cffb6df650ef50dfe0778eae1855e9f58fd22eab0f7f4930fda6c7429036ca", @@ -17625,9 +17625,9 @@ "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "73bf9ed2bcd68bb1cb1e3917bb84f3afb4d56b72755c6b7950b3e4896a5ae245", "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "727ba919d05c463eaeaba103620340ce28e3af634857c8a6b0a590dc3edbf03d", "T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "b19fe8e04666031b9872e81b66af52d57d05e810d0389780fb49f18201ead2e2", -"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "d8ad3a1342be7012869fd40b9fe543aa528295a86e265d3aa1b5787afe36db93", -"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "ffc114aa5e509fa9999a48dbcb24ed711fa278fa594a47e1e91ee8336bb768c7", -"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "2fee0cba1c8e23080fbad874bb4435dc172c7508d1ad33b2a90671aa06183e16", +"T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "85f2067de3f218e718ae164e97dc030c4aef065c29755f6138afe10d664a2d56", +"T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "4f95511a770aec2dfe10db89dcb3dee6760802cb7467c80c114f29a486b63f58", +"T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "e81f8c5193f17b616a2a9d1308b06bd360ce8113d21a9def2ad7462a987c5aee", "T3T1_de_bitcoin-test_zcash.py::test_v3_not_supported": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "b38a83b9d3119cc83254dc92b01118c92fb95d4b0abf3ba3a8529c9159bfbda2", @@ -17655,11 +17655,11 @@ "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "67d5b5b739656ce72bdc79b2779d2561146f20c38ecfd85d82acdc0994a6cae9", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "b44ac7a34a0989f6d72d08e2348ae0be6db9aaef9206a875580e2f951993259b", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "f08e5e1da008a9adc0175357b044cb281626cfb7bd9ceb0e2662a0d5b06e0398", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "a4f7d7476b062b9ffb8ed7f51ee72da1618ad4ece79029f1721ff817f5424717", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "4e8875223c1f206b8e0cda6f09cd3216ead0d5868be669d7f10b91cc5d539beb", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "70a24fbe186591d7f51f8ec93ad121f9c82e3cdceca0dc5745f363c52a822e01", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "71861e7508192a47e90aafa4e54698c5eae0abec72407e2ab480279a950a9363", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "b48607545b88a75b9aea0b418930928c79be0778e96ef3c71c2301756f1b58aa", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "900395934dcbccc8c1298fc8ad56e31b35d6e202dcd4480329179b9166664d9f", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "03bb50bc028f631ad78d4115dde545d75f2ee3986afffb7f2b2a7437ad5f9c57", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "4622742c4cb45aecd52019ae71de9ce4cbf0811beb1d0511ead848df6e55756d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "2561c102342f727655224427b2dcc8af67d8ef89365a50c82a4a78e2e5564e4c", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "e59e099962cffb226d84932aab5a0d5b4c84d028037e375f31a2d6c0f43bcf1d", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "d11c0a23481792dfcb23b9400d82fcfe9992d8149056d481801865effc02c191", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c031b9497e38ff7a907fd5cf0959880829bf1880ddd284186189f03aa3496e54", @@ -17695,11 +17695,11 @@ "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ac96614af07b11b7411acc2112b75ff9ff21e37495fe6091ee4d878bd81d1780", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "b4c9caa81d2d62f51e3baff5dcd586dc4218bdb2d891e76d78593cbdd06091db", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "545bc3e785bf871d78a81f3df34540a776124eed43afdf94b43c086c62b4eaac", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "73d76b710b6d201381a868fc8ad9bb13025945ea1e1d15f8f30a3f11972d0874", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "bc33bc763e0440336ff499a554dc109a211f95b2b1e7ababae361465ac289f71", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "1b18389e0377d9fb50638b04b25d7371539000603a88166686d11fe1c75699d0", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ee71b6d46593c9a0696c617a1fadba02e27ba5d78fe8b78950fe029973ab9ba6", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "df047e2e79e973851a0e4535c683e40ce6803fe3f51007ad4b11bc87f4cce1b1", -"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "0f90dfa3e195051dbe90b8f2363e2e24f920f2116b1f244bb213a9176d13a068", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "fca16df5c2373040d336aedb0127041f443bd6f3f40a232040ddabd7eeefa19d", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "3c4e393f85bbba8f329d37f3eb1b25e37b0a874157b14c385848747c499adaf9", +"T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "3caee3f3aa8f7e2b25dcc5a6b462a6caba44fde8f3986163b64f6be5d78ddf18", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "d4704f1860b39d722a08236f8bb0c61f2726c9dff36e2341e00ed8775e16d041", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "f14f3a65c3c0d8022274e5d097ab54c7cd1a0764ddc7472db6d8f9082fe07615", "T3T1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "5936c19690d8e5077a2237c6d19d36e8a86802687db8540c1a4a21b45bfdcd3b", @@ -17735,119 +17735,119 @@ "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_cardano-test_derivations.py::test_ledger_available_always": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "a4452a0c487bc18f1824659b2900314dbbf0df5156b3b5cb7ed22a468460b4c5", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "e782a9015f98ff0f783018b1adea0b427ee310e80430c392a1a1b5ff828b188e", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d7dfcd970dfbd841cd066ef9a26752a74ee3ffdf48a8ac031d42718be8de7eb7", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "d018193e09bb2e2c93fdb2e0c919814a977efd637d15a018758c3ec21f07f156", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "789a8fd2236840f3c337db5cda01347fea9a55cd8379d46ad3ac5ac039138273", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e37eb940ef90a504aca726cc41dbb5582416a6212ccfea4cda483d5da96ef46d", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "7bae669037497f09805cb2f4502a1798a53fe85259014978492a49eb5f0a6068", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "366dcebbfcafc858b50321feb82569269f2c401141e32f943ee7951d1bd3ead7", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "50e20095c1d3fc8d3b0b01636415e002f0bd0e5c2cb079469bdba74a9da606b5", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "7890aa102c785f8de8cf43854f911c07eb96fc6bbe41d79c36bdd2d14229a8eb", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "1fac11a2db13154d355225073c96fa8d7ab6906fb061dfaa14c44141c60d7116", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "b0f4be23d78b3ac1a0b2e8c43d2abf0c1df6c5fb099bdac2c6902f60bd9a1848", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "421db0bb8f4141a7df1f853f9ddddb5fcaacae527ed8e7ab34bdf9d3ee1392de", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "f4c3ff47bde3938bdf48b088cbcb1332796a4cd853cac5c697ac0ca9c909aab9", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "abc2490d0ab097b54d1bba9eca5af9b836cf743f0f6308349dd62ca2abe36b03", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "1f72ac250f318b64acd77383e744425f831e85adf70f40024cefc1b78eb05acf", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "ed5f833bd9e4382191d58cb677c0dfee20c8ebe4f23bf27bb10f66536abefd7d", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "07c45ee0243c355aa0a4255d75d74e66f18bb878ee99dd06a6519901ea274b82", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "37d873b88e6435ebf81951101adb8fa2e6bc7e2aff9cb6ee182c0d9942265c07", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "98b4ae6c59cfd854eae0119fa188ce84d8256d4211c814030e0ab7cc3dee040c", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "ad0be2bcc812ba4f03e035994a2e74645d04d0a44f0db01768370728bdc14892", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "86061886b4d080b06968cf5ae369b0c0a50304e6b4528c63f5c7ae60ac7c0047", "T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "b2ea544b574ac5e8d061c3d4f73be92d53e090ecf54675714777180b6e8bab8f", -"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "14a38e07735132571cb89211f1fa9693ad348cbb9e0ed21bdfca7a87cf9d6d41", +"T3T1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "aab8b7e5a5c44a9aa1436d527b710639e6ef3119645c826c493c202e2cc71d20", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e84bdcca5f8e58999f6f6d6b7a4153e330f12b81ad9d953a7cba003ed962d54", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "693a99cfe8e7f45957140b0c626af9c7e2a1c7a5337f43764602388c7a456acc", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "d7b509f3f7b50717d32e115c132742bda77a7bd4bde3ad7d2e81bfe6dac6d438", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "db3f3488fcbb6e896983ad793d836278c19b8026c3b5295d1f260d76ba6c9a1c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "4ada61ee39dd962467351aedc082d17a51e46f7a4ea9f43cbff66a6f0bda3671", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "735be539d1122ccc80dc03d46f1b378de5a6911f10107579c15e4e435175c4a5", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "2ebb6be9b8bb8ae7c1f8fc88a61f1a5b7e4a1f38f8367b410c0ff6e2571b0245", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "00ad4370521c4f40f049b9f75da23d4d064789a13ca557b84649796768a3b410", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "d79ca25a0566977da962d0e26eb5d0a7c51ffa529bde5243e267acf02bd1b41a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "d79ca25a0566977da962d0e26eb5d0a7c51ffa529bde5243e267acf02bd1b41a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "9fd453aa56ad3ffd4ba3f404f8a5d39e41661c14500e2feedae8d8bec1d5b3eb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "17db86497ad037b130a3f58ba9eeec1ecdf84adff0d35eba34bba37756f61dc7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "8667c5a7eed33ee4aa7cc280abfe9e05444dccbc42eb4049ecde6139b87f8460", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "a2f5c69f8a952b99a00039972811e9e0056f558883c546a834d3c5e1fd6c2581", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "afa62348327c167bcf217ec9788997504767dd17a52c330bc1d90c3b63dce6b3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "2b37e888ff826c253fb4aa7ce4cb1af668991cc5c27781e1c9b61b018465f965", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "03e18bc21112caea1731998aa53d2f3e3e2daf92aea919c68ff69a46383d66df", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "004e28b3cb581a1a0a1e1eb911c48f292bfb85b1196bf8a432585a62879137f9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "3f56a0ef2d185d1da7998b3fe75fbb5a95b3b868e1465ae7ec13d41135908f70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "3f56a0ef2d185d1da7998b3fe75fbb5a95b3b868e1465ae7ec13d41135908f70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "ae0fc825eae0b154aa6d1812e959cbcbe328f7567340f8eba0a817c56378b337", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "26f606ce3a562fdf27beab083e76aed63146c509a71897cc5dceb0c6e7707a00", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "8a02a46475c2487c8cf52daafb0aacc2f8f3069a7825f4e4aa3d65bb419d14f7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "5a6b4209bd1a2dcee568d22cb33b46498c7ad35c0fea43f7123d97b00e0b4891", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "cee6da8765af8c87d7ab0344796119aa1bc18ca9ae38b263b74796e8094e725d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "3553737e2da77b68c6f8fb3d722ad92946b4e9572e8f7185c2cde2f8ddabce83", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "b0ae490bf7f68b67c883186e3060b8aa693a053a2100aeb719954c819131cc37", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "54a53225fea4f975bf73ee76dad27bc97c1b31cbcbf73d65f7315a3bc54d695f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "6f926ea3fecb8b1ad6ce826bb048918fb2e9b34af1a22d1ae3af6f3676143dd6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "cee6da8765af8c87d7ab0344796119aa1bc18ca9ae38b263b74796e8094e725d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "3553737e2da77b68c6f8fb3d722ad92946b4e9572e8f7185c2cde2f8ddabce83", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cebed16d5b4c468da001bf58f4ff47cca9807ee6902e4d04d784f04054916708", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "fbfc7adb2c54f5c977795c5a2c74ca9c2dcb1e2205a43a7bfba6a7dfdb6f385b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "56eb2895e2619935964b63f53d7744d71ce99930b41bb3681f42333ba9c8928b", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "54f1b9d21e7732f594bbb3a861c180c22a52e90212cc7b10929f5187aed9109c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "a07cfdf9111c5a3812360b0a0ec37e2be16571e5c65e75a72feefa51490afaef", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "ee2c2ff9b8023aeeab4b002b79bc0e19a7cb80a796abafed45b0655a03486afa", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "d560af9e9156e7240f7bf75ab85d73152a28aac5d37adb8a874254d01bc22c2d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "5fdfbbadef5de67035455aa613304b1f2f5c116aa1711de69ea5c304fcabb401", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "929ea951a328fd1b047c4041a8f37c54640b96494adcb398c71553b55743205d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "d29e6c579365ad419b4ad91d81b169c3baa509273e0dfffc0215c7d870f5f740", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "4818ddd790a24da2e72394f1680704983134f0b5e8465df02eb650fa3ea2a4fd", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "06888d44c2802f6bd990e270b4287c90e68e9d9754e33f9053039f1b17d35dc8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "9b834db65b02c255c42ceb126ba3948c80e0c5c0b34261bfaff477b8640d2d29", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "bbfab6bd344b7049b4037b2048aa5f8c0f2a06f484f480737a576b385e063e18", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "619ac98d1ff2f0072364484db53c039c0e5b07dec27b42b1d1d60af9102cef91", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4230ef063d843ce46979626f2a51cadbdb4f25329d19986315ba8fce318a7e8c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "e45817de81930d4051ccf7a80a9215a6e109ec6d8cda299fd92565ddc8a4c411", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "09473e7c67b103e24014f8f216b39a9e0039b49c450a2bdac65867196f1ce4af", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "9f35b80fe738a4a1975bcabc8c4c871f1628c33cac17d84c1fa863527d572f70", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "5c5ba93a274297a08e605f536f12a71f03cf00dd37aefddc4fad5d8475c8e5ea", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "38721a5473208be415dec60d4c7a354b559aebbc4b8af79a3060caf99e3b27b6", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "3b207c867838912e0ad788f67b81194809c8a00421af1bbd6b17eb34e904a882", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "27e148039bd1602134376bb5e099267b60ef61c50f974d5ef7365519bf7193ed", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "ba1306657f8f7021e8b45d3742f4bd522577bf8a4b844f7d1bc5903e9eb7c3c5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e177b1c22eecb9936e231ac2dc4441f8e1ce86cc2b0828f229da672a9e18ec63", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "801c603262e078e894818bec4bd3414a2f74e65c039efd0a69b63af26be7174e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "df6bb23c2ee44e4c1e41a0eaa4dbb8082aa0d021194a476e75f83f4098263e93", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "c51757cf486386b9f912da0dc0f2178af5db9b2e5721137beecb668a0946b515", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ef0748e16b7e3533b663a8ea7bb9fafc19d26f02bb87f3d7a217fee07e1ab84f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "afdba7c3e6054f1dd6ad79ea38186469546a123ffa4de469410acdd8d9852ed7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "066e1c41b30286f95f4c3841c390760810ffe7f10e1ee0e42f692fe6114d9f7c", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "ac2995a9a8152fa5f7d0d4513d3348e62a665fa1096eee596683b55eb7123c90", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "2a6b6f97de5fcec4e33c7e87948637e684c270a8a4f05f7ae483a6a3d2c866db", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a2f0ef6921d2ea0498e6b41ad863e1e6185319b8d3c650d10c26d9edf627c439", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "3dc05953698bd0ea1c2f2721e790d06905b9855dec21dab64d5c2befe5670353", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "e9215bccdfc520d59fa60fe93508f0553324b8f56d3f51203dfa9669faa63333", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "198e675356f1459a5203c4f72e9d83ba7b829d4f899967c4b01ea5759ef149a4", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "de40f18e4d6e799e9a703a818c98a75c423ae7b68f756166b7268329ebdfbb93", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "fe84167e64863a452f2904c75b4d7aa4cc1bfea89da084b808506f3a21632841", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "e6c33463fdd50183d1e1f8409a3e57a3c8300158c9c154b230c45c00bb01ccb5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "7102062efc7146edad18ef1286645ea0c2a6a8297567da54b55f2ee887fcbbcb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "78d6867efd4bb1e0a4a3a0023fec984cf7865065a44e096c1ade938229d09ed0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "cbef31ced1da79e9c34bb33ae6264dd86b984c5dde07a6c305db1a950c95b589", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4282eeffeba9a6c78d90a3a34a585a8f6d9b3d850d8e52221505e36cf650bbc0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "2815b5a1e493a1c0047d59d98ba09c81d514986aa80b6c9fdcff16e27563bbae", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "b7c9aaa1fb8628e4e7a43bd98f310b21e712183fdd8f43b39dce57fea926e365", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "f5302635462623d04be011eed5860d070cbeb49b483cd362d989755e81085438", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "dab696d9331b18444e02d1f06ebce1782ebb7e9b279644904715719a0f77823d", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "a84f4d55d2ab52529f3f547c9bf9f62840eb44b33e183c3a2aae96f9e88cf3f5", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d0f26a8afb4f5f24c7694957ca40e373d84bac1dc0a4b7273a0d7c869535d8f9", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "edb0d416b03e1ffc910dea2410e34afff3c9f5e996e81737627074bdaee287ce", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "46363a5db8a0fa809261a804ab3135820346e9ec5194f880b7e892542d8ae336", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "46363a5db8a0fa809261a804ab3135820346e9ec5194f880b7e892542d8ae336", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "07514088e67f0a915181877b26cfd4cbabb07735161f316dc39fe31f8c81a154", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4ffcf7ca9a01aa00d9999732b9be245f208ee75113133441572e7c278c684034", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4ffcf7ca9a01aa00d9999732b9be245f208ee75113133441572e7c278c684034", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "f0c9738333defb776f8dae8f7fe23e826283cfc99c3224e53e81b789263df805", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "9345f55c44781c97065ee0a802cff1093d0cc3a98827205905edd753cb55c1f0", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "695151a7ca51d1481cf9f396635f91de0e7a8e0bf12f20a80190187be45acacb", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "ce98b5ebcf22088162586852f56042ff1086b6e64cbfdd54058c11141faa4492", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "5df04325df3b9cae4af5c4cf4628c85e98882d8fb705ed6393bfc840d580977f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "e2c60303c38c9e37c6f9fedeb69564371032d0ffc2f5b896a72b8303bb551b52", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "baa48d45ce25f87c9974a4d0ef9205500204951f06305481278c17c92e0b6b19", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "2759215b1eec42a119ab8610a48754f0fe77dcae84bca889d456956410d3f04e", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0bd549cd6052eb6a6ba08e59b569631294678eb5211daaf5a12a0ec352408a5a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "c73cca1d9eb9a5085fb5ac987aa695ab0228944eaccc114f853fb8d80dd24384", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "a443289706b5d68ada534ae4e0c0a3aef49bb97636f09ae8ce0b87bd9c50f5f2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "a443289706b5d68ada534ae4e0c0a3aef49bb97636f09ae8ce0b87bd9c50f5f2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "5c2e767a03fa926c475c69481839762d42a9845f24d2f1b2d544fdef70e66e79", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "84dcb4071cea82356796b4602e471065a3c0d7fd5dd3b715ea2662206d78a4df", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "be45e97deab2656a94ef5cb2a81cdb476da7916d608bcc097c609d68c85fb085", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "b3a2e6743105787d1801cd9e42d43230e7b379e64ec9cc7282a0c997c0a2bcbe", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "2a305a75d0ee6001bb25a2dc114a53f661dc309edbf1c045fa3a5c2e4a48b453", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "ddb852f680518436dbc8c20bb3748b5b4eac46e59f13dd85e857a8472373646d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "ed3edf0099b467d72db3a609fc9dd33776c66715d5250fc8b6d7ed9d4842f40b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "1374ab8a9b02ec9921d4ca3aac92ab547a762d5b2249230ed109fbe0ca856261", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "d79ca25a0566977da962d0e26eb5d0a7c51ffa529bde5243e267acf02bd1b41a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "7fa038224482d59daaea83f7117283add32b96923ce8f8d7c42090413488a1f3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "b3a2e6743105787d1801cd9e42d43230e7b379e64ec9cc7282a0c997c0a2bcbe", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "59896926eda95b85a2cb39ccc64d642bedccb0ca6b188f7389c66221edf9c49a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "ddb852f680518436dbc8c20bb3748b5b4eac46e59f13dd85e857a8472373646d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "ed3edf0099b467d72db3a609fc9dd33776c66715d5250fc8b6d7ed9d4842f40b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "0572925240e735c124eda56951e88b4e5c2f351d1b028cfcfaa27ffc5657ee2f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "b3a2e6743105787d1801cd9e42d43230e7b379e64ec9cc7282a0c997c0a2bcbe", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "8d93eaa9ce1e637463fdbe5a9643536b65ea17941dd8e75c378c197da5709d82", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "ed11dda027035a0b8c795972909652c479502b90e5c3ad71dcc3022096bd8720", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "14210d04f0a1198c97b71254e2d438e3788c99cba9ccfd979ad7a46841eb4998", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "32c646da59911a5ef12b50a284c90450389c548fd4cdd388575d4447e789f68c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "0c7642919610e011d55d4d008a31b07a98129b1e811dd8ca6df5bbb0fc7af585", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "791150d8a0da0fb4eda430f41b5c3daa2eb632865cec3b40c5cd3a5446833450", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "d83be2d1ae654a88603bb7933f829f499bfb77e27b86c07b086b0f059baf596f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "30ffd61da37791b21d9f4f011372ee41fd8f68083ec4ff6d4249d48b32e264e6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0c3d098e807d5ec7ad71fdca218daff1e8208c47af2c152a3a55f1a27b35348d", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "ccf195a90f1ab4019dbc260fe75b0ce8b0c995cfaf642a0a9b74dbc180404ee6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "0b62dc8376a93a305054abf119dbdf81c35b9d3b0db37b1ebf3c731a2a765605", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "795c56f9b39d6784f4e3029c366bc9aa7e6707e038575e9f6009dde5a4f69e09", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "50b102f12880fa63907e417e41c03be4cfdd58c8e60116b6c9e3eaaef19cd7f0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "20716b23761c38b4818edb8ea865505937218503463547f4018880fef1d18621", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4cc4ee2188f10ddab949649e5de14459e5f80a387b5378dd8d5adc5c0bbb923a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f1cd5c68f4e55a617e9b1e3c59150110f517c7dba5f098b35554467e9aee2547", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "65962802292bdaeb4b899e5d4b185316bbffb42b2ebebe314a276bd3063651d1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "1b50de3e3963400519166982ccf411d50f9a3b8695bdd4c747ac511622bff014", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "c2e3ca2de0555239486695063ba18ae2e1c98f7ee345182889977cfdcd8c31f7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "4dce8b8a2db172fb55819848e6d1283703859131122ec682266824a04dd42b60", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "bef49d2e1fce879abdd3b6b4014283afe532dbea3641542b364593ebf2d5da7f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "310a13bebc98949c82287ae2461a37cfebfb2ab811afded72d8d80b1887db910", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "290c8d8d549fbcbd2fc0f683f593f651b99dedd6c8100fea05c3f998a221af70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "290c8d8d549fbcbd2fc0f683f593f651b99dedd6c8100fea05c3f998a221af70", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c48420256f3f6f60ac2d1dee1de54faffceff8b2083ae79a6d8d6a7957b506e1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e705d8dd033ecc40d4a9f4a1a98db04812b22ccbcb0fffe2c41d9bb0ad3d65ed", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "b72fb048e015e0dada4d024861f2ccbb58434a4cc6885b08ff4886d301b747c6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "f689ce1620209d76e4b710529e795f7c42a3aacaa7b9ccdc489d1805e295321c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "fba347cc276d28d844462e1a51e43592fd7f2517e0f38878d3df41723389a964", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "899dd97675b35d9b0936937371a57bb43ea9ee2d2f4b59ef2956b021a869b3c3", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "557766fb3b8dcd734565f41b5fc83301a9ad67a8dea3c566ddfc04369dac635c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "e4b2860e3f1d59384cdb463647a9c7e7875b25685c0c8960b8659f5576a4f00b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "b3a2e6743105787d1801cd9e42d43230e7b379e64ec9cc7282a0c997c0a2bcbe", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "780262d5e777a6fdf3276da5244d9a779ec60ee7c9dba611a7291c5afb0e6990", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "d3e145e57adf46f6426943a12b0795443f62d9d423844876abf0551b210c3d1c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "8ca0c9927fb9d7562d8a6c0c3bf116fd3ee711425663c2a2de93d3dc6e07c4d9", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "b009ae6f38f7527e7962a16c141d1d40cf71d38eaaf23171a36d9f6f86a14fe1", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2e6188369be0aea62694997833b4286010eca416ed254df19ed5c83dcf1b631a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "539ffccd172e842310129aad6ca1db19de33824b824b503ad377464caec798cf", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "7540bc4a0bfeb043c42e0a57fac4c2a65d89428dc097e0e7cba71e4fedd30fb6", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "118590c0a42a29cb2fc154892044a6e49a87489194f8601ba4ff118d9417836b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "0f976e48e20373d6f8fab6c3c23d114a9e10b6506c3d67dd1b9e1a42595ce6c0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "2ed71bb5a8613eeb0393eba8024dab07240ba09bacc2d48b5b3ebe4193913492", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "cbecb0c34dcb6b838899b899b9eb004161fc7b6c81d93d860f16669b94208d99", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "b3a2e6743105787d1801cd9e42d43230e7b379e64ec9cc7282a0c997c0a2bcbe", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "de0b85cb0c14933ae5026f9ea8839f9774691e07608fea85a61eb953eb69c55c", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "36d0ace83cf3aa86812a04f53397b2216434beb8036fc7f9ce2297924769fee8", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "20f2e5e81ab870e7b10bd16345ab55ce96bd76b56a45b1a5c57acf999b1e1850", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "864649b2e52d655f264c4990d9e8d6cb8f0d97fe450d56a1ef7bec943e55208a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "2f6966b508da52321eb275c4a1e06be8484fb6b7e94f4ae23e5c44f81d7d0ac4", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "6dd4535bde57ecf61f920aad6ed78cabd5d724665631bd04cf57b118f9baaee7", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "c36275c2a8ec12ac869cec801f1c9509fcd3e8e85fdd984507e6e682e0506059", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "ae3fbeef05a0d9e5073403793290e827c997ab0a3cfcefcd09dd5b259d1cad04", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "ba2a600a09e95c5102725af6552f82e7ce0692a28183f8aa74853336c9824f1b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "6d1bd37c823a08010ed4ac80e0fe80a463ab41a9dc973ab44bfd385192479d28", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "6d1bd37c823a08010ed4ac80e0fe80a463ab41a9dc973ab44bfd385192479d28", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "3f5940b122112747421e57bea49045b37d4042733b4a6c111d7d88e2f128bcdb", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "e0fade2d1cb5e772997f256fe838411f48102383cfa5574c63ce1af59026d888", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "e0fade2d1cb5e772997f256fe838411f48102383cfa5574c63ce1af59026d888", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "400faaa337bf42be0d27b07a5a59f76f0bb0d7140b8c05dd11564e0f7fef5d81", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "a05b35d225f9517245fe0420e76e6cfb55d27ede147c855f9648e9bb1d9fd509", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "74ba0a1b6e9701d5179b0edd77f508593d93a88a8948eb6304bdcc3066cc7b28", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "6a1f8729311db3ecb8cc8bc6636a147a9c6f2358fb9440368eaf8aba40356a1a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "a2991eaa51ecec928c90e4c2db586de1ba51e901e459d3ed68db781b75f58c78", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "b157b769183464aced80f230e23a0bbb33cd853c85e956d670c4808b35589302", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "220334cc9b8ed8b1b078d775acd14b1f419d67f0688eafe6323dfde0b286b74e", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "99425a1328b9ad48c798e4a6162c7b99c557d2ad85af397b696b1ab342b058e0", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "d79ca25a0566977da962d0e26eb5d0a7c51ffa529bde5243e267acf02bd1b41a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "d79ca25a0566977da962d0e26eb5d0a7c51ffa529bde5243e267acf02bd1b41a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "6f677609aa654fda128f95e8f1bddb49c8f629aff0e9732b18d0fe617719a05e", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "cadd74ed521d57ce1222a8c656ab46d52021ee37b0742374048dc6a0f573005d", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "8c017022078689c78ab0d8c03ff9e92404a8748b55bf1ae9a1bae80591410bc1", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", @@ -17876,19 +17876,19 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "b3469c81a377800ef50705072e5a3b7a96450a77b8eb81c6acb1d97a1ab439ee", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e87c63d6babef85f0e231cb0d87e07699ace8c4a0fbc2ecadb7b7370ee0d2826", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4cef05448d17f74432c6bc49538933c33725ceb8822e6e1c6bcbcc1f627f6651", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "147184c2dd0ec5789cde319ed3d596db867596222ce2a8e7b6f4ba8bd9ca109b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "00e7a58ac24fbc75634968e133a0da49f2f75ceaf008c652b4daa4d35d90976f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "b3a2e6743105787d1801cd9e42d43230e7b379e64ec9cc7282a0c997c0a2bcbe", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "25a83229ff1f8d959fbde963d7953f9b8794e641ddb5b48c7a0dfaa283d88862", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "6895043bdede0abfe6ea3621b01cf372a3c6dc086bfbb883744045a64983b97f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "0a15dd86b1466603606f7cba6cd3d74583600e2288f311ce9f93605a9c475842", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "487863ea8bbfd60c20af0a886339518ad6d49dac18dd59eed1545021f9ca285f", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "24da0d34eea976b53ef76a96426152c840431f31284b63f7ab53502b67f1ba86", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "ac5fc4769aa949042fddd42f6f29ab81667754d7058c5a63a1bea7f0b9a6183c", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "6dc20a7580a0d316bd8067555c9f6172115f05b536464c0ebb55112899b65d9d", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "0095486b725e4b46e5b48e6161b13f49c998a3f08530090476687e7bd918fec8", @@ -17902,10 +17902,10 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "0095486b725e4b46e5b48e6161b13f49c998a3f08530090476687e7bd918fec8", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "0095486b725e4b46e5b48e6161b13f49c998a3f08530090476687e7bd918fec8", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "0095486b725e4b46e5b48e6161b13f49c998a3f08530090476687e7bd918fec8", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "6895043bdede0abfe6ea3621b01cf372a3c6dc086bfbb883744045a64983b97f", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "b92a80cf3e3e731821dcd724295186b913fb6ddebc3698b3fffc9224a24a9455", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a97329d6fd703e8a08f92720b42a0742074f291ee239ec3eb8644b2406e47b05", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "fe545596d3aef25d658567d3b6967bf9219e25fef0aa260e5830a6aa3ebe1078", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "487863ea8bbfd60c20af0a886339518ad6d49dac18dd59eed1545021f9ca285f", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d5e26833b9f62ea51012240ccbf0a4d7aec5ab80d2a9e586dd3f69f4af6681ff", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "342366a081e414f098ca08a2865ff8bbb7b9f39dbddc70b11b897b57f254954b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "c5e36f47f6fc2b499140aa2ee5dadf5c90fe57d87f0d45926a3c3a8585f97e7e", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", @@ -17927,14 +17927,14 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "bb7bbd93cd55b69a9b51f8ab6ac8a433a5758ea55653ae34cd756b177f2468de", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "bc101a0832e04d3556dd0fca2057f431a09a717a7501a05362c4478f0df434df", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "290c8d8d549fbcbd2fc0f683f593f651b99dedd6c8100fea05c3f998a221af70", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "290c8d8d549fbcbd2fc0f683f593f651b99dedd6c8100fea05c3f998a221af70", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "3b9ae5570af6cc379cac67f8921ffbb88e1ff07687904c348613d95bfb2ab07a", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8f905e544e13bad78f9dfafb32f8c7e7991a3c32bae764d22b63062d7c9ef067", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a6ccbb0f154dfbf2364c32fc4406437670eca959a090808f7367f1b66d5e2f36", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "290c8d8d549fbcbd2fc0f683f593f651b99dedd6c8100fea05c3f998a221af70", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5e6038e517d1a1da2276e588e3e007843e78313e6fb367ca9c414d6f9a696551", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", @@ -17944,14 +17944,14 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "f40c816958c6f00c3852ad36676502211254b0ae43d6ca1544748fb65b46799b", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "b1df6a19e67e5893f59265eb6c5ad2bc9bc4897152b388666b6c47653c1fb532", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "47bcacc0e681fa46b97a4f2bc71fb40d208b1bf8e0776105acebde6764ea0731", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", -"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "e9804a905656ee90ce5153a228645899fbe63280408a00bcefa997378740c1b2", +"T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "ad4ce54bb21ae0e04b9fbfbd51a8b43eb294817d3d8135b3f6606995b347b04f", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "ce50bdc615edaecf4347682e8e82ce768200bcaa03cf7d32df050231a3dac2e7", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c36c07a963201dc34256e539ae82479ab2d0a38ab2db3967ac34df72e540b181", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8a7ac8c4a235cdfc6cf3fb83e363ea1534a108931274019494464d723fa271d3", @@ -17973,13 +17973,13 @@ "T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "d2e14397347f3ffc44ce590dde66b7c9f79a3296538df4481a7a7a183013df6f", "T3T1_de_ethereum-test_definitions.py::test_external_token": "0e30eb035d22ff1f65adcd75730eed4a8a69a90d5595c42aa1711b291a63b3eb", "T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "1883a1e91b55debd0a644ed1df57b3b4b4dbe760cf8b7291baf839ce47af37d3", +"T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "d9aed1fd3bb2fe31698a44205c89530d9a393033b3501c1e7f28bd6c8def0719", "T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "965c43a0dfa492fbe03be789e086d8870a35c7930242579eb9e9a56f4d15c05c", "T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "419e10df68dba2dbb64e49a8abe975ae45e6637ac61028ba1b8cb8c5dd38cf95", +"T3T1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "e7142586fc278628bf6afd85f8d4969374b63f71c0e683f46256912d5af26e99", "T3T1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "599a962aaacb92d048a0da6de5303b8c1d3401dd7892f54c2672f874423a84b3", "T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -18018,16 +18018,16 @@ "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "54d98f649f243752f9935b3bb47b511a65f74ee896d07cf6c62f829b10b9bb06", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "c2200945cb3a6304805f0c09da6491b064cb72eb68533a8f7eeb8b1a8b7dbb56", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "3e89323f826bc5f5e65de9d777a4332e9245fbf621f1eec24f05dec607e12717", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "aee75fa519e4fb11d12bd1b6547d9440caf0ea40d8ec0e152c1317f613d65eef", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "7c3884bd9aa99420534020c37dd9610ca23c1aca6b583da3195e8fb73f8233dd", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e303eb3da5f8866e762bfbabfd5d1bd17618d5874b447e6a95bdf4120b97378f", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "3e89323f826bc5f5e65de9d777a4332e9245fbf621f1eec24f05dec607e12717", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "3e89323f826bc5f5e65de9d777a4332e9245fbf621f1eec24f05dec607e12717", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "3e89323f826bc5f5e65de9d777a4332e9245fbf621f1eec24f05dec607e12717", -"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "a81b17affc6bdac7f96e803e69d55310007d21f3437dd312051183f749a44fb7", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "0ed72f96b717a9f2d6a6e8f81f1f3e30f0d70e379f8bbd042c9113c54670ce24", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "fa3a7368fb098e616f16a2ee4f94576a71600423a07768fd200cd44e1281a432", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "f1700ed7c3c68be4ea868d9e4bed7f59bd03ce25b250dab0bf0f6a47aa081db5", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f11257b49c1a48c66e02f3343f8c0b5c6e55b504113f3f8da735230529774bef", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "b7bf60fca9f3a09e6033913f621cbd4854b6c94bac91c6224a0e6cc767cc6092", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "783cfd2b55552c88f5557ceaa14dece5f6c56460d3ef825ad8414437293ff73c", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "f1700ed7c3c68be4ea868d9e4bed7f59bd03ce25b250dab0bf0f6a47aa081db5", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "f1700ed7c3c68be4ea868d9e4bed7f59bd03ce25b250dab0bf0f6a47aa081db5", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "f1700ed7c3c68be4ea868d9e4bed7f59bd03ce25b250dab0bf0f6a47aa081db5", +"T3T1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "76ce0c390df99c262601bbb06e441b7d18d97cc591d1747a1db07ad1f711a6e6", "T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5c1186fd178223f4f8c0569208d2215bdbcccd40933d1382e15dc1d2241f2736", "T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "41f7a61ef963395239e8cb2a92b73e5349de201e1a6a603c71d03aa5cd3779d7", "T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "c8967707fcc4cc3083bfa1d4aca29af948304b6b07b01362bbbc2f2566d81ca4", @@ -18046,7 +18046,7 @@ "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "308a8ee38d4a48a12cfcc0a88843183ebf972e06350c27a5b837490eb52ed14c", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "6fa31a8d65050b9eadb6185b10dcfda0d8a55bd01e787d440f31e38651df2dec", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "62c144084b9756d904b47b6bd2076f78ece7e8dff51999f5237b50277edd4d68", -"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "c6b2ee1fcc71e7e5c00b241c8416333124351adaf9e379cb266d421375242751", +"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "9a69fd24d792d82e5d81bcff88968c5d3a4b5ffd1a298b9333fb775bab432c2a", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", @@ -18060,13 +18060,13 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "98ca7b629fcf0c4c67be29317710bcbe93283fa7315eb00bbb06505f39a8f9ee", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "516e53ced01352a6140e4ec6c38d7a63502161cf584582df61a8afc22ec855a1", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "af4d5b864e9e3c98bfd40db0197fed2080fabc02690c0dce4a85fa3c1b4af3fe", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "c8445018f7a8ac86e989dcc7d874747c617f8f871215cd9fe0e30fb820f5d49e", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "ac62f48fae61aa6f1c5315b7ba83a97762c44b37f4d765dfca3e19d1987e7b82", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "ab4ee586b8baf7ef29620145bbf811d541fefc075d2c94c0bc81fbbf09d86edc", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "ea30fc462790e421951b4adffb771b2d4219132ad3099e1cff3cc40d7d957cac", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c187d70ff95698b4facd48915a678bf1e01d107ce9c0d9f7c265c8380fe3aa54", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "302024fccae3ee96b0dcf3b621f411149e8565e26b7e00c56dd9d548e2a57cff", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "e4f46ca198e4c2db6c8d9b6d50026e05c84df75f43a27afe5708b0d94a22afbe", @@ -18081,26 +18081,26 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2761c00663a989f9c8412e3f19b4a5d2a038b1c22572aeb23b465ef911dab592", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "2fde507f4b6657ed713db3c79857964144e8625cdcad12923f7b667cb9304bc4", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "1d83a24a8e3c8264855fb6c2a4167fa9f7eebc8b0b2536933608ddf6e1c05b1c", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "8623f783bbfb7d0749fb5fac5d6d038c219e6ee3ac752530f8115ce50e9a5c56", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b208c74182a4bd2df4479fc68741e44b8819ad06d77b7236808c2d7aa5f95e7b", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "dcd7605bcefe01b9b5331d99a9d62dd46e6d1d8eaad6aec92beced3981beaa99", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "ea30fc462790e421951b4adffb771b2d4219132ad3099e1cff3cc40d7d957cac", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c187d70ff95698b4facd48915a678bf1e01d107ce9c0d9f7c265c8380fe3aa54", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fee7cf6fbcacc9976bbd37a10fe9f58f25c96c16adc382a50cde090934f4f2eb", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b4a8bea9c0ff815b833ef3ce78ab553eb62db8c0c1f3608ba948719c8528c9f2", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "4c7f1adcaca46cfa0df61e35bfb7621cc56cc5f3a175c14ae54081073d2f2499", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "516e53ced01352a6140e4ec6c38d7a63502161cf584582df61a8afc22ec855a1", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "7be375d1db5d67d474266ca0c325ead140b6064ba85459f9d0758689a76f0c72", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c8445018f7a8ac86e989dcc7d874747c617f8f871215cd9fe0e30fb820f5d49e", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "212c0ca8c8e930c2b2ecd1b761dc281a41932d7029b6e81ba346fa7029f4b6c3", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "ab4ee586b8baf7ef29620145bbf811d541fefc075d2c94c0bc81fbbf09d86edc", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "4b02a2725793a8af6a4b2ec09b33af2fdd38462a1020fdbf092dddfef7b407f8", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "301ac123204e81766c4a4dba0f829f007f3c19c7d11274bcf3b90ee9df2b486d", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "fee7cf6fbcacc9976bbd37a10fe9f58f25c96c16adc382a50cde090934f4f2eb", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "2fde507f4b6657ed713db3c79857964144e8625cdcad12923f7b667cb9304bc4", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "a118eab4ed44b22ed234c65a9bd46771da21efd0a649948cac00869d6bc97f0a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "8623f783bbfb7d0749fb5fac5d6d038c219e6ee3ac752530f8115ce50e9a5c56", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8568748b3ba3d78f205ef722fe2af5b1838ee348eda4cfa133797cfd9c382113", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "dcd7605bcefe01b9b5331d99a9d62dd46e6d1d8eaad6aec92beced3981beaa99", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "eedae983f5b61469602e8d00c22f69b51b2aaa5bf789e5b8013632af51785e03", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "691f7326c5c46b9fcb54e7e7de39ffe5b79d85674ff35fc4fa10e5377ca077eb", @@ -18121,11 +18121,11 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", "T3T1_de_misc-test_cosi.py::test_cosi_different_key": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "9e7012c653df31820568b770277b871d233113c2ec2b2e930dfaa617d23672f1", +"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "a57d8b54bf797717866b44189f046f15e43a5f245625c64399a9811338c815bd", "T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "9e7012c653df31820568b770277b871d233113c2ec2b2e930dfaa617d23672f1", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "d7ed75e102b63097f48cfe70d32837e99c8f5c49eaee23dcc8dcabc203d59967", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "173a3e522133d5f8b958954da8c39704686a49a8905dd8ee8eb594c0eb7173f2", +"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "a57d8b54bf797717866b44189f046f15e43a5f245625c64399a9811338c815bd", +"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "f2fa2177965b0320a3f4f39a733ebfe079b2896f691a3fe3fe437dad958e36e6", +"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "7bff6f2249d2b016df0b801815fb51df1b1cc4b98752261e38440d281485b158", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -18133,20 +18133,20 @@ "T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "3abd615eabed6032a66c9d3f9a45075c3c4a3d8026e835ce0d7aeb58f56055f6", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "cef67907a9b33453883f13f404c64327de1016d0714b9a70a37168b7e4e0c02d", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "b01dac46038029b21675921d6d131ac920a135be7f2a91d93e45a4803a0c467d", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "2d193110033480e0b1c16abb63501139ffb1080a938e50789e0081379ed2a087", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e9e40fcb6012065d5aa89851c7870eb98cd7e9204ee676a9b37c0c28cfb2a753", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "5cf9a959941d64730eca3f4ae8b62c3cdda11864baeadcd9b4a3f894946c8868", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "963f824de6eff812253e8cbc5448a3b2458a2793f64c1b0611b1273f76632f4b", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "fc0ee9893a307550630ba8c0c99b1a96dc3a78523d2e918d8fc48adfe55d2c25", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "484c1a1081b63e028daf8f0d998ec04257799a7dc72f8024f82099680f51f945", "T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "17aa3bac3698b13446772ecc7344247e93c6f03d1906a2ee5634fb3b34ca96c6", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "94968f2441f9086c2cd9a560b5d0af677cf275e20e7f5fa4c128bff6c64a7d41", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "1712ab103587ab7dc36f04c18792980ddf7925b4ea9de4a6bcd1a83d2c7890e9", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "98ea5a14e818f35e7959b4b8c6526fd00377c6159aaba4f18e6cb0e864872b38", +"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "d2a9871b8d61bfb36d8086d1c570d9f2a8a6dd1a04ad3c4e10a5cd023c128570", "T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0736b5c166acd867f8308d4a7429a0650aa512250d50c7021cff473b53ad8921", "T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "635fb46af6685f1bfafc38a067c8e2a420f1abc94fa5996d7b7c6b8e9979aa75", "T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "6c2aab04cccc714f40cacd5a405053ce2b05891007f7ddbce29f5beabab7b1e0", "T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "b57b18a150e85887d724e8ed9422d1433705786f77f287cfc8a9c84205de6639", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "ce09f4bd846b200e487c5860a715f3a9b72de88c939fa673dc31722b69f37050", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "ff7aaee28bfb9750f7e0b184353be8e27d36ab50752e53460ba40d4bf12fad4b", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "6699507cdc6c60cc5eb70e966255f4f9c47164ca71784ebc2341fd315e056674", +"T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "3ab2c61df687955c71dcf44a18f386c41d4a7b5f6cf27a45aac0e1b784a29a89", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "3213e0e870833bed27501f3310cf0b56f8891ef0b091f62116b418ad289ed6bc", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[128]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", @@ -18169,7 +18169,7 @@ "T3T1_de_misc-test_msg_getentropy.py::test_entropy[65]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[8]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[9]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", -"T3T1_de_misc-test_msg_signidentity.py::test_sign": "771672fc83f043bd854a633f9b5e31cb9be6853acab78f8d5c8e8c4b49a0af7a", +"T3T1_de_misc-test_msg_signidentity.py::test_sign": "ba6a1313b6e9c3a3f4632b522bc3b13a7adf2cbbc4e3e65adde532983c0d40a3", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "4e6add2ab1b808121208c2f587af849986d275c24aefb4dfde60a1b720d35c55", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "336382c1affbe9b95c641db57f0babba61dba662aaff290680d412cbe9d7c5d9", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "38e218b3b3442e382f53d70a82240b64a0530f561e768c03565c074fd8eac176", @@ -18181,55 +18181,55 @@ "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "70d59a451993c7e8c122fd2c34a71c8595c35a627edb27971ceddbdcf048ea1a", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "69cd3987f05ca8e4678647b1dcd5b059e07184f8418d71f1f914da52348a4259", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "bc392936d94079700076ae860db6eb7b6cab84309d5a98c6e8b231a2915078f4", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "36b4807c484397d3138e419686213f2c0f85075d6971bd0ad8bf1b626ad37a5d", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f1137505a21f7e54ebd3dfa4283b6b700cb7b70fffc7853ad7bf6beefb6de852", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "16de73e1e9e3534a8e5f29ddd3f58cf9c67b1401af796e0c7fc9b85e5547966c", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "30b51f5b2760c6cc9cc7c8cc69f0d4ea506d68103a912d2b647d0bd4b1cc857d", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "1a165789b703c489d0b2c24949bc3e1a4d271d8af499abc6fca0ef1e5920fc39", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "9faa48f0fed21d27e0f33f20225f47df801f27b993e3d1ed2142a42fc10f2c2b", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "6bb54c7ed665a70c8c6fe96fd5af76c5c96b38b037919c832ccbf3f5ee91032e", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "1d42a514be43452ebcf24586399c9b3fe2bc1756bc41417c84e8954af4c662dc", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8d9a830233648371b5a31b96a4aa6346c82a56a9857547d00ec2c86ab0414947", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5172521ea9307ab7d5d8eead87e40851bbc956c3369401c644229b20e855d769", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "abc5f01a16bbf53603c6b4686f5436bcde660089d604d498f895dc5131ec5ddf", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "462542276e36e5d2f7f42069bbfef8ec25a6424ca5990cd8794bd5ca50fdee93", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "bd6349dfb90b0a08bd30c735f30e35b632b1a79fbcddaf81b09bf93cc767bf73", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "928377c799e4cb330ce2b76ead48e1554806033a0c24796e6c426d5705b87a31", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9108b9cf9e83f8e68950099f1a792cc42bb0a45b8b144240b5391dcca1c9341a", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "9faa48f0fed21d27e0f33f20225f47df801f27b993e3d1ed2142a42fc10f2c2b", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2003901a9b56cb2fa19516f85afacabd8d71c6b5dc3cd3dd5772e462679f4195", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a2eb79348f54344c5edb41fee47f2296f63c49d9e87b29ff337386718e991b3e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "4fef8756710a8814a1e5b144275a4ce6eb1e9a12194f03179a046aee2771c706", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "326ce796df427e4d7ffeeda9074c2eb07445f47a324650a72ca8568fdc011b2f", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2d083c023cadac920c515a907089be9021a48c1610379171f425c11f4f9e5389", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6fbc3bd093fc448e55f9f1e0c48bfdd1230c889a575c83a21551ad0d9c345755", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e46b6136b649c597c3551e4ec65bb8f8499f03f02fa6008248697166921fb783", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "1aade3b31e8136a7ca7b64100d4c8bbd4264ff072462ffe849d49eeae30c3ccd", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "371bb100fd1da3c9d5ff5fe4c17dd25a546ef253183596f0cc21370e89880479", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8875d9e0ed91f29efdd42c14c030616db9380a7dbad19d6a34dc032e374139ff", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1c26ae870715f96891e1f97a597a52358fe04d37cef640fc980281a7e0b89f24", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "2c8a47450a43f39a5a5a0f0405bdbce32e019499b3b4dfda34609969457d6a3e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "745b498e103c93c90e8b693b051d250399040d3a89241fa565f1b9566469ae8e", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "bc4139932e6e36539238fecd45d644ecfd4b6eca9d906dfb6fcb1ce46e870d5f", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "857a1771d18018c4ae5d784feac308e6d0aac58703321f93e024feef0a19f243", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "dba7efac6714fdf5c8e448a3c13c5711f3f219030d2e69d0d8b4383628a8b338", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a8ece141a31c697cd6ab6e5c17fe0edcd5bd2b93fe2e7048bea5fa8fdf694120", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5aedb08dfdd7e6df735f2276ac403fa4b218df0a49305dba4d0be69fc4cf4bc9", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "092715c6dbf2bb3d487f2d89b32edcdb29606457717ce33bee04f97355446699", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c13b1b9cee0c2b3f5f982722871aa871ccf27f65ae50f88beb8b6d26a3ae30e5", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "042e2c9793d5b6c3c61f9867139a98f97fc614290121c47baf811bb801f232cc", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "f943e8d71e09a442088b567fe167c1e6e7ed4be8da304a51340cfde5925052f8", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "95460e209ced57564b07a7fd4a61497e917438a65968b42c6eac9cedb41822c5", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "02470916906af97d7060ee8e7facaa8ea51cb32818d4fb2f6c34985614dc8853", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "39371319474fe0e0c54d4033937aa6837810b695231ea52b2ed54a9239761fb6", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "361a889933d1d1cd214cd1c8e7fce11b03363c66e06c4de523c7a6ecbffb454c", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "6f45b8551e7551ab7ef885117610b9497734b23e48a7ab57f631ef8dfcd23f30", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1e885897ef74c2d6d19bcf56ce046c9a4102c9b1e6d56acfe23904e7b9600c7d", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "0af94081b97fe02b63c1be8a84138ab82012f07dd5be2e9cc8595c80b3205b42", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "8b3217c3a93edb13d91672d9d0df0b58e3ef9237203ace9e192b59dbe0e71bf9", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5422aa7c5196208d8586aef332432ae738acc3aaef9e8a762f1cc295e75130e9", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "f943e8d71e09a442088b567fe167c1e6e7ed4be8da304a51340cfde5925052f8", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "eeecc58a09f5195b53f249d4e795a51794f80d33a8348be6903e189ce5ee6968", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "166b2f4f97b6891fcadc54399308bcc5eb960973a747851da9a6ac0a1ddcb628", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "31d928bde678bdcfe068bd6fbdfafde389aa9cd0efb6d48ff8543ffd459a5b93", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4f45acb297d49f94af64204dca4507f678a45350263e795179a7fd19638778ed", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4b10d2185f0c74767170b935c9eaa12e5a49a6b9329494ab7167a4bcb4c6c8ba", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "7bf775c0d597075ddf4c74275c3639ff881f2118cc9b3eb7f78e63c0917ca817", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8a15fa524dd29106a816ea0be1aba0cbabb0c5b56622b9f9c83263b56de5f975", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "5d5bd189f86076572c646e3c0286cd8331b0ee0dc79f4424b8bd5c51e632c3aa", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0826a7f8f1039b8e935ec0559d54ae65eb411063f698c7070c836cc308738606", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "745b55318c1c5b18878144053305787e6e57c5f5e1fa7f7f06b020f377083f97", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "29f656d8f9d43d008819283bcd28e4b6fab8351b1ba561c29fca95ed90a405eb", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "113f61ce0845ddc4af4204ec5ac19bc28bedf27c4d37b03cf048a994d6f64328", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "0222b0b55c79114b51362241ec6482f3b774cb1d145fac5a20e96070acf65afd", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "b8d3ddbbfd893f91c841d5e15f856124504b8985ee897234053acc83a5e7dbaf", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b8f4920571b5c692442754a5dda7ef74223c9cdb908a840ac7d21eae958941c2", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "d0bfdfea84e93f9737e78639f322ca4eb20dde34837867f2147fe9c972097684", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "61a62e5ee63809c145c2670a659fd16bd227c48553815e5cea991a0db13b7c28", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "3ef692d11653904c66ac545ac7629f3f8d1eaf159a96306f2e6c4adb733367d4", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2a7d3709680e16633dd6c72dcf42390f1379131671532f7cdfa9cf964c66126f", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "bbae8b148cee497ff332b57281054fe833a1aaf2f82a178744f1327fe0134ebc", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "e5f0d5ab69461a466c727785a8cb9ccb604ac7b8a3dc9d4538f69b4180d47476", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c66532e46ce97ca339f3164077abc375d5ef7c9f1cc9a301202b79a9881a23b9", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5c206332504fe954b8d05ea0edb1d624255a9d450eef63f32fa91e77cb6610b4", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1719e2209e5bfd2d92af7f4139593a5e1456612e61cb2dba114940060fd916b5", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "9ec300c5b6a5aaeefb3fd75cb438265234483489154d3123d8b8f3d6094ad443", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "6875796b913127cd119583bec7548be3ca4102382dfe87a7c86279caae27b135", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0c9b427c77143722750fccb5fded3b2d6789bdfef0eff8cd5841fc2ecf8309b8", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "882a5192755a5c01bf804030f7c3296ba79ac0214ff8a0f6be06b8bc525b7e6d", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f9883ac65490108143f67902a0dda0d2c4a4938222cf535e71125a177c0603d2", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b649b65af0a44b31ade0c380dc311a95a52244aeee4510d6dca84d463ccc3d28", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a8e022547f0714b1c0d02d3b5b005bb31979934aadfc5647a152a5c081dca6ef", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "bea40fe3d7b9c84d082b8cb3ec45183aef9d3116d69d2fb611c82cbec0519d57", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ddb4ccc547519406ad753115bfef921c994158d74a8b1cdc2e0dc24254ac360c", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5bc63178f110db83385d5cf2312d483f64c4151bbe235d6ef5d8d83d416a77a3", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fdfce536d25679937aa5b5bb14ae12e2f7b42b50e747664635e6d6ff1e93f7b2", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "377184ec7939bbbef98db1386aad3198c1279c7ff82b7d4042cc7fb632f75fc4", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c3b981b057211d2b07c0fb40025cd6c868664b1e900429d7981ca087d07e7e3f", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8d274708576f2bcbaa1ba2729cac6788dfed3b2aa77c6914c9579f8114001f51", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d7d3892edf3d02c86da7174b094a4d41546868554da98a0ddf468c4931cf8f9f", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a5de8dfde0d198c28acf275f2eadace675dbd9d4e520576203e26bf828c629b8", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2c9c382723eca89cb4b76aa3e77caee6f8cf4b2947ca1dbf4b5d6af6448aeec4", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f23feeb1f495c66872cc7710c0b9efb6ff61ae6d892341a7563084b4bfc11d4a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ac77d26f757ee7492e6c0395fc5290451326a10e149f67673d6f4cfcc060966f", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "8e7259a76adaaa9da300395eca4ec0d621085229eca92f6248686c348787df42", @@ -18238,83 +18238,83 @@ "T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "943af0108d47648dc85e762619cecdacf75d6a93950b01c7b5f91b6089a22c4f", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a3108bb866d3dc7fcb5b919ec04062329259a3d072357d028bbcce262dc563f6", -"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "eb2de9ea06620346e5c954f673ca9c4dc2c41d858d55a0cd0aa50152d7c4f052", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "143d58d96baeb4ce263c293dcab01d80f6c7c4e5d14a326074e2a465a5508799", +"T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "9471b3ff71b99ac5fffbbeaae0983df846951e0624462883278688196074e891", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "201c82347ffc2a39b0b777d52884c6edd86ef9cce56f24be19be70381a4ad500", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c73e6ed0015fea0b36da889dfd45c94ed48a795ffdc8a0968bfdc8bdb2674cfc", "T3T1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "ab52a805d36cb9209da697d4ed3ae012d75418fb6399d001f09e55ddb001d556", "T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "0de5f79590f6ca4f153bd5b6a6ac7e0d0ac6f6ae5947728032ff7217c5e6c2f6", "T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "7506038c1d9f40387b2b69b487aa9d9e4cb1ac34ce7c4f91893386fad2617a44", "T3T1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "e4cd4473506dc0e0938265190003a384285cb9bc8e176e6ee0a3257c0d1406c9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "400ea0398a37e0d5f47f52507ca0214a7c944158c71a031a3944a8f24c042c12", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "084a2105789004cf8770d4b664fd2f43bb04a606fe858dfb6abf809cfcecb9d1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "f0ec3d2962ca472e9623027c32808e109d35f48e4d09ac4d8832d97739e9a995", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "478809d550c269aebd48a3b25ea69a80fc52a0cb0163ef283e19f5aa264007b0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "146e66c1b8f8661c026be6abbaaebd51a103379eda50ab48dfe24f2166ab13fa", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "988bc968b71c4b7f8bc0c1ae20278ef2bc871a9332a67a7655d0321e7762ac6d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "a019049f2895e1affe043828b277aa95e2eeb63d12d2950905149a4dfc14fc47", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "1675656aea44890a664f3b417d15737e1b4e75b42de31d7f3af2cd4be93cdf36", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e447ff0ae80a65341a274cb03eb6899d5688b25766198c7ffe01da78fe8f13a1", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "4e8e97b3c920a864949a446037dc4a184d41d1cd6c11ed4e40821cb2c5e3887c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "04077d6dc0e15eb0177dc12ade7de7b3d3007ee84185119f59816d1ad4260414", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "0ad3ffce13bb798552b85c362c0619a2a41e6e0bc7d806b8d6888e7efa3525f8", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "6bb1dfe1323acc5e4d0c38f01e3867f6b76daac8c3186b091c4bae1c9ced4668", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "43ca1ca0734b56322c4248ff40fd74460f174ab731fd37c69e76c0a75c19aee7", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "4256ec4d9ab834e0db95e4e6f78fd2838399f61577d5d21d865636a54925fc9c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "5fff82587b29cb09c2734e7cd1f305199c54009f6167b2978856a6ff7383c578", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "b7a8eef7a965fd4b0ddb5225ee47db5806c5a73b3bad8573d0f6436f6bb1849b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "63383f41b4e1fccee907eddde637e204299662efb5268d650b8264df2356341e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "6edc2f515853836ef6926b45eeb0db5589f3fe971efe7ae14e1a5797f2491c4a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "1825eaa51fdad673b8a7c1b7d3a0b9f072c9595b734731cd3597a933fe6ce513", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "898eef52bae8c416148fc522bb0fefea9e8f55e51f36ddca8c20a04d752bddc6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "898eef52bae8c416148fc522bb0fefea9e8f55e51f36ddca8c20a04d752bddc6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d7cf955fde7bc48e6abc34423f7bb04484b839ad1bcc31bdd1c43c13101bcd58", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "0529123725b1eb408b352147f8f7af22a128de7eca69b7a4c3ffea60f72722e9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e4fc71b90af38a0d096eb25abbeec52ecea76ba48cad5c1d5b0e24e6d34960eb", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "21e4a24f9d53aaa626b5b9d62863b79dc64083431826a8c6b9c5089523e7b7d7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "8982754249ec803c2f7ae1e9f1400a7b17afb7c6e343401197ecfa072c0717f4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "0da124305bc94d91e9beda2178da6fb66440b8dae3347a0cd36cd815b2b50887", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "dc7f9bd397828044428de2e272fc8731b14dbf4f96a690b702acf033a63e3a78", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "4eb85e567908b8b3e8ebb656080b01f5f62087e26608d10be0581427c5a4673f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "0b3075440eb59f4ec12c42cdc790a3b7b0549e5c4044160d51b44f45eb815800", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "76f4e52eee3e9a96a746c3ffbe2d114e61a8b74ab7e446903a36b3d5e8544e57", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "edee60a5d753badf7ef3f831733aed4eefbf7047abae28203b5761737189d437", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "bb7e5f29c52b0f9416ccccce75de6cd27906d9917d6fab5e43f73011d0718fa1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "939e341478274b19c725dcd0fe289015f502bdffedb6b7a410b4594d4114429f", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "fe0e20df734e6c860ec4e4fce87921242272f5550377ba76d426f5a39af62083", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "71339d90e6901fbe3400600f2c130797ef9a89bee4ef89e87efa392e99d99a61", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "01394fac47f2f266fc1f2e3b73f715e517dc8d7126e2f9b6fa6771a5f97bf8ec", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "af30e40d58e81a913613406433b0fb73db6ab8d034466ab582b3f45a7bc2c141", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "509bac7db6264666c2ffcf848925247ca223e47441b86778210e7d13de1b3b38", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "30dd14080db969abedd3e396283a8e212f55cabe2d618459468c244ea54baeb5", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "fe3808d5ee10711a63283806448462829db6093a8835203c5c24b88fcc682627", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "54e2603f84f8a637fa6d41a2b610dddca6ca23f060cd7560ee0a6e57f7f7db01", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "5f37037107c11dd80cad68ad8229c701329350ec5f4839367914c5fe305cc4ad", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "d2307b898995aa27cd4c97822942a0066cd464b241f8a536ad800fe5958ca317", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "d2307b898995aa27cd4c97822942a0066cd464b241f8a536ad800fe5958ca317", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "6e3636bdb3b2b85e34c7f44a62446c62a1278fb5c712c324a8acf1290c1f9e5e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9af44f727e8cd35874b642223e10531f0a1f2dc44ee705cbf73ca68bc94f20c2", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c6d840b00e8c8a6b402a24ce937fa76d278d14e88ff9080dd82fe729e113896b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8496316eb8d4c4909ffc1714010e65ec19b01f7924c71d887dded4f31e0a6794", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "aee79c42dc1717cac34237896788c690ce425025929c877832c61d49af38d77b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "6a6d3957e33b9f5476e7c9636776516ab29593f75aa990ca4cf57d857c099d0e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "062c251ad1617a636f9ceeae36a5af011e6af0e063b697a07761f092fce5a4e9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "5ef1f9e7bcd84da40c4fad08c801d7ca97605a67b02ea3add4b174375c255101", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "c169cbf41e0c6c6fb556cc05a9b38bc749041378a0774bb17fe37cf98c4fc2c0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6d69d8473772e26b6e773929a0826ade82c7ffa1449eede2579ff176b777c4d7", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "5f49185e847979f09ea00e54b82d2120ff2dcf8f488d69017f03be0497b0f891", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "cf69008a3f4c4f951ddae1003b09b592ab8877b6533868bbc55d441267c7d02c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "72eaa4e0ec8524df1b9076c94ae598c4cc98d8993c94e4dc3092299be7967d2a", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "9b844bca9ca068ed1d7ae15cc88861d68b7b12e50a332ab935294f7558468667", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "15fcf66b3ecd32a07d39000bbbe1c00251d6a157017b9b6330e21c99355eabbe", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "db41d4bce4db6fc877f0cd52c4ce73de507155b1c545a72e9e2c5fa285c99cf6", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "42ae279e4f29edfb7d094eb125ab2b1841eebba4eebf5a74032784fc6fd15f8c", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "1da27b4aa7e06560b4e2df459f7d365fe0c412b4d2ebbd326691be4abc67bc43", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "51f5f4399d9b2bfef49bde835c3e44c09c355ee8249ab20a587286902f4b7c26", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ad1ff6598f22f687fb3ce6814ee5c3b2d9ef1aeb2f40ee72ba1c36edc7e923fb", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3eef542ec5e9c48e128b7538a939612ef811ddd743a0c75940ea5471a482a0ff", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "27fc51cc4ab9fb1e1f2b33306e578100eb6a5e65a32f6091fda35f63f40297cd", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "d288a338873f171b4cc3e10481af7716e4ba78da73ad2d3a7beb294b26e72cc4", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "41d49fe94a7f80e31642575aab9d8fcaf709487708ba4700b8886277ea52bff9", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "0b352fe735708df687da46a8e145617c3bfb5e7078403b47a21712c739f8e5bf", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "433d2a60b8474305bc57710cd0e3a40f46e428d5e563a829f0716f5185998b0d", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f80314927a3c223e0d0db3aa03a90a30fa641c4baf9f415402e309b891fa6a72", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "bb46338673135e30bb6e93517e889affecc25def7d25d576820142acb0532688", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "44917b588f3d1ef2ecd242e6d30230d1abeae7e6a2e4b8be1c16580164b3d239", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "8aa1c82ae57e8fbae94431aa43f88e34f1cd4f722d7e1d7d0aaed9ba03728aaa", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "1d36330462efdd502deb515011696766a9260b9599380faf1e764251afc758f0", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "191d1c639d0a45c07bc9f238f6ece72034331d844b72d2e4f1b618b285b3c864", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "b5b132ed2f22431bd2f5c28744f393d0acabd5d2a7508ca1bee01700d47f7ef2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "a6ff8489bdb85e2e11a3cfeac87cad5bb8e5a4944a48a8d0900f86490b076559", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "0076dfc488df2c38a57dcdc42953bec25ecb6a924ea030298d76abe1445e6571", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "3ac40d04fd9cbac32b5ed1113cedc63210de9f43dbed17fb722d86363c17c5ba", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "a0c018129fc1ad40b0a5428d528aa95c2565c692f9213aa5a499f4bb638a3632", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "06cfd23185a07fa3cc684c1e67b488f191b868dcdba1363ab3080bb928fbc132", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "df7bc2a679e4e71670d9d41f08f18972ee2f2f4902bd9201350e8a0f1661611b", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "42fe4bc93a3a2170483bea4569817e810d4326915041e47075b9c45d78e02e63", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "f4adf3a6d538ca5ca03520d47d819322ec6a1aefabae3edda64e87928927f51e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "6887665b84b1c478fbc56c5333bbcb60be29734b0eaf152bef6663eb82307d3c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "6681ed2d15b745966e6fa05a29038ffeb4ecc7a4e674324364e2a310b87e6eb4", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "e7c0fb62b39419ca9155bb630e76a628150590e766368470cd7733f0d755083c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "e7c0fb62b39419ca9155bb630e76a628150590e766368470cd7733f0d755083c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "579b0562fa3c3fcae2f0f80c0f3fb1d0a5c6a52a81741940688c4ca79da4d9f2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "f26234d41927ce93fe345a46c72a4a6ea8bc68120ec615adedc95ada8416e7ea", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "fe52a774c263a9b44b9c118e1ffab0dca95309eb2c36ca7bdffee725f070e483", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "16ec7c9456a5859fd549c4adeb4a3f5455fe2b37a022526d3766c980ba39ba0c", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "a5a763deb29e30e2e7f16dec0180dd31c75913fb29644f89728b1a17067ae185", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "f74cf0917d97c8fb0f574b3aaa3c09442c60ab32e7c2a9f529872092b7c04248", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "5f9d79d6dcdddca16151f3977cc455aa2c21ff94cb0750c28f805166fe3930e1", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7c4e519763441d3c09bdecea85753e6ff632b6b2893f1f25fa06b5feb953d841", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "cfd8d44c69d388af25b80941bf20cbf84404caece3884bdafc703bc49f58a077", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "acb4329865e38aeb74f05b9d72c1dbf7c780602be000857c4b83f954ecb4bc14", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "9bbbd091068fadfbd124115ab07b46cc93023a17bb1b7a4cbd5402ef6421602a", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "6ba33d3033338ecd80487f1d9fdde0c4289791478bf8dc071a0a6385cbfef9bb", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "6399cdd785185095398737ec202ecfd4317bed035ca6fa8e4f3204a378092b59", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "9361f5dba4ee701bbc735d6cce576e5a407d9dab45d7a388bdba003dea855a74", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "84570638acdd629e6030377b4f4969587bf4a2922cb54664bfa7088a4ec1c9f3", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7a028eb701d2cf939f121951c9418b64df9f1bc1f8afc89f0301133a1f3df7b7", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "56634789765b09a26612379f74697b136c0bf44e6a3e9603d3c5391c084bf656", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "3445bb3b967c9a31a4c121515edd69edb90cfeffd6b439c4d7dd6cdca1815f9b", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "cdb384acc7f08e36cf7aa4991b3505a83334594868aa5088d9cee2876c829c02", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "b1fe05286ec9de448c4ee8e852ebedc36ec1ba8812fb8fccfb2e28373b07b286", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "6aa69877a3bc9b9332c68b265e0bba274c84ba58f7e0bfb060e7d773d47df7c7", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "9e95fd0eeab779af522f74157462cbfb4d44e07496ae02c47b1831de3b6b0735", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9e3aac3e872da1bf8debc740789dce47867e0270599f5ce4b58a4c97e78f3944", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "f1a20263f801c1731b133eb6d888ebebdfe543603042d2b1b5620c29bcc97bb7", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "c6d840b00e8c8a6b402a24ce937fa76d278d14e88ff9080dd82fe729e113896b", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "14b3f53860a4643dd7b2ccb2543643a71ee54287a6994de2497f9a3e717d30f9", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "79787f09399d7fcff2ef022740840d9e738be6c7352326e9c3d27b5f0a8bc967", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "c4cee95eb45cd3e52a68d4232f264a82473e5ac46b77e20c24261a1068841501", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a7b16c878c6b94de624586e7ee5cee168bf4dcebabf1ce8225458b0e61b8c383", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8b723b183d8b9b5617bde9e951c8a2164c9239919f3e33bdb2d7950bb196b67d", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "4e2578b1fa546917292f1cc6fa952f3706c595934e223e24b3dfd1f73128557e", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "9f78007f00d55abcd9237fc5fae7e275e1a1d41544de560a4a6bf35fdc449b28", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "7cd54333ed660f178da4c3ab37262e4fcc5f7393318028f4944e6642d127fba3", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "78486821de53a6a54d1e518b8d7b18e2eb14ce71fb5e19b83894f6daf2229784", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "d6bd02ca73562ebe8ead45a4e4875314748ff3a931c6df46b2eb7a80cc471135", -"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "4e3d5e450e697e426aed63887d2f1ef10c618a531b1fdfedbea2109172d97266", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "e1e097eabe8286ea5cb9de39aad8859127745511f839349df09ecbaace5aa6a2", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "6bd2446e2fd1386f93d7e7c79c8412f0c8d8bada2f1d2481b92345c14c4648bb", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "978f26aabbf3a341ab04166f63f7ee24d3790b15e1b355ef442a91f100e13c94", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "b48f45aeddacc1de289589043a59e58f91f3355a8b4cbaa49676059e8862e19e", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "24cb50da3f9f869642f7ee03f8c49b74d714e733e33576cd2e1cf51cc748208b", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "de627e52923ccc4ba0fb3cafdeb2da683c9b4738db3efba6389d15f10af3af8d", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "4a9a354ad293ecd65b7eda8707b87cf076c2d13198831389322ed57eea76b2ef", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "96765f90e334b270b07f52591ea6036fe90509243f8498d594d2eb87509c8187", @@ -18335,70 +18335,70 @@ "T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "7f9f4d76cc974cebed8e0d23b12985be4fcf4b11f14edd1b745f15e77daae041", "T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6e4881069b1de4349cac001a21437ef99cc9cfc124c58081c15c3ca793ceaa65", "T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "f5681d3468c14b999885abf249085aa63ad86237523114c444471afee2592f74", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "81d7f27cdf8b7f44ce28c8b7235b297a039d62ccddf39a5a855928237c5c9401", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9a07da52fc2c1e598718ad5033556860316288268ba920a02c0efcc322f12d08", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "6e84036c36ec36824bb4b1d2d2359bb95d80813caf074e94430770e019358ea2", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "0c243fa02d706682bbbdf40355f48b085cc3228a2f938ba472069402d5779eba", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "d1b74c6186e31b68dce2a120187b8f1262af236058ce84c6f80ec3f41ac2334a", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "afdb1550e7d656d856ff18a8e2edfffdfbe55527e9c6ac808abb28616c6f6d80", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "f8c1fddccc72c29600ad3daba3dbe7d085661d54f02eccc92aab0acfcd2598bb", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "e1e9be738a78dcbf1f3917689ace45d50b51059879f3c0fbd1294adada301ba7", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "3c8286d12e0c71be68ad825fe8e970b5ba0d69d5213573d398aee1fe9c0e1e99", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "742dde86da3af82115a3e9d3776def00bf9cb70f6e4eff7915cd4c1735491535", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "ad6dfe0361550b763d552d3a27a84cbc841c1253e38212afa7c9adaadbede905", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "b24bfd272d4b0c600aa6c8422acb686e991564165ed93cab09871881b2606967", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "5c6636fa982016c205e886e01e0bdece8983722cbde6a86d18942a58ec361171", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "3a373ebb1596598e1235611c8ee311e1c31b6b39c0c64c1c70f410a0ff374579", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "6ed0b88c09865d3684805bc6048d201376640f0f17401cc3f176185e2e8a5356", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "45cc83f1321fff7b7bbb76dbc07894d143bea9578c973bcfb2892b271820a2ce", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "e55a9c9bc7648ece67e5f2da1196f09745338d5c77c6cc957bd5b4b482a4c9ab", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "1b6a6e2011fcf2876912d3254b2be110a2b7ab7d44a3b2a3cbd55b488b4ba907", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "93e40a374fe1dfedabe3d13fe2afc09e85ca6951dabe0a3d249ee5346205e22f", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "5697890bd63ae2e6cbed64c1d63bbaa91c73b236d8ba2844a4c33b1f11fcfc09", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "618d06739d4f12fab7aaa68939558a5a7a15bd9035b33c93e50e590ae48a3320", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "8ee5b0c99f62c60b8130a8823457d72fd4faeebf8f78476523a2d78f4cef142f", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "2bb4482f67b2f04c920b54bae06531903c7451ecf4bd77ec66a722e12c735e00", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "6171e944e7884cfaa68aa1f41439752c69cd2efe093e4e1d8fcb2b658b3b68a5", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "3aa86fb5e017aab9377bb70767bde954af784b999dc392254a7284b58d0d75d1", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "7a2f2216da6ce4416508a5fa007d1f672c2a7ce250ab2701ca1ff7938681c278", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "2b635e5d9eeac28895e73d642afefb37044c6e25a7fdf199febec19f5c678b8b", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6a7ddf122da188d537de3a33ca92fb8a2c1e5e0cf18c7ddcb114f443fdc6c089", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "4eca37db90b32012f390115dcbbbf154dea6785d6ac39a32378b048e5e106302", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e55a9c9bc7648ece67e5f2da1196f09745338d5c77c6cc957bd5b4b482a4c9ab", -"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "f6df1471a998bfcff8920accfd4bc0949d9bb86109c50b1a191c9a88dc6052b1", -"T3T1_de_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "76ffd01c81f0cfcf46c169ec9a6ce2a75024ed186be929b2d365494a54602e09", -"T3T1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "76ffd01c81f0cfcf46c169ec9a6ce2a75024ed186be929b2d365494a54602e09", -"T3T1_de_test_authenticate_device.py::test_authenticate_device[]": "76ffd01c81f0cfcf46c169ec9a6ce2a75024ed186be929b2d365494a54602e09", -"T3T1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "76ffd01c81f0cfcf46c169ec9a6ce2a75024ed186be929b2d365494a54602e09", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "c3fb7e8e0bf81b89cd6badc79dc13a55345de491daaf6f093ed9c567ce196f64", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "9cf9a3a7a5d7f90cfd4e9aeb6c85d3901489682f55d036e30fce2be5443d05a9", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "832881567c7404333e08db0d61cd731717a2dbe2a00c29bf3b59df9ff9c270e5", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5886444ef2850d2de7ca788540bfbae24117714a5541dac967c021e3ee204199", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f183f3e793391cd99be2888af424d23b1cfd66323da158ba0b9c3a71c5e32785", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "b898ee265af4b257149fdd0c46105832a5b82821bb4b7f03db268b81f056ad65", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "fd13e0b14c509d1e5944a5f23d5bb645ad594161070cae500029c61b543c56bd", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "a228e777862bfb36b8680a2afe7df067853677ecce672c80322857436082d649", -"T3T1_de_test_autolock.py::test_autolock_default_value": "fbb9be35ae47a66114285e25b1f3d4d465dd5665dd6b24bbb572fd77ce6a4a46", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "f2cff45b043fa802e2d381406da4d95621a67187911eda277ce41cd1507a4f4e", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "f2cff45b043fa802e2d381406da4d95621a67187911eda277ce41cd1507a4f4e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "60fb3168624d81dbb7cb256354957cc3917be65a5cf12f5e3d450d4b6e6fef51", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "c833071afad1812e0934952e4d4f408c4fe4730c046f128570789d4ed1785b0d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "2860ecf559edca3dadf62c563d995c5cf43399d4f2ce0f27daa9ec2a8c4b532b", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "02e160f0233611a029537d721af238196dc84562fd5c4487e99e62166fbc23ee", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "9d192c8cd31c832c20ad3cb9e4c5fe8e52dcb10815cfed9c56bcc1c34fd10aa2", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3c2be4e49138ce64fa3c1242ee70872fbd12ff55b07fe45faa9d4749e047a941", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "3c7c365ea58d2cc9999f3bfccf01a2855abcb96a028b2c7d06c707851640257a", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "6f61eeaa36d842ece1ac5cdc46061d98bbdb58895e8d3ae5f27694219d93ae4e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "f6759db901e93ccd0d4e8fb44b6a2ef4dfe4e139ea968aeee3323204135d2465", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1191292b5f217e4e8854ca3db1a12daea443934996c9a8644a82ea83b8b14d67", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "c4df6e9066eef0a8b63a2dd86ede863b79ec6fc5ddf15a1fac4db0a5aae32b53", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "8134f931a02794e9f0d431d8e66419c74b416a2ae40d579abf842ef2f0bfae39", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "75c7fbd3f3aed9cbca188644653fea0e4ae4cad72058fdb8529607e7a0697015", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "e43f4cbebf510d6a77a21605ec3b1bdd069d35f4923f33a269f29158999b7477", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "e328ac468ade624ca6dbd1e316da5c29e97c0ee25f533d73c75527e9e1a5b775", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "0a86754f7bb6d75ce6d43e88260d8d0f1af5fa7402331afd51a1ffb3e491ca2e", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "45950168a11d4abf055944c59a0f1ef4c8d4648aaff98e5a3aa509eaddfb0a6c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "ee5299da7bc921ef59d31a44a3acb9e2a679f56bcdb6649a60a81a56408e0ad0", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "01d69ff0f1b311e77e56a8b645a18afffa799c47efed106f19ed074fccbd6629", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "a9fb680419a6cedf1d9dda80461a4f9783165f813638d1a8c465208732cde701", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "54631d044e391a9379b985677e45286671e3b85b7cfaca6b555339b9173c3332", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "d40fa069adaaf7d7db060cf4a36f950a11a0f4786c18bcda3563692dc8597fd5", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "30a537bd18267c55d939203f12caac33e2632a5f85c0171945825871aecc75a0", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "4c4c9c0c683b63a7067c8302b735ba3282b4029395a34af0c693fd89de256467", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "f2a09cdbf22d5aa0e6cd2c32d7ee67c100b9b7c244ebe10dbb217bcf612db804", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "98be68a17ffa890899cfe8bc8dd02e639e13d217d909a86d972e9db830deb5bc", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "392d2f3a026fdbd5c4a9c8e1a6da1b4270cd6874a1fc2014ed2f0b55f1fb8e27", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "d0e554b95db7d1fc1c8e30c23e379447d6b889b6dcc455fba6095583a5f2026d", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "f946b5bcdd78e0cac19e2b2bc2f239d1b5496feb052e687cdbe6d856db2e63d3", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "45950168a11d4abf055944c59a0f1ef4c8d4648aaff98e5a3aa509eaddfb0a6c", +"T3T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "219e778705c172c00cf2b720154af8eef9156978828a33af3d4c02337294aeae", +"T3T1_de_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", +"T3T1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", +"T3T1_de_test_authenticate_device.py::test_authenticate_device[]": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", +"T3T1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "6448bdc5dad52bc4fd163560e2e82a72c6fd11cba084322c92a226843ffee00a", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b40a47c935ace8508672c2676f3482040920fef625a2df94af23db4ddea409f7", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "96b81a97e99e3ca3716a7f16fa8a1ef1ffa7a228bef36586f3bd6a579d841f83", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "91dad506b6f717a81102400d5dfa315fba1cbc0e49d40b009108329e3570809d", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ce9c99a11d63fc5c7aa0e506207de172523e48078c423c550cfc4d51f486e0c3", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "73893e468a3807b87effb42402dd73e486ce96abd31fa587d283d42792405c6c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "5824d93eed23abf519b610fe593af48c40e5b99dc3382fc8f7749fd67fa33fec", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "c28a123586045796c36eea4ce746d0f3e931fd8b615795a8ded76df75dde5851", +"T3T1_de_test_autolock.py::test_autolock_default_value": "3251a1b6da0cf2a239c35d9468d53f21a2f7b279a7f915f53bd92edf132fcfc4", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "f8aeed07a0587468169b99012ac9a72b0ac897178d3777c4704ff67ec3aa8a90", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "f8aeed07a0587468169b99012ac9a72b0ac897178d3777c4704ff67ec3aa8a90", "T3T1_de_test_basic.py::test_capabilities": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_basic.py::test_device_id_different": "13548b484f56bda9b97f3955810e5e72a0620b240958eef9350e5b8b0d99856a", +"T3T1_de_test_basic.py::test_device_id_different": "e09a1c9a50a87bc92d26525fa3d8971fc3af5fc0ec2b730067e2f3b589fec8f2", "T3T1_de_test_basic.py::test_device_id_same": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_features": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_ping": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_busy_state.py::test_busy_expiry": "42708037ef9e7e034aa46d6d3cf64d51dbba8be8e346b00e4f724e974525548f", -"T3T1_de_test_busy_state.py::test_busy_state": "4c1d79ef83391375ca217693d50467b6c940539defb8ca36344753f65cd04dd6", +"T3T1_de_test_busy_state.py::test_busy_state": "7a4f8468333af6f5b62289f162a22ecc9673b1ec7d6c663bd8c64f72796b2885", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "312cbfa84055cc90ba1bf7cc08fb396db4ac1b47c2b93cd077c0081ca4930661", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "312cbfa84055cc90ba1bf7cc08fb396db4ac1b47c2b93cd077c0081ca4930661", "T3T1_de_test_cancel.py::test_cancel_on_paginated": "6928682f498397e0a69b87e5d936a12f00a79cd1ce3df5f171904274405d2e0b", -"T3T1_de_test_debuglink.py::test_softlock_instability": "1bf85fb4559d86c8d3ea80244261217d531b9994a42f2e3a20387faace24c0eb", +"T3T1_de_test_debuglink.py::test_softlock_instability": "633405ecaf1d6fb65791da02930ec3554887c29f15b57db1be7afe4615f0e223", "T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "3ab7e7be6b946950c575bacd21610d26768aabdfe9a24a48d89c156ed2a2d55c", "T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_language.py::test_error_invalid_data_hash": "d64e5beb97239858c596885a32b86939f5760576f0b3761ac01a6d522ba9a728", @@ -18413,93 +18413,93 @@ "T3T1_de_test_language.py::test_full_language_change[es]": "8927eb900b402d14e39322eb6bb40b0cae2bfbb2a175079cdf549e2c3942b39d", "T3T1_de_test_language.py::test_full_language_change[fr]": "4a251850445d3b3f1f21974bd4b9fe133a7b2a0da0a4f72ef3262387ef40fc83", "T3T1_de_test_language.py::test_header_trailing_data": "8e198165bed53d92f4c58b31acec7b1d6b872eaf922d523174d92b0f6681d862", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "33bbdcf8b628e8cce2cfc19560e1665318652407a68ff55db5e65e39e0f658d6", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "09088ab11ec356b49bd146b56c90a1c7a6f386fd98355279fa1ee3f3b318636d", "T3T1_de_test_language.py::test_reject_update": "8608388f972372883ab6adeabc1871f8ae2b6992e51b41a2c5e702f0f5caadb7", -"T3T1_de_test_language.py::test_silent_first_install[False-False]": "d5d5b085c13990ef6aaf23a8aedb6f1b7a10ea334ff9ae85a2c5275ec64b4c68", -"T3T1_de_test_language.py::test_silent_first_install[None-False]": "d5d5b085c13990ef6aaf23a8aedb6f1b7a10ea334ff9ae85a2c5275ec64b4c68", -"T3T1_de_test_language.py::test_silent_first_install[True-True]": "153cfc90be43eaa7126aa330b9266215c5d9f4c2ca4042b33d9da26b9dfa0805", +"T3T1_de_test_language.py::test_silent_first_install[False-False]": "630b7d9cfcc8cc2b1c540bed7d78f9ee283a24fdaa79ba1b8b14ffa88e8264a5", +"T3T1_de_test_language.py::test_silent_first_install[None-False]": "630b7d9cfcc8cc2b1c540bed7d78f9ee283a24fdaa79ba1b8b14ffa88e8264a5", +"T3T1_de_test_language.py::test_silent_first_install[True-True]": "e41d79e63b57e6459f99439987ef9cfc1436e69f511eb8ee838504adba6be49e", "T3T1_de_test_language.py::test_switch_from_english[None]": "eeb074bb70d89a4f57d7fb1e61c830e51b255339244be927eca460819dd03c44", "T3T1_de_test_language.py::test_switch_from_english[True]": "eeb074bb70d89a4f57d7fb1e61c830e51b255339244be927eca460819dd03c44", "T3T1_de_test_language.py::test_switch_from_english_not_silent": "5dbbf948c50ec08f09d99f5a32c85b563f52fbf084e176f2e77bd89cdeb140ab", -"T3T1_de_test_language.py::test_switch_language": "abf56b709144025c2b3e6ac2dd69bd0e095645f2bd8c27e62a0f193f45a59861", +"T3T1_de_test_language.py::test_switch_language": "346bcb10dcd1f2aa73cf4a9a7634255bd201ca5c2ffbb2ef57c57de141593678", "T3T1_de_test_language.py::test_translations_renders_on_screen": "1fce1554e947b0f54d7052615e763117adff35868f5d968ce35f9e77bbd7a214", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "59e6f7424dba79bdf6266e8aa24252b5c863e64e3382c225cc086fb3027c7b41", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "3addf04db351f8e7ba8eccfebb06ac7738e2d7e61d5fb02f77caffe70e6b21b9", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "95e9d5ec12fb3d892bc1b69d63bc06975071c5ab2e14413a46f83a932041f841", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "06050743a4775d172cc915544ebc8cbdeeab060210232f3cc4e42bcb3e48b7f7", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "2eb961444f0c991cf82c677d6662b12089a3982626fd2f55d49207c5a1777453", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "7db9e9b2dc059dee613f3f76e9917914b9e735a8204a8615ed6ed2a1a2e08053", "T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "009732212982e29ead5a635e51e4301b9f0bb20134c01ccda4968979446af371", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "1b3a28286222012d3c11d4f109f1ad7934623996708b8b85a3e13849f9abfaee", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "80900a10f39b130e4afc48143c2fc9a8e6ec9da57f4c0ca8884e7717f673233f", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "5f842c68d1b5a68d7ce09b429cb145becfcfaab0d8b37a777c6a0b56822e9355", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "23fff5652040b0bfda30045b12d7457414a3be9ee85978cb1223a0aab44935ec", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_msg_applysettings.py::test_safety_checks": "1540113c25aae9cbe0e9438724c71a9e54d73751ed64698f56ce2d73c90253c1", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "bcbc5c4a8b64d402a1f2062392daeab48125efa9e10fb7f928bcdeeae391eb0a", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "58fbc4a6ece4247bdfbc7c7dced873e414b85cf971ab848bc650ac07f40fd236", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "a2ac740c10bc577f2e815edd6e7ab15931afae478388b4cd92af5a595c46abba", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e40fcd79f20ec38c0db7268ca78bd3edca90170cf72d517e1eb4493720a94a28", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8d10d1b71a88972e2508cf443f8339e6a1d8fbb972d4e80d7172dc59df7cff49", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "da146744b0fcab4b113a9c5cb57430bad2b7401027cd91ab18546beab8a55f7d", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "240dabf5f1242ef54f84292a391be668a499576cd6d48f06a112ccea802a9ae4", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b678010fb5eeef1b9dee08f67102a60d9eaed37e1728d51c8255565a8d67275b", +"T3T1_de_test_msg_applysettings.py::test_safety_checks": "1a665973fa452a0d05ced007179fa7d2effa8e1abbda4460eb4678b99909997d", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "707f4f407445d87d4b5d99ed15a2443fa2ade9fac2ad90c2afbd9bd8b994d595", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a5b672e4f27909e6863093a30ea96030a79fe51fa2b59955593c12635e29f0d8", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "a3e25f476fc8f91bf8352b6e8ded0d3dac3f1d78d4478c372cc016a2742d73f8", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "33eb619f2ecc86fb389833a570b7fb465c77515e3eeb7b336a3321143ecf9f12", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "25363b697504c00524ff045dd8c4b99538a74c68a462a35a2b5192b39bcf26da", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "0bfd2be9ce2e2003e55e15a650ccf6350aa7d8a8b88e212c9fb29bda047d7d46", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b9afc6c535806ebce0a0ece0e1399ce109808e117d48646770b06d9097cc2351", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "bfd7418dd386372eabc713966271dadf6e3142628dab8628263d9559cf881093", "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "46a0aaa1de9d5768ec769aa75c050cc6c3f7f037b54d191336ccdb52b12d716a", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "3c27d51b28767f7ef347d31c482c4cb1a3a0e857f45d2e249ba59767d8622d9a", -"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "bc0059f84b1dcf085a54dd8a41d3b30c2cea01efd3df96c89c2e176c7796ad94", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "82a74fb854f1a277aa219e5c3952e6a9d8ba3d07d62b04811a1c26eee91598cc", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "ddee360ba333d9da592e66d7a3ee3d0dc3e890aed19215dce937eea0de8d8bdd", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "223f96921bc161bfb353a6c734458bb8a1b197c5bd0cb7b4bc4734e1bbf750c9", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "451e743ba90f64b6bea9a272e76baecfb79c27f88b6c5b78bc08bf92307ce3a8", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "fc28cff7ce545c2b83b0e750e31593772e6438fb363633506516056b7ea0d479", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "dce9fb9e4e6c6f9029d9809c6e9e5ffe611b6e45b2b8ff617ba541d7184f2930", +"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "82419a27890d9fb4b7cc8c685d6d074d30f38487cc4b21b7cea8f0161c2520e9", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "63a57a777fae43d4e76adeec9d6ebb4004f5cb3b4228f02c71bc8a68db6d041e", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "35d6e630d8aca596404ce49b18bebdd20786c35f5c8f08727a357eff6086c94f", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c2314ae6957a3db5b194cf19c7a9652aa978f8cb3629bc369a0665013b60fda5", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "c0f365e81ef7b77097036e474df1444bd749af959ed146408b9350f8ca469674", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "ced81d21e5640703184603b29f802ada7e4bb4d53b2bcaf9b4e60883f1860c8b", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "b96a4247c77f1839ffb142a5ffe1207d710e642084746be0796cf10c111a68f4", "T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "efa912893b7dc06358d6ed480cde3299d5c8631ffef0c668c74d75dc2a5b0d22", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "8cc5c92c3f86823c81d35f8e0b055eebf34754923ae45ac49e8236cebed14298", -"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "a8372bf706cab97b6d84aff86244e925f4c44f7465129911a3a3b167411faf6c", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "9d781814569d5f2dc039655224e3b2f8c482bb37bc2b60f9d0413e0951af1a43", -"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "ac1e279409f71826c066a3f29a94f6d40ea83d7e333365a16516aba82e8b7bbc", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "10747ec5fcebed3bbe33922668253463fd99252f742747e3ee87f6fb720b7c6f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ac1e279409f71826c066a3f29a94f6d40ea83d7e333365a16516aba82e8b7bbc", -"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "ac1e279409f71826c066a3f29a94f6d40ea83d7e333365a16516aba82e8b7bbc", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "fafc9ceec83503bcddd3af7f6ac2f79795a6ef791650fb0c80149b49fce96daf", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "3f7616a32c52ed269ec3d9e64bbf0da27e43527a83e4aa281fe77dcd9b3873c4", +"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "88f698497cc3f3f771f109b921880b1541343fa793d01cf1750e64ee161b27b3", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "ebf2bf2d61bd51971c41e439eb281e2c46688dd3b04b1cdab88654c9e6cb7844", +"T3T1_de_test_msg_loaddevice.py::test_load_device_1": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "7d33c9addde31735eed3f9dd2474c9783e694332d9bf9ac5fa43ca5fa90b620d", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", +"T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "6e073847e133e974855ced837879ef432de180ee45dfecf2d83e6c9a30fa6e86", "T3T1_de_test_msg_ping.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "a784cc68627c04881077ba8aed34445ddeff575592fcac19a3f9b76d68a6fb19", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "6a143782c193d40954931d5d9900b6bd03728073a1adb93fbc142664e54bd623", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "496ade768995ddbf8cfc70ef7c3fc70cadfe07a00c276baa72c3b45f0de35af7", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "e665ddeec83cc28313a8c360e4d144cc11d8812f101c0d545458ba468e096ef0", -"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "13548b484f56bda9b97f3955810e5e72a0620b240958eef9350e5b8b0d99856a", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "0e1f65de4236be1317fc32499e5feb35adbb9e12384a8610b44054dabb35ad87", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "fc08d1585b1ef3e88314cec89f86a2c4e1e4dc38474417d0e6135c5b0a066326", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "5dde58b9d490c711e6ce78c0e40969cbdf2b6824de5f2fe963cd4faadc90d480", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "561a7c283a06b5dd380d4066e38d030044a10b1411966dbc1f925f64c200441d", +"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "e09a1c9a50a87bc92d26525fa3d8971fc3af5fc0ec2b730067e2f3b589fec8f2", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", -"T3T1_de_test_pin.py::test_correct_pin": "82c76aa990f9570c127e629bdbbb48454c2935c518750ab34f2c2f3e4c576efa", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "6c2b61ef1bbd8343f7ce10223d4cd22a798d0be44f926ff24f5444f34a998aae", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "7c6db43daeda61d5a54c37995e0bc4d153706c5b1e5fcbc5b1f5e619d5c690d2", +"T3T1_de_test_pin.py::test_correct_pin": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "6a27feaaa6ffc40e4a9f0de1adfd95097e07ca1f94d127e467e54bad69a993d0", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "df97013fa123b6604fe92f2c91dbd7b49ad99bacc77726876393ad4ad7d786f5", "T3T1_de_test_pin.py::test_no_protection": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_protection_levels.py::test_apply_settings": "2f8413a15a24688ddda4fbe39a620c082fc2a02343ab429e3818c1a4d1403c8a", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "a16c171bd209f8517ad7fd56426c6282f2471cdc56d5e654f9884f0eb0889fd7", -"T3T1_de_test_protection_levels.py::test_get_address": "2b4c74515f87a478098e1335d81c25516f2a6faf3fc2c641a1e5f534007c8cc3", -"T3T1_de_test_protection_levels.py::test_get_entropy": "1e76b7130718de4cd5f66cb7a2b057981a6f141ae67d9720738d4fc24e385ff1", -"T3T1_de_test_protection_levels.py::test_get_public_key": "2b4c74515f87a478098e1335d81c25516f2a6faf3fc2c641a1e5f534007c8cc3", -"T3T1_de_test_protection_levels.py::test_initialize": "6836d659e32914e10a0b604dbadff16dac8af3498fe925f5106b2ccdfb128766", +"T3T1_de_test_protection_levels.py::test_apply_settings": "172dc0702b0791b89278f7041f6c787f88bd64f7eeb6939d9aa324a32daf1d4a", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "01964797517b79e634c326ea2821eabb52fb567f065d8b138a876067b9420c45", +"T3T1_de_test_protection_levels.py::test_get_address": "dee36cee1febc51ac5f40b1d90485148e255ee302af531c729054dbd4e5f9e30", +"T3T1_de_test_protection_levels.py::test_get_entropy": "346a116c0ae362ea7923010ed2abc106e67a7eee9725d260533baec2d1dcf69f", +"T3T1_de_test_protection_levels.py::test_get_public_key": "dee36cee1febc51ac5f40b1d90485148e255ee302af531c729054dbd4e5f9e30", +"T3T1_de_test_protection_levels.py::test_initialize": "4aa13d476b8790bf29e68bb8fb88f5006d8a42276cc7755fe86cd3db8bea6763", "T3T1_de_test_protection_levels.py::test_passphrase_cached": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "009d00009a990eeabb16c57312414da7e7e95a6f148d71af3a347ca1f9c7bab7", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f3e43cd6e3f9e7931233ab99f4d28a6ddbd618ae19e6be922c52ccc9019a6107", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "ba33c2161b4201e41c1e75bb945be421254eea1ac23fd7e945d998e0e8788525", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "39d708f5adeb392ffd76a398c0a7d841cbc87113c69aea6da97365a4a6de9b67", "T3T1_de_test_protection_levels.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", -"T3T1_de_test_protection_levels.py::test_sign_message": "842ba90e419bf90081d100bd9a591d0de706f7c009ee6576ab6f97c431953d1f", -"T3T1_de_test_protection_levels.py::test_signtx": "be36983b17bbe727252ac7cd50d3e94af550e3ae8ce7d7a644bcd86a056b3a2c", -"T3T1_de_test_protection_levels.py::test_unlocked": "e0b95937966e70551fea9fd4550df72ab616b289148b19554baf1497ea8535d7", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "90bd4239aefa01c3411de89edb81fa7db6621a9c8a0a1219b5256fb5251244a9", -"T3T1_de_test_protection_levels.py::test_wipe_device": "bc49bc2398db10ab4427ae62ad40b8caf9685858ef78033b8c5b7bd1cb33ba0c", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "682ea9311e4a657e0ac708022c56d38e482117afadf2fcd3a65e37dbc34a1563", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "dcdfdb3e95a48d049c0fec2e9967386e259a3c98d7dd7e16373dd3250d9f26ad", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "285a51f9d31a21ff9a988696ddeb20f595b34df2a24c85f0e634c976e649c3b8", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "93dad854760b5eacbbef522c4280d2427dab3bcd8e9f474f72b042c0a82ea275", -"T3T1_de_test_sdcard.py::test_sd_format": "966a73c534aff7e9f9c13f1946517e82e14e9d032589a9d993e661cfafbf0bcf", -"T3T1_de_test_sdcard.py::test_sd_no_format": "123db9ec3d93ea61ca6543d432e153311358f3b62c4c4a6f9c116f1d4a3f6455", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "1ade1b6b6bff1f87618403af662e2d0501f39d0e87c6c7fd0cc7d1b4871c8b3b", +"T3T1_de_test_protection_levels.py::test_sign_message": "f4df39d29d9eea4efd989b8ca3b42263d3d12953ec6325fbf8208b7f04dedf9a", +"T3T1_de_test_protection_levels.py::test_signtx": "3dc0b4dc4966d617c5d92584a7fb40952bb5aae85af0683708952229fdbe0edd", +"T3T1_de_test_protection_levels.py::test_unlocked": "2c61579bea1a0b37162c99a4d4bb0587e284095dfaf050e0da086b31dcb1b554", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "bebc9fd630bc3c16eb5d3e01039f32dd019e02ce2ebc4f63bbadbea9edb8ed3f", +"T3T1_de_test_protection_levels.py::test_wipe_device": "024080ea59f81f4bcf8a15fbf09298630ffcd02950fbe52dca5c863bd5f970c6", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "6342d49bfd942f82426541955f68010ae0381cc7df09c424fec2c048194d1f94", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "855961d71d5ccc67fd0bc577f95c4c02d0465949290c9ee933f0bb23b4658326", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "0c12d44b102b2d34e174041c0898d006d9d490717119e1d2d3f9b6cab027e81f", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "7528d22549bb8d2c593da6ac59214717a0683dcea8f2e852d6ddea4a5354476b", +"T3T1_de_test_sdcard.py::test_sd_format": "46791ce8686bfc43f7cf2093f8ac5efdfb8dc4ed8e33aae094965ea7741eda49", +"T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "126a8521577832a95cb693176172540420c7f5f32460a3ba38f2d7ee9c42dc3d", "T3T1_de_test_session.py::test_cannot_resume_ended_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_session.py::test_clear_session": "becb06b14fd05779d4f0cda828ab135b435275970713b8085b543296541475d5", +"T3T1_de_test_session.py::test_clear_session": "23c61f4355e020d4f7edd2a44c7a9f21fe3128cf05798e7acc3b7f07ba8e04a9", "T3T1_de_test_session.py::test_derive_cardano_empty_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_derive_cardano_running_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_end_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -18522,30 +18522,30 @@ "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "cf70c477688bed0fb691985b92dce65e32c186efb438ad4cb91739a74ebb3dfd", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "6c399e3fa15ea50630cb2374ca1277aea44c5d6474537b6c1c60fa445c10361f", "T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "f8002659698556d8ca34be9468feb71b642b0d679649022ac7d5f1853e19821a", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "7e861dff0079ffc02e522eefc96a01faac172a1b4da87b195a1c2ca8a50a2048", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "fe44e0aabaaa54d76152fcb356c79c8625ff7a0e54840f55aa00b9ade9d05300", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ce63467bf1fda61b8f357fd195c414ca3dd92c3b0dcf753ca4c190ca4f99475d", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "be48d5330379392bff7a544f38e11a84cd0737b2ebac32f9e74a927c3d4c8551", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "4137aad14d2510d1b67eb259bfb5c98dcd2faaa3dc73e976e6d82214658c7125", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "4d5ab8e2f9f4467f99b95f69565b78ef1cec8bc57d4decc630287d04a57cbb40", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "445877c6b171a3e45a0167ccfa61f8474e1487f9d9e9e814edaff365f8a8f27c", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "85023699a954f9a30902b0224a6480c3e0aba968460600ab542ef5bb288248ca", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "259cb384d7c9b3360c54eac6961b61c80b94583c05f5e46ce43ddb7b51d19518", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d1c7cccf3e2555d338a9dd0c007fde0754bd98b38db8a2115002e8bc18f27fa4", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "f87bb85a535190f2a94e0d75767c9c55dd17f2cad10105f838ece8fd7670e317", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "ec3c1f0f772711420948bc6910befacd5b2c3c1cff68d5fee5a3dd1c6b9c56a9", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "babf828217da7790f41f90618d4a998c43d7c6dab17dd0e1132b17a3bd60d81f", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "b1ac0ffb00c02cae073dea26b33958bf45e23e6752287edc3fd5fcda97fadbbd", -"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "48c95c62a849a8ce04a218f574856ca3d35e54f478b764b34bf3941e8374ef40", +"T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "534db7b1cba3a2a0a1cf4d2eba3cf8652001b5c4db1310891871234fcb555e08", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e787f8ef4c14ddcdaae214d30f3499335d9cab6e2066b31a53d47858a407a7e1", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "fc619426393e344424721750988489067b17a7a85861bc2d7703053a1b99fa46", "T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "a66b0728f23397fe59b13bde88a9ee1cd8a666d67e6ba1fa5badcf6d32687584", -"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "cc390c818b6d060c4332672efdf119da5956e806978ad4b69a9e546b5385250f", -"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "d8ad3a1342be7012869fd40b9fe543aa528295a86e265d3aa1b5787afe36db93", -"T3T1_de_zcash-test_sign_tx.py::test_one_two": "7a8131e9b9b911369e62fe65c40e0859b81f403a5a57df513cc1b4908620742d", +"T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "688352aeccbd7fbbee6f3ed7e4dbcc1362b78d965a0c854e27e756b9871d43da", +"T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "85f2067de3f218e718ae164e97dc030c4aef065c29755f6138afe10d664a2d56", +"T3T1_de_zcash-test_sign_tx.py::test_one_two": "10258e39046685e302d403a9df4f82cc4b851cfa07d8103f2a52f4afd81fa99d", "T3T1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "ae6879612b6fbcb536dccdbc22fef035dabb570a70a769f0091f1a6020b37d1c", -"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "d9d88273009b340281ed71eaf24d314c2dbee24ceaeb25570c018266820ce1ea", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "3fe08b0975e669ffb712b317eae730db87b5b785a10335bf7e5fa6fac6156e21", -"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "722782a61953d393049192cb05346601a214658833c5e51a0fb04db5646be461", -"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "7672ecd6c877a8eb571c82bb07360a6e823e18e4640f6b5e74a71017b66d0fd4", +"T3T1_de_zcash-test_sign_tx.py::test_send_to_multisig": "7ee0c02cf5cb840f59aa04994e8f38c8581adcb6b1ca833a3214f94abccea979", +"T3T1_de_zcash-test_sign_tx.py::test_spend_multisig": "44ddadf14b54a4e6c275e5ac45434fd98e8f76f1c396b6f6c311d7aaaf6d0874", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v4_input": "f51f494045298b789cb40a8a5a44fa19951f2a875ac61c730bad1646deac4702", +"T3T1_de_zcash-test_sign_tx.py::test_spend_v5_input": "24b859baf76b72736a3d1a027f4612637452768b50d39bd30619ad17b64a427d", +"T3T1_de_zcash-test_sign_tx.py::test_unified_address": "ce4530ac2a0c5c65fb83a6ffecc166341c5f50c42e6cf609aea06fd90903c3f3", "T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "910bd18971e73c5192c9fd442c4ccb7f700d1178c778c1b214d3882d6451ba24", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "eee28333f3f0a427906b6407b4b469f72963fa5b8a506accb388a0fec0274add", @@ -18562,20 +18562,20 @@ "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "672c577d3649ad1a8e58a4b988056da6e4af8739b3e9bb9c820f5ea52d9b13c5", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7ac50950de855c9b70dbbe07f76c726a76fae6f21411c929dabe0eff223510b1", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "163ac3af44cb42bce9f768c18ff371ac6a04ecddfae2f45b8261683b9238c90e", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "774f161fdfb27270bb0d563fd4619c6105fcd3db608967ea6178ff33fc20d8ef", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "774f161fdfb27270bb0d563fd4619c6105fcd3db608967ea6178ff33fc20d8ef", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c9e395767081c726b077ebb713194e548068d685f1ddfebe10679b098bcd2330", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c9e395767081c726b077ebb713194e548068d685f1ddfebe10679b098bcd2330", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "43d40d4e791b00ed7c36eb2e76aca3234fdf30e8b8874d201017b7187c8cae19", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "3d66920b0f4105ea7d0b18ae0746cb9fe07ed277059e74d272963b95138d9038", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "15b404555dc250a215a233eeddce25de6d3ecd8f6b37d2eaaa8334c7690f9ab7", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "9dd7d87298e4910f49c24539cba0a1b4162a90b8598ad92ab754f6007d5ed1ee", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0bbd7646285100d50de4be4c6986016e84c00b080278f0293c4658978dbb17b4", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "0bbd7646285100d50de4be4c6986016e84c00b080278f0293c4658978dbb17b4", -"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "4fa2fd90c03b850a855d41f0f4e7b4c45bfa67ee53ee313766fb76f1d3777bfe", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "4fa2fd90c03b850a855d41f0f4e7b4c45bfa67ee53ee313766fb76f1d3777bfe", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d5422e52d1fc4ff5ed65f6213153b7a9ba8525224ac4c3e7f24edc0e85725b3c", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "aff99f2563d3a11bf546ac6f526b7c45649007bb5fe2aea0dc381ded35ccff9e", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "dad654b41fe915c1cda7addc404817a2c28a554b0eb9ff6c0b0961f21be8b204", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "962c37bda79bb00edfce56793fb3e750d6075290de8f91349ee33e12413be590", -"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "a1ad2b363967a2452684fbd72b9d2e1ca3244cf361f506455c3b30902a1e9db9", +"T3T1_en_bitcoin-test_bcash.py::test_attack_change_input": "d8ff29ea034ce455e8876081cc33febeda84fcf6782585d9c21f5291a8445f0d", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_change": "d8ff29ea034ce455e8876081cc33febeda84fcf6782585d9c21f5291a8445f0d", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "2c6617115b9e6158f600980b50c986cfebeb55c8eb7aff2d84136401480cbbd7", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "458d08ee3a127fe320672d5fb7e92ffe40fb06e16f38729abd42b1622d583661", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "74e7267e90c862eb6dd6045d4003321f2b4db21287d6afd7625427def0e17916", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "f2070c2de17159cb0e2638f65cf8698edd94b0044c4b8bba843ca17e07937923", +"T3T1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "59d7a52603f30d32de8dfefb90f656f24140856e57b9b470147fd6a84e587d4b", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "3a74d5f81e9caf44a9ed7b7c6380326b28c228d7ce79ec95dc47c41b1d57897e", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f77b05ca2d18406e035ae08be1bda18f34696a0613e15b933d622fabe5cd03f2", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "2326c233db14d8b0d5a1e6dd972256cf1fdf5abf03b26aed534e541d25d8c161", @@ -18612,30 +18612,30 @@ "T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "543d29927acdcbca51880417f4c0f79d66acdc4f8d2940eefa44d49bf1270d90", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "1273567357341bb168e1165ea6446e7b01218b29ef7d5acb302e772a3eb1ef4b", "T3T1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "2cd1d17e6647c4625d1ff911f1707397274ba5c4adfeb8d4e54cc1fcfb8d78b6", -"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "3681bf8c89e62d135ee9c59f00893e70aae239e3c209d3deaf0462f836320f82", -"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "85066d069049d0d11554fb08dc5cb18abfaf1156a8663c5c6a537b2d85d4a90e", +"T3T1_en_bitcoin-test_firo.py::test_spend_lelantus": "ad56b63a796523adabe46f8faca599d139cde2f3fb8006c0ffb5e0ecdd0acc1b", +"T3T1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "06aa3e62a35dd24ec2ea7f6a80df6832598979ffb2d7aad3e41d03167a4eefc6", "T3T1_en_bitcoin-test_getaddress.py::test_address_mac": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_bch": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "17e591b575aa2a6ef7fa4b5c88a4285bad2df6bd44898ee845fa42f1b1b55785", +"T3T1_en_bitcoin-test_getaddress.py::test_bch_multisig": "29d18162c7ce88992bb9488da9cb7b348165d78ecaba22dd7eb6304700752c5c", "T3T1_en_bitcoin-test_getaddress.py::test_btc": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_crw": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_elements": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_grs": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_invalid_path": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_ltc": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "99adca92891444fc82643cf775cd2508c217286bba04d7136ff96c73c2cb1c27", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig": "d92ac1ddab282b3b277dae622783fe233708344429edd8afbfb1ad46444c05c3", "T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "6c556ba16ce5ed9ed4333f14409ff480144b45e7343952657748d7890ac09b94", +"T3T1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "0846abfd9fcc12d201c013524f61e9c38ec88916c3b8b1ec82f34b425b952ef0", "T3T1_en_bitcoin-test_getaddress.py::test_public_ckd": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_tbtc": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress.py::test_tgrs": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "a70b0f118a986f27520f53d9fc87e65d6f14f6bb782333cd6285e2d7f667d395", +"T3T1_en_bitcoin-test_getaddress.py::test_unknown_path": "f56f851b4a30dbf5cecac77b108873de5d7e56d67b3194012c4207cc72ef95a6", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "80a10414546a612b4ffaae17ce4f713b0b66d6e5e310c961b05a7d353ed06f44", -"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "deb2f695d342f7c0e9439d1d43f2367ea9e8ef1bf2fe178250183aaea545e676", +"T3T1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "bf8dff7dea2cd70a12ecb07680a6f13d54c00ffa7344f06db576f9bf780f9e23", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -18678,12 +18678,12 @@ "T3T1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "597c1388095a1fc258c3412ada980a8f3ba06f2e03052e1da73802e09e087f07", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "35a9236ed63ee4a5cc28d83d7e800cc37f529d4b84b3b9181e3f26409986e961", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "ed0bda441818b86edeb6f1ffb77254604d4fa28963742269c3bc33a94e334ca0", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "732ec5ddb576a3ac17f0db9a72ca5e3b52d3952280e7cd4d38db13262c291d75", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "732ec5ddb576a3ac17f0db9a72ca5e3b52d3952280e7cd4d38db13262c291d75", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "2ec243233783d4a29c46600700270ca69f48613656f208cfb92db73591acd8dc", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "cc13d0a6feb33a18099f250182740e9accadf3a0d782edd5516258145bb3883d", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c1ef75ba27231de49a2c536617c192e054f3680ad0bcb0e2b51ca236da64eec3", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "f49f59895fc07f3b45839a144129b28ebf337e7014b6a9a9b1338b084a07a9e8", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "9d4508624d084e9e3242b19b57c724e2b370b54a05422d01374176b730fa0275", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "9d4508624d084e9e3242b19b57c724e2b370b54a05422d01374176b730fa0275", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "8e8a17c7398d7fe76266d938d90296fcc391df43daccc64dc5438902f97b199d", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "6d27da7bb7f77bd8bb7323467b7dc09dca91bdf5553d45d6958dc1347e0a22f4", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "784a143cfd6e5cc4e3151375f273b56f1ee89a7a22ddcd9f018cc42fe55e9bdc", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "7f356eea045b1ef5dae3cbd91649c56aba7fe6492c356667a44f1f95509bb6c5", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5dce68160a75682417daff0c80871691a43d8fc4144e901f75b21401c204daa5", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "8d494805eb068f5d5db028ef69044edd1c7fcb75e7bdec603fe46c8a7db5ea20", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ed7ab1d4e6f561d414fb8e2ee5962015750c5c5a4cb362e13ec4ca7200ae83c3", @@ -18714,15 +18714,15 @@ "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f77b05ca2d18406e035ae08be1bda18f34696a0613e15b933d622fabe5cd03f2", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "1e601059310fdae2182ac7883b2e889f343d0e679c12bfe5a946a17b3b2c13ed", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "51927fc3c81aac557a25bf75cc9fc83f967f4818bb1e2d348591560a430c4c2a", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "8afc20f547a9e0ecbaa9bffb0c2f9d47136f0e3bd3a747f08953776bdded0358", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "c37722668522fc2317332a3b6e625108da0245e10cbe0fcd296254353e651d07", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3944998d35438f6d4322a91dd57620f209d652472bb4c7d041476af57303ff06", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "388989e60cef8ebb892496c259b1032c21ca58fbe2e5514effb5abad15dd6fdc", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "11bcdbaccdc32098918b9ada7f2559d5306df6546285e49530648e107ee15a7b", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "eeb1d47ac02089a5be940907534462eccb5297026141f8b10eac9dc2e06828cc", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "91cde5dc19f9a6f843d830837e40b5ebcf666b086ee1b37e746470e5a64dcd80", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "6603b349ca45b2f7009ebbc962d0805d4aee7126b02874616b003208ef70e396", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "5fd30b940609c1c041ea3337fd9bce2cd77ade6a3b85d5b21e0b40af88795142", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "4bcd119c8f18dd5ed2fa2db467f75e52972e4a6d57c4badd3eb1051297804662", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "945c4d610eff8a4fa57aeeab64269d301624befd161892b414d51065d6fa3e40", "T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3fdb234bcfd51686ef9980ffc08beca6d6ecb4c9a78efc38ab13de57c4d3db90", -"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "96063d6f25be8825f89e14408a87bdb99e8d0c87478a72f30704aa7b9b24c115", +"T3T1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "c42abe7d108da17159eaf5e91fddb6d8b98b14a9e62725462126252df33a44b6", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -18741,32 +18741,32 @@ "T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_grs.py::test_legacy": "744079e52a133e99ed12becda80646b5fa0113cef68d8116e4686d022182d0f0", +"T3T1_en_bitcoin-test_grs.py::test_legacy": "67f01db448b353cd7bfb77dc6987d12ae9b44b806c41d66b69faa96115aa0906", "T3T1_en_bitcoin-test_grs.py::test_legacy_change": "a1b082134e1386faf28835ed61893ba2a5c291ed0bedfbb8676fd84a58c8148c", -"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "f48758568bbf80529e8822ce42abac0f70a959e164de5288da3a5d0670d608d3", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "4df8e0be4eab19d835237c6d470b588ce37ba8e883af6534ca8a6fa205b79eca", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "fe54a5e6e4249056e30fd1f2087945362d5dd0b233e83d428a5796c0faaaf3ab", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "670a67685bd20c9f681643c9dd762df4a0d1f3d9e1c70100499682ca8d1b4ca0", -"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "66dcaf6994aa3a508ea36b9e669fc94aef512ded7c1e44974c95f05f6837eb12", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "5e51043c8bf1c49baae597a36ce2174d4c7d5ed85df3588f413811e2ab5f8d79", -"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "bed59f5d4d9ea4e2baa226644e842455a65bba71804fd856875cd895e61d887d", -"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "b529b3ee35f202931b7037ab8d551e52db6728488b0888ffde8ed975ec0e93eb", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "4814f551e4c88411776fac91d923158db488d0631cfffd43f47dcb2c681114fe", -"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "96c81495800eae83cf9ed97754b6b983e67bd5b58933e12240c589dbb10684a0", -"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "f3adca3edd5f6e75244d8ebb14c0964abaecba0b60b6ca4bb4608d095770943b", +"T3T1_en_bitcoin-test_grs.py::test_send_p2tr": "91c09e02a10d29d785ee047f5eba5ac79f49930f42ee73f8cfe8705fa0a581ff", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native": "02be670df3522223956efa5d887e13acee44c7d6e01a0f0aced212d26e2cb374", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "3a74377437e5d18320d721da3e9a62707c8a29bfe37caffc903485cb388b3a9f", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "f1eb74c12fdc6a849446ee9d6c4d97d63661c4689bbf18a3ad9816e63b6113ef", +"T3T1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "9da997cdb4b21f17734a722bbc12c683afbf8263267815e3e66ff8472d330ef4", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c281238d7a0389d26f4903ce95ffcca9bbd41be470d50abe1c8a52481566ea13", +"T3T1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "97ace38c469e812f29a79f5db07b1952d55d04eaebbd64fac20559c2ca69a6c4", +"T3T1_en_bitcoin-test_multisig.py::test_15_of_15": "64edccb35796b1a59c1afa59baf37a18a675da14dfa13dd24a3800a9aad6a4af", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "c5f8ab25daa938cfd2a8c162f1aba70ded0cca4456af42b8d9a95a2b9873b315", +"T3T1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "c4a83aa10d9c91b4c80f2df758efde82efb5c66f96000432a2a56105e5407d3a", +"T3T1_en_bitcoin-test_multisig.py::test_attack_change_input": "c980b7fd10f774b30f62cbc810861e06ea7a079016b0c94285c414481441a553", "T3T1_en_bitcoin-test_multisig.py::test_missing_pubkey": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "479e973cc476f578200c0b2858331930fbe580654ef1299dc13ead4ebc63b94b", -"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "8c419d46539d7ef8b0ad77d78df8be051fab1df9b051d44e496af0e6b8f6c6df", -"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "b0af422ecd9feddccda735724f7921fc3d39c8052497bc43a056f52ccce913dd", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "9a5c60cfe2ce0e4c0c6bc280c01bdc76f2c56608d78068a3434de5324712383a", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "2e3624efd9f72d19539e9104113d3d80f3ab6e6ac2649fdc7b614babc1172a94", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "2037e440b7b46f0f8f3632e22490f82aac87721101987f716e0aed6a0d022450", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "7eeee62f2fb9a7b18a62d2a2cc5ca9cb2774419fb191087474ceb8ac55a1bcb6", -"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "8f0cded41850fb6b9201fe09b0013af3091cb48ad832ae7d8260ed07b92d1d2a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "509a1501d98e080233a020e71e1eabb8a790c2af518afca0d36db73911a4efd6", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "34d486b171bfd4419ea2faec7104253f4546869b453fce2285572016ac34b6fb", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "5ecb4f67613e567b5c86ba4e89fb4755e3d30c66540e8745d8fb36975b31b509", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "4090ab43c6209951f0b75e380b0f3fdb354abea467f9d27726e11688c1018a4a", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_external": "972b602b334a911cccfe9d62be972e0e4cac2cca3df20f38d24d0c55d77fce30", +"T3T1_en_bitcoin-test_multisig_change.py::test_external_internal": "a9764964affd1f2fd9cfc5ab355f2961d0c64cded5d450fcc87cfee032b9fca1", +"T3T1_en_bitcoin-test_multisig_change.py::test_internal_external": "ee56c62538a7bd1c0859d127c47b3ea39688df7c9c41f8f82e7489d80f9c9c23", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "ec6bf01499ee7300528c5ba1587f7925043a7de8e7d05b1274d7dbc4a03ac873", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "13c8665bef8816dfe853a854738ec67de55580f37fff5dd735c2edb3bfd340bd", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "eb21844fdabbad9eef3f2a64bb1c60389c08547983b76606c1fe413f7b39a62b", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "5e30c80ee6727408663c5ea00c3a16222734f21a2616abca8e57a8ea63756f7e", +"T3T1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "d6604f07a41b5ebbc5bf5fed7f1bbae1823515ec65503e181ac49104d8fd1a7e", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "2d9ff5e72189fd380cd51154db7bc271e0dedb495305e3ede5e4887de646e941", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "bb42370d78d09b9ea6688bf64814a60c6d10cdf117221e89dbe19777441ed1d8", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "b5a6f3206c08c5792ca7ffc32b92aa7561f3238cd89907e306900363918635bd", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "5ac8cfeb29555195f2d07ba5baa5a81edb3171be2aa263bb3c3f6d45ad19b854", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "b14cc7ee1f45a61dd739191366739874ec8a7389549b64bdfc1fa43d5165524d", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "359bb21bcf87dc487d7321de7c55b85975688bd2119df9912688b7dfb586cfea", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "d315c6d7f56e669440d9ede29253ae3ee626b939ba3d4137f402d57b02619592", @@ -18775,41 +18775,41 @@ "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "beb77a2fe61e2f3c1a297c22ce1ed14c8a90ff4acf06a2467e4154e20c357a28", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "d9f8ced5b3922d4dfd3c970b7e7aaefaeaa4a4a0bf2d998c3da630929fee4ee4", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "de907298f431b878f75e0c29f3f3803e49dc31c968af33d1a6589b2eea1e3388", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "ac32f2ad1a8e1a343196c57a29ad2f17e7378b304cea499cdecbe8d804311bb0", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "aa130a633150e8961fef0d74ecc985fbd53263300c9ae828d66eddcb868f256b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "b70ca64589ada280391afc55abf59e42cc8daf674dc231888554513d00c418fa", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "a31d58f18b364261371b6c267425f9f6a4bf82feaf4bcc0ba02ba31b2420f142", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a1038bbc186820a99b2f401386994b2a0eea6751df19535a959b808f3025b458", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "06c074ba5d3795b9d7e155e19bcb8b6e7be12835cb236c207fdec6d522203728", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "c77dbbd6ca8e285b7bc16e8b6f9292fad0f444e63472ab39cb3b8f37f2840683", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "b921f69566212cf52bc8df373e5778107dbec7571b38e48c9ac0104b2aeea932", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "619715d73e9060ff0a11e16fc99a26604ef531bea9fac018336aa52bacafca93", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "29f5cc1b4b0d2014708946669dc0bdee431c0ec9a504c3c89b23d6e0f7fdcb91", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "31632187b03f7befb305dd0a3846b0b6d29b39296764126cf38e882858c985e7", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "6bb5280dd9b2cfa41b6bed36b038bd380351850d30cff744477b32a9b2eb58a1", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "95cc1a2c577c6272f77d13ef3ebbe39af250e56e7be89fc2b54dd11cfee482da", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "35b4d02dc4b994e43627613bdb8ae2bba3436d49a7a73f06b608a0440d0ea3d1", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "5d1753beeab44ee454f7d31bd8a6b1d839de5ede64d67967f5f805d981260c3f", "T3T1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "3ffa6f6d26d8ab2c009d0d47e44823dd8f715938495236ddc8530f89f559450d", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "72b3d8ef891b9a5efb2dbedde2e27285573a8e9efb5fe97f1a9b47d6bd7e03d5", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "cb385c338e8785ca01b3fa6d2d4bf07aae979eae72b185ca6b001ac6681a11e3", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "09562c29ecd51129f30ec2323aa7d3232b265bb156e446f6ad47d781a3fba13c", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "ef0a7c3192a140f4b27541f192d102c941a1935c37c4b01ecb804d77769bc584", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "c8bbeb18bf0c59a8c32904d8f9bc6388937db244a1fc787c14e1c7405eb41e45", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "615019059a747904b9682f447c4a5a25bd3e8557fbfb22f2696e702c6283ae3a", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4bf731858ab16cb6850dfeebb253f5e6278b4fc7db2dda8f0d18d9ff645d8d00", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "4f8b089a6d0eedc4a8aaf215d31af84dacd39b3049b694506bb353bb89a80123", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "a573c22520c198500ab4fd206979d0a7d7acb3ae2d43cf7f3d2ee1b785701f24", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "4bf731858ab16cb6850dfeebb253f5e6278b4fc7db2dda8f0d18d9ff645d8d00", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4bf731858ab16cb6850dfeebb253f5e6278b4fc7db2dda8f0d18d9ff645d8d00", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "4bf731858ab16cb6850dfeebb253f5e6278b4fc7db2dda8f0d18d9ff645d8d00", -"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "adb1835ae42854c6ced18eb7c9214a26adc591b99d1452704277019e827e1198", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1be908945aa6ddf9459dfcc858ac3e1b0ec82aa37e7ff7c5482467df3f5c794b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "5359bfd55e0e72a90aad6e3193914241df20b3ce027c37819e41ca97d6b6b077", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "95aafca6c7103f5b55cac1bad72a53e3edccefbd12e58e26d43c8d0041b7ff4e", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "683b532317332fb18189af35b6f412e3154c0e34f5bc8f6343644fa60e2c5eb3", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "908c6dcd881b5b7c095846a7aa001d9b73c4ea2014f9d9575887c2cee844af2b", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "acaaf208322a2ad3d41bba09e779231c136bbd43b82691671269be4e04a20367", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "004c7c7f3a56b5e69bbf837506d0dc59e36969ecb52390cc5a175158c6875c42", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "6a623046bb660a3c66801a2986af3609e2e502062d2e5f9122b12dc99d92b1b8", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "354768b907f0b8e4263e4c8938af1fbf4e8bbab942207c6616987bdb0b03eeea", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "004c7c7f3a56b5e69bbf837506d0dc59e36969ecb52390cc5a175158c6875c42", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "004c7c7f3a56b5e69bbf837506d0dc59e36969ecb52390cc5a175158c6875c42", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "004c7c7f3a56b5e69bbf837506d0dc59e36969ecb52390cc5a175158c6875c42", +"T3T1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d8e7ff44f033849a6a0c997741a92fa404fc56481f8ec1fc3f900add3f435ed9", "T3T1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "990a81b1d0d6dbbbe0fca15b44c376fd917585d55b8a426113051b8612cb0976", +"T3T1_en_bitcoin-test_op_return.py::test_opreturn": "9f4dfe546383387a66ea66572344b0fc4cbea11c27c213c5f7caa072ab0622eb", "T3T1_en_bitcoin-test_op_return.py::test_opreturn_address": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "35e809eaff07d9246da766f2f920035b02e5ad5d8a01a71c70ec3523e7db60c9", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_included": "9d019f3790d2d871d6cc5486c863dbebf8945253ff6f80fec427b551d36f42de", "T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "03d5e2b3276b7d78f04704fc1251d05c944ab18e058a656414bbe91f80971990", +"T3T1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "3c1a8ec2671da9a56f1f92b963b072ab4e5d9240da5e91d54da715c8634b118f", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "7d87eb953219034f889fb2e204146c367ba64387db63abd771b0ce7f23947da4", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "7d87eb953219034f889fb2e204146c367ba64387db63abd771b0ce7f23947da4", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "dcb567350c5fc59b9bb3e2bcc214cfe32854392ab6cf8e79991b1adbace96e19", @@ -18836,103 +18836,103 @@ "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "646316b739741f41f4e80e8cc7195169182881e5869b723b5ebd07f0c8ee33a7", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "9519951339bcc6f92a13c88d2ec60e04501dd66acae9dd191117900fbdb3bd0a", "T3T1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "825b4d508e3f4954203a7ebeef72c4c6750481934c5a395fab5417c7ccf01432", -"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "93e2f9c06fa6e78f4efd5a0fa486ce22a105d2565b7681abc925e15f608d1f72", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "df7c2e09b3281d1bd04e3f7de00a9bc2d1edf1093e47f4bfc1061dd31882d7ae", -"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "d45a55805aa6fcd8d193a31d91a6cce23bab189a8664a990015e2bfb3d198fbc", -"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "b116b47a0fe82e4e8f361c75ce58ce5a708e4e8e1d00bff257dcd02d720bf486", -"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "b116b47a0fe82e4e8f361c75ce58ce5a708e4e8e1d00bff257dcd02d720bf486", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "6a1b799556a65f9e9d8041442b8557f78d44577aef202da11e41256db24b6850", -"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "df5299bacb5c2c32ec65dffbe117ecd6cce1ba217a28cb494822e448e3ec416e", +"T3T1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "6cd8c2d51fda7748cff720e799b4cc3f40c380a96ed84c86ae0e4b7bd2451fa7", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "c92988cec74fcf05b7ffca5c0ade9d1aac3061c4700eb5475d854a11802b7010", +"T3T1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "32d948490eaa7c75e89643673f9818e5fbb36dff2d61d196e3e1a84f1dbaf3ce", +"T3T1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "db65bdf14e22f71da00aa735f3b5837a326ddd82c816e330f51ecc3a6ef78b08", +"T3T1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "db65bdf14e22f71da00aa735f3b5837a326ddd82c816e330f51ecc3a6ef78b08", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "18ef09075d9dd92064ef15565a93fe37441139da79c738d414a46a4d4a12f6c0", +"T3T1_en_bitcoin-test_signtx.py::test_fee_high_warning": "18203036c3b18b07e945ae8e08a92d557181201ab5fb66442c7273134e9d8bf3", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_signtx.py::test_information": "467186e3a17e4e3d05ec4c2989ea3a2703f8a7e878982564a0c300ab0aacb757", -"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "6157fb187b913fad0af5fc1875b41fc288b234c85039ca8043dafe6232e68afd", -"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "e54aa73515296a4be869f45debb2ab19d98333f32f8368d6e03aaff9065ccd88", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "174cb49b53c0fdf223b20b24164e3abfe2bcf1265ce86a37e24950b531a71b55", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "3b6b8533b3f970073004b07d3aa7b10e46b5faf814753878685364720f37ad4c", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "c57bfd7e24e0c1adf47fdb4353dec2ce6cf2dd392beb6c2b4a6a229b3c3f6dec", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "3b6b8533b3f970073004b07d3aa7b10e46b5faf814753878685364720f37ad4c", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "c57bfd7e24e0c1adf47fdb4353dec2ce6cf2dd392beb6c2b4a6a229b3c3f6dec", -"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "812740e91a1b6c0aab6af4716c41cc24dfa9625ab953ac40a790892b2246bd02", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "747af47ffe8c46538065b09d5767005db2e3173c9dcdad02e770e30fb4234933", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "f5545c194a712ec4ee6501bfd49f9ed10af20d41b4bc8dd90b0884d079f2b84c", -"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "91ec84cf23a51127b176d4d674826a3863c5af0ae6ccb6bffd49be01354d13f6", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "1878f296db4bf6dee99aa7d22d15a844add741845f62c38b976a12291c8389ee", -"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "8793c7d265e95886f8b72655f0a4e4f438043acf5a62f5179f6a0c5cd9827862", -"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "cdb09429c22da7af5c263c7523f53f0ff929ac0fa859cda85f03e5cbf7d87173", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "15cf3c2dfa3868f9d74244cb6c89265e7e25cebd1357710fd1727b18768a3efb", -"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "2f6e693e3cf3aef42098c3f46c7ad5060fb056bfeb72cb2ec880e6b43d92ed52", -"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "1cff0fb8c6a278ba63f55ef49285fbb8df7633f2a6963fb4ccc1f838670b692d", -"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "8117ea9996e0af1fa20671bc6c344d81044f80b6ad6faf07bf8574d0fc47527c", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", -"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "58318e50fdeaca21fda089ac05f15aa820fe1e1cff387b852f90ce3f0e1724e8", +"T3T1_en_bitcoin-test_signtx.py::test_information": "b36135464124033b4c1b052613970c9a589c20ad73b14903d76b821e033d207a", +"T3T1_en_bitcoin-test_signtx.py::test_information_cancel": "f292692dfb42c620a3b35552f4ed4507bf0f464bda7429f923803a7a1acf366d", +"T3T1_en_bitcoin-test_signtx.py::test_information_mixed": "237fe0fee1e2190e7aa94fd65f652ff6b6fa7114ff618c4832ab644ff216f23f", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "bdbc65e60234d47381c05a58d367e787cb429c6ad5d677d1f6d0a6073d61d33e", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "659780b75e41de6b37760d9b9b6aaf7cf27d79e5e0be27c212ecc3b9faea2897", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f5c396631f9feb9a062518feff5312551e37b1f7ec79ec8ce089a6e9b9b5b7d6", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "659780b75e41de6b37760d9b9b6aaf7cf27d79e5e0be27c212ecc3b9faea2897", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "f5c396631f9feb9a062518feff5312551e37b1f7ec79ec8ce089a6e9b9b5b7d6", +"T3T1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "4961249eca8afb8c99b382a8b7faef9729f0bff5ff25e7bb0b0a8a3df9270362", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_change": "f81b5bec4cfcaf1427b69da057b9f40d38594acde06019f018098ee823e05f91", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "5ea81f9b597185bd6cd8e5b2e9a647d023d6f49d767dc539f384c799eb047ae1", +"T3T1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "4509545ca35a0effe36517b0c59f615a051b32501a30c6af212c771a2b0bd365", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_funds": "e6aa875c38a3bec9457a4834602f8b8447656b42908d6cd27abf330f2796dc85", +"T3T1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "920597f15b7e34a97193a3d3c26f9284d1528a474efdbcbec066790c2bc8134f", +"T3T1_en_bitcoin-test_signtx.py::test_one_one_fee": "26a3e287d9d6a174795e1f80a7b8e675228e0f8cba77741a842f75caf4ae63ea", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "200024638808a7fee321752c0a0c9982f90b867cda8186a01809674729da6f7f", +"T3T1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "e7636bcdc07b35d3be59ead14b3f552658a81b29cd24b77ff26fa1083915904d", +"T3T1_en_bitcoin-test_signtx.py::test_one_two_fee": "646256604b00d6761d90cfb0ae8f7e26964f2de42545846f075209c51a6b5d37", +"T3T1_en_bitcoin-test_signtx.py::test_p2sh": "026a027dce4e6f58f2b8237ec27af4998a41707f0788a50d357e15932d91e738", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "789eaff9385310b14d0028caaa3fd54ab2b8279304d2e6a1ccd56aa84a0e9530", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "789eaff9385310b14d0028caaa3fd54ab2b8279304d2e6a1ccd56aa84a0e9530", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "789eaff9385310b14d0028caaa3fd54ab2b8279304d2e6a1ccd56aa84a0e9530", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "789eaff9385310b14d0028caaa3fd54ab2b8279304d2e6a1ccd56aa84a0e9530", +"T3T1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "789eaff9385310b14d0028caaa3fd54ab2b8279304d2e6a1ccd56aa84a0e9530", "T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "dd0a915fb8d2763c1419d1fef4102f57a7b16086e3ccd9fda85a5bc7109b3642", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "ab9e3843b55b6dc3c3916efadf8fe4cd7598a1836d9d10e5aa6d6ee67970c72f", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "b9c97a09e3fbc07d4dd4646eabf8b8169adf5c57c1de485fe74cc0ebfaa6af65", -"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "b116b47a0fe82e4e8f361c75ce58ce5a708e4e8e1d00bff257dcd02d720bf486", -"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "f1d80d72ce9a400a835aca8bd54042ea6407208176c8b0609372c31a91e2f491", -"T3T1_en_bitcoin-test_signtx.py::test_two_two": "8acda1700e6e7e09405b99eff4598ff342511cbca27380dec1c4e2472b44af25", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "cdb09429c22da7af5c263c7523f53f0ff929ac0fa859cda85f03e5cbf7d87173", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "5de8c4a80afbc228a08a73db63f269ce51b783984ceda8b66b6f799e14d4f252", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "6824fbea055bdc7ca73e8261ca8fac5b7509bd704f656f96de32c52486eafd55", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1447cbdfb3e22eea65d91400edec7c5cedd9efed087601b661f80d31b215392e", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "cdb09429c22da7af5c263c7523f53f0ff929ac0fa859cda85f03e5cbf7d87173", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "00ff7313bc260796b5ce4d57e82b2a29b9a1102baed4a4ac4bf418a86d04f0e6", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "3b7e32a490812c0b95ae7849d58bd4590d32adb26d423f77f7e48b93244921fa", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "d3fd7d15e94193ee08e4669f8a540ef47a304deb62a193e733d1899b02632130", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "89231e6e8746d48c59f076a4295c9efcbe383f4061649563e0333889c05fed6e", -"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "00ff7313bc260796b5ce4d57e82b2a29b9a1102baed4a4ac4bf418a86d04f0e6", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "dce1c2c35859d2611270ee38fc4c2716cd59cc9a8889e74b0f92b1e7afc21710", +"T3T1_en_bitcoin-test_signtx.py::test_spend_coinbase": "4cfdb5267463b3b33f2e54bf6bd60d7360405998fb59a6c6ff615f9fa91b11d7", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "c4175eb68b5c7752854fd83b9d63f63cc147ebb1be941551f859b294427ee9ec", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "d5435045e1e59576b8a4f54526cc918ffc48090bc4ccd251baa9131832cb36e5", +"T3T1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "db65bdf14e22f71da00aa735f3b5837a326ddd82c816e330f51ecc3a6ef78b08", +"T3T1_en_bitcoin-test_signtx.py::test_two_changes": "147936e770eedaeca66d439d52fa1b21d1aa4c3e4c70fbba21a4f1d4b30a2b08", +"T3T1_en_bitcoin-test_signtx.py::test_two_two": "cf6a0a94bd1a938b8df96bffd8c0417835a14991c3e4e25c2f069494d94e70fc", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "26a3e287d9d6a174795e1f80a7b8e675228e0f8cba77741a842f75caf4ae63ea", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "1dea1ed99cd457fd7c7646e600d5394c8ee265f1a2a5845b3c190768d1b9af36", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "b5f74c787b3081e4e86cf0e97c9eb8c0f8e34c384ece4153c7b0f1b45d75ed18", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1babd914da51eecf758b32807742074b26dfd579769db4ced69d5d9d64f663d4", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "26a3e287d9d6a174795e1f80a7b8e675228e0f8cba77741a842f75caf4ae63ea", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "3cf0e9154d0f705b400bcd82a59f3d4454d5a618cc377aba1765cbde52d88690", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "040a37806d99883e4969eea331f3d265a0c844b7f517b50730176c29bd960abd", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "e9aba21b9528b5c60fa8296261e1ff874eae06e68da3250ea02967d309a6aa52", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "82187b8292f549d8a4451b6ac2b1fc85107fa3e9f5de4b66956d16b0b939746c", +"T3T1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "3cf0e9154d0f705b400bcd82a59f3d4454d5a618cc377aba1765cbde52d88690", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "99e1005699c020ed3d40af8ee2284c0479bd080220b1b8217d39b6155f448412", "T3T1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "511fac9c12e89f68d560029730da1eacadeaab96200b4f2fad19067ef8dcffd4", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "18fdcfc3daf5c4447e953dcb2b8a0dee38907f6831786d80ca7f43c265edbd9d", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "1797841709dc6f4a6fb0c2fdac60164d794004881af9ec934df83d0383415f48", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "b6cf0a22fd448146be056187e2eb2241776367242be6dde66242f669fa26a655", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "04d0fb58710713aa5327e682e33f96ecf0665d2a2c158288d0cf657ca7e0be84", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "7470b0f10eed537b977f7a0815405bf0085d15db1d3398416b58bcffaedf120b", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "6254ff3e1546470a1850cf8fb0b39bee55d57c28f6e399dddbe999d89eb11199", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "04936c8e3e7a53182463adbcd6152b21bbda970e945654ec7aac89ba03bf20c6", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0c49922cff7c2e288e5a286f2d1a79c87a73d0ac8991e780694e1322d79713d2", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "f9cee842fad7bfd7c2e64a811b371bdcf6c75c38ceb0028f2eb5104058ec41c8", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ef2152a00a5ea9a0e82acca3c6fce63c809e0b52593dd461e6ff7c7409f23d83", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "02122549840f79cef435fe6d9376d5d5b211c777f19762ce6a725ac87611564a", "T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "76c1ee09b80c6f4941e0d1f3f5e5b94e430f31e59bbcee3106ec1d683495fe63", -"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "f475b3631ec42114401baa41726cc73b571eab4627dc83dd5e771a2ee2c8f68f", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "f8598e0bbf1b9335e8714dcf5eb4fd14ab36d23cafd19ef0f49dd731a1e58e8d", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "7737ce0b495a2d6a45a67b1ea321e734a4058512d286292148ebb707f7cf8645", +"T3T1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "b8301f8f0416ebd0b7a164b9b09f8711b430d98578ea922102d5dd8ce7a22c96", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "1a24993096bfe37fd1cf9112c82bcaa4267162d033fe6ef8a8fbec121d498293", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "99f4d0dc847d34511079d6b7f82e35ef47c13d66c095c8708b66534ecb26fc3f", -"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "add494e760f0553f4d5b14c15dff4219c661ab425ae677dc141d9a8f0034d284", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "b32b4184a215f7ca38e6ea7eb8d8eb4adc6dc2436337ff4bcbdb0827431ef6c2", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "fc49c8bfd389abb6d37da50ae67a2635760b001cc1f2b2bf022b9ac3ecf46f2a", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "b32b4184a215f7ca38e6ea7eb8d8eb4adc6dc2436337ff4bcbdb0827431ef6c2", -"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "fc49c8bfd389abb6d37da50ae67a2635760b001cc1f2b2bf022b9ac3ecf46f2a", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "847b5e8b3cd25c9758d4030217a269bdc9421d52bd5700cccc554069f54870d3", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "65545a56e8982d02575335475b681f45c6638f95ba6889094c521a2de8e5ba62", +"T3T1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "e50f2325a2804d4a80f45de3d34a82b18fdc6ecef0526b129123396b00685250", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "0bfb6400e10883fe64aa29c7a3f56e32feda14aefecd9540cce2c6b12b2397f8", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "f0b08c4c310384eb05b96c61fc60f6f729cc3d1ccbc8207d0f14054891cc315b", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "0bfb6400e10883fe64aa29c7a3f56e32feda14aefecd9540cce2c6b12b2397f8", +"T3T1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "f0b08c4c310384eb05b96c61fc60f6f729cc3d1ccbc8207d0f14054891cc315b", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7c1687493942c503f503a98aa728de3c3039c195c881d4dd2b60b613aec06e88", "T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "bc865d3b26056ef4818aa25972dec39be3afcae4d07cb2e21acfbcd755497a89", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5ce50ab296880aa4dcaa7d35b17a8945b4694db084792b4a8171eb05ad4d8496", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "e33d37fe698460f436887e0fc849982aeb07c1e6e99652c7cdbb72a5de5a1d7b", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a403d98952513d135ec9ddc5d25eba73c59cdd137b0aedf37e167592f57bdb7f", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "708528f02d39930fc25ea33f58cfa426c9cff073d229019d0ce483e853c28681", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "0d203af06b432ba406898844e69334dcd4a209209a55b21a2c6b6e8375b968b8", -"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "131f4c296ae77d4d4a78f218f75968479166d34778232577e0d4602ed4b3b712", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "97b1b12f8a9fe89c4abc72391475aa24af555a12ea111dee556aea66406fb956", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "f3f257de20b7ae56ff5881c5aa88b9c3b2b6dbd279394df6d96d088c55d60196", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "38c55865061774af7bb74c714254d84b128e3c0f0ba064ec5889a8e00c752c96", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "cb135977dab18e561e9e52d370d40c88fbf692b65526ad93cac99fa36cbdca5e", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "95788d9d6b8ffbe0419ed77aa7d2b1e1e13c28bcbfd714e15fc75688238a1799", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "dbc8aa0167beadc5b58709a0aee8dc1a24c6f53afebfecd3850f6ccf3f1a7bc9", +"T3T1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "581ad8004d31b1470f8afa7a878a697f8778ec0c90e837f95cd2da56c23430b1", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "5b09c8b2e60b95b59c1f3fa3a6bac69811ca51e746d176aefc832b28dd872592", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "5b09c8b2e60b95b59c1f3fa3a6bac69811ca51e746d176aefc832b28dd872592", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "5b09c8b2e60b95b59c1f3fa3a6bac69811ca51e746d176aefc832b28dd872592", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5b09c8b2e60b95b59c1f3fa3a6bac69811ca51e746d176aefc832b28dd872592", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "2be217e937c73e2c5471bcea7a2de98fe788beba97f390d48db7feef43a0ae08", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "2be217e937c73e2c5471bcea7a2de98fe788beba97f390d48db7feef43a0ae08", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "2be217e937c73e2c5471bcea7a2de98fe788beba97f390d48db7feef43a0ae08", -"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2be217e937c73e2c5471bcea7a2de98fe788beba97f390d48db7feef43a0ae08", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "0b277c3acefceee4be4e245bfe61f8275707e35879941172618340b2edad4982", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "0b277c3acefceee4be4e245bfe61f8275707e35879941172618340b2edad4982", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "0b277c3acefceee4be4e245bfe61f8275707e35879941172618340b2edad4982", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0b277c3acefceee4be4e245bfe61f8275707e35879941172618340b2edad4982", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "81e532c89f0e05b39fa6817f98c232fbf8c07aa1c2ac0a5771247dc66f27adfb", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "81e532c89f0e05b39fa6817f98c232fbf8c07aa1c2ac0a5771247dc66f27adfb", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "81e532c89f0e05b39fa6817f98c232fbf8c07aa1c2ac0a5771247dc66f27adfb", +"T3T1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "81e532c89f0e05b39fa6817f98c232fbf8c07aa1c2ac0a5771247dc66f27adfb", "T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", @@ -18951,33 +18951,33 @@ "T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "678432c31d98b38ce0c68ae65012b538c66e8140f54e9a67e3ba730042f65a61", "T3T1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "a7e75619020cbfa2ef1c309c96376c0071bf674f915618aca0f3e57e13e302b1", "T3T1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "91567ba34d1aeb925d26973e22fc89f2584756ae509f85713f9938d4e6a06fe8", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "752935d6bde196d17f82c724db8eee88fdb663e37a9fade7716217936bcae614", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "f960c45ff55f058e6c4be0133f23d3cc48f8be38e93e3aadeaabfe83c51a129a", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "9471d13642f6f1a2f8098399392becd5b28b9e2cdb4b39c921af2abfbd874aca", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f4c2608a2e77a4f9fe5398ad9eb3e4278eaa659d90dd577efd96746e82e2aef5", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "2418d5af6a06def7414744838228546dd93d3efa6d913d8f52bf075bff3609dc", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e10ef6f179faea5fd50117352679573bcebbd07736f2c50e4770a956b72f9064", -"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "76fe2f38612be8522a80e2a008540bc63cef4382077479adcebf4ed6e8c91119", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "f0c19b6eed37e06342124f45045583c262c00e0e3b686e31995d2bafb554f61b", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "ab3138fbac4b1a5fbde523452a5b878071f5cf7e605d9a50203a98259ebf70c0", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "277e135244a3bebdcacfdd0cd8f3279fa42e9284211b45e8fb7fc75772d4c649", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "b6221e7f9231428ce8fede6e5b18677a3a83190207f18bac726bdfe23cd2859d", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "2718c5bc86ad2a133e96218eb40ba3ae78fc10445220645bdd8d577a6e66886e", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "8bde2dc8036fa36f926e41781c1f1d316ce5fdf77df8fa36ea9028437349b3cf", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "00ff7313bc260796b5ce4d57e82b2a29b9a1102baed4a4ac4bf418a86d04f0e6", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "b45686268cb54daa04f4cc8436c902d02a578e7439e67058a445bf708efe7e27", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "a5a43d1642a7eb48172164d798bb1a170d63500ae9bcbe8467bf34e3ec42378e", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5cfe74eeb6e447e577e30ee62b08078052d1ccdf81d2a9db2b45af1cda268037", -"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a9dc697752bcba3e42df379466bf4890bf08950c2a81d80069e2750d4c1a6d65", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "a160ee2be8a4f80609c058ebb698e5de9ef23fb68fa6d5cebb14ad6778dce111", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "515858ea67fceb5e564f1317e8cf5594e42cb23bbf0009f0fe636ffccf62ac0b", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "9ba04bda687c6c4ebecd178b4035a18ffdee19de40acbd4429e9ad4d2abe28bc", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "32d172c589785bdcbab28e1e11ef738baed8536dfd7eb11c280c0add313fa8fc", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "6527c4854ef42c21a8021153ceaa4f3cf86b426c8b3dd675108156a419fa9bcb", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "3a3d90bcec88064e6ba75700ff9b78dde96db216e4ff56a5d9fce8cca07382d2", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "d35662fba340a67510e73ecde05c4c90ca1a1f524698091e873ed1a8cd5a9262", +"T3T1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "03196e7e21c85fce234c5d495a9138d3fc02a0217b7ca39f88337eb1d1a4a074", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "62aea4999b54273b1b0077c712ee064d09aa53e8b97b3fa662fe63ed7dadb2cb", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "ac17838a7da2d0cfd407bf47d1dc18a4e9437315f42eda93ecde93e1e15e6037", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "8dba99055fe031f1ca4ae1ee16d56bdfa61d3a1e337adc49135149d715e92cf5", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "a6e7344114621dde0685d4b0960dd755b003994974f1a8a29300fc858e3ff9f7", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "23bb76eeecaccb27fcc32a55be8155fac2266ecab8c9e4e90652368de8c94bb2", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "b7ccd56b07960b33d884909a492ea839c9e46544a721455995cf1a53a0601afb", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "3cf0e9154d0f705b400bcd82a59f3d4454d5a618cc377aba1765cbde52d88690", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "6a48461e1a91ac11a79d18d84cc4d91d711c53d9de526177b9534296eb46d36c", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "00f4d6ba896c8b32935e955c22e9f4af21345e2b0066e678b3d111f224fe34d0", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "eb67b0dac5b444bad45e5a4388c5c863545ff8abe4ecceb0dc9fd894ee56bd1f", +"T3T1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "0031e10aa7e505bf19d115504bcbbeba4fe0c3d1495a91e4562bdf8622bda955", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "759626f4652c523a44f3119ae6bc14bf6bae90afcc7b412874de7460eaf17478", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "26448d496053fdef7ad12fc4bb976137f1d1f3feeb7c5284f6f6facbd5bfb59d", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "010d25e7b2d78180bf8db8a4fb6db006650c0c377f5ebf33346c5d7c887f31f8", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "b6a530c200bd6bea0216807dd948221d346a546414ce466dd8669e02ec676d52", -"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "059af6f571281b9aab475311bbdbf7b6b4f0645f14f1dcbbe8acd5e2ba9d2897", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "f9118a19f5a60d36a76a6a5e9c35ae0947926748201c094d98f6369e3eb98121", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "30c3410fb22574628e3e9834e48fe76639e017a5299098dc312a004d7d34d763", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "7888308bdc23d36a43dbaaa00b1ff636c977f1c4b9a954c3a546025b3f70c1d8", +"T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "76c065876ad73bfbad6aa7de38e7034ffe1b6636597e884eb34956db23d55d7e", "T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "f867f9be49dd59215512a2ebd9d4027c0af8c3bd7c0af44ce129331d84fccebb", "T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "ec5900f75ee8be88c5c3da133ac1f2f71f6085ca19d9e60c7f94349372e3b626", "T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "b42b4053e7dfae91d8fceda38b64dd47ef8c66c661f72031e45a0f0fad4e0309", @@ -18993,9 +18993,9 @@ "T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "9e57c0c90fa44bcbdd3ef33b80cd91e843d5eeab8799efa4d4edf9b469b60397", "T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "081457ab2943e9cd8ea47c11762347f2574ca830c742c05a932e5b2f6a3c26eb", "T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "dc1855315e8d72a146fe88fb92a86e7be24beb180f9d0d36615693d0e10c9e06", -"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "d10c0dde0959add46d266575b6516ae1848889297ba3fed412f4fa4ae84266ab", -"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "8da9a05abc31d586ccb6c0ce71207c338b034803584bfc9d355bb5e8f0d237ee", -"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "4f76feaccfcf726e941df55c7285ae9b12a68b54af68edaef5b5c661d1d5bc0b", +"T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "ea19880720b16fe8a730e908b2abfb34cf507940c156e882853a7632b842b329", +"T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "923baa34b30f0945ea335c606b92732c12ea0ab071ac1173c968650b5ae8ec92", +"T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "e203217c97bb5fb0c415d2c2f6a85fb2e8f7e65298b94baa6e4494698291a7ba", "T3T1_en_bitcoin-test_zcash.py::test_v3_not_supported": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "b6d4521080a00b40bbba6c7674cdaa5d87c4d8a338ce853e6fc02b2373328287", @@ -19023,11 +19023,11 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "2fd2a41531f63d7297d59ded7176226b1845c56896f492405b15958e634b0411", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "6436b2af0ee7d10d5fbe902bc18b151ce525d07ab184af89e2f5280eb038ed9b", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "683c09169e1bdeeca837724b06edd1ef09cc7f6bf85916426837f5c4f26bf8d5", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "b93a1b7764013cde803f9a71d34e92debb92976a77c12c12157d01c88d4de04c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "63c800439f0ac1b3c7434f9bb4db7d580a6d1f40068368ba074d9d0c0b75970c", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "6948e9f5e09ef26b8f4b86b6c6377def7dfae7476fc2ae2b79f6af4c16f541eb", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "4029989f41c0c46bbc4f6495ceadd45ec73f17c8a803086e6f7fc76282dfe876", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ba5a531315c1a6655c3abfd0e362853fb97ce2682d9cc6a9240474a8850ca933", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "12f639eba2c484ab887503215095a02caabaca33eec4f8fdfe28a8752bb4d8a0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "820a98f81d9a01b7362782e145a6018c88ff641975f664cbd87f32a8751b97f9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "b10fa915d965ca96b055f2a91e24d20165f6f7e51b24e9b26dfdacb2f58e01e9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "8659b3295dd922c26a59eefae32a8a2a66dd8db5cb9749d1f9683a5fe831e6a9", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "dfd380537f1edb0e307bd20e664d1418f46379654be39bbd03262d76a2b30c17", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "1a20f2ca30e101fdfb9fb644723b1907858fccf5c8b92e899a1d154de40c3d28", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2bb7cd19c9a0a78049b51c98836ea6838b457b85ed7f24b80810f8b2f591f147", @@ -19063,11 +19063,11 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "71b998f52fc5aae74c8e4607a7b0b430514491c2848414e63e9c399f5ac7cc61", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "5e637c6113562c04a5f115c8e0f1cb72bf010ef8e2c619ef49ca33e90665363f", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "d913eaf2b55b0dd3d6d042e9b925ada7339582606c52227e49f3aced67ab33f7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "b2980bff12b57bdfaf0cb51f17aec66c4f0edafd1392aa26556e7cb562be0a64", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "3f10f5770fde65b150189dcf000fd8d4f742b7e5470bd7e8d1fa5b89f7d1e003", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "f301a2a305b42468355ed64d65b6cccd0dea8abb7e62c6b121696ffd1ebb4027", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "ab55a8825a88ae374a283b5e7400a33818e4cd1f84b3f109a33784562d882196", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "890f04850d160f168687018f03a66ba19ea4dba83d9649d1c81267ae445cf233", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "9d5c20f274ec1a4ffb3d718a22c2e7182461b0101f6705030f9db7f9c3ddef0e", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "121fa23aaaa7e58265a76550d72422ca7fa8b474fa78c440e4c6d518bfe0b2df", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "3e737954ef844507b78c3fe2a7d734f4ef22dbde8cdb31d5ab744be0b27f35be", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "19b9180b4e8f2c7d965304a9ca1cf4fff824cea1aa57ec9aa3a44c20b62cd54c", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "a4840cf3f71beeea5018324fef637da30f4f5320a992348e33f3e5f71c550c38", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "f2977bb3c8c7020cefb6f8f6e09c438721c89a81af6f47c8dd023f421f243dbf", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "2267d5bceff4d35c472f2fabee31bcb9a094219ecda070f203d9e1be5206613e", @@ -19103,119 +19103,119 @@ "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_cardano-test_derivations.py::test_ledger_available_always": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "154e5c8577a535669809351fa90bfea849e8ed96504f89ac3e5e65795ceb9254", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b7c45ae869ab48db261c9d926788ec40e75140a925fd8835ccea73a86dad8fad", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "14373f6791e4865e29ca69c6cbe7c5b73667c9f517e79c36bbee1cf68775f7db", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "948cda7ac238aa3d22c34d922f46611f3e4ed9463ccf3eb0c2d1c55ad5b8a6a4", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "c0ac53452d120137fc54da99bae939d426e4ee4cfc6f65290bd5c8dc183ad628", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "329764e44e3ceb6c9a91eeaa2309631f89180c13fd4d88fe1332c8fd567faca4", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "660ee35d090d05d5b27906d857d6c1c71e90ac5bbc16d7badc9708dabd2cb9e8", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "72778124ef6c22b97c8a7ea2fd5613924d84d95f9ba68246aa122456060283eb", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "497f03d3764786ebcc3d2346ea9134f40e0b36b67fc38f380bc4994a1676463e", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "83e9d2538cc79110c903c08d95e8bba818711b4ab6d857e0f31de995de205840", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "119fc152926f4468f7b9442c5805040f2d2f46b61afa62aa506dc353424ad77a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "189299dce898d432ca22ad1096b7b615a2b920a89234518a7124fdad82e9c6b7", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "28b49c7064fdc329364bf063fdea907ab19720941e4534d1c698c9dcd7e9f676", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "bb6e100c6d8b335311687c335789596924b20df1ca6d0fc5f56598989981b1cd", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "f40dda9d2d5854fc933e7fdec62d3e0d35ae21b806feb0cfcf2cbc8c67f11aee", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "b38e3df825634d3b36875c56ff712479930c615f0c4e1e11e4ac5ad0bfce7a2b", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "0b1fc7ab10b7fffc8c77c422d7497eed13708a70b67d2b91976c4179cbf38d7a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "6219c8745c1bd7fe70a4d22c333fc5a3be0c5525ba5ac5c4080d33dfa30b017c", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "4c8f81d3993da02a3a348b3e7607e8a1489589cce66330932175d0731d0a0564", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "3e7ea7a1a91df32f95ede422cdcf34dfbdb4dbb545f9db896b3557c0336a902a", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "7b78efb72b63c609ce09f09af03b301f90b939e19a65f8e9f34b88199c69da5f", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "a77a1b0a0f4cb214798637143d83f9bc1b8cfc73061af44db4174b6f63d2eda0", "T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "89a500360f41c471a036f6b0a8338ba1d95416d7358e673f47eeb927078b2ce0", -"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "48f9c2b19b01895306278ea2418f70d25b15cba8cb0973985db1d260066c8f8c", +"T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "fedf3d463f91ac879cddbdb1263173f5e48facf94b366a35283b222070c26c19", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "fa7b1924df190c575dcc0e4708d8529b6e0b48c3c1905e6bbc44c644cd6e6ffe", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "3e234e25f414c5a7955150805ee632125e4873ae68ee470bf43ef49daed9edaf", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "cf68fa805c804aa1b7e76569d829605c5513301e554a28526e5badc6ed40d885", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "e35b771cd8b589c25f1303044a78dbf94213328431ff4818e4e718d4641ffb3b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "fb10ff3dff2f65d547bd48419cceec7e45754e99820316be9a30a0e931b471c1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "1f619d8d01cf81d47efa88f1f608d3f40e98d8b4399bc30b0826699cdabda6d0", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "ff91d729d5b32112bfd0f8b83d1ff2455ccc098966266de4810ccaa4ae12653e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4cddd78ba0f356ff8d8ff86314cb582a3f197c39fe60a9d4dafcf71fa80557cf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "d49710baa53de5f1b98e5f64ffa1ea2c5fd8dcdeca32c9a5047401ccbad41c5f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "d49710baa53de5f1b98e5f64ffa1ea2c5fd8dcdeca32c9a5047401ccbad41c5f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "e21a3af2c65a559db97c9564c19aa362fc1cec3f62eff5742eac82d04421b1fe", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "d2194aec4961b8d6001829b515a5333c0e6a97fce72ca523dccb484c374cd8e6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3a5e2786b322013c71ae60c19673c9b07fa516c29e23050dac1298558e2f6218", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "1b9a230537e0dffef18f5840a763a96f8af93067501b10b1fed5079ec7efd6ae", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "80f4909dc487db3423e61731f9aca6b581d7a513221d8f99f8ff1b6a4a67e382", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "cf54b83891128084c74d23f03e4d597d4c3be493851d12731efb3bb7b1749ab3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "60d6a6d06661669dffad99207dbe3d0ccaa2c2e4bd79d1da763e98a921c40c47", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9f3531fe26f7e82f240f13d907bc470a3278dc89e4606a952ac8e885a0d84a0a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "cef0ef56f93e75dcab1f5cd1f733743c05b2e94769332014ee0a010c04635e68", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "cef0ef56f93e75dcab1f5cd1f733743c05b2e94769332014ee0a010c04635e68", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "13098bb4a84ccfdc18e385d264f4618d4ee12cf3d844cf910a6e331955b9647a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "69cba415ddc202d3fe78687b1442636ad6637eb422689d491063b22454848f20", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "eb2b704a03b356065e2f079211d1e18524f9e40f81af3cfac8449ddb800d66ac", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "8e409177080688f44cb8e5ab4957a1665c2795636df7415060b9fe29ea9a26f5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "a7fa82b479c8bae54c50d44028f0e7439cba0195f65c7c37385c21f2612b3233", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "f4c1f88263a6299371564dee7906bf5665c32e5c726f02e5c288293d5617507e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "1ff2a3f3f187647fb8d69255d018f3df5af3191b099eaaceb3309216c08250ee", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "cdf822162302722f0967f8a775605693a630879eb1582347d0f195532ea82845", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "e17d4590c5faddf981942e4e72ad32e87694803f7531ebf64b95dc2b1b87dbe0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "a7fa82b479c8bae54c50d44028f0e7439cba0195f65c7c37385c21f2612b3233", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "f4c1f88263a6299371564dee7906bf5665c32e5c726f02e5c288293d5617507e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "1de3856d0fd54ba21b6b9abd86adc711ea16c2db0333c4b21de288d5b4d9006a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "5a2bdf2b986d60f519ec834a4439d93f3882fa13f9e4bfb51f124a3f1c22aa98", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "29595cd65d8da95abe710244473c3d229fd468fdc58327c0261f38b83f728ad1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "0fac831089ea17d50515c35efd54774525e4674467db67b1afc00221e1fcda4c", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "6d223445347dd3c3152684257c4a0307d56c00b43405a6911d1ccb77859955ca", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "12e72fa0c3c41a9ca7f0e4dd12d5e02ab8e4bc5df400944d6002f265222280f8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "cad034b4a83842b82684da6703b535878e24c55d2fbc41c39f2c189846c18529", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "6b0f5a8d44069bc0e1384fca773de8a947ff6238043bb5cbcd7758f3f4acb765", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "861869a263f831253c2be42f49d3b92e69e9ab58532ea8bf2ee480378e7a9919", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "1a9306e4c6a9853498652ddf6d2e9805068100e5f03e3f2a6c65bf75c42b74dd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "3cc5f16fa1c4eac862c16cb281e1385af14209d7433fcb8e483803a510746607", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "00c351d842657028c04c64d54ae831219ff134c92051282c8559c75ac54d5b1b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "1e2cadd567748a6f1f129d36c7571ac8d5e5ba5d0e6a9207e46b306052e96a96", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "d9d798eb40ec057192107bccaeff725cf79199025ef534bef89d42d9cfe79d78", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "6817435e3dbf2ce0550257aa365e6f3f9e72ef390a4285942fbdde6535350ee8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "8f55da60053c0a473b064819f6af2d94b1420f346c5efe8f8332df4acab5aa87", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "afcde2be50b4844680771da6cb2f242b3b76a2204b5881501d7c1dd3e82c09c3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "2e09a651456223c3997af443595be333997bf7a3c574a3fd59e3109bb0c67188", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "8c863188d4c66243efff8fa785f14ab85b7d49344b1573bc904543d403767534", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "e2c284d208b36c183a70ffaf36f1d7b66360bb5b71c61a055cca74de9ba21615", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "d60f12868bd0bd5e4d530abd42685d3ed916f15192c5eb56fe82f427323b1164", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "4ea96a8623072a41078e231a724648756d4deb409af1aaf57df248403fddbef3", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "677e9b92364e463c7ca18297b473048ab9ef11b7ca94220491aca095197ada90", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "4fa3ae0a013cf5e104af0e9dd045fccd3757544a88b259ab8271562ad1231aa6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b6021b429cef4b5fe3f7692d3bb77437210a3c27bcb4532f805a718633d4a6dd", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "119645bfdc9a03789dfa5cf21e371ccd15671bb462355ee5d4ad73715207a160", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "09e3ceb78db53dd7ec086ae629d78c1fb11b828ff9289d12008076058b7025da", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "801307d8565180a1254cfbab5025ffa218a66246afa47604f44317928aefee5b", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "bccda9709d8b585211edb590b29ea367b328aff826f5a40925b270a7c473e0da", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "ff73851248e0881cc537284075b8013f70bddc534056e557970fa8bab6f17c75", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "bba8e816d563bb02525707741e1b82a68586e848c09cce16a7baab45d6da3e7f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "957d10cd236ba2365ce20f5c584a5c74913411470d7fec5c69241c18c511daa6", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "9cd4669b8970c768ac06965c091a7baa3015e1c022dd2ca3f8f37af5d8a0a2d0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "04e7f8b14534404cb4b5dec004683f3522dcb76400b14e1caff9afed1d747b57", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "fe7dfb7436caf2e0e2bedec4300dd888e29e83757427a26bac9a3904823966ee", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a4cabdfa964fbd091ed0fe4d4d4eb6a6eec75de722522a22dd3e44ba2cff53fa", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2391ecb057e0004f0a109a7144b36d811c78fb0782993752cd1a5a1ed9eeb0f9", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "446e4115dfd177ebbee6790d3e640b96038c75616bd210e0c529ef3e65fb9a48", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "a6e7aa372457b5ecdc69f148d9565782708343b5d056c10a85f03aacaacbb238", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "3bf52fbd0f040af9dcf4f9b94141d51ce7f9683ae491ef259998a842a38d1a92", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f85d86069a050bfaca09be923de5ca23d20ec60144643fbf62dda99997bbf43e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "079374b13743166fefebdf32020dc3ed4e0d19043b167845ef128b1b533aa112", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "52ca521c545af75649656c26ad49dc7c192c2b23f1a6d8581858d562f8edbcb4", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "5ae12736d56754b38104df143ab3eb06a751ef897b192ff747867dd01bdc53d8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "13a730e045398158b186dec08c785d9048a92df47209a42fec4d2e009e655a49", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "879a2c877b4045d374d1f6607b671054dc6cf6e46eb272592738da0a8ad94ca2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "da8d999b76643934c788efcecb81f2ec2682dc50a4cf00a0852b2d3224c5a702", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "cca3e48ae8c31f4323dc01ea7f34b40e9d77b0fedfade967088b3ac04360fc19", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "b638aeb9d934c77c410c7d900641a518fea5be787a577989a55ff93d11472437", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "a792ff2b16af0262cef462a377cd6797154d8725c227e931bbcbb63fb8f248e0", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "d110712ebded3db4935c9bc455294c4d86943138ce2b9077a76b8ef69bfeed43", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5b5dae767aa4522a6f35d7d90419fffc94a5c844c2e75d2f9c3a9d239427fd21", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5b5dae767aa4522a6f35d7d90419fffc94a5c844c2e75d2f9c3a9d239427fd21", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "8e99f44cb0700510913eebb3817325b7e6366553553534edbb8bc0c2c8ed0391", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "70b4a86838d7f140e14ffdf8d1c6100ce66915af6d0e520d5a48f64ef58df5b8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "70b4a86838d7f140e14ffdf8d1c6100ce66915af6d0e520d5a48f64ef58df5b8", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "dcf32d691a222393bea82f5a554e504a5f6ccb0a6d8132a37a4729af8d517077", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "0b66957027b1413d02b3d977f1c57a215e5943eb4154060f2cdadfecb10faf54", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e06c110e31b1df65d47930b41befadf6ce4df79fa1e17ada0467303a91a7dce1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "ec6c3b7c7bb3368195957ef7096c144ef4796662a0ef3f4c44b890264164a586", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f3273ebe2373ef325941eb40c826fac44930fe5a7787eda58ee65035a3d4b559", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "f560b690b8a834729fbedbb18b8ef6462476d2b5a143eb87b7f63c73817d190d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "427e0c3ddc28d17087e22d5e4ee15c86eb8754116a86a12b063bec341f5cdf6c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "a4071163b4299ba3849e222eeadad954fd0a7e8ce1bbde29650cd0213717f109", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "6d278331b57d45a1661bc683c0d3cba0d825601a8aa38edc04ca41821cb6c91e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "d59a675ef90215114c67d2d680206c6800e2dc7a820ff979f2eb714620b3d5d8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "4ec1ada6468717c692a73d7952075c6e06985cd4210017ab823d98358081a84c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "4ec1ada6468717c692a73d7952075c6e06985cd4210017ab823d98358081a84c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "1b9ce6774db4cda22e6aa34a8c9df43a79a1370b49e75c820481b437c2128f52", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "7bd0466b14833d66b70e5427f0b5ea199f769b9000a9deb06ace35f355b18d31", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "d1dc6e4eebbd592399758cdb9c89bf52a41d8aed0979de66b08754d08ca4d419", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "1d6d0fedf7b71220e53c355d07ced45a4184b28007863e13dc12e7d2b1854ddd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "b1035d975b12eb7044a37d592e4d8dc544bac6c41abe2e43a1586875fb6ddd80", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "90adbec33262c231d02fac4203c229fc6fb0a3d71c00226a6747dc64a0f95971", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "9f93d7370234926e533d62e77443a43c7b04347823c18894757995cc8b40fcc7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "9f3fbc037847041593bebab7a7c6e5c9a1568bc5c7e47d6f8c8bb4570fec8a6c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "d49710baa53de5f1b98e5f64ffa1ea2c5fd8dcdeca32c9a5047401ccbad41c5f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a674cdd4898f9d4f7fa626ee9272510d7a52872fa24950d73d4df05d1c8da833", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "1d6d0fedf7b71220e53c355d07ced45a4184b28007863e13dc12e7d2b1854ddd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "1f81cd093cdac79cf195d3c13e75e3cffd7aa413f5b1ee78206eb4f24bc0e96c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "90adbec33262c231d02fac4203c229fc6fb0a3d71c00226a6747dc64a0f95971", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "9f93d7370234926e533d62e77443a43c7b04347823c18894757995cc8b40fcc7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "d4799302d592adb10c802a067d16ba55617b2b6ec88f88b695da9c655e09db36", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "1d6d0fedf7b71220e53c355d07ced45a4184b28007863e13dc12e7d2b1854ddd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "7d1eb0c12f830258c0595538a7e31ad3928306ed5030145d1c28743630d9f011", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "a1bde02a4edd7e5601748f900fc4d7aaa52a90e50c64f0976107157334747bb6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "91e4e10d88bfeef9b9928c40ecc02576fc801b387b0840abe51350fff30672a7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "2286386fab39432aa81401899add8ade9c99dc349b09a4ad694d1ec54db5076a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "27a5b57058d27dd93233eea9183f4e64ac1f0b3788b66adb7b22601575d6118b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "60605a873f902a8e33167c3e47d67063a83b0a592dfd7622c378b094ffe9c35f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "ecdc90eaeb42215cd80152b36b4ac64ba65427799819ad14ef0134e0be050509", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "c8dffcd9fedd929ce251917c833974ac8914039ce46f5a27ab4fa819f5ca32a2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "af735106885fd2a737f1032b5b3bbfa78acfbc3e224bea852c3f9c7e2e057a77", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "6d4577a31302b45ca818733ef242ddcd038f90a427ddf80d2733a6f0da128277", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8cd41e16a38400bb0eabf4829e0d53dcca2da6b4f74adbce4c2fe88018ffeaa1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "35f5d280a15b985c0d5bbf55a6931e82d20af19f9cd7aa6ff20fe32b43a87bf3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "81b2724b0ef954fb6ec884df1416d0a7a0f3fc08b0f300045545292efbfb21fc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "2b520ac180de8ed7bb776310c59c6648706edaad3f3913fcef9686c6fef014d4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "14a1bb689a0fe60fb992d66f585a345d69b747450cbbc12651e789bf8cb50e51", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "1c5c23eed11d0b60394a10fa2a7d8fcf666a26e50c7b6b55c6afcca03d6b785c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "13a91d79645604a010631a3185127d96e1db7e55a2c4c18393b0c20f3a566587", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "094b4db5c137082b59cd2b7de5dfd1d4c3d438fe93caeba7c033fe2ae3bf0d06", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "5aa6e545ab3f6a8d67b5ca2336efd6c39637bd310867a7095c304e2e912f0b19", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "93db819324614a85692ad72adb39fc638316cfdd2a09d82b76a11b0efa091c93", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "e7e8a780ae4ecd813c26cd880b1647fc2b08e6a97f647434bc741154e58d0c4f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "4075fe69ef365849e3bef011d025325be27aadc7dba90c76ca3e9af42fa55630", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "700af4713a1bc069b4f9506f99b8faeeb13032db7cd2d8738b4146e00090f3a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "700af4713a1bc069b4f9506f99b8faeeb13032db7cd2d8738b4146e00090f3a3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "1839f0124cb2917b60c3c7988106f93b47da9f7d6f5833956676b7243767d304", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "d3f0dbcd370440111d1a66364b285f0170948dbe2745174ced6b0d4e3bdfbcd7", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "65b792f806765e9fea445ee82d24951d55cdfa88e1f95951a5b4df46139cf413", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "ed41c683e2a19c0d9cf31f4df5c2837e85a47b6b3890c5040ca926f967c4edc9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "009073a14cc16db613394bea13a6f8fd55267f6e9d76f58f96ad7b536b98912f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "ed89f25d5c1d6a2dc8a7001c3583bbc395f335b07509d77fc40c738c30c381b9", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "96b52ce4ee7c35d4e2a7519f63a8e71a143034784e42f8ea954276f8aec9cc15", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "715d3a6dd80a8c8425d81f2f4c88f10ed6ffddf322aaffd98ab0d9e510225255", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "1d6d0fedf7b71220e53c355d07ced45a4184b28007863e13dc12e7d2b1854ddd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "81d5392b3d898079284ab906d2191445eaa69dd25024ddfafa889ad1ec53eb32", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "86894787f7d8c675803513cecb65231151cb0d02d95fbe68e7fdb3954e6a22f6", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "b1d82984eabc3ddbfe832965ce6801aac456cf9cc1d916d0ad06c250f5417d89", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "4644be9295a9c06edea2fb0e46529a9f391681cc58bcef24bf778d8461dd1a3e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "c52201d65dbe07eaa574f7ae336269126c184fddea719585be0e7c0d712d663e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "efcfbb2809da66a6162ed783758ccf61ffbc4364dea49fea981c1b164a765d8f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "600bca78d5d15da17384217fae3e0620fb1a9f1b51979c9dd6d151ac89c8500a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "37dca8ca5991d24631dc4a39492d09baea18dd80160b454985b7d9ceb262e7a4", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "09f7cbd49cd5cf886a11201f9566072ad2bfd2454c20863683fcd1c4036b6d91", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f99a7c593d074df574784d6263c534ccebbf2831a90b0f53c5669b0f54bae9bd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "c209a2122c18e0aaebd03adb8c89e2304a3949d0c48d1ae8d9f67d9fa67b425f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "1d6d0fedf7b71220e53c355d07ced45a4184b28007863e13dc12e7d2b1854ddd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "2b6ae3064a99cd88b14647b5040a1db9bfd631586654e0a0bb00510962553d85", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "fe5f6af1b0838b8eb6a330330adec6d93d999762e3ca6c19f87e7713a7fa3091", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "4f35d7cc05fe70a6df34c74d691deb4332267b730a77ba518b1450811fe19dbe", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "884fcf076c6a8e8b283a0f80c9b55c681edf8df75e5a2db641b8634b64afe30d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "6c2213441449e3d258bfd8b272535f07798dc15a2f896a9c0342193529671210", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "316ea4cb643312df6e9b42a083145182056d5f5e17c46a7a79f9347435b492a2", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "d3254d5a785626f928fd9077292e443204da350ac2fd7f9d92d51d739163eb34", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "b66bc60a51e592410a124264fafca6b138f0938b788f165e52ca7a7047b8bb5e", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "e7e36921dd2fc491a9f8259a76705126d2b4bffed00c5e33a89dd0cd492b88cc", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "bc1d61413f2ae9c70d534f9138e15d49574e878d31113aab28d8852bfd1e9c3b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "bc1d61413f2ae9c70d534f9138e15d49574e878d31113aab28d8852bfd1e9c3b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "e53be15163ca9a3b1c7d6bf3022cff44d687b73cf467319ec633f2fbe81df846", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "d312b620137a2b70c8b5888b2a1d925d97e09685262f04f8f1efa48cff99d0ed", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "d312b620137a2b70c8b5888b2a1d925d97e09685262f04f8f1efa48cff99d0ed", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "9e7959a336978074aa3faacbf4eda2852a43b001d8fb8c95eadc8a21fc395e7f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "18307b6a3ccb680da707f093d3a18fe21a622d9fd3aebb3cc4a2b3c666db0cdd", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "7046024210affb363ab8f0a5ebba9156856ce3546ac9f2e2dd0f9ca96c6f1e5b", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "7ca900567c8d1df3bc9d7854e1728290d84bfbda8d390d56a5b2da84eba06772", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "550ab4130cda9bf0324bce9df8701479b6f9b1c2abf14de0b7f9bbb2e8a1cd69", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "43a3a5c0ea306c4eb52c493fe12f9e3ed02ee1b4adcfc8c90c7a9fd4571cb203", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "15eeb023a469391aa48f9cab240f64a8d1d1bf492a19080b0305a95cf39787d1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "0535dc8e613ed8235e5d859f38816ce933e80bc975cf5b9a8f5bc3f94ded6cac", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "d49710baa53de5f1b98e5f64ffa1ea2c5fd8dcdeca32c9a5047401ccbad41c5f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "d49710baa53de5f1b98e5f64ffa1ea2c5fd8dcdeca32c9a5047401ccbad41c5f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "acb469c6363acf44bc9448a7181fe80225ca176f811c621ce03df66a3b396dbe", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "c22c00020cd1ee0416d72c385be2eadc32ae8c5685f404522cd9f502610e9d26", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "120a7a1d47fe2ff54a1538a713d17c28e858f795c21c41f8f5284f989d4b540b", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", @@ -19244,19 +19244,19 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "db88d3039cc2aaa4f3d6725557c374f16e1f2d149fa7b954748dba6d471d915a", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "4645af8dad42527a620217c3e63000b6ad148b2891f3dbef9b37c47de07b0cb1", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "eaa43f0f29d7086b14595dd2135eedaffb2c4edfa7cfb379a51d4925a7cc4a4d", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "0b45c8a88219e1a66f262f7600f58c2d929b95d767e80cb8cce83312cfbae19a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "4a6c5377f22c6af6e0f2ee2b09239e335f71596260e946317979fc4a1a6c705f", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "1d6d0fedf7b71220e53c355d07ced45a4184b28007863e13dc12e7d2b1854ddd", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "988d1ff42d9c58a456fa528bf8339a65a3623399c3ec3456331d536652701d96", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "1cd8d00e69598417a9544942fe41092f0abdecc3a66ee377554ee44648b04145", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "d93704be12f54ed67bc9992f022ae6548ab916a6b7eba1e8a2e6aa3a11ee0a94", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b787985bd4600bb464d865866bcdb362258902c40819e41f303b7c7c151fc368", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "97a22626f3ed9f8c146409d59c1191e3ba009a6b9f2245b529a9661b97d2f6b8", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "9bf296d9c6331a1ca1c662025d8a3e7bfa836edb0e6533f55afe07ae6ff36ad6", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "b3703a0e0fb04e0478c4f607fed86bf22af567dd74ce668ee0be4e5b09ba6753", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "b66204bcd1736ab78b098c43df2d1e4bee1285299caedf152134aa955d1663f2", @@ -19270,10 +19270,10 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "b66204bcd1736ab78b098c43df2d1e4bee1285299caedf152134aa955d1663f2", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "b66204bcd1736ab78b098c43df2d1e4bee1285299caedf152134aa955d1663f2", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "b66204bcd1736ab78b098c43df2d1e4bee1285299caedf152134aa955d1663f2", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "1cd8d00e69598417a9544942fe41092f0abdecc3a66ee377554ee44648b04145", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "b9a81b020ac9f82d7c956ffe663541b2f13051486357224bac06ee49e42558e5", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "b83c677cd7714891329f7d17882c5732832a33e6c9eca3776c36912602a6b0cc", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "7d62fad4f51225f5ed007cc1ffba0544a5bd6a9ad49e476918b9a25d4fb977b3", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b787985bd4600bb464d865866bcdb362258902c40819e41f303b7c7c151fc368", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "8d37f34a4222b399e990645da5ac40f7e2a22f7c90f33af5486067d255a4d5b1", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "f27c6632d13363f9d47915ba265e99712cfe267004f73547cb0face665223d66", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "4954044b8c6759da44ac590d00c35c38a8a422b830452701d1ecaefdad9d1b43", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", @@ -19295,14 +19295,14 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "5aafd8a98b8e56b7541f048be660a8f4b463e3f94f42102761c43a5029672e75", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "33f141b0e247d81543289ff28727c5f4888a82f0485335c67577f6a9aeff5b2a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "700af4713a1bc069b4f9506f99b8faeeb13032db7cd2d8738b4146e00090f3a3", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "700af4713a1bc069b4f9506f99b8faeeb13032db7cd2d8738b4146e00090f3a3", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2cb6761edc3cc18bb50cf828ba829c710826844d419d7011b350bc6c70f7238c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "a9591447dd0a02a4a9bcc845ece640ff46f51a8e09f644622b6a7d30e283ae56", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "b66c42b431de628df48ce52b6b3a99804eb3312eed96fdc5b52a663e77eb2d72", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "700af4713a1bc069b4f9506f99b8faeeb13032db7cd2d8738b4146e00090f3a3", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "1e6b8f38623639db26b2b44e82427d27a4992df5563a592857c8684227c37844", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", @@ -19312,14 +19312,14 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "b2c4f1ea8a8eae787cf14e5f7104ffc95961060aa6241736aa8a4d2b68cfa85c", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "34d6aa3d2caa979b7d7eecd30027724c8f964d79d5e6410e27662143e8cf65b8", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "a7e79494fb88ee69be55c1533b2dfa2d40acdebf2f6708a7d16a419261352534", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "eb84a65d2eb3d61f02d8e0bede47fea0a5eea98163ae28abbc3a4fb471694861", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "9bff56dfbc9c772e1a642e78ed27654b28fe81acb0e0bbdd985be14c93630507", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "614e9adb281e53a8aa06bd0f7904802e0c3b909e207d396dfe3a3e228399653a", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e1f8f7b4d9bfe05c72d2c049bb88ea155afd07f3b5cb4be9d2b145147337326f", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "4ad914858c75769baba01699f4f4e0afef9282f56d5c867943ec900be8c9ff40", @@ -19341,13 +19341,13 @@ "T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "3c3c43f30da2c784304ce0fb0cf5bb04e9db57b13e8b6aaf5df283a0f7eb7896", "T3T1_en_ethereum-test_definitions.py::test_external_token": "bde77578d3a09d6b480af2c2f60a062aa215bedbc85c7508188ef4cbac8cced4", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "872e512f159bff20b7fd06fd56ba3843c58836eb90d961f17aaedd24fd06a8b5", +"T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "63ac4972e7937d0ea5ee6a25074d7e013c2fee272436772b015f741afe89b2c6", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "34651e0c0cd0ef2e87c0e34acb578d678943646d78d7013dce8e8744c11efb37", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "f94b9a224c3327a9bfc24185e70cb78ece256acaca954e0e22757c41b8fc1802", +"T3T1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "43ca52585708a47036a9b965eadf8e89984445a867a0c0f9b9c99c57f92610e7", "T3T1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b6216f03db3e312b4567a75931951df04f6836d33512030fc228c335cc993a9c", "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19386,16 +19386,16 @@ "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "9171ee1d7a52c3c35755ddef3d3a14a93663bb2bb86ba1705bb3bfbe99430626", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "b474150626cb3f18e0e303f980dec08387d40b043b83f36abd6da6b44cfeedfa", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c7f58274cb8d99f89f31174faa177c25c09fff2ea7cff39a0067a773f72e417c", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f62f95e56f7164b28db0a621ce28d3fdf82e77d6ec57ec9e7f427740fb5d604f", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "7df3928b4377e32e94d578b849131921645f266bacfc9f93ca126167f2a3271d", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "03002e03820c12ee92613f70a4f89be29aca918a47826cd16ac298175bfcd162", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c7f58274cb8d99f89f31174faa177c25c09fff2ea7cff39a0067a773f72e417c", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c7f58274cb8d99f89f31174faa177c25c09fff2ea7cff39a0067a773f72e417c", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c7f58274cb8d99f89f31174faa177c25c09fff2ea7cff39a0067a773f72e417c", -"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "c6b9d39cb8c1dc077446d3494665a914a264efa58c930ae2716fbed2ca5a19f9", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "568d68f764ac00065f7931e633419cc611eeda23d40be3ffa2fece8c8d62a3bf", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "7a8beb72af90ca2c9b1bff96069633145e0f37c31c5e01a8b24b0b43b38b0b65", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "1a89228f6d5c188224f382e005d04c913737df12ddcc8dfbfeb56e775537e07f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "bb9ae58d3bc1fac0c49af971d4d06ffddbc00751028751361ac5d06775bcb14c", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "20f60034a0642fb5cd63959884d1cbe585d5bedb32f7a3d1a35fabb2e9481a39", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "623b9e6cc6c6618414015078c8ee1e5021641ed6a681d3aae73c2b3023b3e8a0", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "1a89228f6d5c188224f382e005d04c913737df12ddcc8dfbfeb56e775537e07f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "1a89228f6d5c188224f382e005d04c913737df12ddcc8dfbfeb56e775537e07f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "1a89228f6d5c188224f382e005d04c913737df12ddcc8dfbfeb56e775537e07f", +"T3T1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "7a33eaae82b49d9b94dc5b3d18d39fbb0c21deceed30384229ea8503168657a8", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "fb444988d291857c46c48a8c909de05f532894aeea45fbf38fb3f38d1fb24250", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "479064ce512b17bf0a5a9e4057f2894667e0350a5a1953d619a1b66b79d5e702", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "6ee88b2c18497b4c2e25229fdf109cb6b0ecd64582e288f758ef34e9e26915b0", @@ -19414,7 +19414,7 @@ "T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "65427b7647e1655c4dbc7a29f67e33a8f49a6e02f75408ad5b4b1ce3d47d27b7", "T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "47e798a9d824029be9b6fc249ec884751e8782f3192f7b0969c7340b82c2ae1a", "T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "e2ef3f20ca938f6927e578c27a7a5582bafc71fbbbbb0a2663693f2dc2b34d1a", -"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "3a47efd3dd7500b45c22d4939510eed307ee2bb6cdcd8ac00b96ddfc9f4f1cf8", +"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9afdd28b61ba5366056e0af40147beeea3a36d90bffcf00a5f9c6cbed0c1f4fc", "T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", @@ -19428,13 +19428,13 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0c42808945204f4baa128f9783e07b02ceb621bfdd67370c6c447eced647f738", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "50c084ff7259cd3aed52a2f8ea718e600eec3a1cee8d3a1faf693f04cd43a57b", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "37e3daa3d677ed7c19587a387f6df6bc3d74b61486ee590b7f7b91c29197f900", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "b1a1b2c780248ea17574aa0e4e117d9b535235dca6bb684def66edfd3fe02c03", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "d21faaece2aff75ef8f2d2fd510d3409037ff51140d61e98bf258a466dc40df5", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "b26b7dbfb483361a289c750310d4db34a2dfb7fb6b46c544166c1d735a8a9f12", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "45c51c25d3edc4ab1b32d65a44a3915e564e3ade35c93178fd3969c5b4a9aec0", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a3819dc3ca187456e7924ada6ac703ac98ee437b4af13b7f6c5d585e63c6c24e", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "6478b2f7fe2bb5ba5b6877d7f9209b521da3a34d2a46a90071aca1cf73549fc1", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "86f5f744d7aa31484f051d4ea28bcefbccca9900e0a98f4c8bc6ee8a9925aa43", @@ -19449,26 +19449,26 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "954201170bf340c99a3f7e87d113a7d9b107617b0c2b01fb6e66204baec7a374", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "46a5f08789bd56ce77e63cca6c45c78c74dd8b920301364bc95ed5286ed9c7fe", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "47373f2529d90d27a29d2a255941dfe717ca8f346810133627c0675e4e17496f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "1933b03620922ff6fe108349f60abb54d1155afbf4ce41fa9f3737bfb9f4c060", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "7340ab0c232fd712b41be5aef254fe4fc7a1da70fe52c204d6747e1988d37e89", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7af4ae79b354b8fbcbecc8a1e91965e64286c46e27561bd95c1dd0a955db2fff", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "45c51c25d3edc4ab1b32d65a44a3915e564e3ade35c93178fd3969c5b4a9aec0", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a3819dc3ca187456e7924ada6ac703ac98ee437b4af13b7f6c5d585e63c6c24e", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "f35dcc06d20f1eb30acad5893efd6679500749390287e96971378da8cadf5a79", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "5e9a56ed0d435eb71c086d851d2363ab3da1fd6a514a3d24b2dbbf9ac677295c", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b1fe85ae0746d360ab7a3ca15ab43199686d57473aeb57efdfc4f74f8c6eb7c5", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "50c084ff7259cd3aed52a2f8ea718e600eec3a1cee8d3a1faf693f04cd43a57b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "65aaac10e525eb1454f5c0b736aabb8904b17258d084920c71703eb38e57524a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "b1a1b2c780248ea17574aa0e4e117d9b535235dca6bb684def66edfd3fe02c03", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "3a35cfeeaa140c480a1c91f824603be14f6a6744caf27e9569f4d11614991304", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "b26b7dbfb483361a289c750310d4db34a2dfb7fb6b46c544166c1d735a8a9f12", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b610c76a4cbf67112f04a326d7bdaaf2469c6bae0c0ec79c2ea396cc00fe66a2", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4723bf6ce0bf8037da50c5bf2a534c8d7a9992a5081d37eb4ca966a314030b7b", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f35dcc06d20f1eb30acad5893efd6679500749390287e96971378da8cadf5a79", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "46a5f08789bd56ce77e63cca6c45c78c74dd8b920301364bc95ed5286ed9c7fe", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "4eea317c5f25534c7d78a932995737aa908a8f3bedeefd1b28a1df0b7b29fd12", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "1933b03620922ff6fe108349f60abb54d1155afbf4ce41fa9f3737bfb9f4c060", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "cb3f46ea1416b8dc220280ea46043902656daf4f0827a1ddc632699c198234d4", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "7af4ae79b354b8fbcbecc8a1e91965e64286c46e27561bd95c1dd0a955db2fff", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7de181bc17de9f3cb0281d4e0b4a56fefff71f27ea0953c02b755b445857adb0", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "54ace8cfbfa5ec3115a6bb95de505f2a65eb9e08a7c1e8f31521c1891419515e", @@ -19489,11 +19489,11 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", "T3T1_en_misc-test_cosi.py::test_cosi_different_key": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "f418a841ae6c34d8be72ba849fcc414bd0b91381665e7d2cb55f247678e6e77b", +"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "a204cd8e059614961bdf311ac500f5426d5b82b94a63697760f08f7f977e4716", "T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "f418a841ae6c34d8be72ba849fcc414bd0b91381665e7d2cb55f247678e6e77b", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "37b6b104057533cd83028d96bed69973aebde4352e4f1237c1b6f4ada8272167", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "3bff8a7cd38dc143aa62f31fc3c06b15ba195861e94bdbaac22b4d447cdb4dbf", +"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "a204cd8e059614961bdf311ac500f5426d5b82b94a63697760f08f7f977e4716", +"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "0d53097f581ba4f39eaf5cf1072b28e1c62a3da104bbe60a010a8d5cbfd6d10d", +"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "f8d8b198efa4e4e577875bca8bef14528aa171659c7503a544cb4f638bacb20b", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19501,20 +19501,20 @@ "T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "0d6ed4635e3659f7137f1fb56363ab17208d6854fa4fb8342345a395ab08aec1", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "1bad9df0942bfe967808bbb8752aa331a74c625ae085e255a8827220f9be5147", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "4bc2d142ab6e0fd5c50cf71dbfd5531f8f9c293dcb92ece2487c56057a6375ec", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "0d2f9b24a077a5511bf1fc946eb46c65f89c2cd5017a386ac5ea0796e873f3e9", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "2858eb79ffa8cd64b993088a6782ee4e8b1ef5c18776797346bd9c020552a27b", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "306d64b4e3e158edc05edd21df8ffa2ade1365e0fb5311dd46542348badff676", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "7defbe8b6ff9f9a9c5b1c76026611946bacdc65998bae62c1a66a593d2c80928", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b6d68999a9415e3b18415cd9793b4792515bb09bc72369876869ff789b38f975", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "6a9a9671311c954907cd6d41ed17e79f187fbd8a7bbb67202ba48057ea214a20", "T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "feb4a2c1fb47cd448cb6fa75b563ca8c12ab8979b5e5396c89a066de439d62db", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "b77c01d2741f2b38876eb940275e66faaea5d0ba48da247951325a50b0269a90", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a5c22b9f1b4c27cd2a2d3babaf5c8fdeb9eee6a28de2d7b46a33edb6e3c76d6a", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "32cbac0323a81c3eecb0e3058553175b41e719671aa35fece3710c600674af4c", +"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "1c52c3bb27453f1df1ff1e40ca9db824832fd9528a09a25390f80c0e66ff433c", "T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0b8f3e50d15c522f4aec00b831610faf000c9c450e38c52659ab8d112c5809e6", "T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3a12fe5138327dbc6ccdbefbc0062023a085fd6e0d7092b3265cdf7c201bd72d", "T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "32f50cdf7202aaa7dcac0c4e40fb87cc2c751f7d8d10f94df44492b683c455a1", "T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "2c6edb94d37fc478a831f3843b5bdc10e50100112eca73c8781435f393ab4a57", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "3ed262313e769a636f8a07cdb2a2e3e41352fd99be2411de91558befb8fa4a69", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "3f6963d82a094c2efea50fe683868b47bd9e165ff15dc520d80245ed48768874", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "cbb66e2253138416aa5ac72569ade8355795607874d7c21ca93950d315f86fd3", +"T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2e7bea46e6a2126dd9b0d3a7e0584dd3e089683fcb6987007d1642407fd841dd", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "ae126da6438993ce47b8bb9bd4a5488051ad15e65f7fb6a67933b85a559656a4", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[128]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", @@ -19537,7 +19537,7 @@ "T3T1_en_misc-test_msg_getentropy.py::test_entropy[65]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[8]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[9]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", -"T3T1_en_misc-test_msg_signidentity.py::test_sign": "e40de875b137de0ed683a0da21ae730ede1ebc5ef9bafc1414bac0df84f1dd93", +"T3T1_en_misc-test_msg_signidentity.py::test_sign": "5c28dba563f5810c01cedcfa3e570ba7b925dcdabb46102ce41cb69ab06fa311", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "515d1e0be26d82162ee645c3a0b2d4036bb4c00b2ad0b053fd21709c10c85aa3", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "439a5febe57591d1660f61a18a36fed8f62d8ed6fb4bc4b5971fef9c9e3c9cbe", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "1cb6b195913712ceefcf487c9ee80fbc869633fd25bc5056dd28bf4981b6d9ad", @@ -19549,55 +19549,55 @@ "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "dba5f802c5e35ed8878910f50478ccf2164f57f31f0ac4fc93ac487063be6a63", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c5e4eee4aac52203d51007144ab23ec056317cef9605bc3adf878e7196b42a80", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "14b061109b0bd4ee4684f05b9c5b230d5d2e57c016aec3ea8b2eb199a02b8fde", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0b08af41c2f9ed112417fda409b22b1680bbf02fb6d536900a43d09d141db702", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "a6994c67adffb1d1f6256c3dd05d8b224ed69e3e58aa1426c9ed887a3db1ac94", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "822ec2a184c3d949db16ebc2033293c939fbda24f034823339a8422526dd9e2c", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "4a8b363e98dfb752cbc17287fa161578171884bc51dfcf9f24ebd4f9bd7c2d99", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "53ff8efe3154fd00af76d9ebb4ff8bfd57ad8799c9b7357b6514b3e2cb1b4578", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "69069a5423c27d07ee2d41a4a825a92052c66d1d25e1e5ad75d3dcbc9837f216", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "9a4dcab8a5d3ae632bbe68f7d85cf4cda1a75bd8bd60688a6cfbcff487ff951a", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "bfb50ae6daa64bbb2721dade1d8151262effbdd253744182b2cd732ee520dbca", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "85fe921aad178f97ddfc4855498195d1e4be30dd375c31935ed2573517c5f679", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "83d163df8994a054160c7d634dcbf4e8be5eee5910d7fe8b28c2a637f9dcbe5f", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "226a1d1fd57fe2cb9c3019617c570ebede886e450538fbec50c518dda6afed0c", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b6cc86887047c5c4615b2fa86f6d707889a7725a29e51c32a06f9aba2b75ae64", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7bd33ae6b662945ab2100c4c8f7df7e757fcc49e6867bc5291afc22ea554af00", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "202c0788f9a543bb51a21dcaa254e6fba8f8b47ce89ece42b7eaebb18c355147", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "45f04c1dab3aea28ccee3d4840a211d7047f2ced5c7b83392d4a639ca2b511b0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "69069a5423c27d07ee2d41a4a825a92052c66d1d25e1e5ad75d3dcbc9837f216", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2b04256d3dcd98e2356ae5014700de35ad0913bed2a71033b983db0b668e0c91", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fce1e56c44870daf7b9da0b84d585d232dcf957d8e98f2980849bbf9f5e6f520", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0bcdef88fed87db88456140f109bc81198cdc405a1bd353fc4dd4082f5e3876e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "24798150cfbe528d7e51a314c6a3ed215376d588982b958c9b2117e1896ee8b0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9b2b0cf81d774d98f8a92249d3f9bbe62af2e33167772d60555e0df662f1addd", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "5e4d6e03a7a1936189a2721cecd0332670dc0ae9881b9a0f069fb280ef695e80", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fb6f3762015ebd53698731c8641f0198d8997121008d30b3b3665e7d6c788989", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "0b83e659fb51d321cdecee5922a31b81fc56e1108a45ff2eea27a9b0453b704a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "658b29419b4b192d8e4f7c3df3c56dde7537776652bde56a1646f50ddebe3996", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bd195aa9f53a3347c29f1a583d28d94ec30737b34b31d3fa0b8bc53d37c5214b", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "7c0d0072b5c7db6e5490f8e8cac40b46db80576d2df7364bbc0e26f48c08c8bc", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c1b4ff5d28d8ea3de03a41820645ed08f8144bc0995c63313a4e04c137244705", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "9ec6d8d72ff186a2cac90856e1c14c54c796725dcaa9fe8629cd4b8818b10d38", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "70b3a5233a55be43a496a6bfa012d558d48f45ab80bc03e9aa53058736635759", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b721efb4995dfe1a2db39197c57e4065a1c3f89565c999022363aa4482ba551d", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6919cc4acd2df7fea16b39164d1efe8fe7c4ac702e7b1bf4f023fb22349e1cae", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "db3f8f34ef7f195c6e15eb5b196cf8a3da4317e3a71d3063dc65ee8d23e38a59", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a2e930fc3d2601024715dab9bff89088d236fa47c87715297f3c3d2c0d0102b7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2dc3ad342ed5b3676f9c4b9b0b35a1a753a35c15425999cd2fb9ea5eb0b1cf2f", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "73fd66dc0b3d8da938675c96ab7c23195da214a933e0b60932fbcfed0e162496", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fca7b55e395ba0979d7de0137b75f4c4c524c235e1af931a3516b1be455afbc2", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b9d848edb181a06790819e6dc198a30a35f2f4282282fa61be0cc4587e8b461d", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "246b62471cf32837861c9e0667602a8a3cd855dd299d5ff3752a9975bd5b521e", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "96680265de6740a45495216d3a94bfc6aad626ed6bcf3689fba6e3fc71b45487", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f243b32b310b2d782a4684dd5499f2c7dded2d19ca375c59dc85e1ef3bf07ebd", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5570d2bf466f5b3f8c54ae44aa7b3aa97f4f60d9b92395a392c29c471d396996", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a990f4abd2c0d2297ec67caf78dbf8a3a31b63db0eaf173b1d220757b8976c2b", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "ff381a06858aed5ea70ea978b1994803cadffa9f9694180a1f8d726740e80578", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "aac5c05fb815864d310aa190ffff03090ab10168c1d4120841e7b0f320772739", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "915bb3168e90f73f332f7696c2c9286788311f33f4257b25f1e21051d055ce8e", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "34b0a18805c07d3733d2d8dbdb9250e29bbce8102aa81ce84a15e8d5ff2a157d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b9d848edb181a06790819e6dc198a30a35f2f4282282fa61be0cc4587e8b461d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f1e1d3da6ccb3cac8af982a4f9f14dcf1f09f91a5bb37f7f3b8ec1e20c98adba", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "ff6c221c80a977ca2c55996b3552af478d8e4f9b8e112cd8403d11ff721186fd", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "49a50729c03664e6afd8195b4423ae71bc23994698dd245050d868af49b7bf1d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "75736a57f1cc11907bdc76bf72b9e1f72259deeb58e74c3a1272a0adda3e27bd", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "99946fd2406bbacce8062a990e92f7158d6f039dfba1cd0ceb9fc8f86d353de1", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "37ac4e044584fadf765065903a698bd96c7e2918fd0d28828071b29cef8c1c3f", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7f56e07374d6766c820119da253277606e70a0686fd6b0f5ceb376a1145467dc", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "2518870b117912289ac9c78e857de1d7f55d4f6844fece49257753891bcd7486", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "393b28ed63f5ae53ddc5daa1c6e861d770081b2fe129f4fa59be6bf0cb9903f5", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bfcd02b209d6cf5b735c71f6f68c0ef7481c84f649c3aa60ee8a914e58bf34ad", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0c5bfcadcc915993a312129995c6b41e35f939593658d4fca1e12dbb638ed1db", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "654fd0391079baee3ffd13a35d2d978d3f9e07f56f7dd72070da09ccfb4a441b", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "4742b8fba2eaa3e749d8937e3e5823b9ce2c17c725cbff895c8ad89e1a0bfbc5", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "ca329443c077a466d44964acfa8adbbec8d9748d9e19f63df84d7ee503fc061d", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c6384790d9dfec69f075a15d74878e4c1ffe7ae2d26e4d6206a6f379ef8b1eb3", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1818b2155c119c4e016719492f6c838e33205d91f8cee454193788cc8cbfb12b", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6e71394973cbb4386ad3329a49a1ce910afc5a6ded34eb7cd90c00100579cdaa", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "1394fddd24a54b8b40a9d8350893de6a71ab5567dcc09f65213dc98777876662", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "daff688f49aa8787b536a60de1ed095001c3852cbb596c593a215781b7054e6f", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "46dac4a701c0fa42500044779596c712966c02a70d96ea1d7754d92cc3ad677b", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cf502e5efb80f2dd4060241997eb0f8aeacee19c31c33c27ed77eee78d1de6c0", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "40a4399bd6d5f4d15f82bc96c5838c66c4d63acae5638da0b548c953d9f3d094", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "dea6234d1f022742ee27ba9c2802fcd22f93743eb453417df771b5cbea06c984", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1137d10d30af2f33721fad3f658e2c18bf80f8511266f955ff5117493f96c326", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2cee43e76c136237e39f57e2a33cd4cddcbe1d7cb7fc89a102ece3c77173a0c8", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "e64ac03aeaf6ed50c427eaed31cba58d025064fc431cdb6fa6740084c40f1580", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "e94bd526172c623541049dc7fd1f1928eb0e4605a22bdea3284be26346ce1ace", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "39357858f453bb2523f090b34f5649554c42ce9ed735adc4380296d8e5444a01", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a529a3c5bf0c13463dd08bd9d472327998ad09a5d55797461b09ff4821e88c52", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "7e99254d7e67c6910159d36312c4b857764e5f97eb607ced66ba08c6ed1dc340", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a6842acdceae3ecc05e6244eec6d9826197fe7e8b034bfb2e7b7e265961ddb86", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "11236c278fb1cb6d51009ff392816884a80556e56733bfa31e2b9d8250801828", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "5cca4a187fa8183109041610828642a2a236771a34e6aa9007c4045086a11a90", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "3fc7c0b929e92279e01f94a40d8000dec844f080c84d6250ac3ec178056fc0da", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "41959f978901f170d3dfde480aaeb30b89fe095463b5860e3daa4dc797058107", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8fa09609105ca6dbc1aade3135343aebaeaae336bb4b3f5ad4a2b354f1eda3fb", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "582077f299e3baa6cda7adc2e6006d9c8919d12a5e39c3da21512c8b216c98b3", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7cc312704db286c8adf3e5a058c65835818bd811f346c1c1c7d54880b2e7db71", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ccb2d44d2bb4f799715dbad12828a1cdb34dcc226649030550ab48e8989dadc6", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "55522745e2cfd23a22cfb4c64f5064af955bd78a02c15731200231e872f910f0", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "dd422c3809984939b264e1d8f85339684843bb870d85c83d51a865763a9e1e79", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "009f4d31a4c23cd611b3aa1b3577e6758a5ab67bf507af2ecffa0526191e177f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "81b9ef3c491de698533eca5e26e417942d03971c547cd9facae540dfad8a8c4f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "1cf51af6c1d26e9acdd8b3412bfec28f632d5a2f24783050b643a6828e9ca74c", @@ -19606,83 +19606,83 @@ "T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ec3a78a4f85e1f13fc8a9eef8dcfc4013e90797482b35a00ea85184f85dc7c3b", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "bb0671d6c01be50d22ab926c132595047360a93aac20c601a430f7c5fa3d614b", -"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b081feb4f788f4dcf16d31f9bb0cbfec11dc8d2dd7e99a4bc9abd0bd3dee6650", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "f38b39193d952de59ac6bdde11df58882f85d04ff8c46d79ff775cf8f0de9877", +"T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "c59ba99a3ce6d73da104aa671032ca41631e5b829657912f03d5d83114cd6d3e", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a0e7513eacb980a8c3cabe8cfba6ffe8934c4dd9f8160c56fc43c42b2a411d60", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "edb140a1b9ac8cec3a4e52e30131e1f95b08c07f60a317a63864294a0d73ab1b", "T3T1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "98028c3fc2c30788c69d179ceea0f26782bd5b933ceac1eec8e10145ec8f9ebd", "T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "94d89a7a13beb45914785745de64c5d16d236d131c9ed5c90dc325ff109d99b2", "T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d2c3f861604672aca5fdeedca3043f39041baa9e48327eac9fbf42d18dbb3f84", "T3T1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "7346a3f0afe16b2a4e72b8555965909cc8960cce2ac923e2039a88f6cdac3478", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "81223315376f8cd6b8c807bb36ba9405dcbc475d500be2c7b98ef6a6e72cc4dd", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "c9d41b297dfdb615b9bfea9d3796ce82a38740e9dd6c5de5fe78b3dae751ecd5", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "06cc1aa61f750316e3f4c3353f96d7920cc080d76f1952f6184c266b72212027", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "dee85ffc0d33b0d2e4eb612d8fe6dd67493ed305a848e1774eb5181196536b3b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0794191dc142abb3e21c20cc8336176259b08d050637d8cc2cca53a21ee7b455", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "1319a67ed921d713c3b35bbab8492e052c8f4a274a98e9be6a20ce9e3f8ab840", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "71e2d988eadd8bd1c69eab5db73367ece9037cfae523cd4eba6a55e9987ccb7c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "c479c64029a62b902b610f063a88189db6b1080273bb2c8f9631709a399ef0c2", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "02856742caffae168d256cad2864c7e78771ea128b8de3430a2941f737e11ac1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "f2cca6da96bf20ebd3c0eec5773a5f033f230defe9256d6407110cc6fe747b07", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "cf4bbfd21006a3a60ec5b318472be782bf295d43f36538459abfe5a9cd18e975", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "3a1e2f9afe2a2e7a9648e9dcb43f0e238f2e3de9bf1493ddbfd44bb8326f805e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "1bd0c1615b1e4e58e0b29574372bc28a2c894052dea837cd0845abd368f11724", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b93270de2507f0b1c4cb2f4dfc58d58196ce4fb3f1bef6e808a37f951255019b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "25a1796330f4937d6689c57654b4013bc3a3e38675961529fbd33c5f117f3d1c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "e4202b68dd3de1387a570343d91792e1d75f8a299bf4f8e035cb55c65754450e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5d3136c182432fb13e73b28df556e2f055436b63ea070e39216edc5fc1c60211", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "6ba35feb24d3ade10ebcfafe162c35c443fd407b2bf8eadc93fea8fa32d6e253", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "745d1234db097d4142ffc588b6a2cd4dcb45f290ce1b22a5887429688e5de412", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "d43a692eec8d9d113bafa337d4d39887d53edf749fd878a5192d8d7b045fe4b9", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "85c4f55c45f24649249bf88751c43785dffcc9968db8b71704eb9244970c4331", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "85c4f55c45f24649249bf88751c43785dffcc9968db8b71704eb9244970c4331", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "792a89ed1b63966c41cc578bd0e9d07cbc64cbc6502dc9c764d2ee256badc104", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8b1b166bc09357c20741c8907d742bcf49cccca29ab454a0d84771a860ef85b2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "664526e2d2c1bbe0df1bb84ca4c1deb1adcbc3f4c9851b73111c8143e9ce34e3", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "97ab2d9b12f6119b43decaff5cd5584c29c18820c0e42b60a12e2d80744989d0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "534f6361813fd6eb14b02370586424734eab3ac3b04391f570224db5ebc67fb0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "36bb9a5d5168b286d4f4e7966da175e2f81bc61074bdc61c940d169f8f55fe50", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8ceefa7624ab34ff1fab89df7bc7b05dfcbc340dc5ac95853b0dc58fa0607127", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "776b09fd15652b0efd6cd992a1299adcaf9281331ee42a03fe3e6ad09cd7bf00", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "9a3e3c118c16737927edd9a7b0c13ab68054d894f8deb420b6a9c4b39461d360", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0e8df8554be0056bc58aa1a1615501254a271e93552985197d79faf05590f179", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "0d8faa2bc11608de9082ef590bb4aab9be07332b4a6c089a9e7201e6f20cc4ff", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "610304444f58baf3f5ca12074bc81956f5a8844aa47040badf00c3749afcd026", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "f82ad943d816c23f4d661dec4d0b17bc9f1f52156dafc73560fcdb718aa0f009", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "d776e3175e87c21910b7f3b1dfe7830f26a42d0a702e7674eb19618bb7271d83", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "a2bde40e006f4fd4fa2b075ab0c470d952f160a9794992efda1ad89265d42b32", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "538f05c934e247912b6586c6220874406811ae507fb1f217899fe20ccbb08e5f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "d0d1a5c1e49e1e00c8b5067d596522c08acb337f6c2cce6b421507f26fef7842", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "f3ddd7bbe6bbc6b6ad7842922fc17d20456976c987b306d0d33a29e7de840b2d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "f5a8b0c6e5be2a03400f191b69bf612a44ea4b0b396718729a4eac5f9b04e843", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "1d44e452870984cc23bb7402717db6f1ca8e340aeb60bf7d5969ec475456deae", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "93756fc5869d39ce04950997b9c646e40b78f5fff0a6030ca53a8498620fbbcf", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "14d40695037fc7a9e7354f7e1f231cdfd82a67334ea1b0e72353151aded500c4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "24f67e2b77ccdce6caeda1d7f0341d864936cd995f6bd3f91403a3d7a762d4f4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "24f67e2b77ccdce6caeda1d7f0341d864936cd995f6bd3f91403a3d7a762d4f4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "cf7b3a6e4eba1032181db95592679c4121616c32177f289ae71c2e686ca6178d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "a6a0820fdb3237361aa6169cfec3f172502d20a21e557d6a95ceefb75d262216", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "cb19a65d3e1d6c0bee291c263a1be274b891fceec7185d464bf8d8335b5750a0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8279e14988740c2b963f100b93a0391dacb5b2488f90cdebc29b77dd7da3a3ba", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "5aa1ead2481dd21ce724d8c0bdba3b55ea59c530d30dbd73b46efee4046681a8", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "77cb7deb89fe9506dc3ddcd6c9acd3342397f39a8adcc1fcfcc4f45e298bfdfa", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "8cc01763806bdcdfd751ad960e894b8e8ca243dba51306f7ae15469b11339794", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "374b4c0cca0ead71c5cf93cb4f8f7b550c4e915ee5a721983f8c04e0441472bb", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "920c4dbca77cd939458b3d820101d6e7a991742e457263fb8c3121ae7aff8d49", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "1a5b3e741506a920cd7c212840c8bfafb686c3e27f147fca75e5710422c20365", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "351fde7d42969230c67e3b974c15187f590b35a82b2b05c7690e215a5c67b584", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "16d155f43dfd1f6c62c0b609207e145eae981c10aaa7e1f65812deb5bea40906", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "8b25f8ddb9878f7fe88dc413c7178d79371393a24f24346deb437529e3602256", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "63d47953359c5e69275c426d2e666e2f429b9c65a7f81163f08ab152682ec6ed", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "458df775020a74509bc8d4b4ba2569e040b1e66e788cf1cf2bc22a8dce5b2778", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "216c171ec1e345909ee2451a6c69162fe1318fae3a01ff964c342c8c25948d10", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "03a17c982396f9093a1b2a05c9d84ffe8aa7f12c0242f1839a99cb6a6f19eeeb", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4e837996749b39f9a5760d28bb6211884b955dde293738360cbd3435ee1b8e1a", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "7dad5428e74295ffec5b8e988b5716aa2f2d3d2007926e14fffd77df66343d7e", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "d16ba5d7c6c3a0ca6ee26a16ec9e4eefb961dc77934568059839b794b178de83", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "e0d5157c3b4f1549c50d440b4bacfe11f4e50fd42831f8ac75885d2f20a104dc", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d7ec74325548e19d10cd9cb32389fd653bd4250a1c7542b3f87dc1cacf897a78", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "659abb0811a63067738f9303ed0e148b2927917ecb4352cc159a0ebf002a8316", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ad622a9cb789fa181fa314ed7a068fd7fa27d42da84eeccb797847595220f9ba", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "81b74fda69f8d7bbc64f27243930bde45a8e5d1d87ab3c513f80c26381e099b7", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "6ab15ae8cd6da6de5b7706fa77a0d72b9eb5c84ccb9468aef47bcd66da5c2be3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "bcef62fb53b1df7b87c4d4eaa4c6795efd27afa1f16f5d385ef4a46e5fda899f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "04f41ddca295b56d90b8b3e3d5d2e0830c72eb24aeaf78e525d7ce0c74b32e37", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a9a7da8d053dd73734c09f222af02c300d1ae45c2fcbf55a0b9073e25bc2dcaf", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "fbeb3a087e1d619dbff6394bef4273c985e747ba66228f9f8793aba1cfed03da", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "527f6398b8c9ba0538c98c25d68b805bf844a8948e3cc528fb36b7b8145d3233", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "051718882e3319cfd8887a7bd7e39fc9be435b0cec2748d3b13fde72b3239d3c", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "57b5a0198064a51d120fc5129377e15d9feb82f4158d09cb1df8e9970982258a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "eed9994e5a7f060e96f05b7c8c4e60e69cad88341332d89c787b2cb6fe7b2936", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7b3d422c9ea65aa0ae2dac6773fdf9c59356ffd76eaab421a5c3ad0079dc8782", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "28045226105d88eb26e79faf3ba317d3fdd9134f6917d0e51aad4507e567b918", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "31ddac4ed0ad8f8a2a36454df86e8bce3e5e5d1c21e37733f0feb52492ba9c31", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "8883c8d5c65896b4a244be2cdfeb5415d830c37988c57fab789edcf7daa5f41a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "9ce954915f6973338ced84a81f0df2899d3dfdebcd6f2da2be3694bf11fa5d91", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "c6e19f2c548eb2c6a8d8a4e296898ad01c955497a40b5f7907c6f01637620838", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "4c57566bdf4f700edb2853b611a8ddec042525f0db5b1e9330371cc35055a382", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "5f6da04a3f396fb9e840358c2ba2b1b00238445b9d675e1e171278b41fc2e8f1", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "2dae2087356f18036314e83a6e8efe9454242ace373fab88874f251af58a5ae5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "1780556adc9bbc6d6959d3f3f91f668c23b1e6bf7174e153b453a486c6a8f6e7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "1780556adc9bbc6d6959d3f3f91f668c23b1e6bf7174e153b453a486c6a8f6e7", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "cc5f68cfade0a65c12d4492f02687033762d863452b12f745019746f8a49162d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "77924189f3e8a227ff9eb123e0bd9db6d7d0afaf2ab3c052d09f9fd0f43fd40b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3a20d9446d8eaf84cadaea2880b9ee104a5b9bed03dd28bd387401cd96f726a0", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "27022374c84c05c17db2fadd1fa1a335eaa7d1c070e40311bed0fe802c51492e", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "2f62e40062c663b6f0fd8cbf19011c3fbffb5b51d5166aa2024e8aa1a2cc65b9", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "44a6756047487fdeda1c488cb4f73f4c0cca4eb344f51a1d0261c4a05abe03f4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "446f59835b4f4c16bdf8fcd44ee23019d9932eba99eb25ee96d8fc8bad2ab618", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "dd76dcc8c66baa95e863b43cd1a328dc1625e2363c207aff2d9af178fbe2073d", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "3e5109998e5eb305f9cc3a99a371351a0f8f7a588fd01e6af69f457e02f60f19", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "090811a202fdc60eaee96265afed0c6652dce764c375517167d8f903c3ae23e2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "74be3549ffa86969e508d7a86b7f9fec4ba482cd83411d57da29425417377ce5", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0ea5b98b5db6792c913700d881bac40a06508a81e751dec2b35b7d4c818cfd42", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "4e5e8118735f019e5eafaaeca0e780b93754393f08712493a95202c961cae766", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "0d46e13a4f844a8b88dd83e92e7869f44596ba8301bfeba625d3b24ff1241fb8", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "4849bd498308dfc0023ba54747a05196697f739aa71611d29ad0f64c85e8e982", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "69bc0c5de34447630bf2127933c096529f5411e228ff746b1f6f1a9d8c66654f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "531c28a2984afb4dc92e53ad28cfeeb3661fbbc092370181a4c94748adeac66c", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7ba6de3ae028ff0804e72649c9786579761eebe7d1c9fd960cd375b9c2eea692", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "43ae476534c75cad190c8cf19c22b9a4082db9388719351194e7313f72963f95", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "dd3509020f03a842c7d136b8d429a5ab71314f88fe5ed5e7dfbd9330d3ca033f", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "32931f9b6ba7cc1dc2c464334d470384f6ec9ffcd8eff07ff002a1e0167b1739", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "0b6fbc3223afb2d6634d91f53ebeb302f9eadce8b7c97bdb1cca8cf951dedae3", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0c73f3e529ac6477c41414acf70b3128811ba53eaff73b99b1db98036447b189", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "df38d7839ad56959aca0555b39ddf791ab1c1273d9208252f5ba16bf971c59e5", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "cb19a65d3e1d6c0bee291c263a1be274b891fceec7185d464bf8d8335b5750a0", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "f17a0b8587c76a1ce5dddc6e59f51461c85125512b87fe6cf90b75434e1e6e82", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "f2057337ecef4c3aa7d0e974177e0e067c17174e7531d1a6557f2bc6f5fecbc2", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a2b1315545a09a30e4d73b5a7e259698332f89de9f0a727f9f49785c5b3fb08f", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "46ce72025db10bb861b7c6e9ea1ed364db5cc5038f9bd7f89bbc515603851815", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "e880517e75e7bd375ea0db3b285cf56ffdf8c025e7efbd46088d33881dfa82f1", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "b487efba7f880c1a625327302e2a2a1cb3af560d6c43affb83b9ee44a4f2fb71", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "8d8182f2fb4828910043c87e7b9ea989b881fec19148ec49025dc862fbd9cdee", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "eb49079221756b71d4bdcf261b2aa61f269191fe50ae1df9620ecef37deadc6b", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "f5756016eeff05ee001993169601242c88b4c565e14f6da8397f37c0690284c1", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "31e72f84ad2135314b5b4b4ab1627c2bf6a8965f8182f81acec286646ed8a989", -"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "a21a9e5697ccb52eb542e851da8b522d996a5b1efdb5321efc092da1cb25181b", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "cbe0c705139b35d5c77d71e1523dd8a5769c005ca39c14c7b379ee106db51e1a", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "14f04e783489d2eba6c1321dcbee91232400cec6fdfb58192983f4be6442a057", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "2e5c6250b775f5d06bab966956ffdc24efe8316ca02ec604525fe37907031c19", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "68a904782c46205a2608b6cfebc53c2d7f7a7370658c43d81b0f31f4f38794d2", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "57bd7068b6b1a8fe5ac5d3e8e0739f45f2d915f3bc67547b817b9d7ab036e51f", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "e3b7172eb3040043d6dbad156745717843645414351194210fceda6051146d5c", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b3c621420278c692e71773e4096bd2273a521b233cc9bcc25d605a9030a58a33", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "ef631ead26ae88d04cb9f50a04f878e4d0c7fa13ccf9a5d96b46a6ad922b4076", @@ -19703,70 +19703,70 @@ "T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4dfe666d732d3ba8f2d0ff543e5211e4f8803c710e42f8bc478e6e556502ce50", "T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "1b5809fde034a42d41be4685a8ff5b6ee93d35e68c247694c0f2b1f25fa47b07", "T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "87f4c98f9a91a0b9b695c035ea08f59a63cbcf96255490222334240f3b673f94", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "ccd8e4aaf78b90d3f19627dc634d66bdc18841ce28885cc2077cef1276ba30a5", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "405d028aad8ba2409e5a1c0b0c6fcd93f1b4fda709a777beee6cb739f196bcea", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "9e2de5fa9ff37b99a9ae6e7a043b93fe54c61ed8c550705777744c8492770f84", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "d296028c5206815b64791f5d50df66a3feee75234b8f5b4ff4c9ae3e7a129dbf", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "b07ddc8a8204f72c5e05c69f315e3a10b9416ea49af9b02697672f8ae328d712", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "6103a012acb290a6e5367034a5733de44d72227deb13d9d998facd81fa3da63f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b8fdfa88ab15324b0d0588bc4c3d4381b2404bb47d98d949ca6e14c2673d0f98", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "8054c726084e5f347c87ad128ae3309822895d8aaf0138387e7e475fb0c0398a", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "dde52248d16edb65211d6134b628ff0ead4a4a84854c11407ef61294cb0bad36", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2a598dc53a1dd4b19f9068c50bf9543689e0a21f0a7ae07405df91475343b9f9", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "416cfd9c79c86fbeddd33ffdf204ef9b51093bfef292f7288b5132c6087b7390", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "0bc0cacbc7bd9da53d0cc3516e8cca3da58d9dae1833a151c6dfe6e3260abf4f", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "01803a3b24b61f92d827af3ac7c3dd201ddef6fb5000c9ede662db2d06e4b009", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "61c7fd75e73fd19c1e9620a22cba5b05989d7c8dd7b50ef5341511ee93923764", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "438068c2992fd7dc28619aac4d8522d1df3cc163454e79dce7bee860628ec35c", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "08efc0953c8b61044eaa7d2867a2b0702faa2f6213213838b3ac0658882a0e07", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "dff608ce1e062b82c7acea1f69b17cf5d658a0c890c496bff83ecbeac9ab9493", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "e69211e178348cce8b6cc61897797514f8c396ad996a71ea672f4b72a070bc0b", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d0b1a4a9190059d6553345af33002943d89a9c6664b9e49239cf23340c717033", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "480af3c9f4c5449f480cab9a382c6ff4dd36958ae24d40bb871516295a5f7e44", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "3b7d0015a893d7775520bf19931324efe2e6a535de0fcdb40e395a89da6682bb", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "f1e35c6c73ddda69e1c21143ebee9fe07e0adc22fb1bd99ba3cc5e5b6a984eb8", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "c163d6f0b60aaf6424bdbe93c600329bc0f49cad54872108ea718aef779b5723", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "d4ddc45a58f6ebba65abc63e5a5fd0499bca3b39c1546680977222a16e8e59c3", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "fec3ee755de7c97facce7466b289538b80a21188e87e21b25dabad126968d918", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f92faa366815cc9c6a7e1f37d0ae111dc43c8b7fd42e64648fdbc1ae993593f8", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "de79654f74d63428e6ee0da558e82348a582776823d2d091e6abd8ba44dc3691", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "7c12de006526f2284e14fce8381491471feec7ff1e736dfa0e9e898f886d3f9d", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "d5e2ff9126931e6be96ca37160cf2c49315598181b586e52645b919a874d2303", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "dff608ce1e062b82c7acea1f69b17cf5d658a0c890c496bff83ecbeac9ab9493", -"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "d5102f43eca35b66ed3dbd99c6d6dd8bb7a63d01ba85ca9cf3f5843143c99d35", -"T3T1_en_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "1a60f93e249861e97de0d5bbac6b3d0712bdfed93be0265172dd0f75b1268681", -"T3T1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "1a60f93e249861e97de0d5bbac6b3d0712bdfed93be0265172dd0f75b1268681", -"T3T1_en_test_authenticate_device.py::test_authenticate_device[]": "1a60f93e249861e97de0d5bbac6b3d0712bdfed93be0265172dd0f75b1268681", -"T3T1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "1a60f93e249861e97de0d5bbac6b3d0712bdfed93be0265172dd0f75b1268681", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "13e2eb2a974686f59cf552ec3cac9e889772b05f772b80dc1eadf3e815305da2", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "463f72f2b66b34167a6f7c928257837d6ed481dbb1a864e78347ec03c6c545df", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "3e00865695d9a56e0fc5208cc48ab6132db9651bf3390de65d6a3dff81afb0fe", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "22341ac084f718a0c36db762e8acb774904b38ffa74ce093388a60295ae4b071", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "b5ed6fdd2d648346ccccdc1ac56623fe935bb20322e5494bff07b16a8bfd90f1", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a228d589e97873debfeda17b5b7235371dddd8dcf9d0e991085d4e05160c19e2", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a7afb5cd1dc0a889555b44ceb0f2d91962ca3a06d76808e629f89d46be75aa8d", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "cd2e45d01fea0f2177dab0b58a946c1a487908d53f2b732d2a44c7b4127462c0", -"T3T1_en_test_autolock.py::test_autolock_default_value": "2cb4682bf95d564068d07fb2996ed1c4a8eaef3ba4964235d652e739f31b8797", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "19ffd626f6828cf2975bce927010e710ce0760f280e16f613dacc8e185e52fdc", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "19ffd626f6828cf2975bce927010e710ce0760f280e16f613dacc8e185e52fdc", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "d4f360406e36477597b1dee7ced920a9c52d6b1c4730dc0d7e7af25e126aee2f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "f2252a3e9668ced79a2b4ec2447351fa2175a8a6698851d824bf50f9a06c7c9e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "70589e7a3f5f82d302046972a81350c9942b8823c432f3250fd92ba1ecac194e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "9a6ec74dad63ed9d0cbfc8e78e3773b0df8856ee70cd4518c799fc3f09d25541", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "fc1a767c63baa893850a09df191aa312c88d2e86d9f59972b7133a8509dec1a3", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "df0d05675a366dd1bb7055ecd38a95475b40d6b21f14c633d178da56876480f0", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "17045bbddc90188fbaab60d010a2e5faf19628da07e334c029237b2d7acc23dd", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "1538bedbbe18ab4a5637702afc109659e6ea34fdb8ee0e733470c0a69c8cf012", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "3bf0bc8edbac1c96bbd744ab3b6bcca91f7bef59a452f79ff5eeb51dcc2b7953", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "7f93af5e1818f209bb1f5e59ad9f42c3a802f957f80d46e0e65d9d5cab43073b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "87bbc74d8d0ede08896df16f41c8b7945664df918378c90f257894b18a96819e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "72a93ec0377883e34891bb644afb98a20c59639020b823989b2961d3dc838d34", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "100b449ed56d3e970a94b697e1457ddf0c9b82aced73c641844c19a178c03907", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "0038bab6aa3cb8e09bcc2cc1b4397a93346174f61f0e9b165c771243e8bd165c", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "19f0012291a85b42b47dcf81fa976a187461a2794483a78d61bf576b5cf17c50", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "63da980b3e469ed256156a2efe8969afc23329e1ade50969bc54068bbbf4336b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "0e534673665de9d7d71cddc80ca871b9098f9829e7804ce4cce1b410c41e321f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "18b9f50b7675cec3db308c31f179dc9b7311071c82e33be5b9aba4da55ac91cc", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "9d8fa4fb5f2e166b894381d2b257fa38a38b3ba1ddee26ddf65c2dddf389d30e", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "24c4aec00f8c829a211396467a101b2f324f97e674525ea385911dbb1dd10feb", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "48cebd3c33b3f52e631158c1ee58820b0cb2f26e510a85d61ea3fc20e2f29f26", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "ee46c99dd6980391b78c218c63ce1b3892412da256f24bfaf75f6b36aa788cd0", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "ea68e208995fab3afd081026009351ed615e7c1fee654413ebab0d8907a8e4b4", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "ccd8424b20fa275f31383fce35d7fb601ac1ff9f9cadb6507e34cb188c08217c", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "5b9967a7432482d40c3c44393ee3e3fcb45a5dd78ca8eb8532e9add569bf9e95", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "f14dbb2dd52a5884225bc8864205a3b8d5d3fc36db706f40d30c7ad685f07d8d", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "e87db9d0bcae2d9a1d6437136c10b35d0b36cfa43373b8f2d82e9a75d46768d0", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "3c14af372bdd0d8a23801a3074551fc77c46d4aa04bef9ce3effdb3c882436f0", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "7daf7626952329c95b96018c7251a0abd3cf707c643bec1ea2a1a9d02e7e6f8b", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "0e534673665de9d7d71cddc80ca871b9098f9829e7804ce4cce1b410c41e321f", +"T3T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "48552c4cc6f0bbb0d0b7529b983a98220529192c89b39a2dcc6da2b88bf0ef13", +"T3T1_en_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", +"T3T1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", +"T3T1_en_test_authenticate_device.py::test_authenticate_device[]": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", +"T3T1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "3b97a2427a8ed18e35b721df055557d603867f0835feddb85ff1ccb8d3acb18b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "a948edd021de2193700a39ecee60ad875053f4271a89929878231412a71a55de", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6d9abd250371a438e05ad9a5c5a93f32eb633052d70d8b007869675f907c044a", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "67fb4a8054424bc30e317349c588c41efbec8eaf8ac52275ce7c17515ceefa27", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "10c967f2dd0da8ceeb7851f5f262b8b362e09a407e4703a1da983a023ff8c7e3", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "76db33c0436c272948ed40e212d865649d12c20d5a93e92daf059871f4c304e0", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "319ac8cf6cdbafe77ac6fbfe72dadf973861c36a52fe6f42df6a9766f092648a", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "3f38c17be4692eb593a276b6ba323cb3898bd972bc694b20e3e5031ae1a6f7ce", +"T3T1_en_test_autolock.py::test_autolock_default_value": "47c565a6393a01160aa5d677545de3a376ea840b94f8103fb4df9fb2220bce9f", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "65634034946169446cd0fe2db24975dcff3d12c163923d57726ee209cb4ef6e5", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "65634034946169446cd0fe2db24975dcff3d12c163923d57726ee209cb4ef6e5", "T3T1_en_test_basic.py::test_capabilities": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_basic.py::test_device_id_different": "b96755bf00f47f7fa7f4732d432daa123fe0acebf5e49636a5697cb624cace4b", +"T3T1_en_test_basic.py::test_device_id_different": "901237acb1169340674c16b654913676fbe8bde1d5917c8ea8f640a331d79387", "T3T1_en_test_basic.py::test_device_id_same": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_features": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_ping": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_busy_state.py::test_busy_expiry": "ea75a9f878d9c38982376f2aa948766d3f714c5bd6e6d85d467196de5298a47c", -"T3T1_en_test_busy_state.py::test_busy_state": "74093132f8ca87ada6962a1d2adacc1e40fbc520df55109a3ab3ec93fb63bf5d", +"T3T1_en_test_busy_state.py::test_busy_state": "627a56f67f163d21e897b7c733e974d4a1e324eb34de98e4497d9da31e319e7a", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "f9a11c51c2c0bacdd7383b0d6f1425324257c194819385303246d757e3fa659c", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "f9a11c51c2c0bacdd7383b0d6f1425324257c194819385303246d757e3fa659c", "T3T1_en_test_cancel.py::test_cancel_on_paginated": "270884d5e7fdb0fb60531e13f464750de8265de42b93a6edd6e966d737d3be56", -"T3T1_en_test_debuglink.py::test_softlock_instability": "eb87af9b0d7173a9e1af381439cfb81761cf86f9ae6e3855ea7294b06c2f1b16", +"T3T1_en_test_debuglink.py::test_softlock_instability": "dcc79a76fc304f1a08ba46e122b8f1f681f7f14feb2b36b2bfe7c6dfecae0f80", "T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "c67de4a16b2668c5a4a05c34189759beb1611535aefbf74aeffdfad0781c75aa", "T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_language.py::test_error_invalid_data_hash": "d8004e9158d2dfbb578cbc3fcc594d0faf33081d97945518098c7ff02cf1b43f", @@ -19781,93 +19781,93 @@ "T3T1_en_test_language.py::test_full_language_change[es]": "5012477a8512c1c47e54b390188d80f56caf27f8dc257e29705333c616143b3e", "T3T1_en_test_language.py::test_full_language_change[fr]": "e3fc549ce03c716f23e22f4b9f9af779562ab5ae1f33bf2ebdc3daae9aa856f3", "T3T1_en_test_language.py::test_header_trailing_data": "1ef965ac62e3416645da0148ce97cd0eae755e4115e31157bc463ba8c23e163c", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "1c16fdbf36cbb6f392a705eac2a037e8abcfcaa1c20f6235a9964d5ba230e930", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "7574f97916df8722ddce470bf9d7713a94a22ca65f586543334926ab77ccec48", "T3T1_en_test_language.py::test_reject_update": "3edfb420e30cc58fd7e3c26a18b12f2d82544bd0bd6e604f47db6a6ad5748126", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "0b2c1abff78da669f97266a5a713381685dc8943e07fef86879d84ab57a616f9", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "0b2c1abff78da669f97266a5a713381685dc8943e07fef86879d84ab57a616f9", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "06b1b61b673bc9cac0f41eb764b6f1565a28141cbf2163c6414d0ab78c1fa8d9", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "cbab9b797d6d021ec5925bf9aa799fc57de8fb5819c60cb2faf70edaf49352aa", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "cbab9b797d6d021ec5925bf9aa799fc57de8fb5819c60cb2faf70edaf49352aa", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "2bcff6135427d2d5528b138aefd29c5ef946cb7253c8c2fb3138ee7d496ed233", "T3T1_en_test_language.py::test_switch_from_english[None]": "a55c76debfa9632fce7906b4b976e7de6156cb0f7a4633e93aba9d26d9df6b2e", "T3T1_en_test_language.py::test_switch_from_english[True]": "a55c76debfa9632fce7906b4b976e7de6156cb0f7a4633e93aba9d26d9df6b2e", "T3T1_en_test_language.py::test_switch_from_english_not_silent": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_language.py::test_switch_language": "f0613dbe70632c05cc1bc8f0f7b3fdfe189bcb31f8ba8bb5212b7d61f8346974", +"T3T1_en_test_language.py::test_switch_language": "ba498699e59ee218fa4ea4eb8c18ba63fe036cd2e7218dbf12e6512b6ce71ea8", "T3T1_en_test_language.py::test_translations_renders_on_screen": "b0a8dc19a95d153210ddbf543ce59dadbb0997b8fab9ecc8a6f9f26dd4262ab5", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "64f523d67622da33aeb28a27dafa37d66a157e7b4812c9cd7b039e5b1c6c2fca", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "e5f38a9bb5748ba321b07ed92b4382165e200d3ea8b4e4dfbd6b3cab39c33e18", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "11c899f4f7fece4760e8abb997b76031b4733a421cb374e0fab7a25c81a73bab", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9a8ed45d3867fc3a17f00d5378c1931e7a328fa826a2bb1889319808aeb70e00", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "b93ca7d69d20e47cd5944afed6ac9843c8c9a190f10e1ebd738ff83f7c3b4d64", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "733d46d4d2443bf72500e7dad9c523c9972b04733e96438776bf6fe59919aa0b", "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "75a8135cc46a082b667abb29e54c7549186b1c4469a912b02ba67ff3841b58f2", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "9aa6b11b0eb79640d9d5bb949a18c51b4ecdbafb7f001eaea62382fe02d948d3", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "ae8e24fc6d13475b2b208ced1c18288d80cf22c13707ad9cdb4691912155a909", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "0d5beb80469670dbdb98f379c66db0a96c6b5b8ab773b9ae32c8b0040f63bf0f", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "aac4cd5e4c4921948b76d182889aa3c417033089494192dd24b33e79ae8a5baf", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_msg_applysettings.py::test_safety_checks": "13e182ca6ea302d2aac9d1a79ee88f5b2f2e6a2d3c7736574f993ed0d6902cbf", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "7b3c24c81f6eb6b0eab37bdd893a24c5f1f84ecc1e8bcdc4715fc2fd021354ef", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1b1d606ce8bcd27723d2710d138a794f429372c94a30bece6cc31269a1f21072", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "f10f41495cae898d12e3af94805da827efa9a03fe859fdd3bfa817b95b891278", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "39254c7aca95a73f6c94ba0b078edf6703735c5460d9ddadc0a5783a9032980d", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1bb988cde8c3b831d190044a4cbfd2777d65c418121f68d3557b3fcd80a95a18", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "6f64a3f2a3b6beccddec22a22ed3974ad16fa651e113b346d879c60dc1db8b23", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "0af92ae46f374e63f5c2c331848d5478d93eb74187a3f2a0d0723b04c8c96dfa", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fd5f1ff66830a71a43339cbfe7af0f430526c26c0d69d57f24f12033fecef06d", +"T3T1_en_test_msg_applysettings.py::test_safety_checks": "9ac2948f5dc0d41632d5717811add555ed1f5bd5b9670a1296427a23569b8ebb", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "4677bf2151496ceeb89c3d9d2f7627f957416ddba197208bc4ae02d931bd16ca", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0b50d34323eb9e8759caa525e8e14f88d463aab9e4d5bba74a27981ad58633df", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3282c4677be9fa3c2425f7aa229f597c9a984ea91df83c7a4fe9c116f24d79f8", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e290cecfc5ac6c079c0fe65adbff10dd41b26b4a9e6ab6b9192573419f602088", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "112bb8b6282ea36b9238fef382943b8b8df113daedfdbec81cf7ba3cd3a23558", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "32e618faa53e0b9d56005cfa693faf1ac763987173aea012cc8f671062c78e26", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ff6aef1a7f3de150e2f5e1247107b0a40525a89c75505a8eec9051abb7f71df4", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fe831da6d8c76ca50416a5d7d57fec0b23ba4d216d375960c076893d921c29f0", "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "6867b3fefe40bbdf848693ad940eb096c9974e57e476f1efa9201c30502ff621", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", -"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "23d53668464ede2e26daa6564ee13e6b6387ef676373d0f80f409fa7f9c3dad4", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "72a8ca804526cda3824b1623d8054aefd1f9224fdffc709e97027d95b13c2bb7", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "12ac3b5914172aed8e4f65af84c0f578195c81995874c18d002a7c5b1caae835", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "99a1ed7d1a712c8ae7b9c331494c8479b0b0f96d35467026f3726af652825260", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "b269f100be9f6c4044bea8b1369d635fa87968777dfc9b63d23c3e5761c2e99a", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "56a3ddb6a2c327da87691545ab2f9b29da0e58330c181ee6fcc6f8b332d8ca56", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "410462caddbc24ea6943b73bbb1fc8e2b61a88b24a8a398e241ef9a749f1fe57", +"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "070bb54a45855466d81f7f4643ecefddbd1a7fec207eccaa6434e99b6f924f64", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "a6f903b4bf980c31b9cec0935321edb15bd501cdc1f9b649f9520c126680c1d4", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "ddf3efa48a3cb26e8f9ab39998322accc191580c57c304c5009ecc44f4973d14", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b9cd908b75846734e8188c0de5b79fcb67fb05a8989c8108d9d2ec09d930a064", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "729e9a09d3cd2c464be0db41089a19febc3fc7bee69b00f55155feb345006d7d", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "0ff8137d83b913e1baacce289700727f393553e98b25f5d1881e92b4038f855d", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "c5b13d4ab104dd37426f6f4e4d787409b8100dddefe6c43d9af0dd1475b92dcd", "T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "f91581bebc54a9bd1314dcde8875243b791f5cf6daab448018825900b4ee4a99", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "0b2cfca6e7a4455e8452823fcef7889741da7b53a6237c3d04cf5d2e8f6faa47", -"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "47164fc9aad71812ca6e96555943b4bae4178b420d0c7916e126891c06985369", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "0ff9ca7e929297f9d8cefde3831e7eb08655aadbb642fdd5ac547c80f55019c5", -"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "1498d301498842cf9e4e368b5c3d8b0691376d1f7df47a44949064ae612cc3fd", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "187573b5638cad2d53d519fe2bf5ebb816d8db99e6a67b7bfd7944b8bb65b5e1", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "1498d301498842cf9e4e368b5c3d8b0691376d1f7df47a44949064ae612cc3fd", -"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "1498d301498842cf9e4e368b5c3d8b0691376d1f7df47a44949064ae612cc3fd", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "4468411a31f193a9334fcd47c88159cdda21a13360d4eabfdcbe0b3bea77ec43", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "0ead9f3d42d1b63f58f378ed2eb35871a2d862b478621015a33abdaf92efb94c", +"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "56c2dddc73dff915e6930619f1f8d09257d91827d633d01b7ec20934e7f112c0", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "b10c416c659d80001d849e3e8b6cecfae1ca27572fdd8f7ced60e51a765299e9", +"T3T1_en_test_msg_loaddevice.py::test_load_device_1": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "29a375fdc54698c78a2117e6a37bef344b85179bfb15af0b4dbf649153b14705", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", +"T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "d9ae6f282dd27358126509712b665079ea6a69003cbbbfb3107875d6197459e6", "T3T1_en_test_msg_ping.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "e64d37f2fc3cacf8ad12bdc186d4f6cb6ca577ef1583617c1f9a0a84fa3c9606", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "4d20418eb53cc48819771756690536702142e7236bdb02f8967a32308ec1cc7f", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "a17dbf92db477b25e50b9247ca3aa92681e37ead19183422d614de12be423101", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "9dc902e551ac4c8c3362a2f008206dfcc07afddee8327cb66cb00a7cf05f1136", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "b96755bf00f47f7fa7f4732d432daa123fe0acebf5e49636a5697cb624cace4b", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "d5e2fa75fa82852c35cb1c603a225cbc2bb42e4f13fbbf97476c920962597c4f", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "dc1171b4b1fca407dc1692e624c16c48421ae42ef665b58394fee0896a79245a", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "4f5c7c7ca1e2c8bc0f19886b9dc3a9c75dd76fc918b54b7d54fe0584072bb162", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "5f028a734aab47308d24cd1194b66e5d6b0d1feb7051f044a6e2403ef7db313d", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "901237acb1169340674c16b654913676fbe8bde1d5917c8ea8f640a331d79387", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", "T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", "T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", -"T3T1_en_test_pin.py::test_correct_pin": "fbdb420a333659780b7f85d62898f07f7ed2d77d89196cc9354456504fb5a8c2", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "c97e172eec86a98b5a3d3056ef0d84b42c1df9e7131b94edffc435a668c6a468", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "1a9f6eece6177d8eaa7483a232232bb1d350a7e4280985ebbd9197eeea75e2c2", +"T3T1_en_test_pin.py::test_correct_pin": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "e792f122bbd455b39f88a136d9e2912df8ed703096c0fa3df6383c8edb86d1b3", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "86bfec158f147bb95a6e2f1d246bfd663d9f64a3ec3ad5c63373b12a70c57637", "T3T1_en_test_pin.py::test_no_protection": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_protection_levels.py::test_apply_settings": "b222b0ed44245ced7ae145437c318dc3605d6e64eba9e145c9c9471b38b47c37", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "4dedc4b034e381331bfa7450db635d0ea1fb34e2380ff449e893a6911effdacb", -"T3T1_en_test_protection_levels.py::test_get_address": "19ebb478eb3f5bc9a7e5d973a2c89d38a4d9f76a31e9ad4dbf9d08ed502bc896", -"T3T1_en_test_protection_levels.py::test_get_entropy": "88ef41abaaab3c0fa5fb9d7176c5c5bca20942f634a7ebc6fc9d2268b5fe1b2f", -"T3T1_en_test_protection_levels.py::test_get_public_key": "19ebb478eb3f5bc9a7e5d973a2c89d38a4d9f76a31e9ad4dbf9d08ed502bc896", -"T3T1_en_test_protection_levels.py::test_initialize": "47b0d74fc8864593a7cc45e7376a2865542a1c010ec2027641564077d170e291", +"T3T1_en_test_protection_levels.py::test_apply_settings": "d1a8cc4bc1ba6de633f285c294c9b66a704394140095e854c4c9aecdcc96e2c2", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "d8e4ed259c16fb3e79a1a1dbc34f19022b50daeff3b37255c1a0692af962699a", +"T3T1_en_test_protection_levels.py::test_get_address": "a21a7134e1020a3dd61e8d4de5accdb5b6a75343508b66c4be525961faa8479c", +"T3T1_en_test_protection_levels.py::test_get_entropy": "68d2978ced444edb12b093ff579edcf018481c69d6fb8b80103ac3e836dafb4d", +"T3T1_en_test_protection_levels.py::test_get_public_key": "a21a7134e1020a3dd61e8d4de5accdb5b6a75343508b66c4be525961faa8479c", +"T3T1_en_test_protection_levels.py::test_initialize": "2408c175321abcb0a77a5aa54986f01ad7b18e42c899315bc16e32dad63d39af", "T3T1_en_test_protection_levels.py::test_passphrase_cached": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "487d5832616e7933a7dfb15d3bf9f9df26d81f35795ac1588fc42f8815841313", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6426cb18f42ba96e7edc71d57224b730b5e746b12d8e5404847327bae34fe6d6", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "caed66551d7de52bbcdc8a213adff0c1c9cc1581bdbb09ce631c183c8e8b63ec", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "4309a1d9b0bf2c27d4f0c0a84ca128178b1c3ad3cef171682f17ba4a5d662463", "T3T1_en_test_protection_levels.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", -"T3T1_en_test_protection_levels.py::test_sign_message": "310b4b89db8a4e375bb0e8c6575c28e7038680053d83c199f996a9efbde8ec61", -"T3T1_en_test_protection_levels.py::test_signtx": "450a89ef4b76241da3f052c4c5993f82d620eda93d63f9b35d9348329836ac43", -"T3T1_en_test_protection_levels.py::test_unlocked": "8ce8e6f0c36539f09a0d92c3e1f911b4c25f706e08e83f14ed2e8468d7dd1b3d", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "c263d8cabf3f9c673e8f508285e60aaaa5876a5b289e6c1f9f8a59f0313c9cb9", -"T3T1_en_test_protection_levels.py::test_wipe_device": "11eba492f529037ca60cdcc4551f911db89d2aff9dcff3391bbf7f9234f789b5", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "52467c6ec1e708a8eb2fdb15edc6ea1f24c46b73a3d1ed2b49dcd4d0abfa9305", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "ab1f5c89c8d8623063a176dbd01e37bf40e76223eb1d8343ce0dd7af245c4107", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "eaef311f84930fc6febe2452471ac3414adb9247f224186d9a32a48051978162", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "91dca037194cd69bd5fffbe8e3155a0daee46dbf2b785b08e4ec73f878a84c6e", -"T3T1_en_test_sdcard.py::test_sd_format": "a09b474182d5bc7362079f5a4b0b9294bd3f8f2283cbbc3d2b90b09844a91d32", -"T3T1_en_test_sdcard.py::test_sd_no_format": "dbff72930103b6605d206e5144566a373f735bcf24fa8fd0860b3e1137ca834e", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "776749a894b6dfe4c4d9ace0afb4af54e75c7cb98f0176d0521ed219dd26015c", +"T3T1_en_test_protection_levels.py::test_sign_message": "3cc41baa365cf995b333c77a3c05504d437dc376c666b3081b679d9c3362c969", +"T3T1_en_test_protection_levels.py::test_signtx": "08587513dba30592a67a47503e714250b376664a55f52f4064cf27cbac4a1bec", +"T3T1_en_test_protection_levels.py::test_unlocked": "f699b239a3ad2f0e604ee83f7cbdef1e128834c6e5ea1af87d41fe1e7029ea61", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "e9d95dca8dc7d560c7245ca36249125329e388443d3b0d6a059fdbef4af4f0fa", +"T3T1_en_test_protection_levels.py::test_wipe_device": "e4dae866092052f77d4e1c0780de4649a40719faa67825fe5641f707c9a6317c", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "7c68ec0cf6cb63b6009737cdd18fa6980f2fa81e8a074335660d92288da5a57b", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "de2b2bc8b2ecb9f606ade6bc3c56f5c65a3172d6d38ad068c30a4a52389c6fc9", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1076e3ce540e88adb03e97f59de1866fb290d2c5de65bdea3330c16a891a0c0e", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a73142de230f60ce35fcf131ed513655adfa7df17731b09eec6a11d962a07ac9", +"T3T1_en_test_sdcard.py::test_sd_format": "839580564292a157fc64c042538b6849283501ac04da7114d16974d345a3ccef", +"T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "c3c3e35e97b9b09bdef622b3fb715f68a0016bb744f9f7af11b0c30b075765fd", "T3T1_en_test_session.py::test_cannot_resume_ended_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_session.py::test_clear_session": "52daf67d6fae1226e3bfeaa096520809db121d4c71dacbb34cab189e61697c1c", +"T3T1_en_test_session.py::test_clear_session": "816cefe247406062843f4460c08a80d40b5ec8dfe2ace59824965a62b51d482e", "T3T1_en_test_session.py::test_derive_cardano_empty_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_derive_cardano_running_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_end_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19890,30 +19890,30 @@ "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "67fee06302c4593d652ee7ff72975083203ac47248d895728d6bc723098e9498", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "ee6fd24611c22fc1132ee28e06965050bda20f74479507f82b97d75839944e08", "T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "6b4825d5c621db5742cee58368abbe80464911da51c1c3cffefd27905518ba14", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "7e7bdefb63dec080b6630f832c18e46e3e0237cc37dd7881abced80796a78029", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "08021b49a689539017ea7441334e64b4fc031dbdbe91837e2bd5a9a4e821fbad", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "95391f108e677a7593495393b875153d58649318146e7c55b46c2774e6bc8065", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "333d6aafb3aa39064048bd9924ab4240eb815f15fcd10cc55726447ea7fb4abd", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "4db56cf0012718ad5f293e553a8cfaa048d9186749c04e0506518e45ced591fa", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ba5b25d07bf58e4f99ddd923e0cff166c12c6be36f7f139288884541b9e2972e", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "abdeae6317000bbc9759857dfc8178c63e350a4dbcb5e28aa36a13794bfcc2b7", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "d779cf38551299a1e7658e62f8ed198f8ce97139cbbf0917b71f772929f52370", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "04ef2716224ba5633d22e53c5421faf7895e9e17685d84558aca6ea24c0d9bd9", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "84212ecbe445c7dd4b6b59b0eaee4094d887e9dbe3b35457f97582e1f40a1d5f", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "2023bf841f3d18fbbaf26765065cd92abea0eee4f8b2f7ade225963934f1b03c", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "c78c66897eb06eb1640d0125a039522db20593d2b381b53c3163fc905d1a062c", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "bb6bb367b0fc9bbefc08730706126f7c7b5d8f478134bb0b49fff955b85bd234", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "b933e11507605e551b7fa529c85ed557dd07106220510feb5aa6d6a8e68915b6", -"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "75a726e2efae76755a44179d8269c1c794de24c1d74b05bb47a36e5e4af9fcd7", +"T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "2488848ff080a1de419fdc6bc7064bf4a0504b306f70df555863e9ddcac66a93", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "23ccb252c1ff5847c1db298a36dae6cb48fa2ae0962c10acc05bcf666cbe9875", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ba87e90e6d810d1a8e39febbc867d89a69007b1ce7bdcc63224627e14914ab66", "T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "330f7f0028869424b70ffd52b56584663cccf30342086022ffdaa836af34e12d", -"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "a9fe118399385e034e683665083a4ccbd85fbaaf633d1b63df1727e4fa68cd85", -"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "d10c0dde0959add46d266575b6516ae1848889297ba3fed412f4fa4ae84266ab", -"T3T1_en_zcash-test_sign_tx.py::test_one_two": "55b4a2d9fe8cb0d0f5977e58b232e73895e69896208efaef1a2e6cba8efe57c4", +"T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "eb0670c196dacdf4d35fe8d03ba368ace9b3e90471a0f892ccec5e1ea7b42c10", +"T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "ea19880720b16fe8a730e908b2abfb34cf507940c156e882853a7632b842b329", +"T3T1_en_zcash-test_sign_tx.py::test_one_two": "7346debbcbd3b808e607c9f6a75c638307c976d4c3249fb3ec1dc6c416826a38", "T3T1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "e3d7d4ba39b00cf3b978479491368a3574353c3738661f78445d49a4cec5e4b5", -"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "69ad02c3b01887f4b1b4e2241791b34449a8cc6319174077634f02e74217489a", -"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "5de22744b72e34926cdfde5cd8bc6a7be1a6d8578b07965de2e4961be16beee8", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "f263aeae7eb9643d6bff1592bdc8dcf7aa207d81694b255d006f1404adc723a3", -"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "bdbc974780afd609c08d9ef755c9d111947f695b5712aef70899d27bf82c8ef8", -"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "e3878817fe299c2852f7aaa1e663fa270405031e71817d8140b7056415552ffb", +"T3T1_en_zcash-test_sign_tx.py::test_send_to_multisig": "0df185bf79fab489c8ee4463e38d7df0295e5bc56a35abfe9c8a3675a06c7dac", +"T3T1_en_zcash-test_sign_tx.py::test_spend_multisig": "73b0ec6164d331f53eeb9872a63c4d7ab62a543d82f182e612cb816b01d6aa25", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v4_input": "1402b7c1656ca7e1fb148722f597a202293b1de30c715f284365492742925f33", +"T3T1_en_zcash-test_sign_tx.py::test_spend_v5_input": "302f32c49ec2102365c0c8b892639a0973f19546327759de9aec2a8e95164c9c", +"T3T1_en_zcash-test_sign_tx.py::test_unified_address": "2d0307a6764015a46ae69a0bc479012386e1ea85dbb2d03624ead9d85d4048b6", "T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "b15ce77f1ccb9de9cf3ba7a8cd6bc97bf52040fab84bb80ecde321ec59ed8dbb", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "6093b1b647c91bdea75429533c16f92483abe01e7278cddf8311dc6d63e9a42c", @@ -19930,20 +19930,20 @@ "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "67cce35faad540e24df64451de67cccc334b76a931449b5c6cb173768cab0e64", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "214466d2c0357c010e2df721b450736747bc57268d566f370973a3802f13eb22", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "48883805f726692aa612ace74c51d0b0c6fe06eda6898d41c80b9c7eb3e44030", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "a314e354e83333112e0e11264e97c175e9e3e911c3c212f2139a7be1e86e3083", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "a314e354e83333112e0e11264e97c175e9e3e911c3c212f2139a7be1e86e3083", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "33d81574a5bfea64f6c917467b79397daa05e1757dbceb9be6306f363fd418d2", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "33d81574a5bfea64f6c917467b79397daa05e1757dbceb9be6306f363fd418d2", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ef2ea30f4ae3da933ae53bfb1b741c94526222bcdb3618ef5e27c04ecf2f7b26", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f19ba1a048878a769fa8b842fd2a23dd8533e0b72c501fe5cda93a5ff9075241", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "6c82037c7944ef866c41b578ac7f680f0c578da7b1f136c055a46773e2207ddf", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f87ad1b10316f25c869668f96fc8a6bdb47b3d9bd6aa7c201882ae179f2a91b4", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "f1bd5bbecaa4460f1171ed5c9c140babd496843fbfcbd61bf748fabb4f33ec8f", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "f1bd5bbecaa4460f1171ed5c9c140babd496843fbfcbd61bf748fabb4f33ec8f", -"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "c356969585783154be37819dcb5c1b22b5574747ffa2d37d7ee458e996ec27f3", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "c356969585783154be37819dcb5c1b22b5574747ffa2d37d7ee458e996ec27f3", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "357bf0ca950533cdd3d452b2dcb7aa06ba1ccb929b00e0217dc77d1132261ff2", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c45d7d59ea1f5fffc34bd34fab10a08bd49372df79d538a7a5d94e5656e93e37", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "eb077f6722eb8dc0851d578beb11f054006df01ccfb60890b6a6fba31ade8831", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "d86801dfb8aa2f35f83588cff84b15afee02af23c1041d09bd85aa93531a14cf", -"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d359600c03265612b1da57090bd6b344dcf15dca2b6bb11082132445ddf61e0d", +"T3T1_es_bitcoin-test_bcash.py::test_attack_change_input": "2908b463094a3d54c7f4aee7d6cecb0487bb13a9ad3241b4f9fa96a907a87bbe", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_change": "2908b463094a3d54c7f4aee7d6cecb0487bb13a9ad3241b4f9fa96a907a87bbe", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "a0f53512dc29c76c1fa5f18a86786a833e960f6df6a619ded1795af47c2d4b92", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ed18d1afb492baf4b301201e35ace20cbff536310c3530ee1f64300a9dbe03eb", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "7b0fbd9aa6437612e452b3cb59266949ab33486d19fdf9dd638000524c63432e", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "09ef6b274e404f23eb51b8129fcafceb26fd0f797529242b5fe4b137ba0aa2c3", +"T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d4978c6453a533d34d732f20fb14a2e7b49a528f769899d311c8dc10f48d79c0", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "8fd3972e119070574de778b1d2144e47925c4f1b822cf82da7ebff47038f3309", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f83868727119831ef97bfc3ccdd03fdde9122d9c7446e2d4e897f1fa6a22355a", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "a7a05777a0bd2d6ee796aef96036487b8581efaac9cd16ab84cb80866ac0b255", @@ -19980,30 +19980,30 @@ "T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "f6981ce57969456e40df06201824c5ed70de5407f87d4ab86869e15e04afa015", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "1e44abb57d3a3f76e5ddb103e4f9eaf4b2d7227e4e0f5c58e07b1df693914590", "T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "956551cd4f59daad41129561474ce1c9c228f525dbf8de77acd28408d1913212", -"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "7ba2fef7b33d9b3d37c2003879d1f7a490a889a219e4297f9a23779535184718", -"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "479da1b9b8cbf10921750351a4b8e250981bec9154f1b2f2afad73b2c4f9f602", +"T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "f3ac191bc9d38086442dd0a37ef19f66ede96d1145c73b419ae0e61ebf617b8d", +"T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "ff9598b6c84935bae534e54f066ebb7ea27ea94056c2d6657eb1c68a8e9bd783", "T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_bch": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "4790b34ee2af5c36bfb1d1b12ab5234f7dd733d28d858cb1babd2b6e566880fd", +"T3T1_es_bitcoin-test_getaddress.py::test_bch_multisig": "aec32c12dbd1aa4f1a7c26abb9bc301afc93d32e723c4d79890f75e99a384ab6", "T3T1_es_bitcoin-test_getaddress.py::test_btc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_crw": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_elements": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_grs": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_invalid_path": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_ltc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "5d0ef99d730ac59d18191f4693273f0eeaafcb6a2b40ead0230387d8936f18f6", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig": "0207cc1be5b4721ec820b939bdd68b8763542efea29edbb68953e74558b8421e", "T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "dbf9d1efd50e10064798b97bbe122baba1e1ec9c488f161f9fb6003b65063075", +"T3T1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9fdf8e3f22ceed80cf9259f2670074152af2673919e04e20408c1c864b10e333", "T3T1_es_bitcoin-test_getaddress.py::test_public_ckd": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_tbtc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress.py::test_tgrs": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "a563affc4c3b3beb6852f9d9ef1efa993f545f6d646b0a39425a28b076306510", +"T3T1_es_bitcoin-test_getaddress.py::test_unknown_path": "e2513012847b8e2ad5bd150913d4402fcd4a7cecf77c6ff24ff588f291eadb99", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "e8d5cc92d7599fc0f51f0b0569e82c85dd48246ffbd6a49c0c5f88cf1c333a2d", -"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "480173be10485b04906552b39b1d47508fa318353273f4f91ffc5ebfe16e49ee", +"T3T1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "77ce9b2c544c056a1526aaa1661c54b3ed29d596919f232a6646b8d993009c0e", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20046,12 +20046,12 @@ "T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "46a990dd535b00d5dbcc88a70193f69a571bb393990ce3171507fe887943f3b3", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "9bbb4d7882099cd63b660ac266573a0933fd3c9735a3bb52b4dde47a018dce56", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "8d713e67a3f8e179e28a52e7b85d343716a64e9e722f08fb1eaad633352a6b59", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "f6f4ff6a2dd814119e667d892b766b7d4e45571aab95be63f0b4993bc51d47a4", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "f6f4ff6a2dd814119e667d892b766b7d4e45571aab95be63f0b4993bc51d47a4", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "7128ae10d8119469a2f092ea8d8775dd49012d276049a9c804e8c59144f9ef40", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "013343b328baf708fef1d5108b18f115f9db7e3f8407ef22db594c0db3ab0359", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e00c17cd2a01ba01f12cbf9eda31edb80cdda56f15488bdf76b0cabf50563921", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "5e687c77482ddadb97f020563713f088945fee956e98cc9da664fdc0da352c73", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "462e6c078325ea37b15e2aaf1fb1dfc458afc40e486df85a099ede76990cc89d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "462e6c078325ea37b15e2aaf1fb1dfc458afc40e486df85a099ede76990cc89d", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "11ca3c12899d9bcaa818c507f1ce6563db38ae9b30cbfef1de3c98f9820fd71a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fc529b4f35296c4a0f427dc088b0566f320b0773a99dc0eec3d1f07fde7dbaa0", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "8558a6387b134f066557faa2b11707088d322d8b25618c6affda849c5ddc26d0", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "6e60bf00c27f3db4e0e79080ebd05bfff247c2d78e87b810fd4ef66ada9931ec", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "23653b11501519e6fd0287df1303e95b738ea0ca98c7b7f245cfc95972abbddb", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "e8f1b740eb94c1105f1552686b1e01f8a5ea23756a4e80473c730d2aa2faec24", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "0b5bf8e1e1d65a1cd495b9e0f037070aab334d11f33f2d5ae33f89383dc0db50", @@ -20082,15 +20082,15 @@ "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f83868727119831ef97bfc3ccdd03fdde9122d9c7446e2d4e897f1fa6a22355a", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8dd4032523da4c02bb67250ee8b0fc60f377da14989c2595e699f4d0a5a16ef1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "50258e0a7deeb50d0a9a7ea49f2b2aafb43f3163a0cb6aa99460edeebe5d4bf8", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "eb34c96d21f3c0babf23a781d8287aeb4458104cf4e51bba63cc23506a404a6e", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "05e14b36676c7b42ea79229495a11d58a470cc340c1ab9e83dbeeb11c91a6d41", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "863f194e732a5adea21f8a4e4d709d813cad33b58162825b397478aaa1cfe4cc", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "89563bbb4acabe79ad7c9c277695dc4a62d3e08f94d03149a84d39a036144983", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6d4fe4312a1968c957977ae3f3127463699b41ff3300566f0fb324ba4b9d8983", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "b52ecd2522629d7ffe856043759321bc07ebf78d5683c0a66be292904ba563d1", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "023c395c34d04695455435bffe26048d34898cae596e1b285298eb0fe0513a60", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ed1ad6236ffe1a3e4c9573b2412d0b7b188a2820c5ac45c1441e0320a0c01bfc", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "0369bb9916e710f7d5cd53515b47a55d33e369d8dc7a99dd830b04209b5f0a24", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "54af223b196c203521f51b9fbbb04d653cf4b73f741d49f1fcbbd6306722102d", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "283d76329488a6ca11e10cabc14027c4951cce72833c71a7b56dd094e8270ae6", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b27f1a9a3ec8e9511a550e7f317b8fdfef5170da3af6de7f1fe6effc3f352d5d", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "63a6fea73716073670358486261948505aaecb36c46f01784099049e42635953", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "b3d8cdb1cbfae5f30f558b6d7130aa60c5f0592557c3ec667715c9244830f089", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20109,32 +20109,32 @@ "T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_grs.py::test_legacy": "06e929ecbafd55f868a7455c90e8fb62db6d5aa33a1d19af7ae1b63e44b7ec8c", +"T3T1_es_bitcoin-test_grs.py::test_legacy": "cb411319cd9f05fc8234e48f82c088b9128b692e2159bc9d34fa4cb20ad853d2", "T3T1_es_bitcoin-test_grs.py::test_legacy_change": "3fc9cfb36d8bd254855d3edc13c52495f2fd0624ae649168a0095ae3863ed46a", -"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "1a4331497aa76b84e813f490bd6b3e0983f9e9be6988c55eb04a503ca62a510d", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "aa0205059d9a24aa2f86633ccb80cfc24a49b32667042d2bfa4eb2b8552031e7", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "ebbd86349820b18047229d39d50d73bbc248167ebf429a70da262bdaae147c9b", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "c1ee150a3396eef4267f33f33ba48ccc3080a3f7ddddb6b21f6195d8500645b5", -"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "fc087c7f9592e2e0148d6ebb71ac62597739009ac1d5c5f186463b29454434bd", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8d203dca558ef4d35fdf3e680b72281ca9e6d662b3177ea94943f62ead21a6fc", -"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "69cec340fb94a78d5257f7924e70500b7b77094be8d411c7ae93a943ef539f42", -"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "3271dd67d454b3e0b6f44258a54ffd6e092af83225844dd31819743a0b8fa530", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "c709a332c32299c6a250e814c3257644abfdf2fb7f3afb07f01ae44a49fda83c", -"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "81beb8f066419280a098312fd796278a8fba044d67557aea3cecef3f5e8d0d8a", -"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "4b5d700a718e64ed0c98696e77bf0e10266a5e62706c778d2a562d88b189809b", +"T3T1_es_bitcoin-test_grs.py::test_send_p2tr": "4713fce286db2af9835448d1622904bb129bc0939e267d7f2209d9a1636288a5", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native": "4a76f4189f04682413b3d03f722701b0c3dcd885fce80a945b573706ad82a84f", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "33b9191947f36caa1b0855ea05b91797d1b6543ab4f1faea758f111460e43a4d", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "d08d4bb1fcb05335d7e80da5f661dc44dd9c25b939e503790a424d493640af7a", +"T3T1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "c473b88e091ee298d5071179b56c17727b32f46e92e0eeff6f882f212b3d2471", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "ec2fe798f5b46ca08bb9f816b2c3ff67bc930aca8a33752453ec4492fc55af9f", +"T3T1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "651ac0cf15c2c390a66b0438b3210d061f8734ef74dcf96b264514dc3e28f059", +"T3T1_es_bitcoin-test_multisig.py::test_15_of_15": "8c017b66baf65163474e30c2fea760c15f6f83411a5ccd6f983592e00e73b2d0", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "f150b85b1532f49a5bd23e48ee11fbd3c914ae42122ba5b9debdc0f18a7bfd41", +"T3T1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "2bf5ff3b5cf84be13ff23550233b379d1ea114071a2d499d6f47a6f6e84c8523", +"T3T1_es_bitcoin-test_multisig.py::test_attack_change_input": "3bc321e54be18828d1e8f2274407dbb1d3ff3c9ed1e05da9842c67652698da65", "T3T1_es_bitcoin-test_multisig.py::test_missing_pubkey": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "7a7595974310601ee0cd7f6e2b238cf53a11f35e51625cf9677b837e7847b692", -"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "fb58af7d8cfd94149982706ee6f6141cc7daab15538d77ae1e3b864b108d7c42", -"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "596c872d15b1731bfcb0fbf6f608e234511e5b714aa6ef10519ec9df6a624856", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "9c7dbae99d672ac03ce67a6c04d9961319afa7fd536097489b00fc0197e123ae", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "91419e3101b2cc905c635c9b9a50ea40005d2211e396fc8a2e77c8fc7f800688", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "6eda04bad4907f8beb1328ba54f9c94784cb3153f48f219d32cac299114d02d9", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "5f3079de8557ee0c00fc01706fc355c5162fe53fb45682891e012923fee9611e", -"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "914b1cb3ab05c070093ce2373b0270772dda95881e070ba151251197cca0d710", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "5a77c516530a010c3d8f8efcea6fe6e41ea23658df996b53845c724cd81052a1", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "ddfb6eab9c763bc9957d63eed763990d0bc08450a108aac99639ec67c827e639", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "bb171d0d7e8efd6cbf97d5077602145106cdf9266abb97f55f586afca864c5f5", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "96e22e066a384a5fa98a083eef502f6050a57f997ebdc7f593b2e82906976e35", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_external": "15f4aa9295340fa18425698eeb15b45ded2e1d4272f38697753fd2ffcb320901", +"T3T1_es_bitcoin-test_multisig_change.py::test_external_internal": "7357e0f82d44bf53173d41ae2bc5bed03d18fecc11e0204dbdd121739f364078", +"T3T1_es_bitcoin-test_multisig_change.py::test_internal_external": "2b0104d65d9a4d4411dd2bb244e7835a327b6c75357d63e4eb6a90a67ba558cf", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "be979877524d790075ffe1bae1e8f992d7df7a11f600d63d82a7590e81e98a48", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c24855e73b57b55610dc32612ff9822e4b88dc5cde83a3f15417fda209971073", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "233b3b0c59479481ff5f0ad3ab303067e796aa83b5d4b9b2cf1ddbaebcea06b7", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "0f6785738c3099bce99855dbae0237efed4ab568e2a7847aa02dd686ba9b1ae6", +"T3T1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "cf054bab8b6a97bfc2f5992ddb9694781f5ca8667bde17477335f20c565ea3f1", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "ed5cbfe2f48372284bfeb0f03760cbc778e0917f19d0a57f9a26915acbef559d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "d08e603c6600dbadf9e91629ae08fba23ebad2db548af9fefbb88e85df4eaee9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "34126b518e490e6117161b73a96736fb92a4b21e515bc1dff462bc931d03b34b", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "1881015415d3880ad6dd83ed25837c6e69bca6714033299dc8acfaabb4b541ff", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d8cca097515dd601faa73ee4318b42bee2b0681450a8f2ea295bb52764340718", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "ebb424b995b05f9508dc4c6384788eca1995e25916cb42bec3bbb96bc2c1536a", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ca0fa41adfa10d999a7148fe1198d5d862b990273e02c69a6c02bace5b52900e", @@ -20143,41 +20143,41 @@ "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "7628066c77550d3be041a64356b7084f8ea6ba7e4a45daefccc464ad8fdb9c46", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "d71cc30d8f669365e772ba2827089d12df79f8cde0ac678d9ab8646767894100", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "334545851168672303809e0e9b5e4e53d695e512beaec2b8db81bc9cb4d9f291", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "5d9934ab22f4525b52fefb1f493d86df907e08529810e89a28072646ea35f63e", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "346a4d32e6990ae002eb3d18b75933c07f3015c25c1d81f5e199c7c36f5243c0", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "571f4be05ecee0ab42f6da07fac62597462aa144a5ad163a6ca788fade78d0bc", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "abb7c69e819cc2a1c4533ad920bb7e8206d2ddb42b844e16b463893baa06d696", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "cc24c07037d233a411783667862c2f5a89630a460c18073e390236c1a9190c69", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "3841d0e9cf2f5dab2f008b36b4e6097112d3bb8885bcabfd67f7acaf944dbde0", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "2aeeebe69f622307e1cf0fd9c9bcc37b4a814dcd43158a5f257a99649fc096fd", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "fc9d57cc145e44a87c31d5d50d457cf6fdcbdafe5d0c1a5fd813e68a5f3dc79a", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "33cbe5ae16ea65d0b03076bb883869565b1a65bea63d5d012f5621aa064f9f8c", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "9f82fcd809b994972c7895ce45e99f93df84167e15e4f21e78fcaced3f0e78da", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "8b93370be5c072c5859301216fab40b7930e6320f7c1a192fdc98bd6909c80af", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "6ccd86d5d481b295330c02ff2572575c8045b4d986bf9dafd0cda326722c0d19", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "376e280328eb2ea7bc01f0badc9d45b2617cbfd030c570bfce9dfb7f07364a17", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "40c25d2a86415352a9c62185ef5f24b4ffb893d3fc38316c898cdb8f74fafde8", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "bdbd4995f9c671d9d0498f4fdd17fd758aa7224e286cf2d4612c5ded78421ae9", "T3T1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "d44b4f5842f05b8097f842669e9349634e59cad4ac36be91ed5e785e41a876cb", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "859d53aa3f3d5256926a02ef851051fafad59756306be3504ebb4bf4435ad0ac", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "e8647418d2e97ed514ddd0b9986561b8415eb9038b9dc3e1dd3138957a02ca92", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "db2b58eb719150ad1c02b5b08f27d3513d90f42363cda186c366a93c83fa2333", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "bdccfabe374cd320cc4de12d84cdc70358910bcba9bb47ad1165e9db4e72fc66", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6b2eb9a5e9cc85ae5a9a87ddcfea0d1be765ed66c27c6a59f48782fd37652273", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "6d60b14f880f72e97d62499538d71acc32d305be206ea5f10e196596743eb021", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "66c2b614822902b17913496c6b0fb770885f3913fe7f1518b7863aab25bff1be", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "943930ba3f028cfed6c5af3ac58286e54aa28ebaaae8d85195582b72e8ffdf2f", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "681c33972a90191f7da49764e49ade176fb2b5dd3ae74f4d3be7bca1b3c3ce94", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "66c2b614822902b17913496c6b0fb770885f3913fe7f1518b7863aab25bff1be", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "66c2b614822902b17913496c6b0fb770885f3913fe7f1518b7863aab25bff1be", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "66c2b614822902b17913496c6b0fb770885f3913fe7f1518b7863aab25bff1be", -"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "479fd7cf268cb8b3101f92e26d476636057891ce7f96305fb63af174b07cf513", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "d1dc005f02f716298ad52f2e0657f25b6d22fbd1c6254bb476f18a5a0ab85375", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "df0c333a37aafe0279315361991830d3db8292adcd4cac55d8342405c82b13b9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "12563790a3f2980df91d7ad1c7b9dae5b13ab92ad92c4d14f40228c0d5685af9", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "6ffaac16278f12728dcacfa7356817762d5690e0d7ff4ed57e0147418cd83335", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "d547cbad22fc4e209ec4ce98218bf22fe0cb9b9bec94d1174ccb44f180e21490", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "c8e938e9e0c18f6dcacec8ae7be68013f323e45f20a43dab2f894b9b5bd6344c", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "9a4711dd75d857d41c3a37da6e66d934032524fa794f55fa7e3ab9f62624d28d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "20d822482d1b4dcc26c8304414cb591f70a0956eab4ac3ef325662009533a9b5", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "841e6e716ea8a2c107b4e513bd956da1a7ead16437446a9937bcddbd509ab58d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "9a4711dd75d857d41c3a37da6e66d934032524fa794f55fa7e3ab9f62624d28d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "9a4711dd75d857d41c3a37da6e66d934032524fa794f55fa7e3ab9f62624d28d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "9a4711dd75d857d41c3a37da6e66d934032524fa794f55fa7e3ab9f62624d28d", +"T3T1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "8e7c04294ad5f18619ded77de2fd385ec0f6866338a2a323e9a096273203e8d9", "T3T1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "e5362a06b5f7a073bb5f1d4b0b854dc436703a70bd8efe03c0a5c4120f4afa77", +"T3T1_es_bitcoin-test_op_return.py::test_opreturn": "9d503d9e06cf67a244bd6befa69cb71b432720d87c0aada2352d6a901202eb6c", "T3T1_es_bitcoin-test_op_return.py::test_opreturn_address": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "d98fdee72488a33cd0ab4344cd516bb7aac0f427944edcd10ecab4ff350d0973", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_included": "4217a39c3dfacae0b225bde518c5ce7817b6dbabc955fabaddb461f961157d66", "T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "a1ad2d2a277e106e0130a63a060bd709c8a417911e568d16f0078580e0fbc4ab", +"T3T1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "a2f034d976405737b4596cf94096894ac87d7e5029898f925fa284a41eb0e4fe", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "75135e4c84b0961efc966ba88ac093b977872aafbaebe968003761b166037e46", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "75135e4c84b0961efc966ba88ac093b977872aafbaebe968003761b166037e46", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "6adf936697d39c299f9850f90be87a850716bca9c94c2f0dec1615427cedff29", @@ -20204,103 +20204,103 @@ "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "8fd80802be2f95fec01cba2e0b268288a4b3dd79c23a1f142ec456a95e96ac83", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e6b89a68deb6773c79fc9758b2d4fe8a29e76939c0fb54bb8341da7d074d8906", "T3T1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "b0b1bf9030390c2d88e2f051389ec0a8fedab96e6d9186c2076391665f8db946", -"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "a897eebb20b8c7e07674910004ce5818a29f506a27c25943b7de7c6b57a2abb1", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "cacf25cba937fe5c6d7a73e51481f49693cdcbad15e27bfa0c673985e4650317", -"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "bfdcfbeae3e8814ef9c7cc660c2a7a9feecde4911a7a67530e20189946d4d488", -"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "999921a1d1280a0c295176101cd1bdcb7d0002f817f180b6cfb1c5d704ef1b57", -"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "999921a1d1280a0c295176101cd1bdcb7d0002f817f180b6cfb1c5d704ef1b57", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "bb7849d402eac1097fb1413d36c782ad4b0ebbcaa7465feed204756a5214c0e0", -"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "dcfb4639dbad27208fe18c7c4f1ca7c0bd0c124887c7d5c7c44750ae40befa64", +"T3T1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "022daeb60a358ee6d6880cff8e85ade4ad969d92ad8ec535012d79b9f6899ccf", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "88d66fc30f945d90a3abe865f2cb40706f28cd98601406941bfac0e9618522d5", +"T3T1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "46e93925b4979acee9effb966abd961f419498136b91bed40c282c178c76a935", +"T3T1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "5399c90f611947d018c9e2b4dae26f8316349f4cff0d18347ac1e6764342e117", +"T3T1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "5399c90f611947d018c9e2b4dae26f8316349f4cff0d18347ac1e6764342e117", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "0e569f77ae89c20e56e1862e36c885d44a4fb9eb2b85fc6f67ef58124a7956ef", +"T3T1_es_bitcoin-test_signtx.py::test_fee_high_warning": "ed7a4c3d58cedbb4c1bf97c657f441c1f7aa97d61b6f41b1811298e90080c0d2", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_signtx.py::test_information": "b80a13e107d24940f7886a27be341dee470a751110d07166408929507a0e5869", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "48a3a3d6aab6c5485b1502c67f311083ca107ed5c75f0639b27db6bb1cff0612", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "46e005527ea0251756924c1a1d64233d22602c6ff82fdec7dfd67c3e16346295", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "e8c9c26794e53e2773d52d463077a864b3eb4a2ec9ee29f6e1e324772ccebc8c", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "278f5b4bfd6d0bf0a51d8df7d534c1fa37e0ec9a714f3ce88c5f6dc2aacabec0", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "13b6de69c00da95fbe34450c15aa7a7df17b7967d977bbd4e4303663728edc88", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "278f5b4bfd6d0bf0a51d8df7d534c1fa37e0ec9a714f3ce88c5f6dc2aacabec0", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "13b6de69c00da95fbe34450c15aa7a7df17b7967d977bbd4e4303663728edc88", -"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5bd86209d0cf6b0867fbcab32a17951539cb4e34b0cba20a236bcbfe55a590cb", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "626ac1bd87e25042e8c9d6d6fff344b97ea25a39da34bd8afd9b5cc2f10a236f", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "42735d8b6cf101c2204eebabeac768f02b97e50d870b18e34b6b0123b98d7c24", -"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "c62748a65fbf5258a4fc1d3c3efde430b45ee91ecb131d1ac984eb77b669fe09", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "124374cfa0b9e752d4d90770dfde8bd476efe3ee056d18d8e9fd651af9d988a7", -"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "036141ad946baf86f450076d1607a25498ff3baef46ff21bb24a42adbd1b1e7c", -"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "81bd082f0a8830b438334ba002ddbda295637b396e5f71167509858606ea99c6", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "02986bf4bd2c87135139a369b217b0ff0c2e5cea64f3b36e9acaf21ab138a105", -"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "6e1befebffe100db94f6a14d4cf32a44721a2839e2ab9ce5e35c46f237d65e77", -"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "1c86295cc9d8af83b912d9f052798002bfe419a7b97bcac450561afb705a1be2", -"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "ed6fa18443b65067ce9d78e855f723299bbfbbf4c852ff270ee716bb0cbd0973", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", -"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "59fc1ee657b070a60f875af26dc280734b3ae62651b2e2b37e73268cc4252951", +"T3T1_es_bitcoin-test_signtx.py::test_information": "59331600377905b01bdf3065d7bedc2942a4c822094d068a87fba56c2d95c6b5", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "0b2bf7aaa910bbb02157022b783f13a3dc13acdd06ba95aa08f7e4798f2bfd91", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "126787d3ffa424b6ce26edc826bb0827eea6a3416d3bc0fcd477f6c40d4997f0", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "2411c979803877085721d7ecc594668db5cecd123f21aa48e0ec0c8040e24ee9", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "c78efa1a2f369e1252974905609bf6869db79b09d6f57a51a326b5e6163ba1c1", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "85b253265c7e2733d42f6e115f6b876d7fd50534e9c00a04317d08d6d9955384", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "c78efa1a2f369e1252974905609bf6869db79b09d6f57a51a326b5e6163ba1c1", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "85b253265c7e2733d42f6e115f6b876d7fd50534e9c00a04317d08d6d9955384", +"T3T1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "b1c3988e24186718e6dfc42dc647a112adc358519b1595a52d03908fdeec7496", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_change": "23abfeddaf9d9731f17ebbe40bd8130ac326828655e6844ee3301eeca2737d50", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "4d5451031d8378fc3dae0d30da9befbfe67efeb52bc1767039e7137c11835bd0", +"T3T1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "f5f06a040689015b727292813a2b718323a5b65141234120e960c92ffdd1aa78", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_funds": "cf03035154c7f3d908cb3abca3f49e3767ed0d30116d8b7db8197f226e79d249", +"T3T1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "bdbd231fba7e6c987b90fcd846987054e8d5f6de0f2d17164177ab454935a251", +"T3T1_es_bitcoin-test_signtx.py::test_one_one_fee": "4e69eb5122714d37c5169e59fe53fc1b2aa1fca46520a93a7c9ea56f4bc80a0d", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "0a6c5a74ccbd85224b11d089eac64e94460be35d8886d002100b9b6a76b8b626", +"T3T1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "59421493ff68fc51c858b903d8406d5134eea01a035d0ec5c17b31c90b1d57ac", +"T3T1_es_bitcoin-test_signtx.py::test_one_two_fee": "ea8a9e16811c86f5b681420e90f110264df2bf5152dfa7600aa5f98177cf17ae", +"T3T1_es_bitcoin-test_signtx.py::test_p2sh": "f66ac8307df04d269e5512481cb5122ca2d2c4325705224d6c33d9906a6b320a", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "d2f4b89896b5984c0b7feb7a0a10c64e7209ad11f4fff42412650bd2b75a7a57", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "d2f4b89896b5984c0b7feb7a0a10c64e7209ad11f4fff42412650bd2b75a7a57", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "d2f4b89896b5984c0b7feb7a0a10c64e7209ad11f4fff42412650bd2b75a7a57", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "d2f4b89896b5984c0b7feb7a0a10c64e7209ad11f4fff42412650bd2b75a7a57", +"T3T1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "d2f4b89896b5984c0b7feb7a0a10c64e7209ad11f4fff42412650bd2b75a7a57", "T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "216b523b7fe89d6cf364805c402462e9be1584a52ef5a41aafecdf742dc97e73", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "9a3600b4b877ef192e72e43a2acbeb1d925b3f76fe02621ee9ef271f1bbfa9c4", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "5c95c16d6a2989cd5b2d12888a98aa19ff5961a138d05f1e6f5251a83d67e28f", -"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "999921a1d1280a0c295176101cd1bdcb7d0002f817f180b6cfb1c5d704ef1b57", -"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "985d0b84ba25f7727222d937b8a8bb31148ebacd48ae2d14d82a43ce2ec95377", -"T3T1_es_bitcoin-test_signtx.py::test_two_two": "29c4127455b6d4f6aaed439c65857247ff704e2ad164d9703bbec219c602e238", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "81bd082f0a8830b438334ba002ddbda295637b396e5f71167509858606ea99c6", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "a97cd4301327920a0f3735459d2118c475914b2e269b52aaa057dba0d1f2ab07", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "e4daf7dc7bd196fc5bbadce6fa8d4af06a748431bf70e75599376525052978c6", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "260119886e7e972ede8b9e404aaae9c4845df6313d5fe3dc452c441087e4b324", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "81bd082f0a8830b438334ba002ddbda295637b396e5f71167509858606ea99c6", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "9e395c14ec65cfa95268c390ac46fc6d347fbfb5b0a2c610a8741b0e1dbc0f69", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "305bea2baf9cf401d5edf00d95fe3ffb273aae43b76ae0bdeadb7d150887eb86", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "79448172a859a440ee54584ba56021ab0aab9aeeca3c3831f76055ea6f717b66", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "d6a72589a5bbc6fee9b30d60609935e7d733bf32e4956e4d049b2c45b25794a4", -"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "9e395c14ec65cfa95268c390ac46fc6d347fbfb5b0a2c610a8741b0e1dbc0f69", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c12ef74b08c66f1ad1bd7b17105b57c2daa450b39998e6f5f761c04c9aa13680", +"T3T1_es_bitcoin-test_signtx.py::test_spend_coinbase": "8a34f70164af5d676ccad55b7285d334d70bc8b8c67025dbcdcfb6a726791223", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "a9dec814a450fa11ed2bb191bdcbc6f019de17a224eac21a5f22099df2e2fdfb", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "4ae7367682cecb997c37e4e5bb17a81bc1cf3278a87189730d5022241216ce3f", +"T3T1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "5399c90f611947d018c9e2b4dae26f8316349f4cff0d18347ac1e6764342e117", +"T3T1_es_bitcoin-test_signtx.py::test_two_changes": "d25c0198f64dd5ee6a1bb8cc627ce1de5ed3581f89188893905aa828bca4c490", +"T3T1_es_bitcoin-test_signtx.py::test_two_two": "8c10dfcf97ffd3700aa14fb1e93f3b8448214260cd025f439f10f7731477a65d", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "4e69eb5122714d37c5169e59fe53fc1b2aa1fca46520a93a7c9ea56f4bc80a0d", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b8f6bd647cfbbc3e5a89de6fb3d595c1410271911998d4b06ca1b11bd9fb9389", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "b23593e3753ded7bfb682f2012c5d6e675767afcd32114641fe9449170026b98", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "0895536089dede888085dfd90b618b457e38dac873f166a85a280f6169b4e993", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "4e69eb5122714d37c5169e59fe53fc1b2aa1fca46520a93a7c9ea56f4bc80a0d", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "2e28d94682fba083798e5e020ac46a8c71de90eb48945ce48b6e076316aa27a6", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "42b6392c1251fd68599c639c02f220f3618e139671a26d5079ebe235c959f3ec", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "24bb36d1913bfba6aa17bddd49a0a383e9ac6a9005a82c10844a57f35c84324a", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e5249236155253fb5fc22a4055f2e0d3b0c6d0f61e2bd501abf455190f7b8201", +"T3T1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "2e28d94682fba083798e5e020ac46a8c71de90eb48945ce48b6e076316aa27a6", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "0512098e467450c79aaa54ef879959a86966841db8287adac43df4368a085cfe", "T3T1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "793a877d506067aade4296069c6978f5603442a62e0c5460047af188c1843528", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "5ba88e432735f7cc7ebbc9ca1b2afa99a25348e0a042e7ea299746c5f9dac9e3", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "d38081ce3c0a4f7c6ad7a70c0d4cd8db3e645caa560871dbc44875001557726b", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "50048d6e13e45fab0394a711f31e3e766236b508f2d5503af7af6e286c10db84", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "38c479dc3f1cc4df374765b343cc2e1af57971a02c0659811f62e485181730c6", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "760adeb810c5f0368999dbedc629eb5f199bfc570dae789b739de496a95b269a", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "9255564d943681524043f110e598abcc5584d92eb68553f9125abfdeda50532f", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "07476221e177cc52571e6155cb2c0f252252b371f76a427f84a06510e42f717a", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "f9578046c30478efa0027ce14fb9fdf566397bb89844cc1dd0e7b244a8bc53b4", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "720fd263b9bcfb42ab665662a46d884cb9c98904833877785830c0434e61b46c", "T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "bd813f96adc6a17388803bc0dbcb71b6ad533f0ff17322be5599d087279c3b7a", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "d4b2b9596f4aca796bca82acaf1fe1f1c1265a497e6f52c8a76a048d5d2698bb", "T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c2653fb24e47524b25954628c24a0bbe809ee034462e38e078a31c765289eab4", -"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "17e06b7c58c268ffc4b59aece19362b1f7917f115b70be4621d22c9747bb6528", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "8d7547d33e98ac2867b9cca3120c1ebb19885aa81c78f23465f0c03fdb00e49e", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "2d0ab70d4f9f6c08722306a268e8f048bb8104901a9e9e4ea25961601769adf4", +"T3T1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "621322a1db9810cb703ab2dafc33f1e1ec354806568a056af8679af2e147029b", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "99658d7a5b2c02d5f80e16aa3befbeb909b5dbee09149380536eafd9896f47a0", "T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "494f21896dfc8a108d2d8aa92aafdedffca1c73dbf29637df7069a28575db651", -"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "efd13d0116644b1f745bfce20249f96a74bc0ae70fd82ba1b3731918d2c41021", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "31b83cd3a423e9500444fb25097fe4fd344b4458031e7eeed237739ac1fc40f5", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e0cafdb6463279c6cdb986b6b1e976bb0c98c95f23aa229fb36d33dd8fc1a478", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "31b83cd3a423e9500444fb25097fe4fd344b4458031e7eeed237739ac1fc40f5", -"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e0cafdb6463279c6cdb986b6b1e976bb0c98c95f23aa229fb36d33dd8fc1a478", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "f06f92f777bd7c57637469dbca117869ec20bf7fdf855b9e195e5725e851858b", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "cd8786fbf4efa0346c65ac1a294fcfbf70a80f2aa5ca3d7904ee63e0d7d444ab", +"T3T1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "85c3121db695922c569cd56db8bdd28f53ca0f9d203887fa2c07431b206560e7", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "8b86bcd0e9e4c3c191ea24268bd9807ff03ed2550d17907122815bd56d7b41c7", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "0809bda7876f217e170a40611bf88b1b80471ce25b3cc3ee7bb50f5338f5db1d", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "8b86bcd0e9e4c3c191ea24268bd9807ff03ed2550d17907122815bd56d7b41c7", +"T3T1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "0809bda7876f217e170a40611bf88b1b80471ce25b3cc3ee7bb50f5338f5db1d", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7d26e9f5f4b07989aca2a7fd1dcc07c577a97b798c365abe983402175b1c9b82", "T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "04595054208c5a5d9299961a1395171d155c35d15ccf2324b847abfea2781e71", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "38edf24b5785ba7a3a4c84a4b5d52acbb4dd34f5d773d690b6ca4285da30651a", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "3c54d31fc14f3c9929c41c336162ca01e866a6b909ac8f7f747b7d51d32c22f6", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "6b405427f512d84b364c57d729a95f45f0fc3a5c39855c82d14e253899a9c240", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "174e3d7308690d7bfddbc95cca60459e966e8941682df145a6c1405035e49340", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "c540cf4b4499e20afc5a4002e9661c90bd80ddc0cbf5a41cd82350b72c4a3157", -"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "b4157b03e937000474f4baf8df1a07e2fe1f7e21b6895abc44ffb0b380ed5d13", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "a6b09a36b90249d8479168a4fcddbe0ecaba04fa34d7a0b9d084e8cdb8b269f3", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "4b99f637fc6aa6f2e92dd3f39595b90ef86dde968a361e4343b5d9bbd4a0e811", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c41f124802792a79282543d422299336abe376415f756f525855ca1af50a776d", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a73cae2f7ecc9173a9359407c4cd0a8a379ca0458b7bea3127cd87c42e3a9022", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "ebb6c1128ccc39b0d48b079af890313550f6afecef5859f58cc2635941dd8f46", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "e599bb2adf8947cddf7f9271c69d4caf9db7c2e3aed576f2869c1356fbd39bc7", +"T3T1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "63247974fa450c1789ce27e3ac7bc77561e59c684ea8147a6367ec853eef31ad", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "714c01501b6bb6df038cab4ca458393dbd78f928e7d22cf4ddc7f110f925255b", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "714c01501b6bb6df038cab4ca458393dbd78f928e7d22cf4ddc7f110f925255b", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "714c01501b6bb6df038cab4ca458393dbd78f928e7d22cf4ddc7f110f925255b", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "714c01501b6bb6df038cab4ca458393dbd78f928e7d22cf4ddc7f110f925255b", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "fe15123a7ca6dce6b9acf4d4632d983e5661c810a55ce7c8963604a78d19adfe", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "fe15123a7ca6dce6b9acf4d4632d983e5661c810a55ce7c8963604a78d19adfe", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "fe15123a7ca6dce6b9acf4d4632d983e5661c810a55ce7c8963604a78d19adfe", -"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "fe15123a7ca6dce6b9acf4d4632d983e5661c810a55ce7c8963604a78d19adfe", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "8510dda751a447e9f733897541e447c11a47b87df2bd01fa31f78c798778bb64", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "8510dda751a447e9f733897541e447c11a47b87df2bd01fa31f78c798778bb64", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "8510dda751a447e9f733897541e447c11a47b87df2bd01fa31f78c798778bb64", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8510dda751a447e9f733897541e447c11a47b87df2bd01fa31f78c798778bb64", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "2f0947f347f9d87fe1e125b14caba90285c7a69e10575bf2d46441e92c180013", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "2f0947f347f9d87fe1e125b14caba90285c7a69e10575bf2d46441e92c180013", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "2f0947f347f9d87fe1e125b14caba90285c7a69e10575bf2d46441e92c180013", +"T3T1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "2f0947f347f9d87fe1e125b14caba90285c7a69e10575bf2d46441e92c180013", "T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", @@ -20319,33 +20319,33 @@ "T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "a286ab003500f31532f4d7ea0bf2b4bf4c39ab47bb81fd9bb5be67eb6c8f9008", "T3T1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "c9d939e06ddb2b22b31cd261e43d75a35279bb260910ad8559ded69e5a6815e8", "T3T1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "4ce4c23392243c1f96e4608faed631576ed597a282f9763e461f5e052d71a609", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "732c7cf901e00505783c70a107cd222a140a8a327d4503d53de78639275b5516", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "315dcd333e8ea0b66c8223b80e065f2f41531dca424c3ec13dbf80b6f2820f1d", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "2ad6f85e9185a993691afeb6680d6d054a308703f2283ffd078cd19842e8e483", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f058367659dd3b7f5ce90ee40f669375c736690ae7f34d43a2a4dbc00ea89dfb", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "5d0cd49cb40d60eba86d1d3de18807c53da128c64eba22f21b57eb3625faa5e1", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "03b9d4e6d98985974f0ba4102e81cbd4334e5033ae1fa0da6d5742fb2d94b8fe", -"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "35e7c7f1d6ed050cc62611d89b455f1bb5f664d3bb6fec0a1b3e5f8b9b5d57f9", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4738ab0e22933cf76f04e9c6b4ce3276d9143a8230611e1a30a6c31e00ad5988", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "21690466b42ed554295de9b05e7c9c62929407c77c523e253d45fd28b2ca24ae", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "6a8e7dc3bbcbe2cfb90a5b035b65c51fd24c4bc635fb57129ff511df6507009b", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0ad67bdc80a0519da7bb67852943441f6979a37e7c9ef46221d4813f732e32fc", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "36269ed73b31a79ee77714c09dec28a22824ff3dff6469cc0218eaf4ea190e5e", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f2c9e044d5372ba1dfa91fffff5dd67411fa27c4e8c3776aedd23df1ffaceaf2", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "9e395c14ec65cfa95268c390ac46fc6d347fbfb5b0a2c610a8741b0e1dbc0f69", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "01b455b191a65843518528200a993df96737602e00574a8d2ba943390582cffc", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "bad8b69b979d26b7f987484bddcbdbd1fedfdb1bae66b71eb87d2cb4b17cfca1", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "12cb6059ebbcec29e7dfb950d242418f93dcf2e2da7cdabdb34eb4ecb09c4b1e", -"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "6cc8f75f5e71c1cdcee1f29efc94afc96b257ae413c7c7a61eb0a70026bb826e", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "a47251ce1784227e231bdbd291ec8b748363d238cc36b8d4bf9d63ebdc338eaf", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9b965144e26dc7d3f220392081b1ec9044d9cebed57d5e478a8c04ad89f5847f", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "4341dc8c5131f273962a04db967f3678e5a35d52effb33cfc49b451989cd1fbe", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "d9d48982d0390b31ad49d6d840cc0fd9497b443717f485c2c078f2567b82a06a", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "5f9f84efab028e7637fa0e60749ebd6419ab4d5e7ee562e1dbdcbed49ed70a87", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "f5f31fdc02c33a0cb0b5015a32ea7541a8b92d25d9f63a803b9c706137e55602", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "00e844effe58a2a11bebe6be95503fe0fd783e69c702a7882f89f6aa75f927c8", +"T3T1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "0b446332b7d1986502a245ae01f6d86d283a343808a7377c2b53a33d8699fd8e", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "e36c10d933a466ecb9163611be2e5312271d338c32732e799af482b8224991f0", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "825f8eb4fa75eea03b74678d05396e58c79eba223507aa8b5871679a28438bda", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "53676446787d2c812d440e578200dce69ca3ec2d8906f72034accc5a5b5e5108", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "65cb33528518512c57399e567288cae848fae8b5a20584d856a48563f45563d8", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "1c58b596fb152455295107ba6dccc41c2ed4b6c38a74326fad772ad7fc41aa06", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "7141823f1f623549814550479dc63ae55cb262273da976b952db8de68085260a", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "2e28d94682fba083798e5e020ac46a8c71de90eb48945ce48b6e076316aa27a6", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "a06903a298a466673e4e5f33f76d06e84eda5f74b15250d6c5781e9cc7200dbe", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "49a38c80cf730cfcc0b2e86b553056893d037e904f1beeeb35ed19404448e6e1", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "5a7396eb29cd2f7ea5c433c5ac6906246b1c07e9650f5b2bc24c7f457b72aef5", +"T3T1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "d219d1755c0b6a63f5af98412a2feb731019518963e2bf40d9dfcfd41c511214", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "2ada162f08e72d3fd607b8804b81f0de44f68f0a8bc267af7aef968effd3374e", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "15e04f3c369d7561c8729a94a332c87d1ec610d0a8345304a2c58a4d124a3722", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "dc633c1fc78b6669584ba4f9c66cd69500f19edbb5564d6dee04d187d8a9fa43", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "3432904ed8c4bd4c769f452f8cf20cf059caa58939d210881706c94d22defbc0", -"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "d133c7f3622b30e35be20d7c669628cd4192db3afa0a5efe24d95d782358e6be", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "5ff1aa8a4101229836d3c9c7e6ecb4086bc782bc8d25156a6352641373b393a6", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7dea5ed054078241abe3b31e3dc3eec33d8c30f1b6148ac01168006f44759da9", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "88e4d8f6b1646bf184a273f3e9ef4a980637090c2949749016f11de27b7756fa", +"T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c8b36f2acf148645b06c5f15db90b8c654acc45539edb6f8577b080543cc2236", "T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "079af6c75173ba4177d4cd9b884e827bcee3f50df8eda4105c7a9e7f9347ce23", "T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "140235f549fefb14e1ea667923a22971ebe22430a74a9e5f45e06a8cfca32217", "T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "0a6397dce804438f3ee27372c3b6d2df30ccb63ce967cd887bff337e8cfc6d76", @@ -20361,9 +20361,9 @@ "T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "535abe6d684c896acd7cc51ae8be9aa0b46ea01639d8a6f85d83b81b40b293c1", "T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "eef28558c90552f97e8caafdf0245669315073145fb49ef1fb6ecd3024cce00b", "T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "800c901d57bca33ea2de3cba9565ba98019b371b9cd5aa9170cf980c4fe02b0d", -"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "dcf141348153cba1d1d0ee8673dd411bad8e4f54aefb23589d90472e459069c2", -"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d2b160c77d848a92cde0d69ad0c908e46b236ec91d2ee865913ca4708331c3fb", -"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "a64fde6ec28da4e87f16405a30fa547f1c17f9dc61f75d62988643f5357dcd48", +"T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "43b0985d5076d4b3a9962384e688d6b5bac71f2b493547cfa6cf41a45bb405d2", +"T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "8cbbf485553ed69801b2f24d5b4c67fc7e1d00ece791a0a615fcc068159aa973", +"T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "3cbcf98a7bf9ee5cf9bc0a43fbc3101fc4e9e90b24ac536e42f5596e4c9d28bf", "T3T1_es_bitcoin-test_zcash.py::test_v3_not_supported": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "79b9ad6bf4d2c927d2d4b631e07c8779c78c9a89aa0ce9c0ca53dfc786489f86", @@ -20391,11 +20391,11 @@ "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "c9b6ad3f3e8bb64e3258dc54645d83345a89f4cc93a99c4ef8ed58a292a8ed5a", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "47dbbad54249107636a65340b35efb2073bf2560f7bc8c9c06e596acc187e7df", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "8e82a2ce4d90dcbdc6c79b3e9b63f937e10037c60b9b2d8a22837d6d335a8f9c", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "0862855f92273fc9379989a85c691ea1b8391254800bd8284b14ae37632be18b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8d1eb1999c1293363bd35372ed04a199398d87c17a3cc4c9eeae2e575efd9b0e", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "2e427d5a5296e86904f93f4df66cd189cd9fb05e5d56cc2df25660fa5193779d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "048add69d57fdc842f305b2ac0926dfb22db00ffffbb359eb85883fcbb7164c8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ca29f302ea37c86834909a0b066375222da6023fb131c1f6e527dc201ed7c652", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "4c21bc677c77b5519205d96e0752ee063b699c532b52486a40dd0ad563defcd6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "a88c3fe5158d550aec9ff3788636cb7480b9db1a89195ce7e345380181e97aa7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "2c6719ad247f2f5ebfe9492819d233e2953c5d47d202774f00ce4b586ce62330", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "d76c8987d45e165ed58de5231673dc1560747049b945e0eb6d4f2ecb1139cf62", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "9df306486a4a877e45798200f6fe0a40cb4e1b900449cec2b5d2b35f6054e7d3", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "a59c400a6f9cb042a7232dd9c742ffa320376fdcad4c1b5474b991704bd89e16", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "fcfb2d27b4c2b1bfd91efcbf8a25b233c2cfaaaf0c447b0e175720c2865ff60a", @@ -20431,11 +20431,11 @@ "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "ab734169e61a6226157d8fb630e04db5753835f0044b3a0c12da7534c0cd69a9", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "99a701a039a25a751a4e947bcc6a1b542d0f59d322163a25b2879e85e3260c96", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "e53a3af2f5f5b0d026978bd0ebdf5a82f8c485c9a72da6dd16fe66cd8184ff5d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "32bb24f2a80814c4024500a003ff23a0eba6debda260dce8f044eeb89951e381", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "2d88f7dc2450e21e21f0ac913285eb55a0b74e6141fcb4622ce522714b34d099", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "8f1ee9f9313cf0d4181033fc520e4f07bddc01b78420d5d96252167bb723cc25", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "4ee60e44520367d245c23b6210ddb08ff92ba990bc9de32c718dae3d8c9feb90", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "3f854531930e6875cac067e76a1b3e06a1acc2f0ec3b45f0fa06d915799f0f8b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "b122d79e423d82aa4ff414369facce21f300a292570b2e87ce5a8cccfdd4dc01", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "3a01a1d49a401ec802cb506826dd1c2511d3603b7bb843487779e2de9e379505", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "601b4d499902d2345717879dae742118a6d489773d3ea5f1a57e509f601e8de5", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "24f1b099d811a93b8d152cec8dfdc087bfe4b31348f9660b50a1b31382a834d8", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "993358e46caca8049c8adce593a257619f49afe26a053f0c12667aeec9bf3c8b", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "bf078b36bcc665b22f7feb301c88e7c0655e43e8f5d1c1d06b890da28fa71b24", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "3c003e8bf9cd5bc7a911cbbd57ff464d3fa0762844add3f9dd5a59fe2aa56d17", @@ -20471,119 +20471,119 @@ "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_cardano-test_derivations.py::test_ledger_available_always": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "762f3bc20bab90b3cbab27d0d440b5d7d3338d8f70280f28c0c6d43e4de65e6d", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "5cbf9a07c2b1b7f23a940344ce06669d73b6d59d6709286244f5d546db159729", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "aed054238771dde87e0605d4f96afa30c78fa855fb1f03914f5467e41f9caadc", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "68f7686c8ffda999a21825e739f1691b20ca3471a439933a31a212e8199ef42d", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "314ceefb3ff079136e44d6a6916b0a0e68d148cc6935b0aff3c8432b2fdb7586", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "fc1ba1da06f446ac34cd5db17420143f33d924de1a6acbdc8e0f83cec1021c2b", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "6ec1b6bf597d2f999bfc875c01cd77758e377532655baac759ab0bbffbacc89e", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "761eda34e78c1e897f297ddd9788730ee67fb9eae0427947b42801dc24cd210b", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "55b62de2f01566baa0c5d8d0f8a9df054c009665d8d4150aa8d35d82cc89bcfb", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "743db120cbe98ee08ac422c24d9eeb0c7523c9797e9445c0e2fff02080f164b1", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "eb0ec62f1eda0aa8b96c6cdae9c2d1d3da1e6b4c4dd65df562a1c9f3e66eb010", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "6b51b64f59a6693c8c5ab1d5a33291406ea0d6ea94944ef79a45bcea7bfde97a", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "8d81c209c890b6bd7cd1fd25cd30b48ba7ca54d4241694c8d1c518525950213e", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "834feb8e8fe722d9c19e90fc6282c7fa422cbfed0b435d462b0e93ddf65629b1", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "04e2f0681769720424926cc4fd97767329a14b2b9045877086c5ad8d41c72ad9", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "5b4436e1dc5ad0a0aff648a476f2653df63b8c4aa702580f9cd56427878f251c", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "da0896ccf3910d7d89f73d417a0e42448795ad289f8d33eb7f20ee3b286e0b46", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "fb6d21f117b3799be1e70ffc8eee3ea5ec51bf1751a23229ab20b0476f6bced4", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "3d2b4a9e6bc59d6079b249655c7bf71944c73dd60707e54dad1144e4654d2aaa", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "23372d594dedbe70ace24e911923b2a32b4225337eb1318ce906e5269f4faff1", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "d64314224438896f08e3b02eeb7666537db54a992d7331b367590915027bc5ab", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "854a7e507c8e57799d1e8c36a5b6970206deadf3efc1f90c4a0f115de43f77be", "T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "a4cafeb80a9b4a622fc4f719be40e0de721e91cf6fd614a4891eaddcd6f602da", -"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "076fedec78a9397732f2fb786a9456d6fdbdfcdf6f396a936e3602fedefd928e", +"T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "f7d24bbf076a277385eb9c6ee153c74b0c44f451fed3cac8fbc91cee293be9f4", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "072a72c596b2445fb72056b14775a8fd32bc46f4c0bb916ac914f95e6b15a8cc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "4b1594e1d069d81cd5c2151e7582d07381e37835d57a18d1dc0a9f2c913b90eb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "7ee09424e3544e5153a47707b8392a6c89e4ee4bccc9fe2dec4ded88ac06586c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "85cb9c64a4d346b049b493f9e3ffd4663279fe033e7fb47bf77014952006d12e", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "f36fa4fabed3d7aa01ea3a96510bd5c5a6d0d053b1560a107da80973e127007c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "d9585d813af4b75c932a13c25f3e4f8639f50bb6d659873fabb52f917cd528bb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "ae80bf27248bee57aa11f01ed91177ec0197b56662d704e5d47dbf204fbacb6f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "742ed8bbd51a436e582635b806e2905ce66809ae5760217a2b381e442e78e7ac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ba3d5982805325964427f9b107407f5cd365be8ef21b468154584a1c1ee715fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ba3d5982805325964427f9b107407f5cd365be8ef21b468154584a1c1ee715fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4a2ab20c187a6295b1d2db72ced28fe552b56ceccda18e870bed5f6a6956fa54", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9a75cbc0e925b9523e1450e3fe2835986c5c26a2aabd8bb8d3d24268d4c9bf63", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "670778ed05c5fb477adcf77a1e1b36159120e655324739b2bd2d27591d1ea546", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "1444f8543981957cc9a6e94fe235eee9e515d7c7ff37a0697a905f74262e1020", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "ec7aafb31cc29c0e072dc51b25231f2a2f7c17aaf97af9b6c4d24f3976a11f4b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "f992dd0509cd58a251d5354eeae753ac3f49ca3f28e3d8265d7aef3d0754252f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "fe3486f9af72df573c81c3b4aba06998a0b3379cb45eb2fcde1716f65f9123c5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "50deda3035b4384b6f01d682db69ab1412f2769e7cb63b8cd3682c85f8476a06", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6c439dca3b7589f7c41958181f95a1f0204856cbb1626f6deaa29aea7effca2f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6c439dca3b7589f7c41958181f95a1f0204856cbb1626f6deaa29aea7effca2f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "6a99fec989f2612ec3e1446beb769d20e7e832fcbff1be16f08e0aaa54e6839d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "197254aedb97f97bf4d054971b843efa24c7951bc4813fca32ba7876a55c3c6b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "73500e567f3ca5fe423d89f43af7c30261eae1e034391ecb4e075968edc16bc3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "ae8e4c548965332fc87aaaa6e4ee30ded6263a559b736484b5d33a60f496d3f0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "b4662481c8671653ce9902633e228808c551c0544550ebe49906a77c9b68e629", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "69282ec8fc86ba1dbf880497f26ee18cab043d85f9ebd21db33c035c880ec8ac", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "ab0d29d7b3fa0bdb7dba8e8c68a8ecf149fd0176af4e02fb994d79563244b48d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "991859d8d4730f0e54fd493abe6219a96f3c7c50a3021fcab819e5a53b6fdeb3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "fb0644dfc668260623d51cca2caf3953ac7f8895ada60636e87a097ca0f8e98d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "b4662481c8671653ce9902633e228808c551c0544550ebe49906a77c9b68e629", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "69282ec8fc86ba1dbf880497f26ee18cab043d85f9ebd21db33c035c880ec8ac", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "a3b58d26236345cdcda6b39edfe073b758d24b4969a5e5b511578867ac9c4891", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "452d9f6556c7680f246acabe00d4fed7ce15a0fe86d648c711d0647319593f62", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "bfaae660c7dbf90f8bf3a5ea06d14410f624617301d2bdf38e1063296a3a16ec", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "c423fc767bab5003737689d8b50aa1210c1aa6901d5b5bca3dd4ffeb55b2a4ff", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "0bcf973a126729c75a850f8c3cf4cd14fca5c9a2bc5bc47e96761ada629970a6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "e4e25294447987d0fc926adaf2dd6c3acab1ab965777fe9630f9047ab1eb623b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "3a46caf37e2b4239c6a0fac61cf8055c6499ec665b79f9a787f59021bec0da46", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "41bf1cb2527dffef10cd0862bbaa1e33fd8324b1da430480e554db84d66fdd31", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "743f82f20442f95900f818c8c960cccebdcb60b4ba04f788eb736e908af702a3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "cf5be1979526994f6926ec76dca063d08cdf2f4643618df514bcadf026d67538", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "79ddeaa094c53695f00f6e6bb1bbf6fd499f35b449811da2a8dbae94bd55e136", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "7a24de10448a6d40353d45a9134feab5b0ca68ff84c7ef09fbea33062e865cb6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "10bd57d9027e53692b6eafda87407aa30ec22692d959fcdeef6984c484f782a0", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "a15d270256401f823433274d8d47849ff8a021fc3559214c6fca9d71f9f256bb", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "f0f30d0bb5fef4ae575a361ac09a18a6df685039e061ef271834d37e28c2178d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "10d58ab651172e3b39340414b988697f9d2aa01b7dd49b8564df9f2de6c32db6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "e9d7cb21871e77e84bd466b7de0fbc4f187177ad1f3cc29ad147b6d9fc52eca9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "8b1e10c30fc17ca46c95d80b87154fe4af4080f927dd972da9792bf870e9790a", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "dee03d67407212913def4f6e82bc44703f9821f7025d5c77713cdf76ff5567ce", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "7db51df75fbb62b2e1e9b5a0a19b9e69254dee38412e8159a958df04ae0cde65", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "b0fdadf043aad83c7b8b2f917e29c89becb632c2dae5b89fff5bcf8fc2b9016c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "9c71c6abf0a7e30cfac4abdf87b4274be0adbb56171c1d0d0845b363f178edcd", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "895962d30da2b46c80b1494205b2efded282f547ab6af0b5e0d2636c482dd866", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "d9bc345826c9a1fa2e7971b67bde684201b6d65ee0da7972401c703677685897", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "5d795f948428f1f5d9336d9da332c79ef22ffb3928d6f069a1638e17815f0a0f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "3f69e555adb2dcfaabb0cf2639ced402a281633da8531122887a1ce808433103", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "7c8a8bc8d4ccbfa78ddb641f4f225582a79943d3f76cb2bed403e2948ee7e49f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "539f9dcaca0f8b08fe45ca0f2001a7fb1596b1ff85ff7cc6a057bdf7fc621668", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "b762b719949eca6ab47acfb08e3abdf0bc01022553ca10e234d82aeba209e994", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "8599f6a64252904033e536fb25d364b287cda479120cca114c48a51ebbd98525", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "d37c5b17a20de6cb137100e99f03271e8805e04eabd3b0859f417a725dd2c40c", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "ded1bd44e92e8d5681a6d60433596c100e0f52131ed95f5a748447d0dc9cf2a1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "fae49f25cbe51f67932b3f57f2a2b6e7b9c20cb44efb33481f68326d7534f140", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "cfadfde9c4c3f7feb52237e7306f4ad8b812013746fba4f4310dd345dfdfbb8f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "56ae53bc69936f9a2826e3f0d148aa55da5496aa063e0f67494fb83d5e41c4c5", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b9f58eea78cb8dd7aa66449f52b163862309a3af5f6b97a1280ecaefc619c378", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "7455492d9020444fe080dfda10d7569b1084cf13bb7d0a3ad9ae5bb880ccc599", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4de3d3bd8ef9d4cb7c278967495679546b0bb8ceae277c7af49da6e23f79c10b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b6f484b5e42174b2a89d6fa73775da1a6e50585dbbedd1e4c0e6d502f22200ed", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "233196b2c9e3c99a0f932102cf84c545e57dd626adc02862d24038404a1cefb4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0551790103340e6492638ebfdd9b9519728046d37ae9db124ff1c9809b7e8143", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "eafab3011dcae4045e78c388e0247ae542613526c60f396608e045455f5fa933", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "4d8ba79a0f1da23e7c182c1b7a13d85c406536a7509085b4a27f597dc524292b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "f8400d1a02cb0b2077d1f3afdbf82fe3e99416d7a776246a7b6f38b159a7268d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "4cd5800b7f31c571f13ffa274b9776c3953b50d75a686352bb883a8879e94d57", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "19ff47448e8051791f75045af535d6c3f888b39d573d90df2892e34c96fc7baf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "69700ffa24923c3af10b41ef05f56f1e329661b1563ca3fea61e2d8d6d7d4705", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "e7d06ba2ba20d794a5093bf6e0c26492cedd1b6ef20a74df6e88e34d573aa83d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9e2f473b1efb2e432baf13d90b21c56d4f2c69451cd7c82b302f4129309c7877", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "9a8dbd41cc6d71993a185aaaaedd25d51e6a60b195d652187badf8593b6bd4e1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8d7af66556164b3cb24b20ae009618e98dc11d435652de3e28c30be5ba95a24b", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "889afcecae819d357811c27a988d1f7dda38bab3855a3eaf0a3624274099fccf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "889afcecae819d357811c27a988d1f7dda38bab3855a3eaf0a3624274099fccf", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "f1295b7acb263dbe022f994e733c99943c4c4c6f497c40e31c538063f4de5931", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "796fb351a069e621a6b98221f1eee6a7510d8bf82cb589cea9112f449840c86d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "796fb351a069e621a6b98221f1eee6a7510d8bf82cb589cea9112f449840c86d", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "c058bdcb91a8b5039b2af27ec03932aa3b68c552525ee8e337d0f3a4c6dc6c91", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "88b68ac4da1ac3d1719d7eccd5a9b68264f56172ad6a8e6946b37bc86aa69cc4", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "982f8dc98dabe68e3191956a2a3bf34861ba7223958f73ee0543f993a0652c39", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "a6ba6b3b83b0eded692edefc9a9ae997f0dcfd569cc2fa0fa19b34fe209f02b1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "129b24dc7aade632408c65af4d869b5bf0f9686ecfe09e0ea8c299b3be746347", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "90852dd7a296fd6b7f20534d3d9ce4bfc1b6ed94a7d0cbd476e7788d2aa67e00", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "3b5e6ee36eafc85429b3c8d4f15563933ede004b0f2d7e86f40c72ec0bcae573", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "c4e6770c44dbfec0c256b288145d3e863b685ea31762c07452c54bdbfd46aeaf", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1bbcd65c84130fbde972da475fd46bbb05a3894178cf5b14c80c9406044c309f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "781e1f5f3c7c9d940c3b649aa831eca3d4e7fe1cc8ad2d6842050c705cce6377", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "e887cf031b36cb0b8a7951ef7f08e5e6e66c133e62c8af3a6b1ad26c2e410a39", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "e887cf031b36cb0b8a7951ef7f08e5e6e66c133e62c8af3a6b1ad26c2e410a39", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "b50848335d1aefb614bed6ee50e1e24063e0be8c66ca5db065785286e6d3d816", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "ebb14d9669976a621c58c141dcb84e592acce73a4a1f5260a7fe16d0c31e3726", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "dca12895076a3bee0e200a6439f264947ade242d9177fceceb14bd4d79a3a236", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "f43fa17506c12363b96c4b1b0a2574164917b35856e0fe1eacfb022d07e072c7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "293098e68b2b749a3668e8212b6aeba514d0c1c152e33b14294b33deb648633b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "e6b4707aa2ccff775c2fc05e0c1bdd9a5e2748d3d255a6cef7219232fd8e4461", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "b575d9281e8a730093a4e761cc8743931a38047b5d0d537b14edeaf2182e0633", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "1e9a14b72e9f8fa24b9ed7222f3e279af3b7039bb9d2a105b7de85b5680b0a9a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "ba3d5982805325964427f9b107407f5cd365be8ef21b468154584a1c1ee715fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "b5b770faded8f14ee6efb946ef4bf8798ad6dc8a9f43225072d46fe853ce1784", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "f43fa17506c12363b96c4b1b0a2574164917b35856e0fe1eacfb022d07e072c7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "d3b845811cab62487812513c1b2174582633b9d9c3e9f840f552bf433be4c8ab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "e6b4707aa2ccff775c2fc05e0c1bdd9a5e2748d3d255a6cef7219232fd8e4461", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "b575d9281e8a730093a4e761cc8743931a38047b5d0d537b14edeaf2182e0633", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "caddf38553410c637e38fdfd9efb901850a112d5aa02ea1e40be374b499b1d1d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "f43fa17506c12363b96c4b1b0a2574164917b35856e0fe1eacfb022d07e072c7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "b72c0b68179a488c356b453432ba9634f8f1f5a1d7fea404b6158c16cf2f4d3f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "5ab2cd1ed6205352109fe0a12e6df068c5a96ddd8229f264371f9739b7923979", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "6d6ed34abd8fc316a580ed3971f2a2c842efa26c38abd4f206f99bee5e92eb72", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "64bbf00f79ef19b71fa95a271d0ec75f99bd4382017442829f60307fad7e5425", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4a59456e2c739a3ce587eedbf9eed30ea04548ce8738536061398fa2b289428e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "926ae92bc057727504a6ec57601a3341f86095a27cd00e0c8ebab59fe0e3e89f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "88ac1576e79a1d14fe44ef19f1298b18afe98260553da1f0c37c89c2c4083930", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "1079db51f8b624b7c93e46694e070262a5a3192d93a2ab7686559f8ad38f3610", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "8e8f758a3b3b38296a930866932181cb48f0b0fe8ce12e36d1f1b350431e0a57", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "ddbe275836e3ee299da93418eeb0f19048fd85b87ff3180f922d548719a04721", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "bd3f2d6464dbdd80af812c255dcc5a81d7e627c15db97b2df2e5fca59d4fac8c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "32d2a9ae85450c550210abeb727311b5ba5f220190203826198403aa143f7794", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3549efbda1076465f980e9b771b2e78c3d79bdf04d6aeb31538f2ae84b2421c9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "60c7be474c219a7537c819155e58a4b745b2056b4bfb6d5050acdb2d0124291a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "570b246b537edd7a8b561cfffc0fc8e1166492f70de1ab81d75f67926acb2874", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f6df563c25678aeac8bbeca979655bb91a7f933e91d2340e6b10e2f72dc43acb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "00971b3a910888f5d9fa8ebe165454cc8bc83041ba24380835de1f751e8176d7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "c4ea24631ad478257b47067ef882d70acb56f8031f2105de6f56b64cf13043e9", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "fd42f8f2a52a2dd39f3b6dd0b5731f3554e1513b6646d0a64843de653a32d202", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "cb6fce06a57941f352f3baa067aae55e01505e13b83f1ebe31a5a5b727259b93", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "0046b8e39e36d0abdb5eb83eab4ee95fe51a65a14e285249b0ed9663c745a393", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "7cd0f3e1c0f431bee17a97c132e255d19985413bff58442d019e8aefa95b89fe", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "c36a910e8c22786f1c5509622f3f70d9abcd51322fd408ddfc0e2a6429a0cdb5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "c36a910e8c22786f1c5509622f3f70d9abcd51322fd408ddfc0e2a6429a0cdb5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "8f18e7b1b34480aba3dc6555b9a84d18e7cfc75ca97fbe7de82d54464cac1f99", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "b050f7095e3fe7e99078961b9eb56dcee609b71f4f458328c312f70c8278f1c8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "a18ce399fe09f4336207a9db03bd82fcfc898fa47b707ab73a9f5bcd0a39b50f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "cb68910cb204b5ee50ff6edc20eedc8672d9e6951bbe06de0e75e9450901e6e2", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "efb07ddb11d302b246ed0c30e9d73ab5cb316afeb6c27874aa86bce0e86fda54", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "1a4cd558990db65ed584782b3b41dc9b71333a7e60a2c0d9bba9ac2dce6ca8bc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e6aea4737e86e4190593236e1a200a18a3c23b8870aa5b7adceaf0bb57047d9b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "24c69f00e09115e689938775785a41dd5953eca4143a586ddc6682d79e828c8d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "f43fa17506c12363b96c4b1b0a2574164917b35856e0fe1eacfb022d07e072c7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "91993c3fbeeec95cc3f52d554a42f73378e12fe86fc113d10d9eff51f19314fb", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "2825a68fd2438c0a6913544673e7467f86169e630a9b184255a26b59254a3ed7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "688b6e6b73c152f160f808dcb507cc8eaa8d288cd669c0ad52dc704f9feaf232", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ed3a80f37785ac683ec81e3226a179976643c67c4b131f0298a12082a97223e4", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "8aa9c1cccf151fbee8814d9fcb2a9580b134ed351dc9e04de99a9432397bc013", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "06fde8045b8e76320eab6f8ecc1891f262a4eb40a60b242544297f9f95c27f66", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6690a761c94d4f68651d0245f09572ab1b698c91ff9eef32fbc6c0d78328d00c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "fc866efb5946931fcd6f0bddfe3b785f4754789fab33cfb0d7b306c7a575b9ac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "550392a19f3972f928555150b252cfb9b38e1c12be057875dcde425e2fd0d37a", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "660bc57db1b12e2a1b5c55cf00073c06e6cd79d1e9095ac8e65cadf4783749d5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "600abc80dfbab0c8c6eafd4103b02dfbe89ab3fd15bd88000e991344c7dc817e", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "f43fa17506c12363b96c4b1b0a2574164917b35856e0fe1eacfb022d07e072c7", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "c163d776bdd527b4b2e499563d36c8e0f24278740cb6ae88fbf7771b61c1ba45", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "31e1816b8a883f45d3cea27be6a1341f74882f98a29f5c180942e5e735e55a7b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "611d5a2fa0de64cd5ea203c46745a81ac9d469db8b9540625bb8cf4582ae9477", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "a251532ce0a266dada1ed672af60c72b3c474ae94023800ab2ee4b41d0e1608c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "6215447b07860109adb47a3444713f75e77383019b103c09765ef96b9063c43f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "0092bafd3ad6c0e6e85c1bfa001d37571e0107e41696a57eb8b94b039a77b5dc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "ec7db2875a72d790377992e6b34f2f33fa01191c099402fb79adb094a5aac0cd", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "7a44200ad4a3f673ec5c5c9beb454c6e3a7099bce007cc81a5479232c44447b1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "55e04f2829b9b1991d34482bfb9c51914b075926b9167fbf7ac8b7856d779dd1", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "f9ae05d997714f8842c04d57cf90b1c1a6d06e6c74802e9661ce893e05becfab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "f9ae05d997714f8842c04d57cf90b1c1a6d06e6c74802e9661ce893e05becfab", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "0c2d744dca6f069acb1b4c4cd5a5bda07ffaedc2a56e79fe79ebe62d1b6d92c5", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "f4487065674572c6559f451548c3bfec5e7608c7de3c11a1d6096b5a2e2d2e33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "f4487065674572c6559f451548c3bfec5e7608c7de3c11a1d6096b5a2e2d2e33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "d8a893ec47d8b2ebf8cb6f68c8f1482a808b524d5c8edbd7660cd50d263f71ba", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "f8e31c9432c68dd24610ceb1a7aa96a8a71358159f6c7582188400a2d3c353aa", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1d8c9e57cdfc5ad3ac329842fe2053730853a63de792a96664f886ec070d2dda", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "7acea6180ea074bfb9b90e8123bd17b6cb0208d7ca8b6ef18113e6f89846cfaa", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "e1cfc9b2d7e70e16474b6cc3741859c15890bb1aef0e1df1e60ee204f2b15945", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "90bcf5eaeea359f5f7e6410dcba55f0c47004a49f12f9477ff9b5e37efd0cf3f", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "f79d92a9548eaaadaf713b8f0f5c710757e4914a6bcf968c9ae97a8a0987abb9", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8b3c7c8dbdac84b4079d9b4f18dbebcb044c065be3cd14c39d27ed9368818f30", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "ba3d5982805325964427f9b107407f5cd365be8ef21b468154584a1c1ee715fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "ba3d5982805325964427f9b107407f5cd365be8ef21b468154584a1c1ee715fc", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "5e8f3ff2912be6b4526f7b3f84a9c663f0e3dadb51a739df22eba0bd2199efdb", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "db715f39aaed75b26dc9a37af173b6666f46397c1d25fb8c98ee34796e208dad", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "e22cf9d08db12437c39c8786006a2ea79cab792968d30425f39ab1471fba8124", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", @@ -20612,19 +20612,19 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "bbe255875eae9fc589cf5c7fc40752e6bf1c60c437b81ecd4ef35206de758dbc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "5c965f8572cd49e043147fcef0502631dbfb126e3383f1fa57a17ad940dda789", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "42315250013decdd25dd26d5bbe47ef279d03db92d4d4884592929b686c85d33", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "16b2021744df5de470c2ebfc45ca070cc2343e5ce5f0dd6849425b2ee42fefa0", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e287601f22a8564677522122fa2a45690fe1275659dc6eae65131af759b5c1ee", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "f43fa17506c12363b96c4b1b0a2574164917b35856e0fe1eacfb022d07e072c7", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "09b33e5c2c03bb08b7ff6b1ccf164ee0e988046ea516d8bbf524248ed5ef1c65", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "96d00e648e3baa6f308e17c42aa9a740e116b6f32531af0131611ed88d5755db", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "16dbe95e89f58e8b80cdcfadf376dd22efa563290a6788fc99939b22ea5b1e6d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "6bd8b9f1a2b2ea00ebcceb67749b4b8c08ac2432616126041a21d34e7604c48d", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "cb498dad3d37325e96ae2b0f09a691c90caa5dd949e72efdb3004f8b9da80f1f", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "ce8475c3c01f88a3bb3e9e697564f598fb6c043fe15519efb4e710786e5df49e", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "722c3025064eb7bf7489901e6e67aa2f14c9571ba1c41e4fcef3f6c12e935952", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "05b070f725d8a8c477f59927aa309d9937046da6845ff57fe376bcc90683a7f3", @@ -20638,10 +20638,10 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "05b070f725d8a8c477f59927aa309d9937046da6845ff57fe376bcc90683a7f3", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "05b070f725d8a8c477f59927aa309d9937046da6845ff57fe376bcc90683a7f3", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "05b070f725d8a8c477f59927aa309d9937046da6845ff57fe376bcc90683a7f3", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "96d00e648e3baa6f308e17c42aa9a740e116b6f32531af0131611ed88d5755db", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "435321819d8493478af6a6c58c3c6e6de2ed86479991e8e4cd7de7bd857208c6", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "c170c36bc5c564d18a5436aab095c45d87557ab25a04eb4e3c93b1644966b1ff", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "511fce49a32d439a388a0dd00400cec6fdd23db9e4b36ee7955710e388ae7439", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "6bd8b9f1a2b2ea00ebcceb67749b4b8c08ac2432616126041a21d34e7604c48d", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "da8a9c8792083e5a84fad3f7568e04baa65ce758a617efab17187799322d521b", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "79dbf1682dd24ba2a460cb1ac9857d2d88d876274bd8d442448744793bff14c6", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "3958233ea9329ec484b6432292c040dbec8235ce44904e425c40d55228d737ee", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", @@ -20663,14 +20663,14 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "251e47fdc60166d2a69211e4ba87559c3372162f9e624eef7ee8e7ffdd807e8c", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "31fe5a2730c0ac2991e967f3578977d8e7f12c0ac688e368d286579a1ac8e8a2", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "c36a910e8c22786f1c5509622f3f70d9abcd51322fd408ddfc0e2a6429a0cdb5", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "c36a910e8c22786f1c5509622f3f70d9abcd51322fd408ddfc0e2a6429a0cdb5", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "92fa3cedef55ab63fed36320ca83e47d9eb369d67230bc2b4932ec322baf42e8", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "2f52c840ee2cabb2f7a4fac480d44802c0d153510c09425b3f3941ecf36637fd", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "c31e59a2aa3252f71aaa65f91ae6f233f7a4c042fcbfe1b66c62566f34b17bec", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "c36a910e8c22786f1c5509622f3f70d9abcd51322fd408ddfc0e2a6429a0cdb5", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5d75e6fb867a404e502c2842b9c63aeeeedf000b3bcd153722b5d8e05f7b14d2", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", @@ -20680,14 +20680,14 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "c4e1bd1c857f8ab85f2df99bbb4b6599e673a6bd2bc5237a854c10a8e7a779ee", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "959dabbed2e13d59724346bacd9a32c2a50e868d66e28c319b595d600ac6b5bb", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6365a4843132c7cc1209ab6b227f404478f6ab32d16f0e606cf7068141e85280", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6cea9ca55692504b6d486c454b2f75a644032ffbd3e89e34975f10051b7fcc19", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "b32c7a7624fcf5fdb39a4f5d5f7d79e95a490b29503a274fa1640f8f4fdf8540", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "472dfbe9461a274c54f65449e763ca28662dd8f7ef900aa1278d3b9d974d14a1", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e66b66e1d2d2ed75c964a7608896f301cb242b16b18edc286542ad960e618ef1", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8dd6167d88e35f1950d4174bb1014befd38373339e63b031202ae947d0516b93", @@ -20709,13 +20709,13 @@ "T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "44cc613ba9c8ba5cb07fd1d0bb0fb44fee452a81dcb629fe40d39db6668bd387", "T3T1_es_ethereum-test_definitions.py::test_external_token": "20631399e2f852d90cc80e5f1fc147050eabf5c3d37c5d794a253ef2b5eeceba", "T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "cfa5e6ecdecd3975df20d7a102acd5a5b210ec89a052be3326187a1af6189fa0", +"T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "78875cca7efca24e980e0744c3a4d0ea3bd78ffaaf3156c95c43b5d522b57284", "T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "94be7e21e93b63815d6be200f0a823eb4931f503a8aff65f6b2bb7dcb01b6a89", "T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "3c606443e8f303acceb7b493d32d02a23734ef2b89e7cc30d83d64d67a1a4b2d", +"T3T1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "111e2e119667a6072c643444bcc52eaa9b6a8e38a3ec298f34a2f02b3f05e098", "T3T1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "3d05185a22b61dd09640664cc5e714e29b97690d9d89df55b16f3d64c971a935", "T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20754,16 +20754,16 @@ "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "73ca2e593554e6dd409484034c068494d439cc92d0385e48f7acdaf60f72a03b", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "233dabe99a97ce63cbafe19c0d776533ee9ac38595f17ddac7ef847ac6ec59fb", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "e0551ad3a1f0572cc1b0f48869cde14351446a9190e99f93a60f37081ce2ad60", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "d6f7e7c9003c273c7ad5b9898218da5b181041a6efdf79ac2f03de07fa04030c", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "ad42f8c3f79cc49673fe8f1c124acf31908768450183e1bbc535fc73f3c83fbe", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a9d8cf39c0033b521db7a88c86d2d8a1a82e2729414d49eecb80e9ac5500ce93", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "e0551ad3a1f0572cc1b0f48869cde14351446a9190e99f93a60f37081ce2ad60", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "e0551ad3a1f0572cc1b0f48869cde14351446a9190e99f93a60f37081ce2ad60", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "e0551ad3a1f0572cc1b0f48869cde14351446a9190e99f93a60f37081ce2ad60", -"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "58b6bd7b63422637172fcf1bc53e0532234aed40aed00d67abf2746e4b0f98c9", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "b534168b87805f5f0cb979adeee5398d7ecfd4ca2c6fd7171d0dbf3f3ee76985", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "df3e4b5a9be67d1087af1b58aa039b06a5118af82f0a13f2e942026452783ef1", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "13194c695bb2d1916d030f13898fda0476bafcf1f9017aab3bbb4ae1d6bfab8c", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "e75a07707d80fa043625cbe572b68979058db732bae2aac328eb5e01b1415c63", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "452e607c48f29cbb61332a1244f366a0131665ab268afe8085e9dafccbf7c164", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "d6801af6a1dfcd798b496b029ab76e0e0d3707e2e19740510c62b915b6946663", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "13194c695bb2d1916d030f13898fda0476bafcf1f9017aab3bbb4ae1d6bfab8c", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "13194c695bb2d1916d030f13898fda0476bafcf1f9017aab3bbb4ae1d6bfab8c", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "13194c695bb2d1916d030f13898fda0476bafcf1f9017aab3bbb4ae1d6bfab8c", +"T3T1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "9269d1cf1b2f9a9eaf44b67401067cb3aefe6b3b922eeb6fdce18e5228682f83", "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "1cd092216390e2ad4495dcbcf21bc97c82b848d5197f47a1d07d32a44758cd74", "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "84beac21c999e4877e01d50d0fd03660277ddc4cdcad172b73b141f0f6f7b25c", "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "87e47c53cf7ef6b37714d6e9c639b83420675c7a423165a55deb2d614e4cf97f", @@ -20782,7 +20782,7 @@ "T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "e4421a0a4950fe2ac7760388678d66933eac236cf986aa781b90fe306c5db9b5", "T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "66b694c8dddb1f69f88b30caf7dc3e8b82728e0bb0036074f36bc6600a83a67c", "T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "7e1d6a7c583ff8e1bafbe8d168fdabd6158e7c709f1d0c91ee8540219cc4c5dd", -"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "c7ded90be3c91a60e04fff08d4b1759a8731e496fab7d26a0428105aad1f05cd", +"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "463660bcef98fdbf02ab568313ee0823fe08e2f1610ee360c4abd0cc6347651d", "T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", @@ -20796,13 +20796,13 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "220d11a91b096f3afe1634ad77c06c28a532f473509e25036d58173fe2314a9d", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "ef29afe03698043501f2ea32da37b19f8c9be7e4f1842e6dc0572e6589adba92", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "360494bd22211b6dda9f779c8bb11f09188842783b45010ae261af64802db841", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "bbda81a2fb147caec5375cb51df28efbcd87932b27c489dc9ba6534e0cef5947", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "9a631a7430e0494ba16bd5eb32b2ea86e1be1e16f15ba3dd5bc857d690b56e16", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a8c99d7cebbaf46b31d7dc0a5eab08afb710a31988a46170085b99bfbf2b726d", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a832bc1f3fbf759b19660ce7c7f6f926ff87fa18fe6d8130aeb666bdb5151d3e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "eb0c2332d2308b7527580138f2ddbe1d3a5ed746da227fa639014a26b9ac4cbd", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "086342492ed12262c5d6bc5f02067005d87a919391d05218814fbb5c8f679723", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b7063bda23766efd821036b0d36f4caa78b60d70a644c0f2f6dd508c50d5123b", @@ -20817,26 +20817,26 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "eb87ec4167450d453f20d064c61b288ec013a97706994272ca224dcf971b9208", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "f26871b641b24caf5a035864cf5e71e4b9e2bb13444184fb7856d5fadaae1eb4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "f4c6c645799ec88d16647dbbeffd6a8ed5e14ba5e72e3526c8c577b87359fc8e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "94f91bcf01dff5bf685a6526f36fdce9aba95fa6392e62398e73e4da10f852ae", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "55f994bef68d8bff53a1a85d7a4e363140a4560fa8edaadcf29bcb05664409f5", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e05f4dc3bfa5795953aec7ec10253ce79903f53f19ac25c59ef3f88080b9cb54", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a832bc1f3fbf759b19660ce7c7f6f926ff87fa18fe6d8130aeb666bdb5151d3e", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "eb0c2332d2308b7527580138f2ddbe1d3a5ed746da227fa639014a26b9ac4cbd", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "5c2d4a2a4cdb950b9f443ad00dae583b57e25c5a90e00cc24b97227a2a3e3bfb", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2ba6c995da8e4b15949f316d8eecdfdf66ef185ffb20e23f0787b774a0527e7c", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "607bd7f927cf65cd813e85864c546282d8f0954795f17bede5f85450fb431dfd", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "ef29afe03698043501f2ea32da37b19f8c9be7e4f1842e6dc0572e6589adba92", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ed5ad4d8c7ea0cee8eba728c7f66c7f41e600468abcfd7c90ec3382aec883201", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "bbda81a2fb147caec5375cb51df28efbcd87932b27c489dc9ba6534e0cef5947", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "1e4617c52c0a6313a00556bf80eb804c93a88ea05d2dd244eb3c24469165976d", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a8c99d7cebbaf46b31d7dc0a5eab08afb710a31988a46170085b99bfbf2b726d", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "fad918d2a349b02ed238fd229357f9ab270e2cf15bee34aae673e9b52db98413", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "23f0844e096e68d2d24bb49c76276e377b50be22e37e68b817e1bcb760ac5172", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "5c2d4a2a4cdb950b9f443ad00dae583b57e25c5a90e00cc24b97227a2a3e3bfb", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "f26871b641b24caf5a035864cf5e71e4b9e2bb13444184fb7856d5fadaae1eb4", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "66f9d90b85283d33b73f81846cebcf715e4d6fd9b1a2886a2d990e24625b7fdb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "94f91bcf01dff5bf685a6526f36fdce9aba95fa6392e62398e73e4da10f852ae", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "04992ded513d50111942d273b4176623ef8901e3272eab0fd98d1ffb2c3c3e7a", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e05f4dc3bfa5795953aec7ec10253ce79903f53f19ac25c59ef3f88080b9cb54", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "849d0c942c3f3ae4fbdd966f9f9f2966fbddc3751100d8c9feab0a5cb224e332", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "d0b4829d235b2adad94ab75e32f7de7c7d864e7809b9050011d9b96115fe5eaa", @@ -20857,11 +20857,11 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", "T3T1_es_misc-test_cosi.py::test_cosi_different_key": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "dfa7f68df551863d4ea67f19ff449c0936cc1b41e6c185e88a81fb64bac29713", +"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "5fc740e20eb86a03ca9268ffeab74b8fbbcb4582cda1d6e7817a7b513e2a047e", "T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "dfa7f68df551863d4ea67f19ff449c0936cc1b41e6c185e88a81fb64bac29713", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "b89f37541afcf01875e58a47e19c5c086653477f06a2a77f52df59297df194c8", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "1b6efcb2bc398f26121e970bbf6e7f2b632ad1eb928acba5f151dead98882e26", +"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "5fc740e20eb86a03ca9268ffeab74b8fbbcb4582cda1d6e7817a7b513e2a047e", +"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "bbb31d2b3478166c29a5035584d9c1d0e78586d820314e4368ffe10933570ace", +"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "e350909e7434d99e24e4ab2888626da075449e0fd9fa27aac87487886dd8069a", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20869,20 +20869,20 @@ "T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "abc6c1471ec5f28d8991055e4215d23ef3b409e577a22ea2e7fa85fb279a4ab8", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "c0cac2956a44dac9810ea9de933650a9cb8759d3c590eebda0f216fa5b7494bf", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "3271640310cd8d23e3a9ef515077a92cf7bd37c2eae0b444ca9db2d01a362525", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "7469ccfcb9279659408371c36e6768770877666c80dcd88ef95e6d5274deeaeb", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "ac6d454297d888ea72789cad20b66e2b80c51e4aae36d4fe17973b8f25b27703", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "ccb0ae3557ea737aec2bbb118e4900a9973d01ee0bf0f5b223edcab5f5c35dd8", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "ddf528cbe46a9d05bf65cfe5e854240f56b334f4877f44091a34247289a51178", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "8cb0df27efd22a6a9632c87cfc589c6fec440cc62593fdcd30446855110b71a3", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "6110bbcb787295d23199d419c262d9f2879a9771890d169ed66c3c0be3981c22", "T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "4436153558f56adbd7ddb24f8154c3e1cd9cc6ee00d7691646eafb163b8b48e5", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8e7ca86417bbfdd0c0b69131f2fa0642068e89c36bfc61196ce2bdfbf87a63ad", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3af2ca0bb6c1329401665a1ef26af47e2e40b1b0588aeb9db08d36ea8ebc23ab", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "7fa192e91b99fb2d51f2d19d0710ff9e9a5c332a7a73e5d7058dcd3f97a62fd2", +"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "81eaaa5f962ed57130157aa9a54dfb188ab67f6cffa88ed5c150100e434211dd", "T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "d2cc9e9f3e074f18c6a07a47b1c093a4a0fb89e14a4813cda257b9ad336f1ed2", "T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "ffb381e0b7d631738201114fefea18fb4fce0df66da37cd91624af6309b66f55", "T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "1e1fffa60ff912aafd720ad67ee2cd90ade2d9e9d46e1cf0734cbb549146f7d9", "T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "0873efe54125414339f44427afdde8c7126b6f2814635899eb5fa0b1cc1bb6ae", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "fc47625a3f603dbe8a0db9d3553b9d7281561b38c4c3fde2567eea644a7dacc6", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e08d043a6116cca9d74765dfce2ff2155767b35dbd688bd95de98ff06e589d38", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "daf3043a91993cad60c9f091364e2f13ac58470c610192c992a901ab4d67a0ad", +"T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "89815a33a926b8ba6b4cc49fed381dbd22daa34e5babae43e9632e89b4fcb98b", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "8802c735611bcf51f8a395b095b6546ad36c1e0e27be6244a852fec5e20a7398", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[128]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", @@ -20905,7 +20905,7 @@ "T3T1_es_misc-test_msg_getentropy.py::test_entropy[65]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[8]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[9]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", -"T3T1_es_misc-test_msg_signidentity.py::test_sign": "940be1b9ef8289a5aa258d64be75f356e613aafeb9ed32957d26a8d06cfc0435", +"T3T1_es_misc-test_msg_signidentity.py::test_sign": "111fa67c709cb813d9ac10fd89dc50cb7cac772cd5f872dbf0402715a983d9fe", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "4ceea07e3dbc713e086faf4005cd554a2b9cf6115852374b90ad4f413df1d1f4", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "48e303100c2701625f0cb096aeaeff15634dae299d0b8685dc01170244caf9c0", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "bcc6e600d07887a176f7eeb11c3e2cc9c412a64d9559e3fe943255482dc71604", @@ -20917,55 +20917,55 @@ "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "76aee3b6f51da4fba787240e6e7860b8557fd9fe9dc53dbeffe2ed40adc62cfd", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d05aad4cbbc8832c8a4600ebfb45737919645a52689fa7baef3f307936fcc97d", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "3d6f4c8843e955afd4101debef4973d11460a9207327fb3e74fe1adcf7af41a0", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "f0525601fc6234f481301599c0b6aa34e3e31a2838e8f2a4398a20eaf15f5b60", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "cec56fb3796ade39ed9b3fc01ce8ce385ea4abb56d5f953add8cc6af68ba3582", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c10634b4172eb0a1d0daf786b0e9511076b9fe1af3e6b4d5a905039b897656ea", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "594d87b89a426e691f396554a4564f79004fc1136eb6cb46a582f4b8a682ce4b", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "2f8b630dba5485ce95a4b092a4b1b2fb9e4d92e0604a8500154772972d7bf586", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "d9cf1fd510ddd274e089dc25f47b9a5bb60893e06b9c774fdb3dc8a1d0a5d55e", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "9651140a1828aa272b2b0495f914dbf64dfc0ef981e3d4b88af11146a1352613", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "56aee36f9d9dcbf19e16e15225b0969affc77cdd764d0d89b55daf45bedcf3bb", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "7664d21364d921bee239ef801b562be4d7d47e597cc4ff8a4cb8b9686f9bc8b9", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "40db68f87f230d11dbf47a4a4d5483b187eb53c21857685dea43d776f27ba2e6", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5d929e7d2ff82817b4eb57962c9350d37972eebefc390a80f4c0439ccd4f239e", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "57083863ab7c6411785a43c7bc59a6c410df269e6a36b68e34d878892725df84", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d8dc57c8584e74f4dcfc6dbd630685b2c84a699a605fb51be1975f60f2116cb5", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "5feb0509ee6616315d19004a5dac77c1b1364752bf2344fb0a50f4117e3fe9d4", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9f6cdc9903b8e0c79a32ddd952c33a81afcfd177feba40b8e356611abdc89818", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "d9cf1fd510ddd274e089dc25f47b9a5bb60893e06b9c774fdb3dc8a1d0a5d55e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fe7b90b815a8d3a5b70de7bb0e40ab24ed73fd9df43622e7fe12604a5f27c506", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "fc0acb89aff3ec2c91ed46286aa8a9ef68b07a367f6eb05f9a49490b4d05538f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "552e500701e764ccc0a4b5f52173589e511ac6d7d959c7262fb1624112e12dfa", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "09b80bfd965fb966ba0b771aec48ecfcb23953851106a8d5f2c4da948dd0d448", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "1f6026bf49c2856d43511799d302589f312287950baae27e89bd33f53b0b88d8", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ba2f3b871c1da68f4b578eee44c50d48421c1a4538c10f375177c4e9729137a0", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8db135e27923f5f57e96f2882318b67eb3740eb63c4fc8e88d2c4b60a223951c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "631bb912f556535693f5ba363aae4f1a01e99b1f59e55d7e53e0ee8164bb36ce", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c5508c0596a2d176191331e5f9fbe608d360e7f2290189060ba6c50de794de74", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "31ff14b276c12f33b9710665c040981a7a298f4c80c3a43bc40ad6958f5b9a8d", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2c83eaf612f6540ec4e318cf419dbe803be694c8a0b51bc320d241d671042694", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a44e61773c2e5bd1014a3eaa5aacf33d0277783f2e5e4f5076cd47359df88b55", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "59de79f74294b71b77329b9b834d7a9e3884d9fb4b5c822b5b96c9b5265453e8", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "21673581d0ec1a06031035f2d77a3b3a750afaed1c40da629ec90e770b2783c7", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c87e4e2631bfc7cf11575691e6926b685d08fc056fbf7082a24957f08839e9d7", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a4663c1e1ff0fc52a87702e8ddcfbd594d6eb63809ddb1e36950e0f550a8ed87", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "97316a6023c1473cee32b731d589a9dc92f5475f3acdc1e29b00086d8c932730", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7fb670113b48b8c39779d917a526f1043b477736be867a1417544b6515e25b72", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "169d0851a59ddc4a02e0a73352e371ec13a2c2ad014717c5578b90d13fff1b8f", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c97e6b756a77c791fb30953d220bdd11d8ced8b90bc9d1863c58da6d64c827c3", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "802ff568634ac2d156100f8db9e437a3be962e3b571fd5dc35226c52e32e5093", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "11d9d8b2275d8a5098e9e2159f7c6e70832381267bc2b670dd105c3cf033edc5", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2b11f7167920d97fce59ad69d21e985a26b7f71cc01ef14253b060d87c760e1c", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "cd288bb72f139fc127c5897aa69686ab08530a48b7a5a19db8e56a058dbb2c5d", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "97c44c3a1b73e971aae356cea65eab47315aad355434ba197518134f702c210e", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3f60679c409b3043fd593daf2b107c06aa6447a21beea0111c12386ebe1c41c7", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "892c5b0b66158ed157a6b890606d569849d22790a742a768ade7b54ec5ce45a9", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "64716fb43f4da0bed379fe340ddc903dc0a338b1c72b1b6579b356d46a0201a2", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a0f9b8b4ed1395dd75585fc46ea2a309deb769a520cc9cff6df29fb123160964", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c728243e0333a435cbb567d25cc1f9f11b6c21fc646d76449c8478e18dd292ee", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "63136b7e300a902fc00f39682a5770afd2d27491adf5f6be156e6ad8007232fc", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "11d9d8b2275d8a5098e9e2159f7c6e70832381267bc2b670dd105c3cf033edc5", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "baffaf07ed5a24adf942afa72f8249ac526e28076c4c6babf13976948a5a25f8", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d13986ced2845d8edb6e4d7c3ba5a878597fa999ffd6e650f5ff6c3e0bf1a171", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "1e0a4aa56cee727ebcc02286137e44596f7129940abb64e6e618ae774e53625b", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "095640bb22f2a40d5f1c29dfd90745e4d2a2e63d66333672f3df60b4c5c1b252", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "6ebb8db786aac030f7fa244ea65756cb9657a1601d7b02fcc2be043fa05956cf", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a8af7bc481c95357b51959c290f396fa083f51e7272b2b33756e568d8b41798e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3dc24ecf1fbe182a6b08328d16abdc652d0f976b9766b96ff5ace9b90fa9a926", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "98c21d0e90a3bd6237fdb0e5bcfd96529a3867fd4f66271e6d37d30c2a6cb44c", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4e66c203cb3f52c41c9894fa812596eba512759942896098e727e2ab3cde484e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "7098e64fcd93d5f74331023026249de274d9e388052bfefbb2d6c1edac7091cf", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f5b91c291beab9185204fcd47d6d33eb059df8562c99450fd96457a819269cec", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f6d85106dd3d0b8bbd450df7c24c6b5d8a3735972c52ab84690aaf7c8f055c3e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "90b0cad16ed61686c1b3560ed167c55ff3c1322171b6c8203963a748f9047b3b", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2a06c6a7dc159dc10b5b7675e480eecba692ef053126f87f01ec58a879b7eab4", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fec1c82350c2cd5ce6274028f63aa6f528051fc184311d3acfebc982207a7879", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "dc3698553e11a008e61cef04a95febf50cc4242727a312fcb19d01219f7c6e86", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "3250947dbb2dfcdc5835552dd1f04dc3a0a7d5b0cab812a69cb8d05d048e117e", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5994c09a792afffe90a4b821d88636bb81f2abe96da6de3e1e724c86d96d7dba", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "495df945eae80c53c83ac1be361eb3cb9ba9336a04a4039826fbb729e1fe8246", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "029f6134bbfe2727661241009b924a3359391e5f656effac9008cea26bb4596f", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "01172d4c33aead03f91ce7a3d744519b55769b309d9ccbc130ef51d98a97fe64", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0667a3a004c4381d20fdb395a7e5f7bed9567b76623d1667aa701add147f2db4", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "47737d5e83db10d5d247282b0a5428994a5768ba3d3b33b542352335c65c385c", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a08f3878051f2902063baffa7bb4b61ea1230487ca12f8e2a6d4bf95363cb3d6", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b3ba79db3ef2bc07552e52384d1eb2b7a889b285c9bb84f48c4cc6eb4e9ec207", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0b8ebaecaff0e334a0d8f08707aa8dd1be9adbbad8e8f191f3eaf77ea31eb2a9", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ceaf19ae91eecea3b66be7a07d0ffccc868738a851c3bd0f6ea67e853e306ff0", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "031774b81cc3bcc573464d5454e07cc91010c6c92df3b6f9dc0248754f5afa24", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a7cb86899ba31288036ff92f0bdb0127d12a02352c430624069dd3accfe4baab", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2171e180099bef5679257a3a0c404faa33d5ce4f8084e809dc242813325db9ff", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "870efd8fc9f8585a309dc93f57490b9ed286006e4f8adce58a8cc077a3185910", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1e5840d00919ce05da33475aaf732dbf20ee9454a1efac01528a27742ac75752", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ee093205784fc8c2bac72f31db6e5e038255219eb1ee488c4422c177c6f7a11d", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ce6541cc06f4ab247cfae60b10df9f1140c83358e395a284b3b2e56acd7a4a3c", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3969f6fd9fb280cb72f8b3552f035c84e0f44c4243fa003d050511e3ffab7bb7", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "bf43a6c22b64b6e201cbe8a177b200e86dcb41bbe05dba55c8fad36cb2ff6b6d", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "612e84676522be4b88d9f320b3162b95a362574229ce36a61fffa5584d09be0b", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "715cb83078df96676b262e635747d5efd9ba1625bcd2568f6a2ea5542dc12c04", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3dfbbfd2df95333f0a9e36f3b8451fef265a85cce702d4c22433e3ad004be906", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8776e6600cf307ba7ff195811e5d4f9387c5c7c0b26cdf0f9dd4391a9e4accfb", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e8c7af705ecde219880eded6feef86444f4559aba438ff09c0da6db99f436668", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "89bf880bda758eb19f52ed52e067db9eefc50ae733ee22b5fb588c1503bff329", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "225f1137de97158d11ea2764a86265a4e3f75a79b8f513fb2ecea8727040b5b4", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5d5718a47541b038f212f045964e93f42e5465399399475494ff8e19231d8609", @@ -20974,83 +20974,83 @@ "T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "078da2a0c8705dc26478ec2d4680f3e70e42b72efa72cb3f0fdaa4cbb0261777", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "8d511740e208bb929174a79279011d3b07b01c984ed6ca0c923bbadca6a7d091", -"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "797715d86d41983cb0172bdd1013b8c325c945787b40f02673138a29a7ab3a48", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "4b679f5cb96d989418755c99012447c637432b702aa0daf199acd6340a32e2ec", +"T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "29f55a931a8b2fa0919f9772a23dc3b78ddc3439c7c31de3ff47343f951fae32", "T3T1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "0584211aa1847ff8c1db27965e110d6ffcac8a22c139cf1d9513be709b8d110b", "T3T1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "76306a0b39f7994b41bc6aae81be7ff29d112bb7a0de79a5d78642f34858d84a", "T3T1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b3f501108c87c7db047bdefcbe78d70e7035f13eac131d24d5a26b3fa436f90d", "T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "10b7115050d9051c50f197fa6082927e2d2bf856caf6ad70fa10bd30a7e1450f", "T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "d4c0e2475a6497d958d32055fa449e6f2618889e41bdd20fade1b10e2360f7d6", "T3T1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "d1d358b4712cec2022698b0fd2264875feaddac26de3d0c7625ce20eeae2e296", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "f390e181479fe1ab8bfcb84b40e5769846aea045b5fd042c8ffb7ccd103ef51f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4ef4f37dd9166fd73afd48af2a98c938e8da759038198cede76c12c917b18fa4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "93b5c825d72e16d07f87b17631324a6a3b220b4567958237f4e454bb33ec1d11", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "e82c4ae28e85732a40aa37cb7e3369435eceaf1ced1c2a8529a02253e0d9636e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8be54fdf47cbb00496314b50700aa6c87650a108dcd507805c635a483828fb00", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "ab7db0b0eb500308a02d8b89b38199ee1c891bfe7b682cdd69df539b9e50eb6d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "8cc32eae6d6d34310dfc97bddde5ce074947e5c7593005df777aa0602d9fc0d7", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "ffa0f0f9ce26743233a21e22579156a9034d42482baf39499491c6fedf194ccd", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "dd2e8e9a1a1e93ef155f88364b5dc1e844eddbb9203edb66af958aa693d9bc8b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d6cb88342ab26b6da8ed309f04aafc34eca1e10c0c4d7c55c879c9b3e34eadb3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "882311bce41544dd10d76cca97d52918d6b67cdba14379e410b3e22d0ef199aa", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "a776c33e61847fe4f50e2865f8765d192fc12a96f1fe819c6c677c03a546a398", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c9625145545bc4815790d7398de0f5f5efec5589f08993ef6e7a89f040f164b6", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "e2fb6414170c65dbcfe8a3fdaf9a3d480dcaf396f97a5d3bb93247bb2586e378", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "363647c7d6f7ac17247c9a6bd57a687a886138f78e1603e7ee8d0b808b5fe8ff", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "341a0f461f0b70edb1b5ed7f74ad882bd901dda73a8e9cfedecf0bb7f76d6fbe", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "83ce54dabd2681be74ead8c34dd5725e54ce35f7c9668bac69666b3bf1d56965", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2829ad86153996b8e5f5701e55a6fa2688e2cdf10281e9cdf9149738f0f006ce", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "53ee33f80416f01cf5d6c7f071fe4895140deba22c9d4bb91c0ba55c09a91396", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "6a4fc0cb3dc4a66eb6a355baddb36e9665e094a7d55acc428ddb753d5b78a79a", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f5f4ffb503c60a00e8072d640811373d79835208e1cb55c3e0e459fcbc809d8e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f5f4ffb503c60a00e8072d640811373d79835208e1cb55c3e0e459fcbc809d8e", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "43ee64b045e721e38a3f075d76c005eaa3b5e574fc37cc36682c1bebadb68739", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "ca49fa3fabf84844c5171343f33b58e6f778cf8fae3c30818ac7c4cb8a066722", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "59b61eb11a944018e37566e52b7ee54e3a8841f419d4dd6a506eb91a726a5db7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "a3d9c1fec715bcd5bebdb346b610fb43aebbdc7f9a37a6cac3f86c44c56eff4c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "acaaa742f0f82eca94aa81cf84f62070658643b9aa0531263c76553c1006cbab", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9fbac30673c3905ef8d81bdaa513ab99f5e9370f48614f765a193a6fa7148d71", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "b2a17f42978462b10c8657d3fd3848a8f56db40cbf11c68cd457044e01d297e2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "7a8cdac87eca71e33717a99a06caf491c75d1abb9198ea236742a5c7db0b06eb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "262aa7b73b9dd2d438bbc23f31d1134607127e9236ced539005af95c2211f43e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "17f0b2dba2763a15b3ffa827f3bce8f91adf801e15df6ac0497ab7edc5d37717", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "906ab91843c037e905cbe8dc3e6d8522d5c3da8c037a312477e25fae0f72deee", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "c5f1e3c0830a679abe780522db898823429e7ed2092d94535e0ba0dbd8bdf760", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "a640039aa0e2b6a1d63c606109e824d3512fc63ca4334ab440aeaf436b6f51f7", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e8bb3f8dc1c96dd390dca3f86ba9726ca244bf7c7b0ea7460022a7ec326500c8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "14c2e151aa406eee63b24eb79a3bc25675f5647aff272c97e1689f9d5c1492b3", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "65ed8c9561f229ac26fc42b32cdf05f5514e9e0d6441809a68d249d6a8ce412a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "06f64eab63f8f5f061d8506e681d29730594cedc77827dc30f92288c8db3df90", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "c7970f3454c49878e48f7cdb465a3157b6c1a4dfbe564d7661c21810ef1924f2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "78344238d049ac65b75ceccd4dc227b484fb2a8e0ab61d364e0db0ea7be80670", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f031d21d04541f8e936a84bfaa4fc9ad22d9c708d8c48229eb221ffdccdf0cfe", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "85ff908fc3a81fe75445677b36ba2ac28095d5d8cdda16ce2eb4f966dff59103", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f750e369c0b70878d196d9676f4691f316d026bb8618931da57cbc71defb8241", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "242d36779138dadd19e59b6bf5a2d0945e78a99c9b020794922a9b070430ce67", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "242d36779138dadd19e59b6bf5a2d0945e78a99c9b020794922a9b070430ce67", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4a32f4f8ff8b547d313a1031e2763be6209ffd34ad801809efa556ad4223455b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "64afe82786ee462d1f30f454e6ba4346c6436058beac7f3dc990d5b58e07c1b4", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "5a6d16d7eb3b500045c2c8f4210c8bdc1d59c56330ed0c90bb09403ff30c28ad", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "1334b4b81ef8f7109aa2ccee6c1ac60351ac8d520910e328e187d3c57d13a771", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "17fbf888029892657bae9813bc3448f3c9035c4f19ee6efec395028bf49eabc3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "591f37217b89bbae6d06efa411bca0bf91332622bb9c68cb6da3d93a42c4c547", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "d8e40d7e9a516ecdf57aaf80453603956e6873c66b4e5a9b6baba67746453705", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "4ad3caf7d152e3a7c7594a87828b479883ce2ba7e04a6b8d866824363affe5c3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "606e1e4c4089d05d431a5eb5e350872f7c273827e3fb27741bcf10e19c9657ff", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "ca0794d1dc41432ce85b373ff24dd0e094f0f1b470ea578a887893515c2003ea", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "e9fd9708a385422dc7677c569c9973909b521671aba533067430484cf094b938", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "5b4e0680784641b263dd018743e222094cf192cde799d08e56933c208ef80a7d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "5148f04f007b21c0e1bade23d1d319798b73490b8dd224e26298482b4c7d1fb0", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "f0ef391dfb36996dfd3a3087b175f0898a39393a510cd77e62569d3b5aaa3854", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "00f4a27b5252bcbccba183da7ac34edbf2fedac7ae498367d453e9166bc9e7a3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "6a745040a6a9ac1d46386d632a5430ab58830f41df1081d61b0daba13dae270d", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "1c8c7770ad8e0fe4579984d497e7d29e895eabb0a3c58216167509b517a324c1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4403dc01077699b566575ccd7678f905d0e8b766344713307d659989c0d67169", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "eaa3dda2133c41aa9e072417423c7924b3ed0df41682e7818d90a634839365b4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "1eb0da97fa75d289383693c72d5fb080f266fd3d5dbd494d0adeadb4b6565d21", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "06f236a631f48f6318ce3fd58f261be51c5618371282eb14bdc093a0349e899f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "305076f45325142efc0bcf61bd4f2a73dd3d87704f8f5f79ad50eb17428adcd4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "92d7205f9b6caa2637af17318a369646ec6b90995c93f1f451049a9f627effe2", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "7c22b79d185ce9551703f34dc9f35ae389f2e0e7e956b839826a53daece42341", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "64700f5cf5c2fd727d1bc820c4857500bf1f3b22e0709fcfe68bb573c3f704c4", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "13cf7343ff43f961b0f663773a2790818171052f0bf83476e62d1a6f61bbf7d5", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "12c38af43cd48efd97c0c164bbd6041e0f915b6c50be34b92521bbfa3c430f6f", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "708f52e28e94b7e1ff3dc799d38eae167129e425a96a8bda91f56d57e28c2cd1", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "80f589d5a45899e3339051983377aa618a1f7cdb8154b548cf15d1f753acadcf", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "00165928eef3130ab79c6e9c0a358a162138d2325a88c5a3a194ebbe96ad194b", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "79decae3ad37cb062a0387a6b121e3ac3e232e7010c1aa61c63f9950e59cc773", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "875614ec1d7db6a6f21fa1f15889c0c28de0f74336d7e0c5cff254e81d158281", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "5e5a4e26fc5380aa78d6eb797588f887e6743952fbb5de1d2d68ab1a45a407a8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "1dee9114a82521641512896020d55688a870c3169f083338ac6b7ae92a1c4334", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "060675bfb1db39232a3af57153450939db4e88c51e75687774d271e2188ebc60", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b595e6a5773bd5692ebf09a09203a17659fe37f2e70f755267fb958fee96c376", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "d408b05d1d19eb92464889d1a14ca1c9d9fe1e9838a4e8daa3e1818cad52b700", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c0baf24383df3a4c2c37f171c02ebd70cc7d56d47f90659a8cf9e49f6224c8eb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "cd82ac4ca5c7a92cb9d701f70ea770d26078decaf11b908857731a1b71b0faeb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "1c5e917df5e42526bb35358d22c1026c46d0f4833480a20df00408ba4f0633fd", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "add2724b83ae2128a512659314d68ca5bd25cc9c07c67c98529caf7f005d0a75", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "c547c173704310449eb65fe6eb7ed0e2867d245f14f4739dea3958994ce93acb", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "d7076cf7d28d23e60888093bbb7a8c128f0bb1e60a1635aceec4acc0fd971c1d", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "26cdce240955474897299cd5e3f8287edeb710ec81dcb4a07d93c9715fcec762", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "26cdce240955474897299cd5e3f8287edeb710ec81dcb4a07d93c9715fcec762", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "adafaacd50882eec5816c13fa56dec22bfd24519efc93dd7ebc3f3af2d98d167", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "2eccc45ea6ada6a51f5234a1b3f29aec7c4d7b28497e81c3283c50458b4a9f55", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "4c051af4b3bc786835c11751bf0edfb6a21ae423bfdfc5018300c4d05e3c2b1c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "c15c9f952953a454a69f7a1456192dfa14839b66a5ee5c195b46b921936d2141", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "5c32880a1dd8f4ddad7423f472efcc8d1338c081b9f08700fd712294d2c5b19f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "a1482876ff3650368f9e04ae50d6674b8fbb9f56d46fb0fbdb0901cae0ee7706", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "531f0ba28fafc80592f5b983269b6e4c834c2a2be063239e87af57432bdf5df4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "95811dcfced32714be6391ec16572d0c575e9a0f9b27e927c1a2afbba9db688c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "21aab9cfcb423d9edfd106ae1957bc2cc5f731dc50d8a9ff947c771c4ecb897b", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "f1818431b4d14aee1be92d425e5d8df28491a75367dc84bf6d2645118a426223", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "2081dd007c485e00c420de4383ca08921c8669d1af25c3470de55fe80de49e0e", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d0d5b0440645b42afa9e96d6d511d93a7d9e7873913c11a977ffb38a6686df6f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "684de5db7f5e69987ba55e2668b7c0e548e6c17335fd0ef682a302d74d90fe2c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "87d63650b8b651d7db237e4079f8730cf8861d26ba0d98c2e24e8914362cab9f", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "056481687e89c900314f318692665526eca8e2a834c090e5f198927803dd7f03", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "fa3b7a4488747dcb9685e8d693a541a4e03e1d72c90366b48592c7766f9498af", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "fcf0a92a610b4bd0b9576f1a6888fa30702478828b136409742ac91192eed3f0", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "a49c20702f005fb64e6d01b2fb5cb4823253a933b08e8bb4583be8a344bc7f8c", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "70b9e89a42f518aeb26df4cb65d74311688138d9f6c65e8c6c12ebed79f773d3", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "ac7e172ebc1b231161242292736d6793ea14a75ccda732437ce91aa9bc969801", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "a2c73dceeab1e00f8c4389c3b6b2deca4b4a7496b8940b9f73ff67beb2a83b18", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "748433894a7a828be86227bc5e687577be0dd7e5b3795179982bf41700957919", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "25e857e9a1d3fd2b95bafefccfeaddd6e113b981924bd9ae02307e4cb8bd21c5", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "3cf643eeabf811a0129ff7d974c9d76a048fa63dc1cd70deac6ae7e3fed600b0", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "5a6d16d7eb3b500045c2c8f4210c8bdc1d59c56330ed0c90bb09403ff30c28ad", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "f3ced918ef3433b928236767456a7460ae9e862781099ef4f92619633214a1f8", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "ac3d0111f4a803aa263fe1622d8c3dd4d7247c4aa2f198c64783961b3514f3ac", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "4867ac8fbe0ca96fc6be38772d3f5577fd1d74f53749b40949d3b3832a6665aa", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "1e6a1c8613838f6d5d1c696bb08ee79f58546d50db24cb1f7eaefa933feff5db", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "082c4f6df45e9949c3cac1a646d13a4b7dea5a360e3e05ad223f72211c5d77f0", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "80acaf6216e8158ddce1d960dae43c05aef34abbbbfed87fe1b730528e7b5702", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f3053e45568eca97cfbdd18abc5a6f4de3602fbd0e2297054143d3f3281e3473", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "02be66931fc772fadd07a017275a8a251bdf82ca15f1fdcdbd34c14c81d27727", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "a9646d8555204395350bf848ceb7cb25c088310b4223e76edcfc8a339db56712", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "4914b448bd631dc3b726f94f4f96d2ab6da2f8b5fad7a9366d1828667c9b1c43", -"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "514d9b507a05a9a247191366ea64421870417465f6d09ca634705e833fef724a", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "dd7f8b9a1755094d0425f82679aa897cf33a3f4ee11dfde62d4b40cee043d9b2", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "0c7f4d3acc9bbe63823a1f07770cb17d0bc02685e738049f18964da3a72535ca", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "4ee275e5ea0ca0043e966f7af9a199de42e488ce85f24d54c330574c1c8a873c", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c1bccc8861403923450d3434e1c3b68f698cf95eac5df41ac5b77dbca57d44d4", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "7ff25ba7b45d01582e344733f1dc0c8cc89da8297a2c496296f8a5ce2a543ae6", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "3db2af73a5082494fc030b94f51f85fc8cd0d6f2c828d076992b907493911f0b", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "dd226e7f4f0644fd9b53925eb4fd9feff1acf31bc673b40ed2d9ed99d4814679", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "0d63bae6a2dd8cb87af36198737a77c3d9a7836cb90d1ce5be663562d4da66cb", @@ -21071,70 +21071,70 @@ "T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "7cedf37f20e4209357d52c3db2c8a9e96dbb196858b7dc695da47858016ca37d", "T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "29c4355a9179f851f0e82f7d30fc4894b1e09d734d9506258bcefa9c7a4b3695", "T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c2902b47f6db00e0ce4aa03e34ba8bad29b04b6d602addb379569aa69fdb2693", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "7418e0e2e6ea63ce6cadf08371afd4f1bbfaedae7e595cf052a937ea4e588960", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "db6ffcd584ea678c75f70aee2007f50366b6e71dbc36b1d2cd7664a045c7bc28", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "2cec25b8f39b9a10aca2727fee877ba4d848f0d9eb385a4c3020e9035d6e23b5", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "09039d992f8858b004c0e79d61fbb0dd5db46a53c2cca92b2dca7ef855e32b9d", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "0fdbc3ee1462b55673d93c932b0bb4c76d3fe784ea8f229f6012425b23b5832a", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "14e6a226239429332ca51a02b3a7acacf81ce95f2a3e6783603f1f43a74dd4ee", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "e50a0f87c0ac95662ca3634e64406334e24d281731ea1122d6d7171c92dd1624", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "e9baa23c99b41fc98119836e456d4393b08672f76dc0b449cf436d56a314e2b3", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "9d595922d4359340fe429d70eed6fa2c3bc3c73b5d7243c76873ed06ddbfeda8", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "fc3e8147978abb73bf4bb37ce84cfe4d2b94fe37aee35e7ac89247ecc2f3c002", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "74e7754331164027cf15157cc5a8e61e4552d43af483f3c6894b0a53533dbe72", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "897209b260119a4639d348e2fe7c05e9962ed96dd39e8f00997f0d8b9be3a55c", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "c52300a8a9be4f5017918b7faca9df0f860855bdbe2fdc2c4c02097db78cae4c", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "2e495b8b6f176360e48d180ea563dd44df0f3c9494c2bd343b65c951447001dd", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "b44d1d1ce09497404a2878c095ecd261df3e1faad0ed3041514741cc1a68851e", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "b2b0430838bce5f98a6e728f51fa60cd5f136ea38980ee324164129a707c6a91", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "a28f6b3e3e2850718047f29b64cbe66f528ac59b925fdafc20bc16eb4ca29e41", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "bd96bb08499461cb817b4e5b5b44a8f810ce92688f624aecc746568c53d76737", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "a3838e4d33ca2e671d3d31454266099395e023111feb4f929717076f748b9fc0", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "8e365787b0656d8b13cccbbe7ca4c92bd65b610c0b3d769143c5583721d8700e", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "bb3d48c2dd7d2a5dde8a48564687c258b05969cdc45b35dddea506cdc28c6ce6", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "d1c791dedfb9fcf8fd6408c7edd94976715f0fb07f72c2a1f77d9c629c09b760", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "5daa3abbd00bc6e1213331a2052dbad3b4cf42c7a9520db7ef5235691884fc89", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "543f97cbe6b360b9b7820833439d2ff610fbd39e60afc4ff6f35c3ed491bc5a3", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a39283eeac7a2f6a420d288540f8f4a24472f0aa3f9a1002d9caef9a68699642", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "b8a77001844d8a78fe6181226dfd9aacda1c1759922e94e0030976c4f68a8909", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "ed4a739c1e414b7c833c019a129bb7297767dedfe43bf8a2d45566e1419dc962", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "c26e63735d5aec8b7a5a0fc5031b4207774a6547d6f90fc45a711b0e80e1aab2", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "b510d27178903d732a757c21710916e67e28819f4e985aa6fe82c6c95cb9018f", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "a28f6b3e3e2850718047f29b64cbe66f528ac59b925fdafc20bc16eb4ca29e41", -"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "6a63d2376341c8892d5cdaa7d85a3adaecd48161de82d85595b9650c2d0b714a", -"T3T1_es_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "2222f68a64f0c3ce247e36e145bbcb6065ac0873fbc9fc66cfc541df141fdae4", -"T3T1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "2222f68a64f0c3ce247e36e145bbcb6065ac0873fbc9fc66cfc541df141fdae4", -"T3T1_es_test_authenticate_device.py::test_authenticate_device[]": "2222f68a64f0c3ce247e36e145bbcb6065ac0873fbc9fc66cfc541df141fdae4", -"T3T1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "2222f68a64f0c3ce247e36e145bbcb6065ac0873fbc9fc66cfc541df141fdae4", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "d9ebe7756ab918a916a7ea21f966ffc7d93481a4e05e9188a3ca3172cdbc8407", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bce94ee86b8322e6fc394452dd9c23b149ba88e288ac8e0d92ef885b8fb1cd50", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "4c1a6cddeb2a6ae6e5b345415d20bcf957f7a2e4450e1afa5e5e35f7d27b0cb4", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "ed2a9ec6c9c5879fcaf3e34c56d0822e02db9cd9f59fe21d658de2b4feecab6e", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "324def35f7316f73c615adf885b06d22078378f02516e9f9171b9e9782b807c7", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a1e067f9a82b6c6dee412399b2d3a2f88df6e47a0f77040f3681d40f59432a28", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "d4d3cf360d0327673a9eae5a4eb969c9ce38dd1e410a940bfda651c8827f6866", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "6decd08473a70a8677e7b3f486d764016552b03b763e89813a4ba085fb212acc", -"T3T1_es_test_autolock.py::test_autolock_default_value": "181dbb06669eb3c20dc75fa1d13580e9dd62849350f44919feafb5afb3e3eaaf", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "3a18618f41ea473a243b9e5363b1e4d9bb5e87f1defa04a17102ab24e3561acb", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "3a18618f41ea473a243b9e5363b1e4d9bb5e87f1defa04a17102ab24e3561acb", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "7611242549ae7472fba5ac920f4d43760e31ca11cda9afe3d712614da1e588f9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "347e57729e002be57b6853188f46cf5c6b0e8fd9d702eed7cf0f73ae8b00720c", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3a06ba291c77fa4cfe90ac452a44ae3c8b5e27d53016632f08598a4fdda2f36e", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "d5e1bd2858fdb34b8497f483f4afaea142a3f8d470afda290fce70ba8d242ab4", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "6cbcda102f28a5e12452ac2a718720ce7f473837f815ec56f781f73db7e6ccce", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "08d9b8b7eb5c6757fc712c637ab5b22e0db930dc47be4f6921e623d41c18f7f8", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "685652daa168194cd5ac536c57eef6875980804ecb102f61245ee5f747679c71", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "92ddd63435ce17fa5c257f2a71175849a094eac10f82a643d00a3926441d0cfc", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6ac4562860be8fe9fa8f41d3edaa9f36ddf67bd5e881d91b6228aaf5f343bfba", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "69cdfac1467895eb7e71dedfc806c2440a09efbd225f421bd0416aea20474e82", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "b3b3e32eaccca02ffb32e5f57d43e357e27806f4f237b38a72d2bab6dadf3b43", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "54751e84d98f3e79c57c05f1f0f7c9dc82aef4e8e75fbf5c2915c3c7dc79f025", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "b2df82fb009f84ad7ce68b5d189fbea8d180a325e6171f7d00b234b9c6281d6f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "e40f722d1a4d936390dcc672b0363be657a9206d1f4f08793d7e58136467ec4a", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "ff2ef18623cf0bc8852b1cc2f222cecb113f0924a14741c49639997f00766d7b", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "28522886a236d941f7152fe5ff0cbbd38586c6e8a5a3b65110445b7878b78c4f", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "5df430c4545891920e062801e17c34441b437d56e74de336ca106a4303c1f556", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "5ad0cf3dfa2e79bd13593700961fa7d66f1009ab7925242ca29cd1a134866755", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "b0fa02e3709817c1bdd65b32b4b8b24c9157c8cf778a75d07d631bdc39d52bc0", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "ae7db78b05c6ca2a181ab68613fbc97bcdd1ae275e4dc621166e3256f69d50dd", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "0b6b1e1dc9b6e17048ed3524ad9865a6f2fcee504152f82d8179cae8d822a832", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "4d250f6aab029cf441634677fbc8e519887ac4a2ccd6720a1067b70da8eac9c9", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "31d4b930e9bccd9d9b8d64074418fe13eb751e46fd5671f04b2f257ca6e39819", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "d644f623c542d168f9a779efb160f6340139b40788624e0002d4d21b2c31f8f6", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "a4ade6c5764b17435d3a69571e9aff54e92524b7f0368abe5e2e4f9ccf689a00", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "161706aebedbbc1b2619d0f69e99cb4fd63aa2190b9408af9155d459cc17c471", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "d5091ea9ae6dcaee20ff15245fcc86e6551dd20b5dfff47bd4353e6bf3927921", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "a6ceecccaf694e125f4afd2b0a297f3a365eb1b1d5608668d950d2db592353de", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "df20955e25238ac7e317b2301561f60f0e0b7a841cb71c200d2e7a394a0f1c85", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "5df430c4545891920e062801e17c34441b437d56e74de336ca106a4303c1f556", +"T3T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "f641df0252252de2ec52ae7563c28ed1c9bafa035c1b332ba1d540a2e0b62a92", +"T3T1_es_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", +"T3T1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", +"T3T1_es_test_authenticate_device.py::test_authenticate_device[]": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", +"T3T1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "bf427474b72b864ba7a5206f0fbc446dfdb6119eb17fc9edd4eba51a124dd1ff", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0ef89b00ebf5965d2714a7c44c0c67e3878c70b46d3f9313471da1a5411c34b8", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "31673e3bdcd8cdf1165755a0d244b7606d57d73dc9927cceae565022de5ea1d1", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "da3f07f0dd55f156b6cb4a634fbdc92ebbf4c5729b4eefdf7bed9ff747a0ec29", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ae74afc93a18d1298992b9bbedd6f0545b06f8b2c73e916fefae5d1a58e7e5d1", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8f4ca1aad41fd6bf118916edfe68471e16e2a09547688f5f63b4f833e1681fc3", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "5f07ce2e639e4b0d730b4b5f80ba8c60e645929deb6647f8d9adff89b076e7a2", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "c730bf37cca9a66cfb04e5badee744e0b87d4e46e31b4c1c02372f44705b809b", +"T3T1_es_test_autolock.py::test_autolock_default_value": "4266d5cde81251a77a6c693cad09705ae52be8f7b376cf86f6bb53f158165764", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "e491e8a0f9ace3cdd0b8a2c56e68d2a78e296b8531f069f5a015302c24cc99ac", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "e491e8a0f9ace3cdd0b8a2c56e68d2a78e296b8531f069f5a015302c24cc99ac", "T3T1_es_test_basic.py::test_capabilities": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_basic.py::test_device_id_different": "d308ce5d954682be97ebc1b01bc8ba26a85aaa1a9e96ce73219eeb3b68503095", +"T3T1_es_test_basic.py::test_device_id_different": "4ea340424999182f67fe9b2313142055d2bb5a7407efcf6caac9890d93d9f1c7", "T3T1_es_test_basic.py::test_device_id_same": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_features": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_ping": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_busy_state.py::test_busy_expiry": "b9fce5bb65a28375614b3d0f0be4ee86334bced0acc6b8515e364e5c4668f4cc", -"T3T1_es_test_busy_state.py::test_busy_state": "65163d9de7b0c43dd02f5b6c21d4252b79bf13b291f2b4d4767cc405f03e1a87", +"T3T1_es_test_busy_state.py::test_busy_state": "f42729857ca0c4336f9d129207b82ad36c3718636e9629b1e3971187e3da9b68", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", "T3T1_es_test_cancel.py::test_cancel_on_paginated": "e5a3496bcaca85f81453303aa5c8cbe07cd288da5b6a09de324a92fd90b2beb6", -"T3T1_es_test_debuglink.py::test_softlock_instability": "5af1c1dbf0f8341c5fdb620308f0d918025fd8f283221a658cb53110bb000b76", +"T3T1_es_test_debuglink.py::test_softlock_instability": "6ab1f5bd8a49bb0ba96f0852579c46c1b979667228a18d6c8f784b6fedca5bda", "T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "52c7ada1d96481aaffbe62bcac73caf6b4edb933f4a06c075593e3074536dbac", "T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_language.py::test_error_invalid_data_hash": "c36253c2168e4fb39315ebd7c8f924bc7a6fc898dc30d4579991682c40d35951", @@ -21149,93 +21149,93 @@ "T3T1_es_test_language.py::test_full_language_change[es]": "cc6f432c87d4732b16e362a61d4c809fff4489f4ffaf54f8667c18a8c126ea50", "T3T1_es_test_language.py::test_full_language_change[fr]": "7b3c6d92c4021ec1456ab282c9a707071e97d0837f170017bdb817659966f7ed", "T3T1_es_test_language.py::test_header_trailing_data": "da0eca61925fdcb627b81f1c4ae62390299934652e996c64bca4ac9b75668ad1", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "c3aa48eb05b7219f03c09a72a9bbebd5c929c657a7d166089613d39e81a4578f", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "8b0eaab7903a72888756d2664c7681529280c449424d8d0d420983e9b06a03ae", "T3T1_es_test_language.py::test_reject_update": "126edadff76e22ad518edd5de8b2029819820f050e5b4002a332a3e38c787d74", -"T3T1_es_test_language.py::test_silent_first_install[False-False]": "4630f645f8d3751bec01499dd0ad679bdac3dd930f4ff0f633cf18bea006e209", -"T3T1_es_test_language.py::test_silent_first_install[None-False]": "4630f645f8d3751bec01499dd0ad679bdac3dd930f4ff0f633cf18bea006e209", -"T3T1_es_test_language.py::test_silent_first_install[True-True]": "1f085c05dbc62bec7bddda65f9bfec2e88eae2f6d104325a3dcde30dea82b8d8", +"T3T1_es_test_language.py::test_silent_first_install[False-False]": "e5a007707078bca55df39381209802081abbc429d1ab40df24062a669e5f3c66", +"T3T1_es_test_language.py::test_silent_first_install[None-False]": "e5a007707078bca55df39381209802081abbc429d1ab40df24062a669e5f3c66", +"T3T1_es_test_language.py::test_silent_first_install[True-True]": "9cd25fdcaae2ab191ac9594047fdf8b9987a16f9accf3710585e06096c09d9c4", "T3T1_es_test_language.py::test_switch_from_english[None]": "16d96358f453cb9c6eba8e79241a6e0009e1b1271eb0aca28b2c9722b1e87368", "T3T1_es_test_language.py::test_switch_from_english[True]": "16d96358f453cb9c6eba8e79241a6e0009e1b1271eb0aca28b2c9722b1e87368", "T3T1_es_test_language.py::test_switch_from_english_not_silent": "341aa1930c0757e8f6b630760a40ada16b26b03913c9052efac175b01d2b6cbb", -"T3T1_es_test_language.py::test_switch_language": "25fb8ac71b1e5b76ea5b79eb492e8b56afdedd8df71c126bee4a0452d4e230d3", +"T3T1_es_test_language.py::test_switch_language": "70376283f804705961e1da59eb547e1aafa21a5ee4252683af15ea306cf9c0af", "T3T1_es_test_language.py::test_translations_renders_on_screen": "c8c6c9478d53e92bbf12dfbc31cec270b68010101ecab5a761ed2eb7f1d63b42", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "2ad0b8c4b79111014b74f91d1aed51a15f3f4ae7e60b5305741f0e0951e76896", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "40b20384c64bc1773f11c48149aa137efe5091c51acd12a977c29d326979d764", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "d174e9d4cbb69b1a119ab73d67e393b372702feb287bfd81a24c01a99d14ece8", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "b0aeec79503056d6b9f93de45bfbbdab6df6fd327de406acffc53141c9dd2a87", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "7a16e5ad17239a4ef04bfea022367e6c585f628861e33ea203434c1b4cbfa09e", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "2e639e31e66990fa6898b043903d33b84ea1a276639aa441c47a2057a3b1bfbf", "T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00c5d64174cbfc42469465b5e80ba5a1ba5eb4fb56426994a9b5ad335dc8438c", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "0d75d61ede8e9f9290acdc123880030bf45d0e3f5f5278c05c1cb0731a987c61", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "8ed0748cd04b3ac8323c7b5839b7443f59eb0f178332873258a648ce2a019949", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "22d9babb423b1f9fc2499cc01a472ef332da28b9a36d978dde9218fc69ec00b0", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "c5039d1741078c6aa3f8537187bab4e12b81b935883857f0f6b2064e100c9f88", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_msg_applysettings.py::test_safety_checks": "5dc065bade013602e4e77d602cb59145004384b7a78e9eb610da582df02f9593", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "9df2f5bc72771ff47a807ba1c2d38976e8243860ae36353090933576f12ce487", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "913bce8ffd9420702bf441339d53c781d2815f43cba3bf9c3ce55f617adf5f36", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "d64aba54347cfd8262baecfb0dd1ff58c563464d8f7ebf394c4fe473ed784fb2", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ad1b62313e9ee6f2244b4c123286325bd19f8ecb3440640c1c84b4479d516293", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "21981e8085b0d87819dec97d446307f20bb7f847f1c06847fe4b0296026371b8", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "3f21cf3db35d37e18091ba0219182e0b91022acd7e6c1002e26c3bdb771dc42e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "96e0564da56d0e1b8ef615120eee2ea1884cc5890d09f65f4757c0812785b8a1", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "a5ff34b643020bd2517ba411fbf18ffa71516e3dffd17351a613c3498c206bd6", +"T3T1_es_test_msg_applysettings.py::test_safety_checks": "0cdbbcc9774b858e0694802f24f0d89241b7c675a0732bd3b39866d17ce000ac", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "176744b9af8759a11b5f782ae3e7e6e65a3526203cc09f574304860dd3ae1b06", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7ee463560eb35e67eea124a59f671c924b546d93d26befc1c7d3fd4925013a9f", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "be2274287367dd21c3370b8582bc916ef3055e3d4710cbe817d72ed0c5b8e9f9", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "1b268ae566bdba64d46d3803b8c3f2892d32f2d387afe65eb09586b28aa76db7", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d80503cb7ac991956c8b3b107165b3d4de5a271df96bf34f3f074877006f85cf", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "72fe0545b3db2824dbbb047abf5e92108a5d995f63fcd9e04086205be838eca5", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "75012c639521a6d94c542b22c14f74e7ba01a5e4d554d9878f8a0927334146fb", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "3fe17acc5ff544729f18badd6bd224a89d9e43f15917c378b383c3824247e027", "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", -"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "6c40ff2cb792dd60aca2d109dddeac2bbcd0265b003557b8f3d16d6d52706d4d", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c0d450f3e81c50e1e455f4bafa5f17da556af6c5cb073f3ccf0bb5999807dc28", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "2d1617427fb960164fa569d225b61313b4f21a0a6ee18a67a726882321aa2c54", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "794274dfb96834da8fdcd9ae650043063e724700946e40bf1d688ce39a470623", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "d758a747c04b6d93736d4ff797eb4e566493606f8da23362952a0bec076be5b7", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "847383e0ccc265049e06d4147605e2accfaaeb71ccc2d3f4a16de048f87926fe", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "5e40e71d1acc8f9696d41f58af7f265b0d688db214ec1cc59bac03da9025d8b5", +"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "02a2731bac48449b027c2635a31f1c0fe7c1756bfa2c7383eb49b07306432400", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "751281a48ba4cc3599dd4808da19f299e55f13c91f991112f1dcb9a9c2a490ef", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "70f6e517ac3278180d21c13854570949cd0a9deb66cc7123d611f79f578401f1", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "a8a03c2305db74921432c202e39d0c1d12199a13984598e10981d253494ef49e", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "9c27015d966a9bf65cf26bf6673f1dbb0b4674f973f9c84ba59f2de735991165", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "dadec8407a61bc3ff93e92f25b287511c42c740b03780b02de9e8787de90be1d", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "de7339b8ac64ca601c7cab9b02a242224b0aafbb40d3feeddbac12a686f46f48", "T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "58597f0ea23dc1b1ba2009cc073df5672385484cdeef261ca6835c3b8d66fc2e", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "6199d3bc234d0b2dfd73cc2fd8f2d791287ee3bf0c144fb66d6a2e2526744b8e", -"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "3789bc2cedc969cc21748b513fdf9c915de98e6f3dc7d85b699404f654e22997", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "b29dc17e3b2a2b7aebefde5eb67c804324aa7a78f9c67196ab28f98616d75f30", -"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "61fa30d7e1c1ff74009b7e3f9d6f343e242db892d0cf2a652689aa937248cab0", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "afd75c1ba3c8a26ed67546aec0861c6b3ccfbef94468d7bd500183716cc50312", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "61fa30d7e1c1ff74009b7e3f9d6f343e242db892d0cf2a652689aa937248cab0", -"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "61fa30d7e1c1ff74009b7e3f9d6f343e242db892d0cf2a652689aa937248cab0", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "d2f25b0fdb5de570ec756253b9e0b5e65ccb03b7c9c5f8ce3bbff36a12dec7e4", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "d1806b5a8cd6f17db435c0fdcd5d85595f4063dceadf5b9cae80a3518efcd853", +"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "95d4ba20a8d9eb42968ac38d33b3735e287a57391de1f7ca04ba95e7858ef3f3", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "6eb9957d5e89f5e916681b9b14b7af838e1ef0cb7c366e6ed8018a1d820aac3f", +"T3T1_es_test_msg_loaddevice.py::test_load_device_1": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "70e77e94e8fa3d620fd67afe52287641fafe34ab5761c0818b6dc1b15ed38b52", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", +"T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "cea5bf2bd5bc31745d4cb3c04d9cb958acc3c055ef537da5863f68da7d089eab", "T3T1_es_test_msg_ping.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "c89f42d09a427326b4d35a2a160a71daddd47bc184b871c8414c64a51132f544", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "de7ed49ad72e9b465f47cdefc9f1bf39c2125544f024b65aae71881ebf4630bb", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "97ef572e1ae351c6cf26a1bec8adc38c299ea590d452e42d0f5bbfee7d70341d", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "6f57bc74e288f5b435bd4f4dc11c32caf5611dbccee4aad5940f83e773e6ac66", -"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "d308ce5d954682be97ebc1b01bc8ba26a85aaa1a9e96ce73219eeb3b68503095", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "a8107de3f7a7bad5b3f2d8172fcf87996980666d3f0b3553c966b05992cb7efc", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "8f8d288fc62b62970771d286e9c5601fbb44cb33c0b4854f8da43f0561ce5650", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "4793d917a34e5c8840351489b2d57a8a78070a732f0a37f8bf01558c7b605f25", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "84147cf0c282ce3c9e133d5099218e18596be51b75becf9b64d5fee6bd53beba", +"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "4ea340424999182f67fe9b2313142055d2bb5a7407efcf6caac9890d93d9f1c7", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", "T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", "T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", -"T3T1_es_test_pin.py::test_correct_pin": "c9b3a43c1674ee94d5c206d7d182cb3ea0666e98ab7bf5c1e233ddf21444aae6", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "f6e4bbbd527628f4c7964e02b6d679efbd24fe70edeaa71b696d4e240c605591", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "f6d512e1a764b3d00f99865b2d0183bfb5cf94ea218f867be9c40d5401d12b85", +"T3T1_es_test_pin.py::test_correct_pin": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "22da7e262f50821b1a551851ccc0cf3edb50eb9827c294fb321e3ffe061237dd", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "5a25e51200bbcf1b79dbfb898c63d180e8ac65a7c108ad54138b131132bc811d", "T3T1_es_test_pin.py::test_no_protection": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_protection_levels.py::test_apply_settings": "115dbec91dad9caffd7b50645d468ebb6bc6cd8039c7e0e2f7c95acb45c22e83", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "6a26f61db04b386ee3a4dce832d4e60e94bf892b254c8cad19db908ff5b8d830", -"T3T1_es_test_protection_levels.py::test_get_address": "0edf5f277287ed29b95d3ccd567f9e0f53f474ea33b4310a31568df02c28a728", -"T3T1_es_test_protection_levels.py::test_get_entropy": "a70efc4697574ecf38dfe005045a0101c55b77e36e21f446477962632275390d", -"T3T1_es_test_protection_levels.py::test_get_public_key": "0edf5f277287ed29b95d3ccd567f9e0f53f474ea33b4310a31568df02c28a728", -"T3T1_es_test_protection_levels.py::test_initialize": "69faf440de4798b031414e4ca77206fac9e9b33ceaeed05ac3d30e064590b80f", +"T3T1_es_test_protection_levels.py::test_apply_settings": "5990fd8e06b644fcbb7b97a110293b6c92d5be139b00f5766506029e9663127d", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "ef59b1df7610a2f42099ef5bced1cb68cf311c719e1fdc415ca69e7da005543b", +"T3T1_es_test_protection_levels.py::test_get_address": "1985691a738d4ea9e013146238e009ecae2de902805e44c29e7c37eaf96bd7f8", +"T3T1_es_test_protection_levels.py::test_get_entropy": "3df65d417d31ac4e0f6db6b358050d64ad94e2638a58457ca08636f4a935654d", +"T3T1_es_test_protection_levels.py::test_get_public_key": "1985691a738d4ea9e013146238e009ecae2de902805e44c29e7c37eaf96bd7f8", +"T3T1_es_test_protection_levels.py::test_initialize": "8e725f28a23f8cd013e9e65c29dbf770777472e2804bef25c8c1add8a670a3f5", "T3T1_es_test_protection_levels.py::test_passphrase_cached": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "57f8d67a75a9063c446c83b9aa9ae8077df0d2f8b59a7c66644cbd76d37ff246", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "1390a110c7f5a984e3b1f60b0ecc56a4ea2f708e930702eb6350d2440311503d", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "2bc159cda3c44404f8e7dd20e496d149ed71a9c741a4bca0dfdafd292a719c49", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "754bdd953dbccc4a4914c6d6f8abad75d86d21b426eadadb94cff5b4f202556e", "T3T1_es_test_protection_levels.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", -"T3T1_es_test_protection_levels.py::test_sign_message": "fc9972fff94fb5f4e6de1b8149b04b6435b983577e7a0d2a046d5728d8b6db82", -"T3T1_es_test_protection_levels.py::test_signtx": "349133da6230bd4c4fe167519d6b6b84dd21334861a52808047203080832361b", -"T3T1_es_test_protection_levels.py::test_unlocked": "07a1e1d7f242454533b65f00524b896758cef7b263ee7542c34cd958296665ae", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "bf7abfa886ae563f506c79c8687d2d3630099e43ee52289ff35503b732e298f5", -"T3T1_es_test_protection_levels.py::test_wipe_device": "0e99ebe512a10b1f32a1f12e3b3af5b0c979dcfc4811edd5b3184963af1128c0", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "c5b09c09a97448be4319ea8768cf17ef48be933138219cb4535e59670fd85337", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "1649eae38dedcdc027ca815d842aebfb3581ce678b8167149dafae047f558bc9", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9e66a84121b0d3c07f70a377432da0b7422ab3c3284befada4a95986cd42cc8f", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "092a6ef644b9695c12f5d32681804ecd7ca37b16193670c529975f34d33aa1f9", -"T3T1_es_test_sdcard.py::test_sd_format": "764b0ff24822c87064c6d355e5f5509a0cb33b549c3764a526ea8fb4dc0b9b7e", -"T3T1_es_test_sdcard.py::test_sd_no_format": "48798b0c9d72ca968868817283ee4a95094c02b03351150f3405a9f688569ecc", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "af8ce9797f4afe392f0110b6d6a19995b915d6c4a2d58ef841c1a45c65526a59", +"T3T1_es_test_protection_levels.py::test_sign_message": "af4455a770b292d2a873b9745e85c1853e93d3ad236397d06af73bb34b9f31ac", +"T3T1_es_test_protection_levels.py::test_signtx": "e6153b5c0876b19d8fc873b139cbbf61d5d4f00bc614460b407911f3aec59b48", +"T3T1_es_test_protection_levels.py::test_unlocked": "404859d4dd69b4cd2a9f6b4e24d972695e071d21a0231a86004fab30841a0a4a", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "168315a08f77eacbbc016a7808821befc69144da6c62a666497925a61adcaa3c", +"T3T1_es_test_protection_levels.py::test_wipe_device": "604df1cb79d3e8b712e3d1d7590b5f7a8619ff19c54657c12ab34814f9b4ad7b", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "ed59223647e5ff848713761814b549da9ae8a82615bca4fb691dc26fd4f1aa9d", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "c0265d5c089f39b5befe97b7b895e83071a3fd8ac76be169b7a993637d4c1a13", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "aaeb88fc01b2fbdc5b1c4d8b1d8b9d7ef83c7aade0c1e97b5c397bdb14ee8ef4", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ce6bd18611930812a08b76ddb78a2ae114d99d4d35cfa7505239b6c59e0ff76e", +"T3T1_es_test_sdcard.py::test_sd_format": "fee32110d7356e4ae73cf07d619e53cefde46823068f442799f3fd76e2ee9225", +"T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "ee48d977aaae5c7e435ffcacbb2dcb2cbdee93dd564a0e0765622af1dab46927", "T3T1_es_test_session.py::test_cannot_resume_ended_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_session.py::test_clear_session": "6bdc73dd77ed9ed3dc40ac878d9284e6032e4e3b83a599ba21adaedb1730d08e", +"T3T1_es_test_session.py::test_clear_session": "c8cfe3a07ad6da67562a2668099dcad50007cad9e6bcb817b4108b4f6044ee5a", "T3T1_es_test_session.py::test_derive_cardano_empty_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_derive_cardano_running_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_end_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -21258,30 +21258,30 @@ "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "8fe15a990edfd25a99e01883323d2866c33e313d233dafdd787f1596ef7a8b7b", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b501a2ef4238dd393ba155db916843344a2a3e78e0dc59f28226830aba844f81", "T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ff862409e700035a0c53fd740f60d95ecc96103f8bdde3f7e47693b03d9d5f4c", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "c9e78c29eee865e7bc5e48e9d4ffaefe715a6c5dd414cb98cc50a56c4bbe364d", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "fa4a309b23c9a2e0e2557a81f62b086e05c31ab1a3c367cf0cfe497ef074f080", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "2be2003eea5416d3bf50eadb034c8cbfae53be301f520a0e6327ee11dade3237", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d256d580916a357609b65412c929ab8d0150643558f73d6b0f1f6ad9f7215eb5", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "5171ca10ab58eae556c351c8e4d929f406725fbdc4b22122cafb12f87a083aee", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "f146d1b396d45a1496e0c481f6ca9df22fe8971d369f3d68b324073c140916f0", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "bc7daf534813685eb934cc9c6dfeeafa8c99b5fe33822540b378649ba9cd5675", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "4cb45ab12861a7e70443542d6b03fc1d1a1f9dcfdd3124fa0921c30d180af584", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "865d124881388b6f881a4ee01e09ebf07a622eebcd1a9fbd72d5ec8cf9f33f9c", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "48105a7c192f056dd6eb9142087c355598df250304a5da0eb5ed42f85cb5d0c2", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "539238f2fb9f6bfbc690a50dcede8edb2ee77d7b646c5300fb1886d57bb8ee06", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "2ef8419f5a45a32667513171e27b6fc6e1a9f97c07d452c8d97824523c11da42", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "20959421e423c54160b70f753bab15ebd58ea0a3addfb6c2e0d589eea751587d", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "6949c2308105cd517c0c78bf54576773430b04548316c837f0ae4a29e61c615c", -"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "a8ec424c23ab6a8763dca7ff6be8d5125bd48329c0ab7557e3476ed489c38561", +"T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "290251b9cc8901f682b5238649d59148f2e38f8bf600c9a7371c8704d1ebf531", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8c3138d7b797bcaea06d66998cc049d19448030b5c0f3c93112e5fd046422e67", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "f91fca0f393aaaa079d872dd72286065f0df707dc66b7cf70b030e63ac4fec45", "T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "310511986f493af5a50e8c30b0574046e2a935dee59f543d735980deca08f358", -"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "9a3318670c8cc490df11889d240c8f6ac6a9519a443caa58ff103f0d43e0ea9f", -"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "dcf141348153cba1d1d0ee8673dd411bad8e4f54aefb23589d90472e459069c2", -"T3T1_es_zcash-test_sign_tx.py::test_one_two": "ec94a0a6d0132ca3bf7fd0ef3691c15faad1fd7377ec1c433dc1397dcdc5fac8", +"T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "2e7ce8f4c09f1c65cb451f9784b4f9973bb53ca2ccb9ad4282addc9d0b2beb65", +"T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "43b0985d5076d4b3a9962384e688d6b5bac71f2b493547cfa6cf41a45bb405d2", +"T3T1_es_zcash-test_sign_tx.py::test_one_two": "156d2d776997b10e5b8a85c231e734a95508a6df77ce9c5241333d9adcd71a97", "T3T1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "1a28918d2778032474369529a67dab67a20a68923329406b3f0db2229808119d", -"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "08fa664731a45760fcb67ef7bf3703fe871cb9bd817dda7714bc69a7f4085422", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "b6a866a33937bb926143ca70946370d1d178475e910050588497a3b90778faa7", -"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "a29812adb68ec325c4dd0f1217683f0f445d4071d0a00bba134b55a757cac02e", -"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "2b5228659310767993d2a6a4a5e4895f631393c4eaceba5dc888c5cd32629d5b", +"T3T1_es_zcash-test_sign_tx.py::test_send_to_multisig": "84837c206e51e3f96d1eaed9e3cbe75f801651e3131e946c75d3d1f694ba0c4a", +"T3T1_es_zcash-test_sign_tx.py::test_spend_multisig": "2bc539e33d67773ea2dd199d1dcd8939a7c92bc3e22a06ecf4cb2befaded83a6", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v4_input": "ad8e1b2cedd8ac24494697bc0822b51e95a151d393909f82e5c47931a054f78e", +"T3T1_es_zcash-test_sign_tx.py::test_spend_v5_input": "9e429bc20e1dec881f08c61d3ce53f97edba3129b682ec33a4827b76920d88b1", +"T3T1_es_zcash-test_sign_tx.py::test_unified_address": "d0929c773c9ad75700ae4b5d6040e35780d5138b53828b989dc2941abadcf37b", "T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "2d3d54cd06d36caa063de4a1943df12ff37de3e4279e38aec93f24e259763d5d", "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "164817fdc5862401d790b282965da438253de612380270b8446c7adca7cda297", @@ -21298,20 +21298,20 @@ "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ed918a22412456053778cb6bcb6c637fca336f794973ef01bbac07be0ce53ae2", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "5214780974d69362699b9f38c5a96565178038035c4769dd6aae33c62abbd9ce", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ca881290c32ea550e86f81a1b3e00388943e74f55fbfe88257aca55df30c7dfe", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "86354d1f44e9701f97ac4c40b822fdd555fb0e539166de77843b786d1ea9e7fd", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "86354d1f44e9701f97ac4c40b822fdd555fb0e539166de77843b786d1ea9e7fd", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "6ffe0668a0ea3c0168b4de5e495055ee722c7936f6ff5e6600382b9e31230313", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "6ffe0668a0ea3c0168b4de5e495055ee722c7936f6ff5e6600382b9e31230313", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "865a0ce90ecb38cb4a30c53093123c7989daf69642ef67f9e51c6f4c6b757154", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "92038e8b4c4561ff73a058dc18b90b83bce84655ae1cee83c47cea7d50bc9e58", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "bc42342ea8af167c858c74659394f6fc2563fbbf6e400409f4d6a3efd39b01e0", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ecca8935b1780e4ac72847a9691bf0053177ae42f76539af0c5b87b8e9014251", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "3aa55fce9aa0bdcdb3b1621917cb86ceec54e898246023556f1d251c6fe4dece", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "3aa55fce9aa0bdcdb3b1621917cb86ceec54e898246023556f1d251c6fe4dece", -"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "dd569af820edd172856b93318d7fe5162c47212a7c75dfc869e41a6228438412", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "dd569af820edd172856b93318d7fe5162c47212a7c75dfc869e41a6228438412", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "4082b36935f4f6dfb7e448a8db4a9d4b74ed730b130bcd686cd446be5318ad02", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "9cde2b295fb4b1f6ad7cd0f00650a45fdf85a058a48ebb961d77f820af9b7048", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "30a1cc1da2d3d3b88acb45eb84e0d239077e4535f7a68b4c111c30de559aa70d", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "bd7d9cfa5eb86dbbd7dfce671d4a3a6734d7596c5552dec2c304987e02b78796", -"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6199f1199e7f5228655ac76078a7ce0c10e45ecddc9c6487fb67faaba60c6d9e", +"T3T1_fr_bitcoin-test_bcash.py::test_attack_change_input": "0857bd9a30c5f318236abe80b128e979abe37379f0ba80e8953acdeb2b46464c", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_change": "0857bd9a30c5f318236abe80b128e979abe37379f0ba80e8953acdeb2b46464c", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "2bf38364c5e599c7387d1f691784a94ac58ba5f2683e2c4953c3a16f26327eba", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ad6ca4492fd53b6177e843a83a8fa6ffb19fa9ee1cc032155a4f8ba82c93cf49", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "df0f713a2781675ef2198ccee8a26da5f38f54cae54b559d4c780f5d34bdfb15", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "58344ecb9011870b2220324fa5f2e0961937706100598e6cbf82abee81284dd5", +"T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "bb1a7ee8cd98a7925560cf4b1f9015e44fa8cc6e72ffcedf74ca1d25913b38ca", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5d0b4918063c9dce34fdf0af88e7dc850157009f981a03c504fcc19af0e0d218", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f3a59629c951f13a7f7dbbec40d019ef92dfe424195d63577f082e6b2e8398db", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "1f2ce03625d122a0e07ae80aacf6defaa219c2e900053fab6cfc0adf05aae611", @@ -21348,30 +21348,30 @@ "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "30cad621551099918b93ccd9af696bf928ba5c833f87fe26b0d3da52453beeb5", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "65b6d172e1afdd97686554e5f7057c62f01dcdc71e0c0f1895e2843711b24b2a", "T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "201eb9133e462ff97c8af705d80a11c708b5b2ffcccce365fe74f96a3b8268a3", -"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "3fc9269e5f10eaf1b1b960dc316d65c53a25427f8ae588742e1e5a44d901f027", -"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "0fde8a60bf50d28171e48fdac675dcbf96510215f05a7b2e2f7024e97243e4b9", +"T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "be59ae85e852144bb8f725be75465ce16d2f769bc160f0ce3278beb7e3cdb0a0", +"T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "f3b61d254c60cff0a11b4526acd7fc7557a99bfbb46150b772734957663b3cda", "T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_bch": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "415ac3917b0e7b0d02e23b4abecaa075e971ec477284aa12ee3e055adf211c02", +"T3T1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "8e93f5f5492ec88a81b9a927f7151af357e42b2d32b8369fcfffaa18e2435d63", "T3T1_fr_bitcoin-test_getaddress.py::test_btc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_crw": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_elements": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_grs": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_invalid_path": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_ltc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "6fecf39d6581cf6bc88f0d340c17af44b1a70bcad3e42d6bb6e79cadfcff7f2b", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig": "9ab71c6a1a34fecfa6c874df3f2b14b1001a962776d13104f745943d16ed495c", "T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "7c90a2f97f76bb3b43b04cf6b39f5ce7410d08c63977d502326fc8eb48dd08c1", +"T3T1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "5c6f3289a0809d8886e1256a5ad721fb8d274818fbeb50a1b6aa23f331de95dd", "T3T1_fr_bitcoin-test_getaddress.py::test_public_ckd": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_tbtc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress.py::test_tgrs": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "7045b36c635d77e4e0217eb179d9d5c804a51a863d51f6d82b03529daa7fe52a", +"T3T1_fr_bitcoin-test_getaddress.py::test_unknown_path": "a946af3c348d2c761991b33862ba1b073d1caa172724a77b5c3a772bda91ae73", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "778f34eea938bede357805ec7110a3bce46c4e674d513612949b4b789a8cf87e", -"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "e05251a3842ba512b48a1f1949d5353c75628d12bd28f4d4efefaaca911c4d1f", +"T3T1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "37604268d65333697da6c5787f707bd8edb953d4374caceed8bf44000879dc67", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -21414,12 +21414,12 @@ "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "03a42b542b68478ca3d478c25e5e7c4e86048cde956780d3f9c59d7bebc670ec", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e1dfc05cb29d86ab703656e8ff7227e3e053b7f936aca96421e2df60a35fe420", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "41d287728608b9b99ffe2d1e469057524fbe69be2545545346e3389428a88cf4", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "601bfd177d21a27a0edd99c4f2537453c633baf5d03ff8efe514367c61fc4b53", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "601bfd177d21a27a0edd99c4f2537453c633baf5d03ff8efe514367c61fc4b53", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "91598c1468a6186e0c499f7919bdbb1641b20bab71a0cf2b04d8bd3dd34f04ae", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "477743cb26e09b9c14f0067aa220081fdcf2a65e8b86e3f202bbca64d7fcb217", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e984355b1d4f89f349fc35cacf674734c82ecb06abb521be85163b07ad4e6415", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "370e650b9797f40c56306fe389dd1dc1a070220cebefc136cb61f17edfa4ae4c", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "cc88139d23265919116f67a4226cdb7342809299da9726f04cc45fd740cf79f5", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "cc88139d23265919116f67a4226cdb7342809299da9726f04cc45fd740cf79f5", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "104653bf243f17156316e83010bc9836bdc83c5bdc9de3b77a6d0f7813bf4e1f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a5945259e180114ca27c1bbb113b59ea484fa1e58af129fd3b37e8a6c2d3561a", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e67426203b4d4dc3edff737752b6f412c9dfe2d6e2303da40880ccfe7db09ea7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "49cbb116809067c6b190d6dcaceb80c9e37cba8ac2d0da6dfa73808c10893078", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "b637d376b6394e1270eb0f22c86cfdb92f8fe72a186f0b6de8f244e46ded5311", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "5e56cf87dc9782adfc399a8447e3b45fb620b0df03a515b42fe83660731f6fdc", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f35141da7ff1c6b1c01a6f97870324e338ecdbadaa822382e511b337d713a11e", @@ -21450,15 +21450,15 @@ "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f3a59629c951f13a7f7dbbec40d019ef92dfe424195d63577f082e6b2e8398db", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b98c58e23878eaa0f8d7b963045567f8e8eabf9baa230522b80a1e1a09296de7", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "0ee2daf5250f1c60140d4e9707fbc31c8c3cef6b4cd2f5714efa17a8cc0a80f5", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "551bf640c786df36bd83727d851090037cd370c9af2d2a860d53c572ec3a6d6b", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "06b4b53187e14804ec4236d94fb5897ae090906ee3f2f87141642d0aa4e11a89", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "ba7a6d75916c910532adc4c838111fc7a57eb26c3f6d27b8db56da97b3bd7ca1", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "c9e92507288c87b97ccdfd9c6a73f8bc726b057261025f647a7de55ab825ed3b", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "b7d9645b3c9419b7ee7bee8b7b19a05dd30d47c3b3d3db9657bbe4bdefe2e6b3", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "8893adc8d7a8f82573743d54fb8012ee379fa7ac73759545bff30b204688222f", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "edf337dddfb2c7c595c139901cbe209c2423a90a220caa4e597ffeef3a90b12f", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ac64da560edf66ed71957aa5428fba918ada53ccbecc4eba1079646f2cd11544", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "cd2a2a693d49256bac89d6eaf09a2808b4b32ec442ced4957f6f3a6f89041cfa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "7ca4f024bdd18ded959bad6309b50c54b1c9ae1d7c0dcfe33a543ff3d8c303e7", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "5fdbe7549939d41e8f23a1a131ac63dfff28bf876855935818d0b07fe512d4a5", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "5fd237aeb450acf19acf5d5bfacc4cfb47de9fe43339f11e85606bb25fd77dc7", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "9b2d802db4c93d0a32dc8e2c400130c1005ec3024a65ef83a9db6f5e9db43500", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "3c423c24263483fbf6854ac11e2a2aa44dd4238b5f2f41902a0800fb4f88eae5", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -21477,32 +21477,32 @@ "T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_grs.py::test_legacy": "6289e7dc8e7cc7217fa273029291b810a88d150e89478291bcd0aa6cc36f5e3c", +"T3T1_fr_bitcoin-test_grs.py::test_legacy": "256fc315af019fb153025f474dffd35bfab0b81718259bfc5f1e372660b8964b", "T3T1_fr_bitcoin-test_grs.py::test_legacy_change": "6b69e1bb6df191d38a6881658b45d7346c277d68ba656f75051655b3e8f1e4ef", -"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "360c20cfbc6f21e058ce4be7ac090211324292586ea453aa422bc00ae8154254", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "c309879cc8dbe3a4a5aeeffcc43484bc3e543a67b45af5701133c14e0b9facac", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "b71de4f0de15b52331261fb9bf49ef43bc0a1fc6755272b898c138494b21253e", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "46c1afd5ba26cabfa9842ba5c26de286ecee631d4fa038072cbdfb382798cda2", -"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "58ea42e8d6792269bc0d2aba0cb58b3b4b2a53df55e44a0556ccf6cdff922778", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "05127b408c7b3605899b4d9774a41c6e3046807dc7453184adff116f61652831", -"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "ea5bb0d02b116215d9c2ce49ce391c77044081fb474fb70e84c271b616116aef", -"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "f1a033ead754fa15713b82d50a1b7ae12405cc932de6c4524d6311edb816ce4b", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "577414e297b2fd74c135263c539db2d1ddc9e1aad3983438aa89203d9a81dc9d", -"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "6235d423e34db95d849101208257f895e304d52acf2b3f5aa58c755329c3b53f", -"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "ad47ea2da0986c75528fb36c003473749c67022b074281d27302c6f002fe43a6", +"T3T1_fr_bitcoin-test_grs.py::test_send_p2tr": "fe2290c204e34f23f5a754e0c4a1c4802fb5ac66f0d54cde0119e2b4ff3410b4", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native": "2fa75c1c6c64d7ad35411ec9661c2e0c07380f616dadcfb869c3cb5290bea901", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "011c06579e5f77779496be0a701c70e36e3cbf3511654fc71f51d90f288f1f72", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "e0531d397824a4363377cd0952fbaca0e2c28d7d2b63b7462f9a48819535e70a", +"T3T1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "8f5dd6cf67c9331372bca7fc2355adebbf94184d2642a83fddcb578c1fd47f7e", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "12f117ec22f2b55bd6ae622b4e281669b24ec23e765dfb2b4c29c91c8733d17c", +"T3T1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "02209c9d042f4d5645cae533da308c2dd793accfb785bc3e164e113c133f3a07", +"T3T1_fr_bitcoin-test_multisig.py::test_15_of_15": "45f1ea4feced49659738b9e699ea1796b6e2597009aa30eb017d963819d50ab3", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "0719eed28b998a9a679a6d8c45a50cc3e394da9ce7923845fa2469a773d9e33a", +"T3T1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "a7eedd484ecf72c38a333d1d97cc2944d0c95316f4ddc31d2445ec97d367075e", +"T3T1_fr_bitcoin-test_multisig.py::test_attack_change_input": "c247ff18def859618969c0b1a9729a5bb6caadee6d26b9ee0d1b228e60ac3f9d", "T3T1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "49530286df1333d587352dcf927b8fc931e9213cbbeb4671b67dbe5d6a298b24", -"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "275c1b0845499854ea106beee9e9b00e71195c6201bff40bc87df1dca1825ad5", -"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "3cf2d0e8cf38773e11aa90442b06539ddd367f096917cf7b02b3409d617326ee", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "2a0d5f531195f7771ade8934e8360cb324ec35bfb4dd3a2db3fcce48eabadc2c", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "decc2ca5f242c9359109733ba8a4a5fd06456eb917bb5f1e18f31abd0084271a", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "8621da083b8b863cb7376d3d1c3b1cdb74c1bdbb9efc21f9a0fb65234af4f9df", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "5e412355bcfea01dd7fbdb048fc8ca9be2e29ee13df0b41cf2fe27a606a938b7", -"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "7ef11a06671f95fe6cbe7d98c5906491a4e1345e494136b5914e61e12ee020b7", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "23cc3431444ee89500affdfaa1bf303f1c5e65fa848ef4a456bfd97e587cd14d", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "4969ec97a2f4b24d75d3681ceccbc0516356ae93cbfeaaee97c2b4f42a4edd15", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "abc4203d5a535ae0a4580fc142cbb7da4ea34e250533a11d3dd35e669885d941", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "be8bd2ce0ecaf4a18f5b25109d6e6e0b34675f88b5b0246ea9a1a80b27cfe986", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_external": "ba595f6054e700a16031766562855627940736b6f2e0ca9eb57196f74a9b376b", +"T3T1_fr_bitcoin-test_multisig_change.py::test_external_internal": "7d2fdb810271be08a382c5ada6d47e32e75937a8ec3d3aaf24d058335d2bf856", +"T3T1_fr_bitcoin-test_multisig_change.py::test_internal_external": "0d40e55646c352205afaf049bd03bdedfe9fb14964f6cf4ed3195301058a0731", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "8e546d927e70054d2be1c56e22b015d673bbcd654ddfb353c406f2c8171a0db7", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "cdd0fe57c83c766cb253553fac8650f3da125a859c7d19a1575d796967e2233a", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "fd413978c8f3facc5e546552e17e5093a70d44b06d1e0463043ede1446977bfb", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "f0c4f011d6e729e9606f4c26b87da217c91e40d5dc23cddfe0dc3c636404db53", +"T3T1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "ac1a614be7322c3d53ab6a71aff8087452d0170b9b64f2b6192f4ffe8a6e298c", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "252d08af20334ef76821891b571938b1c656a79108dfb76537404a7036e65d26", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "94a2d8b5e751685c73e072b238656e210cddc185ead62a5eee2bb71d1d387a99", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ee6318748ed09e6a4ded01b29d811e860e2fb041cf171107989681d3da912ae1", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "0e7fd017462a4de7cc2bc34d809c6f6c2456af2cc969ce93498937fc699c5493", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e4309a8ed3a66d8972bb271382a6bc13f1198bf270c557d281a6859512943ed2", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "77fe121ce986074f7f4a9626e56155a9cc9b09afcec6faed568ca04f01f4a679", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ff5839872ba9abf9541ec3a6730bdc91aa52baa0acf205adb3aff22536bd244d", @@ -21511,41 +21511,41 @@ "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "f09a0980b24dd6d9d55afd92a6cf05582023efbf159532c42b3557bdb9172420", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "c3cb88ff498a4607d570e6a104ff4ca35db8c642cf1e7678178a9dc96c9c23bd", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "6a768fbd63bda79fcf26408155c7e0f5e12cfc085ff12f94388a23038eee6c54", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "213c8abee2ba6d12b7be649af9be7a940235cdb8ad482e57da1e3cbeb2a7e3ac", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "1c02500ebadb208b2db63eabb7d77a7eecaeb659060fd50080203733045b3a83", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "1921ad6f0a9d28cc9dd37eb40115b0f5399ae90a0fbe287957734844130b1fd5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "19eb247bb234f225ed7464d7b7c946ca1b58763b7ff0c892173c727220dff788", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "9e401576e1ec8b7a94e971110fd3de512c26e1babd1719a834599ec2e4f37bef", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "c4a1a2bf84ef0db822aad1d95e034a45b4aceecf912907a8eaa98b6b7c28be82", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "78fe5cd542af065d475263bf70c4bc052395a644c4aa978845b3042f7293792f", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "2b2ed2a5d48de96f72586e91aa1886c43b851e0f418b8cc37c6572b890952f9d", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "54ecc384e7a2308678e50ed3c35d010af9d25165d4ff08ed8c5be56aa10d1ec7", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "ff4303c064dffaba4893aedc61d3c78a5acacc16063ceb06d4cf92f2277e5ffb", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "55ad1365e270bf5a92c62dcadceac997e435e1cc5196ae0991a527f4d8a2cbe2", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "b1eb2bd51b9a886f33e9e68e1519705cd6381ec60b7166c15b2d4d430e1d2e10", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "b76c9dbb6016ede20b3f53d1ce2c6c33a9abf8198bde64d7089901d32b9c85ce", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "f2b8cec934a41fb549582522ed813b3f5bdb90ee35cd23ae455949873b10d82c", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "e41a9c24780ff485418e1dbd7b9c71115f1d061f8a74a8ef392883332e8973c4", "T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "88c769aac58e4d6e1c77d83cc22f0dd1f269a0b99bcd47da902eb9214c9ddda9", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "9e03c38ead66679968499ca9438b4139fb2421c8c390075b1290d4d2e3b95147", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "553425152d0e6856b729d70ef2035c3ccdc05b55fdcf1c28c64193cb347b829e", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "037ed1ff425ddc164e3081a9aaed535c7416f2dd1b892bc63dbcf99c628e37a2", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "b2440bd2e176fec4326a5c7a740ac912ef103fd595ad7dd335cbfe9c23df08e5", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "527586f08b334eb2a42d864da6e8d0b0308c3d524670884e5319b9098d3b2c95", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "6d43cbc83d0d960ff648bf3cab22ab8a241006fb5a62f17610370da3e2d1d96b", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "62bccc42549d68a51a30795d9225ab83cae77939a50baa7e0943af1fdc714478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "716f5f629007fa54c8d846b12a735b88e965cc44345eb36f1bcbe81f7622307e", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "2b327b4b128dc54413be6c46eab559cc3fff56e5849d7589da54d8479b856ee3", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "62bccc42549d68a51a30795d9225ab83cae77939a50baa7e0943af1fdc714478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "62bccc42549d68a51a30795d9225ab83cae77939a50baa7e0943af1fdc714478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "62bccc42549d68a51a30795d9225ab83cae77939a50baa7e0943af1fdc714478", -"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "911cc29889b8e008d7522295d3fb42ac7696b7785c8debd4b8ba5b30f3fd3f98", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "c8c114567b4ddae2e27ee705abb0c65dd12c7badf72375b9fa607d04be846fb4", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "d343dd657ac818f6dcc369d4b92f4cd7dabc9f2b29c8e5821d52068b03a809ba", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "c3f3625f111da27b58bff233aae02eb16e7ac07a15adc9ceda6ef7429d6934aa", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "a386b239925fd4adc6f1bbd32e33ff8da9a2b67267e7eb1be5e86c9558eae090", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6229621a98dbf28d98dabbca9fcd56552a5599319e3209fbc712b1a7b2ec3c0f", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "57df23e8b5051c7ff48f52f810fadefbf691686472dc08a9c06a93180b3748b5", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "9911591877a9e3908d2a478b1d0fbde86bdda3b39b56b4987b67debf22d64c8e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "cc256e7944647afe56cd7d32fa7366045fafb568caba799de256bd531fc4a421", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "346a67e74e430a3b3e38ee0527d42e2f3690f0d3a7b2160a23ead1e4bc77baac", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "9911591877a9e3908d2a478b1d0fbde86bdda3b39b56b4987b67debf22d64c8e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "9911591877a9e3908d2a478b1d0fbde86bdda3b39b56b4987b67debf22d64c8e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "9911591877a9e3908d2a478b1d0fbde86bdda3b39b56b4987b67debf22d64c8e", +"T3T1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "bfb897017c4c5aeacac08a146dc385f020c2b4c171be4dac121b8dadf1efe7bc", "T3T1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "3410fa84ca776b417d39067821ef4deb36c8661afc3c4da13d9f1420b83f7322", +"T3T1_fr_bitcoin-test_op_return.py::test_opreturn": "31c83965c935c1d6ab129ac370890cced561411a491ad97e78ff66eeb8049a67", "T3T1_fr_bitcoin-test_op_return.py::test_opreturn_address": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "9291d4802fb9d5d757a66ab259bde0d16442f25ba3dc7efda0d2e664ae9538e7", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "174ad036e3c633743deb54a71114723c4d5237a0b5ae9fcf847ccedbcecf3bc9", "T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "efe91ca80f6f56be2e368e87a404bff7d4dd7aee91d522ec59961c86548e815f", +"T3T1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "aeac61ef37e6d748e55ae35f6a1dbaf1f03a02dc85b38f092224e239ea5782ee", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "622c9ba493a28134c66df0301deb9b37eacdeda30866adcb78492414f978874e", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "622c9ba493a28134c66df0301deb9b37eacdeda30866adcb78492414f978874e", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "df68d87d50e76941fe344de313ce1a902bec9116fd7d331a15d995e32550d8f3", @@ -21572,103 +21572,103 @@ "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "d3bd0848e296dc0ac993558544d45d843809eeb7e2f6634755e64789c8adce54", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "d87a5c30ea9f4b9c82e030523c9b94c7de5aedd4b328d667ea397b4de759987b", "T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "26e30570cedbb79bdba71cc07a1d6bb5e1498ca3f2b9c3969fd8af844865dd22", -"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "1b0f74b9b3876fef356d433a9485669d76c53cdefdb20594bc13ab373147fe39", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "e74c552d7d62def1d0b1cacc971521e9b5230660219b22a12905304b427eedaf", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "438e6f8e6399973919e93f4d5a32a50fc6dd4fdc9aeeb73c7fe01f9b98b9b788", -"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "e822cf702a2fac85fdc3452fed9ab69c41b12502d4332d8c493bdbd4cb409b54", -"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "e822cf702a2fac85fdc3452fed9ab69c41b12502d4332d8c493bdbd4cb409b54", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "73b77944f673315dce348288babe931dd98e5ecde889a542ca566936e1b62c8d", -"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "706defe42ecc7439ae546add7b2f798a86f77b054fa1daa795937d6c0132014c", +"T3T1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "35bac697055ee511af0b44fe0a991250471e4c4578a2372a1a61600dfbdf8884", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "f60b1f255343489fe3c37c59be41b038dda19a59ba923003754d9f00b82af79e", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "54fd8371c2b567ce28c30b1158d3c954f4647842a081ded2d6543ca6e7eb8b9b", +"T3T1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "15e1028d8fd9a6ffc374608e06b17ffd9265d2ca3972a2590d161d149887d920", +"T3T1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "15e1028d8fd9a6ffc374608e06b17ffd9265d2ca3972a2590d161d149887d920", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "8252fccf0f0c451cd81cbceb5f3de3689d90b0da913cab2768c053fcc697279a", +"T3T1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "32d249d8103927478de918214c598891aad09dfc7811f12efa586b2eeaa54fe7", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_signtx.py::test_information": "5cb7164bcea57742b764e62bf40a7179f888565038985e3a9ae147455833ff0e", -"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "f6fc92dea4ae386aa836e4872fca4381f0f13901228a9d2765b64142fea36568", -"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "d29da9e71e01a04feb87a00a01ac8f18e9611fa0e322d9e2d9646e58b0924df2", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "9e5c7fb61b1cf746bd60b1211a58b05ab68cbd6997039d4302bb330bca5ea018", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "2f2815858270b6637af1af71cc640053a4d43d4557e452270c28520049a95dea", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "b59aaac4900fd3bd5780c725b230729aa5b685843c79d140b7b27dd39637af1a", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "2f2815858270b6637af1af71cc640053a4d43d4557e452270c28520049a95dea", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "b59aaac4900fd3bd5780c725b230729aa5b685843c79d140b7b27dd39637af1a", -"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "63f1872ff4a60121e6b9a1d44bc3a573aaa527ab4d48b9091d1cc9227141c7e4", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "4a9fdb5e32de53a7af7356d109a6d00e0c7fe905c2f30845a953c15dc93723e0", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "318c0880c8a6c40ffc54c9a1a977c15bcead9b6d79b6fa67157e1d10c3c93a4e", -"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "bbd3872dabe2944eb33c4ea4bd56e1a72d67b5f600320c09a319eb1ff22fe174", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "2a84cfd6eaab5dcdedfb7ad3a2344fcad69d05b2ce4b01d962e05bb8f5c127c0", -"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "a2caa1f40f7415ce0c8ee015c257fbc29b860c4684b49920f773f34a22c94bd3", -"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "05865399917fed835feafede4ee2207b6f68d373e894d93d932ca1417811dfa4", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "e0eadc59f11d29d8b7f8a3dd5d9f445eb30bf184d1cc8088f032a34f790bdd46", -"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "af686e7f30b039fe3f099dfac4461956faadc411154c6930cce3deb7992a2778", -"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "779d856268b0187ce4afcaebb9601883e5f759a1edf93202f9b036b9e4e524b1", -"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "0f0abb0927474845b77ca2c3cc85bc534890cb8fbaf4950bc17cb3cea8773863", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", -"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "914e4bede6fd850fff2ed284b7bbff4a0c988334b6bc037cc327f86d7ad76573", +"T3T1_fr_bitcoin-test_signtx.py::test_information": "a5beca64eda50fa94f4e79166fe5fe9eee0c9dff75f5cdce7966a80bc3f99a49", +"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "199f66a9424230b66d9e994c32b76f50cce329f962277999e9709d48b6d6df6f", +"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "ab6b1e816de92695e878414403493103882703d3425edf76a1d67158ab592c7b", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "bceeb7d46f62c39e1bbd9c67730cdf67c98cb57d6a1781917ebbf895f377ae02", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "23d6a64d9e6c6be7358c1a1c64fa8ef189dceffaf89edf1a0200e330727dea39", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "97bad4a2005f89fb500ae8c59efef8903376d6f63bb9b9dc6ad24254bb6135a7", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "23d6a64d9e6c6be7358c1a1c64fa8ef189dceffaf89edf1a0200e330727dea39", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "97bad4a2005f89fb500ae8c59efef8903376d6f63bb9b9dc6ad24254bb6135a7", +"T3T1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "a113d39b6937d96492688b7d27e9b872e96b5a0c59cfae4d7dab6c3601324898", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_change": "a05c363ce747f5917de138d11ddd18615f383e6ecb8b98d4ed0e31d91a3d6c76", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "089e9fc043660d34644fa40296de77cdeee90a28acd040a0c1bfb7172b5b4434", +"T3T1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "161e6ed88c84586e0c8c643353416950172fb57c457b6c38d282571bff756ce6", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "97eefb5cad81688205de13f11e658a205bdcd102cb6327cfceb2e85be3094d11", +"T3T1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "d8b61f9e004b30644dbfa7f9452d90df34429ad520df5de9dc872070f21066ae", +"T3T1_fr_bitcoin-test_signtx.py::test_one_one_fee": "84324886e074486d397a3e9fa0fe03ef828c141b8e56c88da00606b9722602b7", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "75e850ea19279cfd0befa620a6b7234aa8838dfeba491625d70ef7f3a40ac19a", +"T3T1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "4af789e0a1ab3fe218604afa43ccbb2d37760f0791b08a6b8ae5f80bf3024a3c", +"T3T1_fr_bitcoin-test_signtx.py::test_one_two_fee": "38a753ce85b9ccd9bf054f288e54b214bd361b568466570d83299d502aef9b04", +"T3T1_fr_bitcoin-test_signtx.py::test_p2sh": "f4846c99c416f84cb566ea26c3c57b8868e2a709efd21573b813cdbedef28ee9", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "4220b687aa39e00f4d3e43ae909160eb2a74f05badfd02faf753d536fbaadc86", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "4220b687aa39e00f4d3e43ae909160eb2a74f05badfd02faf753d536fbaadc86", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "4220b687aa39e00f4d3e43ae909160eb2a74f05badfd02faf753d536fbaadc86", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "4220b687aa39e00f4d3e43ae909160eb2a74f05badfd02faf753d536fbaadc86", +"T3T1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "4220b687aa39e00f4d3e43ae909160eb2a74f05badfd02faf753d536fbaadc86", "T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "1e28193e7cc446d7957aa68196129e5ff60fced9db1e4b8ffe82baa81cb9c937", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "b66839ac8318483bb49bd90380d47abcea85b666200fdfae41ce5a7ce7eb3530", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "41268e67a36d5d2f9200b5cb93c7708f7d2630fc25433babc28d338a1245bb60", -"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "e822cf702a2fac85fdc3452fed9ab69c41b12502d4332d8c493bdbd4cb409b54", -"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "59034b3e773d1ad7cd116839cb056bf930fe3f02fd502f064beb619b30152c6b", -"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "fd03f788993a729d52ebb23379ecb4b44eacafdb38513203ac78a70262fce93b", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "05865399917fed835feafede4ee2207b6f68d373e894d93d932ca1417811dfa4", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "58cedbd2b0f00a077a79db2e6b1ee334a4a822a52f5f8c26e9680c1ecc9e30da", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "61a2155e831bf1d7cf0f878b6dc5203323d48747cc3b406c0ba83097d68dee14", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "9ed346bf9ddadb8822274e81cceb02b4524d41b56d43b692435143046c914426", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "05865399917fed835feafede4ee2207b6f68d373e894d93d932ca1417811dfa4", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "7337bc3b982d8046d7af373ae75e24cf99b9868965f82abcd360f212f5ca0e7a", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "51aaebe0f471a9a9d1633b487e9d9740d27a4181f193ba89fc0df76ad3d73e6e", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "16fd1a940019d86162054c5626d68a7f772d17ec36f0c5881efd4597317df98b", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "4a09a3cf18fb19d93070cc25f14ef8d6cefaf29d16d094fd1da45803505d84d4", -"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "7337bc3b982d8046d7af373ae75e24cf99b9868965f82abcd360f212f5ca0e7a", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "96f427e2d635dcc749db3e78ada77e8f65603975239fa2f271aef050fe456141", +"T3T1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "694d36b4bba1a2d568913367fa9a1056caa277b9a8fa93dcf9bd559f43d57a45", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "ca5568a7532f819ae8a14e859cb9227253751f0872bc0a1d3c00a54d0ebccbd1", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "4cb6c1c091553e4bda70ccd76255e878101f7672281ce2be78b0552cf684867a", +"T3T1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "15e1028d8fd9a6ffc374608e06b17ffd9265d2ca3972a2590d161d149887d920", +"T3T1_fr_bitcoin-test_signtx.py::test_two_changes": "6f09b0b32ce0b0dcdaccd4a1b858ede0a4177e6b04edd6fb1a8ba3d1597304c1", +"T3T1_fr_bitcoin-test_signtx.py::test_two_two": "d68cf46f90a263dadb7c7fb10391d09478d6c0506e9134f1ba31e4bb002630e3", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "84324886e074486d397a3e9fa0fe03ef828c141b8e56c88da00606b9722602b7", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "d00a78bdac2f202257ceac92100b9cd1b79a5a2b36602266ab226e948a001971", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "326c2c0a6795295880d817aa3d9b30a832565845d42182cb53518fd886833f35", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "ec36792edf8705f27262aa4f3f7d5a9236abdfdb7066d88d9821b297ee262bc0", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "84324886e074486d397a3e9fa0fe03ef828c141b8e56c88da00606b9722602b7", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "c3844c0074722f36cfad9bbff26ccd0746837ebb920a6dc4b2eb5d9569b65fd4", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "70af0f1cf3133b062ae24d28a49ac4f55bbac860709e7498fc493c9f47f1adb3", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "5b65da58a43fb716151d854f0f9e87e1112efcede8593c283dfdd60fc3fb7c41", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "aa2e38b0584411e972950bbc4330496cce5b1b169a5290b6626369a928739eb7", +"T3T1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "c3844c0074722f36cfad9bbff26ccd0746837ebb920a6dc4b2eb5d9569b65fd4", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "900a5afdd30435e6e12f5dcc4ca02d14bc611cd21491e6b9e76901758306bf80", "T3T1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "7121fb5d87a773d745548d1363d1761f51190732cc1e08720903a9d6fd9d4231", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "5d955445d35b2b8f23c8cc01e308e87a5701b2d996694be7205d30346127ed47", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "3e48a3d1a9400d14a44a8b225cb59888f9094456962692515b23a46be8e96066", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "12dd6136d6c3683b2e8115fea3e2af0164cb480cef6bb21c24e8732b106ae508", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "ccdc2664e622e30f2282817efc9f33d01929c2300ff90489d1d0ad318fd7e2bb", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "89bff4df748e4ce8ba815eff6caeff767a3a4119ca6b51a2cff83758abe94ae2", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "810d098c3a063e7ba2e30790cf5306b10d475d477cb0897a6381f607923923de", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "652cfec9963f967fee6599d143c40d7e7e7da9675f33039b7af1e798f9e8fbcf", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "0b5a3e817f482ed864a69d14ed690ec02c0c51f3f70f8aaaa084341eeaa5d6ce", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "dfa5595df08d40e3b955ab2fe170b60e364bcf2a73ecc3a421d0772ef842ae77", "T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "2c0a4d20dce45e2034b303fe810cd31e4309f07bc1c5f7f03150e47e6dd2e962", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "520795a1977435369119c45b8537e3066b0e863eb559dbb58b3a8419ef40ae21", "T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "b0fba0f4fd737c7b6bcf8eb945bf0117aebd966feca4fc791af3b367418c5707", -"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "4404338211a915e093c66c128ce0cf46730414b764db363be0ff4c23d84f8018", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "b0afa61265daa4557e637c1a1c44ead06a3fba27bdc7e6635237701aecf514c9", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "88dbcadc3aa6b026321499779b2d41d73c67c0f66cff6f4dc7dcba540609f521", +"T3T1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "e0ac0c8adbd8e4c88afb4b950c7a1b2411a91be40b26f9b5fe27c865a8dc3c5f", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "f75db01216e4a73b9f936a20728110b8c3580cca62c727277a94f9526e6fc17f", "T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "c2a28688494200a7ec1dc4197c1e95df5c973d33596b9fd786b2fa34e7743ebc", -"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "8e66b245817a8faf6c83007b1357dfa2d723eb945feab2bdca5b4353ea9baa99", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "b47496dd4bbd9835e6204adfa01859e7742ced97b43ea14892903f159f9786ee", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "e638071fcaa6adbb0676379d4ed1922d3f52f5b78d32c103006cb943c455024e", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "b47496dd4bbd9835e6204adfa01859e7742ced97b43ea14892903f159f9786ee", -"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "e638071fcaa6adbb0676379d4ed1922d3f52f5b78d32c103006cb943c455024e", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ddd160c355cbcfea9bbd507e39f62cd7d9f265458cd1f927e59535d339b537ba", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "77d9d9f3e164612c2eb346eac220706f9f6157ab02269d1d77b28f5dd620218f", +"T3T1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "e683506fce590c50f57cd6f60df0b133e034345629006c2791bfdbd6234d50bb", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "bbf7b1ca35964546d925a672dde3ff10c9bb49cb54a75c823ab4f81de1b72975", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "31d4c63ec9e3c48850d6355e1428c2e72ab03d8fd4a950ef632e14751bff77aa", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "bbf7b1ca35964546d925a672dde3ff10c9bb49cb54a75c823ab4f81de1b72975", +"T3T1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "31d4c63ec9e3c48850d6355e1428c2e72ab03d8fd4a950ef632e14751bff77aa", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "1e56bf136a9c07fcc29409249dcb6959bb931baee3c4fe41645baed296e6948e", "T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "0c92b4dda23b392b0712843adf334818f183a19b7eaa1357199fc54f89abbed5", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "e22902c80724ab06ff26fc6c37fee640d437363b3cd28bf0aba181b4abb111ac", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "ee538d290057ff9c3a3da088516757d511c820a886eb4c14a8c8589d3dc17a4e", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a36965bf7d65979cce8b49ca918451472e4a97d0acbdb38d8c23067511731fd9", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "30c22f9e132fb19f47bd7b2f8611770f6f3e927bc6756c10d0ba0778377dd769", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "52eb5a4b556599b3ca6c7f6e84294d3e85b61fda41a143a6a17d5b184dfe1499", -"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6293d74c064ac9f32bf6db05fac7f32c98f5be527f47ade37b15bd3593af550d", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "6d29e5f73ec78059d19b490738c7c68067659db6dec0ac5aebfedec70938bd4e", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "f7bd6155560b777d01308018c1685913344404e48d53ce46644a8d9be1b528e1", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "e57d94fc0e63446334941af24077475bfa1feb95f72547938925a7f1d04de89c", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "160e77cd0e64f6ef28483c7afa52b74131c9c17ddcd042a2f6936d53aaeaa3ed", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "6589f08c619b6e9d05a6e42a2988bdcafb54a30312d5475d3fa1af0e3128c628", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "57ea0529a1b113c75cab7398492cdf9727b2084c423da9f7bb13e3eebca2d033", +"T3T1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "1d3a0b8ebd64da1ea6f08ca3faaf90d4ba1018ddb37bc7c311c57e7664275cc1", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "411def112158dd0e13f24117073b871e1f20cf7d00d9ba5d39894268d925cb58", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "411def112158dd0e13f24117073b871e1f20cf7d00d9ba5d39894268d925cb58", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "411def112158dd0e13f24117073b871e1f20cf7d00d9ba5d39894268d925cb58", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "411def112158dd0e13f24117073b871e1f20cf7d00d9ba5d39894268d925cb58", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d51dd62cdbed10434c6cbe4b24570213ab77b7126a953f4f0844a5e6a93961b2", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d51dd62cdbed10434c6cbe4b24570213ab77b7126a953f4f0844a5e6a93961b2", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d51dd62cdbed10434c6cbe4b24570213ab77b7126a953f4f0844a5e6a93961b2", -"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d51dd62cdbed10434c6cbe4b24570213ab77b7126a953f4f0844a5e6a93961b2", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "e80ac7d3520056faf783c55b36cf28c3009dfd9cfe5d286cfbd27febcc5dea0a", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "e80ac7d3520056faf783c55b36cf28c3009dfd9cfe5d286cfbd27febcc5dea0a", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "e80ac7d3520056faf783c55b36cf28c3009dfd9cfe5d286cfbd27febcc5dea0a", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e80ac7d3520056faf783c55b36cf28c3009dfd9cfe5d286cfbd27febcc5dea0a", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "f18a038a7c035aefb06017a6544abe48f55697e8f83801bb781c1962b93d6199", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "f18a038a7c035aefb06017a6544abe48f55697e8f83801bb781c1962b93d6199", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "f18a038a7c035aefb06017a6544abe48f55697e8f83801bb781c1962b93d6199", +"T3T1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "f18a038a7c035aefb06017a6544abe48f55697e8f83801bb781c1962b93d6199", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", @@ -21687,33 +21687,33 @@ "T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "5380979bcd51be250dcc3bec1c627bca3933eafdf9cc5c0853cdcd1050c402c6", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "01fa7a4e821cfee11ed64c4c33cb2df3736dec6aedbd859007f803ad3cc2e408", "T3T1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "118e249f1772e7e75c3ddfc0d10238942af3a65d0ae8393d58b752ace02592cd", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "156ef03dd9ee2268e80b3d8b212a1bb1df4a08fec49b7ee4e107c21db1c292d1", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "f67b6d0802fbf04345fd488de977e581eed2ed13b60d3f75d326f7999a4a2845", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "05b5a05d5e1c86898bfe199aecad2d07934b7311e8d993b48aea6d28f2c27524", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c264b1efc138d10bd397bb4b5162fbe1eefad3ab0d3f9be622ffdda28b13e2e0", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "84f29d34b6d4f1a9e76603c6bfe2d8489e04d25921ad9a05bbf66086d940e6f4", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "1fe9213588a9e363a1d2f4d89ec7a67d1b6000dd0f8b613e70291aadee298dd9", -"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "9fb5b3ff4eff27f8c7e65df31b3d1f4594520dbe906b6eba1ec4357852b3740e", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4aed96b915f10bf26318aac1941c9c43c4c9833aa0cedb79a3f09fe8e0870cae", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "fc1312198238400cfc4cb093da471e81bcdd5ae38f9e6dcd314d20733cb42e1d", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "47d3ac67390b5e8d464ef34611007a15182eb8ac2ebbcb76299970aa02eee8a1", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "dbd59f5be6da78990ac105c21d3ca9691e689d109352a389991a61246338479b", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "ad45924b2d2777506954d93db9cad483765f395d86c9ddad9fb8693a6a13aadf", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "02adbe62c480e8c779720bda7bafece5b2cc38b5a382f87c45407e230f0cb322", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "7337bc3b982d8046d7af373ae75e24cf99b9868965f82abcd360f212f5ca0e7a", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "fcd95e8ec3ae143955d05cc5b623f59315c4889d899c074407b795b1be86c779", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "f5a149be5cd990e4d932b228537769aacd8d84256da801f37e13568bf74d43fa", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "73923c6e53884d791c1ecba438363799170f6b643def00c21633a2b684b1f231", -"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "3e464991c1192e879ed472a08dbe7fd611947e6ffbf4ddaa87fe21e02844e3a4", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "ee4ca415aa27e024055f04465929eec702b8dbd8bdcf8eb841acf087c1a60e2c", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "17706181615e696a16a3bb4f624457d1926253f6efbe3b33c6a27b9c5cf248b1", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "91eb3b9f2ccaef6c22f74e3adbf5dc71e18e945588db9abdf14889c68bf84f91", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "a575fea8af6661153eae41f4798beda77bd42ffd816b4b6af821ce6bd88c15a7", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "2a25e911e73e555398d801d10e0eab26607bbd58cd0714e4da6f63c196104085", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "023ddc672ca63db3be970dac6c880e35601f342e94b7251d165d7d933060f374", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "568079a0bee1eecc36c2c17cbd5c0f69b8b1f44726eb95e0b26db15502fa9e75", +"T3T1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "743ffd6c87939085a9a9a97b87c65713e12b38ce8bbcbfcc20d403a58108b361", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "b815e615bbed3229ec0c484ff9bdefff0408a40677a9e65de090068659ee0d4f", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "aff9d1b9402f27327f946c57eb1f8774f1046d449fa6d558cc3edad932fc561a", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "4041d832365f92a51d83462cb9e6ad557b3f3875977c368574ca143a3a74af20", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "f442834791b2f6f2c376278755328e5c6081b44ba1c4f6f95a121fe825f6c9dc", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "1bc6fe5e2fe320c2b00e805a45c998ddaae66e1a3404dd2bc377ce33166b714b", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "7b1bb8f00038eb003ec318de8555fc6f2c334f59df94970cbf5db49110233b1e", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "c3844c0074722f36cfad9bbff26ccd0746837ebb920a6dc4b2eb5d9569b65fd4", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "ba726d4fb498a8dfbb8b54827d4689f7c51ddcb31545982ec9f944d6eb5bd775", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "f99fac73ddc3a2ea972fb2cba494bd513062d5806185b43e13b6a91132746a44", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "b55713ffa411ea1549c54f3b46a6d307d26edab17f9bcfcaf7aa404bcdd6d1d7", +"T3T1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a867094674d2b012753ddae983981b385ab54ec46de9769a8607d9a8061938e2", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "3dfdd15550adbe9f4b2797d2c563808b611aad76ecba911fd2bc6f793d28c124", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "27d7a951f83b3ab03fd93f72ca3d979a3be8757aa685a07ff776ff41adde0ccd", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "c473a4b8f5c60e4cca027e708125c2ac98f389168e8b69499ca174700d226c75", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "1a9c668ee74047489d429900e6f31e6d406fcd0de8f0eb23829da1699bb94657", -"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2a76beb92671cad903d02c0dc40b2e6a1283d27a5a23e98d18e27c5d2962aa54", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "be8f401f284fbcab5eb748ed722424ad37a5645a35750d95d93431a829a919ac", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6aa5771be69c7cad657f75e339e34c38cdeed41b3a3cf19c36718a3e1417bb6d", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "11c0eb71bf931be0d1a5d28f6526ad52e0187aa22d14776be8ee1db8e3ca6eba", +"T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "626540b82a9265868272844915321d4fe03e9e705a4b09b3b45ee06d49ad96cd", "T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "8f944728a887d6556b08692ea9cd221aa1f23ea23d82b4b2311bd099ed18f5ed", "T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "7dddccc3bfc2a8ed2fa284dab95c913cf2be50a8f603a9d01211aae97603eef4", "T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "9bc5f43d9c777fb9349ea30c69d7aa745f88332d7e5de46a5172efdf30ae98b7", @@ -21729,9 +21729,9 @@ "T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "77a84f0b3fa59c5c0daeb98a475b70b9f024db6923d3f9250bb35f1719a636a9", "T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "06095d90b05853e8c4caf3bbb3f0ac51ad720ab2fe47b006565842fe5feb5c6e", "T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "ddd6ea2edab4b1538dcd94091bb5fb3c814caee54d6ba6cd0dcc584d41e74537", -"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "7a3c9d103761ac457813701961cba445494ab6af9cd28b2fa0bd98c3666fcf02", -"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "53b2f5b68f6a7fe14f45ad637716ec0a6dfeca59930cd374f7bc4a434a25e93b", -"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "4e729ccad4f954b5c1296f100c4c6d5f699d5eb6daa02ebb90ee79e4b1e428bb", +"T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "ed968fc6f87e77bf1062997e2ac7b1881aef2361331bd4551f823a7f9eb6e639", +"T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3e9dab704c22b2f3450d94f565a14a4295789095e786df9e73a23f21dd6f629e", +"T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "d7d7efd6cafb3d212904d0f10a2e4ed3290e2ab6e170267100cef222866a6724", "T3T1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "9f4ebf50d1214d1cb6c273be28a15441df4e4134f317b6212841b28468982a2b", @@ -21759,11 +21759,11 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "2efb8e1e29c0e3d4b60b17de0cb0d8b07bc72637b17804747a6801b659b48854", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "7b5f62ec21dc9adb5b3d1f12add86d90b4813713ca666a111a711bae2a1ce78c", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d511970f72c3ea54fee4bc9915a1df2b34cf61c1ae9c28c66ff74f079d4a87e3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "81d0e34d341a55f3050ae76574c38c2ec7c6739196c1c78b64067b969614152c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3094e10a318f7197ae46d821db47c74f8aabd10bbc834f4b0cf0e078f6b94272", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "790565587b7b242be0907dba8617305e2a1686f2eabdb3954ed2444e93879acf", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "b46638d59143890b1fa3c8b85152035cc4df4eaf4fa6aed97c9f8af10b339a13", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "55ec537f3599ebe8d8c22a006e10c5f63075d2b2f45d7da65f97607ebb5ec30b", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "594c17a7a81d6ec67e6d19c2b223aa9fa0c05ac491c3dcda2f5b16087c3318f4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "85e63d7522e43b56655cfc2a011d8e19979dee55729524a44a86e8d56e86253a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "374ae395de8ce90e868d912a600c9bf1b16f0e59dada65eea3d170b1dd475e37", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "fa97f88dd0db4db43ffc9a84454e8e0f9bd2158aed01104edbf3b19f3168fc8a", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "875548e98a8aff34f938f90029fcf36e5632b649825e352d8ea850e462a469fd", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "1efab2f5a4441332c6e931dcd3a19143651b6a2dd84b5a2000eedc6c7afc10d7", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "443e57a7695a8a91c39f2a5176aa353ac59d48170832d42a02531e476a4071e1", @@ -21799,11 +21799,11 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "7649382fa07becdb8dc697d96b784a14b961b98eb3973527519c5e30dab75552", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "560860afc8495234c3d81c8861a46a1229d7040c831f09ae8cadcd6a7835acca", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "baeba4b1c3e7e5852317de8828e43731c7b3bac5459b82dd331971a2e0a97487", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "fafe2bc073b500af3a296a98f8b65f311b253bf59a3c92899d7773faa62003fe", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "bf41846cf29ec55cdef24e2c1946a19bd36b1d102c6a35b0578727b091a39963", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "9cc8f3cc6fff07e04a3ef141055adafbb2ece0a4103bed86f01734074a23dbb7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "6613635dfc3898ce372864633be64afb54fc954cf1ce0aaeec559bbc7fdc3dfc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "6db4aeb5b6ab8d832416f0e2fd9ac361dbbc90a8512b865c02209a5916c7cd17", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "19c26981131ea694832270f6de40dcae140911649fca68f7e6220724b51bff7a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "d28cbded08df3524c455303053cfff73792baea81f21ce711591df9ac747c3f6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "8c5aedbe112ae98d4fd29614413de2798c1d50db514c24485bcb40ddb1353efc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "1ac7dc8d40eb231f111e840825c38f80fa7a349b784cdd765cbc1e49e322e82f", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "d272629f59f89189a5a49beedea12385d6d7e387242bc3e55f59c2b4a5bc0a74", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "167921bc36f98673d0fdb04edabe40cda485cb51faa1d0af8f40d525f5c7a402", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "a004c14ab3cf2eaf15da85a57df316d7a923a130545b15029398d280b2006c0f", @@ -21839,119 +21839,119 @@ "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_cardano-test_derivations.py::test_ledger_available_always": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "ea589d000fa95376b2c752bb18caf1d34a067639ab206c278bfeed5b2af6b119", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "8ed40100cdb1376e0122fe01ad50344b21cd6c586dad82912556b84922264938", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "8dc576c239f101fd7e188ba2464bdeacc373242f761f58cdd47d1eaa837d1cb3", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "57d15ea6b71c06a8496a95bfd4f4ab59dd9ddf5a312324c18f1915f2d2a28edc", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "cf93cd8bfc2cce7f624e29475d5e2417919027c5144384d8a7409d204411db52", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "9e33905209fc2e5df9bb63dc08c4c9d93b513003ac2ce710698ee7392ec6e3a1", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "99c29b4eb696cc43bc0e903e089317eea6e14047d7109948c403b528bc07cb0a", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "5d83245a1ac2d071291d44b92f444e557d37b089829b8862d0a02ade6b5494e6", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "2e1c4bbe9dd9a3543521f061a3c2af10195707670b0cf576fba060621a310a72", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "52aca9265ed536b0f9b1e8c594e62c24242d02a63ff71ceb281c29dd41f0a917", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "f9258d38e58638ca238330c8ed61dd2aa2476cfaf1bba10bcd7e75534ad1b417", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "92b046ae8032dcaecab9df009a82e702b049802df03dd3cbf8b621b95138d146", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "17bb3361f842c7a3d7500703705e6dccda3b5733a46f8232eb925c9b649f8f7d", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d2c21c4270c0617853b9733ac760d3de2bcc1c20a6ea63228e36fdc6661addae", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "0de75f66c604c4eafcbcca08777b04d0b96bcc0134097bfd844d41e3c29131e8", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "3a9b6e3d93e950dbb31755aa11f8a2a8281b60344788bb688331e94e6aafd89a", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4f43b3f155c374fabb094b02dd6cdcc7d7e841b7b38ab5ebaaf1f7d39b8f6a20", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "5f7de3f16bbf07b93108a81a7289739d2d9fa2448f24dc7f4d32106ffc93632f", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "9984ac6f468b6c8c902d216fb22ad207d9281aa44a82ee013a2414fda818747f", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "4d2916864496c8164d256c533ec8e8da56906cf79050f7f467100a223509987a", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "26df225f8de60dcdff9b938ac642835eb2310a5aca226d799fb6ace8ef052c37", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "ecbe029f987949866fd6b48f623a9609ae17d70e60bd6ccd4987593abdc7f1be", "T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "35efe30cee06c3f175905e1f389a686fdb10590be0adb7cc8599c2c0ce896b92", -"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "03e182bfa21c6bae9b286ec2849b61c0894f2e253805708d903eac7545d2c95a", +"T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "cafafedf3e3f8f44be5f2a25bade677de4f90193b76c0f345c9ffeabcda8c6f5", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "bc8cc136dbfdee105d5c6c816b1c84c976f881221cfcd277d7178aaa1d6f2ec5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "7b0b001187ae3371824c60ccccae5005703d524f4bf63bd96ff73308bcca4da3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "22172849cef60eeb10c8138664d2f4a5127e3aab0b8e6f73001fd20cf7eafd12", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "64a0730ddcc51be13501d51114278d1ce670e00582f33da116867e090dfa7e8e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c3cb2fcb57d647a438d33f4b9fb8279ac9e9fd43e47cb56ed0da39f507dea03c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "440ac129787ab880d4a8e2221c55e76c3ce553668995afd5c872b869aac84a54", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "d01f1297d0e4575dc9dc29a94c2018d0e69a9983be5b9d18fdf83c0f4bd89b3c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b527e7e451b26a18d79802ff2741c2fbe214fd4f69e62a8ec867c8d4e60b508e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b1d06289fbeaafbe0726b17ff91b6d42058b9402bd4098e783179d636dd28ec6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0c1ffc6630f1068a0b1fb2aceee8e36db3939cdf7b0274d3e6b74816219bcb66", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "0b5d5822eb7f5f28f6e1b2b3e6e895e9755a119bc500ed1cc1370db9ddd34c0b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6860dd2bf19c1b1479adab501d445e0bd7283f86128a43efd4981b363da2fe11", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "3f3bab493d90415abec67926228a6a78694bd3cb07cbe28448191f8468bfbe95", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "54d2a9abe1215bd01985195aa71256407eda59766bafb601f006e225b2b6fa92", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "5d77b8aaf7655ea2a7e6b9368076a2392b18d034806a0ef7d1e5ea0cc65ff401", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "a6977da1bed226a833c288ca72b4f5cab755978274e10805ca947218ce8c73a7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "71ca8430f283197d3cf0cabab04e51b343beed76c2c07a6b24b6eac3a7a8dd81", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "71ca8430f283197d3cf0cabab04e51b343beed76c2c07a6b24b6eac3a7a8dd81", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "2209b458be5f45daa63b11e218d1b17dcd63f66de0f0908e25f5cfff1b872600", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "08920615e4ce7582ce31f039459857b49b3ad5e13e24cae1759856b7d5b339b0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "5cbd9d896bb5f3e5a1cec3d8aa8247aa3254e94bb81e3684fed793327c344091", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "ce932392de1b22999ee23834e367c2d3407db43c74d571df5c7a366fac88b5e0", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "27b9a4d73437ddd5d6e82313926efe54f6b7629f2b53da0f17a17bd5c35ace0e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "85875f5acf1bb81106cc9eb2c6a8defaf688960fdaef0798ad525697cdcb1d04", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "b50c046b25281f6bfaddd6f9b7d0c670eb767b3d9f777b3d753abc9fbe4f683b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "9d9628a5d2281314e1f9a33a87fbae9fde4920ee2224ea63deecb60c0fd74de3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "67ca7ac81373aada1fa5c81c2c454c06ac5791cfbf92eb2f20d7e9efb5b89f03", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "27b9a4d73437ddd5d6e82313926efe54f6b7629f2b53da0f17a17bd5c35ace0e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "85875f5acf1bb81106cc9eb2c6a8defaf688960fdaef0798ad525697cdcb1d04", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "5be18e1b3207d37bba46818a8b7dd74b721cb5ce53f6adc1255171d248048c4d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "4f7ca7b865d40c47b6b2fca37eb0eddb71b3bfd11f93db63949c59ad79b0a5ba", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "94ceb8384776fedbb46324f901582cb118ed2d3fa5ecce26a5ee3f21c184819f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "4113afbfcac3a37631d769ea1d4b206fe5bcbf4869888f07b58051130466c645", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "27bb7b48ee15ba81244c17346e70de1724bde1387eb71d8a632d11083b47e48d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "5a5ce451da2f69630a47b37138e0ebdb269fad62aae5c7cecc57be98c578b36f", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "4d1db4191a2bf2b7671551adc277b0899ea4e9ec7b159670c5841ffa73f13eca", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "c017691e448bb1ee393d5e9d109cb1f4203e299dfd0eb87eb8b831cda784461c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "70eb54f6f0488f11b6858f0704b8ff1f37fe7893ff816e6a66aaf36419f4057a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "71e4be51ec24b232bd040a534ea8f504e6869242d5a0b7013894ededf186234b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "65bc410af70a00b8c6a7c3aca4d8fb57066aca2a21b768c20b321ca4a79004b9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "8e3cc1300cdbd3f69e9441a9750c8e366d3c828009477fe39ffc0b58b6b90663", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "45bf1893d3e806544d428b5ab5e86e198e3482e7424c5cf1106f9632c1051814", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "34a8a3578bf50bdf57ca778bc08a08a47ee1455fbfec9bf9f8dd5553d94eeef2", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "eb333dc3c2056f31adeafb8f8271e8fcd995469f76b073d32fddb9a821703227", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "de0d95272bc1cb9ff3b08ccc8dc65164afc11ebcd1400fb3ff8cfbcecf142172", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "bc2fb2b3f26531c8a66bfb06713d5e0446301ef15733df26bd2fb125c35f2d49", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "28da3f6511ff862dd9bbb73cb98e8c3061d6db02abb568fa1c3cd1cb57233c70", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "0073c03acbd7347c15ad561f6888959ba5d87911300d9efced5b2c3b84188b3b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d1c4d21703a99d6e41bf8ab0a5c3f691cdaaefbcebb7d1415e862cff4534a234", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "9ca4357e914e9e5495b82d2155bbe5f8600143a8e964ea09874f5e3b1d155c59", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "4bb4786292061053882c04267e36c97666d76d510ccd4c1f3f4246fd2ec0767c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "ab3fe7ee9c22e5a1237a3338b5eac740d4e4f344f191ef2f7b15cff47a27ebf7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "143a631ccf817b4df199d45e538038bc59cd273a9faa51fe0a4467d75c75e422", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "89ccd14c44a02c3edac85192dee239b24fef4a8568f4d876af63e4a61ccad3bd", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "d108be6ab7541c4cc23d7254af835200aff6a1cfb0e44d8f3b026540eacc765c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "22fa43c3ea63111d6d1e9c43ee398dcae78f5d7e5366a3d19b10ae1823833e35", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "596c186a2fb90f23ab55fcda3e6aa8853d9627b9b0702bb885a93a289c711d4a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "9ca38b248903efc4233428e6b704a0c8c51454ad0abc2b07dbff5cb94415665a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "2b1c0bc4d6b06790e0fe563753dd235b493cd9637e17e8d02beec4379174dc57", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "2267cfe5ff7ea14e9e0dbbd4e214230a3165bbce75a45bc4a681b356b85dadaf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "e5010103e746aa8417f13dc2df2e4308376b7941c96507ba8e80f1c068e11de6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ad5b41276667539f5f75ca3125e218bdd8e61e79117507772ee9b32dd0dd087c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1d5bd36de71d56f7b431fb9a5edfa1bc81959d11210a4a899eb0930c21f70103", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "190871860b83eb05094d1b8d2556b1a268dbb48d7a91907a2472a3564a648cbf", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "5e3a4084da8b491d3788a8d5c2c1692a746eeae318a9a8bf4406aafc95657aa9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "72b274f8dc2ab9d1718072b97f7b09586f9bfac7f7cccec7540f66eb7acae454", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "90e1349a236a7a8d18984fb4fb27ffb838982376918132a246f9c6cbcfd32e43", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "f92431b5634cb6ccc601b204eeb0a2c56aad0091a8307261b3f31f95fd978f93", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "b571790f7da97e3c4337ac3d1da4a70193b5011ce8bfeea72b4d5415343100ea", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f5d3694e608e36b0ffd06193c94f5ef27ce46423444c1d5d3e60d0678f6f0f65", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "6c6705978e50f22df4432644e622f8e58a7454967440e2ea3087d4d14e806f3e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "02219b98c18d856c9be4505422d826bbd726d47ba0d9f0c199ba084e630c7089", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "746d386a357386fd832d3688876f2efc0a80dee119f29d59e3f57a44dc9732bb", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "2a2306878034f692d7b78aab905e84481208fd33acf26831f8a169e3d77f3867", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3b4700cd71443791cf7cfc3c7338cbe2fe72b3cff6db1e98712c6246e90b1143", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "5b8f0a4e77216c32ced7ee935132e3b6df7b7e347ea23373c11169159dd2eb0a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1569267c90b9b71edaf4687138f2442606a8008e2c59878ed64820ddc2e9a45e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6fd84a5651692a3dbdc0cff90f53f1f771f7265efa924d5bea9d2d39b3c957f1", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "0852a8703bb2eba6a468012cf7abfc8943e2dbc197bba4591bc36bde4a0ad8b4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "1ae796ee709fc2eb3a9a4b72441107091a150bfd757fcab1d7042033a311b507", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5f0cdea180a505d5639f318c73e68cf4f24579ca4628609cb1baf12488b297c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5f0cdea180a505d5639f318c73e68cf4f24579ca4628609cb1baf12488b297c5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "2fc6899b4ad76fdb593f9310846ccf2d31baf5fa78a58b7a0c6ffde5816f232a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "7feac003504735bc95541b3a9aafde7d1c7e4c904a2a5b1ed8873289adb6ee3c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "7feac003504735bc95541b3a9aafde7d1c7e4c904a2a5b1ed8873289adb6ee3c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "25ffdc73d1d58700da7ff6402f5546ec6dda81c2c0567ddb7b6ac75ba9a2a2f5", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "44e68385588b6d65f705c1728e56a38ffeca3e00ca5efabcdba75a7444163628", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "e9b5dd4df9a6e1bf4f794c850d6b0a94d2416053d0c51b146e428bc18e7ece2d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "7dbf7fc5e1ba05152b475a8007945bec4c985615da35efdb54235b67e2ac0f0a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "e5347cae82e73a582775d04ab3405b4c81ae3cb24f9f47fe30e7c30eb56aefd6", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "525216e85e08ce1528aaf98254aa85924f9c0f25b2ab437bcb912ce5c68e880b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "dfb0d5f866821baa73d25da63e573d1dfd93cc0591d104affcbf71e4cd6f4b22", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "fdabc84e0edb6da85b8a83ac0c3bdf429371c035f817e0ed20c2778150ad0cd3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "30b2e03cfc4df516bf7a71f2f076c5e7aaf7728677f400d196f5cd17bf418fdf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "5b6e345a0f6017b72bcc1e095c4466f30bfe1b80b70a44bc344bdd0be2efcf13", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "552d303a3dc1097575effa300ef1de985b869936bdda4d99b9a3e406b8cf953b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "552d303a3dc1097575effa300ef1de985b869936bdda4d99b9a3e406b8cf953b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "3f7de751b477be35b6935e8ef05480ff45296f7ae6af55c1cabcdddc7eb93a12", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "a32e6084068d75950137eeb6ae7542b95d8b1bd2caacb78539aef45686c88a1b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "9d0bcb35c6c60f19d13dd25d4b76db111f5380e7cf199f526c12e32466c56655", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "4dee60dcc8bc0639fe7d9105bf12f1fda2d7513bd70bc17cac39399e1feb3025", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c1b3e6c84df1708819a628e9ab21b66500261cefb462f610535c0ece0600331b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "4e58b617d33896098014f62e08262ce937137b2b905b5c0104e5475f5ee8efb0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "3d58bd2ef7d45151efb5cb17d35094e280765d64592a91703b9766334049533d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "be276de53eca0f1c44db8cc3fbb1cf18acba2b2e381fc5d7c8bc1da98dd8843e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "cde8baf09f1bba305156528e73b791f23c62c75d2f9be1140388feeb966be920", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "4dee60dcc8bc0639fe7d9105bf12f1fda2d7513bd70bc17cac39399e1feb3025", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "043d2f52d10d0ea2c57879bed0afd40269a4318a9301d7a99bc49416338d603f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "4e58b617d33896098014f62e08262ce937137b2b905b5c0104e5475f5ee8efb0", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "3d58bd2ef7d45151efb5cb17d35094e280765d64592a91703b9766334049533d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "39ff286c47ec59cd07517577cdeda7a6f8db2dd31f341585a47f74cc51ce82cd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "4dee60dcc8bc0639fe7d9105bf12f1fda2d7513bd70bc17cac39399e1feb3025", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "a4c42b5bd6698d1a055f3ea704ac73826c8d35c5f21146943e6208a1441a52d4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b35d04e129d2bb9227bb439c0199a4d7db09e319c06a408ed24ebb6fc3d3d49e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "b1f3292bff2050bb63e25e6bdeb9db5f13e463e1cdf1b45a75787b93ab81d7f9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "110b962c80544864c66e475836a4afda41bcc46014d31c2fc473a16daa91cab4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6354df43a8e62317c32c3c025603aeab81ada4d47386547541b28e29f2288305", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "a9b19e2deaf690e077b687b2653d9616098e11c62ef8349ee86ca9781aa8091f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b2dc9294b7091dfd7eb3d1199eac3e42e933d0884d411790d32595da7d93552f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "da65c77af254ccab1c35c5a46eef0c5dfd20651344508de7e4f731a1905ac510", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "1eb5d08387a5cf284c2e492dc1de61e866051515962465e8231cbc5be913b16d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "47a5c9950d16ac15d732687c2a0dd3ca49b47889b4ce33682146f4036cd59ac2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "2863a11cafd8dba3e8be7c4cf5ae07ab65eb3ea5b1ff45da830c97c1434b9208", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "53965dc0ab95441acfadcfaf2d706340e92ec3d0eee34b9ef08f7f0748a84046", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "5491e5f90b925b235c7e77ed3c033dc1d4c50bf43694dae41032c354a8e01a76", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "a4f7c1f2fbf8e3d87bc0ac4be5511d325a20e4633edb4f6cea8322e6c9b2f2bf", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "ea3145ac5909f3032ef1dc64cc2dc52d7d8a2354563ea6f272d5eb50a5db7117", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "9b8597e0131b57e5900701f2e0a4df47cfa25d587f5776263c088217c03bb89d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "92a3e7b059ddea49d88f3e90e36261399b983fa728ad7bd3776fc44162a81e40", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7ec67cf0597376e71dcbf1f627730ec40443d6a87c9a5f8ddfd6bf8e43b487e2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "52db31f57cfbaac1671d44f6bfcdd068b243f065058fcc205bf12d53d73d9413", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "56decff4cfcfba3c1bbeddac242a7c9501a7cd4a5fa5f2316d5d0d965389af6f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "289af08e8d570ff8fee51f7d71c2aa5105c68fde5d77fbdb9024fbb471ed4f2e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "39063c494ef198ebb58adb666569c6f0c025e949376055dbb868d9eb3a1d9c5f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "aa7397bbeaac2d3d990328c5c3f5ee9da42e443b31e2899659c5f4a3a57a3dd4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "aa7397bbeaac2d3d990328c5c3f5ee9da42e443b31e2899659c5f4a3a57a3dd4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "53ec96eca2538ebb563de52350d18604a9098df21d454fe687bb58898341a812", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "cf49977dfa0c9c3d15e202c29876512c60011090a470b3097061cd8961a58222", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "d3e574275d8b477b34a42b015450aefd8c669b2a29167726edd5228f684d084e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "1c831b7455340008eead3c01b585a144789e18c985afe5d170f99f950a6bc703", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "5c526822208cb8c46adf36af1a8b0db17bb01f4e2c2f2cd3f00b7c128f237791", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "dfbcf2cb2da560c3cb0a8103e71cf52a50e24498d6b932ae5a0fea91e16d9b41", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "21f1dabccf741fc62b71f7d9ddfd69afc84da8cebf4bd6262f6b1b5f03653dcb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "27ad9ee50d7c3f52e7084a6034dbff08c114058a38783d70a6c247a850e52b55", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "4dee60dcc8bc0639fe7d9105bf12f1fda2d7513bd70bc17cac39399e1feb3025", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "5a47b036fa1bdbaf81d382754dd8cdaf5a784e4be2ec7bd3fe80164993fdf294", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "bc81920bc200abe3a09f3473b61cf23bf2e77c6eab0e8d27fbe0d144c3f9d1f5", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "16b879c9a9d58c069264cf463d51ad9ecb5d0bd039a726b06fa159dbc08e5275", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "e2b6844d60ab805660c838607272775ec68b7d016201e6ba87e8de5c4338ceed", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "abed94637c26f35db7fc0db29b7e226e48ba08512391fa8ebff0b10863e64e61", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "e2f8bc33f283665b3d23466f17e6819e06871e56e319116472214482aa414a6b", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fe8912025bd59cea9f4333fbf88a9e898924687b0074285835606415d876ed2c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5a54e0fcbbc6d8ca427799ef3ac2f498619dd561846089b64fa582f9ba3443fd", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "63e1435f861abb0dcf3132b6c175ec1cc817faa43891cda63c3e76506997a00d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "9f5a936ab753770d3f7c747b6bc1859165f321cc39f8a1a85154941ce46fded1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "5c07c52bc348b17e7170613874ff4a9299d1111ba8ba98128fa13c311ae5a2cb", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4dee60dcc8bc0639fe7d9105bf12f1fda2d7513bd70bc17cac39399e1feb3025", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "bb0a1cb749a14ad3ad6272971d621a89168297aa1829f81e06930e6844416655", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "6bc13a864c3801804fa457a3499df6f5acf6accc839072a31dc905fccaced794", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "15a9be470fe04be9613b1e485cd3dbb22d051aa93dbcce30864195cb59e351a6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "798af0f66388e895dc95951ef718e5e7323e4d331cb52837fdde08561b6c009c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "374018d72b2f7d8d4ea43c17325879bcaf09a104fcedd563ebdb7814d3affe26", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d0ab5fd4c621e6767e331ea0cd10d1650b539403c4b9c0528406eaac9ee8a2fe", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "8be751ba7245705b5dbc9c75a6ec091abadf5fa86812469a8b7115578d0cafa3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d00d51e149740411e503a2610c4e2604b72ade00e4a7892bead2cbebc56c6b8f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "388572a3057fd060b00782c50319c398fafd8141d703a368e8583d403aee88b6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "150fd2dc15fff135cb78b2ff79fb74357a76b2c7ffcc4fef4e1c5f71b787fb47", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "150fd2dc15fff135cb78b2ff79fb74357a76b2c7ffcc4fef4e1c5f71b787fb47", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "ad9aa53c4da06f5cc77e96b4ed4fbc49f3ef2f5c450441936365ab1638c06070", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "54906cc7e62d0972dd2f80894156e84aede8a113392bb0ace28d149425e367b3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "54906cc7e62d0972dd2f80894156e84aede8a113392bb0ace28d149425e367b3", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "1e621a413641f359c374cea4a70ca71c30f461db8504bf63f7aa1a0752000274", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "62f9743121780bde37a3d4dcb6f2990e2108a2db8408141b47d1aff74d185146", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "063ffe834c1b54eaba1be3702e541f241a9ccbb5ca49664d0e8d6cd33bb44c2f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9bd444729459be31c1a3b7cfd182578c814530b87dc9823f785b95321e303ff4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "8ae01a80552b4cb1c1678fb042d9f568f114751389995f2087fda75bf1ab749d", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "340219e0b4c07fc23a7fdc6c4d5ba054e30686315eed7dad04a48891579d935f", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "ced0cd378ed1547ed3ffe70a0ada9a1754d83e8dc7bda8d01ec2bf1e5cad81e4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "930da956a75f5877a58b30a64081fa74f148c4446822093a9ede40d2c5e98fc7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "6eec65d7160e595eac72ddea6133be18352eaee7086a35ad994f2fa31ab4d360", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "a0f7a2d318df4d00d9f3d0759d6ac1fa7f6933a5732363bfde45e614712afe3c", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "4605b387a1a3261ba21d7f1a88bea8bd8a786d0b10ff9c19e83acee08864b010", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", @@ -21980,19 +21980,19 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c58c4b0348e9b18e5844d7d4445aba077290c7afc38bc7d336ee827fd76737a8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e8fdf70977db2b2e1a0cd35126970373461738b2fe54cd791575315102f95c2b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "2f56556b65ad05d7c76c3454651eaea8fd5805b8b54a4e6102670e82f519aaad", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "b4d153ca16313a2372caed7cc737fa8896075c9a0b0ddf15f9f726beeba1462c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "0ad50a6683e42772c5a115904687c143a4c311541158bb13d9f33b6cea5b36ea", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "4dee60dcc8bc0639fe7d9105bf12f1fda2d7513bd70bc17cac39399e1feb3025", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "b43943241c4c39ac9d5a02b718c77d50c1d12e9f591d7bde6a94733a9f03a2a7", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "14e1ab0d9bcb3ed3580590e929aa0e48e3318816b7d1482062bfa10d220cf9d9", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "aaa6e0ee9026ea28d98b0cfbe750840a16915df4f8eae2086e1e7e3dfbcfc8fa", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "6dccb73fae01811cac172442253d8d68c2a7615de663532080a1e6684e889242", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "805328a7bcd3999a38f7914c2f178f88dccf22398e0e58353e85d4851aa45f33", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "ce6c9239f1b27db2cc5445808b6c061dcb31f95a23fd6f1a4b06fcc53a87c373", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "2a19353738a04685022f320a09f94d6f85a7397369a530cd048ae7a7bb86afcb", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "caf16bdd41c07bb42087f2a86fe2c92ed32dfa261c2917b31e4880b56bfa0e3e", @@ -22006,10 +22006,10 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "caf16bdd41c07bb42087f2a86fe2c92ed32dfa261c2917b31e4880b56bfa0e3e", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "caf16bdd41c07bb42087f2a86fe2c92ed32dfa261c2917b31e4880b56bfa0e3e", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "caf16bdd41c07bb42087f2a86fe2c92ed32dfa261c2917b31e4880b56bfa0e3e", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "14e1ab0d9bcb3ed3580590e929aa0e48e3318816b7d1482062bfa10d220cf9d9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d811d691be95cd86241aaf19d12c39bd34742da5c990cb587d328a60109ab6e3", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a5701636e0aa9e02d5814bb1438560231616d3723777cf133597ca9ca740eac9", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "a1c6decfa6eb46f78c5a75e63109c8cead8d74a50e06ccd1262ab56f6b2bb8e2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "6dccb73fae01811cac172442253d8d68c2a7615de663532080a1e6684e889242", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "addaa4eb98a5a29e2c20b4e8208da318dfa68686999e38e71013cb754f3a8360", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "9a06af810d7548538c2f146d388077e2dd0d8c6eb1d6c0acfd663b9074b0baac", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "e8dfc76cf5bae83dec1c570e7c9fd5eb057bff2e510a73dcbddd699c65cc7672", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", @@ -22031,14 +22031,14 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "e21ce120f5fdf3bf144e093f3a4673a82413f01c2a210efc13c812bf036330bb", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "cea457dc5c17f76b5938c2953d1520defad250e039b9a90c8344a443207c74e8", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "aa7397bbeaac2d3d990328c5c3f5ee9da42e443b31e2899659c5f4a3a57a3dd4", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "aa7397bbeaac2d3d990328c5c3f5ee9da42e443b31e2899659c5f4a3a57a3dd4", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4f8e8595b5fafa197361abc98ccfbb4fc71be821bd1897c53ea40afe85726753", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "a3a7d13a040e4626027459197fdfb33e96ce7ba6df5eb81e63da917a0596bde9", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "0d96378e9a841a5d85a8a8dbb8a1581738f171d0b61f5dd026852d17b51b29e7", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "aa7397bbeaac2d3d990328c5c3f5ee9da42e443b31e2899659c5f4a3a57a3dd4", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "fe747a209c6a686748489eadaae4c160b77c694e6365ff4afaf426353eb6559a", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", @@ -22048,14 +22048,14 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "ca651865bf56c73890dafef1cfe9bae6cf18055e1b51782f40310165af0a35d2", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "7f5e7ceeb430029a837771f3f0280b9b05693ca948d2feeaa74ec16ce37a8c03", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6d347259c916a3e0aeca10c71baa1b6d8ff15dd1fc1c74120d2591ecda20613b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "d1013d767263ae688853a5b8c9ddae6d94050bd2da7ad04c49e1404fa741e33f", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "f5256a27fd70aacae8230fb0ae612714fb136f5887c795b7184a8e6742fb0c6e", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "d8620f71306a4829934791af49853f550c1fa14c6e265086f6ca3d523546d2d7", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "24ab057e11c0b49a2f01c72cafd14853309ccbc7ec9e4277e4cf878ffc21c54a", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "46dc8614ba201625ac22d5ea38252ed99007c2cf248c0c2231f2e45c1c95fbe8", @@ -22077,13 +22077,13 @@ "T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "29b058c62e59a808178e644ee6e2aafdf00951dd18eef29d950960d92c99db4a", "T3T1_fr_ethereum-test_definitions.py::test_external_token": "5a1bc8da58b96f068c78bf15f5caf16088f97d60483094c3f0f7ac8cd2fd6ba9", "T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "b7de51cf08d6693258c6c96c0c5027d2a137cc21bc909ac1494793d7b68ff647", +"T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5e3aafa62dc0a8fea217680d41c9e6fc53f47ae595d0b3c993916893d298b931", "T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "b39add119a7fe2b3f8a551d942fb49b307c12b8c3c4e266358a91775a0b2129e", "T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "f281a4acedaf1fc8668051d4ad8980b6f7ff77aff66d0fc9dbdf7dd913ab8444", +"T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "54e85d187be83f104cf20e77a5ebb590215c25385e420b6cf4081d2ac56e844b", "T3T1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b6ff723e751f85d215fcd8c6f8304e5dd9ccd89112aa9caa3e7601e122eb9510", "T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22122,16 +22122,16 @@ "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "f9d162bdfff8eed2218ea1aa59f67c857017f58496ab965648b39331310174ad", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "8c81eeee81618d9aa8bac4b7fde9bf26b981e07016208476951c32cbfa8a145d", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c9efff5e517990b641bf349b7029935268fd11368c6dea8197721ded90f9614c", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "32a83ee81df8569e880a8ece4823207e25e6796edf592dfe0684cbcdfee01712", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "229d62387dc3b001e4e53fec0f9b927f7b03451891c9b8d7a656eb65ea2d6b12", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "70430e8f51cebcbf64aaf07549b5baa365775f6d5c0d55b28724d681f16f79e3", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c9efff5e517990b641bf349b7029935268fd11368c6dea8197721ded90f9614c", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c9efff5e517990b641bf349b7029935268fd11368c6dea8197721ded90f9614c", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c9efff5e517990b641bf349b7029935268fd11368c6dea8197721ded90f9614c", -"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "34c0fa080e35b7237dc9406dba8b17480491d28e03c7af5876f151af66fecc5d", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "ee8195be6f19c4a34880073e3a157f69f88a3e6a2c7295cf2db011b603d4f383", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "7965524e4a6aad306b217f08740c17c07f35e6e1432b7a0337ca43c440f99216", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "f5c8e73260c6e2d6bf86378a6b30c5a1957de1886e7d571a4e15def64f70c240", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "4df432402e92d1456478c99be16807c3839e7a2d67d18c0733b76450f20e2390", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "5cdad7760d965550e4e2295daed05b0fdc8fbb6c90187805c2c9ee3e70e03c14", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "731386ba1f0e4a0d649149e45d2a1a61c1a96450d545f6c0f605c127d845fb10", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "f5c8e73260c6e2d6bf86378a6b30c5a1957de1886e7d571a4e15def64f70c240", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "f5c8e73260c6e2d6bf86378a6b30c5a1957de1886e7d571a4e15def64f70c240", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "f5c8e73260c6e2d6bf86378a6b30c5a1957de1886e7d571a4e15def64f70c240", +"T3T1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "dd4bc8f6562f6b3283689bb9e6c760e01f57512179b83d02e9dbcee4ea2543d3", "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "3b46c01ca010f53efef23984e047062b07d0ba55b7ec0d33b58221f7206944ae", "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "a6b2d07c3039f3ac34e3e07d5692de043967156baddbb6df56da297351035b6f", "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "f57f45d1ccecb74d502163da7acee3d1e970f60b8bbe8ed9f914836b930c3728", @@ -22150,7 +22150,7 @@ "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "11e0b39d7535fbb41c0006272b9f34f950d8c7a141e2bdb31d7a3c5d653ecadb", "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "5185fdd2d6de2159ba4ae5887808cbad13a3c022ccccab8b35016aee672dff58", "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "82cd7db7d46d8f319df7d332bf1fd02c6dc1ac5798109264c003ed641544300a", -"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "4a32f4404a255cfa055d10c60a638cb7f8b336df1fb998dd36d5e84794290038", +"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "a57a2f9038741b16098751ffe03bc9daf376deca7466d9f5b4f0a5650b5d1f72", "T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", @@ -22164,13 +22164,13 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "39fbc2396f88a6e946da3e3b2c4ea149a526d640de9edb38e0907417ba8d3453", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "a13518fafc9911f11620e13626449e63190a7d2d309d352f47ae4777e17e1691", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "629f2d3d1f414fd31ce4b2489f07645729314d70920ec0e0ace588ad90fd310d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "0eaaeafa2e13de37216c888643d96e62c2ed15e079f0042a79a0b5b24be2428d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "3e6443b8603a0c6e54896243364a2bf738411d43ac8270f4a51fee1107c64696", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1dc47e6b3962a8e91897fdfd25e0287f191ee7fb85e31f8e99fabc5a2f3012d8", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "aad38bea46a3ef894ea39461f510867532342e2dd0e7a2ecc6d7edd1525e241a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a37dbdb063db16baff8086498a1f1b3b32bcba9f508d51af1a8b96d7819b2528", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "592362a5429d13daa3b323bec541fd6ad46ac767122261aa95be5136303605a2", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "42701b5c2b6949607eb93e9a71888756ec5b0b6958183d5751eaae80a41dd4a4", @@ -22185,26 +22185,26 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "9624cf5eee5cbcc8fee67dfea23a1dd6d01cfd6055b3756a380d9d3383f256da", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "dcee564a2c7c07e681afcb1703ef0a95607b9dac60d3c6494432993d05424dd6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "8c6e064a2494fa73659bf57ae0c653465a01c7a6c2d52c870f79b81b6d0b2ff2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "fa293020a4dd5bce2d1f4ee8df03ec49ee888f824cba50f67d35b4863940acd5", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "22a7ae444d95e79f1fe95594a273a41bc258c47380df542afea52e70ceeda023", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7c85fea4217087a2d5fe209c988c5b0d3476547688eeac7ef0ce3c742c3e8682", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "aad38bea46a3ef894ea39461f510867532342e2dd0e7a2ecc6d7edd1525e241a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a37dbdb063db16baff8086498a1f1b3b32bcba9f508d51af1a8b96d7819b2528", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1a1c681cb798a5350dfabb2358f2539d9c0413d4846234f34b1a34ff26045d17", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "1a9a2cdb163d1a60f00644c8a8fda75e61d09995d3299b86e9637c50d80f8255", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d846017b38a50af96e41a90eded9796e4876cc9834da8c118c3995c5a9b22ea9", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "a13518fafc9911f11620e13626449e63190a7d2d309d352f47ae4777e17e1691", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "0003227f239c1862506e91aa6a5ec818522a12791a8916607175aa6c5a1b5d3c", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0eaaeafa2e13de37216c888643d96e62c2ed15e079f0042a79a0b5b24be2428d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ffd25aef4ec54132f553eb9404dfc70cc0b78f9a620fc107c7c89f20172b7f1c", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1dc47e6b3962a8e91897fdfd25e0287f191ee7fb85e31f8e99fabc5a2f3012d8", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "2dd31c7de2e00f515ff9aed6d8fdd1fc3c5afc71710f3741e172e2855209ec03", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e18942f84b7c02b06360f66d4d4db82f4a1294d63ee38e50687e6eb87126f32d", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "1a1c681cb798a5350dfabb2358f2539d9c0413d4846234f34b1a34ff26045d17", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "dcee564a2c7c07e681afcb1703ef0a95607b9dac60d3c6494432993d05424dd6", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "081c428bc2c5936f907eabf4b7d2557cbbf4ed32fc538441975354703af83ae9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "fa293020a4dd5bce2d1f4ee8df03ec49ee888f824cba50f67d35b4863940acd5", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "9c799f2c623d29bf3eb604b4683146f08d40bab2a2121b6f0a7d33788e14c595", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "7c85fea4217087a2d5fe209c988c5b0d3476547688eeac7ef0ce3c742c3e8682", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "70dec2ba507f4881070308ba9b1d3c3d0c135dc22239e3acb194a6465b7f0af0", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "ddddaef5156ea65f897313a71fd5773578f7cc16bd885c69189b61e45b4e067b", @@ -22225,11 +22225,11 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", "T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "6b7457c89ccbc9febd3053cbeab21aacc9880ceccc428e8daca2ded3e56fd626", +"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "1812247aae313423d16b5a1bd1f82c2b00f48fb5ef1e0973d351aa69ff9c2638", "T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "6b7457c89ccbc9febd3053cbeab21aacc9880ceccc428e8daca2ded3e56fd626", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "ecff6eaf1277137b16f8a227817a9af2570a1c46da6b824c64c477b710b3e00c", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "6e8c1a4fd84f5db0f80dc9de4e35e5d1843d911f8d33a838b5fc91150ca78be4", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "1812247aae313423d16b5a1bd1f82c2b00f48fb5ef1e0973d351aa69ff9c2638", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "9e08bd6ffc3e28f8a9177c429f7f01211533becd9b7c281ff4f94e52e64dc4fe", +"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "05a835f6ad16c0f4d321c0114a5499dddf5a5938b4e21efd6c5657651e38b6e1", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22237,20 +22237,20 @@ "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "9836b0ba86b9e7d58ccb11811aba96618ab9ade63f6e4e83e801e89eff4f184f", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "145234fb9efb21e4840db363e261a9ee9343352cc9317617061f29cd375ad43b", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "053800d2a876d6766cd1d8b0a5600a0f66e28577a546c59fe404ef9de4125881", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "81287a253e0765dd014abda2a57de5b20a2425895f376e84099d86349f439ba9", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "3b1d17044a41289c209543987ce1201eb3fcb08d82ac6a2f3213dbef4919b040", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "b0a85c1e65d3a48dc90c21512fd0379370469238855d93af213711ae99b9549f", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "2fba7ed19bc9c5eea811a66f74d6de0c861d0ae6575e6ba9741ebd472240ecdf", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "32645528417699d966ab02e4786a8612777fbc4caa20484ca92510d290755be3", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "3fb82b2d11bdf93dae574c95b68e36d4e569b97728f242489b2c8878cd3db9f2", "T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "10b9ab92d1e8ef2e831ab20a63e3f74d0574f8b8f144b498b6eef58a720b1b8e", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "a30a7232aaf89fa73a916b0a5abc1537a87ce8a0be93e352b3afe7b926964513", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "9e2b02e39439aab046f225c2734ef661b679856fb86fbd13872ce5ccbe58096d", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "fdc9bff64156a8aa036479fdbaa3ab23a2cd0fd71d00c92aefd9925063a0db1d", +"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "9e6deba6d192f60d68504c313533847247b42d0154ad5a194151a50f0c80f82e", "T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "98dd05d472320da4aaf57f00c9de193668651e4b3e44728ae237f739ee98f2d1", "T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "a31df5bdf943d0e44f9c5937e37dfb05ba24a9c46b9d18bba93e4d32512c2c8c", "T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b8d64aa72fad35082b6b2b3391ebd6470bc83af0115775e6bc660073188b534f", "T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "2b0a2e12c23e425c0c777a188424f3011478a85010613696eb544a2e4a194f75", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "f5cb35f904c7529192420410c7bd72e847558828779379267d5634f552d5e642", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "400d50061c103adc8174221b2c9a3f8d7e0f6e2db9690a3da346a8043529c63d", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "b6d5de09c2ccfed35f49055768acd28a617cb7afb31719d6d44bec9c7029df00", +"T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "9658e2a196c78b8df9d893aeed64f96fadb259e18d080a3e5d06d1be6adc2662", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "728181b5efe8ee243d8a97aa2738faa708b71952a88c3b78878268f7aadfbbae", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", @@ -22273,7 +22273,7 @@ "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", -"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "8668b51f0d0319cb641c22b1abe66efc7c444fa781201498ec1ebe5b94254c0d", +"T3T1_fr_misc-test_msg_signidentity.py::test_sign": "91a2b043ede4563f123a756ac3241a7832c680b68c102ea4f7e3e8c5025031c7", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "6f1af5bcdb69b1785e2869383b5b8c00c927e34f9db99cf7eaae81dc89d7412a", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "cf8eed70a16404ee6cd0cebbb5415fd0a13ad47bf1ea0a31b75b27b6e4e92b44", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ecc8fb21a4be46de8ad9213d967f9d1b7dfdb66389b6b6397dd47293b09afe67", @@ -22285,55 +22285,55 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9dc0347729cb690c1937c0fa5987fc02c319885044990c81e803475fc624d875", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c072f3b9ff064560c81fa90f95d7b8052ed24998512cc831f624925b54d2c425", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "cfd96567bb435bc0312c728db723d70720d0ac040c01da3ed7213f4f584fd44f", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d24faac533804578f16edce42403a479c72ce5f431a80e214ea4a0a32b7fb426", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "51ef3719930b61a68b05acd1e30b4bac03fe37cb02c1e011bd6d52ab5dce8c76", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "a72c505595ff8333d8a6328de0da73f648b8314a874f7431a8f84740ee48ba26", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "b595e1eccf12e5900275682dbd16b2d4c81b0331ee9d95f8f34685cf0bef1470", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "77544c67441c0ccb179eaf85aef108f00af773ed285f570d26b96722a82722bf", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0706b1a2c77ae9e9e466e2d4fc0097d84f61218b327055f2810d0cbcb72ff52c", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "6516c6315b3b3c4b5339076e1aa9e77bb543e876a6c1c9966928ef6325730760", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "97020c2155cd49685072c2431ad624ff14c4ae55b2025eae268a77f088f2f482", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "7cebfaf20bf59de093569cc31a212f1d3b9c67daa836868362fc8dbd939677bb", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "de3a5ca424f3dbfb7555858aa9ee80a4c8fdf149c486bfb296766deb4a4edf27", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5d0a47063d8792501c593176a36f484d6ad2bd55e7c4401df7e4cc50af1aec2a", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8c2cbbbef79ce8276aa81e185f2ea0401ade4b1022f726d72f182b0b2e617453", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "67c2ac7a2c93bc64d4852fe771ee8e466f69bd0744b0e90a0fcd82452a37de48", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7a804e6df4d5ad2e6bd2dd1404af0bfc36c5d23cf417e87dc247b277a7b9f749", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e9bf60ba2b6ef438291549cc4b1249f646ed597ce9d0e30d59118ca3522a7625", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0706b1a2c77ae9e9e466e2d4fc0097d84f61218b327055f2810d0cbcb72ff52c", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "449220f7f7b468ca9246411888f8ea8cf597efa1964b3448ce90c2f2aa585cfd", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "877cad76bab1a8fa1e3ec23fba75d134f6a59e0c0fe7033175eb33560cd4aefd", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3b126b284b5f0cc50ede602f340d2a14d4acb53fb26db33d22c9c31b40583295", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "766bd50b875d9dc044d09b2f24e3bbda79917061dcfb7c2ba56597811d09975f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "988a29e5098c9785f4bf6ca5fb786e1276e5793d729b5d05b9f2d2832cb69d5c", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "48104bbe44afeb5bbe4dbdcea87442a672ddf30b58ad3f89dba079c8b46bf6fb", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4398bfc8641386c350ba8e40d353f288e7953e17196d427cbe02182e0c1836ca", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ff1a4163b65bd65e3864bcc54a077562dd069c82f7ab380455238daed6f21d03", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0885cede81534f157159f1a52d5f36c11e8529aef2cfc8c0012b212b9ca648af", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3ff4200ec7597124cf682754ec770d9e108c44b92aee70c335861daf4eed45e0", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1cd854296495a470408be4132ab4c1ea3f859bd3ae04c44b7940017ad4129370", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "cd39245b8474ac2b57cbfaab8f0f351ce4aa6a9786a3a0e1f3735ec4d0bed77f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "2cc9df0942337caf30ed441830c2bffd9f79c8c5704a1d2b2c0c2d8acb2e1d53", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "77f78efaced6c65a1c94ed1fcc50b75a12e5d7a25d4979fc4892017b510f5991", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "af92811d11595e6fae1ee2e40a356a26e2c3a4682526d301c0fda17771531852", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9ba071cf5dd01d79b3218da00c54c980a69d366fd45c48498cdbf1dff8db99d9", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "03d2b6f021517a62ad1dd810f0521da7302b27c8d029a0d5783c5e7675da8cd8", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a88a7dabc05629361f27d2939b5d566e20c232e94754aaf680ea9c56901ee608", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "5ad2e4ca30986da3a3748f7ea162545018170dcab746ae2f08dcd7c06ec92ea3", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1fbf5a5c8ba23a5bfb4b479a4e1482ca1d3dfb81a4b8418166a6ec61de5bdc60", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fc65b7966ba7133f913fdfec43f57451c0454e2daff06bc9de388c389cb6beca", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "dcf57e2598cdd35c6d1726d44cc020c4bef53ee1ed8624224a21025c96668be6", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "f98108464b7c41ed9b5ff1d4a9321a7f6a81808abed2a51492fa3ddd5490152b", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "4fbe525092be7bf965cf58bd43baa5201ae496ac97dddad9e67c3f0e78014e9a", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a2005c3bc44422a2acf13c98464105c33cbaed66cb9cb0059d5b9381cc728e5c", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5154ac51f24ceccf5e421d76947977160b85c6213a8d2ce658a97f4f56d8d142", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "12a7942c3857b848b0f78e1e16712daa3476e7ea60fcb43975aa79c7d158bef6", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1f185acd234e64cceb327720ec7eaac26e8112f30d2e108537afe532d6cfc320", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "99b0039cf294fffffe577b9b5615a5390beb760f6ab87f8a5fba03e9ba02ce5f", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "ba753fde1b3edb926cedf77c42d3607d3953587e314b8f15174308d52db11854", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5db6c5500436782ea08f597aabbb867c96ce2748bb6cc30faebefc53a781284f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "dcf57e2598cdd35c6d1726d44cc020c4bef53ee1ed8624224a21025c96668be6", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "d72559f0101011f626c628f1972e90adc3ae1ddfa3df805ac32e259d64aaa4be", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "8b33648f7fc7f020fa26961ceda14fb4a22c3258843e77a17bee76babeae2ffd", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0efff5854b2032080605a5a69db77b0c4bce4af3efc29d5d04c456eb40ebb8da", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6fe760cf20032efb4037b3c75bfecc719fbcdf453deef522eb9ed7322de57dd2", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7287bfb1bc62b292f70304a4341af5a138c30e0cdbca975d6bc65d852405ef9e", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6e9cc208764961393fb0ac1bf1eb321e2f8e4ee18f5530355b8f9f20ed4161bc", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "81c02d5b9de28634d14ee4a8383b2c518f119a7c650d806bf5bf22ca8dd98941", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "339112ae31ad4f70b4aaef3d9f2604417deca19d3d24a71b19f6e0005b04a744", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f9564c2d8233fc78a7debdc49906778b1ef87937bdd424edb3035f9c74b2a47f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "adc042099204299d06506386fc68408b9a4269d0b86b8f517f69c1c848a7bf14", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4c29c86763b8483a8115014c3c670564a860ff990d67fea7e2dcee1a8826ef31", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "334e76acf270ba5a0e52159cb8787751355cc755f631bb21cd46e9f603772756", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "e76adb65bbe35d4ec5421e0938aa507fdaab0c532f494d5cde39eee36aabe5f7", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e2a6fa0615f3c865646d837db898865941da8facdd03228ee875bd258e735772", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "923412d33b49dc8657007a8cb17fcfa88d07a3ed0b2b53b5ff9f50b8a15b9581", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "8ed4a298a1ea7c3c47adad37b415b225a44ae37708de65674b9838464ebffcbd", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "47a3dcd0cbbd97e5296c4a535f1425cb1fc2a865a8a6011c9c08eca3ec14adf4", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6b0c044b0a04951df5c04f7af76f3415a05864ccfc91ec4618feca65c30299cb", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a4c9a3d0a9e5b2e20189911d4919834204abfbc87881b6f7fe10db2d27fea4a5", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5f292ff3460064b95ec192cd667341dfca7fa4cba2cf42947abd90ace687394d", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "49c969e1d74134be83f6f320794d5f2532dc3b211b80438eca1d5e0facf7a1b2", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "3adb483ee3b38608c6e83f0eecedb0d30e1dfc6c7f9b6620eaadbd3f811ecd18", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a7ce3d6a6da4340930f0fe70d241bd17065ea66ca33083ee595c0b6c5bcd6a24", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e83b498089bb049fa2598aa40ee5aff762125c07c47e9c7147ef92ea2faedcd1", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "53d51c34207a624d4cc8d0cff5f6ae82a5f85449e2e0e70e96d59040c6f0202f", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2e6bc241484cd1a5a05a60bd773b5840bb5959cd36644bafbdc07303e3419733", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "c7552e66adc94dbbbcdd9f548511572a698047128e5a36c90b53edcf87a72f2e", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4f16a1f314e96224c7fa0b5ecc9665393b2ad0a148dbf406357fce38860c006d", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b14912e0ec3c8d9898001abc593bb62ea10324a3c02d3a2bc24d2744b56b58f3", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f3152c53c65d5dccc3106b30b36426f3bd78d26f8456583da1d1e58ef5e9b9dd", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "fb56b159c0d2a5965a6d921d704275e5f9ea9d5522c4c1f1374ab704d531edcc", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b69299b8e3b0c0514143d99b7f294cd92064f9b366eeaf8b942438e12d37c7b9", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "87d97644bdf6111091f8e8860b224dd3e65c5ca567484622b07a19180360a827", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "29604738b6aa2ab0e3655212536305a57279fd6849dc9a74c01b1c535dcd50be", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f4b829614861c7243f7a8e1a21752ef46d36aabe0976329da49cb24ddbb491d0", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "962ba6124c964d7f65c155c8dadb900a8321823389cedf2dadac501c3498db91", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ecdc734474fb85fce67b058b2111e0b0e3927cf588ef54493e0bcc463c34ca30", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3041750968c23d2a9edb43f45abcbc66e24ca38aa511a4c5e4d1c7e552510af6", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3f16663523a63d167e1d63c5556d4bab5e32003d359d5474e08be44d421e3859", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "dba699f8094e56e61a1c7cbbec346b7b44958d1b3bd894d63411f7832760c94a", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "aba8bb3915577a9b441d83626672c4efe5188c43a46d937212a47387918a9c9d", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "202e5e73de82f528da179679b2bb7c80aa8333e417e0b0eda44ad2e74a0c3dc8", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "3daa711a54b41d9584fb509d13f5f497d70b978c9b544a790a979ce23c4d7fbc", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9f3033804af14d08d8c6dc67e83eac4d06990a7ecb355445fd19baa98f974ab0", @@ -22342,83 +22342,83 @@ "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "73191401673c02de0a069983f0f0321960bedf47676e35d14f729adeae5a30e4", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "1f42a588fe0d827231a66b991ee76adff5ccadc28779ad8e1ba10d30f77ea396", -"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "79f8c3df20e11ea0aaedd3ba1da1a3bd4b4c150ec5847a45f443e3c766d9b7b4", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a8f83783a040d5587137b34ad3a8b3c05e21bb8f8a1f0c06a1e54ebcd33edde7", +"T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "b39f8ce29ae8eb4cfb4d947ab76a06b27555fbe0772e2a2892e59e83300e111a", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8770ca54ef8c9f34663e13e7e326a421bf95fa3d94b161f8386b98aabd329bf7", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "a3ff63bca6627c183e7204a75cd7d0b7971ec30ee56e37e4dbbff07cd904ea62", "T3T1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "8555a85ace28b9f1f4e58fe66a30f2e64c74e9e2d6d69fbd69b883a27bfed3aa", "T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "79f572e356e3fcc18369b1ffce1d07291e4b5ced0f174ef8e35ccc33fdf75c11", "T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "917a43e5321f55efd99b0ccefa60057afdb24c7ae594d23840c1e3146590add0", "T3T1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "952b53c11160149cb1733caafdb9097bf21dcbd83d5edf619611e6e38dc564ce", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "dd8f5213e04ca8d9fd520999db9eb4ddeab372d62b944fdf2ec7a8a2b98cbb46", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "490178e4eeba43e622ced4ebe8274498ee6b5437570abdf41c46f464c65b672c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "8d11514c76b064b4b4cb2b4cbbb43c5a5a0dcf4d32e58844b51ba9f4d09f1940", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "6892287097016eb1097fe7552797152c581b5f5157d42c8b89be0b4e11234a2e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "d2d487eb444c3ff5e95a576747b6c81a5c92c886f83b23b842a6b60a46e655ec", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "a6c484186e93fa9f17ae3101998b05542223cffe07c5f8a06e622cbab1622b67", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "644fc689e51f8624fc628c34fb0e3d9e9b5001931ad53f7e97cf3cd04410ed94", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b063cdfaa9ac6ec8a65ac6a647f7fc5359b539935188c259b962588720865730", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "c8429cdbdb3b2fbeb744aca0477f930a6160f2ecb7930f9a5489f1f3b6583044", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "af98a96a522f5c52b5171a8c7017e1d1f6452af6086d0f9adc6a2c7ec303b7a1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "66b5374be965a4d415c69fbe14ccbf546aebcadfad927ee7e69fd9a7dfc4a9d8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "228be4eaeece98d0f060d17014dbcc88054df819db1078fd58745601aa41c0f2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "228e4c0a7a8daffad3b2474526dd88eb77b5f6c37a9b650b77db6ce637f8dad8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "76669cc1754dd4e930cd6d5b8694949760817ed25925c7044a2f4c5d7773a11c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2bb4379a94509f22fceb303ce30e9a6b4e5c017928e58f4bea8fd1a56ed662cf", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "f392b2efe46ed33e3846385b4a6d26911adfaf554fc52d71102aa5b58f13f581", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "254c2f9a69154cf3112f2dae7ad587c9e54fbf0ae2e5f0f485214924b88db4c9", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "fa846cad4ce3a22bbedf1eafecc4744f91537d3ac4526fb78059b7d8fae94930", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "fec612dbad564f7680599ec2818d09b93efff9aac8ba0c2ac311180467a4d17a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "b310122f8a469ce01b38dea57262cfcbbad4f0528890387a07d360f0a6e9a129", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "dcec2e98b5c1ea405e30169ca206ef9e9cc899a85ec9f09f4b74f9d8dd0493f1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "dcec2e98b5c1ea405e30169ca206ef9e9cc899a85ec9f09f4b74f9d8dd0493f1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "62303ae63b925a065755f8f1baca230d5fe7335fd94754e3e1185ddd62fb598d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "6fa4d1073d5fdd0b44d00789ffed6bc50e5c3edf3b1668fddfa575fc649253cf", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "7d721716490880579058d613cf8de31c974a513d49bfb02997780a1c6068e16f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "183315e8a051b5a879ddf0c78ac968408129396b364b22666c2838a6e607c692", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "941ea533f1654878a5feeb6687a9f90878673115dd6bc403b7d8c945ff4b4bee", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "989e4134850258238581746ec3dfb4e6510b47ae2df7af2d7b1a72c0b583bd06", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c607805b7820d0006c60001619ffe5bfb7a5bab893c6126a5280b60124905aa7", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "28a774e631af37228ed9df32140bbfd9b02afb389ceb790c73df259257fba086", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "96274e9dc717c5ec7f879c55e6c74ded19a6f42bbcd5d96cdca75db9c8df80f5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "cf2a35ed3d00ed44cfd684c0888e67c358c09f71e79e0a4e6191494b776eaf8f", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "771ed57e5d4f11fd114682ff85cb636ca7ef533951776e5d7e99d14117b7b5fd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "567d3b964a7d1b2790d635f3d3e6b9093a4ce4e439a697f4c84a085b37921a03", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "688d7c555fa2e2e75c009ba3cdbd5d9d925b2fa71d3e0a397bb9ad1759cf1a9b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "f01a7127e23e85d483159dda5db9e71e61a3fa2efbf7d0a0c1dfe3359a779341", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "17710d8e5cd0a318b48766c443997b8d96f8395009a344791fa8ed337a5f0b82", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "48a62751b8c30d174ace3d865586963107ed715704949ae3a54f683b8fd7899e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "72c92fbde2a5836ea62f3e98926bd832008f4f2fa027255664e2fc1b0f334ae5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "766c4650d0f96255e59688d6f764cd917fed784dde238a93c9821eb247d52524", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "1f77f9a17c5b33a6d7308d025d15065de1caf7debdfc97db9a96ad5ecd9f629b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "1766616ef6ab3298e39d530700e645de29420dbc655f05d39a5fa716180042ac", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "27770e7afa8b46d307b02145a327035ce14e1184071e177e5246959b08aecacf", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "00b39709921b989de390e8ada8213af0147227a3e2b9ca97ee1e67acefa42292", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "93944102a21691554dee313306319851564d508ecc852b096fe732d31c4c1fcc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "93944102a21691554dee313306319851564d508ecc852b096fe732d31c4c1fcc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "3ae1d573816a833a3fdf32e8e4b94c39de487f1cdb338e3263a5d6dd502e5e8c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "94f1aefb7696d0c465e6464b1f8af9413144530d8225d797e216812a0c5c8106", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "312ca83606acf63fea69c95130077ef2f7180c78d91199609d37c731603519b8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8267d8d301b686d5bb777884f6aabd18f5204194ea3279113a6655086b66965b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "b92e326a41b43400fa42485ed2cad7ff37cd1fddec1c70cc2c78a57707279a3d", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "aa95e341c57582d957beb1337446dbbee1fe366748a51aada6212913637e5401", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "5440f1926ba32428526ceecfd399ecdb707ee5dc4142a7f971de1d014bbdfea2", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "545bf29d70e3455bd8491bb923564c7cf84296fabf61a4dbdd96e5b5fe2fd71e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "6e26a3f9d7b1390797d435ee3f51e2039832a3b474064bb834fc1bd70620af49", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "23d6ff8cc7af27c7df0f3150c44e1b404a2f74f1fecc26dac3d186031697e7ad", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "352bb901d54f4629d33a1e85f849f7011a63de01278f709ecb2c4661b99e20a6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "6032e9dcfc2a77f2dd79582ef2ff56df56ded492ccd85b1755507fed5c937a65", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "130f4768a60b01d7f4e011bf91940bdd99583ada660ed4f793e2a6c9c2baad76", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "6c7d64eb0269e34492035e1cd328505f6a5ec78d85a0ce5074e29f4adf14a440", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "a396f86a46de35e65276e1456e2ffc17914b286e3c17c743c1cbf0b7f4de38e5", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "7e5fa2338b4fe31f23229c4abb816dd0c35011d8b1856d367dcd99baf920a6d4", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "4aedae185b768a02ca2bb6fbe573958a76e23aa66382a36146cc05d6d92f0629", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "8956a6030604d02ac4f3eaac4cf5d573bc116388740f92a11a09f91fdea2cabe", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "4f1c2dde51b29923a94ef74771730b5c8a0718da5456849a0cc86e62e9bd10a1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "516ecb02a3c3374f6f1c3069805eb1f471571b953a51285281b4ef5c272fce51", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "40303d6330c3ec20b390ab8b3bb16fefa75d030f69e662bdcc7859f4b191a893", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "711e9535caa3cf57c0ac49b83a5f4beb65876a119d7641c8edb77a2caa79fdab", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "87e41f01c8e3cfb7fc036a17f38924084cb65f36d3bf7f3751e8d426c020df7e", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ae11a301f4f4aa40ab03f1cb555958d31282741a78734509e1cc959022ec8ead", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "4c2299d95068ba0af13bc7513028aac5e1ba7b0d57172162552c72dce7e96775", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "4c360c0192a92989c4d99cb237d93476d1c7a18f8a1922a8b860f2e86ffc886c", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f779d0b0b9a336478e651cb7b74bd4cb62b50ef6cd1561ad0c252b7e0107766a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "d04de09078617f233a7e17716d87088c1ddd33f0545f9f8955cfda73248e9123", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "f39f872b6a1383b22d8f059970f39e2d5272e09cdf4506bbe1ff58c6fba4700a", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "7b23ae60b2e8b2d208c25f3ea9d151ab463fb1171a8059f67016a6d2763287c1", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "c4f4dacf91f76def722ed1d21aa63fb77afabd9f54f26ce1a9574f4fad38c7d3", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "3bae8fb1825fbacb4409e4b7ff237d39aaa83be21b3681e1832a67bdfeb1d07f", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "ba16dab3d73a8a7d18b1305d1f3d470e4a07f08b81da63c4bb0af833a125479c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "511cce01f7c98d56af1818731b88bed0fd2e2cb4034e928b0a16e7a16373f32b", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "a3d439caaa4d62098d577a3aae79ebe09da8c330d2ba2df9975d46cf8734b036", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "a25a9b8f018a2cb82914aa049649ad87b74558678926bbd2eb9c753bf3ee5a51", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "315b7d0329838499419fe4131b3b7db6f158cbd81537a724db75f7eef18cb0b5", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "785f7a5ddf2e92bd504d135a529a9c966449ac89877f7ee57f7c5a9d6e773882", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "444d2a8126dbc2b89b28d4d04468ba355be0c639c320b413c54c4b1759361c4e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "dc6cd23a57884ac625ce9516a0a059e345553763c8d3d82fa70e15026c06108d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "8ee56d76c239a42cd29f3abf9e33cc5802d7e43d25a47b6d7c2a34e306642ba2", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "3d1eb13a3d509144d39c3feade2275762cc034e709c9e0c5b199d5c80d776c32", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "fcb98f061ba36b0ba6f5923de137472eba639570170c05cf323a39f974d22520", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "5080b033ab513eed9d5052899ca9948bf2c0c2cbba1a64074ab55309465e0725", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "5080b033ab513eed9d5052899ca9948bf2c0c2cbba1a64074ab55309465e0725", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "47ca772d71a3f620a926ad5bd89b16783e07228e649a856f72d9d3eb013aa67d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "4a7092ca737af13dd2ae48f17ddbc5aa8b571f30c58b7c29e65d92b5f6942f7a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "46623499ed85f0405059266549a0dd1671656f75ed4f7a93ea0f292a60e949ee", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "1e814cae0dccbc47c8454b9083ec8a1954cd04a1a253cdb3086a9c913e9ef557", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "0d242f445bc9fe3ff6aca58e81dd8dd389e902b179b3a9205af040bd69067927", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "0668db77831d790119dfc003c7babf4151ad90b547a80df79a97467ca458f3e3", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "ac4d267c4bfb499aaf6d56d6992a641bff82d8c4b10ecd36f55e156822c32b28", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "a4c98ef39876525f36366e258b14fa534deb0a325a67b4608ba5f63ba559411d", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "2a94c6b842b47c10676f8fc63dcd812241401381efe3916cd9912a7565640b6c", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "2f1196824c3de09740700f2f7c7496971ca3f85cb310331dce87891ace4d83bc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "d7bea82c0ae7d882dc27e68f3d5bef25bb92a80ff91f7e7d46fedf77f77ec574", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0e860ff3c95809c662df8fd4c3c06d02ad44c324bcd59768869f0c854fe40a7a", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "8dbdfc8c4dfbe8244d9f349a0ecadfbfb51f4c8ff2bfdda0505facfa4539d5fd", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "780bf581bee17a869fc99f799d60034cdae78de4df9b2542ebe06669bb6dc956", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "190665584f62a4ec40b85982906dfa45e8de8942da1d67a576511e18a4143f0e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "cc1f8204e3528dba60a3e5a171f5c01756ccd084076a3388b1829b3785bff4ff", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "9160974cd49fd0614d423bd7cef7ab3289b1f4b7e7b79140aa960b7ba7bb18ed", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7dde2c7e928308dd8e0a1661888e7dd7510cf2bb0eb8794dd042adb1ace3f4b6", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "6732f4a02577df715b0f731680de8b08955f96454b39501c988b0e0b64010a33", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "b5bdec8bf12e39f94fcc38811534f301c476bb908c4be96f5d4bc22020f52a38", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "febcf3516d09ed639e9f67a8e47544eab2319c9d10d6133fc9efa55d380e1c81", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "ee13b0733ef38da7f3052889e1ba183cd479d75b31f46324c04e7979b75d0295", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "8a95bdb8762d78e398538d006e7926b4ca3868834169af91003952bf69619e75", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "114592ca898fd911924935d837663d10788347593825542db2d34ec8767f7bb0", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "312ca83606acf63fea69c95130077ef2f7180c78d91199609d37c731603519b8", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b440d63af7da9d501bb71593498e52fba4d0cf4c22773934332a9fc350f34e29", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "b4e7042dfdf0074de0265e58f7cb8193ab2abdbf35eeb88e3fa30546a1e17a0c", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "34dd25d073f14ce42dbb946562e304e1fcfcb73415c819320647a3a0798ddf3b", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "25abe49109859f88d3b419a61184a060218afc240f15d20a05b25c3b24b8e5c6", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "d4b5cc8a9ba529ae2bd538bc7f077662d362e60dc7c284bde68f8f741621874e", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "98d9b823b6c534666b2cf2fed2af4b61f11ec0d3ee42a05032a9797206a915ef", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "1a3c6936d604d7096adaf893187387416cac96aefa21427a080bf14906cbe880", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "df18166f892f1adb091fc74d9dac5818deb75953420e643d62b500a065694782", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "e370b70838acbfba7465fbe8c5cc1ced69b279ae0262cab272a32a3f6e4df077", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "c2e88f92ecd08307be05684e0aba0def0fe6e63121048c0c12a2d5999cb470a6", -"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "fce0c2e286b1801208f07ea8cf5b985c417690a546d7fb3a528058a25370288e", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "d6dead2ee8361860425e8adbc52c90a2daf882b3d127f2be84c9fcf40d9dffc4", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "db8b7691cb1c2618764e21e211f0ecdd9178dca8421d4da70f8620a2639f75e9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "84ada2e9bd35c52f51cb868f42b2ee7827ed97354ab6f46decad68cc55f07b04", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "a1d8c5b5ec6119244f3242122dc1cebf45e838b1b0ab8a8bc1d5c23f0d1a39e9", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "32b8d20620a08bc284b80673bdcff91654cdc58ca3315d7e9c58818ea9008ede", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "6532c640f13d15df133218ef7580c67d19c27fe083bfa4bff383b0d011b5fa36", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "b5b3f074e9880bc516d8d36ab0e7d6439eb96bc4169c3b07a3a6d9b5a98e2da9", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "48553c5ecdcbd89382aecae295887df32e1349d60308fd44da6790c94b888386", @@ -22439,70 +22439,70 @@ "T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "d0a162592241e9901e06b34410797218bb505ec40499c87349e40ba034dd6af0", "T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "15c4ea872516da41849937c063f962e0c86349fed30dca5274d2271578ebdafc", "T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e59780f4f024580c7ee0a83fc0a410271fa5f66ce7aa060323828925cada5fa3", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "045523bbcf15ba0bb9f79eeb9e37a197e647eea9e953a68f8477cf249c2c4030", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "4d671d01bd4a3420445207d9b6b7246056e46f35fc68dbbc22a929f2c7fca409", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "28ac25cdea58342e3677fd5d376e3ef5cf7030e56b9ab3c1466b9ef21e511e55", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "4b581a01a0131cb08ccb018f15f32bc405eeb23066309d88127ecd8357f073a7", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "1cb38c322e394d4d7bb8d989c70ebe0c8a1116ee2692426d147579f1892a6900", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a84d75175485488099597567a6801f797b41a001285b104ddba32be4e4a60ca5", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "f8fd23bc26862c4b3f333065189ca306d3eb71ded492fac0e94261d4dc38bcf9", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "c1bac1433071bead9031a9e315ae7ba2aa80cd10e4fae13422ba15bdb33a95e6", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "2d02ff5b025d03353459cd5182669b7d5d5fb61a8bb1a833769247b16f11f03c", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "1e9a0927d784b6ae86aa22f597c28feac9553af9b4a6ea3cdd3e3bd0c610fe93", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "fd4914f921bb5235282896b2f04b4c8a7886e5c4fd02f469986608706dee4204", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "03476db5d0993393d24edb0c2eeced116df0c070bc77ac14f97d7954d9a90eb2", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "8cd54ab812b1732af1f30b4b18ed49176ebef31743b54744cabf5d00a033de80", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "59768dc27bbf00bcee38c048a0922b057985f88be92924e9451b6830c278ee6d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "b519a9b1c1c1c06b1495d8be974a949f48a22dc513fdcee03fd95a3a3c414e3b", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "fe97fe42372d5821fd7f9cbae1f5e153d88a53291f8e5088628e12badd341047", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "0ed58a40aa061ec895a923c5cc3c98fc9d9230818038ebee3cf9ba4b21f045d0", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "4af6ead2142086e5403f5031abcaad8f54777b1ba11dfe224ddff5305b9f3b16", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "124f0ceead20b4b468955e4fc12c0d2ed903e00c44d8256e90cbcd28fba4c307", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d35a372b38f4f64049dddd70727b0be7b1814c0ab427a116abbb61ac3ef75932", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "0b70d99affa07dfd75119e8d3f32bffc22fab3a01cd3a4b6917caa0b8b37966d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "cf0c3c9477d4191afd16a235b25f4c601f983bb44d2e7960340181d924664d8b", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "802c316b542f5db8476a95341ba323608f42cb32694ef308c83a5e27c7377e82", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "46a27725032b3ef43cfbb369c87bd6e402a428ae672608fbb68ec3f12a285ac4", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "516a5542b4732e46a2407b1687b7d28f37eb9cf65999c5ea4e28afe1cdebaaf1", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "1d1e842f0ecd42a4383c1ac343d998c26305e306d33798151ad8a093847bf1c5", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "e28a7cec5f36acd88a86446174b52688e8015a19f80562457414f9cb58e86f0d", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "08f1c8a4a7eb609f91066d46aacccf289b04986030dd92fe7e749a3e743d657e", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "c90a598b899bb8b4185c1dcca9a4b292b8c3e308aafb2eecce39aa1ff2f56658", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "0ed58a40aa061ec895a923c5cc3c98fc9d9230818038ebee3cf9ba4b21f045d0", -"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "8469e1292faff89db8a0a10f923c5ab94f5594fb30fd8fd8e5e615b7b2864c99", -"T3T1_fr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "919aab5d554f644b77fa391ade84093719e1a2835bda15af0470813ea75c3e1a", -"T3T1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "919aab5d554f644b77fa391ade84093719e1a2835bda15af0470813ea75c3e1a", -"T3T1_fr_test_authenticate_device.py::test_authenticate_device[]": "919aab5d554f644b77fa391ade84093719e1a2835bda15af0470813ea75c3e1a", -"T3T1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "919aab5d554f644b77fa391ade84093719e1a2835bda15af0470813ea75c3e1a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "7cdfb0607eca40cbc6ea696491ea4afd8f244a6eac57abb7acbdb2ba8c7bd38c", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "9ef9700298160132dded9903f211b1aa39e283e1f840181d154c934316747f2f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "edabaa8c9593f65bb3f2830462e5a52394d18bf031cb4604ac943a03f0b2914a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "7244b8a823bb6573b89645b000e2338883e2c133a31fa97aff021b951447f84d", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "955b20840afad081c2de468dc9aad13f257116faca8f92b0d02f1afc6363ccb5", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ba35508c8dbdd1ebc1870c432b61036e2fbf0a7b1ec63d1a0f8162b75f6acf35", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "05242322072ddd62fa0898d7092682d316a267061aaf8eb4f32cb2bf4b89a6a5", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "33288d9dd5e46d2b32a88cdd79db31fde790c4ba59bc649dc9987e132549ee57", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "de5b483edbf657b3cce82300ced19201eb82c747c4a5e4844c140b639f63ee54", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "168993da0c7c177bab428703eb1ec3b0a024e53fdbbbe59a03d0d02579723ccf", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "168993da0c7c177bab428703eb1ec3b0a024e53fdbbbe59a03d0d02579723ccf", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "fcdbf6127bb5160d0e6a74e08b6c16de19b8c5496577057d189d7ab563808344", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "b47c50aabf68c2a4a498e3546327e3030d799d568df8c0b6d6590ed691c94bd7", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "bad58925a6f2c9f800c90db2099908ad1fc97d42b928e2535cc29de144c000ee", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "bd5fa97b28aeaa8d9747833e3b485e969d889370f3b4850bed1835ff618e9871", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "a1cf302a0d9a97965d8c8ffab35fea0dd1d014039a819c90302f6f3e15a91904", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "1571f63d44d8ed775f17677d76317cff19e23c01d2b3be542836568b2defedcf", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "0e338f4795035166fd319014e3ba27d4bd2ce28b5f88c3f6b103289758542a64", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "a4b99e45a1c2bd0f484094f1f61ed2d59af37dad883ec508202b1e815b4fa0da", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c36d6a8d8dd7843b6b83a0f5b5f364dd7681fcfdcc9f6e9e6c8aa8bc58a29162", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "8dac6ea24060c793a43884ae8307cc11f450cf6ab3e85056b9b585d966003712", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "9233391085aad9c1934c74baf8e86a9c76f2ca9e9550f1ef3cba1380c35ced7c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "76e6ee42492b413cc518b1c8a595770180e14e3d97d81b737404f4af40d52984", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f85fc1916895b43802ca2b6c768c2ae98e9c90eed9d936206f4f856c2981a6b6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "6c3571001ea24edd8d9f73e8e52cfa71d7fff1859c760e6c0bacb92c0d3eb2fb", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "2e655fa9f1711a3a0b26f0d8df8184948bd555a82992ffab9f6e7e0d15e1ed8b", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "4d4ffaeaaa1ab55fcf65eb7372bc90b68bf7030f977a31909ac9a76a84579b1f", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "fc23ea04cb8df111c8b301b3e0275c09c677d4491570e1205ae2a7bd273beab9", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "f83a3ab1653c141c6137b3b795ea586fef2a6c6af18f072007bb6fc5f3be56e6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "12e9a3b2ba278f868d001f485d81115d5f806f5bd31d17dbb35b9900abcd9306", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "407a10ddd229467796da50a519f7346719d386b18f0263f743272d110d94f3ef", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "40d2653d314bf46fed9ab61c46eefb15bc499396f1893ae954b2bfc7c7f5e0b6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "78f5d93d25a87522e19478df5f667ed6a982f4860319ce1647b6e3c32e33665c", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "27382e3157a9780d04c0ae0d30bd0509ab1d94d67d84c4c9efdbd65a65c4b858", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "738fe747e0efebbc38383f36ae493c8b240e6f59949c7cc2e909ea5a7e7be35d", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "4008fcefb6b2b3789b047276bc4be0196739434257c9e070881979e3a752ec95", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "5d9cf3a9217b5fbf3d571e1710b4960679286834414730be00e3e75be1afedb6", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "fb4c97a9fdd903eabfca154cbbe1dbfbc1e37472b15cc403d105b91b88ee38cd", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "79ba00bd6536ab7a42755aab2dad332c3a5e9eacd0eaf7f1eac51e6e4279987a", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "86270e7a2b73563a209850788dd2f6d256051c0b148ecddfbb695bf9bc7d0c38", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "fc23ea04cb8df111c8b301b3e0275c09c677d4491570e1205ae2a7bd273beab9", +"T3T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "bf7f5fa67cee1189338c856c7d471afb1ca322f115dff8996b391d953acba291", +"T3T1_fr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", +"T3T1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", +"T3T1_fr_test_authenticate_device.py::test_authenticate_device[]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", +"T3T1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "270fc3fd6c6edb5da0e119d509e96cdd4c592a8daaae462d99dde81ecd2e6dfa", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ab0af8a2eb878968dc70107e05accee245f2f56149a8eac93852b7f2a2eeac41", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "8f9e59f0cc788666e246a88127aa398d8d5757c6e12aca760c488dbca9946d11", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "80a549e590445339458b8592aa8abc43537d57f37b31f9aeb839e2888b2dec88", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4954fd96192e9e23e69d4ab44b3bfe50ae1ead89ef3ab8b089a6f5ff1fcd0c5a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "396dbbe526aceac9f939de89acbb334fe2358e2b804e4166f9d39626eb43493d", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "ba226a73758cdc08be7287fcf4aca1a6bbb59457d3e1372f2a7503ce6f7c656e", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "2cd69dfac5e8a4bec39fa8198414f279615da589dfca3ea70a96c150a3b231fe", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "5857fd91729f1e3a5c8ca9265a9adcf1701495015cd0291048bed518b643ecd4", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "5021266064daff5f7525bdd3a0a66095100c300de30629a5333aaca06835d2f2", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "5021266064daff5f7525bdd3a0a66095100c300de30629a5333aaca06835d2f2", "T3T1_fr_test_basic.py::test_capabilities": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_basic.py::test_device_id_different": "7a6e9d9acf20fbb898540539232f93c6a703df5f6ccf18533f59c29a8bed2b1a", +"T3T1_fr_test_basic.py::test_device_id_different": "9df9cc6d3151cfa0c19929e885d507379216ddcbb518bbc1e427e64eb0dafdf5", "T3T1_fr_test_basic.py::test_device_id_same": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_features": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_ping": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_busy_state.py::test_busy_expiry": "ada47de94f258bacb141bdbdead093883cf8c619ebf2d8bb93db3e551b15111c", -"T3T1_fr_test_busy_state.py::test_busy_state": "40a55afdcac5fe2309e8ed3890ac7037f9c41d59b8fa582bdb265610f31463d7", +"T3T1_fr_test_busy_state.py::test_busy_state": "31611d7b8e22005a4705a2789dfe8578f524b4f842696b77eae3e6784193de73", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f201ffde0a95ccf50c2a3d176a81fe7057dc8a1a35665a9e227c451c2dde4de", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "0f201ffde0a95ccf50c2a3d176a81fe7057dc8a1a35665a9e227c451c2dde4de", "T3T1_fr_test_cancel.py::test_cancel_on_paginated": "05ae316c64e2ff20085d9f86c9182bdf0aacc5af0bf5ad748478bb955514c2b2", -"T3T1_fr_test_debuglink.py::test_softlock_instability": "f2fe0632c580385427c561c216664ef89e40a89fe7ccde86b5b7900db4a73467", +"T3T1_fr_test_debuglink.py::test_softlock_instability": "172552584c60409031479ff643b9e442632916824b61c4245887141880c3de96", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "c6e89f9a3ae02d0c6eabdb2bdc97deb75194ed8e6976fd0ac39d5910b897e00c", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_language.py::test_error_invalid_data_hash": "53b7a23dc43061161cefd9fdf6f528d82dd9ec825a947e9f1127e7941b1dfae3", @@ -22517,93 +22517,93 @@ "T3T1_fr_test_language.py::test_full_language_change[es]": "77de92938877af30cd5f0c699e19a2f8a879c0f734baae345f5af5d383d54083", "T3T1_fr_test_language.py::test_full_language_change[fr]": "f65dcf17f4cfb333bd90132069367a27622b973860e2b4c7277559a3c235ac0b", "T3T1_fr_test_language.py::test_header_trailing_data": "b9bb6e32eb8f17dfebb54d6db841d95458341550d7616dbc7d7affebb0c718e4", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "2d077ad5a63d27d251471ec046c3aff6b851159a69bd269d420ed1fac8104a6c", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "18eb717368e0910c973a4a6a14af902678d46fc1a619edc75d404d2df8be656b", "T3T1_fr_test_language.py::test_reject_update": "ff0e3d6fe760a82de7bdc23d9658a880b817acac12aeadc82445c3bda5893ad3", -"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "4206ca7ecef3bbe4296cafac77cb81266832d6dbc07e89aac4656b1a8bd86099", -"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "4206ca7ecef3bbe4296cafac77cb81266832d6dbc07e89aac4656b1a8bd86099", -"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "b4c54a77175ba58ce018b8d84b14fd7bdb0a867155edd78b6b5c3da7dbed4944", +"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "9cc5cf4108009c20d0aacaf363148c9c82eb129ee9477eabe2a2d6f9509c17f4", +"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "9cc5cf4108009c20d0aacaf363148c9c82eb129ee9477eabe2a2d6f9509c17f4", +"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "c9061b8926a09d9df7b15d75eb048f328ac65c3c1fb44a079628de2d9746d6c5", "T3T1_fr_test_language.py::test_switch_from_english[None]": "69d9f3e66067b81fd64596b5476fcb7cebc8443aaa8ee1a57e0c4b16e6656370", "T3T1_fr_test_language.py::test_switch_from_english[True]": "69d9f3e66067b81fd64596b5476fcb7cebc8443aaa8ee1a57e0c4b16e6656370", "T3T1_fr_test_language.py::test_switch_from_english_not_silent": "2924fc0c3564069dc503497e0c019c57ed93a78f5e2d051149870d889a561680", -"T3T1_fr_test_language.py::test_switch_language": "20efd0fa5bb3521fdb876cff0742eaf8aa0268223d4fbbf17a2afa7d0abf9bdc", +"T3T1_fr_test_language.py::test_switch_language": "20ceea46d2baa50c1be3de93b9abd3371f4a04eca1dead20bb1dcdbeff67b72d", "T3T1_fr_test_language.py::test_translations_renders_on_screen": "89126c78192f2671e3c71eb58ff1e22f0bb5f7248989b59d441a51db559c61cf", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "49a4a9e5d950e204ceeb425749197f6a675a5e07ea83901e894fdbacbde8f9f5", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "19ff2764586ccbb85343e24419d287264b49c2db02281d860a026264964eeee1", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "1fccda9a449173e1ea4b04994566e67d9724a3c1598639f13e79aff112308bec", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c4b9f417a5e8b0e9352ec51b38c06ee1899191ec44d46f8626ab30a8ad6b8b2b", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "7a2acf9e2e70ede4527805debf2e943f3fddf4d69459ddf784f7406b79daad06", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "0ec79f61159160796d6033c34f6f56597cde2ccb5c029d8f31b4a7cb0ee0ac80", "T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "95dc8034980a6c20e1f84cfcd178ed12cc87134b4536d7e5bbe375c36a293750", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "cdfee664fdc173efeca2c4acbbd5b520a48f85156b4dd2832b555664d97f956c", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "0e1158fc4648d1cca7622ae0767a70520935df394d54b38fd23f56a477dde800", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "6dc83a0f334a9d57c59c344ef42c18c55dea33d1aae9c35119dd9f35a23fc83e", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "bdc2ef94cc757822cfa07344b11ae8f5a13dbe46445a526a3242cf1a5004ead5", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "60750aac6a7fd2e4a6e5ba36a697fbba71f5076b01d74b0dbc8f9270fe01da93", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "2828791f58c28f932a9aae56f117d749718f2c2de1e97f3bc7ea3572b7cf36bc", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "1286c40270b484a1190030d4a0302c27cc8e07a93b2647519387f4b3d8605fcc", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3bb11518fe3252431bf6f7cb72fda32714c0527061fd356dca9a0275b9d645e4", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "9d04a6834c582bef07146e1c1fa2b7aa41be6ee70a3e42c9ad0050f0fae775c8", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "c2ab2d501b0f03b9c9e1e3b0f48085b084021e93e8744a0071e7b4444a7d3c00", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8dbd7ca635311c6ef328eb7d05de185bc3f1a2ee137297a574f8632fe3572c69", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "cd76938717fc605be333fe6a7a535f8eaee3b882be39e318992bfe3029a114f2", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6fe3e56fd0a647d098f108978bf4a20da7d7dacc7688255c2c358f916d917c75", +"T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "71bc0ca6def2794a8fb31e7072d6535a479192d7298e4efd643d51b2d892ebce", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b14a053c5b521d6d15b721185eeafb74ded1f600ea7106563f4d70c4034257b6", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "43f3a933233bd2e14ef5152ffd1832822ee3a407790470f9f8e775a173ea95e5", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "01a4061e289eab1a5ff74526cea902e643a0e76d49657abf73ddf2fde97852b8", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8e2fa16972a3dff467ac8aecfe5802feff73fcd716af0b0a1e74d45e14331940", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e11e3640d457d4689f7609aaf42db30d22bdce2ab14a5d2476e4324a4cdbf4bf", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b8b015e3488a5c659d8d2a94996e9c7452ed676c72b784cea619c8808197df43", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "128fa6bac71dff383c6c9f4e0b577389da5e0b8f6c2eff8870ecaff3952420fc", "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "5d51aa9c99a634b1698dc0f397730154010f6ec9849a68c2c0a02aa8ec15af95", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "45ab430c21ca8553948adcafd2d651a2f77479f2ca67e9192eb53da7495b1fc1", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "ed45faf2fe3155feefc402b14944a3201e2371df04c32a9ab10de14c17af8f8f", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "88c92cab9534bbe6a9a152851df37cb001579b1c7e381d3abde2e64b2efe2100", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "f938d408d5e1456574533c58104480772a11d9f6e985167bfc0aea53a321e2e0", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "471067e14e72e884ca471d0060122ae8760045bc4ce5b612ba88860073244c1d", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "f03bc6f6d6d940b8a9cee917931121d51eb8728ad23ad526fbe9496545ca97df", +"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "432aab9a0bdbbc0dedf2d72db65ec8e63d3699525f2119cf3542b6a41cc173c7", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e9d5a1f2aba032efbede9adc5c304b6c5b8f5a62119417f3aeb65dba71f22629", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c57acf3b869abad90ceaf4ab0f0ee8a3327d661447f6d025053ec37b5fabdd62", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0f8e026070865b9dea46e7f1cab96e217e80461e6c9c02753c793b9333f6732b", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "800ac175ebb09d19c1ba44417fc9f540594190602677c705d279c74610a64535", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "f04f75266b5aec0a0bc9ccc7543ff3869c6959c2216865ff29647c9915c49648", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "f38a3fdf64eba1d453a65435f85d4f85c368462967efa1d34cd97112af8a299a", "T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "ef0fca1345fb5bf320a37dd2fadff4b21ee4f8062b19061ca7110e0ef5ef7707", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "c15e2bcfaa54d6be2209e47c30798ccbea93fb9cd972f10850688d385093ff22", -"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "d40fbcef1f31e489d4bde3ddee195c011ac75d0fb3cb4853af947d573e1cb590", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "875b1562b6f38138db6003ec4c71a4f9d3874dd1e42c0646d4da945ef7e305cd", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "044736cf66c5f1ce5ae21eaa55da4d02b79f7f22ec3f46ca848feda086dcaeea", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "9097603eb152c3d4e8ecb72cdd4d9415d90f11dbba7aeb81febf365a70afe2cd", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "044736cf66c5f1ce5ae21eaa55da4d02b79f7f22ec3f46ca848feda086dcaeea", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "044736cf66c5f1ce5ae21eaa55da4d02b79f7f22ec3f46ca848feda086dcaeea", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "f8c0d67256d57546ce37ba64991676944795b8e7d7261a05eff34a41ae19ae48", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "59134b326445b09bbb709c7ae2dd93ee386e0c5f015840a817f790a9095e6064", +"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "5871f0d9d774b97af86c098216223b979ad1f753f872bb5012a97ed7ec5cb5b5", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "99c43ac0c47516cb81652c6cbc4954bf1c6ad657268a5b4297ff4bf5fca15cab", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "7c71ebaa67e7742c833aaf8c2864cc256eba1abdbc086d2e81b96210610469c3", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "85acce3186934837ce7767f83c2a010c6d902a89710fdad1d586deaffd878db8", "T3T1_fr_test_msg_ping.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "102fd1775fdc38054e7d5cc0d742912e7c144f74b0978685b77d8d661b233bf0", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "44a9fb07470d866b214298c9a83e93a8ebae720ae91f3fa0b95bf4886ff368bb", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "b51bdfa587e3df2bb5c0fd2dbf3bfeb14dc5506b4c53fca1ed02e6bdff47e23a", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "dfd556afba7eef492da1478f6017434045536cd28f96fb4557b0ea9779759936", -"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "7a6e9d9acf20fbb898540539232f93c6a703df5f6ccf18533f59c29a8bed2b1a", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "5517902191007f0f26f45bb35d76a8b2610ab686e3b9bd41816b93122462e342", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "f1fb9de50cb9399786cf4b1de6ece47989ed13288fa6ebbf82aa03897b609fdb", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "3dda2a7bfa6c6df4a832d0a7f339f5b884b5d4ab55f35c8ca2d332316485adad", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "51517b14456c0b96c1fd58048d614df2730c934e8294b47199ce1828c03fd965", +"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9df9cc6d3151cfa0c19929e885d507379216ddcbb518bbc1e427e64eb0dafdf5", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", "T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", -"T3T1_fr_test_pin.py::test_correct_pin": "8896efd29f4bebc3035a764581fea4b74269fd539bda3f1b47dc4a3188fd263a", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "fcc39a557be478409a6d7047632fb50eea52c3fe99af0037452aeb994c4c336b", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "37897b25b2f8e92048d9d58544cabc7a3d8ef326f70c16b9349494f62d90b349", +"T3T1_fr_test_pin.py::test_correct_pin": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "448b6650f2a1cfbad9deb8ed3962e0c8f539726ac66cd3a8f7d00192f7257aff", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "8b076d21902923727e38c2ba6230109ededd52d103b4f457f064a2bb1ee27880", "T3T1_fr_test_pin.py::test_no_protection": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "1a618379da1f4b65fd30ca972ec458e9b5fceabcafadf623f012df82ea37d557", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "42978061d4e00b59c87ff6a3e463e846d5d24190818d93bc17688e7e29251601", -"T3T1_fr_test_protection_levels.py::test_get_address": "9997d4b9c241d21eaf1f487b6934ecd14630137496ab904f2ab781d067fcae2d", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "5bdb4e8624925139371c53bd46f3fda28210de00f7381865522419c5c49295ca", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "9997d4b9c241d21eaf1f487b6934ecd14630137496ab904f2ab781d067fcae2d", -"T3T1_fr_test_protection_levels.py::test_initialize": "9b38628247ec248f7e184313f6bf722c527ebb17673a5f4cdb6b1419a12ebeea", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "15207fbd74e95cf8df73a69bfef4a5a7d6e6a304c0ab7f4700eae1d636406339", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "043e0c350a6a8b659d3199296e3506f0eb6eb13d7be9889fe89eb95ec51cc9f2", +"T3T1_fr_test_protection_levels.py::test_get_address": "85e49edd200814e3fa1b8d74576f10cd1dd9adc58ae68785d1f55013f330db66", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "d6506916059a0cf85d2f3f32422089c3ce4450a043526c06d21a61815aca453d", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "85e49edd200814e3fa1b8d74576f10cd1dd9adc58ae68785d1f55013f330db66", +"T3T1_fr_test_protection_levels.py::test_initialize": "8abccd037825a46ef14428a85bf94c838d0ef6e28377184447d33851fcc7c16e", "T3T1_fr_test_protection_levels.py::test_passphrase_cached": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "cfbe54bc47c083273cd89f477e74e23133d952d08a16ec14b9018df0f42b451b", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "83cd6c25ff57a2b666feb1b12023b5381e1e3e33ee332ccd7e5c167375ce7a1e", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "315ae604c665cf31460ea5b86231bd4b2346f421cf6ed9fe5cc48d90f6d1fb4d", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "ed48d6ff61da8cf8f86e22da930d6fb0f3ed0b1ec68728fd10ff509deb69ff9f", "T3T1_fr_test_protection_levels.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", -"T3T1_fr_test_protection_levels.py::test_sign_message": "97f7fc43f001a85d9cba04979a9c14ba8be856b5d99bf803b566c343f21c9d2a", -"T3T1_fr_test_protection_levels.py::test_signtx": "cd83532acbcfef45a9b49b099a045d51110cfde0308dc07e7d7ddd97ac262960", -"T3T1_fr_test_protection_levels.py::test_unlocked": "68ea05ff19d0e5d000a0188c46b0e40c9b62275802a28df92c3e3b3fe93f9101", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "e4a0708dc5828935d4054d03071e34800f01389bbe0a62a15e50ddaa83f04300", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "358567d791d7fad628ebaa39fcc0302a13ff72c8f9eb5626fff31d2a3e779182", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "faa54646bfb6ad19b83d6b61032c30560146f14ba6e783b6a43db1859b7a92d2", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "8722592d319bbe57e80d4380fa6dc1b861a0bd9547f0c9ca44e1c11a04fef0a9", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f084412f6c4cebb7cfe5d09325f85b51fbbdd6904a4f66718e7a07893afdc3c5", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a9bf264d5feab3ba79d4a32e0e29cc51552a7d59d7eb683c7c77f91781dfa454", -"T3T1_fr_test_sdcard.py::test_sd_format": "e0e4d53e6a3ef10fbd0121343a5b720bb99813cda164f97fcd0b195effc4680b", -"T3T1_fr_test_sdcard.py::test_sd_no_format": "2bfa5f75dcb773d287676b117528ae5be60834cc16c5b7f1927dc48e125a4208", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "01252541440c56124663835c28ac1d267d1b806eee39b8c2f5e17f8b04b8b1c5", +"T3T1_fr_test_protection_levels.py::test_sign_message": "cabae21466a69beac7bca8cc6912dbd0cbb17a24e866279fc2f401d93219fa95", +"T3T1_fr_test_protection_levels.py::test_signtx": "afb1fe7186b5c39640bc79d5bd6a265f2eddd8d4e0c010682697a10f3fa5c527", +"T3T1_fr_test_protection_levels.py::test_unlocked": "c09e246be242970b8212d67fbe78c7b807fa9c30e2e6d0ed02c498fa2f04e4ff", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "4dbe7bf8c482a4690d0a92635fa61d033f00e0aa16cb6aea69aa33e11af1b0e2", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "45683d606c7599bde5d15f174fbf3b58addfb74134dc92bc2d6d871b915c604b", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "a90a7951dd7b2741f3fdaea48469ff73257a30fdd59ad1316b76a68e7870687f", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "8c6d56d1ecf58b4d42cb871eb7b224e76f7abd08912ddb9d10b98af8267933f0", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "848d21e7576a73699226f9fe7910d1f11d80f923ad4413e050aa650c7f2e57ac", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e05422073d5a391eded34adbb4e2f5d487cc6d682d74d2c8668be0137c23987b", +"T3T1_fr_test_sdcard.py::test_sd_format": "9f08dace12382867c5cef0e11a96fa01b8f8abfc3737f51c0ad631491c5b4403", +"T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "411c7eb257f09084562e61a5d2f590478ac91cb63550601cb7b406562543b07d", "T3T1_fr_test_session.py::test_cannot_resume_ended_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_session.py::test_clear_session": "633104fb671a273fa8166ce3f93c0f8091815c3b15b24aaeb4995d62098f7370", +"T3T1_fr_test_session.py::test_clear_session": "ad415ac58bae1af4431dc97874b25f7a1fbf8406df8dcd13536f4241c4c1bd07", "T3T1_fr_test_session.py::test_derive_cardano_empty_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_derive_cardano_running_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_end_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22626,41 +22626,41 @@ "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "8ecc9f66c9b707e20233ac8fc04183737f7feccd0240b02d19c90673ccbfd3f9", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "17becf8c653ad36e4d5dc9f99a300f1f0f9724d67ab69b148dfbf2bc54c278cb", "T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "cc492307d757bebbb550562b54de8ce373cd2547cadfe897f1886d3ea2e45a98", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "e3ab0d129679ba0c23e84a9f164436d6393efcd6740fce0be0b3619062c371fe", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "17e16783a6b880691499e2d6bf8eda530117f0c7d21851e3e31c0b79bfd6cfe1", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "4ddd2ef98a581a629d826d998595b73b08b7d07e73744d63a25e82d97c8155c2", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "471590f3840e6cdaba53302760ecd23ffdfd1399a0dcbb5e20a242fbf17d0a05", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "d71195f13e0f7d100a3680f5350cb82d34f2b310438d0a48c0e07962c3e770e5", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "d16369e546f08814d85735b38eed2b9b2c0094b64b8f22727a4b5e458c451f62", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "a88abf8a98f0c47ec46be81f203d6031bc380cd244a2a239a153f5c75f201eb0", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "64e14a180aa583a8a0e362fc5a543d0b76646efc3f2c44ae71df3397282d08ca", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6bc5b0dc18c7bc3abeb40be7b7c4bf68e04cb5d9310311705023b631a1ce5db0", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "539c89223a28b1c965423163705e22d69b2064df1128d1528939465fd0297ed5", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "1cd23500d770a9ef559d035e45294c7df415e01485060e0f5ac700b42c1e18fb", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "1e8a5b9790158784e2b822d8de59a215e27bd1488dcb6095922b69186d67efa8", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "acb90472797e386909eed599fe25e603a1f35a0c12619478ea37964ba68644e2", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "1e506ed85d3551102deac89731d91cb82d586049f6575c4faee163844cffed81", -"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5c6a9ed85d45526c6d0af9776cceeaddf0f310fb2094e9a67e902db2c9bccf29", +"T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "ddaa5b732f252125d32b0f5a37e7921bcc1ff294d77b09c112e4e3f563b8855c", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e05975469765465d77085adce8e3adc259e5c8e653a2be6fcdaf428277805f22", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "01bdb5b8ceac205728755f3f9e555c30ab7a6caceb03c6156542f2955bf08ea8", "T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "86d5d149fe800a06673016df3c546da83e0e59226bf4d7f21082e21e1f99783f", -"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "9e9ca8d8e458a971cb4d1fec92265f1d0a49f4b075dafc5b226b9e978239027c", -"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "7a3c9d103761ac457813701961cba445494ab6af9cd28b2fa0bd98c3666fcf02", -"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "fd7a3f62e5180bb81b2685b887f6fdad95b550e24fe1687f52db26b59e857002", +"T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "dc90f97d311358870f5ff032a1af0cc677a8966ea236c82bcd7f7d3f58990c93", +"T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "ed968fc6f87e77bf1062997e2ac7b1881aef2361331bd4551f823a7f9eb6e639", +"T3T1_fr_zcash-test_sign_tx.py::test_one_two": "24180452ff7c2caec1587e3f0c9cdde8f760fdb060bf0a7a41bcaf80841d0aa6", "T3T1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "3864b2ac53c8bc5e7f0afa46625469f3f0c50b6067acdf99891e53a27e9a0e25", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "52eca2b91848f3979df391ba464ae57a6e8be76180c0ad6557abe10653a455b2", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "2964e7585c96700a199bc768678179298c739166c46b8d2469b9b565f7e4c30c", -"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "598fa8bdb44537bc4d5fdcaa7aedcbca28698f5abbdc20e67cf3ec1bafcf7841", -"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "8b586e941f9e2a6e6d6d6583880d2c0ba49f20cb00ea4c5655e1b66de9a3c6d4", +"T3T1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "416bb80610464d722a03151721f65a2676ad6fee053dfe7abb98fe9658398121", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_multisig": "e55822df99a2f7d00cf881749d170884a8e1c6ff3c467a2d9d9a693f884c74f4", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "4a5c9ffd2e1d90daa5d18362c38ab4ca174aa40b4d855844fb69725b628d83dc", +"T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "5fbbb26b8a1bcf9c7bd0d2f7290a53208fc08b22378dd50e1691376a393827e0", +"T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "ea0924db23d498f9e0496df986094f22c8005180708defd17fba5cb0715ca07d", "T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "db5d0a9eb6a9ca95a0ca5bffeb8d2ff33517ee0b146c397e34a8154f30a3be11", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "03e0648852617fed8da5373856a37951e229ca3e0c91ec0e45ff8e890b79a70d", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "9ed0f49d5723fc697f51fdd2063f151ca4f79d60c55ae7fa7c04c0e1c82d46b1", -"T3T1_en_test_shamir_persistence.py::test_abort": "9fad20e4e2b9c78b81720348767b5a1d28a015b6f0af24a8272e6088849adc2d", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "409a325d0ee584aed327c057781cb9d2ecfd357d784631deea1976e306beb604", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "399206728a1281281031961486b6ec96203467363c7cb19704e3816111f1ff04", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "f38e83a9a58cfbcce678e590f511e91fc90b696b0f1a2a7ef66fcd4513f143c3", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "f28106e260fcb53535c1e14630c851b9309ce1c1069b1d4f28b74ed8173714ca" +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "250bd6d7c481fd42d688ab6b5afd39ca52bf2f52ceb194826fa4bac7df64c80b", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "f1a016c094229cec10c91b6f3f5c7bb4da36ba20048f56ccef3c940db7f7163e", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "923544b4ee525fc78ada90080bbb640d1859080affb25f4cb0ba5dc051ef68c9", +"T3T1_en_test_shamir_persistence.py::test_abort": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "571fb2f64e2ccdf478ae4de0e53ae38333110b1734d9ec4bec41862df4847608", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "f5e1be5eec73ffcc3f32fe7e61ee56d3b51c537c1f93b76f5b2807c2f28af602", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "5c154013e0d7208204a769394426305424ca74de3e9fbcf6badac09a4d4be462", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "c4a8a1974c4aeeafb2e39f1e095859e11d39ce3b4504435a87be6d871d695cab" } } } From 3602a8dde9e561ba213f3cf44e175a5f8d4ff706 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak <pavol@rusnak.io> Date: Sun, 11 Dec 2022 12:34:12 +0100 Subject: [PATCH 357/626] chore(legacy): remove CoSi functionality --- common/protob/messages.proto | 1 + legacy/firmware/.changelog.d/2675.removed | 1 + legacy/firmware/config.c | 1 - legacy/firmware/fsm.h | 3 - legacy/firmware/fsm_msg_crypto.h | 104 ------------------ legacy/firmware/layout2.c | 33 ------ legacy/firmware/layout2.h | 3 - .../firmware/protob/messages-crypto.options | 20 ++-- tests/device_tests/misc/test_cosi.py | 5 + 9 files changed, 14 insertions(+), 157 deletions(-) create mode 100644 legacy/firmware/.changelog.d/2675.removed diff --git a/common/protob/messages.proto b/common/protob/messages.proto index 8b6b8040bc..efed3f6667 100644 --- a/common/protob/messages.proto +++ b/common/protob/messages.proto @@ -169,6 +169,7 @@ enum MessageType { MessageType_SignedIdentity = 54 [(bitcoin_only) = true, (wire_out) = true]; MessageType_GetECDHSessionKey = 61 [(bitcoin_only) = true, (wire_in) = true]; MessageType_ECDHSessionKey = 62 [(bitcoin_only) = true, (wire_out) = true]; + MessageType_CosiCommit = 71 [(bitcoin_only) = true, (wire_in) = true]; MessageType_CosiCommitment = 72 [(bitcoin_only) = true, (wire_out) = true]; MessageType_CosiSign = 73 [(bitcoin_only) = true, (wire_in) = true]; diff --git a/legacy/firmware/.changelog.d/2675.removed b/legacy/firmware/.changelog.d/2675.removed new file mode 100644 index 0000000000..a72cca62db --- /dev/null +++ b/legacy/firmware/.changelog.d/2675.removed @@ -0,0 +1 @@ +CoSi functionality diff --git a/legacy/firmware/config.c b/legacy/firmware/config.c index 75d133bbb5..0c6c3ff2a2 100644 --- a/legacy/firmware/config.c +++ b/legacy/firmware/config.c @@ -1026,7 +1026,6 @@ void config_wipe(void) { storage_set(KEY_VERSION, &CONFIG_VERSION, sizeof(CONFIG_VERSION)); session_clear(false); fsm_abortWorkflows(); - fsm_clearCosiNonce(); #if USE_BIP32_CACHE bip32_cache_clear(); diff --git a/legacy/firmware/fsm.h b/legacy/firmware/fsm.h index db7e878f8c..9f18e3e588 100644 --- a/legacy/firmware/fsm.h +++ b/legacy/firmware/fsm.h @@ -95,9 +95,6 @@ void fsm_msgUnlockPath(const UnlockPath *msg); void fsm_msgCipherKeyValue(const CipherKeyValue *msg); void fsm_msgSignIdentity(const SignIdentity *msg); void fsm_msgGetECDHSessionKey(const GetECDHSessionKey *msg); -void fsm_msgCosiCommit(const CosiCommit *msg); -void fsm_msgCosiSign(const CosiSign *msg); -void fsm_clearCosiNonce(void); // debug #if DEBUG_LINK diff --git a/legacy/firmware/fsm_msg_crypto.h b/legacy/firmware/fsm_msg_crypto.h index 3aa52dd956..cb2a42ec1d 100644 --- a/legacy/firmware/fsm_msg_crypto.h +++ b/legacy/firmware/fsm_msg_crypto.h @@ -17,10 +17,6 @@ * along with this library. If not, see <http://www.gnu.org/licenses/>. */ -static uint8_t cosi_nonce[32] = {0}; -static uint8_t cosi_commitment[32] = {0}; -static bool cosi_nonce_is_set = false; - void fsm_msgCipherKeyValue(const CipherKeyValue *msg) { CHECK_INITIALIZED @@ -238,103 +234,3 @@ void fsm_msgGetECDHSessionKey(const GetECDHSessionKey *msg) { } layoutHome(); } - -static bool fsm_checkCosiPath(uint32_t address_n_count, - const uint32_t *address_n) { - // The path should typically match "m / 10018' / [0-9]'", but we allow - // any path from the SLIP-18 domain "m / 10018' / *". - if (address_n_count >= 1 && address_n[0] == PATH_HARDENED + 10018) { - return true; - } - - if (config_getSafetyCheckLevel() == SafetyCheckLevel_Strict) { - fsm_sendFailure(FailureType_Failure_DataError, _("Forbidden key path")); - return false; - } - - return fsm_layoutPathWarning(); -} - -void fsm_msgCosiCommit(const CosiCommit *msg) { - RESP_INIT(CosiCommitment); - - CHECK_INITIALIZED - - CHECK_PIN - - if (!fsm_checkCosiPath(msg->address_n_count, msg->address_n)) { - layoutHome(); - return; - } - - const HDNode *node = fsm_getDerivedNode(ED25519_NAME, msg->address_n, - msg->address_n_count, NULL); - if (!node) return; - - if (!cosi_nonce_is_set) { - ed25519_cosi_commit(cosi_nonce, cosi_commitment); - cosi_nonce_is_set = true; - } - - resp->commitment.size = 32; - resp->pubkey.size = 32; - - memcpy(resp->commitment.bytes, cosi_commitment, sizeof(cosi_commitment)); - ed25519_publickey(node->private_key, resp->pubkey.bytes); - - msg_write(MessageType_MessageType_CosiCommitment, resp); - layoutHome(); -} - -void fsm_msgCosiSign(const CosiSign *msg) { - RESP_INIT(CosiSignature); - - CHECK_INITIALIZED - - CHECK_PARAM(msg->global_commitment.size == 32, - _("Invalid global commitment")); - CHECK_PARAM(msg->global_pubkey.size == 32, _("Invalid global pubkey")); - - if (!cosi_nonce_is_set) { - fsm_sendFailure(FailureType_Failure_ProcessError, _("CoSi nonce not set")); - layoutHome(); - return; - } - - if (!fsm_checkCosiPath(msg->address_n_count, msg->address_n)) { - layoutHome(); - return; - } - - CHECK_PIN - - layoutCosiSign(msg->address_n, msg->address_n_count, msg->data.bytes, - msg->data.size); - if (!protectButton(ButtonRequestType_ButtonRequest_ProtectCall, false)) { - fsm_sendFailure(FailureType_Failure_ActionCancelled, NULL); - layoutHome(); - return; - } - - const HDNode *node = fsm_getDerivedNode(ED25519_NAME, msg->address_n, - msg->address_n_count, NULL); - if (!node) return; - - resp->signature.size = 32; - cosi_nonce_is_set = false; - - if (ed25519_cosi_sign(msg->data.bytes, msg->data.size, node->private_key, - cosi_nonce, msg->global_commitment.bytes, - msg->global_pubkey.bytes, resp->signature.bytes) == 0) { - msg_write(MessageType_MessageType_CosiSignature, resp); - } else { - fsm_sendFailure(FailureType_Failure_FirmwareError, NULL); - } - fsm_clearCosiNonce(); - layoutHome(); -} - -void fsm_clearCosiNonce(void) { - cosi_nonce_is_set = false; - memzero(cosi_nonce, sizeof(cosi_nonce)); -} diff --git a/legacy/firmware/layout2.c b/legacy/firmware/layout2.c index 0b7b00a5d3..530c438eb2 100644 --- a/legacy/firmware/layout2.c +++ b/legacy/firmware/layout2.c @@ -1339,39 +1339,6 @@ void layoutNEMLevy(const NEMMosaicDefinition *definition, uint8_t network) { #endif -static inline bool is_slip18(const uint32_t *address_n, - size_t address_n_count) { - // m / 10018' / [0-9]' - return address_n_count == 2 && address_n[0] == (PATH_HARDENED + 10018) && - (address_n[1] & PATH_HARDENED) && - (address_n[1] & PATH_UNHARDEN_MASK) <= 9; -} - -void layoutCosiSign(const uint32_t *address_n, size_t address_n_count, - const uint8_t *data, uint32_t len) { - char *desc = _("CoSi sign message?"); - char desc_buf[32] = {0}; - if (is_slip18(address_n, address_n_count)) { - strlcpy(desc_buf, _("CoSi sign index #?"), sizeof(desc_buf)); - desc_buf[16] = '0' + (address_n[1] & PATH_UNHARDEN_MASK); - desc = desc_buf; - } - char str[4][17] = {0}; - if (len == 32) { - data2hex(data, 8, str[0]); - data2hex(data + 8, 8, str[1]); - data2hex(data + 16, 8, str[2]); - data2hex(data + 24, 8, str[3]); - } else { - strlcpy(str[0], "Data", sizeof(str[0])); - strlcpy(str[1], "of", sizeof(str[1])); - strlcpy(str[2], "unsupported", sizeof(str[2])); - strlcpy(str[3], "length", sizeof(str[3])); - } - layoutDialogSwipe(&bmp_icon_question, _("Cancel"), _("Confirm"), desc, str[0], - str[1], str[2], str[3], NULL, NULL); -} - void layoutConfirmAutoLockDelay(uint32_t delay_ms) { char line[sizeof("after 4294967296 minutes?")] = {0}; diff --git a/legacy/firmware/layout2.h b/legacy/firmware/layout2.h index 9c108f8b6c..7b9076259f 100644 --- a/legacy/firmware/layout2.h +++ b/legacy/firmware/layout2.h @@ -116,9 +116,6 @@ void layoutNEMTransferPayload(const uint8_t *payload, size_t length, void layoutNEMMosaicDescription(const char *description); void layoutNEMLevy(const NEMMosaicDefinition *definition, uint8_t network); -void layoutCosiSign(const uint32_t *address_n, size_t address_n_count, - const uint8_t *data, uint32_t len); - void layoutConfirmAutoLockDelay(uint32_t delay_ms); void layoutConfirmSafetyChecks(SafetyCheckLevel safety_checks_level); diff --git a/legacy/firmware/protob/messages-crypto.options b/legacy/firmware/protob/messages-crypto.options index 120d14b080..5d6acaa537 100644 --- a/legacy/firmware/protob/messages-crypto.options +++ b/legacy/firmware/protob/messages-crypto.options @@ -5,19 +5,6 @@ CipherKeyValue.iv max_size:16 CipheredKeyValue.value max_size:1024 -CosiCommit.address_n max_count:8 -CosiCommit.data type:FT_IGNORE - -CosiCommitment.commitment max_size:32 -CosiCommitment.pubkey max_size:32 - -CosiSign.address_n max_count:8 -CosiSign.data max_size:32 -CosiSign.global_commitment max_size:32 -CosiSign.global_pubkey max_size:32 - -CosiSignature.signature max_size:32 - SignIdentity.challenge_hidden max_size:512 SignIdentity.challenge_visual max_size:256 SignIdentity.ecdsa_curve_name max_size:32 @@ -37,3 +24,10 @@ GetECDHSessionKey.ecdsa_curve_name max_size:32 ECDHSessionKey.session_key max_size:65 ECDHSessionKey.public_key max_size:33 + +# Unused messages. +# TODO might delete as-well? +CosiCommit skip_message:true +CosiCommitment skip_message:true +CosiSign skip_message:true +CosiSignature skip_message:true diff --git a/tests/device_tests/misc/test_cosi.py b/tests/device_tests/misc/test_cosi.py index 8a54ced7cd..2034518f8c 100644 --- a/tests/device_tests/misc/test_cosi.py +++ b/tests/device_tests/misc/test_cosi.py @@ -26,6 +26,7 @@ DIGEST = sha256(b"this is not a pipe").digest() +@pytest.mark.skip_t1 def test_cosi_pubkey(client: Client): c0 = cosi.commit(client, parse_path("m/10018h/0h")) c1 = cosi.commit(client, parse_path("m/10018h/1h")) @@ -36,6 +37,7 @@ def test_cosi_pubkey(client: Client): assert c1.pubkey != c2.pubkey +@pytest.mark.skip_t1 def test_cosi_nonce(client: Client): # The nonce/commitment must change after each signing. c0 = cosi.commit(client, parse_path("m/10018h/0h")) @@ -44,6 +46,7 @@ def test_cosi_nonce(client: Client): assert c0.commitment != c1.commitment +@pytest.mark.skip_t1 def test_cosi_sign1(client: Client): # Single party signature. commit = cosi.commit(client, parse_path("m/10018h/0h")) @@ -54,6 +57,7 @@ def test_cosi_sign1(client: Client): cosi.verify_combined(signature, DIGEST, commit.pubkey) +@pytest.mark.skip_t1 def test_cosi_sign2(client: Client): # Two party signature. remote_commit = cosi.commit(client, parse_path("m/10018h/1h")) @@ -76,6 +80,7 @@ def test_cosi_sign2(client: Client): cosi.verify_combined(signature, DIGEST, global_pk) +@pytest.mark.skip_t1 def test_cosi_sign3(client: Client): # Three party signature. remote_commit = cosi.commit(client, parse_path("m/10018h/2h")) From 2de8acc141e04eefbb75109d43214bb45b791f0a Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 25 Feb 2024 15:10:47 +0100 Subject: [PATCH 358/626] chore(core): remove CoSi functionality trezorctl CoSi feature is removed from all models --- common/protob/messages-crypto.proto | 41 - common/protob/messages.proto | 7 +- core/.changelog.d/3442.removed.1 | 1 + core/src/all_modules.py | 2 - core/src/apps/misc/cosi_commit.py | 113 --- core/src/apps/workflow_handlers.py | 2 - core/src/trezor/enums/MessageType.py | 4 - core/src/trezor/enums/__init__.py | 4 - core/src/trezor/messages.py | 64 -- .../firmware/protob/messages-crypto.options | 7 - python/.changelog.d/3442.removed.1 | 1 + python/src/trezorlib/cli/cosi.py | 82 -- python/src/trezorlib/cli/trezorctl.py | 2 - python/src/trezorlib/cosi.py | 48 +- python/src/trezorlib/messages.py | 75 -- rust/trezor-client/src/messages/generated.rs | 4 - .../src/protos/generated/messages.rs | 748 ++++++++------- .../src/protos/generated/messages_crypto.rs | 874 +----------------- tests/device_tests/misc/test_cosi.py | 164 ---- tests/ui_tests/fixtures.json | 371 -------- 20 files changed, 371 insertions(+), 2243 deletions(-) create mode 100644 core/.changelog.d/3442.removed.1 delete mode 100644 core/src/apps/misc/cosi_commit.py create mode 100644 python/.changelog.d/3442.removed.1 delete mode 100644 python/src/trezorlib/cli/cosi.py delete mode 100644 tests/device_tests/misc/test_cosi.py diff --git a/common/protob/messages-crypto.proto b/common/protob/messages-crypto.proto index f33f9609ea..de39735d2a 100644 --- a/common/protob/messages-crypto.proto +++ b/common/protob/messages-crypto.proto @@ -89,44 +89,3 @@ message ECDHSessionKey { required bytes session_key = 1; // ECDH session key optional bytes public_key = 2; // identity public key } - -/** - * Request: Ask device to commit to CoSi signing - * @start - * @next CosiCommitment - * @next Failure - */ -message CosiCommit { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes data = 2 [deprecated=true]; // Data to be signed. Deprecated in 1.10.2, the field is not needed, since CoSi commitments are no longer deterministic. -} - -/** - * Response: Contains a CoSi commitment - * @end - */ -message CosiCommitment { - required bytes commitment = 1; // Commitment - required bytes pubkey = 2; // Public key -} - -/** - * Request: Ask device to sign using CoSi - * @start - * @next CosiSignature - * @next Failure - */ -message CosiSign { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes data = 2; // Data to be signed - required bytes global_commitment = 3; // Aggregated commitment - required bytes global_pubkey = 4; // Aggregated public key -} - -/** - * Response: Contains a CoSi signature - * @end - */ -message CosiSignature { - required bytes signature = 1; // Signature -} diff --git a/common/protob/messages.proto b/common/protob/messages.proto index efed3f6667..b62f6b8deb 100644 --- a/common/protob/messages.proto +++ b/common/protob/messages.proto @@ -169,11 +169,8 @@ enum MessageType { MessageType_SignedIdentity = 54 [(bitcoin_only) = true, (wire_out) = true]; MessageType_GetECDHSessionKey = 61 [(bitcoin_only) = true, (wire_in) = true]; MessageType_ECDHSessionKey = 62 [(bitcoin_only) = true, (wire_out) = true]; - - MessageType_CosiCommit = 71 [(bitcoin_only) = true, (wire_in) = true]; - MessageType_CosiCommitment = 72 [(bitcoin_only) = true, (wire_out) = true]; - MessageType_CosiSign = 73 [(bitcoin_only) = true, (wire_in) = true]; - MessageType_CosiSignature = 74 [(bitcoin_only) = true, (wire_out) = true]; + // dropped: CosiCommit, CosiCommitment, CosiSign, CosiSignature + reserved 71 to 74; // Debug MessageType_DebugLinkDecision = 100 [(bitcoin_only) = true, (wire_debug_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; diff --git a/core/.changelog.d/3442.removed.1 b/core/.changelog.d/3442.removed.1 new file mode 100644 index 0000000000..a72cca62db --- /dev/null +++ b/core/.changelog.d/3442.removed.1 @@ -0,0 +1 @@ +CoSi functionality diff --git a/core/src/all_modules.py b/core/src/all_modules.py index 49ebfe40d6..f76f8e7983 100644 --- a/core/src/all_modules.py +++ b/core/src/all_modules.py @@ -373,8 +373,6 @@ import apps.misc apps.misc.cipher_key_value import apps.misc.cipher_key_value -apps.misc.cosi_commit -import apps.misc.cosi_commit apps.misc.get_ecdh_session_key import apps.misc.get_ecdh_session_key apps.misc.get_entropy diff --git a/core/src/apps/misc/cosi_commit.py b/core/src/apps/misc/cosi_commit.py deleted file mode 100644 index b682ff7ab2..0000000000 --- a/core/src/apps/misc/cosi_commit.py +++ /dev/null @@ -1,113 +0,0 @@ -from typing import TYPE_CHECKING - -from trezor.enums import ButtonRequestType -from trezor.messages import CosiCommitment, CosiSign, CosiSignature -from trezor.wire import DataError - -from apps.common.paths import PathSchema, unharden - -if TYPE_CHECKING: - from trezor.messages import CosiCommit - -# This module implements the cosigner part of the CoSi collective signatures -# as described in https://dedis.cs.yale.edu/dissent/papers/witness.pdf - - -SCHEMA_SLIP18 = PathSchema.parse("m/10018'/address_index'/*'", slip44_id=()) -# SLIP-26: m/10026'/model'/type'/rotation_index' -# - `model`: typically ASCII string T1B1 etc. parsed as little-endian number, -# but can also be 0 or other values. Maximum allowed value is 0x7F7F7F7F, -# the maximum 4-byte ASCII string. -# - `type`: 0 = bootloader, 1 = vendorheader, 2 = firmware, 3 = definitions, 4 = reserved -# - `rotation_index`: a fixed 0' for now -SCHEMA_SLIP26 = PathSchema.parse("m/10026'/[0-2139062143]'/[0-4]'/0'", slip44_id=()) - - -def _decode_path(address_n: list[int]) -> str | None: - signing_types = { - 0: "bootloader", - 1: "vendor header", - 2: "firmware", - } - - if len(address_n) == 2 and SCHEMA_SLIP18.match(address_n): - signing_type = signing_types.get(unharden(address_n[1])) - if signing_type is None: - return None - return f"T2T1 {signing_type} (old-style)" - - if SCHEMA_SLIP26.match(address_n): - model = unharden(address_n[1]) - signing_type = unharden(address_n[2]) - if model == 0 and signing_type == 3: - return "External definitions" - - model_bytes = model.to_bytes(4, "little") - signing_type_str = signing_types.get(signing_type) - if ( - signing_type_str is not None - and len(model_bytes) == 4 - and all(0x20 <= b <= 0x7E for b in model_bytes) - ): - return f"{model_bytes.decode()} {signing_type_str}" - - return None - - -async def cosi_commit(msg: CosiCommit) -> CosiSignature: - import storage.cache as storage_cache - from trezor.crypto import cosi - from trezor.crypto.curve import ed25519 - from trezor.ui.layouts import confirm_blob, confirm_text - from trezor.wire.context import call - - from apps.common import paths - from apps.common.keychain import get_keychain - - keychain = await get_keychain("ed25519", [SCHEMA_SLIP18, SCHEMA_SLIP26]) - await paths.validate_path(keychain, msg.address_n) - - node = keychain.derive(msg.address_n) - seckey = node.private_key() - pubkey = ed25519.publickey(seckey) - - if not storage_cache.is_set(storage_cache.APP_MISC_COSI_COMMITMENT): - nonce, commitment = cosi.commit() - storage_cache.set(storage_cache.APP_MISC_COSI_NONCE, nonce) - storage_cache.set(storage_cache.APP_MISC_COSI_COMMITMENT, commitment) - commitment = storage_cache.get(storage_cache.APP_MISC_COSI_COMMITMENT) - if commitment is None: - raise RuntimeError - - sign_msg = await call( - CosiCommitment(commitment=commitment, pubkey=pubkey), CosiSign - ) - - if sign_msg.address_n != msg.address_n: - raise DataError("Mismatched address_n") - - path_description = _decode_path(sign_msg.address_n) - await confirm_text( - "cosi_confirm_key", - "COSI KEYS", - paths.address_n_to_str(sign_msg.address_n), - path_description, - ) - await confirm_blob( - "cosi_sign", - "COSI DATA", - sign_msg.data, - br_code=ButtonRequestType.ProtectCall, - ) - - # clear nonce from cache - nonce = storage_cache.get(storage_cache.APP_MISC_COSI_NONCE) - storage_cache.delete(storage_cache.APP_MISC_COSI_COMMITMENT) - storage_cache.delete(storage_cache.APP_MISC_COSI_NONCE) - if nonce is None: - raise RuntimeError - - signature = cosi.sign( - seckey, sign_msg.data, nonce, sign_msg.global_commitment, sign_msg.global_pubkey - ) - return CosiSignature(signature=signature) diff --git a/core/src/apps/workflow_handlers.py b/core/src/apps/workflow_handlers.py index 204e27a8cb..d8a7f32d2e 100644 --- a/core/src/apps/workflow_handlers.py +++ b/core/src/apps/workflow_handlers.py @@ -96,8 +96,6 @@ def _find_message_handler_module(msg_type: int) -> str: return "apps.misc.cipher_key_value" if msg_type == MessageType.GetFirmwareHash: return "apps.misc.get_firmware_hash" - if msg_type == MessageType.CosiCommit: - return "apps.misc.cosi_commit" if not utils.BITCOIN_ONLY: if msg_type == MessageType.SetU2FCounter: diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py index a078d23942..ec6a8317f0 100644 --- a/core/src/trezor/enums/MessageType.py +++ b/core/src/trezor/enums/MessageType.py @@ -79,10 +79,6 @@ SignedIdentity = 54 GetECDHSessionKey = 61 ECDHSessionKey = 62 -CosiCommit = 71 -CosiCommitment = 72 -CosiSign = 73 -CosiSignature = 74 DebugLinkDecision = 100 DebugLinkGetState = 101 DebugLinkState = 102 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index a3a13ef27d..30e596843d 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -102,10 +102,6 @@ class MessageType(IntEnum): SignedIdentity = 54 GetECDHSessionKey = 61 ECDHSessionKey = 62 - CosiCommit = 71 - CosiCommitment = 72 - CosiSign = 73 - CosiSignature = 74 DebugLinkDecision = 100 DebugLinkGetState = 101 DebugLinkState = 102 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index e90c7eb505..f80e56e1dd 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2031,70 +2031,6 @@ def __init__( def is_type_of(cls, msg: Any) -> TypeGuard["ECDHSessionKey"]: return isinstance(msg, cls) - class CosiCommit(protobuf.MessageType): - address_n: "list[int]" - - def __init__( - self, - *, - address_n: "list[int] | None" = None, - ) -> None: - pass - - @classmethod - def is_type_of(cls, msg: Any) -> TypeGuard["CosiCommit"]: - return isinstance(msg, cls) - - class CosiCommitment(protobuf.MessageType): - commitment: "bytes" - pubkey: "bytes" - - def __init__( - self, - *, - commitment: "bytes", - pubkey: "bytes", - ) -> None: - pass - - @classmethod - def is_type_of(cls, msg: Any) -> TypeGuard["CosiCommitment"]: - return isinstance(msg, cls) - - class CosiSign(protobuf.MessageType): - address_n: "list[int]" - data: "bytes" - global_commitment: "bytes" - global_pubkey: "bytes" - - def __init__( - self, - *, - data: "bytes", - global_commitment: "bytes", - global_pubkey: "bytes", - address_n: "list[int] | None" = None, - ) -> None: - pass - - @classmethod - def is_type_of(cls, msg: Any) -> TypeGuard["CosiSign"]: - return isinstance(msg, cls) - - class CosiSignature(protobuf.MessageType): - signature: "bytes" - - def __init__( - self, - *, - signature: "bytes", - ) -> None: - pass - - @classmethod - def is_type_of(cls, msg: Any) -> TypeGuard["CosiSignature"]: - return isinstance(msg, cls) - class Initialize(protobuf.MessageType): session_id: "bytes | None" derive_cardano: "bool | None" diff --git a/legacy/firmware/protob/messages-crypto.options b/legacy/firmware/protob/messages-crypto.options index 5d6acaa537..eba27de9d1 100644 --- a/legacy/firmware/protob/messages-crypto.options +++ b/legacy/firmware/protob/messages-crypto.options @@ -24,10 +24,3 @@ GetECDHSessionKey.ecdsa_curve_name max_size:32 ECDHSessionKey.session_key max_size:65 ECDHSessionKey.public_key max_size:33 - -# Unused messages. -# TODO might delete as-well? -CosiCommit skip_message:true -CosiCommitment skip_message:true -CosiSign skip_message:true -CosiSignature skip_message:true diff --git a/python/.changelog.d/3442.removed.1 b/python/.changelog.d/3442.removed.1 new file mode 100644 index 0000000000..a72cca62db --- /dev/null +++ b/python/.changelog.d/3442.removed.1 @@ -0,0 +1 @@ +CoSi functionality diff --git a/python/src/trezorlib/cli/cosi.py b/python/src/trezorlib/cli/cosi.py deleted file mode 100644 index 95b1e816ed..0000000000 --- a/python/src/trezorlib/cli/cosi.py +++ /dev/null @@ -1,82 +0,0 @@ -# This file is part of the Trezor project. -# -# Copyright (C) 2012-2022 SatoshiLabs and contributors -# -# This library is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# as published by the Free Software Foundation. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the License along with this library. -# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. - -from typing import TYPE_CHECKING, Optional - -import click - -from .. import cosi, tools -from . import with_client - -if TYPE_CHECKING: - from .. import messages - from ..client import TrezorClient - -PATH_HELP = "BIP-32 path, e.g. m/10018h/0h" - - -@click.group(name="cosi") -def cli() -> None: - """CoSi (Cothority / collective signing) commands.""" - - -def cosi_warn(client: "TrezorClient") -> None: - if client.features.model == "1" and client.version < (1, 11, 2): - click.echo("WARNING: CoSi signing on your Trezor is insecure.") - click.echo("Please update your Trezor to firmware version 1.11.2 or newer.") - click.echo("If you used CoSi in the past, consider rotating your keys.") - raise click.Abort() - - -@cli.command() -@click.option("-n", "--address", required=True, help=PATH_HELP) -@click.argument("data_deprecated", required=False) -@with_client -def commit( - client: "TrezorClient", address: str, data_deprecated: Optional[str] -) -> "messages.CosiCommitment": - """Ask device to commit to CoSi signing.""" - cosi_warn(client) - if data_deprecated is not None: - click.echo("Warning: data argument is deprecated", err=True) - - address_n = tools.parse_path(address) - return cosi.commit(client, address_n) - - -@cli.command() -@click.option("-n", "--address", required=True, help=PATH_HELP) -@click.argument("data") -@click.argument("global_commitment") -@click.argument("global_pubkey") -@with_client -def sign( - client: "TrezorClient", - address: str, - data: str, - global_commitment: str, - global_pubkey: str, -) -> "messages.CosiSignature": - """Ask device to sign using CoSi.""" - cosi_warn(client) - address_n = tools.parse_path(address) - return cosi.sign( - client, - address_n, - bytes.fromhex(data), - bytes.fromhex(global_commitment), - bytes.fromhex(global_pubkey), - ) diff --git a/python/src/trezorlib/cli/trezorctl.py b/python/src/trezorlib/cli/trezorctl.py index 2e030ed931..625baab5ee 100755 --- a/python/src/trezorlib/cli/trezorctl.py +++ b/python/src/trezorlib/cli/trezorctl.py @@ -34,7 +34,6 @@ binance, btc, cardano, - cosi, crypto, debug, device, @@ -402,7 +401,6 @@ def wait_for_emulator(obj: TrezorConnection, timeout: float) -> None: cli.add_command(binance.cli) cli.add_command(btc.cli) cli.add_command(cardano.cli) -cli.add_command(cosi.cli) cli.add_command(crypto.cli) cli.add_command(device.cli) cli.add_command(eos.cli) diff --git a/python/src/trezorlib/cosi.py b/python/src/trezorlib/cosi.py index c9ed57f0b0..cabe376656 100644 --- a/python/src/trezorlib/cosi.py +++ b/python/src/trezorlib/cosi.py @@ -14,17 +14,10 @@ # You should have received a copy of the License along with this library. # If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. -import warnings from functools import reduce -from typing import TYPE_CHECKING, Iterable, Optional, Sequence, Tuple +from typing import Iterable, Sequence, Tuple -from . import _ed25519, messages -from .tools import expect - -if TYPE_CHECKING: - from .client import TrezorClient - from .protobuf import MessageType - from .tools import Address +from . import _ed25519 # XXX, these could be NewType's, but that would infect users of the cosi module with these types as well. # Unsure if we want that. @@ -111,7 +104,7 @@ def verify( if len(selected_keys) < sigs_required: raise _ed25519.SignatureMismatch("Insufficient number of signatures.") global_pk = combine_keys(selected_keys) - return verify_combined(signature, digest, global_pk) + verify_combined(signature, digest, global_pk) def pubkey_from_privkey(privkey: Ed25519PrivateKey) -> Ed25519PublicPoint: @@ -152,38 +145,3 @@ def sign_with_privkeys(digest: bytes, privkeys: Sequence[bytes]) -> bytes: ] return combine_sig(global_R, sigs) - - -# ====== Client functions ====== # - - -@expect(messages.CosiCommitment) -def commit( - client: "TrezorClient", n: "Address", data: Optional[bytes] = None -) -> "MessageType": - if data is not None: - warnings.warn( - "'data' argument is deprecated", - DeprecationWarning, - stacklevel=2, - ) - - return client.call(messages.CosiCommit(address_n=n)) - - -@expect(messages.CosiSignature) -def sign( - client: "TrezorClient", - n: "Address", - data: bytes, - global_commitment: bytes, - global_pubkey: bytes, -) -> "MessageType": - return client.call( - messages.CosiSign( - address_n=n, - data=data, - global_commitment=global_commitment, - global_pubkey=global_pubkey, - ) - ) diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 5cb4090c8d..b9ad0ce0b4 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -110,10 +110,6 @@ class MessageType(IntEnum): SignedIdentity = 54 GetECDHSessionKey = 61 ECDHSessionKey = 62 - CosiCommit = 71 - CosiCommitment = 72 - CosiSign = 73 - CosiSignature = 74 DebugLinkDecision = 100 DebugLinkGetState = 101 DebugLinkState = 102 @@ -3135,77 +3131,6 @@ def __init__( self.public_key = public_key -class CosiCommit(protobuf.MessageType): - MESSAGE_WIRE_TYPE = 71 - FIELDS = { - 1: protobuf.Field("address_n", "uint32", repeated=True, required=False, default=None), - 2: protobuf.Field("data", "bytes", repeated=False, required=False, default=None), - } - - def __init__( - self, - *, - address_n: Optional[Sequence["int"]] = None, - data: Optional["bytes"] = None, - ) -> None: - self.address_n: Sequence["int"] = address_n if address_n is not None else [] - self.data = data - - -class CosiCommitment(protobuf.MessageType): - MESSAGE_WIRE_TYPE = 72 - FIELDS = { - 1: protobuf.Field("commitment", "bytes", repeated=False, required=True), - 2: protobuf.Field("pubkey", "bytes", repeated=False, required=True), - } - - def __init__( - self, - *, - commitment: "bytes", - pubkey: "bytes", - ) -> None: - self.commitment = commitment - self.pubkey = pubkey - - -class CosiSign(protobuf.MessageType): - MESSAGE_WIRE_TYPE = 73 - FIELDS = { - 1: protobuf.Field("address_n", "uint32", repeated=True, required=False, default=None), - 2: protobuf.Field("data", "bytes", repeated=False, required=True), - 3: protobuf.Field("global_commitment", "bytes", repeated=False, required=True), - 4: protobuf.Field("global_pubkey", "bytes", repeated=False, required=True), - } - - def __init__( - self, - *, - data: "bytes", - global_commitment: "bytes", - global_pubkey: "bytes", - address_n: Optional[Sequence["int"]] = None, - ) -> None: - self.address_n: Sequence["int"] = address_n if address_n is not None else [] - self.data = data - self.global_commitment = global_commitment - self.global_pubkey = global_pubkey - - -class CosiSignature(protobuf.MessageType): - MESSAGE_WIRE_TYPE = 74 - FIELDS = { - 1: protobuf.Field("signature", "bytes", repeated=False, required=True), - } - - def __init__( - self, - *, - signature: "bytes", - ) -> None: - self.signature = signature - - class Initialize(protobuf.MessageType): MESSAGE_WIRE_TYPE = 0 FIELDS = { diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs index 5cf5016ece..69614c6b6f 100644 --- a/rust/trezor-client/src/messages/generated.rs +++ b/rust/trezor-client/src/messages/generated.rs @@ -64,10 +64,6 @@ trezor_message_impl! { SignedIdentity => MessageType_SignedIdentity, GetECDHSessionKey => MessageType_GetECDHSessionKey, ECDHSessionKey => MessageType_ECDHSessionKey, - CosiCommit => MessageType_CosiCommit, - CosiCommitment => MessageType_CosiCommitment, - CosiSign => MessageType_CosiSign, - CosiSignature => MessageType_CosiSignature, DebugLinkDecision => MessageType_DebugLinkDecision, DebugLinkGetState => MessageType_DebugLinkGetState, DebugLinkState => MessageType_DebugLinkState, diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs index a559a5336c..548d6995cb 100644 --- a/rust/trezor-client/src/protos/generated/messages.rs +++ b/rust/trezor-client/src/protos/generated/messages.rs @@ -190,14 +190,6 @@ pub enum MessageType { MessageType_GetECDHSessionKey = 61, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_ECDHSessionKey) MessageType_ECDHSessionKey = 62, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CosiCommit) - MessageType_CosiCommit = 71, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CosiCommitment) - MessageType_CosiCommitment = 72, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CosiSign) - MessageType_CosiSign = 73, - // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_CosiSignature) - MessageType_CosiSignature = 74, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkDecision) MessageType_DebugLinkDecision = 100, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkGetState) @@ -608,10 +600,6 @@ impl ::protobuf::Enum for MessageType { 54 => ::std::option::Option::Some(MessageType::MessageType_SignedIdentity), 61 => ::std::option::Option::Some(MessageType::MessageType_GetECDHSessionKey), 62 => ::std::option::Option::Some(MessageType::MessageType_ECDHSessionKey), - 71 => ::std::option::Option::Some(MessageType::MessageType_CosiCommit), - 72 => ::std::option::Option::Some(MessageType::MessageType_CosiCommitment), - 73 => ::std::option::Option::Some(MessageType::MessageType_CosiSign), - 74 => ::std::option::Option::Some(MessageType::MessageType_CosiSignature), 100 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkDecision), 101 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkGetState), 102 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkState), @@ -858,10 +846,6 @@ impl ::protobuf::Enum for MessageType { "MessageType_SignedIdentity" => ::std::option::Option::Some(MessageType::MessageType_SignedIdentity), "MessageType_GetECDHSessionKey" => ::std::option::Option::Some(MessageType::MessageType_GetECDHSessionKey), "MessageType_ECDHSessionKey" => ::std::option::Option::Some(MessageType::MessageType_ECDHSessionKey), - "MessageType_CosiCommit" => ::std::option::Option::Some(MessageType::MessageType_CosiCommit), - "MessageType_CosiCommitment" => ::std::option::Option::Some(MessageType::MessageType_CosiCommitment), - "MessageType_CosiSign" => ::std::option::Option::Some(MessageType::MessageType_CosiSign), - "MessageType_CosiSignature" => ::std::option::Option::Some(MessageType::MessageType_CosiSignature), "MessageType_DebugLinkDecision" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkDecision), "MessageType_DebugLinkGetState" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkGetState), "MessageType_DebugLinkState" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkState), @@ -1107,10 +1091,6 @@ impl ::protobuf::Enum for MessageType { MessageType::MessageType_SignedIdentity, MessageType::MessageType_GetECDHSessionKey, MessageType::MessageType_ECDHSessionKey, - MessageType::MessageType_CosiCommit, - MessageType::MessageType_CosiCommitment, - MessageType::MessageType_CosiSign, - MessageType::MessageType_CosiSignature, MessageType::MessageType_DebugLinkDecision, MessageType::MessageType_DebugLinkGetState, MessageType::MessageType_DebugLinkState, @@ -1362,169 +1342,165 @@ impl ::protobuf::EnumFull for MessageType { MessageType::MessageType_SignedIdentity => 78, MessageType::MessageType_GetECDHSessionKey => 79, MessageType::MessageType_ECDHSessionKey => 80, - MessageType::MessageType_CosiCommit => 81, - MessageType::MessageType_CosiCommitment => 82, - MessageType::MessageType_CosiSign => 83, - MessageType::MessageType_CosiSignature => 84, - MessageType::MessageType_DebugLinkDecision => 85, - MessageType::MessageType_DebugLinkGetState => 86, - MessageType::MessageType_DebugLinkState => 87, - MessageType::MessageType_DebugLinkStop => 88, - MessageType::MessageType_DebugLinkLog => 89, - MessageType::MessageType_DebugLinkMemoryRead => 90, - MessageType::MessageType_DebugLinkMemory => 91, - MessageType::MessageType_DebugLinkMemoryWrite => 92, - MessageType::MessageType_DebugLinkFlashErase => 93, - MessageType::MessageType_DebugLinkLayout => 94, - MessageType::MessageType_DebugLinkReseedRandom => 95, - MessageType::MessageType_DebugLinkRecordScreen => 96, - MessageType::MessageType_DebugLinkEraseSdCard => 97, - MessageType::MessageType_DebugLinkWatchLayout => 98, - MessageType::MessageType_DebugLinkResetDebugEvents => 99, - MessageType::MessageType_EthereumGetPublicKey => 100, - MessageType::MessageType_EthereumPublicKey => 101, - MessageType::MessageType_EthereumGetAddress => 102, - MessageType::MessageType_EthereumAddress => 103, - MessageType::MessageType_EthereumSignTx => 104, - MessageType::MessageType_EthereumSignTxEIP1559 => 105, - MessageType::MessageType_EthereumTxRequest => 106, - MessageType::MessageType_EthereumTxAck => 107, - MessageType::MessageType_EthereumSignMessage => 108, - MessageType::MessageType_EthereumVerifyMessage => 109, - MessageType::MessageType_EthereumMessageSignature => 110, - MessageType::MessageType_EthereumSignTypedData => 111, - MessageType::MessageType_EthereumTypedDataStructRequest => 112, - MessageType::MessageType_EthereumTypedDataStructAck => 113, - MessageType::MessageType_EthereumTypedDataValueRequest => 114, - MessageType::MessageType_EthereumTypedDataValueAck => 115, - MessageType::MessageType_EthereumTypedDataSignature => 116, - MessageType::MessageType_EthereumSignTypedHash => 117, - MessageType::MessageType_NEMGetAddress => 118, - MessageType::MessageType_NEMAddress => 119, - MessageType::MessageType_NEMSignTx => 120, - MessageType::MessageType_NEMSignedTx => 121, - MessageType::MessageType_NEMDecryptMessage => 122, - MessageType::MessageType_NEMDecryptedMessage => 123, - MessageType::MessageType_TezosGetAddress => 124, - MessageType::MessageType_TezosAddress => 125, - MessageType::MessageType_TezosSignTx => 126, - MessageType::MessageType_TezosSignedTx => 127, - MessageType::MessageType_TezosGetPublicKey => 128, - MessageType::MessageType_TezosPublicKey => 129, - MessageType::MessageType_StellarSignTx => 130, - MessageType::MessageType_StellarTxOpRequest => 131, - MessageType::MessageType_StellarGetAddress => 132, - MessageType::MessageType_StellarAddress => 133, - MessageType::MessageType_StellarCreateAccountOp => 134, - MessageType::MessageType_StellarPaymentOp => 135, - MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 136, - MessageType::MessageType_StellarManageSellOfferOp => 137, - MessageType::MessageType_StellarCreatePassiveSellOfferOp => 138, - MessageType::MessageType_StellarSetOptionsOp => 139, - MessageType::MessageType_StellarChangeTrustOp => 140, - MessageType::MessageType_StellarAllowTrustOp => 141, - MessageType::MessageType_StellarAccountMergeOp => 142, - MessageType::MessageType_StellarManageDataOp => 143, - MessageType::MessageType_StellarBumpSequenceOp => 144, - MessageType::MessageType_StellarManageBuyOfferOp => 145, - MessageType::MessageType_StellarPathPaymentStrictSendOp => 146, - MessageType::MessageType_StellarClaimClaimableBalanceOp => 147, - MessageType::MessageType_StellarSignedTx => 148, - MessageType::MessageType_CardanoGetPublicKey => 149, - MessageType::MessageType_CardanoPublicKey => 150, - MessageType::MessageType_CardanoGetAddress => 151, - MessageType::MessageType_CardanoAddress => 152, - MessageType::MessageType_CardanoTxItemAck => 153, - MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 154, - MessageType::MessageType_CardanoTxWitnessRequest => 155, - MessageType::MessageType_CardanoTxWitnessResponse => 156, - MessageType::MessageType_CardanoTxHostAck => 157, - MessageType::MessageType_CardanoTxBodyHash => 158, - MessageType::MessageType_CardanoSignTxFinished => 159, - MessageType::MessageType_CardanoSignTxInit => 160, - MessageType::MessageType_CardanoTxInput => 161, - MessageType::MessageType_CardanoTxOutput => 162, - MessageType::MessageType_CardanoAssetGroup => 163, - MessageType::MessageType_CardanoToken => 164, - MessageType::MessageType_CardanoTxCertificate => 165, - MessageType::MessageType_CardanoTxWithdrawal => 166, - MessageType::MessageType_CardanoTxAuxiliaryData => 167, - MessageType::MessageType_CardanoPoolOwner => 168, - MessageType::MessageType_CardanoPoolRelayParameters => 169, - MessageType::MessageType_CardanoGetNativeScriptHash => 170, - MessageType::MessageType_CardanoNativeScriptHash => 171, - MessageType::MessageType_CardanoTxMint => 172, - MessageType::MessageType_CardanoTxCollateralInput => 173, - MessageType::MessageType_CardanoTxRequiredSigner => 174, - MessageType::MessageType_CardanoTxInlineDatumChunk => 175, - MessageType::MessageType_CardanoTxReferenceScriptChunk => 176, - MessageType::MessageType_CardanoTxReferenceInput => 177, - MessageType::MessageType_RippleGetAddress => 178, - MessageType::MessageType_RippleAddress => 179, - MessageType::MessageType_RippleSignTx => 180, - MessageType::MessageType_RippleSignedTx => 181, - MessageType::MessageType_MoneroTransactionInitRequest => 182, - MessageType::MessageType_MoneroTransactionInitAck => 183, - MessageType::MessageType_MoneroTransactionSetInputRequest => 184, - MessageType::MessageType_MoneroTransactionSetInputAck => 185, - MessageType::MessageType_MoneroTransactionInputViniRequest => 186, - MessageType::MessageType_MoneroTransactionInputViniAck => 187, - MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 188, - MessageType::MessageType_MoneroTransactionAllInputsSetAck => 189, - MessageType::MessageType_MoneroTransactionSetOutputRequest => 190, - MessageType::MessageType_MoneroTransactionSetOutputAck => 191, - MessageType::MessageType_MoneroTransactionAllOutSetRequest => 192, - MessageType::MessageType_MoneroTransactionAllOutSetAck => 193, - MessageType::MessageType_MoneroTransactionSignInputRequest => 194, - MessageType::MessageType_MoneroTransactionSignInputAck => 195, - MessageType::MessageType_MoneroTransactionFinalRequest => 196, - MessageType::MessageType_MoneroTransactionFinalAck => 197, - MessageType::MessageType_MoneroKeyImageExportInitRequest => 198, - MessageType::MessageType_MoneroKeyImageExportInitAck => 199, - MessageType::MessageType_MoneroKeyImageSyncStepRequest => 200, - MessageType::MessageType_MoneroKeyImageSyncStepAck => 201, - MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 202, - MessageType::MessageType_MoneroKeyImageSyncFinalAck => 203, - MessageType::MessageType_MoneroGetAddress => 204, - MessageType::MessageType_MoneroAddress => 205, - MessageType::MessageType_MoneroGetWatchKey => 206, - MessageType::MessageType_MoneroWatchKey => 207, - MessageType::MessageType_DebugMoneroDiagRequest => 208, - MessageType::MessageType_DebugMoneroDiagAck => 209, - MessageType::MessageType_MoneroGetTxKeyRequest => 210, - MessageType::MessageType_MoneroGetTxKeyAck => 211, - MessageType::MessageType_MoneroLiveRefreshStartRequest => 212, - MessageType::MessageType_MoneroLiveRefreshStartAck => 213, - MessageType::MessageType_MoneroLiveRefreshStepRequest => 214, - MessageType::MessageType_MoneroLiveRefreshStepAck => 215, - MessageType::MessageType_MoneroLiveRefreshFinalRequest => 216, - MessageType::MessageType_MoneroLiveRefreshFinalAck => 217, - MessageType::MessageType_EosGetPublicKey => 218, - MessageType::MessageType_EosPublicKey => 219, - MessageType::MessageType_EosSignTx => 220, - MessageType::MessageType_EosTxActionRequest => 221, - MessageType::MessageType_EosTxActionAck => 222, - MessageType::MessageType_EosSignedTx => 223, - MessageType::MessageType_BinanceGetAddress => 224, - MessageType::MessageType_BinanceAddress => 225, - MessageType::MessageType_BinanceGetPublicKey => 226, - MessageType::MessageType_BinancePublicKey => 227, - MessageType::MessageType_BinanceSignTx => 228, - MessageType::MessageType_BinanceTxRequest => 229, - MessageType::MessageType_BinanceTransferMsg => 230, - MessageType::MessageType_BinanceOrderMsg => 231, - MessageType::MessageType_BinanceCancelMsg => 232, - MessageType::MessageType_BinanceSignedTx => 233, - MessageType::MessageType_WebAuthnListResidentCredentials => 234, - MessageType::MessageType_WebAuthnCredentials => 235, - MessageType::MessageType_WebAuthnAddResidentCredential => 236, - MessageType::MessageType_WebAuthnRemoveResidentCredential => 237, - MessageType::MessageType_SolanaGetPublicKey => 238, - MessageType::MessageType_SolanaPublicKey => 239, - MessageType::MessageType_SolanaGetAddress => 240, - MessageType::MessageType_SolanaAddress => 241, - MessageType::MessageType_SolanaSignTx => 242, - MessageType::MessageType_SolanaTxSignature => 243, + MessageType::MessageType_DebugLinkDecision => 81, + MessageType::MessageType_DebugLinkGetState => 82, + MessageType::MessageType_DebugLinkState => 83, + MessageType::MessageType_DebugLinkStop => 84, + MessageType::MessageType_DebugLinkLog => 85, + MessageType::MessageType_DebugLinkMemoryRead => 86, + MessageType::MessageType_DebugLinkMemory => 87, + MessageType::MessageType_DebugLinkMemoryWrite => 88, + MessageType::MessageType_DebugLinkFlashErase => 89, + MessageType::MessageType_DebugLinkLayout => 90, + MessageType::MessageType_DebugLinkReseedRandom => 91, + MessageType::MessageType_DebugLinkRecordScreen => 92, + MessageType::MessageType_DebugLinkEraseSdCard => 93, + MessageType::MessageType_DebugLinkWatchLayout => 94, + MessageType::MessageType_DebugLinkResetDebugEvents => 95, + MessageType::MessageType_EthereumGetPublicKey => 96, + MessageType::MessageType_EthereumPublicKey => 97, + MessageType::MessageType_EthereumGetAddress => 98, + MessageType::MessageType_EthereumAddress => 99, + MessageType::MessageType_EthereumSignTx => 100, + MessageType::MessageType_EthereumSignTxEIP1559 => 101, + MessageType::MessageType_EthereumTxRequest => 102, + MessageType::MessageType_EthereumTxAck => 103, + MessageType::MessageType_EthereumSignMessage => 104, + MessageType::MessageType_EthereumVerifyMessage => 105, + MessageType::MessageType_EthereumMessageSignature => 106, + MessageType::MessageType_EthereumSignTypedData => 107, + MessageType::MessageType_EthereumTypedDataStructRequest => 108, + MessageType::MessageType_EthereumTypedDataStructAck => 109, + MessageType::MessageType_EthereumTypedDataValueRequest => 110, + MessageType::MessageType_EthereumTypedDataValueAck => 111, + MessageType::MessageType_EthereumTypedDataSignature => 112, + MessageType::MessageType_EthereumSignTypedHash => 113, + MessageType::MessageType_NEMGetAddress => 114, + MessageType::MessageType_NEMAddress => 115, + MessageType::MessageType_NEMSignTx => 116, + MessageType::MessageType_NEMSignedTx => 117, + MessageType::MessageType_NEMDecryptMessage => 118, + MessageType::MessageType_NEMDecryptedMessage => 119, + MessageType::MessageType_TezosGetAddress => 120, + MessageType::MessageType_TezosAddress => 121, + MessageType::MessageType_TezosSignTx => 122, + MessageType::MessageType_TezosSignedTx => 123, + MessageType::MessageType_TezosGetPublicKey => 124, + MessageType::MessageType_TezosPublicKey => 125, + MessageType::MessageType_StellarSignTx => 126, + MessageType::MessageType_StellarTxOpRequest => 127, + MessageType::MessageType_StellarGetAddress => 128, + MessageType::MessageType_StellarAddress => 129, + MessageType::MessageType_StellarCreateAccountOp => 130, + MessageType::MessageType_StellarPaymentOp => 131, + MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 132, + MessageType::MessageType_StellarManageSellOfferOp => 133, + MessageType::MessageType_StellarCreatePassiveSellOfferOp => 134, + MessageType::MessageType_StellarSetOptionsOp => 135, + MessageType::MessageType_StellarChangeTrustOp => 136, + MessageType::MessageType_StellarAllowTrustOp => 137, + MessageType::MessageType_StellarAccountMergeOp => 138, + MessageType::MessageType_StellarManageDataOp => 139, + MessageType::MessageType_StellarBumpSequenceOp => 140, + MessageType::MessageType_StellarManageBuyOfferOp => 141, + MessageType::MessageType_StellarPathPaymentStrictSendOp => 142, + MessageType::MessageType_StellarClaimClaimableBalanceOp => 143, + MessageType::MessageType_StellarSignedTx => 144, + MessageType::MessageType_CardanoGetPublicKey => 145, + MessageType::MessageType_CardanoPublicKey => 146, + MessageType::MessageType_CardanoGetAddress => 147, + MessageType::MessageType_CardanoAddress => 148, + MessageType::MessageType_CardanoTxItemAck => 149, + MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 150, + MessageType::MessageType_CardanoTxWitnessRequest => 151, + MessageType::MessageType_CardanoTxWitnessResponse => 152, + MessageType::MessageType_CardanoTxHostAck => 153, + MessageType::MessageType_CardanoTxBodyHash => 154, + MessageType::MessageType_CardanoSignTxFinished => 155, + MessageType::MessageType_CardanoSignTxInit => 156, + MessageType::MessageType_CardanoTxInput => 157, + MessageType::MessageType_CardanoTxOutput => 158, + MessageType::MessageType_CardanoAssetGroup => 159, + MessageType::MessageType_CardanoToken => 160, + MessageType::MessageType_CardanoTxCertificate => 161, + MessageType::MessageType_CardanoTxWithdrawal => 162, + MessageType::MessageType_CardanoTxAuxiliaryData => 163, + MessageType::MessageType_CardanoPoolOwner => 164, + MessageType::MessageType_CardanoPoolRelayParameters => 165, + MessageType::MessageType_CardanoGetNativeScriptHash => 166, + MessageType::MessageType_CardanoNativeScriptHash => 167, + MessageType::MessageType_CardanoTxMint => 168, + MessageType::MessageType_CardanoTxCollateralInput => 169, + MessageType::MessageType_CardanoTxRequiredSigner => 170, + MessageType::MessageType_CardanoTxInlineDatumChunk => 171, + MessageType::MessageType_CardanoTxReferenceScriptChunk => 172, + MessageType::MessageType_CardanoTxReferenceInput => 173, + MessageType::MessageType_RippleGetAddress => 174, + MessageType::MessageType_RippleAddress => 175, + MessageType::MessageType_RippleSignTx => 176, + MessageType::MessageType_RippleSignedTx => 177, + MessageType::MessageType_MoneroTransactionInitRequest => 178, + MessageType::MessageType_MoneroTransactionInitAck => 179, + MessageType::MessageType_MoneroTransactionSetInputRequest => 180, + MessageType::MessageType_MoneroTransactionSetInputAck => 181, + MessageType::MessageType_MoneroTransactionInputViniRequest => 182, + MessageType::MessageType_MoneroTransactionInputViniAck => 183, + MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 184, + MessageType::MessageType_MoneroTransactionAllInputsSetAck => 185, + MessageType::MessageType_MoneroTransactionSetOutputRequest => 186, + MessageType::MessageType_MoneroTransactionSetOutputAck => 187, + MessageType::MessageType_MoneroTransactionAllOutSetRequest => 188, + MessageType::MessageType_MoneroTransactionAllOutSetAck => 189, + MessageType::MessageType_MoneroTransactionSignInputRequest => 190, + MessageType::MessageType_MoneroTransactionSignInputAck => 191, + MessageType::MessageType_MoneroTransactionFinalRequest => 192, + MessageType::MessageType_MoneroTransactionFinalAck => 193, + MessageType::MessageType_MoneroKeyImageExportInitRequest => 194, + MessageType::MessageType_MoneroKeyImageExportInitAck => 195, + MessageType::MessageType_MoneroKeyImageSyncStepRequest => 196, + MessageType::MessageType_MoneroKeyImageSyncStepAck => 197, + MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 198, + MessageType::MessageType_MoneroKeyImageSyncFinalAck => 199, + MessageType::MessageType_MoneroGetAddress => 200, + MessageType::MessageType_MoneroAddress => 201, + MessageType::MessageType_MoneroGetWatchKey => 202, + MessageType::MessageType_MoneroWatchKey => 203, + MessageType::MessageType_DebugMoneroDiagRequest => 204, + MessageType::MessageType_DebugMoneroDiagAck => 205, + MessageType::MessageType_MoneroGetTxKeyRequest => 206, + MessageType::MessageType_MoneroGetTxKeyAck => 207, + MessageType::MessageType_MoneroLiveRefreshStartRequest => 208, + MessageType::MessageType_MoneroLiveRefreshStartAck => 209, + MessageType::MessageType_MoneroLiveRefreshStepRequest => 210, + MessageType::MessageType_MoneroLiveRefreshStepAck => 211, + MessageType::MessageType_MoneroLiveRefreshFinalRequest => 212, + MessageType::MessageType_MoneroLiveRefreshFinalAck => 213, + MessageType::MessageType_EosGetPublicKey => 214, + MessageType::MessageType_EosPublicKey => 215, + MessageType::MessageType_EosSignTx => 216, + MessageType::MessageType_EosTxActionRequest => 217, + MessageType::MessageType_EosTxActionAck => 218, + MessageType::MessageType_EosSignedTx => 219, + MessageType::MessageType_BinanceGetAddress => 220, + MessageType::MessageType_BinanceAddress => 221, + MessageType::MessageType_BinanceGetPublicKey => 222, + MessageType::MessageType_BinancePublicKey => 223, + MessageType::MessageType_BinanceSignTx => 224, + MessageType::MessageType_BinanceTxRequest => 225, + MessageType::MessageType_BinanceTransferMsg => 226, + MessageType::MessageType_BinanceOrderMsg => 227, + MessageType::MessageType_BinanceCancelMsg => 228, + MessageType::MessageType_BinanceSignedTx => 229, + MessageType::MessageType_WebAuthnListResidentCredentials => 230, + MessageType::MessageType_WebAuthnCredentials => 231, + MessageType::MessageType_WebAuthnAddResidentCredential => 232, + MessageType::MessageType_WebAuthnRemoveResidentCredential => 233, + MessageType::MessageType_SolanaGetPublicKey => 234, + MessageType::MessageType_SolanaPublicKey => 235, + MessageType::MessageType_SolanaGetAddress => 236, + MessageType::MessageType_SolanaAddress => 237, + MessageType::MessageType_SolanaSignTx => 238, + MessageType::MessageType_SolanaTxSignature => 239, }; Self::enum_descriptor().value_by_index(index) } @@ -1574,7 +1550,7 @@ pub mod exts { static file_descriptor_proto_data: &'static [u8] = b"\ \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\x20google/protobuf/de\ - scriptor.proto*\xc4T\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ + scriptor.proto*\xadS\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ \x10\0\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\x90\xb5\x18\x01\x12\x1e\n\ \x10MessageType_Ping\x10\x01\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\ %\n\x13MessageType_Success\x10\x02\x1a\x0c\x80\xa6\x1d\x01\xa8\xb5\x18\ @@ -1670,210 +1646,206 @@ static file_descriptor_proto_data: &'static [u8] = b"\ y\x106\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x12+\n\x1dMessageType_Get\ ECDHSessionKey\x10=\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12(\n\x1aMe\ ssageType_ECDHSessionKey\x10>\x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\ - \x12$\n\x16MessageType_CosiCommit\x10G\x1a\x08\x80\xa6\x1d\x01\x90\xb5\ - \x18\x01\x12(\n\x1aMessageType_CosiCommitment\x10H\x1a\x08\x80\xa6\x1d\ - \x01\x98\xb5\x18\x01\x12\"\n\x14MessageType_CosiSign\x10I\x1a\x08\x80\ - \xa6\x1d\x01\x90\xb5\x18\x01\x12'\n\x19MessageType_CosiSignature\x10J\ - \x1a\x08\x80\xa6\x1d\x01\x98\xb5\x18\x01\x123\n\x1dMessageType_DebugLink\ - Decision\x10d\x1a\x10\xc0\xb5\x18\x01\xb0\xb5\x18\x01\x80\xa6\x1d\x01\ - \xa0\xb5\x18\x01\x12/\n\x1dMessageType_DebugLinkGetState\x10e\x1a\x0c\ - \x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\x18\x01\x12(\n\x1aMessageType_D\ - ebugLinkState\x10f\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12'\n\x19Mes\ - sageType_DebugLinkStop\x10g\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12&\ - \n\x18MessageType_DebugLinkLog\x10h\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\ - \x01\x12-\n\x1fMessageType_DebugLinkMemoryRead\x10n\x1a\x08\x80\xa6\x1d\ - \x01\xa0\xb5\x18\x01\x12)\n\x1bMessageType_DebugLinkMemory\x10o\x1a\x08\ - \x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12.\n\x20MessageType_DebugLinkMemoryWr\ - ite\x10p\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12-\n\x1fMessageType_D\ - ebugLinkFlashErase\x10q\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\ - \x1bMessageType_DebugLinkLayout\x10\xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\ - \x18\x01\x120\n!MessageType_DebugLinkReseedRandom\x10\xaaF\x1a\x08\x80\ - \xa6\x1d\x01\xa0\xb5\x18\x01\x120\n!MessageType_DebugLinkRecordScreen\ - \x10\xabF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_\ - DebugLinkEraseSdCard\x10\xadF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\ - \x12/\n\x20MessageType_DebugLinkWatchLayout\x10\xaeF\x1a\x08\x80\xa6\x1d\ - \x01\xa0\xb5\x18\x01\x124\n%MessageType_DebugLinkResetDebugEvents\x10\ - \xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12+\n\x20MessageType_Ethe\ - reumGetPublicKey\x10\xc2\x03\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageTy\ - pe_EthereumPublicKey\x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessa\ - geType_EthereumGetAddress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessage\ - Type_EthereumAddress\x109\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_\ - EthereumSignTx\x10:\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_EthereumS\ - ignTxEIP1559\x10\xc4\x03\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_E\ - thereumTxRequest\x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_Ethe\ - reumTxAck\x10<\x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSig\ - nMessage\x10@\x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyM\ - essage\x10A\x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSi\ - gnature\x10B\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignType\ - dData\x10\xd0\x03\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTyp\ - edDataStructRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageTy\ - pe_EthereumTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n\ - )MessageType_EthereumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\ - \x18\x01\x120\n%MessageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\ - \x04\x90\xb5\x18\x01\x121\n&MessageType_EthereumTypedDataSignature\x10\ - \xd5\x03\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHas\ - h\x10\xd6\x03\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddres\ - s\x10C\x1a\x04\x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\ - \x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\ - \x90\xb5\x18\x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\ - \x18\x01\x12'\n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\ - \x18\x01\x12)\n\x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\ - \x18\x01\x12&\n\x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\ - \xb5\x18\x01\x12#\n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\ - \xb5\x18\x01\x12\"\n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\ - \xb5\x18\x01\x12$\n\x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\ - \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\ - \x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\ - \x01\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\ - \xcf\x01\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\ - \x10\xd0\x01\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAc\ - countOp\x10\xd2\x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_Stella\ - rPaymentOp\x10\xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_Stella\ - rPathPaymentStrictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$M\ - essageType_StellarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\ - \x126\n+MessageType_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\ - \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\ - \x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\ - \xd8\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrust\ - Op\x10\xd9\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccount\ - MergeOp\x10\xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Stella\ - rManageDataOp\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_Ste\ - llarBumpSequenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageTyp\ - e_StellarManageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*Mes\ - sageType_StellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\ - \x01\x125\n*MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\ - \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\ - \x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\ - \xb1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\ - \x10\xb2\x02\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAdd\ - ress\x10\xb3\x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAd\ - dress\x10\xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoT\ - xItemAck\x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoT\ - xAuxiliaryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#Mess\ - ageType_CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\ - \n$MessageType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\ - \x01\x12'\n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\ - \x18\x01\x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\ - \xb5\x18\x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\ - \x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\ - \x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\ - \x02\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\ - \xc2\x02\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\ - \x10\xc3\x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\ - \x10\xc4\x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCert\ - ificate\x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Cardan\ - oTxWithdrawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_Ca\ - rdanoTxAuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\ - geType_CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Messa\ - geType_CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\ - \x121\n&MessageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\ - \xb5\x18\x01\x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\ - \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\ - \x04\x90\xb5\x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\ - \x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\ - \x10\xce\x02\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineD\ - atumChunk\x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Cardano\ - TxReferenceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#Messag\ - eType_CardanoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\ - \x1cMessageType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12\ - $\n\x19MessageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12\ - #\n\x18MessageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\ - \n\x1aMessageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x12\ - 3\n(MessageType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\ - \x18\x01\x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\ - \x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\ - \xf7\x03\x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSet\ - InputAck\x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTr\ - ansactionInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Mes\ - sageType_MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\ - \x01\x12;\n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\ - \x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSe\ - tAck\x10\xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransa\ - ctionSetOutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Message\ - Type_MoneroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\ - \x128\n-MessageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\ - \x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\ - \x10\x82\x04\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\ - nSignInputRequest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ - _MoneroTransactionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\ - \n)MessageType_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\ - \x18\x01\x120\n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\ - \x04\x98\xb5\x18\x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\ - \x10\x92\x04\x1a\x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageEx\ - portInitAck\x10\x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Moner\ - oKeyImageSyncStepRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%Mess\ - ageType_MoneroKeyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\ - \x125\n*MessageType_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\ - \x98\xb5\x18\x01\x121\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\ - \x04\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\ - \x9c\x04\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\ - \x9d\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\ - \x10\x9e\x04\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKe\ - y\x10\x9f\x04\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDia\ - gRequest\x10\xa2\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_Debug\ - MoneroDiagAck\x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_Mon\ - eroGetTxKeyRequest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessage\ - Type_MoneroGetTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)Messag\ - eType_MoneroLiveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\ - \x120\n%MessageType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\ - \xb5\x18\x01\x123\n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\ - \x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\ - \xab\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFin\ - alRequest\x10\xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroL\ - iveRefreshFinalAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessage\ - Type_EosGetPublicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18Messa\ - geType_EosPublicKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15Mes\ - sageType_EosSignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessage\ - Type_EosTxActionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMe\ - ssageType_EosTxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17\ - MessageType_EosSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMe\ - ssageType_BinanceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\ - \x1aMessageType_BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\ - \n\x1fMessageType_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\ - \x01\x12'\n\x1cMessageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\ - \x18\x01\x12$\n\x19MessageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\ - \x18\x01\x12'\n\x1cMessageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\ - \xb5\x18\x01\x12)\n\x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\ - \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\ - \x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\ - \x05\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\ - \xc5\x05\x1a\x04\x98\xb5\x18\x01\x126\n+MessageType_WebAuthnListResident\ - Credentials\x10\xa0\x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_We\ - bAuthnCredentials\x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ - _WebAuthnAddResidentCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\ - \n,MessageType_WebAuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\ - \xb5\x18\x01\x12)\n\x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\ - \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\ - \x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\ - \x07\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\ - \x07\x1a\x04\x98\xb5\x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\ - \x07\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\ - \x89\x07\x1a\x04\x98\xb5\x18\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\ - \\\"\x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\xe0\x01\x10\ - \xe0\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\xb8\x02:<\n\ - \x07wire_in\x18\xd2\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueO\ - ptionsR\x06wireIn:>\n\x08wire_out\x18\xd3\x86\x03\x20\x01(\x08\x12!.goog\ - le.protobuf.EnumValueOptionsR\x07wireOut:G\n\rwire_debug_in\x18\xd4\x86\ - \x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0bwireDebugIn:\ - I\n\x0ewire_debug_out\x18\xd5\x86\x03\x20\x01(\x08\x12!.google.protobuf.\ - EnumValueOptionsR\x0cwireDebugOut:@\n\twire_tiny\x18\xd6\x86\x03\x20\x01\ - (\x08\x12!.google.protobuf.EnumValueOptionsR\x08wireTiny:L\n\x0fwire_boo\ - tloader\x18\xd7\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptio\ - nsR\x0ewireBootloader:C\n\x0bwire_no_fsm\x18\xd8\x86\x03\x20\x01(\x08\ - \x12!.google.protobuf.EnumValueOptionsR\twireNoFsm:F\n\x0cbitcoin_only\ - \x18\xe0\xd4\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0b\ - bitcoinOnly:U\n\x17has_bitcoin_only_values\x18\xb9\x8e\x03\x20\x01(\x08\ - \x12\x1c.google.protobuf.EnumOptionsR\x14hasBitcoinOnlyValues:T\n\x14exp\ - erimental_message\x18\xa1\x96\x03\x20\x01(\x08\x12\x1f.google.protobuf.M\ - essageOptionsR\x13experimentalMessage:>\n\twire_type\x18\xa2\x96\x03\x20\ - \x01(\r\x12\x1f.google.protobuf.MessageOptionsR\x08wireType:N\n\x12exper\ - imental_field\x18\x89\x9e\x03\x20\x01(\x08\x12\x1d.google.protobuf.Field\ - OptionsR\x11experimentalField:U\n\x17include_in_bitcoin_only\x18\xe0\xd4\ - \x03\x20\x01(\x08\x12\x1c.google.protobuf.FileOptionsR\x14includeInBitco\ - inOnlyB8\n#com.satoshilabs.trezor.lib.protobufB\rTrezorMessage\x80\xa6\ - \x1d\x01\ + \x123\n\x1dMessageType_DebugLinkDecision\x10d\x1a\x10\xc0\xb5\x18\x01\ + \xb0\xb5\x18\x01\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x1dMessageType_D\ + ebugLinkGetState\x10e\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\xa0\xb5\ + \x18\x01\x12(\n\x1aMessageType_DebugLinkState\x10f\x1a\x08\x80\xa6\x1d\ + \x01\xa8\xb5\x18\x01\x12'\n\x19MessageType_DebugLinkStop\x10g\x1a\x08\ + \x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12&\n\x18MessageType_DebugLinkLog\x10h\ + \x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12-\n\x1fMessageType_DebugLink\ + MemoryRead\x10n\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12)\n\x1bMessag\ + eType_DebugLinkMemory\x10o\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x12.\ + \n\x20MessageType_DebugLinkMemoryWrite\x10p\x1a\x08\x80\xa6\x1d\x01\xa0\ + \xb5\x18\x01\x12-\n\x1fMessageType_DebugLinkFlashErase\x10q\x1a\x08\x80\ + \xa6\x1d\x01\xa0\xb5\x18\x01\x12*\n\x1bMessageType_DebugLinkLayout\x10\ + \xa9F\x1a\x08\x80\xa6\x1d\x01\xa8\xb5\x18\x01\x120\n!MessageType_DebugLi\ + nkReseedRandom\x10\xaaF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x120\n!M\ + essageType_DebugLinkRecordScreen\x10\xabF\x1a\x08\x80\xa6\x1d\x01\xa0\ + \xb5\x18\x01\x12/\n\x20MessageType_DebugLinkEraseSdCard\x10\xadF\x1a\x08\ + \x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLinkWatchLay\ + out\x10\xaeF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x124\n%MessageType_\ + DebugLinkResetDebugEvents\x10\xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\ + \x01\x12+\n\x20MessageType_EthereumGetPublicKey\x10\xc2\x03\x1a\x04\x90\ + \xb5\x18\x01\x12(\n\x1dMessageType_EthereumPublicKey\x10\xc3\x03\x1a\x04\ + \x98\xb5\x18\x01\x12(\n\x1eMessageType_EthereumGetAddress\x108\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1bMessageType_EthereumAddress\x109\x1a\x04\x98\ + \xb5\x18\x01\x12$\n\x1aMessageType_EthereumSignTx\x10:\x1a\x04\x90\xb5\ + \x18\x01\x12,\n!MessageType_EthereumSignTxEIP1559\x10\xc4\x03\x1a\x04\ + \x90\xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxRequest\x10;\x1a\x04\ + \x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\x10<\x1a\x04\x90\ + \xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\x10@\x1a\x04\x90\ + \xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\x10A\x1a\x04\x90\ + \xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignature\x10B\x1a\x04\ + \x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\x10\xd0\x03\ + \x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDataStructReque\ + st\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_EthereumTypedD\ + ataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Ethe\ + reumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\x01\x120\n%Mes\ + sageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\x90\xb5\x18\x01\ + \x121\n&MessageType_EthereumTypedDataSignature\x10\xd5\x03\x1a\x04\x98\ + \xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\x10\xd6\x03\x1a\ + \x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\x10C\x1a\x04\ + \x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\x1a\x04\x98\ + \xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\x90\xb5\x18\ + \x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\x18\x01\x12'\ + \n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\x18\x01\x12)\n\ + \x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\x18\x01\x12&\n\ + \x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\xb5\x18\x01\x12#\ + \n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\xb5\x18\x01\x12\"\ + \n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\xb5\x18\x01\x12$\n\ + \x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\xb5\x18\x01\x12(\n\ + \x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\x90\xb5\x18\x01\ + \x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\x04\x98\xb5\x18\ + \x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\x04\x90\xb5\x18\ + \x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\x01\x1a\x04\x98\ + \xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\xcf\x01\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\x10\xd0\x01\x1a\ + \x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAccountOp\x10\xd2\ + \x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_StellarPaymentOp\x10\ + \xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_StellarPathPaymentSt\ + rictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_Ste\ + llarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\x126\n+Message\ + Type_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\x90\xb5\x18\x01\ + \x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\x1a\x04\x90\xb5\ + \x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\xd8\x01\x1a\x04\ + \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrustOp\x10\xd9\x01\ + \x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccountMergeOp\x10\ + \xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarManageData\ + Op\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarBumpSeq\ + uenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_StellarMa\ + nageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_St\ + ellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\x01\x125\n*\ + MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\x04\x90\xb5\ + \x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\x1a\x04\x98\ + \xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\xb1\x02\x1a\ + \x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\x10\xb2\x02\ + \x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAddress\x10\xb3\ + \x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAddress\x10\ + \xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoTxItemAck\ + \x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoTxAuxilia\ + ryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#MessageType_\ + CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\n$Messa\ + geType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\x01\x12'\ + \n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\x18\x01\ + \x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\xb5\x18\ + \x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\x04\x98\ + \xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\x02\x1a\ + \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\xc2\x02\ + \x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\x10\xc3\ + \x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\x10\xc4\ + \x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCertificate\ + \x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_CardanoTxWith\ + drawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_CardanoTx\ + AuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_\ + CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&MessageType_\ + CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Me\ + ssageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\xb5\x18\x01\ + \x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\x04\x98\xb5\ + \x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\x04\x90\xb5\ + \x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\x02\x1a\x04\ + \x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\x10\xce\x02\ + \x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineDatumChunk\ + \x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_CardanoTxReferen\ + ceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_Car\ + danoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\ + geType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12$\n\x19Me\ + ssageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12#\n\x18Me\ + ssageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMes\ + sageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x123\n(Messa\ + geType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\x18\x01\ + \x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\x98\xb5\ + \x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\xf7\x03\ + \x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSetInputAck\ + \x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\ + nInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ + _MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\x01\x12;\ + \n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\x1a\x04\ + \x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSetAck\x10\ + \xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSet\ + OutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Mon\ + eroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\x128\n-Me\ + ssageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\x04\x98\xb5\ + \x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\x10\x82\x04\ + \x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSignInputRe\ + quest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTrans\ + actionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageTyp\ + e_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\x18\x01\x120\ + \n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\x04\x98\xb5\x18\ + \x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\x10\x92\x04\x1a\ + \x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageExportInitAck\x10\ + \x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroKeyImageSyncSt\ + epRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%MessageType_MoneroK\ + eyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\x125\n*MessageTyp\ + e_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\x98\xb5\x18\x01\x12\ + 1\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\x04\x1a\x04\x98\xb5\ + \x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\x9c\x04\x1a\x04\x90\ + \xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\x9d\x04\x1a\x04\x98\ + \xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\x10\x9e\x04\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKey\x10\x9f\x04\x1a\ + \x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDiagRequest\x10\xa2\ + \x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_DebugMoneroDiagAck\ + \x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_MoneroGetTxKeyRe\ + quest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGe\ + tTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroL\ + iveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\x120\n%Messag\ + eType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\xb5\x18\x01\x123\ + \n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\x1a\x04\x90\xb5\ + \x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\xab\x04\x1a\x04\ + \x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFinalRequest\x10\ + \xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroLiveRefreshFin\ + alAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessageType_EosGetPu\ + blicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_EosPub\ + licKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15MessageType_EosS\ + ignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_EosTxAct\ + ionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMessageType_Eos\ + TxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17MessageType_E\ + osSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_Bin\ + anceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType\ + _BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageTyp\ + e_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMess\ + ageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\x18\x01\x12$\n\x19M\ + essageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cM\ + essageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\xb5\x18\x01\x12)\n\ + \x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\x04\x90\xb5\x18\x01\ + \x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\x1a\x04\x90\xb5\x18\ + \x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\x05\x1a\x04\x90\xb5\ + \x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\xc5\x05\x1a\x04\x98\ + \xb5\x18\x01\x126\n+MessageType_WebAuthnListResidentCredentials\x10\xa0\ + \x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_WebAuthnCredentials\ + \x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_WebAuthnAddResid\ + entCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\n,MessageType_Web\ + AuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\xb5\x18\x01\x12)\n\ + \x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\x04\x90\xb5\x18\x01\ + \x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\x1a\x04\x98\xb5\x18\ + \x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\x07\x1a\x04\x90\xb5\ + \x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\x07\x1a\x04\x98\xb5\ + \x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\x07\x1a\x04\x90\xb5\ + \x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\x89\x07\x1a\x04\x98\ + \xb5\x18\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\\\"\x04\x08G\x10J\"\ + \x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\xe0\x01\x10\xe0\ + \x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\xb8\x02:<\n\x07\ + wire_in\x18\xd2\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptio\ + nsR\x06wireIn:>\n\x08wire_out\x18\xd3\x86\x03\x20\x01(\x08\x12!.google.p\ + rotobuf.EnumValueOptionsR\x07wireOut:G\n\rwire_debug_in\x18\xd4\x86\x03\ + \x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0bwireDebugIn:I\n\ + \x0ewire_debug_out\x18\xd5\x86\x03\x20\x01(\x08\x12!.google.protobuf.Enu\ + mValueOptionsR\x0cwireDebugOut:@\n\twire_tiny\x18\xd6\x86\x03\x20\x01(\ + \x08\x12!.google.protobuf.EnumValueOptionsR\x08wireTiny:L\n\x0fwire_boot\ + loader\x18\xd7\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOption\ + sR\x0ewireBootloader:C\n\x0bwire_no_fsm\x18\xd8\x86\x03\x20\x01(\x08\x12\ + !.google.protobuf.EnumValueOptionsR\twireNoFsm:F\n\x0cbitcoin_only\x18\ + \xe0\xd4\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0bbitc\ + oinOnly:U\n\x17has_bitcoin_only_values\x18\xb9\x8e\x03\x20\x01(\x08\x12\ + \x1c.google.protobuf.EnumOptionsR\x14hasBitcoinOnlyValues:T\n\x14experim\ + ental_message\x18\xa1\x96\x03\x20\x01(\x08\x12\x1f.google.protobuf.Messa\ + geOptionsR\x13experimentalMessage:>\n\twire_type\x18\xa2\x96\x03\x20\x01\ + (\r\x12\x1f.google.protobuf.MessageOptionsR\x08wireType:N\n\x12experimen\ + tal_field\x18\x89\x9e\x03\x20\x01(\x08\x12\x1d.google.protobuf.FieldOpti\ + onsR\x11experimentalField:U\n\x17include_in_bitcoin_only\x18\xe0\xd4\x03\ + \x20\x01(\x08\x12\x1c.google.protobuf.FileOptionsR\x14includeInBitcoinOn\ + lyB8\n#com.satoshilabs.trezor.lib.protobufB\rTrezorMessage\x80\xa6\x1d\ + \x01\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/rust/trezor-client/src/protos/generated/messages_crypto.rs b/rust/trezor-client/src/protos/generated/messages_crypto.rs index 4f4b248a19..70ffec3a85 100644 --- a/rust/trezor-client/src/protos/generated/messages_crypto.rs +++ b/rust/trezor-client/src/protos/generated/messages_crypto.rs @@ -2023,860 +2023,6 @@ impl ::protobuf::reflect::ProtobufValue for ECDHSessionKey { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; } -// @@protoc_insertion_point(message:hw.trezor.messages.crypto.CosiCommit) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct CosiCommit { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiCommit.address_n) - pub address_n: ::std::vec::Vec<u32>, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiCommit.data) - pub data: ::std::option::Option<::std::vec::Vec<u8>>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.crypto.CosiCommit.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a CosiCommit { - fn default() -> &'a CosiCommit { - <CosiCommit as ::protobuf::Message>::default_instance() - } -} - -impl CosiCommit { - pub fn new() -> CosiCommit { - ::std::default::Default::default() - } - - // optional bytes data = 2; - - pub fn data(&self) -> &[u8] { - match self.data.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_data(&mut self) { - self.data = ::std::option::Option::None; - } - - pub fn has_data(&self) -> bool { - self.data.is_some() - } - - // Param is passed by value, moved - pub fn set_data(&mut self, v: ::std::vec::Vec<u8>) { - self.data = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_data(&mut self) -> &mut ::std::vec::Vec<u8> { - if self.data.is_none() { - self.data = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.data.as_mut().unwrap() - } - - // Take field - pub fn take_data(&mut self) -> ::std::vec::Vec<u8> { - self.data.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(2); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>( - "address_n", - |m: &CosiCommit| { &m.address_n }, - |m: &mut CosiCommit| { &mut m.address_n }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "data", - |m: &CosiCommit| { &m.data }, - |m: &mut CosiCommit| { &mut m.data }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CosiCommit>( - "CosiCommit", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for CosiCommit { - const NAME: &'static str = "CosiCommit"; - - fn is_initialized(&self) -> bool { - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { - while let Some(tag) = is.read_raw_tag_or_eof()? { - match tag { - 10 => { - is.read_repeated_packed_uint32_into(&mut self.address_n)?; - }, - 8 => { - self.address_n.push(is.read_uint32()?); - }, - 18 => { - self.data = ::std::option::Option::Some(is.read_bytes()?); - }, - tag => { - ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u64 { - let mut my_size = 0; - for value in &self.address_n { - my_size += ::protobuf::rt::uint32_size(1, *value); - }; - if let Some(v) = self.data.as_ref() { - my_size += ::protobuf::rt::bytes_size(2, &v); - } - my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); - self.special_fields.cached_size().set(my_size as u32); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - for v in &self.address_n { - os.write_uint32(1, *v)?; - }; - if let Some(v) = self.data.as_ref() { - os.write_bytes(2, v)?; - } - os.write_unknown_fields(self.special_fields.unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn special_fields(&self) -> &::protobuf::SpecialFields { - &self.special_fields - } - - fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { - &mut self.special_fields - } - - fn new() -> CosiCommit { - CosiCommit::new() - } - - fn clear(&mut self) { - self.address_n.clear(); - self.data = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CosiCommit { - static instance: CosiCommit = CosiCommit { - address_n: ::std::vec::Vec::new(), - data: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for CosiCommit { - fn descriptor() -> ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| file_descriptor().message_by_package_relative_name("CosiCommit").unwrap()).clone() - } -} - -impl ::std::fmt::Display for CosiCommit { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for CosiCommit { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; -} - -// @@protoc_insertion_point(message:hw.trezor.messages.crypto.CosiCommitment) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct CosiCommitment { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiCommitment.commitment) - pub commitment: ::std::option::Option<::std::vec::Vec<u8>>, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiCommitment.pubkey) - pub pubkey: ::std::option::Option<::std::vec::Vec<u8>>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.crypto.CosiCommitment.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a CosiCommitment { - fn default() -> &'a CosiCommitment { - <CosiCommitment as ::protobuf::Message>::default_instance() - } -} - -impl CosiCommitment { - pub fn new() -> CosiCommitment { - ::std::default::Default::default() - } - - // required bytes commitment = 1; - - pub fn commitment(&self) -> &[u8] { - match self.commitment.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_commitment(&mut self) { - self.commitment = ::std::option::Option::None; - } - - pub fn has_commitment(&self) -> bool { - self.commitment.is_some() - } - - // Param is passed by value, moved - pub fn set_commitment(&mut self, v: ::std::vec::Vec<u8>) { - self.commitment = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_commitment(&mut self) -> &mut ::std::vec::Vec<u8> { - if self.commitment.is_none() { - self.commitment = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.commitment.as_mut().unwrap() - } - - // Take field - pub fn take_commitment(&mut self) -> ::std::vec::Vec<u8> { - self.commitment.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - // required bytes pubkey = 2; - - pub fn pubkey(&self) -> &[u8] { - match self.pubkey.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_pubkey(&mut self) { - self.pubkey = ::std::option::Option::None; - } - - pub fn has_pubkey(&self) -> bool { - self.pubkey.is_some() - } - - // Param is passed by value, moved - pub fn set_pubkey(&mut self, v: ::std::vec::Vec<u8>) { - self.pubkey = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_pubkey(&mut self) -> &mut ::std::vec::Vec<u8> { - if self.pubkey.is_none() { - self.pubkey = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.pubkey.as_mut().unwrap() - } - - // Take field - pub fn take_pubkey(&mut self) -> ::std::vec::Vec<u8> { - self.pubkey.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(2); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "commitment", - |m: &CosiCommitment| { &m.commitment }, - |m: &mut CosiCommitment| { &mut m.commitment }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "pubkey", - |m: &CosiCommitment| { &m.pubkey }, - |m: &mut CosiCommitment| { &mut m.pubkey }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CosiCommitment>( - "CosiCommitment", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for CosiCommitment { - const NAME: &'static str = "CosiCommitment"; - - fn is_initialized(&self) -> bool { - if self.commitment.is_none() { - return false; - } - if self.pubkey.is_none() { - return false; - } - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { - while let Some(tag) = is.read_raw_tag_or_eof()? { - match tag { - 10 => { - self.commitment = ::std::option::Option::Some(is.read_bytes()?); - }, - 18 => { - self.pubkey = ::std::option::Option::Some(is.read_bytes()?); - }, - tag => { - ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u64 { - let mut my_size = 0; - if let Some(v) = self.commitment.as_ref() { - my_size += ::protobuf::rt::bytes_size(1, &v); - } - if let Some(v) = self.pubkey.as_ref() { - my_size += ::protobuf::rt::bytes_size(2, &v); - } - my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); - self.special_fields.cached_size().set(my_size as u32); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - if let Some(v) = self.commitment.as_ref() { - os.write_bytes(1, v)?; - } - if let Some(v) = self.pubkey.as_ref() { - os.write_bytes(2, v)?; - } - os.write_unknown_fields(self.special_fields.unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn special_fields(&self) -> &::protobuf::SpecialFields { - &self.special_fields - } - - fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { - &mut self.special_fields - } - - fn new() -> CosiCommitment { - CosiCommitment::new() - } - - fn clear(&mut self) { - self.commitment = ::std::option::Option::None; - self.pubkey = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CosiCommitment { - static instance: CosiCommitment = CosiCommitment { - commitment: ::std::option::Option::None, - pubkey: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for CosiCommitment { - fn descriptor() -> ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| file_descriptor().message_by_package_relative_name("CosiCommitment").unwrap()).clone() - } -} - -impl ::std::fmt::Display for CosiCommitment { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for CosiCommitment { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; -} - -// @@protoc_insertion_point(message:hw.trezor.messages.crypto.CosiSign) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct CosiSign { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSign.address_n) - pub address_n: ::std::vec::Vec<u32>, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSign.data) - pub data: ::std::option::Option<::std::vec::Vec<u8>>, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSign.global_commitment) - pub global_commitment: ::std::option::Option<::std::vec::Vec<u8>>, - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSign.global_pubkey) - pub global_pubkey: ::std::option::Option<::std::vec::Vec<u8>>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.crypto.CosiSign.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a CosiSign { - fn default() -> &'a CosiSign { - <CosiSign as ::protobuf::Message>::default_instance() - } -} - -impl CosiSign { - pub fn new() -> CosiSign { - ::std::default::Default::default() - } - - // required bytes data = 2; - - pub fn data(&self) -> &[u8] { - match self.data.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_data(&mut self) { - self.data = ::std::option::Option::None; - } - - pub fn has_data(&self) -> bool { - self.data.is_some() - } - - // Param is passed by value, moved - pub fn set_data(&mut self, v: ::std::vec::Vec<u8>) { - self.data = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_data(&mut self) -> &mut ::std::vec::Vec<u8> { - if self.data.is_none() { - self.data = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.data.as_mut().unwrap() - } - - // Take field - pub fn take_data(&mut self) -> ::std::vec::Vec<u8> { - self.data.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - // required bytes global_commitment = 3; - - pub fn global_commitment(&self) -> &[u8] { - match self.global_commitment.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_global_commitment(&mut self) { - self.global_commitment = ::std::option::Option::None; - } - - pub fn has_global_commitment(&self) -> bool { - self.global_commitment.is_some() - } - - // Param is passed by value, moved - pub fn set_global_commitment(&mut self, v: ::std::vec::Vec<u8>) { - self.global_commitment = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_global_commitment(&mut self) -> &mut ::std::vec::Vec<u8> { - if self.global_commitment.is_none() { - self.global_commitment = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.global_commitment.as_mut().unwrap() - } - - // Take field - pub fn take_global_commitment(&mut self) -> ::std::vec::Vec<u8> { - self.global_commitment.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - // required bytes global_pubkey = 4; - - pub fn global_pubkey(&self) -> &[u8] { - match self.global_pubkey.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_global_pubkey(&mut self) { - self.global_pubkey = ::std::option::Option::None; - } - - pub fn has_global_pubkey(&self) -> bool { - self.global_pubkey.is_some() - } - - // Param is passed by value, moved - pub fn set_global_pubkey(&mut self, v: ::std::vec::Vec<u8>) { - self.global_pubkey = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_global_pubkey(&mut self) -> &mut ::std::vec::Vec<u8> { - if self.global_pubkey.is_none() { - self.global_pubkey = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.global_pubkey.as_mut().unwrap() - } - - // Take field - pub fn take_global_pubkey(&mut self) -> ::std::vec::Vec<u8> { - self.global_pubkey.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(4); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>( - "address_n", - |m: &CosiSign| { &m.address_n }, - |m: &mut CosiSign| { &mut m.address_n }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "data", - |m: &CosiSign| { &m.data }, - |m: &mut CosiSign| { &mut m.data }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "global_commitment", - |m: &CosiSign| { &m.global_commitment }, - |m: &mut CosiSign| { &mut m.global_commitment }, - )); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "global_pubkey", - |m: &CosiSign| { &m.global_pubkey }, - |m: &mut CosiSign| { &mut m.global_pubkey }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CosiSign>( - "CosiSign", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for CosiSign { - const NAME: &'static str = "CosiSign"; - - fn is_initialized(&self) -> bool { - if self.data.is_none() { - return false; - } - if self.global_commitment.is_none() { - return false; - } - if self.global_pubkey.is_none() { - return false; - } - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { - while let Some(tag) = is.read_raw_tag_or_eof()? { - match tag { - 10 => { - is.read_repeated_packed_uint32_into(&mut self.address_n)?; - }, - 8 => { - self.address_n.push(is.read_uint32()?); - }, - 18 => { - self.data = ::std::option::Option::Some(is.read_bytes()?); - }, - 26 => { - self.global_commitment = ::std::option::Option::Some(is.read_bytes()?); - }, - 34 => { - self.global_pubkey = ::std::option::Option::Some(is.read_bytes()?); - }, - tag => { - ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u64 { - let mut my_size = 0; - for value in &self.address_n { - my_size += ::protobuf::rt::uint32_size(1, *value); - }; - if let Some(v) = self.data.as_ref() { - my_size += ::protobuf::rt::bytes_size(2, &v); - } - if let Some(v) = self.global_commitment.as_ref() { - my_size += ::protobuf::rt::bytes_size(3, &v); - } - if let Some(v) = self.global_pubkey.as_ref() { - my_size += ::protobuf::rt::bytes_size(4, &v); - } - my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); - self.special_fields.cached_size().set(my_size as u32); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - for v in &self.address_n { - os.write_uint32(1, *v)?; - }; - if let Some(v) = self.data.as_ref() { - os.write_bytes(2, v)?; - } - if let Some(v) = self.global_commitment.as_ref() { - os.write_bytes(3, v)?; - } - if let Some(v) = self.global_pubkey.as_ref() { - os.write_bytes(4, v)?; - } - os.write_unknown_fields(self.special_fields.unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn special_fields(&self) -> &::protobuf::SpecialFields { - &self.special_fields - } - - fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { - &mut self.special_fields - } - - fn new() -> CosiSign { - CosiSign::new() - } - - fn clear(&mut self) { - self.address_n.clear(); - self.data = ::std::option::Option::None; - self.global_commitment = ::std::option::Option::None; - self.global_pubkey = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CosiSign { - static instance: CosiSign = CosiSign { - address_n: ::std::vec::Vec::new(), - data: ::std::option::Option::None, - global_commitment: ::std::option::Option::None, - global_pubkey: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for CosiSign { - fn descriptor() -> ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| file_descriptor().message_by_package_relative_name("CosiSign").unwrap()).clone() - } -} - -impl ::std::fmt::Display for CosiSign { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for CosiSign { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; -} - -// @@protoc_insertion_point(message:hw.trezor.messages.crypto.CosiSignature) -#[derive(PartialEq,Clone,Default,Debug)] -pub struct CosiSignature { - // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.crypto.CosiSignature.signature) - pub signature: ::std::option::Option<::std::vec::Vec<u8>>, - // special fields - // @@protoc_insertion_point(special_field:hw.trezor.messages.crypto.CosiSignature.special_fields) - pub special_fields: ::protobuf::SpecialFields, -} - -impl<'a> ::std::default::Default for &'a CosiSignature { - fn default() -> &'a CosiSignature { - <CosiSignature as ::protobuf::Message>::default_instance() - } -} - -impl CosiSignature { - pub fn new() -> CosiSignature { - ::std::default::Default::default() - } - - // required bytes signature = 1; - - pub fn signature(&self) -> &[u8] { - match self.signature.as_ref() { - Some(v) => v, - None => &[], - } - } - - pub fn clear_signature(&mut self) { - self.signature = ::std::option::Option::None; - } - - pub fn has_signature(&self) -> bool { - self.signature.is_some() - } - - // Param is passed by value, moved - pub fn set_signature(&mut self, v: ::std::vec::Vec<u8>) { - self.signature = ::std::option::Option::Some(v); - } - - // Mutable pointer to the field. - // If field is not initialized, it is initialized with default value first. - pub fn mut_signature(&mut self) -> &mut ::std::vec::Vec<u8> { - if self.signature.is_none() { - self.signature = ::std::option::Option::Some(::std::vec::Vec::new()); - } - self.signature.as_mut().unwrap() - } - - // Take field - pub fn take_signature(&mut self) -> ::std::vec::Vec<u8> { - self.signature.take().unwrap_or_else(|| ::std::vec::Vec::new()) - } - - fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(1); - let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "signature", - |m: &CosiSignature| { &m.signature }, - |m: &mut CosiSignature| { &mut m.signature }, - )); - ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<CosiSignature>( - "CosiSignature", - fields, - oneofs, - ) - } -} - -impl ::protobuf::Message for CosiSignature { - const NAME: &'static str = "CosiSignature"; - - fn is_initialized(&self) -> bool { - if self.signature.is_none() { - return false; - } - true - } - - fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { - while let Some(tag) = is.read_raw_tag_or_eof()? { - match tag { - 10 => { - self.signature = ::std::option::Option::Some(is.read_bytes()?); - }, - tag => { - ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; - }, - }; - } - ::std::result::Result::Ok(()) - } - - // Compute sizes of nested messages - #[allow(unused_variables)] - fn compute_size(&self) -> u64 { - let mut my_size = 0; - if let Some(v) = self.signature.as_ref() { - my_size += ::protobuf::rt::bytes_size(1, &v); - } - my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); - self.special_fields.cached_size().set(my_size as u32); - my_size - } - - fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - if let Some(v) = self.signature.as_ref() { - os.write_bytes(1, v)?; - } - os.write_unknown_fields(self.special_fields.unknown_fields())?; - ::std::result::Result::Ok(()) - } - - fn special_fields(&self) -> &::protobuf::SpecialFields { - &self.special_fields - } - - fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { - &mut self.special_fields - } - - fn new() -> CosiSignature { - CosiSignature::new() - } - - fn clear(&mut self) { - self.signature = ::std::option::Option::None; - self.special_fields.clear(); - } - - fn default_instance() -> &'static CosiSignature { - static instance: CosiSignature = CosiSignature { - signature: ::std::option::Option::None, - special_fields: ::protobuf::SpecialFields::new(), - }; - &instance - } -} - -impl ::protobuf::MessageFull for CosiSignature { - fn descriptor() -> ::protobuf::reflect::MessageDescriptor { - static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); - descriptor.get(|| file_descriptor().message_by_package_relative_name("CosiSignature").unwrap()).clone() - } -} - -impl ::std::fmt::Display for CosiSignature { - fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - ::protobuf::text_format::fmt(self, f) - } -} - -impl ::protobuf::reflect::ProtobufValue for CosiSignature { - type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; -} - static file_descriptor_proto_data: &'static [u8] = b"\ \n\x15messages-crypto.proto\x12\x19hw.trezor.messages.crypto\x1a\x0emess\ ages.proto\"\xcb\x01\n\x0eCipherKeyValue\x12\x1b\n\taddress_n\x18\x01\ @@ -2902,17 +2048,9 @@ static file_descriptor_proto_data: &'static [u8] = b"\ peR\x08identity\x12&\n\x0fpeer_public_key\x18\x02\x20\x02(\x0cR\rpeerPub\ licKey\x12(\n\x10ecdsa_curve_name\x18\x03\x20\x01(\tR\x0eecdsaCurveName\ \"P\n\x0eECDHSessionKey\x12\x1f\n\x0bsession_key\x18\x01\x20\x02(\x0cR\n\ - sessionKey\x12\x1d\n\npublic_key\x18\x02\x20\x01(\x0cR\tpublicKey\"A\n\n\ - CosiCommit\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x16\ - \n\x04data\x18\x02\x20\x01(\x0cR\x04dataB\x02\x18\x01\"H\n\x0eCosiCommit\ - ment\x12\x1e\n\ncommitment\x18\x01\x20\x02(\x0cR\ncommitment\x12\x16\n\ - \x06pubkey\x18\x02\x20\x02(\x0cR\x06pubkey\"\x8d\x01\n\x08CosiSign\x12\ - \x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x12\n\x04data\x18\ - \x02\x20\x02(\x0cR\x04data\x12+\n\x11global_commitment\x18\x03\x20\x02(\ - \x0cR\x10globalCommitment\x12#\n\rglobal_pubkey\x18\x04\x20\x02(\x0cR\ - \x0cglobalPubkey\"-\n\rCosiSignature\x12\x1c\n\tsignature\x18\x01\x20\ - \x02(\x0cR\tsignatureB>\n#com.satoshilabs.trezor.lib.protobufB\x13Trezor\ - MessageCrypto\x80\xa6\x1d\x01\ + sessionKey\x12\x1d\n\npublic_key\x18\x02\x20\x01(\x0cR\tpublicKeyB>\n#co\ + m.satoshilabs.trezor.lib.protobufB\x13TrezorMessageCrypto\x80\xa6\x1d\ + \x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -2931,7 +2069,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { let generated_file_descriptor = generated_file_descriptor_lazy.get(|| { let mut deps = ::std::vec::Vec::with_capacity(1); deps.push(super::messages::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(11); + let mut messages = ::std::vec::Vec::with_capacity(7); messages.push(CipherKeyValue::generated_message_descriptor_data()); messages.push(CipheredKeyValue::generated_message_descriptor_data()); messages.push(IdentityType::generated_message_descriptor_data()); @@ -2939,10 +2077,6 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(SignedIdentity::generated_message_descriptor_data()); messages.push(GetECDHSessionKey::generated_message_descriptor_data()); messages.push(ECDHSessionKey::generated_message_descriptor_data()); - messages.push(CosiCommit::generated_message_descriptor_data()); - messages.push(CosiCommitment::generated_message_descriptor_data()); - messages.push(CosiSign::generated_message_descriptor_data()); - messages.push(CosiSignature::generated_message_descriptor_data()); let mut enums = ::std::vec::Vec::with_capacity(0); ::protobuf::reflect::GeneratedFileDescriptor::new_generated( file_descriptor_proto(), diff --git a/tests/device_tests/misc/test_cosi.py b/tests/device_tests/misc/test_cosi.py deleted file mode 100644 index 2034518f8c..0000000000 --- a/tests/device_tests/misc/test_cosi.py +++ /dev/null @@ -1,164 +0,0 @@ -# This file is part of the Trezor project. -# -# Copyright (C) 2012-2019 SatoshiLabs and contributors -# -# This library is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# as published by the Free Software Foundation. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the License along with this library. -# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. - -from hashlib import sha256 - -import pytest - -from trezorlib import cosi -from trezorlib.debuglink import TrezorClientDebugLink as Client -from trezorlib.exceptions import TrezorFailure -from trezorlib.tools import H_, Address, parse_path - -DIGEST = sha256(b"this is not a pipe").digest() - - -@pytest.mark.skip_t1 -def test_cosi_pubkey(client: Client): - c0 = cosi.commit(client, parse_path("m/10018h/0h")) - c1 = cosi.commit(client, parse_path("m/10018h/1h")) - c2 = cosi.commit(client, parse_path("m/10018h/2h")) - - assert c0.pubkey != c1.pubkey - assert c0.pubkey != c2.pubkey - assert c1.pubkey != c2.pubkey - - -@pytest.mark.skip_t1 -def test_cosi_nonce(client: Client): - # The nonce/commitment must change after each signing. - c0 = cosi.commit(client, parse_path("m/10018h/0h")) - cosi.sign(client, parse_path("m/10018h/0h"), DIGEST, c0.commitment, c0.pubkey) - c1 = cosi.commit(client, parse_path("m/10018h/0h")) - assert c0.commitment != c1.commitment - - -@pytest.mark.skip_t1 -def test_cosi_sign1(client: Client): - # Single party signature. - commit = cosi.commit(client, parse_path("m/10018h/0h")) - sig = cosi.sign( - client, parse_path("m/10018h/0h"), DIGEST, commit.commitment, commit.pubkey - ) - signature = cosi.combine_sig(commit.commitment, [sig.signature]) - cosi.verify_combined(signature, DIGEST, commit.pubkey) - - -@pytest.mark.skip_t1 -def test_cosi_sign2(client: Client): - # Two party signature. - remote_commit = cosi.commit(client, parse_path("m/10018h/1h")) - - local_privkey = sha256(b"private key").digest()[:32] - local_pubkey = cosi.pubkey_from_privkey(local_privkey) - local_nonce, local_commitment = cosi.get_nonce(local_privkey, DIGEST, 42) - - global_pk = cosi.combine_keys([remote_commit.pubkey, local_pubkey]) - global_R = cosi.combine_keys([remote_commit.commitment, local_commitment]) - - remote_sig = cosi.sign( - client, parse_path("m/10018h/1h"), DIGEST, global_R, global_pk - ) - local_sig = cosi.sign_with_privkey( - DIGEST, local_privkey, global_pk, local_nonce, global_R - ) - signature = cosi.combine_sig(global_R, [remote_sig.signature, local_sig]) - - cosi.verify_combined(signature, DIGEST, global_pk) - - -@pytest.mark.skip_t1 -def test_cosi_sign3(client: Client): - # Three party signature. - remote_commit = cosi.commit(client, parse_path("m/10018h/2h")) - - local_privkey1 = sha256(b"private key").digest()[:32] - local_pubkey1 = cosi.pubkey_from_privkey(local_privkey1) - local_nonce1, local_commitment1 = cosi.get_nonce(local_privkey1, DIGEST, 42) - - local_privkey2 = sha256(b"private key").digest()[:32] - local_pubkey2 = cosi.pubkey_from_privkey(local_privkey2) - local_nonce2, local_commitment2 = cosi.get_nonce(local_privkey2, DIGEST, 42) - - global_pk = cosi.combine_keys([remote_commit.pubkey, local_pubkey1, local_pubkey2]) - global_R = cosi.combine_keys( - [remote_commit.commitment, local_commitment1, local_commitment2] - ) - - remote_sig = cosi.sign( - client, parse_path("m/10018h/2h"), DIGEST, global_R, global_pk - ) - local_sig1 = cosi.sign_with_privkey( - DIGEST, local_privkey1, global_pk, local_nonce1, global_R - ) - local_sig2 = cosi.sign_with_privkey( - DIGEST, local_privkey2, global_pk, local_nonce2, global_R - ) - signature = cosi.combine_sig( - global_R, [remote_sig.signature, local_sig1, local_sig2] - ) - - cosi.verify_combined(signature, DIGEST, global_pk) - - -@pytest.mark.skip_t1b1 -def test_cosi_different_key(client: Client): - with pytest.raises(TrezorFailure): - commit = cosi.commit(client, parse_path("m/10018h/0h")) - cosi.sign( - client, parse_path("m/10018h/1h"), DIGEST, commit.commitment, commit.pubkey - ) - - -@pytest.mark.parametrize( - "model, image_type", - ( - (b"T1B1", 0), - (b"T2T1", 0), - (b"T2B1", 0), - (b"T3W1", 0), - (b"\xfe\xfe\xfe\xfe", 0), - (b"\x00", 0), - (b"\x00", 3), - (b"dog", 0), - (b"42", 0), - (b"T2B1", 1), - (b"T2B1", 2), - (b"T2B1", 3), - ), -) -@pytest.mark.skip_t1b1 -def test_slip26_paths(client: Client, model: bytes, image_type: int): - slip26_model = int.from_bytes(model, "little") - path = Address([H_(10026), H_(slip26_model), H_(image_type), H_(0)]) - commit = cosi.commit(client, path) - cosi.sign(client, path, DIGEST, commit.commitment, commit.pubkey) - - -@pytest.mark.parametrize( - "path", - ( - "m/44h/0h/0h/0/0", - "m/44h/60h/0h/0/0", - "m/44h/60h/1h", - "m/84h/60h/1h/0", - "m/1", - "m/10018/0", - ), -) -def test_invalid_path(client: Client, path: str) -> None: - with pytest.raises(TrezorFailure, match="DataError"): - cosi.commit(client, parse_path(path)) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 344cf7674e..29bbdd3a6b 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -508,17 +508,6 @@ "T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "5b008a081b4ef9e7b47c9d0c1fc4bb24d729d77841193694232bd2da4a386515", "T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "f6c5f398d4e80fc8f93cf70e9b10de24b9a968db04dc6ea21b28d1a273f04ca1", "T1B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "f6c5f398d4e80fc8f93cf70e9b10de24b9a968db04dc6ea21b28d1a273f04ca1", -"T1B1_en_misc-test_cosi.py::test_cosi_nonce": "6990c238036b79368fea1dc1e3e8871d7788322bbee7425d14c53623bc8182e8", -"T1B1_en_misc-test_cosi.py::test_cosi_pubkey": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_cosi_sign1": "6990c238036b79368fea1dc1e3e8871d7788322bbee7425d14c53623bc8182e8", -"T1B1_en_misc-test_cosi.py::test_cosi_sign2": "0852e7433ec54a0ace301b683417107a9805095acd954010b665266503a79f36", -"T1B1_en_misc-test_cosi.py::test_cosi_sign3": "d04fca2d97f7117ffc79ae52d192086aba2f9c64e89db27e20a930e9048f1d81", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-1]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a849d9e11e222d1348ce3135680a2a61ed265692adeba4bd48af2fdc65207e61", "T1B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "e36d5b5db4b3733c9f484b149c0f966b3dd66e8b54e1b5bccf9da5cca7abed91", @@ -1938,30 +1927,6 @@ "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "69d92b51b7dcfb3f983d31daf33fa98630a3882bbf3229b5eb9a940dcfc16e40", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", "T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", -"T2B1_cs_misc-test_cosi.py::test_cosi_different_key": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_cosi_nonce": "06885e27e4ecc5f77258d3b2e3fd8d80f88681fb11dea87b24ec87682de6ff41", -"T2B1_cs_misc-test_cosi.py::test_cosi_pubkey": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_cosi_sign1": "06885e27e4ecc5f77258d3b2e3fd8d80f88681fb11dea87b24ec87682de6ff41", -"T2B1_cs_misc-test_cosi.py::test_cosi_sign2": "db15cbdab4d96085014be22892c03250947cb41017e40368089ae2112f283959", -"T2B1_cs_misc-test_cosi.py::test_cosi_sign3": "24628c67a2880160aa8ae450d68df8bfabe9ead9121e22dc1e22d44a395e23c3", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "ad0a6735f154c9f92d5491a1505a2fbfce1d7ad4a90ddd79e1d6bb68f605b6d2", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a61a38a608f6316462bdd55f85202492a5638b28cb956109f009fb68f58053c1", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "9f3e793b80ae97f4d11eb31ba09c9144c7bd570ca078adf5f292952152e0d2ec", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "82bf78e346f76069ad913c3d1ab2fa64325a6c8cbecd5d6b0a6aa4ffea71703c", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "42250ce7aa5c00448132d126d43ca509aba5b86bb36877217eac659d0fd1606c", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "122f25ceef057954a02b394a9cd54ae81839f1c8782d61e8b52cf96ff9d3a2f6", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "19f0346a9f8e5295fc393cfd6b067015f0b12bcefd087958af33ffe66d6634e4", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "f4a961209fe49fe62387502d33ac93d4c21acee825235167b82eaf1975ee0494", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "cb4c5ca7b4a3bd512c9d414e5c49e4d02f1c66dabb10a9b4dc606abc3db01391", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "1d6a93ab795fb4e8ca89a5ce057e00ab3a43d23496b5779bcf9e537c416cde2a", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "86d570d412c0d4b13e2e7d7f56f9bfb2738d15ada7d0f786ec889a9454740735", -"T2B1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "a2459dceba39287e929432d9ba012366609d75bcc2fcc5aeb601897ee4a88103", "T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "07025404857730711a32d685fe43f7917d462dcfbad445ff8e6835d81f4eb7db", "T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "9efdfe86a04909c34a78c6a4596fe91af78b1ca98b2d35ff529df31aa31cbfe5", @@ -3329,30 +3294,6 @@ "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "8e7aecf04dc7c5df0ccf1851b67a10540505a0c7e211d36cab4516c003b258c0", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", "T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", -"T2B1_de_misc-test_cosi.py::test_cosi_different_key": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_cosi_nonce": "ebbc74669685e6a9f6285d16c4cddb0f8a4b46b0f4f58b82ac8e03cc638f9159", -"T2B1_de_misc-test_cosi.py::test_cosi_pubkey": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_cosi_sign1": "ebbc74669685e6a9f6285d16c4cddb0f8a4b46b0f4f58b82ac8e03cc638f9159", -"T2B1_de_misc-test_cosi.py::test_cosi_sign2": "33031c8593711c0cab13053ac27e1c92281fe68b3cd0eefcff261b169aa18fcc", -"T2B1_de_misc-test_cosi.py::test_cosi_sign3": "d7e275e9a8265cbccc8814fe722935b2c7a1befe0e6c4d4ac3d16ae927f4c603", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "2f2a9697b34e7566ea6921f636dd45dce2e6163424a30b48bb64bde57517fa81", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "acf1be38181d19644cb061c25d87f26d66a9a8bd760a92e3a354a653053205a3", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "894357b5f6396ecd5f213e1efb91e5dae62fbf76d5639936980f75033ab6342d", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "d973696f4f0937fca62dcf78fcce81ef32c03a513f699c521d125ce2481e3643", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "adaa2a8c3cb1fc351602616c6615cabebda1bf8eecbabc08df890f509d157ba1", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "05a461ddb797abf1830de08d61ccffe964bb6e00c995a505d5ea1ab656c1c862", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "1423c5b908b3d4db1bbf3e5c34f248c6709f3f35e09134967a41bcef8626c8cd", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "2c501a906cf0ce02addddecbd315bd83d42c770436065eb912f34e3d4ac03ce9", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "6309b6c5879be62085154785cd6c13191ad38d96fba67afdf117720803de9b89", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "57ada1366306af28be032f3d75411d8cfe429d08a631904723eda8f18029f419", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "e310a7a7d27425ce61d9474de9841b057a207337984614efcf74e7e9705e82a5", -"T2B1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "1397528eb1c9802748e303101c773e274b8184268fdf312ffa31b1c01c99613c", "T2B1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "80f26d847f817759a03dab25b427fc18d71f077e63bab70888f82e7ee287d801", "T2B1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "20041259f3b47fa3e429be139b92a0d2b11c8e075289715341744dd919d011ce", @@ -4720,30 +4661,6 @@ "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "af1dc7cc49b1e75d7c1b06767503e31a9f5fee4f4d0b426edf98818b4caf449a", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", "T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", -"T2B1_en_misc-test_cosi.py::test_cosi_different_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_cosi_nonce": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", -"T2B1_en_misc-test_cosi.py::test_cosi_pubkey": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_cosi_sign1": "df3420ca2395ced6fb2e3e5b984ece9d1a1151d877061681582c8f9404416600", -"T2B1_en_misc-test_cosi.py::test_cosi_sign2": "381af0c5a649c6adb62c6d75c3a46f1a7b3c31e8559e6dc390a4738aad463997", -"T2B1_en_misc-test_cosi.py::test_cosi_sign3": "be6f8a2dfb626ca4fdedaa1a0e91bb373fcbeebd8fe7180884b4cc56ae32a7e9", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "ec0787ec28e6643c3f0d3d925960219086378eba88659709cccde3de2cd31fb0", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "c7a89aeb54454adc91cc0688f676faf9f1c24e8bcc2d350af3e3c8b70fdf5ced", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d8d14a4d23b4c257d37d34a2932d1d2b940d919c943aa44a8facc4a7053ede83", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "cc987dc41cafaeff79e3053882c2a8c41b2a82da149cebe7ed3e3b84fb20d9a4", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bdbf159199dd2849b96c820a699fb49b5177f9755fe820b00cd201f47d94b531", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "34cd0ab3d37e4d5cc6e37a24ae3f9746f3deb20ea4fd2bcdecc546ec364cf7ef", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "8e4b73c8f813f12f8b52fcf1ef30c0368b22b5f6f58af61298c5326b1ef26913", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "aba52e4a06fd36beea0ea5a1b627f8f627b022b0022a06f642138d1617bbd912", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "829778a8d2915c226eb3842e9d3535d53dffa17d7b13a1a21646c595588ff535", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "fad77d8c159e54dbddc2e488858205a7d7aed115d136177982f1648df49bb0c8", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d2d9c32d8cc435f129019f5fe2c376c099ccd3f14e2c81ce2d8fe8397531c574", -"T2B1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "1824390cfd045d43a5e38bf5ec881c3f97b8b0a1adff3dbf16416b413d3bca4b", "T2B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "cffd4985f48bb8c64baede4ce18ae1a69dbd02bca4664ab23a146d5031ffad87", "T2B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "468ff13a1c14b5a9fed5b58f0f1473448828acb96638045a29c6fed73e140d91", @@ -6111,30 +6028,6 @@ "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "d0b024c3cbda0c8ee003278de069360b1cfc3da3b2f572c30d68ce162fdfee6f", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", "T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", -"T2B1_es_misc-test_cosi.py::test_cosi_different_key": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_cosi_nonce": "2d6a3fefcf8178dbfc876a61b980bd9b9d84a207553c806bd0f79dfcdbca6bb7", -"T2B1_es_misc-test_cosi.py::test_cosi_pubkey": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_cosi_sign1": "2d6a3fefcf8178dbfc876a61b980bd9b9d84a207553c806bd0f79dfcdbca6bb7", -"T2B1_es_misc-test_cosi.py::test_cosi_sign2": "79482564a18e9f70c3ae39e1b2efc4073c9bbebe76fa6f1cdd9e43d6e3f497b3", -"T2B1_es_misc-test_cosi.py::test_cosi_sign3": "d98eae3f1076fc8b311aed7271ddb67e71bcadcf176cf35e8b6933aaa275456b", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "512aefa9155530f96152a0d20e7727e0f5cd02409f8b2400fc4c18af0d943c19", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "21bfe7447fd14090d1b581060656b931dffa0dc87ffdfe7012f331a2988a0b96", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "1f171f60556062a67740d319ce95b72dbd048677bb01d7ab7183ef30f0fbb645", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "4cdf2f0fbc5bb1c171d9f8e2bdfaf298c3c69c679bb4818f8441e89accee8fe9", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "91421480650a2a8d90a00f12cc1efbda1fecaaba1b8f8b40a050f0753ab979b5", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "22d733ded20d494f2b0c4e572b4a77dec7a2e0a28e0f1c944edd00689f2ddb9f", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "5c73649db4d3905186164e9455f0b31bb0bf4201ee1cb5dd69be0136982e0cab", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "b9589b43385afeb47aaf559bd4d211798d1f3ed9fc10238d29403df79ee8fb53", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "7e1cf1b5dc0d06006802cb7e059c978ea2789a30413b5d621fe4f8d0734bf81c", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2620c6dc933aaa6c90a569e8d2d84e34e2cfc474c4278ae473cb9afcad911c4b", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "962a923cce1a3d79a0c620820c299406a305bac6c9dc15e35e5b37ae33455fc0", -"T2B1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "5c630bbd3dddd7108de3b62d54d2cf9eb6835778a043eb22b8ba94f4746e3c7c", "T2B1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "990a89cefba1c6dbced84be89a5b46e682caaa3ad823c0e90e9fb965121763bf", "T2B1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ed5d2107fee8450d75172f551c66c005fe885a1aa8b52b70257167c568488d14", @@ -7502,30 +7395,6 @@ "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "cee0f6a519db68f21773449f3e6856006dd40734e49b069fb879028322150cb6", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "e2b731229d1427e2b311d23f3e096545613313ec5a3da4e50e86afbad6adbfca", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "e2b731229d1427e2b311d23f3e096545613313ec5a3da4e50e86afbad6adbfca", -"T2B1_fr_misc-test_cosi.py::test_cosi_different_key": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_cosi_nonce": "92ecda1ae682b08366b59b84406ffd51d3bdd7973d8b2a6ffe96db6dff1c4036", -"T2B1_fr_misc-test_cosi.py::test_cosi_pubkey": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_cosi_sign1": "92ecda1ae682b08366b59b84406ffd51d3bdd7973d8b2a6ffe96db6dff1c4036", -"T2B1_fr_misc-test_cosi.py::test_cosi_sign2": "36076e3d735357dfb1c7a5e91d3a1ef4586582f3a594d4985c2e98df61b46d26", -"T2B1_fr_misc-test_cosi.py::test_cosi_sign3": "faf507c23b2c2cf3c777fc68053266c7167b2be427be1137482732bd7f3f21a9", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "6110d06d0533f58addbd2f999743fa34a0801c4d7b9bb2d99ffa1bedc83d66ed", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "b8c2c2c8509beb9f4b0ad922d376fef2d42be026ccd92fc92d6bed7625b5d3d7", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a9ec027e6db11ed9280efe2871c3d64dd07054fe4d56419a1a1b41f0926528a0", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "c16ae7ff2962f64986dd93271c8d343c416ef8f8113196dcbfe04679f8251245", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "bafa683009b9800952f9d5ae70ad0f68cd9e7b6b17a6df813f802c24c271bc79", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "7b0e56546d5103e57bb10d4a454dac3def5f54f47fccb65bdc891e9129cea84f", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "424e5811f3b17b6ba6f0889537efb58c2ed993f7b528d4d42aa2feba7188b983", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "bde0ab63b028f55ea878e34717b47c159365879edbe5803e51b7d896334eeed6", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "1d02cb27b7e43eb4ff044ac8c53aa886a7d1987002ec048f11d075d741c28a20", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "4554b246e452bb27972592676399cf8c949816da4a00cab368cea778d40f8ea3", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "527ccd1f2a4ef84a181c06d4df26fdc2c582035e745d25aea9f0b114d8a9d898", -"T2B1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "1070bd02fac2efc841080c0637bcb8caa9dc47e36295cae6d7c96bf0db7f541a", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b88a77fd08f3bb3bff5dc70f960878ed65bdd46dc34f11865bce617e7aaaed28", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "d7b2b7f911d0b1ebcd95275ccd1ecf1e7b8e53080d5fa70c01a8840dc23b1237", @@ -9205,30 +9074,6 @@ "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "1c4d2386a5322d5e0fc5e690d8fe9e3f629536c9405521485420f6dc2ed9de8e", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", "T2T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d39375d8ee59020ba5c2b0895905334648cdf843aded4473c13aab956489bff6", -"T2T1_cs_misc-test_cosi.py::test_cosi_different_key": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_cosi_nonce": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", -"T2T1_cs_misc-test_cosi.py::test_cosi_pubkey": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_cosi_sign1": "98f05a25d51a66a9e55e31bcbc0b40c5e83321ca6203f34deb1a04a6a17ec17b", -"T2T1_cs_misc-test_cosi.py::test_cosi_sign2": "cd738c0f1477e72f40995a686927413ded747e08275694b149167de93b3b769e", -"T2T1_cs_misc-test_cosi.py::test_cosi_sign3": "74fb1d8000a1565e80d35d3c3f79161e8b3f586ab8dcfdc7eee2a020b499c078", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "fcef99ead33b058212580316b41570bf7c8fadf64b566c71b4d70b6b7d1c8e3b", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "a02157c1d1909c456b33907814c417ceb9d16c7f9de10d56cbe12d09971b2560", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "bc34dfb1e19b4c655cf44908f3ce05b21ba0e9cb8b4e97bdee35b8291aa0a232", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b2666be6c016c3d58009873812225387b9f2154c7d498c620bd7a5742058d654", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "28a9508cf78d77055a4bb528da662ae0634cbfe5638f92e331b7dc6b2d91792d", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "e7a2d703602998ee5a39fb7fcff9ed804ad0e8a94bc5d4f7205bc51526ac93a4", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "9a2abcc7ec0a58d74521b06665dc3ae88b9a62042288369390d26b6763d827b9", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "3cc98b88a21d501a4c63a2b0ad19ec5f3d40222ffd1facc0feb970542581c4cd", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "f5beba2c29dea248bcc23dbd4a0bf3829a5d3560baf838e2eb5f69fbb4261768", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "df81c39e6fd20ca56aafd9e6c4175472190cb74a7b2551e196b3e6e1daee77ca", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "d025205f6855b9cd70dd9dc31ab924d009e799e05c5b94135fc14dc01f76853a", -"T2T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "380ac240bd5640370348cd3f11961fc8b33d432d6734663aa113fcefc4ce9eff", "T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "9735e3b03d62177215eaf671d9dff4e9b1bae1fa5c3bcefea290dd723320287e", "T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "cd4b56ccfc663dd499e4ac02fff1000e05f58347f1bfdfc45612832e5c7d780c", @@ -10676,30 +10521,6 @@ "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "44e752f9ed9f60ae9f0ca13e405e39bb455b43efc24be042ccd1a5a165af0c60", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", "T2T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "72fe2a5ae639309ed9f97c74a6c8181b9d4ef52ebbd296c2a6f919019bc01684", -"T2T1_de_misc-test_cosi.py::test_cosi_different_key": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_cosi_nonce": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", -"T2T1_de_misc-test_cosi.py::test_cosi_pubkey": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_cosi_sign1": "e350f690f1c28f7e9dba9dd8c507893cfae0a56adac15d92be46b15aa01abf3b", -"T2T1_de_misc-test_cosi.py::test_cosi_sign2": "55aa2834b43cc6188c7e1200baf9bd30cd0c6ed28c8395708da810feef86a35e", -"T2T1_de_misc-test_cosi.py::test_cosi_sign3": "59947cced1a42e3b009bc8275c777aa2e831b853b2a213386b0f6a95f47a80e4", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "430b1a67ef6afd7d5e70cf65b61f16d30b0848aede534f942a874050aafff4b5", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "f6218139d2bc6d16addb206ae28916d4c6b64a1ab0c500a28d18244904fede95", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "d73d8efc8f293e97a0983c01a8db287f36348ba6cadd87e9b30153368c25f770", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "bc34420d2a360999c0bfa6b924c62e9c992d1c5f00f27c2d4720b30a80d7c668", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "22c4d2aaff98aa2fe3f7a69e154cce3a98e18340dab90de66d2d1fa8b7bc2c37", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "8eee264d700aad7dc05381ab2373d852e7db9f68486076baa45a5ca53112ddb4", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "6717ffff08c91aa4a0efe516ae6f2536653777cee132b5eb5fa68a12b66dcc8c", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "ac39d1ea3f808eb1b2c48cea535846275525cf05017583c780edd48fd9ba0472", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "a81bf07732741a59e4b6d815c7f803cc9944ec9f5c307e473780aaa5b8e0fee9", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3238efe69c8ad351b921a769b5f5daf91b252f89c9d7c08e1cc7075ae7a67806", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "f028a400dad0eb049c42de8c5e7ba57bddd6881bb61c2c20594a54aed14ee849", -"T2T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "c82e4e18f402534f17a7bc7949a432f3394ff9d4156c12b77d55c6d9bd9db744", "T2T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "0aba69a0e1bfb96e1525ee56fb0ec6b08b8655cb5163da70199ddd0aece751d7", "T2T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "a91d34b541494aa36357fd0284b7d6a0de5044269f37271e3a3dd4692d3a69f9", @@ -12147,30 +11968,6 @@ "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "f24ba4c504e12ec403aa99f19f9d9c78cc513edb2b7671063033902d089d894c", "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", "T2T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "b24d5247a866e3aa69fe3fc17eabaa210890b285e3c4b84eb253570fcc0c8bed", -"T2T1_en_misc-test_cosi.py::test_cosi_different_key": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_cosi_nonce": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"T2T1_en_misc-test_cosi.py::test_cosi_pubkey": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_cosi_sign1": "25a47ec1384fb563a6495d92d9319d19220cbb15b0f33fbdc26f01d3ccde1980", -"T2T1_en_misc-test_cosi.py::test_cosi_sign2": "b3086dafdda715fea319d90ee3ccab84a1728678dfa67febce1f7cc943d9e585", -"T2T1_en_misc-test_cosi.py::test_cosi_sign3": "6ea5987edda7c73d7aac080833b8574626f016233c38d068185e8cbcba46cc11", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "25929f2293cfef2d7fdd8859bb16d0311c5532e02cc0624a893c50be3e16182c", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "098c3992a0cc170e8041c0b0708a658f2d438da6dd829f38c8082d75a8d43154", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "e6366ba60e181360741bd85df2fa8fca85f4dad889d510a5e3365abe63f4d6a2", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "a78b216be479757c536da26edab8960226c6b1434012d51927b5ea461a952de8", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e91bc6a2639778d60a1201e93fcb488714b7d38f037be31f0a41838165019a48", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "35ff50fcb49fc802e20fd0a44a161afe0a8b2b2f2781b409a4460632e884a83a", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "106c1900eb2e896139b514d9d0d3b4434858c6752c0b8eaca38cf7aadfbe508f", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "a2c7a9f111cf2a8fd72d06c5fcc738fab679545c891db34043eeb22d1311ac62", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0a745253b75f0ededdec44be05e3940166128226e96ee49183fb6c97a3fccf70", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "2cbaa2088776f1c7c735aa1ef767d33f8ad8ebdb592b6d9814dd1bbabd6da9b5", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "58a16c31957f7d540da34a30f54631e607eca1af6efb27a0b3877e49f77a9d56", -"T2T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "7cee26436a0025a56eb1f67e432e4e707857714c1bbf5f61df60cc20f54c84ab", "T2T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b34ae9ac7b3ea7467afe774bf615ca1e1eab26c64fe5d25178071bf15e8d6518", "T2T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "648e45403ce412314e9d91625ace8ffdee52ff37ac99b13f4e86d018a024515d", @@ -13636,30 +13433,6 @@ "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "55b5dfbdc27d592fd9a7e62ec04a3a3b5fb2a42d1017d3409956c6221948333d", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", "T2T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "4beda1eaa2cf0a9a8daf90a86ae1fe16655068cb641c4080dec5e3175d24136f", -"T2T1_es_misc-test_cosi.py::test_cosi_different_key": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_cosi_nonce": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", -"T2T1_es_misc-test_cosi.py::test_cosi_pubkey": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_cosi_sign1": "a0126af18a7140ee273dfe2df3852b93e4bc70e273bba2cafcf87149361aa884", -"T2T1_es_misc-test_cosi.py::test_cosi_sign2": "9ac712c7e37de56dbb07eec92e31f2f811e030cf51e166960f24339495e2ea6d", -"T2T1_es_misc-test_cosi.py::test_cosi_sign3": "c58af1a8a5d4012d92a37cb4dc79362750a96f9af2aa2814d74d7519760255b6", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "e2323464410f4cbceb0e6cc46a609e57f33720a88f43f7d13db44a42a15cdc9e", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "81e22d1c7fb26dadcd166f53971a0b7aa88f3d51cd3a83069649163cd304fbd1", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a9cbdc03cd44eb0be944a43f4db00e3cabc975398f5575e567783ba219113572", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "0692cfbc3e0e617b6c8e2f0a3062784a5b985c4ec920d068ba5fd1cf3fe421da", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "858010ba830c766e742fe514220e95cdf5d79b69f78519b7fd8df31612b98a4c", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "3db35028673ebf7b7153e268d8ab6883657e1aafa126ec42959ca79eda8a2eab", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "c5c8924c33a7fc7a94d929e79edffe68f76ababa2949191d3536149039d8c987", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "2d23ee746632dd0e48199394c243d2e1de8a29ff079f9b03cc22457176bbb42d", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "27a49ffcc4e2cc1b7a378ef13093ddc3641da9162e5a5227c393958b8e808ae4", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "293ac03ed0c5788ece97234d07a243849f6779095fd6d6b48bfcd68e49d1c2f1", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "fd04b065eb272e74efb3015e4efaa98d707060cb596a9a7592ce2e85818d07f4", -"T2T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "67bb7bf9827a3c3e402a8d5ad9cf4408652462e294867e00b1eeacbdea8cc7c3", "T2T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "5e60bcb1d58cd1c67104cde3baa542d1ae90bd29edaf5a084ee4a79f0c64f6ed", "T2T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "093f2d9fb3497e9929debe893c3062cc518cac516306653b06978eb8c1a88768", @@ -15107,30 +14880,6 @@ "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", -"T2T1_fr_misc-test_cosi.py::test_cosi_different_key": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_cosi_nonce": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", -"T2T1_fr_misc-test_cosi.py::test_cosi_pubkey": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_cosi_sign1": "95b30472f41bb6e0de7c9623b64b552df442f44cc86882c2b685cc2b2eab2815", -"T2T1_fr_misc-test_cosi.py::test_cosi_sign2": "af2b25f8baabf60958feece7fe4b9fe9fcdae783605ed6871204a2134ef5602d", -"T2T1_fr_misc-test_cosi.py::test_cosi_sign3": "e404aa56bec9db40ae4294f2406627b1ebadab606ebd27be2aee127a966b1a5f", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "0584acca025a9ae0f32889fbbf7b4a2edb5544848e515b86b921044a5b37aa2c", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "8c70c852de2623374b4fda1e3b07d75db47fbf21c371bbdb0a3d971056b24838", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "7ce5843a41a23a1784826562eb7ab185b9ddf5bf7dbfcec518bf5136097c22b3", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "9d990d6295db1d93aaf311cb06e4954cbec0f1c42b830099513cf8926673a8d1", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "e25d319f5771103597fd73f71590303ae4e538822a970e6d649c8749f234b9a0", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "d1ea3a074576fb1b1e93f10e758859c3f91de0b830251e8e47bcfdbe35e637f6", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "cd37a982a7ba142f8380eeb8773fb6e28a22b8264c55e2bf3810e8fd8458307c", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "d3b2636d945aa6b4bf7b03a8faa0412753b244e5c8309acc24a3064222c193a7", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "052ff6f160215c66b05686e39bacc0f932d68f560e0abb8f37a49a6710a4d870", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "376e4ed50e9585dc31d297f1d7578b662682bf95e07ad2750865856137411318", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "7bf2cab0d6d11d37cb7d723530bdf1a6fdf9627c6f03ddb3372b6429d3ccc90c", -"T2T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "80ce58572ed6e634c4b46b1e335b96def1c83ba4d63d18f22b86040a4689a648", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e2fae2f630e8cc65fdd66d7edc4bb1452d1fd4ecb70c028ec9f5e6273769406e", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "62953fca62df18b03f69e3644b65ff9675169c680c83e42a0a0aa33dbd365eb2", @@ -16752,30 +16501,6 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "ded996ebdb16ac51a7d467d75ebaf88c83783148cc0e16bfa130fc11d10d6f27", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", -"T3T1_cs_misc-test_cosi.py::test_cosi_different_key": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_cosi_nonce": "ec3b7173ff6f19e7200c69a8166120edd16c0bb598b5e83275776fee3a64e9ff", -"T3T1_cs_misc-test_cosi.py::test_cosi_pubkey": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign1": "ec3b7173ff6f19e7200c69a8166120edd16c0bb598b5e83275776fee3a64e9ff", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign2": "c0d90dc4e64d8bc96716d16227eef9c943ca0a5b99abfcb9041fe04ef04383ad", -"T3T1_cs_misc-test_cosi.py::test_cosi_sign3": "1108bcdd49beb6be03ed3a59a1d0ed6cd4c5a174e4cf27c42965afd54fdc4fb1", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[42-0]": "019ba81aa54a3cba059232f19343d51c0a8b22cd78e2f17774e9a5fadec13904", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "d4954efa2dd143ed449ce985b980a3c68ef35ee999ee48ceb4560d1c9fea2880", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "a52b2a0d57d232949f624f1ab3af111fa4caa7b39213cd5903d8588eedc68437", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "7117a75677a6dbde53683703bb8f60911d610a53546035b64181fc0857fa5a23", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "7b99b70c2b02481607d5e7b7306b64d54745b490e9fedc598f2217a16c5198cf", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "5bb20bf1eea67a8b182011f0aca47108655094dc30ccce3292f92a99bac8ff43", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "61c8b685592b080877810095bddcd06d3782f6a747b27c032b770189313568ea", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "0813f1554a574bc947bae65d6c935fee9a697e091a53289784395f2f6f3c9638", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "e27f887d7f20231fc7a438e5d31e80947070f51a52819091c3de2c187a725b77", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "0d04fcdb5df2aa6b09e2ef08ea99b44e29b347ea90281be6dc4cd51460308947", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b614de056146f5162a7e3ceda5e48b39e052398fa43239c0f4a06ad0944983c6", -"T3T1_cs_misc-test_cosi.py::test_slip26_paths[dog-0]": "089c0f0c136b75bf62650a502e5317fd898c9b80b229e25cdf817139ef8221bc", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "fc42856145638724b237005cedb803a0693ce8b0f593350b97b79583d08a100b", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f714bf3001e4de3125ce491394f169edf71006a83dcf16018b0ce0dd0f055889", @@ -18120,30 +17845,6 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "11f323fdeb0b2dc3bcba00c238dc48a3f840122dca34d7ddf9b0cd1b25b36320", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", -"T3T1_de_misc-test_cosi.py::test_cosi_different_key": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_cosi_nonce": "a57d8b54bf797717866b44189f046f15e43a5f245625c64399a9811338c815bd", -"T3T1_de_misc-test_cosi.py::test_cosi_pubkey": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_cosi_sign1": "a57d8b54bf797717866b44189f046f15e43a5f245625c64399a9811338c815bd", -"T3T1_de_misc-test_cosi.py::test_cosi_sign2": "f2fa2177965b0320a3f4f39a733ebfe079b2896f691a3fe3fe437dad958e36e6", -"T3T1_de_misc-test_cosi.py::test_cosi_sign3": "7bff6f2249d2b016df0b801815fb51df1b1cc4b98752261e38440d281485b158", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-10018-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[42-0]": "3abd615eabed6032a66c9d3f9a45075c3c4a3d8026e835ce0d7aeb58f56055f6", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "5cf9a959941d64730eca3f4ae8b62c3cdda11864baeadcd9b4a3f894946c8868", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "963f824de6eff812253e8cbc5448a3b2458a2793f64c1b0611b1273f76632f4b", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "fc0ee9893a307550630ba8c0c99b1a96dc3a78523d2e918d8fc48adfe55d2c25", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "484c1a1081b63e028daf8f0d998ec04257799a7dc72f8024f82099680f51f945", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "17aa3bac3698b13446772ecc7344247e93c6f03d1906a2ee5634fb3b34ca96c6", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "98ea5a14e818f35e7959b4b8c6526fd00377c6159aaba4f18e6cb0e864872b38", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "d2a9871b8d61bfb36d8086d1c570d9f2a8a6dd1a04ad3c4e10a5cd023c128570", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0736b5c166acd867f8308d4a7429a0650aa512250d50c7021cff473b53ad8921", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "635fb46af6685f1bfafc38a067c8e2a420f1abc94fa5996d7b7c6b8e9979aa75", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "6c2aab04cccc714f40cacd5a405053ce2b05891007f7ddbce29f5beabab7b1e0", -"T3T1_de_misc-test_cosi.py::test_slip26_paths[dog-0]": "b57b18a150e85887d724e8ed9422d1433705786f77f287cfc8a9c84205de6639", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "ff7aaee28bfb9750f7e0b184353be8e27d36ab50752e53460ba40d4bf12fad4b", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "3ab2c61df687955c71dcf44a18f386c41d4a7b5f6cf27a45aac0e1b784a29a89", @@ -19488,30 +19189,6 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "68e0f086eb6f19ec9ac84c8ca58399ec58ba6a7fcceb92921807926b5c00226a", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", -"T3T1_en_misc-test_cosi.py::test_cosi_different_key": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_cosi_nonce": "a204cd8e059614961bdf311ac500f5426d5b82b94a63697760f08f7f977e4716", -"T3T1_en_misc-test_cosi.py::test_cosi_pubkey": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_cosi_sign1": "a204cd8e059614961bdf311ac500f5426d5b82b94a63697760f08f7f977e4716", -"T3T1_en_misc-test_cosi.py::test_cosi_sign2": "0d53097f581ba4f39eaf5cf1072b28e1c62a3da104bbe60a010a8d5cbfd6d10d", -"T3T1_en_misc-test_cosi.py::test_cosi_sign3": "f8d8b198efa4e4e577875bca8bef14528aa171659c7503a544cb4f638bacb20b", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-10018-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[42-0]": "0d6ed4635e3659f7137f1fb56363ab17208d6854fa4fb8342345a395ab08aec1", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "306d64b4e3e158edc05edd21df8ffa2ade1365e0fb5311dd46542348badff676", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "7defbe8b6ff9f9a9c5b1c76026611946bacdc65998bae62c1a66a593d2c80928", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "b6d68999a9415e3b18415cd9793b4792515bb09bc72369876869ff789b38f975", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "6a9a9671311c954907cd6d41ed17e79f187fbd8a7bbb67202ba48057ea214a20", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "feb4a2c1fb47cd448cb6fa75b563ca8c12ab8979b5e5396c89a066de439d62db", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "32cbac0323a81c3eecb0e3058553175b41e719671aa35fece3710c600674af4c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "1c52c3bb27453f1df1ff1e40ca9db824832fd9528a09a25390f80c0e66ff433c", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "0b8f3e50d15c522f4aec00b831610faf000c9c450e38c52659ab8d112c5809e6", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "3a12fe5138327dbc6ccdbefbc0062023a085fd6e0d7092b3265cdf7c201bd72d", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "32f50cdf7202aaa7dcac0c4e40fb87cc2c751f7d8d10f94df44492b683c455a1", -"T3T1_en_misc-test_cosi.py::test_slip26_paths[dog-0]": "2c6edb94d37fc478a831f3843b5bdc10e50100112eca73c8781435f393ab4a57", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "3f6963d82a094c2efea50fe683868b47bd9e165ff15dc520d80245ed48768874", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2e7bea46e6a2126dd9b0d3a7e0584dd3e089683fcb6987007d1642407fd841dd", @@ -20856,30 +20533,6 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "7ed435d0ea98ddd5318c024d9bbd9b19f492955dccf20009aa6e063d6f5a654f", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", -"T3T1_es_misc-test_cosi.py::test_cosi_different_key": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_cosi_nonce": "5fc740e20eb86a03ca9268ffeab74b8fbbcb4582cda1d6e7817a7b513e2a047e", -"T3T1_es_misc-test_cosi.py::test_cosi_pubkey": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_cosi_sign1": "5fc740e20eb86a03ca9268ffeab74b8fbbcb4582cda1d6e7817a7b513e2a047e", -"T3T1_es_misc-test_cosi.py::test_cosi_sign2": "bbb31d2b3478166c29a5035584d9c1d0e78586d820314e4368ffe10933570ace", -"T3T1_es_misc-test_cosi.py::test_cosi_sign3": "e350909e7434d99e24e4ab2888626da075449e0fd9fa27aac87487886dd8069a", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-10018-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[42-0]": "abc6c1471ec5f28d8991055e4215d23ef3b409e577a22ea2e7fa85fb279a4ab8", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "ccb0ae3557ea737aec2bbb118e4900a9973d01ee0bf0f5b223edcab5f5c35dd8", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "ddf528cbe46a9d05bf65cfe5e854240f56b334f4877f44091a34247289a51178", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "8cb0df27efd22a6a9632c87cfc589c6fec440cc62593fdcd30446855110b71a3", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "6110bbcb787295d23199d419c262d9f2879a9771890d169ed66c3c0be3981c22", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "4436153558f56adbd7ddb24f8154c3e1cd9cc6ee00d7691646eafb163b8b48e5", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "7fa192e91b99fb2d51f2d19d0710ff9e9a5c332a7a73e5d7058dcd3f97a62fd2", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "81eaaa5f962ed57130157aa9a54dfb188ab67f6cffa88ed5c150100e434211dd", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "d2cc9e9f3e074f18c6a07a47b1c093a4a0fb89e14a4813cda257b9ad336f1ed2", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "ffb381e0b7d631738201114fefea18fb4fce0df66da37cd91624af6309b66f55", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "1e1fffa60ff912aafd720ad67ee2cd90ade2d9e9d46e1cf0734cbb549146f7d9", -"T3T1_es_misc-test_cosi.py::test_slip26_paths[dog-0]": "0873efe54125414339f44427afdde8c7126b6f2814635899eb5fa0b1cc1bb6ae", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e08d043a6116cca9d74765dfce2ff2155767b35dbd688bd95de98ff06e589d38", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "89815a33a926b8ba6b4cc49fed381dbd22daa34e5babae43e9632e89b4fcb98b", @@ -22224,30 +21877,6 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "958b83692ce78ab79690d310cfb0e26b34de15182c82cca99a78b6d2cd879e34", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", -"T3T1_fr_misc-test_cosi.py::test_cosi_different_key": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_cosi_nonce": "1812247aae313423d16b5a1bd1f82c2b00f48fb5ef1e0973d351aa69ff9c2638", -"T3T1_fr_misc-test_cosi.py::test_cosi_pubkey": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign1": "1812247aae313423d16b5a1bd1f82c2b00f48fb5ef1e0973d351aa69ff9c2638", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign2": "9e08bd6ffc3e28f8a9177c429f7f01211533becd9b7c281ff4f94e52e64dc4fe", -"T3T1_fr_misc-test_cosi.py::test_cosi_sign3": "05a835f6ad16c0f4d321c0114a5499dddf5a5938b4e21efd6c5657651e38b6e1", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-10018-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-0h-0h-0-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-0h-0-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-44h-60h-1h]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_invalid_path[m-84h-60h-1h-0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[42-0]": "9836b0ba86b9e7d58ccb11811aba96618ab9ade63f6e4e83e801e89eff4f184f", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T1B1-0]": "b0a85c1e65d3a48dc90c21512fd0379370469238855d93af213711ae99b9549f", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-0]": "2fba7ed19bc9c5eea811a66f74d6de0c861d0ae6575e6ba9741ebd472240ecdf", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-1]": "32645528417699d966ab02e4786a8612777fbc4caa20484ca92510d290755be3", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-2]": "3fb82b2d11bdf93dae574c95b68e36d4e569b97728f242489b2c8878cd3db9f2", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2B1-3]": "10b9ab92d1e8ef2e831ab20a63e3f74d0574f8b8f144b498b6eef58a720b1b8e", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T2T1-0]": "fdc9bff64156a8aa036479fdbaa3ab23a2cd0fd71d00c92aefd9925063a0db1d", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[T3W1-0]": "9e6deba6d192f60d68504c313533847247b42d0154ad5a194151a50f0c80f82e", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-0]": "98dd05d472320da4aaf57f00c9de193668651e4b3e44728ae237f739ee98f2d1", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\x00-3]": "a31df5bdf943d0e44f9c5937e37dfb05ba24a9c46b9d18bba93e4d32512c2c8c", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[\\xfe\\xfe\\xfe\\xfe-0]": "b8d64aa72fad35082b6b2b3391ebd6470bc83af0115775e6bc660073188b534f", -"T3T1_fr_misc-test_cosi.py::test_slip26_paths[dog-0]": "2b0a2e12c23e425c0c777a188424f3011478a85010613696eb544a2e4a194f75", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "400d50061c103adc8174221b2c9a3f8d7e0f6e2db9690a3da346a8043529c63d", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "9658e2a196c78b8df9d893aeed64f96fadb259e18d080a3e5d06d1be6adc2662", From a4ff76e840fccba453374942b1708c4529a27b85 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 18 Jun 2024 12:50:01 +0200 Subject: [PATCH 359/626] fix(core/mercury): adjust swipe effect direction when animating transition through python --- core/.changelog.d/3965.fixed | 1 + core/embed/rust/librust_qstr.h | 1 + core/embed/rust/src/ui/component/base.rs | 22 +++++++ core/embed/rust/src/ui/component/swipe.rs | 2 +- core/embed/rust/src/ui/flow/swipe.rs | 6 +- core/embed/rust/src/ui/layout/obj.rs | 64 +++++++++++++++++-- .../model_mercury/component/swipe_content.rs | 22 +++---- .../component/swipe_up_screen.rs | 7 +- .../embed/rust/src/ui/model_mercury/layout.rs | 22 ++++--- core/embed/rust/src/ui/model_tt/layout.rs | 8 ++- core/mocks/generated/trezorui2.pyi | 18 +++++- core/src/trezor/ui/__init__.py | 13 +++- .../src/trezor/ui/layouts/mercury/__init__.py | 10 ++- core/src/trezor/ui/layouts/progress.py | 2 +- core/src/trezor/ui/layouts/tr/__init__.py | 4 +- core/src/trezor/ui/layouts/tt/__init__.py | 4 +- 16 files changed, 162 insertions(+), 44 deletions(-) create mode 100644 core/.changelog.d/3965.fixed diff --git a/core/.changelog.d/3965.fixed b/core/.changelog.d/3965.fixed new file mode 100644 index 0000000000..e0b567e4ee --- /dev/null +++ b/core/.changelog.d/3965.fixed @@ -0,0 +1 @@ +[T3T1] Improve swipe behavior and animations diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index f2168dc75e..a76997f576 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -242,6 +242,7 @@ static void _librust_qstrs(void) { MP_QSTR_flow_show_share_words; MP_QSTR_flow_warning_hi_prio; MP_QSTR_get_language; + MP_QSTR_get_transition_out; MP_QSTR_haptic_feedback__disable; MP_QSTR_haptic_feedback__enable; MP_QSTR_haptic_feedback__subtitle; diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index accdfa2e8f..bea23f10d9 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -212,6 +212,7 @@ where pub struct Root<T> { inner: Option<Child<T>>, marked_for_clear: bool, + transition_out: Option<AttachType>, } impl<T> Root<T> { @@ -219,6 +220,7 @@ impl<T> Root<T> { Self { inner: Some(Child::new(component)), marked_for_clear: true, + transition_out: None, } } @@ -246,6 +248,10 @@ impl<T> Root<T> { self.marked_for_clear = true; } + pub fn get_transition_out(&self) -> Option<AttachType> { + self.transition_out + } + pub fn delete(&mut self) { self.inner = None; } @@ -270,6 +276,11 @@ where assert!(paint_msg.is_none()); assert!(dummy_ctx.timers.is_empty()); } + + if let Some(t) = ctx.get_transition_out() { + self.transition_out = Some(t); + } + msg } @@ -528,6 +539,7 @@ pub struct EventCtx { root_repaint_requested: bool, swipe_disable_req: bool, swipe_enable_req: bool, + transition_out: Option<AttachType>, } impl EventCtx { @@ -557,6 +569,7 @@ impl EventCtx { root_repaint_requested: false, swipe_disable_req: false, swipe_enable_req: false, + transition_out: None, } } @@ -658,6 +671,7 @@ impl EventCtx { self.root_repaint_requested = false; self.swipe_disable_req = false; self.swipe_enable_req = false; + self.transition_out = None; } fn register_timer(&mut self, token: TimerToken, deadline: Duration) { @@ -680,4 +694,12 @@ impl EventCtx { .unwrap_or(Self::STARTING_TIMER_TOKEN); token } + + pub fn set_transition_out(&mut self, attach_type: AttachType) { + self.transition_out = Some(attach_type); + } + + pub fn get_transition_out(&self) -> Option<AttachType> { + self.transition_out + } } diff --git a/core/embed/rust/src/ui/component/swipe.rs b/core/embed/rust/src/ui/component/swipe.rs index 905c94a737..6e697eb132 100644 --- a/core/embed/rust/src/ui/component/swipe.rs +++ b/core/embed/rust/src/ui/component/swipe.rs @@ -5,7 +5,7 @@ use crate::ui::{ shape::Renderer, }; -#[derive(Copy, Clone, Eq, PartialEq)] +#[derive(Copy, Clone, Eq, PartialEq, ToPrimitive, FromPrimitive)] #[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum SwipeDirection { Up, diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index c47b8ce12f..9570ffd483 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -5,7 +5,7 @@ use crate::{ base::AttachType, swipe_detect::SwipeSettings, Component, Event, EventCtx, SwipeDetect, SwipeDetectMsg, SwipeDirection, }, - event::SwipeEvent, + event::{SwipeEvent, TouchEvent}, flow::{base::Decision, FlowMsg, FlowState, FlowStore}, geometry::Rect, shape::Renderer, @@ -107,6 +107,7 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { let mut decision: Decision<Q> = Decision::Nothing; + let mut return_transition: AttachType = AttachType::Initial; let mut attach = false; @@ -139,6 +140,8 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { decision = self.handle_swipe_child(ctx, dir); } + return_transition = AttachType::Swipe(dir); + let states_num = self.internal_pages; if states_num > 0 { if config.has_horizontal_pages() { @@ -230,6 +233,7 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { None } Decision::Return(msg) => { + ctx.set_transition_out(return_transition); self.swipe.reset(); self.allow_swipe = true; Some(msg) diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 23ade324ac..5fe7828c60 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -2,6 +2,7 @@ use core::{ cell::RefCell, convert::{TryFrom, TryInto}, }; +use num_traits::{FromPrimitive, ToPrimitive}; use crate::{ error::Error, @@ -9,7 +10,7 @@ use crate::{ micropython::{ buffer::StrBuffer, gc::Gc, - macros::{obj_dict, obj_fn_1, obj_fn_2, obj_fn_var, obj_map, obj_type}, + macros::{obj_dict, obj_fn_1, obj_fn_2, obj_fn_3, obj_fn_var, obj_map, obj_type}, map::Map, obj::{Obj, ObjBase}, qstr::Qstr, @@ -32,9 +33,33 @@ use crate::ui::{display::Color, shape::render_on_display}; #[cfg(feature = "button")] use crate::ui::event::ButtonEvent; -#[cfg(feature = "touch")] -use crate::ui::event::TouchEvent; use crate::ui::event::USBEvent; +#[cfg(feature = "touch")] +use crate::ui::{component::SwipeDirection, event::TouchEvent}; + +impl AttachType { + fn to_obj(self) -> Obj { + match self { + Self::Initial => Obj::const_none(), + #[cfg(feature = "touch")] + Self::Swipe(dir) => dir.to_u8().into(), + } + } + fn try_from_obj(obj: Obj) -> Result<Self, Error> { + if obj == Obj::const_none() { + return Ok(Self::Initial); + } + #[cfg(feature = "touch")] + { + let dir: u8 = obj.try_into()?; + return Ok(AttachType::Swipe( + SwipeDirection::from_u8(dir).ok_or(Error::TypeError)?, + )); + } + #[allow(unreachable_code)] + Err(Error::TypeError) + } +} /// Conversion trait implemented by components that know how to convert their /// message values into MicroPython `Obj`s. @@ -57,6 +82,7 @@ pub trait ObjComponent: MaybeTrace { fn obj_skip_paint(&mut self) {} fn obj_request_clear(&mut self) {} fn obj_delete(&mut self) {} + fn obj_get_transition_out(&self) -> Result<Obj, Error>; } impl<T> ObjComponent for Root<T> @@ -112,6 +138,14 @@ where fn obj_delete(&mut self) { self.delete() } + + fn obj_get_transition_out(&self) -> Result<Obj, Error> { + if let Some(msg) = self.get_transition_out() { + Ok(msg.to_obj()) + } else { + Ok(Obj::const_none()) + } + } } /// `LayoutObj` is a GC-allocated object exported to MicroPython, with type @@ -278,6 +312,14 @@ impl LayoutObj { } } + fn obj_get_transition_out(&self) -> Result<Obj, Error> { + let inner = &mut *self.inner.borrow_mut(); + + // Get transition out result + // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. + unsafe { Gc::as_mut(&mut inner.root) }.obj_get_transition_out() + } + #[cfg(feature = "ui_debug")] fn obj_bounds(&self) { use crate::ui::display; @@ -299,7 +341,7 @@ impl LayoutObj { static TYPE: Type = obj_type! { name: Qstr::MP_QSTR_LayoutObj, locals: &obj_dict!(obj_map! { - Qstr::MP_QSTR_attach_timer_fn => obj_fn_2!(ui_layout_attach_timer_fn).as_obj(), + Qstr::MP_QSTR_attach_timer_fn => obj_fn_3!(ui_layout_attach_timer_fn).as_obj(), Qstr::MP_QSTR_touch_event => obj_fn_var!(4, 4, ui_layout_touch_event).as_obj(), Qstr::MP_QSTR_button_event => obj_fn_var!(3, 3, ui_layout_button_event).as_obj(), Qstr::MP_QSTR_progress_event => obj_fn_var!(3, 3, ui_layout_progress_event).as_obj(), @@ -312,6 +354,7 @@ impl LayoutObj { Qstr::MP_QSTR___del__ => obj_fn_1!(ui_layout_delete).as_obj(), Qstr::MP_QSTR_page_count => obj_fn_1!(ui_layout_page_count).as_obj(), Qstr::MP_QSTR_button_request => obj_fn_1!(ui_layout_button_request).as_obj(), + Qstr::MP_QSTR_get_transition_out => obj_fn_1!(ui_layout_get_transition_out).as_obj(), }), }; &TYPE @@ -378,11 +421,12 @@ impl TryFrom<Never> for Obj { } } -extern "C" fn ui_layout_attach_timer_fn(this: Obj, timer_fn: Obj) -> Obj { +extern "C" fn ui_layout_attach_timer_fn(this: Obj, timer_fn: Obj, attach_type: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; this.obj_set_timer_fn(timer_fn); - let msg = this.obj_event(Event::Attach(AttachType::Initial))?; + + let msg = this.obj_event(Event::Attach(AttachType::try_from_obj(attach_type)?))?; assert!(msg == Obj::const_none()); Ok(Obj::const_none()) }; @@ -510,6 +554,14 @@ extern "C" fn ui_layout_button_request(this: Obj) -> Obj { unsafe { util::try_or_raise(block) } } +extern "C" fn ui_layout_get_transition_out(this: Obj) -> Obj { + let block = || { + let this: Gc<LayoutObj> = this.try_into()?; + this.obj_get_transition_out() + }; + unsafe { util::try_or_raise(block) } +} + #[cfg(feature = "ui_debug")] #[no_mangle] pub extern "C" fn ui_debug_layout_type() -> &'static Type { diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs index aaec68a888..db09c50750 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs @@ -45,6 +45,9 @@ impl AttachAnimation { ); match attach_type { + Some(AttachType::Initial) => { + Offset::lerp(Offset::new(0, -20), Offset::zero(), value.eval(t)) + } Some(AttachType::Swipe(dir)) => match dir { SwipeDirection::Up => { Offset::lerp(Offset::new(0, 20), Offset::zero(), value.eval(t)) @@ -66,7 +69,8 @@ impl AttachAnimation { pareen::constant(1.0), ); match attach_type { - Some(AttachType::Swipe(SwipeDirection::Up)) + Some(AttachType::Initial) + | Some(AttachType::Swipe(SwipeDirection::Up)) | Some(AttachType::Swipe(SwipeDirection::Down)) => {} _ => { return 255; @@ -89,9 +93,9 @@ pub struct SwipeContent<T> { bounds: Rect, progress: i16, dir: SwipeDirection, - normal: Option<AttachType>, attach_animation: AttachAnimation, attach_type: Option<AttachType>, + show_attach_anim: bool, } impl<T: Component> SwipeContent<T> { @@ -101,17 +105,15 @@ impl<T: Component> SwipeContent<T> { bounds: Rect::zero(), progress: 0, dir: SwipeDirection::Up, - normal: Some(AttachType::Swipe(SwipeDirection::Down)), attach_animation: AttachAnimation::default(), attach_type: None, + show_attach_anim: true, } } - pub fn with_normal_attach(self, attach_type: Option<AttachType>) -> Self { - Self { - normal: attach_type, - ..self - } + pub fn with_no_attach_anim(mut self) -> Self { + self.show_attach_anim = false; + self } pub fn inner(&self) -> &T { @@ -130,9 +132,7 @@ impl<T: Component> Component for SwipeContent<T> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { if let Event::Attach(attach_type) = event { self.progress = 0; - if let AttachType::Initial = attach_type { - self.attach_type = self.normal; - } else { + if self.show_attach_anim { self.attach_type = Some(attach_type); } self.attach_animation.reset(); diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index 8011837b56..fcbdba4ae3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -1,6 +1,6 @@ use crate::ui::{ - component::{Component, Event, EventCtx, SwipeDetect, SwipeDetectMsg}, - event::SwipeEvent, + component::{base::AttachType, Component, Event, EventCtx, SwipeDetect, SwipeDetectMsg}, + event::{SwipeEvent}, flow::Swipable, geometry::Rect, shape::Renderer, @@ -49,7 +49,8 @@ impl<T: Swipable + Component> Component for SwipeUpScreen<T> { .swipe .event(ctx, event, self.content.get_swipe_config()) { - Some(SwipeDetectMsg::Trigger(_)) => { + Some(SwipeDetectMsg::Trigger(dir)) => { + ctx.set_transition_out(AttachType::Swipe(dir)); return Some(SwipeUpScreenMsg::Swiped); } Some(SwipeDetectMsg::Move(dir, progress)) => { diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 1810aa959a..be270ed227 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -20,7 +20,7 @@ use crate::{ ui::{ backlight::BACKLIGHT_LEVELS_OBJ, component::{ - base::{AttachType, ComponentExt}, + base::ComponentExt, connect::Connect, swipe_detect::SwipeSettings, text::{ @@ -811,7 +811,7 @@ extern "C" fn new_show_success(n_args: usize, args: *const Obj, kwargs: *mut Map let content = StatusScreen::new_success(); let obj = LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned(title, SwipeContent::new(content).with_normal_attach(None)) + Frame::left_aligned(title, SwipeContent::new(content).with_no_attach_anim()) .with_footer(TR::instructions__swipe_up.into(), description) .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; @@ -1070,13 +1070,9 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M .with_done_offset(theme::CHECKLIST_DONE_OFFSET); let obj = LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned( - title, - SwipeContent::new(checklist_content) - .with_normal_attach(Some(AttachType::Swipe(SwipeDirection::Up))), - ) - .with_footer(TR::instructions__swipe_up.into(), None) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + Frame::left_aligned(title, SwipeContent::new(checklist_content)) + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; Ok(obj.into()) }; @@ -1317,12 +1313,15 @@ pub static mp_module_trezorui2: Module = obj_module! { /// /// T = TypeVar("T") /// + /// class AttachType: + /// ... + /// /// class LayoutObj(Generic[T]): /// """Representation of a Rust-based layout object. /// see `trezor::ui::layout::obj::LayoutObj`. /// """ /// - /// def attach_timer_fn(self, fn: Callable[[int, int], None]) -> None: + /// def attach_timer_fn(self, fn: Callable[[int, int], None], attach_type: AttachType | None) -> None: /// """Attach a timer setter function. /// /// The layout object can call the timer setter with two arguments, @@ -1379,6 +1378,9 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def page_count(self) -> int: /// """Return the number of pages in the layout object.""" /// + /// def get_transition_out(self) -> AttachType: + /// """Return the transition type.""" + /// /// def __del__(self) -> None: /// """Calls drop on contents of the root component.""" /// diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 525600e64f..31e223f78e 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1625,12 +1625,15 @@ pub static mp_module_trezorui2: Module = obj_module! { /// /// T = TypeVar("T") /// + /// class AttachType: + /// ... + /// /// class LayoutObj(Generic[T]): /// """Representation of a Rust-based layout object. /// see `trezor::ui::layout::obj::LayoutObj`. /// """ /// - /// def attach_timer_fn(self, fn: Callable[[int, int], None]) -> None: + /// def attach_timer_fn(self, fn: Callable[[int, int], None], attach_type: AttachType | None) -> None: /// """Attach a timer setter function. /// /// The layout object can call the timer setter with two arguments, @@ -1690,6 +1693,9 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def button_request(self) -> tuple[int, str] | None: /// """Return (code, type) of button request made during the last event or timer pass.""" /// + /// def get_transition_out(self) -> AttachType: + /// """Return the transition type.""" + /// /// def __del__(self) -> None: /// """Calls drop on contents of the root component.""" /// diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index b5d3856fc7..6cb0911cdf 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -3,12 +3,17 @@ from trezor import utils T = TypeVar("T") +# rust/src/ui/model_mercury/layout.rs +class AttachType: + ... + + # rust/src/ui/model_mercury/layout.rs class LayoutObj(Generic[T]): """Representation of a Rust-based layout object. see `trezor::ui::layout::obj::LayoutObj`. """ - def attach_timer_fn(self, fn: Callable[[int, int], None]) -> None: + def attach_timer_fn(self, fn: Callable[[int, int], None], attach_type: AttachType | None) -> None: """Attach a timer setter function. The layout object can call the timer setter with two arguments, `token` and `deadline`. When `deadline` is reached, the layout object @@ -49,6 +54,8 @@ class LayoutObj(Generic[T]): """Paint bounds of individual components on screen.""" def page_count(self) -> int: """Return the number of pages in the layout object.""" + def get_transition_out(self) -> AttachType: + """Return the transition type.""" def __del__(self) -> None: """Calls drop on contents of the root component.""" @@ -1083,12 +1090,17 @@ from trezor import utils T = TypeVar("T") +# rust/src/ui/model_tt/layout.rs +class AttachType: + ... + + # rust/src/ui/model_tt/layout.rs class LayoutObj(Generic[T]): """Representation of a Rust-based layout object. see `trezor::ui::layout::obj::LayoutObj`. """ - def attach_timer_fn(self, fn: Callable[[int, int], None]) -> None: + def attach_timer_fn(self, fn: Callable[[int, int], None], attach_type: AttachType | None) -> None: """Attach a timer setter function. The layout object can call the timer setter with two arguments, `token` and `deadline`. When `deadline` is reached, the layout object @@ -1131,6 +1143,8 @@ class LayoutObj(Generic[T]): """Return the number of pages in the layout object.""" def button_request(self) -> tuple[int, str] | None: """Return (code, type) of button request made during the last event or timer pass.""" + def get_transition_out(self) -> AttachType: + """Return the transition type.""" def __del__(self) -> None: """Calls drop on contents of the root component.""" diff --git a/core/src/trezor/ui/__init__.py b/core/src/trezor/ui/__init__.py index eaf19edf3d..2b2daeaa1b 100644 --- a/core/src/trezor/ui/__init__.py +++ b/core/src/trezor/ui/__init__.py @@ -9,7 +9,7 @@ if TYPE_CHECKING: from typing import Generic, TypeVar - from trezorui2 import UiResult # noqa: F401 + from trezorui2 import AttachType, UiResult # noqa: F401 T = TypeVar("T") @@ -34,6 +34,9 @@ # allow only one alert at a time to avoid alerts overlapping _alert_in_progress = False +# storing last transition type, so that next layout can continue nicely +LAST_TRANSITION_OUT: AttachType | None = None + # in debug mode, display an indicator in top right corner if __debug__: @@ -131,6 +134,12 @@ class Layout(Generic[T]): raised, usually from some of the child components. """ + def finalize(self) -> None: + """ + Called when the layout is done. Usually overridden to allow cleanup or storing context. + """ + pass + async def __iter__(self) -> T: """ Run the layout and wait until it completes. Returns the result value. @@ -159,6 +168,8 @@ async def __iter__(self) -> T: except Result as result: # Result exception was raised, this means this layout is complete. value = result.value + finally: + self.finalize() return value if TYPE_CHECKING: diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 2c8d9f168a..e12a840dc7 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -36,7 +36,7 @@ def __init__(self, layout: Any): self.br_chan = loop.chan() self.layout = layout self.timer = loop.Timer() - self.layout.attach_timer_fn(self.set_timer) + self.layout.attach_timer_fn(self.set_timer, ui.LAST_TRANSITION_OUT) self._send_button_request() self.backlight_level = ui.BacklightLevels.NORMAL @@ -191,6 +191,7 @@ def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: ) def _first_paint(self) -> None: + ui.backlight_fade(ui.BacklightLevels.NONE) self._paint() @@ -213,7 +214,7 @@ def _first_paint(self) -> None: notify_layout_change(self, event_id) - # Turn the brightness on again. + # Fade brightness to desired level ui.backlight_fade(self.backlight_level) def handle_input_and_rendering(self) -> loop.Task: @@ -260,13 +261,16 @@ def _send_button_request(self): br_code, br_type = res self.br_chan.publish((br_code, br_type, self.layout.page_count())) + def finalize(self): + ui.LAST_TRANSITION_OUT = self.layout.get_transition_out() + def draw_simple(layout: Any) -> None: # Simple drawing not supported for layouts that set timers. def dummy_set_timer(token: int, deadline: int) -> None: raise RuntimeError - layout.attach_timer_fn(dummy_set_timer) + layout.attach_timer_fn(dummy_set_timer, None) ui.backlight_fade(ui.BacklightLevels.DIM) layout.paint() ui.refresh() diff --git a/core/src/trezor/ui/layouts/progress.py b/core/src/trezor/ui/layouts/progress.py index 8fe3f6a108..497da3d28e 100644 --- a/core/src/trezor/ui/layouts/progress.py +++ b/core/src/trezor/ui/layouts/progress.py @@ -35,7 +35,7 @@ def __init__( ): self.layout = layout ui.backlight_fade(ui.BacklightLevels.DIM) - self.layout.attach_timer_fn(self.set_timer) + self.layout.attach_timer_fn(self.set_timer, None) if self.layout.paint(): ui.refresh() ui.backlight_fade(ui.BacklightLevels.NORMAL) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 5074c9cea2..8b0d98e4e5 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -41,7 +41,7 @@ def __init__(self, layout: trezorui2.LayoutObj[T]): self.br_chan = loop.chan() self.layout = layout self.timer = loop.Timer() - self.layout.attach_timer_fn(self.set_timer) + self.layout.attach_timer_fn(self.set_timer, None) self._send_button_request() def __del__(self): @@ -309,7 +309,7 @@ def draw_simple(layout: trezorui2.LayoutObj[Any]) -> None: def dummy_set_timer(token: int, deadline: int) -> None: raise RuntimeError - layout.attach_timer_fn(dummy_set_timer) + layout.attach_timer_fn(dummy_set_timer, None) layout.paint() ui.refresh() diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 0a010c59d3..4d7aa9d055 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -42,7 +42,7 @@ def __init__(self, layout: trezorui2.LayoutObj[T]): self.br_chan = loop.chan() self.layout = layout self.timer = loop.Timer() - self.layout.attach_timer_fn(self.set_timer) + self.layout.attach_timer_fn(self.set_timer, None) self._send_button_request() self.backlight_level = ui.BacklightLevels.NORMAL @@ -272,7 +272,7 @@ def draw_simple(layout: trezorui2.LayoutObj[Any]) -> None: def dummy_set_timer(token: int, deadline: int) -> None: raise RuntimeError - layout.attach_timer_fn(dummy_set_timer) + layout.attach_timer_fn(dummy_set_timer, None) ui.backlight_fade(ui.BacklightLevels.DIM) layout.paint() ui.refresh() From e89ae8246dbc1bcc730a416306aff098dae1f955 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 18 Jun 2024 12:50:29 +0200 Subject: [PATCH 360/626] fix(core/mercury): do not block swipe on button press, abort press on swipe lock instead --- .../rust/src/ui/component/swipe_detect.rs | 3 +- core/embed/rust/src/ui/event.rs | 2 ++ core/embed/rust/src/ui/flow/swipe.rs | 1 + .../src/ui/model_mercury/component/button.rs | 29 ++++++++++++++++--- .../component/hold_to_confirm.rs | 3 ++ .../component/number_input_slider.rs | 1 + .../component/swipe_up_screen.rs | 3 +- .../model_tt/component/number_input_slider.rs | 1 + 8 files changed, 37 insertions(+), 6 deletions(-) diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs index 435f1f7d1e..1d09ec1ca7 100644 --- a/core/embed/rust/src/ui/component/swipe_detect.rs +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -141,6 +141,7 @@ impl core::ops::IndexMut<SwipeDirection> for SwipeConfig { #[derive(Copy, Clone, Eq, PartialEq)] pub enum SwipeDetectMsg { + Start(SwipeDirection), Move(SwipeDirection, u16), Trigger(SwipeDirection), } @@ -237,7 +238,7 @@ impl SwipeDetect { let progress = config.progress(dir, ofs, self.min_lock()); if progress > 0 { self.locked = Some(dir); - res = Some(SwipeDetectMsg::Move(dir, self.progress(progress))); + res = Some(SwipeDetectMsg::Start(dir)); break; } } diff --git a/core/embed/rust/src/ui/event.rs b/core/embed/rust/src/ui/event.rs index 1b60d4a52f..a0b7587ef9 100644 --- a/core/embed/rust/src/ui/event.rs +++ b/core/embed/rust/src/ui/event.rs @@ -51,6 +51,8 @@ pub enum TouchEvent { TouchMove(Point), /// Touch has ended at a point on the screen. TouchEnd(Point), + /// Touch event has been suppressed by more important event - i.e. Swipe. + TouchAbort, } impl TouchEvent { diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 9570ffd483..1ec8a80105 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -175,6 +175,7 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { Some(SwipeDetectMsg::Move(dir, progress)) => { Some(Event::Swipe(SwipeEvent::Move(dir, progress as i16))) } + Some(SwipeDetectMsg::Start(_)) => Some(Event::Touch(TouchEvent::TouchAbort)), _ => Some(event), } } else { diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 89a6acafa1..3484aa2291 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -350,7 +350,6 @@ impl Component for Button { if let Some(duration) = self.long_press { self.long_timer = Some(ctx.request_timer(duration)); } - ctx.disable_swipe(); return Some(ButtonMsg::Pressed); } } @@ -361,7 +360,6 @@ impl Component for Button { State::Pressed if !touch_area.contains(pos) => { // Touch is leaving our area, transform to `Released` state. self.set(ctx, State::Released); - ctx.enable_swipe(); return Some(ButtonMsg::Released); } _ => { @@ -377,17 +375,40 @@ impl Component for Button { State::Pressed if touch_area.contains(pos) => { // Touch finished in our area, we got clicked. self.set(ctx, State::Initial); - ctx.enable_swipe(); return Some(ButtonMsg::Clicked); } + State::Pressed => { + // Touch finished outside our area. + self.set(ctx, State::Initial); + self.long_timer = None; + return Some(ButtonMsg::Released); + } _ => { // Touch finished outside our area. self.set(ctx, State::Initial); - ctx.enable_swipe(); self.long_timer = None; } } } + Event::Touch(TouchEvent::TouchAbort) => { + match self.state { + State::Initial | State::Disabled => { + // Do nothing. + } + State::Pressed => { + // Touch aborted + self.set(ctx, State::Initial); + self.long_timer = None; + return Some(ButtonMsg::Released); + } + _ => { + // Irrelevant touch abort + self.set(ctx, State::Initial); + self.long_timer = None; + } + } + } + Event::Timer(token) => { if self.long_timer == Some(token) { self.long_timer = None; diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs index 18ef711a46..b91590bdf3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -227,6 +227,7 @@ impl Component for HoldToConfirm { self.anim.start(); ctx.request_anim_frame(); ctx.request_paint(); + ctx.disable_swipe(); self.finalizing = false; } } @@ -235,6 +236,7 @@ impl Component for HoldToConfirm { self.anim.reset(); ctx.request_anim_frame(); ctx.request_paint(); + ctx.enable_swipe(); self.finalizing = false; } } @@ -249,6 +251,7 @@ impl Component for HoldToConfirm { self.anim.reset(); ctx.request_anim_frame(); ctx.request_paint(); + ctx.enable_swipe(); } } Some(ButtonMsg::LongPressed) => { diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs index babc01014a..9e2cdde32e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -181,6 +181,7 @@ impl Component for NumberInputSlider { TouchEvent::TouchStart(pos) => self.slider_eval(pos, ctx), TouchEvent::TouchMove(pos) => self.slider_eval(pos, ctx), TouchEvent::TouchEnd(pos) => self.slider_eval(pos, ctx), + TouchEvent::TouchAbort => None, }; } None diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index fcbdba4ae3..9d81ae32f5 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -1,6 +1,6 @@ use crate::ui::{ component::{base::AttachType, Component, Event, EventCtx, SwipeDetect, SwipeDetectMsg}, - event::{SwipeEvent}, + event::{SwipeEvent, TouchEvent}, flow::Swipable, geometry::Rect, shape::Renderer, @@ -56,6 +56,7 @@ impl<T: Swipable + Component> Component for SwipeUpScreen<T> { Some(SwipeDetectMsg::Move(dir, progress)) => { Event::Swipe(SwipeEvent::Move(dir, progress as i16)) } + Some(SwipeDetectMsg::Start(_)) => Event::Touch(TouchEvent::TouchAbort), _ => event, }; diff --git a/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs b/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs index c0a650f72a..ec6f8e5b66 100644 --- a/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs @@ -155,6 +155,7 @@ impl Component for NumberInputSlider { TouchEvent::TouchStart(pos) => self.slider_eval(pos, ctx), TouchEvent::TouchMove(pos) => self.slider_eval(pos, ctx), TouchEvent::TouchEnd(pos) => self.slider_eval(pos, ctx), + TouchEvent::TouchAbort => None, }; } None From a0e33d61bd025d4b9e2109e3fc3b99c28deee3e1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 18 Jun 2024 12:56:47 +0200 Subject: [PATCH 361/626] fix(core/mercury): fix share words hold to confirm swipe effect --- .../src/ui/model_mercury/flow/show_share_words.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index a044be6b79..9209450083 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -112,11 +112,13 @@ impl ShowShareWords { let content_words = ShareWords::new(title, subtitle, share_words_vec, highlight_repeated).map(|_| None); - let content_confirm = - Frame::left_aligned(text_confirm, PromptScreen::new_hold_to_confirm()) - .with_footer(TR::instructions__hold_to_confirm.into(), None) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) - .map(|_| Some(FlowMsg::Confirmed)); + let content_confirm = Frame::left_aligned( + text_confirm, + SwipeContent::new(PromptScreen::new_hold_to_confirm()), + ) + .with_footer(TR::instructions__hold_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .map(|_| Some(FlowMsg::Confirmed)); let content_check_backup_intro = Frame::left_aligned( TR::reset__check_wallet_backup_title.into(), From 272b668febe21dd28c9def3247ab8c31c116915e Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 18 Jun 2024 13:10:43 +0200 Subject: [PATCH 362/626] fix(core/mercury): remove instant lock-trigger swipe behavior [no changelog] --- core/embed/rust/src/ui/component/swipe_detect.rs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs index 1d09ec1ca7..96307c0d28 100644 --- a/core/embed/rust/src/ui/component/swipe_detect.rs +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -277,18 +277,7 @@ impl SwipeDetect { // advance in direction other than locked trigger animation towards starting // position Some(_) => 0, - None => { - let mut res = 0; - for dir in SwipeDirection::iter() { - // insta-lock if the movement went at least the trigger distance - if config.progress(dir, ofs, self.min_trigger()) > 0 { - self.locked = Some(dir); - res = Self::PROGRESS_MAX; - } - } - - res - } + None => return None, }; let Some(locked) = self.locked else { From bfbcecc085882b5b71aafbc8c842ff3ca305a494 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 18 Jun 2024 13:11:08 +0200 Subject: [PATCH 363/626] fix(core/mercury): fix swipe effect duration when swipe is cancelled --- core/embed/rust/src/ui/component/swipe_detect.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs index 96307c0d28..88c6d69241 100644 --- a/core/embed/rust/src/ui/component/swipe_detect.rs +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -290,7 +290,7 @@ impl SwipeDetect { if !animation_disabled() { let done = self.moved as f32 / Self::PROGRESS_MAX as f32; - let ratio = 1.0 - done; + let ratio = if final_value == 0 { done } else { 1.0 - done }; let duration = config .duration(locked) From 56385f79c79325b63eaff8870d3b3457f19a8d8e Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 18 Jun 2024 13:11:36 +0200 Subject: [PATCH 364/626] fix(core/mercury): disallow swipes when touch starts too close to an edge of the display --- .../embed/rust/src/ui/component/swipe_detect.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs index 88c6d69241..f827c55d67 100644 --- a/core/embed/rust/src/ui/component/swipe_detect.rs +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -181,6 +181,21 @@ impl SwipeDetect { Self::MIN_TRIGGER } + fn is_lockable(&self, dir: SwipeDirection) -> bool { + let Some(origin) = self.origin else { + return false; + }; + + let min_distance = self.min_trigger() as i16; + + match dir { + SwipeDirection::Up => origin.y > min_distance, + SwipeDirection::Down => origin.y < (screen().height() - min_distance), + SwipeDirection::Left => origin.x > min_distance, + SwipeDirection::Right => origin.x < (screen().width() - min_distance), + } + } + fn progress(&self, val: u16) -> u16 { ((val as f32 / Self::DISTANCE as f32) * Self::PROGRESS_MAX as f32) as u16 } @@ -236,7 +251,7 @@ impl SwipeDetect { let mut res = None; for dir in SwipeDirection::iter() { let progress = config.progress(dir, ofs, self.min_lock()); - if progress > 0 { + if progress > 0 && self.is_lockable(dir) { self.locked = Some(dir); res = Some(SwipeDetectMsg::Start(dir)); break; From e5fc1e1d42875e48fd8c460f1347e27fd974af90 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 18 Jun 2024 13:15:24 +0200 Subject: [PATCH 365/626] fix(core/mercury): fix swipe animation when repeatedly touching display while the transition is already in effect --- .../rust/src/ui/component/swipe_detect.rs | 92 +++++++++++-------- 1 file changed, 52 insertions(+), 40 deletions(-) diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs index f827c55d67..c266665f12 100644 --- a/core/embed/rust/src/ui/component/swipe_detect.rs +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -3,6 +3,7 @@ use crate::{ ui::{ animation::Animation, component::{Event, EventCtx, SwipeDirection}, + constant::screen, event::TouchEvent, geometry::{Offset, Point}, util::animation_disabled, @@ -200,6 +201,46 @@ impl SwipeDetect { ((val as f32 / Self::DISTANCE as f32) * Self::PROGRESS_MAX as f32) as u16 } + fn eval_anim_frame(&mut self, ctx: &mut EventCtx) -> Option<SwipeDetectMsg> { + if let Some(locked) = self.locked { + let mut finish = false; + let res = if let Some(animation) = &self.final_animation { + if animation.finished(Instant::now()) { + finish = true; + if animation.to != 0 { + Some(SwipeDetectMsg::Trigger(locked)) + } else { + Some(SwipeDetectMsg::Move(locked, 0)) + } + } else { + ctx.request_anim_frame(); + ctx.request_paint(); + if animation_disabled() { + None + } else { + Some(SwipeDetectMsg::Move( + locked, + animation.value(Instant::now()).max(0) as u16, + )) + } + } + } else { + None + }; + + if finish { + self.locked = None; + ctx.request_anim_frame(); + ctx.request_paint(); + self.final_animation = None; + self.moved = 0; + } + + return res; + } + None + } + pub fn trigger(&mut self, ctx: &mut EventCtx, dir: SwipeDirection, config: SwipeConfig) { ctx.request_anim_frame(); ctx.request_paint(); @@ -232,8 +273,12 @@ impl SwipeDetect { ) -> Option<SwipeDetectMsg> { match (event, self.origin) { (Event::Touch(TouchEvent::TouchStart(pos)), _) => { - // Mark the starting position of this touch. - self.origin.replace(pos); + if self.final_animation.is_none() { + // Mark the starting position of this touch. + self.origin.replace(pos); + } else { + return self.eval_anim_frame(ctx); + } } (Event::Touch(TouchEvent::TouchMove(pos)), Some(origin)) => { if self.final_animation.is_none() { @@ -261,8 +306,6 @@ impl SwipeDetect { } }; - // Todo trigger an action if distance is met - if let Some(SwipeDetectMsg::Move(_, progress)) = res { self.moved = progress; } @@ -272,6 +315,8 @@ impl SwipeDetect { } return res; + } else { + return self.eval_anim_frame(ctx); } } (Event::Touch(TouchEvent::TouchEnd(pos)), Some(origin)) => { @@ -326,45 +371,12 @@ impl SwipeDetect { return Some(SwipeDetectMsg::Trigger(locked)); } return None; + } else { + return self.eval_anim_frame(ctx); } } (Event::Timer(EventCtx::ANIM_FRAME_TIMER), _) => { - if let Some(locked) = self.locked { - let mut finish = false; - let res = if let Some(animation) = &self.final_animation { - if animation.finished(Instant::now()) { - finish = true; - if animation.to != 0 { - Some(SwipeDetectMsg::Trigger(locked)) - } else { - Some(SwipeDetectMsg::Move(locked, 0)) - } - } else { - ctx.request_anim_frame(); - ctx.request_paint(); - if animation_disabled() { - None - } else { - Some(SwipeDetectMsg::Move( - locked, - animation.value(Instant::now()).max(0) as u16, - )) - } - } - } else { - None - }; - - if finish { - self.locked = None; - ctx.request_anim_frame(); - ctx.request_paint(); - self.final_animation = None; - self.moved = 0; - } - - return res; - } + return self.eval_anim_frame(ctx); } _ => { // Do nothing. From d08f5d05aaf98e3f427c121a1e786a3e20bba9a8 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 19 Jun 2024 16:34:12 +0200 Subject: [PATCH 366/626] fix(core/mercury): improve handling and visual of swipes when displaying words --- .../src/ui/model_mercury/component/footer.rs | 16 +- .../src/ui/model_mercury/component/mod.rs | 2 +- .../ui/model_mercury/component/share_words.rs | 64 +++++--- .../model_mercury/component/swipe_content.rs | 149 ++++++++++++++++-- 4 files changed, 189 insertions(+), 42 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index cd2f069345..1235763740 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -12,8 +12,6 @@ use crate::{ }, }; -use heapless::String; - /// Component showing a task instruction, e.g. "Swipe up", and an optional /// content consisting of one of these: /// - a task description e.g. "Confirm transaction", or @@ -94,6 +92,8 @@ impl<'a> Footer<'a> { if let Some(ref mut content) = self.content { if let Some(counter) = content.as_page_counter_mut() { counter.update_current_page(n); + self.swipe_allow_down = counter.is_first_page(); + self.swipe_allow_up = counter.is_last_page(); ctx.request_paint(); } else { #[cfg(feature = "ui_debug")] @@ -284,9 +284,9 @@ impl<'a> FooterContent<'a> { #[derive(Clone)] struct PageCounter { area: Rect, + font: Font, page_curr: u8, page_max: u8, - font: Font, } impl PageCounter { @@ -300,7 +300,15 @@ impl PageCounter { } fn update_current_page(&mut self, new_value: u8) { - self.page_curr = new_value; + self.page_curr = new_value.clamp(1, self.page_max); + } + + fn is_first_page(&self) -> bool { + self.page_curr == 1 + } + + fn is_last_page(&self) -> bool { + self.page_curr == self.page_max } } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 760367fa02..c20c79b654 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -78,7 +78,7 @@ pub use set_brightness::SetBrightnessDialog; #[cfg(feature = "translations")] pub use share_words::ShareWords; pub use status_screen::StatusScreen; -pub use swipe_content::SwipeContent; +pub use swipe_content::{InternallySwipable, InternallySwipableContent, SwipeContent}; #[cfg(feature = "translations")] pub use swipe_up_screen::{SwipeUpScreen, SwipeUpScreenMsg}; #[cfg(feature = "translations")] diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index eb959847b1..7054104d02 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -1,4 +1,4 @@ -use super::theme; +use super::{theme, InternallySwipableContent}; use crate::{ strutil::TString, time::Duration, @@ -11,7 +11,7 @@ use crate::{ }, event::SwipeEvent, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, - model_mercury::component::{Frame, FrameMsg}, + model_mercury::component::{Frame, FrameMsg, InternallySwipable}, shape::{self, Renderer}, util, }, @@ -30,7 +30,7 @@ type IndexVec = Vec<u8, MAX_WORDS>; /// words are rendered within `ShareWordsInner` component, pub struct ShareWords<'a> { subtitle: TString<'static>, - frame: Frame<ShareWordsInner<'a>>, + frame: Frame<InternallySwipableContent<ShareWordsInner<'a>>>, repeated_indices: Option<IndexVec>, } @@ -49,12 +49,15 @@ impl<'a> ShareWords<'a> { let n_words = share_words.len(); Self { subtitle, - frame: Frame::left_aligned(title, ShareWordsInner::new(share_words)) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) - .with_vertical_pages() - .with_subtitle(subtitle) - .with_footer_counter(TR::instructions__swipe_up.into(), n_words as u8), + frame: Frame::left_aligned( + title, + InternallySwipableContent::new(ShareWordsInner::new(share_words)), + ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_vertical_pages() + .with_subtitle(subtitle) + .with_footer_counter(TR::instructions__swipe_up.into(), n_words as u8), repeated_indices, } } @@ -81,7 +84,7 @@ impl<'a> Component for ShareWords<'a> { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - let page_index = self.frame.inner().page_index as u8; + let page_index = self.frame.inner().inner().page_index as u8; if let Some(repeated_indices) = &self.repeated_indices { if repeated_indices.contains(&page_index) { let updated_subtitle = TString::from_translation(TR::reset__the_word_is_repeated); @@ -160,14 +163,14 @@ impl<'a> ShareWordsInner<'a> { self.page_index == self.share_words.len() as i16 - 1 } - fn render_word<'s>(&self, word_index: i16, target: &mut impl Renderer<'s>) { + fn render_word<'s>(&self, word_index: i16, target: &mut impl Renderer<'s>, area: Rect) { // the share word if word_index >= self.share_words.len() as _ || word_index < 0 { return; } let word = self.share_words[word_index as usize]; - let word_baseline = target.viewport().clip.center() - + Offset::y(theme::TEXT_SUPER.text_font.visible_text_height("A") / 2); + let word_baseline = + area.center() + Offset::y(theme::TEXT_SUPER.text_font.visible_text_height("A") / 2); word.map(|w| { shape::Text::new(word_baseline, w) .with_font(theme::TEXT_SUPER.text_font) @@ -260,7 +263,16 @@ impl<'a> Component for ShareWordsInner<'a> { .with_fg(theme::GREY) .render(target); - if self.progress > 0 { + let (dir, should_animate) = if self.page_index < self.next_index { + ( + SwipeDirection::Up, + self.page_index < self.share_words.len() as i16 - 1, + ) + } else { + (SwipeDirection::Down, self.page_index > 0) + }; + + if self.progress > 0 && should_animate { target.in_clip(self.area_word, &|target| { let progress = pareen::constant(0.0).seq_ease_out( 0.0, @@ -270,21 +282,15 @@ impl<'a> Component for ShareWordsInner<'a> { ); util::render_slide( - |target| self.render_word(self.page_index, target), - |target| self.render_word(self.next_index, target), + |target| self.render_word(self.page_index, target, target.viewport().clip), + |target| self.render_word(self.next_index, target, target.viewport().clip), progress.eval(self.progress as f32 / 1000.0), - if self.page_index < self.next_index { - SwipeDirection::Up - } else { - SwipeDirection::Down - }, + dir, target, ) }); } else { - target.in_clip(self.area_word, &|target| { - self.render_word(self.page_index, target); - }) + self.render_word(self.page_index, target, self.area_word); }; } @@ -292,6 +298,16 @@ impl<'a> Component for ShareWordsInner<'a> { fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} } +impl InternallySwipable for ShareWordsInner<'_> { + fn current_page(&self) -> usize { + self.page_index as usize + } + + fn num_pages(&self) -> usize { + self.share_words.len() + } +} + #[cfg(feature = "ui_debug")] impl<'a> crate::trace::Trace for ShareWordsInner<'a> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs index db09c50750..d1bc9ac466 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs @@ -119,21 +119,14 @@ impl<T: Component> SwipeContent<T> { pub fn inner(&self) -> &T { &self.inner } -} - -impl<T: Component> Component for SwipeContent<T> { - type Msg = T::Msg; - fn place(&mut self, bounds: Rect) -> Rect { - self.bounds = self.inner.place(bounds); - self.bounds - } - - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + fn process_event(&mut self, ctx: &mut EventCtx, event: Event, animate: bool) -> Option<T::Msg> { if let Event::Attach(attach_type) = event { self.progress = 0; - if self.show_attach_anim { + if self.show_attach_anim && animate { self.attach_type = Some(attach_type); + } else { + self.attach_type = None; } self.attach_animation.reset(); ctx.request_anim_frame(); @@ -153,8 +146,10 @@ impl<T: Component> Component for SwipeContent<T> { if let Event::Swipe(SwipeEvent::Move(dir, progress)) = event { match dir { SwipeDirection::Up | SwipeDirection::Down => { - self.dir = dir; - self.progress = progress; + if animate { + self.dir = dir; + self.progress = progress; + } } _ => {} } @@ -172,6 +167,19 @@ impl<T: Component> Component for SwipeContent<T> { _ => self.inner.event(ctx, event), } } +} + +impl<T: Component> Component for SwipeContent<T> { + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.bounds = self.inner.place(bounds); + self.bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.process_event(ctx, event, true) + } fn paint(&mut self) { self.inner.paint() @@ -259,3 +267,118 @@ where t.child("content", &self.inner); } } + +pub trait InternallySwipable { + fn current_page(&self) -> usize; + + fn num_pages(&self) -> usize; +} + +pub struct InternallySwipableContent<T> +where + T: Component + InternallySwipable, +{ + content: SwipeContent<T>, + animate: bool, +} + +impl<T> InternallySwipableContent<T> +where + T: Component + InternallySwipable, +{ + pub fn new(content: T) -> Self { + Self { + content: SwipeContent::new(content), + animate: true, + } + } + + pub fn inner(&self) -> &T { + self.content.inner() + } + + fn should_animate_attach(&self, attach_type: AttachType) -> bool { + let is_first_page = self.content.inner.current_page() == 0; + let is_last_page = + self.content.inner.current_page() == (self.content.inner.num_pages() - 1); + + let is_swipe_up = matches!(attach_type, AttachType::Swipe(SwipeDirection::Up)); + let is_swipe_down = matches!(attach_type, AttachType::Swipe(SwipeDirection::Down)); + + if !self.content.show_attach_anim { + return false; + } + + if is_first_page && is_swipe_up { + return true; + } + + if is_last_page && is_swipe_down { + return true; + } + + false + } + + fn should_animate_swipe(&self, swipe_direction: SwipeDirection) -> bool { + let is_first_page = self.content.inner.current_page() == 0; + let is_last_page = + self.content.inner.current_page() == (self.content.inner.num_pages() - 1); + + let is_swipe_up = matches!(swipe_direction, SwipeDirection::Up); + let is_swipe_down = matches!(swipe_direction, SwipeDirection::Down); + + if is_last_page && is_swipe_up { + return true; + } + + if is_first_page && is_swipe_down { + return true; + } + + false + } +} + +impl<T> Component for InternallySwipableContent<T> +where + T: Component + InternallySwipable, +{ + type Msg = T::Msg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.content.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let animate = match event { + Event::Attach(attach_type) => self.should_animate_attach(attach_type), + Event::Swipe(SwipeEvent::Move(dir, _)) => self.should_animate_swipe(dir), + Event::Swipe(SwipeEvent::End(dir)) => self.should_animate_swipe(dir), + _ => self.animate, + }; + + self.animate = animate; + + self.content.process_event(ctx, event, animate) + } + + fn paint(&mut self) { + self.content.paint() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.content.render(target) + } +} + +#[cfg(feature = "ui_debug")] +impl<T> crate::trace::Trace for InternallySwipableContent<T> +where + T: crate::trace::Trace + Component + InternallySwipable, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("InternallySwipableContent"); + t.child("content", &self.content); + } +} From 283baa412aaacfa019e512844cebcc5328939a4a Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 19 Jun 2024 21:24:42 +0200 Subject: [PATCH 367/626] fix(core): fix backlight fading when first painting a layout [no changelog] --- core/src/trezor/ui/layouts/mercury/__init__.py | 8 ++++---- core/src/trezor/ui/layouts/mercury/fido.py | 2 +- core/src/trezor/ui/layouts/mercury/homescreen.py | 2 +- core/src/trezor/ui/layouts/tr/__init__.py | 4 ++-- core/src/trezor/ui/layouts/tt/__init__.py | 8 ++++---- core/src/trezor/ui/layouts/tt/fido.py | 2 +- core/src/trezor/ui/layouts/tt/homescreen.py | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index e12a840dc7..c955c293a3 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -65,8 +65,8 @@ def _paint(self) -> None: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: if context.CURRENT_CONTEXT: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_swipe(), self.handle_click_signal(), self.handle_result_signal(), @@ -74,8 +74,8 @@ def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: ) else: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_swipe(), self.handle_click_signal(), self.handle_result_signal(), @@ -180,14 +180,14 @@ async def handle_click_signal(self) -> None: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: if context.CURRENT_CONTEXT: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_usb(context.get_context()), ) else: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), ) def _first_paint(self) -> None: diff --git a/core/src/trezor/ui/layouts/mercury/fido.py b/core/src/trezor/ui/layouts/mercury/fido.py index b7bcacbd54..677232519e 100644 --- a/core/src/trezor/ui/layouts/mercury/fido.py +++ b/core/src/trezor/ui/layouts/mercury/fido.py @@ -18,8 +18,8 @@ class _RustFidoLayoutImpl(RustLayout): def create_tasks(self) -> tuple[AwaitableTask, ...]: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_swipe(), self.handle_debug_confirm(), ) diff --git a/core/src/trezor/ui/layouts/mercury/homescreen.py b/core/src/trezor/ui/layouts/mercury/homescreen.py index da8021b2d8..7089e8e5fb 100644 --- a/core/src/trezor/ui/layouts/mercury/homescreen.py +++ b/core/src/trezor/ui/layouts/mercury/homescreen.py @@ -33,8 +33,8 @@ def _first_paint(self) -> None: # In __debug__ mode, ignore {confirm,swipe,input}_signal. def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_click_signal(), # so we can receive debug events ) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 8b0d98e4e5..0be6ee23bb 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -226,14 +226,14 @@ async def handle_button_signal(self) -> None: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: if context.CURRENT_CONTEXT: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_usb(context.get_context()), ) else: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), ) def _first_paint(self) -> None: diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 4d7aa9d055..6d532991d5 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -71,8 +71,8 @@ def _paint(self) -> None: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: if context.CURRENT_CONTEXT: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_swipe(), self.handle_click_signal(), self.handle_result_signal(), @@ -80,8 +80,8 @@ def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: ) else: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_swipe(), self.handle_click_signal(), self.handle_result_signal(), @@ -186,14 +186,14 @@ async def handle_click_signal(self) -> None: def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: if context.CURRENT_CONTEXT: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_usb(context.get_context()), ) else: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), ) def _first_paint(self) -> None: diff --git a/core/src/trezor/ui/layouts/tt/fido.py b/core/src/trezor/ui/layouts/tt/fido.py index 390fb4b7e0..622e199587 100644 --- a/core/src/trezor/ui/layouts/tt/fido.py +++ b/core/src/trezor/ui/layouts/tt/fido.py @@ -18,8 +18,8 @@ class _RustFidoLayoutImpl(RustLayout): def create_tasks(self) -> tuple[AwaitableTask, ...]: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_swipe(), self.handle_debug_confirm(), ) diff --git a/core/src/trezor/ui/layouts/tt/homescreen.py b/core/src/trezor/ui/layouts/tt/homescreen.py index da8021b2d8..7089e8e5fb 100644 --- a/core/src/trezor/ui/layouts/tt/homescreen.py +++ b/core/src/trezor/ui/layouts/tt/homescreen.py @@ -33,8 +33,8 @@ def _first_paint(self) -> None: # In __debug__ mode, ignore {confirm,swipe,input}_signal. def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: return ( - self.handle_timers(), self.handle_input_and_rendering(), + self.handle_timers(), self.handle_click_signal(), # so we can receive debug events ) From b4200162abbd4aad2934d95a5fbe120af4945f87 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 19 Jun 2024 22:01:30 +0200 Subject: [PATCH 368/626] fix(core): fix doubled touch clicks [no changelog] --- core/embed/trezorhal/stm32f4/touch/ft6x36.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/touch/ft6x36.c b/core/embed/trezorhal/stm32f4/touch/ft6x36.c index eb1d18f0a5..2fc78cd17e 100644 --- a/core/embed/trezorhal/stm32f4/touch/ft6x36.c +++ b/core/embed/trezorhal/stm32f4/touch/ft6x36.c @@ -388,9 +388,15 @@ uint32_t touch_get_event(void) { // Finger was just pressed down event = TOUCH_START | xy; } else { - // It looks like we have missed the lift up event - // We should send the TOUCH_END event here with old coordinates - event = TOUCH_END | touch_pack_xy(driver->last_x, driver->last_y); + if ((x != driver->last_x) || (y != driver->last_y)) { + // It looks like we have missed the lift up event + // We should send the TOUCH_END event here with old coordinates + event = TOUCH_END | touch_pack_xy(driver->last_x, driver->last_y); + } else { + // We have received the same coordinates as before, + // probably this is the same start event, or a quick bounce, + // we should ignore it. + } } } else if ((nb_touches == 1) && (flags == FT6X63_EVENT_CONTACT)) { if (driver->pressed) { From 106edd43097d8f71dea10979e2e4fe0718108d95 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 26 Jun 2024 11:55:15 +0200 Subject: [PATCH 369/626] feat(core/ui): T3T1: tutorial flow [no changelog] --- core/embed/rust/librust_qstr.h | 13 +- .../generated/translated_string.rs | 75 ++++-- .../component/hold_to_confirm.rs | 12 +- .../model_mercury/component/prompt_screen.rs | 18 +- .../model_mercury/component/tap_to_confirm.rs | 21 +- .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../ui/model_mercury/flow/show_tutorial.rs | 229 ++++++++++++++++++ .../embed/rust/src/ui/model_mercury/layout.rs | 4 + core/mocks/generated/trezorui2.pyi | 5 + core/mocks/trezortranslate_keys.pyi | 26 +- core/src/apps/management/show_tutorial.py | 3 - core/src/apps/workflow_handlers.py | 5 +- .../src/trezor/ui/layouts/mercury/__init__.py | 11 + core/translations/cs.json | 5 - core/translations/de.json | 5 - core/translations/en.json | 26 +- core/translations/es.json | 5 - core/translations/fr.json | 5 - core/translations/order.json | 15 +- core/translations/signatures.json | 6 +- 20 files changed, 391 insertions(+), 100 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index a76997f576..f40fc1579c 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -281,9 +281,9 @@ static void _librust_qstrs(void) { MP_QSTR_instructions__continue_holding; MP_QSTR_instructions__continue_in_app; MP_QSTR_instructions__enter_next_share; + MP_QSTR_instructions__exit_tutorial; MP_QSTR_instructions__hold_to_confirm; MP_QSTR_instructions__hold_to_continue; - MP_QSTR_instructions__hold_to_exit_tutorial; MP_QSTR_instructions__hold_to_finish_tutorial; MP_QSTR_instructions__hold_to_sign; MP_QSTR_instructions__learn_more; @@ -663,24 +663,33 @@ static void _librust_qstrs(void) { MP_QSTR_trezorui2; MP_QSTR_tutorial; MP_QSTR_tutorial__continue; + MP_QSTR_tutorial__did_you_know; MP_QSTR_tutorial__exit; MP_QSTR_tutorial__first_transaction_finish; MP_QSTR_tutorial__first_transaction_intro; + MP_QSTR_tutorial__first_wallet; + MP_QSTR_tutorial__get_started; + MP_QSTR_tutorial__lets_begin; MP_QSTR_tutorial__menu; MP_QSTR_tutorial__middle_click; MP_QSTR_tutorial__one_more_step; MP_QSTR_tutorial__press_and_hold; MP_QSTR_tutorial__ready_to_use; MP_QSTR_tutorial__ready_to_use_safe5; + MP_QSTR_tutorial__restart_tutorial; MP_QSTR_tutorial__scroll_down; MP_QSTR_tutorial__subtitle_safe5; MP_QSTR_tutorial__sure_you_want_skip; MP_QSTR_tutorial__swipe_up_and_down; + MP_QSTR_tutorial__title_easy_navigation; + MP_QSTR_tutorial__title_handy_menu; MP_QSTR_tutorial__title_hello; - MP_QSTR_tutorial__title_navigation; + MP_QSTR_tutorial__title_hold; + MP_QSTR_tutorial__title_lets_begin; MP_QSTR_tutorial__title_screen_scroll; MP_QSTR_tutorial__title_skip; MP_QSTR_tutorial__title_tutorial_complete; + MP_QSTR_tutorial__title_well_done; MP_QSTR_tutorial__use_trezor; MP_QSTR_tutorial__welcome_press_right; MP_QSTR_tutorial__welcome_safe5; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 0e3caf447f..1be0d1f0f0 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1289,8 +1289,8 @@ pub enum TranslatedString { instructions__continue_holding = 888, // "Continue\nholding" instructions__enter_next_share = 889, // "Enter next share" instructions__hold_to_continue = 890, // "Hold to continue" - instructions__hold_to_exit_tutorial = 891, // "Hold to exit tutorial" - instructions__hold_to_finish_tutorial = 892, // "Hold to finish tutorial" + instructions__exit_tutorial = 891, // "Exit tutorial" + instructions__hold_to_finish_tutorial = 892, // "\"\"" instructions__learn_more = 893, // "Learn more" instructions__shares_continue_with_x_template = 894, // "Continue with Share #{0}" instructions__shares_start_with_1 = 895, // "Start with share #1" @@ -1316,15 +1316,15 @@ pub enum TranslatedString { send__transaction_signed = 915, // "Transaction signed" tutorial__continue = 916, // "Continue tutorial" tutorial__exit = 917, // "Exit tutorial" - tutorial__first_transaction_finish = 918, // "took place on 12 January 2009." - tutorial__first_transaction_intro = 919, // "The world's first bitcoin transaction" - tutorial__menu = 920, // "Menu includes context-specific actions and options." - tutorial__one_more_step = 921, // "One more step..." - tutorial__ready_to_use_safe5 = 922, // "Well done!\nNow you're ready to use your Trezor Safe 5." - tutorial__subtitle_safe5 = 923, // "Trezor Safe 5 tutorial" - tutorial__swipe_up_and_down = 924, // "Swipe up & down to move through screens." - tutorial__title_navigation = 925, // "Navigation" - tutorial__welcome_safe5 = 926, // "Welcome to Trezor Safe 5." + tutorial__first_transaction_finish = 918, // "\"\"" + tutorial__first_transaction_intro = 919, // "\"\"" + tutorial__menu = 920, // "Find context-specific actions and options in the menu." + tutorial__one_more_step = 921, // "\"\"" + tutorial__ready_to_use_safe5 = 922, // "You're all set to start using your device!" + tutorial__subtitle_safe5 = 923, // "\"\"" + tutorial__swipe_up_and_down = 924, // "Swipe up & down\nto move through screens." + tutorial__title_easy_navigation = 925, // "Easy navigation" + tutorial__welcome_safe5 = 926, // "Welcome to\nTrezor Safe 5" words__good_to_know = 927, // "Good to know" words__operation_cancelled = 928, // "Operation cancelled" words__settings = 929, // "Settings" @@ -1340,6 +1340,15 @@ pub enum TranslatedString { homescreen__settings_subtitle = 939, // "Settings" homescreen__settings_title = 940, // "Homescreen" reset__the_word_is_repeated = 941, // "The word is repeated" + tutorial__title_lets_begin = 942, // "Let's begin" + tutorial__did_you_know = 943, // "Did you know?" + tutorial__first_wallet = 944, // "The Trezor Model One, created in 2013,\nwas the world's first hardware wallet." + tutorial__restart_tutorial = 945, // "Restart tutorial" + tutorial__title_handy_menu = 946, // "Handy menu" + tutorial__title_hold = 947, // "Hold to confirm important actions" + tutorial__title_well_done = 948, // "Well done!" + tutorial__lets_begin = 949, // "Learn how to use and navigate this device with ease." + tutorial__get_started = 950, // "Get started!" } impl TranslatedString { @@ -2623,8 +2632,8 @@ impl TranslatedString { Self::instructions__continue_holding => "Continue\nholding", Self::instructions__enter_next_share => "Enter next share", Self::instructions__hold_to_continue => "Hold to continue", - Self::instructions__hold_to_exit_tutorial => "Hold to exit tutorial", - Self::instructions__hold_to_finish_tutorial => "Hold to finish tutorial", + Self::instructions__exit_tutorial => "Exit tutorial", + Self::instructions__hold_to_finish_tutorial => "\"\"", Self::instructions__learn_more => "Learn more", Self::instructions__shares_continue_with_x_template => "Continue with Share #{0}", Self::instructions__shares_start_with_1 => "Start with share #1", @@ -2650,15 +2659,15 @@ impl TranslatedString { Self::send__transaction_signed => "Transaction signed", Self::tutorial__continue => "Continue tutorial", Self::tutorial__exit => "Exit tutorial", - Self::tutorial__first_transaction_finish => "took place on 12 January 2009.", - Self::tutorial__first_transaction_intro => "The world's first bitcoin transaction", - Self::tutorial__menu => "Menu includes context-specific actions and options.", - Self::tutorial__one_more_step => "One more step...", - Self::tutorial__ready_to_use_safe5 => "Well done!\nNow you're ready to use your Trezor Safe 5.", - Self::tutorial__subtitle_safe5 => "Trezor Safe 5 tutorial", - Self::tutorial__swipe_up_and_down => "Swipe up & down to move through screens.", - Self::tutorial__title_navigation => "Navigation", - Self::tutorial__welcome_safe5 => "Welcome to Trezor Safe 5.", + Self::tutorial__first_transaction_finish => "\"\"", + Self::tutorial__first_transaction_intro => "\"\"", + Self::tutorial__menu => "Find context-specific actions and options in the menu.", + Self::tutorial__one_more_step => "\"\"", + Self::tutorial__ready_to_use_safe5 => "You're all set to start using your device!", + Self::tutorial__subtitle_safe5 => "\"\"", + Self::tutorial__swipe_up_and_down => "Swipe up & down\nto move through screens.", + Self::tutorial__title_easy_navigation => "Easy navigation", + Self::tutorial__welcome_safe5 => "Welcome to\nTrezor Safe 5", Self::words__good_to_know => "Good to know", Self::words__operation_cancelled => "Operation cancelled", Self::words__settings => "Settings", @@ -2674,6 +2683,15 @@ impl TranslatedString { Self::homescreen__settings_subtitle => "Settings", Self::homescreen__settings_title => "Homescreen", Self::reset__the_word_is_repeated => "The word is repeated", + Self::tutorial__title_lets_begin => "Let's begin", + Self::tutorial__did_you_know => "Did you know?", + Self::tutorial__first_wallet => "The Trezor Model One, created in 2013,\nwas the world's first hardware wallet.", + Self::tutorial__restart_tutorial => "Restart tutorial", + Self::tutorial__title_handy_menu => "Handy menu", + Self::tutorial__title_hold => "Hold to confirm important actions", + Self::tutorial__title_well_done => "Well done!", + Self::tutorial__lets_begin => "Learn how to use and navigate this device with ease.", + Self::tutorial__get_started => "Get started!", } } @@ -3958,7 +3976,7 @@ impl TranslatedString { Qstr::MP_QSTR_instructions__continue_holding => Some(Self::instructions__continue_holding), Qstr::MP_QSTR_instructions__enter_next_share => Some(Self::instructions__enter_next_share), Qstr::MP_QSTR_instructions__hold_to_continue => Some(Self::instructions__hold_to_continue), - Qstr::MP_QSTR_instructions__hold_to_exit_tutorial => Some(Self::instructions__hold_to_exit_tutorial), + Qstr::MP_QSTR_instructions__exit_tutorial => Some(Self::instructions__exit_tutorial), Qstr::MP_QSTR_instructions__hold_to_finish_tutorial => Some(Self::instructions__hold_to_finish_tutorial), Qstr::MP_QSTR_instructions__learn_more => Some(Self::instructions__learn_more), Qstr::MP_QSTR_instructions__shares_continue_with_x_template => Some(Self::instructions__shares_continue_with_x_template), @@ -3992,7 +4010,7 @@ impl TranslatedString { Qstr::MP_QSTR_tutorial__ready_to_use_safe5 => Some(Self::tutorial__ready_to_use_safe5), Qstr::MP_QSTR_tutorial__subtitle_safe5 => Some(Self::tutorial__subtitle_safe5), Qstr::MP_QSTR_tutorial__swipe_up_and_down => Some(Self::tutorial__swipe_up_and_down), - Qstr::MP_QSTR_tutorial__title_navigation => Some(Self::tutorial__title_navigation), + Qstr::MP_QSTR_tutorial__title_easy_navigation => Some(Self::tutorial__title_easy_navigation), Qstr::MP_QSTR_tutorial__welcome_safe5 => Some(Self::tutorial__welcome_safe5), Qstr::MP_QSTR_words__good_to_know => Some(Self::words__good_to_know), Qstr::MP_QSTR_words__operation_cancelled => Some(Self::words__operation_cancelled), @@ -4009,6 +4027,15 @@ impl TranslatedString { Qstr::MP_QSTR_homescreen__settings_subtitle => Some(Self::homescreen__settings_subtitle), Qstr::MP_QSTR_homescreen__settings_title => Some(Self::homescreen__settings_title), Qstr::MP_QSTR_reset__the_word_is_repeated => Some(Self::reset__the_word_is_repeated), + Qstr::MP_QSTR_tutorial__title_lets_begin => Some(Self::tutorial__title_lets_begin), + Qstr::MP_QSTR_tutorial__did_you_know => Some(Self::tutorial__did_you_know), + Qstr::MP_QSTR_tutorial__first_wallet => Some(Self::tutorial__first_wallet), + Qstr::MP_QSTR_tutorial__restart_tutorial => Some(Self::tutorial__restart_tutorial), + Qstr::MP_QSTR_tutorial__title_handy_menu => Some(Self::tutorial__title_handy_menu), + Qstr::MP_QSTR_tutorial__title_hold => Some(Self::tutorial__title_hold), + Qstr::MP_QSTR_tutorial__title_well_done => Some(Self::tutorial__title_well_done), + Qstr::MP_QSTR_tutorial__lets_begin => Some(Self::tutorial__lets_begin), + Qstr::MP_QSTR_tutorial__get_started => Some(Self::tutorial__get_started), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs index b91590bdf3..b8c2cc9a22 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -175,14 +175,8 @@ pub struct HoldToConfirm { finalizing: bool, } -#[derive(Clone)] -enum DismissType { - Tap, - Hold, -} - impl HoldToConfirm { - pub fn new() -> Self { + pub fn new(circle_color: Color, circle_inner_color: Color) -> Self { let button = Button::new(ButtonContent::Empty) .styled(theme::button_default()) .with_long_press(Duration::from_millis(2200)) @@ -195,9 +189,9 @@ impl HoldToConfirm { ) .vertically_centered(), area: Rect::zero(), - circle_color: theme::GREEN, + circle_color, circle_pad_color: theme::GREY_EXTRA_DARK, - circle_inner_color: theme::GREEN_LIGHT, + circle_inner_color, button, anim: HoldToConfirmAnim::default(), finalizing: false, diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 755ef28e2c..4937c1f894 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -17,7 +17,11 @@ pub enum PromptScreen { impl PromptScreen { pub fn new_hold_to_confirm() -> Self { - PromptScreen::Hold(HoldToConfirm::new()) + PromptScreen::Hold(HoldToConfirm::new(theme::GREEN, theme::GREEN_LIGHT)) + } + + pub fn new_hold_to_confirm_danger() -> Self { + PromptScreen::Hold(HoldToConfirm::new(theme::ORANGE_LIGHT, theme::ORANGE_LIGHT)) } pub fn new_tap_to_confirm() -> Self { @@ -26,6 +30,7 @@ impl PromptScreen { theme::GREEN, theme::GREY_EXTRA_DARK, theme::GREEN_LIGHT, + theme::ICON_SIMPLE_CHECKMARK, )) } @@ -35,6 +40,17 @@ impl PromptScreen { theme::ORANGE_LIGHT, theme::GREY_EXTRA_DARK, theme::ORANGE_DIMMED, + theme::ICON_SIMPLE_CHECKMARK, + )) + } + + pub fn new_tap_to_start() -> Self { + PromptScreen::Tap(TapToConfirm::new( + theme::GREY, + theme::GREY, + theme::GREY_EXTRA_DARK, + theme::GREY_LIGHT, + theme::ICON_CHEVRON_RIGHT, )) } } diff --git a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs index e56b8f6b16..51965f942f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs @@ -2,7 +2,7 @@ use crate::{ time::Duration, ui::{ component::{Component, Event, EventCtx}, - display::Color, + display::{toif::Icon, Color}, geometry::{Alignment2D, Offset, Rect}, lerp::Lerp, shape, @@ -17,11 +17,11 @@ use crate::{time::Stopwatch, ui::constant::screen}; use pareen; #[derive(Default, Clone)] -struct TapToConfirmAmin { +struct TapToConfirmAnim { pub timer: Stopwatch, } -impl TapToConfirmAmin { +impl TapToConfirmAnim { const DURATION_MS: u32 = 600; pub fn is_active(&self) -> bool { @@ -121,13 +121,8 @@ pub struct TapToConfirm { circle_pad_color: Color, circle_inner_color: Color, mask_color: Color, - anim: TapToConfirmAmin, -} - -#[derive(Clone)] -enum DismissType { - Tap, - Hold, + icon: Icon, + anim: TapToConfirmAnim, } impl TapToConfirm { @@ -136,6 +131,7 @@ impl TapToConfirm { circle_inner_color: Color, circle_pad_color: Color, mask_color: Color, + icon: Icon, ) -> Self { let button = Button::new(ButtonContent::Empty).styled(theme::button_default()); Self { @@ -145,7 +141,8 @@ impl TapToConfirm { circle_pad_color, mask_color, button, - anim: TapToConfirmAmin::default(), + icon, + anim: TapToConfirmAnim::default(), } } } @@ -235,7 +232,7 @@ impl Component for TapToConfirm { .with_fg(theme::BLACK) .render(target); - shape::ToifImage::new(center, theme::ICON_SIMPLE_CHECKMARK.toif) + shape::ToifImage::new(center, self.icon.toif) .with_fg(theme::GREY) .with_alpha(255 - self.anim.get_parent_cover_opacity(t)) .with_align(Alignment2D::CENTER) diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 726f695a60..decbd0d4ef 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -8,6 +8,7 @@ pub mod get_address; pub mod prompt_backup; pub mod request_number; pub mod show_share_words; +pub mod show_tutorial; pub mod warning_hi_prio; pub use confirm_action::{new_confirm_action, new_confirm_action_simple}; @@ -22,4 +23,5 @@ pub use get_address::GetAddress; pub use prompt_backup::PromptBackup; pub use request_number::RequestNumber; pub use show_share_words::ShowShareWords; +pub use show_tutorial::ShowTutorial; pub use warning_hi_prio::WarningHiPrio; diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs new file mode 100644 index 0000000000..79fdff291d --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs @@ -0,0 +1,229 @@ +use crate::{ + error, + translations::TR, + ui::{ + component::{ + swipe_detect::SwipeSettings, + text::paragraphs::{Paragraph, Paragraphs}, + ComponentExt, SwipeDirection, + }, + flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum ShowTutorial { + StepWelcome, + StepBegin, + StepNavigation, + StepMenu, + StepHold, + StepDone, + Menu, + DidYouKnow, + HoldToExit, +} + +impl FlowState for ShowTutorial { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (ShowTutorial::StepBegin, SwipeDirection::Up) => { + Decision::Goto(ShowTutorial::StepNavigation, direction) + } + (ShowTutorial::StepNavigation, SwipeDirection::Up) => { + Decision::Goto(ShowTutorial::StepMenu, direction) + } + (ShowTutorial::StepNavigation, SwipeDirection::Down) => { + Decision::Goto(ShowTutorial::StepBegin, direction) + } + (ShowTutorial::StepMenu, SwipeDirection::Up) => { + Decision::Goto(ShowTutorial::StepHold, direction) + } + (ShowTutorial::StepMenu, SwipeDirection::Down) => { + Decision::Goto(ShowTutorial::StepNavigation, direction) + } + (ShowTutorial::StepMenu, SwipeDirection::Left) => { + Decision::Goto(ShowTutorial::Menu, direction) + } + (ShowTutorial::Menu, SwipeDirection::Left) => { + Decision::Goto(ShowTutorial::DidYouKnow, direction) + } + (ShowTutorial::Menu, SwipeDirection::Right) => { + Decision::Goto(ShowTutorial::StepBegin, direction) + } + (ShowTutorial::DidYouKnow, SwipeDirection::Right) => { + Decision::Goto(ShowTutorial::Menu, direction) + } + (ShowTutorial::StepDone, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (ShowTutorial::StepWelcome, FlowMsg::Confirmed) => { + Decision::Goto(ShowTutorial::StepBegin, SwipeDirection::Up) + } + (ShowTutorial::StepMenu, FlowMsg::Info) => { + Decision::Goto(ShowTutorial::Menu, SwipeDirection::Left) + } + (ShowTutorial::Menu, FlowMsg::Choice(0)) => { + Decision::Goto(ShowTutorial::DidYouKnow, SwipeDirection::Left) + } + (ShowTutorial::Menu, FlowMsg::Choice(1)) => { + Decision::Goto(ShowTutorial::StepBegin, SwipeDirection::Right) + } + (ShowTutorial::Menu, FlowMsg::Choice(2)) => { + Decision::Goto(ShowTutorial::HoldToExit, SwipeDirection::Up) + } + (ShowTutorial::Menu, FlowMsg::Cancelled) => { + Decision::Goto(ShowTutorial::StepMenu, SwipeDirection::Right) + } + (ShowTutorial::DidYouKnow, FlowMsg::Cancelled) => { + Decision::Goto(ShowTutorial::Menu, SwipeDirection::Right) + } + (ShowTutorial::StepHold, FlowMsg::Confirmed) => { + Decision::Goto(ShowTutorial::StepDone, SwipeDirection::Up) + } + (ShowTutorial::HoldToExit, FlowMsg::Confirmed) => { + Decision::Goto(ShowTutorial::StepDone, SwipeDirection::Up) + } + _ => Decision::Nothing, + } + } +} + +use crate::micropython::{map::Map, obj::Obj, util}; + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_show_tutorial(_n_args: usize, _args: *const Obj, _kwargs: *mut Map) -> Obj { + unsafe { util::try_or_raise(ShowTutorial::new_obj) } +} + +impl ShowTutorial { + fn new_obj() -> Result<Obj, error::Error> { + let content_step_welcome = Frame::left_aligned( + TR::tutorial__welcome_safe5.into(), + SwipeContent::new(PromptScreen::new_tap_to_start()), + ) + .with_footer(TR::instructions__tap_to_start.into(), None) + .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); + + let content_step_begin = Frame::left_aligned( + TR::tutorial__title_lets_begin.into(), + SwipeContent::new(Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TR::tutorial__lets_begin, + ))), + ) + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::tutorial__get_started.into()), + ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .map(|_| None); + + let content_step_navigation = Frame::left_aligned( + TR::tutorial__title_easy_navigation.into(), + SwipeContent::new(Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TR::tutorial__swipe_up_and_down, + ))), + ) + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::tutorial__continue.into()), + ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .map(|_| None); + + let content_step_menu = Frame::left_aligned( + TR::tutorial__title_handy_menu.into(), + SwipeContent::new(Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TR::tutorial__menu, + ))), + ) + .with_menu_button() + .button_styled(theme::button_warning_low()) + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::buttons__continue.into()), + ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + + let content_step_hold = Frame::left_aligned( + TR::tutorial__title_hold.into(), + SwipeContent::new(PromptScreen::new_hold_to_confirm()), + ) + .with_footer(TR::instructions__exit_tutorial.into(), None) + .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); + + let content_step_done = Frame::left_aligned( + TR::tutorial__title_well_done.into(), + SwipeContent::new(Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TR::tutorial__ready_to_use_safe5, + ))), + ) + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .map(|_| None); + + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty() + .item(theme::ICON_CHEVRON_RIGHT, TR::tutorial__did_you_know.into()) + .item(theme::ICON_REBOOT, TR::tutorial__restart_tutorial.into()) + .danger(theme::ICON_CANCEL, TR::tutorial__exit.into()), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .with_swipe(SwipeDirection::Left, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let content_did_you_know = Frame::left_aligned( + "".into(), + SwipeContent::new(Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TR::tutorial__first_wallet, + ))), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)); + + let content_hold_to_exit = Frame::left_aligned( + TR::tutorial__title_hold.into(), + SwipeContent::new(PromptScreen::new_hold_to_confirm_danger()), + ) + .with_footer(TR::instructions__exit_tutorial.into(), None) + .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); + + let store = flow_store() + .add(content_step_welcome)? + .add(content_step_begin)? + .add(content_step_navigation)? + .add(content_step_menu)? + .add(content_step_hold)? + .add(content_step_done)? + .add(content_menu)? + .add(content_did_you_know)? + .add(content_hold_to_exit)?; + let res = SwipeFlow::new(ShowTutorial::StepWelcome, store)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index be270ed227..5590d5fcb7 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1834,6 +1834,10 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" Qstr::MP_QSTR_confirm_firmware_update => obj_fn_kw!(0, new_confirm_firmware_update).as_obj(), + /// def tutorial() -> LayoutObj[UiResult]: + /// """Show user how to interact with the device.""" + Qstr::MP_QSTR_tutorial => obj_fn_kw!(0, flow::show_tutorial::new_show_tutorial).as_obj(), // FIXME turn this into obj_fn_0, T2B1 as well + /// def show_wait_text(message: str, /) -> LayoutObj[None]: /// """Show single-line text in the middle of the screen.""" Qstr::MP_QSTR_show_wait_text => obj_fn_1!(new_show_wait_text).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 6cb0911cdf..31af604b90 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -546,6 +546,11 @@ def confirm_firmware_update( """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" +# rust/src/ui/model_mercury/layout.rs +def tutorial() -> LayoutObj[UiResult]: + """Show user how to interact with the device.""" + + # rust/src/ui/model_mercury/layout.rs def show_wait_text(message: str, /) -> LayoutObj[None]: """Show single-line text in the middle of the screen.""" diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 472a8870a5..085afa155e 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -378,10 +378,9 @@ class TR: instructions__continue_holding: str = "Continue\nholding" instructions__continue_in_app: str = "Continue in the app" instructions__enter_next_share: str = "Enter next share" + instructions__exit_tutorial: str = "Exit tutorial" instructions__hold_to_confirm: str = "Hold to confirm" instructions__hold_to_continue: str = "Hold to continue" - instructions__hold_to_exit_tutorial: str = "Hold to exit tutorial" - instructions__hold_to_finish_tutorial: str = "Hold to finish tutorial" instructions__hold_to_sign: str = "Hold to sign" instructions__learn_more: str = "Learn more" instructions__shares_continue_with_x_template: str = "Continue with Share #{0}" @@ -848,27 +847,32 @@ class TR: tezos__submit_proposal: str = "Submit proposal" tezos__submit_proposals: str = "Submit proposals" tutorial__continue: str = "Continue tutorial" + tutorial__did_you_know: str = "Did you know?" tutorial__exit: str = "Exit tutorial" - tutorial__first_transaction_finish: str = "took place on 12 January 2009." - tutorial__first_transaction_intro: str = "The world's first bitcoin transaction" - tutorial__menu: str = "Menu includes context-specific actions and options." + tutorial__first_wallet: str = "The Trezor Model One, created in 2013,\nwas the world's first hardware wallet." + tutorial__get_started: str = "Get started!" + tutorial__lets_begin: str = "Learn how to use and navigate this device with ease." + tutorial__menu: str = "Find context-specific actions and options in the menu." tutorial__middle_click: str = "Press both left and right at the same\ntime to confirm." - tutorial__one_more_step: str = "One more step..." tutorial__press_and_hold: str = "Press and hold the right button to\napprove important operations." tutorial__ready_to_use: str = "You're ready to\nuse Trezor." - tutorial__ready_to_use_safe5: str = "Well done!\nNow you're ready to use your Trezor Safe 5." + tutorial__ready_to_use_safe5: str = "You're all set to start using your device!" + tutorial__restart_tutorial: str = "Restart tutorial" tutorial__scroll_down: str = "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up." - tutorial__subtitle_safe5: str = "Trezor Safe 5 tutorial" tutorial__sure_you_want_skip: str = "Are you sure you\nwant to skip the tutorial?" - tutorial__swipe_up_and_down: str = "Swipe up & down to move through screens." + tutorial__swipe_up_and_down: str = "Swipe up & down\nto move through screens." + tutorial__title_easy_navigation: str = "Easy navigation" + tutorial__title_handy_menu: str = "Handy menu" tutorial__title_hello: str = "Hello" - tutorial__title_navigation: str = "Navigation" + tutorial__title_hold: str = "Hold to confirm important actions" + tutorial__title_lets_begin: str = "Let's begin" tutorial__title_screen_scroll: str = "Screen scroll" tutorial__title_skip: str = "Skip tutorial" tutorial__title_tutorial_complete: str = "Tutorial complete" + tutorial__title_well_done: str = "Well done!" tutorial__use_trezor: str = "Use Trezor by\nclicking the left and right buttons.\n\rContinue right." tutorial__welcome_press_right: str = "Welcome to Trezor. Press right to continue." - tutorial__welcome_safe5: str = "Welcome to Trezor Safe 5." + tutorial__welcome_safe5: str = "Welcome to\nTrezor Safe 5" u2f__get: str = "Increase and retrieve the U2F counter?" u2f__set_template: str = "Set the U2F counter to {0}?" u2f__title_get: str = "Get U2F counter" diff --git a/core/src/apps/management/show_tutorial.py b/core/src/apps/management/show_tutorial.py index 7f3474c94f..7634db77fc 100644 --- a/core/src/apps/management/show_tutorial.py +++ b/core/src/apps/management/show_tutorial.py @@ -6,9 +6,6 @@ async def show_tutorial(msg: ShowDeviceTutorial) -> Success: from trezor.messages import Success - - # NOTE: tutorial is defined only for TR, and this function should - # also be called only in case of TR from trezor.ui.layouts import tutorial await tutorial() diff --git a/core/src/apps/workflow_handlers.py b/core/src/apps/workflow_handlers.py index d8a7f32d2e..2631f614eb 100644 --- a/core/src/apps/workflow_handlers.py +++ b/core/src/apps/workflow_handlers.py @@ -55,7 +55,10 @@ def _find_message_handler_module(msg_type: int) -> str: if msg_type == MessageType.RebootToBootloader: return "apps.management.reboot_to_bootloader" - if utils.INTERNAL_MODEL in ("T2B1",) and msg_type == MessageType.ShowDeviceTutorial: + if ( + utils.INTERNAL_MODEL in ("T2B1", "T3T1") + and msg_type == MessageType.ShowDeviceTutorial + ): return "apps.management.show_tutorial" if utils.USE_BACKLIGHT and msg_type == MessageType.SetBrightness: diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index c955c293a3..3a1aa1d2f2 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -1491,3 +1491,14 @@ async def set_brightness(current: int | None = None) -> None: "set_brightness", BR_TYPE_OTHER, ) + + +def tutorial(br_code: ButtonRequestType = BR_TYPE_OTHER) -> Awaitable[None]: + """Showing users how to interact with the device.""" + return raise_if_not_confirmed( + interact( + RustLayout(trezorui2.tutorial()), + "tutorial", + br_code, + ) + ) diff --git a/core/translations/cs.json b/core/translations/cs.json index a035fa0d26..e2d26c1a53 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -415,7 +415,6 @@ "instructions__hold_to_confirm": "Držením potvrďte", "instructions__hold_to_continue": "Držením pokračujte", "instructions__hold_to_exit_tutorial": "Podržením ukončíte tutoriál", - "instructions__hold_to_finish_tutorial": "Podržením dokončíte tutoriál", "instructions__hold_to_sign": "Podržením podepíšete", "instructions__learn_more": "Zjistit více", "instructions__shares_continue_with_x_template": "Pokračujte částí č. {0}", @@ -883,16 +882,12 @@ "tezos__submit_proposals": "Odeslat návrhy", "tutorial__continue": "Pokračovat v tutoriálu", "tutorial__exit": "Ukončit tutoriál", - "tutorial__first_transaction_finish": "se uskutečnila 12. ledna 2009.", - "tutorial__first_transaction_intro": "První bitcoinová transakce na světě", "tutorial__menu": "Nabídka obsahuje kontextové akce a možnosti.", "tutorial__middle_click": "Stiskněte současně levé i pravé tlačítko\npro potvrzení.", - "tutorial__one_more_step": "Ještě jeden krok…", "tutorial__press_and_hold": "Podržením pravého tlačítka\nschválíte důležité operace.", "tutorial__ready_to_use": "Nyní můžete\npoužívat Trezor.", "tutorial__ready_to_use_safe5": "Dobrá práce!\nNyní můžete začít používat svůj Trezor Safe 5.", "tutorial__scroll_down": "Když se text nevejde na jednu obrazovku, pravým tlačítkem posunete text dolů.\n\rLevým tlačítkem se posunete nahoru.", - "tutorial__subtitle_safe5": "Tutoriál pro Trezor Safe 5", "tutorial__sure_you_want_skip": "Opravdu chcete\npřeskočit tutoriál?", "tutorial__swipe_up_and_down": "Přejetím prstem nahoru a dolů procházíte mezi obrazovkami.", "tutorial__title_hello": "Dobrý den", diff --git a/core/translations/de.json b/core/translations/de.json index a7c59a8448..172fd02ddb 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -415,7 +415,6 @@ "instructions__hold_to_confirm": "Zum Bestätigen halten", "instructions__hold_to_continue": "Zum Fortfahren halten", "instructions__hold_to_exit_tutorial": "Zum Verlassen des Tutorials halten", - "instructions__hold_to_finish_tutorial": "Zum Abschließen des Tutorials halten", "instructions__hold_to_sign": "Zum Signieren halten", "instructions__learn_more": "Mehr erfahren", "instructions__shares_continue_with_x_template": "Mit Share #{0} fortfahren", @@ -883,16 +882,12 @@ "tezos__submit_proposals": "Vorschläge senden", "tutorial__continue": "Tutorial fortsetzen", "tutorial__exit": "Tutorial schließen", - "tutorial__first_transaction_finish": "fand am 12. Januar 2009 statt.", - "tutorial__first_transaction_intro": "Die weltweit erste Bitcoin-Transaktion", "tutorial__menu": "Das Menü enthält kontextspezifische Aktionen und Optionen.", "tutorial__middle_click": "Drücke gleichzeitig rechts und links,\num zu bestätigen.", - "tutorial__one_more_step": "Ein Schritt noch ...", "tutorial__press_and_hold": "Halte die rechte Taste gedrückt,\num wichtige Vorgänge zu genehmigen.", "tutorial__ready_to_use": "Du kannst jetzt\nTrezor verwenden.", "tutorial__ready_to_use_safe5": "Gut gemacht!\nJetzt kannst du deinen Trezor Safe 5 verwenden.", "tutorial__scroll_down": "Drücke rechts, um nach unten zu scrollen und alles zu lesen, wenn der Text nicht auf einen Bildschirm passt.\n\rDrücke links, um nach oben zu scrollen.", - "tutorial__subtitle_safe5": "Tutorial zu Trezor Safe 5", "tutorial__sure_you_want_skip": "Möchtest du das Tutorial\nwirklich überspringen?", "tutorial__swipe_up_and_down": "Wische nach oben und unten, um Bildschirme zu wechseln.", "tutorial__title_hello": "Hallo", diff --git a/core/translations/en.json b/core/translations/en.json index f4148d799f..a38777f29c 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -382,8 +382,7 @@ "instructions__enter_next_share": "Enter next share", "instructions__hold_to_confirm": "Hold to confirm", "instructions__hold_to_continue": "Hold to continue", - "instructions__hold_to_exit_tutorial": "Hold to exit tutorial", - "instructions__hold_to_finish_tutorial": "Hold to finish tutorial", + "instructions__exit_tutorial": "Exit tutorial", "instructions__hold_to_sign": "Hold to sign", "instructions__learn_more": "Learn more", "instructions__shares_continue_with_x_template": "Continue with Share #{0}", @@ -850,27 +849,32 @@ "tezos__submit_proposal": "Submit proposal", "tezos__submit_proposals": "Submit proposals", "tutorial__continue": "Continue tutorial", + "tutorial__did_you_know": "Did you know?", "tutorial__exit": "Exit tutorial", - "tutorial__first_transaction_finish": "took place on 12 January 2009.", - "tutorial__first_transaction_intro": "The world's first bitcoin transaction", - "tutorial__menu": "Menu includes context-specific actions and options.", + "tutorial__first_wallet": "The Trezor Model One, created in 2013,\nwas the world's first hardware wallet.", + "tutorial__lets_begin": "Learn how to use and navigate this device with ease.", + "tutorial__get_started": "Get started!", + "tutorial__menu": "Find context-specific actions and options in the menu.", "tutorial__middle_click": "Press both left and right at the same\ntime to confirm.", - "tutorial__one_more_step": "One more step...", "tutorial__press_and_hold": "Press and hold the right button to\napprove important operations.", "tutorial__ready_to_use": "You're ready to\nuse Trezor.", - "tutorial__ready_to_use_safe5": "Well done!\nNow you're ready to use your Trezor Safe 5.", + "tutorial__ready_to_use_safe5": "You're all set to start using your device!", + "tutorial__restart_tutorial": "Restart tutorial", "tutorial__scroll_down": "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", - "tutorial__subtitle_safe5": "Trezor Safe 5 tutorial", "tutorial__sure_you_want_skip": "Are you sure you\nwant to skip the tutorial?", - "tutorial__swipe_up_and_down": "Swipe up & down to move through screens.", + "tutorial__swipe_up_and_down": "Swipe up & down\nto move through screens.", + "tutorial__title_handy_menu": "Handy menu", "tutorial__title_hello": "Hello", - "tutorial__title_navigation": "Navigation", + "tutorial__title_hold": "Hold to confirm important actions", + "tutorial__title_lets_begin": "Let's begin", + "tutorial__title_easy_navigation": "Easy navigation", "tutorial__title_screen_scroll": "Screen scroll", "tutorial__title_skip": "Skip tutorial", "tutorial__title_tutorial_complete": "Tutorial complete", + "tutorial__title_well_done": "Well done!", "tutorial__use_trezor": "Use Trezor by\nclicking the left and right buttons.\n\rContinue right.", "tutorial__welcome_press_right": "Welcome to Trezor. Press right to continue.", - "tutorial__welcome_safe5": "Welcome to Trezor Safe 5.", + "tutorial__welcome_safe5": "Welcome to\nTrezor Safe 5", "u2f__get": "Increase and retrieve the U2F counter?", "u2f__set_template": "Set the U2F counter to {0}?", "u2f__title_get": "Get U2F counter", diff --git a/core/translations/es.json b/core/translations/es.json index c3d4e38718..7e385f1642 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -415,7 +415,6 @@ "instructions__hold_to_confirm": "Pulsa para confirmar", "instructions__hold_to_continue": "Pulsa para continuar", "instructions__hold_to_exit_tutorial": "Pulsa para salir del tutorial", - "instructions__hold_to_finish_tutorial": "Pulsa para finalizar el tutorial", "instructions__hold_to_sign": "Pulsa para firmar", "instructions__learn_more": "Más información", "instructions__shares_continue_with_x_template": "Continuar con el recurso n.º {0}", @@ -883,16 +882,12 @@ "tezos__submit_proposals": "Enviar propuestas", "tutorial__continue": "Continuar con el tutorial", "tutorial__exit": "Salir del tutorial", - "tutorial__first_transaction_finish": "tuvo lugar el 12 de enero de 2009.", - "tutorial__first_transaction_intro": "La primera transacción en bitcoins del mundo", "tutorial__menu": "El menú incluye funciones y opciones específicas del contexto.", "tutorial__middle_click": "Pulsa ambos botones a la vez\npara confirmar.", - "tutorial__one_more_step": "Un paso más...", "tutorial__press_and_hold": "Mantén pulsado el botón derecho para\naprobar operaciones importantes.", "tutorial__ready_to_use": "Ya puedes\nusar Trezor.", "tutorial__ready_to_use_safe5": "¡Conseguido!\nYa puedes usar Trezor Safe 5.", "tutorial__scroll_down": "Pulsa el botón derecho para ir bajando y leer todo cuando el texto no quepa en una pantalla.\n\rPulsa el botón izquierdo para ir hacia arriba.", - "tutorial__subtitle_safe5": "Tutorial de Trezor Safe 5", "tutorial__sure_you_want_skip": "¿Seguro que quieres\nomitir el tutorial?", "tutorial__swipe_up_and_down": "Desliza hacia arriba y hacia abajo para moverte por las pantallas.", "tutorial__title_hello": "Hola", diff --git a/core/translations/fr.json b/core/translations/fr.json index 180b5fb371..eeb24b93eb 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -415,7 +415,6 @@ "instructions__hold_to_confirm": "Appui pour confirmer", "instructions__hold_to_continue": "Appui pour continuer", "instructions__hold_to_exit_tutorial": "Appui pour quitter le tutoriel", - "instructions__hold_to_finish_tutorial": "Appui pour finir le tutoriel", "instructions__hold_to_sign": "Appui pour signer", "instructions__learn_more": "En savoir plus", "instructions__shares_continue_with_x_template": "Continuez avec le fragment #{0}", @@ -883,16 +882,12 @@ "tezos__submit_proposals": "Soumettre des propositions", "tutorial__continue": "Continuer le tutoriel", "tutorial__exit": "Quitter le tutoriel", - "tutorial__first_transaction_finish": "a eu lieu le 12 janvier 2009.", - "tutorial__first_transaction_intro": "La première transaction bitcoin au monde", "tutorial__menu": "Le menu comprend des actions et des options spécifiques au contexte.", "tutorial__middle_click": "App. simultanément sur les boutons gauche et droit\npour conf.", - "tutorial__one_more_step": "Encore une étape...", "tutorial__press_and_hold": "Maintenez enfoncé le bouton droit\npour accepter les choix importants.", "tutorial__ready_to_use": "Vous êtes prêt à\nutiliser Trezor.", "tutorial__ready_to_use_safe5": "Bravo !\nVous êtes prêt à utiliser votre Trezor Safe 5.", "tutorial__scroll_down": "Utilisez le bouton droit pour lire le contenu lorsqu'il dépasse.\n\rBouton gauche pour faire défiler l'écran vers le haut.", - "tutorial__subtitle_safe5": "Tutoriel Trezor Safe 5", "tutorial__sure_you_want_skip": "Voulez-vous vraiment\nignorer le tutoriel ?", "tutorial__swipe_up_and_down": "Faites glisser vers le haut ou vers le bas pour naviguer entre les écrans.", "tutorial__title_hello": "Bonjour", diff --git a/core/translations/order.json b/core/translations/order.json index 076ca0eda1..f3a3c15e15 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -890,7 +890,7 @@ "888": "instructions__continue_holding", "889": "instructions__enter_next_share", "890": "instructions__hold_to_continue", - "891": "instructions__hold_to_exit_tutorial", + "891": "instructions__exit_tutorial", "892": "instructions__hold_to_finish_tutorial", "893": "instructions__learn_more", "894": "instructions__shares_continue_with_x_template", @@ -924,7 +924,7 @@ "922": "tutorial__ready_to_use_safe5", "923": "tutorial__subtitle_safe5", "924": "tutorial__swipe_up_and_down", - "925": "tutorial__title_navigation", + "925": "tutorial__title_easy_navigation", "926": "tutorial__welcome_safe5", "927": "words__good_to_know", "928": "words__operation_cancelled", @@ -940,5 +940,14 @@ "938": "reset__repeat_for_all_shares", "939": "homescreen__settings_subtitle", "940": "homescreen__settings_title", - "941": "reset__the_word_is_repeated" + "941": "reset__the_word_is_repeated", + "942": "tutorial__title_lets_begin", + "943": "tutorial__did_you_know", + "944": "tutorial__first_wallet", + "945": "tutorial__restart_tutorial", + "946": "tutorial__title_handy_menu", + "947": "tutorial__title_hold", + "948": "tutorial__title_well_done", + "949": "tutorial__lets_begin", + "950": "tutorial__get_started" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index cae558bf2a..72d59e63a5 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "21b44a01ac264efd5336977e2da46f69e223dd8c80071599cbf4836a53f39953", - "datetime": "2024-06-27T14:58:08.073537", - "commit": "3bf052f81a87afd9a2ac94499f095acd3971133b" + "merkle_root": "90d6cff1d798ae305bcc046a548fb6dd1e81dd1ba417c28115bc7bf8fd73bbae", + "datetime": "2024-06-30T13:54:36.644531", + "commit": "2ef7f7074a9436e1a632c90f5b721580e51269bb" }, "history": [ { From 23d31cc8b3c167b08db72bcf8fdb8c0fb7cb30a6 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 30 Jun 2024 21:13:28 +0200 Subject: [PATCH 370/626] fix(core): fix lockscreen Not connected label hiding [no changelog] --- .../src/ui/model_mercury/component/homescreen.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index 2141e09c87..ecd49ac2eb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -481,6 +481,7 @@ impl LockscreenAnim { pub struct Lockscreen { anim: LockscreenAnim, label: Label<'static>, + name_width: i16, label_width: i16, label_height: i16, image: Option<BinaryData<'static>>, @@ -503,12 +504,22 @@ impl Lockscreen { } }); - let label_width = label.map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); + let name_width = label.map(|t| theme::TEXT_DEMIBOLD.text_font.text_width(t)); + + let label_width = if bootscreen { + let min = TR::lockscreen__title_not_connected + .map_translated(|t| theme::TEXT_SUB_GREY.text_font.text_width(t)); + name_width.max(min) + } else { + name_width + }; + let label_height = label.map(|t| theme::TEXT_DEMIBOLD.text_font.visible_text_height(t)); Lockscreen { anim: LockscreenAnim::default(), label: Label::new(label, Alignment::Center, theme::TEXT_DEMIBOLD), + name_width, label_width, label_height, image, @@ -525,7 +536,7 @@ impl Component for Lockscreen { fn place(&mut self, bounds: Rect) -> Rect { self.label - .place(bounds.split_top(38).0.with_width(self.label_width + 12)); + .place(bounds.split_top(38).0.with_width(self.name_width + 12)); bounds } From 6f76ac3be6186d6a72454df0e1c991cf78effb8f Mon Sep 17 00:00:00 2001 From: gabrielkerekes <gabriel.kerekes@vacuumlabs.com> Date: Tue, 25 Jun 2024 10:21:59 +0200 Subject: [PATCH 371/626] fix(solana): allow AToken Create instruction to contain an optional `rent_sysvar` account This is needed because some dApps (https://jup.ag/perps or http://solend.fi/) include the rent_sysvar account although it's not required anymore (it's also not a part of the [official docs](https://docs.rs/spl-associated-token-account/latest/spl_associated_token_account/instruction/enum.AssociatedTokenAccountInstruction.html#variant.Create)). --- common/defs/solana/programs.json | 6 +++ ...n_tx.associated_token_account_program.json | 46 +++++++++++++++++++ .../apps/solana/transaction/instructions.py | 6 +++ .../solana/construct/instructions.py | 1 + tests/ui_tests/fixtures.json | 15 ++++++ 5 files changed, 74 insertions(+) diff --git a/common/defs/solana/programs.json b/common/defs/solana/programs.json index 7f176edc54..1531806d96 100644 --- a/common/defs/solana/programs.json +++ b/common/defs/solana/programs.json @@ -2976,6 +2976,12 @@ "name": "spl_token", "is_authority": false, "optional": false + }, + { + "//": "Some dApps still include the rent sysvar although it's not officially required anymore.", + "name": "rent_sysvar", + "is_authority": false, + "optional": true } ], "ui_properties": [ diff --git a/common/tests/fixtures/solana/sign_tx.associated_token_account_program.json b/common/tests/fixtures/solana/sign_tx.associated_token_account_program.json index f067142b29..85eb7078cb 100644 --- a/common/tests/fixtures/solana/sign_tx.associated_token_account_program.json +++ b/common/tests/fixtures/solana/sign_tx.associated_token_account_program.json @@ -47,6 +47,52 @@ "expected_signature": "629daa88d10bca2315fe4176c323197a22c821026f7f6019cadbcf2769c5bb38ceef7652b5cba7e246a51f131f14fa8d776df63c50a1c4a09a3cf0bf2d446201" } }, + + { + "description": "Create Associated Token Account With Sysvar Rent included", + "parameters": { + "address": "m/44'/501'/0'/0'", + "construct": { + "version": null, + "header": { + "signers": 1, + "readonly_signers": 0, + "readonly_non_signers": 4 + }, + "accounts": [ + "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS", + "FUqrjRRtF1LiptdFqaFxipE8R3YfCE4k56xwm5n1piqX", + "11111111111111111111111111111111", + "6YuhWADZyAAxAaVKPm1G5N51RvDBXsnWo4SfsJ47wSoK", + "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL", + "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + "SysvarRent111111111111111111111111111111111" + ], + "blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak", + "instructions": [ + { + "program_index": 4, + "accounts": { + "funding_account": 0, + "associated_token_account": 1, + "wallet_address": 0, + "token_mint": 3, + "system_program": 2, + "spl_token": 5, + "sysvar_rent": 6 + }, + "data": { + "instruction_id": null + } + } + ], + "luts": [] + } + }, + "result": { + "expected_signature": "098276fc4770c80395e5dd2d3de24f14a6557a0078da95646558ce5dc91aebbdd961bf641dd1ad80ed09391b18f5dcc82157a240c689d86da225a26b9ac2b509" + } + }, { "description": "Create Associated Token Account Idempotent", "parameters": { diff --git a/core/src/apps/solana/transaction/instructions.py b/core/src/apps/solana/transaction/instructions.py index 8353249424..a30cab45f4 100644 --- a/core/src/apps/solana/transaction/instructions.py +++ b/core/src/apps/solana/transaction/instructions.py @@ -743,6 +743,7 @@ class AssociatedTokenAccountProgramCreateInstruction(Instruction): token_mint: Account system_program: Account spl_token: Account + rent_sysvar: Account | None class AssociatedTokenAccountProgramCreateIdempotentInstruction(Instruction): @@ -5134,6 +5135,11 @@ def get_instruction( False, False, ), + AccountTemplate( + "rent_sysvar", + False, + True, + ), ], [ UIProperty( diff --git a/tests/device_tests/solana/construct/instructions.py b/tests/device_tests/solana/construct/instructions.py index 4d4a8e6b7e..07419ad90d 100644 --- a/tests/device_tests/solana/construct/instructions.py +++ b/tests/device_tests/solana/construct/instructions.py @@ -1281,6 +1281,7 @@ class AssociatedTokenAccountProgramInstruction(Enum): "token_mint" / Byte, "system_program" / Byte, "spl_token" / Byte, + "rent_sysvar" / Optional(Byte), ), "data" / CompactStruct( diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 29bbdd3a6b..5ac3ef5425 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -2053,6 +2053,7 @@ "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "2621af1195f873ff604b461dabc06dbb7f48c1f7212011e981b85dd119ec4ec6", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", +"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "11ecc14553f25f9b1e80e579c8d9c0972295c0f99036e6e310d4ca60a5f4cdd3", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3d458f3cc78dc934666a9680fb0f27a45595a1ce5981e1ed3ad47d0abf05aeeb", "T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "b85d69dad89314c84b9f5719c9e6a5bdecf07b7bd81ac530c9969f3b007fa9d4", @@ -3420,6 +3421,7 @@ "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "0634846aae8bb2c503344f80d2710f6ee32be69327b95e93d997fc78d4c950a4", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", +"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "30f5c0df47fed9608f5c3784efcf7b68fe19359eac3044509c469bcaa58da0ff", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3904a6cacba69f761b456660a9cd2a1f15edffaef8578b7cf6e17bc3ea2868d8", "T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e9b4ffca708583d29780a8bd82d5e37b6bd0d19492f21e4c9a0cd605526bf637", @@ -4787,6 +4789,7 @@ "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "bf9b7337e54782a31bdcf8c2af02644d112a9d9d714afa23acd311ee6f499c5c", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", +"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4e3cde6fa0e98176d0f0c1164f0046351d250c29e3d8991caf6e3c262990d8ac", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3674cdad06900e8531247101f80aa78c18eace46235b775d0b05c6d98c79b5a8", "T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "68eb9f66aef4c78cfbe8bb39b8152971ef39c8ffd0d3182580cfde63a1a60387", @@ -6154,6 +6157,7 @@ "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "fe19c47b07a691f82f58391724cb6fb527bf6264e4de2b71280cb74e85b127df", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", +"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d421af164e4badd4945073b402f52c179644514e8ce50c76d66d2e7929655acf", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "f0cd96c3a2cbc2faf4848715ca52ce8b02f4c5b98391829797eb31ed169d6189", "T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "2fd13d5b04d6dc3b956b8b8877cc70e7b4780a55c6c3c3a6d6cec60059f3412c", @@ -7521,6 +7525,7 @@ "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "8d7da5bcddfbd53d04da13d5c34bf7e1837761a37596f41a8e28f79453dc5be7", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", +"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "ae8b4050cff6d2f503a966e7ae5097ba8c82831de62ed66f747873d20f20b72f", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8bf58a89c9f2af059a71cffaee24d77e1cbf59d5aaec5ec00b86adb64b62e8c3", "T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c0d933de22a941689439a0913aaad0c090a433ce2c824072d72c97841c49c2f1", @@ -9219,6 +9224,7 @@ "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09d1dfaf38d500cef7b298ab61ad2d128c530bcc6fe75f405821d0a2d45130aa", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "9b2dd7c06acec4d060adc07206acdb8ae616926b91d6b3b4393e5429c8ce763e", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "692d5fc2ecbe326d6b229f77c7d449cba76ac77eb80e9df3ed85f9c4326d48b6", +"T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "9b2dd7c06acec4d060adc07206acdb8ae616926b91d6b3b4393e5429c8ce763e", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "687c8cdf8cdb327f46eb606f4a1187fac67217f1fc9ac540c975a3d56888fa12", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "c9bf1c94e8141b620f16486760901e46eeacf990faffb77b290a611e8f052f04", "T2T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "87cc3fc2abaca6f3ce3c1227330a3a2b9fb4a3263f1cf724ffd63a196c10490e", @@ -10666,6 +10672,7 @@ "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "21591f532d5cf2609aca3d2fa53b86f04ea55758df68d9663c5e8f2d048f5f82", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "281bf1e082e7148dafc07425aec95a991f51e896ae5a1286d38e8e1ec0c51401", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "444f10176539fe1667b69ef2203eaf55ea373dc05cd0a2cc5a5476bfa7aa0a41", +"T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "281bf1e082e7148dafc07425aec95a991f51e896ae5a1286d38e8e1ec0c51401", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d732a6bccf02c5e3f141346f8024eeff0087ecafaa9edfc86f060518cfdbafa5", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "491f7675532d5f62b3009932e42c0b131ade34d475829e573700b394fa0286da", "T2T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "7cd6f12b46ffdd0db1b295bfd2868609aca9eae0f770ff2c2fbfad121d1efb3d", @@ -12113,6 +12120,7 @@ "T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ec99e2693d5d84bd3b9770b7e62c611c83d14f85ecaa5fec369f2dbc4ffc3a22", "T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "524a9d4ab0406cce8c7c8165c8eef706656bd44de6f5bf29124db6a98b33c612", "T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8664c38ef71ce627dd11efb64b0df244ef9da0932f806bbfd284ad7687e8a72c", +"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "524a9d4ab0406cce8c7c8165c8eef706656bd44de6f5bf29124db6a98b33c612", "T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4897dc73849f7e7787de0a5f2dce4973bff127c173a09cd054bdbf68c3f02ece", "T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "bbee0856297cb8abe986c1832e4020c02c3f172463e369b577f2c662e72974f8", "T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e", @@ -13578,6 +13586,7 @@ "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f5d24499f35006dbf636aeee97f5d5fca8e518e4f097d25e4c92b7565b37e223", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "1644ebc2c4f8f425465c87a31aa7bb93036d9c6f8431f8552606461d1c87b4ea", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3fb6e36a14a965a22268381b8aca16f2b1c9100536fa1fd26e2c14d254071dbe", +"T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "1644ebc2c4f8f425465c87a31aa7bb93036d9c6f8431f8552606461d1c87b4ea", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "c12520413c3239f1e2ef78d1ae1fa097149591b86c859cdde4e7051541ac0051", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9f86f40d5e846f14098140e1140ecaea9286ae1792bd21229b0a076cd4c9cafb", "T2T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9fabfd70710795e1c93e7133f0288e8a61d5f5c6b36008914eac59c051de02b", @@ -15025,6 +15034,7 @@ "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "d49089aa955bc5f6e4d10d7c718142a17a53d5786391df40e5339108cf86e2ef", "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "623aef861082858d8a50d600653f953a7d9f79c9b04f0d0f9a138919ca035f00", "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a87858740c0998683dd682768d48c56e882453a84ab43d0a0998dad51398d76e", +"T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "623aef861082858d8a50d600653f953a7d9f79c9b04f0d0f9a138919ca035f00", "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "7dbcfd81427e9980b0119fe6da91c097b291b299d046f460e382b7c88b67285f", "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9655ce8971f6ba0c70647bb7f1284f674a7d24d2b61430f9e1c6601ee8725d27", "T2T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "191e7f77e472c65c0538a01e7afbc812d23d9b00458f9ba736b7a6d2ef77e59e", @@ -16625,6 +16635,7 @@ "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "e80f4a6e01fe9b958f53b38ec41e5ed69bb73747584448e071b82ccb009ed21e", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "48da852f87f377ad7447c4a0dd44b6216244e22b4fea7196a0333d5a21f0abde", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "48da852f87f377ad7447c4a0dd44b6216244e22b4fea7196a0333d5a21f0abde", +"T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "48da852f87f377ad7447c4a0dd44b6216244e22b4fea7196a0333d5a21f0abde", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "dc2e2b0a1ed20985e5fdd4ead56d752933a9f96511a01b518e8e8c7806b3845a", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "fd418a0ab03e68a7e8f0abc69fb19dd84a640a848b7c19a7bf116b93f450ea74", "T3T1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e617b5493245e1dc696aece6b1debac4b3cd3ecf0e0a646f848b63df89c4708e", @@ -17969,6 +17980,7 @@ "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "5f37037107c11dd80cad68ad8229c701329350ec5f4839367914c5fe305cc4ad", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "d2307b898995aa27cd4c97822942a0066cd464b241f8a536ad800fe5958ca317", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "d2307b898995aa27cd4c97822942a0066cd464b241f8a536ad800fe5958ca317", +"T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "d2307b898995aa27cd4c97822942a0066cd464b241f8a536ad800fe5958ca317", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "6e3636bdb3b2b85e34c7f44a62446c62a1278fb5c712c324a8acf1290c1f9e5e", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "9af44f727e8cd35874b642223e10531f0a1f2dc44ee705cbf73ca68bc94f20c2", "T3T1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c6d840b00e8c8a6b402a24ce937fa76d278d14e88ff9080dd82fe729e113896b", @@ -19313,6 +19325,7 @@ "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "14d40695037fc7a9e7354f7e1f231cdfd82a67334ea1b0e72353151aded500c4", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "24f67e2b77ccdce6caeda1d7f0341d864936cd995f6bd3f91403a3d7a762d4f4", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "24f67e2b77ccdce6caeda1d7f0341d864936cd995f6bd3f91403a3d7a762d4f4", +"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "24f67e2b77ccdce6caeda1d7f0341d864936cd995f6bd3f91403a3d7a762d4f4", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "cf7b3a6e4eba1032181db95592679c4121616c32177f289ae71c2e686ca6178d", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "a6a0820fdb3237361aa6169cfec3f172502d20a21e557d6a95ceefb75d262216", "T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "cb19a65d3e1d6c0bee291c263a1be274b891fceec7185d464bf8d8335b5750a0", @@ -20657,6 +20670,7 @@ "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "f750e369c0b70878d196d9676f4691f316d026bb8618931da57cbc71defb8241", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "242d36779138dadd19e59b6bf5a2d0945e78a99c9b020794922a9b070430ce67", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "242d36779138dadd19e59b6bf5a2d0945e78a99c9b020794922a9b070430ce67", +"T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "242d36779138dadd19e59b6bf5a2d0945e78a99c9b020794922a9b070430ce67", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4a32f4f8ff8b547d313a1031e2763be6209ffd34ad801809efa556ad4223455b", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "64afe82786ee462d1f30f454e6ba4346c6436058beac7f3dc990d5b58e07c1b4", "T3T1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "5a6d16d7eb3b500045c2c8f4210c8bdc1d59c56330ed0c90bb09403ff30c28ad", @@ -22001,6 +22015,7 @@ "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "00b39709921b989de390e8ada8213af0147227a3e2b9ca97ee1e67acefa42292", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "93944102a21691554dee313306319851564d508ecc852b096fe732d31c4c1fcc", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "93944102a21691554dee313306319851564d508ecc852b096fe732d31c4c1fcc", +"T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "93944102a21691554dee313306319851564d508ecc852b096fe732d31c4c1fcc", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "3ae1d573816a833a3fdf32e8e4b94c39de487f1cdb338e3263a5d6dd502e5e8c", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "94f1aefb7696d0c465e6464b1f8af9413144530d8225d797e216812a0c5c8106", "T3T1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "312ca83606acf63fea69c95130077ef2f7180c78d91199609d37c731603519b8", From 54441182eac5cf13ab0792ee7466ecaf867ea61a Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 1 Jul 2024 11:49:28 +0200 Subject: [PATCH 372/626] chore(common): set definition timestamp to the current signed definitions [no changelog] --- common/defs/ethereum/released-definitions-timestamp.txt | 2 +- core/src/apps/ethereum/definitions_constants.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/defs/ethereum/released-definitions-timestamp.txt b/common/defs/ethereum/released-definitions-timestamp.txt index 86f1208845..df18699a82 100644 --- a/common/defs/ethereum/released-definitions-timestamp.txt +++ b/common/defs/ethereum/released-definitions-timestamp.txt @@ -1 +1 @@ -2024-05-27T12:16:37+00:00 +2024-06-06T19:35:30+00:00 diff --git a/core/src/apps/ethereum/definitions_constants.py b/core/src/apps/ethereum/definitions_constants.py index 5357b19cdc..9dba840d42 100644 --- a/core/src/apps/ethereum/definitions_constants.py +++ b/core/src/apps/ethereum/definitions_constants.py @@ -9,7 +9,7 @@ b"\xb8\xd2\xb2\x1d\xe2\x71\x24\xf0\x51\x1f\x90\x3a\xe7\xe6\x0e\x07\x96\x18\x10\xa0\xb8\xf2\x8e\xa7\x55\xfa\x50\x36\x7a\x8a\x2b\x8b", ) -MIN_DATA_VERSION = 1716812197 +MIN_DATA_VERSION = 1717702530 FORMAT_VERSION = b"trzd1" if __debug__: From dd4671a5104952ef505d28d1f9e94d1484b4607a Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 1 Jul 2024 11:55:03 +0200 Subject: [PATCH 373/626] docs(core): changelog for 2.8.0 --- core/.changelog.d/+optiga.added | 1 - core/.changelog.d/+optiga.fixed | 1 - core/.changelog.d/+pin.changed | 1 - core/.changelog.d/3442.removed.1 | 1 - core/.changelog.d/3895.added | 1 - core/.changelog.d/3907.added | 1 - core/.changelog.d/3917.added | 1 - core/.changelog.d/3919.fixed | 1 - core/.changelog.d/3922.fixed | 1 - core/.changelog.d/3965.fixed | 1 - core/CHANGELOG.T2B1.md | 21 +++++++++++++++++++++ core/CHANGELOG.T2T1.md | 21 +++++++++++++++++++++ core/CHANGELOG.T3T1.md | 27 +++++++++++++++++++++++++++ core/CHANGELOG.md | 27 +++++++++++++++++++++++++++ 14 files changed, 96 insertions(+), 10 deletions(-) delete mode 100644 core/.changelog.d/+optiga.added delete mode 100644 core/.changelog.d/+optiga.fixed delete mode 100644 core/.changelog.d/+pin.changed delete mode 100644 core/.changelog.d/3442.removed.1 delete mode 100644 core/.changelog.d/3895.added delete mode 100644 core/.changelog.d/3907.added delete mode 100644 core/.changelog.d/3917.added delete mode 100644 core/.changelog.d/3919.fixed delete mode 100644 core/.changelog.d/3922.fixed delete mode 100644 core/.changelog.d/3965.fixed diff --git a/core/.changelog.d/+optiga.added b/core/.changelog.d/+optiga.added deleted file mode 100644 index 365be66461..0000000000 --- a/core/.changelog.d/+optiga.added +++ /dev/null @@ -1 +0,0 @@ -Expose value of the Optiga SEC counter in `Features` message. diff --git a/core/.changelog.d/+optiga.fixed b/core/.changelog.d/+optiga.fixed deleted file mode 100644 index 4c6800e516..0000000000 --- a/core/.changelog.d/+optiga.fixed +++ /dev/null @@ -1 +0,0 @@ -Increase Optiga read timeout to avoid spurious RSODs. diff --git a/core/.changelog.d/+pin.changed b/core/.changelog.d/+pin.changed deleted file mode 100644 index 9ef5242176..0000000000 --- a/core/.changelog.d/+pin.changed +++ /dev/null @@ -1 +0,0 @@ -Reworked PIN processing. diff --git a/core/.changelog.d/3442.removed.1 b/core/.changelog.d/3442.removed.1 deleted file mode 100644 index a72cca62db..0000000000 --- a/core/.changelog.d/3442.removed.1 +++ /dev/null @@ -1 +0,0 @@ -CoSi functionality diff --git a/core/.changelog.d/3895.added b/core/.changelog.d/3895.added deleted file mode 100644 index c1ba65f9e6..0000000000 --- a/core/.changelog.d/3895.added +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Animated device label on homescreen/lockscreen diff --git a/core/.changelog.d/3907.added b/core/.changelog.d/3907.added deleted file mode 100644 index 5cd8fd5119..0000000000 --- a/core/.changelog.d/3907.added +++ /dev/null @@ -1 +0,0 @@ -[T3T1]: improved change homescreen flow diff --git a/core/.changelog.d/3917.added b/core/.changelog.d/3917.added deleted file mode 100644 index 04c2c23324..0000000000 --- a/core/.changelog.d/3917.added +++ /dev/null @@ -1 +0,0 @@ -[T3T1] added word counter during wallet creation diff --git a/core/.changelog.d/3919.fixed b/core/.changelog.d/3919.fixed deleted file mode 100644 index 9bb06f0cdd..0000000000 --- a/core/.changelog.d/3919.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] fixed swipe back from address QR code screen diff --git a/core/.changelog.d/3922.fixed b/core/.changelog.d/3922.fixed deleted file mode 100644 index d79a37945b..0000000000 --- a/core/.changelog.d/3922.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Fixed device authenticity check diff --git a/core/.changelog.d/3965.fixed b/core/.changelog.d/3965.fixed deleted file mode 100644 index e0b567e4ee..0000000000 --- a/core/.changelog.d/3965.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Improve swipe behavior and animations diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index 3be8c153c5..69885296b0 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.8.0] (17th July 2024) + +### Added +- Expose value of the Optiga SEC counter in `Features` message. + +### Changed +- Reworked PIN processing. + +### Removed +- CoSi functionality. [#3442] + +### Fixed +- Increase Optiga read timeout to avoid spurious RSODs. + + ## [2.7.2] (14th June 2024) ### Fixed @@ -880,6 +895,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3424]: https://github.com/trezor/trezor-firmware/pull/3424 [#3434]: https://github.com/trezor/trezor-firmware/pull/3434 [#3440]: https://github.com/trezor/trezor-firmware/pull/3440 +[#3442]: https://github.com/trezor/trezor-firmware/pull/3442 [#3445]: https://github.com/trezor/trezor-firmware/pull/3445 [#3458]: https://github.com/trezor/trezor-firmware/pull/3458 [#3475]: https://github.com/trezor/trezor-firmware/pull/3475 @@ -891,8 +907,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3907]: https://github.com/trezor/trezor-firmware/pull/3907 [#3911]: https://github.com/trezor/trezor-firmware/pull/3911 [#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3917]: https://github.com/trezor/trezor-firmware/pull/3917 +[#3919]: https://github.com/trezor/trezor-firmware/pull/3919 [#3922]: https://github.com/trezor/trezor-firmware/pull/3922 [#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 +[#3965]: https://github.com/trezor/trezor-firmware/pull/3965 diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index 20482c0c4d..d2fb23733b 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.8.0] (17th July 2024) + +### Added +- Expose value of the Optiga SEC counter in `Features` message. + +### Changed +- Reworked PIN processing. + +### Removed +- CoSi functionality. [#3442] + +### Fixed +- Increase Optiga read timeout to avoid spurious RSODs. + + ## [2.7.2] (14th June 2024) ### Fixed @@ -879,6 +894,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3424]: https://github.com/trezor/trezor-firmware/pull/3424 [#3434]: https://github.com/trezor/trezor-firmware/pull/3434 [#3440]: https://github.com/trezor/trezor-firmware/pull/3440 +[#3442]: https://github.com/trezor/trezor-firmware/pull/3442 [#3445]: https://github.com/trezor/trezor-firmware/pull/3445 [#3458]: https://github.com/trezor/trezor-firmware/pull/3458 [#3475]: https://github.com/trezor/trezor-firmware/pull/3475 @@ -890,8 +906,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3907]: https://github.com/trezor/trezor-firmware/pull/3907 [#3911]: https://github.com/trezor/trezor-firmware/pull/3911 [#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3917]: https://github.com/trezor/trezor-firmware/pull/3917 +[#3919]: https://github.com/trezor/trezor-firmware/pull/3919 [#3922]: https://github.com/trezor/trezor-firmware/pull/3922 [#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 +[#3965]: https://github.com/trezor/trezor-firmware/pull/3965 diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md index 2a2607f0c8..5f018e3b1e 100644 --- a/core/CHANGELOG.T3T1.md +++ b/core/CHANGELOG.T3T1.md @@ -4,6 +4,27 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.8.0] (17th July 2024) + +### Added +- Animated device label on homescreen/lockscreen. [#3895] +- Improved change homescreen flow. [#3907] +- Added word counter during wallet creation. [#3917] +- Expose value of the Optiga SEC counter in `Features` message. + +### Changed +- Reworked PIN processing. + +### Removed +- CoSi functionality. [#3442] + +### Fixed +- Fixed swipe back from address QR code screen. [#3919] +- Fixed device authenticity check. [#3922] +- Improve swipe behavior and animations. [#3965] +- Increase Optiga read timeout to avoid spurious RSODs. + + ## [2.7.2] (14th June 2024) ### Fixed @@ -875,6 +896,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3424]: https://github.com/trezor/trezor-firmware/pull/3424 [#3434]: https://github.com/trezor/trezor-firmware/pull/3434 [#3440]: https://github.com/trezor/trezor-firmware/pull/3440 +[#3442]: https://github.com/trezor/trezor-firmware/pull/3442 [#3445]: https://github.com/trezor/trezor-firmware/pull/3445 [#3458]: https://github.com/trezor/trezor-firmware/pull/3458 [#3475]: https://github.com/trezor/trezor-firmware/pull/3475 @@ -886,8 +908,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3907]: https://github.com/trezor/trezor-firmware/pull/3907 [#3911]: https://github.com/trezor/trezor-firmware/pull/3911 [#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3917]: https://github.com/trezor/trezor-firmware/pull/3917 +[#3919]: https://github.com/trezor/trezor-firmware/pull/3919 [#3922]: https://github.com/trezor/trezor-firmware/pull/3922 [#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 +[#3965]: https://github.com/trezor/trezor-firmware/pull/3965 diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index c3b10400e4..70a39aaded 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -4,6 +4,27 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.8.0] (17th July 2024) + +### Added +- [T3T1] Animated device label on homescreen/lockscreen. [#3895] +- [T3T1] Improved change homescreen flow. [#3907] +- [T3T1] Added word counter during wallet creation. [#3917] +- Expose value of the Optiga SEC counter in `Features` message. + +### Changed +- Reworked PIN processing. + +### Removed +- CoSi functionality. [#3442] + +### Fixed +- [T3T1] Fixed swipe back from address QR code screen. [#3919] +- [T3T1] Fixed device authenticity check. [#3922] +- [T3T1] Improve swipe behavior and animations. [#3965] +- Increase Optiga read timeout to avoid spurious RSODs. + + ## [2.7.2] (14th June 2024) ### Fixed @@ -892,6 +913,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3424]: https://github.com/trezor/trezor-firmware/pull/3424 [#3434]: https://github.com/trezor/trezor-firmware/pull/3434 [#3440]: https://github.com/trezor/trezor-firmware/pull/3440 +[#3442]: https://github.com/trezor/trezor-firmware/pull/3442 [#3445]: https://github.com/trezor/trezor-firmware/pull/3445 [#3458]: https://github.com/trezor/trezor-firmware/pull/3458 [#3475]: https://github.com/trezor/trezor-firmware/pull/3475 @@ -903,8 +925,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3907]: https://github.com/trezor/trezor-firmware/pull/3907 [#3911]: https://github.com/trezor/trezor-firmware/pull/3911 [#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3917]: https://github.com/trezor/trezor-firmware/pull/3917 +[#3919]: https://github.com/trezor/trezor-firmware/pull/3919 [#3922]: https://github.com/trezor/trezor-firmware/pull/3922 [#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 +[#3965]: https://github.com/trezor/trezor-firmware/pull/3965 From 99c3d35e075e53e989f99e19184a686b1fc54457 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 1 Jul 2024 12:00:46 +0200 Subject: [PATCH 374/626] chore(core): bump version to 2.8.1 [no changelog] --- core/embed/firmware/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/firmware/version.h b/core/embed/firmware/version.h index 2d2dcda7fe..4a3ed90d59 100644 --- a/core/embed/firmware/version.h +++ b/core/embed/firmware/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 8 -#define VERSION_PATCH 0 +#define VERSION_PATCH 1 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 2 From fc09379877a76b94f443e479e49d5824846424ce Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Wed, 26 Jun 2024 10:09:38 +0200 Subject: [PATCH 375/626] refactor(core): Clean up Optiga error handling. [no changelog] --- .../modtrezorcrypto/modtrezorcrypto-optiga.h | 9 +- core/embed/trezorhal/optiga.h | 42 +- core/embed/trezorhal/optiga/optiga.c | 406 +++++++++--------- core/embed/trezorhal/optiga_commands.h | 34 ++ core/embed/trezorhal/unix/optiga.c | 35 +- storage/storage.c | 19 +- 6 files changed, 304 insertions(+), 241 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h index 44a713879d..2a56e2bde7 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h @@ -90,11 +90,12 @@ STATIC mp_obj_t mod_trezorcrypto_optiga_sign(mp_obj_t key_index, vstr_t sig = {0}; vstr_init_len(&sig, MAX_DER_SIGNATURE_SIZE); size_t sig_size = 0; - int ret = optiga_sign(idx, (const uint8_t *)dig.buf, dig.len, - ((uint8_t *)sig.buf), sig.alloc, &sig_size); - if (ret != 0) { + optiga_sign_result ret = + optiga_sign(idx, (const uint8_t *)dig.buf, dig.len, ((uint8_t *)sig.buf), + sig.alloc, &sig_size); + if (ret != OPTIGA_SIGN_SUCCESS) { vstr_clear(&sig); - if (ret == OPTIGA_ERR_ACCESS_COND_NOT_SAT) { + if (ret == OPTIGA_SIGN_INACCESSIBLE) { mp_raise_msg(&mp_type_SigningInaccessible, "Signing inaccessible."); } else { mp_raise_msg(&mp_type_OptigaError, "Signing failed."); diff --git a/core/embed/trezorhal/optiga.h b/core/embed/trezorhal/optiga.h index 05ff3c8af4..9ae082bbfb 100644 --- a/core/embed/trezorhal/optiga.h +++ b/core/embed/trezorhal/optiga.h @@ -28,16 +28,20 @@ #define OPTIGA_DEVICE_CERT_INDEX 1 #define OPTIGA_DEVICE_ECC_KEY_INDEX 0 -#define OPTIGA_COMMAND_ERROR_OFFSET 0x100 -// Error code 0x07: Access conditions not satisfied -#define OPTIGA_ERR_ACCESS_COND_NOT_SAT (OPTIGA_COMMAND_ERROR_OFFSET + 0x07) +typedef enum _optiga_pin_result { + OPTIGA_PIN_SUCCESS = 0, // The operation completed successfully. + OPTIGA_PIN_INVALID, // The PIN is invalid. + OPTIGA_PIN_COUNTER_EXCEEDED, // The PIN try counter limit was exceeded. + OPTIGA_PIN_ERROR, // Optiga processing or communication error. +} optiga_pin_result; -// Error code 0x0E: Counter threshold limit exceeded -#define OPTIGA_ERR_COUNTER_EXCEEDED (OPTIGA_COMMAND_ERROR_OFFSET + 0x0E) - -// Error code 0x2F: Authorization failure -#define OPTIGA_ERR_AUTH_FAIL (OPTIGA_COMMAND_ERROR_OFFSET + 0x2F) +typedef enum _optiga_sign_result { + OPTIGA_SIGN_SUCCESS = 0, // The operation completed successfully. + OPTIGA_SIGN_INACCESSIBLE, // The signing key is inaccessible. + OPTIGA_SIGN_ERROR, // Invalid parameters or Optiga processing or + // communication error. +} optiga_sign_result; // Size of secrets used in PIN processing, e.g. salted PIN, master secret etc. #define OPTIGA_PIN_SECRET_SIZE 32 @@ -50,9 +54,9 @@ typedef secbool (*OPTIGA_UI_PROGRESS)(uint32_t elapsed_ms); -int __wur optiga_sign(uint8_t index, const uint8_t *digest, size_t digest_size, - uint8_t *signature, size_t max_sig_size, - size_t *sig_size); +optiga_sign_result __wur optiga_sign(uint8_t index, const uint8_t *digest, + size_t digest_size, uint8_t *signature, + size_t max_sig_size, size_t *sig_size); bool __wur optiga_cert_size(uint8_t index, size_t *cert_size); @@ -63,15 +67,17 @@ bool __wur optiga_read_sec(uint8_t *sec); bool __wur optiga_random_buffer(uint8_t *dest, size_t size); -int __wur optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]); +bool __wur optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]); -int __wur optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]); +optiga_pin_result __wur +optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]); -int __wur optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]); +optiga_pin_result __wur +optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, + const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], + uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]); int __wur optiga_pin_get_fails_v4(uint32_t *ctr); diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index 0008ee4c92..0cf61ebb0d 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -89,34 +89,36 @@ static const optiga_metadata_item ACCESS_PIN_HMAC_CTR = // Size of the CMAC/HMAC prefix returned by Optiga. #define ENCRYPT_SYM_PREFIX_SIZE 3 -int optiga_sign(uint8_t index, const uint8_t *digest, size_t digest_size, - uint8_t *signature, size_t max_sig_size, size_t *sig_size) { +optiga_sign_result optiga_sign(uint8_t index, const uint8_t *digest, + size_t digest_size, uint8_t *signature, + size_t max_sig_size, size_t *sig_size) { if (index >= OPTIGA_ECC_KEY_COUNT) { - return OPTIGA_ERR_PARAM; + return OPTIGA_SIGN_ERROR; } - optiga_result ret = + optiga_result res = optiga_calc_sign(OPTIGA_OID_ECC_KEY + index, digest, digest_size, &signature[2], max_sig_size - 2, sig_size); - if (ret == OPTIGA_ERR_CMD) { + if (res != OPTIGA_SUCCESS) { uint8_t error_code = 0; - (void)optiga_get_error_code(&error_code); - return error_code + OPTIGA_COMMAND_ERROR_OFFSET; - } - - if (ret != OPTIGA_SUCCESS) { - return ret; + if (res == OPTIGA_ERR_CMD && + optiga_get_error_code(&error_code) == OPTIGA_SUCCESS && + error_code == OPTIGA_ERR_CODE_ACCESS_COND) { + return OPTIGA_SIGN_INACCESSIBLE; + } else { + return OPTIGA_SIGN_ERROR; + } } // Add sequence tag and length. if (*sig_size >= 0x80) { // Length not supported. - return OPTIGA_ERR_SIZE; + return OPTIGA_SIGN_ERROR; } signature[0] = 0x30; signature[1] = *sig_size; *sig_size += 2; - return OPTIGA_SUCCESS; + return OPTIGA_SIGN_SUCCESS; } bool optiga_cert_size(uint8_t index, size_t *cert_size) { @@ -188,28 +190,24 @@ bool optiga_random_buffer(uint8_t *dest, size_t size) { static bool read_metadata(uint16_t oid, optiga_metadata *metadata) { static uint8_t serialized[OPTIGA_MAX_METADATA_SIZE] = {0}; size_t size = 0; - optiga_result ret = - optiga_get_data_object(oid, true, serialized, sizeof(serialized), &size); - if (OPTIGA_SUCCESS != ret) { + if (optiga_get_data_object(oid, true, serialized, sizeof(serialized), + &size) != OPTIGA_SUCCESS) { return false; } - ret = optiga_parse_metadata(serialized, size, metadata); - return OPTIGA_SUCCESS == ret; + return optiga_parse_metadata(serialized, size, metadata) == OPTIGA_SUCCESS; } static bool write_metadata(uint16_t oid, const optiga_metadata *metadata) { uint8_t serialized[OPTIGA_MAX_METADATA_SIZE] = {0}; size_t size = 0; - optiga_result ret = optiga_serialize_metadata(metadata, serialized, - sizeof(serialized), &size); - if (OPTIGA_SUCCESS != ret) { + if (optiga_serialize_metadata(metadata, serialized, sizeof(serialized), + &size) != OPTIGA_SUCCESS) { return false; } - ret = optiga_set_data_object(oid, true, serialized, size); - return OPTIGA_SUCCESS == ret; + return optiga_set_data_object(oid, true, serialized, size) == OPTIGA_SUCCESS; } bool optiga_set_metadata(uint16_t oid, const optiga_metadata *metadata) { @@ -353,28 +351,22 @@ static bool optiga_pin_init_metadata(void) { return true; } -static int optiga_pin_init_stretch(void) { +static bool optiga_pin_init_stretch(void) { // Generate a new key in OID_PIN_CMAC. - optiga_result res = - optiga_gen_sym_key(OPTIGA_AES_256, OPTIGA_KEY_USAGE_ENC, OID_PIN_CMAC); - if (res != OPTIGA_SUCCESS) { - return res; + if (optiga_gen_sym_key(OPTIGA_AES_256, OPTIGA_KEY_USAGE_ENC, OID_PIN_CMAC) != + OPTIGA_SUCCESS) { + return false; } // Generate a new key in OID_PIN_ECDH. uint8_t public_key[6 + 65] = {0}; size_t size = 0; - res = - optiga_gen_key_pair(OPTIGA_CURVE_P256, OPTIGA_KEY_USAGE_KEYAGREE, - OID_PIN_ECDH, public_key, sizeof(public_key), &size); - if (res != OPTIGA_SUCCESS) { - return res; - } - - return OPTIGA_SUCCESS; + return optiga_gen_key_pair(OPTIGA_CURVE_P256, OPTIGA_KEY_USAGE_KEYAGREE, + OID_PIN_ECDH, public_key, sizeof(public_key), + &size) == OPTIGA_SUCCESS; } -static int optiga_pin_stretch_common( +static bool optiga_pin_stretch_common( OPTIGA_UI_PROGRESS ui_progress, HMAC_SHA256_CTX *ctx, const uint8_t input[OPTIGA_PIN_SECRET_SIZE], bool version4) { // Implements the functionality that is common to @@ -383,26 +375,25 @@ static int optiga_pin_stretch_common( uint8_t buffer[ENCRYPT_SYM_PREFIX_SIZE + OPTIGA_PIN_SECRET_SIZE] = {0}; size_t size = 0; + bool ret = true; // Combine intermediate result with OID_PIN_CMAC. - optiga_result res = - optiga_encrypt_sym(OPTIGA_SYM_MODE_CMAC, OID_PIN_CMAC, input, - OPTIGA_PIN_SECRET_SIZE, buffer, sizeof(buffer), &size); - if (res != OPTIGA_SUCCESS) { - memzero(buffer, sizeof(buffer)); - return res; + if (optiga_encrypt_sym(OPTIGA_SYM_MODE_CMAC, OID_PIN_CMAC, input, + OPTIGA_PIN_SECRET_SIZE, buffer, sizeof(buffer), + &size) != OPTIGA_SUCCESS) { + ret = false; + goto end; } hmac_sha256_Update(ctx, buffer, size); if (version4) { // Combine intermediate result with OID_PIN_HMAC - res = optiga_encrypt_sym(OPTIGA_SYM_MODE_HMAC_SHA256, OID_PIN_HMAC_V4, - input, OPTIGA_PIN_SECRET_SIZE, buffer, - sizeof(buffer), &size); - if (res != OPTIGA_SUCCESS) { - memzero(buffer, sizeof(buffer)); - return res; + if (optiga_encrypt_sym(OPTIGA_SYM_MODE_HMAC_SHA256, OID_PIN_HMAC_V4, input, + OPTIGA_PIN_SECRET_SIZE, buffer, sizeof(buffer), + &size) != OPTIGA_SUCCESS) { + ret = false; + goto end; } hmac_sha256_Update(ctx, buffer, size); @@ -411,25 +402,28 @@ static int optiga_pin_stretch_common( // Combine intermediate result with OID_PIN_ECDH uint8_t encoded_point[BIT_STRING_HEADER_SIZE + 65] = {0x03, 0x42, 0x00}; if (!hash_to_curve_optiga(input, &encoded_point[BIT_STRING_HEADER_SIZE])) { - memzero(buffer, sizeof(buffer)); - return -1; + ret = false; + goto end; } - res = optiga_calc_ssec(OPTIGA_CURVE_P256, OID_PIN_ECDH, encoded_point, - sizeof(encoded_point), buffer, sizeof(buffer), &size); - memzero(encoded_point, sizeof(encoded_point)); - if (res != OPTIGA_SUCCESS) { - memzero(buffer, sizeof(buffer)); - return res; + + if (optiga_calc_ssec(OPTIGA_CURVE_P256, OID_PIN_ECDH, encoded_point, + sizeof(encoded_point), buffer, sizeof(buffer), + &size) != OPTIGA_SUCCESS) { + ret = false; + goto end; } ui_progress(250); hmac_sha256_Update(ctx, buffer, size); + +end: + memzero(encoded_point, sizeof(encoded_point)); memzero(buffer, sizeof(buffer)); - return OPTIGA_SUCCESS; + return ret; } -static int optiga_pin_stretch_secret_v4( +static bool optiga_pin_stretch_secret_v4( OPTIGA_UI_PROGRESS ui_progress, uint8_t secret[OPTIGA_PIN_SECRET_SIZE]) { // Legacy PIN verification method used in storage versions 3 and 4. @@ -451,19 +445,16 @@ static int optiga_pin_stretch_secret_v4( HMAC_SHA256_CTX ctx = {0}; hmac_sha256_Init(&ctx, secret, OPTIGA_PIN_SECRET_SIZE); - optiga_result res = - optiga_pin_stretch_common(ui_progress, &ctx, secret, true); - if (res != OPTIGA_SUCCESS) { - memzero(&ctx, sizeof(ctx)); - return res; + bool ret = optiga_pin_stretch_common(ui_progress, &ctx, secret, true); + if (ret) { + hmac_sha256_Final(&ctx, secret); } - hmac_sha256_Final(&ctx, secret); memzero(&ctx, sizeof(ctx)); - return OPTIGA_SUCCESS; + return ret; } -static int optiga_pin_stretch_cmac_ecdh( +static bool optiga_pin_stretch_cmac_ecdh( OPTIGA_UI_PROGRESS ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { // This step hardens the PIN verification process in case an attacker is able @@ -483,6 +474,7 @@ static int optiga_pin_stretch_cmac_ecdh( // ecdh_out = ECDH(OID_PIN_ECDH, digest) // stretched_pin = HMAC-SHA256(stretched_pin, cmac_out || ecdh_out) + bool ret = true; uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; HMAC_SHA256_CTX ctx = {0}; for (int i = 0; i < PIN_STRETCH_ITERATIONS; ++i) { @@ -493,32 +485,25 @@ static int optiga_pin_stretch_cmac_ecdh( hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); hmac_sha256_Init(&ctx, stretched_pin, OPTIGA_PIN_SECRET_SIZE); - optiga_result res = - optiga_pin_stretch_common(ui_progress, &ctx, digest, false); - if (res != OPTIGA_SUCCESS) { - memzero(digest, sizeof(digest)); - memzero(&ctx, sizeof(ctx)); - return res; + if (!optiga_pin_stretch_common(ui_progress, &ctx, digest, false)) { + ret = false; + goto end; } hmac_sha256_Final(&ctx, stretched_pin); } +end: memzero(digest, sizeof(digest)); memzero(&ctx, sizeof(ctx)); - return OPTIGA_SUCCESS; + return ret; } -int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { - int res = OPTIGA_SUCCESS; - if (!optiga_pin_init_metadata()) { - res = -1; - goto end; - } - - res = optiga_pin_init_stretch(); - if (res != OPTIGA_SUCCESS) { +bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + bool ret = true; + if (!optiga_pin_init_metadata() || !optiga_pin_init_stretch()) { + ret = false; goto end; } @@ -528,38 +513,38 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, // ensures that if an attacker extracts the value of OID_STRETCHED_PIN or // OID_PIN_SECRET, then it cannot be used to conduct an offline brute-force // search for the PIN. - res = optiga_pin_stretch_cmac_ecdh(ui_progress, stretched_pin); - if (res != OPTIGA_SUCCESS) { + if (!optiga_pin_stretch_cmac_ecdh(ui_progress, stretched_pin)) { + ret = false; goto end; } // Generate and store the counter-protected PIN secret. uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; - res = optiga_get_random(pin_secret, sizeof(pin_secret)); - if (res != OPTIGA_SUCCESS) { + if (optiga_get_random(pin_secret, sizeof(pin_secret)) != OPTIGA_SUCCESS) { + ret = false; goto end; } random_xor(pin_secret, sizeof(pin_secret)); - res = optiga_set_data_object(OID_PIN_SECRET, false, pin_secret, - sizeof(pin_secret)); - if (res != OPTIGA_SUCCESS) { + if (optiga_set_data_object(OID_PIN_SECRET, false, pin_secret, + sizeof(pin_secret)) != OPTIGA_SUCCESS) { + ret = false; goto end; } // Generate the key for the HMAC-SHA256 PIN stretching step. uint8_t pin_hmac[OPTIGA_PIN_SECRET_SIZE] = {0}; - res = optiga_get_random(pin_hmac, sizeof(pin_hmac)); - if (res != OPTIGA_SUCCESS) { + if (optiga_get_random(pin_hmac, sizeof(pin_hmac)) != OPTIGA_SUCCESS) { + ret = false; goto end; } random_xor(pin_hmac, sizeof(pin_hmac)); // Authorise using OID_PIN_SECRET so that we can write to OID_STRETCHED_PIN // and OID_STRETCHED_PIN_CTR. - res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, - pin_secret, sizeof(pin_secret)); - if (res != OPTIGA_SUCCESS) { + if (optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, pin_secret, + sizeof(pin_secret)) != OPTIGA_SUCCESS) { + ret = false; goto end; } @@ -587,17 +572,17 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, NULL, 0, digest); // Store the digest of the stretched PIN in OID_STRETCHED_PIN. - res = - optiga_set_data_object(OID_STRETCHED_PIN, false, digest, sizeof(digest)); - if (res != OPTIGA_SUCCESS) { + if (optiga_set_data_object(OID_STRETCHED_PIN, false, digest, + sizeof(digest)) != OPTIGA_SUCCESS) { + ret = false; goto end; } // Initialize the counter which limits the guesses at OID_STRETCHED_PIN so // that we can authorise using OID_STRETCHED_PIN. - res = optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, - sizeof(COUNTER_RESET)); - if (res != OPTIGA_SUCCESS) { + if (optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)) != OPTIGA_SUCCESS) { + ret = false; goto end; } @@ -605,31 +590,31 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, // Authorise using OID_STRETCHED_PIN so that we can write to OID_PIN_HMAC and // OID_PIN_HMAC_CTR. - res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, digest, - sizeof(digest)); - if (res != OPTIGA_SUCCESS) { + if (optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, digest, + sizeof(digest)) != OPTIGA_SUCCESS) { + ret = false; goto end; } // Initialize the key for HMAC-SHA256 PIN stretching. - res = optiga_set_data_object(OID_PIN_HMAC, false, pin_hmac, sizeof(pin_hmac)); - if (res != OPTIGA_SUCCESS) { + if (optiga_set_data_object(OID_PIN_HMAC, false, pin_hmac, sizeof(pin_hmac)) != + OPTIGA_SUCCESS) { + ret = false; goto end; } // Initialize the counter which limits the guesses at OID_STRETCHED_PIN again, // since we just depleted one attempt. - res = optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, - sizeof(COUNTER_RESET)); - optiga_clear_auto_state(OID_PIN_SECRET); - if (res != OPTIGA_SUCCESS) { + if (optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)) != OPTIGA_SUCCESS) { + ret = false; goto end; } // Initialize the PIN counter which limits the use of OID_PIN_HMAC. - res = optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, - sizeof(COUNTER_RESET)); - if (res != OPTIGA_SUCCESS) { + if (optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)) != OPTIGA_SUCCESS) { + ret = false; goto end; } @@ -642,9 +627,6 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, // integrated into the device in the first place. hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, pin_secret, sizeof(pin_secret), stretched_pin); - if (res != OPTIGA_SUCCESS) { - goto end; - } end: memzero(hmac_buffer, sizeof(hmac_buffer)); @@ -653,60 +635,69 @@ int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, memzero(digest, sizeof(digest)); optiga_clear_auto_state(OID_PIN_SECRET); optiga_clear_auto_state(OID_STRETCHED_PIN); - return res; + return ret; } -int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { +optiga_pin_result optiga_pin_verify_v4( + OPTIGA_UI_PROGRESS ui_progress, + const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], + uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { // Legacy PIN verification method used in storage version 3 and 4. + optiga_pin_result ret = OPTIGA_PIN_SUCCESS; + // Process the PIN-derived secret using a one-way function before sending it // to the Optiga. uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE] = {0}; hmac_sha256(pin_secret, OPTIGA_PIN_SECRET_SIZE, NULL, 0, stretched_pin); // Combine the result with stretching secrets from the Optiga. - optiga_result res = optiga_pin_stretch_secret_v4(ui_progress, stretched_pin); - if (res != OPTIGA_SUCCESS) { - memzero(stretched_pin, sizeof(stretched_pin)); - return res; + if (!optiga_pin_stretch_secret_v4(ui_progress, stretched_pin)) { + ret = OPTIGA_PIN_ERROR; + goto end; } // Authorise using OID_STRETCHED_PIN so that we can read from OID_PIN_SECRET. - res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, - stretched_pin, sizeof(stretched_pin)); - memzero(stretched_pin, sizeof(stretched_pin)); - if (res == OPTIGA_ERR_CMD) { + optiga_result res = + optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, + stretched_pin, sizeof(stretched_pin)); + if (res != OPTIGA_SUCCESS) { uint8_t error_code = 0; - (void)optiga_get_error_code(&error_code); - return error_code + OPTIGA_COMMAND_ERROR_OFFSET; - } + if (res != OPTIGA_ERR_CMD || + optiga_get_error_code(&error_code) != OPTIGA_SUCCESS) { + ret = OPTIGA_PIN_ERROR; + goto end; + } - if (res != OPTIGA_SUCCESS) { - return res; + switch (error_code) { + case OPTIGA_ERR_CODE_CTR_LIMIT: + ret = OPTIGA_PIN_COUNTER_EXCEEDED; + break; + case OPTIGA_ERR_CODE_AUTH_FAIL: + ret = OPTIGA_PIN_INVALID; + break; + default: + ret = OPTIGA_PIN_ERROR; + } + goto end; } // Read the master secret from OID_PIN_SECRET. size_t size = 0; - res = optiga_get_data_object(OID_PIN_SECRET, false, out_secret, - OPTIGA_PIN_SECRET_SIZE, &size); - optiga_clear_auto_state(OID_STRETCHED_PIN); - if (res != OPTIGA_SUCCESS) { - return res; - } - - if (size != OPTIGA_PIN_SECRET_SIZE) { - return OPTIGA_ERR_SIZE; + if (optiga_get_data_object(OID_PIN_SECRET, false, out_secret, + OPTIGA_PIN_SECRET_SIZE, &size) != OPTIGA_SUCCESS || + size != OPTIGA_PIN_SECRET_SIZE) { + ret = OPTIGA_PIN_ERROR; + goto end; } ui_progress(200); // Authorise using OID_PIN_SECRET so that we can write to OID_PIN_COUNTER. - res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, - out_secret, OPTIGA_PIN_SECRET_SIZE); - if (res != OPTIGA_SUCCESS) { - return res; + if (optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, out_secret, + OPTIGA_PIN_SECRET_SIZE) != OPTIGA_SUCCESS) { + ret = OPTIGA_PIN_ERROR; + goto end; } ui_progress(200); @@ -715,20 +706,26 @@ int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, // stretching secrets from the Optiga. hmac_sha256(pin_secret, OPTIGA_PIN_SECRET_SIZE, out_secret, OPTIGA_PIN_SECRET_SIZE, out_secret); - res = optiga_pin_stretch_secret_v4(ui_progress, out_secret); - if (res != OPTIGA_SUCCESS) { - return res; + if (!optiga_pin_stretch_secret_v4(ui_progress, out_secret)) { + ret = OPTIGA_PIN_ERROR; + goto end; } // Combine the stretched master secret with the PIN-derived secret to derive // the output secret. hmac_sha256(pin_secret, OPTIGA_PIN_SECRET_SIZE, out_secret, OPTIGA_PIN_SECRET_SIZE, out_secret); - return OPTIGA_SUCCESS; + +end: + memzero(stretched_pin, sizeof(stretched_pin)); + optiga_clear_auto_state(OID_STRETCHED_PIN); + return ret; } -static int optiga_pin_stretch_hmac( +static optiga_pin_result optiga_pin_stretch_hmac( uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + optiga_pin_result ret = OPTIGA_PIN_SUCCESS; + // Process the stretched PIN using a one-way function before sending it to the // Optiga. uint8_t digest[OPTIGA_PIN_SECRET_SIZE] = {0}; @@ -740,36 +737,42 @@ static int optiga_pin_stretch_hmac( optiga_result res = optiga_encrypt_sym( OPTIGA_SYM_MODE_HMAC_SHA256, OID_PIN_HMAC, digest, sizeof(digest), hmac_buffer, sizeof(hmac_buffer), &size); - memzero(digest, sizeof(digest)); if (res != OPTIGA_SUCCESS) { uint8_t error_code = 0; - (void)optiga_get_error_code(&error_code); - if (error_code + OPTIGA_COMMAND_ERROR_OFFSET == - OPTIGA_ERR_ACCESS_COND_NOT_SAT) { - return OPTIGA_ERR_COUNTER_EXCEEDED; + if (res == OPTIGA_ERR_CMD && + optiga_get_error_code(&error_code) == OPTIGA_SUCCESS && + error_code == OPTIGA_ERR_CODE_ACCESS_COND) { + ret = OPTIGA_PIN_COUNTER_EXCEEDED; } else { - return error_code + OPTIGA_COMMAND_ERROR_OFFSET; + ret = OPTIGA_PIN_ERROR; } + goto end; } // Stretch the PIN with the result. hmac_sha256(stretched_pin, OPTIGA_PIN_SECRET_SIZE, hmac_buffer, size, stretched_pin); + +end: + memzero(digest, sizeof(digest)); memzero(hmac_buffer, sizeof(hmac_buffer)); - return OPTIGA_SUCCESS; + return ret; } -int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { +optiga_pin_result optiga_pin_verify( + OPTIGA_UI_PROGRESS ui_progress, + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + optiga_pin_result ret = OPTIGA_PIN_SUCCESS; + // Stretch the PIN more with stretching secrets from the Optiga. - optiga_result res = optiga_pin_stretch_cmac_ecdh(ui_progress, stretched_pin); - if (res != OPTIGA_SUCCESS) { - return res; + if (!optiga_pin_stretch_cmac_ecdh(ui_progress, stretched_pin)) { + ret = OPTIGA_PIN_ERROR; + goto end; } - res = optiga_pin_stretch_hmac(stretched_pin); - if (res != OPTIGA_SUCCESS) { - return res; + ret = optiga_pin_stretch_hmac(stretched_pin); + if (ret != OPTIGA_PIN_SUCCESS) { + goto end; } // Process the stretched PIN using a one-way function before sending it to the @@ -779,33 +782,45 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, // Authorise using OID_STRETCHED_PIN so that we can read from OID_PIN_SECRET // and reset OID_PIN_HMAC_CTR. - res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, digest, - sizeof(digest)); - memzero(digest, sizeof(digest)); - if (res == OPTIGA_ERR_CMD) { + optiga_result res = optiga_set_auto_state( + OPTIGA_OID_SESSION_CTX, OID_STRETCHED_PIN, digest, sizeof(digest)); + if (res != OPTIGA_SUCCESS) { uint8_t error_code = 0; - (void)optiga_get_error_code(&error_code); - return error_code + OPTIGA_COMMAND_ERROR_OFFSET; + if (res != OPTIGA_ERR_CMD || + optiga_get_error_code(&error_code) != OPTIGA_SUCCESS) { + ret = OPTIGA_PIN_ERROR; + goto end; + } + + switch (error_code) { + case OPTIGA_ERR_CODE_CTR_LIMIT: + ret = OPTIGA_PIN_COUNTER_EXCEEDED; + break; + case OPTIGA_ERR_CODE_AUTH_FAIL: + ret = OPTIGA_PIN_INVALID; + break; + default: + ret = OPTIGA_PIN_ERROR; + } + goto end; } ui_progress(200); // Reset the counter which limits the use of OID_PIN_HMAC. - res = optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, - sizeof(COUNTER_RESET)); - if (res != OPTIGA_SUCCESS) { - optiga_clear_auto_state(OID_STRETCHED_PIN); - return res; + if (optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)) != OPTIGA_SUCCESS) { + ret = OPTIGA_PIN_ERROR; + goto end; } // Read the counter-protected PIN secret from OID_PIN_SECRET. uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; size_t size = 0; - res = optiga_get_data_object(OID_PIN_SECRET, false, pin_secret, - OPTIGA_PIN_SECRET_SIZE, &size); - optiga_clear_auto_state(OID_STRETCHED_PIN); - if (res != OPTIGA_SUCCESS) { - return res; + if (optiga_get_data_object(OID_PIN_SECRET, false, pin_secret, + OPTIGA_PIN_SECRET_SIZE, &size) != OPTIGA_SUCCESS) { + ret = OPTIGA_PIN_ERROR; + goto end; } // Stretch the PIN more with the counter-protected PIN secret. @@ -813,24 +828,27 @@ int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, stretched_pin); // Authorise using OID_PIN_SECRET so that we can reset OID_STRETCHED_PIN_CTR. - res = optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, - pin_secret, sizeof(pin_secret)); - memzero(pin_secret, sizeof(pin_secret)); - if (res != OPTIGA_SUCCESS) { - return res; + if (optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, pin_secret, + sizeof(pin_secret)) != OPTIGA_SUCCESS) { + ret = OPTIGA_PIN_ERROR; + goto end; } // Reset the counter which limits the guesses at OID_STRETCHED_PIN. - res = optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, - sizeof(COUNTER_RESET)); - optiga_clear_auto_state(OID_PIN_SECRET); - if (res != OPTIGA_SUCCESS) { - return res; + if (optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, + sizeof(COUNTER_RESET)) != OPTIGA_SUCCESS) { + ret = OPTIGA_PIN_ERROR; + goto end; } ui_progress(200); - return OPTIGA_SUCCESS; +end: + memzero(pin_secret, sizeof(pin_secret)); + memzero(digest, sizeof(digest)); + optiga_clear_auto_state(OID_STRETCHED_PIN); + optiga_clear_auto_state(OID_PIN_SECRET); + return ret; } static int optiga_get_counter(uint16_t oid, uint32_t *ctr) { diff --git a/core/embed/trezorhal/optiga_commands.h b/core/embed/trezorhal/optiga_commands.h index 57a5bb1742..61cd7d949f 100644 --- a/core/embed/trezorhal/optiga_commands.h +++ b/core/embed/trezorhal/optiga_commands.h @@ -113,6 +113,40 @@ typedef enum { OPTIGA_LCS_TE = 0x0f, // Termination state. } optiga_lcs; +// Error codes returned by optiga_get_error_code(). +typedef enum { + OPTIGA_ERR_CODE_NONE = 0x00, // No Error. + OPTIGA_ERR_CODE_INVAL_OID = 0x01, // Invalid OID. + OPTIGA_ERR_CODE_INVAL_CMD_PARAM = 0x03, // Invalid param field in command. + OPTIGA_ERR_CODE_INVAL_CMD_LEN = 0x04, // Invalid length field in command. + OPTIGA_ERR_CODE_INVAL_CMD_DATA = 0x05, // Invalid parameter in command data. + OPTIGA_ERR_CODE_PROCESS = 0x06, // Internal process error. + OPTIGA_ERR_CODE_ACCESS_COND = 0x07, // Access conditions not satisfied. + OPTIGA_ERR_CODE_OBJ_BOUNDARY = 0x08, // Data object boundary exceeded. + OPTIGA_ERR_CODE_META_TRUNC = 0x09, // Metadata truncation error. + OPTIGA_ERR_CODE_INVAL_CMD_FIELD = 0x0A, // Invalid command field. + OPTIGA_ERR_CODE_CMD_SEQ = 0x0B, // Command out of sequence. + OPTIGA_ERR_CODE_CMD_UNAVAIL = 0x0C, // Command not available. + OPTIGA_ERR_CODE_MEMORY = 0x0D, // Insufficient memory to process the + // command. + OPTIGA_ERR_CODE_CTR_LIMIT = 0x0E, // Counter threshold limit exceeded. + OPTIGA_ERR_CODE_INVAL_MANIFEST = 0x0F, // Invalid manifest. + OPTIGA_ERR_CODE_PAYLOAD_VER = 0x10, // Wrong payload version. + OPTIGA_ERR_CODE_INVAL_OBJ_META = 0x11, // Invalid data object metadata. + OPTIGA_ERR_CODE_UNSUP_EXT_ID = 0x24, // Unsupported key usage, extension + // or algorithm identifier. + OPTIGA_ERR_CODE_UNSUP_PARAM = 0x25, // Unsupported parameters in + // handshake or command APDU InData. + OPTIGA_ERR_CODE_INVAL_CERT = 0x29, // Invalid certificate format or + // signature. + OPTIGA_ERR_CODE_UNSUP_CERT = 0x2A, // Unsupported certificate. + OPTIGA_ERR_CODE_SIG_FAIL = 0x2C, // Signature verification failure. + OPTIGA_ERR_CODE_INT_FAIL = 0x2D, // Message integrity validation failed + // (e.g. during CCM decryption). + OPTIGA_ERR_CODE_DECRYPT_FAIL = 0x2E, // Decryption failure + OPTIGA_ERR_CODE_AUTH_FAIL = 0x2F, // Authorization failure +} optiga_err_code; + typedef struct { const uint8_t *ptr; uint16_t len; diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index e6380fdd9a..1deca6dd69 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -34,27 +34,28 @@ #error "Cert chain for specified model is not available." #endif -int optiga_sign(uint8_t index, const uint8_t *digest, size_t digest_size, - uint8_t *signature, size_t max_sig_size, size_t *sig_size) { +optiga_sign_result optiga_sign(uint8_t index, const uint8_t *digest, + size_t digest_size, uint8_t *signature, + size_t max_sig_size, size_t *sig_size) { const uint8_t DEVICE_PRIV_KEY[32] = {1}; if (index != OPTIGA_DEVICE_ECC_KEY_INDEX) { - return false; + return OPTIGA_SIGN_ERROR; } if (max_sig_size < 72) { - return OPTIGA_ERR_SIZE; + return OPTIGA_SIGN_ERROR; } uint8_t raw_signature[64] = {0}; int ret = ecdsa_sign_digest(&nist256p1, DEVICE_PRIV_KEY, digest, raw_signature, NULL, NULL); if (ret != 0) { - return OPTIGA_ERR_CMD; + return OPTIGA_SIGN_ERROR; } *sig_size = ecdsa_sig_to_der(raw_signature, signature); - return OPTIGA_SUCCESS; + return OPTIGA_SIGN_SUCCESS; } bool optiga_cert_size(uint8_t index, size_t *cert_size) { @@ -91,24 +92,26 @@ bool optiga_random_buffer(uint8_t *dest, size_t size) { return true; } -int optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { +bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { ui_progress(OPTIGA_PIN_SET_MS); - return OPTIGA_SUCCESS; + return true; } -int optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, - const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], - uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { +optiga_pin_result optiga_pin_verify_v4( + OPTIGA_UI_PROGRESS ui_progress, + const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], + uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { memcpy(out_secret, pin_secret, OPTIGA_PIN_SECRET_SIZE); ui_progress(OPTIGA_PIN_VERIFY_MS); - return OPTIGA_SUCCESS; + return OPTIGA_PIN_SUCCESS; } -int optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, - uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { +optiga_pin_result optiga_pin_verify( + OPTIGA_UI_PROGRESS ui_progress, + uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { ui_progress(OPTIGA_PIN_VERIFY_MS); - return OPTIGA_SUCCESS; + return OPTIGA_PIN_SUCCESS; } int optiga_pin_get_fails_v4(uint32_t *ctr) { diff --git a/storage/storage.c b/storage/storage.c index 4614e9f986..08b5e3ac72 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -609,7 +609,7 @@ static secbool __wur derive_kek_set( const uint8_t *ext_salt, uint8_t stretched_pin[SHA256_DIGEST_LENGTH]) { stretch_pin(pin, pin_len, storage_salt, ext_salt, stretched_pin); #if USE_OPTIGA - if (optiga_pin_set(ui_progress, stretched_pin) != OPTIGA_SUCCESS) { + if (!optiga_pin_set(ui_progress, stretched_pin)) { memzero(stretched_pin, SHA256_DIGEST_LENGTH); return secfalse; } @@ -627,16 +627,17 @@ static secbool __wur derive_kek_unlock_v4(const uint8_t *pin, size_t pin_len, uint8_t optiga_secret[OPTIGA_PIN_SECRET_SIZE] = {0}; uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE] = {0}; stretch_pin(pin, pin_len, storage_salt, ext_salt, stretched_pin); - int ret = optiga_pin_verify_v4(ui_progress, stretched_pin, optiga_secret); + optiga_pin_result ret = + optiga_pin_verify_v4(ui_progress, stretched_pin, optiga_secret); memzero(stretched_pin, sizeof(stretched_pin)); - if (ret != OPTIGA_SUCCESS) { + if (ret != OPTIGA_PIN_SUCCESS) { memzero(optiga_secret, sizeof(optiga_secret)); - if (ret == OPTIGA_ERR_COUNTER_EXCEEDED) { + if (ret == OPTIGA_PIN_COUNTER_EXCEEDED) { // Unreachable code. Wipe should have already been triggered in unlock(). storage_wipe(); show_pin_too_many_screen(); } - ensure(ret == OPTIGA_ERR_AUTH_FAIL ? sectrue : secfalse, + ensure(ret == OPTIGA_PIN_INVALID ? sectrue : secfalse, "optiga_pin_verify failed"); return secfalse; } @@ -653,16 +654,16 @@ static secbool __wur derive_kek_unlock( const uint8_t *ext_salt, uint8_t stretched_pin[SHA256_DIGEST_LENGTH]) { stretch_pin(pin, pin_len, storage_salt, ext_salt, stretched_pin); #if USE_OPTIGA - int ret = optiga_pin_verify(ui_progress, stretched_pin); - if (ret != OPTIGA_SUCCESS) { + optiga_pin_result ret = optiga_pin_verify(ui_progress, stretched_pin); + if (ret != OPTIGA_PIN_SUCCESS) { memzero(stretched_pin, SHA256_DIGEST_LENGTH); - if (ret == OPTIGA_ERR_COUNTER_EXCEEDED) { + if (ret == OPTIGA_PIN_COUNTER_EXCEEDED) { // Unreachable code. Wipe should have already been triggered in unlock(). storage_wipe(); show_pin_too_many_screen(); } - ensure(ret == OPTIGA_ERR_AUTH_FAIL ? sectrue : secfalse, + ensure(ret == OPTIGA_PIN_INVALID ? sectrue : secfalse, "optiga_pin_verify failed"); return secfalse; } From 869b6fe6dc3ba1a826e84520a48d5398ed83a424 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Wed, 26 Jun 2024 11:09:07 +0200 Subject: [PATCH 376/626] refactor(core): Use remaining PIN attempts in Optiga API. [no changelog] --- core/embed/trezorhal/optiga.h | 8 +-- core/embed/trezorhal/optiga/optiga.c | 76 ++++++++++++++-------------- core/embed/trezorhal/unix/optiga.c | 17 ++++--- storage/storage.c | 29 ++++++----- 4 files changed, 65 insertions(+), 65 deletions(-) diff --git a/core/embed/trezorhal/optiga.h b/core/embed/trezorhal/optiga.h index 9ae082bbfb..532e9da9cf 100644 --- a/core/embed/trezorhal/optiga.h +++ b/core/embed/trezorhal/optiga.h @@ -79,12 +79,12 @@ optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]); -int __wur optiga_pin_get_fails_v4(uint32_t *ctr); +bool __wur optiga_pin_get_rem_v4(uint32_t *ctr); -int __wur optiga_pin_get_fails(uint32_t *ctr); +bool __wur optiga_pin_get_rem(uint32_t *ctr); -int __wur optiga_pin_fails_increase_v4(uint32_t count); +bool __wur optiga_pin_decrease_rem_v4(uint32_t count); -int __wur optiga_pin_fails_increase(uint32_t count); +bool __wur optiga_pin_decrease_rem(uint32_t count); #endif diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index 0cf61ebb0d..96b9c6efff 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -851,75 +851,73 @@ optiga_pin_result optiga_pin_verify( return ret; } -static int optiga_get_counter(uint16_t oid, uint32_t *ctr) { +static uint32_t uint32_from_be(uint8_t buf[4]) { + uint32_t i = buf[0]; + i = (i << 8) + buf[1]; + i = (i << 8) + buf[2]; + i = (i << 8) + buf[3]; + return i; +} + +static bool optiga_get_counter_rem(uint16_t oid, uint32_t *ctr) { uint8_t counter[8] = {0}; size_t counter_size = 0; - optiga_result res = optiga_get_data_object(oid, false, counter, - sizeof(counter), &counter_size); - if (res != OPTIGA_SUCCESS) { - return res; - } - - if (counter_size != sizeof(counter)) { - return OPTIGA_ERR_SIZE; + if (optiga_get_data_object(oid, false, counter, sizeof(counter), + &counter_size) != OPTIGA_SUCCESS || + counter_size != sizeof(counter)) { + return false; } - *ctr = counter[0]; - *ctr = (*ctr << 8) + counter[1]; - *ctr = (*ctr << 8) + counter[2]; - *ctr = (*ctr << 8) + counter[3]; - - return OPTIGA_SUCCESS; + *ctr = uint32_from_be(&counter[4]) - uint32_from_be(&counter[0]); + return true; } -int optiga_pin_get_fails_v4(uint32_t *ctr) { - return optiga_get_counter(OID_STRETCHED_PIN_CTR, ctr); +bool optiga_pin_get_rem_v4(uint32_t *ctr) { + return optiga_get_counter_rem(OID_STRETCHED_PIN_CTR, ctr); } -int optiga_pin_get_fails(uint32_t *ctr) { +bool optiga_pin_get_rem(uint32_t *ctr) { uint32_t ctr1 = 0; uint32_t ctr2 = 0; - if (optiga_get_counter(OID_PIN_HMAC_CTR, &ctr1) != OPTIGA_SUCCESS || - optiga_get_counter(OID_STRETCHED_PIN_CTR, &ctr2) != OPTIGA_SUCCESS) { - return -1; + if (!optiga_get_counter_rem(OID_PIN_HMAC_CTR, &ctr1) || + !optiga_get_counter_rem(OID_STRETCHED_PIN_CTR, &ctr2)) { + return false; } // Ensure that the counters are in sync. if (ctr1 > ctr2) { - if (optiga_count_data_object(OID_STRETCHED_PIN_CTR, ctr1 - ctr2) != + if (optiga_count_data_object(OID_PIN_HMAC_CTR, ctr1 - ctr2) != OPTIGA_SUCCESS) { - return -1; + return false; } - *ctr = ctr1; + *ctr = ctr2; } else if (ctr2 > ctr1) { - if (optiga_count_data_object(OID_PIN_HMAC_CTR, ctr2 - ctr1) != + if (optiga_count_data_object(OID_STRETCHED_PIN_CTR, ctr2 - ctr1) != OPTIGA_SUCCESS) { - return -1; + return false; } - *ctr = ctr2; + *ctr = ctr1; } else { *ctr = ctr2; } - return OPTIGA_SUCCESS; + return true; } -int optiga_pin_fails_increase_v4(uint32_t count) { +bool optiga_pin_decrease_rem_v4(uint32_t count) { if (count > 0xff) { - return OPTIGA_ERR_PARAM; + return false; } - return optiga_count_data_object(OID_STRETCHED_PIN_CTR, count); + return optiga_count_data_object(OID_STRETCHED_PIN_CTR, count) == + OPTIGA_SUCCESS; } -int optiga_pin_fails_increase(uint32_t count) { +bool optiga_pin_decrease_rem(uint32_t count) { if (count > 0xff) { - return OPTIGA_ERR_PARAM; + return false; } - if (optiga_count_data_object(OID_PIN_HMAC_CTR, count) != OPTIGA_SUCCESS || - optiga_count_data_object(OID_STRETCHED_PIN_CTR, count) != - OPTIGA_SUCCESS) { - return -1; - } - return OPTIGA_SUCCESS; + return optiga_count_data_object(OID_PIN_HMAC_CTR, count) == OPTIGA_SUCCESS && + optiga_count_data_object(OID_STRETCHED_PIN_CTR, count) == + OPTIGA_SUCCESS; } diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index 1deca6dd69..292c0d4b21 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -23,6 +23,7 @@ #include "nist256p1.h" #include "optiga_common.h" #include "rand.h" +#include "storage.h" #if defined(TREZOR_MODEL_R) #include "certs/T2B1.h" @@ -114,16 +115,16 @@ optiga_pin_result optiga_pin_verify( return OPTIGA_PIN_SUCCESS; } -int optiga_pin_get_fails_v4(uint32_t *ctr) { - *ctr = 0; - return OPTIGA_SUCCESS; +bool optiga_pin_get_rem_v4(uint32_t *ctr) { + *ctr = PIN_MAX_TRIES; + return true; } -int optiga_pin_get_fails(uint32_t *ctr) { - *ctr = 0; - return OPTIGA_SUCCESS; +bool optiga_pin_get_rem(uint32_t *ctr) { + *ctr = PIN_MAX_TRIES; + return true; } -int optiga_pin_fails_increase_v4(uint32_t count) { return OPTIGA_SUCCESS; } +bool optiga_pin_decrease_rem_v4(uint32_t count) { return true; } -int optiga_pin_fails_increase(uint32_t count) { return OPTIGA_SUCCESS; } +bool optiga_pin_decrease_rem(uint32_t count) { return true; } diff --git a/storage/storage.c b/storage/storage.c index 08b5e3ac72..59b0a8e4a5 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -1286,35 +1286,36 @@ uint32_t storage_get_pin_rem(void) { return 0; } + uint32_t rem_mcu = PIN_MAX_TRIES - ctr_mcu; + #if USE_OPTIGA // Synchronize counters in case they diverged. - uint32_t ctr_optiga = 0; - optiga_result ret = OPTIGA_SUCCESS; + uint32_t rem_optiga = 0; if (get_lock_version() >= 5) { - ret = optiga_pin_get_fails(&ctr_optiga); + ensure(optiga_pin_get_rem(&rem_optiga) * sectrue, + "optiga_pin_get_rem failed"); } else { - ret = optiga_pin_get_fails_v4(&ctr_optiga); + ensure(optiga_pin_get_rem_v4(&rem_optiga) * sectrue, + "optiga_pin_get_rem failed"); } - ensure(ret == OPTIGA_SUCCESS ? sectrue : secfalse, - "optiga_pin_get_fails failed"); - while (ctr_mcu < ctr_optiga) { + while (rem_mcu > rem_optiga) { storage_pin_fails_increase(); - ctr_mcu++; + rem_mcu--; } - if (ctr_optiga < ctr_mcu) { + if (rem_optiga > rem_mcu) { if (get_lock_version() >= 5) { - ret = optiga_pin_fails_increase(ctr_mcu - ctr_optiga); + ensure(optiga_pin_decrease_rem(rem_optiga - rem_mcu) * sectrue, + "optiga_pin_decrease_rem failed"); } else { - ret = optiga_pin_fails_increase_v4(ctr_mcu - ctr_optiga); + ensure(optiga_pin_decrease_rem_v4(rem_optiga - rem_mcu) * sectrue, + "optiga_pin_decrease_rem failed"); } - ensure(ret == OPTIGA_SUCCESS ? sectrue : secfalse, - "optiga_pin_fails_increase failed"); } #endif - return PIN_MAX_TRIES - ctr_mcu; + return rem_mcu; } secbool storage_change_pin(const uint8_t *oldpin, size_t oldpin_len, From ff653f038ef1f94d6930a6db0bd4a95e379e0ad1 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Wed, 26 Jun 2024 11:16:54 +0200 Subject: [PATCH 377/626] feat(core): Optimize Optiga counter initialization. [no changelog] --- core/embed/trezorhal/optiga/optiga.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index 96b9c6efff..4418c5df57 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -62,6 +62,10 @@ // Value of the PIN counter when it is reset. static const uint8_t COUNTER_RESET[] = {0, 0, 0, 0, 0, 0, 0, PIN_MAX_TRIES}; +// Value of the PIN counter with one extra attempt needed in optiga_pin_set(). +static const uint8_t COUNTER_RESET_EXTRA[] = {0, 0, 0, 0, + 0, 0, 0, PIN_MAX_TRIES + 1}; + // Initial value of the counter which limits the total number of PIN stretching // operations. The limit is 600000 stretching operations, which equates to // 300000 / PIN_STRETCH_ITERATIONS unlock operations over the lifetime of the @@ -578,10 +582,10 @@ bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, goto end; } - // Initialize the counter which limits the guesses at OID_STRETCHED_PIN so - // that we can authorise using OID_STRETCHED_PIN. - if (optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, - sizeof(COUNTER_RESET)) != OPTIGA_SUCCESS) { + // Initialize the counter which limits the guesses at OID_STRETCHED_PIN with + // one extra attempt that we will use up in the next step. + if (optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET_EXTRA, + sizeof(COUNTER_RESET_EXTRA)) != OPTIGA_SUCCESS) { ret = false; goto end; } @@ -603,14 +607,6 @@ bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, goto end; } - // Initialize the counter which limits the guesses at OID_STRETCHED_PIN again, - // since we just depleted one attempt. - if (optiga_set_data_object(OID_STRETCHED_PIN_CTR, false, COUNTER_RESET, - sizeof(COUNTER_RESET)) != OPTIGA_SUCCESS) { - ret = false; - goto end; - } - // Initialize the PIN counter which limits the use of OID_PIN_HMAC. if (optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, sizeof(COUNTER_RESET)) != OPTIGA_SUCCESS) { From 4fe4bb0bedde16abbcc72a395e379d720c3347f7 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 2 Jul 2024 13:16:50 +0200 Subject: [PATCH 378/626] chore(core): remove some unused assets and code Removing model_t leftovers from mercury code. [no changelog] --- .../src/ui/model_mercury/component/button.rs | 62 ------------------- .../component/keyboard/passphrase.rs | 2 +- .../model_mercury/component/keyboard/pin.rs | 2 +- .../rust/src/ui/model_mercury/theme/mod.rs | 43 +------------ 4 files changed, 5 insertions(+), 104 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 3484aa2291..56b5f0bd5c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -520,65 +520,6 @@ impl Button { }), )) } - - pub fn cancel_confirm_text( - left: Option<TString<'static>>, - right: Option<TString<'static>>, - ) -> CancelConfirm< - impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, - impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, - > { - let left_is_small: bool; - - let left = if let Some(verb) = left { - left_is_small = verb.len() <= 4; - if verb == "^".into() { - Button::with_icon(theme::ICON_UP) - } else { - Button::with_text(verb) - } - } else { - left_is_small = right.is_some(); - Button::with_icon(theme::ICON_CANCEL) - }; - let right = if let Some(verb) = right { - Button::with_text(verb).styled(theme::button_confirm()) - } else { - Button::with_icon(theme::ICON_CONFIRM).styled(theme::button_confirm()) - }; - Self::cancel_confirm(left, right, left_is_small) - } - - pub fn cancel_info_confirm( - confirm: TString<'static>, - info: TString<'static>, - ) -> CancelInfoConfirm< - impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, - impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, - impl Fn(ButtonMsg) -> Option<CancelInfoConfirmMsg>, - > { - let right = Button::with_text(confirm) - .styled(theme::button_confirm()) - .map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Confirmed) - }); - let top = Button::with_text(info) - .styled(theme::button_default()) - .map(|msg| (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Info)); - let left = Button::with_icon(theme::ICON_CANCEL).map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelInfoConfirmMsg::Cancelled) - }); - let total_height = theme::BUTTON_HEIGHT + theme::BUTTON_SPACING + theme::INFO_BUTTON_HEIGHT; - FixedHeightBar::bottom( - Split::top( - theme::INFO_BUTTON_HEIGHT, - theme::BUTTON_SPACING, - top, - Split::left(theme::BUTTON_WIDTH, theme::BUTTON_SPACING, left, right), - ), - total_height, - ) - } } #[derive(Copy, Clone)] @@ -587,9 +528,6 @@ pub enum CancelConfirmMsg { Confirmed, } -type CancelInfoConfirm<F0, F1, F2> = - FixedHeightBar<Split<MsgMap<Button, F0>, Split<MsgMap<Button, F1>, MsgMap<Button, F2>>>>; - type CancelConfirm<F0, F1> = FixedHeightBar<Split<MsgMap<Button, F0>, MsgMap<Button, F1>>>; #[derive(Clone, Copy)] diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 1fc88cb8a9..22f13bc8b6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -99,7 +99,7 @@ impl PassphraseKeyboard { pub fn new() -> Self { let active_layout = KeyboardLayout::LettersLower; - let confirm_btn = Button::with_icon(theme::ICON_CONFIRM) + let confirm_btn = Button::with_icon(theme::ICON_SIMPLE_CHECKMARK24) .styled(theme::button_passphrase_confirm()) .with_radius(15) .into_child(); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index da99c7c3c9..cab94fde01 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -88,7 +88,7 @@ impl<'a> PinKeyboard<'a> { textbox_pad: Pad::with_background(theme::label_default().background_color), erase_btn, cancel_btn, - confirm_btn: Button::with_icon(theme::ICON_CONFIRM) + confirm_btn: Button::with_icon(theme::ICON_SIMPLE_CHECKMARK24) .styled(theme::button_pin_confirm()) .initially_enabled(false) .into_child(), diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index 11bef8da50..de5370b19e 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -39,24 +39,13 @@ pub const ORANGE_DARK: Color = Color::rgb(0x18, 0x0C, 0x0A); pub const ORANGE_DIMMED: Color = Color::rgb(0x9E, 0x57, 0x42); pub const ORANGE_LIGHT: Color = Color::rgb(0xFF, 0x8D, 0x6A); // cancel button -// TODO: delete colors below when ui-t3t1 done -pub const RED: Color = Color::rgb(0xE7, 0x0E, 0x0E); // button -pub const RED_DARK: Color = Color::rgb(0xAE, 0x09, 0x09); // button pressed -pub const YELLOW: Color = Color::rgb(0xD9, 0x9E, 0x00); // button -pub const BLUE: Color = Color::rgb(0x06, 0x1E, 0xAD); // button -pub const VIOLET: Color = Color::rgb(0x95, 0x00, 0xCA); - pub const FATAL_ERROR_COLOR: Color = Color::rgb(0xE7, 0x0E, 0x0E); pub const FATAL_ERROR_HIGHLIGHT_COLOR: Color = Color::rgb(0xFF, 0x41, 0x41); // Commonly used corner radius (i.e. for buttons). pub const RADIUS: u8 = 0; -// Full-size QR code. -pub const QR_SIDE_MAX: u32 = 140; - // UI icons (white color). - // 12x12 include_icon!(ICON_FORESLASH, "model_mercury/res/foreslash12.toif"); @@ -133,30 +122,8 @@ include_icon!(ICON_ASTERISK, "model_mercury/res/asterisk16.toif"); // Welcome screen. include_icon!(ICON_LOGO, "model_mercury/res/lock_full.toif"); -// TODO remove TT icons: - -// Button icons. -include_icon!(ICON_CONFIRM, "model_tt/res/check24.toif"); -include_icon!(ICON_SPACE, "model_tt/res/space.toif"); -include_icon!(ICON_BACK, "model_tt/res/caret-left24.toif"); -include_icon!(ICON_FORWARD, "model_tt/res/caret-right24.toif"); -include_icon!(ICON_UP, "model_tt/res/caret-up24.toif"); -include_icon!(ICON_DOWN, "model_tt/res/caret-down24.toif"); -include_icon!(ICON_CLICK, "model_tt/res/finger24.toif"); - // Homescreen notifications. -include_icon!(ICON_WARN, "model_tt/res/warning16.toif"); -include_icon!(ICON_WARNING40, "model_tt/res/warning40.toif"); -include_icon!(ICON_LOCK, "model_tt/res/lock16.toif"); -include_icon!(ICON_LOCK_BIG, "model_tt/res/lock24.toif"); -include_icon!(ICON_COINJOIN, "model_tt/res/coinjoin16.toif"); -include_icon!(ICON_MAGIC, "model_tt/res/magic.toif"); - -// Non-square button backgrounds. -include_icon!(IMAGE_BG_BACK_BTN, "model_tt/res/bg-back40.toif"); -include_icon!(IMAGE_BG_BACK_BTN_TALL, "model_tt/res/bg-back52.toif"); - -include_icon!(ICON_LOGO_EMPTY, "model_tt/res/lock_empty.toif"); +include_icon!(ICON_WARNING40, "model_mercury/res/warning40.toif"); // Default homescreen include_icon!(HOMESCREEN_ICON, "model_mercury/res/hs_lock.toif"); @@ -226,7 +193,7 @@ pub const fn label_title_sub() -> TextStyle { } pub const fn label_coinjoin_progress() -> TextStyle { - TextStyle::new(Font::BOLD, FG, YELLOW, FG, FG) + TextStyle::new(Font::BOLD, FG, ORANGE_DIMMED, FG, FG) } pub const fn button_default() -> ButtonStyleSheet { @@ -702,7 +669,7 @@ pub const fn loader_default() -> LoaderStyleSheet { pub const fn loader_lock_icon() -> LoaderStyleSheet { LoaderStyleSheet { active: &LoaderStyle { - icon: Some((ICON_LOCK_BIG, FG)), + icon: Some((ICON_KEY, FG)), active: GREEN_LIGHT, inactive: GREY_EXTRA_DARK, background_color: BG, @@ -821,10 +788,6 @@ pub const fn borders() -> Insets { Insets::new(0, 0, 0, 0) } -pub const fn borders_horizontal_scroll() -> Insets { - Insets::new(0, 0, 0, 0) -} - pub const fn borders_notification() -> Insets { Insets::new(42, 0, 0, 0) } From 16b89e587db1e4970f0ff41e6bb4cdd00ca96e3b Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 3 Jul 2024 10:08:02 +0200 Subject: [PATCH 379/626] chore(core): update fixtures.json [no changelog] --- tests/ui_tests/fixtures.json | 1012 +++++++++++++++++----------------- 1 file changed, 506 insertions(+), 506 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 5ac3ef5425..635ccaeea6 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15323,46 +15323,46 @@ }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6d6a82892d458c81451c97b0661cba6999bf5b8809afd66624d3f92ad7addcc3", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "c585a658000fecf7099e506e2190dd0deab26767e4b63d5e011ffd0743716130", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "cbad0ce4fb182391019bc5a5099eadb73ae83981ac6d11a8bd603f6db96d31b2", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "158063167ac24ca7c8804d949193086183f09ddc81fe89bb0e4d10e7663451dc", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "e1e6e268dc74001d4218128669a46f0ece4f95b4cc42229d0dfe7a80d6b94283", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "3e38f50a51d984976a6e42168cf1c605f78414a65ea7bb0e08b7c16b9500e49b", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "8f05761047f33de567da53e5cd7afbf2e57e4f27d8b656bb759242572ad74d7b", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "2d87536848d98fbe7a47c20797ae1e3d313f6c0ed619c60721a227decde5ffec", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6f9e589939d86095320ee5d1773611531700af5e3a9ff1e9c04e0fd12302892a", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "4296fde1e64caa54695330e5a794f7d55a77b6adb98365a4ff29dae511bdfd21", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "f79f6b11f0f527e6cc25fb627a5698f80575ac7cb880a0e950160d79e7a05394", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "edd68b6d39b2a0fb27d5e50e8d82af317bd06e19aaf6d6d75086256a56e46ae7", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "067ec1fc3fd65a698913ed58840ebdb68933f85a8baa0c2dcdc147a2137b1ba2", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "0793895316dc9aa70860e7ad1b0e6d0c613964934734487f4694beebf4756a93", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "a354a37c8db591cf3c75fd8ac646196b4989aa21401598fb397eefed051674be", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "40efbd619ec027a856cf1370f7801ea1f88ee7eee51fa5d13fb3d1deb6660944", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "838f3267db86e7101119735199326a46c41eaaf05007debb1c99d135d85439dd", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "48d702aa8aa9be657e0e36ad1ea7b65d6817ddc243108ee68af87bae392b0b6e", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "e0b00054a328e3cf4f982e307efb94b89ea7b61fea4ec80dfceb54b172980f19", -"T3T1_cs_test_lock.py::test_hold_to_lock": "dbeb4dc363746c139b98a2bd61475d54b467cb9edc5ab0b5f08c1f7c75acd124", -"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "0196b595b39d7e4633df61d6e4651b1152d5606f0a538d394589bb672a01abf7", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "6d467d6c4e7ce5dc647dd0589b46e8ff12f242e8b2f0132ede8f18ff4f53d899", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "4daa3281a8619b38979c38e33e08ea769c207c91715339d09e2a4dfa959df3b3", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "a0ee2acba98d415588ee045be2d082ecf67058702b610d397cc063a797988aca", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "38bb374b21dfc0c3791ad6578fb265d118677527b15f67625837dc7c478d55c3", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "1b333f8c38595941b756ffe9cb59fba1ac8245e9e55be0269ce4c1e6c3dd9542", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "b2d47fbe052edbfcb25027257570cf0470376b88d32f4ed70c643328d5124ae9", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5e982907b2c9bcb8d28dc2269312a5d93c19eb9774c306b2f2e2c03eecf17416", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "e6dbc784955d366d4c5a6555226f5f8513e9a45c19eba03a5ec6e6e76f3f61bc", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "c6b0aa5562fb14c19f1cc0116f7c5aa5ac5c2bd07e0bca20429c62471e37ad9e", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "e6dbc784955d366d4c5a6555226f5f8513e9a45c19eba03a5ec6e6e76f3f61bc", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b8ef02ee5d4623b8e5793ad88947025005d4df68154628cf0969f0f3a34b470d", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a84df1a96ebc454bb4833c9413e993547e54dbbb596a75be041386120af7e3fd", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "cd188c8eb6b45d7d9f74806b1e788a4a6e2e7cafe51371ae062ae2fc56c89f4a", -"T3T1_cs_test_pin.py::test_pin_cancel": "1ce502c02d983a3343c1a9586d22beda391207d04c8763383a974a9fc5359170", -"T3T1_cs_test_pin.py::test_pin_change": "a218f295e8c1a6cc644ea060107d94cf1f068770abbb5a7aee4e7418baff8d08", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "3004714a6c750d0c468986e75ca3691f4f00720fd02cf921ff5299b308471eb2", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "82ec78b916a2b8adc3f87f8d554e9bd4c295fe181699b7cee14337ea7148aa3c", -"T3T1_cs_test_pin.py::test_pin_incorrect": "4dc94aac2a1ccd61814043c3387780e3f0cbfa779b59154412aebfba8f6891f5", -"T3T1_cs_test_pin.py::test_pin_long": "02326091bae1fe69e3737d7307d430007f0d788c493cf28dbec3b5f8b4d0d129", -"T3T1_cs_test_pin.py::test_pin_long_delete": "79064cccdc5372c549269321075af93f31f935436bd1a5408f48982ba221c4f7", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "cb80f9254d990bb45d96f1c3ebcd0ff7cca3a443d2eae4d4418c2a5587984908", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "1e99fe568567bb3a0f463633dd4292aff77c148f5cabd525990be2c873767533", -"T3T1_cs_test_pin.py::test_pin_setup": "4ee4a4f6394b84899207159126885da162e6c4d666f97c147d9544b5116e7d77", -"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "1680121fa5b3d0756deb327b69a55bfcf0ba2014567b2b9d22bb9a6b8c681ba3", -"T3T1_cs_test_pin.py::test_pin_short": "82ec78b916a2b8adc3f87f8d554e9bd4c295fe181699b7cee14337ea7148aa3c", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "8ec99682064fb1acdee6532caa313f85fe7cde630fd4651dc57cf3b0ea7def0e", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "d49fe7b65300f4ee25f0062dd389c492bd42d3e893187df597ca1fb8236238b6", +"T3T1_cs_test_lock.py::test_hold_to_lock": "1261d1ed229e618c37ac3a41a43ea313e56ad6096b8b65971062b7a68a85d540", +"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "3ad09c8d05197cb0ac1627c792bebda14e1cd031c0c1414c9ace143c60f79fae", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "956e3bb892ca76d13da3bb45556dc19789d4fbfdde1052c4c954139f503f0c81", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "6f496d80c2ab52faf30679ceffd8915926d098be42f47123aaf18345e23baeeb", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "58a7ce43664b40a4655d8057fe9319ea975a850cf5ce0fcf74438d718510647e", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "184222bf9ba41697214af3b51ccd7a516eb755ec39c97b44140ab58770e22e55", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "4a44de6a8ac5a33b6e567185a451d2d2b45a7277ed5f6ea47e1d49f8322597bf", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "e5ff198abc033f9e4f5a68bd0c2b497e9b58afb95859355224bee917245ed2dc", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "313ee0d880b033b1c65bdde39f022ce631426f5aa591f60d918a855e994adb7a", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "615d93392cf5535665ef23b19e5c8ca6ebcfe6446173df08a2d85c6249069f7d", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "169c07657b42d942afbe37b1fe59dc041690ab52b3ecd8e03434bf8753c187e5", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "615d93392cf5535665ef23b19e5c8ca6ebcfe6446173df08a2d85c6249069f7d", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "ddc88cb6c0e5440d08ce2d856870efe3f443c3994d6bafc7d8b929545fa61638", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6d8773f6dfc30cc1acb2d89d374c297a44c1d1975d3cf6cf45952ad7e8c55ec6", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "3c58c69e6722c9274b8ccfddb2fc31b652bf01b977f7521c87fa9e8df7ce30f5", +"T3T1_cs_test_pin.py::test_pin_cancel": "0d2da2f1a8f96c6e90353b1b3790642ac762c46d6c9f1ce513ab15bb80e58fc5", +"T3T1_cs_test_pin.py::test_pin_change": "c2cbc8c018a4299e77f68aa49a8a0b3e5da14ae99c3c71aae82e73337bd4f5ec", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "e8701f8142772ee823f48d19e5b7063488bf2bf7dcb368646ca8db62db68fd85", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "2b1ca2b7bbc4ac496f593abadce7df31b0e548800f579515576e124aeb873836", +"T3T1_cs_test_pin.py::test_pin_incorrect": "7fe25f15e248133b7b8ed11ef300ba8775bf2beeb14c9bb433dc9eee62d0dbc9", +"T3T1_cs_test_pin.py::test_pin_long": "4fd6d12e0bb3eddba9f054915852d4d5f8c66cbe071e1a50ccccc1969707dab0", +"T3T1_cs_test_pin.py::test_pin_long_delete": "e523f07f3bdd58eea7676ac279675d6b59d1591b3132b7effb49238a25f441cb", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "46c4345c63ee61f926b4c1bd09a258b546ef0c2008c8a0fb7d85c76e70a9f06c", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "cbe3500b541ea354673785f3f06d966c30d41e6f12c191404681e470e880e98d", +"T3T1_cs_test_pin.py::test_pin_setup": "c35a4fc7fe0c542fa9f0c6c485962b527d94bef534e3c8bd8a40541a0383caf0", +"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "bf233d62c66f23cfd3d737eb80513f9d356e33c954512374ece2ce2119271060", +"T3T1_cs_test_pin.py::test_pin_short": "2b1ca2b7bbc4ac496f593abadce7df31b0e548800f579515576e124aeb873836", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "acc154ff074fc2579c96719b8ffd4ef554bf53f0d7596dc78e1627b1920065e8", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "760d680dc7b2a010bbf299242b7ace0ef5aa045f5997dc50276c38b4037a9f1d", "T3T1_cs_test_recovery.py::test_recovery_bip39": "8149c5e7f74827ac7d0835001e4daca4b0683fce5350eedf20c846a5ee711910", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "c22f2f731e15f77a622cafb52798c43f32080f6d5076915afe813c11610874a9", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "9c5a4183729c87a23be5a587610565f03b5fcbf6153b77bc7048544fb3a136ce", @@ -15372,46 +15372,46 @@ "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1f19633eac793261ecbd1ce4cbb9abf26bf0eed3452ad626e9dfcfd623f65a20", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3d6e7839b5c932643b158aa6eb07f9ef46f0b910904fa5337b94fc064f4b418b", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "68fe15769ad2e528a77f389d0325e0d4b7182a73eb2ffca731a443c8f4f0d7c4", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "07945ffa9f4953f4157804798050bd533cd78b3cb14b715b524d5c023f0493b2", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "2eacc5f2551ed96b067e9f0b85f23fb62e7a374aab8e00320d443d5107e2e56e", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "4e2565d24d12fa35425a08454dce4b3bfade358350f847028e8ba4eb7579c14c", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "353e5ee163e1c34da2e56620cbc31c6310416ae723142c2fdd18bc34aef82dcf", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "1dc920129fac070ae15866c3219a47792432aceff12df8926cc9e7ab195f505e", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "dcdcf8bc0181916cd9b3363b9bc92733aa3881574e5475d5dbcd0dd73fa1ef02", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d6eee80b5c1b8b858e0473c9d9bb843dad7f6fd656c58e9a7c0e9600379f6f3d", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "094d38e00e8ca0f4c399678775f555007109a94a664776f3d1ee317c01dc6cd9", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "8c1913905e2f36efe001907c8ee051ce7f8aecc93a88188da0e3eb9309a8d240", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d0fb334b1fb245312dbcd615048065bf9c1494bb4d866854cf65c0dff38fa72", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "80ec64d35ff1342c00a772decc5c3a9ca4ced2bef5381254b15fa09a77f9fe1f", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "f9a60279e3f66fb19d271ab259db92f2242a070b1965e485450d0905ede7304e", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "7f8c92bb4c9e19037714a06e3360724bb677ebc45c884eacfa2c6a7157a7225d", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "475894c37006a2c42a5750188ee4cdcb617b8e784ee9ee104c9176afb05a4885", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "ac3f27ea1f6ab86515a5aa4028e5e0f6f5ec0dfe0a2f32049b7036766855490a", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "5df53829008e8c8c079f522634cc548516ddd47f9635f46baa8ee27c3ad32983", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "93258bfa223d8778ddc868453599c776d52bbdda1ef5fb613f7c1ea69b8ce8ee", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "892860714b53e011e560d8c4df16dee1d236e8fd24dae6e8b0144dd25f32e1f4", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7ef4102658ccb3fcbc9914192b959bfe7819bbd84bca78b8ca3a5d078dd23448", -"T3T1_de_test_lock.py::test_hold_to_lock": "d035edb5ccbc1b16e903f3d38f8a3f799dccca6abe84f5004a20779748140344", -"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "a33bc181fde1c0ac16b38a273108fccdfe6b0efd8d9bfc1c692da7aca92ce8f5", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "8bdace586fc8b201bcace67c994b4eafd638f3e32f5409f60a58ab88a242ee2f", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "6b7966cc6cc5b4176a84b3dbd5a40c9299d9447c8d6f15a920f88e08dd71036b", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "d01729e9cb57668d222b5c100ed4675c5740bb62261ac7e8ce1f7edada9cb78f", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "be12b13f6e9d2b228834db6ae250507184a68cee7e97040683a3522e37de09e2", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "d6d5d243d3b98d52442cea5b60306e988ccdfd73bdac54a45732d3c798822367", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "4c59270d2458dd03b3b18888e9708f3e33ce643e3ff5167c6513bb863d8c9b7c", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "c9450701e2215f77109e477c78ab0d4a129c74bcfc71c6b6724181c2f1aa33f9", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "9fe557e73e62662910e678680aab13aebdd47835ec39177dab94b897cbd84ea8", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "095dd0acd98e1bc3d045aab7d5ffba3300227539eb91e5d0aa7990d22d19504d", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "9fe557e73e62662910e678680aab13aebdd47835ec39177dab94b897cbd84ea8", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "456fe823f25dfdf03de7893efc80d5fc63576b2a8b689b230b143a10f339fbee", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "92863b70c1fca55d4d9a76f602ec828385def4cae1575976d4bd2b1e11f8a2db", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f39f2f6e2271f239847f5c38fb5dcd6bf06ca9d9707f6761fd62c9783f082bbf", -"T3T1_de_test_pin.py::test_pin_cancel": "209bd5972dc6e7884446fd4e6cffb69917116fdf40a45127daa7b87e0692c625", -"T3T1_de_test_pin.py::test_pin_change": "52a1a3118a9bbb7a308780a2d75987f0e145bf8ee3182be3317fed8258975081", -"T3T1_de_test_pin.py::test_pin_delete_hold": "87716d722268ca5a6a98d2f5fb9ee69e8215ad6b55bbd7639890cc11f9e14f14", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "3ccda15cd2c76602411031210d4ea66eae140c822da17c0fad1d756655b85499", -"T3T1_de_test_pin.py::test_pin_incorrect": "a0683b9deec6acd1b0fc471f6f33553d05b3d5cdd4097edfcdd32e2dcdef0aae", -"T3T1_de_test_pin.py::test_pin_long": "1b0fbde6838ea233a460b81ea3fc72ee48db6084d7fe2e749cf2d81a83b1d4ed", -"T3T1_de_test_pin.py::test_pin_long_delete": "0c5994aa22af877f8b59c236dd635a474f8832f7d02c470504a7a0ffab2f5c0f", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "549fb314632bcbe1a0a012b74e6f233be3af09445477a7672ab39a721d4472cd", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "501d1b7cea6549cc75386d8d302710178d06165fa587f6e51e0a3777c104fc2f", -"T3T1_de_test_pin.py::test_pin_setup": "6b42047d89a464171c500f258b9dce8a01d7e2bc63e9f96f3e25a3ba62665773", -"T3T1_de_test_pin.py::test_pin_setup_mismatch": "b3cefab55a82b22f54d963213fc4ffa2bf451dc5c37eea619e6b3b0e4ce56b2e", -"T3T1_de_test_pin.py::test_pin_short": "3ccda15cd2c76602411031210d4ea66eae140c822da17c0fad1d756655b85499", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "ca755030d2d258c811ecf7b1dba03ac6ca0d68404f5437aa5d9b8fdf7fc69281", -"T3T1_de_test_pin.py::test_wipe_code_setup": "26f46aff3d68812d6fe036059e3a2a34576778631371683695492324b371adfa", +"T3T1_de_test_lock.py::test_hold_to_lock": "d77c5d6834617890ebea1a51463bef1add52bc1d2478a3e17c6e88b35d7d5cb1", +"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "63c08446669db6dd58a639b5fd2e18ca75f8f0309dd3588dbd7fe8d96352a2b4", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "bf9d0f3b2d019fff0af115958eed8b6aed3b8794b10a18ce02dd9dfb35037009", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "79efacad4f082f5e54879a81dcac263a01a7583a8d645e5f2102f61e308671bc", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "24aa2a6456eb25d11f397d6428e22ecd7f383d7e0b23acbfce83f16152be0739", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "d03415a903ff30a7e914cc1f604f1cfc5b18f4a5913f9c6c4fa277b2ec3049a9", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "c3e64a77d2a05749e3a0990b886a5add4d83a1f0f76591e30d656fde787a8749", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "a9a9ef272867b481d344845124830f335e00543da7e2ffca3272e99cff6e8f3d", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "2668619446bb0d4f27a1c6c16cb9062ae25fb575ce68b760463d09bf27850d8e", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "92e2967435a149563f91d6a7d5c972a0001adf26847102458801f29c4f2a10da", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "9e11c0cbae2a5eaf359d7f250f1c32c96f8f5b46423db590b34caf7674b2ee37", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "92e2967435a149563f91d6a7d5c972a0001adf26847102458801f29c4f2a10da", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "483f544613d207964d639a972fddb89c5a727633e412d8e2b2b3ca2a984df26a", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "64858a57ff8101fa7b28bd4fe8d5aff9b5c221d33c4144bba399279895ca3d13", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "b311c171f29da6eb4410dda06050e7f4d62b53718c00f14875098b18b1cbe451", +"T3T1_de_test_pin.py::test_pin_cancel": "0d405e67172c0014d1d95867d6799b24a5294794f4af9901a0e9e56cb70fae53", +"T3T1_de_test_pin.py::test_pin_change": "20422b7d523e5ae1cb346f00e9a603410ef7816787b69a42b20801767b8b703b", +"T3T1_de_test_pin.py::test_pin_delete_hold": "8a0d059c9bd9e28315cfe1c1dfd667985449da33f407d7cff10fc8c719452f7a", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "a13b7263edd989b3fdfec7ed8f8cad7e00d72134eb7e37352c8e2fbfeb132747", +"T3T1_de_test_pin.py::test_pin_incorrect": "a03a535f2bb6a84ca52722f1424099ec1eb0fe816d21b519011242b560d05019", +"T3T1_de_test_pin.py::test_pin_long": "23949732b4e98b298dac04b6fd17862ea5618665e1bdd5a4992372cad17d630d", +"T3T1_de_test_pin.py::test_pin_long_delete": "d641372615c38d8e15f06c7485db3470cd56bc97294d9f45038795460f3519da", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "d2a9920ffe3e5efc70fe7e9f78498e0f225d054f0fe233dd27e8472e2f60186e", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "f2114626fd4294bc6550ce1e04ef8a17d358d8d7cff1ef0eaf0b0d601781fb58", +"T3T1_de_test_pin.py::test_pin_setup": "b995b50e4c432181f0a12f31a9725952cf5a7408ab830e10a1bd232b973e2b4c", +"T3T1_de_test_pin.py::test_pin_setup_mismatch": "2cced1fbdff980c5c3511ea80cf0c759f6fc6e0d0fc9036f19cb71c93236dc24", +"T3T1_de_test_pin.py::test_pin_short": "a13b7263edd989b3fdfec7ed8f8cad7e00d72134eb7e37352c8e2fbfeb132747", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "a493446179a7f3a25c7100f985c34df2c22af03e4dfe3538129cfca36d5c29af", +"T3T1_de_test_pin.py::test_wipe_code_setup": "53d46189828a3b80ce5907d32883cf637fb05c7140821c33cec2fbc625f032c0", "T3T1_de_test_recovery.py::test_recovery_bip39": "c5104874895584c053afb59953c9cbc5418ab98f2c9bb9853ce85af6fc87e43c", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "fefeb165495961f2b4f99272ad813fcbd4da47479dd0b385ba4855dc2ffa5011", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "491bd2a211e119df85c6d251e4d5d1c40423595b14eb195977e5a331bc74fa15", @@ -15421,46 +15421,46 @@ "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bd44555375181366118e9bfa7bac765c692115f3bfadadf3d4969eed71ccbc09", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6954de6b5ffd5a71c62f7b96fc8fcd25d2bb1df0665f2a8dbfd8e78573f48fcf", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6dd93a9a6879694068e3e2444b98443bfe7b7f3335d7447e722c785faf54a458", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e484cc97837f0c93bfb2530710fc4c1a007ed28f518bc05d4d4e637612969fa2", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "88f4b09b5fd4ab41f94ef38fa1f544f2e11b5a5f91446f6c94b56cfe1716fa53", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "4aeabb7364149029935eede99316a224adb1b8408160e00fbd819cb622520b26", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "9f32d77ae1b28eaa2fc04c9c7daa8e40a193907062bdc77a89c1fb2974ca61a5", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "093c3c3e7e07f050385ae5d8d53f9e02609df1d4ffaece15aa274541faff075f", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "af55056df9e40150fbc775bfa977cefe4467f1e70cb61be782c9b36c1a6468c8", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "47402064b7eb861a656762194834b5650f68e9c9e8d7bb4837cbd71392bf5af1", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "c19ac243baa005287c4e29af79fdf8fe051ae9a0c33b806cc71f9103b04d9bd0", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "89d9863b6d11cba20c5c7c6a51975f9bb3be605dad20f3259df5a71c901286ff", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "d3e797008155f1dd117549e908a7c3ac48d3a7f7de72bcc1edee83c1edce857c", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "e16ea1b82337ae8f09fe4b74ea82a92652686df23837ab3919238cfc15f473dc", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "701c4db12964d1b7a044e0d518bc10cc1f6a16581c29e84f7e49a8db590853d8", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "8b8becac12fa0f4b2e9e510a512e3b2bf45f1004026473f3f860a965cb4b428b", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "ede92a0c0ad001505a1ae3b613e78645d0f3635eaf1f239e22bf42a79ea25c19", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "acfc00ad4e9b80aa29929bacbab91ee34e77ee853e08c8c0f6db8d2b54d02b0e", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "825c9b5d16cf5315db4de5ec6e06b809f686ba7c6984127d9ded46c3199e996d", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cb89fec564c9e44dee3c9516a44940f948bbc30a96c7ba6295179692b402c275", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d69d4743c013521ea76f3f5f4182d525600520c116357dac0545193e5745ec23", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "cdfca792b399e20645b0fbb2d12dbd2238fd869f805ebe54f86b9e3c80769d90", -"T3T1_en_test_lock.py::test_hold_to_lock": "a2455a98916552cfbc524b9699ff4ffd11fff45589c9953f107f496c184f8759", -"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "45b7d15ee8c8741d65803aa7e14f7beed2ceb25fdc928c77009f303e5f62758a", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "6d6d745741b4b9c2cf3ce58b3dcab21cc4c7a739b1d5b71237709831558a3722", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "ce62533885547708e9ab37fb07e90d5a828da79c3a4754a56585fc1427b33db7", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "bea7a7fd80172c0096163098c1991776a3a1993dc491de13b6ae591df6a78562", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "f03ba8cf6c795c63d3a22493b81af6a5bd5abe2086a27519a4c69dc42dae9d5a", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "c6967f228673b9aade5195c7a00a22f4c732360430ca20ad78b3075f34d54ca3", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "287c21fef0ef5931ac5e73b0b5acba3977fc47cea8c339d1f957ad23869adccb", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "a93ce2a97e5dd22475fe46a041f8fd475350445b49c1b560eb3c35503139c321", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "f41e9108142fe81156ee0d04f9cc1e4e4a839e1375956d66f74dd439886c8c11", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4539be2dba47390d5f6c7158dddb74a8a853df087808e5f0413078a7885a07a0", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "f41e9108142fe81156ee0d04f9cc1e4e4a839e1375956d66f74dd439886c8c11", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "d5dc1ffaae3ad8be857accadc813fb0aa6277e4906b45eefcd0d7e2d3f9d9e8f", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "5355ef31a0c0f69ac17ef0f9fe5ff88d0709a1e6e4849a3e9982bb29dcc006db", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "dee584a1bf0606a333d957a3549dd9e2321251d921c77d5ee9c8aa08a77b76ce", -"T3T1_en_test_pin.py::test_pin_cancel": "9e3eb58dfad0eb2a047f616ad797926ec682e0862a3debc88f9d64a1c22d250a", -"T3T1_en_test_pin.py::test_pin_change": "ef65a96a3539282bc0595412ac3c3819d34c102d9c2c931b367412ebf81ad8d9", -"T3T1_en_test_pin.py::test_pin_delete_hold": "7cf6fc3192df960b94ea5b1370c1e79a566824f933b0df3bfde87dc78e6544c4", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "1455a6987523aee9e408f33b32afe3c63e9df1b29ddaee9a6c6ebc1c3d08cef5", -"T3T1_en_test_pin.py::test_pin_incorrect": "762442feaec8a8dd387a8092b302ed8e18cbafecefc7cbb9eb9a9c5529af230b", -"T3T1_en_test_pin.py::test_pin_long": "399ede9180ee573bb16ee1e2c63ddec5813828f0e20bb00b8e6033d29fd279f2", -"T3T1_en_test_pin.py::test_pin_long_delete": "43999dfeae6a3a55e4e5679ec925cb7d3bd53b993b0d6aa92c4aba1458738cd0", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "d52f3e2ecb73b233443a7fdd38f5701cdfb4188ca712e29c5375b60cd3f59ebf", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "58a1d738be1e02baeef595b62ce1ecc69fcf7c9c5a2a23c2025a351738f353b9", -"T3T1_en_test_pin.py::test_pin_setup": "220278ad40de226b5812b0c697a896d91b1e4f5efb43af6641cd57be4f4e8017", -"T3T1_en_test_pin.py::test_pin_setup_mismatch": "0f52ceabec69c9c4df0102a9766892f5a5ce0e33b14b568163671f24b3e9819f", -"T3T1_en_test_pin.py::test_pin_short": "1455a6987523aee9e408f33b32afe3c63e9df1b29ddaee9a6c6ebc1c3d08cef5", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "e26a844530882513d516a63300da792a27cf069fc04f2cafbca0b0263daaccaa", -"T3T1_en_test_pin.py::test_wipe_code_setup": "ce1e51c264f42c0882db9b64cafac7528979646db930373fcab74fffc910241d", +"T3T1_en_test_lock.py::test_hold_to_lock": "97baffaebd554b49fe643ef4a1f6aed90711c829c2cb740d9a292efe965acd7b", +"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "77fe6f8bfb1ddc6a8516913c2ebc669e6b988e6ef9ea6846ef6d94e921fa65af", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "c5540d1c33265bcd397b8a72fe949eef9b514c708fb3bbc2d3d2aef804cc8a23", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "ce2aaa6bc1c26c65a4278ebd3e23dac4adf81fb71dd72af685db34ba766c3935", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "57ef9ab3b4781fedf32b0d1c002f207ccfcfeefc1edbb56fa7bac7504bbbb610", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "87b90e0c8853ed000d13d3f5c7b26cddd2bb2e6077130d337457b4b771f80bcf", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "8b3784f623de67ab36519c22947786863b57b8d622591094f6e3c0cb8723985b", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "16725e1893eac9da55ffa31c53970986c10b3fd752f098a8a8736009046fc8cf", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "1fae1d8fb923e6ec62d6fcadf4bc73d802f873e04373b7d0fe66c0c52fdc554b", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "6b5543ca18cb03fed1b4cecee44ff771cb5a26f42c1da3d6b65d56d03b1cd2c9", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "c1a9329e18cd81b385a1a14af4793294172ff0450a7fba337f1e727a1a1438ac", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "6b5543ca18cb03fed1b4cecee44ff771cb5a26f42c1da3d6b65d56d03b1cd2c9", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b57ded3b31901a1fe3cd7bc019cb9168e4126194cce02fb0ee9f41b2d6e30028", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "bbcb0e0053e1bb96d2bc52ffcc1a4592d8f51489b3c36fae640b6a9509c8993b", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "776b1b1d580b1450810fc19f03df408d44600360dc370503c440916ef9ed5639", +"T3T1_en_test_pin.py::test_pin_cancel": "4f981a6c9a417b2f956474eb5795d7a412709410884e669e2b5154981c7b680e", +"T3T1_en_test_pin.py::test_pin_change": "961ea7d77fd1c689cad0cde38e1d14eb8cfdc5f891d7626377fcb108e2aa8168", +"T3T1_en_test_pin.py::test_pin_delete_hold": "4dc9b7b5f644a65d8d55b5f7b2cc1a3775e8cb8b0e9cec28a84ab5104018a4a4", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "13b1ff05b3b5bf9fe351b69fabdf51b85a52dc059fbe0a629bb60d31b01b9e86", +"T3T1_en_test_pin.py::test_pin_incorrect": "1d0294098cb03140e68a048bdeb552018710e6b68e3d76eb08bc0ae1eb3366e4", +"T3T1_en_test_pin.py::test_pin_long": "e41376a76eed69ccf19bc0879e8f4a8cf0ca0df7807fa95c8a6b3ffb1f55c6fe", +"T3T1_en_test_pin.py::test_pin_long_delete": "0be886078e6b43f70f0e430d77e45a9ba652df1a196e991e0f7e44ee5b9d0ae5", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "f4dc371ceeb8596015f1bf6b5e477ce03f24b2c4c7d90d7628aba4020fa928f3", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "7f3c8480c6a342c83b1b8e2ad34cfbbed0592b86da51952cb83b68fc48cdb8dc", +"T3T1_en_test_pin.py::test_pin_setup": "e3c5a8ce30b364f2487350af5e3e30eb53d1ffc25e03c16ad34bf31fbb715f98", +"T3T1_en_test_pin.py::test_pin_setup_mismatch": "b5d246768af803c6310196cc764899620a0976b9353ee9b7da1a524c45cde124", +"T3T1_en_test_pin.py::test_pin_short": "13b1ff05b3b5bf9fe351b69fabdf51b85a52dc059fbe0a629bb60d31b01b9e86", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "6f9dc1f535919922c995d2e3b06d49ce30756e11c33c15ca3668919ec10ce767", +"T3T1_en_test_pin.py::test_wipe_code_setup": "51573a7dd52814fd88a1f1d8091a8f31116cbd35f88e427073ab061709151322", "T3T1_en_test_recovery.py::test_recovery_bip39": "e4a4b67bb4df6abc7fa3b41143bad5af6a730bc8149badb3bca27e223a2e740f", "T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "d3f1ae68c3f53b9a4f420d401b17fcf0e1df9e72d7588955607be9171d6dccde", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "8c41faa6e0fa47ecaf6d58c8ba56abe42b5f4c9af5674f1f43c6bdff52262781", @@ -15470,46 +15470,46 @@ "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "64f4a3aa57b7aeba88aafabda05dff768d12aafb05876de1b3af35b2a5794025", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "8ec7c62473d597734610f5a868ad70890decf3edc40f89a370716d38794a0d40", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a12e32a489b56eb680b8325469e79f39ccaf28e60b846d2257bf7c4226524e67", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2794c14a75aa221a6b3c03b72a0e0fe0802baa5083317df2d765105cf7b1c21f", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "0c1f4562b8f546de446463e1e6b1a97d824f37967951575fc68031b5fad5f008", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "dbe0de6721ebc6b132cce2f4dbbf4773ddfd7c0c51560aeff1f8ba26ed0fb90d", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "a99e69cfb579f3a66f944f613edb01e6c315276b2909074c3c29f825b93217dc", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "634db6b8dc3b5798b136dc9886683dc9ea04e391ba1a328ce5703e5a80b1677a", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "a66048aef76e5a96375b717daf4c934f2b7be0f361f85f03d68e4627593d8f4a", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "0d28129e9ce1247b613c5c57c445ce02fc3518c01377d813677dab87e90b9efd", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "e4ffb53fd4c7b863b84c818fc1bc5a2e84034368fbefc50405083b75f278355f", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "05a4e45fb84a2142f81f7721b997cf4e1a37daa9c5cf665d4cbcf26ea6d013ab", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "b1525433171983ce44aa8feef67d2c237161776590213ae8bd966b98cb950b7d", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "993264dbecf8cd4fb217ed2303cfe52bfb6fe43a69f2e5169c24270fb2069884", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "ed38201b2328e05c361d276851685da00a93901ec2d78c93437aca7c9bbc18c4", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "3911c97c0ad48ba83eb755173be3900bb666efc365d7c7d76527cdd996da1d7d", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "aa6f56fd22a07a2daf9358f3855048b4536dcc478e88e55c377c6940745b1e7c", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "6112434df70e0f791e2fd4481488c0d0b86ecc9a89bd1022d06ea64b4970b0cf", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "d800904f30889d1312b432887be7c9ddb2ba3c88a033f5f040213429a0736b34", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6b130d292dec4116743776bde5a318a8550a5a5dfd4311c0f1622f619007e6ba", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "85ee31647a32e229b72049bdefc7e616daddbfa609385abca02eff75ee23d219", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "18b7a0948bc9dd72a4a95ebc38aee45340df4df5e9bc508f1f3f6c5971e289cc", -"T3T1_es_test_lock.py::test_hold_to_lock": "f5c249e824118a5df9c9659893fb22f7181cbbc973ee74020bd326138e806629", -"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "c3335909736ab6720417df11d6d226f38be81d524fb679b7dc35b02f1d786d6a", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0d3db8328eeeb2946c890189eddd32b38bfa43b0e5b05b4b23d1b08d8bb07841", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "66b85031ee76938702c05b9ca9504d264943bbf7d0c56f334cf42d66e87de5cb", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "d340775b7d1300536d57f9967ad8264a1e670a81e2af0d5efecba898c99133cc", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "c031d0633ed3311118bb7b97d41c97e7d47c8785b3523ba0bcb251ea1d64c769", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "f2bdfd6aa89233493006918b3565e7aa0ae634300230e3f0c1779879f844e5f2", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "e7d8502cd4bcab18b3ee3bceb0238ab6087cb61a710ad42f543383c3458541a4", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "74e573e3ac5ad4cbe7d5d7c891d8066b3f1638bb9b783f944e35021f67234db2", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "429f3ea058ef7850504c9f13272b57c23ee712665a30c2750593a9400377f2a6", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4d7a0d562b8e12e26ba801b086d60720f525d5a0cbc1668110d93845883231e5", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "429f3ea058ef7850504c9f13272b57c23ee712665a30c2750593a9400377f2a6", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "5ecf809cee2a2b6d1a24972c881e1c1add9e64d475bb25b7ee4fe7910f0066e0", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "0093926453edde5c1b90e62d8c6557be13a4f21b2dd39da79a1659bec620e6f6", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "a8d6cb97213b205e24fae5ad4590d9c469bf350db4f555e62e5ef5f79ec5138d", -"T3T1_es_test_pin.py::test_pin_cancel": "4a8317bec7ae2dd2ad79bce90b57d481b6434b2ce1a8a2f4fcaeebe5b8d32525", -"T3T1_es_test_pin.py::test_pin_change": "26e5cc2f5a695b2731b09dd1a8bf3cba3a32869627c7c9f5e4cb01c835153f40", -"T3T1_es_test_pin.py::test_pin_delete_hold": "84fa941898a08845edb93acf921ebef126eb3e3c7b4072b23e6f8f0112d3afcd", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "37ebc2c8377495d678b377fa86190625a6951ef05f866ef4ec16c02184067578", -"T3T1_es_test_pin.py::test_pin_incorrect": "7712b0a0c4f00de2ad495e4b71a78392c9208d1f6692ade9674ab4de417d00aa", -"T3T1_es_test_pin.py::test_pin_long": "597dc63974253774cac191b849ff4deaf78246b6f2cba9c9151f78986b7093ba", -"T3T1_es_test_pin.py::test_pin_long_delete": "675788dfa66deb5b00fe92f88c61bfd05c4c245a339973a1cd69fb9d62dd487f", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "d5dc0e06be05d28a07b651fe423e2fcf21264bd38c970cc3fbb6d03e38929d72", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "163f25ba48838930520677a85c37bab7492fc6bd6353a142752442e7136b03cc", -"T3T1_es_test_pin.py::test_pin_setup": "e578b90346025a3ae256f366c334f79cec3aaa47af2298c4bd46abb88169d88e", -"T3T1_es_test_pin.py::test_pin_setup_mismatch": "ad7ad92882200143c36c9c6ffc6a33a8664beabfa448548957350d09ce6e8b57", -"T3T1_es_test_pin.py::test_pin_short": "37ebc2c8377495d678b377fa86190625a6951ef05f866ef4ec16c02184067578", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "3eb0747153f022cfa990a8e81e719a858a7254742d60e3ae1ea7dc952e354b16", -"T3T1_es_test_pin.py::test_wipe_code_setup": "898c0d4260cefbf0ef0d2f5a8bdda8849690bb6ebd68007561cd37ff6028c329", +"T3T1_es_test_lock.py::test_hold_to_lock": "599c6c0ec95b14442e281927a8adbf90eb5cd9f83b95de03db375b4d3bac82df", +"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "3fc39e02f19cf7626398c62eeba26f2e36ee6449e3390283fa96c016ea85d58e", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "83116b38b2709f164d512a3e53dc36b2fc65cd635f8cc5dd49a7e4d01b52b554", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "7e4da3874efd61f9a37ecd276a3f104d15b511a075702de130ffc1b60ce96a2c", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "7907c3aeeba7e025afc328996be1c5db4e8f56d24e8298ffe375eddd33633ecc", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "7fb9b967da7546d791ba90059ab1028e29e141b649e30a36622c1dc541bc2145", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "e5fe58f58b2b466f84ba5128bd6071829217a137ef11e5e947947a42c5bc3bb6", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "9cd54f93cae59251f4de90d31b1c836f2dfe1289c2cbde94063e26de081f14aa", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5980de7bf7b130322764d4c31d51d81f9f333ed5c9441889273944feaa822745", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "2de2f933e589cb3690b1539fa1ad22e02f72f02d589613cb8bc26ebd2af8b90d", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "af09acd02280f7be284660c96d04eec71292b6803ca5b53701c3d3880c9eacd8", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "2de2f933e589cb3690b1539fa1ad22e02f72f02d589613cb8bc26ebd2af8b90d", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "e5bedd7d738690456c1e33f2af5b4f60fdfff41587013a5033c1431f59898603", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a955954f8e760b13d355187c3c08a60c2d47915d752e0b2adf097ed1de650a7", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "deaa6422b34f850d1253d4fd97758b7bb9f01debdc34fe7f5615e4db2f58cc39", +"T3T1_es_test_pin.py::test_pin_cancel": "5aa944177da6c0a3d1bda13085d53e1b3d713f9074e5941c6944497845377e1b", +"T3T1_es_test_pin.py::test_pin_change": "08578f1278a722d56e7b18682a364eda0d71ed81f445fca52c25e6aa9c91ac80", +"T3T1_es_test_pin.py::test_pin_delete_hold": "4d13ced2097adf92ae11fee84c8babb9d2e30a123511cd0da7f7f23d2d9ee187", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "049531c48782f6bd3da174ad5f7c49025a465e7ef5f39d84025c5361baf48858", +"T3T1_es_test_pin.py::test_pin_incorrect": "b11979e29d69b4778a08f77fa91dd064f26423962f5cc7f3dae9bf82aa6cf405", +"T3T1_es_test_pin.py::test_pin_long": "dca81abd69b76eb10791f35ae183b28d4990663959061453d933f2071c4fb6d3", +"T3T1_es_test_pin.py::test_pin_long_delete": "af3dcc372b2bdb7a00712c32bbc3247489e312c486222675ad566dd5605ea380", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "11c510aa2ee3c481ebff02840789558c55ff41929fd5ff58cdde7bf5cb7f9fe4", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "ebab75475a9b0b968fd960da24583083129bdc86f7b6a4b4445c9454efb77c50", +"T3T1_es_test_pin.py::test_pin_setup": "39c318846d08fae3683c0ea4f9508ea5b1b04048e9c5abb7353c17b783ac436e", +"T3T1_es_test_pin.py::test_pin_setup_mismatch": "178daf8563f6912455b7dfdb312dc077b213fffb463d11afe6fde61fa5ee7bc1", +"T3T1_es_test_pin.py::test_pin_short": "049531c48782f6bd3da174ad5f7c49025a465e7ef5f39d84025c5361baf48858", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "371ae1c3e17f5adad577f0eff999f8fafff25df8c9c3069a57e0779a25abf3c0", +"T3T1_es_test_pin.py::test_wipe_code_setup": "113cd8151325442af1514ae6bd4fd6335411a8296c848410cf85776d73705ddf", "T3T1_es_test_recovery.py::test_recovery_bip39": "9faea4220e4647c307d74fb30029c73086a026a477fb6b1254aafcc5128cf845", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "8018b369d6ebbcd2dd6dbefbc18eb86124f57610d9a6d8a6ed30419d3396fc4e", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "76d8bced36dfea2bd56756619aa2d20c13c912f1e012ec0f34a761fea72b900f", @@ -15519,46 +15519,46 @@ "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "50aa3ca82b411765778412ed3b100579d9d4268a1d3d0ce1f37bacf3e8c9fca5", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4f9da73f2e6f4fa3f7c5802192c262c29451dbbc4be091f9892f6a4a323372ac", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "76007df5ab579bd73a04caf1777c86a7228ca7eae527f50ced07d939a62e766c", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "c3a13f54e667112200c3f98c8a6a9cd5c7c44e95f969da70f0541aed18f4aa3b", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "355c8b1a25b9b82283e5abb3c7f40126ebe355ba4f308b7fd1afa14dbc4ff930", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "20e2d4622dbadd7657f1434620a1e2ed4c47b45bd5dffe704f2b08f036b72097", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "e2f04d9f67dde80d19bd1a50e745ce670c31956ea6bc2c9dab80c716b6f8d710", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "c3ddae125406eaa38bc42f65004ef09f2926edd1f9bbc112968b8ba108311797", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "a0e88cedb93c8665773c4743c33a35085d5f3a4e14eec688c23183ea88605cd1", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "b8d3edd4c3796fecce361d9c7357078af8a2f4168519c60ada332111f5e2d017", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "177da2d5bcc99db5bf09b3f797b8b242783c13158b5adda3642ed2c0dd5bbe4e", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6030f5f199c0d7fded75f993ffde0948039e277535b0397ced32b3a224b88d2f", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "04d049997a45499a7e3316f76b10c7fe8651cb8d051a84681de61f0cc44b66c0", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "7d96f87359d5853cbb90a6ed2454c3c5ae8a1efad9dfc38c79561d1d740fc7f6", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "7dd7d33a67f7d9d614180390e55612d0e36b4bc08d91e101d31a7f7800a4346f", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "63e8c83a33c2174257073fc4c655dfd60e7a9f3ce85bcb20e576bfaa3b7416f7", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "fc5db4f5c9d03cd84bb69d0d53aae1cbb5d8f6e94d5fdeb44144f4e5eb285928", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "eacad631721eedecf68c32533a402b7af4c6b190a6411f2970c5d9c891c9c423", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "ce7fc9bee6a5a3558bb264a6b912e053614a6f246ba871d5a93a5ae5d1500d1a", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5fcb3b12c8313eda0559af056c6026515a037713a3c36f9fd6e47455ffa7eea3", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "96d3d83431c4c4b1f998e240bb03b7d52b0bf83b43fe0c50a643e30954aaeec6", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3e7c3aee4c812b6ea2cbf3a6455e27d7e10f92b5e3e7099d94c77df37182a727", -"T3T1_fr_test_lock.py::test_hold_to_lock": "f341d9e178a3c06a14759666046ef00f48ec01ebccb3df187b8bf6e4ff2b7337", -"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "9f5532507cffced9b2352a5a0dd164f0e4ee72d47cb0aa8e892653c2704ad8c2", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0c38cdb7b9d03ac983a305b9ffc2f882c33df18db87b8bcc33d9a16bb0aab727", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "046a0c1d9aad00ec396f8e4d89a17a17f7ed4578f7e2a91076b3f35030119d72", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "70989e1e60aff7cfb326b7ad9121abe5be2800e65925f062e6b58c190d6614ef", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "0261410316af4b2d96b928f0f0fa06f51b0040a4215af84f0971f308c140eeef", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "ac6daaea89adf16bd21e59bd92994fb5fcacd3bf4e333833b3c07b3198972aa5", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "47b160bfb0861011389f2371e574e9d48cdccff5483122df60da296ef2c17d11", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "aee078629fe799f72f3002b23a960eff971f3501c2d65e88b77e962018b83939", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "4998154f49589fa080db729178de79fe4c27bf747717c3939a4c53be09c248cc", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "5352ab7b0f5ddc6ee3010773d0ad08303ccb5eecae99149f1fe9a00be3a6920f", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "4998154f49589fa080db729178de79fe4c27bf747717c3939a4c53be09c248cc", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "46759e52efc5f5be57797001634765d563a04eaaae2b0e101f1df0a59545d8f9", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "53ec4c708ac19023e68ae35d7f26e93ceb06da7b2bee64de54927418824e367d", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "afd79366291e92367c6f5abfe7fd9628b1ee7e006d964cc382b896e1e102088f", -"T3T1_fr_test_pin.py::test_pin_cancel": "2fca535d497ffdd906f891dc40b6f9fe7e30d2e980756f774387ba4c6e41e335", -"T3T1_fr_test_pin.py::test_pin_change": "aaa962d12e351db313328f127d0734dccc50596edfec66a254a2db6725f55a6b", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "c2676ecea7d91c43d2099f5957e5352fc849ec6f369bee4758370e7b05e9771e", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "4ba4278702c62d30a8a9b3ba44a512cc2b3b1cd5e992d5339515f7adfa65c41b", -"T3T1_fr_test_pin.py::test_pin_incorrect": "1b7984b7ada6c4f9a74986618fe89828cd41ec1d22ae6477fbc549fe762e4097", -"T3T1_fr_test_pin.py::test_pin_long": "f4137dd9fd07f0ed914969a4091f95e6050ae8ead6a1f90212ac8eeeeabb0087", -"T3T1_fr_test_pin.py::test_pin_long_delete": "4f661cda0b54b48c16f48d422af6931c266ff146d381617ec992d1227262c4c3", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "ea336a072263f618eba9fc91ba0211f1fd4a3b0d5d18bb47ed263e1c895d565d", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "7faaaddce7afdc83f31ade22cff76dcd67e66e39a195b4ff3e4cebd9b551a0e9", -"T3T1_fr_test_pin.py::test_pin_setup": "6642d0597e37e2c1bd1be7080de7843e961fc244d948ac3d53ea232cc74b915a", -"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "3f624b4d2ad4a1d27026d94d65ffb870152e79938f02f79f8a2330db63eec442", -"T3T1_fr_test_pin.py::test_pin_short": "4ba4278702c62d30a8a9b3ba44a512cc2b3b1cd5e992d5339515f7adfa65c41b", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "879ad87dd9444fba448173d2eb293c69b411c560efda320413f7f748717d2e0a", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "b9928f9f875a5fe69c513c039549c83fa7fb10cce9de2ffeba9e4dd59dc24efb", +"T3T1_fr_test_lock.py::test_hold_to_lock": "4e96a178f6f41e1362670d89a417e718ffed271ffc12b53bac19a3dbac8847bc", +"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "6a74ce7c04eb4b26b79b91ee0f1580e1296ebf25750f5b237451e84afabb69c5", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ce9ad70bbb739a124b7fb0e039a7c63954b04609f869c549b4ed0dbaab590c7f", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b4ee17ffa5f236746430884da9fafa69379ddb5c88383d517ce7e5cc1d88e7cc", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "1a9a52cbb9734fc1b6c1f6610532665984ab30714ee40921e102993d28715d0b", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "eab6600d86eea3315f45a373d78522d46d223dd504dbbc7744e1aa125fdbbc29", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "77efe5ab4177417e2f1a3c848ead5b85c9e0bf43c628ccb99ad290e61b355bd8", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "46db90a0d1211e58c72e06bec0c82ae3d46c6b2ad82e12786e7638af578380e6", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "b30d08ecde2447c5dbb030bc7a9a6560dd8e7e7ceeb82b6e402c1f57ff3ab95c", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "4456f7dabc049622d687f2c1d1665e5df91e7cefcb437d1bad377153e8181f38", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "0cf6821c9ce2cfbfea4eac6ecacefa91b5323ad657236426847c7d5b4c0af1fc", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "4456f7dabc049622d687f2c1d1665e5df91e7cefcb437d1bad377153e8181f38", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "44132964953507dbc964d44707e9f787acf351ff3ae98c8504ec8d95e28516b5", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "c367ba95529a226740fe7acc2c4eb7b8b971fdd7fc67db44bb4325ff721f0feb", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ccef614ba1920f596c45f674c8578194b79e1bb81a6c2d8bf1de7bef88a652ff", +"T3T1_fr_test_pin.py::test_pin_cancel": "cd91754592ce51975cd7400cd58984605288ef69cb4aa61f9205960fcb8b38b2", +"T3T1_fr_test_pin.py::test_pin_change": "ed9a4049a5a89e7c93f68b0bddd9700d9e0e3922672c79e246135c40ed320afa", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "48dfa8b520b221d2ecd15e7a9d4b00c47781ae8252dbd69c730d6424c4dbe652", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "ac6eef938e9ab33df5e4fc42910f70694af36419b411e78ddccd4eb9c14c5e36", +"T3T1_fr_test_pin.py::test_pin_incorrect": "55652a3ceb8489c3fcf465c1f28009565aa36190e2331010b0abea2f4015187b", +"T3T1_fr_test_pin.py::test_pin_long": "38d9fc9f0bd43b82c5360343297b4f9b2e1f90d169cd870b68ccb2ddd448a263", +"T3T1_fr_test_pin.py::test_pin_long_delete": "d0f15287c5392209adc0fac328aaa6babe5bb36067e0cb994bd1aa8cb32527c6", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "89de3e4d5aa5c00b52f1d28c3ac576510d2a3d935a180e0ea8eb10b0ae8ab557", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "6bdc49a44f0959fa1abf390df5ff5df2599436479b09c2ce699e43eaf7860e7e", +"T3T1_fr_test_pin.py::test_pin_setup": "11590c588ffe740b0d4a4ba6f8cc726bfed33c9092391747057a5655fa481de8", +"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "8eb4088377c626fbca133e033c4ba7b1249eee4dac1a1cd05e6303a752364d3d", +"T3T1_fr_test_pin.py::test_pin_short": "ac6eef938e9ab33df5e4fc42910f70694af36419b411e78ddccd4eb9c14c5e36", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "c620937e4ab05a21cefb42f226f4d4d33a20bddbb70eface203834b544dc300a", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "b4ed0f7b200c50c10e337dd342edf514cecee91e3bdb7a425f5c09001601a2aa", "T3T1_fr_test_recovery.py::test_recovery_bip39": "3183879668614125ac314182445687905f8d7c45c5496e23377c155c42c78af2", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "0e39032f63ae304ad5e0106e188b8abcbd8b21060944ff2fcbbd43298863a059", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "01aea704838e18d2d2306d22c8a29fced8105ffa1ea5f1e32dda05ee24694b29", @@ -15585,9 +15585,9 @@ "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "f8b3684d2b01416a933a1e05bfe4f91529269bc6ea4eddfaa575cc7890383cbf", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1fec2c810e9631239d1823418c415ae06177abfd45a7e24efc607d152df8214c", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3f1da5b0111e0a220948767be850e97e6587292ad6e1b102e4c98162c75b3b99", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "02dd8a56a1849489b073c68067e8e4286d1611c7cc331bd911c087cfe4ad2866", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "02dd8a56a1849489b073c68067e8e4286d1611c7cc331bd911c087cfe4ad2866", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "430ca1c36794926de3cd45887ffec373d9ef8ca6f6fa2dcc8eb4943809cf57c5", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "fe7d34f00e3179f25db2dfc1a0d0e771612e99d0492a8f124aaf5f19e141ae1f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "fe7d34f00e3179f25db2dfc1a0d0e771612e99d0492a8f124aaf5f19e141ae1f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4ad0dcc2f8031c36690b2f2c104cca4fa2ee1a14f5e4039f8f109fa01c0ef586", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "dc4919222f78aeda8bb96bd006d1059d4c845d63ac0a7328a55cb591ba48ac36", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a62ca52204fb4be15277909855a2f257bbbfc3dde1c08e2993922725bcdaeda8", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "17777bd37c85bc21af5170bef430be6254eb50d5e6c493ab4b48b794cd3ef5e1", @@ -16554,7 +16554,7 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "895a55c6543456c6119794d68513045cac0ca34a68dd7bfba74a25c119dca06a", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "302271eedb4a33c98e99cb652b1431e73e9682ec983d666464b9aa6d20c9d5c9", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "66157f64b23b51056f573267704f0fcc5baaa353a87b9a5a459c952c3dfc7b0e", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "a75a202ebd245fdc83fc317cfbc173ede05b66cb10d79e5fc641534c03cfd1ce", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "82020711ccd4c2a0eb291c8dc9196df31546449a0538970699d272bd5d1e2420", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "125e8aefdb215f89e99dc5e7599ba216a691971a012ca8f99713fd156f260f56", @@ -16569,7 +16569,7 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f00cbcc886763638c5fc8fbba276d084d488f0eeb24c43e8a4d9ef9fc46c9332", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d8613d698241fa371aeb40c21c105fcff9c4afb55ab4adaed9682ea0a2a46c8b", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f8a94b2a2fd9acc8344a77eb78312d33e1f27d95ca671851957c0b30042271fb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "544c420301de2fb05b653e94e995cc7f7aadf902c4241834acacc5dd5b7646e7", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "e62f856407e781c907a3503aa8229acde436943e0bf041ec2c2fdd4e5838ed46", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7e703c1f0aee9ae9557a79130be08b86374c9a2f4c08c9893494e76e1ddb3e8d", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3a4f349c4b7af5bd10235ad38f994f6ac667399c0561b32b2bc8dac17ba7e48c", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b44ef0bec6ae76af9fa33108b2e171167326113b60a4257bf9cd7cfb8b70b07c", @@ -16586,10 +16586,10 @@ "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "543166fac323ea641a8e9b67ab98126aabe664cd2be72f505ec14e4bbb1c86eb", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "5bae4a55a03d5637d110957f096d0175bc2b063d049338e44cee44e5270f443c", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "15c7e9fdac942d6ca2cda8222854f7fdb57f017bf0230d84066076e91d27dbde", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "aa87c89710128a7064b129a07ccdc717857026963a194c0d63831257e1f66b69", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "98c9c9ead1a0c39e2e48292697b8cbeb5c238279437d3a6c838d2e853dd851b5", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "a941669b828e4e740354aa0fe5d45852e48f40e692a6bfe7b2c4b3b4cd56422a", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "59323b8175c52cbcba6a7edeb4df10f186eb8396a75e5960cb7d4e74d8f0ac57", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e17a6bc95b6916382b398a6d3cb94e2a8da12232504d5fb00a72d91e7eef0ca2", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "38033f7db4d0744691aaae9a2c931e2789a7671226be90f5a3070fcbdca6b358", "T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "44bb6451557137a12e1eb54c67900758f9ac72ace902be0b36623c77c04c8131", "T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9cdb5e96d3ebbbd676e9353d15ddb5965322e97ff446f933bc1bb2298eed8374", @@ -16738,29 +16738,29 @@ "T3T1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", "T3T1_cs_test_authenticate_device.py::test_authenticate_device[]": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", "T3T1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "63e8c9c330b4e881feb9142fe617bd48d0ce3197a2b629e606075db3b536a957", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "103856982c36a714a79a3119db9f8a3ca5103ba3778ffea714920694f195e6c8", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "0485130b17ad66d263f47454cb9a32786081d91ac04782e6f3b987233a725a27", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "0af0d816e46243f4cf974cf46a2fee3870f373d1cf324bcb2d29761702f9cc79", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f8941c5550563008b76d5b9cf1acc7d1cea2d13131398c80bdfd0a1500a7b91c", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "65f1e11e857be6161480eb0b4eb57b29b32734a22a08472e2c78fa84d036dca0", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b45cdb775bcc6b5d5b23c42707a093bf15b666d949c88b8588dbc1fbffdab90c", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "08b8a81f65729ecfcfabe316944944863446f47bd61afdd3d22c0a779efe8fb6", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "cc7288182836d3fc248062d0f488fa5156e6119b99f7a52aefabd5172acb5470", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "925d8934e9e307478bba2a4f4042b66d942db4c9f708137aa984ceb948d9225c", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "925d8934e9e307478bba2a4f4042b66d942db4c9f708137aa984ceb948d9225c", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "b6dd4d2f8bf8f8ed89d970464e5a2cbb53bd38df6e63b1dd3ea0ee5a2673aac6", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "3da97abeb071182b00ffaf062941ae9ca07e2efb0cf6c281920f55d1ade197ba", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aa9fccf00ae19b3840e27121614eb01567924b1b92ab620215ff1bcacb6b7519", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a1b01155693f529d2e01c7760a0026db451fb0498da3a65feee4fbe2dda19f93", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f9a4b2473469c019830305428a45bb149778ddde909f808317bd58238c497daf", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4956631a320ca45870b51846ae357bd7622da606ff4100575a151753c83d4d64", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "c4b7db741d8d40d56d26dc1a46acc24ff89f64cbcfcb3a933b151718cf0d07c7", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "18175d119647f642123b09c6cc16fb83ab8899a6408460aba4a03ab13c332113", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "cef73d816d890a17ab434edd74c8d04692b659fff04c3940889900209124709e", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "043ee42e29c12936fe2a2912fbf90a59805e75a4522928b905d69d27c77202dc", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "043ee42e29c12936fe2a2912fbf90a59805e75a4522928b905d69d27c77202dc", "T3T1_cs_test_basic.py::test_capabilities": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_device_id_different": "b84f88ca55158174b5c0ee5a38695f9572d3a0a2477133580ca0b366ba446dd8", "T3T1_cs_test_basic.py::test_device_id_same": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_features": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_ping": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_busy_state.py::test_busy_expiry": "d4b91a858db64bdf1e5661a9e7ebd7da285cd8c244dd1bb38aebac0edcc1d6a1", -"T3T1_cs_test_busy_state.py::test_busy_state": "5b0e81b21c8e72884e746da4429187b6dd87d2928b8ea90c4ffb04e7100efacd", +"T3T1_cs_test_busy_state.py::test_busy_expiry": "91b80634ab79b0fb8d5cee97dc3b48eac93e84cb05b29006de3cfa4ec00032a5", +"T3T1_cs_test_busy_state.py::test_busy_state": "01eb7111cdf2959e84681787a277b087cafeed42313819cbc71b076147bf99a7", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "e9d2f819046fea277edc6d1d2590c86d82e1e7abf31e31f3afa8d549f6d927f4", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", @@ -16791,15 +16791,15 @@ "T3T1_cs_test_language.py::test_switch_from_english_not_silent": "36ae0eec30003081208fbfa3668e3974897b032dd1e407e33e708c73cfa7f207", "T3T1_cs_test_language.py::test_switch_language": "fddc8ab027e570d255471cb98cd05bfe1b9247119e8fb9a518c0866f9ec59f56", "T3T1_cs_test_language.py::test_translations_renders_on_screen": "c859df8d506ad6ad5f7dfa0c333196cb3b0006d57f120812934d5b2ae3caeabe", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "2f85dddd2631b73d3db7dcf9a1681afc1c9a15949f603927f699f696cb7223f2", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "169170847cfb75d39f06e97d00057f305d25be9c2206d4c285fd706a769b6b76", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "d4cefffddd33da955e47a52a2264136ea2abb32cb876da40f39a5f0f29842734", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "dad9e9c7bed639e3d2830d089e6e2fdf363abdacdab02d8c983a339fc95fee9e", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "e6d9d3023b56ac267161df21d3268c67f34de0c20eebe230b22143391e850029", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "b4b8cb98761cbd656647bf855cd5226c472567c8c971da8e4e57baec5a4bb9d1", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4741416de5b0ae9aa27367c5a7f9d5f7a3607d1323a5a12e2709df429dfc3784", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "31bf9f496e7d1c038490ae63a677f2b3d2299e163e5f83fff755cbe677277e75", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "b9690acc5e625195c7ea2af1e70eaf9825da8c83c8376930e370c8793e04f381", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "e7c911ccd219cdb3f1e96bcf4e13dcf4758cc39b7decbef22629ea154d2b78e7", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "493d179449d3673ec2c3b965c4d3a6a1fcee223c4202cfbbee1ee4a3a44bd715", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0eed526ac2842f7e35e9c2cb5684d622178b696e1c834661c62224691a7992d5", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "97a766b1537dd43d112f397be6d79ebcb05a6d1f5226b976dcc05865c97031af", @@ -16813,17 +16813,17 @@ "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "c9ca005679502266318da239e432a9661bb71967c41455abc9a78ab14ab16588", "T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "bf6ca148422ae1e6ff5b95977bbee36b3563a267be6a48bff9f406eabe906f7a", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3a90f368ff7afac1b2e44e1cd41ec3d9a9f2ab0fa19991d86ac26e827f8cd7f8", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "573647144e5242ed3df627bb38ea77c22ef15c76ce809e43a66c2945743f4b9a", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "1417e2be1aa070c75e14cb290340bc984904b52eb68646cbaf1ecc3996039143", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "bc0d36d57d758261bc7c7004c5897e5c6f3873d6195b25fc7c49efa0b598ebb8", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "c4a9ad06c0a34099ec3df5cbc9f31ee511165d92f3968ee0eb175122997f5213", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "acf688788051deffebe8e2fc703d51dd8abb891042dd81c8e1dbd29401017ce0", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "685eeed8fbdd9c50825a6ff98eee59dfa9ac666cb0fdd2e11c2e1da97e3d4bf3", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "19c98bab39efc1f1e3b449443cf30c09b4f2483615c0411f00ed2523c4a7fd9b", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "9f28c577012418514ee832fd138670aeb4a440f7edf5e28d62dbf19f292e9475", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "7621d31fb6824c7c333a27e0d4a243c756eec5e9fddce8d46abfefc545317465", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "2b30cf9b7ad9a729821a2c5cd1efd9569557b7847236bbf44a3f70629f8fa216", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "507744cb4159f06ab696e8dc16c259588902c01591853df4a8801fd9105cca0a", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "18003335fdac481d669895a45b9cb3b5ad751ea97a76dba1c266edcb3dea6b3d", "T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a596131e04b11288252167292f6611c4f327a97a7fd307661106932b99dd8e6a", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "de4ab1963a99471ddcbef1ab97b292882f4aa700a91c38fb71fbfc19e2e6c555", -"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "2508903aed7d1bfe2f613e79f9ef4dec54d2a8d162848bbf343befd9d72bf833", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "db91941c10c2779342756c80b892a430e2f44fd75a82d0115a3f844922b43db8", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "bfe42d8c53aae8bad91eb960bee40d3ed370136445c610792824e9713e1d2da6", +"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "018490d5aff095b07a4ce2a2198eb6577e4209db1885271b0256aec6666c54c7", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "5a3d34642ab5a35374ab04f3a57b7235a3fee7c9fe8a34ed9e6e43242a90032d", "T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", "T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "b1b8f662a839ea49f8dd7477d3d93b0b06a89fd54fdddb2ad1f999bf2173b079", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", @@ -16833,41 +16833,41 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "2780a4d8692fce49d872ef3c4a37d7b10d5221ab82a5029f3a65c174ab0d8c52", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c7921ffc03197b2ce0dfa629b554c3fe7286bd94442fcca5f38ea4b383c70c8", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "929aba5a5e05532e2b311b90e1c3b4c5793fa320d585a6da68c89f52d90f4a9b", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "15634c12c115ad6d29a9f9421ad8f7dfa94253fdc897f913f8448508957775eb", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "8dc432b88041610438ea78870b33e66e0203ffd814ab011cb6d7b4389fb36be5", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "b84f88ca55158174b5c0ee5a38695f9572d3a0a2477133580ca0b366ba446dd8", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", -"T3T1_cs_test_pin.py::test_correct_pin": "25ac1efabe1f8b1f1a523e2ec492377cb89398e3569745b08f94a050c7723afc", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "eb685e08a7139b71598fec3632d510c2f608270ecf41a3971ab5e5d1feca6830", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "1829b8c91e86299235cb7ef68244a3c5c32b747d63327835424ecb1f1469b67b", +"T3T1_cs_test_pin.py::test_correct_pin": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "02bc0e025ab2eeb0ff853de9edac4eecfe9e500597e7c9ab96fe8af4ee6b76cf", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "a2af70b7fc7cf128d99fc5728a9833aa5dd59d6a98b9905dd09cdb4dcac33e05", "T3T1_cs_test_pin.py::test_no_protection": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "3b72389d83b673e6ecfd666358110b4d7c29e1e922e8070e23e073783e1bcb09", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "460f626b2827a52fac33da8e66fa69da27bef55bac4015cd51a1d286d41eb24c", -"T3T1_cs_test_protection_levels.py::test_get_address": "b1a709dc5a568483ed8471cb62c9bb53bf86d29f0cb673007d43e44cb04250ea", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "1c61116a8894e5a57b4b7369174bebb06af930a3d06afbbcbc62f5c9f0ff56f4", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "b1a709dc5a568483ed8471cb62c9bb53bf86d29f0cb673007d43e44cb04250ea", -"T3T1_cs_test_protection_levels.py::test_initialize": "d2c8aefb7f2d55618efd08138127a0a6bb3ac3a3821315fcdbd17af487aaa36c", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "abef0d0f6e0d6f1dd56913b190af52dbf58305a6025774d02ba447878dadd1c5", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "f5fe04895e7ec1dc4d640bca5d0c147b997fc2490f572e1b2e51ef481409c420", +"T3T1_cs_test_protection_levels.py::test_get_address": "4aeea9cb039a3bbbe402dabab8656b1be42a7fa83b24cccae1786c312c0a2c8a", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "fbe1ad00a94ef07e7cd4b0a07e243b0eb123a48305e4271329fce0885ecaebd4", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "4aeea9cb039a3bbbe402dabab8656b1be42a7fa83b24cccae1786c312c0a2c8a", +"T3T1_cs_test_protection_levels.py::test_initialize": "168d01fe57fcd2293d2a65f2d1923aaa1909289284d9432fc5a33af1cb6e2b05", "T3T1_cs_test_protection_levels.py::test_passphrase_cached": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "65cfabdb0bd5c27fb26fe1befdf775fd867a92b7ea76767b5f71c17eb4718258", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "db6c6f306ce8431e50d5f91bf91717888349806bb6b1e53d81a7bd4c019f1c27", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "9fd148e5d96f273d33fcfe80f0816882bf3145e633907f96a9cf9db8efde9ebc", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "391fbf5ba4c4f323513b5c7c4b396ee9f4fadd82d3a359528ce65de6c8da7bbb", "T3T1_cs_test_protection_levels.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", -"T3T1_cs_test_protection_levels.py::test_sign_message": "096f31a06e9ab82baa5c0483c3097aa59d5dbb5ed17963407a222af0f43abf1b", -"T3T1_cs_test_protection_levels.py::test_signtx": "b9407e827346608ce2a6f9d291a7ca043052bd230826dd7e56a2ed872a5d56f8", -"T3T1_cs_test_protection_levels.py::test_unlocked": "a5824ff779c0cfe10198e90f2e535a9b57569275b84871e9fdd87f3761029bda", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "0036be1713ff4a4dc3772ad48b9314e6d703168231ff42978ec0b0df507c225a", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "090370e1ebfc625b843001a0fc08d612b5850a37e377dc8df1f8b997c01da815", +"T3T1_cs_test_protection_levels.py::test_sign_message": "f251d182c9b1ae92ffd76f4281ebcb0b7a0d6c3b5d2a620371419c083f5bf345", +"T3T1_cs_test_protection_levels.py::test_signtx": "0de6c0001ae01675066413efbb15be3e738006ee6d61702d2b4e7c074a4c007a", +"T3T1_cs_test_protection_levels.py::test_unlocked": "959536cd2c5b224853457b85f3371b593b443587ca367c6fa76e78b8f4c8b65e", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "bcc541d56d5c5d4dde93bd221790438711b42ec0410f8ed0b35132ca2b5d5099", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "9e06966de49802183c98ac98650290d353df16581638993b75aec7df55fbe466", "T3T1_cs_test_repeated_backup.py::test_repeated_backup": "0beb72dbd8548f47613041acfa125c20ef4af2349f4f5dd72f77e49c7a5766ec", "T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "f53c4fb776b02a1b054f26cbd0a32eeb3fd36bbee62168c68069e09e4884072a", "T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ec457b935f0eb6c44eb8b9c37c7f6a6007307cdede6bf1755391af434cb194b6", "T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d6fac38fbb412a19f85179adc6d01a5c78dd04991583e8f73858f788ff1f86b1", "T3T1_cs_test_sdcard.py::test_sd_format": "7faa569163f0a2f3dbbbffd93983c8f0c698ea9386cb977f2e49a8f5ca49cb40", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "76bc4ccbe9ff07870b94d7ad7331d198a739c7d141744ecbd4f1de35886e61d4", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "92d48650708b824b24e6c050b75fa5f5091562b822f2d146419f3a2a8b0c94df", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_session.py::test_clear_session": "f11c4c2a1d7a54d5711f92699b47c863a1daf3d091fc2ec92a7428c43d573464", +"T3T1_cs_test_session.py::test_clear_session": "c581d88be0482cf532f0d7aec70c3bf2cf880e14aff26298c995b97f6d830d8d", "T3T1_cs_test_session.py::test_derive_cardano_empty_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_derive_cardano_running_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_end_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16879,10 +16879,10 @@ "T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "09d51becff25e14cde93c880973b8b09c13124db9f9523fa4108efc82c70392d", "T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f06afb6564f81021871cc732837ad2ff7d513405fc5480e003a91930c8ad502d", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "dbe88e8b02b25115ea1fb6b55d37efc2c5a7cc297cbb698a275789a50a110321", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "23c7e79f4dd0ed9a3203889159a2de0998fa062622ed9751f08b9f1f9f8b165b", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "c63380088ed049e335ff95364af4243ffb78a95fccfe2404d651c35b24a073fb", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "b4b7a75e7df32fe5e92f3b1f799b4981023232cea7ffac9a86e6a4c1e5dd9555", "T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "392d42ce2f371b3460f84fee0bc60c87c64b004e44c1660319e0fbec7d628aec", "T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "680c6be19b6652a1c7c21463f9d1c036e42aa3d38f48e7f828bf9c434325975b", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d0c6d02cde6433ff256b99e465f43b8fa64c0e336044f6ef56fc0c749caf7b5b", @@ -16930,9 +16930,9 @@ "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "5c341f07af8ad9183f96d46c30bcabaa87ba1321331755381019f2220a2692a4", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "bf7ca3828609d2567341a575140312089f5f7e3a44653af95dc42ffc53a85752", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3a67b3b1d921e8dbaf5e22db1e287dd4866d76d6b0570d70c511a6d84e1c03a8", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "926aab76c93d938d8d30e77d1a46dbc7c9cf8cffaa59c783859f38ae0742ee24", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "926aab76c93d938d8d30e77d1a46dbc7c9cf8cffaa59c783859f38ae0742ee24", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b81b0e06942c76968c14934a842fe91173bc7c4bdce8a709f7febd525fc6c863", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "f636fb444059e6d40be1cade66ea261e0f035d8c47bd7d8a000b398bbd6cefd7", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "f636fb444059e6d40be1cade66ea261e0f035d8c47bd7d8a000b398bbd6cefd7", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a0e2f4934a27a9c1108607d1287547eed5ef166e53c4ffca719c56057cc6fd44", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cd514eeb3d391dd75ec906812ff8ef9b1e204e270d0bbfe5c623376e38167120", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "46680442569a65b80d8e5e1ce0c4497aa8c6ae474739277e46c96e055ab91080", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4f1dbeddfb66c7f654782b4c5a1031dcf42bdf39a8df01cd0b0bb4a841d6c18d", @@ -17899,7 +17899,7 @@ "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c13b1b9cee0c2b3f5f982722871aa871ccf27f65ae50f88beb8b6d26a3ae30e5", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "042e2c9793d5b6c3c61f9867139a98f97fc614290121c47baf811bb801f232cc", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0d990d1b73395eb6478cb6306d651dc03561eefb47ec6fb625caf16fe1cfd5ce", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "f943e8d71e09a442088b567fe167c1e6e7ed4be8da304a51340cfde5925052f8", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "95460e209ced57564b07a7fd4a61497e917438a65968b42c6eac9cedb41822c5", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "02470916906af97d7060ee8e7facaa8ea51cb32818d4fb2f6c34985614dc8853", @@ -17914,7 +17914,7 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "eeecc58a09f5195b53f249d4e795a51794f80d33a8348be6903e189ce5ee6968", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "166b2f4f97b6891fcadc54399308bcc5eb960973a747851da9a6ac0a1ddcb628", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "31d928bde678bdcfe068bd6fbdfafde389aa9cd0efb6d48ff8543ffd459a5b93", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4f45acb297d49f94af64204dca4507f678a45350263e795179a7fd19638778ed", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6da4298343f5eba9b0c20abb4694747d402886c37a3a0e25abe67d9c0b14d557", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4b10d2185f0c74767170b935c9eaa12e5a49a6b9329494ab7167a4bcb4c6c8ba", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "7bf775c0d597075ddf4c74275c3639ff881f2118cc9b3eb7f78e63c0917ca817", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8a15fa524dd29106a816ea0be1aba0cbabb0c5b56622b9f9c83263b56de5f975", @@ -17931,10 +17931,10 @@ "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "3ef692d11653904c66ac545ac7629f3f8d1eaf159a96306f2e6c4adb733367d4", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2a7d3709680e16633dd6c72dcf42390f1379131671532f7cdfa9cf964c66126f", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a8e022547f0714b1c0d02d3b5b005bb31979934aadfc5647a152a5c081dca6ef", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "cab0fa6942c9c89457e9ee0103b081ba10051f440fe02fd9ccd13fb47fdbb914", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "bea40fe3d7b9c84d082b8cb3ec45183aef9d3116d69d2fb611c82cbec0519d57", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ddb4ccc547519406ad753115bfef921c994158d74a8b1cdc2e0dc24254ac360c", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5bc63178f110db83385d5cf2312d483f64c4151bbe235d6ef5d8d83d416a77a3", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0f78f1310075265e2988fa9950f6df87de4d50a438a435d821f5224f1261706f", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fdfce536d25679937aa5b5bb14ae12e2f7b42b50e747664635e6d6ff1e93f7b2", "T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "377184ec7939bbbef98db1386aad3198c1279c7ff82b7d4042cc7fb632f75fc4", "T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c3b981b057211d2b07c0fb40025cd6c868664b1e900429d7981ca087d07e7e3f", @@ -18083,29 +18083,29 @@ "T3T1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", "T3T1_de_test_authenticate_device.py::test_authenticate_device[]": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", "T3T1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "6448bdc5dad52bc4fd163560e2e82a72c6fd11cba084322c92a226843ffee00a", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b40a47c935ace8508672c2676f3482040920fef625a2df94af23db4ddea409f7", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "96b81a97e99e3ca3716a7f16fa8a1ef1ffa7a228bef36586f3bd6a579d841f83", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "91dad506b6f717a81102400d5dfa315fba1cbc0e49d40b009108329e3570809d", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ce9c99a11d63fc5c7aa0e506207de172523e48078c423c550cfc4d51f486e0c3", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "73893e468a3807b87effb42402dd73e486ce96abd31fa587d283d42792405c6c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "5824d93eed23abf519b610fe593af48c40e5b99dc3382fc8f7749fd67fa33fec", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "c28a123586045796c36eea4ce746d0f3e931fd8b615795a8ded76df75dde5851", -"T3T1_de_test_autolock.py::test_autolock_default_value": "3251a1b6da0cf2a239c35d9468d53f21a2f7b279a7f915f53bd92edf132fcfc4", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "f8aeed07a0587468169b99012ac9a72b0ac897178d3777c4704ff67ec3aa8a90", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "f8aeed07a0587468169b99012ac9a72b0ac897178d3777c4704ff67ec3aa8a90", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "5cd60672e9cec37d1e923309f94add4ee754a245096bed5de127af1319de4f0f", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c0e6b3a1ffddb37b508cc2f78106a8a47c0d5d6dfbc12b01998a1ba02acb7a92", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "364ff261ff8e48e0abea539c07d9363c593dc11b0716e2cdee4a9a20463c5743", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "96822345561725c4db73da90ef97134674498200f37860e05e19692a4cda24c5", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "30b16c4c34c8f765db4a2a647f746c34347d05307eb571a9d9d963c69bc957cc", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "6c6a580fd26be88903407755d108b7dca1f183e8889eb445562a9eb7459898ed", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "6c43bac5dcb1fa7efbcddf0118b0ec94fc09767d8a11d265e2d81a3c645bc137", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "92ad87b74274147083c424201d26442ec635b0fc5f365ba6826bb23d2c9b6a5e", +"T3T1_de_test_autolock.py::test_autolock_default_value": "1bb2a4383537a5ebb890b9d9a5f1b9cec1712ecc4ee23e37a16c0ccc5c26e019", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "122c25caf04705fc14887eade4e2f2f42b73887c85ef3646167970b07920d558", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "122c25caf04705fc14887eade4e2f2f42b73887c85ef3646167970b07920d558", "T3T1_de_test_basic.py::test_capabilities": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_device_id_different": "e09a1c9a50a87bc92d26525fa3d8971fc3af5fc0ec2b730067e2f3b589fec8f2", "T3T1_de_test_basic.py::test_device_id_same": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_features": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_ping": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_busy_state.py::test_busy_expiry": "42708037ef9e7e034aa46d6d3cf64d51dbba8be8e346b00e4f724e974525548f", -"T3T1_de_test_busy_state.py::test_busy_state": "7a4f8468333af6f5b62289f162a22ecc9673b1ec7d6c663bd8c64f72796b2885", +"T3T1_de_test_busy_state.py::test_busy_expiry": "1858b2d422473de998d1884d4f71b04047927fe0b024ef1449e74cd47c25f28a", +"T3T1_de_test_busy_state.py::test_busy_state": "ba7877b5a3cb1b53cc23dc312f9ed3ef2fe42e6aefee74b7f8d0e4da50bf1598", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "312cbfa84055cc90ba1bf7cc08fb396db4ac1b47c2b93cd077c0081ca4930661", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", @@ -18136,15 +18136,15 @@ "T3T1_de_test_language.py::test_switch_from_english_not_silent": "5dbbf948c50ec08f09d99f5a32c85b563f52fbf084e176f2e77bd89cdeb140ab", "T3T1_de_test_language.py::test_switch_language": "346bcb10dcd1f2aa73cf4a9a7634255bd201ca5c2ffbb2ef57c57de141593678", "T3T1_de_test_language.py::test_translations_renders_on_screen": "1fce1554e947b0f54d7052615e763117adff35868f5d968ce35f9e77bbd7a214", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "06050743a4775d172cc915544ebc8cbdeeab060210232f3cc4e42bcb3e48b7f7", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "2eb961444f0c991cf82c677d6662b12089a3982626fd2f55d49207c5a1777453", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "7db9e9b2dc059dee613f3f76e9917914b9e735a8204a8615ed6ed2a1a2e08053", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "03b00b22c51363312ee5bd52919e3fa3d252920cc9168b2bcec9808e15d3a582", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "33775b456640b2ce680cfa24010dbcf6459392bceb4ca40a32923641c74244aa", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "14b92a01f0de3ecfde3d6f1f2dbc173b3290ac321615c7312d6cc602554a2e3c", "T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "009732212982e29ead5a635e51e4301b9f0bb20134c01ccda4968979446af371", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "5f842c68d1b5a68d7ce09b429cb145becfcfaab0d8b37a777c6a0b56822e9355", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "23fff5652040b0bfda30045b12d7457414a3be9ee85978cb1223a0aab44935ec", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "7046eacb24b3d63d974a9f8a1e2850333798e209d9fc184def2a35bfebb94e37", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "6a5c084edb408c6f61134c08d4972475efca8886eeb726b61eaaededdf0c173a", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "1a665973fa452a0d05ced007179fa7d2effa8e1abbda4460eb4678b99909997d", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "707f4f407445d87d4b5d99ed15a2443fa2ade9fac2ad90c2afbd9bd8b994d595", @@ -18158,17 +18158,17 @@ "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "46a0aaa1de9d5768ec769aa75c050cc6c3f7f037b54d191336ccdb52b12d716a", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "3c27d51b28767f7ef347d31c482c4cb1a3a0e857f45d2e249ba59767d8622d9a", "T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "82419a27890d9fb4b7cc8c685d6d074d30f38487cc4b21b7cea8f0161c2520e9", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "63a57a777fae43d4e76adeec9d6ebb4004f5cb3b4228f02c71bc8a68db6d041e", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "35d6e630d8aca596404ce49b18bebdd20786c35f5c8f08727a357eff6086c94f", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c2314ae6957a3db5b194cf19c7a9652aa978f8cb3629bc369a0665013b60fda5", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "c0f365e81ef7b77097036e474df1444bd749af959ed146408b9350f8ca469674", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "ced81d21e5640703184603b29f802ada7e4bb4d53b2bcaf9b4e60883f1860c8b", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "b96a4247c77f1839ffb142a5ffe1207d710e642084746be0796cf10c111a68f4", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "4912586ec0dccd8e43e6ebed5317a5c60264184409c2d30124de75140a4ee7c4", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6e0b45cf80d790d4a9d8faeddd560b88ceb4f74603521cfac559f657dda5f92c", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a1f9f1f84086a70ad3bfe816aa411b3b87f7be0673faeaaff321284f21a3e6a0", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e9b13808858c983be48278836f2aeeea7ee84b1ae6761ab5cce7c522d3b2d263", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "fcca6ab7f1660eba51988c66c0c387fcecdcb0eaf1a635eb6943d5ead88be2c8", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "558118a8966d086e4812a1c4e8351411f0bea024cd7d2fa5498a03c35c686575", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "1771f98be57b67a03fa14ce73086fb5b042f1d4e42c2d4003e85e901890ded5e", "T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "efa912893b7dc06358d6ed480cde3299d5c8631ffef0c668c74d75dc2a5b0d22", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "3f7616a32c52ed269ec3d9e64bbf0da27e43527a83e4aa281fe77dcd9b3873c4", -"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "88f698497cc3f3f771f109b921880b1541343fa793d01cf1750e64ee161b27b3", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "ebf2bf2d61bd51971c41e439eb281e2c46688dd3b04b1cdab88654c9e6cb7844", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "782bec7246a18b76c6f44c11c9cb37e203d2ccc6f4fba0fd50663cdb1bbde145", +"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "7df4941381a2ee8d2627fbf7a44b1a5486ca2146a3ec7c723551067302be0437", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "63d7e4d9333845f2e20efba9b6d40eb819015aafcd7cab42f4041b8519b6dcd2", "T3T1_de_test_msg_loaddevice.py::test_load_device_1": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", "T3T1_de_test_msg_loaddevice.py::test_load_device_2": "7d33c9addde31735eed3f9dd2474c9783e694332d9bf9ac5fa43ca5fa90b620d", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", @@ -18178,41 +18178,41 @@ "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "0e1f65de4236be1317fc32499e5feb35adbb9e12384a8610b44054dabb35ad87", "T3T1_de_test_msg_sd_protect.py::test_refresh": "fc08d1585b1ef3e88314cec89f86a2c4e1e4dc38474417d0e6135c5b0a066326", "T3T1_de_test_msg_sd_protect.py::test_wipe": "5dde58b9d490c711e6ce78c0e40969cbdf2b6824de5f2fe963cd4faadc90d480", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "561a7c283a06b5dd380d4066e38d030044a10b1411966dbc1f925f64c200441d", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "1e502fca352ade39e1921c4852a8f3ba98ccc663f7d49c3661b893bc68bc9333", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "e09a1c9a50a87bc92d26525fa3d8971fc3af5fc0ec2b730067e2f3b589fec8f2", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", -"T3T1_de_test_pin.py::test_correct_pin": "e316339a615ca744f4dd8499dda705b67fbf739c0928b9ab24759625d49728e0", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "6a27feaaa6ffc40e4a9f0de1adfd95097e07ca1f94d127e467e54bad69a993d0", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "df97013fa123b6604fe92f2c91dbd7b49ad99bacc77726876393ad4ad7d786f5", +"T3T1_de_test_pin.py::test_correct_pin": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "534bc768ab22e8061a9e23eb760254f14733b12833afafdd02d42f1b5aca5afd", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "750437e6a3112a571790c1fb0b11a0974949abc9e8a1379e2731f9cdb16ae54c", "T3T1_de_test_pin.py::test_no_protection": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_protection_levels.py::test_apply_settings": "172dc0702b0791b89278f7041f6c787f88bd64f7eeb6939d9aa324a32daf1d4a", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "01964797517b79e634c326ea2821eabb52fb567f065d8b138a876067b9420c45", -"T3T1_de_test_protection_levels.py::test_get_address": "dee36cee1febc51ac5f40b1d90485148e255ee302af531c729054dbd4e5f9e30", -"T3T1_de_test_protection_levels.py::test_get_entropy": "346a116c0ae362ea7923010ed2abc106e67a7eee9725d260533baec2d1dcf69f", -"T3T1_de_test_protection_levels.py::test_get_public_key": "dee36cee1febc51ac5f40b1d90485148e255ee302af531c729054dbd4e5f9e30", -"T3T1_de_test_protection_levels.py::test_initialize": "4aa13d476b8790bf29e68bb8fb88f5006d8a42276cc7755fe86cd3db8bea6763", +"T3T1_de_test_protection_levels.py::test_apply_settings": "b827e11f1deef158c7ba36c73ce8184e830ca1b177ca6e321d202c938395b6a8", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "9f1228a994427eaaf13c56e3783e25b4c2083e0bbf0eca578a6e2b6451db8c5c", +"T3T1_de_test_protection_levels.py::test_get_address": "9129fe29b664029869fe87a9d89e7bec12d888732600de4e09fd1311ce2bd1ec", +"T3T1_de_test_protection_levels.py::test_get_entropy": "4d5785b141d5fd522591ff9d3284ce95f442f524b754c79671cb3008d1c0bb78", +"T3T1_de_test_protection_levels.py::test_get_public_key": "9129fe29b664029869fe87a9d89e7bec12d888732600de4e09fd1311ce2bd1ec", +"T3T1_de_test_protection_levels.py::test_initialize": "2b52e2a5930cccb3c608dc0e217c3905dafe6a75f013f7dc94551fbf5c725b68", "T3T1_de_test_protection_levels.py::test_passphrase_cached": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "ba33c2161b4201e41c1e75bb945be421254eea1ac23fd7e945d998e0e8788525", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "39d708f5adeb392ffd76a398c0a7d841cbc87113c69aea6da97365a4a6de9b67", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "c8a68859a8c6e85b9c6ea2a11838375e665c5eb1ca80a1a1c7103afeddc32426", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f871f61b60417cf3d6a68d0f48c9de0588315b8b93ce98ed9506fac8c3c2f7a4", "T3T1_de_test_protection_levels.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", -"T3T1_de_test_protection_levels.py::test_sign_message": "f4df39d29d9eea4efd989b8ca3b42263d3d12953ec6325fbf8208b7f04dedf9a", -"T3T1_de_test_protection_levels.py::test_signtx": "3dc0b4dc4966d617c5d92584a7fb40952bb5aae85af0683708952229fdbe0edd", -"T3T1_de_test_protection_levels.py::test_unlocked": "2c61579bea1a0b37162c99a4d4bb0587e284095dfaf050e0da086b31dcb1b554", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "bebc9fd630bc3c16eb5d3e01039f32dd019e02ce2ebc4f63bbadbea9edb8ed3f", -"T3T1_de_test_protection_levels.py::test_wipe_device": "024080ea59f81f4bcf8a15fbf09298630ffcd02950fbe52dca5c863bd5f970c6", +"T3T1_de_test_protection_levels.py::test_sign_message": "c29028b996546d8e0a35b9e6d7f487b26c8231041b39d5d55553405f335554ad", +"T3T1_de_test_protection_levels.py::test_signtx": "5d9ce32f9b9b89f8b57c9bf7fb6a8552a310843d795ca231abf6d6490890c015", +"T3T1_de_test_protection_levels.py::test_unlocked": "aad69da4432e631f4a8f1eb22960d948cce726b828489807990e9b64f8162531", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "93d81553b1714cecf030d41fbfdee24fdbeaa1c0cfceeed2be405ec18926df32", +"T3T1_de_test_protection_levels.py::test_wipe_device": "cd929f34acac9a70e06cf8ed723413e8b1f26ce6972c2d1180224265a9512eef", "T3T1_de_test_repeated_backup.py::test_repeated_backup": "6342d49bfd942f82426541955f68010ae0381cc7df09c424fec2c048194d1f94", "T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "855961d71d5ccc67fd0bc577f95c4c02d0465949290c9ee933f0bb23b4658326", "T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "0c12d44b102b2d34e174041c0898d006d9d490717119e1d2d3f9b6cab027e81f", "T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "7528d22549bb8d2c593da6ac59214717a0683dcea8f2e852d6ddea4a5354476b", "T3T1_de_test_sdcard.py::test_sd_format": "46791ce8686bfc43f7cf2093f8ac5efdfb8dc4ed8e33aae094965ea7741eda49", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "126a8521577832a95cb693176172540420c7f5f32460a3ba38f2d7ee9c42dc3d", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "cbff6cd9e26513845b17af29634954b0b771b12048a3c6f2734d4472d949739c", "T3T1_de_test_session.py::test_cannot_resume_ended_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_session.py::test_clear_session": "23c61f4355e020d4f7edd2a44c7a9f21fe3128cf05798e7acc3b7f07ba8e04a9", +"T3T1_de_test_session.py::test_clear_session": "63c0890c47d03124856152de7d9a7dce6b75afcb527f11bafc3d52a21692892b", "T3T1_de_test_session.py::test_derive_cardano_empty_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_derive_cardano_running_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_end_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -18224,10 +18224,10 @@ "T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "104cd214edf99de7a26c659376166e8247bc1d205f63ef63cf3bc7ca2e1a2bf2", "T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "cf5bae976cad736d6cee520bf8b5c8c7c7a0775a3a6a32b4609d6eabfbc3a2fe", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "e2bbf18178b182df6ec5e9e3108191214551340a9c1061dd74754e733c45039f", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "ebebd751c01b13e111fa148e96bb1a091b5e416493a53d92f439586c1bb02b94", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "4f0a4c61653440ff4a916b1a2b2f3e846fae09d795550efcea6e70ef99b1972f", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "97ccdef51f0a5a156b84d2f2ced6005087ff30acbfcbdbfa050d9c39e28914e6", "T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6fbaec9f0136ef04374bc709ab3940bc0d74895e16cf7338d6a77b40f8d12fef", "T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "77e570ab1eb2d498b8896bd3beff1350e522fbc035939e57300a209bf5feafd2", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d13ed8c06e93d53ec52f740580c63688432d60fa00bde7afc0e3a9060b8758ea", @@ -18275,9 +18275,9 @@ "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "672c577d3649ad1a8e58a4b988056da6e4af8739b3e9bb9c820f5ea52d9b13c5", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7ac50950de855c9b70dbbe07f76c726a76fae6f21411c929dabe0eff223510b1", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "163ac3af44cb42bce9f768c18ff371ac6a04ecddfae2f45b8261683b9238c90e", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c9e395767081c726b077ebb713194e548068d685f1ddfebe10679b098bcd2330", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c9e395767081c726b077ebb713194e548068d685f1ddfebe10679b098bcd2330", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "43d40d4e791b00ed7c36eb2e76aca3234fdf30e8b8874d201017b7187c8cae19", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "b4016482a6d1bf4107563ea9303f2811a64517c102e4495c6ce1a6502957966c", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "b4016482a6d1bf4107563ea9303f2811a64517c102e4495c6ce1a6502957966c", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b42504d3a07a6f681ff310a7ad70e4e4eeebba29225a4c83626c3bed3ad1282d", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "3d66920b0f4105ea7d0b18ae0746cb9fe07ed277059e74d272963b95138d9038", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "9dd7d87298e4910f49c24539cba0a1b4162a90b8598ad92ab754f6007d5ed1ee", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0bbd7646285100d50de4be4c6986016e84c00b080278f0293c4658978dbb17b4", @@ -19244,7 +19244,7 @@ "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "73fd66dc0b3d8da938675c96ab7c23195da214a933e0b60932fbcfed0e162496", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fca7b55e395ba0979d7de0137b75f4c4c524c235e1af931a3516b1be455afbc2", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "963085dd70bd58a78f8f76d1c152d282337c2ea8276ef15cb3994ae83c9802e7", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b9d848edb181a06790819e6dc198a30a35f2f4282282fa61be0cc4587e8b461d", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "246b62471cf32837861c9e0667602a8a3cd855dd299d5ff3752a9975bd5b521e", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "96680265de6740a45495216d3a94bfc6aad626ed6bcf3689fba6e3fc71b45487", @@ -19259,7 +19259,7 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f1e1d3da6ccb3cac8af982a4f9f14dcf1f09f91a5bb37f7f3b8ec1e20c98adba", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "ff6c221c80a977ca2c55996b3552af478d8e4f9b8e112cd8403d11ff721186fd", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "49a50729c03664e6afd8195b4423ae71bc23994698dd245050d868af49b7bf1d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "75736a57f1cc11907bdc76bf72b9e1f72259deeb58e74c3a1272a0adda3e27bd", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "7f77bae47fe4e5ebfc80e84d11b33872634d35ce4da7308abc449a023ac1c5d9", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "99946fd2406bbacce8062a990e92f7158d6f039dfba1cd0ceb9fc8f86d353de1", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "37ac4e044584fadf765065903a698bd96c7e2918fd0d28828071b29cef8c1c3f", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7f56e07374d6766c820119da253277606e70a0686fd6b0f5ceb376a1145467dc", @@ -19276,10 +19276,10 @@ "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "1394fddd24a54b8b40a9d8350893de6a71ab5567dcc09f65213dc98777876662", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "daff688f49aa8787b536a60de1ed095001c3852cbb596c593a215781b7054e6f", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "a6842acdceae3ecc05e6244eec6d9826197fe7e8b034bfb2e7b7e265961ddb86", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "12d80a577d487f12ab83fa9b324e780e516ff451f1f57ae7623ff5c0e2b64985", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "11236c278fb1cb6d51009ff392816884a80556e56733bfa31e2b9d8250801828", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "5cca4a187fa8183109041610828642a2a236771a34e6aa9007c4045086a11a90", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "3fc7c0b929e92279e01f94a40d8000dec844f080c84d6250ac3ec178056fc0da", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "977529b021a17c59a5ad04924e33fcdbc4dc5e609727a4132faf76d43450ff22", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "41959f978901f170d3dfde480aaeb30b89fe095463b5860e3daa4dc797058107", "T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8fa09609105ca6dbc1aade3135343aebaeaae336bb4b3f5ad4a2b354f1eda3fb", "T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "582077f299e3baa6cda7adc2e6006d9c8919d12a5e39c3da21512c8b216c98b3", @@ -19428,29 +19428,29 @@ "T3T1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", "T3T1_en_test_authenticate_device.py::test_authenticate_device[]": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", "T3T1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "3b97a2427a8ed18e35b721df055557d603867f0835feddb85ff1ccb8d3acb18b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "a948edd021de2193700a39ecee60ad875053f4271a89929878231412a71a55de", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6d9abd250371a438e05ad9a5c5a93f32eb633052d70d8b007869675f907c044a", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "67fb4a8054424bc30e317349c588c41efbec8eaf8ac52275ce7c17515ceefa27", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "10c967f2dd0da8ceeb7851f5f262b8b362e09a407e4703a1da983a023ff8c7e3", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "76db33c0436c272948ed40e212d865649d12c20d5a93e92daf059871f4c304e0", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "319ac8cf6cdbafe77ac6fbfe72dadf973861c36a52fe6f42df6a9766f092648a", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "3f38c17be4692eb593a276b6ba323cb3898bd972bc694b20e3e5031ae1a6f7ce", -"T3T1_en_test_autolock.py::test_autolock_default_value": "47c565a6393a01160aa5d677545de3a376ea840b94f8103fb4df9fb2220bce9f", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "65634034946169446cd0fe2db24975dcff3d12c163923d57726ee209cb4ef6e5", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "65634034946169446cd0fe2db24975dcff3d12c163923d57726ee209cb4ef6e5", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "9fab962f162e8ec9965d8084c9793aa83fc78683760415fed4301e23425bafe7", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "5696cdb476168ca73e45b18f17a5999c6b1d833cc0006ae635213d4710ed0cec", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "4a370d85592d3753a723dc0349ec7f135dd52fe7d0292cfdb54cb527d07dc2d5", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8b84cae24cf35b22174a26e5f9b746065f954944c9fe93ccdaf752d8fc57fbf0", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "59d3c089c0782f89e4e1e0f0f89aee48410bc246e40d374dcd265a1f967639b4", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "47f094bb52789f30ac04c858f482e5dc839e0f615271f28240b8faedfbe35a21", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "e605e6bdd2b607c0dae5a1932ff5cf21ef41188cd0dbb7e013331607a1f43dbc", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "ac336a4ea29fdd46e03b90b00498236a4948fb1cb6db679569bb4bf461560f87", +"T3T1_en_test_autolock.py::test_autolock_default_value": "71f42ec579f6f4b5145fe56a4901fb8b535b66eb58aadf14d205ef54ffd748d6", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "a029f5c9994e1da569742060b29411c956501875bbf161ac7a3ddd5647fa1ed7", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "a029f5c9994e1da569742060b29411c956501875bbf161ac7a3ddd5647fa1ed7", "T3T1_en_test_basic.py::test_capabilities": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_device_id_different": "901237acb1169340674c16b654913676fbe8bde1d5917c8ea8f640a331d79387", "T3T1_en_test_basic.py::test_device_id_same": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_features": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_ping": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_busy_state.py::test_busy_expiry": "ea75a9f878d9c38982376f2aa948766d3f714c5bd6e6d85d467196de5298a47c", -"T3T1_en_test_busy_state.py::test_busy_state": "627a56f67f163d21e897b7c733e974d4a1e324eb34de98e4497d9da31e319e7a", +"T3T1_en_test_busy_state.py::test_busy_expiry": "cb25c39112d09788ad807c490cdd65699b5be8262db1e0deba8c71979242845c", +"T3T1_en_test_busy_state.py::test_busy_state": "2205993fd89bd21ed717b9db1ce383a78bb5e2d4475621fcab1910001cd49ac5", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "f9a11c51c2c0bacdd7383b0d6f1425324257c194819385303246d757e3fa659c", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", @@ -19481,15 +19481,15 @@ "T3T1_en_test_language.py::test_switch_from_english_not_silent": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_language.py::test_switch_language": "ba498699e59ee218fa4ea4eb8c18ba63fe036cd2e7218dbf12e6512b6ce71ea8", "T3T1_en_test_language.py::test_translations_renders_on_screen": "b0a8dc19a95d153210ddbf543ce59dadbb0997b8fab9ecc8a6f9f26dd4262ab5", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "9a8ed45d3867fc3a17f00d5378c1931e7a328fa826a2bb1889319808aeb70e00", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "b93ca7d69d20e47cd5944afed6ac9843c8c9a190f10e1ebd738ff83f7c3b4d64", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "733d46d4d2443bf72500e7dad9c523c9972b04733e96438776bf6fe59919aa0b", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "3cb752b328f1c4fc5fe28cf1dab25f006854e409c054e520891c4bd0e74454c3", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "148de818dd37f5917ff07403a988ac95fd4867d7e353931818c9b6c404be0d84", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "d6cd28879b494f1e8da1748145889b48856c3ee13199d45cd263f3bca112e722", "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "75a8135cc46a082b667abb29e54c7549186b1c4469a912b02ba67ff3841b58f2", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "0d5beb80469670dbdb98f379c66db0a96c6b5b8ab773b9ae32c8b0040f63bf0f", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "aac4cd5e4c4921948b76d182889aa3c417033089494192dd24b33e79ae8a5baf", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "1333fbada440cadc7c6a5c3efe756fca18d3ef2e4af4a0804063d9bb365a532f", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "9d26eb7e311bf1d496dd4ec97897409936dbbab10f132d19106d521548c60dc3", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "9ac2948f5dc0d41632d5717811add555ed1f5bd5b9670a1296427a23569b8ebb", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "4677bf2151496ceeb89c3d9d2f7627f957416ddba197208bc4ae02d931bd16ca", @@ -19503,17 +19503,17 @@ "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "6867b3fefe40bbdf848693ad940eb096c9974e57e476f1efa9201c30502ff621", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", "T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "070bb54a45855466d81f7f4643ecefddbd1a7fec207eccaa6434e99b6f924f64", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "a6f903b4bf980c31b9cec0935321edb15bd501cdc1f9b649f9520c126680c1d4", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "ddf3efa48a3cb26e8f9ab39998322accc191580c57c304c5009ecc44f4973d14", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b9cd908b75846734e8188c0de5b79fcb67fb05a8989c8108d9d2ec09d930a064", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "729e9a09d3cd2c464be0db41089a19febc3fc7bee69b00f55155feb345006d7d", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "0ff8137d83b913e1baacce289700727f393553e98b25f5d1881e92b4038f855d", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "c5b13d4ab104dd37426f6f4e4d787409b8100dddefe6c43d9af0dd1475b92dcd", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "929701e2700e357a86358e2824137e3c38931c831c5e269180a24a36e86c66d1", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e9c33f22bfe1a31474fb74a00a26b7ce2c8e0e6f55e747ebb94eedbd58a0bd3e", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "59b3828c24efb638b20e5699027ead8041018be14abbeb2868f3d1ed2d19d546", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "fe15addba0fd2cb2b6fdab85892f47d4bc4150a9d2857182163886e1f792d902", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "ee5899d57c1ed38dd35bc0703bf95a6c8d52915f0825972371c0b63ea7302ad8", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "26a5d7c36ef9b2208c9489d4290f89bd5ebe14af687d10b62beb607c6d87de21", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "f20133b32fe87f2b4ae40acd1e6e2852964fef03bcf6e82adb7f90822ffab8a9", "T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "f91581bebc54a9bd1314dcde8875243b791f5cf6daab448018825900b4ee4a99", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "0ead9f3d42d1b63f58f378ed2eb35871a2d862b478621015a33abdaf92efb94c", -"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "56c2dddc73dff915e6930619f1f8d09257d91827d633d01b7ec20934e7f112c0", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "b10c416c659d80001d849e3e8b6cecfae1ca27572fdd8f7ced60e51a765299e9", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "5bad7e8b5c8351f1db97faeed465f25b893532acb77ad1cd7e4199badb3f2b30", +"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "5c640b3305e92f2029b09d617305382eddbde2da01935ba7a44dd6a94e3ed932", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "663003659ab1440aff0a8fa5b6db909d829451fd574406d8b9347f7c42bba676", "T3T1_en_test_msg_loaddevice.py::test_load_device_1": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", "T3T1_en_test_msg_loaddevice.py::test_load_device_2": "29a375fdc54698c78a2117e6a37bef344b85179bfb15af0b4dbf649153b14705", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", @@ -19523,41 +19523,41 @@ "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "d5e2fa75fa82852c35cb1c603a225cbc2bb42e4f13fbbf97476c920962597c4f", "T3T1_en_test_msg_sd_protect.py::test_refresh": "dc1171b4b1fca407dc1692e624c16c48421ae42ef665b58394fee0896a79245a", "T3T1_en_test_msg_sd_protect.py::test_wipe": "4f5c7c7ca1e2c8bc0f19886b9dc3a9c75dd76fc918b54b7d54fe0584072bb162", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "5f028a734aab47308d24cd1194b66e5d6b0d1feb7051f044a6e2403ef7db313d", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "96822ce9894896bc7c04223bf226037cc6786ebdec84c8749f8420ad48954a5b", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "901237acb1169340674c16b654913676fbe8bde1d5917c8ea8f640a331d79387", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", "T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", "T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", -"T3T1_en_test_pin.py::test_correct_pin": "f900dcbdd7ca1773a7dc8b3ae7a00843d997cbac426546dcec2abaa09aab2a01", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "e792f122bbd455b39f88a136d9e2912df8ed703096c0fa3df6383c8edb86d1b3", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "86bfec158f147bb95a6e2f1d246bfd663d9f64a3ec3ad5c63373b12a70c57637", +"T3T1_en_test_pin.py::test_correct_pin": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "4342bb5591d3fa8fa59a3082b50fd09fcf59170a554a2dc2ad36e5ca0bf44e37", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "1049dad031ef6efddc124cfc9c9c9db47868a8e498909d187967d6b1accce294", "T3T1_en_test_pin.py::test_no_protection": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_protection_levels.py::test_apply_settings": "d1a8cc4bc1ba6de633f285c294c9b66a704394140095e854c4c9aecdcc96e2c2", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "d8e4ed259c16fb3e79a1a1dbc34f19022b50daeff3b37255c1a0692af962699a", -"T3T1_en_test_protection_levels.py::test_get_address": "a21a7134e1020a3dd61e8d4de5accdb5b6a75343508b66c4be525961faa8479c", -"T3T1_en_test_protection_levels.py::test_get_entropy": "68d2978ced444edb12b093ff579edcf018481c69d6fb8b80103ac3e836dafb4d", -"T3T1_en_test_protection_levels.py::test_get_public_key": "a21a7134e1020a3dd61e8d4de5accdb5b6a75343508b66c4be525961faa8479c", -"T3T1_en_test_protection_levels.py::test_initialize": "2408c175321abcb0a77a5aa54986f01ad7b18e42c899315bc16e32dad63d39af", +"T3T1_en_test_protection_levels.py::test_apply_settings": "599a2707671119060044062c830ada7913afccbe5dc6200e6f6559e701c160b2", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "fbcfad19fafd76c22fbc87d0fff0dceca79cd6a4c1ca3bd86703653f51b78578", +"T3T1_en_test_protection_levels.py::test_get_address": "5219fa332c6585e4e396d75e01d3a3b58a43d73425895007b9faa4dc7f6195e8", +"T3T1_en_test_protection_levels.py::test_get_entropy": "9e34c5bef32a2b25e4db86f33a4f3fc27d20e9ee0e188b7de284355aa2703561", +"T3T1_en_test_protection_levels.py::test_get_public_key": "5219fa332c6585e4e396d75e01d3a3b58a43d73425895007b9faa4dc7f6195e8", +"T3T1_en_test_protection_levels.py::test_initialize": "33f755376adf25e06e3f738f30e537ee2898f0e5c587b545f504d2f2ec25638c", "T3T1_en_test_protection_levels.py::test_passphrase_cached": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "caed66551d7de52bbcdc8a213adff0c1c9cc1581bdbb09ce631c183c8e8b63ec", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "4309a1d9b0bf2c27d4f0c0a84ca128178b1c3ad3cef171682f17ba4a5d662463", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "55672d1449c73395c35e8eba18f9340e17f0472d3fdf224b7a3d83e7f410a885", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "97614a2ffe8c8310c4ca779b61c4f906d5702d9162f9a702c0fc32d602b830e8", "T3T1_en_test_protection_levels.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", -"T3T1_en_test_protection_levels.py::test_sign_message": "3cc41baa365cf995b333c77a3c05504d437dc376c666b3081b679d9c3362c969", -"T3T1_en_test_protection_levels.py::test_signtx": "08587513dba30592a67a47503e714250b376664a55f52f4064cf27cbac4a1bec", -"T3T1_en_test_protection_levels.py::test_unlocked": "f699b239a3ad2f0e604ee83f7cbdef1e128834c6e5ea1af87d41fe1e7029ea61", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "e9d95dca8dc7d560c7245ca36249125329e388443d3b0d6a059fdbef4af4f0fa", -"T3T1_en_test_protection_levels.py::test_wipe_device": "e4dae866092052f77d4e1c0780de4649a40719faa67825fe5641f707c9a6317c", +"T3T1_en_test_protection_levels.py::test_sign_message": "4bbc90ebed65a7d510d017dfe8aff60e7678985ff8c59ac94e16861e938d4b2f", +"T3T1_en_test_protection_levels.py::test_signtx": "fbd9f4d5e4660859d2d275fd5af54a5b0d68552784f9efe8d06bc4043e13fb74", +"T3T1_en_test_protection_levels.py::test_unlocked": "83b4b66331a994e98b1bcd9220c0e02f2d29d3b2985ace4c5b3f67c219cbfe28", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "fe83100191f89af1aeac2ba9ee6a305c1c80aedd1f886803e45fe8b5ef131c7d", +"T3T1_en_test_protection_levels.py::test_wipe_device": "1a0374467dfb41fc16850c48ca3fb4ab72547ef581c569dfe55e13c390f7f3af", "T3T1_en_test_repeated_backup.py::test_repeated_backup": "7c68ec0cf6cb63b6009737cdd18fa6980f2fa81e8a074335660d92288da5a57b", "T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "de2b2bc8b2ecb9f606ade6bc3c56f5c65a3172d6d38ad068c30a4a52389c6fc9", "T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1076e3ce540e88adb03e97f59de1866fb290d2c5de65bdea3330c16a891a0c0e", "T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a73142de230f60ce35fcf131ed513655adfa7df17731b09eec6a11d962a07ac9", "T3T1_en_test_sdcard.py::test_sd_format": "839580564292a157fc64c042538b6849283501ac04da7114d16974d345a3ccef", "T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "c3c3e35e97b9b09bdef622b3fb715f68a0016bb744f9f7af11b0c30b075765fd", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "847cd5157b212f8eb8e707a53b0aa7187adb6ba4c6566875fb0a6a5d91a3fa72", "T3T1_en_test_session.py::test_cannot_resume_ended_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_session.py::test_clear_session": "816cefe247406062843f4460c08a80d40b5ec8dfe2ace59824965a62b51d482e", +"T3T1_en_test_session.py::test_clear_session": "a721374b718101fa034cff7d59969c95806cab958cfed705fb2d83aee06f74c5", "T3T1_en_test_session.py::test_derive_cardano_empty_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_derive_cardano_running_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_end_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19569,10 +19569,10 @@ "T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "5389a24e5e9d99a1c4e9910292de37720acacc5f7c4aff9ef661475357062d08", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "546988b0e402ace4b3240ed3a973ba35629872a69d9cc23b25878c7ca9b08512", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "4c18721a6d8180ae003cfa8d434273704be8090646f2ac49584152bbe65e6dbd", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "bc4f39786a92ed52ddb564037b23be3639813fe2189ef9117b90fb62d3473688", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "8b882408869f267b9d2039890d9ee6fee6d9ca08cb42ee12ed1a158f528a8bbe", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "f9af547703ac43f19a4ebf1834f0335af8f9eb791aca2fb070a68dac75727218", "T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "e6594b2d7a799b113123cfea4ef5ef3662943eb19178f3d2a336d5461e7bf7a6", "T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9fefd47db12895cb9f34c6e85fc57d683edeabf96157a6fea0cb1e94814380a5", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2260b3ddde77ab38e6f1d8c373cb3fcb5c0763ad794d364770e68657ae72f1bb", @@ -19620,9 +19620,9 @@ "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "67cce35faad540e24df64451de67cccc334b76a931449b5c6cb173768cab0e64", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "214466d2c0357c010e2df721b450736747bc57268d566f370973a3802f13eb22", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "48883805f726692aa612ace74c51d0b0c6fe06eda6898d41c80b9c7eb3e44030", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "33d81574a5bfea64f6c917467b79397daa05e1757dbceb9be6306f363fd418d2", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "33d81574a5bfea64f6c917467b79397daa05e1757dbceb9be6306f363fd418d2", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ef2ea30f4ae3da933ae53bfb1b741c94526222bcdb3618ef5e27c04ecf2f7b26", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ce133716ad2b897c7eae7f2df50a345a27d5307c01a346060a0b19210d8067a2", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ce133716ad2b897c7eae7f2df50a345a27d5307c01a346060a0b19210d8067a2", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0efcb7411cd00037f181341983a0383978527ea683a9ee7b2f6a67d015526e84", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f19ba1a048878a769fa8b842fd2a23dd8533e0b72c501fe5cda93a5ff9075241", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f87ad1b10316f25c869668f96fc8a6bdb47b3d9bd6aa7c201882ae179f2a91b4", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "f1bd5bbecaa4460f1171ed5c9c140babd496843fbfcbd61bf748fabb4f33ec8f", @@ -20589,7 +20589,7 @@ "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c97e6b756a77c791fb30953d220bdd11d8ced8b90bc9d1863c58da6d64c827c3", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "802ff568634ac2d156100f8db9e437a3be962e3b571fd5dc35226c52e32e5093", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "754c31eb947e6ad8ef31aa13539e4d8eb2b938160034e2366582ccb15223d883", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "11d9d8b2275d8a5098e9e2159f7c6e70832381267bc2b670dd105c3cf033edc5", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2b11f7167920d97fce59ad69d21e985a26b7f71cc01ef14253b060d87c760e1c", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "cd288bb72f139fc127c5897aa69686ab08530a48b7a5a19db8e56a058dbb2c5d", @@ -20604,7 +20604,7 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "baffaf07ed5a24adf942afa72f8249ac526e28076c4c6babf13976948a5a25f8", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d13986ced2845d8edb6e4d7c3ba5a878597fa999ffd6e650f5ff6c3e0bf1a171", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "1e0a4aa56cee727ebcc02286137e44596f7129940abb64e6e618ae774e53625b", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "095640bb22f2a40d5f1c29dfd90745e4d2a2e63d66333672f3df60b4c5c1b252", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0b0dd9f10bca3b438b2f47c36731930d441238f7dfed933343d0c856466ca947", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "6ebb8db786aac030f7fa244ea65756cb9657a1601d7b02fcc2be043fa05956cf", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a8af7bc481c95357b51959c290f396fa083f51e7272b2b33756e568d8b41798e", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3dc24ecf1fbe182a6b08328d16abdc652d0f976b9766b96ff5ace9b90fa9a926", @@ -20621,10 +20621,10 @@ "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5994c09a792afffe90a4b821d88636bb81f2abe96da6de3e1e724c86d96d7dba", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "495df945eae80c53c83ac1be361eb3cb9ba9336a04a4039826fbb729e1fe8246", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "870efd8fc9f8585a309dc93f57490b9ed286006e4f8adce58a8cc077a3185910", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9895a1e7c7f48d639d1b76594f405b8ad79d587f152babcdc6737d6b24789edc", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1e5840d00919ce05da33475aaf732dbf20ee9454a1efac01528a27742ac75752", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ee093205784fc8c2bac72f31db6e5e038255219eb1ee488c4422c177c6f7a11d", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ce6541cc06f4ab247cfae60b10df9f1140c83358e395a284b3b2e56acd7a4a3c", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "07a50bd56d8bb3ccf5aaf78293d37aa0926b655474a7dc17afd05b1d38d3ff9c", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3969f6fd9fb280cb72f8b3552f035c84e0f44c4243fa003d050511e3ffab7bb7", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "bf43a6c22b64b6e201cbe8a177b200e86dcb41bbe05dba55c8fad36cb2ff6b6d", "T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "612e84676522be4b88d9f320b3162b95a362574229ce36a61fffa5584d09be0b", @@ -20773,29 +20773,29 @@ "T3T1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", "T3T1_es_test_authenticate_device.py::test_authenticate_device[]": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", "T3T1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "bf427474b72b864ba7a5206f0fbc446dfdb6119eb17fc9edd4eba51a124dd1ff", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0ef89b00ebf5965d2714a7c44c0c67e3878c70b46d3f9313471da1a5411c34b8", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "31673e3bdcd8cdf1165755a0d244b7606d57d73dc9927cceae565022de5ea1d1", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "da3f07f0dd55f156b6cb4a634fbdc92ebbf4c5729b4eefdf7bed9ff747a0ec29", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ae74afc93a18d1298992b9bbedd6f0545b06f8b2c73e916fefae5d1a58e7e5d1", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8f4ca1aad41fd6bf118916edfe68471e16e2a09547688f5f63b4f833e1681fc3", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "5f07ce2e639e4b0d730b4b5f80ba8c60e645929deb6647f8d9adff89b076e7a2", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "c730bf37cca9a66cfb04e5badee744e0b87d4e46e31b4c1c02372f44705b809b", -"T3T1_es_test_autolock.py::test_autolock_default_value": "4266d5cde81251a77a6c693cad09705ae52be8f7b376cf86f6bb53f158165764", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "e491e8a0f9ace3cdd0b8a2c56e68d2a78e296b8531f069f5a015302c24cc99ac", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "e491e8a0f9ace3cdd0b8a2c56e68d2a78e296b8531f069f5a015302c24cc99ac", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "138fe2e64f0482b6438c2c1311baab0dcf9c2dec334dcd6b6d451ce3d74c7bd3", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "75007fad5a482cb9b4e5322e4f2e2e6d1ac7e34d23fe7342f22582c94fdabfb1", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d207a321ec1a3f15db80431b4a09674aac86be043d1c1f9f9fd5444920cd50d2", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5af7cf41c1051f948018c448ffb7c914c005eec4da2dcb2f9b205de7cfcea154", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "9521f51939b6ad3ef8fefd0e632378d4c02718ebc74bc5e72f1a9c2dec7e28de", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "c8d5a9aa16243a1352a60f9b44f806b675f5010da969ea3a6972bc0db4ef2f2d", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "1d79f4d2c33d611fd029514ae1e09ec73e0f77b7c5197b367a00fd6922e1be08", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "2bca22f069afaf192b2ba8289a1369b4acc9d980216e0c020029ab37b90e8720", +"T3T1_es_test_autolock.py::test_autolock_default_value": "6ca410ea82138daf1ef6e6c98a91b7c7b4513cb128fd95c3abddba61b91a47bb", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "5af59690117138034cd7426b51bab1e56379482ccc1d1e0cf19bc33866a2649a", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "5af59690117138034cd7426b51bab1e56379482ccc1d1e0cf19bc33866a2649a", "T3T1_es_test_basic.py::test_capabilities": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_device_id_different": "4ea340424999182f67fe9b2313142055d2bb5a7407efcf6caac9890d93d9f1c7", "T3T1_es_test_basic.py::test_device_id_same": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_features": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_ping": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_busy_state.py::test_busy_expiry": "b9fce5bb65a28375614b3d0f0be4ee86334bced0acc6b8515e364e5c4668f4cc", -"T3T1_es_test_busy_state.py::test_busy_state": "f42729857ca0c4336f9d129207b82ad36c3718636e9629b1e3971187e3da9b68", +"T3T1_es_test_busy_state.py::test_busy_expiry": "277899ea04ce989380c13c50fcf28367c9b83bc71ed26980ec022b5fe2b85c17", +"T3T1_es_test_busy_state.py::test_busy_state": "baa98c352066ae48eb165660e727b0ed01051c0b36ff7d217963d6c4e5983fec", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", @@ -20826,15 +20826,15 @@ "T3T1_es_test_language.py::test_switch_from_english_not_silent": "341aa1930c0757e8f6b630760a40ada16b26b03913c9052efac175b01d2b6cbb", "T3T1_es_test_language.py::test_switch_language": "70376283f804705961e1da59eb547e1aafa21a5ee4252683af15ea306cf9c0af", "T3T1_es_test_language.py::test_translations_renders_on_screen": "c8c6c9478d53e92bbf12dfbc31cec270b68010101ecab5a761ed2eb7f1d63b42", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "b0aeec79503056d6b9f93de45bfbbdab6df6fd327de406acffc53141c9dd2a87", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "7a16e5ad17239a4ef04bfea022367e6c585f628861e33ea203434c1b4cbfa09e", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "2e639e31e66990fa6898b043903d33b84ea1a276639aa441c47a2057a3b1bfbf", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "445070681597e71c74303f96196d52b1fb31aeae43a2f800d764775773c2a7b1", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "54eb1c593af3da5c86dcef796df847a7c2bfd32fdf6cce278315d7d5b7ef13e0", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "2e645eff217771b9d352015e3d33135422c7b66960da99f3274964949f2efd8c", "T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00c5d64174cbfc42469465b5e80ba5a1ba5eb4fb56426994a9b5ad335dc8438c", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "22d9babb423b1f9fc2499cc01a472ef332da28b9a36d978dde9218fc69ec00b0", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "c5039d1741078c6aa3f8537187bab4e12b81b935883857f0f6b2064e100c9f88", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "049e36d2d773f6c8f08a660a80d41af17ac33fe8d8cb7f7e27c26e9927311a71", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "83ef6a07c6f27cc878273bae66397b7d8f3066ba7732ef1c2d35244c8c9aa409", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "0cdbbcc9774b858e0694802f24f0d89241b7c675a0732bd3b39866d17ce000ac", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "176744b9af8759a11b5f782ae3e7e6e65a3526203cc09f574304860dd3ae1b06", @@ -20848,17 +20848,17 @@ "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "02a2731bac48449b027c2635a31f1c0fe7c1756bfa2c7383eb49b07306432400", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "751281a48ba4cc3599dd4808da19f299e55f13c91f991112f1dcb9a9c2a490ef", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "70f6e517ac3278180d21c13854570949cd0a9deb66cc7123d611f79f578401f1", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "a8a03c2305db74921432c202e39d0c1d12199a13984598e10981d253494ef49e", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "9c27015d966a9bf65cf26bf6673f1dbb0b4674f973f9c84ba59f2de735991165", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "dadec8407a61bc3ff93e92f25b287511c42c740b03780b02de9e8787de90be1d", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "de7339b8ac64ca601c7cab9b02a242224b0aafbb40d3feeddbac12a686f46f48", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "f89483dc6f9aa7809ad03a113f705c9fdd9bb42b1f5a40308503e9cb35cd7016", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "421c61673386a0b91e40e16174f442b3512f9416bbe0d1b6910f71ed1447d49e", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c60ee9c656fda0a017c6b4c48130c90979057bfd69363c9afc2a2175b236e40e", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4b4646f4f8d6432bf7068e820f297da75b7fdfca23cc974de48e4bc43e096076", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "1bf2082de97d5ea56949620ccd1da412d365d5af244bc653b48068eb68a27837", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "575d01fa1353896346293c6f3aa85040aa38267e93d933553e219acc3a7fdfbf", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "565b9029a8870b79665afded435bb544e82e8b133cc26a4637bfda56142edf0e", "T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "58597f0ea23dc1b1ba2009cc073df5672385484cdeef261ca6835c3b8d66fc2e", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "d1806b5a8cd6f17db435c0fdcd5d85595f4063dceadf5b9cae80a3518efcd853", -"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "95d4ba20a8d9eb42968ac38d33b3735e287a57391de1f7ca04ba95e7858ef3f3", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "6eb9957d5e89f5e916681b9b14b7af838e1ef0cb7c366e6ed8018a1d820aac3f", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "3089d8358b635e98e56754af52dae4a037f088d41f52296c531a05c47cde7b27", +"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "7c9576ff8fc4c1fc3b87782aac6c015112ee968959e1ddb2bb8e3717ddf195ad", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "b6a51a594bd966053354f534055f271c612dfbe09863b9d1b8c831a00f47da45", "T3T1_es_test_msg_loaddevice.py::test_load_device_1": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", "T3T1_es_test_msg_loaddevice.py::test_load_device_2": "70e77e94e8fa3d620fd67afe52287641fafe34ab5761c0818b6dc1b15ed38b52", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", @@ -20868,41 +20868,41 @@ "T3T1_es_test_msg_sd_protect.py::test_enable_disable": "a8107de3f7a7bad5b3f2d8172fcf87996980666d3f0b3553c966b05992cb7efc", "T3T1_es_test_msg_sd_protect.py::test_refresh": "8f8d288fc62b62970771d286e9c5601fbb44cb33c0b4854f8da43f0561ce5650", "T3T1_es_test_msg_sd_protect.py::test_wipe": "4793d917a34e5c8840351489b2d57a8a78070a732f0a37f8bf01558c7b605f25", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "84147cf0c282ce3c9e133d5099218e18596be51b75becf9b64d5fee6bd53beba", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "23f730cb4fa35356928eca40fc7a42e6d237f140eaa72b8812648ea39a8c1984", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "4ea340424999182f67fe9b2313142055d2bb5a7407efcf6caac9890d93d9f1c7", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", "T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", "T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", -"T3T1_es_test_pin.py::test_correct_pin": "35118cc3a7599f1de783d3506125a1cc002423eb7844659967495e11744fa106", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "22da7e262f50821b1a551851ccc0cf3edb50eb9827c294fb321e3ffe061237dd", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "5a25e51200bbcf1b79dbfb898c63d180e8ac65a7c108ad54138b131132bc811d", +"T3T1_es_test_pin.py::test_correct_pin": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "f69c6a0f2a7decf663685ecf90434b80cc3d3dd9f314cabae0971e43ab8d33fd", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "2ef02751ea2c7b5df1368148ce7916d2d6dfe4f1c5ce5f07b82c971730458406", "T3T1_es_test_pin.py::test_no_protection": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_protection_levels.py::test_apply_settings": "5990fd8e06b644fcbb7b97a110293b6c92d5be139b00f5766506029e9663127d", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "ef59b1df7610a2f42099ef5bced1cb68cf311c719e1fdc415ca69e7da005543b", -"T3T1_es_test_protection_levels.py::test_get_address": "1985691a738d4ea9e013146238e009ecae2de902805e44c29e7c37eaf96bd7f8", -"T3T1_es_test_protection_levels.py::test_get_entropy": "3df65d417d31ac4e0f6db6b358050d64ad94e2638a58457ca08636f4a935654d", -"T3T1_es_test_protection_levels.py::test_get_public_key": "1985691a738d4ea9e013146238e009ecae2de902805e44c29e7c37eaf96bd7f8", -"T3T1_es_test_protection_levels.py::test_initialize": "8e725f28a23f8cd013e9e65c29dbf770777472e2804bef25c8c1add8a670a3f5", +"T3T1_es_test_protection_levels.py::test_apply_settings": "781bb123c51128a8ffb1c99209bed7ecc0b1bab10f380f8a438dd54c999e6fd7", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "c356e4edbffb540fd9bbe211f59744a36ca5a2e537989f39542b0380fe112bc3", +"T3T1_es_test_protection_levels.py::test_get_address": "7cfdd17fb6d9ac3352b1f7e7d20832e39845fb9780a389d672064cc253aa02e4", +"T3T1_es_test_protection_levels.py::test_get_entropy": "8491027e26f3166da96eb42d24d1fee0cb831f831a123549f0b82e4b6b8bd4a1", +"T3T1_es_test_protection_levels.py::test_get_public_key": "7cfdd17fb6d9ac3352b1f7e7d20832e39845fb9780a389d672064cc253aa02e4", +"T3T1_es_test_protection_levels.py::test_initialize": "a52bc12f89b3a4f6ba12655987152016a9a95fd635dc68feff8a694c619bec4e", "T3T1_es_test_protection_levels.py::test_passphrase_cached": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "2bc159cda3c44404f8e7dd20e496d149ed71a9c741a4bca0dfdafd292a719c49", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "754bdd953dbccc4a4914c6d6f8abad75d86d21b426eadadb94cff5b4f202556e", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "d5f99d01922edaf5170e7293739281527ec9571260e5283153b59a31ba7f737b", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "53fa322176f503d836a0e73b82e63dc5ea4c64d7e7c6153323edd6926b026fe6", "T3T1_es_test_protection_levels.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", -"T3T1_es_test_protection_levels.py::test_sign_message": "af4455a770b292d2a873b9745e85c1853e93d3ad236397d06af73bb34b9f31ac", -"T3T1_es_test_protection_levels.py::test_signtx": "e6153b5c0876b19d8fc873b139cbbf61d5d4f00bc614460b407911f3aec59b48", -"T3T1_es_test_protection_levels.py::test_unlocked": "404859d4dd69b4cd2a9f6b4e24d972695e071d21a0231a86004fab30841a0a4a", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "168315a08f77eacbbc016a7808821befc69144da6c62a666497925a61adcaa3c", -"T3T1_es_test_protection_levels.py::test_wipe_device": "604df1cb79d3e8b712e3d1d7590b5f7a8619ff19c54657c12ab34814f9b4ad7b", +"T3T1_es_test_protection_levels.py::test_sign_message": "baf4c1b79eab7eb294790f13bfce0be317faf8d0cec7e6c593cfb03ef4eb04f4", +"T3T1_es_test_protection_levels.py::test_signtx": "3cf1a2a281bdaed867ea3cccf3262f9ca2661a737bf7b76330a2d45784fdbd2e", +"T3T1_es_test_protection_levels.py::test_unlocked": "60ff8ec09a5e2deb2b8fac5e25164a0a27332644e930d36de289c81fb7c91185", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "4c7b396a68cdc3a60aeabb6dac07e5b2e8791a13f27c9cd57ea38fef72e7c7f2", +"T3T1_es_test_protection_levels.py::test_wipe_device": "842105bd5150e50eb998bf4d476aed61aa4597118b88e765469482cfdb3fed6d", "T3T1_es_test_repeated_backup.py::test_repeated_backup": "ed59223647e5ff848713761814b549da9ae8a82615bca4fb691dc26fd4f1aa9d", "T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "c0265d5c089f39b5befe97b7b895e83071a3fd8ac76be169b7a993637d4c1a13", "T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "aaeb88fc01b2fbdc5b1c4d8b1d8b9d7ef83c7aade0c1e97b5c397bdb14ee8ef4", "T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ce6bd18611930812a08b76ddb78a2ae114d99d4d35cfa7505239b6c59e0ff76e", "T3T1_es_test_sdcard.py::test_sd_format": "fee32110d7356e4ae73cf07d619e53cefde46823068f442799f3fd76e2ee9225", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "ee48d977aaae5c7e435ffcacbb2dcb2cbdee93dd564a0e0765622af1dab46927", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "32d043e1041667d0852cf4e146df29edf2495deab942dc88170b1f29c49d1cfb", "T3T1_es_test_session.py::test_cannot_resume_ended_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_session.py::test_clear_session": "c8cfe3a07ad6da67562a2668099dcad50007cad9e6bcb817b4108b4f6044ee5a", +"T3T1_es_test_session.py::test_clear_session": "b10f9d7bfc14fe05a8601e5ea3e45e63ea6730fa1c137f7b3d542be861007aee", "T3T1_es_test_session.py::test_derive_cardano_empty_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_derive_cardano_running_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_end_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20914,10 +20914,10 @@ "T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "dc447a62d85b77f0c1644fa4ecfc42f243772cc41a32e27a91b415a7808d65c8", "T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "1f8b359025d6ed864ab8eca8221284987eeb62de822a1051a7e2a6f8eccfc874", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "554b98ceb2d9ee191e8f8913ab087e5517dd76e11a89bc1c548b13889f083ed4", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "7be553ea978220b1bf49a1ca359a92f6531b0cdc333449b510b990e92d70e73f", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "462a1ac3d2d5fd7c4728ae9982cbe44eb74938713d77dd248b2629c025e8f62c", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "4c604de2497f84580864c465f19f048c74378b3e078c599a9acc210ed5b1e679", "T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "74664875d2f7c17c91e4a850e5cb99eaa27b9af02ac7f53aa5c8ac059fa70a10", "T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "1c9452d995b711de9986e7ae260bb2f6f382e54a720330f989afffecc11449db", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "faa3fe89f0e40b73585f8ff38a46017fa083236ec02a3d3d847980e5d8f18164", @@ -20965,9 +20965,9 @@ "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ed918a22412456053778cb6bcb6c637fca336f794973ef01bbac07be0ce53ae2", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "5214780974d69362699b9f38c5a96565178038035c4769dd6aae33c62abbd9ce", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ca881290c32ea550e86f81a1b3e00388943e74f55fbfe88257aca55df30c7dfe", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "6ffe0668a0ea3c0168b4de5e495055ee722c7936f6ff5e6600382b9e31230313", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "6ffe0668a0ea3c0168b4de5e495055ee722c7936f6ff5e6600382b9e31230313", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "865a0ce90ecb38cb4a30c53093123c7989daf69642ef67f9e51c6f4c6b757154", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c5c9bd8e31ea68343dc88fcb76fa8e3a610404dccde7ba480a3c4757c4b629e3", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c5c9bd8e31ea68343dc88fcb76fa8e3a610404dccde7ba480a3c4757c4b629e3", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4ddd3ff4c628122beaca8653ca438adbdbc50219c114efd26a860ba803a3f7f7", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "92038e8b4c4561ff73a058dc18b90b83bce84655ae1cee83c47cea7d50bc9e58", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ecca8935b1780e4ac72847a9691bf0053177ae42f76539af0c5b87b8e9014251", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "3aa55fce9aa0bdcdb3b1621917cb86ceec54e898246023556f1d251c6fe4dece", @@ -21934,7 +21934,7 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1fbf5a5c8ba23a5bfb4b479a4e1482ca1d3dfb81a4b8418166a6ec61de5bdc60", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fc65b7966ba7133f913fdfec43f57451c0454e2daff06bc9de388c389cb6beca", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d1b97b4d479a1967024ea8bf4045678bf8daa883162939bb5ae758f6476d28ee", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "dcf57e2598cdd35c6d1726d44cc020c4bef53ee1ed8624224a21025c96668be6", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "f98108464b7c41ed9b5ff1d4a9321a7f6a81808abed2a51492fa3ddd5490152b", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "4fbe525092be7bf965cf58bd43baa5201ae496ac97dddad9e67c3f0e78014e9a", @@ -21949,7 +21949,7 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "d72559f0101011f626c628f1972e90adc3ae1ddfa3df805ac32e259d64aaa4be", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "8b33648f7fc7f020fa26961ceda14fb4a22c3258843e77a17bee76babeae2ffd", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0efff5854b2032080605a5a69db77b0c4bce4af3efc29d5d04c456eb40ebb8da", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6fe760cf20032efb4037b3c75bfecc719fbcdf453deef522eb9ed7322de57dd2", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3e01f1816d2d53dd86194701c9adfb6a4f5d0c47b50e442fe61482b0bb094afb", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7287bfb1bc62b292f70304a4341af5a138c30e0cdbca975d6bc65d852405ef9e", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6e9cc208764961393fb0ac1bf1eb321e2f8e4ee18f5530355b8f9f20ed4161bc", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "81c02d5b9de28634d14ee4a8383b2c518f119a7c650d806bf5bf22ca8dd98941", @@ -21966,10 +21966,10 @@ "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6b0c044b0a04951df5c04f7af76f3415a05864ccfc91ec4618feca65c30299cb", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a4c9a3d0a9e5b2e20189911d4919834204abfbc87881b6f7fe10db2d27fea4a5", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "fb56b159c0d2a5965a6d921d704275e5f9ea9d5522c4c1f1374ab704d531edcc", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c4dc040032e12a2d593c1fec9dcdbf0260957a389c55a56eadafe87947c77d5c", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b69299b8e3b0c0514143d99b7f294cd92064f9b366eeaf8b942438e12d37c7b9", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "87d97644bdf6111091f8e8860b224dd3e65c5ca567484622b07a19180360a827", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "29604738b6aa2ab0e3655212536305a57279fd6849dc9a74c01b1c535dcd50be", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "13550cd538da526965c6fc3c95c25c57afcdd94d855fa28e8beee0c203f4700a", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f4b829614861c7243f7a8e1a21752ef46d36aabe0976329da49cb24ddbb491d0", "T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "962ba6124c964d7f65c155c8dadb900a8321823389cedf2dadac501c3498db91", "T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ecdc734474fb85fce67b058b2111e0b0e3927cf588ef54493e0bcc463c34ca30", @@ -22118,29 +22118,29 @@ "T3T1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", "T3T1_fr_test_authenticate_device.py::test_authenticate_device[]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", "T3T1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "270fc3fd6c6edb5da0e119d509e96cdd4c592a8daaae462d99dde81ecd2e6dfa", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ab0af8a2eb878968dc70107e05accee245f2f56149a8eac93852b7f2a2eeac41", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "8f9e59f0cc788666e246a88127aa398d8d5757c6e12aca760c488dbca9946d11", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "80a549e590445339458b8592aa8abc43537d57f37b31f9aeb839e2888b2dec88", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4954fd96192e9e23e69d4ab44b3bfe50ae1ead89ef3ab8b089a6f5ff1fcd0c5a", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "396dbbe526aceac9f939de89acbb334fe2358e2b804e4166f9d39626eb43493d", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "ba226a73758cdc08be7287fcf4aca1a6bbb59457d3e1372f2a7503ce6f7c656e", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "2cd69dfac5e8a4bec39fa8198414f279615da589dfca3ea70a96c150a3b231fe", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "5857fd91729f1e3a5c8ca9265a9adcf1701495015cd0291048bed518b643ecd4", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "5021266064daff5f7525bdd3a0a66095100c300de30629a5333aaca06835d2f2", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "5021266064daff5f7525bdd3a0a66095100c300de30629a5333aaca06835d2f2", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "b67468895661ee48749bfe1397a7edb5a7dc21ecae9700ca8e93db08193ac7b1", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b5649529051b59907c6786d4362fcc62bb23d01e6c69af443c96c15fd873cb0c", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "81f6524e50707b1b47966b396fdc174dde46e2a51c7fe6fb71ffecf186b5d04f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "6b62810a1d3a3d304d01069463892dc98ca156a5d41cd945a5739f0e5298aa3b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2e6bc18d2802b8aa2581ba7a915db8174a68a102aa916537ba805cc8d808cb59", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "78d6b74d795fe3afbb1f6ff3a2aa6b1ca9291aeb361f8cebc2357c07f9a30736", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7be28fd61d002e40c9c18be51ed843caee2491e2d62fb7803337a7129d192fd7", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "6c2928d56dea879f6cb6216dce324a3da5951f382d250ba658b2bd73538fd6fb", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "29fcedc6145d3f02a45187a35a0208eea78aff50b409c331cef56cf2f94f63e5", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "8157065b2a62d0712dfb3f62e8635bd8765d7d1c5ecd6f0714b2982baea200ee", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "8157065b2a62d0712dfb3f62e8635bd8765d7d1c5ecd6f0714b2982baea200ee", "T3T1_fr_test_basic.py::test_capabilities": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_device_id_different": "9df9cc6d3151cfa0c19929e885d507379216ddcbb518bbc1e427e64eb0dafdf5", "T3T1_fr_test_basic.py::test_device_id_same": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_features": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_ping": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_busy_state.py::test_busy_expiry": "ada47de94f258bacb141bdbdead093883cf8c619ebf2d8bb93db3e551b15111c", -"T3T1_fr_test_busy_state.py::test_busy_state": "31611d7b8e22005a4705a2789dfe8578f524b4f842696b77eae3e6784193de73", +"T3T1_fr_test_busy_state.py::test_busy_expiry": "659104d2bf399541044a8a99a2984e9219d672e55ca28557bc8d0f227a255a92", +"T3T1_fr_test_busy_state.py::test_busy_state": "2bbcc7f761fbfbc7920d0b14f03964c02aa901babd878931a20f2ff5722f4567", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f201ffde0a95ccf50c2a3d176a81fe7057dc8a1a35665a9e227c451c2dde4de", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", @@ -22171,15 +22171,15 @@ "T3T1_fr_test_language.py::test_switch_from_english_not_silent": "2924fc0c3564069dc503497e0c019c57ed93a78f5e2d051149870d889a561680", "T3T1_fr_test_language.py::test_switch_language": "20ceea46d2baa50c1be3de93b9abd3371f4a04eca1dead20bb1dcdbeff67b72d", "T3T1_fr_test_language.py::test_translations_renders_on_screen": "89126c78192f2671e3c71eb58ff1e22f0bb5f7248989b59d441a51db559c61cf", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c4b9f417a5e8b0e9352ec51b38c06ee1899191ec44d46f8626ab30a8ad6b8b2b", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "7a2acf9e2e70ede4527805debf2e943f3fddf4d69459ddf784f7406b79daad06", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "0ec79f61159160796d6033c34f6f56597cde2ccb5c029d8f31b4a7cb0ee0ac80", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "5902d501b02b639897ff25a83a65d9f5028f03e314e4260bd5dde1ccb4a36d72", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "63ef10d26a6847cdc34468aee6c1066adecaf4e345022f6c003d41602107be26", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "5f3b24fd6b5d293b943e2fb570c7c468b550b83fdce7a7738222c16c1d2a240f", "T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "95dc8034980a6c20e1f84cfcd178ed12cc87134b4536d7e5bbe375c36a293750", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "6dc83a0f334a9d57c59c344ef42c18c55dea33d1aae9c35119dd9f35a23fc83e", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "bdc2ef94cc757822cfa07344b11ae8f5a13dbe46445a526a3242cf1a5004ead5", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "946c2366506c9373fe7ded240d9d65299181da515fd3afb4ec65db61fdca4f13", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "efd858bccc3b4f1bcffecdc8ec19cfeba49f996716f9318f80b560bddb0b6085", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "71bc0ca6def2794a8fb31e7072d6535a479192d7298e4efd643d51b2d892ebce", @@ -22193,17 +22193,17 @@ "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", "T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "432aab9a0bdbbc0dedf2d72db65ec8e63d3699525f2119cf3542b6a41cc173c7", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e9d5a1f2aba032efbede9adc5c304b6c5b8f5a62119417f3aeb65dba71f22629", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c57acf3b869abad90ceaf4ab0f0ee8a3327d661447f6d025053ec37b5fabdd62", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0f8e026070865b9dea46e7f1cab96e217e80461e6c9c02753c793b9333f6732b", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "800ac175ebb09d19c1ba44417fc9f540594190602677c705d279c74610a64535", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "f04f75266b5aec0a0bc9ccc7543ff3869c6959c2216865ff29647c9915c49648", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "f38a3fdf64eba1d453a65435f85d4f85c368462967efa1d34cd97112af8a299a", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "aa37a8472ff51e63fd1f6eb7c777f78aaa6004f294002f005918e84d8e1bafd5", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "078200000f60364ece5353f6edff39093921237e15c71b552570cb9ca18eecd7", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "07838afe669643c13424ab311e55479ee20f4634fcc21b4065d0e237fc4d62e3", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "5e16e52fed6e93dde4d54c35cd754a06f93054dc12570706fa5488007a58933b", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "53903c5b7feee31387a0efa76d1c2185ec3f44676eec734c1246e89cb4b87e4e", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "71a7a5cb6f66cae5b8e3bf302f4ea14575419139d6296bf2c7dec20330ed36f0", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "037db15d454851fb93b74a156c9c5884241d2ac5ef4fe908ea10c98758ac2967", "T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "ef0fca1345fb5bf320a37dd2fadff4b21ee4f8062b19061ca7110e0ef5ef7707", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "59134b326445b09bbb709c7ae2dd93ee386e0c5f015840a817f790a9095e6064", -"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "5871f0d9d774b97af86c098216223b979ad1f753f872bb5012a97ed7ec5cb5b5", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "99c43ac0c47516cb81652c6cbc4954bf1c6ad657268a5b4297ff4bf5fca15cab", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "55ef3a2fa7738b18e9783a0ce01aea5ffa9f8ed7ba2cf76e9a9fc50683c60cfe", +"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "008b9f2ef29058840c1cf60687af750e384e57b4662b9a075d26ad320907f380", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "21d5b7ebc028884e4926496efe44b2bd40f966ef17a659e4bb7e4ad95ce73bee", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "7c71ebaa67e7742c833aaf8c2864cc256eba1abdbc086d2e81b96210610469c3", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", @@ -22213,41 +22213,41 @@ "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "5517902191007f0f26f45bb35d76a8b2610ab686e3b9bd41816b93122462e342", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "f1fb9de50cb9399786cf4b1de6ece47989ed13288fa6ebbf82aa03897b609fdb", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "3dda2a7bfa6c6df4a832d0a7f339f5b884b5d4ab55f35c8ca2d332316485adad", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "51517b14456c0b96c1fd58048d614df2730c934e8294b47199ce1828c03fd965", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "6aaf7e369a1b0f46982325c8a6070402bbff145b59dbcbc8eb8d8dca84cd8d9a", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9df9cc6d3151cfa0c19929e885d507379216ddcbb518bbc1e427e64eb0dafdf5", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", "T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", -"T3T1_fr_test_pin.py::test_correct_pin": "e937b71a7bce14935522e2e7b0395d7f2a1cc94e370fe7e3ff677e83aaed7c42", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "448b6650f2a1cfbad9deb8ed3962e0c8f539726ac66cd3a8f7d00192f7257aff", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "8b076d21902923727e38c2ba6230109ededd52d103b4f457f064a2bb1ee27880", +"T3T1_fr_test_pin.py::test_correct_pin": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "032efa89bd2af5c46ab6f72e266f1ddc86652fe003b86d8ce25268303ff07217", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "8b3da88d696e8b3ccc7ed9241a7f648480feaeb88395c2e32a169af995aeb602", "T3T1_fr_test_pin.py::test_no_protection": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "15207fbd74e95cf8df73a69bfef4a5a7d6e6a304c0ab7f4700eae1d636406339", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "043e0c350a6a8b659d3199296e3506f0eb6eb13d7be9889fe89eb95ec51cc9f2", -"T3T1_fr_test_protection_levels.py::test_get_address": "85e49edd200814e3fa1b8d74576f10cd1dd9adc58ae68785d1f55013f330db66", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "d6506916059a0cf85d2f3f32422089c3ce4450a043526c06d21a61815aca453d", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "85e49edd200814e3fa1b8d74576f10cd1dd9adc58ae68785d1f55013f330db66", -"T3T1_fr_test_protection_levels.py::test_initialize": "8abccd037825a46ef14428a85bf94c838d0ef6e28377184447d33851fcc7c16e", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "2bbd49003215b55063c16dffa9c3317174de3d625c0d8ffeb8095592638b1a0d", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "e5115a9e930c07ecb98351747b513238fb3b179fcbc8d62b2f35baac8042faa1", +"T3T1_fr_test_protection_levels.py::test_get_address": "7e4ff666c5f64885f4c9c492b421976456be187b383a2d7ee769cc37d413b3c7", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "1d30669c0066375881003fd4f4ceb43a857950c808eaa6bc4671613b81444220", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "7e4ff666c5f64885f4c9c492b421976456be187b383a2d7ee769cc37d413b3c7", +"T3T1_fr_test_protection_levels.py::test_initialize": "ae9db0858dd693a15fd6b320c54d32cdb3c12b08b259a1d3f7a7a4718b311aa0", "T3T1_fr_test_protection_levels.py::test_passphrase_cached": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "315ae604c665cf31460ea5b86231bd4b2346f421cf6ed9fe5cc48d90f6d1fb4d", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "ed48d6ff61da8cf8f86e22da930d6fb0f3ed0b1ec68728fd10ff509deb69ff9f", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "18f047cd9ba36057edfdb964393c5e413f072925d9dd6b42a367eec3b9b64db0", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "20c292c8b127687973dafad4acc0ccbadba686bccdb069a61ccbd52b76d98969", "T3T1_fr_test_protection_levels.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", -"T3T1_fr_test_protection_levels.py::test_sign_message": "cabae21466a69beac7bca8cc6912dbd0cbb17a24e866279fc2f401d93219fa95", -"T3T1_fr_test_protection_levels.py::test_signtx": "afb1fe7186b5c39640bc79d5bd6a265f2eddd8d4e0c010682697a10f3fa5c527", -"T3T1_fr_test_protection_levels.py::test_unlocked": "c09e246be242970b8212d67fbe78c7b807fa9c30e2e6d0ed02c498fa2f04e4ff", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "4dbe7bf8c482a4690d0a92635fa61d033f00e0aa16cb6aea69aa33e11af1b0e2", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "45683d606c7599bde5d15f174fbf3b58addfb74134dc92bc2d6d871b915c604b", +"T3T1_fr_test_protection_levels.py::test_sign_message": "1154f8b5cb95f9eecb0e5caee9604b212b358a96e0bed757d51f1db05a15c727", +"T3T1_fr_test_protection_levels.py::test_signtx": "6a036527065c1d560c67ed182614d3e5fae1eb8a394379f8fcb14621967260a1", +"T3T1_fr_test_protection_levels.py::test_unlocked": "8551d2f78152508250196f930decfdae02debc7408bf52c415d78475613f60e7", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "a6da89ef991122c4e096196e8adb34e96b8731db925d1a112fb4de02138652a7", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "ce5d6d9c568074429ccc4d17e78c581c50167710c7a8afc849e5c44387f5567b", "T3T1_fr_test_repeated_backup.py::test_repeated_backup": "a90a7951dd7b2741f3fdaea48469ff73257a30fdd59ad1316b76a68e7870687f", "T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "8c6d56d1ecf58b4d42cb871eb7b224e76f7abd08912ddb9d10b98af8267933f0", "T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "848d21e7576a73699226f9fe7910d1f11d80f923ad4413e050aa650c7f2e57ac", "T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e05422073d5a391eded34adbb4e2f5d487cc6d682d74d2c8668be0137c23987b", "T3T1_fr_test_sdcard.py::test_sd_format": "9f08dace12382867c5cef0e11a96fa01b8f8abfc3737f51c0ad631491c5b4403", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "411c7eb257f09084562e61a5d2f590478ac91cb63550601cb7b406562543b07d", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "29f12dafd9ad2d2f3f24c7757e21eace176c7edbc55fb00e0c460b346464687b", "T3T1_fr_test_session.py::test_cannot_resume_ended_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_session.py::test_clear_session": "ad415ac58bae1af4431dc97874b25f7a1fbf8406df8dcd13536f4241c4c1bd07", +"T3T1_fr_test_session.py::test_clear_session": "6d1c6f1df4cbd576c39bd8435864b5d1509ca69f1c4c7eac37f9c4573c2a0fcc", "T3T1_fr_test_session.py::test_derive_cardano_empty_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_derive_cardano_running_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_end_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22259,10 +22259,10 @@ "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "ae4efbae55935340c767e11d0bace79b16d48e20324d46c816f808ea37aa17cf", "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "bf7ba27892502e5e7f7cf75d1cd537da7f8eaf5ec595b41734e9af991ac26f10", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "d01656d290b521c746a6a7902c79bd99a134fe94288d875a0820f60b11a439ae", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "932857f746174d5a01348e8467a4c215c12b35517d035c9282be8366a915cef9", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "09b32da43b9c3ad50521cc90750c8de0731299a7a745aa168875849023b89e08", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "081140452661cfe3d6e55c295b72a3531db991343c042491518f9ad0810f5e8f", "T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "83e65a930718cc89d52171e14d998457fd880f64e4a7785f85deaf9856c572ce", "T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "d69fd4643f9f8456871dbdb07a641482f0ba5aa433de190aa4307c53d257e5b1", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ec2caffc016d8c0cc628a4039774779149406552f38baa3230ca674766e18469", @@ -22304,7 +22304,7 @@ "T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "571fb2f64e2ccdf478ae4de0e53ae38333110b1734d9ec4bec41862df4847608", "T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "f5e1be5eec73ffcc3f32fe7e61ee56d3b51c537c1f93b76f5b2807c2f28af602", "T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "5c154013e0d7208204a769394426305424ca74de3e9fbcf6badac09a4d4be462", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "c4a8a1974c4aeeafb2e39f1e095859e11d39ce3b4504435a87be6d871d695cab" +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "5a3195f9a30817639714f1411111de88f55ee1580f65bbd229c7b396021044f4" } } } From e30a0e62313afd47df390846b3d33dc0bc2198f1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 3 Jul 2024 16:40:12 +0200 Subject: [PATCH 380/626] fix(core): fix storage compilation for U5 models without optiga [no changelog] --- storage/storage.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/storage/storage.c b/storage/storage.c index 59b0a8e4a5..1d9713c7bd 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -572,9 +572,9 @@ static void stretch_pin(const uint8_t *pin, size_t pin_len, ui_progress(PIN_PBKDF2_MS / 10); } #ifdef STM32U5 - uint8_t stretched_pin_tmp[OPTIGA_PIN_SECRET_SIZE] = {0}; + uint8_t stretched_pin_tmp[SHA256_DIGEST_LENGTH] = {0}; pbkdf2_hmac_sha256_Final(&ctx, stretched_pin_tmp); - ensure(secure_aes_ecb_encrypt_hw(stretched_pin_tmp, OPTIGA_PIN_SECRET_SIZE, + ensure(secure_aes_ecb_encrypt_hw(stretched_pin_tmp, SHA256_DIGEST_LENGTH, stretched_pin, SECURE_AES_KEY_XORK), "secure_aes pin stretch failed"); memzero(stretched_pin_tmp, sizeof(stretched_pin_tmp)); From 0ea965d07ef6b4c76c11201b0cb0b01018fe19db Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 21 Jun 2024 12:48:31 +0200 Subject: [PATCH 381/626] fix(core/embed): fix touch driver on dev kits [no changelog] --- core/Makefile | 1 + core/embed/trezorhal/stm32f4/touch/stmpe811.c | 7 +++++-- core/embed/trezorhal/stm32u5/touch/sitronix.c | 19 ++++++++++++++----- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/core/Makefile b/core/Makefile index daf553def3..22c933b691 100644 --- a/core/Makefile +++ b/core/Makefile @@ -66,6 +66,7 @@ MODEL_FEATURE = model_mercury else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC1)) MCU = STM32F4 LAYOUT_FILE = embed/models/D001/model_D001.h +OPENOCD_TARGET = target/stm32f4x.cfg else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC2)) MCU = STM32U5 LAYOUT_FILE = embed/models/D002/model_D002.h diff --git a/core/embed/trezorhal/stm32f4/touch/stmpe811.c b/core/embed/trezorhal/stm32f4/touch/stmpe811.c index 1d198513e2..05a6f55727 100644 --- a/core/embed/trezorhal/stm32f4/touch/stmpe811.c +++ b/core/embed/trezorhal/stm32f4/touch/stmpe811.c @@ -633,8 +633,11 @@ uint32_t touch_get_event(void) { uint32_t xy = touch_pack_xy(driver->prev_state.X, driver->prev_state.Y); event = TOUCH_END | xy; } else if (new_state.TouchDetected) { - uint32_t xy = touch_pack_xy(new_state.X, new_state.Y); - event = TOUCH_MOVE | xy; + if ((new_state.X != driver->prev_state.X) || + (new_state.Y != driver->prev_state.Y)) { + uint32_t xy = touch_pack_xy(new_state.X, new_state.Y); + event = TOUCH_MOVE | xy; + } } driver->prev_state = new_state; diff --git a/core/embed/trezorhal/stm32u5/touch/sitronix.c b/core/embed/trezorhal/stm32u5/touch/sitronix.c index 91301376bf..b3f2c70e14 100644 --- a/core/embed/trezorhal/stm32u5/touch/sitronix.c +++ b/core/embed/trezorhal/stm32u5/touch/sitronix.c @@ -1193,11 +1193,16 @@ uint8_t touch_get_version(void) { } secbool touch_activity(void) { - if (sitronix_touching) { - return sectrue; - } else { + touch_driver_t *driver = &g_touch_driver; + + if (sectrue != driver->initialized) { return secfalse; } + + TS_State_t new_state = {0}; + BSP_TS_GetState(0, &new_state); + + return sitronix_touching ? sectrue : secfalse; } uint32_t touch_get_event(void) { @@ -1210,6 +1215,7 @@ uint32_t touch_get_event(void) { TS_State_t new_state = {0}; BSP_TS_GetState(0, &new_state); + new_state.TouchDetected = (sitronix_touching != 0); new_state.TouchX = new_state.TouchX > 120 ? new_state.TouchX - 120 : 0; new_state.TouchY = new_state.TouchY > 120 ? new_state.TouchY - 120 : 0; @@ -1223,8 +1229,11 @@ uint32_t touch_get_event(void) { touch_pack_xy(driver->prev_state.TouchX, driver->prev_state.TouchY); event = TOUCH_END | xy; } else if (new_state.TouchDetected) { - uint32_t xy = touch_pack_xy(new_state.TouchX, new_state.TouchY); - event = TOUCH_MOVE | xy; + if ((new_state.TouchX != driver->prev_state.TouchX) || + (new_state.TouchY != driver->prev_state.TouchY)) { + uint32_t xy = touch_pack_xy(new_state.TouchX, new_state.TouchY); + event = TOUCH_MOVE | xy; + } } driver->prev_state = new_state; From 076b476cf5a327d72626e28f4c655d02161e9aa6 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 21 Jun 2024 10:37:20 +0200 Subject: [PATCH 382/626] fix(core/embed): fix memory clearing in u5 boardloader [no changelog] --- core/embed/trezorhal/stm32u5/limited_util.s | 1 + 1 file changed, 1 insertion(+) diff --git a/core/embed/trezorhal/stm32u5/limited_util.s b/core/embed/trezorhal/stm32u5/limited_util.s index b5dc918aee..48d31212a4 100644 --- a/core/embed/trezorhal/stm32u5/limited_util.s +++ b/core/embed/trezorhal/stm32u5/limited_util.s @@ -34,6 +34,7 @@ jump_to: // "there is no requirement to insert memory barrier instructions after CPSID". cpsid f // wipe memory at the end of the current stage of code + ldr r2, =0 // r2 - the word-sized value to be written ldr r0, =sram1_start // r0 - point to beginning of SRAM ldr r1, =sram1_end // r1 - point to byte after the end of SRAM bl memset_reg From 68911c972b833a537c3a277bef40f0619c14fe0b Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 21 Jun 2024 10:36:12 +0200 Subject: [PATCH 383/626] chore(core/embed): remove unused code [no changelog] --- core/embed/bootloader/main.c | 3 - core/embed/bootloader_ci/main.c | 3 - core/embed/trezorhal/stm32f4/platform.h | 1 - core/embed/trezorhal/stm32f4/util.s | 55 ---------------- core/embed/trezorhal/stm32u5/limited_util.s | 4 +- core/embed/trezorhal/stm32u5/platform.h | 1 - core/embed/trezorhal/stm32u5/util.s | 70 +-------------------- 7 files changed, 3 insertions(+), 134 deletions(-) diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 80911534c1..3f8137910b 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -348,9 +348,6 @@ void real_jump_to_firmware(void) { display_finish_actions(); ensure_compatible_settings(); - // mpu_config_firmware(); - // jump_to_unprivileged(FIRMWARE_START + vhdr.hdrlen + IMAGE_HEADER_SIZE); - mpu_config_off(); jump_to(FIRMWARE_START + vhdr.hdrlen + IMAGE_HEADER_SIZE); } diff --git a/core/embed/bootloader_ci/main.c b/core/embed/bootloader_ci/main.c index 8f5436400c..f59cc46784 100644 --- a/core/embed/bootloader_ci/main.c +++ b/core/embed/bootloader_ci/main.c @@ -293,9 +293,6 @@ int main(void) { // do not check any trust flags on header, proceed - // mpu_config_firmware(); - // jump_to_unprivileged(FIRMWARE_START + vhdr.hdrlen + IMAGE_HEADER_SIZE); - mpu_config_off(); jump_to(FIRMWARE_START + vhdr.hdrlen + IMAGE_HEADER_SIZE); diff --git a/core/embed/trezorhal/stm32f4/platform.h b/core/embed/trezorhal/stm32f4/platform.h index 89b7c2acc7..7107127616 100644 --- a/core/embed/trezorhal/stm32f4/platform.h +++ b/core/embed/trezorhal/stm32f4/platform.h @@ -34,7 +34,6 @@ void set_core_clock(clock_settings_t settings); void memset_reg(volatile void *start, volatile void *stop, uint32_t val); void jump_to(uint32_t address); -void jump_to_unprivileged(uint32_t address); void jump_to_with_flag(uint32_t address, uint32_t register_flag); void ensure_compatible_settings(void); void clear_otg_hs_memory(void); diff --git a/core/embed/trezorhal/stm32f4/util.s b/core/embed/trezorhal/stm32f4/util.s index 30349678d9..defc3c70f9 100644 --- a/core/embed/trezorhal/stm32f4/util.s +++ b/core/embed/trezorhal/stm32f4/util.s @@ -77,61 +77,6 @@ jump_to_with_flag: ldr lr, [lr, 4] // set lr to the next stage's reset_handler bx lr - .global jump_to_unprivileged - .type jump_to_unprivileged, STT_FUNC -jump_to_unprivileged: - mov r4, r0 // save input argument r0 (the address of the next stage's vector table) (r4 is callee save) - // this subroutine re-points the exception handlers before the C code - // that comprises them has been given a good environment to run. - // therefore, this code needs to disable interrupts before the VTOR - // update. then, the reset_handler of the next stage needs to re-enable interrupts. - // the following prevents activation of all exceptions except Non-Maskable Interrupt (NMI). - // according to "ARM Cortex-M Programming Guide to Memory Barrier Instructions" Application Note 321, section 4.8: - // "there is no requirement to insert memory barrier instructions after CPSID". - cpsid f - // wipe memory at the end of the current stage of code - bl clear_otg_hs_memory - ldr r0, =ccmram_start // r0 - point to beginning of CCMRAM - ldr r1, =ccmram_end // r1 - point to byte after the end of CCMRAM - ldr r2, =0 // r2 - the word-sized value to be written - bl memset_reg - ldr r0, =sram_start // r0 - point to beginning of SRAM - ldr r1, =sram_end // r1 - point to byte after the end of SRAM - ldr r2, =0 // r2 - the word-sized value to be written - bl memset_reg - mov lr, r4 - // clear out the general purpose registers before the next stage's code can run (even the NMI exception handler) - ldr r0, =0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r4, r0 - mov r5, r0 - mov r6, r0 - mov r7, r0 - mov r8, r0 - mov r9, r0 - mov r10, r0 - mov r11, r0 - mov r12, r0 - // give the next stage a fresh main stack pointer - ldr r0, [lr] // set r0 to the main stack pointer in the next stage's vector table - msr msp, r0 // give the next stage its main stack pointer - // point to the next stage's exception handlers - // AN321, section 4.11: "a memory barrier is not required after a VTOR update" - .set SCB_VTOR, 0xE000ED08 // reference "Cortex-M4 Devices Generic User Guide" section 4.3 - ldr r0, =SCB_VTOR - str lr, [r0] - mov r0, r1 // zero out r0 - // go on to the next stage - ldr lr, [lr, 4] // set lr to the next stage's reset_handler - // switch to unprivileged mode - ldr r0, =1 - msr control, r0 - isb - // jump - bx lr - .global shutdown_privileged .type shutdown_privileged, STT_FUNC // The function must be called from the privileged mode diff --git a/core/embed/trezorhal/stm32u5/limited_util.s b/core/embed/trezorhal/stm32u5/limited_util.s index 48d31212a4..c9004fd4f2 100644 --- a/core/embed/trezorhal/stm32u5/limited_util.s +++ b/core/embed/trezorhal/stm32u5/limited_util.s @@ -53,8 +53,9 @@ jump_to: ldr r0, =__fb_end // r0 - point to end of framebuffer ldr r1, =sram5_end // r1 - point to byte after the end of SRAM bl memset_reg + mov lr, r4 - // clear out the general purpose registers before the next stage's code can run (even the NMI exception handler) + // clear out the general purpose registers before the next stage's code can run ldr r0, =0 mov r1, r0 mov r2, r0 @@ -81,7 +82,6 @@ jump_to: ldr lr, [lr, 4] // set lr to the next stage's reset_handler bx lr - .global shutdown_privileged .type shutdown_privileged, STT_FUNC // The function must be called from the privileged mode diff --git a/core/embed/trezorhal/stm32u5/platform.h b/core/embed/trezorhal/stm32u5/platform.h index 10731731e6..6a84e773ea 100644 --- a/core/embed/trezorhal/stm32u5/platform.h +++ b/core/embed/trezorhal/stm32u5/platform.h @@ -40,7 +40,6 @@ void drop_privileges(void); // the following functions are defined in util.s void memset_reg(volatile void *start, volatile void *stop, uint32_t val); void jump_to(uint32_t address); -void jump_to_unprivileged(uint32_t address); void jump_to_with_flag(uint32_t address, uint32_t register_flag); extern uint32_t __stack_chk_guard; diff --git a/core/embed/trezorhal/stm32u5/util.s b/core/embed/trezorhal/stm32u5/util.s index be2eff48bf..827451624a 100644 --- a/core/embed/trezorhal/stm32u5/util.s +++ b/core/embed/trezorhal/stm32u5/util.s @@ -58,7 +58,7 @@ jump_to: bl memset_reg mov lr, r4 - // clear out the general purpose registers before the next stage's except the register with flag R11 + // clear out the general purpose registers before the next stage's code can run ldr r0, =0 mov r1, r0 mov r2, r0 @@ -85,74 +85,6 @@ jump_to: ldr lr, [lr, 4] // set lr to the next stage's reset_handler bx lr - .global jump_to_unprivileged - .type jump_to_unprivileged, STT_FUNC -jump_to_unprivileged: - mov r4, r0 // save input argument r0 (the address of the next stage's vector table) (r4 is callee save) - // this subroutine re-points the exception handlers before the C code - // that comprises them has been given a good environment to run. - // therefore, this code needs to disable interrupts before the VTOR - // update. then, the reset_handler of the next stage needs to re-enable interrupts. - // the following prevents activation of all exceptions except Non-Maskable Interrupt (NMI). - // according to "ARM Cortex-M Programming Guide to Memory Barrier Instructions" Application Note 321, section 4.8: - // "there is no requirement to insert memory barrier instructions after CPSID". - cpsid f - // wipe memory at the end of the current stage of code - ldr r2, =0 // r2 - the word-sized value to be written - ldr r0, =sram1_start // r0 - point to beginning of SRAM - ldr r1, =sram1_end // r1 - point to byte after the end of SRAM - bl memset_reg - ldr r0, =sram2_start // r0 - point to beginning of SRAM - ldr r1, =sram2_end // r1 - point to byte after the end of SRAM - bl memset_reg - ldr r0, =sram4_start // r0 - point to beginning of SRAM - ldr r1, =sram4_end // r1 - point to byte after the end of SRAM - bl memset_reg - ldr r0, =sram6_start // r0 - point to beginning of SRAM - ldr r1, =sram6_end // r1 - point to byte after the end of SRAM - bl memset_reg - ldr r0, =boot_args_start // r0 - point to beginning of boot args - ldr r1, =boot_args_end // r1 - point to byte after the end of boot args - bl memset_reg - ldr r0, =sram3_start // r0 - point to beginning of SRAM - ldr r1, =__fb_start // r1 - point to beginning of framebuffer - bl memset_reg - ldr r0, =__fb_end // r0 - point to end of framebuffer - ldr r1, =sram5_end // r1 - point to byte after the end of SRAM - bl memset_reg - mov lr, r4 - // clear out the general purpose registers before the next stage's code can run (even the NMI exception handler) - ldr r0, =0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r4, r0 - mov r5, r0 - mov r6, r0 - mov r7, r0 - mov r8, r0 - mov r9, r0 - mov r10, r0 - mov r11, r0 - mov r12, r0 - // give the next stage a fresh main stack pointer - ldr r0, [lr] // set r0 to the main stack pointer in the next stage's vector table - msr msp, r0 // give the next stage its main stack pointer - // point to the next stage's exception handlers - // AN321, section 4.11: "a memory barrier is not required after a VTOR update" - .set SCB_VTOR, 0xE000ED08 // reference "Cortex-M4 Devices Generic User Guide" section 4.3 - ldr r0, =SCB_VTOR - str lr, [r0] - mov r0, r1 // zero out r0 - // go on to the next stage - ldr lr, [lr, 4] // set lr to the next stage's reset_handler - // switch to unprivileged mode - ldr r0, =1 - msr control, r0 - isb - // jump - bx lr - .global shutdown_privileged .type shutdown_privileged, STT_FUNC // The function must be called from the privileged mode From 59961984c3e2510d0e20604477181c9c2e09f12e Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 14 Jun 2024 11:48:55 +0200 Subject: [PATCH 384/626] feat(core/embed): prepare backlight driver for low power mode [no changelog] --- core/embed/trezorhal/stm32f4/backlight_pwm.c | 275 +++++++++++------- core/embed/trezorhal/stm32f4/backlight_pwm.h | 66 ++++- core/embed/trezorhal/stm32f4/common.c | 2 +- .../trezorhal/stm32f4/displays/st7789v.c | 4 +- .../stm32f4/xdisplay/st-7789/display_driver.c | 4 +- 5 files changed, 229 insertions(+), 122 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/backlight_pwm.c b/core/embed/trezorhal/stm32f4/backlight_pwm.c index 7072b26f2d..a65e84e0fb 100644 --- a/core/embed/trezorhal/stm32f4/backlight_pwm.c +++ b/core/embed/trezorhal/stm32f4/backlight_pwm.c @@ -1,63 +1,81 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <stdbool.h> +#include <string.h> #include "backlight_pwm.h" +#include "common.h" #include STM32_HAL_H #include TREZOR_BOARD +// Requested PWM Timer clock frequency [Hz] #define TIM_FREQ 10000000 - +// Prescaler divider for the PWM Timer #define LED_PWM_PRESCALER (SystemCoreClock / TIM_FREQ - 1) - -#define LED_PWM_PRESCALER_SLOW (SystemCoreClock / 1000000 - 1) // 1 MHz - +// Period of the PWM Timer #define LED_PWM_TIM_PERIOD (TIM_FREQ / BACKLIGHT_PWM_FREQ) -static int BACKLIGHT = -1; +// Backlight driver state +typedef struct { + // Set if driver is initialized + bool initialized; + // Current backlight level in range 0-255 + int current_level; -static int pwm_period = 0; +} backlight_driver_t; -int backlight_pwm_set(int val) { - if (BACKLIGHT != val && val >= 0 && val <= 255) { - // TPS61043 goes to shutdown when duty cycle is 0 (after 32ms), - // so we need to set GPIO to high for at least 500us - // to wake it up. - if (BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR == 0) { - GPIO_InitTypeDef GPIO_InitStructure = {0}; - - HAL_GPIO_WritePin(BACKLIGHT_PWM_PORT, BACKLIGHT_PWM_PIN, GPIO_PIN_SET); - // LCD_PWM/PA7 (backlight control) - GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStructure.Pull = GPIO_NOPULL; - GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStructure.Pin = BACKLIGHT_PWM_PIN; - HAL_GPIO_Init(BACKLIGHT_PWM_PORT, &GPIO_InitStructure); - - hal_delay_us(500); - - GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; - GPIO_InitStructure.Pull = GPIO_NOPULL; - GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStructure.Alternate = BACKLIGHT_PWM_TIM_AF; - GPIO_InitStructure.Pin = BACKLIGHT_PWM_PIN; - HAL_GPIO_Init(BACKLIGHT_PWM_PORT, &GPIO_InitStructure); - } +// Backlight driver instance +static backlight_driver_t g_backlight_driver = { + .initialized = false, +}; + +void backlight_pwm_init(backlight_action_t action) { + backlight_driver_t *drv = &g_backlight_driver; - BACKLIGHT = val; - BACKLIGHT_PWM_TIM->CCR1 = (pwm_period * val) / 255; + if (drv->initialized) { + return; } - return BACKLIGHT; -} -int backlight_pwm_get(void) { return BACKLIGHT; } + memset(drv, 0, sizeof(backlight_driver_t)); + + int initial_level = 0; + + if (action == BACKLIGHT_RETAIN) { + // We expect the BACKLIGHT_PWM_TIM to be already initialized + // (e.g. by the bootloader or boardloader) + uint32_t prev_arr = BACKLIGHT_PWM_TIM->ARR; + uint32_t prev_ccr1 = BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR; + + initial_level = (prev_ccr1 * 255) / (prev_arr + 1); + if (initial_level > 255) { + initial_level = 255; + } + } -void backlight_pwm_init(void) { - // init peripherals + // Enable peripheral clocks BACKLIGHT_PWM_PORT_CLK_EN(); BACKLIGHT_PWM_TIM_CLK_EN(); + // Initialize PWM GPIO GPIO_InitTypeDef GPIO_InitStructure = {0}; - - // LCD_PWM (backlight control) GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; GPIO_InitStructure.Pull = GPIO_NOPULL; GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; @@ -65,40 +83,40 @@ void backlight_pwm_init(void) { GPIO_InitStructure.Pin = BACKLIGHT_PWM_PIN; HAL_GPIO_Init(BACKLIGHT_PWM_PORT, &GPIO_InitStructure); + // Initialize PWM timer + uint32_t tmpcr1 = 0; - /* Select the Counter Mode */ + // Select the Counter Mode tmpcr1 |= TIM_COUNTERMODE_UP; - /* Set the clock division */ + // Set the clock division tmpcr1 |= (uint32_t)TIM_CLOCKDIVISION_DIV1; - /* Set the auto-reload preload */ + // Set the auto-reload preload #ifdef STM32U5 tmpcr1 |= TIM_AUTORELOAD_PRELOAD_DISABLE; #endif BACKLIGHT_PWM_TIM->CR1 = tmpcr1; - /* Set the Autoreload value */ + // Set the Autoreload value BACKLIGHT_PWM_TIM->ARR = (uint32_t)LED_PWM_TIM_PERIOD - 1; - /* Set the Prescaler value */ + // Set the Prescaler value BACKLIGHT_PWM_TIM->PSC = LED_PWM_PRESCALER; - /* Set the Repetition Counter value */ + // Set the Repetition Counter value BACKLIGHT_PWM_TIM->RCR = 0; - /* Generate an update event to reload the Prescaler - and the repetition counter (only for advanced timer) value immediately */ + // Generate an update event to reload the Prescaler + // and the repetition counter (only for advanced timer) value immediately BACKLIGHT_PWM_TIM->EGR = TIM_EGR_UG; - pwm_period = LED_PWM_TIM_PERIOD; - - /* Set the Preload enable bit for channel1 */ + // Set the Preload enable bit for channel1 BACKLIGHT_PWM_TIM->CCMR1 |= TIM_CCMR1_OC1PE; - /* Configure the Output Fast mode */ + // Configure the Output Fast mode BACKLIGHT_PWM_TIM->CCMR1 &= ~TIM_CCMR1_OC1FE; BACKLIGHT_PWM_TIM->CCMR1 |= TIM_OCFAST_DISABLE; @@ -106,107 +124,156 @@ void backlight_pwm_init(void) { uint32_t tmpccer; uint32_t tmpcr2; - /* Get the TIMx CCER register value */ + // Get the TIMx CCER register value tmpccer = BACKLIGHT_PWM_TIM->CCER; - /* Disable the Channel 1: Reset the CC1E Bit */ + // Disable the Channel 1: Reset the CC1E Bit BACKLIGHT_PWM_TIM->CCER &= ~TIM_CCER_CC1E; tmpccer |= TIM_CCER_CC1E; - /* Get the TIMx CR2 register value */ + // Get the TIMx CR2 register value tmpcr2 = BACKLIGHT_PWM_TIM->CR2; - /* Get the TIMx CCMR1 register value */ + // Get the TIMx CCMR1 register value tmpccmrx = BACKLIGHT_PWM_TIM->CCMR1; - /* Reset the Output Compare Mode Bits */ + // Reset the Output Compare Mode Bits tmpccmrx &= ~TIM_CCMR1_OC1M; tmpccmrx &= ~TIM_CCMR1_CC1S; - /* Select the Output Compare Mode */ + // Select the Output Compare Mode tmpccmrx |= BACKLIGHT_PWM_TIM_OCMODE; - /* Reset the Output Polarity level */ + // Reset the Output Polarity level tmpccer &= ~TIM_CCER_CC1P; - /* Set the Output Compare Polarity */ + // Set the Output Compare Polarity tmpccer |= TIM_OCPOLARITY_HIGH; if (IS_TIM_CCXN_INSTANCE(BACKLIGHT_PWM_TIM, TIM_CHANNEL_1)) { - /* Check parameters */ + // Check parameters assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); - /* Reset the Output N Polarity level */ + // Reset the Output N Polarity level tmpccer &= ~TIM_CCER_CC1NP; - /* Set the Output N Polarity */ + // Set the Output N Polarity tmpccer |= TIM_OCNPOLARITY_HIGH; - /* Set the Output N State */ + // Set the Output N State tmpccer |= TIM_CCER_CC1NE; } if (IS_TIM_BREAK_INSTANCE(BACKLIGHT_PWM_TIM)) { - /* Check parameters */ + // Check parameters assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); - /* Reset the Output Compare and Output Compare N IDLE State */ + // Reset the Output Compare and Output Compare N IDLE State tmpcr2 &= ~TIM_CR2_OIS1; tmpcr2 &= ~TIM_CR2_OIS1N; - /* Set the Output Idle state */ + // Set the Output Idle state tmpcr2 |= TIM_OCIDLESTATE_SET; - /* Set the Output N Idle state */ + // Set the Output N Idle state tmpcr2 |= TIM_OCNIDLESTATE_SET; } - /* Write to TIMx CR2 */ + // Write to TIMx CR2 BACKLIGHT_PWM_TIM->CR2 = tmpcr2; - - /* Write to TIMx CCMR1 */ + // Write to TIMx CCMR1 BACKLIGHT_PWM_TIM->CCMR1 = tmpccmrx; - - /* Set the Capture Compare Register value */ + // Set the Capture Compare Register value BACKLIGHT_PWM_TIM->CCR1 = 0; - - /* Write to TIMx CCER */ + // Write to TIMx CCER BACKLIGHT_PWM_TIM->CCER = tmpccer; - backlight_pwm_set(0); - BACKLIGHT_PWM_TIM->BDTR |= TIM_BDTR_MOE; BACKLIGHT_PWM_TIM->CR1 |= TIM_CR1_CEN; + + drv->initialized = true; + + backlight_pwm_set(initial_level); } -void backlight_pwm_reinit(void) { - uint32_t prev_arr = BACKLIGHT_PWM_TIM->ARR; - uint32_t prev_ccr1 = BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR; +void backlight_pwm_deinit(backlight_action_t action) { + backlight_driver_t *drv = &g_backlight_driver; - uint32_t prev_val = (prev_ccr1 * 255) / (prev_arr + 1); - prev_val = prev_val > 255 ? 255 : prev_val; - BACKLIGHT = prev_val; + if (!drv->initialized) { + return; + } - pwm_period = LED_PWM_TIM_PERIOD; - BACKLIGHT_PWM_TIM->PSC = LED_PWM_PRESCALER; - BACKLIGHT_PWM_TIM->CR1 |= TIM_CR1_ARPE; - BACKLIGHT_PWM_TIM->CR2 |= TIM_CR2_CCPC; - BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR = (pwm_period * prev_val) / 255; - BACKLIGHT_PWM_TIM->ARR = LED_PWM_TIM_PERIOD - 1; -} + if (action == BACKLIGHT_RETAIN) { + // We keep both the GPIO and the timer running #ifdef TREZOR_MODEL_T + // This code here is for backward compatibility with the old + // bootloader that used a different PWM settings. + +// about 10Hz (with PSC = (SystemCoreClock / 1000000) - 1) +#define LED_PWM_SLOW_TIM_PERIOD (10000) +#define LED_PWM_PRESCALER_SLOW (SystemCoreClock / 1000000 - 1) // 1 MHz -#define LED_PWM_SLOW_TIM_PERIOD \ - (10000) // about 10Hz (with PSC = (SystemCoreClock / 1000000) - 1) + BACKLIGHT_PWM_TIM->PSC = LED_PWM_PRESCALER_SLOW; + BACKLIGHT_PWM_TIM->CR1 |= TIM_CR1_ARPE; + BACKLIGHT_PWM_TIM->CR2 |= TIM_CR2_CCPC; + BACKLIGHT_PWM_TIM->ARR = LED_PWM_SLOW_TIM_PERIOD - 1; + BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR = + (LED_PWM_SLOW_TIM_PERIOD * drv->current_level) / 255; +#endif + } else { + // TODO: deinitialize GPIOs and the TIMER + } -void backlight_pwm_set_slow(void) { - uint32_t prev_arr = BACKLIGHT_PWM_TIM->ARR; - uint32_t prev_ccr1 = BACKLIGHT_PWM_TIM->CCR1; + drv->initialized = false; +} - uint32_t prev_val = (prev_ccr1 * 255) / (prev_arr + 1); - prev_val = prev_val > 255 ? 255 : prev_val; +// Generate a pulse on the backlight control pin to wake up the TPS61043 +static void backlight_pwm_wakeup_pulse(void) { + GPIO_InitTypeDef GPIO_InitStructure = {0}; - pwm_period = LED_PWM_SLOW_TIM_PERIOD; - BACKLIGHT_PWM_TIM->PSC = LED_PWM_PRESCALER_SLOW; - BACKLIGHT_PWM_TIM->CR1 |= TIM_CR1_ARPE; - BACKLIGHT_PWM_TIM->CR2 |= TIM_CR2_CCPC; - BACKLIGHT_PWM_TIM->ARR = LED_PWM_SLOW_TIM_PERIOD - 1; - BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR = pwm_period * prev_val / 255; + HAL_GPIO_WritePin(BACKLIGHT_PWM_PORT, BACKLIGHT_PWM_PIN, GPIO_PIN_SET); + + GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Pin = BACKLIGHT_PWM_PIN; + HAL_GPIO_Init(BACKLIGHT_PWM_PORT, &GPIO_InitStructure); + + hal_delay_us(500); + + GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; + GPIO_InitStructure.Pull = GPIO_NOPULL; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStructure.Alternate = BACKLIGHT_PWM_TIM_AF; + GPIO_InitStructure.Pin = BACKLIGHT_PWM_PIN; + HAL_GPIO_Init(BACKLIGHT_PWM_PORT, &GPIO_InitStructure); +} + +int backlight_pwm_set(int level) { + backlight_driver_t *drv = &g_backlight_driver; + + if (!drv->initialized) { + return 0; + } + + if (level >= 0 && level <= 255) { + // TPS61043 goes to shutdown when duty cycle is 0 (after 32ms), + // so we need to set GPIO to high for at least 500us + // to wake it up. + if (BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR == 0 && level != 0) { + backlight_pwm_wakeup_pulse(); + } + + BACKLIGHT_PWM_TIM->CCR1 = (LED_PWM_TIM_PERIOD * level) / 255; + + drv->current_level = level; + } + + return drv->current_level; +} + +int backlight_pwm_get(void) { + backlight_driver_t *drv = &g_backlight_driver; + + if (!drv->initialized) { + return 0; + } + + return drv->current_level; } -#endif diff --git a/core/embed/trezorhal/stm32f4/backlight_pwm.h b/core/embed/trezorhal/stm32f4/backlight_pwm.h index 696c129d01..49f7c808c0 100644 --- a/core/embed/trezorhal/stm32f4/backlight_pwm.h +++ b/core/embed/trezorhal/stm32f4/backlight_pwm.h @@ -1,17 +1,57 @@ - -#ifndef CORE_BACKLIGHT_H -#define CORE_BACKLIGHT_H - -#include "common.h" - +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_BACKLIGHT_H +#define TREZORHAL_BACKLIGHT_H + +// Action to be taken when initializing or +// deinitializing the backlight driver +typedef enum { + BACKLIGHT_RESET, + BACKLIGHT_RETAIN, +} backlight_action_t; + +// Initialize the backlight driver +// +// If the action is set to `BACKLIGHT_RESET`, the backlight level +// is set to zero level. If the action is set to `BACKLIGHT_RETAIN`, +// the backlight level is not changed (if possible). +void backlight_pwm_init(backlight_action_t action); + +// Deinitialize the backlight driver +// +// If the action is set to `BACKLIGHT_RESET`, the backlight driver +// is completely deinitialized. If the action is set to `BACKLIGHT_RETAIN`, +// the driver is deinitialized as much as possible but the backlight +// is kept on. +void backlight_pwm_deinit(backlight_action_t action); + +// Sets the backlight level in range 0-255 and returns the actual level set. +// +// If the level is outside the range, the function has no effect +// and just returns the actual level set. If the backlight driver +// is not initialized, the function returns 0. int backlight_pwm_set(int val); +// Gets the backlight level in range 0-255 +// +// Returns 0 if the backlight driver is not initialized. int backlight_pwm_get(void); -void backlight_pwm_init(void); - -void backlight_pwm_reinit(void); - -void backlight_pwm_set_slow(void); - -#endif // CORE_BACKLIGHT_H +#endif // TREZORHAL_BACKLIGHT_H diff --git a/core/embed/trezorhal/stm32f4/common.c b/core/embed/trezorhal/stm32f4/common.c index 70e4828c7b..88c397c27c 100644 --- a/core/embed/trezorhal/stm32f4/common.c +++ b/core/embed/trezorhal/stm32f4/common.c @@ -129,7 +129,7 @@ void ensure_compatible_settings(void) { #endif display_orientation(0); set_core_clock(CLOCK_168_MHZ); - backlight_pwm_set_slow(); + backlight_pwm_deinit(BACKLIGHT_RETAIN); #endif } diff --git a/core/embed/trezorhal/stm32f4/displays/st7789v.c b/core/embed/trezorhal/stm32f4/displays/st7789v.c index b0b03d9e1c..4e3c0fb99c 100644 --- a/core/embed/trezorhal/stm32f4/displays/st7789v.c +++ b/core/embed/trezorhal/stm32f4/displays/st7789v.c @@ -397,7 +397,7 @@ void display_init(void) { __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_FMC_CLK_ENABLE(); - backlight_pwm_init(); + backlight_pwm_init(BACKLIGHT_RESET); #ifdef STM32F4 #define DISPLAY_GPIO_SPEED GPIO_SPEED_FREQ_VERY_HIGH @@ -477,7 +477,7 @@ void display_reinit(void) { DISPLAY_ORIENTATION = 0; panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); - backlight_pwm_reinit(); + backlight_pwm_init(BACKLIGHT_RETAIN); #ifdef TREZOR_MODEL_T uint32_t id = display_identify(); diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c index 74a49e4f1a..e68851858f 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c @@ -51,7 +51,7 @@ void display_init(void) { display_io_init_fmc(); display_panel_init(); display_panel_set_little_endian(); - backlight_pwm_init(); + backlight_pwm_init(BACKLIGHT_RESET); #ifdef XFRAMEBUFFER display_io_init_te_interrupt(); @@ -69,7 +69,7 @@ void display_reinit(void) { // Important for model T as this is not set in boardloader display_panel_set_little_endian(); display_panel_init_gamma(); - backlight_pwm_reinit(); + backlight_pwm_init(BACKLIGHT_RETAIN); #ifdef XFRAMEBUFFER display_io_init_te_interrupt(); From 6667f9691176629c1bc73968c725636bd98d36cf Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 3 Jul 2024 21:14:47 +0200 Subject: [PATCH 385/626] fix(core): fix T2B1 display orientation south --- core/.changelog.d/3990.fixed | 1 + core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 core/.changelog.d/3990.fixed diff --git a/core/.changelog.d/3990.fixed b/core/.changelog.d/3990.fixed new file mode 100644 index 0000000000..72e6165c36 --- /dev/null +++ b/core/.changelog.d/3990.fixed @@ -0,0 +1 @@ +[T2B1] Fix display orientation "south" diff --git a/core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c b/core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c index ad3ea481bb..e841854e76 100644 --- a/core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c +++ b/core/embed/trezorhal/stm32f4/displays/vg-2864ksweg01.c @@ -255,8 +255,8 @@ static inline uint8_t reverse_byte(uint8_t b) { static void rotate_oled_buffer(void) { for (int i = 0; i < OLED_BUFSIZE / 2; i++) { uint8_t b = OLED_BUFFER[i]; - OLED_BUFFER[i] = reverse_byte(OLED_BUFFER[OLED_BUFSIZE - i]); - OLED_BUFFER[OLED_BUFSIZE - i] = reverse_byte(b); + OLED_BUFFER[i] = reverse_byte(OLED_BUFFER[OLED_BUFSIZE - i - 1]); + OLED_BUFFER[OLED_BUFSIZE - i - 1] = reverse_byte(b); } } From 96165e268bc924d02343cda3c58c3fc488420e2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jul 2024 00:34:07 +0000 Subject: [PATCH 386/626] build(deps): bump certifi from 2023.7.22 to 2024.7.4 Bumps [certifi](https://github.com/certifi/python-certifi) from 2023.7.22 to 2024.7.4. - [Commits](https://github.com/certifi/python-certifi/compare/2023.07.22...2024.07.04) --- updated-dependencies: - dependency-name: certifi dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5c700cc626..d6ff132672 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "astroid" @@ -125,13 +125,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] From 3bc9e2326074f219fff46772e90f920308c570a3 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 3 Jul 2024 16:06:27 +0200 Subject: [PATCH 387/626] feat(core): add support for 32bit colors in UI [no changelog] --- core/embed/lib/gfx_color.h | 11 ++-- core/embed/rust/Cargo.toml | 1 + core/embed/rust/src/ui/display/color.rs | 70 ++++++++++++++++++++--- core/site_scons/models/D002/discovery2.py | 3 +- 4 files changed, 72 insertions(+), 13 deletions(-) diff --git a/core/embed/lib/gfx_color.h b/core/embed/lib/gfx_color.h index 9df362c852..5cbfd9f1ca 100644 --- a/core/embed/lib/gfx_color.h +++ b/core/embed/lib/gfx_color.h @@ -22,8 +22,11 @@ #include <stdint.h> +#ifdef UI_COLOR_32BIT +#define GFX_COLOR_32BIT +#else #define GFX_COLOR_16BIT -// #define GFX_COLOR_32BIT +#endif // Color in RGB565 format // @@ -51,7 +54,7 @@ typedef uint32_t gfx_color32_t; #define gfx_color_to_color32(c) (gfx_color16_to_color32(c)) #define gfx_color32_to_color(c) (gfx_color32_to_color16(c)) #define gfx_color_lum(c) (gfx_color16_lum(c)) -#elif GFX_COLOR_32BIT +#elif defined GFX_COLOR_32BIT #define gfx_color_t gfx_color32_t #define gfx_color_to_color16(c) (gfx_color32_to_color16(c)) #define gfx_color16_to_color(c) (gfx_color16_to_color32(c)) @@ -132,7 +135,7 @@ static inline uint8_t gfx_color16_lum(gfx_color16_t color) { } // Converts 32-bit color into luminance (ranging from 0 to 255) -static inline uint8_t gfx_color32_lum(gfx_color16_t color) { +static inline uint8_t gfx_color32_lum(gfx_color32_t color) { uint32_t r = gfx_color32_to_r(color); uint32_t g = gfx_color32_to_g(color); uint32_t b = gfx_color32_to_b(color); @@ -237,7 +240,7 @@ static inline gfx_color32_t gfx_color32_blend_a8(gfx_color16_t fg, return gfx_color32_rgb(r, g, b); } -#elif GFX_COLOR_32BIT +#elif defined GFX_COLOR_32BIT // Blends foreground and background colors with 4-bit alpha // diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 0cb686ea62..5b7607500c 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -27,6 +27,7 @@ ui_antialiasing = [] ui_blurring = [] ui_jpeg_decoder = ["jpeg"] ui_image_buffer = [] +ui_color_32bit = [] new_rendering = [] bootloader = [] button = [] diff --git a/core/embed/rust/src/ui/display/color.rs b/core/embed/rust/src/ui/display/color.rs index 4ad86389ca..0bf42bf15f 100644 --- a/core/embed/rust/src/ui/display/color.rs +++ b/core/embed/rust/src/ui/display/color.rs @@ -1,12 +1,31 @@ use crate::ui::lerp::Lerp; +#[cfg(not(feature = "ui_color_32bit"))] #[derive(Copy, Clone, PartialEq, Eq)] pub struct Color(u16); +#[cfg(feature = "ui_color_32bit")] +#[derive(Copy, Clone, PartialEq, Eq)] +pub struct Color { + r: u8, + g: u8, + b: u8, +} impl Color { + #[cfg(not(feature = "ui_color_32bit"))] pub const fn from_u16(val: u16) -> Self { Self(val) } + + #[cfg(feature = "ui_color_32bit")] + pub const fn from_u16(val: u16) -> Self { + Self { + r: ((((val) & 0xF800) >> 8) | (((val) & 0xF800) >> 13)) as u8, + g: ((((val) & 0x07E0) >> 3) | (((val) & 0x07E0) >> 9)) as u8, + b: ((((val) & 0x001F) << 3) | (((val) & 0x001F) >> 2)) as u8, + } + } + pub const fn from_u32(val: u32) -> Self { Self::rgb( ((val >> 16) & 0xFF) as u8, @@ -15,12 +34,17 @@ impl Color { ) } + #[cfg(not(feature = "ui_color_32bit"))] pub const fn rgb(r: u8, g: u8, b: u8) -> Self { let r = (r as u16 & 0xF8) << 8; let g = (g as u16 & 0xFC) << 3; let b = (b as u16 & 0xF8) >> 3; Self(r | g | b) } + #[cfg(feature = "ui_color_32bit")] + pub const fn rgb(r: u8, g: u8, b: u8) -> Self { + Self { r, g, b } + } pub const fn luminance(self) -> u32 { (self.r() as u32 * 299) / 1000 @@ -33,36 +57,56 @@ impl Color { let g_u16 = g as u16; let b_u16 = b as u16; - let r = ((256 - alpha) * bg.r() as u16 + alpha * r_u16) >> 8; - let g = ((256 - alpha) * bg.g() as u16 + alpha * g_u16) >> 8; - let b = ((256 - alpha) * bg.b() as u16 + alpha * b_u16) >> 8; + let r = (((256 - alpha) * bg.r() as u16 + alpha * r_u16) >> 8) as u8; + let g = (((256 - alpha) * bg.g() as u16 + alpha * g_u16) >> 8) as u8; + let b = (((256 - alpha) * bg.b() as u16 + alpha * b_u16) >> 8) as u8; - let r = (r & 0xF8) << 8; - let g = (g & 0xFC) << 3; - let b = (b & 0xF8) >> 3; - Self(r | g | b) + Self::rgb(r, g, b) } pub const fn alpha(bg: Color, alpha: u16) -> Self { Self::rgba(bg, 0xFF, 0xFF, 0xFF, alpha) } + #[cfg(not(feature = "ui_color_32bit"))] pub const fn r(self) -> u8 { (self.0 >> 8) as u8 & 0xF8 } + #[cfg(not(feature = "ui_color_32bit"))] pub const fn g(self) -> u8 { (self.0 >> 3) as u8 & 0xFC } + #[cfg(not(feature = "ui_color_32bit"))] pub const fn b(self) -> u8 { (self.0 << 3) as u8 & 0xF8 } + #[cfg(feature = "ui_color_32bit")] + pub const fn r(self) -> u8 { + self.r + } + #[cfg(feature = "ui_color_32bit")] + pub const fn g(self) -> u8 { + self.g + } + #[cfg(feature = "ui_color_32bit")] + pub const fn b(self) -> u8 { + self.b + } + #[cfg(not(feature = "ui_color_32bit"))] pub fn to_u16(self) -> u16 { self.0 } + #[cfg(feature = "ui_color_32bit")] + pub fn to_u16(self) -> u16 { + (((self.r() & 0xF8) as u16) << 8) + | (((self.g() & 0xFC) as u16) << 3) + | ((self.b() & 0xF8) as u16 >> 3) + } + pub fn to_u32(self) -> u32 { ((self.r() as u32) << 16) | ((self.g() as u32) << 8) | (self.b() as u32) | 0xff000000 } @@ -75,10 +119,20 @@ impl Color { (self.to_u16() & 0xFF) as u8 } + #[cfg(not(feature = "ui_color_32bit"))] pub fn negate(self) -> Self { Self(!self.0) } + #[cfg(feature = "ui_color_32bit")] + pub fn negate(self) -> Self { + Self { + r: 255 - self.r, + g: 255 - self.g, + b: 255 - self.b, + } + } + pub const fn white() -> Self { Self::rgb(255, 255, 255) } @@ -113,7 +167,7 @@ impl Lerp for Color { impl From<u16> for Color { fn from(val: u16) -> Self { - Self(val) + Self::from_u16(val) } } diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index 94f16b7c65..6c73b7efbd 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -91,7 +91,7 @@ def configure( ] features_available.append("usb") - defines += ["USE_DMA2D", "FRAMEBUFFER", "FRAMEBUFFER32BIT"] + defines += ["USE_DMA2D", "FRAMEBUFFER", "FRAMEBUFFER32BIT", "UI_COLOR_32BIT"] sources += [ "embed/trezorhal/stm32u5/dma2d.c", "embed/trezorhal/stm32u5/dma2d_bitblt.c", @@ -99,6 +99,7 @@ def configure( features_available.append("dma2d") features_available.append("framebuffer") features_available.append("framebuffer32bit") + features_available.append("ui_color_32bit") if "new_rendering" in features_wanted: defines += ["XFRAMEBUFFER"] From 25cb005693fc90580e4571022547376b531440e7 Mon Sep 17 00:00:00 2001 From: mgiannopoulos24 <79588074+mgiannopoulos24@users.noreply.github.com> Date: Tue, 9 Jul 2024 15:12:07 +0300 Subject: [PATCH 388/626] fix(core): add missing filename argument (#4003) * Code improvement on printf --- core/embed/bootloader/emulator.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/embed/bootloader/emulator.c b/core/embed/bootloader/emulator.c index dd03ba38e3..df8a0ee033 100644 --- a/core/embed/bootloader/emulator.c +++ b/core/embed/bootloader/emulator.c @@ -62,20 +62,20 @@ bool load_firmware(const char *filename, uint8_t *hash) { size_t read = fread(buffer, 1, sizeof(buffer), file); fclose(file); if (read != sizeof(buffer)) { - printf("File '%s' does not contain a valid firmware image.\n"); + printf("File '%s' does not contain a valid firmware image.\n", filename); return false; } // read vendor and image header vendor_header vhdr; if (sectrue != read_vendor_header(buffer, &vhdr)) { - printf("File '%s' does not contain a valid vendor header.\n"); + printf("File '%s' does not contain a valid vendor header.\n", filename); return false; } const image_header *hdr = read_image_header( buffer + vhdr.hdrlen, FIRMWARE_IMAGE_MAGIC, FIRMWARE_IMAGE_MAXSIZE); if (hdr != (const image_header *)(buffer + vhdr.hdrlen)) { - printf("File '%s' does not contain a valid firmware image.\n"); + printf("File '%s' does not contain a valid firmware image.\n", filename); return false; } From d82d5a1fe56239d4d1215c6152f5bd5359c275cc Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 9 Jul 2024 11:01:58 +0200 Subject: [PATCH 389/626] build(core): fix build for GCC13 we need to cherry-pick two commits into the micropython submodule, and adapt one of the fixes --- core/embed/unix/main.c | 4 ++-- vendor/micropython | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/embed/unix/main.c b/core/embed/unix/main.c index ffef7ca458..413a2a31e1 100644 --- a/core/embed/unix/main.c +++ b/core/embed/unix/main.c @@ -682,9 +682,9 @@ MP_NOINLINE int main_(int argc, char **argv) { #if !MICROPY_VFS #ifdef TREZOR_EMULATOR_FROZEN -uint mp_import_stat(const char *path) { return MP_IMPORT_STAT_NO_EXIST; } +mp_import_stat_t mp_import_stat(const char *path) { return MP_IMPORT_STAT_NO_EXIST; } #else -uint mp_import_stat(const char *path) { +mp_import_stat_t mp_import_stat(const char *path) { struct stat st; if (stat(path, &st) == 0) { if (S_ISDIR(st.st_mode)) { diff --git a/vendor/micropython b/vendor/micropython index 27acb6c49f..d2d97062f7 160000 --- a/vendor/micropython +++ b/vendor/micropython @@ -1 +1 @@ -Subproject commit 27acb6c49f7dedbe5d60b16b8f64ea6c9de82aae +Subproject commit d2d97062f7ef731109e895760035b4e3e047ad8c From 9420b38a35f24f62b3019e927536eacf5746dd1d Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 2 Jul 2024 21:33:53 +0200 Subject: [PATCH 390/626] feat(core): Account for Optiga throttling delay in PIN countdown. --- core/.changelog.d/4000.added | 1 + core/SConscript.unix | 1 + core/embed/trezorhal/optiga.h | 18 +- core/embed/trezorhal/optiga/optiga.c | 70 +- .../embed/trezorhal/optiga/optiga_transport.c | 7 + core/embed/trezorhal/optiga_common.h | 4 + core/embed/trezorhal/optiga_transport.h | 2 + core/embed/trezorhal/stm32f4/time_estimate.c | 28 + core/embed/trezorhal/stm32u5/time_estimate.c | 1 + core/embed/trezorhal/time_estimate.h | 27 + core/embed/trezorhal/unix/optiga.c | 11 +- core/embed/trezorhal/unix/time_estimate.c | 25 + core/site_scons/models/stm32f4_common.py | 1 + core/site_scons/models/stm32u5_common.py | 1 + legacy/Makefile | 1 + legacy/common.c | 3 + legacy/common.h | 1 + legacy/time_estimate.c | 35 + legacy/time_estimate.h | 27 + storage/storage.c | 186 +- storage/storage.h | 6 + storage/tests/c/Makefile | 1 + storage/tests/c/common.c | 5 + storage/tests/c/common.h | 3 +- storage/tests/c/time_estimate.h | 30 + tests/ui_tests/fixtures.json | 4440 ++++++++--------- 26 files changed, 2618 insertions(+), 2317 deletions(-) create mode 100644 core/.changelog.d/4000.added create mode 100644 core/embed/trezorhal/stm32f4/time_estimate.c create mode 120000 core/embed/trezorhal/stm32u5/time_estimate.c create mode 100644 core/embed/trezorhal/time_estimate.h create mode 100644 core/embed/trezorhal/unix/time_estimate.c create mode 100644 legacy/time_estimate.c create mode 100644 legacy/time_estimate.h create mode 100644 storage/tests/c/time_estimate.h diff --git a/core/.changelog.d/4000.added b/core/.changelog.d/4000.added new file mode 100644 index 0000000000..0fee65a138 --- /dev/null +++ b/core/.changelog.d/4000.added @@ -0,0 +1 @@ +Include Optiga throttling delay in PIN countdown. diff --git a/core/SConscript.unix b/core/SConscript.unix index b98314393a..7d5d28869a 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -423,6 +423,7 @@ SOURCE_UNIX = [ 'embed/trezorhal/unix/flash.c', 'embed/trezorhal/unix/random_delays.c', 'embed/trezorhal/unix/rng.c', + 'embed/trezorhal/unix/time_estimate.c', 'embed/trezorhal/unix/usb.c', 'embed/unix/main_main.c', 'embed/unix/main.c', diff --git a/core/embed/trezorhal/optiga.h b/core/embed/trezorhal/optiga.h index 532e9da9cf..f3e52bef3e 100644 --- a/core/embed/trezorhal/optiga.h +++ b/core/embed/trezorhal/optiga.h @@ -24,7 +24,7 @@ #include <stddef.h> #include <stdint.h> #include "optiga_common.h" -#include "secbool.h" +#include "storage.h" #define OPTIGA_DEVICE_CERT_INDEX 1 #define OPTIGA_DEVICE_ECC_KEY_INDEX 0 @@ -46,14 +46,6 @@ typedef enum _optiga_sign_result { // Size of secrets used in PIN processing, e.g. salted PIN, master secret etc. #define OPTIGA_PIN_SECRET_SIZE 32 -// The number of milliseconds it takes to execute optiga_pin_set(). -#define OPTIGA_PIN_SET_MS 1300 - -// The number of milliseconds it takes to execute optiga_pin_verify(). -#define OPTIGA_PIN_VERIFY_MS 900 - -typedef secbool (*OPTIGA_UI_PROGRESS)(uint32_t elapsed_ms); - optiga_sign_result __wur optiga_sign(uint8_t index, const uint8_t *digest, size_t digest_size, uint8_t *signature, size_t max_sig_size, size_t *sig_size); @@ -67,15 +59,17 @@ bool __wur optiga_read_sec(uint8_t *sec); bool __wur optiga_random_buffer(uint8_t *dest, size_t size); -bool __wur optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, +bool __wur optiga_pin_set(optiga_ui_progress_t ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]); +uint32_t optiga_estimate_time_ms(storage_pin_op_t op); + optiga_pin_result __wur -optiga_pin_verify(OPTIGA_UI_PROGRESS ui_progress, +optiga_pin_verify(optiga_ui_progress_t ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]); optiga_pin_result __wur -optiga_pin_verify_v4(OPTIGA_UI_PROGRESS ui_progress, +optiga_pin_verify_v4(optiga_ui_progress_t ui_progress, const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]); diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index 4418c5df57..5bc8d6fc1a 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -23,6 +23,7 @@ #include "hmac.h" #include "memzero.h" #include "optiga_commands.h" +#include "optiga_transport.h" #include "rand.h" #include "storage.h" @@ -59,6 +60,9 @@ // The number of times that PIN stretching is repeated. #define PIN_STRETCH_ITERATIONS 2 +// The throttling delay when the security event counter is at its maximum. +#define OPTIGA_T_MAX_MS 5000 + // Value of the PIN counter when it is reset. static const uint8_t COUNTER_RESET[] = {0, 0, 0, 0, 0, 0, 0, PIN_MAX_TRIES}; @@ -172,6 +176,37 @@ bool optiga_read_sec(uint8_t *sec) { return ret == OPTIGA_SUCCESS && size == sizeof(uint8_t); } +uint32_t optiga_estimate_time_ms(storage_pin_op_t op) { + uint8_t sec = 0; + if (!optiga_read_sec(&sec)) { + return UINT32_MAX; + } + + // Heuristic: The SEC will increase by about 4 during the operation up to a + // maximum of 255. + sec = (sec < 255 - 4) ? sec + 4 : 255; + + // If the SEC is above 127, then Optiga introduces a throttling delay before + // the execution of each protected command. The delay grows propotionally to + // the SEC value up to a maximum delay of OPTIGA_T_MAX_MS. + uint32_t throttling_delay = + sec > 127 ? (sec - 127) * OPTIGA_T_MAX_MS / 128 : 0; + + // To estimate the overall time of the PIN operation we multiply the + // throttling delay by the number of protected Optiga commands and add the + // time required to execute all Optiga commands without throttling delays. + switch (op) { + case STORAGE_PIN_OP_SET: + return throttling_delay * 6 + 1300; + case STORAGE_PIN_OP_VERIFY: + return throttling_delay * 7 + 1000; + case STORAGE_PIN_OP_CHANGE: + return throttling_delay * 13 + 2300; + default: + return 0; + } +} + bool optiga_random_buffer(uint8_t *dest, size_t size) { while (size > OPTIGA_RANDOM_MAX_SIZE) { if (optiga_get_random(dest, OPTIGA_RANDOM_MAX_SIZE) != OPTIGA_SUCCESS) { @@ -371,7 +406,7 @@ static bool optiga_pin_init_stretch(void) { } static bool optiga_pin_stretch_common( - OPTIGA_UI_PROGRESS ui_progress, HMAC_SHA256_CTX *ctx, + optiga_ui_progress_t ui_progress, HMAC_SHA256_CTX *ctx, const uint8_t input[OPTIGA_PIN_SECRET_SIZE], bool version4) { // Implements the functionality that is common to // optiga_pin_stretch_cmac_ecdh() and the legacy function @@ -417,7 +452,7 @@ static bool optiga_pin_stretch_common( goto end; } - ui_progress(250); + ui_progress(); hmac_sha256_Update(ctx, buffer, size); @@ -428,7 +463,7 @@ static bool optiga_pin_stretch_common( } static bool optiga_pin_stretch_secret_v4( - OPTIGA_UI_PROGRESS ui_progress, uint8_t secret[OPTIGA_PIN_SECRET_SIZE]) { + optiga_ui_progress_t ui_progress, uint8_t secret[OPTIGA_PIN_SECRET_SIZE]) { // Legacy PIN verification method used in storage versions 3 and 4. // This step hardens the PIN verification process in case an attacker is able @@ -459,7 +494,7 @@ static bool optiga_pin_stretch_secret_v4( } static bool optiga_pin_stretch_cmac_ecdh( - OPTIGA_UI_PROGRESS ui_progress, + optiga_ui_progress_t ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { // This step hardens the PIN verification process in case an attacker is able // to extract the secret value of a data object in Optiga that has a @@ -503,15 +538,17 @@ static bool optiga_pin_stretch_cmac_ecdh( return ret; } -bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, +bool optiga_pin_set(optiga_ui_progress_t ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + optiga_set_ui_progress(ui_progress); + bool ret = true; if (!optiga_pin_init_metadata() || !optiga_pin_init_stretch()) { ret = false; goto end; } - ui_progress(300); + ui_progress(); // Stretch the PIN more with stretching secrets from the Optiga. This step // ensures that if an attacker extracts the value of OID_STRETCHED_PIN or @@ -590,7 +627,7 @@ bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, goto end; } - ui_progress(250); + ui_progress(); // Authorise using OID_STRETCHED_PIN so that we can write to OID_PIN_HMAC and // OID_PIN_HMAC_CTR. @@ -614,7 +651,7 @@ bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, goto end; } - ui_progress(250); + ui_progress(); // Stretch the PIN more with the counter-protected PIN secret. This method // ensures that if the user chooses a high-entropy PIN, then even if the @@ -631,15 +668,17 @@ bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, memzero(digest, sizeof(digest)); optiga_clear_auto_state(OID_PIN_SECRET); optiga_clear_auto_state(OID_STRETCHED_PIN); + optiga_set_ui_progress(NULL); return ret; } optiga_pin_result optiga_pin_verify_v4( - OPTIGA_UI_PROGRESS ui_progress, + optiga_ui_progress_t ui_progress, const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { // Legacy PIN verification method used in storage version 3 and 4. + optiga_set_ui_progress(ui_progress); optiga_pin_result ret = OPTIGA_PIN_SUCCESS; // Process the PIN-derived secret using a one-way function before sending it @@ -687,7 +726,7 @@ optiga_pin_result optiga_pin_verify_v4( goto end; } - ui_progress(200); + ui_progress(); // Authorise using OID_PIN_SECRET so that we can write to OID_PIN_COUNTER. if (optiga_set_auto_state(OPTIGA_OID_SESSION_CTX, OID_PIN_SECRET, out_secret, @@ -696,7 +735,7 @@ optiga_pin_result optiga_pin_verify_v4( goto end; } - ui_progress(200); + ui_progress(); // Combine the value of OID_PIN_SECRET with the PIN-derived secret and // stretching secrets from the Optiga. @@ -715,6 +754,7 @@ optiga_pin_result optiga_pin_verify_v4( end: memzero(stretched_pin, sizeof(stretched_pin)); optiga_clear_auto_state(OID_STRETCHED_PIN); + optiga_set_ui_progress(NULL); return ret; } @@ -756,8 +796,9 @@ static optiga_pin_result optiga_pin_stretch_hmac( } optiga_pin_result optiga_pin_verify( - OPTIGA_UI_PROGRESS ui_progress, + optiga_ui_progress_t ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { + optiga_set_ui_progress(ui_progress); optiga_pin_result ret = OPTIGA_PIN_SUCCESS; // Stretch the PIN more with stretching secrets from the Optiga. @@ -801,7 +842,7 @@ optiga_pin_result optiga_pin_verify( goto end; } - ui_progress(200); + ui_progress(); // Reset the counter which limits the use of OID_PIN_HMAC. if (optiga_set_data_object(OID_PIN_HMAC_CTR, false, COUNTER_RESET, @@ -837,13 +878,14 @@ optiga_pin_result optiga_pin_verify( goto end; } - ui_progress(200); + ui_progress(); end: memzero(pin_secret, sizeof(pin_secret)); memzero(digest, sizeof(digest)); optiga_clear_auto_state(OID_STRETCHED_PIN); optiga_clear_auto_state(OID_PIN_SECRET); + optiga_set_ui_progress(NULL); return ret; } diff --git a/core/embed/trezorhal/optiga/optiga_transport.c b/core/embed/trezorhal/optiga/optiga_transport.c index 7eba26b38f..2d183f7b66 100644 --- a/core/embed/trezorhal/optiga/optiga_transport.c +++ b/core/embed/trezorhal/optiga/optiga_transport.c @@ -114,6 +114,7 @@ static uint8_t frame_num_out = 0xff; static uint8_t frame_num_in = 0xff; static uint8_t frame_buffer[1 + OPTIGA_DATA_REG_LEN]; static size_t frame_size = 0; // Set by optiga_read(). +static optiga_ui_progress_t ui_progress = NULL; // Secure channel constants. #define SEC_CHAN_SCTR_SIZE 1 @@ -169,6 +170,8 @@ void optiga_transport_set_log_hex(optiga_log_hex_t f) { log_hex = f; } } #endif +void optiga_set_ui_progress(optiga_ui_progress_t f) { ui_progress = f; } + static uint16_t calc_crc_byte(uint16_t seed, uint8_t c) { uint16_t h1 = (seed ^ c) & 0xFF; uint16_t h2 = h1 & 0x0F; @@ -430,6 +433,10 @@ static optiga_result optiga_read(void) { } not_busy_count += 1; } + + if (ui_progress != NULL) { + ui_progress(); + } } while (hal_ticks_ms() < deadline); return OPTIGA_ERR_TIMEOUT; diff --git a/core/embed/trezorhal/optiga_common.h b/core/embed/trezorhal/optiga_common.h index d86c1ea403..1c1e24e67e 100644 --- a/core/embed/trezorhal/optiga_common.h +++ b/core/embed/trezorhal/optiga_common.h @@ -20,6 +20,8 @@ #ifndef TREZORHAL_OPTIGA_COMMON_H #define TREZORHAL_OPTIGA_COMMON_H +#include "secbool.h" + typedef enum _optiga_result { OPTIGA_SUCCESS = 0, // Operation completed successfully. OPTIGA_ERR_I2C_WRITE, // HAL failed on I2C write. @@ -34,6 +36,8 @@ typedef enum _optiga_result { OPTIGA_ERR_CMD, // Command error. See error code data object 0xF1C2. } optiga_result; +typedef secbool (*optiga_ui_progress_t)(void); + #if !PRODUCTION typedef void (*optiga_log_hex_t)(const char *prefix, const uint8_t *data, size_t data_size); diff --git a/core/embed/trezorhal/optiga_transport.h b/core/embed/trezorhal/optiga_transport.h index 8e7b1e2ffe..041c88250b 100644 --- a/core/embed/trezorhal/optiga_transport.h +++ b/core/embed/trezorhal/optiga_transport.h @@ -44,6 +44,8 @@ optiga_result optiga_resync(void); optiga_result optiga_soft_reset(void); optiga_result optiga_set_data_reg_len(size_t size); +void optiga_set_ui_progress(optiga_ui_progress_t f); + #if !PRODUCTION void optiga_transport_set_log_hex(optiga_log_hex_t f); #endif diff --git a/core/embed/trezorhal/stm32f4/time_estimate.c b/core/embed/trezorhal/stm32f4/time_estimate.c new file mode 100644 index 0000000000..99732ee900 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/time_estimate.c @@ -0,0 +1,28 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "time_estimate.h" + +// The number of CPU cycles required to execute one iteration of PBKDF2. +#define PIN_PBKDF2_CYCLES_PER_ITER 11100 + +uint32_t time_estimate_pbkdf2_ms(uint32_t iterations) { + extern uint32_t SystemCoreClock; + return PIN_PBKDF2_CYCLES_PER_ITER * iterations / (SystemCoreClock / 1000); +} diff --git a/core/embed/trezorhal/stm32u5/time_estimate.c b/core/embed/trezorhal/stm32u5/time_estimate.c new file mode 120000 index 0000000000..9c2a9b118e --- /dev/null +++ b/core/embed/trezorhal/stm32u5/time_estimate.c @@ -0,0 +1 @@ +../stm32f4/time_estimate.c \ No newline at end of file diff --git a/core/embed/trezorhal/time_estimate.h b/core/embed/trezorhal/time_estimate.h new file mode 100644 index 0000000000..68baa3098d --- /dev/null +++ b/core/embed/trezorhal/time_estimate.h @@ -0,0 +1,27 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_TIME_ESTIMATE_H +#define TREZORHAL_TIME_ESTIMATE_H + +#include <stdint.h> + +uint32_t time_estimate_pbkdf2_ms(uint32_t iterations); + +#endif diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index 292c0d4b21..de6f27ab0e 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -88,30 +88,29 @@ bool optiga_read_sec(uint8_t *sec) { return true; } +uint32_t optiga_estimate_time_ms(storage_pin_op_t op) { return 0; } + bool optiga_random_buffer(uint8_t *dest, size_t size) { random_buffer(dest, size); return true; } -bool optiga_pin_set(OPTIGA_UI_PROGRESS ui_progress, +bool optiga_pin_set(optiga_ui_progress_t ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { - ui_progress(OPTIGA_PIN_SET_MS); return true; } optiga_pin_result optiga_pin_verify_v4( - OPTIGA_UI_PROGRESS ui_progress, + optiga_ui_progress_t ui_progress, const uint8_t pin_secret[OPTIGA_PIN_SECRET_SIZE], uint8_t out_secret[OPTIGA_PIN_SECRET_SIZE]) { memcpy(out_secret, pin_secret, OPTIGA_PIN_SECRET_SIZE); - ui_progress(OPTIGA_PIN_VERIFY_MS); return OPTIGA_PIN_SUCCESS; } optiga_pin_result optiga_pin_verify( - OPTIGA_UI_PROGRESS ui_progress, + optiga_ui_progress_t ui_progress, uint8_t stretched_pin[OPTIGA_PIN_SECRET_SIZE]) { - ui_progress(OPTIGA_PIN_VERIFY_MS); return OPTIGA_PIN_SUCCESS; } diff --git a/core/embed/trezorhal/unix/time_estimate.c b/core/embed/trezorhal/unix/time_estimate.c new file mode 100644 index 0000000000..803121d28f --- /dev/null +++ b/core/embed/trezorhal/unix/time_estimate.c @@ -0,0 +1,25 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "time_estimate.h" + +uint32_t time_estimate_pbkdf2_ms(uint32_t iterations) { + (void)iterations; + return 500; +} diff --git a/core/site_scons/models/stm32f4_common.py b/core/site_scons/models/stm32f4_common.py index 03dc80ab9d..86032a51c1 100644 --- a/core/site_scons/models/stm32f4_common.py +++ b/core/site_scons/models/stm32f4_common.py @@ -52,6 +52,7 @@ def stm32f4_common_files(env, defines, sources, paths): "embed/trezorhal/stm32f4/secret.c", "embed/trezorhal/stm32f4/systick.c", "embed/trezorhal/stm32f4/supervise.c", + "embed/trezorhal/stm32f4/time_estimate.c", "embed/trezorhal/stm32f4/random_delays.c", "embed/trezorhal/stm32f4/rng.c", "embed/trezorhal/stm32f4/vectortable.s", diff --git a/core/site_scons/models/stm32u5_common.py b/core/site_scons/models/stm32u5_common.py index 454e33ae07..2bbd7b31bb 100644 --- a/core/site_scons/models/stm32u5_common.py +++ b/core/site_scons/models/stm32u5_common.py @@ -66,6 +66,7 @@ def stm32u5_common_files(env, defines, sources, paths): "embed/trezorhal/stm32u5/random_delays.c", "embed/trezorhal/stm32u5/rng.c", "embed/trezorhal/stm32u5/tamper.c", + "embed/trezorhal/stm32u5/time_estimate.c", "embed/trezorhal/stm32u5/trustzone.c", "embed/trezorhal/stm32u5/vectortable.s", ] diff --git a/legacy/Makefile b/legacy/Makefile index d77354a04e..0435a42d40 100644 --- a/legacy/Makefile +++ b/legacy/Makefile @@ -15,6 +15,7 @@ OBJS += oled.o OBJS += random_delays.o OBJS += rng.o OBJS += supervise.o +OBJS += time_estimate.o OBJS += usb21_standard.o OBJS += usb_standard.o OBJS += util.o diff --git a/legacy/common.c b/legacy/common.c index b04f8dfd7d..5114c89bba 100644 --- a/legacy/common.c +++ b/legacy/common.c @@ -26,6 +26,7 @@ #include "layout.h" #include "oled.h" #include "rng.h" +#include "timer.h" #include "util.h" uint8_t HW_ENTROPY_DATA[HW_ENTROPY_LEN]; @@ -98,6 +99,8 @@ void hal_delay(uint32_t ms) { #endif } +uint32_t hal_ticks_ms(void) { return timer_ms(); } + void drbg_init(void) { uint8_t entropy[48] = {0}; random_buffer(entropy, sizeof(entropy)); diff --git a/legacy/common.h b/legacy/common.h index 42c1d3ad47..c504b6118c 100644 --- a/legacy/common.h +++ b/legacy/common.h @@ -39,6 +39,7 @@ void show_pin_too_many_screen(void); (((expr) == sectrue) ? (void)0 : __fatal_error(msg, __FILE__, __LINE__)) void hal_delay(uint32_t ms); +uint32_t hal_ticks_ms(void); void drbg_init(void); void drbg_reseed(const uint8_t *entropy, size_t len); diff --git a/legacy/time_estimate.c b/legacy/time_estimate.c new file mode 100644 index 0000000000..d5efed7e7b --- /dev/null +++ b/legacy/time_estimate.c @@ -0,0 +1,35 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "time_estimate.h" + +// The number of CPU cycles required to execute one iteration of PBKDF2. +#define PIN_PBKDF2_CYCLES_PER_ITER 11100 + +// MCU clock 120 MHz +#define MCU_CLOCK 120000000 + +uint32_t time_estimate_pbkdf2_ms(uint32_t iterations) { +#if EMULATOR + (void)iterations; + return 500; +#else + return PIN_PBKDF2_CYCLES_PER_ITER * iterations / (MCU_CLOCK / 1000); +#endif +} diff --git a/legacy/time_estimate.h b/legacy/time_estimate.h new file mode 100644 index 0000000000..68baa3098d --- /dev/null +++ b/legacy/time_estimate.h @@ -0,0 +1,27 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_TIME_ESTIMATE_H +#define TREZORHAL_TIME_ESTIMATE_H + +#include <stdint.h> + +uint32_t time_estimate_pbkdf2_ms(uint32_t iterations); + +#endif diff --git a/storage/storage.c b/storage/storage.c index 1d9713c7bd..7c3d32116d 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -31,6 +31,7 @@ #include "sha2.h" #include "storage.h" #include "storage_utils.h" +#include "time_estimate.h" #if USE_OPTIGA #include "optiga.h" @@ -88,22 +89,8 @@ const uint32_t V0_PIN_EMPTY = 1; // The total number of iterations to use in PBKDF2. #define PIN_ITER_COUNT 20000 -// The number of milliseconds required to execute PBKDF2. -#define PIN_PBKDF2_MS 1280 - -// The number of milliseconds required to set the PIN. -#if USE_OPTIGA -#define PIN_SET_MS (PIN_PBKDF2_MS + OPTIGA_PIN_SET_MS) -#else -#define PIN_SET_MS PIN_PBKDF2_MS -#endif - -// The number of milliseconds required to verify the PIN. -#if USE_OPTIGA -#define PIN_VERIFY_MS (PIN_PBKDF2_MS + OPTIGA_PIN_VERIFY_MS) -#else -#define PIN_VERIFY_MS PIN_PBKDF2_MS -#endif +// The minimum number of milliseconds between progress updates. +#define MIN_PROGRESS_UPDATE_MS 100 // The length of the hashed hardware salt in bytes. #define HARDWARE_SALT_SIZE SHA256_DIGEST_LENGTH @@ -152,7 +139,8 @@ CONFIDENTIAL static secbool initialized = secfalse; CONFIDENTIAL static secbool unlocked = secfalse; static PIN_UI_WAIT_CALLBACK ui_callback = NULL; static uint32_t ui_total = 0; -static uint32_t ui_rem = 0; +static uint32_t ui_begin = 0; +static uint32_t ui_next_update = 0; static enum storage_ui_message_t ui_message = NO_MSG; CONFIDENTIAL static uint8_t cached_keys[KEYS_SIZE] = {0}; CONFIDENTIAL static uint8_t *const cached_dek = cached_keys; @@ -458,31 +446,83 @@ static secbool is_not_wipe_code(const uint8_t *pin, size_t pin_len) { return sectrue; } -static void ui_total_init(uint32_t total_ms) { - ui_total = total_ms; - ui_rem = total_ms; +static uint32_t ui_estimate_time_ms(storage_pin_op_t op) { + uint32_t time_ms = 0; +#if USE_OPTIGA + time_ms += optiga_estimate_time_ms(op); +#endif + + uint32_t pbkdf2_ms = time_estimate_pbkdf2_ms(PIN_ITER_COUNT); + switch (op) { + case STORAGE_PIN_OP_SET: + case STORAGE_PIN_OP_VERIFY: + time_ms += pbkdf2_ms; + break; + case STORAGE_PIN_OP_CHANGE: + time_ms += 2 * pbkdf2_ms; + break; + default: + return 1; + } + + return time_ms; } -static void ui_total_add(uint32_t added_ms) { - ui_total += added_ms; - ui_rem += added_ms; +static void ui_progress_init(storage_pin_op_t op) { + ui_total = ui_estimate_time_ms(op); + ui_next_update = 0; } -static secbool ui_progress(uint32_t elapsed_ms) { - ui_rem -= elapsed_ms; - if (ui_callback && ui_message) { - uint32_t progress = 0; - if (ui_total < 1000000) { - progress = 1000 * (ui_total - ui_rem) / ui_total; - } else { - // Avoid overflow. Precise enough. - progress = (ui_total - ui_rem) / (ui_total / 1000); - } - // Round the remaining time to the nearest second. - return ui_callback((ui_rem + 500) / 1000, progress, ui_message); - } else { +static void ui_progress_add(uint32_t added_ms) { ui_total += added_ms; } + +static secbool ui_progress(void) { + uint32_t now = hal_ticks_ms(); + if (ui_callback == NULL || ui_message == 0 || now < ui_next_update) { return secfalse; } + + // The UI dialog is initialized by calling ui_callback() with progress = 0. If + // this is the first call, i.e. ui_next_update == 0, then make sure that + // progress comes out exactly 0. + if (ui_next_update == 0) { + ui_begin = now; + } + ui_next_update = now + MIN_PROGRESS_UPDATE_MS; + uint32_t ui_elapsed = now - ui_begin; + + // Round the remaining time to the nearest second. + uint32_t ui_rem_sec = (ui_total - ui_elapsed + 500) / 1000; + +#ifndef TREZOR_EMULATOR + uint32_t progress = 0; + if (ui_total < 1000000) { + progress = 1000 * ui_elapsed / ui_total; + } else { + // Avoid uint32 overflow. Precise enough. + progress = ui_elapsed / (ui_total / 1000); + } +#else + // In the emulator we derive the progress from the number of remaining seconds + // to avoid flaky UI tests. + uint32_t ui_total_sec = (ui_total + 500) / 1000; + uint32_t progress = 1000 - 1000 * ui_rem_sec / ui_total_sec; +#endif + + // Avoid reaching progress = 1000 or overflowing the total time, since calling + // ui_callback() with progress = 1000 terminates the UI dialog. + if (progress >= 1000) { + progress = 999; + ui_elapsed = ui_total; + } + + return ui_callback(ui_rem_sec, progress, ui_message); +} + +static void ui_progress_finish(void) { + // The UI dialog is terminated by calling ui_callback() with progress = 1000. + if (ui_callback != NULL && ui_message != 0) { + ui_callback(0, 1000, ui_message); + } } #if !USE_OPTIGA @@ -510,7 +550,7 @@ static void derive_kek_v4(const uint8_t *pin, size_t pin_len, pbkdf2_hmac_sha256_Init(&ctx, pin, pin_len, salt, salt_len, 1); for (int i = 1; i <= 5; i++) { pbkdf2_hmac_sha256_Update(&ctx, PIN_ITER_COUNT / 10); - ui_progress(PIN_PBKDF2_MS / 10); + ui_progress(); } #ifdef STM32U5 @@ -527,7 +567,7 @@ static void derive_kek_v4(const uint8_t *pin, size_t pin_len, pbkdf2_hmac_sha256_Init(&ctx, pin, pin_len, salt, salt_len, 2); for (int i = 6; i <= 10; i++) { pbkdf2_hmac_sha256_Update(&ctx, PIN_ITER_COUNT / 10); - ui_progress(PIN_PBKDF2_MS / 10); + ui_progress(); } pbkdf2_hmac_sha256_Final(&ctx, keiv); @@ -569,7 +609,7 @@ static void stretch_pin(const uint8_t *pin, size_t pin_len, for (int i = 1; i <= 10; i++) { pbkdf2_hmac_sha256_Update(&ctx, PIN_ITER_COUNT / 10); - ui_progress(PIN_PBKDF2_MS / 10); + ui_progress(); } #ifdef STM32U5 uint8_t stretched_pin_tmp[SHA256_DIGEST_LENGTH] = {0}; @@ -683,7 +723,6 @@ static secbool set_pin(const uint8_t *pin, size_t pin_len, uint8_t keiv[12] = {0}; chacha20poly1305_ctx ctx = {0}; random_buffer(rand_salt, STORAGE_SALT_SIZE); - ui_progress(0); ensure(derive_kek_set(pin, pin_len, rand_salt, ext_salt, kek), "derive_kek_set failed"); rfc7539_init(&ctx, kek, keiv); @@ -739,9 +778,10 @@ static void init_wiped_storage(void) { ensure(set_wipe_code(WIPE_CODE_EMPTY, WIPE_CODE_EMPTY_LEN), "set_wipe_code failed"); - ui_total_init(PIN_SET_MS); + ui_progress_init(STORAGE_PIN_OP_SET); ui_message = PROCESSING_MSG; ensure(set_pin(PIN_EMPTY, PIN_EMPTY_LEN, NULL), "init_pin failed"); + ui_progress_finish(); } void storage_init(PIN_UI_WAIT_CALLBACK callback, const uint8_t *salt, @@ -938,7 +978,7 @@ static secbool unlock(const uint8_t *pin, size_t pin_len, // In case of an upgrade from version 4 or earlier bump the total time of UI // progress to account for the set_pin() call in storage_upgrade_unlocked(). if (get_lock_version() <= 4) { - ui_total_add(PIN_SET_MS); + ui_progress_add(ui_estimate_time_ms(STORAGE_PIN_OP_SET)); } // Now we can check for wipe code. @@ -960,11 +1000,13 @@ static secbool unlock(const uint8_t *pin, size_t pin_len, } // Sleep for 2^ctr - 1 seconds before checking the PIN. - uint32_t wait = (1 << ctr) - 1; - ui_total_add(wait * 1000); - ui_progress(0); - for (uint32_t i = 0; i < 10 * wait; i++) { - if (sectrue == ui_progress(100)) { + uint32_t wait_ms = 1000 * ((1 << ctr) - 1); + ui_progress_add(wait_ms); + ui_progress(); + + uint32_t begin = hal_ticks_ms(); + while (hal_ticks_ms() - begin < wait_ms) { + if (sectrue == ui_progress()) { memzero(&legacy_pin, sizeof(legacy_pin)); return secfalse; } @@ -995,10 +1037,10 @@ static secbool unlock(const uint8_t *pin, size_t pin_len, show_pin_too_many_screen(); } - // Finish the countdown. Check for ui_rem underflow. - while (0 < ui_rem && ui_rem < ui_total) { + // Finish the countdown. + while (hal_ticks_ms() - ui_begin < ui_total) { ui_message = WRONG_PIN_MSG; - if (sectrue == ui_progress(100)) { + if (sectrue == ui_progress()) { return secfalse; } hal_delay(100); @@ -1030,7 +1072,7 @@ secbool storage_unlock(const uint8_t *pin, size_t pin_len, return secfalse; } - ui_total_init(PIN_VERIFY_MS); + ui_progress_init(STORAGE_PIN_OP_VERIFY); if (pin_len == 0) { if (ui_message == NO_MSG) { ui_message = STARTING_MSG; @@ -1040,7 +1082,10 @@ secbool storage_unlock(const uint8_t *pin, size_t pin_len, } else { ui_message = VERIFYING_PIN_MSG; } - return unlock(pin, pin_len, ext_salt); + + secbool ret = unlock(pin, pin_len, ext_salt); + ui_progress_finish(); + return ret; } /* @@ -1326,20 +1371,26 @@ secbool storage_change_pin(const uint8_t *oldpin, size_t oldpin_len, return secfalse; } - ui_total_init(PIN_VERIFY_MS + PIN_SET_MS); + ui_progress_init(STORAGE_PIN_OP_CHANGE); ui_message = (oldpin_len != 0 && newpin_len == 0) ? VERIFYING_PIN_MSG : PROCESSING_MSG; - if (sectrue != unlock(oldpin, oldpin_len, old_ext_salt)) { - return secfalse; + secbool ret = unlock(oldpin, oldpin_len, old_ext_salt); + if (sectrue != ret) { + goto end; } // Fail if the new PIN is the same as the wipe code. - if (sectrue != is_not_wipe_code(newpin, newpin_len)) { - return secfalse; + ret = is_not_wipe_code(newpin, newpin_len); + if (sectrue != ret) { + goto end; } - return set_pin(newpin, newpin_len, new_ext_salt); + ret = set_pin(newpin, newpin_len, new_ext_salt); + +end: + ui_progress_finish(); + return ret; } void storage_ensure_not_wipe_code(const uint8_t *pin, size_t pin_len) { @@ -1374,14 +1425,19 @@ secbool storage_change_wipe_code(const uint8_t *pin, size_t pin_len, return secfalse; } - ui_total_init(PIN_VERIFY_MS); + ui_progress_init(STORAGE_PIN_OP_VERIFY); ui_message = (pin_len != 0 && wipe_code_len == 0) ? VERIFYING_PIN_MSG : PROCESSING_MSG; - secbool ret = secfalse; - if (sectrue == unlock(pin, pin_len, ext_salt)) { - ret = set_wipe_code(wipe_code, wipe_code_len); + secbool ret = unlock(pin, pin_len, ext_salt); + if (sectrue != ret) { + goto end; } + + ret = set_wipe_code(wipe_code, wipe_code_len); + +end: + ui_progress_finish(); return ret; } @@ -1550,15 +1606,17 @@ static secbool storage_upgrade(void) { } // Set EDEK_PVC_KEY and PIN_NOT_SET_KEY. - ui_total_init(PIN_SET_MS); - ui_message = PROCESSING_MSG; uint8_t pin[V0_MAX_PIN_LEN] = {0}; size_t pin_len = 0; secbool found = norcow_get(V0_PIN_KEY, &val, &len); if (sectrue == found && *(const uint32_t *)val != V0_PIN_EMPTY) { pin_len = int_to_pin(*(const uint32_t *)val, pin); } + + ui_progress_init(STORAGE_PIN_OP_SET); + ui_message = PROCESSING_MSG; set_pin(pin, pin_len, NULL); + ui_progress_finish(); memzero(pin, sizeof(pin)); // Convert PIN failure counter. diff --git a/storage/storage.h b/storage/storage.h index 18480775c4..2f956c6efe 100644 --- a/storage/storage.h +++ b/storage/storage.h @@ -61,6 +61,12 @@ enum storage_ui_message_t { WRONG_PIN_MSG, }; +typedef enum { + STORAGE_PIN_OP_SET = 0, + STORAGE_PIN_OP_VERIFY, + STORAGE_PIN_OP_CHANGE, +} storage_pin_op_t; + typedef secbool (*PIN_UI_WAIT_CALLBACK)(uint32_t wait, uint32_t progress, enum storage_ui_message_t message); diff --git a/storage/tests/c/Makefile b/storage/tests/c/Makefile index a31c7ca3fa..8217c7ebb9 100644 --- a/storage/tests/c/Makefile +++ b/storage/tests/c/Makefile @@ -4,6 +4,7 @@ CFLAGS = -Wall -Wshadow -Wextra -Wpedantic -Werror -Wno-missing-braces CFLAGS += -fPIC CFALGS += -fsanitize=address,undefined CFLAGS += -DTREZOR_MODEL_T +CFLAGS += -DTREZOR_EMULATOR CFLAGS += -DUSE_INSECURE_PRNG CFLAGS += -DCONFIDENTIAL="" diff --git a/storage/tests/c/common.c b/storage/tests/c/common.c index 59ac49ef37..4ebf5a31fe 100644 --- a/storage/tests/c/common.c +++ b/storage/tests/c/common.c @@ -23,6 +23,8 @@ #include "common.h" +static uint32_t ticks_ms = 0; + void __shutdown(void) { printf("SHUTDOWN\n"); exit(3); @@ -41,3 +43,6 @@ void __fatal_error(const char *msg, const char *file, int line) { void show_wipe_code_screen(void) {} void show_pin_too_many_screen(void) {} + +void hal_delay(uint32_t delay_ms) { ticks_ms += delay_ms; } +uint32_t hal_ticks_ms(void) { return ticks_ms; } diff --git a/storage/tests/c/common.h b/storage/tests/c/common.h index 9b4952df4f..702ff756b0 100644 --- a/storage/tests/c/common.h +++ b/storage/tests/c/common.h @@ -30,6 +30,7 @@ void show_pin_too_many_screen(void); #define ensure(expr, msg) \ (((expr) == sectrue) ? (void)0 : __fatal_error(msg, __FILE__, __LINE__)) -#define hal_delay(ms) (void)ms; +void hal_delay(uint32_t delay_ms); +uint32_t hal_ticks_ms(void); #endif diff --git a/storage/tests/c/time_estimate.h b/storage/tests/c/time_estimate.h new file mode 100644 index 0000000000..2e487b3ce7 --- /dev/null +++ b/storage/tests/c/time_estimate.h @@ -0,0 +1,30 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_TIME_ESTIMATE_H +#define TREZORHAL_TIME_ESTIMATE_H + +#include <stdint.h> + +uint32_t time_estimate_pbkdf2_ms(uint32_t iterations) { + (void)iterations; + return 500; +} + +#endif diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 635ccaeea6..1cb52a879b 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -726,18 +726,18 @@ }, "T2B1": { "click_tests": { -"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "823e1a1a4ee1519fbc8d3495f541e3c92e9f7dab7811ebd798fd17e4be38131d", -"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "22b2712bb4de1b9d8ad41f9ba298a76d084087215df6aa337ab81617e7523101", -"T2B1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "8043917ad574b7ce0ca9c5060054c696c798b49187bf8264fa14a67ccbf6d28f", -"T2B1_cs_test_autolock.py::test_autolock_interrupts_signing": "77331e8264ac73c629d8f5a9c6a812f15e7ec6f02b2a8c1f018a80f23b5d5125", -"T2B1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "a7342cf937462d9502ec0e96308f13f1ad965fd31e95ac978fd9a5e93afa4840", -"T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "ad6708b0d3dbd753b191a08dc91fb2c4698585fd6fcd15f866538170a4f21a66", -"T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "249a05bf0473b440320ddc349794f7aea8ba237cedd02e968c304cd37011417e", -"T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "ae10d192c3a22cc99ccfacc2fc3759f526917d5e7789df3825418ad8ddda06da", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f7994f0f14e265209a9572b5de9091b8e32313beadf407a1276fb852a80faadd", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "5237aecc0c9b289dc67afbf7c8ac6837d5d606af3134bcf758e7b1899a8103b4", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9ca6b642bda2cb093b5f13d1b749f2c244a71cc9323f71610dde539cc2d25b39", -"T2B1_cs_test_lock.py::test_hold_to_lock": "07cee6c56f7dbc28317dc500eb84feb1ce6b4123de16e31b72e5c47dd1d3adf3", +"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3cc51c2ae3675ac1de3b3c51dac604a2d5ec70bbe20fd38a3eff97a799dfa4f2", +"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "ecf3758995aae8caeb60ff9c1f105d580dfda1a37c6f9a3e853cdb2b7a7e5db7", +"T2B1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "55d1f4cf9ef7fea24367c78078f21ddc18b6a19936f8f373bb7108ea3178d16d", +"T2B1_cs_test_autolock.py::test_autolock_interrupts_signing": "a8bdfb3d51a11ab664a07750e2fb3113e47a2999bea33b2e78520e6101d1b7e7", +"T2B1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "1308e046673fdb00f5e17bb9ad1196a6308164beaf9dee990b2f8e23fc396d47", +"T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "63034c365c6e31eb26dffb36718ee15d16dfba85e1f01db72ca5e31ba80a534f", +"T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "ac99b9bf44f1c61aa954870fb6fb00c7ec04977371bcd88c4fdc01067f1c999a", +"T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "698276d28e195186d2cf784092fbff166bf45d9f8948836aaa83206d09f0d031", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "76aa0315f4c793bb0d93c16f5f18f786fab93b3cbca008549dc3eb9e98416c3d", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3ea1cb7dc64126eea599d5c7a66335abd561421edbc1f53e59294e01c8052026", +"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2e12708cddad2034e56595399c58e92ce4ffc1daf884e23962d97a9879953370", +"T2B1_cs_test_lock.py::test_hold_to_lock": "4ba92841c09e4f36382bd96a4e5dbf2e16154fab75603a1d5b1b3eb94776d375", "T2B1_cs_test_passphrase_tr.py::test_cancel": "3f02823f2de1e46c30dadc9aef8d1c1fe2cdd2ecff0d1ec9aeb770793ff482f2", "T2B1_cs_test_passphrase_tr.py::test_passphrase_delete": "1e464363ef619f450d2c0c9f82d5336e666ee3ded7107ce1079267dd75a3cdb3", "T2B1_cs_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "476649816e1e9dfb2c34133c89cc4ee9832ed69adcb47899b2fced844071e6be", @@ -747,43 +747,43 @@ "T2B1_cs_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "26ccf5e617ca7014c7801c10c3b4be2e011457a6969109f709824494123ab98a", "T2B1_cs_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ba468e87e835f86f67e382ad4175d3f95de2b45207b141f7226ec983d4fbc36e", "T2B1_cs_test_passphrase_tr.py::test_passphrase_loop_all_characters": "42717296ddc466af7f2ff36d3ff80345f0e7dcaa8950d2daccd2402ada07a33b", -"T2B1_cs_test_pin.py::test_pin_change": "fabce062d33968a98b9544dcd23331551760ecc0e5b75be0df31bd948012de4a", -"T2B1_cs_test_pin.py::test_pin_delete_hold": "fbba62ead6066aa6b12e6105dbf9208173a09d532eed66e76c4edb6c1222eb19", -"T2B1_cs_test_pin.py::test_pin_empty_cannot_send": "9a44d6d3858d01626dcae41661958417354ddf687ced54d6386addaf6511e3df", -"T2B1_cs_test_pin.py::test_pin_incorrect": "fb782af1b6ae84af8b5e02b3eb5992331188e57ea732507feb9945a3a329190f", -"T2B1_cs_test_pin.py::test_pin_long": "86b48712c47f1a9b8e86120712ef7d73d2ee2ac1de3aa90f4e3b8169e7a2e215", -"T2B1_cs_test_pin.py::test_pin_long_delete": "910d75cc74e2dd6738d53dba80b32ff0f64c23420a82c01978712a3b6ddf1739", -"T2B1_cs_test_pin.py::test_pin_longer_than_max": "4ad6ba2a21f3ebd6c62bd5eed382316eb8805ddb53dc0db03791cfff03384965", -"T2B1_cs_test_pin.py::test_pin_same_as_wipe_code": "54bb3b9e10a371c7ea578393ac620a663801fd5c175d0fc75a8eed4dbf426f19", -"T2B1_cs_test_pin.py::test_pin_setup": "fbe2e54e166a899bf29ee830865eaeeb39dca7321a1d8b0e91a683f81b100263", +"T2B1_cs_test_pin.py::test_pin_change": "b17cf4b44383e2bda31c2b379a4e38209a404809ed9f6feee3676fcc80832189", +"T2B1_cs_test_pin.py::test_pin_delete_hold": "752db47bdc86f89d572f9a86a178cc3fc00dfda860efa13e89bb56643d443782", +"T2B1_cs_test_pin.py::test_pin_empty_cannot_send": "42249d50ce6f58235dfbcf6e5af3c111a97e95b3c6c4b6c250a93624f65b22a5", +"T2B1_cs_test_pin.py::test_pin_incorrect": "a9887ff8263c98d026468d72cc6ab648eee66792e57b2f41643e5439dc044885", +"T2B1_cs_test_pin.py::test_pin_long": "2df6df5c992f859647e4fbf271232094c4f159eeab9cfcfada6f7733eb70161e", +"T2B1_cs_test_pin.py::test_pin_long_delete": "9a1d32b0e29f1e0006d840869231e6fd482ee9980882d14129a8885cd022e689", +"T2B1_cs_test_pin.py::test_pin_longer_than_max": "6a3bba51ee757d5ed3746a45d0db38768a203869add89273d416b3eba243f9b7", +"T2B1_cs_test_pin.py::test_pin_same_as_wipe_code": "a068497c9207f28f11bfe972b60c5369d95ee9f02c0ff491b7ad79c9718c17e3", +"T2B1_cs_test_pin.py::test_pin_setup": "6e5eff703b54167cd2b9b99736132e7f4bdce1c6524d3d8309ef7e10a174e9e2", "T2B1_cs_test_pin.py::test_pin_setup_mismatch": "41da639b7b8d8446b7b4e18df7f4d9a065e4ca418fa82cdb907db4326bc1e10e", -"T2B1_cs_test_pin.py::test_pin_short": "396d24cc6ce74559c6e56ee989dcfd4d22c5972c555c06ce06b353fad2fa7554", -"T2B1_cs_test_pin.py::test_wipe_code_same_as_pin": "ead8d4d5fa61f9c91c6fc3e57d4ef61579eb1972c1214f2a429bfc2cf7992252", -"T2B1_cs_test_pin.py::test_wipe_code_setup": "16e7d0386ac030784ea9e265fff79f95f92d3738d69bd62d80b69cfa21b4f927", -"T2B1_cs_test_recovery.py::test_recovery_bip39": "5ff6772084786a60dfd86c4f9cccb6a0c0ff20516a3a840f86f043e2fa3815d0", -"T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "c99da3fd48bf60357a622edf95e43aa006efce6abe4cb012f4dd2734eda928e7", -"T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "34dc24d15b42b8a40c187d289f2916062e8cbad8011afe068950970671b2aea6", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "b3ef535c29cb9669cd8e584609b48b8e8b6de126839c396593aacc57d34c0b9a", -"T2B1_cs_test_reset_bip39.py::test_reset_bip39": "959a1d079d5697b8df5a42f4e991c0b3d0c9b43edd8988684ee128fa2018b0ad", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9167883bb6c34b39d64b072bce959481bbd0fb7f30b07f746b6fc6b0ebd6636b", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "645d18a049985e741fd2a2bc592fc81075d5947aa2c617934f4ed88828486dfe", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6419409dc0fe960bd4f3fa314a37780c8b9b696888e6285198ad4301eab8278e", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "3c13d436e354481fca05139cc41f82b6d321f8d4640f438f6290349ea5f64148", +"T2B1_cs_test_pin.py::test_pin_short": "f6b05b67f20b78a075b7d27026b09f2ef78fcd8ac966703e39ee14e9beb555e2", +"T2B1_cs_test_pin.py::test_wipe_code_same_as_pin": "92af8352447fd6b8458e5975cdb63335f62e1912fce4c25d7dccfbd98953a48a", +"T2B1_cs_test_pin.py::test_wipe_code_setup": "8c09fdd26b153186f86baee7946e3f8d22ebcc15db271f3b4e2b3413c6834c82", +"T2B1_cs_test_recovery.py::test_recovery_bip39": "986b3645dbaaebc733e0aaf2c129b986a4cc573248e6a7ba7096d03d364b92cc", +"T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "76c051617b6212b5f53f676c29d55fd0852218edaff74017cda4ff3e791082cd", +"T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "f4b42fd8aa1d0c1d06f52a903a26c244039c4f2c3aa3d577266d0a9acfbfbaf8", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "ddbaf440d10d93149c9226a5a0be7044d5c9982bbe2bfcbaeefc4fb0c70e4239", +"T2B1_cs_test_reset_bip39.py::test_reset_bip39": "fa1f66ecb995b4152fd0cc4e4670cfc0f2b5a6c632a2645d1f3d01c05f7a037e", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0ca14e255f36cb736fcb3d90024fb2c00e346313dcac2d9e20c379368e60d4a9", +"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2157c3b2777af219ee4cf1358a15b6aa0a9a1bf629d4bff0586d2848344a2baa", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b7337d95882b4678f27a4456e9338d9760b0870ac559eff45e444ac48ec1f286", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b53fd9a6108cfe2492354ce0b7b78c2760f82303c7f0fc0d8ab114a2410b2696", "T2B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", "T2B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", "T2B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", -"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a71c1ea99c846d8fc75157f453b60b83ef631fd0658634b92a04562872da422b", -"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "03dc1396a34f2576bc9f217046727fc44275d19827dfec487b4dc6f94040819b", -"T2B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "467f64d7cfd733f231130e170c2329f2e3a001c7eb6b6b03a76b882a75902fad", -"T2B1_de_test_autolock.py::test_autolock_interrupts_signing": "c3ec6025af6fd0ec892500b49b2933a3dd8ef86cad167f3a857b05e246decc13", -"T2B1_de_test_autolock.py::test_autolock_passphrase_keyboard": "e8b82ae5279611c2a1d5cb134289db0c7a5f19a72b737ca8b638a10e5b9ad89e", -"T2B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "29355f758b11a936a47ee8580c5685db2c0780faf05a60cf507f50d488a32961", -"T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "e1a7501fc6179d47f92157b863c51b93be8dc86ccd0dfff241f0c6bb9c06ad3d", -"T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "a32941fcc1a7ee40d906080eb970abe32046c27bf13278b4e1eb552d0d1664c9", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "231aeb488c0d66297a9394fb8dbaf8298c8c1cfd21d8119326fe3c2edd5bc3e3", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c11752e8cef05da0268c4f93e3f281be6c8dbce38c5f57cca51e00399b2a2441", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7c24b6f5b21dad6fbfc77d7285122bb502e4f492f0281ab668d0ad080ab2f8b8", -"T2B1_de_test_lock.py::test_hold_to_lock": "256b4bac41881451e351a4713a31fa72fdbbddee4b1db82adde5af13664c3cc0", +"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "483339fcd69cd704c80b53cd42f88cca6478e43f385d5a4cb5250be0edc0b8fd", +"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "3a0639ab2042edfcb8103aff433239126503131baa8d72c944da7cef1b652b5d", +"T2B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "f7cc39dea78abe89a2885757c9b4d4ebc1205e966c5529ea0a64ec3f0f60c7f6", +"T2B1_de_test_autolock.py::test_autolock_interrupts_signing": "cf74abddc80e79e9c767e4a174bb779a5bcbdc4b62ceca15faec195d0ccbbd1f", +"T2B1_de_test_autolock.py::test_autolock_passphrase_keyboard": "cfa2d0d9dc0174bbba428cb050f41c0d6f4a7b233afb8341c6d1faecdbfec595", +"T2B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "b47ae2c4b958c59efa38c95d522f35336d3a92b4367ef573e48e383a74c79ed0", +"T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "394081ce1c4d5c0dbd0be7156ad4a4355569a415b758df07975dde0efb4c58d2", +"T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "bf725054e49d7ccc9dca652da708919db52e6bdca067f8df926088b3b96a5eb8", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "65dcd24d383e7e5294ba7fc342ba701abc64a24553380705611f91e3c221826b", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9e4b62eaa45084c4d025fd3691e100128715fec2ed1d46c22462e6d25249154f", +"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9e7aa87ff8c67cf36e65e1e69e0e60cdf8cb0a9e70b5bd1952f843564efcfccc", +"T2B1_de_test_lock.py::test_hold_to_lock": "268661e352d6ab4c9cfd83b48985b8ad2e108841af94d5479c079befc8892310", "T2B1_de_test_passphrase_tr.py::test_cancel": "260dfca06b933d88120da15c6a981c9e2bf136a1bb148cbaf0244a85c80c6767", "T2B1_de_test_passphrase_tr.py::test_passphrase_delete": "18f04b5c66ea5d1ede7e616f03e1a937dc57a0a2bc55bdf8c9d1aa917194e6ed", "T2B1_de_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "3309fe04be297d037c64a21c595ec13401222bbd788981310181fd673bc1462d", @@ -793,45 +793,45 @@ "T2B1_de_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "821733b59c68a2705621d6283e9acc4039ac95052e4512416010ea4346598528", "T2B1_de_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "7bdcd7779e686289b7acb1d5bc7f9f46c3a08c141542ea284e748ecf896b4241", "T2B1_de_test_passphrase_tr.py::test_passphrase_loop_all_characters": "8574b98ef9d743e6aec18c0cc2444b3270fc6312d1c4d29b0838bda6781efd7b", -"T2B1_de_test_pin.py::test_pin_change": "bfb93e288bfd1ca833b10f1ccd2450e907c871f691e1751abf9d02e607004a69", -"T2B1_de_test_pin.py::test_pin_delete_hold": "8934e85caf11cbbc2bc7923d9ee86a3dd7cb3ea7c6ffa5fe1c85bb4b19ca92dd", -"T2B1_de_test_pin.py::test_pin_empty_cannot_send": "3c2e70369ae8d6f18b17fb976adedd0ddda3638384b5e8ad624d03f2dd2e1aae", -"T2B1_de_test_pin.py::test_pin_incorrect": "ccdf0531513eaa823749a88c8a7c43a656a8392710e02612c395746d2bce8012", -"T2B1_de_test_pin.py::test_pin_long": "0d979aee3dc9d6c05714f5752970cf288119a3cd262f6382d24d4ae90ede3417", -"T2B1_de_test_pin.py::test_pin_long_delete": "83e1c443c2e2adf77d8c28a7b7f601a2ac7cd5e4a3cb183b29c808384e7c6589", -"T2B1_de_test_pin.py::test_pin_longer_than_max": "346efe9a6e36a746299e23216beae13b8fbf77db8156120ee0e2db956ce88234", -"T2B1_de_test_pin.py::test_pin_same_as_wipe_code": "bf8f32db962f43fc11eb247e75ee1ba7c45a817badccfada589482e3ddd99d0b", -"T2B1_de_test_pin.py::test_pin_setup": "42ddf65bd107a6a788e876ea5f5960a86117a0ef2e30914d4d69b11edcf59140", +"T2B1_de_test_pin.py::test_pin_change": "ea169c14dfd249f9144bdf6c875f733500913a8b26cda91464bc86b545ba5b82", +"T2B1_de_test_pin.py::test_pin_delete_hold": "19a240eb3b4d75888c9b0ebcb16f8d6d515c8bf2a76671c37788416d70f00af8", +"T2B1_de_test_pin.py::test_pin_empty_cannot_send": "1055b82dfd991b47a48564ad6bdba1056eca8d645d54e0f93aca1c0d307cb336", +"T2B1_de_test_pin.py::test_pin_incorrect": "d4ce25f32ee8d9899ddf43fc7ba8bdd9f7c06c5a5ae4b588993d10dae93df078", +"T2B1_de_test_pin.py::test_pin_long": "97be8093bfedf27bfe7eb2c1abd3661bea06ce956446c7eab66c7e8be3df4ffa", +"T2B1_de_test_pin.py::test_pin_long_delete": "c1b0b819897287f23033b66fff41786ae294535f3e3fe438784f2ecfc9b82551", +"T2B1_de_test_pin.py::test_pin_longer_than_max": "855f6feccbe75dcc71326fdeb7db6f09bcdff234953a79606b7ffe4bb9b24ff8", +"T2B1_de_test_pin.py::test_pin_same_as_wipe_code": "aca419f2542c2c510b554b3284fc8d9f0d52588a9f0575f122c60449834ce0d5", +"T2B1_de_test_pin.py::test_pin_setup": "72e3837ce5ced75a5e9927d3589bf8e6a8b96ed4a4ab8975e9359a02d27d2dc3", "T2B1_de_test_pin.py::test_pin_setup_mismatch": "d8186819e4483ebf85bf929420432d72f41b44c7900ef7b7319763e0f1b72ca5", -"T2B1_de_test_pin.py::test_pin_short": "2d61f13f8fb24cad2e50ccdb6d012e24e6659f20f72f353cb56c48b4face5cba", -"T2B1_de_test_pin.py::test_wipe_code_same_as_pin": "12252307f44a0ce62415d1d86086fe0469ac77effef305e0f287c66fd13b62df", -"T2B1_de_test_pin.py::test_wipe_code_setup": "6db5feaf103f0755a11651e19c12bb69aa1b791d3d199d0761cb0619c9e544b3", -"T2B1_de_test_recovery.py::test_recovery_bip39": "b5176ee7b79551841803a2c9e9671b06a2bbe767665c6b7df0bab552167ec428", -"T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "abd8e35b06c21c53fba8576c7775175b39f03549deae4b2196e753a3726f0ff5", -"T2B1_de_test_recovery.py::test_recovery_slip39_basic": "7defc84d112d0965716e783790f7a706e57f9cc8dbf0b705f490ff579b1cf596", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "ce1e8b7c52ab9a3ae6b548f7d9b37e61b7002a26e9d689d519283938657a5c0e", -"T2B1_de_test_reset_bip39.py::test_reset_bip39": "4453a2aab9b7462e40d351f05b21a3e5b037f94b7be55e974b16752f916d1c81", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "5254d5f305f00a41f22e0296b7a2d04f8dc05c91367b4721152ae6d776a55d1b", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c6e1e3c090fe5f67541c9cd1ea5e5701f917d4318e94f066d36bf32b1f5847f9", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ca0283263e58098402cbddbc759233deb03eaab4f385bb737daf04839c39d85d", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "63f1128c2038062180665a0c089a7861350bb352861187df74e87b4dfbef1816", +"T2B1_de_test_pin.py::test_pin_short": "cceda151768e650f49062a49813a7e0e254ec931354fb3e8b3e36be9fe62a424", +"T2B1_de_test_pin.py::test_wipe_code_same_as_pin": "b52818b4acf041851d2af4ab81c9a7fa26395509222ff0042d8e75df0facb76b", +"T2B1_de_test_pin.py::test_wipe_code_setup": "c4402fc6080e363308e83b2b36cf767894015c5f1cc5a91f00e02c87025d4549", +"T2B1_de_test_recovery.py::test_recovery_bip39": "658711dfc1780e026b9ce4057dbdf04fb969ee84bf5f35bf172c93a59133e7d7", +"T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "ceae77d5d1da1916c1072cd2c2e18dccfe5e97c9b05225dd1f09dcb0617b1bde", +"T2B1_de_test_recovery.py::test_recovery_slip39_basic": "e3dbc1a321425e9051712967d00f7b685d571b066f0b4d88c6face859b8044d6", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "2965aa84918242f250520d48a233bd0ba6ac71c2bb7653929733d152f7312349", +"T2B1_de_test_reset_bip39.py::test_reset_bip39": "75c87592c3a77f3bd9df77e415cb8e7652ea686789968d4090254f7f53a90e61", +"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "699f62c2f6477b0fe504ace63132269cf07c1a0687a005e22b2719830fa57d72", +"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f48eebda84373ac7ae9a9f047cd12aeb8daae65c239f6434b72df378f44c501b", +"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "88e8149efb5be48322c5ad7bce7eb4c82c254956138e4b21a4871274382b685a", +"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "73b2168de18913e4870276c48ad498439209038b1a8b4735cc5e3a8f8f557e9b", "T2B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", "T2B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", "T2B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", "T2B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", "T2B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", -"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "f8c715c228d21c5bc1afb0b4ad06971143e76f3f6b4518eea753282507951a60", -"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "540249eb9f57e5ba95bda57de368a0adb81af0cf866af1c1ed9589ef501b79bd", -"T2B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "1d0412811d1a4fa6b829d51229f994e924c501346b859a6c486e17c457b17001", -"T2B1_en_test_autolock.py::test_autolock_interrupts_signing": "59293dbebe4630a026ced1f72df1ba433e686d05828410ad575074e2f769686f", -"T2B1_en_test_autolock.py::test_autolock_passphrase_keyboard": "20a92b21374e752bbeceb8d3b2466739d108e0c9898a20e2843729844f29bb56", -"T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "77fc7b5ad26d13b7c35d028eb174acaf1810549d85e61bec67fa8f6c78722492", -"T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "4852311a7c5e9f6bd9937372bba1f4ba72f2555356c046f7c213004affee5c5e", -"T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "68b018fc77e99dac22907b4c65aa7052e50addabb209006405e912b20841ebb4", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "322271eef0e3769baab34c6f3ab67ea581d20878aad979b56768d1657882e367", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9f9b12d1e1cd1bf0f106752faf566daa0f6bb10c7269f2eb68ec3d1e1dd8bd21", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7d0b5a0bcd904e45062e07101fbd55f07a2a21b21ef54e3ab7d9796122668356", -"T2B1_en_test_lock.py::test_hold_to_lock": "3dd15d65399a0805d614bc7c1858370d62224d2725ae17c5fbfa196c548525c3", +"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "4663e6da2cd2cc2d452ac934daaf772ba2474b266e45d7d883438cb024320c9f", +"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "9f971d47fa9eaf661fa8b305c8c4caa4a1fb3d53963c937fd43805b700f26b36", +"T2B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "1f2a49eae6f33a9657f690b900a0b38ad18462a08f4802ded57883933b9e4c0c", +"T2B1_en_test_autolock.py::test_autolock_interrupts_signing": "739085b5c8ec1a73efd402a25d0428898c915f5d4f308817d3416f2885373e8a", +"T2B1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d1fe11cc14cc86f5c595b75c573064dfcd86529afcd285e072a30a1fe70ed5ec", +"T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "41b4181985ec5f6f6ffcbbe5fc87dc9379195c930f1dcfc36c90417849da2ce9", +"T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "1040f9629da34d736f5024f89984121fb9f5bf4078f8bdda00250bc8799593f3", +"T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "4e5a76517080d02e958b5cc96692821b562aaa1602916398883dca5a28587c26", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2c51a1ddd6a8ff0f4dac3728197a4197f03e1e8dddb6da5064cbcf5829783ce3", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "2539ad8381af75241c31377c01b468fe356189e25129904f3ec292d259e2bf19", +"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "423fec1d0e41ecf5960862a7dff40ce4a14e1ccf335467618d625e265c2bd9f4", +"T2B1_en_test_lock.py::test_hold_to_lock": "50a53db86e43df6339ea6d168170c763917f0af933aa661798e7da3ed45f279c", "T2B1_en_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", "T2B1_en_test_passphrase_tr.py::test_passphrase_delete": "28468562292a54f2d8cc954129c6b1859c267bc5a9b94f9b406352e71a4c8036", "T2B1_en_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "8d6c2c13039c420ba1430f990053a30bb0358a4a9d17b46a6a250d577f7643f8", @@ -841,43 +841,43 @@ "T2B1_en_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "8bd1754cf1967a6570339e29224d61f45e919cb23d7296e3beb6876dde84b289", "T2B1_en_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "502828e28edd8147781b1714cae83eea6f71a9820c30446d7e38eeb3a43617c9", "T2B1_en_test_passphrase_tr.py::test_passphrase_loop_all_characters": "e06ec53edbd9c3d8927e141e8a8e2af521641d0064a20b7953ad15f1a1d48f52", -"T2B1_en_test_pin.py::test_pin_change": "a92119eaac657c57fd92753bc1f055ca8fc77d75c1f798d014c3624e5a76de31", -"T2B1_en_test_pin.py::test_pin_delete_hold": "85468f48ba08e9c64c64bbc54aa0a30c8e6df84a7dd41687321ca72bcc33ef08", -"T2B1_en_test_pin.py::test_pin_empty_cannot_send": "dbb9e465661c4389b75a92246eded10e79921485bf22e0c12adf5899a8093ef7", -"T2B1_en_test_pin.py::test_pin_incorrect": "6535005391a9f84f00ffe195c142e4a0101273f25a6117924713e00373ac4cea", -"T2B1_en_test_pin.py::test_pin_long": "ea17c066f6b0dcf1367802c555c58e8fdb9512ab5b0401f8f48315afc507ed82", -"T2B1_en_test_pin.py::test_pin_long_delete": "0667064f106a3d96ba51fc9c31e90bf1afbcdaac7b9d67d1738afbb661a31d5e", -"T2B1_en_test_pin.py::test_pin_longer_than_max": "14dc08573610c7dc9562d35e0952d050b4e9b1c38479d20a12fecb71345c0099", -"T2B1_en_test_pin.py::test_pin_same_as_wipe_code": "0de709397bd118acf163210803ed1236ecbc803efbb025ff3d34ba81bd744dd5", -"T2B1_en_test_pin.py::test_pin_setup": "15c3e20179a6f120c7ad255448ba654e846058d8f70d9befcf467fed1dee1e65", +"T2B1_en_test_pin.py::test_pin_change": "0c143673c0bed9f1f4883f358e0de939a3317efa38619db165d3b7a5e72eacdd", +"T2B1_en_test_pin.py::test_pin_delete_hold": "99c71fe476cf51eff058d2da13f8ba4c192b3396e16440bb766a4a223d4efa93", +"T2B1_en_test_pin.py::test_pin_empty_cannot_send": "7e4ca6b3b7a0606368fd962b93292810f1541696c74fe4dd65f6be42ecaf6f97", +"T2B1_en_test_pin.py::test_pin_incorrect": "9be56566afd2526e29c586935a60937340a03889b4fe1b7b16f1f043a582b444", +"T2B1_en_test_pin.py::test_pin_long": "6c03dc8960d7ad5774ff05b673b3e035a523fa6b44d25c485efffa48f51b0721", +"T2B1_en_test_pin.py::test_pin_long_delete": "9e027284472ab8b160dc3b402b782a4e9c144eb38b5f2574fcf90f3d3aa3e304", +"T2B1_en_test_pin.py::test_pin_longer_than_max": "0d91f6242abba4f553b3acec610e1709cfb9963ec04ef020d8ae6478bfe8374c", +"T2B1_en_test_pin.py::test_pin_same_as_wipe_code": "5bf07232bcf50268524a6f53b03f79c53c98c26828064d3928f7b3c803f05d89", +"T2B1_en_test_pin.py::test_pin_setup": "8c74ca25ab0f2c2dff4113f0959cbf3da931f6aae28b695a81795acfa4105d8f", "T2B1_en_test_pin.py::test_pin_setup_mismatch": "a7d0d19e7ba5e7a7cbfcb92c38f0f3eb75c0e19eb12fc953185a3564b20aacb1", -"T2B1_en_test_pin.py::test_pin_short": "b8d39ac6ef6ca40473ec59daad9d68e3905798d1c8eefc0f4b7dc0526fd8aa63", -"T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "85742d9a22952eb5666d792566130e838938c6af4893cc639c0952a3250a57db", -"T2B1_en_test_pin.py::test_wipe_code_setup": "be49e634528dacde843544f480cbdbafc0d6cdd7bbf5987373d4a46e2e773431", -"T2B1_en_test_recovery.py::test_recovery_bip39": "95c04efe15172e11bc9817b27de357ed213672ad7c71746ef248c38a37a190ef", -"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "380cb8d09c82da4d8ad4f43f2c01dc55c229b46b553e14e90ca04f7ae03390a6", -"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "bff1701ac0c4c157ec0ce559391cea37ea076f1a47ca910069dcd4d9ffc11866", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "793e64242a2ce4294b7e9e3461b4426a13993751c82921ca6a460cf7762668eb", -"T2B1_en_test_reset_bip39.py::test_reset_bip39": "aaf5fee8946e2534c32999109eca980d0568c77238f01f069eaefccba437974d", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "62d8e01e55a75b9aad8abc8cd777f72b4b5d7d0b01da9d0f12f193580d15b657", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6b64e7bc772c85109cf2944a50d16d26300e7dd253c3b17f77f22c036fd490e4", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "982fdb9d8b8fe23caaa0cfa96de8185cb19604526164933945bb5ce4522e0bb5", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6376b71e18524202bfc25e17ddd2015ed2bcad869db84245d117cf45c513b92f", +"T2B1_en_test_pin.py::test_pin_short": "22cc63b7cd88f752d2d7c9c7d9d047c7bcc316c2e5ca26e509fdc672399a3b03", +"T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "b93b5cf115fb93ddbffae67b7612f0b377210f73b026fbd785d148cc6aee0c99", +"T2B1_en_test_pin.py::test_wipe_code_setup": "93c7dd574acc8ea37519dfaad999adecb6fa8dca5c1b92a1194772e4feb48907", +"T2B1_en_test_recovery.py::test_recovery_bip39": "96b513e7c2044b4ee00a922e5e3d746c9008f116881ba328fbfecfb479835b10", +"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "e4e8a7fbcb779d36491d08ae03cc7105b5f956ff2679f2621db427a7a3056cbf", +"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "0156d5bb87a8a38deac15a51d100ddfb3ed0bec3c5d683fa54862f391e43a7a1", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "2f9f45a81d516df73bcf65716ec78b1566a7c78899da25e01239c9c73691d7bb", +"T2B1_en_test_reset_bip39.py::test_reset_bip39": "2ed2a2957c618130654925f9b6c3ef0ef4c9281dd5fd96b0c3859da8a0b759e5", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ff7a9903ed4c88f8b784de9eee6aca82a6604e7750f035de91f6c8e0f9e64cfd", +"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9a9d78e8f7730dad9dae7dce628239a1e983a7770afb313b2d0edf78c4255c1c", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0328573b94357d23c515418983bb27538533fbdaf051971950148542c315ffca", +"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "07953f5961b6af1759eb9afb41e11c8f95ea1a873cf531c4741199973543c3b2", "T2B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", "T2B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", "T2B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", -"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ef1a1bd6b6b1e60baaa0ede6da0912736468a5f9d0e75f17d54f82717e4e6f31", -"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "15ab35eb333f87cb41baee7c7997512ad058b144f72b262ab469c76853f5bede", -"T2B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "6dc50192c2e13e67fdf449a72f249242ab73bdc1f6bc43e78a2cad1e358bab56", -"T2B1_es_test_autolock.py::test_autolock_interrupts_signing": "32051d634d1f5d2535acf53cee10d6c29fac10868556807cf03a023767f10579", -"T2B1_es_test_autolock.py::test_autolock_passphrase_keyboard": "f86fc134c5234bc71c7af3b6bf976024cea6a314ea3d9647c4c18cd697f45964", -"T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "0757d41e0cddd582a61e061d6a5ed79629ccb25d64a170745a694889bf65ab27", -"T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2bf57c62afda405b469261e8b0e9f8d9aee498d4ca020d55d3bb15649c81813b", -"T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "cc1dd08a2a77b6944fbdb40a8f316527b43c8c1ad0c6064e29c62e13a6f52ff7", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6093274812262b3d4092e4bc6c2d41c9e29a6cb48498646a0712e9c00d009790", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3da9f8c41070f690a136c1e4056d951648b97929fb376ec86fe34d0a22002bc0", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b0efa7819d276c17a8563da04716d3b5f83de2cdcac3067b16aaf26068caf68e", -"T2B1_es_test_lock.py::test_hold_to_lock": "486fb944f3cbe98860738aed52b3411398ad41dd69dedf5b1af6ae05319a41d9", +"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6590d22b77f52e54e26b3214b0f3b8e17c290dab051f8c4422c004520c5fbb95", +"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "5167423df1a611f5608228d783445fcb6ef7e71e51e893ae11d352c35cd72a6e", +"T2B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "65aa98bb42b5db52b6e074eae8e15862377029429e72f2c5da960df5bb03fb99", +"T2B1_es_test_autolock.py::test_autolock_interrupts_signing": "b1c6590cf608778d41b1e9f424c8c0c9011731b7e70a07c09efd1c91818b7a4b", +"T2B1_es_test_autolock.py::test_autolock_passphrase_keyboard": "2e56a7d24d0c0cc341cf9b1c817443ecd61c84e86a8ae867d788f6b80c186d9b", +"T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "52a1db73b3489e5d4980785a15ba920f03498ec551e151f8436b6aa94c605c7c", +"T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "9d001647fd3ae02ee9aef7f4730a09663e591c1b6663b5a8d0982e486be9188e", +"T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "8a5cf50832754ef0709ca607d4adb4f31bd6f52eb592c09956cfa5ebf8fadd42", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "865726e45943461d22fb6cff431e807e6dbd3966eada3277932c2331e6eb089c", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "2674af838a5e60add577e4644cff5d7cc58ca578ab9338e8acbd9ecdba8afb0a", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10a548a135550394d7dffb774113af2340306493f8e7e60dbbee3ddd6c3ae9a3", +"T2B1_es_test_lock.py::test_hold_to_lock": "e96bc5c43a4187163b152470c8296d101503d0b3c34eebfe5c0729fb3bdc005b", "T2B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", "T2B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", "T2B1_es_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "5c05aaeb8a37df6fbd119fc87b9cdd92638111279c93ffa8ab402e921208c1c1", @@ -887,43 +887,43 @@ "T2B1_es_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "dbb4db4ceda8eb660bdc5bacc611649753f2b273ea76f72f1694282cc853415d", "T2B1_es_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "07e07da20ee6fe6cb2c96e47db180a821356ef62af8bee79493421eaf2c076d0", "T2B1_es_test_passphrase_tr.py::test_passphrase_loop_all_characters": "a7f2464aae4002550a0a9a9ffad46e483ff860572091d4478f157e6be3cf078a", -"T2B1_es_test_pin.py::test_pin_change": "9ccebf4e2628a3861fe9077594bc780e9fe0d424bad2fcec638d307b5a0d1014", -"T2B1_es_test_pin.py::test_pin_delete_hold": "f6410136d640fa92b2c466ac0f524ba3e28925be28b9e9aed68891fb138fa80b", -"T2B1_es_test_pin.py::test_pin_empty_cannot_send": "6f8962f34a9a8d8ef9e819e5719ec99b3fdc818a4b0bbab192fc33b31d45de67", -"T2B1_es_test_pin.py::test_pin_incorrect": "626006a87b61629b5f0bd74c6a9f3a06ad7f054f29c3a486ae0a11bc0ae8b023", -"T2B1_es_test_pin.py::test_pin_long": "d679e4ee22fadcb6ff2f426d5bd5f4476d9d2240907f1569c644184bb401c6ff", -"T2B1_es_test_pin.py::test_pin_long_delete": "f76ad1874ca2b8b16ab2a0494b890bbb5eb6f4a305edc94223b28714e79fbd91", -"T2B1_es_test_pin.py::test_pin_longer_than_max": "e515cfd42ec8b46b8bde8ade7ff132ab8bb3b7da6891178c24ed40639ebc3663", -"T2B1_es_test_pin.py::test_pin_same_as_wipe_code": "057da08cf00e08a61c6884dde5b672bd3139665eefc084e20eeaf8eb883314b3", -"T2B1_es_test_pin.py::test_pin_setup": "b15a60507f8c5f9382057bf3d50c00cb23abd60b67b74707ff2e1f4a737ad192", +"T2B1_es_test_pin.py::test_pin_change": "98dfc27c23d8b137dd3b748228b735d0d56c72bbb0f736abdd239e5be67ad248", +"T2B1_es_test_pin.py::test_pin_delete_hold": "6997e7f48d2e8e4830301f41f8802a1b56cddfc34e5d11fffda2e6e3a477a3e2", +"T2B1_es_test_pin.py::test_pin_empty_cannot_send": "26241a6f16528f1dcf9b780f9901caea311ce447faa0ab99b5747e0935345393", +"T2B1_es_test_pin.py::test_pin_incorrect": "9227d4ed996e88045c106bb3702812834af64fca5c046dbcaf4070dcb8856877", +"T2B1_es_test_pin.py::test_pin_long": "2afeb465bbf349e4e7904738aaecdf2d5291a34c2971cc81c84d823615763e51", +"T2B1_es_test_pin.py::test_pin_long_delete": "1ccc6e604453b7e236981282f640d91a18ee91e63b381add3993381da9ad283e", +"T2B1_es_test_pin.py::test_pin_longer_than_max": "624317909758289d8ae75165cf537435a71ed78eea5a258dd550b0a87085ae2f", +"T2B1_es_test_pin.py::test_pin_same_as_wipe_code": "66360cdb1dfa2ed08a6692a15917aae1f823ff0935bc1308b2abca2085dcd117", +"T2B1_es_test_pin.py::test_pin_setup": "98212cdf26228839d65b5ee58ffbcaa2ea675e1f5b906d85b7e4fcd78ae901ce", "T2B1_es_test_pin.py::test_pin_setup_mismatch": "5c2706aa9ac8a9a0f6175353d67b1750ba6a329ccb3acf6b2cbfc86c96db5d47", -"T2B1_es_test_pin.py::test_pin_short": "042af2df883141d38e52782b4cf382e9b0f4c5a649b9bccc8e471cfdafb172c8", -"T2B1_es_test_pin.py::test_wipe_code_same_as_pin": "d9ba061fccf43343812239a64cb2eca407d388ac3fa32cbd4efe3af5454ea302", -"T2B1_es_test_pin.py::test_wipe_code_setup": "089bef91b19e6f432b69154c44a6617903217288b735632ee044516f26a43555", -"T2B1_es_test_recovery.py::test_recovery_bip39": "df2974b87e67cf902966613e669f428e26a8e453f573aad110c90ae2996517be", -"T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "8f5fffcc1376ca8c458e9447cb9d99eb48614854e714ed818e3c0eb886e7d014", -"T2B1_es_test_recovery.py::test_recovery_slip39_basic": "b2ea8a449ce2ce3316289aca0a132de09ef499745013d2f4cb1e0b9fa512d690", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "23c1fb6202291df00003e22563435d9c6a02fa6240930e7b3fc19eda99485439", -"T2B1_es_test_reset_bip39.py::test_reset_bip39": "7ac206a45e1495d4a9086f83b7d458d4bdacd773c2c08c193a9fa3de2b340b2a", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f3467575508ca1ffd995b859ccf1ece9ec843c813ad15f23994c2e970f9f4408", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b38beab8d965cf41b75d67c6421298e2860dc010c1b7c9e1e26d9e8ff69ff011", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d86960204514e979b05335899f8eb4025c6139bdeab3129cb3a8d4c590378e07", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "222ee03c6a33011e50aa812a665ae3fd71d9f6cc6b45a208d0529b56aab020f1", +"T2B1_es_test_pin.py::test_pin_short": "034dd5e5a98738e68b4a9aaf15afe6782af162a3db3bd83e5e8e1f5ce31a4838", +"T2B1_es_test_pin.py::test_wipe_code_same_as_pin": "6ab2a83fd754bfed8f7cc32add065da96923d1fbb630e1a5e8c7dfbf1c9e00d2", +"T2B1_es_test_pin.py::test_wipe_code_setup": "74b9c5d1188444c7b27716765532b98a10e350afd42b20eea00b559b1968ac4f", +"T2B1_es_test_recovery.py::test_recovery_bip39": "d6428d52286874bd35e8b5581bae4dee184d4b2563f7065064c637d2f3e18426", +"T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "b6f0df37e7f59b65a78641ed2d464238fe408709c7d6d8e29c268f61b443dbca", +"T2B1_es_test_recovery.py::test_recovery_slip39_basic": "1878e6255b3eb3797fcf568e62ae415b021fc046ca59071906aae50c214039d3", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "855daf01f717c7def02f36f59ac996e4cc4811773f733a575e77f6b089b7080c", +"T2B1_es_test_reset_bip39.py::test_reset_bip39": "b2108571d8efa816b9a6f319a0814173b4c6bc173e296cfe490105393ae76712", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1317990c6f3205d2804250532928406cf4d16242fef6390e0aab9ba50ba75051", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "61db32a8a7790958edae7072a19860ea08eb6e61fc1a81b9c5db43d9105482b8", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "426a09a2e4b9441b30cc3832fa140dfa0e31d6e2a80da0b42b47c54f7b4a0a99", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "62c8c1941c8c542be9ed308ade5a2960e6dead0878e65160faa74d4b2e5c330b", "T2B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", "T2B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", "T2B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "15908b9ea093410c2a54e709078a2a30f8aa954c5a5ece66034a744148025c23", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "2e9b968b1fe1197b602d2ecc35b2311800b463ef843dea329a573b64bd7cac27", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "3b74e0688a32364007ce9fce23312ba4a3aee25c9fa5e7c8d01efb536a233f3d", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "30ebe81f92a5b0f19a5270657d52e8fb29d1f65bc454ddedb843ced3d4065137", -"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "0c2364a08d4143433fde5731c7135f0fb15362ffc5ebbed4a13e4cc840a6a0e9", -"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "1c1a63e10e6c670644a238b21668af29356733b3275a0bcb7f94ebcc99c4e56e", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "32eef285e297fe2336da444598c375c69cdf55b5b7509275e684fd3998f3854f", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "d7a6e59453cc4a05930096e8372d42e05307590516d759c28f04714b627256db", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "874b1f06ba13bb24a0b34b66bf7369e927f4a35983b02755c0fd4efe32e23960", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1b294c14657f6c8e49f86d25c845dc980ece0a0f8cf1942ae17306e69414fc71", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f09d46030953251fde0b9a3263ced0204f3f342ba9b5f23648c75a0888337450", -"T2B1_fr_test_lock.py::test_hold_to_lock": "7253f7857a54d33bd53b5524f798596e62876d9518120feb86a93295d5aabef2", +"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "658842029d58ab5b1333118bbe38d0fb611ecc32ae6b4fe2187d3bcfc4132bb6", +"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "4bcf794b3339d50dda4d8dd5bd9e466f50d5f94197e470a49c7d679a7c7e827b", +"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "548a87b769b34bc6fa2c4155458059d79e50fd028714f2bb29c2a40dbd13c7b4", +"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "698ad1e8849ba5efb3bbfb180c60ac4954c2aebc398fc4bdf4d84278dd4c4760", +"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "ddde012d396dcf6b115ce68807fdf5686680988e02814addf3544bc8c93c7292", +"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "ef825828106552edef6c68cd65b5f32030cb988a4ad1913b781eaee3baafbed7", +"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "a73f3e2c8e43b894ccd1c3347d6349f28c5257f3b00be7f7f7a5756f995530fe", +"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "3bf862878aa42e2c658c4694ddc99a3691d3dc06a4038f905a389011d0be9a54", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "fe5bce0f248bf84e620fcc83ff9ea607392c5567b590840e9b41d9aa6068fb7f", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c9bcab658b0d2bc5af484848c5c0d518f76730249dcc3aef441441434b58bfda", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "a4ddf786d06652065ab230609a65721e774e7b28646bfa29ff9e430203d43c5f", +"T2B1_fr_test_lock.py::test_hold_to_lock": "777f7b227d219ead82a76f086fc589b9d0d37ab0fadefdc59d42c750e3dabaf0", "T2B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", "T2B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", "T2B1_fr_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "9c4f6394ed4c0933978b7179586103b2de51607242410c2a369bdfca8deb7094", @@ -933,28 +933,28 @@ "T2B1_fr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "61c6497db6c69de9338547c8184bdbcd1cb452ad1f36ab37f4516a90473441fd", "T2B1_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "8da058fa6f29f5327cffe6239655cddf530719f0dcecb3cded5554f0f317a9c7", "T2B1_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "9f70b92d9ccdbdf713e473f25e12f0a81684b1070483f6e4efa14dc2f30612de", -"T2B1_fr_test_pin.py::test_pin_change": "c9c39eb69368caffb1a12aca10c8e51b7620c8093afd582ceb47e06c171a5150", -"T2B1_fr_test_pin.py::test_pin_delete_hold": "e6a372fdb83876027699403406f8ec79f2658859f94d2522569f257d2df6805e", -"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "a1394bcea1539204bd12c485fde124bc2076c2953b1ca6cdb0a5eba316f16ac6", -"T2B1_fr_test_pin.py::test_pin_incorrect": "64f314fc3f17896b09c731bf1d6e5bd68d16ebe0257ea743f96143fc477640b6", -"T2B1_fr_test_pin.py::test_pin_long": "efdebade297862976809860ed4d584e421606254c6741967476dd224fd2740f3", -"T2B1_fr_test_pin.py::test_pin_long_delete": "3d9ee00acf12db55445024b86e6e334a20fd6540d6439ca92fdabb912eccf98b", -"T2B1_fr_test_pin.py::test_pin_longer_than_max": "f438c8862011b5ffaaa44784f75116418ebbff998827e53de162af862b6ce51b", -"T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "194e0d177b7ad1b48970769384d58d2fdbadd9a1fe83c20f304208f854517c90", -"T2B1_fr_test_pin.py::test_pin_setup": "4dc8b8be2acefb045db0d450289b3093b75e3edf58b1c898407603a57dc05063", +"T2B1_fr_test_pin.py::test_pin_change": "8fae22f4e962b43d8aaa780083c83fccdae3075d859f8a6d7bee8730d03d0e22", +"T2B1_fr_test_pin.py::test_pin_delete_hold": "55b267c663be31b5e104503ae9b3190991e0a8a85f241b35427f40e5943a767b", +"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "b1bcba5fbc5a708780a0a7a3103a293cac9afb3fadebf8e7753cbc0cd20a0e5d", +"T2B1_fr_test_pin.py::test_pin_incorrect": "5689d325e1e1f6b15952b52d618b4c4ef9c67652d0f4e789d73a8add783ba946", +"T2B1_fr_test_pin.py::test_pin_long": "9953cb70644650dab4732e74b671f0e1967b1a531495e7ea13c099e81f9eb030", +"T2B1_fr_test_pin.py::test_pin_long_delete": "d709985360c2d7a299c2cfefa92f02540ab6bda30145dbcadf1452ba9eebdc9a", +"T2B1_fr_test_pin.py::test_pin_longer_than_max": "a9ee354087c3b1743b9f9dde22448e803306cef4830cd03f7cba619e3d8c075c", +"T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "ab26611dcc6266d74a28a09c124f506c99e669d5daf4fc1b0ead8b1658cbaf12", +"T2B1_fr_test_pin.py::test_pin_setup": "03d7383eb6bfdbfd2fae666f2dba55a0e06b801460dab855a2939b7896434b10", "T2B1_fr_test_pin.py::test_pin_setup_mismatch": "2355be5932873459592cbfed1950b07cf03a88aee418b8d8645476953450de8b", -"T2B1_fr_test_pin.py::test_pin_short": "6a8d8b277f254ab3b60422cafae89760714a22bb9f93a25f6bb567e04f0cfa8f", -"T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "12ee4fc077d391bc75afc413dea8012f2758cc322433b7e0f8d8768d30d13622", -"T2B1_fr_test_pin.py::test_wipe_code_setup": "8657f375b846cc2b4a9c4a79475124b7170e0ec71be3c70f93171cbd10cc0d6b", -"T2B1_fr_test_recovery.py::test_recovery_bip39": "803476796c14d80a04eaccce572f15e4cfae458fd549230f90ebadf82874d1c5", -"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "a2540655e7e610a0be652e3094e136bf9235ddc96be8c8755f08e38ce4e789cb", -"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "d46fffc6c0659e1e794a0dba0becd036275093b35a4eec4cf7c295fa45455422", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "64a00ec6af3a21ac3145039a03aae71da6c50c3361be659ce87269cef980ee77", -"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "4691bf245d7c7f5bf2b1595776a52502cdac2659d6b4140543ee5da749161cb1", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "836c148a809f074af74ea332229018d02e8ad65017446d35197009f636bb94d0", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ad1493cab22eb1ecb955b468d4566c33939f7f0358cd4d6ea5156fb0302d9a68", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "28b6cd8ebd7376df4f0a677f2fd97475b4340a66459ad2c3f698f0692c90fb0f", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b2c65dab91182024ff95e1dc5fc61fb1cb94fa5264689a9860533f7ff81752ed", +"T2B1_fr_test_pin.py::test_pin_short": "901774deb37aca1c827777954193cb8a5f94927fd7e7492b7ecc1614a129db14", +"T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "669dfa6cedab691eba86d223aedbfe0c522b5d27fc60f073f79c3e08df7f4ff9", +"T2B1_fr_test_pin.py::test_wipe_code_setup": "03d8e92fde43596248e69df7a0eb8880e3e9397125cf3d54940260a966121213", +"T2B1_fr_test_recovery.py::test_recovery_bip39": "50e9b5e8a24bc4379b0d0413dc07b54782d2734a84faeb458f7ae4dd8f749e07", +"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "74ffad79bf897870e4b814f14bd41a856f33dfdd134126aafe678a60cd2907df", +"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "a95e953ddc5dcc0f377871df1d2ee1f828b078cc5d09c20d677067066f6dad50", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "d61ebc7d45f3a3431f64e79ed3f0e71c65375e6193bd6647cc09d8f71fc8c09c", +"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "dd0c052d0243a0ca0398c727bdf54608b82e26d1a8c0220c44e814a99446997b", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "633bbed186ac7565658c83b4147c5d097faf8602ad265d055cc09c26ba0d0ebb", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ff8ebe3f936dde224ce9d49e9945368716eaf673f49c47fe11f995f17c7b7fac", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "25f569fe7a9afac950f22d84157f8e8f7842aae3a08ed2f645c22b09c382ddc9", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c51dc8688c1657e8e656e4cbc219f8a0a25f36cc7ec4bb93a16a775f8c5d4c59", "T2B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", "T2B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", "T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" @@ -975,8 +975,8 @@ "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6ccfdf12ec748ecf1717eeadf42e392e3636bd5c567b45fe7f6ca48db41bda43", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "32b25b6de46f3ebc29be9841dc162b61c561d314a97e683b26a0bd84d391625a", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6731877dffb2f660016695b8880961d9f8f72cb783fd111bcaf53c573cfc2201", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "0ea1073bce78b0836dffb895afab444578c142c6010ce5ea3534515fa11d6ed5", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "0ea1073bce78b0836dffb895afab444578c142c6010ce5ea3534515fa11d6ed5", +"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "a7b53fccaec53782baf8074efa5230139c3802f16d1d4a9bbdffe918ce634df6", +"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "a7b53fccaec53782baf8074efa5230139c3802f16d1d4a9bbdffe918ce634df6", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "c8ff767346e56aadabcdce445535211dc94ecec88149cf1048d8439393161288", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5ac9b722e18622fb08e3c872641938705df8c04db2d0f4a455ab0195028ece1a", "T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "d4128698d292c124c0c222fc1919e662f0ec9a07f3cb6eb6920002a927193090", @@ -1964,57 +1964,57 @@ "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e6d251b235e885338a53d35e0017971f7c09239ab51daca6c726c9797691ceb1", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "aa950618304ea938455a09282fd15261e3e2972431b1461fde648488ec079fdb", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "63cce0f5ccd4ccfb7ce3b06e0e6c4485c0891d4a5f49c6a1b621f53da3ac4674", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2381a75219196da5c6c71da8aef12fd68a7f110ba044aae1ae35ceef3caec33f", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b8897b0c63b9ae25f40b58957dca7a83b838812d7c885afa51a8792c94e4777e", +"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "8672922b3e7ba801a5e583f353804c990d4cdacfa2ba01ae0df5f6ba62805c84", "T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "6a40492e7ef272ef91c95ac1f879b4b4a1535559a96c3b4fbf09fb55dc35b53f", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "ad7ef459d2e30222956daf8192e43b83850de776fc49afe8cdef679ea7225dbd", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1012384fa6d7c5797a321dc83b42ad516ddf35a0e3ea430ecdac8713479a40d0", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "efe32b4db6669367ee47394c85ce492dd2b97f95c3d0f49e5c7665c20993c1f7", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "84ccdffa66e6cae0a75d9d0f1b2943fda356391dcb3219925620fbc38d164f48", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f3018552a33dc569ac4f10da8f21a2b2da65d173954338591e2407f30b44f12c", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "838310835d53850bcec7948fca720b4491fc79e771553ebc004cf20c871164ef", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "37d7a22dba0314d3f640f29985c796f736e0697188c02f01a3e88e80f65706e4", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7ed66e977651d01a2752afb162be1d6fb0efc594e29e4c93908cb6cecb4f783f", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "37d7a22dba0314d3f640f29985c796f736e0697188c02f01a3e88e80f65706e4", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "7ed66e977651d01a2752afb162be1d6fb0efc594e29e4c93908cb6cecb4f783f", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c52e76c39ca7d83752d570b741a5f8e44883f7e62dbd730ae9eda1322d5dd59f", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "fcc8ff88872dff72b6d4bb71dda37abbacbc7e4306fbebcad86b514bc369c45d", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "17880f70da55259ac5bb9e4971d6c38095e43ed201cf0a4c35949732f3129d69", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1012384fa6d7c5797a321dc83b42ad516ddf35a0e3ea430ecdac8713479a40d0", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fb06fd4a57d44e7f547c50be4bccbb0ccaf2b849e3d9b8f46ea140c597c5fe8c", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "693ef028ccddcf05b479b36f8ba55c8c88b52780937b19defd2c1439d537b63d", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9133eaf4e1bfc321b9abcdf9dcf3e1c393bddcf5345b193379bcbae938e15ab4", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "45aeb49a4892cc67ccac8e837177f0dda3e05fe910c648bad7484bffd977b015", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "27d1515cfd085ab94148851f322200a792da65e90c3c5989ec86899f0a4fb6e1", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ba70b6e2192cb4213bec0c2a65097c2dc37947f961526f98d54cb17369a617cf", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "86c2a239e52d9cbd2bac320a85cc9a3e857d925be027e21ee47d1e57e0ceb544", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7848e9ac6be51be5504ae89017f53b2a06125fbd2292b598ec21f9f7a202fa89", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "67dad6bee42b6bcc70b6936b81651e45e17f7663f27ef31f313dcf713d301e3b", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "9b36edfac4678e57e759e4a0e5a660143c4b5c673a91a1f12868d19ed23fdf84", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "507922d70c38e8c9734ac354333079836d10e1a8c3cdffc29ea03b646abfb79d", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "1fe2b41790caaf7b4a3f6268fd35f45fa87acf3ba9f7e8eb69d5df329a7ed784", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "68164a333ff7dcfd8dc0d1e91e8f86d33857108010daec3c531b48df1243faf7", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "98f475178af1c7e040c753e679a8ab128b0e140b413616b7a37a2bc09dc0260e", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6b545f70cb0fb680824d77772d11d4ac690dafeb52571ab5a3642e7fad8c3321", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a2db357f87b05bbd80ecbe6e71f32fa7a1ae76711de6122a041ee945f16f4263", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6026b80f136670f8376f431d498d0ea7cf07af322d90d865ddf4d9e9c318273d", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b6e03c14b2fe09dbabbee01a4ae1abb1d6f6f1eb596e85560e8cb1644b849d42", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "6e4d1beee91b9c6cd67ee4e115a23e37ec34b2d443b1f9e886f251782ffb5c06", +"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e2c49875a7118e15979f0f7eac813c22c14b44553abd9c1f01f3de94ce750752", +"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "74611857a640921cbb05741a852f573dd4e0353754328e8e376e93d660fbac90", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b52e7a0a8af4788f135c177f73ff767c8abc517862372696f110fac26c0edac6", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0a89c9861dc4c11dfd0e79cb92126333ea98c97af53ab36d5f8e6538c05d3246", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9c15e612b5cb9ead49d532e46b071d336081695936bafae9a3f641abe0d6c4f9", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dbe0157eabd191b9cb6dbc0d641f1125f98438fe2b172e7c6927b0d0cb355988", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1605dd01345ef3e62bb20827383f3274e98cae0e50b8b1594027f6250f6af588", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fb4c99d04ec350261c7fed1d940f24dcecc5e2ab7cd641810cc35406880a5fe1", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6915b7b67c0eb13858ad731dc14ffca41e7af843b71253300589b82ad7997293", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "fb4c99d04ec350261c7fed1d940f24dcecc5e2ab7cd641810cc35406880a5fe1", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6915b7b67c0eb13858ad731dc14ffca41e7af843b71253300589b82ad7997293", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "62fdd5f078f34b963cae3acda6b724d977a0de5aa3983449b8380431fd7f879c", +"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c3ab79ad41399637b6a82872952f840d656752b82fa1863080e5ef6df90c47b7", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "dc0dfe0e394b5afe43b7fea94856e7dc324e687d0901a4cd229b652f45521d4b", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b52e7a0a8af4788f135c177f73ff767c8abc517862372696f110fac26c0edac6", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f9619044cb62669198a6f2843be1b94fb0be88f025dc0443590bb86fc4121d38", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "99245bbe920df25798b36262b33292c70d35f912c8186417611babe8940d87d5", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fa9c4b9d32656420392dedf6701881aee8745af80478dc412767d220ca563e12", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c5bec2198c420dd3d77c6e7278f190c0931edf50ed64ddb55c3bd6ffcc8a89ba", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b71bbf49a6a58ca45cd798384a7bca4ea12591d2d0d116568304d037f514065d", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8cbe146bf43da75c2fe737f0dcf838aabda71def5cb497ab63f0a7bd7c8f619e", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fcaf55e99c14572b38ff55431d0d15c509e326bdb5589413ba85c0fde0c701b0", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9a27aa5ed1d0e48c2e959ba2e2457a7f39a7568614d19b760d4c320f93bbcf89", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "47238908e206e817e3afafab78808fb66f30c4f445a6fdedbab5b15132ea9cbe", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3255c16dc281362a0278eb3a3e1d019ff165e728d22deceac9b7ef32a07d6586", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "104f0582f119012d8a6bd4c0e94cb6e33a384961cf1ba420c524b59706111dde", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d39334278212eb34bffa27e813eebccab8908a207f263e6022028b30aa87e8fb", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f5c22f27ac4763b9b297f4bb38d6696f31a4afec5be882b161df0a31a81a328f", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8e3d881fee9ac46718dc23704e752d7c4b8e54b407bf5ed5b59e0d6cb34175cc", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "e6c2d0308e60f9f6e513acf588f1115422d2c16148a3211092e6cf4f725324ae", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "12b37b66292f1ac23a54a30a3e44e389e4ec701937e7e960b7c6c2130bb9c61e", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "35766a17e9be0c8ed841ae35427224cd26bb922784933fdeecfb42bb85393acf", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d52930a2db4d38ea38cfdad683abf5376881261e08b3824ea9bfb0c714a972f6", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "db834ebec0ba4acfd9c1b036cd4f9b60a5badd207592d1232fc176d3e12250c9", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "1a0a524049ea18e5c7c963d0e3efa67a7e9deb8b2e64877e02e91b8bbbcf4773", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b788198438949d95433689c69e5c6f457825c24a14566e8eb2e8c60d5a211661", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c6f9ba04b1e0f0afd2e1926ae82a478baaf4462869934c3c1944efc1b606b29c", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1701fd5861a688c152d937ca3a2c2085348ead18f850b14828908f90c421979a", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "818c90dec461149ab452610364964c9b7fedf7f66e867039736b1c3eafabbde4", -"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3d896c6612cdd88e4b5a44dfc3da676b404f56bc52548a7a97b734c10277a246", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "812f1c99f2e117f254e61eb571fd7e590a0ffbd4cc1aae3ca2dd2c35afc814f8", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "94c8b9692a762c48673bdcc6894e6ea1e946ece937f01279b6ba3ae091a09e42", -"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7fb12da4ee794b7dd9047ce735176012f306bb5f22b83dcb6d69a453514d6d73", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2cf11d10ebb0f5d0e234fb39d2e078586a0be8e0b2421ee15c857d8057c4e3f9", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "60e43388b7e8b35ee3287d983db6f268bdc1ca3152a8eb1ea7ae54ce691eed8e", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dad50802915de6f0c59b24ec5d9b111c1094674fdb80f26847683d333e13a20f", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "01007597009a130457cdc28bde5af309c0caf57867524cd48f6a41954c292c57", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c5af512bca98a5b29240db3bed0150fb4335174a0308c64c951c083a76b81897", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d4be2da08a9efbf3f8860e6381136129b7ba9759670c8177b0904b45115c8141", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e8b1dd1ab01b58f5706f704311f12692b4093961032aa3d1bd4e9ddaa14b406c", +"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "25f56d53555c7055b1dbf580ac5ea4179fc40efc08ccda4d773bf99023d3e4bb", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fb4150a9ef686dd18767d2a12a4140a7bec10510519789fd010d1b6c5ac8e244", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f6e8b9e670281f7648d6f3480f1ab1ba3b72a0543fe71975342412ba76582c86", +"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "76b0638ea2096dbf61c965024164b9951e8f1d2de6890846998b1c87b39f3c0d", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4d319f20140a7dd26e8b2d476dce318baf4d9350d2275e738a0ab06555c82d4a", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "fd4d4283ad318a4ec7cfbf1967501946ec48b8790fcf61d529edf30d537c6a7e", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8ccf16649aeac16d0845fd44fee2a1dbd2b223d367966ed15878478da43e5b92", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d737f4992a9b77b6f1e942ec780ac06eebc1d222622ab93071c90e7c0092d6ed", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c0cbbe91fed1a92fd632ddc86618f0e30ef58d16e931990cc0735b47362ddc08", @@ -2156,35 +2156,35 @@ "T2B1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", "T2B1_cs_test_authenticate_device.py::test_authenticate_device[]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", "T2B1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay": "2486b410339b941704a9ff935dc7a6a86f286963057718648fdcf59333eda1da", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "97a5c9cc15fc4bcb954b8b178770cbd29f52c3dddeeab2323d6e1ba242467672", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aa0d900831d4c7b82ae43c06ce3e50379b7079631141057f0cec600eea33c092", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "6b2c32205253e2993d78e970d90050fcedc8c178236a6f69eafdcf3129b22245", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f2b266f156c38c66bd8c60b423c9631779ae12828343f7b1cf6e6a44f656e014", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4f8adb10e57138c6d0e44b13fdb56550d644ca94a36c00d7ee1c894cbf5ad359", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "974f1403138932bd2f493c8c22eb864a7ba1c8a8ac2e4ce899584ffb06a46846", -"T2B1_cs_test_autolock.py::test_autolock_cancels_ui": "c66f00702f4ac6bc3ab41743c9e9a4770da8754bb83aa8e5713eae69d440b4a2", -"T2B1_cs_test_autolock.py::test_autolock_default_value": "6a4a2bd33e88e860bbf0065da194fac9b022a2f135cc9500a070db76194766cd", -"T2B1_cs_test_autolock.py::test_autolock_ignores_getaddress": "69b434b7bf8749ebcf9a50821f304aca0005195fdd6bbc9579a66048f22ce743", -"T2B1_cs_test_autolock.py::test_autolock_ignores_initialize": "69b434b7bf8749ebcf9a50821f304aca0005195fdd6bbc9579a66048f22ce743", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay": "53c8968222b2b86276c27469683da262e3a60aa62be93d97722e743da459b401", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f2e301c9917e609ee3eed584ceab8cfd58ae3bfb5eeb008f0400ba8f09ae094d", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "215d3904f266386e4066ce790960f6d8f1ce16e7c652c2a9e3b1e98161e3d17f", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "65c707ea4a5d6d66ecaa214aefbde8af56cf475a7fc37169e5e55e1aac332d7c", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "c3d099095e5cf79a90bef36f4f9de8f9da03f6780f04bdf8693444f639c6685f", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d8baf46c5bdf6fb0f910e52bbd8786c0cfab9ad55e50f56e558308e34a66e31d", +"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0864179bd15a723f6341e8d1add7573d3ab6b230a96f5b7a4da314df4a0bdc94", +"T2B1_cs_test_autolock.py::test_autolock_cancels_ui": "2841868a1a3cae2a8751fff55a0f93bd715c9e4d8b54213eca5b7edb8a4bc0ff", +"T2B1_cs_test_autolock.py::test_autolock_default_value": "70b3d4196b010c58155a44ab1ced24a8a8bcb0b9b60f9b859f8166a8b2d341d7", +"T2B1_cs_test_autolock.py::test_autolock_ignores_getaddress": "c0372af2a803b51dd1a0d9c325528a72834afeadd53a3a213c3612d61e5357de", +"T2B1_cs_test_autolock.py::test_autolock_ignores_initialize": "c0372af2a803b51dd1a0d9c325528a72834afeadd53a3a213c3612d61e5357de", "T2B1_cs_test_basic.py::test_capabilities": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_basic.py::test_device_id_different": "32333d6a7e4d200acefb89c004f83a2bb5c0f11e091dd378acbd086534a9a11e", +"T2B1_cs_test_basic.py::test_device_id_different": "f85b71f80fd1ba51eb9071035afe352e4ee38c8917f0a46ca0fc2f617befead4", "T2B1_cs_test_basic.py::test_device_id_same": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_basic.py::test_features": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_basic.py::test_ping": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_busy_state.py::test_busy_expiry": "3ada1eb6b81ca1cba6132b590848152d4f95741a58e0175443a634043b6b95b4", -"T2B1_cs_test_busy_state.py::test_busy_state": "5b8376a84d90e57722b642c34c590dddd0adfae3203dfb7faebf60ce37160a3b", +"T2B1_cs_test_busy_state.py::test_busy_state": "f15b79aff8e3ad4cb2ed1068928100d66c0ab8017251aeb30a7a980d50976cf3", "T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", "T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", "T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", "T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", "T2B1_cs_test_cancel.py::test_cancel_on_paginated": "0561a2e23122e7ca49c00bd4f28c193f03126f8ee99292cb163ce48da8c1ce74", -"T2B1_cs_test_debuglink.py::test_softlock_instability": "bb653532993c499a94dfc3954d09ada9560e1224d04e8d584e15231479c9c6a9", +"T2B1_cs_test_debuglink.py::test_softlock_instability": "cb2824dc80776b7461e16f3e482cb8f032780ed948c8659c23fe3ae0316e5aab", "T2B1_cs_test_firmware_hash.py::test_firmware_hash_emu": "f7e29f0aa9167d32f7ae0f5475c29c0f0fd39ba665c8e4cf4638ff07447b3c25", "T2B1_cs_test_firmware_hash.py::test_firmware_hash_hw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_language.py::test_error_invalid_data_hash": "19a433acf4351dbce77ae09e1e7ca459fff8644639e6c8f8e809e87cab219ec2", @@ -2199,7 +2199,7 @@ "T2B1_cs_test_language.py::test_full_language_change[es]": "1db03f150dd5b88c7912d6afe88d7869ca6ab407e58c59535de56440aa9c05c6", "T2B1_cs_test_language.py::test_full_language_change[fr]": "0263ccab0d6aefd19896c2d96a7f6f9a8871257392fcacc0c8fee6212ec340bf", "T2B1_cs_test_language.py::test_header_trailing_data": "abbf6b257e8db657a83cc80f0fea86a46fadec4aafb7fbc3bf8a50123cd73635", -"T2B1_cs_test_language.py::test_language_is_removed_after_wipe": "d6a85c0986ec53c3cc4ece6479d6774901c619de301d5fbd6233d86487f3ef07", +"T2B1_cs_test_language.py::test_language_is_removed_after_wipe": "940a6c3ce9d5d7a2193c0218ec44597e5e098d4a15693ade14a7fffb080f5aec", "T2B1_cs_test_language.py::test_reject_update": "a5bc2e6015b97e3cfe40b400b8139f2e9890d391bca3f934497b05b3308618ed", "T2B1_cs_test_language.py::test_silent_first_install[False-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", "T2B1_cs_test_language.py::test_silent_first_install[None-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", @@ -2209,17 +2209,17 @@ "T2B1_cs_test_language.py::test_switch_from_english_not_silent": "fb2e18e513a44a58cd1e31fa563c3c9783d5ec0a692ffb0b6635b833e13d76d5", "T2B1_cs_test_language.py::test_switch_language": "0c2bc505e2a70aa7f544d15a20c2cbec91ae70da6cc48fe6947ffa4de9bcebda", "T2B1_cs_test_language.py::test_translations_renders_on_screen": "fd543359e3be7f3e65c8e1129df243572305b0a458997343524d7f79a553fe74", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "14b9aba9fd57cf4bc0efbd34decb35c4d86c75bdce7e9593679b361ba3243551", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "ca1c06375c98d3f9ebd84d4ebc63fcded735ec2320babf81e04185ea3ac5edfe", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "5de6420852be690f72776fee0efe5fffa2ae0580b08dfb858c7db6a13df741d1", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "5d53a9c7c519d48e92721bb2424a939e7f245ccca17e42518e7f02fb5032ece8", "T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "4cb5fb5f00faec18c34436b4d97ac7199bc10d619c772cc97bbdaa9aa84e69b7", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings": "fc8b13033aee5898ee17a7da5bcb6faa876f2f078fb92829865f4361aa9fb17b", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "9aca3b519b6024f2026a27d93894745e5670ca1dcbbdda6c476870ef9130eeb1", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings": "cba3e09f927e938060b69c4b85cd27cd2521c70c57a48abac8bd4ca99b79bf80", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "6793e70a977dc5dcd8bd3064b2bb6045a236a87245940a9c9e2ae4e87324b2c1", "T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0f1467141822cf93346a757aa1d3e0f71ea2ac68ff318c5b6b91bbb80e74464a", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "a886e0b0c49556e30581ca61c2765d4910d84c61811efa2a1af8e08622db8620", -"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "fed60c1103e3ac497cb19ab1f484bdf154ca63894da0d22f4a0fad61e5bb18a6", +"T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "fbe18469cd2dcc63a18ac3737d48360dc789996c427f0a67eab4e68e6e7cd983", +"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "17a254bc9fa8f7583beb3fecb933a951bb01a259239521cb7da0e753b8065157", "T2B1_cs_test_msg_applysettings.py::test_label_too_long": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_msg_applysettings.py::test_safety_checks": "c663fd32d9d6e18a0685cd69382e433f480c82933d5a84a3a53d8dee0d1d8f80", "T2B1_cs_test_msg_backup_device.py::test_backup_bip39": "51ca4acfa41ee2b628f44379bf763d0cb349b97a268c39de1b3422d366dba05d", @@ -2233,54 +2233,54 @@ "T2B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", "T2B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", "T2B1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "89f27080a046d8dba2154cf898c5c3374dff08890ee76ee3544949df18b8da4b", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "f99a59610ed9160dc805420f331d6921824e9f3559aa6d34c3b028fade052bcd", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "2d1ae52522952895deb80c526f031419d6f7b68b2ddbfe40c892bcb71660677d", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "904dd45fd64f9ff4d9e67a9669e0922f5a4cb5b60fed32f43ee5db8cfc7bcf0d", "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1d56ba8d29b61fc3d41c197093da2fb465d1f0ff87622df2ceb599420f8cb78f", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "668bbacaace228ef135da4cb1ee5f4404cc6a45e52ea11c5421f6f49ef09d240", -"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "e00e445f8ddc70f6158fe9026c37b33b00b23bfd28b7cd1f4e53471d65f2e01a", -"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "12e335d0db4d423a6c5b42cb12c769080360e46ebf2ad03aa7b26e4ca04953b0", -"T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "f65c1846c1766449999ebfdd0c8bca3408ad90847c2c2f9e207681d2d11ebb61", -"T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "d96659f742ebaa490216648602a45445d3a830a733f407d7f3b63350ac9a5418", +"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2c4c77fee16511b342ac372a3a04b182bcc7562ce79d41121475d082e464197d", +"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "b5e30116159560cbfc483bb0ea1f510b389220c9b7bd58cce1d00122e9123fb2", +"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "74a4810f4378e57c0f5f84d1e794d89615351d2b55fb82c4f52e5f3ba1531bb8", +"T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "9914d86b4674af0859beb58c0746e753301677f0c6bca9fee9f01cba12b8634f", +"T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "86c309b34815e37cdb9733d53d985d3615891c13b4b8da18ebc34c1a696953b3", "T2B1_cs_test_msg_changepin_t2.py::test_set_failed": "77677a25860127358ec60b8ddb191b1a6adb3f88461434c34b36db34eb33139b", -"T2B1_cs_test_msg_changepin_t2.py::test_set_pin": "a0bac985c7a66bfa3d775b70c1e3dabcb7ec618c985cd1b0e0fd061c20c4acf2", +"T2B1_cs_test_msg_changepin_t2.py::test_set_pin": "6c176b215c367b36f8f3c6b8f8fa9f0b8ef602e7f1b6b1cf5aa3313f8f45c38c", "T2B1_cs_test_msg_loaddevice.py::test_load_device_1": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "cecd17791b52f20a06099d69d6e52856b04dc0be82bff5aed29d4247611471d7", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "ef0a0942c208e7f752da466dd5aa8015efd50aec4e230c0fcedea7997ade1992", "T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", "T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "02d4b461cb2d2611d2913648e47162a057c0b28bb2d8786aceeb72ecde71f22d", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "a71e7184361e63255a4bfa138ce1426c6505fd5d0c31ce4365c44df1dbc76bb1", "T2B1_cs_test_msg_ping.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "34f48d5d1c1c8b81a1c8590e63afea7e489302086b65f0e4cb99673178fafd5d", -"T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "32333d6a7e4d200acefb89c004f83a2bb5c0f11e091dd378acbd086534a9a11e", +"T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "e103300a4329bada7713e61b73afa224f89e1cc936a76e27cf973928e2e742d6", +"T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "f85b71f80fd1ba51eb9071035afe352e4ee38c8917f0a46ca0fc2f617befead4", "T2B1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", "T2B1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", "T2B1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", "T2B1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", "T2B1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", -"T2B1_cs_test_pin.py::test_correct_pin": "df85ab8b2b58b571f6f7176713d6cdc572b25cec8a3a5303019017ba945c2142", -"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "1a5b54970cbb1063c5ffb6beaa85af26756b15f04a2d498857771e504c9aaf7c", -"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "4350872da469a4ac52d365db8e5461f609d73c9308626e7b3aaeaa3d94a8f599", +"T2B1_cs_test_pin.py::test_correct_pin": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "680de5ae0221d6a30e6a185aacef57263c4bada89af2ab3bb651f460cbf3ee4f", +"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "5967cdb6f83cac5ffe16d194375f540a5dbf3c5e1695ced906a61821a48e2619", "T2B1_cs_test_pin.py::test_no_protection": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_protection_levels.py::test_apply_settings": "50e38c7fff7e4d0c7ad05fa4d7a535019399e6ef113a7b4d06a57883436fe6a1", -"T2B1_cs_test_protection_levels.py::test_change_pin_t2": "71ba1a4eb0f6ab7cb96d75fa6e6a0dd6680519fdfc426e05ae363c99aa131ab6", -"T2B1_cs_test_protection_levels.py::test_get_address": "5d239e0c784ccbf33e5563253d705be65408318b95da2165beae47f960c0b59f", -"T2B1_cs_test_protection_levels.py::test_get_entropy": "43e05f132a20422b6613dbec531a5f8d945e9944b3006a7d47e67a7a5739c953", -"T2B1_cs_test_protection_levels.py::test_get_public_key": "5d239e0c784ccbf33e5563253d705be65408318b95da2165beae47f960c0b59f", -"T2B1_cs_test_protection_levels.py::test_initialize": "330ffb18886a88c7e2b76048b18073c8188edee74e3b3454af69b99c2f15036c", +"T2B1_cs_test_protection_levels.py::test_apply_settings": "a5ebd3ca45cb18e0179a75880c842cc3b5957bc344cf630c33166f0d68bc50dc", +"T2B1_cs_test_protection_levels.py::test_change_pin_t2": "3d77956471e8d14c8ee0b0a74dc856e2085fa73f5140279ca62c49d1ef9e8481", +"T2B1_cs_test_protection_levels.py::test_get_address": "0247c433b44c61a9b1eacb1ce644d757d3e7c7b0248a130d17976824f0e951b1", +"T2B1_cs_test_protection_levels.py::test_get_entropy": "06690d3ffb20b0469dc077204a750c2928be9ce998401a536ada41f007049b01", +"T2B1_cs_test_protection_levels.py::test_get_public_key": "0247c433b44c61a9b1eacb1ce644d757d3e7c7b0248a130d17976824f0e951b1", +"T2B1_cs_test_protection_levels.py::test_initialize": "f8a8df62d5f2d38ae5942c2bc6a01e77d86459f08d353b0db8bde1d9e676445c", "T2B1_cs_test_protection_levels.py::test_passphrase_cached": "0ca4df8cfc49be43d21350e06d1bbb218736cb534c6f18a4c93a157686197339", -"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "0f07eb05ccc503310777d86490d8d60aa842a08962084171d4da578ccb5d9cc6", -"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "f2c13fd7e1b8f2c40addf5d28cd4c51aa9e5d234f2f3848c8a3d27e79c3428b0", +"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "0b27f57f2e1ccf62fde379a908d5cf1f96f19a59b609de1eaea883d330a180d9", +"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "f1bd9c4b41adbb1c4706d6231e536a79aeaad65d250ff41d85dbbf3fda0b8269", "T2B1_cs_test_protection_levels.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_protection_levels.py::test_sign_message": "c4cdb3ad33feee3516afea37b148aa499d51f33f255459defe411cb6cf5ec904", -"T2B1_cs_test_protection_levels.py::test_signtx": "a7c73f78cd6a8bf07e97adb4bbc03b36842a3ede495c13c97df178e58432fbca", -"T2B1_cs_test_protection_levels.py::test_unlocked": "161d578d884d5f414bb362dba46df7b939a89e02fabe079feb580ed615caf55d", -"T2B1_cs_test_protection_levels.py::test_verify_message_t2": "da169a7cef407a333af12fbef1ca8b264e194d93ed736109b16fce372c4851c3", -"T2B1_cs_test_protection_levels.py::test_wipe_device": "6adb2d35bee471dccd4d66d48fc48b98fbf48db2a188b6b56aa4b77b7779a074", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "4119ec5a78fc509a7c80b25a48860afa8f5dcfe06469c0be43051287ecf51a17", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "204be8c9e730f3bb659faf081afe500d2d49be580706f5035226d2896e6c907d", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "2151b8a268bc77dcb59932cfa05723beb68467af3f9c9297369c24b340bb5cf2", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c1eb1b5f9c832e22e47d36b7f01a7c6f0f133528128d85d3f4fffa9956f105df", +"T2B1_cs_test_protection_levels.py::test_sign_message": "395f8a98914cdafe94779f872dd849dcc1a89f7f49201a8505f4f149b41fa7be", +"T2B1_cs_test_protection_levels.py::test_signtx": "3ea5c68838b2c1968e883082e821b30cb48cb3492335ead107648afcdc8d4328", +"T2B1_cs_test_protection_levels.py::test_unlocked": "5d5cc20901d361b4957aea0e4c44a630db7ab8d7de0dfac4bc9058ecf26b6fee", +"T2B1_cs_test_protection_levels.py::test_verify_message_t2": "5139e2170feab7f553d3128ac0e03582c4d1417c6752408d1637595ae3bcc81f", +"T2B1_cs_test_protection_levels.py::test_wipe_device": "a22ffe67f254e33437a3465b85546622ac1c01430eb598065f0fca6e8d4fa530", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "8a5216a8a84bf11a22bc76141552255cbd22ed3a43c7909d1b275e159bd7b798", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "f61f33ae0feede62980fefc70eca85ac6e7c90a3c75849c6a3fa861527ff1973", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9cb3bf7a2aab051eb5af89797bde9af8148e6c42595fa20e3db5992b2b1a956f", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9b38bd9251be67c08c9ad573ce620f06c5e379ac92a7ec42366484aa3e1cb8a7", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_clear_session": "88c8146d79ce538ac2215eeccbd3c0f2dede590f39b156e825198837496534ce", +"T2B1_cs_test_session.py::test_clear_session": "dd3da407a5324351fa6cf3a7e52b234671d47202c07867cc8fd00fefa9ed33be", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_derive_cardano_running_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_end_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -2343,8 +2343,8 @@ "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "f05be5e263e97d8ec91dc113e8289fda07acabb87acc7d5159a6ea53d74e7671", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7d7657a854dcf7e21c0ecbb08087edca6f2eac142d526ff0c86ac3343c5072b7", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3cc3122f8ebe8d3d19b709ff4524425d9cde56e79478a52419ba7a7b6ba06de7", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "39cbcb5ae5b13a38da67a67dde0faf2f6b4241a1221b700d4d470456992720ce", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "39cbcb5ae5b13a38da67a67dde0faf2f6b4241a1221b700d4d470456992720ce", +"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "42e6a3904ed7e3e9ff98e923ac3e6513f7f2de16f642145c8b137eea239a64ce", +"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "42e6a3904ed7e3e9ff98e923ac3e6513f7f2de16f642145c8b137eea239a64ce", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a944e4159fa05caf2445f7745bf02e9135ac786a5638760104e47460b6a09f85", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "e7d320723a1aff20c75df42104a5dcba078c81c6476c86d456be847f95f5038e", "T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "e37748e9115109a9f39caa335f0dd201dd21cdf43b174625399dc55355bb28ec", @@ -3332,57 +3332,57 @@ "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "bb747c243439bed087304f18a3f1073dbadeba27ed1e5e48bcee75d035e398f6", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "ffa3187636b6b45f8b9900573a2567451e9b47ef33bd05080806daa2aa005d4f", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "b50e53567300a66f742944bde838bafee9786e7f42a5884433f102717cd3cb31", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "92043343dcf28c950425653f20c71b8c9cb9d762a75562be468deb187b01f3ea", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5f83323305b74986e281b12554992b56db91e32bf902a59eedc344b6ef6169cd", +"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ac046074538509280086267cca0b7b4ee1555e6eb299e0ea1baf24990d75985b", "T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "f6260a5d114d7c56402c4e62448f61facd6594115cc4b351f03b0881584c8d6b", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "82159bc98b1f406aceb1ba9f1ab90f7ef6fa2f42d3ba2369284eba8c776ea1bb", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b762c07a242113aa35333d1e063d08092bd1afbad06fb91745d20e22d5121e1a", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "1d8d91394f70ef7ca6398f73fcb402345e9791a995fcdc858d5863375f72a0b8", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "f9cfac8065d55d0caba7d7b0ab7911aa2ddfc5234b495223fdd6f32b223a53fe", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "8c014516e52e2e37c06e1504ce7c715a2ddebc699a01b8245b7a253b8d0815cc", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "a5924b2cd7dfd2262dad2ec7c586fbfe3d790c53ad58927c08c3cf7f08967cb1", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "356e63b44217f9319525b841229b836a1291618902783de58299526ad7aa7996", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e72ef8490fef5c6b8cf4054a66bf970f2c1979fcd40548382cea609e95c6908a", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "356e63b44217f9319525b841229b836a1291618902783de58299526ad7aa7996", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e72ef8490fef5c6b8cf4054a66bf970f2c1979fcd40548382cea609e95c6908a", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "3e79dd696b7f3de7bcfd7738508fc8888fbf27b83b8a4ae5fc2578e3edfb26ea", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a380ef576293eb2dfc5e66a4c7073377a84fc73392bf74bf0771fc69751d5c6a", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "0c097002ec61a0b6b72c8837333520b8e14c27503bd5fc8958712bb26e24ca30", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b762c07a242113aa35333d1e063d08092bd1afbad06fb91745d20e22d5121e1a", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0afdd93910244781cd37ab92f307080263565fdf3a12ac4a4be9a04a6f69715e", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "f98769029ff10a6b8c55806816c24547cd99e460f1193cee3f3091a89bc44a68", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "6f480ca4c557635ce5fe2f1b8192b099ca626566699bd94f799da3c88b663fe9", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9ae9e7de53e181b2685bc207bc43e26e20cbdf9ca670774bf311663a8e4b0a69", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "56d2d704ebff84baec48007365b901afc071702094fdf0b5c79962ea4649d910", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d0b175ac578373922a125a236a8630f714eec13668541983f35b66990577e817", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e88ffeb56b6050f66b3ffb5a1733faf74e73597e171faf98e6935bf1121e5bac", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9f814233f2172617f42deebd6d8a39f8e238df95c1ce2085aa74644b6b328613", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "07434e3fac271e0ca16deed822bf8dd52e989d3e8a5fba71a1a92f2d28727d75", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "1ea1e5980ff731cd7a396ef15a51156ea7d1fccdf47daa1134b1e779e79c80c8", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d427f608e1cf73c70d9d80693c42f93a05718b605f2b4dbd3236dcbc4bbc0083", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "221f7413fb80a10b4b1d397b9e937f6b2a04d6b2e0c3bbe7da660561cd30ffcb", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "30143be8528e00eadf8e42b2d744036de71d60273c7b4983a2f7233aae30ef39", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9ae65afdfa112faa286896b51941f8b572dc308cb1223bccab9db978005482ba", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "743217fe2cdf362c3c30e825f182202132e4673ce880a9778bb0f4483f0fd38a", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9700ceb77e6717178872e70d4c07d75039c47a0138234cb24c158e987e86341d", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "70024900b2c10e936bed74a5a146191e4d1a4170cc3b342b20e9b5c9380845d4", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d72c9102a4e4332210c511c5a89a327092e92279ba4c3359178fbb6d3139d958", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "15d64510b7ef87f60ce2aeb744e38fb57da97a0e85170cdb6743cd80eb4b25fc", +"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "778458adb43a21a3c48f57134d6ed47d6ea52704d73baab0c8fb8f35235d7f2f", +"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bf08e17df613e761aa7d4e5f0ed3957167a22746392a830f8ba740fab1e17a0a", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c40d392b79520a91b10a8cc50ecd7f44d89f855436b7c55a17227f4289420b8e", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "257bc02e5a923528fea2dd3b95897bbfaedcc27a1b535a3409914b813aa80d31", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d84f008377ae383afe86b4858b9ebd19796a85ce039da960b54d7370eb52d004", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d126b61e55f3c4fc8c900dc4503c0206c5513e9940ce9cb083542e8c76fe2387", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7d531b9197df19026728eb0064b3395f1e4c24ad993e97438aed31bac859ea6f", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3d0dcff356f3408434527fc3b51993c80070a6d735cdf8cb53a6ba85b0b22c97", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e300bd53cef49d094f1af99ce8a81fc59cebbf5d6f85731a5ff500b17f0ba8ee", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3d0dcff356f3408434527fc3b51993c80070a6d735cdf8cb53a6ba85b0b22c97", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e300bd53cef49d094f1af99ce8a81fc59cebbf5d6f85731a5ff500b17f0ba8ee", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "bf96b94f26c0fc399941e7523dd5cb533b813e1795bea695c090ba66c4e1ba10", +"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "e577a4feacfa10f0b994ea7e215bf0bf292f52951837350060d829864da2127d", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9f9b88d887a1ac36b239f2cf902449c381d3cbcafaba6565a5d9c813caf96fe6", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c40d392b79520a91b10a8cc50ecd7f44d89f855436b7c55a17227f4289420b8e", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "24d8e26d2f91b56f6c8629513c417cdc018371aa5a8b6e467d68fb37c5eb91df", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "0bf5ccc67667bf33e0b2e3d224fd9ed692274b707b866e7945e7029cdc6d5a6a", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b75e26bd68b3bd22ff66d52fe0bbf463d8c32a6caf5b61a3b83d34f45d234b6f", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "54ac93693560f02b6c3bfdec10fdc4d7c5d95cb288f4dbff6112331d156f6268", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2620f83ca64916920e4ef8c5fff42c9fcee4c75437c1dcc6ea61ac04b40c8441", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "0a4dd371e17c9229d6810f1135943f5f7b180aeef1e27a807d79970254d6d7ac", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a15bdefaa80abe1a6bcbd4def8a8d226e7b1d7b55760d63ce4c118c1b575ac54", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "63d2b777871b20b93b769eb351aef7f90603de03b9755763379a6b3c3675df72", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f75ebc8573f12189a4cf31e3ed48b68557be4e015292ed6ba982786d571b029b", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "748a574fdd48f7c82332dfcd4fd02fa426cf9c51a79ee4349c484bec571b1b64", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "088b0d447c785d0ff38f87e4ea51dc0d78e9eee9b06abe45b0fc3bfe3d988c45", +"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a9007522ef016ac22e32aa6f1ffca588909e6d9be5e388cf63837dd83afbca37", +"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fcc9ebcaf8fe994276f9f3775fa21edd9931f296db50ccc023aa8bf5f3a64144", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "3129105763168b401b28feda3831a4b0272b653929c2cb9d044568a131df5e24", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c8b34b277a423da55b46dadbb0f8e8a62135223f198bb4e739c9e62f1b56dde0", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "44fb0dcdcadf28eb3bb71243f46e22fa25892208949b3e6305a8426c76631fde", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "28f835261969f4466aad2121c94ae5cbd8ef328ee32505b8a1c200765a08d89b", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f05968cf2b602a3d230acb7340c65016fd37a4420ed46b4c03743405794416a0", +"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "78977bfddab2b271e60161993f071f31a317bb59a62ecd4b7a9b295923eaa107", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "33cae98cb56cd212db3375023f387571fcab55af794e47dedc2dce6a838e84ea", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6db29d4c9853465f07d8511f5feda4dece10a1c8f0dc30d990d40d4053fa47f9", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c256a0cdb030b2c221da05af130f45f45ec00421c99529590540acb788d9944d", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "82e6b7415db25bf8284de57b10c7b28007f1b6236ba3757357e6b64be5f9c2b3", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "5545460cb4e2762950fbbc87ab96aafceb2d9b692da81f8079c4d7dd3bc74421", -"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3992cf6d8cc0a48ac57fbb631ebe7a3c23205502835957bd26fe0d92498325ce", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "62324e252477f5d1b7a0dfc6836a0df3d56beb4a11ae1df4b6151fcf8a2488a4", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "62028751ba298810bf61a54bb5042ce7a4cd87b5380a85377a09f3de056f39a0", -"T2B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b2c1d6d9e7539e2dd42c285102e1e622a422ce1611310998e2e06adb25850c88", -"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "9b281f721b2ec551aaec0319ca769bf72d8dc3050bb2caf34b5a05c760b4f1c0", -"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d16e8f231fa2314c8db94bbaa23a685c2f497e138e52da37fa76ed7506cde767", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9ecd4c00fc84e6fe6617cef2aa0d258ae1c332133b1df33df7a1f6feea30e465", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "06d6a6cace3c49d8a621b949cbb3369911a9b600957f5daab68330f6cce50332", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b017a195135d9863a2a7eab808bc3101aee726653e936a55ff39d94b583b8fe3", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "84933db744530b8a169b246d4460538047cb191a12f8b0a4f3a12b265895c478", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3e2513cd2012fab7ae8e420f128d761f0db892126a5868f83ebf2fbe0c968710", +"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "37cbee54132b02bb1db42c5606b6df9c7f76983abcc4ac19ca00d3ebc9ffa958", +"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9342e12335ace2245c604b120efa7c877266fc772321396f4c8323ce3a630464", +"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "fffafa78a91b68662033414ba65af44cd0c89331de499a6aae573f66563a4a01", +"T2B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b7fd13b541939181bd5b17e778757d48731655da4b24ca45f0f58d32367059b9", +"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6b21f788e2a2ea8d47cd8d53fc3bbce62ed6c91a2caebe1e97f7dde30d8868c6", +"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8f0149a7ffbbf64b5a93f3878599bfca30082cdc2991bf73bcf89f5e12f08d8e", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ae44a9e4ed76fe84dcf93d1d2cd7773ab322e0516f6019180fe96a44196244e0", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2df63bd0ddb47544520de33b69f3000d0a1396fb419e874482953507cf10bc97", "T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6f125524d4131b42c889eb584f891a3d1e2ea94f5b609eaeb58846a39d92c12d", @@ -3524,35 +3524,35 @@ "T2B1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", "T2B1_de_test_authenticate_device.py::test_authenticate_device[]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", "T2B1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay": "1c44e08f6db7f11e4afb30c530c5114b59051334655e417a48f8c8f4f5a5d142", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "18b89301d20881567308bb6cf872ae0d0b084fe1e9388739406fee22771ef8ed", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "efa393cb0b6ff03e9125b03eb01c517fceabbe54cf3008e0875a952a1de6ee04", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a25081f7a53d14266f01f813bb6c06091db7d87545c3935f1fe68f12d28cb375", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "14c46c8f75066ac393cd5445519f5572ac043c1eeeb37338514a368c53bf8cda", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "cc9b566dd2304be61feb9c578555cb42946a47b417763ac54be6cf340434aaee", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "291f4dd8118016e1aebdc3a776a4d674027972eb04e0eb877a28c8c347db0511", -"T2B1_de_test_autolock.py::test_autolock_cancels_ui": "fbefa6f6d0b6774549b7392d0dde0edc6d49d9a520d244878d06e70fa3028674", -"T2B1_de_test_autolock.py::test_autolock_default_value": "1af28f36274380ff170db0bc7eb3d797e860220e9362e2b016453a84de260713", -"T2B1_de_test_autolock.py::test_autolock_ignores_getaddress": "2d41871268f8c8e5028afa03917a34f2159abaa88936f2f398de26f0c8ad7006", -"T2B1_de_test_autolock.py::test_autolock_ignores_initialize": "2d41871268f8c8e5028afa03917a34f2159abaa88936f2f398de26f0c8ad7006", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay": "e0903b72b35c9fbaa0994d58b86d9fbe4c13e4dc6628db58494331a46a1d72a5", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1102df6f016319b9c9ecbf9d8856ee0269423a8f54a56c0ede512bcb815fd8f6", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "13fdefac289c62c385085703f4473b40b8ec5e50db5205adba45e84983766887", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "e34b70fe4c16e1affc1f268c711485a82924549d0e4f2add4b2dcf6ad7c9f510", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "e8fdc105047f9172f00358716043f9c8ee84f76c38225fc03a0ef30f97669019", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5935009344accade82607da278e4b56b3eb90700daafdb246651c352299de900", +"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "3c247d31e68273c89eb75b66d5cb1f36ed709351d0fdac78510e37b22a499f4a", +"T2B1_de_test_autolock.py::test_autolock_cancels_ui": "9988d59b0537a7d3e82ed5d21f6d7eb275269302b25fd77d91b76487e6c295bc", +"T2B1_de_test_autolock.py::test_autolock_default_value": "6f5662431a503ae159798404a8eb1dd6b43c7f2b474230ddced92adf1dd43c66", +"T2B1_de_test_autolock.py::test_autolock_ignores_getaddress": "4450caf3dce3cdf32e6e0972b3c3489139c08861f0f22ce90c5dab57bc386dab", +"T2B1_de_test_autolock.py::test_autolock_ignores_initialize": "4450caf3dce3cdf32e6e0972b3c3489139c08861f0f22ce90c5dab57bc386dab", "T2B1_de_test_basic.py::test_capabilities": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_basic.py::test_device_id_different": "fb5b17f7f35230b2fbe04cb96bbc7ac3d768b35926f35615e8efce5ad6f7f14d", +"T2B1_de_test_basic.py::test_device_id_different": "83b61032ca87fecd27e115b4938301f42bd347eaac440be5490beecd6242ba8c", "T2B1_de_test_basic.py::test_device_id_same": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_basic.py::test_features": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_basic.py::test_ping": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_busy_state.py::test_busy_expiry": "f060bd0cb42bced5d02923279994ebadb2d6bfdac236f2bf62fb204b1f6f67c7", -"T2B1_de_test_busy_state.py::test_busy_state": "e4b37853d250f196cf3cd8ce56bc63d4217bc02c6e56476bdf5d6af0a598b94f", +"T2B1_de_test_busy_state.py::test_busy_state": "9d79673fa4eb9be4fc865a0e81fa0601811f2b38f6e110fbb99aae1c6ab4c3e0", "T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", "T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", "T2B1_de_test_cancel.py::test_cancel_on_paginated": "22e5ca5da1248baddd00fad0a3c14072719cf8db8046dedb6f67239ea019bd6b", -"T2B1_de_test_debuglink.py::test_softlock_instability": "cb093e0041a2cbdf0397ef7ea4a364eb24e155b1cdb61a23980755ab32a61fc2", +"T2B1_de_test_debuglink.py::test_softlock_instability": "f29d70f6632cf45b43f3cad58de6c42d381f90fe47303bfc9b9d39cd8c7ac603", "T2B1_de_test_firmware_hash.py::test_firmware_hash_emu": "b64812ac9c7f3d3f34118ae559f44c9727e02409211003966ea5475b026225d8", "T2B1_de_test_firmware_hash.py::test_firmware_hash_hw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_language.py::test_error_invalid_data_hash": "001546a6d7d6fd797f5d358a85afbb653ab3dba0ee15650b38981149460e33ad", @@ -3567,7 +3567,7 @@ "T2B1_de_test_language.py::test_full_language_change[es]": "2fd72d78dd1d1176ac6aecdfd3ea790aa2aafac0d705b406d44c0e9c9545002c", "T2B1_de_test_language.py::test_full_language_change[fr]": "fda57886e4c371f3219a29dd54b01de43e96bbb94a6fcc7d6c9e1bd1e7e30ace", "T2B1_de_test_language.py::test_header_trailing_data": "8d546f37251d84f6493b199cb84219d818def9318c908e3fb7feaba788862028", -"T2B1_de_test_language.py::test_language_is_removed_after_wipe": "f78894965f847ccb984358a9a3e9b53a75313301bcde51710de511af72f5e4a8", +"T2B1_de_test_language.py::test_language_is_removed_after_wipe": "146552979024b0aebe9b11475131d71c0e6ac909d2b8e322af848401e0cfa316", "T2B1_de_test_language.py::test_reject_update": "c030eaa1b84ee548a68f0e20ad74201cbbeea1f09095dfafe0465020f3215a7a", "T2B1_de_test_language.py::test_silent_first_install[False-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", "T2B1_de_test_language.py::test_silent_first_install[None-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", @@ -3577,17 +3577,17 @@ "T2B1_de_test_language.py::test_switch_from_english_not_silent": "734df403a42da192b49b0bfc990db9f4b84e118c0b678da7e159e6a0c2a86896", "T2B1_de_test_language.py::test_switch_language": "e922d8763c8d4c700a92727e4bdf3b7ad962d1980512c38e66e1aad8979b116d", "T2B1_de_test_language.py::test_translations_renders_on_screen": "76682d785587a89e97813092dd09f407f8cbc8c11845f84d7b891fc25d21ad0e", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "b86dddd030829a7bd53fcba8711b0dc0942113c37a1a27ecb3b8efaa5abd8436", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "cfaac27f3934867dbb4eba7c80bbb258f5d29d475ffd4567a449c536a39424c6", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "231c46ba707961f3b9efccfec83f073542e342b3c15ab5014b826a1659bec0f7", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "6a6b3f99a0e1871cb01e38fa2bdaa81c93344abb3a7d1878a5ab40c50777fc1e", "T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5d88ca231c16a760f9db2005d7cdb24ed282ff7377026a947e023523654b2971", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_msg_applysettings.py::test_apply_settings": "ba73d0e6ad5eb61351d009b2a1849876fd24d374be3f272100a7aba4f59461f8", -"T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "4c2541a061fd0949af7b0e835d63c229ed701e84300f91c7467618c168c9ca13", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_msg_applysettings.py::test_apply_settings": "65bd24b50922a21b7f00b92b7909fc52597d3ee17fbbe7971e2c8e0a2969dc9a", +"T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "4274bdb4acbbbcac76b90270fb1652d4a60e617ba165b98bb301b8f75e19c919", "T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e55071aed329923cf60c90370319a7024f24b3ebc209a1270bc9e6ba19195505", -"T2B1_de_test_msg_applysettings.py::test_apply_settings_rotation": "6f7c12dff31ed9db8dc644150b7c0755925973e81852212ecc14e69b241b4e0e", -"T2B1_de_test_msg_applysettings.py::test_experimental_features": "486b4fdaf01f0ec1e078d6972cebafaf766958a38a711580f39d4f625267b540", +"T2B1_de_test_msg_applysettings.py::test_apply_settings_rotation": "4d17a2d5c4b7585ba5e8ab4acf617d74faeb715d5faade775c23894f211bd17a", +"T2B1_de_test_msg_applysettings.py::test_experimental_features": "637d981113e66bb90150880829ae95e2ce9bf1923035d09667979b7cb882ddde", "T2B1_de_test_msg_applysettings.py::test_label_too_long": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_msg_applysettings.py::test_safety_checks": "91668616d03dbdbb3400a647bb89ecd1195b3fb5d8999c6229ee91b934ab53d5", "T2B1_de_test_msg_backup_device.py::test_backup_bip39": "e1bbf95c340e6262b00c14a485006470a14f282a7fb487cd8d40489296c37884", @@ -3601,54 +3601,54 @@ "T2B1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c925fcea96ab652c5cba68ecf4c6cfeb069da7eed29037211d72301b0e34fbb0", "T2B1_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", "T2B1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "71544cf341c0e0c34c10059656b3edce840f15eb906bc582cfeb31d0457996f4", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "b0f8b53a7845ef472a2b1ece1efecbda6ad54426a9ef5221f9465a6549a0bf55", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "29c78026d1760c76b4015d8b125780f78818756b70acb7ef43419908dd188570", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "10d97ce1dd72142822b63218a3aa4eacd3b16bba3809f0eda4234fb95bcbcc2b", "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5ed7a9edbef7af20347d0d89bfd78e877c19e28c59a0460d61c9a30b4efe2eca", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "40c8ce51447e16b4b87c33226ee83967c86104bae8a74b749bd8b5179d199631", -"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "35741755bcbba6364090441cd7da11849778abaa92d7c1885207c58ed0ef345b", -"T2B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "0c8cf6cf957e577cd270dd4f27ff97e27e5eb61f42e027a0157d6f844e4b51ea", -"T2B1_de_test_msg_changepin_t2.py::test_change_pin": "14382cfc204e82c0aa3d8fb0e16d1f2c67a9bf42ed3be0e076a90d928b3ef120", -"T2B1_de_test_msg_changepin_t2.py::test_remove_pin": "c04fd6f59907a08efba7f6ff3be6c69bebb6d7a8c886c5cd50570a9f2cc0c373", +"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "369c41027c08a31faa0fcca716520be2c20998140d31800998f49e523438c76a", +"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "4388b4b2b2fb0a621d268f62a23965f85e285b0d85567a3fb893c6f2ec73b681", +"T2B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "b5f316a2623619368cd0005ddfc8b19da7c1dbeb70b7bedae0d76d5a08baa0c3", +"T2B1_de_test_msg_changepin_t2.py::test_change_pin": "635bdb26120f8d3407e4dbd4cea4fa051852a74e87dea45508359fab310d5195", +"T2B1_de_test_msg_changepin_t2.py::test_remove_pin": "81bf69c4cd4b91c82fa6c77de83f93fe9cfcf60abfb094c08f52c2afb2f4f8ec", "T2B1_de_test_msg_changepin_t2.py::test_set_failed": "7a66af5eaf3ad7fa6a77a65a7962c81da50ac048320681727b9a9ae397b7d9bd", -"T2B1_de_test_msg_changepin_t2.py::test_set_pin": "dee45ffb5576a68f97495b1042ee188359445440fd01ec1bb2e6c8262479ff7b", +"T2B1_de_test_msg_changepin_t2.py::test_set_pin": "88015bc1ec48ca150fc3a04858e1c14f4c8665e8035641b18fec9aa0370e5eef", "T2B1_de_test_msg_loaddevice.py::test_load_device_1": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_2": "5c5647afdc3cdbc18edd15d1bd6c2f2a9d2df4fd0eb8c9f47b9542f8fdc4e571", +"T2B1_de_test_msg_loaddevice.py::test_load_device_2": "f0d18157b9bd2f128e7b07cee70a199a40c178fc0b2f2bb943de4fd31d1890f2", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "c118e2897c98c6bd3cf990e11fdfc0973b021fa221e3a4065cca8af26a057b5d", +"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "b47fb11fbacd6adc6efd59869aa1757113f0229caf29036eb488cc5b4a1ca751", "T2B1_de_test_msg_ping.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", -"T2B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "e26df73450bc2a06d48cbb70dd53135d1087a81fe8a13427205a771022aec115", -"T2B1_de_test_msg_wipedevice.py::test_wipe_device": "fb5b17f7f35230b2fbe04cb96bbc7ac3d768b35926f35615e8efce5ad6f7f14d", +"T2B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "b892f54b08ed97cbe0e572d4a9adfb979a61ada492278987a93c3917c5282609", +"T2B1_de_test_msg_wipedevice.py::test_wipe_device": "83b61032ca87fecd27e115b4938301f42bd347eaac440be5490beecd6242ba8c", "T2B1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", "T2B1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", "T2B1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", "T2B1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", "T2B1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", -"T2B1_de_test_pin.py::test_correct_pin": "cf69ebce7c41eda310a18d68605260a5683eca79d2f3b2c651f460c562285cc0", -"T2B1_de_test_pin.py::test_exponential_backoff_t2": "2fc09c906ba594d57de29edff17dd87d5047b4b6e0a5e409bc6cda70f0ab9e7a", -"T2B1_de_test_pin.py::test_incorrect_pin_t2": "df4410c603bf23d4d1baeeb0939f40130b6bc909827c1add3d3225f47de466a9", +"T2B1_de_test_pin.py::test_correct_pin": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T2B1_de_test_pin.py::test_exponential_backoff_t2": "f4ccf6b551635808fad033136f25118d322d87628c47e33456fb63cdfd397ac4", +"T2B1_de_test_pin.py::test_incorrect_pin_t2": "08b8b915db87fb4c0d7b2e2687d67c90257ab5e8aada6165af2bbda52023c065", "T2B1_de_test_pin.py::test_no_protection": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_protection_levels.py::test_apply_settings": "475a8312c3da6bd91e5323bdcc2777e6933d5a392e8a6379c07ae3c0b5a19fe1", -"T2B1_de_test_protection_levels.py::test_change_pin_t2": "ecd1246b80ac42dc9fa40f3cbf227db4377a09d259ef9f796d21e28f99fb131e", -"T2B1_de_test_protection_levels.py::test_get_address": "13ed15a5a6697efbc4b48f0821c0d6ef900f502c49f01199c28ce4eede965a9b", -"T2B1_de_test_protection_levels.py::test_get_entropy": "e63614f7ded0befa3747f831bc6d472e92b8850b782b0c024b24365350311531", -"T2B1_de_test_protection_levels.py::test_get_public_key": "13ed15a5a6697efbc4b48f0821c0d6ef900f502c49f01199c28ce4eede965a9b", -"T2B1_de_test_protection_levels.py::test_initialize": "d817d3ca55c2b73840b43430f662aa3c821e33171591d7c3ea7eb0d7f2f4b0e3", +"T2B1_de_test_protection_levels.py::test_apply_settings": "9ae0261981e6dd35140eaea5a10b603e3852f52f997b3d539046adf5629aceaf", +"T2B1_de_test_protection_levels.py::test_change_pin_t2": "968d69e5d4d3b7e2de44c61d1bf436a1a6261de4b4a3058ce90803baec3fe702", +"T2B1_de_test_protection_levels.py::test_get_address": "117b63c5b3406c99f1a50ca45ee58367ed39f663ecba5e742cd84ba1bd12d574", +"T2B1_de_test_protection_levels.py::test_get_entropy": "65c3baa1d91e695ebb67eebe5931c36b751ae14799d3ed343ecda57ff1373b92", +"T2B1_de_test_protection_levels.py::test_get_public_key": "117b63c5b3406c99f1a50ca45ee58367ed39f663ecba5e742cd84ba1bd12d574", +"T2B1_de_test_protection_levels.py::test_initialize": "72fc50e73e66647d38d60f1d44990f7ab2748faf5ccada4704ca84ff8b928c2e", "T2B1_de_test_protection_levels.py::test_passphrase_cached": "d2467c07fd34ffad1ff6c5887af6ed74bde2ac95953e290c1ca1a7bcf22abfc8", -"T2B1_de_test_protection_levels.py::test_passphrase_reporting[False]": "dba499e21d0e05b5ab9916898513a212ddb77c6c15b3e60bd215d8ece59cd450", -"T2B1_de_test_protection_levels.py::test_passphrase_reporting[True]": "86b129f6fac4a3a753f68a47f66ae4c47cfc0e16093cb247df583701b8af5e85", +"T2B1_de_test_protection_levels.py::test_passphrase_reporting[False]": "e83fc2d7c868e1e2b6a01b1bffe12e78014b9b6557b95322fc389a3d05bd9d04", +"T2B1_de_test_protection_levels.py::test_passphrase_reporting[True]": "13edb97ece24ad1df6a4cf3cc0ba20af8cd88b2c85345149598621390f0014b6", "T2B1_de_test_protection_levels.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", -"T2B1_de_test_protection_levels.py::test_sign_message": "4069c15b088d65cb78f37d63cacf9990283952f69806449fcee44c40f06610e8", -"T2B1_de_test_protection_levels.py::test_signtx": "e08859fe0ddda96cfa0b44027a6d17ca082c7fb5a351745db37b620c6def4f9e", -"T2B1_de_test_protection_levels.py::test_unlocked": "2411bb3cf12d9f10cd0e6591218d8636d43b005b5836faf651b6854f90ab39a3", -"T2B1_de_test_protection_levels.py::test_verify_message_t2": "5a32a46a25ea8478ebc0c1e0ba1a419175f27c3e5bd42026b56e87fa959b7cfc", -"T2B1_de_test_protection_levels.py::test_wipe_device": "391742f30ca6f4e65a530f4bab95c26c415740f95ffd25ee6a692f038fb87da0", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "e6047b051e5e5ca9b2119a3dc66cf85fbc334c3b78227134bdfca3d3ab1f610e", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "18eb36995db074748e05f4ac24b737a5c9f52f910c249b25bc83d6d2506a7cb6", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "46bae34afd7b208a07077b261a2fa6b165505e098b99951ba66a2de6084b8a0f", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "5d9282a8f63c7009d003cdd2ce38278d9b0d4130adb221392cf8c718d700e489", +"T2B1_de_test_protection_levels.py::test_sign_message": "ad9a5932f14553099eefb81efb2174607aa800a1f0a7da5c25ccd9d7cc3bf6db", +"T2B1_de_test_protection_levels.py::test_signtx": "4109e4b91b6a09d58029f1c4d6baed24d25fa7d1a35f9195f39af1fe172e7cf8", +"T2B1_de_test_protection_levels.py::test_unlocked": "c37426e06d6301c72c1f2110ea040b92ca1eb5190055696d14be2730fea13013", +"T2B1_de_test_protection_levels.py::test_verify_message_t2": "ed21d6e6e9faf5746a845dd7e506b0f8cb1a854bf279adf0c8e1f0101cbf3554", +"T2B1_de_test_protection_levels.py::test_wipe_device": "a9a44ce394801cbd06c6f4394fc0fb2e32bbcee9e165168f475c7317987d926f", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "ab53bcee65220ff380eca54f99ebdaf2619af3f1b8061ae5b3c2008ce00dac62", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "4836c674b8992e65f8aff0ffd7c193dcd3d1c5281fd769adc724587416da6fa2", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6eeb94829e05211f2ab5a6ac56111afefd1772848b7b588c61c08648d8eb9f9d", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "adb22bb54fc2ba127e6f32f7e75541b85af3babe23155ba7c7df9d35f32861fa", "T2B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session.py::test_clear_session": "31f023585471579ef3b4db1c362b4455238ec96494ee23606d248a3faa83132f", +"T2B1_de_test_session.py::test_clear_session": "3063aa83a1e4c5de6b8e69367809eb1f05863068856dcceeec4ad9410b5c798f", "T2B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_derive_cardano_running_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_end_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -3711,8 +3711,8 @@ "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "a96bebc82d5aff9c6a8583ddb354e6427689a3be4fddf082c3cd0e8722e54d46", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "4c2bba305bab30de2fcff0cec5ab1192f2e4d826d86f91f7172dfa624f5f3139", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5f70b535406a6254113ed2a5f780ba98b8205abf6425eb7038d22395953aa560", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ad427c4abd092292854407bed36be56dbc18569a0a70841cc22c57c3fab3a96d", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ad427c4abd092292854407bed36be56dbc18569a0a70841cc22c57c3fab3a96d", +"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5ba615e3331c3ed67e41a569862c4adb02f324d0e8d406fa89eaa12625ad0d13", +"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5ba615e3331c3ed67e41a569862c4adb02f324d0e8d406fa89eaa12625ad0d13", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4f275de439c812363140d3839ebddd9243e2bb34d80d02a487361148b2bbab71", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "64fb8501fd5c522084222d12a008938b44051131452af9efa5d354246a43a3b0", "T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a005bb59161fccac967b138bb4113b8e46163b45869b51d526d5ac004aa86d5b", @@ -4700,57 +4700,57 @@ "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "a54b2b5eabb5251ade0fe4f5f88a671947eb103452883aebbaa7e52b0adb9615", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "212986bf1794bf13cac510ae1313e920fa60563c705d0d0213a9ce443b64a0b0", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "47637f942a4e57cf549c7adcc925e97bab0bd886d3800fee052b821c2ea136b3", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "4b80c4d49c18129ba59b3e8927d56440f624571f501ff478e4a4ada6fa27b3e6", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "11fe0e3365499994c3fd51d8478f0a2feee90daf5a449b5b0e664e99cff3174c", +"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "440a3ee20ecbcf54751182bb7094793bbab3d96df594b32908ddb312cb42c8bf", "T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "9f47099931f6bb9e3cee4f34f8bfc84045b6ed308f92912e9004cc9a8dbe77b2", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "777b2298ca40e7ec3e084af039bf8a72335c485b58bb30d436ae71f6dabfbad2", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "25a43631737a84c47d6460c42b33e39039675ece2e79bec6151b5f06603bfc31", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "006965b46b36256faa8500e37e1db895875716c2ccf0311faa9e8cd1c68d8d10", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "0e8045db0d731498f55564b4c53efbe708c5da47059320871df095ce35da08ca", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "44fa73f78794001f8235054123b01a007d8fa270ab28ca51488023f7c1d8e564", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0155ae2f56d48e51ecbc1ac546582fcf63a1534e4917e3a2b8be6da5e0e8e0aa", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "16272aaf3c56f23bc5c452adc1ff1beaa7e8b911a622d2021dbc1faa9555e481", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d5396ed4bd9c967ddcea02ec795f59565536a9fac7c8d8fb6608ef46731c3c5b", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "16272aaf3c56f23bc5c452adc1ff1beaa7e8b911a622d2021dbc1faa9555e481", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "d5396ed4bd9c967ddcea02ec795f59565536a9fac7c8d8fb6608ef46731c3c5b", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "d4defa2ce5b065364bce0148a7187b5e4bac655db8d155cd3042bc849b0d0877", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c61f27776b900128c0c881c641c306475d031d3f8125a50102e8d34d1c3e3977", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2e21c6bfbc2fb4eef7013fae964adabfeb4cd1e00d50fd85e9d2705dd94a0b67", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "25a43631737a84c47d6460c42b33e39039675ece2e79bec6151b5f06603bfc31", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "145e14c07f2ff047deee5f114b25d85539da9dd4bced167851d79b107f584a93", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4ba17452978d2e4948ba5daae060aa8f2d44d83b2d21d97dae7e38626a6cf7c3", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b3f7d9c18ff93a0ae21491028c01ec9d04179f9d82023e6bf5ff56f87bdaf344", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "69eefcbddcf30cbfbc1f26e4729d8f50edfd9b19cc1acc604d10630ed28053d4", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "bd9c2240058288de1dd34a29769ed5fa780413d67de71c66e94d010540239af4", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3ca18041002e9f760b385187465a3245466a99f9f6a73a5948eac5af36f20a65", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "95e02f1f7b35a9055535c6c3ab1b27b6aa4a88b28a6a97a44921f1d9c772fba1", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "79534fc91b0e6258da19eebc62e1420e3fe35d909bda03dd5c1d67f269959606", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7223468fa3f2773421ee0268eb9d1651371c1317dfd32e0977a247745ae7df3a", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "2c1611773f8e627cf272167a9046fb29dd7530b5e674d35f56792625cb20479f", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2aa9e29475844be152baa54bd16a8261b4a71e3fc9f6c2730f569fa0f7254f5f", -"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a0de43548db0b3ddcc01acf62384669ad6fd531167cdbff37adbb7a7d70d9ba4", -"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "92c1f15564ca8db7a5ebbe7c0f1ef514ce36f23a42c047078eb6956ab79344dd", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fc80344ab3289aa36efff072e94f95cba07ce11761c8daf7ff8da587902e61e0", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "8ea99a6a11498bfc3112fa0b187f628177064c65659c989cf3fd30f2470d70ec", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f47105387bb0fbe56fbc4a0186a56ad0b7bbf2575eda0323267c965170c2614c", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "ffa9cec4630e245fdeb525f57241ff9f1ac4731f3aefb305ecdd0a93ef0ed292", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "40105066acff9f5737049bfa9a1f99c69be2b7bcc896944bbb6064992b581207", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "298d18f2bf3da5f203f5b512e272b4601c16f13fef1b02d30fb1ac8d40a2825e", +"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ebf4e6c074fb6662b822059dcb6c12c6cd9ef63ef75f4ae8b7aa70329e92f9bf", +"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e39ad28c9f2ef69d14aaab827d06766a9ff4b71d6705a6e698e682ae6e515b3e", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e0844d255947779308662723f63f5e43d3670058c4bc4b923b63becf1eeda3db", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "b19eafae4aa68855bff9ea279f12b36773478e540af4b1718c4cee4b80880c53", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e1629f73fca6bf4faeb0f175e5c072f272b20159c3c00453c98ef7f978e57843", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dba6d6ff9b3be8173c92abfbf113ca1d5d34f4ba79431113042152e4b1d737a7", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7df18bda73519748157740b9cd0a614f27137573eefe9c4ff13f691bccfee4c9", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3bbf584dd24c429baa84103759d2f4e3fd1ebab4a991610c98bddd4f78849238", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b7290130812d89e3315c954d30e7b44713d28a7b11eb9ff4b8ee37f5bad06e01", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3bbf584dd24c429baa84103759d2f4e3fd1ebab4a991610c98bddd4f78849238", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b7290130812d89e3315c954d30e7b44713d28a7b11eb9ff4b8ee37f5bad06e01", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a1cba042d63d7cecba3c001d15ad8d22dd0cae0d859c396fb3eed465925f914b", +"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "5bab31d37f412874570b376d49ed23869f9ebc16dc46840be63a4efb8de960fc", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "77f8fcb1d2eac768969de855dbf2c49097c353224be8ddf531b412f641922730", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e0844d255947779308662723f63f5e43d3670058c4bc4b923b63becf1eeda3db", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "43dc93150091f8158a0f09444bc7cbdab6ebb5a42975544f3de5ca60213dc065", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "45b5eb820d6ea5682a0627335840d6c7be41f45787ad3f1ed5fb13868b5f7c6d", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3267f5d7334570b22a5113b911a0bd118a44281dd1a30b1fad6ba87060a82431", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "30b012a6849df2c407121e5e8d8582c3ddb85e2a9b4e592821d7cb2c3103e4c0", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7181e6aa3191da7eae35232dcac6f6d20c5814311f70eee496aacc73b37c9681", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2086f55ad3a0819542dd1f9bbeae57bca92d9e6729e4d62fc52b4c7cf65d5a4c", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9b91282d3bfe74458762264acc9dc3e1e76fdb1d9a815932cac2c550eb5a7785", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "bdc9467bf7c51c17b035e0c885caf0a8fa14de0f1adab169c325391ce62ad398", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "92e96e9ac08681f19324fb53438670c92a3a22530c45c680848d9e07b284fb9d", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "399d17dd98d78d3f09a0ca202664d0b671870f3c96c39623ec15da1be7db171d", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0b67fb6cefbf9588d21cb03e131c19897b9895903f6e1426f83ed1f8b445f8a4", +"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "3f7888a399358b24c7db8b30f090b9139f82a4f3a570c6f4f936d9d04c829721", +"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "d489ecf703b8ca54ab957eb845413d72d4ccb023d73dc6b453b462c97ccc8b32", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a0784036e9daba27985ec8c6e03b94c64470398676f07d9451ea0a62a39fa448", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "29ec1912b45e476cb21763ac9373dae2210c1164f59431a2ad648495fbeefeb5", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "32eb349771a9f5c8fd63674391c8d46bde5079e5dc3638db4a2620302e3f7b18", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "2bc645f778f0ebcfcb72abee52a53b2d83b9c0c16d7dd7b0fef63e195562b3f1", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "78cdb520f48d6beb61e88e0d8cb4d0920250cc85bda2eb3cef0c3e4c37eaef9f", +"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b9f625fb5e5271ab60d6086fa3f1b994fb01ebe76f7be7555328d490b719c280", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f0b64276a6b56488409182ef534ec857222a89fd5839b302f8e0909e5e59bf01", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8ddb89393af071f6c6a3c01fd7fa2c6f1f60e45f9231e004e155a058ae89fcee", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b9e1ac1393e9e8f127c53c0f30ec116e4b1ee538cf11b17bd0143b7302358a0e", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2dd94ead858ba3754b84984c16ef1f917efecb8cf83219dde68c26a6f27bae35", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f57209fc53d5bb0bf639a88f69b6d47f884e94892c2958114074c41d6d7975d2", -"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e91280e603e2723403ae0c63a9becba80168dffa074d2217b47976107d3a6cac", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "68934193263b621e35e295681872c400e4c46dfa28328755fdeeb98b7608e8ca", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d9e4db01b4929c7c607a8a022e24d7a726bfc903567786cf75ab0fb21d9b1b8a", -"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7060ef8cfe85c5d5ae25af3506dfe3b104dc503dcc800186e2ae6baa5585e4de", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a8373dab1a36a7b9d61623e9f10edbc44f40db75d6f1b75cf2e2e048fdd04c8e", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "66f9032e1206419433c5728a0c07e39ece72f23018ed79a4f264acf8faf62915", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "061927456f5d16fcaa71d68793f7440d16f9f208d430a62f83e8388b69ab7dd7", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8efd6bdb4186a209c8ee6b3989d19b8cbab00de69faabd82785fafdb519cb178", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "1b882977322631d60dda1d7500a3cc070d0e0b1c407db1533d676a93dc20d9cc", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "09272fa08921ca6761ab8adb78558f643a0d447130af93cf163e63c1cb9c1c8c", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "10c8a8c9e19f6171ec14cddd9f93731a79a75cd8649a87fdb700cf7e57f7a285", +"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "787c9dd005bc2a80e79f777e5c0397d57f0eca685c1cf5bed44d4800c82a7fe7", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7307234c817ddc4815b705f3128a9c7d5793b437546a2718af8b6ff30bb5a33a", +"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ce17027142be256ec78f921242e67cba054b10e452e01192d6556c92cf628d44", +"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9cac3f9a21c6ebf519eb12358bd0b4f051c5a85fc65371e755b55e4d0d9a6474", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "44104e27f278734e9e276ee4b8fa27adc63016da91af6be11dab14a84f0042f9", +"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "74a3c42e2ce8f25ad1c7e81f37a3477cf1d376802f19273260e09f4b64cbe99f", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", "T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", @@ -4892,35 +4892,35 @@ "T2B1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", "T2B1_en_test_authenticate_device.py::test_authenticate_device[]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", "T2B1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay": "80caf62dce3a352a5be2bdf5d44760fe6f6b694ab81a2c02a465b4e4d4d3eb77", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "408ecad83747a000b39e8dc0479b9fc77f34eda51ba0115b9fbd606f47835b48", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "9607621b8f408f594c44f2b83c24528c07a5333d2c25e18e33a1ab74e1010ef5", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8d92ed3715e42c2bd5fa652ee5e0d839724b48caf737484fc5a9b47d322b5dc6", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "9a2a9666400b101ee13aad8d69d841bf1e4131d99b5d8e211d18cdf2c7bb9381", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8c15fb4ac5228e8f6db7bbb124b1d21b0f26452443cc68e655425f28c5332048", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "dfb8953ac99dac98122b900a38aca30cc3407db01108f42b4f9dd0c281580b91", -"T2B1_en_test_autolock.py::test_autolock_cancels_ui": "6f30232a3563aaf074b713777493f0a1ff1ceaf4f6c3b400f625e59a3d8b407e", -"T2B1_en_test_autolock.py::test_autolock_default_value": "24645662c5cef489504f808177229c5d95318e0463bedb0a3a985ab5352468dc", -"T2B1_en_test_autolock.py::test_autolock_ignores_getaddress": "94a673141990f188d83def4d70ac53cdcf30d14be7df69062a38befec5bb2f11", -"T2B1_en_test_autolock.py::test_autolock_ignores_initialize": "94a673141990f188d83def4d70ac53cdcf30d14be7df69062a38befec5bb2f11", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay": "c01e9f80e38f4ea59a1728998228c16db2a6a0cbafb5611faceac79c11096e2d", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "173088c6b06b1d100a25cdbf367e8428eb2bff09d6bc31d322b4f88a851f0980", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "c38edd6c9d73d7df1bccc7912d992cf487013d632ee36cdc77dfff528cdd87c3", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "f62192e0b67b20e7a40113b9825dd2505e9657cca3b7b17a1b629f5d5280dd56", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "e3917dddaf58f990417501fea03a5fa4e84923477468f917a0e94f536fd4683b", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "55a92aaebe26687b202170e278f9fcc3370621a71285ec6934a2a8d73778b0c5", +"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a753542b62e6de6f2f1771376f76c8687fbe1ddfcadb46af961eb94e560a6b4d", +"T2B1_en_test_autolock.py::test_autolock_cancels_ui": "0b49d16c09192bf232a92fc8017b0b490f29868a376d3e9336dd1d87e4e57f20", +"T2B1_en_test_autolock.py::test_autolock_default_value": "d820e3109ff5593c4c3bf1cdc04644ec5748da2e05d073298cc344d4ae10095b", +"T2B1_en_test_autolock.py::test_autolock_ignores_getaddress": "3a3f89eb30da49f947ed43ff716e1dbdd209ea0dfd324883b048c4432b09fdf1", +"T2B1_en_test_autolock.py::test_autolock_ignores_initialize": "3a3f89eb30da49f947ed43ff716e1dbdd209ea0dfd324883b048c4432b09fdf1", "T2B1_en_test_basic.py::test_capabilities": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_basic.py::test_device_id_different": "24cbf3dc4bab039784125fddd81852cb7791d1162ae77f5f501488be16cb503f", +"T2B1_en_test_basic.py::test_device_id_different": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", "T2B1_en_test_basic.py::test_device_id_same": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_basic.py::test_features": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_basic.py::test_ping": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_busy_state.py::test_busy_expiry": "0cff54da20c3c70d5b5de75a45fc265b29683fe322ad498f947656118691eeca", -"T2B1_en_test_busy_state.py::test_busy_state": "17b8ec3402de11b18a4258dd9bd1d8604ce06fceb280c0876cac6ebba2a374c9", +"T2B1_en_test_busy_state.py::test_busy_state": "2fbbd138da64bd6e0e3788b22e7cedff8c6f10b76dcdf6aa089d1f8f0caa19a9", "T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", "T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", "T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", "T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", "T2B1_en_test_cancel.py::test_cancel_on_paginated": "3091ac71ff4b66b9f0182122cf29539eb424609570cf4c8ee720f8eab5ca3b83", -"T2B1_en_test_debuglink.py::test_softlock_instability": "064d1b62454e05d9f222c5d74190317040ac9ab4c440f01fe1e73c341a80efcf", +"T2B1_en_test_debuglink.py::test_softlock_instability": "9d918b55629ee90e760f62b1b8b0a972ec7a76858f2221531325193719a9a235", "T2B1_en_test_firmware_hash.py::test_firmware_hash_emu": "07a18c9e52c1a1d865fbe57960ebdafaf1f32a3d426af991469680000cbbe0f4", "T2B1_en_test_firmware_hash.py::test_firmware_hash_hw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_language.py::test_error_invalid_data_hash": "0cb01b8002472dff316d6eb3ba901dffb762d88fdf61e5ef8642ca7772d3e71c", @@ -4935,7 +4935,7 @@ "T2B1_en_test_language.py::test_full_language_change[es]": "94ead6f9d0f308f60ffd135c9bbd5012a30f05b4f44fdb22286ae259bef9e205", "T2B1_en_test_language.py::test_full_language_change[fr]": "2f3a0e8541cc7b96dc983d4de2149e4e2b230b43e1971153ec6bc82e7dadafb8", "T2B1_en_test_language.py::test_header_trailing_data": "b0f85bab7d392d0dc605b67a47ddab802d355f71c6038b44b243990e1f73430d", -"T2B1_en_test_language.py::test_language_is_removed_after_wipe": "8efd518dc4bf57add639b604786ed8036f4c90d033cbd22f4a80494d6f965b06", +"T2B1_en_test_language.py::test_language_is_removed_after_wipe": "e0c233271abb84b2ff487e3e2d8f4f111453cc7315af6e8c4d376dab8a9f0310", "T2B1_en_test_language.py::test_reject_update": "949fb112e684d3fb8a204a8ce15a202ebe9613bd3a453408138b3e54bb42e99a", "T2B1_en_test_language.py::test_silent_first_install[False-False]": "8b4ff15060372f2e8f4a59a8c97bd4afd77b3d57d5268000654d57e676dd7523", "T2B1_en_test_language.py::test_silent_first_install[None-False]": "8b4ff15060372f2e8f4a59a8c97bd4afd77b3d57d5268000654d57e676dd7523", @@ -4945,17 +4945,17 @@ "T2B1_en_test_language.py::test_switch_from_english_not_silent": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_language.py::test_switch_language": "b74085538e1bb7f0217ba5880c41542938ce41ded7e2499b1807c0aaf51d6fc7", "T2B1_en_test_language.py::test_translations_renders_on_screen": "47922d94fd02016582810dea2286605d73f71ae325532daa72d55dc94ba7bb31", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "e27094d0aa2dcf0aed21de9500df795dcda1c0c4c8ee61124fc3369ea21b9cc5", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "e46c4e3e502dcad92ff6795352a2e1c423be352e1a1ed79623fce78e8673d1a1", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "6e8c260e0032be944a2a02caaf3cced43bd2105d501db3a311fdbfbb5e3d6952", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "ab604d0dc62719f65a329e0cd834b076d84b8e6911445d51d4cd77d1cd4f0740", "T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "6629641be9c219175d87a006358d20c8a68e05324c5b8b047ea8fbe884a0c7a4", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_msg_applysettings.py::test_apply_settings": "f6602bba98b193641b36c3cdea8d6ba08c84355e3ae7d773fc287dab14418a6b", -"T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "e5191b2a75d958b7840b35f26922a47c934f683cea76f482b310385d093beca8", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_msg_applysettings.py::test_apply_settings": "e3b7aa4669dd38084a1b4942741e1cee4feb574f9638e56e9c6e2a0a0bbd5174", +"T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "a82a4ab4ca8d905ae55f12474230a72d3a2c6b495af64e659ec6093342b93e29", "T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e595040cd60ac0e5a31a768dcbdb517c5a8ca28e02707ccc35be95a0e516ac95", -"T2B1_en_test_msg_applysettings.py::test_apply_settings_rotation": "fe432af1c83c212161f994eff9c98645d2f0d3f4f33975899bbc5988ef7e22a4", -"T2B1_en_test_msg_applysettings.py::test_experimental_features": "214e3b83ae4f87d937154235e668fff4067fa43b1b18bb6160793b42b9f99408", +"T2B1_en_test_msg_applysettings.py::test_apply_settings_rotation": "360ab2993d6610006f922c54c79ddbc0a5a4d8cadc5333c634db5bce4df6a4ba", +"T2B1_en_test_msg_applysettings.py::test_experimental_features": "36947f290173554568d788c0242a42871fb651587ce653b2f8367bfc818c09a9", "T2B1_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", "T2B1_en_test_msg_backup_device.py::test_backup_bip39": "2c19ff45c8c02dadc065f360af23af8d357dedc066711cdc30c846cfc07a7d4d", @@ -4969,54 +4969,54 @@ "T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", "T2B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", "T2B1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b57199178923c17f83c14ad7cda25a585c48ad5b150d22084d088259d520ddf5", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "27303e475189ba1f2961ddac5a65c09401720c00d27bd4b7d38209621148132a", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ad9871bad4a93df7cbf27bffd1709e539a3408c1b5e3c5bf458e9946a6b43ad0", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e7dbd89723a50e0b5ac4810ab681044f6ae3cf6c203beb346281bd5d8677dff7", "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0dcd5b97efa8a7a18d02eb54ed11ca8ab2de7a892625f1b6579148f9c8d054f4", -"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "9388ece09712591b53fde12e7b2c94fd8d52935d21f46081f86fa2003d7a4933", -"T2B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "1bfec4af35876d04fedb25d70033799bf45d26b81c6dc1709dd57e1004610844", -"T2B1_en_test_msg_changepin_t2.py::test_change_pin": "940efc3d38f48d97a604ea26388e944b237dd539372edf367cfa7ad78bea418f", -"T2B1_en_test_msg_changepin_t2.py::test_remove_pin": "60aa21c2d6b7b8a89dc85dbab02a2d419462c1bcde54dd4dd53a657c561543d6", +"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c5643d2e2f77e32df0d695fa892514bf4f49efe4092314bf3236bfe3f0fcd701", +"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "fa4dfa139d8647362ed0d604a459c338a8a21423660b0f42a086c784cbe98a15", +"T2B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "ac9d4575a3d8b3f04b01c7bc25f7215472e127ed9c0a87cfdab322b69333678c", +"T2B1_en_test_msg_changepin_t2.py::test_change_pin": "25a65cd0be2af30dcbd0b227b939d9a559e7e779b60adcb16a50aff1490ec87e", +"T2B1_en_test_msg_changepin_t2.py::test_remove_pin": "f5dfd810553a41108ec3379e1a7dd74b5e8ef23e0302f8b95cc99fd5152d8009", "T2B1_en_test_msg_changepin_t2.py::test_set_failed": "200c1497e33124deadccd5b84e68616d6d27d03a3613a00055ef733604a12d9d", -"T2B1_en_test_msg_changepin_t2.py::test_set_pin": "1762bb8bf4cc22b94a420396105ce7b9ad6001b65b4c2e88bf228884a5a157ed", +"T2B1_en_test_msg_changepin_t2.py::test_set_pin": "27391983afcf9aa42602b4bf955b4121130ec16ccf4503a078378f4cde4425fd", "T2B1_en_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "946dda0f0f2f8c8463ee29f4c41a25419cfb2945872936f0f349c04fe6220be8", +"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "517f41e66e67614c0c7dc6afbcc4522b819d24cf4f087f3e9d5aa2260ce5b1f5", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "04b32df9703969463ff557b5d876a8b7e97f55e53bd8ba6102501276b413974e", +"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "bc039fcbcf9df7eb2cefa7f9c150ff6f45f7c82b29091a1e827f802e4e41c21d", "T2B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "8654e727e4301a3d95c631e6fae7d022dae3731c4edcb2cbbbf44d05279e036f", -"T2B1_en_test_msg_wipedevice.py::test_wipe_device": "24cbf3dc4bab039784125fddd81852cb7791d1162ae77f5f501488be16cb503f", +"T2B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b90e8e9393e604b4f83d718aada5e0f93bb460af49652b20ce7733b3a2a00ccc", +"T2B1_en_test_msg_wipedevice.py::test_wipe_device": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", "T2B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "977087a6cb4cc7c9e1fceb78f36e6da50bce7f62868e6cb4e534669b713307ae", "T2B1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "977087a6cb4cc7c9e1fceb78f36e6da50bce7f62868e6cb4e534669b713307ae", "T2B1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", "T2B1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", "T2B1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", -"T2B1_en_test_pin.py::test_correct_pin": "10972f76d7d6b64f42602484d31d6ae6c932ee62ff39c57de654c5b5ddf71c75", -"T2B1_en_test_pin.py::test_exponential_backoff_t2": "c0c19d9fd09e8f9f95882a098a6e7c2e7656473d8e07bfff8c3ada78cf3efe31", -"T2B1_en_test_pin.py::test_incorrect_pin_t2": "66a01d2b4e7cb12d4ace6832c96f95c973f92ada3ef542f084d583b96876963b", +"T2B1_en_test_pin.py::test_correct_pin": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T2B1_en_test_pin.py::test_exponential_backoff_t2": "8272d37539ec7f2cb0f5f830ed8587bf22795e776422b657231017909547d8d9", +"T2B1_en_test_pin.py::test_incorrect_pin_t2": "118048abb1aa461c0bdc2224ba21c9bd6ea400926181baf3cf40928d2d4af29a", "T2B1_en_test_pin.py::test_no_protection": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_protection_levels.py::test_apply_settings": "0db00033ac6ef0abac7e7c0281661bf0f1a7bddd6408c8b955c4f97757204cc7", -"T2B1_en_test_protection_levels.py::test_change_pin_t2": "703b09068e85b6179362abe5762293cb41c0fcdcddb815cfa705f8bf698f14e4", -"T2B1_en_test_protection_levels.py::test_get_address": "46381a74de22fade9f3902272b644b2095d1708c98c6b77e5b0cf1470a1d4b67", -"T2B1_en_test_protection_levels.py::test_get_entropy": "224e87c9777cb6fe92a8bff9e3b43519375e8dd968c7ed7045548ff2e9fc81db", -"T2B1_en_test_protection_levels.py::test_get_public_key": "46381a74de22fade9f3902272b644b2095d1708c98c6b77e5b0cf1470a1d4b67", -"T2B1_en_test_protection_levels.py::test_initialize": "3ecf30f726041324f67bc1ee0291491d5d819984750f7109738b839554aa8c21", +"T2B1_en_test_protection_levels.py::test_apply_settings": "3dbee4c40d0015291e517929fed12a171419fca4abb4171be2d26d7971dbcec0", +"T2B1_en_test_protection_levels.py::test_change_pin_t2": "ad655f57c18315e9435937e2ff7032e4126485ccc86ba9b04c9a97ab0bf67505", +"T2B1_en_test_protection_levels.py::test_get_address": "f2e6d0a99075e8bce6214a65666ba8fa075bd70b3cdf35339fc5aedeaa433512", +"T2B1_en_test_protection_levels.py::test_get_entropy": "3703bf4507267a8853962b0aecb9f850e7dfec0e3c63e2766108c31a3b2612d8", +"T2B1_en_test_protection_levels.py::test_get_public_key": "f2e6d0a99075e8bce6214a65666ba8fa075bd70b3cdf35339fc5aedeaa433512", +"T2B1_en_test_protection_levels.py::test_initialize": "6fd28fae1513ab90c8d51ca862a6efb462238bed30725db4feb4b439d021470d", "T2B1_en_test_protection_levels.py::test_passphrase_cached": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", -"T2B1_en_test_protection_levels.py::test_passphrase_reporting[False]": "ef5aad468d4f597795f2fb39ca84a2c19da4a50287996af7d9efd98d5487e2ef", -"T2B1_en_test_protection_levels.py::test_passphrase_reporting[True]": "27dd2772de028beb05480b91c4f190922af82df947a55a4960caf7c18e88a954", +"T2B1_en_test_protection_levels.py::test_passphrase_reporting[False]": "55c41ef798d2ed288edafb144e84ddaf57186064cc4bd4b7e49b9b0a5c7b5f0a", +"T2B1_en_test_protection_levels.py::test_passphrase_reporting[True]": "1d09713ec651cd6ef919e50f12c7014b7089277e32830ae22ce237fd94e47b61", "T2B1_en_test_protection_levels.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_protection_levels.py::test_sign_message": "985ed797de3c6c12bfe5aaaf84e3a92bf1fd4eb4b7686aaa6cff8b16b474eaa6", -"T2B1_en_test_protection_levels.py::test_signtx": "334c4de8a500a7329b5339c55b3171dc3d0cff4b06c1e9aa300d46942eb0f287", -"T2B1_en_test_protection_levels.py::test_unlocked": "259c9cd84cf214a375e96e42c8f9946caa7700f1d232cf9bc6a67c4254295d28", -"T2B1_en_test_protection_levels.py::test_verify_message_t2": "4967babcae13a116c212af5fe8ec97eb79d05ed8a9ff611d6a0b399c6441e597", -"T2B1_en_test_protection_levels.py::test_wipe_device": "d2aea706365ca35980848c193983301b5005f105a370070d0e4669adcd805568", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "9f4af71b632af46b9449787b24f7b7bb9632a80daeabc69de4657b926f640764", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "d7d472e7b8eef30964cb79f8dfafae94c59234bc0b7c6d7246587e2af5df28d0", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f9e3368ca4644b4f4a81100388ca61cfd64470dbd3cb33e1ee793e93685d1e02", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "15fa67577facfefcbc87968876193aed79598068b4fcfaf24cecbef7575bc5cd", +"T2B1_en_test_protection_levels.py::test_sign_message": "130f246044184e687c73c3257c865edc89e93fd333cb278926305af63c51ac94", +"T2B1_en_test_protection_levels.py::test_signtx": "68ba6f88f32111c0e5517f325041f8763ae8ca6a92953e96eb2a68a578c82737", +"T2B1_en_test_protection_levels.py::test_unlocked": "95cba1775050d4d6bf7dc3417eb05f814147d930667feda07f65c22e0c528499", +"T2B1_en_test_protection_levels.py::test_verify_message_t2": "4f225a4839c5d31e527c34a4af320e6ac1cb611ede3018bc0effe14eb43a72b5", +"T2B1_en_test_protection_levels.py::test_wipe_device": "ea9872538ce4f61462eeac4880f9635eebc2bf9220c54ec3e210b773cda55440", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "c3836c45134044d56255ad14ae1d0c980e7a5ce422b6fea3065f4c20f24fecc5", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "9352d7ddb859cddae1917b781a9766890a4eca74d21e21068b3c356563842577", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "dccd21b7361c560ea159b30396567b208437d7d9a5bde0fa559f4631288252de", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "91ccbd13e8f5a928243d93dd8fc4b1c535b900f219d981f6b6a68dec9f861ff7", "T2B1_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_clear_session": "a61ddf876e27a09dea82e968dd6e7174f881b043ccbeab146cf505b769d3e498", +"T2B1_en_test_session.py::test_clear_session": "779c42d2d2c288f8486356395b9bc204fa0ff773f723c6caf4066126e38e531f", "T2B1_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_derive_cardano_running_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_end_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -5079,8 +5079,8 @@ "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "610b680fc768e0ea25d782a3158d904ab55880e347a159460bc520bfdf71770b", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "fce796742f8bdb5d18d9189395a558dcd41a89e8e4e0cf9b425894afc085a7a2", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ab9079b221552a78d899b2ccd2e4a951597781ed31621c8e813d0b7bb2138e09", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "7a13f4522b6044940afa4036a2b1544a7b3809830d8ab4b3effafea3cda9ae5f", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "7a13f4522b6044940afa4036a2b1544a7b3809830d8ab4b3effafea3cda9ae5f", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c91bddf0147d047f4e224e476ce5786718e6d8fc8d8190fae5d0269f9c9fcd0d", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c91bddf0147d047f4e224e476ce5786718e6d8fc8d8190fae5d0269f9c9fcd0d", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "00c53611345581b92df202f11bc1c943857bcdc59500caff6519da95b4b226cb", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "21dbc28353e0e5cc571d5bac605cec888a6e99b78482a1c7a95056db2f3be6a2", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "c46f223715b7919e84b8c20ac59a0b670e7507bbbf30f1c4123dfec3b805f9f3", @@ -6068,57 +6068,57 @@ "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "6418e5583632e3657a016f6b36f6b32cbbc5dbc02ab5d3e90ee3becf35b1afc7", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "2976c1d9fc9cec18a9923f82e88a6b3b297ba29c0ba6a91e3e31ca1472760d2c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "32daa10ca25bd500835ba23fbee44338e16db85c20e26e49ce33ccb82aabd732", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9fe4bdf8116b4c5614cc01adffac6ea9306bc39835424f8aacc076e2cf55abc0", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "41514bec9d83b7ad2f6f483fda9bcc7774625fd4c63fc102b34c406e5e563947", +"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee51472087a7505cbd467e05ab54abbaf0d3dc30c0636542b5ffc9e005737f63", "T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "791c1e5b4cd894dc4713708c589e4e44d1cdb2c5feb06f0840b4f51ef222d4ba", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a57298bd2ad30d7e510a1010e563cbe8e322ed5647cd13181dfbdbeb28e87eee", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "33425970a4e6d9db2e5d031523563db2c5aeed61cdd16c110030b922156808cf", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "b76381538dacbb9c58d685387f9039a644b484e8d7e2e9cfe599f279072b6a6e", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "7e427b4b5d4b50c86672adb0347685d54004ebde4b556f0a495c31c459804616", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "613163f1695c7c826bd59650564f087eb49b43fbb2ce3f65de54dc9056f6ad49", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "67b68cb3edc591308d1759b6cd79d5c501fc7aee9937b04df8310649e01a1c1c", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e2691cff0ce449302d2e8663012b6458e294276fa0fac4ab7ecbfbe73436f782", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1909582b1c8d9dddcfecbfce06705d707e5239373b9bdeeefef337a143814efd", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "e2691cff0ce449302d2e8663012b6458e294276fa0fac4ab7ecbfbe73436f782", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1909582b1c8d9dddcfecbfce06705d707e5239373b9bdeeefef337a143814efd", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "fc305399585c88d83106e997864a536dd5f2b8ea6262c3c9d3a2a291033af839", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "6dd262ef9697c9a2026d3b7fb5ed718e0a67baa31745e6f974d4d9c93bf90ba6", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "b772a9e4e27a9b2fa5faa48e2a289bc3d3ebc068cd4215366bbccb745c5fab21", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "33425970a4e6d9db2e5d031523563db2c5aeed61cdd16c110030b922156808cf", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "eabe73b83f8f381b74eb60c3eef7c382c735be0bc96f59010b9378bd09ade0fc", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "85d3fa8db2269e77218b957f85ab7cacf96b6243a0e4411c58570a8750a3bbd6", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f5d0f51f57cb94cb3cac96e46f1ee1a26ce4cab8d501c666bed035fc48e26e2f", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "09382685f48f43dd6a3238a61f226583a631b1a47c2081e456c8335888af85b7", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b8e0f40e2df8935fd11934d3b421ae0ff0b57f3357e2e32ae04aeca1d260387e", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ef0ac352d95c725856ec3f13855772b8d62f66bfd54a0b65dd03abf18e680b16", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7fa54e0de81bbd0e5659965efe37db4592b5ac012826c5c9012c1eff11e7e005", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "beb3244e9cde0b8035cb4b183bf5e0b1c5cb8112b2e78ea0a18e85f852d98785", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "896ec863e81210979783b40a36f3d022dbb550f50350579e9cd5967ed0550442", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "58fe6cad63c13b2a79dc46c50cd3a708e7b1d2cb74bd97d2fe91125e84448643", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d99bf30713ddb816d2c1a5cc3bfd3c54a927662c2ff35a02593efc2d2ac7ee08", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "4fa4c29b7293698184e63ac61faf108b2a26912b58d2fa7171ac2ba4f8b19540", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "edc995779d5fbf874243bab2777105086dfad8b6f26dee689e87687c14686163", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1bff370c9344e01167a84fa80fc709f6332ad3dcb63d343f996b308a5c9df472", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "5fa5754af89d1955a868de9d8c0f16ac0e81153c9d0e969d9d700f2a3a3c5832", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "090baa600f0694e9d7d6490e5db3648994bb4c7cde24e7e4aa2283ff1207e5a6", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d0ca9bb0621411353855fe72409475273257c06b0b7127cf96547d3d9493775c", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "97b413111841a8f83f5a9a165a4b62908bbb88ee1e9e88f40d8c195574feff4e", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "044b2abd2d72d2c791a4c1de2d5a8a02938c2786e90fc3bb65d00aa62f4c4f0b", +"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "edc6df65fbc5ef8abf7a400394c15d811aef497e0d5c0f8ce36011609d437374", +"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "955260e3de339891efa314f917d1d054155fc7f45a997d0323cfd241ebe2c437", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3e903c575b88b4b2f5b43e9869ddd45f21b12473d9838f6543c50ae641f67c6b", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "70082b4f66aaa3e781dfc54730f3acec4a5ce5d4741985263238b978772c50a9", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "646915efee9a3953c839a24e5e75c18559cdee0cc8eeab9cec394fb63960eccd", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5377f0c9ee9c7847991dd6f116074d900ea5955a6a034989fce241af070b244a", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "9c4f68d86731a5e8f4d6172f5e8cfa50a47f7ada2ab5be8d700b865bf88e2288", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f0e6163f54058a9dbb5162feef74a9aae570b72afad38437350a97951c639ba9", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e0c0aee58b01981062d12394f3fdec5ed8634c9fef6b73097b7f3838b8e1ffff", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f0e6163f54058a9dbb5162feef74a9aae570b72afad38437350a97951c639ba9", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e0c0aee58b01981062d12394f3fdec5ed8634c9fef6b73097b7f3838b8e1ffff", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "ba46e51fe577f6d0fbc1dbc049114a67f7bd392a5608b79491fc516d1b8b00d5", +"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c30299b2541560e7eb65d5806b4ce8debd811bdf899c734ead0b88072d36693d", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f98e90623e44fbb8d8e5c211c5ecde355045392735a6b724648f2a5c879feace", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3e903c575b88b4b2f5b43e9869ddd45f21b12473d9838f6543c50ae641f67c6b", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "d7a09aea890dd9b88c9198708b65e60405f4ea04edaf67a7a0c335a0b8be7a69", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2ee23ce7f9a759675389df3aaa67e3a631a6c779c4e385cb6f10e393ff4d1791", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "bbcb5fe78657625c1c1c5e5301ad62e4ef69a7a5d9d4dd9c061fbd8a5cfafdce", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "89e2c56ef721da18893cebee175de162f50c2a9090847c72390bc374620e2c13", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "bc473ff53de0c39878a95e2110eb1cb0fc0f57789b03c943263d45f166647c1e", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "9671522b9d875910817d77d54a3017a200b08805bfa0de6f0e187ed2527caaf8", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e99ef732b7156f0921c57f05806071421a7b3fac27970983909d00c28b3dfa6e", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "82539dc7241bc09cbb0813c6539d9f9f2dc9e539ff3a88660bcb47b9d06dd3eb", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "623ad6739f1f1e77dec4da28855a00bf2673087f23a54ff67a228882bdaaebe5", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "4b3c61844568d95e5a4644fbf53a6add27f93fcc4fe87e7e68acf5006dbb0b52", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "80ce3e926a7548682286da0751b78d86ca11e994430bd5f0b7eb5edb0ee45ef6", +"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "77a1cc209bfabc294b7d6e4adfd9f9608434fe02c1ecbe8c5f42038b9b8773e2", +"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "711f5d79c5bc54df8c0e5b7ccd2ce6dc074e5b32fbf0f8dd373ff1bc2cc7d047", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "98a065898845a10e7bd3a4b01d035435c80de6b6961f573aa360c79dcf371988", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "22cc16f1dda02723d87a13c9a05ed90b441cf8bd69b74d4c5a7a042b723df3ac", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6c14743b37f9991da49e3245e58c3d21e47214a291f580fd4c9fd23ba5e72ddc", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "2c69b63e0fbd419bdc21e32d83111cdf3f688edc17ec08825b66b52ab8bd8df7", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "e9165f0ed720012195e90b6b75262cf2882f75378aca5039de249fbcc4ba0dfa", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a09b5cf2960e0ec31dc0f7b6a76a328fafe8f3632b48d115a15a860a3e8a5bc1", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "51f445ee6553df3ef8fd3969bce0d0a9b8b5f3a5d92e69092380beb148471da7", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "e46a148d1e84c7553a1bb83adee407459c204acecb218ffc75b4f489d15d39bd", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b53b585bc70ffec49f03ed766eeaec8db9b10f4da338403b7a5941c30a24801c", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c009bdc913b187a4c85060a1331ff1511eeba893c0e655c89dab80be93d0d445", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "9eb9c35eccaa3d1223a4fa40c41ff4f8d11215e7946209bf39df5d9c0603923f", -"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e1fa22eede00bb2720cd63652eb96d8f62f5cecf6274ae6606136c547917a23e", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f53f545446f38135630884823fd7952b5d4ac0ddbb1a08fa8f84cc26a54c152d", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7ee7e023a01ffb49420232ddac953708028db77fa1070a6de7043502fd8f2c89", -"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d04340a37e7a8a4ef13197d56446620e67515607a4043e12f7811a42a916177d", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "7d37dddfab8492f02afe004fa629afa4f5fb9f77fc8f581fb8e2e54772e072de", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6788142ede4ce7de363b3ee4e2204d2f9835034776954b21158956cef72c669c", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "766d59d9a5f4a38a71dc0306c423b71d53d33379f35cc5480ccfd7ccf0a7f8bd", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f3447d4144658b78e75bd6e31c0bf581f3435bcd953b904a7aed5409243258f9", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "243391c3593f54cd2740227060d51196a3f17991e84233d9967d94216a94ab87", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "50ecbf05185ece92d5461d1d5d5e03441a72227373baa628a177989829551da9", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8ddb89b1eca618eca3579db0cf069ddc06ffac192adf34cb266481a0e1a0a05b", +"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8112116fd87ecbaa9c9af2a09c02fd23f31f52d4a55639717c42050044a27dbe", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a47d76a93e9cbe1c0247e8fb480c316fe351eecbf547f51742cd81bce871e8d0", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d3738b86544918395b9654bce66d68bccfab779d83207d6e9472e9181fe8ed55", +"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ca314c6f7abd968e7a57f9dcd168a0ce5d950ef92867cb6afc4feaeca2404ca5", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d5829507722cb593fff67185c15b2f64d169c90d80155e79e5958c0732f7e0de", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "5f827dd23f9a7138259af994475c7e291e8fe536bb6fd9357029a5c16737e52e", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "78f919438ef71fa5fc80c7ef7f9d3eda33473aec868c69691995bb7532105360", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6582438e0b80f97108f7f2cd7caf92721afe2fba6bc31513280d840d3c0bb522", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2eb70fa9f5f3acc615ee2594ca083e48e273c0406f18500690982f2b1b5d7dc1", @@ -6260,35 +6260,35 @@ "T2B1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", "T2B1_es_test_authenticate_device.py::test_authenticate_device[]": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", "T2B1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay": "aaf0c0ecce0df61b04b668a541e8bf2eddabd8ebceb12e010a6a34bc03a31b07", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "842d93f084df7570fb637f3a23b73810d55b75a2526f7aef19519fbfc5378a86", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "529274a3313100fb37d443cc291fe5665f2c08101efa6ba2db73d1d7e0653046", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "4235bbee97ead3b25bbd895e2ca37f0d2fdbcfd0eee6d2e93258d0b6732b1142", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2a370512af05265553647cdbdea4d0d6828b397abab0ee1f3e192a72e9d8ef9b", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "6c3158acf1ca35bd3a3d24f7087889f8780941e4d6b2771347e9c409a3876d10", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8daa3dc9cea371e20b7c5c20e6d01960fb551d0f75cc43fca9bd13770deb86e4", -"T2B1_es_test_autolock.py::test_autolock_cancels_ui": "564a370102ca32c9e5e022cc58f44d29e5fb6ddfc6053f82107412fe51cc1f02", -"T2B1_es_test_autolock.py::test_autolock_default_value": "1b7971ead1d21fe50e97c3e4891052b7b554801f9dfa3296df266445208b55e3", -"T2B1_es_test_autolock.py::test_autolock_ignores_getaddress": "d9cffaba768ef6f87700069372b562b5d9bb59a6e3970924cf7233e0341af7fd", -"T2B1_es_test_autolock.py::test_autolock_ignores_initialize": "d9cffaba768ef6f87700069372b562b5d9bb59a6e3970924cf7233e0341af7fd", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay": "3da524733e52572694837621a0f19c11d0f1eb8507ad5c66ddd2442e592c0a6e", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "3e2055de31f53e9aa1ce43bdfb8d2b6f2d1d4b6fa83d940b27b59cc1aa405878", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "e3c160bf62f0bf5c0fdef3b465dce667040bd87b1b7b09d9d850f22496e60ddb", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5ade50e1e84c609db8ec4e908094628b2ff917130a64a43388d0f5fe4a686ea9", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "28dfe89e9410bff59c6601f0953c641f22c456d778a96ff6cda217068ba21280", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8cea3faa7881bbf309976a6cd66a2429ae701fcadb4cf0ba1993c5fe0b38c628", +"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "806791395276a2e0c94de8d0e677723e167d8cb13d7c105cce7c0e3a98d544a8", +"T2B1_es_test_autolock.py::test_autolock_cancels_ui": "fd8d2bcdd54b02879f3f1898b614491e7a21febc56741e0389d2fb43ad1e4ab1", +"T2B1_es_test_autolock.py::test_autolock_default_value": "6692f118159692173a8cc0edbb0e858a02b354d87642b63ba8d861d52626c8dc", +"T2B1_es_test_autolock.py::test_autolock_ignores_getaddress": "c06c2c58cb2a50cc38f749b1747654b6ae6581bc3a7bd74e32446c145562ebd1", +"T2B1_es_test_autolock.py::test_autolock_ignores_initialize": "c06c2c58cb2a50cc38f749b1747654b6ae6581bc3a7bd74e32446c145562ebd1", "T2B1_es_test_basic.py::test_capabilities": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_basic.py::test_device_id_different": "f8a96440ba8a97b504fe8b325bd2a0099d59b289fe741690b8db313876df87f3", +"T2B1_es_test_basic.py::test_device_id_different": "946157d3de0e8da4e891538057f266fb3da9caf5fee193b268f4c1c629663e3f", "T2B1_es_test_basic.py::test_device_id_same": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_basic.py::test_features": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_basic.py::test_ping": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_busy_state.py::test_busy_expiry": "c550a9bbdc796a989d6e46a699b8e138c1b87aef7761dbad49ce4977bff27f26", -"T2B1_es_test_busy_state.py::test_busy_state": "f3fa2e344bea56a698fe31391048667ea0785bc968a2ffb3ddf632507c3fa798", +"T2B1_es_test_busy_state.py::test_busy_state": "1ef0f84e9a11dd22b6d94af2eb21afd6d76299aa4a61c3a0bdfae57a8ca655e5", "T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", "T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", "T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", "T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", "T2B1_es_test_cancel.py::test_cancel_on_paginated": "805b975be8d70b88749f35aeabb809759dfbb81b031c2a0f67d6645b825d09cc", -"T2B1_es_test_debuglink.py::test_softlock_instability": "b4291af4c9035a1834a60f945ad4e73bd9fa1a13c57725b2d4aeb8a1d52e76c8", +"T2B1_es_test_debuglink.py::test_softlock_instability": "3bf79e2984e21a59b663008802f7896b65fb4ad45ec452776af7600b5202408e", "T2B1_es_test_firmware_hash.py::test_firmware_hash_emu": "9d58ce887cde18e51f4df0c52ac8697481866bf4ee27260207925ce6c8e148bf", "T2B1_es_test_firmware_hash.py::test_firmware_hash_hw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_language.py::test_error_invalid_data_hash": "1e4a266ea51d55976cf4a1f8655e58629092b617c9d36e0603a5081961130564", @@ -6303,7 +6303,7 @@ "T2B1_es_test_language.py::test_full_language_change[es]": "51aee9f7f7e76839471274c909bcdd2c117e3fe6d9ca634ef71f1209dcb2271a", "T2B1_es_test_language.py::test_full_language_change[fr]": "0f7df785e611deec165dcce914efbabb497cba640795c8b90f396c223af7f3f0", "T2B1_es_test_language.py::test_header_trailing_data": "112c52b046074513671e25a0c27fb8e1e52c94d403be29e68890afbaeb7b5fda", -"T2B1_es_test_language.py::test_language_is_removed_after_wipe": "65d12ae6cec9082b534f859708ca9f71ca2fc3161185aa1a8d00bd5952358daa", +"T2B1_es_test_language.py::test_language_is_removed_after_wipe": "02719a4556b8fd9f6f59e0f9bb0fad899c5faa42700e76c464d51282f6e441ae", "T2B1_es_test_language.py::test_reject_update": "72b5cc4bb1d3a1024ef5348356565e711392fc379afee08a9d4275b7d627c213", "T2B1_es_test_language.py::test_silent_first_install[False-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", "T2B1_es_test_language.py::test_silent_first_install[None-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", @@ -6313,17 +6313,17 @@ "T2B1_es_test_language.py::test_switch_from_english_not_silent": "a9b0e47be4dac0a6e99582439a6225527e8e365b7e74cca03892675853b1a152", "T2B1_es_test_language.py::test_switch_language": "26c80e43afd26df2a04f55e21c44c36cf8bbb9c4f5ee3012ee7a4a5f8e2313c7", "T2B1_es_test_language.py::test_translations_renders_on_screen": "7f3f39ddad3967195db73c2609822dced686f8fc8efe77c72c5606b840b17231", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "05d1fa08b413e81a2466285c59eb37bf9ac9c56cbb3c36cca6261b465fad449e", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "2756046c76d02f4adcff4a2807d26cd8cc27f6fed3a753ca48f91e4da4e7664b", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "8c5dde884bfa43f6864395efb2bda262bcbbbaa45954ef161606c8291cad1c02", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "6f7b308b737e74cd621d9b61c603e951d53137747594963ec8ff1f5cf9c51dd3", "T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "9a453e964eeeb279c1f11855a380a1b44399e2726f8f29aedb7ab44fc4878950", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_msg_applysettings.py::test_apply_settings": "3cd7fd7bac824ba86513f394f0cb5e802b12323b426d59c5588f1fd3f59d8d33", -"T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "c394de0f80cd00a4519f77597146940ac8dd404c49d11e9f6634b212c6fd8e2d", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_msg_applysettings.py::test_apply_settings": "c3d2c02c606622db744fcac1d3b4406fc7bc3e76fba9d2a865c569ba3adb8a8b", +"T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "c6e94451b965156345f769253593f902192e8cb4cda4d0ac4cff086fb147fd26", "T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "130cdc99035708d25d7bfde37f8cfef972acf0e1ad4628db33b5f7f981d8090c", -"T2B1_es_test_msg_applysettings.py::test_apply_settings_rotation": "648a51202ee2e85dae9849ee44b1884ec3ddaa9a50897ab579ee7ba7837ac1f5", -"T2B1_es_test_msg_applysettings.py::test_experimental_features": "60402c3fb339e4f27c83a88737ee52a1b46b2698a83343a78fd0c5349d172d80", +"T2B1_es_test_msg_applysettings.py::test_apply_settings_rotation": "aea3c583db2a5e68a4316c32eb56e2b0512e774a080e395674053927ca8da70f", +"T2B1_es_test_msg_applysettings.py::test_experimental_features": "033dc4d20a5865b39bbeb10adbcca8511fb9941fe122e2eff9901d386c6da64e", "T2B1_es_test_msg_applysettings.py::test_label_too_long": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_msg_applysettings.py::test_safety_checks": "4ef5ad04d866dd8c00c09551e1eb84f0742fd5d4d2ae4605d3612d764d6c4a12", "T2B1_es_test_msg_backup_device.py::test_backup_bip39": "7afdf5bdd9889633dc2c7943a6c5f28504c7dd137ed74a06d11cb99bd8ce0965", @@ -6337,54 +6337,54 @@ "T2B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", "T2B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", "T2B1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1f77599ef03ad4fdeb71f868ccbeacc5c9f6dcaf5276403967f6c7c56ed9bede", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "044b679fe6ec97c8ba7358cd372048d9a85bf5615f229f8d320a4a03e1043136", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "685a78596477a49013be94ac8dcd0f8e9b3c500fe201a5eacef08581fc614866", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "237438f415979801f1dcac7ce52a27a52d90cd7355bc1e58447882f8673a873a", "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "22ae79c8dc2b0d32a5d9bacddd9be52b6bf8ce8216aa69360270e746e5d7a2a3", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b2d5b91857172df030df76df69a6faf02ea862a5126a46661810afb967c68f89", -"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "e37f90e69432d55fc03b207e8ad302f1fbd60b2617ffca07f1f9f7da10b19b92", -"T2B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "74532d48c818271fb4c2dbf25e114ab50c085df7f2356897bd420b2ba04852c7", -"T2B1_es_test_msg_changepin_t2.py::test_change_pin": "e648c43f5ff821cedacaa235e653d6e68992ea55d40ea357945f4d1ac19dd932", -"T2B1_es_test_msg_changepin_t2.py::test_remove_pin": "95744693b2962c58de35ab690cba09c72f8cd5b23b2ead000ebd37b91cae9ff7", +"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4c59545a23e2b5bb60c023959ce5502ab5a836d74a5c6ad7cad0e5a4ec7a8de4", +"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "e3479bc6b4bfcad447fcf8496b136f5c77febf0f418bf033464d466297d69c99", +"T2B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "c09a4bd14b1738b7ae6604008b9ea40e8e0624e4b29e6370bf08078aa6a26b28", +"T2B1_es_test_msg_changepin_t2.py::test_change_pin": "d826dbdc7417874ddcb576180c92999ee03d252486bb4b3932971c5c5667bcf1", +"T2B1_es_test_msg_changepin_t2.py::test_remove_pin": "504fce072be30ef005d70e50d12bdefb0a82b3004124719e4392418ceab71bce", "T2B1_es_test_msg_changepin_t2.py::test_set_failed": "e4019ce947c756c2ffb3753b86b1e2603e8d2a1e2b9ac9c08bb87758f4ac9ca9", -"T2B1_es_test_msg_changepin_t2.py::test_set_pin": "b52a2a5efcde8c5ab564cfea2f5b54c1a7d15f65b54619e8fb0fe90e29c79e05", +"T2B1_es_test_msg_changepin_t2.py::test_set_pin": "cc2c759736892de34bdec1289feb6d7c7f84633cf6d37d8514f3ea5d587eca8e", "T2B1_es_test_msg_loaddevice.py::test_load_device_1": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "15165318872f4fbf4dfe6e0fdd110edf2deb7b3f480b035646da56e76aee9dd5", +"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "64667679c5c16e6b32e075d1f8e7355637ba2da31ec5b548d06adc189e595d61", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "70497a8ad5730369ac347f4bd10bbcbac236198ea2baa67f2ef033954e8a82e6", +"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "9932a98250c000f90d0af22a2344d7692079b98bd978272812ea4f5f16588506", "T2B1_es_test_msg_ping.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", -"T2B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "4f4669992482e791c262f13e1b29ed45d82bf2f71db29cb9509e146b616a43f9", -"T2B1_es_test_msg_wipedevice.py::test_wipe_device": "f8a96440ba8a97b504fe8b325bd2a0099d59b289fe741690b8db313876df87f3", +"T2B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a956a09d0bc2b0133b6f1264bee739cfad1801793c7675e3d187fdb655dc842b", +"T2B1_es_test_msg_wipedevice.py::test_wipe_device": "946157d3de0e8da4e891538057f266fb3da9caf5fee193b268f4c1c629663e3f", "T2B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "971615ec06d9bb02995c0945715b8307c458f7995a1e04c3bafe919565bf795b", "T2B1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "971615ec06d9bb02995c0945715b8307c458f7995a1e04c3bafe919565bf795b", "T2B1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", "T2B1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", "T2B1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", -"T2B1_es_test_pin.py::test_correct_pin": "9782109663489ddba01055e2f470b877dfed5de60711f1153529dc22b292051f", -"T2B1_es_test_pin.py::test_exponential_backoff_t2": "a5df422eee225067a7e1fd636efa259d73cbbeb3bd3d0f7b473d55186c649be7", -"T2B1_es_test_pin.py::test_incorrect_pin_t2": "91819eb7ce01c208f71754c4fe8032f451b66627abefa4d09a8c27788e325601", +"T2B1_es_test_pin.py::test_correct_pin": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T2B1_es_test_pin.py::test_exponential_backoff_t2": "146a49a4c7ddfdd99e9a7972d9806cb03aa4cd15a9d708f006f191514842883c", +"T2B1_es_test_pin.py::test_incorrect_pin_t2": "d4249533e46ad5a24dd3d008b14351b6e15e63ae34fc7473ab943218d905a004", "T2B1_es_test_pin.py::test_no_protection": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_protection_levels.py::test_apply_settings": "65cf3ce3b5c210a64be28d078426581e3dcf1909b938d53fb3bc16a134d308d0", -"T2B1_es_test_protection_levels.py::test_change_pin_t2": "95b94663acd12e1e68a2743d5d47d10f15d5f961d669eb27337a4aa20e68013e", -"T2B1_es_test_protection_levels.py::test_get_address": "7bd3803da7445aee4321789819936d1941d9e72e0f23c9304e53132e312e269e", -"T2B1_es_test_protection_levels.py::test_get_entropy": "1ef6816985cf169f70da8d192dd75e41e27d9933eb160d5928b9321a125c8562", -"T2B1_es_test_protection_levels.py::test_get_public_key": "7bd3803da7445aee4321789819936d1941d9e72e0f23c9304e53132e312e269e", -"T2B1_es_test_protection_levels.py::test_initialize": "f340a91cc4adb571e0d4d1592bea98acc59e1f1aee0b5c4d5bd8e29ab603bbb9", +"T2B1_es_test_protection_levels.py::test_apply_settings": "7bc04dc9f10694204f2303ce01caf6cc06bb3f9666824bc7e7d32e347c0ab1cf", +"T2B1_es_test_protection_levels.py::test_change_pin_t2": "da0d9740b75864b2e5f328616cda6280deceb676d1fa3b8b5e15c94981506015", +"T2B1_es_test_protection_levels.py::test_get_address": "9b595e7ea3d6d4e3d3ea56d83403bdf15a60af72ef968885633a3ba2a0401c10", +"T2B1_es_test_protection_levels.py::test_get_entropy": "dabc6589cfa52e3d9a74aff2b08bf1875e1d93b2254a55e1a7de0f767e52ed9f", +"T2B1_es_test_protection_levels.py::test_get_public_key": "9b595e7ea3d6d4e3d3ea56d83403bdf15a60af72ef968885633a3ba2a0401c10", +"T2B1_es_test_protection_levels.py::test_initialize": "f1ea7380541fdba5ec180c96b12656b1e9f9c3fadfdfcecd0084ea6fc3634c9d", "T2B1_es_test_protection_levels.py::test_passphrase_cached": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", -"T2B1_es_test_protection_levels.py::test_passphrase_reporting[False]": "2bac7360e4f4edd59bfb0e8a724ff61848e596859b59605b99f741773ecbc8be", -"T2B1_es_test_protection_levels.py::test_passphrase_reporting[True]": "59ec4d37d67082091feaf15ca048fc8e106bd0faf22c8fe9703fc7b89f8431a0", +"T2B1_es_test_protection_levels.py::test_passphrase_reporting[False]": "1e8c190fef6cbadf3af6fb8a9ef5470b92627c804ecd20f9e548179d83d4cc6f", +"T2B1_es_test_protection_levels.py::test_passphrase_reporting[True]": "02f3f8e151c1ce340686bffa881d95797be857b3ffe5e45c9e731af97e2a3b25", "T2B1_es_test_protection_levels.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", -"T2B1_es_test_protection_levels.py::test_sign_message": "46e06c41180ac21d612cc4515bb130638de3cd02364fe8bbb5e51d9bbedd5ca1", -"T2B1_es_test_protection_levels.py::test_signtx": "89015b022a2e707593064844edfda84893dc102e9dee4cd90e590ed6d07dd30c", -"T2B1_es_test_protection_levels.py::test_unlocked": "d1a7dff82167ece9e31ddc3bcf2f76f8a1789b4578e6bc39b67fc7a6bc559ad5", -"T2B1_es_test_protection_levels.py::test_verify_message_t2": "442e1f70b44e9df1d397d14f8a1c628aa9ba00b86ae318fe4f3dd6345f7b707a", -"T2B1_es_test_protection_levels.py::test_wipe_device": "e2b4141bf1362cecb872c5df9d99c7286cecc0e50127a471449ead066b33f217", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "0157da87e69174eedb81341920984534cd941de69831f69ca1ff2fc643ef24ce", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "c341d7e93354ae3f3eb8b32409cf2b486af242b26d5a3e5f0d0a12285f525cea", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "00de6596c902f1875732c515266a4090ccb8f2a53aff167af2d9294dc438c170", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "96a1350897888aa5219a4efba3aaf46cf600bd37b1661d6b3cd2dff45a0ad054", +"T2B1_es_test_protection_levels.py::test_sign_message": "893bf219f36a32bb3867253fe267bce28c2112ac0da84ec17f2ffc3cedaacf07", +"T2B1_es_test_protection_levels.py::test_signtx": "d1edc5e96fbd91ac872be680ac7fb13db7d548e48c7b34d8969d0c01187e94ab", +"T2B1_es_test_protection_levels.py::test_unlocked": "85cbf192ba305b14f491ebad97b6fe0b63990d473d520a8035efa5089ced1921", +"T2B1_es_test_protection_levels.py::test_verify_message_t2": "5a4bdaee180485d9e08ee5fdb0f5d5317e3d0df6601e1b5f30561f957b9a50eb", +"T2B1_es_test_protection_levels.py::test_wipe_device": "a11c4318f3eca399c953ef595ac7fc81b5e4aee4845765a9f103796d8bb74926", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "f415aa8eda5d9eb9519c66f8df0f37f4e984a9ddbc4f39ca68a7bf7318174c06", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "0f443c5c0eb0334e4e4a7383a9daa2f45de474fd85d236632f3f1e663d86bd0c", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "5af4aa53521a5afeccd5316661faa0e2559014e9607adcfdbcb5db380d25561c", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "09c31f9ce71d712e887bc5f00e86615f47624f8627bca98f6e0159e23bac7fe8", "T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_clear_session": "02f065568162703b39c4dd711300fa176f50a8e4e80d0e6f51d74cf3997dfad8", +"T2B1_es_test_session.py::test_clear_session": "6fbffc0958c6514ea65c5ce81ecf2cdc5f2ac8965aa68d8584d5ab30a93d7b82", "T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_derive_cardano_running_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_end_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -6447,8 +6447,8 @@ "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ef13f3c0105c9888fdf2d973dc28f71658d5ddbf0b3c1f05f26b8870e74786fd", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "8facfdf6bc9b56f2723a820d1130cb2e15399787f8a2081eb1b7a80ba0180d40", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "a2f6531846847c9e3f81a936cc6c391b30b794f0397adc9055defda4a0c93662", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2cc813fcfff16f15f334c53c8a64e97f5d24174856d2de31e1dbe12d61c87ade", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2cc813fcfff16f15f334c53c8a64e97f5d24174856d2de31e1dbe12d61c87ade", +"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ea754b5c25d79068110289a3a88d020d71f1485ca0cb346e07602ebd040e84aa", +"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ea754b5c25d79068110289a3a88d020d71f1485ca0cb346e07602ebd040e84aa", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "bc3f138901692e6e14ac1857f526b8e3c738653f7f2c7d19639132ea1984023f", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "6c68537a122fa4de1ca6b6a6ddfc307fedb668d3f961b4604878e6dc87d89c4c", "T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ab1e06c5e72e7ebf9296e3c161c3655f2037c33ad89f33f9702f6577125a295f", @@ -7436,57 +7436,57 @@ "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "30cd1518a847b4e3429e094ff3010472c60a74987f5f3a11f9d96e8a8c44fe69", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4ca369c85915840ffda7e8691eebd2d49a459591137df2b4b8d1404d54a87cd4", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d45501b1ce3499a0d19c120e5bd18c08bbf97aee34fd1ff9e5cf78b80f502951", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d235221e6f98862c7374b04f1a15e56fe82095fe1bd47fde46bb152e24400ab8", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "fd1448134f4aa2ffe282d0bfe36aadbd68c5b6e62cbdd471912417272b64ccb3", +"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "785795fc4510a099a4cb3e5b4e77e2ce12556b562662184d1a17351edb789c54", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "82689d5010ea60666d74f29effb2a04626d2564d80830ea2914960d8a60c50ee", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "710410dd0ea29701b12d6533186efb446ea3038ea58cfe20c7bd4146972670b8", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "dbd296500e3ddd9c605d951d32319dfed10023d1ca90824f2040f0cb32dfbcdd", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "83ccf8ed3d01454ae1173b1cedab0dc74f7c7fb6fccc5eeba280072a60a66e9d", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ea2490e4a450bce7eb59189225a6a8ae4a81facf47d6bf7a35693d461dfd9c96", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dbd643707a8c52f6af9877eb65e189da826dc068fe71c553681f8c57ff1d8f0a", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "55e93ff2657c1d19221247d8b9df6ed0f78b9f438bc066f5e9b52245cfce2cc1", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a79b85f977a4a4cb8a9a3352240e38c4c65a293120bec3a360ca41b2aea697ba", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8791013b7e137f2ea6d5850ab3f78adf9746daa0148d8d8796137783ac9d97aa", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a79b85f977a4a4cb8a9a3352240e38c4c65a293120bec3a360ca41b2aea697ba", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "8791013b7e137f2ea6d5850ab3f78adf9746daa0148d8d8796137783ac9d97aa", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "41c0d1b57d80b4b3bda554e6131c71eba6e397ccb9e383588658f24ea6e0a3cb", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "388d6161798ef339d70155b056981cff8e4926834d05baae45ef1cafd6158d31", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "956780e0ab211b5421fa107baa25e7238fdb658d0e4b79a0a67fbe9adacc14ca", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "dbd296500e3ddd9c605d951d32319dfed10023d1ca90824f2040f0cb32dfbcdd", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "098e39ffd9398e6d44149e175bb5bbe7e81d51318d1a6cb87adff88788c34f37", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a804a3918ba208cf6476d8b0be23a9c5934c29073f9140cbbfa81ba9944d4e6b", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "582405fe7fbb6fa12e7cc1d1f6a43290652248854608e1fc322acd008e4dcda9", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f038a86f1def4c5c80b5b4f054b29ed1fb8e0ac58169994f53aa8ed4ffa5938a", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "67a0a77cef294bb58f28f8bcaa971e6ba97fb65baedc641b355223e77799693f", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6fb4e0758ebc6384a0e871b0b8a207a05fc66a37dfe0590d8d7b111bea3698ea", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fa24f3d4601bbcbdc4514c49f82340c1d611fd86c618db8ca38a9dca79987ed5", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "3a696ce23353a3a462fb35df46df8e9594894ea3ba2b880915f7f77b830f9815", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "10e7f1d751b9240d96b0a3d4d1697b716a3e4b72d0addddcb5567e0eb1359aff", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "b13955502df1301668946644a16c564c81068e396b30ecf4833b83c9d6525ab9", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d4f949f97e6053742b385da90442ef600f59efb7c7e0d1d32aaffc402ef88f9d", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "064ed23fdeb54e17562caa9805be48a4754affd6a2b52d3e29410ee413971b18", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "812ed55f301299142808c8de6e9bdd87e0e89e92fae91c50eaa26a1e6442451a", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8b919001496bce610c943f5f2fe01171decdd08604003f37dfa0b45565778898", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "63795b3282ad190c09827eb1c429a7bdb23a2998fdb6fd9032a14c7b7d6b5b9a", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "cd2ba4730c9552b5e36593bce256705a5f6f1576ee255c4a5f0af16811f43a08", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "0aaabd5b2c5d7d7e9bb282addf2f0b2c4fad0fda6088adf8aa8c086d69ee9c40", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "63c889efd6fedf03c02beff64eca70baec1df92267cd5f5fd86a842387605051", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a28e957f9e5b7275c5f4a160a04b10959731bd616711ee9ecc49befa531037fe", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "feb8bc0cefca2926a50e6e8f4c69ce10cff8fbf196bedbd705ad3802efedb36e", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "91440f137f887885d3096b104bb8023d764f8f98d8fe946abc5d8d7a8d5d7045", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "ff27522bfe3126716b1ec9582b9a065bb4eeeafeda88ca879a3aeffb72d49d68", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "79959a16e596eb5d507f3eddcec961d5e3643b36c37fb09a7ad07a8986f56033", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "deb948eebd9edb50d2a82f0cfb3e365b793cbbf85d8a2263ff74880aaed6b6e9", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "59fc8168e210b8f6727077532f902da0ee482903ee2279e066bd65bc13bdec6c", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3ee818a3fcb63f83da417586c6743519f28153393d13eea288cef0164e5387af", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "98d6018794e333740f352bdc6cfda92606755caa164c79b0e0e8a3c481e946cf", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3ee818a3fcb63f83da417586c6743519f28153393d13eea288cef0164e5387af", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "98d6018794e333740f352bdc6cfda92606755caa164c79b0e0e8a3c481e946cf", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "25e220570c703d66e40dd48e73393ae1012cb4c10aecbc1e85e1b786dc10d163", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "1dfc877b17e4d6c38f695aad714056a468af0014f63c1a1a85a959be92873fc6", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "1110dc473220e2ad9e0dce934a53bbd3233ce1137b628662f34ae5e423c6f3c1", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "494ac946977b0a53a37975f6e7f75bcd8e84fbb6c19b1ee82f769f7ea0f2bfda", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "34dbd49b12b5c2f2fcf5873f2dff08b1dcbc1ddeadd9929735a44af92b3a00af", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "a9d7673879102a429b59d364f7f04f495dcb3d43bae3f8ce3d7439a77f4f1918", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9ed7eb52637a62498d2fcf6f9947292c354c0026b9fe47b6facbb0f2f4479a7c", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0f6b3b9b0ceb1278fd0087e685ed980066fce626b73f00d69d8cc1b98c6108b3", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6c1b179d713e8eed48823caa9e5d97c2c9479378eccf8fb7a68bdad15502bbc2", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b9074d0653f925bd2fcf9f5fa5711a50a7e6d605c386c6c2a4e187172eea0af8", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "840e71bb456cb14f2dcb034f5a6f2ee4d6dd96bf691afaf03e04eb4fde148448", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "5d7bb1fcc0fbde5a432087d60669c129c15d21b78a92e7b95e03377fb48b1df2", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "403e9d88a6124651ba0afb9a9badf394448d05e2c7848a29b1eaac0edfece1b3", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a6cbc8c7eabbca9f393e0227775dadf3e3c9c3f5bb98f6aa5f0ccea1fc17b156", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6277f247a770d3b1f7a4bc38b9b28924bc0b58d422e8a94f76d0fc7db59ff733", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f89093e9ec8dbdce95073e327a7edc9ef3220fb91585e08a22fc6bb383f09305", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7d0c535a65ec35891ea4847e4ae14b68ad77054af23037e8003fb7465a2441ef", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ccaa5b8c12aad8ec9e0ef069c6c9b226b5804c62e4830889bec62f4703f45e66", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f2804064739fef4e9a784b0107a950d9ec5aa1ab8147dfb1e3ad57b1011120fa", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e041eb34e702fd65000fe710834e7ad71d72ac146c95226521f73a9ec371714c", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c0f84f867a0df50098740c83b71b37bc684eae9f98fdc43c6b51745d4280d7af", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f9f73430c44a23fb433cae764c0df78b3339eca47c026a1d4082577b8b1fd886", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dd7fef4dca56e9d2c666c20443451860a141a00fda216d26eec4156c795ac15a", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "33c2d5ca1659f4a8c05ef063b140418c0c379320c4b6aaa2eff7bafeb965b412", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b6b0216f45d61acbfd6bbe1acaebaaad12d5b39abb3286b7e434e3fd14781bcf", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "869310a046e43e9ce99abd326f4a202108ef151f8c55d2d4260e10bbdae53154", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f4b83c0be7ff1632ad20fecd8c07aab0082e7b796ba62a045aebd404d467616f", -"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c0412c4a126d1fa058abdc26f75507f54a0eacc9b054d2412657659434275501", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "dd01e90fad183bf67da5ad171cac53e10a601f4d377a65da90e0152b2942d044", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "057adee0ec3fd05d88171ce23e8041d7fd4d3398834a35404a0febf11ddbbc7e", -"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f7f4667d55d4836d6d6a880a3a259ceb17e14f31d6e879f3ab2bd11532db3a1b", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a7933b0718f883cc38eeb7ab62662fb6dcbdff1e339402a75987ec7f1ad0ba70", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ca680d139f00f4835c746ddf1b269bf6e319cd637271b640eaa07ceef483e1f2", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3a29d01a969e8c7110ebb4ddb147435221d9d2821a1908d4d2a3fc079c90a029", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "35364e5b182a3a56ef335580ec4361ea47a812e22f64fbf170f185b339651804", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "11dcf9c7baadaffb1b43c2aa4db1e48c8b45148365fcf27c46d5c5880fef9d77", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9f24a559d44695a8e3bab2dfdf54b7ab0bafb2e2be52de8ebda8ec346a0c716a", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3bf80acf43fc15bf9370cbb3e4210e74370fe834c2258fd4654e2d59153237c9", +"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "5b9cf05525d564e28ab9c428ce99b894f34e2f2e2bc8a91a822b51a779d287da", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8146b92016334e8b767db007e65f8271b7f5f13640bcaf5f33c84e56a05ff8a6", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "34e8eb1efd030d6e63fb117e1e787c9ca73dd94dfee41e3f98bdfa9c1fed08ab", +"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "08c606b396cd1fbb0bccba7c0d7fb03a2a4731e8e724c6ac071c490ae376e067", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a7df8265080c4530e58f730baef0d956677074d0714df4255dbba403f2883bcf", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a52d56a1df8ea0c3f7011610d9f41685caba806fdba15b3cdda0505b6de4657c", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "851bee61c1b9d2d3417144b6d0504f0ae48409a1e01da5498d6cc1c4a5fb9e0a", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "47bc3fb72c06124191ef7e9586df146a892f87046107218384d08b06baceb34e", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3256148778d8e34a180b5ca01b0bb41ff5cf573055a8b4fea6a8f42aa084b5b3", @@ -7628,35 +7628,35 @@ "T2B1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "baf64d77d3123de24af8e9e716d09402be2c8526c483b329a9e98db9be3563fb", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bc288ac32aa6f282ecad1b8ee6fa8d46baeba144d71f302866f25e88fce96648", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6bacd86c766a4b53acc9fc80801b3644bf8b2122572cb810abbca5bad0f7f2e3", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "77627d2bfcf00e4e8eb272dfdd48e24fa5efb7e45b34838b32ba4bb8ff5936f3", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "3fb14495f297c10418337e876004f8b616dc227312bb8ca43cc91cc30edfe6ad", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "62e7de563fbdc3c8c54edb59aa2d6df577f83b327d4e21d84b13fb32af3e4725", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "80fc41f0321e159b3d9b8097d46f587585081bf2c7c14154e5592aa4de148b11", -"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "a7b3c45120a812e7defee73a0bf8b92af938d70a08392e4a74400b08c09b3279", -"T2B1_fr_test_autolock.py::test_autolock_default_value": "be4113440caa9c9976dac564d7040fd0e29d824a91b06fbae91fdbff0cd663a8", -"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "9e9f0a6e3d9e9fe56deeb0df58fe0500bd406a356842c3a00944aebb713e90c4", -"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "9e9f0a6e3d9e9fe56deeb0df58fe0500bd406a356842c3a00944aebb713e90c4", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "d251245429e17ab05a7ff1669d2d1c0f436edb7dc2f159b67c63bd52f1903a1e", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1da6f98ea446448284b3188671584efbbb4dbdb736348f656528adae8ed6beee", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "e0d5ddf12be4371b6c1fd5e5ed5035ffbd4b9a96f83126e7d08afb9659f70288", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "02ecce69e8059e9e31946595a07447222b41f5c4396568393714b6039f863b55", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a34fde26d22e7b49b192775d43770668f6ced448760bace5f1aa060e41657ab0", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "edadcda4d1ca278dd53dec1018029932db7bf3ff68237e1cbebd6b31d194f05d", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "2db51a34f3d6e303b9dc07e7ab3b2238bd4d268a6302db245cffeac4522ddbb6", +"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "f23b61cec10379ecf4375276456f924bd82a9725da97d9e065d031ee1c2cfb16", +"T2B1_fr_test_autolock.py::test_autolock_default_value": "d9aafcbf4105319b250681abcb77518290618aff2408548c1f55ce8c2ce313de", +"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "ae85a970b2cb39cd7ff2b9167fce7c0d4288df8e8b7c306a17304223a40ae60d", +"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "ae85a970b2cb39cd7ff2b9167fce7c0d4288df8e8b7c306a17304223a40ae60d", "T2B1_fr_test_basic.py::test_capabilities": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_basic.py::test_device_id_different": "1f5525585c477a3fa88ed865c0a57273c0bf6e73a4d483898ddb49f5dba3589d", +"T2B1_fr_test_basic.py::test_device_id_different": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", "T2B1_fr_test_basic.py::test_device_id_same": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_basic.py::test_features": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_basic.py::test_ping": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_busy_state.py::test_busy_expiry": "3c4520b8aadefa089195d16d37ebc6f834963a65fa4df8eeef3fb981d7c78615", -"T2B1_fr_test_busy_state.py::test_busy_state": "d665ba0f5f660fa4ea6284c2c7120dcedb63fc4b6047d47ed60ea9552218b52e", +"T2B1_fr_test_busy_state.py::test_busy_state": "660bef3e1aec5e826b8a7dda41430828149d48ab79e4010dba38fff39249df42", "T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", "T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", "T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", "T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", "T2B1_fr_test_cancel.py::test_cancel_on_paginated": "60d68603b1bbdd9b041ceafde30fd6444d265b375dfeaf215212e0c9701d1a17", -"T2B1_fr_test_debuglink.py::test_softlock_instability": "b8db22e0f833d5c81b0dfc6c12a220038e90d2a220a257e95d717fef784a4212", +"T2B1_fr_test_debuglink.py::test_softlock_instability": "815d955a6016fc8e175b419b4246f66a2d89aa98fafa104bc76b493106b8a543", "T2B1_fr_test_firmware_hash.py::test_firmware_hash_emu": "29f74094a536aee7cafbc2e63fb29084607787ab9351a9b74ab74b20a34c60cf", "T2B1_fr_test_firmware_hash.py::test_firmware_hash_hw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_language.py::test_error_invalid_data_hash": "c3c594c2d963c7562250b5cae43e6933a6c67c8b7aa7063e58de94e56fdad446", @@ -7671,7 +7671,7 @@ "T2B1_fr_test_language.py::test_full_language_change[es]": "e27434b09eef1556fe6fa0b050fb2b43eed6b4f37d622b7831a5fcbcde3f72bd", "T2B1_fr_test_language.py::test_full_language_change[fr]": "7fae72778d7111b0d7746ce3fdfdae724415f651b2c3e195da55dc3cf6e24f8e", "T2B1_fr_test_language.py::test_header_trailing_data": "30a19ba738d7bd2b5309351740a5102da462e73c6ec923a0ae92dc385c1c6f9e", -"T2B1_fr_test_language.py::test_language_is_removed_after_wipe": "45b9b6a06064ad9b178f8d8e40267f5c52842593ab73609ac4253b08b2b0ee6a", +"T2B1_fr_test_language.py::test_language_is_removed_after_wipe": "2e4b88e512c805e6a90bbfc53ea207bfef270849ed05b43c4d4c4350634a3f5b", "T2B1_fr_test_language.py::test_reject_update": "4c1d851a4f7ca6075e71d096a4b124b31f8ff280d609cc2495ded9750f057b51", "T2B1_fr_test_language.py::test_silent_first_install[False-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", "T2B1_fr_test_language.py::test_silent_first_install[None-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", @@ -7681,17 +7681,17 @@ "T2B1_fr_test_language.py::test_switch_from_english_not_silent": "2d59eedb25da2468512d9576ef7d7f4528804d4fb8bb1921d4ee8d4d20d91196", "T2B1_fr_test_language.py::test_switch_language": "d64c176bfb4ea6ddbb57c7b609ac0983b335ae0ce503c653480d379caf71976a", "T2B1_fr_test_language.py::test_translations_renders_on_screen": "c96510d7b9812933713c70d22e2a549f12e888a28d8a2624a649d73bf3871d12", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "6fbb8c3d87ac90a8bfe8553489db45d7974a12095faf9b312a135812e2ae1ece", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "6a2aa372458517e208753585d9b7964dd59f48d4d4c09f83048ccec5e8d180ff", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "744a698ae5fc7d53600554d68eab2a3b3a6d3ed7f8a3dafd8a2382e5c741fad1", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "665f9d0cc8068b51109edcbb29410949ae35796b318da427e2226cd74dedddd9", "T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "7ea6d0c55fa400dd8b6181146e6c4ffe0605959487243e8ae3a2b71aedc92086", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings": "b044613741517e2eea55bf9ca0539b44dd4e4462abd67e5112fc8b7edca5bc1c", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "9fac9f89816aa4bed621bc6243a8939fe86e8813f3c72cf56f6840bf5d94f372", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_msg_applysettings.py::test_apply_settings": "6b2adf6c46c866ace9dc4c30ad1fb68b45e24e72feb8ee2037ddb61d0593dbc5", +"T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "5712955f435db11157fcb9396abcaf37949900cce9487089a6c64cd2d69fa1f8", "T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c2af499645a7ee44dcc4ddbd9e9df812493082162739ec035b406dbbc29dfc3e", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "1161a50ccabd3c0fac43ece6e75e651df600cba4b205f0e016f8bada88db6916", -"T2B1_fr_test_msg_applysettings.py::test_experimental_features": "20d5a290c9c33b8526b0c14d5b49c5bbbf590ee1632e3bc34bc1d46f0b3ef35d", +"T2B1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "d2bf23bd8a4910a28f90606740038748d8859865a90054241601a60eae74eee4", +"T2B1_fr_test_msg_applysettings.py::test_experimental_features": "2fbfc070398f2bd8ebd7e3b0f787b85390778aa9091321a10abc10e5ed2edbe8", "T2B1_fr_test_msg_applysettings.py::test_label_too_long": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_msg_applysettings.py::test_safety_checks": "6cc280764a02e46da93f042f4b6b2fd1ee4464a460d75f7c0fae38759728e4f4", "T2B1_fr_test_msg_backup_device.py::test_backup_bip39": "c8377359bd7bd73fbd3f168e775e3a27a52c6e33b620c58cd91b64a7c9d98838", @@ -7705,54 +7705,54 @@ "T2B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", "T2B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", "T2B1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "754ca5864d4deed648872c8b780141ea9841a552a5f510f54c1a46a0bafe51a6", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "659fc7272a62506b6ae48d408f2fbb24e119028a2224f0f18d72ffcd0dc6ef3a", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a65fedb9eebf9b75fc75df51391b2fcea739a657a7a949aadae3b335600ebf90", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6e6361deaa470d441e69a61a294a203e9aea3cf114b8919b5aef9b1ee66fb90a", "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5364e98bc3e6941907557b4d563bd51b1dea6c6c2b789acd75cf81ea3b1f2b44", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2fbfb44a5b9ed2549a0cf83c851d5ea542dc3f17a318e6a204109046ae457ffe", -"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "9eade46737746d6a0d8f90e6668d0ce0ab476afcd737b3d7a224759d84806eb9", -"T2B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "7d662c4089213411418447eca9ee81924bc3f1fa5221df5c0265ffed19a16bab", -"T2B1_fr_test_msg_changepin_t2.py::test_change_pin": "46015ce68bfca2c5fc3e778db49cf960910c90d0e185fdf4452fa691c1da671a", -"T2B1_fr_test_msg_changepin_t2.py::test_remove_pin": "29c37ad0eb3e0a18839afb654933037af54b7ab1d2d6fa0cab23c1be5f2e76b7", +"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4d1b837fd72eafa139ec55bbe00a2bb01e0fc3ac21de59cfef59fd85c0483c9f", +"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "25c462a2a5676739d2614778488cc07b97fe096bf1ee3fb51441af785e6645d5", +"T2B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "9ba9ad78002bbe7775abcfb2b08677c985abe05a42090abe184f0a0876f9a5bd", +"T2B1_fr_test_msg_changepin_t2.py::test_change_pin": "e1a4ab43a6e7dd80185affe2cd99cd6afd10f5fb07a3e099dd929f44ab886c22", +"T2B1_fr_test_msg_changepin_t2.py::test_remove_pin": "e3ab26bda9322d0846860b4af634c6f5a4a525e015bb559ae05ff1616226e883", "T2B1_fr_test_msg_changepin_t2.py::test_set_failed": "c54eef85a1d0dc450a51346dd3d7427dc351f24c0b2350c878cc08b48472476b", -"T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "a93c2eea7a932de587b4d2037ca677efb9346c0ac4e129137706f27b74fd20a9", +"T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "647efd371506e23f9300b6ff58ac6565597ee2310fb03a2fc5c449966672986f", "T2B1_fr_test_msg_loaddevice.py::test_load_device_1": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "0e1ae49a558b9913aeac0067c3c3cc4dec9de9f57440bd06f854fda6d983d8b0", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "0fd2df9e7adde33b28149d62dcace66e3f8bc381ec00c3edde9fd184c7d97b49", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "613e53351272762e8eed7928f36c8f57801d7eefda18338482ea3808deb6e920", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "8cec11111a5b0ec07ff381b2061bf2b774fed1e41e4bc8985f2602ae54fab71d", "T2B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "8dd8ccbcc59b743da50ae4cf18de76f01759b7248f60575d75af2335a949f380", -"T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "1f5525585c477a3fa88ed865c0a57273c0bf6e73a4d483898ddb49f5dba3589d", +"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "c793c2bc1978892ee53fb9e1094355db1a5a088784ecaf3e49073f022fe1ab3f", +"T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", "T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "cfb9e3e4e192b4e4be3cb9589e3f89686929030ceea7fe629a0c10612886498f", "T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "cfb9e3e4e192b4e4be3cb9589e3f89686929030ceea7fe629a0c10612886498f", "T2B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", "T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", "T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", -"T2B1_fr_test_pin.py::test_correct_pin": "662074a147c0862555541b4415136a3f50f88ba72a92e208c26f7ae140459684", -"T2B1_fr_test_pin.py::test_exponential_backoff_t2": "d15350bfd583a4ced3083fd4b8df814318369b8c4bb89c6fa9f3de0684a974a8", -"T2B1_fr_test_pin.py::test_incorrect_pin_t2": "25258ee576b744253e433f9ee6e385f0d403d88080a94c61027c8482b3dcf58a", +"T2B1_fr_test_pin.py::test_correct_pin": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T2B1_fr_test_pin.py::test_exponential_backoff_t2": "cb30648ae851f7bb39079317f3f357248ce77d93831d630d732c55aeb7e66437", +"T2B1_fr_test_pin.py::test_incorrect_pin_t2": "7607e494f4b01cf25938c262848d4cfcf66e16c3e5287d500ca966caa7dc7601", "T2B1_fr_test_pin.py::test_no_protection": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_protection_levels.py::test_apply_settings": "3b1581a6ed0caa64f8a09a259812160ce919fd0af9c47e1e6bced63b0428140e", -"T2B1_fr_test_protection_levels.py::test_change_pin_t2": "bd3704c0b8bb9e28ff9af7c664ded92b8f904e3c901976856a9673c3f2641920", -"T2B1_fr_test_protection_levels.py::test_get_address": "23001bd98d3d88b2bb224c5f04b226580de8b245b24caad3b35eb56683a2160b", -"T2B1_fr_test_protection_levels.py::test_get_entropy": "4b18b9d99d9e4b9875fd4926b8e6d0c5f2862dbe2ec4a94d1e0e1687fa5eaa2d", -"T2B1_fr_test_protection_levels.py::test_get_public_key": "23001bd98d3d88b2bb224c5f04b226580de8b245b24caad3b35eb56683a2160b", -"T2B1_fr_test_protection_levels.py::test_initialize": "0facccddfdb226334c131cb38254ddd5962cad4719a826ca198b9275bc9b4ef8", +"T2B1_fr_test_protection_levels.py::test_apply_settings": "484b44ce1af3db1706b7d745cb799d59018e53ae15ecc1f3b6d157b20ca8e860", +"T2B1_fr_test_protection_levels.py::test_change_pin_t2": "e26d2c5c0197bdae0045ff36117961fd602bb6e5be5bcdf30d5edb3f255f6a51", +"T2B1_fr_test_protection_levels.py::test_get_address": "0d1ff46a772bf1c941749e1dd2daef82ad098b6b4274866a0ab6962bf1f2991f", +"T2B1_fr_test_protection_levels.py::test_get_entropy": "f47aa25018b17569beffb5796a4aa64b7ef368d38f3658d44714931c1fe1a62c", +"T2B1_fr_test_protection_levels.py::test_get_public_key": "0d1ff46a772bf1c941749e1dd2daef82ad098b6b4274866a0ab6962bf1f2991f", +"T2B1_fr_test_protection_levels.py::test_initialize": "3a6fc53a154e468252200082f6b5e8db920d9f3d585a296a41bfd50586c1856b", "T2B1_fr_test_protection_levels.py::test_passphrase_cached": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", -"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "3240f05603125f9e3b7433b60ab13b5f1c5c37a2faab9869c49f53f631ecbbcc", -"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "010c81115dcab4f2a10e91c252c820ea0a1e3b6b36da5c3a8489abe6aebe8dde", +"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "1037db9932479129aea1b3b137983ad283448f41f82fd79be96347856b4bb4a9", +"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "eef6467a37bb7572dd3fa1cf70896878db35bbcf5cac378eb6375da0ca71edad", "T2B1_fr_test_protection_levels.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_protection_levels.py::test_sign_message": "b380d161b84d2a005470bbaac67827fd6ba74802cb5f16eff0960760e3d488e2", -"T2B1_fr_test_protection_levels.py::test_signtx": "0cea4355a59536a0c39e4bca4a9c5177e67409ec0aad0d759a20d54dae5f2807", -"T2B1_fr_test_protection_levels.py::test_unlocked": "2c716e0d2ec26f8c7437949dddf44da1a015235606b5192be3cd1b79a851dc1c", -"T2B1_fr_test_protection_levels.py::test_verify_message_t2": "c203e5f88604397905ae74a8266d50925af6f472a346f350cc19a30fad13d2c0", -"T2B1_fr_test_protection_levels.py::test_wipe_device": "872d579cf9f96b2bdbf0dcd2cbe91fd5e16555a286620dee48904622828d581f", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "db554f0690f1cc34e5825e08e19892b7649e63402008897e4ff3e7f7f941ad62", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "e64fa82d14ba1bff479126526d29c81d2ca76e7307676f80bcfd87650854e046", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9a8510de7928962da87e3dec4f6a6a31e755a653f1efe9be455d00a6fd271389", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "846c93ec262d52ebf476cb880870654e922f177d097dc5542ab31a2aa53d28c8", +"T2B1_fr_test_protection_levels.py::test_sign_message": "499aa1ab655334cf36c7d0ca4750e61a01be132bf02919d0a01ab82929727f87", +"T2B1_fr_test_protection_levels.py::test_signtx": "48236fce529361b51583e8e7125ba870da5c6846e93f2ef1e48b21ddaf242504", +"T2B1_fr_test_protection_levels.py::test_unlocked": "7f59e3db07b56dd4ad8f18954d9ff157ca544e1b94b00be1b55aedd5f9805d89", +"T2B1_fr_test_protection_levels.py::test_verify_message_t2": "651a5f37e406cbd5f4751d16a4d430d2a8fd3d3b222f3e27695342ed03dc9182", +"T2B1_fr_test_protection_levels.py::test_wipe_device": "012fe61fb16333d582486d7f30349df6c5f902f50830d9f5995f1dc88e23b124", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "46b4dc3869715c6b08c1ca10f7a749024d12b45a38a8a522375bbc316f596916", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "5965ba994d8b741df171ff729b9b68ca65fe52571c06079f9f18adde7bfe5b08", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f53ed986e9b98dea3a93f569a8233e7b8a7bc1924839e1fc9ba5bd4c11faed8e", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4c2fc9d8ddd4ef3fadca637009053b4106a269b076a6e0e8d034a559e38d6ad8", "T2B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_clear_session": "92606bb08ae39488007a5161ebfff9f6692612bcaf79556a9f919591691a74d6", +"T2B1_fr_test_session.py::test_clear_session": "9aca31bd4e8408f98819944f81951eed96dec078fe5ce7d10269f922faf984f9", "T2B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_derive_cardano_running_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7804,18 +7804,18 @@ }, "T2T1": { "click_tests": { -"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "20625261187abd2f01b49fbe13b128fa88638addb802420050ed0d0492bc33fc", -"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "0a4ef50c4cd61493f1af0119a681924898b1270bbf68bd0ca6ecc6c287ec579a", -"T2T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "e0d8d418d171904d809c7a30b2c9804da384463701c628df167e32d65a82ad5f", -"T2T1_cs_test_autolock.py::test_autolock_interrupts_signing": "c66ac8d285be5876d63ac3c75f078738eb2a668ec1cdfdef11f8d5ea643f66ad", -"T2T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "3fb6fef6b48ccc9523659b83e4e1d11e5d7f28a18f2ce6d74a58345333df8496", -"T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "893e601e18cef9da4f7edc3e0f4842c7f3c59aafb6df4ecd63551477f333d2ec", -"T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "14425620334e05b9f93534c9bbabf2a3d5300801085438c84a7f793727ecee65", -"T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "55788725d6cf0d1f341c4557e343a0e3b9845c61e0d297b1d7de5b9137f91bca", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3637f9f8c5a37009b9f4c0ce0d50160b1c30fe8cbfeadd5c437c625cafa0876a", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "77669b69396c6668256165ac27c4089b2fb4a4efff6af5df8c2c05aaba356a52", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c2642403fbb914094194295ff32e445d2b1d87cc09e027acf46864ca33e86ac1", -"T2T1_cs_test_lock.py::test_hold_to_lock": "cae9be494e1bf8cbc1b0a37835e6b4892cec88757ad2b0e4e68f89f3f1f97e1b", +"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e3ffc85608b2cc709df27d13c0e3ad55005e3e16d513125a46e643e46589cb53", +"T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "ae4adbfa41067df277af8c83b21fea26f0b32c9adedde7bf71ccdd0b59defec1", +"T2T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "bd479c3d23a8a82cae0747a8903c4ea3930d89f0826cc1f5b29b92ec5713c27f", +"T2T1_cs_test_autolock.py::test_autolock_interrupts_signing": "0cdeaefb1e8c905a6033813d4eaed9df6cdfb0d66c3fc0de75eb2e63716d782d", +"T2T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "97422056e7f0a297f03a3e9481c680ed1d5e92ba636e2ae36febcb912f710f6d", +"T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "6e13f1a4ae2c8c751ed374dfcf4f946f0eb27aeb25875dbf39ac63dafd156176", +"T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "596bd0ffc488dacf96af65ccba3fa033b8d5ae054d732f9f521bd2d470799e14", +"T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "f0e96f27fde2369b8433ca31fe8d5cf6fe3cf825ee2916ced9d04f1536517291", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "08021d1c5f55628ba04814e63e2b33accfdaf64ec63a3459017ed99a2f04794c", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "521d8367e1060b75317275890ecd98962eb7ef81d9ba31fabd789666353f25b7", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6d511a4276929733488b755fb357b79de4e5edf15ce5d02cedb2e0d95055449d", +"T2T1_cs_test_lock.py::test_hold_to_lock": "e211bb4badb78d5727f3da5f495cee2861206df1604125a4bfce0c2c2f417066", "T2T1_cs_test_passphrase_tt.py::test_cycle_through_last_character": "0df112bcf3e6ebc34c4e7f88e2d9c18c18ac11d763018bc29bf2cd0cca06ca98", "T2T1_cs_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "2b3f4671c1de2cbd6510648ae37dcb8ce2f2e84bc293da19abe5943ea3612ec8", "T2T1_cs_test_passphrase_tt.py::test_passphrase_delete": "c1f8c0a733563756481ed0aaf15d833cfd266b69fab7daa7eeca6deff738c404", @@ -7831,40 +7831,40 @@ "T2T1_cs_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c60b0b0d19fe093de73e8b3ef3a7e65f6ea01ecc736ad6ed45fd44148d050716", "T2T1_cs_test_passphrase_tt.py::test_passphrase_prompt_disappears": "5fd1a1add04b6a38619bb1788676676aa68d900055597ea1cc2118d441bab710", "T2T1_cs_test_pin.py::test_pin_cancel": "1350a7290909796ef76a20ad1f1f4d849aecff45d6858a936369ac274c54ea3a", -"T2T1_cs_test_pin.py::test_pin_change": "7ce9ea97542f534ea8e86b0538107c3e2f38d6537c64c6e948c8c409b43142dd", -"T2T1_cs_test_pin.py::test_pin_delete_hold": "36a93d5278840d3063d161b70e52170f78c3709457b87bce39b8b840a555ec5c", -"T2T1_cs_test_pin.py::test_pin_empty_cannot_send": "3ec2f4fd92e7376200ca08ca0859a513237e83dbe34bd13b0d922248ac338212", -"T2T1_cs_test_pin.py::test_pin_incorrect": "2c2cddca2f07185f8a7fc313f88bf1dea0676a5aaea75123a0794a90dcd0eea5", -"T2T1_cs_test_pin.py::test_pin_long": "208786a56801e50e9d483d9721bee0e7e13ec9ecbc1158903ff776962553bb1c", -"T2T1_cs_test_pin.py::test_pin_long_delete": "ce5ae28be23baa1e26a4b0b4b0af3af7a3a2c7a4d2025f776e40b04336c38e27", -"T2T1_cs_test_pin.py::test_pin_longer_than_max": "4e2f2c929dd159a87d77dc51cf3dbf2f50da95ff0b00c34d9fafc19284c47a2f", -"T2T1_cs_test_pin.py::test_pin_same_as_wipe_code": "980030b51cc93874fac581ecc3611d4ee3873ac9f00365a761008c16f9d2a5e4", -"T2T1_cs_test_pin.py::test_pin_setup": "80e99ad1f29a091f2c6259ddb4af0963f3266bfcb3813719de9b3977aa8d797d", +"T2T1_cs_test_pin.py::test_pin_change": "3f7ef0c621d299653317ac9c63777664cf84d00029a314b265080abe08026718", +"T2T1_cs_test_pin.py::test_pin_delete_hold": "9038e027fad6c0edd5d726cab7e501e910abb77ed0834c53de7bcd190990fe9e", +"T2T1_cs_test_pin.py::test_pin_empty_cannot_send": "1111e143d1e130c9b70eccac1df517606794bece9c6adef43f96eee620723aaa", +"T2T1_cs_test_pin.py::test_pin_incorrect": "3c885eb3612d2a2815459852278b9db9250923d0e6b1672eff7595b6914c56c1", +"T2T1_cs_test_pin.py::test_pin_long": "0ccd78270314566932e3ce9d9416e91254c01837e5ee1f0d1e3559b351945ac0", +"T2T1_cs_test_pin.py::test_pin_long_delete": "91c610d50ca7fb774f614baf07b9904f57a287a6da0b9423e41bf2cd95667679", +"T2T1_cs_test_pin.py::test_pin_longer_than_max": "c62c1c178c151be51bdfbf46fb74b48542e12f167013d3190c19197e10f490cb", +"T2T1_cs_test_pin.py::test_pin_same_as_wipe_code": "f6caa5db396366a5d1ad654eb4b8feb4089b6e2662d28e0caf6b6e8976959552", +"T2T1_cs_test_pin.py::test_pin_setup": "467d33d284f4a18064ad0729c33c1e077460d23f1efcc68df87affc62a0c913d", "T2T1_cs_test_pin.py::test_pin_setup_mismatch": "c14b4c71c2da514c485926d583e71985a6ee11e8abd2734c562852b85f69977e", -"T2T1_cs_test_pin.py::test_pin_short": "3ec2f4fd92e7376200ca08ca0859a513237e83dbe34bd13b0d922248ac338212", -"T2T1_cs_test_pin.py::test_wipe_code_same_as_pin": "2fa2d084bbc6b7319fd515cb41f0c878055f67a4466d3b663959320253992862", -"T2T1_cs_test_pin.py::test_wipe_code_setup": "42b3bb7a93311a5e5876d88fb02a20d829bb8b2b6ada710895ff9d8242f8f9ae", -"T2T1_cs_test_recovery.py::test_recovery_bip39": "58e2ee5e462f2e6a8bc870e25c48553a8975300571f84ca95dd863ac01053544", -"T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "f08eeb1b8fb36878fc420636e8f94f26eba2f94c742146d5bc71bf4223fed350", -"T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "8e44525da87337f4535a5f25f0ac23a341b49c7672e3c16ca086c6fecba3a4e0", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "662e6d35d564077faa1eb4c855fcbbf255b5590b1137995c984ce896f3e653a0", -"T2T1_cs_test_reset_bip39.py::test_reset_bip39": "796d2366b938ef928c4f4021157c15b7ec07e343daad5a0ec373ecfdc921a856", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1210e840ca4853cfe1b2d1458e0c5e4df0872ebe36bdba6f3ca4f62989e01f92", -"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a1977e1ee6f6fb75127bcb40ca551b554acba70a9ab18f0d06d765fb9e855afa", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d6aa8816a67276d50f83a4582ce49a7709ba985cf890813d35abb48e7e946399", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9a5523706ac194b4108b98cec75bf81e383998355d1fcd55a5ce97ffaecce447", -"T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e91bb83330840e2691d3faeeade1b43621f3cb144aa8f38aa425f8e00f7d928", -"T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "e8078df18e03affdd08dcba3798b2f81c4e339d096562023b75fa1436b2fa483", -"T2T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "7ca31effe094026c9e00a78e2e5117e199e5ce5ddf4a4a869899a17193706ef3", -"T2T1_de_test_autolock.py::test_autolock_interrupts_signing": "e08bae0f83bd09aa9bca336daea9038493204d64efc580c4a75018b78b3dd7bf", -"T2T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "0fab68ea14b5c88854af8d91af858cdd9dcb4ad6facaf9e795ed827498db5131", -"T2T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "7b01e4feb90e4327b2c9fe3ddf70ed56e8c68956a969eac065906cbc8ed4bbfc", -"T2T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "4e99f4dffe668064111f70fecba063895cd23f9923e6f164eb00f648fe396c83", -"T2T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "493f869f1ba0294330601931650218298597a239222ee154f87079e6255cdd33", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "79559772e80dc90acb5cd743e5a2084b4ca4ed876a07cae2b2a57fc977ea5a6d", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c89571472236ff2220d13ed5b46dce7a503c222d7015714275a7d7a2e5433cfc", -"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "c3882984d3d61213b6290f11e58a7068d14a2039ef1bd2ff29a1829beeddc019", -"T2T1_de_test_lock.py::test_hold_to_lock": "4254a324366ca37a8e3cbf7f4aa1b7bcb02f4d631ac9e4fbca50a2ed60131858", +"T2T1_cs_test_pin.py::test_pin_short": "1111e143d1e130c9b70eccac1df517606794bece9c6adef43f96eee620723aaa", +"T2T1_cs_test_pin.py::test_wipe_code_same_as_pin": "c3446b0a48892acdb5fc178ad7c18ef6a1d2df14367148fa9bc02c54c9b819ae", +"T2T1_cs_test_pin.py::test_wipe_code_setup": "6035ededebf828bc8d85f1c3ba370a996c1267b1885bc7de27921badf9a244f1", +"T2T1_cs_test_recovery.py::test_recovery_bip39": "f2166fb9da2954b3ba3d45a8387ea2f54fbc5ba368dc8a3bae052605da85422e", +"T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "00d3300ced62470ecb0cca321dc2d51815c420ce7f638f30d00d98bf2544430a", +"T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "2fd13d2bfec6a17af56fff6e74298a1d22eccc162382909741c4f3153887cee2", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "cb2125ecd8d8f508d665e84c3c14a872dcb9600c64cc0b4888f739d31505357a", +"T2T1_cs_test_reset_bip39.py::test_reset_bip39": "bc380add2c1c832aa343fc14a854b97d714b5ec8b88813fc2d94f9f71d067618", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "bd5e78258e3530b21730dc2a5ca021ebe3a0879bb7fdae9819f43e14b2985c40", +"T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5e459400560e5e8e7917639366757bad7adfa7627874bcf3f531925e643043d1", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d755058c2204b60ee09c4052b43086aa9082323ef43eb726023a83508549b33d", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a0657a9c16086f52a05900ac7f8a46347e1e8989e7fecbe80e0799f0fedcf48a", +"T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d759ac31bf3312c03d63a5123f871c7a54803801f270261691bb4b49cbf5bff2", +"T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "f0fa24c4e99e743f4497372cf8ad113b47ae14818692a9e866e5e84a1de36fe3", +"T2T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "47b4aef34a49209c22585dff4dd097fc572587f90d4b30b947df7f1f4170c9e5", +"T2T1_de_test_autolock.py::test_autolock_interrupts_signing": "9670a1cb190e4bb65b637ba0945fed39d5f9609a59fed9984a1fe39aa1550d96", +"T2T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "e62b1cf41e08e27f48ec22dd6357e25fbf3a8b57323c962ff1b443c72eb34474", +"T2T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "0f8c9f293189018139e23d9c50b0d6eb4295404071e73ba3a00d18c2e60b43a1", +"T2T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "50e0e2409b59fc7ac1a4b13d9084e6eb0bcc01dc6edf7820337c3931f19128a5", +"T2T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "32fbc6e3c362f5c0a76060ee2040033692698eb3728d97c487534246f3cd78fd", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "753102ca9f7dbeb7495c3e8d302b579f5759e822a09dcf25de7b6d7b16bb57b6", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9d0b3c633c6ba32466edb74db22544f05d86bcde06bd80c229486814fef0f26b", +"T2T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "639b8d8bf441f810bdf9b0bc4f89b917d3e449103d50fd440604f7231e05ef1c", +"T2T1_de_test_lock.py::test_hold_to_lock": "5332d6e8113bca770c02fac4ea0d772141e98239a1132ba1c6de1c18a1c05c83", "T2T1_de_test_passphrase_tt.py::test_cycle_through_last_character": "724ad717c6e3b31d72092c3218aa420f5f9a84011ad93ad12df65c59d0bfe3dc", "T2T1_de_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "1763e17377d1449b2a72a66ce2641b2ff2cbf5df38540a20c12fdfab833c1881", "T2T1_de_test_passphrase_tt.py::test_passphrase_delete": "5c12acac84008979af157f7153f10b30fa22b504499195318536506e6396ed83", @@ -7880,40 +7880,40 @@ "T2T1_de_test_passphrase_tt.py::test_passphrase_loop_all_characters": "c71a9a7718e3aa21db3c10f2f4d9dd0d6e9402f734ba990636c80af40bbe4a19", "T2T1_de_test_passphrase_tt.py::test_passphrase_prompt_disappears": "1f935cdebf4b5978bd6d92becc760237357b78cc6c98001cf9df274a3b4578a0", "T2T1_de_test_pin.py::test_pin_cancel": "ea81ade44cee7af4c9c544d511974e7a63ef0fa24705ab4dc11b4d9603c1a9bc", -"T2T1_de_test_pin.py::test_pin_change": "c1d33755988d2b66f13e0bf4159df71d5581c05aeb6271746799ff6387764dc9", -"T2T1_de_test_pin.py::test_pin_delete_hold": "8b86285ab31f95c11769618eebb03beb73fd289b4c5d9b426472f771602ce3c0", -"T2T1_de_test_pin.py::test_pin_empty_cannot_send": "8b0f4c727edaa2c74a51d579dcfd5df55951d4702a36157983d643a9db040877", -"T2T1_de_test_pin.py::test_pin_incorrect": "3488d8de10d942dd1399a701669fa0642abfd3cfd9ea0522ff5ec15a936c8d91", -"T2T1_de_test_pin.py::test_pin_long": "7cb678b887feeaa46505cd6305a7d9412b0eeae1db7c44e30766cc96dbe80f0e", -"T2T1_de_test_pin.py::test_pin_long_delete": "b44127d66e72a23c4c93856b9fec9908df255be4d155b69281a4082664909ed5", -"T2T1_de_test_pin.py::test_pin_longer_than_max": "fd90db30ba2d09dc05a76147cff45f2d220f563c8021f2dc3f4b8f8bd22f8946", -"T2T1_de_test_pin.py::test_pin_same_as_wipe_code": "e315b18b3bcfa3ef16e583e6154d1551894f5d9a9a146c41b118f0cc888baf14", -"T2T1_de_test_pin.py::test_pin_setup": "51a35de230520919a071dc2c019677c526ff4e50667f24fb201c03191aaf20af", +"T2T1_de_test_pin.py::test_pin_change": "2559a139995b4812a109f005b0f4489610741ffa0959f9379ac4b12ec378e4e1", +"T2T1_de_test_pin.py::test_pin_delete_hold": "8e5fda9e769f5b39f9e1ecfd4a0826646c98bea540e454c82507ce9fa40c02c0", +"T2T1_de_test_pin.py::test_pin_empty_cannot_send": "230c8c485db43b2548a7d2e85d637c14b18e04d7f995313aac2b96536b68d590", +"T2T1_de_test_pin.py::test_pin_incorrect": "7ce3aad17ad3e7e3e02d167f55ca290bf37501c978957c8b38c974012e30f397", +"T2T1_de_test_pin.py::test_pin_long": "e41dfb8cdf59d722a47df3eb24d698dd0455b50747bad89befb4f0b1159314a0", +"T2T1_de_test_pin.py::test_pin_long_delete": "5c8c9f65a8b85825d81028818025b7b80997ba2d38c3d24402c1568fdd97b225", +"T2T1_de_test_pin.py::test_pin_longer_than_max": "6b034565cf20c1ebe7e72372e3afed5ef687fb89f81df58e7baa500de48233e5", +"T2T1_de_test_pin.py::test_pin_same_as_wipe_code": "674f37a301389153610fa5ff5a24b7a9602db5c5c3afb4cd291ab0715e751ed5", +"T2T1_de_test_pin.py::test_pin_setup": "544a8bc78a69edb67d01c2de11d6ceca513602c6e757640b04317b0228875c19", "T2T1_de_test_pin.py::test_pin_setup_mismatch": "a5b9edf91fbaaa6e3c0589e49ea0e67861bed8022ffb4bc6f837cbf6d1440c11", -"T2T1_de_test_pin.py::test_pin_short": "8b0f4c727edaa2c74a51d579dcfd5df55951d4702a36157983d643a9db040877", -"T2T1_de_test_pin.py::test_wipe_code_same_as_pin": "71d0aff0eba3139965cba57698c4121acfd0750bec1f28d0468b8e9e208a6b04", -"T2T1_de_test_pin.py::test_wipe_code_setup": "fb81ea53b923a2eefc941161dcf488ec521f6e4f52c2c17a5555fc690d0e24c8", -"T2T1_de_test_recovery.py::test_recovery_bip39": "9b1c68e4b89a8d328b7ae32025c2a9cbd3438aabab03d51bd7be36b679a7e17b", -"T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "1c17a4527106240500aab5280074afe3699baa2351c006a835a6173654fc024e", -"T2T1_de_test_recovery.py::test_recovery_slip39_basic": "607e3bc1a785b510fa6a27e386986e168fa572bce9ee352dd74ee1380570bbd3", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "fcbc41ed2b312153f47d589c5e6e21bab2373669c995cd6d9f88fe21561f4f82", -"T2T1_de_test_reset_bip39.py::test_reset_bip39": "e1e62b9f04fccf0fbb14793c83da9df4d8de8bc56083db0d41e342d8fd5f4028", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ede09c533b46478208c9c0d0bc328491f9dc50e5ac19a1bf3c92c1a838bfd9f7", -"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4edcdd947819cc9e137c013b0899572a2aebfafaa74af5300ec27dd3c90d8541", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "05af36259b8d851269264ed479bb27b5337e5822bd63a32dce8544006252300a", -"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "5644da5d223636b9a327924caa2aba449a06b81d1bf7f0deac377cfca24d29f6", -"T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "fbadfd0bde79050231b0373fb531ea769736931e7d5f7b097ddbcc1c6b5b2c82", -"T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "47674288baf2b17f3ba91e7503490901f021f448ae759a2fd25762090d74207a", -"T2T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "e47e94ec1a4ad82bb80992b8b7079f71148b625fcf1424cc6c4f7331591e1c6b", -"T2T1_en_test_autolock.py::test_autolock_interrupts_signing": "8ad95dc90ecd0d73da136e8e4a930593e98221e281fa048b592ea79cf8a46a20", -"T2T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "ede8141b923e58e890e80132a320a8e9664a9fc3a291ce2aba093e8d9f2da1eb", -"T2T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "c4f65d4d2e2d1a075b97c73e2141f32ee77bab1380f02334549ae9e657762cd0", -"T2T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "db2c793bc93acb5228c6269cbf13033939335174e867d187cb2fabfefcfa89dd", -"T2T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "460a0baa5bc5ac0b02bea159d26b0f424e81d516aed994dcd2f98aa1c60052aa", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2acc5b28c96d237f63a2a73fc08d071a27eb0cfa81c0aba16c21c18f051df344", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c013b611ca59b9b951ba77d438e6e0e793be3356286570ccc84337dd69154742", -"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b3470c2b2906b106adc587b7ec2a5c0d75152d95f299915ea2b626e3741d138e", -"T2T1_en_test_lock.py::test_hold_to_lock": "a5739f92ae28fc57769e444408ce5b58223d0d33b368022ef78ea68e0f8c9b80", +"T2T1_de_test_pin.py::test_pin_short": "230c8c485db43b2548a7d2e85d637c14b18e04d7f995313aac2b96536b68d590", +"T2T1_de_test_pin.py::test_wipe_code_same_as_pin": "63f3a5b7c4b825e0369df49708667f0cfcef8bcd53e26cb5bcbc233bf5d9545d", +"T2T1_de_test_pin.py::test_wipe_code_setup": "ab1f71d108bdda802c5a182fdd15a89f6e5b924965170c45b652cc359b488c60", +"T2T1_de_test_recovery.py::test_recovery_bip39": "8eb3c0dfe5209acd644ab4d95e24852f2056adae2d023b25ce6c2de74638a099", +"T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "05782006b68c1f3b1898f46bf3535d0c79181f21c1e5a363c462df9df3744ded", +"T2T1_de_test_recovery.py::test_recovery_slip39_basic": "2fabf58b8ebca83403c9d6a361009116c6d25791c489af35c87d03c5a9093442", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "448e6cb792f1f2081e83accea479ff910023df654bbb00f4186674d8934b300c", +"T2T1_de_test_reset_bip39.py::test_reset_bip39": "2c19504e49aefdf5c54d157b618763cf366f0a18cb1b488938d6ee7f0d6a78bf", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2cbf4015d5c53c9703adbe8f1c0bf0c6ae2b35745a5f44b78a34a141d2738b44", +"T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "431af5b02a95639be50c28c7788bc1d854a0972cf09675286104ab2518e635ff", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "051f4f115f670eb2517fc5bd563f6b03b7ac9dddbc52258caba37d03396eaf78", +"T2T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "223eba7b85e6610289c85cb0f56fd84d80ed3aacbb229ccb730617078ba69a45", +"T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d11cf5398e180f97a01c0d35eddc521512a6bbd923a6c8227f2b43fe42e1c475", +"T2T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "4ad23fb6ba3d4f3b289581d39bb577cb966d2a955d6556418fb2c49d1c0aad31", +"T2T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "c5ecc1b645f656a783b8257fe89e749f2f0b131cda8337b7313de5707a0942bc", +"T2T1_en_test_autolock.py::test_autolock_interrupts_signing": "420e5817172e0ab9fe092a4d5982e3488400f378627f02040998c20f8865c261", +"T2T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "58edde9df329205a303ab46d23bcb6d0e19be0627ddc657647d620435d852664", +"T2T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "f008c13a6fcf22bff173afe7d9ce138c121e55a1fa9ab0fa583d93c1f865fde2", +"T2T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "a2f5bfdb62758f4134b7e3f4cb01984e6a4f52b44ecaa3aebc4c327c7ac34ed9", +"T2T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "0595020b2678bc99d727380ae2980e41cce4ed597f4ea2f86edb143929f8d704", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "44fdf37a39640f9336773c9f71805a49bf385e4dc3661fa9a46ab5e2789af170", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "85b11f748f52b2517822d1e2a2d858e57716d5e6f2ebea9be100d961e1c2ad7f", +"T2T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b91ba96128ab9b194864b9a3060da55296bb5aee8894767ca75e22aff8ca8e3f", +"T2T1_en_test_lock.py::test_hold_to_lock": "8dc3d52634c6d93f18c56b53a4b77a12afa603f619bbb9b417c31c20896d3f74", "T2T1_en_test_passphrase_tt.py::test_cycle_through_last_character": "2a8d54c8014cc0c1bf46c0e4b58d6a002009b62aa8b92db663f88af0ad2f5e19", "T2T1_en_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "6a579067b4395a260d173e78643b67ac701304ea833a112cb2da1bce94cbb102", "T2T1_en_test_passphrase_tt.py::test_passphrase_delete": "6f9fd790c360ea8caa60a183f39d6515ce66493786f71611988f20b6fc5af86d", @@ -7929,40 +7929,40 @@ "T2T1_en_test_passphrase_tt.py::test_passphrase_loop_all_characters": "82ff267d6ec0d48d8a1e25d1e77e598f563449dbff75fca7f2820dc1409fa453", "T2T1_en_test_passphrase_tt.py::test_passphrase_prompt_disappears": "12a0d2dfe50c122326bd7ab6af7dd32008943091757ef6f5e9122dd721414987", "T2T1_en_test_pin.py::test_pin_cancel": "05f5f819be61fec8c7c4341fd23c1bccf78cff93f05d573dd4f528bb0f1edbf5", -"T2T1_en_test_pin.py::test_pin_change": "3f2aaff0a0ddfa44e623ba68cb64c7941354707972532ff8db110df539afed71", -"T2T1_en_test_pin.py::test_pin_delete_hold": "cc3a0acb035a68bc49d3a56d249d5ecc9731a81c818349443bbcd95affc59fe9", -"T2T1_en_test_pin.py::test_pin_empty_cannot_send": "bce1bf7c07fb019671e939db931457dec73d66d25b6f86daec704d4e43931374", -"T2T1_en_test_pin.py::test_pin_incorrect": "9211de4de30ea56e52caed1b7c25beed62eebb2d38fc6216f8a041af332fd282", -"T2T1_en_test_pin.py::test_pin_long": "baa135f64a3cdcc534c5e45512d9ccbcff6ac2a0456a1989a616db1e6a0fe159", -"T2T1_en_test_pin.py::test_pin_long_delete": "ca23678e83227628143f662b9fe37f9fd33fe04f156ca52067e6769b38e11ac8", -"T2T1_en_test_pin.py::test_pin_longer_than_max": "4df013896e051ebe48046878fbb3815d2ce34c3c8a992897f4031fb745fe43a3", -"T2T1_en_test_pin.py::test_pin_same_as_wipe_code": "fb196ac02453b894d7773276b67174c129f270642d7f83051464591f307e11c9", -"T2T1_en_test_pin.py::test_pin_setup": "2c10614e7ad703ae74bd95de372a732ed6dac524d83430fbb43cd36d867dd8e7", +"T2T1_en_test_pin.py::test_pin_change": "4cd3384801a07ea03492ca7684edc5a8aeb9ccd58709ae1cca95528f98e930b3", +"T2T1_en_test_pin.py::test_pin_delete_hold": "8fe1fcd9f799120151a6478d96cc2feea92cbe478a8bac5cd7213d72f6f8cb88", +"T2T1_en_test_pin.py::test_pin_empty_cannot_send": "b2eaf5a3e4ecdb4b7a3a6d506aed8d72695524fd024d9c02b9b3b159889c94c3", +"T2T1_en_test_pin.py::test_pin_incorrect": "779b283309239f63ac2f79f738104e5e7616046e09434f60932c877c05a7f131", +"T2T1_en_test_pin.py::test_pin_long": "65d9ebeb4f07ad055e0a5f996a9a2f9c33d423b15cfc78f28ff48bf0f9d61092", +"T2T1_en_test_pin.py::test_pin_long_delete": "867329d6a62d66269e0d54ac7d628fdaa6eb4b9756f58256335eb4b0ad0f4157", +"T2T1_en_test_pin.py::test_pin_longer_than_max": "de0b3d115a29a161442a069a87fe53785f765797674fb7b96dd75ea482d5dae0", +"T2T1_en_test_pin.py::test_pin_same_as_wipe_code": "8b6d5f6bab4d6a7cda3de20e3732ec043ffd5ada4203f507f8e92c1750a7ee6a", +"T2T1_en_test_pin.py::test_pin_setup": "3a6879d8395a0cf9cb686bb08effde2354e22892807030e71e4b1402cc4f79c8", "T2T1_en_test_pin.py::test_pin_setup_mismatch": "2ccaaf68e752185f567a710b9a1c24b7e0157314c7e9b8583658b320c8e6cc79", -"T2T1_en_test_pin.py::test_pin_short": "bce1bf7c07fb019671e939db931457dec73d66d25b6f86daec704d4e43931374", -"T2T1_en_test_pin.py::test_wipe_code_same_as_pin": "f13b6559d4d73c2853218fee85dc951c41c5b4e3867ee0e989443940233f2f96", -"T2T1_en_test_pin.py::test_wipe_code_setup": "3d6a04cc7c8d3a061758a9559277a548bf4492ef59afd1d040693372d197383c", -"T2T1_en_test_recovery.py::test_recovery_bip39": "9878cca47056023ee45e4dfe09dc802897eaa8fee49113d63bc9d4d020121220", -"T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "c90651925bf52dc612ecfb242b07d30499d0743aff5d55005d39068882694523", -"T2T1_en_test_recovery.py::test_recovery_slip39_basic": "d817d1d2c1dda9f7ddcf7893e94061139562cff3f41d2265ef4387fa6e188fc0", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "1f48d4a343913f3923addef8d54e36ff614f6ecca07224fa7912c6f1761df149", -"T2T1_en_test_reset_bip39.py::test_reset_bip39": "24750faa43d950f4c1cb503e800eb80e8f4ae97a521ce60b3cfa82fa662c96dc", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c902e8c822bcbc93b29678c67740d3ff79bebd137ce61da7947692406794eeb7", -"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "808f9be629c08ae567dab19cc902d41ae95c7b542e18c5bbe996d7d14972825a", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d5d151b40e95602e734b738a067f96882c2162ae7cbe2cbcf8bc910aa757f6ff", -"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "9b20433215b85bf3c529d21439773bf66fdb06fce737e6339e393aed75d01ec3", -"T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "a6c27b94205c9dd53a817612fe0abd85743079be6ea00206626be171e1aec455", -"T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "e32e681c59dddd9e0b52d559d2f843dad022662fc56507c1ef76c1491aa8728d", -"T2T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "d3a25e5f32fff10662159ae1d42a057db28ebf7c331d8b1910ae8e0e4e74f29f", -"T2T1_es_test_autolock.py::test_autolock_interrupts_signing": "964ddc69ff8af88c8288348f38c175fd9ec44d327a184ac5d1a50c30407bd2ce", -"T2T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "fc14a93ff103bbea087b29fc1d3c4115e6107d490021d268d3c81bbb9ce9e30a", -"T2T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "40b6d5e8d867f10368a871dd94ca2fcfabc33f6dff580eb3e44a439c857c3796", -"T2T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2ab38b584b868bbf22501c70c13bc4fec9c376b65cac52cfec63836a98f2b703", -"T2T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "b6077aa0401c1a8a52f69272a0b8a1e99a4928a9cb3d1fd7c7e5c3682759ed49", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2a2e244e53664db0da2d51bc61f715eb3aba64eb9c55a408788299508856ab4b", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "acf2c6cd992e38fb6de61331407550681009727e7b0ed78eb9f2431d72abd655", -"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "38ad043d37210a03347f95f33b587783b6bb59b17094986a5751b676bb95543f", -"T2T1_es_test_lock.py::test_hold_to_lock": "11c1e5e33d8e6046326c9c30f61216130a83ca9916172fef6808080bc9c67216", +"T2T1_en_test_pin.py::test_pin_short": "b2eaf5a3e4ecdb4b7a3a6d506aed8d72695524fd024d9c02b9b3b159889c94c3", +"T2T1_en_test_pin.py::test_wipe_code_same_as_pin": "ca637846a0de6a5f5b8eca96ae2aa4c59432516bb28352b5e23dbfac470fe57b", +"T2T1_en_test_pin.py::test_wipe_code_setup": "01974e0c3a9169cfbe617c238fc73c20750736e60e52ad32ec170c829329823f", +"T2T1_en_test_recovery.py::test_recovery_bip39": "0246dc05c08fc0f59685314448ac43bbd95599d85b252abc31d258d435a98dec", +"T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b2a434341e1f84d87bba74a742b9387ea37d85ed13f596b4228c9a5d84444120", +"T2T1_en_test_recovery.py::test_recovery_slip39_basic": "186037afb1c137cba14536c50f3ba854a10c289aa9792df59847e385671d5221", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "9d24a9538f3e10de96f5115db283813eccf6a5c471d9e9997a93c8a8b359b6c6", +"T2T1_en_test_reset_bip39.py::test_reset_bip39": "05255b352fde7646a698b74808b3de04350353ad7d8f7b2568a14967956c8bc8", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "46e964c0d9a2530a156ae7e72265a917d55931cd4fd0e1087e48a49b3f100375", +"T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "fcf15ef196fde1120248e0b16a8f2d464f5f539a5c7529f80a8a855e2721f107", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0fe9495c0fabdd09be97b06972d593ed2de5a3aa9cf2c38b500c05f4d0097d08", +"T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1bc2c12f2bce2f19caa48131b5667c0c163c611b0fdfda502ebecc25988c74e3", +"T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "0dc64fd0e6ac807d41d94dafbd893d388b1c91b0d4b98d1caf17453588ff1858", +"T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "ef6426713b40de5a54e3bf69e0ebc49f3880447bfa60df49a7078b52ae6fb8b5", +"T2T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "3a0a9db8772a4e0d8e04d1e0631fb2f1c3dbcc85ab413060ba2fbda4149003ae", +"T2T1_es_test_autolock.py::test_autolock_interrupts_signing": "ddf2c85d611de1566f56657515a7963421089b98b0ae6f52db707363e7a4e4b3", +"T2T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "7ceb6ea59fa17ac0ef8b66160c10b8882339dc390e53fc82c4e2af5e402f605f", +"T2T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "5cf8d43ddd6fe5bb2da2cf2657d4daf9d8debf084499ba53a722a3b8e4d4b1da", +"T2T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "2c59dfe54eb6d1e03535f3b90aab7f290472e3b2b7c9601c044bdafb4874e09a", +"T2T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "c9d08d5bd167ee5c9fc7789a4b082f18e765b3767b6e459cb376018867e60ea8", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "065e1f30692be0c5f40fb5da9f9573da605ce0ae7cb788e3468957d99c9ecc06", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "8a74b2c64a7ef5dba66beca504b81cae89b75f6a10fb45f84800802946b7dea4", +"T2T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f311db46c3fb126d4d0ac377fedbd02cb6d0e9f4ea377e7dbbae7f605f7bb5d5", +"T2T1_es_test_lock.py::test_hold_to_lock": "a8bfe1fe2201b96962bf077149f0af482122ece3e04f5d094d83f84b635fa63b", "T2T1_es_test_passphrase_tt.py::test_cycle_through_last_character": "ea7130f1a7e497e80a5d4f481daa8376bcc7c12781315796b9e4f92635e633d0", "T2T1_es_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "83928cc5e45aadb219d9d7236371bfb70f96d3b8e896085cc346776aed1c00ab", "T2T1_es_test_passphrase_tt.py::test_passphrase_delete": "f7049961cde87ed77ed2536e73faae8e77b8d30d9d75dce9465bd2c2bc5ae809", @@ -7978,40 +7978,40 @@ "T2T1_es_test_passphrase_tt.py::test_passphrase_loop_all_characters": "974cb2879ac66ee32b9342242fa12c8cd8f72102fbf6323e47245738742fdb01", "T2T1_es_test_passphrase_tt.py::test_passphrase_prompt_disappears": "874ccf635951029c0322e6d8b69ec3b9ef59a18cbd6d39baf9589fbd8612331b", "T2T1_es_test_pin.py::test_pin_cancel": "a2e3180edead65ae2d612dafa42867a2f510d3a2409fc235101be47d1f197fb1", -"T2T1_es_test_pin.py::test_pin_change": "e34f8d1cc0f3f3b6a73d2e65fd7bd02cca3b1723de59818a295f4d2c06806770", -"T2T1_es_test_pin.py::test_pin_delete_hold": "d6ece13284e3a4815144da7cb4930070d4c8ae5c3b1cdac2d4f1d8daaef1bb2a", -"T2T1_es_test_pin.py::test_pin_empty_cannot_send": "50c4fa423ab0f590e7faf06e23877d9ee33d438c9add671487696d34e0f48e77", -"T2T1_es_test_pin.py::test_pin_incorrect": "9cfeb896de5072aac7c39413724b0419931dd2f0824bb01e04fa5fb375a97d91", -"T2T1_es_test_pin.py::test_pin_long": "70ed9e52df47749e8f90d5680a16dff4aa45ef26b459b832ad980216bae97371", -"T2T1_es_test_pin.py::test_pin_long_delete": "4c8ea3ef32fffa7c8dee444d45e8339a058c03fe27f276fdd3fcd75f23ed2556", -"T2T1_es_test_pin.py::test_pin_longer_than_max": "87672104aa3f9e291da29d8decd54d812113b82dee9bc7197a36f1c427ddf68a", -"T2T1_es_test_pin.py::test_pin_same_as_wipe_code": "68d46b5c76634ca2a35834515cdff75af7bac03a7550b1c9a20d119b71fa0a22", -"T2T1_es_test_pin.py::test_pin_setup": "c346762fcfb91b56683bb1773290866d5156b181c7f1eecc400c9aa82708517a", +"T2T1_es_test_pin.py::test_pin_change": "65b28b9be2b44dcc0a48c9e310865bc984685da48583adb713596d788634a47b", +"T2T1_es_test_pin.py::test_pin_delete_hold": "57cbaae0d86ba5e2e39ea0b3ddab3710190e30c703f4ffb7f7616e7639f4b78d", +"T2T1_es_test_pin.py::test_pin_empty_cannot_send": "11be7e2b4820e854a35317014550fd9c5476f258f7f97a0da97cf28eb053817c", +"T2T1_es_test_pin.py::test_pin_incorrect": "badea72e152ca2cbf84772127a5f2fda630c4e697b6223536ffc9b5bb4d50ca1", +"T2T1_es_test_pin.py::test_pin_long": "3137281b4cbbe92d47ddc2321f1a91717a5625189e96ac9c7ea4701017fc8f5a", +"T2T1_es_test_pin.py::test_pin_long_delete": "9977214778426c89bb2382eb146f31c762a3211b311d07620214ed59e3cd1797", +"T2T1_es_test_pin.py::test_pin_longer_than_max": "8fbb741f26c23f0172692438fa61e3e9a971cd2334b5fec5cadf9f127f5e1528", +"T2T1_es_test_pin.py::test_pin_same_as_wipe_code": "ec877a89a2c509e7278cc31f217b0ef8bcd70ff4646931b1cb79cf3a6e61f0fc", +"T2T1_es_test_pin.py::test_pin_setup": "a65c5684452f57f76a5d8c0eeffab59cf338b2608b8d116b4b06cb085d38732c", "T2T1_es_test_pin.py::test_pin_setup_mismatch": "d5404828241cfc928c698a6f7ff07a6c48905990c2479ddc54c40cb4eee5a898", -"T2T1_es_test_pin.py::test_pin_short": "50c4fa423ab0f590e7faf06e23877d9ee33d438c9add671487696d34e0f48e77", -"T2T1_es_test_pin.py::test_wipe_code_same_as_pin": "a0d0fd07943c787792f659571549f1c3c716e7bebede93d5e00ca1032748e5d0", -"T2T1_es_test_pin.py::test_wipe_code_setup": "b1baf2e578a21aca4a130a3903f9ae51b32c0639d89d1d862284d348925b2944", -"T2T1_es_test_recovery.py::test_recovery_bip39": "a82be5ecbdf91e860636537758eb19f8aea27a76e78b3c275077bac4982c52ae", -"T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "12a96269f52788419523af93d2f34bf2a8c72e9116c6948c5f81d296b5df8f14", -"T2T1_es_test_recovery.py::test_recovery_slip39_basic": "595438a8dd044db890c02231f473d6c168a833585acfd46dbec0334e70a6bb96", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "bc4e28ed88920100ac05815c43e34f36ba0258b5ce07197e37ac84848e8cc814", -"T2T1_es_test_reset_bip39.py::test_reset_bip39": "b12db06135c50bed8492b757cef803fe6ece5e4e571917dad60e6f69c75e63d8", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2c68e0cac7449ad644cdd60be655803589f62f4d02496425a2848783489939c8", -"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1ae2de2a191816d2483b733740da6f2b139f1e925acf0e2766175e524be11803", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "89553523cc47f69e74e1b715fa50e36558b4e17416b5d95823f90c9b1228ce7a", -"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1730f41f208c631f56bebbf15d990ee0d219daf42fae8dc8b2164ef1fb54cd1e", -"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "0499c57774a9e7d2a18e66eecdd6f97e18f22ef2eee1cdf63b49a22e3a60cca2", -"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "392bf7bba045857907e19d5d67f739ee561bc3d267f78a98704e47a68789e9c3", -"T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "af73e8e574ef84c98bd6859df5bbe27968c0e9a5f81a1e5e442a04f1eb567352", -"T2T1_fr_test_autolock.py::test_autolock_interrupts_signing": "1c5b47174c13e08952840e0364d00dbe5cd3c2192a322426f6ba9d84edc155b0", -"T2T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "66f663cfdc7435a319ebb1eea24e95f0192d126ea30e6a16378fed27fa2c2994", -"T2T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "c8a274db81effeb89e84da805b2d35f4fa102380e8449fb7c54d5d8f6463fddf", -"T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "f38f6472b8844173866ac411b877ac13b3c7532c3e1bed333e372d29c5200826", -"T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "53c0576723532458534e7d221644f5ea12a25f0474ce20d81b29833ae15cc9af", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4d4ea9d6b060158149a8fdd67469c8a3b285329a90e387f24cdcfd44256e6c8a", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "df2daa81bf29e8b827c4b01ad6a738c72d1abd074b895b6c342b1b8d6a4cca86", -"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "bd9c0ae1fd1bc955309e04328591739f81fe79fe73ad0b001ecf230504f66f7d", -"T2T1_fr_test_lock.py::test_hold_to_lock": "9806bca2f87c93ad68284e812c702177535768017bccce6e6264ca4dc63b7c30", +"T2T1_es_test_pin.py::test_pin_short": "11be7e2b4820e854a35317014550fd9c5476f258f7f97a0da97cf28eb053817c", +"T2T1_es_test_pin.py::test_wipe_code_same_as_pin": "9c295e0f8093b5e484310899f5b9f93ca68581e1be0d569d3eeb2e0b763490d1", +"T2T1_es_test_pin.py::test_wipe_code_setup": "e7eeeafa1baed438c6eaf7983a54e6b7ea186f2d117e59041d9d63afb30d24ba", +"T2T1_es_test_recovery.py::test_recovery_bip39": "9cefbfa32e60aa0e9fc3f0ecdecb15bdd1a42ca90437629e3800f48a873ade71", +"T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "2d20545f8ae79659d805722e16510237660dedf46ad99405d0c1b455a8c3c8ce", +"T2T1_es_test_recovery.py::test_recovery_slip39_basic": "3078b430c266dfc210f8f5e6a0b3f65659036354851c311769da3565c70039c2", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "d94bd04bfbc22fda7951e5f0e05e9978099412409db1c7ab01583ad83ad94275", +"T2T1_es_test_reset_bip39.py::test_reset_bip39": "2707d73e704b5dd08ac93498aa4cd578be2694c87f3987f5b1332352a7b49e42", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cca940a1d92e19585b70f921d41dcbdb2b9559cf82612c4cc18ace2386cbd11c", +"T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1eae37cc70471fcf46f49dc3b3324618c76ab9778bc8f1f2edec0c483505ebe4", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "30b807d4d42ef93a3942c30b018519fba6b191a71862f081e84163dc5d8469c0", +"T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "54848d33f1379320133ce761008864dfd6a64c3cbd904fcc12e6747daa5a8bbb", +"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ac06ebf381cca6956de7acdb46aba82a870f4be2c8c3fddccb60f6dca3633310", +"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "d9ccea72795202ae2cbbb6d693c20b4a8162d8cabfc1bdc6ccb9febf2d912199", +"T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "547a0c5636b3fe6df38252dd7dd293833e52fc3bf42e7891c71d6de50d30a6b7", +"T2T1_fr_test_autolock.py::test_autolock_interrupts_signing": "763f133b86f8e563c68f698e9970e8b8a00b5823558ae36aca4f4c25540fe372", +"T2T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "6cab65c35d64b59abae055e6664061b8bd1362b6841f1f7a7b90f81ceff282f6", +"T2T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "a386ac778fcaa8229482476f4afd6a95c4e66a0c1c5f5198044784c7c5eea3d5", +"T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "d5bf81105ca2471e707141642f0994e4a63b2a3fc21bf0337edab4be1d5d16fb", +"T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "d722658e30a8c05c8434b85eb787598b9b9d2c3b20d16857d298f465ca47062d", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1e09442a98e0bf71db3cdbd4cbe3e5caefd2e01b183adc0106601c928bdc1ddd", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f41392c5534d2ba3c0317b2d788c895e6e2266b5cd0d536b14481f108ae62b4d", +"T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f6f95f036c914ac9862fb7d4ae4447ebc54e8cf65d06194b09e6ac9681f8984c", +"T2T1_fr_test_lock.py::test_hold_to_lock": "d1393e135203c6c0231e4220b3b623192f25392023091fcc33561984441c702e", "T2T1_fr_test_passphrase_tt.py::test_cycle_through_last_character": "8fc27456d07cac43e19b42f926d5457ab59ea7c2ba293834c098a3aadaced31b", "T2T1_fr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "17c0b3b02c7f3204455c908bf1ec99eff7c64e11539d8d1f4d95eba567748757", "T2T1_fr_test_passphrase_tt.py::test_passphrase_delete": "4b0c7f08f8e573a8df489f1c342bc52637fb0e5a306a42471a82668c443fea62", @@ -8027,28 +8027,28 @@ "T2T1_fr_test_passphrase_tt.py::test_passphrase_loop_all_characters": "138f00a9fd5d8d49fea2062b74d3518ab6ea0c0442453743897ca9f4e4001610", "T2T1_fr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "2338104c8aad606e9ccfa0774ebe33a688c5b9237289e8d08de16fc6d6c19426", "T2T1_fr_test_pin.py::test_pin_cancel": "d042a69c511b077e6feb819da7234dcde385179870b46f968221be395a3cf16c", -"T2T1_fr_test_pin.py::test_pin_change": "1bb622c680c0b28d7a95a98fe297dd9ee576871ddc0cde8b3664f92b66b0d5de", -"T2T1_fr_test_pin.py::test_pin_delete_hold": "bb2293941cb22106e2c4717af9713897ad4674918748742f34d30a978b3329b4", -"T2T1_fr_test_pin.py::test_pin_empty_cannot_send": "f84a6fe4df15ad1708deaa8f4ba9d02fa5ac9539cb97aa7ce094bde6999d83af", -"T2T1_fr_test_pin.py::test_pin_incorrect": "8565533841bb5a7f10205d6d2f5b5a944f42e25f47c97a39e6c958e9589d34c8", -"T2T1_fr_test_pin.py::test_pin_long": "e6acc051b875bbc2f0455bc12853f7b0947993a6f244fd49fee3a83f8102d437", -"T2T1_fr_test_pin.py::test_pin_long_delete": "49fe0c6133b8fb8658e7efa7edbcb027ac40aa09b90bc394655ee9e5a6d4c8ba", -"T2T1_fr_test_pin.py::test_pin_longer_than_max": "5a90161aaf3322e30cf311099cfbb8443fcb389f8ea8bf9b48d7fe21e0104bbe", -"T2T1_fr_test_pin.py::test_pin_same_as_wipe_code": "2508575feebdfec80f05418744e2d9234f5fadb81a476e9f34029612d195123f", -"T2T1_fr_test_pin.py::test_pin_setup": "1b5b1d136d01553225dda664fa5867d6a03285fb9a1c4dc597921dbd2cbab1e6", +"T2T1_fr_test_pin.py::test_pin_change": "e0567e11a91bfa03756a508d95cd890488b1837268d5fca7635a3df52b53d5a8", +"T2T1_fr_test_pin.py::test_pin_delete_hold": "7afb576d53368892c3d830d20d2e40ee554f5c7f7ae21f5d7d81497b734b31c8", +"T2T1_fr_test_pin.py::test_pin_empty_cannot_send": "b3c98a0d8d9bb09f2a66148ac34d91d48d995a45ccc9ebc987f14d82f9459494", +"T2T1_fr_test_pin.py::test_pin_incorrect": "0d863174fac356b2ef8c143fa9eaa06456272164bc4083e2237990b686a24b12", +"T2T1_fr_test_pin.py::test_pin_long": "ee73b6407e01daa956943177ba790ad571f492cec73d2eb6d92bb6b853002076", +"T2T1_fr_test_pin.py::test_pin_long_delete": "4b6941799da939fe886ec2faf9674efe837627aa9f37085295d444b70a272f9c", +"T2T1_fr_test_pin.py::test_pin_longer_than_max": "a67765ef72538c6219d62fc7a33bf424f23c9ec63d5f6b239263fd68ea76369f", +"T2T1_fr_test_pin.py::test_pin_same_as_wipe_code": "e457ce25d3be4485f4288d9b5f4be1c0a78afd922ae2bf4c9a7d0d89b80f30cb", +"T2T1_fr_test_pin.py::test_pin_setup": "c2bc0b444070c705fe1cecf69b838147a121511e8a474fc9d970e4abed6d38b9", "T2T1_fr_test_pin.py::test_pin_setup_mismatch": "68b8d7176492ade4cee98bdb8a8b30cfe2870b2a9c7a69edd8209690399e21cf", -"T2T1_fr_test_pin.py::test_pin_short": "f84a6fe4df15ad1708deaa8f4ba9d02fa5ac9539cb97aa7ce094bde6999d83af", -"T2T1_fr_test_pin.py::test_wipe_code_same_as_pin": "292359ab8f71d63fb4a4143c3883232fc78ab5515762ca42f81fb038c190cccf", -"T2T1_fr_test_pin.py::test_wipe_code_setup": "9dbbf390bab845a1f4733b5a12792b7d9ec977fece9ed477d9c4d95b18da0456", -"T2T1_fr_test_recovery.py::test_recovery_bip39": "2d933f5cec5d4b6b6ea329fd0b9cbf8b8665f5f729a52e1cfa43b7d34efb6660", -"T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "066f91f58af2e3d3e9ab33fcc31673833ee26675f1f5aadfd5cc95f75e7f224e", -"T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "c45774823c8c690d9fa7af79133bfd3df9176bb276f7b28edee9f9f37c844111", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "bf636dbf2d629e4b90db5b923a6bfe24faaccc788765a67110bb28d6471ea533", -"T2T1_fr_test_reset_bip39.py::test_reset_bip39": "0e42fbc13c2f2eb55e31b1e7318d5256b7c3acbffd5c976ff41739e2bc67e0be", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1af6e282df8052a01a894e2661f89285bedff053f5cbbff3aa328fc369f1096b", -"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "aa033c5921dcc92c1ec3461944849509bed236f55b08fecad8986a93bea13e36", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f395af5333eb2867b1a40c2736e5a9b63e2207e718c210d5b740a65ec66dec7f", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "13ce1ae284cecee800f4885f21f83e1c1ca1d368c5f2d13763a9a35d71b47f37" +"T2T1_fr_test_pin.py::test_pin_short": "b3c98a0d8d9bb09f2a66148ac34d91d48d995a45ccc9ebc987f14d82f9459494", +"T2T1_fr_test_pin.py::test_wipe_code_same_as_pin": "40f4b0505fa503476b2d3fcf5d6c78b732addb522d9c6ba5d7414048ceb6a9f5", +"T2T1_fr_test_pin.py::test_wipe_code_setup": "bdd2e5e200b8333867e017e137a80ef9678102fca527c74eac369825a73cffaa", +"T2T1_fr_test_recovery.py::test_recovery_bip39": "88728103a35a260aeb9e91c66067d7b2f0089e5081556b91a87213e4fa9a60ca", +"T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "4d99bc3689c09a6c237840391449f7e229e881bd43a26e14c7e28454b4abb008", +"T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "a59ab84ee2374a1cc89c591fe33e303081d916e50ff4258416af7dbdd1ac59c8", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "55860008b2c4dffb2e8fd0eedc0327aea47822e717d5ffe971a201a82349d2ab", +"T2T1_fr_test_reset_bip39.py::test_reset_bip39": "c1bcf2768d4ac54af417ad7468ba40c13c16c80cdfcf24d455e96199043dfb6d", +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c2cbedf1d60c5945d8c2500010137e8d29ccfc40f9be7a860f6c9d6d0933bc70", +"T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ad49d9bb88c4b720471ee7c7d01c93f1000fac1d9c1c4395bd543dcea9f83e4a", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d03406ccc95081d4ac7843698627db11ec4af989c04a9424307a3c0eccd735f8", +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "cd94c1115ac461e3da699fabaa6bfba3a77e21591b52882aa2dea0deef1de58b" }, "device_tests": { "T2T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", @@ -8066,8 +8066,8 @@ "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "b3cbfe5991c49b088827c9bb5d22e7b8267f85cc3ada3e0594b62845f2df75a9", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "509afffd6ed07242d5e2c5c1fe216e9a277f42d5f9d459084db3573f59bdc5c0", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "9b5d0dabf97a59321f37f5fe358d80762748326369de128e51c5f0c444c7e9f0", -"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5197d28874426c27e0c6eef0cb2dbbc536e3f8b12ed31696b71337212f43a9e5", -"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5197d28874426c27e0c6eef0cb2dbbc536e3f8b12ed31696b71337212f43a9e5", +"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "931047bbc6742801a6f8c0e594c9b38f3c0e3c5d0f8be8e66eebb04b5983b533", +"T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "931047bbc6742801a6f8c0e594c9b38f3c0e3c5d0f8be8e66eebb04b5983b533", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "1239ab191a3617f42b7158c9b00dd1aaa91d62b895fd0a32dbbc3e99a7326892", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "d878ddcd406e5d02a65cc536992735fe257d07bc3791e05c30a4d2a574c6c5d3", "T2T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "545e82145565de5b2a8f9821f039eeb1b9d20743ba54233231091899377b12c3", @@ -9135,57 +9135,57 @@ "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "48c9fed5899ba9816aa5ccd5085d0dc2b01ae573b9bb814bb1f8ed716775e1c0", -"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c15b5050145afd3ec5a36c6e66daf38d88f4ae0aafc4ef5ca86b8935907d395d", -"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "455402aefed2eecb7f15376b4bb788e5d10b8da87c27c858792d197fe4aedc7d", +"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e3db01f64270276080e13832170e3236a7e614cba06b8261bf7b50eeaa144f8c", +"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "a34efc5665eb97ee9ee6217f9bbd2f6badfbd795e0702bcd338c25800c26c656", +"T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "e6c49688d024d6b7b591422aac7737b970fccba049862a7655535b3c520d0e33", "T2T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "67be61e512ebefbec254071de7d5240bf0212f252d040101445b9bd1f5c056ee", -"T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "b2c436e5090a0709263d8ad6f6f0241cf2e52f167c7d5637655a969818e185c5", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "6b203f4a0c212ecf02549753ed654dd4d653498ef03f98e080e9fafc635e1564", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a2e854a8e34dd56a3bace04c6c6b0961975799834c7459c4fd41318f1070f7fa", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "12d1de022907e062327b99affdc950686cd56d65bbaa79768c1c46d61c2d58fb", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "2bc5b45e953da6afcbeea8a6f9634cd13309107e1f0cf2bd36261be6d21253a3", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "c760aa0705d64ad5a37dc1180e8d5cd1d9e9846cc71c8be1b8be6a73d9cbb22a", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "9933d14430c5130ebe7ae5d8ab8eaa80af7be2f9f98b146e71ffb13697a01cae", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "65a51a3c3b484896d4c33c0551062ea034ee0ea03b6305d1a3c275da6520e764", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "063c19aacfe7333d1ef85c8454b8fa9031b4b2615ecde86df3e5c23828223b08", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "3a0fc68237440f353047532c57409851c238d7651926bd6da4e0ae15ef7e90c0", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "b852ddc5b02c77bc5c546fb9f4b9586c8cf9dc8628c6b6d2f4744ac1e9a99efc", -"T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d6efee4206d88eb3527b1fc49077be9a15da98bc501b449b3dc55008924644ab", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "669ca492e913c5b5be50ffcec67b1b0da72ee82678ce553f0e22ee9889a3c5be", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "6b203f4a0c212ecf02549753ed654dd4d653498ef03f98e080e9fafc635e1564", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "344b2a3dac3cf2db5e602cc70ef0ec7c9ebe486faa71126cf031654bda7510d1", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "cc6d031adbf11d9553928ec2ddbddafc9d1b9ba648b59cdcaf269c7c403fc057", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "87c9fbf9d20f0f3c5cfadde5dc8289dffb85c333c41ef8373a3aed99cff4dc9d", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6bb2c4d0d49645388b2aa196be95dd88ec327be2c34318c7a45ceb16aa929347", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "75813faf1aa890f60d12e7066eb2057438903676a3a3a5af7c9604f5d839097f", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a94ecd82c03f2a38d25695d84089a7f5e216c346dedc0509ee82b41260bc7a79", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a05d496ae7214e42743bf7cf49450821a31bf33856692584213c879cf71ed9bf", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "e906015ee7c9b4d3cabb5626758ab81f6c059ac8223b0bd150a2067575b6e81f", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "396527cd8651ac8ab00dab4b0c9e905a32c879271974713f0bc891888040d97f", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "591d5176a8fe4edd394af8bf6c9e2f2bfe6a58a098504663eac4563b2d2a3d0b", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "51162efa5c32e54289ba0d1a5d1d5c103c3474bf3c2533bb35ecbf337ad449d7", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "c6ab1d80ceba8a4690d20f7d1e1a806f1147a3eca04e2af859de8896aea41746", -"T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "772d9ce662486874e3775d8d8f5084df18e837ee81d21d1ef5d4fd9b77240682", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "004d7ae338322c8031977b795d8b159329884186729af0e0c7ec59ad92bc8ebe", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "0bb3ee53fcd98e8e211ed3897dd34d212374a07f0b27554cd07382cc5a803ee4", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f9121d4e70a0b4b70cfd8105003d129c4fbb3260302a59b0d357b207e5f8f333", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "8bd54544649f8a3230b706b7214c7f639d180d63ea43d8eb3919897ee24ebef0", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2c7a1b8dfba9e7819c66d86cdba917dd345a471947d64876902c051ed94a71ac", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a26c4a554af19386459c893f47dfbe4d3e786a8674b047ffd84441ef393379df", +"T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "119baa9b5d045facc6e40144e7e7462719591fec4e9d345cf03012c4e4f05160", +"T2T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d8c1d99618fb6d649668d40c1409b95e2a033a2dc81efd7dc64f53405da1abbd", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "55485084a3d2b1fd48afa7b65149c110e9353ab56e5e762ff4ebe6b6e4cc482d", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0442c762d97a7d1ed28e9efd4425dcaf570f6ef66ab58a847ab3d47ac8a41343", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b52b40c236536968969937032f084f70f34bbf45e1d937caecd24561838cf56a", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "b20ce960d3b7f10a4202e648ab660acdb15e6a50933db7697cf649740771259d", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1cd42c58801e350292146d86180b5104f6233e3890010d6f880e3eb2c118294e", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "25dbd2ee6e0a974e2ed0652ce59f03c6c80e9b99a00c9b3415485d7efc3d47b6", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4aa39923eaa6cd125b2748ed23a4742460dc8226ac92bc71bb8ac3da00c5ecac", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "0410358f73a68e6162e04bd2e1e92449482f69757d94a2645bf04161730f49b5", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "a34406cd39108944bdbf8aaec0300a5260e80b13b7a7024c17bc887178d8bfae", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "cd025f55e51082f07b40360a7c34294ff3aadfbbce00b1654b88e38da7c23127", +"T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c50f8f8da5bcc89768e792ce138af8a09f6acbc77b82ea8d9bc30156a61d5163", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "739899ee619adfff62533347f0c0d100c22f60817e21cda63576ea063db09782", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "55485084a3d2b1fd48afa7b65149c110e9353ab56e5e762ff4ebe6b6e4cc482d", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fb83744721ef19e3a8579dbf37aa022d4b2c838a04bc2c6e08885a9128e18313", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4e6f3ce3436f142608e23199d9621f93d95ed4f49f9d846ec32f9c8c0201e1da", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "a13acc203d688c6c445c5d910426fcfda92a9994364f51179ef11286e7ac06b9", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f25aae336dacc951b2fb14c1038d621ede2ad6ce07bd19da6fc8d763a5577629", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "34feda978e7266b0f5050379f0e29253b5b2d48faf965f79168197d34aadc0b7", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "1d3e6fc7697b53fe58728d7ad092773a12c85f6bdc84ba69709e6c734927434b", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "bfd8925a26774c0c13396fff50dcdeb63f461935251ed38e32ecd4c1065dd503", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "d78403d4a978dc25f51a6b0be678bf291cacbd114aa6f2c3533f9893b367fd45", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "a5aaa43ad0d8065551f3a1c9fbee63f524685b039312346d0c0cf02c94aa64dc", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "d2603d6d8537d30bae8e7bf5938a503c288fd7082dbd75281a5f3f42c3706288", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ccdfaff0309c1f71869c7e8a16d6130c31145c348b44dbc8182f1949a0aa5b99", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "4d88343f9dc26bc707dec9e08b937466c3ab81cf20046dc326473b2dc24d1b52", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "39ca89892eb3fa47a5f52e2a6e51c535510dd006d26097ffcb846fcc9dddc3cf", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "6a313384e06012b69902183a719c1fc183aab5731f73a6db709ab5861fc35fbc", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "00a9999c63ba2b3ea8693948610629dd9a7724a176e0ddf0dd899cbf29c3d04a", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "17271c6db30d2cedec5bec6c1cae8200506263586f0fb66388592196007c819a", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6108e869fb312577b0ab1747398968e1be36a9501c2f6c2778751777bf15f8f7", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "4c6889972500dda32563f8dac4a2369f8434b0cbc96cd4abe7eb69463853dc2b", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2bfec3379e613b577a4b83fb9403a63e3b99ea9609162781e15dc28b2cdf5f4a", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c8caf6c0d9650720a6e966d874694610f8f048750f8119b8b1867d016eb2368e", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "99b1e43a959ee36cd23b4b013c3c6c6a3c8d7954a9e7c6e8a522774d147433cf", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "6c8d86df2d1370d710d7103c478da1d5c9a25a73cb367522712c46536ad9d776", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "bbaf13ed9ce4a1816cceffb192d271a3f79e28c7791705ef0a93fc9583ef528d", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "d3e77dbde141ff27d8e05c08d3ad9c71759bef25627d44a25bf69febcd140629", -"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "933db570b7349866a36bde6726ec47f809eeb2c265d9856814a42c81ce66ce67", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "770295ceab5b84c8e8c6f342a4e45cb725eb42e9fdf90d27c9ef08d52d07ed5a", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a658b1a8e36b375faa48c372eb5fd6435f7ca2045c834e3b0fb0d64884086f62", -"T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d24b511b8ab8216da4f59b4ab23f50c2ff28c5cd5b661762f5f766e70a440420", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3a5f4004c0334273c59c45245d951b74b44209b1fe946777d8266b0cb2481931", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e968f6493ad91013b16075f2a81a60eec13b55a350a227afc3cec6f749230457", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9825a0641aa5ea58ce49ab160abe1933303eb77522475bedc0855e3520ac129a", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "78358bda21cb523eca7485ee80c111a13a9b0a6a58088fe24885a1340f014269", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "449cb52f0e066f5c43d9240c0c64fb20948826509bec30b721e2058ae05e4a21", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6f7d67663f67a31cd281c3589fab0404d06fd51b34eb6b44dd77cd79e552efab", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3367efd0558ecab7a8dd8c3376c699f2a087e6fa2bc6dddb5d7784f2f69cfc9e", +"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f66935d1d484133d205a7a972e2b69e0e16077624a9b5dddc62372df21cbb08b", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8a16b2eb55eb3c494e4d055ad005e1ce01cfb77f7367ce5acb2bdb3613362a2f", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5b60db6bab9b1cbb5fb4f8f79ee3a57224a55b26a8e62104be9cfa253d8d6509", +"T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "08398d649b2b7ab236185f27761179a6573c2819fa461827cdae38fd79b2a5a9", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "117614ca1209de5072de505ce028e67ead29027e296e5bf527ffead12f13abf7", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ba1ab7768d2f9e0f4374cae8a97ead443d7c4aae1823b4e835c847231fa28070", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", @@ -9323,35 +9323,35 @@ "T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "e95148732d86e99e5ca9a0f6be008b3f4b12775c5d23671ed5127d58170021ed", "T2T1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "b64124a168d4ae3e0ba963bb91959f20f75692ec62d60829c460be1aa242a15c", "T2T1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5706b5159f3131e87cd725f13bdd35dd057ad772c7a5313f5714266e8eb03098", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay": "089ca65d2c06b96a51d6d4b7767f4e2305440470cfe8efdd1153e3d23fe4a941", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "8e89f1b4e96f59314e8b6a97b666369d43575f21278cb58bce61277c5dacb8be", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "de0f2f0e2b7419134a2f29406c3e8fe04b90ea300d0066cf1655870991547f71", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "11cbb45227dec28557e845e3e24ac83582624ab625969d3d0104b63cd71a8aaf", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "c533340d3c0fa35a5a2778e0b099a319419b3d122a03ae7e2e04ffbffda6825f", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "571143fb9529cf547b3f51d9b826fe247e14667d942240cd7bed9c07b76f30f7", -"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a9a391b12f79ed2603f803ad7ff15772e7c5f0c50d79fb7a2d03de1116de2b39", -"T2T1_cs_test_autolock.py::test_autolock_cancels_ui": "02d1a2376ce9feea934981925de03d93827470bf5fbc2f1de327a053dc71bb35", -"T2T1_cs_test_autolock.py::test_autolock_default_value": "d233a567d6fb26a3cd18684500391e8b2229fe93de4f8119ff9ef2a16399b843", -"T2T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "8d4eeb3e9ccacc60c902d00a80151234e4dc90649332495c076d17d70974ffb5", -"T2T1_cs_test_autolock.py::test_autolock_ignores_initialize": "8d4eeb3e9ccacc60c902d00a80151234e4dc90649332495c076d17d70974ffb5", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay": "a0163fe38386e23dd80cc4c408c5d1910036ac164837a96486d8767abf155f66", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "e90ff1233facdf4b3985c40bf9f7135f424951d463d7d19f538b2db44becbf0e", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "65ea3024b0a24bcb9ac5f5bc7e6c7879df2b30d2453d27ef6dbc8413b1a60ced", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a9f4eeeb6adb8e062d651a452999138aae03837408a6686618d2c88624eb5f0d", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "80c7c4bb1ee8fe98d6ff5fb873bdf6e79546d9e7116dac86ac539f0faea197f9", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "aa88d8a9b0d25c40872ae6b4e14c463985fbb509a28c931433ead92263931fd1", +"T2T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0fc90c22fb3f419ba1f0a240c7f4921b469ca08231828bc1ad655d804b65ca58", +"T2T1_cs_test_autolock.py::test_autolock_cancels_ui": "d95b8f86d405dd672ec73e20905ebdd2d4a2279f6b11dcde9d4d39762faebd87", +"T2T1_cs_test_autolock.py::test_autolock_default_value": "1fd33a2f332541cd6a2539151ddd02128cfc7e151eb2b64dd19104e66dc00392", +"T2T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "ac6cf4e16338f127877851f2b83190dd3dc162ee50a45b1727894951631e2b32", +"T2T1_cs_test_autolock.py::test_autolock_ignores_initialize": "ac6cf4e16338f127877851f2b83190dd3dc162ee50a45b1727894951631e2b32", "T2T1_cs_test_basic.py::test_capabilities": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_test_basic.py::test_device_id_different": "c3dbf3ed1bd619e77173d6b8e80335f8e5397627adc00ae16f9bd0f8074529aa", +"T2T1_cs_test_basic.py::test_device_id_different": "896b19b397a82b39f4522ea08c9d868d769fb945d0502ffb9856abe324b29f7e", "T2T1_cs_test_basic.py::test_device_id_same": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_basic.py::test_features": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_basic.py::test_ping": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_busy_state.py::test_busy_expiry": "5807370e36255f64722c9b70002daad3b718387eaa41102561ec6a0dcbeed20a", -"T2T1_cs_test_busy_state.py::test_busy_state": "491481abc34b5ebe614e45edb1a5831cffb87b9acd28b5bb596d8e61c0b29147", +"T2T1_cs_test_busy_state.py::test_busy_state": "680998cb53ee923d87af691a2520d001c6421bb3a9f742a68395966292693562", "T2T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T2T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "2e607dedaaff54ba045743b6cf77f83eb81608d7e5ab22c3aaadbc13bfba9cb1", "T2T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T2T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "2e607dedaaff54ba045743b6cf77f83eb81608d7e5ab22c3aaadbc13bfba9cb1", "T2T1_cs_test_cancel.py::test_cancel_on_paginated": "19cd5133ca91858fe667cdb4cd38de92ab01eba5a232eff23ba6591f59e7f26d", -"T2T1_cs_test_debuglink.py::test_softlock_instability": "5ace49e9f6465d2a6fe19c0ccccfa5604f103b7ceb02a20a917647f09c374802", +"T2T1_cs_test_debuglink.py::test_softlock_instability": "6b65e40aae4e1d09d2502d079d7de4491656745782042e6fe2c93b28926a7551", "T2T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "bf3b0b0bfc905aa8b9cb991baffb7c523f4f185f0a6531081c2e09fee5964108", "T2T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_language.py::test_error_invalid_data_hash": "eeb33c9c4f9ed22a54db5d3ff17e8df1f17725036d7a4ee8436ff1e957968a8f", @@ -9366,7 +9366,7 @@ "T2T1_cs_test_language.py::test_full_language_change[es]": "a2ece6cef08534144aebea549c2f7b7dafad44200155f7bef4c6cd9085b25690", "T2T1_cs_test_language.py::test_full_language_change[fr]": "4b5d2ef1c9bcbafd1705576a34d0538dd25e5719c8ffa156ebccc2d04a2d15c7", "T2T1_cs_test_language.py::test_header_trailing_data": "bd0f5504c03601f1c48fd8f44177e13c5b64b96ee1d7faaf463a9d42605f9c22", -"T2T1_cs_test_language.py::test_language_is_removed_after_wipe": "331b6eedac9a2f34abb6155de5359333b9314d56a3248785956851f1ef7d23bf", +"T2T1_cs_test_language.py::test_language_is_removed_after_wipe": "3a0b7d6c772d90280ee9c77ee54a3849c630c952e9e430ddbd4710844d427908", "T2T1_cs_test_language.py::test_reject_update": "a04a7ec8f30e9ddee0975d46fda0a10f22c0e1e513283cc6045c00a52f8a3fab", "T2T1_cs_test_language.py::test_silent_first_install[False-False]": "d4c76b3068cd908841b872e893e2bb78610227110ca369459c5c3218a8a30765", "T2T1_cs_test_language.py::test_silent_first_install[None-False]": "d4c76b3068cd908841b872e893e2bb78610227110ca369459c5c3218a8a30765", @@ -9376,15 +9376,15 @@ "T2T1_cs_test_language.py::test_switch_from_english_not_silent": "91a7151e16f344efdfad245fa29a186f1fae409387e4f1bf732a0cec1ed739ff", "T2T1_cs_test_language.py::test_switch_language": "39a66700fdecc28cc5ab93d48b3fb2f004987f1a1d6f3b0991a02b1843eec8e1", "T2T1_cs_test_language.py::test_translations_renders_on_screen": "0ef96497bae150341b21d5c6d8a332b62d242ee59174187bdb0e96269dc43b26", -"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "855c605e5b4fedba0aa1268094a703fb61af6b0ab4527dff6d53cbca4d1152f6", -"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_msg_applysettings.py::test_apply_settings": "f418798467e742fdcf5592315310ecf0237e23d09c4f02936bd06c11f6ebb284", -"T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "f87881be98e05714b6a2c6cced9382ba8316368a711944b388729bd5b85593f4", +"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "b915d03c701a52870eef84d0ef9b59c65cda7ea9e108c24a0d908c70737893e1", +"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_msg_applysettings.py::test_apply_settings": "7a8510ea5b5edecf83e2a58977e17c55857afa9faca31258dcb4c20bb214b20e", +"T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "5c11a0a175ec03cabf25841cf49dff634deb2c09059b1d93263887c8e5c3c47e", "T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "07790be49485453e78b20a1e93052f4e39d4ba022bd214f48b5e4827c8ff825c", -"T2T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "70d7cb582a972a27f346f86685b0245042ef20ee3cf39182b618a228295bdaa7", -"T2T1_cs_test_msg_applysettings.py::test_experimental_features": "4ed46d0812a0af386ded66d73f672284b3ff625601467f405bb8c3e46c3da150", +"T2T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "158211d7c9ac7471d117ff30285543578f99d3b17e0c7dabb67b7c5425dbf61d", +"T2T1_cs_test_msg_applysettings.py::test_experimental_features": "7f9b0e3d502e3f297f05921555a81074908964cd327bd4cc82fd7a03d387e506", "T2T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", "T2T1_cs_test_msg_backup_device.py::test_backup_bip39": "212688c449a822c4dc18990dd13b3c0504e93b9bf2580c69e49c77a7a2d9212d", @@ -9398,60 +9398,60 @@ "T2T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", "T2T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", "T2T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", -"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1636a254bde7bce6994634daf3cb6c808d54ce420d7dbe0f01dfc580e170ce6c", -"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "be92f86f750cb31cf1f105413e2ad00053cbb8080b3c52c43b0682c8e2beae9c", +"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "599756b95fbc5065407afe20241573e02d5b9206e58f55e3af42b2c5f1e857f2", +"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "2a27c997825ba311dbd6f018a711a8d713e05e33d54bda25a0627ffe97aa8469", "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "3e893170b1e80dc53617b5707b94f9a486f9fbf6f7d42fe05dd7d6c1d0c3d497", -"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e474c3b7ee87123456263add1b6a793a0478e4a5eb3887e8d8794f7890b0d4f8", -"T2T1_cs_test_msg_changepin_t2.py::test_change_failed": "eda917e9a4b55412c89628aa1414cc5cc1c7aefccf4cd452447f9ae188d49162", -"T2T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "08ac3c286ca2a906945aa3a64f65cdaccfc9fee97c52a696be5fddb6fa350d54", -"T2T1_cs_test_msg_changepin_t2.py::test_change_pin": "1016d5ded51408eed07b9d048f8f51eceec1df950c215615670d8799a9020e83", -"T2T1_cs_test_msg_changepin_t2.py::test_remove_pin": "6b81f8e410e9eb6f12e00b96085ce069b998645b5c92100da6aad4230b9fa306", +"T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "5f755c7f3aae1011e89637695111b0de5ffece909e519186789cce572d2434ff", +"T2T1_cs_test_msg_changepin_t2.py::test_change_failed": "a9e7466ab15c23f32674ef6e872c8151c02c6233abd8035f14e3091388922ed4", +"T2T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "8633736afcd167573454994977258ccaeef007a90a841e28efcb0bc61b9073b7", +"T2T1_cs_test_msg_changepin_t2.py::test_change_pin": "a9b9af9d01464e199a3ebf9623409deb2d41edd93c1be7e68698ac627402a013", +"T2T1_cs_test_msg_changepin_t2.py::test_remove_pin": "6e11323779ebaa57c093b3653ce2ec531400d4a3c0942f12cfcbae4faa1f91b4", "T2T1_cs_test_msg_changepin_t2.py::test_set_failed": "d44150ef88ec051c85010fed2d12a15abb8162beef36ac992ca1b450a3364f6d", -"T2T1_cs_test_msg_changepin_t2.py::test_set_pin": "40108039319e94ecc1da4b5b2f246d6e400e896239e8e0a6922727d539991a4d", +"T2T1_cs_test_msg_changepin_t2.py::test_set_pin": "26c039fc55b68d4544c6f7ae8d4a820934366c7cd603a65d6eb896fd333276ba", "T2T1_cs_test_msg_loaddevice.py::test_load_device_1": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "706a90487474d6d65f39da3df7c14a7485776bb666f14f9c91c91167784afefa", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "111b28d8d6ea16f45585361c247a0815d3f6dee083c3b36f67b449908ee8a88f", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "eb55a55297e845606a77342948a3d3920bf4b481957c257a57aac264fd170781", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "dbedc63ff5498daaffb587f825fe9fa6dfc0c519caf7117b28aed98d9429ef27", "T2T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T2T1_cs_test_msg_sd_protect.py::test_enable_disable": "7815d8d7eff783050c6b202ab538dc0eaedf1f6f9e7ceb535c77c6a6b8b18331", -"T2T1_cs_test_msg_sd_protect.py::test_refresh": "cd45ae6cf914bd58774f36a203dcd1928439ef510db1fe29d8a81aa903c3c17a", -"T2T1_cs_test_msg_sd_protect.py::test_wipe": "2717e4a4297ad22125fe6a07d5eda1403d8678dfa9f302ff48fe5becf3d76a8f", -"T2T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "50894c333d72b9a22be61e959839a7645f7d010cc9854d4171efacb7ef97f16f", -"T2T1_cs_test_msg_wipedevice.py::test_wipe_device": "c3dbf3ed1bd619e77173d6b8e80335f8e5397627adc00ae16f9bd0f8074529aa", +"T2T1_cs_test_msg_sd_protect.py::test_enable_disable": "ab5dd386741c84f4e20e39f5a1824bbedd100c5274184e47baefb10d540cca1e", +"T2T1_cs_test_msg_sd_protect.py::test_refresh": "59a2978fab8f7ddf4542d06c649d331836063951a9772bf89633457957b0a02e", +"T2T1_cs_test_msg_sd_protect.py::test_wipe": "c2cfb4ca5babdf69cf170707c2085ecbc7f9e380c2ef72f268703f553350afe1", +"T2T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "88aa669aa18abf32712f905fe964c43a55bdd1b4111a0301f3e8987ec5e8d50e", +"T2T1_cs_test_msg_wipedevice.py::test_wipe_device": "896b19b397a82b39f4522ea08c9d868d769fb945d0502ffb9856abe324b29f7e", "T2T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "c2ba93aa0ca944177b57ccf8ee8089c5e312beb56acc870dab67e20b66d5af44", "T2T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "c2ba93aa0ca944177b57ccf8ee8089c5e312beb56acc870dab67e20b66d5af44", "T2T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "0fb795c1478e6b39cf4c0a20500f945f6feda8a28cbd4be20c1af177b2d9e7eb", "T2T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "0fb795c1478e6b39cf4c0a20500f945f6feda8a28cbd4be20c1af177b2d9e7eb", "T2T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "0fb795c1478e6b39cf4c0a20500f945f6feda8a28cbd4be20c1af177b2d9e7eb", -"T2T1_cs_test_pin.py::test_correct_pin": "6ce7bccaddaa84b00a2b3e6fb9787692ca1322c832eec98d4c182f000ca73d31", -"T2T1_cs_test_pin.py::test_exponential_backoff_t2": "dc2da4343403dd18bf9a9a2c51d8e86022da5f8aef85566c6eed5bfb36ac8d62", -"T2T1_cs_test_pin.py::test_incorrect_pin_t2": "d7d33aacb2c1403ac0455dc5e06601a6641fd3f0fa4dd127d92ad036b6175fd0", +"T2T1_cs_test_pin.py::test_correct_pin": "0cd58b4323849618f8614c29616d601d2b1da8cdc847c1131ed7f951c0978379", +"T2T1_cs_test_pin.py::test_exponential_backoff_t2": "1dcd1fc1ad753a9d21a1b3368f2c6302ddc7e5ec5a9b9369b1b0ddd4bc61bed1", +"T2T1_cs_test_pin.py::test_incorrect_pin_t2": "a680698c3398da2f2ed9cef4bb2bc6b3e61e3dc7b6385d556f8b861289d1d6c9", "T2T1_cs_test_pin.py::test_no_protection": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_test_protection_levels.py::test_apply_settings": "9a636efe7f06a973f5fc0777f3db32edfafd21e4a8bbcf034febeb17f90d5833", -"T2T1_cs_test_protection_levels.py::test_change_pin_t2": "e5c757ea3bccbcbfec858abc88c6d5391a70dd36a77dcc4976c0dc2e40fd8161", -"T2T1_cs_test_protection_levels.py::test_get_address": "8b54fee36b5f1281805696a79ebc999766ff573f9371da000d69036452120d0a", -"T2T1_cs_test_protection_levels.py::test_get_entropy": "02bc86da235c30e17fe9a5a331784628c9843cab609ee79252c4d3f1f593ad52", -"T2T1_cs_test_protection_levels.py::test_get_public_key": "8b54fee36b5f1281805696a79ebc999766ff573f9371da000d69036452120d0a", -"T2T1_cs_test_protection_levels.py::test_initialize": "907f2058edfa7e6208e7a05308fcedf909eeb3adc8306dd3f371b998abe7e989", +"T2T1_cs_test_protection_levels.py::test_apply_settings": "0588c4a71efb231438ab75fcfea230fc871d48dd6df471d900499d16ab826e26", +"T2T1_cs_test_protection_levels.py::test_change_pin_t2": "5ee096f235a05d0ced7ce34e92230ebe048cf86b3227450786c37b4d2197685b", +"T2T1_cs_test_protection_levels.py::test_get_address": "aadf526cb01272fccd525969c3bacd11d169ae51720297db48561426feb0ecae", +"T2T1_cs_test_protection_levels.py::test_get_entropy": "8a4d242b9ade44b105756e0fb4fd378c631b914b3949e9c79478bb3362a5099d", +"T2T1_cs_test_protection_levels.py::test_get_public_key": "aadf526cb01272fccd525969c3bacd11d169ae51720297db48561426feb0ecae", +"T2T1_cs_test_protection_levels.py::test_initialize": "466c65f1664f4fda1660d6d76c812aba2a4c10c87f3034d78db64ad30ad216fb", "T2T1_cs_test_protection_levels.py::test_passphrase_cached": "04653feaa60bac3c1efe5be69570a23dcd863a4993489f889d603f456bc4cf66", -"T2T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "01fea2b9a10e1b547f57f75bc7531d07ab92144298c1dabd2cf9f0a1f1f89d87", -"T2T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "7f959cb3de3b49c840f266c518acd65e1db7268dc8e215ddf94572e298f389e1", +"T2T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "9d82d4cbf2a3b0832cadc0a1af94a72c03e1f21c73945d788c55b45031320ded", +"T2T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "4148d1f73735f9a886d063e676dc23b1bc95965a8660de3f8bc4fdd40fdb3ede", "T2T1_cs_test_protection_levels.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", -"T2T1_cs_test_protection_levels.py::test_sign_message": "1e3507d34e2e3aaea77494a3e0a08ea54716e9b84bbf4dd3ce291ace8938dfe3", -"T2T1_cs_test_protection_levels.py::test_signtx": "ac19378fc3447fb2c352d341c5284998791ae10d387c0652249e9673c27c97c6", -"T2T1_cs_test_protection_levels.py::test_unlocked": "03c60806a17607d7e3b39d76d3d82144ceef92ebbf90bc25ecdd6233bc0081cf", -"T2T1_cs_test_protection_levels.py::test_verify_message_t2": "7cbc1f75a41c00a6d53fe6372113fdba190489e8819fb6d4a7f6d9898b0115c1", -"T2T1_cs_test_protection_levels.py::test_wipe_device": "e2f47c3779d782bb71d8dfd553560ef36b4d6fa67a629719e380e30af8727229", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "865d021ea723e717470d259409e81de4c3a525770e22e34bac0705d25dd63082", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "b003ed30eb601209f6d14abbd072eb3c402c9fe89aec3342050f1dac517b9790", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8230d644447354d9ec6cf83c33936c666a77c4505ff4c2d295c36b56bd2da994", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "468419bc8ba343e8645e3f5c0448a313421ff8c58cbe9878c7d2a4b342d86306", -"T2T1_cs_test_sdcard.py::test_sd_format": "8f1ca58187e0eb32b6e23e369b1e9a3f68ee244023e2a0d25930d887f9bff5f2", +"T2T1_cs_test_protection_levels.py::test_sign_message": "c7e6a605bc36b8091b6e6f25399da649a01c2c86b24d9e11de131aa07ffa94e1", +"T2T1_cs_test_protection_levels.py::test_signtx": "5b52fe624faa9dc5af843a46f5168c75a11bc0b12b098ba89f2a24fd5741ef7a", +"T2T1_cs_test_protection_levels.py::test_unlocked": "b26429bc0d7a5e1356f97b7c577eb1df0dd6af527ab445f4e08bf79cdb654ab7", +"T2T1_cs_test_protection_levels.py::test_verify_message_t2": "8c40df7255a897dc11da0ddcaa5c74a5e24e1d53fa92874d3bd7ed24938bce54", +"T2T1_cs_test_protection_levels.py::test_wipe_device": "1b1e26b8af57813dfb5fb69a44ee9473c0471430ef69616fd46a908991704209", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "a96e30bf089d685b3a59de5c0cfb787d0f01b26a92aafe2c9e57a9996b7eb058", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "48f0aef6f62c06077fdbfd5d16be2a148b588ff5366a7c9782ad2fd8d88cbeda", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "554393895738420e0ffc1555abb1eb7cb8eb6eaa7f921431555e5c77a7af30f4", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "901a27ed898ed7622bd8c26a2b0d00c82c2305c05df9272fc0700a340fbe2674", +"T2T1_cs_test_sdcard.py::test_sd_format": "589bc39a9dfdc478d92fbe118e7df14f24a3456965e5cf8a40210d198d2cb6e6", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", -"T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "f919e4e387fcb3806adb43f7b8f71ae3b14a30970b3d79bb4c9bd063804a084c", +"T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "02cd293e8d502f3354cf35a222b8b7b5eb3a9c10cc41f631772215d8acd6e313", "T2T1_cs_test_session.py::test_cannot_resume_ended_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", -"T2T1_cs_test_session.py::test_clear_session": "ec1347088a94f3f812cf885d684802d0275484dcf3c590537fcaaf630a5cebb5", +"T2T1_cs_test_session.py::test_clear_session": "572436c50cb73a55f313dc5b7bfcd1c2fdb4a3a484530a3d6d9d7a3116d2a27c", "T2T1_cs_test_session.py::test_derive_cardano_empty_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_session.py::test_derive_cardano_running_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_session.py::test_end_session": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", @@ -9514,8 +9514,8 @@ "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "2e37ed22095d7a073dbef900c55566874abb4c3509e2de6bebe06920fbe71b1c", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "f9e30feb5237edd872806bc548d62acc529305893f5fb3407cb8605ffbfa1bb1", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "888478add81f5c2c760cfa0ac7f372c77e0c49195d2661d9baa1430c8a71e5d5", -"T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "342ea940862082bf46bd5bf98ae2ae3ba2a754f9e68ed4516bfd957967400d46", -"T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "342ea940862082bf46bd5bf98ae2ae3ba2a754f9e68ed4516bfd957967400d46", +"T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "8f45695e3f3c451f70b7f4b45db2aeb231c72525384a8f66c3e530a9691fb6d8", +"T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "8f45695e3f3c451f70b7f4b45db2aeb231c72525384a8f66c3e530a9691fb6d8", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "d35204d220e204e9da5aea5bf0462b4650422d777dedb55101b0b0ea49af27b9", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a5d1a0a50cc0318eff4a27297e56f731fbed0bda39cae1a17615e22e6047d605", "T2T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "7e808702a6455402afa7993d99edd1c6b37636b63d01090aea02f0e083827db1", @@ -10583,57 +10583,57 @@ "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "69a6ff38f2a4a27947313cd5723d8b53814b14e1c91be465294e0b03d7e4a210", -"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "c202e3813df11794b6018f350e09ccf6516debe591410ef67211caf62ee6914d", -"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee80ed0b9b3decaae77552ceff1663e54afeb5cd656d73d4ad6fc40772806677", +"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "da3646ebc794205b785cc13005b2d25b7652930b015bba229eba2bc19282efae", +"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d50d1fa283e415d81fce480c88f1a07a800d17fc664a2ab9e0f55bb06326d34c", +"T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c320cfc1c14b6c7ed47d16c093e676a8d2f86319b531dec789da41d5d47aed01", "T2T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "2ac08a577e800855a57831b13fc6fc067ceea8d4dc7565737b1a7127c5fed38c", -"T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "5a438dff8138017686d2ff864a0bde30e8ec392957531264b7bed4fe7a906023", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "71e47616330ea9232581325e8b6c2cd5a12ba843cd4af500b59a6ba928a7bd0e", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "8bd55c66e7256357675cea978f6970b7b96f11104ef105bdd0763e2695c55ace", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "31db317835ee9adf0a684d00b6910c7b5936c415ce7d44cea7a49e4085eb92da", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a30555dd5bcaf5b79f0ae835061005e593c6fdc384a3c1289607ac74123ec68e", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "199bd4117c72e30df30d006c7adf83f829053c420bb0c625a9d91f0fc312e6a8", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "20db58ba275eb740ad6f15e46bbdd8168269dcedc22ec666335f53c3c0a07278", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "35c1cd49ff977e0fa2ced4821895d24d8448b4255ba5febf547511790ec2a684", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "60c5ee6742cc49b46b3d9c0a7093ee9f6802cc7b00f4e589096b1722c0be1659", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1921f83bfa8ce464731b35bb5d509cef808ce12e58c08e41fbd39e73dfff931b", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "428eaa49d69b8ca88c3220066fa9090b3b342e8ac340d391abd04b0c1ccc37d3", -"T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "00bc9646473e5e415707eb00bb0c090245151ca38fda6be076a03a036a364a29", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f33cd5534607f21a1035ea79a240c5bc196aef0d672c86d83c93b95dcebaa28e", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "71e47616330ea9232581325e8b6c2cd5a12ba843cd4af500b59a6ba928a7bd0e", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "3764969d4f4301149499f27298c1cb378c80610946dd00a1d9fd73d37eaebef2", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "ee2141bc56a9f21232bdd487c3944bb15b89ff28624f627a68d71eb4783cc761", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "787349d4605e5e33072273055eb83e988a6e7c7640afefb30ab3839ad1e2d489", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2a68b347605b473e410dc95a18a893749a1976568282b8d1e63aabf2fec86034", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "d8c4ab99dbbd1bdc670e8b95ddc14d473081bcc8ea7b821c8dcc85f8f99dddd5", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f5faed7c743dec88bd2dead7f0a1415e36d8a949e3efb9c6e85b397735424626", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "4cde11272d19a5753e868cfe3489ed3697b4bf98111da6b365dbf0ac89379dd5", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "e09a7d11f44d67a61b31e1238100443e1532b0d43741f0d78ade8c7ea1032aeb", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e0552684e15a0af96577fdab8d6644824148555f467fa5a7d6742313f175a2ee", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "b8252bae66eb7e01dc0271016f100de538c35807d772df2ae18539ccc1a9962e", -"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "16d05c29b057ba7b407aac3e328c549fef85f06d7f611aa5ab3ffd1019e0389e", -"T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "65ae737ad99f11176ac9d882cc9272acc52a7203d40a7cac3ca3bfc1fba72da8", -"T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "613dc137e021c99b91afb902c310b5d5b8f4f7678dd7f11762e3c5b74be3c25e", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "84758fd379e7b62074cbc62022f2c7d75f3fd352690545da3ab5dad2c7f131a4", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "37933f81eb175d262433331d17955ba5c661d5186e75413b38b8df98ffd47c29", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "016bfd2b1d0d412d4c1b983139f71fbec777b8551d2450ba90e581f1477f8249", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "ca5b6d1cd04ab2bc28e7be3e0bac1c2900a0b7c5e9c10241d5722fe327eb0dc3", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "26c33e6cc03479edf5c6f830575e194c4b13a72a0183082bc21ba856fe65af49", -"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9e3f0ddb3c255b312b3b9fd36d87120763437a3d9d6ec09011725a5c82ed8469", +"T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c5c18202b39fcf878706b873db29f8364b90a3ca40b7e0c5da67c39d47e27639", +"T2T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "02a6a90786b21ff7fe6af37f7d35598e037b0d6bdef5f361231f3002ec40be52", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b554433ebd5bd81a04cdfc3b9a2613c8ce958dc7424830c81cb0be8ceae3f9b1", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "493e974421fe6dfed75ea741ba14dc274ac927557a25c86c1686e41a5cd91f9e", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "866baeb70d1b1bfd8f05bc2a2cf201d7ae6b1accc6186aebe6674c13003b8367", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ef201eab7ff328425af7aa53e94d4b512f07a602f16ea6c75b013370c5c6f007", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "6a8e7abdb894e7665b953ddd887c2760753534187e135de14255b9579e0292dd", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "23a0a6edf30164d3ee46452cd4bd8ce191835e77dc9e3a10d766d9c9d4e6edf8", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "7437e7a944a5a94b8a7415c0014528bc508df5fe789dfccd4f997914e5aea016", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "b1171ae56461f82103013d7a3f29bdda33915842e610d45778e03474b432946d", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "03682cc5458808090fe1ba9adabf31d7ed629e921e8686421bc7447467a94234", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a527d2fb1cf8962d4f261c4ad89f6843e7c0d7c8bba0246fa8e2804227c109fd", +"T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "8369175f96818eab2275e3be5ccc926a0ea49b9aa99a8685749ee8713cd6fe09", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "807df8ecb5db12f04003483e3ea04110ead3605a7dfba0888b0fb78fff2adf31", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b554433ebd5bd81a04cdfc3b9a2613c8ce958dc7424830c81cb0be8ceae3f9b1", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "86d7e7bc19be3e751ead123b48d42a8372b73f943dbcc463f49b71bfa371e0bf", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c675ffc891dc8013ea5adb88d83b47bb2881796be1ce9146c0faf69fb9c1702e", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7b21c5755a92ed029aba4b9d2e2050b2b0ffc4fa2264acaa0be7b664547e4ad6", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9a69c8ead2abeda64257577d5bb846497ff84d14fe6a4431447911485bc1117a", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "17354468ec58808ce8a27367813e9a0c76ba6399f89d6551f692a6e7605891eb", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "b0154ee44bfb7bd4f473f0600e7c613e4690a8fda8de8ecb3600c65ffbeabe93", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e79069275793916d9738aef4ff26c97c6df8dab5b9b8691c11769d4ce6981d51", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "a5d3f9cbc47ddbb67bf1b5afd22bde4c308c53827c7c65f6b437b90711d2df07", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f9675ea9bd836898a193fb6874bf28302cb138bb45f6ab28cceaf9521a94ef68", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3f7e9831033b069efe6117162e238a42d58a6ace30262ca09b0a7f07868d7a3f", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "aa3cefc3ceba54ad134566762ffd6a7420fe1aa56a5817d5ad18848fcdc3f684", +"T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "5e9d793e6e6825e06f10d56e1c929e122891877aa6363b7cacd934e1adc4c6c9", +"T2T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "36577ff28a8ea980a0cd1c859e4e48611dd99fa5104a254faf87bafd28e43e9f", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1048e4d743cc41ddf36c692c4347124a6d0f51916b2882b81e948cbe16623029", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "8d656d8fa1bf38428623740204cc3e1a910d5e9582633dce42c8de1073e42499", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "0bfbd8b6941ef6ede7d55bb30cc487ee42fe2049ad65cbee4430f201cc1ee1eb", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "467590dc29c46542bc571be5bfe4b8785b09c2e8fc572140d92a87eb38a8cde9", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "15f34edb3306c9351bdb4fa4cbdc784e74bc876aaee7a15038c8dc81131280e9", +"T2T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "c140b5eae20096a748f5630f03c47b5a5ff2aaa49c38287f59950ccb48018cee", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "41b97d6c80896a11d1954b49b67160a4edfa61880f21d15bfed5e7b1bbc6ed95", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1b797d3d0686f5f774bdba546dc4767832887663cecb0b065b301a2c9be8566e", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0c1ab9398104b50a44b18c8918c276b5d1e00d3b53c2a3715ed0752be7eb1171", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ee23b0743961a3aea7bba701ad4e58403e2d5adf427d884acef04a7f535ce175", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "efd535db9c9e6d30e8013c6c5d3ec920be615fe7c8bb44b6ff73b27707c739d3", -"T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "fa25e12cb275e6bd50bdf314cf790ce7f8f5cfcbe952a1add8111fa94779029e", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "656aaed74aa1a9578e3104270b49ffb2bacde17ed83afe8eba04bdab609b5792", -"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1e97b74dd228a03e17175bae92cb371a833da2852e8f095fe43aec397c8268dc", -"T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "906226a860e5cafd441173776cae7dffa66b0b099cc0e939eff4b3db6c3cf2e1", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5dd345ad4eff0a99a6ea3787a3e4f528adb2f806355b83c00d31609a344ca79c", -"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a06f87371b74c6c754e2f093fcc495f2716cf464aaccf8e0fb0028440b2bba94", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "45ff384626da22d4dfe63cb9ce67e5dc57be7ff904fc4a06fbb7b06a4a76d0fd", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a5bbc468b3620560e5f8cf29c4b6cca6afc8e9e6cca66063b2d221b7bb34c5b5", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ae10a81f33d927f3dbe15b2c8413462d169c8cfa73d2616fc7f73b292538d5b9", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "42dfaa2c365df2e9be0bc434afeb224bac64fe1a4454052786d56510f746efa1", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b42ff5e1408793e57d4440be2164c8c283a605793b0ce61f303ae1f60fb237a5", +"T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2981aea95a67badd130d7526f5c4c46a44bc5aa80c0a74b89034a266c21511fe", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "41191a8c1620276c01f6db89c1d011417a797a6a226087ca2ec9cd7bdff969d3", +"T2T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "00f9b8e993b95e4ee2c7a7796665c961f160edcf985543187e701fc3a62326dd", +"T2T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "692ec57817b4bedd8291364e1f1e964d4b6b6447dcefa16c4e5e3fd8071d740b", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "102ddbe4861214c4545c4f093846153a2d9deb6e58f2aecc4e2b6ec1d894a6dd", +"T2T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "453844a92edb3a51b2cd2120b473886f92dc7052a5d6ddec5fc3430ba19ba008", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "07670f87571d67aef0a8ef0a7496e1b58f7305b6c0924226ef38a859aa6fb549", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "a0ad5ff77c53e2607ea9c3f0612391283659c789451b66ea29e657992d7233c5", "T2T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c33b344bc9e7dc1f7bc9e49cb50c470e2f353064cddd35a59f99f98cdaddf90f", @@ -10771,35 +10771,35 @@ "T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "88ab14176af2072a8aa452682864773cb02f80c2eadbd924555e70e07171fc65", "T2T1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4d7f525ca9eaba0a2fac0317f8d1f787aa0830a7ce732b6d7362bcd0e78c456e", "T2T1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "34ab7e77ddf5b9d72d0478b51d1f2189bdc40a7cab33a3bf2d154d3096867ffb", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay": "f7e4f54f3f0e027ee11ff886422ac54e0d44ebf545afeb5ee80e6ddbec202f53", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "19d7dbd62cea72abc505337fbe145cbe62348ee39a174b9916563f3406a56ed9", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "57eeae7ba88eb9c9862024f6c77e631e281da8ce4eb0bb5bc3cf88e666cc0d73", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "670a71b88989e4c5793f6c4fc2f885b91cd09f175840cc577cf8cb30c823e3ab", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "272ea75559f1beaaf936b80e40e7a7ca057752bc3b3955a4f58e3e378bc910ed", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "ebd66eb7a9f73fafb9ea53aa4b1c6913ef579b527411783c94c1c679ea8b3a74", -"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "d9ad16ac85a7627797ce150578e6e156c48013a7cf8b4bf8a7df5817a08c3d6f", -"T2T1_de_test_autolock.py::test_autolock_cancels_ui": "4a1f7d7899aa9e217ddbecedc2df74706e5007b981e05a221017b8cd2c18bd3c", -"T2T1_de_test_autolock.py::test_autolock_default_value": "ce6c36d8c5dd04a583f5174187beefb1f706f482e0455f6bd7a3e330df1c1ae1", -"T2T1_de_test_autolock.py::test_autolock_ignores_getaddress": "de8fea6c5fd2ba798d0817ee91739ba18e783b5e5af613a660f8a49619ebe2b0", -"T2T1_de_test_autolock.py::test_autolock_ignores_initialize": "de8fea6c5fd2ba798d0817ee91739ba18e783b5e5af613a660f8a49619ebe2b0", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay": "edb5a36dd29a99cc6783545792e10ad46468be0656d43367a4c91eda86d83d49", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "d7042d17607bab907d0bcc10810f0a219dfe6510e3c3ff3cf97569768f30c6de", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "2d218826d27d5afc0e8087772b10034cfcae84c46f31bef6d2de023ebcf38911", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "3252c404308f712e974eb1e2054a890749faf94aea6fb1a2aca17086d604020b", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "6a8c464a8604afdc35b9ab81a89349e9ae0c3261f6d1b926e6e2e30ac46b0acb", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "7dc32ba73fe90054d508e11ae7094d8adc2033d45fd71b17e83c7ccc76af0b61", +"T2T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "c097fb53072a52a987535061f4304fb02fbb999c093f9589492fcbeffebb7ccd", +"T2T1_de_test_autolock.py::test_autolock_cancels_ui": "c9fca685e4721235a308c41141ae77de677ca00b9d8c9de00f28a8ed3e345719", +"T2T1_de_test_autolock.py::test_autolock_default_value": "c2dba68671b4026cf254aaa424cf9d09be4099dd4a84e63d903c8daeab561b35", +"T2T1_de_test_autolock.py::test_autolock_ignores_getaddress": "dd9f93f957bfc23673b64c2475d0f689d0281b6cd4b1a9a3cc9ff3af953052c9", +"T2T1_de_test_autolock.py::test_autolock_ignores_initialize": "dd9f93f957bfc23673b64c2475d0f689d0281b6cd4b1a9a3cc9ff3af953052c9", "T2T1_de_test_basic.py::test_capabilities": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_test_basic.py::test_device_id_different": "ef6f7a625bca26467147e4541e23b286c59ecc52f0b43d4e7526b16915de091c", +"T2T1_de_test_basic.py::test_device_id_different": "63615b7d25726281bb0c2e2ef75f2b60669975056036fcb705ab09dffedbec5e", "T2T1_de_test_basic.py::test_device_id_same": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_basic.py::test_features": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_basic.py::test_ping": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_busy_state.py::test_busy_expiry": "d00c19e4be337da53afb665aa2c38784a51a91989ba65bb77aaadc8605994395", -"T2T1_de_test_busy_state.py::test_busy_state": "2e3c5140f572097a5abf9134ec2324f1d0fcafb91a73bf754672db1868a004d1", +"T2T1_de_test_busy_state.py::test_busy_state": "837990095c7399cad9029accc5b0deff699df95c20a740307bcca77b16fbd05f", "T2T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T2T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f74eaf21eeb33f4926152e82f47d0c9bc62e5e6002aecb6da2f3ebd126b1f31", "T2T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T2T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "0f74eaf21eeb33f4926152e82f47d0c9bc62e5e6002aecb6da2f3ebd126b1f31", "T2T1_de_test_cancel.py::test_cancel_on_paginated": "581f308ac81b24a6380967324898b9691c030661ffdd706d8159649bf0b2e557", -"T2T1_de_test_debuglink.py::test_softlock_instability": "b1f71b2ccea57e0375d465b3c0bc5a4fbcfab66ce4eb9701fa91fc4808e1359d", +"T2T1_de_test_debuglink.py::test_softlock_instability": "70d5079560c2b41e1e462877d368bdf5d62d0011fff79e5ee26c9af97f8c3bf7", "T2T1_de_test_firmware_hash.py::test_firmware_hash_emu": "5f74c8e2421c3e3af6f8c3fed431fe795b8a8db7b83a95a5d48ef779df916363", "T2T1_de_test_firmware_hash.py::test_firmware_hash_hw": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_language.py::test_error_invalid_data_hash": "2c9c361d73bab1c091485d6531243e8e45b624d055786907d95aa3e7ac0689d3", @@ -10814,7 +10814,7 @@ "T2T1_de_test_language.py::test_full_language_change[es]": "03aaaf27f1f4949434241bf81687a88d42e449019d6de857c0307562746ae20a", "T2T1_de_test_language.py::test_full_language_change[fr]": "9df1b2edcab533231f6bc5440563a1d3114d0b8f2515dda53192ad7d19f835c8", "T2T1_de_test_language.py::test_header_trailing_data": "116c567c75abd93070cb47853ac07210b0e0f4d97b5940ada58ef365a6cc5749", -"T2T1_de_test_language.py::test_language_is_removed_after_wipe": "dfddbca25e265f51cd7716905ce5082833f01348b966a1b81bfbbc2b9cad2680", +"T2T1_de_test_language.py::test_language_is_removed_after_wipe": "4483f33548b40ce487e1c9d0efc3e6a94d17af78db7253d075635bec22a481ba", "T2T1_de_test_language.py::test_reject_update": "2326ff9cef030570cc9a4766f3f481850bd20602337c20b807555011f3d60874", "T2T1_de_test_language.py::test_silent_first_install[False-False]": "dacbcb27d1ea35f26bfc793a0fc4148e75cbcb75ceaf6d69682dfde1d7776b77", "T2T1_de_test_language.py::test_silent_first_install[None-False]": "dacbcb27d1ea35f26bfc793a0fc4148e75cbcb75ceaf6d69682dfde1d7776b77", @@ -10824,15 +10824,15 @@ "T2T1_de_test_language.py::test_switch_from_english_not_silent": "242603b8b2406a7f5ebf08b8aa670c1eea7009cdc90174a108e9e85e667030ec", "T2T1_de_test_language.py::test_switch_language": "494b40becb93accd213f6eac324e7dac6cdef847bc945cc46adbe7be11a0896f", "T2T1_de_test_language.py::test_translations_renders_on_screen": "cce098c9da0ce2015c394ef8ac06e11612fe95fc90d052e317de81edafe73afa", -"T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "498b7cef2dbbf9e08a2b36522f407597415328c558ca633288ac7aa316391cdd", -"T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_msg_applysettings.py::test_apply_settings": "7bdca2eb02a5b19ca1c3ff8e5aa187c8cba679efa23dccbdcc9af0a3fccb8b97", -"T2T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "b182915780ba16069fa91b5f5a2a7a1542b40e879147d216f11ac7b5690b9a69", +"T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "fd14d33b1e57780ba8c8fb374ae943e66a26deb3850a2ae7d4a614672819ee32", +"T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_msg_applysettings.py::test_apply_settings": "40dabf9d3bbf7a2e97da64452fe86c8b48985e9aeeda4c2e475d22f8e51e6740", +"T2T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "04efb1a60c08e2bfd3341089974344b06b9c3c80b791bf3019614284284fa7c0", "T2T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "1118be26e5cc5d4bab865b8f55fb2e24d031ff006d2065a1c974c98d7461d1d8", -"T2T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "52447a0bc136f9f60299901a7d19c356167eea414304d379f077f9c961d05cd4", -"T2T1_de_test_msg_applysettings.py::test_experimental_features": "43e0045fc52a443083368277c7be676cf33b90628d9fd92d712e32122e21ffbd", +"T2T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "84e71a5e58451cce848683bcecd4f47e88206265e81428f656ab4da2701a6382", +"T2T1_de_test_msg_applysettings.py::test_experimental_features": "7067eee263527d24c6e8676d685b698900ad87be9efe7afadd433ec45f65b50a", "T2T1_de_test_msg_applysettings.py::test_label_too_long": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_msg_applysettings.py::test_safety_checks": "0105dacdfd0f8e69fca82643c84a9891b3953046571f041ce2b7e8596824aefc", "T2T1_de_test_msg_backup_device.py::test_backup_bip39": "201f0df190cf7eccebe576e5f8d365a29f7338d030dd5283cba78d10efbccb00", @@ -10846,60 +10846,60 @@ "T2T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", "T2T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", "T2T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", -"T2T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0140eb909211fecc46e851dfe10ccc2bf511625c61484598de59b32b30642109", -"T2T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "fc90ebd4d7a642a0a09596c52b690a9e867245fe475f1f2ec1b404776b24d3a9", +"T2T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b1cfdeb0468d312fdd3521cb7641aad1538bda28e073adf8a069d0709c670685", +"T2T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "5ee8787d1dcce995ae781e4ed9b8d4bde31d483835d58813b37caa8f6a871e7d", "T2T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "294aca06fb27eccda67897470412979142bde2e7bf363f19035c20c31277e486", -"T2T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "236fd39a8761eb753a8ba6bb411c3ea596ca0578443bbaf7d73af3c779200c3e", -"T2T1_de_test_msg_changepin_t2.py::test_change_failed": "21d332ede2903b750cc7c3ad3164e1fce27765e9da37eb7261b5ffd856213035", -"T2T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "291d3fa301b49446735db5c367d1e4d561b53783eaf312037b24488458ff65dd", -"T2T1_de_test_msg_changepin_t2.py::test_change_pin": "546c92a1ae7c89c2ded37d4b1e111cd62924580340db46ff269608c8ea88e1c4", -"T2T1_de_test_msg_changepin_t2.py::test_remove_pin": "cd257f3a7c48f0d4f550cbddef61a46401a1cd706dc788cdb56b574247bf0585", +"T2T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4f585fb67521f99ff8f9f18eda567b91781607c5bce2137717c5d3f66debcb7f", +"T2T1_de_test_msg_changepin_t2.py::test_change_failed": "8951056e123ecec45086ce570ced6afb69ca63c21c111c8ad3899810c77391f1", +"T2T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "55a9e890b5b1e51b28d7de7d221a6afc0a974534e7f06c4c15957efd006ee9d7", +"T2T1_de_test_msg_changepin_t2.py::test_change_pin": "e7de484161b7269ec1613dffb1ebc09f40fcb3418fc9a8a9d723faadc59206f1", +"T2T1_de_test_msg_changepin_t2.py::test_remove_pin": "d81f332cadd4edfd5230c30c0e315cf8082418a3ba7c2e6b78e0351d4b7156f6", "T2T1_de_test_msg_changepin_t2.py::test_set_failed": "f9aea1dd4143d75118266525fb50c65c22fb842f8da6947395fffbfffd7e8cfa", -"T2T1_de_test_msg_changepin_t2.py::test_set_pin": "668c723158f75c485184a033cd3b3ee4290ccec74e6c5494dd8208f0f70d3c0f", +"T2T1_de_test_msg_changepin_t2.py::test_set_pin": "cdb2f125397eb2ec921b0c2351ceb4618291b8bed5b092277b3ae1ce07285557", "T2T1_de_test_msg_loaddevice.py::test_load_device_1": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", -"T2T1_de_test_msg_loaddevice.py::test_load_device_2": "4952f4abc2841aabe33526e8d3bbbab11a67363169ab8cd96a54bea1460c2fee", +"T2T1_de_test_msg_loaddevice.py::test_load_device_2": "662f26fbc1f5d5f10393a3dcd82d39017729f2b526c946c8769ffcb99df9ef80", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", -"T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "092f0444e29bc2e07988a0e0e6202267c33d3500cb3c6465db1ecafd7b78c233", +"T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "6128e7b5564852433dbea98b4d89a5eace2f3f69b985aed24496b387cc79fafd", "T2T1_de_test_msg_ping.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", -"T2T1_de_test_msg_sd_protect.py::test_enable_disable": "7a6fe5c5cde3f9d9aa6af2053d09f20a57d3a50b5c8c81a496ac32f79737a878", -"T2T1_de_test_msg_sd_protect.py::test_refresh": "e559dc474096349cb817d56d7b86220ed3f187e5dc936524484e8571c83101dd", -"T2T1_de_test_msg_sd_protect.py::test_wipe": "5ee2512365b58d8266d894261af1b189457ddd89a22813ad9be4f1e7fb035f79", -"T2T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "badd7baa8f333deb92a953c8540465907db77173b23b9c1b5f8e2b0c11282ed6", -"T2T1_de_test_msg_wipedevice.py::test_wipe_device": "ef6f7a625bca26467147e4541e23b286c59ecc52f0b43d4e7526b16915de091c", +"T2T1_de_test_msg_sd_protect.py::test_enable_disable": "70a721f36e75daf8828e72a7fdbed1d51906e37b7a42708f1be18105e2e8d5e4", +"T2T1_de_test_msg_sd_protect.py::test_refresh": "710d7333c76b2dcbd53207204a89cae6be07962ca595f4bd12e70a21c86662d8", +"T2T1_de_test_msg_sd_protect.py::test_wipe": "cf2a3036c453739f76348924fcb4e7e02b7838e365917c28e34372c6a303077f", +"T2T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "aece1b1f47567120c1496e64ffbbb6061bc6d97c704a4c72edfd8b4a1ac0fe71", +"T2T1_de_test_msg_wipedevice.py::test_wipe_device": "63615b7d25726281bb0c2e2ef75f2b60669975056036fcb705ab09dffedbec5e", "T2T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "86da2eb3bff89c0bad928ce560a875de836e186d7c8464de2dfc616d7ac9e0e9", "T2T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "86da2eb3bff89c0bad928ce560a875de836e186d7c8464de2dfc616d7ac9e0e9", "T2T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "19421bf3cf5a8a9d00da1de3d2ac145ca11b56d3fee2995034448915fe6a8c2d", "T2T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "19421bf3cf5a8a9d00da1de3d2ac145ca11b56d3fee2995034448915fe6a8c2d", "T2T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "19421bf3cf5a8a9d00da1de3d2ac145ca11b56d3fee2995034448915fe6a8c2d", -"T2T1_de_test_pin.py::test_correct_pin": "a3f432500df38ebd0a756a981580aee1363a0b697b464ddb01d04b2c0dfd99e0", -"T2T1_de_test_pin.py::test_exponential_backoff_t2": "37e462fbe92c27be31597fd36723f4ab88bcf3d328599ade4b169ccf229e3b22", -"T2T1_de_test_pin.py::test_incorrect_pin_t2": "b01207f517ef8235e63e34b524621be5f4bb7e457dde9f96adb533409f53bc87", +"T2T1_de_test_pin.py::test_correct_pin": "daae880a7131de9af37281814ec98407f11e2a893b54745bf1af04ef19aa4e96", +"T2T1_de_test_pin.py::test_exponential_backoff_t2": "c0855a459549696aa7b3f1cdc1063d6ba6e7168d4591347766df3abb6d5d82e4", +"T2T1_de_test_pin.py::test_incorrect_pin_t2": "ad98102ab8be24c222b43c3084baacd13280ac45dc35a425453f1989b5b8ee73", "T2T1_de_test_pin.py::test_no_protection": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_test_protection_levels.py::test_apply_settings": "3d33f7b28e1500c11ed9b773a278896dc7e159b631dff8a0bac9a29a2cce42dd", -"T2T1_de_test_protection_levels.py::test_change_pin_t2": "851bc37962a0b6509e68ce7cdcef60e93df28b508dc94210af9cde40ebe857cb", -"T2T1_de_test_protection_levels.py::test_get_address": "c5942a210a66dd8bec833dd417e13342c0032eae559d5a79819ff03509af2417", -"T2T1_de_test_protection_levels.py::test_get_entropy": "830f2e0a1eb99e87a8937af5f59c43fd8d694cf744afd11ee1bc62b55939e72d", -"T2T1_de_test_protection_levels.py::test_get_public_key": "c5942a210a66dd8bec833dd417e13342c0032eae559d5a79819ff03509af2417", -"T2T1_de_test_protection_levels.py::test_initialize": "abe7b4ccb30bc5199e9dff493d897d5dfb3635e71de3de70eab899097b466732", +"T2T1_de_test_protection_levels.py::test_apply_settings": "2c923447ee3ddc93963a89c44f7475f26b658a804b04b87c47d0bd6bea61c2a3", +"T2T1_de_test_protection_levels.py::test_change_pin_t2": "586dd1db81a03ea7307b9d2b07fc691cc4e81be8c4773bcf36a3f4654488dad9", +"T2T1_de_test_protection_levels.py::test_get_address": "e334c326cf3792a7da03b3c2bc71843d829b7c6cf2d8c4debcca4d2f889d7fa9", +"T2T1_de_test_protection_levels.py::test_get_entropy": "660b00bc0acc03c84a5e5eeee4b582dacace99ca2b8044ffe16ac06fb4e73e2d", +"T2T1_de_test_protection_levels.py::test_get_public_key": "e334c326cf3792a7da03b3c2bc71843d829b7c6cf2d8c4debcca4d2f889d7fa9", +"T2T1_de_test_protection_levels.py::test_initialize": "155c535fa2f4875b97594a608ad5b5b7d2c695f485e66ddc19d78d31a451e87e", "T2T1_de_test_protection_levels.py::test_passphrase_cached": "d47a7dbbc989d0d79862ba7d84599d5a311b7ba07f53466d2fe08cf3048969af", -"T2T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "a0eb65130d8ae95d61bafc30d920239ccf4950c74f0b948d02543a4e71a415b8", -"T2T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "9c156cfbb059fefc0c7b663aa204618a2476ed7c439f80a21e3ab35239d08fc1", +"T2T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "372165eb3e63973f227abc0b7c040421c8bcfb4657432803733e77a2980c399e", +"T2T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f704204e01274634e5f86946a50227cc631842ee7bd5e27587dc8673c03dabec", "T2T1_de_test_protection_levels.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", -"T2T1_de_test_protection_levels.py::test_sign_message": "c74c80164c32a8c5b95a765be40bcf3e7d1463b99ceb283288b463ff460281da", -"T2T1_de_test_protection_levels.py::test_signtx": "fb0d36f83eee89f134a9f6e1d0a3f320d84166ae429a6e552559f774e0a28d2e", -"T2T1_de_test_protection_levels.py::test_unlocked": "97cde4874c0952f2da6f2f41845b8ce279e4015ea95ef38bd8c0e0d55039b80d", -"T2T1_de_test_protection_levels.py::test_verify_message_t2": "b0298371e1eb13ab94bd944dbfca4079e5e6751003fb9e0a2bb4dc35d02db844", -"T2T1_de_test_protection_levels.py::test_wipe_device": "2b6b86e0caebab7123f67264d3082849c56ee4d94ce8da13fede6d1012b866cc", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "4a8c6be253329d272354f3e250e6d2d39fa706b5f3bf45544b696919e4c52eaa", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "ec58ad0a2e117e4219e1ac8c6e49834b588b82e9bb5b66dd1fac516e41a93b39", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "14481caec093b8f1f642237c4d930cf5e9a82629651a93b45b1a3379bf4a678d", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ce139f37653f372cf7523e8580cb9c00b7ceeee1cfad826e8838f04fcb2e0740", -"T2T1_de_test_sdcard.py::test_sd_format": "3e307eee23db4db1a7f3810af0d90d6720da8e5bd81cbd4e924579ff4528b51c", +"T2T1_de_test_protection_levels.py::test_sign_message": "210dc0c12397d4c8656649fafafa95b905434ea3bda8cc70a16d802da7df2028", +"T2T1_de_test_protection_levels.py::test_signtx": "5d0b1f5b0aa4c3c84f451d6eb89e81bb4f1afe875026b0104ac567ab60f2846b", +"T2T1_de_test_protection_levels.py::test_unlocked": "6cf68efc83e357e1dcc04b35afbdabb677a4db2062b02dcee205ebdcf3d4bcf5", +"T2T1_de_test_protection_levels.py::test_verify_message_t2": "38633ab6b696c42571ee1fc78bda65b4fa8bfacaa4f780bfcd59b9199a32df36", +"T2T1_de_test_protection_levels.py::test_wipe_device": "f5e7ac6eb69be6988971f5f01038f5bee01f8c320a5ee344277c465ec82c77d8", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "db003c214a5c904b5a528f4b1339999f620e30f52a16e92c41698ec2183b9cc6", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "7ac417a8027f47010e620b97cf92e99642a1e6715964e4f99add410911aaf58f", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "cfa94e9a80f9bdd5f416dd0084df6809e0c95e81b591f186a48bbac7ca17fd78", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "2d46cb617a2c6724d8930ac84af6f95bf336c5aecfe5cf619abdff7202d946c9", +"T2T1_de_test_sdcard.py::test_sd_format": "90df1a6177d74d3bb27e235f9142f7523c4978b2a45c339e319c5aadc4bc330a", "T2T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", -"T2T1_de_test_sdcard.py::test_sd_protect_unlock": "89dfea5d01815a7927af69127a7fbece5b8ba3bd36713298ea2edc8f860d6d32", +"T2T1_de_test_sdcard.py::test_sd_protect_unlock": "c7d60b81900d00d13bae9dc5d8c51751816326a114fc6df5fcf8cfe706476d20", "T2T1_de_test_session.py::test_cannot_resume_ended_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", -"T2T1_de_test_session.py::test_clear_session": "21d63cab88820e553db90f79494304735df47a21faa2b2679468eeb903c000fc", +"T2T1_de_test_session.py::test_clear_session": "562cfa8d06d2af31f5d09c4581ae7942af2b25ce7f740c4f4081423758d9e389", "T2T1_de_test_session.py::test_derive_cardano_empty_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_session.py::test_derive_cardano_running_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_session.py::test_end_session": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", @@ -10962,8 +10962,8 @@ "T2T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "f4de0499dac628067619c6081d4ebdba0ad196af7bf9662c5387386eba9e9729", "T2T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "38a7eac0cf0be45770fb28da9c2f74bac6404e85f2a3801acdd4b0107d99f2ff", "T2T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "d39b3290ddfecd5a3ceaf249543eaccb2b71c21eb2dbeabef94fe866ad7ce6a8", -"T2T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "00f8d6cc8ad60877dc4629295e438f29912456f0767997ce3ba9277d1e1bbf22", -"T2T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "00f8d6cc8ad60877dc4629295e438f29912456f0767997ce3ba9277d1e1bbf22", +"T2T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "b9e12437350517e808da1f8e6245e49d0007226a20cb35b7d79b285dcd9f07ef", +"T2T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "b9e12437350517e808da1f8e6245e49d0007226a20cb35b7d79b285dcd9f07ef", "T2T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "312fca890a6e93da6c3705e3b3c97ba38dd336374634dbed9134362420273380", "T2T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "a0757616e39b5883ccfba01af3b386d1fc2d4a00517b2c3d79519ce0f60bc5cd", "T2T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "b8ca0b72adfb0cfa1ff653c83a0995517b71f8bfc217753e16aab49dd82a3a65", @@ -12031,57 +12031,57 @@ "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "03dbed17e14ee7cc31a094a8477f4c31924001b3eaafacffc190e77e98dcde40", -"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f1925c1df02a09de787a1c9d440ce756eebc7b5ce730772bdeb153c5dfb4025b", -"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c311cfa47967f04f9512a1070f71ed540d76291f051a575e2f52f4feaa52126c", +"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "c40f3ddcdb0876156ce4ed5d03313c93279cf6a81824a60ca2c9692241c06ef3", +"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "be716fccfe5dab5350ce7899ddc501c2a8f21805f3aa385c6245d234a0cc2426", +"T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "f3f5637f8c0f527e37142e5dd8e2785b8142049135a84f2c3f91267714f91824", "T2T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "27aa756bf5d6176c2c6c14437ecb015f7f828de65bab37ab5a90705d98d5adf8", -"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "05865793b0ae18b4501f6e925b976265235050306a80100a8cb797346ea1e15a", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "6aa5eabf097b2437cb395634a0818ea4f604415766f7c41ca3360260362c20f0", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c3f63162b479ebd78d86bfa3349bdde83da52d95397d30e0314922363891760b", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b79afc35d6d1a40761d33c8e4bcd16de25e259e7ac043cb65702ad263d3ab06b", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "78d1fac89e566df16892ce16a70a2ddb94fb94b4ddbba7c9b88cd182d5655636", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "05ca30785d11d536528c3c52766381cb3b3f585b29b9072271acb0725c31356c", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5f786bf45bdd145765812ea74ad8e4efdea73365986d6572d76b74b144902642", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "99a46d14af6a4bbfee3e7a2e98bc68086ad7bb2d33de63e0bfcb6309665c4115", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "07bc8e0c39c5efb4ac285e16274a1c3b3d48647e26c30a46da4fd7962bfd2cd4", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "d3ac6f5ac34b27d4631005b9b9d06e5222c37a67c9974bcc56a8de7606f8be21", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e22c76ed93074e190dcd96701b1975d3b8389120e1406255902c9e71410f0b0d", -"T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "0dc40b7fd75e5e8ea7f9c80b742d6b9cc37e47a87266e1ae339d5c77a228cb6b", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "c485a3fb9ffd2af82c365fcfe1e96ea7405d44fcc2d3e60e2668c055c89d0b5b", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "6aa5eabf097b2437cb395634a0818ea4f604415766f7c41ca3360260362c20f0", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c77032e824104ff9d17f7449bb20c42b8835809bbb04700ba0017b04c5f2cd29", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1080dfa36e4dcface3265ae32e9bdc48317c92c581d690a0a4c86ddbb10a7620", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3641e9a9a6b4b7404fa91189b225e53fd152daf22c7c08e130b9abfc54b1442c", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "64cb6bb13400f8e90e3d83afcd3be3c8ffa03c65042bd86450a277a48176382d", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b77eb373a43b10efe188e639e5697c5210e963b21e5683869bd2f24e5b495fe8", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "1ff5be386c860952fba1888177f4cef9c57362e7f01c807af86b397e4da11926", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a046462df4ae5c8b6b550cbb3aa07511285d1340212c60db2aeb6a895252169b", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "6171fd717bb8a65b2f3c71921491364208806881d8a2c1c57a73dce2cd1a4d27", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "390117b1a5822232c3abe11b5376c0437e277b07a6bb608d733b87eafd84c05f", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5f10e8dd5005812abf7d69dd5bd91fb19361e38766e1ecde720f0cccf98e9396", -"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "21c60bb14c594301678b0ca18ec8fad6baf6d61dac905f6538b1239400b3dcf8", -"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "df2b74ac03e9a3aa0ce1432cc000506d1400d5440ed8b8e6a0834d6e35afbf2d", -"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "7ea7c9df4e3c7bb78d2fbc9a83cb8ab3145859658476848528153b2f6a003511", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "55f0ceb1258b17f8ed6379f82366590a23f41db712b58e80caff40897dce3c5c", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9110fe47a983c509cb9106b8c619a2a9d5941c288c32d002ab993717127cd783", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a0852703160fdf684c643ba30b7d99192b27776ab075e1c9f96c8d2e89577af1", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9cf58331ecd1f31f89345184060bff0656989151de679b82352b9da8914592bf", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f1d76fc2f8f3bfbf274d91e4f6af7e68fcf51092b9e5fc42cf137de34929876f", -"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2a92847082159909c2550abc19895a406ddcdc318cea83e6e227b36ee216dac8", +"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1cab098e6a0e61a6fbd1cafd63856abff9b76e20a741b8bbdf7475e59f1a1545", +"T2T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f420a551db98f6cb948f8afbf2dc575d010bd68f5d9daf30034da24bcf0e94ca", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "7883096ed0e02a2d89ced6acaa46e98c63697ce0d480dd519115efbcce20fbc8", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "aff57f33f61c23a0aa946d0d3807bdc0e73a9b8dec29eb20ff82bfc11c7d5e49", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d9980bc48dc9da5e358f56dc53a8f1a5fea942b77395777b596d0f0e9ab6aec9", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4d3db46535ee7bdedf9b319536eac6cfdc323fc1dcadb1f5cfc092b63577b684", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "af7876dabf8996c7a7d4c9d7ae96121bcdcf5aec30af647f38202c38c7ee79c4", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "81aaa71a67b2d877b3a3221de5bda56fed00ba1ade3d732773447865f8357353", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "f71de65fa35c91481070672601f7ee0544a6b98ecb04652869254bf61fe7e29b", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "ee033107a6c213f5291f28d3a22ac818b5e1154bb1732892e540274b3a121095", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "99c203612268f206276000f85ba39623485bc08eb50c153b52419803da0dd815", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "2f363d340151a21f2703e8b050b6c4467b1db3d12b9b3a993873af43ab5a3348", +"T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d906b0aaa23b2f6c85d6ea93723987218f3cef476c4da8f7b587f86b3501fe8b", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cd1e1b8dec17b710f2f81c2ea4f8fa7c9426771af56d6a6b101e603229b58a0f", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "7883096ed0e02a2d89ced6acaa46e98c63697ce0d480dd519115efbcce20fbc8", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c1776298773f2521b593dfa5229a585504f54dcdcdd1d0a4185d82b5ca7e7d4e", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4e6cefa7e46f0ab55e720eae68c24877105fa10320d5dde727024aadeb4aa0ea", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f6d319b1be8f92e0ab79d27e6b3bdef233e682c6610391dd4bd9bd15f1d98885", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "59dd5bfa8403dd27b1f44f5c72188c3c14de0f123d70cc467821e622040cfc3c", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "93041fb59d89cf0285c10fef496dbbffb6bc12c94bb7a0ba66c5eb3ca24a1c52", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a7ec7a82b9fa31e4789cf284e0c246498946464da4dc633558e7e89696c96ca2", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "adcf9ff338b37626191c04291b1e2c2a85478e0256827652f05c5d0e73fecc55", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "bf0ba892cd63b250988a44694391793d6b38d67c7c377419f9b8f5766d68a3d5", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "497843e97541747f1c146d89cfe419f2553a49b5005e3ed1e55e7daa5077cc96", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3631bed759158d078adb07558083152b61747a8c971b4162e3b5480e31a83649", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2a0e893b4da77bc88622f5bd2b754112fe4b8562b3977e8702eefa1464a21827", +"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "97d3013aca4e9f89a476262a151d5c27d3c9012b26c8234b0a471429356c5673", +"T2T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "e3c72749300c3279d37f09b063a5da71480f59aa912552b3ec04987db0a8f862", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "c385573dd8b0bda96446e09781d322180e1521129d98f334a2fc3efac6691a7c", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9ea16716121817c379b50bace2a37a8a7c7d91ea4fa6092810be21f823a53d7f", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1688f0ebd4258a96920886857e22d75fd323b3926a47a0485d4d5332ed785737", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "de0e3d5d4c77bb839f5dc2280334a6a8cd744ea5b88a8cafc79d7edb376220d0", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "8661034c11cdbe38160e2a0a03930a5e27ba3411043601f862dcbbabcae32319", +"T2T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "3a73f383374c40271f188bdd11a6b7ec7151ba6b4d5fba5393845ce9ec5c761f", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "550ef3ed1a280dfee383119ee41329956c47ae38162721cd3ad53f00d8423937", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "13d22ebb279d767f2ca485dec0bd8b34af166ad24fbc4a31c2a13affb66e8fa3", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "8b40d37c0cff86133706c19210295c536569751e63dec439d46ddbe646c7d5e0", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "ed993a747301757e73875034c19609be207617b79f14fcbeb6526ae83f7d0333", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "622b32eb1bc8370fd07d688dc2662025a25efcbd465c465163598a3775f8dd30", -"T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "ff6c6b4971156fb62e6d4844bd218e92eefe6642bd261891a4ced1f0f4c5f725", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "80f2d0e052a232994c6c1878a3aaf9f2e707d42dbcb6b1a8ac8bafab10ff3bca", -"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5e6ff4814f16eeaba2def03b1e990e9e6b4ab186d862cf05bfb1e3b4d4e6f37a", -"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ee18d6b279eec3dde84de981cbcf4cee1c6dbd3c4e2d8b54c1154befacae35f5", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "2bbf95886a7d046a01f9e08c6f602dc90abca74271ad3b95342dd3f20d2d78c4", -"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "9365e1b74875779912ab192f3c47a69a0e33fe5f3ceed120928b0ee70e0e4e2c", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6a8509d7f082af7f66b79b9924235baba636705b2079e19b8719a8032ae63a8d", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "0a3f82c22b5294aa3b2dfa80038e8c7b6b421c2ba2218feebf624b736b2f4935", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "30c820e4864c26d1c8c49a411caac082c294402681d230ca3005dd9bd5a033bf", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1667bf812fc1c0298428919d30564d8edb4ee0d2fbc84a5e01e993ac05363e45", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "26aac7d580bc5016915c58fe1683d4277f9f13a9f3262093045657fb0f3dd820", +"T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "987b8e2a6274c23b8365ed3076c016e5560ef190e47fff2e13c2cd498716ddfb", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d8fa65e5938e8c29f89c96b32e2ee705e820de527bfff87ea9ab5917f29f26ad", +"T2T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d15d38a608c50433f13a97ca7be447152101ab5752d5b4d7bb7a224f70bab8bf", +"T2T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1b27fdbf132689e104669d0b656f80a859c4152702e8765892fdf319571e8173", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b205ee80892109c775d3b8f1b8046ba30ce897728cd007436b0f6407c27208ef", +"T2T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0933ca25098690bcbba9fac12200b693acbed4172ac1f9df225bcd9b31ea3e11", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e1714dd0d8e33bc7d38c8a8f0a24082c89846497a98fcfec5136743007da9171", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6b8a98bb658c617c435cf541e35c1fdb055f86c983add4df01b714836239c1b8", "T2T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "f2b9355b112c77ea457568adb7375dd8f2338f5170ba26758751ce3f8cee285b", @@ -12219,35 +12219,35 @@ "T2T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "06aef40642884843baabe7e7d6b69bcd772d6f1e16f231d2c6244b6a727bd08c", "T2T1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "93471a4ccc8f77e64e0fee636363a90bb05039a517f9259f898f460fb6336f00", "T2T1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "2a23c234c26217026172b4c55c0a32d33e8b3002c4c618cbc4f6f80f28ad0501", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay": "5504c87baa17c6fd52a270132e24a01c0f6e87986a042c3ee988ade70caf409c", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "ac13ca5f92affa8296b97618d859a526a831a15dfbb19c73bccc2a5a28599043", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "9a023b19c12c1650eecec50c0000d26c6c918a7543959155dc6a8ae23e4110bb", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8e7198a958bc9d400359e93cf31e0f7c91b54cb5a0e9e7477ca2c2f53de666e3", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "82aa0132677c53b7f8487b5a29593524d98a0e1ee68d5aaca01ba7fab26e7e6d", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d72beaae7130964673150610b0a0ddf8e631b41e39bf54a5a436fc9fe3be29ff", -"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7952298ad99d95d896fd513c45491d320b1a17fb9e6533d6a7c9790779dc29ca", -"T2T1_en_test_autolock.py::test_autolock_cancels_ui": "01a9f12049428f4eb0d78493fd7833fdc0d46beaedaa0e41e48ee7ce4acf42dd", -"T2T1_en_test_autolock.py::test_autolock_default_value": "26456e47387df96753a31089b42925fa24d29604564d9145a0a40e7eed03b04d", -"T2T1_en_test_autolock.py::test_autolock_ignores_getaddress": "8bc4805e5fb3ad2d6b28ad68fd7f70c86a4b74a4f8946c3b9a54bd592054605d", -"T2T1_en_test_autolock.py::test_autolock_ignores_initialize": "8bc4805e5fb3ad2d6b28ad68fd7f70c86a4b74a4f8946c3b9a54bd592054605d", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay": "cebf513e5fc105832161de7930cd688d3e36b5eacadfa636bd52a0f26737ac71", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "354c7b044815445b2e29f2981a5d465f560a7132c929da3c3d73f248f4a12be3", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "9c151b12d5ed1aeb5f1bb5a2e4032cc758d4e99916db8d2d1ffea2906a68521b", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a3b457c39d1e2bf5fa532c9f46a0caf758e8ff6995dfcb4e6f4a5d9210b64557", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "db9ab08f37a480f92ad5997f1ffdc919a1e24875e7747610932b6c5f9fdb4f38", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "6ec65d7cd2f51f7ca0457bc2e998a59ecc1ab2c5b812076222c751bf63360c70", +"T2T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "2472484e33d8cad5d7e92869e5ae7e319859b43c4d4dc2fb6fbccd2d23070868", +"T2T1_en_test_autolock.py::test_autolock_cancels_ui": "e61e07fe27eb142540dff8e9c424e2491e93579272c8acca825e2a370273c09e", +"T2T1_en_test_autolock.py::test_autolock_default_value": "e4693a04e626840f3788814fe71338bc33ad7ef1977f16d41f84c3d3176c3d33", +"T2T1_en_test_autolock.py::test_autolock_ignores_getaddress": "72ed62ffb4bcbcc451eab1c899cb41bc58780be88c06fb49cec0cf5c8cf8f25e", +"T2T1_en_test_autolock.py::test_autolock_ignores_initialize": "72ed62ffb4bcbcc451eab1c899cb41bc58780be88c06fb49cec0cf5c8cf8f25e", "T2T1_en_test_basic.py::test_capabilities": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_test_basic.py::test_device_id_different": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", +"T2T1_en_test_basic.py::test_device_id_different": "da62955bf95a46626b66fdc59ad58948236073a2154227dc6df0f0f8652cad7a", "T2T1_en_test_basic.py::test_device_id_same": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_basic.py::test_features": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_basic.py::test_ping": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_busy_state.py::test_busy_expiry": "6509e7c943f2d09e3a5a7c69faee74c75b321ed1614d881d1ebdb57693c7f69a", -"T2T1_en_test_busy_state.py::test_busy_state": "13fce27fd795f6f622614fde678ba3f717129a27ecc6d0c2cbd389ede4a2798f", +"T2T1_en_test_busy_state.py::test_busy_state": "b7e688a5a696c3e3df9b949a6abe995cd511a1cb4f6fc0d0ea9e2e6da7b24fe5", "T2T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", "T2T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "3ed24b99952d25fcf0d9bd6d307c576862fe870ddb98288fa89b227f0e192073", "T2T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", "T2T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "3ed24b99952d25fcf0d9bd6d307c576862fe870ddb98288fa89b227f0e192073", "T2T1_en_test_cancel.py::test_cancel_on_paginated": "5c198919403dab5ba394a87544aaa95bdafe82959fbabdbe918c81e2d226b051", -"T2T1_en_test_debuglink.py::test_softlock_instability": "55cb4cbeec68bd8ccee460034677cf8053f8f688d5c3559f360c38a205b34e37", +"T2T1_en_test_debuglink.py::test_softlock_instability": "1ba748f0f86e39772ee8d860ee7fa2c557e1fcaf8256e5221994ae5e91b7315a", "T2T1_en_test_firmware_hash.py::test_firmware_hash_emu": "2a63f0bd10ba99e223f571482d4af635653bb8a3bddc1d8400777ee5519bc605", "T2T1_en_test_firmware_hash.py::test_firmware_hash_hw": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_language.py::test_error_invalid_data_hash": "aaf31bdc64a531bc9084a003b2ad78a9fb91ba9b138090b1e2daf78ca4c106f9", @@ -12262,7 +12262,7 @@ "T2T1_en_test_language.py::test_full_language_change[es]": "6c3c6983dedaf60e8818c0acdff7f1ba83ff9106333d834b8bed02d910bf5b1f", "T2T1_en_test_language.py::test_full_language_change[fr]": "7e1f16d84163fa6b8a8acce859f5c5e97ded578c28f75629e4f9bd587cd051a8", "T2T1_en_test_language.py::test_header_trailing_data": "bf322715e91f7fb147f11c187d88813f6cea81f520030a9c71ac7fdba1b39f6a", -"T2T1_en_test_language.py::test_language_is_removed_after_wipe": "706b3c433db7d062350986f86b4bc47413210369261cb7556a011fcf791153a9", +"T2T1_en_test_language.py::test_language_is_removed_after_wipe": "3934ba66f069e0514faedeb36a08bc5f5b3931263018ddc8cc046e535a6564f5", "T2T1_en_test_language.py::test_reject_update": "78b8f16e00c5d653a7d5c0929d21ae8ae1c76798fe28f0eb6edee8e2ee8b0202", "T2T1_en_test_language.py::test_silent_first_install[False-False]": "77d704870843ca886d0a807a8f467f5741e0d7713ba68d78ba0ecc0d8921e910", "T2T1_en_test_language.py::test_silent_first_install[None-False]": "77d704870843ca886d0a807a8f467f5741e0d7713ba68d78ba0ecc0d8921e910", @@ -12272,15 +12272,15 @@ "T2T1_en_test_language.py::test_switch_from_english_not_silent": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_language.py::test_switch_language": "96d22e81bdc95a01571b678688798ea58868f818372bbc28fff6cb2415531d56", "T2T1_en_test_language.py::test_translations_renders_on_screen": "bc06283850dbfad95bf96a97768c276df1543073d41d89909097ea2fc4f3f9ad", -"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "d4e26a1227c1867413ce73f259f16174e43b3e75d75b508dd71b117e06749243", -"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_msg_applysettings.py::test_apply_settings": "77be3f4bc733d438bbc10a6b0ed2d413f4ba1cbafe1ccc7659d05952043f353e", -"T2T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "ef45d1caf6af022c3dce5a8daff55b09f46d1419475d222ac0abf666e4bb1bcb", +"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "d5a6f3963edd221b58473800053f552c36304a0ca391ee5c7bcf1b4b55fcd1b8", +"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_msg_applysettings.py::test_apply_settings": "20952253ce94f12f091cae7e8f3163a07415a4fac2e1b6fb8d1167ce4727ae12", +"T2T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "c2b3471ea4f29da8b3ce71a8f1d822a6b320a484e0ca75386ad3e32116a8d8ff", "T2T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4356ecb3e22e2c04e396b1bff23f72382ae2796f0d93a0e778a25c3ba28857a4", -"T2T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "4ac1c55b5f2eed836bffda4783e4bad80eff64b961b1c0a0140cec9fa6a4ba16", -"T2T1_en_test_msg_applysettings.py::test_experimental_features": "523f74db7f660c261507dfdd92285981869af72c9ba391c4dfedb3f06ccf40ad", +"T2T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "28bb0fb9d5296039f379a0c6e9bc38f37358928dd3938cc322d523874c628240", +"T2T1_en_test_msg_applysettings.py::test_experimental_features": "38bfcb19f17cd020b3cd38a0a09c1698da86dacc62a43f59b926a50b1fadd041", "T2T1_en_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_msg_applysettings.py::test_safety_checks": "b129e0ba2e3c7ac836b3bb4b0bc8ded1c922eba054b42b434d10499fc780ea2b", "T2T1_en_test_msg_backup_device.py::test_backup_bip39": "7c8c3efab17cad82000aff453bc426b7665621edbff1bdb1c631827d23b4988b", @@ -12294,60 +12294,60 @@ "T2T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", "T2T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", "T2T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", -"T2T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1ca11dd6749f7640e421b540f77b7ad9317ff14c2279bd2f45742d5e4e9935f2", -"T2T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "db9ffa189464d1c0ba7d3ea2533306e25e6895355083066c2b6f9b19efb54406", +"T2T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "16cd07db386059bdc79dcfd404aa464fc1876ca831c317de9f1851afb7dbbc36", +"T2T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6369901e32c214102a0ed60ceb71318009bbe2e3675bbe54bc00e8597a9a5033", "T2T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "96a18ef7ba92b18fd9d6d3856f737e8b1418df79221d6750723109c90b2d5807", -"T2T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "f478a15ed2dfde070953b1f14c6054452b0ac27ef8ab5cf9c1ea233a43676a32", -"T2T1_en_test_msg_changepin_t2.py::test_change_failed": "72e36642bd0b8832bec9e3b171da5a7fe5e2a1b44282c521a69d4fc0b5254828", -"T2T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "e9925836465ef35c3d5364e90780626274a92a1123451b572b9ea11a9cd2180a", -"T2T1_en_test_msg_changepin_t2.py::test_change_pin": "256483cab21191ee110281e9f547c3fa08968f4d49fa38896f8141f5b8eb4701", -"T2T1_en_test_msg_changepin_t2.py::test_remove_pin": "6a606987a97b9d50d991288f1222adf2c819846076b2014e91909c9907a0e427", +"T2T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "a8424f113ae27adb45d4c4a62b18c0ba153e099e65a1a8bdf1df64071137825c", +"T2T1_en_test_msg_changepin_t2.py::test_change_failed": "cf6a5f18ac39a2e43e8ead92197628ce29b9d7a83c44a0cc9b24e72446063a01", +"T2T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "496eb2c782e9694cc8d1067b0138f57fc38fdddfab13377a47f7a26f39e00adf", +"T2T1_en_test_msg_changepin_t2.py::test_change_pin": "7be2334b7f6e7916e1f5e0090897f6d835239cfd4724b625a5780407527e8824", +"T2T1_en_test_msg_changepin_t2.py::test_remove_pin": "4c4533c5ea0595209a6002bb5cf26e30145f7ca0fc29e03f425e95cbe3bd3a03", "T2T1_en_test_msg_changepin_t2.py::test_set_failed": "8102f364e48feb5a3bf9eca5435135ba955fca4c67b05e5fd543a662c5734d2c", -"T2T1_en_test_msg_changepin_t2.py::test_set_pin": "001a60864717683c3edfcfaaf36adcf54a3e7459307ae8198802280657b2a918", +"T2T1_en_test_msg_changepin_t2.py::test_set_pin": "d75e0ff70b44ba052992bddbe4bc99d053e1e3dbba412258e51dbe2acd5b6784", "T2T1_en_test_msg_loaddevice.py::test_load_device_1": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"T2T1_en_test_msg_loaddevice.py::test_load_device_2": "3b8eac607fb749927b72b5cbf05546bf43b61d902d9c5379905f124b664d2bc1", +"T2T1_en_test_msg_loaddevice.py::test_load_device_2": "61d7c06bb965f419ee41c9c45a85dd1586c026efb69de3c30789aaad25d8808d", "T2T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", "T2T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"T2T1_en_test_msg_loaddevice.py::test_load_device_utf": "d3f943a509c3dc111f0633b8d832bf7edcd534564f1f7d6cd6a7dc6acdcdfa08", +"T2T1_en_test_msg_loaddevice.py::test_load_device_utf": "4a5adaf797529d8897c90eabe30539d6d69a36457392b70c64c1013a073ddc23", "T2T1_en_test_msg_ping.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T2T1_en_test_msg_sd_protect.py::test_enable_disable": "0c84d283dfb6d58ab91670d858f49e4229c7f7f98232288be0442d1758f5f31d", -"T2T1_en_test_msg_sd_protect.py::test_refresh": "7643f69d7b680e5bae6c69be1112d1a22d396825b5f1b3a068df70efb1a738e7", -"T2T1_en_test_msg_sd_protect.py::test_wipe": "aead68a021aac7aa311e63617e011bdbe83889e7da8579e1247ac07751dd574b", -"T2T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "5f91145de9bed30ec2a59299daf00ba550c2796e69f4a416b67516604c7f562f", -"T2T1_en_test_msg_wipedevice.py::test_wipe_device": "a2311d35eab312a51948f62e75484cb352c7794764403812a33acc9bfc89ca73", +"T2T1_en_test_msg_sd_protect.py::test_enable_disable": "ff184d96c5f8a40ace66aab178778cabc37052707c48b4c44dc43ec79821176a", +"T2T1_en_test_msg_sd_protect.py::test_refresh": "63ff651fa884b41ecff3202f7c53a7bbec1188a6bb9cca0010b60204e4b10acb", +"T2T1_en_test_msg_sd_protect.py::test_wipe": "0cb0d0152a42e00ef0b609a5b5464f81b8b6701ba72b829ef180c4159f57638c", +"T2T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "6edbe00e569f024b0c1082132c5a528ed7c44f5b79a96895170b82c080db617a", +"T2T1_en_test_msg_wipedevice.py::test_wipe_device": "da62955bf95a46626b66fdc59ad58948236073a2154227dc6df0f0f8652cad7a", "T2T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "19f014ae9368caa8c816d0eb613ca51038cec6b3a0b9d290b1e3fb5f0a7338e3", "T2T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "19f014ae9368caa8c816d0eb613ca51038cec6b3a0b9d290b1e3fb5f0a7338e3", "T2T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", "T2T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", "T2T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", -"T2T1_en_test_pin.py::test_correct_pin": "4d7c67024ee17436071e5cf2f79c36453249c95314a732580623cb1f1cdbfdf3", -"T2T1_en_test_pin.py::test_exponential_backoff_t2": "f1b35ee4aa7a99d52c6c75cd8a8bcb96f93b6ccc0627f5f685da9e539a317311", -"T2T1_en_test_pin.py::test_incorrect_pin_t2": "35ba6004f124e458c902ef581fc6f64a8e8cd6a33d655db070f7ff635613c6b0", +"T2T1_en_test_pin.py::test_correct_pin": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", +"T2T1_en_test_pin.py::test_exponential_backoff_t2": "7bb469b8983125d8fe7984d158697c19309899733acabf05fc9c5aa2132a6acd", +"T2T1_en_test_pin.py::test_incorrect_pin_t2": "d4eed6222ee99b135fa3719c2bdfc56cf32a56e6f107e81e00d2900213434eb5", "T2T1_en_test_pin.py::test_no_protection": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_test_protection_levels.py::test_apply_settings": "13c0b9df0d94b5e9208019e2553541833ceabf10351ca3b21297b87876352656", -"T2T1_en_test_protection_levels.py::test_change_pin_t2": "acc7fcb094f27599d7b9ad84af803e509705f82a85646e5ef5b50fafcc456042", -"T2T1_en_test_protection_levels.py::test_get_address": "90b5ce41659d7d18ea3edb3e1c7a951fd639ea6ffb0dd9ce7ac6c7bda079a767", -"T2T1_en_test_protection_levels.py::test_get_entropy": "a4a8151b4145800ffe4be0d7b0ac19490dd784fcaf6bca3a58dd92085708368c", -"T2T1_en_test_protection_levels.py::test_get_public_key": "90b5ce41659d7d18ea3edb3e1c7a951fd639ea6ffb0dd9ce7ac6c7bda079a767", -"T2T1_en_test_protection_levels.py::test_initialize": "81043463fed15a2f74e441afe7f4876133ca6721bb2e08faca4b10053dd72e83", +"T2T1_en_test_protection_levels.py::test_apply_settings": "e6685105f4b87b8437be762c673fb386a8290ac608755b017b992200b3ecb311", +"T2T1_en_test_protection_levels.py::test_change_pin_t2": "3bd62a76c14ce932f85f509d7b16750a9ad21095926d729ed6e0a1dc004852b8", +"T2T1_en_test_protection_levels.py::test_get_address": "45faddc8ca38976c59227e907c483d76ba343e8f2c42570efe2f6ba365074598", +"T2T1_en_test_protection_levels.py::test_get_entropy": "7394a6a6b5300bda943a4f054a3137e4066a0447b3135912fb5246bf65b20980", +"T2T1_en_test_protection_levels.py::test_get_public_key": "45faddc8ca38976c59227e907c483d76ba343e8f2c42570efe2f6ba365074598", +"T2T1_en_test_protection_levels.py::test_initialize": "786c1f33933a8d23b5a314a1c7a7753446d3c6c14e46f5d729c4ad9eaf627fca", "T2T1_en_test_protection_levels.py::test_passphrase_cached": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"T2T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "6b2b5aa5a41031a8eeb980d0f53dfdf31c045b8b22c51fbc9d361b2b4fe132cd", -"T2T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "adc28ee6969d9c6644e7769598ee761ee4a6f8bf8bca2453875042018d8af4cb", +"T2T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "8f490cf819b398b112588dacfc453ace534eea4080e3c17e9bb787e385f96dc3", +"T2T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "080048e6066d0a81102a9ac6af8ebf7a7ee8ec378685f23299940905b8941030", "T2T1_en_test_protection_levels.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", -"T2T1_en_test_protection_levels.py::test_sign_message": "9bac92f0f3d6e160a8ebebe972b8cfa69bcb39ec4c8df57967cdbcf22cd4b37d", -"T2T1_en_test_protection_levels.py::test_signtx": "66d6126817dfb2df7a08b2deef7dd18a07763400f4d88c4776571cd7a8fc4554", -"T2T1_en_test_protection_levels.py::test_unlocked": "4488e2b6f06fdff05749ac271d080182f1c95645de37898457ff12f0fb190381", -"T2T1_en_test_protection_levels.py::test_verify_message_t2": "cc09f0acf9e48b1355dae0be65a2a97abbe2811808feee08d46ae7146ce6bb6f", -"T2T1_en_test_protection_levels.py::test_wipe_device": "7ff017de646b7cf70832605e1750c635d0eb661d51534b56007b49e82b927011", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "f5415b5df6f30bb6175cfced072211c24909c7817773a07493c1d1801dc0ff6c", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "b5a1ce24627ae499680f902ee35c1ba852f99a3c1948b1a5131ca53967654a5c", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a09d23fe859d50ea8ad0ae2d109f215633cb198979b5e4eb0240cbb00ada1958", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ea4b0bc5c42a5eda7de719c30331d30f9afac1f092da463aa51cfdbf2bd39b85", -"T2T1_en_test_sdcard.py::test_sd_format": "83d0d9b4eab3bf0eafc22d7d95e8b70bce477ba9c8b4ba13eeca9380ad5fdafa", +"T2T1_en_test_protection_levels.py::test_sign_message": "732f29d186fecd0bbbc69e7debe8bf2fd762c14d3b05f7e17da2aa5d5a4bc857", +"T2T1_en_test_protection_levels.py::test_signtx": "fe437624bdaeff458f6ed71b3d1d832d08d28efc7d7c1e96486b1e19008f480b", +"T2T1_en_test_protection_levels.py::test_unlocked": "ab65da2ea346b0f54de6b527d06b3b5b84b106af7c8a520ac7816141ecedf220", +"T2T1_en_test_protection_levels.py::test_verify_message_t2": "df42b13fa758144fb18f66704fa0e43d61722dedc954be3394b1e29f67f103b1", +"T2T1_en_test_protection_levels.py::test_wipe_device": "96fa9b5cd96c7172c60f8e991c5afa4f8caf911561be11b32a10c1f0a984d704", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "10bafd2c400e291a33cb1b234acae4885fdf4e9619fbf1411d0270e530f31854", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "421f1c311a3aa522d97178cb771bfb17c5746a8434cb85914f7244fc7a7e614c", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a1a84c031fbdae140735699cee7305f603cc447e7157e6e32bc4f665bd951b2c", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b9c6fef7822f8aff7a42e2c9631e9722c9dd4d6af3e681e6d60b80e690a3882e", +"T2T1_en_test_sdcard.py::test_sd_format": "88e466d3626b9863f8fe1da739e8552541ab4610016478d496cd7e4440ee9e55", "T2T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", -"T2T1_en_test_sdcard.py::test_sd_protect_unlock": "1302f9a0835cac621142a17031d2150553e676261a3eeeefd32fcf1e69c7bd1a", +"T2T1_en_test_sdcard.py::test_sd_protect_unlock": "bee2b8b705eed3ad0cecf1d79f97dedf9b5c28929b9121659ae660c959a27ec3", "T2T1_en_test_session.py::test_cannot_resume_ended_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_test_session.py::test_clear_session": "96f21e6a6c73c121c41c3228ec7c50937defbde875dbdf0915795366132207e7", +"T2T1_en_test_session.py::test_clear_session": "289705a7742fdf6a0ae69cfb0ec1baa57277484485c20d1d174b880cfc0b2a4e", "T2T1_en_test_session.py::test_derive_cardano_empty_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session.py::test_derive_cardano_running_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session.py::test_end_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", @@ -12428,8 +12428,8 @@ "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "20a8c35d06f9d5050ad9644b6921e73186abed298da83ef145d2c2af5b8fc671", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1c9dd8de0ea726a346ce6480bec2414b29acd6779125d929fa83d84ce9ed3e74", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "399bfd4e6de87e62ebdc60087587f8c27e2befa2b8e6bd9c719c3c100c568057", -"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5393a9b8d70bccc1736ab569238972398783cdf0f3e2da88b58f7e92ae871e66", -"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5393a9b8d70bccc1736ab569238972398783cdf0f3e2da88b58f7e92ae871e66", +"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "47830dca5b98bef70285452943bc1a58fd8e302357fb0b380f0d24eef0faa1e7", +"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "47830dca5b98bef70285452943bc1a58fd8e302357fb0b380f0d24eef0faa1e7", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "cd27505e5b5c047732ddef06cb93ac052449b79e9babfe4fee6589a453d6fb0a", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "9d60806fc7e7179071eb959f5cbe67d97f11153cbce97864e0615254a163d537", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0b3d3893f01bf57bbd644b19bb2072f8c435931d8cb2a38a97ac2659844efd3c", @@ -13497,57 +13497,57 @@ "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "024cc5cfc6aad189dbd2810e1c77ccd925b318e2c2b0bd2cf246a3426c29db26", -"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "28ed05197157a35387fc9b3f17674d1afde3ef7512d9f70f8c649f2ad451ebbf", -"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "fa5f7dd12d58c8cde0ad1ece0df6c02f84a79cb9ecf8d2cd6eb1e98abeed46f1", +"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9445b8850928168ca70df3177382f8a3d409db373c6e268b1169bf4b33fecfd4", +"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "3c10c1be0390bda248a80d992cc7a93671f3cf5928997a2369ba1ef4670a81d9", +"T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "267a59366047e417511a8d98e56cd6a3ffad5c30710b87897e7d2b3e2ec3be6c", "T2T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e934061356abcb86ce2d029a9e6bcf0f98f87a49c499a54b02709ca920d54c2f", -"T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "4d527817543aebde12b767989f020b465aed2ba7eb8bcd6aa2f43c29cdf576a0", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "8de8faec5ad01e29ddd7cfbf5917ad4d521350c292a2435966a8c58e3a747c16", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "4d322fbe767c4f2df793d8fb33057de57be5253216acfd689b36aff3aa7ffbd5", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9cf8b210c642bfe0d2157896df418031111ccb34d4bd4b32391c04bf53815d93", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "fd3e6d57ecde482e2ad0079dc19539876db95ba57db6b1d2a18ea8f8818979ce", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "da731736f683bf7d8ba5c45c57aea3bf5d0fdf613690fd4f5e76fb3f86a7c98c", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "00f18b42b8aafd635c4326053cd6067c243d32fea7e12f4adbbdfded1adcbb6b", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "5b3c0b26b7daa7f688d0532b7400d9a5aefb3d8e0a8cda43b76720daf8d1d446", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "78ebd0344bdd60346b31ac681de39b9acad73065eba1bd2314d5f232becdfea2", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "1d8859ba3a50f0771be8f7e9a6d92d9f823da0ddd19b38a36015f6362b70bc28", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "4a7bf8e765ddc14d0748d63b346f6b9d7e13fba3de455a38af8d3f49a579c110", -"T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c0f8ee3ff26c3bd7d935ac2316deaaea1d4565b2265d4dda3ee3bfa43c53de04", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8895e0df1aa3939ddb582653c705b173150f50fcbe52112c4926a708eb70fff9", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "8de8faec5ad01e29ddd7cfbf5917ad4d521350c292a2435966a8c58e3a747c16", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "9bfc6373c0b17e848aed2af54819c8a5ea1430f14e992e68defed671df988335", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c219af5138402eff7218e3aa3e1bcf4cb49e13e9f01a78fc8d2735e08d6e84d7", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "a510debd7be0810c8a4b0846ae7a5de062d1c32096b3ffcca86561d9f17307c6", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "294dd95f70ca41064a1efe938b0cacaa39a42aaa3310e3710b1f0519bc2d1468", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5f1bba83c9ecf2a47c2564d9f2e584a9e30200286f6c334a09454626c81e93f2", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d9d1a087cdbd6f14e3fb73e3101201b53c6ff2c2719e4257eed14990158d9efc", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3434f4acd66d2656a530b42119771221cfe98892908c311990ca55fb79a40bbb", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "a0608bb3ca9ccac097d98608291eda6875d86edb83bdaf557fcca03287e45fb2", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c6efa351599ca3f324906adc7542ea69abfdb713a513c0e53123d8f33142663e", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "caa8579a8ba2f54cf68a61660ba3b82afc14aa9cd405b2c43a96c3ee7954456a", -"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3cefe0b78f6f345f8bba992e3830ea36733e225b78321f6792619de17448562a", -"T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "66e1d883cba172844d6ebd359209667bd0789cf8db0d965c3bf11973aad37f2a", -"T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "49bea1e7ef0d66c2e1539e959ffeeb664487620cca47f73a1f4fe1c7c1332662", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "16df3990af1bcc5fa45a1ee5d06aad24e81d649cacf04391dbaecb2baab231a2", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c4a3ef72e2bb58f1ee6b3e17a63a6ba19c7b6c0a79834a8c44cc3da81abcb15c", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c253a9fbf9071d01df56b5ac6940ea143dab02980b53737967fcf6d65b286e6b", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "879685861798c5e1d30a78f9979f4898b9c4f8417c2d5b7cebf40de9e740bbb8", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7414731eeda17258fd5331d346c3430adf902b2b9f7d94800bfa0f8a31ab8857", -"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "85e488bdcf0c8b90679b3e647ae90b533cc7055069ef5557ee6fa2423206d0ee", +"T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "a37f9f875a3a136ddac93313f1dc03bade97ddd8e6f2afa599d9c3ba1b654dae", +"T2T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9b2aae4e303884d59e8fedfd4ebdf3adb00988fddfcfce0ddd735875639670a4", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "aceadc1d9e447ea443ed4e338e0dfba0d731acdbfdb3b383a3a1d5c3cdc2a14c", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0200b2a233190d9c98d178b8632846984d38dbdfd8752e5a74d3863b012bb0ed", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b2ec1a5078d7486a3770f451f90bf961ec73033fb89ff36e52b9a8966f8a3ee6", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e20edea4335606f00daed47624c875f294d81614d7fbb52952e405237226bc1b", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4afb5d00cdeb5c53bf42231cb506a7a0f31973769c28f6d2a713ca7a6813a801", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "21cea70448cc13b16a4a3b790f8718f9abd930d53c3479af5ec787e8fc6efef5", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0af540912d48e18a5ed35f7692014516b3cdfe064fc3de4fb055d04d3bf34c3e", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "ba472caa1bddecf83601a64561acc332ddf64c8a48091996067b38f7ffdfc2e5", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "825e9ff73e08ac2a9fb5dace13272283d2781cf0ca39f710938efae220f81a3c", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "008ff0781e29a39b6f6b8144437fc24549f643a93f04ee625198f4726c25c736", +"T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7ee679b8b34114b7e14190fb53cd728efc08170780ab9f62dc4c4410d6253bc6", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "c7f2d8ecdc393c271f44ceef151349b2435e7ee68d95924a4439836eac01b7ef", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "aceadc1d9e447ea443ed4e338e0dfba0d731acdbfdb3b383a3a1d5c3cdc2a14c", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e43a1dbbb1e3ef37a98a5b1a67a1ead03579f21ca6349d11b4928028b272ae6e", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "915d83b0f221bf460a912104d411efb1c53f090e62c3915ae64f4d8fa33c0f3c", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "eb6631c58ee29019af80acbea0aaae9f2141dd6636feeb73a8c5d77006ef3bd6", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0c3a3356b0508ffdb43b103b5283f9ad29369b52a654186afe9018b4483b0a4b", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2ada224d06266fe0df6bc3deb8116f4eebb4fd378a552d7c9a907664a3432bbe", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6c1949c4ab83cbb3a946a89eead6168df0f66dca6806b71e2a71cdeceb2755aa", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "255efd36b07b46f0290edc2de233ef75ba77b597a77928c58a8cf6146e32112a", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "c1595cd86e1f42813fb83d19829f594db3a188328785c14243a7ca6b8d202512", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b8a4b8ce2f03bdc86b4ced3242bbcc2e6df5a73737d90fd9a26afd2293863426", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3d3f7eaf6e4b422bfd19996a3fe06348c5dd447209cba06e92617bd3011f8ccd", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "73634fedc075e7f560414f1b9e80669a9f2e044faee6b45885b6e91c196c4ffe", +"T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "5366087598ac6ec6484a9405571738edeb931f2087e2d8522bebd946b2a17ad2", +"T2T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "99d9d44e5fdb10d18915de247aca9dfc6e3a2546b517f353464eae868eab93d4", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "0c342d694f15216ac711d53b16a1ab919120d719ef0a11488248a852e601712c", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "198e900bcf53de37c4db83e989ac10891a2a609acee85852d7a91d0973837f51", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9d9e038cb1774e2b56b94fe0e7dab1a3c481ad6f236fe481cf2f3662af461d6e", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "0171ef001dd60ccd55d57a25c9b01c830d0f13c522a4bed0e322709b4d15a891", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9e21d0450e8c5a912ae9a2f666688df2f355ea4db9b638026fe3370f426813bd", +"T2T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a675130ea24e455dcd6b84fddf59e74d8dcaa41494553032f90aa7472d1a1b97", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3feef5d60a1a5f6ab43f2033ef4b0a266c70223ebbec77b67bcc14ddc9a50e40", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "206a32c821aad318cef9c4341bbcff0b9a4675593ce6ed6c7c194ac6d81c391a", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e1da87966420af70251f5ce6046ef53030782e64821d3db02536d72218056722", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0ee708b2f9635a52683e6e10789ae3091a2b1ec1cb42accf5967d9cc0b988b6c", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "54c59456ca0ca8816164f3807310a09327a9fa3e6f7ce481649a9973cb60fe9b", -"T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "0a23df1a9e89dad3e5a69658b030e348ef3a95f5aa5fe01abf24825bd93b074d", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d5666c68fbd29e56eaa2c0cea388cab8a5f5e8622824ddd119ac0560c32753bd", -"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3ae125d535471924ff9e2ae570fcb272b9578748dd3338ec2d2f6cb6dde5ec84", -"T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "565595f169db103f8d4c6a51ba8f58f4742f52505f9001141798e2229182c995", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "902627d74337b365298b5d9b41e1d999270d8feacf92b6da7c2aa0477cc07c8f", -"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2404d40d37f1c69b82547d42ee290bdcbfe7015322a17a6329d26ccb75e92ce3", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "09de554c06d4ac935bd92fd5b4948c4c1901811fdbc535e58db3cfcff381f00c", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2215ef3feecc0b5779aa8152b33a4b63bf31ce867d0bfdd0df0e660d7257c027", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9529294daa4d778155a91982b8651040d2ebb00857fbc9d0bf5c165eebfface3", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f457adacc76760a2d98e18a39b6bad2f98459901598f2452c3e1be26ae5e1eaf", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "55cadd14cec29cb7139a978f9bdd90dd4a53e5f37735fed0c82b3422e738f046", +"T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "43a6eb6652519e5ec2404b9932bd4cb7033f2ee158c40deb432644957ab68736", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ddccf0ba5b9d3fb402104f11b0a789831169503888335be13fc16cb91fc87c90", +"T2T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "e75483eec27daa2b14d54d83bf450cf6d70e2adf1790483061adb5519d405843", +"T2T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "32b116ee0c31dab68643d514132049ab35dfcce32667b77f4e2468d9af92e431", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "10381c518f7e806c33ed6110fba4f3157b60207dedf7d112df87a557ba0da3ca", +"T2T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0ad90cf92738276035285edc0430ce7757adbefb201910bbd60a58f86dba8954", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "650cefe0495b237ae3cd3f4173c870af855d74022898fb9edfb0bb289041fe6b", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c7b1ac25457a8c4a1c076d0c98c6bfb7c37b2b448ba7ddc71740450a5bc5ef80", "T2T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d3c81c8262f436efe874bbd57893c76801fd6ae24ecc3f7d84488b8fd63e0e5b", @@ -13685,35 +13685,35 @@ "T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "597480b947a91b4bbc8a34f69941e0eff43acb9c001e6a499170514924410509", "T2T1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "6b4ef8932f6e76ce105a93633b7d3e7fc6745ded42d6e642e02ad80f2dfe9420", "T2T1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "da70906b0740ee06e4fbf2196663b1254b7d1b93b84c331e41f57324ba4f894f", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay": "a4c293750a4dd093f7b6129b048b9d5150e6a97ed78d0a7bbdbe490047edf09d", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "306b4e5ba0515b58010fd6d842b733f99d1009db85a54c1d2603abe9d3963b27", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "61b2b10287ab0453bf21cba800d2dbc0a5ebf3dec99b0364ec246525e54d7c2f", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "9c12cc40b06cdd3b8985b9483ba6dceb057accdc0baac1c153203732212e95bc", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "78e5616cad1ed33390f246cd82279f6fae307918e693e92dc7e7494c25313a9e", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "179ba6ab88dd31ae52f5b3acc7ea0d38a43a52fb841d550ca6ae0aab8218c053", -"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "54beeac255ccc644a96cfebbba0f4b3a2e82bdc9ea6c05336a65980b5b6003fa", -"T2T1_es_test_autolock.py::test_autolock_cancels_ui": "59bfbcba673599ea84ed69a5de8327d47fca57d009b6829524b21c3d2536c9fa", -"T2T1_es_test_autolock.py::test_autolock_default_value": "60845adf69e96321608613463159efbdfb2b9157795f480c6b4751deaec90297", -"T2T1_es_test_autolock.py::test_autolock_ignores_getaddress": "f0a2e0a8d908e721f930aa7d7d1fe08c17fdd5ab16da9a4df8ec42c4f134480a", -"T2T1_es_test_autolock.py::test_autolock_ignores_initialize": "f0a2e0a8d908e721f930aa7d7d1fe08c17fdd5ab16da9a4df8ec42c4f134480a", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay": "1479abf3bc635ec1dfbc625ca909d004a7e23adf2d8abffce98a396c042ace10", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1e6a41e915220d41cecca331816c0171efc1286057650370a9277af0fb0d3ee4", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "106412e64e48afc204080a0f0b62b87ff0e9b4245640b39c88daafa7239eeb5b", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "3494388f691b35863afebe63819ca58c14d4d7fdc297cec8544b48725ed91a81", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ff32aa06b8db756659aa6e330daf5bc1bf03b68061a21b01654d3ea9bcb49d89", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d7ccb0e5f42128b2cb5b727c46c858c4c185a3ff5e7c4b4659dc9118065b0d37", +"T2T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "d67c7ad7a18b802c9b21386d314e0e52b2aecc90a35a6b979d8ad470106eb080", +"T2T1_es_test_autolock.py::test_autolock_cancels_ui": "05cefeccd2f2f0e9cf9c911cd74a8f46e3bb7915ca42d359444a16282c3ba43b", +"T2T1_es_test_autolock.py::test_autolock_default_value": "4a2f018c5b4b698b62598721817b61c27a18e6cfe1427d5cc470f7ea0aac28d0", +"T2T1_es_test_autolock.py::test_autolock_ignores_getaddress": "24d3e74eee44bf1910b8f1718efbe90addc3d54d46e0db2db2ed36e5224428cb", +"T2T1_es_test_autolock.py::test_autolock_ignores_initialize": "24d3e74eee44bf1910b8f1718efbe90addc3d54d46e0db2db2ed36e5224428cb", "T2T1_es_test_basic.py::test_capabilities": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_test_basic.py::test_device_id_different": "30cfa8e213523185556b09a6e71c27099434484689103e88b5885f9616a29cd9", +"T2T1_es_test_basic.py::test_device_id_different": "b1d0cc9f9deb8574deec887fd955a1687b81ed4de4799573752ffc874605fe5f", "T2T1_es_test_basic.py::test_device_id_same": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_basic.py::test_features": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_basic.py::test_ping": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_busy_state.py::test_busy_expiry": "da280d408675fbdbaddefe467ce32f0fbd64726f8935dc5d49b9d2fe969f7585", -"T2T1_es_test_busy_state.py::test_busy_state": "1f9f7512198e2a8b471738fb5192fd39dac29f0ae800a128a586a79ef5f57ebb", +"T2T1_es_test_busy_state.py::test_busy_state": "0cc7986cdb2519b4b4fc6d25f5b2d2d8bacc938dc389bd834ce329f9ec8bfff4", "T2T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", "T2T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", "T2T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", "T2T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", "T2T1_es_test_cancel.py::test_cancel_on_paginated": "d842630d249b84c0582c95187ad93a13bdd42c7320407a1ed552920b281f6f9a", -"T2T1_es_test_debuglink.py::test_softlock_instability": "073cd4ce53bde3d39a8ba0cf1cb0faeead2ab1b3b4d666c7c60aab1e813c1dd1", +"T2T1_es_test_debuglink.py::test_softlock_instability": "4653ea400c17561954846de7487ab4ca1333402b6a5a5ce63b51bae2654ac966", "T2T1_es_test_firmware_hash.py::test_firmware_hash_emu": "6f9a2eb356b7054881d6b60116f6f54e4884835b3b3881c151ba6ab5f32f8560", "T2T1_es_test_firmware_hash.py::test_firmware_hash_hw": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_language.py::test_error_invalid_data_hash": "e2247117ecc9e7b6beace557014e50fe320236f31ee1849ee1183f5c0e24042f", @@ -13728,7 +13728,7 @@ "T2T1_es_test_language.py::test_full_language_change[es]": "376683a130d6ac67a2c79b8ff3d43249fd60c3927322bcb7280a070a3aaf4cff", "T2T1_es_test_language.py::test_full_language_change[fr]": "b6ac036a7eddacbdb0066ce4589324242935f01c9af9523df89b32d3bb34af28", "T2T1_es_test_language.py::test_header_trailing_data": "3a92b8f6d81355e4e1dae92a1811aec9a8d1e95df0e01ca5a21eb8395f46aa67", -"T2T1_es_test_language.py::test_language_is_removed_after_wipe": "878d668652d773385db2de8ca685f0bfb7710f42e1805e508ccc3d3631807776", +"T2T1_es_test_language.py::test_language_is_removed_after_wipe": "4109a07ce000d2041917a9e22d44f698d236214c9bd99eaf4da6a8be7b4291c9", "T2T1_es_test_language.py::test_reject_update": "af4fcd9735b37dce8a96d113629cb38e9f977dca094517de8140f3195f899f27", "T2T1_es_test_language.py::test_silent_first_install[False-False]": "f9be8384d13e45bbc4ac9c1ab203edb192979d183bbd6b5dd02b67b4162fb4a3", "T2T1_es_test_language.py::test_silent_first_install[None-False]": "f9be8384d13e45bbc4ac9c1ab203edb192979d183bbd6b5dd02b67b4162fb4a3", @@ -13738,15 +13738,15 @@ "T2T1_es_test_language.py::test_switch_from_english_not_silent": "e9783608cc1ace676e131ac0060a18d4926cd83ed7547cd52610bbc252f38f9b", "T2T1_es_test_language.py::test_switch_language": "d27e11660724f07715a88a19ca005e49c22fff75050f4a51ae49eadd8adc271a", "T2T1_es_test_language.py::test_translations_renders_on_screen": "fed6eb186d9f50c47bfdf23caec18f42c418d7dbbc1dddfea147001df3d289c2", -"T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "10ca9d457273961cc4b57726947f506282dff36b5dacc94cac1c442f528c2fef", -"T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_msg_applysettings.py::test_apply_settings": "aadfca17400ccf005cdf6c788e8fc6de11bfc6915ec48b9742d1442928bad878", -"T2T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "ad53c794207f3d27818e4f83e79d3af8961783aa32ea18a6bcf49954f818f4b0", +"T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "92fc19fb994c7812ed04faeaca3ef3b0c9ae95fa44154aa11ca9e0e524f01d90", +"T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_msg_applysettings.py::test_apply_settings": "4f26bbad86ba82296e77cc76b0abf5e0058a9e20f820469d666726d6d1e69c93", +"T2T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "24e8a9d6fff3d74802136429e34637777232aa553bd0245d209f49ef151c7237", "T2T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "b1ada3ad447aee421b0a49f7391fde2f9daa7a6c5f93fe0bd6b5a08c11e475b9", -"T2T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "5f9a66c66c9f3bd30872a8f9fd37251cc5ed587218fc6752dd822fb4c159fe4c", -"T2T1_es_test_msg_applysettings.py::test_experimental_features": "ba0bfd7a9e8ae362aa44de04b2c954436a58fceb358cc3042c2e415406397f6e", +"T2T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "966edc115c73b74ca5ac43774aea822f2b55fe05c2a5f799fe2b5fd3e48ae866", +"T2T1_es_test_msg_applysettings.py::test_experimental_features": "eee88752c3e36adfaa8edd095e83d0d45afb21974794124c7937479a01db969d", "T2T1_es_test_msg_applysettings.py::test_label_too_long": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_msg_applysettings.py::test_safety_checks": "74b8d81ff4612e2a0c2faea87ece873b1ffcabe7a908a0f8896b76b075b56917", "T2T1_es_test_msg_backup_device.py::test_backup_bip39": "3f8085c06a79fd0232c9ef93e20a6713d350bd2189c47f3a5a38a13fcb908bf7", @@ -13760,60 +13760,60 @@ "T2T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", "T2T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", "T2T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", -"T2T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0cfc7a494197382cff6e6d9b43920e5480d875875fcd1090e8675b654989d62a", -"T2T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "9bc3b09fc66b9faa15ec07cfb47ad6dc10e6965833822e9ddbeb56fe55f546e8", +"T2T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "aad9bb08b00fec27de32dc6efea71cf432db28e8d5b6113436506122405341a6", +"T2T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "154818fd12bb019fd2f864f60d435621e95705f2d42d7636833c3b6bda0e5aba", "T2T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "6b9bce5a9ffc79f57f0d9f2856c65c708a0f82ddc6ffbfa84b6746421788a00d", -"T2T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0a483f3f2c218e4141ab45e93074c062e81cdded4c27ff54d52a4d02b037670b", -"T2T1_es_test_msg_changepin_t2.py::test_change_failed": "b9f80c0be3b257a0c53a16815c27ae6f3a2ba1e9ef5f7ad296c9c228acd524d9", -"T2T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "8631c5489ab6371809d83c57763a62356fc8d6e392bda073f78c0e4a623af491", -"T2T1_es_test_msg_changepin_t2.py::test_change_pin": "b904e3b1e59a41b45a3b7b8de590e4d848c7225c7a9aeef3d35839f29671bc60", -"T2T1_es_test_msg_changepin_t2.py::test_remove_pin": "a7627e527f283d7a42caed5ca29b3271120cff3daf755d877d19e000745a6b02", +"T2T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "549e5481fa721cfffc8dc585d2844305520f094c296e054e5c138c8b1260e5aa", +"T2T1_es_test_msg_changepin_t2.py::test_change_failed": "674a7447f218dae90173cd5356bb676cc1fd3c456e359bd8822f605198a14bf9", +"T2T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "1391a85286134b08e1e3ea5ae0a042bad8ae6d1016486dd59ca622cff0ccf45a", +"T2T1_es_test_msg_changepin_t2.py::test_change_pin": "bdab442051757b438ce606f6107e6210f719c4e70d7eb1ee9efd4294e195a798", +"T2T1_es_test_msg_changepin_t2.py::test_remove_pin": "99d3e54a339d9b408d706402e1d166da5999293120c18c75a7c913cdfc6a7f59", "T2T1_es_test_msg_changepin_t2.py::test_set_failed": "d8d349f8486f4c82ccaa5d874cfcc4a5570e5da1f7781d332562b5073a70e802", -"T2T1_es_test_msg_changepin_t2.py::test_set_pin": "762d7586fd4f0fdc5b0ba55e5093b749cadb375f92e8911a37480385d2c325ca", +"T2T1_es_test_msg_changepin_t2.py::test_set_pin": "a15c5ffc8f2a8743001672a4a8321f876ea9c3b81d0b55a321178fdb3b311bad", "T2T1_es_test_msg_loaddevice.py::test_load_device_1": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", -"T2T1_es_test_msg_loaddevice.py::test_load_device_2": "1b5650bf7c93fecc40fea407f62c445e3cf508df65f594849611c1ecc91af5f8", +"T2T1_es_test_msg_loaddevice.py::test_load_device_2": "671f826d5757f120e4489d184d6f75ba366ab2dcc376f12736b64e4d1aa8cfc6", "T2T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", "T2T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", -"T2T1_es_test_msg_loaddevice.py::test_load_device_utf": "83969f2b002d31bc29470ee5b139fb1ed6dc657d1278b65694a7da76a9468b7d", +"T2T1_es_test_msg_loaddevice.py::test_load_device_utf": "fc774c589e5c16d8a61a7c0b5b19b787aa81f976679b57c8b8f8c9dcd5ad558b", "T2T1_es_test_msg_ping.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", -"T2T1_es_test_msg_sd_protect.py::test_enable_disable": "e902243f15441eeae15a67804f7f1d69751d0b160302b4755e2091a3a76a4668", -"T2T1_es_test_msg_sd_protect.py::test_refresh": "653c60d1ec6b7362361ad3caa75d7ccab20db71b01d9c5047727102da304c7e7", -"T2T1_es_test_msg_sd_protect.py::test_wipe": "b119f8bb1396f224e176ca10a56c60b7ec10f54f1fd9e6e44ab7026b42b6cd4f", -"T2T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a9d016298b3097cc7f936d71449e5438eb22bbc3d758082212764daef63a3e11", -"T2T1_es_test_msg_wipedevice.py::test_wipe_device": "30cfa8e213523185556b09a6e71c27099434484689103e88b5885f9616a29cd9", +"T2T1_es_test_msg_sd_protect.py::test_enable_disable": "d1d62e6f12310ed889ff92c06303d20e918b89b079aa925bf4075d7dbdfd2a4f", +"T2T1_es_test_msg_sd_protect.py::test_refresh": "8ed8e82d78f71c0bf538cf111f967abd53b4e46d4f8b8ac5c762e244614709c2", +"T2T1_es_test_msg_sd_protect.py::test_wipe": "33dec375458d256ade6e880f4dd829c9b44e83e3349c8512081b0f06989c80af", +"T2T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "693c907d6ee3ee573fd5de5e40dd33edfd637f4adadd8a2eb1a23c78640d177f", +"T2T1_es_test_msg_wipedevice.py::test_wipe_device": "b1d0cc9f9deb8574deec887fd955a1687b81ed4de4799573752ffc874605fe5f", "T2T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2468f75bb87b9dd55c5cfc2d2352efc73ad03081b985cb0e65672157d07752b0", "T2T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2468f75bb87b9dd55c5cfc2d2352efc73ad03081b985cb0e65672157d07752b0", "T2T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", "T2T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", "T2T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", -"T2T1_es_test_pin.py::test_correct_pin": "1cd05b080e816b9c9d9764ea62b425c244ea7ae7c34b55b16a9ed8d44bcf9aeb", -"T2T1_es_test_pin.py::test_exponential_backoff_t2": "fe90f811a193fa9caea42c9f0c772ba01bbde5d363fe5915818a86922c0fbb3a", -"T2T1_es_test_pin.py::test_incorrect_pin_t2": "5cd69e5b8285a1a8e076e570f6964868d2afd23a3e40aec6fe2f0879adef5fb5", +"T2T1_es_test_pin.py::test_correct_pin": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", +"T2T1_es_test_pin.py::test_exponential_backoff_t2": "73ae448ae7c61962e7760015a2e3e9b35b7f68c3fd946697365f3868bd192ef9", +"T2T1_es_test_pin.py::test_incorrect_pin_t2": "260f6e6f67366173c9802603d758de655733a542874034d754241dee386c8730", "T2T1_es_test_pin.py::test_no_protection": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_test_protection_levels.py::test_apply_settings": "bfdcca021c55694fb1fcec60fb1d907a604339b8137ffe5a280d55b02a4184ff", -"T2T1_es_test_protection_levels.py::test_change_pin_t2": "663745acbf98b09cddd308a392411da7d5bf0e1a7347929ed0abade0348158cb", -"T2T1_es_test_protection_levels.py::test_get_address": "d5acca1e51d2bb6e6149c7eded757eba7be725107636ab1ac7757e76d1cb7b3e", -"T2T1_es_test_protection_levels.py::test_get_entropy": "44ff3a4dae5ef8bac4e06de95324fe81e259515d16d7217d2bac6e879c50f2d7", -"T2T1_es_test_protection_levels.py::test_get_public_key": "d5acca1e51d2bb6e6149c7eded757eba7be725107636ab1ac7757e76d1cb7b3e", -"T2T1_es_test_protection_levels.py::test_initialize": "deeccb1391c0bfe0b5f4f3e375e53436ba9944bf8cb8d26c081ed25d82562920", +"T2T1_es_test_protection_levels.py::test_apply_settings": "543c1de69732f4e0346c7d9c7c4ebe8f8c1f702727306723f665dac4a86ad9b1", +"T2T1_es_test_protection_levels.py::test_change_pin_t2": "3b74c3b7e39d5276165b05cb2e973aded33dddca7327bc81c919d0b7433d80e4", +"T2T1_es_test_protection_levels.py::test_get_address": "136ea27c0b5a46fd2ca9f00719aff16313b3c490579a61b823df1f4a48790f74", +"T2T1_es_test_protection_levels.py::test_get_entropy": "fe68d39ddde8044bdebb12f91565dcbf7010fbca95c4eda679ff442b24e6159c", +"T2T1_es_test_protection_levels.py::test_get_public_key": "136ea27c0b5a46fd2ca9f00719aff16313b3c490579a61b823df1f4a48790f74", +"T2T1_es_test_protection_levels.py::test_initialize": "f5926864b75183a8ee97f19deb394d9d1dd960d29bbef32a75cdc5bb19c95ff0", "T2T1_es_test_protection_levels.py::test_passphrase_cached": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", -"T2T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "bf267ab2bba32fca89798b6a224b507604f1b6c34c538c2a82647b155f4eab95", -"T2T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "bb3a202da3d5f4222e8219d69e1d48bd61bdd37cdd92029eaae89f4a1ca7c5fc", +"T2T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "1e0e564c86a69dbae463ccdaa09b836fec2218ba79c80968dc5d15283388db3f", +"T2T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "7218813d45825a0e1d7ca105cf80695c5c1e72b3c6511c95f47a3a6cef4dac76", "T2T1_es_test_protection_levels.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", -"T2T1_es_test_protection_levels.py::test_sign_message": "201173e511ded683fb82e5222d6eeeb418f4920755de641647a655c38b238a2c", -"T2T1_es_test_protection_levels.py::test_signtx": "565f65f4b6f93ec83088a65273fc130f8671bdb478599d310644dc9136c817fb", -"T2T1_es_test_protection_levels.py::test_unlocked": "6bf1c8d03bbf9a844f5fc4e31fe7faad8d6c49a9d5d8edcd9c0e04e975386632", -"T2T1_es_test_protection_levels.py::test_verify_message_t2": "c970730c7f45321957056c9c1c47ed605d50ec6030a61c093cc82e4b910dd26a", -"T2T1_es_test_protection_levels.py::test_wipe_device": "9aaa390ea2296772b8715597159be66d6660d5c418ee783eb44d8443afaee71b", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "a9945b96d9b2b2b3029c5a8e0517fb1b1e919375e6e6d95e7af7e38bcc2bbc01", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "f6e2d47557c0dbbbcfe671c75f41d04e371e252854204ad867f4cb1f2fac7fc1", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "325af0a8e9c99380996e48497f1108589b7db1b8aeb97c3050e9d1120a36a664", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "152e33d2b713278276220278a239918ee4b23f3e95340f8ad4286b84787d5349", -"T2T1_es_test_sdcard.py::test_sd_format": "96fa6f12c78fc4f0e0d0e65e07d29772b9a27291564a7c12b0ec18a441b4b2fc", +"T2T1_es_test_protection_levels.py::test_sign_message": "36f5fcd679b79cd31fefa0e49e49014b70a6200f071552a1ce78a9d959f7b6c2", +"T2T1_es_test_protection_levels.py::test_signtx": "e892ecff82e72107804c1892a60e7ba38fe5cad6214569c0cd7a4b025deef19b", +"T2T1_es_test_protection_levels.py::test_unlocked": "e7c8ed3c1bb4f3beb20b7d6fa396bab7136830a4608a2940067edc7fb42bb10f", +"T2T1_es_test_protection_levels.py::test_verify_message_t2": "9e6f782063e9ad8000aca54256a9d33e95df623735ff8c4a05cad352f816d766", +"T2T1_es_test_protection_levels.py::test_wipe_device": "37eb71e1c71e2d6511ed41f0276dcbd964bd9e85fa2d2ab627e306eccc243853", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "20976c80742ed7056323dfe8d8db04d6fbb9dc45bb848fc01114b9166d06bd41", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "a15d4acfd9782a1c43471292e9658b51b6921bbdbf3905b58539d5fc27f530df", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f0464acd8704ab703483e2f370520c7a2e79208562902d34fa7b4463f5b70efc", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "67492dd57cb547c9988e528b5bd03d0a7833535c6834e4c34cf6d2f550bb8e9a", +"T2T1_es_test_sdcard.py::test_sd_format": "c04913d3290b82ff60f8c7303c94f6f015142489b3b0c0f719bce8d01e7e31bd", "T2T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", -"T2T1_es_test_sdcard.py::test_sd_protect_unlock": "7296463f55e2a2142ace309c3a6665e398103e24b015ec0aeff34d2c2537c697", +"T2T1_es_test_sdcard.py::test_sd_protect_unlock": "6318330ebb141e486a46e2399f39cef35775c8dfaa37bf14e6848b2a6a4fe030", "T2T1_es_test_session.py::test_cannot_resume_ended_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_test_session.py::test_clear_session": "2e7ae384466ff2be7b19164436b336bc22a02df25fcb2f2eddb1462d19845c5c", +"T2T1_es_test_session.py::test_clear_session": "15e15136f1b2d65979a51131ceb7ed42b14803daaf7324cdf469b16c38437ade", "T2T1_es_test_session.py::test_derive_cardano_empty_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session.py::test_derive_cardano_running_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session.py::test_end_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", @@ -13876,8 +13876,8 @@ "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "e4b10c08b0d94eab8a1aed7a5877331948e0645884946c34a2bdbde039ba066e", "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7790c2972c163135877452cb26534364b3dd2c2e9ea74855d7f8e301f63f1c70", "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "4a993586370ed4fc771bb737949c7899f430aa6b75c328170ecd071a12b884e8", -"T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "1a33e20a5d8aa117ba02ec586e4a428eddadee8132096aeaf447290633361fc1", -"T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "1a33e20a5d8aa117ba02ec586e4a428eddadee8132096aeaf447290633361fc1", +"T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "62c0110a8d607ea980181c6dee4a02ea4814e83db9e238f653b3739faba0c429", +"T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "62c0110a8d607ea980181c6dee4a02ea4814e83db9e238f653b3739faba0c429", "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0347e469421f0b70cfc1be9cbe8e55a998a38e4d28b68239abd7b83f8d52b651", "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f272c80e61c11bebe60568af893f97535c4a46ab493ce09a1bc2175c10caf581", "T2T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "5ba7e8f071d8d398e6a0b15e72328d9670eef64c08f597c91490a049cf882365", @@ -14945,57 +14945,57 @@ "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "ed6121f6f7a65292afd92fee4f2e88e218606ce02a7acf696a39fdb2aa6d90cd", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "46f8dec84afbe69fefb292cfe8c9bc9e2c520f11306d0347d7e121f7f739f377", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "99c4a21ff62f018fe44e0fb1f0ba1545d5bdd862884bcc97697091a219f92883", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b12e0abf5c1e405b49aef1cbc01ff10c5af55dc548ba5dc3a4eb07f1a2f1d86f", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "69cfc596c320360a744184799d7d9fd244a57db53fa8feb49d03a7a18d836421", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ae95460b8c04577d7936880211c171db2a0591aa84c82c3ec078afd979dabf6e", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "9cc86efd15157568236443676522f82869e257969303357beee9f9f840f4f11b", -"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0710087435365c3d5121988e43b6720a09194131352c810d713d975d05789e5a", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e1d9b4d9e861bd8bb596d660749798407d4892b97debacdf5a76a68d85d2aeb7", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7e561a3366a933573e26553125adf0b0c08a78ec822b9782d1da13ba1a9ce9ae", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "5ce08034868f5c3379527b109bab5a17d178eb6aab95028fb24669c00990a8f9", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c9bd16b49335cfb718758abe83cd5214229d01857abb33bdf329d822338a996c", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "d74bb651f20bdf04dcb3434f978f38e959cfe3a05500912fc47bf459d3a8b708", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "acd44d5bb79427baf496f7759ae7df75e9f9c67357fa683b14e354ef4bddd1ab", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "2cc375d52afe30ccb5039f175f997ab17b5bb1827488e971e37033b37ab68a56", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a896f1bcec0f4f9613c25c86b1fc45a898693c87fbab0244bbe8e1147051a8b6", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "c2e1b666f2db73bd228f23ad5958e642f81f861922e27bc9d33ffb901ad0b9fd", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "e005d0c3d75f030e638ef6f017e600470c13394cb19563730bed930fda894e61", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d97fcd1dcf97da2d15016ebb630003eb1e61410b2e262f1a3afc69ce4360c402", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5ff300a0f3bcdc20ca456a816d8e689236daae1f5fa79116b13ed85d30ed8918", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e1d9b4d9e861bd8bb596d660749798407d4892b97debacdf5a76a68d85d2aeb7", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "872cd1cb0bbfea717b9e7ca01605bc629e1cfc3c54f7341a07e61e407f0c9382", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "268258d3157e44e401262e4b5af185c72c74d02ae57fafe0a40bc466866fb916", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "479f0aee58ba0f6932d4aac8e160e1ca24e72775ce516c7c5cbedf6115d5e15e", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6f13d5681028ac762531804afd4f154c2e291b3968f285e04e69e4e7e0908231", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c8180a663f47d3265d051e7e8cab48310e631b182c505b7499c563b79590c2d1", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "ed5f6a00a0d481ea04ae1dc3644a27212db43010b473be0ca877629e53c36bc7", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3200d5c5666a4db72649ecbd482341f040d9bc991b8931252720c1f54bf12b43", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "344d559fa82391e7c92c9297181e1dc007b08d696d212ca83e1519d8c2813413", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "a86096a7f0f4bdd978fc508946705aab60f42f7ff853c9f0a8213937a8873c8a", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "b34bb7207ae752bfa59110ae5d262184b420c1d57cfab064fadfbf02416153cc", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a041c26d6a2e686d4fa527d5c879c343c0068b4687bfc54a30580faad8a55b67", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "28cb587c2c9d39a01fb9b8c554d8e865248a85f9e31b33bb5c3c949f51af62ae", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "eb077226793cd82a8a62c075ec37060d02045e3ceba2909fce51ccfa7fad54ca", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f3a1eb20f1d923b6851d794ccbd25ee470f621c43ea6b5c52e7f9bcc9a909e2b", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "0cf0e3b5f81284bc004f5aff9152c8a8e3b9fc78f0b8ad2ac67fef9095c3d02a", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "68f7062a30bf8ca600bacdd15ea4b46791f83cedef795c97a0beda11873d5737", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "df19f5ae7b78a2e279d442d67d27b496f5939186ec6d8b6bc55b210d907b6f6d", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "30cddd8eb1cbdfc52a7e3a8987d48bb9662d47593597330b9c6a5bf07baa5de5", -"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "33e9bfc07d97a790ef74a3f160e26f6a686758d72453680265c9a7aeb5d8bd5a", +"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "b82fc427122da04b06518acc31732290391db98d5a5b6df133110e9c573501ab", +"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "913809c03460ca38aff144ec55cd55e166179c725f2aa4ad8d24d2aa4e2fb8b8", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "d5d4cc948529667c0149434c4d3df2a427cc78f833cff09eae76d90cb01d6d4f", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "94798d641eb4a69f4ac2f479389596b402bc798c38b33f0e5de3b52334261680", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "3d985f091f7fff7eda02cd958fd0990c69a4b93e6a7b2edf58a2848dc5e9e15c", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e01a474bbdac682e9fd9f9e809347cb5396962581eaf614aa35de9820aeb49e0", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "56f9e0c000fa9fcd2dec5aee5ada334f8a9d3a81991c5f3e3ae37940f5d33663", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "27ae5fe1bd4770e5943d98541e1226ca6823acf34cff26debbc6f15ae360cb00", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "ad0b1d7c8dc50da9ae7c814b10d014ba9a3c3cb171785e87ceebd043b4829c64", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f94f658bf95cd7baf10d2513285f79acc7279be861d479d456ea3d83557ee833", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "58251e5b49061c1dcb3025cfe9101b4773665245c2cc09743f1ec0edd66a60ef", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "4db9d578d09eff8b139b6830945ef5437483ef7f8d6e278abb3f67118e54f30c", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7a9b138806a131bdcad68cfa563d2ff19ee145c69864dcebe8a3a6c92c306611", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e892c2e402b991a7e824bce802b617bcdb38c14f029e0a6eb04cd08c33111bb3", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "d5d4cc948529667c0149434c4d3df2a427cc78f833cff09eae76d90cb01d6d4f", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c0b2767f155bb315cf6184cdf87f457ada3550bfce9b022d83d04481cfab8dbb", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "3aa55bcd800eba64079a6134d972191f10e083edbe4bdc5f866f1ce8ee5bb2de", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f32fe55716209f9cf77b61e8d9a4cd36a21361f39215328052abe8fe43609571", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6c7ab82b8c8b325cde20347be9779c83c975e7949672d7adb8c755b598002ffb", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "565349c4092cecac56bc0fd52c9254ab4a6fb63bdafe41e5e802a4648cccfe90", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "249cbed4673dc7dc17919886e820762621a5fbfb2b81812b48071e7d1a967d2c", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "72eb38e6fa6711f10f0c8806b4bc29aa93a6929d4aa47f347ccc19f75d3e18bb", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "063054a87aaf7b48eb88e53aab99392fe441ba6b171ef7a1af4959e44f085a06", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e4f53fc4c5cc0616eaa5018726456093ea62da9e10271d80981f8b4184c6e3d8", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5e5c53afd9974f73a0ed5f34a32870e644eea6b8a2254ea89080022075e366e0", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a7550b9fee4ac99be0327600f5f6fb3e50a8f591c5c58eaccf19a3c6a30f4dcf", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0fb93a5fc3f15aeb83983aa4c94b43cde430fe9f7ca55c10811c518140da2b5b", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "48cdb1337fac00e0c7104648fa8609f2d0f46a3592df89278c1e24db6566f3ab", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d7696460fbc4009b5c528d4f6498ad2b4d3b82bb4d50e15bd624f39caaed114f", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f13c5837e89a9f336c7b4cfa1ffc5ed0c0daad509be201172bef3d759797ad48", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c2f798cd193f80cdd1ccfaf256877b552f388558101d1a7d8fbc8089fa3d922e", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "16e022977bee97896e97d90888176baae0bcc7b3715e5c5b1df7dedcb4eef3b8", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "0cf27124ba8e0f25da6dc746a57bdff99807324f9e4e40d319c183d9d3bbb56f", +"T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "e911f2c2a45fe8c8722f21ada9bc260c457bfcd216b97445d6b3673ff2daeab2", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "978fcc41f8e83b9111f2733a1325a0b52c0aac5f7e5367783ad4a16fe0190587", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5952251654ac65f2933ce0c57eb1b593fe9dfd07a68e4d0197b31ffed3654582", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e903bd1473df40b3e261a513531e4d5350c63ba2158a5d1f1496f7b36ece12cd", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "7e307f7d704c4fd031e1ae0560ba380504585764926a745b40ac7908d90c36b0", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "a881c181e24037ec61760cda99c735b233a43b76f342fc6141c25e77be89c4be", -"T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e3415c0f9f71836e1a99a7cded94430ab13881f06e8032783369d391a405c981", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5234fb35e975638bc2c73b614d6a1a789e0c3bbf5206ab2d219986f59684c71d", -"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "62872b2d13af9474cb63868a8b06d0df8ea09379f0f431d16b2fefa7e4892350", -"T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d34ee5da39d074253841aa0fc23cda0e5e4894e2f3a7444838327ba83fa9b43e", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "51cf887280cd686d2e6f05cd4cb0ba70424d4bac715d16d08d075be3a846dea7", -"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "138d33e33a40d33dcf7a620f0e8cff06b1f07b5868e32fd9a88e3e7acd429dec", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "2133ea17fa2ac057a8cee0e430996451514eb9803e64a09ae00da090d32f5a19", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cba1131d14a682f0cbfb938216a1f0d6f8dca053eb67880e780d66eedb905121", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "dc605279dc25be4e7e6681c45055389fe6ede4a2315f30d1b9de8b9be80ac098", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "cc94347a31b87e9761096574bb1981ded3923943c6ae234e033c797867cf6e45", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2982de2a83a18442cbaf47b3443e0d0048f5487bade58359c4bbced56fba9dfd", +"T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e6ff58950fcbdbcb00253ebdf26ad83691e4c6ed4479764363dcd7a8f626cfe4", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b868d87e13f85f85601a1cccdab55e1384cc29da10a6ff137bfe27e8982aa72b", +"T2T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "94fb8a82fdfe0adb42c44dcc175cbcd16f2f92273a94614d4da4923d3b0b65c9", +"T2T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0bcfafee378ea490c18d34a1e0888620292736783ab46c148f0619680e3895ea", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "849824ec6aee111bfe522e55421069d171097d1ec5c47711e5e491cf1a2bbfce", +"T2T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e7f1a6ac9402f869efa3bbe5cd06bc3f4c53a57e34520801e9b26141ea91e616", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "e98537cf44c1c9cdc3807b3ffeca3b3960212fac0e85f394759a33c221b9dfe3", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "1b21cf4d51fbcffd297d567623bb9e031d6e0e2b269f4fc15c6244d0d60267c7", "T2T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "b5708fbdf4c7aa866b1ba317a015bd811cbe1f3792ef2a7e62ecc2545ed89468", @@ -15133,35 +15133,35 @@ "T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "108d774249ed92c8fba2691aebd948cf7838c52015b4a15c02db5bfc9d6fe5d3", "T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", "T2T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ade0899bf79556c28959438700567564c8a8065dd92d81b6839aa0b1200216a4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay": "4d8230550100d5f90e66c828948017ef1de187b438d89ef6850472c367026efe", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "df676635f6bf93b13ea533ab1783749a89e5e24e7789e2867b8da5bee8ed2215", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "83944aa1fb07b474656980db719cdd4f891c6d3ce380c479f7e3b2ca0fada457", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "9f7c678fe7d0c55bd616d560636cacf6b139bdf9c54542fb1f25cf5ef5f21194", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "60490369e58cda21161a8fe33553c04d9a81eb4f27537bdded5ee7d7cb32dfe2", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a2c5b2036951b710c73343a439e7c9d80ef8788c95a0b42218cddf96d1eeed6f", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7b3471c649aaa2ecf84ea63f5f575b5eb9c1f38c96a4dc123364e27501fbea6b", -"T2T1_fr_test_autolock.py::test_autolock_cancels_ui": "37ea1b5105b9934856c7be72008d993a5ca13da6982c98f7cf046108a5de83fe", -"T2T1_fr_test_autolock.py::test_autolock_default_value": "d02eed802cd0798da65e1c0e9fadf0df8256ffb9d42d5f984a518289b9c7c94d", -"T2T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "13d800f447f81b095aa860b148b788d523730e0ac046b4ad0a4fa93731027074", -"T2T1_fr_test_autolock.py::test_autolock_ignores_initialize": "13d800f447f81b095aa860b148b788d523730e0ac046b4ad0a4fa93731027074", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay": "e1210f903cf0713c9f4110efadb1793b840b2024c3551528d54ff49b40b6ca37", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "74d2e27f23fbcc8d5d2b959999cd8fb2eaa9500ce7a304ea83583b6056925c5d", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "9088c1dfa23955aa2edf9c7f4877396a0b20f0bb9c5cc7f9f457ad0928a64a15", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "c64d78e609298e78e29621d4a201c47b783e92f8c4371f00c00bb004c646d9ee", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "0a4c7fedc90471e392d21d5c4cc46004fc1c212a902baac5e639acef463ee4ff", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "6dfd64d66377880c47a522bdc64b4f1d07525fe9674926a76647bfc73222b20e", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "21b018546041f298f6ad4f7873b4cec4029c3c5e6b28d6903eadf8f055eb60ef", +"T2T1_fr_test_autolock.py::test_autolock_cancels_ui": "48fef550bec0305db7f89f8bd1f47070962ebd55944a002a1205767907ea0609", +"T2T1_fr_test_autolock.py::test_autolock_default_value": "4b0cb3a7c3439cca9b74175b7b424b3fd2a3d66b06c4dbdf7bce0a32df5c248f", +"T2T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "7724a6c46d766d30fa7eff6b808a96f8cef30ac9bd2a8ff18d8b26366f0d6bc7", +"T2T1_fr_test_autolock.py::test_autolock_ignores_initialize": "7724a6c46d766d30fa7eff6b808a96f8cef30ac9bd2a8ff18d8b26366f0d6bc7", "T2T1_fr_test_basic.py::test_capabilities": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_test_basic.py::test_device_id_different": "361842715b5f7636f577c8c9bc8bc69548474cd26c26fd1b5fbcd850656f7753", +"T2T1_fr_test_basic.py::test_device_id_different": "de049b25439137e5b3e8e1e2cb62007a6b689a2979d861abaee4cee80ebbc716", "T2T1_fr_test_basic.py::test_device_id_same": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_basic.py::test_features": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_basic.py::test_ping": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_busy_state.py::test_busy_expiry": "0b142663642a8981e8fb85cf0eda771d72c9d2206cd224d170b588f32da4d8cd", -"T2T1_fr_test_busy_state.py::test_busy_state": "315b1d0679a565a8a65804592914e4e8ffb3010d73795e0164b327d1776d5dda", +"T2T1_fr_test_busy_state.py::test_busy_state": "49941cd95331d3d6442c61323a151aa5bb5caade97af07a18f4d1c60dd2e6c3a", "T2T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", "T2T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "722d1df17cd5650880e8a634038c1f582229258661a26ee307a9a8d8737dc178", "T2T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", "T2T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "722d1df17cd5650880e8a634038c1f582229258661a26ee307a9a8d8737dc178", "T2T1_fr_test_cancel.py::test_cancel_on_paginated": "33d4d29b50e577aa96fdbdac167a6bd9f50351fa6cf3e1367291596051f74146", -"T2T1_fr_test_debuglink.py::test_softlock_instability": "8788c9a37a7e20aa1fcecdb0c8b781b9146868a5d89223f90613a4a5d5fbb22f", +"T2T1_fr_test_debuglink.py::test_softlock_instability": "5516ce0803bdaef35d8fc11879fccd95a58cb2cdb521290b451cb198c3411047", "T2T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "a1d024203379022355feb1ecbe72d16ded27a7060cba89469b82d14e84d8eabc", "T2T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_language.py::test_error_invalid_data_hash": "3136454bc9903887c47ad11d488b52186f1be09cf3e174241d2147176ae460dd", @@ -15176,7 +15176,7 @@ "T2T1_fr_test_language.py::test_full_language_change[es]": "106369f4edd63c8d8f944dd2db6efd2db564eecd3fe5d32d498e84335e52f831", "T2T1_fr_test_language.py::test_full_language_change[fr]": "f412523214b630e19025608a766a49f4ab164e665807b4352ce181d6e1187aa4", "T2T1_fr_test_language.py::test_header_trailing_data": "5eb574eceda92ba29ad18a78a5cb2b4916a654d4eb4540ba954904d50158a9be", -"T2T1_fr_test_language.py::test_language_is_removed_after_wipe": "bc29101b257d06f94b9ce3784207672fdf7e0b17fde973e2cfe7f461ad533750", +"T2T1_fr_test_language.py::test_language_is_removed_after_wipe": "5894b4d4725cfac0fab38e052f42ae42a56e7981d6944d46b9d06010501267bb", "T2T1_fr_test_language.py::test_reject_update": "320fbdd3d6be3e1b16f9a4852e9f27f344ad61056e35467628e48ae960581e98", "T2T1_fr_test_language.py::test_silent_first_install[False-False]": "2121256081e3af7b9eb393f2ea8cb3fee960de5829ca28c519572df4434315d7", "T2T1_fr_test_language.py::test_silent_first_install[None-False]": "2121256081e3af7b9eb393f2ea8cb3fee960de5829ca28c519572df4434315d7", @@ -15186,15 +15186,15 @@ "T2T1_fr_test_language.py::test_switch_from_english_not_silent": "cb2b9211a28e57a3264d054fcf54fecc80a44ba40fe48dead24e24be14e8d0fc", "T2T1_fr_test_language.py::test_switch_language": "1f8ca455be2cd16c83707908893810eb33d912979b1375ae7eda481f081bbe37", "T2T1_fr_test_language.py::test_translations_renders_on_screen": "09d6ddbff11d3f2f25cf17a3bdf26da546c689cf0ed4fac709992182625702ef", -"T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "58d1011a828ca54ef6c03ec659a5f658612173d319b1a00de579b726e2e96d5c", -"T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_msg_applysettings.py::test_apply_settings": "105ee5f2b3101cd660551515794b4b951129ebb1627c3a0e0329e0195e0c58b4", -"T2T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "2ca36e7d5dc7e088c69afc7c2dc73ea881f3dbddecb07424202a588f1e9aeb17", +"T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "16e90bddcc187fdd7e36f03997e575d3ae8db15dba09bc6f98a24d48f302a580", +"T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_msg_applysettings.py::test_apply_settings": "19adfb332bbdd9e9ff76972b5d2486b97ccec24bcc11914ef605ff63788e1b96", +"T2T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "b30134a9687dbd1627a59d7fe9c55cea47d5ff07edc977c83ec9a8404569c79f", "T2T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "229a3ead486c7b84af12435e6bc6b74bf4bd015aedcdfe252a31d70176319266", -"T2T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "1f5d00ea893a98328e9608a16cd02d1c639de29e5c85df37f567ddb5c887461d", -"T2T1_fr_test_msg_applysettings.py::test_experimental_features": "1a3dce6fe6f1a2d11f1a74ee4f4c27dd03f39836aab34d49cc91c8f823fc3c92", +"T2T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "44ae39d49f5478e4de40595451673eb6f15b31a8a4aed8c87b9e5137298ab116", +"T2T1_fr_test_msg_applysettings.py::test_experimental_features": "38868e3af6f7867a1ad96a140991752197fc45bad1ba92c7e0a619bc2cdd3191", "T2T1_fr_test_msg_applysettings.py::test_label_too_long": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_msg_applysettings.py::test_safety_checks": "11728ebd055b8dd997f30c806950104e149df07c5a3dad5b29b22c91ccba7e7c", "T2T1_fr_test_msg_backup_device.py::test_backup_bip39": "51e3d5b640026fac3a4bc28e02260489f9aa190d40d7b96eebe8ff1f2b08ab06", @@ -15208,60 +15208,60 @@ "T2T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", "T2T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", "T2T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", -"T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "df89ccd9127fd2a3c322dbeeceed99b295a812453fe392b59bfd07094cdeda6c", -"T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e5fa81d7e17a26c8906151ccfee94221ae7be518cb3d34565a64d5e3bd89d184", +"T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "91ac0ba60dc650dbacf552acb9623353fc6e7b10ffcc285e7005638f6310313e", +"T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "d70109e3af6e64276af88ee4b1352e6d96bda4ec4c3e7f3964607b5a62cb5eac", "T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c7c79c893280efdcfa43925b3e559eb5e00bc7615817ecc08920bb60f0096b6c", -"T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "fd8da1b96ce39c633caac4c7bc48165bd3b8f07bc06d311deeaf050666635bd7", -"T2T1_fr_test_msg_changepin_t2.py::test_change_failed": "89f34ff69cde4cbe1322313ce004575fa1c58d4fc2898421887ece256984dee9", -"T2T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "018f43d9235fa8e37ed0c7dc6251d9eb1eba2e219f2b2f4fc28c55338913303b", -"T2T1_fr_test_msg_changepin_t2.py::test_change_pin": "610f987ce40ceb7c7ab6d5c4dbaf22518b33219118baf2bd161343324d93c0a9", -"T2T1_fr_test_msg_changepin_t2.py::test_remove_pin": "1bda09d5cd9f99f25778f3e104356a895f33b3b98990c508f89ee213afcf90a2", +"T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4d3da5d2005eb321f8dcf7d4c63fc3d55becdae8f8caada48762aa0654007fea", +"T2T1_fr_test_msg_changepin_t2.py::test_change_failed": "e264d5830a4f386cff9258a9b92e5d61257625ca8db72235744049f52a3759b5", +"T2T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "f94cf653d2a10f712b7bff604bac0472ab956b20b837042cf5f3d30e72e6d13b", +"T2T1_fr_test_msg_changepin_t2.py::test_change_pin": "b3e663450b1d9197e5fabd157b686147d3ae31c4ce7f0aaffdb856ffe3634c5c", +"T2T1_fr_test_msg_changepin_t2.py::test_remove_pin": "9a3c57a902ae06e9d4c9de0371a2688cc769200f639838c4319deaee27daf8b1", "T2T1_fr_test_msg_changepin_t2.py::test_set_failed": "ccc6212506a30dadacd6f7470569e40098c4bdc5fcd63244b900f64a5fc23598", -"T2T1_fr_test_msg_changepin_t2.py::test_set_pin": "2741144c8358b9f9875a7999c66f618131f039e4877f2f2c75f31afc387a6c2d", +"T2T1_fr_test_msg_changepin_t2.py::test_set_pin": "2ab805d6f6eea2e95db4bb1373d541ce61afe8f8de1573f32b6b982a5d050cd3", "T2T1_fr_test_msg_loaddevice.py::test_load_device_1": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "310a8f63431d25c763999dcc4537179167a6f63220eb05de6a5573622e6385c3", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "91f4e0813cbc4cd586b0d826904aebc50eb16d2ae096d4cae70acc3d112f2b7b", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "2c096c085d2ed36bbf4851e31e335f0478ec150779202059087cc36224eae77b", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "f1c83aa90417737d788d6f5891942a6b446ceebd497830d4cda465197f95f32e", "T2T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", -"T2T1_fr_test_msg_sd_protect.py::test_enable_disable": "9c9912fcf9470e481e8b6db4c2d28ab9d83f29d07db552ce48fba22fee1e8639", -"T2T1_fr_test_msg_sd_protect.py::test_refresh": "746ca2d525a528f410fdfc86ca93ecfe03f7ff18e21fcb6d50111f41bd8cb098", -"T2T1_fr_test_msg_sd_protect.py::test_wipe": "49d6c49b76d7d7edc60625bb2448b2c9facb257e05786fc94a10acec39484240", -"T2T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "63d340b2ab03b1936428cb6b83a172f9fc17a7c51103126230f49a15b7cf4c24", -"T2T1_fr_test_msg_wipedevice.py::test_wipe_device": "361842715b5f7636f577c8c9bc8bc69548474cd26c26fd1b5fbcd850656f7753", +"T2T1_fr_test_msg_sd_protect.py::test_enable_disable": "0de6e5f9cb29e86164e29a0edae8252d600f08b6dde5d8f4ecdbebed63ba6ee1", +"T2T1_fr_test_msg_sd_protect.py::test_refresh": "5a584a657f4ed3fdb8b453aff966e78cf67261298fa46fc08b9b1552f90bc027", +"T2T1_fr_test_msg_sd_protect.py::test_wipe": "8ea3ae882630b623ed62c9df2b0c17dc5fa0babaffb826ff7c49a4ec5ae8881d", +"T2T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "24d55cc37ebc6a853bedc1dc02d03783db3b0253cb8ab67beb19978dd9ec6ffb", +"T2T1_fr_test_msg_wipedevice.py::test_wipe_device": "de049b25439137e5b3e8e1e2cb62007a6b689a2979d861abaee4cee80ebbc716", "T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "68ec42a0c82970f062a66318d4d5c0ccdce7b93a166324abfa7f29adc673423c", "T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "68ec42a0c82970f062a66318d4d5c0ccdce7b93a166324abfa7f29adc673423c", "T2T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", "T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", "T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", -"T2T1_fr_test_pin.py::test_correct_pin": "e22f395089a4d634c4fa9ecff7d3118e50e2072e875a153fa9ff60c7923d1ad4", -"T2T1_fr_test_pin.py::test_exponential_backoff_t2": "261c265057bc64b59090e02b38b1a7934e21d7c6c00cffe81baea223142f50bd", -"T2T1_fr_test_pin.py::test_incorrect_pin_t2": "0c72f3f8ddb8f9a695efe47d84682af6ff9d2675b56a1b326f69eb913be9aa2f", +"T2T1_fr_test_pin.py::test_correct_pin": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", +"T2T1_fr_test_pin.py::test_exponential_backoff_t2": "28c4ff4b2a9b7e881645db9fcae55679b03af977f90ded803ea5aa6543d4e46f", +"T2T1_fr_test_pin.py::test_incorrect_pin_t2": "2914001db3a0c10605d0cc252b0852b245e0b3da0003adc805989c40fd721f96", "T2T1_fr_test_pin.py::test_no_protection": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_test_protection_levels.py::test_apply_settings": "09428d06fca619ed1bb9439fc9c97ec3cad7316edac881cdd31999b5c20948a9", -"T2T1_fr_test_protection_levels.py::test_change_pin_t2": "9db539d0a50b4ccbb969d639b27229d03af26a3815213856dbc4fcad8e590d1f", -"T2T1_fr_test_protection_levels.py::test_get_address": "125a31c15c2d6c764cd58ab6bd37c786c7c5581249e1ebb990bbea6aeb1eeb47", -"T2T1_fr_test_protection_levels.py::test_get_entropy": "2d393bb8e7158d1e72ffa6c27864a992bca9fb3307a277dd8c0dd884b14e34a7", -"T2T1_fr_test_protection_levels.py::test_get_public_key": "125a31c15c2d6c764cd58ab6bd37c786c7c5581249e1ebb990bbea6aeb1eeb47", -"T2T1_fr_test_protection_levels.py::test_initialize": "ec472ac26713f6bcd80564258ff423ad688eebbde050a9bc88f1662128d28d11", +"T2T1_fr_test_protection_levels.py::test_apply_settings": "0df7f7fc6adec231f59fc6bd8efa1434b8976ffd781b2cf5347daf12b147910f", +"T2T1_fr_test_protection_levels.py::test_change_pin_t2": "7e163d98dd6edb038548b65bc407b8624f34396f59b521925e1e5e7742eb1f31", +"T2T1_fr_test_protection_levels.py::test_get_address": "66d2e7babfd58bb86fc67c9fdc9746f5a6f30194f948eed8892a11248ec49846", +"T2T1_fr_test_protection_levels.py::test_get_entropy": "d349ee571e49c37e4c04cb26449c4ce53c6792a834a44875f9d75a580b2e90b3", +"T2T1_fr_test_protection_levels.py::test_get_public_key": "66d2e7babfd58bb86fc67c9fdc9746f5a6f30194f948eed8892a11248ec49846", +"T2T1_fr_test_protection_levels.py::test_initialize": "2ce7b1f33cb9a032b4d5d6478747aa4cfb382def41272237eb4a0eb93d84c748", "T2T1_fr_test_protection_levels.py::test_passphrase_cached": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T2T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "ae1798bc8156c0983743aa73837f5cd479746dd6b8876de8a6767f6dd3d3134a", -"T2T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "620461a30f0b907ccba4b3e4b0e068ab7362ceb5dbd88bc41691fda0642aa458", +"T2T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "12b4da58b319746060bc337b33682537ee9f88fa5928f5528d30c2d5748d804e", +"T2T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "12a8547641f9a9c63a669981f754f6b694ca004f5833dbc48694da322990c34b", "T2T1_fr_test_protection_levels.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", -"T2T1_fr_test_protection_levels.py::test_sign_message": "f9a7a22091c4f45b3b2506e76ee338e47ad43a604ce82c863b6edd0359c6f61c", -"T2T1_fr_test_protection_levels.py::test_signtx": "2713e07758be1ecfa64ee0bbe3bde22cbe6bebb0737e804a89d360187a51ca94", -"T2T1_fr_test_protection_levels.py::test_unlocked": "ac2d18bf535dd2478eb723fa3d3779561dec2e724c3c4f52303505e124a31383", -"T2T1_fr_test_protection_levels.py::test_verify_message_t2": "43cbe7d1e773a37c12dfebceb242c36af16bbf4e2fdb4b8ecf6f9cece3ba1980", -"T2T1_fr_test_protection_levels.py::test_wipe_device": "0ed047d904ef99bb35e8e37dcff3d930706c77be2f4c7312233f2e3c956d1f6e", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "1220775f8442b25b1765361de5e02d1a1b594211a19385ef6160a8fac58ea67c", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "d66a3bdb070b2e8c5d32d39c020f1a647c4ad1831a84996c65e93373fb5a9fd0", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "58b11df9604e2c5e65f1210480c9d28612a5b7ccf3a52d10975ad40c6ffa2de6", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "3070f8f8fc769584c251ed995e3067bd74381dc2564a0c806bd7426677d5c2f4", -"T2T1_fr_test_sdcard.py::test_sd_format": "9654a743fdad9525d04b1ee8129874d437113d1d3d3cbb0793dca406cfb65d53", +"T2T1_fr_test_protection_levels.py::test_sign_message": "af4d5162e56bfbbae509b4f7b2eb2669a2e3ec145f95e1e81156c78b7ffe2259", +"T2T1_fr_test_protection_levels.py::test_signtx": "b99b630b6ef12eadb7004bdfdc7f790a65aba283c11cfaa1b1af0ce890002be1", +"T2T1_fr_test_protection_levels.py::test_unlocked": "d790632d2fbdb9d39484953f8c35cb1cb27609c8bf745c14b88449da9b84b734", +"T2T1_fr_test_protection_levels.py::test_verify_message_t2": "a207a1b801df070ecf7e05a790958f0dba2a77a447238ced39c5f3ff8ca04998", +"T2T1_fr_test_protection_levels.py::test_wipe_device": "9703f5d61609675156a2acf09414ff23bb2eba18b94942bbddb50397f7c57050", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "5b7c425177543a5b7e388bb87ca466948fb30a9fa1ec114b9e4ed76020ee1866", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "6da007e821c75c970b3e6f15d1033e0ca6827888347260fbcf252e92c9ff5714", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ce343451d53dc4bbd165d9756614119a68e3a6551f825e064bbdff97ea3f1b73", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9a6349694cc668feee6b5f42c9c765d366bf2a3555f16c491308a978a8cb629e", +"T2T1_fr_test_sdcard.py::test_sd_format": "844e3271ac6ddf52ce0d38ab2a081ec3b9871f3e5afc80ea420d167ca9b69145", "T2T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", -"T2T1_fr_test_sdcard.py::test_sd_protect_unlock": "6b793848153a9bbc263cd1c97b536ceaad0e278344e353e8d2ba331b95369836", +"T2T1_fr_test_sdcard.py::test_sd_protect_unlock": "84a1aede2a48386c5e83988ff158586cf5d14418f7a090f8edbde461cb3af9da", "T2T1_fr_test_session.py::test_cannot_resume_ended_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_test_session.py::test_clear_session": "e4564f65b620b892d258d24203b115d99678d47fb671b1a59f471ec39ad0835f", +"T2T1_fr_test_session.py::test_clear_session": "206d2d62533270162eac85e06c06a0e96ee4b83cd59dc690bd74d5b050287fb5", "T2T1_fr_test_session.py::test_derive_cardano_empty_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -15311,30 +15311,30 @@ "T2T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94" }, "persistence_tests": { -"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "c9a7a982a9e58cf03d5f15cc4647b1d62e21c5035fc0d8a4e5521053a38c791b", -"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "627968384535fa1d8f62f145966c1e7f1151b234c10686ed59f6a84c9e8b1db0", -"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "40f0f8531b056495156f1cc7f7d8e77232ab2d9507b40abf2f15018b2ff9bfb7", -"T2T1_en_test_shamir_persistence.py::test_abort": "822299ee79dea3dfb27d444fdc3a209e7d00de515becb36d384ac88b5f046f17", -"T2T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "4c2ce7548a1ae3c5a54baae726484750892093b7b6a8e60899fdc73ad771b214", -"T2T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "db7ebb7c0f0b06ddba3b00084774f635bdeb0b93cc4e1883cb9546698a379c12", -"T2T1_en_test_shamir_persistence.py::test_recovery_single_reset": "d1a7ceaf28653a99ab396d46a591d0f2e97de1a4c03feaa6dd82ba4cee7c96ef", -"T2T1_en_test_wipe_code.py::test_wipe_code_activate_core": "1817eaf41ab1299d8c8deb39c0c7d1d4eb3ea74cc599fc5b6f40494f74c567fc" +"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "fccf8053ec21b98472ca7f4573bfe5d11a7ee5d45565e94015d126a526804d18", +"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "00c214162a4c062a5cea6835c60a0d9d9e19c525650fe16a721612b63fd79f6a", +"T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "e6b11c5902468fa7ce0dcf899618f5297acb01714abdbf3a7ec0d0858573cfaf", +"T2T1_en_test_shamir_persistence.py::test_abort": "c6b058150cb20b78f812321d103a680989d3c5df8e5c6e8968651dab3e15bb7e", +"T2T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "d71d28ba4a21c977007eefa7f03e1ee3088a1fbef9be59edc08e04d645ebb181", +"T2T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "f92450ba779729bdf70fd163689efd79e36f050ef9d0869e0d7fddc1a6c3f668", +"T2T1_en_test_shamir_persistence.py::test_recovery_single_reset": "933bc488c2ca57c1e2537dffa1e8bc4435ad875d3d7d733e379052a27206ad54", +"T2T1_en_test_wipe_code.py::test_wipe_code_activate_core": "f8484690336163fe54fdf9f6d35766ab8f190a1af5646f922b804816721beea8" } }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6f9e589939d86095320ee5d1773611531700af5e3a9ff1e9c04e0fd12302892a", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "4296fde1e64caa54695330e5a794f7d55a77b6adb98365a4ff29dae511bdfd21", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "f79f6b11f0f527e6cc25fb627a5698f80575ac7cb880a0e950160d79e7a05394", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "edd68b6d39b2a0fb27d5e50e8d82af317bd06e19aaf6d6d75086256a56e46ae7", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "067ec1fc3fd65a698913ed58840ebdb68933f85a8baa0c2dcdc147a2137b1ba2", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "0793895316dc9aa70860e7ad1b0e6d0c613964934734487f4694beebf4756a93", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "a354a37c8db591cf3c75fd8ac646196b4989aa21401598fb397eefed051674be", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "40efbd619ec027a856cf1370f7801ea1f88ee7eee51fa5d13fb3d1deb6660944", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "838f3267db86e7101119735199326a46c41eaaf05007debb1c99d135d85439dd", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "48d702aa8aa9be657e0e36ad1ea7b65d6817ddc243108ee68af87bae392b0b6e", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "e0b00054a328e3cf4f982e307efb94b89ea7b61fea4ec80dfceb54b172980f19", -"T3T1_cs_test_lock.py::test_hold_to_lock": "1261d1ed229e618c37ac3a41a43ea313e56ad6096b8b65971062b7a68a85d540", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "04dd28def64267470324fcac6cdca3819781d7fc0498cef75ed83bfff3fc5649", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "e1fca7b96cca49bf28bae74ae7a9d3ec0947090b4a6f52c5c3ca07ac2add55c9", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "76e837cdcd8af29a680d5f9a499af4b59940aa6e35908a92a387d989b4d88b34", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "72965cfae8a8c6a34811cdd15c753c1b820650aa99cd4592860305c1c8a65b19", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "26235a6a80c280fddb06a1a7155131b511d5335548c8965857de7ef3a8922d0e", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "8315dddf3fef5a03931f9e1f4f39a278d0bfc26cfba99dea5e51cbc36bfa1128", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "cd581d3800f641ff1a3a83b88a0e4d08d2e299cba3d40a6eb893be694e8eb48c", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "4e7aa1e3b03507cf3b4f97be7d35347a237a8d203ee93934f5f8cf9f46e5c1b0", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "eb98ca2a5a32eafe3f900478beb4258e67c896baec5ee44b6bed4bb0b0f6b606", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "503270a6bef3f40595776027e60c23297cbb043e9d0d68e0aef1812f75ade20e", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0541c248157f4c0f10dcaa338aea083ec15a7293c865a5de3d9cb13df8ecb41e", +"T3T1_cs_test_lock.py::test_hold_to_lock": "06048f368eb418a0b7ddcc9505dbb0b5ba7fc62adb5b33a00a7cd34c3784fcb5", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "3ad09c8d05197cb0ac1627c792bebda14e1cd031c0c1414c9ace143c60f79fae", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "956e3bb892ca76d13da3bb45556dc19789d4fbfdde1052c4c954139f503f0c81", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "6f496d80c2ab52faf30679ceffd8915926d098be42f47123aaf18345e23baeeb", @@ -15350,40 +15350,40 @@ "T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6d8773f6dfc30cc1acb2d89d374c297a44c1d1975d3cf6cf45952ad7e8c55ec6", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "3c58c69e6722c9274b8ccfddb2fc31b652bf01b977f7521c87fa9e8df7ce30f5", "T3T1_cs_test_pin.py::test_pin_cancel": "0d2da2f1a8f96c6e90353b1b3790642ac762c46d6c9f1ce513ab15bb80e58fc5", -"T3T1_cs_test_pin.py::test_pin_change": "c2cbc8c018a4299e77f68aa49a8a0b3e5da14ae99c3c71aae82e73337bd4f5ec", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "e8701f8142772ee823f48d19e5b7063488bf2bf7dcb368646ca8db62db68fd85", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "2b1ca2b7bbc4ac496f593abadce7df31b0e548800f579515576e124aeb873836", -"T3T1_cs_test_pin.py::test_pin_incorrect": "7fe25f15e248133b7b8ed11ef300ba8775bf2beeb14c9bb433dc9eee62d0dbc9", -"T3T1_cs_test_pin.py::test_pin_long": "4fd6d12e0bb3eddba9f054915852d4d5f8c66cbe071e1a50ccccc1969707dab0", -"T3T1_cs_test_pin.py::test_pin_long_delete": "e523f07f3bdd58eea7676ac279675d6b59d1591b3132b7effb49238a25f441cb", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "46c4345c63ee61f926b4c1bd09a258b546ef0c2008c8a0fb7d85c76e70a9f06c", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "cbe3500b541ea354673785f3f06d966c30d41e6f12c191404681e470e880e98d", -"T3T1_cs_test_pin.py::test_pin_setup": "c35a4fc7fe0c542fa9f0c6c485962b527d94bef534e3c8bd8a40541a0383caf0", +"T3T1_cs_test_pin.py::test_pin_change": "4dac1df0bb3e63bcdb6c9a810d99b75177d12cd2aa18c76dea323362a4b0e61a", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "46d0792786ca3659d54f5738c02c9f5ba03a9e4b0e01be11dea600d3b87f1b20", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "05c354e776988ad50b270a93d438c870e76c16329e270489330af4687de3ba02", +"T3T1_cs_test_pin.py::test_pin_incorrect": "39214a6f25389c06f4484b28cebb50317a2cd8c34c93cd4ffd2fe246c210c989", +"T3T1_cs_test_pin.py::test_pin_long": "b77cce30108125750e1c3d2105c0e69830ac4464235129a38b793281fa06e8e6", +"T3T1_cs_test_pin.py::test_pin_long_delete": "8aafc9023fba96d70a37effc185830e531a58584852f8e2ffe33e95057207364", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "978a7a53ba8d0e1d25f821928ed0024e92e6790f18248326ba6eb6cca2314498", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "013177785a61f9bd123f4b6d502fdb525deecf3aa16706064b003ac4181e9492", +"T3T1_cs_test_pin.py::test_pin_setup": "e5fc9ecf31a8b0c6ee1f75515bacfbfb57107740ebdd9844d6d95374417cee79", "T3T1_cs_test_pin.py::test_pin_setup_mismatch": "bf233d62c66f23cfd3d737eb80513f9d356e33c954512374ece2ce2119271060", -"T3T1_cs_test_pin.py::test_pin_short": "2b1ca2b7bbc4ac496f593abadce7df31b0e548800f579515576e124aeb873836", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "acc154ff074fc2579c96719b8ffd4ef554bf53f0d7596dc78e1627b1920065e8", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "760d680dc7b2a010bbf299242b7ace0ef5aa045f5997dc50276c38b4037a9f1d", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "8149c5e7f74827ac7d0835001e4daca4b0683fce5350eedf20c846a5ee711910", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "c22f2f731e15f77a622cafb52798c43f32080f6d5076915afe813c11610874a9", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "9c5a4183729c87a23be5a587610565f03b5fcbf6153b77bc7048544fb3a136ce", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "a93fa6807dd978df80b266227e8ad564f2d8f0cfe1e82bc3d3f22f152e8d0791", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "b9e79a1c265027b33e7d1e38517fdc07ab6484eb1e3eeba73e32db935312b5b6", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e478c3b1f09d183439436e09a6c6bfb13f2f7693bd4d754d157ccbf181535f3e", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1f19633eac793261ecbd1ce4cbb9abf26bf0eed3452ad626e9dfcfd623f65a20", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3d6e7839b5c932643b158aa6eb07f9ef46f0b910904fa5337b94fc064f4b418b", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "68fe15769ad2e528a77f389d0325e0d4b7182a73eb2ffca731a443c8f4f0d7c4", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "8c1913905e2f36efe001907c8ee051ce7f8aecc93a88188da0e3eb9309a8d240", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d0fb334b1fb245312dbcd615048065bf9c1494bb4d866854cf65c0dff38fa72", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "80ec64d35ff1342c00a772decc5c3a9ca4ced2bef5381254b15fa09a77f9fe1f", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "f9a60279e3f66fb19d271ab259db92f2242a070b1965e485450d0905ede7304e", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "7f8c92bb4c9e19037714a06e3360724bb677ebc45c884eacfa2c6a7157a7225d", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "475894c37006a2c42a5750188ee4cdcb617b8e784ee9ee104c9176afb05a4885", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "ac3f27ea1f6ab86515a5aa4028e5e0f6f5ec0dfe0a2f32049b7036766855490a", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "5df53829008e8c8c079f522634cc548516ddd47f9635f46baa8ee27c3ad32983", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "93258bfa223d8778ddc868453599c776d52bbdda1ef5fb613f7c1ea69b8ce8ee", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "892860714b53e011e560d8c4df16dee1d236e8fd24dae6e8b0144dd25f32e1f4", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "7ef4102658ccb3fcbc9914192b959bfe7819bbd84bca78b8ca3a5d078dd23448", -"T3T1_de_test_lock.py::test_hold_to_lock": "d77c5d6834617890ebea1a51463bef1add52bc1d2478a3e17c6e88b35d7d5cb1", +"T3T1_cs_test_pin.py::test_pin_short": "05c354e776988ad50b270a93d438c870e76c16329e270489330af4687de3ba02", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "357070d02ba24d5e2030aa56b026e47302043e86c65a7cab87653eec01994536", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "feca723121fbd60703aec5e0d667bb0c49b3e3be26a294782210d1ad7c46e043", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "ab2b3639ca0f79cfb4ed0143363398701820fa549043909d76a7e909af8f26a4", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8428e8c2ceb6292d1797f2107e391eb2d9efc4e8044c1d0175974d36d1f8419c", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "c7d20fc0988dcdd8b6333798569167fdc273cc7d51f5f8f75e5bfdc1ede9c7da", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "89e0db1f70af5b44080f0c45628f8a2b98d0cb3dc8687b838e2b3a8c7d2cdd37", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "4e42e06eca7eba0d237d8d9b92ff81264ce81272611a9850562052b78db805a7", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9762f515ed939ce9457a8a1aae9fbe1d1c10b26e52a33933d44c8897c9983e26", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "32f940f9c812a3cda75fab30ab5d3b4f7b78c61a5bc7f10b0407d34a2ceec03c", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1755242538503e52a5ed6df5dc3a87da970e4bfe10e8c5dafc61d4ff515fe609", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2ac56b302c0d13a8bdef9f71bfe7ceccb756948523aa7e06d6a8630b1648c217", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3445ffabe15ec6b18cab7d503cfc886d61659f4174ef17f992140437fae7abd5", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "b948e09ad60f37d5d21d360b502e6f4f6b061a029eadb2a442e3ff4624caf904", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a43b31ec7f7efc851cc3e01b04ed7dbed3e1516dec365bd0cb35c924dcc467b4", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "b2bb3fe04676a3cb64b51bc98358c7e328183af0346d3c27fb91743f607a9215", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "95b460c6d3fe3c835b905a3aa4a2b55e77281086f5e77cce35defef3335a4457", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "e89efdedb0450a8ce563fce4c1c308be529230c7c0be3a2dbe621bd772cfb194", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "8195485e241ebc4106a1fab1a64376bb522210eca471c4d2e88cebfaf54ef049", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "42014af129a44ebd82ac733cba671c60d2a085056e48f081134288199ef94178", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "93332879c26051be67399b47ce6135e729783ac35be14bba8a18f4bd7fad0163", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1c2c503e0ecf55359e7dc7800b190d71b01c6dc953d65494e9dd6940f40e4341", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "84895c70dcbeacd69227294e245f4a4aadd89aa25a33c2af70e40e88251fbc54", +"T3T1_de_test_lock.py::test_hold_to_lock": "6250451b4bc8b1c5d5e1f3402880db95e210f7bb352874f17e571c764e8790f8", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "63c08446669db6dd58a639b5fd2e18ca75f8f0309dd3588dbd7fe8d96352a2b4", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "bf9d0f3b2d019fff0af115958eed8b6aed3b8794b10a18ce02dd9dfb35037009", "T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "79efacad4f082f5e54879a81dcac263a01a7583a8d645e5f2102f61e308671bc", @@ -15399,40 +15399,40 @@ "T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "64858a57ff8101fa7b28bd4fe8d5aff9b5c221d33c4144bba399279895ca3d13", "T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "b311c171f29da6eb4410dda06050e7f4d62b53718c00f14875098b18b1cbe451", "T3T1_de_test_pin.py::test_pin_cancel": "0d405e67172c0014d1d95867d6799b24a5294794f4af9901a0e9e56cb70fae53", -"T3T1_de_test_pin.py::test_pin_change": "20422b7d523e5ae1cb346f00e9a603410ef7816787b69a42b20801767b8b703b", -"T3T1_de_test_pin.py::test_pin_delete_hold": "8a0d059c9bd9e28315cfe1c1dfd667985449da33f407d7cff10fc8c719452f7a", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "a13b7263edd989b3fdfec7ed8f8cad7e00d72134eb7e37352c8e2fbfeb132747", -"T3T1_de_test_pin.py::test_pin_incorrect": "a03a535f2bb6a84ca52722f1424099ec1eb0fe816d21b519011242b560d05019", -"T3T1_de_test_pin.py::test_pin_long": "23949732b4e98b298dac04b6fd17862ea5618665e1bdd5a4992372cad17d630d", -"T3T1_de_test_pin.py::test_pin_long_delete": "d641372615c38d8e15f06c7485db3470cd56bc97294d9f45038795460f3519da", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "d2a9920ffe3e5efc70fe7e9f78498e0f225d054f0fe233dd27e8472e2f60186e", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "f2114626fd4294bc6550ce1e04ef8a17d358d8d7cff1ef0eaf0b0d601781fb58", -"T3T1_de_test_pin.py::test_pin_setup": "b995b50e4c432181f0a12f31a9725952cf5a7408ab830e10a1bd232b973e2b4c", +"T3T1_de_test_pin.py::test_pin_change": "39d6f9cb6220ed684423944d584ad00c2d4d669ce7368a883cab0a65faf9ae3a", +"T3T1_de_test_pin.py::test_pin_delete_hold": "fd76a81b22641b04bc459a21bdbfd2eb499589d990000e7cb7d8a6cba2eaecac", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "89a04c942297608d5d78d4c381891dd564b696d395bc51354f3c532da692ca42", +"T3T1_de_test_pin.py::test_pin_incorrect": "3210d3baa7c132ed4c887b00b864890739310ac081cafa231481df5e85a35208", +"T3T1_de_test_pin.py::test_pin_long": "6400b17c5d671d8470f4c6517ee1e5094aa8821e0a5a696ed547b759fd61cd81", +"T3T1_de_test_pin.py::test_pin_long_delete": "3740c9674d7590f876d7563faf052e03febf0051f0645a4e757f141a733d13ae", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "0e801978eddf2c556c29bdf490127882ec516fe30a4533213e5594ecbecc711c", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "11736b1bd9268d391c0458d624df654f9343048da66442b0c8a9497f776377f9", +"T3T1_de_test_pin.py::test_pin_setup": "c254847c832c95e1259620b58cd4acade5c1128b831ee7edbc749e890a991b53", "T3T1_de_test_pin.py::test_pin_setup_mismatch": "2cced1fbdff980c5c3511ea80cf0c759f6fc6e0d0fc9036f19cb71c93236dc24", -"T3T1_de_test_pin.py::test_pin_short": "a13b7263edd989b3fdfec7ed8f8cad7e00d72134eb7e37352c8e2fbfeb132747", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "a493446179a7f3a25c7100f985c34df2c22af03e4dfe3538129cfca36d5c29af", -"T3T1_de_test_pin.py::test_wipe_code_setup": "53d46189828a3b80ce5907d32883cf637fb05c7140821c33cec2fbc625f032c0", -"T3T1_de_test_recovery.py::test_recovery_bip39": "c5104874895584c053afb59953c9cbc5418ab98f2c9bb9853ce85af6fc87e43c", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "fefeb165495961f2b4f99272ad813fcbd4da47479dd0b385ba4855dc2ffa5011", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "491bd2a211e119df85c6d251e4d5d1c40423595b14eb195977e5a331bc74fa15", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "64abdab46d9c13b5d2235fcfea4696f21aed0943b6dbf5abe428dfcdd5cf2381", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "57222b603884e5c5b4f0667c4bc23a0dc0bc08d274404cec2644387e327fd3b8", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "56ea9feb0e2a77e5a96b5003c561bbd63fab0e5b417391425485642d9f005061", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "bd44555375181366118e9bfa7bac765c692115f3bfadadf3d4969eed71ccbc09", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6954de6b5ffd5a71c62f7b96fc8fcd25d2bb1df0665f2a8dbfd8e78573f48fcf", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6dd93a9a6879694068e3e2444b98443bfe7b7f3335d7447e722c785faf54a458", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "89d9863b6d11cba20c5c7c6a51975f9bb3be605dad20f3259df5a71c901286ff", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "d3e797008155f1dd117549e908a7c3ac48d3a7f7de72bcc1edee83c1edce857c", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "e16ea1b82337ae8f09fe4b74ea82a92652686df23837ab3919238cfc15f473dc", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "701c4db12964d1b7a044e0d518bc10cc1f6a16581c29e84f7e49a8db590853d8", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "8b8becac12fa0f4b2e9e510a512e3b2bf45f1004026473f3f860a965cb4b428b", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "ede92a0c0ad001505a1ae3b613e78645d0f3635eaf1f239e22bf42a79ea25c19", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "acfc00ad4e9b80aa29929bacbab91ee34e77ee853e08c8c0f6db8d2b54d02b0e", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "825c9b5d16cf5315db4de5ec6e06b809f686ba7c6984127d9ded46c3199e996d", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cb89fec564c9e44dee3c9516a44940f948bbc30a96c7ba6295179692b402c275", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d69d4743c013521ea76f3f5f4182d525600520c116357dac0545193e5745ec23", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "cdfca792b399e20645b0fbb2d12dbd2238fd869f805ebe54f86b9e3c80769d90", -"T3T1_en_test_lock.py::test_hold_to_lock": "97baffaebd554b49fe643ef4a1f6aed90711c829c2cb740d9a292efe965acd7b", +"T3T1_de_test_pin.py::test_pin_short": "89a04c942297608d5d78d4c381891dd564b696d395bc51354f3c532da692ca42", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "5f093021a4ef3c011b8c3047d5709ad980e5f4721e8b94f4cdd567a2d565e71d", +"T3T1_de_test_pin.py::test_wipe_code_setup": "5c6167b560ce169555cf0235b958703c4426dcc57f2187a6a2e34688ab78b942", +"T3T1_de_test_recovery.py::test_recovery_bip39": "5cbc99e3d7cba3cc05f90722ccaf20f57a2b7df978bdc095f6024de130d0b98a", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "e267ece0952c1d7687a20c72b05e6ecb704f5a54c483dc9116812741bf88dbfb", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "38f122eb5dc6e4077c7079c96b95b20c4916a3fcf09c9581c6c0f228b25cc533", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "5c72fd66c81b6f3122137bb78032575fef7990f8a954d08f44f0a1f506271953", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "9cda4ebdb58674d0ff8ba2b869c4322386153c022a957284e3ceac148cd5e4e1", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0af2f156d9ee14742dd87d433452d193d8ff3a3b4ca4ec2bc963f3f9ace94847", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0bfa8c81916b4ed8104bc91684e308dbb057147c8855fb908cb71a90df68a0eb", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ee2806e8f7070034cc0b570361e894fb415e314d6c36cd5bd27d4dbbd719da5f", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f6e9a6b68ea3851c58c691cf71df74909be485624273c2c27a5b401cb903cb4a", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "1574ab354e6f01b6969c5c52477ac875367cdd838c411b8f96ebced5f5ff492e", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "b884c1243d265c647e5b54ee42f42fc413c3ca96b648b87c4f1e7acec73f5629", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "a924c81c155e30bac4c3c48e0669cfbac08433c5b33e5dcc2c4eb57df7c171f5", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "9821c7c63467ab74be74abcedbcf15b57a58eae338defb5c9e2b04beb245d3f2", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "664df0fe6761ba09e8bf942bfac6e6ea0ff0396b44d591a019881899da24adfa", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "28f562bab1a8d375ea9c76ba978cde28988fb59509eb720a9ffb0f1216d1dca2", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "b00773fd206725c5f01f2e6e69c105caf9033f65ddc4cc3e9ac7bbdd2851de10", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "4ed216db9eadf4bb628cdfa1297adcc001ff0d6a2b6cc752f249f5bec8f6e7bd", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "37ee82e8643b9e226a332f8d8f644d38efa11abee4d5fa01cc7aeef259efdf48", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "abd96d32b92c8ef5c8ac4cac59ea78f623f7aef14392f98b6608c4ff62eabf19", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6ee94a1eb6437c83569d05695e0c224398f8b074d2e1a4c8a8b5b3496af87f55", +"T3T1_en_test_lock.py::test_hold_to_lock": "85c2832f9bc5d73bc2ac3a10512f1ef1f3d65fd4185c6a24cc50ade2ea933c8e", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "77fe6f8bfb1ddc6a8516913c2ebc669e6b988e6ef9ea6846ef6d94e921fa65af", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "c5540d1c33265bcd397b8a72fe949eef9b514c708fb3bbc2d3d2aef804cc8a23", "T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "ce2aaa6bc1c26c65a4278ebd3e23dac4adf81fb71dd72af685db34ba766c3935", @@ -15448,40 +15448,40 @@ "T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "bbcb0e0053e1bb96d2bc52ffcc1a4592d8f51489b3c36fae640b6a9509c8993b", "T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "776b1b1d580b1450810fc19f03df408d44600360dc370503c440916ef9ed5639", "T3T1_en_test_pin.py::test_pin_cancel": "4f981a6c9a417b2f956474eb5795d7a412709410884e669e2b5154981c7b680e", -"T3T1_en_test_pin.py::test_pin_change": "961ea7d77fd1c689cad0cde38e1d14eb8cfdc5f891d7626377fcb108e2aa8168", -"T3T1_en_test_pin.py::test_pin_delete_hold": "4dc9b7b5f644a65d8d55b5f7b2cc1a3775e8cb8b0e9cec28a84ab5104018a4a4", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "13b1ff05b3b5bf9fe351b69fabdf51b85a52dc059fbe0a629bb60d31b01b9e86", -"T3T1_en_test_pin.py::test_pin_incorrect": "1d0294098cb03140e68a048bdeb552018710e6b68e3d76eb08bc0ae1eb3366e4", -"T3T1_en_test_pin.py::test_pin_long": "e41376a76eed69ccf19bc0879e8f4a8cf0ca0df7807fa95c8a6b3ffb1f55c6fe", -"T3T1_en_test_pin.py::test_pin_long_delete": "0be886078e6b43f70f0e430d77e45a9ba652df1a196e991e0f7e44ee5b9d0ae5", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "f4dc371ceeb8596015f1bf6b5e477ce03f24b2c4c7d90d7628aba4020fa928f3", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "7f3c8480c6a342c83b1b8e2ad34cfbbed0592b86da51952cb83b68fc48cdb8dc", -"T3T1_en_test_pin.py::test_pin_setup": "e3c5a8ce30b364f2487350af5e3e30eb53d1ffc25e03c16ad34bf31fbb715f98", +"T3T1_en_test_pin.py::test_pin_change": "1ded03e5b35df04241021e3ae838d246c481429a01342bc9c213e7c1a794ff42", +"T3T1_en_test_pin.py::test_pin_delete_hold": "15a924dadbbe02663a94260f722cf6f89fb67b604a2a4b406007783a25060858", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "dd83932b877054102500ccb7aa19c1e33fbd2154e83a2d5c65257b193523560d", +"T3T1_en_test_pin.py::test_pin_incorrect": "cacee4f2dde4a6be7599989e86b26f0db56c46bd778495f393559d29e31f6e4f", +"T3T1_en_test_pin.py::test_pin_long": "e13e628dcc452f0c7673af693cab5d6d3cdc5990f315a1c91a1f165540cea64a", +"T3T1_en_test_pin.py::test_pin_long_delete": "19ae10139b21167d3fd3d0649825a60f69cc84a735516d744a1540f8e431a5be", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "fbe8e988cfa663a0201817dc4ee6af9085c0e9a140fa39960442a24be3f4a140", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "8c6cc398e729a6a5d67674c40caea1eea43e1c9be8330b1b8142fa7ce8349843", +"T3T1_en_test_pin.py::test_pin_setup": "1ca5024c9d0a99106df5f6beb9f52d5bd75dc4a0d46db6e09420249559b35325", "T3T1_en_test_pin.py::test_pin_setup_mismatch": "b5d246768af803c6310196cc764899620a0976b9353ee9b7da1a524c45cde124", -"T3T1_en_test_pin.py::test_pin_short": "13b1ff05b3b5bf9fe351b69fabdf51b85a52dc059fbe0a629bb60d31b01b9e86", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "6f9dc1f535919922c995d2e3b06d49ce30756e11c33c15ca3668919ec10ce767", -"T3T1_en_test_pin.py::test_wipe_code_setup": "51573a7dd52814fd88a1f1d8091a8f31116cbd35f88e427073ab061709151322", -"T3T1_en_test_recovery.py::test_recovery_bip39": "e4a4b67bb4df6abc7fa3b41143bad5af6a730bc8149badb3bca27e223a2e740f", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "d3f1ae68c3f53b9a4f420d401b17fcf0e1df9e72d7588955607be9171d6dccde", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "8c41faa6e0fa47ecaf6d58c8ba56abe42b5f4c9af5674f1f43c6bdff52262781", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "f6cd30963a0541521c5ec5895e4e72d90581648587aea97b0fb6a3e01f066669", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "d30d7c70bed00306c1ce48ca9cee7550c2dc67da6c7d5ca310b2ae80b0ce7b78", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0871e2cb30485cac25e17e1bb9d4a8b16a151845b8c5d62f5e1c517aa2d11127", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "64f4a3aa57b7aeba88aafabda05dff768d12aafb05876de1b3af35b2a5794025", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "8ec7c62473d597734610f5a868ad70890decf3edc40f89a370716d38794a0d40", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a12e32a489b56eb680b8325469e79f39ccaf28e60b846d2257bf7c4226524e67", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "05a4e45fb84a2142f81f7721b997cf4e1a37daa9c5cf665d4cbcf26ea6d013ab", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "b1525433171983ce44aa8feef67d2c237161776590213ae8bd966b98cb950b7d", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "993264dbecf8cd4fb217ed2303cfe52bfb6fe43a69f2e5169c24270fb2069884", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "ed38201b2328e05c361d276851685da00a93901ec2d78c93437aca7c9bbc18c4", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "3911c97c0ad48ba83eb755173be3900bb666efc365d7c7d76527cdd996da1d7d", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "aa6f56fd22a07a2daf9358f3855048b4536dcc478e88e55c377c6940745b1e7c", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "6112434df70e0f791e2fd4481488c0d0b86ecc9a89bd1022d06ea64b4970b0cf", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "d800904f30889d1312b432887be7c9ddb2ba3c88a033f5f040213429a0736b34", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6b130d292dec4116743776bde5a318a8550a5a5dfd4311c0f1622f619007e6ba", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "85ee31647a32e229b72049bdefc7e616daddbfa609385abca02eff75ee23d219", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "18b7a0948bc9dd72a4a95ebc38aee45340df4df5e9bc508f1f3f6c5971e289cc", -"T3T1_es_test_lock.py::test_hold_to_lock": "599c6c0ec95b14442e281927a8adbf90eb5cd9f83b95de03db375b4d3bac82df", +"T3T1_en_test_pin.py::test_pin_short": "dd83932b877054102500ccb7aa19c1e33fbd2154e83a2d5c65257b193523560d", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "2d4ba760a011e62e8eaac4c4b31c52f7b2985108d1d033662f5338716ff65d72", +"T3T1_en_test_pin.py::test_wipe_code_setup": "93905d35e3e716ab72b883d829ec74291eae638938df687e40d0e62406dad3a1", +"T3T1_en_test_recovery.py::test_recovery_bip39": "b36d63eee8e62e337e1e1d37e8edff8f11be4c2bbc2bb7adaac7dc7cb40ca5f7", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b872324c9dcaa3d3b1b60d4d8508fcb0c3ecad333425f575ad0759d41925faa5", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "80809ce07132d23ca5af4ddb418a19b3d2bf785a2ce6db64bfcbf36184efe5f3", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "d698464d0ad646527912c97d350e38f73cab50327001cb0d2697b79a63d8d038", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "9f5f4d3ca539713d1eee593ac8af276a69368d04e20f69c9e8b0a09b1242fb7c", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "422202cc3672563a69421267145512340596e4b1f0fad48f85eb3b924edea13c", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6b1fcf64312394170154ac23a2c03217db0c150c1b10fd63a972da4cba4740af", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "82209b5fe1f1c60d4f4def1783a77e97da63a079a3b72acf038d5592573f5518", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "78a9f96c0163a8e7fc378e07bb37800bafa15cac7261b66a72c648c412a099e4", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "99333a321b1581d7cc216b41aee1ff245be02b843d1c503ff23cbc02f3836fb0", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "0839e89c2eff942e2671730bdf4dee20ec5b7486d607272790e1e922a9bcecfe", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "ce75d987f8f8297a205625653e5ebd06b2bdf93fd96aa7fe7e253e61e8d46885", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "9dce1463b75542cc8fde660911c9bc638f8f21ed0246cb88ff6c9b81a570ff75", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "544aaa6eb0bb3335475ac775a7acb86cd982e3ded8cab88972915bbe85cea2cb", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "df2857f5948e5130262a194a3934313bc2cc6c3c50e79cfb7ad7bd3874a05783", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "7757e3cf7cf15bb28ec851a2874ca1dda05eac68a5bbbeea7d465f6059015af6", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "b49a04511d30b200f691dbc2b4031dc1e4f7aa240bbca58656a7ad5d35b37e43", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1f535bab5bdf06f820fb00b278cd8e10a686c9162f4d16e068e2da01e5d01281", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "fb5f271ecf82ce97bdf7a10c0a8b6d158a356c0a4e5a50ce114c464695e2f3d3", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3f28ed90d81f57c3c92467a8b98d4bb4362cf0fefbb7a54a79fe7653dc4a624f", +"T3T1_es_test_lock.py::test_hold_to_lock": "93790c763f5c970b61e875e4e0ec4cdf12d92cd40eb6a19924205b357674a399", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "3fc39e02f19cf7626398c62eeba26f2e36ee6449e3390283fa96c016ea85d58e", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "83116b38b2709f164d512a3e53dc36b2fc65cd635f8cc5dd49a7e4d01b52b554", "T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "7e4da3874efd61f9a37ecd276a3f104d15b511a075702de130ffc1b60ce96a2c", @@ -15497,40 +15497,40 @@ "T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a955954f8e760b13d355187c3c08a60c2d47915d752e0b2adf097ed1de650a7", "T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "deaa6422b34f850d1253d4fd97758b7bb9f01debdc34fe7f5615e4db2f58cc39", "T3T1_es_test_pin.py::test_pin_cancel": "5aa944177da6c0a3d1bda13085d53e1b3d713f9074e5941c6944497845377e1b", -"T3T1_es_test_pin.py::test_pin_change": "08578f1278a722d56e7b18682a364eda0d71ed81f445fca52c25e6aa9c91ac80", -"T3T1_es_test_pin.py::test_pin_delete_hold": "4d13ced2097adf92ae11fee84c8babb9d2e30a123511cd0da7f7f23d2d9ee187", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "049531c48782f6bd3da174ad5f7c49025a465e7ef5f39d84025c5361baf48858", -"T3T1_es_test_pin.py::test_pin_incorrect": "b11979e29d69b4778a08f77fa91dd064f26423962f5cc7f3dae9bf82aa6cf405", -"T3T1_es_test_pin.py::test_pin_long": "dca81abd69b76eb10791f35ae183b28d4990663959061453d933f2071c4fb6d3", -"T3T1_es_test_pin.py::test_pin_long_delete": "af3dcc372b2bdb7a00712c32bbc3247489e312c486222675ad566dd5605ea380", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "11c510aa2ee3c481ebff02840789558c55ff41929fd5ff58cdde7bf5cb7f9fe4", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "ebab75475a9b0b968fd960da24583083129bdc86f7b6a4b4445c9454efb77c50", -"T3T1_es_test_pin.py::test_pin_setup": "39c318846d08fae3683c0ea4f9508ea5b1b04048e9c5abb7353c17b783ac436e", +"T3T1_es_test_pin.py::test_pin_change": "ee721c4ea28738438eabba7b043a44fcf99ec326f5774454c164a4a521482e0b", +"T3T1_es_test_pin.py::test_pin_delete_hold": "eb4b5081320befb46bd14d20344b07b262f41013f0ad791d5b4fb6811f71b8ba", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "24d1cd58a3a0e9a3c762dfc47cecbab72d732ed3f42549a65781a712eb67c3fa", +"T3T1_es_test_pin.py::test_pin_incorrect": "2c47a4330ddb8d7d12e0caa736320c08d38e1f2beefb2940f60f45b7f9f529d3", +"T3T1_es_test_pin.py::test_pin_long": "82eaa2e33eeb9877e775a62032a1cb2adf0ba1b1105115febec9989d60e67c36", +"T3T1_es_test_pin.py::test_pin_long_delete": "d78538903ebe4ddc7424fd4ecb4a69dcc8ee5be410ebb8e83d9bdf7fcf6ac547", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "da6e7f65c1d845bcb55304eb5f6bb6c16308f88958b745fcaeff35ad1d29e964", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "9ed8c4ea0f75b2c14790b05dbe5f4098559d2d35aa67804cfcde951e97b7aa33", +"T3T1_es_test_pin.py::test_pin_setup": "1a2c733f43d7daffa07b2ff2d09da3af94b25a011d34fc99b9a9822a3d2ce709", "T3T1_es_test_pin.py::test_pin_setup_mismatch": "178daf8563f6912455b7dfdb312dc077b213fffb463d11afe6fde61fa5ee7bc1", -"T3T1_es_test_pin.py::test_pin_short": "049531c48782f6bd3da174ad5f7c49025a465e7ef5f39d84025c5361baf48858", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "371ae1c3e17f5adad577f0eff999f8fafff25df8c9c3069a57e0779a25abf3c0", -"T3T1_es_test_pin.py::test_wipe_code_setup": "113cd8151325442af1514ae6bd4fd6335411a8296c848410cf85776d73705ddf", -"T3T1_es_test_recovery.py::test_recovery_bip39": "9faea4220e4647c307d74fb30029c73086a026a477fb6b1254aafcc5128cf845", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "8018b369d6ebbcd2dd6dbefbc18eb86124f57610d9a6d8a6ed30419d3396fc4e", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "76d8bced36dfea2bd56756619aa2d20c13c912f1e012ec0f34a761fea72b900f", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "42f18b49669caf6b1de52c4e44ee4cb083bfc418f236f59b7cce25c3e9afd188", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "bdc7ce82f37ec3e53bacae7621d075b623b9c6341d5aa33b44497a6799dce180", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "db96b69f2727fd3ad30143a275995f228da07f0a0c15ca193b23aa2754f99f6e", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "50aa3ca82b411765778412ed3b100579d9d4268a1d3d0ce1f37bacf3e8c9fca5", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4f9da73f2e6f4fa3f7c5802192c262c29451dbbc4be091f9892f6a4a323372ac", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "76007df5ab579bd73a04caf1777c86a7228ca7eae527f50ced07d939a62e766c", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6030f5f199c0d7fded75f993ffde0948039e277535b0397ced32b3a224b88d2f", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "04d049997a45499a7e3316f76b10c7fe8651cb8d051a84681de61f0cc44b66c0", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "7d96f87359d5853cbb90a6ed2454c3c5ae8a1efad9dfc38c79561d1d740fc7f6", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "7dd7d33a67f7d9d614180390e55612d0e36b4bc08d91e101d31a7f7800a4346f", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "63e8c83a33c2174257073fc4c655dfd60e7a9f3ce85bcb20e576bfaa3b7416f7", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "fc5db4f5c9d03cd84bb69d0d53aae1cbb5d8f6e94d5fdeb44144f4e5eb285928", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "eacad631721eedecf68c32533a402b7af4c6b190a6411f2970c5d9c891c9c423", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "ce7fc9bee6a5a3558bb264a6b912e053614a6f246ba871d5a93a5ae5d1500d1a", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "5fcb3b12c8313eda0559af056c6026515a037713a3c36f9fd6e47455ffa7eea3", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "96d3d83431c4c4b1f998e240bb03b7d52b0bf83b43fe0c50a643e30954aaeec6", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3e7c3aee4c812b6ea2cbf3a6455e27d7e10f92b5e3e7099d94c77df37182a727", -"T3T1_fr_test_lock.py::test_hold_to_lock": "4e96a178f6f41e1362670d89a417e718ffed271ffc12b53bac19a3dbac8847bc", +"T3T1_es_test_pin.py::test_pin_short": "24d1cd58a3a0e9a3c762dfc47cecbab72d732ed3f42549a65781a712eb67c3fa", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "774c4b5d5baa51c02fd454bd5a9f33be82eb866fc6291d4f7e3e96747a5dc2fe", +"T3T1_es_test_pin.py::test_wipe_code_setup": "514583c0fbbfb7949ee16a4fa5ffe0d7ffa0e3b5fb035a760a9569793a1ddf59", +"T3T1_es_test_recovery.py::test_recovery_bip39": "103c31122b8ab607fc87bbcdcb62f37f27b9ad168e935216c9688f65c4a52415", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "a0367678819dc2032f58d35d67937fcf3dd9a19a31449644cfa57511add59eff", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "b394e91255b10ae11f519e2c49a1b6a79ec828ec48dd039865ec3ce74d4f9271", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "32ef7d1932d226cab52d046479215ee5ff6d44535d2d2f7271f3346cb6a82229", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "171c6e0dfd21a30f83d8b4e9a3a697aa28cb73f9dcf57afe204be7c3839d87b2", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9346c0a3bb90abbb11b788aa0bd80bf05fe12d78498fcee78fdf28fbd5b3e995", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1a89559131af7eeacffd0e5293199c507f4ed7b4269a5d74247a111ef3bf84ee", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bbe32dbc1855cc7267c7ac92e341a10e92ca95c663838140699779ac498c257b", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8cbe21d7c71acef44d9d4748a7efbb417d77622fa6469f9ec13bf73e915fa14c", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "5169a1ac35a5d3ae5ec432cf99dab2dba52092144cb3745e15788673a2252f08", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "124777d9c4367ddfc220fd2679213e597ccdfbae7409b62d425e6e8863ce2c80", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "bcd9fa327c2951f90de1e30dd4dda7f89b53cfdef53e67a13dbdbf2f92aeaf1d", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "47f9529ab58ee55de2e2a5ae98cef134712d552e3ec01b0b6d5f006a9eef41b2", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "3be76e71e89f25882d867e75b9087e4ecee002f20cbdd470084fb94ea79759da", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "63342ba95ab4470fceac06bd6925a6557963a17e3c5ba6a56a791356f578cd1a", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "ea3733080c0cd1beb569a94deeec616586c0bcc58e119d72961187e3b8308eb7", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "abac20ad4c523253d06dcfb8cca0dbf6f3fc522c4cbb533c0e767ca9595d2b81", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "46f84e9b2b88d4108ec7e7ae7000d8e3e9fe4fa4642955ba3e243cee5ee8caf4", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "6708cae42ad5c8ebfc6fcf11dfa9ef86e761075ecd071172c3798f2c5f6ab359", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10dce76a0863c78385b97f7c1aeca8d75fb5b15a13ff8a4e630bd8862be4d890", +"T3T1_fr_test_lock.py::test_hold_to_lock": "f9ac5932bd293d9341db9ea28d8db67a0da895c4fea85d3923ad7909fd036644", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "6a74ce7c04eb4b26b79b91ee0f1580e1296ebf25750f5b237451e84afabb69c5", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ce9ad70bbb739a124b7fb0e039a7c63954b04609f869c549b4ed0dbaab590c7f", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b4ee17ffa5f236746430884da9fafa69379ddb5c88383d517ce7e5cc1d88e7cc", @@ -15546,28 +15546,28 @@ "T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "c367ba95529a226740fe7acc2c4eb7b8b971fdd7fc67db44bb4325ff721f0feb", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ccef614ba1920f596c45f674c8578194b79e1bb81a6c2d8bf1de7bef88a652ff", "T3T1_fr_test_pin.py::test_pin_cancel": "cd91754592ce51975cd7400cd58984605288ef69cb4aa61f9205960fcb8b38b2", -"T3T1_fr_test_pin.py::test_pin_change": "ed9a4049a5a89e7c93f68b0bddd9700d9e0e3922672c79e246135c40ed320afa", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "48dfa8b520b221d2ecd15e7a9d4b00c47781ae8252dbd69c730d6424c4dbe652", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "ac6eef938e9ab33df5e4fc42910f70694af36419b411e78ddccd4eb9c14c5e36", -"T3T1_fr_test_pin.py::test_pin_incorrect": "55652a3ceb8489c3fcf465c1f28009565aa36190e2331010b0abea2f4015187b", -"T3T1_fr_test_pin.py::test_pin_long": "38d9fc9f0bd43b82c5360343297b4f9b2e1f90d169cd870b68ccb2ddd448a263", -"T3T1_fr_test_pin.py::test_pin_long_delete": "d0f15287c5392209adc0fac328aaa6babe5bb36067e0cb994bd1aa8cb32527c6", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "89de3e4d5aa5c00b52f1d28c3ac576510d2a3d935a180e0ea8eb10b0ae8ab557", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "6bdc49a44f0959fa1abf390df5ff5df2599436479b09c2ce699e43eaf7860e7e", -"T3T1_fr_test_pin.py::test_pin_setup": "11590c588ffe740b0d4a4ba6f8cc726bfed33c9092391747057a5655fa481de8", +"T3T1_fr_test_pin.py::test_pin_change": "36bcf2ebbee822ad5d59befa83ea713cb2ccf218dcccf5a00358899d2751bd3f", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "d1e11950fd2c176b9fabcae9901b1394dd3cead84baf5001c1d12e58cac4e4b7", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "20a86715930b2ff59dbe504369af47067c73b72163aa83fca463782e5d75a6e4", +"T3T1_fr_test_pin.py::test_pin_incorrect": "4be36f9d543237d9c2339a4792d82550a701509b57bb19f954167f001fd7c6f8", +"T3T1_fr_test_pin.py::test_pin_long": "e7ca781c6a921abced014a8517d52e0736123608fba92c99a3b5df93bd5c6538", +"T3T1_fr_test_pin.py::test_pin_long_delete": "e2a949eec59bcb9b878c493c3a132b9ca3ccb488f0542634fc9cacf5b8843f99", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "dc6f672813fe056bb5f41c04771aa3b07829c2d85d260d0dde4369961cceff82", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "e2a4382926f3622c74f65277c6463b9a23794e7335ec01bf8d02d54e32ea7e31", +"T3T1_fr_test_pin.py::test_pin_setup": "553aeeace870802a3633d947204bc5bff26a12316449fb773a005f14f8862a78", "T3T1_fr_test_pin.py::test_pin_setup_mismatch": "8eb4088377c626fbca133e033c4ba7b1249eee4dac1a1cd05e6303a752364d3d", -"T3T1_fr_test_pin.py::test_pin_short": "ac6eef938e9ab33df5e4fc42910f70694af36419b411e78ddccd4eb9c14c5e36", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "c620937e4ab05a21cefb42f226f4d4d33a20bddbb70eface203834b544dc300a", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "b4ed0f7b200c50c10e337dd342edf514cecee91e3bdb7a425f5c09001601a2aa", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "3183879668614125ac314182445687905f8d7c45c5496e23377c155c42c78af2", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "0e39032f63ae304ad5e0106e188b8abcbd8b21060944ff2fcbbd43298863a059", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "01aea704838e18d2d2306d22c8a29fced8105ffa1ea5f1e32dda05ee24694b29", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "1262c3e03d52043abd255fae1df6744c638dc6f5ac9ac78196d4d639e2573878", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "1933417739aedec9b09f9c6940b67fde4cb219f80f4e08db6a7a855972104788", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "a54008b35fcdb1a257977942a530f38467153eaf71940374c0abc29162679a93", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "235a2cc8ce651af20fa09ea26e1cf6213f2df64327ff90c2ed00c1109c8657f6", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f0d3eb3e7606e76abf89d38817641eeafb13e8a698eadea7e26196a20d77f636", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4e0798ce007ca77ff64320fc1c502e7fa9a26cfacd9de222e31371e1fbb9da12" +"T3T1_fr_test_pin.py::test_pin_short": "20a86715930b2ff59dbe504369af47067c73b72163aa83fca463782e5d75a6e4", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "ab58cae76719aba0ecff05ba383f75f99efef7841872a643577baf1c2bcdf05a", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "c84746ac3ce8fad6e887a2d615a8ecf438899c2e66b525ff4cbe3c841b8149b5", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "f09d85c9b162f3cc3da8c10e6f42fa0c88d6b5259ff1d502d534bf3718ae8d05", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "af44397f5e839dc9a65c9391f47591a2ab5d7d5c2bf8a324a269f9eb52ce9971", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "78d86e594af55e001c89880c661699c3926c02a6c703b5bf08b737a9afa39a3a", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "ea5a236302e489b511ab2dbe23c8963e282cbd3202ac0fb1f9b1fdb21ab6cdfb", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "7b3d83c77bccf36e1e246dad034411160abd4c3612fd4b72a581302539696f58", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "632b998a5938a39417552a33ef92d31af4f802b93f566c7164ed05d90424fb18", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9fd8c6e1b63ff6f137ca42b4c5b7c200867a498981fb928c7f9e1d7971b85cef", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f6e167295d99e1902f15cbc0497fc79fe8ebebf48496be2b664e2d51cfdc8651", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "674361d2e4148d149ebc678a5cedc4659e4dde3d2cff38ef3e9486261a0a469d" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "5cfc60601705372057cdc48cb73a2bfa596c586fe3214e20bb68ac6859c54537", @@ -15585,8 +15585,8 @@ "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "f8b3684d2b01416a933a1e05bfe4f91529269bc6ea4eddfaa575cc7890383cbf", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1fec2c810e9631239d1823418c415ae06177abfd45a7e24efc607d152df8214c", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3f1da5b0111e0a220948767be850e97e6587292ad6e1b102e4c98162c75b3b99", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "fe7d34f00e3179f25db2dfc1a0d0e771612e99d0492a8f124aaf5f19e141ae1f", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "fe7d34f00e3179f25db2dfc1a0d0e771612e99d0492a8f124aaf5f19e141ae1f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "cab510ff8cc3aae740a77de9763e7a7eb3abbb187a65a04e888b017bd8f6937f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "cab510ff8cc3aae740a77de9763e7a7eb3abbb187a65a04e888b017bd8f6937f", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4ad0dcc2f8031c36690b2f2c104cca4fa2ee1a14f5e4039f8f109fa01c0ef586", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "dc4919222f78aeda8bb96bd006d1059d4c845d63ac0a7328a55cb591ba48ac36", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a62ca52204fb4be15277909855a2f257bbbfc3dde1c08e2993922725bcdaeda8", @@ -16548,55 +16548,55 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "682068a5b4601c7fceb7497442710aa0f5e6f5d31066a414eadfee52db971616", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "fef362201100c0d78b4f5b10f08c04ab0d5e451f1fb522696729c71015bc48b5", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "800055844e2043632ad50f59c2ac388835f26dcb830e0bca7a2550f640d167dd", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d1defcd2bad27e90a2a56706cc64eea317937a255f12bf585c4d7ceaf7aafc88", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8ca2284575a867d8db5d7bf02ef8f945eb537bc74cb404a0c8ebb204f3245e18", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0723159c480ea641e5b2b69e00f408a6cb9bb87c1cdd2c78772c29d8e4924341", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "895a55c6543456c6119794d68513045cac0ca34a68dd7bfba74a25c119dca06a", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "66157f64b23b51056f573267704f0fcc5baaa353a87b9a5a459c952c3dfc7b0e", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "a75a202ebd245fdc83fc317cfbc173ede05b66cb10d79e5fc641534c03cfd1ce", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "82020711ccd4c2a0eb291c8dc9196df31546449a0538970699d272bd5d1e2420", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "125e8aefdb215f89e99dc5e7599ba216a691971a012ca8f99713fd156f260f56", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "0a1731155077bfc0009486ebeff6b71c9b4db9fff5aa911ee5244f496bfe8b38", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e5d52e78310b4356b060c48c2b632e2dd4e99c1198752788301e5dd784ba512e", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "746d0610ae334ddc75dabc688080886bba6077c1a1da167eb029bdaded81f4cf", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e665275dda541c1ed0b43ab664e4c74597415af28a7e1e7f2c7486fa14b2ff50", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "3b8f0983892e73dce2dede9799b6b0603999acaf401001de2455c513ef9caaed", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "fa00aa7ec474461302fc861fc5f9208f8e61b9f1eeaa72b4ec2201b21286f741", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5febd24c877ac8c2ca389e51ae7dbbbe7a4e4a6a9a6cfa028d380d0d93365509", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "a75a202ebd245fdc83fc317cfbc173ede05b66cb10d79e5fc641534c03cfd1ce", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f00cbcc886763638c5fc8fbba276d084d488f0eeb24c43e8a4d9ef9fc46c9332", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d8613d698241fa371aeb40c21c105fcff9c4afb55ab4adaed9682ea0a2a46c8b", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f8a94b2a2fd9acc8344a77eb78312d33e1f27d95ca671851957c0b30042271fb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "e62f856407e781c907a3503aa8229acde436943e0bf041ec2c2fdd4e5838ed46", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7e703c1f0aee9ae9557a79130be08b86374c9a2f4c08c9893494e76e1ddb3e8d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3a4f349c4b7af5bd10235ad38f994f6ac667399c0561b32b2bc8dac17ba7e48c", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b44ef0bec6ae76af9fa33108b2e171167326113b60a4257bf9cd7cfb8b70b07c", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "660597a325031fc59a84fab55a69aa42a5df8d526a01ac9a3d2edf67126ba09b", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "39fbb9d8ebd5ef7d1722748f70409d72274d7dc21fa9b49613e06ce00f391f7b", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "31d76f680ae7dc46ae7e490a2b82fd4cec2c9af04aea8067fe06551a6c7b1e87", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "414003a858c0d081e53f0f20a56454c220a5ae07e54e2cefe0d51407c2d0e3a3", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "fd413d7b14729264fffccce60d37cf453008d44b1ada3939fe36f7996598e923", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "c93d09d47220a529571b6ba6f8b03f9a84ac7c793b526ee1c10421619a37f2d0", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2535070b7d5e3c868c2cafefc17ef1a63f917e39ed609bc2c1367cb1082d59ce", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "72111105c28708fc346dd8efbd71679ea96ab184f5cd73416b167743f0eed083", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f6666732afb49cc122ef2307fb93cceca5f08e3e4fc6e2aed9f0eee5551ec47c", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "c84b591962ecbdcd1a3b4f258febe906db01046d27b9184706a519fadcd0446f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "543166fac323ea641a8e9b67ab98126aabe664cd2be72f505ec14e4bbb1c86eb", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "5bae4a55a03d5637d110957f096d0175bc2b063d049338e44cee44e5270f443c", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c80205487a42c838f4b84da10d840ebf7bb224453450a70ec5d578568a495600", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "46ca8405675b0f6a562dcc773c77abf1192f12a1e5054545a788101739a7b925", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "ddc01d821c8ed36b3b7d3db87c4926c13f9be1809910ac5757866cea60ba03c8", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "29132647b4f82aa01d2c737f7c139147e228772ef440c025a95e5c76c5b3e8d9", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "03617aad8b4818c70b00bfeaa3e9226f184b0e07a6954e55d80bd1d279b0ae5c", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0c0de61042156a0989c2d0da9f37773c15a14a33d1bf6a1f376e61c4216468d5", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "1c9b682ce66a2b6e8fa326b84e8dd54ed5b2289aa0723bc1d3ed12fb25b58709", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "f55ca3cbc9adf9d9a2121b08e3116e4da082ead6b892a74110b2f5ff7662fc54", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "53ecdc3dc9ba7598c005e71ea9463e7782476367f8038f11eb2d965334ec7890", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "fd2cc76ac0df8249da66e3102d3bb22629d088651dea93634b8b90855b9d3296", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8c91b25a33d2e1a87ce3b069972a0f914509b8d8af45df5f6a0086aaf39507cc", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "585779d2267de6c12617e30a81b329e5a73aa33b47c370a0259c6d9526ce9c8f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4a34f639e0a6ac6c969dae2d23a9baf0fac4e3be9a0f2da482da7ebfbc789967", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "1a827881f66e7345bdadb920aa76ed3edef2f586e7c88e85839b81c0d137a0ac", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "357b7c0032ae4af11a88848458376e751f912eaeaed20235af1906e55571ef76", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "127446a5c7b705e19c2b2e642243da87c6ead65d499d3bf242eb399e0c069d2d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e416773862540dbb944285e27a60cd2231745ea8620280a38845145919636710", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "51c68ec78fa1d9c75b2b07fc8d6d4e7558aac516f611869cd5e54af9734d110a", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ce99274fb90c2613f596cfb5d3cdc23ef2bb700f89984b8abc760a94bc326725", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4c000ca654f4ac17963dadd49e4fd216bf835f1c026ff1a67fe9d90d66f4260d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "87c47ae29b6f30515695ec866169d2a6f3b6feeab70cea247c3b5dd0c88315fc", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1bf03de29a24ec5375321c86da5b070478ca96b967f9319fc834ed4020e3ac7a", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f8d670d04cfb73e6a850a9c393c50780169f76a7e5cdf69e8360fb226a4c73e4", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1b8f765a75803dd61440617d3b9e631110ded5fabc453099e5460b9d757ce515", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "28a48ae85931a1eeba4ec6896e5e0c93069c0b13ebe4330e8e5bee6b73ac9ae7", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "12d95c641743c888542e0a9464aeedea85ce063faac31dfd56149523acaa43f6", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6e7206aa3b4146e51569b7d1c85979c1e8b0a1fc7642bfa08e965bb1d2d2fbf9", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5d736a587671b214fca8840debe212991ccb63c79ecedb6bc5a2e4d5474fadb7", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "322a8a8150361203bb8a4eaed4ac65c79b6bba2ea5d76d49249f57811c1acf34", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f02aef6fec883528e51e2d2b73955516f62d8952bde52f77267589f049b0dfe0", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "aa87c89710128a7064b129a07ccdc717857026963a194c0d63831257e1f66b69", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "98c9c9ead1a0c39e2e48292697b8cbeb5c238279437d3a6c838d2e853dd851b5", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "a941669b828e4e740354aa0fe5d45852e48f40e692a6bfe7b2c4b3b4cd56422a", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e17a6bc95b6916382b398a6d3cb94e2a8da12232504d5fb00a72d91e7eef0ca2", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "38033f7db4d0744691aaae9a2c931e2789a7671226be90f5a3070fcbdca6b358", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "44bb6451557137a12e1eb54c67900758f9ac72ace902be0b36623c77c04c8131", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9cdb5e96d3ebbbd676e9353d15ddb5965322e97ff446f933bc1bb2298eed8374", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "153855e747dabbce0f3102ae71cc227cecf38f3e54f8305ab68a314212296663", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "347664c8a959bbfa26801955fea3c0b8186e16968d6261fc0df3566ac9f82610", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4e4801a23a5c044003b38a9026aef5dd40f8169e69e7357e52436b57f2585e1b", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cf219892d7fbc81a74133d11cad89ad8bb73b08406f7d538b889ab9ceb0050a9", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0c2a71dee40a98e2a99275544dc7c0db4554a3eef810012aed3630fb058b4243", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a49bf466f90e72e0d71ee2dd04c6e8fbcbb6fa4eca0024019d940144e265c440", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "fe52bb8a9e6ca43279d50a4218b25515ae770ebced43bd8c478ad100b15d79d0", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "08153566d054f2175cf7bd6198491b11c521d6d1b6c65d39043f1cb125ae1cce", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8cbfe6fad036e08dcd8a1c386362ca49c47624f2e762e13c4e14a692c98faf99", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "30606716bfa4cbe5587aa5ff3b77c865a1fa66a81ac4e7a8a436c4d4834264c4", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8725ae117bdb64c97b2a7df3d3441198c9546609e7d6c6cfd913d9cda28b840c", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "93be6a9c86860f689c45c0b9931f2f84d4086303b74a9bbd94484229f8cc3f30", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fada90b165a3ab1a61d7df1b845914a2024ca0d726129fa0443f362ee279cba1", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5b19e74308b3d0247e2a3f09fdedc145be6c1206efd790727a5c1e456361776a", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "13326c8c173eece78043b676919574bec1902ea7857cc3223f56294aaca7f9ff", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "786a4ff04f8fc543645eae6ac33075a08c32efd3d92cb7b95f5746152902d149", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "388845ea867ae63588eaad720440148f60a5d2c0a29a4b6831e9d399a8143641", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3d8bc8e1613153a51b1bf2afbfd616b2908e6ef45ff2375251fbf3fd92ebad1e", @@ -16738,35 +16738,35 @@ "T3T1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", "T3T1_cs_test_authenticate_device.py::test_authenticate_device[]": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", "T3T1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "b6dd4d2f8bf8f8ed89d970464e5a2cbb53bd38df6e63b1dd3ea0ee5a2673aac6", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "3da97abeb071182b00ffaf062941ae9ca07e2efb0cf6c281920f55d1ade197ba", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "aa9fccf00ae19b3840e27121614eb01567924b1b92ab620215ff1bcacb6b7519", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a1b01155693f529d2e01c7760a0026db451fb0498da3a65feee4fbe2dda19f93", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "f9a4b2473469c019830305428a45bb149778ddde909f808317bd58238c497daf", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4956631a320ca45870b51846ae357bd7622da606ff4100575a151753c83d4d64", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "c4b7db741d8d40d56d26dc1a46acc24ff89f64cbcfcb3a933b151718cf0d07c7", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "18175d119647f642123b09c6cc16fb83ab8899a6408460aba4a03ab13c332113", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "cef73d816d890a17ab434edd74c8d04692b659fff04c3940889900209124709e", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "043ee42e29c12936fe2a2912fbf90a59805e75a4522928b905d69d27c77202dc", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "043ee42e29c12936fe2a2912fbf90a59805e75a4522928b905d69d27c77202dc", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "3ee42e71e5a6081071b7395a5e4af36d2f6251392ed943ec537792b69e915c86", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "9f570d77791e8d5d86578fcc8ef2e7038762995ac5d6030f4e8f1869115edd8a", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "8d0daeb049e66ed75b2c79b2577167c22f7ce3aeaddc01b44040ac46ca127c44", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "1d8506385f937263eb76152dea03fa42f35d1b635c74bc4d4dc0c8fcdcecc2b3", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "3fdf2ce5a18718716d9c24bebc255a4cabdff5e37ff0dddb7ad4d772f4392b09", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "9ccf2dfd30ef5609a1e6793445ad2b3f86788af61c53e8ded5e9b76b775c128e", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "62822adf7ad9cad78c8a9b9e5042d068193bfb551b16fabcddca1f0d72bf6e0f", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "425818a7adf15df44fdd29e25950c0232a6d054488071255ef4eba5001fdbfd3", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "fa7569c2b8a4a84b6b1f3acf793d6c119cc7605111c00d6fdfb4d1cffd1b2979", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "960c243015cc97acc98e1ecd4973f433431d59c1db4c5e860ecc35a98337c876", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "960c243015cc97acc98e1ecd4973f433431d59c1db4c5e860ecc35a98337c876", "T3T1_cs_test_basic.py::test_capabilities": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_basic.py::test_device_id_different": "b84f88ca55158174b5c0ee5a38695f9572d3a0a2477133580ca0b366ba446dd8", +"T3T1_cs_test_basic.py::test_device_id_different": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_basic.py::test_device_id_same": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_features": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_ping": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_busy_state.py::test_busy_expiry": "91b80634ab79b0fb8d5cee97dc3b48eac93e84cb05b29006de3cfa4ec00032a5", -"T3T1_cs_test_busy_state.py::test_busy_state": "01eb7111cdf2959e84681787a277b087cafeed42313819cbc71b076147bf99a7", +"T3T1_cs_test_busy_state.py::test_busy_state": "00d3252614aacc75f8638eb3e78f2672be984353957927992da72d6c036d2f00", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "e9d2f819046fea277edc6d1d2590c86d82e1e7abf31e31f3afa8d549f6d927f4", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "e9d2f819046fea277edc6d1d2590c86d82e1e7abf31e31f3afa8d549f6d927f4", "T3T1_cs_test_cancel.py::test_cancel_on_paginated": "aac60a7786841d7e70f40a98b58f2b338a81b16f1831602564755df9a5cc45fb", -"T3T1_cs_test_debuglink.py::test_softlock_instability": "ba4e25494ee7abaa2f48fb1f76ee3927d1c4d0604c4f2a76a3c42fe021fad52a", +"T3T1_cs_test_debuglink.py::test_softlock_instability": "9cb0d51aab3ca41d6c071356e8d2cd24413766979879a5d13abb65489c9928ee", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "b3eb00a0ccf0406a85d623598121f40bbcaf37f097d34780131f600d6addad9a", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_language.py::test_error_invalid_data_hash": "75fa3a8df587223b856b112a130efaab476c707a2dc36d9540915038e534096b", @@ -16781,7 +16781,7 @@ "T3T1_cs_test_language.py::test_full_language_change[es]": "a36a4c3246d5924841c1ed00f423ef255e4db169f8baa9b9b45186c1fdf2519f", "T3T1_cs_test_language.py::test_full_language_change[fr]": "7ad0e0c7d828dae9aa96ae3bcded96d9c9ef428404f54f20d1bc20425204758f", "T3T1_cs_test_language.py::test_header_trailing_data": "4f31bb0aae025bc89cdd85c64432eb8fd1687abf261102c6e6a94d7e9bfaf4c9", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "7177d8b7d1ce8e35fa8981253bf7c53851964ec9fa7cfca67acb77bf6cc3bb04", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "26f6642b48b6289ff3bb5fb6e0beb8e6681aeabed0d0df2b1943c8036bed65c6", "T3T1_cs_test_language.py::test_reject_update": "ded5f116b38e6f0c64cacdbd230c33d061123a528742a0b11fdc70c45c4d2167", "T3T1_cs_test_language.py::test_silent_first_install[False-False]": "4f38508888503bca37f7ef083c5aa8572bee6987ccc1fdca5fbc71d1eddcc086", "T3T1_cs_test_language.py::test_silent_first_install[None-False]": "4f38508888503bca37f7ef083c5aa8572bee6987ccc1fdca5fbc71d1eddcc086", @@ -16791,15 +16791,15 @@ "T3T1_cs_test_language.py::test_switch_from_english_not_silent": "36ae0eec30003081208fbfa3668e3974897b032dd1e407e33e708c73cfa7f207", "T3T1_cs_test_language.py::test_switch_language": "fddc8ab027e570d255471cb98cd05bfe1b9247119e8fb9a518c0866f9ec59f56", "T3T1_cs_test_language.py::test_translations_renders_on_screen": "c859df8d506ad6ad5f7dfa0c333196cb3b0006d57f120812934d5b2ae3caeabe", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "dad9e9c7bed639e3d2830d089e6e2fdf363abdacdab02d8c983a339fc95fee9e", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "e6d9d3023b56ac267161df21d3268c67f34de0c20eebe230b22143391e850029", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "b4b8cb98761cbd656647bf855cd5226c472567c8c971da8e4e57baec5a4bb9d1", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "63b7b7796b05429d4649049765190659d0d6073fe4e98ad34db61acb5c2ec4f7", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "2a0ad07eb9f07ff7974d3420c8e71baa33c863f1b0915a02b4477309495d6ba0", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "a66bd38dc2a40f9b4098ab7a67dce5a0052d6029c3eed198300b30479f3c96c7", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4741416de5b0ae9aa27367c5a7f9d5f7a3607d1323a5a12e2709df429dfc3784", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "e7c911ccd219cdb3f1e96bcf4e13dcf4758cc39b7decbef22629ea154d2b78e7", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "493d179449d3673ec2c3b965c4d3a6a1fcee223c4202cfbbee1ee4a3a44bd715", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "7acf851f56e1d40c6eb435ebb6a247b0a690e45656013f8564bed60816f72ac7", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "758761f417b7df9472c37475669bd3da74b74aa35392a3fb49999ce4cdb794ce", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0eed526ac2842f7e35e9c2cb5684d622178b696e1c834661c62224691a7992d5", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "97a766b1537dd43d112f397be6d79ebcb05a6d1f5226b976dcc05865c97031af", @@ -16813,61 +16813,61 @@ "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "c9ca005679502266318da239e432a9661bb71967c41455abc9a78ab14ab16588", "T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "685eeed8fbdd9c50825a6ff98eee59dfa9ac666cb0fdd2e11c2e1da97e3d4bf3", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "19c98bab39efc1f1e3b449443cf30c09b4f2483615c0411f00ed2523c4a7fd9b", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "41a7e651e9d318ccb2ecf4a19fee88d13f8b690dd48f37dd8b763ef34ec35775", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "481965ffbd7dc36508cc0a857ce7593ac9c3df9f64138553d9b91411466d298f", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "9f28c577012418514ee832fd138670aeb4a440f7edf5e28d62dbf19f292e9475", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "7621d31fb6824c7c333a27e0d4a243c756eec5e9fddce8d46abfefc545317465", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "2b30cf9b7ad9a729821a2c5cd1efd9569557b7847236bbf44a3f70629f8fa216", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "507744cb4159f06ab696e8dc16c259588902c01591853df4a8801fd9105cca0a", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "18003335fdac481d669895a45b9cb3b5ad751ea97a76dba1c266edcb3dea6b3d", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "5a28965408ff37f5a5af0ec4d776b29a7077ffce208b43ba6ba304a1273dd5ec", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "2518c78b8e659c4d961493ee48a5afde5eb853d6ca4946ccc25ad946e814a976", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "db6cdadab997ec8c7d01f08362d6cb725c94b992226edd5c2db8995a482651a8", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "3bd10fc0524cff6e65891f0b89d874ddb3739887be07f788f3e4a5a9d5b97e7f", "T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a596131e04b11288252167292f6611c4f327a97a7fd307661106932b99dd8e6a", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "bfe42d8c53aae8bad91eb960bee40d3ed370136445c610792824e9713e1d2da6", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "0fe3ce89854a17a8ca2952aeda9fa3a6912f4742d3a5ddc85e4853c064225bf1", "T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "018490d5aff095b07a4ce2a2198eb6577e4209db1885271b0256aec6666c54c7", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "5a3d34642ab5a35374ab04f3a57b7235a3fee7c9fe8a34ed9e6e43242a90032d", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "becc8db35cd734eedc54e0675cb09693f7fcdbaf34aa2758099ffe8aef111f29", "T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "b1b8f662a839ea49f8dd7477d3d93b0b06a89fd54fdddb2ad1f999bf2173b079", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "a942abeb2da6b93256417f0414c1cbc30f89c7d5648b9469fa10d4588f3fad31", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "702b5bbcf01c469c217b24e7540390423359f6d6978e0de32eba5b6972d241da", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "64f920bcca3718f1b1cc9d41e9f2a715aad28768f42d940bb33517be9da63727", "T3T1_cs_test_msg_ping.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "2780a4d8692fce49d872ef3c4a37d7b10d5221ab82a5029f3a65c174ab0d8c52", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c7921ffc03197b2ce0dfa629b554c3fe7286bd94442fcca5f38ea4b383c70c8", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "929aba5a5e05532e2b311b90e1c3b4c5793fa320d585a6da68c89f52d90f4a9b", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "8dc432b88041610438ea78870b33e66e0203ffd814ab011cb6d7b4389fb36be5", -"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "b84f88ca55158174b5c0ee5a38695f9572d3a0a2477133580ca0b366ba446dd8", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "8da52dc761d4eacb3a863864b948d5a572980563118b456527acbd05ef126af4", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "a6f842c917efdd62369a4f911fd5061d1e39c5557d0daf1b7af4a4ecbaccaa00", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "59c3fe698e1b61c7d8d58258764d80bb41e94ef248688bc4ce287e3a5cbf9bbd", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "f4bec18c2bc8fa5b78154cc654e5ebe72b490672b2fe85be9e3d835f9f6787f3", +"T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", -"T3T1_cs_test_pin.py::test_correct_pin": "3e17e349332108d9d3080bb91220025b8c455c626d8a85e382b63dd7fe20b57e", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "02bc0e025ab2eeb0ff853de9edac4eecfe9e500597e7c9ab96fe8af4ee6b76cf", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "a2af70b7fc7cf128d99fc5728a9833aa5dd59d6a98b9905dd09cdb4dcac33e05", +"T3T1_cs_test_pin.py::test_correct_pin": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "4acc1ab091ee698dace327f93d788e6cca155a5d10ed1e9a03ba66d6b873dfa6", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "d320dbca74c0a235ac9b70b4f56a5024d8680f454bca3e652c45a91d166228a9", "T3T1_cs_test_pin.py::test_no_protection": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "abef0d0f6e0d6f1dd56913b190af52dbf58305a6025774d02ba447878dadd1c5", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "f5fe04895e7ec1dc4d640bca5d0c147b997fc2490f572e1b2e51ef481409c420", -"T3T1_cs_test_protection_levels.py::test_get_address": "4aeea9cb039a3bbbe402dabab8656b1be42a7fa83b24cccae1786c312c0a2c8a", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "fbe1ad00a94ef07e7cd4b0a07e243b0eb123a48305e4271329fce0885ecaebd4", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "4aeea9cb039a3bbbe402dabab8656b1be42a7fa83b24cccae1786c312c0a2c8a", -"T3T1_cs_test_protection_levels.py::test_initialize": "168d01fe57fcd2293d2a65f2d1923aaa1909289284d9432fc5a33af1cb6e2b05", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "43ccf068febe7badacb4a6c3023df0c6743398cbbf2e42dc0243d3a3acf7f622", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "7296a64ebb980961ce61d900de6328cdfc3c88476476ded20ce0b3701d6985a2", +"T3T1_cs_test_protection_levels.py::test_get_address": "2aad1f3d0ea8c1a83cb4a855ea2b95912ba8ee8988cc7c1ddacf86ad91ce89cc", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "cf16c164f538d7a919fa665e83bb9f15ce9142ba22f67fd4c213d2a972a96883", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "2aad1f3d0ea8c1a83cb4a855ea2b95912ba8ee8988cc7c1ddacf86ad91ce89cc", +"T3T1_cs_test_protection_levels.py::test_initialize": "3c2a36752f7ee563109512fbbb0eb1e1c3408217d651fd31fe35b51fd3d4ed62", "T3T1_cs_test_protection_levels.py::test_passphrase_cached": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "9fd148e5d96f273d33fcfe80f0816882bf3145e633907f96a9cf9db8efde9ebc", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "391fbf5ba4c4f323513b5c7c4b396ee9f4fadd82d3a359528ce65de6c8da7bbb", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "41c1e26ded6ab921c2cdf6983ba241d7ade5f4a6c6f44599153d0266dacd5279", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "a46537de59cbc20b0840aa1ae82caeecdbdbb37cc72182d27c85f0c639c9e20b", "T3T1_cs_test_protection_levels.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", -"T3T1_cs_test_protection_levels.py::test_sign_message": "f251d182c9b1ae92ffd76f4281ebcb0b7a0d6c3b5d2a620371419c083f5bf345", -"T3T1_cs_test_protection_levels.py::test_signtx": "0de6c0001ae01675066413efbb15be3e738006ee6d61702d2b4e7c074a4c007a", -"T3T1_cs_test_protection_levels.py::test_unlocked": "959536cd2c5b224853457b85f3371b593b443587ca367c6fa76e78b8f4c8b65e", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "bcc541d56d5c5d4dde93bd221790438711b42ec0410f8ed0b35132ca2b5d5099", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "9e06966de49802183c98ac98650290d353df16581638993b75aec7df55fbe466", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "0beb72dbd8548f47613041acfa125c20ef4af2349f4f5dd72f77e49c7a5766ec", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "f53c4fb776b02a1b054f26cbd0a32eeb3fd36bbee62168c68069e09e4884072a", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ec457b935f0eb6c44eb8b9c37c7f6a6007307cdede6bf1755391af434cb194b6", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d6fac38fbb412a19f85179adc6d01a5c78dd04991583e8f73858f788ff1f86b1", -"T3T1_cs_test_sdcard.py::test_sd_format": "7faa569163f0a2f3dbbbffd93983c8f0c698ea9386cb977f2e49a8f5ca49cb40", +"T3T1_cs_test_protection_levels.py::test_sign_message": "bccea45a5947071e9cce6006fa6f10fe32a8a29fc3a738cd19c43101877d9d51", +"T3T1_cs_test_protection_levels.py::test_signtx": "76247f67a3ad91e8da19e7967e784a407f037ec93efdcc268f5db77dfb7b5e6b", +"T3T1_cs_test_protection_levels.py::test_unlocked": "5f5c4d78bee8ca051ea26ae16166abb712c5b68501bbbcdcf37a5bc3cea1dd1e", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "bc9e7d5ca082a1e5dad7fb197d71d05a9ef32f22f26e6391a6f9c85b7762f99c", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "0ec26a0ae34a313f3ce00dcf6dea7ac25f82a8fdbcfd0cf2ae14dd23efbf5637", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "5676f651daa93d38a388175f7ca792e37ab8fa31fdf453c03c4274c714063b99", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "2095a791c7ef9969e28ac2880205a27539555d43a32a1b7b85f59cdca5467856", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fe943b937114ccf533f034b6edbca8240bceb194dbff999bb033df81656d07f5", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6599822efffe807a0e137c566e6f57f50a651f75f9c09885fed6efdff0678ef3", +"T3T1_cs_test_sdcard.py::test_sd_format": "b79871a4517a2140653dafd70f88fe39decf8ad3d6e9cbf16ea3d6885fc7ef88", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "92d48650708b824b24e6c050b75fa5f5091562b822f2d146419f3a2a8b0c94df", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "8759e62536a3abbf6ce7deff918d257db593c2b7761db3d155ad312e31341368", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_session.py::test_clear_session": "c581d88be0482cf532f0d7aec70c3bf2cf880e14aff26298c995b97f6d830d8d", +"T3T1_cs_test_session.py::test_clear_session": "3504723301cc5d42e7b3963da5114b76b7129ca5859c18e0a45be0010ff9bcc7", "T3T1_cs_test_session.py::test_derive_cardano_empty_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_derive_cardano_running_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_end_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16930,8 +16930,8 @@ "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "5c341f07af8ad9183f96d46c30bcabaa87ba1321331755381019f2220a2692a4", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "bf7ca3828609d2567341a575140312089f5f7e3a44653af95dc42ffc53a85752", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3a67b3b1d921e8dbaf5e22db1e287dd4866d76d6b0570d70c511a6d84e1c03a8", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "f636fb444059e6d40be1cade66ea261e0f035d8c47bd7d8a000b398bbd6cefd7", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "f636fb444059e6d40be1cade66ea261e0f035d8c47bd7d8a000b398bbd6cefd7", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4a6292817cccac96a2cfe16318157ddb7b5d05c29fc8ba077490fc5e00f68784", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4a6292817cccac96a2cfe16318157ddb7b5d05c29fc8ba077490fc5e00f68784", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a0e2f4934a27a9c1108607d1287547eed5ef166e53c4ffca719c56057cc6fd44", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cd514eeb3d391dd75ec906812ff8ef9b1e204e270d0bbfe5c623376e38167120", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "46680442569a65b80d8e5e1ce0c4497aa8c6ae474739277e46c96e055ab91080", @@ -17893,55 +17893,55 @@ "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "36b4807c484397d3138e419686213f2c0f85075d6971bd0ad8bf1b626ad37a5d", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f1137505a21f7e54ebd3dfa4283b6b700cb7b70fffc7853ad7bf6beefb6de852", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "16de73e1e9e3534a8e5f29ddd3f58cf9c67b1401af796e0c7fc9b85e5547966c", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e6fe9c3e8d1b7da78a18c9546a85aab8cd337062af09d9d4050b12ca06a10123", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e1790ea47461f58d75a30ab3f1f295ac006e43b3cedb33a1279f263635650654", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "9be5a7cca82ac8a7f5c5309f9ee4646933e8866c3ffd62968f79cfe928261c2c", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c13b1b9cee0c2b3f5f982722871aa871ccf27f65ae50f88beb8b6d26a3ae30e5", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "0d990d1b73395eb6478cb6306d651dc03561eefb47ec6fb625caf16fe1cfd5ce", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "f943e8d71e09a442088b567fe167c1e6e7ed4be8da304a51340cfde5925052f8", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "95460e209ced57564b07a7fd4a61497e917438a65968b42c6eac9cedb41822c5", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "02470916906af97d7060ee8e7facaa8ea51cb32818d4fb2f6c34985614dc8853", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "39371319474fe0e0c54d4033937aa6837810b695231ea52b2ed54a9239761fb6", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "361a889933d1d1cd214cd1c8e7fce11b03363c66e06c4de523c7a6ecbffb454c", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "6f45b8551e7551ab7ef885117610b9497734b23e48a7ab57f631ef8dfcd23f30", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1e885897ef74c2d6d19bcf56ce046c9a4102c9b1e6d56acfe23904e7b9600c7d", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "0af94081b97fe02b63c1be8a84138ab82012f07dd5be2e9cc8595c80b3205b42", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "8b3217c3a93edb13d91672d9d0df0b58e3ef9237203ace9e192b59dbe0e71bf9", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5422aa7c5196208d8586aef332432ae738acc3aaef9e8a762f1cc295e75130e9", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "f943e8d71e09a442088b567fe167c1e6e7ed4be8da304a51340cfde5925052f8", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "eeecc58a09f5195b53f249d4e795a51794f80d33a8348be6903e189ce5ee6968", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "166b2f4f97b6891fcadc54399308bcc5eb960973a747851da9a6ac0a1ddcb628", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "31d928bde678bdcfe068bd6fbdfafde389aa9cd0efb6d48ff8543ffd459a5b93", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6da4298343f5eba9b0c20abb4694747d402886c37a3a0e25abe67d9c0b14d557", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4b10d2185f0c74767170b935c9eaa12e5a49a6b9329494ab7167a4bcb4c6c8ba", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "7bf775c0d597075ddf4c74275c3639ff881f2118cc9b3eb7f78e63c0917ca817", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8a15fa524dd29106a816ea0be1aba0cbabb0c5b56622b9f9c83263b56de5f975", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "5d5bd189f86076572c646e3c0286cd8331b0ee0dc79f4424b8bd5c51e632c3aa", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "0826a7f8f1039b8e935ec0559d54ae65eb411063f698c7070c836cc308738606", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "745b55318c1c5b18878144053305787e6e57c5f5e1fa7f7f06b020f377083f97", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "29f656d8f9d43d008819283bcd28e4b6fab8351b1ba561c29fca95ed90a405eb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "113f61ce0845ddc4af4204ec5ac19bc28bedf27c4d37b03cf048a994d6f64328", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "0222b0b55c79114b51362241ec6482f3b774cb1d145fac5a20e96070acf65afd", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "b8d3ddbbfd893f91c841d5e15f856124504b8985ee897234053acc83a5e7dbaf", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b8f4920571b5c692442754a5dda7ef74223c9cdb908a840ac7d21eae958941c2", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "d0bfdfea84e93f9737e78639f322ca4eb20dde34837867f2147fe9c972097684", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "61a62e5ee63809c145c2670a659fd16bd227c48553815e5cea991a0db13b7c28", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "3ef692d11653904c66ac545ac7629f3f8d1eaf159a96306f2e6c4adb733367d4", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2a7d3709680e16633dd6c72dcf42390f1379131671532f7cdfa9cf964c66126f", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "377bf2dd0e80f85a5b69ec02f367f269fc93fadae2a5a1466c2f42cbada30df4", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "044834494e4866ee399944037b9c964c8458642bf8517773c2c0aa863d6567b6", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c1bb030a0fc81d78a99ba8c8d43bdeea6d72aae147a99996c72b0427dcd4b247", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9e2a9c393d9339e7e527409119cc26681206357285c2208994265db494b7c505", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d65785c6235afbd7c786a37d78ec3c80bb00a5203d2ef5a5b351c1e286992ac4", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3a83bc0573993dd1c11f8fb96aabb6ea8e0d5b5e8d7b45e1b90d2835db87b964", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c3968493f389892f04f759eb5355aef19eef4ba99fa0d371e7d175e7a8064e3f", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "25887860a5850edaf27c352ce21a158319c69e53d09270b9ff7fff1e8e5f8088", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a63f80c2ae11ebdd91d35491bfe358d6bb45f92302e56bc2cd63bc2a0c646918", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a61e9d0e2b2907698c9c8f0376f093cc35dd7f7e93d0a79a0755474440bed58f", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "693fe8c22cb2b7f2687eca4d6b618e529a7b67a33cfeee4ba4dbf9e6b077a866", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "1da5b40f51fb1cdc215c50e888290adbcdfd30f03bbec750a57fd3e41e7721bc", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "7b72498c0aa5de98ac03d96d99a2425d1a471011365eb41d256cc2c13568ad8a", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "2341791331c13eb184688be5b97d8cc67bad6e5eb19ab69a7c98bb8e0bc107a9", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "72f83592e7206cca6c5234d55ccfc25399462ac3ece2d9082456090e81b3a748", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ab422e3b1286042d9e93999d272be669295687cae8cf856a9f2b12fc5322fa4b", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2bd1fc3144eaaa5f0a11675f76918fd90d5c17c68e810f7bca4e213283b6798f", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "ba1566aafa61abd3b8bd52e5a693cc2fda6e67b01ad3698dad215ab23928f457", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ccf6973ec134b3fd5e335fabcaadb67d1159c3f4eabf00f5177db47671883870", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "5aabd4fa7147adb936816a84f684680479748c07465a622508afcce08f9bc5a4", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "017ec81c18c97892c24e3c05daa9b7b1bc13b9b38624aa60e0529763fdc69d89", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e8c5c9436755db6433df43b487c3f13b43c434a312a7b0cf2164bb9dbabdbada", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f989c055c5ac1bb0afb3db413cd4cb029c678d5ab0358ae2494d68cb5685b7a3", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a21b8a0d27db458f9e0344e0a24c099c34ddf0051862335b392aab1a1943c278", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9f9735f7afe993f250080123ab2ce5ea2f55da031585eea4260d44591d83dd78", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "279efb64d519ac1aebaf3485e76b64727ba981dfb7277ddf45a017b6aaf4faa9", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "58f17ba36783ff77ffa052a953e75b9b38ca9661381f5843ed9f3f2cd501ac94", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9e7417f3f9d69a8c380bbe13c4c76f91e736a77a86adcc40587ca4c1283ac1fd", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5f6b4790d83655faf0b5dd79f682d7bd9e356de53407f80575f13edad7a683c0", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f5cd359cca979995ac5b43750b9bab0793ac0a654e00a436ccc14f649f902683", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "cab0fa6942c9c89457e9ee0103b081ba10051f440fe02fd9ccd13fb47fdbb914", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "bea40fe3d7b9c84d082b8cb3ec45183aef9d3116d69d2fb611c82cbec0519d57", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ddb4ccc547519406ad753115bfef921c994158d74a8b1cdc2e0dc24254ac360c", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0f78f1310075265e2988fa9950f6df87de4d50a438a435d821f5224f1261706f", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "fdfce536d25679937aa5b5bb14ae12e2f7b42b50e747664635e6d6ff1e93f7b2", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "377184ec7939bbbef98db1386aad3198c1279c7ff82b7d4042cc7fb632f75fc4", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "c3b981b057211d2b07c0fb40025cd6c868664b1e900429d7981ca087d07e7e3f", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8d274708576f2bcbaa1ba2729cac6788dfed3b2aa77c6914c9579f8114001f51", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "d7d3892edf3d02c86da7174b094a4d41546868554da98a0ddf468c4931cf8f9f", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a5de8dfde0d198c28acf275f2eadace675dbd9d4e520576203e26bf828c629b8", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2c9c382723eca89cb4b76aa3e77caee6f8cf4b2947ca1dbf4b5d6af6448aeec4", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "aeb225592806fbc7bc38ec85f5d25682acba3829de94f9528c3e764e11b7fdc0", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a19cae90d66983ef2fce03454377263f359a7b74682349ea1b08d5335540c0a3", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e560f2712f7f20b649595c8479141d448f6608cc10433f87f2be28615989df8c", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "7823e4600095e72df0f4420d9503409e06aa2b115b9c6ed9c1c1b05d908205fd", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e6f1ea7063ea0b52e8097bc2b2c1621116a8d7d8af133d2a6d37b5345a45d98", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7c975383569b0c27463cdfc86095e58e2e357071da9572c3c91ba0ac02a8540e", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "de2fca89057ced6f4ed02087354b6665c5a7a82d7d9de3a49d6b279e0b154588", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0b90e5df9c19dbff7d8dc7a389fe1b383e2de6fd8c272a8d699cf84842a337e8", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "6db1b316a846386d23e4732992896c3dacdc2c289d5643dd1ca35e24cb08008a", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "729cfd5a665fa1cf1c18ac4e385fbddd7e06bec79d9ae2db5dc515c62ef717e4", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2ed698c72264bad67d2ed58d77f466aa8b8da5f29b5d379975a03a64f4d4256a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f23feeb1f495c66872cc7710c0b9efb6ff61ae6d892341a7563084b4bfc11d4a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ac77d26f757ee7492e6c0395fc5290451326a10e149f67673d6f4cfcc060966f", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "8e7259a76adaaa9da300395eca4ec0d621085229eca92f6248686c348787df42", @@ -18083,35 +18083,35 @@ "T3T1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", "T3T1_de_test_authenticate_device.py::test_authenticate_device[]": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", "T3T1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "5cd60672e9cec37d1e923309f94add4ee754a245096bed5de127af1319de4f0f", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c0e6b3a1ffddb37b508cc2f78106a8a47c0d5d6dfbc12b01998a1ba02acb7a92", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "364ff261ff8e48e0abea539c07d9363c593dc11b0716e2cdee4a9a20463c5743", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "96822345561725c4db73da90ef97134674498200f37860e05e19692a4cda24c5", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "30b16c4c34c8f765db4a2a647f746c34347d05307eb571a9d9d963c69bc957cc", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "6c6a580fd26be88903407755d108b7dca1f183e8889eb445562a9eb7459898ed", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "6c43bac5dcb1fa7efbcddf0118b0ec94fc09767d8a11d265e2d81a3c645bc137", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "92ad87b74274147083c424201d26442ec635b0fc5f365ba6826bb23d2c9b6a5e", -"T3T1_de_test_autolock.py::test_autolock_default_value": "1bb2a4383537a5ebb890b9d9a5f1b9cec1712ecc4ee23e37a16c0ccc5c26e019", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "122c25caf04705fc14887eade4e2f2f42b73887c85ef3646167970b07920d558", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "122c25caf04705fc14887eade4e2f2f42b73887c85ef3646167970b07920d558", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "253ca436bb89c4c76e7a4961920aaa760bc057cfb12ad308b1d71a46c07bfb55", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bb1ba530e37d4f5b56c6d0301d8e82c4f92df68425f92d10aa768b74e35a2eed", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "632ae98a04aba3084883695dbed143694bd113c81d1062c41c1f3585653e1471", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "54e162fca24522596b598f1977537b5cbfc31df04780e6fe119e3e50b2e34769", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "0c1a98931d50918efed9b1d4051c8aaa97ec95285bf652862127412250977013", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8a21cd511f82c8624ab715f021d901177da3a46704f5de2edd860170bfaade9c", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "f2635f18433d4a1cef14f09bc92cd08cb09a2e3220899ba8f0ec1a5646eba608", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "3b9f3318be79181279a64daaf3784c20df9599762c21ce5166249de074370210", +"T3T1_de_test_autolock.py::test_autolock_default_value": "a564500f564811ccafc67e5854a98991bf315b7fd411045682db558eb36e8d1e", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "159a5732d44b0b4101fc10bca71f487efb4cef1c3eeffb1b2337b9eb3da99af9", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "159a5732d44b0b4101fc10bca71f487efb4cef1c3eeffb1b2337b9eb3da99af9", "T3T1_de_test_basic.py::test_capabilities": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_basic.py::test_device_id_different": "e09a1c9a50a87bc92d26525fa3d8971fc3af5fc0ec2b730067e2f3b589fec8f2", +"T3T1_de_test_basic.py::test_device_id_different": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_basic.py::test_device_id_same": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_features": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_ping": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_busy_state.py::test_busy_expiry": "1858b2d422473de998d1884d4f71b04047927fe0b024ef1449e74cd47c25f28a", -"T3T1_de_test_busy_state.py::test_busy_state": "ba7877b5a3cb1b53cc23dc312f9ed3ef2fe42e6aefee74b7f8d0e4da50bf1598", +"T3T1_de_test_busy_state.py::test_busy_state": "9a29a604c390410bf68a9cf70fc1ee9f3a1cdfdbdfa8798139efa0974309ccdb", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "312cbfa84055cc90ba1bf7cc08fb396db4ac1b47c2b93cd077c0081ca4930661", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "312cbfa84055cc90ba1bf7cc08fb396db4ac1b47c2b93cd077c0081ca4930661", "T3T1_de_test_cancel.py::test_cancel_on_paginated": "6928682f498397e0a69b87e5d936a12f00a79cd1ce3df5f171904274405d2e0b", -"T3T1_de_test_debuglink.py::test_softlock_instability": "633405ecaf1d6fb65791da02930ec3554887c29f15b57db1be7afe4615f0e223", +"T3T1_de_test_debuglink.py::test_softlock_instability": "b0a48e107ee9c6d6bde0831b8b36d86e5707bdf74143dfd1a61d24726a465402", "T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "3ab7e7be6b946950c575bacd21610d26768aabdfe9a24a48d89c156ed2a2d55c", "T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_language.py::test_error_invalid_data_hash": "d64e5beb97239858c596885a32b86939f5760576f0b3761ac01a6d522ba9a728", @@ -18126,7 +18126,7 @@ "T3T1_de_test_language.py::test_full_language_change[es]": "8927eb900b402d14e39322eb6bb40b0cae2bfbb2a175079cdf549e2c3942b39d", "T3T1_de_test_language.py::test_full_language_change[fr]": "4a251850445d3b3f1f21974bd4b9fe133a7b2a0da0a4f72ef3262387ef40fc83", "T3T1_de_test_language.py::test_header_trailing_data": "8e198165bed53d92f4c58b31acec7b1d6b872eaf922d523174d92b0f6681d862", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "09088ab11ec356b49bd146b56c90a1c7a6f386fd98355279fa1ee3f3b318636d", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "7f3b44299bd42767ef0c27948841abe651c3ed3252541a49c24334f20a0f4d0a", "T3T1_de_test_language.py::test_reject_update": "8608388f972372883ab6adeabc1871f8ae2b6992e51b41a2c5e702f0f5caadb7", "T3T1_de_test_language.py::test_silent_first_install[False-False]": "630b7d9cfcc8cc2b1c540bed7d78f9ee283a24fdaa79ba1b8b14ffa88e8264a5", "T3T1_de_test_language.py::test_silent_first_install[None-False]": "630b7d9cfcc8cc2b1c540bed7d78f9ee283a24fdaa79ba1b8b14ffa88e8264a5", @@ -18136,15 +18136,15 @@ "T3T1_de_test_language.py::test_switch_from_english_not_silent": "5dbbf948c50ec08f09d99f5a32c85b563f52fbf084e176f2e77bd89cdeb140ab", "T3T1_de_test_language.py::test_switch_language": "346bcb10dcd1f2aa73cf4a9a7634255bd201ca5c2ffbb2ef57c57de141593678", "T3T1_de_test_language.py::test_translations_renders_on_screen": "1fce1554e947b0f54d7052615e763117adff35868f5d968ce35f9e77bbd7a214", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "03b00b22c51363312ee5bd52919e3fa3d252920cc9168b2bcec9808e15d3a582", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "33775b456640b2ce680cfa24010dbcf6459392bceb4ca40a32923641c74244aa", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "14b92a01f0de3ecfde3d6f1f2dbc173b3290ac321615c7312d6cc602554a2e3c", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "5107e1418628c0bf000e3ce382238a444b4201b439afa8a2f3bfc8e920223675", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "85daedaca01d0116b45078e62d897c87c78e2b944c327b427f88df70eedf9c3c", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "a8fc91125848ef5230fb023395e1ba64de4789911ee53975a2c0322d3dec8bf0", "T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "009732212982e29ead5a635e51e4301b9f0bb20134c01ccda4968979446af371", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "7046eacb24b3d63d974a9f8a1e2850333798e209d9fc184def2a35bfebb94e37", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "6a5c084edb408c6f61134c08d4972475efca8886eeb726b61eaaededdf0c173a", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "3b1a8353a8c53af7f8b45dee997660d5b0b9eafe66e7c5c47e7d41ff2bb05df9", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "98a3719e687c6396511312ce78ccce1484a9ee05c23e5057eeae8b3f57994495", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "1a665973fa452a0d05ced007179fa7d2effa8e1abbda4460eb4678b99909997d", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "707f4f407445d87d4b5d99ed15a2443fa2ade9fac2ad90c2afbd9bd8b994d595", @@ -18158,61 +18158,61 @@ "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "46a0aaa1de9d5768ec769aa75c050cc6c3f7f037b54d191336ccdb52b12d716a", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "3c27d51b28767f7ef347d31c482c4cb1a3a0e857f45d2e249ba59767d8622d9a", "T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "4912586ec0dccd8e43e6ebed5317a5c60264184409c2d30124de75140a4ee7c4", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6e0b45cf80d790d4a9d8faeddd560b88ceb4f74603521cfac559f657dda5f92c", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "2c6ee942ea638a22f0f7e6e2bf41ff4dee4bbb3125e917b5be7ab201a5e79fe5", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1abc366f5a97aca75f4609b0ad200c9484f07f2499fe47a78ef34a077441dff0", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a1f9f1f84086a70ad3bfe816aa411b3b87f7be0673faeaaff321284f21a3e6a0", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "e9b13808858c983be48278836f2aeeea7ee84b1ae6761ab5cce7c522d3b2d263", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "fcca6ab7f1660eba51988c66c0c387fcecdcb0eaf1a635eb6943d5ead88be2c8", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "558118a8966d086e4812a1c4e8351411f0bea024cd7d2fa5498a03c35c686575", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "1771f98be57b67a03fa14ce73086fb5b042f1d4e42c2d4003e85e901890ded5e", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "322171fdd504959b6c857ee66de3f3f63382d7c5ed415fa6ad76e2329e876066", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "9ab3d74414ccb43156950bff48785bb0bc5163eb4823704aa9a466f7ae776d80", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "a32157579b77329737e16be36005de94658c26df8cdd6221f7675ecedeb59618", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "57f7ee20371ec37650aa77b5f68a3ea946aecbb57571000da77a05b9c7ce0606", "T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "efa912893b7dc06358d6ed480cde3299d5c8631ffef0c668c74d75dc2a5b0d22", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "782bec7246a18b76c6f44c11c9cb37e203d2ccc6f4fba0fd50663cdb1bbde145", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "2d899b06ab9e5a768df1b71881ac7e70549702bdcb12edc6a5849541055e1a60", "T3T1_de_test_msg_changepin_t2.py::test_set_failed": "7df4941381a2ee8d2627fbf7a44b1a5486ca2146a3ec7c723551067302be0437", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "63d7e4d9333845f2e20efba9b6d40eb819015aafcd7cab42f4041b8519b6dcd2", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "08ab8706c9acef67e7b27fd06bc6d6bcbcd2d3c062ef4fa4ee33d102842c6bef", "T3T1_de_test_msg_loaddevice.py::test_load_device_1": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "7d33c9addde31735eed3f9dd2474c9783e694332d9bf9ac5fa43ca5fa90b620d", +"T3T1_de_test_msg_loaddevice.py::test_load_device_2": "bcc375efcf02e45ec7ad8b97fdd2611360542381e6b5ecf087c66a5d6eb155ce", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "6e073847e133e974855ced837879ef432de180ee45dfecf2d83e6c9a30fa6e86", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "fd5097fe0d02cb6d95eaa980b68f8a714069cdd7d98d0a354e0f013455793b6b", "T3T1_de_test_msg_ping.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "0e1f65de4236be1317fc32499e5feb35adbb9e12384a8610b44054dabb35ad87", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "fc08d1585b1ef3e88314cec89f86a2c4e1e4dc38474417d0e6135c5b0a066326", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "5dde58b9d490c711e6ce78c0e40969cbdf2b6824de5f2fe963cd4faadc90d480", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "1e502fca352ade39e1921c4852a8f3ba98ccc663f7d49c3661b893bc68bc9333", -"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "e09a1c9a50a87bc92d26525fa3d8971fc3af5fc0ec2b730067e2f3b589fec8f2", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "b72176473ecb6213e331528b2624a3fabc5ed8e669a73b4cd25ba58232365984", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "f9335bfc0cc27036a247e9e898a0c984a8e9aa34a90bbede111221ba4ef1b284", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "93cdc75a6112304054f645d19c0ef17fc32bd2f1e3abf7b2b90a3d204c72a328", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "000904338e45c805390ee084831438abace2c8f8020aa054ac929e6bd21ce522", +"T3T1_de_test_msg_wipedevice.py::test_wipe_device": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", -"T3T1_de_test_pin.py::test_correct_pin": "ccd53f6caa49f662907763faa3db9519fa4f3a8f9db22b281054c442c2aa9480", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "534bc768ab22e8061a9e23eb760254f14733b12833afafdd02d42f1b5aca5afd", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "750437e6a3112a571790c1fb0b11a0974949abc9e8a1379e2731f9cdb16ae54c", +"T3T1_de_test_pin.py::test_correct_pin": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "69ab65f0cf2c2376a9862a643df09117268a40f4db24b650b1f048c7205f9eea", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "b381f965b4b5cdf190c0981bc41f89eb6e7410f5ef6c6459471eab5a996800d8", "T3T1_de_test_pin.py::test_no_protection": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_protection_levels.py::test_apply_settings": "b827e11f1deef158c7ba36c73ce8184e830ca1b177ca6e321d202c938395b6a8", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "9f1228a994427eaaf13c56e3783e25b4c2083e0bbf0eca578a6e2b6451db8c5c", -"T3T1_de_test_protection_levels.py::test_get_address": "9129fe29b664029869fe87a9d89e7bec12d888732600de4e09fd1311ce2bd1ec", -"T3T1_de_test_protection_levels.py::test_get_entropy": "4d5785b141d5fd522591ff9d3284ce95f442f524b754c79671cb3008d1c0bb78", -"T3T1_de_test_protection_levels.py::test_get_public_key": "9129fe29b664029869fe87a9d89e7bec12d888732600de4e09fd1311ce2bd1ec", -"T3T1_de_test_protection_levels.py::test_initialize": "2b52e2a5930cccb3c608dc0e217c3905dafe6a75f013f7dc94551fbf5c725b68", +"T3T1_de_test_protection_levels.py::test_apply_settings": "e0c14406dba9920f9ebe8a8c8ccf8a412e1cd90082e94eb4e4ccc75e9e674ecc", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "8c4628ed55a9e3bf8ae82caef853166c93202b33213b67689f39d47e4decdac6", +"T3T1_de_test_protection_levels.py::test_get_address": "d3d83a663908ff38d3f1b7fa8babdf18debab8fb7dd381faec638e1338bbf2ad", +"T3T1_de_test_protection_levels.py::test_get_entropy": "711b8b002a764bb7b1c42dac53b45006342cfd13ab57db9a08400ea4f4d9da4d", +"T3T1_de_test_protection_levels.py::test_get_public_key": "d3d83a663908ff38d3f1b7fa8babdf18debab8fb7dd381faec638e1338bbf2ad", +"T3T1_de_test_protection_levels.py::test_initialize": "f6095f90b2a55c763ba825aa26a483ed7b402be4d27355abea65fd05340724e2", "T3T1_de_test_protection_levels.py::test_passphrase_cached": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "c8a68859a8c6e85b9c6ea2a11838375e665c5eb1ca80a1a1c7103afeddc32426", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "f871f61b60417cf3d6a68d0f48c9de0588315b8b93ce98ed9506fac8c3c2f7a4", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "a751b046969fef5bfeec40aaa5279a700f94a453401f2500910072273c65ff13", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "7697c3c87b24cfe5e6cdb0716d6a0c1f0b1e7afddc416d7ae99232d405debf89", "T3T1_de_test_protection_levels.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", -"T3T1_de_test_protection_levels.py::test_sign_message": "c29028b996546d8e0a35b9e6d7f487b26c8231041b39d5d55553405f335554ad", -"T3T1_de_test_protection_levels.py::test_signtx": "5d9ce32f9b9b89f8b57c9bf7fb6a8552a310843d795ca231abf6d6490890c015", -"T3T1_de_test_protection_levels.py::test_unlocked": "aad69da4432e631f4a8f1eb22960d948cce726b828489807990e9b64f8162531", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "93d81553b1714cecf030d41fbfdee24fdbeaa1c0cfceeed2be405ec18926df32", -"T3T1_de_test_protection_levels.py::test_wipe_device": "cd929f34acac9a70e06cf8ed723413e8b1f26ce6972c2d1180224265a9512eef", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "6342d49bfd942f82426541955f68010ae0381cc7df09c424fec2c048194d1f94", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "855961d71d5ccc67fd0bc577f95c4c02d0465949290c9ee933f0bb23b4658326", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "0c12d44b102b2d34e174041c0898d006d9d490717119e1d2d3f9b6cab027e81f", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "7528d22549bb8d2c593da6ac59214717a0683dcea8f2e852d6ddea4a5354476b", -"T3T1_de_test_sdcard.py::test_sd_format": "46791ce8686bfc43f7cf2093f8ac5efdfb8dc4ed8e33aae094965ea7741eda49", +"T3T1_de_test_protection_levels.py::test_sign_message": "e6dcb50c8305b7711989332f9635cfe6d3b4c147d8ec3e78b32855680b0fa520", +"T3T1_de_test_protection_levels.py::test_signtx": "affa39b70c189df2c82d805d43a5a6e8e9931bb59cdfe64fe340fc335c924c7e", +"T3T1_de_test_protection_levels.py::test_unlocked": "3294e6032f71b6a619ddd5c4b31a925c959c361aec6882213874931e19170b3a", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "531472cf6b5ba0a2439e34e96ccf67520aae484c3f12f9ae0386ffa55c31adfd", +"T3T1_de_test_protection_levels.py::test_wipe_device": "38de5048515d5096a6f1a23a25e85b0bd11b54d351c178baafb23bf538025126", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "f4cc98eb442303581db5263cd2f55ce99b24ed33809261b964e9861c38dfb16c", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "dc4ae69940e8287ae558f9ea0a3351a1ea65b5fc50f74926ed6d857883273baf", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ef4c2d9d1837f4228e8cbcb9f441da062e135c4be39dab6e85a62eaf393bbdb7", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "787d2de8126ec4c1ac05db5df72e96c109210b1b88f650e6c42a68899159755d", +"T3T1_de_test_sdcard.py::test_sd_format": "6f882ef6d4a21ecf70c233e71fb27ec4ea9964bc8ef59ace882849951c8d15ce", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "cbff6cd9e26513845b17af29634954b0b771b12048a3c6f2734d4472d949739c", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "a9ba8d8c61f3568b1a530163d06c6d66bf3631aa585ecf26416762fe4a475529", "T3T1_de_test_session.py::test_cannot_resume_ended_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_session.py::test_clear_session": "63c0890c47d03124856152de7d9a7dce6b75afcb527f11bafc3d52a21692892b", +"T3T1_de_test_session.py::test_clear_session": "b16e73f3f3ce3ddb908c72e3d508e1e46b3c2e24d8686d6826639ea4ffce186d", "T3T1_de_test_session.py::test_derive_cardano_empty_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_derive_cardano_running_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_end_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -18275,8 +18275,8 @@ "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "672c577d3649ad1a8e58a4b988056da6e4af8739b3e9bb9c820f5ea52d9b13c5", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7ac50950de855c9b70dbbe07f76c726a76fae6f21411c929dabe0eff223510b1", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "163ac3af44cb42bce9f768c18ff371ac6a04ecddfae2f45b8261683b9238c90e", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "b4016482a6d1bf4107563ea9303f2811a64517c102e4495c6ce1a6502957966c", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "b4016482a6d1bf4107563ea9303f2811a64517c102e4495c6ce1a6502957966c", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "a7fae83a3ea52bf1ff33451edae025dc40486d6249264028bd65e2616672cdf5", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "a7fae83a3ea52bf1ff33451edae025dc40486d6249264028bd65e2616672cdf5", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b42504d3a07a6f681ff310a7ad70e4e4eeebba29225a4c83626c3bed3ad1282d", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "3d66920b0f4105ea7d0b18ae0746cb9fe07ed277059e74d272963b95138d9038", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "9dd7d87298e4910f49c24539cba0a1b4162a90b8598ad92ab754f6007d5ed1ee", @@ -19238,55 +19238,55 @@ "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0b08af41c2f9ed112417fda409b22b1680bbf02fb6d536900a43d09d141db702", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "a6994c67adffb1d1f6256c3dd05d8b224ed69e3e58aa1426c9ed887a3db1ac94", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "822ec2a184c3d949db16ebc2033293c939fbda24f034823339a8422526dd9e2c", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d082da29d1549c95ef2d370f84bf69ecc6146b18a6a80e5981a6397726e1a565", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b0dd8fd55197927f0ea0184c9fc6f802cac5cc1f7b6d129bd04fdcbb20aff7dc", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0714a5ef3e24daf6ec0820869e46e96017d1b0f8a0c24e7877e39603e364a806", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "73fd66dc0b3d8da938675c96ab7c23195da214a933e0b60932fbcfed0e162496", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "963085dd70bd58a78f8f76d1c152d282337c2ea8276ef15cb3994ae83c9802e7", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b9d848edb181a06790819e6dc198a30a35f2f4282282fa61be0cc4587e8b461d", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "246b62471cf32837861c9e0667602a8a3cd855dd299d5ff3752a9975bd5b521e", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "96680265de6740a45495216d3a94bfc6aad626ed6bcf3689fba6e3fc71b45487", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f243b32b310b2d782a4684dd5499f2c7dded2d19ca375c59dc85e1ef3bf07ebd", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5570d2bf466f5b3f8c54ae44aa7b3aa97f4f60d9b92395a392c29c471d396996", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a990f4abd2c0d2297ec67caf78dbf8a3a31b63db0eaf173b1d220757b8976c2b", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "ff381a06858aed5ea70ea978b1994803cadffa9f9694180a1f8d726740e80578", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "aac5c05fb815864d310aa190ffff03090ab10168c1d4120841e7b0f320772739", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "915bb3168e90f73f332f7696c2c9286788311f33f4257b25f1e21051d055ce8e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "34b0a18805c07d3733d2d8dbdb9250e29bbce8102aa81ce84a15e8d5ff2a157d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b9d848edb181a06790819e6dc198a30a35f2f4282282fa61be0cc4587e8b461d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f1e1d3da6ccb3cac8af982a4f9f14dcf1f09f91a5bb37f7f3b8ec1e20c98adba", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "ff6c221c80a977ca2c55996b3552af478d8e4f9b8e112cd8403d11ff721186fd", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "49a50729c03664e6afd8195b4423ae71bc23994698dd245050d868af49b7bf1d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "7f77bae47fe4e5ebfc80e84d11b33872634d35ce4da7308abc449a023ac1c5d9", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "99946fd2406bbacce8062a990e92f7158d6f039dfba1cd0ceb9fc8f86d353de1", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "37ac4e044584fadf765065903a698bd96c7e2918fd0d28828071b29cef8c1c3f", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7f56e07374d6766c820119da253277606e70a0686fd6b0f5ceb376a1145467dc", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "2518870b117912289ac9c78e857de1d7f55d4f6844fece49257753891bcd7486", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "393b28ed63f5ae53ddc5daa1c6e861d770081b2fe129f4fa59be6bf0cb9903f5", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bfcd02b209d6cf5b735c71f6f68c0ef7481c84f649c3aa60ee8a914e58bf34ad", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0c5bfcadcc915993a312129995c6b41e35f939593658d4fca1e12dbb638ed1db", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "654fd0391079baee3ffd13a35d2d978d3f9e07f56f7dd72070da09ccfb4a441b", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "4742b8fba2eaa3e749d8937e3e5823b9ce2c17c725cbff895c8ad89e1a0bfbc5", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "ca329443c077a466d44964acfa8adbbec8d9748d9e19f63df84d7ee503fc061d", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c6384790d9dfec69f075a15d74878e4c1ffe7ae2d26e4d6206a6f379ef8b1eb3", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1818b2155c119c4e016719492f6c838e33205d91f8cee454193788cc8cbfb12b", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6e71394973cbb4386ad3329a49a1ce910afc5a6ded34eb7cd90c00100579cdaa", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "1394fddd24a54b8b40a9d8350893de6a71ab5567dcc09f65213dc98777876662", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "daff688f49aa8787b536a60de1ed095001c3852cbb596c593a215781b7054e6f", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "66b1225d11b1bc7bf84343f7975d8bf7d091b1b36ff6776bdd73b7bf1558cc07", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "873ece402b0e41e5ddbd0e4953267525e3de62c127e6776e777328506db7f98e", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7401444a9fb1614a1bffde3b8fe8bb5c3f004061f414b2f8f0c5becf64b32951", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "8378637d3af407cc237508271756bcf103232d9ee37428b5cd59c79e5fcd0900", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "16ebfc05f69012b2a8dc5f91246adfeb03bde78d3751d0d1f8d109e962060e23", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4f02e0f9be13b72a927ed33d10eebe4ab221c2f6cac5e41d9af8d1b14caef05f", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "29014d4d6d525aae6d28b74b2a8e9f809f1358569affbc8f32b780630d5ab8be", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "2cf247d4f475296c559d4eccedca66902e057239bb1bc49dfe8c4be1332b2f53", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "ca14e5378a5072213f230da0ba1273d4dca81ae1e2622360f7b3bafa79f15235", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "efcc422d12b12ce10863aad4ddd4a84d457c81d16fc0ac2b22d58ca77c87b406", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "63f2f13d91e77fa229f98d91cbe0157717fad49758dd5bb9cdebffb36fc58699", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c53e4bc9598f7001b18b80d0aecebdb89ee6a2db0620d85e163f86209826e3f4", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1ad1be612b394c8852fd60a5bbec0c6887d817c40402188947b642c18b4ac23d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "00f461e6980f4ca1ae208094b68989ef16489793312cf586201c899d1ce7ba41", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0fcd4b01d3c9bd49716868473e6a1b04feeffbee79402927a66e675e7456190c", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ba0c77f7cccc8a67f6453f9bca618683beaa732435e171b25037cd2befb5e1ff", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8fd1e3b92bdb42c788b2f55120f4002554949524d04306e3b0c69a48c7ee781a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "6fb1403f43f18903c39e47777c7178894ff2ceff55c256b4584d24a139c9209a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "77f3994566cdf2c41eff9cd9b1ac4d20f546bb316750cedbc552122c9b099739", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f8fff0baab8de0c2097c69e505eba8da6f695b1b0d8318ab85c909b3d3e6ebf5", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "27b0c74c9648425a6c073a852ff065daf16cae9bb0a3738a71f051f86da7d44d", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "201744eb6f5bbd91fef8778f6403408a2c0ac125aca704962c5c12efa2eba5c7", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "50d277b139cc4d46eebb415e073a5ce24152bcb13a804381912b3b6e4d4fe31a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "89942fffdb930ed8e0b90c8d6fb7949cd63d5d61c6e67d02ae2733783ae37be2", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "91f159985ff46c59d9c3c86475d1a764c76f63d000383de86669b071133a4b4a", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "a0bd1f6789ac37d3d6f1e7bccf5229d099c294854c8688190d086b7ccb27f5c0", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f896928b3b1d4c6d70b82d29c8ac05f1a3347611f66fc4c2c152281fc3642afc", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "2d85200943d3412216772c6c5a5e39bee44e5900246aaacc4edb901b67774bb7", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a35c2c696076d5ef1fd74d475dc6f16a39611a2df7f2997d99d2264783f64020", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2d8aa75244426465af0897f79289dacd1feb144f52ce8963ba9d7632bd8ee234", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "12d80a577d487f12ab83fa9b324e780e516ff451f1f57ae7623ff5c0e2b64985", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "11236c278fb1cb6d51009ff392816884a80556e56733bfa31e2b9d8250801828", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "5cca4a187fa8183109041610828642a2a236771a34e6aa9007c4045086a11a90", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "977529b021a17c59a5ad04924e33fcdbc4dc5e609727a4132faf76d43450ff22", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "41959f978901f170d3dfde480aaeb30b89fe095463b5860e3daa4dc797058107", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8fa09609105ca6dbc1aade3135343aebaeaae336bb4b3f5ad4a2b354f1eda3fb", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "582077f299e3baa6cda7adc2e6006d9c8919d12a5e39c3da21512c8b216c98b3", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "7cc312704db286c8adf3e5a058c65835818bd811f346c1c1c7d54880b2e7db71", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ccb2d44d2bb4f799715dbad12828a1cdb34dcc226649030550ab48e8989dadc6", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "55522745e2cfd23a22cfb4c64f5064af955bd78a02c15731200231e872f910f0", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "dd422c3809984939b264e1d8f85339684843bb870d85c83d51a865763a9e1e79", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "48b9844d0c0a9fcf97b1ef2a331062d9ab73c511f2c0cd7796ccbbd4672f697e", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8d7f2ec0d11c1ec34059633a59bc1a9f9f7f3527e88255e305cbba953ab9e004", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "40926ad33a80518e4df64768211102181facb3d844975fee132e18818446b925", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0df479fbfb851723bf68f2d65a7628a5a72ab10e8fe04ddf7d937c09580a0486", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "9af37ae80356dc7de6a5eb6c7ac7b9e23171c4e37f58a60927be0120c7b0dae4", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4b2f92655c3ddd6d830b994e2665e5e35b179a5e3973c72ba00ce16085e6bb4f", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "bd1af0c41f234b34eac2804f917c8270cb3d7004f1459e5a492aa7f8d4b5da11", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ddd2faa77f49713c5acde3a97479d2b7a274317ddebc3671efe22e2750f37861", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4e3fe2f8d6e83b60edb5361fd0e69fdcafedcb99e582cdd8d7f352ee9756357e", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "459b1ba5c8a2040c6629f2874d94fc25763f02e05f0840329d8caec95c4ed8eb", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a4b51b9d7f1aedb818565fd31bfae1614a5e9f6897e5a9c40fbcaac5cb476e82", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "009f4d31a4c23cd611b3aa1b3577e6758a5ab67bf507af2ecffa0526191e177f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "81b9ef3c491de698533eca5e26e417942d03971c547cd9facae540dfad8a8c4f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "1cf51af6c1d26e9acdd8b3412bfec28f632d5a2f24783050b643a6828e9ca74c", @@ -19428,35 +19428,35 @@ "T3T1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", "T3T1_en_test_authenticate_device.py::test_authenticate_device[]": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", "T3T1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "9fab962f162e8ec9965d8084c9793aa83fc78683760415fed4301e23425bafe7", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "5696cdb476168ca73e45b18f17a5999c6b1d833cc0006ae635213d4710ed0cec", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "4a370d85592d3753a723dc0349ec7f135dd52fe7d0292cfdb54cb527d07dc2d5", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8b84cae24cf35b22174a26e5f9b746065f954944c9fe93ccdaf752d8fc57fbf0", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "59d3c089c0782f89e4e1e0f0f89aee48410bc246e40d374dcd265a1f967639b4", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "47f094bb52789f30ac04c858f482e5dc839e0f615271f28240b8faedfbe35a21", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "e605e6bdd2b607c0dae5a1932ff5cf21ef41188cd0dbb7e013331607a1f43dbc", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "ac336a4ea29fdd46e03b90b00498236a4948fb1cb6db679569bb4bf461560f87", -"T3T1_en_test_autolock.py::test_autolock_default_value": "71f42ec579f6f4b5145fe56a4901fb8b535b66eb58aadf14d205ef54ffd748d6", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "a029f5c9994e1da569742060b29411c956501875bbf161ac7a3ddd5647fa1ed7", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "a029f5c9994e1da569742060b29411c956501875bbf161ac7a3ddd5647fa1ed7", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "5d13f3259b29db857e266ef8baf0adc0db232749b2575f028e29fc23773e12fe", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "288135b8af2d329dad73c7d1fd37cf01d884bf03563bfad5ea4e0e857222bbfd", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "be9f3a489ed459d9427aa7e51ffbddf6beb267b3d1aaae10436676ecbb914196", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "db79b7659a3fe24f004988440fed82341ab68d375835f4cb4a70646eb90b021c", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4e8250456b8dabeecdea54def72151fadbb872893f419678f6bec732e67901e7", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "42e320e7d377dfff4516be49534adf4566b1423431622bf40aa923d5cbd32c65", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "c44cc2cc726f4ec984e5649128058098b58f0dce3d1f4f689aaae58d823da965", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "9574587a2882c9b39f4c13214d0f322be0b6d3dd654ff1539957e73dad92dc99", +"T3T1_en_test_autolock.py::test_autolock_default_value": "25713aa4f34cea731ddaae914fa0a2afdf0f3bdd1574b8303aa23cd6401c9153", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "fad34db497940fbf10e215f8b27c37fc914f708dfebda1535bd4ffb8b555a32d", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "fad34db497940fbf10e215f8b27c37fc914f708dfebda1535bd4ffb8b555a32d", "T3T1_en_test_basic.py::test_capabilities": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_basic.py::test_device_id_different": "901237acb1169340674c16b654913676fbe8bde1d5917c8ea8f640a331d79387", +"T3T1_en_test_basic.py::test_device_id_different": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", "T3T1_en_test_basic.py::test_device_id_same": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_features": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_ping": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_busy_state.py::test_busy_expiry": "cb25c39112d09788ad807c490cdd65699b5be8262db1e0deba8c71979242845c", -"T3T1_en_test_busy_state.py::test_busy_state": "2205993fd89bd21ed717b9db1ce383a78bb5e2d4475621fcab1910001cd49ac5", +"T3T1_en_test_busy_state.py::test_busy_state": "9384dbac1e863e3b064ac54240ef764de7ba0d21aa825c3cac102993fa3efa45", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "f9a11c51c2c0bacdd7383b0d6f1425324257c194819385303246d757e3fa659c", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "f9a11c51c2c0bacdd7383b0d6f1425324257c194819385303246d757e3fa659c", "T3T1_en_test_cancel.py::test_cancel_on_paginated": "270884d5e7fdb0fb60531e13f464750de8265de42b93a6edd6e966d737d3be56", -"T3T1_en_test_debuglink.py::test_softlock_instability": "dcc79a76fc304f1a08ba46e122b8f1f681f7f14feb2b36b2bfe7c6dfecae0f80", +"T3T1_en_test_debuglink.py::test_softlock_instability": "09e7f8fa48c47c4304ca21e914135e0a3bb004ec2a635218499726dd02180559", "T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "c67de4a16b2668c5a4a05c34189759beb1611535aefbf74aeffdfad0781c75aa", "T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_language.py::test_error_invalid_data_hash": "d8004e9158d2dfbb578cbc3fcc594d0faf33081d97945518098c7ff02cf1b43f", @@ -19471,7 +19471,7 @@ "T3T1_en_test_language.py::test_full_language_change[es]": "5012477a8512c1c47e54b390188d80f56caf27f8dc257e29705333c616143b3e", "T3T1_en_test_language.py::test_full_language_change[fr]": "e3fc549ce03c716f23e22f4b9f9af779562ab5ae1f33bf2ebdc3daae9aa856f3", "T3T1_en_test_language.py::test_header_trailing_data": "1ef965ac62e3416645da0148ce97cd0eae755e4115e31157bc463ba8c23e163c", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "7574f97916df8722ddce470bf9d7713a94a22ca65f586543334926ab77ccec48", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "526c9d1f1a71b2b0350cf860345ecee1bd121c38012f4c070ac04ea1f1c5c1fa", "T3T1_en_test_language.py::test_reject_update": "3edfb420e30cc58fd7e3c26a18b12f2d82544bd0bd6e604f47db6a6ad5748126", "T3T1_en_test_language.py::test_silent_first_install[False-False]": "cbab9b797d6d021ec5925bf9aa799fc57de8fb5819c60cb2faf70edaf49352aa", "T3T1_en_test_language.py::test_silent_first_install[None-False]": "cbab9b797d6d021ec5925bf9aa799fc57de8fb5819c60cb2faf70edaf49352aa", @@ -19481,15 +19481,15 @@ "T3T1_en_test_language.py::test_switch_from_english_not_silent": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_language.py::test_switch_language": "ba498699e59ee218fa4ea4eb8c18ba63fe036cd2e7218dbf12e6512b6ce71ea8", "T3T1_en_test_language.py::test_translations_renders_on_screen": "b0a8dc19a95d153210ddbf543ce59dadbb0997b8fab9ecc8a6f9f26dd4262ab5", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "3cb752b328f1c4fc5fe28cf1dab25f006854e409c054e520891c4bd0e74454c3", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "148de818dd37f5917ff07403a988ac95fd4867d7e353931818c9b6c404be0d84", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "d6cd28879b494f1e8da1748145889b48856c3ee13199d45cd263f3bca112e722", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "2031baca050c3d87467f486a458d1328d9de4708aefc8f5f56d4fe312e27c174", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "ade0da4726e3d8746369a6c548a009dba556b3bb41afdaa42edb3d1b8b2a2526", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "5f7771a8e13e612938cb67954a587a3d92971f7020d03d3113b55181a78c21b6", "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "75a8135cc46a082b667abb29e54c7549186b1c4469a912b02ba67ff3841b58f2", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "1333fbada440cadc7c6a5c3efe756fca18d3ef2e4af4a0804063d9bb365a532f", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "9d26eb7e311bf1d496dd4ec97897409936dbbab10f132d19106d521548c60dc3", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "a5e5b8d4a7af8c66c498bd57c68946ccd6ae96ec72a53a7564889152272aaa17", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "d5872d2a9f2090261903ef41c118a6dabcb1fca85e3349bc23fc7dc04973c71b", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "9ac2948f5dc0d41632d5717811add555ed1f5bd5b9670a1296427a23569b8ebb", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "4677bf2151496ceeb89c3d9d2f7627f957416ddba197208bc4ae02d931bd16ca", @@ -19503,61 +19503,61 @@ "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "6867b3fefe40bbdf848693ad940eb096c9974e57e476f1efa9201c30502ff621", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", "T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "929701e2700e357a86358e2824137e3c38931c831c5e269180a24a36e86c66d1", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e9c33f22bfe1a31474fb74a00a26b7ce2c8e0e6f55e747ebb94eedbd58a0bd3e", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b7cc122934eae41d2183f8aba905270b50a1800581881694cd0a5e5eeb608ff8", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e774271cbaf7acdb1f91eabd91b6f6b06357628a1ba5c76e51b3d90bb5f06ba4", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "59b3828c24efb638b20e5699027ead8041018be14abbeb2868f3d1ed2d19d546", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "fe15addba0fd2cb2b6fdab85892f47d4bc4150a9d2857182163886e1f792d902", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "ee5899d57c1ed38dd35bc0703bf95a6c8d52915f0825972371c0b63ea7302ad8", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "26a5d7c36ef9b2208c9489d4290f89bd5ebe14af687d10b62beb607c6d87de21", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "f20133b32fe87f2b4ae40acd1e6e2852964fef03bcf6e82adb7f90822ffab8a9", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "22ffd2f9e79a6bfe94a11613d8696f65bfd15092fb5215fc1448ef6c86beaf18", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "f74b695033837301c692c05d9f415bae8a11c5f40ff8343a693423d2b151ba03", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "3fa1022a892bc6ccf591433688fdb42b304b4f805772a81640c9937271713782", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "7ab86b8ce3bcd41fb1a9a554a988d0f5864ecf526a281e23605ee7ce18f4ff4b", "T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "f91581bebc54a9bd1314dcde8875243b791f5cf6daab448018825900b4ee4a99", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "5bad7e8b5c8351f1db97faeed465f25b893532acb77ad1cd7e4199badb3f2b30", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "984b966dab7792fb14c5f9938e192d79fda5a7c0cf26e0bee184b7d4cf4e09d8", "T3T1_en_test_msg_changepin_t2.py::test_set_failed": "5c640b3305e92f2029b09d617305382eddbde2da01935ba7a44dd6a94e3ed932", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "663003659ab1440aff0a8fa5b6db909d829451fd574406d8b9347f7c42bba676", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "573fbeb6fc9acaa755c8cf4decc654482312d94cdea433b8267b6ed8b0e0ad0e", "T3T1_en_test_msg_loaddevice.py::test_load_device_1": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "29a375fdc54698c78a2117e6a37bef344b85179bfb15af0b4dbf649153b14705", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "684580ad2697540f07f7512b298673ec2d5b75f487b461ab8211d8290fd50262", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "d9ae6f282dd27358126509712b665079ea6a69003cbbbfb3107875d6197459e6", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "0a0badd99b7e0be703965afa388edd1ae1b6f3a96fbcedd457a6de699b73c3df", "T3T1_en_test_msg_ping.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "d5e2fa75fa82852c35cb1c603a225cbc2bb42e4f13fbbf97476c920962597c4f", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "dc1171b4b1fca407dc1692e624c16c48421ae42ef665b58394fee0896a79245a", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "4f5c7c7ca1e2c8bc0f19886b9dc3a9c75dd76fc918b54b7d54fe0584072bb162", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "96822ce9894896bc7c04223bf226037cc6786ebdec84c8749f8420ad48954a5b", -"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "901237acb1169340674c16b654913676fbe8bde1d5917c8ea8f640a331d79387", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "ef4a453a3b9fea0482efbfe81211d0d144d53ecaa3cda7089dadadd03bfd9d6b", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "030f7ca3d8ed718340b2311f66af1adea2cfc685f6a94ca07abda09f79f7fe5a", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "0a8bcb6567ecbfadb48f0bde53367a383faa6796354fa2de04ede1cc08da64d4", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "afc88dd78d678a5438a060572e1738ae2186894a2952aaee59b29ff92831d403", +"T3T1_en_test_msg_wipedevice.py::test_wipe_device": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", "T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", "T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", -"T3T1_en_test_pin.py::test_correct_pin": "4acdba6fc9296da3d3852bb4f112cceb9a54dd1521749644a1408c62fdce054b", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "4342bb5591d3fa8fa59a3082b50fd09fcf59170a554a2dc2ad36e5ca0bf44e37", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "1049dad031ef6efddc124cfc9c9c9db47868a8e498909d187967d6b1accce294", +"T3T1_en_test_pin.py::test_correct_pin": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "13741461ac85f991dd8b51158a504aece76a45718afe4e359a611e09af09c903", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "10dcbf9b55b70283453c843eb4ef97173e9cdeea58d20a121f65ac0c4e9aa1ea", "T3T1_en_test_pin.py::test_no_protection": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_protection_levels.py::test_apply_settings": "599a2707671119060044062c830ada7913afccbe5dc6200e6f6559e701c160b2", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "fbcfad19fafd76c22fbc87d0fff0dceca79cd6a4c1ca3bd86703653f51b78578", -"T3T1_en_test_protection_levels.py::test_get_address": "5219fa332c6585e4e396d75e01d3a3b58a43d73425895007b9faa4dc7f6195e8", -"T3T1_en_test_protection_levels.py::test_get_entropy": "9e34c5bef32a2b25e4db86f33a4f3fc27d20e9ee0e188b7de284355aa2703561", -"T3T1_en_test_protection_levels.py::test_get_public_key": "5219fa332c6585e4e396d75e01d3a3b58a43d73425895007b9faa4dc7f6195e8", -"T3T1_en_test_protection_levels.py::test_initialize": "33f755376adf25e06e3f738f30e537ee2898f0e5c587b545f504d2f2ec25638c", +"T3T1_en_test_protection_levels.py::test_apply_settings": "d0509d1ed836dc1aad9d64796bb30cc4c6112ff12211b35651c6ecd52ae6eada", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "a3294dfd27f8cdfe399d4c8d081e355f0dfaf7d0156312609dcf35c0f54be256", +"T3T1_en_test_protection_levels.py::test_get_address": "de2a29df408e0f19030fabb4af740d6854ceb595d1c46a7c626fd6d41e2cc567", +"T3T1_en_test_protection_levels.py::test_get_entropy": "875e1a7613c30e744cc948c7b08b5ba1841d5082ce82d0dc81d4db84e046cf78", +"T3T1_en_test_protection_levels.py::test_get_public_key": "de2a29df408e0f19030fabb4af740d6854ceb595d1c46a7c626fd6d41e2cc567", +"T3T1_en_test_protection_levels.py::test_initialize": "46ac2ded8d475b18ac328c8da3a163872db39ab28f6a66f3b7b8fd3122796ee8", "T3T1_en_test_protection_levels.py::test_passphrase_cached": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "55672d1449c73395c35e8eba18f9340e17f0472d3fdf224b7a3d83e7f410a885", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "97614a2ffe8c8310c4ca779b61c4f906d5702d9162f9a702c0fc32d602b830e8", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "56175abda93c4cad04f9f948af7657a10a0b497d3d57a2049df47075fb5312f9", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6d6b0b40fb3d91b8fc939343b77556be5881e42e8ee2099ae831b3cfefcc21cf", "T3T1_en_test_protection_levels.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", -"T3T1_en_test_protection_levels.py::test_sign_message": "4bbc90ebed65a7d510d017dfe8aff60e7678985ff8c59ac94e16861e938d4b2f", -"T3T1_en_test_protection_levels.py::test_signtx": "fbd9f4d5e4660859d2d275fd5af54a5b0d68552784f9efe8d06bc4043e13fb74", -"T3T1_en_test_protection_levels.py::test_unlocked": "83b4b66331a994e98b1bcd9220c0e02f2d29d3b2985ace4c5b3f67c219cbfe28", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "fe83100191f89af1aeac2ba9ee6a305c1c80aedd1f886803e45fe8b5ef131c7d", -"T3T1_en_test_protection_levels.py::test_wipe_device": "1a0374467dfb41fc16850c48ca3fb4ab72547ef581c569dfe55e13c390f7f3af", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "7c68ec0cf6cb63b6009737cdd18fa6980f2fa81e8a074335660d92288da5a57b", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "de2b2bc8b2ecb9f606ade6bc3c56f5c65a3172d6d38ad068c30a4a52389c6fc9", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1076e3ce540e88adb03e97f59de1866fb290d2c5de65bdea3330c16a891a0c0e", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a73142de230f60ce35fcf131ed513655adfa7df17731b09eec6a11d962a07ac9", -"T3T1_en_test_sdcard.py::test_sd_format": "839580564292a157fc64c042538b6849283501ac04da7114d16974d345a3ccef", +"T3T1_en_test_protection_levels.py::test_sign_message": "742d51d6b2756d555c77e3afd4d008a6174f8a986d80c08486ff4ad7ad2fcefb", +"T3T1_en_test_protection_levels.py::test_signtx": "e5fa6a319220a76c07e774c7be5722e2c549ded81c45b14ad31ef888705658d2", +"T3T1_en_test_protection_levels.py::test_unlocked": "1e1acbb28c9a60fbc1e76d5267b4f3569422c135cfb9f3f5016122be51a4c2b7", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "f645957539c59e5bc7c890ea71d9ea221bcad97f9d141e12a2440725785aaf3a", +"T3T1_en_test_protection_levels.py::test_wipe_device": "52c4945ee2f3e88dba5d8e4ac99bc31a8c4728f5dced88804b191d1977815b53", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "1b239f19b1516e8441f948558172f62b33aaa3814b9365cb5b022522f3382557", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "a6cfaab92ce05c58b7f6197f35f37e15ee5720aa0b62973d9025ea77e99908ca", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "17dca9f48d8fcb743fed4d79556ba687e344b98383c411f89354942969946865", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a2950946cf65e1eb983828b84ec7957523a0afb780fa2b12601b649e92e87119", +"T3T1_en_test_sdcard.py::test_sd_format": "20a0d01e3d61f415fc6ebd89727ef893a99dc45db308867625e99747dcff6dd1", "T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "847cd5157b212f8eb8e707a53b0aa7187adb6ba4c6566875fb0a6a5d91a3fa72", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "b18e90f6f0e926933592c32156e7ac2e1d9b7d55d28d6ecd6dbd3dedbafa7232", "T3T1_en_test_session.py::test_cannot_resume_ended_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_session.py::test_clear_session": "a721374b718101fa034cff7d59969c95806cab958cfed705fb2d83aee06f74c5", +"T3T1_en_test_session.py::test_clear_session": "c679e27a7b2e733e3827d16344e2bb9daa3e2ad58220f7b5a2cb6eb708b9a71b", "T3T1_en_test_session.py::test_derive_cardano_empty_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_derive_cardano_running_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_end_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19620,8 +19620,8 @@ "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "67cce35faad540e24df64451de67cccc334b76a931449b5c6cb173768cab0e64", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "214466d2c0357c010e2df721b450736747bc57268d566f370973a3802f13eb22", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "48883805f726692aa612ace74c51d0b0c6fe06eda6898d41c80b9c7eb3e44030", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ce133716ad2b897c7eae7f2df50a345a27d5307c01a346060a0b19210d8067a2", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ce133716ad2b897c7eae7f2df50a345a27d5307c01a346060a0b19210d8067a2", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ee652a595477d5c92280e3b947eb43b1fe5f26e904d3beb6294de8bbe6370734", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ee652a595477d5c92280e3b947eb43b1fe5f26e904d3beb6294de8bbe6370734", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0efcb7411cd00037f181341983a0383978527ea683a9ee7b2f6a67d015526e84", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f19ba1a048878a769fa8b842fd2a23dd8533e0b72c501fe5cda93a5ff9075241", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f87ad1b10316f25c869668f96fc8a6bdb47b3d9bd6aa7c201882ae179f2a91b4", @@ -20583,55 +20583,55 @@ "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "f0525601fc6234f481301599c0b6aa34e3e31a2838e8f2a4398a20eaf15f5b60", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "cec56fb3796ade39ed9b3fc01ce8ce385ea4abb56d5f953add8cc6af68ba3582", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "c10634b4172eb0a1d0daf786b0e9511076b9fe1af3e6b4d5a905039b897656ea", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "c8eaee5ef0501ba5cb0d6f9d96fd1d6b6f948e44fe62508a52f588424e4e3a58", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "a1d0c54b6f30be461479cb2dccc31f9f0f790f73466729cf74d2c2f2d66933a4", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "95a4130a90ddc60a42714ab14ca571af1cdb3e52673af2d08dfcd48de275302f", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c97e6b756a77c791fb30953d220bdd11d8ced8b90bc9d1863c58da6d64c827c3", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "754c31eb947e6ad8ef31aa13539e4d8eb2b938160034e2366582ccb15223d883", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "11d9d8b2275d8a5098e9e2159f7c6e70832381267bc2b670dd105c3cf033edc5", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2b11f7167920d97fce59ad69d21e985a26b7f71cc01ef14253b060d87c760e1c", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "cd288bb72f139fc127c5897aa69686ab08530a48b7a5a19db8e56a058dbb2c5d", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "97c44c3a1b73e971aae356cea65eab47315aad355434ba197518134f702c210e", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3f60679c409b3043fd593daf2b107c06aa6447a21beea0111c12386ebe1c41c7", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "892c5b0b66158ed157a6b890606d569849d22790a742a768ade7b54ec5ce45a9", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "64716fb43f4da0bed379fe340ddc903dc0a338b1c72b1b6579b356d46a0201a2", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a0f9b8b4ed1395dd75585fc46ea2a309deb769a520cc9cff6df29fb123160964", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c728243e0333a435cbb567d25cc1f9f11b6c21fc646d76449c8478e18dd292ee", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "63136b7e300a902fc00f39682a5770afd2d27491adf5f6be156e6ad8007232fc", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "11d9d8b2275d8a5098e9e2159f7c6e70832381267bc2b670dd105c3cf033edc5", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "baffaf07ed5a24adf942afa72f8249ac526e28076c4c6babf13976948a5a25f8", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d13986ced2845d8edb6e4d7c3ba5a878597fa999ffd6e650f5ff6c3e0bf1a171", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "1e0a4aa56cee727ebcc02286137e44596f7129940abb64e6e618ae774e53625b", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0b0dd9f10bca3b438b2f47c36731930d441238f7dfed933343d0c856466ca947", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "6ebb8db786aac030f7fa244ea65756cb9657a1601d7b02fcc2be043fa05956cf", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a8af7bc481c95357b51959c290f396fa083f51e7272b2b33756e568d8b41798e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "3dc24ecf1fbe182a6b08328d16abdc652d0f976b9766b96ff5ace9b90fa9a926", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "98c21d0e90a3bd6237fdb0e5bcfd96529a3867fd4f66271e6d37d30c2a6cb44c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4e66c203cb3f52c41c9894fa812596eba512759942896098e727e2ab3cde484e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "7098e64fcd93d5f74331023026249de274d9e388052bfefbb2d6c1edac7091cf", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f5b91c291beab9185204fcd47d6d33eb059df8562c99450fd96457a819269cec", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f6d85106dd3d0b8bbd450df7c24c6b5d8a3735972c52ab84690aaf7c8f055c3e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "90b0cad16ed61686c1b3560ed167c55ff3c1322171b6c8203963a748f9047b3b", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2a06c6a7dc159dc10b5b7675e480eecba692ef053126f87f01ec58a879b7eab4", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fec1c82350c2cd5ce6274028f63aa6f528051fc184311d3acfebc982207a7879", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "dc3698553e11a008e61cef04a95febf50cc4242727a312fcb19d01219f7c6e86", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "3250947dbb2dfcdc5835552dd1f04dc3a0a7d5b0cab812a69cb8d05d048e117e", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5994c09a792afffe90a4b821d88636bb81f2abe96da6de3e1e724c86d96d7dba", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "495df945eae80c53c83ac1be361eb3cb9ba9336a04a4039826fbb729e1fe8246", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "614fc559477df4ed6042b52356ab590272e2d3f4e5f6c2bb5422a0f5f9bb2bda", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "5daf4fb93cbadbad2fc761d3a786423ae628a6a5eb762923743868b066be1612", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0dfcc4a9d35fb7380806d33d91fd6df54619efcd567f83449fc6ac7b587e626e", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "33b0be8c5e4527b5aeb5f6b0cee835b149874403772208e8c7c237e7317251cc", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "47fd3bbeda099a43c7c382fe0347ba755aef0fe864305dd3e111fd863b06fe44", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "83ee8c0d11cca28e1ff69fac86824e937e26ecac7902cb55b3e5fa75b6fc97f3", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "7ff99954597bc3b8782138c75216156c1337b25082b4236457bcdcdb051397c6", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8a120f0ef23335796db00ab52e9421b465f158b6b3fc860359ab5db376d1cefa", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "85232cd30420eea4c63159754dbe281931c7a84a960ea3fdd55ce4da5ea163c0", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "f8c4be8819a7393f5e636f9c83febed0d7f3c9e122811b9cc8cb1c5a7dc4ab4c", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ee0c5c964d4af0d24ff7c1e8d9a13c5b588fb09e5c697c0211b9d2723f6177d0", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7840b4ff25668f4397bc1ea41c5c37554f59a7bad2da6576940f4eb8bafe3f90", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "485a0ad1cc4e2392b3c95b0b836702ec16c346f97677bd2e532afe2ecaabbaaa", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "06ebae772991278bc3d70d54d5973cece3a23cc48f540cdf7c53db0ddeca8d9e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4bba405fbcc0059829b07e3b661f0ff3147a933eb70f29da0f9eb7f42835b01b", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ae091a31b493416009cc1fd78e91b03fa6e8b4be4c0b2cfdd26637f9034b6dfd", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f9f371a6004ea49bd9875321624949d7a1ea79086001bac0014fdab2e5c0f4d2", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a322fef65a4072339de24ecbc6396e08a5484dc95e732373f7ac2095a733db93", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "852071e59964a28086ef5c7e79e231cdeb4661d9ac01a3648547f5dfae3015ad", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "86559b391b7f33069abc6fe73b36d8b58394cb55578f773038c2eabdc4b12c38", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6d21b68a32c26c54021892796d719e47858b589b66521afe5a61b06dd864cd9e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d0503788e182fecff7271302e2763639ed5622510ceea123d0b1efcd18306f56", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "203a8c40d3fb57ffd4598cdbe7d08435680ff32597bb3eefe80735a29e6b49d2", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "9f4a24cb27a5ca56b1942a61c28a44ae22a05c9608b4043c0c0ec7c67e0f5aad", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "6419c7f9789ef854f2d2b7b8ec2ec8395de0b4eb74d98dd91735ed60eb17dcf3", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6ddf6c3d09f5a61766484fd001c5012b66c1fcb4114fd0541db868ed31c98e1d", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "ef89c52fd54a4f62d2be7ab88f3c9c757760b7ae49466b0198da681dc0c77b84", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9963da72b07be3a1d91dafc6652e3985d7c1b4072317889b54257f4efc52a79c", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "220dc30f25353a2cb7c7a52b40f2cbfd74cd6bb94cbac4e2dd9a15acdb5995c6", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8c8de914094afa6192e1a9dfc45fc35bfb8d0f06486644f125c85c195e0982f7", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9895a1e7c7f48d639d1b76594f405b8ad79d587f152babcdc6737d6b24789edc", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "1e5840d00919ce05da33475aaf732dbf20ee9454a1efac01528a27742ac75752", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ee093205784fc8c2bac72f31db6e5e038255219eb1ee488c4422c177c6f7a11d", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "07a50bd56d8bb3ccf5aaf78293d37aa0926b655474a7dc17afd05b1d38d3ff9c", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3969f6fd9fb280cb72f8b3552f035c84e0f44c4243fa003d050511e3ffab7bb7", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "bf43a6c22b64b6e201cbe8a177b200e86dcb41bbe05dba55c8fad36cb2ff6b6d", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "612e84676522be4b88d9f320b3162b95a362574229ce36a61fffa5584d09be0b", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "715cb83078df96676b262e635747d5efd9ba1625bcd2568f6a2ea5542dc12c04", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3dfbbfd2df95333f0a9e36f3b8451fef265a85cce702d4c22433e3ad004be906", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8776e6600cf307ba7ff195811e5d4f9387c5c7c0b26cdf0f9dd4391a9e4accfb", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e8c7af705ecde219880eded6feef86444f4559aba438ff09c0da6db99f436668", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "24b5164f6e0d4ce59713dba71c2126461e7fdf54ab07bb25903db1651fa109e4", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9c707ef0861a255cd27ca1feb26495fb82cf61e64f60c4eec7411d62c12e8a54", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9eab11e68ebebdbcca82ff01a7ed361693884fac93b3b52fecfcad7523a9dcf4", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "66e2f167bffa58704c1bede0affe4644d73184e9450ccdcd13b4df02b86c3dd9", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f17684c72d0810d1e0223ebf7dbb3f65f1c15507fd2a466b2d0617edb5318f0c", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "528a97d2c6165861b8232cd886953f9f6365cc53cfc9b20ead9ca2e19cec516e", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0cbe1d5ec2f29ba82ae1b0eca9e0e59a020411704388222475746d85d88556b7", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "adf6497bac5b7b516431e8b2200b85cb8e52cc44558e4cbfc77a590eaa3f86b8", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "37e610f9234e5b14c6cdccd1798df9b9a93e580283010661875bbd04903914c5", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "01bceaa937ed7d54f14a515c371500b21147a88018ce836d2e70dd2f973d2a46", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "317efe02dc6cf5ae1d306dcddf94e46fde2a14859fb688e2b7a9df06ce92def6", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "89bf880bda758eb19f52ed52e067db9eefc50ae733ee22b5fb588c1503bff329", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "225f1137de97158d11ea2764a86265a4e3f75a79b8f513fb2ecea8727040b5b4", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5d5718a47541b038f212f045964e93f42e5465399399475494ff8e19231d8609", @@ -20773,35 +20773,35 @@ "T3T1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", "T3T1_es_test_authenticate_device.py::test_authenticate_device[]": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", "T3T1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "138fe2e64f0482b6438c2c1311baab0dcf9c2dec334dcd6b6d451ce3d74c7bd3", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "75007fad5a482cb9b4e5322e4f2e2e6d1ac7e34d23fe7342f22582c94fdabfb1", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d207a321ec1a3f15db80431b4a09674aac86be043d1c1f9f9fd5444920cd50d2", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5af7cf41c1051f948018c448ffb7c914c005eec4da2dcb2f9b205de7cfcea154", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "9521f51939b6ad3ef8fefd0e632378d4c02718ebc74bc5e72f1a9c2dec7e28de", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "c8d5a9aa16243a1352a60f9b44f806b675f5010da969ea3a6972bc0db4ef2f2d", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "1d79f4d2c33d611fd029514ae1e09ec73e0f77b7c5197b367a00fd6922e1be08", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "2bca22f069afaf192b2ba8289a1369b4acc9d980216e0c020029ab37b90e8720", -"T3T1_es_test_autolock.py::test_autolock_default_value": "6ca410ea82138daf1ef6e6c98a91b7c7b4513cb128fd95c3abddba61b91a47bb", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "5af59690117138034cd7426b51bab1e56379482ccc1d1e0cf19bc33866a2649a", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "5af59690117138034cd7426b51bab1e56379482ccc1d1e0cf19bc33866a2649a", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "bfe449bab81ac0e5942dab84633d6a383e61cff35f3a74a2e511609940731d05", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bbda36fefa9d81c132837f76db13b28e75f62a86eff14da19a910bdaf8b6bced", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "479b89c9478792e049eea05cf3c256db515d8f9e5d92ad644e23e68d8a6ac802", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "aa6cd0f34cd0f4a010e6a8f099037f810635fbf5dc8041d1a57b45fee43e3fd7", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "644c19e54315c08ba6c08f2cd57640f5808efdd04d455aa83a03dd46535eeba6", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d14c29ed9b2f94fd8d9486432945a4d06323b967a6e9205189471fb6a4d8700f", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "f3bb2c6f6e8ea4fde676784f570f733863c5367d2b1b2f3edb96161d47f8f6b4", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "6a857b6b55e8e5c53e962949b86acc659f7450846a8a8df47969b09767a0d66d", +"T3T1_es_test_autolock.py::test_autolock_default_value": "56e9f5abcb179842d612673acbb40db45bca091191cab4aa487236a2b58b2cbb", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "1cbf0deb34097497eddd880796056f409342fc5693610911d46c16ee6793958e", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "1cbf0deb34097497eddd880796056f409342fc5693610911d46c16ee6793958e", "T3T1_es_test_basic.py::test_capabilities": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_basic.py::test_device_id_different": "4ea340424999182f67fe9b2313142055d2bb5a7407efcf6caac9890d93d9f1c7", +"T3T1_es_test_basic.py::test_device_id_different": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_basic.py::test_device_id_same": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_features": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_ping": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_busy_state.py::test_busy_expiry": "277899ea04ce989380c13c50fcf28367c9b83bc71ed26980ec022b5fe2b85c17", -"T3T1_es_test_busy_state.py::test_busy_state": "baa98c352066ae48eb165660e727b0ed01051c0b36ff7d217963d6c4e5983fec", +"T3T1_es_test_busy_state.py::test_busy_state": "01a59f0db9d71e844cb5a5c04c231ef5a42189137292e596f481686d2f54024a", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", "T3T1_es_test_cancel.py::test_cancel_on_paginated": "e5a3496bcaca85f81453303aa5c8cbe07cd288da5b6a09de324a92fd90b2beb6", -"T3T1_es_test_debuglink.py::test_softlock_instability": "6ab1f5bd8a49bb0ba96f0852579c46c1b979667228a18d6c8f784b6fedca5bda", +"T3T1_es_test_debuglink.py::test_softlock_instability": "26e56b2e30a17dd5ef55b6a4eb44c2664cd4f8cd72e4f869f2a61bde786cd626", "T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "52c7ada1d96481aaffbe62bcac73caf6b4edb933f4a06c075593e3074536dbac", "T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_language.py::test_error_invalid_data_hash": "c36253c2168e4fb39315ebd7c8f924bc7a6fc898dc30d4579991682c40d35951", @@ -20816,7 +20816,7 @@ "T3T1_es_test_language.py::test_full_language_change[es]": "cc6f432c87d4732b16e362a61d4c809fff4489f4ffaf54f8667c18a8c126ea50", "T3T1_es_test_language.py::test_full_language_change[fr]": "7b3c6d92c4021ec1456ab282c9a707071e97d0837f170017bdb817659966f7ed", "T3T1_es_test_language.py::test_header_trailing_data": "da0eca61925fdcb627b81f1c4ae62390299934652e996c64bca4ac9b75668ad1", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "8b0eaab7903a72888756d2664c7681529280c449424d8d0d420983e9b06a03ae", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "ef88852302c8aa3dac1aa23c562220d933a0f5ded8676c1432f6023eebb411f5", "T3T1_es_test_language.py::test_reject_update": "126edadff76e22ad518edd5de8b2029819820f050e5b4002a332a3e38c787d74", "T3T1_es_test_language.py::test_silent_first_install[False-False]": "e5a007707078bca55df39381209802081abbc429d1ab40df24062a669e5f3c66", "T3T1_es_test_language.py::test_silent_first_install[None-False]": "e5a007707078bca55df39381209802081abbc429d1ab40df24062a669e5f3c66", @@ -20826,15 +20826,15 @@ "T3T1_es_test_language.py::test_switch_from_english_not_silent": "341aa1930c0757e8f6b630760a40ada16b26b03913c9052efac175b01d2b6cbb", "T3T1_es_test_language.py::test_switch_language": "70376283f804705961e1da59eb547e1aafa21a5ee4252683af15ea306cf9c0af", "T3T1_es_test_language.py::test_translations_renders_on_screen": "c8c6c9478d53e92bbf12dfbc31cec270b68010101ecab5a761ed2eb7f1d63b42", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "445070681597e71c74303f96196d52b1fb31aeae43a2f800d764775773c2a7b1", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "54eb1c593af3da5c86dcef796df847a7c2bfd32fdf6cce278315d7d5b7ef13e0", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "2e645eff217771b9d352015e3d33135422c7b66960da99f3274964949f2efd8c", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0b906e49e1ba49133c6d0cfd82b5290265c992e3a1de1960794d55a22e5e2ddb", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "1c1ce39fa29328a68113c4a87dd1e45fe0e6a9eafc9bbf830d230854440ac595", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "afae595a157f31c901b374507e7ed36b28e4276a698131e8a62134af4808dedf", "T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00c5d64174cbfc42469465b5e80ba5a1ba5eb4fb56426994a9b5ad335dc8438c", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "049e36d2d773f6c8f08a660a80d41af17ac33fe8d8cb7f7e27c26e9927311a71", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "83ef6a07c6f27cc878273bae66397b7d8f3066ba7732ef1c2d35244c8c9aa409", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "a4ab626d1e42dd3b46f0663f9e8a8df03659937c239824ed73830b823403471b", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "ffd8c090f0cf75a4b44ed919a893661f57092dad7b884fa1862975812457b3a0", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "0cdbbcc9774b858e0694802f24f0d89241b7c675a0732bd3b39866d17ce000ac", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "176744b9af8759a11b5f782ae3e7e6e65a3526203cc09f574304860dd3ae1b06", @@ -20848,61 +20848,61 @@ "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "f89483dc6f9aa7809ad03a113f705c9fdd9bb42b1f5a40308503e9cb35cd7016", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "421c61673386a0b91e40e16174f442b3512f9416bbe0d1b6910f71ed1447d49e", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "d841c90895f7736f16584bfd74811a7caabe38a41e738d3eb271fe27de56d96e", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "12cfa14a2e751148453d7d936d7eb5d898683e61a739f6a7451601b7a091209d", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c60ee9c656fda0a017c6b4c48130c90979057bfd69363c9afc2a2175b236e40e", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4b4646f4f8d6432bf7068e820f297da75b7fdfca23cc974de48e4bc43e096076", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "1bf2082de97d5ea56949620ccd1da412d365d5af244bc653b48068eb68a27837", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "575d01fa1353896346293c6f3aa85040aa38267e93d933553e219acc3a7fdfbf", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "565b9029a8870b79665afded435bb544e82e8b133cc26a4637bfda56142edf0e", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "42e366f67d02e0dc642ad4937f7e553cc86e7495528d25b73cc0419ff6460acf", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "14253d785526566da2d494cec384b9eb690681cc86d5285f13bd59106307ebc7", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "4def375db126e1ba85f44bf2d2498479ee8d75192ac3d0b1dd69165389a90c90", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "73ac56520a2bafe4c44d7418957cd254f16aa2c4f1c9b6ea8836953fc939f2d8", "T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "58597f0ea23dc1b1ba2009cc073df5672385484cdeef261ca6835c3b8d66fc2e", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "3089d8358b635e98e56754af52dae4a037f088d41f52296c531a05c47cde7b27", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "4554f6ab9ef87d667c3dc0c89b1b4c88e1f0dfff87068ee4debf80279de61712", "T3T1_es_test_msg_changepin_t2.py::test_set_failed": "7c9576ff8fc4c1fc3b87782aac6c015112ee968959e1ddb2bb8e3717ddf195ad", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "b6a51a594bd966053354f534055f271c612dfbe09863b9d1b8c831a00f47da45", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "47bbfe44c0dfeac1cb77384b8e5dba8b0d3587785b155870832c92df31850fec", "T3T1_es_test_msg_loaddevice.py::test_load_device_1": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "70e77e94e8fa3d620fd67afe52287641fafe34ab5761c0818b6dc1b15ed38b52", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "459fdc8bed25deb41cba5a210b39b2ee634a0eb468a2aadc766dcb6c909273a7", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "cea5bf2bd5bc31745d4cb3c04d9cb958acc3c055ef537da5863f68da7d089eab", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "3f998178fa0bfef5f40a1bed446fe0fbd09541cd10cf9ba0f471d0ef7f550f0b", "T3T1_es_test_msg_ping.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "a8107de3f7a7bad5b3f2d8172fcf87996980666d3f0b3553c966b05992cb7efc", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "8f8d288fc62b62970771d286e9c5601fbb44cb33c0b4854f8da43f0561ce5650", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "4793d917a34e5c8840351489b2d57a8a78070a732f0a37f8bf01558c7b605f25", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "23f730cb4fa35356928eca40fc7a42e6d237f140eaa72b8812648ea39a8c1984", -"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "4ea340424999182f67fe9b2313142055d2bb5a7407efcf6caac9890d93d9f1c7", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "c61dc1ac8bcd22c99901925d03e0525a3d6ce151b4fcffa4aff6e3a3ba40e7da", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "8a0af022678a5340f20619d38cecfeacc5d1c3cba0a205a5e0593f8eedbbbb82", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "c61091b534a94f870c937819d6cc81005dbd5aab7acbcaed8eddfaa4393b77e9", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "201d5b07bb64be2b607bb22ae004c8369391123e360481db835842ee73b49da4", +"T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", "T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", "T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", -"T3T1_es_test_pin.py::test_correct_pin": "0c4a88197888c37fc40347356c7ad3eaab380dd7ea3d475fb40e68aab9090b77", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "f69c6a0f2a7decf663685ecf90434b80cc3d3dd9f314cabae0971e43ab8d33fd", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "2ef02751ea2c7b5df1368148ce7916d2d6dfe4f1c5ce5f07b82c971730458406", +"T3T1_es_test_pin.py::test_correct_pin": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "bf78d976a5d1feddfb13e6f075c7b430ee4a93444a2d3151fb2996124c258d78", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "17f1ce3bd304d913c7e5a1de3c40aa370cb2809c8fd2de3ffde813736a90a5d9", "T3T1_es_test_pin.py::test_no_protection": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_protection_levels.py::test_apply_settings": "781bb123c51128a8ffb1c99209bed7ecc0b1bab10f380f8a438dd54c999e6fd7", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "c356e4edbffb540fd9bbe211f59744a36ca5a2e537989f39542b0380fe112bc3", -"T3T1_es_test_protection_levels.py::test_get_address": "7cfdd17fb6d9ac3352b1f7e7d20832e39845fb9780a389d672064cc253aa02e4", -"T3T1_es_test_protection_levels.py::test_get_entropy": "8491027e26f3166da96eb42d24d1fee0cb831f831a123549f0b82e4b6b8bd4a1", -"T3T1_es_test_protection_levels.py::test_get_public_key": "7cfdd17fb6d9ac3352b1f7e7d20832e39845fb9780a389d672064cc253aa02e4", -"T3T1_es_test_protection_levels.py::test_initialize": "a52bc12f89b3a4f6ba12655987152016a9a95fd635dc68feff8a694c619bec4e", +"T3T1_es_test_protection_levels.py::test_apply_settings": "bab823c641ad2a7a9a93399536ee111ed685463c35d48602f109a579f01e835f", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "9b322e3c54c683602025e336d3246d2f20c42e7d76c9199844b1427ebb01dfde", +"T3T1_es_test_protection_levels.py::test_get_address": "0b4145ecd845ecffbe97fcbb40d5ed06d5cf8155b1a60b7868c28d24affe3b86", +"T3T1_es_test_protection_levels.py::test_get_entropy": "4ef624c8cd35eadc23895f8dfd3b966a05c43fd1d14c8b54ad3008b747c5975d", +"T3T1_es_test_protection_levels.py::test_get_public_key": "0b4145ecd845ecffbe97fcbb40d5ed06d5cf8155b1a60b7868c28d24affe3b86", +"T3T1_es_test_protection_levels.py::test_initialize": "1854c5ef135e7f997e906bcf1e6559ab8092c52ed7d21b6eb7aeb7f68e0f06dd", "T3T1_es_test_protection_levels.py::test_passphrase_cached": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "d5f99d01922edaf5170e7293739281527ec9571260e5283153b59a31ba7f737b", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "53fa322176f503d836a0e73b82e63dc5ea4c64d7e7c6153323edd6926b026fe6", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "4325253d3affefbd89782a57d834d076d4d512ac8d75c152362e94be900e6f43", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "a33817d19c987a248951972930ed3332405cd819367fa30871a8bccee700a3a3", "T3T1_es_test_protection_levels.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", -"T3T1_es_test_protection_levels.py::test_sign_message": "baf4c1b79eab7eb294790f13bfce0be317faf8d0cec7e6c593cfb03ef4eb04f4", -"T3T1_es_test_protection_levels.py::test_signtx": "3cf1a2a281bdaed867ea3cccf3262f9ca2661a737bf7b76330a2d45784fdbd2e", -"T3T1_es_test_protection_levels.py::test_unlocked": "60ff8ec09a5e2deb2b8fac5e25164a0a27332644e930d36de289c81fb7c91185", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "4c7b396a68cdc3a60aeabb6dac07e5b2e8791a13f27c9cd57ea38fef72e7c7f2", -"T3T1_es_test_protection_levels.py::test_wipe_device": "842105bd5150e50eb998bf4d476aed61aa4597118b88e765469482cfdb3fed6d", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "ed59223647e5ff848713761814b549da9ae8a82615bca4fb691dc26fd4f1aa9d", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "c0265d5c089f39b5befe97b7b895e83071a3fd8ac76be169b7a993637d4c1a13", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "aaeb88fc01b2fbdc5b1c4d8b1d8b9d7ef83c7aade0c1e97b5c397bdb14ee8ef4", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "ce6bd18611930812a08b76ddb78a2ae114d99d4d35cfa7505239b6c59e0ff76e", -"T3T1_es_test_sdcard.py::test_sd_format": "fee32110d7356e4ae73cf07d619e53cefde46823068f442799f3fd76e2ee9225", +"T3T1_es_test_protection_levels.py::test_sign_message": "73b316e8153eaf2beb8a0c22b2905b3e8f7ffecc23c34081d2fbf5403175ceff", +"T3T1_es_test_protection_levels.py::test_signtx": "4fad28b8b08e7111d112c43432200acd91a4601b1b7ab856268604a57412c3ff", +"T3T1_es_test_protection_levels.py::test_unlocked": "ce25ca8b30d3148e193253d3b7e4bd823f7aae66e2af5d932e01e4eee4dab8f2", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "189639502a74757e4491b9636eca744d448701a24a1f663af07fa6f3705d35b8", +"T3T1_es_test_protection_levels.py::test_wipe_device": "256014b2a3321bcd43240d050853cc34b1102d8fe9db6b6eb7b4d3d7c44c0a59", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "76e46214aa557b921fc0b740d4168bf88c34dd0f3a8f8cebfcda3293813b7160", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "c3d2f1ee21c8cfdde8f6e7a501bf375f0a2028849b9766f86e0398742130e23d", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ef358026817d4d7e183bb480cb0119be9c89209523f2fae4462d49b51f6ad009", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "58bc05745701f67056d140f0c871cb89d367f7dc266aecde0076b1a0e2355575", +"T3T1_es_test_sdcard.py::test_sd_format": "24e635fbd7426cff8a77fcba8583411c5467e87a284c790db903b5dff8d659c0", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "32d043e1041667d0852cf4e146df29edf2495deab942dc88170b1f29c49d1cfb", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "5d090fc850275fd64b95e9ca13ee8802f693196126c0648886ca7ed766da219e", "T3T1_es_test_session.py::test_cannot_resume_ended_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_session.py::test_clear_session": "b10f9d7bfc14fe05a8601e5ea3e45e63ea6730fa1c137f7b3d542be861007aee", +"T3T1_es_test_session.py::test_clear_session": "e385be083c64141ceae4d00c8a5cd6fd168fabe12d192dd9db744f00eeb2b209", "T3T1_es_test_session.py::test_derive_cardano_empty_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_derive_cardano_running_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_end_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20965,8 +20965,8 @@ "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ed918a22412456053778cb6bcb6c637fca336f794973ef01bbac07be0ce53ae2", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "5214780974d69362699b9f38c5a96565178038035c4769dd6aae33c62abbd9ce", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ca881290c32ea550e86f81a1b3e00388943e74f55fbfe88257aca55df30c7dfe", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c5c9bd8e31ea68343dc88fcb76fa8e3a610404dccde7ba480a3c4757c4b629e3", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c5c9bd8e31ea68343dc88fcb76fa8e3a610404dccde7ba480a3c4757c4b629e3", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "9f9ba3dcbbc0891e89c8bb0c419b4c8c5e2bd10a15b89abfc8d44bbbd05a7743", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "9f9ba3dcbbc0891e89c8bb0c419b4c8c5e2bd10a15b89abfc8d44bbbd05a7743", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4ddd3ff4c628122beaca8653ca438adbdbc50219c114efd26a860ba803a3f7f7", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "92038e8b4c4561ff73a058dc18b90b83bce84655ae1cee83c47cea7d50bc9e58", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ecca8935b1780e4ac72847a9691bf0053177ae42f76539af0c5b87b8e9014251", @@ -21928,55 +21928,55 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d24faac533804578f16edce42403a479c72ce5f431a80e214ea4a0a32b7fb426", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "51ef3719930b61a68b05acd1e30b4bac03fe37cb02c1e011bd6d52ab5dce8c76", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "a72c505595ff8333d8a6328de0da73f648b8314a874f7431a8f84740ee48ba26", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "75e0ad115c6fe9ceb2336e000def46987272b3c853219249fa6c8661d2637ab5", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "28be4c8caeb2de5f6347ac29dfc7182746da01d158d25db529576e60339c4dc3", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "2a26eb45ccf3507483a1cd6f69d462bf099269bdc4583aa7022278278e142c3f", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1fbf5a5c8ba23a5bfb4b479a4e1482ca1d3dfb81a4b8418166a6ec61de5bdc60", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d1b97b4d479a1967024ea8bf4045678bf8daa883162939bb5ae758f6476d28ee", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "dcf57e2598cdd35c6d1726d44cc020c4bef53ee1ed8624224a21025c96668be6", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "f98108464b7c41ed9b5ff1d4a9321a7f6a81808abed2a51492fa3ddd5490152b", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "4fbe525092be7bf965cf58bd43baa5201ae496ac97dddad9e67c3f0e78014e9a", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a2005c3bc44422a2acf13c98464105c33cbaed66cb9cb0059d5b9381cc728e5c", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5154ac51f24ceccf5e421d76947977160b85c6213a8d2ce658a97f4f56d8d142", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "12a7942c3857b848b0f78e1e16712daa3476e7ea60fcb43975aa79c7d158bef6", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "1f185acd234e64cceb327720ec7eaac26e8112f30d2e108537afe532d6cfc320", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "99b0039cf294fffffe577b9b5615a5390beb760f6ab87f8a5fba03e9ba02ce5f", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "ba753fde1b3edb926cedf77c42d3607d3953587e314b8f15174308d52db11854", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5db6c5500436782ea08f597aabbb867c96ce2748bb6cc30faebefc53a781284f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "dcf57e2598cdd35c6d1726d44cc020c4bef53ee1ed8624224a21025c96668be6", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "d72559f0101011f626c628f1972e90adc3ae1ddfa3df805ac32e259d64aaa4be", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "8b33648f7fc7f020fa26961ceda14fb4a22c3258843e77a17bee76babeae2ffd", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0efff5854b2032080605a5a69db77b0c4bce4af3efc29d5d04c456eb40ebb8da", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3e01f1816d2d53dd86194701c9adfb6a4f5d0c47b50e442fe61482b0bb094afb", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7287bfb1bc62b292f70304a4341af5a138c30e0cdbca975d6bc65d852405ef9e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6e9cc208764961393fb0ac1bf1eb321e2f8e4ee18f5530355b8f9f20ed4161bc", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "81c02d5b9de28634d14ee4a8383b2c518f119a7c650d806bf5bf22ca8dd98941", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "339112ae31ad4f70b4aaef3d9f2604417deca19d3d24a71b19f6e0005b04a744", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f9564c2d8233fc78a7debdc49906778b1ef87937bdd424edb3035f9c74b2a47f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "adc042099204299d06506386fc68408b9a4269d0b86b8f517f69c1c848a7bf14", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4c29c86763b8483a8115014c3c670564a860ff990d67fea7e2dcee1a8826ef31", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "334e76acf270ba5a0e52159cb8787751355cc755f631bb21cd46e9f603772756", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "e76adb65bbe35d4ec5421e0938aa507fdaab0c532f494d5cde39eee36aabe5f7", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "e2a6fa0615f3c865646d837db898865941da8facdd03228ee875bd258e735772", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "923412d33b49dc8657007a8cb17fcfa88d07a3ed0b2b53b5ff9f50b8a15b9581", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "8ed4a298a1ea7c3c47adad37b415b225a44ae37708de65674b9838464ebffcbd", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "47a3dcd0cbbd97e5296c4a535f1425cb1fc2a865a8a6011c9c08eca3ec14adf4", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6b0c044b0a04951df5c04f7af76f3415a05864ccfc91ec4618feca65c30299cb", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a4c9a3d0a9e5b2e20189911d4919834204abfbc87881b6f7fe10db2d27fea4a5", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "82ae718de837fc30b5c16488fb63a8cda74ff3c928f161851a540bf24aab450a", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "00d7f6d70e5ef27856168c15a0f6f3e9cf4deb216f33211dd34ab9e0022c2b85", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a18187cb7c6f0e53d784ed13eea90171c244f6331fc69a6ba5864429800f6b6f", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "07e070860615e15cc8dda1d24c806d412f4681ace9c8a76fd2798ab18c47a731", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f71f1da2e054c92ed45a0c8eb2bf3b8dd318860ad441493b7026305cbeb37179", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "2bc8ac2889c5c14dc7f0e361d3956d906ab2d3cb4eecf17545d8950dc042c2c1", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "60db9d84c5278e514728dc5a2c71860fc7c8906e979ffca86cbc07ab62ed2bbc", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6cbb6d349ab23b04275591af9e0fb0361d9082b0e307ba5d1e92a037fbe8aee6", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "64bb45511b47cb44b7f973edc966ad5e7c28839b8638624ed5514db23e760ab8", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "3bc1870c2502fea57441e74826ce80029893267eafe56ea884848ea061232d76", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ee1afde5346b95492128dd7027994775d88f0dbe5862761dbb7eaa9b5ae10f29", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7e10181fd6563432da7c06fe7641856f2ed2f391db72a92ff11c11d6dfd71c8d", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "132b35daa64c902b2c6e89023bd92849570bdbc6f9199c3a79b52822ee174716", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "153e10a6be3ada86430dfb3d55fe1b1d40baecfb03e29e0a98b082a5923b21dd", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b412ad7163e82c0337fa49e27f0f10a6cbdb0d9b6ba0e7738cb912158892465f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "73a9efa1d81f294b0bac038a75da4c6da672b0ec509361f45a8e608e45539b54", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3151a76c9bb014e42237397a53d2cc7d119cb1efb4a67a028f66e2e4110cf824", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a675592972dda3a383d0650e13af87d07cdfc4dd9491ac87d9c2c447674fff4b", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "6d61a22ccc456d4a91dee7182800ec491b83beed651d52830f539801e81767fa", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c8a5f146ee40f438ffa945d96e6d56a3c6a0eecb1c1ef8aa2cb8badcced53cfb", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "764ec714fd71834ef6cb38ec8599d675f43ad652ca1c0aead359b7a254f9be0a", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "432de0db66b1b32a61d4bf34a111f2c8f591f46de4d7e4cbf6433fb70995cb1e", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "706f698a182629fb6f0322d6d5d85f159f609041708ed1e405836cc87efa896f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fdef601c6fd4ad6918018360f704c8f173a81492f6d04aa26684d29019789b1f", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7806e6dbab69d47df8bd3da53313805aa764c289b9762e035f8d54a6d418bf4e", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9d6db3913a2b4ca658c710d302d702c72dbd7ac07f997a5c407f420228ce2642", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "177d940e8509d13ebe59eaaeb6225d9659af68333e89d4498f41adec9cf1be37", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9af2f1a296d52736b2fbde62e9947d01668b9632ceef4defe122d3dd173cff5f", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7f32f3d879b5ca2b65b59e98a5b287385228ffaa5f964d5ad2a035c949176382", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "85b2d85e5b2c982c3ae1b9dc9997e640c7e2c78f2e37bdb8d6a5a6553f0d214c", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c4dc040032e12a2d593c1fec9dcdbf0260957a389c55a56eadafe87947c77d5c", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b69299b8e3b0c0514143d99b7f294cd92064f9b366eeaf8b942438e12d37c7b9", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "87d97644bdf6111091f8e8860b224dd3e65c5ca567484622b07a19180360a827", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "13550cd538da526965c6fc3c95c25c57afcdd94d855fa28e8beee0c203f4700a", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f4b829614861c7243f7a8e1a21752ef46d36aabe0976329da49cb24ddbb491d0", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "962ba6124c964d7f65c155c8dadb900a8321823389cedf2dadac501c3498db91", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ecdc734474fb85fce67b058b2111e0b0e3927cf588ef54493e0bcc463c34ca30", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "3041750968c23d2a9edb43f45abcbc66e24ca38aa511a4c5e4d1c7e552510af6", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3f16663523a63d167e1d63c5556d4bab5e32003d359d5474e08be44d421e3859", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "dba699f8094e56e61a1c7cbbec346b7b44958d1b3bd894d63411f7832760c94a", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "aba8bb3915577a9b441d83626672c4efe5188c43a46d937212a47387918a9c9d", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e78b8f94ef76c294a51f61b9c0277df49ba5f8eee4160af1adb57945cf2a4b6f", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "281e456b2d47e1a131a8fb69af9601978a65fe825bbf3fbe8d2406c13927093a", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "01a663d0cb99874fcadb2df2b93a631067438e23af4026dd3b89e54021ece1f4", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5af1f8e71febf6bc672c3531ab282b9ca2d6ff0e3f0d1659ffd7684d5541ebb7", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1007b2b01b08ae56e1557bcc1d1b36bbd1eefd43d2a8914699c43d1236b1023d", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4f9ee1f9c7d3cea7ad522024fc4558f91915be752a561740c00ab6828f1c0190", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a6e5e5b1422985ec1fc68fbadd183735b409f5c165a812c43447ad87fd24c894", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9025906d0de12594019c40eb53da1de21b35b069f302f29c58d954a26a11f75f", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e3a73286a0ed2f88393557fdd05be703e0c801ef3c2c702842bc91a0351ed80e", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f64dadea0d8f1eb6b7383ed50eb19aec053c629b46440243e1aab4af7380c4e2", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d3e3358b34d43b156727939c240d79ec56bca3ada089957a5f39d7a2b5d73114", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "202e5e73de82f528da179679b2bb7c80aa8333e417e0b0eda44ad2e74a0c3dc8", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "3daa711a54b41d9584fb509d13f5f497d70b978c9b544a790a979ce23c4d7fbc", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9f3033804af14d08d8c6dc67e83eac4d06990a7ecb355445fd19baa98f974ab0", @@ -22118,35 +22118,35 @@ "T3T1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", "T3T1_fr_test_authenticate_device.py::test_authenticate_device[]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", "T3T1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "b67468895661ee48749bfe1397a7edb5a7dc21ecae9700ca8e93db08193ac7b1", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "b5649529051b59907c6786d4362fcc62bb23d01e6c69af443c96c15fd873cb0c", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "81f6524e50707b1b47966b396fdc174dde46e2a51c7fe6fb71ffecf186b5d04f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "6b62810a1d3a3d304d01069463892dc98ca156a5d41cd945a5739f0e5298aa3b", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "2e6bc18d2802b8aa2581ba7a915db8174a68a102aa916537ba805cc8d808cb59", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "78d6b74d795fe3afbb1f6ff3a2aa6b1ca9291aeb361f8cebc2357c07f9a30736", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7be28fd61d002e40c9c18be51ed843caee2491e2d62fb7803337a7129d192fd7", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "6c2928d56dea879f6cb6216dce324a3da5951f382d250ba658b2bd73538fd6fb", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "29fcedc6145d3f02a45187a35a0208eea78aff50b409c331cef56cf2f94f63e5", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "8157065b2a62d0712dfb3f62e8635bd8765d7d1c5ecd6f0714b2982baea200ee", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "8157065b2a62d0712dfb3f62e8635bd8765d7d1c5ecd6f0714b2982baea200ee", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "e41f925ff6bc6770fb8c622ff6848ac6f701abf36973eeb336b6e5460e3a6974", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "92ac3bfbaed6fa8044436ffae3c17d2a03cab5c1a8db8b78baa6390c5fc6b693", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "c34bda0577bb9b0ebb24bc646f3d9f11af1df72ba685b5caf08ff5f9a1601c8b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "f6b2ca06d5187082cb870dab3f0de14df4a3e9146fa39610d8dc7990b7436532", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "8740100e4dca74e3ca46fec89a4acc320eccfc9c1fe70f5893aaefda857d4a37", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "37a922ef061e7ebde7e72772de3fbbbc4077988d863ab4e9f3b36feec96874cc", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "cb1a44caf02b3d5ae9e772714c658bbe8fb317fb5142882c4d4342f49e82d4c4", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "e63c5471766f3809c890b11333bfeb4bc34aeb00456cb33bf66531760da2ccbd", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "eb4168dcc3cc8c9f0c54104e45ec607ee3b43d62360879117db889dec6d2609f", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "5bd94fff7ad0dc5cefb29ffbd154bb43ebd8a2e51c59e49e0e5a00318fc3b87a", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "5bd94fff7ad0dc5cefb29ffbd154bb43ebd8a2e51c59e49e0e5a00318fc3b87a", "T3T1_fr_test_basic.py::test_capabilities": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_basic.py::test_device_id_different": "9df9cc6d3151cfa0c19929e885d507379216ddcbb518bbc1e427e64eb0dafdf5", +"T3T1_fr_test_basic.py::test_device_id_different": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_basic.py::test_device_id_same": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_features": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_ping": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_busy_state.py::test_busy_expiry": "659104d2bf399541044a8a99a2984e9219d672e55ca28557bc8d0f227a255a92", -"T3T1_fr_test_busy_state.py::test_busy_state": "2bbcc7f761fbfbc7920d0b14f03964c02aa901babd878931a20f2ff5722f4567", +"T3T1_fr_test_busy_state.py::test_busy_state": "5858ad38f10c86f2a919f0ab80dbfbfabfdb8c03688ca4cba19ba8a4b7ad57a8", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f201ffde0a95ccf50c2a3d176a81fe7057dc8a1a35665a9e227c451c2dde4de", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "0f201ffde0a95ccf50c2a3d176a81fe7057dc8a1a35665a9e227c451c2dde4de", "T3T1_fr_test_cancel.py::test_cancel_on_paginated": "05ae316c64e2ff20085d9f86c9182bdf0aacc5af0bf5ad748478bb955514c2b2", -"T3T1_fr_test_debuglink.py::test_softlock_instability": "172552584c60409031479ff643b9e442632916824b61c4245887141880c3de96", +"T3T1_fr_test_debuglink.py::test_softlock_instability": "c82bad7aabed5698abc1ec69f8dfa4823653ce65aa9893376e070f26c1a34471", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "c6e89f9a3ae02d0c6eabdb2bdc97deb75194ed8e6976fd0ac39d5910b897e00c", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_language.py::test_error_invalid_data_hash": "53b7a23dc43061161cefd9fdf6f528d82dd9ec825a947e9f1127e7941b1dfae3", @@ -22161,7 +22161,7 @@ "T3T1_fr_test_language.py::test_full_language_change[es]": "77de92938877af30cd5f0c699e19a2f8a879c0f734baae345f5af5d383d54083", "T3T1_fr_test_language.py::test_full_language_change[fr]": "f65dcf17f4cfb333bd90132069367a27622b973860e2b4c7277559a3c235ac0b", "T3T1_fr_test_language.py::test_header_trailing_data": "b9bb6e32eb8f17dfebb54d6db841d95458341550d7616dbc7d7affebb0c718e4", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "18eb717368e0910c973a4a6a14af902678d46fc1a619edc75d404d2df8be656b", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "8437bdaa2fadc4938ea64b1cfac6feb76310e4e79b1296c1525122246fb5e42e", "T3T1_fr_test_language.py::test_reject_update": "ff0e3d6fe760a82de7bdc23d9658a880b817acac12aeadc82445c3bda5893ad3", "T3T1_fr_test_language.py::test_silent_first_install[False-False]": "9cc5cf4108009c20d0aacaf363148c9c82eb129ee9477eabe2a2d6f9509c17f4", "T3T1_fr_test_language.py::test_silent_first_install[None-False]": "9cc5cf4108009c20d0aacaf363148c9c82eb129ee9477eabe2a2d6f9509c17f4", @@ -22171,15 +22171,15 @@ "T3T1_fr_test_language.py::test_switch_from_english_not_silent": "2924fc0c3564069dc503497e0c019c57ed93a78f5e2d051149870d889a561680", "T3T1_fr_test_language.py::test_switch_language": "20ceea46d2baa50c1be3de93b9abd3371f4a04eca1dead20bb1dcdbeff67b72d", "T3T1_fr_test_language.py::test_translations_renders_on_screen": "89126c78192f2671e3c71eb58ff1e22f0bb5f7248989b59d441a51db559c61cf", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "5902d501b02b639897ff25a83a65d9f5028f03e314e4260bd5dde1ccb4a36d72", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "63ef10d26a6847cdc34468aee6c1066adecaf4e345022f6c003d41602107be26", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "5f3b24fd6b5d293b943e2fb570c7c468b550b83fdce7a7738222c16c1d2a240f", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c7a0681d63e72c63c0c159d880169f5c34daaa14593aa0ae76ec37d9baf1fa09", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "133ea061e3e79835edebf1e18f8fae6649c2089f98ae5dd699baff2945ea8d27", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "a82718c04be34ab56825094ae851ea5873558a52fb16ff12acfca45a72d634ea", "T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "95dc8034980a6c20e1f84cfcd178ed12cc87134b4536d7e5bbe375c36a293750", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "946c2366506c9373fe7ded240d9d65299181da515fd3afb4ec65db61fdca4f13", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "efd858bccc3b4f1bcffecdc8ec19cfeba49f996716f9318f80b560bddb0b6085", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "861df5aa3769bc8d0e3f4da88e81aa8b776b1fd5ff9bfa83a79bbf873dd43db7", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "d59c0297b5736c042aebb7d52d925085ecfba5b18b925bd41f2912a452a1f364", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "71bc0ca6def2794a8fb31e7072d6535a479192d7298e4efd643d51b2d892ebce", @@ -22193,61 +22193,61 @@ "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", "T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "aa37a8472ff51e63fd1f6eb7c777f78aaa6004f294002f005918e84d8e1bafd5", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "078200000f60364ece5353f6edff39093921237e15c71b552570cb9ca18eecd7", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "181f8fab3db5bd13f43517ac84f497647fdd034ae51d508b2ee28321b5bf847c", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "5fdcf954669115a350ee90847f7f94e98f42c8fefb0c47498304e7965af6fcc9", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "07838afe669643c13424ab311e55479ee20f4634fcc21b4065d0e237fc4d62e3", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "5e16e52fed6e93dde4d54c35cd754a06f93054dc12570706fa5488007a58933b", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "53903c5b7feee31387a0efa76d1c2185ec3f44676eec734c1246e89cb4b87e4e", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "71a7a5cb6f66cae5b8e3bf302f4ea14575419139d6296bf2c7dec20330ed36f0", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "037db15d454851fb93b74a156c9c5884241d2ac5ef4fe908ea10c98758ac2967", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "95d4c014a1284ac80f9d61f2c2f16cfcbec2319d6b18e6b542bd117d6a646b56", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "fdab47a507f74d106adf30f0286d12b95701277521feadc5586cefc54efecb2e", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "ca58cdd7b23cafec5a1c4052ae1526ddb5fbeb44884edc99b2e22bda7e086df2", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "73b536854b86f0efd561f95536f75db48f6e9452e91ff8bcdeb43d25927407ed", "T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "ef0fca1345fb5bf320a37dd2fadff4b21ee4f8062b19061ca7110e0ef5ef7707", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "55ef3a2fa7738b18e9783a0ce01aea5ffa9f8ed7ba2cf76e9a9fc50683c60cfe", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "e0070f5999a755570af9851b831a89e5843573c96d6f2a3b179827c16b6485bb", "T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "008b9f2ef29058840c1cf60687af750e384e57b4662b9a075d26ad320907f380", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "21d5b7ebc028884e4926496efe44b2bd40f966ef17a659e4bb7e4ad95ce73bee", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "a1fc79a0f738e14b72c6a868bd93558a78036bea70813cd303360f2c4cc56cc9", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "7c71ebaa67e7742c833aaf8c2864cc256eba1abdbc086d2e81b96210610469c3", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "640da75650b68386d20e476cdf14da880378fe8db7654c5e876152463c6f918b", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "85acce3186934837ce7767f83c2a010c6d902a89710fdad1d586deaffd878db8", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "fed52ee47765a29e17b4c17aa87d6fe36a8122d239fbd1be954c0d03f86e2a54", "T3T1_fr_test_msg_ping.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "5517902191007f0f26f45bb35d76a8b2610ab686e3b9bd41816b93122462e342", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "f1fb9de50cb9399786cf4b1de6ece47989ed13288fa6ebbf82aa03897b609fdb", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "3dda2a7bfa6c6df4a832d0a7f339f5b884b5d4ab55f35c8ca2d332316485adad", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "6aaf7e369a1b0f46982325c8a6070402bbff145b59dbcbc8eb8d8dca84cd8d9a", -"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9df9cc6d3151cfa0c19929e885d507379216ddcbb518bbc1e427e64eb0dafdf5", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "769a5349ecd4f2140187f0789c8b300f34d63b54606e4e6bb8454268cad39e32", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "c7d2f2c025a11857c453507b0ccd5c3ff4b00103d91adfe39e67bd2a51556085", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "4a38e7cbed38d10ff2f7a24d6788cdd20a75057f2e70c583b938c42d8ef98dcf", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "41a16c6f838b79b53b2bca3f2bb73410bb26320e92477eea6732ce3cdca20074", +"T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", "T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", -"T3T1_fr_test_pin.py::test_correct_pin": "6ec22e7336ef9b0a1dc403e06e9f0a3be8c8a393202981acff05db3180e98e85", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "032efa89bd2af5c46ab6f72e266f1ddc86652fe003b86d8ce25268303ff07217", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "8b3da88d696e8b3ccc7ed9241a7f648480feaeb88395c2e32a169af995aeb602", +"T3T1_fr_test_pin.py::test_correct_pin": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "b90a3c6413ecd821c37f5b00a815ffca0349ed64a497b1d711285a6e1e93927e", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "0792540366dfc76a7703748f12869e1454aa32b418a53d995c41590d59768802", "T3T1_fr_test_pin.py::test_no_protection": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "2bbd49003215b55063c16dffa9c3317174de3d625c0d8ffeb8095592638b1a0d", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "e5115a9e930c07ecb98351747b513238fb3b179fcbc8d62b2f35baac8042faa1", -"T3T1_fr_test_protection_levels.py::test_get_address": "7e4ff666c5f64885f4c9c492b421976456be187b383a2d7ee769cc37d413b3c7", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "1d30669c0066375881003fd4f4ceb43a857950c808eaa6bc4671613b81444220", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "7e4ff666c5f64885f4c9c492b421976456be187b383a2d7ee769cc37d413b3c7", -"T3T1_fr_test_protection_levels.py::test_initialize": "ae9db0858dd693a15fd6b320c54d32cdb3c12b08b259a1d3f7a7a4718b311aa0", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "66da7de7becf0cb03dbc1833ea1e9bfb9e9cae09172db5942acc9247da5033a4", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "908da02acfe7d96de163f1a9f526649ac411162dfdf418983a06168d7c2190fc", +"T3T1_fr_test_protection_levels.py::test_get_address": "01f0a7ddfc088276fb86558ec8d701f82a0b952e2a951e38e7c18413bb2b603f", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "f4e4fa7b432514ba65e93390ca67325b842d3d1d09ca1ed5bd9166b6d64def63", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "01f0a7ddfc088276fb86558ec8d701f82a0b952e2a951e38e7c18413bb2b603f", +"T3T1_fr_test_protection_levels.py::test_initialize": "21783bddb540c171724113919ad095ce5165de76f487370c65e9db994d7238c6", "T3T1_fr_test_protection_levels.py::test_passphrase_cached": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "18f047cd9ba36057edfdb964393c5e413f072925d9dd6b42a367eec3b9b64db0", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "20c292c8b127687973dafad4acc0ccbadba686bccdb069a61ccbd52b76d98969", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "e7ad298884d0e1541ba882411d75b8bb3460d584c77aec60c08bbe7241b637f8", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "48307ba30addb264732d7ed3cb684a97dbcd0078926aefe9587f132e5f3ad13f", "T3T1_fr_test_protection_levels.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", -"T3T1_fr_test_protection_levels.py::test_sign_message": "1154f8b5cb95f9eecb0e5caee9604b212b358a96e0bed757d51f1db05a15c727", -"T3T1_fr_test_protection_levels.py::test_signtx": "6a036527065c1d560c67ed182614d3e5fae1eb8a394379f8fcb14621967260a1", -"T3T1_fr_test_protection_levels.py::test_unlocked": "8551d2f78152508250196f930decfdae02debc7408bf52c415d78475613f60e7", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "a6da89ef991122c4e096196e8adb34e96b8731db925d1a112fb4de02138652a7", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "ce5d6d9c568074429ccc4d17e78c581c50167710c7a8afc849e5c44387f5567b", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "a90a7951dd7b2741f3fdaea48469ff73257a30fdd59ad1316b76a68e7870687f", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "8c6d56d1ecf58b4d42cb871eb7b224e76f7abd08912ddb9d10b98af8267933f0", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "848d21e7576a73699226f9fe7910d1f11d80f923ad4413e050aa650c7f2e57ac", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e05422073d5a391eded34adbb4e2f5d487cc6d682d74d2c8668be0137c23987b", -"T3T1_fr_test_sdcard.py::test_sd_format": "9f08dace12382867c5cef0e11a96fa01b8f8abfc3737f51c0ad631491c5b4403", +"T3T1_fr_test_protection_levels.py::test_sign_message": "ecabb38eba0ccdee533fe2bd04001fc1126298f59107dd82e00f69770d6c1af0", +"T3T1_fr_test_protection_levels.py::test_signtx": "798f252752a45b26c84ab625963b8cf1c855af12376407df6bd9beeb003a474a", +"T3T1_fr_test_protection_levels.py::test_unlocked": "e74de23ed12d883e627be377942deec5331b57cfe9d1274cf78f13f48215d388", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "ca9efc2b7432212dd21301597ef34f28a2dc8111cc45bc04cfcb3f3974900eec", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "80ddc1b78da2956359e6011b0695d5aa441dc6bf8de817bd3e475fd41bd1bbdd", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "ffc20e3d42b721278d713d7b3b6967a437d85b99687433d6de32f422f076de8d", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "054b69e5b514eb3ed2d198b4f00546dfc9c949660b426e98619cd985ff7ee3b2", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "af6421cf233a0f6758fe50d1d7bcfcdfb5dad10f804d070646e4e31531dcac0f", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "7ba578b05dbc3d239618bd38edd69b8bd74424bae763d67148eeba51c82ae7c2", +"T3T1_fr_test_sdcard.py::test_sd_format": "269b10242abbd5b7bd08e2d50e912e0d3de2aec294d2e0e1cdff3310a463fe71", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "29f12dafd9ad2d2f3f24c7757e21eace176c7edbc55fb00e0c460b346464687b", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "a65b9f9ddf3a879b581930c2d168325ba9d755dc1bce5e9baa904993fc82fbd9", "T3T1_fr_test_session.py::test_cannot_resume_ended_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_session.py::test_clear_session": "6d1c6f1df4cbd576c39bd8435864b5d1509ca69f1c4c7eac37f9c4573c2a0fcc", +"T3T1_fr_test_session.py::test_clear_session": "e3ffd9e4da6ede0732ed1980a1883703abbbfd159977075906b73f39ff49824b", "T3T1_fr_test_session.py::test_derive_cardano_empty_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_derive_cardano_running_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_end_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22297,14 +22297,14 @@ "T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258" }, "persistence_tests": { -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "250bd6d7c481fd42d688ab6b5afd39ca52bf2f52ceb194826fa4bac7df64c80b", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "f1a016c094229cec10c91b6f3f5c7bb4da36ba20048f56ccef3c940db7f7163e", -"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "923544b4ee525fc78ada90080bbb640d1859080affb25f4cb0ba5dc051ef68c9", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "801da41901bb49a7cc2b0212964c060e3488e14af0ab7fdb27f10631111bcc84", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "e997cc958f7d7d262604e7728469f7a6952b60c0b1b3520252e3d58e49b41e66", +"T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "a0879b23f779049abf46c42608ee7b841a0b8dc4ac83b85ac83a83e992068165", "T3T1_en_test_shamir_persistence.py::test_abort": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "571fb2f64e2ccdf478ae4de0e53ae38333110b1734d9ec4bec41862df4847608", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "f5e1be5eec73ffcc3f32fe7e61ee56d3b51c537c1f93b76f5b2807c2f28af602", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "5c154013e0d7208204a769394426305424ca74de3e9fbcf6badac09a4d4be462", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "5a3195f9a30817639714f1411111de88f55ee1580f65bbd229c7b396021044f4" +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "ec869dbaa11205cc43fa142230d8f6efcfff6c9eb9f86a48ff44dbc755dffd4f", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "f4f3536a8367baeb994e3ff5568af6e7f8898a01e3c901804840aded88828a7b", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "2cf88aad50c20bfb7ede4bed612d68e7875987d1e0e9e86f8585bff7dbf1ded5", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "3e30500b9deb81bbb4d0eca6c5fccf8bb647979de64d634591f77f5986e62a39" } } } From a4cf0b2c720192980ad8a42fc866c072c1b6b59b Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Sat, 6 Jul 2024 16:36:03 +0200 Subject: [PATCH 391/626] feat(core): Show PIN initialization progress when Optiga throttling delays are active --- core/src/boot.py | 12 +++++++++--- storage/storage.c | 6 +++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/src/boot.py b/core/src/boot.py index 8b94b379c1..dd7a418c24 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -20,6 +20,9 @@ from apps.common.request_pin import can_lock_device, verify_user_pin +if utils.USE_OPTIGA: + from trezor.crypto import optiga + # have to use "==" over "in (list)" so that it can be statically replaced # with the correct value during the build process # pylint: disable-next=consider-using-in @@ -68,7 +71,9 @@ async def bootscreen() -> None: allow_all_loader_messages() return else: - await verify_user_pin() + # Even if PIN is not configured, storage needs to be unlocked, unless it has just been initialized. + if not config.is_unlocked(): + await verify_user_pin() storage.init_unlocked() enforce_welcome_screen_duration() rotation = storage.device.get_rotation() @@ -94,8 +99,9 @@ async def bootscreen() -> None: utils.halt(e.__class__.__name__) -# Ignoring all non-PIN messages in the boot-phase (turned off in `bootscreen()`). -ignore_nonpin_loader_messages() +# Ignore all automated PIN messages in the boot-phase (turned off in `bootscreen()`), unless Optiga throttling delays are active. +if not utils.USE_OPTIGA or (optiga.get_sec() or 0) < 150: + ignore_nonpin_loader_messages() config.init(show_pin_timeout) translations.init() diff --git a/storage/storage.c b/storage/storage.c index 7c3d32116d..e4f4632c38 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -779,7 +779,11 @@ static void init_wiped_storage(void) { "set_wipe_code failed"); ui_progress_init(STORAGE_PIN_OP_SET); - ui_message = PROCESSING_MSG; + if (ui_message == NO_MSG) { + ui_message = STARTING_MSG; + } else { + ui_message = PROCESSING_MSG; + } ensure(set_pin(PIN_EMPTY, PIN_EMPTY_LEN, NULL), "init_pin failed"); ui_progress_finish(); } From b71a809da355644e74ef0c307772823cc0f6cfa2 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Sat, 6 Jul 2024 16:52:30 +0200 Subject: [PATCH 392/626] feat(common): Add DebugLinkOptigaSetSecMax message. [no changelog] --- common/protob/messages-debug.proto | 9 + common/protob/messages.proto | 1 + core/src/trezor/enums/MessageType.py | 1 + core/src/trezor/enums/__init__.py | 1 + core/src/trezor/messages.py | 6 + legacy/firmware/protob/Makefile | 2 +- python/src/trezorlib/messages.py | 5 + rust/trezor-client/src/messages/generated.rs | 1 + .../src/protos/generated/messages.rs | 659 +++++++++--------- .../src/protos/generated/messages_debug.rs | 111 ++- 10 files changed, 466 insertions(+), 330 deletions(-) diff --git a/common/protob/messages-debug.proto b/common/protob/messages-debug.proto index d508311f91..bdac48b0c2 100644 --- a/common/protob/messages-debug.proto +++ b/common/protob/messages-debug.proto @@ -204,3 +204,12 @@ message DebugLinkWatchLayout { */ message DebugLinkResetDebugEvents { } + + +/** + * Request: Set Optiga's security even counter to maximum + * @start + * @next Success + */ +message DebugLinkOptigaSetSecMax { +} diff --git a/common/protob/messages.proto b/common/protob/messages.proto index b62f6b8deb..8f00d40f6f 100644 --- a/common/protob/messages.proto +++ b/common/protob/messages.proto @@ -188,6 +188,7 @@ enum MessageType { MessageType_DebugLinkEraseSdCard = 9005 [(bitcoin_only) = true, (wire_debug_in) = true]; MessageType_DebugLinkWatchLayout = 9006 [(bitcoin_only) = true, (wire_debug_in) = true]; MessageType_DebugLinkResetDebugEvents = 9007 [(bitcoin_only) = true, (wire_debug_in) = true]; + MessageType_DebugLinkOptigaSetSecMax = 9008 [(bitcoin_only) = true, (wire_debug_in) = true]; // Ethereum MessageType_EthereumGetPublicKey = 450 [(wire_in) = true]; diff --git a/core/src/trezor/enums/MessageType.py b/core/src/trezor/enums/MessageType.py index ec6a8317f0..ae94e76ace 100644 --- a/core/src/trezor/enums/MessageType.py +++ b/core/src/trezor/enums/MessageType.py @@ -94,6 +94,7 @@ DebugLinkEraseSdCard = 9005 DebugLinkWatchLayout = 9006 DebugLinkResetDebugEvents = 9007 +DebugLinkOptigaSetSecMax = 9008 if not utils.BITCOIN_ONLY: SetU2FCounter = 63 GetNextU2FCounter = 80 diff --git a/core/src/trezor/enums/__init__.py b/core/src/trezor/enums/__init__.py index 30e596843d..5c3061b7bf 100644 --- a/core/src/trezor/enums/__init__.py +++ b/core/src/trezor/enums/__init__.py @@ -117,6 +117,7 @@ class MessageType(IntEnum): DebugLinkEraseSdCard = 9005 DebugLinkWatchLayout = 9006 DebugLinkResetDebugEvents = 9007 + DebugLinkOptigaSetSecMax = 9008 EthereumGetPublicKey = 450 EthereumPublicKey = 451 EthereumGetAddress = 56 diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index f80e56e1dd..9d113f71bc 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -3001,6 +3001,12 @@ class DebugLinkResetDebugEvents(protobuf.MessageType): def is_type_of(cls, msg: Any) -> TypeGuard["DebugLinkResetDebugEvents"]: return isinstance(msg, cls) + class DebugLinkOptigaSetSecMax(protobuf.MessageType): + + @classmethod + def is_type_of(cls, msg: Any) -> TypeGuard["DebugLinkOptigaSetSecMax"]: + return isinstance(msg, cls) + class EosGetPublicKey(protobuf.MessageType): address_n: "list[int]" show_display: "bool | None" diff --git a/legacy/firmware/protob/Makefile b/legacy/firmware/protob/Makefile index 8f8ab1cd00..1acdb5348b 100644 --- a/legacy/firmware/protob/Makefile +++ b/legacy/firmware/protob/Makefile @@ -11,7 +11,7 @@ SKIPPED_MESSAGES := Binance Cardano DebugMonero Eos Monero Ontology Ripple SdPro UnlockBootloader AuthenticateDevice AuthenticityProof \ Solana StellarClaimClaimableBalanceOp \ ChangeLanguage TranslationDataRequest TranslationDataAck \ - SetBrightness \ + SetBrightness DebugLinkOptigaSetSecMax \ ifeq ($(BITCOIN_ONLY), 1) SKIPPED_MESSAGES += Ethereum NEM Stellar diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index b9ad0ce0b4..3027302bc7 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -125,6 +125,7 @@ class MessageType(IntEnum): DebugLinkEraseSdCard = 9005 DebugLinkWatchLayout = 9006 DebugLinkResetDebugEvents = 9007 + DebugLinkOptigaSetSecMax = 9008 EthereumGetPublicKey = 450 EthereumPublicKey = 451 EthereumGetAddress = 56 @@ -4210,6 +4211,10 @@ class DebugLinkResetDebugEvents(protobuf.MessageType): MESSAGE_WIRE_TYPE = 9007 +class DebugLinkOptigaSetSecMax(protobuf.MessageType): + MESSAGE_WIRE_TYPE = 9008 + + class EosGetPublicKey(protobuf.MessageType): MESSAGE_WIRE_TYPE = 600 FIELDS = { diff --git a/rust/trezor-client/src/messages/generated.rs b/rust/trezor-client/src/messages/generated.rs index 69614c6b6f..1493a93867 100644 --- a/rust/trezor-client/src/messages/generated.rs +++ b/rust/trezor-client/src/messages/generated.rs @@ -79,6 +79,7 @@ trezor_message_impl! { DebugLinkEraseSdCard => MessageType_DebugLinkEraseSdCard, DebugLinkWatchLayout => MessageType_DebugLinkWatchLayout, DebugLinkResetDebugEvents => MessageType_DebugLinkResetDebugEvents, + DebugLinkOptigaSetSecMax => MessageType_DebugLinkOptigaSetSecMax, } #[cfg(feature = "binance")] diff --git a/rust/trezor-client/src/protos/generated/messages.rs b/rust/trezor-client/src/protos/generated/messages.rs index 548d6995cb..efea50a154 100644 --- a/rust/trezor-client/src/protos/generated/messages.rs +++ b/rust/trezor-client/src/protos/generated/messages.rs @@ -220,6 +220,8 @@ pub enum MessageType { MessageType_DebugLinkWatchLayout = 9006, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkResetDebugEvents) MessageType_DebugLinkResetDebugEvents = 9007, + // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_DebugLinkOptigaSetSecMax) + MessageType_DebugLinkOptigaSetSecMax = 9008, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_EthereumGetPublicKey) MessageType_EthereumGetPublicKey = 450, // @@protoc_insertion_point(enum_value:hw.trezor.messages.MessageType.MessageType_EthereumPublicKey) @@ -615,6 +617,7 @@ impl ::protobuf::Enum for MessageType { 9005 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkEraseSdCard), 9006 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkWatchLayout), 9007 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkResetDebugEvents), + 9008 => ::std::option::Option::Some(MessageType::MessageType_DebugLinkOptigaSetSecMax), 450 => ::std::option::Option::Some(MessageType::MessageType_EthereumGetPublicKey), 451 => ::std::option::Option::Some(MessageType::MessageType_EthereumPublicKey), 56 => ::std::option::Option::Some(MessageType::MessageType_EthereumGetAddress), @@ -861,6 +864,7 @@ impl ::protobuf::Enum for MessageType { "MessageType_DebugLinkEraseSdCard" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkEraseSdCard), "MessageType_DebugLinkWatchLayout" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkWatchLayout), "MessageType_DebugLinkResetDebugEvents" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkResetDebugEvents), + "MessageType_DebugLinkOptigaSetSecMax" => ::std::option::Option::Some(MessageType::MessageType_DebugLinkOptigaSetSecMax), "MessageType_EthereumGetPublicKey" => ::std::option::Option::Some(MessageType::MessageType_EthereumGetPublicKey), "MessageType_EthereumPublicKey" => ::std::option::Option::Some(MessageType::MessageType_EthereumPublicKey), "MessageType_EthereumGetAddress" => ::std::option::Option::Some(MessageType::MessageType_EthereumGetAddress), @@ -1106,6 +1110,7 @@ impl ::protobuf::Enum for MessageType { MessageType::MessageType_DebugLinkEraseSdCard, MessageType::MessageType_DebugLinkWatchLayout, MessageType::MessageType_DebugLinkResetDebugEvents, + MessageType::MessageType_DebugLinkOptigaSetSecMax, MessageType::MessageType_EthereumGetPublicKey, MessageType::MessageType_EthereumPublicKey, MessageType::MessageType_EthereumGetAddress, @@ -1357,150 +1362,151 @@ impl ::protobuf::EnumFull for MessageType { MessageType::MessageType_DebugLinkEraseSdCard => 93, MessageType::MessageType_DebugLinkWatchLayout => 94, MessageType::MessageType_DebugLinkResetDebugEvents => 95, - MessageType::MessageType_EthereumGetPublicKey => 96, - MessageType::MessageType_EthereumPublicKey => 97, - MessageType::MessageType_EthereumGetAddress => 98, - MessageType::MessageType_EthereumAddress => 99, - MessageType::MessageType_EthereumSignTx => 100, - MessageType::MessageType_EthereumSignTxEIP1559 => 101, - MessageType::MessageType_EthereumTxRequest => 102, - MessageType::MessageType_EthereumTxAck => 103, - MessageType::MessageType_EthereumSignMessage => 104, - MessageType::MessageType_EthereumVerifyMessage => 105, - MessageType::MessageType_EthereumMessageSignature => 106, - MessageType::MessageType_EthereumSignTypedData => 107, - MessageType::MessageType_EthereumTypedDataStructRequest => 108, - MessageType::MessageType_EthereumTypedDataStructAck => 109, - MessageType::MessageType_EthereumTypedDataValueRequest => 110, - MessageType::MessageType_EthereumTypedDataValueAck => 111, - MessageType::MessageType_EthereumTypedDataSignature => 112, - MessageType::MessageType_EthereumSignTypedHash => 113, - MessageType::MessageType_NEMGetAddress => 114, - MessageType::MessageType_NEMAddress => 115, - MessageType::MessageType_NEMSignTx => 116, - MessageType::MessageType_NEMSignedTx => 117, - MessageType::MessageType_NEMDecryptMessage => 118, - MessageType::MessageType_NEMDecryptedMessage => 119, - MessageType::MessageType_TezosGetAddress => 120, - MessageType::MessageType_TezosAddress => 121, - MessageType::MessageType_TezosSignTx => 122, - MessageType::MessageType_TezosSignedTx => 123, - MessageType::MessageType_TezosGetPublicKey => 124, - MessageType::MessageType_TezosPublicKey => 125, - MessageType::MessageType_StellarSignTx => 126, - MessageType::MessageType_StellarTxOpRequest => 127, - MessageType::MessageType_StellarGetAddress => 128, - MessageType::MessageType_StellarAddress => 129, - MessageType::MessageType_StellarCreateAccountOp => 130, - MessageType::MessageType_StellarPaymentOp => 131, - MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 132, - MessageType::MessageType_StellarManageSellOfferOp => 133, - MessageType::MessageType_StellarCreatePassiveSellOfferOp => 134, - MessageType::MessageType_StellarSetOptionsOp => 135, - MessageType::MessageType_StellarChangeTrustOp => 136, - MessageType::MessageType_StellarAllowTrustOp => 137, - MessageType::MessageType_StellarAccountMergeOp => 138, - MessageType::MessageType_StellarManageDataOp => 139, - MessageType::MessageType_StellarBumpSequenceOp => 140, - MessageType::MessageType_StellarManageBuyOfferOp => 141, - MessageType::MessageType_StellarPathPaymentStrictSendOp => 142, - MessageType::MessageType_StellarClaimClaimableBalanceOp => 143, - MessageType::MessageType_StellarSignedTx => 144, - MessageType::MessageType_CardanoGetPublicKey => 145, - MessageType::MessageType_CardanoPublicKey => 146, - MessageType::MessageType_CardanoGetAddress => 147, - MessageType::MessageType_CardanoAddress => 148, - MessageType::MessageType_CardanoTxItemAck => 149, - MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 150, - MessageType::MessageType_CardanoTxWitnessRequest => 151, - MessageType::MessageType_CardanoTxWitnessResponse => 152, - MessageType::MessageType_CardanoTxHostAck => 153, - MessageType::MessageType_CardanoTxBodyHash => 154, - MessageType::MessageType_CardanoSignTxFinished => 155, - MessageType::MessageType_CardanoSignTxInit => 156, - MessageType::MessageType_CardanoTxInput => 157, - MessageType::MessageType_CardanoTxOutput => 158, - MessageType::MessageType_CardanoAssetGroup => 159, - MessageType::MessageType_CardanoToken => 160, - MessageType::MessageType_CardanoTxCertificate => 161, - MessageType::MessageType_CardanoTxWithdrawal => 162, - MessageType::MessageType_CardanoTxAuxiliaryData => 163, - MessageType::MessageType_CardanoPoolOwner => 164, - MessageType::MessageType_CardanoPoolRelayParameters => 165, - MessageType::MessageType_CardanoGetNativeScriptHash => 166, - MessageType::MessageType_CardanoNativeScriptHash => 167, - MessageType::MessageType_CardanoTxMint => 168, - MessageType::MessageType_CardanoTxCollateralInput => 169, - MessageType::MessageType_CardanoTxRequiredSigner => 170, - MessageType::MessageType_CardanoTxInlineDatumChunk => 171, - MessageType::MessageType_CardanoTxReferenceScriptChunk => 172, - MessageType::MessageType_CardanoTxReferenceInput => 173, - MessageType::MessageType_RippleGetAddress => 174, - MessageType::MessageType_RippleAddress => 175, - MessageType::MessageType_RippleSignTx => 176, - MessageType::MessageType_RippleSignedTx => 177, - MessageType::MessageType_MoneroTransactionInitRequest => 178, - MessageType::MessageType_MoneroTransactionInitAck => 179, - MessageType::MessageType_MoneroTransactionSetInputRequest => 180, - MessageType::MessageType_MoneroTransactionSetInputAck => 181, - MessageType::MessageType_MoneroTransactionInputViniRequest => 182, - MessageType::MessageType_MoneroTransactionInputViniAck => 183, - MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 184, - MessageType::MessageType_MoneroTransactionAllInputsSetAck => 185, - MessageType::MessageType_MoneroTransactionSetOutputRequest => 186, - MessageType::MessageType_MoneroTransactionSetOutputAck => 187, - MessageType::MessageType_MoneroTransactionAllOutSetRequest => 188, - MessageType::MessageType_MoneroTransactionAllOutSetAck => 189, - MessageType::MessageType_MoneroTransactionSignInputRequest => 190, - MessageType::MessageType_MoneroTransactionSignInputAck => 191, - MessageType::MessageType_MoneroTransactionFinalRequest => 192, - MessageType::MessageType_MoneroTransactionFinalAck => 193, - MessageType::MessageType_MoneroKeyImageExportInitRequest => 194, - MessageType::MessageType_MoneroKeyImageExportInitAck => 195, - MessageType::MessageType_MoneroKeyImageSyncStepRequest => 196, - MessageType::MessageType_MoneroKeyImageSyncStepAck => 197, - MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 198, - MessageType::MessageType_MoneroKeyImageSyncFinalAck => 199, - MessageType::MessageType_MoneroGetAddress => 200, - MessageType::MessageType_MoneroAddress => 201, - MessageType::MessageType_MoneroGetWatchKey => 202, - MessageType::MessageType_MoneroWatchKey => 203, - MessageType::MessageType_DebugMoneroDiagRequest => 204, - MessageType::MessageType_DebugMoneroDiagAck => 205, - MessageType::MessageType_MoneroGetTxKeyRequest => 206, - MessageType::MessageType_MoneroGetTxKeyAck => 207, - MessageType::MessageType_MoneroLiveRefreshStartRequest => 208, - MessageType::MessageType_MoneroLiveRefreshStartAck => 209, - MessageType::MessageType_MoneroLiveRefreshStepRequest => 210, - MessageType::MessageType_MoneroLiveRefreshStepAck => 211, - MessageType::MessageType_MoneroLiveRefreshFinalRequest => 212, - MessageType::MessageType_MoneroLiveRefreshFinalAck => 213, - MessageType::MessageType_EosGetPublicKey => 214, - MessageType::MessageType_EosPublicKey => 215, - MessageType::MessageType_EosSignTx => 216, - MessageType::MessageType_EosTxActionRequest => 217, - MessageType::MessageType_EosTxActionAck => 218, - MessageType::MessageType_EosSignedTx => 219, - MessageType::MessageType_BinanceGetAddress => 220, - MessageType::MessageType_BinanceAddress => 221, - MessageType::MessageType_BinanceGetPublicKey => 222, - MessageType::MessageType_BinancePublicKey => 223, - MessageType::MessageType_BinanceSignTx => 224, - MessageType::MessageType_BinanceTxRequest => 225, - MessageType::MessageType_BinanceTransferMsg => 226, - MessageType::MessageType_BinanceOrderMsg => 227, - MessageType::MessageType_BinanceCancelMsg => 228, - MessageType::MessageType_BinanceSignedTx => 229, - MessageType::MessageType_WebAuthnListResidentCredentials => 230, - MessageType::MessageType_WebAuthnCredentials => 231, - MessageType::MessageType_WebAuthnAddResidentCredential => 232, - MessageType::MessageType_WebAuthnRemoveResidentCredential => 233, - MessageType::MessageType_SolanaGetPublicKey => 234, - MessageType::MessageType_SolanaPublicKey => 235, - MessageType::MessageType_SolanaGetAddress => 236, - MessageType::MessageType_SolanaAddress => 237, - MessageType::MessageType_SolanaSignTx => 238, - MessageType::MessageType_SolanaTxSignature => 239, + MessageType::MessageType_DebugLinkOptigaSetSecMax => 96, + MessageType::MessageType_EthereumGetPublicKey => 97, + MessageType::MessageType_EthereumPublicKey => 98, + MessageType::MessageType_EthereumGetAddress => 99, + MessageType::MessageType_EthereumAddress => 100, + MessageType::MessageType_EthereumSignTx => 101, + MessageType::MessageType_EthereumSignTxEIP1559 => 102, + MessageType::MessageType_EthereumTxRequest => 103, + MessageType::MessageType_EthereumTxAck => 104, + MessageType::MessageType_EthereumSignMessage => 105, + MessageType::MessageType_EthereumVerifyMessage => 106, + MessageType::MessageType_EthereumMessageSignature => 107, + MessageType::MessageType_EthereumSignTypedData => 108, + MessageType::MessageType_EthereumTypedDataStructRequest => 109, + MessageType::MessageType_EthereumTypedDataStructAck => 110, + MessageType::MessageType_EthereumTypedDataValueRequest => 111, + MessageType::MessageType_EthereumTypedDataValueAck => 112, + MessageType::MessageType_EthereumTypedDataSignature => 113, + MessageType::MessageType_EthereumSignTypedHash => 114, + MessageType::MessageType_NEMGetAddress => 115, + MessageType::MessageType_NEMAddress => 116, + MessageType::MessageType_NEMSignTx => 117, + MessageType::MessageType_NEMSignedTx => 118, + MessageType::MessageType_NEMDecryptMessage => 119, + MessageType::MessageType_NEMDecryptedMessage => 120, + MessageType::MessageType_TezosGetAddress => 121, + MessageType::MessageType_TezosAddress => 122, + MessageType::MessageType_TezosSignTx => 123, + MessageType::MessageType_TezosSignedTx => 124, + MessageType::MessageType_TezosGetPublicKey => 125, + MessageType::MessageType_TezosPublicKey => 126, + MessageType::MessageType_StellarSignTx => 127, + MessageType::MessageType_StellarTxOpRequest => 128, + MessageType::MessageType_StellarGetAddress => 129, + MessageType::MessageType_StellarAddress => 130, + MessageType::MessageType_StellarCreateAccountOp => 131, + MessageType::MessageType_StellarPaymentOp => 132, + MessageType::MessageType_StellarPathPaymentStrictReceiveOp => 133, + MessageType::MessageType_StellarManageSellOfferOp => 134, + MessageType::MessageType_StellarCreatePassiveSellOfferOp => 135, + MessageType::MessageType_StellarSetOptionsOp => 136, + MessageType::MessageType_StellarChangeTrustOp => 137, + MessageType::MessageType_StellarAllowTrustOp => 138, + MessageType::MessageType_StellarAccountMergeOp => 139, + MessageType::MessageType_StellarManageDataOp => 140, + MessageType::MessageType_StellarBumpSequenceOp => 141, + MessageType::MessageType_StellarManageBuyOfferOp => 142, + MessageType::MessageType_StellarPathPaymentStrictSendOp => 143, + MessageType::MessageType_StellarClaimClaimableBalanceOp => 144, + MessageType::MessageType_StellarSignedTx => 145, + MessageType::MessageType_CardanoGetPublicKey => 146, + MessageType::MessageType_CardanoPublicKey => 147, + MessageType::MessageType_CardanoGetAddress => 148, + MessageType::MessageType_CardanoAddress => 149, + MessageType::MessageType_CardanoTxItemAck => 150, + MessageType::MessageType_CardanoTxAuxiliaryDataSupplement => 151, + MessageType::MessageType_CardanoTxWitnessRequest => 152, + MessageType::MessageType_CardanoTxWitnessResponse => 153, + MessageType::MessageType_CardanoTxHostAck => 154, + MessageType::MessageType_CardanoTxBodyHash => 155, + MessageType::MessageType_CardanoSignTxFinished => 156, + MessageType::MessageType_CardanoSignTxInit => 157, + MessageType::MessageType_CardanoTxInput => 158, + MessageType::MessageType_CardanoTxOutput => 159, + MessageType::MessageType_CardanoAssetGroup => 160, + MessageType::MessageType_CardanoToken => 161, + MessageType::MessageType_CardanoTxCertificate => 162, + MessageType::MessageType_CardanoTxWithdrawal => 163, + MessageType::MessageType_CardanoTxAuxiliaryData => 164, + MessageType::MessageType_CardanoPoolOwner => 165, + MessageType::MessageType_CardanoPoolRelayParameters => 166, + MessageType::MessageType_CardanoGetNativeScriptHash => 167, + MessageType::MessageType_CardanoNativeScriptHash => 168, + MessageType::MessageType_CardanoTxMint => 169, + MessageType::MessageType_CardanoTxCollateralInput => 170, + MessageType::MessageType_CardanoTxRequiredSigner => 171, + MessageType::MessageType_CardanoTxInlineDatumChunk => 172, + MessageType::MessageType_CardanoTxReferenceScriptChunk => 173, + MessageType::MessageType_CardanoTxReferenceInput => 174, + MessageType::MessageType_RippleGetAddress => 175, + MessageType::MessageType_RippleAddress => 176, + MessageType::MessageType_RippleSignTx => 177, + MessageType::MessageType_RippleSignedTx => 178, + MessageType::MessageType_MoneroTransactionInitRequest => 179, + MessageType::MessageType_MoneroTransactionInitAck => 180, + MessageType::MessageType_MoneroTransactionSetInputRequest => 181, + MessageType::MessageType_MoneroTransactionSetInputAck => 182, + MessageType::MessageType_MoneroTransactionInputViniRequest => 183, + MessageType::MessageType_MoneroTransactionInputViniAck => 184, + MessageType::MessageType_MoneroTransactionAllInputsSetRequest => 185, + MessageType::MessageType_MoneroTransactionAllInputsSetAck => 186, + MessageType::MessageType_MoneroTransactionSetOutputRequest => 187, + MessageType::MessageType_MoneroTransactionSetOutputAck => 188, + MessageType::MessageType_MoneroTransactionAllOutSetRequest => 189, + MessageType::MessageType_MoneroTransactionAllOutSetAck => 190, + MessageType::MessageType_MoneroTransactionSignInputRequest => 191, + MessageType::MessageType_MoneroTransactionSignInputAck => 192, + MessageType::MessageType_MoneroTransactionFinalRequest => 193, + MessageType::MessageType_MoneroTransactionFinalAck => 194, + MessageType::MessageType_MoneroKeyImageExportInitRequest => 195, + MessageType::MessageType_MoneroKeyImageExportInitAck => 196, + MessageType::MessageType_MoneroKeyImageSyncStepRequest => 197, + MessageType::MessageType_MoneroKeyImageSyncStepAck => 198, + MessageType::MessageType_MoneroKeyImageSyncFinalRequest => 199, + MessageType::MessageType_MoneroKeyImageSyncFinalAck => 200, + MessageType::MessageType_MoneroGetAddress => 201, + MessageType::MessageType_MoneroAddress => 202, + MessageType::MessageType_MoneroGetWatchKey => 203, + MessageType::MessageType_MoneroWatchKey => 204, + MessageType::MessageType_DebugMoneroDiagRequest => 205, + MessageType::MessageType_DebugMoneroDiagAck => 206, + MessageType::MessageType_MoneroGetTxKeyRequest => 207, + MessageType::MessageType_MoneroGetTxKeyAck => 208, + MessageType::MessageType_MoneroLiveRefreshStartRequest => 209, + MessageType::MessageType_MoneroLiveRefreshStartAck => 210, + MessageType::MessageType_MoneroLiveRefreshStepRequest => 211, + MessageType::MessageType_MoneroLiveRefreshStepAck => 212, + MessageType::MessageType_MoneroLiveRefreshFinalRequest => 213, + MessageType::MessageType_MoneroLiveRefreshFinalAck => 214, + MessageType::MessageType_EosGetPublicKey => 215, + MessageType::MessageType_EosPublicKey => 216, + MessageType::MessageType_EosSignTx => 217, + MessageType::MessageType_EosTxActionRequest => 218, + MessageType::MessageType_EosTxActionAck => 219, + MessageType::MessageType_EosSignedTx => 220, + MessageType::MessageType_BinanceGetAddress => 221, + MessageType::MessageType_BinanceAddress => 222, + MessageType::MessageType_BinanceGetPublicKey => 223, + MessageType::MessageType_BinancePublicKey => 224, + MessageType::MessageType_BinanceSignTx => 225, + MessageType::MessageType_BinanceTxRequest => 226, + MessageType::MessageType_BinanceTransferMsg => 227, + MessageType::MessageType_BinanceOrderMsg => 228, + MessageType::MessageType_BinanceCancelMsg => 229, + MessageType::MessageType_BinanceSignedTx => 230, + MessageType::MessageType_WebAuthnListResidentCredentials => 231, + MessageType::MessageType_WebAuthnCredentials => 232, + MessageType::MessageType_WebAuthnAddResidentCredential => 233, + MessageType::MessageType_WebAuthnRemoveResidentCredential => 234, + MessageType::MessageType_SolanaGetPublicKey => 235, + MessageType::MessageType_SolanaPublicKey => 236, + MessageType::MessageType_SolanaGetAddress => 237, + MessageType::MessageType_SolanaAddress => 238, + MessageType::MessageType_SolanaSignTx => 239, + MessageType::MessageType_SolanaTxSignature => 240, }; Self::enum_descriptor().value_by_index(index) } @@ -1550,7 +1556,7 @@ pub mod exts { static file_descriptor_proto_data: &'static [u8] = b"\ \n\x0emessages.proto\x12\x12hw.trezor.messages\x1a\x20google/protobuf/de\ - scriptor.proto*\xadS\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ + scriptor.proto*\xe2S\n\x0bMessageType\x12(\n\x16MessageType_Initialize\ \x10\0\x1a\x0c\x80\xa6\x1d\x01\xb0\xb5\x18\x01\x90\xb5\x18\x01\x12\x1e\n\ \x10MessageType_Ping\x10\x01\x1a\x08\x80\xa6\x1d\x01\x90\xb5\x18\x01\x12\ %\n\x13MessageType_Success\x10\x02\x1a\x0c\x80\xa6\x1d\x01\xa8\xb5\x18\ @@ -1665,187 +1671,188 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x80\xa6\x1d\x01\xa0\xb5\x18\x01\x12/\n\x20MessageType_DebugLinkWatchLay\ out\x10\xaeF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\x01\x124\n%MessageType_\ DebugLinkResetDebugEvents\x10\xafF\x1a\x08\x80\xa6\x1d\x01\xa0\xb5\x18\ - \x01\x12+\n\x20MessageType_EthereumGetPublicKey\x10\xc2\x03\x1a\x04\x90\ - \xb5\x18\x01\x12(\n\x1dMessageType_EthereumPublicKey\x10\xc3\x03\x1a\x04\ - \x98\xb5\x18\x01\x12(\n\x1eMessageType_EthereumGetAddress\x108\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1bMessageType_EthereumAddress\x109\x1a\x04\x98\ - \xb5\x18\x01\x12$\n\x1aMessageType_EthereumSignTx\x10:\x1a\x04\x90\xb5\ - \x18\x01\x12,\n!MessageType_EthereumSignTxEIP1559\x10\xc4\x03\x1a\x04\ - \x90\xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxRequest\x10;\x1a\x04\ - \x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\x10<\x1a\x04\x90\ - \xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\x10@\x1a\x04\x90\ - \xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\x10A\x1a\x04\x90\ - \xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignature\x10B\x1a\x04\ - \x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\x10\xd0\x03\ - \x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDataStructReque\ - st\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_EthereumTypedD\ - ataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Ethe\ - reumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\x01\x120\n%Mes\ - sageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\x90\xb5\x18\x01\ - \x121\n&MessageType_EthereumTypedDataSignature\x10\xd5\x03\x1a\x04\x98\ - \xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\x10\xd6\x03\x1a\ - \x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\x10C\x1a\x04\ - \x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\x1a\x04\x98\ - \xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\x90\xb5\x18\ - \x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\x18\x01\x12'\ - \n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\x18\x01\x12)\n\ - \x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\x18\x01\x12&\n\ - \x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\xb5\x18\x01\x12#\ - \n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\xb5\x18\x01\x12\"\ - \n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\xb5\x18\x01\x12$\n\ - \x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\xb5\x18\x01\x12(\n\ - \x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\x90\xb5\x18\x01\ - \x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\x04\x98\xb5\x18\ - \x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\x04\x90\xb5\x18\ - \x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\x01\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\xcf\x01\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\x10\xd0\x01\x1a\ - \x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAccountOp\x10\xd2\ - \x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_StellarPaymentOp\x10\ - \xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_StellarPathPaymentSt\ - rictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_Ste\ - llarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\x126\n+Message\ - Type_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\x90\xb5\x18\x01\ - \x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\x1a\x04\x90\xb5\ - \x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\xd8\x01\x1a\x04\ - \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrustOp\x10\xd9\x01\ - \x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccountMergeOp\x10\ - \xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarManageData\ - Op\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarBumpSeq\ - uenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_StellarMa\ - nageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_St\ - ellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\x01\x125\n*\ - MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\x04\x90\xb5\ - \x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\x1a\x04\x98\ - \xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\xb1\x02\x1a\ - \x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\x10\xb2\x02\ - \x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAddress\x10\xb3\ - \x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAddress\x10\ - \xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoTxItemAck\ - \x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoTxAuxilia\ - ryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#MessageType_\ - CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\n$Messa\ - geType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\x01\x12'\ - \n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\x18\x01\ - \x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\xb5\x18\ - \x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\x02\x1a\ - \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\xc2\x02\ - \x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\x10\xc3\ - \x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\x10\xc4\ - \x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCertificate\ - \x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_CardanoTxWith\ - drawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_CardanoTx\ - AuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_\ - CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&MessageType_\ - CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Me\ - ssageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\xb5\x18\x01\ - \x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\x04\x98\xb5\ - \x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\x04\x90\xb5\ - \x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\x02\x1a\x04\ - \x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\x10\xce\x02\ - \x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineDatumChunk\ - \x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_CardanoTxReferen\ - ceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_Car\ - danoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\ - geType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12$\n\x19Me\ - ssageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12#\n\x18Me\ - ssageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMes\ - sageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x123\n(Messa\ - geType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\x18\x01\ - \x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\x98\xb5\ - \x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\xf7\x03\ - \x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSetInputAck\ - \x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\ - nInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ - _MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\x01\x12;\ - \n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\x1a\x04\ - \x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSetAck\x10\ - \xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSet\ - OutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Mon\ - eroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\x128\n-Me\ - ssageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\x04\x98\xb5\ - \x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\x10\x82\x04\ - \x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactionSignInputRe\ - quest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTrans\ - actionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageTyp\ - e_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\x18\x01\x120\ - \n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\x04\x98\xb5\x18\ - \x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\x10\x92\x04\x1a\ - \x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageExportInitAck\x10\ - \x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroKeyImageSyncSt\ - epRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%MessageType_MoneroK\ - eyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\x125\n*MessageTyp\ - e_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\x98\xb5\x18\x01\x12\ - 1\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\x04\x1a\x04\x98\xb5\ - \x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\x9c\x04\x1a\x04\x90\ - \xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\x9d\x04\x1a\x04\x98\ - \xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\x10\x9e\x04\x1a\x04\ - \x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKey\x10\x9f\x04\x1a\ - \x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDiagRequest\x10\xa2\ - \x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_DebugMoneroDiagAck\ - \x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_MoneroGetTxKeyRe\ - quest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGe\ - tTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroL\ - iveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\x120\n%Messag\ - eType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\xb5\x18\x01\x123\ - \n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\x1a\x04\x90\xb5\ - \x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\xab\x04\x1a\x04\ - \x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFinalRequest\x10\ - \xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroLiveRefreshFin\ - alAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessageType_EosGetPu\ - blicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_EosPub\ - licKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15MessageType_EosS\ - ignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_EosTxAct\ - ionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMessageType_Eos\ - TxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17MessageType_E\ - osSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_Bin\ - anceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType\ - _BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageTyp\ - e_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMess\ - ageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\x18\x01\x12$\n\x19M\ - essageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cM\ - essageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\xb5\x18\x01\x12)\n\ - \x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\x04\x90\xb5\x18\x01\ - \x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\x1a\x04\x90\xb5\x18\ - \x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\x05\x1a\x04\x90\xb5\ - \x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\xc5\x05\x1a\x04\x98\ - \xb5\x18\x01\x126\n+MessageType_WebAuthnListResidentCredentials\x10\xa0\ - \x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_WebAuthnCredentials\ - \x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_WebAuthnAddResid\ - entCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\n,MessageType_Web\ - AuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\xb5\x18\x01\x12)\n\ - \x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\x04\x90\xb5\x18\x01\ - \x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\x1a\x04\x98\xb5\x18\ - \x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\x07\x1a\x04\x90\xb5\ - \x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\x07\x1a\x04\x98\xb5\ - \x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\x07\x1a\x04\x90\xb5\ - \x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\x89\x07\x1a\x04\x98\ - \xb5\x18\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\\\"\x04\x08G\x10J\"\ - \x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\x08\xe0\x01\x10\xe0\ - \x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\x10\xb8\x02:<\n\x07\ - wire_in\x18\xd2\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptio\ - nsR\x06wireIn:>\n\x08wire_out\x18\xd3\x86\x03\x20\x01(\x08\x12!.google.p\ - rotobuf.EnumValueOptionsR\x07wireOut:G\n\rwire_debug_in\x18\xd4\x86\x03\ - \x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0bwireDebugIn:I\n\ - \x0ewire_debug_out\x18\xd5\x86\x03\x20\x01(\x08\x12!.google.protobuf.Enu\ - mValueOptionsR\x0cwireDebugOut:@\n\twire_tiny\x18\xd6\x86\x03\x20\x01(\ - \x08\x12!.google.protobuf.EnumValueOptionsR\x08wireTiny:L\n\x0fwire_boot\ - loader\x18\xd7\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOption\ - sR\x0ewireBootloader:C\n\x0bwire_no_fsm\x18\xd8\x86\x03\x20\x01(\x08\x12\ - !.google.protobuf.EnumValueOptionsR\twireNoFsm:F\n\x0cbitcoin_only\x18\ - \xe0\xd4\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x0bbitc\ - oinOnly:U\n\x17has_bitcoin_only_values\x18\xb9\x8e\x03\x20\x01(\x08\x12\ - \x1c.google.protobuf.EnumOptionsR\x14hasBitcoinOnlyValues:T\n\x14experim\ - ental_message\x18\xa1\x96\x03\x20\x01(\x08\x12\x1f.google.protobuf.Messa\ - geOptionsR\x13experimentalMessage:>\n\twire_type\x18\xa2\x96\x03\x20\x01\ - (\r\x12\x1f.google.protobuf.MessageOptionsR\x08wireType:N\n\x12experimen\ - tal_field\x18\x89\x9e\x03\x20\x01(\x08\x12\x1d.google.protobuf.FieldOpti\ - onsR\x11experimentalField:U\n\x17include_in_bitcoin_only\x18\xe0\xd4\x03\ - \x20\x01(\x08\x12\x1c.google.protobuf.FileOptionsR\x14includeInBitcoinOn\ - lyB8\n#com.satoshilabs.trezor.lib.protobufB\rTrezorMessage\x80\xa6\x1d\ - \x01\ + \x01\x123\n$MessageType_DebugLinkOptigaSetSecMax\x10\xb0F\x1a\x08\x80\ + \xa6\x1d\x01\xa0\xb5\x18\x01\x12+\n\x20MessageType_EthereumGetPublicKey\ + \x10\xc2\x03\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_EthereumPubli\ + cKey\x10\xc3\x03\x1a\x04\x98\xb5\x18\x01\x12(\n\x1eMessageType_EthereumG\ + etAddress\x108\x1a\x04\x90\xb5\x18\x01\x12%\n\x1bMessageType_EthereumAdd\ + ress\x109\x1a\x04\x98\xb5\x18\x01\x12$\n\x1aMessageType_EthereumSignTx\ + \x10:\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_EthereumSignTxEIP1559\ + \x10\xc4\x03\x1a\x04\x90\xb5\x18\x01\x12'\n\x1dMessageType_EthereumTxReq\ + uest\x10;\x1a\x04\x98\xb5\x18\x01\x12#\n\x19MessageType_EthereumTxAck\ + \x10<\x1a\x04\x90\xb5\x18\x01\x12)\n\x1fMessageType_EthereumSignMessage\ + \x10@\x1a\x04\x90\xb5\x18\x01\x12+\n!MessageType_EthereumVerifyMessage\ + \x10A\x1a\x04\x90\xb5\x18\x01\x12.\n$MessageType_EthereumMessageSignatur\ + e\x10B\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedData\ + \x10\xd0\x03\x1a\x04\x90\xb5\x18\x01\x125\n*MessageType_EthereumTypedDat\ + aStructRequest\x10\xd1\x03\x1a\x04\x98\xb5\x18\x01\x121\n&MessageType_Et\ + hereumTypedDataStructAck\x10\xd2\x03\x1a\x04\x90\xb5\x18\x01\x124\n)Mess\ + ageType_EthereumTypedDataValueRequest\x10\xd3\x03\x1a\x04\x98\xb5\x18\ + \x01\x120\n%MessageType_EthereumTypedDataValueAck\x10\xd4\x03\x1a\x04\ + \x90\xb5\x18\x01\x121\n&MessageType_EthereumTypedDataSignature\x10\xd5\ + \x03\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_EthereumSignTypedHash\ + \x10\xd6\x03\x1a\x04\x90\xb5\x18\x01\x12#\n\x19MessageType_NEMGetAddress\ + \x10C\x1a\x04\x90\xb5\x18\x01\x12\x20\n\x16MessageType_NEMAddress\x10D\ + \x1a\x04\x98\xb5\x18\x01\x12\x1f\n\x15MessageType_NEMSignTx\x10E\x1a\x04\ + \x90\xb5\x18\x01\x12!\n\x17MessageType_NEMSignedTx\x10F\x1a\x04\x98\xb5\ + \x18\x01\x12'\n\x1dMessageType_NEMDecryptMessage\x10K\x1a\x04\x90\xb5\ + \x18\x01\x12)\n\x1fMessageType_NEMDecryptedMessage\x10L\x1a\x04\x98\xb5\ + \x18\x01\x12&\n\x1bMessageType_TezosGetAddress\x10\x96\x01\x1a\x04\x90\ + \xb5\x18\x01\x12#\n\x18MessageType_TezosAddress\x10\x97\x01\x1a\x04\x98\ + \xb5\x18\x01\x12\"\n\x17MessageType_TezosSignTx\x10\x98\x01\x1a\x04\x90\ + \xb5\x18\x01\x12$\n\x19MessageType_TezosSignedTx\x10\x99\x01\x1a\x04\x98\ + \xb5\x18\x01\x12(\n\x1dMessageType_TezosGetPublicKey\x10\x9a\x01\x1a\x04\ + \x90\xb5\x18\x01\x12%\n\x1aMessageType_TezosPublicKey\x10\x9b\x01\x1a\ + \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_StellarSignTx\x10\xca\x01\x1a\ + \x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_StellarTxOpRequest\x10\xcb\ + \x01\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_StellarGetAddress\x10\ + \xcf\x01\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_StellarAddress\ + \x10\xd0\x01\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_StellarCreateAc\ + countOp\x10\xd2\x01\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_Stella\ + rPaymentOp\x10\xd3\x01\x1a\x04\x90\xb5\x18\x01\x128\n-MessageType_Stella\ + rPathPaymentStrictReceiveOp\x10\xd4\x01\x1a\x04\x90\xb5\x18\x01\x12/\n$M\ + essageType_StellarManageSellOfferOp\x10\xd5\x01\x1a\x04\x90\xb5\x18\x01\ + \x126\n+MessageType_StellarCreatePassiveSellOfferOp\x10\xd6\x01\x1a\x04\ + \x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarSetOptionsOp\x10\xd7\x01\ + \x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_StellarChangeTrustOp\x10\ + \xd8\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_StellarAllowTrust\ + Op\x10\xd9\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_StellarAccount\ + MergeOp\x10\xda\x01\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Stella\ + rManageDataOp\x10\xdc\x01\x1a\x04\x90\xb5\x18\x01\x12,\n!MessageType_Ste\ + llarBumpSequenceOp\x10\xdd\x01\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageTyp\ + e_StellarManageBuyOfferOp\x10\xde\x01\x1a\x04\x90\xb5\x18\x01\x125\n*Mes\ + sageType_StellarPathPaymentStrictSendOp\x10\xdf\x01\x1a\x04\x90\xb5\x18\ + \x01\x125\n*MessageType_StellarClaimClaimableBalanceOp\x10\xe1\x01\x1a\ + \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_StellarSignedTx\x10\xe6\x01\ + \x1a\x04\x98\xb5\x18\x01\x12*\n\x1fMessageType_CardanoGetPublicKey\x10\ + \xb1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_CardanoPublicKey\ + \x10\xb2\x02\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoGetAdd\ + ress\x10\xb3\x02\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoAd\ + dress\x10\xb4\x02\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_CardanoT\ + xItemAck\x10\xb9\x02\x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_CardanoT\ + xAuxiliaryDataSupplement\x10\xba\x02\x1a\x04\x98\xb5\x18\x01\x12.\n#Mess\ + ageType_CardanoTxWitnessRequest\x10\xbb\x02\x1a\x04\x90\xb5\x18\x01\x12/\ + \n$MessageType_CardanoTxWitnessResponse\x10\xbc\x02\x1a\x04\x98\xb5\x18\ + \x01\x12'\n\x1cMessageType_CardanoTxHostAck\x10\xbd\x02\x1a\x04\x90\xb5\ + \x18\x01\x12(\n\x1dMessageType_CardanoTxBodyHash\x10\xbe\x02\x1a\x04\x98\ + \xb5\x18\x01\x12,\n!MessageType_CardanoSignTxFinished\x10\xbf\x02\x1a\ + \x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_CardanoSignTxInit\x10\xc0\x02\ + \x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_CardanoTxInput\x10\xc1\ + \x02\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_CardanoTxOutput\x10\ + \xc2\x02\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_CardanoAssetGroup\ + \x10\xc3\x02\x1a\x04\x90\xb5\x18\x01\x12#\n\x18MessageType_CardanoToken\ + \x10\xc4\x02\x1a\x04\x90\xb5\x18\x01\x12+\n\x20MessageType_CardanoTxCert\ + ificate\x10\xc5\x02\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_Cardan\ + oTxWithdrawal\x10\xc6\x02\x1a\x04\x90\xb5\x18\x01\x12-\n\"MessageType_Ca\ + rdanoTxAuxiliaryData\x10\xc7\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessa\ + geType_CardanoPoolOwner\x10\xc8\x02\x1a\x04\x90\xb5\x18\x01\x121\n&Messa\ + geType_CardanoPoolRelayParameters\x10\xc9\x02\x1a\x04\x90\xb5\x18\x01\ + \x121\n&MessageType_CardanoGetNativeScriptHash\x10\xca\x02\x1a\x04\x90\ + \xb5\x18\x01\x12.\n#MessageType_CardanoNativeScriptHash\x10\xcb\x02\x1a\ + \x04\x98\xb5\x18\x01\x12$\n\x19MessageType_CardanoTxMint\x10\xcc\x02\x1a\ + \x04\x90\xb5\x18\x01\x12/\n$MessageType_CardanoTxCollateralInput\x10\xcd\ + \x02\x1a\x04\x90\xb5\x18\x01\x12.\n#MessageType_CardanoTxRequiredSigner\ + \x10\xce\x02\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_CardanoTxInlineD\ + atumChunk\x10\xcf\x02\x1a\x04\x90\xb5\x18\x01\x124\n)MessageType_Cardano\ + TxReferenceScriptChunk\x10\xd0\x02\x1a\x04\x90\xb5\x18\x01\x12.\n#Messag\ + eType_CardanoTxReferenceInput\x10\xd1\x02\x1a\x04\x90\xb5\x18\x01\x12'\n\ + \x1cMessageType_RippleGetAddress\x10\x90\x03\x1a\x04\x90\xb5\x18\x01\x12\ + $\n\x19MessageType_RippleAddress\x10\x91\x03\x1a\x04\x98\xb5\x18\x01\x12\ + #\n\x18MessageType_RippleSignTx\x10\x92\x03\x1a\x04\x90\xb5\x18\x01\x12%\ + \n\x1aMessageType_RippleSignedTx\x10\x93\x03\x1a\x04\x90\xb5\x18\x01\x12\ + 3\n(MessageType_MoneroTransactionInitRequest\x10\xf5\x03\x1a\x04\x98\xb5\ + \x18\x01\x12/\n$MessageType_MoneroTransactionInitAck\x10\xf6\x03\x1a\x04\ + \x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionSetInputRequest\x10\ + \xf7\x03\x1a\x04\x98\xb5\x18\x01\x123\n(MessageType_MoneroTransactionSet\ + InputAck\x10\xf8\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTr\ + ansactionInputViniRequest\x10\xfb\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Mes\ + sageType_MoneroTransactionInputViniAck\x10\xfc\x03\x1a\x04\x98\xb5\x18\ + \x01\x12;\n0MessageType_MoneroTransactionAllInputsSetRequest\x10\xfd\x03\ + \x1a\x04\x98\xb5\x18\x01\x127\n,MessageType_MoneroTransactionAllInputsSe\ + tAck\x10\xfe\x03\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransa\ + ctionSetOutputRequest\x10\xff\x03\x1a\x04\x98\xb5\x18\x01\x124\n)Message\ + Type_MoneroTransactionSetOutputAck\x10\x80\x04\x1a\x04\x98\xb5\x18\x01\ + \x128\n-MessageType_MoneroTransactionAllOutSetRequest\x10\x81\x04\x1a\ + \x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroTransactionAllOutSetAck\ + \x10\x82\x04\x1a\x04\x98\xb5\x18\x01\x128\n-MessageType_MoneroTransactio\ + nSignInputRequest\x10\x83\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ + _MoneroTransactionSignInputAck\x10\x84\x04\x1a\x04\x98\xb5\x18\x01\x124\ + \n)MessageType_MoneroTransactionFinalRequest\x10\x85\x04\x1a\x04\x98\xb5\ + \x18\x01\x120\n%MessageType_MoneroTransactionFinalAck\x10\x86\x04\x1a\ + \x04\x98\xb5\x18\x01\x126\n+MessageType_MoneroKeyImageExportInitRequest\ + \x10\x92\x04\x1a\x04\x98\xb5\x18\x01\x122\n'MessageType_MoneroKeyImageEx\ + portInitAck\x10\x93\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_Moner\ + oKeyImageSyncStepRequest\x10\x94\x04\x1a\x04\x98\xb5\x18\x01\x120\n%Mess\ + ageType_MoneroKeyImageSyncStepAck\x10\x95\x04\x1a\x04\x98\xb5\x18\x01\ + \x125\n*MessageType_MoneroKeyImageSyncFinalRequest\x10\x96\x04\x1a\x04\ + \x98\xb5\x18\x01\x121\n&MessageType_MoneroKeyImageSyncFinalAck\x10\x97\ + \x04\x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_MoneroGetAddress\x10\ + \x9c\x04\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_MoneroAddress\x10\ + \x9d\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMessageType_MoneroGetWatchKey\ + \x10\x9e\x04\x1a\x04\x90\xb5\x18\x01\x12%\n\x1aMessageType_MoneroWatchKe\ + y\x10\x9f\x04\x1a\x04\x98\xb5\x18\x01\x12-\n\"MessageType_DebugMoneroDia\ + gRequest\x10\xa2\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessageType_Debug\ + MoneroDiagAck\x10\xa3\x04\x1a\x04\x98\xb5\x18\x01\x12,\n!MessageType_Mon\ + eroGetTxKeyRequest\x10\xa6\x04\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessage\ + Type_MoneroGetTxKeyAck\x10\xa7\x04\x1a\x04\x98\xb5\x18\x01\x124\n)Messag\ + eType_MoneroLiveRefreshStartRequest\x10\xa8\x04\x1a\x04\x90\xb5\x18\x01\ + \x120\n%MessageType_MoneroLiveRefreshStartAck\x10\xa9\x04\x1a\x04\x98\ + \xb5\x18\x01\x123\n(MessageType_MoneroLiveRefreshStepRequest\x10\xaa\x04\ + \x1a\x04\x90\xb5\x18\x01\x12/\n$MessageType_MoneroLiveRefreshStepAck\x10\ + \xab\x04\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType_MoneroLiveRefreshFin\ + alRequest\x10\xac\x04\x1a\x04\x90\xb5\x18\x01\x120\n%MessageType_MoneroL\ + iveRefreshFinalAck\x10\xad\x04\x1a\x04\x98\xb5\x18\x01\x12&\n\x1bMessage\ + Type_EosGetPublicKey\x10\xd8\x04\x1a\x04\x90\xb5\x18\x01\x12#\n\x18Messa\ + geType_EosPublicKey\x10\xd9\x04\x1a\x04\x98\xb5\x18\x01\x12\x20\n\x15Mes\ + sageType_EosSignTx\x10\xda\x04\x1a\x04\x90\xb5\x18\x01\x12)\n\x1eMessage\ + Type_EosTxActionRequest\x10\xdb\x04\x1a\x04\x98\xb5\x18\x01\x12%\n\x1aMe\ + ssageType_EosTxActionAck\x10\xdc\x04\x1a\x04\x90\xb5\x18\x01\x12\"\n\x17\ + MessageType_EosSignedTx\x10\xdd\x04\x1a\x04\x98\xb5\x18\x01\x12(\n\x1dMe\ + ssageType_BinanceGetAddress\x10\xbc\x05\x1a\x04\x90\xb5\x18\x01\x12%\n\ + \x1aMessageType_BinanceAddress\x10\xbd\x05\x1a\x04\x98\xb5\x18\x01\x12*\ + \n\x1fMessageType_BinanceGetPublicKey\x10\xbe\x05\x1a\x04\x90\xb5\x18\ + \x01\x12'\n\x1cMessageType_BinancePublicKey\x10\xbf\x05\x1a\x04\x98\xb5\ + \x18\x01\x12$\n\x19MessageType_BinanceSignTx\x10\xc0\x05\x1a\x04\x90\xb5\ + \x18\x01\x12'\n\x1cMessageType_BinanceTxRequest\x10\xc1\x05\x1a\x04\x98\ + \xb5\x18\x01\x12)\n\x1eMessageType_BinanceTransferMsg\x10\xc2\x05\x1a\ + \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceOrderMsg\x10\xc3\x05\ + \x1a\x04\x90\xb5\x18\x01\x12'\n\x1cMessageType_BinanceCancelMsg\x10\xc4\ + \x05\x1a\x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_BinanceSignedTx\x10\ + \xc5\x05\x1a\x04\x98\xb5\x18\x01\x126\n+MessageType_WebAuthnListResident\ + Credentials\x10\xa0\x06\x1a\x04\x90\xb5\x18\x01\x12*\n\x1fMessageType_We\ + bAuthnCredentials\x10\xa1\x06\x1a\x04\x98\xb5\x18\x01\x124\n)MessageType\ + _WebAuthnAddResidentCredential\x10\xa2\x06\x1a\x04\x90\xb5\x18\x01\x127\ + \n,MessageType_WebAuthnRemoveResidentCredential\x10\xa3\x06\x1a\x04\x90\ + \xb5\x18\x01\x12)\n\x1eMessageType_SolanaGetPublicKey\x10\x84\x07\x1a\ + \x04\x90\xb5\x18\x01\x12&\n\x1bMessageType_SolanaPublicKey\x10\x85\x07\ + \x1a\x04\x98\xb5\x18\x01\x12'\n\x1cMessageType_SolanaGetAddress\x10\x86\ + \x07\x1a\x04\x90\xb5\x18\x01\x12$\n\x19MessageType_SolanaAddress\x10\x87\ + \x07\x1a\x04\x98\xb5\x18\x01\x12#\n\x18MessageType_SolanaSignTx\x10\x88\ + \x07\x1a\x04\x90\xb5\x18\x01\x12(\n\x1dMessageType_SolanaTxSignature\x10\ + \x89\x07\x1a\x04\x98\xb5\x18\x01\x1a\x04\xc8\xf3\x18\x01\"\x04\x08Z\x10\ + \\\"\x04\x08G\x10J\"\x04\x08r\x10z\"\x06\x08\xdb\x01\x10\xdb\x01\"\x06\ + \x08\xe0\x01\x10\xe0\x01\"\x06\x08\xac\x02\x10\xb0\x02\"\x06\x08\xb5\x02\ + \x10\xb8\x02:<\n\x07wire_in\x18\xd2\x86\x03\x20\x01(\x08\x12!.google.pro\ + tobuf.EnumValueOptionsR\x06wireIn:>\n\x08wire_out\x18\xd3\x86\x03\x20\ + \x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x07wireOut:G\n\rwire_de\ + bug_in\x18\xd4\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOption\ + sR\x0bwireDebugIn:I\n\x0ewire_debug_out\x18\xd5\x86\x03\x20\x01(\x08\x12\ + !.google.protobuf.EnumValueOptionsR\x0cwireDebugOut:@\n\twire_tiny\x18\ + \xd6\x86\x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\x08wire\ + Tiny:L\n\x0fwire_bootloader\x18\xd7\x86\x03\x20\x01(\x08\x12!.google.pro\ + tobuf.EnumValueOptionsR\x0ewireBootloader:C\n\x0bwire_no_fsm\x18\xd8\x86\ + \x03\x20\x01(\x08\x12!.google.protobuf.EnumValueOptionsR\twireNoFsm:F\n\ + \x0cbitcoin_only\x18\xe0\xd4\x03\x20\x01(\x08\x12!.google.protobuf.EnumV\ + alueOptionsR\x0bbitcoinOnly:U\n\x17has_bitcoin_only_values\x18\xb9\x8e\ + \x03\x20\x01(\x08\x12\x1c.google.protobuf.EnumOptionsR\x14hasBitcoinOnly\ + Values:T\n\x14experimental_message\x18\xa1\x96\x03\x20\x01(\x08\x12\x1f.\ + google.protobuf.MessageOptionsR\x13experimentalMessage:>\n\twire_type\ + \x18\xa2\x96\x03\x20\x01(\r\x12\x1f.google.protobuf.MessageOptionsR\x08w\ + ireType:N\n\x12experimental_field\x18\x89\x9e\x03\x20\x01(\x08\x12\x1d.g\ + oogle.protobuf.FieldOptionsR\x11experimentalField:U\n\x17include_in_bitc\ + oin_only\x18\xe0\xd4\x03\x20\x01(\x08\x12\x1c.google.protobuf.FileOption\ + sR\x14includeInBitcoinOnlyB8\n#com.satoshilabs.trezor.lib.protobufB\rTre\ + zorMessage\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/rust/trezor-client/src/protos/generated/messages_debug.rs b/rust/trezor-client/src/protos/generated/messages_debug.rs index b787aeb03a..e69ec5ec5f 100644 --- a/rust/trezor-client/src/protos/generated/messages_debug.rs +++ b/rust/trezor-client/src/protos/generated/messages_debug.rs @@ -3454,6 +3454,109 @@ impl ::protobuf::reflect::ProtobufValue for DebugLinkResetDebugEvents { type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; } +// @@protoc_insertion_point(message:hw.trezor.messages.debug.DebugLinkOptigaSetSecMax) +#[derive(PartialEq,Clone,Default,Debug)] +pub struct DebugLinkOptigaSetSecMax { + // special fields + // @@protoc_insertion_point(special_field:hw.trezor.messages.debug.DebugLinkOptigaSetSecMax.special_fields) + pub special_fields: ::protobuf::SpecialFields, +} + +impl<'a> ::std::default::Default for &'a DebugLinkOptigaSetSecMax { + fn default() -> &'a DebugLinkOptigaSetSecMax { + <DebugLinkOptigaSetSecMax as ::protobuf::Message>::default_instance() + } +} + +impl DebugLinkOptigaSetSecMax { + pub fn new() -> DebugLinkOptigaSetSecMax { + ::std::default::Default::default() + } + + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { + let mut fields = ::std::vec::Vec::with_capacity(0); + let mut oneofs = ::std::vec::Vec::with_capacity(0); + ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<DebugLinkOptigaSetSecMax>( + "DebugLinkOptigaSetSecMax", + fields, + oneofs, + ) + } +} + +impl ::protobuf::Message for DebugLinkOptigaSetSecMax { + const NAME: &'static str = "DebugLinkOptigaSetSecMax"; + + fn is_initialized(&self) -> bool { + true + } + + fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { + while let Some(tag) = is.read_raw_tag_or_eof()? { + match tag { + tag => { + ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; + }, + }; + } + ::std::result::Result::Ok(()) + } + + // Compute sizes of nested messages + #[allow(unused_variables)] + fn compute_size(&self) -> u64 { + let mut my_size = 0; + my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); + self.special_fields.cached_size().set(my_size as u32); + my_size + } + + fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { + os.write_unknown_fields(self.special_fields.unknown_fields())?; + ::std::result::Result::Ok(()) + } + + fn special_fields(&self) -> &::protobuf::SpecialFields { + &self.special_fields + } + + fn mut_special_fields(&mut self) -> &mut ::protobuf::SpecialFields { + &mut self.special_fields + } + + fn new() -> DebugLinkOptigaSetSecMax { + DebugLinkOptigaSetSecMax::new() + } + + fn clear(&mut self) { + self.special_fields.clear(); + } + + fn default_instance() -> &'static DebugLinkOptigaSetSecMax { + static instance: DebugLinkOptigaSetSecMax = DebugLinkOptigaSetSecMax { + special_fields: ::protobuf::SpecialFields::new(), + }; + &instance + } +} + +impl ::protobuf::MessageFull for DebugLinkOptigaSetSecMax { + fn descriptor() -> ::protobuf::reflect::MessageDescriptor { + static descriptor: ::protobuf::rt::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::Lazy::new(); + descriptor.get(|| file_descriptor().message_by_package_relative_name("DebugLinkOptigaSetSecMax").unwrap()).clone() + } +} + +impl ::std::fmt::Display for DebugLinkOptigaSetSecMax { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + ::protobuf::text_format::fmt(self, f) + } +} + +impl ::protobuf::reflect::ProtobufValue for DebugLinkOptigaSetSecMax { + type RuntimeType = ::protobuf::reflect::rt::RuntimeTypeMessage<Self>; +} + static file_descriptor_proto_data: &'static [u8] = b"\ \n\x14messages-debug.proto\x12\x18hw.trezor.messages.debug\x1a\x0emessag\ es.proto\x1a\x15messages-common.proto\x1a\x19messages-management.proto\"\ @@ -3501,8 +3604,9 @@ static file_descriptor_proto_data: &'static [u8] = b"\ hErase\x12\x16\n\x06sector\x18\x01\x20\x01(\rR\x06sector\".\n\x14DebugLi\ nkEraseSdCard\x12\x16\n\x06format\x18\x01\x20\x01(\x08R\x06format\",\n\ \x14DebugLinkWatchLayout\x12\x14\n\x05watch\x18\x01\x20\x01(\x08R\x05wat\ - ch\"\x1b\n\x19DebugLinkResetDebugEventsB=\n#com.satoshilabs.trezor.lib.p\ - rotobufB\x12TrezorMessageDebug\x80\xa6\x1d\x01\ + ch\"\x1b\n\x19DebugLinkResetDebugEvents\"\x1a\n\x18DebugLinkOptigaSetSec\ + MaxB=\n#com.satoshilabs.trezor.lib.protobufB\x12TrezorMessageDebug\x80\ + \xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file @@ -3523,7 +3627,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { deps.push(super::messages::file_descriptor().clone()); deps.push(super::messages_common::file_descriptor().clone()); deps.push(super::messages_management::file_descriptor().clone()); - let mut messages = ::std::vec::Vec::with_capacity(15); + let mut messages = ::std::vec::Vec::with_capacity(16); messages.push(DebugLinkDecision::generated_message_descriptor_data()); messages.push(DebugLinkLayout::generated_message_descriptor_data()); messages.push(DebugLinkReseedRandom::generated_message_descriptor_data()); @@ -3539,6 +3643,7 @@ pub fn file_descriptor() -> &'static ::protobuf::reflect::FileDescriptor { messages.push(DebugLinkEraseSdCard::generated_message_descriptor_data()); messages.push(DebugLinkWatchLayout::generated_message_descriptor_data()); messages.push(DebugLinkResetDebugEvents::generated_message_descriptor_data()); + messages.push(DebugLinkOptigaSetSecMax::generated_message_descriptor_data()); let mut enums = ::std::vec::Vec::with_capacity(3); enums.push(debug_link_decision::DebugSwipeDirection::generated_enum_descriptor_data()); enums.push(debug_link_decision::DebugButton::generated_enum_descriptor_data()); From b6b1ad8825a345e05329adfd3ee7cb39b3803e82 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 9 Jul 2024 14:29:46 +0200 Subject: [PATCH 393/626] feat(python): Implement DebugLinkOptigaSetSecMax. --- python/.changelog.d/4000.added | 1 + python/src/trezorlib/cli/debug.py | 8 ++++++++ python/src/trezorlib/debuglink.py | 5 +++++ 3 files changed, 14 insertions(+) create mode 100644 python/.changelog.d/4000.added diff --git a/python/.changelog.d/4000.added b/python/.changelog.d/4000.added new file mode 100644 index 0000000000..a3a31bd6dc --- /dev/null +++ b/python/.changelog.d/4000.added @@ -0,0 +1 @@ +Added ability to set Optiga's security event counter to maximum: `trezorctl debug optiga-set-sec-max`. diff --git a/python/src/trezorlib/cli/debug.py b/python/src/trezorlib/cli/debug.py index e262b1fea6..50613a04ee 100644 --- a/python/src/trezorlib/cli/debug.py +++ b/python/src/trezorlib/cli/debug.py @@ -21,6 +21,7 @@ from .. import mapping, messages, protobuf from ..client import TrezorClient from ..debuglink import TrezorClientDebugLink +from ..debuglink import optiga_set_sec_max as debuglink_optiga_set_sec_max from ..debuglink import prodtest_t1 as debuglink_prodtest_t1 from ..debuglink import record_screen from . import with_client @@ -112,3 +113,10 @@ def prodtest_t1(client: "TrezorClient") -> str: Only available on PRODTEST firmware and on T1B1. Formerly named self-test. """ return debuglink_prodtest_t1(client) + + +@cli.command() +@with_client +def optiga_set_sec_max(client: "TrezorClient") -> str: + """Set Optiga's security event counter to maximum.""" + return debuglink_optiga_set_sec_max(client) diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index b7631fcd72..5786e1590a 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -1362,3 +1362,8 @@ def get_session_screenshot_dir(directory: Path) -> Path: def _is_emulator(debug_client: "TrezorClientDebugLink") -> bool: """Check if we are connected to emulator, in contrast to hardware device.""" return debug_client.features.fw_vendor == "EMULATOR" + + +@expect(messages.Success, field="message", ret_type=str) +def optiga_set_sec_max(client: "TrezorClient") -> protobuf.MessageType: + return client.call(messages.DebugLinkOptigaSetSecMax()) From e84f969f4fb49dd0e0628e3aec165003ea23294f Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 9 Jul 2024 14:30:18 +0200 Subject: [PATCH 394/626] feat(core): Implement DebugLinkOptigaSetSecMax. --- .../modtrezorcrypto/modtrezorcrypto-optiga.h | 17 +++++++++++++++++ core/embed/trezorhal/optiga.h | 2 ++ core/embed/trezorhal/optiga/optiga.c | 14 ++++++++++++++ core/embed/trezorhal/unix/optiga.c | 2 ++ core/mocks/generated/trezorcrypto/optiga.pyi | 7 +++++++ core/src/apps/debug/__init__.py | 15 +++++++++++++++ 6 files changed, 57 insertions(+) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h index 2a56e2bde7..040de99622 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-optiga.h @@ -122,6 +122,19 @@ STATIC mp_obj_t mod_trezorcrypto_optiga_get_sec() { STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_optiga_get_sec_obj, mod_trezorcrypto_optiga_get_sec); +#if PYOPT == 0 +/// def set_sec_max() -> None: +/// """ +/// Set Optiga's security event counter to maximum. +/// """ +STATIC mp_obj_t mod_trezorcrypto_optiga_set_sec_max() { + optiga_set_sec_max(); + return mp_const_none; +} +STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_optiga_set_sec_max_obj, + mod_trezorcrypto_optiga_set_sec_max); +#endif + /// DEVICE_CERT_INDEX: int /// DEVICE_ECC_KEY_INDEX: int @@ -132,6 +145,10 @@ STATIC const mp_rom_map_elem_t mod_trezorcrypto_optiga_globals_table[] = { {MP_ROM_QSTR(MP_QSTR_sign), MP_ROM_PTR(&mod_trezorcrypto_optiga_sign_obj)}, {MP_ROM_QSTR(MP_QSTR_get_sec), MP_ROM_PTR(&mod_trezorcrypto_optiga_get_sec_obj)}, +#if PYOPT == 0 + {MP_ROM_QSTR(MP_QSTR_set_sec_max), + MP_ROM_PTR(&mod_trezorcrypto_optiga_set_sec_max_obj)}, +#endif {MP_ROM_QSTR(MP_QSTR_DEVICE_CERT_INDEX), MP_ROM_INT(OPTIGA_DEVICE_CERT_INDEX)}, {MP_ROM_QSTR(MP_QSTR_DEVICE_ECC_KEY_INDEX), diff --git a/core/embed/trezorhal/optiga.h b/core/embed/trezorhal/optiga.h index f3e52bef3e..b3a133a629 100644 --- a/core/embed/trezorhal/optiga.h +++ b/core/embed/trezorhal/optiga.h @@ -57,6 +57,8 @@ bool __wur optiga_read_cert(uint8_t index, uint8_t *cert, size_t max_cert_size, bool __wur optiga_read_sec(uint8_t *sec); +void optiga_set_sec_max(void); + bool __wur optiga_random_buffer(uint8_t *dest, size_t size); bool __wur optiga_pin_set(optiga_ui_progress_t ui_progress, diff --git a/core/embed/trezorhal/optiga/optiga.c b/core/embed/trezorhal/optiga/optiga.c index 5bc8d6fc1a..2189fc8dd9 100644 --- a/core/embed/trezorhal/optiga/optiga.c +++ b/core/embed/trezorhal/optiga/optiga.c @@ -176,6 +176,20 @@ bool optiga_read_sec(uint8_t *sec) { return ret == OPTIGA_SUCCESS && size == sizeof(uint8_t); } +void optiga_set_sec_max(void) { + uint8_t invalid_point[] = { + 0x03, 0x42, 0x00, 0x04, 0xe2, 0x67, 0x5b, 0xe0, 0xbb, 0xf4, 0xfb, 0x9d, + 0xec, 0xaa, 0x1e, 0x96, 0xac, 0xc8, 0xa7, 0xca, 0xd0, 0x05, 0x84, 0xfe, + 0xfd, 0x7f, 0x24, 0xc6, 0xe7, 0x72, 0x5b, 0x56, 0xb3, 0x45, 0x06, 0x67, + 0xbc, 0x73, 0xe3, 0xb8, 0xf5, 0x5d, 0x1c, 0xad, 0xa0, 0x3e, 0x59, 0x1b, + 0x3b, 0x9c, 0x6e, 0xc4, 0xb6, 0xd1, 0x05, 0xf7, 0xd8, 0xc0, 0x67, 0x0d, + 0xfb, 0xcc, 0xea, 0xb1, 0x65, 0xdb, 0xa6, 0x5f}; + uint8_t buffer[32] = {0}; + size_t size = 0; + optiga_calc_ssec(OPTIGA_CURVE_P256, OID_PIN_ECDH, invalid_point, + sizeof(invalid_point), buffer, sizeof(buffer), &size); +} + uint32_t optiga_estimate_time_ms(storage_pin_op_t op) { uint8_t sec = 0; if (!optiga_read_sec(&sec)) { diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index de6f27ab0e..990702eee2 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -88,6 +88,8 @@ bool optiga_read_sec(uint8_t *sec) { return true; } +void optiga_set_sec_max(void) {} + uint32_t optiga_estimate_time_ms(storage_pin_op_t op) { return 0; } bool optiga_random_buffer(uint8_t *dest, size_t size) { diff --git a/core/mocks/generated/trezorcrypto/optiga.pyi b/core/mocks/generated/trezorcrypto/optiga.pyi index f4f2d2be40..af5a36b7a1 100644 --- a/core/mocks/generated/trezorcrypto/optiga.pyi +++ b/core/mocks/generated/trezorcrypto/optiga.pyi @@ -36,5 +36,12 @@ def get_sec() -> int | None: """ Returns the value of Optiga's security event counter. """ + + +# extmod/modtrezorcrypto/modtrezorcrypto-optiga.h +def set_sec_max() -> None: + """ + Set Optiga's security event counter to maximum. + """ DEVICE_CERT_INDEX: int DEVICE_ECC_KEY_INDEX: int diff --git a/core/src/apps/debug/__init__.py b/core/src/apps/debug/__init__.py index 8b2f18774c..3f08be81af 100644 --- a/core/src/apps/debug/__init__.py +++ b/core/src/apps/debug/__init__.py @@ -22,6 +22,7 @@ DebugLinkDecision, DebugLinkEraseSdCard, DebugLinkGetState, + DebugLinkOptigaSetSecMax, DebugLinkRecordScreen, DebugLinkReseedRandom, DebugLinkResetDebugEvents, @@ -274,7 +275,21 @@ def boot() -> None: register( MessageType.DebugLinkResetDebugEvents, dispatch_DebugLinkResetDebugEvents ) + register( + MessageType.DebugLinkOptigaSetSecMax, dispatch_DebugLinkOptigaSetSecMax + ) loop.schedule(debuglink_decision_dispatcher()) if storage.layout_watcher is not LAYOUT_WATCHER_NONE: loop.schedule(return_layout_change()) + + async def dispatch_DebugLinkOptigaSetSecMax( + msg: DebugLinkOptigaSetSecMax, + ) -> Success: + if utils.USE_OPTIGA: + from trezor.crypto import optiga + + optiga.set_sec_max() + return Success() + else: + raise wire.UnexpectedMessage("Optiga not supported") From 1016b0c98a8237ebfb161aefaaa0de5dde43cd94 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Sat, 6 Jul 2024 23:18:42 +0200 Subject: [PATCH 395/626] feat(storage): Do not lock freshly initialized storage. --- storage/storage.c | 3 +-- storage/tests/python/src/storage.py | 4 +++- storage/tests/tests/test_set_get.py | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/storage/storage.c b/storage/storage.c index e4f4632c38..fe36b52e06 100644 --- a/storage/storage.c +++ b/storage/storage.c @@ -792,6 +792,7 @@ void storage_init(PIN_UI_WAIT_CALLBACK callback, const uint8_t *salt, const uint16_t salt_len) { initialized = secfalse; unlocked = secfalse; + memzero(cached_keys, sizeof(cached_keys)); norcow_init(&norcow_active_version); initialized = sectrue; ui_callback = callback; @@ -810,9 +811,7 @@ void storage_init(PIN_UI_WAIT_CALLBACK callback, const uint8_t *salt, uint16_t len = 0; if (secfalse == norcow_get(EDEK_PVC_KEY, &val, &len)) { init_wiped_storage(); - storage_lock(); } - memzero(cached_keys, sizeof(cached_keys)); } secbool storage_pin_fails_increase(void) { diff --git a/storage/tests/python/src/storage.py b/storage/tests/python/src/storage.py index 5a0c67aae8..ef4f534d7c 100644 --- a/storage/tests/python/src/storage.py +++ b/storage/tests/python/src/storage.py @@ -42,7 +42,7 @@ def _init_pin(self): self.pin_log.init() self._set_wipe_code(consts.WIPE_CODE_EMPTY) self._set_pin(consts.PIN_EMPTY) - self.unlocked = False + self.unlocked = True def _set_pin(self, pin: str): random_salt = prng.random_buffer(consts.PIN_SALT_SIZE) @@ -220,6 +220,8 @@ def _get_encrypted(self, key: int) -> bytes: def _decrypt(self, key: int) -> bytes: data = self.nc.get(key) + if data is None: + raise RuntimeError("Key not found") iv = data[: consts.CHACHA_IV_SIZE] # cipher text with MAC diff --git a/storage/tests/tests/test_set_get.py b/storage/tests/tests/test_set_get.py index 5236ab1b1c..25838d6168 100644 --- a/storage/tests/tests/test_set_get.py +++ b/storage/tests/tests/test_set_get.py @@ -237,6 +237,7 @@ def test_set_similar(nc_class): def test_set_locked(nc_class): sc, sp = common.init(nc_class) for s in (sc, sp): + s.lock() with pytest.raises(RuntimeError): s.set(0x0303, b"test") with pytest.raises(RuntimeError): From 700512901b822742759e677ae59fbaef04417842 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 10 Jul 2024 13:12:28 +0200 Subject: [PATCH 396/626] docs(core): fix 2.8.0 release date --- core/CHANGELOG.T2B1.md | 2 +- core/CHANGELOG.T2T1.md | 2 +- core/CHANGELOG.T3T1.md | 2 +- core/CHANGELOG.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index 69885296b0..b10a5cad27 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.8.0] (17th July 2024) +## [2.8.0] (9th July 2024) ### Added - Expose value of the Optiga SEC counter in `Features` message. diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index d2fb23733b..07b83a8f3a 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.8.0] (17th July 2024) +## [2.8.0] (9th July 2024) ### Added - Expose value of the Optiga SEC counter in `Features` message. diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md index 5f018e3b1e..8a0f3da298 100644 --- a/core/CHANGELOG.T3T1.md +++ b/core/CHANGELOG.T3T1.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.8.0] (17th July 2024) +## [2.8.0] (9th July 2024) ### Added - Animated device label on homescreen/lockscreen. [#3895] diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 70a39aaded..fb0de9c2b1 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.8.0] (17th July 2024) +## [2.8.0] (9th July 2024) ### Added - [T3T1] Animated device label on homescreen/lockscreen. [#3895] From 9304f6aa80be833e0f59a5bbb8052b33134c14a5 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 8 Jul 2024 20:28:56 +0200 Subject: [PATCH 397/626] chore(core): update translations jq --sort-keys -s '.[0] * .[1]' es.json es-ES_diff_tutorial.json > es.json.tmp && mv es.json.tmp es.json [no changelog] --- core/translations/cs.json | 17 ++++++++++++++--- core/translations/de.json | 19 +++++++++++++++---- core/translations/en.json | 2 +- core/translations/es.json | 19 +++++++++++++++---- core/translations/fr.json | 19 +++++++++++++++---- core/translations/signatures.json | 6 +++--- 6 files changed, 63 insertions(+), 19 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index e2d26c1a53..2ecc0cda0e 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -33,7 +33,7 @@ }, "header": { "language": "cs-CZ", - "version": "2.8.0" + "version": "2.8.1" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktujte naši podporu na", @@ -412,6 +412,7 @@ "instructions__continue_holding": "Stále\ndržte", "instructions__continue_in_app": "Pokračujte v aplikaci", "instructions__enter_next_share": "Zadejte další část", + "instructions__exit_tutorial": "Ukončit tutoriál", "instructions__hold_to_confirm": "Držením potvrďte", "instructions__hold_to_continue": "Držením pokračujte", "instructions__hold_to_exit_tutorial": "Podržením ukončíte tutoriál", @@ -881,20 +882,30 @@ "tezos__submit_proposal": "Odeslat návrh", "tezos__submit_proposals": "Odeslat návrhy", "tutorial__continue": "Pokračovat v tutoriálu", + "tutorial__did_you_know": "Věděli jste, že...", "tutorial__exit": "Ukončit tutoriál", + "tutorial__first_wallet": "Trezor Model One, vyrobený v roce 2013,\nbyl první hardwarovou peněženkou na světě?", + "tutorial__get_started": "Jdeme na to!", + "tutorial__lets_begin": "Snadno se naučte používat toto zařízení.", "tutorial__menu": "Nabídka obsahuje kontextové akce a možnosti.", "tutorial__middle_click": "Stiskněte současně levé i pravé tlačítko\npro potvrzení.", "tutorial__press_and_hold": "Podržením pravého tlačítka\nschválíte důležité operace.", "tutorial__ready_to_use": "Nyní můžete\npoužívat Trezor.", - "tutorial__ready_to_use_safe5": "Dobrá práce!\nNyní můžete začít používat svůj Trezor Safe 5.", + "tutorial__ready_to_use_safe5": "Vše hotovo, můžete začít používat svoje zařízení!", + "tutorial__restart_tutorial": "Restartovat tutoriál", "tutorial__scroll_down": "Když se text nevejde na jednu obrazovku, pravým tlačítkem posunete text dolů.\n\rLevým tlačítkem se posunete nahoru.", "tutorial__sure_you_want_skip": "Opravdu chcete\npřeskočit tutoriál?", - "tutorial__swipe_up_and_down": "Přejetím prstem nahoru a dolů procházíte mezi obrazovkami.", + "tutorial__swipe_up_and_down": "Přejetím prstem nahoru/dolů\nprocházíte mezi obrazovkami.", + "tutorial__title_easy_navigation": "Základní navigace", + "tutorial__title_handy_menu": "Praktická nabídka", "tutorial__title_hello": "Dobrý den", + "tutorial__title_hold": "Držením potvrdíte důležité akce", + "tutorial__title_lets_begin": "Můžeme začít", "tutorial__title_navigation": "Ovládání", "tutorial__title_screen_scroll": "Posunutí obrazovky", "tutorial__title_skip": "Přeskočit tutoriál", "tutorial__title_tutorial_complete": "Tutoriál dokončen", + "tutorial__title_well_done": "Výborně!", "tutorial__use_trezor": "Trezor použijete\nstisknutím levého a pravého tlačítka.\n\rPokračujte vpravo.", "tutorial__welcome_press_right": "Vítá vás Trezor. Pokračujte stisknutím pravého tlačítka.", "tutorial__welcome_safe5": "Vítá vás Trezor Safe 5.", diff --git a/core/translations/de.json b/core/translations/de.json index 172fd02ddb..906b08150d 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -33,7 +33,7 @@ }, "header": { "language": "de-DE", - "version": "2.8.0" + "version": "2.8.1" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktiere den Trezor Support unter", @@ -412,6 +412,7 @@ "instructions__continue_holding": "Weiter\nhalten", "instructions__continue_in_app": "In der App fortfahren", "instructions__enter_next_share": "Nächsten Share eingeben", + "instructions__exit_tutorial": "Tutorial beenden", "instructions__hold_to_confirm": "Zum Bestätigen halten", "instructions__hold_to_continue": "Zum Fortfahren halten", "instructions__hold_to_exit_tutorial": "Zum Verlassen des Tutorials halten", @@ -881,20 +882,30 @@ "tezos__submit_proposal": "Vorschlag senden", "tezos__submit_proposals": "Vorschläge senden", "tutorial__continue": "Tutorial fortsetzen", + "tutorial__did_you_know": "Wussten sie?", "tutorial__exit": "Tutorial schließen", - "tutorial__menu": "Das Menü enthält kontextspezifische Aktionen und Optionen.", + "tutorial__first_wallet": "Der Trezor Model One, erstellt in 2013,\nwar der erste Hardware wallet des Weltes.", + "tutorial__get_started": "Los geht's!", + "tutorial__lets_begin": "Lern wie mann navigiert und benutzt dieses Gerät.", + "tutorial__menu": "Befinde kontextspezifische Maßnahme and Optionen in der Menü.", "tutorial__middle_click": "Drücke gleichzeitig rechts und links,\num zu bestätigen.", "tutorial__press_and_hold": "Halte die rechte Taste gedrückt,\num wichtige Vorgänge zu genehmigen.", "tutorial__ready_to_use": "Du kannst jetzt\nTrezor verwenden.", - "tutorial__ready_to_use_safe5": "Gut gemacht!\nJetzt kannst du deinen Trezor Safe 5 verwenden.", + "tutorial__ready_to_use_safe5": "Sie sind bereit dieses Gerät nun verwenden!", + "tutorial__restart_tutorial": "Tutorial neustarten", "tutorial__scroll_down": "Drücke rechts, um nach unten zu scrollen und alles zu lesen, wenn der Text nicht auf einen Bildschirm passt.\n\rDrücke links, um nach oben zu scrollen.", "tutorial__sure_you_want_skip": "Möchtest du das Tutorial\nwirklich überspringen?", - "tutorial__swipe_up_and_down": "Wische nach oben und unten, um Bildschirme zu wechseln.", + "tutorial__swipe_up_and_down": "Nach oben und unten wischen\num den Bildschirmen durchgehen.", + "tutorial__title_easy_navigation": "Leichte Navigation", + "tutorial__title_handy_menu": "Nützliches Menü", "tutorial__title_hello": "Hallo", + "tutorial__title_hold": "Halte den Bildschirm um wichtige Schritte bestätigen", + "tutorial__title_lets_begin": "Lass uns beginnen", "tutorial__title_navigation": "Navigation", "tutorial__title_screen_scroll": "Bildschirm scrollen", "tutorial__title_skip": "Tutorial überspr.", "tutorial__title_tutorial_complete": "Tutorial beendet", + "tutorial__title_well_done": "Gut gemacht!", "tutorial__use_trezor": "Verwende Trezor durch\ndrücken der linken und rechten Tasten.\n\rWeiter rechts.", "tutorial__welcome_press_right": "Willkommen bei Trezor. Drücke rechts, um fortzufahren.", "tutorial__welcome_safe5": "Willkommen bei Trezor Safe 5.", diff --git a/core/translations/en.json b/core/translations/en.json index a38777f29c..72460bd377 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -1,7 +1,7 @@ { "header": { "language": "en-US", - "version": "2.8.0" + "version": "2.8.1" }, "translations": { "addr_mismatch__contact_support_at": "Please contact Trezor support at", diff --git a/core/translations/es.json b/core/translations/es.json index 7e385f1642..a6ec1e4985 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -33,7 +33,7 @@ }, "header": { "language": "es-ES", - "version": "2.8.0" + "version": "2.8.1" }, "translations": { "addr_mismatch__contact_support_at": "Contacta con atención al cliente de Trezor en", @@ -412,6 +412,7 @@ "instructions__continue_holding": "Continuar\nposición", "instructions__continue_in_app": "Continuar en la aplicación", "instructions__enter_next_share": "Introduce el siguiente recurso", + "instructions__exit_tutorial": "Salir del tutorial", "instructions__hold_to_confirm": "Pulsa para confirmar", "instructions__hold_to_continue": "Pulsa para continuar", "instructions__hold_to_exit_tutorial": "Pulsa para salir del tutorial", @@ -881,20 +882,30 @@ "tezos__submit_proposal": "Enviar propuesta", "tezos__submit_proposals": "Enviar propuestas", "tutorial__continue": "Continuar con el tutorial", + "tutorial__did_you_know": "¿Sabías que?", "tutorial__exit": "Salir del tutorial", - "tutorial__menu": "El menú incluye funciones y opciones específicas del contexto.", + "tutorial__first_wallet": "El modelo Trezor One, creado en 2013,\nfue el primer monedero físico de la historia", + "tutorial__get_started": "¡Comencemos!", + "tutorial__lets_begin": "Aprende a usar y navegar este dispositivo con facilidad.", + "tutorial__menu": "Encuentra acciones y opciones específicas del contexto en el menú.", "tutorial__middle_click": "Pulsa ambos botones a la vez\npara confirmar.", "tutorial__press_and_hold": "Mantén pulsado el botón derecho para\naprobar operaciones importantes.", "tutorial__ready_to_use": "Ya puedes\nusar Trezor.", - "tutorial__ready_to_use_safe5": "¡Conseguido!\nYa puedes usar Trezor Safe 5.", + "tutorial__ready_to_use_safe5": "¡Estás listo para comenzar a usar tu dispositivo!", + "tutorial__restart_tutorial": "Reiniciar tutorial", "tutorial__scroll_down": "Pulsa el botón derecho para ir bajando y leer todo cuando el texto no quepa en una pantalla.\n\rPulsa el botón izquierdo para ir hacia arriba.", "tutorial__sure_you_want_skip": "¿Seguro que quieres\nomitir el tutorial?", - "tutorial__swipe_up_and_down": "Desliza hacia arriba y hacia abajo para moverte por las pantallas.", + "tutorial__swipe_up_and_down": "Desliza hacia arriba y hacia abajo\npara moverte por las pantallas.", + "tutorial__title_easy_navigation": "Navegación fácil", + "tutorial__title_handy_menu": "Menú útil", "tutorial__title_hello": "Hola", + "tutorial__title_hold": "Mantén presionado para confirmar acciones importantes", + "tutorial__title_lets_begin": "Comencemos", "tutorial__title_navigation": "Navegación", "tutorial__title_screen_scroll": "Desplazarse", "tutorial__title_skip": "Omitir tutorial", "tutorial__title_tutorial_complete": "Tutorial completo", + "tutorial__title_well_done": "¡Bien hecho!", "tutorial__use_trezor": "Maneja Trezor pulsando\nderecha e izquierda.\n\rContinúa con la derecha.", "tutorial__welcome_press_right": "Te damos la bienvenida a Trezor. Pulsa el botón derecho para continuar.", "tutorial__welcome_safe5": "Te damos la bienvenida a Trezor Safe 5.", diff --git a/core/translations/fr.json b/core/translations/fr.json index eeb24b93eb..76965a6734 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -33,7 +33,7 @@ }, "header": { "language": "fr-FR", - "version": "2.8.0" + "version": "2.8.1" }, "translations": { "addr_mismatch__contact_support_at": "Contactez l'assistance Trezor à l'adr.", @@ -412,6 +412,7 @@ "instructions__continue_holding": "Continuer\nappui", "instructions__continue_in_app": "Continuer dans l’application", "instructions__enter_next_share": "Saisissez le prochain fragment", + "instructions__exit_tutorial": "Sortir du tutoriel", "instructions__hold_to_confirm": "Appui pour confirmer", "instructions__hold_to_continue": "Appui pour continuer", "instructions__hold_to_exit_tutorial": "Appui pour quitter le tutoriel", @@ -881,20 +882,30 @@ "tezos__submit_proposal": "Soumettre une proposition", "tezos__submit_proposals": "Soumettre des propositions", "tutorial__continue": "Continuer le tutoriel", + "tutorial__did_you_know": "Le saviez-vous ?", "tutorial__exit": "Quitter le tutoriel", - "tutorial__menu": "Le menu comprend des actions et des options spécifiques au contexte.", + "tutorial__first_wallet": "Le Trezor Model One, créé en 2013,\nétait le premier portefeuille crypto hardware du monde.", + "tutorial__get_started": "Commencer", + "tutorial__lets_begin": "Apprenez à utiliser facilement cet appareil.", + "tutorial__menu": "Trouver des actions liées au contexte et des options dans le menu.", "tutorial__middle_click": "App. simultanément sur les boutons gauche et droit\npour conf.", "tutorial__press_and_hold": "Maintenez enfoncé le bouton droit\npour accepter les choix importants.", "tutorial__ready_to_use": "Vous êtes prêt à\nutiliser Trezor.", - "tutorial__ready_to_use_safe5": "Bravo !\nVous êtes prêt à utiliser votre Trezor Safe 5.", + "tutorial__ready_to_use_safe5": "Vous êtes prêt à utiliser votre appareil !", + "tutorial__restart_tutorial": "Recommencer le tutoriel", "tutorial__scroll_down": "Utilisez le bouton droit pour lire le contenu lorsqu'il dépasse.\n\rBouton gauche pour faire défiler l'écran vers le haut.", "tutorial__sure_you_want_skip": "Voulez-vous vraiment\nignorer le tutoriel ?", - "tutorial__swipe_up_and_down": "Faites glisser vers le haut ou vers le bas pour naviguer entre les écrans.", + "tutorial__swipe_up_and_down": "Balayer vers le haut ou le bas\npour changer d'écran.", + "tutorial__title_easy_navigation": "navigation facile", + "tutorial__title_handy_menu": "Menu pratique", "tutorial__title_hello": "Bonjour", + "tutorial__title_hold": "Maintenir pour confirmer les actions importantes", + "tutorial__title_lets_begin": "Allons-y", "tutorial__title_navigation": "Navigation", "tutorial__title_screen_scroll": "Défilement écran", "tutorial__title_skip": "Ignorer le tutoriel", "tutorial__title_tutorial_complete": "Tutoriel terminé", + "tutorial__title_well_done": "Bien joué !", "tutorial__use_trezor": "Utilisez Trezor avec\nles boutons gauche et droit.\n\rContinuez avec le droit.", "tutorial__welcome_press_right": "Bienvenue sur Trezor. Appuyez sur le bouton droit pour continuer.", "tutorial__welcome_safe5": "Bienvenue dans Trezor Safe 5.", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 72d59e63a5..10be110bea 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "90d6cff1d798ae305bcc046a548fb6dd1e81dd1ba417c28115bc7bf8fd73bbae", - "datetime": "2024-06-30T13:54:36.644531", - "commit": "2ef7f7074a9436e1a632c90f5b721580e51269bb" + "merkle_root": "f8fe7da5605cc8f5136d8d77b526df530daddbb6795e7c7fa1906822d3dd2a10", + "datetime": "2024-07-08T22:50:20.632650", + "commit": "c9c4bf63623d411384737662ec2aefc88824812d" }, "history": [ { From 1c9f9254185c64ce5bfd64f6bbe5956fb76bf6e0 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 8 Jul 2024 20:31:47 +0200 Subject: [PATCH 398/626] fix(core/translations): remove unbreakable spaces for now [no changelog] --- core/translations/cs.json | 2 +- core/translations/fr.json | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 2ecc0cda0e..e504f011c5 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -647,7 +647,7 @@ "reset__check_wallet_backup_title": "Zkontrolovat seed", "reset__continue_with_next_share": "Pokračujte další částí.", "reset__continue_with_share_template": "Pokračujte částí #{0}.", - "reset__create_x_of_y_multi_share_backup_template": "Chcete vytvořit vícedílnou zálohu s {0} díly z celkových {1}?", + "reset__create_x_of_y_multi_share_backup_template": "Chcete vytvořit vícedílnou zálohu s {0} díly z celkových {1}?", "reset__finished_verifying_group_template": "Ověřili jste části zálohy skupiny {0}.", "reset__finished_verifying_shares": "Dokončili jste ověření částí zálohy.", "reset__finished_verifying_wallet_backup": "Dokončili jste ověření zálohy.", diff --git a/core/translations/fr.json b/core/translations/fr.json index 76965a6734..89012bd2a9 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -187,9 +187,9 @@ "cardano__credential_mismatch": "L'ID ne correspond pas à l'ID de paiement.", "cardano__datum_hash": "Hachage de donnée :", "cardano__delegating_to": "Délégation à :", - "cardano__delegating_to_key_hash": "Délégation au hachage de la clé :", - "cardano__delegating_to_script": "Délégation au script :", - "cardano__deposit": "Dépôt :", + "cardano__delegating_to_key_hash": "Délégation au hachage de la clé :", + "cardano__delegating_to_script": "Délégation au script :", + "cardano__deposit": "Dépôt :", "cardano__for_account_and_index_template": "pour le compte {0} et l'index {1} :", "cardano__for_account_template": "pour le compte {0} :", "cardano__for_key_hash": "pour le hachage de clé :", @@ -390,7 +390,7 @@ "haptic_feedback__title": "Retour haptique", "homescreen__click_to_connect": "Se connecter", "homescreen__click_to_unlock": "Cliquez pour déverr.", - "homescreen__set_default": "Remplacer le fond d’écran par une image par défaut ?", + "homescreen__set_default": "Remplacer le fond d’écran par une image par défaut ?", "homescreen__settings_subtitle": "Paramètres", "homescreen__settings_title": "Écran d’accueil", "homescreen__title_backup_failed": "Échec sauvegarde", @@ -647,7 +647,7 @@ "reset__check_wallet_backup_title": "Vérifier la seed", "reset__continue_with_next_share": "Continuez avec le fragm. suivant.", "reset__continue_with_share_template": "Continuez avec le fragm. #{0}.", - "reset__create_x_of_y_multi_share_backup_template": "Voulez-vous créer une sauvegarde multi-share backup de {0} fragments sur {1} ?", + "reset__create_x_of_y_multi_share_backup_template": "Voulez-vous créer une sauvegarde multi-share backup de {0} fragments sur {1} ?", "reset__finished_verifying_group_template": "Vous avez terminé la vér. de vos fragm. de récup. pour le groupe {0}.", "reset__finished_verifying_shares": "Vous avez terminé la vér. de vos fragm. de récup.", "reset__finished_verifying_wallet_backup": "Votre seed de récup. est vérifiée.", @@ -685,7 +685,7 @@ "reset__share_completed_template": "Fragment de récupération #{0} terminé", "reset__share_words_title": "Sauv. standard", "reset__slip39_checklist_num_groups": "Nbre de groupes", - "reset__slip39_checklist_num_groups_x_template": "Nombre de groupes : {0}", + "reset__slip39_checklist_num_groups_x_template": "Nombre de groupes : {0}", "reset__slip39_checklist_num_shares": "Nbre fragm.", "reset__slip39_checklist_num_shares_x_template": "Nombre de fragments", "reset__slip39_checklist_set_num_groups": "Déf. nbre de groupes", From c857fcdc2f70fa1b7451593a98b443aae6bd9dce Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 9 Jul 2024 01:41:29 +0200 Subject: [PATCH 399/626] test(core): T3T1 ShowDeviceTutorial [no changelog] --- .../test_msg_show_device_tutorial.py | 37 +++++++++++++++++++ tests/input_flows.py | 27 ++++++++++++++ tests/ui_tests/fixtures.json | 10 +++++ 3 files changed, 74 insertions(+) create mode 100644 tests/device_tests/test_msg_show_device_tutorial.py diff --git a/tests/device_tests/test_msg_show_device_tutorial.py b/tests/device_tests/test_msg_show_device_tutorial.py new file mode 100644 index 0000000000..47bb62f192 --- /dev/null +++ b/tests/device_tests/test_msg_show_device_tutorial.py @@ -0,0 +1,37 @@ +# This file is part of the Trezor project. +# +# Copyright (C) 2012-2024 SatoshiLabs and contributors +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the License along with this library. +# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. + +import pytest + +from trezorlib import device +from trezorlib.debuglink import TrezorClientDebugLink as Client + +from ..input_flows import InputFlowTutorial + + +# TODO not initialized? +@pytest.mark.setup_client(uninitialized=True) +@pytest.mark.skip_t1b1 +@pytest.mark.skip_t2b1 +@pytest.mark.skip_t2t1 +@pytest.mark.parametrize("cancel", (True, False)) +def test_tutorial_t3t1(client: Client, cancel: bool): + with client: + IF = InputFlowTutorial(client, cancel=cancel) + client.set_input_flow(IF.get()) + device.show_device_tutorial(client) + + assert client.features.initialized is False diff --git a/tests/input_flows.py b/tests/input_flows.py index 70ea07a44f..c71e2070de 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -2293,3 +2293,30 @@ def input_flow_t3t1(self) -> BRGeneratorType: else: self.debug.press_yes() br = yield + + +class InputFlowTutorial(InputFlowBase): + def __init__(self, client: Client, cancel: bool = False): + super().__init__(client) + self.cancel = cancel + + def input_flow_t3t1(self) -> BRGeneratorType: + yield + self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) + self.debug.swipe_up(wait=True) + self.debug.swipe_up(wait=True) + if self.cancel: + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.click(buttons.VERTICAL_MENU[1], wait=True) + self.debug.swipe_up(wait=True) + self.debug.swipe_up(wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.click(buttons.VERTICAL_MENU[2], wait=True) + self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) + self.debug.swipe_up(wait=True) + else: + self.debug.swipe_up(wait=True) + self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) + self.debug.swipe_up(wait=True) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 1cb52a879b..a4d3578e95 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -16833,6 +16833,8 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "8da52dc761d4eacb3a863864b948d5a572980563118b456527acbd05ef126af4", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "a6f842c917efdd62369a4f911fd5061d1e39c5557d0daf1b7af4a4ecbaccaa00", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "59c3fe698e1b61c7d8d58258764d80bb41e94ef248688bc4ce287e3a5cbf9bbd", +"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "49b728c5299c3f8ceeed9595dd407c6940cc7bde3c77e34e22cce90262b1f44a", +"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "a459905ea805dd3b02e7748bdfd6c641a005ab6b22a13d74c75b2281a4aa5e51", "T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "f4bec18c2bc8fa5b78154cc654e5ebe72b490672b2fe85be9e3d835f9f6787f3", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", @@ -18178,6 +18180,8 @@ "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "b72176473ecb6213e331528b2624a3fabc5ed8e669a73b4cd25ba58232365984", "T3T1_de_test_msg_sd_protect.py::test_refresh": "f9335bfc0cc27036a247e9e898a0c984a8e9aa34a90bbede111221ba4ef1b284", "T3T1_de_test_msg_sd_protect.py::test_wipe": "93cdc75a6112304054f645d19c0ef17fc32bd2f1e3abf7b2b90a3d204c72a328", +"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "9ca49844a75ac43f361232a76fe360f5ec1652a05f6c427f35b687798151b102", +"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "b74617a1a728933e965d6964b5502be7b3ca9a3227d23623ad07a2ed18eb9117", "T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "000904338e45c805390ee084831438abace2c8f8020aa054ac929e6bd21ce522", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", @@ -19523,6 +19527,8 @@ "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "ef4a453a3b9fea0482efbfe81211d0d144d53ecaa3cda7089dadadd03bfd9d6b", "T3T1_en_test_msg_sd_protect.py::test_refresh": "030f7ca3d8ed718340b2311f66af1adea2cfc685f6a94ca07abda09f79f7fe5a", "T3T1_en_test_msg_sd_protect.py::test_wipe": "0a8bcb6567ecbfadb48f0bde53367a383faa6796354fa2de04ede1cc08da64d4", +"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "2f39eedba0ef8010f232b77606c453e06e63c74a54f08117a60066d64412e589", +"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "8908a0d44786f8d60477d04f54dbdb28a059358bc04f093daf4129c89e6b529b", "T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "afc88dd78d678a5438a060572e1738ae2186894a2952aaee59b29ff92831d403", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", @@ -20868,6 +20874,8 @@ "T3T1_es_test_msg_sd_protect.py::test_enable_disable": "c61dc1ac8bcd22c99901925d03e0525a3d6ce151b4fcffa4aff6e3a3ba40e7da", "T3T1_es_test_msg_sd_protect.py::test_refresh": "8a0af022678a5340f20619d38cecfeacc5d1c3cba0a205a5e0593f8eedbbbb82", "T3T1_es_test_msg_sd_protect.py::test_wipe": "c61091b534a94f870c937819d6cc81005dbd5aab7acbcaed8eddfaa4393b77e9", +"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "324856403c2cc8a54f9ba167845e37e8adb8f7ecbc212227aa3422aeec6b05c0", +"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "c7f6ff6fc460b7e310c1ca1c1e2b07a208e8deca1c99f74a2cce91c2a16a1b5b", "T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "201d5b07bb64be2b607bb22ae004c8369391123e360481db835842ee73b49da4", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", @@ -22213,6 +22221,8 @@ "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "769a5349ecd4f2140187f0789c8b300f34d63b54606e4e6bb8454268cad39e32", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "c7d2f2c025a11857c453507b0ccd5c3ff4b00103d91adfe39e67bd2a51556085", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "4a38e7cbed38d10ff2f7a24d6788cdd20a75057f2e70c583b938c42d8ef98dcf", +"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "8367ee29080faf467cde999256920cc18e3d0238e05dee16b4502519443b2263", +"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "88c706fa341925c54fbab47e335a596a8ec0880c9312701e78ae37bcdad18e36", "T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "41a16c6f838b79b53b2bca3f2bb73410bb26320e92477eea6732ce3cdca20074", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", From ca1c5c4e3334d6f72426b4c7b29dfc2565775e90 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 9 Jul 2024 10:17:36 +0200 Subject: [PATCH 400/626] feat(core/translations): cli.py merge command --- core/translations/cli.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/core/translations/cli.py b/core/translations/cli.py index 5a10441e85..067aabb074 100644 --- a/core/translations/cli.py +++ b/core/translations/cli.py @@ -133,6 +133,7 @@ def save_lang(self, lang: str, data: translations.JsonDef) -> None: data, indent=2, ensure_ascii=False, + sort_keys=True, ) + "\n" ) @@ -365,5 +366,27 @@ def sign(signature_hex: str, force: bool | None, version_str: str | None) -> Non build_all_blobs(all_blobs, tree, sigmask, signature, production=True) +def _dict_merge(a: dict, b: dict) -> None: + for k, v in b.items(): + if k in a and isinstance(a[k], dict) and isinstance(v, dict): + _dict_merge(a[k], v) + else: + a[k] = v + + +@cli.command() +@click.argument("update_json", type=click.File("r"), nargs=-1) +def merge(update_json: t.Tuple[t.TextIO, ...]) -> None: + """Update translations from JSON files.""" + tdir = TranslationsDir() + for f in update_json: + new_data = json.load(f) + lang = new_data["header"]["language"][:2] + orig_data = tdir.load_lang(lang) + _dict_merge(orig_data, new_data) + tdir.save_lang(lang, orig_data) + click.echo(f"Updated {lang}") + + if __name__ == "__main__": cli() From a05ed10f1a517b41ba5700f362313d114d65c9da Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 11 Jul 2024 00:55:52 +0200 Subject: [PATCH 401/626] fix(core): emulator: coverage data atexit handler Partially reverts 5fc3c6e617619eee14429d44ab6e064ed3f5801e. [no changelog] --- core/embed/bootloader/emulator.c | 3 +++ core/embed/trezorhal/unix/common.c | 6 ++++-- core/embed/unix/main.c | 17 ++++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/core/embed/bootloader/emulator.c b/core/embed/bootloader/emulator.c index df8a0ee033..c26ecec66a 100644 --- a/core/embed/bootloader/emulator.c +++ b/core/embed/bootloader/emulator.c @@ -22,6 +22,9 @@ uint8_t *FIRMWARE_START = 0; void set_core_clock(int) {} +// used in fw emulator to raise python exception on exit +void __attribute__((noreturn)) main_clean_exit() { exit(3); } + int bootloader_main(void); // assuming storage is single subarea diff --git a/core/embed/trezorhal/unix/common.c b/core/embed/trezorhal/unix/common.c index 87700b9652..afae59830f 100644 --- a/core/embed/trezorhal/unix/common.c +++ b/core/embed/trezorhal/unix/common.c @@ -28,6 +28,8 @@ #include "display.h" #include "memzero.h" +void __attribute__((noreturn)) main_clean_exit(); + void __attribute__((noreturn)) trezor_shutdown(void) { printf("SHUTDOWN\n"); @@ -49,7 +51,7 @@ uint32_t hal_ticks_ms() { static int SDLCALL emulator_event_filter(void *userdata, SDL_Event *event) { switch (event->type) { case SDL_QUIT: - exit(3); + main_clean_exit(); return 0; case SDL_KEYUP: if (event->key.repeat) { @@ -57,7 +59,7 @@ static int SDLCALL emulator_event_filter(void *userdata, SDL_Event *event) { } switch (event->key.keysym.sym) { case SDLK_ESCAPE: - exit(3); + main_clean_exit(); return 0; case SDLK_p: display_save("emu"); diff --git a/core/embed/unix/main.c b/core/embed/unix/main.c index 413a2a31e1..cf8d5a8a0b 100644 --- a/core/embed/unix/main.c +++ b/core/embed/unix/main.c @@ -408,6 +408,19 @@ STATIC void set_sys_argv(char *argv[], int argc, int start_arg) { } } +// Inject SystemExit exception. This is primarily needed by prof.py to run the +// atexit() handler. +void __attribute__((noreturn)) main_clean_exit() { + const int status = 3; + fflush(stdout); + fflush(stderr); + // sys.exit is disabled, so raise a SystemExit exception directly + nlr_raise(mp_obj_new_exception_arg1(&mp_type_SystemExit, + MP_OBJ_NEW_SMALL_INT(status))); + // the above shouldn't return, but make sure we exit just in case + exit(status); +} + #ifdef _WIN32 #define PATHLIST_SEP_CHAR ';' #else @@ -682,7 +695,9 @@ MP_NOINLINE int main_(int argc, char **argv) { #if !MICROPY_VFS #ifdef TREZOR_EMULATOR_FROZEN -mp_import_stat_t mp_import_stat(const char *path) { return MP_IMPORT_STAT_NO_EXIST; } +mp_import_stat_t mp_import_stat(const char *path) { + return MP_IMPORT_STAT_NO_EXIST; +} #else mp_import_stat_t mp_import_stat(const char *path) { struct stat st; From 2a896c44f6ff696e9dd0bce40a6a48d6ae25c89a Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 27 Jun 2024 21:07:37 +0200 Subject: [PATCH 402/626] feat(core/rust): introduce GcBox --- core/embed/rust/build.rs | 1 + core/embed/rust/src/micropython/gc.rs | 228 +++++++++++++++++++++++- core/embed/rust/src/micropython/list.rs | 30 ++-- 3 files changed, 245 insertions(+), 14 deletions(-) diff --git a/core/embed/rust/build.rs b/core/embed/rust/build.rs index 9d664cd788..6f2706e555 100644 --- a/core/embed/rust/build.rs +++ b/core/embed/rust/build.rs @@ -235,6 +235,7 @@ fn generate_micropython_bindings() { .allowlist_var("mp_type_fun_builtin_var") // gc .allowlist_function("gc_alloc") + .allowlist_function("gc_free") .allowlist_var("GC_ALLOC_FLAG_HAS_FINALISER") // iter .allowlist_type("mp_obj_iter_buf_t") diff --git a/core/embed/rust/src/micropython/gc.rs b/core/embed/rust/src/micropython/gc.rs index e283cbd7db..8a9d103498 100644 --- a/core/embed/rust/src/micropython/gc.rs +++ b/core/embed/rust/src/micropython/gc.rs @@ -1,6 +1,6 @@ use core::{ alloc::Layout, - ops::Deref, + ops::{Deref, DerefMut}, ptr::{self, NonNull}, }; @@ -33,6 +33,10 @@ impl<T> Gc<T> { /// that have a base as their first element unsafe fn alloc(v: T, flags: u32) -> Result<Self, Error> { let layout = Layout::for_value(&v); + debug_assert!( + layout.size() > 0, + "Zero-sized allocations are not supported" + ); // TODO: Assert that `layout.align()` is the same as the GC alignment. // SAFETY: // - Unfortunately we cannot respect `layout.align()` as MicroPython GC does @@ -161,3 +165,225 @@ impl<T: ?Sized> Deref for Gc<T> { unsafe { self.0.as_ref() } } } + +/// Box-like allocation on the GC heap. +/// +/// Values allocated using GcBox are guaranteed to be only owned by that +/// particular GcBox instance. This makes them safe to mutate, and they run +/// destructors when dropped. +/// +/// Suitable for use in cases where you would normally use Rust's native Box +/// type -- i.e., typically for storing sub-values in a struct, possibly also +/// for returning values from functions. +/// +/// While general unsizing is not available, you can use the `coerce!` macro to +/// safely cast the box to a trait object. +/// +/// # Safety and usage notes +/// +/// One caveat of using GcBox is that it still always needs to be visible to the +/// GC -- that is, stored in a struct which is allocated on the GC heap, on the +/// call stack, or reachable from one of the GC roots. +/// +/// Specifically, it is generally unsafe to store a GcBox in a global variable. +/// +/// When a GcBox is stored in a struct, which itself is allocated via raw GC, +/// the containing struct might get GC'd, which will cause GcBox not to get +/// dropped, which in turn will prevent GcBox's contents from getting dropped. +pub struct GcBox<T: ?Sized>(Gc<T>); + +impl<T> GcBox<T> { + /// Allocate memory on the heap managed by the MicroPython GC and then place + /// `value` into it. + /// + /// `value` _will_ get its Drop implementation called when the GcBox is + /// dropped. + pub fn new(value: T) -> Result<Self, Error> { + Ok(Self(Gc::new(value)?)) + } +} + +impl<T: ?Sized> GcBox<T> { + /// Leak contents of the box as a pointer. + /// + /// # Safety + /// + /// The value will not be dropped. If necessary, the caller is responsible + /// for dropping it manually, e.g., via `ptr::drop_in_place`. + pub fn into_raw(this: Self) -> *mut T { + let result = Gc::into_raw(this.0); + core::mem::forget(this); + result + } + + /// Construct a `GcBox` from a raw pointer. + /// + /// # Safety + /// + /// This is only safe for pointers _allocated on the MicroPython GC heap_ + /// via `gc_alloc()`. Specifically, unlike `Gc::from_raw`, it is unsafe + /// to construct a GcBox from ROM values, even those that are trackable + /// by the GC. + /// + /// This is because the Drop implementation of GcBox calls `gc_free()` on + /// the pointer. + /// + /// In addition, the caller must ensure that it is safe to apply box-like + /// semantics to the value, namely that: + /// * nobody else has the pointer to the value, so that it is safe to + /// create mutable references to it + /// * the value is going to be dropped when the GcBox is dropped. + pub unsafe fn from_raw(ptr: *mut T) -> Self { + // SAFETY: just a wrapper around Gc::from_raw + Self(unsafe { Gc::from_raw(ptr) }) + } + + /// Leak contents of the box as a regular Gc allocation. + /// + /// This gives up the unique ownership. It is no longer possible to safely + /// mutably borrow the value, and its destructor will not be called when + /// it is dropped. In exchange, it is possible to return Gc instance to + /// MicroPython. + pub fn leak(self) -> Gc<T> { + let inner = self.0; + core::mem::forget(self); + inner + } +} + +/// Type-cast GcBox contents to a `dyn Trait` object. +macro_rules! coerce { + ($t:path, $v:expr) => { + // SAFETY: we are just re-wrapping the pointer, so all safety requirements + // of `GcBox::from_raw` are upheld. + // Rust type system will not allow us to cast to a trait object that is not + // implemented by the type. + unsafe { GcBox::from_raw(GcBox::into_raw($v) as *mut dyn $t) } + }; +} + +pub(crate) use coerce; + +impl<T: ?Sized> Deref for GcBox<T> { + type Target = T; + + fn deref(&self) -> &Self::Target { + self.0.deref() + } +} + +impl<T: ?Sized> DerefMut for GcBox<T> { + fn deref_mut(&mut self) -> &mut Self::Target { + // SAFETY: We are the sole owner of the allocated value, and we are borrowed + // mutably. + unsafe { Gc::as_mut(&mut self.0) } + } +} + +impl<T: ?Sized> Drop for GcBox<T> { + fn drop(&mut self) { + let ptr = Gc::into_raw(self.0); + // SAFETY: We are the sole owner of the allocated value, and we are being + // dropped. + unsafe { + ptr::drop_in_place(ptr); + ffi::gc_free(ptr.cast()); + } + } +} + +#[cfg(test)] +mod test { + use core::cell::Cell; + + use crate::micropython::testutil::mpy_init; + + use super::*; + + struct SignalDrop<'a>(&'a Cell<bool>); + + impl Drop for SignalDrop<'_> { + fn drop(&mut self) { + self.0.set(true); + } + } + + trait Foo { + fn foo(&self) -> i32; + } + + impl Foo for SignalDrop<'_> { + fn foo(&self) -> i32 { + 42 + } + } + + #[test] + fn gc_nodrop() { + unsafe { mpy_init() }; + + let drop_signalled = Cell::new(false); + { + let _gc = Gc::new(SignalDrop(&drop_signalled)).unwrap(); + } + assert!(!drop_signalled.get()); + } + + #[test] + fn gcbox_drop() { + unsafe { mpy_init() }; + + let drop_signalled = Cell::new(false); + { + let _gcbox = GcBox::new(SignalDrop(&drop_signalled)).unwrap(); + } + assert!(drop_signalled.get()); + } + + #[test] + fn gc_raw_roundtrip() { + unsafe { mpy_init() }; + + let gc = Gc::new(42).unwrap(); + let ptr = Gc::into_raw(gc); + let wrapped = unsafe { Gc::from_raw(ptr) }; + let retrieved = Gc::into_raw(wrapped); + assert_eq!(ptr, retrieved); + } + + #[test] + fn gcbox_raw_roundtrip() { + unsafe { mpy_init() }; + + let drop_signalled = Cell::new(false); + + { + let gcbox = GcBox::new(SignalDrop(&drop_signalled)).unwrap(); + assert!(!drop_signalled.get()); + let ptr = GcBox::into_raw(gcbox); + assert!(!drop_signalled.get()); + let wrapped = unsafe { GcBox::from_raw(ptr) }; + assert!(!drop_signalled.get()); + let retrieved = GcBox::into_raw(wrapped); + assert!(!drop_signalled.get()); + assert_eq!(ptr, retrieved); + + let _rewrapped = unsafe { GcBox::from_raw(ptr) }; + } + assert!(drop_signalled.get()); + } + + #[test] + fn test_coerce() { + unsafe { mpy_init() }; + + let drop_signalled = Cell::new(false); + { + let gcbox = GcBox::new(SignalDrop(&drop_signalled)).unwrap(); + let coerced: GcBox<dyn Foo> = coerce!(Foo, gcbox); + assert!(!drop_signalled.get()); + assert_eq!(coerced.foo(), 42); + } + assert!(drop_signalled.get()); + } +} diff --git a/core/embed/rust/src/micropython/list.rs b/core/embed/rust/src/micropython/list.rs index 42da263139..3073adbc72 100644 --- a/core/embed/rust/src/micropython/list.rs +++ b/core/embed/rust/src/micropython/list.rs @@ -2,7 +2,12 @@ use core::{convert::TryFrom, ptr}; use crate::error::Error; -use super::{ffi, gc::Gc, obj::Obj, runtime::catch_exception}; +use super::{ + ffi, + gc::{Gc, GcBox}, + obj::Obj, + runtime::catch_exception, +}; pub type List = ffi::mp_obj_list_t; @@ -17,29 +22,29 @@ impl List { }) } - pub fn with_capacity(capacity: usize) -> Result<Gc<Self>, Error> { + pub fn with_capacity(capacity: usize) -> Result<GcBox<Self>, Error> { // EXCEPTION: Will raise if allocation fails. catch_exception(|| unsafe { let list = ffi::mp_obj_new_list(capacity, ptr::null_mut()); // By default, the new list will have its len set to n. We want to preallocate // to a specific size and then use append() to add items, so we reset len to 0. ffi::mp_obj_list_set_len(list, 0); - Gc::from_raw(list.as_ptr().cast()) + // SAFETY: list is freshly allocated so we are still its unique owner. + GcBox::from_raw(list.as_ptr().cast()) }) } - pub fn from_iter<T, E>(iter: impl Iterator<Item = T>) -> Result<Gc<List>, Error> + pub fn from_iter<T, E>(iter: impl Iterator<Item = T>) -> Result<GcBox<List>, Error> where T: TryInto<Obj, Error = E>, Error: From<E>, { let max_size = iter.size_hint().1.unwrap_or(0); - let mut gc_list = List::with_capacity(max_size)?; - let list = unsafe { Gc::as_mut(&mut gc_list) }; + let mut list = List::with_capacity(max_size)?; for value in iter { list.append(value.try_into()?)?; } - Ok(gc_list) + Ok(list) } // Internal helper to get the `Obj` variant of this. @@ -155,7 +160,7 @@ mod tests { // create an upy list of 5 elements let vec: Vec<u8, 10> = (0..5).collect(); - let list: Obj = List::from_iter(vec.iter().copied()).unwrap().into(); + let list: Obj = List::from_iter(vec.iter().copied()).unwrap().leak().into(); // collect the elements into a Vec of maximum length 10, through an iterator let retrieved_vec: Vec<u8, 10> = IterBuf::new() @@ -181,8 +186,7 @@ mod tests { unsafe { mpy_init() }; let vec: Vec<u16, 17> = (0..17).collect(); - let mut gc_list = List::from_iter(vec.iter().copied()).unwrap(); - let list = unsafe { Gc::as_mut(&mut gc_list) }; + let mut list = List::from_iter(vec.iter().copied()).unwrap(); for (i, value) in vec.iter().copied().enumerate() { assert_eq!( @@ -197,7 +201,7 @@ mod tests { } let retrieved_vec: Vec<u16, 17> = IterBuf::new() - .try_iterate(gc_list.into()) + .try_iterate(list.leak().into()) .unwrap() .map(TryInto::try_into) .collect::<Result<Vec<u16, 17>, Error>>() @@ -229,7 +233,7 @@ mod tests { let vec: Vec<u16, 5> = (0..5).collect(); let mut list = List::from_iter(vec.iter().copied()).unwrap(); - let slice = unsafe { Gc::as_mut(&mut list).as_mut_slice() }; + let slice = unsafe { list.as_mut_slice() }; assert_eq!(slice.len(), vec.len()); assert_eq!(vec[0], TryInto::<u16>::try_into(slice[0]).unwrap()); @@ -238,7 +242,7 @@ mod tests { } let retrieved_vec: Vec<u16, 5> = IterBuf::new() - .try_iterate(list.into()) + .try_iterate(list.leak().into()) .unwrap() .map(TryInto::try_into) .collect::<Result<Vec<u16, 5>, Error>>() From 863dee1a43ed662139a2cb3868215988934a5270 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 26 Jun 2024 15:43:53 +0200 Subject: [PATCH 403/626] refactor(core/rust): reorganize LayoutObj * move most actual functionality to LayoutObjInner * subsume features of top-level Root and Child into LayoutObjInner (saving ~7 kB of flash because LayoutObjInner is not generic) * make use of GcBox to drop the top-level component --- core/embed/rust/src/ui/component/base.rs | 113 +-------- core/embed/rust/src/ui/component/mod.rs | 2 +- core/embed/rust/src/ui/layout/obj.rs | 284 +++++++++++------------ 3 files changed, 149 insertions(+), 250 deletions(-) diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index bea23f10d9..e101a962ff 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -8,7 +8,7 @@ use crate::{ ui::{ button_request::{ButtonRequest, ButtonRequestCode}, component::{maybe::PaintOverlapping, MsgMap, PageMap}, - display::{self, Color}, + display::Color, geometry::{Offset, Rect}, shape::Renderer, }, @@ -207,111 +207,6 @@ where } } -/// Same as `Child` but also handles screen clearing when layout is first -/// painted. -pub struct Root<T> { - inner: Option<Child<T>>, - marked_for_clear: bool, - transition_out: Option<AttachType>, -} - -impl<T> Root<T> { - pub fn new(component: T) -> Self { - Self { - inner: Some(Child::new(component)), - marked_for_clear: true, - transition_out: None, - } - } - - pub fn inner_mut(&mut self) -> &mut Child<T> { - if let Some(ref mut c) = self.inner { - c - } else { - fatal_error!("Root object is deallocated") - } - } - - pub fn inner(&self) -> &Child<T> { - if let Some(ref c) = self.inner { - c - } else { - fatal_error!("Root object is deallocated") - } - } - - pub fn skip_paint(&mut self) { - self.inner_mut().skip_paint(); - } - - pub fn clear_screen(&mut self) { - self.marked_for_clear = true; - } - - pub fn get_transition_out(&self) -> Option<AttachType> { - self.transition_out - } - - pub fn delete(&mut self) { - self.inner = None; - } -} - -impl<T> Component for Root<T> -where - T: Component, -{ - type Msg = T::Msg; - - fn place(&mut self, bounds: Rect) -> Rect { - self.inner_mut().place(bounds) - } - - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - let msg = self.inner_mut().event(ctx, event); - if ctx.needs_repaint_root() { - self.marked_for_clear = true; - let mut dummy_ctx = EventCtx::new(); - let paint_msg = self.inner_mut().event(&mut dummy_ctx, Event::RequestPaint); - assert!(paint_msg.is_none()); - assert!(dummy_ctx.timers.is_empty()); - } - - if let Some(t) = ctx.get_transition_out() { - self.transition_out = Some(t); - } - - msg - } - - fn paint(&mut self) { - if self.marked_for_clear && self.inner().will_paint() { - self.marked_for_clear = false; - display::clear() - } - self.inner.paint(); - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.inner().render(target); - } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.inner().bounds(sink) - } -} - -#[cfg(feature = "ui_debug")] -impl<T> crate::trace::Trace for Root<T> -where - T: crate::trace::Trace, -{ - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - self.inner().trace(t); - } -} - impl<M, T, U> Component for (T, U) where T: Component<Msg = M>, @@ -582,7 +477,7 @@ impl EventCtx { /// Returns `true` if we should first perform a place traversal before /// processing events or painting. - pub fn needs_place_before_next_event_or_paint(&self) -> bool { + pub fn needs_place(&self) -> bool { self.place_requested } @@ -616,6 +511,10 @@ impl EventCtx { self.root_repaint_requested } + pub fn needs_repaint(&self) -> bool { + self.paint_requested + } + pub fn set_page_count(&mut self, count: usize) { // #[cfg(feature = "ui_debug")] // assert!(self.page_count.unwrap_or(count) == count); diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index 3bbdaeef1b..16ab3c8698 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -27,7 +27,7 @@ pub mod text; pub mod timeout; pub use bar::Bar; -pub use base::{Child, Component, ComponentExt, Event, EventCtx, Never, Root, TimerToken}; +pub use base::{Child, Component, ComponentExt, Event, EventCtx, Never, TimerToken}; pub use border::Border; pub use button_request::{ButtonRequestExt, OneButtonRequest}; #[cfg(all(feature = "jpeg", feature = "ui_image_buffer", feature = "micropython"))] diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 5fe7828c60..c81124b90f 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -1,6 +1,7 @@ use core::{ - cell::RefCell, + cell::{RefCell, RefMut}, convert::{TryFrom, TryInto}, + ops::{Deref, DerefMut}, }; use num_traits::{FromPrimitive, ToPrimitive}; @@ -9,7 +10,7 @@ use crate::{ maybe_trace::MaybeTrace, micropython::{ buffer::StrBuffer, - gc::Gc, + gc::{self, Gc, GcBox}, macros::{obj_dict, obj_fn_1, obj_fn_2, obj_fn_3, obj_fn_var, obj_map, obj_type}, map::Map, obj::{Obj, ObjBase}, @@ -20,9 +21,8 @@ use crate::{ time::Duration, ui::{ button_request::ButtonRequest, - component::{Component, Event, EventCtx, Never, Root, TimerToken}, - constant, - display::sync, + component::{Component, Event, EventCtx, Never, TimerToken}, + constant, display, geometry::Rect, }, }; @@ -77,17 +77,13 @@ pub trait ComponentMsgObj: Component { pub trait ObjComponent: MaybeTrace { fn obj_place(&mut self, bounds: Rect) -> Rect; fn obj_event(&mut self, ctx: &mut EventCtx, event: Event) -> Result<Obj, Error>; - fn obj_paint(&mut self) -> bool; + fn obj_paint(&mut self); fn obj_bounds(&self, _sink: &mut dyn FnMut(Rect)) {} - fn obj_skip_paint(&mut self) {} - fn obj_request_clear(&mut self) {} - fn obj_delete(&mut self) {} - fn obj_get_transition_out(&self) -> Result<Obj, Error>; } -impl<T> ObjComponent for Root<T> +impl<T> ObjComponent for T where - T: ComponentMsgObj + MaybeTrace, + T: Component + ComponentMsgObj + MaybeTrace, { fn obj_place(&mut self, bounds: Rect) -> Rect { self.place(bounds) @@ -95,30 +91,23 @@ where fn obj_event(&mut self, ctx: &mut EventCtx, event: Event) -> Result<Obj, Error> { if let Some(msg) = self.event(ctx, event) { - self.inner().inner().msg_try_into_obj(msg) + self.msg_try_into_obj(msg) } else { Ok(Obj::const_none()) } } - fn obj_paint(&mut self) -> bool { + fn obj_paint(&mut self) { #[cfg(not(feature = "new_rendering"))] { - let will_paint = self.inner().will_paint(); self.paint(); - will_paint } #[cfg(feature = "new_rendering")] { - let will_paint = self.inner().will_paint(); - if will_paint { - render_on_display(None, Some(Color::black()), |target| { - self.render(target); - }); - self.skip_paint(); - } - will_paint + render_on_display(None, Some(Color::black()), |target| { + self.render(target); + }); } } @@ -126,26 +115,13 @@ where fn obj_bounds(&self, sink: &mut dyn FnMut(Rect)) { self.bounds(sink) } +} - fn obj_skip_paint(&mut self) { - self.skip_paint() - } - - fn obj_request_clear(&mut self) { - self.clear_screen() - } - - fn obj_delete(&mut self) { - self.delete() - } - - fn obj_get_transition_out(&self) -> Result<Obj, Error> { - if let Some(msg) = self.get_transition_out() { - Ok(msg.to_obj()) - } else { - Ok(Obj::const_none()) - } - } +#[derive(Copy, Clone, PartialEq, Eq)] +enum Repaint { + None, + Partial, + Full, } /// `LayoutObj` is a GC-allocated object exported to MicroPython, with type @@ -158,119 +134,130 @@ pub struct LayoutObj { } struct LayoutObjInner { - root: Gc<dyn ObjComponent>, + root: Option<GcBox<dyn ObjComponent>>, event_ctx: EventCtx, timer_fn: Obj, page_count: u16, + repaint: Repaint, + transition_out: AttachType, } -impl LayoutObj { +impl LayoutObjInner { /// Create a new `LayoutObj`, wrapping a root component. #[inline(never)] - pub fn new(root: impl ComponentMsgObj + MaybeTrace + 'static) -> Result<Gc<Self>, Error> { - // Let's wrap the root component into a `Root` to maintain the top-level - // invalidation logic. - let wrapped_root = Root::new(root); - // SAFETY: We are coercing GC-allocated sized ptr into an unsized one. - let root = - unsafe { Gc::from_raw(Gc::into_raw(Gc::new(wrapped_root)?) as *mut dyn ObjComponent) }; - - // SAFETY: This is a Python object and hase a base as first element - unsafe { - Gc::new_with_custom_finaliser(Self { - base: Self::obj_type().as_base(), - inner: RefCell::new(LayoutObjInner { - root, - event_ctx: EventCtx::new(), - timer_fn: Obj::const_none(), - page_count: 1, - }), - }) - } + pub fn new(root: impl ObjComponent + 'static) -> Result<Self, Error> { + let root = GcBox::new(root)?; + + Ok(Self { + root: Some(gc::coerce!(ObjComponent, root)), + event_ctx: EventCtx::new(), + timer_fn: Obj::const_none(), + page_count: 1, + repaint: Repaint::Full, + transition_out: AttachType::Initial, + }) } - pub fn obj_delete(&self) { - let mut inner = self.inner.borrow_mut(); + fn obj_delete(&mut self) { + self.root = None; + } - // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. - unsafe { Gc::as_mut(&mut inner.root) }.obj_delete(); + /// Timer callback is expected to be a callable object of the following + /// form: `def timer(token: int, deadline_in_ms: int)`. + fn obj_set_timer_fn(&mut self, timer_fn: Obj) { + self.timer_fn = timer_fn; } - pub fn skip_first_paint(&self) { - let mut inner = self.inner.borrow_mut(); + fn root(&self) -> &impl Deref<Target = dyn ObjComponent> { + unwrap!(self.root.as_ref()) + } - // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. - unsafe { Gc::as_mut(&mut inner.root) }.obj_skip_paint(); + fn root_mut(&mut self) -> &mut impl DerefMut<Target = dyn ObjComponent> { + unwrap!(self.root.as_mut()) } - /// Timer callback is expected to be a callable object of the following - /// form: `def timer(token: int, deadline_in_ms: int)`. - fn obj_set_timer_fn(&self, timer_fn: Obj) { - self.inner.borrow_mut().timer_fn = timer_fn; + fn obj_request_repaint(&mut self) { + self.repaint = Repaint::Full; + let mut dummy_ctx = EventCtx::new(); + let paint_msg = self + .root_mut() + .obj_event(&mut dummy_ctx, Event::RequestPaint); + // paint_msg must not be an error and it must not return a result + assert!(matches!(paint_msg, Ok(s) if s == Obj::const_none())); + // there must be no timers set + assert!(dummy_ctx.pop_timer().is_none()); } /// Run an event pass over the component tree. After the traversal, any /// pending timers are drained into `self.timer_callback`. Returns `Err` /// in case the timer callback raises or one of the components returns /// an error, `Ok` with the message otherwise. - fn obj_event(&self, event: Event) -> Result<Obj, Error> { - let inner = &mut *self.inner.borrow_mut(); - + fn obj_event(&mut self, event: Event) -> Result<Obj, Error> { + let root = unwrap!(self.root.as_mut()); // Place the root component on the screen in case it was previously requested. - if inner.event_ctx.needs_place_before_next_event_or_paint() { - // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. - unsafe { Gc::as_mut(&mut inner.root) }.obj_place(constant::screen()); + if self.event_ctx.needs_place() { + root.obj_place(constant::screen()); } // Clear the leftover flags from the previous event pass. - inner.event_ctx.clear(); + self.event_ctx.clear(); // Send the event down the component tree. Bail out in case of failure. - // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. - let msg = unsafe { Gc::as_mut(&mut inner.root) }.obj_event(&mut inner.event_ctx, event)?; + let msg = root.obj_event(&mut self.event_ctx, event)?; + + // Check if we should repaint next time + if self.event_ctx.needs_repaint_root() { + self.obj_request_repaint(); + } else if self.event_ctx.needs_repaint() { + self.repaint = Repaint::Partial; + } // All concerning `Child` wrappers should have already marked themselves for // painting by now, and we're prepared for a paint pass. // Drain any pending timers into the callback. - while let Some((token, deadline)) = inner.event_ctx.pop_timer() { + while let Some((token, deadline)) = self.event_ctx.pop_timer() { let token = token.try_into(); let deadline = deadline.try_into(); if let (Ok(token), Ok(deadline)) = (token, deadline) { - inner.timer_fn.call_with_n_args(&[token, deadline])?; + self.timer_fn.call_with_n_args(&[token, deadline])?; } else { // Failed to convert token or deadline into `Obj`, skip. } } - if let Some(count) = inner.event_ctx.page_count() { - inner.page_count = count as u16; + if let Some(count) = self.event_ctx.page_count() { + self.page_count = count as u16; } - Ok(msg) - } + if let Some(t) = self.event_ctx.get_transition_out() { + self.transition_out = t; + } - fn obj_request_clear(&self) { - let mut inner = self.inner.borrow_mut(); - // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. - unsafe { Gc::as_mut(&mut inner.root) }.obj_request_clear(); + Ok(msg) } /// Run a paint pass over the component tree. Returns true if any component /// actually requested painting since last invocation of the function. - fn obj_paint_if_requested(&self) -> bool { - let mut inner = self.inner.borrow_mut(); + fn obj_paint_if_requested(&mut self) -> bool { + if self.repaint == Repaint::Full { + display::clear(); + } // Place the root component on the screen in case it was previously requested. - if inner.event_ctx.needs_place_before_next_event_or_paint() { - // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. - unsafe { Gc::as_mut(&mut inner.root) }.obj_place(constant::screen()); + if self.event_ctx.needs_place() { + self.root_mut().obj_place(constant::screen()); } - sync(); + display::sync(); - // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. - unsafe { Gc::as_mut(&mut inner.root) }.obj_paint() + if self.repaint != Repaint::None { + self.repaint = Repaint::None; + self.root_mut().obj_paint(); + true + } else { + false + } } /// Run a tracing pass over the component tree. Passed `callback` is called @@ -293,18 +280,16 @@ impl LayoutObj { // because trait upcasting is unstable. // Luckily, calling `root.trace()` works perfectly fine in spite of the above.) tracer.root(&|t| { - self.inner.borrow().root.trace(t); + self.root().trace(t); }); } fn obj_page_count(&self) -> Obj { - self.inner.borrow().page_count.into() + self.page_count.into() } - fn obj_button_request(&self) -> Result<Obj, Error> { - let inner = &mut *self.inner.borrow_mut(); - - match inner.event_ctx.button_request() { + fn obj_button_request(&mut self) -> Result<Obj, Error> { + match self.event_ctx.button_request() { None => Ok(Obj::const_none()), Some(ButtonRequest { code, br_type }) => { (code.num().into(), br_type.try_into()?).try_into() @@ -312,18 +297,12 @@ impl LayoutObj { } } - fn obj_get_transition_out(&self) -> Result<Obj, Error> { - let inner = &mut *self.inner.borrow_mut(); - - // Get transition out result - // SAFETY: `inner.root` is unique because of the `inner.borrow_mut()`. - unsafe { Gc::as_mut(&mut inner.root) }.obj_get_transition_out() + fn obj_get_transition_out(&self) -> Obj { + self.transition_out.to_obj() } #[cfg(feature = "ui_debug")] fn obj_bounds(&self) { - use crate::ui::display; - // Sink for `Trace::bounds` that draws the boundaries using pseudorandom color. fn wireframe(r: Rect) { let w = r.width() as u16; @@ -334,7 +313,25 @@ impl LayoutObj { // use crate::ui::model_tt::theme; // wireframe(theme::borders()); - self.inner.borrow().root.obj_bounds(&mut wireframe); + self.root().obj_bounds(&mut wireframe); + } +} + +impl LayoutObj { + /// Create a new `LayoutObj`, wrapping a root component. + #[inline(never)] + pub fn new(root: impl ComponentMsgObj + MaybeTrace + 'static) -> Result<Gc<Self>, Error> { + // SAFETY: This is a Python object and hase a base as first element + unsafe { + Gc::new_with_custom_finaliser(Self { + base: Self::obj_type().as_base(), + inner: RefCell::new(LayoutObjInner::new(root)?), + }) + } + } + + fn inner_mut(&self) -> RefMut<LayoutObjInner> { + self.inner.borrow_mut() } fn obj_type() -> &'static Type { @@ -359,6 +356,10 @@ impl LayoutObj { }; &TYPE } + + pub fn skip_first_paint(&self) { + self.inner_mut().repaint = Repaint::None; + } } impl From<Gc<LayoutObj>> for Obj { @@ -424,9 +425,11 @@ impl TryFrom<Never> for Obj { extern "C" fn ui_layout_attach_timer_fn(this: Obj, timer_fn: Obj, attach_type: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - this.obj_set_timer_fn(timer_fn); + this.inner_mut().obj_set_timer_fn(timer_fn); - let msg = this.obj_event(Event::Attach(AttachType::try_from_obj(attach_type)?))?; + let msg = this + .inner_mut() + .obj_event(Event::Attach(AttachType::try_from_obj(attach_type)?))?; assert!(msg == Obj::const_none()); Ok(Obj::const_none()) }; @@ -445,7 +448,7 @@ extern "C" fn ui_layout_touch_event(n_args: usize, args: *const Obj) -> Obj { args[2].try_into()?, args[3].try_into()?, )?; - let msg = this.obj_event(Event::Touch(event))?; + let msg = this.inner_mut().obj_event(Event::Touch(event))?; Ok(msg) }; unsafe { util::try_with_args_and_kwargs(n_args, args, &Map::EMPTY, block) } @@ -464,7 +467,7 @@ extern "C" fn ui_layout_button_event(n_args: usize, args: *const Obj) -> Obj { } let this: Gc<LayoutObj> = args[0].try_into()?; let event = ButtonEvent::new(args[1].try_into()?, args[2].try_into()?)?; - let msg = this.obj_event(Event::Button(event))?; + let msg = this.inner_mut().obj_event(Event::Button(event))?; Ok(msg) }; unsafe { util::try_with_args_and_kwargs(n_args, args, &Map::EMPTY, block) } @@ -483,7 +486,9 @@ extern "C" fn ui_layout_progress_event(n_args: usize, args: *const Obj) -> Obj { let this: Gc<LayoutObj> = args[0].try_into()?; let value: u16 = args[1].try_into()?; let description: StrBuffer = args[2].try_into()?; - let msg = this.obj_event(Event::Progress(value, description.into()))?; + let msg = this + .inner_mut() + .obj_event(Event::Progress(value, description.into()))?; Ok(msg) }; unsafe { util::try_with_args_and_kwargs(n_args, args, &Map::EMPTY, block) } @@ -496,7 +501,7 @@ extern "C" fn ui_layout_usb_event(n_args: usize, args: *const Obj) -> Obj { } let this: Gc<LayoutObj> = args[0].try_into()?; let event = USBEvent::Connected(args[1].try_into()?); - let msg = this.obj_event(Event::USB(event))?; + let msg = this.inner_mut().obj_event(Event::USB(event))?; Ok(msg) }; unsafe { util::try_with_args_and_kwargs(n_args, args, &Map::EMPTY, block) } @@ -506,7 +511,7 @@ extern "C" fn ui_layout_timer(this: Obj, token: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; let event = Event::Timer(token.try_into()?); - let msg = this.obj_event(event)?; + let msg = this.inner_mut().obj_event(event)?; Ok(msg) }; unsafe { util::try_or_raise(block) } @@ -515,7 +520,7 @@ extern "C" fn ui_layout_timer(this: Obj, token: Obj) -> Obj { extern "C" fn ui_layout_paint(this: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - let painted = this.obj_paint_if_requested().into(); + let painted = this.inner_mut().obj_paint_if_requested().into(); Ok(painted) }; unsafe { util::try_or_raise(block) } @@ -524,15 +529,7 @@ extern "C" fn ui_layout_paint(this: Obj) -> Obj { extern "C" fn ui_layout_request_complete_repaint(this: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - let event = Event::RequestPaint; - let msg = this.obj_event(event)?; - if msg != Obj::const_none() { - // Messages raised during a `RequestPaint` dispatch are not propagated, let's - // make sure we don't do that. - #[cfg(feature = "ui_debug")] - fatal_error!("Cannot raise messages during RequestPaint"); - }; - this.obj_request_clear(); + this.inner_mut().obj_request_repaint(); Ok(Obj::const_none()) }; unsafe { util::try_or_raise(block) } @@ -541,7 +538,8 @@ extern "C" fn ui_layout_request_complete_repaint(this: Obj) -> Obj { extern "C" fn ui_layout_page_count(this: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - Ok(this.obj_page_count()) + let page_count = this.inner_mut().obj_page_count(); + Ok(page_count) }; unsafe { util::try_or_raise(block) } } @@ -549,7 +547,8 @@ extern "C" fn ui_layout_page_count(this: Obj) -> Obj { extern "C" fn ui_layout_button_request(this: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - this.obj_button_request() + let button_request = this.inner_mut().obj_button_request(); + button_request }; unsafe { util::try_or_raise(block) } } @@ -557,7 +556,8 @@ extern "C" fn ui_layout_button_request(this: Obj) -> Obj { extern "C" fn ui_layout_get_transition_out(this: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - this.obj_get_transition_out() + let transition_out = this.inner_mut().obj_get_transition_out(); + Ok(transition_out) }; unsafe { util::try_or_raise(block) } } @@ -572,7 +572,7 @@ pub extern "C" fn ui_debug_layout_type() -> &'static Type { extern "C" fn ui_layout_trace(this: Obj, callback: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - this.obj_trace(callback); + this.inner_mut().obj_trace(callback); Ok(Obj::const_none()) }; unsafe { util::try_or_raise(block) } @@ -587,7 +587,7 @@ extern "C" fn ui_layout_trace(_this: Obj, _callback: Obj) -> Obj { extern "C" fn ui_layout_bounds(this: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - this.obj_bounds(); + this.inner_mut().obj_bounds(); Ok(Obj::const_none()) }; unsafe { util::try_or_raise(block) } @@ -601,7 +601,7 @@ extern "C" fn ui_layout_bounds(_this: Obj) -> Obj { extern "C" fn ui_layout_delete(this: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; - this.obj_delete(); + this.inner_mut().obj_delete(); Ok(Obj::const_none()) }; unsafe { util::try_or_raise(block) } From 52333d5b04a20c2ea7857413937d6e8e571311c7 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Sun, 30 Jun 2024 10:37:08 +0200 Subject: [PATCH 404/626] debug(core): make C impl of __fatal_error print to stderr Previously, any C assertion or other case of __fatal_error would only show the RSOD, but not print to emulator output. That is (a) mildly annoying, and (b) would not work in the weird case in Rust unit tests where graphics are not available. --- core/embed/lib/error_handling.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/embed/lib/error_handling.c b/core/embed/lib/error_handling.c index 6d9361e475..f93636c058 100644 --- a/core/embed/lib/error_handling.c +++ b/core/embed/lib/error_handling.c @@ -18,6 +18,9 @@ */ #include <stddef.h> +#ifdef TREZOR_EMULATOR +#include <stdio.h> +#endif #include "common.h" #include "display.h" @@ -65,6 +68,13 @@ void __attribute__((noreturn)) error_shutdown(const char *message) { void __attribute__((noreturn)) __fatal_error(const char *msg, const char *file, int line) { +#ifdef TREZOR_EMULATOR + fprintf(stderr, "FATAL ERROR: %s\n", msg); + if (file) { + fprintf(stderr, "file: %s:%d\n", file, line); + } + fflush(stderr); +#endif #ifdef FANCY_FATAL_ERROR if (msg == NULL) { char buf[128] = {0}; From 5dcbaa40684045646a4e5281d4b78aeb8b334aab Mon Sep 17 00:00:00 2001 From: Pavol Rusnak <pavol@rusnak.io> Date: Fri, 12 Jul 2024 10:10:12 +0200 Subject: [PATCH 405/626] feat(rust/trezor-client): bump version to 0.1.4 --- rust/trezor-client/Cargo.lock | 2 +- rust/trezor-client/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/trezor-client/Cargo.lock b/rust/trezor-client/Cargo.lock index d2f2ed6621..edb32e6ed8 100644 --- a/rust/trezor-client/Cargo.lock +++ b/rust/trezor-client/Cargo.lock @@ -699,7 +699,7 @@ dependencies = [ [[package]] name = "trezor-client" -version = "0.1.3" +version = "0.1.4" dependencies = [ "bitcoin", "byteorder", diff --git a/rust/trezor-client/Cargo.toml b/rust/trezor-client/Cargo.toml index 0cf7965531..d158e4e8c0 100644 --- a/rust/trezor-client/Cargo.toml +++ b/rust/trezor-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "trezor-client" -version = "0.1.3" +version = "0.1.4" authors = [ "Piyush Kumar <piyushkumar2k02@kgpian.iitkgp.ac.in>", "joshieDo <ranriver@protonmail.com>", From 32a58663387756273c9d3cc83c6f7630f2009c6b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak <pavol@rusnak.io> Date: Fri, 12 Jul 2024 10:11:25 +0200 Subject: [PATCH 406/626] feat(rust/trezor-client): bump dependencies in Cargo.lock --- rust/trezor-client/Cargo.lock | 275 +++++++++++++--------------------- 1 file changed, 108 insertions(+), 167 deletions(-) diff --git a/rust/trezor-client/Cargo.lock b/rust/trezor-client/Cargo.lock index edb32e6ed8..57e781138f 100644 --- a/rust/trezor-client/Cargo.lock +++ b/rust/trezor-client/Cargo.lock @@ -4,24 +4,24 @@ version = 3 [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "bech32" @@ -31,9 +31,9 @@ checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea" [[package]] name = "bitcoin" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd00f3c09b5f21fb357abe32d29946eb8bb7a0862bae62c0b5e4a692acbbe73c" +checksum = "6c85783c2fe40083ea54a33aa2f0ba58831d90fcd190f5bdc47e74e84d2a96ae" dependencies = [ "bech32", "bitcoin-internals", @@ -61,15 +61,9 @@ dependencies = [ [[package]] name = "bitflags" -version = "1.3.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "byteorder" @@ -79,12 +73,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.83" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "907d8581360765417f8f2e0e7d602733bbed60156b4465b7617243689ef9b83d" [[package]] name = "cfg-if" @@ -99,7 +90,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -107,15 +98,15 @@ dependencies = [ [[package]] name = "either" -version = "1.10.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys", @@ -123,9 +114,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "futures" @@ -212,9 +203,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hex" @@ -224,9 +215,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hex-conservative" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed443af458ccb6d81c1e7e661545f94d3176752fb1df2f543b902a1e0f51e2" +checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" [[package]] name = "hex_lit" @@ -255,21 +246,21 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libusb1-sys" -version = "0.6.4" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d0e2afce4245f2c9a418511e5af8718bcaf2fa408aefb259504d1a9cb25f27" +checksum = "da050ade7ac4ff1ba5379af847a10a10a8e284181e060105bf8d86960ce9ce0f" dependencies = [ "cc", "libc", @@ -279,15 +270,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -295,15 +286,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "nu-ansi-term" @@ -329,9 +320,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -339,22 +330,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -364,15 +355,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -430,27 +421,27 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] name = "regex" -version = "1.10.3" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", @@ -460,9 +451,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -471,15 +462,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rusb" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45fff149b6033f25e825cbb7b2c625a11ee8e6dac09264d49beb125e39aa97bf" +checksum = "ab9f9ff05b63a786553a4c02943b74b34a988448671001e9a27e2f0565cc05a4" dependencies = [ "libc", "libusb1-sys", @@ -487,11 +478,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.31" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.2", + "bitflags", "errno", "libc", "linux-raw-sys", @@ -568,15 +559,15 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "syn" -version = "2.0.48" +version = "2.0.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "2f0209b68b3613b093e0ec905354eccaedcfe83b8cb37cbdeae64026c3064c16" dependencies = [ "proc-macro2", "quote", @@ -585,9 +576,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", @@ -597,18 +588,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" dependencies = [ "proc-macro2", "quote", @@ -617,9 +608,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -627,9 +618,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -728,9 +719,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -787,119 +778,69 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets", ] [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "windows_i686_gnu" -version = "0.52.0" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" From e3b9548506936fdcc9ea7a92324864a0e0bb96fd Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 10 Jul 2024 12:28:09 +0200 Subject: [PATCH 407/626] chore(core): add TS5 background image for emulator [no changelog] --- core/embed/models/T3T1/background_T3T1.h | 7246 ++++++++++++-------- core/embed/models/T3T1/background_T3T1.jpg | Bin 36707 -> 50577 bytes core/embed/models/T3T1/boards/t3t1-unix.h | 2 +- 3 files changed, 4202 insertions(+), 3046 deletions(-) diff --git a/core/embed/models/T3T1/background_T3T1.h b/core/embed/models/T3T1/background_T3T1.h index fd0cd644bf..276961066e 100644 --- a/core/embed/models/T3T1/background_T3T1.h +++ b/core/embed/models/T3T1/background_T3T1.h @@ -1,3063 +1,4219 @@ // clang-format off unsigned char background_T3T1_jpg[] = { 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, - 0x01, 0x02, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0xff, 0xe1, 0x11, 0xe6, + 0x01, 0x02, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0xff, 0xe1, 0x0e, 0x10, 0x45, 0x78, 0x69, 0x66, 0x00, 0x00, 0x49, 0x49, 0x2a, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x1a, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x28, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x31, 0x01, 0x02, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x32, 0x01, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x12, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x28, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x31, 0x01, 0x02, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x32, 0x01, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x69, 0x87, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x47, 0x49, 0x4d, 0x50, 0x20, 0x32, 0x2e, 0x31, 0x30, 0x2e, 0x34, 0x00, - 0x32, 0x30, 0x31, 0x38, 0x3a, 0x30, 0x39, 0x3a, 0x31, 0x31, 0x20, 0x31, - 0x36, 0x3a, 0x31, 0x38, 0x3a, 0x35, 0x31, 0x00, 0x08, 0x00, 0x00, 0x01, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x01, - 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x01, - 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x01, - 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, - 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf7, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xff, 0xd8, 0xff, 0xe0, - 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x08, 0x06, 0x06, - 0x07, 0x06, 0x05, 0x08, 0x07, 0x07, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, - 0x14, 0x0d, 0x0c, 0x0b, 0x0b, 0x0c, 0x19, 0x12, 0x13, 0x0f, 0x14, 0x1d, - 0x1a, 0x1f, 0x1e, 0x1d, 0x1a, 0x1c, 0x1c, 0x20, 0x24, 0x2e, 0x27, 0x20, - 0x22, 0x2c, 0x23, 0x1c, 0x1c, 0x28, 0x37, 0x29, 0x2c, 0x30, 0x31, 0x34, - 0x34, 0x34, 0x1f, 0x27, 0x39, 0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, - 0x32, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x09, 0x09, 0x09, 0x0c, 0x0b, 0x0c, - 0x18, 0x0d, 0x0d, 0x18, 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32, 0x32, 0x32, + 0x47, 0x49, 0x4d, 0x50, 0x20, 0x32, 0x2e, 0x31, 0x30, 0x2e, 0x33, 0x30, + 0x00, 0x00, 0x32, 0x30, 0x32, 0x34, 0x3a, 0x30, 0x37, 0x3a, 0x31, 0x31, + 0x20, 0x32, 0x31, 0x3a, 0x34, 0x37, 0x3a, 0x33, 0x34, 0x00, 0x01, 0x00, + 0x01, 0xa0, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0xfe, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x01, 0x01, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x01, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x03, 0x01, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x02, 0x02, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x00, 0xe9, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, + 0x49, 0x46, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, + 0xff, 0xdb, 0x00, 0x43, 0x00, 0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x08, + 0x07, 0x07, 0x07, 0x09, 0x09, 0x08, 0x0a, 0x0c, 0x14, 0x0d, 0x0c, 0x0b, + 0x0b, 0x0c, 0x19, 0x12, 0x13, 0x0f, 0x14, 0x1d, 0x1a, 0x1f, 0x1e, 0x1d, + 0x1a, 0x1c, 0x1c, 0x20, 0x24, 0x2e, 0x27, 0x20, 0x22, 0x2c, 0x23, 0x1c, + 0x1c, 0x28, 0x37, 0x29, 0x2c, 0x30, 0x31, 0x34, 0x34, 0x34, 0x1f, 0x27, + 0x39, 0x3d, 0x38, 0x32, 0x3c, 0x2e, 0x33, 0x34, 0x32, 0xff, 0xdb, 0x00, + 0x43, 0x01, 0x09, 0x09, 0x09, 0x0c, 0x0b, 0x0c, 0x18, 0x0d, 0x0d, 0x18, + 0x32, 0x21, 0x1c, 0x21, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0xff, 0xc0, - 0x00, 0x11, 0x08, 0x01, 0x00, 0x00, 0xaa, 0x03, 0x01, 0x22, 0x00, 0x02, - 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, 0x1f, 0x00, 0x00, 0x01, - 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, - 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, - 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, - 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, - 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, - 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, - 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, - 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, - 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, - 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, - 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, - 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, - 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, - 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, - 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xc4, 0x00, 0x1f, 0x01, 0x00, 0x03, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0xff, 0xc4, 0x00, 0xb5, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, - 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, - 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, - 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, - 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, - 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, - 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, - 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, - 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, - 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, - 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, - 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, - 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, - 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, - 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, - 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, 0xef, 0x28, 0xa2, 0xb8, 0xaf, - 0x1e, 0x78, 0x86, 0xf2, 0xc2, 0x25, 0xb1, 0xd3, 0x98, 0xa4, 0xae, 0xbb, - 0xa5, 0x94, 0x75, 0x51, 0xd8, 0x0f, 0x7a, 0x00, 0xec, 0x5a, 0x78, 0x90, - 0xe1, 0xa5, 0x45, 0x3e, 0xec, 0x29, 0xa6, 0xee, 0xd8, 0x75, 0x9e, 0x2f, - 0xfb, 0xec, 0x57, 0xcf, 0x6f, 0x77, 0x37, 0x98, 0x64, 0x9e, 0x57, 0x72, - 0x7a, 0xb3, 0xb6, 0x4d, 0x3c, 0x6a, 0xd0, 0x2f, 0x73, 0x4e, 0xc0, 0x7d, - 0x01, 0xf6, 0xcb, 0x6f, 0xf9, 0xf8, 0x8b, 0xfe, 0xfb, 0x14, 0x7d, 0xba, - 0xd3, 0xfe, 0x7e, 0x61, 0xff, 0x00, 0xbe, 0xc5, 0x78, 0x18, 0xd5, 0xed, - 0xba, 0x9d, 0xd4, 0xe5, 0xd5, 0xec, 0xcf, 0x56, 0x39, 0xfa, 0x51, 0x60, - 0x3d, 0xe7, 0xed, 0xd6, 0x9f, 0xf3, 0xf3, 0x0f, 0xfd, 0xf6, 0x28, 0xfb, - 0x7d, 0xa0, 0xff, 0x00, 0x97, 0xa8, 0x7f, 0xef, 0xb1, 0x5e, 0x0f, 0xfd, - 0xab, 0x66, 0x7a, 0x16, 0xfc, 0xa9, 0x3f, 0xb5, 0x6d, 0x7f, 0xbc, 0x68, - 0xb0, 0x8f, 0x78, 0xfe, 0xd1, 0xb2, 0xff, 0x00, 0x9f, 0xb8, 0x3f, 0xef, - 0xe0, 0xa4, 0x3a, 0x95, 0x88, 0xeb, 0x79, 0x6e, 0x3f, 0xed, 0xa0, 0xaf, - 0x08, 0xfe, 0xd6, 0xb5, 0x1d, 0x09, 0x34, 0xdf, 0xed, 0x9b, 0x71, 0xd9, - 0xa8, 0xb0, 0x1e, 0xf1, 0xfd, 0xa9, 0xa7, 0xff, 0x00, 0xcf, 0xf5, 0xb7, - 0xfd, 0xfd, 0x5f, 0xf1, 0xa3, 0xfb, 0x53, 0x4f, 0xff, 0x00, 0x9f, 0xeb, - 0x6f, 0xfb, 0xfa, 0xbf, 0xe3, 0x5e, 0x10, 0x35, 0xab, 0x7f, 0x46, 0xa5, - 0x1a, 0xd5, 0xb0, 0x3d, 0x1a, 0x8b, 0x01, 0xee, 0xdf, 0xda, 0xba, 0x77, - 0xfc, 0xff, 0x00, 0xdb, 0x7f, 0xdf, 0xd5, 0xff, 0x00, 0x1a, 0x4f, 0xed, - 0x5d, 0x3b, 0xfe, 0x7f, 0xed, 0x7f, 0xef, 0xea, 0xff, 0x00, 0x8d, 0x78, - 0x5f, 0xf6, 0xe5, 0xb8, 0xfe, 0x16, 0xa4, 0xfe, 0xdd, 0xb6, 0xfe, 0xeb, - 0x51, 0x60, 0x3d, 0xd7, 0xfb, 0x5b, 0x4d, 0xff, 0x00, 0x9f, 0xfb, 0x5f, - 0xfb, 0xfc, 0xbf, 0xe3, 0x49, 0xfd, 0xaf, 0xa6, 0xff, 0x00, 0xd0, 0x42, - 0xd7, 0xfe, 0xff, 0x00, 0x2f, 0xf8, 0xd7, 0x85, 0x7f, 0x6e, 0x5b, 0xff, - 0x00, 0xcf, 0x36, 0xa4, 0xfe, 0xdc, 0x83, 0xfe, 0x79, 0xb5, 0x16, 0x03, - 0xdd, 0xbf, 0xb6, 0x34, 0xcf, 0xfa, 0x08, 0x5a, 0xff, 0x00, 0xdf, 0xe5, - 0xff, 0x00, 0x1a, 0x3f, 0xb6, 0x34, 0xc1, 0xff, 0x00, 0x31, 0x1b, 0x4f, - 0xfb, 0xfc, 0xbf, 0xe3, 0x5e, 0x12, 0x75, 0xb8, 0x31, 0xf7, 0x18, 0x53, - 0x0e, 0xb5, 0x09, 0xe3, 0x63, 0x51, 0x60, 0x3d, 0xe9, 0x35, 0x6d, 0x36, - 0x46, 0x0a, 0x97, 0xf6, 0xac, 0xc7, 0xb0, 0x95, 0x49, 0xfe, 0x75, 0x6c, - 0x10, 0x46, 0x41, 0xc8, 0xf6, 0xaf, 0x9e, 0x23, 0x97, 0xed, 0x8f, 0xfb, - 0xb3, 0x9f, 0x6a, 0xf4, 0x2f, 0x04, 0x6a, 0x97, 0x96, 0x97, 0x31, 0xd8, - 0xdd, 0x48, 0xcf, 0x6f, 0x2f, 0xca, 0x81, 0xf9, 0xd8, 0xdd, 0xb1, 0xed, - 0xda, 0x8b, 0x0c, 0xf4, 0x6a, 0x28, 0xa2, 0x90, 0x05, 0x70, 0x9a, 0xfd, - 0xb0, 0xba, 0xd6, 0xee, 0x55, 0xbf, 0xd9, 0xfe, 0x42, 0xbb, 0xba, 0xe3, - 0x75, 0x4f, 0xf9, 0x0e, 0xdc, 0xfb, 0x10, 0x7f, 0x41, 0x4e, 0x22, 0x67, - 0x8d, 0xea, 0xb2, 0xf9, 0x9a, 0x9d, 0xc2, 0x20, 0xc4, 0x71, 0xb9, 0x55, - 0x1f, 0x43, 0x54, 0xf6, 0xd4, 0xf7, 0xc3, 0x1a, 0x9d, 0xd8, 0xff, 0x00, - 0xa6, 0xcf, 0xff, 0x00, 0xa1, 0x1a, 0x68, 0x5e, 0x05, 0x30, 0x22, 0x6f, - 0x95, 0x19, 0xbd, 0x06, 0x6a, 0x11, 0x0c, 0xc4, 0x06, 0xdd, 0xf3, 0x11, - 0x90, 0xbe, 0xd5, 0x62, 0x78, 0xc4, 0xad, 0x6f, 0x10, 0x25, 0x77, 0xc9, - 0xb4, 0x9f, 0xae, 0x29, 0x82, 0xd5, 0x73, 0xf3, 0x33, 0x9f, 0xa3, 0x52, - 0x02, 0x45, 0x40, 0xd1, 0xc6, 0xe3, 0xf8, 0xd7, 0x3f, 0xae, 0x3f, 0xa5, - 0x1b, 0x29, 0xf6, 0xd1, 0x88, 0x8d, 0xcc, 0x79, 0x2c, 0x15, 0x57, 0x6e, - 0x7b, 0x73, 0x4e, 0x78, 0x92, 0x65, 0x58, 0xdb, 0x20, 0xee, 0xfb, 0xca, - 0x69, 0x81, 0x18, 0x41, 0xeb, 0x49, 0xb4, 0x7b, 0x53, 0x6c, 0x22, 0xda, - 0x62, 0xb8, 0x24, 0xb1, 0xf3, 0x0a, 0xed, 0x3d, 0x3a, 0x0f, 0xf1, 0xaa, - 0xe5, 0x22, 0xde, 0xfe, 0x64, 0xac, 0xad, 0xe6, 0x63, 0x00, 0x67, 0x03, - 0xd6, 0x90, 0x16, 0xf6, 0xfd, 0x31, 0x40, 0x41, 0xed, 0x51, 0x48, 0x73, - 0xa4, 0x23, 0x1c, 0xef, 0xf3, 0x00, 0x3f, 0x4c, 0x1f, 0xf3, 0xf8, 0x51, - 0x64, 0x62, 0x17, 0xcb, 0xe5, 0x6e, 0x62, 0x03, 0x63, 0x7f, 0x43, 0xc1, - 0xa6, 0x04, 0xbb, 0x57, 0xd4, 0x50, 0x50, 0x76, 0xe9, 0x55, 0x6e, 0x23, - 0x45, 0x6f, 0x97, 0x76, 0xf6, 0x3c, 0x0c, 0xf4, 0xa9, 0xe4, 0x8d, 0xcc, - 0x76, 0xd6, 0xca, 0x40, 0x24, 0x1c, 0x9f, 0x6c, 0x93, 0xfe, 0x34, 0x00, - 0xe0, 0xa0, 0xf7, 0x1f, 0x5a, 0x08, 0x03, 0x8c, 0xd4, 0x2f, 0x07, 0x90, - 0x9e, 0x74, 0x6c, 0x7e, 0x52, 0x32, 0x09, 0xeb, 0x4f, 0xbe, 0x58, 0xfe, - 0xd6, 0xa2, 0x46, 0x2a, 0x9e, 0x50, 0x23, 0x1e, 0xb8, 0xe2, 0x90, 0x0f, - 0xda, 0x3f, 0x0a, 0x63, 0x0e, 0x69, 0x2c, 0xf6, 0x6e, 0x94, 0x29, 0x25, - 0x70, 0x36, 0x93, 0xeb, 0x52, 0xba, 0xf1, 0x40, 0x0b, 0x63, 0x70, 0xd6, - 0x97, 0x91, 0xca, 0xa4, 0xe0, 0x37, 0x3f, 0x4a, 0xf5, 0x4b, 0x01, 0xfe, - 0x9b, 0x62, 0xe3, 0x8d, 0xd2, 0xa1, 0xfd, 0x45, 0x79, 0x28, 0x1f, 0x38, - 0xfa, 0xd7, 0xaf, 0x5a, 0x26, 0xcb, 0x8d, 0x3c, 0x1e, 0x48, 0x68, 0xff, - 0x00, 0x98, 0xa6, 0x80, 0xf4, 0x5a, 0x28, 0xa2, 0xa4, 0x61, 0x5c, 0x6e, - 0xa8, 0xc3, 0xfb, 0x7a, 0xe4, 0x7b, 0x0f, 0xe4, 0x2b, 0xb2, 0xae, 0x27, - 0x56, 0xc8, 0xf1, 0x05, 0xd7, 0x3e, 0x9f, 0xca, 0x9c, 0x44, 0xcf, 0x1c, - 0xbd, 0xe3, 0x54, 0xba, 0xcf, 0xfc, 0xf5, 0x6f, 0xe6, 0x69, 0x82, 0xa4, - 0xbe, 0x18, 0xd5, 0x2e, 0x87, 0xfd, 0x35, 0x6f, 0xe7, 0x4d, 0x48, 0xde, - 0x46, 0xda, 0x8a, 0x59, 0xb0, 0x4e, 0x05, 0x30, 0x23, 0x99, 0x8a, 0x79, - 0x12, 0xaa, 0xee, 0x31, 0xc9, 0xb8, 0xaf, 0xb7, 0x1f, 0xe1, 0x50, 0x8b, - 0xc4, 0xdb, 0xf7, 0x4e, 0x7d, 0x2a, 0x23, 0xa8, 0x1c, 0xf1, 0x18, 0xc7, - 0xd6, 0x9b, 0xf6, 0xd1, 0xbb, 0x77, 0x92, 0xb9, 0xf5, 0xa4, 0x05, 0xeb, - 0x69, 0x0b, 0x0b, 0x89, 0x1d, 0x76, 0xef, 0x55, 0x0a, 0x3e, 0x86, 0xa5, - 0x46, 0x01, 0xd0, 0xb7, 0x40, 0x46, 0x6b, 0x38, 0x6a, 0x0d, 0xff, 0x00, - 0x3c, 0xc7, 0xe7, 0x47, 0xf6, 0x8b, 0x0e, 0x91, 0x8f, 0xce, 0x98, 0x17, - 0xad, 0xc7, 0x93, 0x0a, 0x23, 0x10, 0x48, 0x90, 0xb7, 0x1d, 0x87, 0x1f, - 0xe1, 0x4c, 0xf2, 0x21, 0x65, 0x98, 0x3e, 0xdd, 0xce, 0xe4, 0xab, 0x63, - 0xa0, 0xaa, 0x87, 0x50, 0x63, 0xfc, 0x03, 0xf3, 0xa4, 0xfe, 0xd0, 0x6c, - 0xff, 0x00, 0xab, 0x5a, 0x00, 0xb9, 0x2a, 0x19, 0x2c, 0x44, 0x79, 0x5f, - 0x30, 0x32, 0xe7, 0x1d, 0x30, 0x01, 0xe7, 0xf5, 0xa4, 0x84, 0x4a, 0x6e, - 0x37, 0x4c, 0xca, 0x13, 0x9c, 0xec, 0xe3, 0xb5, 0x54, 0x1a, 0x83, 0xff, - 0x00, 0x70, 0x7e, 0x74, 0x7f, 0x68, 0x3f, 0xf7, 0x05, 0x20, 0x26, 0x78, - 0x25, 0x13, 0xbb, 0xa3, 0x29, 0x04, 0x9d, 0xa4, 0xf6, 0x15, 0x3b, 0x21, - 0x7b, 0x78, 0x46, 0xfc, 0x4c, 0x99, 0x3b, 0xc7, 0xa9, 0x3d, 0x3f, 0x2c, - 0x7e, 0xb5, 0x4b, 0xfb, 0x41, 0xcf, 0xf0, 0x2d, 0x21, 0xd4, 0x1f, 0x18, - 0xd8, 0xb4, 0x01, 0x63, 0xc9, 0x99, 0x9b, 0x6c, 0xae, 0x36, 0xf7, 0x03, - 0xbd, 0x59, 0x75, 0x49, 0x2e, 0x56, 0x57, 0x0a, 0xca, 0x23, 0xdb, 0xb4, - 0xfa, 0xe2, 0xb3, 0xff, 0x00, 0xb4, 0x1f, 0xfb, 0x8b, 0x47, 0xf6, 0x8c, - 0x9f, 0xdc, 0x5a, 0x00, 0xbb, 0x1c, 0x62, 0x2d, 0xe8, 0x08, 0x28, 0x5b, - 0x72, 0xfa, 0x8f, 0x6a, 0x56, 0xe4, 0x56, 0x79, 0xbf, 0x90, 0x9f, 0xba, - 0xb5, 0xa6, 0x60, 0x95, 0x20, 0x82, 0x69, 0x17, 0x0b, 0x32, 0x6e, 0x43, - 0x9e, 0xa2, 0x98, 0x15, 0xf1, 0x89, 0x07, 0xd6, 0xbd, 0x82, 0x10, 0x4d, - 0xc5, 0x89, 0x3f, 0xde, 0x8f, 0xfa, 0x57, 0x90, 0x11, 0xf3, 0x8f, 0xad, - 0x7b, 0x04, 0x1f, 0xeb, 0x2c, 0x4f, 0xbc, 0x7f, 0xd2, 0x84, 0x07, 0xa0, - 0x51, 0x41, 0xea, 0x68, 0xa9, 0x18, 0x57, 0x15, 0xab, 0xae, 0xed, 0x7e, - 0xe7, 0xd8, 0x2f, 0xf2, 0x15, 0xda, 0xd7, 0x1f, 0xaa, 0x0f, 0xf8, 0x9e, - 0xdc, 0x9f, 0x61, 0xfc, 0xa9, 0xc4, 0x4c, 0xf1, 0x7b, 0xef, 0xf9, 0x0a, - 0xdd, 0x7f, 0xd7, 0x56, 0xfe, 0x75, 0x73, 0x4a, 0x19, 0xbc, 0x3f, 0xf5, - 0xc9, 0xff, 0x00, 0xf4, 0x13, 0x55, 0xb5, 0x01, 0xff, 0x00, 0x13, 0x6b, - 0xbf, 0xfa, 0xec, 0xdf, 0xce, 0xad, 0xe8, 0xff, 0x00, 0xf1, 0xfa, 0x3f, - 0xeb, 0x9b, 0xff, 0x00, 0xe8, 0x26, 0x98, 0x1c, 0x9d, 0x14, 0x77, 0xa2, - 0x90, 0xc2, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, - 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0xba, 0xab, - 0x83, 0x9d, 0x0f, 0x48, 0xf6, 0x89, 0xbf, 0xf4, 0x2a, 0xe5, 0x6b, 0xa8, - 0x9b, 0x9d, 0x0b, 0x49, 0xe3, 0xfe, 0x59, 0xbf, 0xfe, 0x85, 0x42, 0x03, - 0x35, 0xbe, 0xf0, 0xc7, 0x5c, 0xd7, 0xaf, 0xdb, 0x72, 0x2c, 0x4f, 0xfd, - 0x73, 0xfe, 0x95, 0xe4, 0x2f, 0x9d, 0xc3, 0x8a, 0xf6, 0x0b, 0x25, 0xcd, - 0xb5, 0x89, 0xf6, 0x4f, 0xe9, 0x4d, 0x08, 0xf4, 0x06, 0xfb, 0xc7, 0xeb, - 0x49, 0x4a, 0xdf, 0x78, 0xfd, 0x69, 0x2a, 0x46, 0x15, 0xc8, 0xea, 0x9f, - 0xf2, 0x1c, 0x9c, 0x7a, 0x85, 0xfe, 0x42, 0xba, 0xea, 0xe4, 0x75, 0x5f, - 0xf9, 0x0e, 0xcd, 0xf4, 0x5f, 0xe4, 0x29, 0xc4, 0x4c, 0xf1, 0x8d, 0x47, - 0x8d, 0x66, 0xf7, 0xfe, 0xbb, 0x3f, 0xf3, 0xab, 0x9a, 0x2f, 0x3a, 0x82, - 0x8f, 0xf6, 0x1f, 0xf9, 0x1a, 0xad, 0xab, 0x0d, 0xba, 0xed, 0xf0, 0xc7, - 0x49, 0xdb, 0xf9, 0xd5, 0xad, 0x0f, 0xfe, 0x42, 0x69, 0xfe, 0xe3, 0xff, - 0x00, 0xe8, 0x26, 0x98, 0x1c, 0x91, 0xea, 0x69, 0x29, 0x4f, 0xde, 0x3f, - 0x5a, 0x4a, 0x43, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, - 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, - 0xe9, 0xe4, 0x39, 0xd0, 0x74, 0xaf, 0xf7, 0x24, 0xff, 0x00, 0xd0, 0xab, - 0x98, 0xae, 0x9d, 0x8e, 0x74, 0x0d, 0x2b, 0xfd, 0xd9, 0x3f, 0xf4, 0x2a, - 0x00, 0xcf, 0x70, 0x37, 0x0f, 0x4a, 0xf6, 0x8d, 0x3a, 0x3c, 0xd9, 0xd9, - 0x7f, 0xba, 0x9f, 0xd2, 0xbc, 0x61, 0xc7, 0xcc, 0x3e, 0xb5, 0xee, 0x1a, - 0x6a, 0xe2, 0xd2, 0xd0, 0x7f, 0xb2, 0x9f, 0xd2, 0x98, 0x8e, 0xbc, 0xf5, - 0x34, 0x94, 0xa7, 0xa9, 0xa4, 0xa9, 0x18, 0x57, 0x25, 0xaa, 0xff, 0x00, - 0xc8, 0x76, 0x7f, 0xa2, 0xff, 0x00, 0x2a, 0xeb, 0x6b, 0x92, 0xd5, 0x73, - 0xfd, 0xb9, 0x37, 0xd1, 0x7f, 0x95, 0x38, 0x89, 0x9e, 0x3b, 0xae, 0xa6, - 0xcf, 0x10, 0xdf, 0x03, 0xff, 0x00, 0x3d, 0x98, 0xd4, 0xda, 0x1e, 0x0e, - 0xa7, 0x1f, 0xfb, 0x8d, 0xff, 0x00, 0xa0, 0x9a, 0x8f, 0xc4, 0x3f, 0xf2, - 0x32, 0x5f, 0x7f, 0xd7, 0x4a, 0x97, 0x42, 0x19, 0xd5, 0x23, 0x1d, 0x3e, - 0x56, 0xff, 0x00, 0xd0, 0x4d, 0x30, 0x39, 0x23, 0xf7, 0x8f, 0xd6, 0x92, - 0x95, 0xbe, 0xf1, 0xfa, 0xd2, 0x52, 0x18, 0x51, 0x45, 0x14, 0x00, 0x51, - 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, - 0x45, 0x14, 0x00, 0x57, 0x4c, 0x7f, 0xe4, 0x5f, 0xd2, 0x8f, 0xb4, 0xbf, - 0xfa, 0x15, 0x73, 0x35, 0xd2, 0x30, 0xff, 0x00, 0x8a, 0x7b, 0x4a, 0xfa, - 0x4b, 0xff, 0x00, 0xa1, 0xd0, 0x05, 0x33, 0xcb, 0x2f, 0xd6, 0xbd, 0xda, - 0xc0, 0x62, 0x0b, 0x5f, 0xf7, 0x57, 0xfa, 0x57, 0x84, 0x7f, 0xcb, 0x41, - 0xf5, 0x15, 0xee, 0xf6, 0x3f, 0xea, 0x6d, 0xbe, 0x8b, 0x4d, 0x08, 0xea, - 0x4f, 0x53, 0x49, 0x41, 0xeb, 0x45, 0x48, 0xc2, 0xb9, 0x4d, 0x58, 0x7f, - 0xc4, 0xfa, 0x5f, 0xf7, 0x57, 0xf9, 0x57, 0x57, 0x5c, 0xae, 0xaf, 0xff, - 0x00, 0x21, 0xc6, 0x3d, 0x32, 0x8b, 0x4d, 0x09, 0x9e, 0x3b, 0xe2, 0x31, - 0x8f, 0x12, 0xdf, 0x7f, 0xd7, 0x4a, 0x7e, 0x84, 0x71, 0xaa, 0xc3, 0xcf, - 0x18, 0x6f, 0xfd, 0x04, 0xd3, 0x3c, 0x48, 0x3f, 0xe2, 0xa5, 0xbe, 0xff, - 0x00, 0xae, 0x9f, 0xd0, 0x53, 0xf4, 0x21, 0x9d, 0x5a, 0x01, 0xec, 0xdf, - 0xfa, 0x09, 0xa6, 0x07, 0x26, 0xdf, 0x78, 0xfd, 0x69, 0x29, 0x5b, 0xef, - 0x1f, 0xad, 0x25, 0x21, 0x85, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, - 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, - 0x05, 0x74, 0x87, 0xfe, 0x45, 0xdd, 0x2b, 0xfe, 0xda, 0xff, 0x00, 0xe8, - 0x75, 0xcd, 0xd7, 0x48, 0x7f, 0xe4, 0x5d, 0xd2, 0xff, 0x00, 0xed, 0xaf, - 0xfe, 0x87, 0x40, 0x14, 0xba, 0x4a, 0xa7, 0xde, 0xbd, 0xd6, 0xc4, 0xfe, - 0xe6, 0xd7, 0xfd, 0xd5, 0xfe, 0x95, 0xe1, 0x24, 0xe5, 0xc6, 0x7d, 0x6b, - 0xdc, 0x2c, 0x5f, 0x09, 0x68, 0x3b, 0x90, 0x83, 0xf9, 0x53, 0x42, 0x3b, - 0x03, 0xd4, 0xd1, 0x41, 0xea, 0x68, 0xa9, 0x18, 0x57, 0x2b, 0xad, 0x0c, - 0x6b, 0x5d, 0x7f, 0xe5, 0x9a, 0xff, 0x00, 0x33, 0x5d, 0x55, 0x72, 0xda, - 0xf0, 0xc6, 0xb4, 0x0f, 0xfd, 0x32, 0x5f, 0xe6, 0x69, 0xa1, 0x33, 0xc7, - 0xbc, 0x50, 0x36, 0xf8, 0x9e, 0xf4, 0x7a, 0xb8, 0xfe, 0x42, 0x8d, 0x0f, - 0xfe, 0x42, 0xf0, 0x7f, 0xc0, 0xbf, 0xf4, 0x13, 0x4f, 0xf1, 0x68, 0xdb, - 0xe2, 0x8b, 0xa3, 0xeb, 0xb4, 0xfe, 0x82, 0x99, 0xa0, 0xff, 0x00, 0xc8, - 0x5a, 0x01, 0xd7, 0xef, 0x7f, 0xe8, 0x26, 0x98, 0x1c, 0xa3, 0x7d, 0xf3, - 0xf5, 0xa4, 0xa7, 0x3f, 0xdf, 0x6f, 0xa9, 0xa6, 0xd2, 0x18, 0x51, 0x45, - 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, - 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x57, 0x49, 0x8c, 0xf8, 0x73, 0x4c, - 0xe7, 0xa7, 0x9b, 0xff, 0x00, 0xa1, 0xd7, 0x37, 0x5d, 0x26, 0x3f, 0xe2, - 0x9b, 0xd2, 0xfe, 0xb2, 0xff, 0x00, 0xe8, 0x54, 0x01, 0x40, 0xff, 0x00, - 0xac, 0x51, 0xdb, 0x22, 0xbd, 0x9a, 0xd1, 0xc8, 0x92, 0xc8, 0x67, 0xf8, - 0xa3, 0x1f, 0xa8, 0xaf, 0x1a, 0x50, 0x0d, 0xc2, 0x0f, 0x56, 0x15, 0xec, - 0x30, 0x1d, 0xb7, 0x16, 0x63, 0x3f, 0xc7, 0x1f, 0xf3, 0x14, 0xd0, 0x8e, - 0xfc, 0x74, 0x14, 0x51, 0x45, 0x48, 0xc2, 0xb9, 0x8f, 0x10, 0x0c, 0x6a, - 0xd1, 0x1f, 0x58, 0x87, 0xf3, 0x35, 0xd3, 0xd7, 0x35, 0xe2, 0x31, 0x8b, - 0xeb, 0x76, 0xf5, 0x42, 0x3f, 0x5f, 0xfe, 0xbd, 0x35, 0xb8, 0x99, 0xe4, - 0x9e, 0x36, 0x4d, 0xbe, 0x24, 0x63, 0x8f, 0xbd, 0x1a, 0x9a, 0xa9, 0xa0, - 0xff, 0x00, 0xc8, 0x62, 0xdf, 0xfe, 0x05, 0xff, 0x00, 0xa0, 0x9a, 0xd5, - 0xf1, 0xf4, 0x61, 0x75, 0x7b, 0x69, 0x3f, 0xbf, 0x17, 0xf2, 0x35, 0x93, - 0xa1, 0x1c, 0x6b, 0x16, 0xdd, 0x3f, 0x8b, 0xff, 0x00, 0x41, 0x34, 0xc0, - 0xe5, 0xe4, 0xff, 0x00, 0x58, 0xdf, 0x53, 0x4d, 0xa7, 0x4b, 0xfe, 0xb5, - 0xff, 0x00, 0xde, 0x34, 0xda, 0x43, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, - 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, - 0xa2, 0x80, 0x0a, 0xe9, 0x3f, 0xe6, 0x5a, 0xd3, 0x3f, 0xde, 0x97, 0xff, - 0x00, 0x42, 0xae, 0x6e, 0xba, 0x30, 0x49, 0xf0, 0xde, 0x9d, 0xe8, 0x1a, - 0x5f, 0xfd, 0x0a, 0x80, 0x2b, 0x5b, 0x0d, 0xf7, 0xd0, 0x2f, 0xab, 0xa8, - 0xfd, 0x6b, 0xd7, 0x22, 0xe6, 0xfe, 0xd0, 0x7f, 0xd3, 0x54, 0xfe, 0x62, - 0xbc, 0xa3, 0x4d, 0x1b, 0xf5, 0x7b, 0x55, 0xff, 0x00, 0xa6, 0x83, 0xf9, - 0xd7, 0xab, 0x5a, 0x12, 0xda, 0xbd, 0x98, 0xff, 0x00, 0xa6, 0xcb, 0xc7, - 0xe3, 0x4d, 0x08, 0xf4, 0x1a, 0x28, 0xa2, 0xa4, 0x61, 0x5c, 0xe7, 0x89, - 0xc6, 0x27, 0xb4, 0x6f, 0x50, 0xc3, 0xf9, 0x57, 0x47, 0x5c, 0xf7, 0x8a, - 0x97, 0xf7, 0x56, 0x8f, 0x8e, 0x8e, 0x46, 0x7e, 0xa3, 0xff, 0x00, 0xad, - 0x4d, 0x6e, 0x0c, 0xf3, 0x6f, 0x88, 0x31, 0x66, 0x3b, 0x29, 0xfd, 0x09, - 0x5a, 0xe6, 0x34, 0x37, 0x03, 0x56, 0xb6, 0xc9, 0x0b, 0x96, 0xc6, 0x4f, - 0xb8, 0x22, 0xbb, 0x5f, 0x19, 0x40, 0x2e, 0x3c, 0x3a, 0xf2, 0x01, 0x93, - 0x0b, 0x87, 0xe9, 0xef, 0x8a, 0xf3, 0x65, 0x6e, 0x9c, 0xd3, 0x62, 0x29, - 0xdc, 0xa3, 0x47, 0x75, 0x2a, 0x30, 0xc3, 0x2b, 0x90, 0x7f, 0x3a, 0x8a, - 0xb5, 0xc4, 0xb2, 0x67, 0x3b, 0xc9, 0x3e, 0xa6, 0x8f, 0x3e, 0x40, 0x71, - 0xbb, 0xf4, 0xa4, 0x33, 0x22, 0x8a, 0xd7, 0xfb, 0x44, 0x9f, 0xde, 0xfd, - 0x29, 0x44, 0xf2, 0xff, 0x00, 0x7a, 0x80, 0x31, 0xe8, 0xad, 0x7f, 0x3e, - 0x4c, 0xfd, 0xe3, 0x4b, 0xe6, 0xca, 0x73, 0xf3, 0xb5, 0x00, 0x63, 0xd1, - 0x82, 0x7a, 0x0a, 0xd7, 0x13, 0x49, 0x8f, 0xbe, 0xd4, 0xbe, 0x6b, 0xf7, - 0x90, 0xd0, 0x06, 0x46, 0xd3, 0xe8, 0x68, 0xda, 0xdf, 0xdd, 0x3f, 0x95, - 0x6b, 0x89, 0x1c, 0xe0, 0x6e, 0x3f, 0x9d, 0x28, 0x91, 0x88, 0xea, 0x68, - 0x03, 0x1f, 0x63, 0x7f, 0x74, 0xfe, 0x54, 0xbb, 0x1b, 0xfb, 0xa7, 0xf2, - 0xad, 0x9d, 0xec, 0x3f, 0x88, 0xfe, 0x74, 0xbe, 0x63, 0x7f, 0x7b, 0xf5, - 0xa0, 0x0c, 0x5d, 0x8f, 0xfd, 0xd6, 0xfc, 0xab, 0xa0, 0xdc, 0xab, 0xa0, - 0xd8, 0xc2, 0x5b, 0xf7, 0x8a, 0xce, 0xc5, 0x7b, 0x80, 0x4f, 0x19, 0xa8, - 0x3c, 0xc2, 0x7f, 0x88, 0xfe, 0x75, 0x1b, 0x13, 0x4c, 0x45, 0xfd, 0x02, - 0x31, 0x26, 0xbb, 0x07, 0x19, 0x0a, 0x73, 0xcd, 0x7a, 0x7e, 0x93, 0x87, - 0xd7, 0xad, 0x00, 0xff, 0x00, 0x9e, 0x99, 0xfd, 0x0d, 0x79, 0xcf, 0x85, - 0xa3, 0x2d, 0x7f, 0x24, 0xbf, 0xdc, 0x5c, 0x67, 0xeb, 0x5e, 0x8b, 0xe1, - 0xaf, 0xde, 0xeb, 0xf6, 0xdf, 0xec, 0xee, 0x27, 0xfe, 0xf9, 0x34, 0x74, - 0x03, 0xd0, 0xa8, 0xa2, 0x8a, 0x91, 0x85, 0x61, 0xf8, 0xa6, 0x3d, 0xfa, - 0x5a, 0xbf, 0xfc, 0xf3, 0x90, 0x1f, 0xe9, 0xfd, 0x6b, 0x72, 0xa9, 0x6a, - 0xf0, 0x1b, 0x8d, 0x2a, 0xe1, 0x07, 0x5d, 0x99, 0x1f, 0x87, 0x34, 0xd0, - 0x1c, 0x34, 0xf1, 0x25, 0xee, 0x9f, 0x3d, 0xb3, 0x8c, 0x89, 0x10, 0xaf, - 0xe9, 0x5e, 0x41, 0x2c, 0x6f, 0x6f, 0x71, 0x24, 0x2e, 0x30, 0xc8, 0xc5, - 0x4f, 0xe1, 0x5e, 0xb5, 0x0c, 0xc4, 0x1c, 0x57, 0x07, 0xe3, 0x1b, 0x1f, - 0xb3, 0x6a, 0xdf, 0x69, 0x41, 0x88, 0xe7, 0x19, 0xcf, 0xfb, 0x5d, 0xea, - 0x99, 0x28, 0xc2, 0x0d, 0x46, 0x4d, 0x30, 0x7e, 0x74, 0xf1, 0x52, 0x31, - 0x7d, 0x29, 0x78, 0xa6, 0x82, 0x45, 0x2f, 0x6a, 0x00, 0x33, 0x4b, 0xbb, - 0xb5, 0x34, 0x76, 0xa5, 0xcf, 0xe7, 0x40, 0x0a, 0x4f, 0xa5, 0x25, 0x19, - 0xe3, 0x8a, 0x01, 0xf5, 0xfc, 0xe8, 0x01, 0x72, 0x69, 0x7a, 0x0c, 0x67, - 0xf5, 0xa6, 0x9e, 0xb4, 0xbd, 0xb3, 0x40, 0x0e, 0x03, 0xb6, 0x69, 0xff, - 0x00, 0xa8, 0xa6, 0x64, 0x1e, 0xd4, 0xe0, 0x7b, 0x53, 0x01, 0x47, 0x7a, - 0x69, 0x38, 0xcf, 0xe5, 0x41, 0x38, 0x18, 0xe3, 0x9e, 0x73, 0x4f, 0x8d, - 0x3c, 0xd9, 0x95, 0x57, 0x92, 0xc7, 0x14, 0x01, 0xd0, 0xf8, 0x7d, 0x04, - 0x16, 0x85, 0xff, 0x00, 0x89, 0xce, 0x6b, 0xbc, 0xf0, 0x42, 0xf9, 0xba, - 0xc4, 0x92, 0x63, 0xee, 0x44, 0x7f, 0x32, 0x45, 0x70, 0xf0, 0x37, 0x95, - 0x10, 0x40, 0x38, 0x03, 0x15, 0xe8, 0x9f, 0x0f, 0xe0, 0x3f, 0x65, 0xba, - 0xba, 0x23, 0xef, 0x30, 0x41, 0xf8, 0x50, 0xf6, 0x03, 0xb3, 0xa2, 0x8a, - 0x2a, 0x46, 0x14, 0x84, 0x02, 0x08, 0x23, 0x20, 0xf0, 0x69, 0x68, 0xa0, - 0x0f, 0x31, 0xd4, 0xa3, 0x6d, 0x3f, 0x51, 0x9e, 0x06, 0xfe, 0x07, 0x38, - 0xf7, 0x1d, 0xbf, 0x4a, 0xc9, 0xd6, 0x6d, 0x17, 0x54, 0xd2, 0x9e, 0x2f, - 0xf9, 0x68, 0xbf, 0x32, 0x7d, 0x6b, 0xb1, 0xf1, 0xd5, 0x81, 0xd9, 0x15, - 0xfc, 0x6b, 0xd3, 0xe4, 0x7f, 0xe8, 0x6b, 0x8e, 0xb6, 0x9f, 0x92, 0x0f, - 0xe5, 0x57, 0xb9, 0x27, 0x9d, 0x90, 0x51, 0x8a, 0x91, 0xca, 0x9c, 0x11, - 0x4e, 0x1e, 0xf5, 0xb3, 0xe2, 0x5d, 0x3c, 0x5b, 0x5d, 0xfd, 0xaa, 0x21, - 0xfb, 0xb9, 0x7a, 0xfb, 0x1a, 0xc2, 0xcd, 0x48, 0xc9, 0x49, 0xc8, 0xf4, - 0xa5, 0xe0, 0x63, 0x14, 0xc0, 0xde, 0xf4, 0x6e, 0xa0, 0x07, 0xe7, 0xae, - 0x28, 0xcf, 0x27, 0x8e, 0x69, 0x99, 0xc8, 0xa7, 0x0c, 0xf7, 0xa0, 0x07, - 0x11, 0x9a, 0x4e, 0x07, 0xad, 0x26, 0x79, 0x18, 0xa3, 0x3e, 0xfc, 0x76, - 0xa0, 0x05, 0xfa, 0x53, 0x81, 0xe3, 0xa7, 0x34, 0xc0, 0x79, 0xa5, 0xc9, - 0xcf, 0xa5, 0x00, 0x3f, 0xbf, 0xa5, 0x19, 0xc7, 0x19, 0xa6, 0x13, 0xcd, - 0x2f, 0x4a, 0x00, 0x71, 0x3d, 0xf3, 0x5a, 0x1a, 0x7c, 0x58, 0x06, 0x52, - 0x39, 0xed, 0x54, 0x62, 0x8f, 0xcc, 0x70, 0xbd, 0xbb, 0xd6, 0xb0, 0x5f, - 0x2d, 0x55, 0x47, 0x41, 0x4c, 0x0b, 0x3b, 0xf2, 0x7d, 0xf8, 0xe2, 0xbd, - 0xa3, 0xc2, 0xd6, 0x07, 0x4f, 0xf0, 0xed, 0xa4, 0x4e, 0x31, 0x23, 0x2f, - 0x98, 0xff, 0x00, 0x53, 0xcf, 0xf2, 0xc5, 0x79, 0x6f, 0x84, 0xb4, 0xa3, - 0xac, 0x6b, 0x90, 0xc4, 0xcb, 0x98, 0x63, 0x3e, 0x64, 0x87, 0xd8, 0x76, - 0xaf, 0x6a, 0x1c, 0x0c, 0x52, 0x63, 0x0a, 0x28, 0xa2, 0x90, 0x05, 0x14, - 0x51, 0x40, 0x10, 0x5e, 0x5a, 0xc5, 0x7d, 0x67, 0x2d, 0xb4, 0xc3, 0x29, - 0x22, 0xe0, 0xfb, 0x7b, 0xd7, 0x90, 0x6a, 0x56, 0x93, 0x69, 0x7a, 0x8c, - 0xb6, 0xd2, 0x83, 0xb9, 0x1b, 0xaf, 0xa8, 0xec, 0x6b, 0xd9, 0xab, 0x98, - 0xf1, 0x8f, 0x87, 0xff, 0x00, 0xb5, 0x2c, 0xbe, 0xd5, 0x02, 0xff, 0x00, - 0xa5, 0x42, 0x3a, 0x0f, 0xe3, 0x5f, 0x4f, 0xad, 0x34, 0xc4, 0xcf, 0x38, - 0xbc, 0x81, 0x35, 0x0d, 0x3d, 0xa2, 0x63, 0xdb, 0x22, 0xb8, 0x37, 0x46, - 0x89, 0xd9, 0x1c, 0x61, 0x81, 0xc1, 0x15, 0xdc, 0xc1, 0x21, 0x8d, 0x8a, - 0x1e, 0x30, 0x71, 0xcd, 0x73, 0x9e, 0x20, 0xb5, 0x10, 0xde, 0x79, 0xa9, - 0x8c, 0x3f, 0x3c, 0x53, 0x60, 0x8c, 0x90, 0x78, 0xa2, 0x90, 0x1a, 0x5f, - 0xc6, 0x90, 0xc5, 0xc9, 0x3d, 0xa8, 0xc8, 0xc5, 0x26, 0x45, 0x1e, 0x87, - 0x1f, 0x85, 0x00, 0x2e, 0x78, 0xa5, 0x07, 0x1e, 0x86, 0x9a, 0x49, 0x1c, - 0x52, 0x50, 0x03, 0xfe, 0x94, 0xe0, 0x71, 0x51, 0x8f, 0xf2, 0x29, 0xc3, - 0x8a, 0x00, 0x7f, 0x7e, 0xbf, 0x5a, 0x33, 0xef, 0x4d, 0x07, 0xaf, 0x24, - 0x53, 0xe3, 0x1b, 0x88, 0x19, 0xef, 0x40, 0x17, 0x6c, 0xe3, 0xda, 0xa5, - 0x98, 0x72, 0x4f, 0x19, 0xab, 0xbb, 0xcb, 0x1c, 0x01, 0xcf, 0xa0, 0xef, - 0x55, 0xd0, 0x6d, 0x50, 0x01, 0x15, 0xdb, 0xf8, 0x0b, 0xc3, 0x0d, 0xa9, - 0xde, 0x8d, 0x46, 0xe9, 0x7f, 0xd1, 0x20, 0x6f, 0x90, 0x1f, 0xf9, 0x68, - 0xdf, 0xe0, 0x29, 0x88, 0xed, 0x7c, 0x15, 0xa1, 0x0d, 0x1f, 0x47, 0x59, - 0x65, 0x5f, 0xf4, 0xab, 0x90, 0x1e, 0x4f, 0xf6, 0x47, 0x61, 0x5d, 0x35, - 0x00, 0x00, 0x30, 0x3a, 0x0a, 0x2a, 0x46, 0x14, 0x51, 0x45, 0x00, 0x14, - 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x79, 0xd7, 0x8d, 0x3c, 0x39, - 0xf6, 0x39, 0x5b, 0x54, 0xb2, 0x4c, 0x44, 0xe7, 0x32, 0xa0, 0xfe, 0x13, - 0xeb, 0xf4, 0xae, 0x0f, 0x56, 0x89, 0x6e, 0x2c, 0x0b, 0x05, 0xcb, 0x27, - 0x22, 0xbd, 0xfa, 0x58, 0x92, 0x78, 0x9e, 0x29, 0x50, 0x3c, 0x6e, 0x30, - 0xca, 0x7a, 0x11, 0x5e, 0x45, 0xe3, 0x1f, 0x0f, 0x3e, 0x89, 0x33, 0xec, - 0x05, 0xac, 0xa5, 0xe6, 0x33, 0xfd, 0xd3, 0xe8, 0x6a, 0x93, 0x11, 0xe6, - 0x98, 0xc1, 0xc5, 0x14, 0xf9, 0x54, 0xab, 0x11, 0xd2, 0xa3, 0xa4, 0x31, - 0x7b, 0x50, 0x4d, 0x25, 0x14, 0x00, 0xb9, 0xef, 0x49, 0xef, 0x46, 0x68, - 0xcd, 0x00, 0x2f, 0xd6, 0x9c, 0x38, 0x1c, 0x53, 0x78, 0xa5, 0x1d, 0x28, - 0x01, 0xdc, 0x1a, 0xb1, 0x6c, 0xb9, 0x6c, 0xd5, 0x71, 0xe8, 0x2b, 0x57, - 0x47, 0xb0, 0xb8, 0xd4, 0xaf, 0x62, 0xb4, 0xb5, 0x8c, 0xbc, 0xd2, 0x1c, - 0x01, 0xe9, 0xee, 0x68, 0x03, 0x63, 0xc3, 0x5e, 0x1f, 0x9f, 0xc4, 0x3a, - 0xa2, 0xda, 0xc6, 0x0a, 0x42, 0xbf, 0x34, 0xb2, 0x63, 0xee, 0xaf, 0xf8, - 0xd7, 0xba, 0x59, 0x59, 0xc1, 0xa7, 0xd9, 0xc5, 0x69, 0x6c, 0x81, 0x21, - 0x89, 0x42, 0xa8, 0x15, 0x9f, 0xe1, 0xdd, 0x02, 0xdf, 0xc3, 0xda, 0x62, - 0x5a, 0xc2, 0x03, 0x48, 0x7e, 0x69, 0x64, 0xee, 0xed, 0xfe, 0x15, 0xaf, - 0x48, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, - 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0xaa, 0x6a, 0x5a, 0x75, 0xbe, 0xab, - 0x61, 0x2d, 0x9d, 0xca, 0x6e, 0x8e, 0x41, 0x8f, 0x70, 0x7d, 0x47, 0xbd, - 0x5b, 0xa2, 0x80, 0x3e, 0x70, 0xf1, 0x4e, 0x83, 0x71, 0xa0, 0x6a, 0xf2, - 0x5a, 0x4e, 0x0e, 0x3e, 0xf4, 0x6f, 0x8e, 0x19, 0x7b, 0x11, 0x58, 0x55, - 0xf4, 0x57, 0x8c, 0x7c, 0x33, 0x17, 0x89, 0x74, 0x77, 0x87, 0x68, 0x17, - 0x71, 0x02, 0xd0, 0x3f, 0x70, 0x7d, 0x3e, 0x86, 0xbe, 0x7a, 0xb8, 0x82, - 0x4b, 0x6b, 0x89, 0x20, 0x99, 0x0a, 0x49, 0x1b, 0x15, 0x65, 0x23, 0x90, - 0x45, 0x30, 0x22, 0x34, 0x94, 0xb4, 0x94, 0x00, 0x51, 0x45, 0x2d, 0x00, - 0x02, 0x9c, 0x05, 0x20, 0xa5, 0xa0, 0x09, 0x23, 0x52, 0xee, 0x15, 0x41, - 0x24, 0x9c, 0x00, 0x3b, 0xd7, 0xba, 0xf8, 0x0b, 0xc2, 0x4b, 0xa0, 0xe9, - 0xe2, 0xee, 0xe5, 0x33, 0x7f, 0x3a, 0x82, 0x72, 0x3f, 0xd5, 0xaf, 0xf7, - 0x47, 0xf5, 0xae, 0x43, 0xe1, 0x8f, 0x85, 0x16, 0xf6, 0x7f, 0xed, 0x9b, - 0xc8, 0xf3, 0x0c, 0x4d, 0xfb, 0x85, 0x61, 0xc3, 0x37, 0xaf, 0xe1, 0x5e, - 0xc1, 0x40, 0x05, 0x14, 0x51, 0x48, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, - 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x02, 0x8a, - 0x28, 0xa0, 0x02, 0xbc, 0xa7, 0xe2, 0x7f, 0x84, 0xe5, 0x9a, 0xe5, 0x35, - 0x7b, 0x0b, 0x77, 0x91, 0x9f, 0xe5, 0x99, 0x22, 0x52, 0x49, 0x3d, 0x8e, - 0x05, 0x7a, 0xb5, 0x14, 0x01, 0xf3, 0x17, 0xf6, 0x2e, 0xa7, 0xff, 0x00, - 0x40, 0xeb, 0xbf, 0xfb, 0xf0, 0xdf, 0xe1, 0x4b, 0xfd, 0x87, 0xaa, 0x9e, - 0x9a, 0x6d, 0xe7, 0xfd, 0xf8, 0x6f, 0xf0, 0xaf, 0xa6, 0xf0, 0x3d, 0x05, - 0x18, 0x1e, 0x94, 0x01, 0xf3, 0x28, 0xd0, 0x75, 0x6f, 0xfa, 0x06, 0x5e, - 0xff, 0x00, 0xdf, 0x86, 0xff, 0x00, 0x0a, 0x5f, 0xf8, 0x47, 0xf5, 0x7f, - 0xfa, 0x05, 0xde, 0xff, 0x00, 0xe0, 0x3b, 0xff, 0x00, 0x85, 0x7d, 0x35, - 0x81, 0xe9, 0x46, 0x28, 0x03, 0xe6, 0x71, 0xe1, 0xed, 0x63, 0xfe, 0x81, - 0x57, 0xa7, 0xfe, 0xdd, 0xdf, 0xfc, 0x2a, 0xf6, 0x91, 0xe1, 0x0d, 0x5f, - 0x51, 0xd5, 0x20, 0xb6, 0x93, 0x4f, 0xba, 0x86, 0x26, 0x6f, 0x9e, 0x49, - 0x21, 0x65, 0x00, 0x77, 0xe4, 0x8a, 0xfa, 0x2a, 0x8a, 0x00, 0xab, 0xa7, - 0x58, 0xc3, 0xa6, 0xd8, 0x43, 0x69, 0x02, 0x05, 0x8e, 0x35, 0x0a, 0x00, - 0xab, 0x54, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, - 0x05, 0x14, 0x51, 0x40, 0x1f, 0xff, 0xd9, 0x00, 0xff, 0xdb, 0x00, 0x43, - 0x00, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, - 0x03, 0x03, 0x04, 0x05, 0x08, 0x05, 0x05, 0x04, 0x04, 0x05, 0x0a, 0x07, - 0x07, 0x06, 0x08, 0x0c, 0x0a, 0x0c, 0x0c, 0x0b, 0x0a, 0x0b, 0x0b, 0x0d, - 0x0e, 0x12, 0x10, 0x0d, 0x0e, 0x11, 0x0e, 0x0b, 0x0b, 0x10, 0x16, 0x10, - 0x11, 0x13, 0x14, 0x15, 0x15, 0x15, 0x0c, 0x0f, 0x17, 0x18, 0x16, 0x14, - 0x18, 0x12, 0x14, 0x15, 0x14, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x03, 0x04, - 0x04, 0x05, 0x04, 0x05, 0x09, 0x05, 0x05, 0x09, 0x14, 0x0d, 0x0b, 0x0d, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0xff, 0xc2, 0x00, 0x11, 0x08, 0x02, 0x58, 0x01, 0x90, 0x03, - 0x01, 0x11, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, - 0x1c, 0x00, 0x01, 0x00, 0x02, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, - 0x06, 0x07, 0x08, 0xff, 0xc4, 0x00, 0x17, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0xff, 0xc0, 0x00, 0x11, 0x08, 0x01, + 0x00, 0x00, 0xaa, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, + 0x01, 0xff, 0xc4, 0x00, 0x1f, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, + 0x00, 0xb5, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, + 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 0x00, 0x04, + 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, + 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, + 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, + 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, + 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, + 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, + 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, + 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xff, 0xc4, 0x00, 0x1f, 0x01, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0xff, 0xc4, + 0x00, 0xb5, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, + 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, 0x03, 0x11, + 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, + 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, + 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, + 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, + 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, + 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, + 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, + 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, + 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, + 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, + 0xfa, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, + 0x00, 0x3f, 0x00, 0xf4, 0xca, 0x28, 0xaa, 0xda, 0x85, 0xfc, 0x1a, 0x6d, + 0x8c, 0xb7, 0x77, 0x2d, 0xb6, 0x28, 0xd7, 0x27, 0xdf, 0xda, 0xac, 0x82, + 0xcd, 0x34, 0xc8, 0x83, 0xab, 0xa8, 0xfa, 0x9a, 0xf0, 0xcf, 0x13, 0xfc, + 0x4a, 0xd4, 0xae, 0xa7, 0x64, 0xb7, 0x94, 0xc1, 0x16, 0x7e, 0x58, 0xe3, + 0x38, 0x38, 0xf7, 0x35, 0xc8, 0xcb, 0xe2, 0x7b, 0xf9, 0xb3, 0xe6, 0x4d, + 0x2b, 0x1f, 0x79, 0x33, 0xfc, 0xc5, 0x2e, 0x61, 0xd8, 0xfa, 0x79, 0xae, + 0xad, 0xd3, 0xef, 0x4f, 0x18, 0xfa, 0xb0, 0xa8, 0x9b, 0x52, 0xb1, 0x4f, + 0xbd, 0x79, 0x00, 0xfa, 0xc8, 0x2b, 0xe5, 0xd3, 0xad, 0xde, 0x76, 0x7f, + 0xce, 0x9a, 0x75, 0x9b, 0xc2, 0x7f, 0xd6, 0x0a, 0x39, 0x87, 0x63, 0xe9, + 0xf3, 0xad, 0xe9, 0x4b, 0xf7, 0xb5, 0x2b, 0x41, 0xf5, 0x99, 0x7f, 0xc6, + 0x98, 0x7c, 0x41, 0xa3, 0x0e, 0xba, 0xa5, 0x9f, 0xfd, 0xfe, 0x5f, 0xf1, + 0xaf, 0x98, 0x4e, 0xad, 0x76, 0x7f, 0xe5, 0xa6, 0x3f, 0x3a, 0x41, 0xa9, + 0xdd, 0x13, 0xfe, 0xb4, 0xd1, 0xcc, 0x16, 0x3e, 0x9d, 0x3e, 0x24, 0xd1, + 0x47, 0xfc, 0xc5, 0x2d, 0x7f, 0xef, 0xe0, 0xa4, 0x3e, 0x26, 0xd1, 0x07, + 0xfc, 0xc4, 0xed, 0xbf, 0xef, 0xba, 0xf9, 0x9d, 0x75, 0x0b, 0x93, 0xff, + 0x00, 0x2d, 0x9a, 0xa6, 0x5b, 0xc9, 0xcf, 0x59, 0x0d, 0x2e, 0x60, 0xb1, + 0xf4, 0x8f, 0xfc, 0x24, 0xfa, 0x27, 0xfd, 0x04, 0xed, 0xff, 0x00, 0xef, + 0xaa, 0x51, 0xe2, 0x5d, 0x10, 0xff, 0x00, 0xcc, 0x4e, 0xdb, 0xfe, 0xfb, + 0xaf, 0x9d, 0x12, 0xe2, 0x43, 0xd5, 0xdb, 0xf3, 0xab, 0x09, 0x23, 0x1e, + 0xac, 0x7f, 0x3a, 0x39, 0x82, 0xc7, 0xd0, 0xa3, 0xc4, 0x7a, 0x29, 0xff, + 0x00, 0x98, 0xa5, 0xaf, 0xfd, 0xfd, 0x14, 0xa3, 0xc4, 0x1a, 0x31, 0xff, + 0x00, 0x98, 0xa5, 0x9f, 0xfd, 0xfe, 0x5f, 0xf1, 0xaf, 0x02, 0x4c, 0x37, + 0x52, 0xdf, 0x99, 0xa9, 0x84, 0x48, 0x7f, 0xbd, 0xff, 0x00, 0x7d, 0x9f, + 0xf1, 0xa3, 0x98, 0x2c, 0x7b, 0xca, 0xeb, 0x9a, 0x4b, 0x7d, 0xdd, 0x4e, + 0xcc, 0xfd, 0x26, 0x5f, 0xf1, 0xa9, 0x97, 0x52, 0xb1, 0x7f, 0xbb, 0x79, + 0x03, 0x7d, 0x24, 0x15, 0xe0, 0x22, 0x24, 0x1d, 0x37, 0x7f, 0xdf, 0x67, + 0xfc, 0x69, 0x76, 0x7a, 0x33, 0x8f, 0xf8, 0x11, 0xa7, 0xcc, 0x16, 0x3e, + 0x82, 0x5b, 0xab, 0x76, 0xfb, 0xb3, 0xc6, 0x7e, 0x8c, 0x29, 0xde, 0x6c, + 0x7f, 0xf3, 0xd1, 0x7f, 0x3a, 0xf9, 0xf3, 0x0d, 0xda, 0x47, 0x1f, 0x8d, + 0x2a, 0xbc, 0xc9, 0xf7, 0x2e, 0xa6, 0x1f, 0xf0, 0x21, 0xfe, 0x14, 0x73, + 0x05, 0x8f, 0xa1, 0x41, 0x04, 0x64, 0x1c, 0xd1, 0x5e, 0x15, 0x63, 0xe2, + 0x0d, 0x67, 0x4d, 0x94, 0x3d, 0xbd, 0xfc, 0x8c, 0x07, 0xf0, 0x39, 0xc8, + 0x3f, 0x9d, 0x7a, 0xbf, 0x85, 0xbc, 0x49, 0x17, 0x88, 0xb4, 0xff, 0x00, + 0x30, 0xa8, 0x8e, 0xe6, 0x3e, 0x25, 0x41, 0xeb, 0xea, 0x3d, 0xa9, 0xa6, + 0x2b, 0x1b, 0xd4, 0x51, 0x45, 0x31, 0x05, 0x79, 0xcf, 0xc5, 0xad, 0x45, + 0xed, 0xf4, 0xab, 0x6b, 0x54, 0x62, 0x3c, 0xcd, 0xd2, 0x37, 0xbe, 0x30, + 0x07, 0xf3, 0xaf, 0x46, 0xaf, 0x2a, 0xf8, 0xc5, 0xf7, 0x2c, 0xbf, 0xeb, + 0x8c, 0x9f, 0xcc, 0x52, 0x7b, 0x0d, 0x1e, 0x2e, 0xcc, 0xcc, 0xc5, 0x98, + 0xe5, 0x8f, 0x26, 0x92, 0x8a, 0x33, 0x50, 0x50, 0x51, 0x45, 0x14, 0x00, + 0x52, 0x8a, 0x6d, 0x14, 0x01, 0x32, 0x1a, 0xb0, 0x8d, 0x55, 0x14, 0xd4, + 0xe8, 0x68, 0x02, 0xec, 0x6d, 0x56, 0xa3, 0x6a, 0xa0, 0x8d, 0x56, 0xa3, + 0x6a, 0x00, 0xd0, 0x8d, 0xaa, 0xd2, 0x37, 0x15, 0x9f, 0x1b, 0x55, 0xb8, + 0xda, 0x80, 0x2c, 0x52, 0xd3, 0x41, 0xe2, 0x96, 0x80, 0x0a, 0x29, 0x28, + 0xa0, 0x07, 0x57, 0x41, 0xe0, 0x0b, 0xc7, 0xb5, 0xf1, 0x82, 0x42, 0x18, + 0xec, 0x9c, 0x15, 0x61, 0xff, 0x00, 0x01, 0x27, 0xf9, 0x8a, 0xe7, 0x6b, + 0x5b, 0xc1, 0xbf, 0xf2, 0x3b, 0xd8, 0xff, 0x00, 0xbf, 0xff, 0x00, 0xb2, + 0xb5, 0x08, 0x0f, 0x71, 0xa2, 0x8a, 0x2b, 0x42, 0x02, 0xbc, 0xa7, 0xe3, + 0x1f, 0xdd, 0xb2, 0xff, 0x00, 0xae, 0x32, 0x7f, 0x31, 0x5e, 0xad, 0x5e, + 0x53, 0xf1, 0x93, 0xa5, 0x97, 0xfd, 0x71, 0x93, 0xf9, 0x8a, 0x4f, 0x61, + 0xa3, 0xc5, 0xa8, 0xa2, 0x8a, 0x82, 0x82, 0x8a, 0x85, 0xe6, 0x2a, 0xe4, + 0x00, 0x29, 0xbe, 0x7b, 0x7a, 0x0a, 0x00, 0xb1, 0x45, 0x57, 0xf3, 0xdb, + 0xd0, 0x51, 0xe7, 0xb7, 0xa0, 0xa0, 0x0b, 0x20, 0xd4, 0xaa, 0x6a, 0x97, + 0xda, 0x1b, 0xd0, 0x52, 0x8b, 0xa6, 0x1f, 0xc2, 0x28, 0x03, 0x51, 0x1a, + 0xac, 0xc6, 0xd5, 0x8a, 0x2f, 0x9c, 0x7f, 0x0a, 0xd4, 0x8b, 0xa9, 0xb8, + 0xff, 0x00, 0x96, 0x6b, 0xf9, 0xd0, 0x07, 0x41, 0x1b, 0x55, 0xa8, 0xde, + 0xb9, 0x95, 0xd6, 0x24, 0x5f, 0xf9, 0x64, 0xbf, 0x9d, 0x4a, 0xba, 0xf4, + 0xab, 0xff, 0x00, 0x2c, 0x53, 0xf3, 0x34, 0x01, 0xd5, 0x23, 0x54, 0x95, + 0xca, 0xaf, 0x89, 0x26, 0x5f, 0xf9, 0x77, 0x4f, 0xfb, 0xe8, 0xd3, 0xc7, + 0x8a, 0x26, 0xff, 0x00, 0x9f, 0x64, 0xff, 0x00, 0xbe, 0x8d, 0x00, 0x74, + 0xf4, 0x57, 0x31, 0xff, 0x00, 0x09, 0x44, 0xdf, 0xf3, 0xec, 0x9f, 0xf7, + 0xd1, 0xae, 0x9a, 0x80, 0x16, 0xb5, 0x7c, 0x1b, 0xff, 0x00, 0x23, 0xc5, + 0x87, 0xfb, 0xff, 0x00, 0xfb, 0x2b, 0x56, 0x55, 0x6a, 0xf8, 0x37, 0xfe, + 0x47, 0x9b, 0x0f, 0xf7, 0xff, 0x00, 0xf6, 0x56, 0xa1, 0x01, 0xee, 0x54, + 0x51, 0x45, 0x68, 0x40, 0x57, 0x94, 0x7c, 0x64, 0xff, 0x00, 0x97, 0x1f, + 0xfa, 0xe3, 0x27, 0xf3, 0x15, 0xea, 0xf5, 0xe4, 0xff, 0x00, 0x19, 0x7f, + 0xe5, 0xc7, 0xfe, 0xb8, 0xc9, 0xfc, 0xc5, 0x27, 0xb0, 0xd1, 0xe3, 0x14, + 0x52, 0x51, 0x50, 0x51, 0x5a, 0x5f, 0xf5, 0xa6, 0x99, 0x4f, 0x97, 0xfd, + 0x61, 0xa6, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, + 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, + 0x5e, 0x89, 0x5e, 0x77, 0x5e, 0x87, 0xd6, 0x80, 0x16, 0xb5, 0x7c, 0x1d, + 0xff, 0x00, 0x23, 0xd6, 0x9f, 0xfe, 0xff, 0x00, 0xfe, 0xca, 0xd5, 0x95, + 0x5a, 0x9e, 0x0e, 0xff, 0x00, 0x91, 0xeb, 0x4f, 0xff, 0x00, 0x7f, 0xff, + 0x00, 0x65, 0x6a, 0x10, 0x1e, 0xe9, 0x45, 0x14, 0x56, 0x84, 0x05, 0x79, + 0x37, 0xc6, 0x6e, 0xb6, 0x1f, 0xf5, 0xc6, 0x4f, 0xe6, 0x2b, 0xd6, 0x6b, + 0xc9, 0x7e, 0x33, 0x7d, 0xeb, 0x0f, 0xfa, 0xe3, 0x27, 0xf3, 0x5a, 0x4f, + 0x61, 0xa3, 0xc6, 0x28, 0xa4, 0xa2, 0xa0, 0xa2, 0x09, 0x7f, 0xd6, 0x1a, + 0x65, 0x3e, 0x4f, 0xf5, 0x86, 0x99, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x7a, 0x02, 0xb5, 0x79, 0xfd, 0x77, 0x4a, 0xd4, + 0x01, 0x63, 0x35, 0xab, 0xe0, 0xe3, 0xff, 0x00, 0x15, 0xde, 0x9f, 0xfe, + 0xff, 0x00, 0xfe, 0xca, 0xd5, 0x8c, 0x1a, 0xb5, 0xfc, 0x1a, 0x73, 0xe3, + 0xbd, 0x3b, 0xfd, 0xff, 0x00, 0xfd, 0x95, 0xa8, 0x40, 0x7b, 0xbd, 0x14, + 0x51, 0x5a, 0x10, 0x15, 0xe4, 0xbf, 0x19, 0xfe, 0xf5, 0x87, 0xfd, 0x71, + 0x93, 0xf9, 0xad, 0x7a, 0xd5, 0x79, 0x27, 0xc6, 0x7f, 0xbd, 0xa7, 0xff, + 0x00, 0xd7, 0x19, 0x3f, 0x9a, 0xd2, 0x7b, 0x0d, 0x1e, 0x31, 0x45, 0x14, + 0x54, 0x14, 0x57, 0x93, 0xfd, 0x61, 0xa6, 0xd3, 0xa4, 0xff, 0x00, 0x58, + 0x69, 0xb4, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, + 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x57, + 0x68, 0xad, 0x5c, 0x5d, 0x75, 0xca, 0xd4, 0x01, 0x6c, 0x35, 0x6d, 0x78, + 0x28, 0xe7, 0xc7, 0x7a, 0x77, 0xfb, 0xff, 0x00, 0xfb, 0x2b, 0x57, 0x3e, + 0xad, 0x5b, 0xbe, 0x08, 0x39, 0xf1, 0xd6, 0x9d, 0xfe, 0xff, 0x00, 0xfe, + 0xca, 0xd4, 0x20, 0x3d, 0xf2, 0x8a, 0x28, 0xad, 0x08, 0x0a, 0xf2, 0x3f, + 0x8d, 0x1f, 0x7f, 0x4f, 0xff, 0x00, 0xae, 0x32, 0x7f, 0x35, 0xaf, 0x5c, + 0xaf, 0x23, 0xf8, 0xd3, 0xf7, 0xf4, 0xff, 0x00, 0xfa, 0xe3, 0x27, 0xf3, + 0x5a, 0x4f, 0x61, 0xa3, 0xc6, 0x68, 0xa2, 0x8a, 0x82, 0x8a, 0xf2, 0x7f, + 0xac, 0x34, 0xda, 0x74, 0x9f, 0xeb, 0x0d, 0x36, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, + 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0xea, 0x11, 0xab, 0x97, 0xae, 0x89, + 0x5a, 0x80, 0x2e, 0x2b, 0x57, 0x41, 0xe0, 0x63, 0x9f, 0x1c, 0xe9, 0xdf, + 0xf5, 0xd3, 0xff, 0x00, 0x65, 0x6a, 0xe6, 0x55, 0xab, 0xa4, 0xf0, 0x19, + 0xcf, 0x8e, 0x34, 0xdf, 0xfa, 0xe9, 0xff, 0x00, 0xb2, 0xb5, 0x08, 0x0f, + 0xa0, 0x28, 0xa2, 0x8a, 0xd0, 0x80, 0xaf, 0x22, 0xf8, 0xd3, 0xfe, 0xb3, + 0x4f, 0xff, 0x00, 0xae, 0x32, 0x7f, 0x35, 0xaf, 0x5d, 0xaf, 0x22, 0xf8, + 0xd5, 0xfe, 0xb3, 0x4e, 0xff, 0x00, 0xae, 0x32, 0x7f, 0x35, 0xa4, 0xf6, + 0x1a, 0x3c, 0x66, 0x8a, 0x28, 0xa8, 0x28, 0x82, 0x4f, 0xbe, 0x69, 0xb4, + 0xe9, 0x3e, 0xf9, 0xa6, 0xd0, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, + 0x50, 0x01, 0x5b, 0xaa, 0xd5, 0x85, 0x5b, 0x0a, 0xd4, 0x01, 0x6d, 0x5a, + 0xba, 0x6f, 0x00, 0x1c, 0xf8, 0xe3, 0x4d, 0xff, 0x00, 0xae, 0x87, 0xff, + 0x00, 0x41, 0x6a, 0xe4, 0xd5, 0xab, 0xaa, 0xf8, 0x7c, 0x73, 0xe3, 0x7d, + 0x37, 0xfe, 0xba, 0x9f, 0xfd, 0x05, 0xa8, 0x40, 0x7d, 0x0b, 0x45, 0x14, + 0x56, 0x84, 0x05, 0x79, 0x0f, 0xc6, 0xaf, 0xf5, 0xba, 0x77, 0xfd, 0x71, + 0x93, 0xf9, 0xad, 0x7a, 0xf5, 0x79, 0x0f, 0xc6, 0xaf, 0xf5, 0xba, 0x6f, + 0xfd, 0x71, 0x97, 0xf9, 0xad, 0x27, 0xb0, 0xd1, 0xe3, 0x54, 0x94, 0x1a, + 0x2a, 0x0a, 0x21, 0x93, 0xef, 0x9a, 0x6d, 0x39, 0xfe, 0xf9, 0xa6, 0xd0, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, + 0x01, 0x45, 0x14, 0x50, 0x01, 0x45, 0x14, 0x50, 0x01, 0x5a, 0x6a, 0xd5, + 0x99, 0x57, 0xd4, 0xd0, 0x05, 0x95, 0x6a, 0xeb, 0x7e, 0x1d, 0x9c, 0xf8, + 0xdb, 0x4d, 0xff, 0x00, 0xae, 0xa7, 0xff, 0x00, 0x40, 0x6a, 0xe3, 0x95, + 0xab, 0xaf, 0xf8, 0x72, 0x73, 0xe3, 0x6d, 0x37, 0xfe, 0xba, 0x9f, 0xfd, + 0x01, 0xa8, 0x40, 0x7d, 0x13, 0x45, 0x14, 0x56, 0x84, 0x05, 0x79, 0x37, + 0xc6, 0xa8, 0xc9, 0x8f, 0x4a, 0x90, 0x74, 0x29, 0x32, 0xff, 0x00, 0xe8, + 0x15, 0xeb, 0x35, 0xe7, 0xbf, 0x17, 0xac, 0xcc, 0xfe, 0x1a, 0xb6, 0xb8, + 0x03, 0xfd, 0x4d, 0xc6, 0x09, 0xf4, 0x0c, 0x08, 0xfe, 0x78, 0xa4, 0xf6, + 0x1a, 0x3e, 0x7c, 0xa2, 0x83, 0xc1, 0x20, 0xf6, 0xa4, 0xa8, 0x28, 0x08, + 0x04, 0xf2, 0x29, 0x36, 0x8f, 0x41, 0x4b, 0x45, 0x00, 0x26, 0xd1, 0xe8, + 0x28, 0xda, 0x3d, 0x05, 0x2d, 0x14, 0x00, 0x9b, 0x47, 0xa0, 0xa3, 0x68, + 0xf4, 0x14, 0xb4, 0x50, 0x02, 0x6d, 0x1e, 0x82, 0x8d, 0xa3, 0xd2, 0x96, + 0x8a, 0x00, 0x4d, 0xa3, 0xd2, 0x8d, 0xa3, 0xd2, 0x96, 0x8a, 0x00, 0x4d, + 0xa3, 0xd2, 0x8d, 0xa3, 0xd2, 0x96, 0x8a, 0x00, 0x02, 0xaf, 0xa0, 0xa9, + 0x41, 0xa8, 0xa9, 0xca, 0x68, 0x02, 0xc0, 0x35, 0xda, 0xfc, 0x31, 0x43, + 0x27, 0x8d, 0xf4, 0xdc, 0x0e, 0x8e, 0xe4, 0xfe, 0x11, 0xb5, 0x70, 0xc0, + 0xd7, 0xa7, 0xfc, 0x1c, 0xb4, 0x69, 0x7c, 0x47, 0x25, 0xce, 0xdf, 0x92, + 0x1b, 0x76, 0x39, 0xf4, 0x2c, 0x40, 0x1f, 0xa0, 0x34, 0xd0, 0x33, 0xdc, + 0x68, 0xa2, 0x8a, 0xb2, 0x02, 0xb1, 0x7c, 0x5b, 0xa7, 0x7f, 0x6a, 0xf8, + 0x5b, 0x50, 0xb5, 0x0b, 0xb9, 0xda, 0x22, 0xc8, 0x3f, 0xda, 0x1c, 0x8f, + 0xe5, 0x5b, 0x54, 0x52, 0x03, 0xe4, 0x1b, 0xc8, 0xfc, 0xbb, 0x96, 0xe3, + 0x19, 0xe6, 0xab, 0xd7, 0x67, 0xf1, 0x1b, 0x40, 0x3a, 0x27, 0x89, 0x6e, + 0xa2, 0x45, 0xc4, 0x0e, 0xde, 0x74, 0x3f, 0xee, 0x31, 0xe9, 0xf8, 0x1c, + 0x8a, 0xe3, 0x2a, 0x0b, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, + 0x0a, 0x28, 0xa2, 0x80, 0x0a, 0x28, 0xa2, 0x80, 0x1e, 0x99, 0x66, 0x0a, + 0x3a, 0x93, 0x8a, 0xf7, 0xef, 0x84, 0x5a, 0x5f, 0xd9, 0x74, 0x1b, 0x8b, + 0xd6, 0x5c, 0x1b, 0x89, 0x36, 0xa1, 0xc7, 0xf0, 0xaf, 0x1f, 0xcf, 0x35, + 0xe1, 0xda, 0x3d, 0x94, 0xb7, 0xda, 0x84, 0x50, 0xc2, 0xbb, 0xa4, 0x76, + 0x08, 0x83, 0xd5, 0x89, 0xc0, 0xaf, 0xaa, 0x34, 0x6d, 0x36, 0x2d, 0x1f, + 0x46, 0xb4, 0xd3, 0xe2, 0xfb, 0xb0, 0x44, 0x13, 0x3f, 0xde, 0x3d, 0xcf, + 0xe2, 0x72, 0x69, 0xa1, 0x32, 0xf5, 0x14, 0x51, 0x56, 0x48, 0x51, 0x45, + 0x14, 0x01, 0xe7, 0xbf, 0x16, 0x74, 0x31, 0x7f, 0xe1, 0xf5, 0xd4, 0x51, + 0x33, 0x25, 0xa1, 0xc3, 0xe0, 0x73, 0xb1, 0xb8, 0x3f, 0x91, 0xc5, 0x7c, + 0xfb, 0x22, 0x18, 0xe4, 0x65, 0x3d, 0x8d, 0x7d, 0x7f, 0x73, 0x6f, 0x15, + 0xdd, 0xac, 0xb6, 0xd3, 0xa0, 0x78, 0xa5, 0x42, 0x8e, 0xa7, 0xa1, 0x04, + 0x60, 0xd7, 0xcb, 0x9e, 0x2c, 0xd1, 0x25, 0xd0, 0xf5, 0xbb, 0x8b, 0x39, + 0x32, 0x7c, 0xa7, 0xda, 0x18, 0xff, 0x00, 0x12, 0xff, 0x00, 0x09, 0xfc, + 0xaa, 0x59, 0x48, 0xc1, 0xa2, 0x8a, 0x2a, 0x46, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x45, 0x00, + 0x14, 0x51, 0x45, 0x00, 0x14, 0x51, 0x53, 0xda, 0x42, 0x67, 0xb8, 0x55, + 0x00, 0x9e, 0x7a, 0x0e, 0xfe, 0xd4, 0x01, 0xe9, 0xbf, 0x08, 0x34, 0x1f, + 0xb5, 0x6b, 0x0f, 0x7f, 0x2a, 0x66, 0x3b, 0x35, 0xc8, 0x24, 0x71, 0xbd, + 0xba, 0x7e, 0x43, 0x35, 0xee, 0x55, 0xcf, 0x78, 0x2b, 0x42, 0x5f, 0x0f, + 0xf8, 0x66, 0xda, 0xd4, 0xa8, 0x13, 0xc8, 0x3c, 0xd9, 0x8f, 0xab, 0x9f, + 0xf0, 0x18, 0x1f, 0x85, 0x74, 0x35, 0x68, 0x96, 0x14, 0x51, 0x45, 0x31, + 0x05, 0x14, 0x51, 0x40, 0x05, 0x79, 0x57, 0xc6, 0x2f, 0x0f, 0x79, 0xf6, + 0xd0, 0x6b, 0x50, 0xa6, 0x76, 0xfe, 0xe6, 0xe3, 0x03, 0xb1, 0xfb, 0xad, + 0xf9, 0xf1, 0xf8, 0x8a, 0xf5, 0x5a, 0xa9, 0xaa, 0x69, 0xf0, 0xea, 0xba, + 0x65, 0xc5, 0x8c, 0xea, 0x0c, 0x73, 0xa1, 0x43, 0x49, 0x8c, 0xf9, 0x14, + 0x82, 0xac, 0x41, 0xea, 0x29, 0x2b, 0x53, 0x5f, 0xd3, 0x25, 0xd2, 0xb5, + 0x5b, 0x8b, 0x59, 0x94, 0x89, 0x21, 0x90, 0xc6, 0xdf, 0x51, 0xdf, 0xf1, + 0x15, 0x97, 0x50, 0x50, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, 0x51, 0x45, 0x14, 0x00, + 0x57, 0x7f, 0xf0, 0xbb, 0xc3, 0xa7, 0x58, 0xf1, 0x1c, 0x32, 0x48, 0x99, + 0xb6, 0xb6, 0xfd, 0xfc, 0xa4, 0x8e, 0x0e, 0x3e, 0xea, 0xfe, 0x27, 0x9f, + 0xc0, 0xd7, 0x09, 0x04, 0x7e, 0x6c, 0xa0, 0x76, 0xea, 0x7e, 0x95, 0xf4, + 0xb7, 0xc3, 0xcd, 0x00, 0x68, 0x7e, 0x18, 0x84, 0xc8, 0x9b, 0x6e, 0x6e, + 0xb1, 0x34, 0xb9, 0x1c, 0x8c, 0xf4, 0x1f, 0x80, 0xa6, 0x84, 0xce, 0xb2, + 0x8a, 0x28, 0xab, 0x24, 0x28, 0xa2, 0x8a, 0x00, 0x28, 0xa2, 0x8a, 0x00, + 0x28, 0xa2, 0x8a, 0x00, 0xf2, 0x3f, 0x8c, 0x3e, 0x1a, 0x0e, 0x22, 0xd6, + 0xe0, 0x4c, 0x6e, 0x02, 0x2b, 0x8c, 0x0e, 0xff, 0x00, 0xc2, 0xdf, 0xd3, + 0xf2, 0xaf, 0x16, 0x20, 0x82, 0x41, 0xea, 0x2b, 0xeb, 0x8d, 0x5b, 0x4d, + 0x83, 0x58, 0xd2, 0xae, 0x74, 0xfb, 0x81, 0xfb, 0xb9, 0xd0, 0xa9, 0x3d, + 0xc7, 0xa1, 0x1f, 0x4a, 0xf9, 0x6f, 0xc4, 0x1a, 0x4d, 0xc6, 0x8f, 0xaa, + 0xcf, 0x69, 0x72, 0xb8, 0x96, 0x27, 0x28, 0xde, 0x87, 0xd0, 0x8f, 0x62, + 0x2a, 0x1a, 0x29, 0x19, 0x54, 0x51, 0x45, 0x21, 0x85, 0x14, 0x51, 0x40, + 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x54, 0x90, + 0x44, 0x65, 0x94, 0x2e, 0x38, 0xef, 0x40, 0x1d, 0xa7, 0xc3, 0x6f, 0x0c, + 0xff, 0x00, 0x6e, 0xf8, 0x82, 0x1f, 0x39, 0x37, 0x5b, 0x43, 0x89, 0xa6, + 0xc8, 0xe0, 0x80, 0x78, 0x5f, 0xc4, 0xfe, 0x95, 0xf4, 0x75, 0x72, 0x3f, + 0x0e, 0xfc, 0x39, 0xff, 0x00, 0x08, 0xff, 0x00, 0x86, 0xa3, 0x33, 0x2e, + 0x2f, 0x2e, 0xbf, 0x7b, 0x2f, 0xfb, 0x23, 0xf8, 0x57, 0xf0, 0x1f, 0xae, + 0x6b, 0xae, 0xab, 0x48, 0x96, 0x14, 0x51, 0x45, 0x31, 0x05, 0x14, 0x51, + 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x79, 0x57, + 0xc5, 0xff, 0x00, 0x0d, 0x79, 0xf6, 0xd1, 0xeb, 0x70, 0x47, 0x9d, 0x98, + 0x8a, 0xe3, 0x03, 0xa0, 0xfe, 0x16, 0xfc, 0xf8, 0xfc, 0x6b, 0xd5, 0x6a, + 0x0b, 0xcb, 0x58, 0x6f, 0xac, 0xe6, 0xb5, 0x9d, 0x03, 0xc5, 0x32, 0x14, + 0x75, 0x3d, 0xc1, 0xa4, 0xc6, 0x7c, 0x82, 0xea, 0x51, 0x8a, 0x9e, 0xa2, + 0x92, 0xba, 0x1f, 0x17, 0x68, 0x32, 0xe8, 0x3a, 0xe5, 0xcd, 0x94, 0x80, + 0xfe, 0xed, 0xbe, 0x53, 0xfd, 0xe4, 0x3d, 0x0d, 0x73, 0xd5, 0x05, 0x05, + 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, 0x14, 0x51, 0x40, 0x05, + 0x77, 0xff, 0x00, 0x0c, 0x3c, 0x32, 0x75, 0xaf, 0x10, 0x47, 0x2c, 0xb1, + 0x93, 0x6b, 0x6b, 0x89, 0xa5, 0x27, 0xa6, 0x7f, 0x85, 0x7f, 0x13, 0xcf, + 0xe1, 0x5c, 0x3d, 0xa4, 0x0d, 0x71, 0x3a, 0xa2, 0xa9, 0x62, 0x48, 0x00, + 0x0e, 0xe7, 0xb0, 0xaf, 0xa7, 0xbc, 0x17, 0xe1, 0xe4, 0xf0, 0xe7, 0x87, + 0x60, 0xb5, 0x2a, 0x05, 0xc4, 0x9f, 0xbc, 0x9c, 0xfa, 0xb9, 0x1f, 0xd3, + 0xa5, 0x34, 0x84, 0xce, 0x84, 0x0c, 0x0c, 0x0a, 0x28, 0xa2, 0xac, 0x90, + 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x00, + 0xa2, 0x8a, 0x28, 0x00, 0xa2, 0x8a, 0x28, 0x03, 0x8f, 0xf1, 0xdf, 0x82, + 0xa3, 0xf1, 0x55, 0x8a, 0xcb, 0x06, 0xd8, 0xf5, 0x08, 0x46, 0x23, 0x73, + 0xd1, 0xd7, 0xfb, 0xa6, 0xbc, 0x0f, 0x56, 0xf0, 0xce, 0xa7, 0xa3, 0xdc, + 0x34, 0x57, 0x96, 0x92, 0xc2, 0x41, 0xc0, 0x2c, 0xa7, 0x07, 0xe8, 0x7a, + 0x1a, 0xfa, 0xb2, 0x9a, 0xc8, 0x8e, 0x30, 0xea, 0xac, 0x3d, 0x08, 0xcd, + 0x4b, 0x43, 0x4c, 0xf9, 0x0b, 0xec, 0x92, 0xfb, 0x51, 0xf6, 0x49, 0x7d, + 0xbf, 0x3a, 0xfa, 0xe7, 0xec, 0x76, 0xbf, 0xf3, 0xed, 0x0f, 0xfd, 0xf0, + 0x28, 0xfb, 0x1d, 0xaf, 0xfc, 0xfb, 0x43, 0xff, 0x00, 0x7c, 0x0a, 0x39, + 0x47, 0x73, 0xe4, 0x6f, 0xb2, 0x4b, 0xed, 0xf9, 0xd1, 0xf6, 0x49, 0x3d, + 0xbf, 0x3a, 0xfa, 0xe7, 0xec, 0x76, 0xbf, 0xf3, 0xed, 0x0f, 0xfd, 0xf0, + 0x28, 0xfb, 0x1d, 0xaf, 0xfc, 0xfb, 0x43, 0xff, 0x00, 0x7c, 0x0a, 0x39, + 0x42, 0xe7, 0xc8, 0xdf, 0x64, 0x93, 0xdb, 0xf3, 0xa9, 0xed, 0xb4, 0x9b, + 0xbb, 0xb9, 0x84, 0x50, 0x44, 0xf2, 0xb9, 0xe8, 0xb1, 0xa9, 0x63, 0xfa, + 0x57, 0xd6, 0x5f, 0x63, 0xb5, 0xff, 0x00, 0x9f, 0x68, 0x7f, 0xef, 0x81, + 0x4e, 0x48, 0x22, 0x8b, 0xfd, 0x5c, 0x48, 0x9f, 0xee, 0xa8, 0x14, 0x72, + 0x85, 0xcf, 0x2b, 0xf8, 0x79, 0xf0, 0xda, 0x6b, 0x0b, 0xa8, 0xb5, 0x6d, + 0x62, 0x20, 0x8d, 0x1f, 0xcd, 0x05, 0xbb, 0x72, 0x43, 0x7f, 0x79, 0xbf, + 0xa0, 0xaf, 0x58, 0xa2, 0x8a, 0x62, 0x0a, 0x28, 0xa2, 0x98, 0x82, 0x8a, + 0x28, 0xa0, 0x02, 0x8a, 0x28, 0xa0, 0x0f, 0xff, 0xd9, 0x00, 0xff, 0xe1, + 0x0d, 0x37, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6e, 0x73, 0x2e, + 0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x61, + 0x70, 0x2f, 0x31, 0x2e, 0x30, 0x2f, 0x00, 0x3c, 0x3f, 0x78, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x3d, 0x22, + 0xef, 0xbb, 0xbf, 0x22, 0x20, 0x69, 0x64, 0x3d, 0x22, 0x57, 0x35, 0x4d, + 0x30, 0x4d, 0x70, 0x43, 0x65, 0x68, 0x69, 0x48, 0x7a, 0x72, 0x65, 0x53, + 0x7a, 0x4e, 0x54, 0x63, 0x7a, 0x6b, 0x63, 0x39, 0x64, 0x22, 0x3f, 0x3e, + 0x20, 0x3c, 0x78, 0x3a, 0x78, 0x6d, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x20, + 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a, 0x78, 0x3d, 0x22, 0x61, 0x64, 0x6f, + 0x62, 0x65, 0x3a, 0x6e, 0x73, 0x3a, 0x6d, 0x65, 0x74, 0x61, 0x2f, 0x22, + 0x20, 0x78, 0x3a, 0x78, 0x6d, 0x70, 0x74, 0x6b, 0x3d, 0x22, 0x58, 0x4d, + 0x50, 0x20, 0x43, 0x6f, 0x72, 0x65, 0x20, 0x34, 0x2e, 0x34, 0x2e, 0x30, + 0x2d, 0x45, 0x78, 0x69, 0x76, 0x32, 0x22, 0x3e, 0x20, 0x3c, 0x72, 0x64, + 0x66, 0x3a, 0x52, 0x44, 0x46, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a, + 0x72, 0x64, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x31, + 0x39, 0x39, 0x39, 0x2f, 0x30, 0x32, 0x2f, 0x32, 0x32, 0x2d, 0x72, 0x64, + 0x66, 0x2d, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x2d, 0x6e, 0x73, 0x23, + 0x22, 0x3e, 0x20, 0x3c, 0x72, 0x64, 0x66, 0x3a, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x64, 0x66, 0x3a, + 0x61, 0x62, 0x6f, 0x75, 0x74, 0x3d, 0x22, 0x22, 0x20, 0x78, 0x6d, 0x6c, + 0x6e, 0x73, 0x3a, 0x78, 0x6d, 0x70, 0x4d, 0x4d, 0x3d, 0x22, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x6f, 0x62, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x61, 0x70, 0x2f, 0x31, 0x2e, + 0x30, 0x2f, 0x6d, 0x6d, 0x2f, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, + 0x3a, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x61, 0x70, 0x2f, 0x31, 0x2e, 0x30, 0x2f, + 0x73, 0x54, 0x79, 0x70, 0x65, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x23, 0x22, 0x20, 0x78, 0x6d, + 0x6c, 0x6e, 0x73, 0x3a, 0x64, 0x63, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, + 0x3a, 0x2f, 0x2f, 0x70, 0x75, 0x72, 0x6c, 0x2e, 0x6f, 0x72, 0x67, 0x2f, + 0x64, 0x63, 0x2f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x31, 0x2e, 0x31, 0x2f, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, 0x73, 0x3a, + 0x47, 0x49, 0x4d, 0x50, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x69, 0x6d, 0x70, 0x2e, 0x6f, 0x72, + 0x67, 0x2f, 0x78, 0x6d, 0x70, 0x2f, 0x22, 0x20, 0x78, 0x6d, 0x6c, 0x6e, + 0x73, 0x3a, 0x78, 0x6d, 0x70, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x6e, 0x73, 0x2e, 0x61, 0x64, 0x6f, 0x62, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x78, 0x61, 0x70, 0x2f, 0x31, 0x2e, 0x30, 0x2f, 0x22, + 0x20, 0x78, 0x6d, 0x70, 0x4d, 0x4d, 0x3a, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x44, 0x3d, 0x22, 0x67, 0x69, 0x6d, 0x70, 0x3a, + 0x64, 0x6f, 0x63, 0x69, 0x64, 0x3a, 0x67, 0x69, 0x6d, 0x70, 0x3a, 0x63, + 0x66, 0x37, 0x30, 0x38, 0x33, 0x32, 0x37, 0x2d, 0x66, 0x65, 0x35, 0x32, + 0x2d, 0x34, 0x63, 0x65, 0x61, 0x2d, 0x61, 0x35, 0x35, 0x39, 0x2d, 0x63, + 0x62, 0x63, 0x66, 0x31, 0x35, 0x62, 0x39, 0x65, 0x36, 0x32, 0x38, 0x22, + 0x20, 0x78, 0x6d, 0x70, 0x4d, 0x4d, 0x3a, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x44, 0x3d, 0x22, 0x78, 0x6d, 0x70, 0x2e, 0x69, + 0x69, 0x64, 0x3a, 0x62, 0x30, 0x36, 0x33, 0x31, 0x66, 0x38, 0x63, 0x2d, + 0x64, 0x37, 0x66, 0x66, 0x2d, 0x34, 0x32, 0x66, 0x62, 0x2d, 0x62, 0x30, + 0x39, 0x39, 0x2d, 0x64, 0x31, 0x30, 0x37, 0x30, 0x30, 0x36, 0x38, 0x35, + 0x66, 0x31, 0x65, 0x22, 0x20, 0x78, 0x6d, 0x70, 0x4d, 0x4d, 0x3a, 0x4f, + 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x44, 0x3d, 0x22, 0x78, 0x6d, 0x70, 0x2e, 0x64, + 0x69, 0x64, 0x3a, 0x63, 0x63, 0x64, 0x34, 0x37, 0x32, 0x33, 0x36, 0x2d, + 0x66, 0x37, 0x31, 0x33, 0x2d, 0x34, 0x64, 0x33, 0x62, 0x2d, 0x38, 0x65, + 0x33, 0x63, 0x2d, 0x66, 0x37, 0x38, 0x37, 0x33, 0x63, 0x36, 0x65, 0x65, + 0x65, 0x63, 0x34, 0x22, 0x20, 0x64, 0x63, 0x3a, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x3d, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x6a, 0x70, + 0x65, 0x67, 0x22, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x3a, 0x41, 0x50, 0x49, + 0x3d, 0x22, 0x32, 0x2e, 0x30, 0x22, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x3a, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3d, 0x22, 0x4c, 0x69, + 0x6e, 0x75, 0x78, 0x22, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x3a, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x3d, 0x22, 0x31, 0x37, 0x32, + 0x30, 0x37, 0x32, 0x37, 0x32, 0x36, 0x30, 0x38, 0x31, 0x34, 0x39, 0x32, + 0x39, 0x22, 0x20, 0x47, 0x49, 0x4d, 0x50, 0x3a, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x32, 0x2e, 0x31, 0x30, 0x2e, 0x33, 0x30, + 0x22, 0x20, 0x78, 0x6d, 0x70, 0x3a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, + 0x72, 0x54, 0x6f, 0x6f, 0x6c, 0x3d, 0x22, 0x47, 0x49, 0x4d, 0x50, 0x20, + 0x32, 0x2e, 0x31, 0x30, 0x22, 0x3e, 0x20, 0x3c, 0x78, 0x6d, 0x70, 0x4d, + 0x4d, 0x3a, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x3e, 0x20, 0x3c, + 0x72, 0x64, 0x66, 0x3a, 0x53, 0x65, 0x71, 0x3e, 0x20, 0x3c, 0x72, 0x64, + 0x66, 0x3a, 0x6c, 0x69, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x73, 0x61, 0x76, 0x65, 0x64, + 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x3d, 0x22, 0x2f, 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, + 0x74, 0x3a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, + 0x3d, 0x22, 0x78, 0x6d, 0x70, 0x2e, 0x69, 0x69, 0x64, 0x3a, 0x34, 0x38, + 0x37, 0x31, 0x66, 0x34, 0x34, 0x65, 0x2d, 0x31, 0x31, 0x30, 0x64, 0x2d, + 0x34, 0x33, 0x37, 0x63, 0x2d, 0x61, 0x35, 0x66, 0x65, 0x2d, 0x34, 0x34, + 0x38, 0x32, 0x35, 0x63, 0x39, 0x36, 0x37, 0x31, 0x37, 0x34, 0x22, 0x20, + 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, + 0x72, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x47, 0x69, 0x6d, + 0x70, 0x20, 0x32, 0x2e, 0x31, 0x30, 0x20, 0x28, 0x4c, 0x69, 0x6e, 0x75, + 0x78, 0x29, 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x77, 0x68, + 0x65, 0x6e, 0x3d, 0x22, 0x32, 0x30, 0x32, 0x34, 0x2d, 0x30, 0x37, 0x2d, + 0x31, 0x31, 0x54, 0x30, 0x39, 0x3a, 0x31, 0x38, 0x3a, 0x32, 0x36, 0x2b, + 0x30, 0x32, 0x3a, 0x30, 0x30, 0x22, 0x2f, 0x3e, 0x20, 0x3c, 0x72, 0x64, + 0x66, 0x3a, 0x6c, 0x69, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x22, 0x73, 0x61, 0x76, 0x65, 0x64, + 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x3d, 0x22, 0x2f, 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, + 0x74, 0x3a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, + 0x3d, 0x22, 0x78, 0x6d, 0x70, 0x2e, 0x69, 0x69, 0x64, 0x3a, 0x37, 0x66, + 0x65, 0x34, 0x31, 0x30, 0x32, 0x66, 0x2d, 0x64, 0x30, 0x61, 0x64, 0x2d, + 0x34, 0x31, 0x31, 0x37, 0x2d, 0x39, 0x31, 0x61, 0x66, 0x2d, 0x64, 0x36, + 0x38, 0x32, 0x34, 0x62, 0x37, 0x38, 0x31, 0x38, 0x38, 0x32, 0x22, 0x20, + 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, + 0x72, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3d, 0x22, 0x47, 0x69, 0x6d, + 0x70, 0x20, 0x32, 0x2e, 0x31, 0x30, 0x20, 0x28, 0x4c, 0x69, 0x6e, 0x75, + 0x78, 0x29, 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3a, 0x77, 0x68, + 0x65, 0x6e, 0x3d, 0x22, 0x32, 0x30, 0x32, 0x34, 0x2d, 0x30, 0x37, 0x2d, + 0x31, 0x31, 0x54, 0x32, 0x31, 0x3a, 0x34, 0x37, 0x3a, 0x34, 0x30, 0x2b, + 0x30, 0x32, 0x3a, 0x30, 0x30, 0x22, 0x2f, 0x3e, 0x20, 0x3c, 0x2f, 0x72, + 0x64, 0x66, 0x3a, 0x53, 0x65, 0x71, 0x3e, 0x20, 0x3c, 0x2f, 0x78, 0x6d, + 0x70, 0x4d, 0x4d, 0x3a, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x3e, + 0x20, 0x3c, 0x2f, 0x72, 0x64, 0x66, 0x3a, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3e, 0x20, 0x3c, 0x2f, 0x72, 0x64, + 0x66, 0x3a, 0x52, 0x44, 0x46, 0x3e, 0x20, 0x3c, 0x2f, 0x78, 0x3a, 0x78, + 0x6d, 0x70, 0x6d, 0x65, 0x74, 0x61, 0x3e, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3c, 0x3f, 0x78, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x20, 0x65, 0x6e, 0x64, 0x3d, 0x22, 0x77, 0x22, 0x3f, 0x3e, 0xff, + 0xe2, 0x02, 0xb0, 0x49, 0x43, 0x43, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, + 0x4c, 0x45, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0xa0, 0x6c, 0x63, 0x6d, + 0x73, 0x04, 0x30, 0x00, 0x00, 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, + 0x20, 0x58, 0x59, 0x5a, 0x20, 0x07, 0xe8, 0x00, 0x07, 0x00, 0x0b, 0x00, + 0x13, 0x00, 0x2f, 0x00, 0x0d, 0x61, 0x63, 0x73, 0x70, 0x41, 0x50, 0x50, + 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x03, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, - 0x10, 0x03, 0x10, 0x00, 0x00, 0x01, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf6, 0xd6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, + 0x2d, 0x6c, 0x63, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x01, - 0x20, 0x00, 0x00, 0x04, 0x00, 0x09, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, - 0x07, 0x44, 0xb3, 0xcf, 0x2b, 0x05, 0x5c, 0x94, 0x92, 0x02, 0xc2, 0x42, - 0xc2, 0x14, 0x90, 0x0a, 0x93, 0x42, 0x0a, 0x82, 0x00, 0x24, 0x90, 0x0a, - 0x90, 0x41, 0x50, 0x08, 0x2a, 0x41, 0x06, 0x03, 0x56, 0x39, 0x25, 0xf5, - 0x7c, 0xbb, 0xdc, 0xa0, 0x00, 0x07, 0x9c, 0xea, 0x78, 0x2d, 0x90, 0x6c, - 0x1b, 0xe5, 0x8b, 0xd5, 0x8b, 0x19, 0x0b, 0x12, 0x50, 0x10, 0x01, 0x52, - 0x84, 0x02, 0x4b, 0x12, 0x48, 0x20, 0x02, 0x08, 0x11, 0x50, 0x41, 0x15, - 0x11, 0x52, 0xa6, 0x33, 0x01, 0x63, 0x93, 0xaf, 0x78, 0xc5, 0xed, 0x32, - 0x80, 0x00, 0xf0, 0x4e, 0xb8, 0xea, 0x92, 0xf1, 0x71, 0xc5, 0xc6, 0xba, - 0xc1, 0x29, 0x65, 0xa9, 0x52, 0xe4, 0x92, 0x85, 0xba, 0x42, 0xc2, 0x0a, - 0xad, 0x50, 0xb6, 0x41, 0x00, 0x90, 0x42, 0xd4, 0x90, 0x80, 0xb2, 0x90, - 0x58, 0xa2, 0xc0, 0x49, 0x5e, 0x46, 0xce, 0xe3, 0x5c, 0xb5, 0x9d, 0xa6, - 0x5f, 0x56, 0xe7, 0xa0, 0x00, 0xd7, 0x4f, 0x1a, 0xed, 0x9d, 0x34, 0xf3, - 0x4c, 0x6b, 0x8b, 0x96, 0x0b, 0x02, 0x53, 0x12, 0xe8, 0x4b, 0x27, 0x27, - 0x64, 0x84, 0x02, 0xc0, 0x82, 0x09, 0x20, 0xb2, 0xc2, 0x49, 0x00, 0xb1, - 0x52, 0x01, 0x20, 0x10, 0x01, 0x0b, 0x8e, 0x20, 0xa1, 0xe8, 0x1b, 0x9d, - 0xd2, 0xcd, 0xf9, 0x7d, 0x6f, 0x9e, 0x80, 0x03, 0x55, 0x3c, 0x9b, 0xb6, - 0x73, 0xc7, 0xcf, 0xfc, 0xf5, 0x92, 0xac, 0x92, 0x01, 0xa7, 0x2e, 0xdd, - 0x0a, 0x1b, 0x09, 0x62, 0x85, 0x89, 0x04, 0x00, 0x49, 0x52, 0x49, 0x20, - 0x12, 0x0a, 0x90, 0x49, 0x25, 0x48, 0x04, 0x95, 0x28, 0xb4, 0x8a, 0x9c, - 0xee, 0xa7, 0xaf, 0x6a, 0x66, 0x97, 0xd6, 0xf9, 0xe8, 0x00, 0x35, 0x0f, - 0x2a, 0xed, 0x8b, 0xc7, 0xcf, 0xfc, 0xf5, 0x9a, 0xac, 0x96, 0x2e, 0x60, - 0x5e, 0x32, 0x5b, 0x90, 0x0e, 0x66, 0xcb, 0xa5, 0x17, 0x85, 0x96, 0x0e, - 0x4e, 0xcc, 0x31, 0xa3, 0x2d, 0xec, 0xec, 0x3a, 0x9d, 0x73, 0x3a, 0x1c, - 0x9d, 0x95, 0x38, 0xe9, 0x60, 0xec, 0x16, 0x70, 0xd1, 0x89, 0x72, 0x27, - 0x3d, 0xa9, 0xd7, 0x33, 0xaa, 0x99, 0x53, 0x9a, 0xb3, 0x01, 0x06, 0x29, - 0x6a, 0x72, 0xf6, 0x7b, 0x4e, 0xe5, 0xa5, 0xf5, 0xae, 0x7a, 0x00, 0x0d, - 0x53, 0xca, 0xfb, 0x62, 0xd1, 0xf3, 0xff, 0x00, 0x3d, 0x66, 0xb3, 0x21, - 0x62, 0x4c, 0x2b, 0x8c, 0xca, 0x67, 0x4c, 0x6b, 0x72, 0xc9, 0x6a, 0xc7, - 0x2e, 0x91, 0xb6, 0x9a, 0x8b, 0x90, 0xd3, 0x8e, 0x77, 0x53, 0xad, 0x67, - 0x5b, 0xe9, 0x9e, 0xb3, 0xa6, 0xa2, 0xea, 0x4b, 0xc8, 0xd9, 0xa8, 0x6f, - 0xa6, 0x94, 0xbc, 0x95, 0x75, 0xec, 0xde, 0x5f, 0x53, 0x8b, 0x8e, 0x7f, - 0x53, 0x0c, 0x63, 0x31, 0x98, 0xe5, 0xe7, 0x75, 0x3d, 0x9f, 0x52, 0x92, - 0xfa, 0xd7, 0x3d, 0x00, 0x06, 0xb1, 0xe5, 0x3d, 0xb1, 0x96, 0x3e, 0x7e, - 0xe7, 0xac, 0xb6, 0x65, 0x2c, 0x58, 0xd6, 0x5b, 0x99, 0x10, 0x55, 0x6c, - 0x64, 0x45, 0x56, 0x5d, 0x43, 0x69, 0x35, 0x97, 0x42, 0x58, 0x3b, 0x0e, - 0xb3, 0xd6, 0xf3, 0xad, 0xfb, 0x33, 0x12, 0x71, 0x52, 0xf2, 0xb6, 0x5c, - 0xd7, 0x36, 0x13, 0x59, 0x77, 0xeb, 0x81, 0xcd, 0xca, 0x97, 0x39, 0x4b, - 0x06, 0x33, 0x12, 0xd0, 0xe7, 0xac, 0xf6, 0x9a, 0xd6, 0x3d, 0x6f, 0x9e, - 0x80, 0x03, 0x01, 0xe4, 0xbd, 0xb1, 0x9a, 0x3c, 0x07, 0x1a, 0xcc, 0x97, - 0x05, 0x8c, 0x4b, 0xaa, 0x6d, 0xa1, 0x74, 0xe3, 0x91, 0xa8, 0x4b, 0x13, - 0x5a, 0x12, 0xee, 0x26, 0xba, 0xef, 0xd9, 0xc2, 0xe6, 0xf3, 0xba, 0x9d, - 0x67, 0x3a, 0x1c, 0x82, 0x0e, 0x3d, 0x6a, 0x76, 0x3b, 0x38, 0xa3, 0x56, - 0x5c, 0xa9, 0xce, 0xea, 0x75, 0xfc, 0xeb, 0xb2, 0x6b, 0x3d, 0x7b, 0x37, - 0x96, 0xb2, 0xa5, 0x4a, 0x18, 0x65, 0xe7, 0x6c, 0xf6, 0xad, 0xcd, 0x79, - 0x7d, 0x6f, 0x9e, 0x80, 0x03, 0x59, 0x3c, 0x8b, 0xb6, 0x76, 0x63, 0xc1, - 0x31, 0xab, 0x99, 0x12, 0x41, 0x63, 0x8d, 0x5d, 0x59, 0x46, 0xdd, 0x9c, - 0x80, 0x49, 0x2c, 0x5a, 0xb0, 0x46, 0x42, 0xa5, 0xc9, 0xa8, 0x81, 0x04, - 0x82, 0x00, 0x2c, 0x63, 0x2c, 0x64, 0xac, 0x71, 0x25, 0x4a, 0x90, 0x41, - 0x86, 0x5e, 0x6e, 0xcf, 0x6d, 0xd3, 0x01, 0xea, 0xfc, 0xf4, 0x00, 0x1a, - 0xa9, 0xe3, 0xfd, 0xb3, 0xb7, 0x1e, 0x11, 0x8d, 0x4a, 0x66, 0x20, 0x18, - 0x96, 0xc5, 0x09, 0x00, 0xc8, 0x54, 0x02, 0x84, 0x92, 0x41, 0x05, 0x8a, - 0x02, 0xc5, 0x41, 0x63, 0x19, 0x62, 0x09, 0x24, 0x18, 0xca, 0x9b, 0x49, - 0x62, 0xa6, 0x23, 0x99, 0xaf, 0x6f, 0xad, 0x73, 0xd6, 0x79, 0xea, 0xa0, - 0x03, 0x54, 0xf2, 0x2e, 0xd8, 0xcf, 0x1e, 0x13, 0x8d, 0x5d, 0x2c, 0x5c, - 0xe3, 0x57, 0x8d, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x6e, 0xd6, 0x75, 0x20, 0x60, 0x5e, 0x59, 0x3d, 0xcf, - 0x4d, 0x53, 0xd6, 0x79, 0xea, 0xa0, 0x03, 0x01, 0xe3, 0xdd, 0xb1, 0x9e, - 0x3c, 0x27, 0x1a, 0xc8, 0x99, 0x0e, 0x4a, 0xb8, 0x29, 0x78, 0x79, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xed, - 0x4e, 0x1a, 0x4a, 0x18, 0x57, 0x97, 0xb3, 0xdc, 0xab, 0x50, 0xf5, 0xbe, - 0x7a, 0xa0, 0x00, 0xc0, 0x79, 0x07, 0x6c, 0x6c, 0x47, 0x83, 0x63, 0x59, - 0x53, 0x21, 0xc9, 0xd7, 0x05, 0x2f, 0x0b, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf9, 0xac, 0xf0, 0xd1, 0x06, - 0x23, 0x92, 0x3d, 0xd3, 0x4d, 0x73, 0xd6, 0xb9, 0xea, 0x80, 0x03, 0x09, - 0xe4, 0x7d, 0x71, 0xb4, 0x78, 0x0e, 0x35, 0x64, 0xcc, 0x72, 0x55, 0xc4, - 0x4b, 0xc0, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xbd, 0xea, 0x71, 0x32, 0x50, 0xc2, 0xbc, 0x92, 0x7b, 0xbe, - 0x9a, 0xe7, 0xac, 0xf3, 0xd6, 0x30, 0x01, 0x81, 0x3c, 0xa7, 0xae, 0x76, - 0x0f, 0x9f, 0xf1, 0xab, 0x26, 0x73, 0x92, 0xae, 0x22, 0x5e, 0xbd, 0x28, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xf5, - 0xa9, 0xc5, 0x49, 0x53, 0x01, 0xc8, 0x1e, 0xf9, 0xa6, 0x03, 0xd5, 0x39, - 0xea, 0x80, 0x03, 0x5c, 0xf2, 0xee, 0xb8, 0xc8, 0x7c, 0xfd, 0x8d, 0x66, - 0x4c, 0xd5, 0xbc, 0x71, 0x72, 0xf5, 0xd9, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x8d, 0x4e, 0x32, 0x4a, 0x98, - 0x97, 0x79, 0x3d, 0xfb, 0x53, 0x0a, 0xfa, 0x97, 0x3d, 0x63, 0x00, 0x18, - 0x4f, 0x2d, 0xeb, 0x8c, 0xa7, 0xcf, 0x78, 0xd6, 0x64, 0xc8, 0x72, 0x35, - 0xc6, 0xcb, 0xd6, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0xde, 0xb5, 0x38, 0x99, 0x20, 0xc2, 0x6f, 0x9f, 0x41, - 0xea, 0x55, 0x7d, 0x1f, 0x9e, 0xaa, 0x00, 0x31, 0x9e, 0x53, 0xd7, 0x1b, - 0x67, 0xcf, 0x18, 0xd6, 0x44, 0xcd, 0x5b, 0xe6, 0x94, 0xbd, 0x5e, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xdf, - 0x53, 0x8c, 0x92, 0x4c, 0x07, 0x22, 0x7d, 0x0d, 0xa4, 0x9d, 0xfb, 0x9e, - 0xaa, 0x00, 0x28, 0x79, 0x47, 0x5c, 0x6d, 0x9f, 0x3d, 0x63, 0x52, 0x99, - 0x8e, 0x42, 0xb5, 0x25, 0xea, 0xb2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xfa, 0x9c, 0x6c, 0x95, 0x31, 0x1c, - 0x89, 0xf4, 0x4e, 0x99, 0x4e, 0xef, 0xcf, 0x55, 0x00, 0x15, 0x3c, 0x9b, - 0xae, 0x37, 0xcf, 0x9e, 0x31, 0xa2, 0x67, 0xad, 0xf3, 0x56, 0x5e, 0xa9, - 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0xeb, 0x67, 0x1c, 0x92, 0x61, 0x39, 0x5a, 0xfa, 0x1e, 0xb3, 0x1d, 0xcf, - 0x9e, 0xaa, 0x00, 0x31, 0x9e, 0x53, 0xd7, 0x1c, 0x81, 0xf3, 0xc6, 0x2d, - 0x4c, 0xc6, 0xf5, 0x60, 0x97, 0xa9, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xba, 0xd9, 0xc7, 0xa0, 0xc2, 0x72, - 0xf5, 0xf4, 0x45, 0x64, 0x3b, 0x97, 0x3d, 0x54, 0x00, 0x54, 0xf2, 0x8e, - 0xb8, 0xe4, 0x0f, 0x9e, 0x71, 0x71, 0x2e, 0xca, 0x6e, 0x56, 0x09, 0x7a, - 0x9c, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3b, 0xa5, 0x9c, 0x7a, 0x54, 0xa2, 0xf3, 0x76, 0x7d, 0x0f, 0x59, 0x0e, - 0xdf, 0xcf, 0x55, 0x00, 0x15, 0x3c, 0x9f, 0xae, 0x39, 0x33, 0xe7, 0xdc, - 0x5d, 0x53, 0x29, 0xbb, 0x58, 0xe5, 0xea, 0x52, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x76, 0x68, 0xa5, 0x4c, - 0x47, 0x3b, 0x5f, 0x43, 0xd5, 0xce, 0xdd, 0xcf, 0x50, 0x00, 0x28, 0x79, - 0x57, 0x5c, 0x72, 0x47, 0xcf, 0xb8, 0xba, 0x6b, 0x99, 0x37, 0x6b, 0x1c, - 0xbd, 0x4a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1d, 0xca, 0xce, 0x3d, 0x2a, 0xb4, 0x39, 0xfb, 0x3e, 0x85, 0xac, - 0x87, 0x6e, 0xe7, 0xa8, 0x00, 0x18, 0xcf, 0x2c, 0xeb, 0x8e, 0x40, 0xf0, - 0x0c, 0xdd, 0x18, 0xca, 0x6f, 0x54, 0x4b, 0xd3, 0xe5, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xdc, 0xec, 0xe3, 0xd2, - 0xa6, 0x13, 0xb0, 0x57, 0xd0, 0xd5, 0x73, 0xb7, 0xf3, 0xd4, 0x00, 0x08, - 0x3c, 0x9f, 0xae, 0x39, 0x43, 0xe7, 0xcc, 0xdd, 0x38, 0xce, 0x6d, 0x54, - 0xcb, 0xd3, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xdc, 0xac, 0xd1, 0x4a, 0x18, 0x4e, 0xc5, 0x5f, 0x41, 0xd6, - 0x43, 0xb8, 0x73, 0xd5, 0x40, 0x04, 0x1e, 0x51, 0xd7, 0x1c, 0xa1, 0xf3, - 0xf6, 0x2e, 0x82, 0xe7, 0x4c, 0xe6, 0x55, 0xe9, 0xd2, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x16, 0x6a, 0x25, - 0x0c, 0x2b, 0xcf, 0x59, 0xf4, 0x2d, 0x5c, 0xee, 0x3c, 0xf5, 0x00, 0x02, - 0x0f, 0x2a, 0xeb, 0x8e, 0x48, 0xf9, 0xff, 0x00, 0x37, 0x8f, 0x97, 0x32, - 0x6c, 0xd5, 0xe5, 0xe9, 0xf2, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xee, 0x16, 0x69, 0xa5, 0x0c, 0x6b, 0xcd, 0x27, - 0xd0, 0x9a, 0x66, 0x3b, 0x9f, 0x3d, 0x54, 0x00, 0x54, 0xf2, 0xfe, 0xb8, - 0xdd, 0x3c, 0x03, 0x17, 0x8e, 0x33, 0x1b, 0x35, 0x96, 0x5e, 0x9d, 0x28, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xdf, - 0x66, 0xaa, 0x50, 0xd7, 0x5e, 0x72, 0xcf, 0xa0, 0x6a, 0xe7, 0x7a, 0xe7, - 0xaa, 0x80, 0x0c, 0x67, 0x99, 0xf5, 0xc6, 0xe1, 0xe0, 0x19, 0xbc, 0x74, - 0x66, 0x33, 0xd6, 0xcc, 0xbd, 0x2e, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xb6, 0xcc, 0x09, 0x80, 0xc4, 0xbc, - 0xf5, 0x9e, 0xf3, 0x65, 0xd7, 0xbf, 0xf3, 0xd4, 0x00, 0x0c, 0x67, 0x9a, - 0x75, 0xc6, 0xc1, 0xe0, 0xb9, 0xbc, 0x5c, 0x67, 0x32, 0x9b, 0x4b, 0xd3, - 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xdb, 0x2c, 0xc0, 0x98, 0x4c, 0x52, 0xf3, 0x76, 0x7b, 0xae, 0x92, 0x7a, - 0x2f, 0x3d, 0x58, 0x00, 0x41, 0xe6, 0x3d, 0x71, 0xb4, 0x78, 0x3e, 0x6f, - 0x0b, 0x1b, 0x06, 0x63, 0x71, 0x7a, 0x54, 0xa0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x65, 0x98, 0xd3, 0x01, 0xaf, - 0x2f, 0x3d, 0xa9, 0xed, 0xb5, 0x27, 0xa5, 0x73, 0xd5, 0xc0, 0x04, 0x9e, - 0x5b, 0xd7, 0x1b, 0x27, 0x87, 0x66, 0xf0, 0x52, 0xe5, 0x4d, 0x83, 0x72, - 0xde, 0x95, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xb5, 0xd9, 0x89, 0x35, 0xcc, 0x32, 0xf3, 0xfa, 0x9e, 0xd9, - 0x55, 0x3d, 0x43, 0x9e, 0xa4, 0x00, 0x0f, 0x34, 0xeb, 0x89, 0x3c, 0x53, - 0x37, 0xae, 0xcb, 0x9d, 0x33, 0xd6, 0xec, 0xbd, 0x26, 0x50, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xb2, 0xcc, 0x69, - 0xae, 0x60, 0x97, 0xb3, 0x6a, 0x7b, 0x0d, 0x41, 0xea, 0x1c, 0xf5, 0x70, - 0x00, 0x3c, 0xdb, 0xa6, 0x15, 0xe3, 0x59, 0xbd, 0x56, 0x5c, 0xe9, 0xb1, - 0x5b, 0xf2, 0xf4, 0x79, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x76, 0xbb, 0x2a, 0x9a, 0xeb, 0xaf, 0x1d, 0xa3, 0x53, - 0xd7, 0xab, 0x11, 0xeb, 0x3c, 0xf5, 0x00, 0x00, 0x79, 0xcf, 0x4c, 0xd2, - 0xcf, 0x25, 0xcd, 0xe9, 0x51, 0x98, 0xce, 0x72, 0x36, 0xf4, 0x7c, 0xd0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xae, - 0xc8, 0x4d, 0x55, 0xd7, 0x8e, 0xe1, 0xa9, 0xea, 0x9a, 0x44, 0x7a, 0xbf, - 0x3d, 0x00, 0x00, 0xf3, 0xde, 0x99, 0xd7, 0xb3, 0xcc, 0x33, 0x7a, 0x06, - 0x6e, 0x7b, 0x32, 0x9c, 0xa2, 0xf4, 0x59, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x9b, 0x2c, 0x9a, 0x4b, 0x86, - 0x3b, 0xce, 0xa7, 0xa5, 0x69, 0x78, 0xf5, 0x4e, 0x7a, 0x00, 0x01, 0xe7, - 0xfd, 0x33, 0xa3, 0x67, 0x44, 0x8f, 0x2f, 0xc6, 0xb3, 0xd9, 0x90, 0xe5, - 0x97, 0xa2, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xb4, 0x59, 0x91, 0x34, 0x57, 0x11, 0xdf, 0xec, 0xef, 0xda, - 0x9b, 0x12, 0xfa, 0xa7, 0x3d, 0x00, 0x00, 0xe8, 0x5b, 0xcf, 0x1f, 0xa9, - 0xd4, 0xe3, 0xc7, 0xf1, 0xac, 0xf6, 0x64, 0x39, 0x5b, 0x7a, 0x36, 0x68, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xcb, - 0x66, 0x64, 0xd2, 0x5c, 0x11, 0xe9, 0x3b, 0x9d, 0xbe, 0xce, 0x46, 0x5f, - 0x52, 0xe7, 0xa0, 0x00, 0x1d, 0x1f, 0x79, 0xe1, 0xf5, 0x38, 0x63, 0xc3, - 0x79, 0xeb, 0x35, 0x97, 0x39, 0x8b, 0x7a, 0x3e, 0x68, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xc5, 0x66, 0xe2, 0x71, - 0xc6, 0x09, 0x7d, 0x4b, 0x73, 0xb2, 0x59, 0xcc, 0x66, 0xfa, 0x76, 0x34, - 0x00, 0x03, 0xa4, 0xef, 0x3c, 0x1e, 0xa6, 0x03, 0xe7, 0xee, 0x7a, 0xbd, - 0x5c, 0xe6, 0xab, 0xa3, 0xe6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xec, 0x76, 0x6d, 0xa7, 0x1e, 0xb8, 0x23, 0xd7, - 0xb7, 0x9e, 0x56, 0xb9, 0xec, 0xdf, 0x4a, 0xc6, 0x80, 0x00, 0x74, 0xed, - 0xe7, 0xad, 0xee, 0x6c, 0xc9, 0xf3, 0xbe, 0x37, 0x84, 0xc8, 0x76, 0x2b, - 0x3a, 0x5e, 0x6d, 0xa8, 0x48, 0x00, 0x90, 0x08, 0x24, 0x02, 0x48, 0x24, - 0x92, 0x09, 0x20, 0x92, 0x40, 0x00, 0x92, 0x01, 0xcc, 0x56, 0xbc, 0x98, - 0x96, 0xa7, 0xb2, 0x6f, 0x39, 0x8e, 0xd3, 0x9b, 0xe8, 0xb8, 0xd0, 0x00, - 0x0e, 0xa9, 0xac, 0xf5, 0x0e, 0x99, 0xde, 0x97, 0xc3, 0xf3, 0x7a, 0xf6, - 0x6d, 0xc9, 0xac, 0xa4, 0xa4, 0x2c, 0xa4, 0x2d, 0xca, 0xa0, 0xb1, 0x55, - 0x84, 0x2d, 0x48, 0x24, 0xb1, 0x00, 0x16, 0x09, 0x25, 0x88, 0x24, 0x17, - 0x20, 0xb1, 0x45, 0xa2, 0x54, 0xc6, 0xbb, 0x67, 0xab, 0x6f, 0x39, 0x0e, - 0xe9, 0x9b, 0xdf, 0xf1, 0xa0, 0x00, 0x1d, 0x6b, 0x53, 0xa2, 0xf4, 0xc7, - 0x21, 0x2f, 0x99, 0xcb, 0xe7, 0x98, 0xb2, 0x5c, 0xb5, 0x59, 0x2b, 0x28, - 0x8a, 0xac, 0x58, 0x9a, 0xb1, 0x48, 0x55, 0x89, 0x04, 0x02, 0x4b, 0x15, - 0x09, 0x2b, 0x24, 0x96, 0x48, 0x2c, 0x41, 0x04, 0x92, 0xb4, 0x4a, 0xae, - 0x33, 0x9f, 0xb3, 0xd0, 0x75, 0x2a, 0x7a, 0x2e, 0x35, 0xdd, 0xb3, 0x40, - 0x00, 0x70, 0xb6, 0x79, 0xaf, 0x5c, 0x72, 0x51, 0xd6, 0x97, 0xc5, 0xb9, - 0xea, 0xe5, 0xc9, 0xa9, 0x04, 0x02, 0xb1, 0x62, 0xd5, 0x00, 0x82, 0xe4, - 0x95, 0x20, 0x10, 0x49, 0x60, 0x54, 0xb9, 0x42, 0xc5, 0x81, 0x74, 0x14, - 0x5b, 0x95, 0x20, 0xc6, 0x77, 0x1b, 0x3b, 0x4e, 0xa6, 0x33, 0xd6, 0x39, - 0xeb, 0xb5, 0x4a, 0x00, 0x03, 0x4d, 0x3c, 0x8f, 0xb6, 0x39, 0x02, 0xf2, - 0xfc, 0xfb, 0x8d, 0x6b, 0x45, 0xcb, 0x02, 0x01, 0x7a, 0x82, 0xc0, 0x10, - 0x44, 0x4d, 0x09, 0x24, 0xa4, 0x4d, 0x49, 0x00, 0x92, 0xc0, 0x92, 0xe0, - 0x10, 0x92, 0xb2, 0x94, 0x58, 0x2a, 0x7a, 0x06, 0xa6, 0xe5, 0x99, 0x0f, - 0x6e, 0xe7, 0xae, 0x66, 0x50, 0x00, 0x03, 0xc7, 0x3b, 0x62, 0xe9, 0xb9, - 0x1e, 0x51, 0x9d, 0x74, 0x9c, 0xdb, 0x02, 0xe4, 0x93, 0x48, 0xbd, 0x40, - 0x2a, 0x20, 0x5a, 0xab, 0x16, 0xa0, 0x00, 0x82, 0x41, 0x25, 0x82, 0x14, - 0x64, 0x48, 0x04, 0x95, 0x5a, 0x9b, 0xa7, 0x71, 0xd4, 0xd8, 0x32, 0x1f, - 0x42, 0x73, 0xd6, 0x70, 0x00, 0x00, 0xf2, 0xfe, 0xb8, 0xe1, 0xec, 0xd9, - 0x38, 0x99, 0x7c, 0x47, 0x9e, 0xee, 0x97, 0x05, 0xc9, 0xaa, 0xc4, 0xd2, - 0x26, 0xab, 0x02, 0x0b, 0x55, 0xca, 0x96, 0x2a, 0x22, 0xd4, 0x29, 0x13, - 0x56, 0x05, 0x81, 0x62, 0x12, 0xc5, 0x54, 0x96, 0x5a, 0x1d, 0x86, 0xce, - 0x66, 0xae, 0x73, 0x47, 0xbf, 0xf3, 0xd4, 0x00, 0x00, 0x07, 0x4a, 0xde, - 0x7a, 0x36, 0xf3, 0x98, 0xc9, 0x1e, 0x41, 0x8d, 0xf0, 0x31, 0x70, 0x58, - 0x91, 0x48, 0x12, 0x4d, 0x44, 0x4d, 0x40, 0x8b, 0x54, 0x44, 0x52, 0x20, - 0xc9, 0x55, 0x05, 0xca, 0x83, 0x21, 0x04, 0x96, 0x09, 0x8d, 0x46, 0xc1, - 0xd9, 0xf5, 0x32, 0x90, 0x7a, 0x2c, 0xbe, 0xbd, 0x8a, 0x00, 0x00, 0x0e, - 0x22, 0xcf, 0x24, 0xeb, 0x81, 0x90, 0xe0, 0x65, 0xf2, 0x8e, 0x7b, 0xba, - 0x49, 0x24, 0x99, 0x2a, 0xb1, 0x05, 0xa8, 0x09, 0x20, 0x98, 0x54, 0x94, - 0x26, 0x26, 0xa0, 0x42, 0xb2, 0x02, 0x4a, 0x82, 0xc1, 0x2a, 0xb2, 0x41, - 0xcd, 0xd9, 0xca, 0x18, 0xcb, 0x1e, 0xe9, 0x9b, 0xdd, 0xa5, 0x00, 0x00, - 0x04, 0x1e, 0x2b, 0xdb, 0x1c, 0x6a, 0x5c, 0xda, 0x3c, 0xa3, 0x1b, 0xe1, - 0x72, 0x92, 0x4c, 0x84, 0x12, 0x4d, 0x49, 0x58, 0x82, 0x40, 0x2d, 0x56, - 0x20, 0xa8, 0x04, 0x12, 0x49, 0x24, 0x82, 0x48, 0x05, 0x8a, 0x1b, 0x07, - 0x60, 0xb0, 0x49, 0xb6, 0x7d, 0x37, 0x8d, 0x6c, 0x80, 0x00, 0x00, 0x1d, - 0x07, 0x79, 0xf3, 0x5d, 0xc9, 0x37, 0x8e, 0x32, 0x3c, 0xa7, 0x9e, 0xe5, - 0x24, 0x16, 0x2c, 0x01, 0x24, 0x10, 0x48, 0x2d, 0x48, 0x0a, 0x14, 0x8b, - 0x93, 0x40, 0x58, 0xc7, 0x13, 0x53, 0x0a, 0x98, 0x9a, 0xe5, 0xec, 0xda, - 0x2e, 0x64, 0x3d, 0x0e, 0x5f, 0x6c, 0xcd, 0x00, 0x00, 0x00, 0x1a, 0x76, - 0x78, 0x17, 0x4c, 0xeb, 0x1b, 0xf5, 0xb5, 0x1e, 0x77, 0x9b, 0xd6, 0x73, - 0xa9, 0x41, 0x62, 0x4b, 0x15, 0x00, 0x92, 0x0c, 0x84, 0x12, 0x54, 0x82, - 0xf5, 0x58, 0x82, 0xe5, 0x0b, 0x16, 0x20, 0x90, 0x4d, 0x49, 0xb4, 0x73, - 0x16, 0x41, 0x26, 0x73, 0xe8, 0xec, 0xde, 0xc3, 0x28, 0x00, 0x00, 0x00, - 0x1e, 0x61, 0xbc, 0xf9, 0xc6, 0xa6, 0x53, 0x76, 0xb5, 0xe3, 0xca, 0xf9, - 0xea, 0x81, 0x65, 0x2c, 0x41, 0x24, 0x12, 0x58, 0x00, 0x49, 0x04, 0x12, - 0x0a, 0x97, 0x24, 0x92, 0x01, 0x72, 0xa0, 0xb5, 0x72, 0xf6, 0x6f, 0x10, - 0x54, 0xef, 0xf2, 0xfb, 0xc6, 0x68, 0x00, 0x00, 0x00, 0x03, 0x51, 0x3c, - 0x03, 0xae, 0x74, 0x4d, 0x83, 0x74, 0xe9, 0x19, 0xbd, 0x57, 0x3a, 0x94, - 0x2c, 0xa4, 0x90, 0x49, 0x04, 0x82, 0xc4, 0x02, 0x01, 0x72, 0xa0, 0x16, - 0x24, 0x00, 0x58, 0x1b, 0x35, 0xcc, 0x59, 0x90, 0xc6, 0x6c, 0x1f, 0x4b, - 0xe6, 0xf3, 0x72, 0x80, 0x00, 0x00, 0x00, 0x07, 0x44, 0xd4, 0xf1, 0xed, - 0xe6, 0xa7, 0x26, 0x6b, 0x1e, 0x69, 0xcf, 0x58, 0x56, 0x53, 0x29, 0x40, - 0x09, 0x04, 0x12, 0x42, 0xca, 0x00, 0x05, 0x88, 0x2c, 0x09, 0x2c, 0x54, - 0x19, 0x0e, 0x46, 0xb6, 0xec, 0x03, 0xd6, 0x25, 0xf6, 0x5c, 0xd0, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x78, 0x6f, 0x4c, 0xf5, 0x03, 0x7a, 0xcd, 0x93, - 0xa3, 0xe6, 0xf5, 0xdc, 0xea, 0xc8, 0x04, 0xa9, 0x24, 0x10, 0x41, 0x60, - 0x40, 0x20, 0x92, 0x41, 0x25, 0x81, 0x00, 0xb1, 0x9e, 0xb9, 0x2a, 0xc8, - 0x83, 0x9f, 0x97, 0xe9, 0x6c, 0xdd, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe3, 0x6c, 0xf9, 0xf7, 0x73, 0x4c, 0xdd, 0xb3, 0x46, 0x5f, 0x3e, 0xc5, - 0xaa, 0xc8, 0x25, 0x24, 0x15, 0x24, 0x00, 0x42, 0x92, 0x56, 0x12, 0xc4, - 0x82, 0x48, 0x2c, 0x0b, 0x9b, 0xd5, 0xb8, 0x2c, 0xcc, 0xbf, 0x4a, 0x65, - 0xd9, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xfa, 0x9e, 0x1d, - 0xa9, 0x9a, 0xcc, 0xa7, 0x42, 0xc6, 0xb8, 0xe9, 0x44, 0x90, 0x92, 0xa4, - 0x28, 0x24, 0x90, 0x49, 0x55, 0x92, 0x50, 0x42, 0xca, 0x64, 0x20, 0x82, - 0x4b, 0x9c, 0x95, 0x65, 0x24, 0xf7, 0x18, 0xf5, 0x39, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf2, 0xed, 0xcf, 0x2d, 0xb3, 0x6e, 0xce, 0xb9, - 0x9b, 0xd5, 0xf3, 0xa8, 0x24, 0x10, 0x4a, 0x42, 0xca, 0x16, 0x09, 0x42, - 0xc0, 0x09, 0x62, 0x49, 0x21, 0x6e, 0x82, 0x0d, 0x83, 0x90, 0xab, 0x9e, - 0x88, 0x7b, 0xfe, 0x6c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, - 0xf0, 0xed, 0xe7, 0xa8, 0xd6, 0x91, 0xd3, 0x71, 0x71, 0xa8, 0x82, 0x40, - 0x00, 0x82, 0x41, 0x24, 0x21, 0x6c, 0x82, 0x41, 0x25, 0x8b, 0x1b, 0x35, - 0xbe, 0x76, 0x03, 0xe9, 0xbc, 0xdd, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x35, 0x4f, 0x9f, 0xba, 0x67, 0xae, 0x9d, 0x47, 0x37, 0x5e, - 0x5a, 0x92, 0x01, 0x00, 0x90, 0x41, 0x20, 0x16, 0x20, 0x94, 0xb0, 0x00, - 0xc8, 0x6f, 0x57, 0x2c, 0x7d, 0x37, 0x97, 0x3a, 0xa0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x67, 0xce, 0x5a, 0x9d, 0x42, 0x5d, - 0x19, 0x60, 0x80, 0x08, 0x04, 0x95, 0x24, 0x12, 0x90, 0xb2, 0x48, 0x24, - 0x90, 0x96, 0x33, 0x1b, 0xf5, 0xf4, 0x8c, 0x77, 0x99, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x75, 0x9f, 0x33, 0xd7, 0x0f, - 0x2d, 0x01, 0x24, 0x10, 0x00, 0x20, 0x12, 0x49, 0x05, 0x89, 0x04, 0x92, - 0x96, 0x5c, 0xe9, 0xee, 0x67, 0xb2, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x92, 0xea, 0x7c, 0xfd, 0x1a, 0xeb, 0x04, - 0x12, 0x08, 0x20, 0x92, 0x00, 0x24, 0x90, 0x49, 0x62, 0x41, 0x63, 0xd1, - 0x93, 0xe9, 0x69, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x07, 0xce, 0x1a, 0x9e, 0x5d, 0x2d, 0x48, 0x20, 0x00, 0x40, - 0x24, 0x00, 0x58, 0x92, 0x41, 0x63, 0x9c, 0x4f, 0xac, 0xa5, 0xe4, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x3e, - 0x4d, 0xd4, 0xeb, 0x92, 0x88, 0x04, 0x10, 0x09, 0x00, 0x12, 0x48, 0x2c, - 0x0c, 0xc9, 0xf4, 0xf9, 0xdf, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x45, 0x9f, 0x2c, 0x18, 0x56, 0x00, - 0x04, 0x12, 0x49, 0x04, 0x82, 0x49, 0x04, 0x9e, 0xb5, 0x67, 0xd0, 0xd9, - 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xe7, 0x5d, 0x4f, 0x26, 0x94, 0x00, 0x00, 0x00, 0x49, 0x29, 0x24, - 0x2f, 0x2e, 0x9f, 0x58, 0x47, 0x34, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3a, 0x7c, 0xd3, 0x5a, 0x04, - 0x96, 0x2e, 0x5c, 0xb1, 0x72, 0xe4, 0x92, 0xb7, 0x41, 0x27, 0xab, 0x9e, - 0x9f, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc4, - 0x00, 0x34, 0x10, 0x00, 0x01, 0x02, 0x03, 0x05, 0x06, 0x04, 0x07, 0x01, - 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, - 0x11, 0x05, 0x06, 0x10, 0x12, 0x21, 0x13, 0x14, 0x20, 0x31, 0x35, 0x41, - 0x22, 0x32, 0x34, 0x40, 0x15, 0x16, 0x23, 0x24, 0x25, 0x30, 0x33, 0x42, - 0x36, 0x50, 0x60, 0x43, 0xff, 0xda, 0x00, 0x08, 0x01, 0x01, 0x00, 0x01, - 0x05, 0x02, 0xff, 0x00, 0xc4, 0xd1, 0x50, 0xac, 0xa5, 0x65, 0x2b, 0x29, - 0x59, 0x4a, 0xca, 0x56, 0x52, 0xb2, 0x95, 0x94, 0xac, 0xa5, 0x50, 0xaa, - 0x15, 0x42, 0xa8, 0xb2, 0x95, 0x94, 0xac, 0xa5, 0x50, 0xaa, 0x15, 0x43, - 0xfa, 0xed, 0x7b, 0xdb, 0x2b, 0x66, 0xba, 0x35, 0xf4, 0x9f, 0x8a, 0xef, - 0x99, 0xed, 0x17, 0x2f, 0x98, 0x6d, 0x02, 0xbe, 0x3b, 0x3e, 0x57, 0xc7, - 0x27, 0x97, 0xc6, 0xe7, 0xd7, 0xc6, 0x67, 0xd7, 0xc6, 0x27, 0x8a, 0xf8, - 0xbc, 0xf2, 0xf8, 0xc4, 0xf2, 0xf8, 0xc4, 0xf2, 0xf8, 0xbc, 0xf2, 0xf8, - 0xb4, 0xea, 0xf8, 0xac, 0xea, 0xf8, 0x9c, 0xda, 0xf8, 0x94, 0xda, 0xf8, - 0x8c, 0xda, 0xdf, 0xe6, 0x96, 0xfb, 0x30, 0xb7, 0xc8, 0xeb, 0x7b, 0x8e, - 0xb7, 0xb8, 0xcb, 0x7a, 0x8c, 0xb7, 0x98, 0xab, 0x78, 0x88, 0x8c, 0xcc, - 0x54, 0x26, 0x22, 0xad, 0xe2, 0x21, 0x46, 0x3c, 0x55, 0xb7, 0x88, 0xb6, - 0xf1, 0x16, 0xdd, 0xeb, 0x6c, 0xf5, 0xb5, 0x7a, 0xdb, 0x3d, 0x6d, 0xa2, - 0x2d, 0xab, 0xd3, 0xa6, 0x1e, 0x11, 0x9c, 0x8a, 0xd3, 0x2d, 0x78, 0xed, - 0x09, 0x57, 0x58, 0x97, 0xaa, 0x15, 0xa4, 0x78, 0xef, 0x6d, 0xb2, 0xf9, - 0x58, 0x44, 0x1a, 0xf2, 0x2c, 0x7a, 0x11, 0x5a, 0x06, 0xdd, 0xa1, 0x6f, - 0x2d, 0x42, 0x61, 0x8b, 0x6e, 0xc4, 0x23, 0x31, 0x6d, 0x58, 0xb6, 0xcc, - 0x46, 0x34, 0x3a, 0xed, 0x58, 0xb6, 0xcc, 0x5b, 0x66, 0x2d, 0xbb, 0x51, - 0x99, 0x86, 0x11, 0x9a, 0x86, 0x16, 0xf7, 0x0d, 0x6f, 0x70, 0xd6, 0xf7, - 0x0d, 0x6f, 0x50, 0xd6, 0xf5, 0x0d, 0x09, 0xb8, 0x61, 0x6f, 0x90, 0xd6, - 0xfb, 0x0d, 0x6f, 0xb0, 0xd6, 0xfb, 0x0d, 0x6f, 0xb0, 0xd6, 0xfc, 0xc0, - 0xb7, 0xe8, 0x6b, 0x7f, 0x62, 0xdf, 0xe1, 0xad, 0xfe, 0x1a, 0xdf, 0x98, - 0xb7, 0xd6, 0x15, 0xbe, 0xb1, 0x6f, 0xac, 0x46, 0x3b, 0x5c, 0x8e, 0xa8, - 0x31, 0x41, 0x84, 0x55, 0xdf, 0xb4, 0x1d, 0x3b, 0x29, 0xc5, 0x68, 0x56, - 0x72, 0x66, 0x3c, 0xad, 0x03, 0x9b, 0x44, 0xf8, 0xda, 0xe7, 0x71, 0x59, - 0x8a, 0xce, 0xe5, 0x9c, 0xa2, 0xf7, 0x2d, 0xab, 0xc2, 0xdb, 0x44, 0x5b, - 0x67, 0xad, 0xa3, 0x96, 0xd5, 0xeb, 0x6a, 0xe5, 0xb6, 0x7a, 0xda, 0xbd, - 0x6d, 0x1c, 0x56, 0x77, 0x2c, 0xce, 0x59, 0x9c, 0xb3, 0x15, 0x99, 0xcb, - 0x39, 0x59, 0xdc, 0xb3, 0x15, 0x98, 0xac, 0xee, 0x55, 0x2a, 0xa5, 0x54, - 0xaa, 0x95, 0x52, 0xb5, 0x55, 0x28, 0x55, 0x66, 0x2a, 0xa5, 0x66, 0x2b, - 0x68, 0x54, 0xac, 0xc0, 0xcd, 0x2d, 0x2d, 0xb4, 0x6b, 0x25, 0x95, 0xde, - 0x26, 0x05, 0xa5, 0xc3, 0x32, 0x72, 0xcb, 0x35, 0x95, 0x11, 0x25, 0xb4, - 0xb4, 0x63, 0xd2, 0x3f, 0x0c, 0x47, 0xe5, 0x69, 0x35, 0x40, 0xd1, 0x43, - 0xf1, 0xb2, 0x9a, 0x53, 0x1a, 0x2e, 0x42, 0x98, 0x53, 0x1a, 0x2c, 0xba, - 0x2a, 0x6b, 0x45, 0x45, 0x44, 0x11, 0xc6, 0x8a, 0x8b, 0x2d, 0x11, 0x54, - 0x4e, 0xc2, 0xc2, 0x8f, 0xb4, 0x14, 0x56, 0x51, 0x22, 0xd3, 0xe1, 0x9a, - 0xf4, 0xb0, 0xa8, 0xa6, 0xbc, 0x12, 0x87, 0xc6, 0xfe, 0x6a, 0x9c, 0x13, - 0x3f, 0xd1, 0xb0, 0x44, 0x26, 0x6c, 0x44, 0x45, 0x67, 0x9f, 0xb8, 0xe7, - 0x85, 0x31, 0xe4, 0xb4, 0x5a, 0x61, 0x4c, 0x7b, 0xd5, 0x76, 0xaa, 0xa6, - 0x15, 0x08, 0x61, 0x5a, 0x2a, 0x8c, 0x3b, 0x62, 0x55, 0x8e, 0xfa, 0x4d, - 0x53, 0x2b, 0x6c, 0xde, 0xa7, 0xc3, 0x37, 0xe9, 0x61, 0x82, 0xa7, 0xaa, - 0x6c, 0xf6, 0xe0, 0x11, 0x1a, 0x80, 0xa6, 0x46, 0x58, 0x44, 0x97, 0x23, - 0x11, 0xe5, 0x66, 0x72, 0x63, 0x8c, 0x37, 0x48, 0xb7, 0x69, 0x01, 0x46, - 0x67, 0xdb, 0x66, 0x70, 0x59, 0xdc, 0xac, 0xe1, 0xb4, 0x9d, 0x9c, 0xab, - 0x62, 0xe6, 0x29, 0xb1, 0x08, 0x50, 0x5b, 0xb4, 0x59, 0x8a, 0xd5, 0x59, - 0xad, 0xcd, 0x3b, 0x3a, 0x32, 0xc5, 0xd7, 0x06, 0x00, 0x24, 0x62, 0x45, - 0x2f, 0x34, 0x29, 0x91, 0x4b, 0x14, 0x16, 0xd6, 0x2b, 0xcd, 0x5e, 0xa1, - 0xbf, 0x2b, 0x9c, 0xcc, 0xa5, 0x1c, 0x6c, 0x93, 0xf7, 0xaf, 0x56, 0x6f, - 0x52, 0xe1, 0x9a, 0xf4, 0xb0, 0x35, 0x74, 0xf7, 0xa1, 0xe4, 0x50, 0x15, - 0x54, 0xc2, 0x68, 0xfd, 0xb4, 0xac, 0x36, 0xba, 0x0d, 0x00, 0x59, 0xdc, - 0x14, 0xc7, 0x8a, 0x0d, 0x9f, 0xfc, 0x28, 0x83, 0xcb, 0x44, 0x4f, 0x1c, - 0xbc, 0x83, 0x03, 0xa3, 0x87, 0x16, 0xa9, 0xef, 0xeb, 0x9e, 0x1b, 0x65, - 0xa3, 0x3d, 0x8e, 0x56, 0x71, 0xfa, 0x03, 0x9c, 0x49, 0xa0, 0x62, 0x4b, - 0x44, 0x31, 0xa2, 0x12, 0x54, 0x78, 0x94, 0x10, 0xa1, 0xed, 0x1d, 0x31, - 0xe1, 0x97, 0x97, 0x83, 0xb4, 0x40, 0xa9, 0xa8, 0x59, 0x45, 0x9a, 0x73, - 0xb1, 0xde, 0x78, 0xd3, 0x0c, 0x31, 0xa2, 0x16, 0xba, 0x23, 0xfc, 0x58, - 0x53, 0x43, 0xaa, 0x2a, 0xc5, 0x66, 0x79, 0xf8, 0x9a, 0x0b, 0x3f, 0xa8, - 0xf0, 0xcc, 0x8a, 0xcb, 0x41, 0x56, 0x87, 0xa3, 0xee, 0x06, 0x01, 0x15, - 0x35, 0xe9, 0xe4, 0xfd, 0x38, 0x5d, 0xa3, 0x7a, 0x4b, 0x3b, 0xf8, 0xd5, - 0x53, 0x47, 0x7f, 0x1b, 0x3f, 0xd4, 0x1d, 0x55, 0xa1, 0xfd, 0x36, 0x2e, - 0x2c, 0x85, 0x0f, 0x6b, 0x12, 0x54, 0x65, 0x8d, 0xdd, 0xf2, 0x7b, 0x37, - 0xcb, 0x30, 0x40, 0x8a, 0xf8, 0x99, 0x5b, 0xab, 0xdc, 0xc1, 0xb3, 0x11, - 0xc6, 0x79, 0x39, 0x38, 0xb9, 0x42, 0x98, 0x8a, 0x0c, 0x2b, 0x2c, 0x65, - 0x51, 0x3c, 0xf1, 0x65, 0xdf, 0x04, 0x4b, 0x42, 0x11, 0x30, 0x28, 0xa3, - 0x85, 0x85, 0xd4, 0xa3, 0x8f, 0x15, 0x9e, 0x7f, 0x21, 0xc3, 0x1f, 0xf8, - 0x40, 0xd4, 0xcf, 0x93, 0xb8, 0xd3, 0x51, 0x8f, 0x69, 0x91, 0xf6, 0xb0, - 0x26, 0x76, 0x30, 0xdb, 0x16, 0xa9, 0xd1, 0x43, 0x44, 0x49, 0x9c, 0xf0, - 0xec, 0xef, 0xe3, 0x55, 0xdf, 0xff, 0x00, 0x84, 0x87, 0xa8, 0xaa, 0xb4, - 0x07, 0x8a, 0x03, 0xb2, 0xca, 0x4c, 0x40, 0x30, 0x22, 0xca, 0xbb, 0x78, - 0x71, 0xe6, 0x5e, 0xe2, 0x6c, 0xe6, 0xe7, 0x9d, 0x9e, 0x68, 0x69, 0x6b, - 0x8b, 0x4e, 0xaa, 0x5c, 0x86, 0xc9, 0x46, 0x96, 0x30, 0xcd, 0x5c, 0xa1, - 0xc2, 0x2f, 0x52, 0xc2, 0x91, 0x5e, 0x3c, 0x73, 0x00, 0x44, 0x98, 0x6e, - 0xd2, 0x5a, 0x2e, 0x98, 0x15, 0x4c, 0x2c, 0x4e, 0xa3, 0x19, 0x48, 0x8f, - 0xc8, 0x70, 0xcc, 0xfa, 0x68, 0x0e, 0x39, 0xad, 0x0f, 0x46, 0x79, 0x8c, - 0x29, 0x83, 0xbc, 0x4d, 0x7c, 0xb9, 0x5a, 0x85, 0x42, 0x53, 0x25, 0xca, - 0x60, 0xd9, 0xb5, 0x00, 0x86, 0x60, 0xb3, 0x38, 0x2a, 0x22, 0xf7, 0xd0, - 0xbc, 0xb8, 0x67, 0x70, 0x0d, 0x73, 0xd7, 0x89, 0x6a, 0xb3, 0x90, 0xb3, - 0x15, 0x5d, 0x73, 0x22, 0x4b, 0x85, 0x72, 0x9c, 0xc7, 0x0a, 0x9a, 0xed, - 0x1e, 0xbb, 0x97, 0x3a, 0xb5, 0x27, 0x03, 0x8d, 0x89, 0xd4, 0xe3, 0xf3, - 0x93, 0xea, 0x1c, 0x33, 0x5e, 0x96, 0x01, 0x39, 0xa7, 0x89, 0xdd, 0x0f, - 0x99, 0x52, 0x98, 0x1f, 0x08, 0x31, 0x18, 0x16, 0xd6, 0x1a, 0x31, 0x18, - 0x56, 0xd6, 0x1b, 0x56, 0xdd, 0x88, 0xc7, 0x62, 0xda, 0xb1, 0x08, 0xcc, - 0x5b, 0x66, 0x53, 0x6b, 0x0d, 0x6d, 0x98, 0x16, 0xdd, 0x94, 0xde, 0x61, - 0xe6, 0x31, 0xd8, 0x84, 0x66, 0x2d, 0xb3, 0x16, 0xf0, 0xc5, 0xbc, 0x31, - 0x09, 0x96, 0x05, 0xbc, 0x30, 0xad, 0xbb, 0x28, 0x26, 0x18, 0x8c, 0xcb, - 0x2b, 0xbc, 0xb1, 0x6f, 0x2c, 0x0b, 0x7b, 0x6a, 0xde, 0xe1, 0xad, 0xe6, - 0x1a, 0xde, 0x58, 0x84, 0xcb, 0x53, 0x5c, 0x1c, 0x02, 0x38, 0x58, 0xdd, - 0x4a, 0x37, 0x39, 0x4d, 0x27, 0x9d, 0xe6, 0xe0, 0x9a, 0xf4, 0xb0, 0x74, - 0x33, 0x60, 0x6e, 0xce, 0xf3, 0x85, 0x44, 0xc6, 0x97, 0xba, 0xd0, 0x84, - 0x65, 0xe6, 0x7d, 0xf5, 0x91, 0x25, 0xbf, 0xcb, 0xa2, 0x8a, 0xb1, 0xcd, - 0x27, 0xe3, 0x73, 0x95, 0xf5, 0xce, 0xe7, 0xc1, 0x1b, 0xf8, 0xc1, 0xa9, - 0x33, 0x75, 0xdd, 0x1f, 0xe6, 0x0a, 0x95, 0x56, 0x60, 0xcd, 0x3f, 0x6b, - 0xd7, 0xe2, 0x7e, 0xfa, 0xe7, 0x9f, 0xbc, 0x28, 0xa2, 0xac, 0x83, 0x4b, - 0x42, 0x2a, 0x96, 0xf5, 0xaf, 0xf3, 0xf0, 0x47, 0xf4, 0xf2, 0xfe, 0x69, - 0xc6, 0xfd, 0xab, 0xb5, 0x78, 0x5d, 0xac, 0xe6, 0xfe, 0x46, 0xd9, 0xea, - 0x9e, 0xfa, 0xe7, 0x9a, 0x4f, 0x84, 0x51, 0x56, 0x56, 0x96, 0x83, 0xf9, - 0x4b, 0x7a, 0xc7, 0xf9, 0xb8, 0x23, 0x6b, 0x02, 0x5d, 0xb4, 0x74, 0xf3, - 0x7e, 0xd1, 0xde, 0x70, 0x10, 0x56, 0x77, 0x51, 0xb7, 0x45, 0x2d, 0x6f, - 0x7d, 0x73, 0xc7, 0xe4, 0x11, 0x44, 0x2b, 0x2f, 0x49, 0xe3, 0xe4, 0x85, - 0xea, 0xa2, 0x79, 0xf8, 0x23, 0xfa, 0x78, 0x4d, 0x00, 0xce, 0xfa, 0x53, - 0xe7, 0x08, 0x29, 0x1f, 0x5f, 0x6f, 0xf5, 0x7f, 0x7d, 0x73, 0xcf, 0xe5, - 0x15, 0x57, 0x25, 0x66, 0xeb, 0x3b, 0xfe, 0x61, 0x6b, 0x32, 0xff, 0x00, - 0x3f, 0x04, 0xc7, 0xa7, 0x82, 0x35, 0x9c, 0xa0, 0x96, 0x77, 0x99, 0xa8, - 0x05, 0x21, 0xa4, 0xf5, 0xe0, 0x14, 0xb6, 0x3d, 0xf5, 0xd0, 0xea, 0x83, - 0x92, 0x2a, 0xcd, 0xd2, 0x74, 0x0a, 0xb2, 0x1f, 0xa8, 0x89, 0xe7, 0xe0, - 0x8d, 0xfc, 0x60, 0xf9, 0xa6, 0xbc, 0x52, 0xae, 0xf3, 0x84, 0x14, 0x87, - 0xad, 0xbc, 0x3d, 0x63, 0xdf, 0x5c, 0xfa, 0x7c, 0x50, 0x22, 0x8a, 0xb3, - 0x87, 0xde, 0xb4, 0x78, 0x18, 0x3e, 0xe1, 0xde, 0x6e, 0x08, 0x9f, 0xc5, - 0x87, 0xc5, 0x33, 0xe9, 0x9d, 0xe7, 0x08, 0x73, 0x92, 0xf5, 0xb7, 0x97, - 0xac, 0xfb, 0xeb, 0xa1, 0xad, 0xae, 0xaa, 0x8a, 0xb3, 0x7d, 0x70, 0xd5, - 0xb0, 0x87, 0xd6, 0x77, 0x9b, 0x81, 0xfa, 0xc3, 0x67, 0x9a, 0x36, 0xb2, - 0xd1, 0x05, 0x22, 0x35, 0x05, 0x21, 0xeb, 0xaf, 0x3e, 0x96, 0xd7, 0xbe, - 0xb9, 0xfd, 0x63, 0x92, 0x28, 0xab, 0x2f, 0x49, 0xf6, 0xf9, 0x61, 0xff, - 0x00, 0x47, 0x79, 0xb8, 0x1d, 0xe4, 0x85, 0xce, 0x20, 0xfa, 0x51, 0x34, - 0x8c, 0x10, 0x52, 0x1e, 0xb6, 0xf4, 0x75, 0xbf, 0x7d, 0x74, 0x3a, 0xd6, - 0x05, 0x59, 0x3e, 0xbd, 0xbe, 0x58, 0x63, 0xea, 0x3b, 0x9f, 0x03, 0xfc, - 0x90, 0xfc, 0xce, 0x14, 0x85, 0x1b, 0xd4, 0x0c, 0x24, 0xbd, 0x75, 0xe8, - 0xeb, 0x5e, 0xfa, 0xe8, 0x75, 0xb0, 0x8a, 0x2a, 0xc5, 0x15, 0xb4, 0x9a, - 0x3c, 0x30, 0xbf, 0xa3, 0xbc, 0xdc, 0x07, 0x94, 0x21, 0xe2, 0xe5, 0x0a, - 0x64, 0x52, 0x64, 0x20, 0x2a, 0xa4, 0xfd, 0x6d, 0xe8, 0xeb, 0x7e, 0xfa, - 0xe8, 0x75, 0xc1, 0xa2, 0x25, 0x15, 0x61, 0x8f, 0xca, 0x05, 0x07, 0xfa, - 0xbb, 0xcd, 0xc0, 0xee, 0x50, 0xf4, 0x70, 0x1a, 0x4f, 0x8c, 0x93, 0x88, - 0x15, 0x27, 0xac, 0xe5, 0xe9, 0xeb, 0x7e, 0xfa, 0xe8, 0x75, 0xe4, 0x51, - 0xe5, 0x61, 0xf5, 0x30, 0xa1, 0x7f, 0x53, 0xcf, 0x81, 0xc6, 0x8d, 0x67, - 0x9f, 0xfc, 0xda, 0x5e, 0xb9, 0xa8, 0x29, 0x4f, 0x57, 0x7a, 0x7a, 0xdf, - 0xbe, 0xba, 0x3d, 0x78, 0xf9, 0xb0, 0xb0, 0x3a, 0x98, 0x3a, 0x42, 0xfe, - 0x87, 0x9f, 0x03, 0xfc, 0x8d, 0xf3, 0xff, 0x00, 0x9b, 0x4f, 0x59, 0xe1, - 0x84, 0x99, 0xfb, 0xcb, 0xd9, 0xd7, 0x7d, 0xf5, 0xd0, 0xeb, 0xc7, 0x9f, - 0x2c, 0x2c, 0x1e, 0xa9, 0xda, 0x1f, 0xf5, 0x3c, 0xf8, 0x0f, 0x21, 0xfd, - 0x40, 0xf0, 0xda, 0x3e, 0xb8, 0x26, 0xe8, 0x65, 0x7d, 0x4d, 0xec, 0xeb, - 0xbe, 0xfa, 0xe8, 0xf5, 0xf3, 0xe6, 0xc2, 0xc3, 0xea, 0x7d, 0xa1, 0x7f, - 0x43, 0xcf, 0x84, 0x0f, 0xab, 0xfe, 0x6d, 0x5f, 0x5e, 0x34, 0x4d, 0xa2, - 0x81, 0xea, 0x2f, 0x6f, 0x5d, 0xf7, 0xd7, 0x4b, 0xaf, 0x91, 0xe2, 0x4e, - 0x1a, 0xd8, 0x7d, 0x4c, 0x1d, 0x21, 0xff, 0x00, 0x53, 0xcf, 0x84, 0xe9, - 0x1f, 0x93, 0x2d, 0x47, 0x56, 0x7c, 0x26, 0xa8, 0x1a, 0x4c, 0x5e, 0xce, - 0xb9, 0xef, 0xae, 0x97, 0x5f, 0x77, 0x98, 0xa7, 0x2b, 0x0b, 0xa9, 0x55, - 0x41, 0x3f, 0x55, 0xde, 0x6e, 0x07, 0x72, 0x78, 0xfb, 0x96, 0x8f, 0x0d, - 0xa9, 0xac, 0xf8, 0x1a, 0x05, 0x0b, 0xfb, 0x5e, 0xde, 0xbb, 0xef, 0xae, - 0x9f, 0x5f, 0x77, 0x9e, 0xb9, 0x70, 0xb1, 0x34, 0xb4, 0x94, 0x13, 0xf5, - 0x9d, 0xe6, 0xe0, 0x89, 0xe4, 0x8d, 0xa4, 0xe3, 0x4d, 0x5b, 0x6a, 0xf5, - 0x00, 0x82, 0x81, 0xa4, 0x6b, 0xdd, 0xd7, 0x3d, 0xf5, 0xd5, 0xeb, 0xf1, - 0x07, 0xd4, 0x5d, 0xec, 0x4f, 0x15, 0xa9, 0x9b, 0x49, 0x63, 0x9a, 0x68, - 0xf3, 0xe0, 0x89, 0xfc, 0xe6, 0x4f, 0xdf, 0x37, 0x95, 0xb0, 0x3f, 0x24, - 0x0d, 0x55, 0x54, 0x2f, 0xeb, 0x7b, 0xba, 0xe7, 0xbe, 0xba, 0xbf, 0xf2, - 0x08, 0xbf, 0xd9, 0x12, 0xac, 0x3e, 0xa6, 0x4e, 0x92, 0x6e, 0xfb, 0xe6, - 0x9a, 0xb7, 0x80, 0xa9, 0x8f, 0x5a, 0xc5, 0x6e, 0x54, 0x5a, 0x63, 0x08, - 0x7f, 0xd2, 0xf7, 0x0f, 0xcc, 0xfb, 0xeb, 0xab, 0xd7, 0xe3, 0x0f, 0xaa, - 0x51, 0x56, 0x16, 0xb6, 0x89, 0x2a, 0x4b, 0xa8, 0x37, 0xcb, 0xc0, 0x39, - 0xcd, 0x7a, 0xe8, 0x6a, 0xdf, 0x14, 0xb5, 0x5b, 0xcc, 0x14, 0xc1, 0xf5, - 0x2f, 0x77, 0x59, 0xf7, 0xd7, 0x5b, 0xaf, 0xc6, 0x14, 0x8b, 0x85, 0x81, - 0xd4, 0x5e, 0xa4, 0x8f, 0xe4, 0x78, 0xa7, 0x45, 0x2d, 0x06, 0xab, 0xca, - 0x3f, 0x28, 0x10, 0x50, 0xcf, 0xd4, 0xbd, 0xfd, 0x6b, 0xdf, 0x5d, 0x5f, - 0xf9, 0x04, 0x71, 0x48, 0xfd, 0x8a, 0xbb, 0xc3, 0xf2, 0x0f, 0x0a, 0x4f, - 0xa8, 0x37, 0xcb, 0xc3, 0x3f, 0xeb, 0xe1, 0xea, 0xaf, 0x3b, 0x7f, 0x26, - 0x10, 0xd0, 0xc3, 0xfe, 0x97, 0xc3, 0xac, 0xfb, 0xeb, 0xad, 0xd7, 0xe6, - 0x3d, 0x41, 0x18, 0x5d, 0xd0, 0x4c, 0xfc, 0x52, 0xa4, 0xbd, 0x79, 0xe7, - 0xc3, 0x69, 0xe9, 0x3d, 0x0c, 0x2b, 0xdb, 0xeb, 0x46, 0x0d, 0x3e, 0x3b, - 0xe1, 0xd6, 0x7d, 0xf5, 0xd6, 0xeb, 0xf3, 0x5a, 0x4c, 0xa2, 0x15, 0xd8, - 0x1f, 0x79, 0x14, 0xa9, 0x0f, 0x5f, 0xc5, 0x6a, 0x8a, 0x4f, 0xc3, 0xe5, - 0x7c, 0x18, 0x44, 0x70, 0x82, 0x61, 0xa3, 0xef, 0x89, 0xfc, 0xc7, 0xbe, - 0xba, 0xfd, 0x7a, 0x6f, 0x49, 0xb3, 0x85, 0xd7, 0x6f, 0xd6, 0x88, 0x55, - 0x97, 0xa5, 0xa1, 0xc5, 0x6b, 0x8a, 0x4f, 0xc3, 0xd1, 0x5f, 0x18, 0x55, - 0x60, 0xaa, 0x08, 0x79, 0xef, 0x8f, 0x59, 0xf7, 0xd7, 0x67, 0xaf, 0x4d, - 0x9f, 0xbc, 0x27, 0x57, 0x2b, 0xaa, 0x35, 0x88, 0x6a, 0xac, 0x9d, 0x6d, - 0x1e, 0x2b, 0x6b, 0xd5, 0xc2, 0x57, 0xb9, 0x95, 0x90, 0x08, 0x21, 0xa3, - 0xaf, 0x87, 0x57, 0xf7, 0xd7, 0x6f, 0x4b, 0x72, 0x6b, 0xd5, 0xb9, 0x15, - 0x76, 0x1b, 0x96, 0x0b, 0xf9, 0x58, 0xa3, 0xf2, 0x7c, 0x56, 0xe6, 0x93, - 0x50, 0xb9, 0xde, 0x58, 0x41, 0xf6, 0x58, 0xd1, 0x0c, 0x2f, 0x7f, 0x56, - 0xf7, 0xd7, 0x78, 0xd2, 0xda, 0xb4, 0x34, 0x9f, 0x38, 0x5d, 0xc8, 0x46, - 0x14, 0xac, 0x45, 0x60, 0x0a, 0xda, 0x5c, 0x57, 0x80, 0x7d, 0x48, 0x6e, - 0xd6, 0xd4, 0x85, 0xb6, 0x91, 0x4d, 0x2a, 0xba, 0x5e, 0xe0, 0x45, 0xa7, - 0xef, 0xae, 0xf3, 0x0b, 0xed, 0xa9, 0xff, 0x00, 0x5c, 0x4e, 0x94, 0xd6, - 0xc6, 0xf0, 0x49, 0x3f, 0x9d, 0xdc, 0xd6, 0x77, 0x8a, 0xf0, 0x68, 0xa1, - 0x6a, 0x9f, 0xe2, 0x64, 0xcb, 0x76, 0x73, 0x20, 0xd1, 0x55, 0x5a, 0x91, - 0x5b, 0x6c, 0x4a, 0x99, 0x68, 0xa0, 0xee, 0x91, 0x56, 0xe9, 0x15, 0x6e, - 0x71, 0x96, 0xe9, 0x15, 0x6e, 0x71, 0x96, 0xe7, 0x19, 0x6e, 0x51, 0x96, - 0xe7, 0x19, 0x6e, 0x71, 0x96, 0xe7, 0x19, 0x6e, 0x51, 0x96, 0xe5, 0x19, - 0x6e, 0x51, 0x96, 0xe5, 0x1a, 0x9b, 0x94, 0x65, 0xb9, 0x46, 0x5b, 0x8c, - 0x55, 0xb9, 0x45, 0x5b, 0x94, 0x55, 0xb9, 0x45, 0x5b, 0x94, 0x45, 0xb8, - 0xc4, 0x5b, 0x8c, 0x45, 0xb8, 0xc4, 0x5b, 0x8c, 0x45, 0xb8, 0xc4, 0x5b, - 0x84, 0x45, 0xb8, 0xc4, 0x5b, 0x8c, 0x45, 0x22, 0xe3, 0x66, 0x3e, 0xa5, - 0x1e, 0x4c, 0x15, 0x7c, 0x98, 0xcb, 0x04, 0x9a, 0xab, 0xb4, 0x3e, 0xeb, - 0x8a, 0xf0, 0x8f, 0xb7, 0x82, 0x81, 0xd2, 0xdf, 0x81, 0xb1, 0xb4, 0xea, - 0xbb, 0x8a, 0x93, 0x9d, 0xe1, 0x6d, 0x1e, 0xb6, 0xae, 0x5b, 0x57, 0x2d, - 0xa3, 0xd6, 0xd5, 0xf4, 0xda, 0x3d, 0x6d, 0x5c, 0xb6, 0x8e, 0x5b, 0x47, - 0x2d, 0xa3, 0x91, 0x73, 0x95, 0x5c, 0xb3, 0x14, 0x1c, 0xe5, 0x98, 0xac, - 0xc5, 0x54, 0xa0, 0xe7, 0x56, 0xba, 0x57, 0x5c, 0xd8, 0xd7, 0x0a, 0xae, - 0xd5, 0x5a, 0x60, 0x4a, 0x2a, 0x46, 0x1e, 0xd6, 0x65, 0x95, 0x0d, 0xcc, - 0xae, 0xc3, 0x7c, 0x5c, 0x57, 0x81, 0xb5, 0xb3, 0xe1, 0x9a, 0x06, 0x3a, - 0xaa, 0xf7, 0x40, 0xcb, 0x12, 0xab, 0xba, 0xa2, 0xef, 0x80, 0x3a, 0x57, - 0x0e, 0xfc, 0xb1, 0xa5, 0x57, 0x34, 0x79, 0xf3, 0xc0, 0x15, 0x9b, 0x0a, - 0xa2, 0xaa, 0x69, 0xdc, 0xd3, 0x1d, 0x0a, 0xaa, 0xcc, 0xab, 0x5c, 0x08, - 0xaa, 0x3a, 0xab, 0x16, 0x16, 0x68, 0xc0, 0xe9, 0x9f, 0xc3, 0x75, 0xdb, - 0xf6, 0xfc, 0x56, 0xc3, 0x73, 0x59, 0xd0, 0x53, 0x39, 0xde, 0x49, 0x7d, - 0xb5, 0x9e, 0x87, 0x07, 0x3c, 0x00, 0xa6, 0x24, 0x70, 0xd5, 0x6b, 0x87, - 0x6a, 0x2e, 0x60, 0x1a, 0xaa, 0xe8, 0x4d, 0x00, 0xa8, 0x55, 0x28, 0x56, - 0xbe, 0x72, 0x39, 0x77, 0xa6, 0x15, 0xa2, 0x3a, 0x01, 0x42, 0x1c, 0xac, - 0x88, 0x59, 0x61, 0xe7, 0x5a, 0x2b, 0xb4, 0xcc, 0xb6, 0x67, 0x14, 0xdb, - 0x36, 0x92, 0xb0, 0xf4, 0x2d, 0x72, 0x8a, 0xdd, 0xe2, 0x5e, 0x72, 0x09, - 0x96, 0x9a, 0xad, 0x71, 0xae, 0x21, 0x56, 0xb8, 0x1a, 0x70, 0xf3, 0xc3, - 0x52, 0x86, 0x14, 0x5c, 0x95, 0x34, 0x08, 0x8c, 0xa7, 0x9e, 0x14, 0x42, - 0x80, 0x06, 0xaa, 0xe1, 0xa2, 0xaa, 0x02, 0x89, 0xad, 0xce, 0xe9, 0x6a, - 0x36, 0x19, 0x7a, 0xcd, 0x51, 0x63, 0x33, 0x67, 0x65, 0xf1, 0x73, 0x51, - 0x59, 0xb3, 0x8c, 0xd3, 0xe1, 0x0e, 0xd6, 0xf4, 0x4a, 0x6c, 0xa6, 0xb1, - 0xed, 0x81, 0xe4, 0x00, 0xaa, 0xd0, 0x02, 0xb9, 0xae, 0x7c, 0x14, 0xa6, - 0x1a, 0x2a, 0x54, 0x2a, 0x8a, 0x0e, 0x78, 0x15, 0xd8, 0x6a, 0xb4, 0x55, - 0x4d, 0xe6, 0x74, 0x4e, 0x5c, 0xd4, 0x9c, 0x3c, 0xd1, 0x1b, 0xa0, 0x2e, - 0xd4, 0x78, 0x9d, 0x01, 0x9b, 0x29, 0x7e, 0x3b, 0x6a, 0x16, 0xca, 0xd0, - 0x0e, 0xa2, 0x6b, 0xaa, 0x2d, 0xc9, 0x3d, 0xee, 0x49, 0x04, 0xda, 0x61, - 0x4c, 0x6a, 0xb9, 0x15, 0xdb, 0xb5, 0x17, 0x7e, 0xe3, 0x02, 0x82, 0xe6, - 0xbb, 0xad, 0x31, 0x26, 0x88, 0x1c, 0x79, 0xaa, 0xd1, 0x73, 0x54, 0x44, - 0x51, 0x4a, 0x33, 0x23, 0x18, 0x68, 0x83, 0x95, 0x91, 0x0b, 0x7a, 0xb4, - 0x4f, 0x3e, 0x3b, 0xc7, 0x06, 0xab, 0xcc, 0x83, 0xb4, 0xae, 0x66, 0xdb, - 0x52, 0x7b, 0xac, 0xed, 0x78, 0x01, 0xc3, 0xbf, 0x74, 0x50, 0x5c, 0xd1, - 0xc2, 0x98, 0x55, 0x77, 0x44, 0xa1, 0x80, 0xa2, 0xa2, 0xd1, 0x55, 0x77, - 0x55, 0xd1, 0xca, 0x8a, 0xb4, 0x50, 0x59, 0x9e, 0x23, 0x69, 0x91, 0xa9, - 0xae, 0xaa, 0xba, 0x12, 0xfb, 0x49, 0xef, 0xd1, 0x6b, 0x42, 0xdb, 0x48, - 0x21, 0x12, 0x89, 0xae, 0x56, 0xec, 0xa6, 0xf3, 0x2c, 0x30, 0xed, 0x80, - 0x34, 0xc0, 0x36, 0xae, 0x21, 0x72, 0x0e, 0xd4, 0xd6, 0x83, 0xb2, 0xd2, - 0x98, 0x01, 0xa0, 0x04, 0xbb, 0x9e, 0x15, 0x54, 0xd3, 0xbe, 0x94, 0x5d, - 0xb9, 0x61, 0xfe, 0x42, 0x25, 0x4b, 0x37, 0x22, 0x6b, 0x80, 0x76, 0x88, - 0x3b, 0x32, 0xba, 0x52, 0xbb, 0x1b, 0x37, 0xf4, 0x52, 0xaa, 0xd2, 0x81, - 0xba, 0xcc, 0x17, 0xe5, 0x0c, 0x7d, 0x4e, 0x6a, 0xb2, 0xd6, 0x95, 0xdd, - 0x66, 0x71, 0x05, 0x6b, 0x4e, 0xc8, 0xe2, 0x57, 0x6c, 0x34, 0x5d, 0xfb, - 0x6a, 0x15, 0x6a, 0xbb, 0xf2, 0x5d, 0xb9, 0xe1, 0xdf, 0x4a, 0x55, 0x55, - 0x15, 0x55, 0x01, 0xb5, 0x78, 0xd0, 0x20, 0x54, 0xb4, 0x3d, 0xbc, 0x79, - 0x78, 0x02, 0x56, 0x5f, 0xf4, 0xde, 0x69, 0x4d, 0x5c, 0xed, 0x43, 0x93, - 0x1f, 0xe1, 0xb5, 0x65, 0x77, 0xb8, 0x04, 0x50, 0xaa, 0xe0, 0x31, 0xaa, - 0x27, 0x0e, 0x46, 0xa8, 0x2e, 0xe5, 0x73, 0x5d, 0xce, 0x98, 0x85, 0xc8, - 0xd6, 0x86, 0xa4, 0x0a, 0x51, 0x52, 0xab, 0x92, 0x3c, 0x82, 0xa5, 0x54, - 0x06, 0x65, 0x15, 0x55, 0xd0, 0x6a, 0xae, 0x7d, 0x9f, 0xb6, 0x9d, 0xfd, - 0x53, 0x92, 0xc2, 0x72, 0x5a, 0x65, 0x86, 0x13, 0xf3, 0x1c, 0xac, 0x72, - 0x69, 0xa8, 0xb6, 0x64, 0xcc, 0x38, 0x95, 0xc7, 0xb7, 0x00, 0x18, 0xd3, - 0x4a, 0xa2, 0x82, 0x3a, 0xa1, 0xa6, 0x03, 0x44, 0x15, 0x57, 0x3e, 0x10, - 0xb9, 0x28, 0x10, 0xea, 0xec, 0xb4, 0x45, 0x56, 0xaa, 0x1b, 0x4b, 0x8d, - 0x85, 0x67, 0xfc, 0x3a, 0xce, 0xfd, 0x77, 0xa6, 0xcf, 0xcb, 0x10, 0xd1, - 0x36, 0x26, 0x51, 0x9b, 0x59, 0xf8, 0x22, 0x24, 0x28, 0x8c, 0x30, 0x9d, - 0xc7, 0x45, 0x5a, 0x2c, 0xcb, 0x92, 0xcd, 0xa7, 0x25, 0x55, 0x5c, 0x2a, - 0xaa, 0xbb, 0x68, 0x83, 0x42, 0xaa, 0x0a, 0xb4, 0x5f, 0xe5, 0x05, 0x08, - 0x50, 0x57, 0x2e, 0x1c, 0xd5, 0xd4, 0xb3, 0x37, 0xf9, 0xdf, 0xd9, 0x37, - 0x2c, 0xd9, 0xc9, 0x79, 0xd9, 0x77, 0x4a, 0x4c, 0x57, 0xc4, 0xc3, 0x55, - 0x51, 0x4b, 0x62, 0x5b, 0x2f, 0x0d, 0x70, 0xae, 0xbc, 0x1d, 0x82, 0xe6, - 0xb9, 0x20, 0xea, 0x63, 0xd8, 0x21, 0xa2, 0xed, 0x4a, 0xe3, 0xcd, 0x4b, - 0x8f, 0x15, 0x68, 0x83, 0xb4, 0x3a, 0x88, 0x2d, 0x31, 0xa2, 0x58, 0xf6, - 0x68, 0xb2, 0xe4, 0x7f, 0x6d, 0xe7, 0xb3, 0x36, 0xf0, 0xb2, 0xe5, 0x4d, - 0x29, 0x91, 0x8b, 0x4c, 0xf4, 0x1d, 0xb4, 0x18, 0x8d, 0xd9, 0xbf, 0x01, - 0xc1, 0x4c, 0x6b, 0x80, 0xc2, 0xab, 0x9e, 0x1d, 0xb0, 0x0b, 0x91, 0xa6, - 0xa5, 0x73, 0x4d, 0x15, 0x50, 0x9b, 0x95, 0x55, 0x52, 0xab, 0x36, 0x97, - 0x32, 0xc9, 0xfa, 0xbf, 0xb8, 0x8a, 0x8b, 0x7e, 0xc8, 0xdc, 0x26, 0xb5, - 0x71, 0x63, 0xcd, 0x0b, 0xf3, 0x2b, 0x4e, 0x5c, 0x36, 0x27, 0xe8, 0xe7, - 0xc1, 0x5d, 0x78, 0x29, 0x80, 0x5a, 0xe6, 0x55, 0xc1, 0x8c, 0xcc, 0x9b, - 0xa0, 0xcd, 0x55, 0xc9, 0x58, 0xb6, 0x6b, 0xad, 0x49, 0xe9, 0x59, 0x66, - 0xca, 0xc1, 0xfd, 0xf6, 0x84, 0x8b, 0x2d, 0x19, 0x59, 0xd9, 0x58, 0x92, - 0x51, 0xd9, 0x45, 0x0d, 0xca, 0xd1, 0x83, 0x9a, 0x1b, 0x86, 0xbc, 0x15, - 0x55, 0xa6, 0x34, 0xd3, 0x83, 0x5c, 0x3b, 0x2e, 0xe7, 0x5e, 0x01, 0xca, - 0x0b, 0x55, 0x50, 0x15, 0x50, 0xe1, 0x3a, 0x3c, 0x5b, 0x06, 0xc5, 0x6d, - 0x8f, 0x29, 0xec, 0x6f, 0x15, 0x8f, 0xf1, 0x19, 0x67, 0x34, 0xb1, 0xec, - 0x76, 0x91, 0x19, 0xb4, 0x64, 0xdc, 0x2c, 0x91, 0x30, 0xa7, 0x0d, 0x71, - 0xef, 0xcb, 0x8e, 0xb5, 0xc3, 0xbd, 0x10, 0x43, 0xcb, 0x97, 0x26, 0x17, - 0x3a, 0xc1, 0xdd, 0xa1, 0xfb, 0x3b, 0xd1, 0x61, 0xe8, 0xdd, 0x0d, 0x7c, - 0x16, 0x93, 0x6a, 0x78, 0x74, 0xaf, 0xeb, 0xae, 0x00, 0xd1, 0x73, 0xc1, - 0xa2, 0x88, 0x50, 0x1a, 0xeb, 0x75, 0x2e, 0xff, 0x00, 0xc4, 0x63, 0x72, - 0xf6, 0x84, 0x07, 0x0b, 0xc5, 0x62, 0x7c, 0x3e, 0x3c, 0x32, 0xa7, 0x68, - 0x41, 0xd7, 0x0a, 0xfe, 0xf1, 0xc0, 0xd1, 0xac, 0x3d, 0x15, 0x35, 0xb0, - 0xec, 0x77, 0xdb, 0x53, 0x72, 0xd2, 0xf0, 0xe5, 0x20, 0x7b, 0x59, 0x99, - 0x76, 0x4d, 0xc0, 0xb6, 0x2c, 0xc8, 0xb6, 0x64, 0xcc, 0x6a, 0x39, 0x8f, - 0x3f, 0xae, 0xbc, 0x41, 0x0c, 0x5a, 0xa1, 0x73, 0x92, 0x94, 0x7d, 0xa1, - 0x31, 0x63, 0xd9, 0x30, 0xec, 0x79, 0x3f, 0x6f, 0x6a, 0x59, 0xac, 0xb5, - 0x25, 0xad, 0x29, 0x58, 0x92, 0x51, 0x63, 0x8a, 0x39, 0xd8, 0x72, 0xf6, - 0x3d, 0xc7, 0x38, 0x4c, 0x31, 0x1f, 0x75, 0xac, 0x01, 0x64, 0x4b, 0x7b, - 0x9b, 0xc7, 0x62, 0x0b, 0x4e, 0x5e, 0x6e, 0x11, 0x80, 0xe3, 0x8d, 0x78, - 0x69, 0x5f, 0xd8, 0xd5, 0x72, 0xee, 0xed, 0x1b, 0xee, 0xef, 0x95, 0xde, - 0xdb, 0x32, 0x20, 0x39, 0xb1, 0xaf, 0xb0, 0xba, 0x37, 0x7c, 0xda, 0xb3, - 0x4d, 0x68, 0x63, 0x7d, 0xd9, 0x00, 0x8b, 0xe3, 0x77, 0x7e, 0x1b, 0x31, - 0xfb, 0x47, 0x0d, 0x91, 0x66, 0x44, 0xb5, 0x67, 0x2c, 0xf9, 0x18, 0x76, - 0x74, 0xa7, 0xbd, 0x9d, 0x93, 0x87, 0x68, 0x4a, 0xdb, 0x76, 0x54, 0x4b, - 0x26, 0x7b, 0xd8, 0x43, 0x69, 0x88, 0xeb, 0xa9, 0x60, 0xb6, 0xc9, 0x93, - 0xf7, 0xf7, 0xb2, 0xc3, 0x16, 0xc5, 0x9f, 0x11, 0x86, 0x1b, 0xff, 0x00, - 0x7d, 0xca, 0xb0, 0xf7, 0x88, 0xfc, 0xbf, 0xe8, 0x6f, 0xbd, 0x89, 0xbb, - 0xcc, 0x70, 0x53, 0x8a, 0x9c, 0x16, 0x4c, 0x83, 0xad, 0x29, 0xdb, 0x2e, - 0x4d, 0xb2, 0x92, 0xff, 0x00, 0xf4, 0x36, 0x9d, 0x9e, 0xcb, 0x42, 0x5a, - 0x72, 0xe9, 0x5a, 0x70, 0x23, 0xfc, 0xb7, 0x69, 0xaf, 0x97, 0x2d, 0x35, - 0xf2, 0xcd, 0xa8, 0xbe, 0x57, 0xb5, 0x57, 0xca, 0x96, 0xb2, 0xf9, 0x4e, - 0xd6, 0x5f, 0x28, 0x5a, 0xcb, 0xe4, 0xfb, 0x5d, 0x7c, 0x9d, 0x6b, 0xa1, - 0x73, 0xad, 0x75, 0xf2, 0x65, 0xae, 0xbe, 0x4b, 0xb5, 0xd7, 0xc9, 0x56, - 0xb9, 0x57, 0x56, 0xeb, 0x3e, 0xcb, 0x87, 0xff, 0x00, 0xb5, 0xff, 0xc4, - 0x00, 0x1d, 0x11, 0x01, 0x00, 0x03, 0x00, 0x02, 0x03, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20, 0x40, 0x50, 0x60, - 0x70, 0x10, 0x30, 0x80, 0x90, 0xff, 0xda, 0x00, 0x08, 0x01, 0x03, 0x01, - 0x01, 0x3f, 0x01, 0xef, 0x63, 0xee, 0xe7, 0x49, 0xd2, 0x74, 0x9d, 0x27, - 0x49, 0xa6, 0x5f, 0x74, 0x9a, 0x65, 0xf6, 0x99, 0x7d, 0xd2, 0x69, 0x97, - 0xda, 0x65, 0xf6, 0x99, 0x7d, 0xa6, 0x5f, 0x74, 0x9a, 0x65, 0xf6, 0x99, - 0x7d, 0xe0, 0xa5, 0xf6, 0x99, 0xa4, 0x67, 0x1c, 0x90, 0x81, 0x98, 0xe2, - 0xbe, 0xd6, 0x46, 0x63, 0x22, 0xfb, 0xed, 0x64, 0x66, 0x32, 0x31, 0x49, - 0xb9, 0x64, 0xdf, 0x26, 0x41, 0x37, 0xc9, 0xd2, 0xe6, 0x7b, 0xa4, 0xf4, - 0xbb, 0xc9, 0x5f, 0xdb, 0x0f, 0xff, 0xc4, 0x00, 0x1f, 0x11, 0x01, 0x00, - 0x02, 0x03, 0x01, 0x00, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x20, 0x40, 0x10, 0x30, 0x50, 0x02, 0x00, 0x11, 0x60, - 0x70, 0x80, 0xff, 0xda, 0x00, 0x08, 0x01, 0x02, 0x01, 0x01, 0x3f, 0x01, - 0xfd, 0x47, 0xd7, 0x27, 0xeb, 0x40, 0x72, 0xde, 0x93, 0xa5, 0xe3, 0x98, - 0x69, 0x17, 0x8c, 0x36, 0x0f, 0x8c, 0x8a, 0x26, 0x1d, 0xcc, 0x48, 0x11, - 0x35, 0x9a, 0x4a, 0xa4, 0x0a, 0x06, 0x92, 0xa9, 0x26, 0x47, 0xc6, 0x81, - 0xd2, 0x3a, 0x47, 0x48, 0xde, 0xdf, 0x20, 0x6f, 0x6f, 0x90, 0x37, 0xb7, - 0xc8, 0x1b, 0xdb, 0xe4, 0x0d, 0xed, 0xf2, 0x06, 0xf6, 0xf9, 0x4d, 0xbe, - 0x53, 0x6f, 0x90, 0x37, 0xb7, 0xc8, 0x1b, 0xdb, 0xe4, 0x0d, 0xed, 0xf2, - 0x06, 0xf6, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, - 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, - 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, - 0x5b, 0x06, 0xf9, 0x03, 0x5b, 0x06, 0xf9, 0x03, 0x49, 0x86, 0x0d, 0xf2, - 0x06, 0x93, 0x0c, 0x1b, 0xe4, 0x0c, 0x33, 0x30, 0xc1, 0xbe, 0x40, 0xc3, - 0x33, 0x0c, 0x1b, 0xe4, 0x0c, 0x33, 0x30, 0xc1, 0xbe, 0x40, 0xc3, 0x33, - 0x0c, 0x1b, 0xe4, 0x0c, 0x33, 0x24, 0xdf, 0x20, 0x61, 0x9f, 0x99, 0x37, - 0xc9, 0x33, 0xf3, 0xcb, 0x67, 0xe7, 0x2f, 0x21, 0x9f, 0x9c, 0xbc, 0x53, - 0x2c, 0xce, 0x41, 0x97, 0xa4, 0xeb, 0x79, 0xe7, 0x4b, 0xcc, 0x1e, 0x2b, - 0xa4, 0x83, 0xc5, 0x77, 0x3c, 0xef, 0x3c, 0x77, 0x59, 0x17, 0x84, 0xec, - 0x3a, 0xef, 0x38, 0x7a, 0x64, 0x1f, 0xd0, 0x9d, 0x33, 0x2f, 0xf4, 0x83, - 0xfd, 0x6b, 0xff, 0xc4, 0x00, 0x43, 0x10, 0x00, 0x00, 0x03, 0x05, 0x04, - 0x06, 0x07, 0x06, 0x03, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x02, 0x03, 0x10, 0x11, 0x21, 0x31, 0x20, 0x51, 0x71, 0x72, 0x04, - 0x32, 0x40, 0x41, 0x61, 0xb1, 0x12, 0x22, 0x30, 0x34, 0x91, 0x92, 0xa1, - 0x33, 0x52, 0x62, 0x73, 0x81, 0xc1, 0x13, 0x42, 0xd1, 0x14, 0x23, 0x24, - 0x50, 0x82, 0xa2, 0x43, 0x60, 0x93, 0xb2, 0xe1, 0xf0, 0xf1, 0x83, 0xff, - 0xda, 0x00, 0x08, 0x01, 0x01, 0x00, 0x06, 0x3f, 0x02, 0xff, 0x00, 0x25, - 0x50, 0x50, 0xc5, 0x0c, 0x50, 0xc5, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x1f, 0x41, 0x41, 0x41, 0x41, 0x4e, 0xd0, 0xd9, 0xb3, 0xfe, 0x21, - 0xb1, 0x56, 0x07, 0xd5, 0x2f, 0xa8, 0xea, 0x29, 0x0c, 0x8a, 0xe4, 0xa4, - 0x77, 0x93, 0xf0, 0x21, 0xde, 0xda, 0x78, 0x8e, 0xf4, 0xd7, 0xcc, 0x3b, - 0xdb, 0x5f, 0x30, 0xef, 0x4d, 0x7c, 0xe6, 0x3b, 0xdb, 0x5f, 0x31, 0x8e, - 0xf4, 0xd7, 0xcc, 0x3b, 0xd3, 0x5f, 0x30, 0xef, 0x4d, 0x7c, 0xc3, 0xbc, - 0xb4, 0xf3, 0x0e, 0xf4, 0xd7, 0xcc, 0x63, 0xbd, 0x35, 0xf3, 0x98, 0xef, - 0x2d, 0x7c, 0xc6, 0x3b, 0xcb, 0x4f, 0x30, 0xef, 0x0d, 0x3c, 0xc3, 0xbc, - 0x34, 0xf3, 0x0f, 0x6e, 0xbf, 0x30, 0xf6, 0xcb, 0xf3, 0x0f, 0x6c, 0xbf, - 0x11, 0xed, 0x55, 0xe2, 0x3d, 0xa2, 0xfc, 0x44, 0xda, 0x2b, 0xc4, 0x7b, - 0x55, 0x1f, 0xd4, 0x7b, 0x45, 0x78, 0x8f, 0x68, 0xaf, 0x11, 0xed, 0x15, - 0xe2, 0x35, 0xd5, 0xe2, 0x3d, 0xa2, 0xbc, 0x46, 0xba, 0xbc, 0x46, 0xba, - 0xbc, 0x46, 0xb9, 0xf8, 0x8d, 0x73, 0x1a, 0xe6, 0x35, 0x95, 0xe2, 0x35, - 0xcf, 0xc4, 0x6b, 0x98, 0xd7, 0x50, 0x93, 0x45, 0x78, 0x8e, 0xae, 0x90, - 0xb5, 0x17, 0xba, 0xb9, 0x90, 0x26, 0x4d, 0x88, 0x98, 0xb7, 0xdd, 0xee, - 0xab, 0xb0, 0xfd, 0x95, 0x81, 0xc1, 0xa2, 0x8b, 0xae, 0xa2, 0xdc, 0x42, - 0x76, 0x2a, 0x35, 0x88, 0x54, 0x85, 0x46, 0xb1, 0x0a, 0x90, 0xa9, 0x0d, - 0x61, 0xac, 0x42, 0xa3, 0x58, 0x85, 0x48, 0x54, 0x6b, 0x0d, 0x61, 0x51, - 0x51, 0x51, 0x51, 0x51, 0x57, 0x54, 0x54, 0x54, 0x54, 0x56, 0xcd, 0x5f, - 0x23, 0x79, 0x19, 0x48, 0x74, 0x5a, 0x1c, 0x5a, 0xb3, 0x91, 0x9d, 0xe5, - 0x6d, 0xa3, 0x63, 0xfc, 0xc7, 0x11, 0x12, 0x11, 0x12, 0xb1, 0x51, 0x51, - 0x51, 0xac, 0x35, 0x86, 0xb0, 0xd6, 0xb3, 0x51, 0x51, 0x57, 0x54, 0x55, - 0xd5, 0x15, 0x31, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x57, 0x56, 0xc9, - 0x74, 0x81, 0x1c, 0x8d, 0xc9, 0x4e, 0xe5, 0x11, 0x95, 0xa6, 0xc7, 0x72, - 0x15, 0xc9, 0xc7, 0xb8, 0x74, 0x13, 0xb8, 0x46, 0xcf, 0x17, 0xf4, 0x8b, - 0xea, 0x5d, 0x9d, 0x36, 0x3e, 0x89, 0xb9, 0x86, 0x68, 0x5a, 0x6f, 0xf2, - 0xd5, 0xc9, 0xcd, 0x15, 0x0d, 0xc1, 0x47, 0xc6, 0xd4, 0x2e, 0x22, 0x09, - 0x33, 0xaa, 0x8a, 0x20, 0xf7, 0x1c, 0x22, 0x40, 0x91, 0xef, 0x97, 0x47, - 0x61, 0x8f, 0x6a, 0x92, 0xbd, 0xda, 0x36, 0x72, 0xb4, 0xdf, 0x22, 0xb9, - 0x3b, 0x48, 0xcb, 0x66, 0xe0, 0x85, 0x16, 0xf3, 0x32, 0x11, 0x33, 0x88, - 0xd6, 0x3b, 0x86, 0xb1, 0x82, 0x52, 0x4e, 0x06, 0x5b, 0xc6, 0x92, 0x6a, - 0x99, 0xa4, 0x8a, 0x1e, 0x2e, 0x52, 0xca, 0x46, 0x4a, 0x2f, 0xb8, 0xa9, - 0x8a, 0x98, 0x66, 0x95, 0x4c, 0x84, 0x0a, 0x90, 0x23, 0xf4, 0x7b, 0x33, - 0xaa, 0x54, 0x2a, 0x37, 0x86, 0x64, 0x73, 0x23, 0x8d, 0x70, 0x09, 0x84, - 0xa2, 0x82, 0x31, 0x57, 0x31, 0x56, 0xf8, 0xaa, 0x22, 0x52, 0x27, 0x56, - 0x41, 0x9e, 0xf2, 0x33, 0x20, 0x78, 0xb8, 0xa3, 0x40, 0x64, 0x76, 0x50, - 0xed, 0x1b, 0xe6, 0x15, 0xa6, 0xd9, 0x15, 0xc8, 0x10, 0x6d, 0xc5, 0x06, - 0xf9, 0x3d, 0x19, 0xcf, 0x91, 0x06, 0x86, 0x65, 0x13, 0x23, 0x28, 0x7a, - 0x8a, 0x17, 0x80, 0xa8, 0x49, 0x9d, 0x7a, 0x50, 0x88, 0xd2, 0xb0, 0x4f, - 0x37, 0x41, 0x2a, 0x84, 0x43, 0x58, 0xce, 0x52, 0xf1, 0x13, 0x28, 0xf5, - 0x14, 0x7e, 0x82, 0x24, 0x70, 0x09, 0xc8, 0x9e, 0x41, 0x94, 0x0c, 0xba, - 0x73, 0xe9, 0x04, 0x74, 0x4a, 0x70, 0xeb, 0x02, 0xf9, 0xc5, 0x0f, 0x0f, - 0xfc, 0x72, 0x8d, 0x29, 0xe8, 0xa4, 0xce, 0x44, 0x3a, 0x25, 0x23, 0x81, - 0x9c, 0x7e, 0x80, 0xa6, 0x2f, 0x33, 0x1c, 0x37, 0x89, 0x4a, 0x27, 0x02, - 0x0a, 0x56, 0xe4, 0xb9, 0x2d, 0x13, 0x22, 0x54, 0xbe, 0xa3, 0xa3, 0xee, - 0x2c, 0x8f, 0xe8, 0x60, 0xc2, 0xfa, 0x07, 0xd4, 0x8c, 0xa4, 0x14, 0x69, - 0x28, 0x26, 0x32, 0x20, 0xce, 0xfe, 0x81, 0x46, 0xcb, 0x32, 0x37, 0x68, - 0xd9, 0xca, 0xd3, 0x6c, 0x8a, 0xe4, 0x38, 0x06, 0x90, 0xa4, 0x2d, 0x23, - 0x31, 0x86, 0xd8, 0xa7, 0xee, 0xff, 0x00, 0xea, 0x1a, 0x4e, 0x52, 0xe6, - 0xe2, 0x0d, 0xb2, 0xfd, 0xc8, 0x7f, 0x42, 0xbf, 0xda, 0x6e, 0x65, 0xf2, - 0xd2, 0x3a, 0x7d, 0x1e, 0xad, 0xe1, 0x28, 0x89, 0x14, 0x4e, 0x13, 0x0c, - 0x91, 0x09, 0x11, 0xd1, 0xca, 0x49, 0xac, 0xa2, 0x93, 0x81, 0x8e, 0x9c, - 0x63, 0x23, 0x2f, 0x41, 0x11, 0x79, 0x98, 0x87, 0x88, 0x8f, 0xb8, 0xbe, - 0x7f, 0xf8, 0x1a, 0x33, 0x33, 0x87, 0x4a, 0x65, 0x89, 0x39, 0x28, 0xe3, - 0x10, 0x6a, 0xf7, 0x94, 0x94, 0xfa, 0x85, 0x62, 0x3a, 0xc5, 0x0d, 0xc1, - 0x47, 0xee, 0xcf, 0xa2, 0x27, 0x65, 0x96, 0x2e, 0xd1, 0xbe, 0x61, 0x5a, - 0x6b, 0x91, 0x5c, 0x9c, 0xa8, 0x5a, 0x41, 0xfc, 0x67, 0xc8, 0x34, 0x44, - 0x35, 0xe1, 0x37, 0xf4, 0x21, 0xbe, 0x31, 0x1a, 0x56, 0x52, 0xff, 0x00, - 0x71, 0x3d, 0xbe, 0x4f, 0xb9, 0x0f, 0xe9, 0x57, 0xfb, 0x4d, 0xcc, 0xbe, - 0x59, 0x06, 0x07, 0xba, 0x2a, 0x23, 0x2b, 0xc4, 0x37, 0x55, 0x27, 0xc0, - 0x32, 0x69, 0xf9, 0xba, 0x44, 0x4a, 0xc6, 0xf7, 0x19, 0x99, 0x99, 0x98, - 0x62, 0x95, 0x4d, 0x26, 0xa8, 0x40, 0x32, 0x86, 0xf4, 0x44, 0x44, 0x8c, - 0xc8, 0xef, 0x27, 0x33, 0x8a, 0x62, 0x4b, 0x52, 0xd2, 0xae, 0x34, 0x11, - 0x4f, 0x59, 0x17, 0xbd, 0x8a, 0x77, 0x12, 0x81, 0x86, 0xcc, 0xd5, 0x24, - 0xa9, 0x5e, 0x07, 0xb8, 0x47, 0xa3, 0x03, 0x2d, 0xc6, 0x22, 0x93, 0xea, - 0x9d, 0x2c, 0xb2, 0xc5, 0xda, 0x3e, 0x72, 0xb4, 0xdb, 0x22, 0xb9, 0x39, - 0xae, 0x50, 0x76, 0x7f, 0x0c, 0xe6, 0x9a, 0x8e, 0xac, 0xc5, 0xce, 0xeb, - 0x48, 0x19, 0x26, 0x87, 0x23, 0xe2, 0xe8, 0x09, 0x6f, 0x15, 0x83, 0x8a, - 0x26, 0xee, 0x8c, 0x70, 0x12, 0x31, 0x57, 0x54, 0x61, 0x41, 0x57, 0x4c, - 0x4a, 0xa3, 0xfe, 0x1d, 0x11, 0x53, 0x15, 0x15, 0x31, 0x18, 0xd9, 0x63, - 0x8b, 0xb4, 0x7c, 0xe5, 0x69, 0xb6, 0x43, 0xe4, 0x0c, 0xb7, 0x06, 0x98, - 0x59, 0x99, 0x8a, 0x90, 0xa8, 0x99, 0x91, 0x88, 0x11, 0x91, 0x0a, 0x8d, - 0x61, 0xae, 0x44, 0x35, 0x88, 0x6b, 0x8a, 0x90, 0xd6, 0x15, 0x1b, 0x86, - 0xb0, 0xd6, 0x21, 0xac, 0x2a, 0x2a, 0x2a, 0x2a, 0xea, 0xba, 0xa2, 0xb4, - 0x1c, 0x1d, 0x5f, 0x47, 0xca, 0xc3, 0x1c, 0x5c, 0xc3, 0x39, 0x03, 0xb2, - 0xdb, 0x22, 0xb9, 0x39, 0xa4, 0x6e, 0x06, 0xf2, 0x22, 0x9c, 0x64, 0x14, - 0xcc, 0xce, 0x3d, 0x1d, 0xbf, 0x49, 0x32, 0x5f, 0x5d, 0x8a, 0x7a, 0x7d, - 0x18, 0x56, 0xc3, 0x29, 0x6f, 0x73, 0x0c, 0xe4, 0x0e, 0xcb, 0x4c, 0xa6, - 0x20, 0x1a, 0x46, 0xe0, 0x6f, 0xd1, 0xca, 0xb1, 0x59, 0x48, 0x69, 0x31, - 0xf7, 0xcf, 0x6f, 0xd2, 0x8a, 0xfd, 0x1d, 0x56, 0x19, 0x13, 0x98, 0xe7, - 0x20, 0x78, 0xd9, 0x6b, 0x91, 0x5c, 0x9c, 0xbb, 0xe0, 0x0e, 0x37, 0xbf, - 0x46, 0xce, 0x43, 0x49, 0xce, 0x7b, 0x7e, 0x91, 0xf2, 0x15, 0x61, 0x96, - 0x20, 0x83, 0x1c, 0xe4, 0x0e, 0xcb, 0x5c, 0x87, 0xc8, 0x18, 0x6b, 0x2d, - 0xc0, 0xdf, 0xa2, 0xfc, 0xc2, 0xe6, 0x34, 0x9c, 0xe7, 0xb7, 0xb6, 0xf9, - 0x0b, 0xb0, 0xcf, 0x10, 0x41, 0x96, 0x62, 0x0a, 0xc6, 0xcb, 0x5c, 0x8a, - 0xe4, 0xe6, 0xb7, 0x74, 0x41, 0xbf, 0x46, 0xf9, 0x85, 0xcc, 0x69, 0x39, - 0xcf, 0x6f, 0x69, 0xc5, 0x8a, 0xec, 0x32, 0xc5, 0xcc, 0xb3, 0x10, 0x56, - 0x36, 0x5a, 0xe4, 0x3e, 0x4e, 0x5e, 0x00, 0xdf, 0xa3, 0x7c, 0xc4, 0xf3, - 0x1a, 0x56, 0x73, 0xdb, 0xd7, 0xf2, 0x57, 0x61, 0x96, 0x2e, 0x67, 0x98, - 0x2b, 0x1b, 0x2d, 0x72, 0x1f, 0x27, 0x35, 0xca, 0x0d, 0xfa, 0x37, 0xcc, - 0x4f, 0x31, 0xa4, 0xe6, 0xdb, 0xd4, 0x57, 0xb2, 0x57, 0x2b, 0x0c, 0xb1, - 0x04, 0x11, 0x88, 0x3b, 0x2d, 0x32, 0x2b, 0x93, 0x9a, 0x6f, 0x28, 0x05, - 0x62, 0xfd, 0x1b, 0xe6, 0x27, 0x98, 0xd2, 0x33, 0x6d, 0xff, 0x00, 0xfc, - 0x95, 0xca, 0xc3, 0x2c, 0xc0, 0x82, 0x31, 0x07, 0x65, 0x79, 0x4f, 0x93, - 0x9a, 0x17, 0x00, 0xbc, 0x5f, 0xa3, 0xfc, 0xc4, 0xf3, 0x1a, 0x4e, 0x3b, - 0x79, 0x7c, 0xb5, 0x72, 0xb0, 0xcb, 0x17, 0x16, 0x20, 0xec, 0xaf, 0x29, - 0xf2, 0x72, 0xcf, 0x80, 0x56, 0x2f, 0xd1, 0xfe, 0x62, 0x79, 0x8d, 0x23, - 0x1d, 0xbd, 0x39, 0x15, 0xca, 0xc3, 0x2c, 0x41, 0x04, 0xe2, 0x0e, 0xca, - 0xb0, 0x72, 0xf0, 0x0d, 0x31, 0x7e, 0x8f, 0xf3, 0x0b, 0x98, 0xd2, 0x31, - 0xdb, 0xd9, 0xe5, 0x57, 0x2b, 0x0c, 0x71, 0x04, 0x13, 0x88, 0x3b, 0x4a, - 0xbc, 0x1e, 0x01, 0xa9, 0x7c, 0x4f, 0x61, 0xf3, 0x0b, 0x98, 0xd2, 0x31, - 0xdb, 0xd9, 0x65, 0x57, 0x2b, 0x0c, 0x71, 0x72, 0x63, 0x78, 0x3b, 0x46, - 0x25, 0x70, 0x6c, 0x5f, 0x10, 0x8b, 0x98, 0x67, 0x2e, 0x63, 0x48, 0xdb, - 0xd8, 0x60, 0xae, 0x56, 0x18, 0xb9, 0x38, 0x83, 0xb4, 0xac, 0x41, 0xe0, - 0x1b, 0x62, 0xf6, 0x3b, 0xfa, 0xe5, 0xcc, 0x37, 0xdb, 0xd8, 0x7f, 0x57, - 0x20, 0x77, 0x3d, 0x93, 0x93, 0x8d, 0xa3, 0x0a, 0xc4, 0x18, 0x6b, 0x8b, - 0xf4, 0x7f, 0x98, 0x9e, 0x63, 0x48, 0xdb, 0xf4, 0x7f, 0xaf, 0x20, 0x6f, - 0x64, 0xe4, 0xe2, 0x0e, 0xc9, 0xe0, 0x15, 0x88, 0x30, 0xd7, 0x17, 0xb2, - 0xce, 0x46, 0x34, 0x8f, 0xa6, 0xdf, 0xa3, 0x7d, 0x79, 0x58, 0x65, 0x88, - 0x90, 0x48, 0x3b, 0x4b, 0xc4, 0x18, 0x6d, 0x8b, 0xd9, 0x67, 0x21, 0xa4, - 0x7d, 0x36, 0xfd, 0x1b, 0xeb, 0xc8, 0x2b, 0x17, 0xb2, 0xc5, 0xc9, 0x07, - 0x69, 0x79, 0x81, 0xdd, 0x00, 0xd8, 0xbe, 0x27, 0xb3, 0xcc, 0x41, 0xbf, - 0xd3, 0x6f, 0xd1, 0x7e, 0xbc, 0x82, 0xb1, 0x7b, 0x1c, 0x5c, 0x9c, 0x41, - 0xd9, 0x30, 0xd3, 0x31, 0x8a, 0x86, 0xd2, 0x87, 0x59, 0xec, 0xee, 0xe9, - 0x10, 0x6f, 0xf4, 0xe5, 0xb7, 0xe8, 0xb8, 0x9f, 0x20, 0xac, 0x5e, 0xca, - 0x37, 0xb9, 0x18, 0x83, 0xb2, 0xac, 0x03, 0x6c, 0xe6, 0xe6, 0xf9, 0x9e, - 0xcf, 0x31, 0x06, 0xdf, 0x4e, 0x5b, 0x7e, 0x89, 0x89, 0xf2, 0x30, 0xbc, - 0x4d, 0xd5, 0x0c, 0x71, 0x73, 0x22, 0xbd, 0x44, 0x56, 0x95, 0x80, 0x6f, - 0x9c, 0xdc, 0xdb, 0x33, 0xd1, 0x98, 0x83, 0x6f, 0xa7, 0x2d, 0xbf, 0x43, - 0xcc, 0x7c, 0x8c, 0x2f, 0x33, 0xd9, 0x62, 0xe6, 0x19, 0xc8, 0x11, 0xda, - 0x6d, 0x9c, 0xc1, 0x86, 0xbb, 0x9e, 0x8c, 0xc4, 0x1a, 0xe0, 0x5c, 0xb6, - 0xfd, 0x13, 0x37, 0xd8, 0x34, 0xbb, 0xa4, 0x6f, 0x66, 0xed, 0x1f, 0x39, - 0x02, 0xb2, 0x41, 0xae, 0x67, 0x35, 0x1c, 0x1c, 0xce, 0x17, 0x90, 0x69, - 0x81, 0x72, 0xdb, 0xf4, 0x3c, 0xdf, 0x60, 0xd0, 0xbe, 0x23, 0x7a, 0x1d, - 0xa3, 0xe6, 0xb6, 0xd7, 0x17, 0x2c, 0x13, 0x91, 0x88, 0x69, 0x81, 0x72, - 0xdb, 0xf4, 0x3c, 0xdf, 0x60, 0xd3, 0x31, 0xbd, 0x2e, 0x61, 0x98, 0x15, - 0xa5, 0xe0, 0x47, 0xe8, 0xe5, 0x60, 0xf4, 0x5f, 0x12, 0x0b, 0xc0, 0xb9, - 0x6d, 0xfa, 0x1e, 0x6f, 0xb0, 0x6b, 0x9c, 0xc5, 0xee, 0x27, 0x32, 0xc6, - 0xda, 0xb0, 0x2e, 0x43, 0x80, 0x4e, 0x0f, 0x46, 0x35, 0x0b, 0xc0, 0xb9, - 0x6d, 0xfa, 0x1e, 0x6f, 0xb0, 0x6b, 0x9c, 0xde, 0x6e, 0x67, 0x2b, 0xf9, - 0x5b, 0x69, 0x07, 0x31, 0x3e, 0x0f, 0x49, 0xd2, 0x06, 0x54, 0x0a, 0xc0, - 0xb9, 0x6d, 0xfa, 0x1e, 0x6f, 0xb0, 0x6e, 0x5f, 0x19, 0xbd, 0x66, 0xe4, - 0x60, 0xae, 0x56, 0xfe, 0x84, 0xe6, 0x2b, 0x2c, 0x1c, 0x40, 0xb1, 0x0a, - 0xca, 0x5b, 0x7e, 0x87, 0x9b, 0xec, 0x1b, 0x9f, 0xc6, 0xae, 0x6f, 0x59, - 0xef, 0x83, 0x8b, 0x2a, 0xb9, 0x5b, 0x41, 0xfc, 0x3f, 0x73, 0x72, 0x0e, - 0xe5, 0x3c, 0xb1, 0x07, 0x94, 0xb6, 0xfd, 0x13, 0x37, 0xd8, 0x37, 0xce, - 0x6f, 0x68, 0x62, 0xee, 0x01, 0x30, 0x9f, 0x54, 0xed, 0xb3, 0xca, 0xe5, - 0xc6, 0x27, 0x07, 0x90, 0xfe, 0x92, 0xdb, 0xf4, 0x4c, 0xe3, 0x49, 0xf9, - 0x8a, 0xe6, 0xf3, 0x57, 0xbc, 0xe8, 0xfc, 0x26, 0x76, 0xd8, 0x9f, 0x07, - 0x36, 0x4f, 0x08, 0x83, 0xdc, 0xf2, 0xe2, 0x82, 0x3d, 0xbf, 0x45, 0x22, - 0xf7, 0xa2, 0x34, 0xa9, 0xc7, 0xf7, 0x8a, 0xe6, 0xf4, 0x90, 0xe2, 0x17, - 0x93, 0xee, 0x56, 0xd8, 0x7d, 0x5c, 0xa2, 0xe0, 0x1a, 0x22, 0xe5, 0x3f, - 0x46, 0x5c, 0x61, 0xa4, 0xb2, 0x47, 0x41, 0x45, 0x78, 0xd4, 0x31, 0xa8, - 0x63, 0x50, 0x6a, 0x0d, 0x41, 0xa9, 0xea, 0x35, 0x3d, 0x46, 0xa7, 0xa8, - 0xd4, 0xf5, 0x1a, 0x9e, 0xa3, 0x53, 0xd4, 0x6a, 0x7a, 0x8d, 0x4f, 0x51, - 0xa9, 0xea, 0x35, 0x7d, 0x46, 0xa7, 0xa8, 0xd5, 0xf5, 0x14, 0x2f, 0x11, - 0x42, 0xf1, 0x14, 0x2f, 0x11, 0xb8, 0x6e, 0x1b, 0x86, 0xe1, 0xb8, 0x6e, - 0x1b, 0x86, 0xe1, 0xb8, 0x6e, 0x06, 0xd5, 0x07, 0x16, 0xb0, 0x81, 0x70, - 0x11, 0xde, 0xe2, 0x20, 0x92, 0xa4, 0x9c, 0xd8, 0xfe, 0x1b, 0x6c, 0x8e, - 0xe5, 0x38, 0xe4, 0x1a, 0x71, 0x9b, 0xe5, 0x21, 0x53, 0x1a, 0xe3, 0x58, - 0xc6, 0xb1, 0x8d, 0x63, 0xf1, 0x1a, 0xc3, 0x58, 0xc6, 0xb1, 0x8d, 0x63, - 0x15, 0x3f, 0x11, 0xac, 0x7e, 0x22, 0xa7, 0xe2, 0x35, 0x8c, 0x6b, 0x1f, - 0x88, 0xd6, 0x31, 0x53, 0xf1, 0x15, 0x31, 0x53, 0x15, 0x31, 0x53, 0x8e, - 0x22, 0xae, 0x8d, 0x92, 0xb4, 0x82, 0xb8, 0x4e, 0x63, 0x70, 0x6e, 0x78, - 0x5b, 0x8f, 0xba, 0xb2, 0x05, 0x7b, 0x99, 0x34, 0xbf, 0x63, 0x90, 0xc2, - 0xc4, 0x9f, 0x20, 0x76, 0xe5, 0x47, 0x1a, 0xae, 0x17, 0x83, 0xdf, 0xc0, - 0x35, 0x54, 0x2a, 0xab, 0x6d, 0xbf, 0xee, 0xf7, 0x54, 0x28, 0xff, 0x00, - 0x32, 0x66, 0x38, 0xd8, 0x90, 0xc3, 0xb1, 0xfb, 0x8b, 0xed, 0x4a, 0x4f, - 0x95, 0x44, 0x1c, 0x73, 0x98, 0x80, 0x23, 0x7c, 0x1c, 0x7b, 0xa0, 0xe8, - 0xc2, 0x66, 0x3e, 0xce, 0x8e, 0xf3, 0x59, 0xdb, 0x6a, 0x9b, 0xd2, 0x6e, - 0xa0, 0x52, 0x21, 0x52, 0x84, 0x0c, 0x34, 0x66, 0x7b, 0x8f, 0xb4, 0xe3, - 0x6e, 0x42, 0x82, 0x42, 0x2e, 0x32, 0xb1, 0xf7, 0x06, 0xe8, 0xbe, 0x20, - 0x92, 0x12, 0x54, 0x7e, 0x8e, 0x57, 0x94, 0x7b, 0x05, 0xa6, 0x3a, 0xaa, - 0x32, 0x79, 0x35, 0x22, 0x92, 0xa5, 0xd8, 0x4d, 0xfc, 0x2c, 0xd5, 0xd3, - 0x77, 0x0b, 0x45, 0x70, 0x93, 0xe7, 0x37, 0x41, 0xf4, 0x71, 0x40, 0x11, - 0x06, 0x48, 0xf7, 0x52, 0x45, 0xd8, 0x34, 0xf8, 0xba, 0xc2, 0xec, 0x01, - 0x70, 0x9c, 0x82, 0xb7, 0xaa, 0xa5, 0xd8, 0x4a, 0x42, 0x96, 0x78, 0x3e, - 0x10, 0x7c, 0xcc, 0x48, 0xe4, 0x2e, 0xb1, 0x79, 0xd9, 0x9d, 0x8f, 0x51, - 0x20, 0x57, 0x06, 0x28, 0xf7, 0x95, 0x3e, 0xc5, 0x9b, 0x5a, 0xfe, 0x57, - 0x19, 0x7a, 0x03, 0x23, 0x30, 0xa8, 0x14, 0x12, 0xa9, 0x94, 0x2d, 0xca, - 0xc4, 0x6c, 0xdc, 0x76, 0x2a, 0xfe, 0x20, 0xe0, 0xee, 0x16, 0x0c, 0xdd, - 0x70, 0xe0, 0x0b, 0x71, 0x70, 0x13, 0x13, 0x0a, 0x6a, 0x7f, 0xe1, 0xa4, - 0xfb, 0x16, 0x97, 0xa7, 0xac, 0x42, 0x02, 0x9c, 0x47, 0x00, 0xa3, 0x2d, - 0x64, 0xf5, 0x8b, 0xb0, 0x85, 0xa9, 0xd8, 0xbc, 0x40, 0x49, 0xfc, 0x45, - 0x1d, 0x7d, 0xa3, 0x04, 0x0a, 0x31, 0x83, 0xa2, 0x0d, 0xa1, 0xd5, 0xaa, - 0xbb, 0x18, 0x1d, 0x02, 0xd9, 0x1f, 0xe5, 0x54, 0x04, 0x39, 0x83, 0xeb, - 0x5e, 0x23, 0xe8, 0x24, 0x5f, 0xbb, 0x54, 0xc9, 0xd3, 0x7d, 0xdd, 0x96, - 0xf1, 0xc1, 0xc4, 0x7b, 0xdf, 0x27, 0x5e, 0x2f, 0xb0, 0x56, 0x2e, 0x06, - 0x0e, 0x5f, 0x50, 0x94, 0x94, 0xcc, 0xcc, 0x33, 0x64, 0x5f, 0x90, 0xa1, - 0xd9, 0x33, 0x6e, 0x45, 0x5e, 0xaa, 0xbf, 0xef, 0xfd, 0xa0, 0x8c, 0x04, - 0xcf, 0x80, 0xe0, 0x0e, 0xf1, 0x03, 0xae, 0xc1, 0x03, 0x17, 0x58, 0x9b, - 0xa0, 0xf2, 0x7c, 0x08, 0x50, 0x10, 0x2f, 0xb3, 0xbf, 0x1d, 0x45, 0xd5, - 0x65, 0x3f, 0xaf, 0x66, 0xd1, 0x8f, 0xbc, 0x52, 0xc4, 0x29, 0x26, 0x5c, - 0x20, 0x2e, 0x1e, 0xb2, 0x10, 0x85, 0x07, 0xe2, 0x11, 0x41, 0x27, 0x77, - 0x63, 0x7b, 0xe8, 0xfa, 0x83, 0x14, 0xb7, 0x3b, 0x04, 0xe8, 0x40, 0xfe, - 0xa3, 0x8d, 0xee, 0x22, 0xa8, 0x66, 0x88, 0x75, 0xd5, 0xd6, 0x57, 0x68, - 0x5a, 0x42, 0x68, 0xba, 0xe2, 0x38, 0x99, 0x78, 0x0b, 0xa3, 0x47, 0x2c, - 0x8e, 0x52, 0x06, 0x9e, 0xca, 0xfe, 0xca, 0x96, 0x0e, 0xc7, 0xe8, 0x23, - 0x0f, 0x41, 0x59, 0xf0, 0x1f, 0xf0, 0x09, 0xa2, 0xca, 0x2c, 0x99, 0x75, - 0xbf, 0xe3, 0xb5, 0x5b, 0x15, 0xd1, 0x5e, 0x86, 0x14, 0x85, 0x14, 0x0c, - 0x8e, 0x03, 0xe8, 0x38, 0xc6, 0x02, 0x63, 0xf1, 0x77, 0x9d, 0x89, 0x76, - 0x85, 0x49, 0x4e, 0xc5, 0x1d, 0x1d, 0xe2, 0x56, 0x23, 0xb8, 0x71, 0xa3, - 0xc9, 0x09, 0x99, 0xa8, 0x21, 0x97, 0xe7, 0xaa, 0xf1, 0xed, 0xbf, 0x69, - 0x41, 0x75, 0x92, 0x50, 0x5e, 0x02, 0x72, 0x80, 0x2b, 0x9c, 0xa2, 0x87, - 0x4b, 0x8f, 0xa8, 0x32, 0x7c, 0xb6, 0x0c, 0x5f, 0x27, 0xce, 0x42, 0x75, - 0x11, 0xad, 0xd3, 0x76, 0xf2, 0x3b, 0xc7, 0xed, 0x4d, 0x4a, 0x3d, 0x1d, - 0x4e, 0xdc, 0xc8, 0xe6, 0x46, 0x22, 0x9f, 0x64, 0xa9, 0xa4, 0xc4, 0x77, - 0x8d, 0xfc, 0x4c, 0x1c, 0x79, 0x08, 0x97, 0x54, 0x8f, 0x61, 0xbb, 0xb0, - 0x8d, 0x25, 0x78, 0x23, 0x1b, 0xc7, 0xea, 0x12, 0xcc, 0xb5, 0x0a, 0x6a, - 0x3b, 0x82, 0x59, 0xa0, 0xa0, 0x44, 0x50, 0xd8, 0x14, 0xc5, 0x7b, 0xe8, - 0x77, 0x18, 0x52, 0x14, 0x5d, 0x13, 0x4c, 0x81, 0x5d, 0x19, 0x0f, 0x86, - 0xf0, 0xa5, 0x4a, 0x30, 0xc3, 0x68, 0x80, 0xbe, 0x60, 0x85, 0xe1, 0x2c, - 0xd0, 0x51, 0x33, 0x91, 0x10, 0x24, 0x9c, 0xdb, 0x1c, 0xd4, 0x7b, 0x11, - 0xb4, 0x42, 0x62, 0xdd, 0x05, 0xe6, 0x21, 0x03, 0x99, 0xc6, 0x80, 0xe9, - 0x88, 0x84, 0xef, 0x07, 0x29, 0x76, 0x97, 0xdb, 0xa5, 0xa9, 0x8b, 0xc1, - 0x69, 0x8d, 0xcb, 0xae, 0x7e, 0xcc, 0xae, 0xe3, 0xb2, 0x1e, 0x94, 0xc4, - 0xa4, 0x7a, 0xe9, 0xb8, 0xef, 0x13, 0xff, 0x00, 0xd0, 0x64, 0x66, 0x09, - 0x54, 0x8d, 0xdd, 0xad, 0x2c, 0xd3, 0xb0, 0xfd, 0xa1, 0xb1, 0x7e, 0xe1, - 0x17, 0xfe, 0x6d, 0x94, 0xc8, 0xca, 0x24, 0x75, 0x21, 0xf8, 0x89, 0x9e, - 0x8e, 0xd0, 0xeb, 0x77, 0x00, 0x51, 0xac, 0x6e, 0xe0, 0x21, 0x08, 0xcb, - 0x58, 0xf6, 0x8b, 0xe0, 0x12, 0xcd, 0x32, 0x66, 0x53, 0x5a, 0xb7, 0x10, - 0x43, 0x16, 0x45, 0xd1, 0x42, 0x69, 0xb3, 0x29, 0x93, 0x42, 0x8a, 0x14, - 0x0d, 0x91, 0xd2, 0xa4, 0xb2, 0xde, 0x42, 0xbc, 0x45, 0x36, 0x74, 0x31, - 0x64, 0x5d, 0x25, 0xaa, 0x52, 0x09, 0x62, 0x89, 0xab, 0xf3, 0x2a, 0xf3, - 0xda, 0x0d, 0x9a, 0xa4, 0xb2, 0x9a, 0x15, 0x71, 0x86, 0x8c, 0xda, 0x24, - 0xd1, 0xd1, 0x28, 0x4f, 0x79, 0x8b, 0xb6, 0x4b, 0x9c, 0x49, 0x84, 0x4e, - 0xe1, 0xf8, 0x8d, 0x13, 0xfc, 0x4b, 0x42, 0x9f, 0xc2, 0x5b, 0x57, 0xe2, - 0x33, 0x2f, 0xe2, 0x51, 0x48, 0x7e, 0x62, 0xb8, 0x19, 0x1d, 0x77, 0xec, - 0xc9, 0xd3, 0xb4, 0x84, 0xfc, 0xb4, 0x9f, 0x3d, 0xb0, 0xf4, 0xd6, 0x09, - 0xeb, 0x7f, 0x88, 0x45, 0xcc, 0x1c, 0x6b, 0xb2, 0x7e, 0x23, 0x42, 0xfe, - 0x1d, 0x15, 0x30, 0x49, 0x49, 0x41, 0x25, 0x22, 0x2d, 0xb2, 0x06, 0x51, - 0x23, 0xdc, 0x3f, 0x1d, 0x97, 0x77, 0x69, 0x4e, 0x1c, 0x36, 0x34, 0x31, - 0x66, 0x55, 0xa9, 0xdc, 0x10, 0xc1, 0x99, 0x40, 0x93, 0xeb, 0xb7, 0x34, - 0xd1, 0xda, 0x94, 0x50, 0xbf, 0x40, 0xb6, 0x0b, 0x2a, 0x50, 0xef, 0xd8, - 0x49, 0x25, 0x33, 0x04, 0xb5, 0x17, 0xef, 0xd7, 0x5e, 0x1f, 0xc8, 0x0d, - 0x48, 0x2f, 0xe2, 0x19, 0x4c, 0xb8, 0x90, 0x34, 0x9d, 0x4b, 0x60, 0x2d, - 0x29, 0xa9, 0x48, 0xb5, 0x3f, 0x5f, 0xe4, 0x47, 0xa5, 0x32, 0x4f, 0x55, - 0x47, 0xd7, 0x22, 0xdd, 0xdb, 0xb3, 0x62, 0x9d, 0xf5, 0x3b, 0x82, 0x49, - 0x25, 0x04, 0xc2, 0x09, 0x2e, 0x1f, 0xc8, 0x96, 0xcd, 0x45, 0x1e, 0x91, - 0x40, 0x2d, 0x29, 0xd0, 0xda, 0xb4, 0x4c, 0x64, 0xa4, 0xa6, 0x31, 0x1d, - 0xc3, 0x48, 0xff, 0x00, 0x4c, 0xc7, 0x70, 0xd2, 0x3f, 0xd3, 0x31, 0xdc, - 0x1b, 0xf9, 0x0c, 0x77, 0x06, 0xfe, 0x41, 0xdc, 0x1b, 0x79, 0x47, 0x71, - 0x68, 0x3b, 0x92, 0xbc, 0x48, 0x77, 0x35, 0x79, 0x88, 0x77, 0x33, 0xf3, - 0x10, 0xee, 0x67, 0xe6, 0x4f, 0xea, 0x3b, 0xa7, 0xf7, 0xa7, 0xf5, 0x1d, - 0xd3, 0xfb, 0xd3, 0xfa, 0x8e, 0xeb, 0xfd, 0xe9, 0xfd, 0x41, 0xaf, 0x49, - 0x4a, 0x7f, 0x11, 0x5b, 0xab, 0x2f, 0xf3, 0xb7, 0xff, 0xc4, 0x00, 0x2b, - 0x10, 0x00, 0x02, 0x02, 0x01, 0x03, 0x02, 0x05, 0x05, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x21, 0x31, 0x41, 0x51, - 0x61, 0x71, 0xa1, 0x20, 0x81, 0x91, 0xb1, 0xf0, 0x10, 0x40, 0xc1, 0xd1, - 0xe1, 0xf1, 0x30, 0x50, 0x60, 0xff, 0xda, 0x00, 0x08, 0x01, 0x01, 0x00, - 0x01, 0x3f, 0x21, 0xff, 0x00, 0xe2, 0x11, 0x58, 0x8d, 0xb1, 0x9c, 0xc9, - 0xfe, 0x74, 0xff, 0x00, 0x3a, 0x7f, 0x9d, 0x39, 0x5e, 0x93, 0x95, 0xe9, - 0x39, 0x5e, 0x93, 0x95, 0xe9, 0x39, 0x5e, 0x93, 0x91, 0xe9, 0x39, 0x9e, - 0x93, 0x99, 0x38, 0x8c, 0x6d, 0x8c, 0xe4, 0x7a, 0x4e, 0x57, 0xa4, 0xe4, - 0x7a, 0x4e, 0x64, 0xe6, 0x7a, 0x4e, 0x23, 0xff, 0x00, 0x30, 0x9f, 0x8c, - 0x0a, 0x2f, 0x3f, 0x80, 0x9d, 0x3c, 0x36, 0x7b, 0x97, 0x00, 0x22, 0xbe, - 0x82, 0xfc, 0x45, 0xee, 0x25, 0x7d, 0xa3, 0x94, 0xb5, 0xf9, 0xc4, 0x1c, - 0x5c, 0x09, 0x2e, 0x31, 0xb8, 0x5f, 0xd7, 0x2e, 0xfc, 0x99, 0xcc, 0x79, - 0xe5, 0xd8, 0xcf, 0x5f, 0xd2, 0x6b, 0xf0, 0x41, 0x9a, 0xdc, 0x66, 0x9f, - 0xa9, 0x68, 0x0f, 0x7d, 0xfc, 0x26, 0xcf, 0xae, 0x8e, 0xb2, 0x7d, 0xed, - 0x1e, 0x1f, 0x71, 0x3a, 0xe7, 0x5c, 0x77, 0xef, 0xcc, 0x6b, 0xd6, 0xce, - 0xb1, 0xd4, 0x94, 0x2f, 0xb8, 0x01, 0xf5, 0xeb, 0xe5, 0x06, 0x7f, 0xa0, - 0x51, 0x6a, 0xb9, 0xdd, 0x06, 0x1b, 0x09, 0x3f, 0xec, 0x4f, 0xda, 0xb4, - 0xaf, 0xf3, 0xcc, 0x6f, 0xd6, 0x31, 0xfb, 0xd0, 0x49, 0x6d, 0x82, 0xeb, - 0x0f, 0x9c, 0x2d, 0xf9, 0x25, 0x20, 0x1e, 0x20, 0x64, 0xef, 0xb3, 0xb4, - 0x61, 0x2b, 0x2a, 0x27, 0xe8, 0x6c, 0x7f, 0xe1, 0x95, 0x7e, 0xc8, 0x36, - 0x83, 0x93, 0xed, 0xd6, 0x06, 0xfb, 0xbc, 0xdc, 0xe6, 0xd6, 0x24, 0xe6, - 0x38, 0x13, 0x7b, 0x99, 0x94, 0xaf, 0x93, 0x3f, 0xa9, 0x08, 0x37, 0x54, - 0xaf, 0x11, 0x37, 0xb4, 0x09, 0xfc, 0xd3, 0xfd, 0x29, 0xa2, 0x7f, 0x31, - 0x04, 0x7f, 0x09, 0xc1, 0xeb, 0xf4, 0x4e, 0x8d, 0xd6, 0x68, 0x1f, 0x39, - 0xa1, 0x20, 0xda, 0xbe, 0x91, 0xe7, 0x5c, 0x0c, 0xae, 0xd8, 0xed, 0x22, - 0x6e, 0x4e, 0x84, 0xf2, 0x84, 0x5f, 0xc4, 0x40, 0xcf, 0x68, 0x72, 0x7b, - 0x7e, 0x90, 0xf3, 0x39, 0x8f, 0x2f, 0x64, 0xbb, 0x96, 0xaa, 0x53, 0x9e, - 0xd1, 0x47, 0x63, 0xd2, 0x16, 0x65, 0xf9, 0x4d, 0x47, 0x2f, 0xec, 0xde, - 0x1d, 0xf3, 0x1e, 0x0c, 0xc2, 0x83, 0xce, 0x00, 0x3a, 0xcc, 0x23, 0xb2, - 0xa0, 0x44, 0xc6, 0x11, 0xa2, 0x26, 0x46, 0x74, 0x0f, 0x8a, 0x86, 0x68, - 0x4b, 0xbe, 0x5c, 0x23, 0x8d, 0x07, 0xe2, 0x10, 0x81, 0x60, 0x64, 0x91, - 0x2f, 0x90, 0xb7, 0x48, 0xe9, 0x14, 0xa2, 0x61, 0x21, 0x39, 0x7e, 0x5c, - 0x1b, 0xc6, 0xa1, 0xad, 0x67, 0x01, 0x4a, 0x0d, 0x78, 0x1b, 0x01, 0xf4, - 0x40, 0xf9, 0x48, 0xb1, 0xa8, 0x72, 0x20, 0x5b, 0x63, 0xd2, 0x72, 0x76, - 0xfa, 0x55, 0xed, 0xc2, 0xc5, 0x07, 0xa4, 0x9a, 0x6e, 0xba, 0xc3, 0x4a, - 0x27, 0xd6, 0x3b, 0x5a, 0x87, 0x74, 0xa2, 0x83, 0x65, 0x4d, 0x70, 0x5e, - 0xb2, 0x98, 0x59, 0x93, 0x8f, 0xd5, 0x0e, 0xfa, 0x3e, 0x99, 0xcd, 0x06, - 0x70, 0x13, 0x05, 0x03, 0x5f, 0xa2, 0x62, 0xb5, 0x0d, 0x32, 0x86, 0xd7, - 0x98, 0x57, 0x98, 0x8d, 0x62, 0x22, 0x15, 0x39, 0x81, 0x14, 0x85, 0x04, - 0x16, 0x80, 0x2c, 0x46, 0x91, 0x9e, 0xfb, 0xfe, 0x07, 0x89, 0x23, 0x92, - 0xbb, 0xa6, 0xa1, 0x98, 0x40, 0x50, 0x08, 0x2c, 0x83, 0x9f, 0xd4, 0x09, - 0x49, 0x54, 0x26, 0x32, 0xb5, 0x18, 0x03, 0x00, 0x89, 0xc9, 0x99, 0x06, - 0x10, 0xdb, 0xa3, 0xc4, 0x55, 0xe4, 0x84, 0xcc, 0xb8, 0x53, 0xa9, 0x6a, - 0xc5, 0x5b, 0x13, 0x9b, 0xd2, 0x0b, 0x44, 0xde, 0x22, 0xcf, 0xbc, 0xa5, - 0xb8, 0x01, 0x60, 0x33, 0xd4, 0x26, 0x97, 0x2c, 0x09, 0x18, 0x13, 0x44, - 0x33, 0x08, 0x01, 0x22, 0x7b, 0xc4, 0x2b, 0x79, 0xc0, 0x42, 0x80, 0x79, - 0x41, 0xe5, 0x44, 0x38, 0x06, 0x14, 0xd2, 0x61, 0xf8, 0x80, 0xee, 0x05, - 0x31, 0x97, 0xac, 0x5a, 0x9c, 0xf1, 0x32, 0x6e, 0xdf, 0xd0, 0xd0, 0x50, - 0x67, 0xc1, 0x99, 0x40, 0xb4, 0x44, 0x0c, 0x74, 0x87, 0x75, 0x60, 0x5b, - 0x39, 0x82, 0xf4, 0xc4, 0xe4, 0x3e, 0xe5, 0x78, 0xbe, 0x63, 0x74, 0x12, - 0x16, 0x70, 0x73, 0x29, 0x4c, 0xaa, 0x61, 0x12, 0xa5, 0x92, 0xce, 0x00, - 0x3a, 0xb9, 0x80, 0x0a, 0x7b, 0xc0, 0xba, 0x19, 0x9e, 0x60, 0xa3, 0x79, - 0x87, 0x4d, 0x1d, 0xd0, 0x7f, 0x99, 0x62, 0xbe, 0x56, 0x0e, 0x21, 0x0c, - 0x52, 0x48, 0x83, 0x80, 0xe1, 0x0e, 0x90, 0x85, 0xe6, 0x2b, 0xbc, 0xd9, - 0x0a, 0xe9, 0x05, 0xe2, 0x00, 0x7b, 0x42, 0x90, 0x80, 0xf5, 0x71, 0x17, - 0x44, 0x60, 0xc6, 0x46, 0x90, 0x22, 0x33, 0x14, 0x44, 0x1e, 0x62, 0x1f, - 0xd8, 0x16, 0x77, 0xc4, 0xd9, 0x50, 0xad, 0x48, 0xef, 0x05, 0x36, 0x3c, - 0x46, 0x56, 0xef, 0x12, 0x03, 0x79, 0xa2, 0xfd, 0x20, 0x22, 0xd5, 0x42, - 0x6a, 0x21, 0x39, 0xcb, 0x29, 0xd1, 0x7c, 0xcb, 0x29, 0xa4, 0x22, 0xb1, - 0xa4, 0x28, 0x9e, 0x26, 0xf0, 0x16, 0x90, 0xcd, 0x53, 0x42, 0x01, 0x1a, - 0xc1, 0x7f, 0x3a, 0xfc, 0x54, 0xf9, 0x56, 0x82, 0x05, 0x48, 0xe6, 0x50, - 0x0a, 0xb9, 0xbd, 0x26, 0xad, 0x0e, 0xb3, 0x16, 0xfc, 0xa0, 0x07, 0x8a, - 0x80, 0xa3, 0x84, 0x1a, 0xc1, 0x8e, 0x51, 0x28, 0xba, 0x0f, 0xdc, 0x20, - 0xd1, 0x61, 0x98, 0x44, 0x3a, 0x00, 0x0b, 0xd0, 0x40, 0x32, 0xc0, 0x3c, - 0xe1, 0x60, 0x1c, 0xc0, 0x64, 0x41, 0xd8, 0xb2, 0x44, 0xd8, 0x8a, 0xd7, - 0x58, 0xd2, 0x89, 0x2f, 0x14, 0x7f, 0x88, 0x72, 0xbd, 0x49, 0xfe, 0x94, - 0x33, 0xa9, 0xdb, 0x07, 0xa1, 0x84, 0x13, 0x01, 0x7a, 0xe0, 0x9c, 0xe6, - 0x17, 0xc9, 0x3c, 0x18, 0x32, 0xd4, 0x63, 0xcf, 0x68, 0x37, 0x11, 0x9e, - 0xb0, 0x81, 0xd0, 0x11, 0x86, 0x53, 0x39, 0x05, 0x04, 0x7b, 0x91, 0x9d, - 0xcc, 0xa3, 0x8c, 0xc7, 0xa7, 0xd1, 0x80, 0x8e, 0xf7, 0x87, 0x80, 0x24, - 0x76, 0xcb, 0x68, 0x05, 0x97, 0x82, 0x1c, 0x2a, 0x28, 0x06, 0xa1, 0x11, - 0xe6, 0x5e, 0x06, 0xf7, 0x28, 0xf9, 0x23, 0x04, 0x63, 0x83, 0x12, 0xde, - 0x5e, 0xf1, 0x08, 0xdc, 0xdc, 0x37, 0x66, 0xa5, 0xce, 0xc6, 0x09, 0x22, - 0xec, 0xa8, 0xcc, 0xf8, 0x3f, 0x10, 0xbf, 0x9d, 0x68, 0x18, 0x81, 0xe4, - 0x6f, 0x35, 0x0d, 0x81, 0x00, 0x08, 0x34, 0x45, 0x17, 0x2a, 0x18, 0x95, - 0x9e, 0xc2, 0x3e, 0x46, 0x23, 0xd6, 0x38, 0x69, 0x40, 0x0e, 0xe0, 0xb2, - 0x3a, 0x02, 0x1b, 0xd8, 0x41, 0x82, 0x3f, 0x24, 0x0a, 0x90, 0x9e, 0x51, - 0x6c, 0x5a, 0x07, 0x10, 0xc8, 0x57, 0xc8, 0x60, 0x02, 0x7f, 0x50, 0xf4, - 0x81, 0xc8, 0x6f, 0x1c, 0xb5, 0x30, 0x04, 0x8e, 0x94, 0x85, 0xc0, 0x40, - 0x2d, 0x6e, 0x0c, 0x8e, 0xf0, 0xd6, 0x0b, 0x04, 0x0b, 0x81, 0x9a, 0x00, - 0x14, 0x06, 0x16, 0xb9, 0xa8, 0x08, 0x94, 0x24, 0xda, 0x12, 0xff, 0x00, - 0x52, 0xbc, 0x8b, 0x67, 0xbd, 0x04, 0x81, 0xe0, 0x18, 0xef, 0x6a, 0x50, - 0x28, 0x6d, 0x07, 0x17, 0xb2, 0x14, 0x08, 0x9f, 0x68, 0x59, 0x06, 0x2a, - 0x83, 0x8d, 0xc6, 0x1a, 0xb0, 0xe1, 0x15, 0x80, 0xb2, 0xd8, 0x44, 0x1e, - 0xc7, 0x6c, 0x05, 0x9f, 0x71, 0x2f, 0xc2, 0xb6, 0x79, 0xd0, 0x42, 0x01, - 0xaa, 0xda, 0x0c, 0x32, 0xc1, 0x01, 0xa0, 0x7f, 0xa2, 0x1c, 0x59, 0x11, - 0xdd, 0x44, 0x7b, 0xa8, 0x24, 0x07, 0x63, 0x0f, 0x19, 0x95, 0xc1, 0x74, - 0x8f, 0x7d, 0x11, 0xd9, 0x12, 0x80, 0xd2, 0x3f, 0x4f, 0xe9, 0x43, 0x7f, - 0x88, 0x59, 0xd4, 0xa3, 0x1a, 0xca, 0x1a, 0x80, 0xc6, 0x1f, 0xa4, 0x10, - 0xa9, 0xf0, 0x5b, 0xf8, 0x90, 0x0f, 0xc8, 0xa0, 0x8a, 0x3e, 0xa8, 0x8c, - 0x24, 0xdf, 0x28, 0x80, 0xb4, 0x31, 0x31, 0x6d, 0x5c, 0x4d, 0xd2, 0xda, - 0x40, 0xd3, 0x5f, 0xa8, 0x4f, 0xcf, 0xa7, 0xa9, 0x99, 0x61, 0x86, 0x90, - 0xed, 0xd3, 0xed, 0x01, 0x83, 0xab, 0xe9, 0x82, 0xdb, 0x68, 0xd4, 0x25, - 0x83, 0xb4, 0xec, 0xd2, 0xb1, 0x44, 0x2d, 0x88, 0x41, 0xf8, 0x5a, 0x40, - 0x50, 0x08, 0xf0, 0x43, 0x0c, 0x25, 0x43, 0x84, 0x26, 0xc4, 0xda, 0x9e, - 0xa6, 0x2c, 0x39, 0x97, 0x0c, 0x88, 0x1a, 0x88, 0x0f, 0x4e, 0xb0, 0xe4, - 0x87, 0xe6, 0x01, 0xcd, 0x31, 0xcc, 0x25, 0xbc, 0xac, 0x41, 0xae, 0x89, - 0xee, 0x30, 0x40, 0x0c, 0xd9, 0xd0, 0x20, 0x14, 0xc2, 0x09, 0xd8, 0xf4, - 0x26, 0x3e, 0x73, 0x01, 0xd4, 0x48, 0x33, 0x5a, 0x62, 0xa1, 0x0c, 0x94, - 0x00, 0x73, 0x97, 0xe3, 0xbc, 0x08, 0x06, 0x89, 0xed, 0xea, 0xda, 0x18, - 0x39, 0x64, 0x47, 0x27, 0x31, 0xf9, 0x8d, 0xb8, 0x40, 0xa3, 0x61, 0x66, - 0x21, 0x78, 0xfd, 0xcf, 0x9a, 0xc4, 0xb1, 0xcf, 0x4f, 0xa3, 0x20, 0xbd, - 0xe1, 0x3e, 0x4e, 0x7c, 0x56, 0xf9, 0xd6, 0x88, 0x5a, 0x5a, 0x42, 0x03, - 0xb2, 0x14, 0x3d, 0x11, 0xd6, 0x17, 0xf5, 0x43, 0x81, 0x2e, 0x87, 0xac, - 0x20, 0x61, 0x71, 0xfc, 0x4b, 0xb2, 0x08, 0x83, 0x82, 0x2b, 0x61, 0x3f, - 0xdc, 0x0e, 0xa1, 0x11, 0xc9, 0xe7, 0x31, 0xf8, 0xd2, 0x0a, 0x9d, 0xd5, - 0xe2, 0x04, 0x08, 0xbb, 0xd2, 0x36, 0x44, 0x1e, 0xce, 0x56, 0xe5, 0x25, - 0xc1, 0x33, 0x5d, 0xce, 0x4e, 0x2c, 0x20, 0x0f, 0x15, 0x29, 0x88, 0x64, - 0x0c, 0x9f, 0x5b, 0xa0, 0xc0, 0x34, 0xa8, 0x3e, 0xaa, 0xf3, 0x7b, 0xb9, - 0x93, 0xac, 0x26, 0x11, 0x64, 0x93, 0x98, 0x4a, 0xa5, 0x91, 0x6b, 0x16, - 0xf3, 0x41, 0x75, 0x66, 0x03, 0x8c, 0xf0, 0x44, 0x44, 0xea, 0x31, 0x10, - 0x6f, 0x04, 0x11, 0x8f, 0x4c, 0xc2, 0xc6, 0x69, 0x0f, 0xe7, 0x68, 0xcd, - 0x4c, 0x2d, 0xc0, 0xc9, 0x30, 0x01, 0x0d, 0x45, 0xc9, 0x70, 0xb8, 0x75, - 0x87, 0xd2, 0xc8, 0x13, 0xe6, 0x3e, 0x6f, 0x04, 0x32, 0x22, 0xd1, 0x06, - 0x77, 0x10, 0x86, 0x0c, 0x05, 0xb6, 0x61, 0x34, 0xa0, 0xd6, 0x5f, 0x58, - 0x5a, 0xa1, 0x73, 0xf1, 0xdf, 0x41, 0x46, 0x97, 0xef, 0xf1, 0x57, 0xe7, - 0x5a, 0x1a, 0xb9, 0x46, 0xf8, 0x96, 0x01, 0x28, 0x34, 0x01, 0xd2, 0x3a, - 0xc6, 0x1c, 0x38, 0x05, 0x62, 0x06, 0xd4, 0x44, 0xa5, 0x3a, 0x42, 0x40, - 0x6c, 0x7e, 0x29, 0x94, 0x49, 0xb6, 0xb1, 0x17, 0x52, 0x80, 0x9d, 0x49, - 0x8d, 0x76, 0x75, 0x88, 0x3a, 0xd5, 0x19, 0xb3, 0xfc, 0x4d, 0xf5, 0x8c, - 0xfd, 0xa5, 0xba, 0x20, 0x47, 0x65, 0x36, 0xe6, 0x0a, 0x80, 0x15, 0x01, - 0x07, 0x59, 0x9b, 0x2d, 0x08, 0x31, 0x81, 0x01, 0x01, 0x2c, 0x0c, 0x0d, - 0x22, 0x42, 0x34, 0x30, 0xd0, 0x40, 0xcb, 0x28, 0x2c, 0x16, 0x37, 0x84, - 0x81, 0xb1, 0x3d, 0x04, 0x04, 0xad, 0xf5, 0x62, 0x05, 0x88, 0x30, 0x46, - 0x16, 0x91, 0xe0, 0x02, 0x49, 0x44, 0x07, 0x48, 0xce, 0x81, 0x73, 0x18, - 0x96, 0xfb, 0x40, 0x80, 0x45, 0x0c, 0x08, 0x3f, 0x10, 0xd2, 0x12, 0x1c, - 0x83, 0xc9, 0xb4, 0x64, 0x95, 0x9d, 0xa0, 0x00, 0x01, 0x45, 0xb1, 0x28, - 0x19, 0xfa, 0xcd, 0x4c, 0xb9, 0xe6, 0x34, 0x3d, 0xe9, 0x98, 0x65, 0xbc, - 0xda, 0x96, 0xe6, 0x60, 0xfb, 0xca, 0xfd, 0x42, 0x51, 0xde, 0x70, 0x6e, - 0x43, 0xa8, 0x28, 0x38, 0xfe, 0x67, 0xc4, 0x2f, 0xe3, 0xda, 0x69, 0x00, - 0x1d, 0x04, 0x2c, 0xf8, 0xe1, 0x15, 0xb4, 0x82, 0xef, 0xb4, 0x62, 0x49, - 0x9d, 0xa5, 0xe7, 0x78, 0xac, 0x0a, 0xe6, 0x65, 0xa4, 0x19, 0x88, 0x5b, - 0x99, 0x5f, 0xd6, 0x20, 0x03, 0xa8, 0x01, 0x10, 0x8c, 0xe0, 0xa5, 0x1a, - 0x29, 0x7d, 0x04, 0x35, 0x25, 0xc5, 0x5e, 0x8e, 0xb3, 0x39, 0x1c, 0xbb, - 0x37, 0x9c, 0x35, 0x91, 0x82, 0xa3, 0xb0, 0xed, 0x00, 0x89, 0xb0, 0x3c, - 0x54, 0x11, 0x84, 0x59, 0xbb, 0x85, 0x0f, 0x72, 0x34, 0x1a, 0xc2, 0xd5, - 0x5f, 0x28, 0x3f, 0xbe, 0x29, 0xe0, 0x7d, 0xa2, 0x7a, 0x7a, 0xca, 0x57, - 0x6b, 0x78, 0x19, 0x0d, 0xcc, 0x60, 0x8f, 0x68, 0xf1, 0x94, 0xdc, 0x0f, - 0x44, 0x29, 0x4c, 0x9c, 0xb1, 0x11, 0x59, 0xd1, 0xa8, 0x55, 0xd8, 0xa1, - 0x50, 0xb4, 0xc1, 0x1e, 0xd0, 0x48, 0xea, 0x94, 0x2e, 0xa5, 0xce, 0x63, - 0x0f, 0x10, 0xc8, 0xd9, 0x23, 0x07, 0x73, 0xa8, 0x0d, 0xfc, 0xdc, 0xee, - 0x3c, 0x3f, 0x2d, 0xba, 0x2a, 0x1b, 0x79, 0x9a, 0x8d, 0xcf, 0x4f, 0x95, - 0x01, 0xea, 0xde, 0xb0, 0x35, 0x4a, 0x58, 0xd6, 0x90, 0x28, 0x12, 0x20, - 0x03, 0x72, 0x63, 0x6f, 0xb4, 0x3c, 0x7d, 0xf9, 0xf0, 0x03, 0x69, 0x06, - 0x93, 0xcc, 0xc0, 0x63, 0x99, 0xd3, 0x35, 0x72, 0xb0, 0xc8, 0xd0, 0x2a, - 0x69, 0x8a, 0xfd, 0xf3, 0xba, 0xf0, 0xfc, 0xf6, 0xd0, 0x09, 0x22, 0x8b, - 0x74, 0x67, 0x39, 0x7b, 0x73, 0x55, 0xbc, 0x34, 0x25, 0x0b, 0xd2, 0x6a, - 0x28, 0x3f, 0x50, 0x8f, 0x3e, 0x7f, 0x9f, 0xef, 0xd7, 0x9b, 0x83, 0xe9, - 0x34, 0x22, 0x31, 0x00, 0xeb, 0x5f, 0x49, 0xb5, 0x02, 0x54, 0x42, 0x8a, - 0xa5, 0x01, 0xdb, 0xe6, 0x73, 0x3b, 0x97, 0x84, 0xd7, 0xc6, 0xb4, 0x4d, - 0x06, 0xb3, 0xbc, 0xc5, 0x9b, 0x47, 0xb1, 0x02, 0x29, 0x28, 0x41, 0xe6, - 0xe2, 0x3c, 0x94, 0x3f, 0x7c, 0x12, 0x19, 0xc7, 0xeb, 0xf7, 0xee, 0x59, - 0xd3, 0xf4, 0x9c, 0x21, 0xf1, 0x08, 0x6f, 0x70, 0xc6, 0xa0, 0x63, 0x34, - 0xd3, 0x61, 0xfe, 0x93, 0xbb, 0x3e, 0x11, 0x4b, 0xe2, 0xd3, 0x12, 0x0e, - 0x00, 0x8b, 0x75, 0x40, 0x49, 0x36, 0xce, 0x67, 0x99, 0x15, 0x6a, 0x63, - 0x23, 0x04, 0x69, 0xf0, 0x9d, 0x42, 0x4e, 0xff, 0x00, 0x7e, 0x42, 0xb5, - 0x8b, 0xb4, 0x60, 0x04, 0xae, 0x01, 0xca, 0x9e, 0xb6, 0xd2, 0xc4, 0xf7, - 0x40, 0x7b, 0xda, 0xc1, 0x45, 0xcf, 0xec, 0x9d, 0xd3, 0xc2, 0x6b, 0xe3, - 0x5a, 0x1c, 0x94, 0x8e, 0xe2, 0x1a, 0xcd, 0x64, 0xef, 0x71, 0x04, 0xbc, - 0xc7, 0xca, 0x80, 0x71, 0xea, 0xa3, 0x00, 0xbe, 0x65, 0xfd, 0xfa, 0x80, - 0x98, 0x0b, 0xb4, 0x02, 0xae, 0x14, 0xd2, 0x12, 0x6d, 0x0f, 0x23, 0xa6, - 0x26, 0x2f, 0x30, 0x0f, 0xc5, 0x5c, 0xef, 0x9e, 0x1e, 0x8f, 0xf6, 0xa1, - 0x4e, 0xac, 0xcc, 0x4c, 0x9b, 0x9b, 0x30, 0x90, 0xf9, 0xeb, 0x29, 0x1d, - 0x5f, 0x88, 0xc5, 0x8f, 0xfc, 0x00, 0x02, 0xc1, 0x3a, 0xfb, 0x51, 0x41, - 0x43, 0x8d, 0x22, 0xf9, 0x41, 0xa7, 0x9e, 0x51, 0x0c, 0x1d, 0x0b, 0x49, - 0xdd, 0x3c, 0x20, 0xee, 0x5f, 0xb5, 0x07, 0xac, 0x08, 0x48, 0x01, 0x6c, - 0x08, 0x86, 0xca, 0x30, 0xe6, 0x95, 0x28, 0x77, 0x99, 0x4d, 0x49, 0xdf, - 0xfd, 0xfe, 0xfd, 0xc7, 0x36, 0x9e, 0xd1, 0x8c, 0xb3, 0xf6, 0x99, 0x58, - 0x9c, 0x85, 0x72, 0x62, 0x1b, 0x1d, 0xd0, 0xcb, 0xf5, 0xcf, 0x87, 0xe5, - 0x37, 0x43, 0x26, 0x87, 0x79, 0x62, 0x90, 0xcb, 0x8c, 0x38, 0x5e, 0x66, - 0x52, 0xa2, 0xa5, 0x6d, 0xe9, 0x04, 0x48, 0x02, 0xeb, 0xbd, 0xfe, 0xfc, - 0x41, 0x06, 0xa6, 0x21, 0xb1, 0xae, 0xb0, 0x20, 0x54, 0x42, 0x86, 0xf1, - 0x50, 0xd8, 0x6b, 0x08, 0x38, 0x1a, 0x40, 0x9e, 0x92, 0x77, 0x9e, 0x11, - 0x47, 0xe6, 0xd0, 0xd2, 0x21, 0xd1, 0xe2, 0x3e, 0x30, 0xbd, 0xc2, 0x89, - 0x59, 0x89, 0xb8, 0xf6, 0x80, 0x1b, 0x7e, 0x40, 0x4b, 0x1a, 0xff, 0x00, - 0x82, 0x01, 0x6b, 0x7f, 0xdf, 0x87, 0xee, 0x63, 0x06, 0x05, 0x44, 0x10, - 0xaa, 0x1a, 0x5b, 0x88, 0xfc, 0x41, 0xa0, 0xe2, 0x0c, 0x5d, 0xc7, 0x84, - 0xd7, 0xc9, 0xb4, 0x0c, 0xdd, 0xc4, 0x09, 0xa9, 0xd1, 0x2a, 0x28, 0x3a, - 0x3c, 0x3e, 0x21, 0xe0, 0xb5, 0x36, 0x5c, 0x9e, 0x4f, 0xfc, 0x03, 0x6a, - 0x6c, 0xfe, 0x74, 0x15, 0x98, 0x7d, 0x4c, 0x45, 0x41, 0xc1, 0x1b, 0x4f, - 0x4f, 0xd3, 0x39, 0xd5, 0x49, 0xdd, 0x78, 0x45, 0x8b, 0x94, 0x47, 0x40, - 0xd5, 0xd4, 0x36, 0x30, 0x44, 0xb5, 0x10, 0xc9, 0x0e, 0xa0, 0xc7, 0x79, - 0x70, 0x2a, 0xe0, 0x67, 0x4f, 0xe4, 0x78, 0x2b, 0x19, 0x2f, 0xbf, 0x7c, - 0x5e, 0xf8, 0x34, 0x66, 0x36, 0x2f, 0x30, 0xf6, 0xc6, 0xf2, 0xcf, 0xce, - 0x18, 0x00, 0xdd, 0x0c, 0x40, 0xac, 0xdd, 0x27, 0x71, 0xe1, 0xb9, 0x40, - 0x55, 0xaa, 0x17, 0x40, 0x18, 0x08, 0x8d, 0xd7, 0x12, 0xa6, 0xd0, 0xde, - 0x14, 0xa9, 0xfa, 0x35, 0xff, 0x00, 0x80, 0x8a, 0x7c, 0xdb, 0xca, 0x09, - 0x96, 0x56, 0x65, 0xcc, 0x0e, 0xc4, 0x60, 0x27, 0x42, 0x59, 0xdc, 0x78, - 0x72, 0xbb, 0x13, 0x04, 0x35, 0xd6, 0x34, 0xc8, 0x67, 0xe0, 0xc1, 0x5a, - 0xa0, 0x6b, 0xd6, 0x03, 0x08, 0x38, 0x9c, 0x5f, 0xeb, 0x4e, 0xe8, 0x7d, - 0xff, 0x00, 0xa9, 0xf7, 0x11, 0xa2, 0x46, 0xa0, 0x99, 0xab, 0x13, 0x43, - 0xce, 0x2e, 0xe2, 0x3a, 0x4b, 0x0e, 0x20, 0x63, 0xd9, 0x3b, 0xef, 0x0b, - 0x83, 0x0c, 0x55, 0x0c, 0x83, 0x72, 0xf6, 0x99, 0x03, 0x04, 0xe6, 0x53, - 0x7e, 0xb1, 0x85, 0x27, 0xf4, 0x53, 0xb9, 0x1f, 0x7f, 0xa5, 0xca, 0xf7, - 0x60, 0xa1, 0xee, 0xd2, 0x1e, 0xb5, 0x0d, 0xe2, 0x5f, 0x44, 0xb9, 0x40, - 0x63, 0xac, 0xf7, 0x69, 0x9b, 0xaf, 0x84, 0x5f, 0x46, 0x63, 0x93, 0xaa, - 0x1b, 0xa8, 0xa0, 0x34, 0xd6, 0x15, 0x3b, 0x18, 0x98, 0x3e, 0x90, 0x30, - 0x36, 0x88, 0xd1, 0x5e, 0xc2, 0x77, 0x03, 0xdb, 0xef, 0xc9, 0x74, 0xbd, - 0xf9, 0x6d, 0xa6, 0x62, 0x8e, 0x4c, 0xc9, 0x35, 0x70, 0x62, 0x54, 0x1b, - 0x23, 0xbe, 0xf0, 0x92, 0x3f, 0x2f, 0x68, 0x68, 0x0f, 0x07, 0x89, 0x82, - 0x5e, 0x73, 0x58, 0x00, 0x3c, 0x25, 0xe1, 0xa8, 0xdc, 0x24, 0x71, 0x91, - 0xdd, 0x09, 0xe4, 0x30, 0xf4, 0xfb, 0xf2, 0xf3, 0x3f, 0x3c, 0xa9, 0x68, - 0x8d, 0xc7, 0xa3, 0xe6, 0x60, 0x98, 0xa3, 0x26, 0xad, 0xbe, 0x6b, 0x06, - 0x1a, 0x25, 0xdd, 0xb8, 0xc4, 0xef, 0xbc, 0x26, 0x01, 0x49, 0xb3, 0x71, - 0x68, 0x36, 0x23, 0x03, 0x2f, 0x3c, 0x5c, 0x20, 0x5b, 0x5d, 0xa3, 0xe4, - 0x3b, 0x9e, 0x62, 0x25, 0x18, 0xfd, 0x3e, 0xfc, 0x97, 0x57, 0xdf, 0x8e, - 0x26, 0x80, 0xa6, 0x52, 0xf6, 0x88, 0xcd, 0xce, 0x8c, 0xc2, 0x34, 0x4b, - 0x81, 0xa0, 0x4c, 0xef, 0xbc, 0x24, 0xa0, 0xe0, 0x10, 0x1e, 0xa1, 0x70, - 0x6a, 0x98, 0x43, 0xbb, 0x42, 0xe3, 0xca, 0x1a, 0xba, 0x84, 0x41, 0x85, - 0xc5, 0xfc, 0x93, 0xb0, 0xf6, 0x7d, 0xf8, 0x37, 0xef, 0xee, 0xc1, 0xda, - 0x05, 0xdc, 0x06, 0x86, 0xf0, 0x34, 0xaf, 0x21, 0x18, 0xab, 0xd4, 0x65, - 0x57, 0x48, 0x03, 0xdb, 0x4e, 0xe3, 0xc3, 0xaa, 0xc2, 0x82, 0xf9, 0xd9, - 0x86, 0x7b, 0x12, 0xa6, 0x6d, 0xac, 0xc0, 0xf5, 0x8a, 0x6b, 0xeb, 0xa4, - 0xe8, 0x70, 0x5e, 0x86, 0xa7, 0xac, 0xec, 0x7e, 0xfc, 0x60, 0xb0, 0xff, - 0x00, 0x62, 0x37, 0x3b, 0x0b, 0xeb, 0x34, 0xb9, 0x85, 0x9c, 0x0b, 0x8c, - 0xd9, 0x2c, 0x8c, 0x28, 0x23, 0x2b, 0xb0, 0x63, 0xb8, 0xf0, 0xf7, 0x49, - 0xed, 0x47, 0x9c, 0x01, 0x46, 0x61, 0xe6, 0x34, 0xd2, 0xa3, 0xf1, 0x19, - 0x57, 0xa1, 0x96, 0x57, 0x93, 0xbc, 0xf9, 0x5c, 0x3f, 0xf0, 0x3d, 0x2b, - 0x2a, 0xfc, 0xd0, 0x9a, 0x6d, 0x99, 0xba, 0x92, 0xe7, 0x4e, 0x70, 0xb8, - 0x41, 0x17, 0xc1, 0x4f, 0x58, 0xcc, 0xf3, 0xe1, 0x6a, 0x72, 0xd1, 0x16, - 0x67, 0xdf, 0x97, 0xa6, 0xd7, 0x2a, 0xd1, 0x8c, 0x08, 0x01, 0x23, 0x99, - 0x9d, 0xa0, 0x27, 0x78, 0x1d, 0x15, 0xed, 0x7d, 0xfe, 0xd1, 0xc2, 0x3b, - 0x46, 0x1a, 0xbc, 0xe6, 0x31, 0x1c, 0x08, 0x71, 0x38, 0x35, 0x41, 0x90, - 0xb7, 0x08, 0x47, 0xad, 0x3e, 0xb3, 0x92, 0x03, 0xf0, 0x83, 0x04, 0x27, - 0xc4, 0x1d, 0x2f, 0xf4, 0x82, 0xc3, 0x1d, 0x31, 0x00, 0x0a, 0xa1, 0xfc, - 0x47, 0x7a, 0x75, 0x80, 0x57, 0xea, 0x0d, 0x0b, 0x92, 0x28, 0xda, 0x9f, - 0x67, 0xf7, 0xfb, 0xb5, 0x6f, 0x74, 0xb0, 0x14, 0x00, 0x5e, 0x70, 0x10, - 0x1f, 0xb9, 0xab, 0x49, 0x93, 0xb0, 0x34, 0x7e, 0x71, 0xc3, 0x67, 0xbc, - 0x3a, 0x3e, 0x4e, 0x76, 0x9e, 0x1e, 0xfa, 0x1a, 0x0e, 0x2d, 0x0c, 0x1a, - 0x61, 0xef, 0x14, 0x08, 0xa0, 0x9f, 0xa4, 0x54, 0xcf, 0x21, 0xa4, 0x31, - 0x39, 0x67, 0x78, 0xec, 0x8f, 0x71, 0xca, 0x03, 0x97, 0xb3, 0xef, 0xfb, - 0x87, 0xba, 0x70, 0x5f, 0xb9, 0x33, 0xd6, 0x13, 0x70, 0x09, 0xd6, 0x17, - 0x53, 0x0c, 0xcd, 0x3e, 0x96, 0x00, 0x80, 0x1e, 0x20, 0xfc, 0xac, 0x4e, - 0x78, 0x51, 0x0f, 0x00, 0x13, 0x72, 0xa6, 0x9c, 0xa3, 0x2b, 0x6e, 0x18, - 0x11, 0xb0, 0xbe, 0xae, 0x67, 0xe9, 0xf8, 0x5f, 0x7f, 0xe8, 0x0b, 0xdd, - 0x00, 0x2e, 0xc2, 0xef, 0x3b, 0x39, 0x85, 0x77, 0x0e, 0x54, 0x55, 0x13, - 0x04, 0x96, 0x79, 0x87, 0xe9, 0x20, 0xa0, 0x71, 0xe2, 0x12, 0x1e, 0x6c, - 0xf6, 0x08, 0xd0, 0xa2, 0x8d, 0xad, 0xeb, 0x2d, 0x50, 0xc8, 0xb6, 0x86, - 0x86, 0x9d, 0x2f, 0x59, 0xf2, 0xfb, 0x3e, 0xff, 0x00, 0xbf, 0xfb, 0xa0, - 0xa1, 0x24, 0x11, 0xde, 0x30, 0x98, 0x23, 0x4f, 0xf2, 0x2d, 0x7a, 0x95, - 0x98, 0xca, 0xd7, 0x68, 0x87, 0xaa, 0x34, 0x6f, 0x10, 0x11, 0x0f, 0x13, - 0x38, 0x19, 0x5f, 0x6c, 0xd4, 0xea, 0x70, 0x03, 0x53, 0x24, 0x4b, 0xd7, - 0x26, 0x54, 0x38, 0x34, 0xdf, 0x99, 0x74, 0xf4, 0xf7, 0x41, 0x21, 0xff, - 0x00, 0x30, 0xfb, 0xf0, 0x7d, 0x4f, 0xba, 0x06, 0x4b, 0xfd, 0xb0, 0x90, - 0x28, 0xed, 0xac, 0x51, 0xb9, 0xa9, 0x5a, 0xa8, 0x0e, 0xb2, 0xc7, 0xe4, - 0xee, 0x84, 0xb2, 0xfc, 0x48, 0x14, 0x00, 0x05, 0x34, 0x32, 0xa6, 0x93, - 0x09, 0x07, 0x1c, 0xf9, 0x6d, 0x2b, 0x0c, 0xc8, 0x91, 0x43, 0x0d, 0x63, - 0x83, 0xf2, 0x4f, 0xbf, 0xee, 0xfe, 0xe8, 0x47, 0xe0, 0x6e, 0x50, 0x6d, - 0x0e, 0x0c, 0x20, 0x3b, 0x6d, 0x20, 0x88, 0xa5, 0x00, 0x33, 0x86, 0x77, - 0x78, 0xee, 0x37, 0xc1, 0x0e, 0xd8, 0x6e, 0xe6, 0xab, 0x32, 0xe9, 0x0f, - 0x61, 0x8b, 0x63, 0xa4, 0xae, 0xea, 0x4f, 0x91, 0xdb, 0xef, 0xcd, 0x13, - 0x63, 0xf7, 0x4a, 0x06, 0x0f, 0xbc, 0x8d, 0xc8, 0x9f, 0x28, 0x25, 0xb3, - 0xae, 0xb3, 0x0e, 0xdc, 0xf5, 0x80, 0x22, 0x08, 0x15, 0x14, 0x72, 0x1d, - 0x2b, 0xcf, 0xe3, 0x1c, 0x05, 0x01, 0x05, 0x4b, 0x2a, 0x18, 0xcc, 0xac, - 0x60, 0x04, 0xdb, 0x82, 0xdf, 0x05, 0x01, 0x51, 0xfe, 0x7f, 0x7e, 0x4c, - 0x1d, 0xfe, 0xe8, 0x0b, 0x4d, 0x05, 0x69, 0x98, 0x45, 0x32, 0x53, 0xd2, - 0x19, 0x25, 0x01, 0x5a, 0x44, 0x05, 0x3d, 0xe1, 0xab, 0x00, 0x4b, 0x01, - 0x37, 0x11, 0x1d, 0x97, 0x8d, 0x6c, 0x3f, 0xe8, 0xc4, 0x4c, 0x38, 0x8e, - 0x10, 0x81, 0x1f, 0x4c, 0xa1, 0x07, 0x83, 0x30, 0x51, 0x73, 0xf7, 0xf3, - 0x3f, 0xc5, 0x4d, 0x86, 0xbd, 0xe4, 0x3a, 0xcc, 0x3c, 0x08, 0x58, 0x11, - 0xa8, 0x2e, 0x91, 0xb6, 0x0c, 0x8c, 0xcb, 0x95, 0x20, 0x38, 0xf1, 0xe6, - 0x3a, 0x81, 0xe2, 0xff, 0x00, 0xb1, 0xa0, 0x33, 0xd2, 0x37, 0x0a, 0x2e, - 0x07, 0x98, 0x0a, 0x2c, 0xcb, 0x65, 0x0b, 0x8c, 0x08, 0xc5, 0x01, 0x87, - 0x33, 0x81, 0x9f, 0x7e, 0x25, 0x09, 0x58, 0xb8, 0x10, 0x85, 0x48, 0x37, - 0x0e, 0xa8, 0xf4, 0x77, 0x08, 0x50, 0xe9, 0x01, 0xd1, 0xb5, 0xac, 0xae, - 0xf0, 0x96, 0x60, 0x32, 0x3c, 0x73, 0x3b, 0x73, 0xf8, 0x7e, 0xa5, 0x03, - 0x67, 0x11, 0xe0, 0xb4, 0x24, 0xc5, 0xa5, 0x30, 0x03, 0x0a, 0xc8, 0x56, - 0x1c, 0xa8, 0x70, 0x7c, 0x06, 0x53, 0x48, 0xc1, 0x88, 0x05, 0xfd, 0x23, - 0x64, 0x0f, 0xab, 0xd4, 0x42, 0x0d, 0x7e, 0xa2, 0x73, 0xbd, 0x44, 0xf8, - 0x02, 0x7c, 0x81, 0x3e, 0x00, 0x9f, 0x20, 0x4f, 0x90, 0x27, 0xc0, 0x13, - 0xe0, 0x09, 0xf0, 0x04, 0xf8, 0x82, 0x5c, 0x3e, 0x94, 0x9f, 0x00, 0x41, - 0xb4, 0x1e, 0x4f, 0x00, 0x01, 0x0e, 0x2f, 0x54, 0xe3, 0xf5, 0x4f, 0x8c, - 0xcf, 0x9c, 0xcf, 0x8c, 0xcf, 0x8c, 0xcf, 0x9c, 0xcf, 0x8c, 0xcf, 0x8c, - 0xce, 0x41, 0xf3, 0x83, 0x18, 0xe1, 0x14, 0x3c, 0x97, 0x3a, 0xac, 0xe6, - 0x08, 0xd5, 0xac, 0x23, 0xec, 0x9c, 0x44, 0x6e, 0x21, 0xaf, 0x68, 0xa0, - 0x2f, 0x3d, 0xe3, 0xcc, 0xa0, 0x13, 0xc6, 0xfe, 0x1b, 0xea, 0x3f, 0x90, - 0xec, 0x6e, 0x62, 0xf2, 0x00, 0xa8, 0x4a, 0x95, 0xaf, 0x01, 0x8e, 0xb2, - 0xc2, 0x10, 0x8f, 0x30, 0xc0, 0x66, 0xdd, 0xa8, 0xb4, 0xac, 0xa2, 0xf5, - 0x96, 0x8f, 0x7a, 0x37, 0xf6, 0xc7, 0x62, 0x61, 0xac, 0xb1, 0xcc, 0xa1, - 0xf7, 0x60, 0x30, 0x1e, 0x9b, 0x98, 0x3d, 0xe8, 0x6a, 0x12, 0x51, 0x31, - 0xe0, 0x09, 0x81, 0x83, 0x5f, 0x9c, 0xd1, 0x8a, 0x87, 0xa0, 0xe2, 0x72, - 0x6e, 0xb0, 0x9f, 0xdb, 0x01, 0xff, 0x00, 0x64, 0x03, 0x45, 0xb9, 0x8c, - 0xa5, 0xdc, 0xa0, 0x12, 0x5d, 0x75, 0x80, 0xce, 0xb7, 0x34, 0xb6, 0xb8, - 0x88, 0xa6, 0x8c, 0x02, 0x28, 0x92, 0xa0, 0x29, 0x1b, 0xf3, 0xd6, 0x16, - 0x14, 0x6c, 0x03, 0x71, 0xb6, 0x59, 0xdd, 0xc0, 0x04, 0x60, 0x79, 0x44, - 0x43, 0xf1, 0x0a, 0x07, 0x6e, 0x91, 0x8b, 0x54, 0x33, 0xbc, 0x2a, 0xdc, - 0x46, 0x66, 0x09, 0xa5, 0x12, 0x0c, 0x25, 0x3d, 0x0c, 0x2c, 0x08, 0x01, - 0x39, 0xc4, 0x50, 0x76, 0x29, 0xef, 0xe3, 0x2a, 0xb5, 0x60, 0xf5, 0x72, - 0xa5, 0x58, 0x00, 0xaa, 0x50, 0xab, 0xca, 0xd2, 0x19, 0x1a, 0xb0, 0x3d, - 0xa0, 0xd5, 0x71, 0xff, 0x00, 0x10, 0x24, 0xca, 0x72, 0xc5, 0x1a, 0x30, - 0xac, 0xab, 0x7e, 0x21, 0x2f, 0x4a, 0x80, 0x5f, 0xbc, 0xb0, 0x25, 0xb8, - 0x81, 0x79, 0xcc, 0x85, 0xfa, 0xc3, 0xa1, 0x79, 0xcc, 0x8d, 0xa3, 0x23, - 0xf9, 0x09, 0x21, 0x7e, 0x5a, 0xcc, 0x25, 0x4d, 0x5a, 0x83, 0x56, 0x39, - 0x88, 0xe2, 0x14, 0x41, 0xdd, 0x4e, 0x50, 0x1e, 0x05, 0xa9, 0x45, 0xea, - 0xb0, 0x44, 0xc8, 0x75, 0x83, 0x41, 0x9b, 0x1b, 0x62, 0x36, 0x81, 0x11, - 0x4e, 0x60, 0xc1, 0x28, 0xea, 0x0c, 0x10, 0xc8, 0x93, 0xda, 0x13, 0xd0, - 0xe3, 0xa4, 0x10, 0x23, 0x45, 0x0d, 0x17, 0x11, 0x64, 0x3d, 0xa2, 0x03, - 0x8a, 0xda, 0x79, 0x1a, 0xc4, 0x2c, 0x3e, 0x5c, 0xb0, 0x6c, 0x1b, 0x4d, - 0x88, 0x65, 0xa5, 0x51, 0xcb, 0x20, 0x11, 0x91, 0x5c, 0x1f, 0xf2, 0x00, - 0x22, 0x3e, 0x4c, 0x18, 0xd3, 0x00, 0x0f, 0x97, 0x8e, 0xbd, 0x90, 0x01, - 0xec, 0x86, 0x46, 0x6f, 0xa1, 0xc4, 0xc0, 0x42, 0x2d, 0xa2, 0xd8, 0x0a, - 0xb9, 0x6f, 0x2c, 0x12, 0xe0, 0x88, 0xe6, 0x01, 0x4c, 0xd4, 0x06, 0xf3, - 0x7b, 0xcc, 0x1d, 0x5d, 0x61, 0x61, 0x60, 0x74, 0x45, 0x59, 0x11, 0x03, - 0xa8, 0x98, 0x38, 0x51, 0x7a, 0xed, 0x00, 0x01, 0xc1, 0x83, 0x0e, 0x1d, - 0x29, 0x46, 0xb2, 0xf3, 0x35, 0xe2, 0x29, 0x9b, 0x73, 0x32, 0x2f, 0xd0, - 0x62, 0x06, 0x01, 0x7b, 0x6b, 0x05, 0x91, 0xcc, 0x66, 0x48, 0xbe, 0x92, - 0x89, 0x4e, 0x16, 0x80, 0x10, 0x5d, 0xed, 0x01, 0x94, 0x28, 0xe9, 0x2a, - 0x1b, 0x72, 0x9e, 0x1b, 0xa1, 0x05, 0xcc, 0xf3, 0x90, 0x5a, 0x6d, 0xca, - 0x53, 0x61, 0xc5, 0x41, 0x08, 0x51, 0xef, 0xc4, 0x28, 0x97, 0xe9, 0x08, - 0x11, 0x00, 0xaa, 0x32, 0x28, 0x3d, 0x44, 0x06, 0x04, 0x00, 0x3b, 0xd6, - 0x02, 0x14, 0x5e, 0xb9, 0x9a, 0x89, 0xb1, 0x2f, 0x67, 0x1a, 0x65, 0xbc, - 0x05, 0xac, 0x85, 0xb0, 0x81, 0xeb, 0x13, 0xc8, 0x78, 0xf7, 0xe9, 0x2f, - 0x49, 0xe5, 0x75, 0xfd, 0xc3, 0xa0, 0x83, 0x88, 0xf2, 0xcd, 0xde, 0x40, - 0x07, 0x9c, 0x79, 0x41, 0x40, 0xd3, 0xac, 0x78, 0xb6, 0x36, 0xfa, 0x16, - 0x36, 0x5c, 0xc6, 0x3e, 0x94, 0x3b, 0xc3, 0xb0, 0xba, 0x40, 0x68, 0xc2, - 0x03, 0x1d, 0x58, 0x13, 0x4a, 0xa8, 0x7b, 0x95, 0xcc, 0x04, 0x82, 0xb2, - 0x65, 0xe6, 0x65, 0x86, 0xec, 0xc2, 0xab, 0xf4, 0x94, 0x27, 0x0e, 0x34, - 0x40, 0x2a, 0xdc, 0xca, 0x0f, 0xc2, 0x03, 0x4c, 0x82, 0xd6, 0x30, 0x44, - 0x00, 0xce, 0x07, 0x30, 0x85, 0x00, 0xad, 0x5b, 0xf4, 0x87, 0x16, 0x7a, - 0x14, 0xa1, 0x00, 0x01, 0x65, 0x73, 0x2c, 0x0e, 0x0f, 0x9c, 0x22, 0x01, - 0x01, 0xe9, 0x05, 0x25, 0x17, 0x31, 0x35, 0x66, 0xf4, 0xda, 0x30, 0x4b, - 0x37, 0x09, 0x66, 0xcb, 0xd2, 0x3f, 0xf2, 0x32, 0xc0, 0x17, 0x10, 0xd6, - 0x49, 0x58, 0x9a, 0x17, 0x14, 0x50, 0xc6, 0x6a, 0x09, 0x03, 0xea, 0xca, - 0x70, 0x21, 0xbe, 0xbf, 0x04, 0xd1, 0x42, 0x5f, 0x59, 0x3e, 0x34, 0x28, - 0x70, 0x68, 0xc2, 0x56, 0x03, 0x8e, 0x86, 0x3f, 0x23, 0x69, 0x0c, 0xcc, - 0x27, 0x79, 0x73, 0x70, 0xa0, 0x79, 0x58, 0x80, 0xa1, 0x87, 0x14, 0x60, - 0x41, 0x5b, 0x84, 0x09, 0xd0, 0x6f, 0x48, 0x41, 0x41, 0x7a, 0xca, 0x6a, - 0x30, 0x4c, 0xf8, 0xc2, 0x9d, 0x2b, 0x4b, 0x89, 0x17, 0x7d, 0x65, 0x85, - 0x15, 0x00, 0x36, 0xe0, 0x71, 0x0e, 0x48, 0xb3, 0xbc, 0x01, 0x02, 0x06, - 0x62, 0xbe, 0x86, 0x65, 0x0f, 0x38, 0x8c, 0x41, 0x51, 0x01, 0xb2, 0x21, - 0x08, 0x22, 0xb1, 0xac, 0x20, 0x86, 0x5d, 0x41, 0x74, 0x9a, 0x50, 0x99, - 0x09, 0xd6, 0xd1, 0x47, 0x4c, 0x83, 0xa4, 0x14, 0xc5, 0x3d, 0xe0, 0x5d, - 0x20, 0x00, 0xd3, 0x5d, 0x4c, 0x02, 0x8c, 0x6a, 0xc6, 0x61, 0x61, 0xbd, - 0x50, 0x85, 0xbd, 0x1c, 0x21, 0x8d, 0x11, 0xc4, 0x24, 0xda, 0x16, 0x0b, - 0xb9, 0xa5, 0x86, 0x72, 0x74, 0x70, 0x89, 0x10, 0x1f, 0xb1, 0x39, 0xba, - 0xd6, 0x20, 0xcc, 0xa9, 0x7a, 0x69, 0xe9, 0x04, 0x00, 0x97, 0x54, 0x0e, - 0x93, 0x6a, 0x8e, 0x15, 0x47, 0x1e, 0xec, 0xd1, 0x73, 0xe6, 0x48, 0x3f, - 0xe0, 0x43, 0x00, 0x43, 0xde, 0xcf, 0x70, 0x61, 0xdb, 0xcd, 0xf8, 0x7b, - 0x42, 0x98, 0x74, 0x79, 0x1c, 0xc5, 0x71, 0x40, 0x57, 0x49, 0x82, 0x41, - 0xcc, 0x06, 0x6c, 0xc0, 0x02, 0x18, 0xa8, 0xd0, 0xcb, 0x8c, 0x3a, 0xc0, - 0x7e, 0x18, 0xc0, 0x48, 0x31, 0x38, 0x22, 0x81, 0x18, 0xb1, 0x73, 0x76, - 0x90, 0x5a, 0x11, 0x50, 0x83, 0xac, 0x43, 0xd4, 0x21, 0x1b, 0x69, 0x9c, - 0xc0, 0xd3, 0x57, 0x09, 0x45, 0x29, 0x00, 0x82, 0x68, 0x88, 0x6b, 0x54, - 0x63, 0x5c, 0x6b, 0xad, 0xc0, 0x43, 0x06, 0x72, 0x88, 0xb2, 0x11, 0x2d, - 0x61, 0xb0, 0x4c, 0xfe, 0xe6, 0x6c, 0x8f, 0x4c, 0x42, 0x05, 0x63, 0xce, - 0x05, 0xd3, 0x4a, 0x24, 0x8c, 0x40, 0x66, 0x9c, 0x44, 0x82, 0x01, 0x04, - 0x68, 0x45, 0x38, 0xc2, 0x40, 0x0e, 0x0e, 0xb0, 0x84, 0xac, 0xb8, 0x09, - 0x86, 0x5b, 0x73, 0x0d, 0x8e, 0xe7, 0x57, 0x29, 0x94, 0x6e, 0x60, 0x02, - 0x09, 0x3b, 0xdc, 0x23, 0x70, 0x4e, 0x46, 0x6a, 0x44, 0x02, 0x72, 0x42, - 0xf9, 0x88, 0xda, 0x6c, 0x4b, 0xf5, 0x04, 0x10, 0x60, 0x65, 0x09, 0x91, - 0xff, 0x00, 0x81, 0x40, 0x40, 0x50, 0x97, 0xb8, 0xfc, 0xc0, 0xc1, 0x12, - 0x87, 0x4d, 0xa3, 0x8b, 0xf2, 0x28, 0x59, 0x76, 0x75, 0x1e, 0x4b, 0xe7, - 0x32, 0x8a, 0x50, 0xa0, 0x30, 0x50, 0x56, 0x8b, 0xac, 0x02, 0x9b, 0x0a, - 0x34, 0x6e, 0xc4, 0x2a, 0xce, 0x34, 0x8d, 0x01, 0x98, 0x3c, 0xeb, 0xc6, - 0x23, 0x07, 0x26, 0x21, 0x56, 0xa8, 0x1b, 0x10, 0x8e, 0x90, 0xd1, 0x42, - 0x8f, 0x10, 0x5b, 0x28, 0x6a, 0x60, 0x2c, 0x60, 0xf2, 0xe3, 0x29, 0x13, - 0x51, 0x98, 0x47, 0xbc, 0x69, 0x37, 0x0b, 0x03, 0x7c, 0x44, 0x4e, 0xce, - 0xb0, 0xd2, 0x4e, 0x21, 0x3c, 0x34, 0x94, 0xb5, 0x91, 0x11, 0x4d, 0x54, - 0x24, 0xc7, 0x54, 0xc5, 0x0d, 0x4a, 0x64, 0x23, 0x2d, 0x56, 0x76, 0x3c, - 0xca, 0x18, 0x91, 0xe7, 0x88, 0x51, 0xc4, 0x26, 0x43, 0x0f, 0xca, 0xa1, - 0x16, 0x44, 0xce, 0x61, 0x25, 0x8a, 0x11, 0x09, 0xe0, 0x60, 0x84, 0x15, - 0x4c, 0xdf, 0x00, 0x2c, 0x6e, 0x84, 0x1f, 0x74, 0x6b, 0x0c, 0xa3, 0x98, - 0xa2, 0x52, 0x5d, 0x4d, 0x7e, 0x7f, 0xe2, 0x96, 0x03, 0x4f, 0x95, 0xfc, - 0x87, 0x42, 0xc0, 0xd2, 0x36, 0x91, 0xe1, 0x9f, 0x9b, 0x40, 0x92, 0xc1, - 0xb8, 0x07, 0x95, 0x4b, 0xf1, 0xda, 0x14, 0x19, 0xbb, 0xe1, 0xcc, 0x07, - 0xe5, 0x1d, 0x67, 0xce, 0x03, 0x62, 0x87, 0x59, 0x9e, 0x25, 0x06, 0x01, - 0xf3, 0x88, 0x04, 0x01, 0x76, 0xe1, 0x00, 0xe0, 0x90, 0x39, 0x86, 0x16, - 0xa3, 0x88, 0xd0, 0x9e, 0x23, 0x48, 0x74, 0x38, 0x8c, 0x42, 0x97, 0x11, - 0x91, 0x47, 0x98, 0x09, 0xe8, 0x30, 0x2b, 0x3e, 0x81, 0x2c, 0xfc, 0xcd, - 0x00, 0xec, 0xa0, 0x09, 0x91, 0x08, 0x70, 0xf4, 0x5c, 0x00, 0x01, 0xae, - 0xb2, 0x83, 0x29, 0xb8, 0x53, 0x0d, 0xfc, 0xe0, 0x6c, 0x09, 0x7a, 0xba, - 0x50, 0xa0, 0x4f, 0xbb, 0x10, 0xe8, 0x66, 0x2c, 0x60, 0x33, 0x35, 0x26, - 0xb5, 0x98, 0x12, 0x04, 0x14, 0x41, 0xa7, 0xb0, 0x95, 0x95, 0x17, 0x52, - 0x85, 0x0b, 0x3c, 0xc2, 0x68, 0x89, 0x19, 0x16, 0x4e, 0x20, 0x38, 0xec, - 0x64, 0xea, 0x37, 0x57, 0x34, 0x12, 0x68, 0xd0, 0x66, 0x03, 0x4a, 0xf4, - 0xe6, 0x10, 0x4f, 0x33, 0xc8, 0x7f, 0xbd, 0xbf, 0xe2, 0x40, 0x08, 0x19, - 0x51, 0x1c, 0x42, 0xdb, 0x09, 0x00, 0xbe, 0xfe, 0x90, 0xf4, 0x01, 0x29, - 0x32, 0xc7, 0xcb, 0x9a, 0x90, 0x30, 0xdb, 0x6f, 0xcf, 0x68, 0xba, 0xa1, - 0x64, 0x85, 0xd2, 0xf9, 0xde, 0x0d, 0xc5, 0xff, 0x00, 0x50, 0x46, 0x0c, - 0x19, 0x09, 0x5b, 0x46, 0xb1, 0x0a, 0xce, 0xe6, 0x02, 0xc0, 0xd2, 0x3b, - 0x16, 0x5f, 0x58, 0x0e, 0x0c, 0x70, 0x59, 0x5f, 0xb8, 0x0d, 0xc1, 0xb2, - 0xbd, 0xe6, 0x8d, 0x21, 0x1e, 0xa8, 0x29, 0xde, 0x9a, 0x08, 0x00, 0x0e, - 0xc2, 0xd3, 0x58, 0x19, 0x65, 0x50, 0x51, 0xa7, 0xc2, 0x02, 0x89, 0x1e, - 0x21, 0x40, 0x8c, 0x12, 0x36, 0x85, 0x4c, 0x82, 0x29, 0xc4, 0xc4, 0x17, - 0x43, 0x07, 0x3f, 0x59, 0x64, 0x13, 0xae, 0x22, 0xaa, 0x2c, 0x0c, 0x60, - 0xb9, 0xc0, 0xda, 0x0d, 0x85, 0xce, 0xf2, 0x89, 0x7a, 0x42, 0xc5, 0x0d, - 0x74, 0x89, 0x96, 0xf8, 0x86, 0xb8, 0xa8, 0x61, 0x20, 0xed, 0x81, 0xbc, - 0x72, 0xab, 0x8c, 0xd3, 0x82, 0xb0, 0x15, 0xa6, 0xbd, 0x21, 0x6a, 0xb7, - 0x4c, 0x2e, 0xa1, 0x45, 0x88, 0x00, 0x80, 0xcc, 0xc6, 0x18, 0x7a, 0xce, - 0xbd, 0xff, 0x00, 0xe4, 0x62, 0xc4, 0x06, 0xad, 0xc6, 0x0f, 0xa4, 0x50, - 0xc9, 0xe5, 0x75, 0x36, 0x44, 0x5c, 0x62, 0xde, 0x83, 0x9f, 0x3f, 0x79, - 0x72, 0x0f, 0x48, 0xd5, 0xa7, 0xfc, 0x85, 0x38, 0x10, 0x64, 0x18, 0xf8, - 0x4a, 0x21, 0x18, 0x53, 0x02, 0x1a, 0xd5, 0xeb, 0x18, 0x55, 0x89, 0x8c, - 0x4a, 0x37, 0x88, 0x94, 0x89, 0x9a, 0x63, 0x33, 0x2b, 0xa1, 0x2e, 0x03, - 0xb8, 0x16, 0xd8, 0xe9, 0x32, 0xb9, 0xad, 0xa1, 0x91, 0x9a, 0xd6, 0x1a, - 0x51, 0xe4, 0xed, 0x01, 0xc0, 0x3d, 0x21, 0xb5, 0x50, 0xdc, 0x1c, 0x1a, - 0xed, 0x31, 0x62, 0xe6, 0x0f, 0x6a, 0x9b, 0xa2, 0xb6, 0x88, 0x27, 0x98, - 0x48, 0x19, 0x04, 0x29, 0x67, 0xbc, 0xb1, 0x38, 0x89, 0x10, 0xa5, 0x85, - 0x35, 0x3d, 0xe6, 0x8a, 0x80, 0x88, 0x32, 0xf4, 0x87, 0xd9, 0xc2, 0x41, - 0x33, 0xaf, 0x48, 0x1c, 0x84, 0x02, 0x0b, 0xb0, 0xa3, 0xc4, 0x16, 0xb2, - 0x6e, 0xcc, 0x77, 0x52, 0x00, 0xfd, 0x1f, 0x38, 0xff, 0x00, 0x99, 0x09, - 0x9b, 0x3b, 0x68, 0xf9, 0xcc, 0xbc, 0xa0, 0x36, 0x0e, 0x60, 0xa6, 0xac, - 0x46, 0x20, 0x2c, 0xef, 0x73, 0x4d, 0xff, 0x00, 0x71, 0x36, 0x06, 0xa5, - 0xe4, 0xa6, 0xfb, 0xe1, 0x3e, 0x6d, 0x34, 0x3b, 0xe2, 0x0e, 0x65, 0x6b, - 0xda, 0x05, 0x08, 0x5d, 0x97, 0x31, 0x82, 0xc2, 0x9e, 0xa4, 0x40, 0x57, - 0x06, 0x12, 0x30, 0x98, 0x7d, 0x3e, 0x8d, 0x70, 0xc3, 0x5b, 0x7f, 0x33, - 0x02, 0x04, 0x4b, 0xb8, 0x54, 0x83, 0x43, 0xde, 0x1e, 0x19, 0x05, 0xc3, - 0x97, 0x13, 0xd7, 0x10, 0xdd, 0x1b, 0x73, 0x09, 0x09, 0x2a, 0x84, 0xc1, - 0x67, 0x98, 0x4c, 0xa7, 0xac, 0xcb, 0xf3, 0x05, 0x91, 0x29, 0x60, 0x88, - 0x4e, 0x9d, 0xa1, 0x2b, 0x41, 0x88, 0x5b, 0x12, 0x9d, 0x0a, 0xe6, 0x21, - 0xa3, 0x98, 0x89, 0x53, 0x07, 0x5d, 0x78, 0x80, 0x01, 0xd3, 0x98, 0x01, - 0x18, 0x79, 0xf8, 0xe1, 0x6b, 0x1c, 0x96, 0x83, 0x68, 0x8d, 0xb4, 0xd2, - 0xc4, 0xb4, 0xa4, 0x74, 0x1f, 0x39, 0x80, 0x20, 0x82, 0x1d, 0x5d, 0x3f, - 0xe8, 0x9d, 0xda, 0x8f, 0x6f, 0xef, 0x3e, 0xb2, 0xaa, 0x2c, 0x8c, 0xfc, - 0x70, 0x62, 0x82, 0xc3, 0x1a, 0x01, 0x9e, 0x9e, 0xb0, 0x07, 0x13, 0x45, - 0x3c, 0x00, 0x14, 0x06, 0xcd, 0x4b, 0x0f, 0x45, 0xf3, 0xce, 0x18, 0xda, - 0x6f, 0x1b, 0x8e, 0xb1, 0x05, 0xa1, 0x0e, 0x77, 0x03, 0x89, 0xad, 0xcc, - 0x6a, 0x08, 0x8e, 0xf3, 0x02, 0x18, 0x68, 0xac, 0x0b, 0x83, 0x17, 0x6e, - 0x63, 0x5a, 0xae, 0x92, 0xc0, 0x0f, 0xa9, 0x80, 0x2d, 0xc0, 0x2b, 0x5e, - 0x20, 0x3c, 0x29, 0x7a, 0x21, 0x10, 0x0c, 0x41, 0x6c, 0xb7, 0xbc, 0x07, - 0x04, 0x38, 0x30, 0xdb, 0x01, 0x6e, 0xa0, 0x1a, 0x15, 0xc4, 0x71, 0x5a, - 0x89, 0x6c, 0x94, 0x20, 0x51, 0x79, 0x29, 0x7a, 0xb5, 0xc6, 0xd2, 0xc7, - 0xe6, 0x69, 0x17, 0x70, 0x2b, 0x16, 0xf4, 0x8c, 0x94, 0xd1, 0x6f, 0xd9, - 0x0e, 0x4d, 0xba, 0x0d, 0xcd, 0xc4, 0x67, 0x43, 0xa2, 0x0f, 0x27, 0x83, - 0xd4, 0xe9, 0x19, 0xff, 0x00, 0xa6, 0x1f, 0x2a, 0x3e, 0x81, 0x86, 0x06, - 0x78, 0x9e, 0x9b, 0xca, 0x54, 0x62, 0xc4, 0xe7, 0xe2, 0x30, 0xe0, 0x09, - 0x04, 0xa2, 0x9a, 0x71, 0xe7, 0x7e, 0x93, 0xd6, 0x2b, 0x52, 0xc0, 0xfe, - 0x77, 0x30, 0x06, 0x83, 0x44, 0x85, 0x43, 0x30, 0x0b, 0x8e, 0x96, 0x20, - 0xc4, 0x01, 0x9d, 0x10, 0xb4, 0x4f, 0x32, 0xac, 0x10, 0x3b, 0x47, 0x08, - 0x45, 0x0f, 0x53, 0x32, 0xf4, 0x3c, 0x42, 0xaf, 0x26, 0xe1, 0x44, 0x2e, - 0x12, 0x39, 0x5a, 0x47, 0xfc, 0x88, 0x5d, 0x23, 0x08, 0xda, 0x04, 0x3f, - 0x59, 0x48, 0xd1, 0x71, 0x90, 0x18, 0xc1, 0xd2, 0x0b, 0xd9, 0xb4, 0xca, - 0xda, 0xb5, 0x86, 0xdc, 0x88, 0x2e, 0xc0, 0x9a, 0x6f, 0x01, 0x9e, 0xaa, - 0x96, 0xee, 0xbc, 0xa6, 0x96, 0x80, 0xe0, 0xc0, 0x10, 0x97, 0x89, 0xd6, - 0x15, 0xe7, 0x05, 0x49, 0x9b, 0xa4, 0x29, 0xe6, 0x06, 0x57, 0xbe, 0xf0, - 0xb6, 0x55, 0x08, 0x3f, 0x5a, 0x15, 0xad, 0xfc, 0x10, 0x13, 0x16, 0x0e, - 0xe5, 0xa7, 0x97, 0xfd, 0x82, 0x5d, 0x2c, 0x35, 0xd0, 0x7e, 0x71, 0x2c, - 0x22, 0xc2, 0x6b, 0xce, 0x0e, 0x94, 0x69, 0xc7, 0xce, 0xb0, 0xa0, 0x82, - 0x11, 0x26, 0xb1, 0x59, 0x3e, 0xc4, 0x41, 0x53, 0xa0, 0xda, 0xe7, 0xe0, - 0xaf, 0x39, 0xae, 0x80, 0x1a, 0x2b, 0x33, 0x33, 0x10, 0x09, 0x62, 0x8b, - 0x37, 0x13, 0x26, 0x37, 0x2a, 0xbd, 0xe5, 0x01, 0x65, 0xe2, 0x01, 0x54, - 0xe1, 0x40, 0x24, 0xe7, 0xa4, 0xef, 0x01, 0xa8, 0x05, 0x39, 0xf9, 0x97, - 0x8d, 0x07, 0x26, 0x63, 0x10, 0xe0, 0xb1, 0xac, 0x25, 0xba, 0x02, 0x3c, - 0x81, 0xc2, 0xe1, 0x32, 0xa1, 0x20, 0xc8, 0x28, 0x08, 0xee, 0x67, 0xe1, - 0x85, 0x9d, 0xf6, 0x9c, 0x02, 0x13, 0x17, 0x95, 0x98, 0x1d, 0x96, 0xde, - 0x07, 0xe0, 0x2c, 0xbe, 0x38, 0x9a, 0x04, 0x1c, 0xac, 0xf4, 0x94, 0x42, - 0x35, 0x1b, 0x86, 0xb1, 0xd5, 0xac, 0x27, 0xdf, 0xfe, 0xe0, 0x10, 0x41, - 0x10, 0x75, 0x10, 0xe7, 0x09, 0xe7, 0xde, 0x5e, 0x50, 0x15, 0x43, 0x24, - 0x46, 0xdf, 0x14, 0xb1, 0x04, 0x85, 0x27, 0x6a, 0xdf, 0xce, 0x05, 0xa0, - 0xe9, 0x93, 0x4b, 0x17, 0x43, 0xe6, 0x92, 0x94, 0x18, 0x71, 0xae, 0x1c, - 0x64, 0x56, 0x93, 0xac, 0xc5, 0x2b, 0x8c, 0xe3, 0xce, 0x30, 0x90, 0x13, - 0x24, 0x3a, 0xde, 0x1d, 0x8d, 0xf4, 0x80, 0xf7, 0xd6, 0x0f, 0x26, 0xdc, - 0xfd, 0x10, 0x08, 0xd4, 0xce, 0x8f, 0xe9, 0x17, 0x44, 0xd4, 0x54, 0xe2, - 0x43, 0x73, 0x38, 0xf4, 0x45, 0xf3, 0x80, 0xc2, 0xb2, 0x50, 0x5a, 0x44, - 0x16, 0xd2, 0x25, 0x8c, 0x46, 0x1e, 0x70, 0x1e, 0x58, 0xe6, 0x1b, 0x69, - 0x94, 0x1d, 0x93, 0x26, 0x88, 0xc9, 0xe2, 0x03, 0x4d, 0xd4, 0x43, 0x8a, - 0xd5, 0x9f, 0x54, 0x1a, 0x64, 0x11, 0x1c, 0x04, 0x46, 0x06, 0x01, 0xb0, - 0x18, 0x1f, 0x61, 0x58, 0x99, 0x77, 0xe8, 0x71, 0x78, 0xfd, 0xb5, 0x7f, - 0xde, 0x21, 0x93, 0xd0, 0x50, 0x4c, 0x62, 0xc4, 0xa8, 0x30, 0x77, 0x6a, - 0x3f, 0xad, 0xe0, 0xdc, 0x35, 0xcd, 0x20, 0x2b, 0xd1, 0xe6, 0x28, 0xe9, - 0x4a, 0x53, 0xde, 0x7b, 0xeb, 0x0d, 0x63, 0xd6, 0x0e, 0x2f, 0x48, 0x34, - 0x4a, 0xa8, 0xdf, 0x26, 0x02, 0xb3, 0x2c, 0xd0, 0x0d, 0x4c, 0x30, 0x63, - 0x30, 0xd1, 0xde, 0x20, 0x80, 0x5f, 0x31, 0x8e, 0xb8, 0x70, 0x9c, 0xa4, - 0x5e, 0xd0, 0x89, 0xb3, 0xbe, 0x54, 0x27, 0x2e, 0x30, 0xad, 0xc4, 0x03, - 0x2d, 0x9d, 0x8c, 0x5a, 0x98, 0x1a, 0xc2, 0x12, 0x28, 0xf1, 0x6a, 0x7c, - 0xe0, 0xa1, 0x16, 0x6d, 0x59, 0x81, 0x20, 0x4d, 0x0e, 0x09, 0x1b, 0x4a, - 0x41, 0x70, 0x62, 0x02, 0xa2, 0xb7, 0xdb, 0xec, 0x84, 0x1a, 0xa0, 0x1d, - 0x88, 0x68, 0x22, 0x75, 0x80, 0x20, 0x31, 0xb1, 0xd4, 0xbd, 0xe0, 0xca, - 0x00, 0x90, 0x5d, 0x87, 0x20, 0x6d, 0xfa, 0x85, 0x1b, 0x01, 0x29, 0x6d, - 0x06, 0x67, 0xe2, 0x33, 0xfd, 0x19, 0x97, 0xa4, 0xc0, 0x37, 0x04, 0x27, - 0x7f, 0xa0, 0x96, 0x7a, 0x40, 0x48, 0x64, 0x29, 0x98, 0x43, 0xda, 0x8f, - 0x48, 0xee, 0xe5, 0x67, 0xb4, 0xab, 0xfa, 0x00, 0xf3, 0x0a, 0x00, 0xa1, - 0xbb, 0xd4, 0xc4, 0x45, 0x2b, 0xe6, 0x1d, 0xd8, 0x9a, 0x15, 0xc1, 0x26, - 0xb0, 0x20, 0xa4, 0x08, 0x91, 0x82, 0xab, 0x12, 0xc0, 0x41, 0x2e, 0xfc, - 0xc4, 0x08, 0xdf, 0xea, 0x49, 0x98, 0x4d, 0xed, 0xd1, 0xf6, 0x80, 0x9b, - 0x6d, 0x48, 0xaf, 0xc0, 0x86, 0x06, 0x70, 0xd8, 0x7c, 0x7c, 0x13, 0x70, - 0x05, 0xb1, 0xab, 0x18, 0xed, 0xdb, 0x88, 0x24, 0x80, 0x83, 0x31, 0x83, - 0x79, 0x8a, 0x81, 0xa8, 0x42, 0x31, 0x5c, 0x55, 0x29, 0xa8, 0x89, 0x42, - 0x3d, 0x34, 0x84, 0x94, 0xbe, 0x80, 0x59, 0x10, 0x15, 0x2d, 0x47, 0x5f, - 0xa0, 0xf7, 0x8b, 0x8c, 0x66, 0x52, 0x8e, 0x53, 0xcf, 0xd6, 0x15, 0x93, - 0xb0, 0x8a, 0x81, 0x4a, 0xbd, 0x79, 0x86, 0x2c, 0x85, 0x05, 0x26, 0xc6, - 0xb5, 0x2e, 0x6c, 0x94, 0xf7, 0xd6, 0x19, 0x8d, 0xc1, 0xee, 0x64, 0x08, - 0x00, 0x00, 0x00, 0x40, 0x50, 0x03, 0x4f, 0xb4, 0x1b, 0x60, 0x91, 0x30, - 0x44, 0x3a, 0x12, 0xe0, 0x11, 0xf3, 0x11, 0xf4, 0xf4, 0x10, 0x24, 0xd1, - 0xc1, 0x5f, 0x26, 0xbf, 0xc8, 0xef, 0x20, 0x2c, 0xc5, 0x7f, 0x93, 0x32, - 0x09, 0x07, 0x53, 0x49, 0xd1, 0xf4, 0xcc, 0xaf, 0xa0, 0xdb, 0x13, 0x48, - 0x22, 0xaf, 0xa6, 0x0c, 0xb7, 0x01, 0x99, 0x0f, 0x68, 0x8a, 0x27, 0xe1, - 0x96, 0xc8, 0x8e, 0xe0, 0x83, 0xaf, 0x94, 0x01, 0x6d, 0x26, 0x6d, 0xb1, - 0x03, 0x50, 0xd8, 0xab, 0x5e, 0x9b, 0xc0, 0x51, 0xb8, 0x48, 0xa8, 0x14, - 0x21, 0xa0, 0xfc, 0xfd, 0xb2, 0x67, 0x04, 0x77, 0x1c, 0x8e, 0x63, 0x50, - 0xd2, 0x99, 0xbd, 0xae, 0x0e, 0x88, 0xc7, 0x93, 0x37, 0xf3, 0x69, 0x61, - 0x54, 0x50, 0xf6, 0x8a, 0x39, 0xa4, 0xd3, 0xe9, 0x88, 0xaf, 0xac, 0xc6, - 0x91, 0xac, 0x4b, 0x64, 0xcc, 0x62, 0x60, 0xe6, 0xa1, 0x22, 0x91, 0xb7, - 0x88, 0x07, 0x30, 0x7a, 0x19, 0xb2, 0x03, 0x2b, 0x48, 0x07, 0xd3, 0x30, - 0xf5, 0x8e, 0x5a, 0xae, 0x1e, 0x91, 0x01, 0x06, 0x2a, 0xbc, 0x83, 0xf9, - 0x2f, 0xb8, 0x5d, 0x7f, 0x01, 0xb4, 0x86, 0xec, 0x10, 0x81, 0x33, 0xb9, - 0xd2, 0x04, 0x85, 0x64, 0x88, 0xd5, 0xcc, 0xbb, 0xc3, 0x89, 0x94, 0x20, - 0x8d, 0x3e, 0xb9, 0x80, 0xae, 0x3e, 0x82, 0x8f, 0xd3, 0x49, 0xcc, 0x05, - 0x4d, 0x23, 0x70, 0x55, 0x88, 0x6e, 0x62, 0x0a, 0xa4, 0x68, 0x04, 0xa0, - 0xb0, 0xce, 0x81, 0x98, 0x1a, 0x27, 0xf2, 0x0f, 0xba, 0x23, 0x48, 0x16, - 0xca, 0x00, 0x5a, 0x50, 0x90, 0xc3, 0x06, 0x0a, 0x8a, 0x28, 0x60, 0x96, - 0x4e, 0x9c, 0x7d, 0x34, 0x9b, 0x4b, 0x2a, 0x67, 0xeb, 0xc7, 0x81, 0x28, - 0x2e, 0x6b, 0xa4, 0x01, 0x98, 0x07, 0x44, 0x60, 0x4c, 0xaf, 0xd4, 0xfd, - 0xe0, 0x09, 0xe0, 0xc2, 0xd6, 0x02, 0x06, 0x2c, 0xb8, 0x45, 0xfd, 0x4b, - 0x0d, 0xbe, 0x87, 0xc0, 0x31, 0xf5, 0x75, 0x06, 0x90, 0x5c, 0x55, 0x16, - 0xe3, 0xe8, 0x07, 0xfb, 0x04, 0x4c, 0x05, 0x62, 0xd7, 0x88, 0x09, 0x02, - 0xa1, 0x80, 0x3e, 0xf0, 0x88, 0x01, 0x11, 0x2c, 0x11, 0x0e, 0xa4, 0x96, - 0x12, 0x59, 0xee, 0x86, 0x8f, 0xd3, 0x47, 0xe0, 0x39, 0xf1, 0xe5, 0x78, - 0x87, 0x3b, 0x7d, 0x46, 0x61, 0x32, 0x12, 0x58, 0x30, 0x82, 0x7c, 0x15, - 0x9d, 0xdb, 0xfd, 0xf2, 0xf9, 0x0f, 0x56, 0x84, 0x42, 0xa8, 0x47, 0xd1, - 0x68, 0x7e, 0x9a, 0x7d, 0x73, 0xe0, 0x30, 0x46, 0xcf, 0xd0, 0x41, 0x33, - 0x05, 0x40, 0xfe, 0xd2, 0x80, 0x95, 0x47, 0xc1, 0x3f, 0x67, 0xfe, 0x00, - 0x04, 0xa1, 0xba, 0xea, 0x08, 0x1d, 0xd1, 0x11, 0x1e, 0x05, 0x17, 0xd5, - 0x7d, 0x0c, 0x5f, 0x40, 0x3e, 0xa4, 0xbb, 0x7a, 0x11, 0x93, 0xf8, 0x0f, - 0xd6, 0xf0, 0x04, 0x43, 0xff, 0x00, 0x04, 0x2a, 0x75, 0x02, 0xcb, 0x43, - 0xd0, 0xfe, 0xc6, 0x9f, 0x45, 0x14, 0x5f, 0x42, 0x8b, 0xe8, 0xa2, 0xfa, - 0x95, 0xfd, 0x03, 0xd5, 0x17, 0x41, 0xa9, 0x95, 0x5b, 0x88, 0x25, 0xcc, - 0x6e, 0x72, 0x7c, 0x86, 0x9f, 0xf8, 0x40, 0x72, 0x59, 0x7f, 0x34, 0xf9, - 0x98, 0x08, 0x30, 0x99, 0x00, 0x79, 0x42, 0x13, 0xad, 0xf0, 0xd2, 0x03, - 0x95, 0x00, 0x17, 0x9e, 0x40, 0xeb, 0x5f, 0x94, 0x08, 0x6a, 0x1c, 0xc0, - 0x36, 0x87, 0x54, 0x3f, 0x30, 0x17, 0xe2, 0x77, 0x80, 0xdf, 0x27, 0xbc, - 0xf8, 0x7f, 0xe6, 0x15, 0x19, 0x72, 0x07, 0xf4, 0x1a, 0x3f, 0xa4, 0x6e, - 0x64, 0x01, 0xa6, 0x71, 0x20, 0xb8, 0x12, 0x3c, 0xbe, 0x1f, 0xfe, 0xdb, - 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, + 0x20, 0x00, 0x00, 0x00, 0x40, 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x01, + 0x60, 0x00, 0x00, 0x00, 0x36, 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x01, + 0x98, 0x00, 0x00, 0x00, 0x14, 0x63, 0x68, 0x61, 0x64, 0x00, 0x00, 0x01, + 0xac, 0x00, 0x00, 0x00, 0x2c, 0x72, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, + 0xd8, 0x00, 0x00, 0x00, 0x14, 0x62, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x01, + 0xec, 0x00, 0x00, 0x00, 0x14, 0x67, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x72, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, + 0x14, 0x00, 0x00, 0x00, 0x20, 0x67, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, + 0x14, 0x00, 0x00, 0x00, 0x20, 0x62, 0x54, 0x52, 0x43, 0x00, 0x00, 0x02, + 0x14, 0x00, 0x00, 0x00, 0x20, 0x63, 0x68, 0x72, 0x6d, 0x00, 0x00, 0x02, + 0x34, 0x00, 0x00, 0x00, 0x24, 0x64, 0x6d, 0x6e, 0x64, 0x00, 0x00, 0x02, + 0x58, 0x00, 0x00, 0x00, 0x24, 0x64, 0x6d, 0x64, 0x64, 0x00, 0x00, 0x02, + 0x7c, 0x00, 0x00, 0x00, 0x24, 0x6d, 0x6c, 0x75, 0x63, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x65, 0x6e, 0x55, + 0x53, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x47, 0x00, + 0x49, 0x00, 0x4d, 0x00, 0x50, 0x00, 0x20, 0x00, 0x62, 0x00, 0x75, 0x00, + 0x69, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x2d, 0x00, 0x69, 0x00, 0x6e, 0x00, + 0x20, 0x00, 0x73, 0x00, 0x52, 0x00, 0x47, 0x00, 0x42, 0x6d, 0x6c, 0x75, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x65, 0x6e, 0x55, 0x53, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x50, 0x00, 0x75, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x69, 0x00, + 0x63, 0x00, 0x20, 0x00, 0x44, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x61, 0x00, + 0x69, 0x00, 0x6e, 0x00, 0x00, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf6, 0xd6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, + 0x2d, 0x73, 0x66, 0x33, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, + 0x42, 0x00, 0x00, 0x05, 0xde, 0xff, 0xff, 0xf3, 0x25, 0x00, 0x00, 0x07, + 0x93, 0x00, 0x00, 0xfd, 0x90, 0xff, 0xff, 0xfb, 0xa1, 0xff, 0xff, 0xfd, + 0xa2, 0x00, 0x00, 0x03, 0xdc, 0x00, 0x00, 0xc0, 0x6e, 0x58, 0x59, 0x5a, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xa0, 0x00, 0x00, 0x38, + 0xf5, 0x00, 0x00, 0x03, 0x90, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x24, 0x9f, 0x00, 0x00, 0x0f, 0x84, 0x00, 0x00, 0xb6, + 0xc4, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, + 0x97, 0x00, 0x00, 0xb7, 0x87, 0x00, 0x00, 0x18, 0xd9, 0x70, 0x61, 0x72, + 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x66, + 0x66, 0x00, 0x00, 0xf2, 0xa7, 0x00, 0x00, 0x0d, 0x59, 0x00, 0x00, 0x13, + 0xd0, 0x00, 0x00, 0x0a, 0x5b, 0x63, 0x68, 0x72, 0x6d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xd7, 0x00, 0x00, 0x54, + 0x7c, 0x00, 0x00, 0x4c, 0xcd, 0x00, 0x00, 0x99, 0x9a, 0x00, 0x00, 0x26, + 0x67, 0x00, 0x00, 0x0f, 0x5c, 0x6d, 0x6c, 0x75, 0x63, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x65, 0x6e, 0x55, + 0x53, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x47, 0x00, + 0x49, 0x00, 0x4d, 0x00, 0x50, 0x6d, 0x6c, 0x75, 0x63, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x65, 0x6e, 0x55, + 0x53, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x73, 0x00, + 0x52, 0x00, 0x47, 0x00, 0x42, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0xff, 0xdb, 0x00, 0x43, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, + 0xc2, 0x00, 0x11, 0x08, 0x02, 0x58, 0x01, 0x90, 0x03, 0x01, 0x11, 0x00, + 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, 0x1e, 0x00, 0x01, + 0x00, 0x01, 0x04, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x05, 0x06, 0x09, 0x02, 0x03, 0x08, + 0x07, 0x0a, 0xff, 0xc4, 0x00, 0x19, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x04, 0x01, 0x02, 0x05, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, + 0x02, 0x10, 0x03, 0x10, 0x00, 0x00, 0x01, 0xd9, 0x87, 0xd0, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x49, 0x20, 0x00, 0x09, 0x24, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x6f, 0xde, 0xfb, 0xa6, 0xdb, 0x34, - 0xd3, 0x49, 0x26, 0x9b, 0x49, 0xb6, 0xda, 0x6f, 0x0c, 0x00, 0x00, 0x02, - 0x96, 0xf9, 0x34, 0x93, 0x49, 0x34, 0xdb, 0x49, 0xb4, 0x9b, 0x6d, 0x7d, - 0xbb, 0xdb, 0x6d, 0xc6, 0x00, 0x00, 0x15, 0xfc, 0x04, 0x48, 0x21, 0x0c, - 0x52, 0x0c, 0x24, 0x9a, 0x44, 0x06, 0x83, 0x6c, 0x94, 0x54, 0xe0, 0x00, - 0x07, 0xa9, 0x80, 0x03, 0x32, 0x80, 0xda, 0xd9, 0xb6, 0xe7, 0x4d, 0xf4, - 0x93, 0x4d, 0x34, 0x25, 0xe7, 0x40, 0x00, 0x18, 0x5a, 0x52, 0x4b, 0x00, - 0xf7, 0xff, 0x00, 0xef, 0xb7, 0xdf, 0xfd, 0xb6, 0xfb, 0x77, 0xba, 0x36, - 0x27, 0x00, 0x00, 0xd3, 0x28, 0x7b, 0x03, 0x6d, 0xba, 0x00, 0xfd, 0x48, - 0x84, 0xc9, 0x9c, 0xe6, 0x03, 0xf9, 0x5b, 0xdc, 0x00, 0x01, 0x0d, 0x8b, - 0x6c, 0x4d, 0xf2, 0x77, 0x1e, 0x67, 0x31, 0x4f, 0x16, 0xad, 0xac, 0x09, - 0x6c, 0xe3, 0x50, 0x00, 0x0c, 0x36, 0x2d, 0xb8, 0x9f, 0xd9, 0x94, 0x3d, - 0x40, 0x89, 0x14, 0xc8, 0xba, 0x01, 0xaf, 0xf0, 0x2e, 0xc0, 0x00, 0x34, - 0x41, 0xbe, 0xf1, 0x7b, 0xaf, 0xcd, 0xf4, 0xb2, 0x07, 0xf2, 0x22, 0x99, - 0xc5, 0xff, 0x00, 0xce, 0xf5, 0x00, 0x00, 0x61, 0x08, 0xdb, 0x76, 0x0b, - 0xbf, 0x77, 0xf6, 0xef, 0x7d, 0xb7, 0xdf, 0xee, 0xbf, 0xff, 0x00, 0xf9, - 0xe4, 0x00, 0x01, 0xcc, 0x2b, 0xef, 0x65, 0x96, 0xdb, 0x2d, 0x96, 0xc9, - 0x65, 0xb2, 0x00, 0x24, 0x80, 0x6f, 0xd3, 0xb4, 0x00, 0x04, 0x30, 0x7f, - 0xdd, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xd8, - 0xbe, 0x3a, 0x40, 0x00, 0x30, 0x40, 0xfb, 0x76, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x60, 0xf8, 0x3b, 0x00, 0x00, 0x51, - 0x07, 0xcf, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xab, 0xe5, 0xec, 0x00, 0x01, 0x65, 0x2f, 0xaf, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x0f, 0xce, 0xb0, 0x00, - 0x06, 0x90, 0xfe, 0xbd, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xd8, 0x3f, 0x5e, 0x50, 0x00, 0x32, 0xd1, 0x9a, 0xf6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x60, 0xf8, 0xfe, - 0x80, 0x00, 0xcb, 0x4e, 0xea, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xa3, 0x65, 0xf9, 0x00, 0x01, 0x65, 0x3d, 0x2b, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x8f, - 0xd6, 0x84, 0x00, 0x05, 0xb0, 0xbc, 0xad, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xda, 0x3f, 0x7a, 0x80, 0x00, 0x16, 0x43, - 0x93, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x65, 0xdb, 0x3a, 0x00, 0x00, 0xc9, 0x3e, 0xca, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0x93, 0xec, 0xaa, 0x00, 0x03, - 0x35, 0xe3, 0x2b, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xcf, 0x8b, 0x80, 0x00, 0x04, 0xb3, 0xee, 0xad, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x37, 0x4a, 0x90, - 0x00, 0x12, 0x4c, 0x7a, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6c, 0xf4, 0xaa, 0x40, 0x00, 0x8f, 0x13, 0xea, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0x97, 0xf6, - 0xa9, 0x00, 0x02, 0x6d, 0x4b, 0xab, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x5f, 0xd2, 0xa0, 0x00, 0x09, 0x9b, 0xdf, - 0xad, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xd9, - 0x3e, 0x2a, 0x90, 0x00, 0x25, 0xd5, 0x73, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x64, 0xd8, 0xe8, 0x00, 0x00, 0x07, - 0x33, 0xce, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0x97, 0x72, 0xe8, 0x00, 0x00, 0x16, 0x6f, 0xab, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x4e, 0xc3, 0xc0, 0x00, - 0x01, 0x59, 0xad, 0xad, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x3b, 0xba, 0xa0, 0x00, 0x01, 0x66, 0xbe, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xda, 0x38, - 0xc0, 0x00, 0x97, 0xd8, 0xdc, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0x97, 0xea, 0xab, 0x00, 0x00, 0x57, 0x47, 0x3b, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0x4f, - 0xa3, 0xa4, 0x00, 0x00, 0xde, 0x0e, 0xad, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, - 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xd9, 0xfd, 0xaa, 0x80, 0x00, 0x02, 0xca, - 0xff, 0x00, 0x36, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, - 0xdb, 0x66, 0xc6, 0xe2, 0x40, 0x00, 0x01, 0xe4, 0xde, 0xdb, 0x6d, 0xb6, - 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb3, 0x8b, 0x88, 0x00, - 0x00, 0x47, 0xd3, 0xeb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, - 0xdb, 0x6d, 0xb6, 0xec, 0x4e, 0x60, 0x00, 0x01, 0x93, 0xdd, 0x8d, 0xb6, - 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x79, 0x81, - 0x80, 0x00, 0x03, 0x45, 0x1f, 0x36, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, - 0xdb, 0x6d, 0xb6, 0xdb, 0x6e, 0xca, 0x5f, 0x80, 0x00, 0x1d, 0x6d, 0x30, - 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0x97, - 0x9b, 0xd6, 0x00, 0x00, 0x10, 0xe4, 0x05, 0x9b, 0x49, 0xa4, 0x9b, 0x4d, - 0x34, 0x9a, 0x6d, 0x24, 0x9a, 0x49, 0x0c, 0x0a, 0xe8, 0x00, 0x00, 0xee, - 0xb9, 0x49, 0x41, 0x88, 0xf6, 0xa8, 0x02, 0x01, 0x20, 0xbd, 0xb7, 0xdb, - 0x69, 0xd9, 0x3f, 0x20, 0x00, 0x04, 0xa8, 0x3d, 0x85, 0x4a, 0x64, 0x02, - 0x80, 0x40, 0x20, 0x86, 0x49, 0xfb, 0x7d, 0xaf, 0x25, 0xf5, 0x00, 0x00, - 0x0c, 0xf8, 0xd2, 0x92, 0x49, 0x90, 0x82, 0x01, 0x20, 0x92, 0x08, 0x20, - 0x11, 0xf8, 0x84, 0x1c, 0xde, 0x00, 0x00, 0x76, 0x71, 0x6b, 0x64, 0xa4, - 0x80, 0x04, 0x00, 0x0a, 0x41, 0x20, 0x91, 0x00, 0xd7, 0x92, 0x2a, 0x48, - 0x00, 0x00, 0x25, 0xeb, 0xbe, 0xb4, 0x42, 0x08, 0x90, 0x50, 0x00, 0x24, - 0x00, 0x11, 0x0f, 0x2e, 0x05, 0xb2, 0x40, 0x00, 0x00, 0x26, 0x84, 0xde, - 0xc1, 0x44, 0x36, 0x70, 0x40, 0x14, 0x1a, 0x41, 0x26, 0xa6, 0x14, 0x39, - 0x44, 0x00, 0x00, 0x03, 0xbb, 0xf3, 0x7b, 0x69, 0xb6, 0x08, 0x45, 0x10, - 0xd8, 0x01, 0x04, 0x12, 0x0b, 0x26, 0xb6, 0xc0, 0x00, 0x00, 0x04, 0xed, - 0x3b, 0xb7, 0x86, 0xe2, 0x41, 0x14, 0x11, 0x09, 0xa4, 0x00, 0x40, 0x64, - 0x95, 0xf6, 0xc0, 0x00, 0x00, 0x24, 0x36, 0xc7, 0xda, 0x4a, 0x05, 0x92, - 0x50, 0x00, 0x04, 0x12, 0x09, 0x20, 0x13, 0x7e, 0xde, 0x00, 0x00, 0x00, - 0x08, 0x48, 0x37, 0xfd, 0xa5, 0x92, 0xfb, 0x44, 0xa0, 0xd8, 0x09, 0x34, - 0xd3, 0x0b, 0xdb, 0xc0, 0x00, 0x00, 0x00, 0x15, 0x86, 0x2b, 0xf7, 0xd7, - 0x7d, 0xb6, 0x93, 0xe3, 0x7d, 0xfa, 0xcb, 0x49, 0xb9, 0x2e, 0x80, 0x00, - 0x00, 0x00, 0x3f, 0xd3, 0x7f, 0x9b, 0xed, 0xb6, 0xdb, 0x6d, 0xf7, 0xfe, - 0xdf, 0x2d, 0x81, 0xfe, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x64, 0xe4, 0xd7, - 0xdf, 0xbf, 0xff, 0x00, 0x6f, 0xf6, 0xfb, 0xff, 0x00, 0xf6, 0xf2, 0x86, - 0xda, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x75, 0xeb, 0xbe, 0xdb, 0x7d, - 0xa6, 0xfb, 0x7f, 0xb6, 0xf7, 0xef, 0x1b, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x34, 0xcf, 0xda, 0xfd, 0xff, 0x00, 0xdb, 0x6f, 0xb7, 0xdb, - 0xfd, 0xd1, 0x4e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x5c, 0xd6, - 0xdd, 0xbe, 0xdf, 0x7b, 0xae, 0xdf, 0xef, 0xb6, 0x15, 0x84, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4c, 0x4c, 0x19, 0x74, 0xf6, 0xff, 0x00, 0xfd, - 0xbf, 0x4d, 0xbe, 0xfa, 0x4b, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0xa5, 0x64, 0xb7, 0xcd, 0x26, 0xb2, 0xff, 0x00, 0xf4, 0xdb, 0xe9, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0x4f, 0xb6, 0xd9, - 0x65, 0xb2, 0x5e, 0x37, 0xff, 0x00, 0x6c, 0x6c, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6b, 0x62, 0xc8, 0x2d, 0xb6, 0x80, 0x65, 0x9b, - 0x6f, 0xf0, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x99, 0x60, 0x34, 0x10, 0x02, 0x12, 0xdb, 0x7e, 0xc9, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x24, 0x90, 0x00, 0x49, 0x22, - 0x89, 0x6d, 0xf7, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xd6, 0xd1, 0x08, 0x20, 0x80, 0x6d, 0x92, 0xde, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x41, 0x00, - 0x00, 0x09, 0x12, 0xcb, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0xa4, 0x90, 0x80, 0x01, 0x36, 0xcb, 0x76, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf6, - 0xd8, 0x40, 0x22, 0xc9, 0x64, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5b, 0x64, 0xb6, 0x59, 0x37, 0xbf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcb, + 0x81, 0x4c, 0xed, 0x2f, 0x1d, 0x27, 0x41, 0xd0, 0x53, 0x9d, 0x27, 0x03, + 0x91, 0x50, 0x77, 0x9d, 0xe7, 0x79, 0xde, 0x77, 0x75, 0xdc, 0x76, 0xb9, + 0x27, 0x1e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xaf, 0x3d, + 0xf2, 0xdc, 0xa9, 0xf0, 0xef, 0x1e, 0xb0, 0x7f, 0x3d, 0xb0, 0x73, 0xb6, + 0x2e, 0x77, 0x1f, 0x31, 0xfe, 0x76, 0xc5, 0xc5, 0xa1, 0xdb, 0x59, 0x6f, + 0x3a, 0x47, 0x1c, 0x4e, 0x5d, 0x40, 0x38, 0x10, 0x73, 0x3b, 0x49, 0x3b, + 0x4e, 0x5c, 0x71, 0xeb, 0xa8, 0xeb, 0x39, 0x17, 0x63, 0x22, 0x72, 0xfd, + 0xd5, 0xfd, 0xcb, 0xff, 0x00, 0x57, 0xae, 0xae, 0xee, 0x5d, 0xfb, 0xcb, + 0xff, 0x00, 0x5f, 0x72, 0xf7, 0xe7, 0xd5, 0x35, 0x96, 0x49, 0xef, 0x80, + 0x00, 0x00, 0x1f, 0x23, 0x97, 0xbd, 0x37, 0x64, 0xd1, 0xe5, 0x87, 0x71, + 0x32, 0x88, 0xa1, 0xe3, 0xa4, 0xe2, 0x4b, 0x93, 0xde, 0xc9, 0xc0, 0xe1, + 0xc3, 0xbc, 0xef, 0x3b, 0xdd, 0xa9, 0x2b, 0x8a, 0xf2, 0xb8, 0xb9, 0x97, + 0x32, 0xe6, 0x5c, 0x4b, 0x99, 0x75, 0x2e, 0x45, 0xc5, 0xce, 0x6e, 0x81, + 0xd2, 0x75, 0x1d, 0x05, 0x29, 0xd0, 0x70, 0x3a, 0xce, 0x07, 0x59, 0x9e, + 0xb9, 0xb8, 0xad, 0x50, 0xfb, 0xb5, 0xa6, 0x00, 0x00, 0x5b, 0x7c, 0xf7, + 0x45, 0x98, 0xb5, 0x78, 0xa3, 0x9d, 0xc1, 0x83, 0x80, 0x0e, 0x2e, 0xc8, + 0x24, 0x80, 0x73, 0x2a, 0x4a, 0x92, 0xb0, 0xad, 0x2e, 0x05, 0x61, 0x73, + 0x2e, 0x25, 0xd0, 0xb9, 0x17, 0x42, 0xe6, 0x5c, 0x8a, 0xe2, 0xa0, 0x02, + 0x0e, 0x44, 0x02, 0x01, 0xc8, 0x10, 0x50, 0xb9, 0x98, 0x1b, 0xd7, 0xdd, + 0x96, 0xf5, 0xeb, 0x80, 0x00, 0x3c, 0x95, 0x0a, 0xe8, 0x67, 0x35, 0xfe, + 0x48, 0x41, 0x07, 0x22, 0x09, 0x00, 0x02, 0x01, 0xcc, 0xed, 0x2b, 0x0a, + 0x92, 0xb4, 0xad, 0x2b, 0xcb, 0x81, 0x70, 0x2e, 0x65, 0xd0, 0xb8, 0x97, + 0x32, 0xe8, 0x5c, 0x0a, 0xb3, 0x90, 0x04, 0x02, 0x41, 0x04, 0x82, 0x41, + 0xf3, 0xe7, 0x37, 0x1b, 0xa6, 0x3e, 0xc8, 0xbc, 0x80, 0x00, 0x6b, 0x33, + 0x2d, 0xf4, 0xe9, 0x1a, 0xe0, 0xc0, 0xe4, 0x71, 0x39, 0x1c, 0x0e, 0x44, + 0x83, 0xac, 0xe4, 0x09, 0x3b, 0x4e, 0xf2, 0xac, 0xab, 0x2b, 0x8a, 0xf2, + 0xb0, 0xb9, 0x17, 0x32, 0xe6, 0x5c, 0x8b, 0x91, 0x73, 0x2e, 0x45, 0x61, + 0xde, 0x01, 0xc8, 0xe2, 0x72, 0x38, 0x90, 0x49, 0x07, 0x20, 0x60, 0x6e, + 0x6c, 0x8e, 0xf3, 0xd9, 0x7e, 0x98, 0x00, 0x00, 0xd5, 0x7e, 0x5b, 0xea, + 0x32, 0x35, 0xc3, 0x0e, 0x27, 0x20, 0x47, 0x0e, 0xa4, 0x10, 0x40, 0x72, + 0x1d, 0x93, 0xb0, 0xee, 0x2a, 0x8a, 0xa2, 0xb8, 0xac, 0x2b, 0xca, 0xf2, + 0xe2, 0x5c, 0xcb, 0xa1, 0x72, 0x2e, 0x25, 0xc8, 0xb8, 0x95, 0x27, 0x61, + 0xc4, 0xe4, 0x70, 0x39, 0x10, 0x48, 0x00, 0x83, 0x06, 0x36, 0x07, 0x69, + 0x6d, 0x3f, 0x54, 0x00, 0x00, 0x6a, 0xb7, 0x2d, 0xf5, 0x1b, 0x1a, 0xe1, + 0xa7, 0x10, 0x49, 0xc4, 0x90, 0x09, 0x38, 0x80, 0x09, 0x3b, 0xce, 0xe2, + 0xb0, 0xab, 0x2b, 0x4a, 0xf2, 0xb4, 0xb9, 0x97, 0x12, 0xe8, 0x5c, 0x0b, + 0x91, 0x72, 0x2e, 0x45, 0x71, 0xdc, 0x40, 0x00, 0x00, 0x01, 0x26, 0x0a, + 0x6c, 0x0a, 0xd2, 0xda, 0x8e, 0xa8, 0x00, 0x00, 0xd5, 0x56, 0x5b, 0xea, + 0x42, 0x35, 0xc2, 0x81, 0x04, 0x82, 0x48, 0x0e, 0x4b, 0xa3, 0x89, 0x20, + 0x1d, 0x87, 0x79, 0x54, 0x55, 0x15, 0xa5, 0x79, 0x5a, 0x57, 0x97, 0x22, + 0xe6, 0x5c, 0x4b, 0x91, 0x72, 0x2e, 0x05, 0xc0, 0xac, 0x39, 0x90, 0x00, + 0x20, 0x00, 0x72, 0x30, 0x33, 0x60, 0x36, 0x96, 0xd5, 0x35, 0x40, 0x00, + 0x06, 0xa9, 0xf2, 0xdf, 0x52, 0x31, 0xae, 0x16, 0x00, 0x24, 0xe2, 0x49, + 0x24, 0x10, 0x00, 0x24, 0xe6, 0x76, 0x95, 0x05, 0x59, 0x56, 0x57, 0x15, + 0xc5, 0x71, 0x72, 0x2e, 0x25, 0xc8, 0xb8, 0x17, 0x12, 0xe4, 0x5c, 0x4a, + 0xf3, 0xb8, 0x00, 0x49, 0x00, 0x90, 0x0c, 0x0d, 0xcd, 0x80, 0x5a, 0x7b, + 0x57, 0xd5, 0x00, 0x00, 0x1a, 0xa5, 0xcb, 0x7d, 0x48, 0xc6, 0xb8, 0x69, + 0x07, 0x22, 0x01, 0x00, 0x12, 0x0e, 0x20, 0x1c, 0xb8, 0x75, 0xd8, 0x54, + 0x15, 0x05, 0x59, 0x58, 0x57, 0x95, 0xe5, 0x71, 0x71, 0x2e, 0x65, 0xc4, + 0xb8, 0x17, 0x22, 0xe0, 0x57, 0x95, 0xa7, 0x32, 0x40, 0x00, 0x82, 0x41, + 0x82, 0x1e, 0xfe, 0xb4, 0xb6, 0xb3, 0xaa, 0x00, 0x00, 0x35, 0x47, 0x96, + 0xfa, 0x92, 0x8d, 0x70, 0xd0, 0x49, 0x04, 0x14, 0x60, 0x82, 0x40, 0x20, + 0x02, 0x0e, 0x67, 0x69, 0xdc, 0x54, 0x95, 0x05, 0x51, 0x56, 0x55, 0x15, + 0xa5, 0x61, 0x5c, 0x56, 0x95, 0xa5, 0x59, 0x5a, 0x55, 0x1d, 0xc7, 0x22, + 0x01, 0xf4, 0x50, 0x41, 0x20, 0xc0, 0xdc, 0xf7, 0xf5, 0xa7, 0xb5, 0xbd, + 0x50, 0x00, 0x01, 0xaa, 0x1c, 0xb7, 0xd4, 0x9c, 0x6b, 0x86, 0x90, 0x72, + 0x04, 0x18, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x62, 0x44, 0x12, 0x09, 0x30, 0x13, 0xdf, 0xd6, 0x96, 0xd7, + 0x75, 0x40, 0x00, 0x06, 0xa7, 0xb2, 0xdf, 0x52, 0x91, 0xae, 0x1e, 0x41, + 0x20, 0x18, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x62, 0x24, 0x9c, 0x41, 0xc8, 0xc0, 0x0f, 0x7e, 0xda, 0x5b, + 0x60, 0xd5, 0x00, 0x00, 0x1a, 0x9c, 0xcb, 0x7d, 0x4a, 0xc6, 0xb8, 0x81, + 0xc4, 0x90, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xb1, 0x00, 0x09, 0x06, 0x02, 0xe7, 0xbe, 0xad, 0x3d, + 0xb1, 0xea, 0x80, 0x00, 0x0d, 0x4c, 0xe5, 0xbe, 0xa5, 0xa3, 0x5c, 0x44, + 0xe2, 0x49, 0x24, 0x18, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x61, 0xe0, 0x02, 0x4c, 0x05, 0xcf, 0x7d, 0x5a, + 0x7b, 0x64, 0xd5, 0x00, 0x00, 0x1a, 0x97, 0xcb, 0x7d, 0x4b, 0xc6, 0xb8, + 0x80, 0x24, 0x82, 0x4c, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xb0, 0xd3, 0x91, 0x07, 0x20, 0x7c, 0xfd, 0xcf, + 0x7d, 0x5a, 0x7b, 0x66, 0xd5, 0x00, 0x00, 0x1a, 0x95, 0xcb, 0x7d, 0x4b, + 0xc6, 0xb8, 0x88, 0x24, 0x10, 0x61, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x84, 0x1d, 0xa4, 0x90, 0x72, 0x3e, + 0x7c, 0x7b, 0xe6, 0xd2, 0xdb, 0x4e, 0xa8, 0x00, 0x00, 0xd4, 0x9e, 0x5b, + 0xea, 0x66, 0x35, 0xc4, 0x88, 0x00, 0x93, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0xee, 0x3b, 0x49, + 0x24, 0xc0, 0x1c, 0xf7, 0xbd, 0xa7, 0xb6, 0xbd, 0x50, 0x00, 0x01, 0xa9, + 0x1c, 0xb7, 0xd4, 0xd4, 0x6b, 0x88, 0x80, 0x49, 0x06, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x99, 0x56, + 0x77, 0x1c, 0xce, 0x66, 0x00, 0x7b, 0xe2, 0xd2, 0xdb, 0x6e, 0xa8, 0x00, + 0x00, 0xd4, 0x7e, 0x5b, 0xea, 0x6a, 0x35, 0xc4, 0xc8, 0x04, 0x83, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, + 0xa8, 0xa9, 0x2a, 0x4e, 0xe3, 0x91, 0x81, 0x9e, 0xf9, 0xb4, 0xb6, 0xdf, + 0xaa, 0x00, 0x00, 0x35, 0x1b, 0x96, 0xfa, 0x9c, 0x8d, 0x71, 0x12, 0x0e, + 0x40, 0x83, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7b, 0x88, 0xa8, 0x2a, 0x0e, 0xf3, 0xb0, 0xc1, 0xcf, 0x7d, + 0x5a, 0x5b, 0x71, 0xd5, 0x00, 0x00, 0x1a, 0x8b, 0xcb, 0x7d, 0x4e, 0x46, + 0xb8, 0x98, 0x00, 0x93, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7b, 0x58, 0xaa, 0x2a, 0x4e, 0xe3, 0xb4, 0xc2, + 0x9c, 0xf7, 0xf5, 0xa7, 0xb7, 0x3d, 0x50, 0x00, 0x01, 0xa8, 0xac, 0xb7, + 0xd4, 0xe4, 0x6b, 0x89, 0x80, 0x01, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x98, 0x55, 0x95, 0x27, 0x71, + 0xd8, 0x61, 0xc6, 0xc0, 0xed, 0x2d, 0xba, 0x6a, 0x80, 0x00, 0x0d, 0x44, + 0x65, 0xbe, 0xa7, 0x63, 0x5c, 0x48, 0x92, 0x48, 0x06, 0x28, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x21, 0x52, + 0x54, 0x9d, 0xe7, 0x71, 0x88, 0x9b, 0x04, 0xb4, 0xb6, 0xef, 0xaa, 0x00, + 0x00, 0x35, 0x0d, 0x96, 0xfa, 0x9e, 0x8d, 0x71, 0x53, 0x81, 0xc8, 0x82, + 0x4c, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xeb, 0xa2, 0xa4, 0xa9, 0x3b, 0xca, 0x83, 0x16, 0x73, 0x60, 0xd6, + 0x9e, 0xde, 0x35, 0x40, 0x00, 0x06, 0xa1, 0x32, 0xdf, 0x53, 0xd1, 0xae, + 0x2a, 0x41, 0x20, 0x18, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xd5, 0xc5, 0x61, 0x54, 0x54, 0x9d, 0xa6, 0x32, + 0x6c, 0x2a, 0xd2, 0xdb, 0xd6, 0xa8, 0x00, 0x00, 0xd4, 0x16, 0x5b, 0xea, + 0x7e, 0x35, 0xc5, 0x48, 0x39, 0x10, 0x0c, 0x58, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xea, 0x42, 0xb0, 0xaa, 0x2a, + 0x0a, 0x83, 0x1c, 0x36, 0x1b, 0x69, 0x6d, 0xf3, 0x54, 0x00, 0x00, 0x6a, + 0x03, 0x2d, 0xf5, 0x3f, 0x1a, 0xe2, 0xe0, 0x10, 0x0c, 0x5c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe9, 0x92, 0xb0, + 0xab, 0x2a, 0x8e, 0xf2, 0xc0, 0x6c, 0x46, 0xd2, 0xdb, 0xee, 0xa8, 0x00, + 0x00, 0xd3, 0xf6, 0x5b, 0xea, 0x82, 0x35, 0xc5, 0xc8, 0x24, 0x03, 0x17, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, + 0x40, 0xac, 0x2a, 0x4a, 0xb3, 0xb8, 0xb3, 0xb9, 0xb1, 0x2b, 0x4f, 0x70, + 0x1a, 0xa0, 0x00, 0x03, 0x4f, 0x99, 0x6f, 0xaa, 0x28, 0xd7, 0x17, 0x20, + 0x90, 0x0c, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xe8, 0x42, 0xb4, 0xab, 0x2a, 0x8a, 0x92, 0xce, 0x6c, 0x62, + 0xd2, 0xdc, 0x0e, 0xa8, 0x00, 0x00, 0xd3, 0xde, 0x5b, 0xea, 0x86, 0x35, + 0xc6, 0x00, 0x24, 0x18, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xef, 0x85, 0x51, 0x59, 0xc5, 0x57, 0x55, 0x25, + 0xb4, 0xd8, 0xd5, 0xa5, 0xb8, 0x3d, 0x50, 0x00, 0x01, 0xa7, 0x9c, 0xb7, + 0xd5, 0x14, 0x6b, 0x8c, 0x12, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xdd, 0x0a, 0xa2, 0xa4, 0xac, + 0x2a, 0x0a, 0x17, 0x36, 0x3d, 0x69, 0xee, 0x17, 0x54, 0x00, 0x00, 0x69, + 0xe3, 0x2d, 0xf5, 0x47, 0x1a, 0xe3, 0x24, 0x1c, 0x88, 0x20, 0xc6, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x6a, + 0x2a, 0xca, 0x92, 0xa0, 0xac, 0x29, 0x4d, 0x91, 0x5a, 0x5b, 0x86, 0xd5, + 0x00, 0x00, 0x1a, 0x76, 0xcb, 0x7d, 0x52, 0x46, 0xb8, 0xc8, 0x04, 0x03, + 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7d, 0x8c, 0xa9, 0x2a, 0x8a, 0x82, 0xa7, 0x8e, 0x9e, 0xb6, 0x51, 0x69, + 0x6e, 0x1f, 0x54, 0x00, 0x00, 0x69, 0xd7, 0x2d, 0xf5, 0x49, 0x1a, 0xe3, + 0x20, 0x92, 0x01, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0xb2, 0x55, 0x95, 0x05, 0x51, 0x52, 0x70, 0x36, + 0x57, 0x69, 0x6e, 0x27, 0x54, 0x00, 0x00, 0x69, 0xcb, 0x2d, 0xf5, 0x4d, + 0x1a, 0xe3, 0x64, 0x00, 0x0c, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xf5, 0x22, 0xa4, 0xaa, 0x2a, 0x0a, 0x9e, + 0x27, 0xad, 0x96, 0xda, 0x5b, 0x8c, 0xd5, 0x00, 0x00, 0x1a, 0x71, 0xcb, + 0x7d, 0x52, 0xc6, 0xb8, 0xe0, 0x24, 0x82, 0x0c, 0x6c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xb2, 0xa4, 0xa9, + 0x2a, 0x4a, 0x83, 0xb4, 0xd9, 0x8d, 0xa5, 0xb8, 0xcd, 0x50, 0x00, 0x01, + 0xa6, 0xfc, 0xb7, 0xd5, 0x3c, 0x6b, 0x8e, 0x10, 0x00, 0x31, 0xb0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xd1, 0x0a, + 0x92, 0xa0, 0xa8, 0x2a, 0x4a, 0x83, 0x66, 0x96, 0x96, 0xe3, 0xb5, 0x40, + 0x00, 0x06, 0x9b, 0xf2, 0xdf, 0x54, 0xf1, 0xae, 0x34, 0x09, 0x20, 0x18, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x3d, 0x2a, 0x0a, 0x93, 0xbc, 0xaa, 0x2a, 0xf8, 0xd9, 0xbd, 0xe5, 0xb8, + 0xfd, 0x50, 0x00, 0x01, 0xa7, 0x5c, 0xb7, 0xd5, 0x14, 0x6b, 0x8c, 0x90, + 0x48, 0x20, 0xc7, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x19, 0xa9, 0x50, 0x54, 0x95, 0x05, 0x49, 0x5e, 0x6c, 0xf6, + 0xd2, 0xdc, 0x6e, 0xa8, 0x00, 0x00, 0xd4, 0x46, 0x6b, 0x6a, 0x3e, 0x16, + 0xc6, 0x09, 0x01, 0xc3, 0xb6, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x39, 0x19, 0x31, 0x50, 0x77, 0x9d, 0xe5, 0x51, + 0x72, 0x36, 0xa5, 0x78, 0xed, 0xf3, 0x4c, 0x40, 0x00, 0x6a, 0x7f, 0x35, + 0xb4, 0xf7, 0x0b, 0x62, 0xa0, 0x92, 0x01, 0x00, 0x00, 0x01, 0x24, 0x00, + 0x41, 0x24, 0x12, 0x40, 0x00, 0x00, 0x08, 0x24, 0x10, 0x49, 0x27, 0x61, + 0xdc, 0x77, 0x9d, 0xe5, 0x41, 0xde, 0x5e, 0x4d, 0xb5, 0x5e, 0x3b, 0x65, + 0xd3, 0x10, 0x00, 0x1a, 0xca, 0xcf, 0x5d, 0x2e, 0x67, 0xbe, 0x12, 0x43, + 0x92, 0xe8, 0x10, 0x00, 0x20, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x09, 0x04, 0x00, 0x01, 0xcc, 0xec, 0x3b, 0x8e, 0xf3, 0xb8, 0xa8, 0x32, + 0x73, 0x71, 0xfa, 0x21, 0xb3, 0x9d, 0x12, 0x00, 0x01, 0xe2, 0x09, 0x53, + 0x42, 0x79, 0x34, 0x7c, 0xf0, 0x80, 0x01, 0x00, 0x90, 0x08, 0x24, 0x10, + 0x00, 0x00, 0x00, 0x41, 0x24, 0x02, 0x48, 0x00, 0x02, 0x09, 0x07, 0x33, + 0xb0, 0xef, 0x3b, 0x8e, 0xf3, 0x35, 0x37, 0xbf, 0xaf, 0x37, 0xb8, 0xab, + 0xe0, 0x00, 0x07, 0xc4, 0xfc, 0x77, 0xf3, 0x57, 0x8b, 0x5f, 0xcc, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x41, 0x20, 0x82, 0x40, 0x20, 0x12, 0x40, + 0x00, 0x10, 0x09, 0x20, 0x12, 0x73, 0x3b, 0x4e, 0xf3, 0xb4, 0xfa, 0x19, + 0xfa, 0x4b, 0xdb, 0x97, 0xed, 0xfe, 0xfc, 0x80, 0x00, 0xe0, 0x7e, 0x65, + 0x70, 0x6a, 0xf3, 0x1f, 0x3d, 0x74, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x08, 0x04, 0x82, 0x09, 0x04, 0x00, 0x49, 0xd8, + 0x76, 0x95, 0x47, 0xa4, 0xbb, 0xe7, 0xf4, 0xd5, 0xbf, 0x2f, 0x20, 0x00, + 0x00, 0xd2, 0x36, 0x4b, 0xeb, 0x36, 0x55, 0xc6, 0x89, 0x04, 0x00, 0x00, + 0x00, 0x80, 0x48, 0x04, 0x00, 0x00, 0x00, 0x39, 0x0e, 0xc9, 0x00, 0x10, + 0x01, 0x24, 0x12, 0x72, 0x3b, 0x0c, 0x9c, 0xd9, 0x75, 0xa5, 0xbb, 0x7d, + 0x50, 0x00, 0x00, 0x07, 0x8d, 0x25, 0xef, 0x40, 0x19, 0x34, 0xfc, 0xe4, + 0x00, 0x01, 0x00, 0x92, 0x09, 0x00, 0x10, 0x00, 0x04, 0x90, 0x01, 0x01, + 0xc3, 0xa0, 0x41, 0x20, 0x39, 0x0e, 0x88, 0x04, 0x9c, 0xcf, 0xa5, 0x1b, + 0xfd, 0xd7, 0x9b, 0xd9, 0x35, 0xf0, 0x00, 0x00, 0x0a, 0x73, 0xf3, 0x3f, + 0x87, 0x57, 0x98, 0x7c, 0xfa, 0xa5, 0x20, 0x90, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x93, 0x89, 0x24, 0x12, 0x40, 0x00, 0x10, 0x09, + 0x2b, 0x4f, 0x51, 0xfa, 0xf3, 0xfa, 0x5b, 0xdd, 0x96, 0xa0, 0x00, 0x00, + 0x00, 0xd5, 0x1e, 0x7a, 0xe9, 0xf3, 0x3d, 0xf0, 0xe2, 0x09, 0x00, 0x80, + 0x00, 0x00, 0x92, 0x00, 0x20, 0x90, 0x40, 0x20, 0x12, 0x40, 0x00, 0x00, + 0x41, 0x24, 0x02, 0x4c, 0xe0, 0xdb, 0xf6, 0x88, 0xed, 0x77, 0x44, 0x40, + 0x00, 0x00, 0x07, 0xcf, 0xbc, 0xf7, 0xf3, 0x2b, 0x87, 0x57, 0xc6, 0xdd, + 0x80, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x20, 0x10, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x1c, 0x8f, 0xb4, 0xb9, 0xfa, 0x66, 0xdd, 0x97, 0xe8, + 0x7e, 0xb8, 0x00, 0x00, 0x00, 0x06, 0x91, 0xf2, 0xdf, 0x59, 0x51, 0xae, + 0x36, 0x08, 0x04, 0x80, 0x08, 0x24, 0x80, 0x00, 0x00, 0x10, 0x09, 0x20, + 0x02, 0x48, 0x00, 0x82, 0x48, 0x00, 0x19, 0x39, 0xb2, 0xdb, 0x4b, 0x78, + 0x1a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xcf, 0x8f, 0x5f, 0x9c, 0x0c, + 0x5a, 0xbe, 0x66, 0x08, 0x24, 0x82, 0x48, 0x00, 0x00, 0x41, 0x20, 0x10, + 0x09, 0x20, 0x82, 0x40, 0x00, 0x00, 0x40, 0x00, 0x1f, 0x50, 0x3f, 0x46, + 0x5b, 0x72, 0xfa, 0x4b, 0xdf, 0x90, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, + 0x00, 0x63, 0xd1, 0xe0, 0x89, 0xd2, 0xcc, 0x40, 0x00, 0x10, 0x09, 0x00, + 0x10, 0x09, 0x20, 0x02, 0x09, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5e, 0xcf, + 0x76, 0xd2, 0x7f, 0xa0, 0xcd, 0x99, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x78, + 0xe6, 0x5e, 0xff, 0x00, 0x3e, 0xb9, 0x34, 0xfc, 0xf4, 0x00, 0x01, 0x00, + 0x12, 0x08, 0x00, 0x00, 0x41, 0x20, 0x80, 0x48, 0x20, 0x00, 0x1c, 0x3a, + 0x07, 0xd1, 0x8d, 0xfd, 0xeb, 0xcd, 0xed, 0x3a, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xc4, 0xfc, 0xe4, 0x62, 0xd3, 0xe3, 0x5f, 0x1e, 0xed, 0xe0, + 0x92, 0x09, 0x20, 0x10, 0x48, 0x04, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x82, 0x40, 0x20, 0xb9, 0x1e, 0xc0, 0xf7, 0xe3, 0xf4, 0x81, 0xb7, 0x37, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xfc, 0x69, 0xa2, 0x8c, 0xba, + 0x30, 0x30, 0x00, 0x00, 0x80, 0x09, 0x20, 0x02, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x41, 0x9f, 0x9b, 0xca, 0xd5, 0x9f, 0x61, 0x96, 0x98, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0xb8, 0xfc, 0xd4, 0x62, 0xd5, 0xe5, 0xcf, + 0x3e, 0xa8, 0xc8, 0x24, 0x10, 0x01, 0x24, 0x00, 0x00, 0x00, 0x02, 0x09, + 0x20, 0x92, 0x09, 0x20, 0x12, 0x41, 0x5a, 0x7a, 0x87, 0xd7, 0x9f, 0xd2, + 0xce, 0xec, 0xb5, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xb7, 0xa1, + 0x4d, 0x22, 0x66, 0xd1, 0x84, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x24, 0x80, 0x01, 0x24, 0x12, 0x67, 0x26, 0xee, 0x34, 0xc3, 0x64, + 0x77, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x71, 0xf9, 0xa4, + 0xc3, 0xab, 0xcc, 0x7c, 0xf5, 0x4a, 0x09, 0x20, 0x00, 0x00, 0x00, 0x82, + 0x40, 0x04, 0x00, 0x49, 0x00, 0x00, 0x55, 0x1e, 0x93, 0xef, 0x9f, 0xd3, + 0x26, 0xec, 0xb7, 0x4e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, + 0x94, 0x2b, 0xa4, 0xec, 0xd7, 0xc2, 0x40, 0x04, 0x12, 0x08, 0x24, 0x02, + 0x01, 0x24, 0x12, 0x40, 0x00, 0x00, 0x00, 0x33, 0x83, 0x74, 0x3a, 0x61, + 0xb3, 0xcb, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x68, 0xe3, + 0xf3, 0x41, 0x87, 0x57, 0x9a, 0xf9, 0xea, 0x94, 0x00, 0x41, 0x20, 0x82, + 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xb3, 0xd2, 0x5e, 0xbc, 0xfe, + 0x98, 0x36, 0xe5, 0xbc, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1a, 0xe2, 0x85, 0x74, 0x7f, 0x9a, 0xf8, 0x41, 0x00, 0x02, 0x48, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x70, 0x6e, 0xe7, 0x4e, 0x7d, 0x92, + 0x5e, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x78, 0xfc, + 0xd9, 0xe2, 0xd5, 0xe5, 0x6f, 0x3e, 0xad, 0xc4, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x09, 0x20, 0xae, 0x3d, 0x43, 0xeb, 0xcf, 0xe9, 0x63, + 0x76, 0x5a, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0x4c, 0x69, 0xa2, 0x0c, 0x9a, 0x30, 0x0e, 0xa0, 0x00, 0x08, 0x04, 0x82, + 0x09, 0x20, 0x90, 0x00, 0x20, 0x90, 0x41, 0x9e, 0x1b, 0xd0, 0xd5, 0x9f, + 0x61, 0x56, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, + 0x4f, 0xce, 0x8e, 0x2d, 0x3e, 0x39, 0x9f, 0xbb, 0x27, 0x40, 0x00, 0x00, + 0x02, 0x01, 0x24, 0x00, 0x09, 0x20, 0x17, 0x33, 0xd7, 0x3e, 0xbc, 0xfe, + 0x90, 0xb7, 0x65, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x9f, 0x3f, 0x7f, 0x9e, 0x6c, 0x5a, 0x7e, 0x6b, 0xd7, 0x00, + 0x00, 0x24, 0x82, 0x48, 0x24, 0x10, 0x00, 0x00, 0x03, 0xe8, 0x07, 0xe8, + 0x43, 0x5e, 0x6f, 0x63, 0x57, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1a, 0x14, 0xc7, 0xa3, 0x5f, 0x12, 0xa6, 0x37, 0xd0, + 0x92, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x0b, 0xd9, 0xef, 0x1a, 0x4f, + 0xf4, 0x15, 0xb3, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xe2, 0x3e, 0x3d, 0x7e, 0x6d, 0xb1, 0x69, 0xf9, 0x4f, 0x3b, + 0x4d, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x4f, 0xa5, 0x1f, 0xa4, + 0x4d, 0xb9, 0x7d, 0x07, 0xef, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6b, 0x37, 0x3d, 0xb4, 0xc1, 0x9a, 0xd8, 0x47, + 0x54, 0x67, 0x10, 0x00, 0x00, 0x82, 0x40, 0x07, 0x22, 0xac, 0xcc, 0x4d, + 0xbb, 0xe8, 0x86, 0xd8, 0x74, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x1e, 0x1a, 0x8d, 0x35, 0x4d, 0x9e, 0xde, + 0x7d, 0xf1, 0xea, 0x97, 0xa0, 0x1c, 0x3a, 0x71, 0x3d, 0x47, 0x11, 0xd4, + 0x81, 0xc7, 0x71, 0xf7, 0x5f, 0x7e, 0x76, 0x95, 0xa2, 0x3b, 0x05, 0xb4, + 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xb0, 0xf1, 0x6c, 0xe7, 0x60, 0x00, 0x00, 0x20, 0x92, 0x01, 0x71, + 0xef, 0x32, 0x2e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0xff, 0x00, 0xff, 0x00, 0xf6, 0x99, 0xfb, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc4, 0x00, 0x33, 0x10, 0x00, 0x01, + 0x02, 0x04, 0x03, 0x07, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x03, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x36, + 0x11, 0x13, 0x14, 0x16, 0x20, 0x35, 0x50, 0x15, 0x30, 0x34, 0x40, 0x10, + 0x12, 0x21, 0x24, 0x22, 0x25, 0x23, 0x60, 0x31, 0x41, 0x44, 0xff, 0xda, + 0x00, 0x08, 0x01, 0x01, 0x00, 0x01, 0x05, 0x02, 0xff, 0x00, 0xa0, 0xec, + 0x2b, 0x61, 0x45, 0xd6, 0xe1, 0x46, 0x6e, 0x54, 0x2e, 0x3e, 0x44, 0x23, + 0x55, 0xa6, 0x04, 0x6b, 0x34, 0x70, 0x8d, 0x7a, 0x84, 0x17, 0x31, 0xdb, + 0xc1, 0x73, 0x2d, 0xb8, 0x85, 0xc7, 0x6f, 0x14, 0x2b, 0xd4, 0x32, 0x85, + 0x66, 0x8e, 0x50, 0xaa, 0x53, 0x0a, 0x13, 0xf2, 0x25, 0x09, 0xa9, 0x52, + 0x83, 0xcc, 0x95, 0xfb, 0x42, 0x7f, 0x1b, 0x0f, 0xd5, 0x9c, 0x9e, 0x93, + 0xa7, 0x31, 0x57, 0xc6, 0x3b, 0x6e, 0x9f, 0x1c, 0xee, 0x3a, 0xcf, 0x44, + 0x9d, 0xc6, 0xab, 0x9e, 0x34, 0xe6, 0x30, 0xde, 0x31, 0x27, 0x31, 0x5a, + 0xf0, 0x89, 0x39, 0x89, 0xf7, 0x41, 0x4e, 0x62, 0x4d, 0x7a, 0x24, 0xe6, + 0x20, 0x54, 0x62, 0x51, 0xdf, 0x4e, 0xc4, 0xa2, 0xbb, 0xe0, 0x8d, 0x1b, + 0x9e, 0x54, 0xae, 0x64, 0x95, 0x5c, 0xc6, 0xc2, 0xe6, 0x36, 0x97, 0x31, + 0x40, 0xb9, 0x88, 0x2e, 0x62, 0x5c, 0xc6, 0xb9, 0x8c, 0xae, 0x61, 0x8c, + 0xaf, 0x5f, 0x89, 0x7a, 0xfa, 0xf5, 0xd5, 0xeb, 0x8b, 0xd7, 0xdb, 0x5c, + 0xc5, 0x2c, 0x17, 0x33, 0xc9, 0x21, 0x74, 0xc8, 0x84, 0xdd, 0xe2, 0xcc, + 0x09, 0xbb, 0xee, 0x6a, 0x14, 0xde, 0x22, 0x56, 0xa1, 0x4d, 0xe2, 0x5d, + 0xca, 0x13, 0x78, 0xa1, 0x76, 0xc2, 0xa0, 0xc5, 0x9b, 0xca, 0x05, 0x06, + 0x31, 0x5d, 0xf0, 0xa8, 0x31, 0xa2, 0xe7, 0x85, 0x4b, 0xe3, 0x85, 0x72, + 0x18, 0xa9, 0x78, 0xd5, 0x41, 0x9a, 0x54, 0xca, 0xbd, 0x32, 0xb0, 0xcf, + 0xb3, 0x78, 0x5d, 0xf4, 0xfb, 0x46, 0x9d, 0x75, 0xdf, 0x15, 0x4a, 0xf4, + 0xdc, 0xdd, 0xc0, 0xe0, 0x8a, 0x2a, 0xd3, 0xe5, 0x1a, 0x9b, 0x91, 0x23, + 0x39, 0xb5, 0x71, 0x25, 0x71, 0x51, 0x2e, 0x2d, 0xd4, 0x27, 0x66, 0xd7, + 0x1d, 0x3a, 0xb8, 0xc9, 0xa2, 0xb8, 0x97, 0xd6, 0xf9, 0xd4, 0x23, 0x89, + 0x08, 0x8a, 0x05, 0x42, 0x50, 0x50, 0xa8, 0x4a, 0x84, 0xa8, 0x4a, 0x80, + 0xa8, 0x4a, 0x84, 0xa8, 0x22, 0x2b, 0x79, 0x12, 0x0e, 0x3a, 0xb7, 0xae, + 0xad, 0xe3, 0x8b, 0x69, 0x46, 0x10, 0x51, 0x97, 0x96, 0x28, 0xc8, 0xd3, + 0xca, 0xf4, 0xca, 0x72, 0xf4, 0xba, 0x72, 0xf4, 0xa9, 0x25, 0xe9, 0x6d, + 0x05, 0xc2, 0xd4, 0x19, 0x56, 0xfd, 0xd1, 0x52, 0xa2, 0xce, 0x58, 0xd7, + 0xbc, 0x9d, 0xe1, 0x23, 0xd7, 0x39, 0x34, 0xcc, 0x8c, 0xad, 0xf7, 0x76, + 0x4c, 0x5c, 0x35, 0x7a, 0xad, 0x4c, 0xbf, 0x17, 0xb1, 0xfc, 0x7e, 0x41, + 0x41, 0x02, 0x81, 0x50, 0x95, 0x09, 0x40, 0xa8, 0x4a, 0x80, 0xa8, 0x4a, + 0x84, 0xa8, 0x4a, 0x80, 0xa8, 0x4a, 0x07, 0xf1, 0xb7, 0xa3, 0x6f, 0x5c, + 0xc3, 0x10, 0xbf, 0x05, 0x9f, 0x72, 0xcd, 0x50, 0x6a, 0xb4, 0xf9, 0xe6, + 0x2a, 0x52, 0x5d, 0x58, 0xc5, 0x55, 0x32, 0x16, 0xcd, 0xcb, 0x39, 0x18, + 0x98, 0xf7, 0x07, 0xe0, 0x20, 0x54, 0x28, 0x20, 0x54, 0x25, 0x42, 0x54, + 0x25, 0x42, 0x54, 0x05, 0x42, 0x54, 0x25, 0x03, 0xef, 0x7f, 0x94, 0xbd, + 0x6b, 0x05, 0xea, 0xd1, 0xcf, 0x5b, 0xfd, 0x58, 0xf3, 0x37, 0x17, 0x1f, + 0x71, 0x1d, 0xb5, 0x3f, 0x74, 0x20, 0x82, 0x05, 0x42, 0x54, 0x2a, 0x12, + 0xa1, 0x2a, 0x02, 0xa1, 0x2a, 0x15, 0x0a, 0x80, 0xa0, 0x50, 0x3d, 0x25, + 0x7f, 0xeb, 0xaa, 0x7b, 0xf8, 0xac, 0x60, 0x3c, 0xd7, 0xf7, 0xfa, 0xb1, + 0xeb, 0x50, 0x5c, 0x1d, 0xd3, 0xdd, 0xda, 0x81, 0x41, 0x05, 0x09, 0x40, + 0xa0, 0x54, 0x25, 0x42, 0x54, 0x25, 0x42, 0x54, 0x25, 0x42, 0x54, 0x25, + 0x42, 0x7d, 0xda, 0x87, 0x76, 0xc0, 0x7d, 0x45, 0xd5, 0x8f, 0x5a, 0x82, + 0xe0, 0xee, 0x7d, 0x7f, 0xf8, 0xeb, 0x08, 0x15, 0x09, 0x40, 0xa8, 0x4a, + 0x84, 0xa8, 0x54, 0x25, 0x42, 0x54, 0x25, 0x42, 0x54, 0x25, 0x42, 0x54, + 0x25, 0x0f, 0x72, 0xa1, 0xdd, 0xb0, 0x1b, 0x51, 0xf5, 0x63, 0xde, 0xa1, + 0xaf, 0xf7, 0x3f, 0x78, 0x2d, 0xaa, 0x15, 0x09, 0x41, 0x42, 0x50, 0x2a, + 0x18, 0x94, 0x25, 0x42, 0x54, 0x25, 0x42, 0x54, 0x25, 0x42, 0x54, 0x27, + 0xdc, 0xa8, 0xf7, 0x6c, 0x06, 0xd4, 0x7d, 0x58, 0xf9, 0xa8, 0x6b, 0xdd, + 0xcf, 0xdf, 0x08, 0x20, 0x81, 0x50, 0x95, 0x0a, 0x84, 0xa8, 0x4a, 0x85, + 0x42, 0x54, 0x25, 0x40, 0x54, 0x31, 0x28, 0x4a, 0x07, 0xdb, 0xa8, 0xf7, + 0x5c, 0x05, 0xd4, 0x9d, 0x58, 0xf9, 0xa8, 0xab, 0xfd, 0xcf, 0xdf, 0x08, + 0x2d, 0xa8, 0x28, 0x54, 0x25, 0x02, 0xa0, 0x2a, 0x12, 0xa1, 0x2a, 0x12, + 0xa1, 0x2a, 0x12, 0xa1, 0x2a, 0x12, 0x87, 0xb5, 0x52, 0xee, 0xb8, 0x09, + 0xa9, 0x7a, 0xb1, 0xf7, 0x51, 0xd7, 0xbb, 0x9f, 0x4f, 0x10, 0xca, 0xe2, + 0x19, 0x5c, 0x43, 0x4b, 0x88, 0x65, 0x71, 0x0c, 0xae, 0x21, 0x95, 0xc4, + 0x32, 0xb8, 0x86, 0x57, 0x10, 0xca, 0xe2, 0x19, 0x5c, 0x4b, 0x28, 0x4d, + 0x32, 0x84, 0xdc, 0xba, 0x13, 0xb2, 0xc8, 0x4f, 0xca, 0xa1, 0x51, 0x94, + 0x50, 0xd5, 0x24, 0x90, 0xab, 0x48, 0x21, 0x58, 0xa7, 0x28, 0x6b, 0x74, + 0xd0, 0xa1, 0xaf, 0x52, 0xc2, 0x17, 0x0d, 0x20, 0x28, 0x6e, 0x3a, 0x32, + 0x17, 0x35, 0x15, 0x0b, 0xa6, 0x86, 0x85, 0xd7, 0x41, 0x5c, 0xd9, 0x40, + 0x5c, 0xd9, 0x6f, 0xae, 0x6c, 0xa0, 0x2e, 0x6c, 0xa0, 0x75, 0x54, 0xbb, + 0xae, 0x02, 0x6a, 0x5e, 0xac, 0x7d, 0xd4, 0x95, 0xee, 0xe5, 0xe2, 0x2a, + 0x5d, 0xd3, 0x00, 0xf5, 0x2f, 0x56, 0x3f, 0x6a, 0x4a, 0xef, 0x72, 0xf1, + 0x15, 0x2e, 0xe9, 0x80, 0x7a, 0x9b, 0xab, 0x1f, 0xf5, 0x2d, 0x77, 0xb9, + 0x78, 0x8a, 0x97, 0x73, 0xc0, 0x2d, 0x4f, 0xd5, 0x98, 0x0d, 0x4b, 0x5d, + 0xee, 0x5e, 0x22, 0xa7, 0xdd, 0x30, 0x07, 0x53, 0xf5, 0x66, 0x03, 0x53, + 0x57, 0x3b, 0x8f, 0x88, 0xa9, 0xf7, 0x3c, 0x01, 0xd5, 0x1d, 0x59, 0x81, + 0xd4, 0xd5, 0xce, 0xe3, 0xe0, 0xc1, 0xe9, 0xa9, 0xf7, 0x4c, 0x00, 0xd5, + 0x3d, 0x59, 0x81, 0xd4, 0xf5, 0xce, 0xe3, 0xe0, 0xf6, 0xad, 0xbd, 0x15, + 0x4e, 0xe7, 0x80, 0x1a, 0xa7, 0xab, 0x30, 0x5a, 0x9e, 0xb7, 0xdc, 0x3c, + 0x18, 0x28, 0x15, 0xb7, 0xf1, 0xb5, 0x55, 0x0f, 0xfb, 0x2c, 0xbf, 0xea, + 0x9e, 0xac, 0xc1, 0x6a, 0x8a, 0xdf, 0x71, 0xf0, 0x60, 0xa0, 0x50, 0x2b, + 0x6a, 0xda, 0xaa, 0x7d, 0xcb, 0x2f, 0xda, 0xab, 0xab, 0x30, 0x7a, 0xa2, + 0xb7, 0xdc, 0x3c, 0x18, 0x28, 0x14, 0x0a, 0x05, 0x6d, 0x55, 0x2e, 0xe5, + 0x97, 0xed, 0x55, 0xd5, 0x98, 0x3d, 0x51, 0x5a, 0xee, 0x1e, 0x0e, 0x12, + 0x81, 0x5b, 0x56, 0xd4, 0x0a, 0xa8, 0xf7, 0x1c, 0xbe, 0xea, 0xae, 0xac, + 0xc2, 0x6a, 0x8a, 0xd7, 0xcf, 0xf0, 0x60, 0xa0, 0x50, 0x2b, 0x6a, 0xda, + 0xa7, 0xcf, 0xfb, 0x1c, 0xbe, 0xea, 0xae, 0xac, 0xc2, 0x6a, 0x9a, 0xd7, + 0x70, 0xf0, 0x7b, 0x50, 0x28, 0x15, 0xfb, 0x7e, 0x27, 0xbb, 0x8e, 0x5f, + 0x35, 0x5f, 0x56, 0x61, 0x75, 0x55, 0x6b, 0xb8, 0x78, 0x30, 0x50, 0x28, + 0x14, 0x0a, 0xda, 0xa7, 0x3b, 0x8e, 0x5f, 0x35, 0x5f, 0x56, 0x61, 0x75, + 0x55, 0x6b, 0xe7, 0xf8, 0x30, 0x50, 0x28, 0x14, 0x0a, 0xda, 0xa6, 0xfb, + 0x86, 0x5e, 0xf5, 0x67, 0x56, 0x61, 0xb5, 0x55, 0x67, 0xe7, 0xf8, 0x31, + 0x12, 0x05, 0x03, 0xf8, 0xda, 0xa6, 0xbb, 0x86, 0x5e, 0xf5, 0x67, 0x56, + 0x61, 0xf5, 0x5d, 0x67, 0xe7, 0xf8, 0x30, 0x54, 0x25, 0x02, 0x81, 0x5b, + 0x54, 0xc7, 0x70, 0xcb, 0xd6, 0xac, 0xea, 0xcc, 0x3e, 0xab, 0xac, 0x7c, + 0xff, 0x00, 0x07, 0x0c, 0x48, 0x15, 0x09, 0x5b, 0x50, 0x29, 0xff, 0x00, + 0x9f, 0x97, 0xad, 0x5b, 0xd5, 0x98, 0x8d, 0x57, 0x58, 0xf9, 0xde, 0x0c, + 0x15, 0x09, 0x40, 0xa0, 0x50, 0x29, 0xdf, 0x9f, 0x97, 0x9d, 0x5b, 0xd5, + 0x98, 0x8d, 0x59, 0x57, 0xf9, 0xfe, 0x0c, 0x15, 0x09, 0x40, 0xa0, 0x50, + 0x89, 0x39, 0xf3, 0xf2, 0xf3, 0xab, 0x7a, 0xb3, 0x11, 0xab, 0x2b, 0x1f, + 0x3b, 0xc1, 0x82, 0x81, 0x40, 0xa0, 0x50, 0x2a, 0x2f, 0x9d, 0x97, 0x8d, + 0x5d, 0xd5, 0x98, 0x9d, 0x59, 0x57, 0xf9, 0xde, 0x0c, 0x14, 0x0a, 0x05, + 0x02, 0x81, 0x5f, 0xfd, 0xd9, 0x78, 0xd5, 0xdd, 0x59, 0x89, 0xd5, 0xb5, + 0x7f, 0x9d, 0xe0, 0xc1, 0x40, 0xa0, 0x50, 0x28, 0x14, 0x0f, 0xf7, 0xb2, + 0xf1, 0xab, 0xfa, 0xb3, 0x15, 0xab, 0x6a, 0xdf, 0x3b, 0xc1, 0xed, 0x50, + 0x94, 0x10, 0x28, 0x15, 0x07, 0xce, 0xcb, 0xbe, 0xaf, 0xea, 0xcc, 0x5e, + 0xad, 0xaa, 0xfc, 0xdf, 0x06, 0x10, 0x40, 0xad, 0xa8, 0x14, 0xdf, 0xce, + 0xcb, 0xb6, 0xaf, 0xea, 0xcc, 0x5e, 0xad, 0xab, 0x7c, 0xdf, 0x07, 0xb5, + 0x6d, 0x40, 0xa0, 0x50, 0x29, 0xa3, 0xfd, 0xdc, 0xbb, 0x6a, 0xfe, 0xac, + 0xc5, 0xea, 0xea, 0xaf, 0xcd, 0xf0, 0x60, 0xa0, 0x50, 0x28, 0x14, 0x0a, + 0x63, 0xe6, 0xe5, 0xdb, 0x57, 0xf5, 0x66, 0x33, 0x56, 0xd5, 0x7e, 0x6f, + 0x83, 0x05, 0x02, 0x81, 0xfc, 0x02, 0xa5, 0xfe, 0x6e, 0x5d, 0x75, 0x7f, + 0x56, 0x63, 0xa1, 0xd9, 0x74, 0xd5, 0xbe, 0x67, 0x83, 0xda, 0x81, 0x40, + 0xa0, 0xb6, 0xa9, 0x43, 0xfd, 0xdc, 0xb9, 0x8d, 0xb7, 0x67, 0x56, 0x64, + 0x61, 0xd9, 0x5b, 0xab, 0xfc, 0xce, 0x9d, 0xd3, 0x8b, 0x75, 0x1a, 0xdd, + 0x38, 0xb7, 0x4e, 0x2d, 0xd3, 0x8b, 0x74, 0xe2, 0xdd, 0x46, 0xb7, 0x51, + 0xad, 0xd4, 0x6b, 0x74, 0xe2, 0xdd, 0x46, 0xb7, 0x51, 0xad, 0xd4, 0x6b, + 0x75, 0x1a, 0xdd, 0x38, 0xb7, 0x4e, 0x2d, 0xd4, 0x6b, 0x75, 0x1a, 0xdd, + 0x46, 0xb7, 0x51, 0xad, 0xd4, 0x6b, 0x75, 0x1a, 0xdd, 0x46, 0xb7, 0x51, + 0xad, 0xd4, 0x6b, 0x75, 0x1a, 0xdd, 0x46, 0xb7, 0x51, 0xad, 0xd3, 0x8b, + 0x72, 0xe7, 0x40, 0xfc, 0x49, 0x7c, 0xdc, 0xb7, 0xc1, 0xb6, 0xe0, 0xea, + 0xcc, 0xab, 0x44, 0x4d, 0xd6, 0x07, 0xf6, 0xbc, 0x10, 0x40, 0xa0, 0x81, + 0xfc, 0x02, 0xa4, 0x3f, 0x99, 0xdc, 0xb5, 0xb7, 0xb6, 0xa1, 0xd5, 0x99, + 0x56, 0x36, 0xd3, 0x2b, 0x50, 0xff, 0x00, 0x9f, 0x84, 0x1f, 0x80, 0x50, + 0x2a, 0x96, 0x36, 0xbd, 0x96, 0xa9, 0x68, 0xa1, 0x90, 0xea, 0xcc, 0x14, + 0x87, 0x17, 0x87, 0xd5, 0x81, 0xb5, 0x8f, 0x0a, 0x0f, 0xe0, 0x2a, 0x58, + 0xff, 0x00, 0x8f, 0x2f, 0x92, 0x5c, 0x36, 0x1f, 0xf5, 0x62, 0x45, 0x34, + 0xd5, 0xec, 0x49, 0xd8, 0x77, 0xd2, 0x3e, 0x1f, 0x6a, 0x92, 0x1b, 0xa9, + 0x1c, 0x36, 0xa4, 0xc5, 0x44, 0xb1, 0x3a, 0x88, 0x11, 0x0b, 0x9e, 0x8d, + 0xe8, 0x17, 0x23, 0x90, 0x16, 0xdc, 0xf0, 0xbb, 0x54, 0x10, 0x97, 0x22, + 0xb6, 0xe9, 0x1e, 0xbb, 0x71, 0x00, 0x00, 0xeb, 0xcc, 0x2d, 0x12, 0x2a, + 0x75, 0xed, 0x55, 0x6f, 0xf4, 0x99, 0xf0, 0xa1, 0x52, 0xdb, 0xfd, 0xe6, + 0x72, 0xf7, 0x41, 0xf5, 0x4b, 0xd7, 0xd8, 0xc7, 0x4b, 0x68, 0xdc, 0x16, + 0x25, 0x45, 0xbd, 0xf4, 0xaf, 0x86, 0xa6, 0xb7, 0xb8, 0x94, 0xc0, 0xbb, + 0x68, 0xdb, 0xf6, 0x27, 0xb0, 0xeb, 0x4d, 0xbe, 0xd5, 0xdd, 0x6f, 0x47, + 0x6b, 0x5c, 0xef, 0x34, 0x59, 0x77, 0xc2, 0x30, 0xd1, 0x79, 0xdb, 0x4a, + 0xde, 0x8e, 0xe9, 0xba, 0x1a, 0x69, 0xb6, 0x1a, 0xf6, 0x73, 0x23, 0x6b, + 0x2a, 0xb3, 0x5e, 0x16, 0x8e, 0xca, 0xcb, 0x75, 0xb0, 0x62, 0x3e, 0xd5, + 0xd5, 0x6f, 0xcb, 0xdd, 0x36, 0xec, 0xfc, 0x83, 0xf2, 0xce, 0x10, 0x41, + 0xf0, 0x40, 0x12, 0x64, 0xa4, 0x5f, 0x78, 0xda, 0x76, 0xfc, 0xbd, 0xab, + 0x6e, 0x7b, 0x79, 0x83, 0xb5, 0xbd, 0x1a, 0xeb, 0xa9, 0xb3, 0xfa, 0x3d, + 0xe0, 0xa9, 0x6c, 0x6f, 0x1e, 0xcb, 0xfd, 0xaf, 0xeb, 0x77, 0x7f, 0xb9, + 0x8a, 0x56, 0x97, 0x39, 0x59, 0x93, 0x2d, 0x71, 0x32, 0xde, 0x0a, 0x59, + 0xbe, 0x16, 0x57, 0x09, 0xed, 0x2e, 0x4e, 0xb2, 0xbd, 0xdc, 0x67, 0xb4, + 0xb9, 0x52, 0xf8, 0x9f, 0x67, 0x75, 0x31, 0xe0, 0x24, 0x19, 0xdf, 0x4c, + 0x60, 0xf5, 0xa7, 0xcd, 0xd7, 0xc7, 0xbd, 0x8d, 0xf6, 0x8f, 0x34, 0x59, + 0x73, 0xcd, 0xf1, 0x12, 0xde, 0x02, 0x45, 0xbe, 0x1e, 0x5b, 0x02, 0xad, + 0x13, 0x6d, 0x59, 0x7e, 0xf1, 0x00, 0x8c, 0x4d, 0xb5, 0x05, 0x9b, 0x7a, + 0x4d, 0x33, 0xb8, 0x7f, 0xef, 0x4a, 0x33, 0xbf, 0x7f, 0x0e, 0x6d, 0x5e, + 0x73, 0xbc, 0xa1, 0x84, 0x43, 0x0f, 0xbf, 0x98, 0x3b, 0x47, 0xd6, 0x6d, + 0x7a, 0x8b, 0x5b, 0xc6, 0x7e, 0xf5, 0x39, 0xad, 0xd3, 0x39, 0x79, 0xb4, + 0x4d, 0x22, 0xda, 0xfa, 0x13, 0x12, 0xec, 0xcd, 0xcb, 0xde, 0xb6, 0xbb, + 0xd6, 0x7d, 0xcf, 0x30, 0xd6, 0xe5, 0xef, 0xb9, 0x2e, 0xd6, 0xfd, 0xeb, + 0x32, 0xd7, 0x7a, 0xf1, 0xba, 0x25, 0xa5, 0x98, 0x93, 0x96, 0xfa, 0x39, + 0x88, 0xb3, 0xbd, 0x4a, 0x8b, 0x52, 0x67, 0xf7, 0x6f, 0xee, 0x53, 0x59, + 0xfd, 0x1b, 0xcb, 0xad, 0x9f, 0xe9, 0xd4, 0x3f, 0xa5, 0x3b, 0x27, 0x2f, + 0x50, 0x93, 0xbc, 0x6d, 0x97, 0xad, 0x2b, 0x91, 0xe6, 0x8b, 0x2e, 0xfd, + 0xa6, 0x5a, 0x2f, 0x3b, 0x69, 0xdb, 0x6f, 0xdd, 0x97, 0x1c, 0x94, 0x9c, + 0xb5, 0x3a, 0x4f, 0xe9, 0xe6, 0x2a, 0xce, 0xe3, 0xe9, 0x35, 0x26, 0x7f, + 0x76, 0xfe, 0xd5, 0x35, 0x9f, 0xd1, 0xbc, 0xb9, 0x59, 0xbc, 0x2d, 0x3f, + 0xea, 0x4f, 0xc8, 0xcb, 0x54, 0xe4, 0x6e, 0xeb, 0x6a, 0x66, 0xd3, 0xb8, + 0x5f, 0x68, 0xb2, 0xef, 0xd8, 0x65, 0xa2, 0xf3, 0xb6, 0x95, 0xb3, 0x33, + 0x77, 0x5c, 0x54, 0xf9, 0x09, 0x5a, 0x5c, 0x8f, 0xd5, 0xcc, 0x2d, 0x95, + 0xea, 0x94, 0x6a, 0x8b, 0x3f, 0xbc, 0x1f, 0x62, 0x9c, 0xce, 0xed, 0xbc, + 0xbb, 0x59, 0x66, 0x99, 0x45, 0xfa, 0xd3, 0x32, 0xcc, 0x4e, 0x4b, 0xdf, + 0xd6, 0xa3, 0xd6, 0x6d, 0xd1, 0x32, 0xc9, 0x65, 0xcf, 0xad, 0x2e, 0xc9, + 0x7d, 0xdb, 0x22, 0xd6, 0x7a, 0xf2, 0xba, 0x25, 0x65, 0x98, 0x92, 0x96, + 0xfa, 0xf8, 0xf7, 0x65, 0x7a, 0xfd, 0xb7, 0x3a, 0xce, 0xf5, 0xa3, 0xfc, + 0x1f, 0xab, 0x22, 0xd6, 0xe5, 0x9c, 0xbe, 0x59, 0x5e, 0x89, 0x6e, 0xfd, + 0x87, 0x1b, 0x81, 0xd8, 0x31, 0x3e, 0xcc, 0x72, 0xca, 0xba, 0xe7, 0x58, + 0xdd, 0x39, 0xf5, 0x25, 0x18, 0xdf, 0xbd, 0x87, 0x36, 0x6b, 0xb7, 0xcd, + 0xd8, 0xd3, 0x4d, 0xb0, 0xd7, 0xd9, 0xc6, 0x1b, 0x24, 0x5e, 0x36, 0xac, + 0xd3, 0x26, 0x38, 0x22, 0x1f, 0xa9, 0xfa, 0x72, 0xad, 0x70, 0xcc, 0x60, + 0x9d, 0x8d, 0xc9, 0xd6, 0x97, 0xdb, 0xc6, 0xeb, 0x24, 0xda, 0xd7, 0x44, + 0xf3, 0x1f, 0xac, 0x5f, 0x4a, 0x45, 0x9d, 0xeb, 0xb8, 0x2f, 0x65, 0x9b, + 0xc6, 0xf0, 0xfb, 0x98, 0x83, 0x68, 0x31, 0x7a, 0xdb, 0x15, 0x09, 0x17, + 0xa5, 0x9e, 0x75, 0xb2, 0xdc, 0x5f, 0x42, 0x18, 0x4c, 0x71, 0x4a, 0xcb, + 0x46, 0xb0, 0xca, 0xcb, 0x6a, 0xc6, 0xb4, 0xfe, 0xee, 0x36, 0x61, 0x49, + 0xaa, 0xc3, 0x33, 0x2a, 0x1d, 0x4e, 0x4b, 0xb8, 0xd1, 0xd8, 0x7d, 0xdd, + 0x85, 0x36, 0xc3, 0xae, 0x29, 0x79, 0x68, 0x25, 0x86, 0x04, 0xe1, 0x5c, + 0xc3, 0x0f, 0xfd, 0xfc, 0x42, 0xc1, 0x2a, 0x2d, 0xd6, 0xae, 0x4c, 0x2e, + 0xbd, 0x6d, 0x88, 0x9c, 0x93, 0x30, 0x1e, 0x1d, 0xb5, 0xc3, 0xb6, 0xb8, + 0x76, 0xd7, 0x0e, 0xda, 0xdc, 0x36, 0xb8, 0x76, 0xd7, 0x0e, 0xda, 0xe1, + 0xdb, 0x5c, 0x3b, 0x6b, 0x70, 0xda, 0xdc, 0x36, 0xb8, 0x76, 0xd4, 0x12, + 0xc0, 0x9a, 0x06, 0x1a, 0xde, 0xf7, 0x23, 0xb6, 0x06, 0x02, 0x51, 0xed, + 0xb9, 0x8f, 0x04, 0xfd, 0x2e, 0x99, 0x34, 0xb9, 0x76, 0xdf, 0x5c, 0xbb, + 0x6f, 0xae, 0x5d, 0xb7, 0xd7, 0x2e, 0xdb, 0xeb, 0x97, 0x6d, 0xf5, 0xcb, + 0xb6, 0xfa, 0xe5, 0xdb, 0x7d, 0x72, 0xed, 0xbe, 0xb9, 0x72, 0xde, 0x5c, + 0xbb, 0x6f, 0xae, 0x5c, 0xb7, 0x97, 0x2e, 0x5b, 0xca, 0x5e, 0x91, 0x49, + 0x94, 0x8f, 0xfe, 0x89, 0xff, 0xc4, 0x00, 0x31, 0x11, 0x00, 0x01, 0x01, + 0x05, 0x06, 0x04, 0x06, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x02, 0x11, 0x31, 0x50, 0x71, 0x00, 0x20, 0x40, 0x51, + 0x91, 0xd1, 0x12, 0x21, 0x30, 0x32, 0x41, 0x52, 0x61, 0x81, 0xb1, 0xc1, + 0x13, 0xa1, 0x42, 0x60, 0x22, 0xf0, 0xf1, 0xff, 0xda, 0x00, 0x08, 0x01, + 0x03, 0x01, 0x01, 0x3f, 0x01, 0xfe, 0x84, 0xe3, 0x67, 0x1c, 0x8e, 0x96, + 0x71, 0xc8, 0xe9, 0x67, 0x1c, 0x8e, 0x96, 0xe1, 0x6b, 0x23, 0xa1, 0xb7, + 0x0b, 0x5e, 0x53, 0xa1, 0xb7, 0x0b, 0x5e, 0x53, 0xa1, 0xb7, 0x0b, 0x59, + 0x1d, 0x0d, 0xb8, 0x5a, 0xf2, 0x9d, 0x0d, 0xb8, 0x5a, 0xf2, 0x9d, 0x0d, + 0xb8, 0x5a, 0xf2, 0x9d, 0x0d, 0xb8, 0x5a, 0xf2, 0x9d, 0x0d, 0xb8, 0x5a, + 0xc8, 0xe8, 0x6c, 0xe3, 0x91, 0xd2, 0xce, 0x39, 0x1d, 0x2c, 0xe3, 0x91, + 0xd2, 0xce, 0x39, 0x1d, 0x2c, 0xe3, 0x96, 0x18, 0x02, 0x60, 0x1f, 0x60, + 0x91, 0xf1, 0x36, 0xfc, 0x4c, 0xfa, 0xdb, 0xf1, 0xb1, 0x97, 0xec, 0xdb, + 0x81, 0x9c, 0xad, 0xc2, 0xce, 0x42, 0xdc, 0x2c, 0xf9, 0x46, 0x82, 0xce, + 0x19, 0x0c, 0x43, 0x86, 0x42, 0xdc, 0x23, 0x21, 0xa5, 0xb8, 0x59, 0xf2, + 0x8d, 0x2d, 0xc0, 0xce, 0x42, 0xdc, 0x0c, 0xe5, 0x6f, 0xc6, 0xce, 0x5f, + 0xb3, 0x6f, 0xc6, 0xcf, 0xae, 0xb6, 0x29, 0x64, 0x75, 0xb1, 0x64, 0xb3, + 0x1e, 0x93, 0x0c, 0x71, 0x53, 0xe6, 0xc0, 0x01, 0x09, 0x43, 0x6c, 0x3b, + 0x98, 0x87, 0xc7, 0x40, 0x07, 0x97, 0x58, 0x07, 0x07, 0x4a, 0x63, 0x62, + 0x1c, 0x48, 0xbe, 0x90, 0xe6, 0x4c, 0xad, 0x58, 0x83, 0xe9, 0xf1, 0xff, + 0x00, 0x6f, 0xa5, 0x03, 0x59, 0x5a, 0xb0, 0x15, 0xbe, 0x94, 0x0d, 0x65, + 0x6a, 0xf6, 0x8a, 0xfd, 0x1b, 0xe9, 0x40, 0xd6, 0x56, 0xaf, 0x68, 0xaf, + 0xd1, 0xbe, 0x94, 0x0d, 0x65, 0x6a, 0xf6, 0x8a, 0xef, 0x7d, 0x28, 0x1a, + 0xca, 0xd5, 0xed, 0x15, 0xde, 0xfa, 0x50, 0x35, 0x95, 0xab, 0xda, 0x2b, + 0xbd, 0xf4, 0xa0, 0x6b, 0x2b, 0x57, 0xb4, 0x57, 0xe8, 0xdf, 0x4b, 0xb4, + 0xd7, 0x69, 0x5a, 0xbd, 0xa2, 0xbb, 0xdf, 0x4a, 0x06, 0xb2, 0xb5, 0x60, + 0x2b, 0xbd, 0xf4, 0xa0, 0x6b, 0x2b, 0x57, 0xb7, 0xdf, 0xe8, 0xdf, 0x4b, + 0xb4, 0xd7, 0x69, 0x5a, 0xbd, 0xa2, 0xbb, 0xdf, 0x4a, 0x06, 0xb2, 0xb5, + 0x60, 0x2b, 0x7d, 0x28, 0x1a, 0xca, 0xd5, 0x80, 0xae, 0xf7, 0xd2, 0x81, + 0xae, 0xd2, 0xb5, 0x60, 0x2b, 0xbd, 0xf4, 0xa0, 0x6b, 0x2b, 0x57, 0xb4, + 0x57, 0x7b, 0xe9, 0x40, 0xd6, 0x56, 0xaf, 0x68, 0xae, 0xf7, 0xd2, 0x81, + 0xac, 0xad, 0x5e, 0xd1, 0x5d, 0xef, 0xa5, 0x03, 0x59, 0x5a, 0xb0, 0x15, + 0xde, 0xfa, 0x50, 0x35, 0x95, 0xab, 0x01, 0x5b, 0xe9, 0x40, 0xd6, 0x56, + 0xac, 0x05, 0x6f, 0xa5, 0x03, 0x59, 0x5a, 0xb0, 0x15, 0xbe, 0x94, 0x0d, + 0x65, 0x6a, 0xc0, 0x56, 0xfa, 0x50, 0x35, 0x95, 0xab, 0x01, 0x5b, 0xe9, + 0x40, 0xd6, 0x56, 0xac, 0x05, 0x6f, 0xa5, 0x03, 0x59, 0x5a, 0xb0, 0x15, + 0xbe, 0x94, 0x0d, 0x65, 0x6a, 0xf6, 0x8a, 0xef, 0x7d, 0x28, 0x1a, 0xca, + 0xd5, 0x80, 0xad, 0xf4, 0xa0, 0x6b, 0x2b, 0x57, 0xb4, 0x57, 0x7b, 0xe9, + 0x40, 0xd6, 0x56, 0xac, 0x05, 0x6f, 0xa5, 0x03, 0x59, 0x5a, 0xbd, 0xa2, + 0xbb, 0xdf, 0x4b, 0xb4, 0xd7, 0x69, 0x5a, 0xbd, 0xa2, 0xbb, 0xdf, 0x4b, + 0xb4, 0xd7, 0x69, 0x5a, 0xbd, 0xa2, 0xbb, 0xdf, 0x4a, 0x06, 0xb2, 0xb5, + 0x7b, 0x45, 0x7e, 0x8d, 0xf4, 0xa0, 0x6b, 0x2b, 0x57, 0xb4, 0x57, 0x7b, + 0xe9, 0x40, 0xd7, 0xea, 0x56, 0xaf, 0x68, 0xae, 0xf7, 0xd2, 0x81, 0xac, + 0xad, 0x58, 0x0a, 0xdf, 0x4a, 0x06, 0xb2, 0xb5, 0x60, 0x2b, 0x7d, 0x2f, + 0x1f, 0x6f, 0xb9, 0x5a, 0xbe, 0x1e, 0xf7, 0xd2, 0xf1, 0xf6, 0x95, 0xab, + 0xe1, 0xef, 0x7d, 0x3e, 0xef, 0x69, 0x5a, 0x9d, 0xd7, 0xd9, 0xe4, 0xd0, + 0xac, 0xad, 0xa2, 0xf6, 0x8d, 0x7a, 0x00, 0xbc, 0x03, 0xe9, 0x29, 0x3c, + 0x81, 0x3e, 0x9d, 0x14, 0xcf, 0xf8, 0xbb, 0x29, 0x4a, 0x87, 0x93, 0xb3, + 0xe8, 0xa6, 0x5c, 0xd5, 0x79, 0x4a, 0x54, 0x2f, 0x6a, 0x9c, 0xba, 0x4c, + 0x97, 0x80, 0x64, 0xed, 0x17, 0x02, 0x7a, 0x69, 0x18, 0x8f, 0x79, 0x3a, + 0xa6, 0x03, 0xdf, 0xa6, 0x0b, 0x8b, 0xe4, 0xe4, 0xbc, 0x93, 0xd4, 0x4c, + 0xf2, 0x76, 0x52, 0x55, 0x0b, 0x83, 0xb3, 0xf8, 0xea, 0xb2, 0x78, 0x4b, + 0xf5, 0x92, 0xb6, 0x5e, 0xd7, 0x59, 0x32, 0xf6, 0x69, 0xca, 0x46, 0xd9, + 0x73, 0x35, 0xe5, 0xd7, 0x60, 0xb9, 0xaa, 0xf2, 0x91, 0xa8, 0x5e, 0xd5, + 0x39, 0x60, 0x18, 0x3c, 0x43, 0xe6, 0x42, 0xd9, 0x70, 0xc0, 0xa6, 0x5c, + 0x5d, 0x9f, 0xcc, 0x85, 0x42, 0xf2, 0xec, 0xbe, 0x70, 0x4c, 0x97, 0x80, + 0x71, 0xed, 0x1e, 0x10, 0xfc, 0x1a, 0x67, 0x9b, 0xb3, 0xc7, 0xa8, 0x79, + 0xbb, 0x2f, 0x9c, 0x23, 0x25, 0xe0, 0x1c, 0x69, 0x2e, 0x04, 0xe1, 0x53, + 0x3c, 0xdd, 0x9e, 0x35, 0x46, 0xb9, 0xf0, 0xe5, 0x86, 0x05, 0xe0, 0x1c, + 0x5b, 0x45, 0xc0, 0x9c, 0x3a, 0x67, 0x9b, 0xb3, 0xf9, 0xc5, 0xa8, 0xd3, + 0xcb, 0xb2, 0xf9, 0xc4, 0x32, 0x5e, 0x1f, 0x89, 0x68, 0xb8, 0x13, 0xa5, + 0x71, 0x29, 0x97, 0x17, 0x78, 0x1f, 0x9f, 0xf7, 0x96, 0x25, 0x46, 0x9e, + 0x5d, 0x96, 0x29, 0x93, 0xc4, 0x30, 0xed, 0x1e, 0x11, 0xf1, 0x8b, 0x61, + 0xa7, 0x1f, 0x43, 0x87, 0x6d, 0xae, 0x23, 0xe8, 0x39, 0x63, 0x18, 0x69, + 0xe3, 0xd4, 0x61, 0x5b, 0x69, 0xc3, 0xd4, 0xe3, 0x59, 0x3c, 0x27, 0xd3, + 0xc7, 0x0a, 0xd1, 0xe2, 0x2f, 0xd2, 0x98, 0xe4, 0xda, 0xfe, 0x27, 0xdb, + 0x6d, 0xb0, 0x6a, 0x37, 0xfc, 0x47, 0xbe, 0xd2, 0x06, 0x54, 0x74, 0x79, + 0x8f, 0xdd, 0x83, 0x40, 0xc0, 0xf5, 0xcb, 0x4c, 0x88, 0x9b, 0x34, 0xa1, + 0x3c, 0x87, 0x21, 0xfb, 0x91, 0xbc, 0xe7, 0x67, 0x9c, 0xce, 0xb6, 0x79, + 0xcc, 0xeb, 0x67, 0x9c, 0xce, 0xb6, 0x79, 0xcc, 0xeb, 0x67, 0x9c, 0xce, + 0xb6, 0x79, 0xcc, 0xeb, 0x67, 0x9c, 0xce, 0xb6, 0x79, 0xcc, 0xeb, 0x67, + 0x9c, 0xce, 0xb6, 0x79, 0xcc, 0xeb, 0x67, 0x9c, 0xce, 0xb6, 0x79, 0xcc, + 0xeb, 0x67, 0x9c, 0xcf, 0xf4, 0x5f, 0xff, 0xc4, 0x00, 0x33, 0x11, 0x00, + 0x01, 0x01, 0x04, 0x06, 0x09, 0x03, 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x12, 0x32, 0xc1, 0x00, 0x11, 0x20, + 0x50, 0x72, 0x91, 0x21, 0x31, 0x40, 0x41, 0x51, 0x52, 0x71, 0xb1, 0xd1, + 0x30, 0x61, 0x81, 0x13, 0xa1, 0xe1, 0xf0, 0x22, 0x42, 0xf1, 0x60, 0xff, + 0xda, 0x00, 0x08, 0x01, 0x02, 0x01, 0x01, 0x3f, 0x01, 0xff, 0x00, 0x82, + 0xac, 0x52, 0xb1, 0xc4, 0x67, 0x47, 0x93, 0xcc, 0x33, 0x14, 0x79, 0x3c, + 0xc3, 0x31, 0x47, 0x93, 0xcc, 0x33, 0x14, 0x79, 0x3c, 0xc9, 0xcc, 0x51, + 0xf4, 0xf3, 0x27, 0x31, 0x47, 0xd3, 0xcc, 0x9c, 0xc5, 0x1f, 0x4f, 0x32, + 0x73, 0x14, 0x7d, 0x3c, 0xc9, 0xcc, 0x51, 0xe4, 0xf3, 0x27, 0x31, 0x47, + 0x93, 0xcc, 0x9c, 0xc5, 0x1e, 0x4f, 0x32, 0x73, 0x14, 0x79, 0x3c, 0xc3, + 0x31, 0x47, 0x93, 0xcc, 0x33, 0x14, 0x78, 0x71, 0x19, 0xd2, 0xb1, 0xc4, + 0x67, 0xb3, 0x95, 0x04, 0xeb, 0x35, 0x50, 0xb7, 0x1b, 0x85, 0x7d, 0x74, + 0x79, 0xa7, 0xd6, 0x57, 0xb0, 0xa7, 0xd5, 0x5f, 0x1f, 0xb0, 0xf1, 0x4f, + 0xa8, 0xbe, 0x6e, 0xd4, 0x7d, 0x7c, 0xc6, 0x8f, 0xab, 0x98, 0xe6, 0x68, + 0xf2, 0xb9, 0x8e, 0x66, 0x95, 0x9e, 0x3b, 0x3d, 0x67, 0x89, 0xce, 0x8f, + 0x2b, 0x98, 0xe6, 0x68, 0xfa, 0xf9, 0x95, 0x9d, 0x3e, 0xa2, 0xf9, 0x8d, + 0x3e, 0xa2, 0xf9, 0xbb, 0x78, 0xa7, 0xd5, 0x5f, 0x1f, 0xb0, 0xf1, 0x4f, + 0xac, 0xbf, 0x6c, 0xa8, 0x1b, 0xf1, 0x4e, 0x5e, 0x3f, 0x34, 0x4a, 0xd2, + 0xad, 0x47, 0xe3, 0x7f, 0xa4, 0xd1, 0xa3, 0xba, 0x06, 0xbe, 0xd4, 0x24, + 0x9d, 0x26, 0xe8, 0x66, 0xd1, 0xed, 0x07, 0x5f, 0x7f, 0xcf, 0xa0, 0xa2, + 0xe8, 0x27, 0x85, 0x09, 0xac, 0xd6, 0x77, 0xdd, 0x3a, 0xbe, 0x28, 0x92, + 0xf0, 0x06, 0xdb, 0x73, 0xa0, 0x0e, 0x27, 0xb7, 0xfb, 0x75, 0xb0, 0x3a, + 0x08, 0xf7, 0xaf, 0x3f, 0xf2, 0xdb, 0x78, 0x87, 0x4f, 0xde, 0xd7, 0x5b, + 0x0d, 0x67, 0xa5, 0xb6, 0xf1, 0x0c, 0x33, 0x37, 0x5b, 0x08, 0x8f, 0x49, + 0x8b, 0x6d, 0xe2, 0x18, 0x66, 0x6e, 0xb6, 0x11, 0x1c, 0x33, 0x16, 0xdb, + 0xc4, 0x30, 0xcc, 0xdd, 0x6c, 0x62, 0x38, 0x66, 0x2d, 0xb7, 0x88, 0x61, + 0x99, 0xba, 0xd8, 0x44, 0x70, 0xcc, 0x5b, 0x6f, 0x10, 0xc3, 0x33, 0x75, + 0xb0, 0x88, 0xe1, 0x98, 0xb6, 0xde, 0x21, 0x86, 0x66, 0xeb, 0x61, 0x11, + 0xc3, 0x31, 0x6d, 0xbc, 0x43, 0x0c, 0xcd, 0xd6, 0xc2, 0x23, 0xd2, 0x62, + 0xdb, 0x78, 0x86, 0x19, 0x9b, 0xad, 0x84, 0x47, 0xa4, 0xc5, 0xb6, 0xf1, + 0x0c, 0x33, 0x37, 0x5b, 0x08, 0x8e, 0x19, 0x8b, 0x6d, 0xe2, 0x18, 0x66, + 0x6e, 0xb6, 0x11, 0x1c, 0x33, 0x16, 0xdb, 0xc4, 0x30, 0xcc, 0xdd, 0x6c, + 0x22, 0x3d, 0x26, 0x2d, 0xb7, 0x88, 0x61, 0x99, 0xba, 0xd8, 0x44, 0x70, + 0xcc, 0x5b, 0x6f, 0x10, 0xc3, 0x33, 0x75, 0xb0, 0x88, 0xe1, 0x98, 0xb6, + 0xde, 0x21, 0x86, 0x66, 0xeb, 0x61, 0x11, 0xc3, 0x31, 0x6d, 0xbc, 0x43, + 0x0c, 0xcd, 0xd6, 0xc2, 0x23, 0x86, 0x62, 0xdb, 0x78, 0x86, 0x19, 0x9b, + 0xad, 0x84, 0x47, 0x0c, 0xc5, 0xb6, 0xf1, 0x0c, 0x33, 0x37, 0x5b, 0x08, + 0x8e, 0x19, 0x8b, 0x6d, 0xe2, 0x18, 0x66, 0x6e, 0xb6, 0x11, 0x1e, 0x93, + 0x16, 0xdb, 0xc4, 0x30, 0xcc, 0xdd, 0x6c, 0x22, 0x3d, 0x26, 0x2d, 0xb7, + 0x88, 0x61, 0x99, 0xba, 0xd8, 0x44, 0x70, 0xcc, 0x5b, 0x6f, 0x10, 0xc3, + 0x33, 0x75, 0xb0, 0x88, 0xe1, 0x98, 0xb6, 0xde, 0x21, 0x86, 0x66, 0xeb, + 0x61, 0x11, 0xc3, 0x31, 0x6d, 0xbc, 0x43, 0x0c, 0xcd, 0xd6, 0xc2, 0x23, + 0x86, 0x62, 0xdb, 0x78, 0x86, 0x19, 0x9b, 0xad, 0x84, 0x47, 0x0c, 0xc5, + 0xb6, 0xf1, 0x0c, 0x33, 0x37, 0x5b, 0x08, 0x8e, 0x19, 0x8b, 0x6d, 0xe2, + 0x18, 0x66, 0x6e, 0xb6, 0x11, 0x1c, 0x33, 0x16, 0xdb, 0xc4, 0x30, 0xcc, + 0xdd, 0x6c, 0x22, 0x38, 0x66, 0x2d, 0xb7, 0x88, 0x61, 0x99, 0xba, 0xd8, + 0x44, 0x70, 0xcc, 0x5b, 0x6f, 0x10, 0xc3, 0x33, 0x75, 0xb0, 0x88, 0xe1, + 0x98, 0xb6, 0xde, 0x21, 0x86, 0x66, 0xeb, 0x61, 0x11, 0xc3, 0x31, 0x6d, + 0xbc, 0x43, 0x0c, 0xcd, 0xd6, 0xc2, 0x23, 0x86, 0x62, 0xdb, 0x78, 0x86, + 0x19, 0x9b, 0xad, 0x84, 0x47, 0x0c, 0xc5, 0xb6, 0xf1, 0x0c, 0x33, 0x37, + 0x5b, 0x08, 0x8e, 0x19, 0x8b, 0x6d, 0xe2, 0x18, 0x66, 0x6e, 0xb6, 0x11, + 0x1c, 0x33, 0x16, 0xdb, 0xc4, 0x3a, 0x4c, 0xdd, 0x6c, 0x22, 0x3d, 0x26, + 0x2d, 0xb7, 0xd6, 0x9e, 0x97, 0x5b, 0x0d, 0x67, 0xa5, 0xb6, 0xff, 0x00, + 0xd7, 0xe6, 0x57, 0x5b, 0x0f, 0xed, 0xf1, 0x3b, 0x6d, 0xf5, 0x27, 0xe6, + 0xeb, 0x61, 0xfd, 0xbe, 0x3f, 0x7e, 0xf6, 0xdb, 0x0f, 0xe1, 0xd0, 0x8f, + 0x17, 0x5b, 0x18, 0x3a, 0x93, 0xe2, 0x56, 0xd6, 0x2b, 0x42, 0xba, 0x76, + 0xd3, 0x75, 0xa0, 0x54, 0x94, 0x8f, 0x6e, 0xfa, 0x7d, 0x05, 0x0a, 0x94, + 0x47, 0x03, 0x74, 0xa4, 0x56, 0x40, 0xe2, 0x47, 0xa2, 0xd8, 0x54, 0xaa, + 0xf8, 0x8e, 0xdf, 0xa2, 0xe9, 0x62, 0x3f, 0x91, 0x3c, 0x07, 0x7f, 0xd3, + 0xe8, 0xb5, 0x4d, 0x69, 0xc3, 0xa7, 0xcf, 0xda, 0xe9, 0x64, 0x2a, 0x40, + 0xf7, 0xd3, 0xe3, 0xed, 0xe9, 0x28, 0x3a, 0xa2, 0x3f, 0x6a, 0xdd, 0x73, + 0xa4, 0x3c, 0xa0, 0x3f, 0x7d, 0xfd, 0x36, 0xc9, 0xd4, 0xaf, 0x83, 0x2b, + 0x9d, 0x82, 0x75, 0xab, 0xe0, 0x7a, 0x6a, 0x0f, 0x02, 0x38, 0xd0, 0xe8, + 0xf8, 0xb9, 0x75, 0xfc, 0xd1, 0x21, 0xd0, 0x07, 0x0f, 0x51, 0xb2, 0x6a, + 0x55, 0x7b, 0x8f, 0x7b, 0x95, 0x8a, 0x6b, 0x55, 0x7c, 0x3b, 0xfa, 0xab, + 0x4b, 0xc9, 0x23, 0x7e, 0xb1, 0xd7, 0xf7, 0x45, 0xca, 0xcd, 0x2e, 0xa4, + 0x71, 0xd6, 0x7d, 0x66, 0xa9, 0x75, 0x5e, 0xc7, 0x4f, 0x9b, 0x8d, 0x92, + 0x5e, 0x57, 0xb0, 0xd2, 0x65, 0xeb, 0xb5, 0x4b, 0xc9, 0xf7, 0x1a, 0x7c, + 0xdc, 0x6c, 0x93, 0x52, 0x7d, 0xce, 0x9f, 0x1b, 0x02, 0xd2, 0xea, 0x88, + 0xdd, 0xac, 0x74, 0xfd, 0xd1, 0x70, 0xa1, 0x2f, 0x28, 0x0c, 0xf6, 0x16, + 0xc9, 0xad, 0x35, 0xf0, 0xed, 0x70, 0xb1, 0x4d, 0x49, 0x7b, 0x7a, 0xbb, + 0x6c, 0x4a, 0x4b, 0xaa, 0x23, 0x2e, 0x9b, 0xb6, 0xf4, 0xa5, 0xe5, 0x01, + 0x9f, 0x4d, 0x8d, 0xb2, 0x6b, 0x0f, 0x70, 0xd7, 0xd3, 0xf1, 0xb7, 0xb1, + 0x4d, 0x41, 0xed, 0xe7, 0xb7, 0xfb, 0xb1, 0xeb, 0xa2, 0x83, 0xaa, 0x23, + 0x86, 0xda, 0x90, 0xf2, 0x80, 0xfd, 0xaa, 0x9a, 0xb4, 0x6c, 0x8d, 0x93, + 0xa1, 0xee, 0x1a, 0xfa, 0x6d, 0xac, 0x53, 0xa1, 0xee, 0x3a, 0x07, 0x4d, + 0x94, 0x8a, 0xc5, 0x47, 0x7d, 0x14, 0x97, 0x49, 0x1c, 0x3f, 0x46, 0xd6, + 0x90, 0xf1, 0x02, 0x9a, 0xb4, 0x6c, 0xcd, 0x93, 0xa1, 0xee, 0x1a, 0xfa, + 0x7e, 0x36, 0xb6, 0x29, 0xa8, 0x3d, 0xc7, 0xb7, 0xe7, 0xc6, 0xd0, 0xa4, + 0xba, 0xa2, 0x9c, 0xba, 0x6e, 0xda, 0x50, 0x97, 0x94, 0x06, 0x7d, 0x36, + 0x96, 0xc9, 0xac, 0x57, 0xbd, 0x3d, 0xb6, 0x96, 0x29, 0xa8, 0x57, 0xbc, + 0xf6, 0xda, 0x96, 0x97, 0x55, 0x56, 0xed, 0xdd, 0x3f, 0x1b, 0x3a, 0x12, + 0xf2, 0xaa, 0xdd, 0xbf, 0xa6, 0xd6, 0xd5, 0x2f, 0x27, 0xdc, 0x69, 0x13, + 0x1b, 0x3b, 0x24, 0xba, 0x9f, 0x73, 0xa4, 0xf8, 0xdb, 0x1a, 0x25, 0xd5, + 0x7b, 0x1d, 0x22, 0x7b, 0x2b, 0x24, 0xbc, 0xaf, 0x61, 0xa7, 0xc0, 0xdb, + 0x56, 0x97, 0x93, 0x56, 0xfd, 0xdd, 0x76, 0x54, 0x25, 0xd4, 0xd5, 0xbf, + 0x7f, 0x5d, 0xb9, 0xab, 0x3f, 0xec, 0x3e, 0x44, 0xfc, 0xe7, 0xb1, 0xb2, + 0x67, 0xfd, 0x8f, 0xc7, 0x9f, 0x17, 0x02, 0xd9, 0x03, 0xa5, 0x3a, 0x0f, + 0xdb, 0xf1, 0x42, 0x85, 0x27, 0x58, 0xf5, 0xc2, 0x14, 0xad, 0x40, 0xca, + 0x88, 0x64, 0x06, 0x95, 0x69, 0x3f, 0x6f, 0xcd, 0xc7, 0x50, 0xe0, 0x28, + 0xea, 0x78, 0x0c, 0x85, 0x1d, 0x4f, 0x28, 0xc8, 0x51, 0xd4, 0xf2, 0x8c, + 0x85, 0x1d, 0x4f, 0x01, 0x90, 0xa3, 0xa9, 0xe0, 0x32, 0x14, 0x75, 0x3c, + 0x06, 0x42, 0x8e, 0xa7, 0x94, 0x64, 0x28, 0xea, 0x79, 0x46, 0x42, 0x8e, + 0xa7, 0x94, 0x64, 0x28, 0xea, 0x79, 0x46, 0x42, 0x8e, 0xa7, 0x80, 0xc8, + 0x51, 0xd4, 0xf2, 0x8c, 0x85, 0x2a, 0x1c, 0x06, 0x5f, 0xf0, 0xbf, 0xff, + 0xc4, 0x00, 0x5c, 0x10, 0x00, 0x00, 0x04, 0x02, 0x02, 0x07, 0x0f, 0x0d, + 0x0c, 0x07, 0x09, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, + 0x00, 0x05, 0x11, 0x21, 0x06, 0x12, 0x22, 0x31, 0x32, 0x41, 0x72, 0x13, + 0x14, 0x20, 0x42, 0x50, 0x51, 0x61, 0x71, 0x75, 0x81, 0x91, 0xa1, 0xb2, + 0xb5, 0xd1, 0x23, 0x33, 0x34, 0x35, 0x40, 0x52, 0x76, 0x95, 0xb1, 0xb3, + 0xb4, 0xd2, 0xd3, 0x15, 0x30, 0x62, 0x73, 0x82, 0x92, 0x93, 0xa2, 0xa4, + 0xc1, 0xc3, 0xd4, 0x24, 0x43, 0x44, 0x83, 0xa3, 0xc2, 0xf0, 0x10, 0x25, + 0x45, 0x53, 0x54, 0x60, 0x63, 0x84, 0xe1, 0x16, 0xc5, 0xff, 0xda, 0x00, + 0x08, 0x01, 0x01, 0x00, 0x06, 0x3f, 0x02, 0xff, 0x00, 0x60, 0xde, 0x1e, + 0x08, 0xbc, 0x31, 0x74, 0xa1, 0x0b, 0xb6, 0x62, 0x87, 0x94, 0x62, 0xb7, + 0x2d, 0xc3, 0x6d, 0x64, 0xfd, 0x68, 0xad, 0xeb, 0x40, 0xff, 0x00, 0xb2, + 0x8f, 0xaf, 0x15, 0xcc, 0x58, 0x06, 0xdb, 0xc6, 0xfe, 0xd2, 0x2b, 0x9a, + 0xcb, 0x43, 0x6d, 0xf3, 0x5f, 0x6b, 0x15, 0xce, 0xa5, 0x21, 0xb7, 0x31, + 0x67, 0xed, 0xa2, 0xb9, 0xf4, 0x9b, 0xc6, 0x8c, 0xbd, 0xbc, 0x76, 0xfe, + 0x4b, 0xe3, 0x56, 0x3e, 0xde, 0x2a, 0x9f, 0x49, 0x87, 0x6a, 0x68, 0xc7, + 0xdb, 0xc5, 0x53, 0xa9, 0x48, 0xed, 0x4c, 0x59, 0x8f, 0xe3, 0x45, 0x53, + 0x59, 0x68, 0xed, 0x3e, 0x6b, 0xed, 0x62, 0xa9, 0x8b, 0x11, 0xda, 0x76, + 0xdf, 0xda, 0x45, 0x4f, 0x5a, 0x0e, 0xd3, 0x84, 0x7d, 0x78, 0xa9, 0xca, + 0x03, 0xb4, 0xb2, 0x7e, 0xb4, 0x54, 0xaa, 0x63, 0xb4, 0x72, 0xf4, 0xc5, + 0x46, 0x01, 0xdf, 0x0f, 0xec, 0xbc, 0x3c, 0x1d, 0xca, 0x67, 0x2f, 0x9c, + 0xa2, 0xd1, 0x02, 0xdf, 0x51, 0x73, 0x81, 0x03, 0x68, 0xba, 0x65, 0x0f, + 0xac, 0x44, 0xc0, 0xc7, 0x1c, 0x45, 0x18, 0x32, 0x6c, 0xd2, 0x5e, 0x64, + 0x25, 0xd3, 0xdb, 0x83, 0x44, 0x4d, 0x93, 0x4a, 0x6b, 0xb9, 0xfa, 0x46, + 0xa9, 0xef, 0xc0, 0xe7, 0x09, 0x5b, 0x14, 0x03, 0xfe, 0x70, 0x72, 0xf0, + 0xdb, 0xc2, 0x0b, 0xcb, 0xc3, 0x85, 0x31, 0x8b, 0x8c, 0xe8, 0x97, 0xc5, + 0xb1, 0x4f, 0xf1, 0x95, 0x71, 0x17, 0x33, 0x11, 0x26, 0x4b, 0x39, 0x38, + 0x72, 0xa5, 0x87, 0x1e, 0x38, 0xba, 0x9c, 0x38, 0x0d, 0xa0, 0x60, 0x9f, + 0x9a, 0x60, 0x9c, 0x5d, 0x59, 0x03, 0xc2, 0x6d, 0x4c, 0x0e, 0x97, 0x9a, + 0x32, 0x51, 0x77, 0x65, 0x0f, 0xb6, 0xbf, 0xfa, 0x09, 0x88, 0x71, 0x04, + 0xc0, 0xa1, 0x17, 0x76, 0x4c, 0xa0, 0xe5, 0xcf, 0x1d, 0x1b, 0x96, 0xfc, + 0x62, 0xee, 0x7e, 0x43, 0x6d, 0xcc, 0x4e, 0x7f, 0x2b, 0x83, 0x45, 0xd4, + 0xd1, 0x23, 0xfc, 0xac, 0xd3, 0xd6, 0x8a, 0xdd, 0x22, 0x6f, 0xfa, 0xb6, + 0xdf, 0x80, 0x31, 0xd7, 0xcb, 0xbd, 0x2f, 0x30, 0xf9, 0x1a, 0x8c, 0x75, + 0xd5, 0x37, 0xa5, 0xae, 0x3e, 0xe6, 0x71, 0x86, 0xeb, 0x7a, 0x56, 0xf3, + 0xee, 0x67, 0x18, 0x4f, 0x77, 0xa5, 0x6f, 0x7f, 0x29, 0x17, 0xe6, 0x1e, + 0x2c, 0x7d, 0xf9, 0x58, 0xff, 0x00, 0x13, 0xf1, 0x73, 0xef, 0xcb, 0xc7, + 0xf8, 0xa7, 0x8b, 0xde, 0xfb, 0x18, 0xbd, 0x36, 0xde, 0x60, 0xf7, 0xd9, + 0x46, 0x0c, 0xdf, 0xc5, 0xcf, 0xbd, 0x8c, 0x60, 0xcd, 0x7c, 0x58, 0xff, + 0x00, 0xf2, 0xf1, 0x7a, 0x65, 0xe2, 0xb7, 0xff, 0x00, 0x95, 0x8b, 0xcf, + 0xfc, 0x50, 0xfb, 0xf2, 0x51, 0xfb, 0x5e, 0xfc, 0xa5, 0xe7, 0xde, 0xca, + 0x2b, 0x32, 0xdb, 0xf2, 0xb7, 0x01, 0xe5, 0x67, 0x15, 0xad, 0x46, 0x54, + 0xbc, 0xe1, 0xe5, 0x69, 0x15, 0xba, 0x47, 0x7d, 0x9d, 0x1e, 0x56, 0xd1, + 0xd9, 0xcd, 0x43, 0xfe, 0xb9, 0x0b, 0xf8, 0x21, 0x1d, 0x4e, 0x70, 0xd8, + 0x9b, 0x4b, 0x11, 0x2f, 0x20, 0x92, 0x3a, 0x9d, 0x91, 0x51, 0x91, 0x37, + 0x54, 0x9c, 0x87, 0x85, 0x8e, 0xa7, 0x64, 0xef, 0x03, 0x26, 0xc8, 0x26, + 0x21, 0xe4, 0x98, 0xd1, 0x17, 0x36, 0x46, 0xfc, 0xdb, 0x73, 0x77, 0x6a, + 0x79, 0xc7, 0x2a, 0x45, 0xcc, 0xe9, 0xd1, 0xbf, 0x7a, 0x8a, 0x9e, 0x75, + 0x05, 0x23, 0xb6, 0xcb, 0x0e, 0xdb, 0x79, 0x49, 0xf9, 0x72, 0xa3, 0x0c, + 0x5d, 0x3d, 0x29, 0xf2, 0x99, 0x4a, 0xff, 0x00, 0x91, 0x82, 0x71, 0x74, + 0x2d, 0x0f, 0x96, 0xc5, 0x3f, 0xc2, 0x59, 0x18, 0x0c, 0xdd, 0x9c, 0xb1, + 0x52, 0x63, 0xfd, 0x0d, 0xca, 0x66, 0xa3, 0x60, 0xe5, 0x9a, 0x08, 0x06, + 0xd8, 0xa4, 0x6d, 0xa8, 0x29, 0x66, 0x0c, 0xdc, 0x31, 0x38, 0xd4, 0x26, + 0x45, 0x52, 0x39, 0x4e, 0x9d, 0x71, 0x05, 0x8a, 0xcc, 0xc5, 0x0f, 0x82, + 0x4c, 0xd8, 0x76, 0xe0, 0x1c, 0x4b, 0x5e, 0xa0, 0xed, 0x3a, 0x29, 0x1c, + 0xcc, 0xdd, 0x50, 0x94, 0xff, 0x00, 0x9a, 0x89, 0xa8, 0x55, 0x3f, 0x96, + 0x40, 0x01, 0xd2, 0x88, 0xfb, 0xd0, 0xba, 0x72, 0x25, 0x55, 0xd2, 0x80, + 0x20, 0xd1, 0x9d, 0xb5, 0xd2, 0xa6, 0xef, 0xcf, 0x45, 0xd0, 0x24, 0x51, + 0xbf, 0x78, 0x4e, 0x37, 0x25, 0x10, 0xba, 0x31, 0x4e, 0xe2, 0x60, 0xe5, + 0x63, 0x8a, 0x96, 0xd9, 0xdd, 0x92, 0x38, 0x93, 0x2d, 0x62, 0x04, 0x4c, + 0x28, 0x2a, 0x68, 0xa6, 0x15, 0xa8, 0x71, 0x12, 0x20, 0x90, 0x5d, 0xaa, + 0x70, 0xac, 0xd0, 0x25, 0x2a, 0xb4, 0x7f, 0xc6, 0xcf, 0x33, 0x3d, 0x19, + 0x4f, 0x97, 0x22, 0x89, 0x89, 0xc3, 0x18, 0x20, 0xcd, 0x44, 0xb1, 0xa6, + 0xe0, 0xe1, 0x5c, 0x54, 0x2e, 0x4d, 0xf1, 0xaf, 0x5c, 0x53, 0xf6, 0x5c, + 0xe6, 0x1c, 0x05, 0x8b, 0xa4, 0xe9, 0xdb, 0x7b, 0x37, 0x1f, 0xff, 0x00, + 0x46, 0x3b, 0x19, 0x0f, 0x94, 0x77, 0xaa, 0x79, 0xd7, 0x6a, 0x71, 0xc7, + 0x59, 0x69, 0xbe, 0xd1, 0xb9, 0xfc, 0xe1, 0x0f, 0x1d, 0x69, 0x97, 0x8b, + 0xd8, 0x7e, 0x5a, 0x2a, 0x2a, 0x05, 0xc8, 0x6a, 0xd4, 0x9c, 0x84, 0x42, + 0x2a, 0x70, 0xa9, 0x72, 0x0e, 0x24, 0xe4, 0xd1, 0x1d, 0x98, 0xeb, 0xe9, + 0xd5, 0xf5, 0xa2, 0xb7, 0x4e, 0x07, 0x6d, 0x65, 0x3d, 0x68, 0xeb, 0xeb, + 0x6f, 0xaa, 0x7e, 0x98, 0xeb, 0xaa, 0x7c, 0xf3, 0x74, 0xc6, 0x19, 0xbe, + 0x70, 0xc5, 0xf1, 0xe1, 0xf7, 0xbb, 0xf1, 0x51, 0x8d, 0xbc, 0x23, 0x18, + 0x67, 0xf9, 0xc6, 0x8e, 0xb8, 0xa7, 0xcf, 0x37, 0x4c, 0x61, 0x9c, 0x7e, + 0x51, 0xa3, 0x5e, 0x2b, 0x00, 0x1d, 0xb0, 0x8b, 0xb6, 0xcd, 0x4f, 0x96, + 0xdd, 0x13, 0xf2, 0x93, 0x18, 0xae, 0x5d, 0x2d, 0xf1, 0x7b, 0x3f, 0x61, + 0x1d, 0x82, 0xd0, 0x32, 0x1b, 0xa4, 0x9f, 0x20, 0xa5, 0x8e, 0xc5, 0xa3, + 0x21, 0xcb, 0xd4, 0xbc, 0xcb, 0xa2, 0x45, 0xc9, 0x5d, 0x27, 0x93, 0x33, + 0x9a, 0xfd, 0xef, 0x47, 0xc9, 0x17, 0x2e, 0xe6, 0x89, 0xe4, 0x3d, 0xb7, + 0xf4, 0xc4, 0x9d, 0x45, 0x28, 0x3a, 0x23, 0xe2, 0xff, 0x00, 0x90, 0xec, + 0x89, 0xb7, 0x58, 0x76, 0x08, 0xf1, 0x0b, 0x54, 0x44, 0xe3, 0x88, 0x16, + 0x68, 0x91, 0x3b, 0xe5, 0xcb, 0x7e, 0x0a, 0xe2, 0x5e, 0xe1, 0x76, 0x6e, + 0x9b, 0x09, 0x73, 0x66, 0xaa, 0x5c, 0x9c, 0x80, 0x6a, 0xe8, 0x39, 0x29, + 0x12, 0x99, 0x25, 0x4b, 0x59, 0x4e, 0x5b, 0x74, 0x17, 0x20, 0xd2, 0x53, + 0x1c, 0xb1, 0x4d, 0xca, 0x33, 0x46, 0xe4, 0x0c, 0xf8, 0xd8, 0x2a, 0x01, + 0xc5, 0x9b, 0xa4, 0x1d, 0xe0, 0x8e, 0x11, 0x74, 0x82, 0x35, 0x5c, 0x88, + 0x51, 0xa3, 0x5d, 0xda, 0xe6, 0xb5, 0x45, 0xba, 0x46, 0x54, 0xe2, 0x3d, + 0xe9, 0x42, 0x98, 0x75, 0x32, 0x56, 0xb2, 0x5b, 0xe6, 0x0c, 0x5b, 0x5b, + 0xd0, 0x50, 0x28, 0x0d, 0xaa, 0x24, 0x01, 0x35, 0xc9, 0x7b, 0xe5, 0x14, + 0x1b, 0x92, 0x16, 0xdd, 0x53, 0xd0, 0x50, 0x30, 0xc1, 0xd0, 0x44, 0xf4, + 0xa6, 0x22, 0x19, 0xe1, 0xc0, 0x52, 0x02, 0xf0, 0xe4, 0xbd, 0x45, 0x34, + 0x19, 0x36, 0x29, 0x1a, 0x9c, 0xe8, 0xda, 0xaf, 0xf5, 0x0e, 0x00, 0xce, + 0x4e, 0x22, 0x5d, 0x46, 0x0a, 0xc1, 0x35, 0xd2, 0xa7, 0x3a, 0xb9, 0xb5, + 0xa4, 0x51, 0x11, 0xac, 0x53, 0x38, 0x05, 0xd2, 0x8d, 0x15, 0x1e, 0xbe, + 0x87, 0xef, 0x92, 0xa1, 0xc1, 0x08, 0x30, 0xd2, 0x68, 0xdc, 0x73, 0x33, + 0x24, 0xb6, 0x62, 0xf1, 0x0a, 0x69, 0x0a, 0x8d, 0x99, 0xb8, 0x44, 0xd4, + 0x54, 0x62, 0xdf, 0xa0, 0xd7, 0x8c, 0x5b, 0x53, 0x96, 0xa1, 0x28, 0xc3, + 0x67, 0xcd, 0x8c, 0x06, 0x45, 0xca, 0x45, 0x54, 0x82, 0x1f, 0x08, 0x2b, + 0x0d, 0xb0, 0x1a, 0xb4, 0x79, 0xd8, 0x87, 0x12, 0x28, 0xfd, 0x6b, 0x4a, + 0x86, 0x81, 0x14, 0xd3, 0x00, 0xb6, 0x0d, 0xaa, 0x4e, 0x58, 0x49, 0xb9, + 0x46, 0x80, 0x2a, 0x06, 0x39, 0x87, 0x65, 0xc0, 0x99, 0x3f, 0x34, 0x45, + 0x08, 0x3a, 0xe4, 0x58, 0xe5, 0x1a, 0x87, 0x52, 0x57, 0x4b, 0xf5, 0x4f, + 0x1a, 0x11, 0xd1, 0x76, 0x15, 0x40, 0xc0, 0x82, 0x9c, 0x25, 0x12, 0x6f, + 0x14, 0x02, 0xf0, 0x43, 0x86, 0x2a, 0x0d, 0x23, 0x2e, 0x5c, 0x96, 0x95, + 0xd7, 0x99, 0xae, 0x07, 0xab, 0x78, 0x53, 0xe3, 0xd1, 0xc9, 0x59, 0x53, + 0x70, 0x0c, 0x94, 0x71, 0x46, 0xca, 0x8b, 0x9d, 0x3f, 0xc1, 0x08, 0x3e, + 0xc2, 0x28, 0x87, 0x10, 0x8f, 0xf3, 0x6a, 0x4c, 0xac, 0xdd, 0xf2, 0x0f, + 0xcb, 0xc0, 0x08, 0x9a, 0x27, 0x8c, 0xe9, 0xc2, 0x66, 0x8b, 0x80, 0x0f, + 0x8b, 0x5c, 0x13, 0x1f, 0x3b, 0xa3, 0x93, 0xee, 0x38, 0x7a, 0x6b, 0xc8, + 0x5b, 0x21, 0x1f, 0x36, 0x5d, 0x49, 0x94, 0x7c, 0x5c, 0xc3, 0xcd, 0xa5, + 0x13, 0x8d, 0xc6, 0x1f, 0x4d, 0x67, 0xa3, 0x93, 0xee, 0x30, 0x7a, 0x6b, + 0xc8, 0x5b, 0x21, 0x1f, 0x36, 0x1a, 0x93, 0x27, 0xc8, 0x98, 0xf9, 0xb4, + 0x62, 0x71, 0xb8, 0xa3, 0xe9, 0xac, 0xb4, 0x72, 0x7d, 0xc6, 0x0f, 0x4d, + 0x79, 0x0b, 0x64, 0x23, 0xe6, 0xc3, 0xfb, 0x2f, 0xea, 0x3c, 0xa3, 0x22, + 0x61, 0xe6, 0xd2, 0x89, 0xc6, 0xe2, 0x8f, 0xa6, 0xb2, 0xd1, 0xc9, 0xf7, + 0x18, 0x3d, 0x35, 0xe4, 0x2b, 0x90, 0x8f, 0x9b, 0x0d, 0x49, 0x94, 0x7c, + 0x5c, 0xc3, 0xcd, 0xa3, 0x13, 0x8d, 0xc4, 0x37, 0xa7, 0x32, 0xd1, 0xc9, + 0xf7, 0x14, 0xbe, 0x9c, 0xf6, 0x16, 0xc8, 0x47, 0xcd, 0x86, 0xa4, 0xca, + 0x72, 0x26, 0x1e, 0x6d, 0x28, 0x9c, 0x6e, 0x21, 0xbd, 0x39, 0x96, 0x8e, + 0x4f, 0xb8, 0xa5, 0xf4, 0xe7, 0xb0, 0xae, 0x42, 0x5e, 0x6c, 0x34, 0x58, + 0x7f, 0x54, 0xfd, 0x11, 0x87, 0xf5, 0x4d, 0xd1, 0x18, 0x7c, 0x46, 0xf5, + 0x63, 0x0f, 0xea, 0x9b, 0xa2, 0x30, 0xfe, 0xa9, 0xba, 0x23, 0x0b, 0xea, + 0x9b, 0xa2, 0x30, 0xb8, 0x8d, 0xd1, 0x18, 0x7f, 0x54, 0xdd, 0x11, 0x87, + 0xf5, 0x4d, 0xd1, 0x18, 0x7f, 0x54, 0xdd, 0x11, 0x87, 0xf5, 0x4d, 0xea, + 0xc6, 0x1f, 0xd5, 0x3f, 0x44, 0x61, 0xfd, 0x53, 0xf4, 0x47, 0x5c, 0xfa, + 0x87, 0xf5, 0x63, 0xae, 0xfd, 0x45, 0x3d, 0x48, 0xeb, 0xbf, 0x51, 0x5f, + 0x52, 0x2b, 0x5b, 0xf8, 0x6a, 0xfa, 0x91, 0xd7, 0xff, 0x00, 0x84, 0xb7, + 0xb3, 0x8e, 0xc8, 0xfe, 0x12, 0xfe, 0xce, 0x3b, 0x27, 0xf8, 0x2b, 0xfb, + 0x28, 0xec, 0xaf, 0xe0, 0x39, 0xf6, 0x51, 0xd9, 0x7f, 0xc0, 0x73, 0xec, + 0x63, 0xb3, 0x3e, 0xce, 0xeb, 0xd8, 0xc7, 0x66, 0xfd, 0x9d, 0xdf, 0xb0, + 0x8e, 0xce, 0xfb, 0x33, 0xcf, 0xcb, 0xc7, 0x67, 0xfd, 0x99, 0xe7, 0xe5, + 0xe3, 0xb3, 0xfe, 0xca, 0xf7, 0xf2, 0xf1, 0xd9, 0xff, 0x00, 0x65, 0x7b, + 0xf9, 0x78, 0xec, 0xff, 0x00, 0xb2, 0xbd, 0xfc, 0xbc, 0x76, 0x7f, 0xd9, + 0x5e, 0xfe, 0x5f, 0x45, 0x28, 0xf8, 0xb9, 0x87, 0x9b, 0x4a, 0x27, 0x1b, + 0x88, 0x6f, 0x4e, 0x65, 0xa3, 0x93, 0xee, 0x21, 0x7d, 0x39, 0xec, 0x2b, + 0x90, 0x8f, 0x9b, 0x0d, 0x49, 0x94, 0xfc, 0x5c, 0xc3, 0xcd, 0xa5, 0x13, + 0x8d, 0xc3, 0x37, 0xa7, 0x32, 0xd1, 0xc9, 0xb7, 0x10, 0xbe, 0x9c, 0xf6, + 0x15, 0xc8, 0x4b, 0xcd, 0x86, 0xa4, 0xca, 0x7e, 0x2e, 0x61, 0xe6, 0xd1, + 0x89, 0xc6, 0xe1, 0x9b, 0xd3, 0xd8, 0xe8, 0xe4, 0xdb, 0x88, 0x5f, 0x4e, + 0x7d, 0x0a, 0xe4, 0x23, 0xc8, 0x0d, 0x49, 0x94, 0xe4, 0x4c, 0x3c, 0xda, + 0x31, 0x38, 0xdc, 0x23, 0x7a, 0x7b, 0x1d, 0x1c, 0x9b, 0x70, 0xcb, 0xe9, + 0xef, 0xa1, 0x5c, 0x84, 0xb9, 0x01, 0xa9, 0x32, 0x9c, 0x87, 0xfc, 0x84, + 0xa2, 0x73, 0xb8, 0x46, 0xf4, 0xf6, 0x3a, 0x39, 0x36, 0xe1, 0x97, 0xd3, + 0xdf, 0x42, 0xb9, 0x08, 0xf2, 0x03, 0x52, 0x65, 0x39, 0x0f, 0xf9, 0x09, + 0x44, 0xe7, 0x70, 0x4d, 0xe9, 0xec, 0x74, 0x72, 0x6d, 0xc2, 0x2f, 0xa7, + 0xbe, 0x85, 0x72, 0x52, 0xe4, 0x6a, 0x4c, 0xa7, 0x21, 0xff, 0x00, 0x21, + 0x28, 0x9c, 0xee, 0x09, 0xfd, 0x3d, 0x86, 0x8e, 0x4d, 0xb8, 0x45, 0xf4, + 0xf7, 0xd0, 0xa6, 0x42, 0x5c, 0x80, 0xd4, 0x99, 0x4e, 0x43, 0xfe, 0x42, + 0x51, 0x39, 0xdc, 0x13, 0xf3, 0x83, 0x0d, 0x1c, 0x9b, 0x70, 0x8b, 0xce, + 0x0f, 0xa1, 0x4c, 0x94, 0xb9, 0x1a, 0x93, 0x2a, 0xc8, 0x7f, 0xc8, 0x4a, + 0x27, 0x3b, 0x82, 0x7e, 0x70, 0x61, 0xa3, 0x93, 0x6e, 0x09, 0x79, 0xc1, + 0xf4, 0x2b, 0x90, 0x9f, 0x20, 0x35, 0x26, 0x55, 0x90, 0xff, 0x00, 0x90, + 0x8c, 0x4e, 0x77, 0x00, 0xfc, 0xe0, 0xc3, 0x47, 0x26, 0xdc, 0x12, 0x73, + 0x83, 0xe8, 0x53, 0x21, 0x2e, 0x40, 0x6a, 0x4c, 0xab, 0x21, 0xf7, 0x21, + 0x28, 0x9c, 0xee, 0x01, 0xf9, 0xc1, 0x86, 0x8e, 0x4d, 0xb8, 0x24, 0xe7, + 0x07, 0xf0, 0xa6, 0x42, 0x5c, 0x8d, 0x49, 0x95, 0xe4, 0x3e, 0xe4, 0x23, + 0x13, 0x9d, 0xc0, 0x3f, 0x38, 0x30, 0xd1, 0xc9, 0xb7, 0x04, 0x9c, 0xe0, + 0xfe, 0x14, 0xc9, 0x4b, 0x90, 0x1a, 0x93, 0x2c, 0xc8, 0x7d, 0xc8, 0x4a, + 0x27, 0x3b, 0x80, 0x7e, 0x71, 0x97, 0xe8, 0xe4, 0xdb, 0x80, 0x4e, 0x70, + 0x7f, 0x0a, 0x64, 0x25, 0xc8, 0x0d, 0x49, 0x96, 0x64, 0x3d, 0xe4, 0x27, + 0x13, 0x9f, 0x07, 0xcf, 0xce, 0x32, 0xfd, 0x1c, 0x9b, 0x70, 0x09, 0xce, + 0x0f, 0xe1, 0x4c, 0x84, 0xb9, 0x21, 0xa9, 0x32, 0xdc, 0x87, 0xbc, 0x84, + 0xe2, 0x73, 0xe0, 0xf9, 0xf9, 0xc6, 0x5f, 0xa3, 0x92, 0xee, 0x01, 0x39, + 0xc5, 0xfc, 0x29, 0x90, 0x9f, 0x23, 0x52, 0x65, 0xb9, 0x0f, 0x79, 0x09, + 0xc4, 0xe7, 0xc1, 0xf5, 0x39, 0xc6, 0x5f, 0xa3, 0x93, 0x78, 0x3e, 0x4e, + 0x71, 0x98, 0x42, 0x99, 0x09, 0x72, 0x43, 0x52, 0x65, 0xd9, 0x0f, 0x39, + 0x09, 0xc4, 0xe7, 0xc1, 0xe5, 0x39, 0xc6, 0x5f, 0xa3, 0x93, 0x78, 0x3e, + 0x4e, 0x71, 0x98, 0x42, 0x99, 0x09, 0xf2, 0x35, 0x26, 0x5f, 0x92, 0xef, + 0x90, 0x9c, 0x4e, 0x7c, 0x1e, 0x3f, 0x38, 0xcb, 0xf4, 0x72, 0x5f, 0x07, + 0xc9, 0xce, 0x33, 0x08, 0x53, 0x21, 0x2e, 0x48, 0x6a, 0x4c, 0xbf, 0x21, + 0xdf, 0x20, 0x91, 0x39, 0xf0, 0x79, 0x4e, 0x71, 0x97, 0x68, 0xe4, 0xbe, + 0x0f, 0xa7, 0xce, 0x33, 0x08, 0x53, 0x21, 0x3e, 0x4e, 0xa4, 0xb0, 0xc8, + 0x77, 0xc8, 0x24, 0x4e, 0xbc, 0x1e, 0x53, 0x9c, 0x65, 0xda, 0x39, 0x2f, + 0x83, 0xc9, 0xf3, 0x8c, 0xc2, 0x14, 0xc8, 0x4f, 0x91, 0xa9, 0x2c, 0x72, + 0x5d, 0x72, 0x09, 0x13, 0x9f, 0x07, 0x54, 0xe7, 0x29, 0x76, 0x8e, 0x4b, + 0xe0, 0xf2, 0x7c, 0xe5, 0x30, 0x85, 0x32, 0x13, 0xe4, 0xea, 0x4b, 0x2c, + 0x97, 0x5c, 0x82, 0x44, 0xe7, 0xc1, 0xd5, 0x39, 0xca, 0x5d, 0xa3, 0x92, + 0xf8, 0x3c, 0x9f, 0x38, 0xcc, 0x60, 0xf9, 0x29, 0xf2, 0x75, 0x25, 0x96, + 0x43, 0x9e, 0x41, 0x62, 0x73, 0xe0, 0xea, 0x9c, 0xe5, 0x2e, 0xd1, 0xc9, + 0x7c, 0x1e, 0x4f, 0x9c, 0x66, 0x30, 0x7c, 0x84, 0xf9, 0x3a, 0x92, 0xcf, + 0x25, 0xc7, 0x24, 0xb1, 0x39, 0xf0, 0x71, 0x4e, 0x72, 0x96, 0xe8, 0xe4, + 0xbe, 0x0f, 0x27, 0xce, 0x53, 0x18, 0x53, 0x21, 0x3e, 0x4e, 0xa4, 0xb4, + 0xc9, 0x71, 0xc8, 0x2c, 0x4e, 0xbc, 0x1d, 0x53, 0x9c, 0xa5, 0xba, 0x39, + 0x2f, 0x83, 0xa9, 0xf3, 0x94, 0xc6, 0x0f, 0x90, 0x9f, 0x27, 0x52, 0x5a, + 0x64, 0xb8, 0xe4, 0x04, 0x4e, 0xbc, 0x1c, 0x57, 0x9c, 0xa5, 0xba, 0x39, + 0x2f, 0x83, 0xa9, 0xf3, 0x94, 0xc6, 0x0f, 0x90, 0x9f, 0x27, 0x52, 0x5a, + 0xe4, 0xaf, 0xc9, 0x08, 0x9d, 0x78, 0x38, 0xaf, 0x39, 0x4b, 0x74, 0x72, + 0x5f, 0x07, 0x53, 0xe7, 0x29, 0x8c, 0x1f, 0x21, 0x3e, 0x4e, 0xa4, 0xb6, + 0xc9, 0x5f, 0x92, 0x11, 0x3a, 0xf0, 0x71, 0x5e, 0x72, 0x96, 0xe8, 0xe4, + 0xbe, 0x0e, 0xa7, 0xce, 0x53, 0x18, 0x3e, 0x42, 0x7e, 0x4d, 0x49, 0x6f, + 0x92, 0xbf, 0x24, 0x22, 0x75, 0xe0, 0xe2, 0xbc, 0xe5, 0x2d, 0xd1, 0xc8, + 0x8f, 0xdf, 0x48, 0x2d, 0x7e, 0x64, 0xc1, 0xe0, 0xfe, 0x24, 0x0f, 0xc5, + 0xa7, 0xf7, 0xea, 0x4a, 0x3f, 0x16, 0xb7, 0x90, 0xb1, 0x3b, 0x37, 0x7b, + 0x63, 0xc6, 0x2f, 0xce, 0x98, 0xb0, 0x1f, 0xe5, 0xd1, 0xd8, 0xca, 0x9d, + 0xf4, 0xad, 0xe1, 0x3e, 0x63, 0xa0, 0x37, 0xf3, 0xc7, 0xee, 0x93, 0xf2, + 0x9f, 0x45, 0x83, 0xc6, 0x1d, 0x31, 0x7b, 0x8c, 0x3a, 0x63, 0x07, 0x8c, + 0x3a, 0x63, 0x07, 0x8c, 0x3a, 0x63, 0x07, 0x8c, 0x3a, 0x63, 0x07, 0x8c, + 0x3a, 0x62, 0xf7, 0x18, 0x74, 0xc5, 0xee, 0x30, 0xe9, 0x8b, 0xdc, 0x61, + 0xd3, 0x18, 0x3c, 0x61, 0xd3, 0x18, 0x3c, 0x61, 0xd3, 0x17, 0xb8, 0xc3, + 0xa6, 0x30, 0x78, 0xc3, 0xa6, 0x30, 0x78, 0xc3, 0xa6, 0x30, 0x78, 0xc3, + 0xa6, 0x30, 0x78, 0xc3, 0xa6, 0x2f, 0x71, 0x87, 0x4c, 0x5e, 0xe3, 0x0e, + 0x98, 0xbd, 0xc6, 0x1d, 0x31, 0x7b, 0x8c, 0x3a, 0x62, 0xf7, 0x18, 0x74, + 0xc5, 0xee, 0x30, 0xe9, 0x8b, 0xdc, 0x61, 0xd3, 0x17, 0xb8, 0xc3, 0xa6, + 0x2f, 0x71, 0x87, 0x4c, 0x60, 0xf1, 0x87, 0x4c, 0x5e, 0xe3, 0x0e, 0x98, + 0xbd, 0xc6, 0x1d, 0x31, 0x83, 0xc6, 0x1d, 0x31, 0x83, 0xc6, 0x5e, 0x9d, + 0x12, 0x7f, 0x12, 0xa8, 0xf1, 0xa7, 0x16, 0x4a, 0xa7, 0x7b, 0x28, 0x6a, + 0x4f, 0x9e, 0xec, 0x0d, 0xf8, 0x7a, 0x3b, 0x10, 0x5f, 0x11, 0xd1, 0x9b, + 0xa5, 0xbe, 0x99, 0xd8, 0x9b, 0xf1, 0x42, 0x0a, 0x3a, 0xe8, 0x97, 0x88, + 0xc7, 0xd4, 0x9a, 0x7b, 0xd6, 0xc7, 0xe3, 0x39, 0x02, 0x2c, 0xb9, 0x6e, + 0xf1, 0xb4, 0xa5, 0x2f, 0xa4, 0x51, 0xe9, 0xbf, 0x0b, 0x47, 0x62, 0x8e, + 0xa8, 0xeb, 0x53, 0x19, 0x82, 0x14, 0xeb, 0x67, 0x86, 0xed, 0xd4, 0xa3, + 0x7f, 0x3a, 0xf1, 0x43, 0x73, 0x6b, 0x94, 0xe5, 0xe0, 0x12, 0x8f, 0xde, + 0x3a, 0x92, 0xb9, 0xb5, 0x93, 0x48, 0xbc, 0x26, 0x38, 0xfd, 0xc1, 0x16, + 0x5a, 0xfa, 0x8b, 0x85, 0xdf, 0xcb, 0x1a, 0x94, 0x7e, 0x13, 0x44, 0x1d, + 0xaa, 0x7e, 0x27, 0x89, 0xe8, 0xd4, 0x74, 0x01, 0x48, 0xca, 0xa6, 0xf2, + 0xd7, 0xb4, 0xeb, 0x15, 0x43, 0x29, 0x2e, 0x1d, 0xe1, 0x17, 0xc5, 0xdf, + 0xa2, 0x12, 0x36, 0xb2, 0xb4, 0x7c, 0xe2, 0x1b, 0xa0, 0x35, 0x25, 0x73, + 0xeb, 0xab, 0x6b, 0xf3, 0x13, 0x2f, 0xde, 0x23, 0x05, 0x73, 0x45, 0x73, + 0x39, 0xcc, 0xc9, 0xe5, 0x3a, 0xe5, 0x4c, 0x51, 0x60, 0x1c, 0x02, 0xc8, + 0xda, 0x3b, 0x2a, 0x62, 0x42, 0xdb, 0xa8, 0x79, 0x33, 0xb5, 0xd2, 0x20, + 0x05, 0x22, 0x75, 0x99, 0x17, 0x3f, 0x22, 0x52, 0x87, 0x7c, 0x2a, 0xb7, + 0x20, 0x17, 0xe1, 0x51, 0x06, 0xa2, 0xf9, 0x40, 0x14, 0xf9, 0x83, 0x5f, + 0xd5, 0xa7, 0x52, 0x4a, 0x61, 0xbe, 0x70, 0x32, 0x9f, 0x48, 0x34, 0x97, + 0x8a, 0x88, 0xb1, 0x79, 0x71, 0xc2, 0xd5, 0x52, 0x4a, 0x90, 0x70, 0xb1, + 0x46, 0xa1, 0x2a, 0xef, 0xed, 0x9f, 0xae, 0x41, 0xd9, 0x22, 0xae, 0x4e, + 0x41, 0xda, 0xd1, 0x89, 0x4c, 0x00, 0x25, 0x30, 0x08, 0x08, 0x0d, 0x60, + 0x20, 0x35, 0x08, 0x08, 0x6b, 0x0c, 0x59, 0x0c, 0x84, 0xc0, 0x36, 0x92, + 0xf9, 0xa3, 0xc6, 0xc8, 0x80, 0xe9, 0x9a, 0x66, 0x86, 0x33, 0x53, 0xfe, + 0xf1, 0xb1, 0xd2, 0x3f, 0xca, 0x83, 0xa6, 0x3a, 0x43, 0x98, 0xbc, 0x03, + 0x46, 0xa3, 0x95, 0x30, 0xbe, 0xa1, 0x8a, 0x40, 0xf9, 0x43, 0x47, 0x10, + 0x57, 0x16, 0x3d, 0x22, 0x29, 0x69, 0x24, 0xc6, 0x6c, 0xc5, 0xaa, 0x80, + 0x1a, 0x56, 0xb9, 0xb1, 0x33, 0xc9, 0xb6, 0x93, 0x6c, 0x0a, 0x1c, 0x76, + 0x0b, 0x00, 0x00, 0x14, 0x00, 0x05, 0x00, 0x01, 0x78, 0x00, 0x2f, 0x00, + 0x7b, 0xc3, 0x59, 0xc9, 0x49, 0x43, 0x7b, 0x20, 0x96, 0xa3, 0x6c, 0xa6, + 0x23, 0x3e, 0x97, 0x50, 0xd1, 0x60, 0xdb, 0x06, 0xb9, 0xc4, 0x76, 0x69, + 0x8b, 0x6c, 0x4a, 0x94, 0x0d, 0xbe, 0x5b, 0x91, 0xf2, 0x00, 0xef, 0xea, + 0x3d, 0xb6, 0x24, 0x8a, 0x26, 0xf9, 0x46, 0xb8, 0x2f, 0x10, 0x98, 0x77, + 0xa1, 0xdc, 0xe9, 0x42, 0x5b, 0x36, 0xb1, 0xb9, 0x79, 0xf3, 0x33, 0x62, + 0x09, 0x8c, 0xca, 0xd9, 0xaa, 0x21, 0xad, 0xd8, 0x99, 0xf8, 0x76, 0x04, + 0x08, 0x3a, 0xc3, 0xef, 0x2e, 0xdd, 0x20, 0x9d, 0xbb, 0xeb, 0x1e, 0x54, + 0xb3, 0x94, 0x28, 0x0b, 0xb1, 0x41, 0x12, 0x89, 0x26, 0x09, 0x87, 0xc1, + 0xce, 0x87, 0x3a, 0xe2, 0x1a, 0x63, 0x36, 0x24, 0x02, 0xa5, 0xc2, 0x4a, + 0xef, 0xe4, 0x8d, 0x47, 0x0f, 0xbf, 0x7b, 0x51, 0xc5, 0x63, 0x61, 0x2b, + 0x77, 0xf2, 0x42, 0xa2, 0x06, 0xfd, 0xff, 0x00, 0x95, 0x0c, 0xdc, 0xae, + 0x4b, 0x47, 0xd6, 0x40, 0xa9, 0xa7, 0x4e, 0x29, 0x0a, 0x0e, 0x08, 0x2e, + 0x52, 0x91, 0x81, 0x07, 0x63, 0x3a, 0x10, 0x8b, 0x80, 0x62, 0x33, 0x83, + 0xfb, 0xca, 0x88, 0x2c, 0x42, 0xa8, 0x92, 0xc9, 0x9d, 0x25, 0x53, 0x30, + 0x52, 0x53, 0xa6, 0xa1, 0x44, 0x87, 0x21, 0x83, 0x19, 0x4c, 0x51, 0x10, + 0x10, 0xd6, 0x18, 0x9e, 0xd8, 0xe2, 0xa0, 0x39, 0x9b, 0x17, 0x8a, 0x03, + 0x51, 0x37, 0xeb, 0x65, 0xee, 0x03, 0x36, 0x66, 0xa6, 0xcd, 0xbb, 0x65, + 0x53, 0xb6, 0xd6, 0x3d, 0xb0, 0x62, 0x83, 0xa4, 0x3a, 0x43, 0x55, 0xb2, + 0x5b, 0xe5, 0x1d, 0xf0, 0xa3, 0x51, 0x48, 0x98, 0x69, 0xcd, 0x40, 0xed, + 0x5f, 0x30, 0xef, 0x16, 0x98, 0x90, 0xd8, 0xe2, 0x40, 0x39, 0x9b, 0xe7, + 0x89, 0xe7, 0xa1, 0x27, 0xea, 0xa5, 0xed, 0x83, 0x37, 0x78, 0x7a, 0x71, + 0x5a, 0xb6, 0x49, 0x4b, 0x5a, 0x6f, 0x9e, 0xd0, 0xb7, 0xc6, 0x13, 0x45, + 0x12, 0x15, 0x34, 0x91, 0x4c, 0x89, 0x24, 0x99, 0x42, 0x82, 0x91, 0x34, + 0xca, 0x05, 0x21, 0x0a, 0x18, 0x8a, 0x52, 0x80, 0x00, 0x06, 0xb0, 0x7b, + 0xd4, 0x9e, 0xcc, 0xdb, 0x27, 0x81, 0xfd, 0xcb, 0x35, 0x12, 0x86, 0x90, + 0xc2, 0x75, 0xa5, 0xeb, 0x9e, 0x8d, 0x63, 0x67, 0x86, 0xe6, 0x38, 0xf7, + 0xed, 0x89, 0xad, 0x09, 0xae, 0x18, 0xfa, 0x99, 0xfc, 0xa4, 0x1f, 0x28, + 0x70, 0x6a, 0x2a, 0x8e, 0x07, 0x17, 0x53, 0x27, 0x94, 0xe3, 0xc1, 0x40, + 0x70, 0xc4, 0xee, 0xcc, 0xdc, 0xa7, 0x86, 0x3e, 0xe2, 0x4a, 0x4c, 0x60, + 0xd2, 0x10, 0x48, 0xbc, 0xc9, 0x62, 0x53, 0x88, 0xc7, 0xce, 0xa8, 0x11, + 0x42, 0xf7, 0x8e, 0x53, 0xa7, 0x08, 0x3d, 0xee, 0x6f, 0x20, 0x75, 0x46, + 0x67, 0x32, 0x66, 0xa2, 0x24, 0x38, 0x85, 0x39, 0x8b, 0x80, 0xea, 0x8d, + 0x5c, 0x06, 0xcb, 0x77, 0x24, 0x49, 0x60, 0xd7, 0xb4, 0xa2, 0x1f, 0x4a, + 0x9f, 0x26, 0x29, 0x3c, 0x64, 0xba, 0xec, 0x9c, 0xa6, 0x6b, 0xe9, 0x39, + 0x6c, 0xa1, 0x93, 0x30, 0x7c, 0x95, 0x09, 0xbf, 0x02, 0x03, 0x50, 0x80, + 0x88, 0x08, 0x6c, 0x86, 0xa1, 0x80, 0x05, 0x62, 0x22, 0x00, 0x01, 0xae, + 0x23, 0x50, 0x43, 0x29, 0x5b, 0x22, 0x0a, 0xcf, 0x1e, 0xae, 0x83, 0x26, + 0xc9, 0x13, 0x09, 0x57, 0x2e, 0x94, 0x2a, 0x65, 0x28, 0x65, 0xaa, 0x70, + 0x0d, 0x8a, 0x62, 0x51, 0x63, 0xed, 0x68, 0x12, 0x4b, 0x59, 0xa6, 0x89, + 0xd4, 0x00, 0xa3, 0x37, 0x72, 0x3d, 0x51, 0xdb, 0x9d, 0xb7, 0x0e, 0x8e, + 0xb2, 0xc3, 0xad, 0x6f, 0x47, 0xbe, 0x36, 0xb2, 0x26, 0xc9, 0x5a, 0xb1, + 0xb2, 0x54, 0x28, 0x70, 0x25, 0x0b, 0x92, 0xcd, 0x99, 0x01, 0x48, 0xb5, + 0xb6, 0x22, 0x8b, 0x96, 0xc2, 0xdd, 0x52, 0xd3, 0x40, 0xa8, 0xa1, 0x5c, + 0x9a, 0xbb, 0x53, 0x40, 0x2a, 0x18, 0x2b, 0x5f, 0xf8, 0xc0, 0xbf, 0xc2, + 0x14, 0x0e, 0xdd, 0x3a, 0x87, 0x9a, 0x0e, 0x0a, 0x55, 0xfc, 0xb1, 0xc1, + 0xe0, 0x0a, 0x47, 0x82, 0x16, 0x9f, 0xb8, 0x4a, 0xd9, 0x8d, 0x8c, 0x21, + 0x6c, 0x88, 0x98, 0x2e, 0x4f, 0x36, 0x78, 0x53, 0xa4, 0xda, 0x8c, 0x46, + 0x16, 0xe8, 0x03, 0x85, 0xf5, 0xd3, 0x54, 0x1b, 0x9b, 0x18, 0x0f, 0xbe, + 0xcd, 0x65, 0x89, 0xa7, 0x6f, 0x30, 0x40, 0x9e, 0xe9, 0x4a, 0x6a, 0xba, + 0xf7, 0x45, 0x91, 0x4c, 0x74, 0xd3, 0x26, 0xb0, 0xbb, 0x48, 0x56, 0x65, + 0x4e, 0x20, 0x72, 0x23, 0x8a, 0x0c, 0x5a, 0x3a, 0xa1, 0x6b, 0x00, 0x1b, + 0xe0, 0xa1, 0x31, 0x6f, 0xd6, 0x5d, 0xfd, 0x43, 0x00, 0xa3, 0xaa, 0x1a, + 0xe8, 0x75, 0xc4, 0xe7, 0xbc, 0x1b, 0xd5, 0x04, 0x4b, 0x18, 0x2c, 0x9d, + 0xa4, 0xc5, 0xe9, 0x7d, 0xd5, 0x9b, 0x52, 0x14, 0x1f, 0x3e, 0xbd, 0x29, + 0x4d, 0x98, 0x9b, 0x65, 0xa2, 0x00, 0x8b, 0x4d, 0x6b, 0x64, 0x4c, 0x6d, + 0x30, 0xfb, 0xf3, 0xb5, 0x1b, 0xa7, 0x99, 0xca, 0xec, 0x84, 0x0f, 0x37, + 0x63, 0x40, 0x50, 0x9a, 0x6b, 0xaa, 0x71, 0xf7, 0x45, 0xb1, 0x71, 0x06, + 0x64, 0xea, 0xd9, 0x52, 0xa6, 0x5a, 0x93, 0x41, 0xcb, 0x72, 0x84, 0x1a, + 0x8c, 0x15, 0x2e, 0xcb, 0xbf, 0x84, 0x1c, 0x3c, 0x54, 0x6a, 0x09, 0x69, + 0x0b, 0x84, 0xee, 0xcd, 0xbd, 0x82, 0x1b, 0xe3, 0xc4, 0x03, 0x0c, 0x8a, + 0xe1, 0x3b, 0x79, 0x54, 0x84, 0x02, 0x71, 0x31, 0xa4, 0x3a, 0x9a, 0x86, + 0x44, 0xe0, 0x0c, 0x5a, 0x9b, 0x10, 0xe6, 0xee, 0xed, 0x0c, 0x74, 0xc7, + 0x0d, 0xba, 0x2e, 0x35, 0xbd, 0xfd, 0xcb, 0x96, 0xc9, 0xdb, 0xcd, 0x2c, + 0x74, 0x4d, 0x37, 0x65, 0x6a, 0x14, 0xa8, 0xa2, 0x09, 0x93, 0xfb, 0xc5, + 0xb1, 0x71, 0xf5, 0x46, 0xa0, 0x2b, 0x14, 0x85, 0x0a, 0x54, 0x5d, 0xaa, + 0x04, 0x0b, 0xf1, 0x6e, 0x5c, 0x24, 0xee, 0xc3, 0x6b, 0x4e, 0x1c, 0x15, + 0xef, 0x6a, 0x0e, 0x68, 0x6c, 0x23, 0xdd, 0x8e, 0xd6, 0x90, 0x38, 0x2b, + 0xdf, 0x84, 0x5f, 0x3a, 0x4e, 0xd2, 0x69, 0x64, 0xa6, 0x24, 0xd9, 0xd5, + 0xb0, 0x50, 0x74, 0xda, 0x18, 0x94, 0x4b, 0x1b, 0x8e, 0x3a, 0x0a, 0xd8, + 0xc2, 0xea, 0xd4, 0x6b, 0x22, 0xaf, 0x15, 0x20, 0xe0, 0xfb, 0xf8, 0x80, + 0x85, 0x20, 0x35, 0x08, 0x0d, 0x60, 0x20, 0x38, 0x86, 0x26, 0xb2, 0x94, + 0x88, 0x25, 0x97, 0x38, 0x37, 0xba, 0x52, 0x9a, 0xaa, 0xce, 0x2f, 0x2d, + 0x8e, 0x08, 0x97, 0x5c, 0x1a, 0x2c, 0x0b, 0x33, 0xd9, 0xcc, 0x2d, 0x87, + 0x0a, 0x0c, 0x4d, 0x2e, 0x11, 0x32, 0x47, 0xa2, 0xb0, 0xee, 0xf2, 0x13, + 0x4b, 0x84, 0x7c, 0x90, 0xbf, 0xc3, 0x7b, 0x7e, 0x25, 0x32, 0x43, 0x94, + 0x46, 0x5e, 0x99, 0xfd, 0xd0, 0x9b, 0x08, 0x00, 0xd0, 0x12, 0xe6, 0x74, + 0x1d, 0x44, 0x84, 0x43, 0x07, 0x3d, 0x1f, 0x32, 0x66, 0x53, 0x69, 0x4c, + 0xe0, 0x07, 0x14, 0x01, 0x4a, 0x00, 0x52, 0x94, 0x00, 0xa5, 0x29, 0x42, + 0x80, 0x28, 0x05, 0x40, 0x00, 0x01, 0x50, 0x00, 0x05, 0x40, 0x1d, 0xc0, + 0x95, 0x91, 0x34, 0x4e, 0xda, 0x61, 0x63, 0x27, 0x15, 0x55, 0xb5, 0x0b, + 0xa5, 0x65, 0x2e, 0x04, 0xa5, 0x76, 0x51, 0xa2, 0xb1, 0xce, 0xca, 0x02, + 0x4e, 0x82, 0x9a, 0x93, 0x48, 0xae, 0x47, 0x4c, 0x30, 0x0b, 0x16, 0xfa, + 0x75, 0xfc, 0x81, 0xbf, 0xc1, 0x50, 0xf0, 0xf7, 0x78, 0xac, 0x6b, 0xea, + 0x57, 0xf2, 0x02, 0xf7, 0x08, 0xd2, 0x3c, 0x10, 0xe2, 0xc9, 0xdd, 0xa5, + 0x6a, 0xfe, 0xc9, 0x4e, 0x06, 0x6d, 0x6c, 0x17, 0x69, 0x49, 0xdb, 0x18, + 0xc5, 0x6d, 0x45, 0x35, 0x86, 0x7b, 0x5b, 0x35, 0x72, 0x38, 0x94, 0x44, + 0x1a, 0x1b, 0x17, 0x70, 0xae, 0xd5, 0xca, 0x65, 0x59, 0xbb, 0x94, 0x54, + 0x6e, 0xba, 0x47, 0x0a, 0x48, 0xaa, 0x2b, 0x10, 0x53, 0x55, 0x33, 0x06, + 0x32, 0x9c, 0x86, 0x12, 0x88, 0x6b, 0x0c, 0x4d, 0xec, 0x79, 0x7b, 0x63, + 0x22, 0xdd, 0x61, 0x3b, 0x25, 0x4d, 0xfb, 0x44, 0xb9, 0xc7, 0x54, 0x6a, + 0xa6, 0xb0, 0x8e, 0x64, 0x60, 0x22, 0xb4, 0x54, 0x0b, 0x11, 0x52, 0xe9, + 0x60, 0xe9, 0xeb, 0x0d, 0xce, 0xc9, 0x46, 0xf7, 0x47, 0x0f, 0x76, 0x91, + 0x3d, 0x71, 0xa4, 0xdb, 0x05, 0x0a, 0xc7, 0xff, 0x00, 0x22, 0x51, 0x63, + 0x68, 0x5b, 0x11, 0x17, 0x2b, 0x02, 0x8f, 0xd5, 0x27, 0xec, 0xd2, 0xc6, + 0xdd, 0x51, 0xda, 0xba, 0xc0, 0x6c, 0xc8, 0xb9, 0x9a, 0x34, 0xd0, 0x06, + 0x5c, 0xe8, 0x93, 0x4d, 0x0d, 0xda, 0x35, 0x4c, 0xa8, 0xb6, 0x6a, 0x8a, + 0x4d, 0xdb, 0xa2, 0x40, 0xa0, 0x89, 0x22, 0x89, 0x01, 0x34, 0x93, 0x28, + 0x62, 0x29, 0x08, 0x50, 0x28, 0x6c, 0x07, 0x71, 0x35, 0xb2, 0xe6, 0x69, + 0xd2, 0xf2, 0x45, 0xfa, 0x3b, 0xfb, 0x50, 0xba, 0x56, 0x54, 0xe1, 0x4b, + 0x93, 0x8e, 0x31, 0xce, 0x6e, 0x8d, 0x4e, 0xc2, 0x4e, 0x57, 0x38, 0xd4, + 0x48, 0x2a, 0xe5, 0xbe, 0x4a, 0x8d, 0xb2, 0x41, 0xf5, 0x47, 0xca, 0x3d, + 0xda, 0x65, 0xcd, 0x7c, 0xf8, 0x39, 0x01, 0xeb, 0x0f, 0x90, 0x21, 0xe5, + 0x97, 0xbc, 0x4a, 0x87, 0xb6, 0x40, 0x39, 0xde, 0x5f, 0x6c, 0x17, 0x49, + 0x49, 0xda, 0xa9, 0x84, 0x18, 0xcb, 0x9f, 0x9d, 0x90, 0x4e, 0x21, 0x78, + 0xc9, 0x35, 0x6a, 0xa1, 0x46, 0x83, 0xf7, 0x1b, 0xa6, 0x0f, 0x12, 0x2a, + 0xcd, 0x5e, 0x37, 0x59, 0xab, 0x94, 0x4d, 0x82, 0xa2, 0x0b, 0x90, 0xc9, + 0xaa, 0x41, 0xca, 0x21, 0x84, 0x22, 0x71, 0x63, 0x8e, 0xa9, 0x39, 0x5a, + 0x2e, 0x39, 0xdd, 0x51, 0x0e, 0xc8, 0x62, 0xb9, 0x41, 0x56, 0xab, 0x6b, + 0x5d, 0xa0, 0xa1, 0x2d, 0xe8, 0xa8, 0x8a, 0xe6, 0x84, 0xbe, 0x51, 0x83, + 0xa6, 0x3a, 0x51, 0xab, 0x64, 0xb8, 0x87, 0x83, 0xba, 0xc8, 0x98, 0x63, + 0x1a, 0xf6, 0x03, 0x18, 0xf0, 0x44, 0x9a, 0xc6, 0x5a, 0x52, 0x4c, 0xfe, + 0xe0, 0xa4, 0x5d, 0x50, 0x0e, 0xc6, 0x62, 0x81, 0x45, 0x67, 0x8b, 0xeb, + 0x52, 0x93, 0x64, 0xd4, 0x31, 0x00, 0x70, 0xd4, 0xb4, 0x25, 0xf3, 0x84, + 0x35, 0x97, 0xb3, 0x48, 0xa8, 0x34, 0x64, 0xdd, 0x16, 0x8d, 0x91, 0x2e, + 0x0a, 0x48, 0x37, 0x4c, 0xa9, 0x24, 0x98, 0x6c, 0x14, 0x85, 0x00, 0xee, + 0x46, 0x76, 0x62, 0xc9, 0x2a, 0x5d, 0x49, 0xad, 0x59, 0xcc, 0xed, 0x42, + 0xe9, 0x49, 0x62, 0xea, 0xf5, 0x05, 0x8d, 0xaf, 0x9c, 0xdd, 0xa9, 0x6b, + 0xf1, 0x6f, 0x0e, 0x63, 0x0d, 0xaa, 0x50, 0x55, 0xcb, 0x7c, 0x95, 0x1b, + 0x20, 0x7d, 0x51, 0xf2, 0xf7, 0x58, 0xae, 0x6b, 0xe7, 0xbd, 0xb0, 0x40, + 0xe9, 0x1f, 0x20, 0x43, 0xdb, 0x36, 0x7c, 0x95, 0x0e, 0x26, 0xd6, 0xec, + 0x25, 0x16, 0xc1, 0x5a, 0x72, 0xc4, 0x55, 0xfd, 0x25, 0xc1, 0x69, 0xff, + 0x00, 0x58, 0xe9, 0x30, 0x4c, 0xa3, 0x7f, 0x33, 0x69, 0x48, 0x52, 0x45, + 0xbb, 0x95, 0xdc, 0xb9, 0xea, 0x40, 0xb3, 0x47, 0xcd, 0x96, 0x68, 0xe5, + 0x23, 0x5e, 0x51, 0x07, 0x09, 0x99, 0x25, 0x0b, 0xb1, 0x49, 0x4c, 0x34, + 0x0d, 0xf0, 0x1a, 0xc2, 0xb8, 0x9b, 0x58, 0xeb, 0xd0, 0x13, 0x67, 0x35, + 0xce, 0x54, 0x55, 0x10, 0xa0, 0x1d, 0x32, 0x56, 0xed, 0xab, 0x80, 0xc5, + 0x42, 0xcd, 0xce, 0x43, 0x88, 0x06, 0x01, 0xc4, 0xc9, 0x8d, 0xd1, 0x06, + 0x0c, 0x98, 0xe9, 0x46, 0xad, 0x92, 0x8d, 0x60, 0x3c, 0x1d, 0xd2, 0x44, + 0xc3, 0x18, 0xd6, 0x3a, 0xc5, 0x0b, 0xe3, 0xc1, 0x12, 0x9b, 0x1a, 0x65, + 0x49, 0x73, 0xea, 0xc5, 0xcf, 0x2a, 0x80, 0x52, 0x0d, 0x25, 0xe8, 0x86, + 0x68, 0xed, 0xc8, 0xe2, 0xea, 0x48, 0x14, 0xf6, 0x80, 0x3d, 0x71, 0x5c, + 0xcd, 0x20, 0xba, 0x38, 0x43, 0x39, 0x6b, 0x14, 0x8a, 0x83, 0x36, 0x0d, + 0x91, 0x68, 0xd5, 0x12, 0xde, 0x4d, 0x06, 0xe9, 0x95, 0x24, 0xcb, 0xb3, + 0x41, 0x4a, 0x14, 0x8d, 0xf1, 0x1a, 0xc6, 0xb1, 0xee, 0x64, 0x2c, 0xb9, + 0x8a, 0x54, 0xbe, 0x91, 0x80, 0x21, 0x30, 0xb4, 0x0b, 0xa5, 0xa5, 0x4a, + 0x9e, 0xe5, 0x41, 0xa2, 0xb1, 0xce, 0x2e, 0x0f, 0x6d, 0xb0, 0x83, 0x85, + 0xce, 0x61, 0xb5, 0x48, 0x20, 0x16, 0x2d, 0xf2, 0x54, 0x6c, 0x91, 0xf5, + 0x47, 0x88, 0x47, 0xba, 0x45, 0x73, 0x5f, 0x3e, 0x0e, 0xc1, 0x03, 0xd6, + 0x1f, 0x20, 0x43, 0x9b, 0x31, 0x7c, 0x95, 0xab, 0xeb, 0x20, 0x0c, 0xc2, + 0x5d, 0x6e, 0x17, 0x68, 0x49, 0x91, 0x53, 0x0c, 0x29, 0xac, 0xbe, 0xe8, + 0x39, 0x26, 0x69, 0xf0, 0x90, 0x6c, 0xd5, 0x42, 0x8d, 0x0a, 0x0f, 0x73, + 0xae, 0xd1, 0xca, 0x65, 0x59, 0xb3, 0xa4, 0x55, 0x6e, 0xe1, 0x13, 0x85, + 0x24, 0x55, 0x15, 0x88, 0x29, 0xaa, 0x99, 0x83, 0x19, 0x4e, 0x43, 0x09, + 0x47, 0x60, 0x62, 0x69, 0x22, 0x54, 0x0c, 0x66, 0xc5, 0x50, 0x56, 0x97, + 0xaa, 0x70, 0xec, 0x89, 0x7b, 0x8b, 0xa6, 0xe7, 0xa6, 0xa0, 0x31, 0x80, + 0x9d, 0x49, 0x5a, 0x2a, 0x05, 0xd3, 0x54, 0xa1, 0x7a, 0x04, 0xb8, 0xb1, + 0x6c, 0x80, 0xe0, 0x8f, 0xdc, 0x3b, 0x20, 0x3d, 0xce, 0x52, 0x62, 0xbe, + 0x61, 0xd6, 0x28, 0x5f, 0xfe, 0xb5, 0xe2, 0x51, 0x63, 0x88, 0x01, 0xca, + 0xdd, 0x75, 0x41, 0x59, 0x8a, 0xc9, 0x87, 0x62, 0xca, 0xdb, 0x50, 0xa3, + 0xb5, 0x29, 0xbc, 0x53, 0x0a, 0x61, 0x98, 0xa2, 0x26, 0xa8, 0x5c, 0x2a, + 0x89, 0x74, 0xd0, 0xdd, 0x9b, 0x54, 0x8a, 0x83, 0x66, 0xa8, 0x24, 0xd9, + 0xba, 0x29, 0x85, 0x04, 0x49, 0x04, 0x08, 0x09, 0xa4, 0x99, 0x03, 0x11, + 0x48, 0x42, 0x94, 0xa5, 0x0d, 0x60, 0xee, 0x82, 0xcf, 0xd9, 0x25, 0x6d, + 0x33, 0xb1, 0xd0, 0x32, 0xaa, 0x5a, 0x85, 0xda, 0xf2, 0xa3, 0x56, 0xe4, + 0x95, 0x5f, 0xce, 0xa6, 0xa1, 0xd1, 0x69, 0xa8, 0xa9, 0xe7, 0xac, 0x66, + 0x8b, 0x6d, 0x31, 0x29, 0xdb, 0xb5, 0xc7, 0xf3, 0x70, 0xb7, 0xa8, 0xc7, + 0xdc, 0xe2, 0xa9, 0xb0, 0x8e, 0x14, 0xed, 0x17, 0x4a, 0x1b, 0xf7, 0xe1, + 0x5b, 0x28, 0x7c, 0x95, 0xac, 0xce, 0xc9, 0x40, 0xa7, 0x6f, 0x6e, 0x17, + 0x6d, 0xe4, 0xc9, 0x8d, 0x2d, 0x8a, 0x14, 0xd6, 0x5c, 0xfa, 0xa5, 0x2e, + 0xcd, 0x88, 0xe8, 0x83, 0x31, 0xbe, 0x5e, 0xe9, 0x3a, 0x4a, 0x14, 0xa7, + 0x4d, 0x42, 0x19, 0x35, 0x08, 0x60, 0xa4, 0xa7, 0x21, 0xc2, 0xd4, 0xc5, + 0x30, 0x0d, 0x42, 0x53, 0x14, 0x44, 0x04, 0x06, 0xf8, 0x43, 0xc6, 0x24, + 0x21, 0xbd, 0xcc, 0x76, 0x22, 0xf6, 0x54, 0xa0, 0x80, 0xda, 0x99, 0xa2, + 0xc6, 0x35, 0x09, 0x5b, 0x63, 0x3b, 0x63, 0x5b, 0x37, 0x3e, 0x31, 0x14, + 0xed, 0xe8, 0xa0, 0xe5, 0x81, 0x10, 0xc1, 0x1b, 0xd9, 0x23, 0x7b, 0x83, + 0x07, 0x78, 0xa2, 0x38, 0x5d, 0xca, 0x52, 0x8e, 0x00, 0x5d, 0x1f, 0x68, + 0x31, 0x6f, 0xde, 0x86, 0x12, 0x6b, 0x53, 0xfb, 0x98, 0xdc, 0x41, 0xf4, + 0xe9, 0x62, 0xd2, 0x00, 0x9c, 0xb9, 0x03, 0x16, 0xdd, 0x2b, 0x6d, 0x2a, + 0x8e, 0x8e, 0x24, 0x6a, 0x96, 0x30, 0x32, 0xb9, 0xa5, 0x16, 0xa9, 0x9a, + 0x84, 0xd0, 0x44, 0x85, 0x49, 0x14, 0x53, 0x22, 0x49, 0x26, 0x40, 0x02, + 0x91, 0x34, 0xd3, 0x28, 0x10, 0x84, 0x21, 0x42, 0xa2, 0x94, 0x85, 0x00, + 0x29, 0x40, 0x2a, 0x00, 0x0a, 0x3b, 0xa9, 0x61, 0x6e, 0x9d, 0xb4, 0xde, + 0x4e, 0x0a, 0x3e, 0x97, 0x08, 0x05, 0xda, 0xa5, 0x29, 0x7f, 0x4a, 0x69, + 0xae, 0x39, 0xba, 0x65, 0x03, 0x10, 0xb8, 0xd7, 0x49, 0x20, 0xc6, 0x30, + 0x62, 0x98, 0x3a, 0xa2, 0x62, 0x60, 0x10, 0xc7, 0xf0, 0x8b, 0xb7, 0x8c, + 0xb4, 0xe9, 0x80, 0xb0, 0x21, 0xad, 0xc6, 0x18, 0x87, 0x68, 0x43, 0xb9, + 0x29, 0x1c, 0x33, 0x5d, 0x1b, 0xf9, 0x4b, 0xbd, 0xe5, 0xa6, 0x12, 0x70, + 0xf5, 0x2b, 0x49, 0xe5, 0x90, 0x66, 0x53, 0x19, 0x95, 0xb0, 0x50, 0xa3, + 0x74, 0x84, 0xa3, 0x9c, 0x18, 0x0e, 0x30, 0xce, 0xc8, 0x9c, 0x54, 0x54, + 0x83, 0x59, 0x1d, 0x38, 0x5c, 0x83, 0x48, 0x10, 0xbd, 0xd8, 0xa4, 0xc9, + 0xa2, 0x56, 0xb2, 0x89, 0xf1, 0x8e, 0xed, 0xbd, 0xa8, 0x50, 0x9a, 0x0e, + 0xa9, 0xfd, 0x2d, 0xad, 0x55, 0x05, 0xa2, 0x86, 0xcd, 0x13, 0x28, 0x54, + 0x08, 0xac, 0x99, 0x74, 0xa3, 0x45, 0xb8, 0x5e, 0x1a, 0xf7, 0xb1, 0x87, + 0xc9, 0x30, 0xf0, 0x1b, 0x58, 0x9d, 0xc7, 0x6c, 0x38, 0x09, 0xd7, 0xb6, + 0x6c, 0x41, 0xf7, 0x8f, 0xfe, 0xc2, 0x0b, 0xba, 0x47, 0x34, 0x92, 0x58, + 0xe8, 0xa5, 0x32, 0x98, 0xdb, 0x96, 0x94, 0x97, 0x70, 0x06, 0x1f, 0x73, + 0xd8, 0x8e, 0x23, 0x66, 0xeb, 0x90, 0x55, 0x54, 0x86, 0xa4, 0xa6, 0x6c, + 0xd9, 0x72, 0x1b, 0x0c, 0xb4, 0xf7, 0x63, 0xe9, 0x39, 0xc0, 0xb9, 0xea, + 0xd7, 0x3c, 0xcb, 0x56, 0x35, 0x1d, 0x45, 0xfa, 0x25, 0x36, 0x65, 0x75, + 0xa5, 0x22, 0xc0, 0x26, 0x41, 0x51, 0xc4, 0x45, 0x04, 0xf4, 0x5b, 0x10, + 0xb0, 0xe5, 0x83, 0xa4, 0xcc, 0x8b, 0x96, 0xca, 0x9d, 0x15, 0x08, 0xa1, + 0x44, 0x0c, 0x9a, 0xa9, 0x98, 0x48, 0x62, 0x98, 0xa3, 0x5d, 0xfa, 0x4a, + 0x72, 0xeb, 0x52, 0x10, 0x20, 0x21, 0x47, 0xf5, 0x58, 0x6f, 0x6b, 0xe3, + 0x0a, 0x0d, 0x78, 0x43, 0xb8, 0x40, 0x85, 0x0a, 0x44, 0x6a, 0x08, 0x41, + 0xa3, 0x64, 0xce, 0xb3, 0x85, 0xd4, 0x22, 0x28, 0xa4, 0x99, 0x44, 0xca, + 0x2c, 0xba, 0xa6, 0x02, 0x14, 0x84, 0x28, 0x56, 0x63, 0x1c, 0xe6, 0x02, + 0x90, 0x02, 0xb1, 0x1a, 0x02, 0x18, 0xca, 0x84, 0x0a, 0x33, 0x15, 0x83, + 0x3f, 0x4e, 0x16, 0x2d, 0x79, 0xac, 0xc5, 0x72, 0x97, 0x34, 0x25, 0xb6, + 0x99, 0x36, 0xa4, 0x02, 0x35, 0x4b, 0x10, 0x95, 0x2c, 0xd2, 0x80, 0x32, + 0x86, 0xee, 0xe5, 0xec, 0xbe, 0xc7, 0xd0, 0xa6, 0x60, 0x99, 0x6d, 0xe6, + 0xec, 0x93, 0x0e, 0xcb, 0x4c, 0x81, 0x5b, 0xc4, 0x8a, 0x1f, 0xae, 0x21, + 0x43, 0xab, 0x80, 0x61, 0x87, 0x55, 0xc2, 0x05, 0x04, 0xc2, 0x02, 0x16, + 0x8a, 0x16, 0xa1, 0x03, 0x54, 0x34, 0x86, 0x23, 0x63, 0x01, 0x0c, 0x43, + 0xe5, 0x0a, 0xa2, 0xb2, 0x8f, 0xf5, 0xb3, 0x78, 0x77, 0x86, 0x2f, 0x71, + 0x7b, 0xed, 0xe1, 0xe0, 0x8b, 0x92, 0xf4, 0x6f, 0x8d, 0xe0, 0x8b, 0x61, + 0xad, 0x41, 0xbe, 0x3f, 0xca, 0x5f, 0xea, 0xb8, 0x4a, 0xcd, 0xec, 0x91, + 0xa1, 0x91, 0x39, 0x4b, 0x4d, 0x8e, 0xcb, 0xdc, 0x12, 0x83, 0x96, 0xdc, + 0xbd, 0xb6, 0x59, 0x33, 0x56, 0x41, 0xb5, 0x35, 0xab, 0x12, 0x9c, 0x00, + 0xd5, 0x99, 0xd5, 0x01, 0xfa, 0x31, 0xf5, 0x01, 0x49, 0x8c, 0x9b, 0x31, + 0x92, 0xce, 0x8d, 0x49, 0x8c, 0x62, 0x92, 0x86, 0x4e, 0xcd, 0x8f, 0x36, + 0x4d, 0x30, 0xea, 0x47, 0x1f, 0xf3, 0x13, 0x28, 0x80, 0x8e, 0x11, 0x29, + 0x11, 0x3c, 0x1b, 0x3f, 0xc9, 0x9c, 0x2e, 0xd8, 0x07, 0xb3, 0x59, 0x17, + 0x3d, 0x36, 0x10, 0xc4, 0x22, 0x74, 0xad, 0x80, 0x94, 0xf7, 0xaa, 0x5a, + 0x9b, 0xe0, 0xc7, 0x55, 0x68, 0x72, 0x0e, 0x3b, 0x64, 0x04, 0x07, 0x93, + 0x1d, 0x60, 0x7e, 0x8c, 0xdd, 0x11, 0xd6, 0x07, 0xe8, 0xcd, 0xd1, 0x1d, + 0x60, 0x7e, 0x8c, 0xdd, 0x11, 0xd6, 0x07, 0xe8, 0xcf, 0xd1, 0x1d, 0x60, + 0x7e, 0x8c, 0xdd, 0x11, 0xd6, 0x07, 0xe8, 0xcf, 0xd1, 0x1d, 0x60, 0x7e, + 0x8c, 0xfd, 0x11, 0xd6, 0x07, 0xe8, 0xcd, 0xd1, 0x1d, 0x60, 0x7e, 0x8c, + 0xdd, 0x11, 0xd6, 0x47, 0xe8, 0xcd, 0xd1, 0x1d, 0x60, 0x7e, 0x8c, 0xfd, + 0x11, 0xd6, 0x7f, 0x86, 0x6e, 0x88, 0xb8, 0x6c, 0x26, 0x36, 0x2b, 0x54, + 0x04, 0x47, 0x93, 0x09, 0xa7, 0x2e, 0xb1, 0xf7, 0xc9, 0xa2, 0x7f, 0xdb, + 0x5e, 0xa4, 0x66, 0x6c, 0x88, 0x5c, 0x66, 0x17, 0x0b, 0xda, 0x26, 0x34, + 0x05, 0xd5, 0xa1, 0x0c, 0x65, 0x4c, 0x18, 0x09, 0x98, 0x68, 0x08, 0x42, + 0x6f, 0x64, 0x6e, 0x13, 0x9f, 0x4d, 0x91, 0xb5, 0x51, 0x06, 0xc0, 0x9d, + 0x12, 0x96, 0x6b, 0x07, 0xeb, 0x00, 0x8a, 0x86, 0x68, 0xf9, 0x42, 0x0d, + 0x69, 0x1d, 0x72, 0x22, 0x91, 0x46, 0xeb, 0x3b, 0x0a, 0x85, 0x22, 0x85, + 0xd4, 0x2a, 0x5d, 0x4b, 0x98, 0xb9, 0x11, 0xaf, 0xab, 0xb4, 0x6e, 0xb7, + 0x9c, 0x4c, 0xd1, 0xda, 0x29, 0x3f, 0x8b, 0x19, 0x7b, 0x18, 0xed, 0x14, + 0x9f, 0xc5, 0x8c, 0xbd, 0x8c, 0x76, 0x8a, 0x4d, 0xe2, 0xc6, 0x5e, 0xc2, + 0x3b, 0x45, 0x26, 0xf1, 0x63, 0x2f, 0x61, 0x1d, 0xa2, 0x93, 0xf8, 0xb1, + 0x97, 0xb1, 0x8e, 0xd1, 0x49, 0xbc, 0x58, 0xcb, 0xd8, 0x47, 0x68, 0xa4, + 0xde, 0x2c, 0x65, 0xec, 0x23, 0xb4, 0x52, 0x6f, 0x16, 0x32, 0xf6, 0x11, + 0xda, 0x29, 0x37, 0x8a, 0xd9, 0x7b, 0x08, 0xed, 0x14, 0x9b, 0xc5, 0x8c, + 0xbd, 0x84, 0x76, 0x8a, 0x4d, 0xe2, 0xc6, 0x5e, 0xc2, 0x3b, 0x45, 0x26, + 0xf1, 0x63, 0x2f, 0x61, 0x00, 0xa3, 0x59, 0x64, 0xbd, 0xb2, 0x81, 0x78, + 0xed, 0xd9, 0x36, 0x44, 0xe1, 0xb4, 0x64, 0xd3, 0x28, 0x87, 0xfb, 0x17, + 0xff, 0xc4, 0x00, 0x2b, 0x10, 0x00, 0x01, 0x02, 0x03, 0x06, 0x05, 0x05, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x11, + 0x21, 0x31, 0xf0, 0x10, 0x41, 0x51, 0x61, 0x71, 0x81, 0x30, 0x91, 0xa1, + 0xb1, 0xc1, 0x20, 0x40, 0xd1, 0xe1, 0xf1, 0x50, 0x60, 0xff, 0xda, 0x00, + 0x08, 0x01, 0x01, 0x00, 0x01, 0x3f, 0x21, 0xff, 0x00, 0x03, 0xfb, 0xc4, + 0x41, 0x30, 0x6a, 0x08, 0x55, 0x75, 0xb8, 0x0b, 0xa1, 0x23, 0xee, 0x87, + 0xae, 0x00, 0x77, 0x4e, 0x84, 0x83, 0xba, 0x74, 0x44, 0x5d, 0xd3, 0xa2, + 0x82, 0xee, 0x86, 0x58, 0xea, 0x1e, 0xf6, 0x0d, 0xf5, 0x7a, 0x1d, 0x92, + 0x9e, 0x03, 0x04, 0xea, 0x08, 0xbb, 0x27, 0x54, 0x65, 0xd9, 0x3a, 0xbc, + 0x2e, 0xc9, 0xd5, 0x48, 0x76, 0x4e, 0xa8, 0xcf, 0xb2, 0x0e, 0x80, 0x89, + 0xd8, 0xa0, 0x09, 0x90, 0x27, 0x40, 0xe9, 0xb9, 0x8b, 0x77, 0xb5, 0x7a, + 0x3d, 0xba, 0xd2, 0x22, 0xd9, 0x90, 0xd5, 0x7c, 0x4e, 0x95, 0xa0, 0x44, + 0x81, 0xd8, 0x3d, 0xab, 0x12, 0x56, 0x00, 0x22, 0x88, 0x01, 0x43, 0xb1, + 0x12, 0x17, 0x45, 0xbd, 0x16, 0x50, 0x4e, 0x84, 0xae, 0x03, 0x16, 0xcd, + 0xba, 0xf7, 0x4e, 0x6c, 0x1a, 0x66, 0x85, 0x1d, 0xd6, 0x81, 0x6e, 0x3b, + 0x32, 0x7d, 0xa4, 0xf8, 0x32, 0xdb, 0x65, 0x2f, 0x38, 0x90, 0x3b, 0xf4, + 0x00, 0x0b, 0x74, 0xa7, 0xfd, 0xff, 0x00, 0x4a, 0xdf, 0x53, 0xb4, 0xbe, + 0x43, 0x1d, 0xda, 0x65, 0xdd, 0xd1, 0x23, 0xb1, 0x5c, 0x7f, 0x55, 0xf7, + 0x4e, 0x44, 0x62, 0x55, 0x6b, 0xd6, 0x19, 0xef, 0x8e, 0x53, 0xa6, 0x06, + 0xd8, 0x23, 0x00, 0xad, 0x46, 0x15, 0x81, 0xb3, 0xf0, 0x28, 0x2b, 0xf1, + 0x2d, 0x3e, 0x2a, 0x27, 0xf5, 0xe4, 0xca, 0xb0, 0x89, 0x92, 0x71, 0x84, + 0xce, 0x63, 0xf2, 0x27, 0x58, 0xc2, 0xd4, 0xdb, 0xc4, 0xfc, 0xa0, 0x67, + 0xc8, 0x6f, 0x3c, 0x14, 0x5e, 0x42, 0xf3, 0x78, 0x93, 0x6f, 0x6a, 0xe9, + 0x0c, 0x97, 0x6e, 0xc9, 0x47, 0xc0, 0x8d, 0xcb, 0x44, 0x0e, 0xc3, 0x7d, + 0xd1, 0x45, 0xa6, 0x6e, 0x27, 0x9a, 0x25, 0xad, 0xd3, 0x43, 0x8e, 0x2c, + 0x18, 0x4e, 0x2a, 0x9f, 0xf7, 0x05, 0x59, 0x72, 0x66, 0x8e, 0x5d, 0xa2, + 0x30, 0x34, 0xb7, 0x1d, 0x80, 0x3b, 0x82, 0xba, 0xbf, 0x75, 0x6e, 0xf7, + 0x74, 0xcc, 0xd9, 0x01, 0xfc, 0xc8, 0x73, 0x4c, 0x5d, 0x53, 0xf3, 0xbc, + 0x99, 0x33, 0x6e, 0x61, 0xf6, 0xe8, 0x1b, 0x65, 0x14, 0x14, 0x1a, 0x08, + 0xde, 0x7a, 0xe6, 0xe0, 0x23, 0x1c, 0x94, 0x25, 0xc2, 0xe2, 0x46, 0xd0, + 0xe3, 0xb8, 0xa9, 0x59, 0x01, 0x1b, 0x23, 0x63, 0x30, 0x8d, 0x2c, 0x09, + 0x2c, 0x8b, 0x13, 0xc1, 0x82, 0xb0, 0xcc, 0x91, 0x60, 0xaf, 0x60, 0x30, + 0xc0, 0x10, 0x88, 0x14, 0x64, 0x92, 0x0b, 0xf9, 0x3c, 0x65, 0x23, 0x5f, + 0x08, 0x33, 0x0e, 0x08, 0x2f, 0x6e, 0x09, 0x92, 0x04, 0x19, 0x9c, 0x2b, + 0x9b, 0x2e, 0x3d, 0xd2, 0xde, 0x82, 0x3e, 0x59, 0xbf, 0xe2, 0x0a, 0x8c, + 0xe7, 0x61, 0xe1, 0x21, 0xd8, 0x8d, 0xc8, 0xc4, 0xdb, 0xaa, 0x1d, 0xcc, + 0x94, 0x1d, 0x84, 0x33, 0x9c, 0x8c, 0xf5, 0x2c, 0xd8, 0x92, 0x36, 0x51, + 0x1b, 0x11, 0x6c, 0xf0, 0xd9, 0x30, 0x5b, 0x65, 0x72, 0xeb, 0x76, 0x7d, + 0xe8, 0x53, 0xa2, 0x27, 0x8d, 0xe7, 0xf2, 0x6e, 0xe6, 0x81, 0x66, 0x56, + 0xc4, 0xdd, 0xd0, 0xb1, 0x12, 0xea, 0x5f, 0x28, 0x96, 0x7e, 0x73, 0xe5, + 0x1b, 0x12, 0x77, 0x45, 0x82, 0x34, 0x7f, 0x99, 0xa9, 0x49, 0xe3, 0x61, + 0x27, 0x39, 0xa8, 0xcb, 0x09, 0x00, 0x66, 0x1b, 0x9f, 0xa4, 0x19, 0x83, + 0xd1, 0x79, 0x41, 0x35, 0x76, 0xeb, 0x38, 0xe5, 0x45, 0xb2, 0x22, 0x48, + 0x1c, 0xb1, 0x23, 0x47, 0x5e, 0x89, 0xc2, 0x41, 0x27, 0x51, 0x25, 0x91, + 0xa3, 0x36, 0x90, 0x4f, 0x42, 0x0a, 0x94, 0xa5, 0x7f, 0x7a, 0x9f, 0xf7, + 0x4e, 0xee, 0xe8, 0x58, 0x0d, 0xaf, 0x01, 0x83, 0x3e, 0x13, 0xb8, 0x8e, + 0x89, 0xe7, 0x71, 0xc2, 0x74, 0x21, 0x03, 0x85, 0xc8, 0x78, 0xca, 0x72, + 0x1f, 0xe0, 0xae, 0x1a, 0xf0, 0x78, 0x73, 0x70, 0x19, 0xd3, 0x9a, 0x2e, + 0xee, 0x80, 0x74, 0x10, 0x66, 0x76, 0x5c, 0x99, 0x62, 0x1c, 0x71, 0x07, + 0x12, 0x47, 0x19, 0x3a, 0xa1, 0xde, 0x13, 0x51, 0x4a, 0x52, 0x22, 0xe3, + 0x0e, 0x2c, 0x00, 0xbb, 0x29, 0x07, 0x02, 0x11, 0xc6, 0x2c, 0x03, 0x16, + 0x53, 0xbc, 0xb3, 0x0c, 0xca, 0x27, 0xa4, 0x70, 0x61, 0xf8, 0x94, 0x02, + 0x62, 0x44, 0x02, 0x40, 0x03, 0x6b, 0xfe, 0x39, 0xb5, 0xc4, 0x45, 0xd0, + 0x1c, 0x1b, 0x32, 0xd8, 0xc5, 0xcf, 0x29, 0xeb, 0xd7, 0xca, 0x72, 0xf7, + 0xde, 0xa3, 0xa7, 0x97, 0x9b, 0x21, 0x89, 0x88, 0xb8, 0xc2, 0x09, 0xf2, + 0xdb, 0xa7, 0xc2, 0xc2, 0x7c, 0xb2, 0x53, 0xc4, 0xa9, 0x09, 0x57, 0xd2, + 0x82, 0x21, 0x17, 0x95, 0xd4, 0x5a, 0xe4, 0x0b, 0x0c, 0x33, 0x3a, 0x7e, + 0xf2, 0x2a, 0xe2, 0x71, 0x89, 0xbe, 0xfa, 0xd1, 0x18, 0xc5, 0x7d, 0x4a, + 0xea, 0x82, 0x05, 0x83, 0x44, 0x7a, 0x42, 0xaf, 0xec, 0xd8, 0x46, 0x46, + 0x01, 0x08, 0x14, 0x0c, 0xb1, 0x4d, 0x9c, 0x3b, 0xab, 0xa9, 0xca, 0x34, + 0x65, 0x09, 0x94, 0xfd, 0x11, 0x43, 0xae, 0x29, 0xc4, 0xa8, 0xa7, 0x37, + 0x4b, 0x06, 0xa9, 0xa8, 0x0b, 0x03, 0x70, 0x70, 0xca, 0x98, 0x61, 0xc2, + 0xce, 0xd9, 0x39, 0xc9, 0x94, 0x69, 0x38, 0x78, 0xce, 0x58, 0x45, 0x1c, + 0x59, 0x58, 0x76, 0xab, 0x83, 0xb3, 0x04, 0xba, 0xa2, 0x19, 0x7a, 0xc3, + 0xcf, 0x14, 0x71, 0x0c, 0x66, 0x99, 0xba, 0x17, 0xb6, 0x48, 0xe9, 0xc5, + 0x31, 0x89, 0x33, 0x63, 0x31, 0x2d, 0x5e, 0x41, 0x42, 0x8c, 0x9e, 0xb1, + 0x7e, 0xf2, 0xde, 0x48, 0xbb, 0xc4, 0xa0, 0xfb, 0xe3, 0xa7, 0x94, 0xfd, + 0xb1, 0x86, 0xbc, 0xd7, 0xdc, 0x25, 0x1a, 0xc5, 0x66, 0xff, 0x00, 0x19, + 0xf3, 0xfc, 0x57, 0x76, 0xf2, 0x9a, 0xe8, 0xc9, 0xf7, 0xce, 0xbb, 0xaa, + 0xc2, 0x7d, 0x94, 0x7a, 0x51, 0x0a, 0x34, 0xd5, 0x7c, 0x79, 0x68, 0x32, + 0x39, 0x46, 0xaf, 0xf9, 0x5d, 0x98, 0x57, 0x39, 0x20, 0x70, 0xad, 0xd1, + 0xcb, 0xcf, 0xd5, 0x81, 0x31, 0x47, 0x15, 0x29, 0x73, 0xed, 0xac, 0x25, + 0x22, 0xc9, 0xfb, 0x20, 0x5c, 0x29, 0x8b, 0x84, 0x2e, 0xae, 0x6a, 0xec, + 0x72, 0xc3, 0x74, 0x0c, 0xb7, 0x9a, 0x9c, 0x95, 0xf1, 0x8a, 0x81, 0x11, + 0x28, 0x33, 0x10, 0x64, 0x9c, 0xf7, 0x58, 0x41, 0x17, 0x91, 0xbd, 0x4b, + 0xe5, 0x40, 0x5f, 0xdd, 0x06, 0x3c, 0x43, 0xef, 0x01, 0x20, 0x0b, 0xc9, + 0xf2, 0x6e, 0x15, 0x01, 0x32, 0x67, 0x04, 0x48, 0xc0, 0x11, 0x48, 0x1f, + 0x96, 0xff, 0x00, 0x5c, 0xbf, 0x1b, 0xe2, 0x7b, 0x36, 0x88, 0x63, 0xf8, + 0xb0, 0xdd, 0xd2, 0x5b, 0x47, 0xac, 0x91, 0x0f, 0x1f, 0x1d, 0xb5, 0xba, + 0xef, 0x20, 0x8d, 0xaa, 0xbb, 0xac, 0xc7, 0xc5, 0x6b, 0x43, 0xa4, 0x58, + 0xe7, 0xd6, 0x78, 0xba, 0xf9, 0xc3, 0x92, 0x10, 0xcc, 0xdc, 0xa3, 0x2e, + 0x72, 0x72, 0xa2, 0xf8, 0x67, 0x97, 0xea, 0xef, 0xa7, 0x48, 0x68, 0xaa, + 0xa7, 0x7e, 0x2a, 0x67, 0x02, 0x81, 0x6a, 0xe6, 0xb1, 0x56, 0x68, 0xfc, + 0x5f, 0x41, 0x12, 0x94, 0x7a, 0xa2, 0x1d, 0x51, 0x41, 0x44, 0x1e, 0x85, + 0xc9, 0x19, 0x61, 0xe8, 0x38, 0x01, 0x32, 0x79, 0x2a, 0x92, 0x11, 0x08, + 0x36, 0x05, 0xf9, 0xee, 0x8a, 0xae, 0xcd, 0x3d, 0xc6, 0x53, 0x64, 0x6a, + 0xf5, 0x72, 0x7e, 0xf7, 0x57, 0xd2, 0x77, 0xd2, 0xbe, 0x11, 0x9a, 0x7c, + 0x99, 0xfd, 0x83, 0x38, 0x9a, 0xea, 0x1d, 0x61, 0x46, 0xa8, 0x11, 0xb2, + 0x23, 0x1c, 0xfd, 0x66, 0x94, 0x29, 0xcb, 0x9e, 0xf8, 0x57, 0xef, 0x45, + 0x3a, 0x99, 0xf2, 0xa7, 0x1d, 0x03, 0x29, 0x78, 0xc2, 0xa4, 0x72, 0x29, + 0xf5, 0xc7, 0x24, 0x72, 0x84, 0x91, 0xeb, 0x88, 0xad, 0x94, 0x0e, 0xba, + 0xf2, 0x44, 0x9e, 0x53, 0xcd, 0x4d, 0xfa, 0xaa, 0xfc, 0x52, 0xbb, 0xe9, + 0x66, 0x83, 0xb6, 0x6b, 0xa6, 0xca, 0xab, 0xfc, 0xa2, 0xe8, 0x8d, 0x7c, + 0x1b, 0xdb, 0x4f, 0xb6, 0x2a, 0x45, 0xb9, 0x2d, 0x32, 0xc5, 0x72, 0xac, + 0x1d, 0xd0, 0x6b, 0xd3, 0xa8, 0xd8, 0x32, 0xb2, 0x17, 0x9d, 0x2c, 0x85, + 0x63, 0x14, 0xe0, 0x1c, 0x93, 0xaf, 0xb6, 0xa8, 0xfd, 0x6d, 0x4b, 0x26, + 0xbc, 0xcd, 0x0e, 0x0d, 0x7f, 0x9c, 0x7e, 0x54, 0x6f, 0x1d, 0x6b, 0xca, + 0xfd, 0x9a, 0x8c, 0x5e, 0xb6, 0xa0, 0xab, 0xaa, 0xa7, 0x59, 0x20, 0x49, + 0x73, 0x5c, 0xf7, 0x35, 0x05, 0xbb, 0x55, 0x66, 0x9d, 0xc5, 0x55, 0xec, + 0xaa, 0xfa, 0xb9, 0x66, 0x82, 0xcd, 0x34, 0xc2, 0xa2, 0xfb, 0x22, 0x43, + 0x14, 0x62, 0xe8, 0xa3, 0x3b, 0x09, 0x76, 0xe4, 0x15, 0x2d, 0x6f, 0x23, + 0x0a, 0x7e, 0x15, 0x7d, 0xfe, 0x27, 0x65, 0xe5, 0x48, 0xd9, 0x05, 0xdd, + 0x67, 0x8a, 0x8c, 0x94, 0x78, 0x22, 0x8b, 0x1b, 0x25, 0x8c, 0x45, 0x0e, + 0x96, 0xec, 0xf4, 0x6a, 0x6e, 0xaa, 0x3b, 0x2a, 0xf7, 0x76, 0x93, 0x28, + 0xb4, 0xef, 0x89, 0x3a, 0xa7, 0x7e, 0x48, 0x38, 0xf9, 0xf8, 0x75, 0xca, + 0xb0, 0x6f, 0xb4, 0xe0, 0x19, 0xad, 0x50, 0xfd, 0x32, 0xef, 0xf4, 0x86, + 0xbc, 0xf9, 0xa7, 0xbe, 0xab, 0xe9, 0x76, 0x8c, 0x2a, 0xa2, 0xa1, 0xa5, + 0x4e, 0x6b, 0xe5, 0x4c, 0xcd, 0x01, 0x24, 0x2e, 0x22, 0x98, 0x7b, 0x03, + 0x44, 0xb8, 0x8d, 0xec, 0xa5, 0x6b, 0xe8, 0x7a, 0x5a, 0xfc, 0x2d, 0xe0, + 0x54, 0x93, 0xa1, 0x3b, 0x82, 0x38, 0x2d, 0x13, 0xa7, 0xa6, 0xfc, 0x57, + 0xad, 0x10, 0xc9, 0x62, 0x7e, 0x35, 0xf5, 0xff, 0x00, 0x02, 0xff, 0x00, + 0x75, 0xc0, 0xcd, 0x24, 0xdf, 0x77, 0x49, 0xf4, 0x42, 0x55, 0x5d, 0xd7, + 0xe3, 0xdc, 0x6a, 0x6d, 0x24, 0xd9, 0xb4, 0x95, 0x77, 0xe5, 0x05, 0xce, + 0xba, 0xc5, 0x0d, 0x1b, 0xe3, 0xbe, 0x29, 0xd8, 0x6d, 0xb7, 0x7f, 0x0f, + 0xad, 0xe1, 0xf6, 0x69, 0x47, 0xca, 0xbe, 0xb7, 0xad, 0x11, 0x66, 0x86, + 0x55, 0xb2, 0xef, 0x55, 0x7c, 0x97, 0x8d, 0x3a, 0x2b, 0xe3, 0xa0, 0xf3, + 0xd1, 0x0a, 0xaf, 0xa4, 0xe9, 0xbb, 0xa3, 0x88, 0xa8, 0xa2, 0x6b, 0x60, + 0xde, 0xa4, 0x88, 0x08, 0xb0, 0x29, 0x7a, 0x35, 0x30, 0x64, 0xe1, 0x5f, + 0x97, 0xa6, 0x09, 0x96, 0xea, 0xec, 0xd0, 0x4e, 0xa7, 0x92, 0x1f, 0x05, + 0x0e, 0x00, 0xe0, 0xcd, 0x42, 0xae, 0x5a, 0xb9, 0x15, 0xd1, 0x64, 0xbb, + 0xcf, 0xe1, 0x7c, 0x06, 0xd7, 0xc6, 0xcb, 0x72, 0xda, 0xf9, 0xba, 0x9d, + 0x17, 0x83, 0x34, 0x39, 0xd4, 0x55, 0x6c, 0xf0, 0x4f, 0x1c, 0x41, 0x57, + 0xb8, 0xe7, 0x9f, 0xc5, 0xeb, 0x1f, 0x3d, 0x14, 0x3e, 0x6e, 0x9d, 0x54, + 0x14, 0x8d, 0xc0, 0x41, 0x4e, 0xbe, 0x6e, 0x40, 0x9e, 0xdd, 0x51, 0x36, + 0x95, 0x51, 0x45, 0xb5, 0x64, 0x86, 0xf3, 0x24, 0x58, 0x3e, 0x94, 0xe8, + 0x94, 0x7e, 0xf6, 0x86, 0x7a, 0x65, 0x39, 0x15, 0x29, 0x48, 0x5b, 0x77, + 0xe0, 0xa4, 0xa2, 0xb2, 0x17, 0x7a, 0xc2, 0x91, 0x77, 0xa9, 0x1b, 0x0e, + 0x09, 0xbb, 0x1d, 0x2c, 0x8a, 0xf8, 0x4e, 0xd7, 0x1a, 0xcd, 0x55, 0x60, + 0x9f, 0xb4, 0x68, 0x2b, 0xe8, 0x2e, 0xd2, 0x8c, 0x32, 0x52, 0xe8, 0xe6, + 0xa7, 0xa6, 0xdb, 0xb1, 0x1d, 0x4a, 0x6e, 0xa5, 0x65, 0x4e, 0x65, 0x9f, + 0x0e, 0x07, 0x3d, 0x8c, 0x38, 0x18, 0x92, 0x05, 0x48, 0x13, 0x5b, 0x92, + 0xa6, 0x22, 0x01, 0x56, 0x80, 0x9e, 0x21, 0x8a, 0x81, 0xa6, 0xd5, 0x66, + 0xc8, 0xa6, 0x4a, 0x67, 0x09, 0x82, 0x9d, 0x0c, 0x94, 0x79, 0xa4, 0x16, + 0x69, 0x01, 0x4e, 0x2f, 0x3d, 0x12, 0x6b, 0x38, 0x9b, 0x22, 0xbc, 0x59, + 0x07, 0x50, 0x4c, 0x7c, 0x07, 0xe9, 0xcd, 0xd1, 0xf4, 0xad, 0x83, 0x8a, + 0xd9, 0x5d, 0x3a, 0xaf, 0xa4, 0x7b, 0xeb, 0x97, 0x3e, 0x88, 0xf4, 0xa9, + 0xe0, 0x13, 0xc3, 0x11, 0xf3, 0xfc, 0x17, 0xb4, 0x96, 0x34, 0xca, 0xe5, + 0xcf, 0x81, 0x2f, 0xae, 0x28, 0xcf, 0xca, 0x21, 0xa3, 0x89, 0x10, 0x55, + 0x7d, 0x64, 0xaa, 0xb7, 0x4f, 0x55, 0x9e, 0x2b, 0x6e, 0x7f, 0xc4, 0x9f, + 0xe0, 0x07, 0xc2, 0x47, 0x13, 0x9f, 0x6b, 0x5f, 0x99, 0x5d, 0x18, 0xce, + 0xaf, 0x0a, 0xa1, 0x3b, 0x95, 0x57, 0xda, 0x87, 0x4b, 0xf0, 0x4f, 0x87, + 0xd7, 0xef, 0xbf, 0x7e, 0x7d, 0x97, 0x7b, 0x33, 0xb0, 0xd7, 0x07, 0xeb, + 0x58, 0x9b, 0x19, 0x21, 0xba, 0x5a, 0x42, 0xaf, 0xc0, 0xa8, 0xee, 0xa8, + 0x79, 0x8a, 0x35, 0xd2, 0x8a, 0x94, 0xeb, 0x5f, 0xe0, 0x47, 0x9f, 0xa3, + 0x33, 0xc1, 0xf5, 0xf3, 0x2f, 0xd2, 0x45, 0xf3, 0xbb, 0x94, 0x3e, 0x54, + 0x58, 0x63, 0x55, 0xe5, 0x39, 0xd5, 0x39, 0x8e, 0xdc, 0x98, 0x78, 0xfd, + 0xf7, 0xee, 0xf6, 0x08, 0x5b, 0x4b, 0x82, 0xcf, 0x80, 0x3a, 0x6a, 0x5e, + 0x15, 0xe7, 0xa6, 0xea, 0x40, 0x02, 0x8d, 0xd3, 0x53, 0xeb, 0xa8, 0xae, + 0x4a, 0xfa, 0xca, 0xbb, 0x7f, 0x00, 0x0c, 0xc9, 0xec, 0xf2, 0xa3, 0x98, + 0x39, 0x6c, 0xb2, 0xe0, 0x05, 0x5b, 0xb3, 0x76, 0xb2, 0x63, 0xde, 0xb2, + 0x9a, 0xc8, 0xd7, 0xec, 0x57, 0xcb, 0x64, 0x61, 0xd9, 0x4f, 0x2f, 0x7e, + 0x14, 0x0a, 0x05, 0xe6, 0xb4, 0x4e, 0xf9, 0x22, 0xd0, 0xaa, 0x3d, 0x91, + 0xbf, 0x00, 0x01, 0xa7, 0x7f, 0xf9, 0xeb, 0x65, 0x50, 0x58, 0x57, 0x35, + 0x0a, 0xda, 0xc0, 0x4c, 0xbc, 0xf9, 0xfe, 0x0e, 0x04, 0x06, 0xc3, 0x9c, + 0x1e, 0xe4, 0x45, 0x90, 0x59, 0x7c, 0xb0, 0x4f, 0x74, 0xbe, 0x7f, 0x11, + 0xde, 0xee, 0x9e, 0x56, 0x4e, 0x2a, 0xe4, 0x2e, 0xce, 0xed, 0x7f, 0x82, + 0x78, 0xa8, 0x52, 0xa6, 0x82, 0x5f, 0xb8, 0x34, 0x46, 0x4d, 0xee, 0xaa, + 0x3f, 0x16, 0x74, 0x6b, 0xc4, 0x13, 0x92, 0xe3, 0xa1, 0x0a, 0xf3, 0xcb, + 0x5a, 0xf2, 0x9a, 0xaa, 0xb3, 0x58, 0x50, 0xac, 0x7f, 0x80, 0x93, 0xd0, + 0x83, 0x89, 0xc1, 0xf1, 0xfe, 0x02, 0x92, 0xe2, 0x83, 0x8e, 0x42, 0xb7, + 0x4f, 0x2f, 0xd2, 0x7e, 0x94, 0xbe, 0x25, 0x9a, 0xdb, 0x44, 0xd9, 0x7f, + 0x01, 0x8a, 0x86, 0x04, 0x19, 0x7d, 0x89, 0xbe, 0x57, 0x03, 0x83, 0x92, + 0xe8, 0xf7, 0xc4, 0x83, 0x57, 0x49, 0xef, 0x75, 0xde, 0xbf, 0x51, 0x6f, + 0x8f, 0x1f, 0x68, 0xe9, 0xbd, 0x49, 0x45, 0xa3, 0xcd, 0xf4, 0xd7, 0xdf, + 0x99, 0x67, 0x4e, 0xc0, 0x58, 0x3d, 0x96, 0x6a, 0xf4, 0xe0, 0xec, 0xed, + 0x44, 0xd8, 0x47, 0xe5, 0x5e, 0x25, 0x5e, 0x54, 0x80, 0xbf, 0x25, 0x11, + 0xf1, 0x15, 0xd1, 0x9b, 0xab, 0xfb, 0xf1, 0x05, 0x9c, 0x54, 0x02, 0xe4, + 0x0a, 0x3e, 0x08, 0x6d, 0x0f, 0xe4, 0x71, 0x20, 0xae, 0xf7, 0xd3, 0xce, + 0xc7, 0xe9, 0x4e, 0x6b, 0xe5, 0x73, 0xc7, 0xc4, 0x13, 0xc2, 0xbc, 0x7f, + 0x03, 0xcc, 0xb0, 0x88, 0x86, 0xf4, 0x7c, 0x14, 0xfa, 0xed, 0x2a, 0xd6, + 0x81, 0x91, 0xe6, 0x9d, 0xa4, 0x9e, 0x07, 0xb5, 0xca, 0x81, 0xf3, 0xf4, + 0xaa, 0xe9, 0xff, 0x00, 0x02, 0xae, 0x9d, 0x39, 0x60, 0x01, 0x13, 0xe8, + 0x07, 0x81, 0x19, 0x35, 0xa4, 0x56, 0x65, 0x5d, 0x57, 0x6f, 0x3f, 0x5f, + 0x61, 0x3c, 0x54, 0xbf, 0x81, 0x0d, 0x78, 0xd0, 0x28, 0x39, 0x12, 0x58, + 0xfd, 0x79, 0x96, 0x8a, 0xe2, 0x7a, 0x18, 0x14, 0x96, 0xf5, 0xf7, 0xfc, + 0x3a, 0xe5, 0x6e, 0x2c, 0x54, 0x14, 0xdd, 0xde, 0x27, 0x35, 0xd9, 0x0a, + 0xeb, 0x1b, 0xdf, 0x82, 0xd8, 0x18, 0xac, 0x49, 0xeb, 0x7e, 0xde, 0x07, + 0xb2, 0x55, 0xd2, 0x70, 0xfa, 0x2b, 0xe3, 0xf8, 0x23, 0xb7, 0xd8, 0x3f, + 0x60, 0x7e, 0x61, 0x45, 0x0b, 0x3b, 0x81, 0x43, 0xaa, 0xe0, 0xfe, 0x21, + 0x3b, 0x26, 0x08, 0x59, 0xe9, 0xb4, 0xc4, 0xd1, 0x3a, 0x70, 0xfd, 0x7a, + 0x9b, 0x2a, 0x66, 0xa7, 0xf0, 0xff, 0x00, 0x8c, 0x8d, 0xa7, 0x22, 0xf6, + 0x04, 0xf9, 0x6a, 0x0b, 0x80, 0xea, 0xae, 0xc7, 0xe5, 0x47, 0xb5, 0x9a, + 0x7d, 0xeb, 0x65, 0x42, 0xaa, 0x3e, 0xfd, 0x96, 0xd9, 0x1e, 0xab, 0xe6, + 0xc2, 0x38, 0x8d, 0x99, 0x2f, 0xc5, 0x97, 0xec, 0xa2, 0xeb, 0x1d, 0xbf, + 0x81, 0xf8, 0x58, 0x49, 0x75, 0x7c, 0x99, 0x8a, 0x79, 0x5f, 0x55, 0xa2, + 0x7c, 0x03, 0x15, 0x1c, 0x15, 0xf3, 0x64, 0x6d, 0xae, 0xbe, 0xfc, 0x66, + 0x57, 0x28, 0x95, 0x6f, 0x60, 0x5a, 0x9c, 0x1c, 0x98, 0x96, 0xbd, 0x26, + 0x27, 0x55, 0x55, 0xb5, 0xb5, 0x5b, 0x7b, 0xf2, 0x80, 0x47, 0xb5, 0x88, + 0xb0, 0x93, 0xf0, 0x4d, 0x04, 0x96, 0x9b, 0x87, 0xed, 0x77, 0x57, 0xaf, + 0x85, 0x55, 0x82, 0xcf, 0xdf, 0x8c, 0x28, 0x62, 0x52, 0x10, 0xab, 0xf5, + 0x44, 0x4f, 0x65, 0x70, 0x5f, 0x14, 0xf3, 0xac, 0x87, 0xa0, 0x75, 0xfe, + 0x03, 0x1c, 0xf6, 0xe4, 0x9c, 0xbe, 0xfb, 0x42, 0xf9, 0x17, 0x02, 0xbd, + 0x64, 0xaf, 0x9c, 0xc6, 0x8e, 0xf6, 0x55, 0x54, 0x97, 0xe7, 0xf0, 0x7a, + 0x14, 0x54, 0xaa, 0xaa, 0x75, 0x81, 0xa2, 0x06, 0x21, 0x49, 0x46, 0xf9, + 0x6f, 0x70, 0x75, 0x69, 0xdb, 0x75, 0x27, 0x4b, 0x3c, 0xff, 0x00, 0x84, + 0x12, 0x06, 0x8b, 0xb2, 0x89, 0x04, 0x73, 0x20, 0xb4, 0xea, 0x89, 0x73, + 0x16, 0xd4, 0x67, 0x43, 0xf5, 0xd2, 0xc0, 0xdc, 0xbb, 0xd6, 0x84, 0x7b, + 0x47, 0x8a, 0xb9, 0x65, 0xdf, 0xf8, 0x51, 0x35, 0x14, 0x53, 0x44, 0xd3, + 0x4d, 0x44, 0x93, 0x49, 0x25, 0x14, 0x4d, 0x34, 0xd3, 0x4d, 0x34, 0xd3, + 0x4d, 0x24, 0xd3, 0x51, 0x28, 0x0a, 0x06, 0x9d, 0x03, 0x04, 0x68, 0x14, + 0x50, 0x30, 0xe7, 0x80, 0xb5, 0x12, 0x70, 0x87, 0x6f, 0xd9, 0xeb, 0x61, + 0x10, 0x09, 0xcc, 0x63, 0x92, 0x18, 0xf9, 0x8d, 0x95, 0x95, 0x5e, 0x55, + 0x6e, 0xab, 0x3e, 0x1f, 0xdf, 0xa9, 0xfd, 0x38, 0x70, 0x01, 0x64, 0x56, + 0x05, 0x60, 0x0d, 0x88, 0x33, 0x70, 0x8e, 0x59, 0xcd, 0xba, 0x22, 0x35, + 0x40, 0x91, 0xcc, 0x38, 0xea, 0xe5, 0xeb, 0x34, 0xb0, 0x7d, 0xb7, 0x31, + 0xda, 0x84, 0x0b, 0xdd, 0x82, 0x61, 0x8d, 0xe5, 0xa4, 0x55, 0x8a, 0x3e, + 0x89, 0x70, 0x65, 0xc0, 0x3c, 0x4b, 0xd0, 0x28, 0x14, 0x68, 0x1b, 0x0b, + 0x8d, 0x13, 0x83, 0xf3, 0xbf, 0xd3, 0x9c, 0x8a, 0x29, 0x11, 0x4c, 0x03, + 0xb1, 0x5b, 0xfa, 0xe2, 0x32, 0x58, 0x88, 0xbf, 0xf3, 0x9c, 0x86, 0x03, + 0xb9, 0x6f, 0x7c, 0xc8, 0x8e, 0xa7, 0x85, 0x57, 0xd7, 0x1c, 0x70, 0x7e, + 0xec, 0x04, 0xa0, 0x6c, 0x01, 0x44, 0xd7, 0xc1, 0x69, 0x78, 0x34, 0x51, + 0x39, 0xed, 0x0a, 0x6c, 0x63, 0x4e, 0xf0, 0xc1, 0x74, 0x4d, 0xe4, 0xfa, + 0xcb, 0x77, 0x38, 0x33, 0x76, 0x67, 0xe4, 0x8f, 0xb8, 0xc3, 0x85, 0xf0, + 0x8f, 0xb5, 0xbf, 0x7c, 0x0c, 0x7d, 0x06, 0xef, 0x40, 0x28, 0x14, 0x0f, + 0xc7, 0x44, 0x02, 0xf2, 0x8b, 0x3c, 0x8f, 0x70, 0x1c, 0xea, 0x55, 0x40, + 0xc8, 0xe7, 0x08, 0x61, 0x37, 0x01, 0xdf, 0xd7, 0x1f, 0x84, 0x3c, 0x03, + 0x38, 0x20, 0x40, 0x48, 0x20, 0xc0, 0x88, 0x22, 0x00, 0x53, 0x51, 0x34, + 0x61, 0x70, 0x53, 0xbc, 0x2f, 0x29, 0x8a, 0x46, 0x6f, 0x78, 0x0e, 0x84, + 0x31, 0x1a, 0xfb, 0xab, 0x94, 0x7d, 0x5d, 0x7d, 0x00, 0xa1, 0x81, 0x76, + 0x1d, 0x02, 0x23, 0xb8, 0x76, 0x3a, 0x79, 0x67, 0x22, 0x44, 0x24, 0x18, + 0xe2, 0xb9, 0xc4, 0x04, 0xc3, 0x82, 0x00, 0x01, 0x80, 0x10, 0x00, 0x08, + 0x00, 0x20, 0x07, 0x01, 0xd6, 0x7e, 0x10, 0x60, 0x64, 0xd8, 0x30, 0xce, + 0xaf, 0xe0, 0x54, 0x16, 0x19, 0xdd, 0x77, 0x7b, 0x62, 0xb7, 0x7b, 0xaa, + 0xa8, 0xfa, 0xea, 0xae, 0xb0, 0xad, 0x77, 0x41, 0x12, 0x6b, 0x2e, 0x4f, + 0x63, 0x9a, 0xc5, 0x7c, 0x08, 0x91, 0x14, 0x68, 0x70, 0x22, 0xaf, 0x10, + 0x38, 0xe3, 0x81, 0xd8, 0xe0, 0x4f, 0x10, 0x46, 0x2c, 0xc0, 0x8c, 0x03, + 0xc8, 0x66, 0x02, 0x18, 0xc3, 0x91, 0xba, 0x5c, 0x80, 0x63, 0xf6, 0x9a, + 0xfb, 0xb6, 0xb3, 0xf4, 0x3e, 0x1e, 0x8a, 0xaa, 0x9a, 0xfb, 0x5d, 0xbd, + 0x15, 0x55, 0xb2, 0x05, 0x30, 0x46, 0xbc, 0xcd, 0xb3, 0xd5, 0x07, 0x20, + 0x53, 0x6d, 0x94, 0x88, 0x74, 0xe3, 0x76, 0x5f, 0x32, 0x78, 0x22, 0xd0, + 0x40, 0x8b, 0x84, 0x40, 0x9d, 0xa0, 0x48, 0x14, 0x67, 0x53, 0xb7, 0x18, + 0x71, 0x91, 0x15, 0x30, 0xe2, 0xf1, 0x25, 0x7c, 0xe0, 0x0b, 0x13, 0xa8, + 0x4b, 0xdd, 0xfe, 0x2d, 0x54, 0x14, 0x6c, 0xae, 0x7e, 0x9c, 0x67, 0x83, + 0x0e, 0xd4, 0x17, 0x20, 0x84, 0x96, 0x2c, 0x48, 0x9c, 0xb9, 0x89, 0xf6, + 0xc1, 0x70, 0x2e, 0x21, 0x84, 0x08, 0x70, 0xc4, 0x01, 0x5a, 0x00, 0x03, + 0x84, 0x41, 0x7d, 0x47, 0x24, 0xe6, 0x0f, 0x79, 0x40, 0x32, 0x28, 0xa1, + 0xc3, 0xc8, 0xef, 0x23, 0xc6, 0x55, 0x56, 0x96, 0x37, 0x07, 0x1c, 0x3d, + 0x1d, 0xb8, 0x11, 0x41, 0x83, 0x88, 0x44, 0x8c, 0x04, 0x7c, 0x19, 0x9c, + 0xc5, 0x42, 0x07, 0x38, 0x50, 0x8a, 0x48, 0x5e, 0x8e, 0x1e, 0x0d, 0x41, + 0x80, 0xdb, 0x00, 0x4b, 0xc4, 0x01, 0x35, 0xc1, 0x2a, 0x6c, 0x44, 0x80, + 0x09, 0x79, 0x74, 0x1c, 0x4a, 0x20, 0x58, 0xba, 0x02, 0x79, 0x33, 0x11, + 0x88, 0xd8, 0x83, 0xc6, 0x7f, 0x4e, 0x96, 0xd5, 0x7c, 0xdb, 0x55, 0x5d, + 0x7d, 0x35, 0x57, 0xd9, 0xb5, 0xa2, 0x4c, 0x86, 0x49, 0x90, 0xc6, 0xe5, + 0x97, 0x32, 0x79, 0x68, 0xd6, 0x02, 0x3c, 0x81, 0x16, 0x75, 0x07, 0xcb, + 0xf4, 0x72, 0x70, 0x98, 0x0a, 0x8c, 0xd7, 0x40, 0x71, 0x1a, 0x30, 0xc3, + 0x58, 0xb4, 0xb0, 0x13, 0x0e, 0x61, 0xa0, 0xe9, 0x33, 0x96, 0x03, 0xe0, + 0x1d, 0x1e, 0xf2, 0xed, 0xdc, 0x5d, 0x2d, 0xbe, 0xca, 0xd2, 0xda, 0xaa, + 0x87, 0xa6, 0xab, 0x6e, 0x0b, 0x98, 0x9c, 0x20, 0x1e, 0x45, 0xfe, 0x8b, + 0x24, 0x84, 0x65, 0xc1, 0x8e, 0x08, 0xd8, 0x26, 0x06, 0x1d, 0x83, 0x07, + 0x8b, 0x80, 0x36, 0x1c, 0x70, 0xe1, 0x22, 0xd7, 0xa4, 0x28, 0x4d, 0x22, + 0x41, 0x09, 0xb2, 0x02, 0x33, 0x80, 0x26, 0x26, 0x0c, 0x40, 0xba, 0x69, + 0x7b, 0xfa, 0xaf, 0x2a, 0xb9, 0xfc, 0xd8, 0xd5, 0xaa, 0x7d, 0x89, 0x86, + 0x46, 0x80, 0x08, 0x92, 0x10, 0x44, 0xc8, 0x84, 0xd4, 0x52, 0x10, 0x8c, + 0x06, 0x77, 0xae, 0x70, 0x78, 0x12, 0x2f, 0x71, 0x45, 0x23, 0xd9, 0x46, + 0xa4, 0x9e, 0x43, 0x00, 0xe4, 0xc1, 0x40, 0x86, 0xd2, 0x81, 0x2d, 0x28, + 0x3c, 0xb5, 0xc5, 0x07, 0x0b, 0x97, 0x02, 0x4f, 0xe8, 0xac, 0x2c, 0xf1, + 0xe8, 0x3e, 0x99, 0xf0, 0xd0, 0x89, 0x2e, 0xdb, 0x0b, 0xd0, 0x84, 0xcc, + 0x77, 0x89, 0x8c, 0x41, 0x7d, 0x94, 0x75, 0xa2, 0x6e, 0x31, 0xe6, 0x9a, + 0xe4, 0x20, 0xd8, 0x13, 0x07, 0x20, 0xa0, 0x02, 0x01, 0x38, 0xb1, 0x1d, + 0x8d, 0x48, 0xe4, 0x71, 0x53, 0xb2, 0xaa, 0xff, 0x00, 0x55, 0x57, 0x9b, + 0x39, 0x7b, 0x61, 0x94, 0x0c, 0x18, 0xf3, 0x0d, 0xee, 0xb7, 0x1a, 0x75, + 0x6b, 0x37, 0x54, 0x77, 0x01, 0xca, 0x04, 0x4a, 0x0b, 0x8e, 0x04, 0xc1, + 0x10, 0x00, 0x01, 0x88, 0x0c, 0x08, 0x22, 0x04, 0x18, 0x10, 0x82, 0x8c, + 0xcf, 0x10, 0x7e, 0x42, 0xd3, 0x45, 0x12, 0x22, 0x83, 0x47, 0x31, 0xde, + 0xc9, 0x03, 0x37, 0xf2, 0x57, 0xd2, 0xe9, 0xe9, 0xaa, 0xa7, 0xf4, 0x55, + 0x6f, 0xec, 0xf6, 0xaa, 0xfd, 0x4e, 0x08, 0x71, 0x3c, 0x8c, 0x86, 0xf6, + 0xca, 0x51, 0xda, 0xd0, 0xfa, 0x28, 0xe9, 0x3b, 0x00, 0x61, 0xc5, 0x84, + 0x1b, 0xea, 0x00, 0xd8, 0x0f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0d, + 0xec, 0x09, 0x3d, 0x47, 0xad, 0x5a, 0x19, 0x32, 0x38, 0x16, 0x1d, 0x01, + 0x1c, 0x78, 0xec, 0x4c, 0x9c, 0x31, 0xe8, 0x0f, 0x42, 0xb6, 0x5a, 0x7a, + 0xb5, 0xf6, 0x83, 0x1d, 0x68, 0x43, 0x85, 0x68, 0x98, 0x59, 0x60, 0x8e, + 0x60, 0x41, 0x86, 0x4c, 0xc3, 0x28, 0x5e, 0xc5, 0xfc, 0xb6, 0xba, 0x08, + 0xa1, 0x78, 0x28, 0x81, 0x0c, 0x20, 0x8e, 0xcb, 0xc7, 0xcd, 0xc6, 0x47, + 0x55, 0xc9, 0x14, 0xcb, 0xb3, 0xc4, 0x73, 0x47, 0xca, 0x2b, 0x9c, 0x5a, + 0xaa, 0xc6, 0xc3, 0xee, 0x0a, 0x06, 0x4f, 0x1a, 0xb7, 0x28, 0x06, 0xcc, + 0x40, 0x74, 0xd6, 0xa0, 0xbb, 0xb7, 0x0f, 0xaf, 0x53, 0xd7, 0x5a, 0xe2, + 0xb0, 0x92, 0xed, 0x29, 0xf6, 0x15, 0xb8, 0x1e, 0xc8, 0xd0, 0x6f, 0xc7, + 0xc1, 0x60, 0x41, 0x62, 0x8d, 0xc6, 0x91, 0x08, 0x03, 0x5d, 0x54, 0xf9, + 0x5f, 0x20, 0x4b, 0xbd, 0xe5, 0x3a, 0x10, 0xf3, 0x3a, 0x1d, 0x71, 0xfc, + 0x2f, 0x98, 0x25, 0xe8, 0xef, 0x34, 0xc0, 0xce, 0x41, 0x7c, 0x07, 0x87, + 0x02, 0x59, 0xa3, 0x7b, 0x20, 0x60, 0x70, 0x5f, 0x25, 0xa5, 0xc4, 0x22, + 0x1d, 0xc3, 0x10, 0x13, 0x51, 0x0a, 0xd4, 0x07, 0x34, 0x1c, 0x5b, 0x2f, + 0x01, 0xd8, 0x2c, 0xe4, 0x86, 0x34, 0x77, 0x8a, 0x39, 0xb8, 0xf7, 0x79, + 0xe9, 0xcc, 0x18, 0xed, 0x49, 0x89, 0x60, 0x8c, 0x04, 0x5c, 0x29, 0xae, + 0x83, 0x01, 0xc4, 0x05, 0xd0, 0x80, 0xcd, 0x1e, 0xed, 0x95, 0x1a, 0xf9, + 0x31, 0x2c, 0xe4, 0x93, 0xed, 0x23, 0x80, 0xa6, 0xb7, 0x42, 0x02, 0x5d, + 0x20, 0x10, 0x06, 0x05, 0x98, 0x04, 0x30, 0xcd, 0xe4, 0x81, 0xdd, 0xe4, + 0x46, 0xef, 0x76, 0x10, 0x66, 0x78, 0x3f, 0x52, 0x76, 0xf9, 0x62, 0x22, + 0xb7, 0x8c, 0x36, 0xc4, 0xa1, 0x8e, 0x20, 0xf0, 0x01, 0x0f, 0x13, 0xed, + 0x27, 0x48, 0xf5, 0x80, 0x78, 0x82, 0x06, 0x48, 0xc0, 0x01, 0x50, 0x42, + 0x5b, 0x41, 0x18, 0xc9, 0x3c, 0x5e, 0x06, 0x23, 0x31, 0x63, 0xf6, 0x11, + 0x63, 0xdc, 0x0b, 0x8b, 0xbd, 0x85, 0x7e, 0xaa, 0xaa, 0xeb, 0xe9, 0xaa, + 0xa6, 0xb6, 0x12, 0xdd, 0x68, 0x6d, 0x49, 0x89, 0x60, 0x81, 0x7b, 0x6a, + 0x6c, 0x12, 0xc0, 0xec, 0xd4, 0x10, 0x86, 0x66, 0x47, 0x12, 0xe2, 0x07, + 0x79, 0x3a, 0x33, 0x46, 0x24, 0x3e, 0xda, 0x01, 0x3a, 0x5d, 0x3d, 0x2c, + 0x44, 0xa5, 0xc0, 0x1a, 0x15, 0x90, 0x47, 0xa1, 0x48, 0x9c, 0xa3, 0xdd, + 0xc0, 0x8b, 0xbd, 0xc8, 0x03, 0xd8, 0x06, 0x2d, 0xc0, 0xd0, 0x7d, 0x18, + 0x9a, 0x70, 0x5a, 0x05, 0x97, 0x11, 0x6c, 0x23, 0x28, 0x20, 0x88, 0x86, + 0xde, 0xdb, 0x00, 0xfe, 0x42, 0x9a, 0x61, 0x5b, 0xc8, 0x8a, 0x07, 0xca, + 0x4d, 0x18, 0x40, 0x80, 0x4a, 0xf7, 0x8c, 0x1e, 0xa3, 0xa9, 0x85, 0xc8, + 0xe2, 0x8b, 0x99, 0x80, 0x7a, 0x1d, 0xbd, 0xb6, 0x08, 0x03, 0x77, 0x16, + 0x59, 0xa3, 0xd6, 0xe1, 0x98, 0x23, 0xb4, 0x43, 0x0f, 0x22, 0x22, 0x14, + 0x8e, 0x43, 0x22, 0xe4, 0xc2, 0xb1, 0x9c, 0xfa, 0xf4, 0x00, 0xf7, 0x17, + 0xd2, 0xad, 0xca, 0xbc, 0x98, 0xe3, 0x94, 0x58, 0x06, 0x50, 0x1a, 0x87, + 0x09, 0x43, 0x12, 0x1c, 0x49, 0x60, 0x01, 0x32, 0xf0, 0x50, 0x24, 0x06, + 0x04, 0x12, 0xf5, 0x86, 0x93, 0x19, 0x7b, 0x5a, 0xe8, 0x86, 0x30, 0xc1, + 0x1b, 0xdc, 0xe2, 0x6e, 0xea, 0x01, 0x92, 0x33, 0x67, 0xd5, 0x92, 0x7c, + 0x90, 0x44, 0xb9, 0x00, 0x17, 0xdc, 0x83, 0xdb, 0x86, 0x3a, 0xbb, 0xc1, + 0x06, 0x10, 0x42, 0x0c, 0x0a, 0x75, 0x78, 0xdc, 0x26, 0x5d, 0xa3, 0xb6, + 0x10, 0x60, 0x79, 0x60, 0x39, 0x09, 0x7e, 0x99, 0xe0, 0x0a, 0x38, 0xfb, + 0x56, 0x01, 0xc9, 0x1e, 0x86, 0xef, 0x23, 0x9b, 0x8a, 0x12, 0x84, 0x0a, + 0x48, 0xa0, 0x00, 0x31, 0x63, 0x06, 0x7a, 0xa6, 0x1e, 0xb8, 0x3e, 0x50, + 0xc0, 0x05, 0x88, 0x02, 0x00, 0xc3, 0xdd, 0x45, 0xdc, 0x8b, 0x3c, 0x43, + 0x02, 0x00, 0xda, 0x20, 0xec, 0x1f, 0x29, 0xd8, 0x03, 0x9c, 0x42, 0x35, + 0xe6, 0xb8, 0x03, 0xcc, 0x91, 0x4a, 0xb6, 0x61, 0x26, 0x01, 0x04, 0x8b, + 0x80, 0x46, 0x44, 0x70, 0x7b, 0xf0, 0xab, 0x34, 0x06, 0x78, 0x62, 0x04, + 0x5c, 0x8e, 0x80, 0xc7, 0x36, 0x24, 0x4b, 0xc1, 0x0b, 0x5c, 0xed, 0x99, + 0x78, 0x06, 0x23, 0x2f, 0xbb, 0x9d, 0x45, 0xa7, 0x40, 0x40, 0xc0, 0xda, + 0x10, 0x00, 0x44, 0x95, 0xa1, 0x5c, 0xe0, 0x69, 0x02, 0x3b, 0x51, 0x02, + 0xf2, 0x30, 0x03, 0xb6, 0x55, 0x46, 0xda, 0xaa, 0x7f, 0x45, 0x63, 0x61, + 0xb2, 0xbf, 0x7d, 0x50, 0x4e, 0x41, 0xbc, 0xba, 0x93, 0x48, 0xc9, 0x90, + 0x26, 0x09, 0x47, 0x2f, 0x0e, 0x5d, 0xa0, 0x88, 0x92, 0x7b, 0xd0, 0x29, + 0x71, 0x30, 0x80, 0xe0, 0x8d, 0x8a, 0x10, 0x0e, 0x13, 0x06, 0x5f, 0x0b, + 0xc6, 0xd1, 0x02, 0x03, 0x93, 0x23, 0xa3, 0x34, 0x88, 0xb0, 0x31, 0x62, + 0xf3, 0x6f, 0x32, 0x64, 0x8e, 0x02, 0xa3, 0x68, 0x55, 0x92, 0xae, 0xde, + 0x87, 0xfd, 0x38, 0x15, 0x00, 0x26, 0x4c, 0x80, 0x74, 0x0b, 0x13, 0x30, + 0x7c, 0x48, 0xbd, 0x12, 0x20, 0x71, 0x65, 0x05, 0x2d, 0xb8, 0x89, 0xc4, + 0x33, 0x6b, 0x0d, 0x37, 0x07, 0xde, 0xbc, 0x69, 0x7b, 0x44, 0x49, 0x38, + 0x91, 0xc2, 0x8a, 0xf1, 0xce, 0x84, 0x19, 0x0b, 0x4c, 0xef, 0x06, 0x4b, + 0x39, 0x04, 0x1d, 0xc6, 0x01, 0xa3, 0xc0, 0x91, 0x03, 0xa4, 0x5a, 0x44, + 0x38, 0x80, 0x88, 0xa6, 0x43, 0x5b, 0x5c, 0xd4, 0x6d, 0xe6, 0xaa, 0xa0, + 0x9b, 0x2b, 0x63, 0x85, 0x6c, 0xb0, 0xf9, 0xef, 0x8a, 0xd9, 0x15, 0x63, + 0x1c, 0x4d, 0xce, 0xa1, 0x91, 0x20, 0xb4, 0x81, 0x92, 0x21, 0x28, 0x11, + 0x82, 0x24, 0xf7, 0x33, 0x8b, 0x44, 0xcf, 0x20, 0x82, 0xc4, 0x0d, 0xe8, + 0x68, 0x34, 0x6c, 0x28, 0x4a, 0x44, 0xf7, 0xe5, 0xde, 0x13, 0xb7, 0xd1, + 0x23, 0xa4, 0xb8, 0x97, 0xa4, 0x4a, 0x20, 0x82, 0xc9, 0x81, 0x4f, 0xcc, + 0xf4, 0xb7, 0x49, 0x8a, 0x12, 0x44, 0xc0, 0x27, 0x13, 0x35, 0xc2, 0x9e, + 0x8f, 0x28, 0x76, 0x53, 0xe4, 0x1e, 0x80, 0x17, 0x18, 0x5d, 0xc3, 0x23, + 0xd2, 0x44, 0x8b, 0xae, 0x4c, 0xde, 0xfe, 0x55, 0x05, 0x07, 0x86, 0x02, + 0x13, 0x94, 0xdc, 0x91, 0x29, 0x88, 0x78, 0x17, 0x10, 0x77, 0xfe, 0x2d, + 0x06, 0x52, 0xb8, 0x52, 0x2b, 0x58, 0x86, 0x60, 0x9c, 0xa4, 0xef, 0xe1, + 0xfe, 0x32, 0x48, 0x87, 0x13, 0x84, 0xe2, 0x49, 0x04, 0xe7, 0xc5, 0x12, + 0x3f, 0x36, 0x6d, 0xfd, 0xbb, 0x76, 0x25, 0xd8, 0xb1, 0x6a, 0x41, 0xee, + 0x08, 0xa8, 0x1f, 0xf0, 0xbf, 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x8d, 0x9d, 0xa6, 0xd3, + 0x6e, 0xd2, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xde, + 0xf5, 0x5e, 0x01, 0x16, 0x10, 0x01, 0x24, 0x18, 0x48, 0x03, 0x8f, 0x44, + 0xc0, 0x60, 0x00, 0x00, 0x00, 0xb8, 0x06, 0x59, 0xc0, 0x35, 0x20, 0x08, + 0x00, 0x92, 0x49, 0x64, 0x12, 0x40, 0x04, 0x80, 0x90, 0x00, 0x00, 0x21, + 0x01, 0xa4, 0xc8, 0x20, 0x92, 0x09, 0x04, 0x90, 0x48, 0x04, 0x12, 0x48, + 0x00, 0x10, 0x4e, 0xf8, 0x00, 0x01, 0x24, 0x92, 0x40, 0x00, 0x92, 0x48, + 0x00, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x80, 0x01, 0x05, 0x80, 0x00, + 0x06, 0x90, 0x48, 0x20, 0x02, 0x00, 0x20, 0x10, 0x08, 0x24, 0x12, 0x49, + 0x24, 0x90, 0x49, 0x20, 0x16, 0x00, 0x00, 0x16, 0x08, 0x26, 0x02, 0x41, + 0x60, 0x00, 0x00, 0x04, 0x92, 0x01, 0x04, 0x10, 0x41, 0x00, 0x90, 0x4e, + 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x24, 0x82, 0x48, 0x04, 0x92, 0x01, + 0x20, 0x00, 0x48, 0x24, 0x90, 0x40, 0x08, 0x00, 0x01, 0x04, 0x02, 0x01, + 0x2c, 0x80, 0x49, 0x00, 0x90, 0x08, 0x00, 0x02, 0x40, 0x04, 0x80, 0x48, + 0x00, 0xa0, 0x00, 0x05, 0x10, 0x08, 0x24, 0x12, 0x41, 0x00, 0x80, 0x01, + 0x00, 0x02, 0x41, 0x00, 0x02, 0x09, 0x00, 0x94, 0x80, 0x00, 0x14, 0x00, + 0x20, 0x92, 0x49, 0x24, 0x40, 0x08, 0x04, 0x02, 0x48, 0x00, 0x82, 0x01, + 0x20, 0x82, 0x02, 0x00, 0x00, 0x49, 0x00, 0x90, 0x08, 0x04, 0x02, 0x08, + 0x00, 0x02, 0x41, 0x20, 0x12, 0x48, 0x24, 0x12, 0x09, 0x48, 0x00, 0x00, + 0x00, 0x90, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x48, 0x00, 0x60, 0x00, 0x04, 0x90, 0x49, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x13, 0x80, + 0x00, 0x06, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x24, 0x80, 0x1e, 0x00, 0x00, 0x51, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x50, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x05, 0x40, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x03, 0x80, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x01, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x40, 0x08, 0x00, 0x00, 0x24, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x20, 0x00, + 0x00, 0x02, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x82, 0x00, 0x00, 0x02, 0x49, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x58, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x48, 0x10, 0x00, 0x00, 0x04, 0x12, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, + 0x24, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x24, 0x05, 0x00, 0x00, 0x02, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x48, 0x00, 0x00, 0x00, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x20, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x40, 0x00, 0x40, 0x00, 0x04, 0x82, 0x49, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x97, 0x00, + 0x00, 0x14, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x01, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x64, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x25, 0x20, 0x00, 0x00, 0x82, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x20, 0x00, 0x00, 0x00, 0x04, 0x40, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x91, 0x42, 0x00, 0x00, 0x01, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x48, 0x28, 0x00, 0x00, 0x40, 0x12, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x14, 0xa0, 0x00, + 0x05, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x00, 0x80, 0x00, 0x10, 0x09, 0x20, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x90, 0x4a, + 0x00, 0x00, 0x01, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x08, 0xa8, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x49, + 0x04, 0xc0, 0x00, 0x01, 0x90, 0x4a, 0x24, 0x92, 0x49, 0x24, 0x00, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x24, 0x00, 0x80, 0x00, 0x1a, 0x40, + 0x20, 0x12, 0x08, 0x20, 0x00, 0x41, 0x04, 0x92, 0x40, 0x04, 0x12, 0x08, + 0x20, 0x00, 0x46, 0x00, 0x00, 0x38, 0x2c, 0x00, 0x01, 0x20, 0x92, 0x48, + 0x24, 0x92, 0x01, 0x04, 0x02, 0x49, 0x20, 0x92, 0x49, 0x18, 0x00, 0x00, + 0x00, 0x12, 0x09, 0x00, 0x10, 0x01, 0x20, 0x00, 0x41, 0x04, 0x82, 0x49, + 0x04, 0x90, 0x40, 0x04, 0x20, 0x00, 0x03, 0x90, 0x00, 0x24, 0x92, 0x49, + 0x20, 0x80, 0x41, 0x04, 0x82, 0x48, 0x04, 0x82, 0x49, 0x24, 0x93, 0x00, + 0x00, 0x13, 0x88, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x90, 0x01, + 0x20, 0x10, 0x00, 0x04, 0x80, 0x70, 0x00, 0x00, 0x06, 0x20, 0x00, 0x08, + 0x00, 0x12, 0x00, 0x20, 0x10, 0x48, 0x0c, 0x12, 0x09, 0x20, 0x80, 0x01, + 0x40, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x24, 0x10, 0x00, 0x24, 0x02, 0x08, + 0x04, 0xa2, 0x08, 0x01, 0x02, 0x48, 0x03, 0x00, 0x00, 0x00, 0x14, 0x08, + 0x00, 0x92, 0x49, 0x24, 0x80, 0x00, 0x04, 0x80, 0x41, 0x04, 0x82, 0x09, + 0x00, 0xb0, 0x00, 0x00, 0x00, 0x18, 0x20, 0x00, 0x48, 0x24, 0x80, 0x01, + 0x00, 0x92, 0x49, 0x04, 0x90, 0x48, 0x24, 0x02, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x02, 0x48, 0x00, 0x10, 0x40, 0x04, 0x00, 0x08, 0x04, 0x82, 0x01, + 0x24, 0x12, 0x34, 0x00, 0x00, 0x00, 0x00, 0x32, 0x49, 0x00, 0x02, 0x09, + 0x00, 0x10, 0x09, 0x04, 0x80, 0x40, 0x20, 0x90, 0x49, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x20, 0x82, 0x40, 0x04, 0x82, 0x08, 0x04, 0x80, 0x40, + 0x00, 0x10, 0x49, 0x25, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x49, + 0x24, 0x00, 0x40, 0x24, 0x92, 0x08, 0x24, 0x02, 0x41, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x82, 0x00, 0x04, 0x90, 0x00, 0x04, 0x02, 0x01, + 0x20, 0x10, 0x00, 0x40, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x12, 0xc9, + 0x04, 0x10, 0x40, 0x24, 0x02, 0x49, 0x20, 0x92, 0x01, 0x20, 0x10, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x24, 0x12, 0x01, + 0x24, 0x82, 0x08, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x82, 0x01, 0x24, 0x12, 0x08, 0x24, 0x00, 0x41, 0x04, 0x12, 0x01, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x09, 0x24, 0x82, 0x49, + 0x20, 0x00, 0x00, 0x20, 0x92, 0x41, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x27, 0x24, 0x12, 0x48, 0x00, 0x02, 0x00, 0x04, 0x90, 0x49, + 0x24, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x82, 0x08, + 0x24, 0x00, 0x48, 0x20, 0x82, 0x49, 0x24, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x04, 0x02, 0x00, 0x00, 0x10, 0x09, + 0x20, 0x02, 0x0a, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x24, 0x90, 0x49, 0x24, 0x92, 0x49, 0x20, 0x80, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xac, 0x12, 0x49, 0x00, 0x12, 0x00, + 0x00, 0x90, 0x41, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1a, 0x01, 0x00, 0x90, 0x09, 0x20, 0x00, 0x08, 0x04, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x04, 0x82, 0x48, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x14, 0x92, 0x48, 0x20, 0x80, 0x49, 0x00, 0x92, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x41, + 0x24, 0x90, 0x49, 0x00, 0x82, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x15, 0x20, 0x00, 0x09, 0x00, 0x80, 0x48, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x34, 0x92, 0x48, 0x20, 0x82, 0x41, 0x20, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xbf, 0x49, 0x30, 0xc1, 0x40, + 0x32, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0xb6, 0x59, 0x25, 0x96, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc4, 0x00, 0x20, 0x11, 0x00, 0x01, - 0x04, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x11, 0x20, 0x31, 0x10, 0x30, 0x50, 0x40, 0x21, - 0x41, 0x60, 0x70, 0xff, 0xda, 0x00, 0x08, 0x01, 0x03, 0x01, 0x01, 0x3f, - 0x10, 0xfe, 0xa1, 0xd3, 0xf2, 0x1f, 0x41, 0x3c, 0xa7, 0x40, 0xbc, 0xdd, - 0x03, 0xc8, 0x7d, 0x03, 0x90, 0x3e, 0x71, 0xc8, 0xc0, 0xb9, 0x1d, 0x21, - 0x3a, 0x74, 0x6b, 0xdc, 0x70, 0x2e, 0x47, 0x40, 0x89, 0xc0, 0xc9, 0xa4, - 0x30, 0xd0, 0x34, 0x86, 0x7f, 0x53, 0x61, 0xb5, 0x1c, 0x0b, 0xdc, 0x11, - 0xc8, 0x47, 0x21, 0x1c, 0x0c, 0x9c, 0x32, 0x38, 0x18, 0x08, 0x9c, 0x02, - 0x8e, 0x1a, 0x67, 0x02, 0xf7, 0x04, 0x72, 0x11, 0x81, 0xac, 0x0c, 0x9c, - 0x3a, 0x3f, 0x60, 0x2d, 0x1c, 0x04, 0x70, 0xe8, 0xc8, 0xe0, 0x5e, 0xe0, - 0x88, 0x7c, 0xb2, 0x30, 0x35, 0x80, 0x8d, 0xab, 0x47, 0x26, 0x90, 0xc9, - 0xb4, 0xf9, 0x39, 0xb9, 0x1c, 0x0b, 0x91, 0xd2, 0xf9, 0x7f, 0x71, 0xc7, - 0xec, 0x8e, 0xc6, 0x4d, 0x36, 0x83, 0x26, 0x4c, 0x99, 0x32, 0x64, 0xc9, - 0x93, 0x26, 0x4c, 0x99, 0x32, 0x68, 0x9c, 0x09, 0x19, 0x8f, 0x79, 0xf9, - 0x03, 0x8f, 0xdd, 0xa2, 0xb8, 0x63, 0x81, 0xb4, 0x57, 0x0c, 0x70, 0x36, - 0x8a, 0xe1, 0x8e, 0x04, 0x8c, 0xc5, 0x7b, 0xe9, 0x03, 0xbc, 0x57, 0x48, - 0x2b, 0xdf, 0x49, 0x0d, 0xb4, 0xe1, 0x8e, 0xf1, 0x5e, 0xfa, 0x40, 0xef, - 0xa7, 0xbe, 0x90, 0x3b, 0xe9, 0xef, 0xa4, 0x0e, 0xf1, 0x5e, 0xfa, 0x40, - 0xeb, 0x10, 0xa7, 0xbe, 0x90, 0x3a, 0x8a, 0x15, 0x0a, 0x7b, 0xe9, 0x03, - 0xac, 0x54, 0x29, 0xef, 0xa4, 0x0e, 0xb1, 0x50, 0xa7, 0xbe, 0x90, 0x3a, - 0x7f, 0x70, 0x20, 0x2b, 0xdf, 0x48, 0x1d, 0x26, 0xf0, 0x2a, 0x14, 0xf7, - 0xd2, 0x07, 0x58, 0xa8, 0x53, 0xdf, 0x48, 0x1c, 0x09, 0x9c, 0x0a, 0x80, - 0xaf, 0x79, 0xa8, 0x1c, 0x09, 0x9c, 0x0a, 0x85, 0x3d, 0xf4, 0x81, 0xc0, - 0x99, 0xbc, 0x0a, 0x85, 0x3d, 0xe6, 0xa0, 0x70, 0x26, 0x6f, 0x02, 0xa1, - 0x4f, 0x79, 0xa8, 0x1a, 0xd2, 0x6f, 0x14, 0x80, 0xaf, 0x79, 0xa8, 0x1c, - 0x7e, 0xcc, 0xde, 0x04, 0x07, 0xbc, 0xd4, 0x0e, 0x05, 0xcc, 0xdf, 0x14, - 0x35, 0x03, 0x81, 0x73, 0xb6, 0x04, 0x07, 0xbe, 0x90, 0x38, 0x17, 0x3b, - 0x60, 0x5f, 0x0c, 0x6a, 0x07, 0x02, 0xf4, 0x85, 0xf0, 0xd4, 0x81, 0xc0, - 0xd2, 0x17, 0xc3, 0x1a, 0x81, 0xc0, 0xe6, 0x06, 0xa0, 0x76, 0x1f, 0x99, - 0x1f, 0x13, 0xa7, 0x4e, 0x9d, 0x3a, 0x74, 0xe9, 0xd3, 0xa7, 0x4e, 0x9d, - 0x3a, 0x74, 0xe9, 0xd3, 0xa7, 0x4e, 0x9d, 0x3a, 0x74, 0xe9, 0xd3, 0xa7, - 0x4e, 0x9d, 0x3a, 0x74, 0x7e, 0xf8, 0x0a, 0x71, 0x4e, 0xa5, 0x39, 0x03, - 0x91, 0x33, 0x59, 0x17, 0xc5, 0x39, 0x13, 0x30, 0x1f, 0x47, 0x1c, 0x68, - 0x39, 0x2f, 0xce, 0x7d, 0xb2, 0x0b, 0x1e, 0x30, 0xda, 0x07, 0xe7, 0x14, - 0x69, 0x3f, 0x44, 0x01, 0x63, 0xc5, 0x1a, 0x8d, 0xc0, 0x17, 0xe7, 0x04, - 0x01, 0x6e, 0x18, 0xd6, 0x43, 0xc4, 0x1e, 0x10, 0xd8, 0x10, 0x0a, 0xf8, - 0x03, 0x69, 0x0f, 0x10, 0x78, 0x03, 0x71, 0x1f, 0xb0, 0x1e, 0xf1, 0xe0, - 0x21, 0xa0, 0x0f, 0x38, 0xc0, 0x7b, 0x47, 0x88, 0x88, 0x0f, 0x58, 0xf2, - 0x11, 0x91, 0xd0, 0x21, 0xb0, 0x3f, 0xa3, 0x21, 0xf0, 0x3a, 0x27, 0xa6, - 0x7a, 0x75, 0xfd, 0x29, 0xe9, 0xd6, 0xf3, 0xfe, 0x51, 0xff, 0xc4, 0x00, - 0x20, 0x11, 0x00, 0x01, 0x05, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x11, 0x20, 0x31, - 0x21, 0x30, 0x40, 0x41, 0x50, 0x51, 0x60, 0xff, 0xda, 0x00, 0x08, 0x01, - 0x02, 0x01, 0x01, 0x3f, 0x10, 0xff, 0x00, 0x50, 0x3f, 0xa5, 0x01, 0x40, - 0x50, 0x14, 0x05, 0x01, 0x40, 0x50, 0x14, 0x05, 0x01, 0x40, 0x50, 0x14, - 0x05, 0x0a, 0x02, 0x8f, 0x4c, 0x02, 0x8f, 0xf1, 0xd1, 0xf4, 0xf5, 0x4b, - 0xca, 0x95, 0x2a, 0x54, 0xa9, 0x69, 0x52, 0xa6, 0x90, 0x82, 0x0d, 0xc0, - 0xe2, 0x11, 0x0d, 0x2f, 0x2a, 0x5a, 0x54, 0x95, 0x25, 0xa4, 0xa9, 0x52, - 0xa4, 0xa9, 0xbc, 0xf7, 0xca, 0x05, 0x00, 0xc3, 0xc5, 0x86, 0xb9, 0x73, - 0x63, 0xf8, 0x25, 0x2d, 0x8b, 0x0d, 0xe9, 0x2b, 0x1b, 0x5f, 0x80, 0xc5, - 0x86, 0xf4, 0x1a, 0x8f, 0xac, 0x71, 0x72, 0xa4, 0xae, 0x45, 0x69, 0xa5, - 0x07, 0xd2, 0x3a, 0xff, 0x00, 0x14, 0xcb, 0x4c, 0x20, 0xbe, 0xb0, 0x36, - 0xd3, 0x62, 0xc3, 0x7a, 0x30, 0x86, 0x39, 0xc5, 0x82, 0xe7, 0x10, 0x72, - 0xc7, 0x57, 0x10, 0x89, 0x58, 0x69, 0x40, 0xcb, 0x12, 0x87, 0x28, 0xe2, - 0x02, 0x58, 0x8f, 0xac, 0xfa, 0x89, 0xe7, 0x84, 0x79, 0x36, 0xd3, 0x1c, - 0xb0, 0xde, 0x83, 0x88, 0x63, 0x9c, 0x58, 0x7f, 0x8b, 0x4c, 0x54, 0x20, - 0x25, 0x0d, 0x68, 0x43, 0x83, 0x2f, 0x88, 0xe2, 0x05, 0x8e, 0x43, 0x88, - 0x84, 0x04, 0xdb, 0x4c, 0x72, 0xc3, 0x7a, 0x0e, 0x20, 0x61, 0x4a, 0x95, - 0x3f, 0x17, 0xd3, 0xfc, 0x28, 0x6b, 0x86, 0x04, 0x44, 0x21, 0xcf, 0x2d, - 0xca, 0xd5, 0x03, 0x11, 0x0d, 0x08, 0x31, 0xfe, 0x2c, 0xb6, 0x98, 0xe5, - 0x86, 0xf4, 0xc3, 0xc7, 0xbb, 0x4c, 0x72, 0xc3, 0x7b, 0x25, 0xe5, 0x4b, - 0x4a, 0x95, 0x2d, 0x2a, 0x54, 0xa9, 0x52, 0xa5, 0xa5, 0x4a, 0x95, 0x2a, - 0x54, 0xa9, 0x52, 0xa6, 0xba, 0x63, 0x96, 0x1a, 0xff, 0x00, 0x68, 0x78, - 0x3e, 0xf0, 0x24, 0x53, 0x4c, 0x72, 0xc3, 0x5c, 0xb8, 0xd5, 0xaf, 0xc3, - 0xe9, 0x8e, 0x58, 0x6d, 0x86, 0xad, 0x7e, 0x1f, 0x4c, 0x72, 0xc3, 0x6c, - 0x35, 0x6b, 0xdf, 0xba, 0x69, 0x8e, 0x58, 0x6d, 0x86, 0xad, 0x7b, 0xf7, - 0x4d, 0x31, 0xb0, 0xdb, 0x0d, 0x5a, 0xf7, 0xea, 0x9a, 0x63, 0x61, 0xb6, - 0x0b, 0x5e, 0xfd, 0xd0, 0x6b, 0x1c, 0xb0, 0xdb, 0x05, 0xaf, 0x7e, 0xe8, - 0x35, 0x8d, 0x86, 0xb9, 0x7f, 0xab, 0x5e, 0xfd, 0x53, 0x5d, 0x03, 0x5c, - 0xeb, 0x85, 0xaf, 0x7e, 0xa9, 0xae, 0x81, 0xae, 0x76, 0x9a, 0xf7, 0xea, - 0x9a, 0x63, 0x61, 0xae, 0x76, 0x9a, 0xf7, 0xea, 0x9a, 0xe8, 0x0e, 0x76, - 0x9a, 0xf7, 0xea, 0x9a, 0x63, 0x60, 0xfa, 0xa6, 0xbd, 0xfa, 0xa6, 0x98, - 0xf4, 0xea, 0x9a, 0xf7, 0xea, 0x9a, 0x63, 0xd3, 0xaa, 0x6b, 0xdf, 0xaa, - 0x69, 0x8f, 0x4e, 0xa9, 0xaf, 0x7e, 0xa9, 0xa6, 0x37, 0x0d, 0xaa, 0x6b, - 0xdf, 0xaa, 0x6b, 0xa4, 0x63, 0x6a, 0x9a, 0xf7, 0xea, 0x9a, 0x63, 0x71, - 0x8d, 0xaa, 0x6b, 0xdf, 0xaa, 0x69, 0x8e, 0x5c, 0x63, 0x6a, 0x9a, 0xf7, - 0xea, 0x9a, 0x63, 0x97, 0x18, 0xda, 0xa6, 0xbd, 0xfa, 0x45, 0xf4, 0xc7, - 0x2e, 0x31, 0xb7, 0x4d, 0x7b, 0xf5, 0x4d, 0x31, 0xcb, 0xe1, 0xb7, 0x4d, - 0x7b, 0xf5, 0x4d, 0x31, 0xcb, 0xe1, 0xb7, 0x4d, 0x7b, 0xf4, 0x8d, 0x58, - 0xbe, 0x2d, 0xd7, 0xbf, 0x48, 0xd5, 0x8b, 0xe7, 0xf1, 0x6d, 0x59, 0x8b, - 0xe5, 0xb1, 0x4d, 0x7b, 0xf4, 0x8e, 0xbe, 0x1b, 0x17, 0xcb, 0x62, 0x9b, - 0xf7, 0xe9, 0x7d, 0x7c, 0x36, 0x6f, 0x96, 0x39, 0xf8, 0x6d, 0x23, 0xae, - 0x1c, 0x36, 0x7f, 0x30, 0xd2, 0x3a, 0xe3, 0x1b, 0x3d, 0x43, 0xc1, 0x73, - 0xc8, 0x50, 0xa0, 0xa8, 0x2a, 0x0a, 0x82, 0xa0, 0xa8, 0x2a, 0x0a, 0x82, - 0xa0, 0xa8, 0x2a, 0x0a, 0x82, 0xa0, 0xa8, 0x2a, 0x0a, 0x82, 0xa1, 0x42, - 0x85, 0x0a, 0x14, 0x28, 0x50, 0xa1, 0x41, 0x50, 0xa1, 0x42, 0x1c, 0x38, - 0x7c, 0xdf, 0x48, 0xb6, 0xa9, 0x25, 0x49, 0x52, 0xa5, 0x49, 0x52, 0xb9, - 0x52, 0xa5, 0xa7, 0xce, 0x39, 0x3d, 0x5d, 0x3f, 0xf7, 0xf9, 0xee, 0xdc, - 0x89, 0x1e, 0xcd, 0xec, 0x6e, 0xe3, 0x68, 0x44, 0x1f, 0xc4, 0x0f, 0xae, - 0x81, 0xc8, 0x71, 0xfb, 0xf8, 0x62, 0x87, 0x7a, 0x0e, 0x43, 0x91, 0x22, - 0x3f, 0x0c, 0x39, 0x3d, 0x25, 0xf2, 0x81, 0x07, 0xf1, 0x71, 0xd2, 0x70, - 0x68, 0x12, 0x3f, 0x04, 0x77, 0x01, 0x91, 0x40, 0x83, 0xef, 0x15, 0x3c, - 0xf5, 0x17, 0xca, 0x11, 0x3e, 0xf1, 0x42, 0x81, 0xd6, 0x50, 0x66, 0xa1, - 0xf7, 0xda, 0x2a, 0x52, 0x7b, 0x0e, 0x44, 0x50, 0xf3, 0xed, 0x14, 0x26, - 0x07, 0x68, 0x30, 0x65, 0x4c, 0xd0, 0x3d, 0x62, 0xa4, 0xc9, 0xee, 0xf9, - 0x50, 0x89, 0x47, 0xdc, 0x4c, 0x0f, 0x01, 0x48, 0xa0, 0x7a, 0x76, 0xa4, - 0xcf, 0x80, 0x18, 0x34, 0x23, 0xd2, 0x28, 0x4c, 0xf8, 0x8a, 0x38, 0xa1, - 0x1e, 0xb2, 0x7e, 0x79, 0x0a, 0x78, 0xf6, 0x89, 0x8f, 0x30, 0x32, 0xc7, - 0xce, 0x1c, 0x99, 0xf3, 0x03, 0x08, 0x19, 0xcf, 0x40, 0x62, 0x67, 0xd0, - 0x0c, 0x31, 0xf3, 0x93, 0xea, 0x28, 0xe1, 0x1e, 0x3c, 0xc4, 0xc7, 0xb0, - 0x19, 0xe3, 0xcb, 0x9c, 0xfb, 0xb4, 0x4f, 0x90, 0x99, 0xf7, 0x03, 0x08, - 0xf8, 0x89, 0xf9, 0xf8, 0x00, 0xfc, 0xf0, 0xe0, 0xfc, 0x2d, 0x13, 0xde, - 0x11, 0x33, 0xf8, 0x40, 0xc2, 0x3d, 0xc4, 0xf1, 0xc7, 0xfb, 0x6f, 0xff, - 0xc4, 0x00, 0x2a, 0x10, 0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, - 0x04, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x21, - 0x31, 0x41, 0x51, 0x61, 0x71, 0x81, 0x91, 0xa1, 0xf0, 0x20, 0xb1, 0xc1, - 0xd1, 0x40, 0xe1, 0xf1, 0x30, 0x50, 0x60, 0xff, 0xda, 0x00, 0x08, 0x01, - 0x01, 0x00, 0x01, 0x3f, 0x10, 0xff, 0x00, 0xf1, 0x09, 0x06, 0xa3, 0xc3, - 0x39, 0xcd, 0x7e, 0xb4, 0xe3, 0xbc, 0x19, 0x9b, 0x3d, 0x9c, 0xbf, 0xf6, - 0x33, 0xfe, 0x83, 0x3f, 0xe8, 0x33, 0x74, 0xdf, 0xee, 0xcf, 0xde, 0xf9, - 0x62, 0x5c, 0x9f, 0xba, 0xc1, 0xb8, 0x7f, 0x96, 0x7f, 0xdb, 0x67, 0xfd, - 0x76, 0x4b, 0xfb, 0x19, 0xb2, 0x6c, 0xf6, 0x71, 0x09, 0x4a, 0xf1, 0xac, - 0x9b, 0x37, 0x7b, 0x66, 0x91, 0xd6, 0xfa, 0xb2, 0x45, 0xfb, 0xec, 0xff, - 0x00, 0xaa, 0xcb, 0x0f, 0x47, 0xa3, 0x9f, 0xf6, 0x19, 0xb2, 0x6e, 0xf1, - 0x3f, 0xf3, 0xb8, 0x50, 0xf9, 0xb1, 0x04, 0x35, 0x3c, 0x0f, 0x85, 0x12, - 0x63, 0xa5, 0x52, 0xa4, 0x17, 0xd5, 0x7d, 0xf1, 0x81, 0x67, 0x4b, 0x03, - 0xf0, 0x30, 0xda, 0x11, 0xef, 0x5f, 0xdb, 0x2c, 0x59, 0xde, 0x41, 0x95, - 0xf9, 0x0f, 0xf7, 0x30, 0x62, 0xfc, 0xcf, 0xb9, 0xbc, 0x8b, 0xc0, 0xe9, - 0xfe, 0xec, 0x7f, 0x81, 0x42, 0xff, 0x00, 0x7e, 0x2a, 0x03, 0x92, 0x6e, - 0x2f, 0xdf, 0x12, 0x8b, 0xd0, 0x0d, 0xa7, 0xef, 0x8c, 0x94, 0x0f, 0x1f, - 0xdf, 0x30, 0x71, 0xd5, 0xad, 0x1f, 0xd4, 0xeb, 0x05, 0x0b, 0x7f, 0x2a, - 0x81, 0xf7, 0xca, 0x9a, 0x57, 0x9d, 0xaf, 0x82, 0xe5, 0x65, 0xb7, 0x7e, - 0x0f, 0xa5, 0x2e, 0x68, 0xd3, 0xf5, 0x1b, 0xf7, 0xcb, 0xbb, 0x5c, 0x97, - 0x9f, 0xeb, 0x8a, 0x56, 0x8f, 0x4d, 0x9f, 0x7c, 0xd1, 0x22, 0x6a, 0xbc, - 0x1f, 0x5c, 0xbd, 0x50, 0xed, 0xcd, 0xf6, 0x70, 0xa3, 0xa7, 0xcc, 0x30, - 0xd2, 0xa8, 0xd0, 0xb6, 0x1f, 0x4b, 0x8d, 0x68, 0x85, 0xb0, 0xbe, 0xbb, - 0xc5, 0x0b, 0xdc, 0x73, 0x54, 0xf7, 0x1c, 0xe1, 0xe4, 0xe9, 0xe0, 0xf4, - 0x8f, 0xf5, 0x90, 0x21, 0x79, 0xda, 0x5f, 0xdf, 0x9c, 0x3b, 0x41, 0x1f, - 0x08, 0xd7, 0xd7, 0x8c, 0x59, 0x4d, 0x5b, 0xda, 0xe2, 0x9d, 0xf4, 0x82, - 0xef, 0xc9, 0x82, 0xae, 0xbe, 0xd5, 0x37, 0xc9, 0xfe, 0xb1, 0xfd, 0xcb, - 0xc7, 0x13, 0x8e, 0xb7, 0x94, 0xec, 0x7f, 0x38, 0xb8, 0x5d, 0xbe, 0x5e, - 0xbe, 0x3d, 0x32, 0xe4, 0x13, 0x9d, 0x37, 0xda, 0xe5, 0x0b, 0x6a, 0xd4, - 0x44, 0x7d, 0xb3, 0xca, 0x91, 0x5a, 0xe7, 0xf6, 0xce, 0x29, 0xfb, 0x6f, - 0xf9, 0x4c, 0xb2, 0xa7, 0x86, 0x83, 0xde, 0xe3, 0x89, 0xd6, 0xef, 0x13, - 0xd7, 0x9c, 0x3d, 0x41, 0x2d, 0x77, 0xd5, 0x3e, 0x9b, 0xf5, 0xc8, 0x29, - 0x10, 0x2a, 0x4e, 0x13, 0xbf, 0x41, 0x51, 0xf3, 0x75, 0xff, 0x00, 0x82, - 0x14, 0x53, 0xe4, 0xe1, 0x98, 0xe0, 0x36, 0xba, 0x91, 0x83, 0x64, 0x50, - 0x58, 0xa8, 0x46, 0x0b, 0xd0, 0x7c, 0xbf, 0x7f, 0xb6, 0x48, 0x58, 0xae, - 0xdc, 0x10, 0x31, 0x3a, 0x5d, 0xb9, 0x56, 0xc0, 0x26, 0x8d, 0x19, 0xe4, - 0x07, 0xd4, 0x62, 0x44, 0x0f, 0x04, 0x99, 0x5d, 0x2e, 0x36, 0x38, 0xe1, - 0x8e, 0x05, 0xe6, 0xcf, 0xa7, 0xed, 0x92, 0x02, 0x2f, 0x7b, 0x3f, 0xcf, - 0xdf, 0x02, 0xdc, 0xdf, 0x00, 0x3e, 0xf8, 0x77, 0xbb, 0xa5, 0x59, 0xf5, - 0x0b, 0xf7, 0xc9, 0x85, 0xc4, 0xa0, 0x2b, 0xc3, 0x8a, 0x70, 0xfe, 0x6b, - 0x3b, 0x66, 0x1e, 0x47, 0x38, 0xda, 0x29, 0x1b, 0xcd, 0xbf, 0xbe, 0x2c, - 0x91, 0x04, 0x96, 0x93, 0xdb, 0xf3, 0x58, 0x45, 0x6f, 0xb2, 0xab, 0x5f, - 0x36, 0xef, 0x26, 0x42, 0x38, 0xf4, 0xfe, 0xb3, 0x66, 0x72, 0x2c, 0xe9, - 0x85, 0x75, 0xc7, 0x2c, 0xe3, 0xfb, 0xc8, 0xce, 0xfe, 0x76, 0xcb, 0x8e, - 0x83, 0x2f, 0x8d, 0x8e, 0xb0, 0x87, 0x49, 0xaa, 0x6c, 0xfd, 0xb3, 0x4e, - 0x31, 0xe0, 0x38, 0xb3, 0x04, 0x7a, 0xbf, 0xcf, 0x18, 0xaf, 0xbd, 0x3a, - 0x6b, 0x7f, 0x9f, 0x19, 0xc3, 0x8a, 0x77, 0x65, 0xc1, 0xc9, 0x65, 0xe7, - 0x50, 0xf8, 0xc0, 0x24, 0xd5, 0xb2, 0x27, 0xed, 0xce, 0x5c, 0xe4, 0x5d, - 0x72, 0xce, 0x6a, 0x0f, 0x51, 0xaf, 0xa5, 0xfa, 0x62, 0xaa, 0x03, 0xcc, - 0x5b, 0xca, 0x00, 0xb0, 0xbc, 0x80, 0x7f, 0x7f, 0xb6, 0x00, 0x37, 0xe7, - 0x10, 0x99, 0x41, 0x49, 0x2e, 0xc0, 0xdb, 0xfd, 0x60, 0x08, 0x7a, 0x5d, - 0x27, 0x7e, 0xbc, 0xff, 0x00, 0xdc, 0x22, 0xf4, 0x16, 0xce, 0x7e, 0xd9, - 0x29, 0xa2, 0xee, 0xce, 0xf0, 0xa3, 0xe7, 0x47, 0xf7, 0x91, 0x4c, 0x06, - 0xef, 0x13, 0x5e, 0x3e, 0x1c, 0x94, 0x14, 0x8d, 0xf0, 0x71, 0x26, 0x2b, - 0x49, 0x1b, 0xdd, 0xaf, 0x6f, 0xf5, 0xb9, 0xe9, 0x8c, 0x6f, 0x40, 0xd5, - 0x73, 0x79, 0x48, 0x8f, 0xb0, 0xf2, 0xfe, 0xab, 0xb1, 0x43, 0x6b, 0xe0, - 0xc2, 0x1a, 0xaa, 0x3a, 0x44, 0xa2, 0xba, 0xd0, 0x11, 0xed, 0x35, 0x6e, - 0x30, 0xc2, 0x9a, 0x00, 0x2b, 0x57, 0x9f, 0xc9, 0x31, 0x9b, 0x90, 0xaa, - 0x9a, 0x6a, 0x57, 0xf3, 0x7f, 0x4a, 0xc4, 0x21, 0x36, 0xe4, 0x38, 0x5f, - 0x06, 0xdc, 0x6a, 0x8f, 0xe1, 0x9b, 0x1b, 0x9d, 0xb8, 0xc0, 0x2a, 0x01, - 0xf1, 0xc6, 0x00, 0x90, 0xf2, 0xe5, 0x14, 0x45, 0xf2, 0x71, 0x86, 0x0d, - 0x44, 0xda, 0x73, 0x86, 0xc2, 0x1a, 0xf6, 0x4f, 0xa6, 0x11, 0x55, 0x5e, - 0x67, 0x1e, 0xf8, 0x82, 0x96, 0x3d, 0x03, 0xf3, 0x95, 0xd3, 0x1f, 0x56, - 0x50, 0xb3, 0x3b, 0x5c, 0x3b, 0x0b, 0xc7, 0x73, 0x08, 0x12, 0x17, 0xc6, - 0x6d, 0xc3, 0x5e, 0x26, 0xf0, 0xcd, 0x13, 0xfb, 0x30, 0x0a, 0x6c, 0x62, - 0x1a, 0x5f, 0x3f, 0xbe, 0x0e, 0xbd, 0xb3, 0xcb, 0xcf, 0xed, 0x94, 0x76, - 0x17, 0x4a, 0xa9, 0x89, 0xe5, 0xb8, 0x51, 0xdb, 0x82, 0x01, 0xd3, 0x0a, - 0xe0, 0xc9, 0x30, 0x11, 0x6b, 0xbf, 0xe7, 0x2f, 0xcc, 0xf8, 0xb7, 0x10, - 0x30, 0x86, 0xe4, 0x9f, 0xbe, 0x3b, 0xb0, 0x6e, 0x3c, 0xe4, 0xe0, 0xb7, - 0xfb, 0xc7, 0x55, 0xb1, 0xa1, 0x77, 0x80, 0x2a, 0x80, 0xe2, 0xf7, 0x9b, - 0x6d, 0x21, 0x5d, 0xfe, 0x5c, 0x47, 0xb0, 0x0f, 0x2e, 0x7f, 0xde, 0x6c, - 0xb6, 0x2a, 0xdc, 0x5a, 0x40, 0x0e, 0xb8, 0xa7, 0x7b, 0xe3, 0x1c, 0x84, - 0xed, 0xa3, 0x19, 0x6b, 0x1b, 0xec, 0x60, 0x38, 0x7b, 0xdb, 0x70, 0xd0, - 0x1a, 0x3d, 0xe0, 0xd3, 0x0a, 0x68, 0x6d, 0x7e, 0x32, 0xe0, 0x86, 0x9b, - 0xdf, 0x1d, 0xf7, 0xd7, 0x3e, 0xb8, 0xc0, 0xd9, 0x53, 0xf0, 0xbb, 0xfd, - 0xbe, 0x3d, 0xb0, 0xd6, 0x61, 0xe2, 0x68, 0x13, 0xf7, 0xfa, 0x5f, 0xa9, - 0x6f, 0x21, 0x63, 0x1a, 0x31, 0x31, 0x95, 0x60, 0xd2, 0x1b, 0xa6, 0xde, - 0x7a, 0xef, 0x00, 0x14, 0x82, 0xe0, 0x4a, 0xa3, 0xd8, 0x47, 0xcf, 0x1e, - 0x99, 0x6d, 0xcf, 0xa1, 0x2a, 0x2e, 0xbe, 0x93, 0x07, 0x6c, 0x28, 0x83, - 0xfd, 0x65, 0xc1, 0x05, 0xe5, 0x7b, 0xc1, 0x20, 0x8a, 0xf2, 0x89, 0x31, - 0xef, 0x41, 0xdf, 0x1c, 0x7c, 0xe0, 0x20, 0x0a, 0x68, 0xa8, 0x62, 0x33, - 0x95, 0xa0, 0xfb, 0x7e, 0xdb, 0xc5, 0xeb, 0xf6, 0xdb, 0x84, 0x15, 0xc6, - 0xe6, 0x00, 0x5e, 0xdb, 0xb9, 0xbe, 0x1f, 0x67, 0xcf, 0xfa, 0xc5, 0x8c, - 0x7e, 0x03, 0x9f, 0x5c, 0x64, 0x3b, 0x80, 0x53, 0xd3, 0xd3, 0x0b, 0xa9, - 0x03, 0xbd, 0x6f, 0x34, 0x42, 0xd3, 0x81, 0x1c, 0x60, 0x54, 0x25, 0x0f, - 0x1a, 0xc6, 0x08, 0x03, 0x51, 0xd6, 0x3e, 0x7b, 0x35, 0xdc, 0xb9, 0x06, - 0x08, 0x9a, 0xac, 0xde, 0x0a, 0x93, 0x44, 0x1c, 0x9c, 0x94, 0xf5, 0x38, - 0x93, 0x00, 0x36, 0x9e, 0x5f, 0x4e, 0x26, 0x1a, 0x4a, 0x22, 0x3e, 0x0c, - 0xe4, 0x80, 0x5b, 0x6f, 0xf1, 0x8b, 0x10, 0x44, 0xc1, 0x2e, 0xf2, 0x80, - 0x29, 0xd1, 0x7b, 0xc7, 0x8c, 0x81, 0x79, 0x2e, 0x33, 0x01, 0xba, 0x8f, - 0xa6, 0x53, 0x14, 0xdf, 0x1e, 0x19, 0x45, 0x51, 0x5f, 0x19, 0x57, 0x43, - 0x47, 0x95, 0xc5, 0xbc, 0x01, 0x25, 0x18, 0xb7, 0x52, 0xb9, 0x6b, 0x07, - 0xb7, 0xec, 0xb9, 0x4a, 0x24, 0xf2, 0x68, 0xc5, 0xd0, 0x65, 0x82, 0xf3, - 0xef, 0x8c, 0xd2, 0x8d, 0x0d, 0x8e, 0xf7, 0x83, 0x9e, 0xa1, 0x77, 0xdb, - 0x9a, 0x00, 0xf7, 0x37, 0x86, 0x2a, 0x95, 0xbe, 0x66, 0x74, 0x83, 0x06, - 0x81, 0xf9, 0x33, 0x43, 0x48, 0x38, 0x4f, 0xcf, 0x19, 0x06, 0x5d, 0x22, - 0x1c, 0xc3, 0xfc, 0xbf, 0x57, 0x48, 0xac, 0x72, 0x0d, 0xa3, 0x83, 0xd5, - 0xbf, 0xae, 0x15, 0x72, 0xa5, 0x3a, 0x63, 0xff, 0x00, 0x3d, 0xae, 0x5a, - 0xb3, 0x2e, 0x1d, 0xe0, 0x1c, 0x9a, 0x2d, 0xfe, 0x98, 0x85, 0x34, 0x01, - 0x45, 0xdf, 0xdb, 0x59, 0xa0, 0x94, 0xb7, 0x12, 0x77, 0xc9, 0x85, 0x33, - 0x40, 0x6e, 0x8d, 0xff, 0x00, 0xbc, 0x05, 0xe9, 0x1c, 0x23, 0xce, 0x78, - 0x7a, 0x07, 0xaa, 0x0d, 0xfc, 0x75, 0x84, 0x00, 0x35, 0x91, 0x6c, 0x8f, - 0x92, 0x3f, 0x38, 0x15, 0x1a, 0xdd, 0x0a, 0x88, 0x7d, 0xc1, 0xf9, 0x98, - 0x0e, 0x61, 0xb7, 0xaa, 0x54, 0xf4, 0x03, 0xf1, 0x82, 0x6c, 0x5a, 0x33, - 0x7d, 0x7c, 0xf9, 0xc2, 0xf4, 0x11, 0xce, 0xbb, 0xcb, 0x70, 0x14, 0xef, - 0x8c, 0xd5, 0x2e, 0xdf, 0xc5, 0xfe, 0xb2, 0x05, 0x57, 0x72, 0x9c, 0x4f, - 0xa6, 0x01, 0xe7, 0x63, 0x36, 0x6d, 0xd8, 0xfa, 0x62, 0xd0, 0x4a, 0x4e, - 0x06, 0x07, 0x6d, 0x6e, 0xb7, 0xdf, 0xb4, 0xc0, 0x42, 0xd9, 0xc6, 0xdc, - 0x0d, 0x74, 0xdf, 0x1b, 0x9e, 0xf9, 0xbe, 0x08, 0xcd, 0xc7, 0xf4, 0x63, - 0xd8, 0x8d, 0x38, 0x53, 0x78, 0x88, 0x79, 0x2c, 0x16, 0x62, 0xa5, 0x50, - 0x0a, 0x78, 0xf4, 0xc1, 0x86, 0x91, 0x97, 0x4c, 0x38, 0x03, 0xbd, 0x2d, - 0x0e, 0x06, 0x9a, 0xa5, 0x77, 0xad, 0x7a, 0x38, 0xb2, 0x0d, 0xbb, 0x17, - 0xfc, 0xca, 0xe8, 0x20, 0xba, 0xef, 0xdf, 0x36, 0x9e, 0x15, 0x56, 0xf2, - 0x7c, 0xe0, 0xed, 0x0a, 0xf9, 0x47, 0xfe, 0xe4, 0x1b, 0x03, 0xd0, 0x61, - 0xe1, 0x3c, 0x1e, 0x4e, 0x50, 0x73, 0x15, 0x2a, 0x6b, 0xd7, 0xcf, 0x8c, - 0x21, 0x88, 0xd2, 0xeb, 0xe7, 0x08, 0x2e, 0xeb, 0x47, 0x83, 0x15, 0xa2, - 0x24, 0xda, 0xbd, 0x3f, 0xc6, 0x46, 0x50, 0x76, 0x6e, 0xf5, 0xfd, 0xe1, - 0x4d, 0x49, 0x53, 0xc6, 0xae, 0xb2, 0x6a, 0x18, 0x96, 0xf2, 0xe0, 0x3f, - 0x8e, 0x19, 0xbf, 0xd4, 0x55, 0x78, 0xca, 0xba, 0x0f, 0xb1, 0xcb, 0x0d, - 0xfd, 0xb1, 0x6e, 0x94, 0xbe, 0x43, 0xbb, 0x3a, 0x96, 0xe0, 0x2f, 0x76, - 0xc7, 0xcb, 0xac, 0x51, 0xc0, 0x14, 0x87, 0xa3, 0xdb, 0x14, 0x57, 0x63, - 0x28, 0x60, 0x90, 0x0d, 0xe5, 0xc5, 0x42, 0x83, 0xe7, 0x8f, 0x18, 0xeb, - 0x5d, 0x8f, 0x90, 0x53, 0xf7, 0x66, 0x86, 0x09, 0x45, 0x60, 0x01, 0xf6, - 0x03, 0x19, 0xdd, 0xe9, 0x80, 0x40, 0xf8, 0x0c, 0xba, 0x34, 0x4d, 0x2e, - 0x12, 0x3f, 0x6c, 0x0f, 0xae, 0x56, 0x27, 0x93, 0x0d, 0x45, 0x95, 0xa8, - 0x81, 0xef, 0xc3, 0xf9, 0xbc, 0x47, 0xad, 0x9d, 0x80, 0xeb, 0x29, 0xc0, - 0x68, 0x62, 0x14, 0x7d, 0x98, 0x36, 0xdf, 0xca, 0x60, 0xf2, 0xa7, 0x8d, - 0xb0, 0x70, 0x7f, 0x76, 0x88, 0x37, 0xf1, 0xf1, 0x8a, 0xa8, 0xf4, 0x17, - 0x94, 0x3f, 0x7b, 0x82, 0x9f, 0x7e, 0xe1, 0xf4, 0x07, 0x93, 0x00, 0x46, - 0xa9, 0x7a, 0x1a, 0x57, 0xa8, 0xcf, 0x84, 0x7b, 0xc8, 0xfb, 0xbd, 0xf0, - 0xd8, 0xfa, 0x4e, 0x05, 0xeb, 0x6c, 0x4b, 0x82, 0xdf, 0x59, 0x8e, 0xc3, - 0x0d, 0x68, 0x2c, 0x8b, 0xf3, 0x31, 0xdf, 0x7e, 0xae, 0x31, 0xfe, 0x6c, - 0x9d, 0x0b, 0x6f, 0x2c, 0x19, 0xbd, 0xeb, 0x7c, 0xf9, 0xc8, 0x95, 0x2d, - 0x01, 0xcb, 0xeb, 0x82, 0x5b, 0xc3, 0xd3, 0xf6, 0xc7, 0xec, 0x9d, 0xad, - 0xcc, 0x05, 0x1b, 0x0e, 0x4b, 0x8f, 0x9e, 0xcf, 0x8d, 0xe4, 0x8d, 0x40, - 0x0c, 0x0d, 0xf0, 0x62, 0xb1, 0x6b, 0x18, 0xd7, 0x41, 0x1b, 0x4f, 0x50, - 0xcd, 0x50, 0x03, 0xb0, 0x10, 0x41, 0xf0, 0x88, 0x9e, 0x8e, 0x6d, 0xd0, - 0x2b, 0x74, 0xcc, 0x42, 0x5b, 0x6b, 0x78, 0x03, 0xd7, 0x17, 0x7a, 0x56, - 0xeb, 0xdf, 0xa6, 0x6c, 0xd0, 0xbe, 0xb8, 0x77, 0xa0, 0x8d, 0xa0, 0xfd, - 0x3c, 0xe6, 0x80, 0x20, 0xdf, 0xc1, 0x9b, 0x06, 0xa0, 0xe9, 0x9d, 0x3f, - 0x50, 0x05, 0xe3, 0x28, 0x01, 0x50, 0x50, 0x74, 0xae, 0xf0, 0x00, 0x08, - 0x07, 0x71, 0x8b, 0xbd, 0xf9, 0xc5, 0x04, 0x21, 0x11, 0xb3, 0x78, 0x54, - 0x68, 0xa6, 0xb5, 0xe3, 0x09, 0xd9, 0x39, 0x2c, 0xbe, 0x30, 0x82, 0x47, - 0xa9, 0x47, 0xd7, 0x58, 0x41, 0xa0, 0x21, 0xbd, 0xfc, 0x61, 0xef, 0x41, - 0x7f, 0x0f, 0x63, 0x38, 0x5a, 0x9b, 0x28, 0x74, 0xc3, 0x78, 0xd4, 0xb5, - 0xc0, 0xc0, 0xa2, 0x49, 0x3b, 0xc1, 0x1a, 0xb9, 0x40, 0x63, 0x73, 0xeb, - 0x80, 0x54, 0x2e, 0xa3, 0x97, 0x09, 0xb5, 0xb4, 0x59, 0xca, 0xef, 0x9c, - 0x49, 0x00, 0x24, 0xa0, 0x8b, 0x3d, 0xf9, 0x7e, 0xae, 0x69, 0x28, 0xe5, - 0x17, 0x36, 0x7c, 0x33, 0xe7, 0x05, 0xe0, 0x93, 0x80, 0xb9, 0xf0, 0x07, - 0x12, 0xd9, 0x7c, 0x10, 0xfa, 0x71, 0x88, 0x73, 0xab, 0x1f, 0x46, 0x22, - 0x82, 0xa9, 0x5a, 0x8d, 0xfe, 0x31, 0x9d, 0x18, 0x94, 0xa2, 0x88, 0x7b, - 0x83, 0xe3, 0x35, 0x42, 0x10, 0x5f, 0x2b, 0x5f, 0xdd, 0xf1, 0x86, 0xa1, - 0x68, 0x4f, 0x25, 0xcb, 0xa7, 0x0f, 0xd9, 0xac, 0xf8, 0x10, 0xc1, 0x0d, - 0x63, 0x5a, 0x1c, 0x24, 0x5b, 0x14, 0xc8, 0x42, 0x10, 0x55, 0x66, 0xd0, - 0x3c, 0x7b, 0x62, 0xa2, 0x89, 0x20, 0xd0, 0x76, 0xd4, 0xd3, 0xf7, 0xc9, - 0xde, 0x86, 0x12, 0xa8, 0x44, 0x2f, 0x48, 0xd9, 0xdd, 0x7e, 0xe6, 0x3a, - 0xac, 0x72, 0xed, 0x28, 0x1f, 0x57, 0xe8, 0x38, 0x18, 0x61, 0x68, 0x10, - 0x3d, 0xa4, 0x98, 0x16, 0x54, 0x1a, 0x10, 0x59, 0xe8, 0x89, 0xf2, 0xe2, - 0xc8, 0xde, 0x7e, 0xa0, 0x7e, 0xef, 0xcb, 0x8a, 0xc2, 0x2b, 0x67, 0x5b, - 0xc3, 0x18, 0xb4, 0x08, 0xdb, 0xa2, 0xbd, 0x32, 0xe4, 0xec, 0xb7, 0x47, - 0x46, 0x43, 0x64, 0x50, 0xe0, 0x52, 0x8b, 0xec, 0x87, 0xc6, 0x10, 0xa5, - 0xb1, 0x8b, 0x97, 0x18, 0x12, 0x8d, 0xb3, 0x35, 0xb7, 0x3d, 0x99, 0x6d, - 0xa3, 0x18, 0xa7, 0x78, 0x80, 0x28, 0x5b, 0x37, 0xe4, 0x7d, 0xf1, 0xc0, - 0x43, 0xdf, 0x57, 0x0f, 0x8a, 0xc0, 0xeb, 0x91, 0xfa, 0x81, 0xf4, 0x12, - 0x5c, 0x84, 0xd0, 0x85, 0xa2, 0x50, 0xf5, 0xf9, 0xc6, 0x81, 0x00, 0x3c, - 0x3e, 0x14, 0xd6, 0x9e, 0x72, 0xd2, 0x2a, 0xd3, 0x4f, 0x3e, 0xf8, 0x6a, - 0x2f, 0xb5, 0xe3, 0xf8, 0xcf, 0x56, 0x1d, 0xd7, 0xe7, 0xbe, 0x22, 0x2b, - 0x93, 0xc1, 0xeb, 0x82, 0x0e, 0x13, 0x9a, 0xbb, 0xd6, 0xb0, 0x0d, 0x44, - 0xcb, 0xcb, 0xff, 0x00, 0x73, 0x2c, 0x90, 0x5e, 0x77, 0x44, 0xe9, 0x81, - 0x1a, 0x7a, 0x45, 0xd1, 0x82, 0x0a, 0x22, 0xe7, 0x9b, 0x9c, 0xc1, 0x79, - 0x1f, 0x9e, 0x3f, 0x5d, 0x4f, 0x40, 0x61, 0x25, 0xc8, 0x8c, 0x04, 0x9f, - 0xdc, 0xc2, 0x23, 0x60, 0xea, 0xf2, 0xde, 0x1a, 0x7b, 0x97, 0x37, 0x85, - 0x0c, 0x79, 0xd7, 0xe7, 0x04, 0xae, 0x09, 0x34, 0x69, 0x7a, 0xc8, 0x34, - 0x07, 0xa3, 0xbc, 0x16, 0x2b, 0x57, 0x82, 0x08, 0x3f, 0x74, 0xfa, 0xe1, - 0x9d, 0x12, 0x50, 0x2b, 0xab, 0x80, 0x64, 0xd6, 0x9e, 0x4a, 0x93, 0xbd, - 0x7d, 0x0c, 0x6d, 0x9e, 0x58, 0xfb, 0xe4, 0x3e, 0x50, 0x84, 0xa2, 0x31, - 0xf8, 0xcd, 0x47, 0x8b, 0x24, 0x5c, 0xd9, 0x75, 0xae, 0x9e, 0x4b, 0xa3, - 0x0a, 0xec, 0x00, 0x02, 0xed, 0xe0, 0x31, 0x7a, 0x72, 0x17, 0x3d, 0x1f, - 0x42, 0xeb, 0xd7, 0x2e, 0xfa, 0xd0, 0x85, 0xd1, 0x07, 0xea, 0xcf, 0x9c, - 0x1b, 0x56, 0xd7, 0x0a, 0x29, 0x5d, 0x5f, 0x93, 0x30, 0x10, 0x9a, 0x46, - 0x92, 0x77, 0x88, 0x7a, 0xd7, 0xe4, 0x01, 0x5f, 0x19, 0xa5, 0x8b, 0xaf, - 0x81, 0x6f, 0xc4, 0x98, 0x50, 0x8d, 0x6d, 0xaf, 0x9c, 0x0a, 0x82, 0xfc, - 0x80, 0xc5, 0x5e, 0xb1, 0x30, 0x53, 0xf3, 0x82, 0x9b, 0x1f, 0x61, 0xab, - 0xef, 0xef, 0x8a, 0x38, 0x54, 0xaa, 0xf2, 0x7d, 0xb0, 0x8d, 0x0f, 0x46, - 0xab, 0xfc, 0x63, 0x0d, 0x7e, 0x8f, 0xc5, 0xe3, 0x05, 0x15, 0x2f, 0x34, - 0xc0, 0x84, 0x6e, 0xc9, 0xb4, 0xd6, 0x50, 0x7b, 0xd4, 0x01, 0xdf, 0xbf, - 0x1e, 0x9f, 0x6c, 0x34, 0x51, 0xd0, 0x20, 0xe7, 0x5f, 0x4c, 0x03, 0x3c, - 0xa1, 0xc7, 0x1a, 0xfe, 0xa3, 0x1d, 0x97, 0x83, 0x27, 0xc8, 0x9c, 0xab, - 0xc9, 0xf9, 0xe7, 0xc7, 0xae, 0x3f, 0xb7, 0x9a, 0x90, 0x29, 0xd6, 0xde, - 0xf8, 0x57, 0x81, 0x5e, 0xb3, 0x8c, 0x4a, 0x33, 0x49, 0x86, 0x0e, 0xfa, - 0x2b, 0x08, 0xbf, 0x2c, 0x6d, 0x58, 0x65, 0x5a, 0x67, 0x26, 0x9a, 0xfc, - 0xfe, 0xb3, 0x8b, 0x45, 0xbb, 0x1f, 0xcf, 0xfb, 0x85, 0xb5, 0x53, 0x02, - 0x87, 0xa4, 0x48, 0x5b, 0xe9, 0xdd, 0xac, 0x05, 0x0b, 0x2d, 0x86, 0xe5, - 0xf1, 0x9a, 0x20, 0x56, 0x02, 0xbd, 0xb5, 0xfe, 0xfb, 0xc4, 0x8b, 0xb3, - 0x66, 0x3c, 0x4e, 0x31, 0xdf, 0x80, 0x49, 0xd8, 0xff, 0x00, 0x24, 0xc1, - 0x0e, 0x8e, 0x17, 0x14, 0xc2, 0x1d, 0x3b, 0x2f, 0x55, 0xcb, 0xd9, 0x48, - 0x5f, 0xbd, 0x81, 0x34, 0xa7, 0x89, 0xf7, 0x3f, 0x8c, 0x12, 0x90, 0x1a, - 0x85, 0xd4, 0xea, 0xe3, 0x24, 0x0d, 0x42, 0x76, 0x47, 0x21, 0x4a, 0x53, - 0xc3, 0xb6, 0x7b, 0x8e, 0x32, 0x61, 0x80, 0xee, 0xdf, 0xb9, 0xd3, 0xea, - 0x38, 0xaf, 0x04, 0xa7, 0x17, 0x67, 0xc1, 0x1b, 0xe8, 0xf2, 0x32, 0xf4, - 0xd3, 0x67, 0x5e, 0xf8, 0xd5, 0x25, 0x48, 0xa9, 0x6a, 0xaf, 0x79, 0x47, - 0x12, 0x2d, 0x03, 0xcd, 0xfa, 0xe1, 0xc0, 0x26, 0xed, 0x16, 0x6b, 0xf4, - 0x0c, 0xd9, 0xa9, 0x50, 0xf6, 0x09, 0x83, 0x5a, 0xfa, 0xf8, 0x48, 0x41, - 0x12, 0x07, 0x69, 0xe5, 0x28, 0xf0, 0xe3, 0x84, 0xba, 0x87, 0x67, 0xa0, - 0xed, 0x8f, 0x22, 0x3d, 0xe2, 0xf8, 0x23, 0x78, 0x46, 0x24, 0x01, 0xd1, - 0x36, 0x82, 0xbe, 0xfa, 0x3e, 0x03, 0x11, 0x04, 0xed, 0x88, 0x49, 0xad, - 0x27, 0x35, 0x4f, 0x1b, 0x47, 0xd1, 0x7a, 0x62, 0x3d, 0xba, 0x18, 0x38, - 0x4f, 0x22, 0x53, 0xd9, 0xcb, 0x8d, 0xa3, 0xba, 0x0a, 0x91, 0xf5, 0x11, - 0x3d, 0xcc, 0xd3, 0x08, 0x03, 0x4d, 0xef, 0xf3, 0xfa, 0xc2, 0x4c, 0xa7, - 0x6c, 0x66, 0xd0, 0x61, 0x3d, 0xf0, 0x02, 0xf2, 0x3b, 0x37, 0xce, 0x55, - 0x62, 0xe8, 0x85, 0xdb, 0xbe, 0xb0, 0xbd, 0x88, 0xbe, 0x1c, 0x4e, 0x2d, - 0x24, 0x91, 0xb3, 0xfa, 0x9d, 0x4b, 0x0e, 0x6c, 0xb5, 0x67, 0xd0, 0xbf, - 0x1e, 0x70, 0x80, 0x4f, 0x24, 0xe6, 0xc8, 0xfe, 0xff, 0x00, 0x7c, 0x74, - 0xf8, 0x4b, 0x12, 0xfc, 0x61, 0xb1, 0x2c, 0x7e, 0xfe, 0xd8, 0x94, 0x02, - 0xbd, 0xf5, 0x9d, 0xe0, 0x4d, 0xff, 0x00, 0xcc, 0x0d, 0x6d, 0x47, 0x7b, - 0xff, 0x00, 0x58, 0xe3, 0x36, 0xab, 0x2a, 0x02, 0x9f, 0x07, 0xd1, 0x80, - 0x1e, 0xc5, 0x5a, 0xff, 0x00, 0x6c, 0xb3, 0xb0, 0xf4, 0xeb, 0x20, 0xea, - 0xba, 0x36, 0xb9, 0x2d, 0x5e, 0x83, 0xb7, 0xf1, 0x8c, 0x50, 0x53, 0x84, - 0x00, 0x07, 0xd2, 0x87, 0x5e, 0x33, 0x8a, 0xd5, 0x08, 0xf9, 0xc8, 0x10, - 0x73, 0xf0, 0x35, 0xd6, 0x5a, 0xe3, 0x02, 0x85, 0x50, 0xc8, 0xf3, 0xb0, - 0x7e, 0x30, 0x1b, 0x2e, 0xd6, 0xc1, 0x69, 0x29, 0xef, 0x86, 0x68, 0xa3, - 0x4b, 0xbf, 0xa7, 0xdf, 0x0e, 0x14, 0x35, 0x7b, 0x0e, 0x0a, 0x9c, 0x65, - 0x10, 0xb5, 0x4d, 0x0b, 0x2e, 0x8d, 0x6e, 0x1b, 0xf4, 0xca, 0x73, 0xb9, - 0x41, 0xe4, 0x50, 0xbe, 0xb8, 0x06, 0x3c, 0x1a, 0x10, 0xd3, 0x67, 0xa9, - 0xf6, 0xc8, 0xb1, 0x38, 0x10, 0xe7, 0xb3, 0xf7, 0xcd, 0x19, 0x40, 0x54, - 0x07, 0x7d, 0x65, 0xbd, 0xb5, 0x5a, 0x57, 0xa3, 0xe7, 0x00, 0x1f, 0xa8, - 0x58, 0xb6, 0x03, 0x75, 0xb5, 0xf9, 0xca, 0x8a, 0x00, 0xa2, 0x02, 0xf7, - 0x8b, 0x10, 0x05, 0xb0, 0x1b, 0xfb, 0x65, 0x08, 0xb6, 0x8d, 0x0b, 0xcc, - 0x27, 0x2c, 0x36, 0x78, 0x31, 0x1d, 0x75, 0x00, 0x54, 0x55, 0x3c, 0x7b, - 0x3c, 0xf9, 0xc3, 0x0d, 0xbc, 0x22, 0x87, 0xd3, 0x7c, 0x73, 0xbc, 0x45, - 0x2d, 0x2c, 0x1e, 0xf8, 0xa4, 0xe2, 0x5b, 0x11, 0x3b, 0xf4, 0xd9, 0xce, - 0x22, 0x84, 0x0e, 0xe0, 0xfb, 0x1c, 0xfc, 0xe6, 0xc9, 0xaa, 0xdb, 0xe7, - 0xb5, 0xce, 0x1e, 0x87, 0x6e, 0xcb, 0xfb, 0xe5, 0x16, 0x21, 0xcf, 0xf1, - 0xc8, 0x2a, 0x20, 0xee, 0x15, 0xc4, 0x57, 0x27, 0x47, 0x87, 0xc9, 0x8d, - 0x1b, 0x26, 0xb8, 0x75, 0x93, 0x40, 0x13, 0xc8, 0x5a, 0x7b, 0xe0, 0x14, - 0xe0, 0x01, 0x5d, 0x1d, 0x7f, 0x38, 0x05, 0x8e, 0x84, 0xad, 0x5d, 0x62, - 0x29, 0x02, 0x68, 0x58, 0x71, 0xfd, 0x4c, 0x22, 0x57, 0x97, 0x00, 0x14, - 0x37, 0x46, 0xce, 0x9e, 0x7d, 0xbf, 0x7c, 0xe2, 0x11, 0x70, 0xab, 0x78, - 0x03, 0xc5, 0xd7, 0x1b, 0xde, 0x6e, 0x7c, 0x9a, 0x4f, 0x5c, 0x6b, 0x4a, - 0x1c, 0x08, 0xe4, 0xcd, 0xbd, 0x68, 0x10, 0x4f, 0x0f, 0x18, 0x45, 0x11, - 0xd0, 0x77, 0x1e, 0x4c, 0x43, 0x06, 0x6a, 0x29, 0x1f, 0x5b, 0x8e, 0x26, - 0xf1, 0xb8, 0xec, 0x7e, 0x3e, 0x31, 0xda, 0x08, 0x72, 0x2e, 0xdd, 0x5c, - 0x1c, 0x0f, 0xd0, 0x8d, 0x7e, 0x4c, 0x08, 0x29, 0xd3, 0x53, 0xeb, 0x92, - 0x3b, 0xc4, 0xd0, 0x3b, 0xf7, 0x7c, 0xf9, 0xc2, 0x8c, 0xe9, 0x93, 0x9f, - 0x90, 0x2e, 0x54, 0x40, 0x13, 0x44, 0xc2, 0xe8, 0x9d, 0xfb, 0x61, 0x90, - 0xb2, 0x80, 0x7c, 0x3d, 0xf3, 0xf9, 0xf4, 0xc2, 0x84, 0xf5, 0x12, 0xfa, - 0x7e, 0xdf, 0xd6, 0x0c, 0x90, 0x85, 0x9a, 0x0c, 0xf6, 0xc1, 0x14, 0x84, - 0xa1, 0xa6, 0xff, 0x00, 0x1a, 0xe3, 0x13, 0x5a, 0xd0, 0xb3, 0x8f, 0x1f, - 0x9d, 0xe0, 0xe2, 0x45, 0xbb, 0xf4, 0xe9, 0x36, 0x73, 0xfb, 0x64, 0x79, - 0x38, 0x8f, 0x02, 0xf8, 0xbe, 0x72, 0xde, 0x54, 0xe0, 0x4f, 0xf9, 0xce, - 0x04, 0xfc, 0x3d, 0xf3, 0x6f, 0xf3, 0x9c, 0x11, 0xae, 0xd2, 0xbf, 0x6f, - 0xcd, 0x63, 0xc0, 0xab, 0x50, 0x03, 0xaf, 0x5b, 0x83, 0x08, 0x02, 0xc1, - 0xbd, 0xf9, 0x71, 0x70, 0x82, 0x6c, 0xeb, 0xdd, 0x89, 0xa8, 0x76, 0x53, - 0x85, 0xd9, 0xaf, 0xb6, 0x31, 0x0d, 0x8b, 0x75, 0xaf, 0x46, 0x60, 0x42, - 0x02, 0xf3, 0x4f, 0xe7, 0x38, 0xad, 0x68, 0x12, 0x47, 0x7f, 0x6f, 0xc9, - 0x81, 0xbb, 0x8a, 0x4d, 0x97, 0xb9, 0xf4, 0x30, 0x7a, 0x79, 0x41, 0xc8, - 0xb2, 0xcf, 0x1c, 0x1c, 0x78, 0xcd, 0x10, 0x22, 0x72, 0x77, 0xbb, 0x5f, - 0xdb, 0x12, 0xac, 0x83, 0x2a, 0xbe, 0xfb, 0x38, 0xcb, 0x39, 0x55, 0xb5, - 0x06, 0x7e, 0xd7, 0x24, 0x28, 0xb1, 0x27, 0x0c, 0x45, 0xbc, 0x8d, 0xf9, - 0x32, 0xa0, 0x04, 0xf4, 0xdf, 0xe6, 0xf0, 0x29, 0x7f, 0x94, 0xc7, 0x8a, - 0x17, 0x88, 0xf3, 0x84, 0x46, 0x86, 0x0b, 0xa9, 0x4e, 0xfe, 0x6e, 0x2c, - 0xaa, 0x20, 0xab, 0xed, 0xff, 0x00, 0x73, 0x52, 0x50, 0x95, 0xe7, 0x87, - 0xf1, 0x8e, 0xbf, 0x97, 0xfb, 0xfe, 0x9a, 0xd6, 0xc7, 0x29, 0xe8, 0x83, - 0x91, 0x61, 0xea, 0x7e, 0x78, 0xc2, 0xb1, 0xec, 0x89, 0x6c, 0xf5, 0xfa, - 0xaf, 0xf5, 0x8e, 0xa4, 0x52, 0x9d, 0x23, 0xcf, 0x8e, 0xbd, 0xb0, 0x11, - 0x87, 0x0e, 0x0e, 0x78, 0xc0, 0x01, 0xa4, 0x55, 0x8d, 0x7e, 0x33, 0xb8, - 0x41, 0x09, 0x04, 0x0f, 0x9c, 0xaf, 0x7c, 0x08, 0xa1, 0xce, 0x3f, 0x3d, - 0x3f, 0xcf, 0x3a, 0xc2, 0x17, 0x4f, 0x30, 0x37, 0xc1, 0xad, 0x6d, 0xd6, - 0x11, 0xb2, 0x5a, 0x66, 0xf5, 0x96, 0x25, 0x47, 0x6b, 0xc7, 0xf3, 0x9b, - 0xbd, 0x75, 0xbd, 0xe2, 0xc6, 0x44, 0x9d, 0x34, 0xd9, 0x3d, 0x39, 0x26, - 0x6e, 0xb0, 0x8b, 0xeb, 0xed, 0xe9, 0x9c, 0x9e, 0xc0, 0xaf, 0xa7, 0x12, - 0xb2, 0x45, 0x5a, 0x7d, 0xff, 0x00, 0x4e, 0xad, 0x04, 0x15, 0xbc, 0x41, - 0xdf, 0xb6, 0x50, 0x81, 0x0e, 0x40, 0xd5, 0xdf, 0xd7, 0x01, 0x84, 0x10, - 0x44, 0x0d, 0x23, 0x3e, 0xab, 0x3d, 0x39, 0xcd, 0xae, 0x5a, 0xf7, 0xd2, - 0xff, 0x00, 0x58, 0xd0, 0x01, 0xb0, 0xf2, 0xfc, 0x60, 0x82, 0x2a, 0xb3, - 0x69, 0xf8, 0x62, 0x24, 0x30, 0x61, 0x57, 0xc5, 0xeb, 0x8e, 0x9a, 0xb9, - 0x29, 0xd0, 0xc2, 0x7b, 0x49, 0xf1, 0xfe, 0x7a, 0x86, 0x56, 0xf0, 0xa6, - 0xb9, 0x7d, 0xcc, 0x1c, 0x11, 0x76, 0x07, 0x1d, 0x34, 0x4f, 0x68, 0x1b, - 0xc4, 0x85, 0x15, 0x1d, 0x33, 0x0d, 0xda, 0x08, 0x43, 0x7c, 0xdd, 0x3f, - 0x09, 0x84, 0xc7, 0x71, 0xdc, 0xda, 0x4f, 0xf7, 0x97, 0x94, 0xc8, 0xce, - 0x1a, 0x7d, 0x32, 0x48, 0x90, 0xd0, 0x7c, 0xfe, 0x96, 0x78, 0x54, 0xd1, - 0x95, 0x12, 0xa1, 0x68, 0x2d, 0x5e, 0x27, 0xc1, 0x96, 0x64, 0xd2, 0x29, - 0x5e, 0x7c, 0x5f, 0x57, 0x41, 0x8a, 0xa0, 0x5a, 0x78, 0x6e, 0xf7, 0x32, - 0x10, 0xac, 0xeb, 0x9c, 0x88, 0x44, 0x2e, 0xa4, 0x9f, 0x9f, 0xeb, 0x11, - 0x18, 0x71, 0x72, 0x9a, 0xef, 0xf3, 0xc9, 0x83, 0xb7, 0xc9, 0x5e, 0x2e, - 0xfd, 0xef, 0xf9, 0xec, 0x11, 0x49, 0x95, 0xcb, 0x67, 0x5d, 0xe4, 0xa3, - 0xa0, 0x85, 0xdb, 0x2f, 0xb6, 0x2a, 0x95, 0x53, 0xae, 0x72, 0x22, 0xec, - 0xa2, 0xa6, 0x6e, 0x05, 0x01, 0x5f, 0x93, 0x0a, 0xd4, 0xec, 0x28, 0xe9, - 0x35, 0x85, 0x18, 0x30, 0x6d, 0x9e, 0x2f, 0x79, 0x5b, 0xed, 0xdd, 0x7d, - 0xff, 0x00, 0x4b, 0x85, 0xca, 0x66, 0x54, 0x66, 0xcf, 0x6d, 0x76, 0xbf, - 0xf2, 0xfa, 0x65, 0xd0, 0x14, 0x90, 0x86, 0xd2, 0x6d, 0xec, 0xde, 0xff, - 0x00, 0x9c, 0x24, 0x2a, 0xa8, 0x83, 0x9b, 0xfc, 0xe3, 0x21, 0xa6, 0xb8, - 0xb9, 0x00, 0x34, 0x3b, 0xe8, 0xfb, 0x63, 0x08, 0x78, 0x0b, 0x0f, 0xb1, - 0x9d, 0xfb, 0xb4, 0xf7, 0x1f, 0xc7, 0xf9, 0xeb, 0xe5, 0x3a, 0xb4, 0xb5, - 0x12, 0x1c, 0xf5, 0xc9, 0xfc, 0x98, 0x17, 0x17, 0xef, 0xeb, 0x7f, 0x6c, - 0xa1, 0x84, 0xe2, 0x5f, 0x38, 0x55, 0xdd, 0x7b, 0xf4, 0x63, 0xae, 0xd0, - 0x5e, 0x93, 0x7b, 0xfb, 0x5f, 0xbe, 0x6d, 0x11, 0x04, 0x53, 0x42, 0x12, - 0x65, 0xcb, 0x71, 0x2b, 0xd4, 0x19, 0xa6, 0xb9, 0xd4, 0x7b, 0xbf, 0xa5, - 0x1a, 0x6d, 0x21, 0x3c, 0xe4, 0x12, 0x5b, 0x19, 0x6d, 0xc0, 0x1a, 0xe9, - 0xd8, 0x70, 0x79, 0xf8, 0xe7, 0xe3, 0x00, 0x0a, 0x6d, 0xe2, 0xdb, 0x92, - 0x38, 0x76, 0x13, 0xbc, 0xdd, 0xa1, 0x9b, 0xd7, 0xfa, 0xc2, 0x85, 0x9d, - 0xab, 0x7a, 0x71, 0xdf, 0x58, 0x7e, 0x6a, 0xe8, 0xb6, 0x6f, 0xdf, 0xb4, - 0xff, 0x00, 0x3f, 0x9f, 0xc2, 0x96, 0x74, 0x7f, 0x8c, 0x54, 0x34, 0xc7, - 0x84, 0xdc, 0xf3, 0x84, 0x36, 0xa7, 0x91, 0x9f, 0x7f, 0xa6, 0x5c, 0x04, - 0x78, 0x93, 0xbc, 0x4a, 0xb6, 0x84, 0xf6, 0xbc, 0x18, 0xba, 0x96, 0x07, - 0x7c, 0x71, 0x82, 0x12, 0x1b, 0x83, 0x49, 0x46, 0x4e, 0x8e, 0x3f, 0x93, - 0xf4, 0xb9, 0xb6, 0xb9, 0xf0, 0x51, 0xa0, 0x14, 0xdd, 0x5e, 0xee, 0x10, - 0x3d, 0x66, 0x07, 0x5c, 0xfa, 0x9f, 0xf3, 0x19, 0xea, 0x0b, 0x78, 0xae, - 0x68, 0x63, 0x39, 0x5b, 0x25, 0xef, 0x3b, 0x09, 0x4b, 0xba, 0xae, 0x41, - 0x35, 0x95, 0x5b, 0xd3, 0x18, 0xcf, 0x69, 0x7c, 0xed, 0xfe, 0x6f, 0xf9, - 0xe0, 0x59, 0x01, 0xaf, 0x82, 0x72, 0x82, 0xa4, 0x7a, 0xfe, 0x30, 0xc1, - 0x18, 0x38, 0x42, 0x7f, 0xdc, 0xd2, 0xac, 0xd6, 0x71, 0x7e, 0x71, 0x60, - 0x70, 0xa0, 0xc5, 0xf1, 0x9a, 0xed, 0x69, 0x45, 0x31, 0x6b, 0xc0, 0xf3, - 0xd2, 0x99, 0xb7, 0xe7, 0x6d, 0xfd, 0x20, 0x65, 0x07, 0x69, 0xd6, 0x10, - 0xdd, 0x05, 0x11, 0xd5, 0x6f, 0x9f, 0x8c, 0x2e, 0xd0, 0xb7, 0xcd, 0x39, - 0xf9, 0x5c, 0xae, 0x11, 0xb0, 0x03, 0xd7, 0x1c, 0x37, 0x6b, 0xbe, 0xcc, - 0x15, 0xaa, 0x9d, 0x47, 0x73, 0xd7, 0x15, 0x42, 0x08, 0x87, 0x41, 0x37, - 0x2e, 0x6f, 0x9c, 0x7c, 0x8a, 0x7f, 0x9f, 0xf3, 0xd6, 0x96, 0x4c, 0x3c, - 0x2a, 0xd3, 0xcf, 0x13, 0xe7, 0x06, 0x80, 0x6b, 0x66, 0xbe, 0xbf, 0x38, - 0x68, 0x04, 0x1f, 0x27, 0x21, 0xe1, 0x17, 0x70, 0xeb, 0xd7, 0x05, 0x49, - 0x3e, 0x23, 0x4b, 0xf9, 0xf6, 0xcb, 0xf0, 0x8c, 0x35, 0x27, 0xd7, 0x19, - 0x20, 0x00, 0xfb, 0xef, 0x66, 0x35, 0x0b, 0x55, 0x9f, 0xaf, 0xe9, 0xee, - 0x8a, 0x24, 0xc2, 0xfa, 0xd8, 0x4d, 0x0a, 0xb6, 0x36, 0x7b, 0x7e, 0xd8, - 0x22, 0x88, 0x14, 0x62, 0x9b, 0x2f, 0xa9, 0xfb, 0xf3, 0xde, 0x20, 0x67, - 0x67, 0x2e, 0x1b, 0x81, 0x13, 0x87, 0x00, 0x7d, 0xf1, 0x1a, 0x04, 0x05, - 0x8f, 0xef, 0x29, 0x50, 0x1f, 0x26, 0x9d, 0x2f, 0xd7, 0x58, 0x32, 0xb6, - 0xa7, 0xdd, 0xfe, 0x7d, 0xc0, 0xc9, 0x00, 0xb7, 0x6f, 0xf5, 0x9a, 0x94, - 0x24, 0xb0, 0x72, 0xfb, 0xe3, 0x2d, 0x29, 0x50, 0x3d, 0x39, 0xd6, 0x02, - 0x0e, 0x92, 0xce, 0x1c, 0x04, 0x6a, 0xae, 0xf8, 0x9e, 0x32, 0x4a, 0x38, - 0x41, 0xeb, 0xd3, 0x10, 0xf9, 0x0d, 0xfd, 0x9b, 0x33, 0x6e, 0x7e, 0x7c, - 0xfb, 0xfe, 0x95, 0x19, 0x4a, 0x0a, 0x73, 0x36, 0x63, 0x00, 0x64, 0xd6, - 0x82, 0x3b, 0x41, 0xe7, 0xac, 0x6a, 0x78, 0x04, 0xb4, 0x08, 0xf5, 0xd9, - 0xde, 0x3b, 0x0a, 0x10, 0x8e, 0xed, 0x7a, 0xb8, 0xab, 0xcb, 0xae, 0x3f, - 0x66, 0x50, 0x1b, 0x47, 0xa8, 0x60, 0x0d, 0x5e, 0xed, 0x1c, 0xbc, 0x18, - 0x25, 0xca, 0xdf, 0x77, 0xfc, 0xfb, 0x35, 0x0d, 0x66, 0x96, 0xdf, 0x07, - 0x3d, 0x60, 0x4e, 0x5d, 0xa5, 0x18, 0xdb, 0xbd, 0xfb, 0x7d, 0xbd, 0xf0, - 0x81, 0x36, 0x7a, 0x96, 0xf8, 0xc3, 0x68, 0x95, 0x3c, 0x6f, 0x9c, 0xd9, - 0x44, 0x52, 0x6b, 0x9d, 0x8f, 0xa3, 0x3e, 0x71, 0x11, 0x2b, 0x00, 0xeb, - 0x87, 0x04, 0x75, 0xe9, 0x69, 0xeb, 0x30, 0x41, 0xf5, 0x73, 0xef, 0xfa, - 0x49, 0x6b, 0x09, 0x5f, 0x7c, 0x36, 0x92, 0xb6, 0x49, 0x75, 0xcc, 0x1f, - 0x5c, 0x88, 0x24, 0x4c, 0x8e, 0x1f, 0xa1, 0xeb, 0x80, 0x70, 0xb2, 0x84, - 0x93, 0x7c, 0x49, 0xa9, 0xc7, 0xc6, 0x68, 0xe0, 0x6d, 0x6f, 0x33, 0xcf, - 0xae, 0x01, 0x01, 0x44, 0xf2, 0x7c, 0xef, 0x08, 0x4a, 0x0d, 0xdd, 0x8e, - 0x8c, 0xf8, 0xfc, 0x3e, 0xaf, 0xf9, 0xfc, 0x0b, 0x83, 0x2f, 0x2e, 0x4d, - 0xd4, 0x2d, 0x1d, 0xf8, 0xd6, 0xb0, 0xac, 0x05, 0xe7, 0x6a, 0xcf, 0xf7, - 0x80, 0x23, 0xc0, 0x2e, 0xb1, 0xf3, 0x58, 0x36, 0xbd, 0x2b, 0xf6, 0xbf, - 0x4c, 0x3a, 0x17, 0xa9, 0x6d, 0x8f, 0xe1, 0x96, 0x3e, 0x43, 0x7d, 0x53, - 0x15, 0x6f, 0x57, 0xef, 0xfa, 0x79, 0x82, 0x20, 0xc7, 0xa9, 0xbf, 0xb6, - 0x26, 0x2a, 0x45, 0x27, 0xde, 0x6f, 0x12, 0x88, 0xa8, 0x30, 0xb5, 0xd9, - 0xaa, 0x5d, 0xf2, 0x63, 0x0a, 0x53, 0x57, 0xc4, 0x1f, 0xb6, 0x35, 0x05, - 0x2d, 0x41, 0xbf, 0xc6, 0x10, 0xd6, 0x93, 0xf1, 0xfb, 0xfd, 0x71, 0x25, - 0x53, 0x42, 0xab, 0xce, 0x9d, 0x63, 0xd8, 0x28, 0x31, 0xff, 0x00, 0x3d, - 0xcd, 0x37, 0xab, 0xce, 0x1b, 0x49, 0xef, 0xb6, 0x1d, 0x55, 0xcd, 0xa7, - 0x80, 0x50, 0x9e, 0x35, 0xc6, 0x49, 0x75, 0x34, 0x55, 0xe7, 0xf9, 0x32, - 0x79, 0x0c, 0x20, 0xe4, 0x51, 0xbf, 0xb9, 0x6f, 0xa6, 0x2f, 0x22, 0xf0, - 0x1c, 0x9b, 0x9e, 0x83, 0xdf, 0x3d, 0xee, 0xff, 0x00, 0xbf, 0xe9, 0x11, - 0x59, 0xae, 0x70, 0x04, 0x9a, 0x8d, 0xd4, 0xd7, 0x7f, 0x7c, 0x01, 0xa9, - 0x52, 0x1e, 0x68, 0xee, 0x7d, 0xf1, 0x74, 0x50, 0xe7, 0x31, 0xde, 0x00, - 0x85, 0x75, 0xdf, 0x02, 0xe5, 0x1b, 0x80, 0xbe, 0xa1, 0xcf, 0x39, 0xaa, - 0xcf, 0x0a, 0x0b, 0x1f, 0x4d, 0xe2, 0x18, 0x08, 0x44, 0xbe, 0x27, 0xf9, - 0xec, 0x43, 0x66, 0xe9, 0x85, 0x72, 0x00, 0xa3, 0xb7, 0xc6, 0x2c, 0xab, - 0xcc, 0x27, 0xde, 0x67, 0x60, 0x0b, 0xba, 0x3f, 0x39, 0x0a, 0xaa, 0x96, - 0x07, 0x30, 0xbf, 0x4d, 0x7d, 0xf2, 0xe3, 0xc3, 0x24, 0x39, 0x31, 0x1b, - 0x90, 0xd1, 0x0a, 0x85, 0x3e, 0xba, 0xc8, 0xd3, 0xc5, 0x7e, 0xff, 0x00, - 0xa5, 0x04, 0x5a, 0x36, 0x1d, 0x99, 0x51, 0x01, 0x55, 0x4c, 0xe5, 0xf4, - 0xe7, 0x39, 0xfc, 0xe1, 0xeb, 0x8f, 0x03, 0x6c, 0xc0, 0x80, 0x8d, 0x4f, - 0x10, 0x45, 0xfb, 0x60, 0x2d, 0x2b, 0x4e, 0x71, 0x0a, 0x22, 0x7d, 0xbe, - 0xf9, 0x31, 0xac, 0x73, 0xb2, 0xe1, 0x3a, 0x7f, 0x23, 0xfc, 0xf4, 0xc0, - 0xe8, 0x65, 0xc1, 0x81, 0x8d, 0x1b, 0xe7, 0xbc, 0x2a, 0x6d, 0x12, 0x8e, - 0x5a, 0xb9, 0xce, 0x51, 0xbd, 0x66, 0xf5, 0x23, 0x94, 0xd9, 0x75, 0x7d, - 0xb7, 0xf7, 0xcd, 0x7e, 0x54, 0x11, 0xf7, 0xe9, 0xca, 0x51, 0x35, 0x69, - 0xf5, 0xc7, 0x59, 0xe6, 0xbf, 0x7f, 0xd3, 0xed, 0x54, 0x27, 0x9e, 0xb2, - 0x44, 0x57, 0xaa, 0xf1, 0xb9, 0x7f, 0x7c, 0x43, 0x34, 0x1c, 0x87, 0x1f, - 0xcb, 0xfe, 0xe4, 0x5c, 0xa9, 0x54, 0xdc, 0x5d, 0x7a, 0x59, 0xe3, 0x02, - 0x30, 0x06, 0xf5, 0x78, 0xc5, 0xa0, 0x23, 0x5b, 0x67, 0xaf, 0x79, 0xb3, - 0xa1, 0x9b, 0xcd, 0xf0, 0x7d, 0xb3, 0xda, 0x2a, 0x27, 0x86, 0x71, 0xfe, - 0x7d, 0x6b, 0x54, 0x41, 0xe7, 0x18, 0x64, 0xa7, 0x3a, 0x73, 0x9a, 0x84, - 0x2f, 0x73, 0xa7, 0x1d, 0x86, 0xcf, 0x05, 0x7a, 0xf7, 0xc4, 0x6e, 0xf3, - 0x40, 0x2d, 0xfc, 0xfe, 0x32, 0x8c, 0xba, 0x5d, 0x13, 0x5f, 0x8e, 0x72, - 0xbd, 0x15, 0xf3, 0xd9, 0x9b, 0x7b, 0xef, 0xd3, 0x01, 0xab, 0x4e, 0xfd, - 0x32, 0xd9, 0x04, 0x03, 0xf3, 0xeb, 0x91, 0xc8, 0x2d, 0xea, 0x26, 0xc7, - 0xcf, 0xd3, 0xc6, 0x0a, 0xe9, 0x96, 0x86, 0x80, 0x1e, 0x77, 0xf1, 0xe9, - 0x89, 0x2c, 0x8b, 0x97, 0x7b, 0xf8, 0xc0, 0x8d, 0x50, 0xc2, 0x3f, 0x7c, - 0x58, 0xa4, 0x4d, 0x9b, 0xc0, 0x04, 0x7e, 0xad, 0xff, 0x00, 0x3d, 0xc0, - 0xee, 0x29, 0x60, 0x74, 0xd8, 0x1d, 0x57, 0xfb, 0xc4, 0x22, 0xd2, 0x25, - 0x0e, 0x5f, 0x33, 0x14, 0xf5, 0x07, 0x85, 0xf7, 0xe7, 0x01, 0xef, 0x1d, - 0xd6, 0xd2, 0x4c, 0x54, 0xf0, 0x79, 0xd5, 0xfc, 0xf4, 0xc9, 0x40, 0xf0, - 0x7c, 0xe7, 0xdc, 0x3f, 0x48, 0x31, 0xb9, 0xc3, 0xe6, 0xb3, 0x89, 0x8d, - 0x55, 0xb4, 0x16, 0x5b, 0x89, 0x1d, 0x2e, 0x95, 0x75, 0xdf, 0x1e, 0x98, - 0x56, 0x4a, 0x7a, 0xd1, 0x78, 0xd4, 0xfe, 0x71, 0x6d, 0xa9, 0x48, 0x81, - 0xb1, 0xc7, 0x73, 0x83, 0xbd, 0x18, 0x3b, 0xf7, 0x6e, 0xac, 0xd4, 0x7a, - 0xff, 0x00, 0x59, 0x0a, 0x96, 0x95, 0x5e, 0x26, 0x7f, 0x9f, 0x23, 0xb3, - 0x4d, 0xc4, 0xbb, 0x2a, 0x52, 0x3a, 0x77, 0xaf, 0xe3, 0x1e, 0x6f, 0x97, - 0x04, 0xc6, 0x89, 0xd5, 0xe0, 0x4e, 0xb1, 0x26, 0xec, 0xc1, 0xd6, 0xc7, - 0x2f, 0xd3, 0xf1, 0x32, 0x4e, 0x24, 0xd8, 0xf7, 0xde, 0x32, 0xff, 0x00, - 0xad, 0xb7, 0x67, 0xd3, 0xbf, 0xa6, 0x19, 0xcc, 0x6d, 0xcf, 0xbf, 0xe9, - 0x02, 0x23, 0xb3, 0xbc, 0x02, 0x82, 0xa5, 0x3c, 0x2f, 0x78, 0x01, 0x04, - 0x25, 0x1e, 0xf9, 0xfb, 0x57, 0x36, 0x3c, 0xe2, 0xbb, 0x6c, 0x83, 0x7d, - 0x7f, 0x37, 0xcb, 0xa0, 0x81, 0xae, 0xdd, 0x6b, 0x05, 0xaa, 0xe9, 0x69, - 0xf5, 0xdf, 0x7f, 0x6c, 0x09, 0x60, 0x4a, 0x0b, 0x1c, 0x92, 0x6f, 0x41, - 0xe9, 0xaf, 0xf9, 0xfa, 0x6e, 0x94, 0x0c, 0x4a, 0x41, 0xb0, 0x67, 0x2d, - 0x71, 0x89, 0x48, 0x2c, 0xa5, 0x37, 0xc7, 0xaf, 0x58, 0x13, 0xa4, 0xbc, - 0x22, 0x3f, 0x9f, 0xd6, 0x49, 0xcc, 0x55, 0x1a, 0xeb, 0x87, 0xec, 0xb9, - 0x10, 0x62, 0x10, 0xdf, 0x8c, 0x75, 0xa4, 0x49, 0xf3, 0x9f, 0x7c, 0xfd, - 0xff, 0x00, 0x4a, 0x30, 0x2a, 0x16, 0x66, 0x8b, 0x1f, 0x84, 0xaf, 0xf1, - 0x80, 0x0a, 0x18, 0x7b, 0xde, 0xbe, 0xf7, 0x28, 0x01, 0x41, 0x52, 0x8f, - 0xe1, 0xf5, 0xc9, 0x0b, 0x87, 0x4c, 0x8f, 0x8c, 0x00, 0x0c, 0x6e, 0x89, - 0xdb, 0x8a, 0xc2, 0x24, 0x9b, 0xb9, 0xa7, 0xa7, 0xce, 0x00, 0x87, 0x1f, - 0xc3, 0xff, 0x00, 0x3c, 0x34, 0x93, 0xbf, 0x11, 0x1d, 0x07, 0xb1, 0x61, - 0x57, 0xbf, 0x1f, 0xde, 0x28, 0x06, 0x09, 0x27, 0x57, 0xa3, 0x28, 0xd1, - 0x01, 0x78, 0xa7, 0x1a, 0xeb, 0x7f, 0xd3, 0x8a, 0x20, 0xbc, 0x79, 0x56, - 0x7d, 0xf1, 0xde, 0x53, 0xc1, 0xe7, 0xfe, 0xf1, 0x84, 0xf6, 0x13, 0xa7, - 0x3c, 0xe1, 0x87, 0xe1, 0xfe, 0xff, 0x00, 0xa5, 0x03, 0x29, 0x4a, 0xf8, - 0xd6, 0x00, 0xe6, 0xe9, 0xe7, 0xb6, 0x57, 0x6d, 0xb1, 0x87, 0x47, 0xa6, - 0x25, 0x60, 0xaa, 0xa9, 0x37, 0xa7, 0xde, 0x7b, 0x8e, 0x24, 0x27, 0x27, - 0x63, 0xa7, 0x8f, 0xae, 0x58, 0x4e, 0x17, 0x64, 0xa6, 0xb1, 0x8c, 0x0d, - 0x05, 0x0f, 0x86, 0xdf, 0xbe, 0x14, 0xa6, 0xfb, 0x7e, 0x1f, 0xe7, 0xb8, - 0x22, 0xe6, 0x4b, 0x3f, 0x39, 0xf3, 0x92, 0x24, 0xb7, 0xb9, 0x7d, 0x58, - 0xa6, 0x40, 0x3c, 0x14, 0xfd, 0xb3, 0x61, 0x08, 0x66, 0x50, 0x86, 0xe4, - 0x39, 0xb0, 0x03, 0xde, 0xcd, 0xf9, 0xc6, 0x35, 0x84, 0x28, 0xf8, 0xca, - 0xf5, 0x06, 0xcc, 0xfb, 0x97, 0xef, 0xfa, 0x45, 0x9f, 0x3f, 0xc4, 0xe0, - 0x46, 0x44, 0x07, 0x49, 0xdb, 0x77, 0x3b, 0x84, 0x24, 0x96, 0x3e, 0x71, - 0x6f, 0x65, 0x65, 0x6b, 0xd5, 0xf7, 0xf9, 0xc4, 0x17, 0x67, 0x55, 0xe2, - 0xe3, 0x57, 0x06, 0xdd, 0x9c, 0x7d, 0xf2, 0x92, 0x8f, 0x1b, 0x5c, 0x1b, - 0xf9, 0xe7, 0x00, 0x44, 0x68, 0x16, 0xb7, 0xfc, 0xfc, 0xd0, 0x74, 0x3b, - 0x70, 0x07, 0xe9, 0xa5, 0x0d, 0x5a, 0xd7, 0xd3, 0x2c, 0x74, 0x1d, 0x4d, - 0x98, 0xc3, 0xa5, 0x69, 0xbd, 0x93, 0xf3, 0x9c, 0x74, 0x0d, 0x29, 0x78, - 0x58, 0xfd, 0x7a, 0x65, 0xe9, 0xcb, 0x7b, 0x48, 0x22, 0x78, 0xc4, 0x36, - 0x4c, 0x39, 0x04, 0x6f, 0x00, 0x0e, 0xf6, 0xfb, 0xfe, 0x96, 0x12, 0x22, - 0x57, 0xcc, 0x72, 0x9f, 0x82, 0x03, 0xc9, 0x7f, 0xd9, 0x8a, 0xe1, 0xa3, - 0x01, 0x82, 0x6b, 0xd3, 0x2e, 0xee, 0x53, 0xa3, 0x71, 0xe1, 0x3e, 0x30, - 0x75, 0x05, 0x9b, 0x03, 0x57, 0x0d, 0xd5, 0x6b, 0x47, 0x07, 0xce, 0x41, - 0xbc, 0x24, 0x19, 0xc4, 0x62, 0x0b, 0x36, 0xd9, 0xeb, 0xfe, 0x78, 0x82, - 0x91, 0xe0, 0xc2, 0xe2, 0x6e, 0xe2, 0x23, 0x2b, 0xf3, 0x9c, 0x07, 0x62, - 0x8c, 0xac, 0xe3, 0xfd, 0xe6, 0xa0, 0x4e, 0x76, 0x71, 0x83, 0x56, 0xae, - 0x0e, 0x82, 0xff, 0x00, 0x1c, 0x7d, 0x72, 0x61, 0x43, 0x8a, 0xc7, 0x8c, - 0x21, 0x91, 0x59, 0x7d, 0x18, 0x89, 0x72, 0x1f, 0x51, 0xfa, 0x76, 0x62, - 0x84, 0x8e, 0x5c, 0x21, 0x84, 0xe8, 0xdf, 0x5b, 0x61, 0x50, 0x3c, 0x00, - 0x9c, 0xfd, 0x7c, 0x7e, 0xd8, 0xcc, 0x0b, 0x94, 0x0d, 0xb1, 0x77, 0xf3, - 0x87, 0xd4, 0x25, 0xa2, 0xfe, 0x7c, 0xe3, 0x36, 0x80, 0x85, 0x3d, 0x5f, - 0x8e, 0x58, 0xdb, 0x24, 0x33, 0x9d, 0xf1, 0xbe, 0x31, 0x14, 0xe4, 0x1d, - 0xff, 0x00, 0x9e, 0xb0, 0xac, 0x22, 0xdf, 0x19, 0xdc, 0x21, 0x92, 0x8b, - 0xc9, 0xe3, 0xe3, 0x9c, 0x07, 0x5a, 0xbd, 0xed, 0x86, 0x31, 0x61, 0x4b, - 0xc6, 0x9e, 0xb1, 0x86, 0x34, 0x28, 0x34, 0x43, 0x84, 0xef, 0x8c, 0x27, - 0x82, 0xc7, 0x03, 0x46, 0x32, 0x27, 0x6f, 0xba, 0x69, 0x82, 0x7b, 0x7f, - 0xdb, 0xf4, 0x9a, 0x16, 0x69, 0xbf, 0x9c, 0xb3, 0x31, 0x54, 0x38, 0x94, - 0x4c, 0x45, 0x36, 0xf5, 0xf7, 0xf9, 0xc0, 0xd9, 0x46, 0x85, 0x8b, 0x17, - 0x9f, 0xc5, 0xc5, 0xb5, 0x14, 0x10, 0xf2, 0xe8, 0xfa, 0xea, 0xe5, 0x5a, - 0x8b, 0x8e, 0x58, 0x9b, 0xd0, 0x93, 0x66, 0xe1, 0xd7, 0xce, 0x5a, 0xda, - 0xe2, 0x78, 0xbf, 0xe7, 0xef, 0x50, 0xc5, 0x31, 0x3a, 0xcd, 0xaf, 0x22, - 0x34, 0x94, 0x82, 0xec, 0xc7, 0x80, 0x41, 0x0c, 0xdf, 0xfb, 0x9e, 0x71, - 0x15, 0xae, 0x7e, 0x86, 0x40, 0x4e, 0xc7, 0xa1, 0x1e, 0x1b, 0xf8, 0xc3, - 0x10, 0x15, 0x49, 0xc0, 0xdf, 0x8c, 0x25, 0x04, 0x97, 0x9d, 0xbb, 0xe1, - 0x3e, 0x33, 0xd2, 0xc2, 0x7e, 0xa3, 0xc4, 0x75, 0x7a, 0x12, 0x50, 0xff, - 0x00, 0x38, 0x81, 0x74, 0x3b, 0x28, 0x13, 0xd5, 0xef, 0x8c, 0x24, 0x8a, - 0x14, 0x32, 0x8d, 0x78, 0x9e, 0xff, 0x00, 0xf7, 0x39, 0x7b, 0x89, 0x46, - 0x9c, 0x0c, 0x09, 0x42, 0x5e, 0x67, 0xa1, 0x31, 0xea, 0xc9, 0x60, 0x3e, - 0x87, 0xfd, 0xc2, 0xf9, 0xc9, 0x7f, 0x9f, 0x1a, 0xac, 0x8b, 0x45, 0x99, - 0xee, 0x4b, 0x43, 0x7d, 0x57, 0xd7, 0x20, 0x02, 0xec, 0x6c, 0x1a, 0xef, - 0x8f, 0x1d, 0xe1, 0xf3, 0x2e, 0xe6, 0xbf, 0x7c, 0xb6, 0xa2, 0x0a, 0x86, - 0xcd, 0x71, 0x7c, 0x2b, 0x92, 0x09, 0x41, 0x2f, 0x9c, 0xd5, 0xd2, 0x8d, - 0xaf, 0xb3, 0xf9, 0xe3, 0x11, 0xee, 0x42, 0x7d, 0xbf, 0x50, 0x0d, 0x1d, - 0x5e, 0xd5, 0xaf, 0xd5, 0x31, 0xa0, 0xac, 0x53, 0xcc, 0x98, 0xe2, 0x95, - 0x29, 0x5b, 0x53, 0xc7, 0xd3, 0x12, 0x8d, 0x10, 0xdd, 0x9e, 0x7c, 0xb8, - 0x48, 0x33, 0xd9, 0xf5, 0x70, 0xb5, 0x00, 0x2d, 0xed, 0xaf, 0x79, 0xb3, - 0x2b, 0x8a, 0x1a, 0xa7, 0xf9, 0xfa, 0x06, 0x76, 0x18, 0xe1, 0x7c, 0x6a, - 0x3e, 0x7f, 0xd6, 0x6a, 0xac, 0xbc, 0xa7, 0x3d, 0xf1, 0x8d, 0x3a, 0xba, - 0x9b, 0x36, 0xf7, 0xcd, 0x0c, 0x60, 0xf6, 0x1e, 0x40, 0x79, 0xf1, 0xf3, - 0x84, 0x6d, 0x10, 0x72, 0x74, 0xe1, 0x0e, 0xe8, 0x46, 0x8a, 0xa5, 0xdf, - 0xc6, 0x7a, 0x00, 0xa7, 0xea, 0x0e, 0xec, 0x50, 0x79, 0x29, 0xfb, 0x64, - 0x8a, 0x80, 0x63, 0xaa, 0x4e, 0x71, 0xa1, 0xdc, 0x0b, 0xc2, 0x3f, 0x7f, - 0xeb, 0x16, 0xa0, 0x0b, 0xc5, 0x2c, 0xc2, 0xa8, 0xd0, 0x1e, 0x46, 0x0a, - 0xf7, 0x48, 0xc3, 0xcf, 0xf0, 0xc2, 0x5d, 0x1a, 0x4e, 0x8f, 0xf3, 0xf2, - 0xad, 0x08, 0x9b, 0xfb, 0x19, 0xb8, 0x96, 0x58, 0x28, 0x9b, 0xf9, 0xc5, - 0x4a, 0x93, 0x40, 0x73, 0xad, 0x62, 0xa0, 0x18, 0xf2, 0x87, 0x38, 0x7a, - 0xd9, 0x03, 0x8a, 0x09, 0x57, 0x6f, 0xa4, 0xfa, 0x63, 0xb7, 0x2b, 0x85, - 0x1d, 0x7a, 0xff, 0x00, 0x38, 0x76, 0xc0, 0x06, 0x34, 0xf0, 0xdf, 0x9e, - 0xd8, 0x8c, 0x9a, 0xad, 0x5f, 0xd4, 0x4a, 0x62, 0x53, 0xcc, 0x00, 0x3e, - 0xc6, 0x31, 0x82, 0x43, 0x4f, 0x8e, 0xf2, 0x07, 0x36, 0xc3, 0x1b, 0x4e, - 0x7e, 0xf3, 0xe7, 0x0f, 0x14, 0xbb, 0x1c, 0xa7, 0xce, 0x5c, 0xb3, 0x6d, - 0x38, 0xe7, 0x9c, 0x13, 0x8b, 0x35, 0x6c, 0x08, 0x9e, 0x1c, 0xa0, 0x5a, - 0x2a, 0x3e, 0xcf, 0xf1, 0xfe, 0x7a, 0x49, 0x76, 0x5c, 0x5c, 0x58, 0xd5, - 0x62, 0x70, 0x9c, 0xf0, 0xbc, 0xaa, 0xd5, 0xbd, 0x62, 0x76, 0x15, 0x76, - 0x0f, 0x78, 0x41, 0x4d, 0x6b, 0xa4, 0xd6, 0xf7, 0xd7, 0x3c, 0xfa, 0x1e, - 0x72, 0x28, 0x72, 0x97, 0x84, 0xfa, 0xf3, 0xde, 0x28, 0x84, 0x29, 0x25, - 0x92, 0xda, 0xde, 0xbf, 0x8f, 0xd6, 0x4b, 0xd3, 0x7b, 0x4e, 0xdb, 0xfb, - 0x63, 0xb0, 0xd7, 0x20, 0x39, 0xf8, 0xc0, 0x09, 0x2a, 0x89, 0xc5, 0x33, - 0xd8, 0xab, 0xf9, 0x70, 0x88, 0x08, 0x79, 0x71, 0x50, 0x20, 0x38, 0xf3, - 0xbd, 0x66, 0xec, 0x01, 0x59, 0xe8, 0x2f, 0xaf, 0x5a, 0xc4, 0x44, 0x9c, - 0xcf, 0xba, 0x7f, 0xcf, 0x60, 0x3b, 0x18, 0x9a, 0x0e, 0xc1, 0x42, 0x0a, - 0xe8, 0xc0, 0x01, 0x05, 0xb0, 0xed, 0x3c, 0x3f, 0x39, 0x44, 0x55, 0xe4, - 0x94, 0xf6, 0xc1, 0xd6, 0x03, 0x67, 0xd9, 0x7d, 0x79, 0x7f, 0xee, 0x94, - 0x79, 0xf0, 0xb1, 0x37, 0x96, 0xa4, 0x0e, 0x0e, 0x97, 0x87, 0xf6, 0xfb, - 0x7e, 0xb4, 0x76, 0x01, 0xb1, 0xe5, 0x85, 0xf7, 0x37, 0xf3, 0x85, 0x56, - 0xad, 0x05, 0xef, 0xc1, 0xf9, 0xe7, 0x0d, 0x27, 0x9a, 0xce, 0x4d, 0x1f, - 0xcf, 0xef, 0x8e, 0xa5, 0x75, 0x22, 0x9b, 0xb8, 0xc1, 0xa0, 0xe9, 0x3c, - 0xfd, 0x30, 0x2a, 0xf3, 0x05, 0xdc, 0xa6, 0x75, 0xc3, 0x25, 0xf8, 0xfe, - 0x7c, 0xff, 0x00, 0x9e, 0x7b, 0x21, 0x04, 0x9c, 0xe0, 0xba, 0x3a, 0xa1, - 0xf5, 0x4f, 0x3f, 0x7c, 0xba, 0xd2, 0xaa, 0xb5, 0x5d, 0x66, 0xe5, 0x2a, - 0x01, 0xbf, 0x7e, 0xf1, 0xd3, 0x21, 0xc1, 0x1c, 0xe9, 0xa1, 0xdf, 0x67, - 0xb7, 0xac, 0xc8, 0x32, 0x14, 0x51, 0x4a, 0xf1, 0xf6, 0xfa, 0x62, 0x24, - 0x44, 0xf0, 0xaa, 0xaf, 0xe4, 0xfe, 0xb2, 0x90, 0xf8, 0x42, 0x6e, 0xd2, - 0x7d, 0xf0, 0xc2, 0xc7, 0x35, 0x3d, 0xbf, 0xee, 0x39, 0xc2, 0x44, 0x50, - 0xf0, 0xcf, 0x8e, 0x71, 0xa9, 0xbc, 0x70, 0x6b, 0xc6, 0x4a, 0x3a, 0x9d, - 0x71, 0xf7, 0xc2, 0x3b, 0x40, 0x1b, 0x47, 0xbd, 0xb7, 0xac, 0xb9, 0x0d, - 0x22, 0xf9, 0xd7, 0xf9, 0xe6, 0x87, 0x12, 0x3f, 0x28, 0xc4, 0x68, 0xf0, - 0x41, 0xa0, 0x3a, 0xa6, 0x03, 0xdb, 0x5e, 0xba, 0xfb, 0xe5, 0x14, 0x80, - 0x17, 0x47, 0xed, 0x90, 0x97, 0x45, 0x8d, 0x0e, 0xdf, 0x79, 0xf3, 0x8e, - 0x68, 0xba, 0x86, 0x4e, 0x2e, 0xbe, 0xdf, 0x6c, 0x26, 0x0a, 0xb0, 0x36, - 0xa9, 0x3e, 0xff, 0x00, 0xac, 0x81, 0x23, 0x6c, 0x1c, 0x80, 0xfe, 0xc1, - 0xf9, 0xc0, 0xa9, 0xb8, 0x4d, 0x93, 0x9e, 0x5e, 0x8e, 0x26, 0x6d, 0x52, - 0xdc, 0x23, 0x3a, 0xe3, 0xd0, 0xfb, 0xf7, 0x8c, 0x7e, 0x70, 0x39, 0x39, - 0x34, 0xfa, 0x73, 0x84, 0xab, 0x67, 0x3d, 0xe1, 0xc1, 0x15, 0xb0, 0xc5, - 0x4e, 0xa2, 0x4e, 0x4d, 0x9f, 0xc7, 0xf9, 0xea, 0xa0, 0x15, 0xe0, 0x22, - 0xbf, 0x6c, 0x84, 0x42, 0xc2, 0x69, 0x39, 0xb8, 0xd9, 0x9b, 0x21, 0x2a, - 0x0c, 0x2f, 0x7b, 0xf3, 0x81, 0x29, 0x1f, 0x56, 0x93, 0xc9, 0xeb, 0xce, - 0x6e, 0x5f, 0x70, 0x6c, 0x1c, 0xbf, 0xbf, 0xae, 0x11, 0xe9, 0x42, 0x83, - 0x4d, 0xde, 0x51, 0xe3, 0xb9, 0xe7, 0x36, 0x71, 0xad, 0x78, 0x10, 0x7e, - 0x97, 0xed, 0xfa, 0xc8, 0x2a, 0xed, 0xb3, 0x5b, 0xd7, 0x0e, 0x43, 0x5b, - 0xa9, 0xab, 0xb7, 0xfd, 0x61, 0x56, 0x43, 0x25, 0x53, 0x46, 0xb8, 0xe0, - 0xde, 0xef, 0x78, 0x7a, 0xb1, 0xb0, 0x45, 0x2e, 0xbb, 0x7c, 0x7f, 0xdc, - 0x6e, 0x07, 0xe8, 0x3d, 0xb7, 0x8b, 0x12, 0xa2, 0x30, 0x77, 0x72, 0x77, - 0xd0, 0x9e, 0x90, 0xe2, 0x5a, 0xbe, 0xea, 0x7b, 0xf8, 0x54, 0x35, 0x47, - 0xd4, 0xc0, 0x4a, 0x4c, 0xda, 0xeb, 0x13, 0x83, 0x3f, 0x87, 0x78, 0xac, - 0x41, 0xfc, 0xbb, 0xc4, 0xcb, 0xe9, 0x7e, 0x4e, 0x09, 0xc2, 0xfc, 0x3d, - 0x73, 0xd4, 0x7e, 0x3e, 0xb8, 0x89, 0x6f, 0xf1, 0xf5, 0xc1, 0xf8, 0x6f, - 0xe3, 0xe7, 0x13, 0xe6, 0x3f, 0x3f, 0x38, 0x32, 0x1c, 0x9f, 0xc7, 0x9c, - 0x4e, 0xf8, 0x7e, 0x3c, 0xe6, 0xd9, 0xf8, 0xfe, 0x71, 0x29, 0x64, 0x7b, - 0xff, 0x00, 0x7e, 0x09, 0x00, 0x44, 0x2a, 0x8f, 0xaf, 0x3f, 0x97, 0x05, - 0x53, 0x44, 0xf3, 0xfd, 0xb8, 0x8e, 0x49, 0xe5, 0xfe, 0xec, 0x44, 0xb6, - 0xf6, 0x18, 0x37, 0xf4, 0x30, 0x6e, 0x43, 0xdc, 0x6f, 0x04, 0xfe, 0xae, - 0x7a, 0x6f, 0xe7, 0xd3, 0x07, 0xeb, 0xd9, 0xff, 0x00, 0x38, 0x8a, 0x9b, - 0x27, 0x8f, 0xf5, 0xce, 0x6f, 0xe5, 0xfe, 0xb2, 0xe5, 0x05, 0xf9, 0xf4, - 0xcf, 0x3a, 0x7e, 0x7f, 0xd6, 0x0a, 0xc1, 0x5f, 0x3f, 0xeb, 0x37, 0x4b, - 0xf5, 0x7f, 0xac, 0x2b, 0x1f, 0x74, 0xff, 0x00, 0xac, 0x95, 0x0d, 0x3a, - 0x2c, 0xe4, 0xf5, 0xc6, 0x16, 0x26, 0xdd, 0x89, 0x76, 0xfb, 0xdc, 0x22, - 0x28, 0xe1, 0x16, 0x6f, 0x16, 0x61, 0x0c, 0x8e, 0xf7, 0xf9, 0xf4, 0xc3, - 0x38, 0x8e, 0x56, 0xda, 0x0b, 0x12, 0xe9, 0x5f, 0x3c, 0xfd, 0x0c, 0xc6, - 0x44, 0x04, 0xa7, 0xa9, 0x3f, 0x9f, 0x6f, 0x39, 0xb7, 0x11, 0x41, 0xd6, - 0xc8, 0x70, 0x76, 0x1f, 0xae, 0x18, 0x6d, 0x57, 0xb2, 0xff, 0x00, 0x6c, - 0x49, 0x51, 0x1d, 0x78, 0xff, 0x00, 0x96, 0xe5, 0x10, 0xa8, 0xbd, 0x73, - 0xd1, 0x3d, 0x7f, 0xac, 0x31, 0xec, 0x85, 0x11, 0xb4, 0x67, 0xc8, 0xfd, - 0x32, 0xcc, 0x8f, 0x4c, 0xa8, 0x7d, 0x62, 0x68, 0x8e, 0x40, 0x60, 0xd0, - 0x7f, 0x73, 0x24, 0x6b, 0xe3, 0x77, 0x5b, 0xdf, 0xf5, 0x9a, 0x82, 0x67, - 0x0e, 0x13, 0x08, 0x2b, 0xd3, 0x3f, 0xd6, 0x7a, 0xa7, 0xd1, 0xdc, 0x0a, - 0x2c, 0x6f, 0x94, 0x5f, 0xae, 0x01, 0x88, 0xd0, 0xde, 0x9f, 0xef, 0xdb, - 0x0b, 0x35, 0xb7, 0x41, 0xf1, 0xf1, 0x33, 0x52, 0x1e, 0x03, 0xfd, 0xf1, - 0x9f, 0x67, 0xc3, 0x87, 0xe7, 0xf5, 0x89, 0x02, 0xee, 0xf9, 0x5c, 0x0a, - 0x00, 0x7a, 0x55, 0x3d, 0xb2, 0x24, 0x93, 0x6b, 0x59, 0x68, 0xaa, 0x4d, - 0xf7, 0x88, 0xaa, 0x6a, 0x73, 0x59, 0xbe, 0xa3, 0xd0, 0x7b, 0x27, 0xbe, - 0x29, 0x3c, 0x4b, 0x4f, 0xef, 0xf2, 0x62, 0x97, 0x99, 0x28, 0x09, 0xd5, - 0xff, 0x00, 0x58, 0x1a, 0xb2, 0x34, 0xbd, 0x5b, 0xf6, 0xc7, 0x02, 0x53, - 0xc8, 0xc7, 0xb3, 0xce, 0x77, 0xc4, 0x74, 0x92, 0x7e, 0x5c, 0x06, 0x84, - 0x6e, 0x8b, 0x7f, 0x93, 0x1a, 0x15, 0x05, 0xa6, 0xf5, 0xf9, 0xce, 0x3b, - 0x4d, 0xee, 0xad, 0xe3, 0xe3, 0x06, 0x62, 0x0d, 0x09, 0xbc, 0x6f, 0x80, - 0x5d, 0x3c, 0xbe, 0xf8, 0xb1, 0x5b, 0xc9, 0xb4, 0x15, 0xc1, 0x10, 0x74, - 0x95, 0x2f, 0x8f, 0x5b, 0xa7, 0xed, 0x92, 0x85, 0x72, 0x3d, 0x1c, 0xf3, - 0x92, 0x1b, 0x3c, 0x97, 0x8e, 0xf2, 0x8e, 0xc1, 0x34, 0xab, 0xf8, 0xe4, - 0x50, 0x10, 0x6a, 0x8c, 0x01, 0xa0, 0xa0, 0xf9, 0x3d, 0x71, 0xa9, 0x4a, - 0x46, 0x1f, 0xbe, 0x28, 0x01, 0x73, 0xb7, 0x07, 0xfb, 0xc5, 0x67, 0x63, - 0x41, 0xe4, 0x66, 0xbd, 0x38, 0xdc, 0xf7, 0xf2, 0x6e, 0x43, 0xc3, 0x30, - 0x4e, 0xba, 0xd6, 0xb9, 0xeb, 0x0d, 0x43, 0x03, 0x7d, 0xeb, 0xe9, 0xa3, - 0x5e, 0xdf, 0xac, 0x74, 0xc2, 0x61, 0xc0, 0x01, 0x5f, 0xce, 0x5c, 0x31, - 0xad, 0xc0, 0x06, 0x9c, 0x6c, 0x1f, 0x7c, 0x56, 0x0b, 0x5c, 0x48, 0x2f, - 0x2b, 0xe3, 0xa7, 0xe7, 0x2d, 0x15, 0x17, 0x55, 0xa6, 0x9f, 0x5d, 0xbf, - 0x53, 0xc6, 0x13, 0xb3, 0x07, 0xa5, 0x70, 0x35, 0xa4, 0x53, 0x81, 0xc6, - 0x2d, 0xe2, 0xd3, 0xad, 0xe0, 0x98, 0x86, 0x61, 0x5e, 0x37, 0x81, 0xd4, - 0x74, 0xd3, 0x96, 0x3a, 0x13, 0xe4, 0x72, 0xd4, 0x20, 0x42, 0x8e, 0xb0, - 0x07, 0x73, 0x75, 0x1e, 0x3f, 0x26, 0x00, 0x6e, 0x69, 0xb4, 0xc3, 0xb4, - 0x60, 0xde, 0xae, 0x8f, 0x38, 0x33, 0x01, 0x16, 0x06, 0x87, 0xbb, 0x89, - 0x3a, 0xe0, 0xd0, 0xae, 0xe7, 0x8d, 0xc9, 0x80, 0xc2, 0x22, 0xc9, 0x79, - 0xc1, 0x04, 0x28, 0x3a, 0x8f, 0xcf, 0x39, 0xb0, 0x02, 0xf4, 0xd8, 0x31, - 0xd6, 0x9b, 0x07, 0x55, 0xda, 0x7b, 0x60, 0x6d, 0x30, 0x90, 0x26, 0x8f, - 0x3f, 0xef, 0x05, 0x54, 0x37, 0x54, 0xd7, 0x04, 0x18, 0xaf, 0x7e, 0x57, - 0xda, 0xe4, 0xae, 0x0e, 0xc0, 0xd5, 0x25, 0xf7, 0xf9, 0xc1, 0x80, 0x62, - 0x1d, 0x95, 0xbc, 0xf7, 0xf8, 0xe2, 0xc5, 0x18, 0x4d, 0xb3, 0x9e, 0x5f, - 0x4c, 0x42, 0x68, 0x11, 0x31, 0xe8, 0x7e, 0x70, 0xc8, 0x0e, 0x09, 0xbf, - 0x47, 0x9c, 0xdc, 0xe8, 0x8b, 0x97, 0x7e, 0x7a, 0xe5, 0xfa, 0x64, 0xb5, - 0x55, 0x95, 0xea, 0x2d, 0xf9, 0xeb, 0x2a, 0xb5, 0x02, 0xce, 0x5f, 0x1f, - 0x4f, 0xaf, 0x58, 0xbd, 0x21, 0x0a, 0x21, 0xaf, 0xe4, 0xfd, 0xbe, 0xd8, - 0x75, 0x4c, 0x0e, 0x8a, 0x79, 0xbd, 0xe2, 0x48, 0xe1, 0xa0, 0xe6, 0x69, - 0xd6, 0xb9, 0xde, 0x20, 0x18, 0x5d, 0x62, 0xdd, 0x7b, 0xf5, 0x90, 0x14, - 0x28, 0x9e, 0x06, 0x03, 0x95, 0x91, 0x86, 0xe9, 0xf4, 0xf5, 0xc2, 0x68, - 0x2e, 0xe1, 0xe6, 0x71, 0x71, 0x39, 0x41, 0x5e, 0x86, 0x25, 0xd4, 0x10, - 0xdd, 0xf0, 0x60, 0x61, 0x07, 0x83, 0x5b, 0xbc, 0xb1, 0xd7, 0xd2, 0xeb, - 0x78, 0x00, 0x44, 0xa0, 0xd5, 0x12, 0x1f, 0x1e, 0x5d, 0xfd, 0xb8, 0x18, - 0x86, 0xdd, 0x4d, 0xf0, 0xbc, 0xf3, 0xce, 0x49, 0x41, 0x0c, 0x35, 0xa5, - 0x7f, 0x7f, 0xd6, 0xd1, 0xaf, 0xc3, 0xc4, 0xc1, 0x1d, 0x36, 0x8b, 0xe2, - 0x68, 0xf4, 0x60, 0x77, 0xed, 0x84, 0x4a, 0x42, 0x69, 0x20, 0x27, 0x3e, - 0x7a, 0xd7, 0xbe, 0x69, 0xdc, 0x9c, 0x28, 0x0a, 0x8b, 0xcc, 0xd2, 0xfb, - 0x47, 0x05, 0x63, 0x07, 0x23, 0xc9, 0x9a, 0x60, 0x43, 0xbc, 0xbc, 0x41, - 0x9a, 0x3e, 0x32, 0x56, 0x90, 0x69, 0x85, 0xeb, 0x17, 0x72, 0xe9, 0xc2, - 0x17, 0xbc, 0x6e, 0xf0, 0x0e, 0x04, 0xc1, 0x43, 0x91, 0x74, 0xcf, 0x39, - 0x40, 0x96, 0x64, 0xd5, 0xf4, 0xdb, 0x88, 0x9b, 0xb7, 0xc3, 0x35, 0xaf, - 0x38, 0x24, 0x46, 0x46, 0x9f, 0x0f, 0x93, 0xf3, 0x9c, 0x41, 0x18, 0x41, - 0x2b, 0x7d, 0xfd, 0xb1, 0x16, 0x8a, 0x74, 0xa6, 0xb8, 0xd7, 0x79, 0x14, - 0x15, 0x0a, 0xaa, 0xde, 0x3a, 0xc8, 0x4a, 0xe9, 0xad, 0x76, 0xf9, 0xc5, - 0x86, 0x8d, 0xc5, 0x8b, 0x07, 0xdb, 0x2d, 0x5b, 0x20, 0xd3, 0x36, 0x74, - 0x7d, 0x8f, 0x8c, 0x0e, 0x12, 0x2e, 0xa0, 0x0f, 0x4c, 0x4b, 0x50, 0xd2, - 0x76, 0x7c, 0x66, 0xe0, 0x28, 0x0d, 0x9d, 0x7b, 0xdc, 0xd9, 0x48, 0x5d, - 0xfa, 0x2f, 0x19, 0x43, 0x29, 0xd9, 0x36, 0x3d, 0xb8, 0xd3, 0xbe, 0x30, - 0x8a, 0x0d, 0xfe, 0xd7, 0x0f, 0x9a, 0xba, 0x70, 0xb2, 0xdc, 0x5b, 0x53, - 0x02, 0xc6, 0x99, 0xa0, 0xa5, 0x2e, 0xa6, 0x89, 0xd7, 0x8d, 0x5d, 0xfe, - 0xd8, 0x8f, 0x01, 0xd5, 0x4d, 0x0d, 0xb3, 0xd3, 0xdf, 0x2a, 0x85, 0x69, - 0xdc, 0xad, 0x0e, 0xf0, 0xac, 0x04, 0x28, 0x07, 0xad, 0x79, 0xf7, 0xb8, - 0x9a, 0xd3, 0x42, 0xb7, 0xb9, 0xa5, 0xfc, 0xf3, 0x94, 0x90, 0x2c, 0x38, - 0xbe, 0x4b, 0xf9, 0xde, 0x5b, 0x3b, 0x9b, 0x34, 0x53, 0x7f, 0xc6, 0x04, - 0x18, 0x17, 0x45, 0xb7, 0x2e, 0x0f, 0xa7, 0x06, 0x9f, 0x7c, 0xa2, 0xce, - 0x84, 0x2d, 0xf7, 0xf1, 0xbe, 0xb2, 0x51, 0xc8, 0x01, 0x1d, 0x82, 0x13, - 0xde, 0xef, 0xa3, 0xd8, 0x78, 0x84, 0x5e, 0x1a, 0x71, 0x8a, 0xad, 0x70, - 0x51, 0xc7, 0x08, 0x1b, 0xd7, 0x5b, 0xd7, 0xda, 0xe2, 0x00, 0xe7, 0x02, - 0x0c, 0x74, 0xd5, 0xf8, 0x87, 0x83, 0x8e, 0x85, 0x08, 0xd1, 0x05, 0x01, - 0xde, 0xce, 0x3d, 0x39, 0xbc, 0x9e, 0xd8, 0x31, 0x9b, 0x4d, 0x39, 0x00, - 0xfc, 0xf9, 0xfd, 0x71, 0x91, 0x4b, 0x27, 0x6d, 0x86, 0x22, 0x0d, 0x01, - 0xcb, 0x84, 0xf4, 0x77, 0x17, 0xf6, 0xc9, 0xaa, 0x0a, 0x0d, 0x1c, 0x5e, - 0xae, 0xf6, 0x07, 0x5c, 0x99, 0x42, 0x45, 0x8d, 0x8c, 0x01, 0xf4, 0xd9, - 0xbe, 0x6f, 0x1d, 0x38, 0x86, 0x29, 0x1a, 0xf2, 0xd7, 0xdb, 0x1b, 0x67, - 0xdc, 0xe9, 0x82, 0x00, 0xc1, 0xa3, 0xc3, 0xe3, 0x04, 0x47, 0x65, 0x55, - 0x1f, 0xfb, 0xac, 0x46, 0x2c, 0xd3, 0xa7, 0x9c, 0xa0, 0x16, 0x8b, 0xbe, - 0x3b, 0xf1, 0x83, 0xa4, 0x10, 0xbc, 0xb8, 0x9e, 0x8d, 0x2c, 0x5b, 0xbf, - 0x6c, 0x15, 0x23, 0xc3, 0x86, 0x34, 0x0d, 0xfa, 0xde, 0x3f, 0x3c, 0xe0, - 0x90, 0xf0, 0x15, 0x46, 0x37, 0x8e, 0x78, 0xc4, 0xa0, 0x43, 0x38, 0xe8, - 0xf6, 0xf8, 0xc0, 0x10, 0xa4, 0x18, 0x1e, 0x75, 0xcd, 0xf3, 0x86, 0xdc, - 0x57, 0x6c, 0x2d, 0x7d, 0xb1, 0x02, 0x1f, 0x54, 0xea, 0x65, 0xd7, 0x4e, - 0xaf, 0x8d, 0x71, 0x8b, 0xa0, 0xa3, 0xcb, 0x36, 0x46, 0x7f, 0x58, 0xd1, - 0x36, 0x86, 0x8d, 0xf3, 0xb0, 0xf1, 0xac, 0xa1, 0x22, 0x2f, 0x6c, 0x34, - 0x78, 0x7b, 0xc6, 0x94, 0xa4, 0xdb, 0xcb, 0x97, 0x77, 0x41, 0x54, 0x5c, - 0xfa, 0x9e, 0xd8, 0x11, 0xad, 0x03, 0xbb, 0x74, 0xf1, 0x86, 0xb9, 0xbc, - 0x15, 0x1b, 0x7d, 0x33, 0x86, 0xa0, 0x75, 0x6b, 0xed, 0x7d, 0x9f, 0x18, - 0x84, 0xeb, 0x88, 0xea, 0xf2, 0x18, 0xf3, 0x8d, 0x92, 0x9d, 0x20, 0xd2, - 0xf7, 0x3b, 0xc5, 0x4a, 0x06, 0x1b, 0x7d, 0x9e, 0xfb, 0xcd, 0x22, 0x88, - 0xa7, 0x4d, 0x77, 0x0b, 0xeb, 0xc6, 0xb1, 0xa6, 0x21, 0x21, 0xeb, 0xd6, - 0xf5, 0xdf, 0x5d, 0xe3, 0x06, 0xad, 0xec, 0x8f, 0x17, 0x99, 0xc7, 0x09, - 0xf2, 0x61, 0x46, 0xd0, 0x1a, 0x7c, 0x76, 0x97, 0xd5, 0x26, 0x02, 0x0e, - 0xe8, 0xc0, 0x89, 0x32, 0x12, 0x09, 0x89, 0xec, 0x92, 0x9e, 0x9c, 0xe3, - 0xa0, 0xa2, 0x08, 0xa0, 0x9b, 0xf4, 0x77, 0x72, 0x00, 0x85, 0xaf, 0x08, - 0x1c, 0x7e, 0x79, 0x33, 0x68, 0x4b, 0x3a, 0x76, 0x99, 0xb4, 0xa0, 0x15, - 0xe6, 0x82, 0xae, 0xfc, 0xf9, 0xd0, 0x4b, 0xb3, 0x00, 0x4b, 0x65, 0x1c, - 0x27, 0x3a, 0x4e, 0x37, 0xaf, 0x8f, 0x88, 0x15, 0xb0, 0x28, 0x23, 0x7b, - 0x2a, 0xdb, 0x6e, 0xf4, 0x79, 0xf3, 0x8c, 0x91, 0x40, 0x3f, 0x17, 0x5f, - 0xae, 0x44, 0xd4, 0xa0, 0x73, 0x1f, 0x1e, 0xb9, 0xc9, 0xbc, 0x07, 0x52, - 0x1a, 0xf8, 0xfc, 0xde, 0x01, 0x28, 0xc0, 0xd2, 0x8f, 0x49, 0xfc, 0x7a, - 0x65, 0x94, 0x4d, 0x20, 0x75, 0xb3, 0xed, 0xf6, 0xd7, 0x93, 0x10, 0xf6, - 0x41, 0x9a, 0x04, 0x2f, 0xaa, 0x54, 0xbe, 0x98, 0x50, 0xe4, 0xef, 0x87, - 0x0d, 0x2c, 0x55, 0xf4, 0xc1, 0x04, 0x2d, 0xd5, 0xc6, 0xb5, 0x14, 0xee, - 0x71, 0x94, 0x7a, 0x9c, 0xa3, 0x8f, 0x4c, 0x70, 0x06, 0x1a, 0x8e, 0x26, - 0xf1, 0x42, 0xd1, 0x2d, 0xe3, 0x5f, 0xd6, 0x30, 0x40, 0x89, 0xe4, 0x56, - 0x33, 0x9f, 0x59, 0xf7, 0xca, 0x15, 0x01, 0x5f, 0x83, 0xd7, 0x1b, 0x26, - 0xa2, 0xa7, 0x09, 0xc7, 0x1f, 0x19, 0x01, 0x20, 0xd0, 0x7f, 0x7f, 0x5c, - 0xb2, 0x14, 0x4a, 0xbd, 0x3d, 0x71, 0x8b, 0x62, 0x22, 0xbf, 0xee, 0x41, - 0x08, 0x0a, 0xec, 0x42, 0xce, 0x3c, 0x7e, 0x71, 0x31, 0x60, 0x1e, 0x61, - 0xc1, 0xae, 0x71, 0x1a, 0x12, 0x3a, 0x05, 0xd7, 0x30, 0xe2, 0x3f, 0xef, - 0x15, 0x14, 0x23, 0x84, 0x2b, 0xe7, 0x0a, 0x22, 0xd5, 0xaa, 0x3d, 0x4f, - 0xf9, 0xe3, 0x0c, 0x16, 0x65, 0x8d, 0xd3, 0xe3, 0x78, 0x88, 0x4b, 0x21, - 0xcc, 0xe5, 0xf1, 0xe9, 0xe7, 0x16, 0x04, 0x05, 0x39, 0x02, 0xbd, 0xc7, - 0xef, 0x80, 0x57, 0x6c, 0x35, 0x9e, 0xa5, 0xf8, 0xcd, 0x03, 0x02, 0x87, - 0x9f, 0xae, 0x58, 0x11, 0xa2, 0x8f, 0x1c, 0x79, 0xfd, 0xf1, 0x55, 0x59, - 0x0d, 0xc0, 0xd7, 0x9e, 0xbc, 0xe5, 0x64, 0xef, 0x8d, 0xd3, 0x8b, 0x0f, - 0xa6, 0x17, 0x70, 0x77, 0xd8, 0xf5, 0x3c, 0x71, 0x89, 0x20, 0xaa, 0x0d, - 0x23, 0xc4, 0xd2, 0x6b, 0x8f, 0x38, 0x0d, 0xc4, 0xd7, 0xab, 0x5c, 0xf3, - 0x88, 0x4d, 0xa3, 0xc9, 0x40, 0xfa, 0x70, 0x4f, 0x8c, 0x6b, 0x18, 0x44, - 0xb4, 0x17, 0x2f, 0x4e, 0x32, 0xc4, 0x3d, 0x67, 0x07, 0xb1, 0xef, 0xf9, - 0x31, 0x29, 0x5a, 0x44, 0xad, 0xb0, 0xd4, 0x7c, 0x70, 0x13, 0xc6, 0x41, - 0x01, 0xfa, 0xeb, 0xa7, 0xf6, 0xc6, 0x37, 0x23, 0x82, 0x51, 0xc3, 0x7d, - 0x34, 0x9f, 0x5c, 0x6c, 0x34, 0x52, 0x9a, 0x1b, 0x65, 0x09, 0x3e, 0xaf, - 0x8c, 0xd4, 0x24, 0x6a, 0xc0, 0xa4, 0xff, 0x00, 0x9d, 0xa6, 0x8d, 0xe5, - 0xaa, 0xa2, 0x49, 0x56, 0xfd, 0xce, 0xa4, 0xfe, 0xf0, 0x85, 0x39, 0x6f, - 0x54, 0x37, 0xef, 0x7f, 0xf0, 0x1b, 0xf1, 0x05, 0xe1, 0x8a, 0xbd, 0xfa, - 0x1d, 0xfd, 0x70, 0xae, 0x01, 0x19, 0xde, 0x28, 0x69, 0xe7, 0x81, 0xe2, - 0x60, 0x30, 0x10, 0x06, 0xda, 0x93, 0xcb, 0xf9, 0xbc, 0xde, 0x61, 0x2f, - 0x56, 0xda, 0x41, 0x2a, 0xfd, 0x80, 0x3e, 0x70, 0xd0, 0x20, 0x78, 0x7c, - 0xe7, 0x4b, 0xcd, 0xce, 0xb3, 0x91, 0xa3, 0xbd, 0x75, 0xfb, 0xe0, 0x20, - 0x5f, 0x9e, 0x3d, 0x31, 0x6a, 0x4d, 0x4d, 0x8e, 0x90, 0x97, 0x20, 0x95, - 0x75, 0xad, 0xbd, 0xf3, 0x59, 0x01, 0xb3, 0x93, 0xeb, 0x8c, 0x0b, 0x10, - 0x36, 0xbb, 0xe7, 0xeb, 0x85, 0x24, 0x6b, 0x51, 0x2c, 0x9c, 0xe6, 0x84, - 0x63, 0xba, 0xed, 0x9d, 0x5f, 0x8c, 0x8c, 0xa7, 0xdd, 0xf1, 0xed, 0x96, - 0x14, 0x54, 0x17, 0xf3, 0x58, 0x04, 0x8b, 0xec, 0x93, 0x00, 0x53, 0x0f, - 0x4b, 0x3e, 0x98, 0x6c, 0x34, 0x94, 0x0c, 0x0a, 0x6d, 0xeb, 0xdb, 0x08, - 0x23, 0xc8, 0xdd, 0x1e, 0x27, 0xdf, 0x2f, 0x23, 0x98, 0x36, 0x2e, 0xf9, - 0x7d, 0x7e, 0xd9, 0x18, 0x55, 0xb6, 0xee, 0x7e, 0x38, 0x0c, 0x44, 0x16, - 0x3a, 0xe7, 0xdd, 0xc2, 0x9a, 0x68, 0x41, 0xaf, 0x67, 0x13, 0x55, 0x70, - 0x5b, 0x49, 0xa8, 0xdb, 0x7d, 0x32, 0xdc, 0xc0, 0xdb, 0x77, 0x7e, 0xde, - 0x9f, 0x6c, 0xd4, 0x92, 0x92, 0x0f, 0xb3, 0x01, 0xe3, 0x38, 0x02, 0x36, - 0xe7, 0xac, 0x26, 0x8d, 0x3c, 0x32, 0x6b, 0xac, 0x1a, 0x0a, 0x54, 0x42, - 0xbc, 0x9e, 0x09, 0x3a, 0xf3, 0xc6, 0x9c, 0x40, 0xb6, 0x5b, 0x1d, 0xd3, - 0xc5, 0xf1, 0xe8, 0xf7, 0x71, 0xdd, 0xca, 0x51, 0x1e, 0xad, 0x87, 0x30, - 0xc1, 0xa5, 0x15, 0x18, 0x3e, 0xed, 0x5d, 0xf9, 0xf3, 0xa3, 0x02, 0x61, - 0xa8, 0xf3, 0x35, 0xd6, 0xf3, 0x85, 0x2f, 0x4a, 0x02, 0x0f, 0xf7, 0x90, - 0xc8, 0xc6, 0xd5, 0x57, 0xbb, 0x79, 0xff, 0x00, 0x79, 0xbd, 0x59, 0x51, - 0x45, 0x6c, 0xf1, 0xdf, 0x78, 0x85, 0x24, 0x0e, 0xdb, 0x70, 0xeb, 0xd7, - 0xfa, 0xc3, 0x55, 0x0d, 0x6e, 0x21, 0x3e, 0x92, 0x1a, 0xfb, 0x71, 0x8f, - 0xd1, 0xc0, 0x51, 0xad, 0x8e, 0xf5, 0xc0, 0xbe, 0xfb, 0x5e, 0xc6, 0x02, - 0x25, 0x51, 0xa5, 0x9b, 0xd3, 0x7c, 0x7c, 0xc0, 0x86, 0x76, 0x8c, 0x6c, - 0xea, 0x94, 0x9d, 0x73, 0x7e, 0x79, 0xd6, 0x01, 0x04, 0x15, 0x43, 0xc7, - 0xfe, 0x08, 0x48, 0x4a, 0x69, 0x11, 0x2a, 0xfc, 0xfd, 0x18, 0xcf, 0xb5, - 0x30, 0x50, 0x86, 0xd7, 0x7c, 0x71, 0xcf, 0xfd, 0xc5, 0x52, 0x5a, 0x70, - 0x23, 0xa2, 0x5f, 0x13, 0x9d, 0x48, 0xfa, 0xe1, 0xd2, 0x58, 0x05, 0x20, - 0xc0, 0x3d, 0xc8, 0x3d, 0x6d, 0xf2, 0x44, 0xe5, 0x74, 0x42, 0x9c, 0x1e, - 0x9f, 0x5c, 0x92, 0x83, 0x47, 0x33, 0x78, 0x2e, 0x08, 0x05, 0xba, 0x65, - 0x02, 0xa1, 0x97, 0x63, 0xd6, 0x08, 0xe3, 0x46, 0xb5, 0x38, 0xf5, 0xc3, - 0x89, 0x65, 0x22, 0x61, 0xb3, 0x7f, 0xc6, 0x25, 0xbc, 0x9d, 0x6c, 0xd3, - 0xaf, 0x7f, 0xb7, 0x8c, 0x45, 0x00, 0x76, 0x2f, 0x57, 0xe7, 0xef, 0x8b, - 0x05, 0x53, 0x8b, 0xaf, 0x59, 0xf3, 0x96, 0x4f, 0xce, 0x17, 0x7d, 0x43, - 0x15, 0x50, 0x07, 0xa1, 0xfb, 0xf1, 0x7b, 0xc5, 0x55, 0x5b, 0xd1, 0x1f, - 0x4c, 0x94, 0xf7, 0xa3, 0xc6, 0x6a, 0x48, 0xe9, 0xa4, 0x23, 0xfc, 0xe2, - 0x94, 0x4a, 0xdb, 0xbd, 0xe6, 0xc8, 0x02, 0x91, 0x8f, 0x3e, 0xf8, 0x41, - 0x0a, 0x16, 0xa7, 0xaf, 0x37, 0x10, 0x54, 0x6d, 0x06, 0xdb, 0xf5, 0xc3, - 0x91, 0x6c, 0xd0, 0x9b, 0xcf, 0xb7, 0xdf, 0x12, 0xb9, 0x6f, 0x5c, 0xd7, - 0x3a, 0x03, 0x6d, 0x83, 0x8f, 0x0f, 0xdb, 0xac, 0xe7, 0xd0, 0x50, 0x07, - 0x49, 0xe3, 0x36, 0xdb, 0x41, 0x4e, 0x81, 0xb8, 0x01, 0xbd, 0x52, 0xb7, - 0xcb, 0x27, 0xe7, 0x8c, 0x6a, 0x0a, 0x51, 0x6d, 0xfc, 0xe3, 0x08, 0xf2, - 0xcc, 0xdf, 0x59, 0x4e, 0x80, 0x42, 0x28, 0x17, 0x67, 0xbe, 0xf3, 0x40, - 0xa0, 0x48, 0xa0, 0x8e, 0xcd, 0xe7, 0x38, 0x16, 0x06, 0x82, 0xfb, 0xe1, - 0x82, 0xd2, 0x10, 0x6b, 0xd1, 0xe9, 0xc7, 0xe5, 0x70, 0x1a, 0x29, 0x62, - 0x1b, 0x7b, 0x19, 0xdf, 0xa6, 0x01, 0x52, 0x85, 0x65, 0x67, 0x9d, 0xfc, - 0xe2, 0x0f, 0x01, 0x35, 0xd1, 0xf5, 0xc6, 0x30, 0x28, 0x7a, 0xdf, 0x87, - 0x65, 0xef, 0xbc, 0x61, 0x27, 0x2b, 0x85, 0xd0, 0x61, 0xed, 0x5f, 0x4f, - 0x69, 0x85, 0x0c, 0x30, 0xac, 0x01, 0x3d, 0x75, 0x7f, 0x76, 0x53, 0xba, - 0x60, 0x2f, 0xae, 0x81, 0x47, 0xcd, 0x5e, 0x3f, 0xbc, 0xe6, 0x27, 0x87, - 0x08, 0xf1, 0x66, 0x99, 0x7e, 0xba, 0x3b, 0xff, 0x00, 0xc6, 0x30, 0x18, - 0x4f, 0x97, 0xbf, 0xb9, 0xfa, 0x61, 0x89, 0xcd, 0x08, 0xde, 0x4a, 0xec, - 0xfc, 0x7f, 0x77, 0x3b, 0xd4, 0xd7, 0x51, 0x5a, 0x9b, 0xef, 0x8e, 0xdc, - 0x1a, 0xc2, 0x32, 0x80, 0x34, 0x94, 0xc1, 0xd9, 0xc0, 0xa8, 0x74, 0x57, - 0x58, 0xba, 0x28, 0x27, 0x29, 0x0d, 0x40, 0xb7, 0xf7, 0x06, 0xbc, 0x54, - 0x0f, 0x45, 0x44, 0x93, 0x07, 0x2a, 0xc5, 0xdd, 0x71, 0xf9, 0xac, 0x2d, - 0xc8, 0x91, 0x5c, 0xdb, 0x7c, 0xe0, 0x85, 0x1d, 0x9e, 0x6e, 0x4a, 0x8b, - 0x49, 0x0b, 0xbe, 0xf0, 0x08, 0x82, 0x12, 0xba, 0x37, 0x07, 0xf1, 0xc6, - 0x44, 0x00, 0x6d, 0x5d, 0xcd, 0xf1, 0xd5, 0xb8, 0x40, 0x63, 0x45, 0x23, - 0xe9, 0xfc, 0x63, 0x09, 0x34, 0x54, 0x2c, 0xfc, 0x71, 0xd0, 0x02, 0x44, - 0x05, 0x5f, 0x77, 0xac, 0xea, 0x80, 0x18, 0xdc, 0xc7, 0x7d, 0x0d, 0xa9, - 0x0f, 0x42, 0x5e, 0x66, 0x8d, 0x3e, 0xb9, 0x1e, 0x2d, 0x2a, 0x5d, 0x6b, - 0x0b, 0x22, 0x41, 0xa5, 0x27, 0xe7, 0xef, 0x82, 0x84, 0x2c, 0xa1, 0x34, - 0x5f, 0xcb, 0x96, 0x38, 0x80, 0x30, 0x0a, 0x13, 0x97, 0x36, 0x82, 0x75, - 0xa7, 0xcf, 0xb7, 0x19, 0xe0, 0xd3, 0x74, 0xa3, 0xce, 0xf2, 0x0c, 0xc2, - 0x03, 0x49, 0x7e, 0xc6, 0x44, 0x02, 0x17, 0x42, 0x15, 0xd6, 0x0e, 0xa1, - 0x4a, 0xa5, 0x2a, 0x1f, 0x9f, 0xb6, 0x28, 0xaa, 0x2d, 0x5f, 0x0d, 0x65, - 0xb1, 0x90, 0x53, 0x52, 0xba, 0xf2, 0xd6, 0x77, 0x8a, 0x10, 0x72, 0x11, - 0x43, 0xc5, 0xd7, 0x3e, 0x72, 0x29, 0x74, 0xee, 0xd6, 0xba, 0xd7, 0x7a, - 0xd8, 0xe1, 0xc3, 0xca, 0xae, 0xbe, 0x17, 0xc6, 0x2e, 0xd4, 0x86, 0xa1, - 0x67, 0xdb, 0xdb, 0xd3, 0x0d, 0x81, 0x42, 0xaa, 0x94, 0xdf, 0x78, 0x50, - 0xea, 0x29, 0xb1, 0x7d, 0xfd, 0x72, 0xec, 0x29, 0x0e, 0xd1, 0xf3, 0xde, - 0x15, 0x3c, 0x06, 0x9b, 0xf7, 0xe7, 0xd1, 0xc4, 0x22, 0x55, 0xdb, 0xa8, - 0xdc, 0x05, 0x6d, 0x9b, 0xd2, 0x29, 0x0a, 0xf8, 0x9d, 0x79, 0x5c, 0x29, - 0x40, 0x26, 0x50, 0x11, 0x05, 0x15, 0x0b, 0xd9, 0x5f, 0x87, 0x1d, 0x8a, - 0xe1, 0x29, 0xe7, 0xfa, 0x37, 0x27, 0x0e, 0x51, 0x54, 0xc4, 0xe0, 0x6d, - 0x3f, 0x3d, 0xcc, 0x81, 0x86, 0x1f, 0x32, 0xfe, 0x54, 0x7f, 0xe2, 0x87, - 0x26, 0xf9, 0xc8, 0x89, 0xf4, 0xc2, 0xb6, 0x03, 0x42, 0x8d, 0x81, 0xe8, - 0x61, 0xf8, 0x3b, 0xcb, 0x56, 0xc4, 0xd0, 0xd0, 0x2e, 0xfd, 0x2b, 0xc7, - 0xca, 0x60, 0xe8, 0x8b, 0x64, 0xe3, 0xc3, 0xbd, 0x94, 0x37, 0xc3, 0xde, - 0xf2, 0x43, 0xf3, 0xb9, 0x29, 0x30, 0x0f, 0x25, 0xff, 0x00, 0x67, 0x14, - 0x12, 0x55, 0x93, 0x6f, 0x67, 0x91, 0xc1, 0x3b, 0xa3, 0x38, 0x38, 0x70, - 0x0a, 0x26, 0x9d, 0x39, 0xc0, 0x02, 0x8a, 0xba, 0xbf, 0xb6, 0x25, 0x15, - 0x74, 0x54, 0xf5, 0xf5, 0xc7, 0x40, 0x46, 0x51, 0x97, 0x5e, 0x9f, 0x18, - 0x05, 0x96, 0x73, 0xa6, 0xee, 0x0d, 0x47, 0x8e, 0x14, 0x1d, 0xde, 0x5f, - 0xae, 0x32, 0x22, 0x2e, 0xb9, 0x7e, 0xe3, 0xf8, 0x31, 0x37, 0xba, 0x9c, - 0x81, 0x0c, 0xa3, 0x44, 0x95, 0x54, 0xf1, 0x39, 0x9e, 0x98, 0x04, 0x8d, - 0x79, 0x49, 0xfc, 0x7e, 0x73, 0x8a, 0x0d, 0x7a, 0x4b, 0xcb, 0xf1, 0x8d, - 0x01, 0xb7, 0xa4, 0x27, 0x59, 0x2a, 0x94, 0x51, 0xb5, 0x75, 0x9c, 0xf7, - 0x60, 0x84, 0x6d, 0x79, 0xf3, 0xac, 0x6b, 0x46, 0xc0, 0xe8, 0xbe, 0x63, - 0xf9, 0xce, 0x6d, 0x48, 0xec, 0x42, 0x6b, 0xd7, 0xce, 0x45, 0x50, 0x24, - 0x4d, 0xb7, 0xd7, 0xbe, 0xb2, 0x33, 0x21, 0x11, 0x22, 0x9e, 0xa1, 0xf1, - 0x8a, 0xba, 0x94, 0xb6, 0xae, 0xff, 0x00, 0xde, 0x41, 0xeb, 0x79, 0x34, - 0xbf, 0xd7, 0xb6, 0x01, 0x75, 0xde, 0xcf, 0xde, 0x4c, 0x12, 0x52, 0x40, - 0x0e, 0x57, 0xe9, 0x84, 0x1a, 0x4d, 0x77, 0xa9, 0xed, 0x3f, 0x7c, 0x04, - 0xda, 0x51, 0xa7, 0xe9, 0xbb, 0xfc, 0xe1, 0x5b, 0x05, 0xcc, 0x69, 0xfa, - 0xbf, 0x83, 0x16, 0x5d, 0x27, 0x2e, 0xb2, 0x61, 0x82, 0x97, 0xdc, 0x5c, - 0xf3, 0x41, 0xa5, 0x75, 0xae, 0xbe, 0x75, 0x85, 0x13, 0x62, 0xd9, 0xc9, - 0xe9, 0xce, 0x37, 0xb4, 0xc1, 0x15, 0x47, 0x3f, 0x9e, 0xb8, 0x45, 0xa7, - 0x50, 0xbd, 0x2f, 0x1e, 0x67, 0x5d, 0xb5, 0x3d, 0x51, 0x1c, 0x80, 0x53, - 0x68, 0x14, 0xec, 0xb2, 0x55, 0xf1, 0xf5, 0x0a, 0x0b, 0xab, 0x6f, 0x52, - 0xab, 0x4f, 0x1a, 0x66, 0xc7, 0x5d, 0x91, 0xc2, 0x3e, 0x1f, 0x94, 0x5d, - 0xa4, 0xb7, 0xe7, 0xef, 0x85, 0x30, 0x3c, 0x4e, 0x8e, 0x5f, 0x29, 0x7e, - 0x7f, 0xf2, 0x42, 0xf1, 0x8d, 0x69, 0x56, 0x7a, 0x5d, 0x31, 0x66, 0x12, - 0x81, 0x62, 0x34, 0xba, 0x3c, 0x76, 0xcf, 0x5f, 0x19, 0x34, 0xe9, 0x85, - 0xf2, 0x02, 0x83, 0xb6, 0xbc, 0x77, 0xa7, 0xd6, 0x15, 0x21, 0x09, 0xb2, - 0x1b, 0xc2, 0xbc, 0x1c, 0x29, 0xe0, 0x9d, 0x4d, 0x86, 0x28, 0x92, 0x20, - 0xbe, 0x1c, 0x0f, 0xa9, 0xe1, 0xe3, 0x79, 0x6c, 0x1d, 0x35, 0x91, 0xf0, - 0xe2, 0xc7, 0x55, 0xd8, 0x39, 0x9f, 0xeb, 0x26, 0x00, 0x8a, 0xdd, 0xd7, - 0x8d, 0x60, 0xc7, 0x85, 0xdb, 0x57, 0x78, 0xa0, 0xa3, 0xa0, 0xee, 0xfe, - 0x7e, 0xd8, 0x14, 0x20, 0x1b, 0x6a, 0x6c, 0xfc, 0x5c, 0x5a, 0x2a, 0xea, - 0x6d, 0x7e, 0x86, 0x51, 0x01, 0xd2, 0x15, 0xd7, 0xb6, 0x15, 0x64, 0x4d, - 0xa3, 0x2e, 0xfc, 0x60, 0xd6, 0xba, 0xc0, 0x37, 0x57, 0x1d, 0x02, 0x23, - 0xc5, 0xa1, 0xea, 0x6b, 0xfd, 0xe1, 0xd9, 0x85, 0x35, 0xad, 0x65, 0x5c, - 0x06, 0xb4, 0x7d, 0x67, 0xe5, 0xc8, 0x23, 0x8a, 0x34, 0x68, 0x71, 0xe3, - 0x00, 0x0e, 0x62, 0x34, 0xba, 0x71, 0x4b, 0x74, 0x36, 0x6b, 0xdc, 0xfd, - 0xb2, 0x28, 0x35, 0x00, 0x4f, 0x73, 0x4f, 0x1f, 0x38, 0xa7, 0x42, 0xa0, - 0xaf, 0xb3, 0x71, 0x14, 0x46, 0x9b, 0x1e, 0x1f, 0xce, 0x2a, 0xac, 0x3d, - 0xd9, 0xad, 0x60, 0x02, 0x6f, 0x60, 0x3b, 0x6f, 0xce, 0xed, 0x9c, 0x71, - 0x8b, 0xa1, 0x32, 0x09, 0x0b, 0xb9, 0x79, 0xfe, 0xba, 0xf4, 0xc2, 0x01, - 0x24, 0x00, 0x8b, 0xcf, 0xd3, 0xce, 0x07, 0x12, 0x2a, 0x3e, 0x77, 0xa4, - 0xc0, 0x11, 0x49, 0x2a, 0x4a, 0x1f, 0x97, 0x34, 0x84, 0x6a, 0xa0, 0xfe, - 0x73, 0x80, 0xaa, 0x57, 0x25, 0x7c, 0xff, 0x00, 0x3d, 0x64, 0x45, 0x2c, - 0xd2, 0x28, 0xae, 0x2d, 0xb0, 0x42, 0x2d, 0xef, 0xcf, 0x1b, 0xf3, 0x81, - 0x95, 0x42, 0x45, 0x1e, 0x29, 0xfe, 0xb2, 0x12, 0x88, 0x55, 0x2a, 0x8d, - 0x79, 0x9c, 0x33, 0xdf, 0xe9, 0x85, 0x33, 0x40, 0x89, 0x62, 0x3c, 0x0f, - 0x51, 0x19, 0xbf, 0xbe, 0x08, 0x21, 0xd4, 0x1e, 0xc2, 0x7b, 0x6f, 0xd7, - 0x15, 0x17, 0x56, 0xc7, 0x8d, 0xbc, 0xb7, 0xcf, 0x7e, 0xad, 0x77, 0x31, - 0xda, 0x91, 0x8b, 0xda, 0xe3, 0xbf, 0x09, 0x7d, 0xbf, 0xf3, 0x45, 0xd1, - 0x8a, 0x75, 0xed, 0xfa, 0x6f, 0x57, 0xc2, 0xc4, 0x82, 0x39, 0x02, 0xd0, - 0x0f, 0x7a, 0x4a, 0x9f, 0x1b, 0xc1, 0x07, 0x00, 0x51, 0xb1, 0x4d, 0xa6, - 0xec, 0xd3, 0xc2, 0x6e, 0x18, 0x96, 0x90, 0x40, 0x14, 0x6c, 0xa0, 0xe9, - 0x74, 0xb5, 0xc1, 0x6f, 0x2e, 0x10, 0xfa, 0xa9, 0x21, 0xab, 0x48, 0x50, - 0xd4, 0x5f, 0x80, 0xf2, 0xe1, 0x01, 0x84, 0x1e, 0x9a, 0x28, 0x2a, 0x69, - 0x52, 0xa9, 0xa6, 0x73, 0x68, 0x1a, 0x8e, 0x1f, 0x27, 0x58, 0xb6, 0x44, - 0x47, 0x53, 0x9c, 0x1e, 0x0e, 0x7a, 0xed, 0xfb, 0x61, 0x07, 0x92, 0xdd, - 0xbd, 0xfe, 0x6b, 0x08, 0x59, 0x78, 0x1b, 0x13, 0xd7, 0x1d, 0xa7, 0x14, - 0xae, 0x91, 0x4a, 0xf7, 0x89, 0x0d, 0x28, 0x36, 0xa7, 0x3b, 0xe3, 0x11, - 0x33, 0x8e, 0x49, 0x3e, 0x39, 0xc8, 0x05, 0x20, 0x1d, 0x06, 0x8b, 0xfe, - 0xf3, 0x94, 0x02, 0xf3, 0xe1, 0xe7, 0xfe, 0xe6, 0xc3, 0x48, 0x4e, 0x7c, - 0x73, 0xd6, 0x10, 0x30, 0x1d, 0xa0, 0x0e, 0xb6, 0x87, 0x1c, 0x39, 0xce, - 0x41, 0x8e, 0x1c, 0x97, 0xeb, 0x88, 0x9a, 0x13, 0x65, 0x20, 0x8e, 0x93, - 0xd8, 0xfa, 0x61, 0xc8, 0x15, 0x69, 0xfd, 0x98, 0x81, 0x5d, 0x53, 0xca, - 0xfd, 0xff, 0x00, 0x9c, 0xa0, 0x0e, 0x17, 0xd8, 0x3f, 0xf7, 0xe3, 0x06, - 0x95, 0x52, 0x82, 0x29, 0x5e, 0xcf, 0xce, 0xb1, 0x9a, 0xc2, 0x1b, 0xe8, - 0xf4, 0xb9, 0x28, 0x3b, 0x12, 0x6e, 0x1b, 0xfa, 0x75, 0x95, 0xab, 0x77, - 0xb2, 0x9b, 0xfd, 0xe4, 0xa0, 0xe0, 0xc0, 0x35, 0x38, 0xec, 0x97, 0xce, - 0x51, 0x45, 0x9e, 0xaf, 0x5e, 0x3e, 0xdf, 0x6c, 0xe3, 0x24, 0x2f, 0x3b, - 0x9a, 0xef, 0x7d, 0x5c, 0x24, 0xea, 0xcb, 0x4f, 0x1f, 0x93, 0x05, 0x4d, - 0x62, 0x94, 0xfd, 0x7d, 0xf0, 0x38, 0x48, 0x6e, 0xf9, 0xbb, 0xdf, 0x1e, - 0x98, 0x04, 0xad, 0xc4, 0xd6, 0x35, 0xfd, 0xb3, 0x40, 0xca, 0x4f, 0x08, - 0x2e, 0xd7, 0x44, 0xe3, 0xbc, 0x3c, 0x25, 0x22, 0x10, 0x19, 0xb9, 0x3d, - 0x03, 0x82, 0x46, 0xf1, 0x94, 0x12, 0xa5, 0xe3, 0x2e, 0xae, 0xe4, 0x6f, - 0xee, 0xcf, 0x4c, 0xd6, 0x6c, 0x76, 0x80, 0x10, 0xd7, 0x22, 0xd4, 0xd9, - 0x7d, 0xb7, 0xc6, 0x12, 0x44, 0x80, 0xac, 0x39, 0xf3, 0xf2, 0xb7, 0xb7, - 0x07, 0x63, 0xe2, 0x46, 0x8d, 0x3e, 0x07, 0xea, 0xbf, 0xfa, 0x57, 0x72, - 0x60, 0x50, 0xf9, 0xba, 0x78, 0x3f, 0x2e, 0x0c, 0x99, 0x7a, 0x5b, 0x10, - 0x45, 0x68, 0x05, 0x5f, 0x4e, 0x4e, 0xf6, 0x72, 0x64, 0x2a, 0xc2, 0x91, - 0xe4, 0x5a, 0x77, 0xba, 0xdf, 0x67, 0x22, 0x6b, 0x60, 0xa3, 0xc1, 0x27, - 0x52, 0xdd, 0x08, 0x50, 0xa8, 0x71, 0xda, 0x2b, 0x05, 0x40, 0xda, 0x85, - 0x55, 0xcb, 0x3a, 0x44, 0x06, 0x15, 0xaa, 0x22, 0x42, 0x2f, 0xa4, 0x7f, - 0x37, 0x84, 0x07, 0x98, 0x40, 0xc8, 0xf5, 0x12, 0x2f, 0x18, 0x15, 0x48, - 0x2c, 0xd0, 0xcc, 0x83, 0x95, 0x0a, 0x4e, 0x5f, 0x5c, 0xda, 0x98, 0xdd, - 0x79, 0x82, 0xfa, 0x67, 0x22, 0x00, 0x79, 0xfb, 0x64, 0x09, 0x10, 0xa4, - 0x6f, 0x38, 0x5b, 0x19, 0xcb, 0xab, 0xaf, 0xa6, 0x22, 0x71, 0x01, 0x13, - 0x9f, 0x7f, 0xb6, 0x5d, 0x54, 0x1b, 0x40, 0x02, 0x5b, 0x1c, 0xad, 0x30, - 0x25, 0x51, 0xd7, 0x18, 0xc8, 0x08, 0x58, 0x1b, 0x47, 0xcf, 0x99, 0x94, - 0x44, 0x87, 0x22, 0x70, 0xff, 0x00, 0x79, 0xa2, 0xa1, 0xa7, 0xa0, 0x6e, - 0xef, 0xc6, 0x40, 0x30, 0x7b, 0xf6, 0x3a, 0xc1, 0x5a, 0x51, 0x68, 0xe8, - 0xfb, 0xbe, 0xd9, 0x41, 0x77, 0xed, 0xf3, 0x7d, 0x3a, 0x9b, 0xfa, 0xe2, - 0x2d, 0xd8, 0x61, 0xd8, 0xde, 0x55, 0x02, 0x16, 0x27, 0x4d, 0xeb, 0xb7, - 0xdb, 0xd7, 0x35, 0x8e, 0xe9, 0xb2, 0x87, 0x8a, 0xae, 0x8e, 0xbd, 0xfb, - 0xc6, 0x43, 0x61, 0x41, 0xec, 0xf8, 0x3c, 0xe2, 0x9a, 0x25, 0x00, 0x6d, - 0xf6, 0xc6, 0x94, 0xde, 0xf1, 0xea, 0x70, 0xfd, 0x5c, 0x09, 0xc2, 0xa5, - 0xb5, 0xbe, 0xfa, 0xd7, 0x58, 0x50, 0x34, 0x45, 0xc6, 0x57, 0xaf, 0xd7, - 0x01, 0x10, 0xb2, 0x7f, 0xb6, 0xb1, 0x2a, 0x44, 0x23, 0x5a, 0x75, 0x79, - 0xf4, 0xc7, 0x16, 0xa3, 0xc8, 0xbe, 0x8b, 0xe4, 0xbf, 0x33, 0x9e, 0xb2, - 0xd2, 0x25, 0x45, 0x30, 0x5d, 0x0c, 0x68, 0x8e, 0xa1, 0xe3, 0xbc, 0x20, - 0x60, 0x73, 0xe1, 0x8e, 0x96, 0x4f, 0xbd, 0x9e, 0x8e, 0x47, 0x51, 0x74, - 0xde, 0x55, 0x3b, 0x19, 0xa3, 0xdb, 0x86, 0x73, 0x91, 0x06, 0x3b, 0x7d, - 0x08, 0xf7, 0x57, 0xcf, 0x15, 0xeb, 0x15, 0x4a, 0xf2, 0xef, 0xff, 0x00, - 0x43, 0xac, 0xe5, 0xa5, 0x86, 0xfe, 0x37, 0xec, 0xa7, 0x79, 0x2f, 0x5e, - 0xc9, 0x62, 0x72, 0xaf, 0xc2, 0xf3, 0xbf, 0x2e, 0x34, 0x08, 0x89, 0x17, - 0xbe, 0xc5, 0xd6, 0xcd, 0xa9, 0x31, 0xa4, 0x10, 0xd5, 0x0b, 0x16, 0x89, - 0x51, 0x03, 0x39, 0x0f, 0x19, 0x70, 0xc0, 0x12, 0xa0, 0x94, 0xa6, 0xc2, - 0x68, 0x26, 0x9d, 0x5b, 0xab, 0x54, 0x54, 0x1b, 0x51, 0x84, 0x1f, 0x40, - 0x39, 0xdf, 0xa6, 0xb4, 0x94, 0x1c, 0xf8, 0xc1, 0xf0, 0xb1, 0xb0, 0xb6, - 0x62, 0x40, 0x3a, 0xf5, 0x71, 0xa6, 0x9d, 0x38, 0x35, 0x70, 0x80, 0x22, - 0xaf, 0xaf, 0xe4, 0xc0, 0x2d, 0x18, 0x77, 0x77, 0x86, 0x97, 0x04, 0xa2, - 0xa6, 0x7a, 0xda, 0x7d, 0x26, 0x51, 0xa3, 0xbd, 0xe8, 0xd7, 0xae, 0x08, - 0x52, 0x34, 0x36, 0xa4, 0x3d, 0xb1, 0x21, 0x50, 0xd9, 0xad, 0x87, 0x6a, - 0xfe, 0x73, 0x8c, 0x04, 0x6d, 0x79, 0xe4, 0xff, 0x00, 0x58, 0x0b, 0x00, - 0x34, 0x7d, 0xf1, 0x41, 0x09, 0x14, 0x94, 0xc8, 0x16, 0x72, 0x94, 0x79, - 0xca, 0x2d, 0x88, 0x04, 0x17, 0x5a, 0x0f, 0x3c, 0x71, 0x85, 0x36, 0x8f, - 0x5c, 0xcf, 0xcd, 0x62, 0xca, 0x45, 0xdc, 0x69, 0xfc, 0x98, 0x6a, 0x59, - 0xba, 0x22, 0xd7, 0x10, 0x58, 0x50, 0xd2, 0x67, 0xdb, 0xbc, 0x8a, 0xa0, - 0x6c, 0xab, 0xcb, 0xd7, 0xc6, 0xb0, 0x90, 0x02, 0x20, 0x1a, 0xaf, 0xd8, - 0xd3, 0xf6, 0xc6, 0xb1, 0xaa, 0xb0, 0x78, 0x0f, 0x18, 0xda, 0xd3, 0xa0, - 0x00, 0xfb, 0x62, 0x8e, 0xb1, 0x70, 0xb7, 0x5f, 0xef, 0xbc, 0x65, 0xc9, - 0x46, 0x99, 0x77, 0xfb, 0xe2, 0xa7, 0x44, 0x23, 0x53, 0xd9, 0x7a, 0xdf, - 0x8c, 0x47, 0xa2, 0x20, 0xa9, 0x4d, 0x41, 0xe2, 0x34, 0xde, 0x8b, 0xa7, - 0x9e, 0x4c, 0xa9, 0x37, 0x98, 0x69, 0xc0, 0x0e, 0x93, 0x5d, 0x05, 0xfa, - 0xc8, 0x38, 0x0e, 0x5d, 0xdf, 0x6b, 0xc6, 0xb9, 0x13, 0x83, 0xce, 0x2f, - 0x12, 0x02, 0x2a, 0x74, 0x17, 0xbb, 0xb5, 0x7d, 0x7d, 0xb0, 0xfa, 0x86, - 0x0f, 0x29, 0x5a, 0xf9, 0x4f, 0x7b, 0xff, 0x00, 0xb5, 0x59, 0x08, 0x0e, - 0xc3, 0x5f, 0x0f, 0x0f, 0xa7, 0xa1, 0xc4, 0x73, 0x83, 0x2d, 0xbd, 0xa1, - 0xc6, 0xf8, 0x35, 0xe4, 0x98, 0xb3, 0x9c, 0x45, 0x60, 0x02, 0x30, 0x1f, - 0x54, 0x57, 0xdb, 0x14, 0x44, 0x6d, 0x1a, 0x52, 0x00, 0xf1, 0x0d, 0x26, - 0xd9, 0xa6, 0x64, 0x64, 0x80, 0x8d, 0x57, 0x08, 0x9b, 0x34, 0xbd, 0x0a, - 0xb3, 0x58, 0x45, 0xaa, 0xd6, 0x84, 0x72, 0x33, 0xaa, 0x6f, 0xd3, 0x05, - 0x5d, 0xb9, 0xb2, 0x79, 0xe9, 0xc1, 0xa1, 0x61, 0xad, 0x3f, 0x9c, 0xed, - 0xb6, 0x0f, 0x28, 0x71, 0x97, 0x49, 0xc4, 0xe2, 0x73, 0x89, 0xd0, 0x8b, - 0xa5, 0x23, 0xf6, 0x98, 0xe9, 0x01, 0x38, 0x1b, 0xd9, 0x75, 0x84, 0x21, - 0x70, 0xa2, 0xfb, 0x6f, 0x1c, 0x0a, 0xbb, 0xef, 0xe4, 0xc0, 0x04, 0x8d, - 0xa3, 0x7d, 0x76, 0x7e, 0xd9, 0x46, 0x5d, 0x04, 0x2f, 0x39, 0x44, 0x20, - 0x49, 0xa4, 0xe7, 0xdb, 0xe9, 0x8a, 0xca, 0x9b, 0x0b, 0x65, 0x7e, 0xb8, - 0xf1, 0xbc, 0x3b, 0x7e, 0x9c, 0x79, 0xeb, 0x39, 0x80, 0xec, 0x66, 0xdf, - 0x4c, 0x50, 0x72, 0xa3, 0x3d, 0xfc, 0xe5, 0x22, 0x2e, 0xd0, 0x37, 0x77, - 0xbf, 0x1d, 0x60, 0x37, 0x22, 0xd1, 0xde, 0x0d, 0xa2, 0xc1, 0x18, 0x04, - 0x02, 0xb3, 0x45, 0xf6, 0xe7, 0x15, 0xb7, 0x24, 0xdf, 0x7e, 0x4c, 0x1c, - 0xd1, 0xcc, 0x8e, 0xb9, 0xe5, 0xf0, 0xf5, 0xf7, 0xcd, 0xaa, 0xec, 0xcd, - 0x84, 0x0b, 0xfb, 0x65, 0xae, 0x4b, 0x9d, 0xe8, 0x3a, 0x30, 0x59, 0xa9, - 0x34, 0x92, 0xf8, 0xaf, 0xfa, 0xc1, 0x41, 0x5e, 0x07, 0x41, 0x26, 0xc4, - 0xe2, 0x9e, 0xf4, 0xa6, 0xb0, 0x93, 0xe4, 0x04, 0x2f, 0x1f, 0x1d, 0xa6, - 0x29, 0x8c, 0x79, 0x59, 0x4e, 0x9a, 0x37, 0xc4, 0xd9, 0xa9, 0xed, 0x82, - 0xf0, 0x90, 0x6f, 0x67, 0xaa, 0xfa, 0xf1, 0xfc, 0xe3, 0x84, 0xae, 0x6d, - 0x8e, 0xb4, 0xc7, 0xc3, 0xa3, 0xf9, 0x0c, 0x55, 0x55, 0x6a, 0xf7, 0xff, - 0x00, 0xb1, 0xf5, 0x50, 0xea, 0x21, 0x11, 0xf4, 0x47, 0x2a, 0x87, 0x20, - 0xd8, 0x02, 0xbe, 0x77, 0x87, 0xb3, 0x66, 0xcc, 0x76, 0x1d, 0xe1, 0x44, - 0x1e, 0x13, 0x64, 0xbb, 0x79, 0x9d, 0x62, 0xb5, 0x60, 0xec, 0x3b, 0xe9, - 0xca, 0x14, 0x7b, 0xf5, 0x69, 0x2e, 0x6e, 0xfc, 0x58, 0x01, 0x4e, 0x43, - 0xb7, 0x99, 0xed, 0xcb, 0x78, 0x1c, 0x8b, 0x88, 0x62, 0x3a, 0x3a, 0x97, - 0xd7, 0x89, 0xef, 0x06, 0xd2, 0xeb, 0x0c, 0x44, 0x43, 0xa6, 0xfe, 0x7c, - 0x67, 0x05, 0x72, 0x3a, 0xc7, 0x42, 0x44, 0x1e, 0x98, 0xa4, 0x0a, 0x4d, - 0xf6, 0xe0, 0x15, 0x15, 0x6a, 0xe6, 0x7c, 0x65, 0x1b, 0x3d, 0x0a, 0x1b, - 0x89, 0x39, 0x28, 0x82, 0xeb, 0x5c, 0x62, 0xd9, 0x53, 0x4d, 0x27, 0xb3, - 0xf3, 0xdb, 0x16, 0xcf, 0x26, 0xe6, 0x30, 0x14, 0x26, 0xc4, 0xd5, 0xbc, - 0x6b, 0xf7, 0xd6, 0x05, 0x12, 0x87, 0x47, 0x33, 0x2c, 0x28, 0xd4, 0xe1, - 0x9c, 0xe1, 0x5b, 0x0a, 0x6b, 0x5c, 0xfe, 0x6f, 0x09, 0xe4, 0x9e, 0x3e, - 0x71, 0x01, 0x39, 0x36, 0x43, 0x5e, 0x1c, 0x67, 0x80, 0x2e, 0x98, 0x20, - 0x2b, 0x10, 0xd2, 0x71, 0x3a, 0xc7, 0x0d, 0xa0, 0xc9, 0x03, 0x9e, 0x70, - 0x76, 0x2e, 0x00, 0xe2, 0xf5, 0x9a, 0x24, 0x5f, 0x2d, 0x9e, 0x71, 0x48, - 0x82, 0x0e, 0x44, 0xdf, 0xd3, 0x15, 0xb1, 0x2c, 0x2e, 0xef, 0xae, 0x28, - 0x28, 0x22, 0x50, 0xf9, 0x79, 0xfb, 0x7b, 0xe2, 0x88, 0x4a, 0x1f, 0x24, - 0xe4, 0xf7, 0xf4, 0xf5, 0xd6, 0x71, 0x58, 0x3b, 0x68, 0x3a, 0x11, 0xd4, - 0xf0, 0x8b, 0x27, 0x25, 0x31, 0x34, 0xec, 0xd1, 0x20, 0x45, 0x1e, 0x07, - 0xc2, 0xf9, 0xf8, 0xc1, 0x14, 0xe9, 0x43, 0xc2, 0x65, 0xfa, 0xeb, 0xaf, - 0xf9, 0xbb, 0xaa, 0x81, 0xa7, 0xad, 0xf7, 0x20, 0x79, 0x43, 0xc6, 0x04, - 0x00, 0x03, 0xa1, 0x3d, 0x83, 0x7e, 0xea, 0xb0, 0xaf, 0xf8, 0x10, 0xee, - 0x55, 0xf3, 0x0d, 0x69, 0xb9, 0xd3, 0xe9, 0xf1, 0x8b, 0x3e, 0xca, 0xd2, - 0xa8, 0x3c, 0x1e, 0x2c, 0x5e, 0x1e, 0x71, 0x0b, 0x90, 0x82, 0xaa, 0x2a, - 0x6e, 0x45, 0x59, 0xdc, 0x3a, 0xef, 0x66, 0x85, 0xca, 0x3b, 0x79, 0x28, - 0x6d, 0x36, 0xd3, 0xa9, 0x4c, 0x67, 0xd4, 0x23, 0x06, 0xc4, 0x38, 0x50, - 0x89, 0xbf, 0x3c, 0xc1, 0x50, 0x10, 0x1e, 0x2e, 0xbf, 0x35, 0x80, 0x15, - 0x77, 0x7a, 0xcb, 0x11, 0x24, 0x6c, 0xa6, 0xa7, 0x58, 0x35, 0x89, 0x3b, - 0x02, 0x06, 0x2d, 0x54, 0x43, 0x51, 0x7f, 0x9c, 0xe6, 0xd1, 0x27, 0x4b, - 0xaf, 0x38, 0xe9, 0x01, 0x3e, 0xcc, 0x84, 0xda, 0x8d, 0xd1, 0xab, 0x96, - 0x50, 0xa9, 0xbd, 0xf0, 0x93, 0xf7, 0xce, 0x80, 0xe7, 0x82, 0xd3, 0xeb, - 0x84, 0x8a, 0x47, 0xa9, 0x95, 0xa4, 0x01, 0x4a, 0x23, 0xc4, 0xc8, 0x3a, - 0x10, 0xb2, 0xf3, 0x8b, 0x44, 0x2b, 0x77, 0x9d, 0xe6, 0x87, 0x26, 0x88, - 0x3a, 0x83, 0xb3, 0xf3, 0xd7, 0x14, 0x85, 0xfa, 0xb1, 0x20, 0x4e, 0x4d, - 0xea, 0xeb, 0x01, 0xb9, 0x2a, 0x14, 0x92, 0x1e, 0x9f, 0x9d, 0xe2, 0x83, - 0x56, 0x46, 0x30, 0x3d, 0xfa, 0xdc, 0x82, 0x21, 0xb4, 0x47, 0x3e, 0x9d, - 0x66, 0xd2, 0x36, 0xbb, 0xe4, 0xca, 0x0a, 0x10, 0x8d, 0xe2, 0x74, 0x66, - 0x83, 0x0b, 0x21, 0xbe, 0x3f, 0xee, 0x24, 0xc0, 0x49, 0x55, 0xdb, 0x49, - 0xe9, 0xc5, 0xfc, 0xe4, 0x21, 0xb4, 0x4a, 0x94, 0x67, 0x4d, 0xaf, 0x8c, - 0x85, 0x44, 0x40, 0x91, 0x45, 0x48, 0x69, 0x3a, 0xbb, 0x7a, 0xdf, 0x58, - 0xd6, 0x47, 0xc0, 0x8e, 0xdf, 0xd4, 0xd5, 0x79, 0xc6, 0x92, 0xb0, 0x15, - 0x5e, 0x0d, 0x87, 0x31, 0xb7, 0xc6, 0x14, 0x84, 0x9d, 0x3c, 0xf7, 0xee, - 0x7d, 0x39, 0xf4, 0x9f, 0xe0, 0xae, 0x22, 0xb1, 0xe0, 0xdd, 0x6b, 0x93, - 0x93, 0xd2, 0x9e, 0x0c, 0xdb, 0x60, 0x74, 0x1a, 0xed, 0xea, 0x85, 0x26, - 0xf9, 0x9a, 0xe7, 0x17, 0xae, 0x0a, 0xb8, 0x5b, 0xd9, 0xcc, 0x45, 0x6f, - 0x7b, 0x92, 0x88, 0x0d, 0x55, 0x44, 0xd7, 0x69, 0x4f, 0xaa, 0xb3, 0x50, - 0xec, 0x4b, 0x5f, 0x11, 0x80, 0x54, 0x0b, 0xcf, 0x74, 0x8f, 0x3e, 0x1e, - 0xb1, 0x6b, 0xd3, 0xd6, 0x2d, 0xd9, 0xfc, 0x17, 0x2d, 0x1a, 0x40, 0xe8, - 0x98, 0xa2, 0x4d, 0x12, 0x4b, 0xde, 0x06, 0x90, 0x8e, 0xbd, 0x66, 0x1d, - 0x3c, 0x87, 0x3b, 0x71, 0xe8, 0x88, 0xce, 0xfb, 0xcd, 0xac, 0xef, 0x91, - 0xc5, 0x84, 0xe1, 0x0b, 0xa5, 0x3d, 0x71, 0x91, 0x2d, 0x40, 0x63, 0x0f, - 0x6c, 0x10, 0xa1, 0xae, 0xd5, 0xc4, 0x4d, 0x8b, 0x88, 0x75, 0xef, 0x8f, - 0x62, 0x9d, 0xbe, 0x3e, 0x98, 0x71, 0x28, 0x4d, 0x7b, 0xe4, 0xb6, 0x3e, - 0x0b, 0xc6, 0x69, 0xb7, 0x23, 0xd3, 0x97, 0x4d, 0x9a, 0xe0, 0x7f, 0x8c, - 0x28, 0x6a, 0x0f, 0x5c, 0xe1, 0xc2, 0x83, 0xa1, 0x5b, 0x68, 0x1d, 0xcd, - 0x4f, 0x07, 0x2f, 0x3a, 0xc3, 0x4e, 0xb9, 0x50, 0x71, 0xf0, 0xe3, 0x50, - 0x69, 0xa6, 0xce, 0xbd, 0x73, 0x5a, 0xa4, 0xd6, 0x13, 0x45, 0xc1, 0x69, - 0x79, 0xf4, 0x69, 0x63, 0x8c, 0x2c, 0x86, 0xd0, 0x09, 0xb1, 0x7e, 0xc7, - 0x1d, 0x6f, 0x9c, 0xd0, 0x66, 0x89, 0xb9, 0x17, 0x87, 0x9e, 0xcf, 0x1c, - 0x63, 0xbb, 0x28, 0x95, 0x86, 0xc3, 0xbf, 0x58, 0x9d, 0xf1, 0x8a, 0x3a, - 0x0d, 0x3e, 0xe1, 0x16, 0x74, 0xbd, 0x7d, 0x7a, 0x17, 0xfc, 0x21, 0x46, - 0x9a, 0x70, 0x87, 0xf0, 0x2a, 0x89, 0x27, 0x5b, 0x3c, 0xf4, 0x2f, 0xa9, - 0x09, 0x58, 0x15, 0xa2, 0x68, 0x3e, 0x9c, 0x14, 0xe3, 0x88, 0xf6, 0xc1, - 0xd5, 0xa0, 0x34, 0x89, 0x41, 0x1b, 0xe1, 0xd1, 0x0b, 0xc9, 0x2c, 0xe1, - 0x15, 0xde, 0xac, 0x22, 0xb2, 0xb3, 0x83, 0x88, 0xf8, 0x25, 0xda, 0xbb, - 0x9b, 0x56, 0xdc, 0x6d, 0x0c, 0x3b, 0x97, 0xf2, 0x64, 0x4d, 0x05, 0x3a, - 0x70, 0x08, 0xd6, 0x9f, 0x9c, 0x47, 0x2d, 0xce, 0x8e, 0xb2, 0x68, 0x00, - 0x3a, 0x63, 0x67, 0xf7, 0x88, 0x09, 0x12, 0xf0, 0xbc, 0x60, 0x45, 0x1b, - 0xf2, 0x7f, 0x7c, 0x27, 0x28, 0x1b, 0x8e, 0xaf, 0x8c, 0x53, 0xad, 0xbc, - 0x5c, 0x44, 0x88, 0x53, 0x91, 0xd3, 0x8b, 0xda, 0x92, 0xcf, 0x5c, 0x04, - 0x65, 0x16, 0x59, 0xdf, 0x8c, 0xd8, 0x94, 0xeb, 0x20, 0xab, 0x6d, 0x7b, - 0xc9, 0x5d, 0xc5, 0xe1, 0xb7, 0x1d, 0x08, 0x93, 0x82, 0x70, 0x59, 0x70, - 0x01, 0x02, 0x08, 0x29, 0xb0, 0xf2, 0x7a, 0xe0, 0xb7, 0x96, 0xd8, 0x38, - 0x27, 0x8b, 0xb1, 0x25, 0x29, 0xf6, 0xa1, 0x81, 0x1a, 0x32, 0x4b, 0xeb, - 0x80, 0x98, 0x00, 0x36, 0x77, 0xbf, 0x39, 0x00, 0x58, 0xef, 0x74, 0x48, - 0xf3, 0xf9, 0xde, 0x23, 0xa0, 0x1b, 0x6c, 0x7a, 0x8e, 0xc9, 0xd9, 0xfd, - 0xe9, 0xc5, 0x08, 0x0d, 0x14, 0x90, 0xa2, 0xb3, 0x5b, 0xd7, 0x04, 0xf7, - 0x86, 0x1f, 0xd0, 0x83, 0xa3, 0x01, 0x77, 0xd6, 0xd3, 0xaf, 0x72, 0x99, - 0x63, 0x81, 0x40, 0x04, 0x00, 0xe8, 0x0f, 0xf1, 0x1c, 0xe2, 0x89, 0xa8, - 0x22, 0x27, 0x8c, 0x4f, 0x58, 0x41, 0x75, 0xe0, 0x29, 0x0d, 0x3c, 0x9c, - 0x11, 0x32, 0x06, 0x50, 0x66, 0xd4, 0x84, 0x79, 0x0a, 0xc4, 0x39, 0xe4, - 0xef, 0x66, 0x57, 0x52, 0x1a, 0x44, 0xb3, 0x70, 0x53, 0x47, 0x67, 0x32, - 0xf2, 0x51, 0x23, 0x02, 0xa5, 0xa0, 0x4a, 0xfe, 0x79, 0xc4, 0x4e, 0x5a, - 0x77, 0xcf, 0x39, 0x1a, 0xd0, 0x3c, 0x18, 0x1b, 0xe3, 0xac, 0x00, 0xef, - 0x57, 0x44, 0xe2, 0xff, 0x00, 0x18, 0x69, 0xaf, 0x82, 0xfd, 0xf2, 0xf0, - 0xf3, 0xa8, 0xdc, 0x71, 0xf2, 0x1c, 0xe0, 0x8b, 0x9c, 0xdf, 0x19, 0xa3, - 0x5e, 0x4e, 0x30, 0xaf, 0xe5, 0xe5, 0xc0, 0xb1, 0xbe, 0xb9, 0xc7, 0xbd, - 0x1b, 0xd7, 0x4e, 0x5a, 0x82, 0xbe, 0x17, 0xb1, 0xee, 0x64, 0x84, 0x26, - 0xcd, 0xae, 0xf2, 0x8c, 0x34, 0xf2, 0xfe, 0xf2, 0x00, 0xd9, 0xe7, 0xf7, - 0x62, 0x46, 0x87, 0x63, 0x7c, 0x63, 0x0a, 0x1c, 0x2a, 0x8f, 0x03, 0x81, - 0xb5, 0x2e, 0xb9, 0xc3, 0x0d, 0x18, 0x78, 0xae, 0xf4, 0x60, 0x34, 0x88, - 0xbd, 0xf2, 0xfe, 0xf8, 0x9a, 0xd8, 0x8a, 0xab, 0xae, 0x34, 0xfc, 0x5f, - 0xbe, 0x10, 0x3e, 0x62, 0x69, 0x5b, 0x7d, 0x49, 0x78, 0xbc, 0x1e, 0x31, - 0xd9, 0xba, 0x11, 0x79, 0x2d, 0xf6, 0x3a, 0x34, 0xd7, 0xdb, 0x04, 0x8a, - 0x4a, 0x02, 0xf9, 0x53, 0xb5, 0xdb, 0xfc, 0x00, 0x7f, 0x8d, 0x5d, 0x37, - 0x2d, 0x27, 0x49, 0xd0, 0xe9, 0xcd, 0xcc, 0x94, 0x20, 0x44, 0x08, 0xba, - 0x51, 0xcf, 0x4f, 0x84, 0xb8, 0x25, 0x2e, 0x69, 0x4b, 0xcc, 0x22, 0x07, - 0x3c, 0xcf, 0x57, 0x10, 0x59, 0x84, 0x17, 0x0e, 0x64, 0xff, 0x00, 0x8f, - 0xd5, 0xc2, 0x90, 0xa9, 0xc8, 0x2d, 0xc6, 0x01, 0xfd, 0xcc, 0x68, 0x5d, - 0x7b, 0x06, 0x35, 0x42, 0xeb, 0xd4, 0xca, 0x1b, 0x5d, 0xf1, 0xef, 0x8a, - 0x3e, 0xf2, 0x5c, 0x14, 0x3b, 0x94, 0x98, 0xa8, 0x85, 0x38, 0x07, 0x79, - 0xbe, 0x7e, 0xa9, 0x2d, 0xc1, 0xa1, 0xa1, 0x37, 0xae, 0xb3, 0x6d, 0x23, - 0x83, 0x41, 0x7c, 0x65, 0xd9, 0x72, 0xea, 0x62, 0xd2, 0x56, 0x9c, 0x64, - 0x4b, 0x96, 0x10, 0x68, 0x35, 0x1b, 0xdd, 0xfe, 0x3d, 0x73, 0x6d, 0x44, - 0x29, 0x3c, 0xe0, 0x38, 0x3d, 0x45, 0xc8, 0xb4, 0x96, 0x6d, 0x0a, 0xe4, - 0xaa, 0x87, 0x6d, 0x43, 0x0b, 0x9e, 0x07, 0xa6, 0xe7, 0x6e, 0xc4, 0xf0, - 0xf5, 0x80, 0x48, 0x09, 0x46, 0xba, 0xf1, 0x90, 0x1c, 0x3d, 0x29, 0xb4, - 0x8b, 0xe9, 0xfe, 0xbe, 0x99, 0xa2, 0x25, 0x72, 0x02, 0xf3, 0xb7, 0x41, - 0xdf, 0x12, 0x76, 0x70, 0x48, 0x24, 0x0c, 0xe8, 0xeb, 0xc0, 0xe8, 0xf7, - 0x7b, 0xff, 0x00, 0x20, 0x28, 0xaa, 0x8a, 0x30, 0xed, 0x37, 0x5c, 0x3f, - 0x5e, 0xb3, 0x94, 0xa9, 0x89, 0x08, 0x34, 0x79, 0x37, 0x7a, 0x4e, 0x6e, - 0x56, 0xc2, 0x5b, 0x6f, 0x92, 0x79, 0x35, 0x87, 0x44, 0x54, 0x86, 0xde, - 0xb8, 0xa4, 0x20, 0xd3, 0xbe, 0x4d, 0xe1, 0xa1, 0x4b, 0xde, 0xce, 0x72, - 0x45, 0x45, 0x39, 0x7b, 0xc5, 0x04, 0x39, 0x9d, 0x99, 0x03, 0xb7, 0x2f, - 0x43, 0x8c, 0xa0, 0x78, 0x1e, 0xbb, 0xcd, 0x3d, 0xdf, 0x8c, 0x05, 0x9f, - 0xdb, 0x2c, 0x89, 0xbb, 0xbc, 0x6a, 0x10, 0x87, 0xa6, 0x2d, 0x7d, 0x59, - 0x01, 0x4b, 0x8a, 0xf0, 0x36, 0x7a, 0xf5, 0x90, 0x95, 0xe2, 0xf0, 0x71, - 0x8b, 0x5d, 0x98, 0x01, 0xea, 0xf7, 0xe3, 0x0d, 0x00, 0xdf, 0x5e, 0xf9, - 0x5b, 0x1e, 0xee, 0x30, 0xd9, 0x03, 0x02, 0x23, 0x1d, 0x7b, 0xf3, 0xf3, - 0xce, 0x28, 0xd9, 0xc3, 0x55, 0x71, 0x27, 0x9e, 0x3d, 0xb3, 0x65, 0xe1, - 0x69, 0x54, 0xdc, 0xfa, 0xba, 0xbf, 0x4f, 0x3f, 0xe5, 0x70, 0xaa, 0x90, - 0x41, 0xb7, 0x6e, 0xce, 0xbc, 0xf1, 0xe3, 0x06, 0x8b, 0xc8, 0x49, 0x5d, - 0xbb, 0xb5, 0xee, 0x77, 0x9b, 0x1d, 0x8f, 0x73, 0xdb, 0x0d, 0xb2, 0x85, - 0x12, 0x62, 0xb3, 0xa8, 0x68, 0x30, 0xd9, 0x21, 0x6e, 0xd6, 0x65, 0xd6, - 0x2f, 0xab, 0xce, 0x06, 0xf8, 0x73, 0xde, 0xf0, 0x50, 0x55, 0x5f, 0xae, - 0x02, 0x10, 0xeb, 0x7e, 0x30, 0xd8, 0xb2, 0xe2, 0xc3, 0x91, 0x7e, 0xf8, - 0xb0, 0x85, 0x90, 0xf6, 0xb9, 0xb3, 0x5c, 0x3e, 0x98, 0x21, 0x69, 0xf3, - 0x79, 0xc6, 0x88, 0x3b, 0x38, 0xc1, 0x20, 0x2a, 0x2f, 0xd7, 0x27, 0x06, - 0xe0, 0x23, 0xc3, 0x91, 0x45, 0xd3, 0xbb, 0xf7, 0xcd, 0xad, 0x8d, 0x68, - 0xd3, 0xce, 0xbf, 0x7c, 0x81, 0xe2, 0x6b, 0x6c, 0x76, 0x3b, 0x0d, 0x4e, - 0xaf, 0x99, 0x8a, 0xaa, 0xad, 0x5e, 0xff, 0x00, 0xca, 0x18, 0xd3, 0x4e, - 0x4e, 0x41, 0x50, 0xb4, 0x98, 0x13, 0xc5, 0x97, 0xd7, 0x7d, 0xcc, 0xbf, - 0xd4, 0xd8, 0x45, 0xe8, 0xd6, 0x21, 0xe1, 0x7d, 0x71, 0xf5, 0xdb, 0xde, - 0x24, 0x8f, 0xef, 0x8f, 0x00, 0x89, 0x21, 0x71, 0xd9, 0x09, 0xae, 0xd3, - 0x2a, 0x7f, 0x19, 0x03, 0x9e, 0x7b, 0x32, 0x90, 0xa1, 0xa7, 0x9d, 0xd7, - 0x1a, 0xf5, 0x30, 0x0a, 0xf3, 0x7a, 0xce, 0xa4, 0x8e, 0x40, 0x39, 0x37, - 0xd6, 0x68, 0x6e, 0xbd, 0xbc, 0xe4, 0x14, 0xba, 0x5e, 0xba, 0xc0, 0xc4, - 0x4d, 0x65, 0xd3, 0x27, 0x56, 0xf1, 0xed, 0x82, 0x76, 0x88, 0xee, 0xfd, - 0xb1, 0x8b, 0x7a, 0xeb, 0x19, 0x18, 0x6f, 0x9f, 0x66, 0x07, 0xed, 0x6a, - 0x2f, 0xaa, 0xee, 0xef, 0x00, 0x8a, 0x47, 0x82, 0xd0, 0x1f, 0xe6, 0x20, - 0xa2, 0x1b, 0x54, 0x44, 0x4f, 0x08, 0xa6, 0x0a, 0x41, 0x0d, 0xa7, 0x22, - 0x87, 0x62, 0xcf, 0x5a, 0x3a, 0xba, 0x34, 0x26, 0xf8, 0xcd, 0x17, 0x11, - 0xe4, 0xd7, 0x06, 0x6a, 0x17, 0x8f, 0x4c, 0xf9, 0xc5, 0xf2, 0xeb, 0x2b, - 0x6b, 0x50, 0xfa, 0x63, 0xdf, 0x5e, 0xae, 0x72, 0x75, 0x83, 0xd4, 0x3e, - 0x19, 0x89, 0x43, 0x50, 0xf3, 0x96, 0x90, 0x35, 0x9a, 0xd0, 0x6f, 0x08, - 0x14, 0x3b, 0x44, 0x39, 0x98, 0x94, 0xf7, 0x35, 0xeb, 0x7e, 0x98, 0x8e, - 0x97, 0x5d, 0x71, 0x86, 0xbc, 0xef, 0x9c, 0x0b, 0x44, 0xa7, 0x9e, 0x1c, - 0x3d, 0x28, 0x82, 0x4e, 0xd5, 0x9d, 0x60, 0xcb, 0x2c, 0x8d, 0xc7, 0x6b, - 0xfc, 0xe3, 0x87, 0x35, 0x66, 0xfe, 0xea, 0x3f, 0x65, 0xcd, 0x9e, 0xf1, - 0x0d, 0x26, 0xc1, 0xec, 0x49, 0x31, 0x37, 0xc6, 0x42, 0xbc, 0xf4, 0x26, - 0x5d, 0xec, 0xd6, 0x3a, 0x9b, 0xd3, 0x8e, 0xc0, 0x6f, 0x38, 0xa5, 0x4f, - 0x4c, 0x4d, 0x6f, 0x57, 0x8c, 0x81, 0x26, 0xf7, 0xbf, 0x5c, 0xd2, 0xf8, - 0xf4, 0xc1, 0x16, 0x97, 0x2a, 0x8e, 0xd4, 0x9c, 0x60, 0xb1, 0xf5, 0xc5, - 0x46, 0xbf, 0x5e, 0x73, 0x41, 0x0e, 0xf3, 0xa6, 0xdc, 0x5a, 0x23, 0xc9, - 0xbc, 0x56, 0x61, 0x0f, 0xca, 0xe0, 0x0f, 0xb5, 0x63, 0x33, 0x8b, 0xf7, - 0x7d, 0x7d, 0xbf, 0xf8, 0x15, 0xe4, 0xa7, 0x34, 0xca, 0xbe, 0x67, 0x27, - 0xcf, 0x83, 0x19, 0x9b, 0x8c, 0x23, 0x47, 0x2d, 0x23, 0x8a, 0x8f, 0xb6, - 0x37, 0x5d, 0xe7, 0xdd, 0x8a, 0xe3, 0x00, 0xee, 0xe0, 0xfa, 0x0e, 0x70, - 0xdf, 0x3e, 0x99, 0x35, 0x0d, 0x66, 0xc0, 0x6e, 0x1c, 0x66, 0x9d, 0x47, - 0x02, 0x13, 0x67, 0xae, 0x7a, 0x13, 0x5c, 0xdc, 0xfa, 0xe5, 0xe3, 0x2c, - 0xb9, 0xfb, 0xa0, 0xf9, 0x57, 0x9a, 0x5f, 0x0a, 0x8d, 0x46, 0x18, 0x70, - 0x1f, 0xfc, 0x01, 0x8d, 0x33, 0xa8, 0xa4, 0x41, 0x6a, 0x33, 0xa3, 0xe0, - 0x4e, 0xc6, 0x23, 0x51, 0xd3, 0xc6, 0x21, 0x0d, 0x7c, 0xe7, 0x00, 0x9a, - 0xf7, 0xcb, 0x0d, 0x1b, 0xf5, 0xc7, 0xb7, 0x78, 0x79, 0xdf, 0x5c, 0x19, - 0x63, 0xae, 0xcc, 0x9a, 0xd0, 0x61, 0xb9, 0x4c, 0xe7, 0x78, 0x1c, 0x7d, - 0xcf, 0xae, 0x06, 0xb8, 0xdf, 0x9c, 0x36, 0x1f, 0x4c, 0x74, 0x1d, 0xf7, - 0x8f, 0x8b, 0x6f, 0xa8, 0x76, 0x8f, 0x40, 0x72, 0xba, 0xcd, 0x94, 0x09, - 0x36, 0x7b, 0x14, 0x91, 0xd7, 0x50, 0x95, 0x2c, 0xbf, 0xfc, 0x25, 0x9f, - 0x5b, 0xec, 0x5a, 0x7c, 0xad, 0x9f, 0x25, 0x29, 0xc1, 0xc7, 0xe5, 0x36, - 0x31, 0x1a, 0xba, 0xc8, 0xe7, 0x6a, 0x43, 0x5e, 0x1d, 0x0b, 0x59, 0xbf, - 0xe9, 0xc4, 0x80, 0x57, 0x87, 0xfc, 0xb3, 0x41, 0xe6, 0x41, 0xfb, 0xfa, - 0xd6, 0x2e, 0xe2, 0x16, 0xc3, 0x5f, 0x38, 0x7d, 0xd2, 0xea, 0xef, 0xbe, - 0x12, 0x34, 0xdf, 0x39, 0xd4, 0x24, 0x1d, 0x6c, 0x73, 0x12, 0xf5, 0xd3, - 0x1c, 0x34, 0x33, 0xba, 0x5f, 0xbe, 0x15, 0x48, 0x9a, 0xda, 0x18, 0x00, - 0x6b, 0xb8, 0xaa, 0x87, 0x8c, 0x19, 0xf4, 0xdb, 0x17, 0xb7, 0x01, 0xeb, - 0x92, 0xc2, 0x45, 0x28, 0xbc, 0x08, 0x9f, 0xfe, 0xd9, 0xff, 0xd9 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc4, + 0x00, 0x2b, 0x11, 0x00, 0x01, 0x01, 0x04, 0x08, 0x07, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x11, 0x21, + 0x31, 0x20, 0x41, 0x51, 0x61, 0x71, 0x81, 0xa1, 0xd1, 0x30, 0x40, 0x50, + 0x91, 0xb1, 0xc1, 0xf1, 0x10, 0xe1, 0x60, 0xff, 0xda, 0x00, 0x08, 0x01, + 0x03, 0x01, 0x01, 0x3f, 0x10, 0xff, 0x00, 0x00, 0xf1, 0x6f, 0xe5, 0xc1, + 0xec, 0x5b, 0xee, 0x36, 0x6f, 0xb8, 0xd9, 0xbe, 0xf3, 0x66, 0x46, 0x7a, + 0x64, 0x37, 0xa6, 0x42, 0x7a, 0x64, 0x67, 0xa6, 0x42, 0x7a, 0x64, 0x27, + 0xa6, 0x43, 0x7a, 0x64, 0x27, 0xa6, 0x46, 0x7a, 0x6f, 0xbc, 0xd9, 0xbe, + 0xe3, 0x66, 0xfb, 0x8d, 0x9b, 0xee, 0x36, 0x62, 0x09, 0x90, 0xae, 0x20, + 0xca, 0xd6, 0x71, 0x13, 0x1c, 0xac, 0xdc, 0xc1, 0x21, 0x89, 0x2e, 0x03, + 0xbb, 0x10, 0x20, 0x83, 0x60, 0x0f, 0xd5, 0xe3, 0xc1, 0x60, 0x09, 0x92, + 0xc4, 0x81, 0xd9, 0xc0, 0x63, 0x17, 0xb5, 0xe0, 0xa2, 0xa2, 0x07, 0x76, + 0xbb, 0xf7, 0x3b, 0xb7, 0xca, 0x0c, 0xa4, 0xf4, 0xc0, 0x15, 0x18, 0x01, + 0xb3, 0x38, 0x58, 0x3b, 0x34, 0x70, 0x51, 0xb1, 0x4f, 0x89, 0xda, 0xfb, + 0x94, 0x3b, 0xf0, 0x17, 0x86, 0x73, 0xe6, 0xe3, 0x97, 0xd6, 0x79, 0x32, + 0x64, 0x18, 0x96, 0x67, 0xc4, 0x36, 0x6b, 0xb5, 0xf3, 0x70, 0x0e, 0xee, + 0xc5, 0xbe, 0x36, 0xcb, 0x46, 0x27, 0xf5, 0x04, 0x8f, 0x04, 0x0f, 0x4d, + 0x26, 0x20, 0x88, 0xc4, 0x8c, 0xf5, 0x63, 0x76, 0xa9, 0x08, 0x2d, 0xb0, + 0x87, 0xb1, 0xb7, 0x96, 0x95, 0x1c, 0x24, 0xf9, 0x88, 0xca, 0x37, 0xd9, + 0x3e, 0x11, 0x09, 0xe6, 0x02, 0x80, 0x7b, 0x39, 0x08, 0xc8, 0x03, 0x80, + 0x00, 0x2a, 0x1a, 0xfe, 0x7f, 0x55, 0xa8, 0xdd, 0x47, 0x33, 0xa6, 0xdf, + 0xba, 0xbb, 0x5f, 0x03, 0xd3, 0x59, 0xad, 0xec, 0x52, 0x73, 0xda, 0xb1, + 0x10, 0xfb, 0x20, 0xf7, 0x3a, 0xac, 0xc0, 0x3c, 0x5c, 0x90, 0x97, 0xf1, + 0xab, 0x67, 0x25, 0x8d, 0x0b, 0x61, 0x35, 0xfc, 0x43, 0xf5, 0x29, 0x32, + 0x4f, 0x64, 0xa2, 0xbc, 0xb4, 0x08, 0x71, 0x71, 0x07, 0x30, 0x5a, 0xfb, + 0x0c, 0x43, 0xe6, 0x36, 0x5d, 0x9c, 0x0c, 0x24, 0xee, 0x01, 0x84, 0x13, + 0x27, 0xb5, 0x64, 0xe4, 0x22, 0xc0, 0x00, 0x38, 0x00, 0x22, 0xec, 0x27, + 0x17, 0xd7, 0x6f, 0xf1, 0xbf, 0xac, 0x97, 0x6f, 0x2e, 0x6d, 0xe3, 0xda, + 0xaf, 0x3d, 0xda, 0x1e, 0xb0, 0x7f, 0x87, 0xb3, 0x9d, 0x25, 0x21, 0xe1, + 0xac, 0xf9, 0xa1, 0xfb, 0xfa, 0x8f, 0x36, 0x93, 0xbf, 0x12, 0x50, 0xfc, + 0xb5, 0x3c, 0xe3, 0xd9, 0x88, 0x00, 0x41, 0x0f, 0x04, 0x38, 0x83, 0x61, + 0x63, 0x9c, 0xa8, 0xc0, 0xda, 0x26, 0x0e, 0x63, 0x6a, 0x6f, 0x2c, 0x00, + 0x0c, 0xc9, 0xfe, 0x6b, 0x85, 0x04, 0x95, 0x5c, 0x14, 0xa6, 0xf4, 0x39, + 0xdc, 0xab, 0x44, 0xe2, 0xef, 0x02, 0xa6, 0x07, 0x39, 0x4c, 0x81, 0x38, + 0xa1, 0x0b, 0x6d, 0x6c, 0x29, 0x84, 0x6b, 0x5c, 0xec, 0x06, 0xfc, 0x04, + 0xbf, 0x9f, 0x89, 0x7f, 0x7a, 0x05, 0xb8, 0xf6, 0x97, 0xda, 0x98, 0x22, + 0x58, 0x43, 0xb8, 0x7f, 0xaa, 0x7a, 0xaf, 0x81, 0x45, 0x16, 0x5d, 0x96, + 0xd4, 0x85, 0xce, 0xcb, 0x9f, 0xd0, 0x69, 0x89, 0x2e, 0x19, 0xac, 0x59, + 0x27, 0x7e, 0xac, 0x28, 0xae, 0xd4, 0xa7, 0x78, 0x3c, 0xdf, 0xf1, 0xb4, + 0x1a, 0x62, 0x5b, 0x86, 0x6b, 0x1e, 0x0c, 0x0a, 0xb1, 0x43, 0x4a, 0x49, + 0x7c, 0x1c, 0xe6, 0x83, 0x1c, 0x93, 0x2a, 0x7a, 0xaf, 0x80, 0xa7, 0xda, + 0xb6, 0x5e, 0x3f, 0x52, 0x5f, 0xdf, 0xcd, 0x14, 0xbf, 0x52, 0x50, 0xa4, + 0xb0, 0xb9, 0x6d, 0xcc, 0xdb, 0x39, 0xec, 0x52, 0x0d, 0x98, 0x77, 0xb3, + 0xbf, 0x87, 0xd3, 0xd5, 0x7c, 0x0a, 0xd3, 0xb3, 0xe1, 0x4f, 0x80, 0x87, + 0x31, 0x6a, 0x5f, 0x1b, 0x41, 0xf1, 0x4d, 0x9a, 0xd8, 0x3f, 0xbc, 0x25, + 0xe3, 0xa0, 0x5b, 0x0a, 0xfb, 0xc0, 0x45, 0x58, 0xda, 0x0d, 0x31, 0x0c, + 0x25, 0xab, 0xf9, 0x41, 0x25, 0xfc, 0x69, 0x74, 0x5d, 0x07, 0xc5, 0x32, + 0x58, 0x48, 0x4a, 0xfb, 0x72, 0xa0, 0x97, 0xf3, 0xa3, 0xc9, 0x5d, 0xd0, + 0x6e, 0xa7, 0xaa, 0xc3, 0x21, 0xe7, 0xd3, 0x4b, 0xa4, 0xba, 0x77, 0x97, + 0xe8, 0x07, 0xa6, 0x91, 0x85, 0x0a, 0xac, 0xa9, 0x6a, 0x3e, 0x28, 0xa6, + 0x97, 0x7e, 0x8b, 0x6d, 0xc7, 0xfb, 0xed, 0xb6, 0x1c, 0x9e, 0xd7, 0xcc, + 0x69, 0xcd, 0x61, 0xae, 0xc1, 0x95, 0x7b, 0xd5, 0xd2, 0xb7, 0xf5, 0xae, + 0x7e, 0x9e, 0xc9, 0x2e, 0x35, 0x27, 0x67, 0x4d, 0x25, 0xc3, 0xf5, 0x0e, + 0x8f, 0x6e, 0x89, 0x63, 0x50, 0xd1, 0x7c, 0x54, 0x4e, 0xce, 0x9c, 0x93, + 0xe3, 0x1b, 0xae, 0x75, 0xc5, 0x74, 0xfa, 0x56, 0xeb, 0xbc, 0x7b, 0xb6, + 0x8b, 0xe2, 0xa2, 0x76, 0x74, 0xd2, 0x5c, 0x3a, 0x52, 0xa9, 0x47, 0xbc, + 0x6a, 0x6d, 0x07, 0xc5, 0x35, 0xca, 0xed, 0x72, 0x1e, 0xa3, 0x91, 0xe9, + 0x7a, 0x0f, 0x8a, 0x6c, 0x96, 0xd1, 0xfc, 0xe9, 0x77, 0x8f, 0x19, 0x20, + 0xce, 0x9a, 0x4b, 0x87, 0x4a, 0x15, 0xe3, 0x77, 0xaf, 0x6f, 0x2e, 0x9d, + 0x8c, 0x50, 0xae, 0x1d, 0x29, 0x92, 0x5c, 0x2e, 0xe9, 0x69, 0x2e, 0x39, + 0x2c, 0x69, 0xcd, 0x24, 0x06, 0xfd, 0x2d, 0x2d, 0xc5, 0x5f, 0x1a, 0x61, + 0x1b, 0x0f, 0x60, 0x37, 0xe9, 0x4e, 0xf2, 0xff, 0x00, 0x5e, 0x37, 0x64, + 0x97, 0x1a, 0xd6, 0x94, 0xf6, 0x4c, 0x87, 0x9f, 0x5d, 0x2a, 0xd5, 0x50, + 0x64, 0xb7, 0x1a, 0x65, 0xac, 0xd0, 0x57, 0x97, 0x4a, 0x4a, 0xc5, 0x5b, + 0x25, 0xb8, 0xd3, 0xdd, 0x72, 0x0b, 0x3e, 0x95, 0x92, 0xb5, 0x57, 0x74, + 0x5b, 0x74, 0xc8, 0xac, 0xa9, 0xa5, 0xb8, 0x65, 0x52, 0x70, 0xe9, 0x56, + 0xe2, 0x94, 0x7d, 0x09, 0xa4, 0x78, 0x3b, 0x53, 0xd5, 0x71, 0x90, 0x43, + 0x3e, 0x96, 0x86, 0xef, 0x2c, 0x3f, 0xb4, 0x9e, 0x9c, 0xe1, 0xb4, 0x3c, + 0x67, 0x0e, 0x8e, 0x97, 0x6f, 0xd4, 0x90, 0x6c, 0x96, 0xd3, 0xfd, 0xa7, + 0xaa, 0xf8, 0x0a, 0x7d, 0xab, 0xe9, 0x2f, 0xb2, 0x24, 0x54, 0xb4, 0x6d, + 0x07, 0xc5, 0x32, 0x4b, 0x85, 0x04, 0x96, 0x3d, 0x19, 0x16, 0x49, 0x60, + 0x3b, 0xc3, 0x3b, 0x69, 0xea, 0xb8, 0x48, 0x23, 0x97, 0x4b, 0xd0, 0x7c, + 0x53, 0x12, 0x35, 0x8e, 0x94, 0x5a, 0x2b, 0x37, 0xd0, 0x7c, 0x53, 0x6a, + 0x3e, 0x3a, 0x5b, 0x41, 0xf0, 0x93, 0xfe, 0x52, 0xd5, 0x61, 0x90, 0xf3, + 0xeb, 0xf1, 0x57, 0x52, 0xcf, 0xf5, 0x2b, 0x7a, 0x36, 0x83, 0x4c, 0x49, + 0x19, 0x0c, 0xbd, 0xce, 0xe6, 0x49, 0x47, 0xf1, 0x6f, 0xd1, 0xfd, 0xb4, + 0xc5, 0xdf, 0x1b, 0x29, 0xea, 0xb5, 0xdc, 0xab, 0x34, 0xee, 0x97, 0xa0, + 0xf8, 0xa6, 0x49, 0x70, 0xe9, 0x69, 0x2e, 0x34, 0xf4, 0x2f, 0x1d, 0xfe, + 0x63, 0x46, 0xcf, 0xe7, 0xba, 0xb0, 0xe8, 0x9a, 0x2c, 0xff, 0x00, 0x0a, + 0x05, 0xed, 0x07, 0xf7, 0x4c, 0x29, 0xcb, 0x8d, 0x1d, 0xbf, 0x52, 0xcb, + 0x8e, 0xb6, 0xe6, 0x65, 0xc7, 0xe9, 0xbd, 0x33, 0x88, 0xdc, 0x5d, 0x89, + 0xdf, 0xf7, 0x3d, 0xd6, 0xf3, 0x1d, 0x11, 0x79, 0x86, 0x54, 0x0e, 0x23, + 0x60, 0x2e, 0xee, 0xda, 0x99, 0xb9, 0xdb, 0x48, 0x78, 0x3e, 0x9a, 0xb4, + 0xe5, 0xe3, 0x38, 0xf4, 0x54, 0x97, 0x7f, 0xc5, 0xbf, 0xe1, 0xbc, 0xee, + 0x00, 0x68, 0xff, 0x00, 0x74, 0xcd, 0xe6, 0x50, 0x3f, 0x03, 0x03, 0xa1, + 0x8f, 0x48, 0x4b, 0x0f, 0xd7, 0xc6, 0xf0, 0x18, 0x08, 0x0d, 0x07, 0x02, + 0xf9, 0x00, 0x9a, 0xe2, 0xe8, 0xda, 0xf8, 0xf4, 0x93, 0x72, 0x41, 0xc4, + 0xec, 0x5d, 0x0d, 0x5d, 0xc1, 0x7c, 0x55, 0x8b, 0x43, 0x11, 0xab, 0xf9, + 0xaa, 0xeb, 0xf5, 0xbf, 0xac, 0xf8, 0x69, 0x63, 0x41, 0xd0, 0xd6, 0x2d, + 0x04, 0x4e, 0xae, 0xe0, 0xb9, 0x1e, 0x5c, 0x22, 0x58, 0xfa, 0xb5, 0xae, + 0xfe, 0x59, 0x6f, 0x40, 0x3e, 0xb5, 0xa9, 0xa3, 0x39, 0x7e, 0x62, 0x8a, + 0xf1, 0x54, 0x78, 0x0f, 0x41, 0x54, 0x0c, 0x44, 0xf5, 0x86, 0x5c, 0x2b, + 0xdc, 0x11, 0xc4, 0x40, 0xeb, 0xc8, 0x25, 0x6f, 0x21, 0x8e, 0x3d, 0xa9, + 0xda, 0xe0, 0x10, 0x7d, 0xa6, 0x03, 0x57, 0x34, 0xe7, 0xc2, 0x8a, 0x5a, + 0xe0, 0xc6, 0x47, 0x47, 0x76, 0x3c, 0x82, 0x58, 0x36, 0x94, 0x3d, 0x5f, + 0xc9, 0x49, 0x71, 0x6a, 0x00, 0xf2, 0x7b, 0x70, 0xcc, 0x20, 0xa8, 0xe9, + 0x23, 0xa3, 0x02, 0x08, 0x04, 0x48, 0x80, 0x46, 0x06, 0x3c, 0x7f, 0xed, + 0xe9, 0x0a, 0x0a, 0xce, 0x41, 0x1f, 0xc2, 0x40, 0x04, 0x99, 0x00, 0x49, + 0xc0, 0x7c, 0x63, 0x18, 0xac, 0x93, 0x80, 0xa8, 0x64, 0x1c, 0x32, 0xe2, + 0x3f, 0x32, 0x9c, 0x91, 0xa8, 0xed, 0x2b, 0xa1, 0xcb, 0x2e, 0xdc, 0x2c, + 0x28, 0xbb, 0x42, 0x73, 0xe0, 0x9f, 0x79, 0x77, 0xe2, 0xbb, 0x6a, 0x18, + 0x60, 0x3b, 0x40, 0xe5, 0xc8, 0x24, 0xbf, 0xbc, 0x44, 0x97, 0x7e, 0x03, + 0xd8, 0xd4, 0x20, 0x30, 0x1b, 0x97, 0x9c, 0xf8, 0xce, 0x67, 0xce, 0x26, + 0x42, 0x07, 0xb6, 0xa0, 0x9e, 0x4e, 0x7c, 0x83, 0xf8, 0x09, 0xc0, 0xce, + 0x67, 0x21, 0xab, 0xb8, 0xee, 0xe7, 0xca, 0x27, 0xae, 0xc7, 0x42, 0x79, + 0x74, 0xb1, 0xa6, 0x17, 0xc5, 0x89, 0xa2, 0xf4, 0x02, 0x50, 0x31, 0xaf, + 0x58, 0x65, 0xc8, 0x39, 0x4d, 0x62, 0x18, 0x86, 0xe1, 0xc7, 0x3e, 0x5c, + 0x27, 0xc3, 0x6e, 0x02, 0x5d, 0xff, 0x00, 0x1e, 0xe6, 0xb3, 0x00, 0x2f, + 0x3b, 0x08, 0xf2, 0x31, 0xd1, 0x84, 0x39, 0x25, 0xdd, 0xee, 0xbe, 0x1c, + 0xad, 0xe9, 0xdc, 0x14, 0xb4, 0xfd, 0x86, 0xa5, 0xe6, 0x9f, 0x60, 0xe0, + 0x33, 0xe4, 0x65, 0x26, 0x08, 0xcb, 0x1c, 0x45, 0x84, 0x4f, 0x9f, 0x7a, + 0xd6, 0x12, 0x16, 0x9a, 0x86, 0xf7, 0x31, 0x2f, 0x24, 0x99, 0x98, 0x9e, + 0x49, 0xd9, 0x1c, 0xa4, 0xb8, 0x80, 0x7c, 0x8e, 0x2d, 0xfc, 0x93, 0xf0, + 0x19, 0x44, 0x71, 0x6c, 0x3c, 0x9e, 0x4c, 0x12, 0x08, 0x22, 0x04, 0x17, + 0x83, 0x61, 0x0d, 0x7b, 0x82, 0x22, 0xc2, 0x20, 0x75, 0xa7, 0xf6, 0xb5, + 0x97, 0x2c, 0x33, 0x95, 0x08, 0x5e, 0x64, 0x07, 0x7d, 0x22, 0xc4, 0x92, + 0x49, 0x31, 0x24, 0xbc, 0x9b, 0x49, 0xe5, 0x1d, 0x91, 0xca, 0x21, 0x88, + 0x11, 0xee, 0x3c, 0x50, 0xc3, 0xf9, 0xcc, 0xbe, 0x00, 0x94, 0x46, 0xf2, + 0x6a, 0xc8, 0x79, 0xbb, 0x95, 0x04, 0x82, 0x08, 0x81, 0x04, 0x10, 0x6f, + 0x12, 0x61, 0xdb, 0x02, 0x56, 0x1a, 0xc6, 0x51, 0xe6, 0xc2, 0x62, 0xa1, + 0x01, 0x69, 0xa8, 0x67, 0xa0, 0x79, 0x62, 0x49, 0x24, 0x92, 0xf2, 0x62, + 0x49, 0xe5, 0x9d, 0x91, 0x98, 0x44, 0x30, 0x55, 0x98, 0xf0, 0x05, 0x7c, + 0xbe, 0xab, 0x2a, 0x10, 0x8c, 0xa6, 0xbc, 0x87, 0xa1, 0x0c, 0x49, 0xe5, + 0xc1, 0x71, 0x78, 0x98, 0x88, 0x60, 0x8e, 0xb1, 0x9d, 0xc4, 0x40, 0x87, + 0x55, 0x74, 0xa1, 0x17, 0x47, 0x99, 0xb7, 0xc7, 0x39, 0xea, 0xca, 0x5f, + 0xdb, 0x98, 0x97, 0x92, 0x4c, 0xcc, 0x4f, 0x31, 0x15, 0x6c, 0xc8, 0x0c, + 0x9f, 0x1f, 0x4b, 0x38, 0x49, 0x28, 0xf1, 0xe1, 0x09, 0x56, 0xb4, 0x99, + 0xf6, 0x96, 0x2f, 0xe6, 0x9d, 0xa4, 0xb9, 0xe2, 0x07, 0x11, 0x75, 0xf3, + 0xcd, 0xce, 0x84, 0x79, 0x67, 0xe9, 0xae, 0x58, 0x8e, 0xd3, 0x38, 0x73, + 0x70, 0xb7, 0xd4, 0x1f, 0x47, 0x22, 0x7b, 0x13, 0xcb, 0xbe, 0x5d, 0x60, + 0xbe, 0x31, 0x39, 0x99, 0x5c, 0x07, 0x39, 0x0b, 0x35, 0x00, 0xde, 0x2a, + 0x39, 0xc8, 0xde, 0x09, 0xe5, 0x61, 0x62, 0xc4, 0x5a, 0x05, 0x66, 0x16, + 0x4a, 0x73, 0x20, 0xf3, 0xae, 0xd3, 0x17, 0xa0, 0xe5, 0x87, 0x69, 0xc2, + 0x30, 0x60, 0x41, 0x88, 0x30, 0xde, 0x3e, 0x3c, 0xf2, 0x72, 0x9b, 0x1c, + 0xa5, 0x29, 0x05, 0x81, 0x2f, 0x64, 0xe3, 0xcf, 0x56, 0x98, 0xca, 0x77, + 0x61, 0x60, 0xe4, 0xde, 0x3c, 0x90, 0xac, 0x3c, 0x3d, 0xf6, 0xb7, 0xa0, + 0x11, 0xc0, 0xfd, 0xa5, 0x4e, 0xe6, 0x36, 0x44, 0x87, 0x5b, 0x53, 0x48, + 0xc2, 0x6c, 0x91, 0xec, 0x62, 0xce, 0x99, 0xef, 0xc5, 0x45, 0xa4, 0xa3, + 0xec, 0x05, 0xe7, 0xb0, 0xd0, 0x9e, 0xec, 0x04, 0x81, 0xe4, 0x09, 0xac, + 0x3d, 0x60, 0x1f, 0x8f, 0x43, 0x00, 0x91, 0x0c, 0x09, 0x17, 0x55, 0x74, + 0x1b, 0xef, 0x37, 0x6f, 0xb8, 0xdd, 0xbe, 0xf3, 0x76, 0xfb, 0xcd, 0xdb, + 0xee, 0x37, 0x6f, 0xbc, 0xdd, 0xbe, 0xf3, 0x76, 0xfb, 0xcd, 0xdb, 0x2e, + 0x94, 0x50, 0xd5, 0xbe, 0xf3, 0x76, 0xfb, 0xcd, 0xdb, 0xef, 0x37, 0x62, + 0x49, 0x93, 0x12, 0x4f, 0x9f, 0xf0, 0xbf, 0xff, 0xc4, 0x00, 0x2b, 0x11, + 0x00, 0x01, 0x01, 0x04, 0x0a, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, 0x21, 0x31, 0xf0, 0x20, 0x41, + 0x50, 0x51, 0x61, 0x71, 0x81, 0x91, 0xa1, 0xc1, 0x40, 0xb1, 0x10, 0x30, + 0xd1, 0xe1, 0xf1, 0x60, 0xff, 0xda, 0x00, 0x08, 0x01, 0x02, 0x01, 0x01, + 0x3f, 0x10, 0xff, 0x00, 0x80, 0x43, 0x73, 0x28, 0x11, 0x20, 0x6a, 0xd8, + 0x83, 0x70, 0xc4, 0x71, 0x16, 0x60, 0x3b, 0x69, 0x13, 0xb6, 0x91, 0xbb, + 0x69, 0x9b, 0xb6, 0x9c, 0xbb, 0x69, 0x6b, 0xb6, 0x96, 0xbb, 0x69, 0x6b, + 0xb6, 0x96, 0xbb, 0x69, 0xcb, 0xb6, 0xf5, 0x98, 0xd7, 0x45, 0xa7, 0x2e, + 0xda, 0x44, 0xed, 0xa4, 0x4e, 0xdb, 0xfc, 0x77, 0xeb, 0x7f, 0x98, 0xfd, + 0x65, 0x17, 0x8d, 0xc3, 0x28, 0xbc, 0x6f, 0xe2, 0x8a, 0x51, 0x5c, 0xac, + 0x9c, 0x80, 0x52, 0x76, 0x41, 0x5a, 0x06, 0x00, 0xbf, 0x0b, 0xcb, 0xd0, + 0x0f, 0x60, 0xc4, 0xf0, 0x1a, 0x44, 0x9d, 0x54, 0xa7, 0x01, 0xb0, 0xe2, + 0x7a, 0xc9, 0x34, 0x6c, 0x76, 0xdf, 0x86, 0xff, 0x00, 0x6f, 0x39, 0xd1, + 0x89, 0x62, 0x75, 0x26, 0x22, 0x89, 0x25, 0x22, 0xf7, 0xb4, 0x8d, 0xdb, + 0x12, 0x44, 0x97, 0x32, 0xbe, 0xcd, 0xf0, 0xc5, 0xec, 0xfb, 0xcd, 0xd1, + 0xbd, 0xf0, 0x94, 0xd6, 0x83, 0xba, 0x84, 0xbb, 0x86, 0x41, 0x14, 0x7d, + 0xf5, 0xef, 0x1f, 0xa6, 0x43, 0x20, 0x7b, 0xb3, 0xfe, 0xff, 0x00, 0x7b, + 0x6a, 0xd3, 0xa9, 0xd9, 0xa6, 0x13, 0x7c, 0x3e, 0x56, 0xb9, 0x73, 0x29, + 0x8a, 0x95, 0xbd, 0x4b, 0x3b, 0x44, 0xc5, 0x41, 0x40, 0x5f, 0x05, 0x19, + 0xee, 0xc2, 0xaa, 0x2a, 0xe3, 0x6f, 0x83, 0x69, 0x50, 0x52, 0x29, 0xba, + 0xb0, 0x0f, 0x72, 0x1f, 0x60, 0xf0, 0x8d, 0x8e, 0xd9, 0x8c, 0x3c, 0xf5, + 0xbd, 0xd3, 0x00, 0x44, 0x96, 0x7f, 0x82, 0x1b, 0x2a, 0xbc, 0xd7, 0x96, + 0x15, 0xec, 0x68, 0x0c, 0x4a, 0x2a, 0x9d, 0x89, 0xd5, 0xa5, 0x64, 0x28, + 0xc7, 0xea, 0x43, 0x10, 0xc2, 0xe0, 0x0f, 0x79, 0xc6, 0xe1, 0x0a, 0xcd, + 0x40, 0x90, 0x24, 0x24, 0x98, 0x92, 0x54, 0xb4, 0xcd, 0x7f, 0x09, 0x3c, + 0x44, 0xfb, 0x64, 0xd3, 0x6d, 0x77, 0xad, 0xa0, 0x5c, 0x03, 0xe3, 0x29, + 0xed, 0x1a, 0xfe, 0xdf, 0x39, 0x37, 0x52, 0xfa, 0x09, 0xed, 0x67, 0x2f, + 0x0b, 0xfb, 0xf0, 0x80, 0x61, 0x08, 0x4d, 0x4d, 0xa3, 0x4c, 0xa3, 0x5f, + 0x19, 0x4f, 0xc9, 0x5f, 0x89, 0xbb, 0xfb, 0x35, 0x36, 0xba, 0x4c, 0xe1, + 0xf0, 0xf0, 0x5c, 0x48, 0x21, 0xe0, 0x82, 0x84, 0x1a, 0x88, 0x32, 0xb9, + 0x36, 0x1b, 0x87, 0x14, 0x44, 0x88, 0xa8, 0x85, 0xe2, 0x80, 0x02, 0x1e, + 0x91, 0x3f, 0x40, 0x4a, 0xd4, 0x5c, 0xcc, 0x00, 0xd4, 0x90, 0x18, 0x86, + 0x22, 0x92, 0x52, 0x66, 0xab, 0x85, 0x41, 0xc1, 0x8e, 0xc3, 0xd4, 0x2f, + 0xaa, 0x39, 0x0d, 0xdb, 0x8f, 0x06, 0xf9, 0x9d, 0x71, 0xa9, 0x3e, 0xc9, + 0xbf, 0xf2, 0x8c, 0xe1, 0xc7, 0x5f, 0x13, 0x28, 0xd3, 0x33, 0x7b, 0x66, + 0xb5, 0xa3, 0xe1, 0x08, 0x0d, 0x1f, 0x9a, 0xc6, 0x20, 0x92, 0x04, 0x14, + 0x24, 0xa0, 0x8a, 0x88, 0xe3, 0xa6, 0x08, 0x5a, 0xc3, 0xc5, 0xc4, 0x38, + 0x8d, 0x0a, 0xe7, 0x1a, 0x68, 0x5f, 0x82, 0x74, 0x0e, 0xc3, 0xe6, 0x67, + 0x9f, 0x2a, 0x67, 0x9f, 0xb6, 0xbd, 0x05, 0xf3, 0x35, 0x84, 0x65, 0x2e, + 0xc0, 0x17, 0xb8, 0x87, 0x40, 0x8d, 0x4b, 0xab, 0xa6, 0x4e, 0x6e, 0x5e, + 0xe4, 0x8b, 0x25, 0x38, 0xb7, 0x6c, 0x4e, 0xef, 0x03, 0xb1, 0x4e, 0xe9, + 0xf0, 0x8c, 0x69, 0x44, 0xe6, 0x93, 0xea, 0x56, 0xc5, 0xe5, 0xff, 0x00, + 0xd2, 0x57, 0x4a, 0x6a, 0xc2, 0x46, 0xf2, 0x2e, 0x9e, 0x34, 0x3e, 0x07, + 0xee, 0x15, 0xce, 0x71, 0xf0, 0xf9, 0x49, 0x26, 0x14, 0xf8, 0x4b, 0x2d, + 0xe7, 0x24, 0x9f, 0x74, 0xf8, 0x4b, 0x2d, 0xe5, 0x24, 0xde, 0x9f, 0x09, + 0x24, 0xf1, 0xf7, 0xca, 0xdf, 0x19, 0xb9, 0xee, 0xf3, 0x39, 0x4a, 0x6f, + 0x09, 0x4d, 0x99, 0xce, 0x53, 0xc2, 0x9a, 0xb0, 0x9d, 0xf0, 0xf0, 0xb9, + 0x4a, 0x6f, 0x09, 0x49, 0x49, 0xdf, 0xf4, 0xd8, 0xbc, 0xbc, 0x9b, 0xd3, + 0xe1, 0x19, 0xfe, 0x4c, 0xe1, 0xf1, 0xea, 0xa9, 0xae, 0xcf, 0x33, 0x84, + 0x66, 0x66, 0x6b, 0xb2, 0xb9, 0x49, 0x27, 0xd5, 0x3e, 0x12, 0xcb, 0x79, + 0x49, 0x27, 0xf6, 0x97, 0x09, 0x65, 0xba, 0x35, 0xf4, 0x77, 0x4f, 0x84, + 0x62, 0x67, 0x3f, 0x99, 0xde, 0xc7, 0xe5, 0x3f, 0xd2, 0x57, 0x4a, 0x7c, + 0x25, 0x96, 0xf2, 0x94, 0xce, 0x13, 0xfc, 0x25, 0x74, 0xb2, 0xf9, 0x4a, + 0x6f, 0x09, 0x65, 0xbc, 0xa4, 0x93, 0xee, 0x9f, 0x09, 0x65, 0xb1, 0x58, + 0xb9, 0xfc, 0x29, 0xf0, 0x96, 0x5b, 0xca, 0x53, 0x38, 0x4b, 0x2d, 0xe5, + 0xe4, 0x9f, 0x54, 0xf8, 0x49, 0x27, 0xdd, 0x29, 0xbe, 0xb7, 0xcd, 0x56, + 0x2f, 0x2f, 0x9c, 0x91, 0xd2, 0x9f, 0x09, 0x65, 0xbc, 0xa3, 0xe4, 0x8f, + 0x54, 0xf8, 0x47, 0xc9, 0x0e, 0xec, 0xa9, 0xda, 0x7f, 0x2b, 0x6e, 0x51, + 0xf2, 0x47, 0xaa, 0x7c, 0x25, 0x96, 0xf2, 0x8f, 0x92, 0x3d, 0x53, 0xe1, + 0x2c, 0xb4, 0x1f, 0xe4, 0x93, 0x2a, 0x7c, 0x25, 0x8c, 0xcc, 0xf1, 0x47, + 0x94, 0xa6, 0x70, 0x96, 0x3b, 0xc7, 0xfb, 0xdd, 0x0e, 0x52, 0x4d, 0xa9, + 0xf0, 0x96, 0x33, 0x38, 0xee, 0xcb, 0xbc, 0xae, 0x7a, 0x57, 0x73, 0x5f, + 0x35, 0x09, 0x7f, 0xcf, 0x29, 0x4c, 0xe1, 0x2c, 0xb7, 0x94, 0xa6, 0x70, + 0x96, 0x33, 0x2f, 0xf9, 0x7c, 0xcf, 0x1c, 0xfc, 0x72, 0x99, 0xc9, 0x1d, + 0x29, 0xf0, 0x96, 0x4b, 0xdc, 0xbe, 0x70, 0xf8, 0xe5, 0x29, 0x9c, 0x25, + 0x90, 0xcc, 0xce, 0x4d, 0x21, 0xfe, 0xe4, 0xfc, 0x72, 0x94, 0xde, 0x12, + 0xc7, 0x66, 0x76, 0xe3, 0xe2, 0x09, 0x33, 0x5f, 0xc7, 0x29, 0x4d, 0xe1, + 0x2c, 0xb7, 0x94, 0xa6, 0xf0, 0x96, 0x33, 0x33, 0x22, 0x87, 0x18, 0x66, + 0xdc, 0xa5, 0x37, 0x84, 0xb1, 0xd9, 0xfd, 0xf8, 0x86, 0x0d, 0x58, 0x71, + 0x84, 0x7f, 0x91, 0xe1, 0xdb, 0xb7, 0x29, 0x4d, 0x07, 0xf7, 0x88, 0xdb, + 0x52, 0xbb, 0xaa, 0x8d, 0x97, 0xcb, 0xd3, 0x01, 0xe6, 0x21, 0xb1, 0xfe, + 0xcd, 0x76, 0x54, 0x5e, 0x0f, 0x63, 0xf2, 0x98, 0x3c, 0xb0, 0x0a, 0xff, + 0x00, 0x8a, 0xf3, 0xb2, 0xe2, 0xc2, 0x39, 0x9f, 0x64, 0xe2, 0x98, 0x3c, + 0xb8, 0x86, 0xe0, 0x1e, 0xac, 0xb0, 0x71, 0x5e, 0x43, 0x60, 0x4c, 0xbf, + 0x69, 0xa8, 0xab, 0xc6, 0xeb, 0xda, 0xca, 0xbe, 0x74, 0xed, 0xf7, 0xb0, + 0x22, 0xaf, 0x19, 0xc2, 0x98, 0x90, 0x45, 0x2a, 0x20, 0x5e, 0x5c, 0x6a, + 0xa1, 0xd8, 0xd9, 0x33, 0x33, 0x97, 0xc2, 0xd9, 0x14, 0x12, 0x2e, 0x2f, + 0x06, 0x84, 0xfd, 0x18, 0x94, 0x01, 0x92, 0xba, 0xa1, 0x56, 0x02, 0xc9, + 0xc0, 0xe0, 0x72, 0x50, 0xbc, 0x2f, 0xd2, 0x9a, 0x88, 0x4f, 0x4a, 0xdc, + 0x21, 0x70, 0x1c, 0xac, 0x89, 0x9e, 0x19, 0x72, 0x60, 0xeb, 0x37, 0x07, + 0x18, 0x3e, 0x95, 0xb3, 0x59, 0x27, 0x20, 0x13, 0x90, 0x9d, 0x2c, 0x95, + 0x65, 0x6f, 0xf2, 0x3e, 0x88, 0x07, 0x32, 0x7e, 0x92, 0x01, 0x04, 0x17, + 0x82, 0x10, 0x8b, 0xc1, 0x63, 0xbc, 0xdc, 0x5c, 0xb7, 0x9e, 0x5a, 0x82, + 0x30, 0xba, 0xc7, 0xbb, 0x12, 0x5e, 0x95, 0x00, 0xfd, 0x80, 0x16, 0x01, + 0x02, 0x08, 0x07, 0x0f, 0xaa, 0x11, 0x22, 0x92, 0xf6, 0x17, 0x21, 0x75, + 0x8f, 0x13, 0x1f, 0x93, 0x89, 0x39, 0x2a, 0x0c, 0xd7, 0xeb, 0x09, 0x58, + 0x02, 0x2d, 0xc6, 0x20, 0xe8, 0x40, 0x2c, 0x04, 0x88, 0x2e, 0x24, 0x41, + 0x18, 0x85, 0x04, 0x3f, 0x19, 0x4b, 0x14, 0x02, 0x40, 0x00, 0xa4, 0x80, + 0x03, 0x12, 0x50, 0x30, 0x42, 0xc0, 0x00, 0xcc, 0xd6, 0x75, 0x2a, 0x75, + 0xfb, 0x10, 0x04, 0x39, 0x79, 0xc1, 0x1c, 0x94, 0x21, 0x17, 0xbe, 0xe3, + 0x62, 0xa8, 0x1c, 0x05, 0xd7, 0x29, 0x53, 0x60, 0xa7, 0x02, 0x85, 0xd5, + 0xfd, 0x89, 0xe4, 0x1b, 0x00, 0x50, 0x6a, 0x09, 0xd5, 0x62, 0xa0, 0x91, + 0x0b, 0x31, 0x4d, 0x5a, 0x04, 0x1a, 0x7d, 0xca, 0x24, 0x08, 0xa1, 0x99, + 0x52, 0x1b, 0xbf, 0x51, 0x61, 0xa2, 0xaf, 0xb4, 0x22, 0x0a, 0xa2, 0x62, + 0x8a, 0xe0, 0x6e, 0xfb, 0xd4, 0x48, 0x8a, 0x8c, 0x44, 0x03, 0x50, 0xfc, + 0xc0, 0xb0, 0xd0, 0xc9, 0xbd, 0x60, 0x2a, 0x6c, 0xfc, 0xc9, 0xf0, 0x1d, + 0x63, 0xdb, 0x8f, 0xc2, 0x0e, 0x85, 0xae, 0xc1, 0x59, 0x21, 0x1c, 0x82, + 0xad, 0x5c, 0x35, 0xf0, 0x50, 0x04, 0x3e, 0x3c, 0xd1, 0xd8, 0xa1, 0xc0, + 0x2d, 0x82, 0xf0, 0x60, 0x0b, 0x82, 0x1a, 0x92, 0xa6, 0xe4, 0x47, 0xf8, + 0x24, 0x02, 0x08, 0x2f, 0x04, 0x10, 0x46, 0x06, 0x2c, 0x64, 0x92, 0x80, + 0xbc, 0xaa, 0xa4, 0xf2, 0xd9, 0xc6, 0xb5, 0xdf, 0xcf, 0x35, 0x52, 0x5e, + 0x57, 0x04, 0x4f, 0x43, 0x12, 0x18, 0x00, 0x00, 0x01, 0xc0, 0x04, 0x02, + 0xe0, 0x3c, 0x24, 0xc0, 0x8b, 0xaf, 0x23, 0xc6, 0x2e, 0xbc, 0x5d, 0x72, + 0x92, 0xef, 0x3d, 0x74, 0x85, 0x48, 0xc0, 0x3f, 0x42, 0xf2, 0xe0, 0x08, + 0xf0, 0xc8, 0x00, 0x41, 0x78, 0x20, 0x82, 0x30, 0x21, 0x0b, 0x1e, 0xf1, + 0x38, 0xbd, 0xe0, 0xbc, 0x18, 0x05, 0x71, 0x10, 0x31, 0x51, 0xe6, 0x94, + 0x0c, 0x49, 0x7e, 0x00, 0xf2, 0x76, 0x05, 0x31, 0x60, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x0c, 0x07, 0x88, 0xb8, 0x08, 0x0a, 0xe9, 0x62, 0x21, 0x0e, + 0x87, 0xdb, 0xca, 0x07, 0x79, 0x89, 0x91, 0xc7, 0x40, 0x11, 0x3a, 0x97, + 0x69, 0x8f, 0x8a, 0x02, 0x01, 0x40, 0x10, 0x45, 0xe0, 0xb8, 0xb1, 0x0a, + 0xbd, 0x51, 0xbc, 0x17, 0x95, 0xcf, 0x11, 0xc6, 0xe8, 0x79, 0x67, 0x1b, + 0x59, 0x79, 0xb8, 0x07, 0x93, 0xb4, 0x31, 0x4b, 0xd8, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x03, 0x01, 0xe3, 0x2e, 0x03, 0x17, 0x60, 0x79, 0x18, 0xc2, + 0xb3, 0xcb, 0xc3, 0x95, 0x55, 0x3c, 0xb5, 0x42, 0x0f, 0x74, 0x5e, 0x02, + 0xbd, 0x41, 0x72, 0x04, 0x23, 0xe3, 0x90, 0x08, 0x20, 0x85, 0x04, 0x10, + 0x45, 0xe0, 0xb8, 0x86, 0xba, 0x81, 0x15, 0xe5, 0x16, 0xce, 0x26, 0x0a, + 0x0e, 0x5e, 0x4d, 0xc4, 0x9d, 0x81, 0x13, 0xb3, 0x86, 0x25, 0x80, 0x00, + 0x00, 0x1c, 0x00, 0x40, 0x2e, 0x03, 0xc8, 0x47, 0x11, 0x13, 0x53, 0x2f, + 0x1a, 0x17, 0xee, 0xcf, 0xe7, 0x84, 0xcd, 0xf2, 0xe7, 0x79, 0x0f, 0x7e, + 0x0e, 0x01, 0x0d, 0xe3, 0xb7, 0x93, 0x18, 0xb1, 0xcd, 0x58, 0xf3, 0xbc, + 0xa0, 0x16, 0xf7, 0x81, 0xbd, 0x01, 0xad, 0x84, 0xcd, 0xdb, 0xa3, 0xc2, + 0xf8, 0xc7, 0x1a, 0x2f, 0x10, 0x72, 0x06, 0x38, 0xaa, 0x07, 0x38, 0x95, + 0x60, 0x10, 0x20, 0x80, 0x70, 0xf2, 0x95, 0x12, 0xb7, 0x10, 0x76, 0x01, + 0xb8, 0x0c, 0xf9, 0xcd, 0xc6, 0xa8, 0x4a, 0x9f, 0x19, 0x18, 0x91, 0x0e, + 0xb1, 0x01, 0x85, 0x48, 0x08, 0x8b, 0xc9, 0xf3, 0x17, 0x08, 0xaf, 0xb8, + 0x17, 0x34, 0x27, 0x62, 0x33, 0x33, 0x73, 0xd7, 0x20, 0xf2, 0x65, 0xfe, + 0x23, 0xd0, 0xd4, 0x94, 0x63, 0x15, 0x2b, 0x52, 0xa6, 0xe2, 0x01, 0x0e, + 0xf3, 0x57, 0xaa, 0x1e, 0x57, 0x07, 0xeb, 0xc1, 0xb9, 0x56, 0xa6, 0x20, + 0x82, 0x85, 0x41, 0x11, 0x07, 0x90, 0x45, 0x44, 0x1c, 0x30, 0xbd, 0x84, + 0xcc, 0xe9, 0xe1, 0x22, 0xb8, 0x05, 0x25, 0xc9, 0x15, 0x5a, 0x92, 0xb5, + 0x61, 0x8a, 0xb1, 0xe5, 0x15, 0x2e, 0x80, 0x40, 0x32, 0x5a, 0xfc, 0xe5, + 0x94, 0x67, 0x0b, 0xd0, 0x4a, 0xb5, 0x65, 0xab, 0x18, 0x69, 0x5e, 0x46, + 0x37, 0x2d, 0xd5, 0xa1, 0x14, 0x61, 0xfd, 0xfb, 0x0c, 0x1d, 0xa5, 0xd3, + 0xd2, 0xad, 0x95, 0x94, 0x81, 0xb0, 0x20, 0xa5, 0x70, 0x7a, 0xb4, 0xad, + 0x90, 0x4c, 0x03, 0xcb, 0x46, 0xa4, 0x52, 0x84, 0x3c, 0x6e, 0x14, 0x64, + 0xa8, 0x70, 0x55, 0x62, 0x95, 0xcf, 0xf6, 0xef, 0x95, 0x17, 0xcc, 0x91, + 0xbb, 0x2c, 0xde, 0x2f, 0xcb, 0xe3, 0x6b, 0xf7, 0x92, 0xf6, 0xd6, 0x64, + 0x1e, 0x59, 0x45, 0xe3, 0xe2, 0x7f, 0x37, 0x65, 0x17, 0xb3, 0xbf, 0x3f, + 0x98, 0xb2, 0x8f, 0x7d, 0xfe, 0x16, 0xaa, 0x92, 0xc4, 0x82, 0x31, 0x3c, + 0xa0, 0xd9, 0x5f, 0x51, 0x2e, 0x62, 0xa0, 0x89, 0x40, 0x23, 0x87, 0x57, + 0xde, 0x04, 0xa6, 0x50, 0x4b, 0x08, 0x92, 0x24, 0xcc, 0x03, 0xec, 0x60, + 0x36, 0x69, 0x33, 0xa6, 0x91, 0x3a, 0x69, 0x13, 0xa6, 0x93, 0x3a, 0x69, + 0x33, 0xa6, 0x93, 0x3a, 0x69, 0x13, 0xa6, 0x91, 0x3a, 0x69, 0x13, 0xa6, + 0x91, 0x3a, 0x69, 0x33, 0xa6, 0x91, 0x3a, 0x60, 0x38, 0x03, 0x20, 0x1e, + 0x87, 0xfc, 0x2f, 0xff, 0xc4, 0x00, 0x2b, 0x10, 0x01, 0x00, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x01, 0x04, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x11, 0x21, 0x31, 0x41, 0x00, 0x51, 0x61, 0x71, 0x81, 0x91, 0xa1, + 0xb1, 0xc1, 0xd1, 0xf0, 0x20, 0x40, 0xe1, 0xf1, 0x30, 0x10, 0x60, 0x50, + 0xff, 0xda, 0x00, 0x08, 0x01, 0x01, 0x00, 0x01, 0x3f, 0x10, 0xff, 0x00, + 0xf8, 0x00, 0x5a, 0x05, 0x7a, 0x05, 0xfd, 0x38, 0x3e, 0x17, 0xd2, 0xfe, + 0xdc, 0x1d, 0x48, 0x32, 0x88, 0x7b, 0x50, 0xe4, 0xd5, 0x2e, 0x6b, 0x3d, + 0xd0, 0xe2, 0xe8, 0xf1, 0x32, 0x22, 0x46, 0x64, 0x1c, 0x6f, 0x93, 0xf4, + 0xc4, 0xb5, 0x67, 0x6c, 0x30, 0x7b, 0xe2, 0x70, 0xe7, 0x49, 0xd6, 0x70, + 0xe2, 0x1f, 0xae, 0x48, 0xd5, 0x66, 0x87, 0x77, 0x06, 0xaf, 0x82, 0x49, + 0x66, 0x50, 0x48, 0xcd, 0x8e, 0x38, 0xc4, 0x23, 0x29, 0x0f, 0x49, 0x92, + 0x02, 0xcd, 0x9c, 0x4b, 0x23, 0x19, 0x9f, 0x47, 0xe4, 0x87, 0x29, 0x97, + 0x89, 0xd2, 0xcc, 0x4d, 0xb5, 0x35, 0x3d, 0xf3, 0x74, 0x36, 0x5e, 0x1d, + 0xd9, 0xc8, 0x5b, 0xac, 0x58, 0xfa, 0x92, 0x7e, 0x39, 0x06, 0x94, 0xe1, + 0x95, 0x9c, 0x44, 0x93, 0xf1, 0xc8, 0x2b, 0x7c, 0x5a, 0xfa, 0x93, 0x9f, + 0xd6, 0xf7, 0xed, 0xe2, 0x60, 0xd3, 0x81, 0x57, 0xd4, 0xb3, 0xcf, 0xef, + 0x16, 0x76, 0x72, 0x1e, 0xe3, 0x12, 0x4b, 0xd4, 0x0c, 0xf1, 0xb0, 0x17, + 0x68, 0xfe, 0xa7, 0xfa, 0xa2, 0x0d, 0x11, 0xaf, 0x89, 0xf9, 0x0a, 0x70, + 0x86, 0xb3, 0x90, 0x52, 0x70, 0x32, 0x80, 0x78, 0xa5, 0x40, 0xea, 0x12, + 0x0c, 0x2d, 0xba, 0x48, 0x6a, 0x26, 0x67, 0xd6, 0x71, 0x29, 0x49, 0xe2, + 0x01, 0x3b, 0x01, 0x25, 0x71, 0x14, 0xc6, 0xb2, 0xf0, 0x99, 0x3a, 0x64, + 0x36, 0xc8, 0x43, 0xc4, 0xa6, 0xcf, 0x6b, 0x12, 0x84, 0x8f, 0x49, 0x60, + 0xe3, 0xb2, 0x69, 0x4c, 0x49, 0xca, 0x5d, 0xcf, 0x05, 0xca, 0xd9, 0xca, + 0x89, 0x30, 0xb5, 0x8a, 0x91, 0x13, 0x14, 0xe3, 0x08, 0x3a, 0x30, 0x4e, + 0xcc, 0xa8, 0x32, 0x9f, 0x23, 0x50, 0xaa, 0xb2, 0xe4, 0x82, 0x59, 0x00, + 0xd4, 0xab, 0x33, 0x25, 0xbd, 0x48, 0x14, 0xf1, 0x67, 0x53, 0x68, 0xa6, + 0xf2, 0x39, 0xe9, 0xe6, 0x31, 0xf4, 0x92, 0x71, 0x6a, 0x1c, 0xa4, 0x9b, + 0xca, 0xce, 0x8e, 0x22, 0x54, 0x8a, 0x02, 0xdb, 0x9a, 0x46, 0xb2, 0xd9, + 0x0b, 0x89, 0x67, 0x92, 0x64, 0x17, 0xcb, 0xc2, 0xa3, 0x38, 0xb5, 0x11, + 0x12, 0x9b, 0xa7, 0x0a, 0x8d, 0x80, 0xa1, 0x2c, 0xc1, 0x66, 0x2f, 0xc4, + 0xb1, 0xc0, 0x02, 0xe9, 0x9c, 0x69, 0xba, 0x40, 0x1c, 0x24, 0x9a, 0x0e, + 0x0b, 0x84, 0x48, 0x25, 0x90, 0x9b, 0x10, 0x7c, 0x24, 0x50, 0x38, 0x8e, + 0x2d, 0x68, 0x22, 0x92, 0x41, 0x98, 0xcd, 0x2c, 0xcc, 0xe7, 0x22, 0x42, + 0x44, 0x8e, 0x03, 0xa1, 0xd3, 0x58, 0x70, 0xda, 0x95, 0x82, 0xd7, 0x82, + 0x90, 0x57, 0xa2, 0x28, 0xc2, 0x2e, 0x06, 0x3e, 0x62, 0x15, 0x67, 0x93, + 0xc8, 0xfd, 0xc2, 0x0f, 0x46, 0x46, 0x2d, 0x49, 0xcb, 0x72, 0xd7, 0x23, + 0x01, 0xe0, 0xcc, 0xd4, 0xb7, 0x92, 0x74, 0xcc, 0xcb, 0x89, 0xb2, 0x36, + 0xae, 0x2f, 0xee, 0x84, 0x20, 0x8e, 0xd6, 0xee, 0x23, 0x90, 0xf2, 0xe3, + 0x22, 0xc6, 0x9a, 0x6a, 0x7a, 0x1a, 0x59, 0xf9, 0xe1, 0x92, 0x78, 0xc8, + 0x92, 0x14, 0x58, 0xa6, 0x4b, 0xd9, 0x36, 0x31, 0x38, 0x46, 0xd9, 0xae, + 0x81, 0x76, 0xa0, 0x54, 0xd4, 0xc7, 0x7a, 0xe2, 0x6b, 0x43, 0x2a, 0x54, + 0x30, 0xb8, 0x94, 0x4c, 0x4d, 0x4f, 0x78, 0xe4, 0xab, 0xe6, 0xa3, 0xc0, + 0xb9, 0x41, 0x1d, 0xd2, 0xdd, 0x4b, 0x07, 0x13, 0x93, 0x93, 0x86, 0x48, + 0x60, 0x64, 0x91, 0x24, 0x95, 0x16, 0x4e, 0xb8, 0x12, 0xa3, 0x04, 0x38, + 0x5c, 0x81, 0x9b, 0x4b, 0xd8, 0xbc, 0x75, 0x04, 0xa1, 0x7d, 0x1a, 0x20, + 0x45, 0x20, 0x24, 0x39, 0x8b, 0xe4, 0x12, 0x51, 0x2b, 0x17, 0x12, 0x29, + 0xc9, 0x8c, 0x00, 0x8e, 0x02, 0x0e, 0x3b, 0x00, 0xbf, 0x84, 0x3f, 0x4a, + 0x01, 0x60, 0x05, 0xf1, 0xc5, 0xc0, 0x20, 0x28, 0x8d, 0xde, 0x8d, 0x44, + 0x4c, 0x0e, 0x78, 0x30, 0xd8, 0xc0, 0xb6, 0xa4, 0x74, 0x68, 0x36, 0xec, + 0xca, 0xb2, 0x32, 0x28, 0xf0, 0xc3, 0x43, 0x28, 0x4e, 0x57, 0x35, 0xc6, + 0x87, 0x72, 0x23, 0xa5, 0xe6, 0xa3, 0x64, 0x43, 0x73, 0x7c, 0x75, 0x3b, + 0x04, 0x87, 0x40, 0x26, 0x60, 0x67, 0x2e, 0x05, 0xc0, 0x23, 0x96, 0x2f, + 0x03, 0x68, 0xc4, 0x49, 0xd2, 0x23, 0xc1, 0x46, 0x53, 0x57, 0xdc, 0x33, + 0x22, 0x57, 0x8a, 0xb0, 0x12, 0x0b, 0xcf, 0x07, 0x92, 0x36, 0x83, 0x02, + 0x5d, 0x2b, 0xd0, 0x23, 0xff, 0x00, 0xc9, 0x1b, 0x2f, 0x14, 0x3a, 0x63, + 0x60, 0x51, 0x24, 0x05, 0xf0, 0xc6, 0x13, 0x4c, 0xae, 0xa6, 0xcd, 0x07, + 0x6f, 0x21, 0x11, 0xbe, 0xf5, 0x6c, 0x45, 0x5d, 0xb0, 0x8c, 0x70, 0xc5, + 0xcd, 0xce, 0xde, 0x59, 0x99, 0x9d, 0x90, 0x50, 0xc3, 0x10, 0x62, 0x29, + 0xd8, 0x80, 0x7c, 0x33, 0x68, 0x44, 0x81, 0xa0, 0x99, 0xae, 0x9e, 0x4c, + 0x14, 0xcc, 0xab, 0x47, 0x00, 0xa3, 0x84, 0x99, 0x09, 0x8a, 0xd2, 0x84, + 0x59, 0x0c, 0x8e, 0x15, 0x52, 0x3d, 0x4b, 0x61, 0x95, 0x85, 0x84, 0x26, + 0x88, 0x4b, 0x48, 0x49, 0x45, 0x4c, 0xea, 0xfa, 0x2f, 0x1c, 0x56, 0xf7, + 0x44, 0x1a, 0x2f, 0x07, 0x04, 0x66, 0x09, 0x4e, 0x1e, 0x2e, 0x88, 0x60, + 0x04, 0x4a, 0x45, 0x38, 0x26, 0x96, 0x62, 0x20, 0xa3, 0x50, 0x4a, 0x05, + 0x87, 0x31, 0x39, 0x83, 0xb9, 0xa6, 0x02, 0x71, 0x54, 0x3c, 0xb2, 0xd9, + 0x50, 0x19, 0x48, 0xc4, 0x4b, 0x14, 0x77, 0xc9, 0xc0, 0x0a, 0x58, 0xab, + 0x10, 0x02, 0xd4, 0x3c, 0x22, 0xe0, 0x95, 0xc9, 0x32, 0x54, 0xeb, 0xfb, + 0x2d, 0xa6, 0x6b, 0xb3, 0xb3, 0x27, 0x14, 0xd8, 0x59, 0x29, 0xc6, 0xd9, + 0x5a, 0xdd, 0xb5, 0x64, 0xac, 0x96, 0x12, 0xab, 0x39, 0x39, 0xc7, 0x66, + 0x63, 0xf4, 0xe6, 0x5a, 0x05, 0xa1, 0x5b, 0xcb, 0x13, 0x2a, 0xcf, 0xeb, + 0x39, 0xe0, 0x54, 0x2a, 0x62, 0x5f, 0x33, 0x34, 0xca, 0xe2, 0x71, 0x3e, + 0x7a, 0x8e, 0x1c, 0xef, 0xc3, 0x1d, 0x63, 0x71, 0x7f, 0xc4, 0x70, 0xe4, + 0x9a, 0x16, 0xa8, 0x10, 0x03, 0x1b, 0x99, 0x4f, 0xcf, 0x9e, 0x09, 0x19, + 0x0b, 0xa0, 0x9a, 0x21, 0x2b, 0x7f, 0x7a, 0x61, 0x1d, 0x08, 0x5b, 0x24, + 0x03, 0x31, 0xee, 0x37, 0x66, 0x8f, 0x67, 0x31, 0x43, 0x0c, 0xe4, 0x91, + 0x8e, 0xde, 0x83, 0x53, 0xc4, 0x10, 0x2e, 0x07, 0xb5, 0x9d, 0xcc, 0x75, + 0x7f, 0x19, 0x02, 0x83, 0x31, 0x8a, 0x0f, 0x7b, 0x99, 0xd3, 0x78, 0x9b, + 0xa6, 0x1e, 0x1c, 0x96, 0x23, 0x2a, 0xaa, 0xd0, 0xa4, 0xb9, 0xc6, 0x71, + 0x77, 0x04, 0x70, 0x4c, 0x29, 0x09, 0x83, 0xc4, 0xd5, 0x2a, 0xe7, 0x07, + 0x99, 0xc0, 0x2c, 0x9c, 0x0e, 0x58, 0x69, 0x19, 0x80, 0x95, 0x79, 0x46, + 0x66, 0x02, 0xf8, 0x22, 0x0b, 0x21, 0x54, 0x93, 0x4d, 0xb4, 0xc3, 0x05, + 0x11, 0x52, 0xe1, 0xc1, 0x0e, 0x96, 0x50, 0x7c, 0x0a, 0xaa, 0x4e, 0xd8, + 0x20, 0xc4, 0xf1, 0x90, 0x64, 0x43, 0x24, 0x32, 0xcc, 0xe0, 0x2a, 0x14, + 0x95, 0x33, 0x35, 0xc6, 0x60, 0xfa, 0x18, 0xc4, 0x83, 0x2a, 0x2d, 0x2b, + 0x16, 0x8b, 0xdb, 0x6a, 0x40, 0xed, 0x01, 0xb2, 0x04, 0x33, 0x44, 0x18, + 0x26, 0x4c, 0xf2, 0x1d, 0x8e, 0x42, 0x2c, 0xca, 0x44, 0x96, 0x25, 0x56, + 0x4d, 0x42, 0x33, 0x1c, 0x4e, 0x5d, 0x9c, 0xa8, 0x24, 0x19, 0x0a, 0xcc, + 0xcc, 0x88, 0xc6, 0x38, 0xeb, 0x19, 0x6d, 0xe1, 0x66, 0x4d, 0x59, 0x62, + 0x31, 0x16, 0xe3, 0x14, 0x85, 0xa8, 0x23, 0x48, 0x01, 0xe6, 0x49, 0x54, + 0x99, 0x23, 0x92, 0x25, 0x04, 0x51, 0x9e, 0x52, 0x10, 0x0c, 0x11, 0x14, + 0x8a, 0x00, 0xe7, 0x8a, 0xb0, 0x62, 0x87, 0x32, 0xb0, 0x6b, 0xe4, 0x84, + 0x8a, 0x12, 0x04, 0xb3, 0x66, 0x5d, 0x28, 0x25, 0xb0, 0x93, 0xc4, 0x21, + 0xc0, 0x38, 0x58, 0x92, 0xf2, 0x01, 0x90, 0x31, 0x4a, 0x69, 0x59, 0x91, + 0x26, 0x7d, 0x15, 0x96, 0xd0, 0x7f, 0xf0, 0x4e, 0x80, 0x1e, 0xbc, 0x42, + 0x42, 0x82, 0xb1, 0xda, 0x80, 0x0a, 0xc7, 0x26, 0x37, 0x58, 0x20, 0xea, + 0xaf, 0x82, 0x63, 0x6c, 0x5e, 0x4e, 0x41, 0xb2, 0x64, 0x96, 0x9b, 0xc9, + 0x2b, 0x01, 0x04, 0x15, 0x94, 0xd2, 0x62, 0x4a, 0xe1, 0x1b, 0x3c, 0x18, + 0x28, 0x58, 0x00, 0xc8, 0x01, 0x51, 0x33, 0x44, 0x85, 0x91, 0xe5, 0x49, + 0xa8, 0x21, 0xe5, 0xa5, 0xc6, 0x32, 0xc8, 0x64, 0x56, 0xcb, 0xa0, 0x8a, + 0x1a, 0x86, 0x93, 0x91, 0x04, 0x24, 0x84, 0x1b, 0x22, 0xa1, 0x60, 0xcb, + 0x26, 0x48, 0xae, 0x30, 0x65, 0x57, 0x19, 0x15, 0x34, 0x96, 0x05, 0x18, + 0x82, 0xb1, 0x0b, 0x0f, 0x12, 0x54, 0x8e, 0x50, 0x8c, 0x18, 0xb4, 0x37, + 0x75, 0x23, 0x99, 0x0d, 0xbc, 0x4c, 0x20, 0x8b, 0x10, 0x99, 0x99, 0x24, + 0x60, 0x82, 0x04, 0x94, 0x95, 0xf6, 0x48, 0xb4, 0x2c, 0x23, 0x3d, 0xf6, + 0x5c, 0xb0, 0x67, 0x04, 0x4c, 0xcb, 0x32, 0x0a, 0x00, 0x2d, 0xc5, 0xb5, + 0x19, 0x99, 0xab, 0x23, 0x59, 0x8a, 0xe2, 0x42, 0x88, 0x17, 0x00, 0x54, + 0xe0, 0x42, 0xd5, 0x33, 0x52, 0x4b, 0x73, 0xc4, 0x08, 0x8d, 0xa0, 0x70, + 0xc0, 0xb8, 0xd5, 0xac, 0x40, 0x06, 0x22, 0xd9, 0x30, 0x0a, 0xc9, 0x62, + 0x51, 0x12, 0x1a, 0x22, 0x26, 0x34, 0x24, 0xe0, 0x20, 0x50, 0x52, 0x35, + 0xb8, 0x99, 0x6f, 0x30, 0x54, 0x21, 0x12, 0xb1, 0x2f, 0x2d, 0x22, 0x09, + 0x60, 0x78, 0x22, 0x88, 0x81, 0x1f, 0x6c, 0x55, 0xb3, 0x55, 0x2a, 0x82, + 0x12, 0x55, 0xda, 0x49, 0x80, 0xc8, 0xc0, 0x49, 0x50, 0x4f, 0x15, 0x9a, + 0x42, 0x7e, 0x12, 0x83, 0xe3, 0x0b, 0x4c, 0xf0, 0xd3, 0x24, 0x8e, 0x25, + 0x54, 0xae, 0xe9, 0x9e, 0xf3, 0xdf, 0x7c, 0xa8, 0xd8, 0x23, 0x1a, 0x59, + 0xab, 0x46, 0x34, 0xfe, 0x91, 0x14, 0x6f, 0x45, 0x56, 0x7c, 0x3d, 0x97, + 0x19, 0x98, 0x9f, 0xcf, 0x21, 0xc9, 0x52, 0x75, 0x5b, 0x90, 0xce, 0xdf, + 0xfb, 0x14, 0xac, 0x13, 0x29, 0x1f, 0x05, 0x67, 0x24, 0x56, 0xa7, 0xf4, + 0xe6, 0x2c, 0x50, 0x4c, 0x55, 0x8a, 0x65, 0x2f, 0xac, 0xf2, 0x00, 0xc9, + 0xf1, 0x87, 0x0d, 0x77, 0x7d, 0xfe, 0xdc, 0x50, 0x2f, 0x34, 0x6e, 0x12, + 0x3c, 0xce, 0xb6, 0x75, 0x71, 0x3c, 0x94, 0x61, 0x7c, 0xb4, 0x7c, 0x66, + 0xae, 0x2f, 0xc1, 0xc8, 0xd9, 0x2c, 0x96, 0x52, 0x5d, 0xdc, 0x7c, 0xf9, + 0x7c, 0x87, 0x14, 0x33, 0xf1, 0x31, 0x98, 0x5b, 0x25, 0x77, 0x3b, 0xc1, + 0x16, 0xd2, 0x24, 0x48, 0xc8, 0x3e, 0x12, 0x6a, 0x10, 0x9c, 0xd6, 0x7e, + 0xad, 0x40, 0x92, 0x25, 0x94, 0xb9, 0xcb, 0xd9, 0x53, 0x49, 0x85, 0xd0, + 0xf3, 0x2b, 0x40, 0x54, 0x86, 0x72, 0xdc, 0x08, 0x5f, 0xdc, 0xea, 0xf9, + 0x20, 0x19, 0x4b, 0x4b, 0x8a, 0x16, 0xc9, 0xf9, 0x5e, 0xe5, 0x40, 0x38, + 0x0a, 0x1f, 0x4d, 0xbf, 0x58, 0xcc, 0xc3, 0x69, 0x27, 0x88, 0x6e, 0x22, + 0x44, 0xd2, 0x85, 0xf9, 0x23, 0xe3, 0xe7, 0x19, 0xe4, 0x49, 0x21, 0x0d, + 0x05, 0xbd, 0xd4, 0x21, 0x55, 0x82, 0xb3, 0xe3, 0x8a, 0xc6, 0x12, 0x15, + 0x28, 0xcb, 0x8c, 0x47, 0xcc, 0xa9, 0x24, 0x34, 0xf2, 0xf8, 0x29, 0x50, + 0x81, 0x85, 0xcd, 0x4c, 0xaf, 0x9b, 0xd6, 0x58, 0xe3, 0x2b, 0x96, 0xe6, + 0xa6, 0x53, 0x4c, 0x10, 0xcc, 0xb2, 0x10, 0x4c, 0xd4, 0x1c, 0x5c, 0x04, + 0x0a, 0x9d, 0x00, 0x39, 0x1c, 0xaa, 0x08, 0x98, 0xc1, 0x3a, 0xe5, 0x80, + 0x96, 0x01, 0xe5, 0x81, 0x93, 0x4a, 0x1c, 0xf4, 0xc9, 0x87, 0xcd, 0x2f, + 0x66, 0x00, 0x3a, 0xf2, 0x00, 0xb4, 0x32, 0x18, 0xd4, 0x66, 0x25, 0x74, + 0x33, 0x28, 0x84, 0x5f, 0xf2, 0x8d, 0xd9, 0xe9, 0xcc, 0x10, 0x32, 0x7a, + 0x23, 0x30, 0x2d, 0x11, 0x25, 0x83, 0x0b, 0x10, 0x84, 0x90, 0xab, 0xe3, + 0x80, 0x54, 0x30, 0x8b, 0x22, 0x10, 0x18, 0xd0, 0xa0, 0x03, 0x30, 0x17, + 0x74, 0x78, 0x52, 0x49, 0x70, 0xd5, 0x18, 0x6e, 0x45, 0x91, 0x90, 0x18, + 0xc3, 0x8e, 0x4b, 0x0d, 0x4a, 0x62, 0x40, 0x14, 0x5d, 0xdc, 0x1c, 0x01, + 0x58, 0x18, 0xe0, 0x31, 0x96, 0x51, 0x01, 0xec, 0xa4, 0x02, 0x60, 0x6e, + 0xe9, 0x94, 0x87, 0x99, 0x99, 0x1b, 0x91, 0x29, 0x32, 0xac, 0x45, 0x3e, + 0x5a, 0xa2, 0xce, 0x32, 0x84, 0x0c, 0x91, 0x5b, 0x4a, 0xa6, 0x6c, 0x92, + 0x20, 0xd4, 0xc6, 0x17, 0xc2, 0x15, 0xd9, 0x43, 0x65, 0x60, 0x6f, 0x08, + 0xf9, 0x94, 0x25, 0xa9, 0x80, 0x04, 0xb8, 0x99, 0x9b, 0x40, 0x19, 0x80, + 0x1b, 0x83, 0xc5, 0x64, 0xab, 0x99, 0x1c, 0x29, 0xa6, 0xc0, 0x8b, 0x28, + 0x85, 0x1c, 0x40, 0x37, 0xc0, 0x10, 0x30, 0xb8, 0x0b, 0x12, 0x0a, 0xa9, + 0x31, 0x00, 0xc9, 0x75, 0x6c, 0x50, 0xf2, 0x41, 0x2c, 0xb8, 0x47, 0x2a, + 0x71, 0x8d, 0xc1, 0x92, 0xb3, 0x2a, 0x48, 0xe0, 0x0c, 0xc2, 0x19, 0x48, + 0x5c, 0x9a, 0x8a, 0x32, 0x60, 0x23, 0x28, 0xe2, 0x00, 0x08, 0x88, 0xd2, + 0x41, 0x82, 0x64, 0x98, 0x56, 0x64, 0x52, 0x12, 0xda, 0xae, 0x13, 0x50, + 0x5b, 0x9d, 0x7b, 0xe8, 0xd3, 0x82, 0x5c, 0x91, 0xc2, 0x48, 0x11, 0xb6, + 0x52, 0x98, 0x84, 0x80, 0x21, 0x88, 0x61, 0x88, 0x59, 0xdb, 0x0b, 0x73, + 0x39, 0xa1, 0x50, 0xd8, 0x9b, 0xbc, 0x78, 0x4c, 0x70, 0x40, 0x51, 0x50, + 0xbb, 0xc1, 0x51, 0xe0, 0xf3, 0x7d, 0x46, 0xb8, 0xe0, 0x8c, 0x92, 0xd4, + 0xca, 0x13, 0xee, 0xc3, 0x3b, 0x30, 0x62, 0x39, 0x31, 0x6c, 0x54, 0x59, + 0x60, 0x13, 0x69, 0x73, 0x97, 0xc3, 0x18, 0xe0, 0x21, 0x7d, 0x91, 0xac, + 0x1a, 0xa1, 0x1f, 0xd3, 0x3b, 0x4e, 0x2c, 0x8b, 0xbd, 0x0b, 0x2c, 0xde, + 0x27, 0x3e, 0x33, 0xbe, 0x3c, 0x8c, 0xd6, 0x47, 0x69, 0xdc, 0x3a, 0xac, + 0xb1, 0xf7, 0x31, 0x41, 0x22, 0x64, 0x64, 0x23, 0x2a, 0x7c, 0x7a, 0xcf, + 0x7b, 0xe3, 0xb9, 0x4c, 0xcd, 0x5c, 0x4c, 0x2c, 0xc1, 0x55, 0x1e, 0xaf, + 0xd4, 0xc0, 0x90, 0xc7, 0xd2, 0x98, 0xde, 0x34, 0x38, 0x8f, 0x39, 0xe0, + 0x46, 0x19, 0xa2, 0xd8, 0xbf, 0xd3, 0x1f, 0xbc, 0x06, 0x21, 0xe9, 0x9a, + 0x8b, 0x68, 0xd5, 0x31, 0xf3, 0xef, 0xa0, 0xc3, 0x70, 0xe0, 0x61, 0x17, + 0xe6, 0xc8, 0x16, 0xcd, 0x5d, 0xb2, 0xe7, 0x93, 0x21, 0x3a, 0x04, 0xad, + 0x6a, 0x10, 0x64, 0xcc, 0x4b, 0x3a, 0xed, 0x16, 0x43, 0x08, 0x88, 0x86, + 0xc6, 0x7c, 0x8c, 0xd7, 0xb9, 0xd7, 0x10, 0x83, 0x9a, 0x30, 0xc3, 0x0d, + 0xc4, 0xdc, 0x4a, 0x5d, 0x9a, 0xb0, 0x86, 0xcc, 0x1a, 0xd1, 0x31, 0x98, + 0x10, 0x30, 0x12, 0x63, 0x3a, 0xe0, 0xc5, 0x08, 0x26, 0x74, 0x21, 0x86, + 0xf5, 0x33, 0x26, 0xe6, 0x36, 0x8c, 0x4c, 0x40, 0x16, 0x49, 0xb5, 0x26, + 0x2a, 0xc2, 0xdf, 0x32, 0x55, 0x0f, 0x1c, 0x01, 0x64, 0x25, 0xc4, 0x2c, + 0xc0, 0xfd, 0x4d, 0x44, 0xf7, 0xd3, 0x14, 0x43, 0x90, 0x4b, 0x52, 0xa5, + 0x74, 0xc5, 0xfa, 0x51, 0xd0, 0x12, 0xcc, 0x20, 0xb9, 0x6c, 0x3a, 0x87, + 0xdc, 0xd2, 0xd4, 0x12, 0x54, 0xaa, 0x04, 0x82, 0xc2, 0xd8, 0x40, 0x2b, + 0x3b, 0x61, 0xa1, 0x63, 0x0c, 0x51, 0x33, 0x22, 0xc4, 0x60, 0x84, 0x04, + 0xfb, 0x89, 0xc9, 0x2c, 0x95, 0x30, 0xb3, 0x5c, 0x67, 0x52, 0x6a, 0x25, + 0x38, 0x37, 0x07, 0x51, 0x23, 0x2a, 0x4b, 0xd4, 0x71, 0xa5, 0x32, 0xa0, + 0x45, 0x35, 0xa2, 0xe0, 0x87, 0x40, 0x1f, 0x99, 0x25, 0x24, 0x84, 0xb2, + 0xd0, 0x14, 0x5a, 0x02, 0xa7, 0xfc, 0x8e, 0x76, 0x12, 0x2c, 0x2e, 0x29, + 0x43, 0x11, 0xd2, 0xe9, 0x1d, 0x43, 0x80, 0xb7, 0x82, 0x0c, 0x0d, 0x59, + 0xa8, 0x4e, 0x26, 0xd8, 0x26, 0xb8, 0xe7, 0x09, 0x90, 0x20, 0x9b, 0x00, + 0xa8, 0x06, 0xf1, 0xec, 0x63, 0x80, 0x19, 0x10, 0x17, 0x93, 0xa9, 0x20, + 0x9b, 0xed, 0x01, 0x5a, 0x89, 0xe2, 0x42, 0x32, 0x02, 0xa6, 0x24, 0x88, + 0x82, 0x05, 0x3a, 0x3b, 0x81, 0x82, 0x44, 0x33, 0x04, 0x45, 0x25, 0x19, + 0x4c, 0x0c, 0x40, 0xc3, 0x6c, 0x09, 0x1d, 0xcf, 0x13, 0x63, 0x24, 0x81, + 0x04, 0x5a, 0x65, 0x99, 0x30, 0x84, 0xc8, 0x43, 0xdf, 0x25, 0x84, 0x51, + 0x95, 0x98, 0x31, 0x2c, 0xa5, 0x33, 0xf2, 0x66, 0x77, 0xc9, 0x2a, 0x30, + 0x1d, 0x23, 0x6d, 0x59, 0x58, 0x63, 0xb9, 0xc5, 0x22, 0x28, 0x4c, 0xda, + 0x90, 0x4b, 0x86, 0x14, 0x52, 0x46, 0x26, 0x0c, 0x66, 0x55, 0x58, 0x30, + 0x54, 0xa9, 0x21, 0x0a, 0xce, 0x0d, 0x08, 0x2a, 0x74, 0x71, 0x19, 0x55, + 0xda, 0x6c, 0xa0, 0x32, 0xf6, 0x42, 0x97, 0xba, 0x22, 0x60, 0x44, 0x26, + 0xa9, 0xa6, 0x27, 0xc3, 0x42, 0x88, 0x80, 0xb0, 0x13, 0x18, 0x5e, 0x29, + 0x25, 0x77, 0x62, 0x62, 0x82, 0x22, 0xb0, 0xaf, 0x91, 0x48, 0xc7, 0x21, + 0x31, 0x65, 0xe5, 0xc9, 0x0e, 0x8c, 0x04, 0xd9, 0x95, 0x9d, 0x23, 0x28, + 0x02, 0x46, 0x01, 0x66, 0x97, 0x0a, 0x77, 0x29, 0xd2, 0x9e, 0xf8, 0x44, + 0x43, 0x2c, 0xc2, 0x54, 0x07, 0xb5, 0xb3, 0x84, 0x08, 0xb2, 0x50, 0xe4, + 0x09, 0x08, 0xd0, 0x84, 0xe6, 0x59, 0x93, 0x05, 0xda, 0xae, 0x68, 0x33, + 0xc6, 0x99, 0x85, 0x42, 0x41, 0x30, 0xe4, 0x3a, 0xdc, 0x3d, 0x40, 0x4e, + 0x39, 0x79, 0x31, 0x21, 0x92, 0x71, 0x8f, 0x1e, 0xa7, 0x3f, 0x95, 0x32, + 0x13, 0x64, 0xac, 0x6e, 0x65, 0x24, 0xc4, 0x9d, 0x4f, 0x9e, 0xf9, 0x14, + 0x8d, 0x8c, 0xfc, 0x79, 0x2e, 0x6b, 0x35, 0x3a, 0x46, 0xb9, 0x34, 0x22, + 0xa4, 0xeb, 0x50, 0xc6, 0x6a, 0x7e, 0xb5, 0xbe, 0x4e, 0x12, 0xcb, 0x42, + 0xa4, 0xfd, 0x44, 0x95, 0x8f, 0x77, 0x1c, 0xc4, 0x31, 0x26, 0x9c, 0xee, + 0x49, 0xb9, 0x31, 0xea, 0x72, 0xc7, 0x16, 0x81, 0xc6, 0x22, 0x62, 0x22, + 0xf3, 0xfa, 0xec, 0x63, 0x93, 0x83, 0xc4, 0x04, 0xea, 0x89, 0x96, 0xe2, + 0x27, 0x5d, 0xc9, 0xc7, 0x21, 0x5a, 0x4c, 0x04, 0xba, 0xb8, 0x1c, 0xde, + 0x8f, 0x11, 0x7c, 0x75, 0x21, 0xa8, 0xfc, 0xe6, 0x14, 0xbd, 0x44, 0xfa, + 0xcc, 0x27, 0x24, 0x21, 0x7c, 0x43, 0x8c, 0x7b, 0x94, 0xfc, 0xc1, 0x07, + 0x5c, 0x80, 0x48, 0x61, 0x90, 0x64, 0x89, 0x89, 0x9a, 0x77, 0xec, 0xfb, + 0x92, 0x01, 0x99, 0x88, 0x25, 0x35, 0x78, 0x86, 0x0d, 0x5b, 0x1e, 0xdd, + 0x15, 0x84, 0x84, 0x6a, 0xb2, 0x65, 0x55, 0xe8, 0x0c, 0x43, 0x81, 0x32, + 0xf1, 0x02, 0x6d, 0x31, 0x48, 0x98, 0x58, 0xa6, 0x2a, 0x06, 0x0a, 0x9a, + 0x2c, 0xe1, 0xd5, 0xc5, 0x91, 0x0c, 0xe8, 0xe9, 0x89, 0x8d, 0x07, 0x79, + 0xa9, 0x74, 0x55, 0x98, 0x96, 0x8c, 0xc9, 0x2c, 0x08, 0x01, 0x8b, 0x5c, + 0xcd, 0x4d, 0x11, 0x00, 0xdc, 0x62, 0x57, 0x31, 0x24, 0x7d, 0xf7, 0x11, + 0xc5, 0x12, 0x4f, 0xa9, 0x76, 0xc6, 0x25, 0x2d, 0x77, 0xe1, 0xbc, 0x8a, + 0x4b, 0xcc, 0x27, 0xea, 0x8f, 0x58, 0x1a, 0xce, 0x2f, 0x8b, 0x52, 0xd0, + 0xc9, 0x15, 0xf4, 0x46, 0xe6, 0x73, 0x2a, 0x63, 0x8e, 0x82, 0x53, 0x80, + 0x84, 0xc4, 0xc9, 0x20, 0x4b, 0xdb, 0x6f, 0x76, 0x32, 0x70, 0xd8, 0x09, + 0x3e, 0x9c, 0x33, 0xe2, 0x27, 0xe5, 0x79, 0x15, 0x58, 0x58, 0x01, 0x41, + 0x0d, 0xa0, 0x5d, 0x49, 0x08, 0xae, 0x34, 0xac, 0x86, 0xc1, 0x5c, 0xe0, + 0xc1, 0x65, 0xad, 0x4d, 0xff, 0x00, 0x94, 0x00, 0x66, 0x68, 0xad, 0xe6, + 0xf7, 0x11, 0xbe, 0xf5, 0xcf, 0x81, 0x11, 0x6d, 0x50, 0xfa, 0x98, 0x92, + 0x31, 0x32, 0x1c, 0x94, 0xc0, 0x08, 0x91, 0x04, 0x50, 0x64, 0xf7, 0x6b, + 0x1a, 0x0a, 0xd4, 0x72, 0x5a, 0x36, 0x08, 0xdc, 0xb2, 0x24, 0xc9, 0x2c, + 0x01, 0xae, 0xae, 0x0c, 0xf1, 0x05, 0x08, 0x09, 0x4a, 0x0c, 0xb3, 0x2c, + 0x05, 0x1a, 0x1f, 0xc0, 0x9c, 0x16, 0x92, 0x30, 0xb4, 0x68, 0x4c, 0x29, + 0x58, 0x3c, 0x05, 0x82, 0xa5, 0xb1, 0x60, 0x02, 0xc4, 0x00, 0xa3, 0x22, + 0x16, 0xc2, 0xd1, 0xa9, 0x26, 0x80, 0x42, 0x44, 0x06, 0xd2, 0xb8, 0x48, + 0x4e, 0xa0, 0x06, 0xf2, 0xc0, 0xc8, 0xf5, 0xc4, 0x24, 0x48, 0x51, 0x42, + 0x04, 0xa7, 0x50, 0x92, 0xda, 0xae, 0x9c, 0x2c, 0xf9, 0x18, 0x19, 0xb4, + 0xad, 0x49, 0x61, 0x21, 0x8c, 0x54, 0x23, 0x53, 0x68, 0x67, 0x6a, 0x13, + 0x30, 0x16, 0x40, 0xa2, 0x08, 0x98, 0x9c, 0x84, 0x54, 0x1c, 0x16, 0x0b, + 0x8a, 0x25, 0x37, 0x2b, 0x0b, 0x38, 0xd0, 0x61, 0xfb, 0xb4, 0xa2, 0x0b, + 0x26, 0x66, 0xc6, 0x0a, 0xa6, 0x88, 0x27, 0xab, 0xf1, 0xc5, 0x85, 0xc9, + 0x62, 0xf7, 0x94, 0x24, 0x93, 0x98, 0x90, 0x2c, 0x68, 0x99, 0x38, 0x51, + 0x84, 0xb3, 0x08, 0xdc, 0x18, 0x50, 0xb1, 0x45, 0xa8, 0xf2, 0x70, 0x04, + 0x62, 0x14, 0x65, 0x92, 0xa3, 0x05, 0xc4, 0x42, 0xea, 0xde, 0x58, 0x52, + 0x26, 0x08, 0x32, 0xa5, 0x8a, 0x76, 0xea, 0xfa, 0x0e, 0x4f, 0x64, 0xca, + 0x74, 0xe4, 0x80, 0x12, 0x16, 0xa6, 0x5f, 0x34, 0xb1, 0x1c, 0xb8, 0x97, + 0x1b, 0x04, 0xb6, 0x61, 0x5d, 0x4c, 0x56, 0x2b, 0x3a, 0xe4, 0x11, 0x10, + 0xcc, 0x2b, 0x04, 0x19, 0x62, 0x42, 0x2b, 0x05, 0xcc, 0xe7, 0x6d, 0x4e, + 0x21, 0x96, 0x8c, 0x7e, 0xe4, 0x4e, 0xba, 0x8b, 0x67, 0x98, 0xa1, 0x88, + 0x87, 0xb4, 0xd9, 0x31, 0x84, 0xc7, 0xed, 0x5c, 0xa8, 0x56, 0x58, 0x1c, + 0xb3, 0xff, 0x00, 0x2a, 0xe6, 0x33, 0x37, 0x1c, 0x89, 0x87, 0x64, 0xb2, + 0x57, 0xa9, 0x82, 0x62, 0x58, 0x8e, 0xec, 0x9e, 0x41, 0xb2, 0x66, 0x66, + 0x92, 0x7f, 0x04, 0x1f, 0xd3, 0x90, 0xc2, 0xb0, 0xf9, 0xee, 0x25, 0x64, + 0x65, 0xbc, 0x7b, 0x63, 0x3c, 0x52, 0x0b, 0x4b, 0x3e, 0x03, 0xad, 0xe4, + 0x95, 0xea, 0x9e, 0x3a, 0x05, 0x71, 0x8c, 0xc7, 0xbb, 0x98, 0xbf, 0x9f, + 0x95, 0x5c, 0xd5, 0x84, 0x2d, 0xbf, 0x33, 0x87, 0x66, 0xaf, 0x07, 0x0d, + 0x07, 0xc1, 0x3a, 0x0c, 0x37, 0x3e, 0x31, 0x79, 0xef, 0x84, 0x51, 0x21, + 0x10, 0xd5, 0x5e, 0x71, 0x15, 0x35, 0x8e, 0xa8, 0xc9, 0xc1, 0x4c, 0x08, + 0x67, 0x1a, 0x4b, 0x2a, 0xaa, 0xbe, 0x1b, 0xb8, 0x17, 0x20, 0x00, 0x24, + 0x39, 0xcc, 0x30, 0x2c, 0xb7, 0xa2, 0x67, 0xd2, 0x66, 0x50, 0xd8, 0x14, + 0x62, 0x70, 0x3a, 0xd4, 0xfe, 0xb1, 0xd5, 0x62, 0x59, 0xdd, 0x8d, 0x77, + 0xe2, 0x49, 0x22, 0x22, 0x5f, 0x79, 0xe2, 0x6c, 0x84, 0x04, 0xe6, 0xc3, + 0xf7, 0x83, 0x13, 0xdd, 0x46, 0x78, 0x2e, 0x14, 0x05, 0x8c, 0xdf, 0x50, + 0x83, 0x1e, 0xd9, 0x92, 0x98, 0xd7, 0x10, 0x34, 0x2d, 0xb0, 0x62, 0x32, + 0x14, 0x97, 0x64, 0xea, 0xb7, 0xae, 0x14, 0xc9, 0x65, 0x17, 0x8b, 0xc6, + 0xca, 0x2d, 0xf3, 0x5d, 0x47, 0x24, 0x29, 0x1b, 0x54, 0x12, 0x2d, 0x94, + 0x33, 0xfa, 0x1f, 0x35, 0xc0, 0x04, 0x11, 0x93, 0x04, 0xba, 0x82, 0x5a, + 0x64, 0xa8, 0x90, 0x29, 0xcc, 0xf1, 0x92, 0x44, 0xbb, 0xdc, 0xf5, 0x75, + 0xe6, 0x77, 0x82, 0xa2, 0x39, 0x3b, 0xfc, 0x6c, 0xac, 0x7d, 0x3d, 0x4c, + 0x7b, 0x22, 0x67, 0x80, 0x94, 0xed, 0x8c, 0x0d, 0x32, 0x1a, 0x8a, 0x3d, + 0x79, 0xff, 0x00, 0x37, 0x8c, 0x32, 0x80, 0xd4, 0xb4, 0xde, 0x73, 0xd7, + 0xcd, 0x3c, 0x40, 0x43, 0x0c, 0x8d, 0x44, 0xf7, 0x9b, 0x31, 0x11, 0x73, + 0xd0, 0x0a, 0x41, 0x86, 0x86, 0x26, 0x02, 0x22, 0x66, 0xd8, 0x7a, 0x46, + 0x23, 0x08, 0x58, 0xec, 0x90, 0x84, 0xe6, 0xe5, 0x8c, 0x4d, 0x06, 0xc4, + 0x79, 0x59, 0x73, 0xd0, 0x64, 0x24, 0x09, 0x11, 0xda, 0x21, 0x2e, 0x21, + 0xb9, 0x87, 0x83, 0x0b, 0x62, 0x60, 0xd8, 0x61, 0x64, 0x31, 0x14, 0x0c, + 0xac, 0x89, 0x3a, 0x18, 0x20, 0x25, 0x51, 0x6c, 0x66, 0x25, 0x12, 0xba, + 0x22, 0x12, 0xdb, 0xad, 0x70, 0xa1, 0x2e, 0x59, 0x9f, 0x28, 0xad, 0x12, + 0x5f, 0x5e, 0xe2, 0x23, 0x88, 0x20, 0x89, 0x68, 0x99, 0x66, 0xaa, 0x8c, + 0x48, 0xf8, 0x64, 0x83, 0x08, 0xf3, 0x08, 0x92, 0x95, 0x04, 0x13, 0x2c, + 0xb9, 0x51, 0x18, 0x82, 0xf3, 0xdf, 0x15, 0x46, 0x92, 0x22, 0x96, 0x28, + 0xd1, 0x02, 0x4d, 0x18, 0x91, 0x89, 0xbf, 0x33, 0x94, 0xc8, 0xee, 0x0a, + 0x08, 0xa4, 0x90, 0xb7, 0x65, 0x8e, 0xc3, 0x8d, 0x09, 0x1c, 0xa0, 0x17, + 0x41, 0x9b, 0x3a, 0x59, 0x20, 0x81, 0x23, 0x32, 0x26, 0x14, 0x14, 0x65, + 0x00, 0xb6, 0xee, 0x1c, 0x23, 0x3b, 0x89, 0x0e, 0x64, 0xa0, 0x90, 0x5e, + 0x67, 0x69, 0xe6, 0x2b, 0xef, 0x8c, 0x19, 0x24, 0x88, 0xc8, 0xe3, 0x09, + 0x0f, 0x89, 0xd3, 0x3f, 0x85, 0x20, 0x08, 0x92, 0x8b, 0x0a, 0xa4, 0xa9, + 0x33, 0x35, 0x12, 0x01, 0x5e, 0x71, 0xcb, 0x89, 0x36, 0x40, 0xc3, 0x03, + 0x78, 0xc4, 0xac, 0x43, 0x7e, 0x79, 0x83, 0xb4, 0x16, 0xe4, 0x6e, 0xe1, + 0xf0, 0xb7, 0x45, 0xe7, 0x8c, 0xe3, 0xbe, 0xa1, 0x20, 0xa2, 0x4e, 0xef, + 0xc4, 0x74, 0xc7, 0x21, 0x28, 0xd9, 0x4d, 0x10, 0xc6, 0x13, 0xb1, 0xc9, + 0x9e, 0xec, 0xe0, 0x0a, 0xad, 0x27, 0xcc, 0x84, 0x29, 0x9e, 0xef, 0x3a, + 0xd5, 0xb4, 0x6d, 0x27, 0x86, 0xbc, 0xf7, 0x31, 0xb3, 0x05, 0xc8, 0x92, + 0xd9, 0x72, 0x9a, 0x7c, 0xa7, 0xf7, 0x7b, 0xc6, 0xf8, 0xb0, 0x26, 0x22, + 0x3b, 0x98, 0x03, 0xab, 0xeb, 0x75, 0x1e, 0xb9, 0x38, 0x13, 0x7d, 0x31, + 0xf7, 0x3e, 0x26, 0x6e, 0xe4, 0x65, 0x4e, 0x4e, 0x92, 0xd9, 0x9b, 0x9c, + 0x5c, 0x55, 0x6b, 0x50, 0xd7, 0x93, 0x84, 0x04, 0x0e, 0x9c, 0xb0, 0xcc, + 0x8b, 0x6f, 0x5d, 0xe7, 0xce, 0x63, 0xb4, 0xdc, 0x04, 0xa9, 0x18, 0xba, + 0x23, 0xc7, 0x59, 0xf5, 0xc8, 0x62, 0xe0, 0x9d, 0xc9, 0x69, 0xef, 0xee, + 0x7e, 0x32, 0x71, 0x11, 0x87, 0xe5, 0x8a, 0xaa, 0xb9, 0x90, 0xca, 0x0f, + 0xeb, 0x25, 0x92, 0x98, 0x83, 0x26, 0x3a, 0x0e, 0xb1, 0xa8, 0xf7, 0x53, + 0xc8, 0x95, 0x8a, 0x6f, 0x17, 0x31, 0x91, 0x9a, 0xfb, 0x3d, 0xec, 0x20, + 0x97, 0x66, 0x32, 0xfb, 0x86, 0x8f, 0x8f, 0xbd, 0x71, 0xb6, 0x77, 0x60, + 0x98, 0x88, 0x8c, 0x85, 0x93, 0x0a, 0x6b, 0x83, 0xd8, 0x56, 0x0d, 0xf8, + 0x96, 0x64, 0x65, 0x82, 0x2f, 0x61, 0x16, 0xc2, 0x93, 0xd4, 0xeb, 0x6c, + 0x03, 0x4f, 0x7d, 0xf9, 0xaa, 0x79, 0x82, 0x62, 0xe1, 0x7d, 0x35, 0xd9, + 0xb3, 0xa5, 0xb5, 0xe4, 0x50, 0x89, 0xb5, 0xcc, 0xc4, 0x66, 0xa6, 0x67, + 0xfb, 0x6a, 0xf2, 0x50, 0x43, 0xb1, 0x0f, 0x4c, 0xc8, 0xd1, 0xdb, 0x26, + 0x33, 0x71, 0x5c, 0x06, 0x81, 0x89, 0x96, 0x3a, 0x8d, 0x4a, 0xc4, 0x1d, + 0x4e, 0x26, 0x66, 0xa6, 0x01, 0xa4, 0xc2, 0xc4, 0x26, 0xca, 0xcf, 0x78, + 0x0c, 0x37, 0x97, 0x99, 0x2d, 0xcd, 0xca, 0xa1, 0xaa, 0x08, 0x94, 0x19, + 0x7a, 0x93, 0x55, 0xc5, 0x25, 0xd6, 0x92, 0xa6, 0x89, 0xce, 0xbf, 0xce, + 0x35, 0x53, 0x31, 0x33, 0x6a, 0x24, 0xfd, 0x21, 0xd4, 0xb4, 0xd4, 0x64, + 0x41, 0x60, 0x9a, 0xa6, 0xd4, 0x21, 0x29, 0x51, 0x89, 0x24, 0x1e, 0x1d, + 0xaa, 0x19, 0x02, 0xf1, 0x31, 0x18, 0x61, 0xce, 0x4a, 0xe9, 0x5b, 0x20, + 0x9a, 0x2c, 0x5b, 0x31, 0x29, 0x21, 0x05, 0x32, 0x14, 0xa9, 0x6a, 0x74, + 0x16, 0xb2, 0x27, 0xc9, 0x98, 0x9a, 0x81, 0x04, 0x19, 0x99, 0xcf, 0x2c, + 0x61, 0x8a, 0x06, 0x01, 0x89, 0x17, 0x14, 0xce, 0xda, 0x03, 0x18, 0x78, + 0x11, 0xb9, 0xee, 0xc4, 0x29, 0x40, 0x4f, 0x62, 0x61, 0x86, 0x7c, 0x71, + 0x7a, 0xb4, 0x13, 0x73, 0x98, 0x02, 0x08, 0xbc, 0xe3, 0xc2, 0x35, 0x65, + 0x9b, 0x10, 0x00, 0x84, 0xe7, 0x29, 0x74, 0xd5, 0xcc, 0xb4, 0xa5, 0xac, + 0xae, 0xc9, 0x04, 0x33, 0x2f, 0x9a, 0xa0, 0x16, 0xcd, 0x26, 0x9a, 0x46, + 0xd6, 0x1b, 0x92, 0x4a, 0x22, 0x84, 0x92, 0x2a, 0x6c, 0xb1, 0x03, 0x3c, + 0xac, 0x9b, 0x2b, 0x34, 0x60, 0x68, 0x45, 0x8a, 0x54, 0x12, 0x4b, 0x86, + 0x07, 0x8c, 0x88, 0x03, 0x2b, 0x2d, 0x53, 0x39, 0x9b, 0x99, 0x88, 0xac, + 0xe1, 0x12, 0x72, 0x75, 0xa0, 0x9b, 0x4b, 0x02, 0x15, 0x66, 0x1a, 0x12, + 0x7d, 0x82, 0x26, 0x50, 0x02, 0x06, 0x3c, 0xcc, 0x90, 0x25, 0x2d, 0xcc, + 0x54, 0x5a, 0x11, 0x2f, 0x04, 0x88, 0x99, 0x68, 0x4d, 0xe1, 0x87, 0x30, + 0x1d, 0x2c, 0x58, 0x99, 0x61, 0x52, 0xc9, 0x20, 0x95, 0x2f, 0x62, 0x45, + 0xc3, 0xad, 0x17, 0x31, 0x04, 0x9c, 0xba, 0xcc, 0xc8, 0xb5, 0x50, 0x18, + 0x91, 0x0a, 0xe8, 0x7a, 0xc4, 0xc9, 0xe4, 0x04, 0x25, 0xe0, 0x88, 0x09, + 0x9e, 0x89, 0x03, 0x49, 0x52, 0xbc, 0x81, 0x89, 0xb5, 0x99, 0x62, 0x2a, + 0x1c, 0x9e, 0x35, 0xf9, 0x78, 0xb3, 0x22, 0xac, 0x35, 0x23, 0xfc, 0xc1, + 0x6e, 0x92, 0x76, 0x4b, 0x20, 0xc2, 0x69, 0x81, 0x59, 0x00, 0x70, 0x99, + 0x89, 0x22, 0x31, 0x0f, 0x18, 0x86, 0x55, 0xa6, 0x61, 0x1f, 0x51, 0x2c, + 0x78, 0x95, 0xf1, 0xd7, 0x20, 0x0c, 0x4c, 0x80, 0x64, 0xc3, 0x7e, 0x98, + 0x82, 0x01, 0x9e, 0xfa, 0xe0, 0x0c, 0xa6, 0x0d, 0x5b, 0x27, 0xe9, 0xfb, + 0xce, 0xb9, 0x5c, 0xce, 0x6b, 0x3b, 0x8b, 0x64, 0x88, 0xb4, 0x77, 0x27, + 0x44, 0xf2, 0x50, 0xd7, 0x64, 0xef, 0xc4, 0xc7, 0xe2, 0xe4, 0x38, 0xf1, + 0xd1, 0x89, 0x9d, 0x17, 0x8d, 0x31, 0xfc, 0xce, 0x78, 0x46, 0x53, 0x32, + 0x2c, 0xce, 0x3e, 0x46, 0x1a, 0xae, 0x25, 0x43, 0x83, 0x37, 0x36, 0x8d, + 0x57, 0xe1, 0xd1, 0xee, 0x05, 0x6d, 0xd0, 0xd6, 0xab, 0x04, 0x51, 0x15, + 0x77, 0x8a, 0x9e, 0x53, 0x23, 0x06, 0x2c, 0x37, 0x9a, 0x77, 0xee, 0x1f, + 0x25, 0x70, 0x58, 0x40, 0x4b, 0xe6, 0x3d, 0xd3, 0x45, 0xb8, 0x33, 0xea, + 0xb8, 0x90, 0xab, 0x96, 0x55, 0x89, 0x95, 0xc4, 0xc7, 0xc4, 0x4b, 0x1e, + 0xf1, 0x04, 0x25, 0x90, 0x44, 0x31, 0x05, 0xc2, 0xc6, 0x1a, 0x76, 0xde, + 0x4e, 0x24, 0x6c, 0x46, 0x16, 0xe3, 0xd1, 0x37, 0x01, 0xe7, 0xe6, 0x39, + 0x51, 0x2a, 0x12, 0xac, 0x89, 0xfb, 0x01, 0x9c, 0xcb, 0x3d, 0xd1, 0x7c, + 0x12, 0x6c, 0x9c, 0xcd, 0xef, 0x77, 0x01, 0x76, 0x06, 0x33, 0xbe, 0x21, + 0x64, 0x55, 0x3d, 0x3d, 0xc4, 0x74, 0xbc, 0x43, 0x16, 0xf0, 0x07, 0x09, + 0x22, 0xa5, 0x0f, 0x38, 0x1f, 0xc4, 0x6f, 0x8a, 0x39, 0x3a, 0x22, 0x71, + 0x98, 0x8d, 0xe3, 0xf5, 0xf3, 0x56, 0x11, 0x35, 0x6c, 0xc4, 0xc7, 0x89, + 0x62, 0x7d, 0x4e, 0xd8, 0xe4, 0xb6, 0xa2, 0x72, 0xc6, 0x42, 0xe8, 0xa6, + 0x6a, 0xf3, 0x21, 0xc7, 0x5d, 0x58, 0x32, 0xfe, 0x28, 0xeb, 0xa9, 0x11, + 0x8e, 0xbf, 0xc9, 0x57, 0x3b, 0xfb, 0xf7, 0x9e, 0x60, 0xb8, 0xd2, 0x62, + 0x78, 0xe3, 0xa5, 0x31, 0x72, 0x1d, 0x26, 0x1d, 0x66, 0xc6, 0xef, 0x1c, + 0x04, 0x60, 0x08, 0x30, 0x40, 0x94, 0xd2, 0x1e, 0x4d, 0xac, 0xab, 0x0c, + 0x66, 0x96, 0xed, 0x19, 0x00, 0x3d, 0xe1, 0xbc, 0x7c, 0x35, 0x42, 0x79, + 0x49, 0x19, 0x21, 0x82, 0x42, 0x44, 0xc9, 0x74, 0x09, 0xba, 0x67, 0x8a, + 0x66, 0x56, 0xc8, 0x80, 0x5b, 0x48, 0x25, 0xca, 0x8f, 0x71, 0x04, 0xc3, + 0xc3, 0x13, 0x2b, 0x3a, 0x61, 0x99, 0x54, 0x20, 0x25, 0x11, 0xa5, 0x31, + 0x71, 0xc0, 0x6a, 0x64, 0xab, 0x36, 0x27, 0x69, 0x45, 0x2c, 0x31, 0xed, + 0xb2, 0x51, 0x24, 0x93, 0x0a, 0xca, 0x5b, 0x60, 0x61, 0x0c, 0x32, 0xdc, + 0xc4, 0x96, 0x71, 0x09, 0x53, 0x0a, 0x48, 0xa0, 0xb3, 0x15, 0x28, 0x0b, + 0x25, 0x28, 0x88, 0xb1, 0xc5, 0x92, 0x16, 0x59, 0x02, 0x56, 0x48, 0x34, + 0x8b, 0x16, 0x61, 0xc4, 0x11, 0xc5, 0x69, 0x1b, 0x52, 0x72, 0x41, 0x22, + 0x1b, 0x66, 0xc8, 0xa2, 0x29, 0x23, 0xcb, 0x02, 0x4e, 0xa3, 0x0d, 0x22, + 0x24, 0xef, 0x08, 0x90, 0xcc, 0xe9, 0xe4, 0xb7, 0x08, 0x89, 0x89, 0x22, + 0x5d, 0x51, 0x85, 0x46, 0x7b, 0x65, 0x54, 0x21, 0x03, 0x12, 0x66, 0x52, + 0x12, 0x30, 0x82, 0x09, 0x5a, 0xa2, 0xc9, 0x89, 0xc8, 0xc3, 0x3f, 0x0a, + 0x1e, 0xc9, 0x95, 0x4d, 0xe9, 0x3b, 0xdc, 0x48, 0x91, 0x65, 0x45, 0xa2, + 0x2a, 0x65, 0x9a, 0x6d, 0x21, 0x04, 0xa2, 0x9d, 0x72, 0x28, 0x87, 0x48, + 0xcc, 0xa3, 0x6c, 0xc4, 0xb7, 0x5e, 0x48, 0xf7, 0xcc, 0xe3, 0x52, 0xb0, + 0x50, 0xda, 0x33, 0x18, 0x2e, 0x24, 0xc6, 0xb3, 0xca, 0xde, 0x06, 0x06, + 0xeb, 0xb9, 0x18, 0x98, 0x8c, 0x4e, 0x6b, 0x36, 0xd9, 0x94, 0xcc, 0x33, + 0x05, 0x04, 0xcb, 0xdc, 0xfb, 0x1b, 0xee, 0x38, 0xd0, 0x04, 0x48, 0x82, + 0xed, 0xc3, 0x28, 0xb3, 0x49, 0xe6, 0xe2, 0x71, 0x4b, 0x29, 0x57, 0xc3, + 0x44, 0x07, 0x72, 0xd7, 0xcb, 0xd6, 0x30, 0x01, 0x30, 0x4e, 0x8d, 0x25, + 0x07, 0x61, 0x30, 0x84, 0x67, 0xb8, 0x79, 0x20, 0x25, 0x8b, 0xde, 0x8e, + 0xe7, 0xd5, 0xfa, 0xac, 0x72, 0x72, 0x09, 0x15, 0x3f, 0xd5, 0xb3, 0x6c, + 0xcd, 0x93, 0xef, 0x10, 0x30, 0xeb, 0x29, 0xf5, 0x18, 0xa5, 0x93, 0xe6, + 0x74, 0xe1, 0x73, 0x71, 0x6b, 0x10, 0xd5, 0xbf, 0xda, 0xc1, 0xa9, 0x94, + 0x25, 0x14, 0x88, 0x58, 0xf0, 0x67, 0x30, 0x41, 0xf3, 0x29, 0xae, 0x31, + 0x83, 0x50, 0x8c, 0xf4, 0xcb, 0x19, 0xf9, 0x1c, 0x9e, 0x39, 0x08, 0x8c, + 0x99, 0x33, 0x7f, 0x5d, 0x54, 0xfe, 0xb0, 0x27, 0x09, 0xcd, 0xcc, 0x46, + 0x49, 0x73, 0xe4, 0xd5, 0x5d, 0xc5, 0x47, 0x04, 0x61, 0x27, 0xcc, 0x31, + 0x6c, 0xd4, 0xde, 0x92, 0xbc, 0x71, 0xb6, 0x73, 0x9f, 0xfa, 0x68, 0xf7, + 0x82, 0x7e, 0x38, 0x48, 0x56, 0x75, 0x7a, 0x88, 0x6e, 0x27, 0x04, 0xce, + 0x99, 0xe1, 0x37, 0xa9, 0x2e, 0xef, 0xd4, 0x5c, 0xcc, 0x5c, 0x7c, 0x17, + 0xc9, 0x5a, 0x9a, 0xa7, 0x5b, 0xc0, 0x11, 0xbf, 0xdf, 0xb7, 0x82, 0xc9, + 0xed, 0xd7, 0xce, 0x7b, 0xcb, 0xe2, 0xfc, 0x2a, 0x4a, 0x5b, 0x1b, 0x16, + 0xa6, 0x96, 0x2a, 0x0b, 0x7b, 0xce, 0x2c, 0x46, 0x4c, 0x76, 0xd2, 0xf6, + 0x31, 0x04, 0xe6, 0x58, 0x88, 0xf3, 0x88, 0x6e, 0x3a, 0xb9, 0xae, 0xbd, + 0x9a, 0xcf, 0xa8, 0x0e, 0x67, 0x48, 0x1e, 0x0a, 0xc5, 0xb0, 0xde, 0x7a, + 0x6b, 0x5c, 0x59, 0xd1, 0x75, 0x38, 0x88, 0xaf, 0x5a, 0xc4, 0x5b, 0x81, + 0x95, 0x98, 0x92, 0x2c, 0x2b, 0x20, 0x79, 0x96, 0xae, 0xa1, 0xbc, 0xff, + 0x00, 0x9b, 0x3c, 0xbd, 0x95, 0x08, 0x63, 0xcb, 0xf7, 0x11, 0xae, 0x22, + 0x4c, 0xcc, 0x00, 0xac, 0xa4, 0x68, 0x09, 0x87, 0xd5, 0x82, 0xa0, 0x70, + 0x42, 0x46, 0x91, 0x16, 0x7a, 0x5c, 0xab, 0x18, 0x44, 0xd8, 0x46, 0xe3, + 0x96, 0x24, 0x00, 0x83, 0x4f, 0x41, 0x24, 0xac, 0x18, 0xa0, 0x98, 0x49, + 0xc8, 0x3c, 0x9f, 0x09, 0x65, 0x11, 0x55, 0x33, 0x57, 0x98, 0xbc, 0x38, + 0x75, 0xc7, 0x08, 0xa4, 0x0a, 0x45, 0x2c, 0x8c, 0x98, 0xac, 0x4f, 0xe9, + 0xc2, 0xc9, 0x6e, 0x51, 0x4a, 0x14, 0x6f, 0xbc, 0xa5, 0x74, 0xcc, 0x67, + 0x90, 0xd3, 0x00, 0x09, 0x9d, 0x22, 0x08, 0xa5, 0x25, 0x90, 0xcc, 0xd2, + 0xe4, 0x86, 0x4b, 0x6b, 0x06, 0x84, 0xe5, 0x73, 0x09, 0x94, 0x9b, 0x99, + 0xb3, 0x8d, 0xc1, 0x39, 0x65, 0x00, 0x9b, 0xad, 0x85, 0x85, 0x22, 0x0b, + 0x66, 0x46, 0x53, 0x94, 0x0b, 0x41, 0xac, 0x04, 0xc1, 0x33, 0x56, 0x66, + 0x12, 0xbf, 0x1c, 0x92, 0x18, 0x14, 0x8a, 0x23, 0x00, 0x69, 0x27, 0xb0, + 0x2c, 0x02, 0x0e, 0x29, 0x49, 0x96, 0x50, 0x84, 0x02, 0x4c, 0x0a, 0xf0, + 0x35, 0x1d, 0xcd, 0xcf, 0x1b, 0x4a, 0x90, 0x1e, 0x40, 0xb1, 0x44, 0xcd, + 0x4c, 0x66, 0x14, 0x18, 0x54, 0x2c, 0x81, 0x25, 0x81, 0x13, 0x4c, 0x0c, + 0x28, 0x18, 0x26, 0x26, 0xdb, 0xbd, 0x65, 0x90, 0xb9, 0x81, 0x58, 0x67, + 0xa4, 0xd2, 0x4f, 0x3e, 0x59, 0x8e, 0x60, 0x30, 0x91, 0x86, 0x00, 0xd2, + 0xdc, 0x3b, 0x20, 0x6a, 0x63, 0x1c, 0x38, 0xd6, 0x0c, 0x35, 0x76, 0x60, + 0x63, 0x31, 0x73, 0x0a, 0x77, 0xc4, 0x63, 0x3b, 0x5c, 0x90, 0xa2, 0x23, + 0x6c, 0xe0, 0x30, 0x9a, 0xbe, 0x33, 0x0a, 0x41, 0x6c, 0x8c, 0xba, 0xc2, + 0x66, 0x3a, 0x5f, 0x30, 0xbc, 0x70, 0x8a, 0x34, 0x1c, 0xbb, 0x60, 0xa5, + 0x4e, 0xfc, 0xc4, 0xca, 0xc6, 0xc0, 0xe1, 0xb7, 0xe0, 0x23, 0xb0, 0xb2, + 0x65, 0x4f, 0x0f, 0x2a, 0x23, 0x2c, 0xc4, 0x30, 0x27, 0x8d, 0xa1, 0xa7, + 0xbc, 0xd0, 0xf1, 0xd0, 0xfb, 0xad, 0x93, 0x68, 0xd6, 0xbf, 0x5c, 0x1c, + 0x11, 0x06, 0x09, 0x8b, 0xdd, 0x38, 0xea, 0xe7, 0xc6, 0x79, 0x89, 0xc2, + 0x71, 0x47, 0x77, 0xf7, 0x73, 0x3a, 0xc1, 0x1c, 0x64, 0x42, 0x20, 0x10, + 0xc4, 0xfc, 0x4b, 0xf3, 0x06, 0xa8, 0x99, 0x2a, 0x94, 0x88, 0x7c, 0xee, + 0xfe, 0xe1, 0xde, 0x9a, 0x66, 0xf8, 0xbb, 0x4c, 0x24, 0xca, 0x4e, 0x5c, + 0x4f, 0x55, 0x0d, 0x63, 0x21, 0x1c, 0x50, 0x53, 0x5b, 0x62, 0xe3, 0x3e, + 0xf3, 0x31, 0xae, 0x2b, 0x02, 0x90, 0xa4, 0x5a, 0x2b, 0x3e, 0x98, 0xb3, + 0x55, 0x76, 0x71, 0x18, 0x4a, 0x7a, 0x33, 0x0d, 0x2d, 0xcd, 0xb2, 0x8c, + 0xc6, 0xa7, 0x92, 0xc0, 0xe2, 0x99, 0xc4, 0x3e, 0x7f, 0x56, 0x71, 0x4d, + 0x63, 0x83, 0x37, 0x11, 0x38, 0xdf, 0x99, 0x82, 0x8f, 0xec, 0xe3, 0x93, + 0xb1, 0x4b, 0x19, 0x7a, 0xfd, 0x7e, 0x7d, 0xf0, 0x99, 0x99, 0x88, 0x58, + 0xbc, 0x41, 0x05, 0x06, 0x3a, 0x11, 0xaf, 0xc0, 0x4c, 0xe5, 0xf5, 0xeb, + 0x38, 0x84, 0xf9, 0xb6, 0x87, 0x8e, 0x62, 0x6a, 0x55, 0xf3, 0xe4, 0xc1, + 0xf8, 0xbd, 0x71, 0x86, 0x2b, 0x1f, 0x9c, 0xf8, 0xf3, 0xee, 0xa7, 0x84, + 0x13, 0x33, 0xb4, 0x88, 0xce, 0x8f, 0x38, 0xfe, 0x31, 0xcb, 0x9c, 0x55, + 0xe0, 0x5b, 0xa8, 0xbf, 0xd0, 0x77, 0xb6, 0x79, 0x09, 0x25, 0xaf, 0xde, + 0x71, 0x3f, 0xd0, 0x26, 0xcc, 0x72, 0x24, 0x64, 0x0d, 0x40, 0xa9, 0x39, + 0x4a, 0x3f, 0x05, 0x6a, 0x78, 0xa7, 0xfe, 0x9c, 0x1f, 0x2d, 0xd4, 0xe9, + 0xfa, 0xff, 0x00, 0x3d, 0x16, 0x11, 0x9c, 0x44, 0x7e, 0xb2, 0x87, 0xec, + 0xf4, 0xe4, 0x3a, 0xb4, 0xe6, 0xb7, 0xd1, 0xf7, 0x5e, 0xb8, 0xca, 0xa7, + 0x6c, 0x45, 0xa1, 0x81, 0x66, 0xa4, 0x83, 0xa2, 0x30, 0xbc, 0x2c, 0x04, + 0x49, 0x1c, 0x25, 0x79, 0x06, 0x60, 0x54, 0x18, 0xc3, 0x13, 0x6d, 0x84, + 0xec, 0x66, 0x8b, 0x52, 0x48, 0x92, 0x16, 0x20, 0x82, 0xc5, 0x98, 0x63, + 0x92, 0x25, 0x2a, 0x14, 0x3c, 0x25, 0x8b, 0x92, 0x91, 0x55, 0x10, 0xe4, + 0x88, 0x46, 0x18, 0x62, 0xa4, 0x61, 0x84, 0x87, 0x24, 0xc5, 0xae, 0x61, + 0xd9, 0x44, 0xb4, 0x88, 0x40, 0x8a, 0x40, 0x43, 0xec, 0xa1, 0x13, 0xa4, + 0x55, 0x88, 0xe2, 0x94, 0x81, 0x6a, 0x41, 0x2d, 0x44, 0x8b, 0xc1, 0x21, + 0x13, 0x71, 0x2b, 0xc5, 0xb0, 0x50, 0x80, 0x93, 0x05, 0xa4, 0xa2, 0x4b, + 0x4d, 0xcc, 0xb2, 0x11, 0x80, 0x8c, 0x26, 0xa8, 0x32, 0x95, 0x19, 0x94, + 0xe6, 0xe6, 0x70, 0x04, 0x67, 0x91, 0x61, 0x4b, 0x6d, 0x84, 0x9e, 0xc6, + 0x11, 0x7a, 0xf5, 0x47, 0xbd, 0x00, 0x4a, 0x34, 0x8c, 0x37, 0x1c, 0x4a, + 0xc2, 0xba, 0x85, 0xe2, 0xf2, 0xcd, 0x00, 0x62, 0x18, 0x46, 0x82, 0x64, + 0x41, 0x6d, 0xf0, 0x81, 0x25, 0xf3, 0x6b, 0x8d, 0x52, 0x89, 0xa0, 0x65, + 0xb7, 0x5c, 0x4a, 0x16, 0x53, 0x39, 0x36, 0x96, 0xcb, 0x24, 0x45, 0x52, + 0x4a, 0x4d, 0x72, 0xc9, 0x23, 0x7a, 0xc2, 0x60, 0x08, 0xe0, 0xa6, 0x55, + 0x5b, 0x9b, 0x60, 0xca, 0xc5, 0x58, 0xb2, 0x67, 0xd3, 0x2e, 0xfb, 0x32, + 0xad, 0x2b, 0x16, 0x9b, 0x28, 0x22, 0x75, 0x99, 0x97, 0xe6, 0x93, 0x8a, + 0x4a, 0xe4, 0x60, 0x86, 0xbb, 0x0f, 0xdf, 0x17, 0x71, 0x9e, 0x00, 0x15, + 0xac, 0xc1, 0x4c, 0x9d, 0x8b, 0x11, 0x51, 0xfb, 0xa0, 0xb9, 0x30, 0x22, + 0xc2, 0x39, 0x63, 0x3e, 0x1e, 0x20, 0x63, 0x0e, 0x78, 0x38, 0x31, 0x2d, + 0x6e, 0x46, 0x58, 0x9a, 0x4d, 0x33, 0xf4, 0x54, 0x54, 0x19, 0x01, 0xd8, + 0x9a, 0x3a, 0xc6, 0xb4, 0x4f, 0x26, 0x50, 0x76, 0xab, 0xe7, 0x07, 0xc7, + 0xe6, 0x79, 0x17, 0x81, 0xa9, 0x62, 0x3e, 0x75, 0x30, 0x9b, 0xef, 0x90, + 0x54, 0xc2, 0x65, 0xe0, 0x23, 0xa6, 0x55, 0xd4, 0x9f, 0xbb, 0x0c, 0x00, + 0x7b, 0x3e, 0xe1, 0xcc, 0x6a, 0x66, 0xee, 0xb3, 0xc2, 0x0d, 0x2e, 0xda, + 0xb3, 0x5a, 0xfd, 0xef, 0x15, 0xcd, 0x2f, 0x8c, 0xbd, 0xee, 0x3c, 0x39, + 0xac, 0xf7, 0x6f, 0x20, 0x64, 0x11, 0xb7, 0x56, 0x9a, 0x6e, 0xf5, 0x1e, + 0x23, 0x81, 0x99, 0x40, 0x97, 0x77, 0xc2, 0xa8, 0xaf, 0x1a, 0x78, 0x49, + 0x28, 0x88, 0xeb, 0xaf, 0x4b, 0xfe, 0xf8, 0xe7, 0xe8, 0xc2, 0xef, 0x05, + 0x75, 0xcc, 0xcd, 0xe3, 0x9f, 0xd9, 0xe4, 0xcf, 0x39, 0xac, 0xfe, 0xd1, + 0x01, 0x97, 0x5a, 0xfc, 0x59, 0xc2, 0x10, 0xac, 0x57, 0xf6, 0xf8, 0xe7, + 0x5e, 0x58, 0x16, 0x46, 0xf7, 0x90, 0x4c, 0x49, 0x15, 0x13, 0x92, 0x2e, + 0x5b, 0x39, 0x3a, 0x72, 0xe4, 0x31, 0xdc, 0x55, 0x6b, 0x1c, 0x59, 0x51, + 0x89, 0x86, 0xa9, 0xf6, 0xce, 0x3e, 0x2f, 0xd7, 0x05, 0x48, 0x02, 0x72, + 0xfa, 0xc1, 0x0c, 0x6b, 0xc4, 0x4b, 0xc9, 0x22, 0xcf, 0x10, 0xc1, 0x2d, + 0x58, 0x39, 0x3e, 0x78, 0xc4, 0x02, 0xf5, 0xbe, 0x28, 0xf6, 0xf6, 0xc0, + 0xa7, 0x1c, 0xb5, 0xbb, 0x26, 0x7f, 0x3e, 0x9b, 0xfa, 0xff, 0x00, 0x36, + 0x9d, 0x3f, 0x7b, 0x89, 0x9a, 0x82, 0xa2, 0x7c, 0x9d, 0x71, 0x09, 0xad, + 0x80, 0xbb, 0x9c, 0x19, 0x04, 0x85, 0x57, 0x0a, 0xd8, 0x4f, 0x23, 0xa9, + 0x01, 0x91, 0x82, 0xcc, 0x24, 0x82, 0xb1, 0x2e, 0x48, 0x84, 0x9e, 0x4b, + 0x09, 0x0a, 0xb2, 0x6f, 0x35, 0x13, 0xd0, 0xcd, 0x24, 0xd2, 0xa6, 0x38, + 0xe4, 0x0d, 0xaa, 0xb9, 0x07, 0x4f, 0xca, 0xe1, 0x68, 0xb3, 0xcb, 0x24, + 0x28, 0x29, 0x80, 0x49, 0x26, 0x58, 0x4a, 0x88, 0x3d, 0x12, 0xc8, 0x5b, + 0xc4, 0x28, 0x49, 0x15, 0x92, 0x08, 0x43, 0x45, 0x4a, 0xa4, 0x04, 0xc8, + 0xb3, 0x40, 0x5f, 0xfb, 0xcb, 0x40, 0x08, 0x12, 0xd3, 0x7d, 0x5e, 0xe0, + 0x7b, 0xdc, 0xe4, 0xcf, 0x96, 0x26, 0x3d, 0xb1, 0x99, 0x72, 0xcb, 0x50, + 0x90, 0x84, 0xb8, 0x39, 0x4b, 0x22, 0xca, 0x8a, 0x44, 0x0d, 0xc6, 0x0b, + 0xb8, 0x81, 0xa6, 0x23, 0x8d, 0x34, 0xad, 0xdd, 0xd3, 0x89, 0xc4, 0x04, + 0x6c, 0x6b, 0xf4, 0xe2, 0xc8, 0x12, 0xc3, 0x28, 0xcb, 0x06, 0xf5, 0xd3, + 0x77, 0x8b, 0xba, 0xe4, 0xde, 0x31, 0x9b, 0x24, 0x96, 0x6e, 0x40, 0x81, + 0xae, 0xf7, 0x21, 0x2c, 0x8e, 0x6e, 0x62, 0x31, 0x17, 0xfd, 0x4a, 0x20, + 0xdb, 0xa3, 0xfc, 0xdc, 0x55, 0x3d, 0x39, 0xfd, 0xe0, 0x25, 0xfb, 0xef, + 0x84, 0x2d, 0x01, 0x79, 0x21, 0x29, 0x0d, 0x4c, 0xdc, 0xa5, 0x85, 0x11, + 0x41, 0x1c, 0x04, 0x05, 0x9c, 0x88, 0x0b, 0x22, 0x58, 0x58, 0x54, 0x11, + 0x86, 0x56, 0xa1, 0x95, 0x82, 0x52, 0x29, 0xb0, 0xde, 0x45, 0xa8, 0x5b, + 0xf2, 0xc1, 0x7c, 0x94, 0x25, 0x50, 0x82, 0x05, 0x46, 0xc9, 0x91, 0x25, + 0x67, 0xb1, 0x98, 0xd3, 0x50, 0x61, 0x00, 0x80, 0xb7, 0x30, 0x93, 0x4e, + 0x10, 0x12, 0xe5, 0xb2, 0x26, 0x86, 0x00, 0x00, 0x4b, 0x36, 0x33, 0x51, + 0x5e, 0xf6, 0x11, 0x74, 0x42, 0xff, 0x00, 0xbf, 0x38, 0xcc, 0xf9, 0xf3, + 0x9b, 0xe9, 0x9d, 0xa4, 0x4a, 0x93, 0x68, 0x54, 0x06, 0x7d, 0xe2, 0xd9, + 0x9a, 0x34, 0x43, 0x7d, 0x21, 0xbe, 0x22, 0xaa, 0xda, 0x78, 0x24, 0xae, + 0x8c, 0x79, 0xfc, 0xf2, 0x26, 0x01, 0x0c, 0x67, 0xfb, 0x73, 0xf7, 0x75, + 0x87, 0x82, 0x12, 0x45, 0x64, 0x9c, 0x63, 0xe6, 0xa4, 0x71, 0x37, 0x89, + 0xe2, 0xee, 0x6c, 0x48, 0x98, 0x44, 0xf9, 0xf9, 0xd4, 0xeb, 0x8c, 0x87, + 0x73, 0x45, 0xe3, 0xba, 0x6f, 0x26, 0xa7, 0x73, 0x7f, 0xe6, 0x44, 0xba, + 0x46, 0x1b, 0x88, 0x0a, 0xf7, 0x8d, 0xba, 0x88, 0x5e, 0x4c, 0x13, 0x41, + 0x94, 0xd3, 0x98, 0xa2, 0x88, 0x6e, 0xf9, 0x31, 0x20, 0x2c, 0x15, 0xa8, + 0x99, 0x86, 0x54, 0xb8, 0xc2, 0xc4, 0x86, 0x45, 0xe1, 0x12, 0xc0, 0xa1, + 0x1b, 0x64, 0xa2, 0xe7, 0x1a, 0x9b, 0xbc, 0x02, 0x4f, 0x26, 0xb6, 0xc1, + 0x98, 0xb8, 0x87, 0xbe, 0x99, 0x5c, 0x85, 0x92, 0x48, 0xe3, 0x06, 0x04, + 0x00, 0x23, 0x62, 0x8c, 0xad, 0x19, 0x93, 0x6d, 0x54, 0x04, 0x03, 0x28, + 0x62, 0x44, 0x95, 0x43, 0x28, 0x83, 0xb3, 0x55, 0x50, 0xcb, 0xfe, 0xfa, + 0x42, 0x89, 0x84, 0x5e, 0x07, 0x6c, 0x98, 0x8c, 0x5b, 0x36, 0x33, 0x1c, + 0x9d, 0xac, 0xe5, 0x18, 0x7d, 0x96, 0x1a, 0x88, 0x9a, 0xaf, 0x1c, 0x18, + 0xce, 0xb1, 0x52, 0xfb, 0xfe, 0x26, 0x52, 0x68, 0xea, 0x93, 0xda, 0x11, + 0x9a, 0x9d, 0xcd, 0xbf, 0x66, 0x6a, 0x35, 0xc7, 0xcc, 0x4a, 0x78, 0x20, + 0x0a, 0xa3, 0xba, 0xc9, 0xfa, 0xc8, 0xd1, 0x46, 0x06, 0xe9, 0x24, 0x26, + 0x89, 0x0a, 0xde, 0x7b, 0x18, 0x8a, 0x3d, 0xce, 0x3d, 0x16, 0x9d, 0x12, + 0xa2, 0x07, 0x4f, 0xf9, 0xc8, 0x49, 0x7d, 0x80, 0x20, 0x9f, 0x76, 0xdf, + 0x83, 0xc7, 0x2e, 0x18, 0x63, 0xb6, 0x98, 0x95, 0xf2, 0xb2, 0xd7, 0xe6, + 0xce, 0x18, 0x23, 0x2b, 0x17, 0x60, 0x95, 0x11, 0xf6, 0x26, 0x55, 0x99, + 0xa8, 0x46, 0x51, 0x0c, 0x85, 0x12, 0xa2, 0x0d, 0x95, 0x60, 0xc8, 0x97, + 0x51, 0x21, 0xcc, 0x09, 0x2c, 0xc0, 0x89, 0xa5, 0x8b, 0x4a, 0x3b, 0x58, + 0x2a, 0xc9, 0x98, 0xe2, 0x86, 0x1b, 0x41, 0x35, 0x1b, 0x19, 0x80, 0xb6, + 0x00, 0x78, 0xc3, 0xc9, 0x52, 0x86, 0x66, 0x00, 0xd0, 0xe7, 0xd0, 0xa8, + 0xc4, 0xc8, 0xcf, 0xfb, 0xec, 0xdc, 0x27, 0x64, 0x74, 0xbd, 0xe2, 0x88, + 0x9d, 0xeb, 0x30, 0xf1, 0x00, 0x4c, 0xb6, 0x01, 0x83, 0x53, 0xf8, 0xef, + 0x1a, 0x38, 0x35, 0x21, 0x33, 0x8b, 0xc1, 0xe2, 0xce, 0xbf, 0x49, 0x26, + 0x5e, 0x39, 0x8b, 0x64, 0xbe, 0xaf, 0xf7, 0xf5, 0xfa, 0x73, 0x15, 0x2b, + 0xa9, 0xb6, 0x77, 0x7f, 0xbc, 0xd0, 0xf2, 0x22, 0xb0, 0x18, 0xdd, 0x90, + 0xe8, 0xb3, 0x98, 0xcc, 0xed, 0x9f, 0x3c, 0x55, 0x44, 0x32, 0xfe, 0x1c, + 0xf7, 0x8f, 0xe9, 0xfe, 0x6a, 0x28, 0xcd, 0xd3, 0x18, 0x6f, 0x75, 0x33, + 0xb9, 0xc4, 0x72, 0xf7, 0xa0, 0xd8, 0x26, 0x94, 0x8b, 0x37, 0x29, 0x0b, + 0x1f, 0x14, 0xa3, 0x69, 0x4a, 0x09, 0x9b, 0x0c, 0x46, 0x08, 0xa9, 0x09, + 0x80, 0x9f, 0x3c, 0x81, 0x89, 0x53, 0x25, 0xa8, 0xb5, 0x26, 0x5b, 0xcc, + 0x05, 0x7e, 0xe2, 0x24, 0x81, 0xc1, 0x03, 0x0c, 0x24, 0x42, 0xb1, 0x40, + 0x00, 0x13, 0xb8, 0x93, 0xc4, 0x33, 0x0b, 0x2f, 0x94, 0x98, 0x8c, 0x52, + 0x2e, 0x58, 0x6a, 0x5b, 0x80, 0xc8, 0xac, 0xa0, 0x41, 0x84, 0x11, 0xf2, + 0x64, 0x27, 0x67, 0x87, 0xfb, 0xc2, 0xb6, 0xe2, 0x28, 0x4c, 0xef, 0xba, + 0x99, 0xb9, 0x75, 0xd4, 0x37, 0x01, 0x1e, 0xd7, 0x12, 0x44, 0xf9, 0xcc, + 0x4c, 0xe5, 0x37, 0xcb, 0x26, 0x0b, 0x99, 0x04, 0x80, 0x1c, 0x93, 0xfa, + 0xea, 0x71, 0x3c, 0x21, 0x94, 0x4a, 0xf3, 0x8f, 0x5b, 0xb8, 0xf3, 0x7c, + 0xf3, 0x74, 0x38, 0xdc, 0xeb, 0x1d, 0x6b, 0xf3, 0x68, 0xb9, 0x9e, 0xfb, + 0x12, 0x50, 0xf1, 0x78, 0x0d, 0x7b, 0x6c, 0x8e, 0x48, 0x51, 0xb7, 0xc5, + 0x57, 0xe3, 0x24, 0x1b, 0x87, 0xaa, 0xff, 0x00, 0x2a, 0x24, 0xd7, 0x7e, + 0xcd, 0x3e, 0x67, 0xad, 0x1e, 0x39, 0x24, 0x4c, 0xcc, 0x4d, 0x7c, 0xf2, + 0x6a, 0xc9, 0xaa, 0x9d, 0x70, 0x4c, 0x61, 0x4e, 0x82, 0xc1, 0x18, 0x44, + 0x66, 0x7e, 0x72, 0x57, 0x16, 0x34, 0x83, 0x52, 0x86, 0x22, 0xb5, 0x53, + 0xf0, 0x4c, 0x59, 0x32, 0x21, 0xf7, 0x5d, 0xc8, 0x96, 0xa2, 0xf7, 0x83, + 0x5a, 0xf0, 0xf0, 0x81, 0xa6, 0x36, 0x28, 0x18, 0x53, 0xa5, 0x10, 0x94, + 0x94, 0x80, 0xbc, 0x53, 0x63, 0x1a, 0x94, 0xa8, 0x30, 0x9e, 0xd9, 0x86, + 0x32, 0x48, 0x84, 0xff, 0x00, 0x79, 0x42, 0xa6, 0xd3, 0xb8, 0x7c, 0x66, + 0x28, 0xef, 0xeb, 0x42, 0x52, 0x51, 0x5a, 0xf2, 0x51, 0x11, 0x6c, 0x47, + 0xfc, 0x98, 0xe2, 0x08, 0xcb, 0x59, 0x8f, 0xb8, 0xf9, 0xd6, 0xbe, 0x23, + 0x84, 0x2f, 0x6f, 0x68, 0x17, 0x50, 0x79, 0xfc, 0xf4, 0x54, 0xf0, 0xa9, + 0x0a, 0x87, 0xe6, 0xb4, 0x49, 0x07, 0x95, 0xdf, 0xbe, 0x3c, 0x14, 0x4a, + 0x5b, 0x92, 0xfa, 0xb1, 0x6c, 0x34, 0xcc, 0xc5, 0x3c, 0x44, 0x6c, 0x31, + 0x79, 0xaa, 0x7c, 0xe7, 0xa8, 0x9d, 0xff, 0x00, 0x9b, 0x8a, 0x3e, 0x72, + 0x3c, 0xf2, 0xf7, 0x1f, 0x6e, 0x78, 0x98, 0x62, 0x6c, 0x44, 0x80, 0x06, + 0x18, 0xbc, 0xe0, 0xbc, 0x34, 0xdc, 0x8a, 0x26, 0x08, 0x49, 0xb9, 0x59, + 0xd8, 0x25, 0x90, 0x90, 0x20, 0xe6, 0x9b, 0xe6, 0x02, 0x3c, 0x26, 0xd4, + 0xc4, 0x48, 0x1e, 0xc0, 0x36, 0xcb, 0x5c, 0x07, 0x0d, 0x91, 0x2d, 0x0d, + 0x66, 0x44, 0x41, 0xa0, 0x86, 0xc2, 0x9e, 0x42, 0x8d, 0xc2, 0x42, 0x4a, + 0x24, 0x89, 0x4b, 0x95, 0x99, 0x27, 0x17, 0x67, 0x0b, 0x40, 0x48, 0xe8, + 0x67, 0x01, 0x2f, 0x43, 0x26, 0x26, 0x2d, 0xa2, 0x7f, 0xdf, 0xc4, 0x49, + 0x26, 0x5c, 0x56, 0x20, 0xbc, 0xf9, 0xb9, 0xe6, 0x21, 0x29, 0x6c, 0xee, + 0x2b, 0x6c, 0x4c, 0x5c, 0x4f, 0x8a, 0x5c, 0x42, 0x95, 0x0e, 0x61, 0x8d, + 0xde, 0x3f, 0x5d, 0x57, 0xbe, 0x4c, 0xb8, 0x6a, 0x6e, 0xbf, 0x48, 0x7b, + 0x8c, 0x7a, 0xae, 0x29, 0x6f, 0x42, 0xf3, 0x8c, 0xb8, 0x8d, 0xb5, 0x31, + 0xf0, 0xf0, 0x9b, 0x22, 0xda, 0xb0, 0xad, 0x61, 0x09, 0x89, 0x8f, 0xcb, + 0x93, 0x18, 0x89, 0xaf, 0x31, 0x01, 0x98, 0xb9, 0x11, 0xef, 0xe6, 0x7f, + 0xcd, 0x81, 0xdc, 0xb5, 0xea, 0x3c, 0x95, 0x2b, 0xd8, 0xd1, 0xc1, 0x2b, + 0x54, 0xca, 0xe2, 0xd5, 0x88, 0x34, 0xb2, 0x56, 0x58, 0x23, 0x94, 0x42, + 0xb2, 0xd4, 0xcb, 0x70, 0x18, 0x26, 0x31, 0x38, 0x22, 0xda, 0xb7, 0x8d, + 0xaa, 0x60, 0x22, 0x65, 0x6f, 0x5b, 0x0f, 0x4d, 0x91, 0x1e, 0x46, 0x16, + 0x51, 0x52, 0xdb, 0x11, 0x52, 0x27, 0x74, 0x04, 0x55, 0xbb, 0xe2, 0x8d, + 0xcd, 0x44, 0x1b, 0xd8, 0x24, 0x91, 0x13, 0x27, 0x89, 0x1f, 0x80, 0x9d, + 0x19, 0xb5, 0x2a, 0x48, 0x69, 0x2d, 0x2d, 0x35, 0x10, 0x6a, 0x4f, 0xf7, + 0xa4, 0x72, 0x59, 0x34, 0xcb, 0x96, 0xc9, 0x4c, 0x4b, 0xa2, 0x65, 0x7a, + 0x89, 0x46, 0x18, 0x3e, 0x6a, 0x42, 0x0d, 0xdf, 0x91, 0x66, 0x17, 0x98, + 0x21, 0xaa, 0x91, 0x8b, 0xd6, 0x63, 0x1f, 0x2e, 0xbc, 0x1c, 0x0b, 0x97, + 0x22, 0xc0, 0xc5, 0x6a, 0x72, 0x63, 0x3d, 0x75, 0xc8, 0x61, 0x27, 0xbb, + 0x3e, 0x75, 0x9c, 0x6b, 0x7c, 0x08, 0x42, 0xe0, 0x17, 0x0c, 0xf6, 0xd0, + 0x33, 0xa2, 0x6c, 0x87, 0x92, 0x5f, 0x02, 0xb1, 0xd2, 0xb9, 0x17, 0xd6, + 0xf7, 0xfe, 0x6d, 0x3a, 0x67, 0x8c, 0x15, 0x95, 0x8f, 0x3b, 0xa3, 0x39, + 0x4e, 0x2d, 0x00, 0x74, 0x4a, 0x21, 0x03, 0x50, 0x48, 0xf8, 0xd8, 0x41, + 0xc6, 0x04, 0x81, 0x90, 0x0d, 0x2c, 0x30, 0x4c, 0xc4, 0x4d, 0x60, 0x8a, + 0x85, 0x57, 0x88, 0x46, 0x42, 0x56, 0x48, 0x24, 0x80, 0xcb, 0x52, 0x88, + 0xb8, 0x88, 0xcc, 0xe5, 0x0c, 0xaa, 0x29, 0x20, 0x85, 0x08, 0x84, 0x6c, + 0xd2, 0x31, 0x31, 0x89, 0xe0, 0xb6, 0x42, 0xd8, 0xdc, 0x24, 0xa8, 0x6e, + 0x4c, 0x90, 0x62, 0x0a, 0xa2, 0x11, 0x62, 0x08, 0x4c, 0xa0, 0x96, 0x13, + 0xa2, 0x48, 0x40, 0x8c, 0x61, 0xc0, 0xff, 0x00, 0xbe, 0x92, 0x6c, 0xc1, + 0x8c, 0x31, 0xfa, 0x75, 0x57, 0x34, 0xed, 0xb1, 0x50, 0xda, 0x2e, 0x30, + 0x16, 0x5f, 0x71, 0x2e, 0x72, 0x0d, 0x90, 0x36, 0xd1, 0x10, 0x98, 0xf5, + 0x73, 0xe6, 0x9d, 0x10, 0xf1, 0x58, 0x67, 0xcc, 0xcc, 0x55, 0x77, 0x3f, + 0x4c, 0xc4, 0x5f, 0x0a, 0x75, 0x73, 0xf2, 0x64, 0x4b, 0xeb, 0xd6, 0xc6, + 0x2b, 0x8a, 0x69, 0x24, 0xa4, 0x44, 0x9d, 0x47, 0xe2, 0x2f, 0xb2, 0x63, + 0x8a, 0x89, 0x9b, 0x7c, 0xea, 0xf3, 0xb6, 0x75, 0x3d, 0xd7, 0xf9, 0xc3, + 0xcf, 0x37, 0x43, 0xe7, 0xfe, 0xc4, 0xcf, 0x7c, 0x40, 0xaa, 0x2d, 0x51, + 0x93, 0x44, 0x90, 0x8a, 0x88, 0x44, 0x69, 0xc4, 0x9e, 0x29, 0x0c, 0x89, + 0x10, 0x1c, 0xe1, 0x16, 0x03, 0x04, 0xe2, 0x96, 0x50, 0xb3, 0xc2, 0x50, + 0x12, 0x61, 0x15, 0x7b, 0xa1, 0xa9, 0x11, 0xc8, 0x32, 0xd8, 0x70, 0x44, + 0x20, 0x1c, 0xa8, 0x10, 0xa4, 0x22, 0x33, 0x86, 0xf1, 0x76, 0x4b, 0xe2, + 0x8b, 0x21, 0x22, 0x32, 0x8a, 0xae, 0xdd, 0xa1, 0x1a, 0x99, 0xf2, 0xbc, + 0x32, 0x61, 0x12, 0x8c, 0x91, 0x00, 0x18, 0x68, 0x58, 0x10, 0x65, 0xd0, + 0x9f, 0xef, 0xd4, 0x32, 0x4a, 0x15, 0x33, 0xbf, 0xda, 0x73, 0x53, 0x19, + 0x66, 0xaa, 0x13, 0x0a, 0xfc, 0x54, 0xb3, 0x6b, 0x0d, 0xd2, 0xfc, 0x40, + 0xcf, 0x08, 0x49, 0x25, 0x7c, 0x93, 0x39, 0x98, 0xb8, 0x24, 0x9a, 0x86, + 0xa6, 0x6d, 0x99, 0xe9, 0xee, 0x18, 0x01, 0x22, 0x20, 0x3c, 0x33, 0xd6, + 0xb3, 0x1c, 0x25, 0x71, 0xd0, 0x66, 0xd9, 0x83, 0xbf, 0x3f, 0x89, 0xe6, + 0x40, 0xcc, 0x38, 0x90, 0x3e, 0x6b, 0xc9, 0x65, 0x7c, 0x10, 0xe5, 0xb2, + 0x64, 0x88, 0xce, 0x98, 0x93, 0x1d, 0xeb, 0x1f, 0xe6, 0xd2, 0x26, 0x3e, + 0xbb, 0x3b, 0xd6, 0x8b, 0xd6, 0x78, 0x48, 0xb8, 0x4e, 0x42, 0x50, 0xd7, + 0xd3, 0x2c, 0xcd, 0xf8, 0x4c, 0xf1, 0x88, 0x2a, 0xa3, 0x03, 0x00, 0xda, + 0x13, 0x40, 0x6d, 0x34, 0x04, 0x13, 0x00, 0x70, 0x0c, 0x86, 0x15, 0x94, + 0x98, 0x10, 0xd5, 0x44, 0x05, 0x6a, 0x00, 0xcc, 0x9c, 0x1d, 0xa6, 0xc4, + 0x03, 0x2c, 0x8b, 0x34, 0x49, 0xb5, 0x99, 0x98, 0x58, 0x78, 0x2e, 0x11, + 0x29, 0x22, 0x65, 0x02, 0x2d, 0x57, 0x6c, 0x62, 0x15, 0x59, 0x0b, 0x78, + 0x08, 0x09, 0x04, 0xdc, 0x28, 0x09, 0x74, 0x13, 0x28, 0x85, 0xb7, 0x70, + 0x23, 0x47, 0xfb, 0xd0, 0x66, 0x22, 0xef, 0xdf, 0xe6, 0x3c, 0x4e, 0x65, + 0xbe, 0x0a, 0x02, 0x5a, 0x99, 0x8c, 0x11, 0xb7, 0xec, 0xee, 0x66, 0x2c, + 0xe5, 0x43, 0x2c, 0x79, 0x37, 0x25, 0xff, 0x00, 0x1f, 0x78, 0x87, 0x04, + 0x41, 0xc8, 0x99, 0xc1, 0x9d, 0xfe, 0xd5, 0xdf, 0x0f, 0x7a, 0xc3, 0x3f, + 0xcb, 0xf0, 0x9d, 0x48, 0xeb, 0x8f, 0x1d, 0x9e, 0x82, 0x04, 0xb4, 0x04, + 0xcb, 0x84, 0x19, 0xb5, 0x62, 0x30, 0xb9, 0xf3, 0xb6, 0x7a, 0x9f, 0xe2, + 0xc8, 0xba, 0xf3, 0xfe, 0x71, 0x44, 0x2a, 0x3c, 0x4f, 0xa6, 0xbd, 0xef, + 0xc7, 0x53, 0xca, 0xa8, 0x66, 0x5b, 0x02, 0x79, 0x9b, 0x08, 0x87, 0x59, + 0xd3, 0x6a, 0x01, 0x83, 0x31, 0x04, 0x40, 0x10, 0x9c, 0x03, 0x14, 0x5c, + 0xe0, 0xcd, 0x2c, 0x44, 0x4c, 0x24, 0x98, 0x25, 0x5b, 0x64, 0xb5, 0x24, + 0x56, 0x22, 0x58, 0x75, 0xc8, 0x2b, 0x15, 0x62, 0xe5, 0x12, 0x44, 0xe1, + 0xc8, 0x32, 0x9e, 0xf8, 0xa1, 0x52, 0x4c, 0x4c, 0x16, 0x84, 0x94, 0xd1, + 0x49, 0x77, 0x95, 0x96, 0x5e, 0x10, 0x50, 0x89, 0x8c, 0x0c, 0xcb, 0x28, + 0x20, 0x4b, 0x69, 0xbe, 0x86, 0x3f, 0xdf, 0x10, 0x2b, 0x48, 0x45, 0x3f, + 0xf9, 0xf0, 0x7f, 0x3c, 0x49, 0x21, 0x4c, 0x09, 0xa6, 0x2a, 0xc7, 0x71, + 0xff, 0x00, 0xb0, 0x3c, 0x42, 0xa4, 0x17, 0x2e, 0x63, 0x1f, 0x86, 0x34, + 0xd4, 0xdb, 0xc9, 0xa0, 0x75, 0x37, 0x46, 0xc4, 0x47, 0xe6, 0xa9, 0xcc, + 0xd5, 0xf0, 0x33, 0x4a, 0x1a, 0x72, 0x31, 0xdc, 0x49, 0xfa, 0xef, 0x90, + 0x45, 0x61, 0x8c, 0xa0, 0x21, 0x46, 0x46, 0x24, 0x67, 0xd3, 0x04, 0x76, + 0xe4, 0x5c, 0xf5, 0xd9, 0xf9, 0xf9, 0xf1, 0xfe, 0x6e, 0x24, 0xc2, 0x5f, + 0xaf, 0xf8, 0x20, 0xf6, 0x93, 0x89, 0x68, 0xe4, 0x20, 0xaa, 0x89, 0x90, + 0x4d, 0x1c, 0xc3, 0x61, 0x6c, 0xcc, 0x8b, 0x6b, 0x45, 0x06, 0x51, 0x56, + 0xd8, 0xe5, 0x8c, 0xfa, 0x22, 0xb8, 0x34, 0x4a, 0x96, 0x1c, 0x23, 0xa1, + 0x76, 0x21, 0x70, 0xdb, 0x0f, 0x20, 0x91, 0x01, 0x99, 0x40, 0xab, 0x3a, + 0x43, 0xbb, 0x95, 0xa9, 0x05, 0x94, 0x89, 0x41, 0x48, 0x22, 0x07, 0x2a, + 0x33, 0x7e, 0x22, 0x62, 0x5f, 0x5c, 0x9c, 0xcd, 0x54, 0x23, 0xb1, 0xd0, + 0x22, 0x44, 0x94, 0x8c, 0x0d, 0xe7, 0xfd, 0xff, 0x00, 0x7a, 0x37, 0x88, + 0x7d, 0x17, 0x9f, 0x4c, 0xcf, 0x2e, 0x06, 0x22, 0x15, 0x5c, 0x84, 0x11, + 0xdf, 0xd1, 0x17, 0x58, 0xe4, 0x52, 0x3b, 0xb6, 0xeb, 0x38, 0x96, 0x2b, + 0x15, 0x54, 0x96, 0xf1, 0x9b, 0x04, 0x21, 0x5e, 0xb5, 0xaf, 0xd8, 0x86, + 0xc9, 0x87, 0x49, 0x48, 0x7a, 0x9e, 0xf3, 0x43, 0xf1, 0x23, 0x12, 0x52, + 0xea, 0x44, 0x6e, 0x26, 0x99, 0x4b, 0x28, 0x96, 0x76, 0x55, 0x8d, 0x8d, + 0xcf, 0x23, 0x46, 0xdc, 0x3a, 0xf4, 0x51, 0x3d, 0x78, 0xf7, 0xfe, 0x68, + 0x3e, 0x92, 0x7c, 0x78, 0xf9, 0x76, 0x78, 0x94, 0xa5, 0xb0, 0x0d, 0xc1, + 0x5f, 0x99, 0x2c, 0x8f, 0x24, 0x4b, 0x04, 0x1c, 0x1a, 0x22, 0x14, 0x04, + 0x90, 0x11, 0x2d, 0x30, 0x81, 0x04, 0xc4, 0xa3, 0x8c, 0x9c, 0x99, 0x82, + 0x8b, 0xc9, 0x35, 0xf6, 0xe0, 0xef, 0x25, 0xe7, 0x72, 0x2a, 0x2a, 0x31, + 0x54, 0xc5, 0x6c, 0xce, 0x64, 0xbc, 0x86, 0x40, 0x0a, 0x88, 0x85, 0x9c, + 0x05, 0x0c, 0x2c, 0x8a, 0x31, 0xe2, 0x08, 0xea, 0x79, 0x90, 0x09, 0x13, + 0x19, 0x4a, 0x32, 0x80, 0x22, 0x75, 0xdc, 0x20, 0x8f, 0xfb, 0xe2, 0x80, + 0x91, 0x45, 0xb9, 0xbf, 0xe3, 0x6f, 0x9f, 0x8e, 0x00, 0x90, 0x86, 0x4a, + 0x71, 0x11, 0x57, 0x31, 0x3f, 0x2f, 0x78, 0x63, 0x93, 0x6c, 0x07, 0x3b, + 0xaa, 0xbb, 0xdc, 0xef, 0xbc, 0xdf, 0x20, 0xc8, 0xa8, 0x16, 0xc9, 0x5d, + 0xfc, 0x4f, 0x57, 0xe3, 0x86, 0x41, 0x3a, 0x4b, 0x2b, 0x1d, 0xce, 0xbb, + 0x3e, 0x36, 0xcc, 0x1b, 0x9a, 0x08, 0xae, 0x42, 0x57, 0x05, 0x90, 0xda, + 0x53, 0xe6, 0x38, 0x85, 0xc5, 0xfa, 0xc7, 0x67, 0x5f, 0xc5, 0xc6, 0xff, + 0x00, 0xce, 0xa9, 0x31, 0xaa, 0x26, 0x61, 0x7c, 0xc6, 0x7a, 0xfd, 0xce, + 0x48, 0x34, 0xce, 0x53, 0x0c, 0x6c, 0x07, 0xb1, 0x82, 0x15, 0x35, 0xc0, + 0x9d, 0x28, 0xe9, 0x96, 0x62, 0x02, 0x40, 0x96, 0x56, 0x95, 0x59, 0x55, + 0xe0, 0x90, 0xa8, 0x88, 0xc8, 0x44, 0xb3, 0x34, 0xc9, 0xd8, 0x2c, 0x54, + 0x0f, 0x99, 0x28, 0x30, 0x6c, 0x11, 0x65, 0xc4, 0x60, 0xd3, 0x72, 0xb5, + 0x28, 0xc7, 0x05, 0x10, 0x26, 0x09, 0x02, 0x70, 0x4a, 0xd1, 0x85, 0x06, + 0x59, 0x65, 0x07, 0x10, 0xa8, 0x90, 0xd3, 0x6b, 0x01, 0x80, 0x34, 0x41, + 0x86, 0xbe, 0x4c, 0x2b, 0x5f, 0xef, 0x01, 0x1a, 0x97, 0x02, 0xd7, 0xcc, + 0xc7, 0x98, 0xcc, 0xe2, 0xe3, 0x8c, 0x54, 0xd6, 0x9b, 0xdd, 0x19, 0x51, + 0xf8, 0x8d, 0x0f, 0x3b, 0xc3, 0x6f, 0x74, 0x95, 0x99, 0xa8, 0xad, 0xfc, + 0x46, 0x40, 0x06, 0x9a, 0x1a, 0x4f, 0x36, 0x1d, 0x93, 0xdb, 0x81, 0x8a, + 0xe4, 0x61, 0x46, 0x31, 0x6f, 0xc6, 0x7f, 0x15, 0x3f, 0x7c, 0x99, 0x4e, + 0x2c, 0x22, 0x26, 0x74, 0x8d, 0x8c, 0x7e, 0x6f, 0x1c, 0x74, 0x45, 0xa9, + 0xf5, 0xf8, 0xae, 0x95, 0xec, 0xf5, 0xfe, 0x50, 0x78, 0x57, 0x7f, 0x51, + 0xf3, 0xf6, 0xcf, 0x05, 0x46, 0x02, 0xe8, 0x21, 0x9a, 0xa0, 0x0b, 0x42, + 0xd3, 0x24, 0xdc, 0xcf, 0x1a, 0xc3, 0xa8, 0x73, 0x3e, 0x99, 0x0a, 0xd3, + 0xfa, 0x31, 0xc8, 0x3e, 0x62, 0x5f, 0x10, 0x8b, 0x89, 0xea, 0x75, 0x9d, + 0xec, 0x92, 0xa5, 0xed, 0xa2, 0x92, 0xca, 0x90, 0xe0, 0x17, 0x94, 0xe8, + 0xe5, 0x07, 0xeb, 0x85, 0x87, 0x3d, 0xf5, 0x25, 0xef, 0xe1, 0x28, 0x17, + 0x36, 0x30, 0x49, 0xb8, 0x27, 0x63, 0x92, 0x0b, 0xa6, 0x27, 0xfd, 0xf1, + 0x40, 0x52, 0x37, 0xb5, 0x66, 0xd9, 0x97, 0xc1, 0xd5, 0xea, 0x38, 0x84, + 0x04, 0x12, 0x5b, 0x4f, 0x81, 0xb9, 0xc6, 0x66, 0x67, 0xd7, 0x19, 0x61, + 0x8b, 0x6d, 0xee, 0x8f, 0x3d, 0x5a, 0xbc, 0x8c, 0x09, 0x80, 0x47, 0x31, + 0x33, 0xeb, 0xe3, 0xf5, 0xe1, 0x2a, 0x73, 0x1f, 0x2f, 0xd4, 0x46, 0x33, + 0xe2, 0x73, 0xc5, 0x59, 0x31, 0x43, 0x82, 0x45, 0x93, 0x13, 0x64, 0xb0, + 0x60, 0xae, 0x49, 0x9a, 0x26, 0xf1, 0xd3, 0xdd, 0x5f, 0xbb, 0x7c, 0xff, + 0x00, 0x9a, 0x07, 0x39, 0x21, 0x3b, 0x85, 0xfd, 0x4b, 0xe8, 0x73, 0xcd, + 0x4f, 0x49, 0x23, 0x05, 0x25, 0x2c, 0x6f, 0xdb, 0x2e, 0x20, 0x24, 0x92, + 0xf5, 0x01, 0xa6, 0x69, 0x94, 0x67, 0x12, 0xce, 0x30, 0xe2, 0x38, 0x29, + 0x29, 0x09, 0x19, 0x51, 0xc5, 0x32, 0xb7, 0x1a, 0x08, 0xb7, 0x9a, 0x67, + 0x8f, 0xb5, 0x68, 0xcc, 0xcd, 0xb5, 0xdc, 0x3a, 0xff, 0x00, 0xce, 0x49, + 0xd5, 0xe0, 0x8c, 0x6e, 0x64, 0x7f, 0x0b, 0x09, 0x2f, 0x83, 0x8e, 0x26, + 0x1b, 0xdb, 0xd9, 0x98, 0xf9, 0x8b, 0xf8, 0x67, 0xfd, 0xfa, 0x0b, 0xa9, + 0xee, 0x09, 0xd9, 0xb2, 0x3f, 0xb9, 0xc0, 0x21, 0x61, 0x25, 0xee, 0xfb, + 0xd4, 0x5a, 0x39, 0x97, 0xbe, 0x38, 0x01, 0x36, 0xee, 0xff, 0x00, 0x0e, + 0x0c, 0x4e, 0xd7, 0xb7, 0x82, 0x65, 0x04, 0x47, 0x9a, 0x29, 0xcf, 0xc5, + 0x1f, 0xa7, 0x24, 0x94, 0x48, 0x33, 0x12, 0x79, 0xef, 0xf8, 0xfc, 0xf2, + 0x62, 0x88, 0x1e, 0xfa, 0xcd, 0xde, 0x8d, 0x45, 0x69, 0x38, 0xc4, 0x77, + 0x2b, 0xd6, 0xb3, 0xd9, 0x19, 0xf3, 0xf3, 0xfe, 0x6a, 0x3a, 0x31, 0xfc, + 0xf7, 0xd9, 0xa8, 0xe9, 0x78, 0xdf, 0x86, 0xb0, 0xf7, 0x13, 0x31, 0x55, + 0x51, 0x73, 0xdf, 0x18, 0x16, 0x4e, 0x8b, 0xa6, 0xa0, 0x64, 0x5e, 0x86, + 0x49, 0xed, 0x8d, 0x70, 0x09, 0x71, 0x8c, 0x45, 0x37, 0x53, 0xf1, 0x39, + 0xa6, 0x23, 0x9b, 0x33, 0x17, 0x81, 0x86, 0xcc, 0xd5, 0xd4, 0x17, 0xdc, + 0x73, 0x37, 0x80, 0x37, 0xe0, 0xc4, 0x01, 0xd1, 0x2e, 0xa4, 0x98, 0x89, + 0x61, 0x00, 0x55, 0x29, 0x9d, 0x13, 0x11, 0x37, 0x7b, 0xa9, 0xbc, 0xa1, + 0xfe, 0xfa, 0x02, 0x72, 0x19, 0x70, 0xfa, 0xf3, 0x8e, 0xdb, 0x8e, 0x60, + 0x71, 0x58, 0xd1, 0x31, 0xa2, 0x72, 0x4c, 0x77, 0x08, 0xc6, 0x39, 0x0c, + 0x13, 0x75, 0x1e, 0x4a, 0xf8, 0x96, 0xe2, 0x74, 0xc7, 0xb3, 0x4b, 0x33, + 0xe8, 0x8f, 0xcb, 0x32, 0x6e, 0x7c, 0xcc, 0xea, 0x3d, 0xc0, 0xea, 0x23, + 0x10, 0x6a, 0x0f, 0xbc, 0x6e, 0x5e, 0x1b, 0x26, 0xc5, 0x75, 0x04, 0xfb, + 0x24, 0xc8, 0xd4, 0xe3, 0x73, 0xc5, 0x4b, 0x33, 0x2e, 0x20, 0x98, 0x1a, + 0x96, 0xe8, 0xdf, 0x71, 0x23, 0x3f, 0xe7, 0x01, 0x66, 0x1b, 0x7b, 0x09, + 0x9c, 0x47, 0xe4, 0xf3, 0x27, 0x23, 0x9e, 0xcc, 0xd2, 0x94, 0x1e, 0x63, + 0x0c, 0xbf, 0x82, 0xb9, 0xf0, 0xc0, 0xc3, 0x64, 0xfd, 0x84, 0x05, 0x30, + 0xc3, 0x06, 0x57, 0x94, 0xc6, 0x91, 0xfb, 0xc9, 0x3f, 0x13, 0x18, 0x0d, + 0xf9, 0x48, 0x87, 0x3e, 0x30, 0xcd, 0x66, 0x4f, 0xc1, 0x17, 0x8a, 0xe2, + 0xe0, 0x33, 0x65, 0xe2, 0x69, 0x11, 0xe6, 0x5c, 0x56, 0xb3, 0x9b, 0x6d, + 0x9d, 0x66, 0xf3, 0xd7, 0xc8, 0xc4, 0x56, 0x49, 0xef, 0xfd, 0xe8, 0xc2, + 0x33, 0x03, 0x59, 0x3a, 0xbc, 0x79, 0x83, 0xc9, 0x31, 0x3c, 0xc0, 0x6d, + 0x96, 0x6c, 0x8a, 0x00, 0xab, 0x5e, 0xf3, 0xb9, 0xbe, 0x1d, 0x58, 0xc6, + 0x84, 0xce, 0x71, 0x33, 0xef, 0x04, 0xcc, 0x4f, 0x1d, 0x43, 0x0c, 0xf8, + 0xa8, 0x8b, 0xc6, 0xcf, 0x17, 0xf3, 0x65, 0xb7, 0x45, 0xba, 0xdc, 0x62, + 0x63, 0xc6, 0x5d, 0x31, 0x5c, 0x04, 0x99, 0x90, 0x1a, 0x23, 0x30, 0x85, + 0xcd, 0xc5, 0xc5, 0x45, 0x92, 0xe1, 0x26, 0x6f, 0x32, 0x66, 0x9b, 0xd4, + 0x98, 0xf1, 0x79, 0xd7, 0xf9, 0x64, 0x7b, 0x1b, 0x90, 0xdb, 0x12, 0xc5, + 0xd4, 0x19, 0x93, 0x67, 0x18, 0x59, 0xd2, 0x35, 0x2c, 0x34, 0xe6, 0x26, + 0x5b, 0x3e, 0xf6, 0xa1, 0x64, 0xde, 0xd8, 0xea, 0xed, 0x8a, 0x52, 0x34, + 0x26, 0xc5, 0xb4, 0x1d, 0x43, 0x8f, 0xd6, 0xb3, 0x7b, 0x59, 0xac, 0x52, + 0x1c, 0xf1, 0x37, 0x72, 0x90, 0x67, 0x15, 0x9a, 0xc4, 0xcb, 0x83, 0x5c, + 0x2e, 0xa6, 0xe0, 0x2a, 0xaf, 0x1d, 0xd4, 0xb3, 0xea, 0x2a, 0x2f, 0x86, + 0xc4, 0x9a, 0x23, 0x71, 0x0a, 0xfb, 0xd4, 0xf4, 0xdc, 0xb5, 0x7f, 0xef, + 0x4d, 0x25, 0x8e, 0x92, 0x3d, 0x9e, 0xfe, 0x1a, 0xea, 0xb8, 0x96, 0x22, + 0x13, 0x28, 0xc3, 0x1f, 0xbc, 0xbb, 0x6f, 0x1b, 0xe0, 0x2c, 0x65, 0x5a, + 0x57, 0xc7, 0x56, 0x6e, 0xfb, 0xcc, 0x71, 0x10, 0xca, 0xfe, 0x33, 0xd6, + 0x16, 0x7f, 0xb3, 0x52, 0x63, 0x2d, 0x47, 0x72, 0x77, 0x51, 0xee, 0xb9, + 0x2c, 0x51, 0x9e, 0xac, 0x7d, 0x9e, 0x3c, 0x60, 0xcf, 0x26, 0x2b, 0xae, + 0xe8, 0x7f, 0x82, 0x50, 0x9f, 0x89, 0x3f, 0xce, 0x61, 0x53, 0x82, 0xae, + 0x3c, 0xbf, 0x75, 0xf7, 0x67, 0x13, 0x12, 0x52, 0xe6, 0x28, 0x88, 0x2b, + 0x66, 0x20, 0x8c, 0x66, 0x38, 0xb2, 0x4e, 0x66, 0x77, 0x04, 0xf9, 0x98, + 0xdb, 0x25, 0x4a, 0x9c, 0x1d, 0xfc, 0x1b, 0xdd, 0xd5, 0x64, 0xba, 0x92, + 0x0f, 0x01, 0xc9, 0x61, 0x9e, 0xb2, 0x4e, 0x6c, 0xa8, 0xba, 0xf7, 0xf5, + 0xca, 0x12, 0xe1, 0x88, 0xd4, 0xc0, 0x98, 0xac, 0xe6, 0x08, 0x85, 0xd5, + 0x70, 0xe9, 0xc4, 0x12, 0x16, 0xc5, 0xd7, 0x53, 0xe7, 0x0f, 0x46, 0x7f, + 0xdf, 0x72, 0x09, 0x5a, 0x08, 0x7c, 0xca, 0x46, 0x4c, 0xbf, 0xf5, 0xb3, + 0x8c, 0xc3, 0x81, 0x06, 0x3b, 0xf5, 0xd5, 0x7e, 0x30, 0x04, 0x9c, 0x44, + 0x63, 0xdf, 0x61, 0xbb, 0x89, 0xef, 0x7f, 0x01, 0x3c, 0x70, 0x08, 0x51, + 0xb5, 0x09, 0x3e, 0xc7, 0xa3, 0x3f, 0x0f, 0x26, 0x21, 0x70, 0x10, 0xdc, + 0x7c, 0x85, 0xfb, 0xf7, 0x67, 0x1a, 0xce, 0x19, 0x24, 0xd6, 0x02, 0xa6, + 0x27, 0x77, 0x67, 0xd4, 0xc7, 0x82, 0x48, 0xf3, 0x9b, 0xf3, 0xf1, 0x3f, + 0xe6, 0xe9, 0xc4, 0x24, 0xf5, 0x25, 0xfb, 0x3f, 0x9e, 0xf8, 0xa0, 0xd8, + 0x64, 0xd6, 0x73, 0x1e, 0xff, 0x00, 0x59, 0x97, 0x20, 0x70, 0x4c, 0x4c, + 0x4a, 0x8b, 0xa3, 0xb4, 0xfe, 0xce, 0x5d, 0xf0, 0xf6, 0xf4, 0x61, 0xd4, + 0xb1, 0x0a, 0xeb, 0x7d, 0x94, 0xc1, 0xc6, 0x20, 0x94, 0xe9, 0x2c, 0x86, + 0xba, 0x46, 0x76, 0xaa, 0x09, 0x4d, 0x0f, 0x45, 0xe2, 0x62, 0xba, 0x3c, + 0x84, 0x98, 0x30, 0x8f, 0xbe, 0x56, 0x09, 0x2e, 0x2d, 0x73, 0x33, 0x96, + 0x1e, 0xdd, 0x91, 0xd0, 0xff, 0x00, 0x7f, 0x51, 0x6d, 0x13, 0x4c, 0x4c, + 0xdf, 0x84, 0x8f, 0xbf, 0x50, 0xa2, 0x70, 0x05, 0x64, 0xbc, 0x36, 0x5f, + 0x79, 0x77, 0x8e, 0x30, 0x0c, 0xdf, 0xdf, 0x98, 0x6b, 0xba, 0x3b, 0x8a, + 0xe2, 0x98, 0x07, 0x96, 0xa2, 0xbe, 0xfc, 0x45, 0xe5, 0xe0, 0xa4, 0xc5, + 0xeb, 0xb6, 0x3f, 0x79, 0xf1, 0x11, 0x18, 0x64, 0x15, 0x0a, 0xce, 0x09, + 0xa1, 0x52, 0x89, 0xee, 0x97, 0xb8, 0x3c, 0x1f, 0x57, 0xe0, 0xfe, 0x5a, + 0xfa, 0xf5, 0xfe, 0x75, 0x79, 0xac, 0x73, 0x75, 0xae, 0x6c, 0x6b, 0xe9, + 0xd4, 0xf1, 0x8b, 0x84, 0x84, 0xf3, 0x05, 0x46, 0x56, 0x24, 0xfc, 0x4b, + 0x75, 0x6f, 0x25, 0x4c, 0xed, 0x26, 0x33, 0xa9, 0xf4, 0xf7, 0xd9, 0x04, + 0xcc, 0x70, 0xee, 0x1c, 0xc7, 0xb1, 0x6d, 0x20, 0xcf, 0xa7, 0x18, 0xc7, + 0x25, 0x86, 0xf7, 0x33, 0x25, 0xbd, 0x1e, 0x2b, 0x19, 0xb3, 0x02, 0xf1, + 0x70, 0x4c, 0x1e, 0xcd, 0x26, 0x10, 0x2e, 0x90, 0x2e, 0x7c, 0x9c, 0x58, + 0x99, 0xa1, 0xf3, 0x99, 0xa2, 0x3b, 0xaa, 0x9c, 0x69, 0x16, 0x27, 0xfd, + 0xe1, 0xcd, 0x10, 0x1d, 0x0b, 0x88, 0x63, 0x17, 0xbc, 0xf9, 0x79, 0x39, + 0x05, 0x4e, 0xbb, 0xac, 0x52, 0xc6, 0x4a, 0x86, 0x66, 0x3c, 0xf0, 0x58, + 0xc8, 0x66, 0xca, 0x0a, 0x14, 0xeb, 0xab, 0x87, 0x2f, 0xda, 0x2f, 0x42, + 0x22, 0x33, 0x08, 0xcd, 0xcf, 0x5d, 0xee, 0x6d, 0x23, 0x8d, 0x43, 0x31, + 0x11, 0xbf, 0xbf, 0x53, 0x65, 0x3f, 0x3c, 0x59, 0xa5, 0xe5, 0x92, 0x22, + 0xe7, 0xd9, 0x7a, 0x08, 0xae, 0x9e, 0x39, 0x84, 0xa9, 0x56, 0xb2, 0xc4, + 0x53, 0xe2, 0x91, 0xaf, 0xbf, 0xf2, 0x6c, 0x5a, 0x9f, 0xe5, 0xfd, 0x00, + 0xde, 0x35, 0x33, 0x1c, 0x79, 0xe0, 0x1a, 0x33, 0x86, 0xce, 0x31, 0xac, + 0x4f, 0xdb, 0x41, 0xd2, 0x67, 0x06, 0xe4, 0x28, 0x22, 0x22, 0x0c, 0x59, + 0xd3, 0xc9, 0xc2, 0x88, 0x98, 0x64, 0xd4, 0xcc, 0x84, 0xdd, 0xcc, 0x43, + 0x1e, 0x6d, 0xe5, 0xc4, 0x2c, 0xa8, 0x0f, 0xb8, 0x71, 0xe9, 0x2e, 0xd9, + 0xb3, 0x39, 0xa2, 0x16, 0x95, 0x99, 0x9d, 0x27, 0x96, 0xa3, 0xe3, 0x19, + 0x9b, 0xe6, 0x84, 0x65, 0x98, 0x1b, 0xbc, 0xa4, 0x33, 0x11, 0xbb, 0xbd, + 0x7f, 0xbf, 0x04, 0x04, 0xa6, 0x30, 0xc4, 0x44, 0xce, 0xdf, 0x10, 0x4e, + 0x27, 0xa7, 0x92, 0x7c, 0x21, 0x59, 0xdf, 0xdf, 0xb8, 0x2e, 0x5f, 0x8e, + 0x4b, 0x10, 0xe2, 0x07, 0xf8, 0x9b, 0x75, 0xdf, 0xb8, 0xe0, 0x94, 0xd2, + 0xa1, 0x2f, 0x68, 0x31, 0x5e, 0xde, 0xfc, 0xe0, 0x16, 0x23, 0x76, 0x7e, + 0xc8, 0xf7, 0x1e, 0x39, 0x3e, 0x28, 0x4d, 0x29, 0x82, 0x43, 0xb0, 0x60, + 0xf2, 0x50, 0x3c, 0x54, 0x1f, 0xaf, 0x61, 0x7e, 0x27, 0x1f, 0x9f, 0xf3, + 0x49, 0x0d, 0x23, 0x0b, 0x8d, 0xda, 0xd7, 0x8e, 0xfb, 0x07, 0x97, 0xbe, + 0x65, 0x7a, 0xb1, 0x06, 0x3a, 0x22, 0xba, 0xc9, 0xcd, 0x20, 0x60, 0xf3, + 0x03, 0xe2, 0x69, 0xc5, 0xbd, 0x47, 0x57, 0xc8, 0x23, 0x1e, 0x61, 0xcc, + 0xda, 0x39, 0x18, 0x86, 0x24, 0x71, 0xd3, 0x83, 0x49, 0x03, 0x52, 0x59, + 0x9f, 0x4e, 0xd8, 0xc7, 0x9b, 0x81, 0x82, 0x66, 0x26, 0x66, 0x68, 0x8a, + 0x69, 0xc1, 0x06, 0xea, 0x58, 0x9d, 0x36, 0x71, 0x85, 0x9e, 0xc2, 0x31, + 0x64, 0xe6, 0xeb, 0xf9, 0x09, 0x54, 0x3f, 0xef, 0x6d, 0x25, 0x0d, 0x0c, + 0x7f, 0x31, 0xab, 0xeb, 0x38, 0xe1, 0xa1, 0x0d, 0x1e, 0xe0, 0x20, 0xd1, + 0x31, 0xd3, 0x34, 0x78, 0x6c, 0xe5, 0x5e, 0x18, 0x27, 0x16, 0x7a, 0x07, + 0xe9, 0xf3, 0xe3, 0x93, 0x30, 0x24, 0x61, 0xae, 0xab, 0xe7, 0x11, 0x37, + 0x53, 0xa9, 0x38, 0xab, 0x0f, 0xb8, 0xf5, 0x88, 0x5c, 0x68, 0xf7, 0x2e, + 0x2b, 0x8c, 0x45, 0x72, 0x69, 0x5a, 0x49, 0x62, 0xa7, 0xba, 0xf9, 0xe3, + 0xa9, 0x99, 0xc8, 0x89, 0x06, 0x2e, 0xbf, 0x98, 0x9f, 0xf3, 0x69, 0x0f, + 0xaa, 0xfd, 0xce, 0xa2, 0xbb, 0xc9, 0x7a, 0xe2, 0x7a, 0xa5, 0xaa, 0x75, + 0x0c, 0x46, 0x2b, 0xa3, 0x1f, 0x32, 0xa8, 0x02, 0x47, 0x49, 0x2d, 0x59, + 0x59, 0x73, 0x05, 0xcd, 0xe4, 0x77, 0x1c, 0x4c, 0x1c, 0x5c, 0xb5, 0x40, + 0xe8, 0x27, 0xce, 0x37, 0x23, 0xc6, 0xdf, 0xa7, 0x41, 0x53, 0x64, 0xc7, + 0xaf, 0x9b, 0xa7, 0x9e, 0x12, 0x3d, 0xcc, 0xac, 0xfb, 0x21, 0x8b, 0xb1, + 0x8f, 0x07, 0x02, 0xed, 0x01, 0x70, 0x4a, 0xc7, 0xab, 0x18, 0x86, 0xc2, + 0x73, 0x23, 0x5f, 0xef, 0xcc, 0x06, 0xc0, 0x45, 0x01, 0x09, 0x69, 0x2d, + 0x93, 0x20, 0x4c, 0xf9, 0x87, 0x81, 0x45, 0x19, 0x20, 0x1f, 0x0f, 0xa1, + 0xbc, 0x99, 0x9c, 0xf5, 0xc0, 0x01, 0x28, 0x90, 0x31, 0x11, 0x75, 0x3d, + 0x67, 0x43, 0xee, 0xeb, 0x9a, 0xc3, 0x77, 0x9b, 0x3c, 0xc5, 0x24, 0xf1, + 0xf9, 0xb3, 0x94, 0x1c, 0xb1, 0xdd, 0x08, 0x66, 0x23, 0x3f, 0x53, 0x75, + 0x55, 0x2b, 0xc5, 0xbe, 0xf3, 0xd7, 0x89, 0xfd, 0x26, 0x29, 0xe2, 0x9c, + 0x1d, 0x7f, 0xde, 0x23, 0xc3, 0x13, 0x3d, 0x7f, 0x9b, 0x85, 0x98, 0x12, + 0xfe, 0x98, 0xd4, 0xbc, 0x48, 0x50, 0x84, 0xf1, 0x18, 0x4f, 0x2a, 0x36, + 0xa8, 0x75, 0x78, 0x39, 0x36, 0x17, 0x03, 0x8b, 0x56, 0x91, 0xb9, 0x12, + 0x65, 0x70, 0x63, 0x16, 0xf1, 0x8f, 0x13, 0x14, 0x81, 0xd4, 0x0b, 0xb9, + 0xf6, 0xe0, 0x88, 0xb7, 0x82, 0x92, 0x92, 0x57, 0xbd, 0x01, 0x10, 0xcc, + 0x5c, 0xc7, 0x66, 0x0a, 0x84, 0x99, 0x90, 0x35, 0x05, 0xb2, 0xfa, 0x4f, + 0x5d, 0x6a, 0x58, 0xe4, 0x94, 0xb0, 0x38, 0x74, 0x24, 0x5b, 0x02, 0x4d, + 0x54, 0xd4, 0x41, 0xa7, 0xfd, 0xf9, 0xc3, 0x73, 0x07, 0x2b, 0x0d, 0xae, + 0x55, 0x35, 0x29, 0xd1, 0x38, 0xe1, 0x01, 0x44, 0x98, 0x31, 0x32, 0x6e, + 0x26, 0x89, 0xe8, 0x20, 0x9a, 0xe4, 0xe1, 0x71, 0xd9, 0xe6, 0xa0, 0x7b, + 0x33, 0x0c, 0xc6, 0x7e, 0x54, 0x69, 0x70, 0x6a, 0x02, 0x2e, 0x5a, 0x8a, + 0xb2, 0x99, 0xde, 0x0e, 0x5b, 0x25, 0x96, 0x20, 0xc4, 0xb8, 0xc1, 0x24, + 0x5f, 0xdc, 0x72, 0x95, 0xb8, 0x95, 0x5d, 0x32, 0x4e, 0xc9, 0x88, 0x35, + 0x27, 0xd3, 0x22, 0x3d, 0x57, 0xad, 0xc8, 0x3b, 0xfe, 0xeb, 0xfc, 0xa0, + 0x8f, 0x39, 0xe3, 0x23, 0x01, 0xf6, 0x77, 0x53, 0x83, 0x75, 0x42, 0x42, + 0x45, 0x70, 0x56, 0x19, 0xd4, 0x16, 0xca, 0xf0, 0x36, 0xfe, 0x96, 0x29, + 0x72, 0xe5, 0x62, 0x33, 0x04, 0xdf, 0x7c, 0x86, 0xa4, 0xf4, 0xe2, 0x8c, + 0x86, 0xb3, 0x4d, 0xe1, 0x16, 0xcf, 0x26, 0x99, 0x86, 0x4a, 0x1b, 0x22, + 0x2e, 0xe9, 0x34, 0x7a, 0x73, 0x9c, 0xb1, 0x13, 0x51, 0xb2, 0x65, 0x47, + 0xea, 0x75, 0x9a, 0xf1, 0x21, 0x74, 0x60, 0xba, 0x4d, 0xe2, 0x0f, 0xb9, + 0x6e, 0x1a, 0x68, 0x9f, 0xf7, 0x8b, 0xa0, 0x07, 0x76, 0xc9, 0x65, 0x95, + 0xed, 0x21, 0xc4, 0xe5, 0x2c, 0xad, 0x28, 0x2b, 0x60, 0xdc, 0xe2, 0x42, + 0x52, 0x7f, 0x32, 0x5b, 0x95, 0x78, 0x19, 0x48, 0xa1, 0x4a, 0x94, 0xd4, + 0x27, 0xe3, 0x16, 0xee, 0x36, 0x40, 0xb1, 0x3b, 0xef, 0xc9, 0xac, 0x66, + 0x0e, 0x44, 0x8c, 0xc8, 0xea, 0xa9, 0xa9, 0x72, 0xdd, 0xc9, 0x8e, 0x49, + 0x30, 0xe8, 0x26, 0x08, 0x12, 0x58, 0xcb, 0x0f, 0xdf, 0x5c, 0xbf, 0xc0, + 0x3e, 0x3d, 0x5b, 0xf8, 0x8c, 0x47, 0x5f, 0xe4, 0x96, 0x81, 0x05, 0x86, + 0xd5, 0x01, 0xc4, 0x90, 0x6a, 0xec, 0xec, 0xe5, 0x1a, 0x81, 0x68, 0xde, + 0x88, 0x53, 0x36, 0x5d, 0x49, 0x1e, 0xf8, 0xab, 0x72, 0x47, 0x6e, 0xea, + 0x1c, 0xa9, 0xb4, 0x1d, 0x41, 0x4f, 0x16, 0x5b, 0x41, 0x01, 0x26, 0xae, + 0xdc, 0xf7, 0x26, 0x98, 0xc9, 0x6c, 0x53, 0x96, 0xaa, 0xda, 0xef, 0xc0, + 0x77, 0x8b, 0x8a, 0x4a, 0xb5, 0x9c, 0x40, 0xb3, 0x70, 0x4d, 0x4d, 0x11, + 0x79, 0xaa, 0x3c, 0xf4, 0xf1, 0xf9, 0xb0, 0xde, 0x6a, 0x18, 0x59, 0x95, + 0xa7, 0x04, 0xc4, 0x96, 0x7f, 0xbe, 0xe2, 0x42, 0x0c, 0x1f, 0x02, 0x42, + 0xb3, 0xe1, 0xfd, 0xeb, 0x64, 0x02, 0xc8, 0x63, 0xbc, 0xa6, 0x72, 0xa1, + 0x6e, 0x0c, 0xd1, 0x5c, 0x71, 0x25, 0x21, 0x02, 0x10, 0x39, 0x66, 0x32, + 0xce, 0xec, 0xc6, 0x3c, 0xed, 0x2b, 0x67, 0x56, 0xc4, 0x14, 0x6e, 0x4d, + 0x5e, 0xa7, 0x8c, 0xc4, 0xa3, 0x50, 0x42, 0x53, 0x31, 0xea, 0xe6, 0xe7, + 0x30, 0x2c, 0x53, 0xc0, 0x23, 0x2a, 0xc7, 0xd0, 0xc3, 0x19, 0xc2, 0x71, + 0x0e, 0x31, 0x22, 0x71, 0x9a, 0x35, 0x06, 0x34, 0x03, 0x28, 0x8c, 0xde, + 0x23, 0xfc, 0xeb, 0x48, 0x99, 0x62, 0x66, 0x28, 0xaf, 0x62, 0x7e, 0x1c, + 0xaa, 0x76, 0x42, 0x93, 0x13, 0xf9, 0x06, 0x57, 0x13, 0xd4, 0x70, 0xdc, + 0x97, 0x92, 0x67, 0xa8, 0xc9, 0x05, 0xcc, 0x4c, 0x1b, 0xc9, 0x13, 0xc6, + 0x4c, 0x24, 0x46, 0x24, 0x4a, 0x47, 0xc6, 0x2a, 0x6e, 0x66, 0x63, 0x14, + 0x8d, 0xd9, 0xeb, 0xde, 0x27, 0xd1, 0xad, 0xc8, 0x3b, 0x78, 0x39, 0xc4, + 0xcb, 0xf9, 0xa9, 0x35, 0x32, 0x2d, 0xcd, 0x48, 0xcd, 0x71, 0x82, 0xe9, + 0x8a, 0x92, 0xa0, 0x23, 0xf7, 0x84, 0x3a, 0x90, 0x1b, 0xe2, 0x0c, 0x30, + 0x73, 0xfd, 0xff, 0x00, 0x0c, 0xf3, 0xf3, 0xe3, 0xce, 0xf1, 0xf9, 0x11, + 0xe7, 0xf1, 0xbf, 0x98, 0xc6, 0xf8, 0x86, 0x7f, 0xe3, 0xe3, 0x46, 0x5d, + 0x5b, 0x98, 0xc7, 0xf7, 0x17, 0x8b, 0xe6, 0xcf, 0x0f, 0x9f, 0x15, 0x6e, + 0x47, 0xf5, 0xf9, 0xef, 0xfe, 0xba, 0xc3, 0x7c, 0xff, 0x00, 0xde, 0x7f, + 0xaf, 0xe1, 0xcf, 0xd3, 0x9e, 0xfc, 0x71, 0xfd, 0x1f, 0xd9, 0xfc, 0xd6, + 0x5f, 0xff, 0x00, 0x74, 0xf2, 0xb9, 0xc3, 0xbf, 0xff, 0x00, 0x26, 0x82, + 0x63, 0x68, 0xf7, 0x71, 0x64, 0x7f, 0xe2, 0x99, 0xf4, 0xa6, 0xf1, 0xff, + 0x00, 0xcb, 0xcf, 0x3c, 0xf3, 0xcf, 0x1c, 0xf3, 0xca, 0xe6, 0x51, 0xfd, + 0x23, 0x6f, 0x8e, 0x7e, 0xcf, 0xfb, 0x7f, 0x57, 0xd7, 0xff, 0x00, 0x9e, + 0x09, 0x8f, 0xc3, 0xef, 0xbf, 0x07, 0x83, 0x63, 0xbf, 0xc1, 0x9e, 0x4e, + 0x3d, 0x83, 0x1b, 0x3d, 0x93, 0x9a, 0x4f, 0x64, 0x5f, 0x23, 0x86, 0x24, + 0x73, 0x10, 0x92, 0x2e, 0xf2, 0xcf, 0x43, 0xa6, 0x78, 0x68, 0x8e, 0xb2, + 0x53, 0x24, 0x6e, 0x08, 0xb0, 0xd7, 0x71, 0x3c, 0x51, 0x19, 0x6e, 0x08, + 0x99, 0xc9, 0x88, 0x85, 0x93, 0x33, 0x23, 0xad, 0xf1, 0x64, 0xea, 0x1a, + 0x9d, 0xf5, 0x1e, 0x33, 0xc4, 0x73, 0x1c, 0xd4, 0x65, 0x60, 0xac, 0xcf, + 0xf2, 0x19, 0xe0, 0x1e, 0x2c, 0xee, 0x89, 0xc8, 0x69, 0x85, 0xfe, 0x53, + 0xfe, 0x74, 0x94, 0x7d, 0x19, 0xb3, 0xc3, 0xa5, 0x06, 0x6d, 0xee, 0xa8, + 0xb4, 0x18, 0x2c, 0xc2, 0x4c, 0xc3, 0x30, 0x24, 0xfe, 0xc6, 0x15, 0x3f, + 0x32, 0xa4, 0x55, 0xc5, 0xab, 0x16, 0xb0, 0xe4, 0xa8, 0x3b, 0x16, 0x4c, + 0xc2, 0xe2, 0x35, 0xb9, 0xce, 0xf6, 0x7c, 0xe6, 0x22, 0xe0, 0x9e, 0xcf, + 0x84, 0x1f, 0x54, 0x58, 0x17, 0xd7, 0x78, 0x6f, 0xf0, 0xda, 0x9c, 0x0f, + 0x78, 0xa6, 0x45, 0x5b, 0xbe, 0x2e, 0x47, 0xb0, 0xa2, 0xf1, 0xa9, 0x22, + 0x71, 0x70, 0x4c, 0x55, 0x40, 0x3e, 0xfa, 0x90, 0x8a, 0x30, 0xc4, 0x63, + 0x44, 0x39, 0xa9, 0xe8, 0xa8, 0x32, 0xb2, 0xd4, 0x30, 0xdb, 0x83, 0xbb, + 0x98, 0xc5, 0x79, 0xe5, 0xec, 0x14, 0xc4, 0x9d, 0xd4, 0xf6, 0xaa, 0xcd, + 0xd4, 0xe4, 0x54, 0x39, 0x48, 0x8b, 0x1d, 0x47, 0x99, 0x6f, 0x01, 0xd1, + 0x64, 0x33, 0x8b, 0xe1, 0x13, 0x50, 0x4f, 0x63, 0x7e, 0x32, 0xcd, 0x99, + 0xca, 0xfd, 0x72, 0x65, 0xb5, 0xf1, 0x2d, 0x13, 0x4b, 0xaf, 0xc4, 0x63, + 0xc7, 0x10, 0xd6, 0xa1, 0xc8, 0xdf, 0x44, 0xda, 0x35, 0x0c, 0x3e, 0x0b, + 0xe1, 0x28, 0xa9, 0x72, 0xc6, 0x37, 0x91, 0x1b, 0xa0, 0xc6, 0x62, 0x8a, + 0xe1, 0x7f, 0xf8, 0x20, 0xc3, 0x2c, 0x11, 0xab, 0x2b, 0xba, 0x5b, 0xe4, + 0xc1, 0x13, 0x86, 0x12, 0x15, 0xfa, 0xe7, 0xc7, 0xce, 0x64, 0x9a, 0x72, + 0xe0, 0x19, 0x62, 0xab, 0x1e, 0xa0, 0x27, 0xcc, 0x44, 0x47, 0x2b, 0x4b, + 0xb2, 0x24, 0x13, 0xc3, 0xac, 0x3d, 0x93, 0x3a, 0xe4, 0x82, 0xd0, 0xc4, + 0x85, 0x57, 0xfd, 0xf9, 0x5e, 0xee, 0x38, 0xfc, 0x4a, 0x57, 0x55, 0xfa, + 0x74, 0x18, 0xcc, 0x40, 0x72, 0x22, 0x32, 0x3f, 0xb3, 0x20, 0x97, 0x7b, + 0xb2, 0xb0, 0x77, 0xcb, 0x4d, 0xfb, 0xde, 0xe5, 0x8c, 0x0d, 0xce, 0x7c, + 0x9c, 0x7c, 0x62, 0x73, 0x68, 0x90, 0x56, 0x6a, 0x3e, 0x7c, 0xf1, 0x89, + 0xd6, 0x32, 0x54, 0xb6, 0xe2, 0x3f, 0xbe, 0x0e, 0x6a, 0xfe, 0x73, 0x9b, + 0xf8, 0xbb, 0xed, 0xcf, 0xc9, 0x42, 0x31, 0x70, 0xe6, 0x73, 0x87, 0x69, + 0xfc, 0x55, 0x54, 0xb0, 0xd1, 0x53, 0x25, 0x62, 0x66, 0x76, 0x91, 0xe7, + 0xce, 0x97, 0x9d, 0x7c, 0xff, 0x00, 0x7b, 0xfd, 0x7c, 0x47, 0x18, 0xfb, + 0x2c, 0xcc, 0xbb, 0xc5, 0xdd, 0xe1, 0x99, 0xf0, 0xf2, 0xfd, 0xf5, 0x3d, + 0xfc, 0x7f, 0x15, 0x3b, 0xc1, 0xef, 0xd7, 0x71, 0x4a, 0x67, 0xb1, 0x9b, + 0xf6, 0x5e, 0x65, 0x88, 0x9a, 0xba, 0xbf, 0x15, 0x9e, 0xee, 0x75, 0x7b, + 0x8e, 0x44, 0xcc, 0xab, 0xef, 0x3f, 0x88, 0xfe, 0x66, 0xfa, 0xe0, 0xc6, + 0x1f, 0xfd, 0xfc, 0xe3, 0xfb, 0x1c, 0x4a, 0x4e, 0xf2, 0x7c, 0x86, 0x5e, + 0x90, 0xc9, 0x11, 0x8c, 0x9c, 0x41, 0x8b, 0xbb, 0x20, 0x83, 0x39, 0xfa, + 0xbc, 0xe2, 0xe3, 0x90, 0x48, 0x91, 0x60, 0x46, 0x09, 0x63, 0xbc, 0xef, + 0x74, 0x3c, 0x4a, 0x15, 0x12, 0x58, 0x1a, 0x24, 0x26, 0xc8, 0xf3, 0x9a, + 0x6b, 0xc7, 0x22, 0x6d, 0x42, 0x12, 0x63, 0x2d, 0xc5, 0x5b, 0x99, 0x71, + 0xb1, 0xc7, 0x05, 0xc3, 0x44, 0x62, 0x6c, 0xf0, 0xe1, 0xdb, 0x3b, 0x9f, + 0x48, 0x85, 0xac, 0xa5, 0x93, 0x1e, 0xae, 0xa3, 0x2c, 0x83, 0x8a, 0x9a, + 0xe3, 0x48, 0x4a, 0x3a, 0xa1, 0x05, 0x88, 0x90, 0xa3, 0xd8, 0xcf, 0x2f, + 0x9a, 0xe8, 0xb1, 0x34, 0x62, 0xa4, 0x9c, 0x9c, 0xe3, 0x4f, 0xf9, 0x80, + 0x92, 0x63, 0x68, 0x92, 0x21, 0x02, 0x54, 0x39, 0x40, 0xca, 0x18, 0x11, + 0x0b, 0x42, 0x76, 0xb7, 0xab, 0x0b, 0xd7, 0x12, 0x96, 0x24, 0xef, 0xe0, + 0x30, 0x1e, 0x8b, 0x9a, 0xdc, 0x4d, 0xb5, 0x30, 0x28, 0x6e, 0x06, 0xe3, + 0xd1, 0x8d, 0xe7, 0xc9, 0x37, 0xc5, 0x88, 0x66, 0xa2, 0x0d, 0x94, 0xd6, + 0x1b, 0xa1, 0x1b, 0xea, 0x42, 0xf9, 0x7f, 0x29, 0x38, 0xf8, 0x9c, 0xd2, + 0x86, 0x09, 0xa1, 0xa6, 0x82, 0x6d, 0x0f, 0x4c, 0xcc, 0x23, 0x38, 0xdb, + 0xf0, 0xf9, 0xcd, 0xf0, 0x6d, 0xbe, 0xea, 0xd7, 0x71, 0xec, 0xb6, 0x6e, + 0xef, 0x3c, 0xb9, 0xb4, 0xbb, 0x9e, 0xfd, 0x3f, 0xbd, 0x1e, 0x62, 0x39, + 0x78, 0x9b, 0x69, 0x19, 0x91, 0xf5, 0x13, 0x2b, 0x3d, 0x97, 0x82, 0x59, + 0xb1, 0xf5, 0xe0, 0x9a, 0xf3, 0x19, 0x88, 0x8c, 0xe7, 0xef, 0xee, 0x66, + 0x82, 0xb3, 0x1b, 0x5d, 0xff, 0x00, 0xd9, 0xe4, 0xc0, 0xd4, 0x46, 0x66, + 0x37, 0x09, 0x91, 0x7d, 0x9e, 0x3e, 0x79, 0xd7, 0x76, 0x5d, 0x84, 0x6b, + 0xc4, 0x3e, 0x37, 0x9d, 0x70, 0xfa, 0xc2, 0x63, 0x27, 0xc9, 0x05, 0xcf, + 0xc7, 0x8e, 0x12, 0xbb, 0xaf, 0xb1, 0x27, 0xac, 0x77, 0xb8, 0xe4, 0xeb, + 0xf6, 0x98, 0xef, 0xf4, 0xfe, 0x12, 0x78, 0xef, 0xd5, 0x78, 0xdd, 0x49, + 0x30, 0xff, 0x00, 0x77, 0x38, 0xac, 0x49, 0x45, 0xd4, 0x61, 0x8a, 0x37, + 0xfd, 0xae, 0x18, 0x7a, 0xcb, 0xde, 0xe3, 0x3a, 0xbd, 0x77, 0xe0, 0xe1, + 0xef, 0xbf, 0x7e, 0xaa, 0x31, 0x70, 0x6f, 0x6f, 0x18, 0x2a, 0x66, 0x3f, + 0x83, 0xda, 0xcd, 0x42, 0xc5, 0x5e, 0xf9, 0xd9, 0x5f, 0xf4, 0xea, 0x3d, + 0xfa, 0xe0, 0x90, 0x23, 0xc2, 0xa6, 0xf3, 0x72, 0x45, 0x79, 0xf3, 0xf2, + 0xe7, 0x33, 0x15, 0xeb, 0x14, 0x78, 0xf9, 0xfd, 0x6b, 0xfb, 0xbd, 0x77, + 0xfd, 0xf1, 0xbe, 0x2c, 0x5e, 0x9d, 0x11, 0xde, 0x05, 0xc6, 0x7c, 0x66, + 0xc6, 0xb9, 0xdb, 0xd7, 0xf7, 0xdf, 0x15, 0x55, 0x8c, 0xdf, 0x8f, 0x82, + 0xbe, 0x49, 0x82, 0xa3, 0x34, 0xff, 0x00, 0x6f, 0xaf, 0xd0, 0xc1, 0xbf, + 0xae, 0x5e, 0x26, 0x3b, 0xc9, 0x31, 0x68, 0xdc, 0x64, 0x22, 0xa6, 0xdb, + 0xe6, 0xf2, 0x4e, 0x22, 0x6b, 0xe3, 0xce, 0xf1, 0x8f, 0x74, 0xf7, 0x74, + 0xe4, 0xca, 0x1a, 0xcc, 0x66, 0x48, 0xbd, 0xf7, 0x57, 0x99, 0xcc, 0x45, + 0x4c, 0x7d, 0x67, 0xee, 0xb3, 0x31, 0xc7, 0xc4, 0x58, 0x65, 0x9a, 0x90, + 0x6b, 0xcc, 0xfd, 0x44, 0xd5, 0xf2, 0x9b, 0x41, 0xe6, 0xce, 0xe2, 0xaa, + 0xd6, 0x4a, 0x1a, 0x9e, 0xf9, 0x15, 0x34, 0x16, 0x5e, 0x3c, 0x13, 0xf2, + 0xe7, 0x3c, 0x98, 0x99, 0x91, 0xaa, 0xb5, 0x86, 0x5e, 0x85, 0xc5, 0x4d, + 0xc3, 0xe7, 0x80, 0xd4, 0xb3, 0x64, 0x18, 0x8e, 0xfd, 0xbb, 0xee, 0x7c, + 0xbc, 0x8e, 0xa7, 0x52, 0xe2, 0x34, 0x7c, 0x47, 0x92, 0x0b, 0x71, 0xc7, + 0x1c, 0xc4, 0x46, 0x5a, 0x32, 0x9a, 0x92, 0xd7, 0x09, 0xf3, 0x52, 0x0a, + 0x60, 0xc2, 0x23, 0xca, 0xef, 0xbf, 0xfd, 0xe7, 0x4d, 0x25, 0xf2, 0x58, + 0xd0, 0x88, 0x8a, 0x20, 0x38, 0xe4, 0x74, 0x94, 0xa8, 0x81, 0x55, 0xa6, + 0x40, 0x18, 0x84, 0xe4, 0xff, 0x00, 0x35, 0x59, 0x07, 0x87, 0x6e, 0xa0, + 0x1c, 0x90, 0x5a, 0xc6, 0x21, 0x33, 0x06, 0xc4, 0x78, 0x35, 0x78, 0x0a, + 0x16, 0x05, 0x78, 0x25, 0xcc, 0x31, 0x11, 0x2e, 0x98, 0xae, 0xab, 0x31, + 0xde, 0x31, 0x3c, 0xd2, 0xe6, 0x3c, 0x05, 0x69, 0xc5, 0xae, 0x8c, 0xf8, + 0x45, 0x38, 0x2b, 0x04, 0x95, 0xb7, 0x00, 0x61, 0xfb, 0xd2, 0x5c, 0x12, + 0x72, 0x6d, 0xdc, 0xfa, 0x96, 0x92, 0x48, 0x2a, 0xdf, 0x33, 0xf0, 0xf2, + 0x67, 0x7d, 0x51, 0x96, 0x73, 0xff, 0x00, 0x74, 0xc1, 0x9c, 0xf1, 0x36, + 0x15, 0x03, 0xeb, 0xfa, 0xfd, 0xe7, 0x93, 0x47, 0xcf, 0x58, 0xa7, 0xde, + 0x7f, 0x7e, 0x3a, 0x8b, 0xcd, 0xf8, 0x89, 0x7f, 0x7f, 0x37, 0x88, 0x78, + 0x1e, 0xf6, 0x74, 0xd1, 0x79, 0xfa, 0x8e, 0xb3, 0x1c, 0x88, 0xc6, 0x27, + 0x67, 0x57, 0x29, 0xd3, 0xff, 0x00, 0x69, 0x39, 0x96, 0x83, 0xfe, 0xe5, + 0xf9, 0xb9, 0x8e, 0xa2, 0xa3, 0x8b, 0x75, 0x70, 0xe2, 0x32, 0x17, 0x2b, + 0xb9, 0xdd, 0x79, 0xe4, 0xdb, 0x6c, 0x65, 0xf9, 0xcc, 0xe2, 0xa6, 0x07, + 0x1e, 0x3b, 0xe7, 0xfe, 0x7c, 0x75, 0xc9, 0xaf, 0xd3, 0xe7, 0x3f, 0x7e, + 0x6a, 0x27, 0x83, 0x66, 0x2f, 0x18, 0x82, 0x77, 0xd4, 0x7c, 0x6f, 0x1c, + 0xcc, 0xcb, 0x2d, 0xcc, 0x57, 0xef, 0xe6, 0xfa, 0x2f, 0xd6, 0xbf, 0x6b, + 0xf8, 0xef, 0xe7, 0xa9, 0x9e, 0xf9, 0xe3, 0xdf, 0xed, 0x1d, 0xfe, 0xbf, + 0x19, 0xe7, 0xf5, 0xe5, 0xcc, 0x9d, 0xb4, 0x44, 0x11, 0xd7, 0xaf, 0x6f, + 0x9e, 0x7e, 0xf8, 0x27, 0xd3, 0x14, 0xc2, 0xd7, 0x2f, 0x7f, 0xb5, 0xe4, + 0xeb, 0xfb, 0xd1, 0x7c, 0x96, 0x00, 0x23, 0x6c, 0xdc, 0x45, 0x13, 0xb9, + 0x7d, 0xa5, 0xf7, 0x5c, 0xec, 0x7e, 0xaf, 0x58, 0x8a, 0x8f, 0xab, 0x21, + 0x73, 0xc5, 0x47, 0x0f, 0xfe, 0xe3, 0xfb, 0xa9, 0x1c, 0x71, 0x98, 0x2c, + 0xb7, 0x1f, 0xbf, 0xb8, 0xfb, 0xf1, 0x11, 0xc6, 0x6e, 0xda, 0xd4, 0x6f, + 0xcd, 0x6b, 0x15, 0x79, 0xdf, 0x18, 0x4c, 0x95, 0x3e, 0x53, 0xb2, 0xfc, + 0x69, 0x60, 0xfc, 0x72, 0x42, 0x8b, 0x42, 0xe5, 0xc6, 0x6f, 0x6c, 0x63, + 0xef, 0xae, 0x75, 0x7e, 0x2c, 0xf6, 0xd4, 0x24, 0x4d, 0xb3, 0xde, 0x87, + 0x33, 0x11, 0xd5, 0x9a, 0xa7, 0xcd, 0xe0, 0x26, 0xb5, 0xf5, 0x0b, 0x8e, + 0xf3, 0x17, 0x66, 0x21, 0x1b, 0xbf, 0x4e, 0x17, 0xbe, 0x4c, 0x31, 0x6d, + 0xc8, 0xba, 0xf8, 0x71, 0xa3, 0x21, 0x7f, 0x53, 0x8c, 0x7a, 0x4d, 0x79, + 0xdc, 0xde, 0x75, 0x3e, 0xa3, 0xb9, 0x7a, 0x99, 0xce, 0x57, 0x36, 0xc7, + 0xdc, 0x03, 0x04, 0x0c, 0xf8, 0x6e, 0xfb, 0x9a, 0x8e, 0xd9, 0x37, 0x5d, + 0x5c, 0x1c, 0x2c, 0x4b, 0x26, 0x07, 0x09, 0x34, 0x56, 0x22, 0x88, 0x98, + 0xd9, 0xd0, 0xcf, 0xc6, 0x3e, 0x3b, 0xee, 0x49, 0x9f, 0x9f, 0x07, 0x25, + 0x0a, 0xa5, 0x2a, 0x45, 0x59, 0x07, 0xe0, 0x3f, 0x4a, 0x96, 0x22, 0x61, + 0x9e, 0x4e, 0x49, 0x97, 0xd0, 0xf3, 0x91, 0x90, 0x55, 0xe4, 0x69, 0x4c, + 0x00, 0x9a, 0x05, 0x60, 0xb1, 0x60, 0xa9, 0x91, 0xfe, 0x4b, 0xe5, 0xbc, + 0x82, 0x89, 0xb2, 0xa8, 0xb9, 0xa5, 0x87, 0x1c, 0x20, 0x10, 0x5c, 0x20, + 0x71, 0x72, 0x1d, 0x55, 0xa2, 0xe7, 0x9d, 0x15, 0x51, 0xad, 0x44, 0xb8, + 0xc9, 0x9d, 0xf6, 0xec, 0x87, 0x3d, 0xf7, 0x04, 0x47, 0x66, 0xca, 0xec, + 0xdc, 0xf2, 0x97, 0x43, 0x46, 0x82, 0xcc, 0xd0, 0xef, 0x7b, 0x12, 0x22, + 0x27, 0x83, 0x17, 0x99, 0x2a, 0x8b, 0xd4, 0xb9, 0xf3, 0x86, 0xe2, 0xf3, + 0xc2, 0xae, 0xa9, 0x8b, 0xce, 0x3e, 0x7d, 0x0e, 0x9e, 0x89, 0xe4, 0xee, + 0x37, 0x3f, 0xde, 0xcf, 0xcf, 0x9e, 0xfb, 0xbf, 0xdc, 0xfb, 0xf1, 0xe2, + 0x67, 0xd7, 0x08, 0xc5, 0xdb, 0x72, 0x9f, 0xac, 0x4c, 0x4c, 0xe6, 0x63, + 0x5c, 0xc5, 0x5a, 0x6b, 0x31, 0xda, 0x77, 0xaf, 0x1a, 0x79, 0xdf, 0x8b, + 0xf1, 0x90, 0x2b, 0xe5, 0xcf, 0x08, 0xd9, 0xd5, 0xfc, 0xfc, 0x91, 0x1e, + 0x1f, 0xae, 0x6a, 0xf7, 0x88, 0xc9, 0x66, 0x7e, 0x0a, 0x3c, 0xcf, 0x7c, + 0x95, 0x82, 0x88, 0xcb, 0xff, 0x00, 0x73, 0x33, 0x06, 0x88, 0x2e, 0x39, + 0x89, 0xf2, 0x47, 0xc3, 0xf5, 0xef, 0x9f, 0xdd, 0xf5, 0xfa, 0xe4, 0xfd, + 0xf9, 0x04, 0xe3, 0xe7, 0x59, 0x9c, 0x77, 0x9f, 0x4d, 0xcf, 0x64, 0x7b, + 0xcf, 0x8d, 0x7f, 0x33, 0xef, 0x10, 0x6e, 0x58, 0x32, 0x93, 0x8b, 0x8f, + 0xed, 0xde, 0x2a, 0xf9, 0x37, 0x17, 0xfc, 0x54, 0xdc, 0x2c, 0x7f, 0x38, + 0x92, 0xf9, 0x8c, 0x6c, 0x71, 0xe4, 0x73, 0xf3, 0x58, 0x73, 0xd5, 0xf0, + 0x62, 0x26, 0x36, 0xaf, 0xb2, 0x2a, 0x6a, 0x18, 0x23, 0xa8, 0x00, 0xbd, + 0xff, 0x00, 0x61, 0xfd, 0xff, 0x00, 0x4f, 0xd2, 0x04, 0xbc, 0xd3, 0x0c, + 0xc0, 0xd7, 0xd8, 0x33, 0xfc, 0x73, 0xb8, 0xde, 0x27, 0xb8, 0xf0, 0x18, + 0x8b, 0xaf, 0x5d, 0x73, 0xcc, 0x58, 0x3b, 0xfc, 0x18, 0xba, 0xf9, 0xaf, + 0x3c, 0x98, 0xc0, 0xbe, 0xba, 0xf9, 0xcf, 0xf7, 0xc4, 0xd2, 0x09, 0x6d, + 0xa7, 0xcf, 0x95, 0xc5, 0xdd, 0x56, 0x23, 0x97, 0xfb, 0x47, 0xcb, 0x77, + 0xdf, 0xe9, 0x37, 0x27, 0x33, 0x03, 0x11, 0x8f, 0x37, 0x13, 0xe0, 0x8a, + 0xf0, 0xd5, 0x47, 0x27, 0xef, 0x74, 0x98, 0x17, 0x77, 0x07, 0x77, 0xf9, + 0xe4, 0x4c, 0x4d, 0xc3, 0x6f, 0xad, 0x33, 0xda, 0xcc, 0x15, 0x11, 0x15, + 0x7c, 0xbc, 0x90, 0xda, 0x61, 0xa9, 0xbb, 0x8f, 0x8f, 0x4c, 0xcd, 0xdf, + 0x04, 0x40, 0xb8, 0x4b, 0xaa, 0x18, 0x83, 0xbb, 0xc3, 0x06, 0xb7, 0xc2, + 0x16, 0x66, 0x87, 0x2a, 0x90, 0x5c, 0x46, 0x9b, 0x9d, 0xb5, 0x5c, 0x96, + 0x06, 0x76, 0xc7, 0x91, 0x4d, 0xd6, 0x2e, 0x07, 0xca, 0x57, 0x04, 0xed, + 0x47, 0xcc, 0x5d, 0xc1, 0xec, 0x9c, 0x6c, 0xac, 0x70, 0x26, 0xea, 0x31, + 0x1d, 0x4c, 0xba, 0x10, 0x35, 0x64, 0x1e, 0xa7, 0x99, 0xa3, 0x26, 0x14, + 0xb2, 0xfe, 0x6e, 0xb5, 0x19, 0xa8, 0xe1, 0xc6, 0x7e, 0x4d, 0xb3, 0x2f, + 0x6f, 0x89, 0xb6, 0x25, 0x26, 0x78, 0x49, 0x68, 0x09, 0x54, 0x88, 0x03, + 0x31, 0x2e, 0x01, 0x94, 0xd7, 0x29, 0x04, 0xc9, 0xa8, 0x63, 0x87, 0x7d, + 0xd7, 0x0c, 0xd6, 0x2c, 0xee, 0x3f, 0x58, 0xfb, 0x22, 0x41, 0x26, 0x55, + 0xb7, 0xfc, 0x9c, 0xba, 0x5d, 0x26, 0x3a, 0x89, 0x39, 0x42, 0x84, 0x53, + 0x92, 0xb7, 0xda, 0x44, 0xe7, 0x9b, 0x0c, 0x49, 0x2b, 0x12, 0xf2, 0x50, + 0xa7, 0x0d, 0x10, 0x02, 0xe5, 0x14, 0x26, 0xc9, 0x43, 0x35, 0x5e, 0xff, + 0x00, 0x14, 0x6f, 0xdf, 0xef, 0xde, 0x39, 0x8e, 0xae, 0x1f, 0xa8, 0x8a, + 0xf3, 0x3b, 0xce, 0x60, 0x8e, 0x3f, 0x37, 0x87, 0x33, 0xa6, 0x22, 0x2b, + 0xaa, 0xeb, 0x13, 0xcf, 0xd3, 0xa2, 0x49, 0xee, 0x3e, 0xaf, 0xce, 0x31, + 0xc5, 0xf1, 0xd6, 0x23, 0xf7, 0xfc, 0xb3, 0x2f, 0xbc, 0xb8, 0x31, 0x9f, + 0x1f, 0xfb, 0x33, 0xdc, 0xf4, 0x72, 0x6e, 0x96, 0x8f, 0x5f, 0x5f, 0x33, + 0x47, 0xcf, 0x23, 0xe6, 0x86, 0xbd, 0x4b, 0xf5, 0xfb, 0x72, 0xff, 0x00, + 0xbf, 0xbf, 0x77, 0xfb, 0x75, 0xca, 0xea, 0x20, 0x8f, 0x9a, 0x9c, 0xf8, + 0x75, 0x8a, 0xe9, 0x78, 0x66, 0xbf, 0x9a, 0xf3, 0x5d, 0x4f, 0xe6, 0xb9, + 0xdd, 0xcc, 0xeb, 0xc7, 0x58, 0xc5, 0x7f, 0x75, 0xf7, 0xf3, 0xe7, 0xf6, + 0xeb, 0x8f, 0x97, 0xa8, 0xcf, 0x88, 0x3f, 0xb5, 0x5b, 0x1e, 0x78, 0xcf, + 0x73, 0x35, 0xba, 0xef, 0xf4, 0x25, 0xeb, 0x97, 0xfd, 0xeb, 0xfb, 0xfc, + 0xf1, 0x67, 0xf5, 0x8d, 0x02, 0xeb, 0xeb, 0x1f, 0xfb, 0xcd, 0x33, 0xb9, + 0x3f, 0xee, 0xff, 0x00, 0xf3, 0xad, 0x67, 0x3f, 0x32, 0xdf, 0xe3, 0xf5, + 0x99, 0xe7, 0x6d, 0x79, 0x8f, 0x89, 0x93, 0xc4, 0x6d, 0x63, 0xbe, 0x67, + 0xab, 0x23, 0x57, 0x97, 0x74, 0xd6, 0x37, 0x98, 0x6f, 0x86, 0x3d, 0x4f, + 0xbc, 0x4c, 0xc4, 0x4c, 0xa3, 0xf9, 0x72, 0xf2, 0x20, 0xd4, 0xb2, 0x03, + 0x78, 0x98, 0x2c, 0x3a, 0x9d, 0x8f, 0xcf, 0x25, 0x92, 0x53, 0x58, 0x9e, + 0xbf, 0x49, 0x96, 0x7c, 0x7d, 0x49, 0x8a, 0x63, 0x05, 0x30, 0x69, 0x03, + 0x5b, 0xf4, 0xfc, 0x71, 0x93, 0xcb, 0xd1, 0x47, 0xa9, 0xb8, 0xd5, 0x9a, + 0xf3, 0xcf, 0xe8, 0x98, 0x51, 0x98, 0x9a, 0x23, 0x1d, 0x98, 0x84, 0xbe, + 0x42, 0x44, 0x33, 0xef, 0x0b, 0xe1, 0xb6, 0xc9, 0x6a, 0x7e, 0xb3, 0x8a, + 0x52, 0xb2, 0xed, 0x0b, 0x35, 0x68, 0x67, 0x3d, 0xc8, 0xf0, 0x9b, 0xbc, + 0x4c, 0xe2, 0xed, 0x32, 0x63, 0x6c, 0xc1, 0x2c, 0xeb, 0x0a, 0xd4, 0x07, + 0x8b, 0x88, 0xf0, 0x84, 0x79, 0xa9, 0x4a, 0xe3, 0x71, 0x55, 0xea, 0x5b, + 0x8b, 0x88, 0xd6, 0x2e, 0xed, 0x63, 0x33, 0x35, 0xb9, 0x17, 0x30, 0x07, + 0x59, 0x3f, 0x5a, 0xdc, 0x5f, 0x22, 0x12, 0x72, 0xb5, 0x37, 0xd0, 0x4b, + 0x93, 0x35, 0x0b, 0xab, 0xae, 0x7d, 0x28, 0xb9, 0x0e, 0xf3, 0x69, 0x74, + 0xbf, 0x65, 0x07, 0x04, 0x76, 0xef, 0xcc, 0x63, 0xe2, 0x67, 0x46, 0x73, + 0x37, 0x3c, 0xb0, 0xd3, 0xe1, 0xa9, 0xcd, 0xc5, 0x45, 0x30, 0x4e, 0xc6, + 0x89, 0xe5, 0xd3, 0xa4, 0x79, 0x93, 0xdc, 0x14, 0xe3, 0x52, 0x7e, 0x26, + 0x00, 0x8a, 0x85, 0x49, 0x75, 0x1a, 0x17, 0xac, 0x40, 0xd5, 0x62, 0x0c, + 0x2d, 0x54, 0xbb, 0x46, 0x48, 0x05, 0x21, 0xdc, 0x41, 0xf6, 0x86, 0xcb, + 0x08, 0x81, 0xe0, 0x80, 0x00, 0x00, 0x3f, 0xf8, 0x48, 0xc7, 0x92, 0x4e, + 0x18, 0x01, 0x99, 0x59, 0x05, 0x69, 0x97, 0x8a, 0xa4, 0x19, 0x14, 0x23, + 0x85, 0x45, 0x32, 0xc9, 0x99, 0x1c, 0xff, 0x00, 0x1d, 0x7c, 0x4f, 0xcd, + 0xbe, 0x79, 0x26, 0x52, 0x75, 0x82, 0x1a, 0xdd, 0x5f, 0xa8, 0x10, 0xde, + 0x38, 0xb0, 0x8c, 0x16, 0x61, 0x02, 0x6a, 0x26, 0x31, 0x13, 0xa3, 0xab, + 0xef, 0xff, 0x00, 0xce, 0xcf, 0xec, 0xf9, 0xfc, 0xf3, 0xc7, 0xab, 0xeb, + 0xde, 0xff, 0x00, 0x0e, 0x39, 0x5f, 0xad, 0x75, 0xd7, 0xfd, 0xe7, 0xf4, + 0xeb, 0x5f, 0xdd, 0x6b, 0x81, 0xed, 0xfd, 0xdf, 0xef, 0xf1, 0x1c, 0xf3, + 0xf1, 0x9f, 0x5a, 0xfd, 0xff, 0x00, 0x9e, 0x6b, 0xdc, 0xf5, 0x23, 0x5d, + 0x9f, 0xdf, 0xb3, 0x9d, 0x7e, 0x0f, 0xbc, 0x7c, 0x7e, 0x39, 0xfd, 0xfe, + 0x37, 0xe3, 0xe5, 0xe7, 0xf7, 0xfb, 0xfd, 0xfd, 0xf9, 0xe1, 0xeb, 0x38, + 0x3f, 0x12, 0xff, 0x00, 0xe9, 0x7c, 0xa8, 0x23, 0x1a, 0x3a, 0xfa, 0xc6, + 0x37, 0xd5, 0x98, 0x39, 0x7d, 0xcc, 0xc7, 0xaf, 0xd7, 0x7f, 0xc7, 0x9e, + 0x6f, 0xf8, 0xd1, 0x08, 0xe3, 0x73, 0x3b, 0xf5, 0x7c, 0x88, 0xc7, 0x4f, + 0xa1, 0x63, 0x15, 0xaf, 0xee, 0x57, 0x8d, 0x45, 0x97, 0x8d, 0xf9, 0x57, + 0xfa, 0x45, 0x9d, 0x1c, 0x68, 0x71, 0x44, 0x1a, 0x2b, 0x0e, 0xa3, 0x5a, + 0x11, 0xf8, 0xe4, 0xe2, 0x63, 0xa6, 0xf6, 0x38, 0x87, 0x73, 0x38, 0xeb, + 0x8c, 0x75, 0x96, 0x9a, 0x6e, 0xd3, 0xeb, 0xff, 0x00, 0x39, 0x34, 0x33, + 0x13, 0x99, 0x33, 0x8a, 0x1a, 0x83, 0xaf, 0x52, 0xac, 0x2b, 0x92, 0x08, + 0x50, 0xfc, 0xc7, 0x6e, 0x9b, 0xf6, 0x39, 0xe6, 0xa6, 0xcd, 0xce, 0x89, + 0xd5, 0x8d, 0xfc, 0x35, 0x58, 0xe4, 0x4d, 0x9b, 0xf3, 0xa8, 0x93, 0x6e, + 0xe4, 0xae, 0xd4, 0xed, 0x67, 0x43, 0x8d, 0xf7, 0x41, 0x32, 0xec, 0xae, + 0xed, 0x33, 0x31, 0xd7, 0x8d, 0x45, 0xe2, 0x6e, 0xd6, 0x0a, 0x98, 0x9f, + 0x33, 0xa4, 0x96, 0xcf, 0x38, 0x3a, 0xaf, 0x30, 0xa3, 0x23, 0xe0, 0x9d, + 0xf2, 0x62, 0x85, 0xb5, 0x8d, 0x45, 0xb1, 0xa8, 0xb7, 0x58, 0x2f, 0x19, + 0x25, 0x8c, 0xe2, 0x22, 0xca, 0x1c, 0x0c, 0x5e, 0xa5, 0x81, 0x53, 0xab, + 0xe4, 0x28, 0x4b, 0x1d, 0xee, 0x2f, 0xc6, 0x9e, 0xe8, 0xee, 0x82, 0x5b, + 0x54, 0x60, 0xa9, 0xa3, 0x17, 0x6c, 0x45, 0x12, 0xf8, 0x98, 0x8e, 0x2a, + 0x90, 0x31, 0x8f, 0xcd, 0xc6, 0x16, 0x9c, 0x98, 0xbc, 0x72, 0x61, 0xb3, + 0x52, 0xc1, 0xc4, 0xf7, 0xb8, 0x3c, 0x55, 0xf6, 0x12, 0xa3, 0x7a, 0x21, + 0xd8, 0x55, 0xbf, 0x4f, 0xc7, 0x09, 0x4c, 0x78, 0xeb, 0x1f, 0xf4, 0x8b, + 0xbe, 0xb8, 0x06, 0x25, 0xaa, 0x93, 0x48, 0x5b, 0x00, 0xd2, 0x8a, 0x18, + 0x38, 0x17, 0xe4, 0x1f, 0x2d, 0xc0, 0xd9, 0xb2, 0x72, 0x2f, 0xfe, 0x25, + 0xe7, 0xcc, 0x30, 0x12, 0xd3, 0x39, 0x29, 0x84, 0x8c, 0x58, 0x9c, 0x92, + 0x84, 0xa9, 0xa9, 0x4d, 0x4d, 0x2d, 0x25, 0x52, 0xb2, 0x33, 0x0e, 0xa0, + 0x88, 0x35, 0xdf, 0x9e, 0x79, 0xbc, 0xff, 0x00, 0x6f, 0xbe, 0x33, 0x55, + 0x4e, 0xfe, 0xf3, 0xf5, 0x1f, 0xb6, 0xf8, 0x4b, 0xae, 0xbf, 0xf0, 0xef, + 0xea, 0x6b, 0xdf, 0x19, 0xfe, 0x75, 0xf5, 0xd7, 0xf4, 0xf3, 0xce, 0xf9, + 0xeb, 0x32, 0x7e, 0xa5, 0xfc, 0x64, 0xf3, 0xeb, 0x9a, 0xfd, 0xbf, 0xe9, + 0x7e, 0xab, 0xcd, 0x73, 0x3b, 0x8f, 0xdb, 0xfb, 0xeb, 0x8f, 0xc6, 0x62, + 0xff, 0x00, 0x6f, 0xeb, 0x84, 0xae, 0x3e, 0x27, 0xee, 0x71, 0x3d, 0xd4, + 0x44, 0x1e, 0xd7, 0x19, 0xe4, 0xa8, 0xdf, 0x8c, 0xbf, 0x39, 0x3b, 0xbf, + 0x34, 0xee, 0xbf, 0xbf, 0xdf, 0xc7, 0x31, 0x2f, 0xee, 0xbf, 0xdf, 0x47, + 0x33, 0x3e, 0x11, 0x3c, 0xd0, 0xd7, 0xcb, 0x99, 0x0d, 0x73, 0x32, 0x6b, + 0x1b, 0xf9, 0xfc, 0x27, 0xe7, 0x8d, 0x63, 0x39, 0xc5, 0x3f, 0xb4, 0xd1, + 0xd4, 0xb8, 0x49, 0xe2, 0xa4, 0x6e, 0xc2, 0xf2, 0xdf, 0xc1, 0x33, 0x8f, + 0x53, 0xea, 0xef, 0x1f, 0x77, 0xe2, 0xbc, 0xa3, 0xb3, 0x5b, 0xe4, 0xcd, + 0x54, 0x38, 0xf0, 0x89, 0xb4, 0xcc, 0x67, 0x1b, 0x93, 0xcd, 0x84, 0x51, + 0xfa, 0x63, 0x2c, 0x51, 0xbf, 0x1a, 0x9b, 0xe2, 0xbe, 0xe7, 0x4d, 0x7e, + 0x58, 0x9b, 0xa8, 0xd8, 0x95, 0xdb, 0x32, 0xec, 0x84, 0x35, 0x02, 0xbc, + 0xfe, 0xaf, 0x8e, 0xb8, 0x50, 0x5a, 0xce, 0x31, 0x80, 0x98, 0xb6, 0x01, + 0x89, 0x36, 0x61, 0x4e, 0x67, 0xb8, 0x1d, 0x55, 0x8a, 0xd8, 0x9d, 0x5a, + 0xf7, 0x8b, 0xe4, 0x47, 0x68, 0xb3, 0x1a, 0xc9, 0x93, 0xe4, 0x48, 0xf4, + 0x91, 0xc9, 0x13, 0x0e, 0xcf, 0x71, 0x0b, 0x22, 0x48, 0x93, 0x12, 0x5c, + 0x84, 0xac, 0xf0, 0xee, 0x55, 0x0b, 0x8d, 0xc9, 0x52, 0x44, 0xef, 0x2c, + 0xeb, 0xcc, 0x4b, 0x32, 0xdc, 0x63, 0x73, 0x4a, 0x2d, 0x18, 0x9f, 0x1e, + 0x37, 0x14, 0x37, 0x1b, 0x33, 0x19, 0x99, 0x60, 0x9a, 0x8c, 0x62, 0x8b, + 0x70, 0xf1, 0x88, 0x8a, 0x89, 0xef, 0x41, 0xa5, 0x89, 0xde, 0xd8, 0x57, + 0x97, 0x81, 0xd2, 0x46, 0x5a, 0x8d, 0x49, 0x14, 0x77, 0xe9, 0xdf, 0x23, + 0x29, 0xb7, 0x7e, 0x63, 0xb1, 0xc2, 0xfc, 0x56, 0xe7, 0x8a, 0x4c, 0x93, + 0x2a, 0x55, 0xcc, 0x94, 0x31, 0xde, 0xbd, 0x5f, 0x71, 0xb2, 0x3e, 0x0f, + 0x67, 0x52, 0xf6, 0xd7, 0xef, 0x89, 0x57, 0xc4, 0xe0, 0xc6, 0xa2, 0xbe, + 0x0a, 0xf8, 0x9c, 0x3c, 0x17, 0xb9, 0xed, 0x85, 0x26, 0x5c, 0x67, 0x12, + 0x42, 0x54, 0xa6, 0xd5, 0x82, 0xed, 0xc4, 0x62, 0x86, 0x6f, 0x20, 0x5c, + 0xe3, 0xcc, 0x70, 0xca, 0xa6, 0xb8, 0x40, 0xb0, 0x51, 0x16, 0x63, 0x13, + 0x42, 0x89, 0x6e, 0x76, 0x41, 0x06, 0x40, 0xae, 0xa0, 0xb4, 0x26, 0xbf, + 0xfc, 0x25, 0x32, 0xee, 0x95, 0xce, 0x10, 0xc2, 0xa1, 0x4f, 0x17, 0x8e, + 0x69, 0x4e, 0x34, 0x25, 0xee, 0xa8, 0xec, 0x50, 0xd6, 0x6c, 0xee, 0x97, + 0xca, 0x61, 0xa5, 0x4c, 0x9c, 0x08, 0xf8, 0xfe, 0xc5, 0x6b, 0xd6, 0xb9, + 0xba, 0x89, 0x8d, 0xe6, 0x3f, 0x7b, 0xd5, 0x7d, 0xf3, 0xd6, 0x6a, 0x2e, + 0x2e, 0xfc, 0x31, 0xab, 0xf8, 0xf3, 0xc9, 0xbc, 0x7c, 0x5f, 0xf7, 0xf3, + 0xca, 0x95, 0xfe, 0xfd, 0x5c, 0x7a, 0xf5, 0xc2, 0x33, 0xef, 0xc7, 0x97, + 0x5f, 0xdd, 0xdf, 0x30, 0xfb, 0xde, 0xf3, 0xb0, 0xc6, 0x7f, 0x5e, 0xa7, + 0x92, 0x04, 0xcf, 0xc7, 0x5e, 0x2e, 0x22, 0x26, 0x2f, 0x44, 0x44, 0xf3, + 0x17, 0xf1, 0xee, 0x60, 0x9d, 0xc7, 0xe2, 0xfa, 0xcf, 0x09, 0x9b, 0xd4, + 0xfe, 0xbf, 0x18, 0xc6, 0x27, 0x38, 0xdd, 0xff, 0x00, 0x6a, 0x7b, 0x8f, + 0x5a, 0xdd, 0x5f, 0x7c, 0xf1, 0x35, 0xf2, 0xb7, 0x19, 0x9c, 0x6c, 0x7f, + 0x52, 0x39, 0xfa, 0xff, 0x00, 0x67, 0xfb, 0xdf, 0x3d, 0xd3, 0x82, 0x3c, + 0xd5, 0x7b, 0xcc, 0x33, 0x0f, 0x80, 0xe2, 0xc1, 0xf8, 0xbd, 0xb1, 0x92, + 0x5c, 0x79, 0x64, 0x98, 0x99, 0x32, 0xd0, 0xbd, 0xca, 0x91, 0xf1, 0xe4, + 0x34, 0xdc, 0xb1, 0x33, 0x3a, 0x63, 0x1d, 0x6a, 0x6f, 0xc0, 0x42, 0x63, + 0xc9, 0x11, 0x98, 0xbe, 0x1a, 0x85, 0xec, 0x19, 0x88, 0x44, 0xf1, 0x5f, + 0xc4, 0x66, 0x79, 0x86, 0x35, 0x1b, 0x9b, 0x95, 0x9b, 0xc0, 0xdf, 0x57, + 0xfa, 0x3d, 0x10, 0x77, 0xa8, 0x22, 0xda, 0x4f, 0x1f, 0xdc, 0x50, 0xcc, + 0xc9, 0x10, 0x01, 0xe9, 0x02, 0x32, 0x7e, 0x0d, 0xe6, 0xe2, 0x40, 0x4a, + 0x66, 0x70, 0x97, 0x88, 0x2e, 0x6b, 0x1d, 0x1e, 0x38, 0xaf, 0x64, 0x15, + 0xe5, 0x70, 0x4f, 0x57, 0x79, 0x1c, 0xa6, 0x27, 0x90, 0xd4, 0xbd, 0xd5, + 0x6e, 0x18, 0xfc, 0x4c, 0x8c, 0x85, 0x13, 0x9e, 0x1d, 0x52, 0x31, 0x11, + 0x78, 0x66, 0x13, 0xb4, 0x97, 0xac, 0xfc, 0x65, 0xde, 0x3a, 0x4e, 0x97, + 0x10, 0xac, 0xeb, 0x17, 0x9e, 0x6d, 0x67, 0x13, 0xe5, 0x49, 0x12, 0xd4, + 0x4e, 0x27, 0xa3, 0xbe, 0x45, 0x36, 0x96, 0x3e, 0xa6, 0x7f, 0x66, 0xe1, + 0x82, 0x22, 0xaf, 0x90, 0x8c, 0x2a, 0x11, 0xb9, 0x88, 0x70, 0x4c, 0x36, + 0x2c, 0x4c, 0x7c, 0x9c, 0xed, 0xd3, 0x39, 0xce, 0x6c, 0x2a, 0x90, 0xfd, + 0x63, 0x7c, 0x19, 0x4d, 0x47, 0xe9, 0xe8, 0x89, 0x62, 0x08, 0x0b, 0xe0, + 0x1b, 0x09, 0xa3, 0xde, 0x44, 0x38, 0x3e, 0x9a, 0xc7, 0x88, 0xa9, 0x09, + 0xf9, 0x6b, 0x6e, 0x22, 0xfe, 0x3d, 0x37, 0xcc, 0x79, 0x23, 0x4b, 0xbd, + 0x31, 0x17, 0x5a, 0x67, 0x7a, 0xe3, 0x77, 0xe8, 0xf3, 0x40, 0x7a, 0xd4, + 0xd6, 0xf3, 0xa5, 0xbb, 0x96, 0x2d, 0x13, 0x1e, 0x30, 0x49, 0x3d, 0xe0, + 0xf3, 0x75, 0x33, 0xe4, 0x20, 0x96, 0x39, 0x44, 0x0e, 0x5b, 0x65, 0x80, + 0x8b, 0x1c, 0x6d, 0x10, 0x30, 0x28, 0xe2, 0x54, 0xac, 0x84, 0x18, 0x3c, + 0x43, 0x95, 0x09, 0x0c, 0x5c, 0x25, 0x80, 0x42, 0x8f, 0xfe, 0x45, 0xd0, + 0x35, 0xd3, 0x2e, 0xc3, 0x3f, 0x99, 0xa9, 0xf8, 0x88, 0xbb, 0x24, 0x59, + 0x24, 0x80, 0x5c, 0xa2, 0xb0, 0x00, 0x19, 0x94, 0x8f, 0xe6, 0x3e, 0x7f, + 0xb8, 0xef, 0x98, 0xed, 0xaf, 0x78, 0xfe, 0x66, 0xd9, 0xfc, 0x4a, 0x0d, + 0x7f, 0xeb, 0x64, 0xef, 0xf9, 0x3f, 0x5e, 0x4e, 0x7c, 0xa3, 0xd7, 0xba, + 0x8a, 0xf8, 0xa9, 0xc9, 0xcb, 0xb8, 0x7c, 0x7c, 0xe6, 0xef, 0xd5, 0x7e, + 0x79, 0xf1, 0xb2, 0xea, 0x13, 0x33, 0xf1, 0xd9, 0x94, 0x3a, 0x83, 0xf1, + 0x67, 0xee, 0x7e, 0xb1, 0xa3, 0xf5, 0x19, 0x26, 0xf7, 0x1a, 0x68, 0xf5, + 0xde, 0x5e, 0xd8, 0xc3, 0x1c, 0xfe, 0x63, 0x7e, 0xb3, 0x99, 0x9c, 0xdc, + 0x6a, 0x66, 0xf9, 0x99, 0x85, 0x31, 0xaa, 0x7c, 0xf9, 0xa2, 0x27, 0xdc, + 0x76, 0xfe, 0x5f, 0xa8, 0xbf, 0x5e, 0xfd, 0xf7, 0x1c, 0x6f, 0x43, 0x9f, + 0x5f, 0x58, 0xfe, 0x35, 0xcf, 0xfb, 0x39, 0x9f, 0xef, 0x8f, 0xeb, 0x93, + 0x4e, 0x5c, 0x7d, 0x66, 0x69, 0xbf, 0x8d, 0xb4, 0x5f, 0x51, 0x87, 0x79, + 0x25, 0x84, 0xd6, 0xba, 0xaf, 0x47, 0x21, 0x90, 0xf7, 0x16, 0x5e, 0xf1, + 0x77, 0x11, 0x34, 0x1a, 0x39, 0x2c, 0x43, 0x13, 0x66, 0xed, 0x31, 0x1d, + 0x77, 0x38, 0xc5, 0x93, 0x56, 0xc6, 0xaa, 0x61, 0xc8, 0xff, 0x00, 0x73, + 0x7b, 0xd5, 0xca, 0xb3, 0x7f, 0x13, 0x74, 0x20, 0x47, 0xdc, 0xc6, 0x74, + 0x46, 0x79, 0x09, 0x72, 0xfd, 0x15, 0xbb, 0xf1, 0xa0, 0xa0, 0x9c, 0xc4, + 0xcd, 0xe3, 0x35, 0x50, 0xa5, 0xf9, 0x94, 0x53, 0x65, 0xd0, 0xe2, 0xc7, + 0x90, 0x8a, 0x10, 0x55, 0xb8, 0xa2, 0x61, 0x99, 0xfb, 0xd0, 0xe5, 0xb7, + 0x95, 0x2e, 0xe2, 0xe9, 0x2d, 0xa6, 0x6f, 0xd5, 0xc1, 0x3d, 0xae, 0xf3, + 0x75, 0xa4, 0x95, 0xb2, 0xd9, 0x9d, 0x66, 0xe4, 0x8c, 0x17, 0x34, 0x7d, + 0x8e, 0x4b, 0x75, 0x19, 0x5e, 0xe5, 0xa9, 0xb8, 0x8e, 0x5b, 0x21, 0x69, + 0x3a, 0x87, 0x57, 0xe1, 0x99, 0xbc, 0xb5, 0x6c, 0xc7, 0x1a, 0xc2, 0x01, + 0x56, 0x42, 0xb0, 0x93, 0x57, 0xdc, 0x4b, 0x99, 0xe9, 0xe6, 0x3d, 0xfc, + 0xb3, 0x4b, 0x63, 0x45, 0xcb, 0x89, 0x86, 0xb6, 0xb4, 0x85, 0x53, 0x53, + 0x36, 0x4f, 0x5e, 0x3c, 0x0d, 0xcc, 0x21, 0x51, 0x32, 0x5e, 0x49, 0x67, + 0xa2, 0x0a, 0x5f, 0x0c, 0xc2, 0x05, 0xb6, 0x70, 0xc9, 0xde, 0x7a, 0x2b, + 0x11, 0x15, 0x19, 0x67, 0xac, 0x5c, 0xf3, 0x23, 0x3a, 0xc7, 0xaa, 0xa6, + 0x73, 0xe2, 0xd8, 0x0c, 0x6f, 0x93, 0x12, 0x4c, 0xcc, 0x2a, 0xcd, 0xc2, + 0xec, 0xad, 0x4b, 0x0f, 0x2c, 0xb0, 0x9c, 0x4a, 0x84, 0x13, 0xf3, 0xee, + 0x35, 0x39, 0x26, 0x38, 0x30, 0x93, 0x01, 0x6c, 0x42, 0xcb, 0x11, 0x98, + 0xf8, 0xbc, 0xc6, 0x46, 0xf9, 0x31, 0x33, 0x38, 0x67, 0x63, 0x9b, 0xcd, + 0x16, 0x3f, 0x33, 0x03, 0x1c, 0xa2, 0xa0, 0x51, 0x88, 0x6b, 0xc8, 0x08, + 0x51, 0x9c, 0x9c, 0xac, 0x00, 0x73, 0x47, 0x28, 0x90, 0x10, 0x23, 0x68, + 0x5b, 0xff, 0x00, 0x91, 0x74, 0x3d, 0x10, 0xa4, 0xa2, 0xc0, 0xa0, 0xc9, + 0xb0, 0x92, 0x98, 0x81, 0x23, 0xb2, 0xa1, 0xa2, 0xd2, 0x94, 0x34, 0xb9, + 0x53, 0x4c, 0xbc, 0xea, 0x81, 0x02, 0xbe, 0x88, 0xff, 0x00, 0xf2, 0xbe, + 0xa3, 0xe3, 0x7f, 0xf4, 0xe7, 0xf3, 0x71, 0x53, 0xf7, 0xee, 0x7f, 0xaf, + 0x3f, 0x45, 0xad, 0xcf, 0x5f, 0x59, 0xae, 0xa6, 0x73, 0xc9, 0xa5, 0x35, + 0x3f, 0xcf, 0x8c, 0x7c, 0x79, 0xe4, 0xf5, 0xd4, 0x9b, 0x9f, 0xdc, 0xb4, + 0xb7, 0xfe, 0xf3, 0x18, 0xc6, 0xec, 0x81, 0xaf, 0x1a, 0x3d, 0x51, 0x89, + 0xe2, 0xea, 0xae, 0xa4, 0x8d, 0xc5, 0x97, 0xf6, 0x4a, 0xe1, 0xdf, 0x09, + 0x5b, 0x1c, 0xd5, 0xf8, 0xd9, 0x03, 0x1e, 0x5d, 0xe2, 0x9e, 0x62, 0xd4, + 0x13, 0xe8, 0x7b, 0x31, 0xb7, 0x9a, 0x1d, 0x4c, 0xb4, 0xce, 0x64, 0xc1, + 0x8d, 0xfe, 0xed, 0xc8, 0xe3, 0x11, 0xa8, 0xca, 0x63, 0xaa, 0xd7, 0x61, + 0xc5, 0xbd, 0x6c, 0x91, 0xfa, 0x19, 0x37, 0xd4, 0x3d, 0xea, 0xe5, 0x12, + 0x67, 0x09, 0xfb, 0x99, 0x5c, 0xc5, 0xcd, 0xb2, 0x9c, 0x68, 0x49, 0xae, + 0xa0, 0x1c, 0xd4, 0x69, 0x90, 0xcd, 0xa4, 0x4f, 0x8e, 0x41, 0x31, 0x09, + 0x69, 0x13, 0x9d, 0xc1, 0x11, 0xef, 0x45, 0xf9, 0xa2, 0x3c, 0xf5, 0x03, + 0x31, 0x2c, 0xe4, 0xc1, 0xda, 0xfa, 0x9a, 0x79, 0x10, 0xb1, 0xb3, 0x0d, + 0x4b, 0x2a, 0xc3, 0x13, 0x5d, 0xf9, 0xcc, 0x73, 0xaa, 0x06, 0xf7, 0x75, + 0xe6, 0x62, 0xbc, 0x50, 0xbd, 0x72, 0x6d, 0x8b, 0x5b, 0xa9, 0xac, 0x54, + 0xf4, 0xe2, 0x71, 0x86, 0x08, 0xe4, 0x0e, 0xfd, 0xb3, 0x3d, 0xe5, 0xae, + 0xba, 0xe9, 0x9d, 0x71, 0x6c, 0x4f, 0x19, 0xa7, 0x07, 0x8c, 0xde, 0x51, + 0xe3, 0x17, 0x35, 0xd5, 0xeb, 0x0d, 0x8b, 0xb9, 0x9c, 0x63, 0x1a, 0xac, + 0x0c, 0x6c, 0x8a, 0x56, 0xf5, 0xdf, 0x54, 0x2e, 0x23, 0x3a, 0xc5, 0x84, + 0x1d, 0x4b, 0xd2, 0x45, 0xba, 0x71, 0x56, 0x46, 0xc5, 0xe2, 0x45, 0x53, + 0xd7, 0x89, 0x7c, 0xc9, 0x12, 0x17, 0x24, 0xc4, 0xf1, 0x45, 0x55, 0x41, + 0xf1, 0x15, 0x9f, 0x33, 0xaf, 0x36, 0x38, 0x2c, 0xbd, 0x4b, 0x7e, 0x59, + 0x82, 0x2b, 0x29, 0xe2, 0x2b, 0xb6, 0xf9, 0x70, 0xf7, 0x95, 0xf1, 0x78, + 0xf6, 0xb9, 0x2a, 0xfd, 0xf1, 0xbf, 0x90, 0xcc, 0x2d, 0x86, 0x2a, 0xd1, + 0xd1, 0x95, 0x6a, 0x2e, 0xa2, 0xef, 0x10, 0x14, 0xf7, 0xe4, 0xde, 0xd9, + 0xad, 0x68, 0xc0, 0xf6, 0xde, 0x22, 0x04, 0x9f, 0x3f, 0xf9, 0x7c, 0x58, + 0xc8, 0x67, 0xb4, 0x3b, 0x70, 0xf5, 0x14, 0x46, 0x21, 0xdf, 0x09, 0xb3, + 0x43, 0xdc, 0xd3, 0x97, 0x7f, 0x08, 0x57, 0xd7, 0x2d, 0x6a, 0xa2, 0x06, + 0x09, 0xb5, 0x07, 0x8a, 0x33, 0x07, 0x03, 0xcb, 0x10, 0xbd, 0xf3, 0xae, + 0x34, 0x92, 0x10, 0x20, 0xe4, 0x8b, 0x85, 0x27, 0xb0, 0x0e, 0x54, 0xa4, + 0xc0, 0x8f, 0xfe, 0x6c, 0xb0, 0x02, 0x46, 0x18, 0xc0, 0x00, 0xb3, 0x23, + 0xb2, 0x56, 0x50, 0xa5, 0x0a, 0x15, 0x2a, 0xc8, 0x73, 0x12, 0x5b, 0xd7, + 0xe6, 0xd8, 0x8d, 0xd6, 0x77, 0x8b, 0x8f, 0x3c, 0xc1, 0x30, 0x18, 0xc3, + 0x3f, 0x9c, 0xab, 0x9f, 0x2b, 0xcb, 0x40, 0x8d, 0x55, 0xc5, 0x8c, 0x75, + 0x50, 0x5e, 0x3c, 0x44, 0xd7, 0x17, 0x31, 0x6f, 0xb7, 0x75, 0x9f, 0x7a, + 0x1c, 0x9e, 0xce, 0x68, 0xf8, 0xcc, 0x0c, 0x3a, 0xee, 0x6a, 0x3c, 0xb7, + 0xea, 0xf1, 0x3e, 0x34, 0x75, 0x29, 0x22, 0xe5, 0xa8, 0x4e, 0x8f, 0x28, + 0x49, 0xf1, 0x82, 0x88, 0x56, 0xe3, 0xbb, 0xcf, 0xbd, 0x72, 0xa3, 0xd7, + 0x99, 0x6e, 0x36, 0xbb, 0x1d, 0x3e, 0x97, 0x93, 0x70, 0x66, 0xb2, 0xd4, + 0x40, 0xd5, 0x33, 0xef, 0x3b, 0x94, 0xae, 0x2e, 0x62, 0xe2, 0xbc, 0x5e, + 0xe7, 0xfe, 0xeb, 0xe7, 0x8d, 0xe4, 0x36, 0x90, 0xa9, 0x04, 0x3d, 0xc6, + 0xf2, 0xc4, 0xe3, 0x73, 0xc5, 0x30, 0x89, 0xd4, 0xcf, 0x47, 0xb2, 0x85, + 0x9d, 0x77, 0x9e, 0x24, 0xe9, 0x1e, 0x41, 0xb6, 0x61, 0xce, 0x05, 0x82, + 0x37, 0x39, 0xe1, 0x44, 0x5b, 0x19, 0x21, 0x8d, 0x9d, 0x38, 0x7e, 0x2a, + 0x42, 0x79, 0x96, 0x81, 0xb8, 0xbc, 0x26, 0xb2, 0xdb, 0xf9, 0x62, 0xa6, + 0x1e, 0x46, 0x0d, 0xe4, 0xcd, 0xa4, 0xf5, 0x37, 0x17, 0x18, 0xc6, 0x90, + 0xe0, 0xcc, 0x55, 0xb2, 0xac, 0x75, 0x46, 0x35, 0xa6, 0xbb, 0xe4, 0xa8, + 0xb1, 0x16, 0x74, 0xb6, 0x65, 0x88, 0x9a, 0xbc, 0xf7, 0xed, 0x70, 0xa6, + 0x24, 0x93, 0x56, 0xe0, 0xeb, 0xc5, 0xe1, 0xc4, 0x3c, 0x66, 0xa6, 0x71, + 0x2e, 0xbc, 0x46, 0x7e, 0x16, 0xdb, 0x27, 0x80, 0xd3, 0x31, 0x04, 0x7a, + 0x22, 0x19, 0x7b, 0x9b, 0x8d, 0x34, 0xbc, 0x55, 0xde, 0xc3, 0xa2, 0x13, + 0x7a, 0xef, 0xd7, 0x6d, 0x21, 0x14, 0x4d, 0x39, 0xf4, 0x4d, 0xdc, 0x96, + 0xdf, 0x8f, 0xcf, 0x21, 0xb5, 0x0b, 0x18, 0x7c, 0x16, 0xc1, 0x96, 0x7b, + 0x89, 0xc5, 0xf6, 0xcf, 0xb6, 0x21, 0x2c, 0x9c, 0xb7, 0x11, 0xad, 0x4e, + 0x77, 0xdd, 0x59, 0xa8, 0xce, 0xea, 0x64, 0x74, 0x36, 0x81, 0x31, 0x1f, + 0x13, 0x57, 0x96, 0x72, 0x4d, 0x69, 0xb4, 0xed, 0xdc, 0x6f, 0x27, 0x22, + 0x8b, 0x90, 0x31, 0xe1, 0x59, 0x41, 0xca, 0x13, 0xe0, 0x9f, 0x02, 0x32, + 0x93, 0x05, 0x57, 0x7a, 0xcb, 0x16, 0xd1, 0x5a, 0x63, 0xcb, 0xc0, 0xa0, + 0x88, 0x95, 0x92, 0x89, 0xc3, 0xb8, 0xbb, 0xaf, 0x97, 0x97, 0xd2, 0xe6, + 0xa6, 0x1a, 0xfd, 0xcb, 0x2c, 0xf1, 0x3d, 0x5c, 0x92, 0xe5, 0x13, 0xb9, + 0x24, 0xb9, 0x19, 0xde, 0x3e, 0x71, 0x7f, 0xda, 0xbd, 0xde, 0xcd, 0x0e, + 0x26, 0x22, 0xf2, 0x70, 0x5a, 0xc8, 0x5e, 0x2c, 0x98, 0x8c, 0x30, 0x39, + 0xba, 0xc7, 0x55, 0x2d, 0x9c, 0xc8, 0xa9, 0x02, 0xdb, 0x81, 0x25, 0xbc, + 0xb2, 0x9c, 0x98, 0xe3, 0x2e, 0x70, 0x0c, 0x71, 0x23, 0x54, 0x4b, 0xff, + 0x00, 0xa0, 0x46, 0x19, 0x8d, 0xdc, 0x11, 0x02, 0xe2, 0x8c, 0x70, 0x89, + 0x70, 0x4b, 0x51, 0x68, 0xa0, 0x3c, 0x80, 0x4e, 0xa3, 0x91, 0xc4, 0x89, + 0x24, 0x60, 0xa4, 0x99, 0x20, 0x98, 0x8b, 0x81, 0xeb, 0x1d, 0xb0, 0xd9, + 0x6d, 0x93, 0x18, 0xf8, 0x82, 0x23, 0xac, 0xb8, 0x9b, 0x39, 0x31, 0xe5, + 0x0b, 0xc4, 0xf8, 0xcc, 0xdc, 0x2b, 0x13, 0xad, 0x12, 0x70, 0x43, 0x71, + 0x87, 0x50, 0xd7, 0x9b, 0x66, 0xf3, 0x75, 0xad, 0xbb, 0x4f, 0x33, 0x36, + 0x10, 0x55, 0xe2, 0x9b, 0x42, 0x59, 0xf5, 0xc9, 0x7f, 0x50, 0x59, 0xdf, + 0x73, 0xb9, 0x8a, 0x8c, 0x35, 0x43, 0x37, 0xe6, 0x61, 0x17, 0xa5, 0x88, + 0x7f, 0xf3, 0xa0, 0x58, 0x07, 0x95, 0x2c, 0x5f, 0x8f, 0x64, 0xea, 0x48, + 0x96, 0xe6, 0x89, 0xa8, 0xda, 0xc3, 0x2a, 0x2e, 0x3a, 0x49, 0xf5, 0x33, + 0xd5, 0xa0, 0x77, 0x33, 0xc9, 0x64, 0x58, 0xeb, 0xd2, 0x4c, 0x1e, 0x2d, + 0x9d, 0xd4, 0xdc, 0x31, 0xc9, 0x7e, 0x43, 0x35, 0x29, 0x93, 0x4c, 0x7c, + 0xc4, 0x54, 0xe7, 0x9a, 0xb2, 0x40, 0xc9, 0x13, 0x7a, 0x2f, 0xd6, 0x81, + 0x26, 0xa2, 0x39, 0x25, 0xed, 0x86, 0x5e, 0xec, 0x68, 0x64, 0x8d, 0xe3, + 0xcc, 0x17, 0xc3, 0x13, 0x99, 0xa5, 0x65, 0xa7, 0x40, 0xee, 0x6b, 0xdd, + 0xc4, 0x34, 0x4b, 0x2b, 0x57, 0x74, 0xc3, 0x51, 0x20, 0xed, 0xc6, 0x26, + 0x27, 0x69, 0xc4, 0x90, 0xee, 0xa7, 0xbc, 0x59, 0xe2, 0xd8, 0x8c, 0x4a, + 0x77, 0xcc, 0x2f, 0x7b, 0xa9, 0x81, 0x2e, 0xac, 0x89, 0xcf, 0x5a, 0x91, + 0x82, 0xc5, 0x9c, 0xbe, 0x3c, 0xb6, 0x79, 0xeb, 0xde, 0xb8, 0xd3, 0x70, + 0xe8, 0xdb, 0x5d, 0x92, 0x12, 0xd5, 0xcc, 0xd4, 0x07, 0x05, 0x5d, 0x60, + 0x23, 0x4e, 0xa1, 0x88, 0x91, 0xbc, 0x34, 0x4c, 0x78, 0x9b, 0x88, 0x8b, + 0x4f, 0x4c, 0x46, 0xea, 0x3b, 0x9c, 0xd4, 0xb2, 0x72, 0x2b, 0x6c, 0xbd, + 0x67, 0x1f, 0x22, 0xcc, 0x8e, 0x31, 0x22, 0xd1, 0x31, 0xf1, 0x24, 0x81, + 0x87, 0xcf, 0xdc, 0x63, 0x77, 0xcb, 0x86, 0x2e, 0xb2, 0xf8, 0xbd, 0x2c, + 0x38, 0xcc, 0x63, 0x13, 0xc7, 0x0b, 0x33, 0x71, 0xac, 0x18, 0xad, 0x4c, + 0x7b, 0xa8, 0xdb, 0xc9, 0x2e, 0xa3, 0x70, 0x17, 0xde, 0x7a, 0x20, 0xc4, + 0x65, 0xd7, 0x33, 0x9b, 0x8a, 0xc0, 0x30, 0x12, 0xd5, 0x1b, 0x31, 0x31, + 0x75, 0x5c, 0x21, 0x21, 0x26, 0xe6, 0x77, 0x3a, 0x30, 0xb6, 0xc5, 0xf6, + 0xf8, 0xe1, 0x74, 0x28, 0xb8, 0x9b, 0x09, 0xce, 0xfb, 0xaa, 0xea, 0x37, + 0x1c, 0x25, 0xed, 0x27, 0x5a, 0x18, 0xaf, 0x75, 0x52, 0xf5, 0x1c, 0xa8, + 0x47, 0x71, 0x8f, 0x32, 0x07, 0xa9, 0x25, 0x79, 0x31, 0xce, 0x96, 0x83, + 0x1a, 0x7b, 0x44, 0xdc, 0xc9, 0x7c, 0xdf, 0x51, 0xcb, 0x88, 0x0c, 0xcb, + 0x5d, 0xcd, 0xd4, 0x53, 0x11, 0x8f, 0x33, 0xc9, 0x7b, 0x86, 0x08, 0xb9, + 0x92, 0x01, 0x19, 0x99, 0x80, 0xcd, 0x84, 0x54, 0xf2, 0x9e, 0x10, 0x35, + 0x8a, 0x06, 0x64, 0xc4, 0x16, 0x59, 0x66, 0x03, 0xc6, 0x81, 0x23, 0xec, + 0x04, 0xf7, 0x94, 0x1d, 0x1f, 0xfd, 0x90, 0x41, 0x25, 0x28, 0x22, 0x05, + 0x43, 0xd6, 0x7f, 0xf0, 0xde, 0xf3, 0xca, 0x2c, 0x00, 0x34, 0x08, 0xd2, + 0x44, 0xb0, 0x22, 0x7e, 0x70, 0x58, 0x5e, 0x63, 0x79, 0x26, 0xbb, 0x7a, + 0xbb, 0xe2, 0xb9, 0xa1, 0x8a, 0xb2, 0x73, 0x9c, 0x56, 0xc6, 0x60, 0x96, + 0x22, 0x6b, 0x8b, 0x05, 0x12, 0x1b, 0xc9, 0x83, 0xe8, 0x5c, 0xdb, 0x2c, + 0xcc, 0xe3, 0x89, 0x64, 0x32, 0x19, 0x6b, 0x0c, 0xcd, 0xf7, 0x9b, 0xc1, + 0xb4, 0x89, 0xe5, 0xde, 0xed, 0x3f, 0x5c, 0xe6, 0x72, 0x6b, 0x50, 0x4d, + 0x0e, 0xdb, 0x08, 0x8e, 0xaa, 0xb7, 0x78, 0x6b, 0xce, 0x34, 0x1c, 0x6e, + 0x3b, 0xc6, 0x40, 0xa7, 0xb6, 0x65, 0x67, 0xb6, 0x3c, 0xf3, 0x38, 0xb6, + 0x81, 0x52, 0xaf, 0xc6, 0x5e, 0xe1, 0x9e, 0xb2, 0x83, 0x87, 0xa5, 0x00, + 0x22, 0x35, 0x8e, 0xd9, 0x93, 0x52, 0x1a, 0x83, 0x91, 0x17, 0x65, 0x97, + 0x7f, 0xac, 0xc4, 0x5d, 0xce, 0x71, 0x6b, 0x3c, 0x6f, 0x4c, 0x76, 0xcb, + 0x0c, 0x93, 0x33, 0x50, 0x04, 0x6c, 0xac, 0xf2, 0x6e, 0x87, 0x77, 0x58, + 0x59, 0x01, 0x90, 0x65, 0xd3, 0x3b, 0x39, 0x15, 0x1d, 0x5b, 0xa3, 0x73, + 0x2f, 0x8e, 0xd6, 0x1e, 0xb9, 0x7d, 0xfc, 0xb6, 0x43, 0x2c, 0x2c, 0x5b, + 0x51, 0xb9, 0x7d, 0x71, 0x3e, 0xe5, 0x31, 0x12, 0x51, 0x57, 0xee, 0x05, + 0x2a, 0x70, 0x1c, 0x27, 0x01, 0x1b, 0xf3, 0xe0, 0x14, 0x62, 0x26, 0x31, + 0x48, 0xd9, 0x7c, 0x85, 0xfb, 0x04, 0xf0, 0x78, 0xe8, 0x66, 0x93, 0xee, + 0xe2, 0x65, 0xf2, 0xd1, 0x99, 0xac, 0x56, 0x86, 0xf1, 0x08, 0x1c, 0xaa, + 0x9b, 0xc5, 0x41, 0x15, 0x8b, 0xb1, 0x4a, 0x71, 0xbb, 0xe4, 0xc0, 0x35, + 0x3f, 0x38, 0x88, 0x27, 0xeb, 0x03, 0x93, 0x13, 0x31, 0x96, 0x72, 0xc4, + 0x1f, 0x82, 0xc6, 0xb0, 0x4f, 0xbd, 0xeb, 0x93, 0x89, 0x2c, 0x0d, 0xe8, + 0xb0, 0x9f, 0xfb, 0xb6, 0x0d, 0xf0, 0x1a, 0x63, 0xcc, 0xd2, 0xd6, 0x58, + 0xf3, 0xda, 0x74, 0xae, 0xf9, 0x93, 0xae, 0x8c, 0xea, 0x7b, 0xd6, 0xa1, + 0xfb, 0xbb, 0x9c, 0xc6, 0x3b, 0x73, 0x8c, 0x4b, 0xe3, 0x18, 0x98, 0xa0, + 0xc7, 0x37, 0x11, 0xea, 0x73, 0xf7, 0xfb, 0x54, 0xa6, 0x2b, 0x93, 0x60, + 0x3d, 0xd7, 0x75, 0x6c, 0x7a, 0xce, 0xa2, 0x47, 0x8a, 0xba, 0x0f, 0x2e, + 0x32, 0xd5, 0x36, 0x65, 0x88, 0x7c, 0x95, 0xc6, 0x60, 0x31, 0x0a, 0xde, + 0xe6, 0x08, 0xf1, 0xa7, 0xff, 0x00, 0x4e, 0x2b, 0xd7, 0xed, 0xea, 0x0a, + 0x26, 0x27, 0xc3, 0x3a, 0xcf, 0x19, 0x99, 0x7b, 0xf3, 0xea, 0xed, 0x75, + 0xdf, 0xcd, 0x3c, 0x36, 0x13, 0xb3, 0xf7, 0xcb, 0x38, 0x73, 0xea, 0x39, + 0x6b, 0x8a, 0x0b, 0x67, 0x84, 0x96, 0x2d, 0x6a, 0x18, 0x88, 0xc9, 0xc1, + 0x54, 0x9a, 0xa6, 0xf8, 0x80, 0x58, 0xc0, 0x5b, 0x5f, 0xfd, 0xcf, 0xf5, + 0x8b, 0x20, 0x68, 0x0a, 0xaa, 0x7a, 0x5e, 0x68, 0x80, 0xd9, 0x61, 0x8a, + 0x42, 0x51, 0x14, 0x49, 0x00, 0x09, 0x71, 0x40, 0x21, 0x0c, 0x66, 0x59, + 0x30, 0xa4, 0x51, 0x42, 0xff, 0x00, 0x36, 0x04, 0xc3, 0xaf, 0xd2, 0x34, + 0x44, 0xe1, 0x89, 0x82, 0x51, 0x06, 0xae, 0x79, 0x45, 0x63, 0x66, 0xcf, + 0x19, 0xfb, 0x44, 0x27, 0x8c, 0xf3, 0x0a, 0x5d, 0xea, 0x94, 0xdf, 0xcc, + 0x48, 0xc5, 0xb9, 0x71, 0x97, 0xd9, 0x26, 0x33, 0x2f, 0x52, 0x77, 0x20, + 0xd9, 0x1d, 0x50, 0x9c, 0x61, 0xf0, 0xbd, 0xe4, 0xb6, 0xc6, 0xa2, 0x09, + 0xfa, 0x0f, 0x75, 0x33, 0xe6, 0xca, 0x66, 0x63, 0x7a, 0x99, 0x66, 0xd0, + 0xef, 0x13, 0xa1, 0x9c, 0xb6, 0xd0, 0xf5, 0x9f, 0x59, 0xba, 0x59, 0x66, + 0x48, 0xdc, 0x39, 0x93, 0xa8, 0x9b, 0xf6, 0x45, 0xcf, 0x94, 0xd3, 0xc1, + 0xba, 0xb6, 0xd7, 0x4a, 0x54, 0x64, 0x75, 0xa3, 0xb2, 0xf3, 0xc6, 0x5a, + 0x68, 0x14, 0xfc, 0x1f, 0xc9, 0x8f, 0xce, 0x39, 0x98, 0xee, 0xd9, 0x9a, + 0x49, 0x67, 0x54, 0x66, 0xa3, 0x6a, 0xd1, 0xcc, 0xca, 0x4a, 0xc6, 0x6d, + 0x49, 0x22, 0x7d, 0x93, 0x59, 0xdb, 0x11, 0x01, 0x74, 0xf9, 0xf3, 0x9e, + 0xdc, 0xfe, 0x33, 0x1d, 0xcf, 0x32, 0xcd, 0xf9, 0x8d, 0xd4, 0x4d, 0xc6, + 0x59, 0xee, 0x66, 0x20, 0x5b, 0xa1, 0xde, 0x26, 0x88, 0x89, 0xa9, 0x8f, + 0x73, 0x86, 0x3a, 0xf1, 0x2e, 0x24, 0x45, 0x7c, 0xc3, 0x39, 0xbf, 0x18, + 0x67, 0x6e, 0x33, 0xc7, 0x2c, 0x3d, 0x74, 0xd7, 0xc4, 0x66, 0x33, 0x4e, + 0x69, 0xbe, 0x0e, 0x3e, 0x83, 0xb6, 0x2c, 0xf3, 0x2d, 0xde, 0x86, 0x2f, + 0x13, 0x46, 0x24, 0x75, 0x17, 0x24, 0x5b, 0xbc, 0x5d, 0x24, 0x40, 0xbc, + 0x8d, 0xfb, 0xef, 0x3e, 0x8a, 0xca, 0x74, 0x45, 0xe6, 0xb8, 0xb5, 0xba, + 0xa9, 0x9e, 0xcc, 0x7a, 0x19, 0x8f, 0x0a, 0x54, 0xbc, 0xcf, 0xbe, 0xd9, + 0xce, 0x83, 0x2c, 0xf5, 0x2d, 0xf5, 0x8e, 0x41, 0x04, 0x17, 0x86, 0xee, + 0x5c, 0x45, 0xbd, 0x59, 0xee, 0x37, 0x0e, 0x67, 0x76, 0xf9, 0x26, 0xcb, + 0xeb, 0x1f, 0xf3, 0x3c, 0xef, 0x70, 0xc4, 0x3f, 0x2f, 0xc7, 0x92, 0x7d, + 0x6f, 0x91, 0xde, 0x2d, 0x36, 0x95, 0x8f, 0xfb, 0xe7, 0xa3, 0x82, 0xe0, + 0x9c, 0xc9, 0x2c, 0xc2, 0xf5, 0x8a, 0x9f, 0x07, 0xea, 0xf1, 0x8f, 0xd3, + 0xcf, 0x59, 0xfc, 0x3e, 0x3c, 0x70, 0xb9, 0xf1, 0xa2, 0xfe, 0x2e, 0xf2, + 0x9e, 0x62, 0x1f, 0x1c, 0xea, 0xfd, 0x7c, 0xfe, 0x67, 0x3d, 0x52, 0xc9, + 0xce, 0xe7, 0x08, 0xad, 0xc1, 0x53, 0x50, 0x7e, 0x3c, 0xf5, 0x5c, 0x89, + 0x87, 0x31, 0x89, 0x09, 0xbc, 0x10, 0x06, 0xc3, 0xe8, 0x85, 0x5f, 0x37, + 0x06, 0x0e, 0x0a, 0x62, 0x9e, 0xe6, 0x0f, 0xfe, 0xce, 0x03, 0x7f, 0x88, + 0x12, 0x57, 0x23, 0x28, 0x44, 0x45, 0x38, 0x29, 0x9d, 0x09, 0xbe, 0xc0, + 0x1b, 0x1a, 0xa1, 0x48, 0x97, 0x28, 0xe5, 0x34, 0x22, 0x1f, 0x65, 0x72, + 0xb3, 0xdf, 0x16, 0x66, 0x63, 0xe9, 0x75, 0x70, 0xe3, 0x51, 0xd5, 0x45, + 0xb9, 0xa9, 0xc2, 0x21, 0xf7, 0xa3, 0xd9, 0xdb, 0x6c, 0xd9, 0xdf, 0x3d, + 0x16, 0x05, 0xcc, 0x53, 0x2b, 0x13, 0x11, 0xec, 0x98, 0x96, 0x1c, 0x72, + 0x3e, 0xce, 0x99, 0xa6, 0x89, 0x8b, 0x72, 0x59, 0x51, 0x59, 0xae, 0x5b, + 0x7b, 0x6a, 0x99, 0xa0, 0x47, 0xb9, 0x95, 0x3f, 0x0c, 0xda, 0xf1, 0xc6, + 0x22, 0xf1, 0x2b, 0xdf, 0xb3, 0x33, 0xd6, 0x33, 0x7c, 0x9f, 0x18, 0xc7, + 0xc3, 0xf1, 0xde, 0x4e, 0xcc, 0xeb, 0x97, 0x29, 0x5f, 0x10, 0xff, 0x00, + 0xc9, 0x9a, 0xaf, 0x5e, 0x39, 0x16, 0xc6, 0x59, 0xce, 0x77, 0x13, 0xb9, + 0x6e, 0xbb, 0xce, 0x4e, 0x2d, 0x3e, 0xe4, 0xa5, 0x91, 0xd5, 0xe7, 0x01, + 0x61, 0x89, 0xbc, 0x72, 0xf5, 0x0c, 0x6f, 0x2b, 0x35, 0x23, 0x3d, 0xa5, + 0xa8, 0xa8, 0x56, 0x79, 0xd5, 0xff, 0x00, 0x18, 0x2f, 0xf6, 0xa9, 0x94, + 0x76, 0x72, 0xe8, 0xba, 0xf3, 0x34, 0xb2, 0x63, 0xd9, 0xf4, 0x6f, 0x8f, + 0x5e, 0xee, 0x20, 0x7a, 0x6a, 0x4a, 0x19, 0x9a, 0xa7, 0xec, 0x6b, 0x42, + 0x58, 0xb3, 0x2f, 0xe5, 0xc5, 0x41, 0xfb, 0x4c, 0x85, 0x8f, 0x6f, 0x49, + 0x98, 0x88, 0x87, 0xdc, 0x53, 0x31, 0x83, 0x5d, 0x9e, 0x74, 0x47, 0xba, + 0x83, 0x70, 0x05, 0x5d, 0x19, 0xe5, 0x76, 0xe3, 0xc4, 0xce, 0xbf, 0x9f, + 0xc7, 0x9e, 0x38, 0xaf, 0x2e, 0x7e, 0xa5, 0xef, 0xe3, 0xd1, 0x7c, 0x62, + 0x5f, 0x83, 0x7f, 0x39, 0x0f, 0xd0, 0x8b, 0xf8, 0xcf, 0x44, 0xc4, 0x60, + 0x2b, 0x3a, 0xc3, 0xe3, 0x7f, 0x89, 0xb8, 0xd7, 0xf3, 0xd6, 0x74, 0xf7, + 0x90, 0x9b, 0x2a, 0x67, 0x7b, 0x96, 0x7d, 0x84, 0xeb, 0x6f, 0x90, 0x12, + 0xf3, 0xc0, 0xcc, 0x91, 0xe7, 0x78, 0x61, 0xc6, 0x0d, 0xe6, 0x21, 0x35, + 0x7b, 0x6a, 0x73, 0x15, 0x8f, 0x7e, 0x49, 0x87, 0xbb, 0x8e, 0x47, 0xfe, + 0x54, 0x41, 0x9d, 0x62, 0x33, 0x3f, 0x8e, 0x7b, 0x1c, 0xaf, 0x74, 0x47, + 0xa5, 0xab, 0xa8, 0x23, 0x19, 0x96, 0x3b, 0x74, 0xbf, 0x2d, 0x1e, 0xa8, + 0x17, 0xbc, 0x8e, 0xb9, 0xfb, 0xfb, 0xfd, 0x3f, 0xb9, 0x77, 0xc5, 0x7b, + 0x69, 0x23, 0xe9, 0x99, 0x7d, 0x7c, 0x86, 0x15, 0xc5, 0x70, 0x90, 0xd9, + 0x81, 0xa4, 0x2e, 0x24, 0x37, 0x45, 0x8e, 0x3b, 0x4c, 0xce, 0x45, 0xf0, + 0x83, 0x12, 0x9b, 0x23, 0xc0, 0x34, 0xaa, 0xca, 0xa3, 0x05, 0x02, 0x70, + 0x00, 0xff, 0x00, 0x42, 0x74, 0x31, 0xb3, 0x20, 0x80, 0x14, 0x09, 0x85, + 0x3a, 0x99, 0xa8, 0xc1, 0x4d, 0x92, 0x8e, 0x58, 0x07, 0xb9, 0xe2, 0xe8, + 0xc0, 0xd7, 0x50, 0xf9, 0xcc, 0x3e, 0xe1, 0x1d, 0x47, 0x31, 0x03, 0xe6, + 0x6b, 0x03, 0xae, 0xcd, 0xcf, 0xb9, 0x07, 0x75, 0xaf, 0x5e, 0x4b, 0x3e, + 0x13, 0xc5, 0x5b, 0xb8, 0x1e, 0x29, 0x03, 0x3e, 0x82, 0x65, 0x92, 0x96, + 0x6e, 0x96, 0xb3, 0x9c, 0x9c, 0x5c, 0xaa, 0xb3, 0x9e, 0xfd, 0x54, 0xdd, + 0xcc, 0xd4, 0x43, 0x55, 0xa0, 0x9f, 0x71, 0x66, 0x0d, 0x40, 0x48, 0x66, + 0x25, 0x9c, 0xf3, 0xea, 0x16, 0x34, 0x4e, 0x8a, 0xb0, 0x8c, 0xbe, 0xcf, + 0x0f, 0x23, 0x33, 0xeb, 0xd5, 0xe6, 0x0f, 0xeb, 0xa9, 0x8a, 0x2a, 0xfc, + 0xeb, 0xc5, 0xdf, 0xec, 0x6e, 0x3c, 0x72, 0x22, 0x37, 0x37, 0x1e, 0xff, + 0x00, 0xba, 0x7e, 0x93, 0x92, 0x55, 0x32, 0x4f, 0x89, 0x7f, 0x32, 0xba, + 0xf3, 0x44, 0x09, 0x31, 0xe3, 0xa6, 0x2e, 0x1a, 0x9f, 0x17, 0x55, 0x8e, + 0xf3, 0x38, 0x88, 0x47, 0xf7, 0xe9, 0x48, 0x8c, 0x3e, 0x77, 0xc8, 0x1c, + 0xfa, 0x0c, 0x8c, 0xe2, 0x66, 0xba, 0xdd, 0x2a, 0x43, 0xa9, 0xf8, 0x2a, + 0x4b, 0x6a, 0xe5, 0xf4, 0xc2, 0xe6, 0x6b, 0x49, 0x44, 0x49, 0x48, 0x20, + 0x93, 0x48, 0xcb, 0x6d, 0xc7, 0x9b, 0x3e, 0x23, 0x87, 0x61, 0x11, 0xa4, + 0x9f, 0x9d, 0x97, 0x9d, 0x1b, 0x39, 0x5f, 0xda, 0xbf, 0xcf, 0xed, 0xc6, + 0xb0, 0xa8, 0x12, 0xc1, 0x81, 0x96, 0x5d, 0xe0, 0xcf, 0xeb, 0x1c, 0xd7, + 0x89, 0xc5, 0xe7, 0xd7, 0xf1, 0xfb, 0x92, 0xdc, 0xb7, 0xdd, 0xf6, 0xea, + 0xbf, 0xe7, 0x30, 0x1b, 0xf9, 0xb6, 0xb1, 0x6b, 0xd7, 0xc6, 0xf9, 0xff, + 0x00, 0x62, 0x5e, 0xa3, 0xd6, 0xa0, 0xfa, 0xf1, 0xcc, 0xdc, 0xdd, 0x4c, + 0xda, 0x4b, 0xed, 0x75, 0x93, 0x1f, 0x17, 0x2d, 0xae, 0x76, 0xf6, 0x1f, + 0x9f, 0x8e, 0xfe, 0xf8, 0x7e, 0xfd, 0x6a, 0xfe, 0x20, 0xde, 0x27, 0xef, + 0x97, 0x91, 0x48, 0x4b, 0xdc, 0x5e, 0x21, 0xdc, 0x77, 0xc9, 0xad, 0x93, + 0x12, 0x2e, 0x7e, 0xbe, 0xe0, 0x98, 0xb5, 0x88, 0x78, 0x95, 0x38, 0xb0, + 0xc4, 0xe6, 0x7c, 0x6b, 0x4c, 0x81, 0xb9, 0xe1, 0x83, 0xbf, 0x7e, 0xb5, + 0x91, 0xf6, 0x1d, 0x80, 0x64, 0x8a, 0x0e, 0x70, 0x89, 0xd8, 0x83, 0x11, + 0x73, 0x71, 0x3a, 0x28, 0xe5, 0x28, 0xb8, 0x17, 0x46, 0xcc, 0x9b, 0x21, + 0x95, 0x73, 0xfd, 0x02, 0xbc, 0xb9, 0x2d, 0x7d, 0xcf, 0xf5, 0x6e, 0x1c, + 0x82, 0xfa, 0xcf, 0x99, 0x54, 0x24, 0x74, 0xe4, 0x4a, 0x04, 0x9a, 0xa2, + 0x12, 0x41, 0xb9, 0x00, 0xdc, 0x42, 0x41, 0xb5, 0xcc, 0x0d, 0x47, 0x86, + 0x19, 0xc4, 0x69, 0xf9, 0x9d, 0x90, 0x46, 0xb7, 0x28, 0xcc, 0xcb, 0x71, + 0x8c, 0xd6, 0x46, 0x72, 0x9e, 0x7a, 0xa3, 0xf4, 0x88, 0x3d, 0xb4, 0xed, + 0xd3, 0x22, 0xa3, 0x6e, 0x24, 0x99, 0x1d, 0xb4, 0x24, 0x75, 0x0b, 0x9c, + 0xcc, 0x3e, 0x6e, 0xf8, 0x86, 0x6b, 0x39, 0xdf, 0x87, 0xdc, 0xd4, 0xbe, + 0xf5, 0xcf, 0x43, 0x50, 0xcf, 0x4e, 0xfe, 0x3f, 0xf7, 0xbe, 0x7b, 0x85, + 0x67, 0x7b, 0xf7, 0x53, 0x8a, 0xc8, 0xea, 0xe7, 0x8c, 0x38, 0x4c, 0x45, + 0xb7, 0x19, 0x3e, 0x50, 0x88, 0x30, 0xd6, 0xe9, 0x89, 0x60, 0x01, 0xfd, + 0x3e, 0x63, 0xa8, 0xd6, 0x03, 0xdf, 0x78, 0xa8, 0xcf, 0x8e, 0xa1, 0xb9, + 0xdd, 0x7c, 0xdf, 0x3f, 0xbb, 0x8f, 0xde, 0xbe, 0xf8, 0xeb, 0xc5, 0xbd, + 0x33, 0x10, 0xd0, 0x44, 0xd7, 0x5a, 0xa3, 0x9f, 0xf9, 0xfb, 0xf2, 0x67, + 0x31, 0xf2, 0x4f, 0xac, 0xce, 0x20, 0xf2, 0x79, 0xe4, 0xdc, 0xcf, 0x85, + 0x49, 0x8f, 0x57, 0xe2, 0x9b, 0x90, 0xac, 0xc9, 0x31, 0x37, 0x13, 0xd3, + 0x9f, 0xc6, 0x96, 0x37, 0xf3, 0x3c, 0x57, 0xcb, 0x7f, 0xd5, 0xf8, 0xff, + 0x00, 0x9c, 0x4a, 0x71, 0xd4, 0x57, 0x93, 0x24, 0xfc, 0xfc, 0x37, 0xc9, + 0x8f, 0x9f, 0xbc, 0x93, 0xf1, 0xbf, 0x1e, 0x78, 0x59, 0x74, 0xb1, 0x16, + 0x55, 0xdc, 0xef, 0xf8, 0xf9, 0x39, 0xae, 0xa6, 0x9b, 0x8e, 0x9c, 0x37, + 0xa0, 0xfb, 0xd9, 0x4d, 0x3b, 0xa1, 0xa8, 0xbd, 0x7c, 0x7a, 0x33, 0xf9, + 0xe2, 0xc5, 0xdb, 0xdb, 0xe3, 0xf7, 0x8d, 0x75, 0xe0, 0x57, 0x87, 0x9d, + 0x4f, 0x74, 0x2d, 0x5f, 0xd4, 0xc6, 0xf9, 0x44, 0x64, 0xfa, 0xc7, 0x9d, + 0x56, 0xda, 0xfc, 0xc7, 0x09, 0xcc, 0xd7, 0x43, 0x57, 0xef, 0x31, 0xdd, + 0x78, 0x2d, 0xe4, 0x26, 0xfc, 0xe6, 0x3b, 0x87, 0x34, 0x86, 0x36, 0xd7, + 0x1a, 0x9d, 0x45, 0x45, 0xe6, 0x93, 0xf1, 0xe1, 0xf2, 0x21, 0x1c, 0x3b, + 0x92, 0x23, 0x06, 0x03, 0x2f, 0x6b, 0xa6, 0x26, 0xf8, 0xf0, 0xc6, 0xab, + 0x2a, 0x95, 0x81, 0x78, 0xb0, 0xd3, 0x2c, 0xe2, 0x97, 0x81, 0xea, 0xe8, + 0x6f, 0xe0, 0xb5, 0xfe, 0x92, 0x03, 0x46, 0x8d, 0x97, 0x84, 0xac, 0x01, + 0x0c, 0xbc, 0x12, 0x34, 0x80, 0x0b, 0x12, 0x15, 0xde, 0x03, 0x67, 0x4b, + 0x71, 0xf2, 0xc4, 0xdb, 0xf3, 0x31, 0xff, 0x00, 0xbd, 0x34, 0x3b, 0xf1, + 0x35, 0x3f, 0xd7, 0xfb, 0x1a, 0xf8, 0x75, 0xe4, 0xc5, 0xf6, 0xce, 0x57, + 0x67, 0xef, 0x4f, 0x3b, 0xed, 0x67, 0x3d, 0xfa, 0x12, 0xa6, 0x5d, 0xe8, + 0x27, 0x99, 0x0f, 0x94, 0x8f, 0x89, 0x9d, 0x31, 0x10, 0xf9, 0x9b, 0xe6, + 0x32, 0xd5, 0xce, 0xa9, 0xef, 0x38, 0x89, 0xdc, 0x6a, 0x1e, 0x79, 0x72, + 0xff, 0x00, 0xee, 0x3e, 0x6a, 0xaf, 0xba, 0xe4, 0xfb, 0x8d, 0x47, 0xb2, + 0xd3, 0xbf, 0x03, 0xa2, 0xf9, 0x53, 0x89, 0xcf, 0xf7, 0xba, 0xf7, 0xd4, + 0xf0, 0x6d, 0x51, 0x7e, 0x50, 0x26, 0x5f, 0xe7, 0x7c, 0x98, 0xfa, 0xcf, + 0xbf, 0xec, 0x3a, 0x09, 0xe4, 0xb7, 0x73, 0x39, 0xed, 0x6e, 0xe7, 0xe6, + 0xfb, 0xbe, 0xc3, 0x8f, 0xaf, 0x8d, 0x4e, 0xb3, 0x2f, 0xf5, 0xf1, 0x13, + 0x7a, 0x98, 0xc1, 0x3f, 0x70, 0xaf, 0x3f, 0x7f, 0xd9, 0xef, 0xfb, 0xbf, + 0x3c, 0x3f, 0x9f, 0xef, 0xef, 0xe3, 0x93, 0x73, 0xfb, 0x56, 0x71, 0x17, + 0x5e, 0xf8, 0xc1, 0x87, 0xca, 0x9a, 0xcd, 0xf7, 0xaa, 0xaf, 0x8a, 0xe6, + 0xab, 0x6b, 0x91, 0xf1, 0x3f, 0xf9, 0x5e, 0xec, 0x93, 0xe7, 0x3e, 0x2f, + 0x2c, 0x7c, 0x6c, 0x49, 0x82, 0x3c, 0x93, 0x07, 0x89, 0xee, 0x1c, 0xdd, + 0x55, 0x11, 0x4c, 0x3b, 0xdf, 0x23, 0xfa, 0xe3, 0xeb, 0xd9, 0xfc, 0x45, + 0xaf, 0xeb, 0xf9, 0x27, 0xbe, 0x44, 0x8f, 0xc1, 0x8c, 0xe7, 0xce, 0x3c, + 0x3e, 0x72, 0x72, 0x27, 0xeb, 0x3e, 0x23, 0x67, 0x8c, 0xd8, 0x45, 0xea, + 0x65, 0x96, 0x75, 0x7e, 0xe7, 0xdf, 0xdd, 0xc4, 0x4c, 0x7c, 0xf3, 0xbf, + 0x61, 0xf7, 0x18, 0x86, 0x4f, 0xc7, 0x7c, 0xd7, 0xf5, 0x70, 0xe7, 0x5a, + 0x96, 0x43, 0xdf, 0x20, 0x6e, 0x1c, 0x21, 0x69, 0x52, 0x6c, 0xe8, 0x32, + 0x4e, 0x26, 0x47, 0xfe, 0xa5, 0x3f, 0x47, 0x18, 0xb0, 0x2f, 0xfa, 0x61, + 0xd8, 0xe4, 0x8e, 0x54, 0xe2, 0xa5, 0x1c, 0x3a, 0x85, 0xb5, 0x74, 0xea, + 0xf7, 0x04, 0xa4, 0x99, 0x84, 0xfc, 0x59, 0x1a, 0xe4, 0x64, 0x04, 0x3c, + 0x8c, 0xc0, 0xac, 0xc1, 0x06, 0x87, 0x95, 0x33, 0xd3, 0x39, 0xce, 0x3e, + 0x67, 0xcf, 0xcc, 0x1c, 0xd7, 0x9b, 0x82, 0x62, 0x75, 0xe7, 0xbb, 0x7a, + 0x22, 0xf4, 0xe6, 0x68, 0x57, 0x49, 0xea, 0xe2, 0xad, 0x7c, 0x6f, 0xbe, + 0x4e, 0xe3, 0x6c, 0xe7, 0xa1, 0xa9, 0x99, 0x67, 0x3f, 0x42, 0x59, 0xc9, + 0x98, 0xa0, 0x89, 0x4e, 0xf7, 0xbb, 0xf8, 0xfd, 0xaf, 0x9e, 0x5f, 0xcb, + 0x7e, 0xe9, 0xbf, 0xc9, 0xf8, 0xe1, 0xbc, 0x4e, 0xbd, 0x16, 0xfc, 0xfe, + 0xc7, 0x98, 0xe4, 0xdb, 0x06, 0x73, 0xfa, 0xf8, 0x34, 0x59, 0xea, 0x89, + 0xe5, 0xd1, 0xa5, 0x35, 0xf1, 0x3f, 0x1b, 0xf9, 0xdf, 0x35, 0x31, 0xe6, + 0x75, 0xd4, 0xe3, 0xe2, 0x6f, 0xae, 0x51, 0x1f, 0x58, 0xfe, 0x3f, 0xe1, + 0xcc, 0x53, 0xe7, 0xc6, 0xf4, 0x7b, 0x59, 0xf3, 0xef, 0x99, 0xbe, 0xc9, + 0x26, 0x27, 0x39, 0x33, 0x37, 0x0e, 0xf9, 0x2d, 0x5c, 0xa7, 0xdc, 0x6b, + 0xfb, 0xe1, 0x80, 0x93, 0x9d, 0xc3, 0x90, 0xb3, 0xef, 0xe7, 0xf4, 0xeb, + 0x9e, 0x9d, 0x57, 0xe7, 0x64, 0xd2, 0x7a, 0xde, 0x6b, 0x89, 0xea, 0xcf, + 0xe4, 0xba, 0x7f, 0x7a, 0x78, 0x5f, 0xcc, 0x44, 0xd5, 0x53, 0x7d, 0x83, + 0x0d, 0x62, 0x36, 0xf3, 0xaf, 0x3f, 0x1f, 0xa9, 0x9c, 0x53, 0xe7, 0xae, + 0x7e, 0x7c, 0x63, 0xfb, 0xf8, 0xf3, 0xdf, 0x19, 0xfa, 0xfe, 0xf6, 0x17, + 0x0c, 0x76, 0xfa, 0xe5, 0x02, 0x15, 0x06, 0x6d, 0x4f, 0xcd, 0xd4, 0x67, + 0x51, 0x1c, 0xde, 0x5d, 0xe2, 0xbd, 0x3b, 0xfe, 0x1b, 0xea, 0x8a, 0xff, + 0x00, 0xc0, 0xdb, 0x7a, 0xf9, 0xef, 0x21, 0xc9, 0x5e, 0xfc, 0x1f, 0x1b, + 0x18, 0x9b, 0xdc, 0x0f, 0xa2, 0x79, 0x1d, 0xfa, 0xa9, 0xf3, 0xb9, 0xeb, + 0x2f, 0xc9, 0x70, 0x72, 0x66, 0x04, 0xa3, 0xeb, 0xb3, 0x54, 0x28, 0xac, + 0x80, 0xa0, 0x89, 0xf6, 0xf8, 0xbc, 0x42, 0x19, 0xf3, 0xf3, 0xa4, 0x3a, + 0xf6, 0xd1, 0xf5, 0x65, 0x97, 0xc2, 0x53, 0x42, 0xbf, 0xe9, 0xda, 0x0e, + 0x79, 0x81, 0x12, 0x49, 0x7d, 0x9c, 0x4c, 0xf3, 0x93, 0x68, 0x12, 0xcd, + 0x2c, 0x02, 0xec, 0x69, 0xea, 0x88, 0x46, 0xaa, 0xf1, 0x15, 0xf9, 0x7f, + 0x5f, 0xbe, 0x2d, 0x91, 0x1a, 0xf8, 0xc7, 0x73, 0x5e, 0x67, 0xca, 0x47, + 0x2f, 0x71, 0xe5, 0x73, 0x2b, 0x7d, 0xb3, 0x57, 0x12, 0x43, 0xda, 0xf3, + 0xfb, 0x57, 0xf9, 0xff, 0x00, 0x91, 0xa9, 0x6b, 0x94, 0x75, 0x99, 0xc7, + 0xe7, 0xc3, 0xf7, 0xcf, 0xeb, 0xcf, 0x14, 0xd1, 0xef, 0x6c, 0xd7, 0x8c, + 0x97, 0xf8, 0xab, 0xea, 0x30, 0xdf, 0xaf, 0x0d, 0xcc, 0xfe, 0x27, 0xa9, + 0xff, 0x00, 0xb7, 0x8f, 0xc6, 0xa7, 0xa2, 0xb9, 0x3f, 0xc6, 0x3e, 0x3a, + 0xfc, 0xe7, 0x2f, 0x7c, 0x26, 0xa7, 0xc6, 0xbc, 0xf4, 0xa8, 0xc7, 0xbb, + 0x8e, 0x79, 0xba, 0x9f, 0xef, 0x7f, 0xaf, 0x92, 0x4e, 0x45, 0xc5, 0x4c, + 0x5e, 0x22, 0xc9, 0x9c, 0xed, 0x0c, 0x2e, 0xce, 0xe3, 0xe6, 0x65, 0x7b, + 0xed, 0xfe, 0xfd, 0x6f, 0x93, 0x9f, 0x1b, 0xae, 0xb2, 0xfc, 0xc9, 0xec, + 0xfa, 0x19, 0xf1, 0x0e, 0xcf, 0xf9, 0x67, 0xe3, 0x8c, 0x58, 0x98, 0x96, + 0x46, 0x1c, 0x20, 0xcc, 0xc6, 0xbf, 0x9f, 0x01, 0x7f, 0xfb, 0x3a, 0x9c, + 0xb7, 0x9f, 0x8a, 0xcc, 0x56, 0x23, 0x59, 0x89, 0xdf, 0x71, 0xfc, 0xb2, + 0xe6, 0x7b, 0xe4, 0xc8, 0xf5, 0xf9, 0xfa, 0x4a, 0x8c, 0x9b, 0xc2, 0x70, + 0xc4, 0x98, 0xfe, 0xc7, 0x82, 0x63, 0xc7, 0xeb, 0xc6, 0x33, 0x31, 0x5f, + 0x4c, 0x4f, 0x52, 0xf7, 0x1b, 0x3e, 0xf9, 0xfa, 0xfa, 0x53, 0xbb, 0x7a, + 0x26, 0xb1, 0xd5, 0x63, 0x8f, 0xeb, 0xf8, 0x8c, 0x6b, 0x1e, 0xe6, 0xdc, + 0x23, 0xc0, 0x6f, 0xcc, 0xdb, 0xe4, 0xc1, 0x86, 0x95, 0x65, 0x84, 0xc1, + 0x72, 0xf1, 0x5d, 0x34, 0x37, 0xe2, 0x43, 0xab, 0xea, 0xe6, 0xaf, 0xe2, + 0x27, 0xf5, 0x60, 0x14, 0x08, 0xae, 0x09, 0x90, 0xc4, 0xb8, 0xa7, 0xc5, + 0xe2, 0x70, 0xe8, 0x5b, 0xa3, 0x3c, 0x13, 0x72, 0xff, 0x00, 0xab, 0x1d, + 0xdd, 0x40, 0xb1, 0x24, 0x2c, 0x1e, 0x30, 0xa8, 0x8d, 0x45, 0x86, 0x51, + 0x5c, 0x51, 0x18, 0x81, 0xae, 0x05, 0x6c, 0x51, 0x65, 0xfc, 0x65, 0x28, + 0x10, 0x28, 0xcc, 0xa3, 0x9e, 0x9b, 0x24, 0x8c, 0x67, 0xbf, 0xee, 0x1d, + 0xf3, 0xcc, 0xbd, 0x7e, 0x3f, 0x4b, 0xfd, 0xb5, 0x07, 0x3d, 0x91, 0xf5, + 0xfd, 0x7e, 0x61, 0xf1, 0xc8, 0x27, 0xdc, 0x7d, 0xfd, 0xf8, 0x23, 0xd7, + 0x9e, 0x76, 0xff, 0x00, 0x7f, 0x8f, 0xcc, 0x46, 0xf5, 0xcf, 0x8d, 0x66, + 0x7f, 0x6d, 0xfc, 0x5f, 0xc4, 0xf1, 0x9d, 0x11, 0x2c, 0x6d, 0xa5, 0x4a, + 0xbf, 0xdf, 0x13, 0xc8, 0x83, 0xe2, 0x7a, 0xdb, 0xd7, 0x6e, 0x58, 0xce, + 0x3c, 0xea, 0xbf, 0xe7, 0x8e, 0x7f, 0xe7, 0x9b, 0xfe, 0xfb, 0xaa, 0xbe, + 0x66, 0x3f, 0x68, 0x9e, 0xe7, 0x64, 0xf5, 0x92, 0x8e, 0x13, 0xf2, 0x67, + 0x73, 0xe7, 0xe6, 0x3a, 0x98, 0x10, 0x39, 0xe4, 0xfd, 0x98, 0x22, 0x62, + 0xae, 0x3c, 0x17, 0x3e, 0x39, 0xe7, 0xb0, 0xfe, 0xcc, 0xc6, 0xff, 0x00, + 0xef, 0x0f, 0xde, 0xe3, 0xbb, 0xcb, 0x72, 0x43, 0xed, 0x2e, 0x71, 0x9b, + 0xdd, 0x52, 0x59, 0xbf, 0x12, 0x0b, 0x7a, 0xa3, 0xcb, 0x91, 0x2e, 0x3b, + 0x33, 0x51, 0xdf, 0x5e, 0xe6, 0x37, 0xa3, 0x97, 0x77, 0x36, 0xf5, 0x38, + 0xf8, 0x33, 0x87, 0x1f, 0xb1, 0x5d, 0xcb, 0xdd, 0xfd, 0xe4, 0xfe, 0x87, + 0x47, 0x31, 0x41, 0x80, 0x9c, 0xc4, 0xee, 0x18, 0x9f, 0xd5, 0x2b, 0xcf, + 0x2e, 0x4b, 0xf0, 0xc9, 0xf9, 0xbc, 0x31, 0xe3, 0x6e, 0xe1, 0x87, 0x6c, + 0xe2, 0xa0, 0xbd, 0x39, 0xd4, 0x66, 0x3f, 0x78, 0xe5, 0xfe, 0x99, 0xdf, + 0x7e, 0x71, 0x8b, 0xce, 0x79, 0x39, 0x02, 0xb2, 0x6b, 0x3f, 0x18, 0x61, + 0x45, 0x84, 0xa7, 0x11, 0x2f, 0x3d, 0xcc, 0x36, 0x2e, 0x2b, 0xe4, 0xe7, + 0xa4, 0x39, 0x01, 0x85, 0x84, 0xc0, 0x39, 0xb3, 0xeb, 0x5f, 0xea, 0xd8, + 0x58, 0x32, 0x28, 0x6a, 0x9c, 0x00, 0x9e, 0x3e, 0x65, 0x79, 0x41, 0xb3, + 0x95, 0x0c, 0xcb, 0x21, 0x52, 0x61, 0x46, 0x11, 0x2b, 0x0c, 0xa3, 0x39, + 0x21, 0xe8, 0xfe, 0x4a, 0xb7, 0x9a, 0xba, 0x63, 0x38, 0xb5, 0x63, 0x71, + 0x3e, 0x2c, 0x84, 0x99, 0x67, 0x97, 0xa0, 0xdf, 0xe5, 0x2f, 0x5e, 0xd3, + 0x6e, 0xf9, 0x53, 0x5f, 0xdf, 0x2e, 0x89, 0xfc, 0xfd, 0x73, 0x1f, 0x57, + 0x98, 0xac, 0xff, 0x00, 0x7f, 0x58, 0xe4, 0xea, 0x9c, 0x7c, 0x24, 0xff, + 0x00, 0x1f, 0x7e, 0x62, 0x20, 0xaf, 0x14, 0x7f, 0x7e, 0x37, 0xc4, 0x1d, + 0x7e, 0xd5, 0xeb, 0x5d, 0x84, 0x68, 0x98, 0x42, 0x27, 0xf3, 0x5a, 0x63, + 0xff, 0x00, 0x1e, 0xb1, 0x2e, 0xb1, 0x70, 0x61, 0xc4, 0xb1, 0x93, 0x6f, + 0x96, 0x3f, 0x6d, 0x1c, 0x5f, 0xef, 0xbc, 0x6a, 0x7e, 0xb7, 0xf3, 0xca, + 0xc5, 0x4c, 0x5e, 0xa7, 0xb7, 0xe5, 0x2f, 0xf8, 0xe6, 0x36, 0xde, 0xd9, + 0x9f, 0x97, 0xe8, 0x26, 0xf5, 0x7c, 0xab, 0xbd, 0xf7, 0x89, 0x2d, 0xf1, + 0x67, 0xb9, 0xbe, 0xf8, 0x39, 0xc6, 0x63, 0xe7, 0x0f, 0x59, 0x5e, 0x89, + 0xce, 0xf8, 0xc6, 0x7a, 0x95, 0xf1, 0x4d, 0xf9, 0xaf, 0x9b, 0xb3, 0x1c, + 0xf1, 0x57, 0x9c, 0xcb, 0x59, 0xfb, 0x8d, 0xd1, 0xca, 0x1c, 0xee, 0xba, + 0x67, 0xde, 0x6e, 0x6a, 0xb3, 0x66, 0x38, 0xe2, 0xff, 0x00, 0x19, 0x31, + 0x2e, 0xf0, 0xba, 0x98, 0xe2, 0x4f, 0xf6, 0xbb, 0xc4, 0x87, 0x17, 0x36, + 0x0c, 0x45, 0xc5, 0x54, 0xff, 0x00, 0xee, 0xab, 0xc7, 0x3c, 0x12, 0x62, + 0x63, 0x15, 0x35, 0x31, 0x92, 0x75, 0xf6, 0x5f, 0x2a, 0xe6, 0x9c, 0xd3, + 0x8d, 0x4e, 0x28, 0x9c, 0xd5, 0xee, 0xab, 0x91, 0xa3, 0x6d, 0xb5, 0xe6, + 0x62, 0xea, 0xeb, 0xc7, 0xdb, 0xc8, 0x94, 0x6a, 0x0b, 0x5c, 0xfb, 0x04, + 0x33, 0x2c, 0x49, 0xce, 0xf1, 0xe8, 0xac, 0xe0, 0x60, 0xae, 0x74, 0x83, + 0xfd, 0x71, 0x3b, 0xc2, 0x8b, 0xb9, 0xc1, 0x2d, 0xf2, 0x02, 0x49, 0x9e, + 0x09, 0x07, 0xca, 0x1b, 0x3c, 0x26, 0x58, 0x03, 0x24, 0xa7, 0x10, 0x25, + 0xa1, 0x5d, 0x89, 0xcc, 0x4c, 0xb4, 0x17, 0x18, 0x5f, 0xaf, 0xc6, 0x2b, + 0xf7, 0xef, 0x8b, 0x07, 0x56, 0xc5, 0x6d, 0xe8, 0xdb, 0xdf, 0x71, 0xcc, + 0x78, 0x8f, 0xce, 0x3d, 0xcf, 0x97, 0x27, 0xa7, 0x8e, 0xbc, 0xa7, 0x7a, + 0xba, 0xfa, 0x9e, 0xbe, 0xf9, 0xdd, 0x53, 0xe6, 0x49, 0x7b, 0x2b, 0xe6, + 0x32, 0xc7, 0x98, 0xef, 0x7f, 0x51, 0xe4, 0xbf, 0x19, 0x3c, 0xd5, 0xbc, + 0x9a, 0xe9, 0x98, 0xd3, 0xb8, 0xfe, 0xcc, 0x6f, 0x87, 0xe2, 0xc8, 0xae, + 0xd9, 0xf2, 0xce, 0x09, 0xcc, 0x33, 0x7c, 0x15, 0x18, 0xed, 0x86, 0x67, + 0x38, 0x99, 0xc4, 0x49, 0x59, 0xaf, 0xb7, 0xbf, 0x15, 0x8b, 0xa2, 0xe6, + 0xe0, 0x82, 0x2e, 0xbf, 0x1c, 0xcd, 0x25, 0xc3, 0xd3, 0xe1, 0x8c, 0xf8, + 0xcc, 0x53, 0xec, 0xe1, 0x39, 0xce, 0x27, 0x38, 0xf4, 0xd6, 0x9c, 0x12, + 0xe8, 0xb9, 0x16, 0x3d, 0xfe, 0x0d, 0xdc, 0x4f, 0x60, 0xf6, 0xc4, 0x54, + 0x3c, 0xae, 0xd6, 0x34, 0x3e, 0xea, 0x06, 0xa3, 0x10, 0xd6, 0x0b, 0xae, + 0x56, 0x05, 0x21, 0x88, 0x22, 0xb3, 0xde, 0x4d, 0xb9, 0x7e, 0x47, 0x8f, + 0x6c, 0x4d, 0x54, 0x62, 0xfb, 0xdc, 0x29, 0xe2, 0xaa, 0x1b, 0x33, 0xe7, + 0xbb, 0x5a, 0x2b, 0xe3, 0xc9, 0xf0, 0xf7, 0xcf, 0xce, 0xfc, 0xd4, 0x41, + 0x55, 0x33, 0x79, 0xfc, 0x63, 0xe2, 0x1f, 0xc3, 0xab, 0x86, 0x27, 0x5b, + 0x9a, 0x75, 0x06, 0x14, 0x8a, 0x8d, 0xbe, 0x27, 0xdc, 0x42, 0x13, 0x92, + 0xaa, 0x39, 0x9c, 0x3e, 0x37, 0x75, 0x72, 0xe4, 0xfd, 0x92, 0xe5, 0xa1, + 0x1c, 0x9d, 0x4e, 0x29, 0x30, 0xb3, 0x67, 0x86, 0xfb, 0x8c, 0xc7, 0x09, + 0xb0, 0x5b, 0x4a, 0x89, 0x9c, 0x22, 0x27, 0x09, 0x91, 0x12, 0xbc, 0x22, + 0x07, 0xc8, 0x10, 0x04, 0x39, 0x2d, 0xeb, 0x49, 0x0f, 0xbe, 0xb4, 0x37, + 0x69, 0x26, 0xc0, 0xdf, 0x98, 0x9f, 0xf6, 0x29, 0x92, 0x24, 0x0b, 0xc3, + 0xa3, 0x25, 0x83, 0x24, 0x6e, 0x22, 0x90, 0x60, 0x25, 0x09, 0x14, 0x12, + 0x05, 0x5c, 0x0d, 0x29, 0x11, 0x81, 0x80, 0x84, 0x11, 0x4a, 0x46, 0x19, + 0x12, 0x29, 0x00, 0x45, 0x43, 0xcc, 0xfa, 0x0b, 0xf0, 0x9a, 0xcf, 0xb9, + 0x99, 0x22, 0x2f, 0x92, 0xf5, 0x3e, 0xba, 0x7c, 0xc9, 0x0e, 0x1f, 0xd3, + 0xc4, 0x66, 0xdf, 0x79, 0xa9, 0x6a, 0x3e, 0xf5, 0xba, 0xe8, 0x2b, 0x5d, + 0x19, 0xaf, 0xd7, 0x04, 0xb0, 0x7a, 0xf8, 0x1f, 0x9a, 0xd4, 0x4f, 0x99, + 0xea, 0x58, 0xa9, 0xd7, 0xc7, 0x29, 0x25, 0x98, 0xd7, 0x82, 0x33, 0x18, + 0x9b, 0x59, 0xef, 0xcd, 0x02, 0x96, 0xc3, 0x12, 0x7a, 0x20, 0x96, 0x30, + 0xde, 0x63, 0x0e, 0x27, 0x9a, 0x21, 0x22, 0x3c, 0x39, 0xf7, 0x18, 0x9f, + 0x11, 0x88, 0xd1, 0x3a, 0x67, 0xf3, 0xbf, 0x67, 0x69, 0x8b, 0x1f, 0x04, + 0xf1, 0x8a, 0xa6, 0x72, 0xcb, 0x08, 0x4c, 0xac, 0xe3, 0x37, 0x13, 0xf5, + 0x1c, 0xf1, 0xe2, 0xba, 0xde, 0x6f, 0xd1, 0xe6, 0xe3, 0x71, 0x3d, 0x50, + 0xf5, 0x9b, 0x1b, 0x7b, 0xef, 0x33, 0x5d, 0xc9, 0xcf, 0x04, 0xe6, 0xdf, + 0x31, 0x6e, 0xb4, 0x93, 0x11, 0x99, 0x2c, 0xe3, 0xaf, 0x16, 0xdb, 0x01, + 0x6c, 0xe2, 0xf1, 0x46, 0xa6, 0xa2, 0x0e, 0x44, 0xc7, 0xcd, 0x35, 0x35, + 0x12, 0x91, 0xdb, 0xfb, 0xf5, 0xcc, 0x7c, 0xd5, 0x19, 0x5b, 0x4b, 0x9a, + 0xce, 0xe0, 0x94, 0xa8, 0x9e, 0x4d, 0x5d, 0xe9, 0xcc, 0x15, 0xe6, 0x7d, + 0x2e, 0x3b, 0xdf, 0x12, 0x4b, 0x33, 0x07, 0x70, 0x93, 0x7f, 0x12, 0x5a, + 0xe3, 0x3e, 0x73, 0x29, 0x6f, 0xbb, 0x08, 0xa8, 0x7a, 0x73, 0x24, 0x52, + 0xec, 0xe1, 0x99, 0x8b, 0x3d, 0x7c, 0xee, 0x32, 0x61, 0x54, 0x7a, 0xe3, + 0x64, 0xbb, 0xf5, 0xbb, 0x43, 0xa3, 0x73, 0xb8, 0x92, 0x67, 0x85, 0x4f, + 0x2c, 0xcc, 0xa5, 0xdc, 0x1b, 0x04, 0xdc, 0x65, 0x78, 0xb4, 0x68, 0x8c, + 0x7d, 0xe9, 0x0a, 0xb4, 0x90, 0x87, 0xfb, 0x00, 0x5d, 0x53, 0xf8, 0xf4, + 0x04, 0x11, 0x29, 0x43, 0x85, 0x92, 0xad, 0x16, 0xa3, 0x21, 0x72, 0xe7, + 0x02, 0x08, 0x56, 0x32, 0x26, 0x06, 0x14, 0x45, 0xc0, 0xb8, 0x60, 0x16, + 0x13, 0x35, 0x71, 0xbd, 0x1a, 0x7e, 0x67, 0xa3, 0x77, 0x71, 0xc5, 0x09, + 0xbb, 0xcd, 0xaf, 0xfd, 0xac, 0xcd, 0x56, 0x6a, 0x9e, 0x40, 0xdc, 0x4d, + 0xa8, 0xdc, 0x1d, 0x54, 0xed, 0xdd, 0x0f, 0xd4, 0x9e, 0x71, 0x51, 0x88, + 0xb3, 0xea, 0x57, 0x31, 0xdd, 0x65, 0xe7, 0xcc, 0x3a, 0x8b, 0xce, 0xdf, + 0x0c, 0x8b, 0x35, 0xe7, 0x0f, 0x2e, 0xf5, 0x75, 0xdb, 0x88, 0xc0, 0x9f, + 0x2e, 0x03, 0x9f, 0x15, 0x72, 0x56, 0x59, 0xee, 0x32, 0xb0, 0x55, 0x87, + 0x9e, 0x54, 0x38, 0x72, 0xc6, 0x3e, 0xfe, 0x33, 0x3d, 0xdd, 0xc7, 0x33, + 0x89, 0xb7, 0x30, 0x7c, 0x3e, 0x43, 0x4f, 0x8c, 0xf6, 0xfa, 0x37, 0xe7, + 0x50, 0xe9, 0x26, 0x82, 0xe7, 0x64, 0x72, 0x5a, 0xb5, 0xa9, 0x88, 0x71, + 0xad, 0xee, 0x36, 0xaf, 0x88, 0x5e, 0x2e, 0x25, 0xc3, 0xf5, 0x03, 0x98, + 0x9b, 0x94, 0x31, 0xf0, 0xf1, 0x87, 0xdd, 0x79, 0xc3, 0x38, 0x36, 0x45, + 0x49, 0x12, 0xc6, 0xd3, 0x8d, 0xc4, 0x4b, 0x69, 0x15, 0xd3, 0xbb, 0x31, + 0x57, 0x32, 0x79, 0x17, 0x8b, 0xfb, 0xfa, 0x25, 0x85, 0x74, 0xe6, 0xed, + 0x84, 0xc5, 0xb1, 0x12, 0x1d, 0x55, 0x2d, 0x3d, 0xd9, 0xb9, 0xaf, 0x7a, + 0xc3, 0xcc, 0x38, 0xab, 0x2a, 0x2b, 0x15, 0xd4, 0xe2, 0x55, 0xc9, 0x5a, + 0x98, 0x5b, 0x90, 0xd9, 0x9c, 0x49, 0x96, 0x61, 0x95, 0xa3, 0xa6, 0xb0, + 0xf3, 0x13, 0x02, 0x40, 0x6f, 0xc2, 0xf6, 0x0c, 0x51, 0x12, 0xfd, 0x57, + 0x0c, 0x8d, 0xed, 0x5b, 0x22, 0x61, 0x87, 0x38, 0xf6, 0x1f, 0x33, 0xc9, + 0xb0, 0x54, 0x5b, 0xac, 0x91, 0x77, 0x10, 0x05, 0x64, 0x6c, 0x70, 0x94, + 0x8a, 0x08, 0x7d, 0x0c, 0xa7, 0x49, 0x95, 0xdc, 0x05, 0x91, 0x4a, 0xbc, + 0xd9, 0x04, 0x84, 0xa0, 0x3f, 0xda, 0x0b, 0x61, 0x66, 0x00, 0xd8, 0x02, + 0xa5, 0x78, 0xf3, 0xc6, 0x96, 0x85, 0x44, 0x98, 0xe4, 0x48, 0x08, 0x82, + 0xaf, 0x33, 0x8a, 0x1a, 0x95, 0x4d, 0x21, 0x2d, 0x91, 0x66, 0x96, 0xc6, + 0x28, 0xe6, 0x0b, 0x67, 0xc9, 0xe7, 0xe4, 0x0c, 0x8c, 0xce, 0xe0, 0xa2, + 0x78, 0x10, 0x3d, 0xc4, 0xaf, 0x51, 0xf0, 0x93, 0x0b, 0x39, 0x49, 0xaa, + 0x88, 0xd4, 0x93, 0xd6, 0x7d, 0x99, 0x5e, 0xda, 0x85, 0xd6, 0x34, 0x3f, + 0x2b, 0x2d, 0x77, 0xb1, 0x5c, 0x64, 0x6b, 0xf3, 0xbc, 0x69, 0x08, 0x89, + 0xaf, 0x99, 0x02, 0x23, 0x2c, 0x95, 0x98, 0x85, 0x8e, 0x62, 0x6e, 0x8a, + 0x18, 0xc7, 0x61, 0x14, 0xc4, 0x75, 0x5e, 0x6e, 0x17, 0xa7, 0xcc, 0x31, + 0x73, 0xe6, 0x60, 0x87, 0xa7, 0xc7, 0x96, 0xb7, 0x03, 0xf5, 0x2e, 0x58, + 0xac, 0x4c, 0x2a, 0x58, 0x92, 0xe2, 0xd8, 0xd7, 0x41, 0x4a, 0xcf, 0xa4, + 0x2d, 0xe9, 0xf9, 0xae, 0x58, 0x87, 0x73, 0x71, 0xda, 0xc4, 0xbd, 0xeb, + 0x16, 0xf7, 0xc1, 0xdf, 0xdc, 0x6e, 0xad, 0xad, 0x37, 0xf5, 0x19, 0x63, + 0x9e, 0xbc, 0x32, 0x63, 0x19, 0x67, 0xe2, 0x6e, 0x51, 0x6d, 0x88, 0x17, + 0x59, 0x49, 0x94, 0x62, 0x0f, 0x6d, 0x7c, 0x2d, 0x6b, 0x12, 0x24, 0xc6, + 0xee, 0x71, 0x98, 0xab, 0x14, 0xca, 0xa3, 0xd1, 0x03, 0x57, 0xcf, 0x52, + 0x79, 0x30, 0xe5, 0x6d, 0x45, 0xc6, 0x66, 0xb0, 0x3b, 0x71, 0x33, 0xb9, + 0x17, 0xcd, 0xfc, 0xe0, 0xcc, 0xb6, 0xe1, 0x67, 0x94, 0x96, 0x36, 0x1d, + 0xaf, 0xf4, 0x99, 0x9c, 0xbd, 0x6b, 0x94, 0x98, 0x3a, 0x61, 0x06, 0xee, + 0x0b, 0xb3, 0x7d, 0x53, 0x3d, 0x3d, 0x98, 0x66, 0x0b, 0x55, 0x35, 0x26, + 0x54, 0xbc, 0x76, 0x77, 0x84, 0xf1, 0x08, 0x90, 0x88, 0x8b, 0x85, 0xc4, + 0x77, 0x42, 0xcf, 0x16, 0x39, 0xe9, 0xf2, 0xb8, 0xad, 0x25, 0x87, 0x23, + 0xfd, 0xca, 0x92, 0x6f, 0xce, 0x5b, 0x04, 0x84, 0x0b, 0xd7, 0x70, 0x2e, + 0xb1, 0x21, 0x16, 0xce, 0xc4, 0x10, 0x73, 0xc8, 0x5c, 0xde, 0x67, 0x35, + 0x62, 0x5a, 0xac, 0x5d, 0x1f, 0x7e, 0x71, 0x26, 0x39, 0x13, 0x08, 0x6f, + 0xfe, 0xd6, 0x13, 0x50, 0xbb, 0xce, 0x33, 0x77, 0x81, 0xd6, 0x32, 0x9b, + 0xf2, 0xd1, 0xea, 0x86, 0xd7, 0x93, 0x70, 0x74, 0xc4, 0x0f, 0xc3, 0x75, + 0x15, 0x11, 0x30, 0xb7, 0xeb, 0xbc, 0x96, 0x4f, 0x70, 0xd7, 0x4b, 0xd6, + 0x7f, 0x67, 0x08, 0x99, 0x26, 0x2d, 0x6b, 0x39, 0xb9, 0xce, 0xd2, 0xa7, + 0xaa, 0x33, 0x48, 0xfb, 0x66, 0x0f, 0x1f, 0x27, 0x99, 0x60, 0x9b, 0x63, + 0x96, 0xc7, 0xc6, 0xa7, 0x1d, 0xb5, 0xa7, 0x5b, 0x98, 0x74, 0xe7, 0xad, + 0xf5, 0x49, 0xbf, 0x98, 0x8f, 0xbc, 0x3c, 0xf3, 0x7d, 0xa1, 0xf5, 0xdf, + 0x8b, 0x25, 0x64, 0x88, 0x05, 0x95, 0x1d, 0x96, 0xc2, 0x5b, 0x88, 0x66, + 0xfb, 0x4f, 0xa8, 0xa8, 0x1e, 0x3d, 0xc2, 0xa9, 0x8a, 0xf9, 0xee, 0xba, + 0xa8, 0x92, 0xb3, 0xc8, 0xa8, 0x9e, 0xc6, 0x08, 0xc1, 0xb6, 0x08, 0x2b, + 0x79, 0xac, 0x0f, 0x2b, 0xa8, 0x2f, 0x51, 0x13, 0x17, 0x1b, 0xb8, 0x99, + 0xf1, 0x05, 0x3c, 0x0c, 0x3b, 0xab, 0xa9, 0x9b, 0x9f, 0x77, 0x49, 0x96, + 0xe7, 0xbe, 0x5e, 0x4b, 0x31, 0x79, 0xb8, 0xf1, 0x0d, 0xc1, 0x78, 0x67, + 0x31, 0x6c, 0xce, 0x21, 0x7b, 0xc3, 0xd4, 0xdc, 0x2a, 0xc8, 0x1a, 0x19, + 0xa8, 0x39, 0xa7, 0xd1, 0x31, 0x61, 0x52, 0xb6, 0xdb, 0xac, 0xe2, 0x33, + 0x8e, 0x39, 0xcd, 0x78, 0x6b, 0x8a, 0xce, 0xc9, 0x21, 0x98, 0x41, 0x65, + 0x26, 0x32, 0x4d, 0x55, 0x19, 0x0b, 0x82, 0xeb, 0x81, 0x7f, 0xdd, 0x33, + 0xde, 0x74, 0x48, 0x81, 0xb3, 0xe4, 0x84, 0x37, 0x90, 0xe6, 0x99, 0x95, + 0x04, 0x8e, 0x24, 0x13, 0x48, 0x5e, 0x0f, 0x63, 0x28, 0x84, 0x0c, 0x39, + 0xac, 0xe3, 0x80, 0xcf, 0x7a, 0x99, 0x92, 0xdf, 0x8d, 0x53, 0xe5, 0x62, + 0x66, 0x26, 0xa2, 0x02, 0x56, 0x62, 0x3e, 0xd5, 0xb3, 0x70, 0x9f, 0x89, + 0x48, 0x82, 0x63, 0x8c, 0xe2, 0x98, 0x9c, 0xee, 0x02, 0x46, 0x62, 0x9a, + 0x77, 0x76, 0xbb, 0x02, 0x75, 0x0d, 0x18, 0xf2, 0x2d, 0xe8, 0x99, 0xac, + 0xc9, 0x76, 0x01, 0x31, 0x99, 0xd9, 0x27, 0x6b, 0x76, 0xc6, 0xf0, 0xdd, + 0x12, 0xcb, 0x30, 0xf7, 0x36, 0xb3, 0x14, 0xc1, 0x35, 0xb8, 0xcb, 0x22, + 0xd3, 0x89, 0x30, 0xcc, 0xc6, 0x24, 0xcd, 0x50, 0x43, 0xee, 0x07, 0xb3, + 0x56, 0xb8, 0x39, 0x87, 0xb6, 0x22, 0x8b, 0x69, 0xf0, 0x5b, 0x13, 0x2f, + 0xd5, 0xf1, 0xa8, 0x8c, 0xad, 0xe2, 0x6d, 0x99, 0xf1, 0x28, 0x13, 0x11, + 0x60, 0xd1, 0x55, 0x25, 0x90, 0x15, 0x11, 0xe1, 0x9b, 0x96, 0xef, 0x17, + 0x53, 0xbe, 0x28, 0x96, 0x0f, 0x8e, 0xa0, 0x8c, 0xb5, 0xda, 0xb9, 0xa3, + 0x38, 0x59, 0xc1, 0x31, 0x37, 0x31, 0x83, 0x73, 0x9f, 0x8f, 0x33, 0x31, + 0x7c, 0x8b, 0xd1, 0x64, 0xb5, 0xac, 0x0b, 0x50, 0x65, 0x31, 0x37, 0x08, + 0x10, 0xf0, 0x4e, 0xab, 0x41, 0x5e, 0x5b, 0x63, 0xa1, 0xfa, 0xf3, 0xc9, + 0x9c, 0xc9, 0x48, 0xc7, 0x9a, 0xc4, 0x64, 0xcd, 0x2c, 0x48, 0x5a, 0xc7, + 0x29, 0x28, 0x71, 0xd3, 0x9a, 0x82, 0x28, 0x67, 0xea, 0x89, 0xa8, 0xe3, + 0x62, 0x8f, 0xb0, 0x94, 0x95, 0x9d, 0x02, 0x42, 0x01, 0x38, 0x90, 0x61, + 0x5f, 0x5a, 0xee, 0xaa, 0xca, 0x12, 0x55, 0x22, 0xdf, 0x2b, 0x48, 0xc3, + 0x64, 0x12, 0xb7, 0xe5, 0xfe, 0xf6, 0x76, 0x4e, 0x34, 0x9e, 0x09, 0xc0, + 0x47, 0x96, 0x2e, 0x30, 0x14, 0xc8, 0xae, 0x22, 0xa4, 0x00, 0xa0, 0x62, + 0x9e, 0x70, 0x28, 0x69, 0x01, 0x01, 0x9d, 0x0a, 0x94, 0x28, 0x25, 0xa5, + 0x8e, 0x59, 0x8d, 0xe4, 0x11, 0x26, 0x25, 0x42, 0xfa, 0x81, 0x2a, 0xb9, + 0x29, 0x21, 0x38, 0xa0, 0x9d, 0x66, 0xd3, 0x58, 0xa2, 0x19, 0x22, 0xf9, + 0x71, 0x78, 0x9e, 0x95, 0x32, 0x49, 0x3b, 0xc3, 0xe0, 0x9a, 0x16, 0x78, + 0x4c, 0x60, 0x56, 0xc9, 0x1e, 0xd8, 0x72, 0xcc, 0xc4, 0x67, 0x75, 0x44, + 0x5a, 0x93, 0x32, 0xc5, 0x8e, 0x30, 0x2e, 0x25, 0x75, 0x6c, 0xf4, 0x30, + 0xe1, 0x33, 0x77, 0x0b, 0x13, 0x10, 0x34, 0x15, 0x31, 0xf3, 0x0c, 0xe0, + 0x26, 0xa2, 0x21, 0x9d, 0x42, 0x90, 0x5c, 0x6f, 0x26, 0x22, 0x3d, 0x70, + 0x1b, 0x9b, 0x4b, 0x7a, 0x88, 0x8a, 0x9f, 0x46, 0x2e, 0x88, 0xdf, 0x37, + 0x87, 0x2e, 0x1d, 0xe7, 0xcb, 0x64, 0xc9, 0x32, 0x16, 0x47, 0x25, 0x23, + 0x61, 0x31, 0x9f, 0x04, 0xce, 0x2d, 0x09, 0xbc, 0x6a, 0xce, 0x5c, 0x6c, + 0x83, 0x06, 0x98, 0x98, 0x92, 0xe3, 0x18, 0x16, 0xe9, 0x6f, 0x90, 0xb7, + 0x0d, 0xe9, 0xd1, 0xdc, 0xd6, 0x1c, 0x78, 0x88, 0x84, 0xa0, 0x99, 0x69, + 0x68, 0xa4, 0x14, 0xf1, 0xd2, 0x88, 0x86, 0x6c, 0xa6, 0x89, 0x49, 0x45, + 0x20, 0x8a, 0xf9, 0x9d, 0xa3, 0x39, 0xa9, 0x60, 0x8e, 0x0d, 0xe1, 0xe2, + 0x21, 0x8e, 0x70, 0x02, 0xb4, 0x92, 0xae, 0x08, 0x82, 0xa6, 0x11, 0x83, + 0x22, 0x20, 0xb0, 0xc7, 0x2e, 0x10, 0x08, 0xf3, 0x22, 0x3c, 0x67, 0xc8, + 0x6b, 0xf4, 0x2b, 0xfd, 0xfb, 0x41, 0x11, 0x04, 0x44, 0x44, 0x91, 0x1a, + 0x44, 0x69, 0x13, 0x27, 0x1c, 0x57, 0x1d, 0x3b, 0x58, 0x86, 0xae, 0xbb, + 0x86, 0x43, 0x67, 0x63, 0xb6, 0xeb, 0x39, 0x5b, 0xca, 0xc8, 0x84, 0x93, + 0x08, 0x8f, 0x05, 0x11, 0x8a, 0x54, 0x35, 0x2c, 0x32, 0x71, 0xf2, 0x0d, + 0xd2, 0x61, 0xc0, 0x22, 0x66, 0xea, 0xdf, 0x30, 0xf2, 0x64, 0x32, 0x78, + 0x53, 0x77, 0x44, 0xfe, 0x9b, 0x8e, 0x6e, 0xe8, 0x4c, 0x7e, 0xf2, 0xff, + 0x00, 0x9c, 0x9d, 0xf2, 0x30, 0x61, 0x88, 0x6d, 0x1c, 0xee, 0x32, 0x9e, + 0xe4, 0xf1, 0x1c, 0x62, 0x19, 0x07, 0x18, 0xba, 0x27, 0xc3, 0x06, 0x63, + 0xeb, 0x86, 0xbe, 0x96, 0xcf, 0xb9, 0xe1, 0x29, 0xd0, 0xca, 0x4f, 0xd3, + 0x9a, 0x58, 0x99, 0xe3, 0xf4, 0x8d, 0x57, 0xed, 0xc7, 0xcc, 0xb9, 0x4e, + 0x32, 0x04, 0x0b, 0x1b, 0xfe, 0xa2, 0x3a, 0x65, 0x6a, 0x99, 0x9e, 0x5c, + 0x0e, 0xeb, 0x44, 0x63, 0x37, 0x97, 0x7d, 0xe2, 0xb5, 0xc1, 0xa8, 0xed, + 0x91, 0x26, 0xe8, 0x91, 0xee, 0x28, 0xff, 0x00, 0xd8, 0x4c, 0x72, 0x43, + 0x2b, 0x3b, 0xd0, 0x34, 0xdd, 0x4f, 0x05, 0x68, 0x84, 0x38, 0x90, 0x26, + 0xe5, 0x4b, 0x59, 0x4c, 0xc8, 0x72, 0x41, 0xf7, 0xf9, 0x66, 0xc7, 0x95, + 0x18, 0x03, 0x81, 0xaa, 0x87, 0x08, 0xd2, 0x36, 0x07, 0xb0, 0x6f, 0x0c, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x40, 0x05, 0x00, 0x60, 0xff, + 0x00, 0xfc, 0x29, 0xfc, 0xc5, 0xc7, 0x65, 0x75, 0x2d, 0xc9, 0x59, 0xb9, + 0x9e, 0x28, 0x42, 0x83, 0x91, 0x8f, 0xeb, 0xff, 0x00, 0xce, 0x9d, 0x97, + 0x77, 0xf0, 0x7e, 0x15, 0xff, 0x00, 0xe9, 0x03, 0x3f, 0xae, 0x79, 0xbb, + 0xfa, 0x1f, 0x5c, 0xfe, 0xe5, 0xa8, 0xfc, 0x2b, 0xd5, 0x7f, 0xf9, 0x90, + 0x09, 0x83, 0x9b, 0x62, 0xd7, 0xb7, 0x6f, 0xff, 0x00, 0x32, 0x01, 0x83, + 0xf4, 0x7c, 0x29, 0x6a, 0xbd, 0xaf, 0xc2, 0x0d, 0x99, 0x67, 0x29, 0x97, + 0xf4, 0x85, 0x9e, 0x0e, 0xbf, 0xfe, 0x17, 0xff, 0xd9 }; -unsigned int background_T3T1_jpg_len = 36707; +unsigned int background_T3T1_jpg_len = 50577; diff --git a/core/embed/models/T3T1/background_T3T1.jpg b/core/embed/models/T3T1/background_T3T1.jpg index 64a332b4b894e4282b2fc662baa1f27e5ca34b83..a8f06e46866f5c019ab10e0fad80ddca37439e70 100644 GIT binary patch literal 50577 zcmeEuby!thx9_66L6DG^lG-##cS<86z3Fa{5|9SzP>}9c8bm}vx<g8k4w06SxNBp) z?-%Dh=bq>OcfSd9uQA8`%`wLqGxl0*thKK{T`vN-3NrFC02~}VKo0%^*I%%4rM;{z z06<=z89)U900qE@Ljd4F3YJOXkZz8qAWim*wgG9zUl;_C<^+XdfkziGLqM7kJO+Z< zIt=lqZ4yWqf|(B<xT*Vnl$BRjrGl_=a<Fl6fGs&7+=3i@f}EUG5KcjEK0z*Sur*xv zU%G%I05sqV_$d{p9RT-}E`^c5Xjqr<pms3LNI)9lm!`;I8ToHC(cdh9ga0Y#4y^4j zdJ_|D04CI%zw5vI4(1vVc|8kA0;tHyD9A{tC@3gsXsGCzgjkpu7?`*532+E0NGb17 zkdl*A(Xla5(cGgYCuihiy2ruE&CN~8ARx>SxzEPM4S@-PLqkKu#K0uM!XklClT$<f zuhVrqfQJfdREhvc1Hj|KA>hGXe*h>!J(1vU(oa*sGCTqz5;6)Z8af6DsKbSM3IQGw z0SO5a5v=tC>j6YOBz$U4abyBD6BHU}LdcW&98_9~ns-F%BYSjQrY=Ef=(mVTZj;jA zWng4t=H}t$;};N=l#-T_m6KP{(A3h_d8n&rW)8Kmw6eBwb#wRd^z!xz4tW|H79J6q zkeHO5lA4zOJU1`Dps=X8r1aJ6+PeCN#-`?u_a8dDK6dx?j*g8_Oiq28p82x0yt2Bs zzOlKre{gto{Qczg>>Oqn95|@I(@)F($u2z5E_g&l1Vj{=U2yQ8FvIZ>k*GP5@x|3p zOq>a5AWu*UCE{~x-l5TQsqYb)x{RRTqT~KTzYjC*#<KsJVL|^Z%l;Vlmt8XeCITEd zcnElaC~(xvSUU6cg48~`!IQO~af)GKraWkXyF0k7`26|a5W$7Qcx91!L(;oj{tuV= z`A>Md`<5P`y<Sshq4egu=wvhbbnabQF}C}F<h;80g?i0{H{QT`H_Pf+#b=Lz!RPKT zIszuq1;WfW4=XkmPwH62kJAIX(tO49u$v3AF0YLCtI|{|JOWk=MFqu6<_WH9NBVDx zWQx#@$X;}^2J9~8i`*SSx%ja2cDMN~(;Xx68en~1sNXZBi^XPKbM)+j?wsKgapxM? zEmd23gnJG2tIS^gsLI4&lAM@5EJLHcQyw5F5cF|4?}HE1HIP<Nb$Lmc_kolXM*r*| zUWreAA-yC-F5t~I;Fq<Zmv--Q@Ah*=zj>AZ%ezMVC8_E)0WIDLesn~OG;|bv0SlHF z)*e1w&rb1*KwX3M%RGL(?(&aj`fL|)I1(Uuc8E12OBuu5+H=BINV!LSMd*t3EJqyC zoP5NP$ZQGAQaMTZ%|$fIo<O%~rqA1_t@6a-wbuYgaqOB1z4-Q)a7iHx*|?fCCzAJ2 zXNC06QJJl#>HUFGzBUe&!z!67=F`rTdvCX+v-;H^W8Gov@9#`oeRek?l1o)pO_~r; zkF+O*gOFCoXc3NYSiyg_*Uq!ajsZV_;h54<KB6o#t;U(ad+KB2ODTcqOpMtmI^v5M zAM5smBuKty5Sd&9a13XW>$dvu-W~{jx(41}1Fz~(ah!7_StQ_Fi<T+pUtI&0kN{4@ z3PX+k#DdgI=ftzf2PS!)#kr9|L6J|_m{$O%w#Po`K#jD{;q0*5dP8<L2Gw|}P3jEU zuzFM>Wd|dI8fkggL?nAg0Qz`TN#iw;VtY1>B2K1N{JAN4lFsPN{B5Q}^HJF~a8Kiq z8*YMDGr6}a;;zw|=Yt;`V;>{$UISU?*Fakg;C7?~jwPDZ!r|Aflab2jfw$^>$*uv~ z&afZXzz-H}Et^xmE7=z~C)dDt?HssonrhNkVme8_VCz)M^JRuZqOIeVYv6Xk>c^|b zo{LU~>XBtabv0ErJ)`5o^arVzCWWeS(uDt-4I>Oa4Z|j3{ZWAZO=ewP16REh$$Brb zuYvgO2iHKrH2}52y|XDzs2zgj&DZ5nPkG$+V2x$cw#T2#ZyN{JyB_GcF2?-a>|C^f zNm8iDgX7S2F(g8@f6YGdb>5er3gd8QJY|c^*8tJyUp+>X)?JXgF251Fyaq0li^U$l zAym`DC0coV`|3ChHaHbN6W$D60dI<~fvMY~&qu*o!zoRuNvM+u8aI}I4Lr221z=O> zpR<ltg~22D-f=iP9(ymw^^ZQDH$K%7snBmj71*E5yfJy4O86j>u>uwSKs1Ij0JIyN z96VJ9RkWvLCr8)7A1kfE=@EGlP|iK$mbHz=8;H)B`>%NmuPn7PLNAbw1)P;;S>&4w z$73)zu4$F!@7*4X<z6`7{5c`B8FM3t1FL9G$F5%g?(`8@oVa?e@>7TW@1*xFA{mPr zgC4Y5*KUfO6%PN~k<>4pc&d*+4ri~|><EybE-Qo0!>$2wo0W;O(o<j8Wk0^F=B!Jk zVlh9ApJR#BRdw9#`O~+@-Zv%3OXt+H3fSz?Od@4Qr%v2`ZZB~4Uv;TxGm)+{K8%!X zv+YljaXJg@5*!{eo8{!Ps#6!&W&4{h;lM5leovp`o@WYiZcLDCV1sCzXZ<a4dH)q@ zeIvr9au?bWChC<JXs?KGZty#*@A<`ysE7wlywAiHrGdL68;mo;NUVgw3)$>Et0Tf% zRe1Y5K{0uwDUpD3-snFO@KxC*;>9JsR`BgSGZ&na3^7M@*s&{Dcy&(gQ$-i#wbs6} z^n(itWF7)X_rxf(xre#tz@dEwU*oG^6kv0zuUd!EG(*!ZIz#?!RbNvbVTG*wq9tYd z_FCDL<vy91AVY*huJi}&&u*gMI5$tpBbS*m{_RxwH9hX6Tc8UjMxN}3=owABkwr}! zkVWw3eB7&|9OC&hBb?MQ6QbJDlJ9{UJQ2}eRmyG8%StIzJGS(rT8cpQv+&T8i**j< zm{3hy4xHX_>u+zlaRz)j9#`X{&w0P-TGJ>R-|72<hGYdQ9OD<@>PR$SUO$%YRUi>t zl!ItI)%Wt=2>tMJOOyb_w`hjs8o&oPn~PFixp%pd%rb;((!jrFjTs5cMlIl_5BAkK z+~!+UZpu1aoB(DEA)anJ=Qqv%l04tEhP+rLjBrjZX2y#Ny6;avE6ds=p?vDbW0eBR z<Gk4bymh+RalF3|+o~3NT&*o5)cmM8+dqvw)+;Hs-rH)1c1CYuy5>mAN1qV}m5XmN zv1k~L(T~>YN9iU-P{(yGs4eUhrT+X*_?Lwpu-Edw=;1y&L@vF){_-L}7F%TNiXp3g z3JuZUF56?vKl!NP{QzL)PZHAo!oi`2yNNvdh%&G+WbjoaV;LQ|^nl;_Kr~u}6q{yp zQON<GB^uoOIu^zbs%}vQiEpuN$LK2uKOC)e`|;#Q({PFK#~ez9Gsh34%3aS&hpb&1 zQy3UOhYde7WhQ014Q|ZTPyb=#(~OgXCb9AFicu83cf`B~98QBM1^DzOBMQ401HFts zTqPg5yNF_62wVfG*Fb0<7aKd<+sEubXis(aC@XC%%jEuY=5N8?I-S=5miPCOZ712x zw8&+I?5kTBrx&&pHW+;m9n071G7&l<gzm!c^1FP4w$vhD<|Z^#5?etw1Xl-=0<U)3 zG%i<!v0NvR{$Y>yyaq7uL)@!yW$)D_+S*1GFcbzn4Imi$Vj!H4<t&(6Vk!q<uUA(U zwGw|>*;@}Yu46{}kky)T-b6W8z#TFef{6((f%3TANJikFGQzX{g`m8Bt;jy)PsgY- zw5}slKMGrMwD$&!^5(d8QW84E+wT>jZ1|9#zk1#s%du51j5?qwsdR?%HQ|TacX_|J zg6HdBJ>DMf;9Tx8{-CJ3_#t@>_@WEQx~@3BQrtNk`7ST~UtuKHyBEw8XAetuYG1T8 zg{Vp$G;P$Bn4RlP8kyCBU%^%ZyH8Z)Xre9+<g&gM6S_PdVmbBRo3X_xuCq6#ilH1p zYH^Va@P3<J^)NTm6f`j{D3UQ79?Uq`)8G{$7N3=yo0A|ryMrs6iMgXGl+Dc1p54pD ziJg;;gB`dp>g8l&W(#$rGKE@NI|$S4w!EdGvNji{(cw|%P<E1pT3O5axIi_0R5Z<e zY|RABX+%Y+?t2M(**n=o-At&w?Cl&}1-*o6ZiEYhG>pwoLv;gjvlXU!2woUUI=Voq zxY@YbI9S08R1XLZD8t3vLQq{w=9dJpBuw*5RZmY(Hcu`#M;A+WP5}V{b`A(T1i}g; zSY5px+)TV!9b9RDOOS%Pnz>jzxmi0pP{Aacm^!+<3Dbc6|5VK0Nm==i;D74_dwZC+ zH)vNkX%DdRf9Ek*O>ZYCyE@d>(cQ%iD(wMvaHIX*+}!L>TPJrHyBh<{&Df!KP<s&O z3VNLLPgk((<v(bc!IswcPB$$;&;CJy^dHc_RUXzgXrZ8#qnSIb6L~3N8ki(Ob4N34 zbHN+Z%z}@Dp9{jrY60beuyUJ0O;}BMcm!C@OwBAfc}xYMyb%81a^xLc-Ao+JpfEY0 zWHxJ1h$#mz7pDck8LK&;g#{}&#KM%-ltVy()tr-qkAs7kpT~j|`n&xD7i(}Dnb`eZ zADA3-P>z|IIX54Ki<i}ckCTg)+nmdkl^@Dw1{V4GxXgH=P^cL<4VAf>pp2u7y$LuD z*7hcrP<9(9s3i>*%wK}ys`A1#5H^lqMO8Z!HwzFeOrvD&;O_N{t7&Zy)o?R`d5)70 z!odgOgYa_jb8-tn1b!j3p)RiAe1VC&xnFUkyr85D)WprvMbpvIPMGG;?F`sF`{`mi zYge$^``66XfI9!8?5wG7=8d3<8Eh5`)3};=K+S1>G0m(@94w*WdIHDvC(QcaxR{%t zkJEyi8_LSb$zjgQ&BbR14v__vm7AL%!eb`D%g4zFy5?tlS4RssPZJlYxFtB=pr+tx z-`seiV!ZJJ({G%o6%=M7cqfLHgAWv}$sr)f$u9`uW#NDba&XYF|3B29&jQNL$pNuo zHRmt^_2=Z|V-?^u0gJr+5N=aGeolUV$Zx&=*ZTjwlf=#OH~raROaA9ju>bQY-PHYU zdjQS7VS#%NjQq2OiBSC~{l^3U@xXsP@E;HS#{>WI!2f?9`0FAF>Hwapd4iWX*Gur# z@{*E9s_GA9<dvksfD{-^%C<AJcSQulTlNlaF6y!pRA6j`3S|R~vS9!O06TzXV&>{3 zuBxi^J3{lX$M2J{U=sk0vBG5iYyE%A!7>LgcEHFE6^Ifub8>M5X=9M)^>lNB(P<z} z2%d17gLFAa-*W*K1nEyOzUfc;D~z_hp}`0qNV{mNOM<q+;(Sz=f1^$RMw?l=*n=2u z5JP8f?*Ph&fB2I&hta+;+TP9`)a@q0EX0I5XlZ~)Ixv$1vVc6G45$KBfGOY(SOa!| z8^8)49YBsNpbpkc{1@#>Z`!MZtxUmI)_@t<LJDvM>;aRT_5f@QKn$4v@~x`{7vzQo zhbaL7NT08-59z^RXd(by#$8|k$hp40%mssqa{$op@K<}sYyjXt2KjM+@#wMu04D?h z>OcI&Gff46hA=Q7IqhWPVsg_DEItWu0R~<ViU0sh7XS!`0RUb9r{BOjSUr$81pu0$ zuapJ=ApJQ2+_eN{8~hh`!=kr;{Py2se);bvfcZO+_P;&e1Tg=%jeobh?f?Ur@DJhQ z5a7Vr-R}VA9ax+d5sdZ0T=6r(f#FLucmz}wbTANj`&aYdmEaKp5e^>d`d2Is7XcTX z%F|)PU4KLTorLRqqO`+K!5}`Yk;#A%uj-k(?)}-*ea@qa;ZERB;H@g*gSnEu-8<C* z!qu+zY@U>yS00_6IkUQsg0kc)kHq+KU4`U@R1BQAi?;=c&1hUMCocQ00iDXqZ;yU} zgpte1`UFpk{4OYvk~Z}XpZUmYm@_0iXE}dKG4XRx`<M5vyF&9NERhF|O{tJI1I2WA zHtEhmhbN=%6i7_NPJ)9dx-Xj=D^!2ffl+jQ-xKMyI<LIUcfo<!Y~6H$uFMJv)fH?= zCa!Gs!%f5zYX*@^+3?s>@NnI@s!eHRQ}Zdu+kwFSWb_S7o+~+V6dE)zI@-U(f}T)Y z!P57{i48j3m<ri2Kz|*F2rrHpB!0NgM^-4(-5Lnka<Lw5k}kHdI17+tO9hv&pb4oQ zl$U|3RyPrYsz$}TvPqkKhU;E(;g6F?p)z)`i#?q72RD@ofBh{8&wFeJDp~A&Trn4l z#OiO%k-3fKEWHOy27Ng$Z1mlY$qXhRR-6QI<$z#hUKDG4QB44_X<$7jBmGi@EB_%5 zjXw}gXmF{zj78y~wkZ{V!vG`Rg-zOdP7EB@yXbc4qcgF^U|-t$TM|4SPY{FTuod$n zs3^j`HMNKey!CWaX+U>^O_18l1>(S6z=ea$m^WpDM+`tNIapBVth@!#Ey>g20(5I0 z$w<1|Iz*k$H<}USuNWvCHiBDF946L4px$Gh3Gi8nf<8aFu10GV8aMzSn~J>A{gWmU zlI}yD<W*;9Ht2^&Vwy#r<RXX|5F{RS=c=~;HTYZtk8H|$LX6X}JR+fSkQfy_wx#u) zW-^kRHmISAfp&6%uAUafM;f>zRdK5Jxs&6fx;Lr-Tq$|Oc!q6goC_ieY}fpi5KN`; z(KrYeCR3)|K@*BzEvUy=-VvwzM+{wtcy~LF|BSvdOy`U~KZUNwCm-T4!7riT39be} zLxx{(s}Qc)3Iwo}R@(~l45UC$kXZeOfJ@0_5nc&t$WQOFIZRM$pPyn^V<26S5^PWZ zmEfw!;!&u4FJUMP7%KS&6;6k1viKVV?rtFz`Ef2HzK_>NXH~!f8-J<4Wx?|y97x3e z3j}V}--P7p+R0De6xG9gPy+g3+%`N=9+~QIsFQSUPx3(v;PKMvtOHCIIMHl)K6E1n zgKPaydR$z>tg;;c<mFjy{Q_(h$WqQTVw~}@#e(twfB@iecri2fVf8yueSK$``cZv; zDl&~}KqB7XQ4dQ&VYM9@;OI06gPIkWH;k{?Mg+n|1pWmRPSZ+eaQ<Y{)xN{pYy)~# z3ffj=W+0a!hs^jF3iwW~u9>;+9R32awtg3;8CJ^q%NS>kC*46xs(<0&wsZ4KgnEN- zxf)Nt{0y70Igka7kxFK8v_Y$XCxnSk6HU#`LWmvn=<FoS9k=wi{CPU%1aL9`HgVv# zB&ti9(Syl($*k=UVXF**^;nd2X%QFG;I}AnNo^)nmodj4wA;yy&VB=hjeXbO3gYSP zrb8h93kCRyl`|{6ZhYNT!}7q1G#fy8knUK@I7Lhq_YcB0Bx=i;BNGPgOh@OiVZuJ^ zZ-w%70dypde+fg_eX6G0siQ?-`)Q(}5$4;XjD`t9+h}}%Gw?4M$~<~*emOHbF|V-o zH)2qK>t)tsS<+=X@^GpyvA=MXHq5;V+2u^i@p}59u<`Wh^HY~;>_$X@ofG^{e$ge& zkwHbVFYDE;9VlVardW^VNtdY-;9`Dbz@x}3EpVNxJMrpRJ21ddeXPgIq|4?2rqy34 zxMP}p(6cWYDpF?jqhVb-gI#ttF46^I+Wif7^eVrESs}P~I;Nm;05r4kqG95`Z7eRp zS^XCZWduDTyBLI7q@*m@fn)ySU_o=gk{gYRWbrQ)f-p0BVrwb$>GYe`#!HyX3~pQ& zCr9;B>@V2u5>;@YkvFvaK00@^P-JXvL~eDV!M(5l8%p3dC-|+ms^-F5;I(t8BnH?7 z@YJ4Qm}Vz{U%GH~fH)mKh(@Kum1i)S1A*e74VCK*g`i`&0BP^gBR0!6e943jT!1R> zMkqWQ__$5~SE1O$#$t%8^EvhFOnd-t2~9)7o7;CU5Dtg~MS(hs)4|ID@MtJp)w>{; zhwp6_Ut`%Kfb!wO^H3+ss2>0VVJIqa#{~PwMWe!Z6;e5@J->afIGeh2brA?G`a_*; z4k?A*@KHe|s4J)?Vi4H9{3nlO+5DFEqlvfdQ~)r_tGLap)fIsVVglu0p90uD04^LI zzKalM#<Y7ui=QfZo)<&ED|VavVg;0wfCk_Kh;eXm@3Y0J1hB&qGlmMtE~j2h^X!2q zXs(B%VLEBP=LJ-8KRZSR5+h(v!bM|wpmu(Eu0NlW4fZl|$7l0Ucy9>}W=R6fKQK#R zhAS=3eh=UAlmbgAL#-!=EMYob^MPOqKm^dJaKR%gK>n<@>D*#Ib;BRFSdiln7If7r zc~KDqQRxB!m_I=G1<3)o1zyc6dVy;YOov0yj509w+AL7%z#7nZASy@<JnIK2RYhg= zUCtF3;$XOoYrt$|F=DhIrt*y_@O%K|8xDDl24oMUx5GeQYlhc=NE7$P5$F(@hsCJ^ z<){F1L6ni0%k6<3!BZFt?!(23>DaQ-ot?!5P;)uNpJM?ITGO5OljWl)4SXCh958iZ zog3ZE0Tu#5)x~dk;#n_xC$daZ(r!wOjThsl6RSfa#oct^;D9`MG%8RizPO%G*i_c& z;McnL8z6E+jxvqKNC?bNU;_OC4yEPYZ`|+AJ#Xv-PrRMa^52*B`yMNxQGt*kF>q1< zfYzPF-K?>@UmH{cK_-|clUVY<PIZWZTGPRULc~BGSFoF)$?LvuSUqT;)$*Zun9lRF ztt8L^FgajCe?4m0dX>hz+Uf=?f{AqLsawGFQ*i(sl$(U?<gl*dmtbi8vj{MHT}&@c ztU8KReE7)$ZL1WP+#cFA^U&M-1p@YztaCA+b6{uROk^tXd?il&CD}0OBki9)0)c`L z24h)81hQHf#6S;$enO)n=9&^|y^3pq7XKCm+|LpXcxk8SZ#xBEOa;l&fxbf6K-rKq zbTrdx|AQhW{FrBiU&uF{0GpryfHA#G`rwG@HUA$3!jg!vzkQAM*#jZv;Tx{dg96HY z<t9Ir-Cr((ac%j8Yu`QpB&%r&b`&IrLQ~$a+_Dk+$?carU>L+Zq%l0oFF*V3Z>46F z3pxwS;*CG~=zL=2?~$A<gjBl%1N~0b`*!Qb008dC&btt{z~AhDK2n0009?4>qkV`7 zD2VW2y18Tm9}a}SdB%|!kAUzN6^|+r2e%k5J~bT;J*_dPxD<GCfC^qwz#+k31KD3$ zOr$5j$T(=SiAd3E6(ZVlJH_~f5OdDHb7gIO`q7b)WgPO<B389j1D)W29<4+@xIg)a zL;xAiM8?a+B2JwyA%`sTZ-PTonO$Wsxz{*8b24!1?L`PgoQSKKD*Mo_QE8g0EvS6R zZCQ*Vd#PDzo@~(7vBsOqDb^IuW@^yY6kTZ&U1b#EbACLr9W^y;(0PxTtB2aHJ7j*T zAFbt^4dG`R?HuK$N4*4IIUXI^oiBQkkU1ai6?5jUKUG|Q>OxZDH6i|7v-b_8dg!&+ zqoW@(neGcj3P*GE?TeAjW2>Yu;%Noyoavp_*jUFIET$*~8+&paQzy^HX(Lc0kt9@A zixonO6#`+OG%Viu*n$m}70Xf9GPr7~DU97?y+^$+N6jurCG?y2NFC$1wJ%51a|a(z zwPt>yof6>gkFGfJP%_~0sZe@LTyx<sE)M@hH5pCpmqeIcl>LT0M}zmcZ;`TG22^co z&(@gLA3f~Ug4`PD6Cg=DL0P2IWTeuhmw^2vfu9Jw0ZDIck+w#L^e-PC@)1)yQ`CvN zQ3Zi@%=kIX@Hxyx=z-a)!t?>#rH@a`jqgvLoY!ot8c>YQ&pZ)FLKDmWCG19|-%OZC zyPx#LGrge2Z+-!%+o(h^^+JmO2EuX4nXe{OJ2v~AQ*|Qh#ac>)CN81MOp<gX0S084 zD?YJ99`}2AR%|;zw17$lT8R$&?J20Qm?kHq0?KUhi2>4hCI~3I1OcqYjGFZD*)WBF z{fE`5e``c5@u@jcn`+5=fZMxt+dxt=9O{f&NuB%w(ip09!%}2ahJ?&D6TIqv(3_){ zq&h(tS0+dOu!zytZ8)b&y@MEwiqSz3Ld-*iQ5gDkO59*t%wXEF(k`3LF56wRr4ru8 zu-tDv`P=Fe^P@4~m|a`cMq$@wpNMTU(C0-N<uR*glUHP_Ydh<Mi8L(5N8b!-ism^` zG>$D0G<1ZXg_oS%hnt|#eKI~VxV-pov*bhxm=Few$6)b$#Tz1(^+3|1G7i0$4RiNN z7>OG8>$Grw+<UwAvizM*<bv~_akeUp%}l9ZANx#M8HZ2q4U7;S$zF?XHFZa8B28FL z@7o=0{3rU_<LJdF<ZWA(<sCMWQ$xR677hLQ#d|*GwD(w*k?4m%Lrbg?kCC>CyOwRE z7l$e%A^J>_&>z<N=}%VSk5I#7OKp=nEz9*&PJASU)0x7SpRD6YAd3SWk0<(?AD#Lp z%eVSP%F2DO0TfI*A~bzf@DbFk)C&EHv>2U-XP+^_36ibKw2+mW31jK%oL&87MF<=o z9G3aK#w%l?6nYo*1Vk~jXQswHnn=q8QJ*nEJK>)gT~2#V%<D!>)CFWNz5_9ggg7U! z_RG#+6P4L42))};O~Pd)LK*C9tJ>-}tSG%$K*klTC?;GO?5n@wl=&{8)Y-#S$h(|t zvAHVm+}f%dfcXcs+-z-iR_EA)OMAlKF&OOa0>0qN;gNfQwpq@!+eDjX@C>L{eTn4d zTvJSgrM9`rw0_yeVCGnqJLx=sg9__dl-tt0OoLj*xa}X}SJk*JNc^n&XJRbMWnJt- z-gmCyUH#%#f0>l>B+B<zT(NAh|9sK(xw?k>oQZU8-Z2(c(3K&SfvU_Yyl+xUta9SE z`U%5`!zP~8JwwM?WPW%JJY!EV;H5k^mFAxKD*wrIRD{wdfvkj_H@{P=Mlc)?<7LbS zF>TzfxxE%m+*F$S%{wj50I=Q9iqGu6qvd#%zL%pud%5OvB7Uqm_35Lc)!Z$5={HAJ zp@j{NN$o9Gv)>u2x0Tx_<{f2i4R*P8Jv%r?yk`|Y$8I*0TGx|)ccryuer<Rwwzto{ z+Eip>!m)3j_v=OQ!62^qo*2G)zLD3A$Hkj6hsWN*b#F+wOJ1J~FP7Lj-s!un+V%`+ ziquXO&`o4@hI~fXZM&s|w!^0K>dl;GZIk+GmZdxABHir;CFA3wfvJygV!l7))^#1& z$Nvm3-F8PGzJkDB*MA>~R<1*O;iJse7_h6r^)>+8-q5u*CqxqGZJLnmq`gm+ewY8T zK*gAVcdatb%sB!6*MYvz^(~WrLmZQ<yG?A9m)npjpZ#X~g0#exbAj;JZxo``El(W3 zY3N>(^;KkTj*AuuF|ey9w%Vswu*9!Lv0WDGu?tzxI?kt(CuP(LKG<Ai9$en!xf|ed zHNlfL(%Pik$|}0`pu10V#bMjVVyw}~>ecQiXzpQs@@p<n1I;ruJ%eWx{jAAbNj6cU zt(2x2gFCG)x)$lu=VOq56~%?gyh-~JNDp+Vg007ImS)oDpqU<;mXLCOdII&iY!Dng z&by#2qnTXIXwx-}aJUR3d-91>q~E2tdHvzMz%f0^!kaK&+lGNpW6IT2(_LhAhP>rt zcll{3OU_*?ocfJ3V|pf2XS=rPW~QVLDa(x%q%*f0*`Y7G_I{)VTXFi#5}^?nymWsx zXCy(Q<gCyqQ{CHV(^Y%*jn_oJ^gS0dg^FV1$S1$~r@ZegnY^v&LlM6iyvMn`ka)+; zI$5d2_QpOuBa!0{Mcw=QMvp1%nK|B@!<ShDAzP=L(l~zmb7a!bC$#m*@M=3v&k!%! z(z%;F77SV(D<3sXvCVF$+8_7TpRdmPx$LwxxqOCI7&N4^>GvAO%O^d%iU3blIPt)c z01`4H@~;yW@ca@19*<Mi8K4qViyy(K=75N+n>?v`N01|7OtZItbD{#?{1k<|3R$)! zk4<sz-h>^#*wW@SU>Iur{?MhsYScT({MV1}4ZG#|(Ln)<d%q7UB=E+R#_{{S7fR=| z`!%UwXP;zLbPP(&-8+*B8oZ4u87eVHOI^^Ydl19g4ze*<9lHjNUORRTRn{|^yVsb% zzLSXQtg+S(hbCz!los|;3?=m;3W|c6DY;x*+?rCw!{E*RYrwGpL07Mus4WQ#YV$qv zl5A6KQoG8kYUCGV*N>63cVdU=^SLTda@h>ao1<)77M)t1jRnQpDQmqqxh)F{$gk>* ze^oRr{7c1+fWXR=(I=Ioe{i)rkAHRq<Cj+$jy&4^smITL;Phd&<w$>5u3h^^g@0G| zJ@TiTffc{ByAl4YIZVYry8a<xN<WtNkNK;?)D~#>Pjw!m|1!#tozk&MukFss=>GTQ zvM;-SBD>alnN!m%!{rsZ-(!4$R)kHa`%gqN35QNwm=wYiUvCr|On573vfE@dE2RdS z?-0ZLSd%>S7A!<qD8z_bS!qoiS32-e*TM*XeY*9^OYu0N-f&76^4+>uX4;i!b;`J@ z^dP?2a6-VC<i6yZ#I#d;p~0i9{-+WLU)!8OiOxHBa4$$LU%dWU?A^kiK})|#Zq0`H zMdSYbOCFh~z12{pMRI-V_6$J~a@JWq*7xe{1H_Or!m5#=z?mtP*o!jjB!yn)<)aj) z#19-hckuS3Oo}Ka!|W?*Hw4T`te3}4^sV2IFYDfC82gAmvcx``wlZ_YFl%3J!*?Ou zHj1q2=KX9wSgifHPbvHbch3DV>L2l~>y{aV_1^v4|D(gukrC`-0Jg#qk<k#qn8DAB z1@N^We8@Whk4n`go|;okTut4%W`x7!2|>=6JsOF9<C`@G4_jl`Kv21Q%?C@_#C|S9 z@B8mLe-S<XYDb3*oU&v68J(05Ag+Xd_d(VQjFkwo?!Z`o;9kzRM?o2{lM%OhR2#^i z`nh=*P3lw^O&C#D?>{JRa~SvY?Rr+0wq|wE6l;<EQb^b`V(=LYSUx{X&J@W#ive?s z*DrkeTf1VieHBAdZiUeb+2w%zk-TQ)wsE@5yBiiGJ19m0L)p0-3{TO@Cq3r{+ZYq} zkY`=9u^AeExK|6Jo>Yk*%zA}A_&lYLWm!<akIBWSkNQkL%6^H&!l53Ioa@%?2af)E zJ5zoO)`oDC^yW`ePW}3hxbL~#tHZyf)qkcAwb(Ynd(Ua#Dv3ET*+DyMI_njB`$a{F zY<}l2ak01mMI4Rr-T#@m&_CiZ|5e<b#9!L|zY+JxSepN-vHz`hH{t}9=Iw5@n|zsi z<6-bMjx`;9oSl6k`(uW+ZIjD3QUC9=IA4aJ5$lr(CN61DvPd+0jJaoPCOvaF_d`NY zl0|UK*A`on&HbcVdK$ZsyJ;#Ke;*}aY@<%u`hC&R%%(ZB*vZ)P&L*Q^uBgqtYySOg zQNK&xp7E++mdqgcvPB;o9C-fWjngLgixKK!6dbizHd>FLJx-3a)$$cOFH`KH^{<&a zk?tK}%XgmivnX*l{P^HSOoE|K^(b_^PO;~N)OXG<QQdDaiwu5rD}27(?Q+B^hn*4g z`>mb|p1mEX8fE#%J}q_%ilww{FY1p9R^hUgV_w<fI8BZ1H`FML@2ofcsM*d9E~O2f zi8~0qEPY;U7n7Ltjr82UTqEb3Ac}HQWT&hjVX8d2sLW*CK0H`Ia8vKkThCN1{IOxZ zYdF6-H>25MMm04F*^f7+r(EZaaD56>u}<svnUqv5?VWj1GC}-<()qWAlN0O=bJhf8 zLUhepuKB04r1TSyDQF(E(6v^X6t&N4rzUD&&U<Lmk59Y}c+^xT`c*{gV!h^-<>j-F zS;X+u2nB*Tv-=WH86F;Y5LSrwhMOZNTZ=jld{kXz-15SFO7VcPTW$Ox8YJN2@=6xL zC(iF9gKr!pnKN#A%lw@P{E1^GM>g7f3vN6H;EfOP4g?Ag7A6YXO}G;FLLz{KM~#e6 z!wC_0At0oZP*pQ=b_ZXkd{s9>%f-zjrtXnk^SX9)jEKY3H7Fr5H~-!HaXLw<;Jl7K zTzY8@O=Gi=FSj~>-L60u1#edvf4+m-%ITJaQEwWSWZJ;`-roGus$yFVeD&s86;b~~ z<k_yPQI_X@lJ<v2wnT#k)D4`LJGo6qFS?@Nw0c}AE^CW?X3mliv$6U(+o@3^x1*%{ zY*|`E*J?+^cE_|N3U9_^VMh9a9`;y>pI1pQLhUR6TFp|kT9>0v8Mp<UudVkfdM(*A za!247)Lfq+ST#d&%B9*rl1r07>_!dE>BnY+rIZsDY@5zyN_N}V(ew!suAE%<W;-zY z-aqAxirz@=ta-4X>`csscUMt>-=!ez4u5k7KUTJJ)^p>GN4f|d_Da~P&mn4_P@MX= z=V;;1i0wJV9!lA(Llk5w7pC9*CGGoF0$75j$46){%Eu-n=V=_z>lXq!r~2NobDWVz zyHD^HREn%Qhi?05AAYkWdEi;#7{EllcITeo8F=kMu<yFt_wlqS>hlkhH@u&XPo`xs z7dnUDL>mwIg4GB6KG3CxYalsl=tA|!f!Ytli-Psfy)2N~g9f-&OQH%H&DJlg)<n&+ zewlZ)N2UiPubMDUsVP*PKD|)HW2Z_G%#2ry=hMsxdm3A0zKd|T`!4lL+6XbP%*Cv$ zr;YbVX6gRTk+(jPFWr%7>-(^0z2(nb@-QC>GaaNWfUl<oIlHmqq;!gQ=#pU0XVj>h zU1IfG<QcC%M@9aWZ(q!0fjP&?KYmwQT|gz%87Z>A6DLUNlgA>tqG9%qAQO52ylT=l z@I0beOEg6cZZ!PIaI*`&)@UHrNM_w=;qH+1FrC_4FBLv|+-6RdCF51I$du{%1pY); zQ$!_3W~)M?VrP7+xJRW<<-_#MwE<m2T*9{>q|!u0yeFX=kg6$M{9>TVro3Nepz+;c zjT|W|e{=RRALTV5BXk=l$+OgZ%EtMlu65f;)5RAY3hUIUPyTw$%t+lf;~60m%uXdP z*mNr+6lvR=6UVs?Dk%0)VXN(J$5Q{a?NZ-Ex31f5PM!N-PFnWWVp?fQEYG@P8;gec zluR=G)$$Bk0E+6U`hf>2^8^QpB$ba?_aBRzPy`J_$nvwO3Sv9+sQboS`*Njw9x)_x zJ-^(Q?IC7ci&znEIQoz&%_vB_bPdFPjc9o2fx3^ODYYDa%PL-Iwa*`Y$?%JZ!wWQ5 zi&BG(K${H#Cj4}IMO_trH)5($4e}c0UM`sx%+pWIaGfvmDHdb#+=6%v!qxH~&8*c) zH_K=)32#cIxkI#H>91kx>kq3kVwKXt@$@`iB_vC@HLo$O%JFVk>Zp+B_Lp{b_`Q`k z(%iRsnMgA>W~z>{fk73TM>6Q|ct(o^o9gn_@X9s#kw#;P?zDyNCgi+B<ruY^bLFC| zH{D0KMvqBvlp5DGUC5q_*4IeMVSH~n5REL|E3FwsiOPaiO<L>yDGZ<S(pDk#3E>z} zk5#JjP`*hfkQrGZ4BDP9$}Np5xbkq7G)!Gb@%RBL-iQa0SbI<gJ-#C${GMbeGZrnI zK}zyedL>Gkm&Wo)kFJIjW|Ff^Z&aq}J5-Sl#xUGxhc-&(^9MM6?WoTgqBlD%q5^TE z3<xNN@)E!C``C8tQ&aLjl27tAct21;5Yt7eYzbCy{Hh>LWav&it2K3Q%-bxlb@A)M zQTE0#r(JvhgMI6M9*xP`Xhhf2v%*&+Jtri>JS!}5&t72tl$A#i^MS7j0#*>VWqiNY zEjtjJ-|KSsjy+?B1N9q$l-LK21xM@El@f+_+z$gZFY&^Tl}AW?Wsc2owqE3NT$MD_ zV!(*Tm=Tfy&H10zzlg0a$_Y^^lS_>wS%dSiW3$RjX<@nTw`xY}Ec&N5=kZh5KuE*u z*zPO*t3e@#Q<fi$U#k`czN<|Kw7Y&ado41!{pq8{W#&S4?BEZsp}vonm+9-P%df9` zPY(8{!M7tHpLu-+cjh-2tsVi>hF3<?jHgXuFBBNa!W~thpm(VK1it<<_2Q@7-rtzo zfD4*R)U60J)t}8|Z6u=W%Zss38!NNnMk;>jE41C9b5@k@&v5e3(fT~5Ab;W1x4D~R z5Yhx!0?7!w2+4JAlsWn?D8TzAb!<VR3H1O$9V&oxh9<S{q`djn&BeZhy{PS}i~5R< zQW5nvK+Tx(4ee4mG*-D$`sif1P{JT^JY7ZdN<vLwj^HpD3zQ!<h?Ap~)I^%d+#S%Z zz#tUl?_`pf=z!+^?uaEWi;Cy2Rvfs%qE$SBi^cb{cjxe3gEus&*~Dy=%BW9Z^5M?j z!Q|7eqwIn5W8{-pL{?}CGTTM@IYxRK5Hl992zwOcNE7dM`@!S~`a7qB_6Djr1)!VL zgZ8GF3$HK`WT6ZVLM}ml&<1h7D1|gpmq6yiT0@px7thYRjPeq`!3lI;FvVrjszaM_ zywN_azdIHH`H5a4D$Z#V>1ZyJ>d<K%0a(TAKU5s>+%-zrjmuE+y(7xscjRJ((lf|~ z3R)m%qx6<~fht~L&s)Vg)oP^;r|70aL?yqv+q0WarS*<R26RS%J-FvEx`VL$L43(Q zmq#vWpsJedOdhd{iwC}|98VzxD_e^9QVoKn*56GC^ghZ<IK7|6-*0@zbl^^(BKcC> z)OB$yW0h^B$M?>I3=0n5kTb!AA^MMWH3ECiDlRD-V8;xD8YCLjV8^vR&fWJ^S}8O# z3Yx)=OAeE|aN@EU)b-38R}fWN$#wpjzf#qMn(4(~C7|dATBfni6io?}Q{Q8hfG4=; zY<MFdy9ksoBH^zr@0jqGj>dg)sdbfgr2E-|9IL<iyTvOyoX(<?Ed|kA4RJL>e2>k# z*ay?9DOX26^=2Mbd=W9r<~#iOE%6{rI=G91^KrDG8OlFq(-RW6&Tkx>QFA6^B=>)2 z;>P!d9A5vJ*`33b441Lf-ux8v_hv9StlD`0F9@u+;4Z^V`~dvo{i0h6MUNS69=!aD zb?PI8YlJuQqM$AP(~Erxbis|(@Q>rqA5VT<7J$Fk<gi~`z@D$R`4&UgG`4tK<8~0? zwq@wfcwT_uzND*d(&{4qv(JJFO?8QKt#|n^-`&zXk9xY$N1EhMAVpE?&k(UO?gl5< zTX-;4yG<m?#76OjxN{*FpZ8U*?-E%y554Plne8C~`)67tS7}#){+?CARV6iJa`^5U zA!bvF*<x?5x=|`58uxT!Q5y9yU*-lX;xB5*xo2X8XTe4jMd}JBZBCFZIquZR@EULD zjtO;zIHww!9Om7ftV;1|no1S%nUM%3fSv;t70Z~42Nl&8Qx`L&oj2huud6$7^SMPR zm&Vn8&8TQ^aG{`NS}TG~UNT2pPNdkGq%5w^EnylaYq~DG&eA|q?WP*8p87;PbaD?2 z@X<~H{J9q|@VV5-?{$0RB_C6z<k=O{ilnNJ7|$X%eekf3vQtRHYSWKD0Cu;8>**rz zp2;+_<EDA$%xy~O^VT$ZA99(ZMfXmZQdfLRKlMOF6@0(THcyq=vVBMMbrK^+jW~Y9 zU9_-wgJFV8q-MNy@C6+TyDKrWIBy@Tb()#5cpgaPB7?8YCu7c4D#}iZl@zHkp<|=6 zsmDJ-F%!g%3N+;k{?QwLPog-XCzD=-LtUdVM=Fdu__mT7F771B%TG($0xyUo5!Cp$ zq2CaAEeZ!(pc?g)!quk1`GS&Kuk=?b_VU!^(yRx>c8oZ7Z>7b3S`rg@u^zFW!?0Db z6U^u3<E&RNuc+tva=4+3KpLNjJ6<V*E?puhp1T)`8l5CkJrF>yemwrNf0p6NWgicI zXk3ST!S>4-Gt1C5{*#@E3baa+^Yn{+N=7Fe=2#SB4ThxUcVbQ-zV*))g^DaGC>f99 z%C+{GYJ`6rEXI>KiPb1V75?T(<t}3hvB;(4e<~0axD{i7+~-LrZ#-3-OR11`m+8KF z^Vf_*+f4zxoJ0=aWVE;N2&#eMsCJ<_fk>t_09+-lsw9&>4f@cX%HX>_1ZX;JNz712 zXsHucq^X+OjupP5ZeheYkjLjDtTvn3fF1kleTAcJ8}F;TJ$f~-G#Q=fF%kyS;pFP- zX`)g(=GDi<igOH}w`hnlldu?_w!iHl#GV%ndyb8+by4$f5nVRuR#v0JbWAk0U3ePX z170tU{F!K(TN?;ZkH<90UXb9l4L~D`967{ZZYtO`pGe0mxsBbeZjsZ5s!+MmMq=s- z=GX#ci#eQ*laDSXfxJ@E4fhZ0tz;93iX`_k^E)^FCSIr$Qi{A`QcimT%>|;AZOxVJ zIer}0krk!)ehtClGZRyNZd>YnB3<K*Y`!(EUZ|HS-sciR8coF3_cnz5zNQVDHAcv{ zfj2>9%O4OhBfkiFYlgr(bLI;^50zTP)O&%u_H75#?ITt*8_%1|zLcKXfqQPsd{7(0 z;#{=EADuPM$1>S0gip~mAC)3v>^m6HeS2@KLQb@6gKcF;J0Ck4$Ir45VkD?CYHeOf zH$73U>NZ1?q(~Mki2kW#YuuKmiim3Q$7$eGaB+ewlt1+DtE6!HRDQl@_2;F7?5we< zsRpF?Fu11sS;NpVmD%thvbojY4hR%OeB<7}f9y{WkxY^?Ourm{feH-cueni3g-D_Z zQ$j2>td$l~2;md}^(3HxNg|LDNeqBf1(3uj+LPnCRc1`g7>Km$Fbbe-hy@;Mxiy2m z@G3#i6Xhypl{heNox5K=dHYUv@5HOzc1z~~{seXOKJHS_e1XkXj|#HA9kI3iEJ>%m zG*9SbeI6J7Bq>rdVyDW9UZ`$MlBPqmEV^7N3$BJ17cwLx6hGV+Q~9g+V>6n06Crx# zA5u*pHEjy3W6h0eYBe$N)HjVcx3LC$WKLvpJmQ6&^JkIJKVAbgYGzjYc*HF5&n6hY zj&{wf%`~^$bvHfd9!56UNL0p};ZZ8Cw~17q%@xazpoxIvPGmG?LRDq7LviMLwPrnf zAbl?ML$z63^NV6)Ea#v@j7o=!4*$3u^J<$y%q#I@*<Rrp=z#C30NgfC9QA5yt3p`4 zn80TvJ7RhHnUWBazO2kR6>6^@9-ADQ;1jY!9DL>hLq6TIB;}x7jJTds@m}f>8fUZE z5&=Cnfq6CTZqp`l?K0a(**UBm#gS_vZEE0-s#a#+7#7^zon}V*9f4#|>Uo!*y3*BR z{v%cFF4HH{mQma4iRR;+fYW#_{b2}C>T9`TZu9wDG4X8Za(qf9bZK^kPl0bT9;Q9a zkK`+K`*$QZ<xRJakz%Sc=1Xk%9kI=@N>#P`e3Qwj{L~Ik9#-0}zo{16q@<FZ<@HU* zzB~Dq{?<D^mk(N(^zW>}UkcgeP|6G7vX)bqZb_bN+7f#$JCI_vN^7Wwf|gE?Q6sO! zjkQPG(fH!w_Ar4Z&!DCjZZ-u(d#5b0Q(|CHG8`H1Lr=^IGG^MQOhrPB@qLO>srMw4 zf}I%4@9<xcLgihzI)|78)v@R|LalbXm$u{xzXu9C8w^l2^GgcY5=I8|V#Qlc;D1&| z-b|+Jdo8X&7_(2>RrAgKUQ?uITYMljM=eG{fx^pGad1Ae;n-IPKOHowlcT!DdZ1|+ ze=Hj=+br#BB!c}8VG=a)1*dOv*)|ns$0G+~EBSa0Os4X-4S~DXdvSIX5;5pFu9YL; ze0-g+<?w~zDV-KkI8$kQ@NE@IG+AR)YZ^^Vi%wPT)KaIf5s#w^*9)^b12g6In32Xb zb9@jRYwQ9SpUnwT2@k59wwX*a8eP>bshNet_0GGC>qhp3nfA`A=G8H^YM`5><=!ne zV2*Gbo`0bk8EjEZH{Hzi6j2@#6)is<0Z&dMsQ}CPThP!ny**dWFr-xP>C8c%_DZtR zU}4UPb#cjhxkZ#cC(~@*$3v%v;*WDnCDpNnJH!fPCtvg#eUr-vd&G(y9f<8$dSX~3 z2`3HC3)lw2H-b6a3^xT82#b^@Zu6iT=ND0TjCXQiNoWvCAtIkjcF|G4>Gz=du9+P; zlb+kfgQjmLWTww2!b!NZk-ho^_Z`_Z?c-n+uU!5|z3Q>RBT6ey$Iqeowi-Xu=ERRS zO-F%@CWKq_EcVQ?v2->m9FV4hTP4p!hNYg$6Kc@N-xY(8=N@Ck4WX9EO?nD2i7^A{ zLM0{+nYEu)&_z;Fk!A{*0u-z(1)8A<xQ$ctR9zgVX@a??#<(B%q8g%WHv_AwE4oO+ ztR$P5$hjVoohiOqEyQ;^W|3cwv(UJmT&<et7Lu1ig3U45ouR22tV_Xf5G;rL=2L!8 zuJ)^l{n(v1#j4M-OD<U}w2*Q`2M8E7QOnca@}wILNl$9RdN}sT9%g>D<42pSw-Y~k zcGZE=EX$qnaH9Z{Hk*=^>V!<``YD#yVmnStGc>=@ZrX(mv-ZSnQ=q+RYwCWVHV=jL zIXy4by@00uuDIF<X~ZLa-0Icf{Qjtv-b^CY94XA_C24Y|X?c&%6<oH}ajB?fj~_bP zE~8_4Nj8c-MVGQc70)vteEoEshA}@~s`p-VAv|FSqqZ6O8hjjl4JkZHZwNXUQLw1W zEmrUHPM1_}`ucR<e0Uy3+~j+sfsoK|t6$qb4i_4y+pm31#O_miqW>Y1vXWY|EYKuO zs{;wK1O8UztsDeR?oe7YI84b^^xRj^j$eCuhO#?9-ubc^m2l)3vlwMkA>Jn1YqZs< zFz_`#Ctg5NIks;OKR9LXO}#Fcws;*+8GZ&Zkv;);&Up+cAN_(eVK7EM+B6|lW#AdF zGRKxI<skuMU@RUJ-hDFBo(#56D6e&ig?Vv5(706uCY_Y(y;%IHW#xh`WR8fENMY<B zJ&!kuvN167haCE6^70=5vcIq(Hz3p@ywUD1FN-FkY$93_Tg^#NZosTzzJ*=5fdw(f z%w2Azi5yI*5(!$G6{>`zxdTC#a(tZ{a(gCziY>}E5E*K9CV^#5;X)HHvn_=Fl;-I; z^CQKyCcLV$T8D-VrI8sX(Wu*xNp=XcI-}o2dqgTPbs2UDN#ET!V>hA5O+2kht%)6x zZ++PJN!BX=^F8QS+FEtTTafQ~GfaGu(~nVi2w#8=L;kTLkf&?@=G7CgooQaFFSX`l zjA1{B!JE7+ut&`hkdeTj)cf@$8XSN}&AEpw4&K;(!U6j&IV!P{FZ-%Lqe|c-W}@KL zHNuY%;v6=pTJDV)IkexxDgjTGkl<!FsYheELEl0jZr%Bgb?ift@Dc%W3$=wo6FM!} z%GNU>=b=(O^a?vL;!`$S9D~?qQ<P_&k8txS&2-#^uS#;Z)RRxbW%$|vO*oun4L-5- zn_H?XA(aTX2AWS)>_{!1QcON^5Q6ySpF(D#?EG;;M*xOf5qMgyu%J=fCP^^^ogbmC zF$mB)QIRs$vYouW8>>->{D~H*kRf{VdXJH1pH+mJ;drIDIwHY2WYFw@;bF)4?1zhN z%WlW}goYA_UWtx2o0zE%J+kdFeNx!({YIn<9T=X|SBy!<-Xl?A&N@NTb+L$jl*_^0 zKoKYu)cn@n;l!<f8t$UoRq2t&VQV^<gUR;|GAJP-De7mRwMAO;B>Ijenc?Ne5?wel zS~HHAduaEf2;K!%_s1Jo8FRGbh7+16V4U5D(i)+1VWYA;pd}#Q&R}`LCOrB%NJRJT z5_<Hy$rtKRG2I_#ODX!3C_=b0qL1%=O5jx^!?W9)=Fo?_Y<u`^Xyh`)tRFb6J+aXK zFh5*_zh%Uj;_tdjhVLmI#2t`cBEM|HAW+<g23U|~<=+k-@fPRt*ydlAenlfkUPCKu z7||ilphh2`#~b%R0zIi9z$fcO<=e(XtSY!*5rW3ph;`=<H)@2Z-Cn&el#7+5dtR<i zx5u8deG7EMweT=VHzjvQ!I!-)nDd!HO+lSz8T%g4!h`~k*L4r!mPYGq%wC3kCzI18 zcvC5OF$CKyfw~XU!{lU;Pn|<d+f%(RC!h0*QeRL<gg17e9n2PWbojo~_)vnTGa5uq zoII|#f`Q2;=zqYx<Q&m<K0?yzr?3@-6fET<QT6qcj0_wqA!dzohEQ2aFE<n|=@L(} zlIcTn5uYM*Nihb3lT&Y+Nyp%{Ku?l2zt`YHX>#3%9%aF=5u0;w`@A0_bjGwuZzisn z+wA0w;4<T6H58YKep%yx@L8_qL-vp5qNK~3(AKFrdeTk{@Q2$DFLXQ(o^SM=47QYZ z_$B$Mp>t38dRsvRWU9^{rRfMzIaQ4G4NW}ZlqF(v-6^N1>G?rrz!Vk2R%!Fq<-Hqb z!}E;f{m3VHj9j?p87B|LiR0fWu8JAWBj1<Yg`>jgIdC9?gIFTUwd2WArd$ICZ^@P( z^M;$9R?m;>%a+IEP*T)2?^4B-wv>PDw3W<%xIXFCeD*#8w|_2=&BZ16)G~Ezw@A*a zw8)>?68?$JT8*~Vg^@UZl20y$nz+=Rr#-h#Hu&Kn-pmPjsJuvL-y$mqgu67%ZH`_1 zPjp5-N89k8`=(z8^FQCBFp(+7dqqorX_3U#_wrO{S6VRrpojv2$*UvZh3WVsol8jk zc6db+cJqPMON{~L^U@3TmQ9P`dfUR@vWwh}7+<p42ldR-O{|bkmvV|>+p*$LkXOW+ z_nw*&E|Mo!)fZpdE8cA#z{U#5@Yi&tu<gBk9&K2kT~=D8OC|4WaKeMsqGgfUsr9w= zyvYLmk;snRA2gDLrW<)eXdWv>td6wk{zQIP4A51%X{33}$mk?5nkX{*Xld+}uSYfx zr9#Xn9*K;#yAgs#{&M_hr|!Mgj<t)oD^xEbyGNm|XGLvgn;y~3xj6+YwyR15aCB@m zX^#=48e_f|*lzgfU9c`{CgunQ@v{;X6<+96;P#mM^Bi9TV7SV?eSmJkQ~pRo>(SKm zoQ*x*bZxTdD$-zcCl=Xq8`CHIh5($3FW;?Yd)pc+@GL^LUhQi6rp5@eEN35%pjYK@ zw&aBu=h_;7&JRbeX7b_TF#lqdT8Ngi^>tXKD1j0Q8(18WsMKpB8ZmDf`r?Z`)z#-R zbJm<m9Ly~+u4T9PfLvUsaXqVZn^Kri#356YFs5BxrOiR?<-8hivYK?AdFUbCLy@G7 zB>(TBK2QN7COLi2#r)h?#6BJIo+V`1Xe|`?B2QJONC&ixvudqaHrPg^A?h1zMTN69 z6bcRnP!(tvHi~dGKS=_T9D#m9Aq|{%;7jVrCxsIh-T#NJHvxz0egDU2#$aq2V;34@ z?CV&vgvOe&ui48kQueH6jKSC$`x=svWDTWkV_%C3DZ7%gRuXytPVdkAvwZ*8|Gr$u zIj?g+_p_dPu4j4OPnCfe9ifCVJG_#^8*Cz@j<~K|gzB`TH8YB$-5h`U?NMyfoRjL~ z%E+xe4br!oCDuNcgA>k{T!oSK$rzb>(a8~kdx>!C+wQe(rq-nrH=`+cmuP!0vEIFY zwZMsM;xT>sg&dpt1jAj^gtt3gcW&oJ$~U~F-Lfs>7I<o}^|-rwyE;5c@l{gx*43p; zckjvfd_RzRrF-x!Tf@rM&3awswMyDTe%SBB?H@1)L&79p)#nQP$Ewd*Nb0oZR&~9> zuaRfbAjaV@`}guye4Cc29hz@7xqSefS-t&YGYV`gG?lpnY<JvfF*!m_)v9N90W_58 zqb(0JTN_3C`EH}mqti1`n!aNGHQfxms0P#E7tt&qwo5OYh_6Xce2pfARa;aMuC^=a z8E@BK<Ose_VI{AY(;tl5?-$lK+nUuy<Flq>6MObfA>@_VG_5vMnOAqRUkDYx)0v9~ zC&fd#ZzsO6p^7DcI;6zf;C4bjbea35pS!mC9H)D4{M*~b0xy$pTlHL@Z%bdk>danR zzan(S3g0Efvd8|i=;84mb+Hv>ja~zGgLy3gS${Y^F}Mk|?w~;mYj0;X)mQ^5{#z8= zudm{7Vlp>MDobfwM`8}X)dD^aA@wCH&S2J0v@zU@m6tu7Z2T@>by2hGieU<y5>-Li z{tnMgT8ZFd%l&?MqPl)l(u(c<2NA_N`mM8zgjudS+}52Bv`yBp{C`QT{uFGRz36<$ zMVH}1jCSqPslWwcnB8Uz<)y0s?}#FC&j-7Ifl^W*pngD)d>HVb>j&2_wHDsq^3bZ) z_?<h)|8S#MIkiBhKkrM$7GGD)Pg`6_R6$bsRqKi<Dt2D>1NR&CFHSsdM05O{?TdNy zbDs-~SX;NYIz;Z{FSU{yvUZK3xkU+ILv0?%SraA~Q$$@Y;19p+n0okMWjm-#C<{5I z;{CB!{Nh;ah!gVM{c-U?+7D~1ypOvPY*w|kAu$y+0yw=RKmQQ#cOfE%YQSO%f+o2s z5gLSS`J5QUG2^BE{Z;qEvp2-ZOGzCbi$Bd3*(`OYjdikcLTttg(|`WZ)8?Y|G$mBf zYiwq+AMvdS{{+9eEf+Z5m>ZevC^aYNiuKKh8s`>kek=Qf-7ix+Gm+%|)9l8dq7<>2 zW6Gb`w-g#~w_)aq4DSgpsq2;2Ng9d%9^Gn&Q=)9w&N8I3#vXJ{7bl6a7*RDk{92K- zC3PJX$5VCqMGd7rh_iXi>wo79w9FT*^R~x3Ou<~`E4{Cq$!<@u@!GG^P-XdBUTf*? zeQ~?#tzA)!w`q2;z)s#l9msyNTDm{)XKU=xN0^Hec=7Eyq8gPl6048wCZRx<<_a$U zmYp(UNqT-^XNVY{<A>R|oo<85V{Y+51lw<^hI^rO&|E7W6lfm-1jfTbFc6X!{N@ha z*?m@a;_;Fd2lxBXNY}Q=+Uj4Q>l+@0Y9g*no4OVDN5L}LuKA-L!<AQKW|vIidXn8K zR70K+uD;Btj(E2pg~v~tziIF%)fOH*J!iLWqL$U`9B+P2i?qCvO$uJUbyY45HHA$k zVoS>O*}N><xB@cSWmoouqLvs~s}0|uN?Eb_*54`iiaj&Ki6rJq>KAt;{^;?S79hg> zDPVgL6;bo{CG-Y!I95)yyl-enaKQR<t`aS;I$t}BW-Li31scU&+^<EeY?h>dC5@j+ z6aNlmNC7MMi2Lf`>B56~4Uo1^A>r~Yq}kYkXp`L6QSYpsZY$c%wN@C#<1z-;^W?&> zy@9C3aD>nTYcT%#^eJz#0X(vOwk-{;XI#oQ<#VZ)`1tp~E;vcO7<n~cn^5)eCPRKP zl3({U8BO%)NrTM_)9}U8CgacZ`Y)s2R*D*<H0hck@_1okM(k7X$X}1eJ5FX_*WONy z*TcieaGfFIj0HS}CbZr^3?UPsD>$cDS*i_M>%qpqijfjkYwf3H$b*=Es*~LNq*1Ut zl_>p=VTw2wnwX+_J3FM}CT62>4LQq7i!6hHl^gj|_16L{n`-|8S=$t;M7m@%avd;j zxABBrSF#EPk3bC=(x5%S7=pwILqWOVgp^769j$3y1S<9t=EE?R(!R~B&CS{e->m(< z{HXnH0t-+}iT^QTK0ozKbn^nprJs2AGia6>;Bx`O^o36S(j$9rIb{w$FmKowqhib_ zX00do5v@OB`L1clUCXy~PIK0bH|i6;(tq;gDXct9G=>qGHaa*yaLIa@ZM2yZbZJDQ z*uHk4Z=0URl&4LUW(*trrtDc8^JB}m_A3qKuVO#g+xds4{04iRHC<B&GGSCsR!3Kn zz?fbYexS-1a3Yg0^l3+-dqOjcHUVOHFB0kOe^ux{1;y6~XEmpvp;h2@kO9w1uEi^a zCaJU^hHs8>eZ?g@r$8OW>SMta>M8s<|JNLzBaGx))>lD%Rht&X2??j6&WFm5uf@Dy z)7!ZP_YAveaqGwx)s}LeQl5s~1v9gL7195W4<pd%cZ1Ee95lIx)vnM8V%&bPxGgXw zKaaapTf4PcTlEC-{@M*7wwOpCUqttp8F;+sCBzDCxT?G!T4Nrp>ZC5IbHAI1J>ycj ze(}Bc-O0~~sAg%Tx~Fb)75dv#=dt(-iXutzAKrmZwF+GvhLUJUjJdFQgToa5do^)G zE6D};2)^e}U{s+TcK6;a=L@!IGow&!Y1*i@-p1lz-#~|)uO5wb=C5Yk(wOli&}k!h zan4}5T{AQd6!ASii#yW(Q@m`?*@cyxpTT5#uh-<L44n=T=R)kec-3b;G;l3O`jD^% zVW)df;LhRBDs*=Wmgtp_FN25q<97s$k`P3C{W1{7jV7Xszg@$uo0<dx^}W|!NLJH^ zfaZ~3&WX)Z6>BMOv{Q{`8a#0k21AqadOH4*yAKs;!d#(_Y52kOXu}=`$FBupG=ehE zN^~D!vEB1<kWNmy<B~Vzf;nVgmg<SM-h6GeuA56!*KIQs&CaJ;`okH*beCk#IF*se zkyBy;viPOcB={LtnyU;0FCkP}g7*|i4H(x0KRNd_$h~XU<oXW@zm?fR!bbRD23FZ9 z{pSc|fCsfydm=^tI+GIZhfeQE9h`DzZ_?fbk(<G2hsIC^$~OSM*PTgKX|JP<Csk=X zIL_SIs4Xj!aEtS8INC{?V|U{<o+!^mw#1MHL|F*vL-}N#NhE>7^y!*{uc(2};ra*G zwwHpH?Rk|3NWyT8>Dae6ToOX3TZC1yw=`Y!mgO2ho|DU|Pw<saa=p=qQ)_D4cnE9u zLZ%ogj1wMuDn(<_ZXsbC?_6BDvwSM2pTJ67!9hRvBQBo5@%z~=q1i?s&23oqIbiqK zKfWgZ_SXSy1N;A%g4B|#>6@?A{&`FP;rkUZ2f%aW(x*z->2?O-b{e~GMI;PF#<?S~ zP<#dmBmk})0w|Es41iau4}zQg1cA|HEQk!S>R@Of1RhKcEJXpVUkC^ZhoKQTbOsK| z0RnNrgdv)MNhlc%g=>N`On|c;0Cj)}2p~w1J~{&n1A(Csup}M_%7B3&SSVf}R0g8{ zV?+}$3j!FL5IRsc9#{@Ul5uD(3<?40reGui^2byL@Cby`L?ZOj2)aKUzkhLmftx>~ z4{`=UGycT*A3?JM2?Znn^9&>g&kq8b|1SapVF4;L^nY}KYyxW=pg%<9{|cH458(e- z4KM{TA^%74Kn8&*{s#e4g#-wb|0h*Y!XE^H|0B@9UDW(90+4LsKuIF7|Izuwy6gs? zfEfNGbZBb8)SnpsBS1L=_vnoO06=|d0uM+C7P$T+5G)7_f)f5us?d4BD(v4p<$r4- z0j2*>2Eo8Puse{l{|cQD5(ENr^k0Di00@fx-;zORY5@WN;QtZ4z9<NU{l6Jx0~!O+ z4E`&0K<fWch5w5HSu+4kf&Mpx1XwkofXDt<3xb1ogTNUEXrL7VM|S`M0h%rz!~>9_ zf#hjI$yk7Wiv;NbUUVcuU?f=|4K!MyQph+iKp6q>lfi$~2smg47K#Mi?0^7MNIZb( z10Wjk&cjLqS~8#u%>X0eASm7+pi3ix+Ccyxg+3#K4v7b2K_KA6LjztuATVeJ3=Gky z0s^r8`PR^QAP8WM4%7fZTtKa%fsB)Z==9ML00DJEfKLw#1)3ZIj7BK@f#h(1z79AY z6puw_;IMxnERukQ5?}xVg5!k#AV8!*ma%9uz%AAUA^$)$1R#+hAhkd`v45H|kilUn z9E<*wUjT&vL4YC!8W;kMCcr=-P3+$g{7=+CxoJWXV9~!35C<KafJ1_S&r=ihFC~x& z8lew@08!xnI3W64kOUx<J`yM>#6Jk=1V{krPgO$byZ^ypXduX+QU(1f^FIQvL*Re{ z1Z4of27d#<g$Jl>I-p>o|3QFX2Ov5E;JoGEIzXY4^^tfShz$KNRI3Tt2N8e*`L{sW zkw9bk7a9NGm;w-xpouK|_cKtTT{zhutlXRbA^`XLiJegH%>N?)=l<fKS=zrj05Dp> zHPAorz`K8@X_0@=(w4uJ#hPU{_Uyrz|20edhhGDnPXXHVTkrYeuzlXIeeT79r(T4+ zQk7POyVswKNR{@Vi(Z6Z=iG}`&*Rjh?eng58TH7KHvz1?bqhTLiPBWh;K*2K=GUt| z&U9o-%v`q{XX{c$1?{b8hZovL7%RVZvvYx)m2EF5_?tJHCe9ycU)bf0587DGdlN3_ z&Xwy$Ie)$N!2is4|BLgZdLrMU=}=~4VI+x?^4;xL4NR&bp|LGDhZlWB8c~|lV4>T9 z;3HLFLqIDM=Q)kGu6}<>zH0I5v#V6oc8|VT1kE?XkCBI}b=_)?8F_mTy@XO3Tog~V zzl+J4x>t0zzybnjW$lj{wKvW?6*Ho@!9-S(R`)ejH%J+T`Xa*l)^D$?F3(T;#_IfI z^?AVaQ9^Txkic@?QTg$&^z&I=2(yz`wbeNiNRt_=9P8p%T-`k{e8$bkPZF3hIK3VR z&2eO_`lhn*P-kTaQbns`6r)_uaKl%Oc-`>}%?Y&YZenx<b^DLJ`FxbEc6)Sf#N!xU z4yW9ixQWrbQ{IWv+;w&$cj`pzXC8#9E$+4OxH`mN=VzpE)Hc9H@ovQOW{F2U#y^;U za^<4M)x~kPE(^2DhK?I!?^M26Fy)6fcO^`}j-sD#UN*%iV0^Bg)!Z{KoW0m7v|8ps zf84EWJI{n+6nc21DRkl;>_poyXRB{;99WijaBtXY>gI#mK7o(ZhLul4^FGm5WyaCh z)%a+LR^{DEzA<?G^$Bn3+cEEPm-?QZ$k(shzSrL=9hO!U@iG?b`+g?<W}=(f%P1?8 ziQ=r)v-KhU!M`qVbw)l(Ua7bh{K`?)qUKVk&kfps#gVUp{P!|9BbbwXb6=iphNg2P zCkhP{4A@sgANxs{q?pz7iIE+pH@&4*B)!McG{2>!`mgf1oMm=a+BDh!3v@-vJ&)&2 z_79_kyH4V-&D`5~JnE)w@(c|69faDa-v=^i<d9o!f*pc~>T2${dsz5yUS7$*O;;Iq z!SZ!LhPFm-{Ep<smeS(o7B#OkX?cD#8NRvGzaP~8q`&=eQ>F=R)dHka&M*#|tIo}V zbH31b!TWQ&zF?l=RFow`F)iC(LJ7F@(NJ~J+|4?*c<qvLu(fAnG5K90;(V+Tj+^oM z#0Kutp5M#gE&YpU#Xh$#JXF}uEBjf6^9S;z@J)vA)J<>l<I{#ug_3`P=&8Tb9vX>_ zrt)=JjHW%=@EF{DE>Bu;N?bfte{;ac5*}}LM$lP$d%mFKoqm``Vaxie@;9rz=>D$d z&TY`Ozd*s`8)g@&sLIpz4Vm8#>~g`FXdy?S!j(_+Kfh%KYEr&9F*)@_Sto0=JUpu1 z`rcLd)7wpR>WviCq<*P`-w|c|tF`{r&JU~6T60h3j%(7MRT#6T6{F7gct?o^77BK2 zNXSnhO}%D*34XhZ%0}U1Z<77ez@<yK)Cjicv(>K-;{tp@`;q=*$m&hOdq5wfkJqD7 zi~hPvPd}k~t``d}0O7i$+_>tp@YU|Taw`|*iZiRfN|cXEFGz|$(+XO;8y>py%!kYQ z0(N}}-PNg+cZX_r1}S?sulVPL*MzVZ?US-nlc?CAblnqP0uS4_KaPmh4{C)6H&$`> zCsurem|-5<dJL%;yK==Z4{A7y^xcFw{RQIRXa>n#fbC;m5><rWZ@=Juw7J06@;m<i z#$D$n`85w=*eI_q(e!S_8w5vT{2@jLU65ajo8zr)$48|}on-BD>je0!l^P*{;VNgW z3sWQk)r$;y@S`<PQa%TE#hvyxibBR=(49rNb-v6I0TRo$npxk`*b7j$-oDRJ__G|K zON@cS{SYqiAeVUt%r|;n%fa5&US;8~K!>yMid!$q%-4~%&fleudht*ko>JABP|k>3 z?+FOYCpo7zmQb(>*1_eRmkQbjRX&egeV3m{HX1X<u=@@%-aTiij1%2krn}ry@FQ0S zn564ip=Aj<7@r`9du`U+rcEmc`M1rSyM&5l9ev^C`~ss=;7F^&pa}XPt}^t2Zr#O| zVo&YKVGx8osGsI6TTk%rm37u6$$rpK+Yc<_y)Q-`Bjdh0c{zV1)Wv!2gIY$Nn);8n zGM4V&_f0m=>m)c>>i7C)esP^B*y-1;y!VCrW5ZPG7ii2HU7fn~xpZw%CL<lEb@168 zCBOFfFAi=UkH6bi^6UKPRvIAo{|nqva>ZpKOz-~9Bl%b7MGpabrGI)az#Sg2#E8`V zLmmORBR$wgxGb>7_+R20(0SptgG5=7KC`j@lmHIr3*M|xGM{-DJt=<Xef>%9KbO%b z-}B$<K9HW*`C4i6?j&?8I{&u^XKJ5lr{7AFxno^1-r|;~Jq@UfVRVYwnX=2HQ)2Z1 z+^`Zctl)cVF&^M_s=Q2e4G~5q3ZV{LQr{tT^5kBO@AiK=9)J0KH~UTOQ{uCDO}5+L zcg|I5BO{xEGiV}xrfcS^Sfey9cLa$g<vcgMpwq93y-Ll!-CHZZ>KE&6W+C>pfjRJ; z^KNR|T#DNF=hGma+-SmC@y@ro>|d@i8i<!9zP|4+I`~-|-n+ycKCnzbj?F-$^T}2% z<I!|#I>+wQH$oqkIZ~~PedRe_R8g|{MfcT9hT(V@?*cP6zGrmrD!1wI)x>AViszpi zE${9+>I*Cph&&{@j`L>|*mOwMaVvNTf96H3!HnY=XeNUz9!0kBd>E(Mlh!vQQ>()C zE}iD6B%nrPxNARUdGIQ$=(K#KXY0LX7}L4J0VEm9hAvAYtyaP8`}!%$sq`Otu3aSr zpXuB1x-0H=_sMhW14W{TbT?;v0yfp~VU@|vD{IL@%5A<TJ5-G(o4YCAIvZJ^FZZwi z1$t#;;M1$OFI}pjLA%X95wLrN6K4BqDD@G2HyHT0j{b0$4!w6cvdG=BeV}6CM`v6x zVcA>QP_nz*0X*Swi{EBDJBy~5xlfIj_deIuPs$TLJ+C));6z?)AV$M+B0uuzJf13k z3pFLWdR;8|Ft~mZh%-tkcRzcA^+YJR=?F06(OH?beV5Lo(YE76Y&X|o#8MfEd+n~( zPn^hmu@`OQmt|y%GhYE3o%hz#t$tn_KJ%q!K3d|Y`TnKaKep1z>XyrrE$7y<#G`~# z#`Z2{SNZ2&7(9M|#=^K}H&<SHd$hAY!Y1gdB3<;Pn9;Ii+aCpanWLyl-jl$BVLl*M z!-W_AKi9>Ig)+t_j0H~DP6D$(AO<~et*+3?UmX-P{yPw0OCFWL<+*TQiP$*z`)53p zZ2&PkbNOAHm@(}k>7B*1+SI(!Y4C<X<LUS<t1HZI`}t}O^nZbp4w_baRqnd4<g2yE zFY(tk1YFT}HtO=OemJl-Kk_2@>tO@xF?Vl%hORjBila~Y?3}!OUhf<mLRyA~_?s&m zOnzE^88Y0x6lm5d^Qw?!YOo;S&s&#R${pyur9{i6k<)A^f@IAok<9V%+t(n`%H08m zG@Jx@a*tc*f@52$Jwf*A;4{RP9MEq(2N(jQWv*pGk$-Rsgru{c%Su!cXMDRwXA6-U zKz_nXLP^qSO|CfTMQ%ej2o_X{r$U&?YITFg-h_yU9K)e1;XS<B0-P^aU8{Mi--=l} zKY+x&{++mX7G&l__u92AlL2FF59PT%f`*kBSe)%Lcd2;Xf}*c*O<KBnJfokKqC;hN z(%mpM{M=dG_hfjN&+T1$@0qyz9y<YE!Xrn;T{EbL+RNGUZYjd9GXsH#T(x%TCoqhX zfx`7@B;CpQ&f3cTxq;TjNkxk*Hc(S-1TcmGcS9jdYUu9d$ASaWolb$|9rfTi{qBoe z`%AFhA&_Pmk{~O<z`v*be5sR*IslF_-^gaf-2v_2qQ*FbKrp})EG?-WM!)GQa3<m1 z2yJ*`<{*|uHP1Ue2?EB#b(h*3>7Sc-a^_63415arI%^l+PMg(&F`Na4mw=}u@TxQw zr*k-0Z}Vthj<s5=7IW|w$aBp=sNiY_3>gRgV<7%%4Es9AgfRV?E5?+P7}n-^A^acb zsaR>Mp-U{RmNGn?+mj!O<NF`OneUtdGp)8|aW#(H9(0y*9L78cKO&C5yVv`3kVgg{ zNTXa!tDNHuN8<hWa}aItTi|xaqw#@igS*^ZnP(coar&_2;R8<C<91F35m$Nnpts0< zk5j>^nQS+935%)~@R<XfT7Dbat)7m{RY*ddCJSwbt`4v4bK=<MGOC?gXqere-0G6l zxXvz($I98CtY>>MOc}I#Jmm7eqNgPFx}44B_c0^i{pnYaa<XF@koWx~S{`K>QH|<V zS`gK4vbk6LTf62={@BUk9Lszr`9WrM_4*<C#~XKkJKfclXeAHM=B|tRP3gB!Icmui z0!FQD?y9-8Ygr;zFu~>nw93p7Mn;cOeQ`eTEnk(X>djh}r3%~u7uJ700@$Ay&dO9s z{)7{mzqiT&!`MIaxA)dRof#Myf@y;O)rmFsyxc`%m-l4h&SwA68~+}J{RG)lM^OJ( z*5G_~y1=I|M~XCCdo6ukeQM>?o*YWgo!2kx8>Q9DS2l9R|0C{=|H`>~{nwrep)`*P zI8QVE@ib+Mpcpfb3>hyr6y&~pX)Qr45Abtl+^VR45Pbd$-`tQxo$W939Tl4F<(y)j zti2(LDEnVoci$X-U2&d{v6*R}+~K$t$iIp(oMGH+;JkMF;8z6`%j3i&djI(53=4lb zeAs>LX9T0vQ+*#{uQvf=xE1gPuuuToK+|r4s{8pNZA#VTbp$aT=e*kFZG;<fnxr0? z8%dOHP0D0tTZO60nv7M;-4!&eZCWGPfo2}c3q99o+w-!#R<*CPxq<mc4)EcvEE<_e zLs=z3-WBRK%`qf;k=;2*d+#Z?vLK2c(5K?dC3`$&D2?5a&0_DTSYCAD83v-hP(~3v z3T>vGCUp%(*32K59Q%mU(n+H#pSJa%&mp`eWY|=Q_Da)exUzd?4gKzA*3*;1jRw9I z1TT%vw2_0yMiZOP*UM}Zk!f$X1vB<nQ3HiO5j=KB%jB>jGMjCc;oNzQvff;M%&ju3 znZbya>)PU0vhCSM#-?Fw4>#_0cWCmxdT&U}nw1r=@9dt5&fzd=N8E!dJH`|l&US`C z%Wv}_b&+V5<TZr31SdjlI0cjjIdcKjMZ9PLcBbCz??#HIen{0ZIuj;4+x?_6_}cj| zBTaImyM5ZCCN_!#34wz5H}1J>2StTkfF@vtoxK33u7bHTRM#lDSAsoymNpCWD4V1P z1j8gP`Ft$INn%RyFVOH=88%fnXLB_5?f|P%ebqRvp8(5?@4mWD4JrQp;}ak33Q97} z`rxi&v-l|aYdSGy1@)yyY-0~Ef$k9t=#pL$?HJS8Ez}KNa^i@>Btw0iuF>aTGQ5`$ zb$DcGp`LUm{L&<6sDZAsaIP!zo|yr40!AgaqY4sWrPefO#;s2=WD6bcrnh|vhs>y< zmU4#WthSD&s;)OTi?Gewi4Dxzzi)M~%SAj?Q5p1f`?g_EUG6Z-Dn7ZTvScOhdR1Ow zWF<f&B8_*akIyY2n&Q7!$WaZaI$K~mSxU#vP*x})5gp;e2XjDEVYZb#)4ed-jBA-` zA7U*jaB14slCh9zZb&R9i8-=hI;^OQpEp-fymqRxV;~?D>Te`Q7fX39{*ktzTeA3! ztv5G5CtS}H@)N}%V3lRu(nrl=vD|Ye*DQ*@)?^k**~@U(M$3&YiL>R%D-JmS;-bWg zOG$7fzw^O<1vf$Eb-09$_W9DZBu8{|g)SRw$pg-ji>uMx^kZYB0p%_38_S-?cCHwX zRkpZlL4EKB&Z<C=ECe+#wSY6SuqA;$CN;Pw$TeJFBPJoB&7Mx8LJe6Ifo^46@;*2N zW8iI<DSVqfcPe_<1kc~8rA26*$I}lAE7>AHKPI^OUNO;Za?dRqmH<Q9vtPLyET0A3 zQ`v%sz~=HgahdD5YJv6p19C&|mq*Kzc;d4%p=jb+RJrr0uztO)hYdHoLM}BIp^<?Z zVU=c<!quV_B3QuGX@pFM7ZjkK3DE4EANnnlg6cmU8@!-KqjK~hss2{(f`@{3Nh?|; zPLS1-)@ykS!ypPQwamY}{dFCd1~n&3KkRCb;6Vv1pqG$l7K-f!ezH~qh(;MH6rFPz ziWGCs*SgtSoPe;N$Ki*%ab~9Mg<5wIv8xP5yVK}2A*=e$(u2jQ>RCY^yN7xTr<rVi zx|gHW^SJZxP6`ZLgg9hOEFQDfv5K9e_CjBN@NGlV%*Z;)L#A#YG`yF<6ngt~!AwTs zCPHoENl1WNwo6n?lxMw6&(NG?u7%S=)KOFdoBSRo-$5w!LJ!9)wEmC=!Utab=FTH5 zStz?>bj}hNH+3L^wTcg1fL&eqe1zmSG)&?cKDx4wRi-~@++{n~=Pg3IiPCu$cO<y_ zk$Vj%z(oCgM!=fTyqYwCU>6-txinUTR@nb3W)>4SZuGe5jqR#L?nafR5qzu(ZZyN| z2&FFpsqogq@_SU*@wwpjm@EU{Z^H@WGM*sSeNc-W*Nmr7u)HYo>VE3n<``TqLQqzU zMJSd5PRw|?ino$YM!~tJ%BW;HgTpLv{;#=i>Skte^`#jy8MtEEoECV&wp>e?TyyZ3 zN{I8#&FqANg0q=oa&@{I_7xLyM8-@9gDPJ#a%O<Dmwis#!`TmZlr2<)hqf0KVY%^V zWBc777VwHybtj9)@nV&_;j--v2>KcfXgI{zY+qBd{gQY<Y7e<tTz`qNms{VlFiFl? zP;><ZBfZijxaVJXw?NF-vzj@SM1GnkIA-?hvpliLC*lQ2E+o5m3_&X8X0t_|VMhK~ zbF*hX=1T{+_1c$G$TK6X+kF>gT~#o?R(8&;-a&bNTuTDCGwXQD&rM%2kxYKhAo)Q= zL;i(Y%9~5x3#xUEhZs$iySt!xRK#TDYKPIdqmg8fHUHz8?u@}#`5zRN(^Z!AxGQG6 zrq6ZK2y7N6Uwe%?*eUDtUvlBx7~&XrYWkQZpbCBD19u-YRQ<}K4I{-5M5Vm#cngm$ zl<i}pEEqTyHpGwdyu{?gWf5+wOZ_n6V1fAW^1>VEQ;e`2xK?5D-bFcUW?rzn5Jj^4 zx3SLQG@EvYp~d~+{$J)(h%sb`uWG`=s~Ln<EtJqZi<P+GQtrlRE{~!(6QRe6!;(3& z&5m9cK0?Y$wB~~1hBE>8<;rvwE0z+l=L&?-#HJ}Wd&q;6v|9*CX)$e<SDSp=_%;F~ zlU=om@T_qAN4gAT5vZDG?~5Cr8_t<kgDm<AwohEql7m#CNd#)u3o!&8d8n=sw-F<@ z&zFvGlGP0z1GV=kkR=XjFA5RObMi5g_vQCJLx;s>`2=s+*}8S~qePA7GYsR|EcApK zJ*{nJt!f15CzxR3!2#UX^S)(rKeY0mqMUVvYpO*0v`F{{R<0{zLZPm%1XRQ0O#MLt zjK})$nH1<;PKlr>L=WtlM;|Kos`RIhwq&mrZEG_T)?~Iu2b&^p*kw`A*I$z#D2UV2 zlwDI@P{*36gkuEA0qOh?F6PLwy4T(GKvPOgOOM!6Q%=IAuPdtRbts@Jx6B57?zFxz zL5ylu{?^G!59Os`gp0Rv9hlF7gB&pfC|A_MuP<&{u@va%#M~7Tr{O^Xdn4%6cHR%^ zEKwl>)h8Ql&vkx{iJ%3dv{NFpPkLw_@%k<q?um(op<j;4-~y76Vpu$r1OIz=BGISG z!}=4Wc8uH}<OW7R-?mDehQ3g8`E`FL<EPEURNC;GVC($clwnC2IN5RBm<6=pYJ)-F zK4j@fnAY4H5RwXA?o2Wq6ZxEO%QGR9Y%w*={!MQqNZc)rV2LMEhLMKv{BFtl&(diW z%dd#6hqK$-f;E}SoN%yug}V42$E6;RN5F}!*&xqrk2Vg0ZhSI^<%Zd>d@@FkH@h2_ z2{m&+yv{>E6KH=Pw$OwgmIT+=GwxBt=nNQ}C8>GNbr*AxWm~QpiP@@A6Ye)ULnxqo zD30EjHNto;9hz6|`X*&G``ts|DQJCjE$9O?@_c=<<PjHl%OjkNK#G;1<uxxKR#^^g z1uVaqXvNFHkR+re!Js_la@<nEAnZ9nUqupmxYr*y?0T4u&dSe_yjGxWPHcuPaG5pg zR`2^mUD-Uy_oyjapFh}I2*c#=C*At|>x`-UNbnjS!BKTpp^>*e?=19*i<8l13Dq?g z_?QHg+f_?~dhFv36M@{6J8LFSlfClGNeL};7~<ep$Lh<ryv=`s#5d%XcoP%cn`~+b zuC{4kN;R82J;~9~bJH2U4M*ET?jD_yZfX_`h8k3l)^a|Vs!|7}3_i>6x|`$pnkdyJ zpWykJmWj4Ul@Z{Pgzpf|1>mo*1h6ZnRS)+V!Mu13#cN-jZRbRS&?;lHl5G`UuRP6W z*<AfqXHFYmyV|`^4PC*ZP*=lOe2LJFzQb77_j+N{Y}6@>X0iNp<ovgA1*ryCIkr6a z&u#T=!ycT;10zxgPM6SPXRQ!Y+48^6DRx6yvY<~1_U_dgVq<$`oo5T*LpDMQ6)G1_ zeCuwj8%3hL@Y!EenB;hp)WiP*DW%BaXIef4y&YG>YBQ$l92Q|%f~M#-<Ku-PD9_ml zJwcf5mki>@dWta(CEPA(${kI|GA|%4(2)?!;Oac<;*McstV>koLJFDtdI}+)q7d&M z`Ik%E-4%U=xO!zpkc3RUR^VBiqW{x97Ipw5=RjE{JIuKV2aD`_WK^!`ONcR7W@49o z_RuyxtP=3No7R^~$6Lm!S)^)*j1iO*W@GaJJ=x|JypVXty)5I3m-mLmP6{`gG_*>` zoH%_k4hbVC(^uBWD<Z&G0!9<hWBaJWD0SL*!ed)F)^0BEw&{LMS$$ECtT5T31P=;` z&Kbi8SR02+zbw%|5*Z_kmF}p%Zn+^6-+72>rXC{C1r|m<IE)<l*&vL%kWck+D}=v8 zne{g2P(%3Unum!Ad9J9~(fYdC+bkmVOmV|lvY*q(3AdI7Xbsm>!9lz4L#|6D!`?gF zcjN+C64sMyJ2FO?w}i;~vBIin8mkX2hjNnqI5C-p$Le2@d7g5|@#*Q$1D=FB=aW+6 zvgohJ&R%Bvnd|OBka6MY&6?Trr82#JR2xokUB0b2*L=Tq%`CBXjN)14b?mcmrrpSF zH1zVFuzY|cO-y30YN`Q+&qUa>3S8Ms5gwTgV^qp3kQyH;uZ3lEM`T&|3%wy%B~Elr zC|Y9VebB!JW?E+4HJuBqW(35{6Vd#9wcL<B442D<!KMSUP|^V-CO|F6R^t=Q(IhgQ zUl;@BE|`>bNumKKa<Wa#Q*ni{bZk?^u%@mq@lgR0Ev!NL5LoAGucAj097Oym7W{gw z<$hiLFjQWqu#96|xKQuSS+W6&NEY{Pq*ALZl2CBIrkiAiFpQ^7AyG+4S*jEjkm{BZ zfgxo@h7fj79>i^euo;9#Z7f4bYRt->MFvVLxMsYZAj>CdTi{|bjLea7)$M!4iGdbB z9UE#j<I1G}6hRqYg9<H?=t>i*a2B00iLC{$;=HAbM`6vVIz_>go}1)bhR9y;7(0-E zK_Uvn%oT54<#NtkGAw8BEt1g)@7{MOp8ziXwZvG(<RG$nJkjAeas5KFJE<j9L}%aZ zt@{pTaAi$-?`2{MXDa4oB23RxPI5v+kEdQpJ67p@s?GAtZR#6SZyrL;*+Y{`Ed^;L zl?p?*&k6b4VhuOcr*+%qKeuN*%(YI;p$t+C`S+kg89Es1-T|IlA574`dK{}SmB1f2 zRLsQ@b&1E|;!*XNQ3&7S@tsicEgJb30`Au8>XhJ4ZH`@9I@En;<#QCjBo$RuKz{1# z_k+tUioTS=MAzFUvujT(0td7{RrwqU3_97$or-SNu%vYj+gvz4EOl;w<r=nn9}~zY z%;!0<!wYqW$zro#@f+7YWc1Aa$_-Lq?u=5@3deB^5VUlLgXx}nC3#*R!aL{-jid)a z`}$ZVR9y<JkU}i?F#+8^?hnt4c<V}HzBZYov*<@0oLv~@7AUy^be6!bs%Cak1|d;W zV?UY04suyvA(_L4!qV@3)*?_7b=GsJLQHTJVseiOh2DW>jBT#9!4eZuPUdlXksek8 zR0vNCge-y1zG66WsP7^@|8S1+=7k0QOb^`(agV|q0?>+*K+y#Kv3tIhwk!IFW2+Vo zX7ln~(&&Nakq<O9TOC~aDJIv?&t;FvQ$t4=j?Zo@PeJtwU;9LxaT_ZEhGI5-I<$dr zN8iYTWld6rXkBE9UhUyXq2v!~A7B5f3k;-VzxcWt@Upc7m)#Qk&UHU)BX~I|;5z(u z*L+V+wh$Z1cGpW*^FXW~6Kj_8ZIt_nw^Rj|QXn7gWOdpgLN`99hYMPJ?bLq>>LN0R z@tyfV?hJSmbobY_L&6<p{mUT{q?;npiGpRN8tENi*4#0QbJ)J{fkQV-*J2xC`0Lw= z$kCM(aRZ05996mE43QI(dPcWi{lGvsY)J>Co2ni4&kHB3&v@zc)Au)gh`8=(_cBD8 z^w^%_5R;QnmXtt-=hl~Z{sk&hd!7Sx8$D#HM;VQQ>MF0%CA=n-`D^KAazr>j<kFed zTg^p-Vof#CbzEinxFI!QQkunD-X_0OIb;x4Nv|uJl3!=K**kpG+<?um^M3G{SH?7m zt^@_U4@@k-T8lTlPD5M|qRTESXin`>@c<P)ii<-rc<NbZGicU9d*m;BBD#3VTx>~# zAa9WdNyr&7T&@`rVnn~I$TvQD)*yo)+o&^c<jKZmB^e_W!)nAR$|WrP?zu-sM~tmk z<ttMSyEJFn%y`f%fN$#K#;g2>QSp|u8zzW8l;U>5F{47zcS*MJg*?5cZ_3kNPt~ik zo&HG*yw9BPo19Qa2D+EqmIND`JWQFz1tlr6BB|vMI;Zxgjvr-Rd(-8}%R)n!{9gI< z$AR#~-hfM?he4`6yzW{^IOW9ffTp@YJew4?eY*Ui(DUarBlL)gqp3BMn*gtwrGx9L z#sQ{Y0+LZ_FQJj&Y<(+$%OFCYNou?)W#9q1d!>M)5q&wp*ezCxMR~D+kp5*gtI?1< z;`g1~y9EU#+fGet8da9Z-A3!*x0H!TPZH8xeXI}GdVW3+h?h85{PSS@0g+X{g*1__ ze2N(@wqA0m?wSgH5>6-d_(Q<ODdDj|v^x{FM#bPFwNKcC)8cbdGn>Eu0;zMb6zkk+ zO8D|^O|@mC?d9Q>_K^p^y5%vRm9Z7Fosv)-uTVIRvlUk#>kZ-;&twaIGH{l8f4&=8 zNSsYgD4CpT4PPVaak*By5EIb-^)7QdEhKCbR{KjiYo#@5B|FAPQ%WbfM}RdzqQAim zpG93+VQ4(o#DY%|u9nN;&feJYhk9kY7~UY34zNUgzw{hrppc@(YtZ{NZe@QQ<jSQ- zaM!%C8zXdZJ=G$y%%jcGfWuPdeC{Y(*TTR!a9A*+*BQ1{W$jSpJkoF5<TWjQEcZx) zqev9+@sYQYm1MBy9RG}Yku#ta#9r59RFceMeq7cei|SQz)8I$Coe5LMNZr)4Ei{(@ zW@W_<o-I@zXfYKwyY=uR?chc@XH1Q&Mu=?DPKH&l$C6-`^~~L8jG#!3<uM=6?dD!4 z>G@{+-#hH%GAYlu)l}*Z{gCb~ZI=sge&-jADZu81_EtaU3B!q!wjLXv{`~l<cZWJ; zY<%_Z+}fl{-RVnkp8bhkFTBp?$Ip*fY&rA}GmLQTtYm2i71h8s%!2iGUOV%|_?jOR z8ZvLG^&x@3dKj-$42MyZ@E$2!6^$?o<ogTJA3wSu@U}h^j@Bpw>hpZb#mK}$LPb<b z0No?}vtn*&oDKb~sbCE_lQ4!RG)n6eOAYDhoBR}6r^eB*s+8B5YCC96N0zTOkD^7z z@Hk;x1Clyo$blk?V<*G3bqy+^L(SN$$D>#nV*2)#rO1V~$y{Oe#)806vkYRpiXmzw zNr!2Gp*^NbFje8v`{_gq)c5+gl_5l*=qSzi>Coh-YacL0=-ivwnEFEj$+VlU7|!1Y z$anWn7Od4(elH0f?+~TH;R0ezMho}jSTuQ|)WswQl&!55OZ?^X9D;>d!w21Jhy9+Y zY#}oOwcc>1kXK{=w3!PC-zJ-70!OSj3CDv#hUewYul!&M*7^(7r95_YP_$W6X^?fz zistspT%m&YZGji4+W9baeM<PrzA%{4>p18zB!Pg?buV_?s0>g_T-o;3&(}FRn%PQ8 z2-01B>L>glD0)NZsoq%<{bA};(iJ0C&Fty?3ewFZ3{sN4x**=Fy_XWNyNu{AKkHuc zk*BB=Vk-QkC%--6MS)`+S$~xV3KDcpdBmM{!wO0z>Z+5YEgIWwZ8m!PODmChh1NGe z#o@d>Z%N%c*X>*$QsHA>u8BsA<5OXaYoD{`Sqe+WyF7gq2geM;ko5PS4*wc@sYkPk z7EYx95XqIKKB3N0f~cT1JsQH@#v||ET8tf(=5l+IpR?cec4LA|P=eDrhvkQ`bwRbB zIb$56f+@#&D9>DAj83vU@qV(w1zYjq{FV5#nu=$+@lQZueZv;<o}j6ZQ`MBA$>T2z zBJRP@S4bsWvU?z-C*WAipF2FtiURV<Ju4GkIN>WQ$?h*6AAbK8#4b_uBs98nY9H0W z^*-ZMbN<-ZyK2@ta;Ln9>6@oMqT|zCej)N5l)%HXS>fztB{7C`Z1=nk=!zKiU^R63 zyJ|6smO|C7!VY89cUI6bJyeWntwt<}wLOa>&mfbXpJE|x>*IhQsw>kZvh2HycqJV7 zK3Nep+Id>g5i+9$=6{ROIT|xsR~i*&D1hR5vwnRJP!q^DI7oMBKLDKDDKBjCT|c<i zQF@Fp+Y4ig^i9(@Z|k>NMW0Oo=mO&Cw|B-hydLqZppC|iqxOA<YfJo%TucZ(Tsoe2 z0&O@HVlCoPt(Ln+c5(uTPD8mBhq3m%yD?SgMY$~R!?UyTotADq+10Y8bMbQe#J@n{ zT2<5SQJ$hZTUr+8_WR~6zL!q&S74)d>Fq~vUI-Fp{H}4Dg`a%0+O45a*l5Ag<}AKY zV>56d|7!GA80%Nl@x_GKMt!U<0lMKNjX<^i!*e&o@?8NM2Mt%}Qm4W~k}wR{VK*z3 zk%8PO+JLAD&rtOFyU&k0(lTXAF?s4}mc{p$YNhsS8K4sla|%Q_y%@0ipS-{_+QPz8 z714_noUr3%Wam-GhJcvwwuG;dqiK?(R?Zoh)DIV(Y+e|(``ql(k4%ZE7xU9PNNG=P z#q91Dq2?PNxzHu1k7jWtKE{9n7WmFa^mxod>u0qbiP@Ju5>_KCuSp6`mu&^JwVGx| z{keoO%BcCa)LLhhho1wpaVEbWhq=W&77LMJsP(gz)N!4&v*=7#k;HTO67E)UeQzl# zMYxaYVP&A50^kwG$gsjAB2kY^!$*s0G1HSXU!XQK`HkB-=}umTJXCkTPoSH6$dHT3 zGmVhq>rpVRB~Hd4Q}PwQ3FNDg##bGjZw^mysCuQa=cHe_r(z-n3N{d+GSmM#t2qFT z$zYO{HKG_hC&k&2^t3JmyG}<fNbRJtb;epTWE_m>`wD|eTzaB4yMV5~X_VngU%}!E zGb+nvt<cA&xOD#odO`N>Nx}RIu~GQiXf`h`%W*Y8I*=*j{7ZQL_n?gu_@1rT*qC+b zMI*{p`jDV~cf+kW0}@Hz=t`ZEODi%>Zb^wnQJ)W<gs8tg>YG&3{&-56jKbDRnP=%_ zB$0HyDWzhJiE!R!4l3wMu32-h8N!7<vb=_6NN(0&2gzFvuSChm@7*$7NftoKCDp$# z=PB6llygC(WP-S^*}^@h?(WRU8L-QD%?DX>d)BhjpI9|tXL@ylorK|pqOw%-+tG#b zRW}MYx4FP5q?-JjW?rFyDbKmsu8WBq*fHe{jqAf6QSkL9chW?D7T?ynjaR}N&n~=4 zeiNqOZlY!Oc3N`$r_mls{2mo(o)vpT0m=&UXN+gh&WFF&q4oid74ub5s3emWaIFRT zwqepNVki%Yl#Q<|yB$Lqj1IaWN*By38rSA8c<Fe`6ScFrp=RRof*xXDkiydTW!qD7 zU0X6-N$4-oxv&JN=1@UT$?5Aw=7_$Fqq`;gTj_kI1ZWF%l*rxcD%)}JB;xMM(9?s{ z03C5P)2in?gO(%Jo(_=kB3Odmv=2BI1I5CNsn{Hs#wB%((D_0R?ycy{DBF-B33k_Y zgwFDiT<Onp3nL>AV)jd1Xin}GxLINf<ESXo(ECOF#YMP;zV5}N-DowOfDv7l_+Y?a zpawOqN=|9FbMXo@?}p1ll=LW<HfqLR@5&qS1Y#C&zjiWoT~f*f^z_hP)6iRMj^F2w zj`mJ(qI<7C{)zmNm3VCpS(}()%-iSUJC=N1m&W|^?0U*CRJ(#fF0WwuEdl>`%*ae| z0rsJ)_OqNC>g+^KeH5*@{2i3*Rmb9SE5XJolumXE(?`IgK!g(MHs@WVNog7syCach z@g=A2n#F}DTgtf->{hvZMNok&t&eBphZAu65v2#(dx8jy&pJ1S3k*ebZ&|0NP73NR zsD3k74?8@)ra_JhJGvE?eZPUJ=W2muI@%D*%Y$NrX0S-f#y~0eQi=-*$-|02mUe_b z28xSgtonT?+&km3^rX0AYDUQ<%nIytcm^FSw}BiU6|#U#KVHFS>UMOk`rS<fWyBi< zu-ITO%7nRP`O;pfeYUXExriL9<`{N5F|}EZ*Hkr>;G1}+aenM<A*^1@hB{;3azi<; z|JR_`)&7CMKod2XT49%{fr#G|`U(@4jJ~vu1a`&l64A|ER|q!ua*mz#QbsjtNT*q0 zcvjMixj<Cbm&JqPJRR67I!Fx{ri1t!yo{r<^Pq)SXG~uQ;}taHUl>VT-2wCDLEerH z=8vtcrdYixde3eCGnM&5pI>lJLG_~(JuFQjkLh{7tamX<Yc6^izkz7>i%|t8k|^Qe z)Ra4ZyurFP-+$KUeEEKA7G@J|e(+<GS`YF`ps<WVYZ|>U$<tRIq)|XW{R=as;d&LG zocKAU<O})!*9!7T#u8`tr*+z`xCHg@LOaW%oabe6?ILbuhANTYdsqvlR?oS-p4Xq1 ziBN=tX-vm}r`KC<m*gAU>FV~KDRlTt82PQ$@5|yr=VWH|<X3|F?J(K|-7Hr32IqQQ zq43`H`>W4@BUTD&RRk`?{Wkm*G;WF$q!yC&dnb)VlfQ$jytBO!6S6DHVq$dM=KXSQ zJg~Mxuk_YyW8<w0sz8C`UN5EGbdP4BlZj0eKKpJi|0wyV*Y95pHQRJ^O&2@51zd!- zk7w*v@?I!|&u{+)I>Tu4wvFHcy;LYR*?;Z<I$K{J5x(>DWZ#v<|7-k1s;;*(B~;=~ z^BniV!Ksfb=Hzg$dNXV>zTuD+V{IO^$i-ojTvg_NB_8)R)t@dPMOVpkPo+w*NS-q$ ze(d!O=R%MYUTKK}ekom<pXdUz7As+8QHreTEI<7P3FP+wb&&Qh%{jpKC8i?KC=@oJ z!pIuJZ}2mBC3vveQ2tZ;sNBt{vCrz=p9SGQ%$+x{oE7d5fgYoWW>$mx4dtbg`8>Iw z76Sw?egu1-jif8S1h|+NEFF85&F{w8Md;Y=?sNZ5q?YZYvB@6DJRZKt%Efe~pP(T- z?rGY?nY6Mb@3G>|vf+5Sx#&iT=fT?{%4OWn?@zt*RCcPJ;jzOQweB0azDb~mR}MN} z@YxO!Cj#Vmpkt<d+KfM|lLsa_4?Nm*pDwt%4LD&Op#>Q{g0gYr{r$S+Wnn)#&!U<9 zz3{h3?vZCR-XZ#DxU;;t>|QBKDr^WlX#6O5|1kUcYm$Y6aDNM*cKVy<NV_@<-aVzj z3@`RV%4n>kbk&mhW4@W@&*C!iltRG(`s0~z3$4*R#zJXi_0m(G&+WM=R?)t5ozMKv zE=hXW+YDa5c{~;XA32qO!x7zV;U;w{Fw}gzL(;so?sln~^Q5pu{ikSx+1<p86E2p7 zdbO^QLoZf@#fB(J!V{U|soZ4Z845khe<x&6%y)A3{cHE9WM=TNOKFpdZ}ro|?<0t1 z(oA=L-3Bb~wf`ms!O{QL@*}fe^kN{LJuGTOErb4p(f&4ur;@5n-nb=($Ro+a)? zgVp?D=B;!ZgZC~n3k&$e7oy^h550IMxY2JQRU)BYGlK;EgQA1IiyNC1^mn1-i={uy zX5HTe@&5&~%R~Ab85tzsYdM{8+Wqm(Wu}pS>vnd}05W@1GXAOFty(%`X5AInr)tD} z+4L8e>7=EC<a7DoXHNYEiZ;K&YGkxXOz$$Q@TYd~JbyJjG)<OqaWVh;(+f!}`Lwwe zFHUsVmn!?Wo?HyyW8rdVr=OrJw@BR1YgapGvvg|z>-%X)cwJCPz3=tSnZ0Bp@qk+I zGWx_Y#81fRtFU~{x5GK;nEy8KVB-zs<O8ljq4+~!V+y|ncQa(q--v%)7%rV59aU^w zP<~KQaiO-@n?vOH@;IE2f#k;7c@(ZfZSt(nV!$BYQ*GCF$a93AZR=rz%)E>iN**>o z>9l=AFjX7F($!_@aZ%0g{yG`;aV`Q@U#dc^x!gptT*-XgweM?xcl|f$gQ7fd_!5tN z`~;@X^quA_FPb$`6pGPqdbpRA?>;j|d_Shme`B2@S<T!Yuqi#)tWv>|Q&1w3dvBGy zXoKjHf3~wyp5@u|=q@O<N|vHCu?RO2c|eX5uv=Vgm%f^22w$Q7SroF^zLfo{T;>|) z%7>FB4#8V@h7S2vG(?TX2-*$K`(|oZ=N`M<5jl7F0LLWAkUIZ1?U*+2g-1jqjVkKt z@Ho=>fNI6N|M?}GAwhnZv3V7)cyz#YERM>;?ykw~U{MUgQ`qxbl6McyXWNqV0db|h z8262>BRZ>#J2!-w7^5){x0IL5nfRBGFEP^!VZQ5ExI{Q2Xg3d5vt-dO^$$O?C|TAh zKV)wIPIA0<C@qnq8|ZD1bA9miXtkzbD3M0GEC23+H*@XpiHc{#5i1e*YeN|IB<`J) ztA<>{N!i&2QID^M@*43vwqietOehHsEI!b*bRT?N^q>@>K2~=ukldI~3;7E6HyC`# z72g{qcy(utrdt<G=Pi|mG&)L%(d9;-V=nJ3DE{6J7R|u0gs6LIZ*LX$g%+vxqxX)Q zvw0ie!#o8qT83Cl^uIWGoA_H;Y^9hl`h#E}t9o=%Tt4D7f2LF4jJU^TDt^8?BuwQz zCsp$0%npQyzZ=J1IxAbu3`56{B~lxKOtyIrhL1T8deRdMG8CzsewjM?*sf(aC<mh* zAjVcRnh$;-^###NFx6WtioH}`2J7Tw<ZcQlenJ+mEeFhPlts!j4&1Tw_V<BE+b1;@ zd^qDEl#8Ua_n@yX1m?8oILVm|lN3d!QR+62hAy0Los^}ktO|mEgj&XiXld#CU*?|S z7}-64nkyE#?kW#mjEb-PwvrOxY`n}dDO?b5a26%KsSpuV+{kL)<Z<b9Na3D9u=7*n z73PkcJlF0XCYRCP8urNfDnMD6d?YI2ys)BW5iRGC6UMDyZje1AvdXc29@}_fXSmMu zj84kX=bD<p_rqy8*-yeSgzYHvqGMOLhPuQ53;HPq*7%G^U*wj71%}lD#E@$2?ByDP zXx@lZHeE>`_^Wb9Zt5JVv>icD7F$69Ca&D~CYZ@=Q<kdQ@4$D9ib}PdK(la7O%Zvj zJoNGTu-<AIS(T>*#Fl@);zA4`0z$Ll{p(}`$YZ>wa-nVv(OhvQAp#INW-`v~#yssS zXI8`%ZcSdNjKrf*LQ^s7=I1ahQ@|rC$I!zW!f_5UB5|5E1~daGjNT*s>qwbmW+<;> zejKWHLX#8u23Hf*aNL)YXQ;^q%uE}}6UIy=MkGo{#wu=RV-$_q>)t2Pt;jogImFBP zsWmb!%}C90g6WEqpd<H$I*=RU3@~&3{{Rg0^W)C(`4Q*wznI4OhJWMZMqOK&$M+YD z=FbnG6>dlM`S1R^!+ie$-hZ#*&(og#as40J{MKLp0Ce)X!@vIkCW2#V_i<!@;+gcO z@&5qJ&ph+b9P`TNQT-!tj(*Ske^=N40G<ht!|%TbgJZwJo=!c38$FYnPh?*sh9q+k zk}mSkL#B9Wj<QoEZV0f~aXe8OZU~vlh=r3gBdzgd>KdK(9y7#q9MolCtk3cp;2tdQ ziO6Y%{!{*Rlzkbq!=(mo?x?gFEW%8~FeLuQ6+behRmH0ou;i#a7EHq8HM!3AeC8tH zp3j6IR9F|+cyI99oDX=WMO(fuN3f#tsUmT3OjSTW`jCn+#A8G`spzOOveYo!gS(i; zdFAXB#GTaks?F5oR5?hC9Y>jO0nubLi{TScPh);E&6&#ma%HvgEfY(x#AC-0)}hGX zMA|hBJ`3R}sdC0QksF}KVv6B^_#ne95vwb@TjaqLh7uL}=f}=unsVS7VyhmYC(J}g zD@(E@6T_@MlRD&r(8PsT{rO(*IQ&XiRr+)o%s_G?GC#8*mwU3Xcgs!t-sOx9&U~DF zVsmJaR%$+c@rl+lRJP(jz7A^sbDQ|P?a#?VF>vN{hiUv(RIt%gC1PfFk>}2roqYcQ zd;NSz82c>DyT#q%neg)c^*#K56+6N2*KtZ`v77c@Wr&)(zZIVDb$gCP%&YG|i2i2! z;Km>Q{Nwu^N>1{8hF*}#5saKci@P9$Ir_Zf<B&*^U`7dJyzg{8N)-}V8YCvj^O|eN zB5gtvV=cv7nQ^hl1;a#QZ1CaRJD*5}tfiA4uA?l2ikjm{N;;thh>)Y$&o7$ju{2_& zoSfrN`GAsRXp$iUR5?J(7!eCXcDJhw*AkW_@8B>Vi<;a`wJ<1d2IJ9<=gBw4h-RV< zl-3)e8|p&&e<?WloYIB~p{9au4@}G>INR{~&G2o$>eq4Xwr=k{xwN~U{Xe}PVmWx5 zX&I6A6DvKJf?2Wk;F|Lph>Yj&?q-6s8(seZ+2p{~MrJn&k$s*%dDnJbgloh;H=S_$ z!eb}N1<%Kh61%UlC#-k4<m>jB@AUo>c<<GC-AOS20Cza7Nk!CQiZ}hP7<$Xz<2t=} z;NkDTeyTBWZ*LeXW<P`4%|gXq`PpCe>OK14kR!sT^KwOb^YZ6273&mu`TcAAy?6cb zzARpy5#9yHd}hYE+t>Hs6;+JikAl8Qf}=G50B^6*!N0CvCOgS7XxwBXrrYN7P9kgL z&hd|Q_jKgS8q8)$z4up{%tcInXYR8x$HZ7=nviSE{Y2IBn?dHz;;Pn48lL$TG!|Yw z6Y}Rgn3<8PwT51W#ZANKfYh^O7>@nB?tHwCr&8iHd`FTCamO6QMp`nOlGh3IQVL+g zBg*f;{pU?3@>tM_iXb@Tbd;!pRi;1~gyjDKHCYFTZlD~HTE-zW2E=$ZcnTH;cqPm+ z5iXdnt1;d&JksVo1!={ujQB-3D+HCd0Ac&mToQ6^-1?T1NGjhm@bYJUQI>Q60Cd5e z@ir9$>-zoYlSj{3r`~^lI*ZNtiGP1Lh<G0MbkTYGj<Xzy#wTZ2DbxP|X*rgI{^j|( zj-sQBb#US`7c05ldF0z{W%<nFrUxE7=l*<k$*<GrKYnT_gJv%nf_Kz>Zye0aEzDQ% z=K3$zziasK=c%6g<KOKa{=XUL_2tZ+v_uituWz1y_$Sj8!q+c<wdCvj(R`KwBW&D7 z6S;k*_gw6LuULwYt08m6M-Tqv`>7mpm@Ky+zqtGH5yo!X)Njpe6?xwnOqD)Uvixaa z{BlBzLgmJ9Y-8`Pb$%@N)Fe%_-iI?0)taZx;3l>83y$*_W+5BDP8YsRF>T1Y_;I5l ze^ZQlO?lkjbv~oHdYR5wHpkop1Pu6Y`<jl~H(gvDEK4Q_2{cwBh?v>X&&EDG?n$4Y z2PF!nDn(fb;6F;1B4M6RNte*`k&sp7X-oi`1z@pYsgeFm<-CH4vZ%SGha4afTp)3B z9aW;|ofT27M7YVF_Uwl}_XI~~%Iw_omqSK^%+T+95+Wyq7nv%H)VcG9;`73;sf*4& zeGZ<9<nA{=-p|jT`@h`#@#1IK2*ulSpR7zw=3`vNT5B=dcdr_G-;42(E9K7!+132~ zkscqeYWIlAW_}7h&wQ1Fh|B)~b2A2rE;)(vN5l2+pWXHP<o)>s<L6nNcb`qqWP8tz ze>3k8Zdfvti;wNzD)~1T{8Zd5e>jr)jBIh_bMshp)$n2_Hm|ZOY8WG^0KNYJVg3IA zPtpXu(+t4Z*facdxZWqY@ED7)U31J>JNy{B`L8^fz`nZq&-cXA32mp(mBrmwBbWO} z%Xi=DHzzX#5sx<$;EM3oM<?%em=|{kclqQ@O~Y@kGuq4*5fyyAklJCXyN{1d&EEt- zxJ#-SgS*29x55@?hboX<Mw^|rT$ToQ$B|9eE(gk21no!6UBT>}Y^-o5>M<Qmx)3#F z9;cb3CKR&%ZnYVx;l_SVvoCLnwk0NbNoWaFhyyV$0hHG%1j(plhke%!)-3KnSo<PD zCRMlmoVr~mI*B<#gj15Y+C=A@3`r{z@=&J@5CY{CCdorJUjG0TZ{P3UIgYL$sEYGD z&R~u|H-|H(A}gxv6VKD4N$x(c&N0RD)+6`)voE~3F`pm%Gu-rYZkCT<Uo%I~Bj$#^ zOZEG5{{X+gcl&k9>L8DrocMK$>3C+pn)6*x=DFR>>&IBde|7is=l1K5m#EK(KebyP zc+Yb+y6^NQ>zDoO`~2}|^^F4S>mU2gGr2$R{{Zu?XFoFE<Mo;6ZF!H0lf-RfzGtf= zSC@3wH<)jRJx{z$#7v|4a`GV5vIBUSEIOT!&n1#mSf0O0mVA9liem*ZX#-pI{Be`Z z(MPGc)td9q=$KKMnj;;UguX&VGw%!Gw#jOKvx-u(?F%(%XFbU9o4ico?J{F*!7S?v z)CY@*@Pv7(O5<@=>RXG5)-LU1Gc~yvFb7#bTHIeE5^}XS&`Xmw3#+buD7g;vX>`A3 z2LyKS%wytbMsqhju+!nG&BaA9PR5Dl)1-Nm+!W(dekK5lg-LZ97py?lVhk-*yGBR_ zA>2XshRX<n;D7)CKln(;l1>-_nOOyCmx`nr6eER2GRc`7{{S6)PtCr0CQ@~R8r@&0 z5Z*Yjj22-6Y9=ugqpR=#0M5_s`TX<8tLxtX01i1{t##M^=k)7e-D`pE{on8L9P{y? zTK)e3o@?CoBVC{0vz>kqynKE+{r)%O<>&YN{r&mj>o`9W{{ZQHs3RIW`o=fam^ppS z$FJ9a$DVKa(Fo&nJN0~s$4{YS6|e4BjYXG@`B(Zyog8R!L>em&qgoO8<l<wd_Be-g zIO~jcmYQzU>;C{bG&2*KGm096uTrclk_b@z$8MYUIp(I#&WY8H{54qQO`G$mlWyd$ z)a_?OjrTz^?5^!IG1rYn;%?Ron4dGGmd`jkuP~z{;GObfg|&@Ev8cCLFBv6_;v&i% z3|^&yQ>)}COC9bn#-8Zzf?HHzsiPNcMH2X!jw+BbkIlvwoS3|FVY5=f#P_&7RrV62 zdLh_VzfZ>rOnB=b^ozc@1|_PKNLv8XiWoQ-<R2}-*|Ksk{w3$kFcQ-_DTItzoRWm8 zsZC8SB~r384xorN-=2BA{{U~kGgVIh^YtIL_)D(8@bBtt-x>aO_1E<C&iU&yex>|m z^Xr=Zzv+If&2u}C+xzQ}#$x{fZ|j7vJ}2&RJ=8=V*BRuf-;BRGJHIsUzrWwdF)!}F z-$ye(5j@b>%b5*xGHV<8{3qv)V>!h?w9(YKN#dk#!t&q2Gmlg1?;m&KyrZ*Q<jqt# z@QJj{XB(5vgi-oqEK$E2o8rFbO@3ILsMwX;GVFvk0=)jOj<`@-&M|<PwgHJYVNPeb z9aW0hom%&c<VR?;8p)I7Nc54(6AsUD3nEC95?q9=@a|O$jmc6(?=0)gOETPJb4o23 zpB^_9Hybk<nP8fXVvBI`h>D5tL8Xb_*jJZ<(nea1NfdYK-y<oveq*u1{8s0ROp_{A z%#<<Sy<c&%J`ZP7_Sf%;SH$4PqP`0FoIDq~?S&>>XA(kGrqzP&#A1eTAY9|jaLT5* zK(J93V-rG&ZgxQiK(3&)Ccpe8GVYbm5W=BP7mjI8G$rn+>`>Nh?w878rA(X%`2NLf z*15Wgjpjdl)qV5UYA!DPF{}9V$-I1D_w&k?{{38f^};jn$CqE--!S{$^RUK$UZ;`- z&&OUaA|@|HMDrK%?qHqA;`+}Co7Dcl7{(_!-Twe;dyiV(UwrX3^0yhBY=2TY`u_lD z``<m&f;`oG%rg&w;=%a6v65VQWSE&U(7no$@#Hkzu`@bj9cpjDLSxAhn7$f?>=}qe z@n6Jdd4@F`o0Xfu-&guQ5O=5|+D{+cP|V2?0qFuVehud0KuTtCmxwNF9UeHZWEJIb zPgi*yrYDfpz140Q{7j666P_JXF%fuX6SSAC{AJ!cPL~j@>ldDFXA|W~64Xv7qrOEp zmOiF`X5oS&uaJx?5xIzPOg1b`e4OpmInHb<ko{wP8BIs&=!s$o3*Z|GquxX~KAOjf zsR{XOZX*6YH_Uk>OT94{T4#FWcj)s#deqkQrMs3b6CN;0J>c_oGvpwaIYbUyWq^wu zZ4fXh;#91J7(7Fj2@G5%fI^S{MbI_VF2g^WsrZPyBv~YYT%xc58I+IaK7Y9HnC-84 z{$|<yN)3POWbgSuUQT?Y*Sd=MsmaT@e0=8b)qZ*Lvg#8v@!6C*gYjqXezBwV87B7{ zX!YJ+*uxzDV}7%loZM<=`I&_=s(ksPC){@aU#P!c{r4PiL!Vz*{x#40IiK&3>yu7g zeP(IDjkI4;hj}H0*1E4pA&~bLUh#JkG#WW9Llb80F&%d}#gkUXs$t0g0CRiQ%CmnH zbRb9E#&kw`33B}vyYZl)oW#xJHBhDblv8EU;>VDR5LLLMVVV2T<+qhC;^{4>Z`Hv) zuJd)Im9p8LX5@?)G<}Xsbs1jeskn|?A!#~?SK*nwwQR>4!U0x7u#;EZOPT5BJ^Zsv zV@1n}hPJeYQ&ToiUOWxVAyG13NoS%8Ukt(pws6VbdMgnX8E33q^CLRPs-|<|*bHxz z5=_i0&BE-hOAjotoJxcf^X@e{CO9yY0c=9c5t#VA#zy%uGdO2so6QzKGXor=pizix z$OuuKoU8zIM<|dGBWPRy0FiV(5Tv5Opvkb3n1Lg*p`y~1G`Ukuyy}4hzKH(-^1h?v zfAr_`aZ~s1f3H79t<PUsuBLOzr8Pg#jC^_I_0*f6+_bm;^BBhLfv*}pQHkQ}uB45{ zm-b5G-w9hB)%e*19$n&|V$>7pdoj0~9Za;&WWkO8?a1R1sLEri*I~uIY?1mIH`G1q z<q~HJ`<YzD&9a<mNv@zA)M=2-q)(1PF$rlCoxu_BMfsvU^#d_1<iXndnt2ehvkgls z!xLTk%yX&+_jTrCyimPzZHrr}tW@;kafS%w4*jz|<*vHvopEeW8K(z~-cjQhHP!14 zi@BU*8mtU#idOaCR4yYr#e^M8(nY#)Rz}6*MN`*_e900QB*gJWRYCC;pEIvEI4r$O zep!MmDdH=(`Ed7@@p$&RD*f@lkjyQHD$&uEYA&Mh5ES?1-r22a!1mrE1fM_od|1e5 zv^#M16h<N63A01o)0ck;SJy3Sq6P`I2Z}QX1IrM-^R6_K5Fq4>g(t8MRHVR<{%o)U zMi{^Vvm>%rP^AhLD#&vZTi52;jn;RIk37LJ7{foDtDh^&K#f(!jCD|6JVe(QF>kkZ zpL!gg&S?0|3_9*=Jh$rcJ~VYHBIT$~k0?p;f{0e*yU)FHqt}^kHoF}@my>X2veZD; zGw(Z;t}bHYyk6)2>*tN+Hjt?VJ;w6H<8#F@iPX<WvW1;@o+RlWLAGJe1%fv@;Y3>* zA&s3lekwwFmVvmuCbHZ4Vx}HO4dl(F^*0w7#*pC5RkEygMm46p<fyS0bhc%Pn!NYz zaHb@aR^aQ!;lw;<rg1L3Mt&CCCxFv21bQMFdz+0kyj9-Aq7!=W*KHvbO*!;U+?L;u z&mpx77<?ANmV1fC_RqE<ES$Fytxk8{S*XtHWOO!xF&`6GmU2yLwC&t)CnAfGG2vN3 z$`jz90y2{YS9;49(OP56z@Uhgl8M8(yRVm*(&nZb{mU%zJzSFI6S*Y08Qwl|f7-p? z%?>6a@^D(nUM!f5Fgd!%RV|#zsRG-9CA_knnBy*R3~?h=OaB0%Mj4IV5dz|jaEWkB zQD~q%fKH>4#EB$eq?sU?i-GGMu-R>s82ExCthk#wG35)y_{`iZ6Ri?(Lve>t*PCYZ zb*;NkGd2)a;+sNQ^~rxwS>JQHii|ZwH|Aj%rHFs?pjZc$EMJdg>PVL6iKyDcDlR%n z^)uC=cQeUkSnJYE9xa{J+%d_1Lp3RrOnk&t=bExW$rE}n)`2FXIVJ6eUhHUOjpNK0 z!xNdMWv4*yYu&^&ODk7&!%-mZ#wI6e#E|Z%yjkMdj7oRRFMFwhF06^qT9JaqoW4A^ zdF$S|({Sk9U6K;j%+v=3U0@?lp@@;ZG)#D#h>K55M(R79)Ut9bY`te6BFv64BGEDN zB!P#|++%mkhAy)By(~D)V-v><GjXgKtxS8U+sQ7Ya2MWsAjD<YGn<OQFcQ@pF)?*q zAt5H_cRDb(#rF8&bSSu+3C{bf>NgxE?I&6ouXR%O9H>Wek1_|TC3!K<mV+95MBK@I z-%-nm49i{3)Kd|UGs$~~2)U908JU31gjDjL5H*ShWW*L(W&_57BkTnClpP=akU=FV zA_YU%fAHS($}9jh2+~BbB7SgKUSoMCyL!9gxuJ@(bDUPjV3s0liv<!J$%E)z+bqoE ziDWVvYYffzo58e+<=*W-T;_6XP)!co2#%_^cx%oy9Bw<tK&Q54XSO`^IJSXOuf|^C zp0b07r2rx|j@gq^8iSD+WtV@f#9hvDYdmjEcFPQtGf)I<tnzM$cUV~gkY&?5ITamS zqjN8g)*iWi{I)|ZEL%~zeQ`eJF%nT%?gc7v947%A^WYR>CNW6ae1-c2@ObEElkVbW z^3j>BR)+Bi9IBheK^2R!N^!g7z%@TOh$rg<lM^wPa>O5k#;{Ml>ywEr4d}3+`?d}6 z8e`1T)>!k}bguc6u8it?)}i~moW?tIj7#Gfn4rfu5$bdI`&6bYlVCm9b!>XhqDP9l z4=ys*Hf4x>mBwH(3f|@j@u&X)PAk{#>Ix<&!#d9ynS1l<?RDSHJT?=v_sckQ>N#tQ z3ulCuEovBu$-z{brucwZz*}Ga&-IHSXbP%&UTA>XVTwXg6iEOHaX=vqW?3+#Q9}O! zHUz`3(lkWjiGooEu6adcX3rV>L??{%3SH`y-^@tGxp9}-CNnQmcOcmvP@G}#z2vsW zq6zvBbu;G5W@CDpX3*~wp`5nR^`BX~S!PJwIg_ZH_C?Q>)4{s7*Gg1mb)&NL##(3; z{2$4W&N-Ow*_ugbRA!@U(ag$9#%)O=eUn++5dn1h^Pb%PGab(|&H0VgO~zU7W*}Rk z-X@5NsgHApI`J+fMSR0KzZhq3Gsi4Fbl1dYGfru~4nBjnEb}eihA$IFBy|@gTfAK) zK)j9n?>>skbVcU4wYsUE%z7D*3RJw$zS+)$EcGq*jzI($hVEQNy;<%z4rg}xCd=y| z^E~fx#6K^`l6`NH-YqtjkNfANg5aFVEW-7Qp9kvkkJHat{60Kzx$&a@F7lpY9~|oa zeEw%WQpwKe2(7_WP<}l1T#1J<i3z+A2E*uuUpEF03Syq-5B|;re~1!SBPc{gI4PY8 zzQ7wAp-7h~<uoE6WpcCM7G`7Vb#UWR)kV3f!Xfvg+1qT{-#r!u%u_295$u?j9CAL+ znWl-0a#>MXu3LL*nV?6xl|KyH@x~(YE8nv-)-!yc7{|l$-cHQxmnmNm{{YFFuU<J8 z##zpH6S;1?&Q2{p<fW0-=K*1fymIvnZ!0w;J*B9qR(aL`02nX!sg!nd=(_VXvSZow zZ;xK?AbM&_8Jef;YeHDFFXhES`%Hz8Z%LSlhul*!gI%6<N4kS>1zj2CcH_j(zn{mR zIIk{#rSId>d}3dNe>o4(i}=q(#9%8r!{dL6xYzU6boY>(Drb9^eT3_8kP`F2%#r7K zVa5&SAvJqya}|$%Nr$_RNB&enonkXTj(Z%hbVsGDs3RGcJ9NJ-9;g?*j=B5${Xe;P z#d~QZ>6v|eh84wdklBHxE+jWajyp`wMeu_Xn<Kz9s>-7U0&oET077&zvmk&J357bD zsKHH=j#vk|;^@HFQ2ES0;T=aY1LkW3uFcQ62X(JrOFk3DTeu!613rRfl9q0kvz(k< zs<WQ`RNc(fLsg)kab^ubNM<FR^Xe8fPKvOMzRwRMGwapn59_IlD*Wrk-|TKYaw0c3 z9{&Kkev^__GEa$rGP?6b2{GfQE*hT~RgUvGh)4J7NQ^#r$Q=3%jN)dx-6}(=_$o_k z<@CblYe_^&NFb9)%WcP-J|l-=5u~4;mz^6qU)sOV?Z&XE62XC%UEt5_9M_4(=hyN3 zlH9l5_UgaqFdO-{v1`}H`Tqc7UZd8a`ti)%-Avj`?RAqM7cH)K_8*^){`h|VYW^VJ zC-0Y$NK4#aA>4P#t&<Wie!k$CwTO6?IIzU#d}~aBx#5GqezlSI9e`wt4seOsgAsFa zIw<8RxEDsun<15R{Q|tXEq%}RZXAO8&zV#tbmU3|nxYaxxd7ZkLAA^cM}`^1Y5ARy zMz<);%W;g>Msl8dqx6V9wC&R(qi!Ub9ke8M3!Kb8Zuo|4Ip2re)V}r4Lr~97{y+D= zdxd9v_fv|<>gS9&OhvaDK2V4-*6E300sTH>sMZ7Dc&N{gp}F0B-#@#L-oE(j#l15S z&_vf-qo4Wv@@FyfPpr-$@_FRk&xJ{kSK^zHtjRGq6Vso@mN)Y}SId9Z`2PT$N^#Uz zlO+87H_4Bmyp!?29(Y-Fu@+U_@A&ySuBMxgoHwBR*-bm4sJ(o8Gx_4h+uP&!jdkEx zhn-J!Enn2e`9x&;$DLN%{KpB**F#tDG2M7A<R<*)JBKueHrE=RMMdV5@!|3z96ORD z1_Li^rY89C#;Yoofq1afEaI1e>gaFawf>R=Mva$*tN{$X5;TAd5*6M9XG?MN#M|>R z{{X!-JMlF?*ZUgyb>zkN&R1vePdn{rJ^B)+UFav750sCIoiPyko8~gr&Z+M>iQH-) zd2;^%?mlX-y5#$fN3zqu1ETp;iO=`C_tfxhQGQS+U*~+7`p>`YItk>rb2;s9=jQvq z!;i0xPO~rd@e_KO!9Q@XKY!Wp`@cLtpYQMElXLr4aTi|r!H3G4&G)LWisq|pk?}wI zUhI?SJ})eMY)OJVlLv|J9NkqBOgrBr`s3@_{6(+p`6s?akHL)R&OAPHawqFPBWH}* zMe1dib$;jH-Na0M^S@#D7=};BeAo4G=USFS-ym)rA!$-<=rT?wNB*ThM;Nd#`eE4Q zj#T2M96E)ybn5p6q?v^LSsLVI1U!tutic9{l{3>h&OT?)%pBL7f?{>&yLuw@=4e+* z>f)_@Z@y0BZ0Dh=nP)#jS;?57iB9*s`2DY*U(0^!zsdOFyiUCq{Qk$7<l6>w`uH?i z>WSsir8V(C8~NWgG3IsD<Kl0wQ6E_TKjF+%=f?DVS@Z9izR4yhIWsp7`7K<h+-v*c zfRmlWkhAaS^y{9TSLbBXdfsb^>d)l5e|mUd%tX~weS-~RHuJAPAE}&E=dONyWBd5? z-x>P;_7@Cx`sD%@25nEx)Mrr~-d*CoJN_H$ivIw>+j{x$A<16+9~&5(+z+C89r~&B zx$7^<aB^k@qwBL&D6D{>iT3!sLK*Y(q&oJ|^<|gBQ$oM#+75Yv5=niWO!Jdy63r|E z>}l$VMyl}@`F~%&Es+}d$8%n1%11A8<#Q{2vsV&B+VlHY`TqcsscV#VnaAhD_s{Fk z6w&W&*Nm6=tLiY{uMN!pC#nAcw~xlBqPaiDK05s8FMKAa#=P{X$GeVsx}WcVuaZth z#Y|oz$(-#BF3#iTWqa-Z{cn?>8?Lha$?W<W@ea@VXXA`mn3hHyAk4<Up8<dSI-Iwk zip*9cS&83q{IceI<jD2;`bvzO!f?cx{>Or2$Lq#3F<(qiQuiA^`TF`(yLu+E)nkwA z_>5~F=G-H|Z_L}|!G@J(gu!z0T{Ji1L#yiMui_{5U=#?h36R9Nr^VuM=v$*a6LS9m zs~z1yu_P=WFsO}1hEZHm7=f+@Y*A(WWhf9R%%h&0B#dXj?j7^Yy?#GS{j~=@k@fw4 zVe!Z(+<pD{BiEjG{{VlF%trOkjb?vs{9nZJoe?Z;rAoiw6Uc+&dfV4-Sk64^zvqsB z=bQffs=j7FXrAX}^^%Sg@@I4B<~o=VIpqDAB4VyQ7d|=Xu>Q=({{Zg~-s8K=azpJd zahu&zS-%nsdZWvcE;}<(-(Kc7qnCF!^*H!5haa(B%iaCt{)a~~L4cgZ?iiodE6*-V z@X7hSG2?FGhiu}Yy*booKX~Q-ncseKi_UpD0<vpA7-2<(rx7nb%r-77<maS00fmIX zIkW3u>eyH^C~BMlo<3!HL9>+%%OO%>MiDCvqd6hy{z|u+x??!CV{tw#gqdfTpx@;$ zUej**Q(xaMiTwR@A6J;H{{Vkj<m#M!B>w;(eqtc66n}m<#2tRs>s^Fsm_jG>T4VnJ z9<eU5aACx;lW&$kZ5&_kylQ^8^UB3cUZ=O^FZkv*-r1j*=qB}itG)M$E%9f$zW6!D zW9JW9UWv~5#(I_UP5G~zvmEhPoXc7JjnT>+?z(5*Zfdh;IO6{R88I&Kx|rfm_PfM~ z7d8w<#Z><Q?yJW<5@KT&H8GNP_FpRIoYRd?D4f;qtC6E^wdP{#>&M&3lxhoH`vfyA zNzU=;tl(g-bc6kIJHm^(!7cIvNuCJ@${Rc;SOX-d5GA2qiOfv27Z_i!#w+*liw9Q4 zZRp$Iam;v+&OOhUC#R0Qr+T{jp1%3rQ|3u~E9NrCnD2j4<i8m_)x4VNnA5oa%x{O{ z$gbJ)&I!yjd=(h&hG#gL#7SANx4#vOqUPX&F25YjCBxI<jQGq`?BO}iCph%hoD%4{ z7CrtA+)rTk#8f=4)-*oq2BQ$x3$9iLA&4Tg-c7lFM~`exRAT$wDdMUdGv~WnE91%V z_s`D!)In7<dHiGIAH%DLCtI3z1{8{oz9-y56OyVqoIW>oa^(Gz<)Iv%PAM?6XNLQX z#|f}oN{O5zCkc@fydnq45Cl0b>q!s3v^Qxcz~7jk_9>Di3&W!&gCuSukYFVV6cPno z4Ji?UfP@iBMi~+*07XO0`U~)y&$*c*FOu~>x_rqFAJfEU-+8HOKJ~ijD_t3{*95S7 z_#c|oPnqgisn^FTC79QOGZ>p$@67_1!xDNRmN4F94kwx+B0M?w7@rY{(K=`Izh`NS z9|ZA=rgF;&OswNK6ZIVN;=0~%(dOfEJy7+V8+-3FUCGY`=HD@Hw388;EaR^h+W~Ci z@kXYi4n)VzH8m2E+xzv*eAO9SOPbE$l&GFfUFpmf=6x<Z-x5nR2XK>r5?bRvb184T z2&j5<BvS0*nTtJq?lNIidgElf^}9o(bGVXcg-<NZrQ90?++}#QXpDX73bc@i`v6^2 z`1Ax3DMN*ltrnvpa_0gFRx&0A6h*+eU=|ZKalIOTXQOv<#R<F3ul=meR%)I=+)b$5 z9aQbz57eG<QHZnZS25jX=gc~b&fg4+HRlg5^>y2bz@IJypA~XeS?)5hRfnEbIC925 z{xdz@$1{nyFnm5kPmK2ZH|J34CW7Z=a$2>ih;gm%Hm`_YE+xbD1DKnXG4Sz+-Fd?} zHbqGi#?y_&OKBC;yD?WXc^8ZO`Xz;Q=Iw;Vu@W6sEj`(}uX@AGIIAiv71ZKY$y%6O zklCC`mSL5nrm*u90zhxV_6$)H{Z|Z)?OP&YhdA~hGs&=2Tda|H5CvpxaFmJ&eGI2b zmD~l9O1#+wgrGm#3t?se*aD?^^Tw8iM404A2!gLOiW-$oAuW++mc}UN3unpa<P40? z;G%dCJ;bk3@RJKUNvep{lh%EiUfPA$G(RgXcd=Y#YxBHm2#K$m0wXMyn1zmFZi*Pk zVHCu5UTzns%rSH3V27v2mbU}-E?BHgDp-=@*w;Zy&!jEs`L0-pb8*_lz3UeD!Qb3& zt*tlp8DpNjGGiHM;%-rGh!<H&lwuEUd@XAdB*yM>n5z`ZqtOFb&r*3X<!wdAX0SVP zGr1Sd{NT*C;b)YVHXX0@nVh|Al$bhU2JQ>9eN#O>m}U!AH6~QNc6WsF2#|=2g~WG4 z&lWl9^0=)fha>&Ul5fsi1cVFMa4xYS7S6;FbI4rYXEkD4tX&^|aV9wv2ygz@6HvR( zGk1a3GMn<z>W0^oaCF2E!*vxAFt_WxmQQfkOV)p92$?1=YdN{j(x<93Nc(0FA19e$ zn`4&8#-|;%r(2kG=dJZgznG7_Jo9~__1}vnWQYZo9hSmdh-UjwsHh%2!l{b+?z*Uw zv&g8P#t6Z-2rGH44=boIQ4<#%xS8<<JPbRlshgj7NtWlnUQ01~xbY3acxN$e&LMll z)Z8k_8X2fLr_nKCQnuTy;xmpp&3J2y&dDK|L1iW~O;s5Sg6n~Q-80^FNP)BDgg21p znUw^NBojzp4`V2V3^}ahfX{lFlHZL}<zi+gq5@W8KGm~upNU9<V~paMobCcfVw!h$ zy8?9$81gOXnXJin0Wq1`Cu?@b@ZA#2F!wgI6u~vP%OcZ>FwDjz%}_(`2eVeVIfu3) zi)rv%6ED^AsEn=RZJF^X6A@t1RV9!W5#gJb?-x_PD3%Y7pp3QJxuZB)!7(>6gL9vc zGckON(PXu(3s7Y-HwX~$POCv)TVtX6^U0jaNXMGQWX&u{TE{6UanqWDC}--4sN-Uf zu#}aZ0zv^ekYQh1?yAZXRU+RjNW)|jx8?r!c1|>&3BX5|E-)0xt|FuWpkkhIC}{x! zoeGpFC8ds8jpPv~B|`dvD!C~kIG~+o(^#SzBKdK6o|Q65JHz0b7I;ixR>>aNa?HeM zbwpZ|GR2NCE+utr^f2KwcMB5`G!-%P4B#fBA)P{yTyG{KJ#ZVFOL~ZkpGGc--#3RY z9p}qr$ubs4B_m-mp9Ib=3A}2~Tx^2|n3$5|7#8Vokhcx#(cIP?c!-3cnQ3UG6!FrC zhHR#ZNkt%v`JJOVsbG!`;o>2Va00ZFt_Xsr5rZNiu*WVC2=gL5XUJ>xEB*UH5d=g; zks3s46DJ&39XnWtuDgaqXJfYOIa|uegp&x51rdr=H7qi5@(t2qz#?Yq-!SrIGI&#W zME;wOZs<&Y^8Wywo$@eYh;1D1GM?n|9AX&<7`i9J24m}nzLw9q;VIC{Pt%%Mnd9`0 zSMA5lxlS?!3mg8TI%R5^o?H&=L}NFXed4vjsO^y^=#lOy{{YxbaziUS&@|mo1!#mg zkS66zSxm@sLHGG)$CVfZfvSfH(l!UMZw%l70000G0YC)+VE+L8Dg4F9WpypdS-GAl zLW7Zy>;C}GotJm;eii=!=>tEmdAs@_T>j;#{43Re`H%^Nn_}0uZ~p)?0fY2>DQdm1 S!VQ^cDVOwxo({kM7ysFgMLvT7 literal 36707 zcmbTd1ymhNvnV_pcZcBat|7PtclY29L6cx1xVuYmcZUE$f@^RmxI=LFx5;<TJ?Gx{ z{<Yrwd++Y)>8UR3n(40UndiCZRRB#!LRta<fgk`v@DF%iL*Ev6wK4|)X=!=@4gdgX z03QSmfWS2wa3=Vxt^%&pf*}92LxSsUU<63uqYgN;gX>t}BNz$b4$j;Vz@PKKkCM{z zN~G+}Y^=<j06Qz&8(vl(UN$yTw%5GiIv3juRS?u4%q8I7pug%b4G>_8FVt4S8S*dc zFyK1Ozv|fk;tB-uA3WP&7>K{>*J$7qaDw~ud;Yf$z{FmtJTC%o0XP^KSQuzHSXfwi zcsK+kEMz1^L?k>6OjIl)d=g?Jd_qD}N@f~Taz+Y5LRxM*MpiaXPEHaU9)UOP{LCDj z>@P?_@bK_Rh)B4|$hhoegk<dh&*}LGfDQ-ds00#34nUxTAkjh3-2e%gPiWAe^dC{c z=Ma!k&@ixY@Cb-tfO@nSO+i9HK|(`AL4mJ&g0BNm=+GEsY$7n2%0{r{j#%tIG1+hw zqSYPPD&r@V9L7$*@CZ1saPjb|sA*{F=sCGwbHCx?eJds|At@y-qpGH^p{b><V`6G% zZeeL<?fl{6Cl^;YcR&Atz@Xre(Ac>6gv6xel+>Kuy!?W~qT-U8+PeCNZ;egOon75M zy?y-ygA<ce(=)Sk^9yV18=G6(JG*=Pr)TFEmsi&}w|6gcfxv_MclwWH|3fZxuv`#O zP>@itFLHq(TwVl6hk_<!gTW9{hBb1;Bxm=5!xD|juI_-R;7~ciHg+0Ez@g+^qdI*N z?T=*tcY^u;|B~##1p7y>1po;W1Rgv{bU+9=rp;-rBz6rv>!hllOwOzLo*(~Fc@EVb z_^sm_y_PR7_?xcaXzpVM%l&W7QF|BeWYY{yC->S0d4B6L7H5SYo}jBC``eqar+X~V z=E<ioM$bT7k1Ou<VRQP_*7WaD4W2t?LxG*cnauNZ)W<8@d(W(AAgRdfxLP0evDDlh z=b>1r{=HX=WmS~x(|FA@kl847yqd?G5PaZfCv=!q3HLNpPXy1oa`@G8zNm`$^s%_` z85q6%_V{RUntQLR2<~xUe}C7$p^wH@>LrnnKV2n&9|k&FS!i~7cm@`|R;Hf;e8t0e zd{177UdQ{-K!mHo)mGyZPTtc}!_xtnyV-kPc`%xLgZqc}4e7_qf@fe%boS{PV7ZwM z@Uqhd(|euw^vmzbtsVz*sl9=7^bStv8Ccl@BNl4l?05#)2ozuX>SKItWV^;yMX871 zFaaap<9h#E0wL+Dtgk9T`st%BnuJLIRb>W6(qYtnZKm}F3zT(IViMcjlGLa@%b?Hg z+*0-7LKxD8HEm8bv_tA+RrAb|di(s7==bK0kBYY_zwXhzL=?y^BKB);Q`0+1yB(X< zN#3emO<i~4r_VhD1*6YEHom1kG%LA%0$wYOH9Ar^%+fh}blbGCYj?Rl8kNgHU1kNH z@3iwdM`o@Hgt+i{@5arnP=!!F0o~PjaKx}1BetfUhqHofteMs#>Cye5l@G4SfpndR zsxA3~aU*5*Il`d;FY0N@7Wwj%X<7NU319&^6OD8A$R;dus4V52M?rXe4hYGSoZl#$ z8owIavNMJ>@p{`)0QFsSN=fO{p1K`{xP8*6D}JPl;?0QRPcwtUl!TeKaZjAUYSuN0 z4jg3o6bo#0#s}LkD(vtFifvj?GdU9U8A=qyjqA~<3qlAcC{~PDcJXvn4zJ@5RGLqP z5ltLsl41t)R=I^_E@eSaUyU~+CbA#J-DpYP+|5?%P!C1$6H8e>1IY#67do^#c}9A6 zMP2vqn;xi}3^f%r8vUoxvx1p}X=0;<ts831qYsz%+g84LZMf6SL62PaJMvP?5(}Z) zRSM9o6e*!@7$rw+1C5p6NY<3Xx)-k%Jn1Ql2v2eQX1-pHe|L#(y3B(<utG!(A^LQz zjvyGAF990+CM;p|#v1t<;P2a!yb42!i5f|MRo)keK!GL|{f#JyWKHgj%q&@OX=Jn1 zB&#Gy$>ag@Jnw1D_8BPE0h;LX7{%NSSlM@oSV23NdHynX+;W4MX}>q>)$skE0f#Ri zyex&Tp-HJ-sW89i(m|!?U19T)dALeE$ffZ06$=P4eyNwe7a2WaBAX(?ovQ<x45WOu zt$2M6*{c0fnpr~=VUS|6?ry#I8K@(<50ktK&-|qWd?z$!+J&Rlb-IhP*4Wf=Ymd%s zt}if5AoaC+g~)FAHX|n)`!oc0rqvfsz9&RzIqFU`8vQ(~+yjc_fKjo<Yr-EkOIc*! zvKUtryR_o)%g!9j8TP^~NeSvr#;;7HhvIIzQ;*|Yge9+8ji-;!GI%XQmjlnh1*UpE z=o!GYX}|luGE%<#44mEx9ejNTcBzvI)3ID~qB}!rvmpLwZZ7ppN0qt?X}_S~vMKtS zjwrqHq}~1$APULVcG9OeTe;}OsQBpol(5N?-W7U<NcFQm<VtZ*9_|9>zVAR<X2tc< zie3V{e?Rk#FwH&SNwj%?^P|Bn%FhdfO*$~A5t0$+*H7Pt&P!8SczvU;NN(}VOOcxo zPx_=6Z>P&qpG2*mHvYq8%)S+!;<AvA%v%K79Pj@v?``soeW<*q1V3j=lPl6AKOi$a z&I?`81EUVys4`a(y!`X?Ud@>kEk=FAg7ruE*6R~vUNxB$$&oFWobiRld0>T7l{^Fe zpS*IO0r~@**lFj-Chl>sgf}4>d=&+wXe*G<fI#xp0x?P<$$i8#kd+$MEp*0i;593g zB#JjpK_sXFCN9s)LvbB76PwU>dN-kht1ONM{Lic@=e21t5mncIhwaQY!TJn@ddS?# zf*&(u&>TZ7Gp!3hj1dj4HSaY2y@o_Cv5&5V_TRUK$;0g{s!EF-h)Z=g$!mFa-+@7H zH8u4rDxU$eUIF$ndH4*zb+#ys6);0z{2fcWMse*Qp(gpIgx2%ho`H(YG1UvQbRE#| zl{@$XSn8Ldq0>DkDW@U}z)}{5{-60n(3AKQ!_xv-`yYSKN_lO*n|KBeE1!adv6^KH zms@ALpSEWor=JqmD7Sh&ZGJHtz+3V~``xOF@<C3G|HncZ%8_i|d2OXW103(vofb}d z>rfxr4YsYaIr>_ZUf*O~xHmqDMu128#Op`<1*YPu<>Go+?m^v?Zwh!y>(>Fz9(%nQ zXs+k^WnQ7sihXgx#Q#~P(&0DGayx}!gU+7ien%~|{&nIBJoD|UfrOudGUY|`*3|L- z*nW$fT#}+nd?n;gR1NIktVG{%OoaMK&auWKA3k6yzo<3}4as_(L@Vf=YjT!roh|I( z)1|18!BZ<&W6Ea6Yxy=xlc-kw)Z!QRj8~qZU(8_o^up+)hm}zKt23^+Y(g8HC84lq zK!o$h*5)&ywW2CtDEn0Z3@mdl{C}9P(6-K`&~nl<AX;J9%qo4doW6^1@QC2epo@Gx z#!_1JXfsQ`{WRt^srF>tk}FSe>7fpunEY;MOLZ_7T9d)`p}r09J%|72F}xGfOH*gB z)OD*VsdpWkbgdB;87c84_ZcXcw?jI&4`wsxqkDwc+2-Vi)Myw$Ozc%`B>!%JC(O*x zdj^U_4B9&mJvXyUn>42Tl`Hv?p0$f1+KV@|zPrYPZ$PjhN>JGG`$ZlHdFbrDSmyF0 zo!Hqk;O@<~Tka(&_qZXuJ?MO1515Smx+BbDN=LO#wb@)pkHJVx?piLaED0spgb=RU z38mA<1n*lyl9+gXcvAaLa9?;<p8i`X_~}ENiI>M^7Sg+@$C-!HtY4*BbDg@^p(8yW z-imld{GDFGPag>|<-{K$*r>n5;vqQybpH|;G+Pcl0~slg$Zn$nxlCS^?Z5Oa4)nv; zDwhwgR(>DRJl%4BfE+8z35^Lbx+xI2(`kP=k0#lBv~eo7J|T#pUxR&@LK4I|M#y<e zb(ASk8y<pIxu-9}Xm9UG$;{f{qqwGDkJL@53A;f+Qfs|pB@(=YH+uhWKZUjvSwf!m z%ZF1HHcvX&0$*_!Yk))cdp+l;{Lvj@1jT$Ryp2%M<-;z>$;utc;<6y4uC-Pe1+u~F z87L|+C7xRKPz6c4TfG_G5_yBWk>RWu!9Sm%8QX^i8oTj?!U=c=LPl&_PDF2;yJJm` z#Jt$W9Zt9t(1hPWV((_6t_qnoH&Yz5irgq&LDuGk(o10ZL%>mxo>*CCp|VZoz86x? zfO&#_b4}DPGcfc1mD)rG%dKTQyQfX{>9o&0_Jhsjrq`}bWJ6{w>Xv2`O?tF)Xv|<5 zx&rZK?fN@@-FJ^AWcN+(_xPPZr3R$?FY;GSuzoCG*k!@)RM3vnL|Ucv7b0C}!J?-s zz?M_H;pPfHe9D5pQ}x*><ow~5KQNjP2({<q_2Cs@{$!B>90ksG@IPz8sPG)B8AlB} zw0@tdGGJ1d6p=&ZJM+9*Z_VwTfmJ*?%u`^aU;$gT>gZXIo4tQsZkbJV_fWElplQ(D zr%G!=Bo!0z<3IZ4iG`-G)8lEuRM$mEzIyL58*Qx-XXPH=FyYrkP+9cbX1+A}G%DyB zsAp`OhIj_@MR`#-3>3>byGP%&_;4W$<d`gyH*!ma%o7^<bYTDLAd3hkW_A4OoIzTT zw(M3MF2t{D7#{7K6OC`s8{IP?P}JW;ElwOn5&$r}=ED*Prb-j4C_z5OuR1D6ozZoL z0$yL*bvTaYVJj(BHwc39j)h;@ZY<;{J1OFoejg$Pjb<IIkG)p{VK3ewb|DupM@Z~> zjg#6(liXUatkMM^e#Xv5CXv)OGq@;?CRV(XG<wGc0Ia+S;DJ>Z2ma1(vl09}S3J6E zHF9D*>{(Bk2NxBn8X<O!h|ohc<gIsFv91|(O8j=LgYM}1;u|EWf*~Bgq092OIUXl> zt>e(QlRJ8_Zq-WBCvx-HJe1_Auz;px>0=4Yp8(5D+8aVu*L)&c&@cRI+a}v-$6W?Z z$*RVwO5?iv@RkWe(B6?Hq)C@PNoF^1&O$GOXgg<($x-FaY_qm@N8x;rm8}n1h-eXZ z=Gqd(O4ow1PA8<)7c0}F!zb)YssC+#QDUw0v8~jIDSgl`QY6a3Q?gYz$6L_hRKd?N z%lb@50Y&h_J`&FZT}%B!GyF5htB?;aL6)x^A;yFpJOu;W+#7vmZ9+&>5TpsP%_yS9 zS;;x$>*B!^E)xKe22Glu1y7-Jge^ju2Jp=`-yn9%X6>yXZE<+<`Z@_sS6)kAR=iz{ z3c$JYI{eyyjwF8{VARE3xu)OoG8_Ky%)Ts+S_;>_{I^oKxI7SDVluZ<$W^2TBB9;u zu|Vgqu9(4Yl<-0O{mIIj>|;<#M(X>W#~b^T%7POCXk6lW&^hhcNBcV%eXySs_zWNz z+(=$}-9axu1FL+`K!7Kg&z=M=<hJA5p~;hvX5rJ)$^-pX%o?(R@-%5foMLkzwS9&( znHk`+8G1(_3X~RVbrsCLwSs_-<U#;S)&Bb&PVzkepBM)u1jNf9oS?veXt<YX0W<<E zEDRhH0umA;0wN+Z3I-Z73OWiRA{q`FIwlr2HZ~IKD_k5bTnsF1tUoahNN^u0Xn1I7 zcr0W@WUT+^^xO%KaX@H+q9H+G_x|q~2O&5R17__d?DTi~I~D+r6ukOx!H+)x;H%Gn zx!P!u;1Cb!^6!5Cha(1v6ab(Ac)<H5!UZc<JIVm97at4JDcXq@jSwe_;0sVjBSecR z!O@GrKx*(%U4H)lD+_>4+jnJ(wk6mKn-0T6#85&5srW<4Vn~rfz@aONV56%PaDYtW zDqVXH*}Z`ig~t8ZQ^%g(<_<cuVwKI<fM(H7gmR?@5g=N0D%!gyS}W&=w7$g1hF*Po zfq}+O7BH)bf0)jBE@u;#hzOyIu`5eMW9kp_!xx^krc)ZIRsoTsfe<4}vvCw|^~ z+Glt}s`GzsaP9+pP_bpPphD&)1Oj;DfDkA^T1A=^10h<PN(w50wk|a7sIb!7JZa{3 z7vMsrKMZ^6ky@6>Y^cw!8;xQ<l>aIq5k+B`Etl!{Z{BogUc&T*H+zP^aU8}&oM;4! zXE{nzR8wm~Fm%>VR~`ym`Ii;$0J7@fz47=tc;#zeOJ*#`5I$%jXX7+r-Nzi$kQx>} z8R?>0ZlSxEQCpC+FWWy~WM2^9lJN2OvVm$?q?am^30v~k&PRbvmDsyk0RX0YOQ1SY z@XJnFgBhdNjBW~=x~-|W#=EyxTuGu@d?>Xu=jHbt7>+7u4SKV$F|}O|e0~ll@yNn( zV2tgQU8T+lyl4Zo*;<{-4~svX1RXA0@;>{+Mof_`rVhptb@TCj=k|GXx&<$xFN%Qm zC%!ki8hXVe`yU?;YHS2NxD#vgWpK@QY_H0Hy8ThCHh);dCzB4g(i994lZbcP5=&{` z(u_J)5~BG7MLtlz0HX<`X_+IHOteU#zTN2iNzneo1%O|?@mTwf7(GJ9oD?^)2Oj8G zgYb_PfewY}5i!9thNr|G{3>l+K#@{uU+z5Pwx0#5cE&t6N{kutj!|zzGa~*UV}-Sw z`ABN0uPrbtulffPw6Rp3!B2zVpMoOONayM%{12?lp#r`Pu4Yp0uTrJUHuo&xha0S| zt)!ocwkp}cEHn!u?LV+6w`C{eFch%@lk(0pP5a)E@SC2Fb*?B}ro&F^-LgMkqP%}4 z$ku&FcBRgiSdX^UowD;8R*(;WVZ|rZ%+pe8=hzBz{nmfuy)5pLRt5DF-xfel^MLW{ zogFpye}0TGmz!>Jbh?}u{u?a-xI`$h%Ooec3EZn9+$9N^0Jw@w2jPXIt}~|nPF%f1 zGh6?_f|l#wq>y&nXNv5rdy-_70Bjkmvji5SxHDoub+_YN^_BjCC0bDpkClTZ_e9Q1 zzXyZTx=HH2&lE6GNr@D#r`oUa{s;8vF3mQ9jWFawAw}VMR2{(P|60L4n!%Q1QGTwW zU;J;u4lD>`jd*nKh--;P|DsRmbKc7&*L!K0R6O_(PRQo@zN}8C%L{Q+z9a!PK<zBD zaT7Je(UE!3P6OUOE$bgpzWg+IwVd-$o~YU=D}TsmR`77_{CcNK_g!miU&Z?$(4$Y5 z`Ertc25+ZFmPVDpGHL2LNscx)+oW*Y5Vp$vTl~Qh0s1<gd%=LRAiJF+0C$w}AX4}Q zX$g1GUQKrL-%9=Udt;&ivr2Pp+WFi06adE$CjWM4c<If^d$pne4p}xXgR9VEATsl| z(Ro@JidcD;F#G(9*>^{7TYYch-;Cl|Qz0>oYF{wv9r0fR5UBJAky5wM0C!XpyY2MW z-r0YHwaQ1b`AIXDYR;GWM^#UaOZ<?pA~^`S67|#nt^O7B5~W#vr_n6y9rv9QZzPM9 z%igtByp|8<95chM%>S0ZVHn=KyX7+D+-$ZTEESSP>c`%W)ut9b3-+(FlT`oc6tu|r zBUw)6{F6sTtUHT<79g@M0KN$X?GXuJOdQ?Svi<?(GfSQXRk8>aAJ)_4J5T?B%Fvx9 zpb0WRQQ4CBb6QSF{Rb4Xem;b2nEm`NV_se0ZAKn|%6SmNugYC9l+H2pyOsLitkw)$ zRTw7KT6-Xi>=Rx(0Q`#u*c;ld8hU%xx@Q;vzPUerr%yeoB+6BtEk!>7>lJVtm75r) z`nji^JmU2F;`7))3=mcH%d5{ut`+a6in+H70KoZj%53d0hdYd&2YXu1g|_fNu%Es% zrpgBLjTGivxn3%`1E8Hpj$8||D3;#Z`RJ{roPXPOopubTCi=?n<AtvncZFcQySk$! z#Zw!7r)5{BJi6|$E&subGGuN#p@+W5m)<raVW0w@)`&>l)-K<ebh#aHCGmv03;r9p z$9&zf7v59Wxkh`~{O%Jc0GW5pPh0@GbL8Htw_TdM?fnnt-=E$W5;s!Je#_8k`n@94 z>kWK3+$le@9XM~}_V541z^nhhND7FCqlA#6jD;tS6$WBK!x}BgiG?-xJdu-McN@n5 zl;W~Wl$7P9u5<UR_XA~ld5n2XgIU$;{!CJo)c_7WRWRi%(rWP>wchU*rS?21dtX;h z!4lZ0=3MlVv7`*`B-iNGYctS>mT9F{OR0xILC9jmGf*Z<F^WLN*2z?GWY&&-q<3fL zTB;QW92(pz^_-Mvl6so<w+4!#AgYb00pHC8QZ#8pwI<OXpAT5N38cL)1bhkw95Xxz z^)djYJbzRJ55(ESeT0qp5Cq8G_XnDoJUnHdyfhH|BX$)nwkBSS-W{f3D+SeVr@~wb zfb8Ql-fJROPXCa$2(cL_)hbL+s#A)S1^9|k`C^%Z=YO5Ag^p8m>?ESjGY$Z7_SCrc zd;U$zXUUACB<O*X?g{Er2t@V4M0)ZmI!p~{A7hLjwL~4Fz!CEbXUUh_2!NGYc7J`I zJU}cGal+=H6(fZqFD5S>rY5FBI-m|c=tl;X2p=KQF@MP(?atWN8VUd?<fD`aKGCaY zXOSMw(v&Im)zC%oq{(XW)YMs`H4rks9rQIKKj#N=hluySF6Dz4W5f)Lgw}cs{J8{c zPO)<S81m9uzQRlzq(x8|(v-eZ(4hpdhE>uHp4<_(V3Qz%bvu7Iz#YlXUzo8)iNgq@ zM3Z8YLcj`(6V~d(R7FTm-TJ-2Y$||aVEYqnK=_|rU&$R1T-Fo2e4TMF7BQB^24a!? zG1Po7wS2b_aY&=(rR$t=M5vv2e=m2vJbZ|aT5fv_R6o^k4Bqbhm@$e_VrT)<P#6eF zl(8VEta_&_do;D<v-{o`V}?}bhphM@@AqL3uT_&bo-r?48p^jD0t|;k31|^;4QogD z+LFj_pF4qB2QN3LP7k*Wscnd@Mzu6l>4f2-FhmCd=wL>8Mm0PXiH6^hGgMc4e{O3u zS9`fjNcW#{x!ae&_WPlVDbYj>g-K&YsC<Cxj3)Yizs#gP+odWnS^(Ivy}fppTdI{X z5bP=Gr=rBB1Vm#sFuHxE7!kitH!=>l%b3moH3{t9We^po4i}2{HtvZ<$L7&eMoX*5 zDv1u7lKRS~C74lO<6iOz|3M3!9gZ^9+Kn`Qojxz3M3WI6#DN$60dFi#X6K9S7hReW z?D6z6CND|t<Z!2GCT7ynvB*~#Y=M+ywqP?1Bj9TL1i9C;6#WMX0Js!0n=LBRCAsx= zVnIN(2q_L}d==1dugU1ioy42<7Zfb2#fVP2=sP?^Z#bv~N{r|lDaz<X4uZ>zaF-O} zzkmSVkC_~^s7zoB07x;Up+lfz6ZQ6vENcE)$H2z!e}2S2fWm+yjRmjkrHw^Q#^d&^ zZ2!gpfM7@PGu|;tkpjZt@ro5ONmDG#-~2BM05C2nKXnir421>{U`R0{4P4x={A)4+ zc*QdraWw$2r9$~iLuJ%kjLp~l7jm$9?7UN?ep%T`(^0Z8XKG1uX8r3bA@Ao&9jHWR zy=te;*l!{<r5Two2KaxQyuj`dC)&$CC^QTd?8^@7OHZ)#1PR{ng+aq0!^9$G;}Rif z=M=`qp`fH<<q&<XWcU{BE5U)lyWP;>*hlxcQdzzk1D&?apoU6KLVQ`iQVF(b(ciVV zcZVK}4Cc*T7nz~QDTl9ElHWtL@d;}7(IoZm%=TK$_R@sjw4B{^|M`O}b^AAE`!{I| zH}MNM;R`F<iTAAE`VTxJzcmiIhkr{hbqx+5R-+~_Uni5`SN|5=aEh~ZV0&5bz9{fM zhpBY3fEYb3bdt&S5MEO&sRTRE_4s|wt(F-68KXP84$M-vJ(H+Wm|Zso+k35sVF^y& zL-0Y@oawuAN+5b_AkH<iy~7N+P@1_!hHo^okDj?lwy*k6@$lo@u8o)R%3Apo{z~$< z8SJ)d`!WeWy~rXq5r6fSIwC&09!m`;bN+J3uVOa~JC53+BU@=X*G#3Ii(<MK<++K| z2i98+?hCE&2{l|8N3_#wu~UY4w13rNCzl<m)90&|B&gJ@)2f@(=bJNFs+Ilt$;4D= zLzS>h4V~Y`?li=efKF9cXEGs#B)Mh9B|QH2v?f&*pIJ0n6`!%0-bP$p481orj0s&$ zp|dlp4ogFsd~z-IqN=E%1tX~U$vO>FXuL{{+Ez^5BC~NPfNir*$4Jg&`cp{(Hk^?T zeK?=7dgPtFDueBEVHfwFk#Av%?bRwezITCymRJ%6`j)wqNjSIEH!F~Y#iF@`_OG(F zy7aVC<88WXI3?XW?a*oM@}GRX>^-wE0Hv`w3nyKSEEdiT!%zL}c80X!d_vo}>q-rK zl^2${K3r#SDq*X2T0Yj5y>3PZw0~jsg(7D@(E1IDDH68$LFNYG6dxaC5SZl(L~1zR zL8eJ(8Ow^X<zT3}#-n8)60xl%CHd6}7Z+)Zr#e?JyG|mp<=`|^JZP!DEurr*ce_bN z6e>Cy4jmHF2+BQz0bz6PZ9cwvm+LOecQdUj=|vzkMWmkn_?nq90M!OV%`9T+%!7M~ zRXFq}MYr@<M=g4<8_%02(d1Ah21YYw{!_CRC|OZ-R@&TvfT`Rl><llmE|MGJsnNK` zN#!W3n5!!4PppeL#p7?qq|;7*A8)9yJOlngMJ08xp^!C$a>A_SgWp{pxAoU;w|CMr zEUj$96iW002P6_%f9hp-vZ!>%=<_=RV##(BI?Tz~a*PVOcv4aQ4#RhrC_Lq;5^mvi zel7B!n{)z1RjCFI=j(w$!`e6W<kw>@jTR2b&a)xbwb8ZM@0`hH1Dw+O5K<3`zbEn5 z(?CXqOl_RU?Gtk7CxUniLzYleRFX;H*l=-X@Y!%RW(YKvg8PgYs^P#lfvOGi`(&J@ z_+_JQwmE-urdphno)$LvMCcaQ^6#|NxZy(#E!Fmnh#uC<YvtSc%Ub?Js(OSFZ?u+V zxOwDh(zjQ^Bm05F&~D^BK&&^ZdCcEz+w(Gps(mOYwE8E_hI7K@$W8~rO-C`u$0d?& zgai%4pF%dX>tF76GFxbK%KT(S=@Tz2&rc*T&YrA#A4}_9-<54YNzCtO-0h?)`YUT_ zB>LUTy7%2SQrJMetNU>NWqjEIO~Xa`n>drbr*q#Xx)=kC^u}huevaD>#ht4>Fmk85 z14l<<V1Mc5={&lHtx08m!1rWi!~P5iLG=~-a;0S@x}+3AljU8mVl@a{j_v!!(*K<J zfKWqH6tc4#@nCpc(4tat?vE8z-XdVKqIdUMi9ED6Xt~Z6S8#3F4lc7NsE1=OeFx4t z_VQa&+5JIwc|}QRt*66uRnUyfSD(8si`3UO<Iv<>&}0Xdf{C+jO^+tAw52T4SGVBT zFC^U>i8cd9Nbi(6!_icT8!kS!dw$@Zfz}pmZPPN@=gWkAh<+Hs3Luz5qHO)Rd!T=} z`>`sNz6ZN5m7ldex8)aXJlXmdf~krrDSh7K``v>tV1SMsDr}>uL1@^!?>~PWDP1_= zD~87fW7Cvv?ftpFsk~)$$(rq@I_lFKVUhW;px;zPr>N=fzS7n#;CfqC#hc74`V<7F z9RZHdd{xw5^G~@SnxFN&96RXCWMm{RULd*Tzd<E?6h2uHY^2^b^OXO6&~~?bdA{A* zweOkj^>)-Bwe;z|fj*~vj?X@e{k!W~*~*x81^hWrIU=%`0KESmNgR`;#%Jmxd^!D* zrsIkv1DE7N2E<}@5h3+uJ6I>z`@|^Z;<6ijXvBN{<?qK8nFcNyO%BzZb@7;&U{ed( zjL6%N*R{R`e0}n4mSzPmrw>kHr{4Wm#4i3SZIWtvz8dndt+>LSP$fi(tggm#;L*I( z*4%yu*FKL?CRm^lYj?k$`pvsIN~gz8O~(YzYvLMp`2L`Db_2CUSp%mbgkH9Yd*}zx zPxoEx6|8#QVXTfz78mX7S>4KBtgrx|DgC^tP1izkCYaJeAzC!0(W%x)o0WG4w@{8! zkD=eY&QK8)!3es94%YT7`Mjvn#=4%8y1*7vKD#X-g8Obv?m;E5)orKCYEJ-(Vevo$ zS&(mS#`ALK;9N&82YZgh4XYT{pvO8?v1{uyu9$<bQSNcbLtk6-qr1IyZNRMkOt5-V zes+%y7+~B0SKY7#&h0n~%%4T2d}a%cCPN8VuytAbdtwHg=}yh2glIUj+{z%$>sfnQ zC!6Ue>`w%Vh__m~XP-5;<CL0~wM4G8#*tXOG_Ge|Cl=~BGvB=Hm%u6$H$+&_)AaU~ zvYVL-Xo!)gZ`NNGFFdX|M?5Tk2J{r-XL?Vhh0=e`xP+cqW?N^jn+|<)CLLGTiP5!{ zNwLg2iqY7^wsTDUQ|#c`DJOyp$CpAmaqCZk|25vMNkTVVy-8d*{!by^*sUA>UxojF zYUCT{g89U9*q@V!pi)cg1P?+_qQ3e1Osx1+*X@4~jZ0s9Pux(UtI3o*Gkvij@LsPW zQdg2GH^w<ZuNI4NE4i#kEo(=kSyOLr7NKHV$54h|f_TO(0eQHh>$9GwPkrrLDhzMQ zweS!|X>-o8H?JnjLv_9;r`!1t?5_wpC04&Ci4aPLOZDJNcuR3`EPw1}c70sDdeG={ z)*e&kS(f&!&j^C$2MQ=1rfq_(nGNwvcIAO0by|%!Cmxpq>>OT@C}CN!w$Y9bL)~zL z1=iy0*s2RAr_iN!eJA+D)N;oPGL1%jhx0C#KrFokPPp*G3@lM^n3A=e5{QuUkv;3z zc<w)yO*kyfPMwvtYr`kkP-ZS<YzwLneKvuTF^Hy$&sYWc^lJ2>D6ZIZ)^+Og+aDD4 zrqcMw39^`{T+=~c>Avt;;|z|W<k*xj4G0`bLoFD|SvO%X*1!6)0pYv-y_}6Yn9!|c z+*wUbS%!lG*U~Q`2GPAvQIM|>rgYe^uEKm##iQ)d71Y)KK}m1CGg;k5EZaLLXI$My zeS9#qPDwk1!YZb?qNEw)Uix_4Ms!h%3?rmM<9ES1BkQ3z=a1JFWKJkkGk!G_$)GH# z?-|%?lWp<unv9-AsbsmyZM;7P^RYLpd?(<(P$`-4X&!#Hh2*JVT{DxgWbO!UqtL&u zY0LTU-WuEb``NpuwG|n4b!>G|z3UjMTAe_Pn=6Ed!Nszbyx!s4IFhw`GnYmvrIJ;) z5*ieVBIYgUcO%IG{WF1i2+As@vHZUIYA|Nl>SNXwo|z5lkE*eqPC90RnCFCLPF6(? zro(R%`o00UlQKEJyx9eiV%VC3Xic<e`@ieNHA)C%BLXZQct;*x3Py*}#$Qt_f7QMr zr=$&MP45%eVH}G6SxBX>M_=;Y(oeJmq0V3n8cs=*nQ(flmiu;Po||!gz-`_|MozQ4 zOI=ykSeFIap`wMzce{yn-(-#~=TK(jr)(6qrC%LyFcVvj)|F+=rq}zO+SeyFTk>=< zVR9Elb+{4p?Vt`h8}H8245BK;n1Xy~d2FSx3F<1PuanpZ?%Eqe!@l(YqONx|`H6VW zprH4fW_PFKohzNU&bE3-`0&@PpXviz4L0S{d)nrM9gkQ3VN7`1^IEaW^Ww;Z<9?|G zfi2kT1)P(9dVI_~`k+BXbtP=2HC}#Qn4b4hbieJfqfYTGIIDkuiovTh{lyr=T8Qj; zJQP{q)r$6ZD2e(NZ^u&hJ>R&|?h^86oH%RO50wWMz_@cqPOuXG!AEAW(_rFs<qwP4 zWBgf=pS{phWESD+^v8Ia05(_EZ<j??r-_p-QV;EvPx3z+82iEFVa*dIRM8@Wq?7F& z8}FITW-`zE+fB&cTDz>Cs+<nYxJf9_oYR#+-y1nLl8<E|Q(2F%ea46i`gZ8v8xgKn z26NL+M~4JQ#|g`e?4&%^l~v8$pBHN7EloV<fv^piF9dA&lE^XUV)Yh`x454^6t<?v z1zE~0eo~XA_5g2%1s@a}HVnjFU)OZu^kkw35<CN*gH_kT5AD15ts&os9aKZpaOC{T z=@yygYhuA~MZHeX7!uWS+S75Mc=%>jnZ(3(_Oqx>vtDyBvF27`#(-95X!HKv=X9HF z=kkwdW)*F+^|J#SO_~}9f<rI+%3!~Y2p#N?fjzN*cCkRD!b*k?Xsq7Re;hFI>#jne zW0RvD>4^{NG|~kIA5zV(QamTDk``W$f1j`BU!~+(5JvkXueZ%en2_Henwqn-NjI6U zP>XO6Ol*7PU3?!fSVVn!hZaoog&-L7UmhfwBpRy{1b}Yn;Qfav#0$|!$yu5MVW;J| z{EcL*SK+Tw!$YZwhNaNCQf2ZGU}B4@C3}4)cqOHlS4i#cqq)EJ6D)2bAD+Qn-O9JA z{`Uq*U6|Ydt1KOed<GMTM6ij(!P?O#+{N)ftCTCGMwuzx103f=7CS6tnQ1Mmj3XjR zc?WJgvctp-d44@E{Kxz*+OPb7^B%u(HzgTM=U}<;d$a)y{uT}FXhTDRU)qL*0lUF} zoL~q@G;}gHQe{UcD0X2HqiPItR?e8%Yz`G;XP*vC(QzyaN+sW%w}x>wYbU3Ef4Rgk zLSUDeN=c~)NvQ|=KZ!&HoD|09YoExfHDIS%iuUP{LO1hV;!enx7hEGRW{3F}4Ooxm zKW~GNY=6!t|D1QV)SaV%FPpS-ohKhNeeUHOQe-_w=I?6ZJV&)_XT2IaN40H7KU7~A z$axT3VCeQxCz<jPca5^FL_fq{=b8q$w@5Vq`8VA}IOA_~C9HFecH1P+D#eMrMpi`E zziMuZrj`#*{<d^fTJ@OV(~%Qak@HLR6Fpb3T7X0~LUb{*QJHA2R)Cb64YHB)OVU&W zCyk#56mED@A9M(HYGcy3-shS;^r2&*V^o6y%D4inW@=vm)u*x9zzyJ}sWI@uhcIG5 zVGBK>pw9_=ps(=*W~0RDtBbJxcj>PMLz)6Db?nck2YzBBcS!b5F_Xh{l!TIA6Os$Z z94AQ{MOnwTF1&WCTOn`alNvH#4Zt~PN9PEh;R~$xRZ)P^?Txig$qOZBRvDC#VQDN5 zO*T)E^GArLxbWa8QKRP$G<BwkaDeyE@nzFw)3_-iSE11m$vER6b#2TQHvOb@NU)7v zFpu4j_Pz(^Rse4_1}4x9lY-Vg^p$s!bh^7z@I;j&w+OxeTdfh5Q%u@RtS`Ql4)FaM zBJoJg&U;WFWE>74ZhKHsADklScJoHWc&R9S(!O{Xuy7D^hse-CAZTnhF=3LcwdLj> zF-GkgcHY5Gh38>e(NeRMjy(BD46$=t&JRx7hHk!riOyr9U<;fpJbDK9@fB3I*O6-; z`@KZl7wpW=CU`xG%hzZ_uoN(nV&Kuo2c^q$;(Q|0Oek1H(A|=Qf}<MSyl(J0ID%x% zLU?F5(5$cH<L?5Dd3(TGJsQoSF-v3~Z!^-diP1|d(h+&E=;svUTI0STYh%OLP<aNw zNYkd+gu17BFF)L-4FlUuPr=a5txofU-RibkOs4l5FC`_}I6<DeNSHnFLQE{Y|Coj& z)L2$!qJk4$QTtVEs0)Tq;P5nMu|900WG*CAFL~U4I%7@Gf}m5~B6$-}h0-T4r0vwm zvYwFxDLm>RiuGN1du+c@>Z5Q63^q+QBN0tGncOELbX9C@Hr#oWu)5D%Rt;}Ak-ots zYo~-p7p24mqsJgb7*&XI1>1y1&tMaPZH=sq9-Q`@bLt3*3?v7;2=%&nAZuRe<=MfU zk*Aqr4UY&AwM(-bybE>r#MS7cvv)??L>ZDRAjOwhwI3g>)|RqjyB@Wl2z?~dz{5=5 zA$6U9QPKBR6z+D3k+;$#9$#Y4u#FN){RqMR^n&_vZJ2(n<UDk4bEfTlYq&+M8buRH zG)Cwh(hJ?({`NtnUE(%i*otS=-l`|`H+#=;Et<w_olQXnePAW`bN4yEhV$a=nWj-9 zvqdrk0h1F64c8#@9rv&zTi*8KlxB@415z~<dN3aoJ40NmJuS5HBf&OJ@&w2GXW$`W zu#54BFB`0xn_^t*E1<<7_W_JhfzR!8y;IfDD;(0_m2_uLquv@U<4?wJ5fntNJlNna zB2eongH=u^$ZTJt&JmL**cRuvz+@buFoXGIT8Kf#pB0V%YBzgncQSG1lb~|2H9!kX zwqQ1qTAVYi(7<ha<5yQEvPxil#do(g%)L10rAg`{5EmDbi_nd06L#U1oB;;C@Tw%W zH{D!E8Cb;*W}SUiGa|tmRj`ul>852C94*Bs+l~7^Y~F$_&-3*o!9hR6tD2qxSSvT5 zC19?Nrgm7QebRpXON(!{2cce?$UN<WH`!koNDRJv94^t#7-HnWSa<gWOHHel=x~ zw%gmc8KZ14D+;<_LPE}1TjZya9G%Hq#WWJU?bCiOa*QYY*%vakza9P@&cZQoyp7k7 zzVJS+Bk+4hcsKs4Uc)0M_Z;W<JbUv)5*~;ekqQegLc)<((N;cAix>PWhGT6M?nJrU z4YRKpF=K-NZk=RnWj0F2&R><>-7>r|z(D-b^!|?6zRD)8=ZJ>AccF^;t+xWI1lK?9 z%XStFx4KraY=WrL6EJEBe|4}kz-u+%1grMRf181kP`DalQ1?sF*WU!0y%qM_$9`e- zO}ZivLe5SoTm03q@qf7G9<jGHJ_503svXu2ZuQc@MnA<aUdU}o--d3VYqsn@P=A`s zgng|D=lAPu-B+Mpocub6v$*d%bo(ND{Z-tN#+;{K&MH3nmXL&=QC^Lth`8$%Tak&9 zHL^(YK9_(*VbRnjenzh9l(l<=qB6M26Wla?iN%60dI~NY?Fa(b{wiRmVR5Q_9MG57 zNn`WU=AH;_Be&jc;yZrbB2&fR(CV#@FgeBV`g6n<LNEJ5UbxN`ZbK40!=`$Q&87<e zN0L`W#Mb#XDwsIfx#~tW*FbxuaJHL7cXnrze%g}6uXyFR@`Fo_zVv<j(X|@wGr(^C zW-hv``abMXMlnH*&^g(g;xnN~)^4Y{;7H`T_M-LI3A-#6G8KO$PIHf_x(z!~Ur}cE z>T8(YHquxOwJ(vH@gC3xyd~^zT;#F&bMg<2(~~ZU;tp{;+#(l_!sswk*DB(3oHxy# zzd;UZzTZmn=VU|^T?NrT4@+$_SG&!pM=6tP!q8qP2=;u{dD6slhooRF!onzyXBzCb z{q>3diFEY{2WiP+717ZF6BEJOYc1~{C#kSZ6e3L$$YnCU466z#o@)`7eh??}%!NW= z^UFcbo-X;0O9U}bvZV&a<9DD>u}f+2U2R~}b1Ct(quXPJMxUihgBb?JKq)?cc$mY~ zAUb=V!%kekr2Y6YD;#RndllsrvZ4d>mDbm+v(Io!Xe_nuMB>wCLY3y@Q7tOnbkusJ z%)~Wl0kG@nA~Y^09=msbSl{@dc7>mEBaX<6%!5Bp&uCieh*~zUze#aL%#~z}RDsDD zd>Twd>D#41712H+If2g^WK8+kzEQ7>J+2>!6@Y~l3Ay{G7sBM!B|YR*fV4sn5z)E^ zMWbWx0DMXjS<+6)>0!H-$j4YEeF!IShP0d@*{CA+&kaZhG$W!P(aR@4o$>V@%F754 zDg5f+mLShGEzaw9iFlABbc0J$i!%CN6+z`nLD094F<g&e&F8C~l_jP$ht=b;>w>F- z^$t_c=N%qu;7Ps=YnP>Wn_<8j<Cro>3>szHBH@$=dY!2867)71WJ<61Ua<c$EZwK1 z#r)#14y%ZviZ8<z8#To7-FfbNjmMbam+MW<;ngCR${8oC9<!^zti5`AAKyPn`H}1< zBqMU{zy(k)vs)#D8`8Q8TgCXvZmz2H4ec$C__(N5EnS>wC>C<eL|)CZXp8vk4{WCI zs7h4ejYCS$>CYFCQ}b$4u^j`$7bwTaX%*eV8f4R?{T0@3A}}9hMKe2fHP<;<)|I8c z7&qb(x%?iOtn+`U%M_@(n1Mg=3KkzGw5j<*A^Jpw%_=P|LPgG01EWmwONc1R#Y%zj zH7A?7dhsu`juhdzgKwPU3-L<r!VQS@O2>23R2)$Cua0N+N&1ncSl0368lySWWeu6= zilyp>3^pb6*%j3#XUUfqYmL({`Fy3RpgQ51N%|9iiWA2OGtrGL)XACV6|fO?Nj(E{ zeGU^slWe~TZjoGIo<x2TxJf!%^2N4Dxp27!yKtPN9a(HE?(-F17hV!g-cQ~|9z5<n zid0I=c%kc-vYdYdudW%uUlf8rDTILj^WEW}#Wgwr{+LkN$T6GLC#L!YO}Jxx?UYr? z@b8T!A#jjz9bGG;I&I+T!!y9^mCmCdm$3JD5wpjW5ts5N{C)VQyMksOxG>#zSD<(X zSTn;BScJUO`Coe^0pxAI58_8up1JY$x7~z#@XTzD2D8i$DZ_4CbE5_mHYXyfzsxg> zEm1ums7EUzYdjB$NgR21^jwaIZDvNQr{Y-}L6-+xFkV^8)=f(=1n@$?6&LC%&xh@2 z*zU)q-}@e*rZL@8krI=d9@o|xG0@ZO+Ip=eeCdDf7k4-VbKml7dxmoR4W>s*d}W+a zF&wvAB|3K<{KMoUU5*zUlox!*!G%J^j3o(AHt9lJ%#I#X#oQseor3?Fzd^U~sHKy~ zm*{hzC>GQ2i6yET<B}#5IA*u<k}SWMiOz|UI{iif-eHQGEU{kn9BPRVsG)(DvTb@4 z5wPoMK8B_-EYaVj_ONn{$auc!5%gx4TYzMcT?s%J!nab@MNXu;CKFDd?$i%EdtmcY z?V7t}XlD3yf<EN<naMlo*CcDlMNOmJ38wsnalnLzG{`ZoM`jP4P1a0~Feb<5@xcm! z!trL5h{?Erf(@aF{a%orEUW~_=$APKFRez+UXKe2gbbv>pe^Qht8e-bH>ws}_vm7N zoj?>@CLe9dZv+`~Oi?E>!sB9!alnDdJ-Qj(eu#RziEN3zfx((Ey74}OW=ks5Njqh? zTNxWuvH;t7ofy)GppS;SJiZs*n}S=eZ6+Tua2%ZJ<VuV%@?*ieX!1tz_|c4)VVLU{ zBu_Nvm15kcfkK9)BIW13h7ujH&CoKBum`;kc!)-OUpl@LGwhX!Cg;EsBQ_?P!*S`J zS1Ok}hJMX2p>d1>>6Y_IN<J-WO~x}sH~x8uE|0uAk2Zt)1Sk5ZswfD*!;AMp?N-AV zT54Mfp{bR+9HkcLAqzItJJ%n-BT|{R8TA+GxKXkgFMv2E%>ILa&5-bismNT7*j(tW z)<g&kmRGP-tMpSmNAV(Twm&AweKl?S)c`*(`;^J3B{zCTmCqP@peheElt)bZaBg^C z;kb9?b&xmZry)z|Bws>$T9|C~ZGD()+FJ@J6F-b){ZqJKzqrlwM|$DOe-{nk2%)v7 zTjKg`+H)cM0C1e*ujp|TGCBn%C}!SR38Spm@InyGiTDapB1C5>+v>og^=tMULU<`% z`1IQo*0VxI#s~ZmX0k(yJefg+Li9-muwZbSis0fY7ciaym6kAzRw$oU++%Ac+V`-p zYOvrkEwy3j{UUnttJbi+Yv#m=`)r{z9a%aX+{Q#fB@0OG9iS|)971jMB{7d8N>~$A zyo8PqQJ(1Y7~T^?ihFOpg0-h|@dxp}dr9)picfTJqEY*^LIsP$DOYH{>)6=d>&Z_n z2u~UmDUKEvrx*oBA5I>E{7UzH7cHl#{OW#BREseMi`?jdP4MI`64hIO>h6V%0!E%B zq+tADRE4U|pl#4kwqdH4GLedqBUWLg`7u(gPWZVCYC&hvloW@KaW+ys;GDG40tXXv zxW9nQV=76*b{o+soNHuG=K46A+Fd=Wm`mEaCaCaP<8~%kM@JO021@{a=GEm}ALgJk zQX|I)*%~-MUj`$gUntq=13PRt6A0<k>rimtCtiyYk7#UBb#S~JQD7uR#ik23MatC8 z`oUQwSaR;s6jw%#ZW@;?lOJP)b1w4H95VbwOl+SG%^nIpO0Kil3U$ZwrySFd0ag&Q z_<%#>$DoOR%xyt?D0cF37#FlaB<Kbs&a4>&EpTY;bVWoW>G)K0M+d)2;wBM9%L$s` z?InBzZ45Idmd`6HZ2N^SUb><Bm5O(|bi}8R!MxLWwGZ-_;g9*vq>^T@w-LOtL9p6i znc&!bKp;jWWO7kX)-mBBT1Fghf1hdrD5&yFW9VR337nW!2x&1`sSzJ%+{AlfZ*e3z zA+!k$Lcf7J(}eUa03=>bi+A@^u4$W7U@zIMWg&6f@P6=7RC(FK?rjn6n<tBImW>4~ zfC!55W(~W}_qfhjIz4~KwG3g~EDtYOH^pFv6tW0}7QUK~Pv;56Mb)DpS<6HCojZ*y z#y7X>5D2N_S3~#L{vLqp#EIWIZ9ps3Mz`vj<L*AFY2%8AJZu<cc^dx<Rg6w9tr}f> zyhwd6TdA&tcuZ<Po;iQS1Qo4+o&wgn2>IdH5x)>qGd+P@YQ(5w0%(7^ic3aoCYlz5 z6w=AWzK-AX_5{)jCT{qLNy;RbQ&s;My;bPrdGpD`)fhZ^*ar(94`=ljPAbF+Yg!?t zC_%5x<Jqr%dz|EKz=45uJ%pNQXg+9h+nF!Pf3~+y9;UXX=c{Bj1Rbr&_BwyO&}R(1 zzJu!{?a7NYvQs#Fhu$m`&Pk)ExbK4Kvg?x=C_vapVd>W+7Ae@)CKOOsC+VUJ&%hVa z`mj1fs0z?vM#Dt+wXnxRhxq94^vO<}4IRSx$aVamrpJy@Eq#ODj{CVlo7v-?cQRrf zL<QCa#(PwX0%{gk)E>R#4C1J(Y=yF6xvyVYqi+xBhzx>zq8<Q<4&HlZk+%`#w<3iZ z%1A_r(o6iLM+Wt<WpGj;Te!eM*6jpZmlS#FmB**YzSkM!;k8#OT4@1J#soxTLzkmL zTikD{gWQaxhr-|Jo2%sHzu$wBf;eb>dJusrAgivZB2^O&JXM;rfqR25oDu7ifiAf{ zHbFMNF38&28KNE1c;!v-MOYU98Sn+!c&!8-nZQ7cp_Sn420w^ots}kb^Pe54Lt5&F zFCM3-<>eP7TdjYsm!bFoX>I%T0Xx}KPF$peKv8j$XIgs6RXi+SQh0jmHLF-X+5k#c zpPK{ys)gdFD+3-&`)B<dPV?6+tXI8fqa(P$5|VJ)5{=_pldyWpD`8x?h*^w+v1P2{ zJFaKIJM{D7Abg^R*)U4CA&sc^FIT7Um{43Zoc$K79XeSyGmvm^(hLq1c0Heg;%oFA ziL8`T%(o-V>%6ikq$cxx$B2GN>PUW0S1FKC+p1rx186Q(n@GI!2d@pYk0yxgk=G5x znuJZtuC2aS`Wr}?#FY>fWpU16^Wi27Mzg*S9@p=5fm}Qu_|SU$zQ8zAZh*_dSdD<9 z?Ic!+#nKWLHpExoSqtE&S}XcR=@_#FzsY)We|9d!Uu+rCm%DA4oJ(EaW&?vywba;s z+(HeKu64A0O##WmuScr;E_ahJ!<Y*9QSc#2b0w16yFleC_~%G?C#S4WmfUd*W!5Sh zakhhX^4ssC8-w`G{vrWA4{=pjo;TdbM;!~$zhDASI4j9;OQ*~<r63m-Ho8hWeQ)Oj zJunL1m;Ja5wK>S!b<htiEc^ZC!LaHXFy`h%Jm72!NJ9*tXAGyMV5l-_Jh_%WluQFj z7;SS-<euVbW+!UKwcP3nod__{Ka8cmPic<bQE+G!dDWq)HGIBi?KF;Kv656UOFteC z2ck$x&!TZ9!anqT8t>$jz;D@RBZPB&!zB{^4NkILur?O*#1D$5n~3GYw~L4kK*)ZO zbpPnBxsQw(OS_P1aeZHJ|Dg&C(04#1X)2YDtK$6P*k#eeE2!`(gZK^~g$W7Y=okww zD>F}Rlq`>p$HMh@l;a>|Qtk15P_u(U6UPju1N_V@RivMSiGVjT=|h=<t1>Ep=~R%G z%V39#Ue#7%v3FzOwTrj}Fn1pF@dUV_sHtN@CAtOek!CrrV-VY3!HwlalpioD^*00t zrn6|D-3vYg?e|&Pl<3Q>$rOrbOzsKEgR_=FC7kwX=%|=)@C<CH_8lNqDP?D=)!uNf zq<pxz76Gr9S?^Cg6`NsXAFHBi56hIBigk)mYWg;h{A(VhumEUI_JTNgSi;-)3`qSk zZ;?&>&J^2^o^~Zy?Udf5Ad&LDCk@UAI09W<kGMNf=Ipjh+4oS5!c6ii_7!6mkAGsC zT+6_qwnX%2(o)q{)S~>l^d^VH#&RNJ7~LR*20_cx;|`Y@LM{5PK!cQ@yuQd0J?$dO zLt7<_v#U<vQGs;Cpas@S0a*|?I#E)Dt<Y|_+?z-=9}>B2SU*-}=j(H!9{Ir5P2ORC zI4$%d@JAp>;X?_eZ%(&)eb%3W>MV{4ZUko7WCX?`GsJMX9#9a6Pv#dYc&$dX04Z*i zq6-%|r9IGieObjxq9HrKGoSO#mwZSI^wm1bo_tnFgnkXeB8Sf~s!|=n(2o?RsHIc? zi>|i-YpdznMt2~%1$Ql8w8h<BLV@C5thg12;BG~WQ>;*&7Aq1Q3PlSPDPAZAic7Gb zJkR@m|J!q}|0G;{n0wY<ne0rmXJ)N+FFCxBw_aTe*C;_@Qa}-db}Ad3cpd8)d>w8o zl~Dx9exTC^K={0RTNm1illha0$mhSu3E8s<iVYHpY_Xah%(<FJ2l)!FjP(x1ypmhv z#l%Ao)W4)t4_vKJfp=<|^`PXYK1d25-0u6k4>fNuvQh$sFNdwIY8uB&t}OZJ@^U19 zz9iD&U&jiIu*jc|k15{tbZsbF2K@nEpenW}mah~OnfbsbS_N9#Vk;6+*k2cOP@m0{ zkvOAzv>1JdgDw3P<WI0MT+<Tto_2DsDA{3^6XCK*;&NevL<gX+IF7bBKU!XRmKy@q z(D$EbD5)AGi|0K401)QSo`Y0;HSa?hdDUPRoeeB)VgBP$H~l64<4L8D5Lk>M#^WrS z#u3j&V>d};ziUD1(5e)FH7JbuM9Ah*TMLB|YFYNO|H6fgq%RRqZIwYDDdLe6zL0#2 z8o%UEHNYih+TcvB8EadvGsZxeW=ekwFiB}p%mM`2$z7?SgJ>nUk^#6J_uFsS?QUE| z>#;i^jj!luf#bAhR#ukYibjN}?{Y+R0uBLCZv;Lqhf>p-;3h|&*Aw0;YjjYc6I$B1 zol5uXI4v?5#Ox51!M?{y?O8}&f;N7ZYV7h^*J@A}Q|D-aJ$nz65U75_E~$VH2E^x4 zNX*-F;~IJGscbvZYN8s#_K8RQuJ(9UfB4+@7e~aNep!{l$oH3(nXU0_5xOB0G98l2 z5btm3ka6fkr8Oj0dl#5F4i0a!-LZ{6=zD*j!G<p&!@2UApbu3ee4bAMn84tR0%}dp zW5@zXN&t|p7Z*N3J`)JEhsHwAFKBnZ#HTKdWj8j14DW}NL*`WtbID1dLocyVe|>gm z?Ct?i%UKvn39!36^gTySj+TDph&#^a@8w?XZwM=iA+eM-iNu<6Q<0So`23Pj<GQcl zv3eYNux%76Ahhm*uhQHJLP59gj<zKbNtD$AH8El`HP$dho5_0TLf>G`Pb+Igl#vWd zuA4Ccvt}A7i7$t&th%64T{MhIgagb=WH{~R(VpJ!aS-}O(T;hB@u~pFJur~1hoAm3 znN*qXVA^X(MS5KxkYAm2w_5&k9VnOM?N2l4A!DE#E<29y3`e1OH#L?h1`nZttMH33 zg;6wmy-GDEghtfJe`Tb0%!kh!U@39{;SRA*dN!s`wQzZK&)6nHZmR~3haKk>4LLNM z3A9-?=0q90e1&ij*g;XGPX-^qA+n|oE84^hFL~F1Bg54a1xtM8k-L`CO9d29IYjJ| zv-$-XVrh$&_6G=)k%4Bn-NAc_Vl+z=PT7rK`OvBFK8c4G^Ff~{)S%>H3%Cw&P6#A{ zawPVL9$~ODK7U6INlu-XOM#fMzqI7CJl*0T*2z)sbQH!x4N}mWXqeGrln}`Hm`13n z$2_bzh^O}A5%=>~5}zs3c4Ku0Smg;mmyjt;Sh2(tVy#<7l4`60T&|Jy-cGosId7kt zX@-PuW}#|l-o?nlXN1x=it=P$_qJhVs-G;8P=4AN$M`{OKY?l;V^qk34myhkgI;X_ z>#3sAWTmlFg^yIcMH1z*3DcBwuzvDAmI~v#`vM#kW2IrbpPK@px~2$@HeI~Cb!V)A z4rsCVC&*7bF3YEatRHiTz$CJj4Vjtb&!TW7`W)gY$+Q?m4qp5cHV`0kn6g7vJKuq5 zKOG6}>e-aRq|~92TgC#qA5zaj98ZSFa#Q)1-6kD6N?t_GAXf1P{{T=WTuLkxq(N|E z2L(POPG(_<kLzw^(T3OC)U}huNcWCoH5U`W@0&HGw1w(a_MyblG0G$o2}Nmya|{fS z%VS6zy&$e*s^-GAY=<x5MNOQ>1;`EJdB<g4N4LGRVmJ)z^n9N<8{R-#(Z%?(RfDHQ zF&2Q04^ae6bo~Lgtq0I+hX~4`qd$Cv6ilsGBZ{Q`Jqc9iD(|91ATKDc)fg#sQK;tj zDfHtK)r4a+;&N@CJ}%)wZ6o`(_oThHBrSKIN@x2J1eav|2wkC}I^?(BA$Xbhwk4J= zM}-p1Vc*#(5(g=d5|rGDhs8cQk6G-KeOj+V6N!S;P&z=?<T~#A47jHk`2)Pc$`f}$ zjCU3b;agVJC^2vyd1)f;W<u!Y+ZDGPQZ54GoA|a)OK6y8+5F*sg=I1Z=tO)u!BR=? z{U)JLQNZeLdJ*!gbd+fQ*~ANw@6=vcSe%i)_Bk4rHDhOJX&jcZS_LJKWn)c<3b1z= zOLO9MG0gm6pxGP{h5z-26HQixL(+$tfe&Tg^rA3^a9T6zp9M=PZbwp0)m({p?$+V` zRG`Ab1`J|F3FNB%i#mbg*#yOs8+CFcS_!@{YFzF3OU&dm6bgqLoCtDP8{@jyaDplr zH~g_Vg9JwaBLr90xwR7mEW)=8axJDJ9q=%YbIxGU@#hHmI5ac7<4ErQnCv_;W7=&I zU$X=6%YeQ7TLQL-uX~h8t_XTgsjz5tzrwuFde#HGn|$k7;J3LRyCLcGkDtLGeEHBL z6r$w$aFVka20#Un586*^AmYlHiUhh(&L!mPSvM4Th(wK*?_$j!VJ?BCjZ~&RQYm_8 za27v&Uiuil63YY6bpsVvXZ`N1$bzlIA=z>Bq`PRUd1V|s=my=#E&7<!#-z1(5Mna? zAC=kn;bvTdQz0H)Onpuh_!*AF6Ai`TgshE5QUkKO#Y?;E^`dn!s>e^CLa?k8go#;& zIlF#<Y&SuA8#2thWk;ZQXrhShBn(y?$a-T9O9zTXSl`Bz5{40W%-{AKQ3aRzD8%HM zIkZ`;80%c!BDr9in)3`fLF(wnxf-^$hjoZ7#0RpAwYzE#C6#AZS|e!$N3p$Jn?Nhx zOIIhC-+7%u;ZaBP;(2<_;N!%t3BFWfX0cV;q;uHSJOS&<Jp}XXM9Lny!dJabc`uQ3 z#WPr66VzCNY=$LKiO!wQaEID4gEpNtc61X}^Q(OPT#+8t3ql&O5;~}Xg5JvTjqgtn zzx$7&tBmPWPz~#WcYMAtrEAw$1ivsmp59^KQ`21y+{d$-$LCcMP<yw=iqgzAg{Q%1 z!#BOk07Lp9w7KV(nNP(vck8k7@YN2Wau*~T=TP+#v7fvQS}!4UF$!bQ#K)pmlXbU7 zdE2^t5J^=`8|%R217qNC{Mxnt8AvsYVQ{&Lq6TrepxbXgy{F7BgA0S%LW{EkWK>>o z<j60jsQmt6|Ka@&aE1+(eEK?|_;`o*TP|rYYXd_WW?J}rBDgHi-2mp=FV!5)!|6*{ zo{LI7JR05oTTl?OJ6hv=io@ktW>^G&gnxY4J2`$+eU5i=a*_g(8Qm}=2r0L+Me$Wa zqTRD(-N|{<^oIB_wJ!f?t|&Ctp^rSy8CUa^Nxi>cU?R7oWuU0qAE+(U_!Pv5)(OuD z&(9&u)4dj~JtId9T!W$MPp~j_Rj1F#>x-9(Rha54a9crd2pr<sHnK*N*CXmPKrXB< zji}IX@6GezI&CWNNEnOn?wjnvzBI`;(3v+~b@;Kv>B47@R(jCOc+s-iz1aGip|l$H z7vt8JJ0(nMt+5z<0hCRsk5w>c`7V-;>*&%z=$xGq2;MfcP|%0y14!7@_8D;0i`cpG zPyKNj3`tV$usW&mlv&krG|flu`mwIo*kumj;)aQ^94fX`f{sTjWS;?JXlg$?c09Xf zmR5eSK%P3M{r+$mJC9QtC<jBqQltLs{W{iq-#iLBSDWI!I$n1Sod3cHJ=Ij7Z0je+ zEm#B1dLb4Ir35B*919}kBE&DtA~O0NoieMuE_(9AFGf6A$?6G_Azye9X~FXSDT3g6 zq})5@X@`*9V6SyPrO7GTr)V+{Gq6nMUTOOW09?}X3zK%5kPeM}E*RHBMyl*n0Aczy z!Td2;{tp1=^g$VupL!T7QY5jEOZfTrCi5P3j$F1X(<GK<+|@HEy69TQ(<oE`k%P(i z2Jn|7u05VX%>>8`W%eyHFkjNZg<|xi`N%hYVQXxi*P%P4l%5#pRMKUxFF+L@3~fXb z-SiL3NYlc<RC@nXKqB3J{(m1Rstf=YGobp9z)!c;+lpm@Syk3N)s`hUBu6Dm7D6Ch zRbW~5L!L|Ur)8HR03f{st04E8ahY=!&?B5P^wt54Dj4b$*wSLluI72VrU1*X3_xN0 zOdYuT101!k-M8HOb_lTnz$|+ps!IoOuM#<$zk`Y}Sph(J3C^0QzI68d+GMpgSk7Be z09S~+t!ObrQYMaMqytoc%mW7mWV=rS>%W{gVVp9(LEfDwkYSxxn9HwldVDXBf?L;q z_xu46+W=_%@sVxTGI!RfZ4<x@bDRADfcZkdw=BE-&)>IhF&ThQ=JwV9L6$AA#Q{JE zWAeX<%ljV($eAo}{r{eYY$BLw0MJt(y8conjf|vzGM#(*-xDpbA7H?k*028}E~T~z zq$<hBf2m5Dj|9*fI&1%{YDqc(29U|8{})-dT^0j?QK`>=sY*Yn22cgJ{#G@a00Y3y zzyDITEUcCa5NQPbrONrdS_ViV{<~M%msJ3Yi~9S&dSx+F3}EH0{iSMAiZc~pne+Nf z)r)UGk@0v>C;sYHwkHxIbNgGBRzDm78P)!!YFWGkxkYN%{g*12B@sA~{cYuMRlnW? zfPu33U%k>UEdzj6{J&H!-dDo_l+S+vq5qy~H?%1OfVNlvi?}o=!~%fw?EYW64zw%* zQ2O_zzdGR`1_MwP>HkvY`q=^o(7N#br7Amb9snTQXnCq-d71*bF3h>AxY)=y{kvUN zHumxz3W%Yrb=h%IngIa6lZ;Y(fdZ3Zh*rG~u4h3GQrzpA*Q%-EAcohN420K_G^+sc z%EReJ84L_y%QB<^3$Hm<0Dxt``-2>2DimM_2nl%5nq&ZgHFC9ALC9T(gi4mRf<#mS z>8<zaEYPt9QxWnF1SY~^ZGi&-_)xqxdQ+B!5UUK3d69XEgqVefm(<W+Ly^&SSPaA= z$kzifRfO-$U*9Sef5Q@(#aTuQ0i@B7uNHz^(zk+d##GyRU`R-MHZ<=Ld2Oy9*0{qS z-XRg-#rDD)@{8qmdHV;rJdIwG`3L0m+3#KsuDA_txjLe@{09M01SXg6kz|%`t;_e* zS~CA)qNelTyVnBi){a_8BmYGJ4Gl`~%Rj(<k7oCcI_y6fO8JY{FRV>S|Iy_=%>O_@ zigwGQZIik1AHdo9f5ZSM>k;l2m~Echaohh$0R(R>1t2Iy%ORuxivR@7semd|oXgev z|ABz{X-o!~%j<tG#Q#3jWdQ(-Xsq~u>&Qz~mI?z2jlKFW0-#@hlVKWtVfh!tX!4@P zNVw-O1fc(e<jcBzbNjd0-|hdm|D}-zVg^DaXYYU5TmMG{1Q0UtBRx-L7-cQp|FsJL z<LwH0D49K_mzAiL>HLm55{#NE<uL+pr)3oLc3N@gQI?5=kCyRG2}FnLT79I!Ss@%z zW~9N*e<DJGnU9i8Wsh<N_9P6e!Oa(ww&bP(yZ;<nH(!qpYT^@wCB0W>O&$G!5N)Ty zNt;20dJG>V4`~WTuxh+{@?tdopTZ#@i!#L@ftvFDZJSNl2LoJpq4<qtaN=O#9%`q7 z%HuUvybl}6C+0UYN0r^F;(JGB`2SS)A;_9oJSjF(tVWLmi8ez2K|<Xb9<Qm;vL17i zT+Lt@zSCV(p~1?>hSmGO`=^YOJP(7v=|q-0#qO+bC?(qd@2F<nNd9dP8D9lsbbiH0 z8($+4L=E$50b_Khija$2THwCKKsk>({u&0KA@8ROgYTdhzoLIbPh6>0Am+U{`+q4y zuCYC|%0*Gro*I!4iW2kDE7LfL@=gRd;n49dVeFDPN-KbD2C0(Z<hx*yE5*G003GBT z1p6A*kpSX{>OqgBd0l5LCJ=!KD#ykW7@iWQO))k|mogrUu~h{4+;i;BpFQaO&u5JG zk7x0JeTxAI@<V3ilaYn${KxYDk8?2ux!RO22gyK5(EfYCMoG~?NjaH5zfk|2$*EW6 z_^cu|91p%ph{wxmte44BR`sl`s`KhI8qhx&-R@;`&BC34xA&OZ0yY?ZPL)#Q;aOIv z=va<1BlZU%8Pj0sZV;Na?hoLL799-Vg?J7dK;jG?k+B~!?3*ZtDK$57yOI7vvosB> z5wSM;hM@@>dJHUh4)PJav72bg^0ATNWev~%0DJ~3wM=R9**kWpXs`m~B=_ezR6;yV z{s*p>oFCEW{llM-Qh_W#)YUS%k)3{4Uas~}=bu${*kmCs91ea`$IQA&5!1H0`u@FS zLzn2<5PD?YS<q>%!|~sG;FTtS!!n-n)vsI|s}>yd`za@yhGn$+ke`A{(e0t{&F^*1 zP)+xv>O-pP!s=e-{ww#N@+ba(s+KnuT{jgu=fD1KoUL|Rt9DG$szRPoA&mD=&8f`h z<-ctnN&hw`oBmHdn_>xhs^a-D4}Ys>;Dsjt*v4Pwd6Ho__d<`#T*B^&i&4UlM$N$U z<Zf#6G3&gmz2G1rw=B_Xmq&FpLZN&!Vq4Ub^1WUo(BgNT*x~=5Ly24zHVHelL>5{i zM<WunrqWWyqWY{{^;!F~^2!NONi*py#P5|jx-SQ=TMi2J0|a$pBObTc)-eJ2@@Y)c zxT2CQr(qZ;9y9I^MABeiP?}7{5vjxl`Da3@6S=T?s9nj`66do(d<E#)Aqgvn1D~zN zl%#dp=x+oxPI*Ox0HjhJ@TzPQMj`NMhF#-2UZjMsDa0S!?=mih@5%54&6_h+Ov*_a zYx^l&eq<;m`v#rFz;FZQ)>!`S2kq21SE!iRafoZ+?s)x<n|PJ*>9tIs<iN@Bts8RG zb3%~A{U7HSBuUnPMn33&U0;w4+Q$ryz0)%PZ_gLx_&>oyFYOoo67pfIlQK^-zvuGl zLxl9tr`~J7Csz^HrbQjSZJ}AA%l7xL)Nd)9oG(4F)J|&hgahr;=5Lx5Zx8+e)nf$8 zrA3#NO|B=>XKheKBUn&^Ad1MQ{8<@t27VG|ua0`mw?uekvCL((Dw~NQxZ<<En{4k) zfbTsVgoeo>t&E(guU&c9h!UpoDvuH~2<X@NJmzZYzwV>qgmQ*mea<x~s1N^P+ZsYp z&f_q9L47s$$uzrYKmK`&W>L^I)5}hJ(=O=YmrM83%5lD#cT+9&>PZe!4c(sxaaO$a zu4p#4_twu-E>ao&mn_!u#bxO+7ZwtYG)<N^3(mujM#Jm6=Y&Te8t=!3iIZD14njrR z%(~6HC7)~)7YHx?z<K#qA-MT-n(^-C1jnr#LZhiNI%0JzZvKdPAzxCK+jmYX?_z`l z!l^~vBdc@fgES|S=x%T1tP6FdMZAC-zEi@P3hD`MQ8BDrf$)o&wLgcmCQ)u<e6>~} z0KYNg5fa%*M%$UJJbaD98z?=whO)8-NL~AWDmS{oxf+ccD1O`@@BZK<Zbzpqvcy6C zrKg)K4V;y}d}gTV*7V*&=!jKL<ou!8&Xa2|%4e8s>vm+~;ni4j1aDGuLyT&*^L?`x z|GG#sIG|^eqP|PaDYS^PKi=22chq(ldJSiuYhpW`Fx@uuoOnr~Q(t~#U5z?!@)>C8 zgoTE-0K&VFH?pcc@a20;%m6dCkj_8A3e!2+M93n?+usw%rMt>kX&UH9#O6{o86-)^ z9;}a5slV5|U9|5dy2;FW`KzQfoIbp7ly_S1qpB8Dc-t{Wcqr(~*Ov=CHYgh9&r7Y& zeQ9tOsy4tVv@K$RzVb3<BagbE4bBNV83IyIe~>7idPL(XEO|xuQC(_R5bB%T(_M#W zNur)*&eA`JHjA5z;|zOY5|IzN^qaFDe<8l*!*;f&vXJh^?`j^KJj{4Su2vQIqfKWy z95jo)KFUYv)U(Swe%%V;i{38k7H@Es*j{hF9oBCw@r7~1Hm~wr7|k9`l^Y0nLRXzz zI9H5i@Y^Z_w`d{{ODUbG4=hCjm))nRB-dxL9b7`5tVidq(OxY`wZRv4k3ZdaOE%0~ zZ8{KN-B?t)G1^e^^JiMlP*<!5904TZ>uROnlqc!lxJ;IC@^q(TII~CG+xDXU2<&Bu zKaJx*l3k+-T4%s^cxU}Iv-mb-d2s)7Ig)f}2QXi5@20n(yctXkK`k<UAr8}>oyDm_ z?Q#>4n+>C})MFu_8p1@?nU@L_Txmzg%&l3)PFJAG&$tjt2ZRbOv{<Rsn51yGVJ2=T z2@r)|o>Lgdbl`Aem_N@`P)ACIF3B1lrJ{}nrGdP1=3pm?g`)LYyAww1LAx6Bsl(uu zZTQ(y;!F}=@>N7(iSKeQa3vhgnb~dU9f2N(cq*?VqCH88ZpK8@f7fH6QsaqN8Zp;X zN9tKFW`iVLt21uqp<SoR<$lPC5&$W#EgKbQv=aG_Mm?2rP5J|LqV3T<n(zz2sK&eV zi39}GoKs#)i;z-%$Bqr|MdaXHwN~q$qn?C28$S&WLiC*zPJ9}3Cpk)-<5?SgXhJja z%-5~}?b-;re7mupQqw}maB*#2`v8|)99qHiUZXBVbYp%QKDYUnB%<pV>(51IT@J<e zJMWE7%hnJ<?c&Bq&n@?@4G?L<`$T^C`6oli(V9>p>GRW|^+Rlg^20VY>Xg-n1f3St zi<Hx8VKR|1c4mJUlV@K!g7hu(QkV3Q67-ep#r=k+s_sx-(@To1({<@&%AT+KexExC z8prVN8(lNH<v)pKt@FMb9;?xTlf;xRlNi{rTc+au7?g|HO`+H~OG(wevWv!2v;<wE zQhwiq$z0=h2x#&UNjnqNJ!ebDQ_Or9cGQpPRIV+6?Q_5#tVx1%gw{S=o>nF`xQD)q z6+StMe|JuvAsrZA6tZ!Skq#(T1yC8hn~V$`x$QdscB6&1@2noaW|Z8I=fIV4#=jO) z$N%75faAtR*|i^p7|G-YjqQh<^v_-n9~9J%qfz6lrxZ>mZ70d#;vHKzI#DdhQfouM zKv5eYvd6K7$u3imy~pKDocvH1$OE45uT?ltb+`EzCl%jI?7$e-dh^hW_X?z;Xj|+c zDAc>|7{J8vNa#Wgf*A>${q!6vK5k(xigI=Hg)3JnFBr-eGj`os9m$3g*oYYCv3vLX zef<cBzf~3Qr9wI?c<saVcuKReK7KIze3Y*WFc&9CB0}mM*?*7=1wGwGTTh3zA7c<L z20?B-V!hteD=~#v87DpP7f@upjSY<05|o2jJhu3L5?$h;%`#R=uvl{q>BX}#reQWA z8IgnN+f7LXTEC5Bn0obf_G)xBn&_PZugc>0kR7oa&qH>4gP$T4Rt^x!vK%r!Du~g~ zxYNy%)sW(lqp|qD$Mz=u6dy2`-*!FOK4?`|l79hRf0l3%GXyDbOvt7nN@^Btm3-q; zN>S+tV>c1r4nBd)uNe@;!}rr}!p@0IBd4O?LN5?QVSt1b$$X*b4Ck!2)b&f=k6YK1 z&uJHSyO|!R_wI+|6Xzl+X7Lop#{K|aT&d>13VUHx0gBV%*i5^5`Mv)1h0<o)GFB`j ziQuA@zDJh7PFJY{vxTE@{TFt@byxz90V4t!rJZDt4Z<;{y>B)Oh@g+(!(Pl6s-<@Y z<GK_Y-fl}lBj560e^E|gHeK|oD^xGVJ^)Y-*ZBiH$tCIK_7`|=rlO`Xeof|6KVQJ+ zFtbSKgXAi`_Kgi#*alfpmM7GQxeeq%lU(ZavBU3RgXWEVx@X~e^j7bWj^ai1s!xL( zk_eRE-`U`WqzrDMk@5<_BV9*7%tHgeg4TNIikt;>rWkfDG*Bf<hN&J(X|p5PM)Kc} zB6f%Cq+4@SIp$Zd4Z_Tu6V;xoM&sW+#_Zv8F|;+dXU)BPXiiZ4L_c{O^-&ikrcA|T z?|Tgz4tMmAlU#=9C|w^PZU+*Y?Ig7L*I=s1EC|fK_{roXeYE1d`eTbK7F}Tim2p?n ziA1SXQD1*;G2_X-Qf5@s?QaQ8eqsgtz1BYaOQarLNp9au{qyw6`K-P9^&E>z)ysN+ zWg>3WFE<--)<ZI<bKJ!$=p|N!@y)f0ED?s|5BB4&$c`BM;=>ds$<6CWeoD-sX`%4$ z8!2S^kHc8iS~fv#YUSwwYsn4@5p5>j#j&K)4(zlGLdo%2OjOOIvztDRN@u$%E6HP& zQ*q%5ee0i5%iRrKvE4LU+{|gsHwEhW&Pd*#9y)iJHuKKN!yh2X`&ymo&Z?0s<l$Qe zO4mifI?_xuj_0Brh-B{G5_->xQiL%LqZ>3vF6)~c&i5I9bqKX{n@6;sBtmr~0gRa# z^QZB1n1~UG*RkNd@fJ!HbmXidgpZnMzSoiCDB7V^y{B>wpF}VaA3NU`@=+6qC&`ui z{IgfP>^8K!4PAl?GHYLTInpQs*=@f1LMfw%5p3J_(b%AL7odM<*n;Zw5%D=5c#CqC z06}Y@zO}_{Nx~Ut;}Y`Yr}Y8!^d$l%5dC<aOfj=TUY&~ETy)oEn<j+f=Zh0ek@)Mk zG<Q3r)yumdC+K2a$8LX+F;1S0a5DTR9WY>1ju}m&W^MCHmmwZ84qPW$2bs}^il8M& z)|y#!pg0(M+-ooyWCJ9^N)v^_Jwcm<?(h9j2N$SUU4wG9O`X(eFt@*SIY6`tC=>~& zeCagg(O+`Vn<TTIv>k*<@h@R|@_aX?A(%=E(ZJ-G)!lzBJ}@PIg}e_X?xh!{^61GB zEA;&=xV1`cf(1#QA<p|EFNkhJ*5+|jqjGUCdr2ZokQqa$wup_Vnp5Zt);ASDo$m>G z-M;V_NkO^p_FUCl*G5c$?<CLM&hiQCW_sMd*udXIQR_`2Fj0ED5FYN~&imiv-o4U| zTC8v3$4l_3SF)5tIn&-1sdXSy4s{z1`xLL4-G0s&;4eGUG)Y6__XWb_>HEoInW!d$ zv-?(LOjQ3PddLDZdm|gJVrLTKNiq0*ZReOHG-EiPJoYS7DH^9r>%o<)n&JH+^4H}V zG;=rRB)KR1_91tEnB!+en$@omzrMzUIOmI-`itbUX9bTYle-!SWAO3);Gi=7q>!g= zvRGh({Q4lwk_l-^=}ECZa&120-ddM=!X{(8i!2spr{S}_E}yQ=A%y~gMM+Us*M@}s z!@c}Mczq>NlcF)wk4>u<Oxh{C)&dQ~mzi5z07XI+@E%FMmlXX{XM8n-9K%zfhSNLC zaL#7OYinjcD}%xP<lJ_SslGtflZSxl=f@T8!Q(W9uP|r@v>m7iqDX0<;w@py2Yr{u ziX8S>S<=4B&KQ}X3Vx!JIu-Pg<)=5DNmSy%ZO+!4^<sv@JjlX8Hon-{&-LmFq-H-q zR)MFisA!*%!oxH7=xj8ib<~{a{s?hEsG2!uZ?;`p9JS2b!kMXC=gD;Nw!#$+WRZ^j z^?-d(Fp7fDrI6R(<nTN4J*h{1w$rnlba~ZtdSg39k{UhZa)9JW&S&O)7m;_j#aPkS z4hV?<ytTpf!y#xaxczWNKaAM_A@<=T5zWQuT@E?<(SE3NN#v%5i2nD$bDO#;^Yp-5 zi*6S}u&x}D?U={ouap(-Ujuu}sazN(wuwwAUEoxE-`xGLceem+m(AtZBCm)$znA1K z-1J2iybthLGYon8v&C)g1CouVs4vSqG*M4rICAAIQm8VmD73;9?3doD))INyNzsvo z5#$k0L>-~3q?Ih4e%{{FeymeW^4<J5MA8n!^rq;H@)wR@or8_23Coc<mU>5>tYD_e zEXAZ_(BXp{V%-Q-AMP1m7VyB=OCcf`x-wHU?-Al*>0Uf|l6&Z=$nOL{n|af^>vGRv zi{UsA`Hn_7=T?-+Gu8S<6k%FN*nqk~Bka^YPFh`{?6p8DhZ!R)%;T0H6dzi2HlL*- z!8togyo(NVvg_^<aRAe^F>a8%?=PUKN<C6XT#g+l3bHLwG61(nc7iziMfH2X<C*(z zzG-5&2nB|GV~QoQ&f~4RJzHh4x96b_BaQ)rPpH6XDMuVode#Eo1;ZyTmERwN;iEvS z+eK~$bA#vY7B>e}Qgj{#|Mdh7_+{O7;S)6x+5K4v0`ETWscT5k?L#J|8n%~^4e(+< zTwHdy=A|F_1LnozsyH?z`7ogE{aBr}9h6%6oh6?6Ax$R*%jY%UyIVm#yR0<~NlPuW za*E}y+u*L_Frk2~>wbq!3Ag-3g=bC$DWy^#gpYy!7_iTt<36A4h1b!IsuPw)kkIQE zRiANs(^zJWWcreQn0r%XdXQ?>@Q}m0i`&!5IuJ<VH0TIZ4ext$;`N<WJ>m{0f|p10 zD>v=+d_xV|?#sz5*dsVk<C&pQ*W=3`4Kea6mz0exDfwVsQa6L68~<>I;i{e%R!&8> zRX3v8cYGfgtIbYruyqXv=vxHQxMh2WAoJ-bxAz__x^nL)3T(cy^CM^aUxeRJP^%ub z(CUAwgh2}hhg5w8^mh?Y{Baq!b$Z&}DtMWWY4Qpq)+CY9#yxw4Ms@Ds+@!Ayp+TUk zXLJs~gHODnyZoy_l+PN<4{BI<$)srYBsLDc<|YNELN^=YK;CXI$`dGU9pZXF&bDfA ziPIr1id~(B!Plc1e7e=oEXq%vI*lDA)iE+V7=q-<2OA5~zR>~cYy3Fh6}{WoPeFBt z!;-Wiino^BkF`9onS#3!{54)p8)Bi4?#|&qZF|F#sCPR#U5Jv6+b49o>@FT<Ecyhu zUVRDCBfQ%CtRv`nF>JKc6FPgS$5z;+U{HP19vUPsKodhh_ONYQrMF@hV6=t8hkoHV zSp3MuzTUsNB=5^{aPtx;TeQbRu#=wbF2##VF|XW6Uav~p=t;DIs{z+D8ScA>Cy5<q z#1_e(U8HA=d4Wf>p!Zt$PZq(bXZvX*+`m|dCufJS_p+j4biOBhaa;-6f!FXPXrFYD zVVPzg92`=My!`Or9G2eSXbo-$m}Xe;EuNBGU_@Q*f{tkCXEgMV{paq^M`ezKc2}fT z_}lw;n&Xo6KaiQk(eh;atkLB>R|}Z-`}*MFQl%2sIP4YCMInCWTJtsF4`76ym1)iz zTJ)${bKn!_Gcn)#EjqVs@KD^`x>h6WLGS!9@9fDFE#_}mt51;0Ia=*!dnzc$T_$_> zP#!gRqJ)=A@cMzkEOdxl10jjcPtFm+p~7RuVRhe~(5m+wFV;exu`JbaXkNR??$sl1 zTr+UhWE<?cJ>pcj%7usP4T;M-nWT&6Rmb(I_G1p(A=Z$!M4vL%v!WoR)kBSslguuG zKC=D<hD{N;+I__il6{u4aWRS$qmhyb;JU^w$M-SkwO3Y705SCa$P`Ng={<zB7>!m2 zJ@l*W=vZt9rR>unze=k8(Aju~PXFh@C#$->yALOkm&BD48!;Qm$yGTjhuZZ#u(P+@ zV&Kvkqg=saSzRSuxf+<v%*JL@nNnw{MgF3qF%b`qAbPEvq~bP&ez%QjM_pR<>@{<1 zd$3`Jj0DMjvlXTtG<sXK0d@5YVn{HO{rd9-`uJ`3(T!q}^uW530*30cuXrSLmXwE^ zt*z7C6=HzgUVn4T0R4M@@agLmYEx>&E}-B*)_Qk0<t^@xu~&{~yfDk<O{<yHU+&nI zewOcz$KhvqA7HyT7O2AHHz1@T3U&kVFK-{Rh?oq<J&VFoM?)9mH%dX_PP06}bxS=q zr1*T$@=y)%=A4u<CS*IADF>`^gckQ7{KC`L`!-!SA3Z+H$FNSU*}C5;)_Ua;@w^T{ z{0~4A>}e$*Kb**zW)w^j=Si<~^U69h*_1Kz=bDKXR07Dq4+{A<j+24c=zA9PmF4Y2 z(3TJ^O41_PaGCjO!AUni$u=!A(MdxM(;DRp<LiXct*v|v<F3PKek=8%!p3L;b^-aw zqeQmwVN|6jY;GNn;enyc=ecB#J^9W2dLkJbib5Ax2>7B>R04U?;NV9R$m!3UUq6f! zk`42w((N`DCXAOh{d#tfpo9EkU+R&`6v7XNVY0Yuw}l?0bs^C*TEiuD)YttGQdRg` zA`3XX;M0cG)0w`I(gB|UBIqALB+Of!op|mjkvX2^Ns?dTAK*$fFit5S7fa6EzJ&kR zsHIfQeIH^pw1}!ELGjIRb@^a}1qPG@XR4zV+Kn@wot~hUx7g8NJc1s-#**dDpPNal zZ$@kp{+0{wf#T7c&(+WI7uV>H=WJ$jnCK4A5+y;t7Y4PdJYBqS{|Im&B7Zj?$5T}z zZqQ#*Yy`cO3Y~vh(^)Bbk|frVCv^1%*Yc81#{c9j(got_y@CHzDZYGdC;+JZg?|9` z=eT_l53{M(@+eus>5~rKCo9Go<m!7jMW=*)rP4on+-F9mm2!4ki<x&z*_LI<o`)Dz zOPBGgwJxSOjS&f0M2*KXa4Wm9X?+|;i~RPByn>?(9Iq9AOU$jc_^M{DI}S(<@rTQ6 zC!b;n^;2twob3{je4?qGFl}}b+07?T5Ol^Yq$xJ$l$u1&%v4{Qni|eoyXPNwR?l@= zzao7_;3uo;R5pLLAaO(I$?lmQd2_bP9?8M-dTF&MWnO(YP;2?treT3W^cs%E88`U! z+k1q2ET+E)ltJXI%kBVV^pm&Vct9b4vLkfTQk)_ezgG_XCme*<a3~=ys-VA}aoIbM zYQGrlANo7P|F}^&s|+7MJLd8><ijga<BzB-;j^gcwP;7Zh+RCk+zCzk$)n_QAEvyv z-r_xpdp^!Hw3P~<ewOQpAmjiIWCZ80cZii-XiEom%v66gv-`mb>IpfSW$dNdD_OH| ztr>YjqN8?ld1KA2a9mx#{m_(pE$2EDeB3uIDB1H{v`+zgJellK)#>guq$XD2an&a- zL#^D^TGNilgjhiA#1Kid4>%ml7K>G&E}M7U{vd&oD<7t2D<<Ku`JW{_bVO_MbgwzH zVmAm?Ng?w;g*|enfj#sh;8ks!>4oOWtS--19*J#D-CiYzxQmJk+;~O4x0l@LC2bhg zdaI>bG>rIFOuEk0;~Xj1=P25?n8(P8%NuwW#zFr)eRO}q)xzDGrl+Tla8E8mb5&=n zeOJh%)(;YreRwm%dDv{SfG=-S^}hAq>bX3Nu2S3j>XBbSV}l~kr=ZXkSB#&MtqDYL z`FuTnrwUUyjk|vZUh4@ee}$`QEbS9VNXPiq$liS#7~2cc!s@$|^!gei)fVS=a?yM3 zwzW&VBP}iRgr;aXU+X$VVrTLC!Gq%ka;+MI1t@T))Jtch=_;Jvw<W9ocsNjKxug(2 z=W~@`aRWcp1-R|bV(c#>2WEU8Tgt_R+mDB)A83g4NwJX7dF);b>3w1Ki_n_K^vF2g znoK+~uI-B<GS=^LuWnbE*f+@B$gFUauMp?`BFWE}aESISB<^vC6u^~L(nW5ft%S1k zBkr&0>nL0dnvg4HRUKNtKS0(G$h$7DY01zU{(~sO5B4MXPsUR;-UVAbB+FP%g?ceN zZTXt4UF3$_;}c^(o|T>tsGMHG=5ouhr~}1Ltri_E;|R9Oo}4^=Mu&QTQe@vBvwIPT z@*81_4Fu>*HZi9=897vIUd2|w^fKx$oeE^@=8#a=K039|e#4G6hg|zmH3@W?Tn?k? zjtn<X_zrl#4lzZKbWI3Nry@nGxIj#ZYyPg?+CsO+!|HT{nMrhCH=2xoAnk>CXY!_) zAZ-d!o{}_Yuc;-nlTVX-1>Rq8Lm@8{LB+)gNslTuCHii5kXI|l?V!Dl?6zH($ja5J zt9(D7R>yq%KAt>k@cv$@`C5&4pA{TrF=5JI3rEj)rVo0KW2(aYc&l=ko0MF?qR6aA zcZj$dqugDvOgC(ZdvmsSJtx}ATsZ8j_iUCJ@wVqz2D#)03@;x#X;#41@k9Ry%hkFR zk*6Rs^q5a^V(U|NyGf(4KBiIsUNE~@%A{xm%K10``8*8$r9ev;zEsu}=_52fVZ8+~ zMSY0D(sms_e2(P`(F?Pt&Fs9o-W;URY%a9WkaHm9{~6*wf{)dsoWJrjAv+}C$IXk6 z`kBAD5&N7UQ6?<twd)PL7_k}ax9_{Z`DozB`*&@sY!vS}&bO~JP?%YN54=bvVJ}2S z%}k5lJHP02;Mv&m@DP<Xk7oG_`F?C^g%M%W*|;#X?*}Lp&k@nnnccThM1R*j?mU}N zmBke-4-K84uJ0e{r4>rpbU3&4J&aV7b7WwX3RviNT*+t0P8grLRYtSHcr==8Dc{*C zn=AF?d8%X7KDp;!A9<(iF+R9gKFxblR3_`i-1%~BUTeQ#y$G|CQV{|21}{q?`#AW% zku2W3qHV#SgcQ4aRcu6Uul5yUFgj^40b`llgke_5J2)i~pNOZJKtmlm^D4-0ogJ?r zaAi@&?1q<8o?}r+vTe4TFCOn<fgrcTy=lcn7iH*8aXC*#+(MGs!?zUBoF-oL>>6j3 z<4P_5aSfOqqt^ebEq7L~wY~iAEF+amq+1=aY9gK|pc^^_rXW{r<sqm<FA91)5y^dZ z(%qyp0-_BkUOg)P<`-#B<q==&t}~2Dy<oDiv<d8@;Cjzp$3!GYVNRogRwpDyI}5+@ z=V^)pcZhqBG<7zYXeK<+Sme1c`Q>OeHXe<6-6e+U8#%?KM9}$Sw;QcUGzZn`!ZNk} z%3e6oTiU+`R<_lrzpYW?nyt()CQIlRKZz)VbhZ^HahdculRoN?7Qnk%m6ljfJtkEW zPWBrpmKXVXc@2k@QPBB(Ig4H~aOMtfM4{LFWxJqNpX8BHTskJC6lypv6rFU|a8gsk z#Oo~J7dVtrwmg>YE30REQ}~Ur7WI?&NpyQBDRuDE=wctI!{8!{$o<$~rxa&NuL~Gv zuEYn`(5Zt9Z@)0bR%-g<><=|oFf#7XU#yvJq1PUykiQwmI<-=oq6&JIJ;#cI{}Uef zga|9{;B{gCR`FZR;=FTTPavuulP1Lfse`)Mt2ZBtNq55Q?hsSz&49Ws4V##jaD7TF zX#@MCK+a{?bN{o%G#P1fi#mm`#a{Gu?W3I- NRzd9WnH1H#0NV^r2A}4`%Y}5v zrED&kw_2||2fBR}gU6+R-V5fQ8~RA{+an_&zcfX|9i0lf_a!&Yy=5`aClj~*{ArQV z)n`(WMZ^L%>)T4KVR}js!&GRfX%mTBm!wC6HB--TSxoE$xe1974}MEJtKK>fDk3qo z1-?z`BT|w_k&kz=ndYh`wGmsmWVT7OTYj<XjN?B}_IAm@Xrd@x!$&X!XTieq>o2G% zF-3KTgl|)5{O?cnjqu<Lg`GcM93{;r5LA%6`+mES@Q7om#(Oj{<CG$TH?Z*D^ek4h zbX4ZXT|3c<Lg52Buhx?RNqdaOBLqK(u|jRb*C2P|Az9GPe&ywm@S|{@{$PP3Q)hu^ zxzx5;QuT>nnP0-o{s09PNk6LJsy@G;D0?`L5_QuPJ_<diK0(`v@4BJAcdr9cuChDs zhHYB%LC}}d#}J*XR=m%bWI6AV>Aj{H{DOAXzf3fzm3H~ut}|E^O7g$d)J#szX2|rZ z?K(38HK*?<;y{Ex?e0f0JLz!c??l>k92Qt4CRTnwIm{x_BR?|)Cmf^$x&-P{InDwZ zxY#cH%b1TwzSFU-@jl8C;z0z5EK=yV{0<SpRUi}F{oa@BAX{%wtnY53`ffS+$qIbg zH)OTQ`RnV~1kIo=5fq`_8rCF<Cr&j~*m`oEg;-)|L-{f-CbYAICqJ(|zJJ!CtBv97 zEhnXrIy6I^m7-X^I}@Bgi{e#7A-GB%8JaWr<o^fo?=sR+bUs=0i(<xKM((WK^y}lf zGD^Lsy7fqzhU?TOU%<O>&4*A}bjtH)gM#4EuM(YqWfXXY_|JpDr1HZLm?~<Hgq(Nx z6q6tMpwSCK9+UTj&yd`NZ!L%mRBkqA4AB_ik|UBXrwTv3<?`u@OkYPRKlS6mMC-6c zDap2($J|o-D00ysXUk;O96H3(S>QZdAKIFz2)yDo*gZ->(@m&1I?K|YAP<%&g<_Q4 zo&*l+n@rPdWL%XFy;RvNdvv#%p|;$$GlG(qB6Tf`O;%Yi4AFBzU%u#1bDqkZY+WO2 zcQaiOLv@KrAy}^2oq}ShZV4^RYK66dx}LR;vF#?l#MW`S+rm5@Uo+Bz$+45$cb~}= zs}v`H*%cu}55L_ApMf|{?+yQOr{b`t4y0VG06mMcwJ*5aBmfCcUkvfF2du@|9(7u= zJ&u~PI<(MsjKbxs0ZICVzS8Zm<gE)+{$eiOxx*HNd1Ch_q(l4<FvLfpo!!%ZV-@!W zb5-r&F4R~2>w=DP-cj-jRo@esKt}H({GGRfVFx=K2cAsp6?&&0fuce>2It^+4@3?3 zNSf(#(0UYYp{rVgDo*z?W;juYFviJ{0^nly<z%i+#zyhc-klAWfF9SK#}tYJnuTx8 zFBrwja4=pKft<M=($AZYo72n*he@`aZTBcVlB-0(Vk}Dp#)nOuEfnrkIoV3NKI>gN zaf;iAsv0t+fI==uI*(tXR?bOZ)WTlPZGmUon5z4%;}prw3-KhBA6$^~<naDI-?0$z zZKMBlT{rm<&)4V@`{m_XyfC@yj5R;#FOJ6Gd(Q(7{OPk*QVI0DtKI1VCjI4iD`+lx zGaT601^%WSGOSQSG*X;Jix}GY4UXL#VK#gny@7QXY02@hX!<7)dZC*!tca1g^S%~T zxume4R@dTV&j+Tac<vt$f42OY@M5dKD?_+{^;G_>or8~n<qu#_LZqMWW}nt8UMeEu zj?G#i3P*|W=xJdg_13$%7?x4e$u=*dK+E!~_>HHWOhUVAQTK$2r#)ornqRmhKMc22 zAye-}v@i#p<ga=c;uVh<pgwkz1Zpi~Gvdt9`RJ2>Wf|$>e^%q91pnD>gP3qpIgoQ& zm{5c=Yql<QH$7z}WGXB<iSNj0sY51HmEHFj=vin1`K(T^Y7jk>!8h28q|)@QI+P9q zFX>e7eY)E)K^u3x>4_jSW8-PE3eR3KJ(Df>sq6NMBDP)}-J1~p&`YW;UD&2r3GL#g zvp4%FsY3(Pbs#xt(m%Pt#(D4d?7cRX-LP3&pA>zDSy}7uQ52tqR<Z?0Na(5DNs{C9 z05g6&qA+WL4vANj7L)>eQKu*oEuFrV^Q4SeP1JpzG#u*%n$hg98M<i*sy4R#ooNNr zjyH$(zlj#@vjXwo7m_T8qm~W)ic5=sKZJZEVW58Ld}nIR`O76FS_d>ky3j)ULbH_T z&T_s3E^I)H@@TN+m(%^mVw7O5tttA4VEZ2<kKzR!JhlLQWG6h-y@i}s?wi;J0c|gB zdXY-G;`(L}5~Vyk`U%b&$;Dbr6gNw8w~51ikA#vZSUBze4;|-yAZ8$8a&`iPh*Qe9 z3{I%ZsYahI5c#tB!3$Pxz=B-NNxo3znqjZwZjj?XnxsAp%al{3<9KKyiq+>#^3Q*| zwuf{_h_jX;(4p+<#$^0T*B9uvKuZ36IH|LBGNjg*e<>|tX{!e-xaUl9I^O5-#?7E_ zAY2q>iXcF(h`JX8&}r1HIGF8orN~N^A#pC=^ZwZD#sj&jVtlUx{b~U_-2g?><+5`+ zKC7zma-d44XESV3P}a?-!w)#TwZeG)z3agV)5wpSc!9Q(q%KYEDh`ibs8W23@M*HD zl;{W=11);O!&wH(*~ad}PQQv)kk>qfkG2@UC5A?HLN=Kudp|ap*p?wV{o9Sz2&v<J zPMDeQXXFN1elb4zH|eV_^vq}B9Ojb~jk$f)KhN9Q#fe<0Z+tS}`!?m>Zx^q_1w{_B zCv+4G>&>OsoVS>H#dD8>O__g<Y15~pX<BF82Oo>5xFS9wHwwYE1M`CS%`%_0F?kjg zwmKzPm>`txlBnTICmBTLTRe5!Zoelr=AB=`APY=i7lT`eh!kKoqGzYAtr#|&N=Z@} zzj|&AJT0M!4nJug+&2Lx5Jd+x3oWfn&ljA1Y1_uW9c%VXPL`#;Y|p-9Lf?5TJw}sR ziqanwQ$Q!JW|HGA3l)yU$dMVjAmXJURpFW%kI2N<vM^oB`R*TnW6uQm-@d?tl(~tR zP>#K?uVC^35f_EFnCVf=pqS9q^0DYFP>f(2QY%ls$xw)4a!20n-j-AryB-b6@C9Cq z^&0Cq{Jia6l=VG43l__}+2sCa^=(xjg^W#ezjb**FnO;jCcZAY>vl-qO7`GdVl$To zaJd}HSUvgWes7A^SN^g4X2B3Dpg3euzW{<Xg|;+uDm*gw@jo9XD;?=h*zS2+*fhhU z$Y+M@kX*9W$zbWVk({O7RhX=-<GrdcPFcDf?UjZu9*lWqFiE;ks&;zx2avD%Q6Bvu zd{F7nYd&i2S>Jco!y|whN8UX+|D}q*3^Ip97N>(MN<irjCo0aU=yPB#FnO=1N39b{ zFC)5E@galey7#!Tp~YH8?82j>Kt#|T##CRw4d<rt^^ML3zpV&Z3TD+Q?fSV;hxtrE zs7$hv5xQ6#^YXzf5$xjsPx5CRKp^-;7K<cfgv>L;|1)<inB15^!Xrv3#dPwE^=HKu z$Ge=DMjcEG5JTvU{c>k~vGe<}g`tL26b7pLZ?l&}jnxf)1QbiN#lWp~a-(~z#Zjm2 zsL~tX+s#UaN4kpvYl+Hl8LBj8Hw9J`DhoBLgmWC>_~~Y7HzOkWW@}DE?ZgoiyhJFR z-sGP?1_w9XL=$irBean_1|N+u@%t?Z2r5ekydt=}N`|flw{x2F6)jQt==BViNfcbD zo&hI#tcw*dUcizJF!Kbuu$v7PtLGy<pH{ogqM5Zf`S10XSk+4BAGQ#%dt|E)Y<k5_ zC6qt9%-I8pP%rvKGP=LLb)&)lbhHfzCzS@j3RzS#1M`Y1FsPR8F7L&E&cm?{X*=l@ z56So67lj?zt!Y3#OC|4qF!4+Y`}WXU3NuZw;=S#q0HZW3Uha~%GOvYb&`ggfxBoc4 zxcX9k@Ff!G*0xT);HMa$QI){!>-w8sS#u0o)`88!^NNP_Z7?rAZ3Rc7zmZn1@W5i# zVfb;Xn|<}o$=z0DolEkE;r>ztuD<?DWVBD?1@spq;khzr48u2+Zr_+@yYW}F8wzy9 zFFyGfSbwxU5a0Vu5_sXr<9cTZ(voj|b2#QllMrhyCYHSrcZ5E(kE<YG@epK><|#HT zr$CoehOK$IPD=W6C&-ps5}O*y@fyBwYQ3nd$<}<fOg727!$-n8FxTmHHIGIVqx_VM z{p&{lh6%Ql>4O{AcA=C9NK{DPoW>r;lf&>BGUFjOj8{C0TIl|Y2iUyGWwzih^iT=M zS6G`RZRFxPs$*wof+GBH12<#U=$W^#&M)RY48<M92)`aDu(9w9985DP(qZ%=u6s%L z<oj%I_UjR!s>3R4uNeI0hrj@8iDX2`uZH?-$Z!2KJjeFgy^{o~&ol2N=(x=3JaAIO zt2td2jaI~t?4mx4`?I?U%~omHe|>~LAOel+k?4g&=y-YrVWhqRV}#7k6_tj9apEZG z+<Njlq4_)0Z0hwQdmyRt$fcy|_gT=YuH*Ep3D|D<?0#gta#dy-NbS+Uh!~{lEJ5M1 zZ^2FsYphsA^VtGP)J-FUmgcX0P&+5dYr3L>&4}kpe3CaS;fx=Yr3&n3gg$M5#)c$q zdfP?dFm_A-W`?WkFRShi-fc5}P|L8_tWS(mkV#WiaTNO$ux2=~3{PJBI_E$1x`EUj zFNVK$h$ON=;_7#>=y}n49aH1_cc=99nL^xUOK+;fUs0@x++FfI>^76daYeVl*Rgo| z3JZ?f)y>cYbqhk69?qn9iWFU=)9gI=;vG3RmCVnax0*!itLUl8U3Rn*G2$LSV<&FE z)EuP^MsDDgOM0Yn%h(V&LrUuA1~e05eU4JB3%aFpJlHh@w_Bueh8$ZT&1P%nu7@VF zza%i-=!+;ZaiIO8jlnC{uhkCqINpLfR!nqx8JEoyEA~42pF7$laz#&JHHHk+y5&#V z#kG^i6i(9Ed}7ax?(Z=yIEfd-liDEj?g|bdzhhL&b&ombjAJvAIOnaxG9-QLAeB$D z6?@q`S1b@GOT96TGs?9=x?023)Ep6e&9d|<@A--gu6Xw83r#dJcg+7MB?a30)}Ne5 zEzXXzXaG86XZMH+67alWMH}*ed?zRyj<1YUt-M@Bh*Oc%i`tUUTm)qnS>KG<l<Od? zZF|XG#o@Od2$O<vS#SXY2r01gdf>N~*f=MPu_Y<?p@AAQOY4A`05*5OIRIGibV&30 z-XowJY<iB#+5PFo2n`gFqO)7q1ows?(1W7^ch=Lda+za+Km-8j5Ahu0iKrqcj89lW zb>JxtJe(0S22f_ygn0_YIpptVS5g{8vv5;KXEO3pBLbzMO8$AoPFi=*IU3MB7#riP z0Pj~s;{N~`X|IC)^6>Mh+;Q?8;ESB!8KYiKFt6q1z_Gr$$GscZPFjM#7qRYSgeJ|d z@{Ba{{_+6X=l5bphhuzW3LGkr1A(<Jxx)<@c&_wdG>E<O{`i{MimR?P{9nEhK4NKG zeMxw{9x>Uv5qT~4IyBeY1d2)m`BSyq`~ZKAT{kT!Nzm!d%#<KR2)a?vPlUK7E@?~5 zA_qLrR}fi*7Y=0q0FTwekg3Qm#sU4zXkB{-HA3su${Str?}|S1TogN$n5cy~2YJ4J zsV%{wp*OCxZ6kw0d}Y~k>SEGXoMcOu5NI_U-TpmuZA2+N;5a=+$h4Mi3goJXZ9@y5 z2d3w4#PIciNC`%|@sJ!nDYT2}{=S)_C2|7uw?W?$c5p}}4Cw2?==Xd703ax;iZJar zTt8m3l&OgbG<i3APHtAhTW^wiHHSo0hTgcOAk)50;h{_3&T>UXIeWzfIh~mUw=YAC zpm-j;%{||Y1)tk2iMzaN5QnBMeOUoZitsji^^ld~@NtV>m;vhd;|&1cUin)d?l9Q{ z0wW!J^YhLq*~3+FC!RgCW#MU5-1@q|Pe0{ws*pjqZqB^%;|7b!NnN|O?suCVk8|4% zvV{_2v#4k=*&%M$W!5jN&Ib5%-tbUWU#<cW>wYlUvf{&$e)zD3koLK=Tt1i~Y4dr; zh&wpJASy4{CkEgn!;wYPyZ6nljcC)(zkGq>YixEq4Nk9_imI(%{{YGu(@su7P_&p6 z#h2H8%)ivwMd;Qc;eB!S+ukIP?~ee9A#vFWuG1=i83UesGLWICo!1)mFbeZ}&ZLe& zIXBj5ZoRzZ6uMrzz{E{u(<fH(?SgiQ?)|Zgdg~b&Z=Yrd?P@Qo?(YDKM}p8F<{+XQ zR76h*rV2p~ry_@9&ssXVG$#1X7ZK#w25J|NO!>v~>nm$e`eWZ-u5xvQ)IJ%BLs0XU zkTsgnZwM4SL^+t0_ciN&n2wiSafZC_oC`#!o*X?Wf=<<)V9P9x$7}rKhc#yY>OW=8 zp79MP!R$#fH^xG|^d?>G);gQhj=*m?rB6&vZ&!?gCilNw()jej7MCiH)SO_k^~FZN zUUNYX^QPQdBgwp0VGqjS54B@6i}!tfzxWm8r!>mGXD82t8JmnFM=c|YkG3~m=iQ3q z0Pf)W4shQ-nKcb&z-}C7oks!_XRdk^T-^HQ<1D%Rp!rvtUkZ&z7;qo_0gW@Lq(N#k zqu@@)BT>`FAq{-z0Gjv94IA~xw|IHqTp44o%$m?)xlHGH9DUEO2DsmxHXlrM9rurm zZ>V;UKytdxlnFL_6p`0Zl`OyfC7)aDT70daB`Lwj<u)-Iy2$5hLtY&VS-<JTfLDk7 zvq9!T`})={;ugbSIDOLU@4gZ=-#OGI9c*(F_0t?QGrC{C6-b)e7yxUys)vjj^xGG= Q0qc^&MJT)opZ?kZ*{gpP?*IS* diff --git a/core/embed/models/T3T1/boards/t3t1-unix.h b/core/embed/models/T3T1/boards/t3t1-unix.h index d94ce0b4ab..26be4fec37 100644 --- a/core/embed/models/T3T1/boards/t3t1-unix.h +++ b/core/embed/models/T3T1/boards/t3t1-unix.h @@ -17,7 +17,7 @@ #define WINDOW_WIDTH 400 #define WINDOW_HEIGHT 600 #define TOUCH_OFFSET_X 80 -#define TOUCH_OFFSET_Y 110 +#define TOUCH_OFFSET_Y 102 #define ORIENTATION_NSEW 1 From 38bdfbe4af2edb6cfb46d14e160d3a6984ec6234 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 11 Jun 2024 16:58:03 +0200 Subject: [PATCH 408/626] ci: build T3T1 firmware for production bootloader [no changelog] --- .github/workflows/core.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index ffd5350227..a80ce85c96 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -58,7 +58,6 @@ jobs: BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }} PRODUCTION: ${{ matrix.type == 'production' && '1' || '0' }} - BOOTLOADER_DEVEL: ${{ matrix.model == 'T3T1' && '1' || '0' }} steps: - uses: actions/checkout@v4 with: From 8869b16c83b6bbd29f95b89727c21c337e34e5d4 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 11 Jun 2024 16:59:24 +0200 Subject: [PATCH 409/626] chore: generate-changelog.py adjustments - add T3T1 to the list of core hardware - add flag for regenerating model-specific changelogs in case the main one is manually edited - generate headings in the same format as currently used in core/CHANGELOG.md --- core/towncrier.toml | 44 ++++++++++++++++++++++++++++++++++++- tools/generate-changelog.py | 35 +++++++++++++++++++---------- tools/towncrier.toml | 3 +++ 3 files changed, 69 insertions(+), 13 deletions(-) mode change 120000 => 100644 core/towncrier.toml diff --git a/core/towncrier.toml b/core/towncrier.toml deleted file mode 120000 index 489bc47ac3..0000000000 --- a/core/towncrier.toml +++ /dev/null @@ -1 +0,0 @@ -../tools/towncrier.toml \ No newline at end of file diff --git a/core/towncrier.toml b/core/towncrier.toml new file mode 100644 index 0000000000..0ab83a5771 --- /dev/null +++ b/core/towncrier.toml @@ -0,0 +1,43 @@ +[tool.towncrier] +directory = ".changelog.d" +filename = "CHANGELOG.md" +template = ".towncrier.template.md" +start_string = "The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)." +title_format = "\n## [{version}] ({project_date})" +issue_format = "[#{issue}]" +underlines = ["", ""] + +[[tool.towncrier.type]] +directory = "added" +name = "Added" +showcontent = true + +[[tool.towncrier.type]] +directory = "changed" +name = "Changed" +showcontent = true + +[[tool.towncrier.type]] +directory = "deprecated" +name = "Deprecated" +showcontent = true + +[[tool.towncrier.type]] +directory = "removed" +name = "Removed" +showcontent = true + +[[tool.towncrier.type]] +directory = "fixed" +name = "Fixed" +showcontent = true + +[[tool.towncrier.type]] +directory = "security" +name = "Security" +showcontent = true + +[[tool.towncrier.type]] +directory = "incompatible" +name = "Incompatible changes" +showcontent = true diff --git a/tools/generate-changelog.py b/tools/generate-changelog.py index 4522194c25..4c4d506fb2 100755 --- a/tools/generate-changelog.py +++ b/tools/generate-changelog.py @@ -18,7 +18,7 @@ INTERNAL_MODELS_SKIP = ("D001",) -def linkify_changelog(changelog_file, only_check=False): +def linkify_changelog(changelog_file: Path, only_check: bool = False) -> bool: links = {} orig_links = {} result_lines = [] @@ -54,7 +54,7 @@ def linkify_changelog(changelog_file, only_check=False): return True -def linkify_gh_diff(changelog_file, tag_prefix): +def linkify_gh_diff(changelog_file: Path, tag_prefix: str): linkified = False versions = [] result_lines = [] @@ -79,7 +79,7 @@ def linkify_gh_diff(changelog_file, tag_prefix): linkified = True -def current_date(project): +def current_date(project: Path) -> str: parts = project.parts today = datetime.datetime.now() @@ -98,8 +98,8 @@ def current_date(project): return today.strftime(f"%-d{daysuffix} %B %Y") -def filter_changelog(changelog_file, internal_name): - def filter_line(line): +def filter_changelog(changelog_file: Path, internal_name: str): + def filter_line(line: str) -> str | None: m = MODELS_RE.search(line) if not m: return line @@ -116,6 +116,16 @@ def filter_line(line): destination.write(res) +def generate_filtered(project: Path, changelog: Path): + if project.parts[-1] != "core": + return + + for internal_name in INTERNAL_MODELS: + if internal_name in INTERNAL_MODELS_SKIP: + continue + filter_changelog(changelog, internal_name) + + @click.command() @click.argument( "project", @@ -130,7 +140,8 @@ def filter_line(line): @click.option( "--check", is_flag=True, help="Dry run, do not actually create changelog." ) -def cli(project, version, date, check): +@click.option("--only-models", is_flag=True, help="Only regenerate the model-changelogs from the main one.") +def cli(project, version, date, check, only_models): """Generate changelog for given project (core, python, legacy/firmware, legacy/bootloader). @@ -148,13 +159,17 @@ def cli(project, version, date, check): raise click.ClickException(f"{changelog} not found") if version is None: - if not check: + if not check and not only_models: raise click.ClickException("Version argument is required.") version = "unreleased" if date is None: date = current_date(project) + if only_models: + generate_filtered(project, changelog) + return 0 + args = ["towncrier", "build", "--yes", "--version", version, "--date", date] if check: args.append("--draft") @@ -168,11 +183,7 @@ def cli(project, version, date, check): linkify_gh_diff(changelog, tag_prefix="python/v") # core changelog for each model - if project.parts[-1] == "core": - for internal_name in INTERNAL_MODELS: - if internal_name in INTERNAL_MODELS_SKIP: - continue - filter_changelog(changelog, internal_name) + generate_filtered(project, changelog) # towncrier calls git add before we do linkification, stage the changes too subprocess.run(["git", "add", changelog], check=True) diff --git a/tools/towncrier.toml b/tools/towncrier.toml index f7172a51bd..00860deefd 100644 --- a/tools/towncrier.toml +++ b/tools/towncrier.toml @@ -1,3 +1,6 @@ +# This is the default configuration that is used by subprojects via symlink. +# Some subprojects have their own configuration which is not a symlink. + [tool.towncrier] directory = ".changelog.d" filename = "CHANGELOG.md" From 8fa602cefe21b16048ac6ffce594f2a69dbfbd2a Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Sat, 13 Jul 2024 10:12:59 +0200 Subject: [PATCH 410/626] chore(core): add signature for 2.8.0 translation blobs --- core/translations/signatures.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 10be110bea..377f95e5d2 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -5,6 +5,13 @@ "commit": "c9c4bf63623d411384737662ec2aefc88824812d" }, "history": [ + { + "signature": "032698a3739876f30f74e9561521641c12dda685510f68c00f78dab4ff066444e3c13eff312ee242f7554342dc9a5ddf888fd672d85dec021ee55f4e7c9e1c290b", + "version": "2.8.0.0", + "merkle_root": "e239b560d110094cf6fb69326ab59d7a28263d287c647746834903fcb74dac2e", + "datetime": "2024-07-13T08:12:24.095843", + "commit": "8869b16c83b6bbd29f95b89727c21c337e34e5d4" + }, { "signature": "03e15faccf60328fee27c3cb2a22597656f22aa8d212537669a067e940e454c8eb90060c0fd8eb0783c9b5bb9e657a1fc40b5fea7f46eeee71d218a885fb68f401", "version": "2.7.2.0", From a64b22cdef6dae0f786b419f7fcb9be05edf7833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Wed, 10 Apr 2024 10:36:20 +0200 Subject: [PATCH 411/626] feat(core): add progress indicator when formatting SD cards --- core/.changelog.d/3035.fixed | 1 + core/embed/extmod/modtrezorio/ff.c | 61 +++++++++++++++---- core/embed/extmod/modtrezorio/ff.h | 2 +- .../extmod/modtrezorio/modtrezorio-fatfs.h | 29 +++++++-- core/mocks/generated/trezorio/fatfs.pyi | 2 +- core/src/apps/common/sdcard.py | 38 +++++++++++- 6 files changed, 112 insertions(+), 21 deletions(-) create mode 100644 core/.changelog.d/3035.fixed diff --git a/core/.changelog.d/3035.fixed b/core/.changelog.d/3035.fixed new file mode 100644 index 0000000000..fec90f3088 --- /dev/null +++ b/core/.changelog.d/3035.fixed @@ -0,0 +1 @@ +[T2T1] Added a progress indicator for the formatting operation diff --git a/core/embed/extmod/modtrezorio/ff.c b/core/embed/extmod/modtrezorio/ff.c index b48b70b30e..ae62e0efc2 100644 --- a/core/embed/extmod/modtrezorio/ff.c +++ b/core/embed/extmod/modtrezorio/ff.c @@ -418,8 +418,6 @@ #define MKCVTBL(hd, cp) MERGE_2STR(hd, cp) - - /*-------------------------------------------------------------------------- Module Private Work Area @@ -3262,12 +3260,9 @@ FRESULT f_setlabel ( } - - - - - - +static inline int progress_section(int start, int size, int current, int first) { + return start + size - (current ? ((current * size) / first) : 0); +} #if !FF_FS_READONLY && FF_USE_MKFS @@ -3346,17 +3341,25 @@ FRESULT f_mkfs ( const TCHAR* path, /* Logical drive number */ const MKFS_PARM* opt, /* Format options */ void* work, /* Pointer to working buffer (null: use len bytes of heap memory) */ - UINT len /* Size of working buffer [byte] */ + UINT len, /* Size of working buffer [byte] */ + void (*progress_callback)(uint32_t current /* 0-1000 */) /* Callback used to report progress (NULL: no progress reporting) */ ) { static const WORD cst[] = {1, 4, 16, 64, 256, 512, 0}; /* Cluster size boundary for FAT volume (4Ks unit) */ static const WORD cst32[] = {1, 2, 4, 8, 16, 32, 0}; /* Cluster size boundary for FAT32 volume (128Ks unit) */ static const MKFS_PARM defopt = {FM_ANY, 0, 0, 0, 0}; /* Default parameter */ + static const WORD p_initial = 0; + static const WORD p_fat_area_before = 10; + static const WORD p_fat_area_sz = 790; + static const WORD p_root_dir_before = p_fat_area_before + p_fat_area_sz; + static const WORD p_root_dir_sz = 100; + static const WORD p_final = 1000; + static const WORD p_num_calls = 10; /* Limit of number of calls to report progress in each loop */ BYTE fsopt = 0, fsty = 0, sys = 0, pdrv = 0, ipart = 0; BYTE *buf = NULL; BYTE *pte = NULL; WORD ss = 0; /* Sector size */ - DWORD sz_buf = 0, sz_blk = 0, n_clst = 0, pau = 0, nsect = 0, n = 0, vsn = 0; + DWORD sz_buf = 0, sz_blk = 0, n_clst = 0, pau = 0, nsect = 0, nsect0 = 0, n = 0, vsn = 0; LBA_t sz_vol, b_vol, b_fat, b_data; /* Size of volume, Base LBA of volume, fat, data */ LBA_t sect = 0, lba[2] = {0}; DWORD sz_rsv, sz_fat, sz_dir, sz_au; /* Size of reserved, fat, dir, data, cluster */ @@ -3364,7 +3367,11 @@ FRESULT f_mkfs ( int vol = 0; DSTATUS ds = 0; FRESULT res = 0; + DWORD iter, progress_steps; + if (progress_callback) { + progress_callback(p_initial); + } /* Check mounted drive and clear work area */ vol = get_ldnumber(&path); /* Get target logical drive */ @@ -3570,6 +3577,10 @@ FRESULT f_mkfs ( disk_write(pdrv, buf, b_vol + 1, 1); /* Write original FSINFO (VBR + 1) */ } + if (progress_callback) { + progress_callback(p_fat_area_before); + } + /* Initialize FAT area */ memset(buf, 0, sz_buf * ss); sect = b_fat; /* FAT start sector */ @@ -3581,24 +3592,46 @@ FRESULT f_mkfs ( } else { st_dword(buf + 0, (fsty == FS_FAT12) ? 0xFFFFF8 : 0xFFFFFFF8); /* FAT[0] and FAT[1] */ } - nsect = sz_fat; /* Number of FAT sectors */ + nsect0 = nsect = sz_fat; /* Number of FAT sectors */ + progress_steps = nsect / sz_buf / p_num_calls; + iter = 0; do { /* Fill FAT sectors */ n = (nsect > sz_buf) ? sz_buf : nsect; if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); memset(buf, 0, ss); /* Rest of FAT all are cleared */ sect += n; nsect -= n; + iter++; + + if (progress_callback && progress_steps && iter % progress_steps == 0) { + progress_callback(progress_section(p_fat_area_before, p_fat_area_sz, nsect, nsect0)); + } } while (nsect); } + if (progress_callback) { + progress_callback(p_root_dir_before); + } + /* Initialize root directory (fill with zero) */ - nsect = (fsty == FS_FAT32) ? pau : sz_dir; /* Number of root directory sectors */ + nsect0 = nsect = (fsty == FS_FAT32) ? pau : sz_dir; /* Number of root directory sectors */ + progress_steps = nsect / sz_buf / p_num_calls; + iter = 0; do { n = (nsect > sz_buf) ? sz_buf : nsect; if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); sect += n; nsect -= n; + iter++; + + if (progress_callback && progress_steps && iter % progress_steps == 0) { + progress_callback(progress_section(p_root_dir_before, p_root_dir_sz, nsect, nsect0)); + } } while (nsect); } + if (progress_callback) { + progress_callback(p_root_dir_before + p_root_dir_sz); + } + /* A FAT volume has been created here */ /* Determine system ID in the MBR partition table */ @@ -3632,6 +3665,10 @@ FRESULT f_mkfs ( if (disk_ioctl(pdrv, CTRL_SYNC, 0) != RES_OK) LEAVE_MKFS(FR_DISK_ERR); + if (progress_callback) { + progress_callback(p_final); + } + LEAVE_MKFS(FR_OK); } diff --git a/core/embed/extmod/modtrezorio/ff.h b/core/embed/extmod/modtrezorio/ff.h index 88fb318750..c26244be58 100644 --- a/core/embed/extmod/modtrezorio/ff.h +++ b/core/embed/extmod/modtrezorio/ff.h @@ -330,7 +330,7 @@ FRESULT f_setlabel (const TCHAR* label); /* Set volume label */ FRESULT f_forward (FIL* fp, UINT(*func)(const BYTE*,UINT), UINT btf, UINT* bf); /* Forward data to the stream */ FRESULT f_expand (FIL* fp, FSIZE_t fsz, BYTE opt); /* Allocate a contiguous block to the file */ FRESULT f_mount (FATFS* fs, const TCHAR* path, BYTE opt); /* Mount/Unmount a logical drive */ -FRESULT f_mkfs (const TCHAR* path, const MKFS_PARM* opt, void* work, UINT len); /* Create a FAT volume */ +FRESULT f_mkfs (const TCHAR* path, const MKFS_PARM* opt, void* work, UINT len, void (*progress_callback)(uint32_t current)); /* Create a FAT volume */ FRESULT f_fdisk (BYTE pdrv, const LBA_t ptbl[], void* work); /* Divide a physical drive into some partitions */ FRESULT f_setcp (WORD cp); /* Set current code page */ int f_putc (TCHAR c, FIL* fp); /* Put a character to the file */ diff --git a/core/embed/extmod/modtrezorio/modtrezorio-fatfs.h b/core/embed/extmod/modtrezorio/modtrezorio-fatfs.h index 1cf7f253f3..689f881234 100644 --- a/core/embed/extmod/modtrezorio/modtrezorio-fatfs.h +++ b/core/embed/extmod/modtrezorio/modtrezorio-fatfs.h @@ -528,24 +528,43 @@ STATIC mp_obj_t mod_trezorio_fatfs_is_mounted() { STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorio_fatfs_is_mounted_obj, mod_trezorio_fatfs_is_mounted); -/// def mkfs() -> None: +STATIC mp_obj_t ui_wait_callback = mp_const_none; + +STATIC void wrapped_ui_wait_callback(uint32_t current) { + if (mp_obj_is_callable(ui_wait_callback)) { + mp_call_function_1_protected(ui_wait_callback, mp_obj_new_int(current)); + } +} + +/// def mkfs(callback: Callable[[int], None] | None = None) -> None: /// """ /// Create a FAT volume on the SD card, /// """ -STATIC mp_obj_t mod_trezorio_fatfs_mkfs() { +STATIC mp_obj_t mod_trezorio_fatfs_mkfs(size_t n_args, const mp_obj_t *args) { if (_fatfs_instance_is_mounted()) { FATFS_RAISE(FatFSError, FR_LOCKED); } MKFS_PARM params = {FM_FAT32, 0, 0, 0, 0}; uint8_t working_buf[FF_MAX_SS] = {0}; - FRESULT res = f_mkfs("", ¶ms, working_buf, sizeof(working_buf)); + FRESULT res; + if (n_args == 1) { + // format with a progress callback + ui_wait_callback = args[0]; + res = f_mkfs("", ¶ms, working_buf, sizeof(working_buf), + wrapped_ui_wait_callback); + ui_wait_callback = mp_const_none; + } else { + // format without a progress callback + res = f_mkfs("", ¶ms, working_buf, sizeof(working_buf), NULL); + } + if (res != FR_OK) { FATFS_RAISE(FatFSError, res); } return mp_const_none; } -STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorio_fatfs_mkfs_obj, - mod_trezorio_fatfs_mkfs); +STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorio_fatfs_mkfs_obj, 0, 1, + mod_trezorio_fatfs_mkfs); /// def setlabel(label: str) -> None: /// """ diff --git a/core/mocks/generated/trezorio/fatfs.pyi b/core/mocks/generated/trezorio/fatfs.pyi index f845af4098..9042d94b24 100644 --- a/core/mocks/generated/trezorio/fatfs.pyi +++ b/core/mocks/generated/trezorio/fatfs.pyi @@ -166,7 +166,7 @@ def is_mounted() -> bool: # extmod/modtrezorio/modtrezorio-fatfs.h -def mkfs() -> None: +def mkfs(callback: Callable[[int], None] | None = None) -> None: """ Create a FAT volume on the SD card, """ diff --git a/core/src/apps/common/sdcard.py b/core/src/apps/common/sdcard.py index e5d0ba96b2..440eeda9f8 100644 --- a/core/src/apps/common/sdcard.py +++ b/core/src/apps/common/sdcard.py @@ -1,7 +1,12 @@ -from trezor import TR, io, wire +from typing import TYPE_CHECKING + +from trezor import TR, io, utils, wire from trezor.ui.layouts import confirm_action, show_error_and_raise from trezor.utils import sd_hotswap_enabled +if TYPE_CHECKING: + from trezor.ui.layouts.common import ProgressLayout + class SdCardUnavailable(wire.ProcessError): pass @@ -120,9 +125,11 @@ async def ensure_sdcard(ensure_filesystem: bool = True) -> None: # Proceed to formatting. Failure is caught by the outside OSError handler with sdcard.filesystem(mounted=False): - fatfs.mkfs() + _start_progress() + fatfs.mkfs(_render_progress) fatfs.mount() fatfs.setlabel("TREZOR") + _finish_progress() # format and mount succeeded return @@ -150,3 +157,30 @@ async def request_sd_salt() -> bytearray | None: # In either case, there is no good way to recover. If the user clicks Retry, # we will try again. await confirm_retry_sd() + + +_progress_obj: ProgressLayout | None = None + + +def _start_progress() -> None: + from trezor import workflow + from trezor.ui.layouts.progress import progress + + global _progress_obj + + if not utils.DISABLE_ANIMATION: + # Because we are drawing to the screen manually, without a layout, we + # should make sure that no other layout is running. + workflow.close_others() + _progress_obj = progress() + + +def _render_progress(progress: int) -> None: + global _progress_obj + if _progress_obj is not None: + _progress_obj.report(progress) + + +def _finish_progress() -> None: + global _progress_obj + _progress_obj = None From 083071dcb99caffcb2d9f5a3197a25eec519ef04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 18:00:10 +0000 Subject: [PATCH 412/626] build(deps): bump setuptools from 67.6.0 to 70.0.0 Bumps [setuptools](https://github.com/pypa/setuptools) from 67.6.0 to 70.0.0. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v67.6.0...v70.0.0) --- updated-dependencies: - dependency-name: setuptools dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> --- poetry.lock | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index d6ff132672..c9ac45a372 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1404,19 +1404,18 @@ setuptools = "*" [[package]] name = "setuptools" -version = "67.6.0" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "setuptools-67.6.0-py3-none-any.whl", hash = "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2"}, - {file = "setuptools-67.6.0.tar.gz", hash = "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shamir-mnemonic" From 4c10a4f643f95567c503aad06f4b0ece9c18e9be Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 5 Jul 2024 09:38:22 +0200 Subject: [PATCH 413/626] chore(core/rust): publish the ConcreteRenderer types for each renderer version we need them to be able to spell out a concrete type of the argument to `render()` --- .../rust/src/ui/shape/display/fake_display.rs | 2 +- core/embed/rust/src/ui/shape/display/fb_mono8.rs | 2 +- .../embed/rust/src/ui/shape/display/fb_rgb565.rs | 2 +- .../rust/src/ui/shape/display/fb_rgba8888.rs | 2 +- core/embed/rust/src/ui/shape/display/mod.rs | 16 ++++++++-------- .../rust/src/ui/shape/display/nofb_rgb565.rs | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/embed/rust/src/ui/shape/display/fake_display.rs b/core/embed/rust/src/ui/shape/display/fake_display.rs index 99a4dcd6f2..1840355593 100644 --- a/core/embed/rust/src/ui/shape/display/fake_display.rs +++ b/core/embed/rust/src/ui/shape/display/fake_display.rs @@ -3,7 +3,7 @@ use crate::ui::{ shape::{render::ScopedRenderer, DirectRenderer, Mono8Canvas, Viewport}, }; -type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Mono8Canvas<'alloc>>; +pub type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Mono8Canvas<'alloc>>; pub fn render_on_display<'env, F>(_viewport: Option<Viewport>, _bg_color: Option<Color>, _func: F) where diff --git a/core/embed/rust/src/ui/shape/display/fb_mono8.rs b/core/embed/rust/src/ui/shape/display/fb_mono8.rs index 713978f3db..42cd43fc29 100644 --- a/core/embed/rust/src/ui/shape/display/fb_mono8.rs +++ b/core/embed/rust/src/ui/shape/display/fb_mono8.rs @@ -10,7 +10,7 @@ use crate::trezorhal::display; use static_alloc::Bump; -type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Mono8Canvas<'alloc>>; +pub type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Mono8Canvas<'alloc>>; /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's diff --git a/core/embed/rust/src/ui/shape/display/fb_rgb565.rs b/core/embed/rust/src/ui/shape/display/fb_rgb565.rs index 8af5ebd79a..6c8600fee9 100644 --- a/core/embed/rust/src/ui/shape/display/fb_rgb565.rs +++ b/core/embed/rust/src/ui/shape/display/fb_rgb565.rs @@ -10,7 +10,7 @@ use super::bumps; use crate::trezorhal::display; -type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Rgb565Canvas<'alloc>>; +pub type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Rgb565Canvas<'alloc>>; /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's diff --git a/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs b/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs index e75941aadc..78975a198a 100644 --- a/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs +++ b/core/embed/rust/src/ui/shape/display/fb_rgba8888.rs @@ -10,7 +10,7 @@ use super::bumps; use crate::trezorhal::display; -type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Rgba8888Canvas<'alloc>>; +pub type ConcreteRenderer<'a, 'alloc> = DirectRenderer<'a, 'alloc, Rgba8888Canvas<'alloc>>; /// Creates the `Renderer` object for drawing on a display and invokes a /// user-defined function that takes a single argument `target`. The user's diff --git a/core/embed/rust/src/ui/shape/display/mod.rs b/core/embed/rust/src/ui/shape/display/mod.rs index f72561bebd..3da85bbf30 100644 --- a/core/embed/rust/src/ui/shape/display/mod.rs +++ b/core/embed/rust/src/ui/shape/display/mod.rs @@ -15,7 +15,7 @@ pub mod nofb_rgb565; #[cfg(not(feature = "new_rendering"))] mod _new_rendering { - pub use super::fake_display::render_on_display; + pub use super::fake_display::{render_on_display, ConcreteRenderer}; } #[cfg(feature = "new_rendering")] @@ -23,31 +23,31 @@ mod _new_rendering { #[cfg(not(feature = "xframebuffer"))] mod _xframebuffer { #[cfg(feature = "display_rgb565")] - pub use super::super::nofb_rgb565::render_on_display; + pub use super::super::nofb_rgb565::{render_on_display, ConcreteRenderer}; #[cfg(not(feature = "display_rgb565"))] - pub use super::super::fake_display::render_on_display; + pub use super::super::fake_display::{render_on_display, ConcreteRenderer}; } #[cfg(feature = "xframebuffer")] mod _xframebuffer { #[cfg(feature = "display_rgb565")] - pub use super::super::fb_rgb565::render_on_display; + pub use super::super::fb_rgb565::{render_on_display, ConcreteRenderer}; #[cfg(all(feature = "display_rgba8888", not(feature = "display_rgb565")))] - pub use super::super::fb_rgba8888::render_on_display; + pub use super::super::fb_rgba8888::{render_on_display, ConcreteRenderer}; #[cfg(all( feature = "display_mono", not(feature = "display_rgb565"), not(feature = "display_rgba8888") ))] - pub use super::super::fb_mono8::render_on_display; + pub use super::super::fb_mono8::{render_on_display, ConcreteRenderer}; } - pub use _xframebuffer::render_on_display; + pub use _xframebuffer::{render_on_display, ConcreteRenderer}; } -pub use _new_rendering::render_on_display; +pub use _new_rendering::{render_on_display, ConcreteRenderer}; pub use bumps::unlock_bumps_on_failure; diff --git a/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs b/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs index b2d372e6d8..36dc2f43d3 100644 --- a/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs +++ b/core/embed/rust/src/ui/shape/display/nofb_rgb565.rs @@ -17,7 +17,7 @@ use super::bumps; use static_alloc::Bump; -type ConcreteRenderer<'a, 'alloc> = +pub type ConcreteRenderer<'a, 'alloc> = ProgressiveRenderer<'a, 'alloc, Bump<[u8; bumps::BUMP_A_SIZE]>, DisplayCanvas>; /// Creates the `Renderer` object for drawing on a display and invokes a From 3fcb0acaffe34c88952a9ddda34e83e78d9eb62e Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 4 Jun 2024 14:49:11 +0200 Subject: [PATCH 414/626] refactor(core/rust): refactor SwipeFlow * remove SwipeStore in favor of Vec<dyn FlowComponent> * unify state and controllers * implement tighter coupling between controller/states and pages of the flow --- core/embed/rust/src/ui/flow/base.rs | 80 ++++- core/embed/rust/src/ui/flow/mod.rs | 2 - core/embed/rust/src/ui/flow/store.rs | 190 ---------- core/embed/rust/src/ui/flow/swipe.rs | 324 ++++++++++++------ core/embed/rust/src/ui/layout/obj.rs | 3 +- .../ui/model_mercury/flow/confirm_action.rs | 148 ++++---- .../ui/model_mercury/flow/confirm_output.rs | 104 +++--- .../flow/confirm_reset_create.rs | 68 ++-- .../flow/confirm_reset_recover.rs | 75 ++-- .../model_mercury/flow/confirm_set_new_pin.rs | 93 ++--- .../ui/model_mercury/flow/confirm_summary.rs | 110 +++--- .../src/ui/model_mercury/flow/get_address.rs | 154 +++------ .../ui/model_mercury/flow/prompt_backup.rs | 97 ++---- .../ui/model_mercury/flow/request_number.rs | 72 ++-- .../ui/model_mercury/flow/show_share_words.rs | 66 ++-- .../ui/model_mercury/flow/show_tutorial.rs | 118 +++---- .../ui/model_mercury/flow/warning_hi_prio.rs | 70 ++-- core/embed/rust/src/ui/shape/mod.rs | 4 +- 18 files changed, 748 insertions(+), 1030 deletions(-) delete mode 100644 core/embed/rust/src/ui/flow/store.rs diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index 6f25dbfdbe..a0e29c91cf 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -1,5 +1,4 @@ use crate::ui::component::{swipe_detect::SwipeConfig, SwipeDirection}; -use num_traits::ToPrimitive; pub trait Swipable { fn get_swipe_config(&self) -> SwipeConfig; @@ -22,20 +21,20 @@ pub enum FlowMsg { /// Composable event handler result. #[derive(Copy, Clone)] -pub enum Decision<Q> { +pub enum Decision { /// Do nothing, continue with processing next handler. Nothing, /// Initiate transition to another state, end event processing. /// NOTE: it might make sense to include Option<ButtonRequest> here - Goto(Q, SwipeDirection), + Transition(SwipeDirection), /// Yield a message to the caller of the flow (i.e. micropython), end event /// processing. Return(FlowMsg), } -impl<Q> Decision<Q> { +impl Decision { pub fn or_else(self, func: impl FnOnce() -> Self) -> Self { match self { Decision::Nothing => func(), @@ -44,24 +43,71 @@ impl<Q> Decision<Q> { } } +/// State transition type. +/// +/// Contains a new state (by convention it must be of the same concrete type as +/// the current one) and a Decision object that tells the flow what to do next. +pub type StateChange = (&'static dyn FlowState, Decision); + /// Encodes the flow logic as a set of states, and transitions between them /// triggered by events and swipes. -pub trait FlowState -where - Self: Sized + Copy + Eq + ToPrimitive, -{ - /// There needs to be a mapping from states to indices of the FlowStore - /// array. Default implementation works for states that are enums, the - /// FlowStore has to have number of elements equal to number of states. - fn index(&self) -> usize { - unwrap!(self.to_usize()) - } - +pub trait FlowState { /// What to do when user swipes on screen and current component doesn't /// respond to swipe of that direction. - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self>; + /// + /// By convention, the type of the new state inside the state change must be + /// Self. This can't be enforced by the type system unfortunately, because + /// this trait must remain object-safe and so can't refer to Self. + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange; /// What to do when the current component emits a message in response to an /// event. - fn handle_event(&self, msg: FlowMsg) -> Decision<Self>; + /// + /// By convention, the type of the new state inside the state change must be + /// Self. This can't be enforced by the type system unfortunately, because + /// this trait must remain object-safe and so can't refer to Self. + fn handle_event(&'static self, msg: FlowMsg) -> StateChange; + + /// Page index of the current state. + fn index(&'static self) -> usize; } + +/// Helper trait for writing nicer flow logic. +pub trait DecisionBuilder: FlowState + Sized { + #[inline] + fn swipe(&'static self, direction: SwipeDirection) -> StateChange { + (self, Decision::Transition(direction)) + } + + #[inline] + fn swipe_left(&'static self) -> StateChange { + self.swipe(SwipeDirection::Left) + } + + #[inline] + fn swipe_right(&'static self) -> StateChange { + self.swipe(SwipeDirection::Right) + } + + #[inline] + fn swipe_up(&'static self) -> StateChange { + self.swipe(SwipeDirection::Up) + } + + #[inline] + fn swipe_down(&'static self) -> StateChange { + self.swipe(SwipeDirection::Down) + } + + #[inline] + fn do_nothing(&'static self) -> StateChange { + (self, Decision::Nothing) + } + + #[inline] + fn return_msg(&'static self, msg: FlowMsg) -> StateChange { + (self, Decision::Return(msg)) + } +} + +impl<T: FlowState> DecisionBuilder for T {} diff --git a/core/embed/rust/src/ui/flow/mod.rs b/core/embed/rust/src/ui/flow/mod.rs index a165854797..0a7ca047eb 100644 --- a/core/embed/rust/src/ui/flow/mod.rs +++ b/core/embed/rust/src/ui/flow/mod.rs @@ -1,9 +1,7 @@ pub mod base; pub mod page; -mod store; mod swipe; pub use base::{FlowMsg, FlowState, Swipable}; pub use page::SwipePage; -pub use store::{flow_store, FlowStore}; pub use swipe::SwipeFlow; diff --git a/core/embed/rust/src/ui/flow/store.rs b/core/embed/rust/src/ui/flow/store.rs deleted file mode 100644 index 188eab5297..0000000000 --- a/core/embed/rust/src/ui/flow/store.rs +++ /dev/null @@ -1,190 +0,0 @@ -use crate::{ - error, - maybe_trace::MaybeTrace, - ui::{ - component::{Component, Event, EventCtx}, - flow::base::FlowMsg, - geometry::Rect, - shape::Renderer, - }, -}; - -use crate::{ - micropython::gc::Gc, - ui::{component::swipe_detect::SwipeConfig, flow::Swipable}, -}; - -/// `FlowStore` is essentially `Vec<Gc<dyn Component + SimpleSwipable>>` except -/// that `trait Component` is not object-safe so it ends up being a kind of -/// recursively-defined tuple. -/// Implementors are something like the V in MVC. -pub trait FlowStore { - /// Call `Component::place` on all elements. - fn place(&mut self, bounds: Rect) -> Rect; - - /// Call `Component::event` on i-th element. - fn event(&mut self, i: usize, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg>; - - /// Call `Component::render` on i-th element. - fn render<'s>(&'s self, i: usize, target: &mut impl Renderer<'s>); - - #[cfg(feature = "ui_debug")] - /// Call `Trace::trace` on i-th element. - fn trace(&self, i: usize, t: &mut dyn crate::trace::Tracer); - - /// Forward `SimpleSwipable` methods to i-th element. - fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T; - - fn get_swipe_config(&self, i: usize) -> SwipeConfig; - - fn get_internal_page_count(&mut self, i: usize) -> usize; - - /// Add a Component to the end of a `FlowStore`. - fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( - self, - elem: E, - ) -> Result<impl FlowStore, error::Error> - where - Self: Sized; -} - -/// Create new empty flow store. -pub fn flow_store() -> impl FlowStore { - FlowEmpty {} -} - -/// Terminating element of a recursive structure. -struct FlowEmpty; - -// Methods that take an index panic because it's always out of bounds. -impl FlowStore for FlowEmpty { - fn place(&mut self, bounds: Rect) -> Rect { - bounds - } - - fn event(&mut self, _i: usize, _ctx: &mut EventCtx, _event: Event) -> Option<FlowMsg> { - panic!() - } - - fn render<'s>(&self, _i: usize, _target: &mut impl Renderer<'s>) { - panic!() - } - - #[cfg(feature = "ui_debug")] - fn trace(&self, _i: usize, _t: &mut dyn crate::trace::Tracer) { - panic!() - } - - fn map_swipable<T>(&mut self, _i: usize, _func: impl FnOnce(&mut dyn Swipable) -> T) -> T { - panic!() - } - - fn add<E: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( - self, - elem: E, - ) -> Result<impl FlowStore, error::Error> - where - Self: Sized, - { - Ok(FlowComponent2 { - elem: Gc::new(elem)?, - next: Self, - }) - } - fn get_swipe_config(&self, _i: usize) -> SwipeConfig { - SwipeConfig::new() - } - fn get_internal_page_count(&mut self, _i: usize) -> usize { - 1 - } -} - -struct FlowComponent2<E: Component<Msg = FlowMsg>, P> { - /// Component allocated on micropython heap. - pub elem: Gc<E>, - - /// Nested FlowStore. - pub next: P, -} - -impl<E: Component<Msg = FlowMsg>, P> FlowComponent2<E, P> { - fn as_ref(&self) -> &E { - &self.elem - } - - fn as_mut(&mut self) -> &mut E { - // SAFETY: micropython can only access this object through LayoutObj which wraps - // us in a RefCell which guarantees uniqueness - unsafe { Gc::as_mut(&mut self.elem) } - } -} - -impl<E, P> FlowStore for FlowComponent2<E, P> -where - E: Component<Msg = FlowMsg> + MaybeTrace + Swipable, - P: FlowStore, -{ - fn place(&mut self, bounds: Rect) -> Rect { - self.as_mut().place(bounds); - self.next.place(bounds); - bounds - } - - fn event(&mut self, i: usize, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg> { - if i == 0 { - self.as_mut().event(ctx, event) - } else { - self.next.event(i - 1, ctx, event) - } - } - - fn render<'s>(&'s self, i: usize, target: &mut impl Renderer<'s>) { - if i == 0 { - self.as_ref().render(target) - } else { - self.next.render(i - 1, target) - } - } - - #[cfg(feature = "ui_debug")] - fn trace(&self, i: usize, t: &mut dyn crate::trace::Tracer) { - if i == 0 { - self.as_ref().trace(t) - } else { - self.next.trace(i - 1, t) - } - } - - fn map_swipable<T>(&mut self, i: usize, func: impl FnOnce(&mut dyn Swipable) -> T) -> T { - if i == 0 { - func(self.as_mut()) - } else { - self.next.map_swipable(i - 1, func) - } - } - - fn add<F: Component<Msg = FlowMsg> + MaybeTrace + Swipable>( - self, - elem: F, - ) -> Result<impl FlowStore, error::Error> - where - Self: Sized, - { - Ok(FlowComponent2 { - elem: self.elem, - next: self.next.add(elem)?, - }) - } - - fn get_swipe_config(&self, i: usize) -> SwipeConfig { - if i == 0 { - self.as_ref().get_swipe_config() - } else { - self.next.get_swipe_config(i - 1) - } - } - - fn get_internal_page_count(&mut self, i: usize) -> usize { - self.map_swipable(i, |swipable| swipable.get_internal_page_count()) - } -} diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 1ec8a80105..3966819114 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -1,29 +1,103 @@ use crate::{ - error, + error::{self, Error}, + maybe_trace::MaybeTrace, + micropython::{ + gc::{self, GcBox}, + obj::Obj, + }, ui::{ component::{ base::AttachType, swipe_detect::SwipeSettings, Component, Event, EventCtx, SwipeDetect, SwipeDetectMsg, SwipeDirection, }, + display::Color, event::{SwipeEvent, TouchEvent}, - flow::{base::Decision, FlowMsg, FlowState, FlowStore}, + flow::{base::Decision, FlowMsg, FlowState}, geometry::Rect, - shape::Renderer, + layout::obj::ObjComponent, + shape::{render_on_display, ConcreteRenderer, Renderer, ScopedRenderer}, util::animation_disabled, }, }; -/// Given a state enum and a corresponding FlowStore, create a Component that -/// implements a swipe navigation between the states with animated transitions. +use super::{base::StateChange, Swipable}; + +use heapless::Vec; + +/// Component-like proto-object-safe trait. +/// +/// This copies the Component interface, but it is parametrized by a concrete +/// Renderer type, making it object-safe. +pub trait FlowComponentTrait<'s, R: Renderer<'s>>: Swipable { + fn place(&mut self, bounds: Rect) -> Rect; + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg>; + fn render(&'s self, target: &mut R); + + #[cfg(feature = "ui_debug")] + fn trace(&self, t: &mut dyn crate::trace::Tracer); +} + +/// FlowComponentTrait implementation for Components. +/// +/// Components implementing FlowComponentTrait must: +/// * also implement Swipable, required by FlowComponentTrait, +/// * use FlowMsg as their Msg type, +/// * implement MaybeTrace to be able to conform to ObjComponent. +impl<'s, R, C> FlowComponentTrait<'s, R> for C +where + C: Component<Msg = FlowMsg> + MaybeTrace + Swipable, + R: Renderer<'s>, +{ + fn place(&mut self, bounds: Rect) -> Rect { + <Self as Component>::place(self, bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg> { + <Self as Component>::event(self, ctx, event) + } + + fn render(&'s self, target: &mut R) { + <Self as Component>::render(self, target) + } + + #[cfg(feature = "ui_debug")] + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + <Self as crate::trace::Trace>::trace(self, t) + } +} + +/// Shortcut type for the concrete renderer passed into `render()` method. +type RendererImpl<'a, 'alloc, 'env> = ScopedRenderer<'alloc, 'env, ConcreteRenderer<'a, 'alloc>>; + +/// Fully object-safe component-like trait for flow components. +/// +/// This trait has no generic parameters: +/// * it is instantiated with a concrete Renderer type, and +/// * it requires the `FlowComponentTrait` trait to be implemented for _any_ +/// lifetimes. +pub trait FlowComponentDynTrait: + for<'a, 'alloc, 'env> FlowComponentTrait<'alloc, RendererImpl<'a, 'alloc, 'env>> +{ +} + +impl<T> FlowComponentDynTrait for T where + T: for<'a, 'alloc, 'env> FlowComponentTrait<'alloc, RendererImpl<'a, 'alloc, 'env>> +{ +} + +/// Swipe flow consisting of multiple screens. +/// +/// Implements swipe navigation between the states with animated transitions, +/// based on state transitions provided by the FlowState type. /// /// If a swipe is detected: /// - currently active component is asked to handle the event, /// - if it can't then FlowState::handle_swipe is consulted. -pub struct SwipeFlow<Q, S> { - /// Current state. - state: Q, - /// FlowStore with all screens/components. - store: S, +pub struct SwipeFlow { + /// Current state of the flow. + state: &'static dyn FlowState, + /// Store of all screens which are part of the flow. + store: Vec<GcBox<dyn FlowComponentDynTrait>, 10>, /// Swipe detector. swipe: SwipeDetect, /// Swipe allowed @@ -34,33 +108,53 @@ pub struct SwipeFlow<Q, S> { internal_pages: u16, /// If triggering swipe by event, make this decision instead of default /// after the swipe. - decision_override: Option<Decision<Q>>, + decision_override: Option<StateChange>, } -impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { - pub fn new(init: Q, store: S) -> Result<Self, error::Error> { +impl SwipeFlow { + pub fn new(initial_state: &'static dyn FlowState) -> Result<Self, error::Error> { Ok(Self { - state: init, + state: initial_state, swipe: SwipeDetect::new(), - store, + store: Vec::new(), allow_swipe: true, internal_state: 0, internal_pages: 1, decision_override: None, }) } - fn goto(&mut self, ctx: &mut EventCtx, direction: SwipeDirection, state: Q) { - self.state = state; + + /// Add a page to the flow. + /// + /// Pages must be inserted in the order of the flow state index. + pub fn with_page( + mut self, + state: &'static dyn FlowState, + page: impl FlowComponentDynTrait + 'static, + ) -> Result<Self, error::Error> { + debug_assert!(self.store.len() == state.index()); + let alloc = GcBox::new(page)?; + let page = gc::coerce!(FlowComponentDynTrait, alloc); + unwrap!(self.store.push(page)); + Ok(self) + } + + fn current_page(&self) -> &GcBox<dyn FlowComponentDynTrait> { + &self.store[self.state.index()] + } + + fn current_page_mut(&mut self) -> &mut GcBox<dyn FlowComponentDynTrait> { + &mut self.store[self.state.index()] + } + + fn goto(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) { self.swipe = SwipeDetect::new(); self.allow_swipe = true; - self.store.event( - state.index(), - ctx, - Event::Attach(AttachType::Swipe(direction)), - ); + self.current_page_mut() + .event(ctx, Event::Attach(AttachType::Swipe(direction))); - self.internal_pages = self.store.get_internal_page_count(state.index()) as u16; + self.internal_pages = self.current_page_mut().get_internal_page_count() as u16; match direction { SwipeDirection::Up => { @@ -75,46 +169,43 @@ impl<Q: FlowState, S: FlowStore> SwipeFlow<Q, S> { ctx.request_paint(); } - fn render_state<'s>(&'s self, state: Q, target: &mut impl Renderer<'s>) { - self.store.render(state.index(), target) + fn render_state<'s>(&'s self, state: usize, target: &mut RendererImpl<'_, 's, '_>) { + self.store[state].render(target); } fn handle_swipe_child( &mut self, _ctx: &mut EventCtx, direction: SwipeDirection, - ) -> Decision<Q> { + ) -> StateChange { self.state.handle_swipe(direction) } - fn handle_event_child(&mut self, ctx: &mut EventCtx, event: Event) -> Decision<Q> { - let msg = self.store.event(self.state.index(), ctx, event); + fn handle_event_child(&mut self, ctx: &mut EventCtx, event: Event) -> StateChange { + let msg = self.current_page_mut().event(ctx, event); if let Some(msg) = msg { self.state.handle_event(msg) } else { - Decision::Nothing + (self.state, Decision::Nothing) } } -} -impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { - type Msg = FlowMsg; - - fn place(&mut self, bounds: Rect) -> Rect { - self.store.place(bounds) + fn state_unchanged(&self) -> StateChange { + (self.state, Decision::Nothing) } - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - let mut decision: Decision<Q> = Decision::Nothing; + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<FlowMsg> { + let mut state_change = self.state_unchanged(); let mut return_transition: AttachType = AttachType::Initial; let mut attach = false; let e = if self.allow_swipe { - let mut config = self.store.get_swipe_config(self.state.index()); + let page = self.current_page(); + let mut config = page.get_swipe_config(); - self.internal_pages = self.store.get_internal_page_count(self.state.index()) as u16; + self.internal_pages = page.get_internal_page_count() as u16; // add additional swipe directions if there are more internal pages // todo can we get internal settings from config somehow? @@ -135,9 +226,9 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { match self.swipe.event(ctx, event, config) { Some(SwipeDetectMsg::Trigger(dir)) => { if let Some(override_decision) = self.decision_override.take() { - decision = override_decision; + state_change = override_decision; } else { - decision = self.handle_swipe_child(ctx, dir); + state_change = self.handle_swipe_child(ctx, dir); } return_transition = AttachType::Swipe(dir); @@ -148,11 +239,11 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { let current_state = self.internal_state; if dir == SwipeDirection::Left && current_state < states_num - 1 { self.internal_state += 1; - decision = Decision::Nothing; + state_change = self.state_unchanged(); attach = true; } else if dir == SwipeDirection::Right && current_state > 0 { self.internal_state -= 1; - decision = Decision::Nothing; + state_change = self.state_unchanged(); attach = true; } } @@ -160,77 +251,75 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { let current_state = self.internal_state; if dir == SwipeDirection::Up && current_state < states_num - 1 { self.internal_state += 1; - decision = Decision::Nothing; + state_change = self.state_unchanged(); attach = true; } else if dir == SwipeDirection::Down && current_state > 0 { self.internal_state -= 1; - decision = Decision::Nothing; + state_change = self.state_unchanged(); attach = true; } } } - Some(Event::Swipe(SwipeEvent::End(dir))) + Event::Swipe(SwipeEvent::End(dir)) } Some(SwipeDetectMsg::Move(dir, progress)) => { - Some(Event::Swipe(SwipeEvent::Move(dir, progress as i16))) + Event::Swipe(SwipeEvent::Move(dir, progress as i16)) } - Some(SwipeDetectMsg::Start(_)) => Some(Event::Touch(TouchEvent::TouchAbort)), - _ => Some(event), + Some(SwipeDetectMsg::Start(_)) => Event::Touch(TouchEvent::TouchAbort), + _ => event, } } else { - Some(event) + event }; - if let Some(e) = e { - match decision { - Decision::Nothing => { - decision = self.handle_event_child(ctx, e); - - // when doing internal transition, pass attach event to the child after sending - // swipe end. - if attach { - if let Event::Swipe(SwipeEvent::End(dir)) = e { - self.store.event( - self.state.index(), - ctx, - Event::Attach(AttachType::Swipe(dir)), - ); - } - } + match state_change { + (_, Decision::Nothing) => { + state_change = self.handle_event_child(ctx, e); - if ctx.disable_swipe_requested() { - self.swipe.reset(); - self.allow_swipe = false; + // when doing internal transition, pass attach event to the child after sending + // swipe end. + if attach { + if let Event::Swipe(SwipeEvent::End(dir)) = e { + self.current_page_mut() + .event(ctx, Event::Attach(AttachType::Swipe(dir))); } - if ctx.enable_swipe_requested() { - self.swipe.reset(); - self.allow_swipe = true; - }; + } - let config = self.store.get_swipe_config(self.state.index()); + if ctx.disable_swipe_requested() { + self.swipe.reset(); + self.allow_swipe = false; + } + if ctx.enable_swipe_requested() { + self.swipe.reset(); + self.allow_swipe = true; + }; - if let Decision::Goto(_, direction) = decision { - if config.is_allowed(direction) { - if !animation_disabled() { - self.swipe.trigger(ctx, direction, config); - self.decision_override = Some(decision); - decision = Decision::Nothing; - } - self.allow_swipe = true; + let config = self.current_page().get_swipe_config(); + + if let (_, Decision::Transition(direction)) = state_change { + if config.is_allowed(direction) { + if !animation_disabled() { + self.swipe.trigger(ctx, direction, config); + self.decision_override = Some(state_change); + state_change = self.state_unchanged(); } + self.allow_swipe = true; } } - _ => { - //ignore message, we are already transitioning - self.store.event(self.state.index(), ctx, event); - } + } + _ => { + //ignore message, we are already transitioning + self.current_page_mut().event(ctx, event); } } + let (new_state, decision) = state_change; + self.state = new_state; match decision { - Decision::Goto(next_state, direction) => { - self.goto(ctx, direction, next_state); + Decision::Transition(direction) => { + self.state = new_state; + self.goto(ctx, direction); None } Decision::Return(msg) => { @@ -242,34 +331,49 @@ impl<Q: FlowState, S: FlowStore> Component for SwipeFlow<Q, S> { _ => None, } } - - fn paint(&mut self) {} - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.render_state(self.state, target); - } } -#[cfg(feature = "ui_debug")] -impl<Q: FlowState, S: FlowStore> crate::trace::Trace for SwipeFlow<Q, S> { - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - self.store.trace(self.state.index(), t) +/// ObjComponent implementation for SwipeFlow. +/// +/// Instead of using the generic `impl ObjComponent for ComponentMsgObj`, we +/// provide our own short-circuit implementation for `SwipeFlow`. This way we +/// can completely avoid implementing `Component`. That also allows us to pass +/// around concrete Renderers instead of having to conform to `Component`'s +/// not-object-safe interface. +/// +/// This implementation relies on the fact that swipe components always return +/// `FlowMsg` as their `Component::Msg` (provided by `impl FlowComponentTrait` +/// earlier in this file). +#[cfg(feature = "micropython")] +impl ObjComponent for SwipeFlow { + fn obj_place(&mut self, bounds: Rect) -> Rect { + for elem in self.store.iter_mut() { + elem.place(bounds); + } + bounds } -} -#[cfg(feature = "micropython")] -impl<Q: FlowState, S: FlowStore> crate::ui::layout::obj::ComponentMsgObj for SwipeFlow<Q, S> { - fn msg_try_into_obj( - &self, - msg: Self::Msg, - ) -> Result<crate::micropython::obj::Obj, error::Error> { - match msg { - FlowMsg::Confirmed => Ok(crate::ui::layout::result::CONFIRMED.as_obj()), - FlowMsg::Cancelled => Ok(crate::ui::layout::result::CANCELLED.as_obj()), - FlowMsg::Info => Ok(crate::ui::layout::result::INFO.as_obj()), - FlowMsg::Choice(i) => { + fn obj_event(&mut self, ctx: &mut EventCtx, event: Event) -> Result<Obj, Error> { + match self.event(ctx, event) { + None => Ok(Obj::const_none()), + Some(FlowMsg::Confirmed) => Ok(crate::ui::layout::result::CONFIRMED.as_obj()), + Some(FlowMsg::Cancelled) => Ok(crate::ui::layout::result::CANCELLED.as_obj()), + Some(FlowMsg::Info) => Ok(crate::ui::layout::result::INFO.as_obj()), + Some(FlowMsg::Choice(i)) => { Ok((crate::ui::layout::result::CONFIRMED.as_obj(), i.try_into()?).try_into()?) } } } + fn obj_paint(&mut self) { + render_on_display(None, Some(Color::black()), |target| { + self.render_state(self.state.index(), target); + }); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for SwipeFlow { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.current_page().trace(t) + } } diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index c81124b90f..665b903bac 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -319,8 +319,7 @@ impl LayoutObjInner { impl LayoutObj { /// Create a new `LayoutObj`, wrapping a root component. - #[inline(never)] - pub fn new(root: impl ComponentMsgObj + MaybeTrace + 'static) -> Result<Gc<Self>, Error> { + pub fn new(root: impl ObjComponent + 'static) -> Result<Gc<Self>, Error> { // SAFETY: This is a Python object and hase a base as first element unsafe { Gc::new_with_custom_finaliser(Self { diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index ce29e42bac..724e162b66 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -1,123 +1,101 @@ use crate::{ error, maybe_trace::MaybeTrace, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ - component::{text::paragraphs::Paragraph, ComponentExt, SwipeDirection}, - flow::{base::Decision, FlowMsg, FlowState, FlowStore}, + component::{ + swipe_detect::SwipeSettings, + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, VecExt}, + Component, ComponentExt, Paginate, SwipeDirection, + }, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, SwipePage, + }, + layout::obj::LayoutObj, }, }; use super::super::{ - component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + component::{Frame, FrameMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg}, theme, }; // TODO: merge with code from https://github.com/trezor/trezor-firmware/pull/3805 // when ready -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmAction { Intro, Menu, Confirm, } -/// ConfirmAction flow without a separate "Tap to confirm" or "Hold to confirm" -/// screen. Swiping up directly from the intro screen confirms action. -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] -pub enum ConfirmActionSimple { - Intro, - Menu, -} - impl FlowState for ConfirmAction { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (ConfirmAction::Intro, SwipeDirection::Left) => { - Decision::Goto(ConfirmAction::Menu, direction) - } - (ConfirmAction::Menu, SwipeDirection::Right) => { - Decision::Goto(ConfirmAction::Intro, direction) - } - (ConfirmAction::Intro, SwipeDirection::Up) => { - Decision::Goto(ConfirmAction::Confirm, direction) - } - (ConfirmAction::Confirm, SwipeDirection::Down) => { - Decision::Goto(ConfirmAction::Intro, direction) - } - (ConfirmAction::Confirm, SwipeDirection::Left) => { - Decision::Goto(ConfirmAction::Menu, direction) - } - _ => Decision::Nothing, + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::Intro, SwipeDirection::Up) => Self::Confirm.swipe(direction), + (Self::Confirm, SwipeDirection::Down) => Self::Intro.swipe(direction), + (Self::Confirm, SwipeDirection::Left) => Self::Menu.swipe(direction), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (ConfirmAction::Intro, FlowMsg::Info) => { - Decision::Goto(ConfirmAction::Menu, SwipeDirection::Left) - } - (ConfirmAction::Menu, FlowMsg::Cancelled) => { - Decision::Goto(ConfirmAction::Intro, SwipeDirection::Right) - } - (ConfirmAction::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), - (ConfirmAction::Menu, FlowMsg::Choice(1)) => Decision::Return(FlowMsg::Info), - (ConfirmAction::Confirm, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Confirmed), - (ConfirmAction::Confirm, FlowMsg::Info) => { - Decision::Goto(ConfirmAction::Menu, SwipeDirection::Left) - } - _ => Decision::Nothing, + (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + (Self::Menu, FlowMsg::Choice(1)) => self.return_msg(FlowMsg::Info), + (Self::Confirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), + (Self::Confirm, FlowMsg::Info) => Self::Menu.swipe_left(), + _ => self.do_nothing(), } } } +/// ConfirmAction flow without a separate "Tap to confirm" or "Hold to confirm" +/// screen. Swiping up directly from the intro screen confirms action. +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ConfirmActionSimple { + Intro, + Menu, +} + impl FlowState for ConfirmActionSimple { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (ConfirmActionSimple::Intro, SwipeDirection::Left) => { - Decision::Goto(ConfirmActionSimple::Menu, direction) - } - (ConfirmActionSimple::Menu, SwipeDirection::Right) => { - Decision::Goto(ConfirmActionSimple::Intro, direction) - } - (ConfirmActionSimple::Intro, SwipeDirection::Up) => { - Decision::Return(FlowMsg::Confirmed) - } - _ => Decision::Nothing, + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::Intro, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (ConfirmActionSimple::Intro, FlowMsg::Info) => { - Decision::Goto(ConfirmActionSimple::Menu, SwipeDirection::Left) - } - (ConfirmActionSimple::Menu, FlowMsg::Cancelled) => { - Decision::Goto(ConfirmActionSimple::Intro, SwipeDirection::Right) - } - (ConfirmActionSimple::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), - (ConfirmActionSimple::Menu, FlowMsg::Choice(1)) => Decision::Return(FlowMsg::Info), - _ => Decision::Nothing, + (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + (Self::Menu, FlowMsg::Choice(1)) => self.return_msg(FlowMsg::Info), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, qstr::Qstr, util}, - ui::{ - component::{ - swipe_detect::SwipeSettings, - text::paragraphs::{ParagraphSource, ParagraphVecShort, VecExt}, - Component, Paginate, - }, - flow::{flow_store, SwipeFlow, SwipePage}, - layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, new_confirm_action_obj) } @@ -248,15 +226,15 @@ pub fn new_confirm_action_uni<T: Component + MaybeTrace + 'static>( FrameMsg::Button(_) => Some(FlowMsg::Info), }); - let store = flow_store() - .add(content_intro)? - .add(content_menu)? - .add(content_confirm)?; - let res = SwipeFlow::new(ConfirmAction::Intro, store)?; + let res = SwipeFlow::new(&ConfirmAction::Intro)? + .with_page(&ConfirmAction::Intro, content_intro)? + .with_page(&ConfirmAction::Menu, content_menu)? + .with_page(&ConfirmAction::Confirm, content_confirm)?; Ok(LayoutObj::new(res)?.into()) } else { - let store = flow_store().add(content_intro)?.add(content_menu)?; - let res = SwipeFlow::new(ConfirmActionSimple::Intro, store)?; + let res = SwipeFlow::new(&ConfirmActionSimple::Intro)? + .with_page(&ConfirmActionSimple::Intro, content_intro)? + .with_page(&ConfirmActionSimple::Menu, content_menu)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index 12caa1a217..a8b612364c 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -1,25 +1,31 @@ use crate::{ error, - micropython::qstr::Qstr, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ button_request::ButtonRequest, - component::{ButtonRequestExt, ComponentExt, SwipeDirection}, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + component::{swipe_detect::SwipeSettings, ButtonRequestExt, ComponentExt, SwipeDirection}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; -use super::super::{ - component::{ - AddressDetails, Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, +use super::{ + super::{ + component::{ + AddressDetails, Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + }, + theme, }, - theme, + util::ConfirmBlobParams, }; -use super::util::ConfirmBlobParams; - -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmOutput { Address, Amount, @@ -30,58 +36,39 @@ pub enum ConfirmOutput { } impl FlowState for ConfirmOutput { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (ConfirmOutput::Address | ConfirmOutput::Amount, SwipeDirection::Left) => { - Decision::Goto(ConfirmOutput::Menu, direction) - } - (ConfirmOutput::Address, SwipeDirection::Up) => { - Decision::Goto(ConfirmOutput::Amount, direction) - } - (ConfirmOutput::Amount, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), - (ConfirmOutput::Amount, SwipeDirection::Down) => { - Decision::Goto(ConfirmOutput::Address, direction) - } - (ConfirmOutput::Menu, SwipeDirection::Right) => { - Decision::Goto(ConfirmOutput::Address, direction) - } - (ConfirmOutput::Menu, SwipeDirection::Left) => { - Decision::Goto(ConfirmOutput::AccountInfo, direction) - } - (ConfirmOutput::AccountInfo | ConfirmOutput::CancelTap, SwipeDirection::Right) => { - Decision::Goto(ConfirmOutput::Menu, direction) + (Self::Address | Self::Amount, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Address, SwipeDirection::Up) => Self::Amount.swipe(direction), + (Self::Amount, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + (Self::Amount, SwipeDirection::Down) => Self::Address.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Address.swipe(direction), + (Self::Menu, SwipeDirection::Left) => Self::AccountInfo.swipe(direction), + (Self::AccountInfo | Self::CancelTap, SwipeDirection::Right) => { + Self::Menu.swipe(direction) } - _ => Decision::Nothing, + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (_, FlowMsg::Info) => Decision::Goto(ConfirmOutput::Menu, SwipeDirection::Left), - (ConfirmOutput::Menu, FlowMsg::Choice(0)) => { - Decision::Goto(ConfirmOutput::AccountInfo, SwipeDirection::Left) - } - (ConfirmOutput::Menu, FlowMsg::Choice(1)) => { - Decision::Goto(ConfirmOutput::CancelTap, SwipeDirection::Left) - } - (ConfirmOutput::Menu, FlowMsg::Cancelled) => { - Decision::Goto(ConfirmOutput::Address, SwipeDirection::Right) - } - (ConfirmOutput::CancelTap, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Cancelled), - (_, FlowMsg::Cancelled) => Decision::Goto(ConfirmOutput::Menu, SwipeDirection::Right), - _ => Decision::Nothing, + (_, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Choice(0)) => Self::AccountInfo.swipe_left(), + (Self::Menu, FlowMsg::Choice(1)) => Self::CancelTap.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Address.swipe_right(), + (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), + (_, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::{ - component::swipe_detect::SwipeSettings, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_output(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmOutput::new_obj) } @@ -156,13 +143,12 @@ impl ConfirmOutput { FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - let store = flow_store() - .add(content_address)? - .add(content_amount)? - .add(content_menu)? - .add(content_account)? - .add(content_cancel_tap)?; - let res = SwipeFlow::new(ConfirmOutput::Address, store)?; + let res = SwipeFlow::new(&ConfirmOutput::Address)? + .with_page(&ConfirmOutput::Address, content_address)? + .with_page(&ConfirmOutput::Amount, content_amount)? + .with_page(&ConfirmOutput::Menu, content_menu)? + .with_page(&ConfirmOutput::AccountInfo, content_account)? + .with_page(&ConfirmOutput::CancelTap, content_cancel_tap)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index e02ba7c28e..513f740d39 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -10,7 +10,10 @@ use crate::{ text::paragraphs::{Paragraph, Paragraphs}, ButtonRequestExt, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, layout::obj::LayoutObj, model_mercury::component::{PromptScreen, SwipeContent}, }, @@ -21,7 +24,7 @@ use super::super::{ theme, }; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmResetCreate { Intro, Menu, @@ -29,43 +32,30 @@ pub enum ConfirmResetCreate { } impl FlowState for ConfirmResetCreate { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (ConfirmResetCreate::Intro, SwipeDirection::Left) => { - Decision::Goto(ConfirmResetCreate::Menu, direction) - } - (ConfirmResetCreate::Intro, SwipeDirection::Up) => { - Decision::Goto(ConfirmResetCreate::Confirm, direction) - } - (ConfirmResetCreate::Menu, SwipeDirection::Right) => { - Decision::Goto(ConfirmResetCreate::Intro, direction) - } - (ConfirmResetCreate::Confirm, SwipeDirection::Down) => { - Decision::Goto(ConfirmResetCreate::Intro, direction) - } - (ConfirmResetCreate::Confirm, SwipeDirection::Left) => { - Decision::Goto(ConfirmResetCreate::Menu, direction) - } - _ => Decision::Nothing, + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Intro, SwipeDirection::Up) => Self::Confirm.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::Confirm, SwipeDirection::Down) => Self::Intro.swipe(direction), + (Self::Confirm, SwipeDirection::Left) => Self::Menu.swipe(direction), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (ConfirmResetCreate::Intro, FlowMsg::Info) => { - Decision::Goto(ConfirmResetCreate::Menu, SwipeDirection::Left) - } - (ConfirmResetCreate::Menu, FlowMsg::Cancelled) => { - Decision::Goto(ConfirmResetCreate::Intro, SwipeDirection::Right) - } - (ConfirmResetCreate::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), - (ConfirmResetCreate::Confirm, FlowMsg::Confirmed) => { - Decision::Return(FlowMsg::Confirmed) - } - (ConfirmResetCreate::Confirm, FlowMsg::Info) => { - Decision::Goto(ConfirmResetCreate::Menu, SwipeDirection::Left) - } - _ => Decision::Nothing, + (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + (Self::Confirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), + (Self::Confirm, FlowMsg::Info) => Self::Menu.swipe_left(), + _ => self.do_nothing(), } } } @@ -124,12 +114,10 @@ impl ConfirmResetCreate { }) .one_button_request(ButtonRequestCode::ResetDevice.with_type("confirm_setup_device")); - let store = flow_store() - .add(content_intro)? - .add(content_menu)? - .add(content_confirm)?; - - let res = SwipeFlow::new(ConfirmResetCreate::Intro, store)?; + let res = SwipeFlow::new(&ConfirmResetCreate::Intro)? + .with_page(&ConfirmResetCreate::Intro, content_intro)? + .with_page(&ConfirmResetCreate::Menu, content_menu)? + .with_page(&ConfirmResetCreate::Confirm, content_confirm)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs index 4a76b3e6c3..97ce967e28 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs @@ -1,13 +1,20 @@ use crate::{ error, + micropython::{map::Map, obj::Obj, util}, translations::TR, ui::{ button_request::ButtonRequestCode, component::{ + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, Paragraphs}, ButtonRequestExt, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; @@ -16,51 +23,37 @@ use super::super::{ theme, }; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmResetRecover { Intro, Menu, } impl FlowState for ConfirmResetRecover { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (ConfirmResetRecover::Intro, SwipeDirection::Left) => { - Decision::Goto(ConfirmResetRecover::Menu, direction) - } - (ConfirmResetRecover::Menu, SwipeDirection::Right) => { - Decision::Goto(ConfirmResetRecover::Intro, direction) - } - (ConfirmResetRecover::Intro, SwipeDirection::Up) => { - Decision::Return(FlowMsg::Confirmed) - } - _ => Decision::Nothing, + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::Intro, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (ConfirmResetRecover::Intro, FlowMsg::Info) => { - Decision::Goto(ConfirmResetRecover::Menu, SwipeDirection::Left) - } - (ConfirmResetRecover::Menu, FlowMsg::Cancelled) => { - Decision::Goto(ConfirmResetRecover::Intro, SwipeDirection::Right) - } - (ConfirmResetRecover::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), - _ => Decision::Nothing, + (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::{ - component::swipe_detect::SwipeSettings, - layout::obj::LayoutObj, - model_mercury::component::{PromptScreen, SwipeContent}, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_reset_recover( n_args: usize, @@ -104,23 +97,9 @@ impl ConfirmResetRecover { FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - let content_confirm = Frame::left_aligned( - TR::reset__title_create_wallet.into(), - SwipeContent::new(PromptScreen::new_hold_to_confirm()), - ) - .with_footer(TR::instructions__hold_to_confirm.into(), None) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) - .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), - _ => Some(FlowMsg::Cancelled), - }); - - let store = flow_store() - .add(content_intro)? - .add(content_menu)? - .add(content_confirm)?; - - let res = SwipeFlow::new(ConfirmResetRecover::Intro, store)?; + let res = SwipeFlow::new(&ConfirmResetRecover::Intro)? + .with_page(&ConfirmResetRecover::Intro, content_intro)? + .with_page(&ConfirmResetRecover::Menu, content_menu)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs index d7d459b9ec..8d8923adab 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs @@ -1,14 +1,20 @@ use crate::{ error, - micropython::qstr::Qstr, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ component::{ + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, Paragraphs}, ComponentExt, SwipeDirection, }, - flow::{base::Decision, FlowMsg, FlowState, FlowStore}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; @@ -19,7 +25,7 @@ use super::super::{ theme, }; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum SetNewPin { Intro, Menu, @@ -28,63 +34,37 @@ pub enum SetNewPin { } impl FlowState for SetNewPin { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { - match (self, direction) { - (SetNewPin::Intro, SwipeDirection::Left) => Decision::Goto(SetNewPin::Menu, direction), - (SetNewPin::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), + #[inline] + fn index(&'static self) -> usize { + *self as usize + } - (SetNewPin::Menu, SwipeDirection::Right) => Decision::Goto(SetNewPin::Intro, direction), - (SetNewPin::CancelPinIntro, SwipeDirection::Up) => { - Decision::Goto(SetNewPin::CancelPinConfirm, direction) - } - (SetNewPin::CancelPinIntro, SwipeDirection::Right) => { - Decision::Goto(SetNewPin::Intro, direction) - } - (SetNewPin::CancelPinConfirm, SwipeDirection::Down) => { - Decision::Goto(SetNewPin::CancelPinIntro, direction) - } - (SetNewPin::CancelPinConfirm, SwipeDirection::Right) => { - Decision::Goto(SetNewPin::Intro, direction) - } - _ => Decision::Nothing, + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Intro, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::CancelPinIntro, SwipeDirection::Up) => Self::CancelPinConfirm.swipe(direction), + (Self::CancelPinIntro, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::CancelPinConfirm, SwipeDirection::Down) => Self::CancelPinIntro.swipe(direction), + (Self::CancelPinConfirm, SwipeDirection::Right) => Self::Intro.swipe(direction), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (SetNewPin::Intro, FlowMsg::Info) => { - Decision::Goto(SetNewPin::Menu, SwipeDirection::Left) - } - (SetNewPin::Menu, FlowMsg::Choice(0)) => { - Decision::Goto(SetNewPin::CancelPinIntro, SwipeDirection::Left) - } - (SetNewPin::Menu, FlowMsg::Cancelled) => { - Decision::Goto(SetNewPin::Intro, SwipeDirection::Right) - } - (SetNewPin::CancelPinIntro, FlowMsg::Cancelled) => { - Decision::Goto(SetNewPin::Intro, SwipeDirection::Right) - } - (SetNewPin::CancelPinConfirm, FlowMsg::Cancelled) => { - Decision::Goto(SetNewPin::CancelPinIntro, SwipeDirection::Right) - } - (SetNewPin::CancelPinConfirm, FlowMsg::Confirmed) => { - Decision::Return(FlowMsg::Cancelled) - } - _ => Decision::Nothing, + (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Choice(0)) => Self::CancelPinIntro.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::CancelPinIntro, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::CancelPinConfirm, FlowMsg::Cancelled) => Self::CancelPinIntro.swipe_right(), + (Self::CancelPinConfirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::{ - component::swipe_detect::SwipeSettings, - flow::{flow_store, SwipeFlow}, - layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_set_new_pin(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, SetNewPin::new_obj) } @@ -155,12 +135,11 @@ impl SetNewPin { _ => None, }); - let store = flow_store() - .add(content_intro)? - .add(content_menu)? - .add(content_cancel_intro)? - .add(content_cancel_confirm)?; - let res = SwipeFlow::new(SetNewPin::Intro, store)?; + let res = SwipeFlow::new(&SetNewPin::Intro)? + .with_page(&SetNewPin::Intro, content_intro)? + .with_page(&SetNewPin::Menu, content_menu)? + .with_page(&SetNewPin::CancelPinIntro, content_cancel_intro)? + .with_page(&SetNewPin::CancelPinConfirm, content_cancel_confirm)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index 55ec755a58..6fee0ae4a6 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -1,23 +1,29 @@ use crate::{ error, - micropython::{iter::IterBuf, qstr::Qstr}, + micropython::{iter::IterBuf, map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ button_request::ButtonRequest, - component::{ButtonRequestExt, ComponentExt, SwipeDirection}, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + component::{swipe_detect::SwipeSettings, ButtonRequestExt, ComponentExt, SwipeDirection}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; -use super::super::{ - component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, - theme, +use super::{ + super::{ + component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + theme, + }, + util::ShowInfoParams, }; -use super::util::ShowInfoParams; - -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmSummary { Summary, Hold, @@ -28,62 +34,40 @@ pub enum ConfirmSummary { } impl FlowState for ConfirmSummary { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (ConfirmSummary::Summary | ConfirmSummary::Hold, SwipeDirection::Left) => { - Decision::Goto(ConfirmSummary::Menu, direction) + (Self::Summary | Self::Hold, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Summary, SwipeDirection::Up) => Self::Hold.swipe(direction), + (Self::Hold, SwipeDirection::Down) => Self::Summary.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Summary.swipe(direction), + (Self::Menu, SwipeDirection::Left) => Self::FeeInfo.swipe(direction), + (Self::AccountInfo | Self::FeeInfo | Self::CancelTap, SwipeDirection::Right) => { + Self::Menu.swipe(direction) } - (ConfirmSummary::Summary, SwipeDirection::Up) => { - Decision::Goto(ConfirmSummary::Hold, direction) - } - (ConfirmSummary::Hold, SwipeDirection::Down) => { - Decision::Goto(ConfirmSummary::Summary, direction) - } - (ConfirmSummary::Menu, SwipeDirection::Right) => { - Decision::Goto(ConfirmSummary::Summary, direction) - } - (ConfirmSummary::Menu, SwipeDirection::Left) => { - Decision::Goto(ConfirmSummary::FeeInfo, direction) - } - ( - ConfirmSummary::AccountInfo | ConfirmSummary::FeeInfo | ConfirmSummary::CancelTap, - SwipeDirection::Right, - ) => Decision::Goto(ConfirmSummary::Menu, direction), - _ => Decision::Nothing, + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (_, FlowMsg::Info) => Decision::Goto(ConfirmSummary::Menu, SwipeDirection::Left), - (ConfirmSummary::Hold, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Confirmed), - (ConfirmSummary::Menu, FlowMsg::Choice(0)) => { - Decision::Goto(ConfirmSummary::FeeInfo, SwipeDirection::Left) - } - (ConfirmSummary::Menu, FlowMsg::Choice(1)) => { - Decision::Goto(ConfirmSummary::AccountInfo, SwipeDirection::Left) - } - (ConfirmSummary::Menu, FlowMsg::Choice(2)) => { - Decision::Goto(ConfirmSummary::CancelTap, SwipeDirection::Left) - } - (ConfirmSummary::Menu, FlowMsg::Cancelled) => { - Decision::Goto(ConfirmSummary::Summary, SwipeDirection::Right) - } - (ConfirmSummary::CancelTap, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Cancelled), - (_, FlowMsg::Cancelled) => Decision::Goto(ConfirmSummary::Menu, SwipeDirection::Right), - _ => Decision::Nothing, + (_, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Hold, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), + (Self::Menu, FlowMsg::Choice(0)) => Self::FeeInfo.swipe_left(), + (Self::Menu, FlowMsg::Choice(1)) => Self::AccountInfo.swipe_left(), + (Self::Menu, FlowMsg::Choice(2)) => Self::CancelTap.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Summary.swipe_right(), + (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), + (_, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::{ - component::swipe_detect::SwipeSettings, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_summary(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmSummary::new_obj) } @@ -171,14 +155,14 @@ impl ConfirmSummary { FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - let store = flow_store() - .add(content_summary)? - .add(content_hold)? - .add(content_menu)? - .add(content_fee)? - .add(content_account)? - .add(content_cancel_tap)?; - let res = SwipeFlow::new(ConfirmSummary::Summary, store)?; + let res = SwipeFlow::new(&ConfirmSummary::Summary)? + .with_page(&ConfirmSummary::Summary, content_summary)? + .with_page(&ConfirmSummary::Hold, content_hold)? + .with_page(&ConfirmSummary::Menu, content_menu)? + .with_page(&ConfirmSummary::FeeInfo, content_fee)? + .with_page(&ConfirmSummary::AccountInfo, content_account)? + .with_page(&ConfirmSummary::CancelTap, content_cancel_tap)?; + Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 155521538d..723806b8ae 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -1,16 +1,21 @@ use crate::{ error, - micropython::{iter::IterBuf, qstr::Qstr}, + micropython::{iter::IterBuf, map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ button_request::ButtonRequest, component::{ + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, ParagraphSource, Paragraphs}, ButtonRequestExt, ComponentExt, Qr, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, - layout::util::ConfirmBlob, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, SwipePage, + }, + layout::{obj::LayoutObj, util::ConfirmBlob}, + model_mercury::component::SwipeContent, }, }; @@ -24,7 +29,7 @@ use super::super::{ const QR_BORDER: i16 = 4; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum GetAddress { Address, Tap, @@ -37,104 +42,48 @@ pub enum GetAddress { } impl FlowState for GetAddress { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (GetAddress::Address, SwipeDirection::Left) => { - Decision::Goto(GetAddress::Menu, direction) - } - (GetAddress::Address, SwipeDirection::Up) => Decision::Goto(GetAddress::Tap, direction), - (GetAddress::Tap, SwipeDirection::Down) => { - Decision::Goto(GetAddress::Address, direction) - } - (GetAddress::Tap, SwipeDirection::Left) => Decision::Goto(GetAddress::Menu, direction), - (GetAddress::Menu, SwipeDirection::Right) => { - Decision::Goto(GetAddress::Address, direction) - } - (GetAddress::QrCode, SwipeDirection::Right) => { - Decision::Goto(GetAddress::Menu, direction) - } - (GetAddress::AccountInfo, SwipeDirection::Right) => { - Decision::Goto(GetAddress::Menu, SwipeDirection::Right) - } - (GetAddress::Cancel, SwipeDirection::Up) => { - Decision::Goto(GetAddress::CancelTap, direction) - } - (GetAddress::Cancel, SwipeDirection::Right) => { - Decision::Goto(GetAddress::Menu, direction) - } - (GetAddress::CancelTap, SwipeDirection::Down) => { - Decision::Goto(GetAddress::Cancel, direction) - } - (GetAddress::CancelTap, SwipeDirection::Right) => { - Decision::Goto(GetAddress::Menu, direction) - } - _ => Decision::Nothing, + (Self::Address, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Address, SwipeDirection::Up) => Self::Tap.swipe(direction), + (Self::Tap, SwipeDirection::Down) => Self::Address.swipe(direction), + (Self::Tap, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Address.swipe(direction), + (Self::QrCode, SwipeDirection::Right) => Self::Menu.swipe(direction), + (Self::AccountInfo, SwipeDirection::Right) => Self::Menu.swipe_right(), + (Self::Cancel, SwipeDirection::Up) => Self::CancelTap.swipe(direction), + (Self::Cancel, SwipeDirection::Right) => Self::Menu.swipe(direction), + (Self::CancelTap, SwipeDirection::Down) => Self::Cancel.swipe(direction), + (Self::CancelTap, SwipeDirection::Right) => Self::Menu.swipe(direction), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (GetAddress::Address, FlowMsg::Info) => { - Decision::Goto(GetAddress::Menu, SwipeDirection::Left) - } - - (GetAddress::Tap, FlowMsg::Confirmed) => { - Decision::Goto(GetAddress::Confirmed, SwipeDirection::Up) - } - - (GetAddress::Tap, FlowMsg::Info) => { - Decision::Goto(GetAddress::Menu, SwipeDirection::Left) - } - - (GetAddress::Confirmed, _) => Decision::Return(FlowMsg::Confirmed), - - (GetAddress::Menu, FlowMsg::Choice(0)) => { - Decision::Goto(GetAddress::QrCode, SwipeDirection::Left) - } - - (GetAddress::Menu, FlowMsg::Choice(1)) => { - Decision::Goto(GetAddress::AccountInfo, SwipeDirection::Left) - } - - (GetAddress::Menu, FlowMsg::Choice(2)) => { - Decision::Goto(GetAddress::Cancel, SwipeDirection::Left) - } - - (GetAddress::Menu, FlowMsg::Cancelled) => { - Decision::Goto(GetAddress::Address, SwipeDirection::Right) - } - - (GetAddress::QrCode, FlowMsg::Cancelled) => { - Decision::Goto(GetAddress::Menu, SwipeDirection::Right) - } - - (GetAddress::AccountInfo, FlowMsg::Cancelled) => { - Decision::Goto(GetAddress::Menu, SwipeDirection::Right) - } - - (GetAddress::Cancel, FlowMsg::Cancelled) => { - Decision::Goto(GetAddress::Menu, SwipeDirection::Right) - } - - (GetAddress::CancelTap, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Cancelled), - - (GetAddress::CancelTap, FlowMsg::Cancelled) => { - Decision::Goto(GetAddress::Menu, SwipeDirection::Right) - } - - _ => Decision::Nothing, + (Self::Address, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Tap, FlowMsg::Confirmed) => Self::Confirmed.swipe_up(), + (Self::Tap, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Confirmed, _) => self.return_msg(FlowMsg::Confirmed), + (Self::Menu, FlowMsg::Choice(0)) => Self::QrCode.swipe_left(), + (Self::Menu, FlowMsg::Choice(1)) => Self::AccountInfo.swipe_left(), + (Self::Menu, FlowMsg::Choice(2)) => Self::Cancel.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Address.swipe_right(), + (Self::QrCode, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::AccountInfo, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::Cancel, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), + (Self::CancelTap, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::{ - component::swipe_detect::SwipeSettings, flow::SwipePage, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_get_address(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, GetAddress::new_obj) } @@ -271,16 +220,15 @@ impl GetAddress { _ => None, }); - let store = flow_store() - .add(content_address)? - .add(content_tap)? - .add(content_confirmed)? - .add(content_menu)? - .add(content_qr)? - .add(content_account)? - .add(content_cancel_info)? - .add(content_cancel_tap)?; - let res = SwipeFlow::new(GetAddress::Address, store)?; + let res = SwipeFlow::new(&GetAddress::Address)? + .with_page(&GetAddress::Address, content_address)? + .with_page(&GetAddress::Tap, content_tap)? + .with_page(&GetAddress::Confirmed, content_confirmed)? + .with_page(&GetAddress::Menu, content_menu)? + .with_page(&GetAddress::QrCode, content_qr)? + .with_page(&GetAddress::AccountInfo, content_account)? + .with_page(&GetAddress::Cancel, content_cancel_info)? + .with_page(&GetAddress::CancelTap, content_cancel_tap)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index ba2b43bb9b..fdf691199a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -1,13 +1,20 @@ use crate::{ error, + micropython::{map::Map, obj::Obj, util}, strutil::TString, translations::TR, ui::{ component::{ + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, Paragraphs}, ComponentExt, SwipeDirection, }, - flow::{base::Decision, FlowMsg, FlowState, FlowStore}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; @@ -18,7 +25,7 @@ use super::super::{ theme, }; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum PromptBackup { Intro, Menu, @@ -27,68 +34,39 @@ pub enum PromptBackup { } impl FlowState for PromptBackup { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { - match (self, direction) { - (PromptBackup::Intro, SwipeDirection::Left) => { - Decision::Goto(PromptBackup::Menu, direction) - } - (PromptBackup::Intro, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), - - (PromptBackup::Menu, SwipeDirection::Right) => { - Decision::Goto(PromptBackup::Intro, direction) - } + #[inline] + fn index(&'static self) -> usize { + *self as usize + } - (PromptBackup::SkipBackupIntro, SwipeDirection::Up) => { - Decision::Goto(PromptBackup::SkipBackupConfirm, direction) - } - (PromptBackup::SkipBackupIntro, SwipeDirection::Right) => { - Decision::Goto(PromptBackup::Intro, direction) - } - (PromptBackup::SkipBackupConfirm, SwipeDirection::Down) => { - Decision::Goto(PromptBackup::SkipBackupIntro, direction) - } - (PromptBackup::SkipBackupConfirm, SwipeDirection::Right) => { - Decision::Goto(PromptBackup::Intro, direction) + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Intro, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::SkipBackupIntro, SwipeDirection::Up) => Self::SkipBackupConfirm.swipe(direction), + (Self::SkipBackupIntro, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::SkipBackupConfirm, SwipeDirection::Down) => { + Self::SkipBackupIntro.swipe(direction) } - _ => Decision::Nothing, + (Self::SkipBackupConfirm, SwipeDirection::Right) => Self::Intro.swipe(direction), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (PromptBackup::Intro, FlowMsg::Info) => { - Decision::Goto(PromptBackup::Menu, SwipeDirection::Left) - } - (PromptBackup::Menu, FlowMsg::Choice(0)) => { - Decision::Goto(PromptBackup::SkipBackupIntro, SwipeDirection::Left) - } - (PromptBackup::Menu, FlowMsg::Cancelled) => { - Decision::Goto(PromptBackup::Intro, SwipeDirection::Right) - } - (PromptBackup::SkipBackupIntro, FlowMsg::Cancelled) => { - Decision::Goto(PromptBackup::Menu, SwipeDirection::Right) - } - (PromptBackup::SkipBackupConfirm, FlowMsg::Cancelled) => { - Decision::Goto(PromptBackup::SkipBackupIntro, SwipeDirection::Right) - } - (PromptBackup::SkipBackupConfirm, FlowMsg::Confirmed) => { - Decision::Return(FlowMsg::Cancelled) - } - _ => Decision::Nothing, + (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Choice(0)) => Self::SkipBackupIntro.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::SkipBackupIntro, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::SkipBackupConfirm, FlowMsg::Cancelled) => Self::SkipBackupIntro.swipe_right(), + (Self::SkipBackupConfirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::{ - component::swipe_detect::SwipeSettings, - flow::{flow_store, SwipeFlow}, - layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_prompt_backup(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, PromptBackup::new_obj) } @@ -159,12 +137,11 @@ impl PromptBackup { _ => None, }); - let store = flow_store() - .add(content_intro)? - .add(content_menu)? - .add(content_skip_intro)? - .add(content_skip_confirm)?; - let res = SwipeFlow::new(PromptBackup::Intro, store)?; + let res = SwipeFlow::new(&PromptBackup::Intro)? + .with_page(&PromptBackup::Intro, content_intro)? + .with_page(&PromptBackup::Menu, content_menu)? + .with_page(&PromptBackup::SkipBackupIntro, content_skip_intro)? + .with_page(&PromptBackup::SkipBackupConfirm, content_skip_confirm)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs index 55ffad8a20..4aa70ce329 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -1,15 +1,21 @@ use crate::{ error, - micropython::qstr::Qstr, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ button_request::ButtonRequest, component::{ + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, Paragraphs}, ButtonRequestExt, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; @@ -21,7 +27,7 @@ use super::super::{ theme, }; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum RequestNumber { Number, Menu, @@ -29,49 +35,32 @@ pub enum RequestNumber { } impl FlowState for RequestNumber { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (RequestNumber::Number, SwipeDirection::Left) => { - Decision::Goto(RequestNumber::Menu, direction) - } - (RequestNumber::Menu, SwipeDirection::Right) => { - Decision::Goto(RequestNumber::Number, direction) - } - (RequestNumber::Info, SwipeDirection::Right) => { - Decision::Goto(RequestNumber::Menu, direction) - } - _ => Decision::Nothing, + (Self::Number, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Number.swipe(direction), + (Self::Info, SwipeDirection::Right) => Self::Menu.swipe(direction), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (RequestNumber::Number, FlowMsg::Info) => { - Decision::Goto(RequestNumber::Menu, SwipeDirection::Left) - } - (RequestNumber::Menu, FlowMsg::Choice(0)) => { - Decision::Goto(RequestNumber::Info, SwipeDirection::Left) - } - (RequestNumber::Menu, FlowMsg::Cancelled) => { - Decision::Goto(RequestNumber::Number, SwipeDirection::Right) - } - (RequestNumber::Info, FlowMsg::Cancelled) => { - Decision::Goto(RequestNumber::Menu, SwipeDirection::Right) - } - (RequestNumber::Number, FlowMsg::Choice(n)) => Decision::Return(FlowMsg::Choice(n)), - _ => Decision::Nothing, + (Self::Number, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Choice(0)) => Self::Info.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Number.swipe_right(), + (Self::Info, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::Number, FlowMsg::Choice(n)) => self.return_msg(FlowMsg::Choice(n)), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::{ - component::swipe_detect::SwipeSettings, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, RequestNumber::new_obj) } @@ -143,11 +132,10 @@ impl RequestNumber { _ => None, }); - let store = flow_store() - .add(content_number_input)? - .add(content_menu)? - .add(content_info)?; - let res = SwipeFlow::new(RequestNumber::Number, store)?; + let res = SwipeFlow::new(&RequestNumber::Number)? + .with_page(&RequestNumber::Number, content_number_input)? + .with_page(&RequestNumber::Menu, content_menu)? + .with_page(&RequestNumber::Info, content_info)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index 9209450083..bae28e0507 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -10,7 +10,10 @@ use crate::{ text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, ButtonRequestExt, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, layout::obj::LayoutObj, model_mercury::component::SwipeContent, }, @@ -22,7 +25,7 @@ use super::super::{ theme, }; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum ShowShareWords { Instruction, Words, @@ -31,39 +34,28 @@ pub enum ShowShareWords { } impl FlowState for ShowShareWords { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (ShowShareWords::Instruction, SwipeDirection::Up) => { - Decision::Goto(ShowShareWords::Words, direction) - } - (ShowShareWords::Confirm, SwipeDirection::Down) => { - Decision::Goto(ShowShareWords::Words, direction) - } - (ShowShareWords::Words, SwipeDirection::Up) => { - Decision::Goto(ShowShareWords::Confirm, direction) - } - (ShowShareWords::Words, SwipeDirection::Down) => { - Decision::Goto(ShowShareWords::Instruction, direction) - } - (ShowShareWords::CheckBackupIntro, SwipeDirection::Up) => { - Decision::Return(FlowMsg::Confirmed) - } - _ => Decision::Nothing, + (Self::Instruction, SwipeDirection::Up) => Self::Words.swipe(direction), + (Self::Confirm, SwipeDirection::Down) => Self::Words.swipe(direction), + (Self::Words, SwipeDirection::Up) => Self::Confirm.swipe(direction), + (Self::Words, SwipeDirection::Down) => Self::Instruction.swipe(direction), + (Self::CheckBackupIntro, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (ShowShareWords::Words, FlowMsg::Cancelled) => { - Decision::Goto(ShowShareWords::Instruction, SwipeDirection::Down) - } - (ShowShareWords::Words, FlowMsg::Confirmed) => { - Decision::Goto(ShowShareWords::Confirm, SwipeDirection::Up) - } - (ShowShareWords::Confirm, FlowMsg::Confirmed) => { - Decision::Goto(ShowShareWords::CheckBackupIntro, SwipeDirection::Up) - } - _ => Decision::Nothing, + (Self::Words, FlowMsg::Cancelled) => Self::Instruction.swipe_down(), + (Self::Words, FlowMsg::Confirmed) => Self::Confirm.swipe_up(), + (Self::Confirm, FlowMsg::Confirmed) => Self::CheckBackupIntro.swipe_up(), + _ => self.do_nothing(), } } } @@ -131,12 +123,14 @@ impl ShowShareWords { .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .map(|_| Some(FlowMsg::Confirmed)); - let store = flow_store() - .add(content_instruction)? - .add(content_words)? - .add(content_confirm)? - .add(content_check_backup_intro)?; - let res = SwipeFlow::new(ShowShareWords::Instruction, store)?; + let res = SwipeFlow::new(&ShowShareWords::Instruction)? + .with_page(&ShowShareWords::Instruction, content_instruction)? + .with_page(&ShowShareWords::Words, content_words)? + .with_page(&ShowShareWords::Confirm, content_confirm)? + .with_page( + &ShowShareWords::CheckBackupIntro, + content_check_backup_intro, + )?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs index 79fdff291d..bd453b37d7 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs @@ -1,5 +1,6 @@ use crate::{ error, + micropython::{map::Map, obj::Obj, util}, translations::TR, ui::{ component::{ @@ -7,7 +8,10 @@ use crate::{ text::paragraphs::{Paragraph, Paragraphs}, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, layout::obj::LayoutObj, model_mercury::component::SwipeContent, }, @@ -18,7 +22,7 @@ use super::super::{ theme, }; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum ShowTutorial { StepWelcome, StepBegin, @@ -32,76 +36,43 @@ pub enum ShowTutorial { } impl FlowState for ShowTutorial { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (ShowTutorial::StepBegin, SwipeDirection::Up) => { - Decision::Goto(ShowTutorial::StepNavigation, direction) - } - (ShowTutorial::StepNavigation, SwipeDirection::Up) => { - Decision::Goto(ShowTutorial::StepMenu, direction) - } - (ShowTutorial::StepNavigation, SwipeDirection::Down) => { - Decision::Goto(ShowTutorial::StepBegin, direction) - } - (ShowTutorial::StepMenu, SwipeDirection::Up) => { - Decision::Goto(ShowTutorial::StepHold, direction) - } - (ShowTutorial::StepMenu, SwipeDirection::Down) => { - Decision::Goto(ShowTutorial::StepNavigation, direction) - } - (ShowTutorial::StepMenu, SwipeDirection::Left) => { - Decision::Goto(ShowTutorial::Menu, direction) - } - (ShowTutorial::Menu, SwipeDirection::Left) => { - Decision::Goto(ShowTutorial::DidYouKnow, direction) - } - (ShowTutorial::Menu, SwipeDirection::Right) => { - Decision::Goto(ShowTutorial::StepBegin, direction) - } - (ShowTutorial::DidYouKnow, SwipeDirection::Right) => { - Decision::Goto(ShowTutorial::Menu, direction) - } - (ShowTutorial::StepDone, SwipeDirection::Up) => Decision::Return(FlowMsg::Confirmed), - _ => Decision::Nothing, + (Self::StepBegin, SwipeDirection::Up) => Self::StepNavigation.swipe(direction), + (Self::StepNavigation, SwipeDirection::Up) => Self::StepMenu.swipe(direction), + (Self::StepNavigation, SwipeDirection::Down) => Self::StepBegin.swipe(direction), + (Self::StepMenu, SwipeDirection::Up) => Self::StepHold.swipe(direction), + (Self::StepMenu, SwipeDirection::Down) => Self::StepNavigation.swipe(direction), + (Self::StepMenu, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Left) => Self::DidYouKnow.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::StepBegin.swipe(direction), + (Self::DidYouKnow, SwipeDirection::Right) => Self::Menu.swipe(direction), + (Self::StepDone, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (ShowTutorial::StepWelcome, FlowMsg::Confirmed) => { - Decision::Goto(ShowTutorial::StepBegin, SwipeDirection::Up) - } - (ShowTutorial::StepMenu, FlowMsg::Info) => { - Decision::Goto(ShowTutorial::Menu, SwipeDirection::Left) - } - (ShowTutorial::Menu, FlowMsg::Choice(0)) => { - Decision::Goto(ShowTutorial::DidYouKnow, SwipeDirection::Left) - } - (ShowTutorial::Menu, FlowMsg::Choice(1)) => { - Decision::Goto(ShowTutorial::StepBegin, SwipeDirection::Right) - } - (ShowTutorial::Menu, FlowMsg::Choice(2)) => { - Decision::Goto(ShowTutorial::HoldToExit, SwipeDirection::Up) - } - (ShowTutorial::Menu, FlowMsg::Cancelled) => { - Decision::Goto(ShowTutorial::StepMenu, SwipeDirection::Right) - } - (ShowTutorial::DidYouKnow, FlowMsg::Cancelled) => { - Decision::Goto(ShowTutorial::Menu, SwipeDirection::Right) - } - (ShowTutorial::StepHold, FlowMsg::Confirmed) => { - Decision::Goto(ShowTutorial::StepDone, SwipeDirection::Up) - } - (ShowTutorial::HoldToExit, FlowMsg::Confirmed) => { - Decision::Goto(ShowTutorial::StepDone, SwipeDirection::Up) - } - _ => Decision::Nothing, + (Self::StepWelcome, FlowMsg::Confirmed) => Self::StepBegin.swipe_up(), + (Self::StepMenu, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Choice(0)) => Self::DidYouKnow.swipe_left(), + (Self::Menu, FlowMsg::Choice(1)) => Self::StepBegin.swipe_right(), + (Self::Menu, FlowMsg::Choice(2)) => Self::HoldToExit.swipe_up(), + (Self::Menu, FlowMsg::Cancelled) => Self::StepMenu.swipe_right(), + (Self::DidYouKnow, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::StepHold, FlowMsg::Confirmed) => Self::StepDone.swipe_up(), + (Self::HoldToExit, FlowMsg::Confirmed) => Self::StepDone.swipe_up(), + _ => self.do_nothing(), } } } -use crate::micropython::{map::Map, obj::Obj, util}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_show_tutorial(_n_args: usize, _args: *const Obj, _kwargs: *mut Map) -> Obj { unsafe { util::try_or_raise(ShowTutorial::new_obj) } @@ -213,17 +184,16 @@ impl ShowTutorial { .with_footer(TR::instructions__exit_tutorial.into(), None) .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); - let store = flow_store() - .add(content_step_welcome)? - .add(content_step_begin)? - .add(content_step_navigation)? - .add(content_step_menu)? - .add(content_step_hold)? - .add(content_step_done)? - .add(content_menu)? - .add(content_did_you_know)? - .add(content_hold_to_exit)?; - let res = SwipeFlow::new(ShowTutorial::StepWelcome, store)?; + let res = SwipeFlow::new(&ShowTutorial::StepWelcome)? + .with_page(&ShowTutorial::StepWelcome, content_step_welcome)? + .with_page(&ShowTutorial::StepBegin, content_step_begin)? + .with_page(&ShowTutorial::StepNavigation, content_step_navigation)? + .with_page(&ShowTutorial::StepMenu, content_step_menu)? + .with_page(&ShowTutorial::StepHold, content_step_hold)? + .with_page(&ShowTutorial::StepDone, content_step_done)? + .with_page(&ShowTutorial::Menu, content_menu)? + .with_page(&ShowTutorial::DidYouKnow, content_did_you_know)? + .with_page(&ShowTutorial::HoldToExit, content_hold_to_exit)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs index acee0c6b2d..c4bf1cbe98 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs @@ -1,14 +1,20 @@ use crate::{ error, - micropython::qstr::Qstr, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ component::{ + swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, ParagraphSource}, ComponentExt, SwipeDirection, }, - flow::{base::Decision, flow_store, FlowMsg, FlowState, FlowStore, SwipeFlow}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::SwipeContent, }, }; @@ -17,7 +23,7 @@ use super::super::{ theme, }; -#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +#[derive(Copy, Clone, PartialEq, Eq)] pub enum WarningHiPrio { Message, Menu, @@ -25,47 +31,32 @@ pub enum WarningHiPrio { } impl FlowState for WarningHiPrio { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (WarningHiPrio::Message, SwipeDirection::Left) => { - Decision::Goto(WarningHiPrio::Menu, direction) - } - (WarningHiPrio::Message, SwipeDirection::Up) => { - Decision::Goto(WarningHiPrio::Cancelled, direction) - } - (WarningHiPrio::Menu, SwipeDirection::Right) => { - Decision::Goto(WarningHiPrio::Message, direction) - } - _ => Decision::Nothing, + (Self::Message, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Message, SwipeDirection::Up) => Self::Cancelled.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Message.swipe(direction), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (WarningHiPrio::Message, FlowMsg::Info) => { - Decision::Goto(WarningHiPrio::Menu, SwipeDirection::Left) - } - (WarningHiPrio::Menu, FlowMsg::Choice(1)) => Decision::Return(FlowMsg::Confirmed), - (WarningHiPrio::Menu, FlowMsg::Choice(_)) => { - Decision::Goto(WarningHiPrio::Cancelled, SwipeDirection::Up) - } - (WarningHiPrio::Menu, FlowMsg::Cancelled) => { - Decision::Goto(WarningHiPrio::Message, SwipeDirection::Right) - } - (WarningHiPrio::Cancelled, _) => Decision::Return(FlowMsg::Cancelled), - _ => Decision::Nothing, + (Self::Message, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Choice(1)) => self.return_msg(FlowMsg::Confirmed), + (Self::Menu, FlowMsg::Choice(_)) => Self::Cancelled.swipe_up(), + (Self::Menu, FlowMsg::Cancelled) => Self::Message.swipe_right(), + (Self::Cancelled, _) => self.return_msg(FlowMsg::Cancelled), + _ => self.do_nothing(), } } } -use crate::{ - micropython::{map::Map, obj::Obj, util}, - ui::{ - component::swipe_detect::SwipeSettings, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_warning_hi_prio(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, WarningHiPrio::new_obj) } @@ -118,11 +109,10 @@ impl WarningHiPrio { .with_footer(TR::instructions__continue_in_app.into(), None) .map(|_| Some(FlowMsg::Cancelled)); - let store = flow_store() - .add(content_message)? - .add(content_menu)? - .add(content_cancelled)?; - let res = SwipeFlow::new(WarningHiPrio::Message, store)?; + let res = SwipeFlow::new(&WarningHiPrio::Message)? + .with_page(&WarningHiPrio::Message, content_message)? + .with_page(&WarningHiPrio::Menu, content_menu)? + .with_page(&WarningHiPrio::Cancelled, content_cancelled)?; Ok(LayoutObj::new(res)?.into()) } } diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index 7b0bf52e14..7497ee224a 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -28,12 +28,12 @@ pub use canvas::{ }; pub use circle::Circle; pub use corner_highlight::CornerHighlight; -pub use display::{render_on_canvas, render_on_display, unlock_bumps_on_failure}; +pub use display::{render_on_canvas, render_on_display, unlock_bumps_on_failure, ConcreteRenderer}; #[cfg(feature = "ui_jpeg_decoder")] pub use jpeg::JpegImage; pub use qrcode::QrImage; pub use rawimage::RawImage; -pub use render::{DirectRenderer, ProgressiveRenderer, Renderer}; +pub use render::{DirectRenderer, ProgressiveRenderer, Renderer, ScopedRenderer}; pub use text::Text; pub use toif::ToifImage; #[cfg(feature = "ui_image_buffer")] From 3884abde640266ab7bd9b4c8f8899fa9518942bb Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 12 Jul 2024 16:06:40 +0200 Subject: [PATCH 415/626] chore(core/rust): remove warnings in translations --- core/embed/rust/src/translations/blob.rs | 1 + core/embed/rust/src/translations/mod.rs | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/rust/src/translations/blob.rs b/core/embed/rust/src/translations/blob.rs index 414f30101c..422259359c 100644 --- a/core/embed/rust/src/translations/blob.rs +++ b/core/embed/rust/src/translations/blob.rs @@ -405,6 +405,7 @@ impl<'a> TranslationsHeader<'a> { } pub fn verify(&self) -> Result<(), Error> { + #[allow(unused_mut)] let mut result = self.verify_with_keys(&public_keys::PUBLIC_KEYS); #[cfg(feature = "debug")] if result.is_err() { diff --git a/core/embed/rust/src/translations/mod.rs b/core/embed/rust/src/translations/mod.rs index ee527a67b4..3d19ef4b48 100644 --- a/core/embed/rust/src/translations/mod.rs +++ b/core/embed/rust/src/translations/mod.rs @@ -6,7 +6,6 @@ mod obj; mod public_keys; mod translated_string; -pub use blob::MAX_HEADER_LEN; pub use translated_string::TranslatedString as TR; pub const DEFAULT_LANGUAGE: &str = "en-US"; From 78b401785945e573fede38026b4888557b3aaa66 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 14 Apr 2024 10:04:44 +0200 Subject: [PATCH 416/626] feat(core): add support for T3B1 --- core/.changelog.d/3728.added | 1 + core/Makefile | 5 + core/SConscript.bootloader | 4 +- core/SConscript.bootloader_ci | 2 +- core/SConscript.bootloader_emu | 4 +- core/SConscript.firmware | 4 +- core/SConscript.prodtest | 2 +- core/SConscript.reflash | 2 +- core/SConscript.unix | 4 +- .../bootloaders/bootloader_T3B1_qa.bin | Bin 0 -> 93184 bytes core/embed/firmware/memory_T3B1.ld | 1 + core/embed/models/T3B1/boards/t3b1-unix.h | 24 +++ .../models/T3B1/boards/trezor_t3b1_revB.h | 63 ++++++++ core/embed/models/T3B1/model_T3B1.h | 50 +++++++ core/embed/models/T3B1/model_T3B1_layout.c | 96 ++++++++++++ core/embed/models/model.h | 2 + core/embed/trezorhal/stm32u5/button.c | 1 + .../trezorhal/stm32u5/consumption_mask.c | 140 ++++++++++++++++++ .../stm32u5/displays/vg-2864ksweg01.c | 1 + .../stm32u5/displays/vg-2864ksweg01.h | 1 + core/embed/trezorhal/stm32u5/platform.c | 3 + .../trezorhal/stm32u5/stm32u5xx_hal_conf.h | 2 +- core/embed/trezorhal/unix/flash.c | 6 +- .../T3B1/vendor_dev_DO_NOT_SIGN.json | 20 +++ ...endorheader_dev_DO_NOT_SIGN_signed_dev.bin | Bin 0 -> 512 bytes .../vendorheader_dev_DO_NOT_SIGN_unsigned.bin | Bin 0 -> 512 bytes core/embed/vendorheader/generate.sh | 2 +- core/site_scons/models/T3B1/__init__.py | 30 ++++ core/site_scons/models/T3B1/emulator.py | 49 ++++++ .../models/T3B1/trezor_t3b1_revB.py | 85 +++++++++++ core/site_scons/models/__init__.py | 4 +- python/.changelog.d/3728.added | 1 + python/src/trezorlib/firmware/models.py | 35 +++++ python/src/trezorlib/models.py | 11 +- 34 files changed, 637 insertions(+), 18 deletions(-) create mode 100644 core/.changelog.d/3728.added create mode 100755 core/embed/firmware/bootloaders/bootloader_T3B1_qa.bin create mode 120000 core/embed/firmware/memory_T3B1.ld create mode 100644 core/embed/models/T3B1/boards/t3b1-unix.h create mode 100644 core/embed/models/T3B1/boards/trezor_t3b1_revB.h create mode 100644 core/embed/models/T3B1/model_T3B1.h create mode 100644 core/embed/models/T3B1/model_T3B1_layout.c create mode 120000 core/embed/trezorhal/stm32u5/button.c create mode 100644 core/embed/trezorhal/stm32u5/consumption_mask.c create mode 120000 core/embed/trezorhal/stm32u5/displays/vg-2864ksweg01.c create mode 120000 core/embed/trezorhal/stm32u5/displays/vg-2864ksweg01.h create mode 100644 core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.json create mode 100644 core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin create mode 100644 core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin create mode 100644 core/site_scons/models/T3B1/__init__.py create mode 100644 core/site_scons/models/T3B1/emulator.py create mode 100644 core/site_scons/models/T3B1/trezor_t3b1_revB.py create mode 100644 python/.changelog.d/3728.added diff --git a/core/.changelog.d/3728.added b/core/.changelog.d/3728.added new file mode 100644 index 0000000000..5f87842afa --- /dev/null +++ b/core/.changelog.d/3728.added @@ -0,0 +1 @@ +Added support for T3B1 diff --git a/core/Makefile b/core/Makefile index 22c933b691..4e53bac5f5 100644 --- a/core/Makefile +++ b/core/Makefile @@ -63,6 +63,11 @@ MCU = STM32U5 OPENOCD_TARGET = target/stm32u5x.cfg LAYOUT_FILE = embed/models/T3T1/model_T3T1.h MODEL_FEATURE = model_mercury +else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3B1)) +MCU = STM32U5 +OPENOCD_TARGET = target/stm32u5x.cfg +LAYOUT_FILE = embed/models/T3B1/model_T3B1.h +MODEL_FEATURE = model_tr else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC1)) MCU = STM32F4 LAYOUT_FILE = embed/models/D001/model_D001.h diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 889b2d085d..b9d700d832 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -36,7 +36,7 @@ CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] -if TREZOR_MODEL in ('R', ): +if TREZOR_MODEL in ('R', 'T3B1'): FONT_NORMAL='Font_PixelOperator_Regular_8' FONT_DEMIBOLD='Font_PixelOperator_Regular_8' FONT_BOLD='Font_PixelOperator_Bold_8' @@ -255,7 +255,7 @@ def cargo_build(): profile = '' if TREZOR_MODEL in ("1",): features = ["model_t1"] - elif TREZOR_MODEL in ("R",): + elif TREZOR_MODEL in ("R", "T3B1"): features = ["model_tr"] elif TREZOR_MODEL in ("T3T1",): features = ["model_mercury"] diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 56e3b136d7..04e8be1c11 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -31,7 +31,7 @@ CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] -if TREZOR_MODEL in ('1', 'R'): +if TREZOR_MODEL in ('1', 'R', 'T3B1'): FONT_NORMAL='Font_PixelOperator_Regular_8' FONT_DEMIBOLD=None FONT_BOLD=None diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 0723bf05b1..ccfb002580 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -33,7 +33,7 @@ CPPDEFINES_MOD = [] SOURCE_MOD = [] SOURCE_MOD_CRYPTO = [] -if TREZOR_MODEL in ('1', 'R'): +if TREZOR_MODEL in ('1', 'R', 'T3B1'): FONT_NORMAL='Font_PixelOperator_Regular_8' FONT_DEMIBOLD='Font_PixelOperator_Regular_8' FONT_BOLD='Font_PixelOperator_Bold_8' @@ -271,7 +271,7 @@ RUST_LIBPATH = f'{RUST_LIBDIR}/lib{RUST_LIB}.a' def cargo_build(): if TREZOR_MODEL in ("1",): features = ["model_t1"] - elif TREZOR_MODEL in ("R",): + elif TREZOR_MODEL in ("R", "T3B1"): features = ["model_tr"] elif TREZOR_MODEL in ("T3T1",): features = ["model_mercury"] diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 127a63592d..22e0a591ea 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -42,7 +42,7 @@ PATH_HAL = [] FROZEN = True -if TREZOR_MODEL in ('1', 'R'): +if TREZOR_MODEL in ('1', 'R', 'T3B1'): FONT_NORMAL='Font_PixelOperator_Regular_8' FONT_DEMIBOLD='Font_Unifont_Bold_16' FONT_BOLD='Font_PixelOperator_Bold_8' @@ -464,7 +464,7 @@ SOURCE_FIRMWARE = [ if TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): UI_LAYOUT = 'UI_LAYOUT_TT' ui_layout_feature = 'model_tt' -elif TREZOR_MODEL in ('1', 'R'): +elif TREZOR_MODEL in ('1', 'R', 'T3B1'): UI_LAYOUT = 'UI_LAYOUT_TR' ui_layout_feature = 'model_tr' elif TREZOR_MODEL in ('T3T1',): diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 4e32efdb69..8f5a5d62bc 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -34,7 +34,7 @@ CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] -if TREZOR_MODEL in ('1', 'R'): +if TREZOR_MODEL in ('1', 'R', 'T3B1'): FONT_NORMAL=None FONT_DEMIBOLD=None FONT_BOLD='Font_PixelOperator_Bold_8' diff --git a/core/SConscript.reflash b/core/SConscript.reflash index a9d343542e..e40af8b1ef 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -29,7 +29,7 @@ CPPDEFINES_HAL = [] SOURCE_HAL = [] PATH_HAL = [] -if TREZOR_MODEL in ('1', 'R'): +if TREZOR_MODEL in ('1', 'R', 'T3B1'): FONT_NORMAL=None FONT_DEMIBOLD=None FONT_BOLD='Font_PixelOperator_Bold_8' diff --git a/core/SConscript.unix b/core/SConscript.unix index 7d5d28869a..8dad6103b7 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -47,7 +47,7 @@ PYOPT = ARGUMENTS.get('PYOPT', '1') FROZEN = ARGUMENTS.get('TREZOR_EMULATOR_FROZEN', 0) RASPI = os.getenv('TREZOR_EMULATOR_RASPI') == '1' -if TREZOR_MODEL in ('1', 'R'): +if TREZOR_MODEL in ('1', 'R', 'T3B1'): FONT_NORMAL='Font_PixelOperator_Regular_8' FONT_DEMIBOLD='Font_Unifont_Bold_16' FONT_BOLD='Font_PixelOperator_Bold_8' @@ -476,7 +476,7 @@ FEATURES_AVAILABLE = models.configure_board(TREZOR_MODEL, HW_REVISION, FEATURES_ if TREZOR_MODEL in ('T',): UI_LAYOUT = 'UI_LAYOUT_TT' ui_layout_feature = 'model_tt' -elif TREZOR_MODEL in ('1', 'R'): +elif TREZOR_MODEL in ('1', 'R', 'T3B1'): UI_LAYOUT = 'UI_LAYOUT_TR' ui_layout_feature = 'model_tr' elif TREZOR_MODEL in ('T3T1',): diff --git a/core/embed/firmware/bootloaders/bootloader_T3B1_qa.bin b/core/embed/firmware/bootloaders/bootloader_T3B1_qa.bin new file mode 100755 index 0000000000000000000000000000000000000000..4a0444e88615fd5414398b06b2a1980aa15e4a33 GIT binary patch literal 93184 zcmeFZdwf$>)-ZhTIk_}VZ}dvZr9ewj)0Ru2C~1-&+6F0CML<nj(4;V0s3=}Wihy!+ zEDe`7p@0;fQfIWFIO>Q+!5L?i=V=5LMMe}g^c<Zz5iqAso4jkE6vSuV@A<y}zW4Y3 zp8S62?AzLFuf6x$Ywf-EI+;Irkrksb49DQ-#xVk?F#@9VORPm!$lRA?UsC<yk1yPE z=^sOeE2AIzWZP>oTSeKl_v$YN8V>)~hpPS0?|(+%e@5W{mk}U8U7>umVbZe9v~Mo` zRR88{hnwzr>H8j~a%}ZM)mM><=f>1*8Lf=y55MrWYutj0-V>X%M!ln9@+wPH9$0_> z>XIxPvykSaci@_xM{x}fPZ~T0@Z1W|Z{Rul?*H?X&=W74^XFe+`j7t-M|Iczzu@@q z@c-XZcK*z-$K=23*PJ*0zr+4_c>Yf;GapUhFvD}*Sq_RDZzMXi-3i_r5hL;K$)ay4 z;Z?J#fYWn$7bcGDx0q_KG_8WvAx!+2r03KSCiUw%C4_1HW&_?yh$~{OBg>uOUt~d8 z6ul~uikXe^I?qJT2NS!^#~xxZ^O37f({)EFjy}D@pmM0I)s-sot0=hwFChcJF(@5O z_0=FIJ`lkSdM+0JL(Bvvrlq=LsU?J_9-eXV+z!u8ed3Hn=)sZhHg2+m;hMQIo#Tz! z?jpGtqoEg*hl(9;BW55vaqs9qCX2TW;ifL`S&1|gKyOV9HztHgoaiLQ84?8}kRT8^ zDV9rCZVHETr%6@ZR3C~>mfBIRLQ`*nT+%7&Cqj+|pYZJwVmx59eDb*)+9AZg=p4=r zbkB~N4YN5y{5p!8N|q+V$P^8aOd5>LBT>wdW6bRw2~>VNIPwr`<4I}cA)PUwOBOo^ z^@fpv>qPXUU~%`cOX4$V++bJGB*M6%SsTHP;-2kJb>tW+m^ZcDV-j$^Gk9&LNSK){ zm?;!alal?#9Of<H%3wxg;o2At^r(mF!GWGzq6yvNF{}r*qjtj#ttDL!x6QTHz25bq zo9)pRop7ljR62;-YIjBt>#){taX(f2clUd>S#H9)$Zd7{+)p{rxlcG7W?(&QVSb*2 z2QwY-)0C*)>+2lu6Lk$U)NT@DHi%&u%wG*Q=GE>~eYj5Lo$N^EinwV;BlIUegN9wn z;vIu3KURo|bDkpn+3rLy;a}|5!Q1ang7-OhGQ6`rDJb8Qit;^aDBm*z<=3a9{Q3-( zU!MtY?XGk6S*T=rHY!<8p_1h}@IJSEq&M47dsTkYOZul5YR=;Aq|fkDS4NtIXYaI< z@a_+2cNqSF?@*0C-<RHczAxqL^L<Iq^L>eb9qB(WrS50FIsSy5YA@widb9irZ>FE| zp6^RD5f|d)dd0qtSE-c3)T+(AR;v+iTe6LxS`F!CxjQ%Vw=K}@RJJGDpW$gWE0k4k z;&EId6y5m@U*>@HvW<MvoKZW~?IY|@^R$*}&#=?NZ2(0Oj8J^X)BJ4}>Yc1G(apAN zgq16rcv`7w-^3TsrG+W8e#es}CX~!>;-^$;g((kg<EMC7VM?V!Satt1{M7nQ{7TpF z_>y@Vp=gO#m^ur}tA59?s;%LtEK>-@cd~$a$})hgL{u<4wL<AKMrgcmBj8u;%x!;~ zFI!FvWzet2Iz}h~YRVineAzPPPEC6aUs{g|tDWk0rBLQ+;wQRCwQq*DXra`BN>{qJ z@~a=fgxi3+(n^3{rrw#*t`<t&oA}%A!EddR>1eF0;h%gUVdvT_OI}HA|ASrEev3V+ z{bqY|d%iuT{bhS<dx1TzeVlznd!aqOUE@7u&uGu|ciNfuk@lB3m<<SNzhdV+yRtn2 zW@w~cxiiPFhFtZ|k$x6J+@HJiw1n;7!fQ0AB?>}?;<Us<$S|iR4TKnWTGH)Tv~Pjg zI}P)_1!m~9lmQ_@oR)I-Yy4YyQiTKGt>=|W95`=1&ytK6_n(&Xo6f-~tJ&oi1*8+& zvzIToun<$XpOz+cEB#w}QjG&IF1IKlH@E#9#71(oA1|T3L=Oca<*ng!Omz+Lwska= zsp?jiX*yPxsOnagXgXGrs=7u})6rPN=bGvsg14>XA+@S*wOZ4$Iz?6YaEhkm;Tk^6 zRQCwHZ5t%)_}G<WR_PlzNV*G#)y9W60R0_Mmb0RU&ooWfPSRpp!191nn+#!A{RW9V z9$fkTstZsf<-*sizkwQ~_HU5%%^M_x8R`H|qnYt<fSzuU^32()4bo^iJ)t{Wvq2gI zae(q<Yd1(^0Y1aDK`KBY)Ej43Kv{-+gEU^QcN3&HNTy~~?`An(*o5lcVrC)VEW;E* z9F-TN5XwpbS2p0Bh(a4Y%Qr}q%p0W1Ft!_{X|p#-rE<L~W~E$jDhi=qnYj=sz13U@ zxNb8SLe6wE>9-Ub&Z_*Xwne!Qiqpv!B^e=7vfC_$cnHT;cBU6IIG1SK-ShFHt=9f8 z34c}{<y%yzyg|k*L8fku0Hz6+G7@IgQi6Lw{;mYc^5>9@HNU3ju+j4~I;>Q{{B{bb z0;&ASF_1EguLeOzIzdJ{LH0U71bM3VfGqZaEcSpb_MC93>&aS2y{#5WQ{B;2x5-XA z=er#c+MGMwTOnNUJmdZl!V}I^kJ<y}uK6AZgf`a>&sGT6yUut%gz$tbwO(Bh<$!N) zeTv;yt2>tBZaAuO=h*YaCpgA=yL+Cy&`t_F>P+I3cDwUg_YU`XJ0;9p3gx!-&QtEw zH<X`rCU{akzm$`%+dcC<H`I4M>)CNb`FhtW&*>Y=PXav&^*7Y7om=k!x`x}gT5D5` zi?u|AtRtNb$710_Jt=P3#khaWqC?oSF}IEenn>q7_e}S<SyZU0jwmCAoy$gxPugtG zZEmmoVip;~<lF_2i|9Y?{^&+nxtAxMX&#MdX*LzYmJ-vTuXXY9%g!ccobgdaDTFIN zme<PSBYLeYKCXUf713g=H4l%jOx^sM)8b=1&wYEm2Xz$Cy8}iR(fcgWE1;V5Q11L2 z#vA2gH^82NQBU#wSJ?R2|5sQW%z*dbVB_=fUtv$UQeZaz4X->Ws87Q*pfUTmnc3Qd zVQS!{(YODY1tSfdG}CQz<YZIAPSiiE75b;IUXV=-^U+M$H#k3X%cW?x>?fTXPb$DJ zK)tS@fs5`2$Q^Q--L)-V7O&^}$a5WQ#rv*=`nlPJFu&FaIH}sI`o&qK(DJ{b@QYYX z5sk%2cob+KlH%^@{#eRu#=IZ*;V0DaCL1;IrY~yYtyr&etD5naYB$lc#Z9*S-A%Qq zJakL7hiTd3QMCNs!?vjE15)08Wy>ETgaK=1_gsjm42squ>|)ie7b28_Zq-1Z*1*Uq zvQ-Ny)<DTA9NtO;0dErOoa)OksM~7znZ)xE>~*Y7*_zn$HN@yPP3vPAiji%JtzSo| z*YUPgC?Q{G0eTjJN|?4aGDKPn)t1&;!&l0=DSD#q>j?3>+Lyh{Y8%lqR>Z7HEgByd zA%C{obS*bS8jBF2<Q5~B<hR;vwseqL3D6gEVm_1+drnF2?vxgQiC_`sPZ*+lBH5Y% zeIO>HJ}?vIeobUsb&y9*9MPJ-hmT+rX(&@qRKOdbsFZ7^!~P0u1<Vt2c2eyZBJ>2j zRSltH0_s0Kfo@HJ6fpteV<xb2p01T?2W%4%9`yu-2cIy~OULmPL9HS(j-v?CLKoq! z8o;3~k}(#cT0{}T#1tj80-hp-L0xpJFSkhH$J&6FG8V=YE2G<j5xh*@#>gqMO$(v6 zjDoSF%W!zJW%qJuB(cfLHWJE+$x}H#!W5tC(-)61CHYd?KvPJ`J~Dzw7TL&%GDJo+ zm-k1Q9}p$@59j+Z8tD5W-beZeMXL^tzz@pS5pu{!$R8-by7gj2{R88_7$JUmgkvFO zpTPYc5v&jMlTe2B5&lFuq@WD%qx}hxV)_(*x*e73T9uHG^)YcweFy{5*9erdQ*<!; zHT>=e09z^6I*Z?y3+<Q2$BQndS`!f+r9^A095V7;;H78;nNl=rbSc}afHHL{A0bL< zUxHT+v(OPCilMBSl*gSe*0v*#ri+<4zG5nlub5~}LwJkPT;RnBA5(n3FN@(LIFsJS zN7Ti+0<O(zD;M@G)3x0!J~^|7zvqEj{QJ2mze-r(83~-ecUc9$Iqf$YcA;%)0;Css zs`!(cnF6k?6z02gA*XGro!^wYG-Fg7NRx_kq19Ex&v#ey?`C8OBx@DsK)SU~@3Zmi zQv4YPA4nv-RoL!Yq_y(zCMOG+ngf^&SU>(+E59x|IU}=mEJ!g6z@+H!)Xw1FP5*ra zdrZ~ZlL`6d)gerUJKxln^IMW!_HyUVkhjhWa?w@*G2C^+l@DPdXdENRzW1GW*E$zj zYppfO`vD|>0)1FrTer#^=p!0gcvI^s?^X}%!@VDR=3=y0T~D+;hB4lR7DqkhQ+wxP za8hZ(eTy*|djk#oXiodj2yGzRYs4|COAt%tsP@OO?;=Dw?MvD|7gM$%NZk$wU@J8U z_Iw{P{}RZc??5`??N4CeLf)yqWCP<<w*l<ve@1XP>EPucX-3m~9tF8VjV9YJL2e4b zrH;mZ)izCwDnk9FXkmPsJ#%bopQ2qAA^IsFyayh`4n*+6ixFkv_YtP>9`4(SW(=_h zWRC+{8bj^Tw0|2>jXBk)9i#FQdtQzZ2l^uF1K&pQ1LPinIH1^bDMB4cZ#g9`+z$}# z2O{Lbe?}Aszl$gjejU*q#M?DK#a`&)L9+e32y^iF5poH;_mq^s|DO?N$)$*L3Ay+C z2)<+-hwoLO5mJ30p~n;L<lc@5z4)IIc5yJGSp0oNx%lgdYB9Z6u}{<TJ><|kJ0k3A zYHxxM@T_J52eBIWeG^fxR>B)!P5P+aFg}eqloO4`9I^MC2-BG0y96l&p=@LjT;usZ z-3UmHc%8$ypYKa{sZp6r>+9xf_?G%aU*g_s{;8}HzAS-IrTfN-PgYrlU2x`FRIh@P z_p-7CMr9Y~)@t_F@IK(^r&14Q&J<c!+^3~|9RJaX*E1Z#lI4`IhTpYfCciZ&M<6s6 zf`54pzXZ7U!{m=MZNlQ^yS2D~2ER2uk}(UFi7DE9fqy?tPZwCW9LixO+@IQpAby*X zhE~)4<p75uejm|3scl1R!vNg-Xa>Az%nD)J&A{isORBOfoa4nOXOug~z{(g05Hnn$ zb*+f&f!k-GmAB4$(#g1<0{&OjR@7$R$n8tFy4$*eyWQ#*2J!m|0^W?51Wu>Cj(XP1 z`0B74-m1cVWcyr9(Lz8!Id(3F0Us+3h{JzC8g?IWJU>(WT|@yqsWrgd0JKWx^*D^i zfPwCy4MC`Ns!wO2d~7>f38?f|kcmnIxewLG+J6}4|Eb)Vu_>b;vng9B9}P0R-bS~u zK1GDMO86eL(ZD4N-+_n%IGY~kY|s*8l>7LIV$7=?u}`x%2>gDkPg98d=)FeZ_s$5l z>br<~73hjp7~;uQ%Dq28JazZM2>B;`54{&S{ZByUpXfblE#F48f9i|ie^TzjK-W-z z!rPcV&qv5yfXM|Kb1~4y3%kFKFuBS-_})IqP2b)TQDt9>XtH6YWn;iERTS`gHVti2 z+2kJOUVzRf0ZLO&KwC`t`97u=_`19=LYLEfRlu1{Ik5xt!N}NP<=7Aht85D250FNs zw2eYAw&%I?eOeCE91DDm?EoHM3aO<UUjocS%Zdcw5pE{`R8Fc7abud#D(t*(L_6?_ z6}S?(^e@1rv}T5I$Nl4hYtq~CT{Zlk`#AoY5f5k15_aEDwvPd+|FD+h{|Y${;m-Ss z_ES>Eap19;uR|_^10JT!0Tv+3<B%f+C1V3vfU3g$ak!r|D&sJ=YcMK?^a6y<F5J14 z^1iN3_H+D(5kF_7_=)W{*mnay8TRCe7bCQb^=kYkfWDkj9>Q>laegh*7iTime%K>; z*Is$~W!!(f4_mt4$v{X>Bj8O>A^j&@l%K3+{kCC_7mo%c>_UzES$9Cv9M^cN;SBa4 z9;731CulQQIsZ(O0s2zz?AMg@6-8*Zt#f+R<@`tGDF0o6+LMI4U?rB9yIipP-b?ye zW94nd*=ifl%tP=<uOMpwa=CTHI@f!kUAS7X=gBs<1P(?_`D}L^*m?888j4@H7$%7? z4is>BXDs}_1d=|56t+J=`l)@SaL)?5T_NnbpJ}CqJC`Z;vVKh1>12f2_mRRbx6-fj zk;1}yLh#kj)1vm35i$w%^(-x5fSH}C0Sse7Iv^adzpp@8^x~5igaye9gehNqvXTXC zAUmp6fDQElFfIptz%7gGs_lT)7{}W3-(fAsg`KWA);a%%wNQN0f#i}JFcYDs+6RFO zggs>{U^hJo9D`cGd5n14KDP?dt`)owd}K#GP*`yOciP*l6n2_d(x@-D+j0IQO?4IO z4`F9`C4=)b(g|T_Emt+m&hi+`2y^divZH>fc%=&GImS{Iuq%ay9yO1tasC7L)+)lX z5b!9IFrm#;R*B{f<2Pq!s7wvch78RtKBewr1G40pRw7GI9lUc)7tz~hT2-d%SXHLE zxa$4OyUDu7_b)$Z>SzQD&qHA0d8kA+6Kpo7)ic13Q=*v;a(-jF@u9la9G?t&CBsz7 zkGSvs%g<DN^U(f=4H9!<gQPq@w(+~h7gt|gjchTdht;Z%ht-;kU@OX$ZAF>3a<I&F zJW|Ccxs+hj%k*rJGMfyKfc2;OMhmi1)J76y`5w1*4#K%gip54<h{dL(GZw@XMTj4d z#nv_)r8!@BLMV|LBPKFT$V{0Xh%fbAwmVa{WG9J>`caOVOA;6K(?)a;5et7aIF2)L z`4Ah^uNuxfE9W75drp6<u}FsdkHKPqLp72CE*?91y)N5dJY4s!>vf~j(&4(@*Xv%9 ziihjIc)cz!A-j3zb-TGz^bTZoHw@d&VINnX$Te{<qP|giVj?xxL4}+&6*4oZH~G-N z(Zl`YrEC5BPLAoJrxzsLI7RN?Zw3jV5%tPFI2Eko@;!)jt@pnNxOnMZgT~>~cChrv z!gFKvFwHY%nk|smEYm#t2AZb~j6pNC4%wl8MKe8GOr%FSXrLE2ny*t!hn!R_Yyz5! zWa@H(rudB1N@%1Jop%FG@zO+~DPB5HriqOa!!!|4&%hy?xPPPRU;V$()NphJH<F{c zH@Z_C_;z$JHCY}tTr3;Z8}T-{%@Map_0S%QZHrFxp*tB|d?sp;!<*&XjmbCk_;`OQ z%+hdwZGXIq|283%F84NvqeJ@@lN?RlW^M%BtL!(HLciAz&r-UyU!J!lF<HV4(~J$B z4{lEqHBuhrF6c}W6>{tzh!IepV{~`kzg;H|#&&=eF-5$PsOqf|W9D4onYF{z6!$8{ zNBhx8!9CglmjBOQ8;8d5!Ol|>)*K73i&=~h9$L_eiBjyIPAa6waq%nZ9_ZcFek}j9 z-g{nJ&{e>dLhV09rf~NI+*1R3xMRB?Zh0P*x(Av>i_&6!KbQc0ggIW1`Yawz<s#j; zIQAPExI4l-F+;ZdQMrdY@x>VGVL_)(d|r;tf!LlHKAs8aWggRswJ}W3TtHd^6L$^F zeiQX52YU4AaF1?*9_jk=Lj_R2M#9J9)84ky!i=Q!v#7>zp^xA7Vy1#F{LmaoUzFw? zLiq&}eu(9w;UA-B`A%`vz=uJ+6Q7KUOQFU`y#-x5IsZ5Pp9LR>n<>-}%w#@F*qg0n zU}5g@%b4DLOef)vB(RyTu$XK=1*M}Jj^^;t8pTwO3e9Gs;pA8`#PV@El#fNj>KIx} zbZ9nq?2=@OhRGhp{lj%wD}rR8o+29lIU0vVwZtg84Meq~VLpoHiVm#-3}SgS{LMR) z<u;96ei6Ps8h&HQ$l-1A){2Gz7qpD(jToY;sn8lot-(lGduC|;<U5uLgr))RU@2~Y z_c&PsBF#K%cxFD2A_<{}`8XrT(jfMqQNYc_HTJhs5vK;teL;dY@HB{>lhV49I30}Y zs-a?e4MxNN97Mf}%fJsMpooU??ouC$hQA)nACBD(&<G+L?j9P)r5yrFf#$9uB<n`q zu!=@X`Wt24j2bbY)xt_mhaMd0p5m~=`XQkQhT$Hpfsw-u2|#zF97~7T15rj`@nVkb zMB}B0mhrZP&S=;-NFJhvjReang!hPzBCd*tOQI@a3!#^D5`f}DSl?t9C9pu<Q-g?N zvMU;nLJ!v{6`?f*10$RcxYDDQoFX(E(zEesSQoA4s<=w%U2w1p@debLHFzk8jo{_! zU5E#l45~r|{!99kK?ZtmxZZPC+#fR{iTO-ix1oD;ihHSB3o9zVn<^OYacn3)H>ojn z>m3Wjd;z9{8!$Z{D}-C{I36_jBLLIiyJyL>kH)TQ7}FO+X!g<AeIm!u*!9XW1H?X* zV}%g=iyWH>v3KRzbcnq@1YClT8y@2aKoi8r_)>&CRLr3sKRv{R@`;2)1{kfTA+pPG zs1RajBL-NLXiVo1!dMc(t@3z22+*@3H5;D}Q0}4W!(4VelHN7_&_u}lE;1dsCZA@x zbg2C-aMpCd84b@J(sL8L3L$notcEqr^sb2jhi0H+sIbe-AsEY$fkUlth#>ujxG-(7 z0OVsKV0tdXRu_SOiH2{Ixv}bok^D4TJuK7FIx-(MISzHByKyvbXdR6m9?6OFxS(}p zmSbog6%HY3t?wKK(t0$ER($=8f_BroaG>Sq!L%+khH8k5gUH(<7G5-f9~uR#?2dtU z=?VSCwd?u!QZ7D%=6CE3RBeqGT%TX@C^q^(yO+YQTg&BuG`$U|x?QH~)}1=B4_eCu zp93A-|Ks3kkz?e*OCh|r0?N*z5ilZ}Kb2#M=71a<1+kCh7?Rn49n1&3C7>trX`Og{ z5a|^dUk3K`{Yb7x!=J<ceiZcLRMb{I3S@LNylHS0%yKb|>G;8dVSYF_P;dzK^{r?D z$c7S#t%hEgK>fq8=JZ?v%*BeqQC;!*xnEv;vGCUslrDj?d#;z=1!V}+&Zrt%LG@-s znfg!~<XwrR9jbs4Jld}}-YUmN47I+A;6?#lMno;=y?DJ;F(e*FEu>Y$`~zN8cXxlg zlv+fJIQgpZ*(gOI-r9WwXpW-czeJGiLVOerrw-zJG&{H7FgtG#)eP&B2H=_f@aT^2 zH&CEWwcw@EQEOVJi=UZhV0kTE8@Gx3<Ik0MuW$^)4kqDe`y?9PmF8^sDan2-@^OK@ z855j3ksOReR9dD%YA{lBWq+-KL%Q_m;dsJNb}0E*WItfSA)l9HXb!)N><9geiKm8W zBk~-<#5#yo$vXa?p>p|j_7@1}K<_^oOt^Yrjg@0V`&kQzPe3x}%OS=1s{wlzI>j9s zvR0v%V&PW@fj$=EOO4$A33{l3vk3bAp*KQ`#47=`i(VIt<rUvuc6W-6gMG?=l|rDD zj6kskTmiy0*xHYoI}R5dLa_BHh3Ul4BCQf=VxhOes+)5NtbEDmlyUf<2ipMtrD6EF zC<X96k+$pbK#l9h8s|Yy6db~*#lptHx*TOFHiZqvN_ztM1$^3(k4w4=4k3LR4c`J| z*t8OjOxX~Mq214<AqC9sd6<W|w-MgUil+u)cJBT~PVYzlC+>zB$i7OtZMWO1M%ry| zTXm*=z5Ap)%U<qyUif6C$xe9=2!U0cr$hL-F?HHO;q*f<3TK|&*j>Z_<6&ag)1Dgs zlgD2a{_#W&|K-EvuD^I_Ve9G_g)bjr>TCGV9)0m@(;Y7gpFNB$8J|AJxK+@H)fSp( zX?QzNCE~)yl@)G<u=x=WoF-Y^V<~qA5(#15s&(#a3&FEQwdE=27m1|sRO5T@c@`3U z2Ig5#I4>qr!up3ukJYopLh&rM#6tKfmsVKccn!wpBK=Q!G&kg|cb)LuYf<p5;$92x z|Er4>R2*4<kA>k`b`wuBOf5ZpMoSs5y12XX^{@QJPxmg|RQ>@PqX$LHtPefgyGgJ- zgHH|tR%g#w(wbKl-mUI4vy|SBh}NVAi=C>4_0m4DSbG`oe>wtEY7<yyD@Y%^@0*Ca zLV@f=6@RY=YiNbacQ8W@HXxe*YjqIP%)U%Pp#siSbVam(Ut6w?D7sPw4OK1Bs)YJu zRn$(ho!a*T*l~jqHCS+&CG@_7iEt;gM6vIUD!{M=>|#sK_p#}ZW*{sx1cjQ}XXm$2 zf6IJ6qRn)KFts+K_ItoGs!=P!e&kzyzEAN`I&e0?Q->njH>rJgfzoIrnl`W(PgCvN zKl5CsdY@+d3_+tJ_icvOsHs5vRC=EuXlAA|`^x!^IJ7-AMNpGff=YE)hQ?nl?0oFR zWqRpWoaD8n$p)57u$y$iJ=nJDZGeNAcqyWtNblQRji^Iu<-TXC-@Qz`P#iF+t6)^J z1xj53G}iE2vs8em9Q;SXOJ!e*z*0ajc`%~gu^2{)v{U{^ssa0?U_?8K+z0m(D*?|W zcHgS%Vd^HO2uji}FwEi%PS^?O_w_ksyN1_lKD<mXckmkgg^2cjYTvSIc01I3U$Jj# zbsM7d{c`?kJV#J!>_AVBfNN^_ZJA15tAyUwRS3Htw(&~xd>@&XB+zIK@l>u{z!fl( z+hO+7J0rw8+Nbb-6Va{%D^;V7f11n?l<W)v$I)F&4ZkVnqs#OPG)gnU3#lA1D!m6H zR1w&npFlLv<evt6AdaU98VxFi_LFd4i+^yLh8r84q`jnXEC)5p$8q09wB^@YNfk(K z9DeUZcK&JVXyP{!MMVu*rcrwa(NaDWYLng${68+!512%YZ5Fhz-bs1K+|KyFk`8vm zEx<Glc-45HWc+Xw27WGko<KKm=%$RGmRp_RW&8=~CgdXAOkLcZSk7<5(LEH~W)t=_ z!kys7Q&Q;#u;8ufiV)v3ZKJqKem$GyQ0;&_+3(r59PaCg`g;YsJ^VgbV6`=3D$BHS z!tTcBBkanQ3)VX~;oEjKPI}T;%ov2&bTE-%Kc2ptv+UHPw{$-8&g5)Zq@Hb6dOkv} zWcNTjkA52=Rx0*X@#~e}M${{ndv1mm3pXVz(*>oXT<|{J6=A2bdsbAz4IjYb(-du0 z{L@Ofr<|s28!K9706o)aM9(yN<b_=;4@TG(iC!n%vw0s?_^bGJ%8L<d1-d^ZR?zTP zuOQ(~uTc1rjdiB5{Ry}m$yCA};;zR4GL!aK^V?Jaok{w~h!zfNWTIP1Ix|U7!D`v_ zr~-}f6Dt2qezPV=tM*q^*?BVWV1(XL!>80UembJ6Fb%K+IV5V8t)~5%0!38_DjM!K zD^Tl11?4AvfVo2BN74f3(n0w1#I-X=x(WXaf|>>iy@nPxt)`uKga7FZ0!sr-B?`4b zX}qig?&B;K1o(ut%eC0+wKh7>%Q;#aY5*7fV~rMYz3&|9N%a4ijj;SHkrtj=O}iF& z5FZIy=d#a(yx!Poa}hw9-?KOS;cSKfY9b?Sd>A0g3IEfsbDq1hs<J->`M-YUyWrPy z5GemP3rTfyDODQ_zc!eJWN}R_{L0%{51MZzgOP7%GxvP=O4v0{GwNW+7(WjtZch|@ zW618nbS8=)#tJwqmk2R$ED?0|w!!tB4#G`?PjN{QZWvt0B}3RWNN_0-J~4<jr$V@9 z5N}2&#fJuo<`ED!4B}imgewL~E(1dMAlaM=;nG2>ISWGPAl;k|;gUfGmjmI#L53R% z;rv0G%Y|_EV4-N4c@n(IYWOXhnY{n;r{Qi(nS-^?<g*^DfqQ_Nd>iObZ2U~HKpI7h z)#$=~P{+|iSo!9;D5us%`0&<b(#q@PG|_s%wFOemR#f_pD~q!7N!D?qrMf`0R2jv! z);B_<5>HB0_et>1J1J?JjkULZo(1@lT%-@JdxYCN56zSUJpD*tHfiIN<uvFmKjrg7 zy2XadX`j+tMnS2ZQh8s6`0mMtw2dDz2_(rpu)gYT{LazLcC>mBe~$(p(l#4mSIQhx z@7C-}*cl7E<n!V$CuLULBpHVF?6A#g1_|e`Son>|Qye=I=036x>=Y~pb02Afm<D29 zaHoQYbP#(XLP0DQV*4Wsh-E;`A7LPt1F>BZ0&d$ZAO|;VGT~-`&7H~nR-%5-;xnJP z3-07l*~XkU=S;rUh4Mdl8i;Z}4g6&+6(e28hzfqk{5;WOU*eiT+WGW32&T=o4z$lM zi(a%?k~L>tS+(*$3d2lU9QcFH#6o%ae2Kbijzs<DW$T0<d^9$?g0~Xe<k%)_1#ct& z8Sq(m^k8~i-*D^_?5%;HXW*kr4xhTy0<<%#QFA4#h79E@C=u6yuiJ-z20Q<JDjYas z4Fy#7SV$zXt4%8j5vQQku@y?^65#;J)m&+M7#mw7;>!17ADhyT7q<Kvzil9ZXx!e9 z9fzEmngJq830l>H3gvmI{fEQ`ycjP!V&%V3jQb%F3?3A;l)WPP9F)z}a0dlU^L8kf z_`{bwp#Iw-ERhI+S7h_IK}y0O|5p&@{G<1yU?ztfzYHdd_r4<?#qtzzlGAgqS+Rh0 zEL9|FJb;Og*pHZgfWCU`0(?R!i2U01My4tePUaQ^oXcRwF2pb+W;)r&nsmn+O3|5v z;w(l5z`Qop1TeD!=0ApEk^xQ!aLoY69*%`S>xu7QDbC;hh(r0x7THQ^k*$<*TX~{* za_CGS*<^Bm?V-G9`tXZ5yy;g7FJ}5mdTl$^j(N%5m=D{xNHQKLeRoMznN=DKD^?u) z4Bwqz2Oh@__m8p@evDUZOg#Ai`_}UsvdpfwYk5NRJD$L6_|=m!-!uGCMS*1<>?QDG zh~JrL*NtNZQiHXW+2QtRokiT*R8vj2oR_dBD~A_jErgheXLZ3|7oQ{9pI}2;WexwQ z@^ySTnQ2jqiAq$qS$UUaAJ2-3sv7>MDzarWzp9G%u^}Z3+>#CXEZu_Owx|eU6U+D% z+n?e;!xsTQ(l^Dv5W>xTOF^Q&h9AtYv2Wtv&L{*5H9V$N_%`uRxYzMYyxg8-pJJ~D zSYjXUOSEs~wa{8)(K`NBT!r>ryq2A6-vYa2$eB}aZ{{!`?0^N!xI}wFfbvbX7dva+ zDfUKZ2Y5Ta>b&S~v|o0bJT`lYtIktrZ*+BdNc*d<i=M^y%dP}CnOwUgNa|IH>!PP5 zw)>PsU0Bb(%sIhgHaU1Lb`m`D?+a$j(gMkf@e>Kn5AxcPY{+hq#$n^;^^)}|R|eOf zxct7-)cd!PMS+F#*|)5$pv1~fPvsKD=D{<4Y;ixfIKvvk2;j708)v!ocKdC1D&)qq z+{tg*B&x8@+8;1-<-ozQ@F&q*;0}&vfkTzkZ|M{ixbZCVb?s7)7N_H6gji5yKX!N= zvWa3pV!;2X1=E5|TL>co|2*Xdlsg~g7A?+1H>8kT1a{T+7Got)G-J>Kb$@9a{A8i+ zD!J|5QABOZRjlzEwU+5`2OD5jXgRFF+S_C#K^ElG&|h+4PH8?rKjrh|Aq$>wkA<g3 z3x9<d^-0g68;4kUc@)zh50%PrV`Mnz^}eI_QL6>q$-WE|su2s%i<(AJp&WdkMBS47 zR+}};3Ao^VZU*{;5j}V8QiH{9h=s9t&`QjE=h`<56!&KL3dbhS3%a_=I0AHZ{C)y1 zxFTozw7X33Z9*M<nb6^;y%*h#*W^)p>pUuNhbPf{(WCR4>Tz#fJ>l)BS9mXir-Ny^ z##^^M!Mo6*^^SN+?PWtvWQsQlzA32Ok9oCi3nlh(wn*z=D8ad9ySnXkA7)B)Ryx@t z^>(-oY26Gr#Z9yDwvFlve%;K?nvHOa+yp*wq_=`^GH>HCnrMZaYTClj)7S7PmJoio zWhOswJlPHyr~MAR*gwuhtGYrU$;}xScxyl-6YWO06HRDU?9=l!hPTtaLd$};#Z$bN zxYe>b1HLf8Yyx~`=T8!pO3cRz7?YWZfzMPHoC1gx*b%G(ElxBkEW8gZ=T%AN7OZui zrG~Grwer2m7RJJVp<53UrrZL0xK+9DDWH_`sajS3*%pvjyb4Q$lBpJEUp=&^;7LWI zuZdS+GX;!H7L>FOPL>P?eqRI!G*ezBctj<_7aZsNG`n=(6n|@lMXXsz!Kmus+)7`N z??PaGHB2Hj=cVx%8acc~?Ip!TqVy#atj=@$jFawVGgUMAzdW*vE$10m4L<^QF64?w zEmr=-szi`H8bTY=;<^?bBwHy+rFZc;ea8F%jCkdg8vZ>vJ)JEt=dDFE`GrrUZr{vn z6e+uF_z&<@I7QA~`KU#^PYZHyx?3AkYEyU1DeYSKIb|BeZ9G@UPS)-&eMKSsO{oz6 zLzB3#Mftczx6jINs(pt4bi`fKh9}nXtx1Wy?~*owJ!0o==Q0!b&4StI1chQrpK*mh zGi5KFWEHC{{)`&Fc^W)cE5EULCckm!HW=#~{`g!gzrcv%3Ll)i6o)iMo`&8w6|ug5 z(!dSiWifk9RiAP4?|4QFJb>dqV(&PZF7&O*N=xeAT!A2F!ilXVGi@&i;m2?uMklz_ z85(bbpWJ7IQzYpp+p-cVKegA&lgZhMHXcu*+BPf7`Q3PrVg|oU;jpY^$i0tQ%K1-| z9$~1x4$BPw({!wjhP-t=11BZ;zCug3u{_RFZCZ$9ZABJlFZwP<#WRYz8NUOL)WBIx zt5y2%$^d`;T{c0Z)cAcFw0|bb^(y=tFY8A>in9yv4J7%=y}pcOKhz*Ugf(=gk0|zM zQqTv2_z>dQ-ZOm^<W$RPs+fi}18HU$f+<E4WN}87T+TvDRlGRUBBxZvc-xsijcINM z0p5!w;MbTGkfVhhb~s0C$^y-B?Ow6~G{ZxYYZT(}y%6CCoiiKlQI&A=RCzH-(^E;1 z13Hic1K-^UgZUG<UrH+>PTq`pz28sy)xPr=9ddUsxgzDtlb}QXqAUR&(gZqW_OK3_ zBkPa{`p@*~WF0aWbO@aEvHTuf54(|K^Wign$;Eg{Tv{iCZfP3UExj1XB7+jN3!9z% zR;v}X4A>&C=@`$@H61fsxmMOO6F|qTC3(;>Yln5rv$BqvE$f(@5Cx!P=7EkumIi3w z0PWA){3g;XNZ;fj2+%ikK;PUzVG)-9WACqN{4Ure>mjlq>7ifKx&Atxaeb5q`zIaf zqoz94!&k31J&1a}3aDT{{x#O7>AvfFY7Wv<D_|5sPyGe-R0HU#5uYbzAuSagKw9e8 ztzH|QYuf6IL8Pr3WNr1IGW_vhjpj8ffdbH1C;QC6uR6FVIN4WhLfY%C!Gj@|q(Y_G zJc+&KF3|DHx7J%v^kK<A2Q0%{48G5iwOB7`vG%vnew^Vn@SWr+`1S+~5vr0WUb5m} zV)~2=lcdqjQ>D>5xH%IK4s5U{eQba`GllrVK&OOZ`(dZC?g&cn8qjBzI%~u(GunIS zW#JRQl=r*}amPS+sB1b4+E@WzMHIZ-<s7UR%hPkZV`%?Ob7Qz?atfd5fL6_%bZoMe zr<*9{VG6N+0H46vL&2N+BpaeJJx-w#QK&u-)HO{3>MVeD0Z^y;c&z;yEAcs|N1TBf zEnE_mlnv<ZKL-&_7lWgY>fn3AY&R+2w<LrZf_Nzwelmt=)B=YRZO0@A+I@Ba-Sv^f zcLXG?$*z7(e<etD>*PD<|2>{X|AuGpzu|fMS9r`vQyd$+lfWk=?K)NI0pcY@Su9*E z<6{EjuG94g7{UKa+1>qE-j$%9qldqvMfQS@?i}u>eYZN+0oM4vYdNnVvlZxOv0du! zCcv_fv6C+R-a2p^7ZhwPTo!ApxN<ff?(w@y$6ZJh*RtjS9cog&RWbhT+VR@Y(amus z@Yho^O<x5LhML%>Np`Mj`U37Etg5@<MnWrYiRB$ez9%R?2doj5aF-1B1G&zn-b@(N zYxk#PU`(<8#PJE&F+VCp9SP{B=_b)3ok}-75Y!Fhz2^qJqp#z2$~D>oSl;(R3m5mA zj^ClC09WB&YzNpjVg$_DO?}~-&9E<{xJ1}HKb2Eeq5c9hH9t;XD3(l4ykxSy6~5TQ zi;{~&!L-9uI85IO_t+SFg8QH%|BH?sYz*!labbcq2AgefIuZ+Sk0Opq52!=98o@8* zI%lXtIDF+-B8}0{t?2s_pJaUEh?V>j-LNE2I2QzLs(%GBJ-X)?pF=C9Kd9nxSb>MZ z-ymFr<uP!tl+HcRr8;2^s!L!sjQ;Z7iqrstO@@`2HybxBu>bK$KJfHEq<1S40(djJ zgK@~T;C{0A8ul{hKyaNM(NhNB+|8@F@FhOsQ<;LFg9`Ch*s&rWN$0%X%c}8aa{I{K zWOq^vP)Hn;9&#R&)>z0dN;$3gc9e!wD@byf&Gu*w>`(v(_6ncopS)a=^o^=hIFtXE z%N4nlIErG#QRK^D1<lTWPau-t74W2!0+p)lJRIr&`ADRH;9;EO|32n5h-pH&hT~Pt z+aX<|ULuxT?JMm$c0Q00%1{<^Q-No4+Az`9kC|w1B}an?%LDzh-&BZ)VpD;Cl7`o$ zr<V~g#Av^7jTgSoBwF5rlX-FP-D@_!>XpbQ+?Vqx>2J2@Wasmj9#;u0lgEGi$e%+^ ziKFdIC^m`Xzkj&1r$%g2<F{IF>FlwLt>C{~z4qqLp0#79-_+SNee{tdFCBUF$f$v> zqC#91o0bj!>{kwgZ}cnHap&PwTbyFYy{`np>wrjtvl#7vqbD$u6uu_sSaDH-FMgB| z6~w}xYU_I;1(8yYZYEC%WJ+?^xg&&NBTJ+_jY3q#@CmP3zdVmm?zMj$T*67glpFMP z=~0DP9;0El$APbnLVPoZ8K#@o8d=CGh}B%d=A+z8QGD7!V7dw2h^{p%#GDx7kB-=} zOQjZtm<Zon!CaS*tT`rS%)ZV2gxhR4*!BE{HH6*3fBlHs{sxQ*apQ=vOL8r@*!gcC zLZdP~BI991@;Z)un|%bv<V6_GQ3IPqkjxRvt`ILqu`#a!rvqP?E5uLVLG8Ck@kv*L zSP%S3jaht6G4q&|3VfB(aHbEdfc?q+1$Mn%d^;BY^E+`ESOK<FF0op*Z-o1pG`?wL z<{j=*E{oIJ4csxw+ze}3{7jN13wWINHoPD>u~U8O&8pq<da{B2>mAgV?kMfZI83=M z?i}YrXNG&Rn{}o*;r15FtRv}O=G=*#@ja{_(>Kgu;Xz?6{8Nu@B-5)n2Ve5%Z;M;1 zW`MOyF4Y|cU*6>PfP*$u`OMj`E@7gAR*(vesEkA45N6s5&6V2-jeg3OBlnC;IE!F4 zaac8ir5y7l1J*EubPNPz;V+;Ks5_m|<V__slKk!dem9n1d%n({x#r0N_{zLw^N~6y zUb^3@cgMnKV);(Am%;VYF+AVVi;EYC<Kwh}MQaH0IMa0Vn80QnzaqH^aXLYiB-!em zMCsQ-B7YJ<io}I+BLerVVZ`G^)3}=gK2%51bW45!L0fse_%PIc!leSH+zxG$r6+@A ze&%^xlyI>iE#3yy)WvH;Oda?F;eZ$upi1hTRB6r6Lo4??4+U{Z;iX}aa$P|TL%NOT zp6S-*YCsFovc@I8U_q`l51xW=Ot3tv8Q+1!e;mZZzl~YmL^rqe@al${5<^4q<@1^x z`;Va86gTL$josV1(bd>130$&!0QMXh(ZqcwmF{nN)${5mYvEbkxW$4`C3uq3LtAGD zEfox>57dLVGo~hw91v_N?c7<;KEVF;u|o9;DL8a`<6Tm|?s2D93`ZV!Bbkn*c16Vx zUlwzj+-z<r>=~>)jOo$;SVY|Mn`H_p+&_e5^W|Xb<YTa(5}%9f9@4$lnjWyZ(T*`C zu-;uF;&@`<g!{nNrdqF6b(Vx3C6wJupFVM!C9%ScI5!}Uz}CCLGB4tox_7&WcC=ZU zK+0NcVJbkNmg4+|{_|-q_{xG8WG5Qg_+Ew)?*_eS`KhNE?_|WqvGUQHS;+SirRK-* zTP5&`K=B>27v!~_4Gz7yb%?s|zcqFWp%DSM2KEWN;l?-BK_5zZCEJ}Q&t5Ei0z8<C zxSdi@3F*Uj$HJ3k4Gg=wz*J6epszMG(w#%$g%Rv9?CM~&(yn`1FrpH?e$t2iERatg zWyHZR56#iEh|ztk!)L`ogGt9I<DrcG8CtO@QisNH`jxYkkq)sq1(tEGI41I<8@rhg z5Rj+APf8nRQ(!08idhjHa<l*ipQwu|aw-v0iICDnU_XHqMhficT9J-?{Wx3jx3g3z zRq-}g0)BgXY^znp-Fyx+vE$4E{g@FE+y%b0U?rOX@IMZG^SH~+M2LBYl8(9^(gbt) z6hp}fxM#iD-e@I7lFYRu=<n;OkOkmB8F0BRM#~gbzZ}x12GHEK1ZPT=8ZXhCKM2l% zZ{qRd4?sT7pS$P|kk7VJ+!)91ZnQhQHrC*Ml0UVVgc(~It#zM~Ht5QyqSOPRhs)Wo zq!rCLc!QvvWzjc)Tf+hR5ZRd!n!qyR0kAA$P5Gcpi?|(<#T*OQ$$JFQB>^kU6VOGX zdD<`l^E4W*yKD1A0zXWITbwJwe3&cX>Gg4*MtngU2?Oqkg@50J^~{8{S(aNHyLG^a zzi?qz6h=t@{Bp!=8PQau3OrC4F(ryT;23d%?D=*h_eCSu_N~2O+m8Fbp?%tx?j-mZ z6XfNqlz9)|t`!##AWtT|ixFQKLKZo+%XAGW99X^vba|H<(`Ugq2-iG67_m2^`o+I@ z2I6UK+;4hMxUrC4fx|7dy+U~!c_|<3-(YRxMx91DpwG{oysV?&zlu%l6ewb+HNPhf zJcq`~{>*>w$6;O^y>*&#;D2b-#lkPjE5I5UZ~rWa%jc_DxU;_*?hL?lrR3a^p~4BD z!`;`68NBj-c)-S?9D4(P{8_-Cz|kV9nhUKUYBu+uJ&eIE>3VBQU_R(SGxvg^g44in z`$?|h@Mw`F2)oa!4nT|^Z{J_>+1Ud@@OUk(t^ki({oWwhEwkUW{@5!8zl43tmlCEs zorRZdwNCGum-CUtnsp7B@z$O%A%^R-8jvOe7|@&mZN<xyv;A3ZKvO1X&1kkFC^CQ< zvl>`9t1UtGEy%kzr$G#YA6x$UKDy%OFP8rqA7im%<5FQ3$~85jOJm~x5K?IrTz4cS z;t}1G_YVB-r*}fi#2r26;#&L1N1j9foKpDDkIj0Qby3DntM=@O!#5dG9%{?TWx!Y7 zv+?a#Iv^gy#sq>;qUM9CYf>cqZUQ`eQTyhjY24K6=em>K3G&_*Y#q8BF8L+KOE>4Q zIp0SW{VnT_!=%rV<F%%IJUXB3#V00&G@3aV+-uDFDZQA9n7A}Qzc=&j!u-<Sx_nD7 z_+1Caz-qYmUq$7x8eSfFX$@9*xz}8F?ue@J(wh7p%tTH6Cb&9Z-Mc0~r?)ZxOaL>$ z9hlm-r0mZKf8qtqs4}cB#l4D`Ft5#OD@UcV@cl7VigOCkcU<g`!Tq6yc(pYSRb7so zbOt_%AQ9AYIAiEz{vcj-I>>V9AClthQ1hDNDD@J|aN$>y`8dqmakxJ?j&|jkHx_<4 zhR%lg4J)8#fb70oq6DJ5VFt2u>W&&6E#28*iH15Pd|P3{yC^*)J_X;S!+!>Gs!k=W zv)_Z)y57WcN?2*DBj}`))B75{b%Az?(&OVa5YjrGBeS7hV$65tI;@UzZI!w~>&R+Q z0R`9g=qeaLE%-&|nPY|j=+(>Thym&IU^1M@;{8#=zKn%O1rP4XSOXfa2jyLhqq1vp z1S1|bIJS0g$h{^Nu+b(C3*|B<iMaPwYb2oN2(U8NRip(l6aGiCX@W$o9W4=MuUX6N z66ATUx_}NSye1_wfWl+_z*Uc%rS#eOL_NH}3VyU?{$bT0X~9lSkn)y1kfWQJC*`fs zOKE1j<a|&)tiyWyuwuXmQjq+3Q4ZnESfe|(-d%RMSsJZ3zS%m1%*D^0J#r<8n=n24 z*OPzARty@>c%L7}$6$FiqC&|G;1X9soG#5o7K=j9qTF#V)0^m2*Bg7kk5mfoMeI36 zWzWG(-uW=r7u0ZlLCgdiV+IW;*<9GuC{%ceVDXS%xdgkhemAPG65Jnv@5?*_oj-VI zj$PAR3Zvo6yqHCQGQqB!Fj-1PKI_kn;JykzC=!?i`!;kov^qZN-o&+Vw88Qdo}BHT zC-VyfbhX33W6=hMEU9+KDC0V?u^_3nJ%*XU3mZ<?a5q|#QV6RwdjQU^nA+^<fcZ!P zk5u%HM{W%6O9iERNks<O7vp)UvDsWT*OwU!C&n;+Hmn~KzVX3<qwkBsf8oG>3}&dX zbN&~>a=EQ1V^}_WE-8OZZ!)Z3U4Cw0{+o#UG?>|W!`wd#X0}&CI;$`fYEO&fyDetS zSX6Q8Ebbp~&p!-zx@CCjK(IC^e?cmDG)NlZENAKqs*MW6KybkgXR(E#?=X|@D17BG z;dq}mxe4Zzbe*W(P)jZ)>yUjxoI!C%Za*^X)tZj_MLBi7SYc@|U@zp(nwFz~syfir zA%|z1T+0u5X6Nj8Enbq+5YOvxGOlnfpPi#$de@S+`DgkPfln!rGp40=%kdJgmF>Zd zb#=)-9i9$PZJlvBKGj(FjmKyG+gW6zI|=`-^9G!LE#mp6Gm?2fItkbGB7eh^l36Zc z0~hO0AI8BdCO(7435DpkZ*R22vnc0)D+B1T9X76*lVe!girO#sSuwb^?eKgUG<ojI zHMmd@_B4ItCdy2%c`V$-6W`QcbQZjcusj}Bm`pB`GkO-Xz-R2d+zU>V3mb=t&o$Xt zorq%>oqy<MLj*|_cGSYR9!;caCG6>A;d`P@^3C6(C@Wz3C}%-*ot!f#suVDN)0MTh z^<s={t>_4x1Z(#$s6~bBIOsyyWsEjsg}Vc>{Hf==;eW}V?S1e{Q)7lbC;!<m=Q&Cw zoqnz(a|yy}kCGg9wP2;5Gu46bN_1rY^zaj}%#>jq!!X5BG!u{YezUyUiv6^=$*@A1 zg?*A_ch%(wJ3P+iSxd4SIy`tuhiiHeGj@24OK%Gv@EkufC+B&WuHnFPY~1uK?pF*e z;GcjrCnd}A*=Q6E+hOKROBc(1y)?wYC}FS;FV@;vckr9#IyoQwbRoY!SaaogQVsMV zzuLL9cG>==7nV|?TEei*C=t`~6917`uWnn5Bp4NHA>w(>g#&?+)hDIb=A4v{8%|1Z zxK2uMucWSiz3Q$U1hEzBG|6?qR*-yBI#_&C`h)SL)LBgZ^qw(}Lk~D!{vP}SOunpU z>-3++mn~Lj-7~=qJQL5tv+*2!B>n;LJ_YC06%cm9(~31<x%em?=HhC>s`z|-H-zP{ zy>j~Hj{2v*e^8{bQ{Q7fIh7dfx0^1jHh~l%vMRHx81a#zc-S}`J~$jM9}e#y4(sGF zyE;L<8DiO0C{{4Uh+hq6Rk6;jO56>PGounP<G9oHI{X*mAS3<_ytGL(+&!AH7y%)Q zQz%`ES>VA~h@%JPU3*X(;N7sk(I4u<|7>FQ@i@|#2u}lqB&Rsaf}}ffSz*On;BCZO z&K)7EW8q1IvWAUdJ$YaQ0A1C9bQr>k_Vw^@hFdUwA?)pg%g4>Swzm&Rx~3*L{b0=& z6D?Y3a}#*o$FQ4fM3yM!3{_}1o2z_K%vL6dp+WPTe|ArWJ90{|DN%`A27d$_ZERxA z&#^~JHYp7j{ek6#_f#KtCpwu#!;9ccF$-ADz+Wg<vdIYFw&RT!eIbYKq`{ls5o1I; zdgG2C@1@0QQF*U#gR>ymV^F^}plfe~{^*WoRB!3dm`TD}TPg3dbcVEQ8g?*mMNFHT zjAIR$9`k0JqT!FCrcFT8Dgrb`tfUOu#fmL@)MgU2`60|*qP+LNrg>4jSX4D^Pe<+D z1nsd$8S(ijBYqae^7}!8e-7bQ2zNu?sVFYz{U?N1d)Z?tM^!VMjHXRMgBQ~y8n#6B zn^YnRZF%AOY={5}uCsvsqzB<wi3i?pII4v&YtpzqaJtYNlPbwW+3svvx5dH<Fmh%O z`lf@0FZCwq)h|829NS5Ds>MIZ-z8>W-&fIM$577oGc)=xW|gSw5sxN<4@WA;aQnK` z9HlS^+3u0UxW`K1o8w6U++RfV{0Bo_#f0~TP*=&_*1OB+Tj!V4FC}#Ck|yZ7m*YFJ z9q=Dv@^>vGZ)mZ8Xw>k&gK*$5>RD^lqW&$!XM_VYWUaxDsKpF9trDMp2SKRCf4*6B z<*~+vwr1FcV+I8A-J7r~9ID)m9^9C@MkVeBA47ygExz-nN*r+v;8*Q}y6^?w+w9Sr zD+8-A!!AgDKX~jCYl()B!U|)L5>-ScEyf11o*6J_v*9rx&35dBePxQ=UpUp9;NLa% zWETx5KD2)X3qfxR(203dss~LeQ2XUUy)n58POM^6WZ~g_`CFP#CB0FNPO;*{5iB3< zBC-u3<%UrR!uKa>!?vKGXAqiuq3uWD`5QdCqbnRQc5ecEHTq&I{zYwqSRT0_W*NQ# zk<V#t?=r`-YRqf->6VnGRm*^m`au%7dAo$DRP^5MxCct_sj9is)_70lzk+g^TvO3| zhvQBtTLfjk#=9!N4pOZ(S9+7Nki~gt6?Sz$j1m!pn{AE^S?b8E`%SG@MQ@d(8tPO- zo%Y6Am46LJ!`fkNHiu0vvHUbWrMmJh&;{*Mw!U4;(y=c^!?zAYO>s;GsHs(!pUP9p zD}NuP+TaVat4*%yAbEDmG{bqK*X%F@lo?t%&^WbnNAQ@GV<xX0UnT!vC)})FI~}h@ zwk883zAniSP_nkLpf?s)#o!A%7=;&yV&P~Mm7TMth}uN(fuOVje7rUQe9=IQd4tLe zNTXhX?=4U|XAqx;!ObqJ;b-tOvG7FjwTXq#Mo}3pR>OFtS7zAZd@+EmLBD)$OpC<e znBldLVYDW(GCr3)%p+DoXv*MO49`RGfQ^LP0pXAE5FDY&gs1fmLbC`$jG{qifW$E~ z;^D{#F!#}Lb7a-)n(B|GZD!Mzrj+*}JaF}c;(2b{6^xwc?73X?98<+O{_ZBOT&PX4 zeJJN(JwriEL)-xu&KD?bfNnVYkYg|KbA0`3!A^yl7XG=-DvxAw7WYR<XMR>nHZONj zonYC#f;Ik8$}oEz3a`h(!lQ&o1#6+J1gzA>jMx{uuTmktC(oF&cd5J*>Z+Seb-;lI zku2_0xR?381naHQV#M?bhtPeaCI9CD)s+A?tpxZE=;J}ep+CY{Yt4#6#aTrm3-)DF zOh{8G6xohBlVOLpz6sM)Z3$htcy8cq5M(~2uw4o8PrV64y<n9^Wtcc`=<i^I{$U8u z*90)Vy$Tag4ldQx;>3tTTrMf#KW{CS$robb^F!CLErf4xlfO`lzmpK00pRWgxDpA| zkAqpgCZ!x8(bFSps4rY^YxU5M>+!FKs9fb27e{{3tC~OrXwen>0_Zq7^jYvJnZIIT zAF`(wQNTfegs=Zd2oDW&T5tfq;fD0{!|AUejYGO^IQ`jxLQIg*I44)W_N$)1J~%I! zdtFv5laJ4P0r=)HJa51gfF~b#@7rNn@(rY8@N9bIz6Iw$`g0f3;fEZDffH_#B^x77 zm1vO~WI;kPqHh4c`-4%4h3_4r#ToE)3}B|cl?jIk_{SQ`OT(8i3NPzbdR5+Nc;gV! zO!!}gStJAK+txdyWHWg^4d2QSQO(pIbk42}Xs^qbZNswV%%Ij!-ymDC0KJ1AuAL9x zwS6<lG&6FV4djC?v4JeH>XJd0qz@^Y6>^C(pl!?N)>I=20^jmQ*=81eN?6eXec3ZW zizoY6Ia;miUi78{tXu~RfX7K5c>x>!SGYm!ngBK0me1-CaP};CLKM4g0(_TbL%m{q z?{gr@N`mZPT8(7u+x?9A)&L`l1E^N98)|9)0kx2)O}q}(dzV~il<C_b4i**Ed$u>; zG8ItC6j;PdO=zy?fL9D^Cw(}-uosOy7s2uzHD5^+*1@wK1CK6^mmZJ(bhzoOOO#kr zzU-CVBWdx?Aq-A}*2-vjU|7<Z$?Z-BTBlUsTG<)2{Pg8)T70#i&igD#<$VI2iT<Mx zd1v<zy<r{QYpFo%3)dt2&@ICn2@~IFqQ&-p7XE1fn~HR50!YzQ5j<btOXRNv4+rH1 zwlx+OBbExOx3VI=_YJV=5qWAKcq3WsV7>fCrYi^NdReCHuHH16uHT!E1o1pR$okdb zzozki7gUM<0X+W-;QdDc&dGzgxKXZQfPWNyFM0%Q$?|>`WGRxDNIvdbbRzNDCDj9H zPa7KMZ!Ls~x8H{H1rSF(ZZ9z=sl*l0=Af!|f2eEPmm$~&3mVwdB!kr!^=J)@Kr4&@ z0T#0TfhQ0jfQQ_xK{Brm#%gy^?bpEUF3du<uK2tvdedbYH=^3|Q<rH(rS!d8p1ZYI zZhj@j(ddlx!(Ca(a&(OoRC3SXG=24beE#Wx(y_|zv*!FS#@+<JsVeOsKX=K}Hqf*w zP|B92K-++%3sM0kBqg*73Ih7FIAhwvc+;YkWyXr~k^*WeG6H23+EG~?2StUJ>5LU? zD=@C(Ov0iCbSxr7TE$yh%%xlY-*b~zoSAq2Klq&9n{&^3&U5zXJm*<pReFtkjj($* z(a#8^%UtRH`uq-c81)NAGj=Hhx$>YrmhyPV<_LT{r>?VUPaP<I1^P)`TNG=hGRZ{M zreLC)oequ2h7Odvat@R*;T!o)C)%yJ`Uv(ND4prRJ7+cOOGo9<6<H~&Le><<5$!K5 zg?43TVM%Y0y*a~lsRX*AC7%R1xu%>m-^5|e+oX|mSxpw!lz9kR+;a?f3~`lX1%bv3 z<++)*Nj!<tvpcoUZIZ$QYi+N6dX-P!2Dy{yD(H(HWK67hSyF?mP5G%|uD0qH8fZDB zhWq(v_by|=Ggm-DHYPc|dr%I!Qry~SO;P&P_004RKbuGKN|8#yb6W+R_9IYvns8e| zdS0C)(6-uNS}4%g+LOpa|H^7cTM@O~Rx8jd;kKe&s^fA?6(BBOpe;q)DHMDsR9L!M zV!gC|K9@ONn*@d9=nXPs<UJfDax89|H$j*Hnv`UO42iiK=>H!QhRrqQd?h{L{Ysj* zJ=1+ih^c4vR|8Xpf*MM@@@+QjB6~CV(_EX)ex$oY3<aO=dQC`i)ZQR-QyKxw7S+bX z8pbKu!T7|--yk_((0dio`zMDH%L9125sue>QcLfbd`Ts<n{ax2uR~?3vIYHkx8dDh z1x<sf!SA(c-Lh=N>>=Q-Q4U>b>WfFRAVpIS&1h;(q@N<d{bde%?PcXIR{Q|8s?(=A zWC!;@(E&SPqN*>-xJ}B?&%obIy$OG_^xLG#`l*ArN!j|Tnr+e@`l->|q^bJR&Q!?g zsq`7(3V(Vv>g8>?>)s|!@otl*mBaw{p6+jJUXU`#4BR{qYR}}TymMksPw+VI|0%8T zf@C3xXOv=HuQf&Gi;>4-jPp@bOfE0>$S1D;{h9Ic;_T39I)7xl@nZ`aP0TH06?@%G zCb{cKu4|A(<;cw&iu;who#N_#s~{Rt=rtGywJQilu(c=X4e5<D^5}1k_+>9^0;e$X z)2q>03R4_X?IW7XH>51oWG~Vdg|x=WNQ+qUgI;{Uak*rh^wG?o;4kpSl1G1Q#J79N zM5mA3mg~#(%!Nkp`Pzv)2ep4h=y@B#K56G0(u;stYuzTjh0tV8uiPem2>4S&ze5|p zT1-=G#OHeZg5UHks$npzF2Ekgsh(|8%gjf&_XSVm?IOcq4t|}k5Ocb)-eoSbEt*N^ z;w6ST6lciBir*)nkozr}@MyO~eJI&_I<StmURijpZE>=i*D;s=jL?9<&!h95E1h9Z z^xI2K<{|z~_#5v(S;{@ewehAH@21CQJ~o2q+L*%k5W|?5b##8m<j4{V`X2CJEp@|P zCuDmC*hk}s<q5bCoGGsx8u3-w1K^FcUErO7Y{Q(`Cb0;Nz6TomA@Emeyha?>TkME( za<H2O`bZuDGY3`=UUc-?Bj=~4IjklJ{lB4Zlp_{;W&L+}xCMQ28}5DBL!>eq_kAx! ztcHYw*Z$@94st(zKiwTSq5l7WupS+N_2Iw4y4m{^ti6CmX)iLCO8*aYB)i_Yp;|ve zcv5Z)qbp>rlrHV0HP)y>A)_@k^R`KYwrj+^o)NCFZ6taJ8VcUkE4R#zEf{ZcJ2c`Q zXhpdVug7V(N!s+D;7GLHp!Pw`AjD|I(jJX7=MXEmURN)@PkHi|*85}cAmD*95V;qn zW8hob@AuMs^NFsHu+Gnptn+De%=ehw<~ioMCO7-Ksie@I>7M2$yHX$(0hyB?Q)x$i zrknQj*gWMyjac8!n4%*6I|4OIMBgSM3`hTdj9QGu{277%9pA$llAOvzx|Tv=$>`b} zzA>5Z3#W9r7i{)}<0r3*V7!6@!<*uq)7<<adY`aM<|xd*r7kmj^T1IEkLCV#auL?b zc?c<}6CEGNF|O$tnHTPlxo_Msua7!>r{fvNbKs-wb?pUD>s7hFv44;KD-F+mt0KR5 zeI>oVKdSOP#^{sy9bLKFkq^G^^DZhg@N4-b^U8JJq4rn0kVZd3*m<`uCrzldnSHc9 zw&yKEd!+x=9@h)eSMKy}QUOA~p(kiVdpr%B28HOcm!Olu8J=`5f+VK_Cy0<`9eVB6 zNKJ{@w22o#>G|KecL*faDmphl;etK?BgbTp`OJ;$?oNOugWlku<rB9_E?;>=TtzVu zy9RpX-!Nc+!HNh5zmzdpCS%ajvl1NdhCl)+{9nlw+RtIW|6gE!-V-t|iond0Va}Cd z{uwY?QW=2dW^f$l<)!5Gg5Nfzy3ApQ+~UvSKlfkY{}J%1B?#JTybOPe4F4&>=SX3o zH`pk1Ykm&#;r{~he*y8f2*eApw!s-pGQ?j1B2T6Ua&Z!Q5GRpeYKI@{4W5cfA>{q6 zmGAs7@b3ZqVG;O;WcV>M{E2`Mu3Lc8yeIF$c@A`t7h{x;UAp(vvHMwM?9#EljHUxU za20VO1WF^1$qVxorr;^yJ645)JV!0)lFpkoxwpUC8+={H*Xyu~Ro*EBC$dBGiL5sm z(>JABb<2s2>bczxsfuEGB>l#pjZrmBhERg{7o-5%;fi(|+Tk8KR_R#g-}7n$ax4k$ zdzI$AA3N&4SNCA#{df}`hm=MB-?|?2z`KOkiW&R@=#2Rntd2W8uy=y@qmDDUBcinU zZ4R6^#mik!Ik(%a;%ysM2YK=S-XVL=;kH(FFgm9!j~D0n?t7KS@9O2n&tMyD->Vw& z#7(aH;88l`9+PKW>COLpyl?3a8COMm;tD+caE3?Zo)EfMiqT}&6*7*PW;x!bQl{#g zfrF0Q96#cwax`ShkKhR`Cy#a<3efW#@eh^Dd_XSquK!ZzT$Fi#q|DdlGVhhkybWc> zkeDkClH0<`Tr8tJqH<-3L;efIae&xA12)MJ@01}b08vA}z6`rGy~luKJofyT`skT4 zJGVF3a+C62)V|wg>dJb3pDD{Z8T8eht|8S~cV{`NM3>HO7BGTrl;V}?(#%PD2X1)n zkajf1xb=>YvCb(DsSRdu?*87DBG9$5DJjK$@G`z=iE&(R9^V_>DuI^t(;gWj*X6ME zfA>gJSI9U#(mJE$x<t!$d8uoqs3K2XUWRc`d24j6({msl|8!o=$9Sh}`Z7EpN1$gx z5p#&1S?HON(#v$d(78m{eR`IB1L?NA(uCo{SJE@J(}dsV&QBtce_4!`XskS%r}!$I zI)RwAUoz8l?rDPFv6NR-KIKxws@zjf$Yfx3p5L|El_*TQOzXEvuHTIRQonhq-?~Ws z-hjpeXDF5HHwpDq6V2tb*x&CI62;iqxvjHiJ?>j2_s%MuIR9xX$(=+;V)Qw*?Wgd` z@~UlI^NL)>YrVldxi3`_Ud0ueSMgA8VgM;EiYi^sNAy{3pOw;RcT_oeF-z7~i1sa! zp)UsXcGCm7B#<{kv7<Gxz_A49g8MN>-jDDV=E>>iBHeY<g52+}@Zwk*0_6o${&ya} z+%Vmp`_+{+NRHi?Q=N0LEm}?QZ(s4>dG}POS%?>^lg#dpdf<&yQP1|Tq>*L04xE9s z6#uJ{axfMtuO;)v08R7H06im7{6EB#q+P*HVX`w-pgoc7WHP6@+3~~NTWV_hM`ya; zxs=D)OpkM`4WpfkLzG(Fcr!(CfAgGlDFYPIjhYhdxpCNU(__RJLw7g~X#KW89cIFe z&f+)6+<k{91uN0~o0+)BqOCx8y!GIHz!%S(dPibjD7YIvr6g0n83d{UG!x__>A2dA zaRpbF1LKR1H##ogjf~6wvFOKdI`#-?EC<3;gqIO0twqQ7PJE|hn$j!`ZX|kx|MS)z zOBhWH@>uG|gN{}VP|u)U<yARNUMCEot7AkaG%&aRjh>Fb2|)qSTO5fIS3;t?7^80p zW^TJg=?f}B(oa(l!%Fdci6qB{Y0?Z>glcC&y)mHNh?SN?bF&6Da-YH|ZVB8<fByyb zp>vVakzpEgm}89d#E~hf3P%j?+-AymZeyG2j7gHQegzh(u+IGK3;_CH3K?|~e20aK z9dV%lDb=?}(%gdUVBqSIW+baJk9K!<l5wxtPMxQgMf-wZhM3!fz^tDhr2X+}1UJZo z3hWkhMU`#EDYGzhO9eEG3|dCyR5&>&Gm|#|`n`@Pm4kfjq*Nc7bi1E1A%6CzjmnMh zb#R4Iu`@RgYSHB^5#H;Fv2WU_i*>Ya8v1<g@s1dqa$`)aZKF-F9ov}C7VzR=UOgcW zd)o0W#lix}NZJb+z1X13IenEG4_`}7x@ej=N>c{d3u^aD@l7p($k(f!4zT6#^xMh6 z)SQj^uA0+H9N;!_UUM{j!W@Ui@lOK0XyNo`-e0I>&ye;6?tAP{lw<u-fZM_dOlEXN zHFyO$$(3=<1b)icOl<>`93$Aa04HrsG-}T9T}*p)j;(Ct7EZJ<BvswWWNa)uj$ea0 zwVD1pUUn&>69!#v1FW`*J&=Drd6g`u`opl5(U>jUh>Q{T2r&X~A)`4N&xFPT!8l5j zMePGjD9CQ0@<p(^6`~qC`Yj|ITt>aNfvqU1tFTeKc8s6eRp5j@6|dTcoqo+$-Z-K{ zxuv|3E2A^|xsXXH*aG<-wC0noFh-<Q`Al1m+C=DM!458@ZCb$T92_!L9I{>aA6SnY zA1>Mqt+_yU-KO=p%aVT&^C`B_^eb<HcA|qbMVmR;TF6FizJJ%W<&f<=a3;US4N!Ii z&ZL05p%FGn8e?#8KEFcyCv{q^|6@;4jin|*NUq^COb$q<xe{la@H?R<(ZOfj2rzmY zS2CNPqbVmy+mM8NCB_mAaI(yMwBHtyJ-7Kev5#vq-{oU1-{LEka~~7_%6L;V{bi+$ z*u;A$+~#jFD<JFM0(tcmA7?og_#Rl(-+R-34E$ie;craq@H1i`^KR-jz>!!nEnxso zY#0t8M*H8R5b*|?L>Zz8hzi`GydLO8k3XAsvzfOXfYw`%a3Im{zC*^o<$(_uQVE_e zKcwPKU4c#T%)~pU)gKpP@<^JxG1_t5oe0TF#>j!cX{m=^xRU^y&T+}z5jY?)(+;?y zHPko(Yu;3ZiB~&jPJoU%RwhP)yXFxBBcHyowuF=pZ$0>DHDnyP^%J^%jLB4D!0hjr z2b|)AKf}HkZgLjtp^%s-oL7zK#SMIl3=Minkg96&QGbSGCV{GA<Ic^Pl+_qAFovWW zGJ!k4$Hw?)Oj4g~69z?aY;%7Yc-xv_Pg1JdRjTu6Op{o@PArN2-j7|#+7z%j=nZ^7 zzr+swqicxBy(Q~bfY)JgJq=z5)qD$U2VAUYg;9_LPxNUg4r)%riILi-yBr#ZTJ&oM zj72TJ>D9{qBXLIsoPY3X@4SMxI%HFwx+DyCLLwp3f?o$H3{#|K)dMa2Szx~~f5d+G zsX)J8!J$VPO@A8`BXp{8D^A;*j2#0HlCcBre9$og5@@vbL&4!8?NPK=)64C8PJ{M3 z*{)~UF0R9fwIRm7-#SwC#?ESGVKqh#dkQL^^?z`cEK;{PCVc7d5TXb0>~Q~FYLgS! z%90DWw%ZiQy2d&+*bx|cN1#%&(Isha4|HU3AKRBwL#oe1`bx#6xlJYXuC>3{8MN1& zUM|A((bbKUIX&S~qez{OJ4CE!L&r~>mcbZ3Xsu8%Gn82K0&MmX^NkBsGr1p<+D|p< zhTalGVUO-r<JMI#_cWEYNNDr`#xLZtMB_<SD9GcckLphJL%QVWjo$=L2z;bRPPpmn zOV4r(Fh<tY4FLzz1OCEKqkA$&w@|a|+gS1>0@+hxi$z~+oH%tv`ubM*O5k;>=T%tc zSekUe-7b&Au$|}SfL|eG%Nh=8n4yJ2F|2m9xw9K6uCTiUd6N#zRbAa6mj*cegh6MY z9&JpfVg1Ft`qvh&?xAfH=B13Oi;Lt9Yi3ZH4|ffG{OFu&YA@g;6(lmboW@i33wG=W zCJO5(iFi)@br01t4a3saX#k5y&-{c*VV@e9nB4!0!{VReK=D`0`TDV#-IqwQfF+rK zFLT;0WtP;vc*}i7Wn>o^>WDFu>(7>b^{oykC8PZRC32K}K-$O{NP}%-N*Lyjk7|2U z+2%{aZ=FxIJcD}ubZ^0lQ9bP*HP!>V`^{|(r@eZPHBa!fnB}?9HKcs>H5F>}AU}N2 zWVCzUgA5VgAP25)+-;lgyCgj3T++g0?`Es7dvtDM{2{>h|MFJX{up4)x#4dm9OMSE zp3{{Y&?kpV>dDv<Ep%+^(8rPwEs?RRLY<n}czzhT`5Cm_A^)-56Mkmw;#=yn2luOL z+$jHq$N6Ca8IOjWY76l4QapJ7bq{U^ExM8)0+)n218dK*fFhOkg;F<kt~i`?3)Bsr zj~v!Jerh4Mk%^>RbeQTr_P6AQ&Luxf7v0DLmg6w3<^EpUh6jCY6(m1qu%|Bxlbpu` zN7wHd8Kx~*|0Q99vp%q<VvkL1Zub}@)=Woz7V>QiP&h`wx#59)CFJ>LbpGlvTMfx( z<Qn6AF;KgH@yM{=*9G6|iXG6iz9b|$cS0Vrbs@Fv&SIv=%K4m!DeXB5dL&dTF#qr+ zA#R}li{)~zy-D$nMo-M>%sl+-qB`t+QO@t=HDEpF=t~IO5NZ&b5KbXnL}*9oLpUl^ zDpBSb-_i9tu_<;8r1`IVRu!?3lo-_o+31#xB9bQh=1c17#QdEv-2n;4gS#O$t*znV zIrb9hABw?ES#D8#SiAx{j?>Gt`@D?d3o?c`<vPsh486(jsX?1IcHVb*b;a;{(Gw#k z-0Zl5R=}v_ow3m6ZTBp~n#MY#uwM_G&uZ>Kpm!=eUB3laIP62Ya=j8XRTFQWK=qJ` z_$RM-0ukTzK2VSHVR=d)yU?d@rdFo1d{jSns;@)X<XqSCPP--cCMX_CU0TJRUR_aA zIi<*n_>9-!D604t`20=s6m1pE^`8hM>Rq5HiFv(GaI~T~k3oLpQM?neU7~tLtFZs9 zjPyu{dr?b~Yb10Y9<buX%*A5u%<9q=#ndp^V+t|y`n4ghLl6B9?0$pko<1`aY->0x z>Ajwcx3Jgm^yJ&wNzpm2`O|@AET=GMH`BQ`yq5=6LXyX|q&Y$c0WrSbrW)jcBt0w$ zSc)pzJi44V*vm7~Sp6Z?>FQ~=+FsKk%pSn-p8*~kNgi4DTaO<5%y;K4c)fzYlyNF6 z97$mwsyJZ#>fF9ST7|hN$@>EO<aXz|fKIp|EUlk(OTG$!e@)iD!={e#Q+(g+q3!bz zpIJx))h;+L2<%I{A=$01?-0g1mj~GDn3|VtKcH?@=KVZU*9VwXqfe2V;`1Dfew~>T z0~)A97~$MIpbfMYyt)~k>klW~WTp}G_ZNs^hzrmwqYptgbBbA@rEoiT&u$K=jnNpB zYr56rNlKf)Fu=>di@W*pKcW_D=WpcsLC4inggFRwZmh<W(pHp)q5Ee^-5lt60OyD# zTv*p58tS&tc)@*{(qa;-g=xpgIGNsOqtj;iFL_1@Pab2d57iheDsAzwgaFMBEtLs- zu}^z+P`ip_A&I19XiR<ghc%`mu4Z(Jykp|t^*qiXcePA%(iG6b0k<!d$-V{)ozO>9 zanxQNN%;Vj@&xz`pxQ4RZ|ZAqTSMPo1r7Cv@Lm9Om`%sXu`t?Hqu)@()I?(ir=wl( z&&Q}XVN~nnQGKH3YY)wNFUozzN8g?Xt+CHfJ!$vroeZJ-zqCjB<yjL(KxKd!3MyJW z(c-kwwtzQntAD?zS~=96(`YIh?cEG*lrU{T+Yj?~?n}^nd`6~{!qQ*FMDJ!tWWFH{ zwS<C0Zf-vYn{z*gO6wiW^9L}?Y<~P&vwIfrYe0%);J_a9s;ZY(T&l5}QyQ%%Vq6?G z;^6OUx7nJ+vtCXd!(LDh_Kk*Zp)%$;Xh*bG#)VoVD93vx&4eoC{}6H}gIc)ibE=Qd z&>9X!4Nqbf76w+)WvFfcy)F?O0d)y@3xnE+aLU)H>~EkerTzuzs}S=Mw0j_++>=)i z8bkH!nM(qs7$Y=Odw@beC#BFkW((#m#zL;2soqpi<NFXl7(R;0c4%Z<n96#rN=&sH zG6^Agt^E=nj+yGJS&yE++i^gE_3a~U<$l=9Bom8$RkjVCs}H9MI$^ZKUbECOAKW3m z<H&51@|N!np)HUqTcg|{X|d{0cK#*MAT8AIoYn4+uOeyJV3~s979+iRP26kH5$L^y zQyD$68~w3WnnP94t!;otk$sldN9B#T&r;HM*S{^V#75_K>_@w)&Ugv>OFyW6C>L8v zWh)c3DnOgko7_UoKLSFEWrq2B^Wvz{u+~%t@9tw*##CvgJ)pDClr+=73CxrDrLYw^ zc}AxJJJ=v+VSv_4iQSh%3k4TrRo&3p_vSr;F?2<g{rA#&xe;M2!V3uRB8YWgNhM8B zAJK_yES1z4<{0S+Yi=dTnp=bX33J8@ir+7%>o3pvSaEGgMInMt`pdiY1oWG(MKvbq za!$pKJY?hgm{)mlZ6Gh#MX<K=7z_QUqZX`%s)(F0smpe4T)z!_PuLH9JopRu_~X%* zsXjgEBCaU0JnR`Hp~Yej`m{I~b6EEiOFIG_R*0kZ)J~rwHKF;0$5xS)Q)!FBJU5}V zeh=}}f$QiHv};C?)E^*?B?gqKjQ@lO=PLPmE)avKwc?WiD-LGWY2W*gduA3<OZuxZ zqMLoRHm~FD4BjBU9qJ5t&5Xavb2MNze~vRc9gi&FB?_+rBZcz<ZU}?Eqg|WCmji>S zURyUkGc^2$k#*>YIF8pSg+JGv5Kbqur=AvG!g<i-`RSZx%9k3B;EZkZ^q;X!`8NVz z3yeN3=WDkZIE%ibXKb-<eBRSXylGK_Vh4JJSp%y=O2?Vn*i#H7IaF4xX*m789~yN_ zyQiZi_Vlp_&qhJ2-$+l@3tAPLVGg#PVb%VrcqVeiITi;eY3DE*Uj>#S1)oNsNvXga zY|#z@$JX5DOJs;xLU{WHH8FqVqp6-*h_g7)WL${4fzxU~e@^?Sk&c~-_BM_o6Ji|i z;4JZpopMgF);6kO<EH<#5F_A(2uTxYdP3?%mKe~F7|f#{9M-aBvMzZ4sf>=iDScsW z2HLJ;>V^VN`1Am)-ljOf;q{PN(#C1xA<3fBQ^-*=WF_ur)!=wW1G?JCyt++_0sO3g z(KUxnj6TIczv&$CSjH}mg$!R~#d>J&p}%9&;&38mMGgKb2S?+dHd<jwssLZ9k%dkc zF-QT%@MD1UaFJDv%cmNwbWfa82kjV8Rm=|1o}p}5kOKc;548_r!A!dLE<FQNdMp-} zj-EP_;!42&$UCTnMVR{#Et-3%PZvrjeR)$`&sUrB2SM(Ud(jN(AG+6F$2r>|<kyFP z{k88_zC<!wZ+Gt{VZV@xnW8#p@@OL%rZ`ObR|AED%|UhufRA1OcI=Y(5y<#*RhNWX zn=a>)o2iB+h3dchc;}^nlFokF4-*}e7ZE=3l*roF1X8|#_flO_bv@BP(Q=5=!Awjl zx!&ac3MYAGTwL7j*$<Y!^wPV>+B`|6VW~s{OHtu-*N%7D)Z&T+KVxS7^m{wbE%ICW zcL6^9CIkX%a|XUrdxBr%BomGIN?0vAJ&a4$JI;gSM^A9?zRP00X!9J!m-d0Y-yv^8 zByS*4T)|_V(L1hs!g*@nRsZbw-`_QPCP!Myl>c1dswcHR8Z8}8J**K_0f{b;_7_*M z(<*IB%;vO#)FlmU`c>=<l((z%2^Ct*>tyE-0sH7{o;RV@{(^1wFEl=9J@pdO+*^XL zqns_c6AEQs3ow&^2#~aPpUE@a*%+AY_zrxcbjR_4P(+~&asDk3m8$gVK|6bj!nj;| zHx1{B8<F!wyN~W?{8UIJf=-(nD5|*XIRH&LwR1N(m^GmP>DlE5`Ymcf_{=gAPkL?% zp9zBY`H%tWpQBsXYj7s8u$HuVe+=mQ7|_58{;xd;)~6lQVYMFYPxH)<a0}Bg+Ep#u zv>#v>x2Q%3&E!_B$uqDL_0Qr*{IW%qP4rasg<p+P+ucJwM77bjf)u3IZvrKZ6OfNu z$0T}MhcEqR4>Sm5s=%E8d1Sw}`AtP*%E_d^`>+=J4pbaN512jU2h!CC!W87+xu?wI z{b!_+IEmmE3O0#ON+Y*ZYGF9|!SQ|BI7x(gj97KHhk~iS(1IgK<0UE2`!0D3Dwx|b z1M-j7zGVBX`FZe-%lm!^ggv@#>iaH0wUzp7N7ty!@Gp|$kZTFMFRS0BYZcvREokEz z2-N4x^PqpJRf4eHioRey+TeEZHj^lo0}gj8q?<<xqw49tb5D;LFbk=UrGlwO@7O*2 zL(HtG7V52JZx0<e{qq>B0Wj&eln@6@_Ckh&>I)4GeG_;?_#8SMbhm~MYsxAA7Z?dw z0>dJFH%bpcHw<1UNaG6Nn=Nzoe}r|P!jYpJdDn>2ZxZPpm3_nkSmerXP~(1Vh|5y< zg>bTiO+MMKQkX{Z6H^-bu}U)?!?35E%uVNDU)a#9U=CP~tsJ}0N>XOFvfS&9q}^>* zIp?-=x(l_38p(}(D-mOfS0b6Zg_Z`Y<B)(rb!ZurEsBU^2-k%^aoHs!0frYzOJm1_ z&njJ3^wSAx7g<td>-1(UDWJL&jU6kWMH=L%X;iKyMMnACX=#_<2)$6G*Z({nUAbU$ z9Cal)>%LM(Oq-=S7S?1GHcJaF3p{pF$t}n?2}?YuV100F*%FTdFzsx#eM$aBPl4yi z-O+Y~=Md~wGVDIjo4NE!#HYQl=WWIL7c$xHB{RM0TW#xoOuP5qt+vPT49BdE#FPxg z6h~qn8i*-~#Qbs~W^p9uzJZu|k(fCHF|#8v_JNqYA~913VkSpo(g$KDL}F3~VoZ^k zF}_W<Q9fFWq=9ckBH!W$Vl<H$^*{_4i5cYISH#>ArC`J-Rz=${7RA{MikPYK4BPp{ z>S+7$6~7V~(QAmdCoMA+?-!Kf24%F})~aN_7QiW5Ni~NLp)H^G{*SX#Zd10s#O8%| z`+6UIW6rNcoA$@7jl`4;#1uzj9vX-#h{XJIAZBqS=DvZLd6Aeo12MBBG4_EN-0jGv zPaTMv9EkzF6~S;qBqn7b#uSN(v?*$lH1KUm<QryhB)=vSqaKLiA~B4AW~VoQ$%;*| zIB&NZJ2%7|J0B`Af=ZzyaLF>zhHTZcalRO|87(v1VxuFuZ!J^RGLNv<c}fJr&ckzF zxL*HWChI50CCjUp6MgeTg~fZ9o0c<}EekCr4WZyyz19(mlnp-?y{R=FSkB4u4EA0~ zLT^wv&g>+s4#Fk|UFWt-bF9pSEFY7+U0OKLi(h}R0b9jb=pJ~bg;rj8a`_)tRM$?_ zOyoz|=XUnl|FG<m`{FX=@<NZj^KE-!zWtFAHT0dVDa_|qM&1_`V)sET&S!=BmIkW{ zkmqe$4y#lFRu7s?pfepOgw73eEBS>Xo)aB0?7XSRJ5I)vF7|q=JsP9yFWw~2eG2v2 zC7yc~inDVeb#>mo|6$g?e|eH8UJ-@(p$aA9i5zbeS(bh|%hNADo__Jpr#WmQFMqjL z{xU!O#TNdemcKkFL;GDA+UoP}!bf7{72YHydA9SJfVYFU(2@Xe7tWx3n$f?+W5n+z z`Aa;s<R$r}F}yO(Y2=KI5q+UIK0H*(pJfaME92G>W7V?odUoj%V$K82K<S0V*$TOL zOe=pX@2nz`;;$HT*7$Ioa^l(ZD>Le=Rv7CUWBy7CHG0k5PAhN>Lo-D%J@9aMjZvU$ zB#SkY;<D6pUIkoC;c;Plc!bghy_3R~No&G64?OaAplSt4``jPK_H>{GcgQ4VnvWCE z8)RN~Q^(1Ka4+q({!K~8v+67(#_@3z77Ch1-oDws(EW^3jW{E3oREMxy*;^=5Uty( zj6!S<o0FEbLepr2>^<7bmb5HR^pa?t|B_ZPVmVWuif<ymAtWus-6rmWH>s3oqiU3{ z7<Y7y%A|9b%#Nzz@Qb9~^eIe`6eCO@f;6Qr{g(SFl5)S#wvt*p$2it<0+YJP^Jy*S z=fqk5_c;4m^qH1P{j_$Hf0r~z%j%g_i;o!4nglz{Jnfo&%j5DFduDdNJ#%q>{v*R{ z=sQ`pINz``@_z5)d>u|m#F$uwb9Jb2r2%}?BuzYgiEv!BdjwCaMrfcT_z=;Ddx1eO z+<Mc5l~{ZsWW{_8w?3nX&S+%M*SMhl;rzXzab>n9b1AsfO%iO_A(PxcbZ9rO{xdQC zZPCeje5MvU_!~R4<@C-+gMB|m&srzw*?EJIe-QEya%Hq8vnh>94jptDy>>ePbpHaw z`!6tPehO!hs|s{0f8jj-#$2E$rD$iBn{6-8sB+UU*U!_tScUVv9CzN`T+|dxX%vF| zCg!18YUHPVSyez&H#P!}p8h^x@H*rWE)?~rmFkl2Q8<$3;J&}RRv7M@Jv^(`$fq=p zbeIHPr*($TKP1m6sEb&!izS_89&3;Htr2wgHSS8@=w|60To40kkHIZPBQN_xK~MKv zwu`4Zy|P6wPzw^Qk1=T-Cbtx6qh#QxNBt<C!Men|d55_)*1?#Wo#T+wTmp$hXs8yu zspQ0w`nY@IT(7%tZ%tOFG>izJ7ckWIZGf<B!9O^S6T;B$sD1yd`}XJH1KOE{dg zAv+!tv9iG?irg>#Z5rd!IQPiCYLI*NJ=M%c^em_#x*{dHH>zy%@1~3-jPsxO>0tC} zl`weDVAoIW^D*YLsgo39wJkKcO@gVjEYsB43v203#M<e#SVflT-P#5^Hu`a(`a9#$ z;+dseQ0rN!b7rK@Yf$Ix5bqG{&A7E0lXuje-fB{(G;Vj~UguepNbHriA$~!C?~q8% z4M?3PfO5Cc8EXOsDa()nB3;d-O_biGQgMfcv$!YI<s7pG&Sg71fUr9PfrPX*NKtY= zz)blrz$Skkh>YWT6kp0yeGFD^xz_FAKbN|Qk={OYF`VN!_mCZA&mduP7uybvP??Ly z7?>_Lcqb^<175Ocj_^ocvZ&RRgDbk%ixpsxsa2)oF#{^C)9jqv5AO-FhQXpr)kv5w z)y){>Rs~rD1OGn%RD*i~-w@4`es5Z9RMc!(-}+F}mw=<`o!fekDhBCOTBFo7$87jU z8{^irho-;N&cr4)za)@7NTZJFQumB+)oA`9Fa}kZ8tF8um)s8uOxIvJ{$vLkrs^6j z$3N)iCgl3Q5|9rz$zviZo)z%D?;hm)${irtXJZXUk<)0}U!TK5f=Y8kJv~IeklbEi z(Z}vdX&pQ`jL%@z-z0a*N^p^;2p8FfjT+Q@l6{K%QDNV}uSeaVNt;Xdas6N4$FI*M zZ^^}5V!S2H@0kpB7PBiaFt^n<7<dJFkyF3Z&c?0;Of|4e^3QEOr6%FF(t=A9#qEeS zz>`cA(-qal?J=}QN0U8K9%|hlF*oyCqodH0+i6QuuX3|n2cz|#bNn)}VS|}0!Wj(n z@_s_t`#H~WTLM-JdF81o%P*N-R)9G{My8JU@y*&)g)bpB&Q~&9pE?D9Q(fnU__tX% z=zzCv?j`uU(OvBs@%9PKBjbPgR)rMD-4~F81LWcVC56sO(<~?&@wPp`5`Q-#{h<Gn zo~BmfYy&*<tMGSY{srVZfm~P{dCh#H(#)rGkZPywfYpakP<xYVv8f#N+-vYPgF}5g z{E8X;#UmxGXUxr}5eH%WkxXp&tFXpt5f_wb9BIC<9u}fNSxmN2nl4M9=-3Q?yP~BZ zMgSaqIuB{NRL4;XxgRqAD`~fv+3`o)*i*3o-p)sj5I&T63se1^bUXGGW+GFW?cX=+ z_ER$^4Q-~7E~qSLiSapUqU9;+c0Fr`HW)ZHOf^6Kn-LxEtOB*^DPTax4sW4)cWDka zEHH(F+i;fs%Eyfz+`=J;0^FN$jy3szD!2^GR!;$6nlEx5-!#`z7od33KBi~fl%v~e zy~GeZqTY+N;Gse0j5RTa!A@G^mVAA|W@)0<UC{E>-a?%)Rxp9%VYchsI;?|afzFLo zTC@jgDGW=Mh1;LPFR45E@GiiBynrwBZZmSKIWwfN7b}%#7;wBO{7|qpRMM~uwN{ur zeVlohG(~?KJboy3JZy4JBt&m2xai(nm{gO76`agZbH65VA_uBy45<9~+1K3q;!#fa zSM0;_%Cxh#mFH{Xg^z27)=>I@&pdvWO&{jc<%fa?y0?R_p(PG(!9Ix+m~;hT(=sl) z_ZOZHs7%xf*kp@Yu*-NZiljdr=!eETL%}g!xP3NVm)mg23yg-B+fqAF)4{$=#d-&& z1}_y-3UIQ8jupt?;ckz<!9$QVnUu_y>P9<g%Yz;_H`lU0b&6Fi^D;H#>Y1^~H7^BL z)~UT1#{6p^GnTdwM&7(bwmGoa#cHzWB2CkskU1FJ*)n#ln4=hFpC$5&JKb*yShYAk zI0n|%6WlTM&cr6l89fT=4cbd2#SdDH_Q_1&xVfz3n7|r9v#dD=33z37D7YLq{&)GO zfhK60l;xWyz)FP)I!lu*1Mf|fKyMnf^5}z&f=C@FT86i<kk1Ii9@Q9oH^t+iU@RKl z*pJO2H*n|FjTgaJm~1&3p!KA!l4W^1kYM;MFw$@)z>X~oaAP-w$7mf|Xdds_uKK?A zE<a|BPd#zEpQ%ZLToCdSI&QKElak@1zq1I+Ch8QFLFiYV{~}7Kb)Vc9uKAS+b|WDn zL@@}LeIbC>1(Ybi`W}m*?`+ZQ#T=4ow?aP#s;Njh(Q+Zc=sy6Z@mCqIBbYa|7nzj5 z)>52S_)}|)H5AIM(ac2t9Aly@#AM46ir+kD;sfYGc0BDrU^ow7N|=dhcia3-O0+-a zUrJ1&Jyvq?XT5mHebH?!&=-$(alabv+Vm?k&Iz39Kp}^-h4HL?<$|Ll1pCqFRU;d* zbFqBJiK{GRp_4G`Q=pL!Zw&gT+Wt`;t}{tF;tS7)*8{Ybe1Xb=+&YI6<NT0x5p}+V zI#&;j^-%wKuhY@`>*4n-Z7}X#GW?6Nie%}rtEWxyVHL3wqZg|J)$PLyb4&-WTs+28 zk}nB1J(`T*XiOUF!`?5Cty{;_N$CDPiI#g3ZBFo(WzjoI8WId5#>O?!Es!!zz9HkI ztAjnRWM&utdul^|Q6H7=LX0UC{N`Qg^EZay(;(k^5T3ZS=rNLV4^AmF2i7{Pyw)Y7 ze`n&pJxMUils{y9#gc-g{3?N-oT}XLHDX{=m414bs&X%(u?4CYTPJU0Q>)xR`j^mE zsbC4d$aME=nr?~vyqx<ya`WKn?DK#hVWhuQl*8lhKV|4m?q#%eec@)wM#ASX5twd0 z;zoNmWGS%Hh1cbGl3DSs5Z!$mvf7HrIv#Q8I=%M$ByEhk@sgVpf72WLY3%zn{O((h zjCDMPzvD;I@6Ufbm~i5s;r~xxL&tJM7BhBX3**oOc7Cq~_6eE6$>SKu8HsN?Ub|}+ zX=lhtNL43~8}4YX-8_qHXE<YX?5B@7eu7V-Q@9jHBUS)~L#$!3KQ<)$0<gksKXElK zZj*Fp%O+{M{(yA9ev@R?o?G@0d?U8wSNFwjl-9>@l%8NWO5S)_e~JGXD?v8qY(rLI z5xw_-Orn_Gs~33KV}acvQ2KPI(qd&yab!1e;A%8v5q$l%MCF${ke(Ia3nBl)Ymn~c zVNv%Td}qw@pt?8X{Q!m9xTzTHT;`@iPCVB`VLt_F7JTI)tBvz-HrASVvgm4@h+GQ6 zi(l9?#gF8)|0`(?w6;IO_eU7op<)xD9YW8&!)MD7v=l-zAf(0k7>xgHEnp;5JZJu_ zq>?&NX-Z|=`#etNxNn}@x|yFVCX+EfzI{5wB$ICCywn`8bf>k#?JON!60?e}xn~ok z=o*R1wd!}kD_pY_;Yqx6;$c{U!5a^Gw;N+tk%9c{ZU4mV?T}jpB@)us#L*H_77H)4 z+)y7!%QLa)6+_NO=}wEfgtlB5x*lsZh29A0;a1`(^nujtGayk1=-GA2$$+llyA=!q zfAZ>n6J2ATn152*p0Qb4pK(H9kdwjP#Yt(mkqGB&IngT1peLIsy~=en#3yZMOJ@H& zta!i*bJ(V1-MrIsLYSUTA?;rthBH!zlU-*A_cT`V0_5!{G)L-4Mx!4|w_+xOZF)Mb zA7dI+vX#~`xe6S|{u=i6O{_OOjuCPFBy2@r0QD2@Q_{`YlN{k%W5nW4m_dD6@be<& zu~jH9t(k2*-ruf-wrgUfT}d}<HPC(p%@$p<Ez-6Lz^cFG@A^`(PrS1bV_I(8{v7Kw zK)FTALcKVy?F1LCq_DwPLZ8vpOb)?#bkO_Kxk_ORZc}h~Ej|?Dwi8eitIFtTO$TjA z#Nx8gBz3kPd&VHsNvQ{YIyO`Wi={?EFXT2Z@F;JP<vEQUcIE~7oH#6WTsh&aQK<Bo zL@igD4~t*k4?FC3)(nq+DyulVZ1#`hn#5KvHo=!{;<{C{KkSGe?nLRIOXcw#?x*q0 zaOHe}zn^0S(6{Xw6rNp%NAbGc$8n@ROUCi5zS*4SERDU=Hy*1IiQ=~_Z)l6C44_qP zmD79*nnZWL81y5<6@w4hi7{#wpWH|#f;UT@2}I25rraM+B=!aQ6xN^mh$8yzA>o{g zJxf=Ij$ZjY&hO#xFZZ!b!dc2UWJRpr`GA>B(yZcx8yRq?Iun*YtcNARP25QdWCiSz zQ<xQfC%};`7PN*i9yIP+*W4dBqyyi=0)gAT5tb=uZ)~IdS6y4aNwy}sXyaLFv&AmP zaDT<Kcm;hcUiO(pvgvp;b@mm$k9Ru$IQV1;W9eNG#`502r}?3B+id8g-w$`|^T!KB zyt~`@1Oq?woXA7t7SbsFwTt9~jW3l-u6JSh3+UM}#FRcpN!o{Rq|l6g$63wUy$)u) z@<zO;P&fwc$8L;ZpbMwh_HAM(o;AS>3igK<<&6yYZ)fSxRZ1@(X9ao=w~EG%B+Yw$ z%*HcP&sr877L~}T-UcsV=*CUbf#bE{(R$h1{MDXeC|9$wnA-SSQ|ylPMx>N4duNg` zzLO&OdL#Yl>$SlHfJyj;P#oz=BTXTg?F-ydGB-kL-q7iLQ*E?3(4O$(5$p+%N;>v1 zG864N?_QDHu6IAqWOQs<1Uj~6bT+-oS2wGEbN0cmr@JA|gcf<D7o4ovGRH`Hj$Xuh z4Ynt5SPHqe**YfG2dkk~0@WdoL+k!A@0nTZb6T0FO>At-4&{=wdSjJ)xTwbIQf;Dn zO~Q-0Nh`PrgpIa60)H-w&jD>hX6^yKt$?4+$9sO~QdCtz9^oRmr@X&^9eTcZxTuXC z*{GEv4Toe>f^Ur{3A|+5hTg(rca^jugE1@p#6)GWD)5UHpYCBJ>GjB~55ISk2S?H} z7f_t|YG%q(H4k5fdUbSra&&1RUQCHS;9rCKFz4d==g%a0&P%_~INlM@RwsRoR$N(s zMta5wS$soyg>?4vEoY>1qb}zp<~S`IGDbZc1IqwG<&WcM-1yDm?aJ$NYv2}t()YM| zekOyMulnzxePsJGz*k>TS=)c_eXwgwq~&k+(3Xd-Ss!C4E{2Cu7Cffwl+#sQ7z52* zwf3U0$2Q3S`PDcR_*={98D8nXw8B*1-(I1fFeYDjC!z;nk;sHxmc&RKhTpA-w?^XG z*mz%_yk=@{J}=F{IZH)tA<J@YPvbYe#bzUEp(Wz`{HhK%cV{+NC#_pyfRq#E7IT@^ zYGoyZ+0V7*=@dIu@LQ+cy~jh-ZmBJ^rJSy^X-+eG_=UqhcUsCyA<#TA;%@2$-bb_? zXk*onuYfHm=(6s1sM|S?!ZSUt*i9<ySHOcy2PZz?b!>$lHJ<jcJ!jhTzeB?9vr~L^ zR67$zdog)Rbh|!UxJ>)t$?hlQ=lbqHUM7vvmW6Yp(-+R&18P&B392>TF6k$nkiLyO zEwvcv?-O{^cN<nf`p#7`8QjjQ%f<9oX@OldbH({)tYtBrIscW*%y`fZQAa)e^$jT| z(aRmprz^&WAJ4xL)vfACgtQU^X%oHUChVgBp@*6BLtwYG%mSTVJ!6jYlQh-&hu}L- z?<kiFEgvCGCDN$dlhskMi`{gYNl%8~1t0L1sVJEa(_$7<DlA4x1bY7gN<qARfRf_G z`z3m-bu&P4s};}Z6b-L8+BX(}kJYfL=<d;cn=Xf#emU|&?F%+V^Ne((owSt^oBLY8 znn~I=aZ3f7BGd6bZpDaxG39v~KnsEH>r7~p$mB|o8mD+tSed`zVY}!>dvM%><t4Kz zUxRh(&@SEuI?8QQv-jWSwA7vU>?nfX1*h<7Aa6=F5Si4w{5ymw@B&Xso%)@^?Rg6u zk9Tkx@v-;f7N3}x`iN0uUh1Ee_m^v==$WFeMcaz#xsJ(HUE4mjqFA~XC_3KpH}0<; zBz}RN#(^uyvlF_mU0pZI$4waFa}`tnB&uuLsc&8TVBMqF#;?PB^rP3FTKCqq*+q#h zr?9(eSU!#Ssm)_i8qvQW7~<>>{Chr{=cVtpMNeHDw=Tx@(6y)6Ed^|4A;l#O{ex>y z7xi4bvToS5?a`J7KDQ^JbwJvyk=kU;T?l?+awj3lYhCKPQ1DSml_{Jfil`*V=?9vv zoGa0-#=QVddppvmfKRS<Em?`ZVfB)SmaH_&Pin1QXWxiBhvNvW$KJ}?)y@UrGtKmv zI-ghoPn0Igb+U_Yj^0m&;So2P#|eu)RoH3NY*jveYVk~poad5oTex&JJr{@1bXJ_= zwo6-ZlNjTxz-^gNdIt9;UbYEOnpcm!^gD;|^foR0ogesa#rF!_T8879{`gL^x+?$U zfq3;mychArv{x#!?3Gqq!sCbf6N2S0cv1m9Eo>^tg+?9p5`44sDxkp^Yi@78Sgg*> zi@Km@y1C4mhz(0lRN$6>27X1$G6fYjrSDGs3QHK!oLcjl=3UYj`Gkv=5wuY`&baS~ z!jc?YEIMJiOhf712Rz$_qwU_6uN0F`X(aEjyWx$!%TI2b=^N7NWm<$`0z50E%s4l` z)BC^UAHD}%=wa@F$868G|FI|&e*?wYc5ADKY<IhhIlH@vv+F&0BIxnnvVybk6%gq2 zVf;qWKf>8hyHjgU3;7S5K&Qpv7uE()q|e~wx5ZK#AQPMXe{T0a*x-*7aIb%FocpZ+ z%764dNUTAJMNc3LMeZjShFXfYQr_+;a3RWN4%!w-493dqMY%;K^aiPqlPwl_UI%ZD zuIii*ZDC>csusF)us*8I&%tkaxrOp=IpfKzqceep{?f02kL6{l1fj_LGJ5QQV1SRC zrb$B@KY<po2^<Ejj)jSh_?vlBTDJXVN$_eKW89y(q0ylk!9$mjbGc(MN*NBZo@!Qg zM)r~u%Qhkw)K852k`Qa2cdi)TgQ9U(@GgKCA)kO>T;x}d|4$e%Mxna4x}M%AkHBtu z$V)j{6@Bz<Rc@i@+AS9Bt6<_%edFrD0?%$$%-O<6sBe+Dg2G=>2+XwVTGYexIqb&l z==Fk^9e>(0(uX^6na?Lf0t|?5gQ8eNYaWKX7Jbp+Zwsi*Ip-)G127@xdY{WvrAj)B z7=7U*J8R)(;@sE8^J}QDi|9y+Y^20XflO#FP2Jp&M+Y#NCu6{#E*^Qt*MJiI{<meU zGbluD;UimWxm4Y`i^bMd?YUcP!AD?HOlX@>-JmrAnrBNblNyB_chuZk8awSuU_|Lg zNpC59gvsp3;0s_78^ORcvf1|pFgWXf46!_7pR`3a7mb|JnR}SFhh5Zz@_)uM3u!iV z-gQ{^lNK3wSR25-#Z7obR*c#nC-5((h8=P>PWB&2>i^TSEfMoVeUUZOTQ>&&p-vtl zdg}EC{5x4om=T|sLV89V3I85FM(z#%Ah$y$9_h<;%!Ne(wKK&*p1&FVw3kdsXf!}N zP~lYMQX5~;iwTAG5j%0W(~LlEKEtMS9p=~$MqB~i1K!E(;l-%Fke-O&L0kP`h^C`y z5*=h`3_NQydEgTRPB-Fvga7+ZZ}2y;F->hrLk9uzQCPbvTt-~@7VBJ4WXEh+KzB~a zn)RpqE7A>)r0b76hB)27#6g$2F>xSH>8dWez$(uwT$?)7<$Rt3CGHLJdDvm79GsQ2 zjEbZ+;@J=PS-==S03(d&lZcxz5XZZgKD<=Ho#kL*k?u>_g|G*uN4|$r)XmX3kj{CK zZ)V!9`S2T$6`J0JsdK2uf-{Y|9Q{Sw?zMPp5nI<694{$d)FxaKZry9xq=F^#b4h`` zzu_*GrkM;I6t7v-km?xedg@3hh3d(MC77em5&f+)$zyTLbPudtY)FBIqlK?5Yh-Z) zyBB`Mxk}bZOdiNcQakN^!OvlLrp3Pueq*i6U_)`i?``a9TFU1EqrhaG_VZacAe9{U zeVPqjWUVm<v;4QXIc}=aVILmizfUsh7fL2=g+12KWb)9lAST3V5vSi_Q$^w^Oz7Hz zBbEklM+|Ic>m?3cwi`5mB<&B8wBLdgGQ{DPOIjQ$X~Vyjr2h{k(YT+NlyjXSy|@da zWp&<C)-{wxQwJb*TG<$zqOH?4|1D8JLHh;MJ|myGp*Nt{;)woaZGVes8*&~<Sjbpz zV9$^OsjfA3r?I!E++%}P%M*B`zsAjB@r&#vRj08>S{zjB;{@LD%aR2SA;U41Ots#W z>Fx`z=vr(V;Ur_JRxV~?;mND)0=0=XoV?0U#;Gb3ft<vB6|8=UyyoOpHHTDoYDpsc z#L26g`+9?OyRU&$(HqqCrNLjzLj9HHy}^rJ3-wg@zQhVURmZ}#3{0_DN)f3183Su6 z<3Tgg-<wqQRx#}J&FmimTe>T}3H4zq;y=O4=01mP&nR!2;B;VzSwMZZOatcYd#sSH z{s4CXU4EJ_s`(f!Agx<XSNn9NIfgVVd+yG8xh;x^_fgy`!uq=dK2IH7E|t3dl&)2{ z-=cV_4Z+}|cd5?31Wbr97<ZiC)-<*A>g_naY=@6FKFa3Eg}2FZJ(C1S&g>k1(j+(h zaq`jrJm|&f0C7?eG2H?0p=Nh5n9=u@G<|zAZrCYRJG*{@?3FfUluA_gOpq;+{skDn z6|Pxsx&yFLm%%-boIkdyRaXKOrxMUn&m0*8U37g!lP;`BqY{UKYpXpvZWQoiEIGko zH?=~II+IGHz#XEveBTXS1l(bnfXjFARR&%!Y<hp#9fP}ye(jk-n4KGXVX5)eN<o=R zTdmSf+pjNpru%Y01Ff|1noDt^?ev;4+I2!|!YFFe+d9i_{qOxxn;4G6iqaTfGkb#* zVWIj`h!}5ot?bn1pOALzCp+P-vE+pGdp&z&gY62&>|Q-%q+cdE!?B?Z_WGANzwOnt za(tQ`zyC(85vv(u?;TA~pU>dT|84wEHaTy1<Nh1gjJO=mI1`>vkxxsZjd8O2FuWN? z_Q#J`Q+T`#Z@3JP{@trr$T7p@n4xlvQjSTGW7r!Vaz0r91Vn8lZo~X&8Efj1pf~th zJ*_K4h=wPOh9R7$B?KGsI0GQKFNH#Ge6wB-g&t%`R}A8^dxQJyiIH_JDJ0?%IyWXT z^OUd&h*p*7X{3ckmZdFAS8U7|hq_L0jLwyUZ+F2Hq{%jVjAbLdlj+Tx#;|Wjbwj+w zj0sUoFq!Rv*I<K4U8lgfQ6bOXE`5!{sK|rI*KX+U>(vc(b?V0Wr|HVEU(nwuiA;fI z0<6deYW)Qo>V~lI1WxvqP36iIxn!plEbXFR=sJDaudAp(ZBZ_d)Qy2}EIL-H<a^j_ zo=SWVw%)Xe2?hPK1*Fk9sSU+A(oZ}gB_pIDOhB+8WFcfDOrMB#?_e<aY!CJ3)$g$* z2IF;nkJ_cqV_ut2{hc9fwcYf83y)a+x>%%y+^=6x?zbX{b(36Mju69bx&5|}rQlPt zH!+nj&1Htif=W|bo*6sm!EVTh%T^(kzGPQ2z9i@EGL6k`50K<BbHjS9D)E6X=;FLd zb#s`>{6q&zm*CTqdo9}`1$EH**23>YFgUq~TBuU`;$8886QB2jDIxdMfHq4%;XI_h z9*mR{?TW$In7o%vgLB^vP)iE^`t=NI`KRuvhz{LT=%0%Fpo@+^(&1@Fpth*)#*^Bj zf;To7tXNd?d7UO6HL=4F%(6)Od-0_7jHS+re(CR#Tv+jlD^fUck1%tXZ&sckl%T28 zt9uX6TYVH*^Q`~DM}gkR98`&)-^8vk4|vL!*C@t$upEfEducy^DaX!4Kc}Og3Hp;q zP$Os%v<L|Zi3lSj{aoE`bd7h?c1tS2c?RQNZ@}n4NI{r@U_r=2$VQlMQ24bt`TZL9 zBw)WE)S<gi_73M7iW}HlM~k*Q-lhAO(ehV}mas<FtapD({jEO+qdUCbktc8tyTum+ z9aGSUuo8?ZI<~+cft9B48J+4<&~df{?Heo8xVUj-C*1SdxBr;&{<rT<BB?k17eLeJ z`cvjk7alk^9vW@b2BFF~&Sk)QJ=QrN;|%&#U1RSyuQ+;R-G+p7x517xcaYts5=}QV z3@pafpzah{3otn{jAU15@E_gbSki5Ujj&<4ox%Ox(}kg+lxOgYU+8m~Ebub%9t{4_ zH67A~?|=L34A|tx7>kYAB<0X!8@s&lCm$CXXH6<%S&Q%v!a0nay$By7l;U?50wj2o zw;xGxg>mbzE5*?-g|Ru-Me)<*vaeDcgAp9x?83^D0f|-FT1bESbi~-Yv=MramO;za zfw!_4awNFRu4J~8>H{`Xt-f#oCx51TYYn9)v{oVxt7l+k4zWHW#@!^<OeRuSGt(H@ zsF!V^5QTFAxZNs_flO+p5LL6=_M<P+fz?f|nV(%3H7DwBy<ir0Lz|SYbKi#aZpJ{p z9AAQ$<Ln0Pm{=D-1U@GbMmyDYy5eTl>B7-x_NYdmInRwgvm0SC!g&_&2#XPt5Skgh zBP1c{MDK%IS6p5q{8(zyzpviZg4);SNeDk8bRt|w5D{>zoA(_;E5f%3R}j9Tv<b#x z5$1mf`r$WtcH_z78HEssFbZKjLKead1Q)_0gyjeUq$Oh6Tje-)TXBLdhi}3X*b!Lu zXF9*`%e@b0q4rSt`F-ShHS)Y1d0vb>zl=Q3g<hdIScGw~4tO+!PZA~UbbB3Tj*X5@ zj?IpLN(A1v)a9;Ra2Q+E_|3QcRAzQ=Hp=`<DEvGcc^-~D4@I7Tj64rSo-h4BmU-JP zWnu;bkA(8DrjT6Y{}X4(mfjVY8xPEiLgDAHBF}=z^Ouq5lF0M^$a8+EzZ}{oIQP<j zmjCMa>t{Z}cuUv^nA)NS{lGEyR;{+F<4KMaGucg$Y4{tbvoF#v#oKEf5$}V<4&9$i zAQwW`Vh6n8U7k`($L!!z2EIwDtQ>6UO;<=v)OCMJ!{0D=DNU%WgXeM+gBzIGFDhzj z4C7FOKKw^tN<BY^a!QmErJw1{VKQ3-%`wC>)Fsv>ZF#Z0);6N~fi36C_rb2)W%W09 zX8iFR8&-WK<uq~Wyr|;$wf!|t)x~$l%pG}?nYXMq8<Lh|?SHUqBxW9yv9tC$TT&T+ zDyclFY{?cTV@a8a_4RLnuiYF9QT%9q7$XCpoh7r;7+7O~kvHGF-+RfcFUv2}M$-55 zA|Tym34tD(i=9j38st2ekG4opa_@m19+lz5Ro=J>Jg%yOa|P$z@;-9!l7hLNUUpCZ z5;w|fq;&&-4QE)|R+M^U&=Ln5XgtMbG-RWpv6?o8Qac8tV?^#qcv|?T3)ZeNgBOJu zquwwS=avgyjBF))2;R?j86638ATNgZe{`9IKS6&yEYt1Hk43IKL;Z0^IlmI=j&;c^ znGA!+@1t*P8)*GWB0K*&<}P^d^J!ga8)@s5b4<b}o5H8A`BMt(*SjIR6aw{+wxMY# z-lR?sI;Wq;84W9+^bE)yq|)I1CqfqQ;qxHn2W$J|Em|Xoduw_cREkvEjfXEGZ{c99 z;%sGauz>FK_L#`8r8nsw@)MoX7j%cBWXdbDZ_+&zxDzdlbrx{)6HvRmx}f9V2{<!B zbKv*wU0T<&sNtooW1mgsBNM4dBX0@jP|3)W>;|Omh{{_Ur7qnKuAw?NrUZT{V5ct8 zA>zDyEzl2N&=89U0kk!Xz+jBXzFTR0|2zE-%IYyDBWcx=a&3+m{_+-ixg5H4uf?~& z#Su%qiOG%e;`bof1dY6Zu?Xv|Ye_llm3NIsnpPRvw-x?tshmIF#O3Oci$D^tE3g9J zH!lv`+JR*b__G)?XQt>?!1J}6y-nleZX51nZi~gZ_-)TF*ts}_od;5KZe>d-_+*di z@k7|*HpA8`Zj2_un<4+TEN?58!R|tjY26{4x^c5K$ooU!^;qiDFF02TtBYta^;|J0 z#xjTc*M=1($d=CaG3Ie7WhqL@L@9cIDsBJ?d~uNRWsX9DYY$CLcExn7)9Ysy6pi#- zAW4*EL0T;lSNBB$o4a}nfejzYx3aHgE%ihHR=YZu;`I^ml27H&UMiYa<NL)f$)ewG zWBm+l$1r<77Pbnfk_zE3CCXP=^tI6Z3)ntrW!c>eFM(RR<YuOv0FPr(Pa$e_I#R-2 zefl+@M(WiuGrAP^<wUFMUTC(u;s1m8k@4A%um!((af~X>Umod&>wZ@$W7he%ma~wQ z==QqGsl-IkOSXrCUvz(6z9BC@Eu}HuNOm*gLpQ$&7|iF8mPeY)a+;5k=Fz+qq)9P; z7hooR>|Ygu{8vCWn2#g10;&J*eYTWLvWg$exeg;&QQl7E+G+H|q692<q`iTZD%d5f z_o6q{%kEKkbA^?1kBmT%5OJrMV)mMx|JiO+DJQyFecDb~DfGtfEC0Hj>|X0DM2SUy z72v9j3-kUE!1)W_woAKl{$j_L?kgW6x)l?A`iWL?v$wF6ofc)zkUejWj!l>U4O8Sm zQiaJcERR{sh{JCZ{Rg!LfgBTTIwDq^&cK^XCw_<1jEHuvZHxS3jB)8d1PV)|p}`(w z*7%f=uP!Vf5p6KX`i$nGK5)pyy%MYcETER*Z(aL$`7J*E41KnLUA}5j6!4BRMx}oe zfqAL?<Hz%GgPaY0A>3^spBgFD#@o}gq4PeYbI9Ra;~4lh)I@3=>Ka>0>#BtnG{P35 z=Fw&)@H*xXm;TA>XJvRX>AwqPJDv&9-o6Y!T(p<(me}#%!sjQQi!GSH&tX1Z$CJ*P zQarJ@xcE8Ij%I<@X(sr^+J<@Y#NxvmK=++!2cJv7WXWGhBaQzv&R6~UcFXz3{%bxN z<|6squ>bfiQT`V7vu{z6u@>#eSr%v01MtSUz_wr}_vk42=)kI?SJS_8T}n`&bgc90 zy2KhK<bdu<VZdV@IKP8mCC*fjCF7IkP_7wW3mEfItO1L=sHE~%a0)QTwQkRTXy-E7 zdu*}I(`u}k_ZiyiS}Lha#7BCVJL&9hfmJzb^#OYHO|N+VG^^G3iifl+HRFngN*ecP z3txfvS?2av^1qPhYdO|S>i36?8yi`H#$dcd<I`-06mo_ZoB>fs*CF|BFy7MTw<x*- z%5S~h{a+=#rE4`UhR10xsXJeOc6Nt<Uyb~}+|AsszKvq~KGva<2E#g<`eJv!{QR;z z{QDGs2S7WA*Gdtz0#RqpQ8@NH98?xG3N2JZ?F4g^@_fvsJN>LNyatAGdbPX%cNp(| z-D(qu6k*(}y6GHJA9&IIPxp)Y|AbUkmZhMG)`GTVLJMa+@OT*KC%fr;xE>q24?MnK z$bWp?+Fz}GW$l%<Sn0P@%<H>vU0Z9zYyQ(y9S7EhYf{)v-@~>0MfZVq1w#J1E33z? z!CnAs+q8bVI*02$4_h?cJ<C-?&(4rPk7w;J?5LgmD(twcl1dokV(*d?rj&OKUp2FI z@v5@YJ*%vSbF0eAhnKxqzPOCpQnhAJ8EZJVhBGW#JA7>u&Osl^=XaGaUA7lqWU@HZ zK_?CE)_Y*dP5!0?|AfGnc$%}=WX=@>ZhUz&@+DdRVsfs)x%N_EFTU)Hd>JKw8RdM~ zq|f~<pm%*O=<|}?M$eesCGG-Gm3zPEynB>uwDZJO5}#pAT0PPkg;Vy(JYpp94ahqd z)hFd8<P!1zZlNYxK0QY}pD_*1Jpv026dR@UX?XU0RXzpMb%4$ty05Rq{J#OZO7}mo zuY>Ra!e#_I|D)I_LdP=Q;|Y!plqPrw>AeU#go8+@u8TpbQQZXmPssY}H%XfjK19$M zHc9gkb|Ew)j5N}F5(<y@4})AP@b~C%`mT(;Qyw$-7;dJ_4>sqFf6)Gw^x^iXHkIOc zpclw(_xUF{=a&!52&K($Hap|sGh~j>_Sp8D3g|ZEo!@m+2|WNMY$w<+=mnB8-M6&_ zzPwCo$kD=Yp((fI?<KBPmmY&(cFopRrghMBQ-88bVJefNnqpROUH$RuGD+jzyKbK} zh!m`Itu5d9@tR@!GD+K1CdIduNjh)EuVI&`+a%;kD(#b!)m!W?1hm&I=G6xtD_(tI z-L=(+R)e-%bEr(#3DS4Ny6Me8KRre3txAb+&Ouv2^478)D-s6_F68lCXx~;!J?We| zA;PhwD;-_uXdc=||0$pK{~=#?9lRr()s9ikIfnSVxi&5Vas><MF05$V%%eQN>G4Y2 zm$f=r^v#FufmsryZr9|mQ|A^42i6gI+n{pSI0=Fyx)Ntc=vzXY{8qe5Py)RX7=n5Y z%0&r7NZXSNwwoj2`oWK-sdx=Mbgfh79;k&sOL#*l`5DCiI@0wz>``cxqdWNj5%wj3 zQC0We=iFH`Gnpil1<VSwBykb~P7+i^s*}m&W&;Vbe5j}iTN9-k5N)uwOj!B?NIMD3 zn*dr6)PTk&gR}vRiHLnzO*;W>*`i}@8<JF<0m9tOmhX3F62$lQy$`*ad(S=R+_V1A zfB)YXgiaV}u$3Xss1$yha`6l(T!45vU1Tb~Wazrq@AGJb`-fzt#pF51EU{emKddEw ztd^($O)UrRsAV+p!&(f0AK&w>xavaaX*}0kI2*PFk1{zi$zW1`CMjl5;=@dCM0Sw9 zoQ_5I5#g_NzCt&nM7G24nd1vdmLVA$&o9C~qbtq}J0Wovqn@3pXD75b#3F77w>RMV zEWn=2Z>=}z#@-_W*}}+O=Y@SJ!6f$kP+}iSSY8mpbvR)8e8mnezN-|eb@G;IP$=cW z?`|Y)yb_V}#dkL(8=1b)(c`6RsfPQCrC*LnxSjqpq?51YcW}WJj-Y2$sMN}^t4nqN z>@QXOJjVjxf+uF^WIkO$pFbMn0}{|Q@JYf|!y4J7?2Q1g{#CX1ro|Mdu3F%Cgz@TI z*lHdx18q%*Ad?VR*70<Pd5PE)<ZpmwKfWUcmh!G&9}nk@JOONjr!}Fc2cY+$A+GO6 z&ZAtI^YzEEd{@VQza9GxjQx84+wbskW&<awn{X0wm}bWzQoBsTq<ltThRdorUALe% zF*%+zFJsw1Dl?Yqs{XOm@0m7g2}$$5@ekMy%**w?0Z*r2Jk^5}YDQ-zU?%IM?3hDP zbAHboqYN7ve`@=|6J+Ihr#hCvv%JZ?j`w?9NK=jF4|p`tcN;Gq@T`XQ!S_#_e(>&C z=qX*xwBJ!%UP>2*z8&YIx$J5b9wM@?M&TFGvLA2D+jq1j;9)ij-`AZGdSa~#cyc<p z5)r(X2Rxs4)E2Y;$&Ojt9YR80Jg}#3{L0(A1yvlh=V~p0U!$Idp_-Xh1#H4GV=R^B zr|X`8r*F2Oe=*Ab{v_1bB$Q5wV~~!+#dr_Zq4KQc4@)fz<!9|r$csGAp}i@nkLbM) zp+B6;>Sz6!af}ReFT(Z+c*F;YUbIt?#hn&z=DsgP=Rv0%7=I=F6><*alr+cu<J2`7 zyioZ1fVbM89cP}Sh%0~*n9&)&PxC^K97;8KZ!jN1E(>Me{=bFgm_L_$5M?i%N1OJB zyf(3%w&JhGN;JY=uogW*tiF>Dv_J&k$&P`-`LCHGFMgZ+4)jQ;0H$>d%6WSL7eDqg z%#HOgrAF6o75o}eHtA(!MqHhcBC$7nYnUIp@VkDz`$s?1CyR#<bdvR>UVKBt!H>UV zAY#!mQ^Lj8lqCL>sw1e|;(ZXl$dk~zQBNe|rxR!o!<z}TfFKEnF51SLqrO|iQs0Do zR~&yGmaq;%(CmOmDR@G4E%i=;&nRKum;J1tm#e41+Ksi1LgO>sx^><!LaloOt^4a( z>&~Hdz3}$PtapqVvAhx1Sq(u%J=U@vbXri&gH#F8GB#lp&kKop8B3?Mv-%O4rdqR( z%_J;J*Rqv?-sW0_K&}`Xq5j-(N&qS0dl@WmSZl=SJz7^IY7eghmT&x`TC7^+LJlom z_h_{>v`#{+6FlyPL3XNudyf0LAHHzRdWVmT^15hV4hnXMg?ZK<A`!Ha_+S>lg(&d% zGWjhjZ9vS42cwav9(iD2F>TiR^~+YR5C4<Fx<!?Tm?QLZ4S6Nx;TXDkOk<}Llq1Pr z=eW^8ro057oXmqn79v-3YBt|{M^-sm$&_mKE37mt2@d`%tdBE~?|p_vF|ieMu)cb> z_G16#XKwX>YL{fChW*7yM8?G5#Y#U>{T1d#g|&G(^m`dzutK%goD2OvQS;~U`<l=2 zo50%1?R^$Lw)#b{d<J+KN+C}mr3)z=Z>OXnB?8~>?%&n`kH!rt$Jrc-LOQ^sp82EE z&N&V6oG8h{?hj&~Pb0PlaXm5eWXKB5pL;*fnQ@<CD;(^sqp+&oQkOS}W@Xi0xxi}U zKyizv{H3@3IHxP9WV4Nxi<u&>`$xX)hvW#_;-axPY(%dIIQ@6MANChOlYYp-w2W^C zvg)efIr5JUG~3=At`k~zQ{L^RX|wwwqtz7%vWJWNLvOH;_rvn-<4T7h&Wl7lKd$7o zVz-js-_Q6bZ}y%>I$NI%2iXfqbNqI>O&3^>o!CwP>W4IX%wO#)#J*v6W&T{m>6jA5 zNA*UolTBeei@^$8@lZoNRswN3La=7k(-HInRwzJ=fWHGSNEH98hRAi2(5hznv6ef_ z>S*?l9HMNsgJj=gJ;H7`<9SlASfk2dQ6VPc1b{_<o+@vGkDHLhOA!0@hCi$)$Z7SJ zVMw-0_$zBYN@t+7D5Miu7wqXTYtSBlO3FEsFrI((v);1&?CY$hKNCI}D+SHP?7#Px zHIVG1y^l#<q5Q}F|LlKU`cCNnUH{wtk#(Zl^18y>Kh|xl6Af{?LQC1YNW|6TbQ>*y zT(>QB_pv2xooT_&Yw~};3t#=faIB%7q|+I&KAA3gl1%kNPDt~gAn}&ST9K~2meZ*O zI#+z$(D``k=L^o-x%|ua?F%3`I>x2P^W6hdZMSf<Kmjk&@OgrhlbxzeyM;Y(3Z0~g zVG_z|x+CW={#(wM#?D+ZPP&`9M8_Z~@c*$?$q!O1L#c#pYKsTNleAc1Bl%5rVp*Zf zDEbC+MuzQyM}WUOOp`9?04Z->VyU{C804WMUDfyRqc5mym|vCQ-srvaj~@)#E*@MK zmhp+(YKukc>-`6xg<LxSM!zviM7Zp--n+~7Ws&f0`M|}yAuVQi_g%~^J21RfbZ}TT ze}^geVtUyD_r@0v4)?>yNX|J;xi*w5>!PMy6S~Vhryjf0ol_(4?~!*gN=`b*=uTGS z^sWe<RCfyYt+kJysytO~8r+C|!k}!7?nZyK&fOoS`>tQ9`?fz4F?$rcfquCT{wj6< z0KH(GfA{F<bR{uPN*R6F6hqd}#j*dFcvAVhe*~ZYW+EZy{uDI+G=+3OaWvT7s3GbX zXAtLt$AZp%1!QALqjqEHOB+L4%;EbP$6#NWrE_&dE9v9Pm|l|pF>;dmA6HUftEs}X zHFWyLh=lWbIk$Q#&J&X5>s9hBkEJl2M-j?%3HC)S&%gQ)x${IU;_Ow#gW1rgD!X&m zCSDMY&Ds`P;8IgLdwa*MN%1}&+M~n0i9DbHW{K&Lu=!zi#r&YIgxht|9V(ryO!WWM zqxv`X09MRMDunznF?6zFtubm@%*#Wojp!P%KI4BQavM45_zi8~Vy4Wi^z=ewa3#5C zY3~c@Hz#_blC2yPe{h)&&qk51lKoon3;m7I$xNQY?jMECE7tleqp%jn@9U$o!fv}U zh3Ok-gI8oN0KKsa_HPf}TP21K%!^gSRYgVj!ao|`6~!_ReCVwh_D`mw2Yd6O#cz2b zAKLH-tDeW`FRO~&n{xahEGbl?gH><TOfHWvJXjU8H>I7W$&g0xp<V2rc~lbP8T51^ zTl;J`u-3ob5C0}1KbDG1KROOgitgkpdM`97oa+4J{Yj8hCsz*Nk!NNoPf`_yb`r~T zv_B1bl8^_o<QcOppets?LzzqLV4k28x;S+V*0tdnO^>Q0!(^!hdX)Q&<#lAJNJXcd zt4ZulEj(X^8F?UCtUAB78h53qZYV^Gb-KdB!40@J!)^q&Bajhc#vVY7?asnMu{l)c z!4&bW^V?XNDIcRue4%1psLc2Ip~p;!3g<y7zG#948ro3FeDG>}(eEUZ6?uvM7Pv?i z`koZNw-m5@syY2Ev!F^J<iw|!eN>}?oZ(az%aKr~Fd|15gNJyAU+7RRDPy&yur$bK zSS=~wV&wi0^`wZx^-Q_M#;z{^U!?BFcSKiKx1o*hh{PE+cd#&iQZE@+Ri0Y>Q6kCa z;M<Drh*OJAus1qY!G0~KQx&G`sx{w3J$jL<hx#LdN8h}R-VYnbN;@z8@8!O^z{=dZ z{5hciYl6&ZJ}%0qd3)h8hci%E`)q>*iS>9MB>f!IUm%`i<#jQTktl1v65js^*VkmI zcmk|SEs|l?%KRGhNztHElwXz4tf6%5S2P%nXK1~zEA9OZIOYpgG)IZE8EfXIWj$gY zKA`MkkcZ9qCwO8hSht1jp2>w=o#7f-O|0f#LDv0W$Mb6r70u}S2>hk+cOq-1!zW*y zNLQF&6}gU1`2*WGfNr6dp!UxG<>qCRj{5vJA1eQgpmK@^Ph*`$i@xq>-=jI>UyQ7Y zbdV{h91+Zx?rw)Lea3$pCu0>(uj>GwCo9=&PYAcVRM};Akp*U#WdT}RN}4{co{8Q5 z#ONW^sCrN`Y*_ijc5kbG_@uZ!vMO@v_bm;N63x!9;(9-;W@E$J{)5qZ@CT#wAX@w2 zSX&=_zMte=aHN{)toMC4ZXU8PD~y<nzI8_oo;I5Ym12CUYW!QDv-L)V$)lqYPW(b& zxRz<&$V9`Ig&eGWHknlC=#YghZAZ%d)M}!;NYY_-_YtCeHQTo$qP)sn+c~YeKuE8o z)BF3&>ey;!kuu{jm)IBC(#uoY*`C$`?yz0U?lCv<;T>FC%y#VUTn~=rdJw4(j^%m~ zE4Z!<d$v%8QOG{%=0un6pvX`=ouY;19cs#w01IU6!!rNQdT+m<@_JXO#_;<GuVGyS z(&j<)2auKwPpjHf2^gkT=QI620xkroDg9|70avPi)N{tK2WH7A8Wpgey&tGRQ<52S z%IuBty&3F@-V9cKf07{OA?7m&Zyy5wJ41(aq8q>Ll=<)P*cmeZ&QxQmQ5jjD#2E}e zb=M>siSmcfOn06P6~walSoKqkp%N<4@v0KGGVu=43S;PJMg}h~Q%m(_yRI<NsOmJ< z5a2+e7CfN4Il4>-ttB>Itc8U*O~zXR0njnYD%EUet^1})bP+8sCpi-@ll0W8)Eb&) zz8StVyAs7L#q8=fr&iIf#~Jj-I<)9e>w^qFGrLK~JzQ{iG5F4hEZXwLLPTXln-V(w z5h49G8932oS`L$O?}&V*vRb-h+ZLt`&@&)j>GM1`qI+dO(!L3$`49y|R~=VYB19O1 zx=#iuyh7^vPX<KyeKHWS^0_LX#~zr`&ivJp9m>*`I%SC;KFoip?dXS&1dGZP_Ba0c zV`mK`kllTV>k6*F7a^Vq=nSHsP`;_{9JGcLN=+f_&VA5Bh7K|AX%mH>JJV}0f(sYc zfah?}HF5tv9lS&%Y!5_x#ciXWpLJocL1&?Y=}{a@yCdclNr&`gA<axGPby(GbBCEP z&at`;7zs1;C%`Z#*flJY?(}(j1m?{;y2R)Cd_;kG>3<G_8_X;4e0n4S&;RxR^!ij# zHbzH<c#P1S06vwaxL}&p?yYwj<(l^Si|7MK-J=iRx&q!&b)3ucFm&FqUQeYmd%w73 zS(jKVeqgIfa(3fl$dey-^@{U6{l>*=*Lp)Zt^!upG48iwUR4-=PH#_cKa(83cXU!7 zHi_yDCNbni4XWDWHsp=x5lta7va-<5zD)YsIv3RKNQIwF@Q|2J;aB>Ei(jNhRqm>D z=_Rg*B}Idq5~9zk(qxqm$hIRWaXk#rOq*23!Fpp`r+ILriv1PASCH$N=(lqOaVNN5 zh(S5(=?31_Hry~d!m+>lJh+niW{G(yIobS1C3JaDx;j~F9D>DoFwrta44J28N&_&n zwoZ~QIAR6*1f3~a$llZG-S~T>AGO9en{<w39(vGerphwA9X*(Oh1HY9#|qq>g32m; ztlJoqa4D5f5JXR!D_7YQ@Emg~UJyT7Sc(1-33i|nt&V^fvWD1bC#;W%#0kuZP}jq> zV9)~ZbfMqa&Z})k8MF#5$DRjYb9I0aC%%-TmT0I|0{swT6_s#^->ZNI{I{dAk8?^T zF47(@!SoKh?VLUl-g{ULOyByeW76Nw+Dh!)PPzSqEp+Dx)nw<eXMgakPL?AQb_*(S zxQ0DDMvHHau5K`ObRmUV5p=O<8E*;Y8}|G)_`khZm_a+n-SYg?PxX{fL{tNUR<P2h z>TSt@{UM83WAbmlO;%`vB)ic>gIu!pTasO{rQ@0@yZ#!N42$0E_ph0f-Pcs!(<lr0 zx23_v!8(`akX<w;L)RwsR5+7fE6k2?%6^a{%Kpu_qT~%hq7b{TpCIht==#uFHEj`X zIiEbEYhQ8$xJ6r%581ca(V{YXO_khn&4~I7lIyP#1=@q>f@JkIs`%hqw?c*YB#S$5 zs-BlzQ0ch6+907;Hww9xO1@smB^q8;C((<sjyB<m`M-HGB$-ZXr<%>ej9BVK`q=uj z3QJU)cA~N17dkZH4O@{ToH8R8zA-v$izBN=@K7+XA+F&g%LYq<g|mcrTmpPJXmLI{ zps$+Q!S*1BRj)9ZQ}tb3x@gMzrP2!=yq>_56>WS5{OhF-_)W`GQLK&)&rp0bPbJD0 zE|8&9T$~PG-s0<#i+L_&yJ+eFiTTeqVr}Gm2jaFFwY>ug&xl&mc*N;*-R<icn6NDm zI{fjwXp89Zd~h{h6y^>l89N0jcBRC)Q&?=E=8uLZn6i}R?JT-Nyq(M3;k$L~jUk>p znkaUX%y^zUiEbiqFi-Ywx&CP~dEGQfj7RM7^HgA{TwQs3Kt=Cr!+tq2zN;JHp~W$f zu!y*Hg4i|DD=o<n*%4@X&MIzUJk|<9#&pH7vln0=)W2NQ&i0F`nrQ0R&}!(s#L+F) z$oKm|=hatn;*Qn4-73tg6!UG6M79a03Z~EWC!Yk7OxW-HLWxSBOwC3X$#t8nlaTRJ zzeIavybaMfqOrFwj*4BMkHE$y)TUgtNzJo1Nd+lu6G|G;rtz_Tr)>-0#2**nQc5UO zbz()yb{rou8RYiJre@O_#FITX!m0i`Aj*V=Yh%I=xmDVi`;3ZjD2BuaUiN1Ftyy@` zcuXK|Tn@K0v9}q%ftja(!|h!5#NOZ4JjM&v<-B4~TXD0XC!Ah`9J7c>`;}mUuNRkB z?PR%Swx{@+PWI+2VR=G&6V>(ztM(s<^!B14+fQ6qykb6FKDw97h;_o#068w?V8!`- zYV%V(?CXXirPC~Th2EfE-{w@YPvQDqjbcwZZ%n~ku>kFqwqglni+!kDn$%I9zDH`2 z*^UcFm4p{J9*37FNn^7xN2O}aJS@wN!~INED$>oWSo}>@MK#LZDyl?!qAI%aBD@av z2(zt|@J^|ULFz13Mx&znu12a!ZxZd;W&+hrq>VQ0z<KPPbC=3x#t18!N?fnkXV{4A zmiMk^nVH%XY!e!ZeWJDAB)US>eL{&f#u;s6znosun_&}azbGZH$Gu{w5~ViyqEJd_ zC2GZxM3!xx$H&@Ce2=hyza^z-AoI<%T`^vZuLt-};_i~MHPP>9r%yKGFzVyf`Wue@ zZaJdHeRnQ<uSK7FPONy^Yw^n+hMXveIw!_4F(<CKZTS7Czj8!7J4#f7l5|I0?3Fp& zhK)~u;Sf8IhSDq%e?H%maw?HHi8jMF4=YUWg=T_X+qk$WzE9UIvr~OX7tyF2k*ZH> zjJlF)<MawghHWZjeFwa1D^+t&qSjf})+8$%kLSGmW|Pch^bGxI!RX0JhTh6n!epz) zx~s&_XInQxV=uD>mX>}CV8Hw6)qK>b!Po1&>CIdg=a|&oP&D6h$gQ9gfniWB2a2Jg zEY>7;=$hx5<@U#l;`%DgQu|Xy{1vs$U?%p(MbpqWZF3k`keOl~RIRn9I~6$(JEC&# zb&w&2l%){$WVE@L*I0}A3C`^1+LC&cG}M|1L@w+Z$fCrV^;$dHlxCB4F=(u@w)080 z$=1GstWB?jo1FGqGJ1k%tebS3syWdaW0Ma-_@GX<Mmzt=E1hf{21jr%YOFrDi;YDQ z&%UY&<!9wM{Y1>;1mH3sb;a1ahsp@+fwHe}AdRz{WWXNaHBq6ll8i_jD?iy<(EiSl zf*`_W*Lb~{Gj(F~Uj>!ruYgqM#MbsS+h)jzQkqNtkIG#TBUFp8ta7%PgzA*$>fQ^` zi7Mys+5@;Xf$brU&6t$-n#{4;B)OQ<EMF9h67<Rf=lotVMvCpOsmbpMq;i8f*+#Gm zMsIC?Z?Y{7uHi-S)v7YW`_X8GExB2L@-CaqEWv6P+b7yKnbNL^U)Lh4Nvc7pmcEwD zzawx)dM~TVR-DD(wKIKB+H0b{kN#8SvWyaqY_EJzg=KzatYu1@$W_~wW;3>PHadgq z#TU|!Ul0=Tou7@uAF)cPZYUPHR*oVHN%IrQRP(p~;FooPfjPJ+i6!r@fSmzMUKsWy z<|~pJq%BI^31~!Ie&Kz<MZFnT#5e=P|1sP}#_zy>PvDb(^~A5XgEy?<|2n|wh$}Df zRp*`W_uPIDdZCQCw0OU64E{0<aZ_93FF3ud7qyWq$jj|el#5)wL8a5Sjmy09D{2<G zRpiNE5oiLC<=igf`gBA*cDAtgccCpiLXh>&I%KHhx52K?3%}wrmi&s_iLw<Uw;G&F z;yOIi#q_Di+Awv1L{9yd+ot3N%~x1m@B=xhQq#c%P1`l&)-%Oz*Gd$AjRmP+5IT6C zhEt^cRq{1CQ!H}{RO<3`-S)Et=cT4#&_O!?#ck`nN+MmI1@|CkqCK8BnPeeOd)&zn zj)^hC2)t#jhF&jeLi}SdgG?MaI_k;~IyrDBvv|fCZv$*!)p7P{_?#MzOhA6LqNM<5 znGUDirBQtnZSEA}DxsNC!D7Nk^HRWtHKF=c4lb0JxXJ`-D``hQ(g`RnGj|Fq)&3zW zr%nc6jQE-swY@ufct}cRW=5N_mNUwO;i2G>nua~iBmWbQ$=;88PMr8YZ{z=%H;nn7 zAEgFM2;Ud;XY5TV9}6sZ&q!N4U1zG(Y@l_T`gw&L>prPFST8Xwtp~TgUSThdX!6~- z4sLB;tQ}enw2k>o_cELU^4BcdBsz;|VJfPd?ra|>&&$tpIt9P%#&6;fKTO@NH4Qe# zW;i+6b}zm0oA`D_R*gb_slll$9E{E1B1c&R-o&zKV<KIg6Vb*D+vF@S%M}^9MH#-A z7$#}Ox}`V1qU>wk_9V<Kvw_R>zS^nGmYj>MTL907<#lr*f1jXHmPvIRDhn&A?xRXk zWo_}cy3#2(dbd?85usfS>00*yjT61#?x$rFGz0ywU_CbC5@)H-b=UF0TRF@@F@8n( zU5Q^dCqEA1v$e&+FAJ(AS+aAJyJ+>62J*7eG^xvImzmichJmseIM+t2sw1*Q=O%S& zsy}UTbOyhS%+9(vjx)6mANUDdPclO^Z@lg=NQ1_c$dwi}Bym=$TS=&uwxqRZF<%W! zfgfs!cGz<au>g(8Eq+u4FLY6;A&gH2zZ}P=T5rutOXayHaibJ1I5B#%I*R|=F0$sf zGryzM&S@Kc*KZ<Xd^&ZCVMlbqKBJw}$8@#u`Y^;7LhDk-EL`@E(%tpI=!ok9-&Q~u zQQStvoP=b>^@xw#W3WSei*mX*hGZN&DI`NCF3!$YiOP)gN}{)`2c2tTyjxuCt+-j- zBu^3T6Au+oxxLYM!!0v!G{<<ixsa=_WRNrV2s6YjNn(5C5FjBiIp7f9mM&xZBL0Ni z64TOU$!xP52gS%YOB^-)AC-WN-YEABIZ<yH?k6JGM}BH6XVh*Sd&_JjW4ynFu34s? zYnC7y=gdn>c#&0OpI4N3>CjLlq0<|RCSKW6l+Y(`K5UA;@}4QCuR9{Cmz9ok-%lyx z!cQ83&5!UJ>Sqy^Vw~L(U;f~IG~S;R&iAt%-8V!kj1J8eRK)K|2!7fxvQa~Kzu#jH zMqyU4uVY*xN@?nVGo}F+UBtEByR_k8gTfqV*AD*eXWE9pH*n@evj)#fyM(2!Gv<^I zMw&<y8wtx)j6z0BXcQRyf&|qY<K5()YKM2Pn`|sAiXPz=mkjn6llYPvbaHQi-skC$ zbkoT1`a7>i$AIr+^n3hctspV4wS8%~q9t_N{k<#Ujk{++wMg|Ylh3>Zd#h1HmXZuj zG`0$lkXE6L)J|$eoQ+n&SV1ycg%YIks#d{_Uy~~3Ju$G#zgVUV8KeMO2dfA*v<irA zIJB7<8(M|uLeFamTUS3HrT6ytFE1l%u^w6~miQ&qaMUF9s#;9wlbXe*^8T$MriqP< zw8@x_zH8qX#MV~$iUF>|O|V<0X7d;eq;mVy8x%t{vQ?;7i-%yPF&J48<85$F8T@*+ z$f_T7*0u^O(aPl{sfD<{896*8CRk|}*$|<Y6#4+y*drwDC-xXX@~12Zh7>e%h;kev zjnXES*6zD?J*Fwj+K@u*O5lO2Hfb{(=LS>dC9#d$^Ue?qVunbpqLDTedSED$azivu z))Z-#QMpxOWAEAM_Xw$NeS&g7*7Qi9Fr)2A(T^^@gO(6`n@M`9y(rpt1nr5u6lsfg zMl~b)0iSfay=c-Ug>66ZCJC_a`XVDAb6E~-C8oKg&|+sEMKaDNl+F{>M5R}sRUHnm zy9<8yJ%yVpKJO2gx_Mb<i)m){uyUjNzh9I)`_P`|{xo*hjID|59|XT7U2g&YeZVf9 zl1l!g22O|giVw7cmaT7KzhYHE1I>j_iHe4PiAsa{yb!DoonjOkIcI|(fG%VZu%YdN zQj0yJaqg|e0%_y@r4n3XT%tzU#jWNV?=7W>xB2pFg6H>FxB1-HfAei#GUtmWQ#H@K zayX>8fAj4<Wz@%!azr$b5Iw`^2|6SA6N<bM4aU8mc7PX=o}6yyhBk6xe#oh83wRXZ zUzBxR`zV=Qqu_m{f%idYZVZ}dc3%5<CO9eCjFS?Nda41_+d*AE+VE&HI4H?+_73Dg zP1zmSPGys897<7zC1_T3;!E#eE1bznGVTXTYGiE=;4wc6e9ZkQ@FQ@f68-G%WA0;) zkm)9HS^kRzNBMDh4_vpK*oi*I`>H_C8;hbYFPM~W2Q_i|jUlBtbl0b}lbpiy=Awd2 z(4LQ;J2+diDs`%TV#<B?Uz+IU&8En{X!|h}?W5@t&eW6)J4rvr_)_V>rqiSBL{n6R zy;2l^sUB9*9o1Unhww~A9eM3ir>{Dx5UDh_kn~P6kcKe|K4-w8bW>?_N+e3ZWBS|W zrj$7Q22%^PA+Piw98yYvqeM@&ziH~Y^5i7;+XDMB8r|L>;-1xTJN?yk=d72Po5;?f zXAyX3;d96p39R1Q0E^WLd@Q(VC5VAL>Y3?#pa%GVV>Ulh4LyuTcx-f+nn)u%N7xxr z01imdlOOE78UqX{gj=X<7!QHaBR4(rKquB;C#+sy?PTj~LqkD>xPi{>Zh-fw85`|P zLg4^(+i`O2ECg1mD31ot)(ARi6*M(eSt3We5KCz8NWcAB^j4Cgnksi-Jw09mtvQiv z%SgH~fzW$zAojQsUO?b~*4z0nMLBi}+Cv*QG#DFV&778<U)Qf2Z$wiScySD8|Eyt7 z!>bMQhL7tN=8rAQlHW*9vB%l>m^RfH)fZW)r33yQN%rEdBr~nAw|vi?Z5KFayCCh} zj<Q9AO0&7DU=Ubj<#WkgdcOU4$@ig_-M*VQ)8UV%qf5vC4m{Qt)UwSEDV@1+P+3@5 z`7FM*sd5kAkAGu}9krMW29*U|)kk;mcNe$g%u#EW0K+zrEHAX}vfu^f6+b~#VRqjZ z!U~oAjCKvIjhQzW#;b(ZBWN{HT_Jv_-}9-jw%y=bUm$Y8Usf-8Fbp?|rh18k)5CUL zZRr%_0tb1FKLq?fVrScZh}lEb_m!U>*eRJ_5^qKHD|MXpykMgrO;YfwfaTrS^SPL& zL~zGbW1|~Iz_TDnxt=c)5ARzI-kQrU&=&FV=c}WS1U=pWyZ5e+!~IR%Yk(!qj++8a zCzsFfalnr)bxjHQJw4zC9|GrB44d01_>_r$50t5lWMB;|Mm_&Idde=&_BtYuYzLoZ z!&SAU6p>%I3lOmKbk}xaMg?^p^iyd>uix`ls7{JH4|>1u@3to}*ckyly~_f+%|h~V z-5uhGp}#SE!4D(qOnyc=FMJ*|_vZAtx7@1~FH}af%)_{z4=fsxcg*7#4MaQ^(P9Lr zNwr_(q9fBvviZai?;)uJ)UH+15^*@_nG@_BnOG6gBAcq{yBl^Gb8iZ9K}dQe?kqC* zW_q0534I%+Dv|m&Ql}zydK?iG_<f3K=>vsbfN$;zOeo2KT<;2dt11#M#P~h4yewL( zJD|tkYk~KLzY~fR^`F4vxkjS~`%W!(cM~P>AU2{w&(r|(0F;d}(0EfqXUF&bA6;(& zTgd{EXL$E@M|>qz>~92z!~so1c<RKj7;qpOzeEqODcJu+uPl>wsdxg8l%5aW<s^1# zc`{W7e3azKx-$6!J|D9>88AVK(VicqA-?|D4v%TQm6ImsqlPzEZVADeQI8+zt6t2! zR{zE#+Sw-<%zZ-6`+dT6vBIk17Xu2#c)KA9FuEEojLRc^AMz!lu*twTC2pCN;U|;5 zz{`h9aXMqQ$gRGSVV0WUmGUx%^D4NVR-f0U4C%tX8;COJ*|UK6dar8+zkWf~EZQL( z!*NI4v1V$PF+BL?vOy6rSG`yd443XS<}iG&A&E2sBM>@(-|`HfxsBoG0K?r39ClkE z%B=^6+bU!d&Q&qW?P2MU@#SdG#S!4QKHz^N)HV(0!{ke3AGa&RUQ~3~C6+77ok=-u z(DQ*W=&AS7=|_rOSKcYQ)+e&HnTD>k7Y+1vqE^4BOZa;~_Zq$TGBDNegeZ(C!wOuT z@Y&=8PB1o~!5EUEEy2E#ORQq-jbvbBi4}fN@`$(v_U-;oA%S4DB0=4%5vRQl^sY*! zQ<*20Jt9s7Pwp#W!G5dHcasjSEKoC;ZsT@2idAK5H3_9eGwwntO<86bON(J?9V{P< zk3Np6eA5x$bCs2x@}!?CE%^NvF19A-g!maTWnvy}c#&d$iNvUWNCOXBi0jbqmzR*t zRLxBILgQT3!HAN_#_pE}$2l6L>-1BcvIF%w$LgF4{)DTI@zSi|yM5A5-@Csw8Xls9 zo)w4)zr0stv*@eNDm2G{uTbD5Z({ZfTn3uEKw~RP)$EFJ=9JQw1kA)7<e%NEc}@GC zzSM{s5P4}d%6&mj(sTJa+7dix2et2M$KH(u<?c$t-oPVrkgAtq)UA{rUfLL^DQ`?J zEyJ~4*i5$z23#4qcH){&<=C^0S93^CH^!j$d254<lI_9?T7pquW$qcMF}DgG1+Bun z1>1%9>fv8EP|HRaCtT38&<h!D6{q|c`o0*yHeAuTR7-D<@Af~n#g+a9ZEeNctdNn+ zEVR&w=hp*Kq4Wa*8QRTKIoHlWibhdZ&`8x0rN+i+O;)3{lyj{JJTfK+82?5#>QBYB zY3w@~^O)A_n|{J*V)(uB2R+GN38V;H@U#a{@u2(?6&nFnjG793dqeQW@~G=d^O{nk zUi--F{F?GtdA0s7M-{lziKkcNZ^GY`@K-fGYe|owT&|Ea4S_e7D6m=;L(pzBR4tiT z3#~%+%F_F+6I)_2TQ7|;D018~vE?!N3k!Ol3q7}6o+_Q#BF6ibq36SvDEDHSq`3?j zL(sD%l=d47h>`Y%*e$9^3Am~=Yv#I?k&l+lFJ-p%lz+730;G5n>lxruF_G|G)`+(A zM(ut3416hi;}4LGT(oxff(o1s6$^TV1q)h*#S89l;aoz1<)vyi)1|OC$LTRpzKL`F zEznWTO5B-W)h<#$VvTe@(t<Jt6_}5UfdrJa&Rb^9FIj4hP)nLQ>*IWGiD(zKKGH(0 z_rGJn$(blbt4s0ySEMtwQ%ZV-I;nKnTg$oH0-U->FfPJr32yXuVX@SR=LOPS{-W?8 zsHz90&BDX@H81KBN)~}u#Bar0+l7avD?n3Hmq9QvFMzJCffeuO;>4P?hIyL)HFUWV zx5*cU`5uQn@HEr4Z25|nGajf~I{n`J?l<J-<y)~feh1p57HjhW?ptvk$Hms@8T?+s z^$o6ZIM6y=@$;0{yRhEg^0QUiGcaXkg?8$0to}+d+QYdX4N$dc_jUn7F?EtP3btlC zoWCOVajQhlSrsMJdK_bt(kd?n4&>TCsz*C_`=U@UuxCitNEiFI8{eF~j8n$px_vGU z&-=N!^@GxPQz0XOJ`LxJ1GmPpE{m7D6@cUu{l6<^sWE=Jy9|4Ub4B@~y`Q;VI8UYO zwN{3oyjN1nzhD)s(O&wzOGH`)fl@<{aIvaK_@Zh(`f;_Y4uAU&v<hdcdIp|f*($VD zRU^eqTe06Qp)o)2H(sZp(prU7(HZq0U<*6<=Dszjcc0qLxz76W9o4S#WmbiHDf+!# zsHF^#+Ab`iO(hGhO(nlBeY}y4+=^w}h1c<&eN|XJ2YLo7f4N=wMOCZtO4Sp)7w=xQ zdp<_71nEy!T3V=U+NjSHjc63`9^{t{x73QPlHu2D!6foXf^%>A*MfJ7GnnCIFVC^O z7v)yLw*rx~K08w>tjs_2hVe3BVj@o4DQu-Z16!MV1j8FW0%_VV{JIe<5S+moJF46N zycd|e4KW5?nZWZz`f0tdp%)^(-0_ezd^f49N2qKJ_m1V}Lb+p*yW}XR*E&S{tlmEz zF@gdJdiDxpzWYXm?lp|S)80)!kv^yQBqHY(J5IW#F%ujMoSh?EW9c561*%IM3rM;( z)&TyQte2JN;89%U4Bw@JYn00oy`HBIHfAlRXM25~jliIY>s6o6V+m~SXLSxa4oo82 zPwnEY8K{wl?9deOL1BZmh<!Pw*Jes`h_KIQqt{F5A{&djrE)qY(dQR76U^BX$N(2N zk{ytT0v-fC>jeTmnfd$oPh#Vtyg(uGI_Vb20P;*pgROsMTs7wC!_oKp=R+PH9ZJD$ z9$=~MqtDyk?q@wn#XdbbDh~CA-G4f&<5_!HE$eSK{+5-{16Tg_fnWDWVYP>M?iK6- z@p4YN>S@^Y0x$kr&nZ{m&F=F_VLr^s#^mX(*Z=+`uqohdj4nJq^4mEr#T$VoGWdRE zq@~z`o@~YaA>2!WLlSjMsRsPeNG&`7B7TR_Wv-_!x!|0`yI<&eRy|SgFEv@UfZYL) zEtHm5uLZaMQRK0Pp0n$1rCPx50PKcX9a_A9j4#7`OXxYdzHzou+b3+Y^a--|!d6IB zAp3<cFju}W3_<3voTFWcwZ6Ej53o4T_e($q1#AqvMmLvA+(shC{qa#woyC`1-5Ada zK2{4(Ja5!>zcGskJRg|9av}C8PCi#0V977nY0_qe&VK59+g(jc`BLP0bmankWdZUK z--(cqX;>C3WX`wU?-S&rrGVu(;OmQ1&~*9m>o0B>))dasg5S2R?=WlcKfK$8LngM< zw+s7CJ;J^XwB;>p3Fd2;$$gk}ec_c4|EUgb!l|%bFoWO3xjysu2(p9t0tIiquoUT} zut)IQwJjf7<--K<{{(7XUKocpS6P_Fm(3>HzgkO5O3VLZ-7YL#)-!Nvxw|FcSuyHv zDFu|79S0iUr4N|O-IxVHn~_sC5v0lPmWRp<@ZP9ZIA@j1hl8u#7|V}GW`y$1z1bEQ z@Du`qeCsO&$Ide1!`T4)CLs(l3g3+yUcC-2her7Kl$>1%Lku4%xnRQglw3fp=H0-X z{0jn}*5F5WY1Uni`p|w8Wi^EMTUaU{Te!hKnoTa$A161BwfoWAaY?KkySBy0tW_RF zOWyRIL6iXapHxR-1&7ysz;hx{IzW}_So`B=)Op~L3D^Tia9&Ls+Y1(=9HSE_62?6N zE~+8vLC-C}tOR(fk)5bA;`6NbRb$*%!ei1`MxSTZ$q!H$+e_o;T0>i88DOSzIp1`( zngGXJQ+-;h+kRD~l4}6v)#4IK8FAHmZ|i@cUH9O+f_D6Gb;v?>DDJ4^kss7ii8?+< zTgLbBmNp%u2V^}$G65weOvDK_iM6M;6|_LST5L@%*^YQWBEbC!pQuG)fG;NCv3&!g zJ)J^wTc<D)S~95>okAi!$8Pb0f>05Ar!Yx9AMy(hyMWXmPLkWLzUwaVTinzf8RD3- z=Q6;#KL+KusREzp!U;A;&!CNCeY}mQJ|_GSPc0L|c<LPCdpy-B+=-_u$MDox;osq@ zKgT!z9X_1#-@Y?(>^n(!d`J0jzC&GoqyO$ZTkxIl@nJXsgSPHn@Q{@h6yr1vcvc3^ z5B%o@c5<>vq!{;?WlCrq!3qr{x5o%h2KKWx=(+A?GR8cf*^!ey;k2t>MA*S8nc5{D z4x%n&Ks@{>{LTU{CT61=!6XF%&yRrPRNk>}xa{}~@v~1MMiu-#cZ;D5e{O)TI43Bb zF|%j3(`;D10>fqAF~pAGm+&4kojB#QAwQ<w1LP0g1Kd-@t>PN7ZmUn7t_ovOO5k&5 zoDF@SpFA?Ywsy2_L~l=_MQ;T53KmNAOtug?Y_BEh+XPENz_UBB7;yVr|IbSpg?v(2 zSx+)f3eOynSviB;Dtpg>x4e%@b`v0pE#bwQpl9<)=g15))xOzu0lE>L(E5@kYwQHx zZO;H77xRDbzdZ05Jpy@F9Hab|k;*2Y|JK1FRpEX16nl>ObyK>%RY+IuguZ+$`0gED z`8-j!BL0SPkQ&uyrUBW~m1w>^uq2LA>?PR83Sf9D0u5J2k7gP*N-d=Du55UFRp^Xr zwFb7sxL4vn8~2Zo?iGH4-ag&S>QLYW8T2VyWQPgpjei9C2BP<07S=XOt$T%6XoR(5 zP)@ks%fNRYa-u%t9R8$Gr=clY=$KfNGkIc{G==pRiGFccw3+3k8j+QGnUz5kQQT-q z3G*LlOzP$8NfP@p^nhN8u(h<aJF$(86H3J%u`3{D^#>(3L#SS3QAd{rK4}+s@#ZT` z&Xqn^XZnF6@wo__>Uew`b@hKJwPAK-Cr9e4nEZi&OVQB<U9xG5yEd4mVcCYAPQ7}W zMW8uQ#9fR4cJsC4Kv4rIBO+&CHsX99^>hW_L&<wXC6AcD?td9@b$qR~-a7rH=-uB7 zGE2;9p*pesGT>^^Q|`S8FDe;`7#RgvanYY;7MuT+ddMv&6RnW;fO8_ZP8l3}8N8WV z>YgA^wi*W&MuU~fD~<YSE9J$=3oZ?K7n7|PJ-9RK304baZ`62KW3JTzuEz&{bt?ho zfVo`_Y!`EM%CB#Mg(I-h<WWNlw3@5n<7iYqBqh-Mv@3QqE_W2L?GB%7q{E#M!}MRw zH=@Z5^p}&zTWvT27#EeOD}Z@*2+E3}=Yk-%6SXlX$;w|z*cD|jn2NEH_6($vo`Dox zk)#0p9_7jlkbDvy!vH@Q42Kbm5s@U}OTZg|?@@hALNjaM8vpa)21M=I<#V}r`dluB zc^)9FF^lyxr7^x4+^QsE5BE0Bs<JDa*!ZMcW%i^-b~nk&sN4-gq?Kk$ovaNcbG#MD z-OFNtX<H*MGW{O{AIC%%XC)dfbbH^gU9N>k7x!^@UQ9b+dArYbo%5*}^db%5Fb6&V z^s;wizM%^mSD@>Io<8p(j44ZHCv{xYU3)PTdnS9g4yW3a_eP*ivDPzgLMD4Rj!eKi z73OXu<e{(LknM=JZ7i}}Z?Y(Ck<Cm7cb8RZi`dKV`h;{#Nnx@zDkPhu(0+KVkk}_Q z${<xsutIi5VyxDp)t89+k)xBE3yLzYq~WiwFSYrxBK4IN{7vgivL)|nL0!ZZq_^b( zZlc{{w-5E+^J1^z$h;*Ad3OYGW!TH;TMW?s@WM)d@*b)_Q)ImCD0=A9J4LfDA1p%u zX$xd6vch|N6K%`%>I?C<clil>?&VqinLM?}+Ncj6dDO6hf+tZ%b*T0x?1RUZg6aG; zeg&-bSsf*)Bi0zVXR8VNbD&uf7oeG1IZ&~2+KIL}9jh$}U)C187rOD2_b^{b+xq*2 zS#34_UeC=S&SV{z5rR@L8P$3X+0`>Zmj^wG@QNk@Y?`jY*|CU&j3>tD^=L<<u;<2T z^)DHIGQJlX-@6Xn4kBw}`T|*LpdE=t^xif|Uku<{5*NIq4)3eY;+J5LG~u*?7j@SL z(Ba1sA@Xr<3F3b4q~P+`LQc?dNLah!kg#~e>4E<|L0vx!)YWVfe#(i|@V!6<<bMfo zn&qd3RU5{+(M)bhhm&4x6kakl3O|j@=^;}SyJ!YlF^_5JQQ?De2^G#$ct(G@zWpb> zv9u+Xx=Q_G(B@fy*~N?&*Ql4D9*9th)k~cn)oJj!pgx*kdKGcCIOwM5hw>I6Z?69< zp`#n~qv5nu%TGgga2m0EHwjOXL(pX2zhaZHKz({3ZkA?+dif#YNAO)WU7h5FcAHxv z8{o;&Nu}~ojS6_zFGYQFSp9MusvWOM!%9Jadb&!47y*$h)SI1E>ZON-<o%kB>Uwo$ zqBCl&h5=u=hO0hAbpYRxY23ar!g|8`AyTt4>W!LuO(o=O;H7r}znB494e)?4x@{b9 zvbE7n34aw-mqmDdDZ?F@1->4fc*xJeF_6fffhP<N;sNDWZWeZeBLKA4RU7y|HJl<9 zSdPRoPTyGVol%ep64zsa-NH-Sdi#m?Q;=awvnw3j45DQieuxSVMWNwLMZKe0g%=EH z!7nkN@Od>l%lQ{!Rh~leY&*l{r=t|3aVcorX}#K`G&{YQOV4)h7JiyHzx`vobc*hd z9BI83ljKg8ns`TQT(5Of7}qxw=q0Vk_tWK0CSRqX;_zLL@%~qjG6`82UkPjXkl_Si zC-X;k3NOWphtq0H;cH@5ToV4)f(E<`tK3^FcLGC;BQ8~F%?CW7tFW?ZwJ0mG3wYc} zSYinp=fm;Q+0-U&;M7dhEZ`vl%DC9IfY_Xl?ISgTr7X9bd4U<{R*%nFLmQ-=f`LRc zoi@nqqVF>_R32T^@WlZ18I-h<;V`N88!ty@k}0yTs7xuIKOTxLoMe9s=jwD`q(nTd zLUu0e%$w}Hgxm^Pk?>?UxZP8;d%2bxz~eVZB+X(QqRy*wox6l|oKyL|hM#>g5CM8^ zm7n9=UbY>T=6%wSHop*O*9?k8@?^RF40I>A;v2Cc`KQcmu_u~Q2Z?oZW@R#~Z42c0 za{B?~0iB<<xJ!*ZMo3Fgl7wiOZLm&xxuRX-PDM-)b6`W-j(*q6te4`vU-d_6U+o7V z4)gxEZ)%&sPX+fs8oY%pV8RR%QP(7I8+Q5B&@Nx(4e#=3?IB<cr?Gaa%j{$PHQ2gY zsG)MBNFDD?D`TsUVQR$NfU;?!vNOEYHOtHL{<DhZ6sy%6Lo<OE#*LL=6cIc?j#Qvj zbf{DsN@={x5_tZRvM9Hw2Sh8>FB0s>RExTD|4;W<sp~Jp4p9l5W*7G1Zd^Iomm=aH zW&4utQ`Wz!0~VZ*s%j2?X{FFr{E4%HkNx@C0nuUOQ7)^d_pBgpgPwPYpK-`11${hf z@Pq1wv{xPQeCL~c)4PUfa?0OWMzx!Shb(XX2V#okBBn^nCLvv2xhZ24Vvrn0D`Pd4 z4?A~PFI?XQEfIs#E+jj-EW41{Ep<%D+ff(SuwCE`t<ag@zkz6-7BQfcUPU$P%GU%I zD}4&|90@t_Q_Wh27a@Yl;T1pKgqi?<oQF`$-!`n=@DKRai$;nPDT;1Q{aY6J^uskB zqZ5gl$s+I<%w$l|NtubU2=_mT{*!9)43S<BjrQtxs$bgs#;<q68<8|G&R&b>v|b9l ztU^e2%BoANQ5V&uG5x@2gL9m{nCpfH=9B9bFyjqaZ;(7@GfebP4RZ$*jY=mgn<zj} z2mBw^ewM~?!nuRVJg^QobgZry3`z@j3h8akK7-Ych}?0E4(aiZ={1kYLU=CQvkcc; zEiOvshN^h^kc6;REiGZW<9%-q$*Cck$>~`=QdtDB<%;9us~E8j3`&0Y`m<>9sE3Y1 zU#51mu+XSqLDc%nmdXyC7&z6`WE%cv8jPET1q85(?GxxCB)}_$yc%?tgbQ&KcdRE< zkWZInv<M4SR$(FhL5_O<0{*N98WU~CQBOrzczj9BuW^1$`2~XNY5nBzD0g5~8K-Q- zGubDChSxcWdCMHkhM&0p8n8gOy0EwH*==@7gQ<b(5S(#J-3fHJU^e2+hcs8})<&Kb z#1*m@N#iKw(^~cOgAxUk?Ix(PKGwcz5?djKeNzXGa@m%7fOCp13RtiJa}BT+Oooz- zt->^N7?@eBkVDYxp+ux)6W}mN(Gvw^>VU-lSZCX_i1O~-D}d4fz4)1h)yURhxK73g z+yQDba%^VhMX=K;VB9st$be5jKv*$ntxgod5+bDge)Gwa66km^9%F?MIBlpVswzbq zv1<86B}4~Kl~2^XTbKc8sOe>2X7zzrCxadX_}NU-J$JB7Cbk(K|I2`K5z#;F*b8e0 zMvtEqI8fMs9#JPV+JLPVu{F<m5^+YQZUZ?fNR5vtiiRXgG1iKBNG3w<Mv`N8&~&mh zVjtZp-N)@rGA{+K$LZoi8kJ1<lA=u`-cpPO^FD5BpqQ1I+k6t@Qg%WLW>K_AnqdP6 zsqM7=oq`_pq|!L?r~-Nv*^svbo{uP+^FblsrzSf|Rs^)uWRzN^Hdq(gO3aB}mgH>M zAM6&2D*6Vb|NH`{#H3!DzWr*2@mN3E$#O^7vUzGHy74jr&p!h(ZHVU4#b$-gh_;{8 zY`<zUCIL<#>gT|HDlzT{9K2KZ%H+A&^EKmpp6U}FE<|Z18CTm^R*!hT7_p=fL`@le z7-#tPGr)o$mB$upe_{<;zBFKu$c%Dlh<hjO#LAbbrB10@>?G<pD>Eut3g|g?_*}0L zR1b?E<fZ_dK#WnQD-B(FACY!mwHTQV8?5ed!B$J_M~o%pzDGQh%jPb?-rG@I46j+g z1;w?dRS>J`5f<gS^XjjSwZ;EFpYe7+H@uUxeBm>U!FX_U_D3<TTTM225{m@&uW^dW zp*`VVOsFOgaGgd%rvg4X#O^lGm0X6Sm_dZo10~I;2g;iPMH@E>+3kk}eItVsn}qu) ze9_GdLsZh`N&6nx+W@&XRY&uig=~s1#VC1b;9H*Ixex}n8703MD2McgPzEi!i`mmN z3>Tpiv<9BWevr~efO*pHVr~rQBV7+n;*=qLsYaY5gMT5jaVPYoX*#R}0gcS+4bO?Q zS^7Tp9+s{}y4nICgbqaF5ogPLPgGlln+AA{0sO){1LCQw9b;Nb5<szvQPvKogLpsg z+He<!Xyy<^W2=Yp!<2waXYJiWhe5P*W2LClD6~CXAS`}3xjl-f*@@tBjCk4vn)%59 zsoVuvs&CIi#BRUmlJAoNt}?tjzMmhQ!F3Zrp>leigGmu`>fxETs=98Mz_opKRq7Hg zdd2!aAdu1Z9~O8Mq#R(8wjLhIz{~J^+I&wBezw}^im!)P4M7zv9^Se-_G^~!Ih^cw zInE2pSgOrO&Wj`Jc0?k>8=RgvY0Na7-ZPf2LV6m~Ihu$5A4PN)G4z^<{L!z^4<v@t z4v(c#c?r^{h0=ZlNyjq|mXnkJ=xcZ_jwSkM9Sp{AvurEc${Ss~LajatI7Z;(o6}E* zjwEXZTS=*ut+@hx&j7r_Vkeml%FP{AWvzEoeRMBdqwMV_M9jR8Mus3Dfgf#ArZgkq z#Mch2V1G44zYyPis&_}xC4LF|%tlEDC=6L;Ec+I4BmAl;tA)YxKUl&wH=*tu0rutN zq1q_m>m_)DA*lbM&^|vHz{oqqi~}KG=-h_-b8gqq`lRgIiC*l)$PxV`j`8{rShnIs z13jljf8>CS@C(NJ@yFnP=T<(_xud9wmqA~SrF926eC-my%h|+BGeR>iZE6x>fjki~ zJD(o>W9<WuxlYzz;#v}@z#OtVu`6ke6K8>3lu0sviuY}JKRZy_KKJGZ_~Yl~hmZrB z_5lJd+7&^X@tjkdvC7F-i43dcm#bx!SUI&5Lakt4aR@ZnUL9*^M}P~>J<aS92=pXa zPl&D<BLc~bmdil2!r=JKy@7KT8nT(}9XJa*vU}7sHON|!>l~kLRcN-;Xt>8SLnF?< z$YxsRWaAh*-y-J@mcv4>34W>9Lz;PKYIr;u?`~$0%iuDJ>vKQT4;BKz^bTM&s;&Yb zlB>f|iQz4bziqAcdk%Z0bJToG2;Q;3Z8$C2u9g*(uGN4iVO*sfdJ|?V^t8ZTjpl23 zrYQorr2E4_Nzoq$%8SkvOCe1QX^)2PyKmov=BNN|VT49mB$MIC0v;~cC_s7c)`;-; zjD}fQkK<yn6@s>yyf>PM)jW2f-xDRM+B04eO%?Zwz^Mx3UD$<*MrM%;xuxIp;RtXO z`gJAdZh)x%)gNxLD>9*OA|#v=es()JGdbd})$lcSk0ZoyM@wq!IK2tdXjd=1nOItY z-BA7D1;Mi{2s#iLV27K=ATFK^J`hwb&r)jyWX^ui6`_0hW#~uxJ$H@J7Ax$)sJa1v zx4`0>1Ge~SzrLDTq{XAAhfouf%KHR{w~4#9+U<ydl!Ki(tyd<_f$k>J-0kGl$NB}2 zo_*EzaxMFszWSMG!If;1_UhB1|0qyct@u4(3G^`913n*>HC~M(ui`4<;q}Gh_f(AF z`<89crx9tgDn-r`w3G)gf@+Yi+T72mHyuvXF}ySKP#g3E!SNRJ)o5R>pl;1CeJ@oB z9VysT`=i{c^04Lvajo-BEoG@|d|}NA<n}=xvYJVt7J?f(iBd?g9#a9g5GqtsO?;!a zv`3f+OmR85fXrH<XCN9+=_JC+D7m;sG4ih^%vxc(suX$>FX8Qd&;T6;Rl8G|O~1NI zT%1%fLCvcK^JFRZluFn)nG5~ioLnJH&%qhi1#c|Sg{8F&O3t7S82wGcb6|^uONP0< zQ!XC#EI!HBdqdk#aK1BK{1*I|X7Q=u8;ts7ZEf(bvR0#Lr!(bFtMH2EQTUIk&81ov z#|m6~Z8zSIdX~bI0XtbSYI!t$>|OdBCVCce*F)v<+QCslUZxd2>M84TbaK_AnQ@Te z)3XedVHl3s;Pae>X9x;y-SAvkVwf#nOWOwCvVGzX_+Ykf;ZK0GkYK$u5P2-%nLZM0 zy{jb}yeci^OC{F$odHkr$lSpcqjYFODYJN&!U_Xi^jpSh%nk!w<JHlPv3quyCzx}< zcMsY7)QZ7vr$((6eCJFHbRjM2`x$j))Iok9@Tf+huVrBx+I<5Fs>4Gv`I|$LGFkG( zX4rBXN(!0%0K=CRkSj$s=Gvu=nfB;C1pHud!}rMGyUZw;+F~Ksv0VSXC8kkgQza)@ zqnj#HBY?k(?e8P~uw|lkKdgXa_fUH|-^lPq+5!BL$#8Jb0hiRq8t*y+n4-Z7r(9#- zK%6GAOTkZQN@z9#M~)Xxj3idPYdX|*VkA{{z$EKCF_Nr`*}E;2G6@(By)toMiBn}I znbEdO@ZnsLd_vG#P6+D#@vwZV_f2e$+E<dIfo<eu9kUFX+~Py@NG7w&aB#fFMt`ow zKFjuNZC7DGxLdU?DapR2=s;JeU{%MPQ|#qMQPAPE84AruhG0x>-y3?@WXv(A+m{r@ zUg;Ee5~=xIf0SDt*@uytxKCx<i?PA(pFZOG7*g%J{&$8%qQgU!viBk%7c0{#LN;8w zy>a#(Ce205l8@XGl)~4@8RLXz=0C@1VzyAs3PS};;qOLR?X1>@{)jz={rWa$eF^ix zF@4Pu&nG8?A?q}TjWIs~mIh4&mx)*$I+>Z<LF|u;t-f3Cgp%jsl}$9X)C4-~MarnL z6@Jf7zxriadvpnLMwf^VTd&T>zMTD0!1Dl$BCDouC5L<x&MIn20=LEwUG|WNfsk(2 z8SoAE!>%?R*BG3M3AFVLNK_N})zGmN?^xJET)g)y;e!KF!)M`jokSX;i2-e=lb}O| zeeKYlXooL+Z_mKGlT07(U+r_C72#@+cu(rClo<hqa=kV0&VvpfqcAjHsk>XQf!-s_ zk9v@w<tE@iErdK~4)%AFcchxCXE#EwQC;3BZU&5^+XWui3|!N3W#PI&pa+KQQ(Sep zYDh6O1oG!eno}D$@Y3d@@{~sC2M#=X67US)Slb4hxb_Nb4c5<F!PkVvpvqF>^nkhb z@LIrr|K(NNrNh>js`a8inHpbhmpES&Dq<tm%x+bt&Mlwp-R1^2!c+rY4d^KaYeG64 zhPe6s0zCgLNHPrQ(d+|{?t-ix->9INr<bhl>9Ywe6GJlRMbK#5<@cPxy0RcGL{Tqd zDeb-pv@AMkL`{*wns?{Aa%597!OJjbLHgQYioLvEA9JNBwN*F-jDykHt-_J|R^hEG zXtd4qdscuSf3?2^rT-Ne@qFX`d1!U9vm078A^krKWd9ZtiE9dB^6FFe&tQE4D<IhM z6eKebDbV>2c}Ov3bJvW?5%7?5X9|J;6|tfo9#WX66ykasI>sdQZ+&62DHRxS7}_G1 zBj6rpbR^6(c690+W$tdwnG9C|bJc?DHC#$Oze}2~&LA^BVm;a}WKtvMtZZe^K=H~s zjoXDh^v-}Qy~^+TrVEyLE90Q^GrN+wq{sDGQ^X~7DDii=BN~6NcQC#s(?W{YX4YpS z*FXo>zL@DyCG#Sz{rf&-dj=Lco{<xlV8OVb7Da7w&p@7e`cAAVBXM2mxLZg_ecK&N z?-nL1-*!)g4{xFdCJ3yNXc6rTdO4W?PG;qdn2#OI3ykHOOyT!r9S=)<jEHVaTt_+- z%_XqN_j}%C?FfCBemECVs7mnmL`QDO>&9Js)Z=G-geqHhj<|j+yag+Ncs+Uok<gwH z`bB(}6BeY(26K)}6fGW#7Ck-KuzG?cQ9}pM$cg5_&>29VM1|fZqETt`>V2lDvl_4b z7S}_)itBlW;?u+Z1w5iPpA~;9KJD$74MkHW{52)RyQugqJQtOVa0#$}B#?Q)EADN| zP?fDXS7?GSU6%+}j!Mx!<QEGx#oI3dZ{u^jEK@yAdRFR6l)Oa5UdeDy;jMmHYH{!e zB}p?Qiqu)v$3Da*62WEeE_@%c;7}G2rDN37)5XqaQ#*XhK1gS>Rva{W9Em9o*u^-| z3Kz71;XPvsPI*K@s4X7#c)Ac150}47lx@SW&?Wm+JX6-~K@_K3@PWc+8L>UO&O$SR z=Fcw_WwBg0x@6tr2M|F4HX7IQ?CUBtNm-9%kvu`P<l5pf>J@%4j3&&q%iLi&hO<|E zFoO1qvSTi60tP+$P=s?5qS-E(gt1Ebs9nqN<ClRqdb8Ki8Hq@PN&I|4{KT7XIz4?* zB2IwstH1Y(XD0Epkt)jm?m{0t?hQDWnpx=`h<s@1T-^@%JcRhX&SgbX_=uwUv2`R1 z7M{tq#fi8WhOG$s&aLSxl!;sm^ShHb%7`l;9>enU6JbBBf)}6|aQ`6n7{ca`t}TB4 z#kI9Bu6=sdisyd3wpu+)ec!$J=HEwNTJhZS=hxh`cFl^HpI<X|*_w5=YoEVoS#=fu ze|q_vr9Ymwj4WGQH}#=4D_&T!V)@g{o`3PVwJX-Br>Jw)njfhR<c_RQ|9Hi7E7nx4 zT|rjV)mA;XT%Dgcb?LgbE7Z@9J?Gvx_Dqt$$PnokZ=>0d-6B&Di)q@?Lv+cNztCXf zYA)fzdh(CI%%YbMZ6=FXuH>4Vo9XADe@^oA^C`PuxpF1D7qK+lhu+gLu=)S~J=phq zI`Hlr^knN(+}0B!@{3a&$<M!ehvXICP5a*cocz8nKwe3Eoj&HabMk+@MPKgA=F$?* zlSeHgV(7g=e!9*m%Kc^^9sS8C^v5aI+uu7__n2tYnscP{xe20Z#WN(Un-bgAb@b${ z{UY1yKhe?O{f#>sRdTzTZTq9Sv!DKwzLxlFvcBeCQmO1DZ~xUtU!QH^YF2zr)BIx6 zq<oKjdu}+j=G9X5ik@}%wEXnL`x9<|aqLD#i0z)OrbhGqtN-llKKAD2V*^i|TJ(TB z*8SL_4G%Yc@l@(Nwj&W2=o1^`KHQv}{_)S13)epR;hJFkmzKAsSN5)T@BQebn!SJj zW$}mK{o%EbVm?2hOn*LSVCs=gYs;=2Zd-DxVdSMp=RIWm$sclC&fG0(`>*wnb=`<` z{-L<>?Jwpn`=j*7Sy>626~DiGh9+g2|0g+f;-hBFU+{ur#Yx38FHQUORQ=|hHBASu zcD+%)GP$L8TluMj^H%-e_O1jxsv=ug?*Tgy5FrSXiyBN2LWi&^0n$l2i-vUUbU<+F zbUHUlOQ$>ZLJ|;2fI*fhip~ruj0iY_j5>lc%m^4n7Bw31b6+5U3lA4o6-Y4eKXva- zn$_{W`QDpvJ`4U--KtYn=bm$_Zq=#V-Me}oUcC24{n8J9H?-5KiWT=ob>FtSXM|^X zpPb69n_k}h*C88>y>Geg*^hFqZ!Wv*q%WcD`&o;EKG)M#-KuuaiBRvVJKMVT;cq;7 ztAAQ`X6uQn$va6B_(aHuB!{=fqc@N&28|s1Ey-i^r}Jw`CL><XI!SWrxktB=Wb=fz z=L;mC=-Tp6NJgn@%_@@9R$qmMWL3BRi(Hb|!IxU!Cz<)?Pdh<!d+`t5N0RJ@cHI?A z@_VeGyOCu0?rq2aL~=Y7YaKzdeEI#lg(OdL*<UJ2rXlss6G*PJzxcD4WcyyTc?-$+ z<@_$QNyh8;mwZohjvD;ZK$7*CzRgQW-d}V&x|L-9+M+e1Nba%EbbOR#@0+D*BKcQ% zJ9Q)-v<!MTgY?kvjed8NF23vk`b5&l{tdrhPCD7=dSM~yWzG7^WYW!7&wrOm`WZQN zRyWd7vF3OV=}Bcu-AuZA<d3KKkiJY??RwH#wC(5zq_?QGVgc!{zc6_`>2K5CR|b;~ zckg+36X`L3o%s&Z<<f5++E4mill8;_(y43W8#_p^Z!It%BHacKxhhG&t2V9wfOOol z{^&iV=fXif(n#0-b;q6}eSdpP@wKG$xIV5MNbmo(W!65@{WaA)*OUHl&i5Z88(8M- zcjTSXH@#_it-kNBO>_75`KIaZ52k-|q-wAC`<d41Km5bj!~bmQG5w#H>|VKJx~t>! zk!QAQmyGGsE3^02L$8|LYtD4-4L?+V8u#dpyHcjDdvoySt#4e@aqFLwb0VXby<U1< z+Q!t;Z*6^VM^674V#~7lnG?P}`@ya2d~Z2=+?jb>UC(q+=~o@@``z=UulP@TlW+aO z`t(d&r#tG(bWg1Ncy>(Bx0~*Ycw_TPq8a(jn{$Zn=F^Y;Oti;`UFRVBy|cc0j_SmC zM&C^JCT%e{Q{C#mGp?rkc0N4|<M?DPWQopV(a&53?%q8XEIJcqcqVf}^Y8EdY3Kmg z*Xze?mgM}ju;0OJ$Fc7pUHzl)!S0)SzVgI3Pqw_>@>#d8hi86&-{747OP^}`YH}6^ z&W97KM{d4)W$oj$?w|79#^yDvAOD`s%s#Pa>A<C%VxJp8B=NVXjbDyX8}*2zx^!g` zh7S6Ux~sHCO{BV$3g0xy)J(&)OveoPx~E8d8&6LxX%m^5Iaw{+2B%Lgwtp&(N~^*b zwBVT*rHWPwDw8TjRfy(Mu2yR_TCGl}*BcBG5gj^o?0D5xMq^|oliSs!<p{Lh5i8V4 zxK+Ebt62|xS#k`VZ#U!3_>nA)<uexxu-R-C+s+O#`jJf~s1Vc$8U!tZ4uQ%ZPR4mL z@C2|D_zSQRcnxR(-UU7Z4g%i*r+~8n8wFVaoq%XS0Qv(%fYCq}U<2+3N`MMr3NRg* z11tm<1IvK5zy@FounX7=d<uLC90kq*tw4v-_<b+nIv^fM0!9Iuz#YI{fC%`2YG5|7 z2v`cN0-gh22DSh@fCk`Q;3MDw@C~qHB;L0MHUOJ}9Y7=SKF|al0geOBfEIFy1iAw; zKpc<=+zO-tIlwr;0h9rgfvG?ZFdxtvpwkFP^o}NIo#}!z4NQygaWxD%m7W4KV7mK@ zj&0&Zb4Eq)6jTPS%CJ=zL6y`|a}$_U6q|dSpr)c{R~vK@O!r;CoM?eJc*+%BBem@6 z!FYqGT!-6Qp2LflC!z}Py>|@L>UB(SO;3|@>ZleK)fKH|yy@BcoIlj_tOfJd)bJMT zh(#hgJ#SHs)}U7zhGeCiIIBP7k{Mp>dwsoLZD59yLWc3dc+pvn29z6XVCzhO`zgG_ z#qZ^YH3v`E!1|fNeA~*EYt7Of1`7}GXi{l#hfNv-n(Ci54>2>$TfBmLHpJdz<9zD- zj!tE2jh3nJ)T(q$3xA7NrNYOTwV;WWdI*-@y`vtrRfdGcS-j6+>h(7?$*IB}^*q%x zKW2_Z-;x|9=LMaI<<#l)^i(F*C{pr*MaOp3t90mho?4Gtz+9-&X_>zN^;(S%-%pCg zKCb4iQF>%G7~;$@U0*(N!-~;zW3HH;Qm4?;u6l{o8DWu9(50N$(sy@S6E8(dVZ=EC zMnpoXbDfqg<!62!k*eH4-P#4W2|RBO-V|)&VxDcdZi1<>MyeT@Aom}1Ma#E($`zyZ z;JWsW6`T%vay!AoCYkOGx{+IHt6S%aULz?JX0vqgT}<l5Zpjejlu`!*O_Nl6B6|c^ z*CRJ(aTR~DxJswNU0uIY2aU4RYBhBEFt@h~M-Qn-j15SJo3IlGOF~$<<@45=j7>GG zjWdC{z=OaNU^Va(@G7tacnA0pH~<_0jsrgd=Ky^wezP687KjB*z(^nixC6KwC<XjL zHBbx82k`s4#wEZi;IF_dz)oN<@EPzmZ~{07M5L*Woq=nCSil4%1DSvgxCbZ$0>BJl zKJXauB(M(H2y6oyfcJrYz}LVr;76bZ(52&<1>B#aHa-A63_K3323`O*0<QsY1MdU- zfx`d}hmFmE4zlP3^Z*1P9vBQH0~Wvv+zAu`ZXf{QA;t{G;U^o1*Xwl#rkghASQXdJ z$k96!`MB53Ox_>a#Obzo-q4s_uQupZhQ=1W$AX${yD@nmlS(5upY&kRqV&`9CDI)C z!oA6byxr#HlMPY_$tUp%Q}ooF{PT9kQ|Q2G;)RVfOfnmW*{5mV(wBa;v$s@4^@zj9 z<b5XI_^w6wZj`9sKGdgyx75g4C8`!zbc=K!J?EO5ILob4#(}z|UNr`Mn#fSOiO+OW zVFNedeLouX5lmlxZiDYTX;4HpryZC%hZzl#%uw;*l1~lZ$QPf8lH@Thxew%~*5Hm? zv<8FPFsxyx2?=J{nKZ1PcON_B=zBH9x8Bs)VA5cgQTv!Q?Wt8dm8zaUNs>xD^<0M2 zMztOtj``W3G7N7{GD&%+or#O&V$(aFhu84j-anpffv~8v*3Pq)+-b?98)br)#5$Le zNi8JrQ*x&z?+2|~hjCh8ufcOfSBU<w#?TJ~>(V61FLw@8y4-2f;7JxX4a#kvY)zI( zpvlHDHFB<LyWBrCuH?2Flec%4Xerso)o`*px`W2#R>iPdTX>Gqv|YKUM&Ah770=yH z+4X!%+_mV{b5+NsUK>ZZ?w5I)hF;qlXm0DOxwS-U0&F!a!cOj^^wB~sGntpR78;XJ zzI}+v-QBxo>ZdZr@VaSoca6jAlzJrZ&QK@JprxVV7}sk<i3|3CneJp#(lNajcbfR^ z0Vd6n8a0*>(wL|ke)4|l{xHBGNj?yhld5>$oW@%kTUuj_6Zn4?2s-^ix3^Sqdxh9y zA;9d`?2IZ_g?A82J?@~ZES_cO+AX$RbB<uK*{n7umKTY|gNl5<pvOl`@j>NIw-=t0 z5|1-b=I{k89DXd(<1%v0`B@IDJ<pMvV@<o=G0u{kZnZhGEar5J%|TfM1k(V)<8w_K z0KfeC#QE71E%B`N7Xr(0`^zhxeo=4-1eee64^;%kVn*FNB-f6kjPDlW;#@v&ASi^~ z-rxvFQ0O0@k!>40-fXit^6h4ueSpw!N?EZ#9u6JRHR=4ij!9y5AWkkX@H#`mGN0c) zRV)^yF5uv)4qUP#-I`JntqY?@2{Iq<a%ZV1^9E+(0%*?>jE_5?EBKj+s{{akt9W6I z5D;BKe@GN=rBsR26A;;WzYoeQQ3O%$D;7O6H&QP=Cob&n!aH{a+@(}DK<a4<E*<6J z7hdI}B2=V^M`{2P4T|1iK&qZS)|_ckluOz>pLqzl?cN}Db3Ds;27Q4tcaF0NCTFuu zgkhO36XbFso1AYYPM63+fg(qxSVWPtxHzt#oOXLleDQ3&yFwIPPOnS!cwi01;M3u& z2)fHj$nXO?xCr|Taf;9!73AOZ21!8|<~fR-u1TSac-gvPYfcB;d;!r>6!J`p%ePx? zbmMeS`2&RWE*)vsf?SwZZb42?{1w<BLAt#m7=X{AbWf~YD!+{#x^=hL9dtN79!3N3 zvKC0g!Q;3uR9+F@0qp@hsqtG4wb(4GQZ6y5#XtZ?8o<C-tPUdMMqH4e>c}&v-EOfv zq;YET`+a_ah8;~LC4OJI0Gb5B?ynY#-6bWWpQMW{sHMmwCNN4$lZoVdO>p~Q5GA6J z#Oz6_i5D6*4G)&>o#OPkiv?F%$U8|mFH0VX(pYaJJTDg&O1;it$lu;jo2)OW*OuR2 zC8KS4xdY`+Oo}Ym7ZjXr)*^%|O8uA%mF$qmGZ0pW8HbORuz3oz5HuEMo^4GBeLkVc zUE0RJbf0CIQ&}8OW2{aUg;;s6lqOX^(qJp5c%eVd31r$An`#A3@lH?N`D1W^AQ`f+ zq$D5)F+#~*9gwWMSTXpJmu4|XrQaPC<CIK33V4>I*co(Q)UH&dv>Wid1_)Byuy9_c zG<06uX}*xBSnxuyoG*btPgsE${&U<I=G$_~B*}Dt3;)Ry2=ib4C*S68_x7)mK!xAu z!qng>50pBT>9nAN7N^X?R|+(FIZ8YsOr`A^_-qe@Qx!qi6<%3*ay#@;Md3|MZha;z z_W8g~0MV#rP+A8%6}-G1;Ap)OzO6{aafrJh9)S3oC{<J<n&}C;B>0145s!u6HXgBq zyu&E3MfuR~c;Ab4XW6)Z0@np7Uk<tnT~z|!hGzG4Ri$h~>_l9TSVZ{_@b@C(ovJSE zW$^uxO3VI^`k$**YzN}~h$$3;@7{S5?{wV_-sD6|AZWX4(<v5Eo)ShwHKp31QL~f? zwKj$5(m_)eMyG}}NFEgM1~~r0KaG3oh*vo%ctE>Err$C}WyEJ5+vur$8Ok<=wMTj3 zVKd4;x=gtwdx_1@h~^Hp@n%^^;rxfwX+aZr89JOP4D^)@3}7ANEN5;Xo;_I0uqjSI zwhDr83KpCmUnO(Pi;qgTAM3R03X$QNN{bq)qCgMt0QLnzR>{}nL?>`Mr6xTn`4b#% z1;tXFB2yiY(_bnw{%~yX%<B`%u}JW_gg~gGf*R#d{&sqFN(-%vxC;eKMzpb7;ui5Z zEfxbVzZ=KeeiYCa36D}NTdMFlmCwSZ&iQ&u;Z>^2*?0Q=&g%A_N}O)2slhrH8$mQ) z;tY9$*!_TAS||%rIh!i_eL~P#+Qy7ng}p++?eog=;Wt!*MWe(DKUhZ^9J6wFAV7EL z7bk}x#bP;I7IX=gRxA)I!dT~PKr9EH-cl^{+iyb<t6Vs(M;@^;P`*t`W{e-;m%FhP zM9Xqs8~2j#rCTm{R!JSSwFVPa+obWKwqc&&*LsSyaz0`{q2Twy`1mlYZ8*kZ_{}is z8u`2&bd=3-%_kRJ^Y#$KQ_fhFT#lHxgP6+ma<Iv;2;;Kzv+W(FJySxqb&xIJn$BVa zw_^LwoPmJohl079SX_R7Jd4Z9z@M>W@h6p1`BwZX;3@i(jlEc08t9auf-7Bbi0FW8 z&u3~j%!^6x6l1;q##o0@tY%IhmUnwMyvK*P_?i+J!w<f(6-aNw`%~BI8U4QOJcF98 zn5)9JZDPK>v5=PeWlqnaK(IV%aA@ctELQzuP}*G}A@Fr!_|jEcL{1Jliz|J8?D6s~ zX*TRQXs0zmkk*#iW5&6$@J$>RKR}41&3)2fzPs;7qwOxG?4Ed*A=#}T1CPI@K?atZ zb$fV!e9;-#54mz5(!LE_LoCUqRXfrcd9)U#JrTHeV9ZxyAI6K}_E3r)7<8iORj7)} zCZVwX1rhE*xmYBAyf)%1cVGkWtfqYzy@A3vd04w+>5r`}WwbS8hD*kpDU46g9Lx%G zZ_l-k&xNZdufU!tMT6NmYmObeQ)ah}&9m6d_5z!Q<-mf{$os-<_B6pd&SJ~Rv5sf? z<I@FmTAC$4pS8D}$i`Z8tpeZ2T5K%MHX+Y$l{aqL=r@cssohItH&btzqLpWfWLfl# z+@ly7kEvXFjwm$Ic$S0*6%#JXiDrkxNvNNw6v-=fu~4x9fG8!u4o!v*=qRpOoC3j? z_y&$HcX~r`DbU8S&HZx;GAuEQL$09W0l5SP#vRn;@P?q=E44(kKX+oplXWPr2yBSc z9oE}v+s~8P*xJYSqs0rciYczxBf`XaS$f-)9<bv{lrEOQg(TC$?)YRM7(nef^0Fp4 zveV<Q*p*EzbqByx8r*mAb6vVmUU)%oE~<dGsRp?s7<-L08o^#}P#LcQoV!(gdLw1U z?ot`&154j(&pW<TWmG^kDwKbWyf1-7&|L$Zc~fQl9M}eo#kE$`LEBZMlJpF>0p=5I zZWr_FI#|LyqzpiRmd->rg}HGuF0yRqWkJM#R)TYR%E@E}$W6zoIp$Sh8ghpLNo+V9 z0-9m?KH|anH-ZgCY6wb-kRFJVB3vaQl?cjVNDt@jIYDPaeleSl))?!m8H-c-3}y$N z3IF=S`Vp{NBN_3a8lRmDB`KFmd^tmQ4|c(jvj?XMmCgX)CUf^|u>jkw5dEI&1O^hW z3H*Ur-~eMRH7CIzxWa=YAt8Z@UrRb6&U&6u8GD7{I;3NOaGJijHd7w(9H7uR2b!xD zFAaH-<rPLkn@fXdO5T<Prq)J8jkV+!SgPE?a?u;=SX3=2GWg|~c*V&e-iyHF73c)u zDfEkho}*NUXfK5;H9#}drRs#|U8+9yNj!$rT`qlLeX6V6+vVzn=ZDw-wRNeT@bJ&_ ze5wBb8CiwbQ_|Ew@vU6{+L-EJNx#3;9@*6|(OjvVZ1PIwzf|_W;hoz4pXe-{r(a`h z;r0GiY1{(d!%typ)?7QLM~mW&J%61*R8qJwU%75=#m|%?fQs*kvvYCKlanK4j91Pf zu&lA!3i9lhbWBT`M!a2hJ&3RF*6pz#+F6TY%&U{<oxCIO=Nsm9cxue7g57C5`rfzV zh&cx|CVWN!D_<V+EjgAndj?hzK7TbGBLt<^jF|Bma~0Oqw6>aWY&GcTc5bb$d9pTU zx4Pr8nf1A|M05YA&Z?BIV?f+|EGFXg7!y;?DQ1tf6rRv*f1tDJ<IY(Jjiw(8w=kPX zM{aihE}YT_zCjCpr083OgPJ90T3ct%Fg0uL?0x;b!kMQV7p=USF+X^v=V3KsvdtNY z2O_5MJiar8_8aTvcpb`a<|T}MfHduG=zAY2K8QG8F3ZGnoj-Q5g{pK1%hIyUxtSJ- zR*=s4s(m3peE;-Lwcre1@Tex%J2E{tRM+Xw+L-8?nwYC-*s<k>c&AM6Lm?x3Y=$0Z z>Z6(rU1Ijoyz)Be@U4+N*hCzYcxh7`EEBOIo#J+hHmt+j4>c8!kRUJ9#bRnZ0_zmA z*+XA{U0TC#d^{#%%>8Tw*9T6f8Qv^rhfpwMZs)>|5u<DVo-+EvwJKwRQ*G=8LSmle zI1<;r5mO+Uh1sB*>{78!DyQ&k>Qf)YcQ@7*Z~c+hPm{UytYPn*Wd}~&@S<Rhx_bE! zG58;`cY>hTU-fyi=f}Z?lVMpOfv@4zA%e1%k#>lA9uY@b*lNo{?AR_u>MR=0sU%c# z6|z~KTZ|Poum4=Xs7ZLyY>YO{k6bN8{5~?jcJ2Yc=~1V)`=gJ1X=>Q@UwxK+zw3yD zS&G!gG1MVKn+D)bAs>KXv$PM#bZlEPZ8#H#{S@S-o9#%*XS4a(#lygGTv8-TX9C52 z<%+PijBFU4EzgG2X--J*+$*!ig|#xwX*j5xfR6Jm*f`@)s?}=GvC>hr0CN$8bObKh zg`O+lRakhsk-gs9Q;2%aRmj)~SG#Uy8KTB`r<<RhlP9Ch7YJfCCEGo3l>d=8<H`3* z%^To~Bikx$YOOz}$~uu$6BiYEP*dH)*dNh{fI>yrc;`tTCiV55(~U9FDO&bAXu`(` z(U6bfQ0eJ<P~CXCb{<t{he6kq5(rYqT5j(yBCBs~#K&&W)DFPL37>OQY}m~$7W;On z{$9+7_oMFb9$6S!V~R-sxaQp7Hb>@;emeEORr81RUbJfE?)}>zd3fr!#oO%_i9_$X zsm}sKufpYZ!`ByRS3NZTc#3)Ij%`Cu6&7sT*5|2pH%<Ow)q;jUpExxqlxg~^-`4R5 zKbRNF`N{L){I6G>{X+9Vu(#o%+I2IUJe9sG#~01{DKA<6ae}3Qw|V>yq<iR&IW-N} zTOQsP$%F_^>0#}+WA43a&BW`ESjU_wdq}@n&9YMeFl6b@xTNn6>{)W8!_>OrYo7Te z^_=Cv=4r9(*PmqzANu^<+U3thviH!o^@6sYa@+N$2+bB%(X4M@U7l2XRlfyizj+~f z&l~2xe{aaizU685KqYJP&%3tf(3)by^nJBci&pLW?A5%jZ*4jH<iTER*RJ@m;oVp7 z$kZ?DG|3zobJwSz*@v}sx$nB^oBF@-UeQl97n|^z!g9H9dN-E`jRtS(%9&x2lEo*G zi>Ht<%1b6MoN_Kn#0~D!C08oCOpV{N|Gy<bHbaV6Y$u$b^YY5(cc3+rO4s>1rizZz zu@M_1hOF(dB6H!n6;tM2vr)v_i7ME!MUI9~l8}Pm^+8t9s2<0d5Z?4}>3<UmJd5z) S#CAW+zX@BvvGIQ-f&T`E{pHgD literal 0 HcmV?d00001 diff --git a/core/embed/firmware/memory_T3B1.ld b/core/embed/firmware/memory_T3B1.ld new file mode 120000 index 0000000000..b5bfd3715e --- /dev/null +++ b/core/embed/firmware/memory_T3B1.ld @@ -0,0 +1 @@ +memory_T3T1.ld \ No newline at end of file diff --git a/core/embed/models/T3B1/boards/t3b1-unix.h b/core/embed/models/T3B1/boards/t3b1-unix.h new file mode 100644 index 0000000000..ee0871d40c --- /dev/null +++ b/core/embed/models/T3B1/boards/t3b1-unix.h @@ -0,0 +1,24 @@ +#ifndef BOARDS_T3B1_UNIX_H +#define BOARDS_T3B1_UNIX_H + +#define USE_BUTTON 1 +#define USE_SBU 1 +#define USE_OPTIGA 1 + +#define MAX_DISPLAY_RESX 128 +#define MAX_DISPLAY_RESY 64 +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 64 +#define TREZOR_FONT_BPP 1 + +#define WINDOW_WIDTH 193 +#define WINDOW_HEIGHT 339 +#define TOUCH_OFFSET_X 32 +#define TOUCH_OFFSET_Y 84 + +#define ORIENTATION_NS 1 + +#define BACKGROUND_FILE "T2B1/background_T2B1.h" +#define BACKGROUND_NAME background_T2B1_png + +#endif // BOARDS_T2B1_UNIX_H diff --git a/core/embed/models/T3B1/boards/trezor_t3b1_revB.h b/core/embed/models/T3B1/boards/trezor_t3b1_revB.h new file mode 100644 index 0000000000..e91a2952d2 --- /dev/null +++ b/core/embed/models/T3B1/boards/trezor_t3b1_revB.h @@ -0,0 +1,63 @@ +#ifndef _TREZOR_T3B1_H +#define _TREZOR_T3B1_H + +#define DISPLAY_RESX 128 +#define DISPLAY_RESY 64 + +#define VDD_3V3 1 + +#define USE_I2C 1 +#define USE_BUTTON 1 +#define USE_SBU 1 +#define USE_HASH_PROCESSOR 1 +#define USE_CONSUMPTION_MASK 1 + +#define DISPLAY_LEGACY_HEADER "displays/vg-2864ksweg01.h" + +#define BTN_LEFT_PIN GPIO_PIN_11 +#define BTN_LEFT_PORT GPIOC +#define BTN_LEFT_CLK_ENA __HAL_RCC_GPIOC_CLK_ENABLE +#define BTN_RIGHT_PIN GPIO_PIN_10 +#define BTN_RIGHT_PORT GPIOD +#define BTN_RIGHT_CLK_ENA __HAL_RCC_GPIOD_CLK_ENABLE + +#define OLED_DC_PORT GPIOC +#define OLED_DC_PIN GPIO_PIN_8 // Data/Command +#define OLED_DC_CLK_ENA __HAL_RCC_GPIOC_CLK_ENABLE +#define OLED_CS_PORT GPIOG +#define OLED_CS_PIN GPIO_PIN_5 // SPI Select +#define OLED_CS_CLK_ENA __HAL_RCC_GPIOG_CLK_ENABLE +#define OLED_RST_PORT GPIOG +#define OLED_RST_PIN GPIO_PIN_8 // Reset display +#define OLED_RST_CLK_ENA __HAL_RCC_GPIOG_CLK_ENABLE + +#define OLED_SPI SPI1 +#define OLED_SPI_AF GPIO_AF5_SPI1 +#define OLED_SPI_CLK_ENA __HAL_RCC_SPI1_CLK_ENABLE +#define OLED_SPI_SCK_PORT GPIOG +#define OLED_SPI_SCK_PIN GPIO_PIN_2 // SPI SCK +#define OLED_SPI_SCK_CLK_ENA __HAL_RCC_GPIOG_CLK_ENABLE +#define OLED_SPI_MOSI_PORT GPIOG +#define OLED_SPI_MOSI_PIN GPIO_PIN_4 // SPI MOSI +#define OLED_SPI_MOSI_CLK_ENA __HAL_RCC_GPIOG_CLK_ENABLE + +#define I2C_COUNT 1 +#define I2C_INSTANCE_0 I2C1 +#define I2C_INSTANCE_0_CLK_EN __HAL_RCC_I2C1_CLK_ENABLE +#define I2C_INSTANCE_0_CLK_DIS __HAL_RCC_I2C1_CLK_DISABLE +#define I2C_INSTANCE_0_PIN_AF GPIO_AF4_I2C1 +#define I2C_INSTANCE_0_SDA_PORT GPIOG +#define I2C_INSTANCE_0_SDA_PIN GPIO_PIN_13 +#define I2C_INSTANCE_0_SDA_CLK_EN __HAL_RCC_GPIOG_CLK_ENABLE +#define I2C_INSTANCE_0_SCL_PORT GPIOG +#define I2C_INSTANCE_0_SCL_PIN GPIO_PIN_14 +#define I2C_INSTANCE_0_SCL_CLK_EN __HAL_RCC_GPIOG_CLK_ENABLE +#define I2C_INSTANCE_0_RESET_REG &RCC->APB1RSTR1 +#define I2C_INSTANCE_0_RESET_BIT RCC_APB1RSTR1_I2C1RST + +#define OPTIGA_I2C_INSTANCE 0 +#define OPTIGA_RST_PORT GPIOE +#define OPTIGA_RST_PIN GPIO_PIN_13 +#define OPTIGA_RST_CLK_EN __HAL_RCC_GPIOE_CLK_ENABLE + +#endif //_TREZOR_T3B1_H diff --git a/core/embed/models/T3B1/model_T3B1.h b/core/embed/models/T3B1/model_T3B1.h new file mode 100644 index 0000000000..2f007c0d8a --- /dev/null +++ b/core/embed/models/T3B1/model_T3B1.h @@ -0,0 +1,50 @@ +#ifndef MODELS_MODEL_T3B1_H_ +#define MODELS_MODEL_T3B1_H_ + +#include "sizedefs.h" + +#define MODEL_NAME "Safe 3" +#define MODEL_FULL_NAME "Trezor Safe 3" +#define MODEL_INTERNAL_NAME "T3B1" +#define MODEL_INTERNAL_NAME_TOKEN T3B1 +#define MODEL_INTERNAL_NAME_QSTR MP_QSTR_T3B1 +#define MODEL_USB_MANUFACTURER "Trezor Company" +#define MODEL_USB_PRODUCT MODEL_FULL_NAME + +#define MODEL_BOARDLOADER_KEYS \ + (const uint8_t *)"\x76\xaf\x42\x6e\x61\x40\x6b\xad\x7c\x07\x7b\x40\x9c\x66\xfd\xe3\x9f\xb8\x17\x91\x93\x13\xae\x1e\x4c\x02\x53\x5c\x80\xbe\xed\x96", \ + (const uint8_t *)"\x61\x97\x51\xdc\x8d\x2d\x09\xd7\xe5\xdf\xb9\x9e\x41\xf6\x06\xde\xbd\xf4\x19\xf8\x5a\x81\x43\xe8\xe5\x39\x9e\xa6\x7a\x39\x88\xc7", \ + (const uint8_t *)"\xab\xf9\x4b\x66\x15\xa7\xdd\xe2\xa8\x71\xf7\xd6\x2c\x38\xef\xc7\xd9\xd8\xf6\x01\x0d\x88\x46\xbe\xe6\x36\xe4\xf3\xe6\x58\xa3\x8c", + +#define MODEL_BOOTLOADER_KEYS \ + (const uint8_t *)"\x33\x8b\x94\x9b\x7e\x3b\x26\x47\x0d\x4f\xe3\x69\x6f\xd6\xff\xf2\x87\x57\x26\x5d\x14\xcc\xa4\x8e\xbf\x2d\xb9\x7b\x4f\x5b\xc0\x39", \ + (const uint8_t *)"\x28\x68\x20\x27\x73\x0b\x78\x32\x01\xb0\x5a\x8c\x9d\x11\x68\x54\x47\xc1\x72\x97\xdb\x71\xb8\xa6\x0d\xc6\x93\xa4\x46\x10\x75\x1d", \ + (const uint8_t *)"\x9f\xbf\x31\xb4\xe3\x51\xa4\xcc\x81\xc7\x59\x95\xb2\x25\x7f\x0a\x71\x69\x26\x8d\xa5\xa4\x4e\x94\xb6\xa5\x59\x0d\x43\x4e\x32\xda", + +#define IMAGE_CHUNK_SIZE (128 * 1024) +#define IMAGE_HASH_SHA256 +#define BOARD_CAPABILITIES_ADDR 0x0C00FF00 + +// SHARED WITH MAKEFILE +#define FLASH_START 0x0C000000 +#define BOARDLOADER_START 0x0C004000 +#define BOOTLOADER_START 0x0C010000 +#define FIRMWARE_START 0x0C050000 +#define STORAGE_1_OFFSET 0x30000 +#define STORAGE_2_OFFSET 0x50000 +#define NORCOW_SECTOR_SIZE (8 * 8 * 1024) // 64 kB +#define BOARDLOADER_IMAGE_MAXSIZE (6 * 8 * 1024) // 48 kB +#define BOOTLOADER_IMAGE_MAXSIZE (16 * 8 * 1024) // 128 kB +#define FIRMWARE_IMAGE_MAXSIZE (208 * 8 * 1024) // 1664 kB +#define BOARDLOADER_SECTOR_START 0x2 +#define BOARDLOADER_SECTOR_END 0x7 +#define BOOTLOADER_SECTOR_START 0x8 +#define BOOTLOADER_SECTOR_END 0x17 +#define FIRMWARE_SECTOR_START 0x28 +#define FIRMWARE_SECTOR_END 0xF7 +#define STORAGE_1_SECTOR_START 0x18 +#define STORAGE_1_SECTOR_END 0x1F +#define STORAGE_2_SECTOR_START 0x20 +#define STORAGE_2_SECTOR_END 0x27 + +#endif diff --git a/core/embed/models/T3B1/model_T3B1_layout.c b/core/embed/models/T3B1/model_T3B1_layout.c new file mode 100644 index 0000000000..3baae222ed --- /dev/null +++ b/core/embed/models/T3B1/model_T3B1_layout.c @@ -0,0 +1,96 @@ +#include "flash.h" +#include "model.h" + +const flash_area_t STORAGE_AREAS[STORAGE_AREAS_COUNT] = { + { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = STORAGE_1_SECTOR_START, + .num_sectors = + STORAGE_1_SECTOR_END - STORAGE_1_SECTOR_START + 1, + }, + }, + { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = STORAGE_2_SECTOR_START, + .num_sectors = + STORAGE_2_SECTOR_END - STORAGE_2_SECTOR_START + 1, + }, + }, +}; + +const flash_area_t BOARDLOADER_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = BOARDLOADER_SECTOR_START, + .num_sectors = + BOARDLOADER_SECTOR_END - BOARDLOADER_SECTOR_START + 1, + }, +}; + +const flash_area_t BOOTLOADER_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = BOOTLOADER_SECTOR_START, + .num_sectors = BOOTLOADER_SECTOR_END - BOOTLOADER_SECTOR_START + 1, + }, +}; + +const flash_area_t FIRMWARE_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = FIRMWARE_SECTOR_START, + .num_sectors = FIRMWARE_SECTOR_END - FIRMWARE_SECTOR_START + 1, + }, +}; + +const flash_area_t SECRET_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = 0, + .num_sectors = 2, + }, +}; + +const flash_area_t BHK_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = 1, + .num_sectors = 1, + }, +}; + +const flash_area_t TRANSLATIONS_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = 248, + .num_sectors = 8, + }, +}; + +const flash_area_t WIPE_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = STORAGE_1_SECTOR_START, + .num_sectors = 232, + }, +}; + +const flash_area_t ALL_WIPE_AREA = { + .num_subareas = 1, + .subarea[0] = + { + .first_sector = BOOTLOADER_SECTOR_START, + .num_sectors = 248, + }, +}; diff --git a/core/embed/models/model.h b/core/embed/models/model.h index 69754ab5c1..fa797575b4 100644 --- a/core/embed/models/model.h +++ b/core/embed/models/model.h @@ -11,6 +11,8 @@ #include "T2B1/model_T2B1.h" #elif defined TREZOR_MODEL_T3T1 #include "T3T1/model_T3T1.h" +#elif defined TREZOR_MODEL_T3B1 +#include "T3B1/model_T3B1.h" #elif defined TREZOR_MODEL_DISC1 #include "D001/model_D001.h" #elif defined TREZOR_MODEL_DISC2 diff --git a/core/embed/trezorhal/stm32u5/button.c b/core/embed/trezorhal/stm32u5/button.c new file mode 120000 index 0000000000..9c6b0a7704 --- /dev/null +++ b/core/embed/trezorhal/stm32u5/button.c @@ -0,0 +1 @@ +../stm32f4/button.c \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/consumption_mask.c b/core/embed/trezorhal/stm32u5/consumption_mask.c new file mode 100644 index 0000000000..859b430e91 --- /dev/null +++ b/core/embed/trezorhal/stm32u5/consumption_mask.c @@ -0,0 +1,140 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include STM32_HAL_H +#include "rng.h" + +#define SAMPLES 110 +#define TIMER_PERIOD 16640 // cca 10 KHz @ 160MHz + +uint32_t pwm_data[SAMPLES] = {0}; + +static DMA_NodeTypeDef Node1; +static DMA_QListTypeDef Queue; + +void consumption_mask_randomize() { + for (int i = 0; i < SAMPLES; i++) { + pwm_data[i] = rng_get() % TIMER_PERIOD; + } +} + +void consumption_mask_init(void) { + consumption_mask_randomize(); + + __HAL_RCC_GPIOA_CLK_ENABLE(); + GPIO_InitTypeDef GPIO_InitStructure = {0}; + GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; + GPIO_InitStructure.Pull = GPIO_PULLUP; + GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStructure.Alternate = GPIO_AF1_TIM2; + GPIO_InitStructure.Pin = GPIO_PIN_5; + HAL_GPIO_Init(GPIOA, &GPIO_InitStructure); + + __HAL_RCC_TIM2_CLK_ENABLE(); + TIM_HandleTypeDef TIM2_Handle = {0}; + TIM2_Handle.State = HAL_TIM_STATE_RESET; + TIM2_Handle.Instance = TIM2; + TIM2_Handle.Init.Period = TIMER_PERIOD; + TIM2_Handle.Init.Prescaler = 0; + TIM2_Handle.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + TIM2_Handle.Init.CounterMode = TIM_COUNTERMODE_UP; + TIM2_Handle.Init.RepetitionCounter = 0; + HAL_TIM_PWM_Init(&TIM2_Handle); + + TIM_OC_InitTypeDef TIM_OC_InitStructure = {0}; + TIM_OC_InitStructure.Pulse = 0; + TIM_OC_InitStructure.OCMode = TIM_OCMODE_PWM1; + TIM_OC_InitStructure.OCPolarity = TIM_OCPOLARITY_LOW; + TIM_OC_InitStructure.OCFastMode = TIM_OCFAST_DISABLE; + TIM_OC_InitStructure.OCNPolarity = TIM_OCNPOLARITY_HIGH; + TIM_OC_InitStructure.OCIdleState = TIM_OCIDLESTATE_SET; + TIM_OC_InitStructure.OCNIdleState = TIM_OCNIDLESTATE_SET; + HAL_TIM_PWM_ConfigChannel(&TIM2_Handle, &TIM_OC_InitStructure, TIM_CHANNEL_1); + + __HAL_RCC_GPDMA1_CLK_ENABLE(); + DMA_HandleTypeDef dma_handle = {0}; + + /* USER CODE END GPDMA1_Init 1 */ + dma_handle.Instance = GPDMA1_Channel1; + dma_handle.InitLinkedList.Priority = DMA_HIGH_PRIORITY; + dma_handle.InitLinkedList.LinkStepMode = DMA_LSM_FULL_EXECUTION; + dma_handle.InitLinkedList.LinkAllocatedPort = DMA_LINK_ALLOCATED_PORT1; + dma_handle.InitLinkedList.TransferEventMode = DMA_TCEM_LAST_LL_ITEM_TRANSFER; + dma_handle.InitLinkedList.LinkedListMode = DMA_LINKEDLIST_CIRCULAR; + HAL_DMAEx_List_Init(&dma_handle); + + HAL_DMA_ConfigChannelAttributes(&dma_handle, DMA_CHANNEL_SEC | + DMA_CHANNEL_SRC_SEC | + DMA_CHANNEL_DEST_SEC); + + /* DMA node configuration declaration */ + DMA_NodeConfTypeDef pNodeConfig = {0}; + + /* Set node configuration ################################################*/ + pNodeConfig.NodeType = DMA_GPDMA_LINEAR_NODE; + pNodeConfig.Init.Request = GPDMA1_REQUEST_TIM2_UP; + pNodeConfig.Init.BlkHWRequest = DMA_BREQ_SINGLE_BURST; + pNodeConfig.Init.Direction = DMA_MEMORY_TO_PERIPH; + pNodeConfig.Init.SrcInc = DMA_SINC_INCREMENTED; + pNodeConfig.Init.DestInc = DMA_DINC_FIXED; + pNodeConfig.Init.SrcDataWidth = DMA_SRC_DATAWIDTH_WORD; + pNodeConfig.Init.DestDataWidth = DMA_DEST_DATAWIDTH_WORD; + pNodeConfig.Init.SrcBurstLength = 1; + pNodeConfig.Init.DestBurstLength = 1; + pNodeConfig.Init.TransferAllocatedPort = + DMA_SRC_ALLOCATED_PORT0 | DMA_DEST_ALLOCATED_PORT0; + pNodeConfig.Init.TransferEventMode = DMA_TCEM_BLOCK_TRANSFER; + pNodeConfig.RepeatBlockConfig.RepeatCount = 1; + pNodeConfig.RepeatBlockConfig.SrcAddrOffset = 0; + pNodeConfig.RepeatBlockConfig.DestAddrOffset = 0; + pNodeConfig.RepeatBlockConfig.BlkSrcAddrOffset = 0; + pNodeConfig.RepeatBlockConfig.BlkDestAddrOffset = 0; + pNodeConfig.TriggerConfig.TriggerPolarity = DMA_TRIG_POLARITY_MASKED; + pNodeConfig.DataHandlingConfig.DataExchange = DMA_EXCHANGE_NONE; + pNodeConfig.DataHandlingConfig.DataAlignment = DMA_DATA_RIGHTALIGN_ZEROPADDED; + pNodeConfig.SrcAddress = (uint32_t)pwm_data; + pNodeConfig.DstAddress = (uint32_t)&TIM2->CCR1; + pNodeConfig.DataSize = SAMPLES * sizeof(uint32_t); + pNodeConfig.DestSecure = DMA_CHANNEL_DEST_SEC; + pNodeConfig.SrcSecure = DMA_CHANNEL_SRC_SEC; + + /* Build Node1 Node */ + HAL_DMAEx_List_BuildNode(&pNodeConfig, &Node1); + + /* Insert Node1 to Queue */ + HAL_DMAEx_List_InsertNode_Tail(&Queue, &Node1); + + HAL_DMAEx_List_SetCircularModeConfig(&Queue, &Node1); + HAL_DMAEx_List_SetCircularMode(&Queue); + + /* Link created queue to DMA channel #######################################*/ + HAL_DMAEx_List_LinkQ(&dma_handle, &Queue); + + TIM2->CR2 |= TIM_CR2_CCPC; // preloading CCR register + TIM2->CR2 |= TIM_CR2_CCUS; // preload when TRGI + TIM2->DIER |= TIM_DMA_UPDATE; // allow DMA request from update event + TIM2->CCR1 = 0; + + HAL_Delay(1); + + HAL_TIM_Base_Start(&TIM2_Handle); + HAL_TIM_PWM_Start(&TIM2_Handle, TIM_CHANNEL_1); + + HAL_DMAEx_List_Start(&dma_handle); +} diff --git a/core/embed/trezorhal/stm32u5/displays/vg-2864ksweg01.c b/core/embed/trezorhal/stm32u5/displays/vg-2864ksweg01.c new file mode 120000 index 0000000000..4a0a88bfeb --- /dev/null +++ b/core/embed/trezorhal/stm32u5/displays/vg-2864ksweg01.c @@ -0,0 +1 @@ +../../stm32f4/displays/vg-2864ksweg01.c \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/displays/vg-2864ksweg01.h b/core/embed/trezorhal/stm32u5/displays/vg-2864ksweg01.h new file mode 120000 index 0000000000..f57ce0f36c --- /dev/null +++ b/core/embed/trezorhal/stm32u5/displays/vg-2864ksweg01.h @@ -0,0 +1 @@ +../../stm32f4/displays/vg-2864ksweg01.h \ No newline at end of file diff --git a/core/embed/trezorhal/stm32u5/platform.c b/core/embed/trezorhal/stm32u5/platform.c index f0127dc458..fd31a29e2b 100644 --- a/core/embed/trezorhal/stm32u5/platform.c +++ b/core/embed/trezorhal/stm32u5/platform.c @@ -176,6 +176,9 @@ void SystemInit(void) { ; #endif + // enable power supply for GPIOG 2 to 15 + PWR->SVMCR |= PWR_SVMCR_IO2SV; + __HAL_RCC_PWR_CLK_DISABLE(); // this will be overriden by static initialization diff --git a/core/embed/trezorhal/stm32u5/stm32u5xx_hal_conf.h b/core/embed/trezorhal/stm32u5/stm32u5xx_hal_conf.h index 97c580fbb1..203b2245c2 100644 --- a/core/embed/trezorhal/stm32u5/stm32u5xx_hal_conf.h +++ b/core/embed/trezorhal/stm32u5/stm32u5xx_hal_conf.h @@ -80,7 +80,7 @@ extern "C" { /*#define HAL_MMC_MODULE_ENABLED */ /*#define HAL_SMARTCARD_MODULE_ENABLED */ /*#define HAL_SMBUS_MODULE_ENABLED */ -/*#define HAL_SPI_MODULE_ENABLED */ +#define HAL_SPI_MODULE_ENABLED #define HAL_SRAM_MODULE_ENABLED #define HAL_TIM_MODULE_ENABLED /*#define HAL_TSC_MODULE_ENABLED */ diff --git a/core/embed/trezorhal/unix/flash.c b/core/embed/trezorhal/unix/flash.c index afee940183..6c3c9e48b0 100644 --- a/core/embed/trezorhal/unix/flash.c +++ b/core/embed/trezorhal/unix/flash.c @@ -39,7 +39,7 @@ #define FLASH_SECTOR_COUNT 24 #elif defined TREZOR_MODEL_1 #define FLASH_SECTOR_COUNT 12 -#elif defined TREZOR_MODEL_T3T1 +#elif defined TREZOR_MODEL_T3T1 || defined TREZOR_MODEL_T3B1 #define FLASH_SECTOR_COUNT 256 #else #error Unknown MCU @@ -86,7 +86,7 @@ static uint32_t FLASH_SECTOR_TABLE[FLASH_SECTOR_COUNT + 1] = { [10] = 0x080C0000, // - 0x080DFFFF | 128 KiB [11] = 0x080E0000, // - 0x080FFFFF | 128 KiB [12] = 0x08100000, // last element - not a valid sector -#elif defined TREZOR_MODEL_T3T1 +#elif defined TREZOR_MODEL_T3T1 || defined TREZOR_MODEL_T3B1 [0] = 0x08000000, // - 0x08001FFF | 8 KiB // rest is initialized in flash_init #else @@ -105,7 +105,7 @@ static void flash_exit(void) { void flash_init(void) { if (FLASH_BUFFER) return; -#if defined TREZOR_MODEL_T3T1 +#if defined TREZOR_MODEL_T3T1 || defined TREZOR_MODEL_T3B1 for (size_t i = 0; i < FLASH_SECTOR_COUNT; i++) { FLASH_SECTOR_TABLE[i + 1] = FLASH_SECTOR_TABLE[i] + 0x2000; // 8KiB size sectors diff --git a/core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.json b/core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.json new file mode 100644 index 0000000000..7ded76ed4e --- /dev/null +++ b/core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.json @@ -0,0 +1,20 @@ +{ + "header_len": 512, + "text": "DEV ONLY, DO NOT USE!", + "hw_model": "T3B1", + "expiry": 0, + "version": [0, 0], + "sig_m": 2, + "trust": { + "allow_run_with_secret": true, + "show_vendor_string": false, + "require_user_click": false, + "red_background": false, + "delay": 0 + }, + "pubkeys": [ + "e28a8970753332bd72fef413e6b0b2ef1b4aadda7aa2c141f233712a6876b351", + "d4eec1869fb1b8a4e817516ad5a931557cb56805c3eb16e8f3a803d647df7869", + "772c8a442b7db06e166cfbc1ccbcbcde6f3eba76a4e98ef3ffc519502237d6ef" + ] +} diff --git a/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin b/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin new file mode 100644 index 0000000000000000000000000000000000000000..2af057b5d0ea84448f5780bd942b037ef9c743f3 GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=6c2uV<$rxpMl{~S7$+~vC-b5e_w>3ZP@f)+H38tsznDKKN%Nl zWt43Wyz=f~+x(3?mb?%T%(}YLFtlcC2J7M1VlO_gV7}&lzaq0-r^`jVc0-<6&hLX~ z_UyTrZ?~&#$;-aa|Bp%rD4Ab-FY4kNrr_`A6RD%%;;-Q6AEFQ%?5fDX5aRFYF2Nwd z;0km~a)N+}$e;i69tI4I9h{FEZpu66R7ynuQ|{qi(pa<S&HsRg>AWF)mmG}EP6Rg< zR3D6E-e~VMM}fc4SR&z<Y(|HTg%83<!-~bcL?ET{*8%ov`d@EoW_R80cYPprn>A)N u^A+CfwSISX8};73Zfst(g+((q%>QeTv`1lNLh$D&T4Ifc`ejld7&rk8Uw2*r literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin b/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin new file mode 100644 index 0000000000000000000000000000000000000000..21c4b380e57c064f0e134732f3f0b39a54a4c464 GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=6c2uV<$rxpMl{~S7$+~vC-b5e_w>3ZP@f)+H38tsznDKKN%Nl zWt43Wyz=f~+x(3?mb?%T%(}YLFtlcC2J7M1VlO_gV7}&lzaq0-r^`jVc0-<6&hLX~ z_UyTrZ?~&#$;-aa|Bp%rD4Ab-FY4kNrr_`A6RD%%;;-Q6AEFQ%?5fDX5aRFYF2Nwd z;0km~a)N+}$e;i69tI4I9h{FEZpu66R7ynuQ|{qi(pa<S&HsRg>AWF)mmG}EP6Rg< hR3D6E-e~VMM}fc4SR&z<Y(|HTg%83<qb%eQ000-|T0Q^( literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/generate.sh b/core/embed/vendorheader/generate.sh index 2a63dc8ef5..a2f115d8de 100755 --- a/core/embed/vendorheader/generate.sh +++ b/core/embed/vendorheader/generate.sh @@ -16,7 +16,7 @@ for arg in "$@"; do fi done -MODELS=(T2T1 T2B1 T3T1 D001 D002) +MODELS=(T2T1 T2B1 T3T1 T3B1 D001 D002) for MODEL in ${MODELS[@]}; do cd $MODEL diff --git a/core/site_scons/models/T3B1/__init__.py b/core/site_scons/models/T3B1/__init__.py new file mode 100644 index 0000000000..4231282a88 --- /dev/null +++ b/core/site_scons/models/T3B1/__init__.py @@ -0,0 +1,30 @@ +from __future__ import annotations + +from typing import Optional + +from . import emulator, trezor_t3b1_revB + + +def configure_board( + revision: Optional[int | str], + features_wanted: list[str], + env: dict, # type: ignore + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +): + # Set default revision if None + revision = revision or "B" + + # Mapping of revisions to their respective configurations + revision_map = { + "emulator": emulator, + "B": trezor_t3b1_revB, + } + + module = revision_map.get(revision) + + if module: + return module.configure(env, features_wanted, defines, sources, paths) + + raise Exception("Unknown T3B1 revision") diff --git a/core/site_scons/models/T3B1/emulator.py b/core/site_scons/models/T3B1/emulator.py new file mode 100644 index 0000000000..4d8d8d3b0c --- /dev/null +++ b/core/site_scons/models/T3B1/emulator.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +from .. import get_hw_model_as_number + + +def configure( + env: dict, + features_wanted: list[str], + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +) -> list[str]: + + features_available: list[str] = [] + board = "T3B1/boards/t3b1-unix.h" + hw_model = get_hw_model_as_number("T3B1") + hw_revision = 0 + mcu = "STM32U585xx" + + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER", "DISPLAY_MONO"] + features_available.append("xframebuffer") + features_available.append("display_mono") + + defines += [mcu] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] + defines += [f"HW_MODEL={hw_model}"] + defines += [f"HW_REVISION={hw_revision}"] + defines += [f"MCU_TYPE={mcu}"] + defines += ["FLASH_BIT_ACCESS=1"] + defines += ["FLASH_BLOCK_WORDS=1"] + + if "sbu" in features_wanted: + sources += ["embed/trezorhal/unix/sbu.c"] + + if "optiga_hal" in features_wanted: + sources += ["embed/trezorhal/unix/optiga_hal.c"] + + if "optiga" in features_wanted: + sources += ["embed/trezorhal/unix/optiga.c"] + features_available.append("optiga") + + if "input" in features_wanted: + sources += ["embed/trezorhal/unix/button.c"] + features_available.append("button") + + sources += ["embed/models/T3B1/model_T3B1_layout.c"] + + return features_available diff --git a/core/site_scons/models/T3B1/trezor_t3b1_revB.py b/core/site_scons/models/T3B1/trezor_t3b1_revB.py new file mode 100644 index 0000000000..9682dd3576 --- /dev/null +++ b/core/site_scons/models/T3B1/trezor_t3b1_revB.py @@ -0,0 +1,85 @@ +from __future__ import annotations + +from .. import get_hw_model_as_number +from ..stm32u5_common import stm32u5_common_files + + +def configure( + env: dict, + features_wanted: list[str], + defines: list[str | tuple[str, str]], + sources: list[str], + paths: list[str], +) -> list[str]: + features_available: list[str] = [] + board = "T3B1/boards/trezor_t3b1_revB.h" + display = "vg-2864ksweg01.c" + hw_model = get_hw_model_as_number("T3B1") + hw_revision = "B" + + mcu = "STM32U585xx" + linker_script = "stm32u58" + + stm32u5_common_files(env, defines, sources, paths) + + env.get("ENV")[ + "CPU_ASFLAGS" + ] = "-mthumb -mcpu=cortex-m33 -mfloat-abi=hard -mfpu=fpv5-sp-d16 " + env.get("ENV")[ + "CPU_CCFLAGS" + ] = "-mthumb -mcpu=cortex-m33 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -mtune=cortex-m33 -mcmse " + env.get("ENV")["RUST_TARGET"] = "thumbv8m.main-none-eabihf" + + defines += [mcu] + defines += [f'TREZOR_BOARD=\\"{board}\\"'] + defines += [f"HW_MODEL={hw_model}"] + defines += [f"HW_REVISION={ord(hw_revision)}"] + sources += [ + "embed/models/T3B1/model_T3B1_layout.c", + ] + sources += [f"embed/trezorhal/stm32u5/displays/{display}"] + + if "input" in features_wanted: + sources += ["embed/trezorhal/stm32u5/button.c"] + features_available.append("button") + + if "sbu" in features_wanted: + sources += ["embed/trezorhal/stm32u5/sbu.c"] + features_available.append("sbu") + + if "usb" in features_wanted: + sources += [ + "embed/trezorhal/stm32u5/usb/usb_class_hid.c", + "embed/trezorhal/stm32u5/usb/usb_class_vcp.c", + "embed/trezorhal/stm32u5/usb/usb_class_webusb.c", + "embed/trezorhal/stm32u5/usb/usb.c", + "embed/trezorhal/stm32u5/usb/usbd_conf.c", + "embed/trezorhal/stm32u5/usb/usbd_core.c", + "embed/trezorhal/stm32u5/usb/usbd_ctlreq.c", + "embed/trezorhal/stm32u5/usb/usbd_ioreq.c", + "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_ll_usb.c", + ] + features_available.append("usb") + + if "optiga" in features_wanted: + defines += ["USE_OPTIGA=1"] + sources += ["embed/trezorhal/stm32u5/i2c.c"] + sources += ["embed/trezorhal/stm32u5/optiga_hal.c"] + sources += ["embed/trezorhal/optiga/optiga.c"] + sources += ["embed/trezorhal/optiga/optiga_commands.c"] + sources += ["embed/trezorhal/optiga/optiga_transport.c"] + sources += ["vendor/trezor-crypto/hash_to_curve.c"] + features_available.append("optiga") + + if "consumption_mask" in features_wanted: + sources += ["embed/trezorhal/stm32u5/consumption_mask.c"] + sources += ["vendor/stm32u5xx_hal_driver/Src/stm32u5xx_hal_tim.c"] + + env.get("ENV")["TREZOR_BOARD"] = board + env.get("ENV")["MCU_TYPE"] = mcu + env.get("ENV")["LINKER_SCRIPT"] = linker_script + + defs = env.get("CPPDEFINES_IMPLICIT") + defs += ["__ARM_FEATURE_CMSE=3"] + + return features_available diff --git a/core/site_scons/models/__init__.py b/core/site_scons/models/__init__.py index 1703168f67..f290cfffbb 100644 --- a/core/site_scons/models/__init__.py +++ b/core/site_scons/models/__init__.py @@ -32,9 +32,11 @@ def get_model_identifier(model: str) -> str: return "T2B1" elif model == "T3T1": return "T3T1" + elif model == "T3B1": + return "T3B1" elif model == "DISC1": return "D001" elif model == "DISC2": return "D002" else: - raise Exception("Unknown model") + return model diff --git a/python/.changelog.d/3728.added b/python/.changelog.d/3728.added new file mode 100644 index 0000000000..5f87842afa --- /dev/null +++ b/python/.changelog.d/3728.added @@ -0,0 +1 @@ +Added support for T3B1 diff --git a/python/src/trezorlib/firmware/models.py b/python/src/trezorlib/firmware/models.py index 1bc8a900e4..ecab10536a 100644 --- a/python/src/trezorlib/firmware/models.py +++ b/python/src/trezorlib/firmware/models.py @@ -31,6 +31,7 @@ class Model(Enum): T1B1 = b"T1B1" T2T1 = b"T2T1" T3T1 = b"T3T1" + T3B1 = b"T3B1" T2B1 = b"T2B1" D001 = b"D001" D002 = b"D002" @@ -246,6 +247,30 @@ class ModelKeys: firmware_sigs_needed=-1, ) +T3B1 = ModelKeys( + production=False, + boardloader_keys=[ + bytes.fromhex(key) + for key in ( + "db995fe25169d141cab9bbba92baa01f9f2e1ece7df4cb2ac05190f37fcc1f9d", + "2152f8d19b791d24453242e15f2eab6cb7cffa7b6a5ed30097960e069881db12", + "22fc297792f0b6ffc0bfcfdb7edb0c0aa14e025a365ec0e342e86e3829cb74b6", + ) + ], + boardloader_sigs_needed=2, + bootloader_keys=[ + bytes.fromhex(key) + for key in ( + "d759793bbc13a2819a827c76adb6fba8a49aee007f49f2d0992d99b825ad2c48", + "6355691c178a8ff91007a7478afb955ef7352c63e7b25703984cf78b26e21a56", + "ee93a4f66f8d16b819bb9beb9ffccdfcdc1412e87fee6a324c2a99a1e0e67148", + ) + ], + bootloader_sigs_needed=2, + firmware_keys=(), + firmware_sigs_needed=-1, +) + LEGACY_HASH_PARAMS = FirmwareHashParameters( hash_function=hashlib.sha256, chunk_size=1024 * 64, @@ -264,6 +289,12 @@ class ModelKeys: padding_byte=None, ) +T3B1_HASH_PARAMS = FirmwareHashParameters( + hash_function=hashlib.sha256, + chunk_size=1024 * 128, + padding_byte=None, +) + D002_HASH_PARAMS = FirmwareHashParameters( hash_function=hashlib.sha256, chunk_size=1024 * 256, @@ -275,6 +306,7 @@ class ModelKeys: Model.T2T1: T2T1, Model.T2B1: T2B1, Model.T3T1: T3T1, + Model.T3B1: T3B1, Model.D001: TREZOR_CORE_DEV, Model.D002: TREZOR_CORE_DEV, } @@ -284,6 +316,7 @@ class ModelKeys: Model.T2T1: TREZOR_CORE_DEV, Model.T2B1: TREZOR_CORE_DEV, Model.T3T1: TREZOR_CORE_DEV, + Model.T3B1: TREZOR_CORE_DEV, Model.D001: TREZOR_CORE_DEV, Model.D002: TREZOR_CORE_DEV, } @@ -293,6 +326,7 @@ class ModelKeys: Model.T2T1: T2T1_HASH_PARAMS, Model.T2B1: T2T1_HASH_PARAMS, Model.T3T1: T3T1_HASH_PARAMS, + Model.T3B1: T3B1_HASH_PARAMS, Model.D001: T2T1_HASH_PARAMS, Model.D002: D002_HASH_PARAMS, } @@ -307,6 +341,7 @@ class ModelKeys: TREZOR_T = T2T1 TREZOR_R = T2B1 TREZOR_T3T1 = T3T1 +TREZOR_T3B1 = T3B1 TREZOR_T_DEV = TREZOR_CORE_DEV TREZOR_R_DEV = TREZOR_CORE_DEV diff --git a/python/src/trezorlib/models.py b/python/src/trezorlib/models.py index 3e1f7261a0..2fde03eb2d 100644 --- a/python/src/trezorlib/models.py +++ b/python/src/trezorlib/models.py @@ -72,6 +72,15 @@ class TrezorModel: default_mapping=mapping.DEFAULT_MAPPING, ) +T3B1 = TrezorModel( + name="Safe 3", + internal_name="T3B1", + minimum_version=(2, 1, 0), + vendors=VENDORS, + usb_ids=((0x1209, 0x53C1), (0x1209, 0x53C0)), + default_mapping=mapping.DEFAULT_MAPPING, +) + DISC1 = TrezorModel( name="DISC1", internal_name="D001", @@ -100,7 +109,7 @@ class TrezorModel: TREZOR_DISC1 = DISC1 TREZOR_DISC2 = DISC2 -TREZORS = {T1B1, T2T1, T2B1, T3T1, DISC1, DISC2} +TREZORS = {T1B1, T2T1, T2B1, T3T1, T3B1, DISC1, DISC2} def by_name(name: Optional[str]) -> Optional[TrezorModel]: From 11b1d5ca417a4aafb4ca7ea6700ad0fc5598964f Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 17 Apr 2024 12:59:36 +0200 Subject: [PATCH 417/626] chore(core): add T3B1 production keys [no changelog] --- core/embed/models/T3B1/model_T3B1.h | 12 +++++------ .../T3B1/vendor_dev_DO_NOT_SIGN.toif | 1 + .../vendorheader/T3B1/vendor_prodtest.json | 20 ++++++++++++++++++ .../vendorheader/T3B1/vendor_prodtest.toif | 1 + .../vendorheader/T3B1/vendor_trezor.json | 20 ++++++++++++++++++ .../vendorheader/T3B1/vendor_trezor.toif | Bin 0 -> 81 bytes .../T3B1/vendor_trezor_btconly.json | 20 ++++++++++++++++++ .../T3B1/vendor_trezor_btconly.toif | Bin 0 -> 92 bytes .../vendorheader/T3B1/vendor_unsafe.json | 20 ++++++++++++++++++ .../vendorheader/T3B1/vendor_unsafe.toif | Bin 0 -> 62 bytes ...endorheader_dev_DO_NOT_SIGN_signed_dev.bin | Bin 512 -> 512 bytes .../vendorheader_dev_DO_NOT_SIGN_unsigned.bin | Bin 512 -> 512 bytes .../T3B1/vendorheader_prodtest_unsigned.bin | Bin 0 -> 512 bytes .../vendorheader_trezor_btconly_unsigned.bin | Bin 0 -> 512 bytes .../T3B1/vendorheader_trezor_unsigned.bin | Bin 0 -> 512 bytes .../T3B1/vendorheader_unsafe_signed_dev.bin | Bin 0 -> 512 bytes .../T3B1/vendorheader_unsafe_unsigned.bin | Bin 0 -> 512 bytes python/src/trezorlib/firmware/models.py | 14 ++++++------ 18 files changed, 95 insertions(+), 13 deletions(-) create mode 120000 core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.toif create mode 100644 core/embed/vendorheader/T3B1/vendor_prodtest.json create mode 120000 core/embed/vendorheader/T3B1/vendor_prodtest.toif create mode 100644 core/embed/vendorheader/T3B1/vendor_trezor.json create mode 100644 core/embed/vendorheader/T3B1/vendor_trezor.toif create mode 100644 core/embed/vendorheader/T3B1/vendor_trezor_btconly.json create mode 100644 core/embed/vendorheader/T3B1/vendor_trezor_btconly.toif create mode 100644 core/embed/vendorheader/T3B1/vendor_unsafe.json create mode 100644 core/embed/vendorheader/T3B1/vendor_unsafe.toif create mode 100644 core/embed/vendorheader/T3B1/vendorheader_prodtest_unsigned.bin create mode 100644 core/embed/vendorheader/T3B1/vendorheader_trezor_btconly_unsigned.bin create mode 100644 core/embed/vendorheader/T3B1/vendorheader_trezor_unsigned.bin create mode 100644 core/embed/vendorheader/T3B1/vendorheader_unsafe_signed_dev.bin create mode 100644 core/embed/vendorheader/T3B1/vendorheader_unsafe_unsigned.bin diff --git a/core/embed/models/T3B1/model_T3B1.h b/core/embed/models/T3B1/model_T3B1.h index 2f007c0d8a..007d2be771 100644 --- a/core/embed/models/T3B1/model_T3B1.h +++ b/core/embed/models/T3B1/model_T3B1.h @@ -12,14 +12,14 @@ #define MODEL_USB_PRODUCT MODEL_FULL_NAME #define MODEL_BOARDLOADER_KEYS \ - (const uint8_t *)"\x76\xaf\x42\x6e\x61\x40\x6b\xad\x7c\x07\x7b\x40\x9c\x66\xfd\xe3\x9f\xb8\x17\x91\x93\x13\xae\x1e\x4c\x02\x53\x5c\x80\xbe\xed\x96", \ - (const uint8_t *)"\x61\x97\x51\xdc\x8d\x2d\x09\xd7\xe5\xdf\xb9\x9e\x41\xf6\x06\xde\xbd\xf4\x19\xf8\x5a\x81\x43\xe8\xe5\x39\x9e\xa6\x7a\x39\x88\xc7", \ - (const uint8_t *)"\xab\xf9\x4b\x66\x15\xa7\xdd\xe2\xa8\x71\xf7\xd6\x2c\x38\xef\xc7\xd9\xd8\xf6\x01\x0d\x88\x46\xbe\xe6\x36\xe4\xf3\xe6\x58\xa3\x8c", + (const uint8_t *)"\xbb\xc2\x1a\xdb\xc1\xb4\x4d\x6b\xfe\x10\xc5\x22\x3d\xe3\x3c\x28\x42\x9e\x52\x68\x07\x07\xd3\x24\x90\x07\xed\x42\xdc\xc5\xbe\x13", \ + (const uint8_t *)"\x22\xe4\x2a\x30\x1f\x3b\x6f\xf4\xf2\xe6\x92\x6b\xce\x43\x59\xe8\x3f\xc8\x3f\x0f\x4a\x84\xa7\x33\x89\x59\xc1\xfd\x0e\x29\xdc\x13", \ + (const uint8_t *)"\x7f\x47\x8f\x5f\xb7\x8d\x8c\x05\x4b\x72\x0d\x81\x04\xbf\x2f\x64\x87\xe4\x52\x40\x24\x58\x97\x9b\x55\x25\xc2\x90\xdc\x34\x4d\x32", #define MODEL_BOOTLOADER_KEYS \ - (const uint8_t *)"\x33\x8b\x94\x9b\x7e\x3b\x26\x47\x0d\x4f\xe3\x69\x6f\xd6\xff\xf2\x87\x57\x26\x5d\x14\xcc\xa4\x8e\xbf\x2d\xb9\x7b\x4f\x5b\xc0\x39", \ - (const uint8_t *)"\x28\x68\x20\x27\x73\x0b\x78\x32\x01\xb0\x5a\x8c\x9d\x11\x68\x54\x47\xc1\x72\x97\xdb\x71\xb8\xa6\x0d\xc6\x93\xa4\x46\x10\x75\x1d", \ - (const uint8_t *)"\x9f\xbf\x31\xb4\xe3\x51\xa4\xcc\x81\xc7\x59\x95\xb2\x25\x7f\x0a\x71\x69\x26\x8d\xa5\xa4\x4e\x94\xb6\xa5\x59\x0d\x43\x4e\x32\xda", + (const uint8_t *)"\x41\xd9\x88\x48\x01\x37\x7c\xff\x04\xb0\xb4\x59\xfc\x9b\x56\xaf\x1b\x51\xf4\x73\x43\xa3\xa6\xe4\xfd\xc1\xea\xca\xbc\xad\x77\x56", \ + (const uint8_t *)"\x23\xec\x4e\xc4\x67\x4d\x68\xac\x54\x31\xe8\xba\x84\xd7\xac\x24\xcb\x5a\x66\x70\x2e\xc5\x65\x01\x4d\x16\x4a\x72\x18\x2a\x66\xc7", \ + (const uint8_t *)"\x8a\x7d\xac\x53\xe1\xbe\x46\x60\x72\x31\x92\x0b\x0c\x71\x05\x6a\x27\xbe\x16\xb6\x7a\x2f\xc0\xd8\x64\x4d\x5f\x87\x08\xa2\x8d\xd1", #define IMAGE_CHUNK_SIZE (128 * 1024) #define IMAGE_HASH_SHA256 diff --git a/core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.toif b/core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.toif new file mode 120000 index 0000000000..1fc9443937 --- /dev/null +++ b/core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.toif @@ -0,0 +1 @@ +./vendor_unsafe.toif \ No newline at end of file diff --git a/core/embed/vendorheader/T3B1/vendor_prodtest.json b/core/embed/vendorheader/T3B1/vendor_prodtest.json new file mode 100644 index 0000000000..ad4be7ce06 --- /dev/null +++ b/core/embed/vendorheader/T3B1/vendor_prodtest.json @@ -0,0 +1,20 @@ +{ + "header_len": 512, + "text": "UNSAFE, FACTORY TEST ONLY", + "hw_model": "T3B1", + "expiry": 0, + "version": [0, 0], + "sig_m": 2, + "trust": { + "allow_run_with_secret": true, + "show_vendor_string": false, + "require_user_click": false, + "red_background": false, + "delay": 0 + }, + "pubkeys": [ + "cf9af91868919da222aaf423386446d5546e165fce0f005e806e3c1a0c2334ec", + "df28cea5a5c557ed56c073c8ddeece1f4c786498efdbb3432ccf93d0af837862", + "27b4374398d4854dc9ade7a500265e1e1d755dfe3b14d207fec76a2f0a0e0529" + ] +} diff --git a/core/embed/vendorheader/T3B1/vendor_prodtest.toif b/core/embed/vendorheader/T3B1/vendor_prodtest.toif new file mode 120000 index 0000000000..1fc9443937 --- /dev/null +++ b/core/embed/vendorheader/T3B1/vendor_prodtest.toif @@ -0,0 +1 @@ +./vendor_unsafe.toif \ No newline at end of file diff --git a/core/embed/vendorheader/T3B1/vendor_trezor.json b/core/embed/vendorheader/T3B1/vendor_trezor.json new file mode 100644 index 0000000000..e9ce3cf43d --- /dev/null +++ b/core/embed/vendorheader/T3B1/vendor_trezor.json @@ -0,0 +1,20 @@ +{ + "header_len": 512, + "text": "Trezor", + "hw_model": "T3B1", + "expiry": 0, + "version": [0, 0], + "sig_m": 2, + "trust": { + "allow_run_with_secret": true, + "show_vendor_string": false, + "require_user_click": false, + "red_background": false, + "delay": 0 + }, + "pubkeys": [ + "90edb45db65f26d793f8b8c6a505062286262d028d341f273272e5d2bcc71f18", + "e32f59de973a39cb2b5ce79a17cbc4107272d46c617848e3c7b19b5b731cc174", + "8a5d0b43591db2dbf3895ce19d30d7ec05333b0028737ab76cacb4b7ed0833fe" + ] +} diff --git a/core/embed/vendorheader/T3B1/vendor_trezor.toif b/core/embed/vendorheader/T3B1/vendor_trezor.toif new file mode 100644 index 0000000000000000000000000000000000000000..60006897dc50d6b48afabd2c29668605a78472f3 GIT binary patch literal 81 zcmV-X0IvU3Pf14@02ly80001EU=S1({Qn<FFaQCF3F3g+A3<z+7+d}$j18oLe7x-c nP=J>WR1VTWGd9Rmf^d7mUIVc|LYyEEaWfcT`W<M9JUC1ML*pEn literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/T3B1/vendor_trezor_btconly.json b/core/embed/vendorheader/T3B1/vendor_trezor_btconly.json new file mode 100644 index 0000000000..35112ca2ce --- /dev/null +++ b/core/embed/vendorheader/T3B1/vendor_trezor_btconly.json @@ -0,0 +1,20 @@ +{ + "header_len": 512, + "text": "Trezor Bitcoin-only", + "hw_model": "T3B1", + "expiry": 0, + "version": [0, 0], + "sig_m": 2, + "trust": { + "allow_run_with_secret": true, + "show_vendor_string": false, + "require_user_click": false, + "red_background": false, + "delay": 0 + }, + "pubkeys": [ + "461ccf3ac3f32ced6f8528aef50bacd2687f42c8d1c627ed424fdbb0f6b40041", + "15aed3fcd2fa61e738641d47e77e0a8a83371de2ef6716f9c74f70f16bc76dd8", + "c851f5d5625cfb37c4afb85eee8375b6af5b11e59be115cfa601f795921f280e" + ] +} diff --git a/core/embed/vendorheader/T3B1/vendor_trezor_btconly.toif b/core/embed/vendorheader/T3B1/vendor_trezor_btconly.toif new file mode 100644 index 0000000000000000000000000000000000000000..1f17ff9b7eb7e9fb3ddd194b3ad50599e5002116 GIT binary patch literal 92 zcmV-i0Hgm@Pf14@02lyJ0001ukO2z7FbD(vLSB&nKhGDqMAtIdD2vdZ(5f*4K$VV= yj82-<%*D*bx|JWfZXKB*^<h}eHbe2rKi)j*l<V)lZOxoB0%zvd+q;~wcX9#R&MUD1 literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/T3B1/vendor_unsafe.json b/core/embed/vendorheader/T3B1/vendor_unsafe.json new file mode 100644 index 0000000000..5ac4215741 --- /dev/null +++ b/core/embed/vendorheader/T3B1/vendor_unsafe.json @@ -0,0 +1,20 @@ +{ + "header_len": 512, + "text": "UNSAFE, DO NOT USE!", + "hw_model": "T3B1", + "expiry": 0, + "version": [0, 0], + "sig_m": 2, + "trust": { + "allow_run_with_secret": false, + "show_vendor_string": true, + "require_user_click": true, + "red_background": true, + "delay": 1 + }, + "pubkeys": [ + "e28a8970753332bd72fef413e6b0b2ef1b4aadda7aa2c141f233712a6876b351", + "d4eec1869fb1b8a4e817516ad5a931557cb56805c3eb16e8f3a803d647df7869", + "772c8a442b7db06e166cfbc1ccbcbcde6f3eba76a4e98ef3ffc519502237d6ef" + ] +} diff --git a/core/embed/vendorheader/T3B1/vendor_unsafe.toif b/core/embed/vendorheader/T3B1/vendor_unsafe.toif new file mode 100644 index 0000000000000000000000000000000000000000..9d302f7335a9b3367ad9b58e2d209d5adfdb6db5 GIT binary patch literal 62 zcmV-E0KxxMPf14@02lx=0001EU_b*O__4A-@FO@#Y!Cy+L1F_b2tsAURG?wF9L!`G UfyHEGISli0x(BEGarzeq07;$|fdBvi literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin b/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin index 2af057b5d0ea84448f5780bd942b037ef9c743f3..de480c0985e0dd11009551bb7cf80b50ad4ef97f 100644 GIT binary patch delta 132 zcmV-~0DJ#{1b_sPpfxf8003iPKm#B6v9dq#BREKG5Cg_RVgo4%LS@5LpkcTi%w!mW z#bjhT4D)fi2dDdS`WFU~@y?O~96<w$`yZhG)Dt)63979V54NHlG8q&2d4KK>@9UrC muzE?_P>lO&TJw6S)*=0Qfcv28_s|R_?rn^!<2y{Sik|}lN<8lX delta 148 zcmV;F0Biq%1b_sPph!gk003iP5EK;r{~t&&00D>z;(*y7L2P*#TmB=A4Wxm5yzKu_ zfR_za4$?p~Hpo+gaC^aC1F=6soFETzGZ<j{9cYL=I82e@*FgiM5M+V+zz3Eu_1GzE zirbGx;2PTnT&n}r4cC26-7SGG?(2brqO=4lT~<%^j2lRCSzuH1<SG_{F)wx+@Bj%L C3O!!{ diff --git a/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin b/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin index 21c4b380e57c064f0e134732f3f0b39a54a4c464..1db0c2cd38bfa590aae9ac22d2f30f6b0fed6016 100644 GIT binary patch delta 67 zcmV-J0KETz1b_sPpfxf8003iPKm#B6v9dq#BREKG5Cg_RVgo4%LS@5LpkcTi%w!mW Z#bjhT4D)fi2dDdS`WFVV@ecu#0UQ>E80-K5 delta 83 zcmV-Z0IdIj1b_sPph!gk003iP5EK;r{~t&&00D>z;(*y7L2P*#TmB=A4Wxm5yzKu_ pfR_za4$?p~Hpo+gaC^aC1F=6soFETzGZ<j{9cYL=I83qO7y<OmA7B6g diff --git a/core/embed/vendorheader/T3B1/vendorheader_prodtest_unsigned.bin b/core/embed/vendorheader/T3B1/vendorheader_prodtest_unsigned.bin new file mode 100644 index 0000000000000000000000000000000000000000..e5c243ab0f5c1e4c56d2b921d3e5aa45d7772693 GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=6c2uV<$rxpMl~0te+AY6Xz~cTJ=TQBE{`$NS;{yIevz?hCCZ7 z9%Yj^_chKfU3xV9ZP<b06L;U8llQ4eneqPiW@nxAlP|1qu1HefV(vWSN~`b5wa=F_ zsKv?2md5_G7P-X!?|7Cz7ayypWT;=TqnoRaf}5jrh<{L|LWpZ{h=RYLPb33Fh`*=1 z1cL;F5zslw2@cHiKQ?Z%|DbH)kt4u-%rS{slfx<XaL9th9WrN9BpQ#Vq*(HNF5Jbw R{CD9maW;e(Mp<}5005@BOtk<2 literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/T3B1/vendorheader_trezor_btconly_unsigned.bin b/core/embed/vendorheader/T3B1/vendorheader_trezor_btconly_unsigned.bin new file mode 100644 index 0000000000000000000000000000000000000000..966facd9c5b9b5276682221b1ccf54d479bbb10e GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=6c2uV<$rxpMk+m=DgM6&pL1OTQ$~w<z90squ%Mn#bfGko&0Za z__l??QFPtqKbL+bKDS7bb$?#R)zxe+`{;eT*w5qs1s}7I=iWFG`1NX1%y07}>vzPx zYcAckK3eeU?1!S~moa{yI!RuGPdKC~wJN_z!6~yOIX^Q`H$N|@GQ{80U4lV^Apq!% z-U*Cc2Mjov|2oA@_-}t+e22?*qZ=CC7v^19Wys_(wQoX?->l1Lj-ENXYpVRtJlUBF sUlSwFnmK<wX@Ae=)s)xo_vN0QW6YHP?Aq<!b2gM0F(Q06$^wM|02D`RIsgCw literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/T3B1/vendorheader_trezor_unsigned.bin b/core/embed/vendorheader/T3B1/vendorheader_trezor_unsigned.bin new file mode 100644 index 0000000000000000000000000000000000000000..5d6e6ea34ee33ca7ad9588e2cd10e01009c04984 GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=6c2uV<$rxpMhb*+byx%;?=HC{;}iOQdTylHZ@(QUK4qBqoSvm z_8ga&c&s0JZ@QJ`Y3-Qjv&2sy5hyCUl9O2B@%Z@0+0n%^2TQtQxt$|rH{Jf+8S`+i z!Sy$+#?}lP#Z}vL)@<4Smc#fTTS!rAReljeh`*=11cL;FE70oX1OX9|KmX-D3>X+Y zI3G3Kly}Ujl!*SP+{3%1v1ZSk{{aotc|-UvIT)Lr2yQB<J{ZTm(cWo}0)L^gM8YrG Qj1C(MAA}D^S@=Q#09YVU3;+NC literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/T3B1/vendorheader_unsafe_signed_dev.bin b/core/embed/vendorheader/T3B1/vendorheader_unsafe_signed_dev.bin new file mode 100644 index 0000000000000000000000000000000000000000..cc04f109c1dc71c43bd52395fec2d41a46592146 GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=01iHV<$rxpMl{~S7$+~vC-b5e_w>3ZP@f)+H38tsznDKKN%Nl zWt43Wyz=f~+x(3?mb?%T%(}YLFtlcC2J7M1VlO_gV7}&lzaq0-r^`jVc0-<6&hLX~ z_UyTrZ?~&#$;-aa|Bp%rD4Ab-FC6L@?C9pIqu}DN;O8Hr5E|^N7~=2gF2NwdU<7nV za)JZ1{Ev;B>^~@5c;pB$A9GA%*5q(XJsh$iafi&A6p6;8DJhmbp9^=fFaKTmOPmei z^pU_~E>bdIR3CrF>ZYpSk(jsn+BKIVU%#4Om;JEg?Y4i+o0DR6=A~#heK0aRYvtaz Yb?U>mV-I?F_*{rxdY*X)KQkK>0P9F{-~a#s literal 0 HcmV?d00001 diff --git a/core/embed/vendorheader/T3B1/vendorheader_unsafe_unsigned.bin b/core/embed/vendorheader/T3B1/vendorheader_unsafe_unsigned.bin new file mode 100644 index 0000000000000000000000000000000000000000..8d69feb9f2919729fb240e053aa3a1462ccbda4b GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=01iHV<$rxpMl{~S7$+~vC-b5e_w>3ZP@f)+H38tsznDKKN%Nl zWt43Wyz=f~+x(3?mb?%T%(}YLFtlcC2J7M1VlO_gV7}&lzaq0-r^`jVc0-<6&hLX~ z_UyTrZ?~&#$;-aa|Bp%rD4Ab-FC6L@?C9pIqu}DN;O8Hr5E|^N7~=2gF2NwdU<7nV za)JZ1{Ev;B>^~@5c;pB$A9GA%*5q(XJsh$iafi&A6p6;8DJhmbp9^=fFaKTmOPmei K^idWOApiijH&V0! literal 0 HcmV?d00001 diff --git a/python/src/trezorlib/firmware/models.py b/python/src/trezorlib/firmware/models.py index ecab10536a..46d88cdb73 100644 --- a/python/src/trezorlib/firmware/models.py +++ b/python/src/trezorlib/firmware/models.py @@ -248,22 +248,22 @@ class ModelKeys: ) T3B1 = ModelKeys( - production=False, + production=True, boardloader_keys=[ bytes.fromhex(key) for key in ( - "db995fe25169d141cab9bbba92baa01f9f2e1ece7df4cb2ac05190f37fcc1f9d", - "2152f8d19b791d24453242e15f2eab6cb7cffa7b6a5ed30097960e069881db12", - "22fc297792f0b6ffc0bfcfdb7edb0c0aa14e025a365ec0e342e86e3829cb74b6", + "bbc21adbc1b44d6bfe10c5223de33c28429e52680707d3249007ed42dcc5be13", + "22e42a301f3b6ff4f2e6926bce4359e83fc83f0f4a84a7338959c1fd0e29dc13", + "7f478f5fb78d8c054b720d8104bf2f6487e452402458979b5525c290dc344d32", ) ], boardloader_sigs_needed=2, bootloader_keys=[ bytes.fromhex(key) for key in ( - "d759793bbc13a2819a827c76adb6fba8a49aee007f49f2d0992d99b825ad2c48", - "6355691c178a8ff91007a7478afb955ef7352c63e7b25703984cf78b26e21a56", - "ee93a4f66f8d16b819bb9beb9ffccdfcdc1412e87fee6a324c2a99a1e0e67148", + "41d9884801377cff04b0b459fc9b56af1b51f47343a3a6e4fdc1eacabcad7756", + "23ec4ec4674d68ac5431e8ba84d7ac24cb5a66702ec565014d164a72182a66c7", + "8a7dac53e1be46607231920b0c71056a27be16b67a2fc0d8644d5f8708a28dd1", ) ], bootloader_sigs_needed=2, From 15b42afc55ceab6f7c12b671ab5d36098c075618 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 1 Jul 2024 22:07:27 +0200 Subject: [PATCH 418/626] feat(core): add temporary DEVICE_CERT_CHAIN for T3B1 [no changelog] --- core/embed/trezorhal/unix/optiga.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/embed/trezorhal/unix/optiga.c b/core/embed/trezorhal/unix/optiga.c index 990702eee2..44a2b97cf4 100644 --- a/core/embed/trezorhal/unix/optiga.c +++ b/core/embed/trezorhal/unix/optiga.c @@ -31,6 +31,9 @@ #elif defined(TREZOR_MODEL_T3T1) #include "certs/T3T1.h" #define DEVICE_CERT_CHAIN T3T1_der +#elif defined(TREZOR_MODEL_T3B1) +#include "certs/T2B1.h" +#define DEVICE_CERT_CHAIN T2B1_der #else #error "Cert chain for specified model is not available." #endif From 7c94080227ea89861d60d33a0695e6cb685c12bb Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 16 Jul 2024 14:42:39 +0200 Subject: [PATCH 419/626] refactor(core): move vendor headers to model specific directories [no changelog] --- Makefile | 4 ++-- core/SConscript.firmware | 2 +- core/SConscript.prodtest | 8 +++---- core/SConscript.reflash | 2 +- .../vendorheader}/vendor_dev_DO_NOT_SIGN.json | 0 .../vendorheader}/vendor_dev_DO_NOT_SIGN.toif | 0 .../D001/vendorheader}/vendor_unsafe.json | 0 .../D001/vendorheader}/vendor_unsafe.toif | Bin ...endorheader_dev_DO_NOT_SIGN_signed_dev.bin | Bin .../vendorheader_dev_DO_NOT_SIGN_unsigned.bin | Bin .../vendorheader_unsafe_signed_dev.bin | Bin .../vendorheader_unsafe_signed_prod.bin | Bin .../vendorheader_unsafe_unsigned.bin | Bin .../vendorheader}/vendor_dev_DO_NOT_SIGN.json | 0 .../vendorheader}/vendor_dev_DO_NOT_SIGN.toif | Bin .../D002/vendorheader}/vendor_unsafe.json | 0 .../D002/vendorheader}/vendor_unsafe.toif | Bin ...endorheader_dev_DO_NOT_SIGN_signed_dev.bin | Bin .../vendorheader_dev_DO_NOT_SIGN_unsigned.bin | Bin .../vendorheader_unsafe_signed_dev.bin | Bin .../vendorheader_unsafe_unsigned.bin | Bin .../vendorheader}/vendor_dev_DO_NOT_SIGN.json | 0 .../vendorheader}/vendor_dev_DO_NOT_SIGN.toif | 0 .../T2B1/vendorheader}/vendor_prodtest.json | 0 .../T2B1/vendorheader}/vendor_prodtest.toif | 0 .../T2B1/vendorheader}/vendor_trezor.json | 0 .../T2B1/vendorheader}/vendor_trezor.toif | Bin .../vendorheader}/vendor_trezor_btconly.json | 0 .../vendorheader}/vendor_trezor_btconly.toif | Bin .../T2B1/vendorheader}/vendor_unsafe.json | 0 .../T2B1/vendorheader}/vendor_unsafe.toif | Bin ...endorheader_dev_DO_NOT_SIGN_signed_dev.bin | Bin .../vendorheader_dev_DO_NOT_SIGN_unsigned.bin | Bin .../vendorheader_prodtest_signed_prod.bin | Bin .../vendorheader_prodtest_unsigned.bin | Bin ...endorheader_trezor_btconly_signed_prod.bin | Bin .../vendorheader_trezor_btconly_unsigned.bin | Bin .../vendorheader_trezor_signed_prod.bin | Bin .../vendorheader_trezor_unsigned.bin | Bin .../vendorheader_unsafe_signed_dev.bin | Bin .../vendorheader_unsafe_signed_prod.bin | Bin .../vendorheader_unsafe_unsigned.bin | Bin .../vendorheader}/vendor_dev_DO_NOT_SIGN.json | 0 .../vendorheader}/vendor_dev_DO_NOT_SIGN.toif | 0 .../T2T1/vendorheader}/vendor_prodtest.json | 0 .../T2T1/vendorheader}/vendor_prodtest.toif | 0 .../vendorheader}/vendor_satoshilabs.json | 0 .../vendorheader}/vendor_satoshilabs.toif | Bin .../T2T1/vendorheader}/vendor_unsafe.json | 0 .../T2T1/vendorheader}/vendor_unsafe.toif | Bin ...endorheader_dev_DO_NOT_SIGN_signed_dev.bin | Bin .../vendorheader_dev_DO_NOT_SIGN_unsigned.bin | Bin .../vendorheader_prodtest_signed_prod.bin | Bin .../vendorheader_prodtest_unsigned.bin | Bin .../vendorheader_satoshilabs_signed_prod.bin | Bin .../vendorheader_satoshilabs_unsigned.bin | Bin .../vendorheader_unsafe_signed_dev.bin | Bin .../vendorheader_unsafe_signed_prod.bin | Bin .../vendorheader_unsafe_unsigned.bin | Bin .../vendorheader}/vendor_dev_DO_NOT_SIGN.json | 0 .../vendorheader}/vendor_dev_DO_NOT_SIGN.toif | 0 .../T3B1/vendorheader}/vendor_prodtest.json | 0 .../T3B1/vendorheader}/vendor_prodtest.toif | 0 .../T3B1/vendorheader}/vendor_trezor.json | 0 .../T3B1/vendorheader}/vendor_trezor.toif | Bin .../vendorheader}/vendor_trezor_btconly.json | 0 .../vendorheader}/vendor_trezor_btconly.toif | Bin .../T3B1/vendorheader}/vendor_unsafe.json | 0 .../T3B1/vendorheader}/vendor_unsafe.toif | Bin ...endorheader_dev_DO_NOT_SIGN_signed_dev.bin | Bin .../vendorheader_dev_DO_NOT_SIGN_unsigned.bin | Bin .../vendorheader_prodtest_unsigned.bin | Bin .../vendorheader_trezor_btconly_unsigned.bin | Bin .../vendorheader_trezor_unsigned.bin | Bin .../vendorheader_unsafe_signed_dev.bin | Bin .../vendorheader_unsafe_unsigned.bin | Bin .../vendorheader}/vendor_dev_DO_NOT_SIGN.json | 0 .../vendorheader}/vendor_dev_DO_NOT_SIGN.toif | 0 .../T3T1/vendorheader}/vendor_prodtest.json | 0 .../T3T1/vendorheader}/vendor_prodtest.toif | 0 .../T3T1/vendorheader}/vendor_trezor.json | 0 .../T3T1/vendorheader}/vendor_trezor.toif | Bin .../vendorheader}/vendor_trezor_btconly.json | 0 .../vendorheader}/vendor_trezor_btconly.toif | 0 .../T3T1/vendorheader}/vendor_unsafe.json | 0 .../T3T1/vendorheader}/vendor_unsafe.toif | Bin ...endorheader_dev_DO_NOT_SIGN_signed_dev.bin | Bin .../vendorheader_dev_DO_NOT_SIGN_unsigned.bin | Bin .../vendorheader_prodtest_signed_prod.bin | Bin .../vendorheader_prodtest_unsigned.bin | Bin ...endorheader_trezor_btconly_signed_prod.bin | Bin .../vendorheader_trezor_btconly_unsigned.bin | Bin .../vendorheader_trezor_signed_prod.bin | Bin .../vendorheader_trezor_unsigned.bin | Bin .../vendorheader_unsafe_signed_dev.bin | Bin .../vendorheader_unsafe_signed_prod.bin | Bin .../vendorheader_unsafe_unsigned.bin | Bin .../generate_vendorheader.sh} | 21 +++++++++++++----- python/tests/test_firmware.py | 3 ++- 99 files changed, 26 insertions(+), 14 deletions(-) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendor_dev_DO_NOT_SIGN.json (100%) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendor_dev_DO_NOT_SIGN.toif (100%) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendor_unsafe.json (100%) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendor_unsafe.toif (100%) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin (100%) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendorheader_dev_DO_NOT_SIGN_unsigned.bin (100%) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendorheader_unsafe_signed_dev.bin (100%) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendorheader_unsafe_signed_prod.bin (100%) rename core/embed/{vendorheader/D001 => models/D001/vendorheader}/vendorheader_unsafe_unsigned.bin (100%) rename core/embed/{vendorheader/D002 => models/D002/vendorheader}/vendor_dev_DO_NOT_SIGN.json (100%) rename core/embed/{vendorheader/D002 => models/D002/vendorheader}/vendor_dev_DO_NOT_SIGN.toif (100%) rename core/embed/{vendorheader/D002 => models/D002/vendorheader}/vendor_unsafe.json (100%) rename core/embed/{vendorheader/D002 => models/D002/vendorheader}/vendor_unsafe.toif (100%) rename core/embed/{vendorheader/D002 => models/D002/vendorheader}/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin (100%) rename core/embed/{vendorheader/D002 => models/D002/vendorheader}/vendorheader_dev_DO_NOT_SIGN_unsigned.bin (100%) rename core/embed/{vendorheader/D002 => models/D002/vendorheader}/vendorheader_unsafe_signed_dev.bin (100%) rename core/embed/{vendorheader/D002 => models/D002/vendorheader}/vendorheader_unsafe_unsigned.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_dev_DO_NOT_SIGN.json (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_dev_DO_NOT_SIGN.toif (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_prodtest.json (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_prodtest.toif (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_trezor.json (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_trezor.toif (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_trezor_btconly.json (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_trezor_btconly.toif (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_unsafe.json (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendor_unsafe.toif (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_dev_DO_NOT_SIGN_unsigned.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_prodtest_signed_prod.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_prodtest_unsigned.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_trezor_btconly_signed_prod.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_trezor_btconly_unsigned.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_trezor_signed_prod.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_trezor_unsigned.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_unsafe_signed_dev.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_unsafe_signed_prod.bin (100%) rename core/embed/{vendorheader/T2B1 => models/T2B1/vendorheader}/vendorheader_unsafe_unsigned.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendor_dev_DO_NOT_SIGN.json (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendor_dev_DO_NOT_SIGN.toif (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendor_prodtest.json (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendor_prodtest.toif (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendor_satoshilabs.json (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendor_satoshilabs.toif (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendor_unsafe.json (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendor_unsafe.toif (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_dev_DO_NOT_SIGN_unsigned.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_prodtest_signed_prod.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_prodtest_unsigned.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_satoshilabs_signed_prod.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_satoshilabs_unsigned.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_unsafe_signed_dev.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_unsafe_signed_prod.bin (100%) rename core/embed/{vendorheader/T2T1 => models/T2T1/vendorheader}/vendorheader_unsafe_unsigned.bin (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_dev_DO_NOT_SIGN.json (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_dev_DO_NOT_SIGN.toif (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_prodtest.json (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_prodtest.toif (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_trezor.json (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_trezor.toif (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_trezor_btconly.json (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_trezor_btconly.toif (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_unsafe.json (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendor_unsafe.toif (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendorheader_dev_DO_NOT_SIGN_unsigned.bin (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendorheader_prodtest_unsigned.bin (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendorheader_trezor_btconly_unsigned.bin (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendorheader_trezor_unsigned.bin (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendorheader_unsafe_signed_dev.bin (100%) rename core/embed/{vendorheader/T3B1 => models/T3B1/vendorheader}/vendorheader_unsafe_unsigned.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_dev_DO_NOT_SIGN.json (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_dev_DO_NOT_SIGN.toif (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_prodtest.json (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_prodtest.toif (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_trezor.json (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_trezor.toif (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_trezor_btconly.json (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_trezor_btconly.toif (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_unsafe.json (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendor_unsafe.toif (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_dev_DO_NOT_SIGN_unsigned.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_prodtest_signed_prod.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_prodtest_unsigned.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_trezor_btconly_signed_prod.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_trezor_btconly_unsigned.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_trezor_signed_prod.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_trezor_unsigned.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_unsafe_signed_dev.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_unsafe_signed_prod.bin (100%) rename core/embed/{vendorheader/T3T1 => models/T3T1/vendorheader}/vendorheader_unsafe_unsigned.bin (100%) rename core/{embed/vendorheader/generate.sh => tools/generate_vendorheader.sh} (69%) diff --git a/Makefile b/Makefile index 04503bf02b..ff9f996929 100644 --- a/Makefile +++ b/Makefile @@ -143,10 +143,10 @@ docs_summary_check: ## check if there are unlinked documentation files python3 tools/check_docs_summary.py vendorheader: ## generate vendor header - ./core/embed/vendorheader/generate.sh --quiet + ./core/tools/generate_vendorheader.sh --quiet vendorheader_check: ## check that vendor header is up to date - ./core/embed/vendorheader/generate.sh --quiet --check + ./core/tools/generate_vendorheader.sh --quiet --check gen: templates mocks icons protobuf ci_docs vendorheader solana_templates ## regenerate auto-generated files from sources diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 22e0a591ea..3097e73bbb 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -892,7 +892,7 @@ else: else: vendor = "trezor_signed_prod" -VENDORHEADER = f'embed/vendorheader/{MODEL_IDENTIFIER}/vendorheader_{vendor}.bin' +VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/vendorheader_{vendor}.bin' if TREZOR_MODEL not in ('1',): diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 8f5a5d62bc..b505b4337e 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -227,13 +227,13 @@ elif (vh := os.environ.get("VENDOR_HEADER", None)): # of vendor header which does not affect reproducibility of the build. Nonetheless, # we should figure out a cleaner way to pass in this argument, without having to teach # the Makefile about it. - VENDORHEADER = f'embed/vendorheader/{MODEL_IDENTIFIER}/{vh}' + VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/{vh}' elif PRODUCTION: - VENDORHEADER = f'embed/vendorheader/{MODEL_IDENTIFIER}/vendorheader_prodtest_signed_prod.bin' + VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/vendorheader_prodtest_signed_prod.bin' elif BOOTLOADER_DEVEL: - VENDORHEADER = f'embed/vendorheader/{MODEL_IDENTIFIER}/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin' + VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin' else: - VENDORHEADER = f'embed/vendorheader/{MODEL_IDENTIFIER}/vendorheader_unsafe_signed_prod.bin' + VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/vendorheader_unsafe_signed_prod.bin' diff --git a/core/SConscript.reflash b/core/SConscript.reflash index e40af8b1ef..dccc9e66fa 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -182,7 +182,7 @@ obj_program += env.Object(source=SOURCE_HAL) MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL) -VENDORHEADER = f'embed/vendorheader/{MODEL_IDENTIFIER}/vendorheader_' + ('unsafe_signed_dev.bin' if ARGUMENTS.get('PRODUCTION', '0') == '0' else 'satoshilabs_signed_prod.bin') +VENDORHEADER = f'embed/models/{MODEL_IDENTIFIER}/vendorheader/vendorheader_' + ('unsafe_signed_dev.bin' if ARGUMENTS.get('PRODUCTION', '0') == '0' else 'satoshilabs_signed_prod.bin') obj_program.extend( env.Command( diff --git a/core/embed/vendorheader/D001/vendor_dev_DO_NOT_SIGN.json b/core/embed/models/D001/vendorheader/vendor_dev_DO_NOT_SIGN.json similarity index 100% rename from core/embed/vendorheader/D001/vendor_dev_DO_NOT_SIGN.json rename to core/embed/models/D001/vendorheader/vendor_dev_DO_NOT_SIGN.json diff --git a/core/embed/vendorheader/D001/vendor_dev_DO_NOT_SIGN.toif b/core/embed/models/D001/vendorheader/vendor_dev_DO_NOT_SIGN.toif similarity index 100% rename from core/embed/vendorheader/D001/vendor_dev_DO_NOT_SIGN.toif rename to core/embed/models/D001/vendorheader/vendor_dev_DO_NOT_SIGN.toif diff --git a/core/embed/vendorheader/D001/vendor_unsafe.json b/core/embed/models/D001/vendorheader/vendor_unsafe.json similarity index 100% rename from core/embed/vendorheader/D001/vendor_unsafe.json rename to core/embed/models/D001/vendorheader/vendor_unsafe.json diff --git a/core/embed/vendorheader/D001/vendor_unsafe.toif b/core/embed/models/D001/vendorheader/vendor_unsafe.toif similarity index 100% rename from core/embed/vendorheader/D001/vendor_unsafe.toif rename to core/embed/models/D001/vendorheader/vendor_unsafe.toif diff --git a/core/embed/vendorheader/D001/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin b/core/embed/models/D001/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/D001/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin rename to core/embed/models/D001/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin diff --git a/core/embed/vendorheader/D001/vendorheader_dev_DO_NOT_SIGN_unsigned.bin b/core/embed/models/D001/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin similarity index 100% rename from core/embed/vendorheader/D001/vendorheader_dev_DO_NOT_SIGN_unsigned.bin rename to core/embed/models/D001/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin diff --git a/core/embed/vendorheader/D001/vendorheader_unsafe_signed_dev.bin b/core/embed/models/D001/vendorheader/vendorheader_unsafe_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/D001/vendorheader_unsafe_signed_dev.bin rename to core/embed/models/D001/vendorheader/vendorheader_unsafe_signed_dev.bin diff --git a/core/embed/vendorheader/D001/vendorheader_unsafe_signed_prod.bin b/core/embed/models/D001/vendorheader/vendorheader_unsafe_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/D001/vendorheader_unsafe_signed_prod.bin rename to core/embed/models/D001/vendorheader/vendorheader_unsafe_signed_prod.bin diff --git a/core/embed/vendorheader/D001/vendorheader_unsafe_unsigned.bin b/core/embed/models/D001/vendorheader/vendorheader_unsafe_unsigned.bin similarity index 100% rename from core/embed/vendorheader/D001/vendorheader_unsafe_unsigned.bin rename to core/embed/models/D001/vendorheader/vendorheader_unsafe_unsigned.bin diff --git a/core/embed/vendorheader/D002/vendor_dev_DO_NOT_SIGN.json b/core/embed/models/D002/vendorheader/vendor_dev_DO_NOT_SIGN.json similarity index 100% rename from core/embed/vendorheader/D002/vendor_dev_DO_NOT_SIGN.json rename to core/embed/models/D002/vendorheader/vendor_dev_DO_NOT_SIGN.json diff --git a/core/embed/vendorheader/D002/vendor_dev_DO_NOT_SIGN.toif b/core/embed/models/D002/vendorheader/vendor_dev_DO_NOT_SIGN.toif similarity index 100% rename from core/embed/vendorheader/D002/vendor_dev_DO_NOT_SIGN.toif rename to core/embed/models/D002/vendorheader/vendor_dev_DO_NOT_SIGN.toif diff --git a/core/embed/vendorheader/D002/vendor_unsafe.json b/core/embed/models/D002/vendorheader/vendor_unsafe.json similarity index 100% rename from core/embed/vendorheader/D002/vendor_unsafe.json rename to core/embed/models/D002/vendorheader/vendor_unsafe.json diff --git a/core/embed/vendorheader/D002/vendor_unsafe.toif b/core/embed/models/D002/vendorheader/vendor_unsafe.toif similarity index 100% rename from core/embed/vendorheader/D002/vendor_unsafe.toif rename to core/embed/models/D002/vendorheader/vendor_unsafe.toif diff --git a/core/embed/vendorheader/D002/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin b/core/embed/models/D002/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/D002/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin rename to core/embed/models/D002/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin diff --git a/core/embed/vendorheader/D002/vendorheader_dev_DO_NOT_SIGN_unsigned.bin b/core/embed/models/D002/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin similarity index 100% rename from core/embed/vendorheader/D002/vendorheader_dev_DO_NOT_SIGN_unsigned.bin rename to core/embed/models/D002/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin diff --git a/core/embed/vendorheader/D002/vendorheader_unsafe_signed_dev.bin b/core/embed/models/D002/vendorheader/vendorheader_unsafe_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/D002/vendorheader_unsafe_signed_dev.bin rename to core/embed/models/D002/vendorheader/vendorheader_unsafe_signed_dev.bin diff --git a/core/embed/vendorheader/D002/vendorheader_unsafe_unsigned.bin b/core/embed/models/D002/vendorheader/vendorheader_unsafe_unsigned.bin similarity index 100% rename from core/embed/vendorheader/D002/vendorheader_unsafe_unsigned.bin rename to core/embed/models/D002/vendorheader/vendorheader_unsafe_unsigned.bin diff --git a/core/embed/vendorheader/T2B1/vendor_dev_DO_NOT_SIGN.json b/core/embed/models/T2B1/vendorheader/vendor_dev_DO_NOT_SIGN.json similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_dev_DO_NOT_SIGN.json rename to core/embed/models/T2B1/vendorheader/vendor_dev_DO_NOT_SIGN.json diff --git a/core/embed/vendorheader/T2B1/vendor_dev_DO_NOT_SIGN.toif b/core/embed/models/T2B1/vendorheader/vendor_dev_DO_NOT_SIGN.toif similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_dev_DO_NOT_SIGN.toif rename to core/embed/models/T2B1/vendorheader/vendor_dev_DO_NOT_SIGN.toif diff --git a/core/embed/vendorheader/T2B1/vendor_prodtest.json b/core/embed/models/T2B1/vendorheader/vendor_prodtest.json similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_prodtest.json rename to core/embed/models/T2B1/vendorheader/vendor_prodtest.json diff --git a/core/embed/vendorheader/T2B1/vendor_prodtest.toif b/core/embed/models/T2B1/vendorheader/vendor_prodtest.toif similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_prodtest.toif rename to core/embed/models/T2B1/vendorheader/vendor_prodtest.toif diff --git a/core/embed/vendorheader/T2B1/vendor_trezor.json b/core/embed/models/T2B1/vendorheader/vendor_trezor.json similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_trezor.json rename to core/embed/models/T2B1/vendorheader/vendor_trezor.json diff --git a/core/embed/vendorheader/T2B1/vendor_trezor.toif b/core/embed/models/T2B1/vendorheader/vendor_trezor.toif similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_trezor.toif rename to core/embed/models/T2B1/vendorheader/vendor_trezor.toif diff --git a/core/embed/vendorheader/T2B1/vendor_trezor_btconly.json b/core/embed/models/T2B1/vendorheader/vendor_trezor_btconly.json similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_trezor_btconly.json rename to core/embed/models/T2B1/vendorheader/vendor_trezor_btconly.json diff --git a/core/embed/vendorheader/T2B1/vendor_trezor_btconly.toif b/core/embed/models/T2B1/vendorheader/vendor_trezor_btconly.toif similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_trezor_btconly.toif rename to core/embed/models/T2B1/vendorheader/vendor_trezor_btconly.toif diff --git a/core/embed/vendorheader/T2B1/vendor_unsafe.json b/core/embed/models/T2B1/vendorheader/vendor_unsafe.json similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_unsafe.json rename to core/embed/models/T2B1/vendorheader/vendor_unsafe.json diff --git a/core/embed/vendorheader/T2B1/vendor_unsafe.toif b/core/embed/models/T2B1/vendorheader/vendor_unsafe.toif similarity index 100% rename from core/embed/vendorheader/T2B1/vendor_unsafe.toif rename to core/embed/models/T2B1/vendorheader/vendor_unsafe.toif diff --git a/core/embed/vendorheader/T2B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin b/core/embed/models/T2B1/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin b/core/embed/models/T2B1/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_prodtest_signed_prod.bin b/core/embed/models/T2B1/vendorheader/vendorheader_prodtest_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_prodtest_signed_prod.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_prodtest_signed_prod.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_prodtest_unsigned.bin b/core/embed/models/T2B1/vendorheader/vendorheader_prodtest_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_prodtest_unsigned.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_prodtest_unsigned.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_trezor_btconly_signed_prod.bin b/core/embed/models/T2B1/vendorheader/vendorheader_trezor_btconly_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_trezor_btconly_signed_prod.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_trezor_btconly_signed_prod.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_trezor_btconly_unsigned.bin b/core/embed/models/T2B1/vendorheader/vendorheader_trezor_btconly_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_trezor_btconly_unsigned.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_trezor_btconly_unsigned.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_trezor_signed_prod.bin b/core/embed/models/T2B1/vendorheader/vendorheader_trezor_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_trezor_signed_prod.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_trezor_signed_prod.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_trezor_unsigned.bin b/core/embed/models/T2B1/vendorheader/vendorheader_trezor_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_trezor_unsigned.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_trezor_unsigned.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_unsafe_signed_dev.bin b/core/embed/models/T2B1/vendorheader/vendorheader_unsafe_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_unsafe_signed_dev.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_unsafe_signed_dev.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_unsafe_signed_prod.bin b/core/embed/models/T2B1/vendorheader/vendorheader_unsafe_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_unsafe_signed_prod.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_unsafe_signed_prod.bin diff --git a/core/embed/vendorheader/T2B1/vendorheader_unsafe_unsigned.bin b/core/embed/models/T2B1/vendorheader/vendorheader_unsafe_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2B1/vendorheader_unsafe_unsigned.bin rename to core/embed/models/T2B1/vendorheader/vendorheader_unsafe_unsigned.bin diff --git a/core/embed/vendorheader/T2T1/vendor_dev_DO_NOT_SIGN.json b/core/embed/models/T2T1/vendorheader/vendor_dev_DO_NOT_SIGN.json similarity index 100% rename from core/embed/vendorheader/T2T1/vendor_dev_DO_NOT_SIGN.json rename to core/embed/models/T2T1/vendorheader/vendor_dev_DO_NOT_SIGN.json diff --git a/core/embed/vendorheader/T2T1/vendor_dev_DO_NOT_SIGN.toif b/core/embed/models/T2T1/vendorheader/vendor_dev_DO_NOT_SIGN.toif similarity index 100% rename from core/embed/vendorheader/T2T1/vendor_dev_DO_NOT_SIGN.toif rename to core/embed/models/T2T1/vendorheader/vendor_dev_DO_NOT_SIGN.toif diff --git a/core/embed/vendorheader/T2T1/vendor_prodtest.json b/core/embed/models/T2T1/vendorheader/vendor_prodtest.json similarity index 100% rename from core/embed/vendorheader/T2T1/vendor_prodtest.json rename to core/embed/models/T2T1/vendorheader/vendor_prodtest.json diff --git a/core/embed/vendorheader/T2T1/vendor_prodtest.toif b/core/embed/models/T2T1/vendorheader/vendor_prodtest.toif similarity index 100% rename from core/embed/vendorheader/T2T1/vendor_prodtest.toif rename to core/embed/models/T2T1/vendorheader/vendor_prodtest.toif diff --git a/core/embed/vendorheader/T2T1/vendor_satoshilabs.json b/core/embed/models/T2T1/vendorheader/vendor_satoshilabs.json similarity index 100% rename from core/embed/vendorheader/T2T1/vendor_satoshilabs.json rename to core/embed/models/T2T1/vendorheader/vendor_satoshilabs.json diff --git a/core/embed/vendorheader/T2T1/vendor_satoshilabs.toif b/core/embed/models/T2T1/vendorheader/vendor_satoshilabs.toif similarity index 100% rename from core/embed/vendorheader/T2T1/vendor_satoshilabs.toif rename to core/embed/models/T2T1/vendorheader/vendor_satoshilabs.toif diff --git a/core/embed/vendorheader/T2T1/vendor_unsafe.json b/core/embed/models/T2T1/vendorheader/vendor_unsafe.json similarity index 100% rename from core/embed/vendorheader/T2T1/vendor_unsafe.json rename to core/embed/models/T2T1/vendorheader/vendor_unsafe.json diff --git a/core/embed/vendorheader/T2T1/vendor_unsafe.toif b/core/embed/models/T2T1/vendorheader/vendor_unsafe.toif similarity index 100% rename from core/embed/vendorheader/T2T1/vendor_unsafe.toif rename to core/embed/models/T2T1/vendorheader/vendor_unsafe.toif diff --git a/core/embed/vendorheader/T2T1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin b/core/embed/models/T2T1/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin diff --git a/core/embed/vendorheader/T2T1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin b/core/embed/models/T2T1/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin diff --git a/core/embed/vendorheader/T2T1/vendorheader_prodtest_signed_prod.bin b/core/embed/models/T2T1/vendorheader/vendorheader_prodtest_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_prodtest_signed_prod.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_prodtest_signed_prod.bin diff --git a/core/embed/vendorheader/T2T1/vendorheader_prodtest_unsigned.bin b/core/embed/models/T2T1/vendorheader/vendorheader_prodtest_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_prodtest_unsigned.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_prodtest_unsigned.bin diff --git a/core/embed/vendorheader/T2T1/vendorheader_satoshilabs_signed_prod.bin b/core/embed/models/T2T1/vendorheader/vendorheader_satoshilabs_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_satoshilabs_signed_prod.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_satoshilabs_signed_prod.bin diff --git a/core/embed/vendorheader/T2T1/vendorheader_satoshilabs_unsigned.bin b/core/embed/models/T2T1/vendorheader/vendorheader_satoshilabs_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_satoshilabs_unsigned.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_satoshilabs_unsigned.bin diff --git a/core/embed/vendorheader/T2T1/vendorheader_unsafe_signed_dev.bin b/core/embed/models/T2T1/vendorheader/vendorheader_unsafe_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_unsafe_signed_dev.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_unsafe_signed_dev.bin diff --git a/core/embed/vendorheader/T2T1/vendorheader_unsafe_signed_prod.bin b/core/embed/models/T2T1/vendorheader/vendorheader_unsafe_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_unsafe_signed_prod.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_unsafe_signed_prod.bin diff --git a/core/embed/vendorheader/T2T1/vendorheader_unsafe_unsigned.bin b/core/embed/models/T2T1/vendorheader/vendorheader_unsafe_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T2T1/vendorheader_unsafe_unsigned.bin rename to core/embed/models/T2T1/vendorheader/vendorheader_unsafe_unsigned.bin diff --git a/core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.json b/core/embed/models/T3B1/vendorheader/vendor_dev_DO_NOT_SIGN.json similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.json rename to core/embed/models/T3B1/vendorheader/vendor_dev_DO_NOT_SIGN.json diff --git a/core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.toif b/core/embed/models/T3B1/vendorheader/vendor_dev_DO_NOT_SIGN.toif similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_dev_DO_NOT_SIGN.toif rename to core/embed/models/T3B1/vendorheader/vendor_dev_DO_NOT_SIGN.toif diff --git a/core/embed/vendorheader/T3B1/vendor_prodtest.json b/core/embed/models/T3B1/vendorheader/vendor_prodtest.json similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_prodtest.json rename to core/embed/models/T3B1/vendorheader/vendor_prodtest.json diff --git a/core/embed/vendorheader/T3B1/vendor_prodtest.toif b/core/embed/models/T3B1/vendorheader/vendor_prodtest.toif similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_prodtest.toif rename to core/embed/models/T3B1/vendorheader/vendor_prodtest.toif diff --git a/core/embed/vendorheader/T3B1/vendor_trezor.json b/core/embed/models/T3B1/vendorheader/vendor_trezor.json similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_trezor.json rename to core/embed/models/T3B1/vendorheader/vendor_trezor.json diff --git a/core/embed/vendorheader/T3B1/vendor_trezor.toif b/core/embed/models/T3B1/vendorheader/vendor_trezor.toif similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_trezor.toif rename to core/embed/models/T3B1/vendorheader/vendor_trezor.toif diff --git a/core/embed/vendorheader/T3B1/vendor_trezor_btconly.json b/core/embed/models/T3B1/vendorheader/vendor_trezor_btconly.json similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_trezor_btconly.json rename to core/embed/models/T3B1/vendorheader/vendor_trezor_btconly.json diff --git a/core/embed/vendorheader/T3B1/vendor_trezor_btconly.toif b/core/embed/models/T3B1/vendorheader/vendor_trezor_btconly.toif similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_trezor_btconly.toif rename to core/embed/models/T3B1/vendorheader/vendor_trezor_btconly.toif diff --git a/core/embed/vendorheader/T3B1/vendor_unsafe.json b/core/embed/models/T3B1/vendorheader/vendor_unsafe.json similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_unsafe.json rename to core/embed/models/T3B1/vendorheader/vendor_unsafe.json diff --git a/core/embed/vendorheader/T3B1/vendor_unsafe.toif b/core/embed/models/T3B1/vendorheader/vendor_unsafe.toif similarity index 100% rename from core/embed/vendorheader/T3B1/vendor_unsafe.toif rename to core/embed/models/T3B1/vendorheader/vendor_unsafe.toif diff --git a/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin b/core/embed/models/T3B1/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin rename to core/embed/models/T3B1/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin diff --git a/core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin b/core/embed/models/T3B1/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3B1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin rename to core/embed/models/T3B1/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin diff --git a/core/embed/vendorheader/T3B1/vendorheader_prodtest_unsigned.bin b/core/embed/models/T3B1/vendorheader/vendorheader_prodtest_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3B1/vendorheader_prodtest_unsigned.bin rename to core/embed/models/T3B1/vendorheader/vendorheader_prodtest_unsigned.bin diff --git a/core/embed/vendorheader/T3B1/vendorheader_trezor_btconly_unsigned.bin b/core/embed/models/T3B1/vendorheader/vendorheader_trezor_btconly_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3B1/vendorheader_trezor_btconly_unsigned.bin rename to core/embed/models/T3B1/vendorheader/vendorheader_trezor_btconly_unsigned.bin diff --git a/core/embed/vendorheader/T3B1/vendorheader_trezor_unsigned.bin b/core/embed/models/T3B1/vendorheader/vendorheader_trezor_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3B1/vendorheader_trezor_unsigned.bin rename to core/embed/models/T3B1/vendorheader/vendorheader_trezor_unsigned.bin diff --git a/core/embed/vendorheader/T3B1/vendorheader_unsafe_signed_dev.bin b/core/embed/models/T3B1/vendorheader/vendorheader_unsafe_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/T3B1/vendorheader_unsafe_signed_dev.bin rename to core/embed/models/T3B1/vendorheader/vendorheader_unsafe_signed_dev.bin diff --git a/core/embed/vendorheader/T3B1/vendorheader_unsafe_unsigned.bin b/core/embed/models/T3B1/vendorheader/vendorheader_unsafe_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3B1/vendorheader_unsafe_unsigned.bin rename to core/embed/models/T3B1/vendorheader/vendorheader_unsafe_unsigned.bin diff --git a/core/embed/vendorheader/T3T1/vendor_dev_DO_NOT_SIGN.json b/core/embed/models/T3T1/vendorheader/vendor_dev_DO_NOT_SIGN.json similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_dev_DO_NOT_SIGN.json rename to core/embed/models/T3T1/vendorheader/vendor_dev_DO_NOT_SIGN.json diff --git a/core/embed/vendorheader/T3T1/vendor_dev_DO_NOT_SIGN.toif b/core/embed/models/T3T1/vendorheader/vendor_dev_DO_NOT_SIGN.toif similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_dev_DO_NOT_SIGN.toif rename to core/embed/models/T3T1/vendorheader/vendor_dev_DO_NOT_SIGN.toif diff --git a/core/embed/vendorheader/T3T1/vendor_prodtest.json b/core/embed/models/T3T1/vendorheader/vendor_prodtest.json similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_prodtest.json rename to core/embed/models/T3T1/vendorheader/vendor_prodtest.json diff --git a/core/embed/vendorheader/T3T1/vendor_prodtest.toif b/core/embed/models/T3T1/vendorheader/vendor_prodtest.toif similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_prodtest.toif rename to core/embed/models/T3T1/vendorheader/vendor_prodtest.toif diff --git a/core/embed/vendorheader/T3T1/vendor_trezor.json b/core/embed/models/T3T1/vendorheader/vendor_trezor.json similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_trezor.json rename to core/embed/models/T3T1/vendorheader/vendor_trezor.json diff --git a/core/embed/vendorheader/T3T1/vendor_trezor.toif b/core/embed/models/T3T1/vendorheader/vendor_trezor.toif similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_trezor.toif rename to core/embed/models/T3T1/vendorheader/vendor_trezor.toif diff --git a/core/embed/vendorheader/T3T1/vendor_trezor_btconly.json b/core/embed/models/T3T1/vendorheader/vendor_trezor_btconly.json similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_trezor_btconly.json rename to core/embed/models/T3T1/vendorheader/vendor_trezor_btconly.json diff --git a/core/embed/vendorheader/T3T1/vendor_trezor_btconly.toif b/core/embed/models/T3T1/vendorheader/vendor_trezor_btconly.toif similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_trezor_btconly.toif rename to core/embed/models/T3T1/vendorheader/vendor_trezor_btconly.toif diff --git a/core/embed/vendorheader/T3T1/vendor_unsafe.json b/core/embed/models/T3T1/vendorheader/vendor_unsafe.json similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_unsafe.json rename to core/embed/models/T3T1/vendorheader/vendor_unsafe.json diff --git a/core/embed/vendorheader/T3T1/vendor_unsafe.toif b/core/embed/models/T3T1/vendorheader/vendor_unsafe.toif similarity index 100% rename from core/embed/vendorheader/T3T1/vendor_unsafe.toif rename to core/embed/models/T3T1/vendorheader/vendor_unsafe.toif diff --git a/core/embed/vendorheader/T3T1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin b/core/embed/models/T3T1/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_dev_DO_NOT_SIGN_signed_dev.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin b/core/embed/models/T3T1/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_dev_DO_NOT_SIGN_unsigned.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_dev_DO_NOT_SIGN_unsigned.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_prodtest_signed_prod.bin b/core/embed/models/T3T1/vendorheader/vendorheader_prodtest_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_prodtest_signed_prod.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_prodtest_signed_prod.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_prodtest_unsigned.bin b/core/embed/models/T3T1/vendorheader/vendorheader_prodtest_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_prodtest_unsigned.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_prodtest_unsigned.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_trezor_btconly_signed_prod.bin b/core/embed/models/T3T1/vendorheader/vendorheader_trezor_btconly_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_trezor_btconly_signed_prod.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_trezor_btconly_signed_prod.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_trezor_btconly_unsigned.bin b/core/embed/models/T3T1/vendorheader/vendorheader_trezor_btconly_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_trezor_btconly_unsigned.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_trezor_btconly_unsigned.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_trezor_signed_prod.bin b/core/embed/models/T3T1/vendorheader/vendorheader_trezor_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_trezor_signed_prod.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_trezor_signed_prod.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_trezor_unsigned.bin b/core/embed/models/T3T1/vendorheader/vendorheader_trezor_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_trezor_unsigned.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_trezor_unsigned.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_unsafe_signed_dev.bin b/core/embed/models/T3T1/vendorheader/vendorheader_unsafe_signed_dev.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_unsafe_signed_dev.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_unsafe_signed_dev.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_unsafe_signed_prod.bin b/core/embed/models/T3T1/vendorheader/vendorheader_unsafe_signed_prod.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_unsafe_signed_prod.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_unsafe_signed_prod.bin diff --git a/core/embed/vendorheader/T3T1/vendorheader_unsafe_unsigned.bin b/core/embed/models/T3T1/vendorheader/vendorheader_unsafe_unsigned.bin similarity index 100% rename from core/embed/vendorheader/T3T1/vendorheader_unsafe_unsigned.bin rename to core/embed/models/T3T1/vendorheader/vendorheader_unsafe_unsigned.bin diff --git a/core/embed/vendorheader/generate.sh b/core/tools/generate_vendorheader.sh similarity index 69% rename from core/embed/vendorheader/generate.sh rename to core/tools/generate_vendorheader.sh index a2f115d8de..981032a7aa 100755 --- a/core/embed/vendorheader/generate.sh +++ b/core/tools/generate_vendorheader.sh @@ -4,8 +4,8 @@ set -e cd $(dirname $0) -BUILDVH=$(realpath ../../tools/build_vendorheader) -BINCTL=$(realpath ../../tools/headertool.py) +BUILDVH=$(realpath ./build_vendorheader) +BINCTL=$(realpath ./headertool.py) for arg in "$@"; do if [ "$arg" == "--check" ]; then @@ -16,10 +16,21 @@ for arg in "$@"; do fi done -MODELS=(T2T1 T2B1 T3T1 T3B1 D001 D002) +cd ../embed/models/ + +# Find directories and store them in an array +dirs=($(find . -maxdepth 1 -type d ! -name '.' | sed 's|^\./||')) + +# Filter directories that have 'vendorheader' subdirectory +MODELS=() +for dir in "${dirs[@]}"; do + if [ -d "$dir/vendorheader" ]; then + MODELS+=("$dir") + fi +done for MODEL in ${MODELS[@]}; do - cd $MODEL + cd ./$MODEL/vendorheader echo "Generating vendor headers for $MODEL" # construct all vendor headers for fn in *.json; do @@ -42,5 +53,5 @@ for MODEL in ${MODELS[@]}; do fi cp -a "$TMPDIR/$DEST_NAME" "$DEST_NAME" done - cd .. + cd ../../ done diff --git a/python/tests/test_firmware.py b/python/tests/test_firmware.py index c3736705a6..ff086bb0c4 100644 --- a/python/tests/test_firmware.py +++ b/python/tests/test_firmware.py @@ -28,8 +28,9 @@ HERE.parent.parent / "core" / "embed" - / "vendorheader" + / "models" / "T2T1" + / "vendorheader" / "vendorheader_satoshilabs_signed_prod.bin" ) From 655478c3e0dc650b01a5bf60e2e67656258555b1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 2 Jul 2024 10:48:36 +0200 Subject: [PATCH 420/626] fix(core): fix missing TS3 font in bootloader [no changelog] --- core/SConscript.bootloader | 2 +- core/SConscript.bootloader_ci | 2 +- core/SConscript.bootloader_emu | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index b9d700d832..53d1a88024 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -42,7 +42,7 @@ if TREZOR_MODEL in ('R', 'T3B1'): FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO='Font_PixelOperator_Regular_8' FONT_BIG='Font_PixelOperator_Regular_8' - FONT_NORMAL_UPPER=None + FONT_NORMAL_UPPER='Font_PixelOperator_Regular_8_upper' FONT_BOLD_UPPER=None FONT_SUB=None elif TREZOR_MODEL in ('T', 'DISC1', 'DISC2'): diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 04e8be1c11..27734cc3c9 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -37,7 +37,7 @@ if TREZOR_MODEL in ('1', 'R', 'T3B1'): FONT_BOLD=None FONT_MONO='Font_PixelOperatorMono_Regular_8' FONT_BIG='Font_PixelOperator_Regular_8' - FONT_NORMAL_UPPER=None + FONT_NORMAL_UPPER='Font_PixelOperator_Regular_8_upper' FONT_BOLD_UPPER=None FONT_SUB=None elif TREZOR_MODEL in ('T',): diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index ccfb002580..fb254c8765 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -39,7 +39,7 @@ if TREZOR_MODEL in ('1', 'R', 'T3B1'): FONT_BOLD='Font_PixelOperator_Bold_8' FONT_MONO='Font_PixelOperator_Regular_8' FONT_BIG='Font_PixelOperator_Regular_8' - FONT_NORMAL_UPPER=None + FONT_NORMAL_UPPER='Font_PixelOperator_Regular_8_upper' FONT_BOLD_UPPER=None FONT_SUB=None elif TREZOR_MODEL in ('T', 'DISC2'): From 03199cd553852868ca27231b73bc54c18f9e2d19 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 15 Jul 2024 15:24:01 +0200 Subject: [PATCH 421/626] fix(core): include QA bootloader when building for fw for device with DEV bootloader [no changelog] --- core/SConscript.firmware | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 3097e73bbb..9cd97ee350 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -876,7 +876,7 @@ env.Append(LINKFLAGS=f' -l{RUST_LIB}') MODEL_IDENTIFIER = models.get_model_identifier(TREZOR_MODEL) BOOTLOADER_SUFFIX = MODEL_IDENTIFIER -if BOOTLOADER_QA: +if BOOTLOADER_QA or BOOTLOADER_DEVEL: BOOTLOADER_SUFFIX += '_qa' # select vendor header From 354dad617d621ddd78d2f685cea56c4bdc598c0c Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 10 Jul 2024 15:18:21 +0200 Subject: [PATCH 422/626] fix(core): fix vector table alignment on STM32U5 [no changelog] --- core/embed/boardloader/main.c | 2 +- core/embed/boardloader/memory_stm32u5a.ld | 2 +- core/embed/bootloader/emulator.c | 4 ++-- core/embed/bootloader/emulator.h | 2 +- core/embed/bootloader/main.c | 2 +- core/embed/bootloader/memory_stm32u5a.ld | 2 +- core/embed/bootloader_ci/main.c | 2 +- core/embed/bootloader_ci/memory_stm32u5a.ld | 2 +- core/embed/firmware/memory_DISC2.ld | 2 +- core/embed/lib/image.c | 12 +++++++++++- core/embed/lib/image.h | 3 +++ core/embed/models/D001/model_D001.h | 1 + core/embed/models/D002/model_D002.h | 1 + core/embed/models/T1B1/model_T1B1.h | 1 + core/embed/models/T2B1/model_T2B1.h | 1 + core/embed/models/T2T1/model_T2T1.h | 1 + core/embed/models/T3B1/model_T3B1.h | 1 + core/embed/models/T3T1/model_T3T1.h | 1 + core/embed/prodtest/memory_stm32u5a.ld | 2 +- core/embed/reflash/memory_stm32u5a.ld | 2 +- core/embed/trezorhal/stm32f4/supervise.c | 3 ++- python/src/trezorlib/firmware/core.py | 17 +++++++++++++++-- python/src/trezorlib/firmware/models.py | 14 ++++++++++++++ 23 files changed, 64 insertions(+), 16 deletions(-) diff --git a/core/embed/boardloader/main.c b/core/embed/boardloader/main.c index 6da1c2d8ee..4f7fa1c50c 100644 --- a/core/embed/boardloader/main.c +++ b/core/embed/boardloader/main.c @@ -340,7 +340,7 @@ int main(void) { mpu_config_off(); // g_boot_command is preserved on STM32U5 - jump_to(BOOTLOADER_START + IMAGE_HEADER_SIZE); + jump_to(IMAGE_CODE_ALIGN(BOOTLOADER_START + IMAGE_HEADER_SIZE)); return 0; } diff --git a/core/embed/boardloader/memory_stm32u5a.ld b/core/embed/boardloader/memory_stm32u5a.ld index 756b43b143..f91099d006 100644 --- a/core/embed/boardloader/memory_stm32u5a.ld +++ b/core/embed/boardloader/memory_stm32u5a.ld @@ -46,7 +46,7 @@ boot_args_start = ORIGIN(BOOT_ARGS); boot_args_end = ORIGIN(BOOT_ARGS) + LENGTH(BOOT_ARGS); SECTIONS { - .vector_table : ALIGN(512) { + .vector_table : ALIGN(1024) { KEEP(*(.vector_table)); } >FLASH AT>FLASH diff --git a/core/embed/bootloader/emulator.c b/core/embed/bootloader/emulator.c index c26ecec66a..fb570b0c9b 100644 --- a/core/embed/bootloader/emulator.c +++ b/core/embed/bootloader/emulator.c @@ -167,14 +167,14 @@ __attribute__((noreturn)) int main(int argc, char **argv) { bootloader_main(); hal_delay(3000); - jump_to(NULL); + jump_to(0); } void mpu_config_bootloader(void) {} void mpu_config_off(void) {} -__attribute__((noreturn)) void jump_to(void *addr) { +__attribute__((noreturn)) void jump_to(uint32_t address) { bool storage_is_erased = storage_empty(&STORAGE_AREAS[0]) && storage_empty(&STORAGE_AREAS[1]); diff --git a/core/embed/bootloader/emulator.h b/core/embed/bootloader/emulator.h index d73b8bed4a..9facab471c 100644 --- a/core/embed/bootloader/emulator.h +++ b/core/embed/bootloader/emulator.h @@ -16,7 +16,7 @@ void set_core_clock(int); void mpu_config_bootloader(void); void mpu_config_off(void); void display_set_little_endian(void); -void jump_to(void *addr); +void jump_to(uint32_t address); void ensure_compatible_settings(void); #endif diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 3f8137910b..cec5b58b7f 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -349,7 +349,7 @@ void real_jump_to_firmware(void) { ensure_compatible_settings(); mpu_config_off(); - jump_to(FIRMWARE_START + vhdr.hdrlen + IMAGE_HEADER_SIZE); + jump_to(IMAGE_CODE_ALIGN(FIRMWARE_START + vhdr.hdrlen + IMAGE_HEADER_SIZE)); } #ifdef STM32U5 diff --git a/core/embed/bootloader/memory_stm32u5a.ld b/core/embed/bootloader/memory_stm32u5a.ld index c45ed12735..e34a7d53e1 100644 --- a/core/embed/bootloader/memory_stm32u5a.ld +++ b/core/embed/bootloader/memory_stm32u5a.ld @@ -52,7 +52,7 @@ SECTIONS { KEEP(*(.header)); } >FLASH AT>FLASH - .flash : ALIGN(512) { + .flash : ALIGN(1024) { KEEP(*(.vector_table)); . = ALIGN(4); *(.text*); diff --git a/core/embed/bootloader_ci/main.c b/core/embed/bootloader_ci/main.c index f59cc46784..e58a1a95b2 100644 --- a/core/embed/bootloader_ci/main.c +++ b/core/embed/bootloader_ci/main.c @@ -294,7 +294,7 @@ int main(void) { // do not check any trust flags on header, proceed mpu_config_off(); - jump_to(FIRMWARE_START + vhdr.hdrlen + IMAGE_HEADER_SIZE); + jump_to(IMAGE_CODE_ALIGN(FIRMWARE_START + vhdr.hdrlen + IMAGE_HEADER_SIZE)); return 0; } diff --git a/core/embed/bootloader_ci/memory_stm32u5a.ld b/core/embed/bootloader_ci/memory_stm32u5a.ld index 9803e696d9..accf765861 100644 --- a/core/embed/bootloader_ci/memory_stm32u5a.ld +++ b/core/embed/bootloader_ci/memory_stm32u5a.ld @@ -52,7 +52,7 @@ SECTIONS { KEEP(*(.header)); } >FLASH AT>FLASH - .flash : ALIGN(512) { + .flash : ALIGN(1024) { KEEP(*(.vector_table)); . = ALIGN(4); *(.text*); diff --git a/core/embed/firmware/memory_DISC2.ld b/core/embed/firmware/memory_DISC2.ld index a79d3e078f..ae6d127292 100644 --- a/core/embed/firmware/memory_DISC2.ld +++ b/core/embed/firmware/memory_DISC2.ld @@ -60,7 +60,7 @@ SECTIONS { KEEP(*(.header)); } >FLASH AT>FLASH - .flash : ALIGN(512) { + .flash : ALIGN(1024) { KEEP(*(.vector_table)); . = ALIGN(4); *(.text*); diff --git a/core/embed/lib/image.c b/core/embed/lib/image.c index c2eaad3ab8..9e0dd20f1a 100644 --- a/core/embed/lib/image.c +++ b/core/embed/lib/image.c @@ -245,9 +245,19 @@ secbool check_image_contents(const image_header *const hdr, uint32_t firstskip, } // Check the firmware integrity, calculate and compare hashes - size_t offset = firstskip; + size_t offset = IMAGE_CODE_ALIGN(firstskip); size_t end_offset = offset + hdr->codelen; + // Check area between headers and code + uint32_t padding_size = offset - firstskip; + const uint8_t *addr = + (uint8_t *)flash_area_get_address(area, firstskip, padding_size); + for (size_t i = 0; i < padding_size; i++) { + if (*addr != 0) { + return secfalse; + } + } + while (offset < end_offset) { size_t bytes_to_check = MIN(IMAGE_CHUNK_SIZE - (offset % IMAGE_CHUNK_SIZE), end_offset - offset); diff --git a/core/embed/lib/image.h b/core/embed/lib/image.h index a385b54ee8..38869559f6 100644 --- a/core/embed/lib/image.h +++ b/core/embed/lib/image.h @@ -35,6 +35,9 @@ #define FIRMWARE_IMAGE_MAGIC 0x465A5254 // TRZF +#define IMAGE_CODE_ALIGN(addr) \ + ((((uint32_t)(uintptr_t)addr) + (CODE_ALIGNMENT - 1)) & ~(CODE_ALIGNMENT - 1)) + typedef struct { uint32_t magic; uint32_t hdrlen; diff --git a/core/embed/models/D001/model_D001.h b/core/embed/models/D001/model_D001.h index 5871173426..c0ed207687 100644 --- a/core/embed/models/D001/model_D001.h +++ b/core/embed/models/D001/model_D001.h @@ -23,6 +23,7 @@ #define IMAGE_CHUNK_SIZE (128 * 1024) #define IMAGE_HASH_BLAKE2S #define BOARD_CAPABILITIES_ADDR 0x0800BF00 +#define CODE_ALIGNMENT 0x200 // SHARED WITH MAKEFILE #define FLASH_START 0x08000000 diff --git a/core/embed/models/D002/model_D002.h b/core/embed/models/D002/model_D002.h index fbbde2c9af..217974ca69 100644 --- a/core/embed/models/D002/model_D002.h +++ b/core/embed/models/D002/model_D002.h @@ -26,6 +26,7 @@ #define IMAGE_CHUNK_SIZE SIZE_256K #define IMAGE_HASH_SHA256 #define BOARD_CAPABILITIES_ADDR 0x0C00FF00 +#define CODE_ALIGNMENT 0x400 // SHARED WITH MAKEFILE #define FLASH_START 0x0C000000 diff --git a/core/embed/models/T1B1/model_T1B1.h b/core/embed/models/T1B1/model_T1B1.h index e54613a03e..e5006b01e4 100644 --- a/core/embed/models/T1B1/model_T1B1.h +++ b/core/embed/models/T1B1/model_T1B1.h @@ -11,6 +11,7 @@ #define IMAGE_CHUNK_SIZE (64 * 1024) #define IMAGE_HASH_SHA256 +#define CODE_ALIGNMENT 0x200 // SHARED WITH MAKEFILE #define FLASH_START 0x08000000 diff --git a/core/embed/models/T2B1/model_T2B1.h b/core/embed/models/T2B1/model_T2B1.h index a0bd57dc95..9b384605db 100644 --- a/core/embed/models/T2B1/model_T2B1.h +++ b/core/embed/models/T2B1/model_T2B1.h @@ -23,6 +23,7 @@ #define IMAGE_CHUNK_SIZE (128 * 1024) #define IMAGE_HASH_BLAKE2S #define BOARD_CAPABILITIES_ADDR 0x0800BF00 +#define CODE_ALIGNMENT 0x200 // SHARED WITH MAKEFILE #define FLASH_START 0x08000000 diff --git a/core/embed/models/T2T1/model_T2T1.h b/core/embed/models/T2T1/model_T2T1.h index f814644650..47c75409c9 100644 --- a/core/embed/models/T2T1/model_T2T1.h +++ b/core/embed/models/T2T1/model_T2T1.h @@ -23,6 +23,7 @@ #define IMAGE_CHUNK_SIZE (128 * 1024) #define IMAGE_HASH_BLAKE2S #define BOARD_CAPABILITIES_ADDR 0x0800BF00 +#define CODE_ALIGNMENT 0x200 // SHARED WITH MAKEFILE #define FLASH_START 0x08000000 diff --git a/core/embed/models/T3B1/model_T3B1.h b/core/embed/models/T3B1/model_T3B1.h index 007d2be771..3ed7683535 100644 --- a/core/embed/models/T3B1/model_T3B1.h +++ b/core/embed/models/T3B1/model_T3B1.h @@ -24,6 +24,7 @@ #define IMAGE_CHUNK_SIZE (128 * 1024) #define IMAGE_HASH_SHA256 #define BOARD_CAPABILITIES_ADDR 0x0C00FF00 +#define CODE_ALIGNMENT 0x200 // SHARED WITH MAKEFILE #define FLASH_START 0x0C000000 diff --git a/core/embed/models/T3T1/model_T3T1.h b/core/embed/models/T3T1/model_T3T1.h index e876159dc6..28cf69b542 100644 --- a/core/embed/models/T3T1/model_T3T1.h +++ b/core/embed/models/T3T1/model_T3T1.h @@ -24,6 +24,7 @@ #define IMAGE_CHUNK_SIZE (128 * 1024) #define IMAGE_HASH_SHA256 #define BOARD_CAPABILITIES_ADDR 0x0C00FF00 +#define CODE_ALIGNMENT 0x200 // SHARED WITH MAKEFILE #define FLASH_START 0x0C000000 diff --git a/core/embed/prodtest/memory_stm32u5a.ld b/core/embed/prodtest/memory_stm32u5a.ld index 1cdefad795..fa303b5d4f 100644 --- a/core/embed/prodtest/memory_stm32u5a.ld +++ b/core/embed/prodtest/memory_stm32u5a.ld @@ -59,7 +59,7 @@ SECTIONS { KEEP(*(.header)); } >FLASH AT>FLASH - .flash : ALIGN(512) { + .flash : ALIGN(1024) { KEEP(*(.vector_table)); . = ALIGN(4); *(.text*); diff --git a/core/embed/reflash/memory_stm32u5a.ld b/core/embed/reflash/memory_stm32u5a.ld index be0db29b4b..e03a321847 100644 --- a/core/embed/reflash/memory_stm32u5a.ld +++ b/core/embed/reflash/memory_stm32u5a.ld @@ -60,7 +60,7 @@ SECTIONS { KEEP(*(.header)); } >FLASH AT>FLASH - .flash : ALIGN(512) { + .flash : ALIGN(1024) { KEEP(*(.vector_table)); . = ALIGN(4); *(.text*); diff --git a/core/embed/trezorhal/stm32f4/supervise.c b/core/embed/trezorhal/stm32f4/supervise.c index e3190a3917..0ca4483062 100644 --- a/core/embed/trezorhal/stm32f4/supervise.c +++ b/core/embed/trezorhal/stm32f4/supervise.c @@ -22,7 +22,8 @@ __attribute__((noreturn)) static void _reboot_to_bootloader( __attribute__((noreturn)) static void _reboot_to_bootloader( boot_command_t boot_command) { mpu_config_bootloader(); - jump_to_with_flag(BOOTLOADER_START + IMAGE_HEADER_SIZE, boot_command); + jump_to_with_flag(IMAGE_CODE_ALIGN(BOOTLOADER_START + IMAGE_HEADER_SIZE), + boot_command); for (;;) ; } diff --git a/python/src/trezorlib/firmware/core.py b/python/src/trezorlib/firmware/core.py index 872787bb7a..eda8d0f7f9 100644 --- a/python/src/trezorlib/firmware/core.py +++ b/python/src/trezorlib/firmware/core.py @@ -103,19 +103,32 @@ class FirmwareImage(Struct): Consists of firmware header and code block. This is the expected format of firmware binaries for Trezor One, or bootloader images - for Trezor T.""" + for Trezor core models.""" header: FirmwareHeader = subcon(FirmwareHeader) + _header_end: int _code_offset: int code: bytes SUBCON = c.Struct( "header" / FirmwareHeader.SUBCON, + "_header_end" / c.Tell, + "padding" + / c.Padding( + lambda this: FirmwareImage.calc_padding( + this.header.hw_model, this._header_end + ) + ), "_code_offset" / c.Tell, "code" / c.Bytes(c.this.header.code_length), c.Terminated, ) + @staticmethod + def calc_padding(hw_model: bytes, len: int) -> int: + alignment = Model.from_hw_model(hw_model).code_alignment() + return ((len + alignment - 1) & ~(alignment - 1)) - len + def get_hash_params(self) -> "util.FirmwareHashParameters": return Model.from_hw_model(self.header.hw_model).hash_params() @@ -167,7 +180,7 @@ def digest(self) -> bytes: class VendorFirmware(Struct): """Firmware image prefixed by a vendor header. - This is the expected format of firmware binaries for Trezor T.""" + This is the expected format of firmware binaries for Trezor core models.""" vendor_header: VendorHeader = subcon(VendorHeader) firmware: FirmwareImage = subcon(FirmwareImage) diff --git a/python/src/trezorlib/firmware/models.py b/python/src/trezorlib/firmware/models.py index 46d88cdb73..3d859328b8 100644 --- a/python/src/trezorlib/firmware/models.py +++ b/python/src/trezorlib/firmware/models.py @@ -65,6 +65,9 @@ def model_keys(self, dev_keys: bool = False) -> "ModelKeys": def hash_params(self) -> "FirmwareHashParameters": return MODEL_HASH_PARAMS_MAP[self] + def code_alignment(self) -> int: + return MODEL_CODE_ALIGNMENT_MAP[self] + @dataclass class ModelKeys: @@ -331,6 +334,17 @@ class ModelKeys: Model.D002: D002_HASH_PARAMS, } + +MODEL_CODE_ALIGNMENT_MAP = { + Model.T1B1: 0x200, + Model.T2T1: 0x200, + Model.T2B1: 0x200, + Model.T3T1: 0x200, + Model.T3B1: 0x200, + Model.D001: 0x200, + Model.D002: 0x400, +} + # aliases TREZOR_ONE_V1V2 = LEGACY_V1V2 From 7e26e1df151ad9fd889e1e0524ffab3c1f31d68a Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 9 Jul 2024 23:47:00 +0200 Subject: [PATCH 423/626] chore(core/rust): drop unused ui_bounds [no changelog] --- core/embed/rust/Cargo.toml | 1 - core/embed/rust/librust_qstr.h | 1 - core/embed/rust/src/ui/component/bar.rs | 5 --- core/embed/rust/src/ui/component/base.rs | 29 --------------- core/embed/rust/src/ui/component/border.rs | 5 --- .../rust/src/ui/component/cached_jpeg.rs | 5 --- core/embed/rust/src/ui/component/image.rs | 16 --------- core/embed/rust/src/ui/component/jpeg.rs | 5 --- core/embed/rust/src/ui/component/label.rs | 5 --- core/embed/rust/src/ui/component/map.rs | 10 ------ core/embed/rust/src/ui/component/maybe.rs | 6 ---- core/embed/rust/src/ui/component/qr_code.rs | 5 --- .../rust/src/ui/component/text/formatted.rs | 5 --- .../rust/src/ui/component/text/paragraphs.rs | 14 -------- core/embed/rust/src/ui/layout/obj.rs | 36 ------------------- .../src/ui/model_mercury/bootloader/intro.rs | 5 --- .../src/ui/model_mercury/bootloader/menu.rs | 7 ---- .../component/address_details.rs | 8 ----- .../ui/model_mercury/component/bl_confirm.rs | 6 ---- .../src/ui/model_mercury/component/button.rs | 5 --- .../src/ui/model_mercury/component/fido.rs | 7 ---- .../src/ui/model_mercury/component/footer.rs | 5 --- .../src/ui/model_mercury/component/frame.rs | 9 ----- .../ui/model_mercury/component/homescreen.rs | 6 ---- .../model_mercury/component/keyboard/bip39.rs | 5 --- .../component/keyboard/mnemonic.rs | 11 ------ .../component/keyboard/passphrase.rs | 17 --------- .../model_mercury/component/keyboard/pin.rs | 19 ---------- .../component/keyboard/slip39.rs | 5 --- .../component/keyboard/word_count.rs | 7 ---- .../model_mercury/component/number_input.rs | 14 -------- .../component/number_input_slider.rs | 13 ------- .../ui/model_mercury/component/progress.rs | 7 ---- .../src/ui/model_mercury/component/scroll.rs | 5 --- .../model_mercury/component/set_brightness.rs | 5 --- .../ui/model_mercury/component/share_words.rs | 6 ---- .../component/swipe_up_screen.rs | 5 --- .../model_mercury/component/vertical_menu.rs | 5 --- .../rust/src/ui/model_tr/bootloader/intro.rs | 8 ----- .../rust/src/ui/model_tr/bootloader/menu.rs | 5 --- .../ui/model_tr/component/address_details.rs | 5 --- .../src/ui/model_tr/component/bl_confirm.rs | 5 --- .../src/ui/model_tr/component/progress.rs | 7 ---- .../rust/src/ui/model_tt/bootloader/intro.rs | 5 --- .../rust/src/ui/model_tt/bootloader/menu.rs | 7 ---- .../ui/model_tt/component/address_details.rs | 9 ----- .../src/ui/model_tt/component/bl_confirm.rs | 6 ---- .../rust/src/ui/model_tt/component/button.rs | 5 --- .../rust/src/ui/model_tt/component/dialog.rs | 13 ------- .../rust/src/ui/model_tt/component/fido.rs | 7 ---- .../rust/src/ui/model_tt/component/frame.rs | 8 ----- .../ui/model_tt/component/homescreen/mod.rs | 6 ---- .../ui/model_tt/component/keyboard/bip39.rs | 5 --- .../model_tt/component/keyboard/mnemonic.rs | 10 ------ .../model_tt/component/keyboard/passphrase.rs | 16 --------- .../src/ui/model_tt/component/keyboard/pin.rs | 19 ---------- .../ui/model_tt/component/keyboard/slip39.rs | 5 --- .../model_tt/component/keyboard/word_count.rs | 7 ---- .../src/ui/model_tt/component/number_input.rs | 16 --------- .../model_tt/component/number_input_slider.rs | 13 ------- .../rust/src/ui/model_tt/component/page.rs | 11 ------ .../src/ui/model_tt/component/progress.rs | 7 ---- .../rust/src/ui/model_tt/component/scroll.rs | 5 --- .../ui/model_tt/component/set_brightness.rs | 5 --- .../src/ui/model_tt/component/simple_page.rs | 7 ---- 65 files changed, 552 deletions(-) diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 5b7607500c..99b42eb987 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -22,7 +22,6 @@ display_rgba8888 = ["ui_antialiasing"] framebuffer = [] framebuffer32bit = [] ui_debug = [] -ui_bounds = [] ui_antialiasing = [] ui_blurring = [] ui_jpeg_decoder = ["jpeg"] diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index f40fc1579c..0ea3a0f40e 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -112,7 +112,6 @@ static void _librust_qstrs(void) { MP_QSTR_bitcoin__valid_signature; MP_QSTR_bitcoin__voting_rights; MP_QSTR_bootscreen; - MP_QSTR_bounds; MP_QSTR_br_code; MP_QSTR_br_type; MP_QSTR_brightness__title; diff --git a/core/embed/rust/src/ui/component/bar.rs b/core/embed/rust/src/ui/component/bar.rs index 604d382cab..2ac5556cfb 100644 --- a/core/embed/rust/src/ui/component/bar.rs +++ b/core/embed/rust/src/ui/component/bar.rs @@ -47,11 +47,6 @@ impl Component for Bar { .with_radius(self.radius) .render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index e101a962ff..f34698481d 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -66,10 +66,6 @@ pub trait Component { fn paint(&mut self); fn render<'s>(&'s self, _target: &mut impl Renderer<'s>); - - #[cfg(feature = "ui_bounds")] - /// Report current paint bounds of this component. Used for debugging. - fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} } /// Components should always avoid unnecessary overpaint to prevent obvious @@ -164,11 +160,6 @@ where fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.component.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.component.bounds(sink) - } } impl<T: Paginate> Paginate for Child<T> { @@ -233,12 +224,6 @@ where self.0.render(target); self.1.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.0.bounds(sink); - self.1.bounds(sink); - } } #[cfg(feature = "ui_debug")] @@ -288,13 +273,6 @@ where self.1.render(target); self.2.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.0.bounds(sink); - self.1.bounds(sink); - self.2.bounds(sink); - } } impl<T> Component for Option<T> @@ -328,13 +306,6 @@ where _ => bounds.with_size(Offset::zero()), } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - if let Some(ref c) = self { - c.bounds(sink) - } - } } pub trait ComponentExt: Sized { diff --git a/core/embed/rust/src/ui/component/border.rs b/core/embed/rust/src/ui/component/border.rs index 8ea403ca30..a8b93ecd84 100644 --- a/core/embed/rust/src/ui/component/border.rs +++ b/core/embed/rust/src/ui/component/border.rs @@ -45,11 +45,6 @@ where fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.inner.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/cached_jpeg.rs b/core/embed/rust/src/ui/component/cached_jpeg.rs index 493ae9464c..600c02f8cf 100644 --- a/core/embed/rust/src/ui/component/cached_jpeg.rs +++ b/core/embed/rust/src/ui/component/cached_jpeg.rs @@ -73,11 +73,6 @@ impl Component for CachedJpeg { ) .render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/image.rs b/core/embed/rust/src/ui/component/image.rs index 959ccf2c49..b51a54f63f 100644 --- a/core/embed/rust/src/ui/component/image.rs +++ b/core/embed/rust/src/ui/component/image.rs @@ -55,14 +55,6 @@ impl Component for Image { .with_align(Alignment2D::CENTER) .render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(Rect::from_center_and_size( - self.area.center(), - self.toif.size(), - )); - } } #[cfg(feature = "ui_debug")] @@ -146,14 +138,6 @@ impl Component for BlendedImage { .with_fg(self.fg_color) .render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(Rect::from_top_left_and_size( - self.bg_top_left, - self.bg.toif.size(), - )); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/jpeg.rs b/core/embed/rust/src/ui/component/jpeg.rs index e8379b67ff..1285c6003b 100644 --- a/core/embed/rust/src/ui/component/jpeg.rs +++ b/core/embed/rust/src/ui/component/jpeg.rs @@ -54,11 +54,6 @@ impl Component for Jpeg { .with_scale(self.scale) .render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/label.rs b/core/embed/rust/src/ui/component/label.rs index d9fe59ffc2..624eb75ae0 100644 --- a/core/embed/rust/src/ui/component/label.rs +++ b/core/embed/rust/src/ui/component/label.rs @@ -143,11 +143,6 @@ impl Component for Label<'_> { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.text.map(|c| self.layout.render_text2(c, target)); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.layout.bounds) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/map.rs b/core/embed/rust/src/ui/component/map.rs index 48cdebd67a..3fc5c469d4 100644 --- a/core/embed/rust/src/ui/component/map.rs +++ b/core/embed/rust/src/ui/component/map.rs @@ -37,11 +37,6 @@ where fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.inner.bounds(sink); - } } #[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] @@ -102,11 +97,6 @@ where fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.inner.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.inner.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/maybe.rs b/core/embed/rust/src/ui/component/maybe.rs index bbc843bca1..e46c804de0 100644 --- a/core/embed/rust/src/ui/component/maybe.rs +++ b/core/embed/rust/src/ui/component/maybe.rs @@ -101,12 +101,6 @@ where self.inner.render(target); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.pad.area); - self.inner.bounds(sink); - } } pub trait PaintOverlapping { diff --git a/core/embed/rust/src/ui/component/qr_code.rs b/core/embed/rust/src/ui/component/qr_code.rs index 5786307fd9..f3f7fd0aae 100644 --- a/core/embed/rust/src/ui/component/qr_code.rs +++ b/core/embed/rust/src/ui/component/qr_code.rs @@ -175,11 +175,6 @@ impl Component for Qr { .with_bg(DARK) .render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/component/text/formatted.rs b/core/embed/rust/src/ui/component/text/formatted.rs index 9e881b725c..9219dbdcb8 100644 --- a/core/embed/rust/src/ui/component/text/formatted.rs +++ b/core/embed/rust/src/ui/component/text/formatted.rs @@ -137,11 +137,6 @@ impl Component for FormattedText { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.layout_content(&mut TextRenderer2::new(target)); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.op_layout.layout.bounds) - } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index 3c2af97b5f..c66392def3 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -198,14 +198,6 @@ where }, ) } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - for layout in &self.visible { - sink(layout.bounds) - } - } } impl<'a, T> Paginate for Paragraphs<T> @@ -716,12 +708,6 @@ where self.paragraphs.render(target); self.render_left_column(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - self.paragraphs.bounds(sink); - } } impl<'a, T> Paginate for Checklist<T> diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 665b903bac..ae1f7c678d 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -110,11 +110,6 @@ where }); } } - - #[cfg(feature = "ui_bounds")] - fn obj_bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.bounds(sink) - } } #[derive(Copy, Clone, PartialEq, Eq)] @@ -300,21 +295,6 @@ impl LayoutObjInner { fn obj_get_transition_out(&self) -> Obj { self.transition_out.to_obj() } - - #[cfg(feature = "ui_debug")] - fn obj_bounds(&self) { - // Sink for `Trace::bounds` that draws the boundaries using pseudorandom color. - fn wireframe(r: Rect) { - let w = r.width() as u16; - let h = r.height() as u16; - let color = display::Color::from_u16(w.rotate_right(w.into()).wrapping_add(h * 8)); - display::rect_stroke(r, color) - } - - // use crate::ui::model_tt::theme; - // wireframe(theme::borders()); - self.root().obj_bounds(&mut wireframe); - } } impl LayoutObj { @@ -346,7 +326,6 @@ impl LayoutObj { Qstr::MP_QSTR_paint => obj_fn_1!(ui_layout_paint).as_obj(), Qstr::MP_QSTR_request_complete_repaint => obj_fn_1!(ui_layout_request_complete_repaint).as_obj(), Qstr::MP_QSTR_trace => obj_fn_2!(ui_layout_trace).as_obj(), - Qstr::MP_QSTR_bounds => obj_fn_1!(ui_layout_bounds).as_obj(), Qstr::MP_QSTR___del__ => obj_fn_1!(ui_layout_delete).as_obj(), Qstr::MP_QSTR_page_count => obj_fn_1!(ui_layout_page_count).as_obj(), Qstr::MP_QSTR_button_request => obj_fn_1!(ui_layout_button_request).as_obj(), @@ -582,21 +561,6 @@ extern "C" fn ui_layout_trace(_this: Obj, _callback: Obj) -> Obj { Obj::const_none() } -#[cfg(feature = "ui_bounds")] -extern "C" fn ui_layout_bounds(this: Obj) -> Obj { - let block = || { - let this: Gc<LayoutObj> = this.try_into()?; - this.inner_mut().obj_bounds(); - Ok(Obj::const_none()) - }; - unsafe { util::try_or_raise(block) } -} - -#[cfg(not(feature = "ui_bounds"))] -extern "C" fn ui_layout_bounds(_this: Obj) -> Obj { - Obj::const_none() -} - extern "C" fn ui_layout_delete(this: Obj) -> Obj { let block = || { let this: Gc<LayoutObj> = this.try_into()?; diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs index 1057a732ef..775f8725c6 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs @@ -115,9 +115,4 @@ impl<'a> Component for Intro<'a> { self.host.render(target); self.menu.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.menu.bounds(sink); - } } diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs b/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs index 9ffccbc566..97ab8857ae 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/menu.rs @@ -116,11 +116,4 @@ impl Component for Menu { self.reboot.render(target); self.reset.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.close.bounds(sink); - self.reboot.bounds(sink); - self.reset.bounds(sink); - } } diff --git a/core/embed/rust/src/ui/model_mercury/component/address_details.rs b/core/embed/rust/src/ui/model_mercury/component/address_details.rs index 01e9c6f528..d5149f4d65 100644 --- a/core/embed/rust/src/ui/model_mercury/component/address_details.rs +++ b/core/embed/rust/src/ui/model_mercury/component/address_details.rs @@ -188,14 +188,6 @@ impl Component for AddressDetails { _ => self.xpub_view.render(target), } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - match self.current_page { - 0 => self.details.bounds(sink), - _ => self.xpub_view.bounds(sink), - } - } } impl Swipable for AddressDetails { diff --git a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs index 75ab740980..d48d2cce47 100644 --- a/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/bl_confirm.rs @@ -274,12 +274,6 @@ impl Component for Confirm<'_> { } } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.left_button.bounds(sink); - self.right_button.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 56b5f0bd5c..7f0a7446d4 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -438,11 +438,6 @@ impl Component for Button { self.render_background(target, style, 0xFF); self.render_content(target, style, 0xFF); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index 5506a24d70..a19377d493 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -240,13 +240,6 @@ where display::fade_backlight(theme::backlight::get_backlight_normal()); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.icon.bounds(sink); - self.app_name.bounds(sink); - self.account_name.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index 1235763740..e8055b3663 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -242,11 +242,6 @@ impl<'a> Component for Footer<'a> { .render(target); }); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 4f09eb5f41..f1ee74ed44 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -347,15 +347,6 @@ where } } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.title.bounds(sink); - self.subtitle.bounds(sink); - self.button.bounds(sink); - self.footer.bounds(sink); - self.content.bounds(sink); - } } #[cfg(feature = "micropython")] diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index ecd49ac2eb..47be5e508b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -439,12 +439,6 @@ impl Component for Homescreen { } } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.loader.bounds(sink); - sink(AREA); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs index f7519a52ce..582092778f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/bip39.rs @@ -165,11 +165,6 @@ impl Component for Bip39Input { render_pending_marker(target, text_base, text, style.font, style.text_color); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.button.bounds(sink); - } } impl Bip39Input { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 058a4f606e..242c1ea2b0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -223,17 +223,6 @@ where btn.render(target); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.prompt.bounds(sink); - self.input.bounds(sink); - self.erase.bounds(sink); - self.back.bounds(sink); - for btn in &self.keys { - btn.bounds(sink) - } - } } pub trait MnemonicInput: Component<Msg = MnemonicInputMsg> { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 22f13bc8b6..08511317a6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -390,18 +390,6 @@ impl Component for PassphraseKeyboard { display::fade_backlight(theme::backlight::get_backlight_normal()); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.input.bounds(sink); - self.input_prompt.bounds(sink); - self.confirm_btn.bounds(sink); - self.erase_btn.bounds(sink); - self.cancel_btn.bounds(sink); - for btn in &self.keys { - btn.bounds(sink) - } - } } struct Input { @@ -469,11 +457,6 @@ impl Component for Input { ); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index cab94fde01..441bcd0178 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -260,19 +260,6 @@ impl Component for PinKeyboard<'_> { btn.render(target); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.major_prompt.bounds(sink); - self.minor_prompt.bounds(sink); - self.erase_btn.bounds(sink); - self.cancel_btn.bounds(sink); - self.confirm_btn.bounds(sink); - self.textbox.bounds(sink); - for b in &self.digit_btns { - b.bounds(sink) - } - } } struct PinDots { @@ -443,12 +430,6 @@ impl Component for PinDots { self.render_dots(dot_area, target) } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - sink(self.area.inset(HEADER_PADDING)); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index 614470444b..722b3c96b4 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -190,11 +190,6 @@ impl Component for Slip39Input { ); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.button.bounds(sink); - } } impl Slip39Input { diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs index 720336473f..58210a21db 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -72,13 +72,6 @@ impl Component for SelectWordCount { btn.render(target) } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - for btn in self.button.iter() { - btn.bounds(sink) - } - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index d906b9e025..01872670fc 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -106,13 +106,6 @@ where self.paragraphs_pad.render(target); self.paragraphs.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - self.input.bounds(sink); - self.paragraphs.bounds(sink); - } } #[cfg(feature = "ui_debug")] @@ -214,13 +207,6 @@ impl Component for NumberInput { self.dec.render(target); self.inc.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.dec.bounds(sink); - self.inc.bounds(sink); - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs index 9e2cdde32e..996d0ae59c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -109,14 +109,6 @@ impl Component for NumberInputSliderDialog { self.cancel_button.render(target); self.confirm_button.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - self.input.bounds(sink); - self.cancel_button.bounds(sink); - self.confirm_button.bounds(sink); - } } #[cfg(feature = "ui_debug")] @@ -215,11 +207,6 @@ impl Component for NumberInputSlider { .with_bg(theme::FG) .render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index 744f4cbc6b..7938d126ad 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -145,13 +145,6 @@ impl Component for Progress { self.description_pad.render(target); self.description.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(Self::AREA); - self.title.bounds(sink); - self.description.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/scroll.rs b/core/embed/rust/src/ui/model_mercury/component/scroll.rs index 1ea96fd960..3c611fdc9a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/scroll.rs +++ b/core/embed/rust/src/ui/model_mercury/component/scroll.rs @@ -171,9 +171,4 @@ impl Component for ScrollBar { self.area = bounds; bounds } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - } } diff --git a/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs index ebb4c3c3a0..d47c84de82 100644 --- a/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs +++ b/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs @@ -58,11 +58,6 @@ impl Component for SetBrightnessDialog { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.0.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.0.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 7054104d02..3150543d65 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -106,9 +106,6 @@ impl<'a> Component for ShareWords<'a> { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.frame.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} } #[cfg(feature = "micropython")] @@ -293,9 +290,6 @@ impl<'a> Component for ShareWordsInner<'a> { self.render_word(self.page_index, target, self.area_word); }; } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, _sink: &mut dyn FnMut(Rect)) {} } impl InternallySwipable for ShareWordsInner<'_> { diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs index 9d81ae32f5..aee1c8dd01 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_up_screen.rs @@ -70,11 +70,6 @@ impl<T: Swipable + Component> Component for SwipeUpScreen<T> { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.content.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.content.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 8b80759a38..2504305f3a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -308,11 +308,6 @@ impl Component for VerticalMenu { .render(target); }); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs index cf323dac41..304cec4679 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/intro.rs @@ -126,12 +126,4 @@ impl<'a> Component for Intro<'a> { self.text.render(target); self.buttons.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.title.bounds(sink); - self.warn.bounds(sink); - self.text.bounds(sink); - self.buttons.bounds(sink); - } } diff --git a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs index 6ba41fb6ea..d9118223d0 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/menu.rs @@ -188,9 +188,4 @@ impl Component for Menu { self.pad.render(target); self.choice_page.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.choice_page.bounds(sink) - } } diff --git a/core/embed/rust/src/ui/model_tr/component/address_details.rs b/core/embed/rust/src/ui/model_tr/component/address_details.rs index 14c38e3b0d..52ea99578d 100644 --- a/core/embed/rust/src/ui/model_tr/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tr/component/address_details.rs @@ -269,11 +269,6 @@ impl Component for AddressDetails { _ => self.xpub_view.render(target), } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs index 842c2ce224..487f1f7bef 100644 --- a/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tr/component/bl_confirm.rs @@ -243,11 +243,6 @@ impl Component for Confirm<'_> { } self.buttons.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.buttons.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tr/component/progress.rs b/core/embed/rust/src/ui/model_tr/component/progress.rs index e44e39ed0e..b24109d1d9 100644 --- a/core/embed/rust/src/ui/model_tr/component/progress.rs +++ b/core/embed/rust/src/ui/model_tr/component/progress.rs @@ -176,13 +176,6 @@ impl Component for Progress { self.description_pad.render(target); self.description.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(Self::AREA); - self.title.bounds(sink); - self.description.bounds(sink); - } } // DEBUG-ONLY SECTION BELOW diff --git a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs b/core/embed/rust/src/ui/model_tt/bootloader/intro.rs index c52d8a6804..b66d2b11bf 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/intro.rs @@ -114,9 +114,4 @@ impl<'a> Component for Intro<'a> { self.host.render(target); self.menu.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.menu.bounds(sink); - } } diff --git a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs b/core/embed/rust/src/ui/model_tt/bootloader/menu.rs index f542dea4b0..37049aa70a 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/menu.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/menu.rs @@ -116,11 +116,4 @@ impl Component for Menu { self.reboot.render(target); self.reset.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.close.bounds(sink); - self.reboot.bounds(sink); - self.reset.bounds(sink); - } } diff --git a/core/embed/rust/src/ui/model_tt/component/address_details.rs b/core/embed/rust/src/ui/model_tt/component/address_details.rs index b8ce8f9161..69b936299e 100644 --- a/core/embed/rust/src/ui/model_tt/component/address_details.rs +++ b/core/embed/rust/src/ui/model_tt/component/address_details.rs @@ -184,15 +184,6 @@ impl Component for AddressDetails { _ => self.xpub_view.render(target), } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - match self.current_page { - 0 => self.qr_code.bounds(sink), - 1 => self.details.bounds(sink), - _ => self.xpub_view.bounds(sink), - } - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs index 3bd1de1616..ab268d1d94 100644 --- a/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs +++ b/core/embed/rust/src/ui/model_tt/component/bl_confirm.rs @@ -272,12 +272,6 @@ impl Component for Confirm<'_> { } } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.left_button.bounds(sink); - self.right_button.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/button.rs b/core/embed/rust/src/ui/model_tt/component/button.rs index 46a11a2ae9..6bc0ac3e81 100644 --- a/core/embed/rust/src/ui/model_tt/component/button.rs +++ b/core/embed/rust/src/ui/model_tt/component/button.rs @@ -382,11 +382,6 @@ impl Component for Button { self.render_background(target, style); self.render_content(target, style); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/dialog.rs b/core/embed/rust/src/ui/model_tt/component/dialog.rs index c66d37a91f..c33b3cef2f 100644 --- a/core/embed/rust/src/ui/model_tt/component/dialog.rs +++ b/core/embed/rust/src/ui/model_tt/component/dialog.rs @@ -76,12 +76,6 @@ where self.content.render(target); self.controls.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.content.bounds(sink); - self.controls.bounds(sink); - } } #[cfg(feature = "ui_debug")] @@ -207,13 +201,6 @@ where self.paragraphs.render(target); self.controls.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.image.bounds(sink); - self.paragraphs.bounds(sink); - self.controls.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/fido.rs b/core/embed/rust/src/ui/model_tt/component/fido.rs index f17a2910de..c83def9b65 100644 --- a/core/embed/rust/src/ui/model_tt/component/fido.rs +++ b/core/embed/rust/src/ui/model_tt/component/fido.rs @@ -242,13 +242,6 @@ where display::fade_backlight(theme::backlight::get_backlight_normal()); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.icon.bounds(sink); - self.app_name.bounds(sink); - self.account_name.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/frame.rs b/core/embed/rust/src/ui/model_tt/component/frame.rs index a8e847f712..bbfa77dd00 100644 --- a/core/embed/rust/src/ui/model_tt/component/frame.rs +++ b/core/embed/rust/src/ui/model_tt/component/frame.rs @@ -182,14 +182,6 @@ where self.button.render(target); self.content.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.title.bounds(sink); - self.subtitle.bounds(sink); - self.button.bounds(sink); - self.content.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs index 4874580bdf..e8c70f7b0b 100644 --- a/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs +++ b/core/embed/rust/src/ui/model_tt/component/homescreen/mod.rs @@ -337,12 +337,6 @@ impl Component for Homescreen { } } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.loader.bounds(sink); - sink(self.pad.area); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs index 850fb01948..c63c3fde58 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/bip39.rs @@ -199,11 +199,6 @@ impl Component for Bip39Input { .render(target); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.button.bounds(sink); - } } impl Bip39Input { diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs index 6d70c89b9d..b5c7fc5694 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs @@ -196,16 +196,6 @@ where btn.render(target); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.prompt.bounds(sink); - self.input.bounds(sink); - self.back.bounds(sink); - for btn in &self.keys { - btn.bounds(sink) - } - } } pub trait MnemonicInput: Component<Msg = MnemonicInputMsg> { diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs index 6482cc6aa7..1b10fa6216 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/passphrase.rs @@ -314,17 +314,6 @@ impl Component for PassphraseKeyboard { display::fade_backlight(theme::backlight::get_backlight_normal()); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.input.bounds(sink); - self.scrollbar.bounds(sink); - self.confirm.bounds(sink); - self.back.bounds(sink); - for btn in &self.keys { - btn.bounds(sink) - } - } } struct Input { @@ -428,11 +417,6 @@ impl Component for Input { ); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs index 819d51f968..3417b60eae 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/pin.rs @@ -286,19 +286,6 @@ impl Component for PinKeyboard<'_> { btn.render(target); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.major_prompt.bounds(sink); - self.minor_prompt.bounds(sink); - self.erase_btn.bounds(sink); - self.cancel_btn.bounds(sink); - self.confirm_btn.bounds(sink); - self.textbox.bounds(sink); - for b in &self.digit_btns { - b.bounds(sink) - } - } } struct PinDots { @@ -542,12 +529,6 @@ impl Component for PinDots { self.render_dots(dot_area, target) } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - sink(self.area.inset(HEADER_PADDING)); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs index 866f481d45..a175f04408 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/slip39.rs @@ -249,11 +249,6 @@ impl Component for Slip39Input { .render(target); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.button.bounds(sink); - } } impl Slip39Input { diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs index c6614293e3..5309915ebf 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs @@ -63,13 +63,6 @@ impl Component for SelectWordCount { btn.render(target) } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - for btn in self.button.iter() { - btn.bounds(sink) - } - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/number_input.rs b/core/embed/rust/src/ui/model_tt/component/number_input.rs index 07e855cfbe..5bab784a58 100644 --- a/core/embed/rust/src/ui/model_tt/component/number_input.rs +++ b/core/embed/rust/src/ui/model_tt/component/number_input.rs @@ -128,15 +128,6 @@ where self.info_button.render(target); self.confirm_button.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - self.input.bounds(sink); - self.paragraphs.bounds(sink); - self.info_button.bounds(sink); - self.confirm_button.bounds(sink); - } } #[cfg(feature = "ui_debug")] @@ -254,13 +245,6 @@ impl Component for NumberInput { self.dec.render(target); self.inc.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.dec.bounds(sink); - self.inc.bounds(sink); - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs b/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs index ec6f8e5b66..07e608262b 100644 --- a/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_tt/component/number_input_slider.rs @@ -83,14 +83,6 @@ impl Component for NumberInputSliderDialog { self.cancel_button.render(target); self.confirm_button.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - self.input.bounds(sink); - self.cancel_button.bounds(sink); - self.confirm_button.bounds(sink); - } } #[cfg(feature = "ui_debug")] @@ -189,11 +181,6 @@ impl Component for NumberInputSlider { .with_bg(theme::FG) .render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area) - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index 075269a094..b893d12a9e 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -445,17 +445,6 @@ where display::fade_backlight(val); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.pad.area); - self.scrollbar.bounds(sink); - self.content.bounds(sink); - self.button_cancel.bounds(sink); - self.button_confirm.bounds(sink); - self.button_prev.bounds(sink); - self.button_next.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/progress.rs b/core/embed/rust/src/ui/model_tt/component/progress.rs index 1d4f133279..388ca5750c 100644 --- a/core/embed/rust/src/ui/model_tt/component/progress.rs +++ b/core/embed/rust/src/ui/model_tt/component/progress.rs @@ -148,13 +148,6 @@ impl Component for Progress { self.description_pad.render(target); self.description.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(Self::AREA); - self.title.bounds(sink); - self.description.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/scroll.rs b/core/embed/rust/src/ui/model_tt/component/scroll.rs index 1ea96fd960..3c611fdc9a 100644 --- a/core/embed/rust/src/ui/model_tt/component/scroll.rs +++ b/core/embed/rust/src/ui/model_tt/component/scroll.rs @@ -171,9 +171,4 @@ impl Component for ScrollBar { self.area = bounds; bounds } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.area); - } } diff --git a/core/embed/rust/src/ui/model_tt/component/set_brightness.rs b/core/embed/rust/src/ui/model_tt/component/set_brightness.rs index ebb4c3c3a0..d47c84de82 100644 --- a/core/embed/rust/src/ui/model_tt/component/set_brightness.rs +++ b/core/embed/rust/src/ui/model_tt/component/set_brightness.rs @@ -58,11 +58,6 @@ impl Component for SetBrightnessDialog { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.0.render(target); } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - self.0.bounds(sink); - } } #[cfg(feature = "ui_debug")] diff --git a/core/embed/rust/src/ui/model_tt/component/simple_page.rs b/core/embed/rust/src/ui/model_tt/component/simple_page.rs index b14f9f7bea..a24bf9b65c 100644 --- a/core/embed/rust/src/ui/model_tt/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_tt/component/simple_page.rs @@ -178,13 +178,6 @@ where display::fade_backlight(val); } } - - #[cfg(feature = "ui_bounds")] - fn bounds(&self, sink: &mut dyn FnMut(Rect)) { - sink(self.pad.area); - self.scrollbar.bounds(sink); - self.content.bounds(sink); - } } #[cfg(feature = "ui_debug")] From b99325a764921883e316ad85e0dd82b817b7da9f Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 20 Jun 2024 13:35:13 +0200 Subject: [PATCH 424/626] feat(core/mercury): menu animation --- core/.changelog.d/3896.added | 1 + core/embed/rust/src/ui/flow/base.rs | 11 +++++++--- core/embed/rust/src/ui/flow/swipe.rs | 21 ++++++++++--------- .../model_mercury/component/vertical_menu.rs | 1 + .../ui/model_mercury/flow/confirm_action.rs | 6 +++--- .../ui/model_mercury/flow/confirm_output.rs | 6 +++--- .../flow/confirm_reset_create.rs | 4 ++-- .../flow/confirm_reset_recover.rs | 2 +- .../model_mercury/flow/confirm_set_new_pin.rs | 2 +- .../ui/model_mercury/flow/confirm_summary.rs | 4 ++-- .../src/ui/model_mercury/flow/get_address.rs | 10 ++++----- .../ui/model_mercury/flow/prompt_backup.rs | 4 ++-- .../ui/model_mercury/flow/request_number.rs | 4 ++-- .../ui/model_mercury/flow/show_tutorial.rs | 4 ++-- .../ui/model_mercury/flow/warning_hi_prio.rs | 2 +- 15 files changed, 45 insertions(+), 37 deletions(-) create mode 100644 core/.changelog.d/3896.added diff --git a/core/.changelog.d/3896.added b/core/.changelog.d/3896.added new file mode 100644 index 0000000000..ef241f1d5c --- /dev/null +++ b/core/.changelog.d/3896.added @@ -0,0 +1 @@ +[T3T1] Added menu entry animation diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index a0e29c91cf..2e4657b44c 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -1,4 +1,4 @@ -use crate::ui::component::{swipe_detect::SwipeConfig, SwipeDirection}; +use crate::ui::component::{base::AttachType, swipe_detect::SwipeConfig, SwipeDirection}; pub trait Swipable { fn get_swipe_config(&self) -> SwipeConfig; @@ -27,7 +27,7 @@ pub enum Decision { /// Initiate transition to another state, end event processing. /// NOTE: it might make sense to include Option<ButtonRequest> here - Transition(SwipeDirection), + Transition(AttachType), /// Yield a message to the caller of the flow (i.e. micropython), end event /// processing. @@ -76,7 +76,7 @@ pub trait FlowState { pub trait DecisionBuilder: FlowState + Sized { #[inline] fn swipe(&'static self, direction: SwipeDirection) -> StateChange { - (self, Decision::Transition(direction)) + (self, Decision::Transition(AttachType::Swipe(direction))) } #[inline] @@ -99,6 +99,11 @@ pub trait DecisionBuilder: FlowState + Sized { self.swipe(SwipeDirection::Down) } + #[inline] + fn transit(&'static self) -> StateChange { + (self, Decision::Transition(AttachType::Initial)) + } + #[inline] fn do_nothing(&'static self) -> StateChange { (self, Decision::Nothing) diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 3966819114..b2a233fe91 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -7,8 +7,9 @@ use crate::{ }, ui::{ component::{ - base::AttachType, swipe_detect::SwipeSettings, Component, Event, EventCtx, SwipeDetect, - SwipeDetectMsg, SwipeDirection, + base::{AttachType, AttachType::Swipe}, + swipe_detect::SwipeSettings, + Component, Event, EventCtx, SwipeDetect, SwipeDetectMsg, SwipeDirection, }, display::Color, event::{SwipeEvent, TouchEvent}, @@ -147,20 +148,20 @@ impl SwipeFlow { &mut self.store[self.state.index()] } - fn goto(&mut self, ctx: &mut EventCtx, direction: SwipeDirection) { + fn goto(&mut self, ctx: &mut EventCtx, attach_type: AttachType) { self.swipe = SwipeDetect::new(); self.allow_swipe = true; self.current_page_mut() - .event(ctx, Event::Attach(AttachType::Swipe(direction))); + .event(ctx, Event::Attach(attach_type)); self.internal_pages = self.current_page_mut().get_internal_page_count() as u16; - match direction { - SwipeDirection::Up => { + match attach_type { + Swipe(SwipeDirection::Up) => { self.internal_state = 0; } - SwipeDirection::Down => { + Swipe(SwipeDirection::Down) => { self.internal_state = self.internal_pages.saturating_sub(1); } _ => {} @@ -297,7 +298,7 @@ impl SwipeFlow { let config = self.current_page().get_swipe_config(); - if let (_, Decision::Transition(direction)) = state_change { + if let (_, Decision::Transition(Swipe(direction))) = state_change { if config.is_allowed(direction) { if !animation_disabled() { self.swipe.trigger(ctx, direction, config); @@ -317,9 +318,9 @@ impl SwipeFlow { let (new_state, decision) = state_change; self.state = new_state; match decision { - Decision::Transition(direction) => { + Decision::Transition(attach) => { self.state = new_state; - self.goto(ctx, direction); + self.goto(ctx, attach); None } Decision::Return(msg) => { diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 2504305f3a..5480e8f4bc 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -150,6 +150,7 @@ impl AttachAnimation { self.attach_top = true; self.duration = Duration::from_millis(350); } else { + self.attach_top = false; self.duration = Duration::from_millis(350); } self.reset(); diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 724e162b66..b31250fec9 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -51,12 +51,12 @@ impl FlowState for ConfirmAction { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), (Self::Menu, FlowMsg::Choice(1)) => self.return_msg(FlowMsg::Info), (Self::Confirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), - (Self::Confirm, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Confirm, FlowMsg::Info) => Self::Menu.transit(), _ => self.do_nothing(), } } @@ -87,7 +87,7 @@ impl FlowState for ConfirmActionSimple { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), (Self::Menu, FlowMsg::Choice(1)) => self.return_msg(FlowMsg::Info), diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index a8b612364c..013eb402e7 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -58,12 +58,12 @@ impl FlowState for ConfirmOutput { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (_, FlowMsg::Info) => Self::Menu.swipe_left(), - (Self::Menu, FlowMsg::Choice(0)) => Self::AccountInfo.swipe_left(), + (_, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Choice(0)) => Self::AccountInfo.transit(), (Self::Menu, FlowMsg::Choice(1)) => Self::CancelTap.swipe_left(), (Self::Menu, FlowMsg::Cancelled) => Self::Address.swipe_right(), (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), - (_, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (_, FlowMsg::Cancelled) => Self::Menu.transit(), _ => self.do_nothing(), } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index 513f740d39..9257f2c75f 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -50,11 +50,11 @@ impl FlowState for ConfirmResetCreate { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), (Self::Confirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), - (Self::Confirm, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Confirm, FlowMsg::Info) => Self::Menu.transit(), _ => self.do_nothing(), } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs index 97ce967e28..d3ee4910b9 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs @@ -46,7 +46,7 @@ impl FlowState for ConfirmResetRecover { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), _ => self.do_nothing(), diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs index 8d8923adab..44b871e887 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs @@ -54,7 +54,7 @@ impl FlowState for SetNewPin { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Choice(0)) => Self::CancelPinIntro.swipe_left(), (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), (Self::CancelPinIntro, FlowMsg::Cancelled) => Self::Intro.swipe_right(), diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index 6fee0ae4a6..f231443021 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -55,14 +55,14 @@ impl FlowState for ConfirmSummary { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (_, FlowMsg::Info) => Self::Menu.swipe_left(), + (_, FlowMsg::Info) => Self::Menu.transit(), (Self::Hold, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), (Self::Menu, FlowMsg::Choice(0)) => Self::FeeInfo.swipe_left(), (Self::Menu, FlowMsg::Choice(1)) => Self::AccountInfo.swipe_left(), (Self::Menu, FlowMsg::Choice(2)) => Self::CancelTap.swipe_left(), (Self::Menu, FlowMsg::Cancelled) => Self::Summary.swipe_right(), (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), - (_, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (_, FlowMsg::Cancelled) => Self::Menu.transit(), _ => self.do_nothing(), } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 723806b8ae..e545369a09 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -66,7 +66,7 @@ impl FlowState for GetAddress { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Address, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Address, FlowMsg::Info) => Self::Menu.transit(), (Self::Tap, FlowMsg::Confirmed) => Self::Confirmed.swipe_up(), (Self::Tap, FlowMsg::Info) => Self::Menu.swipe_left(), (Self::Confirmed, _) => self.return_msg(FlowMsg::Confirmed), @@ -74,11 +74,11 @@ impl FlowState for GetAddress { (Self::Menu, FlowMsg::Choice(1)) => Self::AccountInfo.swipe_left(), (Self::Menu, FlowMsg::Choice(2)) => Self::Cancel.swipe_left(), (Self::Menu, FlowMsg::Cancelled) => Self::Address.swipe_right(), - (Self::QrCode, FlowMsg::Cancelled) => Self::Menu.swipe_right(), - (Self::AccountInfo, FlowMsg::Cancelled) => Self::Menu.swipe_right(), - (Self::Cancel, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::QrCode, FlowMsg::Cancelled) => Self::Menu.transit(), + (Self::AccountInfo, FlowMsg::Cancelled) => Self::Menu.transit(), + (Self::Cancel, FlowMsg::Cancelled) => Self::Menu.transit(), (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), - (Self::CancelTap, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::CancelTap, FlowMsg::Cancelled) => Self::Menu.transit(), _ => self.do_nothing(), } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index fdf691199a..5b92ecbde6 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -56,10 +56,10 @@ impl FlowState for PromptBackup { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Intro, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Choice(0)) => Self::SkipBackupIntro.swipe_left(), (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), - (Self::SkipBackupIntro, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::SkipBackupIntro, FlowMsg::Cancelled) => Self::Menu.transit(), (Self::SkipBackupConfirm, FlowMsg::Cancelled) => Self::SkipBackupIntro.swipe_right(), (Self::SkipBackupConfirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), _ => self.do_nothing(), diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs index 4aa70ce329..ebb3039ca1 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -51,10 +51,10 @@ impl FlowState for RequestNumber { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Number, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Number, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Choice(0)) => Self::Info.swipe_left(), (Self::Menu, FlowMsg::Cancelled) => Self::Number.swipe_right(), - (Self::Info, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::Info, FlowMsg::Cancelled) => Self::Menu.transit(), (Self::Number, FlowMsg::Choice(n)) => self.return_msg(FlowMsg::Choice(n)), _ => self.do_nothing(), } diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs index bd453b37d7..a71b36e90a 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs @@ -60,12 +60,12 @@ impl FlowState for ShowTutorial { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { (Self::StepWelcome, FlowMsg::Confirmed) => Self::StepBegin.swipe_up(), - (Self::StepMenu, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::StepMenu, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Choice(0)) => Self::DidYouKnow.swipe_left(), (Self::Menu, FlowMsg::Choice(1)) => Self::StepBegin.swipe_right(), (Self::Menu, FlowMsg::Choice(2)) => Self::HoldToExit.swipe_up(), (Self::Menu, FlowMsg::Cancelled) => Self::StepMenu.swipe_right(), - (Self::DidYouKnow, FlowMsg::Cancelled) => Self::Menu.swipe_right(), + (Self::DidYouKnow, FlowMsg::Cancelled) => Self::Menu.transit(), (Self::StepHold, FlowMsg::Confirmed) => Self::StepDone.swipe_up(), (Self::HoldToExit, FlowMsg::Confirmed) => Self::StepDone.swipe_up(), _ => self.do_nothing(), diff --git a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs index c4bf1cbe98..45800a118b 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs @@ -47,7 +47,7 @@ impl FlowState for WarningHiPrio { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Message, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Message, FlowMsg::Info) => Self::Menu.transit(), (Self::Menu, FlowMsg::Choice(1)) => self.return_msg(FlowMsg::Confirmed), (Self::Menu, FlowMsg::Choice(_)) => Self::Cancelled.swipe_up(), (Self::Menu, FlowMsg::Cancelled) => Self::Message.swipe_right(), From ff869dd86426c670a9e74696f2838d5a4c17dae9 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 21 Jun 2024 11:25:40 +0200 Subject: [PATCH 425/626] feat(core/mercury): pin entry animation [no changelog] --- core/.changelog.d/3885.added | 1 + .../model_mercury/component/keyboard/pin.rs | 357 +++++++- .../model_mercury/cshape/keyboard_overlay.rs | 71 ++ .../rust/src/ui/model_mercury/cshape/mod.rs | 4 + .../rust/src/ui/shape/cache/drawing_cache.rs | 2 +- tests/ui_tests/fixtures.json | 832 +++++++++--------- 6 files changed, 803 insertions(+), 464 deletions(-) create mode 100644 core/.changelog.d/3885.added create mode 100644 core/embed/rust/src/ui/model_mercury/cshape/keyboard_overlay.rs diff --git a/core/.changelog.d/3885.added b/core/.changelog.d/3885.added new file mode 100644 index 0000000000..2773a0199a --- /dev/null +++ b/core/.changelog.d/3885.added @@ -0,0 +1 @@ +[T3T1] Added PIN keyboard animation diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index 441bcd0178..06ccb44fc3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -2,24 +2,29 @@ use core::mem; use crate::{ strutil::{ShortString, TString}, - time::Duration, + time::{Duration, Stopwatch}, trezorhal::random, ui::{ component::{ - base::ComponentExt, text::TextStyle, Child, Component, Event, EventCtx, Label, Maybe, - Never, Pad, TimerToken, + base::{AttachType, ComponentExt}, + text::TextStyle, + Child, Component, Event, EventCtx, Label, Never, Pad, SwipeDirection, TimerToken, }, display::Font, event::TouchEvent, geometry::{Alignment, Alignment2D, Grid, Insets, Offset, Rect}, - model_mercury::component::{ - button::{ - Button, ButtonContent, - ButtonMsg::{self, Clicked}, + model_mercury::{ + component::{ + button::{ + Button, ButtonContent, + ButtonMsg::{self, Clicked}, + }, + theme, }, - theme, + cshape, }, shape::{self, Renderer}, + util::animation_disabled, }, }; @@ -44,18 +49,217 @@ const HEADER_PADDING: Insets = Insets::new( HEADER_PADDING_SIDE, ); +#[derive(Default, Clone)] +struct AttachAnimation { + pub attach_top: bool, + pub timer: Stopwatch, + pub active: bool, + pub duration: Duration, +} + +impl AttachAnimation { + const DURATION_MS: u32 = 750; + fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + + self.timer.is_running_within(self.duration) + } + + fn eval(&self) -> f32 { + if animation_disabled() { + return 1.0; + } + + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + fn opacity(&self, t: f32, pos_x: usize, pos_y: usize) -> u8 { + if animation_disabled() { + return 255; + } + + let diag = pos_x + pos_y; + + let start = diag as f32 * 0.05; + + let f = pareen::constant(0.0) + .seq_ease_in_out( + start, + easer::functions::Cubic, + 0.1, + pareen::constant(1.0).eval(self.eval()), + ) + .eval(t); + + (f * 255.0) as u8 + } + + fn header_opacity(&self, t: f32) -> u8 { + if animation_disabled() { + return 255; + } + let f = pareen::constant(0.0) + .seq_ease_in_out( + 0.65, + easer::functions::Linear, + 0.1, + pareen::constant(1.0).eval(self.eval()), + ) + .eval(t); + + (f * 255.0) as u8 + } + + fn start(&mut self) { + self.active = true; + self.timer.start(); + } + + fn reset(&mut self) { + self.active = false; + self.timer = Stopwatch::new_stopped(); + } + + fn lazy_start(&mut self, ctx: &mut EventCtx, event: Event) { + if let Event::Attach(_) = event { + if let Event::Attach(AttachType::Swipe(SwipeDirection::Up)) + | Event::Attach(AttachType::Swipe(SwipeDirection::Down)) + | Event::Attach(AttachType::Initial) = event + { + self.attach_top = true; + self.duration = Duration::from_millis(Self::DURATION_MS); + } else { + self.duration = Duration::from_millis(Self::DURATION_MS); + } + self.reset(); + ctx.request_anim_frame(); + } + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if !self.timer.is_running() { + self.start(); + } + if self.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } else if self.active { + self.active = false; + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + } +} + +#[derive(Default, Clone)] +struct CloseAnimation { + pub attach_top: bool, + pub timer: Stopwatch, + pub duration: Duration, +} +impl CloseAnimation { + const DURATION_MS: u32 = 350; + fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + + self.timer.is_running_within(self.duration) + } + + fn is_finished(&self) -> bool { + if animation_disabled() { + return true; + } + + self.timer.is_running() && !self.timer.is_running_within(self.duration) + } + + fn eval(&self) -> f32 { + if animation_disabled() { + return 1.0; + } + + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + fn opacity(&self, t: f32, pos_x: usize, pos_y: usize) -> u8 { + if animation_disabled() { + return 255; + } + + let diag = pos_x + pos_y; + + let start = diag as f32 * 0.05; + + let f = pareen::constant(1.0) + .seq_ease_in_out( + start, + easer::functions::Cubic, + 0.1, + pareen::constant(0.0).eval(self.eval()), + ) + .eval(t); + + (f * 255.0) as u8 + } + + fn header_opacity(&self, t: f32) -> u8 { + if animation_disabled() { + return 255; + } + let f = pareen::constant(1.0) + .seq_ease_in_out( + 0.10, + easer::functions::Linear, + 0.25, + pareen::constant(0.0).eval(self.eval()), + ) + .eval(t); + + (f * 255.0) as u8 + } + + fn reset(&mut self) { + self.timer = Stopwatch::new_stopped(); + } + + fn start(&mut self, ctx: &mut EventCtx) { + self.duration = Duration::from_millis(Self::DURATION_MS); + self.reset(); + self.timer.start(); + ctx.request_anim_frame(); + ctx.request_paint(); + } + fn process(&mut self, ctx: &mut EventCtx, event: Event) { + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if self.is_active() && !self.is_finished() { + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + } +} + pub struct PinKeyboard<'a> { allow_cancel: bool, + show_erase: bool, + show_cancel: bool, major_prompt: Child<Label<'a>>, minor_prompt: Child<Label<'a>>, major_warning: Option<Child<Label<'a>>>, + keypad_area: Rect, + textbox_area: Rect, textbox: Child<PinDots>, - textbox_pad: Pad, - erase_btn: Child<Maybe<Button>>, - cancel_btn: Child<Maybe<Button>>, - confirm_btn: Child<Button>, - digit_btns: [Child<Button>; DIGIT_COUNT], + erase_btn: Button, + cancel_btn: Button, + confirm_btn: Button, + digit_btns: [(Button, usize); DIGIT_COUNT], warning_timer: Option<TimerToken>, + attach_animation: AttachAnimation, + close_animation: CloseAnimation, + close_confirm: bool, } impl<'a> PinKeyboard<'a> { @@ -70,34 +274,37 @@ impl<'a> PinKeyboard<'a> { .styled(theme::button_keyboard_erase()) .with_long_press(theme::ERASE_HOLD_DURATION) .initially_enabled(false); - let erase_btn = Maybe::hidden(theme::BG, erase_btn).into_child(); let cancel_btn = Button::with_icon(theme::ICON_CLOSE).styled(theme::button_keyboard_cancel()); - let cancel_btn = Maybe::new(theme::BG, cancel_btn, allow_cancel).into_child(); Self { allow_cancel, + show_erase: false, + show_cancel: allow_cancel, major_prompt: Label::left_aligned(major_prompt, theme::label_keyboard()).into_child(), minor_prompt: Label::right_aligned(minor_prompt, theme::label_keyboard_minor()) .into_child(), major_warning: major_warning.map(|text| { Label::left_aligned(text, theme::label_keyboard_warning()).into_child() }), + keypad_area: Rect::zero(), + textbox_area: Rect::zero(), textbox: PinDots::new(theme::label_default()).into_child(), - textbox_pad: Pad::with_background(theme::label_default().background_color), erase_btn, cancel_btn, confirm_btn: Button::with_icon(theme::ICON_SIMPLE_CHECKMARK24) .styled(theme::button_pin_confirm()) - .initially_enabled(false) - .into_child(), + .initially_enabled(false), digit_btns: Self::generate_digit_buttons(), warning_timer: None, + attach_animation: AttachAnimation::default(), + close_animation: CloseAnimation::default(), + close_confirm: false, } } - fn generate_digit_buttons() -> [Child<Button>; DIGIT_COUNT] { + fn generate_digit_buttons() -> [(Button, usize); DIGIT_COUNT] { // Generate a random sequence of digits from 0 to 9. let mut digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]; random::shuffle(&mut digits); @@ -107,14 +314,13 @@ impl<'a> PinKeyboard<'a> { b.styled(theme::button_keyboard()) .with_text_align(Alignment::Center) }) - .map(Child::new) + .map(|b| (b, 0)) } fn pin_modified(&mut self, ctx: &mut EventCtx) { let is_full = self.textbox.inner().is_full(); let is_empty = self.textbox.inner().is_empty(); - self.textbox_pad.clear(); self.textbox.request_complete_repaint(ctx); if is_empty { @@ -125,23 +331,32 @@ impl<'a> PinKeyboard<'a> { let cancel_enabled = is_empty && self.allow_cancel; for btn in &mut self.digit_btns { - btn.mutate(ctx, |ctx, btn| btn.enable_if(ctx, !is_full)); + btn.0.enable_if(ctx, !is_full); } - self.erase_btn.mutate(ctx, |ctx, btn| { - btn.show_if(ctx, !is_empty); - btn.inner_mut().enable_if(ctx, !is_empty); - }); - self.cancel_btn.mutate(ctx, |ctx, btn| { - btn.show_if(ctx, cancel_enabled); - btn.inner_mut().enable_if(ctx, is_empty); - }); - self.confirm_btn - .mutate(ctx, |ctx, btn| btn.enable_if(ctx, !is_empty)); + + self.show_erase = !is_empty; + self.show_cancel = cancel_enabled && is_empty; + + self.erase_btn.enable_if(ctx, !is_empty); + self.cancel_btn.enable_if(ctx, is_empty); + self.confirm_btn.enable_if(ctx, !is_empty); } pub fn pin(&self) -> &str { self.textbox.inner().pin() } + + fn get_button_alpha(&self, x: usize, y: usize, attach_time: f32, close_time: f32) -> u8 { + self.attach_animation + .opacity(attach_time, x, y) + .min(self.close_animation.opacity(close_time, x, y)) + } + + fn get_textbox_alpha(&self, attach_time: f32, close_time: f32) -> u8 { + self.attach_animation + .header_opacity(attach_time) + .min(self.close_animation.header_opacity(close_time)) + } } impl Component for PinKeyboard<'_> { @@ -153,11 +368,14 @@ impl Component for PinKeyboard<'_> { bounds.split_bottom(4 * theme::PIN_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); let prompt = header.inset(HEADER_PADDING); + // Keypad area. + self.keypad_area = keypad; + // Control buttons. let grid = Grid::new(keypad, 4, 3).with_spacing(theme::BUTTON_SPACING); // Prompts and PIN dots display. - self.textbox_pad.place(header); + self.textbox_area = header; self.textbox.place(header); self.major_prompt.place(prompt); self.minor_prompt.place(prompt); @@ -172,19 +390,32 @@ impl Component for PinKeyboard<'_> { // Digit buttons. for (i, btn) in self.digit_btns.iter_mut().enumerate() { // Assign the digits to buttons on a 4x3 grid, starting from the first row. - let area = grid.cell(if i < 9 { + let idx = if i < 9 { i } else { // For the last key (the "0" position) we skip one cell. i + 1 - }); - btn.place(area); + }; + let area = grid.cell(idx); + btn.0.place(area); + btn.1 = idx; } bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.close_animation.process(ctx, event); + if self.close_animation.is_finished() && !animation_disabled() { + return Some(if self.close_confirm { + PinKeyboardMsg::Confirmed + } else { + PinKeyboardMsg::Cancelled + }); + } + + self.attach_animation.lazy_start(ctx, event); + match event { // Set up timer to switch off warning prompt. Event::Attach(_) if self.major_warning.is_some() => { @@ -193,19 +424,33 @@ impl Component for PinKeyboard<'_> { // Hide warning, show major prompt. Event::Timer(token) if Some(token) == self.warning_timer => { self.major_warning = None; - self.textbox_pad.clear(); self.minor_prompt.request_complete_repaint(ctx); ctx.request_paint(); } _ => {} } + // do not process buttons when closing + if self.close_animation.is_active() { + return None; + } + self.textbox.event(ctx, event); if let Some(Clicked) = self.confirm_btn.event(ctx, event) { - return Some(PinKeyboardMsg::Confirmed); + if animation_disabled() { + return Some(PinKeyboardMsg::Confirmed); + } else { + self.close_animation.start(ctx); + self.close_confirm = true; + } } if let Some(Clicked) = self.cancel_btn.event(ctx, event) { - return Some(PinKeyboardMsg::Cancelled); + if animation_disabled() { + return Some(PinKeyboardMsg::Cancelled); + } else { + self.close_animation.start(ctx); + self.close_confirm = false; + } } match self.erase_btn.event(ctx, event) { Some(ButtonMsg::Clicked) => { @@ -221,8 +466,8 @@ impl Component for PinKeyboard<'_> { _ => {} } for btn in &mut self.digit_btns { - if let Some(Clicked) = btn.event(ctx, event) { - if let ButtonContent::Text(text) = btn.inner().content() { + if let Some(Clicked) = btn.0.event(ctx, event) { + if let ButtonContent::Text(text) = btn.0.content() { text.map(|text| { self.textbox.mutate(ctx, |ctx, t| t.push(ctx, text)); }); @@ -239,8 +484,14 @@ impl Component for PinKeyboard<'_> { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.erase_btn.render(target); - self.textbox_pad.render(target); + let t_attach = self.attach_animation.eval(); + let t_close = self.close_animation.eval(); + + let erase_alpha = self.get_button_alpha(0, 3, t_attach, t_close); + + if self.show_erase { + self.erase_btn.render_with_alpha(target, erase_alpha); + } if self.textbox.inner().is_empty() { if let Some(ref w) = self.major_warning { @@ -249,16 +500,28 @@ impl Component for PinKeyboard<'_> { self.major_prompt.render(target); } self.minor_prompt.render(target); - self.cancel_btn.render(target); + if self.show_cancel { + self.cancel_btn.render_with_alpha(target, erase_alpha); + } } else { self.textbox.render(target); } - self.confirm_btn.render(target); + shape::Bar::new(self.textbox_area) + .with_bg(theme::label_default().background_color) + .with_fg(theme::label_default().background_color) + .with_alpha(255 - self.get_textbox_alpha(t_attach, t_close)) + .render(target); + + let alpha = self.get_button_alpha(2, 3, t_attach, t_close); + self.confirm_btn.render_with_alpha(target, alpha); for btn in &self.digit_btns { - btn.render(target); + let alpha = self.get_button_alpha(btn.1 % 3, btn.1 / 3, t_attach, t_close); + btn.0.render_with_alpha(target, alpha); } + + cshape::KeyboardOverlay::new(self.keypad_area).render(target); } } @@ -439,7 +702,7 @@ impl crate::trace::Trace for PinKeyboard<'_> { // So that debuglink knows the locations of the buttons let mut digits_order = ShortString::new(); for btn in self.digit_btns.iter() { - let btn_content = btn.inner().content(); + let btn_content = btn.0.content(); if let ButtonContent::Text(text) = btn_content { text.map(|text| { unwrap!(digits_order.push_str(text)); diff --git a/core/embed/rust/src/ui/model_mercury/cshape/keyboard_overlay.rs b/core/embed/rust/src/ui/model_mercury/cshape/keyboard_overlay.rs new file mode 100644 index 0000000000..8052dc2414 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/cshape/keyboard_overlay.rs @@ -0,0 +1,71 @@ +use crate::ui::{ + display::Color, + geometry::Rect, + shape::{Canvas, DrawingCache, Mono8Canvas, Renderer, Shape, ShapeClone}, +}; + +use without_alloc::alloc::LocalAllocLeakExt; + +/// A special shape for rendering keyboard overlay. +/// Makes the corner buttons have rounded corners. +pub struct KeyboardOverlay { + /// Center of the overlay + area: Rect, +} + +impl KeyboardOverlay { + pub const RADIUS: i16 = 6; + + /// Create a new overlay with given area + pub fn new(area: Rect) -> Self { + Self { area } + } + + pub fn render<'a>(self, renderer: &mut impl Renderer<'a>) { + renderer.render_shape(self); + } + + fn prepare_overlay(&self, canvas: &mut dyn Canvas) { + let area = canvas.bounds(); + + let transp = Color::black(); + let opaque = Color::white(); + + canvas.fill_background(opaque); + + canvas.fill_round_rect(area, 6, transp, 0xFF); + } +} + +impl<'a> Shape<'a> for KeyboardOverlay { + fn bounds(&self) -> Rect { + self.area + } + + fn draw(&mut self, canvas: &mut dyn Canvas, cache: &DrawingCache<'a>) { + let bounds = self.bounds(); + + let overlay_buff = &mut unwrap!(cache.image_buff(), "No image buffer"); + + let mut overlay_canvas = unwrap!( + Mono8Canvas::new(bounds.size(), None, None, &mut overlay_buff[..]), + "Too small buffer" + ); + + self.prepare_overlay(&mut overlay_canvas); + + canvas.blend_bitmap(bounds, overlay_canvas.view().with_fg(Color::black())); + } + + fn cleanup(&mut self, _cache: &DrawingCache<'a>) {} +} + +impl<'a> ShapeClone<'a> for KeyboardOverlay { + fn clone_at_bump<T>(self, bump: &'a T) -> Option<&'a mut dyn Shape<'a>> + where + T: LocalAllocLeakExt<'a>, + { + let clone = bump.alloc_t()?; + Some(clone.uninit.init(KeyboardOverlay { ..self })) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/cshape/mod.rs b/core/embed/rust/src/ui/model_mercury/cshape/mod.rs index f23b0faa47..3ff046b79f 100644 --- a/core/embed/rust/src/ui/model_mercury/cshape/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/cshape/mod.rs @@ -2,6 +2,10 @@ mod loader; mod unlock_overlay; +mod keyboard_overlay; + pub use unlock_overlay::UnlockOverlay; +pub use keyboard_overlay::KeyboardOverlay; + pub use loader::{render_loader, LoaderRange}; diff --git a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs index 7b4d01780b..6f64d7f43c 100644 --- a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs +++ b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs @@ -19,7 +19,7 @@ const ZLIB_CACHE_SLOTS: usize = 3; const RENDER_BUFF_SIZE: usize = (240 * 2 * 16) + ALIGN_PAD; #[cfg(feature = "model_mercury")] -const IMAGE_BUFF_SIZE: usize = 32768 + ALIGN_PAD; +const IMAGE_BUFF_SIZE: usize = 240 * 240 + ALIGN_PAD; #[cfg(not(feature = "model_mercury"))] const IMAGE_BUFF_SIZE: usize = 2048 + ALIGN_PAD; diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index a4d3578e95..c9c84e4b90 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15323,18 +15323,18 @@ }, "T3T1": { "click_tests": { -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "04dd28def64267470324fcac6cdca3819781d7fc0498cef75ed83bfff3fc5649", -"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "e1fca7b96cca49bf28bae74ae7a9d3ec0947090b4a6f52c5c3ca07ac2add55c9", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "76e837cdcd8af29a680d5f9a499af4b59940aa6e35908a92a387d989b4d88b34", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "72965cfae8a8c6a34811cdd15c753c1b820650aa99cd4592860305c1c8a65b19", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "26235a6a80c280fddb06a1a7155131b511d5335548c8965857de7ef3a8922d0e", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "8315dddf3fef5a03931f9e1f4f39a278d0bfc26cfba99dea5e51cbc36bfa1128", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "cd581d3800f641ff1a3a83b88a0e4d08d2e299cba3d40a6eb893be694e8eb48c", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "4e7aa1e3b03507cf3b4f97be7d35347a237a8d203ee93934f5f8cf9f46e5c1b0", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "099531de60d33afa60963920e8a24f681000a9d2fc894a143cc85eeae5005903", +"T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "6fb9950f982f955fcad67f32f3a5d1171dbe674eea5c00263abc45efc38e0005", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "b3e073455427bc987e448da56a46f7056107ec996d6c60d75de61cf1e49077b4", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "43293b55a181cc8f65a4b5252909a0a46582ae9db33686bc24e8e34760490a0b", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "2d9ea7a371531b56e7f8ddce3cb419065dc6f02262e039eb25e24fc37e3b1331", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "ccf52cd8c3523f82a01608a72a07a14b793b30503f1dceacc438e4872151a868", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "662fdecae7643270921e0c96105ad326d5421693d0f92471494f4af31a31e751", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "59a283aa35b2cd9d9c78120a58758634613adb058a2880f7f92564164fd5f7e0", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "eb98ca2a5a32eafe3f900478beb4258e67c896baec5ee44b6bed4bb0b0f6b606", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "503270a6bef3f40595776027e60c23297cbb043e9d0d68e0aef1812f75ade20e", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0541c248157f4c0f10dcaa338aea083ec15a7293c865a5de3d9cb13df8ecb41e", -"T3T1_cs_test_lock.py::test_hold_to_lock": "06048f368eb418a0b7ddcc9505dbb0b5ba7fc62adb5b33a00a7cd34c3784fcb5", +"T3T1_cs_test_lock.py::test_hold_to_lock": "dad08e836117c018d5c91d42a51195ab3784b9109bf8feb88c9b16b868951b56", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "3ad09c8d05197cb0ac1627c792bebda14e1cd031c0c1414c9ace143c60f79fae", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "956e3bb892ca76d13da3bb45556dc19789d4fbfdde1052c4c954139f503f0c81", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "6f496d80c2ab52faf30679ceffd8915926d098be42f47123aaf18345e23baeeb", @@ -15349,20 +15349,20 @@ "T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "ddc88cb6c0e5440d08ce2d856870efe3f443c3994d6bafc7d8b929545fa61638", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6d8773f6dfc30cc1acb2d89d374c297a44c1d1975d3cf6cf45952ad7e8c55ec6", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "3c58c69e6722c9274b8ccfddb2fc31b652bf01b977f7521c87fa9e8df7ce30f5", -"T3T1_cs_test_pin.py::test_pin_cancel": "0d2da2f1a8f96c6e90353b1b3790642ac762c46d6c9f1ce513ab15bb80e58fc5", -"T3T1_cs_test_pin.py::test_pin_change": "4dac1df0bb3e63bcdb6c9a810d99b75177d12cd2aa18c76dea323362a4b0e61a", -"T3T1_cs_test_pin.py::test_pin_delete_hold": "46d0792786ca3659d54f5738c02c9f5ba03a9e4b0e01be11dea600d3b87f1b20", -"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "05c354e776988ad50b270a93d438c870e76c16329e270489330af4687de3ba02", -"T3T1_cs_test_pin.py::test_pin_incorrect": "39214a6f25389c06f4484b28cebb50317a2cd8c34c93cd4ffd2fe246c210c989", -"T3T1_cs_test_pin.py::test_pin_long": "b77cce30108125750e1c3d2105c0e69830ac4464235129a38b793281fa06e8e6", -"T3T1_cs_test_pin.py::test_pin_long_delete": "8aafc9023fba96d70a37effc185830e531a58584852f8e2ffe33e95057207364", -"T3T1_cs_test_pin.py::test_pin_longer_than_max": "978a7a53ba8d0e1d25f821928ed0024e92e6790f18248326ba6eb6cca2314498", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "013177785a61f9bd123f4b6d502fdb525deecf3aa16706064b003ac4181e9492", -"T3T1_cs_test_pin.py::test_pin_setup": "e5fc9ecf31a8b0c6ee1f75515bacfbfb57107740ebdd9844d6d95374417cee79", -"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "bf233d62c66f23cfd3d737eb80513f9d356e33c954512374ece2ce2119271060", -"T3T1_cs_test_pin.py::test_pin_short": "05c354e776988ad50b270a93d438c870e76c16329e270489330af4687de3ba02", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "357070d02ba24d5e2030aa56b026e47302043e86c65a7cab87653eec01994536", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "feca723121fbd60703aec5e0d667bb0c49b3e3be26a294782210d1ad7c46e043", +"T3T1_cs_test_pin.py::test_pin_cancel": "ad3a70c37900c5720a7c5a8ad991940160b50e2f4f88d7cadfbd5fa3fd64792d", +"T3T1_cs_test_pin.py::test_pin_change": "cca6e4664b44e20364d457d9a3c84ddb826d220fb65e46e1bd83129994f97b0e", +"T3T1_cs_test_pin.py::test_pin_delete_hold": "e3e0aff2edcecb8e8533fe6d99ffec871736ffcb26ae718adc270ad43239c441", +"T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "d47d5d042fcafcfd35e3893c9f230fffcb174a2d10198e7e0c78907b5777142a", +"T3T1_cs_test_pin.py::test_pin_incorrect": "dc152f3374901b9c16a7f7a7c8b010a7d04b14a80b76e36a4507cd03073ae8fc", +"T3T1_cs_test_pin.py::test_pin_long": "f4a47436cd70ce4529ee47051816f05b37658daac38c55a44884abe2bbed3f20", +"T3T1_cs_test_pin.py::test_pin_long_delete": "6843b1b26ba4aa78445e74b08a0836ee11e85be824909bec8b69c6e9d4420bb8", +"T3T1_cs_test_pin.py::test_pin_longer_than_max": "5a5ffdd4a611651d9fd954b6102553c8655479a3fc4d564af92827712fec560a", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "8f8e618a770f92721c75e5129d3e36ded852e5e15717962caf5a26f1889675a8", +"T3T1_cs_test_pin.py::test_pin_setup": "646901201f596e5ee8517155af4b94645f4184a493b6f88f3e42fdc9a08ef02f", +"T3T1_cs_test_pin.py::test_pin_setup_mismatch": "42168030eaa526d8290c3f3d8ee5725baf6d2e9b33ac4bca9f3beac9441c05a0", +"T3T1_cs_test_pin.py::test_pin_short": "d47d5d042fcafcfd35e3893c9f230fffcb174a2d10198e7e0c78907b5777142a", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "84be6d7fd102f0c895a57af25bb01f9446d5d63553dd7ff349be9ea72f9a11e6", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "1cd71b643cb9a3edc7ba8012dcad2a6a3c4d2ffbc24fa7012bdcae53e3aa58a8", "T3T1_cs_test_recovery.py::test_recovery_bip39": "ab2b3639ca0f79cfb4ed0143363398701820fa549043909d76a7e909af8f26a4", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8428e8c2ceb6292d1797f2107e391eb2d9efc4e8044c1d0175974d36d1f8419c", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "c7d20fc0988dcdd8b6333798569167fdc273cc7d51f5f8f75e5bfdc1ede9c7da", @@ -15372,18 +15372,18 @@ "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "32f940f9c812a3cda75fab30ab5d3b4f7b78c61a5bc7f10b0407d34a2ceec03c", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1755242538503e52a5ed6df5dc3a87da970e4bfe10e8c5dafc61d4ff515fe609", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2ac56b302c0d13a8bdef9f71bfe7ceccb756948523aa7e06d6a8630b1648c217", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3445ffabe15ec6b18cab7d503cfc886d61659f4174ef17f992140437fae7abd5", -"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "b948e09ad60f37d5d21d360b502e6f4f6b061a029eadb2a442e3ff4624caf904", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a43b31ec7f7efc851cc3e01b04ed7dbed3e1516dec365bd0cb35c924dcc467b4", -"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "b2bb3fe04676a3cb64b51bc98358c7e328183af0346d3c27fb91743f607a9215", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "95b460c6d3fe3c835b905a3aa4a2b55e77281086f5e77cce35defef3335a4457", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "e89efdedb0450a8ce563fce4c1c308be529230c7c0be3a2dbe621bd772cfb194", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "8195485e241ebc4106a1fab1a64376bb522210eca471c4d2e88cebfaf54ef049", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "42014af129a44ebd82ac733cba671c60d2a085056e48f081134288199ef94178", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3f2cb64c585744ec1d3b2115e53663869aaf8005e3371a681de72d32a37f3c09", +"T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "945e5b4d0f325e3da850dc37c75b175458c4f8d44a50adfac540f171277e04f1", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "70ddd80bdf03baacef0074c4424084169526592f7e7729d318c2ca8eb540c05b", +"T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "26a5707dbb0a5c6e9149af85c6af56dc62a91cfdf93085b188159306c8932c5e", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "45ff4871fbb4dcd88c541afb740b8628ae3cd983c8d82b0962b78b1a01ab95cc", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ac71de880b9fb2506f786d81fb77e66378b7abc27beaf00808ad7e03916b88ec", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d7ad4444a3691a2c5891a1d6e5fb142540915048968a9381a09b227beaaad8e2", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "74776a874721d95375e84e5ae60f389164d1b759a0e2d51199e547b1bb472fb1", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "93332879c26051be67399b47ce6135e729783ac35be14bba8a18f4bd7fad0163", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1c2c503e0ecf55359e7dc7800b190d71b01c6dc953d65494e9dd6940f40e4341", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "84895c70dcbeacd69227294e245f4a4aadd89aa25a33c2af70e40e88251fbc54", -"T3T1_de_test_lock.py::test_hold_to_lock": "6250451b4bc8b1c5d5e1f3402880db95e210f7bb352874f17e571c764e8790f8", +"T3T1_de_test_lock.py::test_hold_to_lock": "dfadb3325a3352d33b4048c414c2c1a5eca35b9bfb1412d0cde926e36b184ef0", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "63c08446669db6dd58a639b5fd2e18ca75f8f0309dd3588dbd7fe8d96352a2b4", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "bf9d0f3b2d019fff0af115958eed8b6aed3b8794b10a18ce02dd9dfb35037009", "T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "79efacad4f082f5e54879a81dcac263a01a7583a8d645e5f2102f61e308671bc", @@ -15398,20 +15398,20 @@ "T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "483f544613d207964d639a972fddb89c5a727633e412d8e2b2b3ca2a984df26a", "T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "64858a57ff8101fa7b28bd4fe8d5aff9b5c221d33c4144bba399279895ca3d13", "T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "b311c171f29da6eb4410dda06050e7f4d62b53718c00f14875098b18b1cbe451", -"T3T1_de_test_pin.py::test_pin_cancel": "0d405e67172c0014d1d95867d6799b24a5294794f4af9901a0e9e56cb70fae53", -"T3T1_de_test_pin.py::test_pin_change": "39d6f9cb6220ed684423944d584ad00c2d4d669ce7368a883cab0a65faf9ae3a", -"T3T1_de_test_pin.py::test_pin_delete_hold": "fd76a81b22641b04bc459a21bdbfd2eb499589d990000e7cb7d8a6cba2eaecac", -"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "89a04c942297608d5d78d4c381891dd564b696d395bc51354f3c532da692ca42", -"T3T1_de_test_pin.py::test_pin_incorrect": "3210d3baa7c132ed4c887b00b864890739310ac081cafa231481df5e85a35208", -"T3T1_de_test_pin.py::test_pin_long": "6400b17c5d671d8470f4c6517ee1e5094aa8821e0a5a696ed547b759fd61cd81", -"T3T1_de_test_pin.py::test_pin_long_delete": "3740c9674d7590f876d7563faf052e03febf0051f0645a4e757f141a733d13ae", -"T3T1_de_test_pin.py::test_pin_longer_than_max": "0e801978eddf2c556c29bdf490127882ec516fe30a4533213e5594ecbecc711c", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "11736b1bd9268d391c0458d624df654f9343048da66442b0c8a9497f776377f9", -"T3T1_de_test_pin.py::test_pin_setup": "c254847c832c95e1259620b58cd4acade5c1128b831ee7edbc749e890a991b53", -"T3T1_de_test_pin.py::test_pin_setup_mismatch": "2cced1fbdff980c5c3511ea80cf0c759f6fc6e0d0fc9036f19cb71c93236dc24", -"T3T1_de_test_pin.py::test_pin_short": "89a04c942297608d5d78d4c381891dd564b696d395bc51354f3c532da692ca42", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "5f093021a4ef3c011b8c3047d5709ad980e5f4721e8b94f4cdd567a2d565e71d", -"T3T1_de_test_pin.py::test_wipe_code_setup": "5c6167b560ce169555cf0235b958703c4426dcc57f2187a6a2e34688ab78b942", +"T3T1_de_test_pin.py::test_pin_cancel": "6f240d48b47ae0351c37101cc7cf29b14679595539a1347caca4b0858f9a8cad", +"T3T1_de_test_pin.py::test_pin_change": "8f653c53383611d01f5e8d2848cc5645125c424499ddb3ffb320da93f3469b83", +"T3T1_de_test_pin.py::test_pin_delete_hold": "1b074f169bb04573da6198862ea48f72dd50fafc1ed1d61dbe255272931065aa", +"T3T1_de_test_pin.py::test_pin_empty_cannot_send": "43c58c441cbe7c6b62483812b9c88ed3376286d1e00ce931e49f92b44d744959", +"T3T1_de_test_pin.py::test_pin_incorrect": "c9435665136069df2350870cdbf3624aa8577a612d526126ad8ba79b9b1e0d1e", +"T3T1_de_test_pin.py::test_pin_long": "c0ad574a6053f1dee69206d2bb6c77d6400fb3aefe7512e33c96070d7e3dc9f9", +"T3T1_de_test_pin.py::test_pin_long_delete": "51f63716245f48def45fdf04f5b12514ceaa99629cd8a88a242196374a3556f3", +"T3T1_de_test_pin.py::test_pin_longer_than_max": "b4560b4dd52d3e02297ebea079be80d90a11172fbb6635d65a5d2703d45444b8", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "bb97e8040cc5de0de83d402c14287ec671d8f83d621fb7a7b709af18aeadfe27", +"T3T1_de_test_pin.py::test_pin_setup": "8f29e72c90a2c50fc24c39e53ed804cd803c5bf92156a5d40ed6dd29b6568049", +"T3T1_de_test_pin.py::test_pin_setup_mismatch": "2d26edba1837713562460e343d0adf7628f0e8e2129d04fca1f14ad80e723247", +"T3T1_de_test_pin.py::test_pin_short": "43c58c441cbe7c6b62483812b9c88ed3376286d1e00ce931e49f92b44d744959", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "38cbe552fdab022eaf1d7bdee3617975f0a162677ed1e804fb8ee8f1cc3fa8b1", +"T3T1_de_test_pin.py::test_wipe_code_setup": "ec477f6b879cfb8e71a67ce7b5c61b5839141551f65576ee64b2b70e9173f09d", "T3T1_de_test_recovery.py::test_recovery_bip39": "5cbc99e3d7cba3cc05f90722ccaf20f57a2b7df978bdc095f6024de130d0b98a", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "e267ece0952c1d7687a20c72b05e6ecb704f5a54c483dc9116812741bf88dbfb", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "38f122eb5dc6e4077c7079c96b95b20c4916a3fcf09c9581c6c0f228b25cc533", @@ -15421,18 +15421,18 @@ "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0bfa8c81916b4ed8104bc91684e308dbb057147c8855fb908cb71a90df68a0eb", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ee2806e8f7070034cc0b570361e894fb415e314d6c36cd5bd27d4dbbd719da5f", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f6e9a6b68ea3851c58c691cf71df74909be485624273c2c27a5b401cb903cb4a", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "1574ab354e6f01b6969c5c52477ac875367cdd838c411b8f96ebced5f5ff492e", -"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "b884c1243d265c647e5b54ee42f42fc413c3ca96b648b87c4f1e7acec73f5629", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "a924c81c155e30bac4c3c48e0669cfbac08433c5b33e5dcc2c4eb57df7c171f5", -"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "9821c7c63467ab74be74abcedbcf15b57a58eae338defb5c9e2b04beb245d3f2", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "664df0fe6761ba09e8bf942bfac6e6ea0ff0396b44d591a019881899da24adfa", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "28f562bab1a8d375ea9c76ba978cde28988fb59509eb720a9ffb0f1216d1dca2", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "b00773fd206725c5f01f2e6e69c105caf9033f65ddc4cc3e9ac7bbdd2851de10", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "4ed216db9eadf4bb628cdfa1297adcc001ff0d6a2b6cc752f249f5bec8f6e7bd", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3c731b042fc2e0b2f86391320f30937310cb6dc147057691bc14f52b73e597d7", +"T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a28905faec2a54e67df6f9c67a94dd84ed76fc976ca4e8b60bf2cc7f6ce3415c", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "a8488ccbfef402f88042a970ef97b863edb269319afb93cfc03d449823d25726", +"T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f1b5162e62e0fc8de8b0096111da724a0852236c4d5f539ec81c5270376e00b5", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "e93325d02c6a337bde5a5721c9ea5b075bab63fb86148d5275b0cbaf2236c99c", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "e100dcbecaf3a9afd71705fbca98ccbe52881c915021e96d9883da1b98e74be4", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "36114e7a5d1f1e35206dbfd3d129b7816b4b240faa2ce243dc6e16a57d764f28", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "0db8aefbf9c8753c128772f2a7ad9ccd9bd5c762496130e42de549d5d4b79ef6", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "37ee82e8643b9e226a332f8d8f644d38efa11abee4d5fa01cc7aeef259efdf48", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "abd96d32b92c8ef5c8ac4cac59ea78f623f7aef14392f98b6608c4ff62eabf19", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6ee94a1eb6437c83569d05695e0c224398f8b074d2e1a4c8a8b5b3496af87f55", -"T3T1_en_test_lock.py::test_hold_to_lock": "85c2832f9bc5d73bc2ac3a10512f1ef1f3d65fd4185c6a24cc50ade2ea933c8e", +"T3T1_en_test_lock.py::test_hold_to_lock": "1bd07afb3ce583aa8b7afd2a1b9b72c64f81e12ecc3382fef8306a90e8f33624", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "77fe6f8bfb1ddc6a8516913c2ebc669e6b988e6ef9ea6846ef6d94e921fa65af", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "c5540d1c33265bcd397b8a72fe949eef9b514c708fb3bbc2d3d2aef804cc8a23", "T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "ce2aaa6bc1c26c65a4278ebd3e23dac4adf81fb71dd72af685db34ba766c3935", @@ -15447,20 +15447,20 @@ "T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b57ded3b31901a1fe3cd7bc019cb9168e4126194cce02fb0ee9f41b2d6e30028", "T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "bbcb0e0053e1bb96d2bc52ffcc1a4592d8f51489b3c36fae640b6a9509c8993b", "T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "776b1b1d580b1450810fc19f03df408d44600360dc370503c440916ef9ed5639", -"T3T1_en_test_pin.py::test_pin_cancel": "4f981a6c9a417b2f956474eb5795d7a412709410884e669e2b5154981c7b680e", -"T3T1_en_test_pin.py::test_pin_change": "1ded03e5b35df04241021e3ae838d246c481429a01342bc9c213e7c1a794ff42", -"T3T1_en_test_pin.py::test_pin_delete_hold": "15a924dadbbe02663a94260f722cf6f89fb67b604a2a4b406007783a25060858", -"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "dd83932b877054102500ccb7aa19c1e33fbd2154e83a2d5c65257b193523560d", -"T3T1_en_test_pin.py::test_pin_incorrect": "cacee4f2dde4a6be7599989e86b26f0db56c46bd778495f393559d29e31f6e4f", -"T3T1_en_test_pin.py::test_pin_long": "e13e628dcc452f0c7673af693cab5d6d3cdc5990f315a1c91a1f165540cea64a", -"T3T1_en_test_pin.py::test_pin_long_delete": "19ae10139b21167d3fd3d0649825a60f69cc84a735516d744a1540f8e431a5be", -"T3T1_en_test_pin.py::test_pin_longer_than_max": "fbe8e988cfa663a0201817dc4ee6af9085c0e9a140fa39960442a24be3f4a140", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "8c6cc398e729a6a5d67674c40caea1eea43e1c9be8330b1b8142fa7ce8349843", -"T3T1_en_test_pin.py::test_pin_setup": "1ca5024c9d0a99106df5f6beb9f52d5bd75dc4a0d46db6e09420249559b35325", -"T3T1_en_test_pin.py::test_pin_setup_mismatch": "b5d246768af803c6310196cc764899620a0976b9353ee9b7da1a524c45cde124", -"T3T1_en_test_pin.py::test_pin_short": "dd83932b877054102500ccb7aa19c1e33fbd2154e83a2d5c65257b193523560d", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "2d4ba760a011e62e8eaac4c4b31c52f7b2985108d1d033662f5338716ff65d72", -"T3T1_en_test_pin.py::test_wipe_code_setup": "93905d35e3e716ab72b883d829ec74291eae638938df687e40d0e62406dad3a1", +"T3T1_en_test_pin.py::test_pin_cancel": "3a9aeb25d4c9de34f42e17f847eed1193ab975171cf84ccb2ebe5285750c483c", +"T3T1_en_test_pin.py::test_pin_change": "cc1134d2a380e73d3295ed20d7b40732d43a48ffb11dc367408cb843167a3553", +"T3T1_en_test_pin.py::test_pin_delete_hold": "4e505fc48e835b5cc29fd9b5067d5987d2cad92d495eef7d06ced69a35f9d85f", +"T3T1_en_test_pin.py::test_pin_empty_cannot_send": "79796966e4367b6d6d13acd229ecc9f13bb2b00cd030bf854184d94176f1e6eb", +"T3T1_en_test_pin.py::test_pin_incorrect": "af5878e4d68534cc0aba678596a26ff7af2003fc3944600283c12a35974d9fdc", +"T3T1_en_test_pin.py::test_pin_long": "0ecfa34b0bbbd927f69e45b2bb99c73ce8e86332d7b09d0fa9fae5b8a3516f8d", +"T3T1_en_test_pin.py::test_pin_long_delete": "fa1227d17dfce1cd6b665ad7f5e41764e41a59adc0aa425ca4a5b7503662ca53", +"T3T1_en_test_pin.py::test_pin_longer_than_max": "78e4d04106ba4cf1df597e0cc6e86a36a42841c7ad5bd08ecb9b8c4a2a976123", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "bbeb63fbb66a596990876b8245c2c93c431860fcc8c7f927dba54e3c46feef22", +"T3T1_en_test_pin.py::test_pin_setup": "24f5cfefec8d3ca03a20501894f68f411f3331e67aa38a92cffb8ff96f8b5fcb", +"T3T1_en_test_pin.py::test_pin_setup_mismatch": "2da5c4c3849829ed3b7a71ae0ecf853a579c6fadec83b33b4dd98b4a0ae5fcfc", +"T3T1_en_test_pin.py::test_pin_short": "79796966e4367b6d6d13acd229ecc9f13bb2b00cd030bf854184d94176f1e6eb", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "8840ef56bfd1efe3ad42cc4048473fda1d0eeb2555c8555ffa73a721bb9fa7ce", +"T3T1_en_test_pin.py::test_wipe_code_setup": "40b884d32c740ff5e2c81fa6a8bee3c93995e52f043461e1e0abe85b43eb2821", "T3T1_en_test_recovery.py::test_recovery_bip39": "b36d63eee8e62e337e1e1d37e8edff8f11be4c2bbc2bb7adaac7dc7cb40ca5f7", "T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b872324c9dcaa3d3b1b60d4d8508fcb0c3ecad333425f575ad0759d41925faa5", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "80809ce07132d23ca5af4ddb418a19b3d2bf785a2ce6db64bfcbf36184efe5f3", @@ -15470,18 +15470,18 @@ "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6b1fcf64312394170154ac23a2c03217db0c150c1b10fd63a972da4cba4740af", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "82209b5fe1f1c60d4f4def1783a77e97da63a079a3b72acf038d5592573f5518", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "78a9f96c0163a8e7fc378e07bb37800bafa15cac7261b66a72c648c412a099e4", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "99333a321b1581d7cc216b41aee1ff245be02b843d1c503ff23cbc02f3836fb0", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "0839e89c2eff942e2671730bdf4dee20ec5b7486d607272790e1e922a9bcecfe", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "ce75d987f8f8297a205625653e5ebd06b2bdf93fd96aa7fe7e253e61e8d46885", -"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "9dce1463b75542cc8fde660911c9bc638f8f21ed0246cb88ff6c9b81a570ff75", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "544aaa6eb0bb3335475ac775a7acb86cd982e3ded8cab88972915bbe85cea2cb", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "df2857f5948e5130262a194a3934313bc2cc6c3c50e79cfb7ad7bd3874a05783", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "7757e3cf7cf15bb28ec851a2874ca1dda05eac68a5bbbeea7d465f6059015af6", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "b49a04511d30b200f691dbc2b4031dc1e4f7aa240bbca58656a7ad5d35b37e43", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "8b5ce5e34200e989c1ddc6f5f3c7e4175891ccc043aac7209fb47b74ba51d61f", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d5cf039ee4bd1489039c8e31f8f90d0b075edeaddb2ec22f55543a8e1d8b8a4", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "9321b6f60edcc5560ef38209bb8e920a0ed6bca7a217c8d55346878c95268398", +"T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "3f9070f1b83a17e4a428eeab7b056cf088dc421f21d7819f92dd07d63ac66cd0", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "dfd01aea0e3d989bc8a8f253a0b570e23b81f5431da8b6c85b7e809cc55ad0fb", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "3f8cdf6f79e1d7c3350025580730f206eb1cfc572437775030cd77cae0fed103", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "8c9e39c583899fe215ae1b4e71d66ba42181246fa976da63f4bed172d1c9bf76", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "db570883f26e947bf58a61c8841c34a1147443ca28df1af706736f3c97d97cf8", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1f535bab5bdf06f820fb00b278cd8e10a686c9162f4d16e068e2da01e5d01281", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "fb5f271ecf82ce97bdf7a10c0a8b6d158a356c0a4e5a50ce114c464695e2f3d3", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3f28ed90d81f57c3c92467a8b98d4bb4362cf0fefbb7a54a79fe7653dc4a624f", -"T3T1_es_test_lock.py::test_hold_to_lock": "93790c763f5c970b61e875e4e0ec4cdf12d92cd40eb6a19924205b357674a399", +"T3T1_es_test_lock.py::test_hold_to_lock": "78ee06d95dc3e030a2720c608a3ee90e1af5fdaf02869823089eab12cbcdf997", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "3fc39e02f19cf7626398c62eeba26f2e36ee6449e3390283fa96c016ea85d58e", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "83116b38b2709f164d512a3e53dc36b2fc65cd635f8cc5dd49a7e4d01b52b554", "T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "7e4da3874efd61f9a37ecd276a3f104d15b511a075702de130ffc1b60ce96a2c", @@ -15496,20 +15496,20 @@ "T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "e5bedd7d738690456c1e33f2af5b4f60fdfff41587013a5033c1431f59898603", "T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a955954f8e760b13d355187c3c08a60c2d47915d752e0b2adf097ed1de650a7", "T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "deaa6422b34f850d1253d4fd97758b7bb9f01debdc34fe7f5615e4db2f58cc39", -"T3T1_es_test_pin.py::test_pin_cancel": "5aa944177da6c0a3d1bda13085d53e1b3d713f9074e5941c6944497845377e1b", -"T3T1_es_test_pin.py::test_pin_change": "ee721c4ea28738438eabba7b043a44fcf99ec326f5774454c164a4a521482e0b", -"T3T1_es_test_pin.py::test_pin_delete_hold": "eb4b5081320befb46bd14d20344b07b262f41013f0ad791d5b4fb6811f71b8ba", -"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "24d1cd58a3a0e9a3c762dfc47cecbab72d732ed3f42549a65781a712eb67c3fa", -"T3T1_es_test_pin.py::test_pin_incorrect": "2c47a4330ddb8d7d12e0caa736320c08d38e1f2beefb2940f60f45b7f9f529d3", -"T3T1_es_test_pin.py::test_pin_long": "82eaa2e33eeb9877e775a62032a1cb2adf0ba1b1105115febec9989d60e67c36", -"T3T1_es_test_pin.py::test_pin_long_delete": "d78538903ebe4ddc7424fd4ecb4a69dcc8ee5be410ebb8e83d9bdf7fcf6ac547", -"T3T1_es_test_pin.py::test_pin_longer_than_max": "da6e7f65c1d845bcb55304eb5f6bb6c16308f88958b745fcaeff35ad1d29e964", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "9ed8c4ea0f75b2c14790b05dbe5f4098559d2d35aa67804cfcde951e97b7aa33", -"T3T1_es_test_pin.py::test_pin_setup": "1a2c733f43d7daffa07b2ff2d09da3af94b25a011d34fc99b9a9822a3d2ce709", -"T3T1_es_test_pin.py::test_pin_setup_mismatch": "178daf8563f6912455b7dfdb312dc077b213fffb463d11afe6fde61fa5ee7bc1", -"T3T1_es_test_pin.py::test_pin_short": "24d1cd58a3a0e9a3c762dfc47cecbab72d732ed3f42549a65781a712eb67c3fa", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "774c4b5d5baa51c02fd454bd5a9f33be82eb866fc6291d4f7e3e96747a5dc2fe", -"T3T1_es_test_pin.py::test_wipe_code_setup": "514583c0fbbfb7949ee16a4fa5ffe0d7ffa0e3b5fb035a760a9569793a1ddf59", +"T3T1_es_test_pin.py::test_pin_cancel": "cf9fbe520b7a777148f85f1accd64c6f7e6a6ba3abe699c6953ed343be136c3e", +"T3T1_es_test_pin.py::test_pin_change": "75152dc7c031f47ec53eef5100b4cd8ecc56e61d6b163c263c67a8ffe35b8331", +"T3T1_es_test_pin.py::test_pin_delete_hold": "7420f26a620108a54218ba12a8009362b9be9661df3ba263233630133826e516", +"T3T1_es_test_pin.py::test_pin_empty_cannot_send": "21a6007121daa2808055f1fd035f00d1b4e5e1b51f4f1bce286f781bb24cc825", +"T3T1_es_test_pin.py::test_pin_incorrect": "d8285869793ddce13c1589521b8096110b7f0723190f40d2bec84a47eed5b6ec", +"T3T1_es_test_pin.py::test_pin_long": "31a13ec6699363faf041cf322ed3ea1f4c0644b758dba9e48e921d5a6c14f1f1", +"T3T1_es_test_pin.py::test_pin_long_delete": "b41b4667f2ccfce6f3763f2818221bd01a85487705d8a2180216972ea0bffa78", +"T3T1_es_test_pin.py::test_pin_longer_than_max": "df148d02b5200d348d13af06f8f55c27167f757c46227392cb12275ffd5f2abb", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "0d6eac391ab8c1f2fd453e94d94bdac12262c12d6ce89417fd2f28799fe556ed", +"T3T1_es_test_pin.py::test_pin_setup": "78a07caf3834a0a2dba1953cacbf4539eb6f3f01c3332f1f1f3e2ce1de7ab444", +"T3T1_es_test_pin.py::test_pin_setup_mismatch": "f74c6c38b227b7ff29905d52d903b00d259543530e56e6e0d0e10210360266b6", +"T3T1_es_test_pin.py::test_pin_short": "21a6007121daa2808055f1fd035f00d1b4e5e1b51f4f1bce286f781bb24cc825", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "84447748fd7da6198e5df0fcc70bc73e730ea1f55a11415149e945ac9412b3c8", +"T3T1_es_test_pin.py::test_wipe_code_setup": "040fa0dcc5f8a0fb3a19c94a79e3e8164f415df9111473dce3b6e6ef238a20c5", "T3T1_es_test_recovery.py::test_recovery_bip39": "103c31122b8ab607fc87bbcdcb62f37f27b9ad168e935216c9688f65c4a52415", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "a0367678819dc2032f58d35d67937fcf3dd9a19a31449644cfa57511add59eff", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "b394e91255b10ae11f519e2c49a1b6a79ec828ec48dd039865ec3ce74d4f9271", @@ -15519,18 +15519,18 @@ "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1a89559131af7eeacffd0e5293199c507f4ed7b4269a5d74247a111ef3bf84ee", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bbe32dbc1855cc7267c7ac92e341a10e92ca95c663838140699779ac498c257b", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8cbe21d7c71acef44d9d4748a7efbb417d77622fa6469f9ec13bf73e915fa14c", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "5169a1ac35a5d3ae5ec432cf99dab2dba52092144cb3745e15788673a2252f08", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "124777d9c4367ddfc220fd2679213e597ccdfbae7409b62d425e6e8863ce2c80", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "bcd9fa327c2951f90de1e30dd4dda7f89b53cfdef53e67a13dbdbf2f92aeaf1d", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "47f9529ab58ee55de2e2a5ae98cef134712d552e3ec01b0b6d5f006a9eef41b2", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "3be76e71e89f25882d867e75b9087e4ecee002f20cbdd470084fb94ea79759da", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "63342ba95ab4470fceac06bd6925a6557963a17e3c5ba6a56a791356f578cd1a", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "ea3733080c0cd1beb569a94deeec616586c0bcc58e119d72961187e3b8308eb7", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "abac20ad4c523253d06dcfb8cca0dbf6f3fc522c4cbb533c0e767ca9595d2b81", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e25b10ab63c55f12fe03eefd50111a9aa918b21667dd83426dc045634f9395ee", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "228265069b1eb183eb0ead8aacb1da337eda6dde9ed5c787e1f6d96d392f334a", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "d7bdeac79ed469879cd587ad73be204cc40e83e03c866473cec02197a9daca4d", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "0ef21ef513b58f81c2ec570209ed941d4f11326b9374e6b4b28036548d60f58f", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b452fcfe4d896cb3b5d2c887d2156f8119d7a7ff05c6ecfdf0217fbc3ca8ba82", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "2a161224d3797d17c6f0bf10acf211456194f2ec09d67791431156396c888dd3", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "5397eaae685d28ecccdbb18289c3a9ed499a6654c95810f75a33a0aa2f9edbaa", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "73dba307121a90389ccb0df8623a22c0951fe638592a94360b1b43daa92ca55d", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "46f84e9b2b88d4108ec7e7ae7000d8e3e9fe4fa4642955ba3e243cee5ee8caf4", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "6708cae42ad5c8ebfc6fcf11dfa9ef86e761075ecd071172c3798f2c5f6ab359", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10dce76a0863c78385b97f7c1aeca8d75fb5b15a13ff8a4e630bd8862be4d890", -"T3T1_fr_test_lock.py::test_hold_to_lock": "f9ac5932bd293d9341db9ea28d8db67a0da895c4fea85d3923ad7909fd036644", +"T3T1_fr_test_lock.py::test_hold_to_lock": "b0722dd84e823c408bea43a2a1a7ce00a310fa02c08e848cb2b5102337c0ee6d", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "6a74ce7c04eb4b26b79b91ee0f1580e1296ebf25750f5b237451e84afabb69c5", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ce9ad70bbb739a124b7fb0e039a7c63954b04609f869c549b4ed0dbaab590c7f", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b4ee17ffa5f236746430884da9fafa69379ddb5c88383d517ce7e5cc1d88e7cc", @@ -15545,20 +15545,20 @@ "T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "44132964953507dbc964d44707e9f787acf351ff3ae98c8504ec8d95e28516b5", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "c367ba95529a226740fe7acc2c4eb7b8b971fdd7fc67db44bb4325ff721f0feb", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ccef614ba1920f596c45f674c8578194b79e1bb81a6c2d8bf1de7bef88a652ff", -"T3T1_fr_test_pin.py::test_pin_cancel": "cd91754592ce51975cd7400cd58984605288ef69cb4aa61f9205960fcb8b38b2", -"T3T1_fr_test_pin.py::test_pin_change": "36bcf2ebbee822ad5d59befa83ea713cb2ccf218dcccf5a00358899d2751bd3f", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "d1e11950fd2c176b9fabcae9901b1394dd3cead84baf5001c1d12e58cac4e4b7", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "20a86715930b2ff59dbe504369af47067c73b72163aa83fca463782e5d75a6e4", -"T3T1_fr_test_pin.py::test_pin_incorrect": "4be36f9d543237d9c2339a4792d82550a701509b57bb19f954167f001fd7c6f8", -"T3T1_fr_test_pin.py::test_pin_long": "e7ca781c6a921abced014a8517d52e0736123608fba92c99a3b5df93bd5c6538", -"T3T1_fr_test_pin.py::test_pin_long_delete": "e2a949eec59bcb9b878c493c3a132b9ca3ccb488f0542634fc9cacf5b8843f99", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "dc6f672813fe056bb5f41c04771aa3b07829c2d85d260d0dde4369961cceff82", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "e2a4382926f3622c74f65277c6463b9a23794e7335ec01bf8d02d54e32ea7e31", -"T3T1_fr_test_pin.py::test_pin_setup": "553aeeace870802a3633d947204bc5bff26a12316449fb773a005f14f8862a78", -"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "8eb4088377c626fbca133e033c4ba7b1249eee4dac1a1cd05e6303a752364d3d", -"T3T1_fr_test_pin.py::test_pin_short": "20a86715930b2ff59dbe504369af47067c73b72163aa83fca463782e5d75a6e4", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "ab58cae76719aba0ecff05ba383f75f99efef7841872a643577baf1c2bcdf05a", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "c84746ac3ce8fad6e887a2d615a8ecf438899c2e66b525ff4cbe3c841b8149b5", +"T3T1_fr_test_pin.py::test_pin_cancel": "d609821dc4caea0c9b8d44bc090d46c3b39908dc6fe20ded1bd663f8b1df0181", +"T3T1_fr_test_pin.py::test_pin_change": "d28e86865b69790e5ebec69569c7890490f312f50a1d9fb874403322dd573715", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "e8fcfaf4854e8b529629e60cc4570ea22a64cf6e68505e70bfdf289fdf264713", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "84ab2ca4f7495f000b368d2d3018bcf7a67b9149c4f24e9c1c6b809c3a23224c", +"T3T1_fr_test_pin.py::test_pin_incorrect": "b5c9dd99174550a30e19cf49e42374d50eebb43376c085c29a40c52aa706729e", +"T3T1_fr_test_pin.py::test_pin_long": "428b30c7357fb1ac9f895eaaa81eb879428c3fef46929e4664b6162bfd7beffb", +"T3T1_fr_test_pin.py::test_pin_long_delete": "d5bc7b3ace89ab13370717c7044f827d1d3638e53f74f90be17593ff97cecb35", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "24516d807963656575861c14b78aff401c6aa0524ca3cc900ff3db47f89ae0fe", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "ccd628eea94ec5201c4c5ad05b929f53a977f00c403a16bceee9665f7b4adf2f", +"T3T1_fr_test_pin.py::test_pin_setup": "2ba08bc36871deaba7b57be631577b7b8ec9045b5e1cc35e21bef74a2cf47e0c", +"T3T1_fr_test_pin.py::test_pin_setup_mismatch": "6a1840ef1e97ae048f51792e0bb8fe59c540a9721495960242df3dfad99325a2", +"T3T1_fr_test_pin.py::test_pin_short": "84ab2ca4f7495f000b368d2d3018bcf7a67b9149c4f24e9c1c6b809c3a23224c", +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "1676a213a48edfc105a155e39e2b51e9750b4754ac64ffa470e0c101c0a3a3f1", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "baee560320561ed67f73d43badf61a54a8f435db3ceb891ce297873c565b301e", "T3T1_fr_test_recovery.py::test_recovery_bip39": "f09d85c9b162f3cc3da8c10e6f42fa0c88d6b5259ff1d502d534bf3718ae8d05", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "af44397f5e839dc9a65c9391f47591a2ab5d7d5c2bf8a324a269f9eb52ce9971", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "78d86e594af55e001c89880c661699c3926c02a6c703b5bf08b737a9afa39a3a", @@ -15585,8 +15585,8 @@ "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "f8b3684d2b01416a933a1e05bfe4f91529269bc6ea4eddfaa575cc7890383cbf", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1fec2c810e9631239d1823418c415ae06177abfd45a7e24efc607d152df8214c", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3f1da5b0111e0a220948767be850e97e6587292ad6e1b102e4c98162c75b3b99", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "cab510ff8cc3aae740a77de9763e7a7eb3abbb187a65a04e888b017bd8f6937f", -"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "cab510ff8cc3aae740a77de9763e7a7eb3abbb187a65a04e888b017bd8f6937f", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "7cdeefd9dad44ff32bef662353708a0e53b2eef845e22f1f7750a88856a692ad", +"T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "7cdeefd9dad44ff32bef662353708a0e53b2eef845e22f1f7750a88856a692ad", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4ad0dcc2f8031c36690b2f2c104cca4fa2ee1a14f5e4039f8f109fa01c0ef586", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "dc4919222f78aeda8bb96bd006d1059d4c845d63ac0a7328a55cb591ba48ac36", "T3T1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a62ca52204fb4be15277909855a2f257bbbfc3dde1c08e2993922725bcdaeda8", @@ -16554,7 +16554,7 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c80205487a42c838f4b84da10d840ebf7bb224453450a70ec5d578568a495600", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "46ca8405675b0f6a562dcc773c77abf1192f12a1e5054545a788101739a7b925", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "7f9e310cf1ec4929c918d4c02f7864e3c9562a0c45f2bfec2d264e6793d9b73a", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "ddc01d821c8ed36b3b7d3db87c4926c13f9be1809910ac5757866cea60ba03c8", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "29132647b4f82aa01d2c737f7c139147e228772ef440c025a95e5c76c5b3e8d9", @@ -16569,7 +16569,7 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "585779d2267de6c12617e30a81b329e5a73aa33b47c370a0259c6d9526ce9c8f", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4a34f639e0a6ac6c969dae2d23a9baf0fac4e3be9a0f2da482da7ebfbc789967", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "1a827881f66e7345bdadb920aa76ed3edef2f586e7c88e85839b81c0d137a0ac", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "357b7c0032ae4af11a88848458376e751f912eaeaed20235af1906e55571ef76", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4b92af57fa986c4e851a958b6c8199b8236af6985090af2c5bc7a8ff68906a4f", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "127446a5c7b705e19c2b2e642243da87c6ead65d499d3bf242eb399e0c069d2d", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e416773862540dbb944285e27a60cd2231745ea8620280a38845145919636710", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "51c68ec78fa1d9c75b2b07fc8d6d4e7558aac516f611869cd5e54af9734d110a", @@ -16586,10 +16586,10 @@ "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "322a8a8150361203bb8a4eaed4ac65c79b6bba2ea5d76d49249f57811c1acf34", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f02aef6fec883528e51e2d2b73955516f62d8952bde52f77267589f049b0dfe0", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0c2a71dee40a98e2a99275544dc7c0db4554a3eef810012aed3630fb058b4243", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f32467ad7e6835d555511902977d25c3482af29a4021a6a0ee79ef5c5c3d42f1", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a49bf466f90e72e0d71ee2dd04c6e8fbcbb6fa4eca0024019d940144e265c440", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "fe52bb8a9e6ca43279d50a4218b25515ae770ebced43bd8c478ad100b15d79d0", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "08153566d054f2175cf7bd6198491b11c521d6d1b6c65d39043f1cb125ae1cce", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2e2f32940bd0f847cba02b9bacd7d9c3a3ac55ebe171dc08847107733ad88e74", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8cbfe6fad036e08dcd8a1c386362ca49c47624f2e762e13c4e14a692c98faf99", "T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "30606716bfa4cbe5587aa5ff3b77c865a1fa66a81ac4e7a8a436c4d4834264c4", "T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8725ae117bdb64c97b2a7df3d3441198c9546609e7d6c6cfd913d9cda28b840c", @@ -16738,29 +16738,29 @@ "T3T1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", "T3T1_cs_test_authenticate_device.py::test_authenticate_device[]": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", "T3T1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "16c032b883076d702e021e297eb644b055a03cf3734fbeb70f3cde186f59b295", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "3ee42e71e5a6081071b7395a5e4af36d2f6251392ed943ec537792b69e915c86", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "9f570d77791e8d5d86578fcc8ef2e7038762995ac5d6030f4e8f1869115edd8a", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "8d0daeb049e66ed75b2c79b2577167c22f7ce3aeaddc01b44040ac46ca127c44", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "1d8506385f937263eb76152dea03fa42f35d1b635c74bc4d4dc0c8fcdcecc2b3", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "3fdf2ce5a18718716d9c24bebc255a4cabdff5e37ff0dddb7ad4d772f4392b09", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "9ccf2dfd30ef5609a1e6793445ad2b3f86788af61c53e8ded5e9b76b775c128e", -"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "62822adf7ad9cad78c8a9b9e5042d068193bfb551b16fabcddca1f0d72bf6e0f", -"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "425818a7adf15df44fdd29e25950c0232a6d054488071255ef4eba5001fdbfd3", -"T3T1_cs_test_autolock.py::test_autolock_default_value": "fa7569c2b8a4a84b6b1f3acf793d6c119cc7605111c00d6fdfb4d1cffd1b2979", -"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "960c243015cc97acc98e1ecd4973f433431d59c1db4c5e860ecc35a98337c876", -"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "960c243015cc97acc98e1ecd4973f433431d59c1db4c5e860ecc35a98337c876", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay": "765e628ff65177c7c2bf62e07a1527255e0c283b0e834846ed9f6fcb6f877bac", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "14cb7cb0b128ad9341d97b8133fbc87773c72eab38a1d31a6a94092319a2de77", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "ef27904d010e85ed019d6605f40c544665cf56bbccc0d2f654057f296cdd0f5c", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "3aedcfaef008439cbc32be93cc3f55adf3b749ef68cfc4cc11bf18c5a8d031dc", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a97cb4de50b5be1b4a1da4dc3cd5e4acc2a64d620388c5a389b09e69f858ec64", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "61ad4ae084919cefc164ba7444ddb1e0d781e11bce2df6110fde53a8040a850d", +"T3T1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b0c577e564738baf768dea483e88fdebf0a7c5e7db19bad8bc8801c23059971b", +"T3T1_cs_test_autolock.py::test_autolock_cancels_ui": "86f42254b33bf4b6e403f4680e072846f67194797adae591aadf797f9a783615", +"T3T1_cs_test_autolock.py::test_autolock_default_value": "b20a52b99c3ec80841be9edcf0a5ba18d4f85a03b82c2b560177d1a14652f6ac", +"T3T1_cs_test_autolock.py::test_autolock_ignores_getaddress": "b1c25732621499ad49e0b54a3a6514ce63d031c4c491b2ba9b0e1680a7d94202", +"T3T1_cs_test_autolock.py::test_autolock_ignores_initialize": "b1c25732621499ad49e0b54a3a6514ce63d031c4c491b2ba9b0e1680a7d94202", "T3T1_cs_test_basic.py::test_capabilities": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_device_id_different": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_basic.py::test_device_id_same": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_features": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_basic.py::test_ping": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_busy_state.py::test_busy_expiry": "91b80634ab79b0fb8d5cee97dc3b48eac93e84cb05b29006de3cfa4ec00032a5", -"T3T1_cs_test_busy_state.py::test_busy_state": "00d3252614aacc75f8638eb3e78f2672be984353957927992da72d6c036d2f00", +"T3T1_cs_test_busy_state.py::test_busy_state": "1617f7ee43a0d2608bdc85445e2a863d565235fe048f1f7f92e1621c2314f22f", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", "T3T1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "e9d2f819046fea277edc6d1d2590c86d82e1e7abf31e31f3afa8d549f6d927f4", "T3T1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", @@ -16791,15 +16791,15 @@ "T3T1_cs_test_language.py::test_switch_from_english_not_silent": "36ae0eec30003081208fbfa3668e3974897b032dd1e407e33e708c73cfa7f207", "T3T1_cs_test_language.py::test_switch_language": "fddc8ab027e570d255471cb98cd05bfe1b9247119e8fb9a518c0866f9ec59f56", "T3T1_cs_test_language.py::test_translations_renders_on_screen": "c859df8d506ad6ad5f7dfa0c333196cb3b0006d57f120812934d5b2ae3caeabe", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "63b7b7796b05429d4649049765190659d0d6073fe4e98ad34db61acb5c2ec4f7", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "2a0ad07eb9f07ff7974d3420c8e71baa33c863f1b0915a02b4477309495d6ba0", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "a66bd38dc2a40f9b4098ab7a67dce5a0052d6029c3eed198300b30479f3c96c7", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0f8fbf90b7135f41d33b0b1895b2925b23a97b1a382c8582d445971aab39a4a0", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings": "16f0a3cb785a16719b7075a66a0e89574678c3547ae788c5048e7b9b2ebe87c6", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "f5e9e741bc45953e463fdabb87a81307d4b1ec379170487d18241ede278d6fa3", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4741416de5b0ae9aa27367c5a7f9d5f7a3607d1323a5a12e2709df429dfc3784", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "7acf851f56e1d40c6eb435ebb6a247b0a690e45656013f8564bed60816f72ac7", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "758761f417b7df9472c37475669bd3da74b74aa35392a3fb49999ce4cdb794ce", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "e3a64d7efe9482c038c304942a5d1da64b92ec0bf92d227331c4800f2ef7dea4", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "def9ad5e2b4db346c4e5bd2dcb0444b5787221a31144c17b9e06082a7fed6256", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0eed526ac2842f7e35e9c2cb5684d622178b696e1c834661c62224691a7992d5", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "97a766b1537dd43d112f397be6d79ebcb05a6d1f5226b976dcc05865c97031af", @@ -16813,17 +16813,17 @@ "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "c9ca005679502266318da239e432a9661bb71967c41455abc9a78ab14ab16588", "T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "41a7e651e9d318ccb2ecf4a19fee88d13f8b690dd48f37dd8b763ef34ec35775", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "481965ffbd7dc36508cc0a857ce7593ac9c3df9f64138553d9b91411466d298f", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "9f28c577012418514ee832fd138670aeb4a440f7edf5e28d62dbf19f292e9475", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "5a28965408ff37f5a5af0ec4d776b29a7077ffce208b43ba6ba304a1273dd5ec", -"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "2518c78b8e659c4d961493ee48a5afde5eb853d6ca4946ccc25ad946e814a976", -"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "db6cdadab997ec8c7d01f08362d6cb725c94b992226edd5c2db8995a482651a8", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "3bd10fc0524cff6e65891f0b89d874ddb3739887be07f788f3e4a5a9d5b97e7f", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a88bab65b934c924512689d6ee7b9a6e9c6ee184634326a77867418b48c3d309", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "630480981fde9bd9f240c78d918c521a16ff4c87e28264f201be130ed031a40b", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "885c23004db682853f559eb07a382f99064fca941decb96ca6978a665f7a5f08", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "957368b746e5e684d7fdf19623a6e75dcea20e4aa842ef3ae504bab9934e84ba", +"T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "f569b30a08d22a0eb0ee005248524d1eea5a1628dd9be32dd8692d8f27b34c99", +"T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "132a0329f43e94423f0241be426612d1f7b13af298fd53145552d56919eee198", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "0418b995537de4572b49d44752d06e98c356d47f2181478cdad1e9819345d79d", "T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a596131e04b11288252167292f6611c4f327a97a7fd307661106932b99dd8e6a", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "0fe3ce89854a17a8ca2952aeda9fa3a6912f4742d3a5ddc85e4853c064225bf1", -"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "018490d5aff095b07a4ce2a2198eb6577e4209db1885271b0256aec6666c54c7", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "becc8db35cd734eedc54e0675cb09693f7fcdbaf34aa2758099ffe8aef111f29", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "34eaff1882a3cc9252bb457a0fa5e34f1c808d4e198c7e4ba95f8a0bebc61867", +"T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "4a8c7ed7780d1a901dcefd042b28a47ffcd6161729d6aa519628136cacb340a7", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "29b1341ff6e2075bf8b011d249c04f7f0e04bb77150f34faa8d732f881d9fb28", "T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", "T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "a942abeb2da6b93256417f0414c1cbc30f89c7d5648b9469fa10d4588f3fad31", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", @@ -16835,41 +16835,41 @@ "T3T1_cs_test_msg_sd_protect.py::test_wipe": "59c3fe698e1b61c7d8d58258764d80bb41e94ef248688bc4ce287e3a5cbf9bbd", "T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "49b728c5299c3f8ceeed9595dd407c6940cc7bde3c77e34e22cce90262b1f44a", "T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "a459905ea805dd3b02e7748bdfd6c641a005ab6b22a13d74c75b2281a4aa5e51", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "f4bec18c2bc8fa5b78154cc654e5ebe72b490672b2fe85be9e3d835f9f6787f3", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "bfdd72c6aa5fdfc8ce295ab4073f6e6bb341d9108c8ad0e1b9a9a38a4d1b2284", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", -"T3T1_cs_test_pin.py::test_correct_pin": "9ad49df82642d124bd37604befb65398082c805191d3dcaecb595e74d20bac3c", -"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "4acc1ab091ee698dace327f93d788e6cca155a5d10ed1e9a03ba66d6b873dfa6", -"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "d320dbca74c0a235ac9b70b4f56a5024d8680f454bca3e652c45a91d166228a9", +"T3T1_cs_test_pin.py::test_correct_pin": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", +"T3T1_cs_test_pin.py::test_exponential_backoff_t2": "f3d2f99d9f25dba19c96a7e6d4d8282bb176bde60f5cce8c31a4729ae418c501", +"T3T1_cs_test_pin.py::test_incorrect_pin_t2": "0cc212c92e0ed24a30a7af5cbacf923512c2c4ca3f46e0d8f3031a356c1434ec", "T3T1_cs_test_pin.py::test_no_protection": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_protection_levels.py::test_apply_settings": "43ccf068febe7badacb4a6c3023df0c6743398cbbf2e42dc0243d3a3acf7f622", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "7296a64ebb980961ce61d900de6328cdfc3c88476476ded20ce0b3701d6985a2", -"T3T1_cs_test_protection_levels.py::test_get_address": "2aad1f3d0ea8c1a83cb4a855ea2b95912ba8ee8988cc7c1ddacf86ad91ce89cc", -"T3T1_cs_test_protection_levels.py::test_get_entropy": "cf16c164f538d7a919fa665e83bb9f15ce9142ba22f67fd4c213d2a972a96883", -"T3T1_cs_test_protection_levels.py::test_get_public_key": "2aad1f3d0ea8c1a83cb4a855ea2b95912ba8ee8988cc7c1ddacf86ad91ce89cc", -"T3T1_cs_test_protection_levels.py::test_initialize": "3c2a36752f7ee563109512fbbb0eb1e1c3408217d651fd31fe35b51fd3d4ed62", +"T3T1_cs_test_protection_levels.py::test_apply_settings": "873db1de56e60f11ec8cdc95a56008c6e8fab8060b8c42f1160083e1236cad85", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "497f350b41658c862616c335644a4fb499db2febca3e91ac1af82304377afe00", +"T3T1_cs_test_protection_levels.py::test_get_address": "90032a429c463d5bc98e67ebaf930a0455797e5dc312aec4d975d9f07e36366c", +"T3T1_cs_test_protection_levels.py::test_get_entropy": "78f1c9d9d110e61ac2304c3a446807f00d449ba2f4d649e64478e7e75b0295f6", +"T3T1_cs_test_protection_levels.py::test_get_public_key": "90032a429c463d5bc98e67ebaf930a0455797e5dc312aec4d975d9f07e36366c", +"T3T1_cs_test_protection_levels.py::test_initialize": "0168a4178e6a8f5cce83139b789b165c332bd29fa26261f535faa460676c0f31", "T3T1_cs_test_protection_levels.py::test_passphrase_cached": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "41c1e26ded6ab921c2cdf6983ba241d7ade5f4a6c6f44599153d0266dacd5279", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "a46537de59cbc20b0840aa1ae82caeecdbdbb37cc72182d27c85f0c639c9e20b", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "f9597b2076bdd34a2fe952d23ca544553a77d990412398eb53d2b152f7cf3199", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "b84fa7238f8efa3eadcd7788209d76ac61d4dc528d9d01292ca403ddf836479a", "T3T1_cs_test_protection_levels.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", -"T3T1_cs_test_protection_levels.py::test_sign_message": "bccea45a5947071e9cce6006fa6f10fe32a8a29fc3a738cd19c43101877d9d51", -"T3T1_cs_test_protection_levels.py::test_signtx": "76247f67a3ad91e8da19e7967e784a407f037ec93efdcc268f5db77dfb7b5e6b", -"T3T1_cs_test_protection_levels.py::test_unlocked": "5f5c4d78bee8ca051ea26ae16166abb712c5b68501bbbcdcf37a5bc3cea1dd1e", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "bc9e7d5ca082a1e5dad7fb197d71d05a9ef32f22f26e6391a6f9c85b7762f99c", -"T3T1_cs_test_protection_levels.py::test_wipe_device": "0ec26a0ae34a313f3ce00dcf6dea7ac25f82a8fdbcfd0cf2ae14dd23efbf5637", +"T3T1_cs_test_protection_levels.py::test_sign_message": "75a8b343ba369c5de0b144ad457ed0b973e0882bbae6b6a9d4e5a3033af04953", +"T3T1_cs_test_protection_levels.py::test_signtx": "81fe8b692870292bfc24bb8551b248fef7379c410f5f7606ecd86c45ae307532", +"T3T1_cs_test_protection_levels.py::test_unlocked": "4489e8907a840ef83289f4ce45146dd4ed59d26502af93eed4e379b073842eda", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "378a945c71732c72b0b7020845d58c5d13db1b2aa35ee45c12b73bcb15f85d22", +"T3T1_cs_test_protection_levels.py::test_wipe_device": "4bd90276272d0a3ef71aad24bf5facf72bae079751373abfd007258740346367", "T3T1_cs_test_repeated_backup.py::test_repeated_backup": "5676f651daa93d38a388175f7ca792e37ab8fa31fdf453c03c4274c714063b99", "T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "2095a791c7ef9969e28ac2880205a27539555d43a32a1b7b85f59cdca5467856", "T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fe943b937114ccf533f034b6edbca8240bceb194dbff999bb033df81656d07f5", "T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6599822efffe807a0e137c566e6f57f50a651f75f9c09885fed6efdff0678ef3", "T3T1_cs_test_sdcard.py::test_sd_format": "b79871a4517a2140653dafd70f88fe39decf8ad3d6e9cbf16ea3d6885fc7ef88", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "8759e62536a3abbf6ce7deff918d257db593c2b7761db3d155ad312e31341368", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "7f5b05f7fdd6887de31cf89910fd22c3d937a619ba7c5211e67b10ab9f35a71a", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_session.py::test_clear_session": "3504723301cc5d42e7b3963da5114b76b7129ca5859c18e0a45be0010ff9bcc7", +"T3T1_cs_test_session.py::test_clear_session": "40c4a6ec40ae360f0ff6fb9d44a13b3fa4e0d80e6281426587df5e83ae890248", "T3T1_cs_test_session.py::test_derive_cardano_empty_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_derive_cardano_running_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_end_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16932,8 +16932,8 @@ "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "5c341f07af8ad9183f96d46c30bcabaa87ba1321331755381019f2220a2692a4", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "bf7ca3828609d2567341a575140312089f5f7e3a44653af95dc42ffc53a85752", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3a67b3b1d921e8dbaf5e22db1e287dd4866d76d6b0570d70c511a6d84e1c03a8", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4a6292817cccac96a2cfe16318157ddb7b5d05c29fc8ba077490fc5e00f68784", -"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4a6292817cccac96a2cfe16318157ddb7b5d05c29fc8ba077490fc5e00f68784", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "e15ce64cde9adbad835a41f4ad6f0552704a9f58c196bf78a226a27af8e95086", +"T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "e15ce64cde9adbad835a41f4ad6f0552704a9f58c196bf78a226a27af8e95086", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a0e2f4934a27a9c1108607d1287547eed5ef166e53c4ffca719c56057cc6fd44", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "cd514eeb3d391dd75ec906812ff8ef9b1e204e270d0bbfe5c623376e38167120", "T3T1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "46680442569a65b80d8e5e1ce0c4497aa8c6ae474739277e46c96e055ab91080", @@ -17901,7 +17901,7 @@ "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "377bf2dd0e80f85a5b69ec02f367f269fc93fadae2a5a1466c2f42cbada30df4", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "044834494e4866ee399944037b9c964c8458642bf8517773c2c0aa863d6567b6", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "08be4a9c12a129e1a0dc7ba566a1c053407e5712668726035ae3500518e77fd2", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c1bb030a0fc81d78a99ba8c8d43bdeea6d72aae147a99996c72b0427dcd4b247", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9e2a9c393d9339e7e527409119cc26681206357285c2208994265db494b7c505", @@ -17916,7 +17916,7 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "1da5b40f51fb1cdc215c50e888290adbcdfd30f03bbec750a57fd3e41e7721bc", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "7b72498c0aa5de98ac03d96d99a2425d1a471011365eb41d256cc2c13568ad8a", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "2341791331c13eb184688be5b97d8cc67bad6e5eb19ab69a7c98bb8e0bc107a9", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "72f83592e7206cca6c5234d55ccfc25399462ac3ece2d9082456090e81b3a748", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "13da5a18b0de10f78a4a791952eb25c82d0bae716cf223737e3d72c811d899c6", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ab422e3b1286042d9e93999d272be669295687cae8cf856a9f2b12fc5322fa4b", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2bd1fc3144eaaa5f0a11675f76918fd90d5c17c68e810f7bca4e213283b6798f", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "ba1566aafa61abd3b8bd52e5a693cc2fda6e67b01ad3698dad215ab23928f457", @@ -17933,10 +17933,10 @@ "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5f6b4790d83655faf0b5dd79f682d7bd9e356de53407f80575f13edad7a683c0", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f5cd359cca979995ac5b43750b9bab0793ac0a654e00a436ccc14f649f902683", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "aeb225592806fbc7bc38ec85f5d25682acba3829de94f9528c3e764e11b7fdc0", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66fc33cd2f5978acd01b8cb4a7bc911c8dfb3c80a757c120f43fd20a2b6da22d", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a19cae90d66983ef2fce03454377263f359a7b74682349ea1b08d5335540c0a3", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e560f2712f7f20b649595c8479141d448f6608cc10433f87f2be28615989df8c", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "7823e4600095e72df0f4420d9503409e06aa2b115b9c6ed9c1c1b05d908205fd", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75288f19fa9ec24e42981d2a728d1347d3f25373a96aadf197fa84aa0510c489", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e6f1ea7063ea0b52e8097bc2b2c1621116a8d7d8af133d2a6d37b5345a45d98", "T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7c975383569b0c27463cdfc86095e58e2e357071da9572c3c91ba0ac02a8540e", "T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "de2fca89057ced6f4ed02087354b6665c5a7a82d7d9de3a49d6b279e0b154588", @@ -18085,29 +18085,29 @@ "T3T1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", "T3T1_de_test_authenticate_device.py::test_authenticate_device[]": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", "T3T1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bec2e530b11e9edc6ee517a6e0fc86f07fd794f944242dc70f0fc46651c7ebbd", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "253ca436bb89c4c76e7a4961920aaa760bc057cfb12ad308b1d71a46c07bfb55", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bb1ba530e37d4f5b56c6d0301d8e82c4f92df68425f92d10aa768b74e35a2eed", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "632ae98a04aba3084883695dbed143694bd113c81d1062c41c1f3585653e1471", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "54e162fca24522596b598f1977537b5cbfc31df04780e6fe119e3e50b2e34769", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "0c1a98931d50918efed9b1d4051c8aaa97ec95285bf652862127412250977013", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8a21cd511f82c8624ab715f021d901177da3a46704f5de2edd860170bfaade9c", -"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "f2635f18433d4a1cef14f09bc92cd08cb09a2e3220899ba8f0ec1a5646eba608", -"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "3b9f3318be79181279a64daaf3784c20df9599762c21ce5166249de074370210", -"T3T1_de_test_autolock.py::test_autolock_default_value": "a564500f564811ccafc67e5854a98991bf315b7fd411045682db558eb36e8d1e", -"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "159a5732d44b0b4101fc10bca71f487efb4cef1c3eeffb1b2337b9eb3da99af9", -"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "159a5732d44b0b4101fc10bca71f487efb4cef1c3eeffb1b2337b9eb3da99af9", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay": "e7fcb09412198a3d6b9f35f1f54e2ff5ef98aa2c13b480a7496e0a14831b84f5", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "d43e68b495a165fa1d69a0408d953029cf44f043e6b36ccc91c8b93605b9e8f3", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "2d4a12d25fcb69479a04720eb0cd8012edaa998d16939241aa9b4b27633ffc2b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "c5840eb3a85a4ee7880e627596b9a8353b17a7167b9162cf8b158ec5fbf21a13", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "84143a7bbe7cc52c3a6c2bee1f8e58e4d1ec67ed04a8bbdc23415e1c0e02cfbe", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "67cff0de53ba341e559badeb70e4ebf53c681ba0526284111f5d60353b77524b", +"T3T1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "4b12b89bc6b6f5585e5c6a200208522ee22fc92869444a10d3ed6df2dea5233c", +"T3T1_de_test_autolock.py::test_autolock_cancels_ui": "aae6eedc6dfcf41dbe5e133d7ba4a9d71462f05c00b773cda93617825c001745", +"T3T1_de_test_autolock.py::test_autolock_default_value": "2b6047f8849c3d2f3865a5cbc242c697552402677e347251256f6d584833ee71", +"T3T1_de_test_autolock.py::test_autolock_ignores_getaddress": "3696a4b5cf8abea7ab6c6eb419969b4797c0b64ae8874290b064041a1b0b2900", +"T3T1_de_test_autolock.py::test_autolock_ignores_initialize": "3696a4b5cf8abea7ab6c6eb419969b4797c0b64ae8874290b064041a1b0b2900", "T3T1_de_test_basic.py::test_capabilities": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_device_id_different": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_basic.py::test_device_id_same": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_features": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_basic.py::test_ping": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_busy_state.py::test_busy_expiry": "1858b2d422473de998d1884d4f71b04047927fe0b024ef1449e74cd47c25f28a", -"T3T1_de_test_busy_state.py::test_busy_state": "9a29a604c390410bf68a9cf70fc1ee9f3a1cdfdbdfa8798139efa0974309ccdb", +"T3T1_de_test_busy_state.py::test_busy_state": "a56229d4785dd996b9b769da9722ad4638a376e344c53161f00d8cff367df0be", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", "T3T1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "312cbfa84055cc90ba1bf7cc08fb396db4ac1b47c2b93cd077c0081ca4930661", "T3T1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", @@ -18138,15 +18138,15 @@ "T3T1_de_test_language.py::test_switch_from_english_not_silent": "5dbbf948c50ec08f09d99f5a32c85b563f52fbf084e176f2e77bd89cdeb140ab", "T3T1_de_test_language.py::test_switch_language": "346bcb10dcd1f2aa73cf4a9a7634255bd201ca5c2ffbb2ef57c57de141593678", "T3T1_de_test_language.py::test_translations_renders_on_screen": "1fce1554e947b0f54d7052615e763117adff35868f5d968ce35f9e77bbd7a214", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "5107e1418628c0bf000e3ce382238a444b4201b439afa8a2f3bfc8e920223675", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_msg_applysettings.py::test_apply_settings": "85daedaca01d0116b45078e62d897c87c78e2b944c327b427f88df70eedf9c3c", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "a8fc91125848ef5230fb023395e1ba64de4789911ee53975a2c0322d3dec8bf0", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0b629b05505268d480175725af79b272ba59474b0df6df659253a1ee1287c15b", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_msg_applysettings.py::test_apply_settings": "2c4195efbce848b986f8c0c44b7658a8865e97affe67de39a034a7df7390e031", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "42f87da1a7cb19ef9cde7f2c768ac163ed5b32e29644b4808c4f4b33e69115ee", "T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "009732212982e29ead5a635e51e4301b9f0bb20134c01ccda4968979446af371", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "3b1a8353a8c53af7f8b45dee997660d5b0b9eafe66e7c5c47e7d41ff2bb05df9", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "98a3719e687c6396511312ce78ccce1484a9ee05c23e5057eeae8b3f57994495", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "aa61c41bd8a2d8f0050a334bc63fc0c8ebb99101791c33b23e66cea4ac239fb8", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "647c48e563f037b79a1ceee522128e2c891b9368d7439427f9375d3f276fdd34", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "1a665973fa452a0d05ced007179fa7d2effa8e1abbda4460eb4678b99909997d", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "707f4f407445d87d4b5d99ed15a2443fa2ade9fac2ad90c2afbd9bd8b994d595", @@ -18160,17 +18160,17 @@ "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "46a0aaa1de9d5768ec769aa75c050cc6c3f7f037b54d191336ccdb52b12d716a", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "3c27d51b28767f7ef347d31c482c4cb1a3a0e857f45d2e249ba59767d8622d9a", "T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "2c6ee942ea638a22f0f7e6e2bf41ff4dee4bbb3125e917b5be7ab201a5e79fe5", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1abc366f5a97aca75f4609b0ad200c9484f07f2499fe47a78ef34a077441dff0", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a1f9f1f84086a70ad3bfe816aa411b3b87f7be0673faeaaff321284f21a3e6a0", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "322171fdd504959b6c857ee66de3f3f63382d7c5ed415fa6ad76e2329e876066", -"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "9ab3d74414ccb43156950bff48785bb0bc5163eb4823704aa9a466f7ae776d80", -"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "a32157579b77329737e16be36005de94658c26df8cdd6221f7675ecedeb59618", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "57f7ee20371ec37650aa77b5f68a3ea946aecbb57571000da77a05b9c7ce0606", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "14ae7320b9d774c7bd3c5763ba5cf7e016c553ab2000f4dce786984cd24d46f8", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "7f63bef9fa7f66b465e5e44bc67da0bd4c3dcdb8017d203178063e5c726af859", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c322136ccd06eabb0414a9dcd53b83c816850ac1e41accee72a04a804735a917", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ca090729acaf64bc3ff870edc3f96b7d951b06c8cfcb738fd0affcba7a27f731", +"T3T1_de_test_msg_changepin_t2.py::test_change_failed": "5f74ac63ce5285be5f34c6f2dd27419408c82d9ddd881ba35f9653c231e36e7a", +"T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "39586d549775e5f70e69022ab4e4671e21378767b2636eb37830c8bc6facb930", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "f76b5017e49d8f57b6abb3400b28c9d6e08cf2d1a9b8b689312395cb7394db38", "T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "efa912893b7dc06358d6ed480cde3299d5c8631ffef0c668c74d75dc2a5b0d22", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "2d899b06ab9e5a768df1b71881ac7e70549702bdcb12edc6a5849541055e1a60", -"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "7df4941381a2ee8d2627fbf7a44b1a5486ca2146a3ec7c723551067302be0437", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "08ab8706c9acef67e7b27fd06bc6d6bcbcd2d3c062ef4fa4ee33d102842c6bef", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "948c47050c0b66b7503fc5583d2cc364a6028a0b73e4ffb73cc1f54c9b96a31a", +"T3T1_de_test_msg_changepin_t2.py::test_set_failed": "3f8b99be1bedfb6f469e3412e6c6dc28ab01ddb54c14d318fa8de5c25223d579", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "34ef9a4abd36a0ea21acc87f6712e31200ef3ead52e6b59e559d02589a39bd19", "T3T1_de_test_msg_loaddevice.py::test_load_device_1": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", "T3T1_de_test_msg_loaddevice.py::test_load_device_2": "bcc375efcf02e45ec7ad8b97fdd2611360542381e6b5ecf087c66a5d6eb155ce", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", @@ -18182,41 +18182,41 @@ "T3T1_de_test_msg_sd_protect.py::test_wipe": "93cdc75a6112304054f645d19c0ef17fc32bd2f1e3abf7b2b90a3d204c72a328", "T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "9ca49844a75ac43f361232a76fe360f5ec1652a05f6c427f35b687798151b102", "T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "b74617a1a728933e965d6964b5502be7b3ca9a3227d23623ad07a2ed18eb9117", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "000904338e45c805390ee084831438abace2c8f8020aa054ac929e6bd21ce522", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "3794acd5407cac3195a9462d63fd1d4510a4a6e4214de0eab5d04a07caa367d9", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", -"T3T1_de_test_pin.py::test_correct_pin": "7f1cbbb73a780182e13c45770e662a1e41d6aab612522aa06ff68be31e53f1ca", -"T3T1_de_test_pin.py::test_exponential_backoff_t2": "69ab65f0cf2c2376a9862a643df09117268a40f4db24b650b1f048c7205f9eea", -"T3T1_de_test_pin.py::test_incorrect_pin_t2": "b381f965b4b5cdf190c0981bc41f89eb6e7410f5ef6c6459471eab5a996800d8", +"T3T1_de_test_pin.py::test_correct_pin": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", +"T3T1_de_test_pin.py::test_exponential_backoff_t2": "59c7afe4a6f0ba70645b1d951ad7e370cb6883608636d675f8c6fb916b95ad48", +"T3T1_de_test_pin.py::test_incorrect_pin_t2": "583e5b759fe89de3e4011c1861f515526ebaa95c421fdb64ae50a749839e9dee", "T3T1_de_test_pin.py::test_no_protection": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_protection_levels.py::test_apply_settings": "e0c14406dba9920f9ebe8a8c8ccf8a412e1cd90082e94eb4e4ccc75e9e674ecc", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "8c4628ed55a9e3bf8ae82caef853166c93202b33213b67689f39d47e4decdac6", -"T3T1_de_test_protection_levels.py::test_get_address": "d3d83a663908ff38d3f1b7fa8babdf18debab8fb7dd381faec638e1338bbf2ad", -"T3T1_de_test_protection_levels.py::test_get_entropy": "711b8b002a764bb7b1c42dac53b45006342cfd13ab57db9a08400ea4f4d9da4d", -"T3T1_de_test_protection_levels.py::test_get_public_key": "d3d83a663908ff38d3f1b7fa8babdf18debab8fb7dd381faec638e1338bbf2ad", -"T3T1_de_test_protection_levels.py::test_initialize": "f6095f90b2a55c763ba825aa26a483ed7b402be4d27355abea65fd05340724e2", +"T3T1_de_test_protection_levels.py::test_apply_settings": "1e699c98657b790fea30c938a23064f7bc935344b6820d3d4f164fd48282b9c4", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "541a8bb46980d1532ec772a7988dcbf7457fb7976ee27a237d0fb8a546a02ee2", +"T3T1_de_test_protection_levels.py::test_get_address": "9205f3ecfd1c4f38f7f5fdca932bf1c86aec98381d8d271eec856a7fa6b2ec28", +"T3T1_de_test_protection_levels.py::test_get_entropy": "eb0779631d867376a3a73c91f61bc8aba22e6d6ca8197be2d248e85c7b9343a4", +"T3T1_de_test_protection_levels.py::test_get_public_key": "9205f3ecfd1c4f38f7f5fdca932bf1c86aec98381d8d271eec856a7fa6b2ec28", +"T3T1_de_test_protection_levels.py::test_initialize": "4c550599be7b929c222516c352c5533ac3222536f3141b9c22535f14dc9a2224", "T3T1_de_test_protection_levels.py::test_passphrase_cached": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "a751b046969fef5bfeec40aaa5279a700f94a453401f2500910072273c65ff13", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "7697c3c87b24cfe5e6cdb0716d6a0c1f0b1e7afddc416d7ae99232d405debf89", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "7e969b268081c0adb04bd3b6b1b912e018f030a11975a26f5825bf29c24298ec", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "5b4b7bfe2693cf1ef9d66a2188d0333849f043846b2254d5285aebe466aeb192", "T3T1_de_test_protection_levels.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", -"T3T1_de_test_protection_levels.py::test_sign_message": "e6dcb50c8305b7711989332f9635cfe6d3b4c147d8ec3e78b32855680b0fa520", -"T3T1_de_test_protection_levels.py::test_signtx": "affa39b70c189df2c82d805d43a5a6e8e9931bb59cdfe64fe340fc335c924c7e", -"T3T1_de_test_protection_levels.py::test_unlocked": "3294e6032f71b6a619ddd5c4b31a925c959c361aec6882213874931e19170b3a", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "531472cf6b5ba0a2439e34e96ccf67520aae484c3f12f9ae0386ffa55c31adfd", -"T3T1_de_test_protection_levels.py::test_wipe_device": "38de5048515d5096a6f1a23a25e85b0bd11b54d351c178baafb23bf538025126", +"T3T1_de_test_protection_levels.py::test_sign_message": "869cf263ea29b15d2157a2c481ed4a0e3ffcec28d1d46f191364808f989052a5", +"T3T1_de_test_protection_levels.py::test_signtx": "76042a712f97da440ecbabf7e0288dbb59093b8e6709b3e34537ebd1d3a2ab36", +"T3T1_de_test_protection_levels.py::test_unlocked": "47f6e4a3a24563faff2e25b3b28377298806494cdd8b9e90f2f3fc144baf9473", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "bf13077ecdef34ece8b1369b443d4690fdb254c80aabea9a17ad716569331f7f", +"T3T1_de_test_protection_levels.py::test_wipe_device": "ebb357b41fbdd0d78491a5864c12f347bea2c08f1b513caf30c45f6e612f2883", "T3T1_de_test_repeated_backup.py::test_repeated_backup": "f4cc98eb442303581db5263cd2f55ce99b24ed33809261b964e9861c38dfb16c", "T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "dc4ae69940e8287ae558f9ea0a3351a1ea65b5fc50f74926ed6d857883273baf", "T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ef4c2d9d1837f4228e8cbcb9f441da062e135c4be39dab6e85a62eaf393bbdb7", "T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "787d2de8126ec4c1ac05db5df72e96c109210b1b88f650e6c42a68899159755d", "T3T1_de_test_sdcard.py::test_sd_format": "6f882ef6d4a21ecf70c233e71fb27ec4ea9964bc8ef59ace882849951c8d15ce", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "a9ba8d8c61f3568b1a530163d06c6d66bf3631aa585ecf26416762fe4a475529", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "0787419abb95fdb661396fbcf88eefb26872a5aa70261f8dd928021bb52f7b73", "T3T1_de_test_session.py::test_cannot_resume_ended_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_session.py::test_clear_session": "b16e73f3f3ce3ddb908c72e3d508e1e46b3c2e24d8686d6826639ea4ffce186d", +"T3T1_de_test_session.py::test_clear_session": "3a45ce701d52d3e326de9e5999d755ef4a6da82008183153b9bdeb064a8fd772", "T3T1_de_test_session.py::test_derive_cardano_empty_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_derive_cardano_running_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_end_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -18279,8 +18279,8 @@ "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "672c577d3649ad1a8e58a4b988056da6e4af8739b3e9bb9c820f5ea52d9b13c5", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7ac50950de855c9b70dbbe07f76c726a76fae6f21411c929dabe0eff223510b1", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "163ac3af44cb42bce9f768c18ff371ac6a04ecddfae2f45b8261683b9238c90e", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "a7fae83a3ea52bf1ff33451edae025dc40486d6249264028bd65e2616672cdf5", -"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "a7fae83a3ea52bf1ff33451edae025dc40486d6249264028bd65e2616672cdf5", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "2f04d11da022eeb7d1779a59b20a9ee1b8d88057740ac7b5382de6871408117d", +"T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "2f04d11da022eeb7d1779a59b20a9ee1b8d88057740ac7b5382de6871408117d", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "b42504d3a07a6f681ff310a7ad70e4e4eeebba29225a4c83626c3bed3ad1282d", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "3d66920b0f4105ea7d0b18ae0746cb9fe07ed277059e74d272963b95138d9038", "T3T1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "9dd7d87298e4910f49c24539cba0a1b4162a90b8598ad92ab754f6007d5ed1ee", @@ -19248,7 +19248,7 @@ "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "66b1225d11b1bc7bf84343f7975d8bf7d091b1b36ff6776bdd73b7bf1558cc07", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "873ece402b0e41e5ddbd0e4953267525e3de62c127e6776e777328506db7f98e", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bd7a32c2a758acce0115d56a0a3cf218fde8acbc809a642cade34562f237ad74", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7401444a9fb1614a1bffde3b8fe8bb5c3f004061f414b2f8f0c5becf64b32951", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "8378637d3af407cc237508271756bcf103232d9ee37428b5cd59c79e5fcd0900", @@ -19263,7 +19263,7 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c53e4bc9598f7001b18b80d0aecebdb89ee6a2db0620d85e163f86209826e3f4", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1ad1be612b394c8852fd60a5bbec0c6887d817c40402188947b642c18b4ac23d", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "00f461e6980f4ca1ae208094b68989ef16489793312cf586201c899d1ce7ba41", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "0fcd4b01d3c9bd49716868473e6a1b04feeffbee79402927a66e675e7456190c", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c75ee88df23821a939a08961f514ee0ccb8c9a1beb736af3934a4912560a3cf5", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ba0c77f7cccc8a67f6453f9bca618683beaa732435e171b25037cd2befb5e1ff", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8fd1e3b92bdb42c788b2f55120f4002554949524d04306e3b0c69a48c7ee781a", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "6fb1403f43f18903c39e47777c7178894ff2ceff55c256b4584d24a139c9209a", @@ -19280,10 +19280,10 @@ "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a35c2c696076d5ef1fd74d475dc6f16a39611a2df7f2997d99d2264783f64020", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2d8aa75244426465af0897f79289dacd1feb144f52ce8963ba9d7632bd8ee234", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "48b9844d0c0a9fcf97b1ef2a331062d9ab73c511f2c0cd7796ccbbd4672f697e", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "954abdea6bd7631bffdfa93d1129409adedb07cc9069d42198ec74ca617b6bb9", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8d7f2ec0d11c1ec34059633a59bc1a9f9f7f3527e88255e305cbba953ab9e004", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "40926ad33a80518e4df64768211102181facb3d844975fee132e18818446b925", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0df479fbfb851723bf68f2d65a7628a5a72ab10e8fe04ddf7d937c09580a0486", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5aea4645bf5f7207de95d78a19c4888c82d31cbe6feb0003945a74b92567e01f", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "9af37ae80356dc7de6a5eb6c7ac7b9e23171c4e37f58a60927be0120c7b0dae4", "T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4b2f92655c3ddd6d830b994e2665e5e35b179a5e3973c72ba00ce16085e6bb4f", "T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "bd1af0c41f234b34eac2804f917c8270cb3d7004f1459e5a492aa7f8d4b5da11", @@ -19432,29 +19432,29 @@ "T3T1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", "T3T1_en_test_authenticate_device.py::test_authenticate_device[]": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", "T3T1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "3f5d5d05496e631988c676244acb06fed2af9683cdd70c92fd847788ce9ce3fc", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "5d13f3259b29db857e266ef8baf0adc0db232749b2575f028e29fc23773e12fe", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "288135b8af2d329dad73c7d1fd37cf01d884bf03563bfad5ea4e0e857222bbfd", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "be9f3a489ed459d9427aa7e51ffbddf6beb267b3d1aaae10436676ecbb914196", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "db79b7659a3fe24f004988440fed82341ab68d375835f4cb4a70646eb90b021c", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4e8250456b8dabeecdea54def72151fadbb872893f419678f6bec732e67901e7", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "42e320e7d377dfff4516be49534adf4566b1423431622bf40aa923d5cbd32c65", -"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "c44cc2cc726f4ec984e5649128058098b58f0dce3d1f4f689aaae58d823da965", -"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "9574587a2882c9b39f4c13214d0f322be0b6d3dd654ff1539957e73dad92dc99", -"T3T1_en_test_autolock.py::test_autolock_default_value": "25713aa4f34cea731ddaae914fa0a2afdf0f3bdd1574b8303aa23cd6401c9153", -"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "fad34db497940fbf10e215f8b27c37fc914f708dfebda1535bd4ffb8b555a32d", -"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "fad34db497940fbf10e215f8b27c37fc914f708dfebda1535bd4ffb8b555a32d", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay": "7ac5994d67def13568f2ce4c4724d352808f083a60bae522279e73b4f526a5ba", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "d3fb2e73cda44697b154a205ffd78f166ddfba11a6e5c9bf942529cd6ca62532", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "79ebae5437b2d2c4f70959be686635a2246ff88cd021adf1384b3363a7d56b04", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "93d22d46cfe552b50a9e68da249aa931352679a983048b761c3e1550c7806f6c", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ddd4ead73a0968f4d0448b3d0be1feaa9e65f49b32871ac68e5bdb90e2ed545f", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "a2b23c582d7f5d80c76a9cdf774b17c98fbc735cdb331ed13163a8975ce0bf5b", +"T3T1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a1bf463fde04c6d6a048ad4b3c342bdecfbc12df22c233d197460ca79d2aeaf4", +"T3T1_en_test_autolock.py::test_autolock_cancels_ui": "6205b5805bafed270c1d829fc860f726643d3c1a8fdbdc7b33b687ebf9c379cd", +"T3T1_en_test_autolock.py::test_autolock_default_value": "439938da194946bf7015378dfbc95d8694c54d6c0a5e268ba40cdb8e9e887644", +"T3T1_en_test_autolock.py::test_autolock_ignores_getaddress": "9f2ff31c39415bba125a2d79b2eae204e6349040c2b3a1765e4cb401421a7848", +"T3T1_en_test_autolock.py::test_autolock_ignores_initialize": "9f2ff31c39415bba125a2d79b2eae204e6349040c2b3a1765e4cb401421a7848", "T3T1_en_test_basic.py::test_capabilities": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_device_id_different": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", "T3T1_en_test_basic.py::test_device_id_same": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_features": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_basic.py::test_ping": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_busy_state.py::test_busy_expiry": "cb25c39112d09788ad807c490cdd65699b5be8262db1e0deba8c71979242845c", -"T3T1_en_test_busy_state.py::test_busy_state": "9384dbac1e863e3b064ac54240ef764de7ba0d21aa825c3cac102993fa3efa45", +"T3T1_en_test_busy_state.py::test_busy_state": "b6d504d180dfb4c670d92eebe8b4b644d64a9c629680ec041745ac47e95c6ab9", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "f9a11c51c2c0bacdd7383b0d6f1425324257c194819385303246d757e3fa659c", "T3T1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", @@ -19485,15 +19485,15 @@ "T3T1_en_test_language.py::test_switch_from_english_not_silent": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_language.py::test_switch_language": "ba498699e59ee218fa4ea4eb8c18ba63fe036cd2e7218dbf12e6512b6ce71ea8", "T3T1_en_test_language.py::test_translations_renders_on_screen": "b0a8dc19a95d153210ddbf543ce59dadbb0997b8fab9ecc8a6f9f26dd4262ab5", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "2031baca050c3d87467f486a458d1328d9de4708aefc8f5f56d4fe312e27c174", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_msg_applysettings.py::test_apply_settings": "ade0da4726e3d8746369a6c548a009dba556b3bb41afdaa42edb3d1b8b2a2526", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "5f7771a8e13e612938cb67954a587a3d92971f7020d03d3113b55181a78c21b6", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "3055ce895541bc5543853d69c7e16b13c22e3f73cd221e438c9c490a0bf89033", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_msg_applysettings.py::test_apply_settings": "4aa06903fbbe34f4e27654e7dd030ff62e686c5194fb4ee00d98e2d3d5c187ca", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "e89ddabe256ca5f8feb558f20e0d4b978ea83f0bf5b60c0abdadcb677becd928", "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "75a8135cc46a082b667abb29e54c7549186b1c4469a912b02ba67ff3841b58f2", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "a5e5b8d4a7af8c66c498bd57c68946ccd6ae96ec72a53a7564889152272aaa17", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "d5872d2a9f2090261903ef41c118a6dabcb1fca85e3349bc23fc7dc04973c71b", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "d07c2cc218fc9da94f861c2bcc8066c318333535c236bb76600e03ffdf9bbc1e", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "df77985e171a884259a5684f654c5d14c6bc008bd068f5d07cb52f0b056ed252", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "9ac2948f5dc0d41632d5717811add555ed1f5bd5b9670a1296427a23569b8ebb", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "4677bf2151496ceeb89c3d9d2f7627f957416ddba197208bc4ae02d931bd16ca", @@ -19507,17 +19507,17 @@ "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "6867b3fefe40bbdf848693ad940eb096c9974e57e476f1efa9201c30502ff621", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", "T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b7cc122934eae41d2183f8aba905270b50a1800581881694cd0a5e5eeb608ff8", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e774271cbaf7acdb1f91eabd91b6f6b06357628a1ba5c76e51b3d90bb5f06ba4", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "59b3828c24efb638b20e5699027ead8041018be14abbeb2868f3d1ed2d19d546", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "22ffd2f9e79a6bfe94a11613d8696f65bfd15092fb5215fc1448ef6c86beaf18", -"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "f74b695033837301c692c05d9f415bae8a11c5f40ff8343a693423d2b151ba03", -"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "3fa1022a892bc6ccf591433688fdb42b304b4f805772a81640c9937271713782", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "7ab86b8ce3bcd41fb1a9a554a988d0f5864ecf526a281e23605ee7ce18f4ff4b", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "74cb82d9fb2c64db0776745207a28cbd8ae5cfc369834036ee6ff34f029d6a95", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "7112b4525ec62c71b656de67404ca39d20cb74870b50aafaa08caedf57935fdb", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "0177323dd22623f82836638798699157b31749d63ebb0e1c160d0f8b31a23b18", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b5b69a25f57d8ffcc3437bc3335c9aba0fde3e342bd2cb55fb88dbdd778d793e", +"T3T1_en_test_msg_changepin_t2.py::test_change_failed": "f551d22adf70252a3799fa25dd8e3a5974ec37294a6b13e84a965aa11e0cedf1", +"T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "1b0800e690fc8ac2928b70de551669c18dc1de84381db40e6872f8906fe08441", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "0426066103ecce0aff48ae902ef25a744f9fb141fe2988d2ae08a9e7020f0240", "T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "f91581bebc54a9bd1314dcde8875243b791f5cf6daab448018825900b4ee4a99", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "984b966dab7792fb14c5f9938e192d79fda5a7c0cf26e0bee184b7d4cf4e09d8", -"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "5c640b3305e92f2029b09d617305382eddbde2da01935ba7a44dd6a94e3ed932", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "573fbeb6fc9acaa755c8cf4decc654482312d94cdea433b8267b6ed8b0e0ad0e", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "ebb5fc37cb46589c4d1ffc3628c75c0060c1566964bc9f2ba1d59e16682c2ee4", +"T3T1_en_test_msg_changepin_t2.py::test_set_failed": "8efba7eeda1f478b36a855615587cd429596e1084aca4e3ec2b57d3362391fc3", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "793cc361f08cdcbe035955ec2e8792db898a209c22b044d518cb2068be504373", "T3T1_en_test_msg_loaddevice.py::test_load_device_1": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", "T3T1_en_test_msg_loaddevice.py::test_load_device_2": "684580ad2697540f07f7512b298673ec2d5b75f487b461ab8211d8290fd50262", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", @@ -19529,41 +19529,41 @@ "T3T1_en_test_msg_sd_protect.py::test_wipe": "0a8bcb6567ecbfadb48f0bde53367a383faa6796354fa2de04ede1cc08da64d4", "T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "2f39eedba0ef8010f232b77606c453e06e63c74a54f08117a60066d64412e589", "T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "8908a0d44786f8d60477d04f54dbdb28a059358bc04f093daf4129c89e6b529b", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "afc88dd78d678a5438a060572e1738ae2186894a2952aaee59b29ff92831d403", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "147dc4c1c866f310eec397047403a2217abbdd740b4cc70b78466c02d4d6c56e", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", "T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", "T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", -"T3T1_en_test_pin.py::test_correct_pin": "549251c387956223a5b394d41852a7ef9d5bd3091fefc08b24c2fce0e300d20e", -"T3T1_en_test_pin.py::test_exponential_backoff_t2": "13741461ac85f991dd8b51158a504aece76a45718afe4e359a611e09af09c903", -"T3T1_en_test_pin.py::test_incorrect_pin_t2": "10dcbf9b55b70283453c843eb4ef97173e9cdeea58d20a121f65ac0c4e9aa1ea", +"T3T1_en_test_pin.py::test_correct_pin": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", +"T3T1_en_test_pin.py::test_exponential_backoff_t2": "6eebf99aeef2d6252e025f84d9d15fa86f518bb1aa7dc012628f2fa9e02186c0", +"T3T1_en_test_pin.py::test_incorrect_pin_t2": "8abd9089996ddeff3814670b600e0dc4f62d70b5648b48ca5ec0e4bd52bfbd73", "T3T1_en_test_pin.py::test_no_protection": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_protection_levels.py::test_apply_settings": "d0509d1ed836dc1aad9d64796bb30cc4c6112ff12211b35651c6ecd52ae6eada", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "a3294dfd27f8cdfe399d4c8d081e355f0dfaf7d0156312609dcf35c0f54be256", -"T3T1_en_test_protection_levels.py::test_get_address": "de2a29df408e0f19030fabb4af740d6854ceb595d1c46a7c626fd6d41e2cc567", -"T3T1_en_test_protection_levels.py::test_get_entropy": "875e1a7613c30e744cc948c7b08b5ba1841d5082ce82d0dc81d4db84e046cf78", -"T3T1_en_test_protection_levels.py::test_get_public_key": "de2a29df408e0f19030fabb4af740d6854ceb595d1c46a7c626fd6d41e2cc567", -"T3T1_en_test_protection_levels.py::test_initialize": "46ac2ded8d475b18ac328c8da3a163872db39ab28f6a66f3b7b8fd3122796ee8", +"T3T1_en_test_protection_levels.py::test_apply_settings": "c0a5c599204244ad62a1ef3d6e6552b60856b46886b0ecb6496bb7b745077617", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "ca3202ea619066ee6fed6bcc57b1cb5a645c9bd0da55f7d8cff6b2400bb3d02f", +"T3T1_en_test_protection_levels.py::test_get_address": "62ac6965d10de96ad14749a061768db346a7f3430014d22ddd0d941ae0cad6f2", +"T3T1_en_test_protection_levels.py::test_get_entropy": "e926dbd19f8f717652afc4b2569882e3ee04de90e8df2a2d743c54295f943b25", +"T3T1_en_test_protection_levels.py::test_get_public_key": "62ac6965d10de96ad14749a061768db346a7f3430014d22ddd0d941ae0cad6f2", +"T3T1_en_test_protection_levels.py::test_initialize": "a770e799f861d0b0c66e90219f1a41f0746c9d82ecc4c1acfc7304d0197aad48", "T3T1_en_test_protection_levels.py::test_passphrase_cached": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "56175abda93c4cad04f9f948af7657a10a0b497d3d57a2049df47075fb5312f9", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6d6b0b40fb3d91b8fc939343b77556be5881e42e8ee2099ae831b3cfefcc21cf", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "35a0f7a07903f3ded1e163d441aae43af83ec59ea16fc52dc010b76720f5c4f6", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6accee9009707acd9c80a1e4b2407b0469e7c82e17a8f9f2d44511d0c31a1c3d", "T3T1_en_test_protection_levels.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", -"T3T1_en_test_protection_levels.py::test_sign_message": "742d51d6b2756d555c77e3afd4d008a6174f8a986d80c08486ff4ad7ad2fcefb", -"T3T1_en_test_protection_levels.py::test_signtx": "e5fa6a319220a76c07e774c7be5722e2c549ded81c45b14ad31ef888705658d2", -"T3T1_en_test_protection_levels.py::test_unlocked": "1e1acbb28c9a60fbc1e76d5267b4f3569422c135cfb9f3f5016122be51a4c2b7", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "f645957539c59e5bc7c890ea71d9ea221bcad97f9d141e12a2440725785aaf3a", -"T3T1_en_test_protection_levels.py::test_wipe_device": "52c4945ee2f3e88dba5d8e4ac99bc31a8c4728f5dced88804b191d1977815b53", +"T3T1_en_test_protection_levels.py::test_sign_message": "6e3cc9a3600dc290d2637ba28cf966d9f063114038e9c1365aaf452ed3663d37", +"T3T1_en_test_protection_levels.py::test_signtx": "b7b31f218929c9d1899fba416ad2e62acd055f5594fb010bf508b095d259ec9f", +"T3T1_en_test_protection_levels.py::test_unlocked": "93d9edc9f59c738f0cb083e96f464cae99fccadbd3768a1c2a11258d8eeda9e2", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "39bfc875b91b199981bdf9505447594ecbbe553dfbedf05e45e5a13c812ec761", +"T3T1_en_test_protection_levels.py::test_wipe_device": "2dc2c452d2907afc48d1d622ccd3ce692ab3633a0a6e425bdb19014c669a237d", "T3T1_en_test_repeated_backup.py::test_repeated_backup": "1b239f19b1516e8441f948558172f62b33aaa3814b9365cb5b022522f3382557", "T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "a6cfaab92ce05c58b7f6197f35f37e15ee5720aa0b62973d9025ea77e99908ca", "T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "17dca9f48d8fcb743fed4d79556ba687e344b98383c411f89354942969946865", "T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a2950946cf65e1eb983828b84ec7957523a0afb780fa2b12601b649e92e87119", "T3T1_en_test_sdcard.py::test_sd_format": "20a0d01e3d61f415fc6ebd89727ef893a99dc45db308867625e99747dcff6dd1", "T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "b18e90f6f0e926933592c32156e7ac2e1d9b7d55d28d6ecd6dbd3dedbafa7232", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "e3bb1627037f3dc09e9c83ac64a5c1926c811e07c675ada1484f921fc7dab1a5", "T3T1_en_test_session.py::test_cannot_resume_ended_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_session.py::test_clear_session": "c679e27a7b2e733e3827d16344e2bb9daa3e2ad58220f7b5a2cb6eb708b9a71b", +"T3T1_en_test_session.py::test_clear_session": "15a21a8acd4d25798cbdb312bdffc7a55f6e4905c32d706187b9ad1bd118d9d1", "T3T1_en_test_session.py::test_derive_cardano_empty_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_derive_cardano_running_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_end_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19626,8 +19626,8 @@ "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "67cce35faad540e24df64451de67cccc334b76a931449b5c6cb173768cab0e64", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "214466d2c0357c010e2df721b450736747bc57268d566f370973a3802f13eb22", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "48883805f726692aa612ace74c51d0b0c6fe06eda6898d41c80b9c7eb3e44030", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ee652a595477d5c92280e3b947eb43b1fe5f26e904d3beb6294de8bbe6370734", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ee652a595477d5c92280e3b947eb43b1fe5f26e904d3beb6294de8bbe6370734", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "e1859ba5e672d65a1cdb0934a2ca75df75c611a181406dab1bec4a720afd5175", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "e1859ba5e672d65a1cdb0934a2ca75df75c611a181406dab1bec4a720afd5175", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0efcb7411cd00037f181341983a0383978527ea683a9ee7b2f6a67d015526e84", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f19ba1a048878a769fa8b842fd2a23dd8533e0b72c501fe5cda93a5ff9075241", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f87ad1b10316f25c869668f96fc8a6bdb47b3d9bd6aa7c201882ae179f2a91b4", @@ -20595,7 +20595,7 @@ "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "614fc559477df4ed6042b52356ab590272e2d3f4e5f6c2bb5422a0f5f9bb2bda", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "5daf4fb93cbadbad2fc761d3a786423ae628a6a5eb762923743868b066be1612", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fa24fa1d667aaeb7246e3462f2311d4b0d96b99d482dfc8f0f75bbeabe6b77ef", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0dfcc4a9d35fb7380806d33d91fd6df54619efcd567f83449fc6ac7b587e626e", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "33b0be8c5e4527b5aeb5f6b0cee835b149874403772208e8c7c237e7317251cc", @@ -20610,7 +20610,7 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7840b4ff25668f4397bc1ea41c5c37554f59a7bad2da6576940f4eb8bafe3f90", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "485a0ad1cc4e2392b3c95b0b836702ec16c346f97677bd2e532afe2ecaabbaaa", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "06ebae772991278bc3d70d54d5973cece3a23cc48f540cdf7c53db0ddeca8d9e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4bba405fbcc0059829b07e3b661f0ff3147a933eb70f29da0f9eb7f42835b01b", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "8c3bd89c5b9067ea89dffa670f0e26ab011eb839e57ba16d2658b3bc3f22567a", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ae091a31b493416009cc1fd78e91b03fa6e8b4be4c0b2cfdd26637f9034b6dfd", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f9f371a6004ea49bd9875321624949d7a1ea79086001bac0014fdab2e5c0f4d2", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a322fef65a4072339de24ecbc6396e08a5484dc95e732373f7ac2095a733db93", @@ -20627,10 +20627,10 @@ "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "220dc30f25353a2cb7c7a52b40f2cbfd74cd6bb94cbac4e2dd9a15acdb5995c6", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8c8de914094afa6192e1a9dfc45fc35bfb8d0f06486644f125c85c195e0982f7", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "24b5164f6e0d4ce59713dba71c2126461e7fdf54ab07bb25903db1651fa109e4", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5c493480c2be8018b01844522d0adc6307006d94359f641147dcfe9bf5ed7a81", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9c707ef0861a255cd27ca1feb26495fb82cf61e64f60c4eec7411d62c12e8a54", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9eab11e68ebebdbcca82ff01a7ed361693884fac93b3b52fecfcad7523a9dcf4", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "66e2f167bffa58704c1bede0affe4644d73184e9450ccdcd13b4df02b86c3dd9", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c5fa2aa115190e79ba1e3b1184b56754aa8199c7d2468bb3f8b32e702ea5475f", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f17684c72d0810d1e0223ebf7dbb3f65f1c15507fd2a466b2d0617edb5318f0c", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "528a97d2c6165861b8232cd886953f9f6365cc53cfc9b20ead9ca2e19cec516e", "T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0cbe1d5ec2f29ba82ae1b0eca9e0e59a020411704388222475746d85d88556b7", @@ -20779,29 +20779,29 @@ "T3T1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", "T3T1_es_test_authenticate_device.py::test_authenticate_device[]": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", "T3T1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "8c1d10c341f13ae319d7fd0feb145e5d62654324ff2b43332ab58ffedf55f81f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "bfe449bab81ac0e5942dab84633d6a383e61cff35f3a74a2e511609940731d05", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "bbda36fefa9d81c132837f76db13b28e75f62a86eff14da19a910bdaf8b6bced", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "479b89c9478792e049eea05cf3c256db515d8f9e5d92ad644e23e68d8a6ac802", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "aa6cd0f34cd0f4a010e6a8f099037f810635fbf5dc8041d1a57b45fee43e3fd7", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "644c19e54315c08ba6c08f2cd57640f5808efdd04d455aa83a03dd46535eeba6", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d14c29ed9b2f94fd8d9486432945a4d06323b967a6e9205189471fb6a4d8700f", -"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "f3bb2c6f6e8ea4fde676784f570f733863c5367d2b1b2f3edb96161d47f8f6b4", -"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "6a857b6b55e8e5c53e962949b86acc659f7450846a8a8df47969b09767a0d66d", -"T3T1_es_test_autolock.py::test_autolock_default_value": "56e9f5abcb179842d612673acbb40db45bca091191cab4aa487236a2b58b2cbb", -"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "1cbf0deb34097497eddd880796056f409342fc5693610911d46c16ee6793958e", -"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "1cbf0deb34097497eddd880796056f409342fc5693610911d46c16ee6793958e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay": "82a53777799d4e706a1a602eaffbb436d5c1236710d1d9c240e94b340bb73d50", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1081fc19b25a49865b934e495bf26fbd612f6d02103281b4591829ecdc56154f", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "48e1d916d59ee1260d3e0e86aedc3ad50206cda6ffafbca7cd3a72128f7eebc3", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "8fd745b909999209b787da8ee191ec4dbf1a3e100122d5eb6800286d37f5917e", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "8a83f414f44de00fa54d8c8d257e2a519077686c0336e2f5675d4025f6bc0349", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "3c9be1cae6914935d4e4a82c76ca1b736ace82be06680bcc0174a2cff90abc0d", +"T3T1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "5c76a6c6b9aebbef3cfe1d700fced5ea45ffa4a2fe98d77e5e457958083b54a0", +"T3T1_es_test_autolock.py::test_autolock_cancels_ui": "0f7e37f4267e00e587f71a9c5679ff8f5636072a13286bd7d97f2f88cfd7c0ed", +"T3T1_es_test_autolock.py::test_autolock_default_value": "d1250723835de93534f2f0240bdf524e4211860e36adc27f211e231883b8eb16", +"T3T1_es_test_autolock.py::test_autolock_ignores_getaddress": "6f5b1beeb28bed2f5d39d469a5aa9d8efd92574113799add217b43c8155a340d", +"T3T1_es_test_autolock.py::test_autolock_ignores_initialize": "6f5b1beeb28bed2f5d39d469a5aa9d8efd92574113799add217b43c8155a340d", "T3T1_es_test_basic.py::test_capabilities": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_device_id_different": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_basic.py::test_device_id_same": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_features": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_ping": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_busy_state.py::test_busy_expiry": "277899ea04ce989380c13c50fcf28367c9b83bc71ed26980ec022b5fe2b85c17", -"T3T1_es_test_busy_state.py::test_busy_state": "01a59f0db9d71e844cb5a5c04c231ef5a42189137292e596f481686d2f54024a", +"T3T1_es_test_busy_state.py::test_busy_state": "d3e743702a66366a40ede4ac1e601edcf581612cbe91783a97242eb9ab50baa6", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", @@ -20832,15 +20832,15 @@ "T3T1_es_test_language.py::test_switch_from_english_not_silent": "341aa1930c0757e8f6b630760a40ada16b26b03913c9052efac175b01d2b6cbb", "T3T1_es_test_language.py::test_switch_language": "70376283f804705961e1da59eb547e1aafa21a5ee4252683af15ea306cf9c0af", "T3T1_es_test_language.py::test_translations_renders_on_screen": "c8c6c9478d53e92bbf12dfbc31cec270b68010101ecab5a761ed2eb7f1d63b42", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0b906e49e1ba49133c6d0cfd82b5290265c992e3a1de1960794d55a22e5e2ddb", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_msg_applysettings.py::test_apply_settings": "1c1ce39fa29328a68113c4a87dd1e45fe0e6a9eafc9bbf830d230854440ac595", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "afae595a157f31c901b374507e7ed36b28e4276a698131e8a62134af4808dedf", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c5008d38d4b1e86b9d2c89ec5e9430c6387d3a25743009d90607daca1fc42fc6", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_msg_applysettings.py::test_apply_settings": "27aabb15a55dc0418bc056234ad0c1bfc4f72bba73490ac3945b21aa8abb967b", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "7e7e88fb2de600bc7a88e983a185ca2ef0ed47beb8432131eeaaf2747dd94028", "T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00c5d64174cbfc42469465b5e80ba5a1ba5eb4fb56426994a9b5ad335dc8438c", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "a4ab626d1e42dd3b46f0663f9e8a8df03659937c239824ed73830b823403471b", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "ffd8c090f0cf75a4b44ed919a893661f57092dad7b884fa1862975812457b3a0", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "43f2969d66acf65b7138440e32c21c349c554894694219819f8ae3c0c50b7b48", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "f12add2d1795e22eeb646955567aee4e091ddaca994f3ba5ac50798934837677", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "0cdbbcc9774b858e0694802f24f0d89241b7c675a0732bd3b39866d17ce000ac", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "176744b9af8759a11b5f782ae3e7e6e65a3526203cc09f574304860dd3ae1b06", @@ -20854,17 +20854,17 @@ "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "d841c90895f7736f16584bfd74811a7caabe38a41e738d3eb271fe27de56d96e", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "12cfa14a2e751148453d7d936d7eb5d898683e61a739f6a7451601b7a091209d", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c60ee9c656fda0a017c6b4c48130c90979057bfd69363c9afc2a2175b236e40e", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "42e366f67d02e0dc642ad4937f7e553cc86e7495528d25b73cc0419ff6460acf", -"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "14253d785526566da2d494cec384b9eb690681cc86d5285f13bd59106307ebc7", -"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "4def375db126e1ba85f44bf2d2498479ee8d75192ac3d0b1dd69165389a90c90", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "73ac56520a2bafe4c44d7418957cd254f16aa2c4f1c9b6ea8836953fc939f2d8", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "6254dc2f26e917a00a6d0934e1348fca29000ae7daeada3185e1da642337ba16", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "991775d99ab7b62fde1e2738cc6f600d708542b5f0499e9048ac46a09fd81890", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "f38dc739b870fd271bb0df1876aebad20a1f655a04eb61ca9049bd266aae4404", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ebb3be8a8f6bd76825bc5950ee12b267dcc5f69716a757748d9efbd3d5f16aca", +"T3T1_es_test_msg_changepin_t2.py::test_change_failed": "ccadcfefc6c4b8f4e77b25350da107807195b2354a60603b2400516f020dc296", +"T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "581bde3e9837568342206a6de599d7d65fcc548c1bb30b4483b66c0c42c25bfb", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "0c335cc9fac9dce276e148894a9f4b112eaffbda215c4843a3015179ba685803", "T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "58597f0ea23dc1b1ba2009cc073df5672385484cdeef261ca6835c3b8d66fc2e", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "4554f6ab9ef87d667c3dc0c89b1b4c88e1f0dfff87068ee4debf80279de61712", -"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "7c9576ff8fc4c1fc3b87782aac6c015112ee968959e1ddb2bb8e3717ddf195ad", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "47bbfe44c0dfeac1cb77384b8e5dba8b0d3587785b155870832c92df31850fec", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "fd66870eda48414d8a82c1cde296a5485332d5c2337a49a5e5a6a6d0cde357f8", +"T3T1_es_test_msg_changepin_t2.py::test_set_failed": "98eeb009e044e3ad3f27630a701f5b39243cd5fe7c8ea43916cfd7c9f35b262e", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "5bd7b7d8c336a353a089b4a7248b95d1c22b802df2c34c9ffebf5f1b2042e3a8", "T3T1_es_test_msg_loaddevice.py::test_load_device_1": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", "T3T1_es_test_msg_loaddevice.py::test_load_device_2": "459fdc8bed25deb41cba5a210b39b2ee634a0eb468a2aadc766dcb6c909273a7", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", @@ -20876,41 +20876,41 @@ "T3T1_es_test_msg_sd_protect.py::test_wipe": "c61091b534a94f870c937819d6cc81005dbd5aab7acbcaed8eddfaa4393b77e9", "T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "324856403c2cc8a54f9ba167845e37e8adb8f7ecbc212227aa3422aeec6b05c0", "T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "c7f6ff6fc460b7e310c1ca1c1e2b07a208e8deca1c99f74a2cce91c2a16a1b5b", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "201d5b07bb64be2b607bb22ae004c8369391123e360481db835842ee73b49da4", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "195558d25b346f749f64b02411d6dbc283c87ad6dbf1cb01b15245039005fa28", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", "T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", "T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", -"T3T1_es_test_pin.py::test_correct_pin": "7d9bb34ff8631c85faac427f5f53d7cb9f094822fcafbb64f1d8d86c3d65702f", -"T3T1_es_test_pin.py::test_exponential_backoff_t2": "bf78d976a5d1feddfb13e6f075c7b430ee4a93444a2d3151fb2996124c258d78", -"T3T1_es_test_pin.py::test_incorrect_pin_t2": "17f1ce3bd304d913c7e5a1de3c40aa370cb2809c8fd2de3ffde813736a90a5d9", +"T3T1_es_test_pin.py::test_correct_pin": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", +"T3T1_es_test_pin.py::test_exponential_backoff_t2": "ec4b118e4cd17f4eb8e2ea323557f11ffd30557473512024a509ac661ed433ec", +"T3T1_es_test_pin.py::test_incorrect_pin_t2": "356c591450c2f7096ae374bc843af0dd64d4b82991c072a1d193f5bbe580033c", "T3T1_es_test_pin.py::test_no_protection": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_protection_levels.py::test_apply_settings": "bab823c641ad2a7a9a93399536ee111ed685463c35d48602f109a579f01e835f", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "9b322e3c54c683602025e336d3246d2f20c42e7d76c9199844b1427ebb01dfde", -"T3T1_es_test_protection_levels.py::test_get_address": "0b4145ecd845ecffbe97fcbb40d5ed06d5cf8155b1a60b7868c28d24affe3b86", -"T3T1_es_test_protection_levels.py::test_get_entropy": "4ef624c8cd35eadc23895f8dfd3b966a05c43fd1d14c8b54ad3008b747c5975d", -"T3T1_es_test_protection_levels.py::test_get_public_key": "0b4145ecd845ecffbe97fcbb40d5ed06d5cf8155b1a60b7868c28d24affe3b86", -"T3T1_es_test_protection_levels.py::test_initialize": "1854c5ef135e7f997e906bcf1e6559ab8092c52ed7d21b6eb7aeb7f68e0f06dd", +"T3T1_es_test_protection_levels.py::test_apply_settings": "25939deea16cc9a938fdb455bd80aa1f9c9a5bcff7c655adc6371fbfabdfbe1e", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "688bdc147a9a00de5b14835b71569ec9565157b2062933046465221c2d71cfc9", +"T3T1_es_test_protection_levels.py::test_get_address": "38978069db1fac71804fdd6e29fc3b7eb7db443362ef7e991065423938aa2e61", +"T3T1_es_test_protection_levels.py::test_get_entropy": "6f731cb95d5bebc4ecd593968853ba35b23d58fc1e51528e74e76087ca8470af", +"T3T1_es_test_protection_levels.py::test_get_public_key": "38978069db1fac71804fdd6e29fc3b7eb7db443362ef7e991065423938aa2e61", +"T3T1_es_test_protection_levels.py::test_initialize": "5fce5b738833875e177756aa3ce4a7e85e468aeeafb806dd9fc2265bba207141", "T3T1_es_test_protection_levels.py::test_passphrase_cached": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "4325253d3affefbd89782a57d834d076d4d512ac8d75c152362e94be900e6f43", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "a33817d19c987a248951972930ed3332405cd819367fa30871a8bccee700a3a3", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "f8b244895fcff6d2ae2e98e7c04e582d1f8e09f7e11d9e2b413825ea288b5a42", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "fd7893f44c9c68d4e0620da476e37bf0df9deef74478ebbd24f5bb3f6cadcddd", "T3T1_es_test_protection_levels.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", -"T3T1_es_test_protection_levels.py::test_sign_message": "73b316e8153eaf2beb8a0c22b2905b3e8f7ffecc23c34081d2fbf5403175ceff", -"T3T1_es_test_protection_levels.py::test_signtx": "4fad28b8b08e7111d112c43432200acd91a4601b1b7ab856268604a57412c3ff", -"T3T1_es_test_protection_levels.py::test_unlocked": "ce25ca8b30d3148e193253d3b7e4bd823f7aae66e2af5d932e01e4eee4dab8f2", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "189639502a74757e4491b9636eca744d448701a24a1f663af07fa6f3705d35b8", -"T3T1_es_test_protection_levels.py::test_wipe_device": "256014b2a3321bcd43240d050853cc34b1102d8fe9db6b6eb7b4d3d7c44c0a59", +"T3T1_es_test_protection_levels.py::test_sign_message": "d354ec8f178db5f78039df8eb0aee161272d9918f1eddf26ba415f64234c8368", +"T3T1_es_test_protection_levels.py::test_signtx": "76b034cb80c3cde87f6f306926563edc012ad6ec77fb46656d0f57f78ad5a239", +"T3T1_es_test_protection_levels.py::test_unlocked": "fe43f2681f087deeb6ecc92501c4eff2d44a30e4ddfa7e2beccde954ae40cc0d", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "035a118e7348bece76dd4c62a8cd836681448601f6a7ac2f8a847082ae5ce846", +"T3T1_es_test_protection_levels.py::test_wipe_device": "bd526c2186cbe66c01f2336f3eb48b7bf9c612c5c906b11395fbc30e5b5d9f94", "T3T1_es_test_repeated_backup.py::test_repeated_backup": "76e46214aa557b921fc0b740d4168bf88c34dd0f3a8f8cebfcda3293813b7160", "T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "c3d2f1ee21c8cfdde8f6e7a501bf375f0a2028849b9766f86e0398742130e23d", "T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ef358026817d4d7e183bb480cb0119be9c89209523f2fae4462d49b51f6ad009", "T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "58bc05745701f67056d140f0c871cb89d367f7dc266aecde0076b1a0e2355575", "T3T1_es_test_sdcard.py::test_sd_format": "24e635fbd7426cff8a77fcba8583411c5467e87a284c790db903b5dff8d659c0", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "5d090fc850275fd64b95e9ca13ee8802f693196126c0648886ca7ed766da219e", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "b30b5a0a5bd9866112698314afd5a8a6ee9cb5fc962864a51d38d47ec313e5cb", "T3T1_es_test_session.py::test_cannot_resume_ended_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_session.py::test_clear_session": "e385be083c64141ceae4d00c8a5cd6fd168fabe12d192dd9db744f00eeb2b209", +"T3T1_es_test_session.py::test_clear_session": "c56cbf5c99483b30bf0c012393c631c7bc13cfaa8973f0127313b55f38166a8c", "T3T1_es_test_session.py::test_derive_cardano_empty_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_derive_cardano_running_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_end_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20973,8 +20973,8 @@ "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ed918a22412456053778cb6bcb6c637fca336f794973ef01bbac07be0ce53ae2", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "5214780974d69362699b9f38c5a96565178038035c4769dd6aae33c62abbd9ce", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ca881290c32ea550e86f81a1b3e00388943e74f55fbfe88257aca55df30c7dfe", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "9f9ba3dcbbc0891e89c8bb0c419b4c8c5e2bd10a15b89abfc8d44bbbd05a7743", -"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "9f9ba3dcbbc0891e89c8bb0c419b4c8c5e2bd10a15b89abfc8d44bbbd05a7743", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5ae976a8d6d8e097ca92d24a730d89b260cd481f7d9ce3cad1f3fc2603fcf34f", +"T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5ae976a8d6d8e097ca92d24a730d89b260cd481f7d9ce3cad1f3fc2603fcf34f", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4ddd3ff4c628122beaca8653ca438adbdbc50219c114efd26a860ba803a3f7f7", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "92038e8b4c4561ff73a058dc18b90b83bce84655ae1cee83c47cea7d50bc9e58", "T3T1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ecca8935b1780e4ac72847a9691bf0053177ae42f76539af0c5b87b8e9014251", @@ -21942,7 +21942,7 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "82ae718de837fc30b5c16488fb63a8cda74ff3c928f161851a540bf24aab450a", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "00d7f6d70e5ef27856168c15a0f6f3e9cf4deb216f33211dd34ab9e0022c2b85", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fc0db077001b299e0cbf519a8cc669958e7680a8c26463215bee4e44940a4177", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a18187cb7c6f0e53d784ed13eea90171c244f6331fc69a6ba5864429800f6b6f", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "07e070860615e15cc8dda1d24c806d412f4681ace9c8a76fd2798ab18c47a731", @@ -21957,7 +21957,7 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7e10181fd6563432da7c06fe7641856f2ed2f391db72a92ff11c11d6dfd71c8d", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "132b35daa64c902b2c6e89023bd92849570bdbc6f9199c3a79b52822ee174716", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "153e10a6be3ada86430dfb3d55fe1b1d40baecfb03e29e0a98b082a5923b21dd", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b412ad7163e82c0337fa49e27f0f10a6cbdb0d9b6ba0e7738cb912158892465f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "ce50dfb545be7f1a4387bdd5350d835868fd92c664bb07370fcc30e7bf01d3d6", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "73a9efa1d81f294b0bac038a75da4c6da672b0ec509361f45a8e608e45539b54", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3151a76c9bb014e42237397a53d2cc7d119cb1efb4a67a028f66e2e4110cf824", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a675592972dda3a383d0650e13af87d07cdfc4dd9491ac87d9c2c447674fff4b", @@ -21974,10 +21974,10 @@ "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7f32f3d879b5ca2b65b59e98a5b287385228ffaa5f964d5ad2a035c949176382", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "85b2d85e5b2c982c3ae1b9dc9997e640c7e2c78f2e37bdb8d6a5a6553f0d214c", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "e78b8f94ef76c294a51f61b9c0277df49ba5f8eee4160af1adb57945cf2a4b6f", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d3f130732cd2837913cb832fc92b4c7db31942fcc85b9158121c8378ec1e3f85", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "281e456b2d47e1a131a8fb69af9601978a65fe825bbf3fbe8d2406c13927093a", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "01a663d0cb99874fcadb2df2b93a631067438e23af4026dd3b89e54021ece1f4", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5af1f8e71febf6bc672c3531ab282b9ca2d6ff0e3f0d1659ffd7684d5541ebb7", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "883a6593e321cc3d7626a5af8c8962da9890a4dd7223486c061e2e94e4ce90f3", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1007b2b01b08ae56e1557bcc1d1b36bbd1eefd43d2a8914699c43d1236b1023d", "T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4f9ee1f9c7d3cea7ad522024fc4558f91915be752a561740c00ab6828f1c0190", "T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a6e5e5b1422985ec1fc68fbadd183735b409f5c165a812c43447ad87fd24c894", @@ -22126,29 +22126,29 @@ "T3T1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", "T3T1_fr_test_authenticate_device.py::test_authenticate_device[]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", "T3T1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "e41f925ff6bc6770fb8c622ff6848ac6f701abf36973eeb336b6e5460e3a6974", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "92ac3bfbaed6fa8044436ffae3c17d2a03cab5c1a8db8b78baa6390c5fc6b693", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "c34bda0577bb9b0ebb24bc646f3d9f11af1df72ba685b5caf08ff5f9a1601c8b", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "f6b2ca06d5187082cb870dab3f0de14df4a3e9146fa39610d8dc7990b7436532", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "8740100e4dca74e3ca46fec89a4acc320eccfc9c1fe70f5893aaefda857d4a37", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "37a922ef061e7ebde7e72772de3fbbbc4077988d863ab4e9f3b36feec96874cc", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "cb1a44caf02b3d5ae9e772714c658bbe8fb317fb5142882c4d4342f49e82d4c4", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "e63c5471766f3809c890b11333bfeb4bc34aeb00456cb33bf66531760da2ccbd", -"T3T1_fr_test_autolock.py::test_autolock_default_value": "eb4168dcc3cc8c9f0c54104e45ec607ee3b43d62360879117db889dec6d2609f", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "5bd94fff7ad0dc5cefb29ffbd154bb43ebd8a2e51c59e49e0e5a00318fc3b87a", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "5bd94fff7ad0dc5cefb29ffbd154bb43ebd8a2e51c59e49e0e5a00318fc3b87a", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "cf898265dbce54aa24499476eb5a3401719458e629d1db3f297899d88a4bb94b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0673f2bbfe4198c0c33fe5be322add496b2076e3a410675ac45966614e55508b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "64b37a599188471bf57b5f8cae2e7ec63caa7bef05d3a4a921e4f9daf90fca7c", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "2d1ff80b9e326cdc940f135455608d9225410c42f1070c150a62f98ce9836a7e", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "178aa260ab48ba1f5d43a2d6c05d245c73f46324525342abe2803bf3db5ff4fe", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8eb7b7affc9cca802c9b9ac10b0025b6df24c552756321c1df4d25228f255b5f", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b9500df75f346ee4e43aca6dcc5febade476b5dd02d33d58071bc1fd39f5597e", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "c1e4b62b5dabbee7a91b3006ba5e8d7d7a3dceda8b8b8e4af3fb47df04fc0413", +"T3T1_fr_test_autolock.py::test_autolock_default_value": "29109b5da7d1d5a13cac36a949cd9ef556b533a8b10eebb82de967b2112a5436", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "881ac763bced5c72fb61eafcdd466775dce9f3142361ad29c1356d8073639990", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "881ac763bced5c72fb61eafcdd466775dce9f3142361ad29c1356d8073639990", "T3T1_fr_test_basic.py::test_capabilities": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_device_id_different": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_basic.py::test_device_id_same": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_features": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_ping": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_busy_state.py::test_busy_expiry": "659104d2bf399541044a8a99a2984e9219d672e55ca28557bc8d0f227a255a92", -"T3T1_fr_test_busy_state.py::test_busy_state": "5858ad38f10c86f2a919f0ab80dbfbfabfdb8c03688ca4cba19ba8a4b7ad57a8", +"T3T1_fr_test_busy_state.py::test_busy_state": "59e1fd1d0766e6cff17d569988523d4692031c7540d53fe6949547364c5fdd21", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "0f201ffde0a95ccf50c2a3d176a81fe7057dc8a1a35665a9e227c451c2dde4de", "T3T1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", @@ -22179,15 +22179,15 @@ "T3T1_fr_test_language.py::test_switch_from_english_not_silent": "2924fc0c3564069dc503497e0c019c57ed93a78f5e2d051149870d889a561680", "T3T1_fr_test_language.py::test_switch_language": "20ceea46d2baa50c1be3de93b9abd3371f4a04eca1dead20bb1dcdbeff67b72d", "T3T1_fr_test_language.py::test_translations_renders_on_screen": "89126c78192f2671e3c71eb58ff1e22f0bb5f7248989b59d441a51db559c61cf", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c7a0681d63e72c63c0c159d880169f5c34daaa14593aa0ae76ec37d9baf1fa09", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "133ea061e3e79835edebf1e18f8fae6649c2089f98ae5dd699baff2945ea8d27", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "a82718c04be34ab56825094ae851ea5873558a52fb16ff12acfca45a72d634ea", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "263d4108bf32c391fba7163e1978508b8223f06ee15c13255e3a6cbafeec979c", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings": "2c7825d629c499fd4ba3922c4fc742af1c57eec6ec33a65b9e3ffd85e3ddba0d", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "8d7b8761748809d490708735a3dc02fe60a86628d71cbeb0d159b26cd9436d43", "T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "95dc8034980a6c20e1f84cfcd178ed12cc87134b4536d7e5bbe375c36a293750", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "861df5aa3769bc8d0e3f4da88e81aa8b776b1fd5ff9bfa83a79bbf873dd43db7", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "d59c0297b5736c042aebb7d52d925085ecfba5b18b925bd41f2912a452a1f364", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "6ed189300fa6e85b6568e0baf4cd46b442addcbdee366d511d48e129872ee982", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "f948137df32c4849f56d2fc361fd898a5c529f85ee84cd15c76767210e87b547", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "71bc0ca6def2794a8fb31e7072d6535a479192d7298e4efd643d51b2d892ebce", @@ -22201,17 +22201,17 @@ "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", "T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "181f8fab3db5bd13f43517ac84f497647fdd034ae51d508b2ee28321b5bf847c", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "5fdcf954669115a350ee90847f7f94e98f42c8fefb0c47498304e7965af6fcc9", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "07838afe669643c13424ab311e55479ee20f4634fcc21b4065d0e237fc4d62e3", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "95d4c014a1284ac80f9d61f2c2f16cfcbec2319d6b18e6b542bd117d6a646b56", -"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "fdab47a507f74d106adf30f0286d12b95701277521feadc5586cefc54efecb2e", -"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "ca58cdd7b23cafec5a1c4052ae1526ddb5fbeb44884edc99b2e22bda7e086df2", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "73b536854b86f0efd561f95536f75db48f6e9452e91ff8bcdeb43d25927407ed", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0448fc7e969b4ac7a7f840839e0a2882f8a8d78349f2cab419dabea18a2a2c88", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ddff2e9d7db6c5b63ad1eb244ecaf4185de9d4fb2da817bb7c8fcf689ccf8276", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a3117342e89012ede2cb9f59d3058f4b899c4a04a4e685f1e60f1d358d62cd6c", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ae4c2f4af5d2b3b1c021fe47f4a2d51a05d8cf6e0b71b3b311ae070effba9cd3", +"T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "ebb63b62fd00d5c8c74219a7da0d0e6c5268d8508c7a515131e7dac75fcf20a1", +"T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "0d0a17776b2978c6e4bfa87433e385ae60d9c20442b7c05f5941345487dc9977", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "31286c3795c30ec02c25d5966836471bc4585ab310b0d645e53c0f422970d4db", "T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "ef0fca1345fb5bf320a37dd2fadff4b21ee4f8062b19061ca7110e0ef5ef7707", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "e0070f5999a755570af9851b831a89e5843573c96d6f2a3b179827c16b6485bb", -"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "008b9f2ef29058840c1cf60687af750e384e57b4662b9a075d26ad320907f380", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "a1fc79a0f738e14b72c6a868bd93558a78036bea70813cd303360f2c4cc56cc9", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "cde847f3b3672ae249aa1c9c34664183df5445deb9f4bd29139aa0e615dac79c", +"T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "41af53080a9c6b57e4c3b0e9e1c8e75d7122d335be770939602cfb7c2e9868a9", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "216ec21441c7e63d420ee62507e9dce29a1896756b008638c4c339224b067402", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "640da75650b68386d20e476cdf14da880378fe8db7654c5e876152463c6f918b", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", @@ -22223,41 +22223,41 @@ "T3T1_fr_test_msg_sd_protect.py::test_wipe": "4a38e7cbed38d10ff2f7a24d6788cdd20a75057f2e70c583b938c42d8ef98dcf", "T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "8367ee29080faf467cde999256920cc18e3d0238e05dee16b4502519443b2263", "T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "88c706fa341925c54fbab47e335a596a8ec0880c9312701e78ae37bcdad18e36", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "41a16c6f838b79b53b2bca3f2bb73410bb26320e92477eea6732ce3cdca20074", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "992d8d46e847917f5d507149d1725912ed1fbbd7ed56ca6d59e826e90c6b8db5", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", "T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", "T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", -"T3T1_fr_test_pin.py::test_correct_pin": "4b2a38f777275cf35540a5e23490963c2147eac3c47f0771a40baf298b848517", -"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "b90a3c6413ecd821c37f5b00a815ffca0349ed64a497b1d711285a6e1e93927e", -"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "0792540366dfc76a7703748f12869e1454aa32b418a53d995c41590d59768802", +"T3T1_fr_test_pin.py::test_correct_pin": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", +"T3T1_fr_test_pin.py::test_exponential_backoff_t2": "6a4db222948a30f8babbb2233df1afb45700e388be00bd28269d88c54923bd21", +"T3T1_fr_test_pin.py::test_incorrect_pin_t2": "dc48fcbd7246036f8f262e30ed63b0c70eb08dfc0197cf00ab2c29ec1d0bf2e5", "T3T1_fr_test_pin.py::test_no_protection": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_protection_levels.py::test_apply_settings": "66da7de7becf0cb03dbc1833ea1e9bfb9e9cae09172db5942acc9247da5033a4", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "908da02acfe7d96de163f1a9f526649ac411162dfdf418983a06168d7c2190fc", -"T3T1_fr_test_protection_levels.py::test_get_address": "01f0a7ddfc088276fb86558ec8d701f82a0b952e2a951e38e7c18413bb2b603f", -"T3T1_fr_test_protection_levels.py::test_get_entropy": "f4e4fa7b432514ba65e93390ca67325b842d3d1d09ca1ed5bd9166b6d64def63", -"T3T1_fr_test_protection_levels.py::test_get_public_key": "01f0a7ddfc088276fb86558ec8d701f82a0b952e2a951e38e7c18413bb2b603f", -"T3T1_fr_test_protection_levels.py::test_initialize": "21783bddb540c171724113919ad095ce5165de76f487370c65e9db994d7238c6", +"T3T1_fr_test_protection_levels.py::test_apply_settings": "d3d75ac0578f796029b21235c4ad8a75d47fbd63446f3f287953df94004e5f18", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "587d03dcfee54504f8cfda1490bb8ca3e4d97f11ca7d5463d30a1eb5f819226e", +"T3T1_fr_test_protection_levels.py::test_get_address": "bb7ce5b5f0d172175ae11481d7290188b4c0c10076983602b908a724877682d2", +"T3T1_fr_test_protection_levels.py::test_get_entropy": "e7fe766fcd25ae3f693cd16747d3496b9ed5c2077d1b3a754939f2903ce1e966", +"T3T1_fr_test_protection_levels.py::test_get_public_key": "bb7ce5b5f0d172175ae11481d7290188b4c0c10076983602b908a724877682d2", +"T3T1_fr_test_protection_levels.py::test_initialize": "e2be98d3dde35b530841984c83d196715c4511d6e3f68658c978127667a515d4", "T3T1_fr_test_protection_levels.py::test_passphrase_cached": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "e7ad298884d0e1541ba882411d75b8bb3460d584c77aec60c08bbe7241b637f8", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "48307ba30addb264732d7ed3cb684a97dbcd0078926aefe9587f132e5f3ad13f", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "247a1c447e5ae63f7a60757f18d289c9a487ab6ebf70704db3ed64885001f3c6", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "feaddf76d40fa37b27b3812aea8ef36a3918f9506b264685c0d463b3b924ebac", "T3T1_fr_test_protection_levels.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", -"T3T1_fr_test_protection_levels.py::test_sign_message": "ecabb38eba0ccdee533fe2bd04001fc1126298f59107dd82e00f69770d6c1af0", -"T3T1_fr_test_protection_levels.py::test_signtx": "798f252752a45b26c84ab625963b8cf1c855af12376407df6bd9beeb003a474a", -"T3T1_fr_test_protection_levels.py::test_unlocked": "e74de23ed12d883e627be377942deec5331b57cfe9d1274cf78f13f48215d388", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "ca9efc2b7432212dd21301597ef34f28a2dc8111cc45bc04cfcb3f3974900eec", -"T3T1_fr_test_protection_levels.py::test_wipe_device": "80ddc1b78da2956359e6011b0695d5aa441dc6bf8de817bd3e475fd41bd1bbdd", +"T3T1_fr_test_protection_levels.py::test_sign_message": "4577195c875ba6b05f76866490b3faea19eb8fbd1cc07564c0a6cdf1b2ea16f6", +"T3T1_fr_test_protection_levels.py::test_signtx": "15366bed34cea625cc5a1622cf8d47c856aac0a5e783b6809df4f4a0d3333978", +"T3T1_fr_test_protection_levels.py::test_unlocked": "41aff29e00f12334bc5f4404403a86399c0bc3f3c7aa36619d13247918280d8e", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "ded5a7d614d328bff92de13ce2fca690cb8156cff697757e782e8e7b7e66803a", +"T3T1_fr_test_protection_levels.py::test_wipe_device": "53279b977255d6d8874a592a5241f6a113e96442f871e96522ed8bf12fb05586", "T3T1_fr_test_repeated_backup.py::test_repeated_backup": "ffc20e3d42b721278d713d7b3b6967a437d85b99687433d6de32f422f076de8d", "T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "054b69e5b514eb3ed2d198b4f00546dfc9c949660b426e98619cd985ff7ee3b2", "T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "af6421cf233a0f6758fe50d1d7bcfcdfb5dad10f804d070646e4e31531dcac0f", "T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "7ba578b05dbc3d239618bd38edd69b8bd74424bae763d67148eeba51c82ae7c2", "T3T1_fr_test_sdcard.py::test_sd_format": "269b10242abbd5b7bd08e2d50e912e0d3de2aec294d2e0e1cdff3310a463fe71", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "a65b9f9ddf3a879b581930c2d168325ba9d755dc1bce5e9baa904993fc82fbd9", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "5f15c6dc0482763486a7d48670748d8c8fc121820fb8a0d3b45d398eb8350da5", "T3T1_fr_test_session.py::test_cannot_resume_ended_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_session.py::test_clear_session": "e3ffd9e4da6ede0732ed1980a1883703abbbfd159977075906b73f39ff49824b", +"T3T1_fr_test_session.py::test_clear_session": "4a42ace86bb24b3921c3e6e632654b4456b3ee6b85008505be9114be6ae2df66", "T3T1_fr_test_session.py::test_derive_cardano_empty_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_derive_cardano_running_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_end_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22314,7 +22314,7 @@ "T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "ec869dbaa11205cc43fa142230d8f6efcfff6c9eb9f86a48ff44dbc755dffd4f", "T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "f4f3536a8367baeb994e3ff5568af6e7f8898a01e3c901804840aded88828a7b", "T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "2cf88aad50c20bfb7ede4bed612d68e7875987d1e0e9e86f8585bff7dbf1ded5", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "3e30500b9deb81bbb4d0eca6c5fccf8bb647979de64d634591f77f5986e62a39" +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "00cbbcf0d08bc3b1e4d2ca99039567b1fa5c27325becbb5ea311883be733e1f2" } } } From 759ce5bc1449a122dfae9e22d218fd90b7f265e5 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 22 Mar 2024 13:30:02 +0100 Subject: [PATCH 426/626] fix(core): queue events from iface if all tasks waiting on that iface are gone this juuust might fix unexplained freezes on hardware --- core/src/trezor/loop.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/trezor/loop.py b/core/src/trezor/loop.py index 80ed8e160a..f7edc6485c 100644 --- a/core/src/trezor/loop.py +++ b/core/src/trezor/loop.py @@ -93,6 +93,9 @@ def close(task: Task) -> None: """ for iface in _paused: # pylint: disable=consider-using-dict-items _paused[iface].discard(task) + for iface in _paused: # pylint: disable=consider-using-dict-items + if not _paused[iface]: + del _paused[iface] _queue.discard(task) task.close() finalize(task, GeneratorExit()) From 6b3aa768bd8a564f95e402276f053607d1027a9d Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 1 Jul 2024 13:15:43 +0200 Subject: [PATCH 427/626] fix(core/mercury): remove universal backlight fading --- core/.changelog.d/3987.changed | 1 + core/src/boot.py | 6 ++++-- core/src/trezor/ui/layouts/mercury/__init__.py | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 core/.changelog.d/3987.changed diff --git a/core/.changelog.d/3987.changed b/core/.changelog.d/3987.changed new file mode 100644 index 0000000000..fccc1666e2 --- /dev/null +++ b/core/.changelog.d/3987.changed @@ -0,0 +1 @@ +[T3T1] Smoothened screen transitions by removing backlight fading diff --git a/core/src/boot.py b/core/src/boot.py index dd7a418c24..9e3086a839 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -57,7 +57,8 @@ async def bootscreen() -> None: if can_lock_device(): enforce_welcome_screen_duration() - ui.backlight_fade(ui.BacklightLevels.NONE) + if utils.INTERNAL_MODEL == "T2T1": + ui.backlight_fade(ui.BacklightLevels.NONE) ui.display.orientation(storage.device.get_rotation()) if utils.USE_HAPTIC: io.haptic.haptic_set_enabled(storage.device.get_haptic_feedback()) @@ -83,7 +84,8 @@ async def bootscreen() -> None: if rotation != ui.display.orientation(): # there is a slight delay before next screen is shown, # so we don't fade unless there is a change of orientation - ui.backlight_fade(ui.BacklightLevels.DIM) + if utils.INTERNAL_MODEL == "T2T1": + ui.backlight_fade(ui.BacklightLevels.NONE) ui.display.orientation(rotation) allow_all_loader_messages() return diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 3a1aa1d2f2..b4720a58d1 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -192,7 +192,6 @@ def create_tasks(self) -> tuple[loop.AwaitableTask, ...]: def _first_paint(self) -> None: - ui.backlight_fade(ui.BacklightLevels.NONE) self._paint() if __debug__ and self.should_notify_layout_change: From 2994317dcda3029392fcf5129cbd8e54bca7785a Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 1 Jul 2024 13:22:12 +0200 Subject: [PATCH 428/626] fix(core/mercury): homescreen attach animation, resume animations after an interrupt from workflow --- core/.changelog.d/3987.changed | 1 + core/embed/rust/librust_qstr.h | 7 + core/embed/rust/src/ui/component/base.rs | 5 + core/embed/rust/src/ui/layout/obj.rs | 55 ++- .../ui/model_mercury/component/homescreen.rs | 362 +++++++++++++++--- .../src/ui/model_mercury/component/loader.rs | 14 +- .../embed/rust/src/ui/model_mercury/layout.rs | 38 +- core/embed/rust/src/ui/model_tr/layout.rs | 32 +- core/embed/rust/src/ui/model_tt/layout.rs | 39 +- core/mocks/generated/trezorui2.pyi | 38 +- core/src/trezor/ui/__init__.py | 4 +- .../src/trezor/ui/layouts/mercury/__init__.py | 5 +- .../trezor/ui/layouts/mercury/homescreen.py | 6 + tests/ui_tests/fixtures.json | 10 +- 14 files changed, 480 insertions(+), 136 deletions(-) diff --git a/core/.changelog.d/3987.changed b/core/.changelog.d/3987.changed index fccc1666e2..397d06f243 100644 --- a/core/.changelog.d/3987.changed +++ b/core/.changelog.d/3987.changed @@ -1 +1,2 @@ [T3T1] Smoothened screen transitions by removing backlight fading +[T3T1] Improved resuming of interrupted animations diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 0ea3a0f40e..b752c9917d 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -6,11 +6,13 @@ static void _librust_qstrs(void) { MP_QSTR_; + MP_QSTR_AttachType; MP_QSTR_BacklightLevels; MP_QSTR_CANCELLED; MP_QSTR_CONFIRMED; MP_QSTR_DIM; MP_QSTR_INFO; + MP_QSTR_INITIAL; MP_QSTR_LOW; MP_QSTR_LayoutObj; MP_QSTR_MAX; @@ -20,6 +22,11 @@ static void _librust_qstrs(void) { MP_QSTR_MsgDef; MP_QSTR_NONE; MP_QSTR_NORMAL; + MP_QSTR_RESUME; + MP_QSTR_SWIPE_DOWN; + MP_QSTR_SWIPE_LEFT; + MP_QSTR_SWIPE_RIGHT; + MP_QSTR_SWIPE_UP; MP_QSTR_TR; MP_QSTR_TranslationsHeader; MP_QSTR___del__; diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index f34698481d..bdc28eedfb 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -348,7 +348,12 @@ where #[derive(Copy, Clone, PartialEq, Eq)] #[cfg_attr(feature = "debug", derive(ufmt::derive::uDebug))] pub enum AttachType { + /// Initial attach, redraw the whole screen Initial, + /// The layout is already rendered on display, resume any animation + /// where we left off. The animation state is expected to be stored locally + /// in the given component. + Resume, #[cfg(feature = "touch")] Swipe(SwipeDirection), } diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index ae1f7c678d..3b98266629 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -5,6 +5,12 @@ use core::{ }; use num_traits::{FromPrimitive, ToPrimitive}; +#[cfg(feature = "button")] +use crate::ui::event::ButtonEvent; +#[cfg(feature = "touch")] +use crate::ui::{component::SwipeDirection, event::TouchEvent}; +#[cfg(feature = "new_rendering")] +use crate::ui::{display::Color, shape::render_on_display}; use crate::{ error::Error, maybe_trace::MaybeTrace, @@ -15,52 +21,61 @@ use crate::{ map::Map, obj::{Obj, ObjBase}, qstr::Qstr, + simple_type::SimpleTypeObj, typ::Type, util, }, time::Duration, ui::{ button_request::ButtonRequest, - component::{Component, Event, EventCtx, Never, TimerToken}, + component::{base::AttachType, Component, Event, EventCtx, Never, TimerToken}, constant, display, + event::USBEvent, geometry::Rect, }, }; -use crate::ui::component::base::AttachType; -#[cfg(feature = "new_rendering")] -use crate::ui::{display::Color, shape::render_on_display}; - -#[cfg(feature = "button")] -use crate::ui::event::ButtonEvent; -use crate::ui::event::USBEvent; -#[cfg(feature = "touch")] -use crate::ui::{component::SwipeDirection, event::TouchEvent}; - impl AttachType { fn to_obj(self) -> Obj { match self { Self::Initial => Obj::const_none(), + Self::Resume => 1u8.into(), #[cfg(feature = "touch")] - Self::Swipe(dir) => dir.to_u8().into(), + Self::Swipe(dir) => (2u8 + unwrap!(dir.to_u8())).into(), } } fn try_from_obj(obj: Obj) -> Result<Self, Error> { if obj == Obj::const_none() { return Ok(Self::Initial); } - #[cfg(feature = "touch")] - { - let dir: u8 = obj.try_into()?; - return Ok(AttachType::Swipe( - SwipeDirection::from_u8(dir).ok_or(Error::TypeError)?, - )); + let val: u8 = obj.try_into()?; + + match val { + 0 => Ok(Self::Initial), + 1 => Ok(Self::Resume), + #[cfg(feature = "touch")] + 2..=5 => Ok(Self::Swipe( + SwipeDirection::from_u8(val - 2).ok_or(Error::TypeError)?, + )), + _ => Err(Error::TypeError), } - #[allow(unreachable_code)] - Err(Error::TypeError) } } +static ATTACH_TYPE: Type = obj_type! { + name: Qstr::MP_QSTR_AttachType, + locals: &obj_dict!(obj_map! { + Qstr::MP_QSTR_INITIAL => Obj::small_int(0u16), + Qstr::MP_QSTR_RESUME => Obj::small_int(1u16), + Qstr::MP_QSTR_SWIPE_UP => Obj::small_int(2u16), + Qstr::MP_QSTR_SWIPE_DOWN => Obj::small_int(3u16), + Qstr::MP_QSTR_SWIPE_LEFT => Obj::small_int(4u16), + Qstr::MP_QSTR_SWIPE_RIGHT => Obj::small_int(5u16), + }), +}; + +pub static ATTACH_TYPE_OBJ: SimpleTypeObj = SimpleTypeObj::new(&ATTACH_TYPE); + /// Conversion trait implemented by components that know how to convert their /// message values into MicroPython `Obj`s. pub trait ComponentMsgObj: Component { diff --git a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs index 47be5e508b..c025b0b333 100644 --- a/core/embed/rust/src/ui/model_mercury/component/homescreen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/homescreen.rs @@ -16,7 +16,7 @@ use crate::{ }; use crate::ui::{ - component::Label, + component::{base::AttachType, Label}, constant::{screen, HEIGHT, WIDTH}, lerp::Lerp, model_mercury::{ @@ -118,6 +118,122 @@ fn render_default_hs<'a>(target: &mut impl Renderer<'a>) { .render(target); } +struct HomescreenState { + attach: AttachAnimationState, + label: HideLabelAnimationState, +} + +static mut HOMESCREEN_STATE: HomescreenState = HomescreenState { + attach: AttachAnimation::DEFAULT_STATE, + label: HideLabelAnimation::DEFAULT_STATE, +}; + +#[derive(Default, Clone)] +struct AttachAnimation { + pub timer: Stopwatch, + pub active: bool, + pub duration: Duration, + start_opacity: f32, +} + +#[derive(Clone, Copy)] +struct AttachAnimationState { + opacity: u8, +} + +impl AttachAnimation { + const DURATION_MS: u32 = 500; + + pub const DEFAULT_STATE: AttachAnimationState = AttachAnimationState { opacity: 255 }; + + fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + + self.timer.is_running_within(self.duration) + } + + fn eval(&self) -> f32 { + if animation_disabled() { + return 1.0; + } + + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + fn opacity(&self, t: f32) -> u8 { + if animation_disabled() { + return 255; + } + + let f = pareen::constant(self.start_opacity) + .seq_ease_in_out( + 0.0, + easer::functions::Linear, + self.duration.to_millis() as f32 / 1000.0, + pareen::constant(1.0), + ) + .eval(t); + + (f * 255.0) as u8 + } + + fn start(&mut self) { + self.active = true; + self.timer.start(); + } + + fn reset(&mut self) { + self.active = false; + self.timer = Stopwatch::new_stopped(); + } + + fn lazy_start(&mut self, ctx: &mut EventCtx, event: Event, resume: AttachAnimationState) { + match event { + Event::Attach(AttachType::Initial) => { + self.duration = Duration::from_millis(Self::DURATION_MS); + self.reset(); + if !animation_disabled() { + ctx.request_anim_frame(); + } + } + Event::Attach(AttachType::Resume) => { + let start_opacity = resume.opacity as f32 / 255.0; + let duration = start_opacity * Self::DURATION_MS as f32; + self.start_opacity = start_opacity; + self.duration = Duration::from_millis(duration as u32); + self.timer = Stopwatch::new_stopped(); + self.active = resume.opacity < 255; + + if !animation_disabled() { + ctx.request_anim_frame(); + } + } + Event::Timer(EventCtx::ANIM_FRAME_TIMER) => { + if !self.timer.is_running() { + self.start(); + } + if self.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } else if self.active { + self.active = false; + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + _ => {} + } + } + + fn get_state(&self, t: f32) -> AttachAnimationState { + AttachAnimationState { + opacity: self.opacity(t), + } + } +} + struct HideLabelAnimation { pub timer: Stopwatch, token: TimerToken, @@ -125,9 +241,23 @@ struct HideLabelAnimation { hidden: bool, duration: Duration, } + +#[derive(Clone, Copy)] +struct HideLabelAnimationState { + animating: bool, + hidden: bool, + elapsed: u32, +} + impl HideLabelAnimation { const HIDE_AFTER: Duration = Duration::from_millis(3000); + pub const DEFAULT_STATE: HideLabelAnimationState = HideLabelAnimationState { + animating: false, + hidden: false, + elapsed: 0, + }; + fn new(label_width: i16) -> Self { Self { timer: Stopwatch::default(), @@ -146,6 +276,10 @@ impl HideLabelAnimation { self.timer = Stopwatch::default(); } + fn elapsed(&self) -> Duration { + self.timer.elapsed() + } + fn change_dir(&mut self) { let elapsed = self.timer.elapsed(); @@ -191,53 +325,81 @@ impl HideLabelAnimation { Offset::x(i16::lerp(-(label_width + 12), 0, pos)) } - fn process_event(&mut self, ctx: &mut EventCtx, event: Event) { - if let Event::Attach(_) = event { - ctx.request_anim_frame(); - self.token = ctx.request_timer(Self::HIDE_AFTER); - } - - if let Event::Timer(token) = event { - if token == self.token && !animation_disabled() { - self.timer.start(); + fn process_event(&mut self, ctx: &mut EventCtx, event: Event, resume: HideLabelAnimationState) { + match event { + Event::Attach(AttachType::Initial) => { ctx.request_anim_frame(); - self.animating = true; - self.hidden = false; + self.token = ctx.request_timer(Self::HIDE_AFTER); } - } + Event::Attach(AttachType::Resume) => { + self.hidden = resume.hidden; - if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { - if self.is_active() { - ctx.request_anim_frame(); - ctx.request_paint(); - } else if self.animating { - self.animating = false; - self.hidden = !self.hidden; - self.reset(); - ctx.request_paint(); + let start = Instant::now() + .checked_sub(Duration::from_millis(resume.elapsed)) + .unwrap_or(Instant::now()); + + self.animating = resume.animating; - if !self.hidden { + if self.animating { + self.timer = Stopwatch::Running(start); + ctx.request_anim_frame(); + } else { + self.timer = Stopwatch::new_stopped(); + } + if !self.animating && !self.hidden { self.token = ctx.request_timer(Self::HIDE_AFTER); } } - } + Event::Timer(EventCtx::ANIM_FRAME_TIMER) => { + if self.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } else if self.animating { + self.animating = false; + self.hidden = !self.hidden; + self.reset(); + ctx.request_paint(); - if let Event::Touch(TouchEvent::TouchStart(_)) = event { - if !self.animating { - if self.hidden { + if !self.hidden { + self.token = ctx.request_timer(Self::HIDE_AFTER); + } + } + } + Event::Timer(token) => { + if token == self.token && !animation_disabled() { self.timer.start(); + ctx.request_anim_frame(); self.animating = true; + self.hidden = false; + } + } + + Event::Touch(TouchEvent::TouchStart(_)) => { + if !self.animating { + if self.hidden { + self.timer.start(); + self.animating = true; + ctx.request_anim_frame(); + ctx.request_paint(); + } else { + self.token = ctx.request_timer(Self::HIDE_AFTER); + } + } else if !self.hidden { + self.change_dir(); + self.hidden = true; ctx.request_anim_frame(); ctx.request_paint(); - } else { - self.token = ctx.request_timer(Self::HIDE_AFTER); } - } else if !self.hidden { - self.change_dir(); - self.hidden = true; - ctx.request_anim_frame(); - ctx.request_paint(); } + _ => {} + } + } + + fn get_state(&self) -> HideLabelAnimationState { + HideLabelAnimationState { + animating: self.animating, + hidden: self.hidden, + elapsed: self.timer.elapsed().to_millis(), } } } @@ -259,6 +421,7 @@ pub struct Homescreen { hold_to_lock: bool, loader: Loader, delay: Option<TimerToken>, + attach_animation: AttachAnimation, label_anim: HideLabelAnimation, } @@ -296,6 +459,7 @@ impl Homescreen { hold_to_lock, loader: Loader::with_lock_icon().with_durations(LOADER_DURATION, LOADER_DURATION / 3), delay: None, + attach_animation: AttachAnimation::default(), label_anim: HideLabelAnimation::new(label_width), } } @@ -395,9 +559,15 @@ impl Component for Homescreen { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + // SAFETY: Single threaded access + let resume_attach = unsafe { HOMESCREEN_STATE.attach }; + self.attach_animation.lazy_start(ctx, event, resume_attach); + Self::event_usb(self, ctx, event); - self.label_anim.process_event(ctx, event); + let resume_label = unsafe { HOMESCREEN_STATE.label }; + + self.label_anim.process_event(ctx, event, resume_label); if self.hold_to_lock { Self::event_hold(self, ctx, event).then_some(HomescreenMsg::Dismissed) @@ -414,7 +584,18 @@ impl Component for Homescreen { if self.loader.is_animating() || self.loader.is_completely_grown(Instant::now()) { self.render_loader(target); } else { - shape::RawImage::new(AREA, self.bg_image.view()).render(target); + let t = self.attach_animation.eval(); + let opacity = self.attach_animation.opacity(t); + + if let Some(image) = self.image { + if let ImageInfo::Jpeg(_) = ImageInfo::parse(image) { + shape::JpegImage::new_image(AREA.center(), image) + .with_align(Alignment2D::CENTER) + .render(target); + } + } else { + render_default_hs(target); + } let y_offset = self.label_anim.eval(self.label_width); @@ -437,6 +618,17 @@ impl Component for Homescreen { if let Some(notif) = self.get_notification() { render_notif(notif, NOTIFICATION_TOP, target); } + + shape::Bar::new(AREA) + .with_bg(Color::black()) + .with_alpha(255 - opacity) + .render(target); + + // SAFETY: Single threaded access + unsafe { + HOMESCREEN_STATE.attach = self.attach_animation.get_state(t); + HOMESCREEN_STATE.label = self.label_anim.get_state(); + } } } } @@ -449,13 +641,34 @@ impl crate::trace::Trace for Homescreen { } } +struct LockscreenState { + attach: AttachAnimationState, + overlay: LockscreenAnimState, + label: HideLabelAnimationState, +} + +static mut LOCKSCREEN_STATE: LockscreenState = LockscreenState { + attach: AttachAnimation::DEFAULT_STATE, + overlay: LockscreenAnim::DEFAULT_STATE, + label: HideLabelAnimation::DEFAULT_STATE, +}; + #[derive(Default)] struct LockscreenAnim { + pub start: f32, pub timer: Stopwatch, } + +#[derive(Clone, Copy)] +struct LockscreenAnimState { + angle: f32, +} + impl LockscreenAnim { const DURATION_MS: u32 = 1500; + pub const DEFAULT_STATE: LockscreenAnimState = LockscreenAnimState { angle: 0.0 }; + pub fn is_active(&self) -> bool { true } @@ -468,12 +681,44 @@ impl LockscreenAnim { let t: f32 = self.timer.elapsed().to_millis() as f32 / 1000.0; - anim.eval(t) + self.start + anim.eval(t) + } + + pub fn lazy_start(&mut self, ctx: &mut EventCtx, event: Event, resume: LockscreenAnimState) { + match event { + Event::Attach(AttachType::Initial) => { + self.start = 0.0; + if !animation_disabled() { + ctx.request_anim_frame(); + } + } + Event::Attach(AttachType::Resume) => { + self.start = resume.angle; + if !animation_disabled() { + ctx.request_anim_frame(); + } + } + Event::Timer(EventCtx::ANIM_FRAME_TIMER) => { + if !animation_disabled() { + if !self.timer.is_running() { + self.timer.start(); + } + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + _ => {} + } + } + + pub fn get_state(&self) -> LockscreenAnimState { + LockscreenAnimState { angle: self.eval() } } } pub struct Lockscreen { anim: LockscreenAnim, + attach_animation: AttachAnimation, label: Label<'static>, name_width: i16, label_width: i16, @@ -512,6 +757,7 @@ impl Lockscreen { Lockscreen { anim: LockscreenAnim::default(), + attach_animation: AttachAnimation::default(), label: Label::new(label, Alignment::Center, theme::TEXT_DEMIBOLD), name_width, label_width, @@ -535,21 +781,18 @@ impl Component for Lockscreen { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if let Event::Attach(_) = event { - ctx.request_anim_frame(); - } + // SAFETY: Single threaded access + let resume_attach = unsafe { LOCKSCREEN_STATE.attach }; + self.attach_animation.lazy_start(ctx, event, resume_attach); - if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { - if !animation_disabled() { - if !self.anim.timer.is_running() { - self.anim.timer.start(); - } - ctx.request_anim_frame(); - ctx.request_paint(); - } - } + // SAFETY: Single threaded access + let resume_overlay = unsafe { LOCKSCREEN_STATE.overlay }; + self.anim.lazy_start(ctx, event, resume_overlay); + + // SAFETY: Single threaded access + let resume_label = unsafe { LOCKSCREEN_STATE.label }; - self.label_anim.process_event(ctx, event); + self.label_anim.process_event(ctx, event, resume_label); if let Event::Touch(TouchEvent::TouchEnd(_)) = event { return Some(HomescreenMsg::Dismissed); @@ -569,7 +812,8 @@ impl Component for Lockscreen { shape::RawImage::new(AREA, self.bg_image.view()).render(target); - cshape::UnlockOverlay::new(center, self.anim.eval()).render(target); + let overlay_rotation = self.anim.eval(); + cshape::UnlockOverlay::new(center, overlay_rotation).render(target); shape::Bar::new(AREA.split_top(OVERLAY_BORDER).0) .with_bg(Color::black()) @@ -651,6 +895,22 @@ impl Component for Lockscreen { render_notif(notif, NOTIFICATION_LOCKSCREEN_TOP, target); } + + let t = self.attach_animation.eval(); + let opacity = self.attach_animation.opacity(t); + + shape::Bar::new(AREA) + .with_bg(Color::black()) + .with_fg(Color::black()) + .with_alpha(255 - opacity) + .render(target); + + // SAFETY: Single threaded access + unsafe { + LOCKSCREEN_STATE.attach = self.attach_animation.get_state(t); + LOCKSCREEN_STATE.overlay = self.anim.get_state(); + LOCKSCREEN_STATE.label = self.label_anim.get_state(); + } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/loader.rs b/core/embed/rust/src/ui/model_mercury/component/loader.rs index 0a0a59bf78..f32939142c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/loader.rs +++ b/core/embed/rust/src/ui/model_mercury/component/loader.rs @@ -124,20 +124,28 @@ impl Loader { } } - pub fn progress(&self, now: Instant) -> Option<u16> { + pub fn progress_raw(&self, now: Instant) -> Option<u16> { self.animation().map(|a| a.value(now)) } + pub fn progress(&self, now: Instant) -> Option<u16> { + if animation_disabled() { + self.progress_raw(now).map(|_a| display::LOADER_MIN) + } else { + self.progress_raw(now) + } + } + pub fn is_animating(&self) -> bool { self.animation().is_some() } pub fn is_completely_grown(&self, now: Instant) -> bool { - matches!(self.progress(now), Some(display::LOADER_MAX)) + matches!(self.progress_raw(now), Some(display::LOADER_MAX)) } pub fn is_completely_shrunk(&self, now: Instant) -> bool { - matches!(self.progress(now), Some(display::LOADER_MIN)) + matches!(self.progress_raw(now), Some(display::LOADER_MIN)) } } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 5590d5fcb7..97e89e9385 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1,5 +1,16 @@ use core::{cmp::Ordering, convert::TryInto}; +use super::{ + component::{ + AddressDetails, Bip39Input, Button, CancelConfirmMsg, CancelInfoConfirmMsg, + CoinJoinProgress, FidoConfirm, FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, + Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, + PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, + SelectWordCount, SelectWordCountMsg, SetBrightnessDialog, Slip39Input, StatusScreen, + SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, + }, + flow, theme, +}; use crate::{ error::{value_error, Error}, io::BinaryData, @@ -36,7 +47,7 @@ use crate::{ flow::Swipable, geometry, layout::{ - obj::{ComponentMsgObj, LayoutObj}, + obj::{ComponentMsgObj, LayoutObj, ATTACH_TYPE_OBJ}, result::{CANCELLED, CONFIRMED, INFO}, util::{upy_disable_animation, ConfirmBlob, PropsList}, }, @@ -47,18 +58,6 @@ use crate::{ }, }; -use super::{ - component::{ - AddressDetails, Bip39Input, Button, CancelConfirmMsg, CancelInfoConfirmMsg, - CoinJoinProgress, FidoConfirm, FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, - Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, - PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, - SelectWordCount, SelectWordCountMsg, SetBrightnessDialog, Slip39Input, StatusScreen, - SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, - }, - flow, theme, -}; - impl TryFrom<CancelConfirmMsg> for Obj { type Error = Error; @@ -1313,9 +1312,6 @@ pub static mp_module_trezorui2: Module = obj_module! { /// /// T = TypeVar("T") /// - /// class AttachType: - /// ... - /// /// class LayoutObj(Generic[T]): /// """Representation of a Rust-based layout object. /// see `trezor::ui::layout::obj::LayoutObj`. @@ -1905,4 +1901,14 @@ pub static mp_module_trezorui2: Module = obj_module! { /// /// mock:global Qstr::MP_QSTR_BacklightLevels => BACKLIGHT_LEVELS_OBJ.as_obj(), + + /// class AttachType: + /// INITIAL: ClassVar[int] + /// RESUME: ClassVar[int] + /// SWIPE_UP: ClassVar[int] + /// SWIPE_DOWN: ClassVar[int] + /// SWIPE_LEFT: ClassVar[int] + /// SWIPE_RIGHT: ClassVar[int] + Qstr::MP_QSTR_AttachType => ATTACH_TYPE_OBJ.as_obj(), + }; diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index da4883d709..f1b8c3057b 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -2,6 +2,16 @@ use core::{cmp::Ordering, convert::TryInto}; use heapless::Vec; +use super::{ + component::{ + AddressDetails, ButtonActions, ButtonDetails, ButtonLayout, ButtonPage, CancelConfirmMsg, + CancelInfoConfirmMsg, CoinJoinProgress, ConfirmHomescreen, Flow, FlowPages, Frame, + Homescreen, Lockscreen, NumberInput, Page, PassphraseEntry, PinEntry, Progress, + ScrollableContent, ScrollableFrame, ShareWords, ShowMore, SimpleChoice, WordlistEntry, + WordlistType, + }, + constant, theme, +}; use crate::{ error::Error, maybe_trace::MaybeTrace, @@ -37,7 +47,7 @@ use crate::{ }, geometry, layout::{ - obj::{ComponentMsgObj, LayoutObj}, + obj::{ComponentMsgObj, LayoutObj, ATTACH_TYPE_OBJ}, result::{CANCELLED, CONFIRMED, INFO}, util::{upy_disable_animation, ConfirmBlob}, }, @@ -45,17 +55,6 @@ use crate::{ }, }; -use super::{ - component::{ - AddressDetails, ButtonActions, ButtonDetails, ButtonLayout, ButtonPage, CancelConfirmMsg, - CancelInfoConfirmMsg, CoinJoinProgress, ConfirmHomescreen, Flow, FlowPages, Frame, - Homescreen, Lockscreen, NumberInput, Page, PassphraseEntry, PinEntry, Progress, - ScrollableContent, ScrollableFrame, ShareWords, ShowMore, SimpleChoice, WordlistEntry, - WordlistType, - }, - constant, theme, -}; - impl From<CancelConfirmMsg> for Obj { fn from(value: CancelConfirmMsg) -> Self { match value { @@ -2063,4 +2062,13 @@ pub static mp_module_trezorui2: Module = obj_module! { /// /// mock:global Qstr::MP_QSTR_BacklightLevels => BACKLIGHT_LEVELS_OBJ.as_obj(), + + /// class AttachType: + /// INITIAL: ClassVar[int] + /// RESUME: ClassVar[int] + /// SWIPE_UP: ClassVar[int] + /// SWIPE_DOWN: ClassVar[int] + /// SWIPE_LEFT: ClassVar[int] + /// SWIPE_RIGHT: ClassVar[int] + Qstr::MP_QSTR_AttachType => ATTACH_TYPE_OBJ.as_obj(), }; diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 31e223f78e..7417679a73 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1,5 +1,17 @@ use core::{cmp::Ordering, convert::TryInto}; +use super::{ + component::{ + AddressDetails, Bip39Input, Button, ButtonMsg, ButtonPage, ButtonStyleSheet, + CancelConfirmMsg, CancelInfoConfirmMsg, CoinJoinProgress, Dialog, DialogMsg, FidoConfirm, + FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, + MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, + PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, + SelectWordCount, SelectWordCountMsg, SelectWordMsg, SetBrightnessDialog, SimplePage, + Slip39Input, + }, + theme, +}; use crate::{ error::{value_error, Error}, io::BinaryData, @@ -38,7 +50,7 @@ use crate::{ }, geometry, layout::{ - obj::{ComponentMsgObj, LayoutObj}, + obj::{ComponentMsgObj, LayoutObj, ATTACH_TYPE_OBJ}, result::{CANCELLED, CONFIRMED, INFO}, util::{upy_disable_animation, ConfirmBlob, PropsList}, }, @@ -46,19 +58,6 @@ use crate::{ }, }; -use super::{ - component::{ - AddressDetails, Bip39Input, Button, ButtonMsg, ButtonPage, ButtonStyleSheet, - CancelConfirmMsg, CancelInfoConfirmMsg, CoinJoinProgress, Dialog, DialogMsg, FidoConfirm, - FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, IconDialog, Lockscreen, MnemonicInput, - MnemonicKeyboard, MnemonicKeyboardMsg, NumberInputDialog, NumberInputDialogMsg, - PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, - SelectWordCount, SelectWordCountMsg, SelectWordMsg, SetBrightnessDialog, SimplePage, - Slip39Input, - }, - theme, -}; - impl TryFrom<CancelConfirmMsg> for Obj { type Error = Error; @@ -1625,9 +1624,6 @@ pub static mp_module_trezorui2: Module = obj_module! { /// /// T = TypeVar("T") /// - /// class AttachType: - /// ... - /// /// class LayoutObj(Generic[T]): /// """Representation of a Rust-based layout object. /// see `trezor::ui::layout::obj::LayoutObj`. @@ -2153,6 +2149,15 @@ pub static mp_module_trezorui2: Module = obj_module! { /// /// mock:global Qstr::MP_QSTR_BacklightLevels => BACKLIGHT_LEVELS_OBJ.as_obj(), + + /// class AttachType: + /// INITIAL: ClassVar[int] + /// RESUME: ClassVar[int] + /// SWIPE_UP: ClassVar[int] + /// SWIPE_DOWN: ClassVar[int] + /// SWIPE_LEFT: ClassVar[int] + /// SWIPE_RIGHT: ClassVar[int] + Qstr::MP_QSTR_AttachType => ATTACH_TYPE_OBJ.as_obj(), }; #[cfg(test)] diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 31af604b90..7886f3a72b 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -3,11 +3,6 @@ from trezor import utils T = TypeVar("T") -# rust/src/ui/model_mercury/layout.rs -class AttachType: - ... - - # rust/src/ui/model_mercury/layout.rs class LayoutObj(Generic[T]): """Representation of a Rust-based layout object. @@ -621,6 +616,16 @@ class BacklightLevels: LOW: ClassVar[int] DIM: ClassVar[int] NONE: ClassVar[int] + + +# rust/src/ui/model_mercury/layout.rs +class AttachType: + INITIAL: ClassVar[int] + RESUME: ClassVar[int] + SWIPE_UP: ClassVar[int] + SWIPE_DOWN: ClassVar[int] + SWIPE_LEFT: ClassVar[int] + SWIPE_RIGHT: ClassVar[int] CONFIRMED: UiResult CANCELLED: UiResult INFO: UiResult @@ -1091,13 +1096,18 @@ class BacklightLevels: LOW: ClassVar[int] DIM: ClassVar[int] NONE: ClassVar[int] -from trezor import utils -T = TypeVar("T") -# rust/src/ui/model_tt/layout.rs +# rust/src/ui/model_tr/layout.rs class AttachType: - ... + INITIAL: ClassVar[int] + RESUME: ClassVar[int] + SWIPE_UP: ClassVar[int] + SWIPE_DOWN: ClassVar[int] + SWIPE_LEFT: ClassVar[int] + SWIPE_RIGHT: ClassVar[int] +from trezor import utils +T = TypeVar("T") # rust/src/ui/model_tt/layout.rs @@ -1642,3 +1652,13 @@ class BacklightLevels: LOW: ClassVar[int] DIM: ClassVar[int] NONE: ClassVar[int] + + +# rust/src/ui/model_tt/layout.rs +class AttachType: + INITIAL: ClassVar[int] + RESUME: ClassVar[int] + SWIPE_UP: ClassVar[int] + SWIPE_DOWN: ClassVar[int] + SWIPE_LEFT: ClassVar[int] + SWIPE_RIGHT: ClassVar[int] diff --git a/core/src/trezor/ui/__init__.py b/core/src/trezor/ui/__init__.py index 2b2daeaa1b..7f7c6bf63e 100644 --- a/core/src/trezor/ui/__init__.py +++ b/core/src/trezor/ui/__init__.py @@ -4,12 +4,12 @@ from typing import TYPE_CHECKING, Any, Awaitable, Generator from trezor import loop, utils -from trezorui2 import BacklightLevels +from trezorui2 import AttachType, BacklightLevels if TYPE_CHECKING: from typing import Generic, TypeVar - from trezorui2 import AttachType, UiResult # noqa: F401 + from trezorui2 import UiResult # noqa: F401 T = TypeVar("T") diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index b4720a58d1..d4d4b4004b 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -36,10 +36,13 @@ def __init__(self, layout: Any): self.br_chan = loop.chan() self.layout = layout self.timer = loop.Timer() - self.layout.attach_timer_fn(self.set_timer, ui.LAST_TRANSITION_OUT) + self._attach() self._send_button_request() self.backlight_level = ui.BacklightLevels.NORMAL + def _attach(self) -> None: + self.layout.attach_timer_fn(self.set_timer, ui.LAST_TRANSITION_OUT) + def __del__(self): self.layout.__del__() diff --git a/core/src/trezor/ui/layouts/mercury/homescreen.py b/core/src/trezor/ui/layouts/mercury/homescreen.py index 7089e8e5fb..b24fd3e253 100644 --- a/core/src/trezor/ui/layouts/mercury/homescreen.py +++ b/core/src/trezor/ui/layouts/mercury/homescreen.py @@ -18,6 +18,12 @@ class HomescreenBase(RustLayout): def __init__(self, layout: Any) -> None: super().__init__(layout=layout) + def _attach(self) -> None: + if storage_cache.homescreen_shown is self.RENDER_INDICATOR: + self.layout.attach_timer_fn(self.set_timer, ui.AttachType.RESUME) + else: + self.layout.attach_timer_fn(self.set_timer, ui.LAST_TRANSITION_OUT) + def _paint(self) -> None: if self.layout.paint(): ui.refresh() diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index c9c84e4b90..e7dcfde200 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15334,7 +15334,7 @@ "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "eb98ca2a5a32eafe3f900478beb4258e67c896baec5ee44b6bed4bb0b0f6b606", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "503270a6bef3f40595776027e60c23297cbb043e9d0d68e0aef1812f75ade20e", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0541c248157f4c0f10dcaa338aea083ec15a7293c865a5de3d9cb13df8ecb41e", -"T3T1_cs_test_lock.py::test_hold_to_lock": "dad08e836117c018d5c91d42a51195ab3784b9109bf8feb88c9b16b868951b56", +"T3T1_cs_test_lock.py::test_hold_to_lock": "1824eb2d9867a82fb99174bac6ef8a906a0d6bf11381e0939091fee8a9c10b45", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "3ad09c8d05197cb0ac1627c792bebda14e1cd031c0c1414c9ace143c60f79fae", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "956e3bb892ca76d13da3bb45556dc19789d4fbfdde1052c4c954139f503f0c81", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "6f496d80c2ab52faf30679ceffd8915926d098be42f47123aaf18345e23baeeb", @@ -15383,7 +15383,7 @@ "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "93332879c26051be67399b47ce6135e729783ac35be14bba8a18f4bd7fad0163", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1c2c503e0ecf55359e7dc7800b190d71b01c6dc953d65494e9dd6940f40e4341", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "84895c70dcbeacd69227294e245f4a4aadd89aa25a33c2af70e40e88251fbc54", -"T3T1_de_test_lock.py::test_hold_to_lock": "dfadb3325a3352d33b4048c414c2c1a5eca35b9bfb1412d0cde926e36b184ef0", +"T3T1_de_test_lock.py::test_hold_to_lock": "b2136906b71a65f5e949f79e80f381b44a5b87e59f67f23ee22767abb588dfcf", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "63c08446669db6dd58a639b5fd2e18ca75f8f0309dd3588dbd7fe8d96352a2b4", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "bf9d0f3b2d019fff0af115958eed8b6aed3b8794b10a18ce02dd9dfb35037009", "T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "79efacad4f082f5e54879a81dcac263a01a7583a8d645e5f2102f61e308671bc", @@ -15432,7 +15432,7 @@ "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "37ee82e8643b9e226a332f8d8f644d38efa11abee4d5fa01cc7aeef259efdf48", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "abd96d32b92c8ef5c8ac4cac59ea78f623f7aef14392f98b6608c4ff62eabf19", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6ee94a1eb6437c83569d05695e0c224398f8b074d2e1a4c8a8b5b3496af87f55", -"T3T1_en_test_lock.py::test_hold_to_lock": "1bd07afb3ce583aa8b7afd2a1b9b72c64f81e12ecc3382fef8306a90e8f33624", +"T3T1_en_test_lock.py::test_hold_to_lock": "0dd53e59ef70d6b20ad463f16ae28ad18472cd7e26e5bf61eae78b05cb395009", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "77fe6f8bfb1ddc6a8516913c2ebc669e6b988e6ef9ea6846ef6d94e921fa65af", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "c5540d1c33265bcd397b8a72fe949eef9b514c708fb3bbc2d3d2aef804cc8a23", "T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "ce2aaa6bc1c26c65a4278ebd3e23dac4adf81fb71dd72af685db34ba766c3935", @@ -15481,7 +15481,7 @@ "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1f535bab5bdf06f820fb00b278cd8e10a686c9162f4d16e068e2da01e5d01281", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "fb5f271ecf82ce97bdf7a10c0a8b6d158a356c0a4e5a50ce114c464695e2f3d3", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3f28ed90d81f57c3c92467a8b98d4bb4362cf0fefbb7a54a79fe7653dc4a624f", -"T3T1_es_test_lock.py::test_hold_to_lock": "78ee06d95dc3e030a2720c608a3ee90e1af5fdaf02869823089eab12cbcdf997", +"T3T1_es_test_lock.py::test_hold_to_lock": "22121f35ab8ef5850185109c604bf540c3a7691b7a61c46ddbebc78e36e59ae4", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "3fc39e02f19cf7626398c62eeba26f2e36ee6449e3390283fa96c016ea85d58e", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "83116b38b2709f164d512a3e53dc36b2fc65cd635f8cc5dd49a7e4d01b52b554", "T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "7e4da3874efd61f9a37ecd276a3f104d15b511a075702de130ffc1b60ce96a2c", @@ -15530,7 +15530,7 @@ "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "46f84e9b2b88d4108ec7e7ae7000d8e3e9fe4fa4642955ba3e243cee5ee8caf4", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "6708cae42ad5c8ebfc6fcf11dfa9ef86e761075ecd071172c3798f2c5f6ab359", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10dce76a0863c78385b97f7c1aeca8d75fb5b15a13ff8a4e630bd8862be4d890", -"T3T1_fr_test_lock.py::test_hold_to_lock": "b0722dd84e823c408bea43a2a1a7ce00a310fa02c08e848cb2b5102337c0ee6d", +"T3T1_fr_test_lock.py::test_hold_to_lock": "31961b0cba116a3a786e5758e4753f703fb9b8499d4c6cc7bffc8a162de70e82", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "6a74ce7c04eb4b26b79b91ee0f1580e1296ebf25750f5b237451e84afabb69c5", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ce9ad70bbb739a124b7fb0e039a7c63954b04609f869c549b4ed0dbaab590c7f", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b4ee17ffa5f236746430884da9fafa69379ddb5c88383d517ce7e5cc1d88e7cc", From 7404436305c35615bb04cd21e378876233d38edf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 2 Jul 2024 18:43:13 +0200 Subject: [PATCH 429/626] refactor(core/ui): optimize brightness settings for Mercury --- core/.changelog.d/3969.fixed | 1 + .../generated/translated_string.rs | 4 +- .../src/ui/model_mercury/component/mod.rs | 4 - .../component/number_input_slider.rs | 33 +---- .../model_mercury/component/set_brightness.rs | 69 --------- .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../ui/model_mercury/flow/set_brightness.rs | 138 ++++++++++++++++++ .../embed/rust/src/ui/model_mercury/layout.rs | 23 +-- core/mocks/trezortranslate_keys.pyi | 2 +- core/translations/en.json | 2 +- 10 files changed, 149 insertions(+), 129 deletions(-) create mode 100644 core/.changelog.d/3969.fixed delete mode 100644 core/embed/rust/src/ui/model_mercury/component/set_brightness.rs create mode 100644 core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs diff --git a/core/.changelog.d/3969.fixed b/core/.changelog.d/3969.fixed new file mode 100644 index 0000000000..3b19dbfe27 --- /dev/null +++ b/core/.changelog.d/3969.fixed @@ -0,0 +1 @@ +[T3T1] Improved screen brightness settings. diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 1be0d1f0f0..49c9c54481 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1330,7 +1330,7 @@ pub enum TranslatedString { words__settings = 929, // "Settings" words__try_again = 930, // "Try again." reset__slip39_checklist_num_groups_x_template = 931, // "Number of groups: {0}" - brightness__title = 932, // "Set brightness" + brightness__title = 932, // "Change display brightness" recovery__title_unlock_repeated_backup = 933, // "Multi-share backup" recovery__unlock_repeated_backup = 934, // "Create additional backup?" recovery__unlock_repeated_backup_verb = 935, // "Create backup" @@ -2673,7 +2673,7 @@ impl TranslatedString { Self::words__settings => "Settings", Self::words__try_again => "Try again.", Self::reset__slip39_checklist_num_groups_x_template => "Number of groups: {0}", - Self::brightness__title => "Set brightness", + Self::brightness__title => "Change display brightness", Self::recovery__title_unlock_repeated_backup => "Multi-share backup", Self::recovery__unlock_repeated_backup => "Create additional backup?", Self::recovery__unlock_repeated_backup_verb => "Create backup", diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index c20c79b654..b51299c331 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -27,8 +27,6 @@ mod prompt_screen; mod result; mod scroll; #[cfg(feature = "translations")] -mod set_brightness; -#[cfg(feature = "translations")] mod share_words; mod status_screen; mod swipe_content; @@ -74,8 +72,6 @@ pub use prompt_screen::PromptScreen; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; #[cfg(feature = "translations")] -pub use set_brightness::SetBrightnessDialog; -#[cfg(feature = "translations")] pub use share_words::ShareWords; pub use status_screen::StatusScreen; pub use swipe_content::{InternallySwipable, InternallySwipableContent, SwipeContent}; diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs index 996d0ae59c..3f8b71999e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -5,25 +5,21 @@ use crate::{ constant::screen, display, event::TouchEvent, - geometry::{Alignment, Grid, Insets, Point, Rect}, + geometry::{Alignment, Insets, Point, Rect}, shape::{self, Renderer}, }, }; -use super::{theme, Button, ButtonMsg}; +use super::theme; pub enum NumberInputSliderDialogMsg { Changed(u16), - Confirmed, - Cancelled, } pub struct NumberInputSliderDialog { area: Rect, text_area: Rect, input: Child<NumberInputSlider>, - cancel_button: Child<Button>, - confirm_button: Child<Button>, min: u16, max: u16, val: u16, @@ -35,12 +31,6 @@ impl NumberInputSliderDialog { area: Rect::zero(), text_area: Rect::zero(), input: NumberInputSlider::new(min, max, init_value).into_child(), - cancel_button: Button::with_text("CANCEL".into()) - .styled(theme::button_cancel()) - .into_child(), - confirm_button: Button::with_text("CONFIRM".into()) - .styled(theme::button_confirm()) - .into_child(), min, max, val: init_value, @@ -57,18 +47,14 @@ impl Component for NumberInputSliderDialog { fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; - let button_height = theme::BUTTON_HEIGHT; let content_area = self.area.inset(Insets::top(2 * theme::BUTTON_SPACING)); let (_, content_area) = content_area.split_top(30); let (input_area, _) = content_area.split_top(15); - let (text_area, button_area) = content_area.split_bottom(button_height); + let (text_area, _) = content_area.split_bottom(theme::BUTTON_HEIGHT); self.text_area = text_area; - let grid = Grid::new(button_area, 1, 2).with_spacing(theme::KEYBOARD_SPACING); self.input.place(input_area.inset(Insets::sides(20))); - self.cancel_button.place(grid.row_col(0, 0)); - self.confirm_button.place(grid.row_col(0, 1)); bounds } @@ -77,19 +63,11 @@ impl Component for NumberInputSliderDialog { self.val = value; return Some(Self::Msg::Changed(value)); } - if let Some(ButtonMsg::Clicked) = self.cancel_button.event(ctx, event) { - return Some(Self::Msg::Cancelled); - } - if let Some(ButtonMsg::Clicked) = self.confirm_button.event(ctx, event) { - return Some(Self::Msg::Confirmed); - }; None } fn paint(&mut self) { self.input.paint(); - self.cancel_button.paint(); - self.confirm_button.paint(); } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { @@ -105,9 +83,6 @@ impl Component for NumberInputSliderDialog { .with_fg(theme::TEXT_NORMAL.text_color) .with_align(Alignment::Center) .render(target); - - self.cancel_button.render(target); - self.confirm_button.render(target); } } @@ -116,8 +91,6 @@ impl crate::trace::Trace for NumberInputSliderDialog { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("NumberInputSliderDialog"); t.child("input", &self.input); - t.child("cancel_button", &self.cancel_button); - t.child("confirm_button", &self.confirm_button); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs deleted file mode 100644 index d47c84de82..0000000000 --- a/core/embed/rust/src/ui/model_mercury/component/set_brightness.rs +++ /dev/null @@ -1,69 +0,0 @@ -use crate::{ - storage, - trezorhal::display, - ui::{ - component::{Component, Event, EventCtx}, - geometry::Rect, - shape::Renderer, - }, -}; - -use super::{ - super::theme, - number_input_slider::{NumberInputSliderDialog, NumberInputSliderDialogMsg}, - CancelConfirmMsg, -}; - -pub struct SetBrightnessDialog(NumberInputSliderDialog); - -impl SetBrightnessDialog { - pub fn new(current: Option<u16>) -> Self { - let current = current.unwrap_or(theme::backlight::get_backlight_normal()); - Self(NumberInputSliderDialog::new( - theme::backlight::get_backlight_min(), - theme::backlight::get_backlight_max(), - current, - )) - } -} - -impl Component for SetBrightnessDialog { - type Msg = CancelConfirmMsg; - - fn place(&mut self, bounds: Rect) -> Rect { - self.0.place(bounds) - } - - fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - match self.0.event(ctx, event) { - Some(NumberInputSliderDialogMsg::Changed(value)) => { - display::backlight(value as _); - None - } - Some(NumberInputSliderDialogMsg::Cancelled) => Some(CancelConfirmMsg::Cancelled), - Some(NumberInputSliderDialogMsg::Confirmed) => { - match storage::set_brightness(self.0.value() as _) { - Ok(_) => Some(CancelConfirmMsg::Confirmed), - Err(_) => Some(CancelConfirmMsg::Cancelled), // TODO: handle error - } - } - None => None, - } - } - - fn paint(&mut self) { - self.0.paint() - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.0.render(target); - } -} - -#[cfg(feature = "ui_debug")] -impl crate::trace::Trace for SetBrightnessDialog { - fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("SetBrightnessDialog"); - t.child("input", &self.0); - } -} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index decbd0d4ef..c87f04114f 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -7,6 +7,7 @@ pub mod confirm_summary; pub mod get_address; pub mod prompt_backup; pub mod request_number; +pub mod set_brightness; pub mod show_share_words; pub mod show_tutorial; pub mod warning_hi_prio; @@ -22,6 +23,7 @@ pub use confirm_summary::new_confirm_summary; pub use get_address::GetAddress; pub use prompt_backup::PromptBackup; pub use request_number::RequestNumber; +pub use set_brightness::SetBrightness; pub use show_share_words::ShowShareWords; pub use show_tutorial::ShowTutorial; pub use warning_hi_prio::WarningHiPrio; diff --git a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs new file mode 100644 index 0000000000..f85714450b --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs @@ -0,0 +1,138 @@ +use core::sync::atomic::{AtomicU16, Ordering}; + +use crate::{ + error::Error, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + storage, + translations::TR, + trezorhal::display, + ui::{ + component::{base::ComponentExt, swipe_detect::SwipeSettings, SwipeDirection}, + flow::{ + base::{Decision, FlowMsg}, + flow_store, FlowState, FlowStore, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::{ + number_input_slider::{NumberInputSliderDialog, NumberInputSliderDialogMsg}, + SwipeContent, + }, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq, ToPrimitive)] +pub enum SetBrightness { + Slider, + Menu, + Confirm, +} + +impl FlowState for SetBrightness { + fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + match (self, direction) { + (SetBrightness::Menu, SwipeDirection::Right) => { + Decision::Goto(SetBrightness::Slider, direction) + } + (SetBrightness::Slider, SwipeDirection::Up) => { + Decision::Goto(SetBrightness::Confirm, direction) + } + (SetBrightness::Confirm, SwipeDirection::Down) => { + Decision::Goto(SetBrightness::Slider, direction) + } + (SetBrightness::Confirm, SwipeDirection::Left) => { + Decision::Goto(SetBrightness::Menu, direction) + } + _ => Decision::Nothing, + } + } + + fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + match (self, msg) { + (SetBrightness::Slider, FlowMsg::Info) => { + Decision::Goto(SetBrightness::Menu, SwipeDirection::Left) + } + (SetBrightness::Menu, FlowMsg::Cancelled) => { + Decision::Goto(SetBrightness::Slider, SwipeDirection::Right) + } + (SetBrightness::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), + (SetBrightness::Confirm, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Confirmed), + (SetBrightness::Confirm, FlowMsg::Info) => { + Decision::Goto(SetBrightness::Menu, SwipeDirection::Left) + } + _ => Decision::Nothing, + } + } +} + +static BRIGHTNESS: AtomicU16 = AtomicU16::new(0); + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_set_brightness(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, SetBrightness::new_obj) } +} + +impl SetBrightness { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, Error> { + let current: Option<u16> = kwargs.get(Qstr::MP_QSTR_current)?.try_into_option()?; + let content_slider = Frame::left_aligned( + TR::brightness__title.into(), + NumberInputSliderDialog::new( + theme::backlight::get_backlight_min(), + theme::backlight::get_backlight_max(), + current.unwrap_or(theme::backlight::get_backlight_normal()), + ), + ) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Content(NumberInputSliderDialogMsg::Changed(n)) => { + display::backlight(n as _); + BRIGHTNESS.store(n, Ordering::Relaxed); + None + } + FrameMsg::Button(_) => Some(FlowMsg::Info), + }); + + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let content_confirm = Frame::left_aligned( + TR::brightness__title.into(), + SwipeContent::new(PromptScreen::new_tap_to_confirm()), + ) + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_menu_button() + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(move |msg| match msg { + FrameMsg::Content(()) => { + let _ = storage::set_brightness(BRIGHTNESS.load(Ordering::Relaxed) as u8); + Some(FlowMsg::Confirmed) + } + FrameMsg::Button(_) => Some(FlowMsg::Info), + }); + + let store = flow_store() + .add(content_slider)? + .add(content_menu)? + .add(content_confirm)?; + + let res = SwipeFlow::new(SetBrightness::Slider, store)?; + + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 97e89e9385..18e95b387a 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -217,15 +217,6 @@ where } } -impl ComponentMsgObj for SetBrightnessDialog { - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - CancelConfirmMsg::Confirmed => Ok(CONFIRMED.as_obj()), - CancelConfirmMsg::Cancelled => Ok(CANCELLED.as_obj()), - } - } -} - impl ComponentMsgObj for Progress { fn msg_try_into_obj(&self, _msg: Self::Msg) -> Result<Obj, Error> { unreachable!() @@ -1025,18 +1016,6 @@ extern "C" fn new_select_word(n_args: usize, args: *const Obj, kwargs: *mut Map) unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_set_brightness(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let current: Option<u16> = kwargs.get(Qstr::MP_QSTR_current)?.try_into_option()?; - let obj = LayoutObj::new(Frame::centered( - TR::brightness__title.into(), - SetBrightnessDialog::new(current), - ))?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1734,7 +1713,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// current: int | None = None /// ) -> LayoutObj[UiResult]: /// """Show the brightness configuration dialog.""" - Qstr::MP_QSTR_set_brightness => obj_fn_kw!(0, new_set_brightness).as_obj(), + Qstr::MP_QSTR_set_brightness => obj_fn_kw!(0, flow::set_brightness::new_set_brightness).as_obj(), /// def show_checklist( /// *, diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 085afa155e..48ed2143a2 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -79,7 +79,7 @@ class TR: bitcoin__unverified_external_inputs: str = "The transaction contains unverified external inputs." bitcoin__valid_signature: str = "The signature is valid." bitcoin__voting_rights: str = "Voting rights to:" - brightness__title: str = "Set brightness" + brightness__title: str = "Change display brightness" buttons__abort: str = "Abort" buttons__access: str = "Access" buttons__again: str = "Again" diff --git a/core/translations/en.json b/core/translations/en.json index 72460bd377..3bb11ce1e8 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -81,7 +81,7 @@ "bitcoin__unverified_external_inputs": "The transaction contains unverified external inputs.", "bitcoin__valid_signature": "The signature is valid.", "bitcoin__voting_rights": "Voting rights to:", - "brightness__title": "Set brightness", + "brightness__title": "Change display brightness", "buttons__abort": "Abort", "buttons__access": "Access", "buttons__again": "Again", From 7d90552d81f62ea9cb4233c85687dc3cb2a92c81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Mon, 15 Jul 2024 10:00:05 +0200 Subject: [PATCH 430/626] refactor(core/ui): new Mercury design for number input slider --- core/embed/rust/librust_qstr.h | 5 + .../generated/translated_string.rs | 19 ++- .../src/ui/model_mercury/component/mod.rs | 1 + .../component/number_input_slider.rs | 138 +++++++++++++----- .../ui/model_mercury/flow/set_brightness.rs | 75 +++++----- .../embed/rust/src/ui/model_mercury/layout.rs | 4 +- core/mocks/trezortranslate_keys.pyi | 7 +- core/translations/en.json | 7 +- core/translations/order.json | 7 +- core/translations/signatures.json | 6 +- 10 files changed, 185 insertions(+), 84 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index b752c9917d..b38c6e4ceb 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -121,6 +121,8 @@ static void _librust_qstrs(void) { MP_QSTR_bootscreen; MP_QSTR_br_code; MP_QSTR_br_type; + MP_QSTR_brightness__change_title; + MP_QSTR_brightness__changed_title; MP_QSTR_brightness__title; MP_QSTR_button; MP_QSTR_button_event; @@ -295,6 +297,7 @@ static void _librust_qstrs(void) { MP_QSTR_instructions__learn_more; MP_QSTR_instructions__shares_continue_with_x_template; MP_QSTR_instructions__shares_start_with_1; + MP_QSTR_instructions__swipe_horizontally; MP_QSTR_instructions__swipe_up; MP_QSTR_instructions__tap_to_confirm; MP_QSTR_instructions__tap_to_start; @@ -618,6 +621,8 @@ static void _librust_qstrs(void) { MP_QSTR_send__transaction_signed; MP_QSTR_send__you_are_contributing; MP_QSTR_set_brightness; + MP_QSTR_setting__adjust; + MP_QSTR_setting__apply; MP_QSTR_share_words; MP_QSTR_share_words__words_in_order; MP_QSTR_share_words__wrote_down_all; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 49c9c54481..6f56926ecb 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1330,7 +1330,7 @@ pub enum TranslatedString { words__settings = 929, // "Settings" words__try_again = 930, // "Try again." reset__slip39_checklist_num_groups_x_template = 931, // "Number of groups: {0}" - brightness__title = 932, // "Change display brightness" + brightness__title = 932, // "Display brightness" recovery__title_unlock_repeated_backup = 933, // "Multi-share backup" recovery__unlock_repeated_backup = 934, // "Create additional backup?" recovery__unlock_repeated_backup_verb = 935, // "Create backup" @@ -1349,6 +1349,11 @@ pub enum TranslatedString { tutorial__title_well_done = 948, // "Well done!" tutorial__lets_begin = 949, // "Learn how to use and navigate this device with ease." tutorial__get_started = 950, // "Get started!" + instructions__swipe_horizontally = 951, // "Swipe horizontally" + setting__adjust = 952, // "Adjust" + setting__apply = 953, // "Apply" + brightness__changed_title = 954, // "Display brightness changed" + brightness__change_title = 955, // "Change display brightness" } impl TranslatedString { @@ -2673,7 +2678,7 @@ impl TranslatedString { Self::words__settings => "Settings", Self::words__try_again => "Try again.", Self::reset__slip39_checklist_num_groups_x_template => "Number of groups: {0}", - Self::brightness__title => "Change display brightness", + Self::brightness__title => "Display brightness", Self::recovery__title_unlock_repeated_backup => "Multi-share backup", Self::recovery__unlock_repeated_backup => "Create additional backup?", Self::recovery__unlock_repeated_backup_verb => "Create backup", @@ -2692,6 +2697,11 @@ impl TranslatedString { Self::tutorial__title_well_done => "Well done!", Self::tutorial__lets_begin => "Learn how to use and navigate this device with ease.", Self::tutorial__get_started => "Get started!", + Self::instructions__swipe_horizontally => "Swipe horizontally", + Self::setting__adjust => "Adjust", + Self::setting__apply => "Apply", + Self::brightness__changed_title => "Display brightness changed", + Self::brightness__change_title => "Change display brightness", } } @@ -4036,6 +4046,11 @@ impl TranslatedString { Qstr::MP_QSTR_tutorial__title_well_done => Some(Self::tutorial__title_well_done), Qstr::MP_QSTR_tutorial__lets_begin => Some(Self::tutorial__lets_begin), Qstr::MP_QSTR_tutorial__get_started => Some(Self::tutorial__get_started), + Qstr::MP_QSTR_instructions__swipe_horizontally => Some(Self::instructions__swipe_horizontally), + Qstr::MP_QSTR_setting__adjust => Some(Self::setting__adjust), + Qstr::MP_QSTR_setting__apply => Some(Self::setting__apply), + Qstr::MP_QSTR_brightness__changed_title => Some(Self::brightness__changed_title), + Qstr::MP_QSTR_brightness__change_title => Some(Self::brightness__change_title), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index b51299c331..9a11533bfe 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -20,6 +20,7 @@ mod keyboard; mod loader; #[cfg(feature = "translations")] mod number_input; +#[cfg(feature = "translations")] pub mod number_input_slider; mod progress; #[cfg(feature = "translations")] diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs index 3f8b71999e..723a36c27e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -1,16 +1,17 @@ use crate::{ - strutil::ShortString, + strutil::{ShortString, TString}, + translations::TR, ui::{ component::{base::ComponentExt, Child, Component, Event, EventCtx}, constant::screen, display, event::TouchEvent, - geometry::{Alignment, Insets, Point, Rect}, + geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, shape::{self, Renderer}, }, }; -use super::theme; +use super::{theme, Footer}; pub enum NumberInputSliderDialogMsg { Changed(u16), @@ -18,22 +19,25 @@ pub enum NumberInputSliderDialogMsg { pub struct NumberInputSliderDialog { area: Rect, - text_area: Rect, input: Child<NumberInputSlider>, + footer: Footer<'static>, min: u16, max: u16, val: u16, + init_val: u16, } impl NumberInputSliderDialog { pub fn new(min: u16, max: u16, init_value: u16) -> Self { Self { area: Rect::zero(), - text_area: Rect::zero(), input: NumberInputSlider::new(min, max, init_value).into_child(), + footer: Footer::new::<TString<'static>>(TR::instructions__swipe_horizontally.into()) + .with_description::<TString<'static>>(TR::setting__adjust.into()), min, max, val: init_value, + init_val: init_value, } } @@ -42,25 +46,50 @@ impl NumberInputSliderDialog { } } +const INPUT_AREA_HEIGHT: i16 = 91; + impl Component for NumberInputSliderDialog { type Msg = NumberInputSliderDialogMsg; fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; - let content_area = self.area.inset(Insets::top(2 * theme::BUTTON_SPACING)); - let (_, content_area) = content_area.split_top(30); - let (input_area, _) = content_area.split_top(15); - let (text_area, _) = content_area.split_bottom(theme::BUTTON_HEIGHT); - self.text_area = text_area; + let whole_area = self.area.inset(Insets::bottom(theme::SPACING)); + let (remaining, footer_area) = whole_area.split_bottom(self.footer.height()); + self.footer.place(footer_area); + let content_area = remaining; + + let used_area = content_area + .inset(Insets::sides(theme::SPACING)) + .inset(Insets::bottom(theme::SPACING)); + + let input_area = Rect::snap( + used_area.center(), + Offset::new(used_area.width(), INPUT_AREA_HEIGHT), + Alignment2D::CENTER, + ); self.input.place(input_area.inset(Insets::sides(20))); + bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { if let Some(value) = self.input.event(ctx, event) { self.val = value; + + if self.val == self.init_val || self.input.inner().touching { + self.footer + .update_instruction(ctx, TR::instructions__swipe_horizontally); + self.footer.update_description(ctx, TR::setting__adjust); + ctx.request_paint(); + } else { + self.footer + .update_instruction(ctx, TR::instructions__swipe_up); + self.footer.update_description(ctx, TR::setting__apply); + ctx.request_paint(); + } + return Some(Self::Msg::Changed(value)); } None @@ -72,17 +101,7 @@ impl Component for NumberInputSliderDialog { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); - - let mut str = ShortString::new(); - let val_pct = (100 * (self.val - self.min)) / (self.max - self.min); - - unwrap!(ufmt::uwrite!(str, "{} %", val_pct)); - - shape::Text::new(self.text_area.center(), &str) - .with_font(theme::TEXT_NORMAL.text_font) - .with_fg(theme::TEXT_NORMAL.text_color) - .with_align(Alignment::Center) - .render(target); + self.footer.render(target); } } @@ -97,9 +116,11 @@ impl crate::trace::Trace for NumberInputSliderDialog { pub struct NumberInputSlider { area: Rect, touch_area: Rect, + text_area: Rect, min: u16, max: u16, value: u16, + touching: bool, } impl NumberInputSlider { @@ -108,20 +129,27 @@ impl NumberInputSlider { Self { area: Rect::zero(), touch_area: Rect::zero(), + text_area: Rect::zero(), min, max, value, + touching: false, } } - pub fn slider_eval(&mut self, pos: Point, ctx: &mut EventCtx) -> Option<u16> { - if self.touch_area.contains(pos) { + pub fn touch_eval( + &mut self, + pos: Point, + ctx: &mut EventCtx, + force_bubble_up: bool, + ) -> Option<u16> { + if self.touching { let filled = pos.x - self.area.x0; let filled = filled.clamp(0, self.area.width()); let val_pct = (filled as u16 * 100) / self.area.width() as u16; let val = (val_pct * (self.max - self.min)) / 100 + self.min; - if val != self.value { + if val != self.value || force_bubble_up { self.value = val; ctx.request_paint(); return Some(self.value); @@ -136,16 +164,26 @@ impl Component for NumberInputSlider { fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; - self.touch_area = bounds.outset(Insets::new(40, 20, 40, 20)).clamp(screen()); + self.touch_area = bounds.outset(Insets::new(0, 20, 0, 20)).clamp(screen()); bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { if let Event::Touch(touch_event) = event { return match touch_event { - TouchEvent::TouchStart(pos) => self.slider_eval(pos, ctx), - TouchEvent::TouchMove(pos) => self.slider_eval(pos, ctx), - TouchEvent::TouchEnd(pos) => self.slider_eval(pos, ctx), + TouchEvent::TouchStart(pos) => { + if self.touch_area.contains(pos) { + self.touching = true; + ctx.request_paint(); + } + self.touch_eval(pos, ctx, true) + } + TouchEvent::TouchMove(pos) => self.touch_eval(pos, ctx, false), + TouchEvent::TouchEnd(pos) => { + self.touching = false; + ctx.request_paint(); + self.touch_eval(pos, ctx, true) + } TouchEvent::TouchAbort => None, }; } @@ -160,16 +198,24 @@ impl Component for NumberInputSlider { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); + let (top_left_shape, top_right_shape, bot_left_shape, bot_right_shape) = + shape::CornerHighlight::from_rect( + self.area, + if self.touching { + theme::GREY_DARK + } else { + theme::WHITE + }, + theme::BG, + ); + top_left_shape.render(target); + top_right_shape.render(target); + bot_left_shape.render(target); + bot_right_shape.render(target); - shape::Bar::new(self.area) - .with_radius(2) - .with_thickness(2) - .with_bg(theme::BG) - .with_fg(theme::FG) - .render(target); + let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); - let inner = self.area.inset(Insets::uniform(1)); + let inner = self.area.inset(Insets::uniform(10)); let fill_to = (val_pct as i16 * inner.width()) / 100; @@ -177,8 +223,26 @@ impl Component for NumberInputSlider { shape::Bar::new(inner) .with_radius(1) - .with_bg(theme::FG) + .with_bg(if self.touching { + theme::WHITE + } else { + theme::GREY_EXTRA_DARK + }) .render(target); + + let mut str = ShortString::new(); + let val_pct = (100 * (self.value - self.min)) / (self.max - self.min); + + unwrap!(ufmt::uwrite!(str, "{} %", val_pct)); + + if !self.touching { + let text_height = theme::TEXT_BOLD.text_font.line_height(); + shape::Text::new(self.area.center() + Offset::new(0, text_height / 2), &str) + .with_font(theme::TEXT_BOLD.text_font) + .with_fg(theme::TEXT_BOLD.text_color) + .with_align(Alignment::Center) + .render(target); + } } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs index f85714450b..48baf45dac 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs @@ -9,8 +9,8 @@ use crate::{ ui::{ component::{base::ComponentExt, swipe_detect::SwipeSettings, SwipeDirection}, flow::{ - base::{Decision, FlowMsg}, - flow_store, FlowState, FlowStore, SwipeFlow, + base::{DecisionBuilder as _, FlowMsg, StateChange}, + FlowState, SwipeFlow, }, layout::obj::LayoutObj, model_mercury::component::{ @@ -21,7 +21,7 @@ use crate::{ }; use super::super::{ - component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + component::{Frame, FrameMsg, PromptScreen, StatusScreen, VerticalMenu, VerticalMenuChoiceMsg}, theme, }; @@ -30,41 +30,35 @@ pub enum SetBrightness { Slider, Menu, Confirm, + Confirmed, } impl FlowState for SetBrightness { - fn handle_swipe(&self, direction: SwipeDirection) -> Decision<Self> { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (SetBrightness::Menu, SwipeDirection::Right) => { - Decision::Goto(SetBrightness::Slider, direction) - } - (SetBrightness::Slider, SwipeDirection::Up) => { - Decision::Goto(SetBrightness::Confirm, direction) - } - (SetBrightness::Confirm, SwipeDirection::Down) => { - Decision::Goto(SetBrightness::Slider, direction) - } - (SetBrightness::Confirm, SwipeDirection::Left) => { - Decision::Goto(SetBrightness::Menu, direction) - } - _ => Decision::Nothing, + (Self::Menu, SwipeDirection::Right) => Self::Slider.swipe(direction), + (Self::Slider, SwipeDirection::Up) => Self::Confirm.swipe(direction), + (Self::Confirm, SwipeDirection::Down) => Self::Slider.swipe(direction), + (Self::Confirm, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Confirmed, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), } } - fn handle_event(&self, msg: FlowMsg) -> Decision<Self> { + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (SetBrightness::Slider, FlowMsg::Info) => { - Decision::Goto(SetBrightness::Menu, SwipeDirection::Left) - } - (SetBrightness::Menu, FlowMsg::Cancelled) => { - Decision::Goto(SetBrightness::Slider, SwipeDirection::Right) - } - (SetBrightness::Menu, FlowMsg::Choice(0)) => Decision::Return(FlowMsg::Cancelled), - (SetBrightness::Confirm, FlowMsg::Confirmed) => Decision::Return(FlowMsg::Confirmed), - (SetBrightness::Confirm, FlowMsg::Info) => { - Decision::Goto(SetBrightness::Menu, SwipeDirection::Left) - } - _ => Decision::Nothing, + (Self::Slider, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Slider.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + (Self::Confirm, FlowMsg::Confirmed) => Self::Confirmed.swipe_up(), + (Self::Confirm, FlowMsg::Info) => Self::Menu.swipe_left(), + (Self::Confirmed, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), } } } @@ -87,8 +81,8 @@ impl SetBrightness { current.unwrap_or(theme::backlight::get_backlight_normal()), ), ) + .with_subtitle(TR::homescreen__settings_subtitle.into()) .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .map(|msg| match msg { FrameMsg::Content(NumberInputSliderDialogMsg::Changed(n)) => { @@ -111,7 +105,7 @@ impl SetBrightness { }); let content_confirm = Frame::left_aligned( - TR::brightness__title.into(), + TR::brightness__change_title.into(), SwipeContent::new(PromptScreen::new_tap_to_confirm()), ) .with_footer(TR::instructions__tap_to_confirm.into(), None) @@ -126,12 +120,19 @@ impl SetBrightness { FrameMsg::Button(_) => Some(FlowMsg::Info), }); - let store = flow_store() - .add(content_slider)? - .add(content_menu)? - .add(content_confirm)?; + let content_confirmed = Frame::left_aligned( + TR::brightness__changed_title.into(), + SwipeContent::new(StatusScreen::new_success()).with_no_attach_anim(), + ) + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .map(move |_msg| Some(FlowMsg::Confirmed)); - let res = SwipeFlow::new(SetBrightness::Slider, store)?; + let res = SwipeFlow::new(&SetBrightness::Slider)? + .with_page(&SetBrightness::Slider, content_slider)? + .with_page(&SetBrightness::Menu, content_menu)? + .with_page(&SetBrightness::Confirm, content_confirm)? + .with_page(&SetBrightness::Confirmed, content_confirmed)?; Ok(LayoutObj::new(res)?.into()) } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 18e95b387a..7726e5fe6f 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -6,8 +6,8 @@ use super::{ CoinJoinProgress, FidoConfirm, FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, - SelectWordCount, SelectWordCountMsg, SetBrightnessDialog, Slip39Input, StatusScreen, - SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, + SelectWordCount, SelectWordCountMsg, Slip39Input, StatusScreen, SwipeUpScreen, + SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, }, flow, theme, }; diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 48ed2143a2..327a930862 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -79,7 +79,9 @@ class TR: bitcoin__unverified_external_inputs: str = "The transaction contains unverified external inputs." bitcoin__valid_signature: str = "The signature is valid." bitcoin__voting_rights: str = "Voting rights to:" - brightness__title: str = "Change display brightness" + brightness__change_title: str = "Change display brightness" + brightness__changed_title: str = "Display brightness changed" + brightness__title: str = "Display brightness" buttons__abort: str = "Abort" buttons__access: str = "Access" buttons__again: str = "Again" @@ -385,6 +387,7 @@ class TR: instructions__learn_more: str = "Learn more" instructions__shares_continue_with_x_template: str = "Continue with Share #{0}" instructions__shares_start_with_1: str = "Start with share #1" + instructions__swipe_horizontally: str = "Swipe horizontally" instructions__swipe_up: str = "Swipe up" instructions__tap_to_confirm: str = "Tap to confirm" instructions__tap_to_start: str = "Tap to start" @@ -742,6 +745,8 @@ class TR: send__transaction_id: str = "Transaction ID:" send__transaction_signed: str = "Transaction signed" send__you_are_contributing: str = "You are contributing:" + setting__adjust: str = "Adjust" + setting__apply: str = "Apply" share_words__words_in_order: str = " words in order." share_words__wrote_down_all: str = "I wrote down all " sign_message__bytes_template: str = "{0} Bytes" diff --git a/core/translations/en.json b/core/translations/en.json index 3bb11ce1e8..f9ddb412ef 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -81,7 +81,9 @@ "bitcoin__unverified_external_inputs": "The transaction contains unverified external inputs.", "bitcoin__valid_signature": "The signature is valid.", "bitcoin__voting_rights": "Voting rights to:", - "brightness__title": "Change display brightness", + "brightness__title": "Display brightness", + "brightness__change_title": "Change display brightness", + "brightness__changed_title": "Display brightness changed", "buttons__abort": "Abort", "buttons__access": "Access", "buttons__again": "Again", @@ -388,6 +390,7 @@ "instructions__shares_continue_with_x_template": "Continue with Share #{0}", "instructions__shares_start_with_1": "Start with share #1", "instructions__swipe_up": "Swipe up", + "instructions__swipe_horizontally": "Swipe horizontally", "instructions__tap_to_confirm": "Tap to confirm", "instructions__tap_to_start": "Tap to start", "joint__title": "Joint transaction", @@ -744,6 +747,8 @@ "send__transaction_id": "Transaction ID:", "send__transaction_signed": "Transaction signed", "send__you_are_contributing": "You are contributing:", + "setting__adjust": "Adjust", + "setting__apply": "Apply", "share_words__words_in_order": " words in order.", "share_words__wrote_down_all": "I wrote down all ", "sign_message__bytes_template": "{0} Bytes", diff --git a/core/translations/order.json b/core/translations/order.json index f3a3c15e15..ad52d92b62 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -949,5 +949,10 @@ "947": "tutorial__title_hold", "948": "tutorial__title_well_done", "949": "tutorial__lets_begin", - "950": "tutorial__get_started" + "950": "tutorial__get_started", + "951": "instructions__swipe_horizontally", + "952": "setting__adjust", + "953": "setting__apply", + "954": "brightness__changed_title", + "955": "brightness__change_title" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 377f95e5d2..d21071bec2 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "f8fe7da5605cc8f5136d8d77b526df530daddbb6795e7c7fa1906822d3dd2a10", - "datetime": "2024-07-08T22:50:20.632650", - "commit": "c9c4bf63623d411384737662ec2aefc88824812d" + "merkle_root": "c94efabb9554eea2adb7f312469fa8b366503bbdb57dd7f92fa67b23dc63bb97", + "datetime": "2024-07-15T09:41:37.793874", + "commit": "5935708ac86d336364e5ab78fc5fd67b19402eaf" }, "history": [ { From e6a2a3b26369a30bb1b0c52e5ce77fe34e2e2d39 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 11 Jul 2024 09:55:35 +0200 Subject: [PATCH 431/626] refactor(core/mercury): extract frame header to separate component [no changelog] --- .../src/ui/model_mercury/component/frame.rs | 83 ++-------- .../src/ui/model_mercury/component/header.rs | 148 ++++++++++++++++++ .../src/ui/model_mercury/component/mod.rs | 2 + 3 files changed, 166 insertions(+), 67 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/component/header.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index f1ee74ed44..287cad3c20 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -2,7 +2,6 @@ use crate::{ strutil::TString, ui::{ component::{ - label::Label, swipe_detect::{SwipeConfig, SwipeSettings}, text::TextStyle, Component, Event, @@ -19,19 +18,15 @@ use crate::{ }, }; -use super::{theme, Button, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer}; - -const BUTTON_EXPAND_BORDER: i16 = 32; +use super::{theme, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer, Header}; #[derive(Clone)] pub struct Frame<T> { border: Insets, bounds: Rect, - title: Label<'static>, - subtitle: Option<Label<'static>>, - button: Option<Button>, button_msg: CancelInfoConfirmMsg, content: T, + header: Header, footer: Option<Footer<'static>>, swipe: SwipeConfig, internal_page_cnt: usize, @@ -50,13 +45,11 @@ where { pub const fn new(alignment: Alignment, title: TString<'static>, content: T) -> Self { Self { - title: Label::new(title, alignment, theme::label_title_main()).vertically_centered(), bounds: Rect::zero(), - subtitle: None, border: theme::borders(), - button: None, button_msg: CancelInfoConfirmMsg::Cancelled, content, + header: Header::new(alignment, title), footer: None, swipe: SwipeConfig::new(), internal_page_cnt: 1, @@ -88,21 +81,13 @@ where #[inline(never)] pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { - let style = theme::TEXT_SUB_GREY; - self.title = self.title.top_aligned(); - self.subtitle = Some(Label::new(subtitle, self.title.alignment(), style)); + self.header = self.header.with_subtitle(subtitle); self } #[inline(never)] fn with_button(mut self, icon: Icon, msg: CancelInfoConfirmMsg, enabled: bool) -> Self { - let touch_area = Insets::uniform(BUTTON_EXPAND_BORDER); - self.button = Some( - Button::with_icon(icon) - .with_expanded_touch_area(touch_area) - .initially_enabled(enabled) - .styled(theme::button_default()), - ); + self.header = self.header.with_button(icon, enabled); self.button_msg = msg; self } @@ -121,21 +106,17 @@ where } pub fn title_styled(mut self, style: TextStyle) -> Self { - self.title = self.title.styled(style); + self.header = self.header.styled(style); self } pub fn subtitle_styled(mut self, style: TextStyle) -> Self { - if let Some(subtitle) = self.subtitle.take() { - self.subtitle = Some(subtitle.styled(style)) - } + self.header = self.header.subtitle_styled(style); self } pub fn button_styled(mut self, style: ButtonStyleSheet) -> Self { - if self.button.is_some() { - self.button = Some(self.button.unwrap().styled(style)); - } + self.header = self.header.button_styled(style); self } @@ -169,7 +150,7 @@ where } pub fn update_title(&mut self, ctx: &mut EventCtx, new_title: TString<'static>) { - self.title.set_text(new_title); + self.header.update_title(new_title); ctx.request_paint(); } @@ -179,16 +160,7 @@ where new_subtitle: TString<'static>, new_style: Option<TextStyle>, ) { - let style = new_style.unwrap_or(theme::TEXT_SUB_GREY); - match &mut self.subtitle { - Some(subtitle) => { - subtitle.set_style(style); - subtitle.set_text(new_subtitle); - } - None => { - self.subtitle = Some(Label::new(new_subtitle, self.title.alignment(), style)); - } - } + self.header.update_subtitle(new_subtitle, new_style); ctx.request_paint(); } @@ -245,19 +217,7 @@ where content_area = content_area.inset(Insets::top(theme::SPACING)); header_area = header_area.inset(Insets::sides(theme::SPACING)); - if let Some(b) = &mut self.button { - let (rest, button_area) = header_area.split_right(TITLE_HEIGHT); - header_area = rest; - b.place(button_area); - } - - if self.subtitle.is_some() { - let title_area = self.title.place(header_area); - let remaining = header_area.inset(Insets::top(title_area.height())); - let _subtitle_area = self.subtitle.place(remaining); - } else { - self.title.place(header_area); - } + self.header.place(header_area); if let Some(footer) = &mut self.footer { // FIXME: spacer at the bottom might be applied also for usage without footer @@ -290,8 +250,6 @@ where } } - self.title.event(ctx, event); - self.subtitle.event(ctx, event); self.footer.event(ctx, event); let msg = self.content.event(ctx, event).map(FrameMsg::Content); if let Some(count) = ctx.page_count() { @@ -301,23 +259,19 @@ where if msg.is_some() { return msg; } - if let Some(ButtonMsg::Clicked) = self.button.event(ctx, event) { + if let Some(ButtonMsg::Clicked) = self.header.event(ctx, event) { return Some(FrameMsg::Button(self.button_msg)); } None } fn paint(&mut self) { - self.title.paint(); - self.subtitle.paint(); - self.button.paint(); + self.header.paint(); self.footer.paint(); self.content.paint(); } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.title.render(target); - self.subtitle.render(target); - self.button.render(target); + self.header.render(target); self.footer.render(target); self.content.render(target); @@ -367,14 +321,9 @@ where { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Frame"); - t.child("title", &self.title); + t.child("header", &self.header); t.child("content", &self.content); - if let Some(subtitle) = &self.subtitle { - t.child("subtitle", subtitle); - } - if let Some(button) = &self.button { - t.child("button", button); - } + if let Some(footer) = &self.footer { t.child("footer", footer); } diff --git a/core/embed/rust/src/ui/model_mercury/component/header.rs b/core/embed/rust/src/ui/model_mercury/component/header.rs new file mode 100644 index 0000000000..9e6e7bfdb4 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/header.rs @@ -0,0 +1,148 @@ +use crate::{ + strutil::TString, + ui::{ + component::{text::TextStyle, Component, Event, EventCtx, Label}, + display::Icon, + geometry::{Alignment, Insets, Rect}, + model_mercury::{ + component::{Button, ButtonMsg, ButtonStyleSheet}, + theme, + theme::TITLE_HEIGHT, + }, + shape::Renderer, + }, +}; + +const BUTTON_EXPAND_BORDER: i16 = 32; +#[derive(Clone)] +pub struct Header { + area: Rect, + title: Label<'static>, + subtitle: Option<Label<'static>>, + button: Option<Button>, +} + +impl Header { + pub const fn new(alignment: Alignment, title: TString<'static>) -> Self { + Self { + area: Rect::zero(), + title: Label::new(title, alignment, theme::label_title_main()).vertically_centered(), + subtitle: None, + button: None, + } + } + + pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { + let style = theme::TEXT_SUB_GREY; + self.title = self.title.top_aligned(); + self.subtitle = Some(Label::new(subtitle, self.title.alignment(), style)); + self + } + + pub fn styled(mut self, style: TextStyle) -> Self { + self.title = self.title.styled(style); + self + } + + pub fn subtitle_styled(mut self, style: TextStyle) -> Self { + if let Some(subtitle) = self.subtitle.take() { + self.subtitle = Some(subtitle.styled(style)) + } + self + } + + pub fn update_title(&mut self, title: TString<'static>) { + self.title.set_text(title); + } + + pub fn update_subtitle( + &mut self, + new_subtitle: TString<'static>, + new_style: Option<TextStyle>, + ) { + let style = new_style.unwrap_or(theme::TEXT_SUB_GREY); + match &mut self.subtitle { + Some(subtitle) => { + subtitle.set_style(style); + subtitle.set_text(new_subtitle); + } + None => { + self.subtitle = Some(Label::new(new_subtitle, self.title.alignment(), style)); + } + } + } + + pub fn with_button(mut self, icon: Icon, enabled: bool) -> Self { + let touch_area = Insets::uniform(BUTTON_EXPAND_BORDER); + self.button = Some( + Button::with_icon(icon) + .with_expanded_touch_area(touch_area) + .initially_enabled(enabled) + .styled(theme::button_default()), + ); + self + } + + pub fn button_styled(mut self, style: ButtonStyleSheet) -> Self { + if self.button.is_some() { + self.button = Some(self.button.unwrap().styled(style)); + } + self + } +} + +impl Component for Header { + type Msg = ButtonMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + let header_area = if let Some(b) = &mut self.button { + let (rest, button_area) = bounds.split_right(TITLE_HEIGHT); + b.place(button_area); + rest + } else { + bounds + }; + + if self.subtitle.is_some() { + let title_area = self.title.place(header_area); + let remaining = header_area.inset(Insets::top(title_area.height())); + let _subtitle_area = self.subtitle.place(remaining); + } else { + self.title.place(header_area); + } + + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.title.event(ctx, event); + self.subtitle.event(ctx, event); + + self.button.event(ctx, event) + } + + fn paint(&mut self) { + todo!() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.button.render(target); + self.title.render(target); + self.subtitle.render(target); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for Header { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("Header"); + t.child("title", &self.title); + if let Some(subtitle) = &self.subtitle { + t.child("subtitle", subtitle); + } + + if let Some(button) = &self.button { + t.child("button", button); + } + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 9a11533bfe..bb58e3bf26 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -11,6 +11,7 @@ mod vertical_menu; mod fido_icons; mod error; mod frame; +mod header; #[cfg(feature = "translations")] mod hold_to_confirm; #[cfg(feature = "translations")] @@ -49,6 +50,7 @@ pub use error::ErrorScreen; pub use fido::{FidoConfirm, FidoMsg}; pub use footer::Footer; pub use frame::{Frame, FrameMsg}; +pub use header::Header; #[cfg(feature = "translations")] pub use hold_to_confirm::HoldToConfirm; #[cfg(feature = "micropython")] From 905beb6edee2ff179885334d555a0045db5cded7 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 11 Jul 2024 10:02:15 +0200 Subject: [PATCH 432/626] refactor(core/mercury): extract swipe cover rendering from frame [no changelog] --- .../src/ui/model_mercury/component/frame.rs | 110 +++++++++++------- 1 file changed, 66 insertions(+), 44 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 287cad3c20..2200c6a656 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -20,6 +20,67 @@ use crate::{ use super::{theme, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer, Header}; +#[derive(Clone)] +pub struct HorizontalSwipe { + progress: i16, + dir: SwipeDirection, +} + +impl HorizontalSwipe { + const fn new() -> Self { + Self { + progress: 0, + dir: SwipeDirection::Up, + } + } + + fn event(&mut self, event: Event, swipe: SwipeConfig) { + if let Event::Attach(_) = event { + self.progress = 0; + } + + if let Swipe(SwipeEvent::Move(dir, progress)) = event { + if swipe.is_allowed(dir) { + match dir { + SwipeDirection::Left | SwipeDirection::Right => { + self.progress = progress; + self.dir = dir; + } + _ => {} + } + } + } + } + + fn render_swipe_cover<'s>(&self, target: &mut impl Renderer<'s>, bounds: Rect) { + if self.progress > 0 { + match self.dir { + SwipeDirection::Left => { + let shift = pareen::constant(0.0).seq_ease_out( + 0.0, + easer::functions::Circ, + 1.0, + pareen::constant(1.0), + ); + + let p = Point::lerp( + bounds.top_right(), + bounds.top_left(), + shift.eval(self.progress as f32 / SwipeDetect::PROGRESS_MAX as f32), + ); + + shape::Bar::new(Rect::new(p, bounds.bottom_right())) + .with_fg(theme::BLACK) + .with_bg(theme::BLACK) + .render(target); + } + SwipeDirection::Right => {} + _ => {} + } + } + } +} + #[derive(Clone)] pub struct Frame<T> { border: Insets, @@ -30,8 +91,7 @@ pub struct Frame<T> { footer: Option<Footer<'static>>, swipe: SwipeConfig, internal_page_cnt: usize, - progress: i16, - dir: SwipeDirection, + horizontal_swipe: HorizontalSwipe, } pub enum FrameMsg<T> { @@ -53,8 +113,7 @@ where footer: None, swipe: SwipeConfig::new(), internal_page_cnt: 1, - progress: 0, - dir: SwipeDirection::Up, + horizontal_swipe: HorizontalSwipe::new(), } } @@ -234,21 +293,7 @@ where } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if let Event::Attach(_) = event { - self.progress = 0; - } - - if let Swipe(SwipeEvent::Move(dir, progress)) = event { - if self.swipe.is_allowed(dir) { - match dir { - SwipeDirection::Left | SwipeDirection::Right => { - self.progress = progress; - self.dir = dir; - } - _ => {} - } - } - } + self.horizontal_swipe.event(event, self.swipe); self.footer.event(ctx, event); let msg = self.content.event(ctx, event).map(FrameMsg::Content); @@ -275,31 +320,8 @@ where self.footer.render(target); self.content.render(target); - if self.progress > 0 { - match self.dir { - SwipeDirection::Left => { - let shift = pareen::constant(0.0).seq_ease_out( - 0.0, - easer::functions::Circ, - 1.0, - pareen::constant(1.0), - ); - - let p = Point::lerp( - self.bounds.top_right(), - self.bounds.top_left(), - shift.eval(self.progress as f32 / SwipeDetect::PROGRESS_MAX as f32), - ); - - shape::Bar::new(Rect::new(p, self.bounds.bottom_right())) - .with_fg(theme::BLACK) - .with_bg(theme::BLACK) - .render(target); - } - SwipeDirection::Right => {} - _ => {} - } - } + self.horizontal_swipe + .render_swipe_cover(target, self.bounds); } } From 747303fd39fdac212c142f306e22e31edb120fa9 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 11 Jul 2024 10:05:19 +0200 Subject: [PATCH 433/626] fix(core/mercury): fix trace impl for TapToConfirm and HoldToConfirm [no changelog] --- .../rust/src/ui/model_mercury/component/hold_to_confirm.rs | 2 +- .../embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs index b8c2cc9a22..258882d9e8 100644 --- a/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/hold_to_confirm.rs @@ -366,7 +366,7 @@ impl Component for HoldToConfirm { #[cfg(feature = "ui_debug")] impl crate::trace::Trace for HoldToConfirm { fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("StatusScreen"); + t.component("HoldToConfirm"); t.child("button", &self.button); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs index 51965f942f..abad6b797c 100644 --- a/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs +++ b/core/embed/rust/src/ui/model_mercury/component/tap_to_confirm.rs @@ -243,7 +243,7 @@ impl Component for TapToConfirm { #[cfg(feature = "ui_debug")] impl crate::trace::Trace for TapToConfirm { fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("StatusScreen"); + t.component("TapToConfirm"); t.child("button", &self.button); } } From f2bdd6e189db101d06938dd390074d7d4ccb6bb7 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 11 Jul 2024 16:14:55 +0200 Subject: [PATCH 434/626] fix(core/mercury): change status screen - display message in center after animation Because some messages didn't fit the title --- core/.changelog.d/4023.fixed | 1 + core/embed/rust/librust_qstr.h | 1 + .../generated/translated_string.rs | 3 + .../src/ui/model_mercury/component/frame.rs | 10 +- .../src/ui/model_mercury/component/header.rs | 120 +- .../model_mercury/component/status_screen.rs | 105 +- .../src/ui/model_mercury/flow/get_address.rs | 5 +- .../ui/model_mercury/flow/set_brightness.rs | 7 +- .../ui/model_mercury/flow/warning_hi_prio.rs | 11 +- .../embed/rust/src/ui/model_mercury/layout.rs | 13 +- core/mocks/trezortranslate_keys.pyi | 1 + core/translations/en.json | 1 + core/translations/order.json | 3 +- core/translations/signatures.json | 6 +- tests/ui_tests/fixtures.json | 1530 ++++++++--------- 15 files changed, 1005 insertions(+), 812 deletions(-) create mode 100644 core/.changelog.d/4023.fixed diff --git a/core/.changelog.d/4023.fixed b/core/.changelog.d/4023.fixed new file mode 100644 index 0000000000..87ceb7dfde --- /dev/null +++ b/core/.changelog.d/4023.fixed @@ -0,0 +1 @@ +[T3T1] Fixed title sometimes not fitting into result screen diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index b38c6e4ceb..41a7ed0068 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -771,6 +771,7 @@ static void _librust_qstrs(void) { MP_QSTR_words__sign; MP_QSTR_words__signer; MP_QSTR_words__title_check; + MP_QSTR_words__title_done; MP_QSTR_words__title_group; MP_QSTR_words__title_information; MP_QSTR_words__title_remember; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 6f56926ecb..56a710899b 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1354,6 +1354,7 @@ pub enum TranslatedString { setting__apply = 953, // "Apply" brightness__changed_title = 954, // "Display brightness changed" brightness__change_title = 955, // "Change display brightness" + words__title_done = 956, // "Done" } impl TranslatedString { @@ -2702,6 +2703,7 @@ impl TranslatedString { Self::setting__apply => "Apply", Self::brightness__changed_title => "Display brightness changed", Self::brightness__change_title => "Change display brightness", + Self::words__title_done => "Done", } } @@ -4051,6 +4053,7 @@ impl TranslatedString { Qstr::MP_QSTR_setting__apply => Some(Self::setting__apply), Qstr::MP_QSTR_brightness__changed_title => Some(Self::brightness__changed_title), Qstr::MP_QSTR_brightness__change_title => Some(Self::brightness__change_title), + Qstr::MP_QSTR_words__title_done => Some(Self::words__title_done), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 2200c6a656..174d4f15fe 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -1,3 +1,4 @@ +use super::{theme, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer, Header}; use crate::{ strutil::TString, ui::{ @@ -8,7 +9,7 @@ use crate::{ Event::Swipe, EventCtx, SwipeDetect, SwipeDirection, }, - display::Icon, + display::{Color, Icon}, event::SwipeEvent, geometry::{Alignment, Insets, Point, Rect}, lerp::Lerp, @@ -18,8 +19,6 @@ use crate::{ }, }; -use super::{theme, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer, Header}; - #[derive(Clone)] pub struct HorizontalSwipe { progress: i16, @@ -179,6 +178,11 @@ where self } + pub fn with_result_icon(mut self, icon: Icon, color: Color) -> Self { + self.header = self.header.with_result_icon(icon, color); + self + } + #[inline(never)] pub fn with_footer( mut self, diff --git a/core/embed/rust/src/ui/model_mercury/component/header.rs b/core/embed/rust/src/ui/model_mercury/component/header.rs index 9e6e7bfdb4..af0e0ea146 100644 --- a/core/embed/rust/src/ui/model_mercury/component/header.rs +++ b/core/embed/rust/src/ui/model_mercury/component/header.rs @@ -1,18 +1,65 @@ use crate::{ strutil::TString, + time::{Duration, Stopwatch}, ui::{ component::{text::TextStyle, Component, Event, EventCtx, Label}, - display::Icon, - geometry::{Alignment, Insets, Rect}, + display::{Color, Icon}, + geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, + lerp::Lerp, model_mercury::{ component::{Button, ButtonMsg, ButtonStyleSheet}, theme, theme::TITLE_HEIGHT, }, + shape, shape::Renderer, + util::animation_disabled, }, }; +const ANIMATION_TIME_MS: u32 = 1000; + +#[derive(Default, Clone)] +struct AttachAnimation { + pub timer: Stopwatch, +} + +impl AttachAnimation { + pub fn is_active(&self) -> bool { + if animation_disabled() { + return false; + } + + self.timer + .is_running_within(Duration::from_millis(ANIMATION_TIME_MS)) + } + + pub fn eval(&self) -> f32 { + if animation_disabled() { + return ANIMATION_TIME_MS as f32 / 1000.0; + } + self.timer.elapsed().to_millis() as f32 / 1000.0 + } + + pub fn get_title_offset(&self, t: f32) -> i16 { + let fnc = pareen::constant(0.0).seq_ease_in_out( + 0.8, + easer::functions::Cubic, + 0.2, + pareen::constant(1.0), + ); + i16::lerp(0, 25, fnc.eval(t)) + } + + pub fn start(&mut self) { + self.timer.start(); + } + + pub fn reset(&mut self) { + self.timer = Stopwatch::new_stopped(); + } +} + const BUTTON_EXPAND_BORDER: i16 = 32; #[derive(Clone)] pub struct Header { @@ -20,6 +67,10 @@ pub struct Header { title: Label<'static>, subtitle: Option<Label<'static>>, button: Option<Button>, + anim: Option<AttachAnimation>, + icon: Option<Icon>, + color: Option<Color>, + title_style: TextStyle, } impl Header { @@ -29,32 +80,37 @@ impl Header { title: Label::new(title, alignment, theme::label_title_main()).vertically_centered(), subtitle: None, button: None, + anim: None, + icon: None, + color: None, + title_style: theme::label_title_main(), } } - + #[inline(never)] pub fn with_subtitle(mut self, subtitle: TString<'static>) -> Self { let style = theme::TEXT_SUB_GREY; self.title = self.title.top_aligned(); self.subtitle = Some(Label::new(subtitle, self.title.alignment(), style)); self } - + #[inline(never)] pub fn styled(mut self, style: TextStyle) -> Self { + self.title_style = style; self.title = self.title.styled(style); self } - + #[inline(never)] pub fn subtitle_styled(mut self, style: TextStyle) -> Self { if let Some(subtitle) = self.subtitle.take() { self.subtitle = Some(subtitle.styled(style)) } self } - + #[inline(never)] pub fn update_title(&mut self, title: TString<'static>) { self.title.set_text(title); } - + #[inline(never)] pub fn update_subtitle( &mut self, new_subtitle: TString<'static>, @@ -72,6 +128,7 @@ impl Header { } } + #[inline(never)] pub fn with_button(mut self, icon: Icon, enabled: bool) -> Self { let touch_area = Insets::uniform(BUTTON_EXPAND_BORDER); self.button = Some( @@ -82,6 +139,7 @@ impl Header { ); self } + #[inline(never)] pub fn button_styled(mut self, style: ButtonStyleSheet) -> Self { if self.button.is_some() { @@ -89,6 +147,16 @@ impl Header { } self } + + #[inline(never)] + pub fn with_result_icon(mut self, icon: Icon, color: Color) -> Self { + self.anim = Some(AttachAnimation::default()); + self.icon = Some(icon); + self.color = Some(color); + let mut title_style = self.title_style; + title_style.text_color = color; + self.styled(title_style) + } } impl Component for Header { @@ -111,6 +179,7 @@ impl Component for Header { self.title.place(header_area); } + self.area = bounds; bounds } @@ -118,6 +187,20 @@ impl Component for Header { self.title.event(ctx, event); self.subtitle.event(ctx, event); + if let Some(anim) = &mut self.anim { + if let Event::Attach(_) = event { + anim.start(); + ctx.request_paint(); + ctx.request_anim_frame(); + } + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if anim.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + } + self.button.event(ctx, event) } @@ -126,9 +209,28 @@ impl Component for Header { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + let offset = if let Some(anim) = &self.anim { + Offset::x(anim.get_title_offset(anim.eval())) + } else { + Offset::zero() + }; + self.button.render(target); - self.title.render(target); - self.subtitle.render(target); + + target.in_clip(self.area.split_left(offset.x).0, &|target| { + if let Some(icon) = self.icon { + let color = self.color.unwrap_or(theme::GREEN); + shape::ToifImage::new(self.title.area().left_center(), icon.toif) + .with_fg(color) + .with_align(Alignment2D::CENTER_LEFT) + .render(target); + } + }); + + target.with_origin(offset, &|target| { + self.title.render(target); + self.subtitle.render(target); + }); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index 4d42f5e7e1..59aad748a9 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -1,10 +1,12 @@ +use super::theme; use crate::{ + strutil::TString, time::{Duration, Stopwatch}, ui::{ - component::{Component, Event, EventCtx, Timeout}, + component::{Component, Event, EventCtx, Label, Timeout}, constant::screen, display::{Color, Icon}, - geometry::{Alignment2D, Insets, Rect}, + geometry::{Alignment, Alignment2D, Insets, Point, Rect}, lerp::Lerp, shape, shape::Renderer, @@ -12,9 +14,8 @@ use crate::{ }, }; -use super::theme; - -const TIMEOUT_MS: u32 = 2000; +const ANIMATION_TIME_MS: u32 = 1200; +const TIMEOUT_MS: u32 = ANIMATION_TIME_MS + 2000; #[derive(Default, Clone)] struct StatusAnimation { @@ -28,12 +29,12 @@ impl StatusAnimation { } self.timer - .is_running_within(Duration::from_millis(TIMEOUT_MS)) + .is_running_within(Duration::from_millis(ANIMATION_TIME_MS)) } pub fn eval(&self) -> f32 { if animation_disabled() { - return TIMEOUT_MS as f32 / 1000.0; + return ANIMATION_TIME_MS as f32 / 1000.0; } self.timer.elapsed().to_millis() as f32 / 1000.0 } @@ -67,14 +68,54 @@ impl StatusAnimation { pareen::constant(1.0), ); + let circle_scale2 = pareen::constant(0.0).seq_ease_out( + 0.8, + easer::functions::Linear, + 0.2, + pareen::constant(1.0), + ); + const CIRCLE_DIAMETER_MAX: i16 = 170; const CIRCLE_DIAMETER_MIN: i16 = 80; - i16::lerp( + let a = i16::lerp( CIRCLE_DIAMETER_MAX / 2, CIRCLE_DIAMETER_MIN / 2, circle_scale.eval(t), - ) + ); + + let b = i16::lerp(CIRCLE_DIAMETER_MIN / 2, 0, circle_scale2.eval(t)); + + if t > 0.8 { + b + } else { + a + } + } + + pub fn get_circle_position(&self, t: f32, start: Point) -> Point { + let circle_pos = pareen::constant(0.0).seq_ease_in_out( + 0.8, + easer::functions::Linear, + 0.2, + pareen::constant(1.0), + ); + + const CIRCLE_DIAMETER_MAX: i16 = 170; + const CIRCLE_DIAMETER_MIN: i16 = 80; + + Point::lerp(start, Point::zero(), circle_pos.eval(t)) + } + + pub fn get_content2_opacity(&self, t: f32) -> u8 { + let content_opacity = pareen::constant(0.0).seq_ease_in( + 1.0, + easer::functions::Linear, + 0.2, + pareen::constant(1.0), + ); + + u8::lerp(0, 255, content_opacity.eval(t)) } pub fn start(&mut self) { @@ -96,6 +137,7 @@ pub struct StatusScreen { circle_color: Color, dismiss_type: DismissType, anim: StatusAnimation, + msg: Label<'static>, } #[derive(Clone)] @@ -105,7 +147,13 @@ enum DismissType { } impl StatusScreen { - fn new(icon: Icon, icon_color: Color, circle_color: Color, dismiss_style: DismissType) -> Self { + fn new( + icon: Icon, + icon_color: Color, + circle_color: Color, + dismiss_style: DismissType, + msg: TString<'static>, + ) -> Self { Self { area: Rect::zero(), icon, @@ -113,42 +161,47 @@ impl StatusScreen { circle_color, dismiss_type: dismiss_style, anim: StatusAnimation::default(), + msg: Label::new(msg, Alignment::Start, theme::TEXT_NORMAL).vertically_centered(), } } - pub fn new_success() -> Self { + pub fn new_success(msg: TString<'static>) -> Self { Self::new( theme::ICON_SIMPLE_CHECKMARK, theme::GREEN_LIME, theme::GREEN_LIGHT, DismissType::SwipeUp, + msg, ) } - pub fn new_success_timeout() -> Self { + pub fn new_success_timeout(msg: TString<'static>) -> Self { Self::new( theme::ICON_SIMPLE_CHECKMARK, theme::GREEN_LIME, theme::GREEN_LIGHT, DismissType::Timeout(Timeout::new(TIMEOUT_MS)), + msg, ) } - pub fn new_neutral() -> Self { + pub fn new_neutral(msg: TString<'static>) -> Self { Self::new( theme::ICON_SIMPLE_CHECKMARK, theme::GREY_EXTRA_LIGHT, theme::GREY_DARK, DismissType::SwipeUp, + msg, ) } - pub fn new_neutral_timeout() -> Self { + pub fn new_neutral_timeout(msg: TString<'static>) -> Self { Self::new( theme::ICON_SIMPLE_CHECKMARK, theme::GREY_EXTRA_LIGHT, theme::GREY_DARK, DismissType::Timeout(Timeout::new(TIMEOUT_MS)), + msg, ) } } @@ -158,6 +211,7 @@ impl Component for StatusScreen { fn place(&mut self, bounds: Rect) -> Rect { self.area = bounds; + self.msg.place(bounds); bounds } @@ -190,15 +244,25 @@ impl Component for StatusScreen { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { let t = self.anim.eval(); - shape::Circle::new(self.area.center(), self.anim.get_circle_radius(t)) + let pos = self.anim.get_circle_position(t, self.area.center()); + + let content_2_alpha = self.anim.get_content2_opacity(t); + let content_1_alpha = 255 - content_2_alpha; + + shape::Circle::new(pos, self.anim.get_circle_radius(t)) .with_fg(self.circle_color) .with_bg(theme::BLACK) .with_thickness(2) + .with_alpha(content_1_alpha) .render(target); - shape::ToifImage::new(self.area.center(), self.icon.toif) - .with_align(Alignment2D::CENTER) - .with_fg(self.icon_color) - .render(target); + + if self.anim.get_circle_radius(t) > 20 { + shape::ToifImage::new(pos, self.icon.toif) + .with_align(Alignment2D::CENTER) + .with_fg(self.icon_color) + .with_alpha(content_1_alpha) + .render(target); + } //content + header cover shape::Bar::new(self.area.outset(Insets::top(self.area.y0))) @@ -213,6 +277,8 @@ impl Component for StatusScreen { .with_bg(theme::BLACK) .with_alpha(255 - self.anim.get_instruction_opacity(t)) .render(target); + + self.msg.render_with_alpha(target, content_2_alpha); } } @@ -220,5 +286,6 @@ impl Component for StatusScreen { impl crate::trace::Trace for StatusScreen { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("StatusScreen"); + t.child("msg", &self.msg); } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index e545369a09..a038fbdefe 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -148,10 +148,11 @@ impl GetAddress { }); let content_confirmed = Frame::left_aligned( - TR::address__confirmed.into(), - StatusScreen::new_success_timeout(), + TR::words__title_success.into(), + StatusScreen::new_success_timeout(TR::address__confirmed.into()), ) .with_footer(TR::instructions__continue_in_app.into(), None) + .with_result_icon(theme::ICON_BULLET_CHECKMARK, theme::GREEN_LIGHT) .map(|_| Some(FlowMsg::Confirmed)); // Menu diff --git a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs index 48baf45dac..22a391d6c6 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs @@ -121,8 +121,11 @@ impl SetBrightness { }); let content_confirmed = Frame::left_aligned( - TR::brightness__changed_title.into(), - SwipeContent::new(StatusScreen::new_success()).with_no_attach_anim(), + TR::words__title_success.into(), + SwipeContent::new(StatusScreen::new_success( + TR::brightness__changed_title.into(), + )) + .with_no_attach_anim(), ) .with_footer(TR::instructions__swipe_up.into(), None) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) diff --git a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs index 45800a118b..b541defaec 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs @@ -104,10 +104,13 @@ impl WarningHiPrio { }); // Cancelled - let content_cancelled = - Frame::left_aligned(done_title, StatusScreen::new_neutral_timeout()) - .with_footer(TR::instructions__continue_in_app.into(), None) - .map(|_| Some(FlowMsg::Cancelled)); + let content_cancelled = Frame::left_aligned( + TR::words__title_done.into(), + StatusScreen::new_neutral_timeout(done_title), + ) + .with_footer(TR::instructions__continue_in_app.into(), None) + .with_result_icon(theme::ICON_BULLET_CHECKMARK, theme::GREY_DARK) + .map(|_| Some(FlowMsg::Cancelled)); let res = SwipeFlow::new(&WarningHiPrio::Message)? .with_page(&WarningHiPrio::Message, content_message)? diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 7726e5fe6f..3473f1c6fd 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -54,6 +54,7 @@ use crate::{ model_mercury::{ component::{check_homescreen_format, SwipeContent}, flow::new_confirm_action_simple, + theme::ICON_BULLET_CHECKMARK, }, }, }; @@ -799,11 +800,15 @@ extern "C" fn new_show_success(n_args: usize, args: *const Obj, kwargs: *mut Map .try_into_option()? .and_then(|desc: TString| if desc.is_empty() { None } else { Some(desc) }); - let content = StatusScreen::new_success(); + let content = StatusScreen::new_success(title); let obj = LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned(title, SwipeContent::new(content).with_no_attach_anim()) - .with_footer(TR::instructions__swipe_up.into(), description) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()), + Frame::left_aligned( + TR::words__title_success.into(), + SwipeContent::new(content).with_no_attach_anim(), + ) + .with_footer(TR::instructions__swipe_up.into(), description) + .with_result_icon(ICON_BULLET_CHECKMARK, theme::GREEN_LIGHT) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()), ))?; Ok(obj.into()) }; diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 327a930862..167635f1d4 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -938,6 +938,7 @@ class TR: words__sign: str = "Sign" words__signer: str = "Signer" words__title_check: str = "Check" + words__title_done: str = "Done" words__title_group: str = "Group" words__title_information: str = "Information" words__title_remember: str = "Remember" diff --git a/core/translations/en.json b/core/translations/en.json index f9ddb412ef..376c2a8dc2 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -946,6 +946,7 @@ "words__title_share": "Share", "words__title_shares": "Shares", "words__title_success": "Success", + "words__title_done": "Done", "words__title_summary": "Summary", "words__title_threshold": "Threshold", "words__try_again": "Try again.", diff --git a/core/translations/order.json b/core/translations/order.json index ad52d92b62..45e5a2742f 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -954,5 +954,6 @@ "952": "setting__adjust", "953": "setting__apply", "954": "brightness__changed_title", - "955": "brightness__change_title" + "955": "brightness__change_title", + "956": "words__title_done" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index d21071bec2..dae6719a3f 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "c94efabb9554eea2adb7f312469fa8b366503bbdb57dd7f92fa67b23dc63bb97", - "datetime": "2024-07-15T09:41:37.793874", - "commit": "5935708ac86d336364e5ab78fc5fd67b19402eaf" + "merkle_root": "8c40d9e33f42783293a32e768f155e29aa3650b9bbc5e1ebaabf1ec46a7733b7", + "datetime": "2024-07-17T17:20:50.219181", + "commit": "ace22197e82214ae18255d48fae68ece0e7a0386" }, "history": [ { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index e7dcfde200..e51a639c90 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15331,9 +15331,9 @@ "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "ccf52cd8c3523f82a01608a72a07a14b793b30503f1dceacc438e4872151a868", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "662fdecae7643270921e0c96105ad326d5421693d0f92471494f4af31a31e751", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "59a283aa35b2cd9d9c78120a58758634613adb058a2880f7f92564164fd5f7e0", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "eb98ca2a5a32eafe3f900478beb4258e67c896baec5ee44b6bed4bb0b0f6b606", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "503270a6bef3f40595776027e60c23297cbb043e9d0d68e0aef1812f75ade20e", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "0541c248157f4c0f10dcaa338aea083ec15a7293c865a5de3d9cb13df8ecb41e", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "18aed8d421ad8b126efc063aee92f3ee696067b06fe97b700c389ae391009aa9", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "25518bb77ff251bb1038ab28b29318b3cd2eb0352063fbe502052aa254ba7dc5", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2cbaef3274b2b501d589e798628bf8288d069223c42e5dd300bde1c03b93e1ff", "T3T1_cs_test_lock.py::test_hold_to_lock": "1824eb2d9867a82fb99174bac6ef8a906a0d6bf11381e0939091fee8a9c10b45", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "3ad09c8d05197cb0ac1627c792bebda14e1cd031c0c1414c9ace143c60f79fae", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "956e3bb892ca76d13da3bb45556dc19789d4fbfdde1052c4c954139f503f0c81", @@ -15350,28 +15350,28 @@ "T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6d8773f6dfc30cc1acb2d89d374c297a44c1d1975d3cf6cf45952ad7e8c55ec6", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "3c58c69e6722c9274b8ccfddb2fc31b652bf01b977f7521c87fa9e8df7ce30f5", "T3T1_cs_test_pin.py::test_pin_cancel": "ad3a70c37900c5720a7c5a8ad991940160b50e2f4f88d7cadfbd5fa3fd64792d", -"T3T1_cs_test_pin.py::test_pin_change": "cca6e4664b44e20364d457d9a3c84ddb826d220fb65e46e1bd83129994f97b0e", +"T3T1_cs_test_pin.py::test_pin_change": "3c588124808bb72d6f8abfe871c225da69154a23d36f73fbe35adc635bea19d7", "T3T1_cs_test_pin.py::test_pin_delete_hold": "e3e0aff2edcecb8e8533fe6d99ffec871736ffcb26ae718adc270ad43239c441", "T3T1_cs_test_pin.py::test_pin_empty_cannot_send": "d47d5d042fcafcfd35e3893c9f230fffcb174a2d10198e7e0c78907b5777142a", "T3T1_cs_test_pin.py::test_pin_incorrect": "dc152f3374901b9c16a7f7a7c8b010a7d04b14a80b76e36a4507cd03073ae8fc", "T3T1_cs_test_pin.py::test_pin_long": "f4a47436cd70ce4529ee47051816f05b37658daac38c55a44884abe2bbed3f20", "T3T1_cs_test_pin.py::test_pin_long_delete": "6843b1b26ba4aa78445e74b08a0836ee11e85be824909bec8b69c6e9d4420bb8", "T3T1_cs_test_pin.py::test_pin_longer_than_max": "5a5ffdd4a611651d9fd954b6102553c8655479a3fc4d564af92827712fec560a", -"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "8f8e618a770f92721c75e5129d3e36ded852e5e15717962caf5a26f1889675a8", -"T3T1_cs_test_pin.py::test_pin_setup": "646901201f596e5ee8517155af4b94645f4184a493b6f88f3e42fdc9a08ef02f", +"T3T1_cs_test_pin.py::test_pin_same_as_wipe_code": "00aacff9384161df92c4f86d5a320317b91a2fb16b68d9b65c113d2de48d837b", +"T3T1_cs_test_pin.py::test_pin_setup": "8de001b3dc52937ec309c8f79522693bbdc43d31150910d860e826d2f1586633", "T3T1_cs_test_pin.py::test_pin_setup_mismatch": "42168030eaa526d8290c3f3d8ee5725baf6d2e9b33ac4bca9f3beac9441c05a0", "T3T1_cs_test_pin.py::test_pin_short": "d47d5d042fcafcfd35e3893c9f230fffcb174a2d10198e7e0c78907b5777142a", -"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "84be6d7fd102f0c895a57af25bb01f9446d5d63553dd7ff349be9ea72f9a11e6", -"T3T1_cs_test_pin.py::test_wipe_code_setup": "1cd71b643cb9a3edc7ba8012dcad2a6a3c4d2ffbc24fa7012bdcae53e3aa58a8", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "ab2b3639ca0f79cfb4ed0143363398701820fa549043909d76a7e909af8f26a4", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "8428e8c2ceb6292d1797f2107e391eb2d9efc4e8044c1d0175974d36d1f8419c", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "c7d20fc0988dcdd8b6333798569167fdc273cc7d51f5f8f75e5bfdc1ede9c7da", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "89e0db1f70af5b44080f0c45628f8a2b98d0cb3dc8687b838e2b3a8c7d2cdd37", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "4e42e06eca7eba0d237d8d9b92ff81264ce81272611a9850562052b78db805a7", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9762f515ed939ce9457a8a1aae9fbe1d1c10b26e52a33933d44c8897c9983e26", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "32f940f9c812a3cda75fab30ab5d3b4f7b78c61a5bc7f10b0407d34a2ceec03c", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1755242538503e52a5ed6df5dc3a87da970e4bfe10e8c5dafc61d4ff515fe609", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "2ac56b302c0d13a8bdef9f71bfe7ceccb756948523aa7e06d6a8630b1648c217", +"T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "6d615ea3421738485484b14e305a8c3f159bdf82925329e98b87bff0890e4366", +"T3T1_cs_test_pin.py::test_wipe_code_setup": "3566f17ed11804872e11694e5c5a8da8cfbae335ad1a2a4b10cc1f48da04cab5", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "eb5ef8ca712e9e9488ad645f7f4fa70316d0097356cec1dc8bdca8c003cb4b72", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9f6033faf5c61f953b3f8662cf0931fba63628eaff4b755cf72d5ee22ef5234e", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5e2cf74333a9ceb0acf0914f9219b4bffb14be8e91da4dbec449db84f646d3ed", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "075dc10417b1e76b19f3809f4d917496db2a094bdce6b3bbc4aa6469ed806b91", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "741569335759843d3cb80efecdd1f5e9a3913e257fdd9d83dd25a5ddbe08f60c", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3f08946972f3ac7d3986fc6e52252e46fbbfce4c3b25f259fb2afa95568fcb1d", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "924b9fdb9e202ccba413c83484310e4b6d49a050797a6ac9cba6b408dc9e518d", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7215f4097b1ff8e8c4621aa9f1481703c6147c2785cd92c0c3e0509776374f70", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "526513add54db3291cdb8f2c1f6bdb9be3d6772116912b4d5703966b565ff6b2", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3f2cb64c585744ec1d3b2115e53663869aaf8005e3371a681de72d32a37f3c09", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "945e5b4d0f325e3da850dc37c75b175458c4f8d44a50adfac540f171277e04f1", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "70ddd80bdf03baacef0074c4424084169526592f7e7729d318c2ca8eb540c05b", @@ -15380,9 +15380,9 @@ "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ac71de880b9fb2506f786d81fb77e66378b7abc27beaf00808ad7e03916b88ec", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d7ad4444a3691a2c5891a1d6e5fb142540915048968a9381a09b227beaaad8e2", "T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "74776a874721d95375e84e5ae60f389164d1b759a0e2d51199e547b1bb472fb1", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "93332879c26051be67399b47ce6135e729783ac35be14bba8a18f4bd7fad0163", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1c2c503e0ecf55359e7dc7800b190d71b01c6dc953d65494e9dd6940f40e4341", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "84895c70dcbeacd69227294e245f4a4aadd89aa25a33c2af70e40e88251fbc54", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f847c69c460b2a9817c82e952f93f65eb5ae9b9d5375debc38d7420f1661302a", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c795f8c0157c9ed4f774e3a13d0d641ec35a6e7f434a411693ecfa43ee24e408", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "493123029d3377e1cf2cff566a30c441bc194e5fbd601262d71567e4f9e08754", "T3T1_de_test_lock.py::test_hold_to_lock": "b2136906b71a65f5e949f79e80f381b44a5b87e59f67f23ee22767abb588dfcf", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "63c08446669db6dd58a639b5fd2e18ca75f8f0309dd3588dbd7fe8d96352a2b4", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "bf9d0f3b2d019fff0af115958eed8b6aed3b8794b10a18ce02dd9dfb35037009", @@ -15399,28 +15399,28 @@ "T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "64858a57ff8101fa7b28bd4fe8d5aff9b5c221d33c4144bba399279895ca3d13", "T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "b311c171f29da6eb4410dda06050e7f4d62b53718c00f14875098b18b1cbe451", "T3T1_de_test_pin.py::test_pin_cancel": "6f240d48b47ae0351c37101cc7cf29b14679595539a1347caca4b0858f9a8cad", -"T3T1_de_test_pin.py::test_pin_change": "8f653c53383611d01f5e8d2848cc5645125c424499ddb3ffb320da93f3469b83", +"T3T1_de_test_pin.py::test_pin_change": "6816b4493a1a917065e124910fc3ccc4c5514e94b3b3c8983924b25450bacdc7", "T3T1_de_test_pin.py::test_pin_delete_hold": "1b074f169bb04573da6198862ea48f72dd50fafc1ed1d61dbe255272931065aa", "T3T1_de_test_pin.py::test_pin_empty_cannot_send": "43c58c441cbe7c6b62483812b9c88ed3376286d1e00ce931e49f92b44d744959", "T3T1_de_test_pin.py::test_pin_incorrect": "c9435665136069df2350870cdbf3624aa8577a612d526126ad8ba79b9b1e0d1e", "T3T1_de_test_pin.py::test_pin_long": "c0ad574a6053f1dee69206d2bb6c77d6400fb3aefe7512e33c96070d7e3dc9f9", "T3T1_de_test_pin.py::test_pin_long_delete": "51f63716245f48def45fdf04f5b12514ceaa99629cd8a88a242196374a3556f3", "T3T1_de_test_pin.py::test_pin_longer_than_max": "b4560b4dd52d3e02297ebea079be80d90a11172fbb6635d65a5d2703d45444b8", -"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "bb97e8040cc5de0de83d402c14287ec671d8f83d621fb7a7b709af18aeadfe27", -"T3T1_de_test_pin.py::test_pin_setup": "8f29e72c90a2c50fc24c39e53ed804cd803c5bf92156a5d40ed6dd29b6568049", +"T3T1_de_test_pin.py::test_pin_same_as_wipe_code": "6b8ca20f63a1ea2dc52032b876bb8e26edca58932926849e0b8f793428e78a76", +"T3T1_de_test_pin.py::test_pin_setup": "a91baac32efcee084999c0d8d034d8923f5ebbbb84c852b9574a2d359bff98af", "T3T1_de_test_pin.py::test_pin_setup_mismatch": "2d26edba1837713562460e343d0adf7628f0e8e2129d04fca1f14ad80e723247", "T3T1_de_test_pin.py::test_pin_short": "43c58c441cbe7c6b62483812b9c88ed3376286d1e00ce931e49f92b44d744959", -"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "38cbe552fdab022eaf1d7bdee3617975f0a162677ed1e804fb8ee8f1cc3fa8b1", -"T3T1_de_test_pin.py::test_wipe_code_setup": "ec477f6b879cfb8e71a67ce7b5c61b5839141551f65576ee64b2b70e9173f09d", -"T3T1_de_test_recovery.py::test_recovery_bip39": "5cbc99e3d7cba3cc05f90722ccaf20f57a2b7df978bdc095f6024de130d0b98a", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "e267ece0952c1d7687a20c72b05e6ecb704f5a54c483dc9116812741bf88dbfb", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "38f122eb5dc6e4077c7079c96b95b20c4916a3fcf09c9581c6c0f228b25cc533", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "5c72fd66c81b6f3122137bb78032575fef7990f8a954d08f44f0a1f506271953", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "9cda4ebdb58674d0ff8ba2b869c4322386153c022a957284e3ceac148cd5e4e1", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0af2f156d9ee14742dd87d433452d193d8ff3a3b4ca4ec2bc963f3f9ace94847", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "0bfa8c81916b4ed8104bc91684e308dbb057147c8855fb908cb71a90df68a0eb", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "ee2806e8f7070034cc0b570361e894fb415e314d6c36cd5bd27d4dbbd719da5f", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f6e9a6b68ea3851c58c691cf71df74909be485624273c2c27a5b401cb903cb4a", +"T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "561db133f0d612048fd08b46d438a4a500e064d3088055c9364a5660afb01103", +"T3T1_de_test_pin.py::test_wipe_code_setup": "e20e2c935c654931b9786df91908aa544d2736e06eb78cb0ef54d44604d5aeae", +"T3T1_de_test_recovery.py::test_recovery_bip39": "913cdb82f5a8b7018c96c2e9ae5532abe0cdced612461dd7cde4d4f71a38cd5b", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "79358c80045a608ea9f756f7166fad0df325acb6063f324f911534f95b3127f0", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "1ed0327b885ae2b1a8f582b4e049e8042fb2bea7f44f50c0f7cd1dfccc8e2700", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "1807c3373abebe8599094398c0c36755a2fcc409af8f095db5636d97beaeca2f", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "79fec4c63285b7abc909e1468ed83284ead35eaf1cbb0f46bf962da63bf5bd64", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c34695e1386509934313f1fab77b51c86bcf412e63d9327dfbd2cc616073ccaf", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "61a8f813635e4c118033cf41a54835aef433f7b08fbbd69eb09771c621ff54b9", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7d8727ae73c079568f14deda90cea2fc499f46ff03b7bf1cd17f792b7171bf83", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "0ed3acb27101f11906cdf5f1715f31d251ab5547a41b1a7b4d0f0bf918d774ce", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3c731b042fc2e0b2f86391320f30937310cb6dc147057691bc14f52b73e597d7", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a28905faec2a54e67df6f9c67a94dd84ed76fc976ca4e8b60bf2cc7f6ce3415c", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "a8488ccbfef402f88042a970ef97b863edb269319afb93cfc03d449823d25726", @@ -15429,9 +15429,9 @@ "T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "e100dcbecaf3a9afd71705fbca98ccbe52881c915021e96d9883da1b98e74be4", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "36114e7a5d1f1e35206dbfd3d129b7816b4b240faa2ce243dc6e16a57d764f28", "T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "0db8aefbf9c8753c128772f2a7ad9ccd9bd5c762496130e42de549d5d4b79ef6", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "37ee82e8643b9e226a332f8d8f644d38efa11abee4d5fa01cc7aeef259efdf48", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "abd96d32b92c8ef5c8ac4cac59ea78f623f7aef14392f98b6608c4ff62eabf19", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6ee94a1eb6437c83569d05695e0c224398f8b074d2e1a4c8a8b5b3496af87f55", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6ef9917939ab80a901c52b193da8922f0faeaf388dfc6fffa04a787904a02a8d", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c2fa7e451ceee2968fb6568949bf1c0ca108e9ab04d74192c491d3fbc2ce735c", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "fc9482440dc8a8176d69f88544b16a52232e51de1fce70425e48160fb3c29471", "T3T1_en_test_lock.py::test_hold_to_lock": "0dd53e59ef70d6b20ad463f16ae28ad18472cd7e26e5bf61eae78b05cb395009", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "77fe6f8bfb1ddc6a8516913c2ebc669e6b988e6ef9ea6846ef6d94e921fa65af", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "c5540d1c33265bcd397b8a72fe949eef9b514c708fb3bbc2d3d2aef804cc8a23", @@ -15448,28 +15448,28 @@ "T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "bbcb0e0053e1bb96d2bc52ffcc1a4592d8f51489b3c36fae640b6a9509c8993b", "T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "776b1b1d580b1450810fc19f03df408d44600360dc370503c440916ef9ed5639", "T3T1_en_test_pin.py::test_pin_cancel": "3a9aeb25d4c9de34f42e17f847eed1193ab975171cf84ccb2ebe5285750c483c", -"T3T1_en_test_pin.py::test_pin_change": "cc1134d2a380e73d3295ed20d7b40732d43a48ffb11dc367408cb843167a3553", +"T3T1_en_test_pin.py::test_pin_change": "b0bbd994d34098e9dec14abf153dddd9a865d068acda5cffbae8f5976e21c994", "T3T1_en_test_pin.py::test_pin_delete_hold": "4e505fc48e835b5cc29fd9b5067d5987d2cad92d495eef7d06ced69a35f9d85f", "T3T1_en_test_pin.py::test_pin_empty_cannot_send": "79796966e4367b6d6d13acd229ecc9f13bb2b00cd030bf854184d94176f1e6eb", "T3T1_en_test_pin.py::test_pin_incorrect": "af5878e4d68534cc0aba678596a26ff7af2003fc3944600283c12a35974d9fdc", "T3T1_en_test_pin.py::test_pin_long": "0ecfa34b0bbbd927f69e45b2bb99c73ce8e86332d7b09d0fa9fae5b8a3516f8d", "T3T1_en_test_pin.py::test_pin_long_delete": "fa1227d17dfce1cd6b665ad7f5e41764e41a59adc0aa425ca4a5b7503662ca53", "T3T1_en_test_pin.py::test_pin_longer_than_max": "78e4d04106ba4cf1df597e0cc6e86a36a42841c7ad5bd08ecb9b8c4a2a976123", -"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "bbeb63fbb66a596990876b8245c2c93c431860fcc8c7f927dba54e3c46feef22", -"T3T1_en_test_pin.py::test_pin_setup": "24f5cfefec8d3ca03a20501894f68f411f3331e67aa38a92cffb8ff96f8b5fcb", +"T3T1_en_test_pin.py::test_pin_same_as_wipe_code": "371cdd5bf7ddfe71906bbb4ec6724e0273eaf54a428d7c0df722eed4a1db64e0", +"T3T1_en_test_pin.py::test_pin_setup": "44859419041662fbb3d4fa9692afb8d5d37e2292df5114fa81a654b82979a6dc", "T3T1_en_test_pin.py::test_pin_setup_mismatch": "2da5c4c3849829ed3b7a71ae0ecf853a579c6fadec83b33b4dd98b4a0ae5fcfc", "T3T1_en_test_pin.py::test_pin_short": "79796966e4367b6d6d13acd229ecc9f13bb2b00cd030bf854184d94176f1e6eb", -"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "8840ef56bfd1efe3ad42cc4048473fda1d0eeb2555c8555ffa73a721bb9fa7ce", -"T3T1_en_test_pin.py::test_wipe_code_setup": "40b884d32c740ff5e2c81fa6a8bee3c93995e52f043461e1e0abe85b43eb2821", -"T3T1_en_test_recovery.py::test_recovery_bip39": "b36d63eee8e62e337e1e1d37e8edff8f11be4c2bbc2bb7adaac7dc7cb40ca5f7", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b872324c9dcaa3d3b1b60d4d8508fcb0c3ecad333425f575ad0759d41925faa5", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "80809ce07132d23ca5af4ddb418a19b3d2bf785a2ce6db64bfcbf36184efe5f3", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "d698464d0ad646527912c97d350e38f73cab50327001cb0d2697b79a63d8d038", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "9f5f4d3ca539713d1eee593ac8af276a69368d04e20f69c9e8b0a09b1242fb7c", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "422202cc3672563a69421267145512340596e4b1f0fad48f85eb3b924edea13c", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6b1fcf64312394170154ac23a2c03217db0c150c1b10fd63a972da4cba4740af", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "82209b5fe1f1c60d4f4def1783a77e97da63a079a3b72acf038d5592573f5518", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "78a9f96c0163a8e7fc378e07bb37800bafa15cac7261b66a72c648c412a099e4", +"T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "19435c69b4111ee84d73ec996aec7150c3d0c8492203d3aacd96a64a9facc2da", +"T3T1_en_test_pin.py::test_wipe_code_setup": "ab34c35e04c86f39b8ebd6da3b48a7eb3b28cf8eabbcb4cbe17fc788ea7f14f4", +"T3T1_en_test_recovery.py::test_recovery_bip39": "6cef02426ae982ba6f9a1dad77f8fb42f7b03712fd0dddfa248ef260502d9711", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "8753d8e1e49e129114d7fd529d6ddfac5b50e9724ea142ba10c0926ffd50783b", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "f25cda2a74dccc5582d80367aff337b532eea0a89b12a1a5ac2713d6c9adf5ef", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "228275e28a1f0dd118e76b3186fb0c4738f060eaaa90c787cdb57ced34a2456d", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "a0774a5569a01ab853104483b002fe85e1b8e2f979e4516cd9b532a2d45cc977", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "85431f3e6bdfc696e4c6bd574d43d03fce720fb488f868d60a7a8b9c29bd5247", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3f63701cfe0ff10fe4d5c49c877e27879891cb7c42b19bb4d07d163ed7d0750a", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3b50655712f125adae01ef1a951db2ce33ce5587f1d0e70f6af6ce5a61e3eedb", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6b231fc2cd69cedd33d2528b57f8136a5ca3b9c43b698e3ac20110ac31e6ddb8", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "8b5ce5e34200e989c1ddc6f5f3c7e4175891ccc043aac7209fb47b74ba51d61f", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d5cf039ee4bd1489039c8e31f8f90d0b075edeaddb2ec22f55543a8e1d8b8a4", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "9321b6f60edcc5560ef38209bb8e920a0ed6bca7a217c8d55346878c95268398", @@ -15478,9 +15478,9 @@ "T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "3f8cdf6f79e1d7c3350025580730f206eb1cfc572437775030cd77cae0fed103", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "8c9e39c583899fe215ae1b4e71d66ba42181246fa976da63f4bed172d1c9bf76", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "db570883f26e947bf58a61c8841c34a1147443ca28df1af706736f3c97d97cf8", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1f535bab5bdf06f820fb00b278cd8e10a686c9162f4d16e068e2da01e5d01281", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "fb5f271ecf82ce97bdf7a10c0a8b6d158a356c0a4e5a50ce114c464695e2f3d3", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3f28ed90d81f57c3c92467a8b98d4bb4362cf0fefbb7a54a79fe7653dc4a624f", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cd8177dd73c1d2c9a67c52a41411f70306dce132350aac62ed562e8fe8d722d5", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7c493d42115f2e8ba1edbeffeb2d87f9fbdd646c37f5500c7082f71d37b34ad4", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "809ae3f75e4e4eeb61256b7f0b7c5354e362ca3bface379e5f18e63d4f1a4402", "T3T1_es_test_lock.py::test_hold_to_lock": "22121f35ab8ef5850185109c604bf540c3a7691b7a61c46ddbebc78e36e59ae4", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "3fc39e02f19cf7626398c62eeba26f2e36ee6449e3390283fa96c016ea85d58e", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "83116b38b2709f164d512a3e53dc36b2fc65cd635f8cc5dd49a7e4d01b52b554", @@ -15497,28 +15497,28 @@ "T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a955954f8e760b13d355187c3c08a60c2d47915d752e0b2adf097ed1de650a7", "T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "deaa6422b34f850d1253d4fd97758b7bb9f01debdc34fe7f5615e4db2f58cc39", "T3T1_es_test_pin.py::test_pin_cancel": "cf9fbe520b7a777148f85f1accd64c6f7e6a6ba3abe699c6953ed343be136c3e", -"T3T1_es_test_pin.py::test_pin_change": "75152dc7c031f47ec53eef5100b4cd8ecc56e61d6b163c263c67a8ffe35b8331", +"T3T1_es_test_pin.py::test_pin_change": "691f6ef38c0de18b001e5af30c1806c3db06408130195c95781d3a629ffec244", "T3T1_es_test_pin.py::test_pin_delete_hold": "7420f26a620108a54218ba12a8009362b9be9661df3ba263233630133826e516", "T3T1_es_test_pin.py::test_pin_empty_cannot_send": "21a6007121daa2808055f1fd035f00d1b4e5e1b51f4f1bce286f781bb24cc825", "T3T1_es_test_pin.py::test_pin_incorrect": "d8285869793ddce13c1589521b8096110b7f0723190f40d2bec84a47eed5b6ec", "T3T1_es_test_pin.py::test_pin_long": "31a13ec6699363faf041cf322ed3ea1f4c0644b758dba9e48e921d5a6c14f1f1", "T3T1_es_test_pin.py::test_pin_long_delete": "b41b4667f2ccfce6f3763f2818221bd01a85487705d8a2180216972ea0bffa78", "T3T1_es_test_pin.py::test_pin_longer_than_max": "df148d02b5200d348d13af06f8f55c27167f757c46227392cb12275ffd5f2abb", -"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "0d6eac391ab8c1f2fd453e94d94bdac12262c12d6ce89417fd2f28799fe556ed", -"T3T1_es_test_pin.py::test_pin_setup": "78a07caf3834a0a2dba1953cacbf4539eb6f3f01c3332f1f1f3e2ce1de7ab444", +"T3T1_es_test_pin.py::test_pin_same_as_wipe_code": "f2ce1154e1b8869eb81762b267df02c7e3ee66a35b5c344c105e32dbcbe83b38", +"T3T1_es_test_pin.py::test_pin_setup": "ac7cafb087cea544e1a780bcd4c21447746da63e0c1c274731ba282e4e3cd36d", "T3T1_es_test_pin.py::test_pin_setup_mismatch": "f74c6c38b227b7ff29905d52d903b00d259543530e56e6e0d0e10210360266b6", "T3T1_es_test_pin.py::test_pin_short": "21a6007121daa2808055f1fd035f00d1b4e5e1b51f4f1bce286f781bb24cc825", -"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "84447748fd7da6198e5df0fcc70bc73e730ea1f55a11415149e945ac9412b3c8", -"T3T1_es_test_pin.py::test_wipe_code_setup": "040fa0dcc5f8a0fb3a19c94a79e3e8164f415df9111473dce3b6e6ef238a20c5", -"T3T1_es_test_recovery.py::test_recovery_bip39": "103c31122b8ab607fc87bbcdcb62f37f27b9ad168e935216c9688f65c4a52415", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "a0367678819dc2032f58d35d67937fcf3dd9a19a31449644cfa57511add59eff", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "b394e91255b10ae11f519e2c49a1b6a79ec828ec48dd039865ec3ce74d4f9271", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "32ef7d1932d226cab52d046479215ee5ff6d44535d2d2f7271f3346cb6a82229", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "171c6e0dfd21a30f83d8b4e9a3a697aa28cb73f9dcf57afe204be7c3839d87b2", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9346c0a3bb90abbb11b788aa0bd80bf05fe12d78498fcee78fdf28fbd5b3e995", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1a89559131af7eeacffd0e5293199c507f4ed7b4269a5d74247a111ef3bf84ee", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "bbe32dbc1855cc7267c7ac92e341a10e92ca95c663838140699779ac498c257b", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "8cbe21d7c71acef44d9d4748a7efbb417d77622fa6469f9ec13bf73e915fa14c", +"T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "951f98ebd0dde31c123c7d93eb98af5d0bf5147f2bd28a3014ba26d8bda58d5d", +"T3T1_es_test_pin.py::test_wipe_code_setup": "edfe089762dabc918417ca26916a6ad1d0377b8617255c169384ef8728c17381", +"T3T1_es_test_recovery.py::test_recovery_bip39": "2098a387db6821b94187295685c24d0aee03e27c95f3fd842431d1ad64fbeeb8", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "f860197aa1b7d8c7b0dd5616bb27b68f4d02dee379e68f9b8a71244a7ca848e3", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "3c4deeedd1504662a78f8bab9bf18b89405fcc945b67721b8ada97824d432b57", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "29fc4a63e1e7d550019bbd781228382c27441d576a4a8387e2322fac3c6bde94", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "be3ebd0f242fab2389e6731d1ea5b16a4056cd02230b3b03c12ad1320ebabebb", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "36154af328abdbba03d29323c27a1be3778acf3a9e4a192b57e9cede707533d9", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "df14300374cb11ec251dd635193a0d7cf4ee3d8f7409ab71da2aef6c64a7c723", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "589a55d85639754272e27fa369b780e16fed0ff179957452dbf7b883430f8a43", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "96b66cc1944ea191c75e525ad7cee121d55627634087a7a845afa787da500d05", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e25b10ab63c55f12fe03eefd50111a9aa918b21667dd83426dc045634f9395ee", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "228265069b1eb183eb0ead8aacb1da337eda6dde9ed5c787e1f6d96d392f334a", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "d7bdeac79ed469879cd587ad73be204cc40e83e03c866473cec02197a9daca4d", @@ -15527,9 +15527,9 @@ "T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "2a161224d3797d17c6f0bf10acf211456194f2ec09d67791431156396c888dd3", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "5397eaae685d28ecccdbb18289c3a9ed499a6654c95810f75a33a0aa2f9edbaa", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "73dba307121a90389ccb0df8623a22c0951fe638592a94360b1b43daa92ca55d", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "46f84e9b2b88d4108ec7e7ae7000d8e3e9fe4fa4642955ba3e243cee5ee8caf4", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "6708cae42ad5c8ebfc6fcf11dfa9ef86e761075ecd071172c3798f2c5f6ab359", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10dce76a0863c78385b97f7c1aeca8d75fb5b15a13ff8a4e630bd8862be4d890", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d37f2008babc14ac37f74514bf84c0a70b5ec5d38697283263006c76c7452533", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d5e7b13490549c06445dddb887f28cd91eb97715d53177e845b36b229d942f65", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b1058a3a280b1a5323215f3fa3a4e7a47d274d58cfbb180a781b3faac589ab3b", "T3T1_fr_test_lock.py::test_hold_to_lock": "31961b0cba116a3a786e5758e4753f703fb9b8499d4c6cc7bffc8a162de70e82", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "6a74ce7c04eb4b26b79b91ee0f1580e1296ebf25750f5b237451e84afabb69c5", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ce9ad70bbb739a124b7fb0e039a7c63954b04609f869c549b4ed0dbaab590c7f", @@ -15546,34 +15546,34 @@ "T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "c367ba95529a226740fe7acc2c4eb7b8b971fdd7fc67db44bb4325ff721f0feb", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ccef614ba1920f596c45f674c8578194b79e1bb81a6c2d8bf1de7bef88a652ff", "T3T1_fr_test_pin.py::test_pin_cancel": "d609821dc4caea0c9b8d44bc090d46c3b39908dc6fe20ded1bd663f8b1df0181", -"T3T1_fr_test_pin.py::test_pin_change": "d28e86865b69790e5ebec69569c7890490f312f50a1d9fb874403322dd573715", +"T3T1_fr_test_pin.py::test_pin_change": "7b33542fa2f40baddd28aecabca5ac079814785dd91c136b8da8e54ebb4006a6", "T3T1_fr_test_pin.py::test_pin_delete_hold": "e8fcfaf4854e8b529629e60cc4570ea22a64cf6e68505e70bfdf289fdf264713", "T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "84ab2ca4f7495f000b368d2d3018bcf7a67b9149c4f24e9c1c6b809c3a23224c", "T3T1_fr_test_pin.py::test_pin_incorrect": "b5c9dd99174550a30e19cf49e42374d50eebb43376c085c29a40c52aa706729e", "T3T1_fr_test_pin.py::test_pin_long": "428b30c7357fb1ac9f895eaaa81eb879428c3fef46929e4664b6162bfd7beffb", "T3T1_fr_test_pin.py::test_pin_long_delete": "d5bc7b3ace89ab13370717c7044f827d1d3638e53f74f90be17593ff97cecb35", "T3T1_fr_test_pin.py::test_pin_longer_than_max": "24516d807963656575861c14b78aff401c6aa0524ca3cc900ff3db47f89ae0fe", -"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "ccd628eea94ec5201c4c5ad05b929f53a977f00c403a16bceee9665f7b4adf2f", -"T3T1_fr_test_pin.py::test_pin_setup": "2ba08bc36871deaba7b57be631577b7b8ec9045b5e1cc35e21bef74a2cf47e0c", +"T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "63a70c1b1961a503aa419a44511198f9abcec3ee54df6976909054f0f8183ab0", +"T3T1_fr_test_pin.py::test_pin_setup": "382a3cd752cc35adb0d4a3f0060e42d2ee0c1e9860df3ac0cb0c5933bc735e4d", "T3T1_fr_test_pin.py::test_pin_setup_mismatch": "6a1840ef1e97ae048f51792e0bb8fe59c540a9721495960242df3dfad99325a2", "T3T1_fr_test_pin.py::test_pin_short": "84ab2ca4f7495f000b368d2d3018bcf7a67b9149c4f24e9c1c6b809c3a23224c", -"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "1676a213a48edfc105a155e39e2b51e9750b4754ac64ffa470e0c101c0a3a3f1", -"T3T1_fr_test_pin.py::test_wipe_code_setup": "baee560320561ed67f73d43badf61a54a8f435db3ceb891ce297873c565b301e", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "f09d85c9b162f3cc3da8c10e6f42fa0c88d6b5259ff1d502d534bf3718ae8d05", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "af44397f5e839dc9a65c9391f47591a2ab5d7d5c2bf8a324a269f9eb52ce9971", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "78d86e594af55e001c89880c661699c3926c02a6c703b5bf08b737a9afa39a3a", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "ea5a236302e489b511ab2dbe23c8963e282cbd3202ac0fb1f9b1fdb21ab6cdfb", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "7b3d83c77bccf36e1e246dad034411160abd4c3612fd4b72a581302539696f58", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "632b998a5938a39417552a33ef92d31af4f802b93f566c7164ed05d90424fb18", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9fd8c6e1b63ff6f137ca42b4c5b7c200867a498981fb928c7f9e1d7971b85cef", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f6e167295d99e1902f15cbc0497fc79fe8ebebf48496be2b664e2d51cfdc8651", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "674361d2e4148d149ebc678a5cedc4659e4dde3d2cff38ef3e9486261a0a469d" +"T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "9fbf63afaf25ceec9a0b8d17ec83c0a7a39c7b106ac13519ac196474a083a31d", +"T3T1_fr_test_pin.py::test_wipe_code_setup": "943ea3640d21ae0a79655035e2aa0722cc7b79f6a9e17bef39afd9ac1c327549", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "1e242a9525246a099363e20a8fea52d10e774a5dda083517468556dda07307cd", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "719f1efb87aeabc1f64ce8a5fe770eb01245ac0a632605f342bdf69aed35b500", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "bd1cf9e0fa2a9ef688145f2ad6a581978c1de36a05ffd424b45c41195feda0a5", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c24ff45b574d8b4e432f495b88b84cf8651ab8b862318cba088097918da6b723", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "02f84e41630064450fd3df6a35e385cbd857f9e705a5e5ccf70b22cac1ce1f51", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3ed54b58ac12dad63cfb294a4143f23d8c9a94586116f6dc545f7a2a177aca89", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "39e2463b3b70e9a5a9a1e643e1a2f61f41e431eecad1ed487f9476c6c36d575b", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e41549f4168ebc0066883ec27a69721013492ff86b95b0ac00907a8cb548e0eb", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "dd996b1b053773a723611f32b3c3a9f47428ffab60e6f2a3e8cb762bcd7383f0" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "5cfc60601705372057cdc48cb73a2bfa596c586fe3214e20bb68ac6859c54537", "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "611c14e482cf4c9ef8ee830a2db0b752cdf5d7c48ee41f24f9ab3f5e95aac5ef", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "846087ccb8fade8d7fbf3397e5455e7b3f0410a448a3037a5bf64e904aa57b71", -"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "c7cc1fc1586b189d72ce8dcbc495bd38fcfa089edf38b85677de5d0f316cfeb2", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "5c6be7ef6e3cfc972a19386f214e84266ec91230c03ef200be13e7115473ca6e", +"T3T1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "e9168674e782ddc1e5a69bd93b5dde63b531dd89c662e93dd0e310dc660685aa", "T3T1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "895434b304cae4560ef7299917ad02bdb1bf8f32e6b05caa3e1f37938775cb9d", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "aa56f144d9410c171cc7850702d203289101bcb9609b132b5b9363f356709d03", "T3T1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "ea5a82740129d994c4896119b0b433f10ad38b09ccda8475ab1bab4917e380a1", @@ -15707,14 +15707,14 @@ "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "eb078530ef81162a1b39b25ec4373968707b3aca8a8e64484b68230ef294b338", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "5ecd4b9e482bcf60255965cc28e9f31685877296b9e2c5def3625512b7495e8d", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "67e23d01c997a166325e27145eb3633cfab671ea2a4098c6b42f3c80f1bacc58", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "93726f17212642e8f15acd04a44794b5a16805fcd67a47cb18b6427b4e53cb33", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "1f815f4e855df7869a1bbb6c3d64b8e2bdc5206960351fb4674b3a5b997f0230", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "14567f076a1c04962f26713ce4a2cc7c23941f74ed478407d6e85832d158f1dd", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "b6deed2d64cea4ebd5e4848dbd11ca29762b8cbeff165d6001db61c0c00bde58", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "f1b51c9a3d55cb2145dec4d18455ddd5d9ed866f81612bad02a35a16ca655c4b", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "2d99eaddfb5a037cac28cc9b0f191d36b75aadfc07daa67b752c81c4344d1cdf", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "a13cc40c4575fd5961f5ed5b150b1731b0202957773b0b910dc409abf0d52a39", -"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "e6654cadfe2af30916893f1bd9496cfdbf2e4becbd7f4183f951521b6d66277e", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "6fd94ac6fdcaede48b591e5c5fe805fafa49f7c3989af46d85c9a025cad6e8ae", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "f01db879683b041d4ceda4580b87915810b96cb483037c0c2e2ad3bc288d4fa1", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "a2541a97b549aeac246dc9689491c35e078c0f7d18239d4769ef56fd05133944", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "999f149173e46ccb820d818b34b3f7d81279f6e464e8f09f629d306d01bf4af0", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "55bd9979065928953ab397a2604c35a28511320062bc958acb81c50fe48bd476", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "17b716549614dc63926417e85c762831b1c0fec93a897d18f92270b717bc7424", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "e4bcc3ebfe3485f066dc53cb2fc21360667a5f6cbf86ffa0dbf5701721176d57", +"T3T1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "4525a241b55eca55ab7174cbabcf1e5f48da8043d0a9f96616c295801ab4e000", "T3T1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "e6023224e2b37071d90677b7c9f6ebde0eb63baadcbf4e2603c2d22dbdad4738", @@ -16001,21 +16001,21 @@ "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "db5d928e3a33acb31184563637171409bb3cc26c7220ba733455d28102916b42", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "817cce6eedcb3f95c029404bfba6b2c6d3d5aaaa5af1964b43f74e1d04056078", "T3T1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "55e193d44704094346ac2220519f74edcfd1d4e105030cca861a4818e6201495", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "780daabf25f58c1d24a4f326488c3f2de5e455cbb8bf08799baba865eb505ca8", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "a6cf77898dd487cb0fc04df9853c96a22272b450b2b1233379895fe0153aba54", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "73f447f4c4e73a02b24df53a330846aa109e42f3f05cacc57678eebbfc498043", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "b09ceb4248fc2bc392486d5a0b3d34c75e004cef106aee5ce8fa73038e5d0f22", -"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "16dcbaff1691867507756ab0e34dfc30e7be88b9166d7004e6235b249d1ead30", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "7eba4753fb2bde39840defcf3fa805814a9f66c5943f42e69ac52f2b090181c5", -"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "ead0fe704931201c741c43935377e99e1111a8bff2aa98220f68af709da4213b", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "967bad366da45913d0d37b304861889c59525ca3376ad2957b955562e5b4977d", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "3659e4c41baeb91cc41eccbd06d4c0d629b79553f1d8b57f1b5b99cd766cb415", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "dd0fc259cb0c2d833fc32fb69a47162bc08067f5ea8effa88238c93bdc10ec3d", -"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "2a50834a2f3ee8efe6131ad9ccba24d377ec46551fadfdfdab69875f6e978e47", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "9aa9bf4b5636d6f18e9f7b499564f01c69be9d9df854dfb32d913e0b335beba0", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "c41e271e4aa551832218a1acc159d7916cfd786cab928d72ad8b38be64deefba", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "8961b6790e894a3811d9aa5c2ab8d392cf321f38760786ea80246ab15fd48995", -"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "c1789ffa0dc03a349e819991d132f8908df37b3f576b2a6333e72f14ee746d47", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_grs": "eea548f3316a3a0d04308d96dbd71f17e165d82e4c33bcc6d70b4ff1ed99a5dd", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_long": "ef03ada52a828a0b9b0eca272bbadbe23dd74cf1dfca6314435ff4e82919d76e", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "45c9561a6f75100ee1317ac5b5436865d81a845a5c28f5ae69b83db80e7551b2", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify": "83f056b165722b7b72e5d13a5698378245bbd36db14f33eeb464d7c42b5fa89d", +"T3T1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "60c244debcf5ad15fb328c16ad9586817399eca6e71dd70b8d131e117c13732b", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "bba7b2c18044446aac1ab19ca14c68cc2d7e39eabc957b52bada3e5ff3609aa4", +"T3T1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "9c1dd45e93f217b15f23e2d00686ac5ad848dca15cf1187b758ad0bc302c6b4e", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "6132211aac2f8b12cd7ceb8872f7693f4d4648a9b0e21d0470d75214106a6362", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "aefb25f56707943d0344694e5d56b522b99117382917c8aee9bb14561f3e1fac", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "aceb55f3ef9e13d1b9a343cea536e3a8346cb3bf6cac088e0243bc02c363cc93", +"T3T1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "3a72d481d4c85cb822bcf013c21c07379bf9f1828cc343ca256571423fbd283f", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "93a82ad6fd1cbd1d2d9521a052c9f79afdb561b5407ade5fa80d5627fbd172a6", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "aeb4374bd49981d4542a054108ed1299b7d72c5cc47448556120bb2f829524ef", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "3409908a9c1246de2328950b5ed5803966ff4f359ca661c2ea5410859c792ed7", +"T3T1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "0e735f5ba6962ba00e4b0cd25b3c6613f16ede3a33cd87516ae2acb64f2efeeb", "T3T1_cs_bitcoin-test_zcash.py::test_external_presigned": "8e8f8d7c9e18312b93627a202e55bb6b4ed48d2a7c30bc89493bc945fa47fb37", "T3T1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d2de1317c2814f4fbf5224c12e5944a70ae19ec8c44eae7c01f5fbc1f07423ea", "T3T1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "7750ccaa664bb327def6e6b767d9710a96331e1f9afac0cd02ba525e07f21859", @@ -16398,12 +16398,12 @@ "T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "865f0b6ca38a9efbf2e8f7498697ab3621aeadb9bd5f64dea278c1208a05bb7c", "T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "651ce7fad3b633d5027914fd156a3aafe0e78767544482c5163035b0a0cd157c", "T3T1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "4e1099aa4707c5fa2085410ebed7d5569fdf3e16933fde4b7e3b128912bfa194", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "716271d755d96cee35040e93bdfaee6a39e6d891976773d447fe94da4818e0e5", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "1791fe7865a3f551ad31d7d75f78f6f5b9ed29fb0bd9450a5c9c00e52a1b1cfa", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "f9c136e1de3af60172a8227f719e82f9e1690a5921232af821b5686b41e13fd1", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "cc59a36e38a9222377a897ba8c9d74c741669b05cdd768160d500a4755c3e933", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "4945c5511f965860ce21c18b339805dee0c1549098e5bbd6291308b5f770ce54", -"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "ce140e9d4bc966c88d5056bd8cee8583bdb5cf99d8757f402b4c45b68813dbe3", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "f2bdda114c55f411991c0b7177a87b02ed14229b26f4aa3313f1a6a6e100da23", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "b9630660c0b296f638528f123de2664f8230e0dc2cf8e3d4b035fc9f123cd1ad", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6dd6fc9d802f61be29bd276eb39559729e05fd5026fdf1d134410ef5e5e8b72a", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "240106af58adc95569fdee340440ed0350e9b64a05413e5aabf7ec8605365164", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d26dedb030508aa527130513ae8338dc8d86dcb6bef28c0558257849190e1f31", +"T3T1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "d14472631d9330f6db30322c18465398bff06d7073b416cd613dfb1b59477594", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", @@ -16428,15 +16428,15 @@ "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "e5145e23bd01d5cd2cd9fc101700a9c9ee18897881957c672450bc6f19f67ba5", "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "81a0a571d94e67511c330c248b703ab13de11057b53831207e319eedd4350a9d", "T3T1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0f3006b69756f5d97364cb146580dc0da2cf7c2a9e031fc7cfde4242faa448f0", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "391a486f15aa7305cb953c3ca9f3bf52701923aa9d0169ae94c746f91149b448", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "94db8f851db70d4b26c094aaff0493fe49176b8b161e01e0c50199603e504da7", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "89464c2e1b3ab151d6db8ac1e1f33cc61ee5fc16a275db64154a443a61c5ba5e", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "a6103ef6ab9b140e0d72a4445e16e1e885d5ebddf3ab6ae641ca96f800d1a7d1", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "ca652800ba02fa9507c9ff6a0a7220426b214e40dbb6c3d213dacdb9d6fbe76e", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "f9149eac1041432067e96527c25cee17a62206d1be7c7864aaeabcb644c16e05", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "49046ec09046bc2917cfeb9015c366b1755719fe994b60a626e412812d58a9ed", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "390e5d7a462838428c12959aa48445b62770c03d34a01cd9521fce3368598dd3", -"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "391a486f15aa7305cb953c3ca9f3bf52701923aa9d0169ae94c746f91149b448", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "abe82d6d2b56b22201a08dc29d5c764b1dd70921613d293d0b0bf6980f460838", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "cfbcdb597af74c1331d8a9e3b0fcb173c85506a1d1ae011aa40645dbc8560a1b", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "b6f1136612a331f0b9445077d9f0dcfc7fa8ad19ce2114555b996d1e65c29ace", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "04cad2389166f741573b755e0c0b114ae85b3a33504150751124c491ccd6b26a", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "49cad8b5a6d654f38eba2e03d39f414a12d6c8cea9ee5f8890471c06b9053ada", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "d4c97df0bb09c652c6991a7e3ba583d80f420c0ae8fad6b87061320921b12eb6", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "aec79623f34f99febacab31cc2230a916105b896c1f36dec7bc7791dd28109e2", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "e461710ac9c6911575b257ed7b1a35f0bd911a2267bfc42a8ad86d5d5a80d814", +"T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "abe82d6d2b56b22201a08dc29d5c764b1dd70921613d293d0b0bf6980f460838", "T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "c33960434a2f59eb9a39eb5ee37d45f23f4988f0ea0ab9469fb7dc8b9ff42e62", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16540,69 +16540,69 @@ "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "5804a78d625ec5794a5279cae4f39eee2743ec029bb7943494533c237e297b57", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "5cb1740903a4a9b159185be423a234f39a73756362cdd48c8b9790bb041a9234", "T3T1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e85f019b637138d7ec284248933c4c1300b347ed707675531c8480755a4ad19a", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "eace01e137c380d3ac46e60b43f398726c81278765b04555e2200e6ca4acc0ec", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "bced65c9263127b4e8b15935781df9db9f7eae4d99bef8510775b58eb1b263e3", -"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "6dde1e9ac65743bac8aaaa4a7b25ea56eccb6c2f73aa27fb055467da382a0f5a", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "688dd61c2b4c7e10e075e30f09c867d25b57688914dacffb2dcd8ad47751534a", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "dec4c51d3c4593d3bb2503c6621ebf4fed4dbeb5388b96090cad8e3ed5cd1f1b", +"T3T1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "fe6f7696b68adc99776cbb3ee0cbf49b5e75dc8ef96d1a9a343943e668db0956", "T3T1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "6f1ad8c80aaaf757745ed9e069f7a5c6b4d63eb2ea47c570b904ff4fbf082b7c", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d1defcd2bad27e90a2a56706cc64eea317937a255f12bf585c4d7ceaf7aafc88", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "4a350b1a04d294399168054453df78e9c4b700c93cf22cc2579a1149d9082dcb", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8ca2284575a867d8db5d7bf02ef8f945eb537bc74cb404a0c8ebb204f3245e18", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0723159c480ea641e5b2b69e00f408a6cb9bb87c1cdd2c78772c29d8e4924341", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c80205487a42c838f4b84da10d840ebf7bb224453450a70ec5d578568a495600", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "7f9e310cf1ec4929c918d4c02f7864e3c9562a0c45f2bfec2d264e6793d9b73a", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "fcbe31660744477fce02a61c484b242ce95b13a3df6f3681a072c32b3c5f618c", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "70d574b4c3964ea3e0992c62079f90ddf784703558dea9408efdc766728dddaa", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "ddc01d821c8ed36b3b7d3db87c4926c13f9be1809910ac5757866cea60ba03c8", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "37e7493cdd9d106bbe2e84696cc07b5cc0df5d42a56899fc42fc3383b613609c", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "29132647b4f82aa01d2c737f7c139147e228772ef440c025a95e5c76c5b3e8d9", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "03617aad8b4818c70b00bfeaa3e9226f184b0e07a6954e55d80bd1d279b0ae5c", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f3a99a602894d1b0785df71b28821e1ead435389af845155bca3e223e8f95ce6", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0c0de61042156a0989c2d0da9f37773c15a14a33d1bf6a1f376e61c4216468d5", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "1c9b682ce66a2b6e8fa326b84e8dd54ed5b2289aa0723bc1d3ed12fb25b58709", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "f55ca3cbc9adf9d9a2121b08e3116e4da082ead6b892a74110b2f5ff7662fc54", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "53ecdc3dc9ba7598c005e71ea9463e7782476367f8038f11eb2d965334ec7890", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "be2bea44f033d89ec5cd10e6df11baca613c55afd85e47fc1cc1458393a6d3da", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "a5f49abf91e9d80a694f54b76ecbe2ac8f0eaca4933ff34401af8c11e9a4c40c", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "36f671ef660b38727275557cb6ca50665df9f0795c3c446bacd9f2b320453f3b", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "fd2cc76ac0df8249da66e3102d3bb22629d088651dea93634b8b90855b9d3296", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8c91b25a33d2e1a87ce3b069972a0f914509b8d8af45df5f6a0086aaf39507cc", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2b0b3d0f3a5d623aaedc31f00c483fd5159c99433d4c4f86340029a220429061", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "585779d2267de6c12617e30a81b329e5a73aa33b47c370a0259c6d9526ce9c8f", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4a34f639e0a6ac6c969dae2d23a9baf0fac4e3be9a0f2da482da7ebfbc789967", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "1a827881f66e7345bdadb920aa76ed3edef2f586e7c88e85839b81c0d137a0ac", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4b92af57fa986c4e851a958b6c8199b8236af6985090af2c5bc7a8ff68906a4f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "28a4610bdd2b42ec9c1b484917903c8ec747098b583df1cecbed2046b5452a8c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3699fc405e333ed78dd77d0f5c3f5310bd893cac94509ea4271f7bc400341151", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "127446a5c7b705e19c2b2e642243da87c6ead65d499d3bf242eb399e0c069d2d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "e416773862540dbb944285e27a60cd2231745ea8620280a38845145919636710", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "51c68ec78fa1d9c75b2b07fc8d6d4e7558aac516f611869cd5e54af9734d110a", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ce99274fb90c2613f596cfb5d3cdc23ef2bb700f89984b8abc760a94bc326725", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f36ad5dee7039c120d0f14414be813394deae22d1acef85737ae89479465da9a", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9fcc89ffa2ba401ce892e71d78f870f8cc50ecb5b827f354ba9e8885a5e3e333", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "8ef53d496c1bb8e5e82f29dd3080802a158b01e164b922cea023013b31b7ce22", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4c000ca654f4ac17963dadd49e4fd216bf835f1c026ff1a67fe9d90d66f4260d", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "87c47ae29b6f30515695ec866169d2a6f3b6feeab70cea247c3b5dd0c88315fc", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1bf03de29a24ec5375321c86da5b070478ca96b967f9319fc834ed4020e3ac7a", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f8d670d04cfb73e6a850a9c393c50780169f76a7e5cdf69e8360fb226a4c73e4", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "86eb217c36e1ceae594a0a38c968774e2804a08ad2f44c702ffaf204a2f9c1b3", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1b8f765a75803dd61440617d3b9e631110ded5fabc453099e5460b9d757ce515", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "28a48ae85931a1eeba4ec6896e5e0c93069c0b13ebe4330e8e5bee6b73ac9ae7", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "12d95c641743c888542e0a9464aeedea85ce063faac31dfd56149523acaa43f6", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6e7206aa3b4146e51569b7d1c85979c1e8b0a1fc7642bfa08e965bb1d2d2fbf9", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "5d736a587671b214fca8840debe212991ccb63c79ecedb6bc5a2e4d5474fadb7", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "322a8a8150361203bb8a4eaed4ac65c79b6bba2ea5d76d49249f57811c1acf34", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f02aef6fec883528e51e2d2b73955516f62d8952bde52f77267589f049b0dfe0", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "15a0fc0277bc6a52a2cacd3d97d1484ebaed87f47cc672e5dee95b6eb1c8fd08", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fa3aea6a28c4b350c3d266dd6174a2ba8ff568f504eed1ce8f7328439834754f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "947e51e1898767a91aa47b87d55625fe433fe12a972fd1bf28793f4a026cec80", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "ebabaf017423fb614c446297be587cdebfbb0f093590a526dbcb96a009ff7797", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7c275effe77c93c4d56cac6ca507f4cf206586e99fd5a4dea44d1d0f7997d7c7", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8ab96790c3ab69851d1bdcbb21befe2c6c2914c0d6b206db707bfc70eb04018f", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f32467ad7e6835d555511902977d25c3482af29a4021a6a0ee79ef5c5c3d42f1", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a49bf466f90e72e0d71ee2dd04c6e8fbcbb6fa4eca0024019d940144e265c440", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "fe52bb8a9e6ca43279d50a4218b25515ae770ebced43bd8c478ad100b15d79d0", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2e2f32940bd0f847cba02b9bacd7d9c3a3ac55ebe171dc08847107733ad88e74", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8cbfe6fad036e08dcd8a1c386362ca49c47624f2e762e13c4e14a692c98faf99", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "30606716bfa4cbe5587aa5ff3b77c865a1fa66a81ac4e7a8a436c4d4834264c4", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8725ae117bdb64c97b2a7df3d3441198c9546609e7d6c6cfd913d9cda28b840c", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "93be6a9c86860f689c45c0b9931f2f84d4086303b74a9bbd94484229f8cc3f30", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fada90b165a3ab1a61d7df1b845914a2024ca0d726129fa0443f362ee279cba1", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5b19e74308b3d0247e2a3f09fdedc145be6c1206efd790727a5c1e456361776a", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "13326c8c173eece78043b676919574bec1902ea7857cc3223f56294aaca7f9ff", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "18cb2fc89aaac2f555399613762f02a753faf013cb907dbcb7c6c612b9178cd5", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bc7d0692b8e75f8f18cb2945716b638fb68d759a389dc5208c168b3d0f2f1e7c", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c971a4b888bce33e88eaa3d05908464bd80a65ec9cd33372db2a33d82f516aa2", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "48a7c0b6cb8996e0c624fef8c74f5c6d5206b8315c9b471afd54305e632a41de", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "64e6927dcbb587b49577b472baab8f292cd6d7ae8a553dd554dc7cc08bee3f33", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ecfbd8fe50935b075f61c245c8e4207929b30df9ade8e022d01b78007534bbaa", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2a169d4065636391fb58113d165f35f2eb43095840ccf0dbf415e695b1a0680a", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5084f60ba60f34ee3a842ab511b724b258f8cd61349d5f8fdb434e567f0b8fc3", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cb3aa03c5280805fd5c1deb7120ff16b1477141a7f5c1dcb23da16f7452e194f", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0c788e13e515561c0bb766276df8afd5c638a4fd277845c5e934e3381ee37d2e", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "786a4ff04f8fc543645eae6ac33075a08c32efd3d92cb7b95f5746152902d149", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "388845ea867ae63588eaad720440148f60a5d2c0a29a4b6831e9d399a8143641", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3d8bc8e1613153a51b1bf2afbfd616b2908e6ef45ff2375251fbf3fd92ebad1e", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "f2dcfdebf09188bfbe49150dfc2e09292501abf05f92ae930a116dd63254ff04", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "abc6199a1646f74d9f07a8f712b173edf36ac8b1132ad68919609113bfdd417e", -"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "769e04df8c93cce199ed6ce3d3b50bfe3eab07120138a19102200047f4fd2281", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "bf878cff57e41ac13f98f114e5528e0e53c57b61fd8efc540b09121442783e46", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "306ede44cc1bae86baca29b249c93078d2a0f20243d50245029da74a17e474db", +"T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "6982028b14cf39339c4ea3b7c7b4ffd7cb575c5e81fc57bf1d2819476f9cd2c4", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "f933ddf4bbca11db97732486901b7a2414a2d2ef36981fa3422077629cc10826", @@ -16693,16 +16693,16 @@ "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "43ec173726b6af69c09ee122a42320b177110ea68560f6a03677f75a67d1eb69", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "0ca0da5e5269b9a424f970c35a521ec06f7dfbe81b3155cbdbd2db0ff856edfc", "T3T1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "2f913a65c7ed639aa0591703f61ded963aaf94021d8a4e87bb2decc6e72be20c", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "385a9cf1185b3dd198dc8d240b92ef19295b8eea8d2f50f7d289b4e2ad57c0b3", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "6ae67697c3b201b5f77c3c2d6f79d647d6bc56ac2547137e253a83f73aeb1374", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "ff0efd9c91cc8ba158bd84bc8cdb6a7cc35c121fd68425d59d12fadcb4cad9ce", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "80a5e26256974a867341302814311881beda510c1e1da1ef174357e8d7de0f49", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "1ac1223b675399dddf1e6f3c86f8daae3ba0c614c726c697e19df6e8b158495d", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "be9f48187dc832606186780ea43566a12d521d8477a00c766a805344facc7efd", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "174503a970cf592d0520db4b9a34f80d90ba892932254753709fd67402467ad8", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "c7b02e778bb8339c99e8ccce81da2712a3d9d987c39f220d74908d0a78c3b4cc", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3dd06f1f2bf3c8d19ebe52c5a9bb710138f15f7cb087ac9061abc990b4de870c", -"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "fa855a4863750a059589877ea79ccfc47ade9cc092abb007c31db5fd16869820", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "6be71d0c5dcaccd179ec8268bb86b468a748351abd73df02051650a9c1e9656d", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "3b2c97e0d50cfb0712c37813e3917c7886df6d02f12a8b1092b5876ba9fe3a00", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "3629c652defbe710513e7b9e4606080132853c30087c0958aaee279d3014464d", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "32afabceb066ac3a98867999e2eb523bc2267396ea0cd504523079645b6ac196", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "40c21e8654ea9a402101a87b945bab35d35115a904bacdb0d0a75aa7b717c125", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "61a2623e55659ab692d29b4aeb1196445d6e2ab438f22ee97f1143fc44bd82e1", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "235849fe2cfdacbb7aa895ef50b5905bab8cb83b67fa1ac908c97a93cfa9fc3a", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "dd671edbfb73e2a7063aed7ec09c1727047c5c1441a937388ab07736f2f22c10", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "92184ccfd4dd38d0b530b2f4414852cfea684080092c844e8e071fbf26d07ccf", +"T3T1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "416788fd008a3f8e29cd558633fa238c5a9f7d2a50ccc4add2038899fe830467", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "d88fcb2a23ab0ad4a5747f435d819745327892b69e1eb5d8d66fd3768347a44f", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "63f22181c74b7f7aec79d447676a95a4f62c90b62dcb739a07f6f5fbe002e07b", "T3T1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "70d2a95e1d5b27230a1eacf12f5fb96e3344b88ce6d05e85845a3870985ded4d", @@ -16769,28 +16769,28 @@ "T3T1_cs_test_debuglink.py::test_softlock_instability": "9cb0d51aab3ca41d6c071356e8d2cd24413766979879a5d13abb65489c9928ee", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "b3eb00a0ccf0406a85d623598121f40bbcaf37f097d34780131f600d6addad9a", "T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_test_language.py::test_error_invalid_data_hash": "75fa3a8df587223b856b112a130efaab476c707a2dc36d9540915038e534096b", -"T3T1_cs_test_language.py::test_error_invalid_data_length": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", -"T3T1_cs_test_language.py::test_error_invalid_header_magic": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", -"T3T1_cs_test_language.py::test_error_invalid_signature": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", -"T3T1_cs_test_language.py::test_error_too_long": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", -"T3T1_cs_test_language.py::test_error_version_mismatch": "af29895a10bed738f2e0fe3fe613e63fa9c4978236dd689332b724eb163a7013", -"T3T1_cs_test_language.py::test_full_language_change[cs]": "50400ced72cf6643b98798aebd9b004cc83a176573aba6bc8537c49f96f68a23", -"T3T1_cs_test_language.py::test_full_language_change[de]": "8372a7ddda25a6c6621747eec043c8a4923b2fbea8c75bf2cd96548bc8618e88", -"T3T1_cs_test_language.py::test_full_language_change[en]": "cb98f96887f13a82434ec00200e70c1b85c52d3ee9ad52d5e0d13a8bbc8652d3", -"T3T1_cs_test_language.py::test_full_language_change[es]": "a36a4c3246d5924841c1ed00f423ef255e4db169f8baa9b9b45186c1fdf2519f", -"T3T1_cs_test_language.py::test_full_language_change[fr]": "7ad0e0c7d828dae9aa96ae3bcded96d9c9ef428404f54f20d1bc20425204758f", -"T3T1_cs_test_language.py::test_header_trailing_data": "4f31bb0aae025bc89cdd85c64432eb8fd1687abf261102c6e6a94d7e9bfaf4c9", -"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "26f6642b48b6289ff3bb5fb6e0beb8e6681aeabed0d0df2b1943c8036bed65c6", -"T3T1_cs_test_language.py::test_reject_update": "ded5f116b38e6f0c64cacdbd230c33d061123a528742a0b11fdc70c45c4d2167", -"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "4f38508888503bca37f7ef083c5aa8572bee6987ccc1fdca5fbc71d1eddcc086", -"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "4f38508888503bca37f7ef083c5aa8572bee6987ccc1fdca5fbc71d1eddcc086", -"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "bb92256c38039e44861fcf6d46ccf069709d213c4670275f181b6290fa2ef4bb", -"T3T1_cs_test_language.py::test_switch_from_english[None]": "adda49d244490bdf99fae24dcb7336b22ab4ec0e7a7b4d276806e48d1455898c", -"T3T1_cs_test_language.py::test_switch_from_english[True]": "adda49d244490bdf99fae24dcb7336b22ab4ec0e7a7b4d276806e48d1455898c", -"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "36ae0eec30003081208fbfa3668e3974897b032dd1e407e33e708c73cfa7f207", -"T3T1_cs_test_language.py::test_switch_language": "fddc8ab027e570d255471cb98cd05bfe1b9247119e8fb9a518c0866f9ec59f56", -"T3T1_cs_test_language.py::test_translations_renders_on_screen": "c859df8d506ad6ad5f7dfa0c333196cb3b0006d57f120812934d5b2ae3caeabe", +"T3T1_cs_test_language.py::test_error_invalid_data_hash": "0258752798ae1aec16dff0214f3eddee172cbea386b4f8ecdcdb6bb1c334b0a2", +"T3T1_cs_test_language.py::test_error_invalid_data_length": "ff7d71d4ee0434de72ef16199169c1dee0a628aa480f0779e83d20639ba93b04", +"T3T1_cs_test_language.py::test_error_invalid_header_magic": "ff7d71d4ee0434de72ef16199169c1dee0a628aa480f0779e83d20639ba93b04", +"T3T1_cs_test_language.py::test_error_invalid_signature": "ff7d71d4ee0434de72ef16199169c1dee0a628aa480f0779e83d20639ba93b04", +"T3T1_cs_test_language.py::test_error_too_long": "ff7d71d4ee0434de72ef16199169c1dee0a628aa480f0779e83d20639ba93b04", +"T3T1_cs_test_language.py::test_error_version_mismatch": "ff7d71d4ee0434de72ef16199169c1dee0a628aa480f0779e83d20639ba93b04", +"T3T1_cs_test_language.py::test_full_language_change[cs]": "837db42d1feb51ee97fa52b4ed53a538f527d5ae93730e8e7a81e5d03a6e0995", +"T3T1_cs_test_language.py::test_full_language_change[de]": "cea275c5ff9b33e3c02736d3118adbe684bdb123ea8cec8f97129b80c397c9e9", +"T3T1_cs_test_language.py::test_full_language_change[en]": "4b1aeefab331751cfb8753090dfd7363bd3f20a16bbed2fc49a2f081a5f8b00b", +"T3T1_cs_test_language.py::test_full_language_change[es]": "25bbf75e0ad5738b469ecbcbc30b34646239123cc981dc2c379c97a24a94d4c2", +"T3T1_cs_test_language.py::test_full_language_change[fr]": "a691d94910ad5ea6d9822fb574967f52a1204ebec8c97e807ba25d84e6356c7f", +"T3T1_cs_test_language.py::test_header_trailing_data": "8c38db37b0b231be397129a41cc848c451a35ab96a77a57ab64a0b7ec4faad80", +"T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "c29fe59421cb6507c929da41e6c9bc4b6fbd6506bf3e13f2ddbeb928cbfac572", +"T3T1_cs_test_language.py::test_reject_update": "a1c4ead3b29a3af99b640a408b119a6239bd17bb4751cd66dffe87f8dde34678", +"T3T1_cs_test_language.py::test_silent_first_install[False-False]": "5d31b05c15367c52b9f4b312a96838ed7494a35b9a92cad9656fcd6c68aa34d7", +"T3T1_cs_test_language.py::test_silent_first_install[None-False]": "5d31b05c15367c52b9f4b312a96838ed7494a35b9a92cad9656fcd6c68aa34d7", +"T3T1_cs_test_language.py::test_silent_first_install[True-True]": "f42e7cc671b861ab0a9c11a4be4c43e50d0e56df0157d35f60adf6151b4c67ce", +"T3T1_cs_test_language.py::test_switch_from_english[None]": "7b6b5428a1222ad3101eecf6405861657086ae4987ff55bdff14bf6289561ac1", +"T3T1_cs_test_language.py::test_switch_from_english[True]": "7b6b5428a1222ad3101eecf6405861657086ae4987ff55bdff14bf6289561ac1", +"T3T1_cs_test_language.py::test_switch_from_english_not_silent": "b7fc9e970bcf1404f4586b81b98acfb7c43811c4fe28799dabbff7d03006ce65", +"T3T1_cs_test_language.py::test_switch_language": "eedab1e9900c2c452bfd89ddeacdcf50cd33a1c07f5708f6472aba27aa5b3d26", +"T3T1_cs_test_language.py::test_translations_renders_on_screen": "21fc2169617413866379d5b79094fde7ade13045963d96b2a8bf460116b2e410", "T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0f8fbf90b7135f41d33b0b1895b2925b23a97b1a382c8582d445971aab39a4a0", "T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", "T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", @@ -16802,40 +16802,40 @@ "T3T1_cs_test_msg_applysettings.py::test_experimental_features": "def9ad5e2b4db346c4e5bd2dcb0444b5787221a31144c17b9e06082a7fed6256", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0eed526ac2842f7e35e9c2cb5684d622178b696e1c834661c62224691a7992d5", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "97a766b1537dd43d112f397be6d79ebcb05a6d1f5226b976dcc05865c97031af", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7c7edfb85179fc90c9678142163e1832001586238f1638a9bf8300e097085904", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0005d6733957ed2f452b557ee2db39125e774b0180274b6fbdeb041220becb02", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e549eab5fbab80a949482faee7e6757c63304406539d42135c87fcda42f33301", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "de68ba0aa25dd69af3a7fb10e8054861e2244088f65882c9abe04e2679fb4ea0", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "dbc16b2d7ad7eb983f5bd5714810a1b8470cf66752ceeee6437d0a235ffd0c2e", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "36cf5a34b221fbc8ef8d11e037ffb9289a4daa15a458aa84ba2942fd751ebdae", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ba042e3d148aff9914135de961e7ab6c237f7b672e1c49968686ac49761d7f8a", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "8fd04ce896d76081179715f43988e940f37baff4cb0f622a28005ef67c015281", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a8e5b73fcee14cf4bb6437e52c2283bfdf07b0397597885b06995b80b8186895", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "d03990d03a374b4c3ba765eb3629be3fce432858b637c3ed01efcb4168f8a6ea", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "fea20d5cc7dc7e95761058944c9a99bff9039a5035f4137ac4c3c95cdf373332", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "45385c7df917c24ca2e3662a49db50e8952607e5aaf979eaa73eb439a6ac5a07", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d3dccdc4fa6c23836f2dc4f86ede182a3929ba78d121a5a19965d3c90d6e4b21", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1a88c5b273d78e985584fdd5e9b2f8a2af1c57106898d1d04f4856e54bb2c528", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f8488e40c2ef12caa4e44b6a2d43864e02636462d0de215a553aeab24fa1d61e", "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "c9ca005679502266318da239e432a9661bb71967c41455abc9a78ab14ab16588", "T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a88bab65b934c924512689d6ee7b9a6e9c6ee184634326a77867418b48c3d309", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "630480981fde9bd9f240c78d918c521a16ff4c87e28264f201be130ed031a40b", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "78a223276aab0b863f2b77d200ce0760acc786dfe83577df6a4642ae5fade030", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c32615dade60555fccd939eb3d919ec2ae976ae927ae604b8831bf0725e94f7a", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "885c23004db682853f559eb07a382f99064fca941decb96ca6978a665f7a5f08", -"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "957368b746e5e684d7fdf19623a6e75dcea20e4aa842ef3ae504bab9934e84ba", +"T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "7b6fe9cb8f3781f9026830265bb1188d78a4b9ee7db799c69b2244815c360398", "T3T1_cs_test_msg_changepin_t2.py::test_change_failed": "f569b30a08d22a0eb0ee005248524d1eea5a1628dd9be32dd8692d8f27b34c99", "T3T1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "132a0329f43e94423f0241be426612d1f7b13af298fd53145552d56919eee198", -"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "0418b995537de4572b49d44752d06e98c356d47f2181478cdad1e9819345d79d", +"T3T1_cs_test_msg_changepin_t2.py::test_change_pin": "2e4ef1eaf8a0b48856e18a7dacff17c38b573f531b6731da0947aa538e498c74", "T3T1_cs_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "a596131e04b11288252167292f6611c4f327a97a7fd307661106932b99dd8e6a", -"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "34eaff1882a3cc9252bb457a0fa5e34f1c808d4e198c7e4ba95f8a0bebc61867", +"T3T1_cs_test_msg_changepin_t2.py::test_remove_pin": "9b2cc28cd84593a0799a0d00fead8a037a02e618a83f8c31523ddca76d13d4dc", "T3T1_cs_test_msg_changepin_t2.py::test_set_failed": "4a8c7ed7780d1a901dcefd042b28a47ffcd6161729d6aa519628136cacb340a7", -"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "29b1341ff6e2075bf8b011d249c04f7f0e04bb77150f34faa8d732f881d9fb28", +"T3T1_cs_test_msg_changepin_t2.py::test_set_pin": "31e24828ceadf86a2b793bb806a0780715cc4f6d727df235f35df28863082380", "T3T1_cs_test_msg_loaddevice.py::test_load_device_1": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", "T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "a942abeb2da6b93256417f0414c1cbc30f89c7d5648b9469fa10d4588f3fad31", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", "T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "64f920bcca3718f1b1cc9d41e9f2a715aad28768f42d940bb33517be9da63727", "T3T1_cs_test_msg_ping.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", -"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "8da52dc761d4eacb3a863864b948d5a572980563118b456527acbd05ef126af4", -"T3T1_cs_test_msg_sd_protect.py::test_refresh": "a6f842c917efdd62369a4f911fd5061d1e39c5557d0daf1b7af4a4ecbaccaa00", -"T3T1_cs_test_msg_sd_protect.py::test_wipe": "59c3fe698e1b61c7d8d58258764d80bb41e94ef248688bc4ce287e3a5cbf9bbd", +"T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "f16d0f3c7e6fbf209dcdf3b9d164b256921193a59497181ce12880dbd68f344f", +"T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c0629afadd2f660e7dde53a1f046e4451eb8ce7ee195cf0bb1c97624cf15fb4", +"T3T1_cs_test_msg_sd_protect.py::test_wipe": "f2034ed5b2e2698f84e2e7558e7912246e7b7fdd969381c427aad4b0b47353db", "T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "49b728c5299c3f8ceeed9595dd407c6940cc7bde3c77e34e22cce90262b1f44a", "T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "a459905ea805dd3b02e7748bdfd6c641a005ab6b22a13d74c75b2281a4aa5e51", -"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "bfdd72c6aa5fdfc8ce295ab4073f6e6bb341d9108c8ad0e1b9a9a38a4d1b2284", +"T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "3fe3ebecd6517fd08b52fb7a85fb6e6de5fda24b2fc000865ce83de6dafd5781", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", "T3T1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", @@ -16847,7 +16847,7 @@ "T3T1_cs_test_pin.py::test_incorrect_pin_t2": "0cc212c92e0ed24a30a7af5cbacf923512c2c4ca3f46e0d8f3031a356c1434ec", "T3T1_cs_test_pin.py::test_no_protection": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_protection_levels.py::test_apply_settings": "873db1de56e60f11ec8cdc95a56008c6e8fab8060b8c42f1160083e1236cad85", -"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "497f350b41658c862616c335644a4fb499db2febca3e91ac1af82304377afe00", +"T3T1_cs_test_protection_levels.py::test_change_pin_t2": "f9bedc21b0890b833ab2d90152dd5a6ac497be816a713e4bc9f9906393ca702a", "T3T1_cs_test_protection_levels.py::test_get_address": "90032a429c463d5bc98e67ebaf930a0455797e5dc312aec4d975d9f07e36366c", "T3T1_cs_test_protection_levels.py::test_get_entropy": "78f1c9d9d110e61ac2304c3a446807f00d449ba2f4d649e64478e7e75b0295f6", "T3T1_cs_test_protection_levels.py::test_get_public_key": "90032a429c463d5bc98e67ebaf930a0455797e5dc312aec4d975d9f07e36366c", @@ -16859,15 +16859,15 @@ "T3T1_cs_test_protection_levels.py::test_sign_message": "75a8b343ba369c5de0b144ad457ed0b973e0882bbae6b6a9d4e5a3033af04953", "T3T1_cs_test_protection_levels.py::test_signtx": "81fe8b692870292bfc24bb8551b248fef7379c410f5f7606ecd86c45ae307532", "T3T1_cs_test_protection_levels.py::test_unlocked": "4489e8907a840ef83289f4ce45146dd4ed59d26502af93eed4e379b073842eda", -"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "378a945c71732c72b0b7020845d58c5d13db1b2aa35ee45c12b73bcb15f85d22", +"T3T1_cs_test_protection_levels.py::test_verify_message_t2": "d806653a6d4bd2b71c8b2c1995f56875115783f53c43be220e026419df16c1a1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "4bd90276272d0a3ef71aad24bf5facf72bae079751373abfd007258740346367", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "5676f651daa93d38a388175f7ca792e37ab8fa31fdf453c03c4274c714063b99", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "2095a791c7ef9969e28ac2880205a27539555d43a32a1b7b85f59cdca5467856", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fe943b937114ccf533f034b6edbca8240bceb194dbff999bb033df81656d07f5", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6599822efffe807a0e137c566e6f57f50a651f75f9c09885fed6efdff0678ef3", -"T3T1_cs_test_sdcard.py::test_sd_format": "b79871a4517a2140653dafd70f88fe39decf8ad3d6e9cbf16ea3d6885fc7ef88", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "59738f3c625b07018f82cb0102d24330857950593573572d2d1b51054be4742b", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "0f30546934aecc6a273dd29811cafbc161c6c44873b850e208dd4c74343058db", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "dc4243a930798af918c3cec2bfaad336068ca749becfc59b33adfb50f8c7fe6f", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f655c774729ad792a5feece2157698f778d319b7e531f52f5a9f5e95c894daab", +"T3T1_cs_test_sdcard.py::test_sd_format": "76c7fed29920e2339f0f29cb9545474bbda504712ad06ac0c44d8d767448a35f", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", -"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "7f5b05f7fdd6887de31cf89910fd22c3d937a619ba7c5211e67b10ab9f35a71a", +"T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "19cb5bfc1eafb2aad10f899040705034f5bbaa0104aeb455c08cbaea044ad4a6", "T3T1_cs_test_session.py::test_cannot_resume_ended_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_clear_session": "40c4a6ec40ae360f0ff6fb9d44a13b3fa4e0d80e6281426587df5e83ae890248", "T3T1_cs_test_session.py::test_derive_cardano_empty_session": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16889,8 +16889,8 @@ "T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "680c6be19b6652a1c7c21463f9d1c036e42aa3d38f48e7f828bf9c434325975b", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d0c6d02cde6433ff256b99e465f43b8fa64c0e336044f6ef56fc0c749caf7b5b", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "414ad69722e0d68f6c9aa1d930d8ce52ed33b8fb6d3c84efed1c347b26a984ca", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "bffff606d1a5b847502c5718e750441553d2565aa08736346d1597c18280f444", -"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "92152f415105dcf6ee4f25dedfa534bfe6fc889980347f91f3523635a4a6256a", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "85d3d1246baebd04dfee15004500ccc0be0471e3fde6fa1843ed44df0c8df3f3", +"T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "d49251b5047e46b753c5853488e3948b8bb806cdc11ee817bc0f0c437a3cd7bb", "T3T1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "710b677831a4329fd5a827ec69bd01662c58a5f4560dbcd02a9236c7a5b4d9e5", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "785fd04f880cfd36d07e0da9d8697ca1dce1584371643615c5dace2128cb8e44", @@ -16919,8 +16919,8 @@ "T3T1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "82be5a189446a500c2bd45551fff87a6b385f104a6a6347ad7a1cb1b218e2a23", "T3T1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "eadf259acfb7e2a6bd8dacd22c4d9ffe53e44c4ae43e4aa3932ad52ff8af0d2c", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "fd9123d183ffa0b37b79f1335841afd3500068adc4b0f27741ebc76d1138ea89", -"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "a109a20d4b6bce5523493f8ed2852549045ee81600a1a69ec0fd563860b3323a", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "5b9862ffa343f497421bc4bd61beb3a57d53ba6133c023cd9e99aca41d9e0a6c", +"T3T1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "0a41427ccc209fa564f1deeea2f450dd12365b9fe6a493b090e71a83465f5f9a", "T3T1_de_binance-test_get_public_key.py::test_binance_get_public_key": "2a0ab925a74490650691d6191fde5879fc1643f55f5ac5df0e24770396119ca4", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "d07826f516ebe688987dcbffcef9f15380a3fe84d1c289021ab7e5d3277bdfb5", "T3T1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "11356af0d84240bf54e81216a7b7f4f7907cf44e929b01823d4b11a14acf5e24", @@ -17054,14 +17054,14 @@ "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "bb106599ca9a9d8079c85f9a26a2c2074e84d424df8a71998adfadccef5e10b6", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "cd0de2674485116ebca04e0bd788492fe3802769c7613950b678438eadb4fe68", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "d16e3d25d8aaf63ab961365bd08f9f29e7f09a563fe2759dd00a4d9c3dd7e916", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "85ad08f2725039158c3730195d7e6357d1a928997d746668d3de45f360262dca", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "755317535bbd396c25e5b5f5adfa67c43754e1e8515d7d8b2edc86688a7824b4", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "acb0778a74fc26b5dc7ab6575f5a12b75aa585c50d8d38a57dff4e2502c481e9", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ce0ed458a2cc92323808bc18ad11ad7a00592794b7bd67096cf3244ce016da92", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "0a8db078d4e15d4fa9180d4225310354050a950d96be227a99c18933b3c60647", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "46ddc4d2da24b7835bdbf891bead575863035ce325bfc0c02a43a9b07978b7c0", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "39c643fbcb9886c31ef3fcf1e9eb052b9bce2beb1544c86c5b6daa1c9fdbfb56", -"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "eee43b5f60efe2216e9a8b0fadaf6ef80b896163fef13397b54cad9476d4a961", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "63660bffe1fca0ee77a09e7e34dff00f65f36d8c3436f588a20edf5b76625857", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ce7c701af56626deb80ef3101e1fd14ac1a793f1db0d75d8b3cecaa1af0eea72", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "7884c95bf71234e1cac0fc5f0c23458436ff96cc68c0fb6541bed1ed09885fa6", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "0395852a9a3e7e24f091b77fbf64bda4778c9607fca865656bf6bd19cca10098", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "59205ce45a62a9a26b759365063254d9478d21090ae77a367a973dddbfa7fa8f", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "bff21c85637f8fc7f1cdad90f070f6bfe0958ef829f74606e3b28c6a9bbcbe9c", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9e35842d09eac5edf62047247bef069f496e5639bd787aadaefcacba8ea194fa", +"T3T1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "6bd19cde99e6e2518fe7b62db3af572cc1433039ea98a07f639ee63a7591c62a", "T3T1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "029e5051852dce7f48128c32a0e965872bd76cc6b70696f5a08fb2cee049ab32", @@ -17348,21 +17348,21 @@ "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "739c247e97e2eca6843fab48c2a60cb4583f73b4838d9d4837d322c925d7bb8c", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "396e61699371eceab3a9154da81328e00cc0c1cc684c4128f428333cd0c3f782", "T3T1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c2c56f0a9f42b284376cf21fcee50c03c6d7f8016e15d045272a84c8c0854310", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "1dedfdf175d28447840a15620c90540fb5d08542003b6630e1523ad7e94d1bb6", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "e8e359a23e5dfdfc70de963fc31aaf46fa32c0d82eba37e3c8339d267319c8b2", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "85cffb6df650ef50dfe0778eae1855e9f58fd22eab0f7f4930fda6c7429036ca", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "cdf1c94d6ad742ba9dde8415df3607bd90024f948b795f37140c3dfb109473b8", -"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "caf48c9cf4171846861f20d2f05e5262ebaa363cbd65b8c03a118827f3886ee9", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "44c68bc9f75e785a9dceda6df08ef1e3d2db1b1d366b6c38c28c7c13a35e268c", -"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "991f504f464f7a04007f18091b84606e7bf54ba89dd010646598a97be241bca8", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "21272715f0c3bbb30e6f259b54c5243707a750bb29f34806ca6ef70d0dca9ff8", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "72f75a06c53417a2dedaa5c02555d0db33b446ed4cf7a8ce76332de8315e778d", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "aed2f985a23104e1d6c8e7df3707b2b77c6ed501a204e13fcd846e530581bfd2", -"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "f118a21ec48b79f22154fb9af409923e0ccfc8d2d1a26f306ceffaa32324169d", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "45785e5171aa7c1d526639c8bb3a6b7cf9e4b247f62d6569acea5dae0ac2a05e", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "73bf9ed2bcd68bb1cb1e3917bb84f3afb4d56b72755c6b7950b3e4896a5ae245", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "727ba919d05c463eaeaba103620340ce28e3af634857c8a6b0a590dc3edbf03d", -"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "b19fe8e04666031b9872e81b66af52d57d05e810d0389780fb49f18201ead2e2", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_grs": "84d4031c6791314f501f0addf7092e40a3f3627ac0ff6d5c4d0551b457096f8a", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_long": "2b65dde6d464f6380c4f52f86514032dcb1f81e14e9e3833cdfb49fcc0896c7b", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_testnet": "66cd514c77a9a2e045c00b299466892e1b8bc25930876eadc6589868535f643e", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify": "449d11e509f2deb6b04bfadeef117c3c734509adec0af9cba69161d679e552f4", +"T3T1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "c3dc4c93d8d48cd611bc51baf629d64f626ae5c617423540448ebec1555926fa", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "1431d06bf2cff7fbc9525716bf5b88e2ee1b24ab0a321682d1aeddb0270a542d", +"T3T1_de_bitcoin-test_verifymessage.py::test_verify_utf": "4c6fcadb5f0a2b0f8fd4ae0fb269333b109084e4c002300e49c083159bff234e", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "2120c87fe1d75ed15936edadef281eb532930a22cfeae69c705bb700aefe7634", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "5f439f41e7bbd07438a1f7f5f100d311c16d72d95f693fb91cca8d34386a697f", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "a9002934c621b44cd31f6addb00f9f89dd0f09e98878f11c1d8ba1bcb5542397", +"T3T1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "cb5088f78b5c72efda469319ea473bd4fadfcb2021e70caa6e8babffb1378292", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "7094022613b3a0d2ec8bbf761ff72b3ba81dcf763cb01268248bd05e811c3d24", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d5f835c7a054c3c1f4413efb8879b0b648cca2c621b95a2edc15dbd463e485c2", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "7f55f7c9b57aee73216402a498bca795895d8f28bb507c40575726d62c9d6d0c", +"T3T1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "7d1f6671c0f9e25142ce045da6860d815820dc2159cbbe6666cf9f43d7c3ea5b", "T3T1_de_bitcoin-test_zcash.py::test_external_presigned": "85f2067de3f218e718ae164e97dc030c4aef065c29755f6138afe10d664a2d56", "T3T1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "4f95511a770aec2dfe10db89dcb3dee6760802cb7467c80c114f29a486b63f58", "T3T1_de_bitcoin-test_zcash.py::test_spend_old_versions": "e81f8c5193f17b616a2a9d1308b06bd360ce8113d21a9def2ad7462a987c5aee", @@ -17745,12 +17745,12 @@ "T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "d58abd5f49abfa7287443db9dbd9295a27bb7b6d003f3b1dac1ebe166e6c4971", "T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "bf22ba046c2ca778ebd4cb012d334674c50467bb38e4c438261026c24252bb34", "T3T1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "3190e8c9b26ff6e2594402a8d5d71ee3d31a91b8c8def5ef9bcdd87e978ced74", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "659f72a232c88c33cc85e23a689ab49164b51bf1324765a41a0fdcdd13939ba2", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0c9a4c6e9940c34e922c19bb7a721c24da0679c35c9e89ed55c522ad85535505", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "53f29d9d843bae0f49715cbc61cdcea40b15da12bb188fc213b46d5a40646deb", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "8cd9785f9241cc65541cb5e00798d68ef803af28038a1923fd7f604dd25fdd1c", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "e9961949d719ed2558dad315f3cebedc9e7327abff01606a86da647a1d204c26", -"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "001d605c14286036139ed570d5801346004e31f4c52eea46f8340a36ea53ad35", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "59eda7f6ecd69c59c623daf07082a71253313a979c05d6edce9744bb544c8e4d", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2f5cd2d4782b54bbc0d6208851a88bf91d26bbfe45c69aa91456483d0b663969", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "497c24306386d477cc7363e5da89ccef7f74bc25e4548d592bd1bfaf3651d11d", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "5820d7f56f9ec3d88a820fc2efa6497062e752574b38debc9ddb8d425d3e1777", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "3a6c6a910b7ef149162cd9f62b1f5009f9ad586844b9316278b0adb626b21d7c", +"T3T1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "6837bab00f638c47f1d64bc823633827353ac33fa7760494c3ba35171df90283", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", @@ -17775,15 +17775,15 @@ "T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "d890100987d84e23ee9cb484207d7426beeb3562dc58ab1fe46eae100a4a76a1", "T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "d8e0c648025ac2196dcd54846fc23f76b66433500a3f8a5342fef2814b648a69", "T3T1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "2379647bdcdbdc744fafbd4221c303fff70ebf35c46a84e307c94965c7d2c2af", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "62c144084b9756d904b47b6bd2076f78ece7e8dff51999f5237b50277edd4d68", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "fd53ff14d0e36fc007d258c46bf1d79f6e48c25d8b2b17eab7d427258bc94515", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "1a6c0e9a557052ca61f5c246e1c04ffc5fcccb6ff0db14a42ee875a017a8cb55", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "c15da46c21b0b5a88a665ad62adb3b7b41940c28a1e6ba36c44aa40efd8be440", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "1dbb552884f7fdbb518d6907b156e0402d4585c46b59092a25eaddd949b0ea08", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "8cb07c3653ab301d324e839578c9fa6a3a242a2f4696533a60c3fbfb699ab1c2", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "308a8ee38d4a48a12cfcc0a88843183ebf972e06350c27a5b837490eb52ed14c", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "6fa31a8d65050b9eadb6185b10dcfda0d8a55bd01e787d440f31e38651df2dec", -"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "62c144084b9756d904b47b6bd2076f78ece7e8dff51999f5237b50277edd4d68", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "5fbccc9d068ecc004078654960c9d3d18ae59d788badd50c07e397163dc5bc27", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "d073e6b8f0975cd7338e012325071c6ef8a329c4b2ebe093ed90e63679b6ed07", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "3ef0b46191349e58c4901c7e0d2e91b463fc69934875eae5e1d24457e43c569a", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "196f1349f16bde455fb45494f4fa044e0d26b5b94a34c8a75413a93014e80c74", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "4c822f5b61c225a5fec09fb19c53e6855506d90ff5bcdbb0b65dcfa637fe727c", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "76666e9117ac33ed6b3d426113c69c6cbaeb9b317de4da7a81e0b638ca7bf3a2", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "ba04a01212ede2f28ed72bec780476661aca391a72a3030a24866ad3e17bfd2d", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "4b7c66ebd6967eaf9fe6b8b7dbfa74947a30f55814ec21e98dedb27e0e87cc14", +"T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "5fbccc9d068ecc004078654960c9d3d18ae59d788badd50c07e397163dc5bc27", "T3T1_de_ethereum-test_signtx.py::test_data_streaming": "9a69fd24d792d82e5d81bcff88968c5d3a4b5ffd1a298b9333fb775bab432c2a", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -17887,69 +17887,69 @@ "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "4e6add2ab1b808121208c2f587af849986d275c24aefb4dfde60a1b720d35c55", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "336382c1affbe9b95c641db57f0babba61dba662aaff290680d412cbe9d7c5d9", "T3T1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "38e218b3b3442e382f53d70a82240b64a0530f561e768c03565c074fd8eac176", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "ab801ff2b2f6218264e790b493e987e4bdc166bfb8ade4924426740784255cea", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "23714b7d05483ba1e7c72604e3da8bb9a0b563d4e9a87a63bab12ab5cbfe4949", -"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "4773fb71bbdd2da9ce215bb63dec930364988ad4304ccf7694645e9b72ec2330", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "3f10824ef14d0d2d894e40eb2e7416cd2c3041c2fd21d408436b6c71a39d8a70", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "b3f7296afb3c83605f4b7dde8d3d5f323ccc39cee034852340259a40fc110d2f", +"T3T1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "cfb61c81dde5f8c8aa6a041bca6144406dd9098073938079908585f78fd7e350", "T3T1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "42a27232e6b2e83ade8cc2fd92bf6478d0958418f84f52d20ce742aca6134d4c", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e6fe9c3e8d1b7da78a18c9546a85aab8cd337062af09d9d4050b12ca06a10123", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e88c0d1eb3d97eba69d70189ecc32327bd79adad11d62ffd8afe5ca1cb178c26", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e1790ea47461f58d75a30ab3f1f295ac006e43b3cedb33a1279f263635650654", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "9be5a7cca82ac8a7f5c5309f9ee4646933e8866c3ffd62968f79cfe928261c2c", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "377bf2dd0e80f85a5b69ec02f367f269fc93fadae2a5a1466c2f42cbada30df4", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "08be4a9c12a129e1a0dc7ba566a1c053407e5712668726035ae3500518e77fd2", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "130e29ea396be440b755b973843eb8874fef9818062680e604f78abda5b87dc9", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d401c1be20e9acee8b90dc000460813f49ca4dc43177464529cc7e0e38afa118", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c1bb030a0fc81d78a99ba8c8d43bdeea6d72aae147a99996c72b0427dcd4b247", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "95d9b0d5c513c4d610ff09e69eecc23ab98716b5ab340fde212d7a1b8f269efd", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9e2a9c393d9339e7e527409119cc26681206357285c2208994265db494b7c505", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d65785c6235afbd7c786a37d78ec3c80bb00a5203d2ef5a5b351c1e286992ac4", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "6cee83b6bb3f672bdbd825e9fc757b8d3cc6a0fe668b35755f8a39c43f30a2ba", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3a83bc0573993dd1c11f8fb96aabb6ea8e0d5b5e8d7b45e1b90d2835db87b964", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c3968493f389892f04f759eb5355aef19eef4ba99fa0d371e7d175e7a8064e3f", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "25887860a5850edaf27c352ce21a158319c69e53d09270b9ff7fff1e8e5f8088", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a63f80c2ae11ebdd91d35491bfe358d6bb45f92302e56bc2cd63bc2a0c646918", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a939b35bb1ccbc9941b8b5e3724ef6f6d664986b86f2a08d2ffbc47278b08dcd", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "9bdef6c5ef61afbbd6712bc938b6a67d34485642dd47705ec94d5f996a56bd02", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "964f1acb7c9479e92b5bed9272766c73ba1d7b6936c7322af249a4e8207fe7c0", "T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a61e9d0e2b2907698c9c8f0376f093cc35dd7f7e93d0a79a0755474440bed58f", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "693fe8c22cb2b7f2687eca4d6b618e529a7b67a33cfeee4ba4dbf9e6b077a866", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "b7bb58c2a92e800a4f84df841f9ac3abc700726d345e9cb689b812e943381576", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "1da5b40f51fb1cdc215c50e888290adbcdfd30f03bbec750a57fd3e41e7721bc", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "7b72498c0aa5de98ac03d96d99a2425d1a471011365eb41d256cc2c13568ad8a", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "2341791331c13eb184688be5b97d8cc67bad6e5eb19ab69a7c98bb8e0bc107a9", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "13da5a18b0de10f78a4a791952eb25c82d0bae716cf223737e3d72c811d899c6", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "dec28f17b510621d184b5a631f74da99759290541cf36fd00b244aa763ab9675", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "55d5611c62c72401d4e19807ac17f6d728d769f3281f5140d7d68b38bf4d3b35", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ab422e3b1286042d9e93999d272be669295687cae8cf856a9f2b12fc5322fa4b", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2bd1fc3144eaaa5f0a11675f76918fd90d5c17c68e810f7bca4e213283b6798f", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "ba1566aafa61abd3b8bd52e5a693cc2fda6e67b01ad3698dad215ab23928f457", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ccf6973ec134b3fd5e335fabcaadb67d1159c3f4eabf00f5177db47671883870", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "53acf9711cc895e90eb36635ce1a4e09c35ccf89e4eaf6fa51bce84e1647bee6", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b994393d93b080551c1590849f0128aaec92b5e3f05281ad38703e389ec5085b", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "27b2bd442461848252ac2cccbaf1ad4c200253f363e48acf5dcc2629f0802489", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "5aabd4fa7147adb936816a84f684680479748c07465a622508afcce08f9bc5a4", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "017ec81c18c97892c24e3c05daa9b7b1bc13b9b38624aa60e0529763fdc69d89", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e8c5c9436755db6433df43b487c3f13b43c434a312a7b0cf2164bb9dbabdbada", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "f989c055c5ac1bb0afb3db413cd4cb029c678d5ab0358ae2494d68cb5685b7a3", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "091b69622efb9084e1ba65f47dac6ad84204350c501e7b97cd48e854ab9ef2eb", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a21b8a0d27db458f9e0344e0a24c099c34ddf0051862335b392aab1a1943c278", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9f9735f7afe993f250080123ab2ce5ea2f55da031585eea4260d44591d83dd78", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "279efb64d519ac1aebaf3485e76b64727ba981dfb7277ddf45a017b6aaf4faa9", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "58f17ba36783ff77ffa052a953e75b9b38ca9661381f5843ed9f3f2cd501ac94", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9e7417f3f9d69a8c380bbe13c4c76f91e736a77a86adcc40587ca4c1283ac1fd", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "5f6b4790d83655faf0b5dd79f682d7bd9e356de53407f80575f13edad7a683c0", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f5cd359cca979995ac5b43750b9bab0793ac0a654e00a436ccc14f649f902683", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dd0d48ba4e5f820250f0515954d1f204d7e29c818de37dad0e337842dacfde81", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b23aee10e4ee7b07ffed6c6868faccdf999d717fee975be0c8de89125ae58e4d", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9787c8fc06a8869d68a813121354d7087831dfe13baa06ce5b6816570dba7412", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d4d4c18d0a755f523af0254ba8479d75a7816566d29c5c00f1ac92ac0b464fd1", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d1b080f6941058c9bc0b68e1be02f3acd147376c8e1fbe9cbe3d722e0dba3cf8", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d58e6768b8f08489997df466b54d90f1111e577b6bffe62ec01c52e3ecb24fed", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66fc33cd2f5978acd01b8cb4a7bc911c8dfb3c80a757c120f43fd20a2b6da22d", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a19cae90d66983ef2fce03454377263f359a7b74682349ea1b08d5335540c0a3", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "e560f2712f7f20b649595c8479141d448f6608cc10433f87f2be28615989df8c", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75288f19fa9ec24e42981d2a728d1347d3f25373a96aadf197fa84aa0510c489", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2e6f1ea7063ea0b52e8097bc2b2c1621116a8d7d8af133d2a6d37b5345a45d98", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "7c975383569b0c27463cdfc86095e58e2e357071da9572c3c91ba0ac02a8540e", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "de2fca89057ced6f4ed02087354b6665c5a7a82d7d9de3a49d6b279e0b154588", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0b90e5df9c19dbff7d8dc7a389fe1b383e2de6fd8c272a8d699cf84842a337e8", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "6db1b316a846386d23e4732992896c3dacdc2c289d5643dd1ca35e24cb08008a", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "729cfd5a665fa1cf1c18ac4e385fbddd7e06bec79d9ae2db5dc515c62ef717e4", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2ed698c72264bad67d2ed58d77f466aa8b8da5f29b5d379975a03a64f4d4256a", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a9a8b6ad1187e39044b9a9be38dd37025a450599ff7cc27e80db2c091aa68933", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd093e21edacca6aaee4e4191ec199749d957b393a932e92bb85f8f34979512f", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "30e1be92c8f217f23a9e3cb396b41513e3405543957615eccc04d6db48be66c1", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ce8ee7157dcd5af873ae9f41260296c1045479fc18787e4e18b7dbcceb6d7ca8", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3e298b2981ced757c39e58ba47248ef953fa81f1573980f4cb5b1974f1a03465", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "285232001bf17149e85d0747d85536aa72c7fba81c6d94eb4fd356f41b9b6da9", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "49fd364dbee5b1a64dd24542a155842152dca1ca6965a4a37e0f80de6eabd588", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "01449a748875534523b51969db36b929813557726c16e2add0c60dde63ec92e3", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a89ce2f3aef9a40835e0ae74a893083414dc5757a24b7781c8fbc9b4ac9a47dc", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4d729a03e761f0ddc185632439ab95f62d2cf6b8bb64ca9bdca01ad741b2469e", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f23feeb1f495c66872cc7710c0b9efb6ff61ae6d892341a7563084b4bfc11d4a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ac77d26f757ee7492e6c0395fc5290451326a10e149f67673d6f4cfcc060966f", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "8e7259a76adaaa9da300395eca4ec0d621085229eca92f6248686c348787df42", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5e88577270ffa6ce1e11aa8218016941ee3721a691f063641082344a865d68ce", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "557d95645e0c5140194f5320fdc1c8ce09871a9329ee27069da16fca7fc548c7", -"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "943af0108d47648dc85e762619cecdacf75d6a93950b01c7b5f91b6089a22c4f", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "3cb26a0ba3309a723d3e014642c35a186831162b0050cd121fae93aaec04c611", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "5522e6b2cdbff7d21dd91cd48421dcc5a677da906c01fb4c428dacc169b8339f", +"T3T1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "95708a14b906f0ff1a1e51ebaaa1f726f7c9ba9648d2e0259e3968268304606a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address_other": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "143d58d96baeb4ce263c293dcab01d80f6c7c4e5d14a326074e2a465a5508799", @@ -18040,16 +18040,16 @@ "T3T1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "a460fad4da34a0cd8926c69afe7b3dd68a9a31fb6f0a2cd8049beb4bac5167b3", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "eedbccc43034b509770565301eb857f26e6030a636f2531a7452c3da3b758f95", "T3T1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "99df73f64f0967874191ed38c8b9570b7dc537fb0e45dd0a6d3b50065d2382ea", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "9d09069807f03ed15074c01a36f5a31eb3b91bbec133024edeef0aa5e2833eae", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "851c96670efdcd525b81063b9236a451e24b4021cf0caf0851282d381b984b98", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "9d7c9f44ea3d80bef595e5f7e2d2727966dd60a244ef2fa5c6eb84f9a3929995", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "a894861a4ac53b0274850a8f2f137de31b9af99a7e6f7f4e64cbb0f7768d70fe", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "bc672cd30bbf9da741d765548ef841bbf8f5a59b2050b3cb9d60b5fa91309a74", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "31b4460d2914061541e35e5503711dbec80f86e4667658488d2d7b33506d6364", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "6c05ab21b2372aa5301e51170a4fcc5759789f43b8199484d18793de03637f7f", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "7f9f4d76cc974cebed8e0d23b12985be4fcf4b11f14edd1b745f15e77daae041", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6e4881069b1de4349cac001a21437ef99cc9cfc124c58081c15c3ca793ceaa65", -"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "f5681d3468c14b999885abf249085aa63ad86237523114c444471afee2592f74", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3a744216e8a539b4390fabd15a32e396dd457799ddc9e081ab6515430d609ae8", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "82781e0dc130df1e64650d1c84c4004b343972eee74e5d8df5f51b52a80ce460", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "fb9ba0bf5ebd95e041ff07e5a31cd7875713fb1f81feabbcae1fbc9f38713334", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "381d46f89c6c21aec3a1ee1c2a1ef6a8a204a5b08c298611184a8e869e5e9335", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "19969b7c6a9a27d6bbf4e34d31cfd6f0890969a3345a530beca2664d698fed6b", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "b14a260bbbbbbdbc1d0a02ba6e9e0ee82c2e9ab835064b61fb2e70090d43395a", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "755a691927fcbdf9967fd609c831e5da25f44fd0e636277abe6ac72f66402dc5", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "ce3aa76f9e5d43c8e0e5fb0958954f47c63a7c1d14e334ec3684ebc00103020b", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9f958dac8523c0cede24be6ba916ee575b79f12c50d234c57425222b7f40fe0e", +"T3T1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "2267301ff1d1e32fb94f7d530dd7c42198df2d323f947ac9b08e9ccba2956b56", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "60fb3168624d81dbb7cb256354957cc3917be65a5cf12f5e3d450d4b6e6fef51", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "c833071afad1812e0934952e4d4f408c4fe4730c046f128570789d4ed1785b0d", "T3T1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "2860ecf559edca3dadf62c563d995c5cf43399d4f2ce0f27daa9ec2a8c4b532b", @@ -18116,28 +18116,28 @@ "T3T1_de_test_debuglink.py::test_softlock_instability": "b0a48e107ee9c6d6bde0831b8b36d86e5707bdf74143dfd1a61d24726a465402", "T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "3ab7e7be6b946950c575bacd21610d26768aabdfe9a24a48d89c156ed2a2d55c", "T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_test_language.py::test_error_invalid_data_hash": "d64e5beb97239858c596885a32b86939f5760576f0b3761ac01a6d522ba9a728", -"T3T1_de_test_language.py::test_error_invalid_data_length": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", -"T3T1_de_test_language.py::test_error_invalid_header_magic": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", -"T3T1_de_test_language.py::test_error_invalid_signature": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", -"T3T1_de_test_language.py::test_error_too_long": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", -"T3T1_de_test_language.py::test_error_version_mismatch": "645a2ab1901f51ad8ac4a9b6571984459edb88a0b1689d8ce5e9c0a96f91ceed", -"T3T1_de_test_language.py::test_full_language_change[cs]": "6bb5397ee6e49dee5501b8dece66f48249818e5c9e1f7187d76b362052a461f9", -"T3T1_de_test_language.py::test_full_language_change[de]": "4c88cc1b92c2b2656a259423401bfa1ce7466c0d93bf534e7da2905b1cd50c2b", -"T3T1_de_test_language.py::test_full_language_change[en]": "79f228488bae7740f0e4021c62bfb295613f47686112f18525ea87e967d31346", -"T3T1_de_test_language.py::test_full_language_change[es]": "8927eb900b402d14e39322eb6bb40b0cae2bfbb2a175079cdf549e2c3942b39d", -"T3T1_de_test_language.py::test_full_language_change[fr]": "4a251850445d3b3f1f21974bd4b9fe133a7b2a0da0a4f72ef3262387ef40fc83", -"T3T1_de_test_language.py::test_header_trailing_data": "8e198165bed53d92f4c58b31acec7b1d6b872eaf922d523174d92b0f6681d862", -"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "7f3b44299bd42767ef0c27948841abe651c3ed3252541a49c24334f20a0f4d0a", -"T3T1_de_test_language.py::test_reject_update": "8608388f972372883ab6adeabc1871f8ae2b6992e51b41a2c5e702f0f5caadb7", -"T3T1_de_test_language.py::test_silent_first_install[False-False]": "630b7d9cfcc8cc2b1c540bed7d78f9ee283a24fdaa79ba1b8b14ffa88e8264a5", -"T3T1_de_test_language.py::test_silent_first_install[None-False]": "630b7d9cfcc8cc2b1c540bed7d78f9ee283a24fdaa79ba1b8b14ffa88e8264a5", -"T3T1_de_test_language.py::test_silent_first_install[True-True]": "e41d79e63b57e6459f99439987ef9cfc1436e69f511eb8ee838504adba6be49e", -"T3T1_de_test_language.py::test_switch_from_english[None]": "eeb074bb70d89a4f57d7fb1e61c830e51b255339244be927eca460819dd03c44", -"T3T1_de_test_language.py::test_switch_from_english[True]": "eeb074bb70d89a4f57d7fb1e61c830e51b255339244be927eca460819dd03c44", -"T3T1_de_test_language.py::test_switch_from_english_not_silent": "5dbbf948c50ec08f09d99f5a32c85b563f52fbf084e176f2e77bd89cdeb140ab", -"T3T1_de_test_language.py::test_switch_language": "346bcb10dcd1f2aa73cf4a9a7634255bd201ca5c2ffbb2ef57c57de141593678", -"T3T1_de_test_language.py::test_translations_renders_on_screen": "1fce1554e947b0f54d7052615e763117adff35868f5d968ce35f9e77bbd7a214", +"T3T1_de_test_language.py::test_error_invalid_data_hash": "4f0945c81fadcbaeeb9441ce523da0e0c27923ae56e55690651d70d493e16c59", +"T3T1_de_test_language.py::test_error_invalid_data_length": "198e0263b8e4000935e8af3971c481bbe3a51b359509f64db94a3233759c53b1", +"T3T1_de_test_language.py::test_error_invalid_header_magic": "198e0263b8e4000935e8af3971c481bbe3a51b359509f64db94a3233759c53b1", +"T3T1_de_test_language.py::test_error_invalid_signature": "198e0263b8e4000935e8af3971c481bbe3a51b359509f64db94a3233759c53b1", +"T3T1_de_test_language.py::test_error_too_long": "198e0263b8e4000935e8af3971c481bbe3a51b359509f64db94a3233759c53b1", +"T3T1_de_test_language.py::test_error_version_mismatch": "198e0263b8e4000935e8af3971c481bbe3a51b359509f64db94a3233759c53b1", +"T3T1_de_test_language.py::test_full_language_change[cs]": "99bbae113779e13fa50719e868c7065a2faded854991ef81152b746ecd46027a", +"T3T1_de_test_language.py::test_full_language_change[de]": "8bc1f2dbbc936fc14cdc17d3a4b436e480571a4c32f753cae1469e9fe7311a57", +"T3T1_de_test_language.py::test_full_language_change[en]": "8e59c77356e1e2f3d23a7af28698e46d71b1bebbb50c45285f637b64e9f2217b", +"T3T1_de_test_language.py::test_full_language_change[es]": "5556cfc0950148b83822027738a36e64ac102129a4a959e8e720233d7bbb7c49", +"T3T1_de_test_language.py::test_full_language_change[fr]": "c4265b9265c62d1710df0d1af1e60ab229b41c257f356d745bf539c0858a3999", +"T3T1_de_test_language.py::test_header_trailing_data": "d7788f6e37d0ef173c95ffb078417330927be945c456bd6a2e9a8cc10de28a67", +"T3T1_de_test_language.py::test_language_is_removed_after_wipe": "ab0f8145426c264f5fa02b94ff26ed6ec13bc20473827249a137a61d7c18ea6e", +"T3T1_de_test_language.py::test_reject_update": "65556888ba29b4405a8dbcff52f9ee24dbc80b7feb3a8c2de4a46dbe2438b140", +"T3T1_de_test_language.py::test_silent_first_install[False-False]": "f7297f0fb710f8e7a72195197434eae6efcbb4fbc5d060840247c4f6ca5ecfcf", +"T3T1_de_test_language.py::test_silent_first_install[None-False]": "f7297f0fb710f8e7a72195197434eae6efcbb4fbc5d060840247c4f6ca5ecfcf", +"T3T1_de_test_language.py::test_silent_first_install[True-True]": "bae0623b7cc2e6bef6206ae625a70a52ebe76fef254b0e11a532606cbd2b0bff", +"T3T1_de_test_language.py::test_switch_from_english[None]": "77087ff4ab3d053e8827de27e10d3ef96b5db0a38ddfcb90ba5d3c4d2088f91e", +"T3T1_de_test_language.py::test_switch_from_english[True]": "77087ff4ab3d053e8827de27e10d3ef96b5db0a38ddfcb90ba5d3c4d2088f91e", +"T3T1_de_test_language.py::test_switch_from_english_not_silent": "0d70606aa655ae7145492ff004a2e91ffab978870a158b7b7c6413be13da584c", +"T3T1_de_test_language.py::test_switch_language": "231449f3ec000d8d90a71ca5eb3c03e2d02cbccbfd478a1ae7b23332679b32ee", +"T3T1_de_test_language.py::test_translations_renders_on_screen": "af701bf25525c4018716cab3381179f7f771aedbd42d9c0dc7698b67056887a5", "T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg": "0b629b05505268d480175725af79b272ba59474b0df6df659253a1ee1287c15b", "T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", "T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", @@ -18149,40 +18149,40 @@ "T3T1_de_test_msg_applysettings.py::test_experimental_features": "647c48e563f037b79a1ceee522128e2c891b9368d7439427f9375d3f276fdd34", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "1a665973fa452a0d05ced007179fa7d2effa8e1abbda4460eb4678b99909997d", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "707f4f407445d87d4b5d99ed15a2443fa2ade9fac2ad90c2afbd9bd8b994d595", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a5b672e4f27909e6863093a30ea96030a79fe51fa2b59955593c12635e29f0d8", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "a3e25f476fc8f91bf8352b6e8ded0d3dac3f1d78d4478c372cc016a2742d73f8", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "33eb619f2ecc86fb389833a570b7fb465c77515e3eeb7b336a3321143ecf9f12", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "25363b697504c00524ff045dd8c4b99538a74c68a462a35a2b5192b39bcf26da", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "0bfd2be9ce2e2003e55e15a650ccf6350aa7d8a8b88e212c9fb29bda047d7d46", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b9afc6c535806ebce0a0ece0e1399ce109808e117d48646770b06d9097cc2351", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "bfd7418dd386372eabc713966271dadf6e3142628dab8628263d9559cf881093", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "47478d72725f206ec8d3586fc7f4713c8ae52b00a7587f9225ece9ad78725358", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "acae760f37f32f3ce02c4fd124a549b9cfee0ac8aa71964d504da45368b16e21", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "19cd745982c27da753ab8e2534851bc115f4c7339ea671102afb6325b59a0be4", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "9480625044a26994db486fc8b8faf99d6d14a8abddeb8be5a3239b48553e36d7", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "028accfbcfd411e5796fba42f0bca1fff511cba275199b8decea1f9ae4415cf7", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a99db48f5999cf5b780bb7a4091387c7b500de5a72981f12c81622dd33721037", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "90d56c3b300cd07b950579188fb9d408df8a32c82f77dad20c683915d75ac189", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "c2011cf42c3860a2cd5517dd8604a970f0d31e53e51940376a5711102888f51b", "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "46a0aaa1de9d5768ec769aa75c050cc6c3f7f037b54d191336ccdb52b12d716a", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "3c27d51b28767f7ef347d31c482c4cb1a3a0e857f45d2e249ba59767d8622d9a", "T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "14ae7320b9d774c7bd3c5763ba5cf7e016c553ab2000f4dce786984cd24d46f8", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "7f63bef9fa7f66b465e5e44bc67da0bd4c3dcdb8017d203178063e5c726af859", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "e6a54d638aa25f453abdf38010d281a1efbe36703913272e4af582d94981e0ba", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "199caf405a161784c815eb88880517bc50087990926fa5a798b1dfed46165577", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c322136ccd06eabb0414a9dcd53b83c816850ac1e41accee72a04a804735a917", -"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ca090729acaf64bc3ff870edc3f96b7d951b06c8cfcb738fd0affcba7a27f731", +"T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "198be49d470f49b34c9e27008f3c25278b72d49106e6d34bbd05b24132c05e9a", "T3T1_de_test_msg_changepin_t2.py::test_change_failed": "5f74ac63ce5285be5f34c6f2dd27419408c82d9ddd881ba35f9653c231e36e7a", "T3T1_de_test_msg_changepin_t2.py::test_change_invalid_current": "39586d549775e5f70e69022ab4e4671e21378767b2636eb37830c8bc6facb930", -"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "f76b5017e49d8f57b6abb3400b28c9d6e08cf2d1a9b8b689312395cb7394db38", +"T3T1_de_test_msg_changepin_t2.py::test_change_pin": "a82af54fa18329dc43c93d99e72d5516639df773f49be6d11ef806dd62ba7242", "T3T1_de_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "efa912893b7dc06358d6ed480cde3299d5c8631ffef0c668c74d75dc2a5b0d22", -"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "948c47050c0b66b7503fc5583d2cc364a6028a0b73e4ffb73cc1f54c9b96a31a", +"T3T1_de_test_msg_changepin_t2.py::test_remove_pin": "017034e61e6872f267ab031df6f858c75ca5a85fce9428630be89f2996cc1a25", "T3T1_de_test_msg_changepin_t2.py::test_set_failed": "3f8b99be1bedfb6f469e3412e6c6dc28ab01ddb54c14d318fa8de5c25223d579", -"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "34ef9a4abd36a0ea21acc87f6712e31200ef3ead52e6b59e559d02589a39bd19", +"T3T1_de_test_msg_changepin_t2.py::test_set_pin": "c26019a23456522d7ff39e2ecd80f345013a3dbcdfe69b9062389d66547a69fa", "T3T1_de_test_msg_loaddevice.py::test_load_device_1": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", "T3T1_de_test_msg_loaddevice.py::test_load_device_2": "bcc375efcf02e45ec7ad8b97fdd2611360542381e6b5ecf087c66a5d6eb155ce", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", "T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "fd5097fe0d02cb6d95eaa980b68f8a714069cdd7d98d0a354e0f013455793b6b", "T3T1_de_test_msg_ping.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", -"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "b72176473ecb6213e331528b2624a3fabc5ed8e669a73b4cd25ba58232365984", -"T3T1_de_test_msg_sd_protect.py::test_refresh": "f9335bfc0cc27036a247e9e898a0c984a8e9aa34a90bbede111221ba4ef1b284", -"T3T1_de_test_msg_sd_protect.py::test_wipe": "93cdc75a6112304054f645d19c0ef17fc32bd2f1e3abf7b2b90a3d204c72a328", +"T3T1_de_test_msg_sd_protect.py::test_enable_disable": "440ffae3947d0d08480b818a30ba631dcfe454a92f304a3d82735034ae0d6570", +"T3T1_de_test_msg_sd_protect.py::test_refresh": "324fffc360acc54078865fec82f2f0b83dd4985cb45d03feb0a050e57190bab5", +"T3T1_de_test_msg_sd_protect.py::test_wipe": "479cf95d2085e797b3fc4e048444e25b2ed4f0a3d3b29008b8417232646953f4", "T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "9ca49844a75ac43f361232a76fe360f5ec1652a05f6c427f35b687798151b102", "T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "b74617a1a728933e965d6964b5502be7b3ca9a3227d23623ad07a2ed18eb9117", -"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "3794acd5407cac3195a9462d63fd1d4510a4a6e4214de0eab5d04a07caa367d9", +"T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "7c8b3639f4897e8a96b29b889ab6e3746e852b3a48cb2b0618629cfa47487f6a", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", "T3T1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", @@ -18194,7 +18194,7 @@ "T3T1_de_test_pin.py::test_incorrect_pin_t2": "583e5b759fe89de3e4011c1861f515526ebaa95c421fdb64ae50a749839e9dee", "T3T1_de_test_pin.py::test_no_protection": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_protection_levels.py::test_apply_settings": "1e699c98657b790fea30c938a23064f7bc935344b6820d3d4f164fd48282b9c4", -"T3T1_de_test_protection_levels.py::test_change_pin_t2": "541a8bb46980d1532ec772a7988dcbf7457fb7976ee27a237d0fb8a546a02ee2", +"T3T1_de_test_protection_levels.py::test_change_pin_t2": "cbd0dde18be29701418dbe98d83f27e66432d5a29903fea2292e4c1976a746bc", "T3T1_de_test_protection_levels.py::test_get_address": "9205f3ecfd1c4f38f7f5fdca932bf1c86aec98381d8d271eec856a7fa6b2ec28", "T3T1_de_test_protection_levels.py::test_get_entropy": "eb0779631d867376a3a73c91f61bc8aba22e6d6ca8197be2d248e85c7b9343a4", "T3T1_de_test_protection_levels.py::test_get_public_key": "9205f3ecfd1c4f38f7f5fdca932bf1c86aec98381d8d271eec856a7fa6b2ec28", @@ -18206,15 +18206,15 @@ "T3T1_de_test_protection_levels.py::test_sign_message": "869cf263ea29b15d2157a2c481ed4a0e3ffcec28d1d46f191364808f989052a5", "T3T1_de_test_protection_levels.py::test_signtx": "76042a712f97da440ecbabf7e0288dbb59093b8e6709b3e34537ebd1d3a2ab36", "T3T1_de_test_protection_levels.py::test_unlocked": "47f6e4a3a24563faff2e25b3b28377298806494cdd8b9e90f2f3fc144baf9473", -"T3T1_de_test_protection_levels.py::test_verify_message_t2": "bf13077ecdef34ece8b1369b443d4690fdb254c80aabea9a17ad716569331f7f", +"T3T1_de_test_protection_levels.py::test_verify_message_t2": "a35b3bc3572529dff2fbc9c2fb6d7eaa5bedd362330ceebffdd042bffa2524c1", "T3T1_de_test_protection_levels.py::test_wipe_device": "ebb357b41fbdd0d78491a5864c12f347bea2c08f1b513caf30c45f6e612f2883", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "f4cc98eb442303581db5263cd2f55ce99b24ed33809261b964e9861c38dfb16c", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "dc4ae69940e8287ae558f9ea0a3351a1ea65b5fc50f74926ed6d857883273baf", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ef4c2d9d1837f4228e8cbcb9f441da062e135c4be39dab6e85a62eaf393bbdb7", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "787d2de8126ec4c1ac05db5df72e96c109210b1b88f650e6c42a68899159755d", -"T3T1_de_test_sdcard.py::test_sd_format": "6f882ef6d4a21ecf70c233e71fb27ec4ea9964bc8ef59ace882849951c8d15ce", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "5beb24cac8da8ba6320afc9c661a678402ef94d0b6d8ee541b1c4881cc5ab84e", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "2f7027733595b927fa81a3b9b960e56ddfdf4df1bc39c3c47f2b87b24f675e32", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "95c5f747d17372d4624b3cf9c6866e13ad4475b63c1afbe0d28600ae84884ace", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1a66fb55615258f7657f8f91f5ebfb0efa844c30a3cd10019212d7e393067bd3", +"T3T1_de_test_sdcard.py::test_sd_format": "deadd27fee071017c0cc6e1ef67f8b7cffe94502daa8168b042d1301175477b5", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", -"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "0787419abb95fdb661396fbcf88eefb26872a5aa70261f8dd928021bb52f7b73", +"T3T1_de_test_sdcard.py::test_sd_protect_unlock": "1cb949fd3c8d1b1169732dd79133fc25aec82caa6baf3cc54a585181cf825cf0", "T3T1_de_test_session.py::test_cannot_resume_ended_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_clear_session": "3a45ce701d52d3e326de9e5999d755ef4a6da82008183153b9bdeb064a8fd772", "T3T1_de_test_session.py::test_derive_cardano_empty_session": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -18236,8 +18236,8 @@ "T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "77e570ab1eb2d498b8896bd3beff1350e522fbc035939e57300a209bf5feafd2", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d13ed8c06e93d53ec52f740580c63688432d60fa00bde7afc0e3a9060b8758ea", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "f6b2dfdb708c189e779bde5b30a628debe1803003f8e8b2a7cd5f0ede4f7e72a", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "cf70c477688bed0fb691985b92dce65e32c186efb438ad4cb91739a74ebb3dfd", -"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "6c399e3fa15ea50630cb2374ca1277aea44c5d6474537b6c1c60fa445c10361f", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "23fe131afb9b0010b4c39f56e738639e552d463fc273ff745146bdaeaab3a47e", +"T3T1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "8d06c95e5d73e2cd8df44d8c942daff358f81a4c91ea4ace6d9e49a021d5d50f", "T3T1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "ce63467bf1fda61b8f357fd195c414ca3dd92c3b0dcf753ca4c190ca4f99475d", "T3T1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "be48d5330379392bff7a544f38e11a84cd0737b2ebac32f9e74a927c3d4c8551", @@ -18266,8 +18266,8 @@ "T3T1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "910bd18971e73c5192c9fd442c4ccb7f700d1178c778c1b214d3882d6451ba24", "T3T1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "eee28333f3f0a427906b6407b4b469f72963fa5b8a506accb388a0fec0274add", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "fc1a1d0ec1812df00840ab18e3f6e633f9fb03cd7637a229670473a1baae1933", -"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "6d574f6b41535ef66e41552f031375798ecda7b17b9b9d3ac6afaf842d70c581", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "576a67fd739c3e4740d6a274846c4cba88de5981cf2a8d0c28dba5432a78dd10", +"T3T1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "071b1a853f18a83ffcddbd646c108495fb586d363e70ccf01297dc75370c7bb4", "T3T1_en_binance-test_get_public_key.py::test_binance_get_public_key": "7953161210bd9e319ee745f0328924b2dc852656a116e40b12cc8d04a76b0d76", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4a72c94add77a970ddbe515e4a29bee12761fe70fa4aeecbe729b2f4d53e71c9", "T3T1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "9299697ba1cf7df6ae9e0f9fdc94983c2bc51813dbe72db41888e22a7e42df9f", @@ -18401,14 +18401,14 @@ "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "6d27da7bb7f77bd8bb7323467b7dc09dca91bdf5553d45d6958dc1347e0a22f4", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "784a143cfd6e5cc4e3151375f273b56f1ee89a7a22ddcd9f018cc42fe55e9bdc", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "7f356eea045b1ef5dae3cbd91649c56aba7fe6492c356667a44f1f95509bb6c5", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "5dce68160a75682417daff0c80871691a43d8fc4144e901f75b21401c204daa5", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "8d494805eb068f5d5db028ef69044edd1c7fcb75e7bdec603fe46c8a7db5ea20", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "ed7ab1d4e6f561d414fb8e2ee5962015750c5c5a4cb362e13ec4ca7200ae83c3", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "bd8d7b809d129fad49bf1574e39461a654a64bc0f6c9d5e92097e6d7bffc464b", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d3663a25de91063a0a64e315627fd187622355cc619bbdedd6badf593ef777cd", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "3e7e43e45eed9097cb46fc25439845832b8d3ccb15661abca2182c2c50480e99", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "97b0161e0a3a81c4f9353ac5219736ac91738d68745cd10b646e4afac2140560", -"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "6d5db4455b38c01e6f823617bb451ec1dd43449c7cbab3ab6a4735e0cfdf834d", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "e5670863ce9ab0982a7353a737671245a589a2225091d8d88147313e8f127ff1", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ba134d7363d8450106991bbe089c04e5920029373b64dbb00a3bdd30cfc0d171", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "fbd1694ee6d3f35c3339f600ace0aa08c739d892e3214c7a1385ba847ae8f3d0", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "8dcf05ba868c8b76387e7b48ce8a92aa1cf5009678db51e6ffde1aa2f2e2bcce", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "a2c7f071a9450e43255fccd6686567a72a15a6129b8bf201ef26f007b469df19", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "8b0927dd7ffd964ae6b7b3e9a337d0b12f9a06deb2d242ebe556a0dc813c6ef7", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "ddd44d5e124254d910cbf751cf68dcd19322eea3e8a1bec3177e04ab24a0a515", +"T3T1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "ae54e70d9f8864fc3305468fab487b44515b581d3a6500dc517731d6c73fd1c9", "T3T1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "8d2b8d06f6f239c5c11e64140db451b50cdee0b0a1cccb9efa10a1880e0cd423", @@ -18695,21 +18695,21 @@ "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "30c3410fb22574628e3e9834e48fe76639e017a5299098dc312a004d7d34d763", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "7888308bdc23d36a43dbaaa00b1ff636c977f1c4b9a954c3a546025b3f70c1d8", "T3T1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "76c065876ad73bfbad6aa7de38e7034ffe1b6636597e884eb34956db23d55d7e", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "f867f9be49dd59215512a2ebd9d4027c0af8c3bd7c0af44ce129331d84fccebb", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "ec5900f75ee8be88c5c3da133ac1f2f71f6085ca19d9e60c7f94349372e3b626", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "b42b4053e7dfae91d8fceda38b64dd47ef8c66c661f72031e45a0f0fad4e0309", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "09b56c382bf64e542d8d4558bcf298a225007ce921792460032c6c8aadd4f3eb", -"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "01f281ea61bb46e25ecdd85b39ae44bc84e99c3fcabb8b05a361870994132741", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "ea78a829fdfd25f9033583ea42df9e9b078f99b3175b8f66b7e28dfe32b7cb99", -"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "06d817fc17a70020c335096b9aa6f56aa126fedce77237e5c223a66c960d089b", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "c5380a33de3eb47abd2c55495be97fd5d9cf31b7a6c2deba3b96451c6ab979a1", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "03d31955a951caeffafd80b998370725dbb1d7c6580e9284884f426a1ea0909c", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "6ca2c2097728581e5871aaf2a3d2e8c20479c242247b7a05d1bd559251eff770", -"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "ecce49fa4a06f9ac2c57d5449814f583db925c679a1a18dfd3a92c7ea5032e2e", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "7903093c79948dbb7c8e19bf845d68f509edc673189ad28c64e3ca44b4c105f8", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "9e57c0c90fa44bcbdd3ef33b80cd91e843d5eeab8799efa4d4edf9b469b60397", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "081457ab2943e9cd8ea47c11762347f2574ca830c742c05a932e5b2f6a3c26eb", -"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "dc1855315e8d72a146fe88fb92a86e7be24beb180f9d0d36615693d0e10c9e06", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_grs": "2a85ed5863f372d95db43cd3beebbdb136ba1d95011ae18b8e06a785a9be6684", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_long": "84d5bca5fa156b9e845edc73f61de755393bfdc890df9c49b4ae11c89c133042", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_testnet": "5805e70d33ecbf819ef8d1d33783b90139e0a1602dcbaf617927e55be342b3bf", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify": "e84ce67504d96897706ad938f9c11396b7fdf3c254a47f713ae1404ba5eb1f6f", +"T3T1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "2c677713cc31ed08aadb3b49426d20917fe634e4de1b1d9e6f0fca5f94c34bae", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "115b11421cf0dacca1171cc9d53c4038f78f609d3ff686ce280284084bd46090", +"T3T1_en_bitcoin-test_verifymessage.py::test_verify_utf": "333e0107c87e3815b6442a111c68be0ae29bd25ae0360f2737c3dcbc9a5bdd91", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "a0d145805a4d47b34b7d88abc3bf37e61338bceb6d1ad641604d581166fc42c8", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "c91cc03986d16b682f4ae701b2c129d2b1364fea28102386341b3f46e249e1ff", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "fdb5ed9c64ab8763133258403ef692b01649f72c6433bd9537b9ab60478c20bd", +"T3T1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "d4434dbd762e7f8d457bd42cb5fe61f8e3530cde96f5c014476e1546618dc0b1", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "75ae709cf4cc704e30a169913112ad66221d1c15446303fd402a70d37da9bf18", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "83c4b120b8e3e55ad4644d820c1d0b60447dcd651e0b809d090b4add83a2a101", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "3815f5123e1bfac7d631ccfe3a8b3ef6e53edda7398bd5e5aa7dc45ba9682955", +"T3T1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "bf3999ea929318fc6595ee1a60b9b831fb47b51b02bffc1c4fc1c0ca6e11a785", "T3T1_en_bitcoin-test_zcash.py::test_external_presigned": "ea19880720b16fe8a730e908b2abfb34cf507940c156e882853a7632b842b329", "T3T1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "923baa34b30f0945ea335c606b92732c12ea0ab071ac1173c968650b5ae8ec92", "T3T1_en_bitcoin-test_zcash.py::test_spend_old_versions": "e203217c97bb5fb0c415d2c2f6a85fb2e8f7e65298b94baa6e4494698291a7ba", @@ -19092,12 +19092,12 @@ "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "26c67def8bb8481782d005a4bd8195866814ee3e339333171d16b6d43e8fb4e8", "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "fe2e4d2abecea5d30cccc1a1cb508c2302200fab6f82a4f08354ebeb65e76260", "T3T1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "c8d95230187edc6df2622bff27deb0f93d7b290e7ca66221e449fc7fa4530e6f", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8cad10c0261f4463e2dd41589c99e355c48cdf641cfd36701b91347e0dec24e1", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7f723a02146042be5d1a7c95fdf6d4fc656cceb1a4a97b93a55e7dd4121ac148", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "9a106d588cce6eff26b1e2b44bb79fa7e53e89da3d169eba2f52c6d29d242350", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e908b4d6f03e50b92fd157530f4ae98a2e797c3c856c989d80e486705d4cbadd", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "db07246529eea59f4a824ab0e49b7ea39968fcc0e443e0d41ef41534c10003dc", -"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "8949208a964ab06469a92679b1eb2d2affa217a34f2386fce34fd06a9edc3583", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "7939431dca0624f16803e3ad4b72bf4f64b90e9ddf7c570480d7e16ee45da471", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7850ca4411a34c4bd36b4c2346e0156a92cf1bcc22a21d4c1cb56ef7a6dfb7d8", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "40ff65f5d8b1f2fbd5c81efed580de9ab2b76ec502b00f1722aee6b3d9f501c1", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a417fe6da42f974f65307e416c133898769742f550ad8c5f5b3808430668f0e8", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "56a69125d4dabd173efe7d9806cc59842cabf7793f9af0b12eaa14ee6402d1e7", +"T3T1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "a76fd4710946db89af0a81faedbbbeffbe344e8bc56bae57b93cda934fafaa7e", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", @@ -19122,15 +19122,15 @@ "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "7f6d31682fa3141b398ee933672728bf591075a3f6bf4b9a5d15534e0e3928ce", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "1931c1c99d277be18489656119f1e62abfce15bb1747f9d632650135c4fcc874", "T3T1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "b1a764be825fdf773501aa301c4c9a525b8260bc532274b467cd0ce176e9ce23", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "e2ef3f20ca938f6927e578c27a7a5582bafc71fbbbbb0a2663693f2dc2b34d1a", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "4c83de206f6be0c2138a5441f0432943cbd8e3d0855809d898ea24c5252b8801", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "0f2b0c8928a8832dc6ec3e13ff66f1466cf36be9d031e5f3ac4ea945640a6614", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "23f58962ca08e7fc58c4e37053fd2164a62ababe0a48db1b21cc589599369c72", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "a2d81760ea60892bc1e90ab20cccd1af2b47eed3c21255233ce2cc5bac367009", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "d49d007222f0fbfe4a16e29b770c69d90c4dabfe56379f72e9ab23176f455cfb", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "65427b7647e1655c4dbc7a29f67e33a8f49a6e02f75408ad5b4b1ce3d47d27b7", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "47e798a9d824029be9b6fc249ec884751e8782f3192f7b0969c7340b82c2ae1a", -"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "e2ef3f20ca938f6927e578c27a7a5582bafc71fbbbbb0a2663693f2dc2b34d1a", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "e0d45bed5a75337e85b0e34607a4e8ce0793276639dec49a539755c0803a1359", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "c6d5dfae3433a174f43e69bab585c399efa6605134bc601199a74167f79863f6", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "e856083380145db6a9366d8e4b1a19bc58f57ba3ecc75966bc5163e85668c526", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2e30603900eaa01180eb74731fb25865e222cf1c6d51e7c232b0b04dad030d17", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "697abeeccea75c6925760b2fb6228c335e7df3defba58882f18d2dc744ad9d4c", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "a131445af9e72549bbf74cab9742e4e4c02c462ab230f5aa3d67a5afebbb2f6d", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "3575019909d7c8b10645e8dade7f30551a77e9af3560e07169a50fe62e3707a4", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "6b233a31f5d1be062072e05a8b4e6fdcb8a2d3c2014f15650338ef68dafe9b35", +"T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "e0d45bed5a75337e85b0e34607a4e8ce0793276639dec49a539755c0803a1359", "T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9afdd28b61ba5366056e0af40147beeea3a36d90bffcf00a5f9c6cbed0c1f4fc", "T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19234,69 +19234,69 @@ "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "515d1e0be26d82162ee645c3a0b2d4036bb4c00b2ad0b053fd21709c10c85aa3", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "439a5febe57591d1660f61a18a36fed8f62d8ed6fb4bc4b5971fef9c9e3c9cbe", "T3T1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "1cb6b195913712ceefcf487c9ee80fbc869633fd25bc5056dd28bf4981b6d9ad", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "461436e422350e8368d9ed0e4e8253b8ba3ed2e3eb63a96be5ad45707ae84da6", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "099d48ea1fe1ec96a1f2787dde7b6c1f7bf18c36f98877040005015c1c9c63ea", -"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "e842c0dc4d53e8873beb703f7e1e2a9a5ac5d752c93b6c6a46cb82e9d2c4baf5", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "75a29143f1c6c6be1e833e3d6ae8202b16b0eecd0cf51ef71ae74adaf8a52478", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "7dc62a6ea5579922c68dd8a212ba3688d4ca3be6ea91315ec9c4edf64511244b", +"T3T1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "837350e6eec7a3ace1222bd711952079f66ac1f0976885ea6dffbfddf0160e45", "T3T1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "5341b7e23f17727e4235dc08ca955bb17ea29357f16ea724df1bb6f62ec77212", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d082da29d1549c95ef2d370f84bf69ecc6146b18a6a80e5981a6397726e1a565", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e3eb5dd4ec41a52c26f460fa3b2c3e4f99404318220813575b4aaf3590481988", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b0dd8fd55197927f0ea0184c9fc6f802cac5cc1f7b6d129bd04fdcbb20aff7dc", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0714a5ef3e24daf6ec0820869e46e96017d1b0f8a0c24e7877e39603e364a806", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "66b1225d11b1bc7bf84343f7975d8bf7d091b1b36ff6776bdd73b7bf1558cc07", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bd7a32c2a758acce0115d56a0a3cf218fde8acbc809a642cade34562f237ad74", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "2cb4f72325e0854502035e3e6f97069d6fe96374d10145692495d0847104bf6a", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "587d9959f6a587ad2c129e4cc951d7b48f35b696c95f4934c40a9569896f4285", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "7401444a9fb1614a1bffde3b8fe8bb5c3f004061f414b2f8f0c5becf64b32951", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3b39a65295db84fd63f2e42b3c9cb52f06a5c7c28fdd16a503834a0e92cb10a6", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "8378637d3af407cc237508271756bcf103232d9ee37428b5cd59c79e5fcd0900", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "16ebfc05f69012b2a8dc5f91246adfeb03bde78d3751d0d1f8d109e962060e23", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e0233367b7060da2a89e646531fd03241911867e9881df24f53be13e8a3904c6", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4f02e0f9be13b72a927ed33d10eebe4ab221c2f6cac5e41d9af8d1b14caef05f", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "29014d4d6d525aae6d28b74b2a8e9f809f1358569affbc8f32b780630d5ab8be", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "2cf247d4f475296c559d4eccedca66902e057239bb1bc49dfe8c4be1332b2f53", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "ca14e5378a5072213f230da0ba1273d4dca81ae1e2622360f7b3bafa79f15235", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2fbf317ad199a7654247193f6d02d6d654edf3ff0da0a4971e1bcbd3e9c1c747", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "100dc7d309346d79bbb8c1286f6801195065818f1e50b4f532ebb54f84c4c780", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c279a1d886c6434ef01a2a7985854d23dd67069e9e70d76b15eda532114995c0", "T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "efcc422d12b12ce10863aad4ddd4a84d457c81d16fc0ac2b22d58ca77c87b406", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "63f2f13d91e77fa229f98d91cbe0157717fad49758dd5bb9cdebffb36fc58699", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9e4ffd7ffc30c76a042d67a07b011cf18ea1d7c57e3ee5209687d6606a27dafc", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c53e4bc9598f7001b18b80d0aecebdb89ee6a2db0620d85e163f86209826e3f4", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1ad1be612b394c8852fd60a5bbec0c6887d817c40402188947b642c18b4ac23d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "00f461e6980f4ca1ae208094b68989ef16489793312cf586201c899d1ce7ba41", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c75ee88df23821a939a08961f514ee0ccb8c9a1beb736af3934a4912560a3cf5", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9d949ce33e245c536111a1ecf1dd7143ac13e7ecee106b3d2f05637da9cc2b2a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1735c741d96f7faa19b06f2bd4c51c01d513e1854677c6956b160b33d5e1dd5e", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ba0c77f7cccc8a67f6453f9bca618683beaa732435e171b25037cd2befb5e1ff", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8fd1e3b92bdb42c788b2f55120f4002554949524d04306e3b0c69a48c7ee781a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "6fb1403f43f18903c39e47777c7178894ff2ceff55c256b4584d24a139c9209a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "77f3994566cdf2c41eff9cd9b1ac4d20f546bb316750cedbc552122c9b099739", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3a117fdf5f215be7334cae2b81fe65142918b846ce03a614dc5fcb35c7cb433e", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "037e97506e4a21d0cf0d1a4eace553d727cfc072e737d9042e975f2668bd9a35", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7fa621d04137f1b4d14a7f9d3231ad40a65945aebad12c76ee0e80a01b34b94f", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f8fff0baab8de0c2097c69e505eba8da6f695b1b0d8318ab85c909b3d3e6ebf5", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "27b0c74c9648425a6c073a852ff065daf16cae9bb0a3738a71f051f86da7d44d", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "201744eb6f5bbd91fef8778f6403408a2c0ac125aca704962c5c12efa2eba5c7", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "50d277b139cc4d46eebb415e073a5ce24152bcb13a804381912b3b6e4d4fe31a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "464551fee3c484123bf375913453bdbdeba8042656ac956d8d609258783d61f1", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "89942fffdb930ed8e0b90c8d6fb7949cd63d5d61c6e67d02ae2733783ae37be2", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "91f159985ff46c59d9c3c86475d1a764c76f63d000383de86669b071133a4b4a", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "a0bd1f6789ac37d3d6f1e7bccf5229d099c294854c8688190d086b7ccb27f5c0", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f896928b3b1d4c6d70b82d29c8ac05f1a3347611f66fc4c2c152281fc3642afc", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "2d85200943d3412216772c6c5a5e39bee44e5900246aaacc4edb901b67774bb7", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a35c2c696076d5ef1fd74d475dc6f16a39611a2df7f2997d99d2264783f64020", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2d8aa75244426465af0897f79289dacd1feb144f52ce8963ba9d7632bd8ee234", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dab9f5dbc939a70d74d7cf892c8765268c7b044d2a982aac161c0d8d428e24e0", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "bc83b38956735c0f031c6033cad48b43c040154e49a2d53a1e31217f9effb4e1", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "db10660c23b501d20c2c7640b564758b33c9d3eedbea8193d1f5937cf425153d", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7be5debd87bc75397b8dd6cdbb241287a3596260d4afd988cdd242e681c2f605", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b1b245d7f8b9b6b37fc89f486e5769bcde984ed55e58565295c0026ffdd5c0bb", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "98fbf4f03fcac8bd3a429e443033f46498f903f4b010c4ba5a56224e815341c4", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "954abdea6bd7631bffdfa93d1129409adedb07cc9069d42198ec74ca617b6bb9", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8d7f2ec0d11c1ec34059633a59bc1a9f9f7f3527e88255e305cbba953ab9e004", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "40926ad33a80518e4df64768211102181facb3d844975fee132e18818446b925", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5aea4645bf5f7207de95d78a19c4888c82d31cbe6feb0003945a74b92567e01f", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "9af37ae80356dc7de6a5eb6c7ac7b9e23171c4e37f58a60927be0120c7b0dae4", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4b2f92655c3ddd6d830b994e2665e5e35b179a5e3973c72ba00ce16085e6bb4f", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "bd1af0c41f234b34eac2804f917c8270cb3d7004f1459e5a492aa7f8d4b5da11", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ddd2faa77f49713c5acde3a97479d2b7a274317ddebc3671efe22e2750f37861", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4e3fe2f8d6e83b60edb5361fd0e69fdcafedcb99e582cdd8d7f352ee9756357e", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "459b1ba5c8a2040c6629f2874d94fc25763f02e05f0840329d8caec95c4ed8eb", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a4b51b9d7f1aedb818565fd31bfae1614a5e9f6897e5a9c40fbcaac5cb476e82", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8fc050d6fdd2d3b37d07c46c884605b875fd0f0a7a6ff9dd9ba0fcaa56a18ee9", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ec64c8c0cde4aafdb1d5b83232c47e33620f45bd232a9cc44df4b50f3777936f", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2322c88f05f19d2faa0dff594fd574fbe0a90260d498116edfbb5c282d2e101e", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "6fe22a11fec54327631a72dbb77a50b4752f6bf25c520d4d5e34365d4e0dd1c6", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "00622e0ffe72ece741478546c58108d6f249f7b8a5c8d92dd13df133d74586be", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "dba99be110d2224caadf0fd12824c53b7bff8c2a9eab5f54dabe7b6e57f9d611", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "21b7f87592c9b64a4c09b68e4bc2855a0cb5e31e05a1b73d7f525c535369ae69", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "32ccb3b247b673a3ea2537184b8ac6e0f09b261a5b36c020a9ea7b69dbfddffd", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "61a13248da3ed86a39ce66da8dcd57677d14b142a96f90cb05be6f0a8fed081e", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4bde62b1aaec63eca05b222fdf5446afc3fa152abeee290ab9d1c6f4b1561c71", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "009f4d31a4c23cd611b3aa1b3577e6758a5ab67bf507af2ecffa0526191e177f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "81b9ef3c491de698533eca5e26e417942d03971c547cd9facae540dfad8a8c4f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "1cf51af6c1d26e9acdd8b3412bfec28f632d5a2f24783050b643a6828e9ca74c", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e8731ef439848135680c837b01d7febae17125aaafdc3c6e80381eccf6077695", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "6245868ee2cb75d6bf9910de9f2a9af16810ad1093d3b37de44bbc4c4ec5bd92", -"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ec3a78a4f85e1f13fc8a9eef8dcfc4013e90797482b35a00ea85184f85dc7c3b", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "2242a74d6b8af062d665fef744d8bcba1423455b0bfaaa54c7c28d3289b4cd7f", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "75ea1991cc5a3388afbbe9e5a6eee71ba7b9897273ea00955cd779caa8d7c0ea", +"T3T1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "9b747a75182dd07a4a05178cc0ce59fe11c4bc30558ea0a5649342a017d6909d", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address_other": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "f38b39193d952de59ac6bdde11df58882f85d04ff8c46d79ff775cf8f0de9877", @@ -19387,16 +19387,16 @@ "T3T1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "fb95bdc525d4e779c4534b7687fc3fc2a724f6ccb50df3fcb05effd77c922006", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "f99a927e12f02db00c8656f58a7504b3f8ff12e69569ed313640af1c7d1f8f34", "T3T1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "6e28be07cefb0711c5dcf26ff6ccd427515a2d39ff059dba599c36262a2a4c25", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "e43abf115ae9e3fc1450d8a9815f72c48a9b256cfaffcae8410c87e7fd8e9735", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "ca208edd685f4e8c565a48cdc511f82ca14424de8d7158c662a3d778ed504202", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "2830711d069cae83a7039913949aa313d1e9854f5013508e731fd69bdae19466", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "dcd15f510e2820cb97c43782712e509114769d44c5c228a4d73620dcebb4e718", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "8574fb956bd3581bd9fdaff08258db2ea5fb1510943d2f7a6c5ede4498fc60db", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "7bcc6221994c957c1b247ddcc8e159840387ee5f52f0a2debf3f77d91a31c61f", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "6affdd05bbdd988dda8efdc0f81fa0710bf15918e8cfc3a9e16a1dac8ffb6cbb", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4dfe666d732d3ba8f2d0ff543e5211e4f8803c710e42f8bc478e6e556502ce50", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "1b5809fde034a42d41be4685a8ff5b6ee93d35e68c247694c0f2b1f25fa47b07", -"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "87f4c98f9a91a0b9b695c035ea08f59a63cbcf96255490222334240f3b673f94", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "db7a0a3368aa5002283b80033f5e27fcb62ee55ce88f8a7377615e4f0d6744f5", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "e6ec4e93ccc9f9b6852bbabbb22875d1bb2d5c8b0004799cc9a71741f8a05a86", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a005f2687a2f0af544a05150ecd268a48fd706d9c32fe1539167f6156839d149", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "d78d9ba6608623e4c9a02d2c6af5413e9e151c0047f1a5aeb0b4569979a320f0", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "7fe736b6e0bc199bf32eaa8c518969649ecb20abe23993e7cd412d88b6de3628", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "0b37045803a7173dfd67d8dff930f8e1dd17de1113668ad5c0fe45c335fc5bca", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a7ed2f5747246e87b9e59a6a6dd9121cfac6739e23a323c9db5f07ce3b1f2008", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "699ff52e9ae4ed0d25b24d04f8a6d608b82f6c29835af6c39860b51ccec9567f", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "0710129db85ff5198f0b74488b8175785b525dabda156fbd73ca4631b84b7467", +"T3T1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "23d7e622729e2b2aea1de778da098f445f1174041f20c3bc534f28d3ab86ae18", "T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "d4f360406e36477597b1dee7ced920a9c52d6b1c4730dc0d7e7af25e126aee2f", "T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "f2252a3e9668ced79a2b4ec2447351fa2175a8a6698851d824bf50f9a06c7c9e", "T3T1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "70589e7a3f5f82d302046972a81350c9942b8823c432f3250fd92ba1ecac194e", @@ -19469,22 +19469,22 @@ "T3T1_en_test_language.py::test_error_invalid_signature": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_language.py::test_error_too_long": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_language.py::test_error_version_mismatch": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", -"T3T1_en_test_language.py::test_full_language_change[cs]": "0f96735e9ca4ba6098ff56760d389ecfcc3d7adea2665e3d52a7b7994e0d2d83", -"T3T1_en_test_language.py::test_full_language_change[de]": "bff4d8044ba458ea0551f6510bd7f25cc5c6a8b5996bfff3feeadf0a15fe6f55", +"T3T1_en_test_language.py::test_full_language_change[cs]": "ecb272d3872f983e70e6f57c79b86c5a50a2ca0913f31770092f6cedeec20629", +"T3T1_en_test_language.py::test_full_language_change[de]": "2568edf90637b80af6653ef9ef55f5c485ae21aca780de580c0a1255a420db7d", "T3T1_en_test_language.py::test_full_language_change[en]": "f304aa8bf425d6cfdf8bc90822675834827432f6a1c56389f63385e2fea93462", -"T3T1_en_test_language.py::test_full_language_change[es]": "5012477a8512c1c47e54b390188d80f56caf27f8dc257e29705333c616143b3e", -"T3T1_en_test_language.py::test_full_language_change[fr]": "e3fc549ce03c716f23e22f4b9f9af779562ab5ae1f33bf2ebdc3daae9aa856f3", -"T3T1_en_test_language.py::test_header_trailing_data": "1ef965ac62e3416645da0148ce97cd0eae755e4115e31157bc463ba8c23e163c", -"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "526c9d1f1a71b2b0350cf860345ecee1bd121c38012f4c070ac04ea1f1c5c1fa", +"T3T1_en_test_language.py::test_full_language_change[es]": "5855f72f43ee720566f41735013293b5a54bd3d3fcde4c60ac5c2ad1bcb15b7b", +"T3T1_en_test_language.py::test_full_language_change[fr]": "d5fabec7bd440dbbe8176718aff2fd529204482965fcc25aeabd1c8aa113d253", +"T3T1_en_test_language.py::test_header_trailing_data": "e4bce5be5cf7aad820ca85d7173f57c63f3f7f0793f25c926ce5715cf6b4973c", +"T3T1_en_test_language.py::test_language_is_removed_after_wipe": "ad1df5753dd4d6974eefa15d7548b5fc53c9eeb4347ed6da72c60c6aa9fb98b5", "T3T1_en_test_language.py::test_reject_update": "3edfb420e30cc58fd7e3c26a18b12f2d82544bd0bd6e604f47db6a6ad5748126", -"T3T1_en_test_language.py::test_silent_first_install[False-False]": "cbab9b797d6d021ec5925bf9aa799fc57de8fb5819c60cb2faf70edaf49352aa", -"T3T1_en_test_language.py::test_silent_first_install[None-False]": "cbab9b797d6d021ec5925bf9aa799fc57de8fb5819c60cb2faf70edaf49352aa", -"T3T1_en_test_language.py::test_silent_first_install[True-True]": "2bcff6135427d2d5528b138aefd29c5ef946cb7253c8c2fb3138ee7d496ed233", -"T3T1_en_test_language.py::test_switch_from_english[None]": "a55c76debfa9632fce7906b4b976e7de6156cb0f7a4633e93aba9d26d9df6b2e", -"T3T1_en_test_language.py::test_switch_from_english[True]": "a55c76debfa9632fce7906b4b976e7de6156cb0f7a4633e93aba9d26d9df6b2e", +"T3T1_en_test_language.py::test_silent_first_install[False-False]": "7eee289ed7152f4e41fb2e7e3827d77a97389a05166054eedd4a33021a6a5e34", +"T3T1_en_test_language.py::test_silent_first_install[None-False]": "7eee289ed7152f4e41fb2e7e3827d77a97389a05166054eedd4a33021a6a5e34", +"T3T1_en_test_language.py::test_silent_first_install[True-True]": "1f0a00de9b48a5757010203eb14568540cc529bccfa6b258a7f6e72bc47e8cc0", +"T3T1_en_test_language.py::test_switch_from_english[None]": "aa838ff32eb2ef5f5b47c1a598bd7afd86eabf9a5047b9a8c53e6ef47cf7f42f", +"T3T1_en_test_language.py::test_switch_from_english[True]": "aa838ff32eb2ef5f5b47c1a598bd7afd86eabf9a5047b9a8c53e6ef47cf7f42f", "T3T1_en_test_language.py::test_switch_from_english_not_silent": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_language.py::test_switch_language": "ba498699e59ee218fa4ea4eb8c18ba63fe036cd2e7218dbf12e6512b6ce71ea8", -"T3T1_en_test_language.py::test_translations_renders_on_screen": "b0a8dc19a95d153210ddbf543ce59dadbb0997b8fab9ecc8a6f9f26dd4262ab5", +"T3T1_en_test_language.py::test_switch_language": "92f4975e7e22ec106491fce50efeb326758b3f1e45fc11cb05dfcfc11fc3ec1f", +"T3T1_en_test_language.py::test_translations_renders_on_screen": "baea71b6e9f5a3cd58ccb152e520a962876fc1b0df2ce70159c9913e0bb9e386", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg": "3055ce895541bc5543853d69c7e16b13c22e3f73cd221e438c9c490a0bf89033", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", @@ -19496,40 +19496,40 @@ "T3T1_en_test_msg_applysettings.py::test_experimental_features": "df77985e171a884259a5684f654c5d14c6bc008bd068f5d07cb52f0b056ed252", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "9ac2948f5dc0d41632d5717811add555ed1f5bd5b9670a1296427a23569b8ebb", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "4677bf2151496ceeb89c3d9d2f7627f957416ddba197208bc4ae02d931bd16ca", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "0b50d34323eb9e8759caa525e8e14f88d463aab9e4d5bba74a27981ad58633df", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3282c4677be9fa3c2425f7aa229f597c9a984ea91df83c7a4fe9c116f24d79f8", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e290cecfc5ac6c079c0fe65adbff10dd41b26b4a9e6ab6b9192573419f602088", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "112bb8b6282ea36b9238fef382943b8b8df113daedfdbec81cf7ba3cd3a23558", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "32e618faa53e0b9d56005cfa693faf1ac763987173aea012cc8f671062c78e26", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ff6aef1a7f3de150e2f5e1247107b0a40525a89c75505a8eec9051abb7f71df4", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "fe831da6d8c76ca50416a5d7d57fec0b23ba4d216d375960c076893d921c29f0", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "f5d8efb15dfe2b4542ac65f405fd98ea86359573ed95ac8f7c8dfa9fa7c19dd6", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "f750508e957613f6211afdc80048afed1d160ac4f07e9a20a054d4a2836506a0", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b30e2feb48a369e97c88bcd3a9376a2e5a628fb97f60e31d2b73af1274a06486", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "0cec0f7b5c0716f3bdad9482af316bb088b21b4c05dce8332c9dbca805c809d2", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "cb7d3c4616a6f50eef46e9e381af6d95e94b14fea6d8e038db181cd376a00305", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "3557bcc0bfcf3e451d5d70184dca5c650530d54d902ba90202daaf5c31658d5c", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "5ddf280461559ed09903b1e9ed061452b67939b4d6c3947456a2a371da3eecdf", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "00e79d25f914d8fcdf173e1b8f00c92eb254d6f1ee7db38cb7449b8b07eeb714", "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "6867b3fefe40bbdf848693ad940eb096c9974e57e476f1efa9201c30502ff621", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", "T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "74cb82d9fb2c64db0776745207a28cbd8ae5cfc369834036ee6ff34f029d6a95", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "7112b4525ec62c71b656de67404ca39d20cb74870b50aafaa08caedf57935fdb", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "9ad354ff1eae2748d7900efd602466909ae2bb0895aa83cfa8a61f68e9f2565c", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c1e5b58f031f5951b18ce78d8498822698a3dc123036b3df8e0319400ea90d3d", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "0177323dd22623f82836638798699157b31749d63ebb0e1c160d0f8b31a23b18", -"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b5b69a25f57d8ffcc3437bc3335c9aba0fde3e342bd2cb55fb88dbdd778d793e", +"T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "79ee4198237c0e2d96ea90c8349bb1a0f43445797d8fa64117649860246e88dd", "T3T1_en_test_msg_changepin_t2.py::test_change_failed": "f551d22adf70252a3799fa25dd8e3a5974ec37294a6b13e84a965aa11e0cedf1", "T3T1_en_test_msg_changepin_t2.py::test_change_invalid_current": "1b0800e690fc8ac2928b70de551669c18dc1de84381db40e6872f8906fe08441", -"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "0426066103ecce0aff48ae902ef25a744f9fb141fe2988d2ae08a9e7020f0240", +"T3T1_en_test_msg_changepin_t2.py::test_change_pin": "69b9bd95f9cf2e260fa0ce06e62476dd750707acef0835c167eff852351baa56", "T3T1_en_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "f91581bebc54a9bd1314dcde8875243b791f5cf6daab448018825900b4ee4a99", -"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "ebb5fc37cb46589c4d1ffc3628c75c0060c1566964bc9f2ba1d59e16682c2ee4", +"T3T1_en_test_msg_changepin_t2.py::test_remove_pin": "e16cd5da45ae288296b0a86971bf4715217c6f617a0b075ff01f6df73311280c", "T3T1_en_test_msg_changepin_t2.py::test_set_failed": "8efba7eeda1f478b36a855615587cd429596e1084aca4e3ec2b57d3362391fc3", -"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "793cc361f08cdcbe035955ec2e8792db898a209c22b044d518cb2068be504373", +"T3T1_en_test_msg_changepin_t2.py::test_set_pin": "c3609223d27488c6b2477ae4c8ddb4973a1bf7fdd1aa84530b2718be4ad8f2e8", "T3T1_en_test_msg_loaddevice.py::test_load_device_1": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", "T3T1_en_test_msg_loaddevice.py::test_load_device_2": "684580ad2697540f07f7512b298673ec2d5b75f487b461ab8211d8290fd50262", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", "T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "0a0badd99b7e0be703965afa388edd1ae1b6f3a96fbcedd457a6de699b73c3df", "T3T1_en_test_msg_ping.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", -"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "ef4a453a3b9fea0482efbfe81211d0d144d53ecaa3cda7089dadadd03bfd9d6b", -"T3T1_en_test_msg_sd_protect.py::test_refresh": "030f7ca3d8ed718340b2311f66af1adea2cfc685f6a94ca07abda09f79f7fe5a", -"T3T1_en_test_msg_sd_protect.py::test_wipe": "0a8bcb6567ecbfadb48f0bde53367a383faa6796354fa2de04ede1cc08da64d4", +"T3T1_en_test_msg_sd_protect.py::test_enable_disable": "18e2495ee4cac06d66dcb351fba8ffdb9352f7752f305ae2c357e90cdcdb5401", +"T3T1_en_test_msg_sd_protect.py::test_refresh": "82cb15201bdf6dcc16cc68190b304c74edb4933cca10ac5a2016a460012dd02a", +"T3T1_en_test_msg_sd_protect.py::test_wipe": "1fac3944683e636c54bba28ce8a7fa8d075251ee359858db8f386ca53f63ac08", "T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "2f39eedba0ef8010f232b77606c453e06e63c74a54f08117a60066d64412e589", "T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "8908a0d44786f8d60477d04f54dbdb28a059358bc04f093daf4129c89e6b529b", -"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "147dc4c1c866f310eec397047403a2217abbdd740b4cc70b78466c02d4d6c56e", +"T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "593429d09da223f7d5a98c1f5a04a523c2ca58fbde4348179da8f2cfcae247ab", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", "T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", @@ -19541,7 +19541,7 @@ "T3T1_en_test_pin.py::test_incorrect_pin_t2": "8abd9089996ddeff3814670b600e0dc4f62d70b5648b48ca5ec0e4bd52bfbd73", "T3T1_en_test_pin.py::test_no_protection": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_protection_levels.py::test_apply_settings": "c0a5c599204244ad62a1ef3d6e6552b60856b46886b0ecb6496bb7b745077617", -"T3T1_en_test_protection_levels.py::test_change_pin_t2": "ca3202ea619066ee6fed6bcc57b1cb5a645c9bd0da55f7d8cff6b2400bb3d02f", +"T3T1_en_test_protection_levels.py::test_change_pin_t2": "b772c1bde4a3f9b17e2b50df4fd7f00543cfbce829543ced52c6186e8133fc8d", "T3T1_en_test_protection_levels.py::test_get_address": "62ac6965d10de96ad14749a061768db346a7f3430014d22ddd0d941ae0cad6f2", "T3T1_en_test_protection_levels.py::test_get_entropy": "e926dbd19f8f717652afc4b2569882e3ee04de90e8df2a2d743c54295f943b25", "T3T1_en_test_protection_levels.py::test_get_public_key": "62ac6965d10de96ad14749a061768db346a7f3430014d22ddd0d941ae0cad6f2", @@ -19553,15 +19553,15 @@ "T3T1_en_test_protection_levels.py::test_sign_message": "6e3cc9a3600dc290d2637ba28cf966d9f063114038e9c1365aaf452ed3663d37", "T3T1_en_test_protection_levels.py::test_signtx": "b7b31f218929c9d1899fba416ad2e62acd055f5594fb010bf508b095d259ec9f", "T3T1_en_test_protection_levels.py::test_unlocked": "93d9edc9f59c738f0cb083e96f464cae99fccadbd3768a1c2a11258d8eeda9e2", -"T3T1_en_test_protection_levels.py::test_verify_message_t2": "39bfc875b91b199981bdf9505447594ecbbe553dfbedf05e45e5a13c812ec761", +"T3T1_en_test_protection_levels.py::test_verify_message_t2": "7f26c6d11d1b8f56fb290525490665942b25e8ca9357186c5e343f58a18b8860", "T3T1_en_test_protection_levels.py::test_wipe_device": "2dc2c452d2907afc48d1d622ccd3ce692ab3633a0a6e425bdb19014c669a237d", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "1b239f19b1516e8441f948558172f62b33aaa3814b9365cb5b022522f3382557", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "a6cfaab92ce05c58b7f6197f35f37e15ee5720aa0b62973d9025ea77e99908ca", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "17dca9f48d8fcb743fed4d79556ba687e344b98383c411f89354942969946865", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a2950946cf65e1eb983828b84ec7957523a0afb780fa2b12601b649e92e87119", -"T3T1_en_test_sdcard.py::test_sd_format": "20a0d01e3d61f415fc6ebd89727ef893a99dc45db308867625e99747dcff6dd1", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "b8481030791138c3e741d18508c235d9b5cf13921d3c314aed3ab83274ef592b", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "9a8af6b1b0b31ed001ac224f2dd56972d23c3c26ce322d8249498062791afd4c", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "7efe227998c324be3f805af7cdae2aa51193faa6c5c03d0bb7b532a0b5fe3426", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a4bc27e32a49dfbb1da41d7d058ced2ff3ca016c172e64349cf0a5c5c40f36b4", +"T3T1_en_test_sdcard.py::test_sd_format": "7be6fb799a7ec5d2a7812c8e0e57b09507ff1a33ae151d05ab8e7c627a2b0532", "T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", -"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "e3bb1627037f3dc09e9c83ac64a5c1926c811e07c675ada1484f921fc7dab1a5", +"T3T1_en_test_sdcard.py::test_sd_protect_unlock": "06c5df1542420ab8f04e9e048042b475f28459607a5d8c9bf15bef9d0f320af8", "T3T1_en_test_session.py::test_cannot_resume_ended_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_clear_session": "15a21a8acd4d25798cbdb312bdffc7a55f6e4905c32d706187b9ad1bd118d9d1", "T3T1_en_test_session.py::test_derive_cardano_empty_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19583,8 +19583,8 @@ "T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9fefd47db12895cb9f34c6e85fc57d683edeabf96157a6fea0cb1e94814380a5", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2260b3ddde77ab38e6f1d8c373cb3fcb5c0763ad794d364770e68657ae72f1bb", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d42b9d33225764a1594808eea8499ae5deb9ddd84ec658aa7ada598191838a78", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "67fee06302c4593d652ee7ff72975083203ac47248d895728d6bc723098e9498", -"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "ee6fd24611c22fc1132ee28e06965050bda20f74479507f82b97d75839944e08", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "51091f6156d8ad96ef64d6f2899f72d980d8ec4329f2936559b21beee6667a3f", +"T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "85754e9e9e97a354600180ccf01786025c0f88f7ad0817f3f8111c9ba36d2c6f", "T3T1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "95391f108e677a7593495393b875153d58649318146e7c55b46c2774e6bc8065", "T3T1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "333d6aafb3aa39064048bd9924ab4240eb815f15fcd10cc55726447ea7fb4abd", @@ -19613,8 +19613,8 @@ "T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "b15ce77f1ccb9de9cf3ba7a8cd6bc97bf52040fab84bb80ecde321ec59ed8dbb", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "6093b1b647c91bdea75429533c16f92483abe01e7278cddf8311dc6d63e9a42c", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "a10021a9de1fd7726f1edae3eddacb4026d019456338caa6b087e64bb095fb42", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "8a9dc7a898d49c9db6863481f4f2c4c3086d7b954ac89b01564e296c04917ac4", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "ed71aaf248b10ef2f55c62b85cdd3cf09e8d3153cd253dddc41d68858b319507", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "02173ee3c6d91d2275836bbc15e9080f8db800b0357b7b1c291f082b5c5c18a8", "T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "cf5a52723f0599b739202dca77da2fe387c52a5ce1885b9b5dba025a50b9fe4a", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "d5ce001ab5b814e7e2599eb38e353980d0911c4d32546f843c0a54d513f0b35d", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "4ee7888beccdf7a8ccd06e72e4267ed02ee0a05f5826db237a0a1b61123bd4d6", @@ -19748,14 +19748,14 @@ "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fc529b4f35296c4a0f427dc088b0566f320b0773a99dc0eec3d1f07fde7dbaa0", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "8558a6387b134f066557faa2b11707088d322d8b25618c6affda849c5ddc26d0", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "6e60bf00c27f3db4e0e79080ebd05bfff247c2d78e87b810fd4ef66ada9931ec", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "23653b11501519e6fd0287df1303e95b738ea0ca98c7b7f245cfc95972abbddb", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "e8f1b740eb94c1105f1552686b1e01f8a5ea23756a4e80473c730d2aa2faec24", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "0b5bf8e1e1d65a1cd495b9e0f037070aab334d11f33f2d5ae33f89383dc0db50", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "c71fb36cb557e26e38524f0a0f13df1b7cb7d12b8bacf6cf7534feb04505ac1a", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "bd8bef5cc3636d06b2adba42877e7790c1219cd798fc44b5c465c245626aa07e", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "bf6e2cd01ec77ba6ce494620d0f80a1a5afb05e1e06ac399bf55249051ca81c0", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "aab91678db4ea1f9028979797fcc87b85bf66793a7a5fdfe08978814d605825d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "ebc9faf6acb3975dc408d9d087b91d04c6f21bc32d52ee351e3a20617bbe11b4", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "7f115c2adb5b65d82e70fbfa8c057f5402707be6e297b5e96c0c4858a24c3bb8", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "544870ff5b236caeab7482d917ae403ea2c135205d3ea09885da041d88f8aef8", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "489893624bc004649fdea866477d945b47bfe8fb511fd1b05757c33336f106a7", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "bab542e98d6850b230760c0e865c65b6248101026f8bdef835b6ba04942752f0", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "f558d2e6890ec68abbc5c7d0d0c6e9e4d867fc35c7ce4e91eb0963236a9c6fc6", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "9fb1ec3af776faf7723ef62c9b21735d83f9ba69dc8fe4a9a5370a28d9c215f9", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "2b70f846469e47878a14e1c288900192e70cd5ac5de734c7c7defbbafe6032c3", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "9dd8e24b88bd30a5feb139a8239d86a6a27fd0ad06788979cd5537bfd0f88e42", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "7ccb1a25d3b74248a3fbe32a11130badfe105cb080602e4a715ba17f6a8f5f32", @@ -20042,21 +20042,21 @@ "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7dea5ed054078241abe3b31e3dc3eec33d8c30f1b6148ac01168006f44759da9", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "88e4d8f6b1646bf184a273f3e9ef4a980637090c2949749016f11de27b7756fa", "T3T1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c8b36f2acf148645b06c5f15db90b8c654acc45539edb6f8577b080543cc2236", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "079af6c75173ba4177d4cd9b884e827bcee3f50df8eda4105c7a9e7f9347ce23", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "140235f549fefb14e1ea667923a22971ebe22430a74a9e5f45e06a8cfca32217", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "0a6397dce804438f3ee27372c3b6d2df30ccb63ce967cd887bff337e8cfc6d76", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "dd434f80b75b7e2fce0ec436125fc0e795909bb18a4f28a805d1ecf94b6a42fb", -"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "54467aacea740cd5a9a29604c0cb2a96b0891638141649e2618087d1a84ace2e", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "12b33f5b803ca8f3ef357d753b2356541cb78ce2167c964736466e6440465c1f", -"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "e22edc9ff504495522ea316b909373d5cbd250f9a92498a1755f2c27ba43ec03", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "0af2235afacbfb33ac8f2870cc5f176f7c315ac6a316a9d9029e778c42ba6f6f", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "96016c68484fc990e1d902ef44d3b219b54cd5726bf38cd6914f7a7550f6b78e", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "3e6b2555d78ae6fb5d5e552312401daa81f4e27d2cc0043bc5cd7ce74d8836c4", -"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "18bb814a1728113c9dded56a5e811caff047a826c39053d84a49a417e363fdc5", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "5c6c0c83de9eec8536b7a3247fb19ecc1fe50f709197686c739eb0505cc16e72", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "535abe6d684c896acd7cc51ae8be9aa0b46ea01639d8a6f85d83b81b40b293c1", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "eef28558c90552f97e8caafdf0245669315073145fb49ef1fb6ecd3024cce00b", -"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "800c901d57bca33ea2de3cba9565ba98019b371b9cd5aa9170cf980c4fe02b0d", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_grs": "e97827db5f0736b810be0201d6ae01955f4f9ef54e6c9779e87de589b3e6fa17", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_long": "1829c75566110efbe069d0f449808ccf8f04e81da0d3b933eee25fb2b6915f52", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_testnet": "002a27dc0c3dbedc6e52717d9650be5edc837cb91d321027f11ebd729d1e04e7", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify": "84bf0f99a6c6f1fb8f71cc0fa3d1ae31d8d8c48d54134c8da961c4654a6ef9e8", +"T3T1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "3da0bea47c366354edd969f10a549abf5d3aa185e5ca9bcb79be35ad098d72a4", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "2d57c0460b960c69c38797b6a6550a5c117a3318c3c8eb237ee2944c18003f7a", +"T3T1_es_bitcoin-test_verifymessage.py::test_verify_utf": "d436a8f3f56551c399a9f0be9139fe5a1a9899689ad96876e4bf9c7c3676acf5", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "61fa46be9eee0d65fdba5244d1b5892e4f51da75da65f0d8507954ca9f4ddb52", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "f73d5c49d75d07d192d701f6677ece2a75a4fa2b6df0b940e6cb3dc224398c61", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "cdb6874bdd805b9ef426c80c1dca213adfce25c9c20ed709eb1de47365518a5f", +"T3T1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "5a9cfb82ab23781c1218f4fdddacd440bd7ac2490b79276ee600d7478db44fa5", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "172f16bcf3beb3610fc63bca3a53c9d8f6fc03bc0912c77f26a1317518c75a19", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "75a7036d33359f0bb5265372793585edf173beda4d87471e4ea27a52a62b13b1", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ada89385f41c540c6c6361515cdc23a0ae40c1717f02eddaea984dfa8cc66614", +"T3T1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "a1e0aa6f37dbf062a954c3df2baa92275b384e16370556e5c4077d452d7002d6", "T3T1_es_bitcoin-test_zcash.py::test_external_presigned": "43b0985d5076d4b3a9962384e688d6b5bac71f2b493547cfa6cf41a45bb405d2", "T3T1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "8cbbf485553ed69801b2f24d5b4c67fc7e1d00ece791a0a615fcc068159aa973", "T3T1_es_bitcoin-test_zcash.py::test_spend_old_versions": "3cbcf98a7bf9ee5cf9bc0a43fbc3101fc4e9e90b24ac536e42f5596e4c9d28bf", @@ -20439,12 +20439,12 @@ "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5a6bcbade23abc09e916995b954c06283fef230a68ab89c7fc7f0db3b0628349", "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d006f7ae1dda4a34a4311b16cef24d9651fe14c44ff7ac39e6a0be577d690539", "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "00a6361fd0330027ea8505cd72c275aa75d32acfd006bb4281adc9e170d26076", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "422ff47f8e3f4aa8467a12dcea8165461dc671d62376baee024288f1b25f5918", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2c60de63f2c8ee4fa3dd966e370e904abed726a2d018a6a9c800894b44364cef", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "6e456ea3887d9dd213a9f99a0eca40eaa006911a07509782fb6f60a2d514aba5", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "38936976adb3a412ae1d0eaf99dc763788d54418364d6e9faa798a2ca19ebe12", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "4eaf119f5fe86d801232bf89b7447b567f7bffb59df83d716cd3e49ffc37600e", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "4f46d9c0fed3d2e5001368350881ec8fbc239762c0fb85dbe9757f32f0524a9e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "0ceec0ceea6fa701c93912342a726421fb656d2a3b2da27d4b0ff620a28fc84f", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "3641e4a7344aa216386ccdac483d3a28acef6f577ee1b0160f5d68752dd54fa3", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "d392a65b792ac825164c1c51c9be19056bc84b5554f1917754879059d7f0724c", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f600c52557cfc869ffcfc2a996976c213df709468e510ff6ab2d5e211cb40096", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d8699e7b165b0839ffe274c4dbf62557d402eec5556c31510ba018384eaad91a", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "6f16883acf1342c4ef20452654cea11842eb83e7b148fee4578faaed904352a9", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", @@ -20469,15 +20469,15 @@ "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "ed3490d35af9d6d6b4a5007874f83c190b4b0412b61054ef66cc27ee143b7900", "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "402c0ddb2d2584a96b6d35b40f7e40ed9fbeba49e7793ac0c3cb2f30fe29508d", "T3T1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "77f5d146e0986c8d175fa3b0adaf3ae946a31021d70b99ef44d6e510ea592394", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "7e1d6a7c583ff8e1bafbe8d168fdabd6158e7c709f1d0c91ee8540219cc4c5dd", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "2f3226d4ae53cedf1059385548548f82351d3ade35da82e8d88b9d10cbdb23ab", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "e44c7c55ad5ddf0421705819d915187bd1274e04246053133111bfa2e9e07b54", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "52a259da175214603eed3ab2cb3527797d861d6847a5b84c80ebfcefbdfa9fcc", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "7e67679ba78347a720f20c31607f73b04efc6e9b67d54435acef165ddb8aa666", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "58a71c5b1ff66b806ec2d772a6245a93dd25c6935a955f16f8a87f2d21970dc6", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "e4421a0a4950fe2ac7760388678d66933eac236cf986aa781b90fe306c5db9b5", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "66b694c8dddb1f69f88b30caf7dc3e8b82728e0bb0036074f36bc6600a83a67c", -"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "7e1d6a7c583ff8e1bafbe8d168fdabd6158e7c709f1d0c91ee8540219cc4c5dd", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "8801459666fc8900216e202d14a4804ca633eec7087b2ebb6972728f7e6bbe8c", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "7edcd464b9c7fccfeb985e7897083b8159f55ff77356c8ea31c9ce05e89965e8", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "52d516fdb968ec690eb9b349cd27bd1ed245bb4d36e9f8dd56839e80be3ed1b9", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "0d51fd6b578fd40ea848d17405dbc86dba66b0bd2843b38d301422f99c3e49ad", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "b8126251993a9f3961fef54a20cf5ab312f06c37b35ef358a6aeb3f64f67e0b7", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "4b7a486d96ddffc7bece2725aa85a8f55d44763da1db34258f33d8fc86f62fd2", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "a6647eb87901d0e8b798204c62b3175eb3b7f6103751b33a32a6de9d8f780f4b", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "7686ab6184188cdbe7d9436097a435af4661b593e2a33b940ad51d46adeb2c0a", +"T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "8801459666fc8900216e202d14a4804ca633eec7087b2ebb6972728f7e6bbe8c", "T3T1_es_ethereum-test_signtx.py::test_data_streaming": "463660bcef98fdbf02ab568313ee0823fe08e2f1610ee360c4abd0cc6347651d", "T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20581,69 +20581,69 @@ "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "4ceea07e3dbc713e086faf4005cd554a2b9cf6115852374b90ad4f413df1d1f4", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "48e303100c2701625f0cb096aeaeff15634dae299d0b8685dc01170244caf9c0", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "bcc6e600d07887a176f7eeb11c3e2cc9c412a64d9559e3fe943255482dc71604", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1cf8a13d3ed3c979fd6575ca3a6d8aa2f933abb9c9ffb705d7bd0f5aa3335a31", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3be6bbf539fe912b1f4f4ef1664782e48024b026a7eac3a6013c4bf425f00fe7", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "ff0eb6ceaf169dd8cdd861be87048d28b5c21a5d723469b22f92a9930fda09f7", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "eb48ecceb68ff2126f1fdce140fae13616c21c21226c336f59b1766c42b9d675", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "90c6ac32c495cd80d2121c229d59952b384e0804671b12451cf7830439ccef72", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "e60cd445b7b044b5790f8f8f3f1d3d6f9d05669ab757dc8ab8efc4832129617a", "T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "a01e8976a383b973efeccb020ca2e466bc56e81f71df7f2745d02129f621d996", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "c8eaee5ef0501ba5cb0d6f9d96fd1d6b6f948e44fe62508a52f588424e4e3a58", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "3de50506eb6dc1a21ba057946c9f7604d64876fc373c9c68e58503e1826f15c2", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "a1d0c54b6f30be461479cb2dccc31f9f0f790f73466729cf74d2c2f2d66933a4", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "95a4130a90ddc60a42714ab14ca571af1cdb3e52673af2d08dfcd48de275302f", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "614fc559477df4ed6042b52356ab590272e2d3f4e5f6c2bb5422a0f5f9bb2bda", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fa24fa1d667aaeb7246e3462f2311d4b0d96b99d482dfc8f0f75bbeabe6b77ef", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "996632db4933fa237fcebdbfd7edd43549cc33764b34c89b9728be5a6589d10e", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "94b4ae48b8c4c479f52716e835bc9a95c4e83fb60bc0fa1d072495f492d15245", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0dfcc4a9d35fb7380806d33d91fd6df54619efcd567f83449fc6ac7b587e626e", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c7c3581064955b40e99c1581b25175732681af7fb42ef76f60f88767f1f35405", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "33b0be8c5e4527b5aeb5f6b0cee835b149874403772208e8c7c237e7317251cc", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "47fd3bbeda099a43c7c382fe0347ba755aef0fe864305dd3e111fd863b06fe44", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c912ccb846a09b6418904cf4d0f877cc236763863415a51cb63c91597da9ba82", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "83ee8c0d11cca28e1ff69fac86824e937e26ecac7902cb55b3e5fa75b6fc97f3", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "7ff99954597bc3b8782138c75216156c1337b25082b4236457bcdcdb051397c6", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "8a120f0ef23335796db00ab52e9421b465f158b6b3fc860359ab5db376d1cefa", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "85232cd30420eea4c63159754dbe281931c7a84a960ea3fdd55ce4da5ea163c0", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3005bc1292a1ae384f847132cb5212ede9f886c0d558c8ca89b6c8f1e8c47ae9", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "3771c68f03ac229dd0b3c44b4c46bfeac9eb39b1c2b27a2bf5887aab741f15cd", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7c83e5a1c01cacf38b08087f96cdb627b068672913d15c25b3b8d40ea0ff649e", "T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "f8c4be8819a7393f5e636f9c83febed0d7f3c9e122811b9cc8cb1c5a7dc4ab4c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ee0c5c964d4af0d24ff7c1e8d9a13c5b588fb09e5c697c0211b9d2723f6177d0", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "6f7ccad6babf4cc86460c90f2afe39ab02c85dfee07b33b38813d216b9930e49", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7840b4ff25668f4397bc1ea41c5c37554f59a7bad2da6576940f4eb8bafe3f90", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "485a0ad1cc4e2392b3c95b0b836702ec16c346f97677bd2e532afe2ecaabbaaa", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "06ebae772991278bc3d70d54d5973cece3a23cc48f540cdf7c53db0ddeca8d9e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "8c3bd89c5b9067ea89dffa670f0e26ab011eb839e57ba16d2658b3bc3f22567a", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0c126d96dc9de12b03c74407fa7e3ffcfb900b03a45791b85499b7752b9e998f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4f2db6fb3b26588cf43380f0cecb5eb84778f856e2b6b048bb4cdd618fe4c863", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ae091a31b493416009cc1fd78e91b03fa6e8b4be4c0b2cfdd26637f9034b6dfd", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f9f371a6004ea49bd9875321624949d7a1ea79086001bac0014fdab2e5c0f4d2", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a322fef65a4072339de24ecbc6396e08a5484dc95e732373f7ac2095a733db93", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "852071e59964a28086ef5c7e79e231cdeb4661d9ac01a3648547f5dfae3015ad", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8aa9720d46bc325c8d16fd3d490a6a30def7df185f1649a44423f5d65dc07507", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "d1547201279807588547c782097ac4dce9f9171c0213120aa020493b039ee204", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "93d2878f01158872586ca3906c62139360318f50145a5420efaf11515ebf0562", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "86559b391b7f33069abc6fe73b36d8b58394cb55578f773038c2eabdc4b12c38", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6d21b68a32c26c54021892796d719e47858b589b66521afe5a61b06dd864cd9e", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d0503788e182fecff7271302e2763639ed5622510ceea123d0b1efcd18306f56", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "203a8c40d3fb57ffd4598cdbe7d08435680ff32597bb3eefe80735a29e6b49d2", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "bfc291ef5e29f0774241da823766ab53ef124a96c92c126bb24f56a2f2c2f87f", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "9f4a24cb27a5ca56b1942a61c28a44ae22a05c9608b4043c0c0ec7c67e0f5aad", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "6419c7f9789ef854f2d2b7b8ec2ec8395de0b4eb74d98dd91735ed60eb17dcf3", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6ddf6c3d09f5a61766484fd001c5012b66c1fcb4114fd0541db868ed31c98e1d", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "ef89c52fd54a4f62d2be7ab88f3c9c757760b7ae49466b0198da681dc0c77b84", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9963da72b07be3a1d91dafc6652e3985d7c1b4072317889b54257f4efc52a79c", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "220dc30f25353a2cb7c7a52b40f2cbfd74cd6bb94cbac4e2dd9a15acdb5995c6", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8c8de914094afa6192e1a9dfc45fc35bfb8d0f06486644f125c85c195e0982f7", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9731c2a43c76035b2ba266400a0f7fb48d9664b684f2c03c6a1997e8a4d8c968", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "624e49c0bb22bff007f625d631599501c64bd650ae6a0573c0ba20615c6cf874", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "135d87414d036b68d2a055e10848e92370e18a3b1c47e4e47a2535361dd05df6", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6ddf2523e77315afc51ef47e99255bc5283142da0d30a27128007b35f434d37b", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "237c036b0140d3efa96a1c9da6aa93708a487916919d476bfad3e3e34b04739a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "4059e20d19a4d844654884fd3e9e5eefd68f123eee727cc0c5e418a4cadde99a", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5c493480c2be8018b01844522d0adc6307006d94359f641147dcfe9bf5ed7a81", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "9c707ef0861a255cd27ca1feb26495fb82cf61e64f60c4eec7411d62c12e8a54", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9eab11e68ebebdbcca82ff01a7ed361693884fac93b3b52fecfcad7523a9dcf4", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c5fa2aa115190e79ba1e3b1184b56754aa8199c7d2468bb3f8b32e702ea5475f", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f17684c72d0810d1e0223ebf7dbb3f65f1c15507fd2a466b2d0617edb5318f0c", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "528a97d2c6165861b8232cd886953f9f6365cc53cfc9b20ead9ca2e19cec516e", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0cbe1d5ec2f29ba82ae1b0eca9e0e59a020411704388222475746d85d88556b7", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "adf6497bac5b7b516431e8b2200b85cb8e52cc44558e4cbfc77a590eaa3f86b8", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "37e610f9234e5b14c6cdccd1798df9b9a93e580283010661875bbd04903914c5", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "01bceaa937ed7d54f14a515c371500b21147a88018ce836d2e70dd2f973d2a46", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "317efe02dc6cf5ae1d306dcddf94e46fde2a14859fb688e2b7a9df06ce92def6", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dc53105a6b05fcd2d6ceb4531ccf15a8617a3450db89b203bc827365ef2e14f7", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b2b3f5d920906e794b491568af6103b8b1a6fbf57ce89f325f892e3d113e3833", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "085c58e64c751a36643acf9bde37af20f99a99d1fadbf870003e5a291ed2e87d", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2b8712dce67fe3dea95754aee775c651cd40cbd184221f440e9ca41da4eabce1", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f028a23f0e1d3d14c55deb354b4c991ff425f1e96154119d82d471dcd33878bd", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "cff7eb5cf020a4828712b3f10dca05b00b32ab770e3d4be805851c326a6809e9", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b65703d6ee3120c837bfd6ef493aec11647ec7590abb2c47639d39c0db09b19b", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a493510b64d232c00a870b6371beb4e2c684827fc73c20c7014b93be59deba2a", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a31ff3625a8f8990843141491b1627dc3fbb91b7e68ecac537da7045c17a299c", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0e38ff8ee2863b085eb40cd7ab00a9ea5f1cb501936806244fb2b82f6e6a4376", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "89bf880bda758eb19f52ed52e067db9eefc50ae733ee22b5fb588c1503bff329", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "225f1137de97158d11ea2764a86265a4e3f75a79b8f513fb2ecea8727040b5b4", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5d5718a47541b038f212f045964e93f42e5465399399475494ff8e19231d8609", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "8f864ea5b121927a1cd8999246603f79ba32806c6c37da4214d8f6d38c6c96a7", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1a01eb95ad0f68ebae0f924503d76f47168512c4eaea22fdcddd28f7ed52c593", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "078da2a0c8705dc26478ec2d4680f3e70e42b72efa72cb3f0fdaa4cbb0261777", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "6e590e23b0d71cb88cecfa60d65f3b92f35e7194c11de7074879828991fd4b80", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "be21e72fbcd04e9910d0e2c00d9ece642988317eaf3609e00c595870d05e6622", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "d6c2ad9954a2aa0e613f3d0537cd9ea8fb60c97f6776b455beaf61f0e9358276", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "4b679f5cb96d989418755c99012447c637432b702aa0daf199acd6340a32e2ec", @@ -20734,16 +20734,16 @@ "T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "bdda4329f4c64b5a8b394c4f2d6238a2e309d2d6f9d8fac0fa22b371264270e1", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "5231708cea497ece36853ee7aff92b01a56c12e4d7b149b54ea88d17937868c5", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "54425ada4138e710631379130b2d01e2c046c698e8ef65f449cbff2ad94bfca2", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "ecd910b5b29ddadb97c6d07bae13e4866488599a6f6ce011d63a30f4cbe340b9", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "7f52ed42d58bb8f0dbd18d7df879751bcfcf6dbcf23102156e33caf4a26764ec", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "64a001783619c18233f8e8083843eb0d35b103986c416099540d40411ccd0d76", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f3b01400ee20bcc0515667d518a29da29592e072f9bd0c9caee1dff428d7efa2", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "786400993d57729237e65e5734dad3ded951c31cf9d2c863c061c5a05010db76", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5ac631e7597e82052a55e31351a60fd4b831fb8a5f043d22b2737130b813ccb6", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "8a5f52bda876ce4f56f532f6cece42c6190628f559fff12be624648c76b3e64e", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "7cedf37f20e4209357d52c3db2c8a9e96dbb196858b7dc695da47858016ca37d", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "29c4355a9179f851f0e82f7d30fc4894b1e09d734d9506258bcefa9c7a4b3695", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c2902b47f6db00e0ce4aa03e34ba8bad29b04b6d602addb379569aa69fdb2693", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "4296c657a07ca2afc1ed94ce91fed40e85a96aec8714ecb69a2a2c7b7d8ad509", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "582d61bf89c98ba63fdf2ea729619de65682d7d6e172d487da73c5cb39a98966", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "dc3fb86f55450c9e6de4d79404b6f02d97f8cd47b14ddaac732fdcc3419852c1", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "1a93d695cd0eefa82e7405ec9d22eae35440a91c58ecad29378b305004bb0ab6", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "867cacf7c6c8d3cda42ed586e5b170d8f9f9422b970775484651272e66146716", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a5e9060ad64f05b311b98bb9abb1b751e6ffea042db58743fc4b4934afe4d341", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "509255e9bf1206c8cffbb689412e3cd363f9daab813f755ee3ea507cecf3d9f4", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "503803b3a92103db035d6ed9780aedbfbd916d116505e255de0d191d097b785e", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "deb03fb2bf1eaf1d84a130811517e4130521156667c5253f54e853820265912d", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "80c6adeaa88e759bf5452d4f2219988adcd04b6e53f9fa189b70197d9d1a1be8", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "7611242549ae7472fba5ac920f4d43760e31ca11cda9afe3d712614da1e588f9", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "347e57729e002be57b6853188f46cf5c6b0e8fd9d702eed7cf0f73ae8b00720c", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3a06ba291c77fa4cfe90ac452a44ae3c8b5e27d53016632f08598a4fdda2f36e", @@ -20810,28 +20810,28 @@ "T3T1_es_test_debuglink.py::test_softlock_instability": "26e56b2e30a17dd5ef55b6a4eb44c2664cd4f8cd72e4f869f2a61bde786cd626", "T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "52c7ada1d96481aaffbe62bcac73caf6b4edb933f4a06c075593e3074536dbac", "T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_language.py::test_error_invalid_data_hash": "c36253c2168e4fb39315ebd7c8f924bc7a6fc898dc30d4579991682c40d35951", -"T3T1_es_test_language.py::test_error_invalid_data_length": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", -"T3T1_es_test_language.py::test_error_invalid_header_magic": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", -"T3T1_es_test_language.py::test_error_invalid_signature": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", -"T3T1_es_test_language.py::test_error_too_long": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", -"T3T1_es_test_language.py::test_error_version_mismatch": "98b9b9098e2b48a60f3e53e45ece85b43fa7a537ca9096e8b6dcefda878277dc", -"T3T1_es_test_language.py::test_full_language_change[cs]": "776f85f7b1f3ee30d1bd138655b7764577e2862a15fad73acd400e39a6e81a75", -"T3T1_es_test_language.py::test_full_language_change[de]": "0c8ff98b91f6d693da0faa33b6b6e204b3e2aa140bddd8ad429ba5db9512f367", -"T3T1_es_test_language.py::test_full_language_change[en]": "553dbdea784e4f70228b979c9185de42dda84a6416934d6360e4e65fd8831718", -"T3T1_es_test_language.py::test_full_language_change[es]": "cc6f432c87d4732b16e362a61d4c809fff4489f4ffaf54f8667c18a8c126ea50", -"T3T1_es_test_language.py::test_full_language_change[fr]": "7b3c6d92c4021ec1456ab282c9a707071e97d0837f170017bdb817659966f7ed", -"T3T1_es_test_language.py::test_header_trailing_data": "da0eca61925fdcb627b81f1c4ae62390299934652e996c64bca4ac9b75668ad1", -"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "ef88852302c8aa3dac1aa23c562220d933a0f5ded8676c1432f6023eebb411f5", -"T3T1_es_test_language.py::test_reject_update": "126edadff76e22ad518edd5de8b2029819820f050e5b4002a332a3e38c787d74", -"T3T1_es_test_language.py::test_silent_first_install[False-False]": "e5a007707078bca55df39381209802081abbc429d1ab40df24062a669e5f3c66", -"T3T1_es_test_language.py::test_silent_first_install[None-False]": "e5a007707078bca55df39381209802081abbc429d1ab40df24062a669e5f3c66", -"T3T1_es_test_language.py::test_silent_first_install[True-True]": "9cd25fdcaae2ab191ac9594047fdf8b9987a16f9accf3710585e06096c09d9c4", -"T3T1_es_test_language.py::test_switch_from_english[None]": "16d96358f453cb9c6eba8e79241a6e0009e1b1271eb0aca28b2c9722b1e87368", -"T3T1_es_test_language.py::test_switch_from_english[True]": "16d96358f453cb9c6eba8e79241a6e0009e1b1271eb0aca28b2c9722b1e87368", -"T3T1_es_test_language.py::test_switch_from_english_not_silent": "341aa1930c0757e8f6b630760a40ada16b26b03913c9052efac175b01d2b6cbb", -"T3T1_es_test_language.py::test_switch_language": "70376283f804705961e1da59eb547e1aafa21a5ee4252683af15ea306cf9c0af", -"T3T1_es_test_language.py::test_translations_renders_on_screen": "c8c6c9478d53e92bbf12dfbc31cec270b68010101ecab5a761ed2eb7f1d63b42", +"T3T1_es_test_language.py::test_error_invalid_data_hash": "87c3c864c75ef61917e6a0cc3314b01f897f82df8cfa2aefc5153a73983b02bb", +"T3T1_es_test_language.py::test_error_invalid_data_length": "d147350646ddda0fb37c44b613c097bc7eb2d32fa05c4262920f01f641f56fd4", +"T3T1_es_test_language.py::test_error_invalid_header_magic": "d147350646ddda0fb37c44b613c097bc7eb2d32fa05c4262920f01f641f56fd4", +"T3T1_es_test_language.py::test_error_invalid_signature": "d147350646ddda0fb37c44b613c097bc7eb2d32fa05c4262920f01f641f56fd4", +"T3T1_es_test_language.py::test_error_too_long": "d147350646ddda0fb37c44b613c097bc7eb2d32fa05c4262920f01f641f56fd4", +"T3T1_es_test_language.py::test_error_version_mismatch": "d147350646ddda0fb37c44b613c097bc7eb2d32fa05c4262920f01f641f56fd4", +"T3T1_es_test_language.py::test_full_language_change[cs]": "b983f26349114c6e18abb3674a98e27e3c25d7007bc7bc700937680d72a4bd31", +"T3T1_es_test_language.py::test_full_language_change[de]": "b04051b6bb23e1c42da433f11abfb8800a56ce80acbaff3f86c56d22bf583b3c", +"T3T1_es_test_language.py::test_full_language_change[en]": "b2b708af678c06966e60e9c5f346dda7a9eff2d4715bc826b63c06ba0b8405b4", +"T3T1_es_test_language.py::test_full_language_change[es]": "80b5c1c8095147dcd5282771d5c96f6585626244b582c3c190585b6e901ff5b7", +"T3T1_es_test_language.py::test_full_language_change[fr]": "e83094cc509722cf186af135882de0ddfbc95e92f21af4e6059794e373777dab", +"T3T1_es_test_language.py::test_header_trailing_data": "948e19006129d0d31f69a9c066b603371c01b24b48bc2c0fddc86d491b6ea6a7", +"T3T1_es_test_language.py::test_language_is_removed_after_wipe": "d19648b8023faf67bc4e78dbfba2f27f41d7f1e4851f86946f9921ba13a2137e", +"T3T1_es_test_language.py::test_reject_update": "bdd2276e7724143a3dc541e67577875a89f500514b395d05e9afbe48b0fe7a78", +"T3T1_es_test_language.py::test_silent_first_install[False-False]": "00ebd900f699adf7bd4912409d1672f595cf0263407b23f82d5e1520b29de51f", +"T3T1_es_test_language.py::test_silent_first_install[None-False]": "00ebd900f699adf7bd4912409d1672f595cf0263407b23f82d5e1520b29de51f", +"T3T1_es_test_language.py::test_silent_first_install[True-True]": "0d38f8314e80b41a3b019b875a26d14a81456fe5b41769f1df5c8a6d64dcff61", +"T3T1_es_test_language.py::test_switch_from_english[None]": "55c7dc70a45be5300bf0cdeed9bd9a3afb4edba3c635125a37fa80a9b3a49073", +"T3T1_es_test_language.py::test_switch_from_english[True]": "55c7dc70a45be5300bf0cdeed9bd9a3afb4edba3c635125a37fa80a9b3a49073", +"T3T1_es_test_language.py::test_switch_from_english_not_silent": "42df90868b841b14d85a05a08443ffc88b1724ee7c7d521473d0a48dc94ff8f2", +"T3T1_es_test_language.py::test_switch_language": "6a62470050ae174610d20b89baa1fc8255d0475a1255fd4a484d18b0841ddc9a", +"T3T1_es_test_language.py::test_translations_renders_on_screen": "e5b75ed3411d23ccc9461d26a8d6f74c2a432d6ac36e869721eacf4dfe2f5cd6", "T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c5008d38d4b1e86b9d2c89ec5e9430c6387d3a25743009d90607daca1fc42fc6", "T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", "T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", @@ -20843,40 +20843,40 @@ "T3T1_es_test_msg_applysettings.py::test_experimental_features": "f12add2d1795e22eeb646955567aee4e091ddaca994f3ba5ac50798934837677", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "0cdbbcc9774b858e0694802f24f0d89241b7c675a0732bd3b39866d17ce000ac", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "176744b9af8759a11b5f782ae3e7e6e65a3526203cc09f574304860dd3ae1b06", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7ee463560eb35e67eea124a59f671c924b546d93d26befc1c7d3fd4925013a9f", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "be2274287367dd21c3370b8582bc916ef3055e3d4710cbe817d72ed0c5b8e9f9", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "1b268ae566bdba64d46d3803b8c3f2892d32f2d387afe65eb09586b28aa76db7", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d80503cb7ac991956c8b3b107165b3d4de5a271df96bf34f3f074877006f85cf", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "72fe0545b3db2824dbbb047abf5e92108a5d995f63fcd9e04086205be838eca5", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "75012c639521a6d94c542b22c14f74e7ba01a5e4d554d9878f8a0927334146fb", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "3fe17acc5ff544729f18badd6bd224a89d9e43f15917c378b383c3824247e027", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "536773ce669cf1476f03f7be1acb26be08408f2ab7285ef3d184464c33cdaaae", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "248b4863ba278d46ae5d34849071cfe4fa1f74d0cb461a945d45b928c96ea9ee", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c233388ea127e9b4217731046477810ea5907a1899413623e84401efa4a50fc8", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4f95e5fc0f743b3ce9ead2504c89795827319b4db1098259b8c20dadecbdbcc5", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9ab103e76323dc6d7f710808ea8e63f62656f9f55643c4c4f8dbac2fd3ee288b", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "381412ec20c743abb85a932f22190406bb2d0c0850bee8d549fe940df9e8534e", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e1108808a66bb2d4969a6acbb651aaf649435c5d7eab4b6d199d0e9386be2c00", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "92c8d1c8e52c8468c19b3e7412f6bb917419295dcc3d10942ec83dbcec8a0562", "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "6254dc2f26e917a00a6d0934e1348fca29000ae7daeada3185e1da642337ba16", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "991775d99ab7b62fde1e2738cc6f600d708542b5f0499e9048ac46a09fd81890", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "3d6fa73765854729d7a2d51197b4bcf0797ca1233946d24958d26fa355bb0b9c", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "a455376f20c3072a7d2941e9881acbdc910aed9148f2e4d7b72ed8da2cf5ff97", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "f38dc739b870fd271bb0df1876aebad20a1f655a04eb61ca9049bd266aae4404", -"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ebb3be8a8f6bd76825bc5950ee12b267dcc5f69716a757748d9efbd3d5f16aca", +"T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "0b270645f09fb0645bf372e02e5311aa08002242ad33ebc224f88ab7a0adeac4", "T3T1_es_test_msg_changepin_t2.py::test_change_failed": "ccadcfefc6c4b8f4e77b25350da107807195b2354a60603b2400516f020dc296", "T3T1_es_test_msg_changepin_t2.py::test_change_invalid_current": "581bde3e9837568342206a6de599d7d65fcc548c1bb30b4483b66c0c42c25bfb", -"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "0c335cc9fac9dce276e148894a9f4b112eaffbda215c4843a3015179ba685803", +"T3T1_es_test_msg_changepin_t2.py::test_change_pin": "d08a27ec7290cca154cec843581692aa281987dfd9dd2ba9b271a41d43049f98", "T3T1_es_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "58597f0ea23dc1b1ba2009cc073df5672385484cdeef261ca6835c3b8d66fc2e", -"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "fd66870eda48414d8a82c1cde296a5485332d5c2337a49a5e5a6a6d0cde357f8", +"T3T1_es_test_msg_changepin_t2.py::test_remove_pin": "f39167480c935cd286d4ccdbf25eaa76797ea2370f6507a1c914605120a7b39a", "T3T1_es_test_msg_changepin_t2.py::test_set_failed": "98eeb009e044e3ad3f27630a701f5b39243cd5fe7c8ea43916cfd7c9f35b262e", -"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "5bd7b7d8c336a353a089b4a7248b95d1c22b802df2c34c9ffebf5f1b2042e3a8", +"T3T1_es_test_msg_changepin_t2.py::test_set_pin": "cd8d5f6ca5fa423cae01ff7a18189304f0feda07d034e21b505bf01ee0f131b2", "T3T1_es_test_msg_loaddevice.py::test_load_device_1": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", "T3T1_es_test_msg_loaddevice.py::test_load_device_2": "459fdc8bed25deb41cba5a210b39b2ee634a0eb468a2aadc766dcb6c909273a7", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", "T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "3f998178fa0bfef5f40a1bed446fe0fbd09541cd10cf9ba0f471d0ef7f550f0b", "T3T1_es_test_msg_ping.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", -"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "c61dc1ac8bcd22c99901925d03e0525a3d6ce151b4fcffa4aff6e3a3ba40e7da", -"T3T1_es_test_msg_sd_protect.py::test_refresh": "8a0af022678a5340f20619d38cecfeacc5d1c3cba0a205a5e0593f8eedbbbb82", -"T3T1_es_test_msg_sd_protect.py::test_wipe": "c61091b534a94f870c937819d6cc81005dbd5aab7acbcaed8eddfaa4393b77e9", +"T3T1_es_test_msg_sd_protect.py::test_enable_disable": "cb61248c0d0b46b8a4433e2bf12ccfc0b32ad5b9842d5d80eb44d76f0f1f17e4", +"T3T1_es_test_msg_sd_protect.py::test_refresh": "a7235bf977a5f7aab3b0133f0781feab28319170ad80785a29f343aecf72d996", +"T3T1_es_test_msg_sd_protect.py::test_wipe": "7a7cf781e34a9131c2f4dfe9907cb733ddb93c805c92f0fb14b79634974bdd79", "T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "324856403c2cc8a54f9ba167845e37e8adb8f7ecbc212227aa3422aeec6b05c0", "T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "c7f6ff6fc460b7e310c1ca1c1e2b07a208e8deca1c99f74a2cce91c2a16a1b5b", -"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "195558d25b346f749f64b02411d6dbc283c87ad6dbf1cb01b15245039005fa28", +"T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "f7ba337dc25fe91c0cf19877534ca2fca75d2ba02d0f5f3d639e1ee5924a0bfa", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", "T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", @@ -20888,7 +20888,7 @@ "T3T1_es_test_pin.py::test_incorrect_pin_t2": "356c591450c2f7096ae374bc843af0dd64d4b82991c072a1d193f5bbe580033c", "T3T1_es_test_pin.py::test_no_protection": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_protection_levels.py::test_apply_settings": "25939deea16cc9a938fdb455bd80aa1f9c9a5bcff7c655adc6371fbfabdfbe1e", -"T3T1_es_test_protection_levels.py::test_change_pin_t2": "688bdc147a9a00de5b14835b71569ec9565157b2062933046465221c2d71cfc9", +"T3T1_es_test_protection_levels.py::test_change_pin_t2": "0ace593ba16b102ed3fe837af3251ddd576be4505b7eb9ec468bdb83b40d1594", "T3T1_es_test_protection_levels.py::test_get_address": "38978069db1fac71804fdd6e29fc3b7eb7db443362ef7e991065423938aa2e61", "T3T1_es_test_protection_levels.py::test_get_entropy": "6f731cb95d5bebc4ecd593968853ba35b23d58fc1e51528e74e76087ca8470af", "T3T1_es_test_protection_levels.py::test_get_public_key": "38978069db1fac71804fdd6e29fc3b7eb7db443362ef7e991065423938aa2e61", @@ -20900,15 +20900,15 @@ "T3T1_es_test_protection_levels.py::test_sign_message": "d354ec8f178db5f78039df8eb0aee161272d9918f1eddf26ba415f64234c8368", "T3T1_es_test_protection_levels.py::test_signtx": "76b034cb80c3cde87f6f306926563edc012ad6ec77fb46656d0f57f78ad5a239", "T3T1_es_test_protection_levels.py::test_unlocked": "fe43f2681f087deeb6ecc92501c4eff2d44a30e4ddfa7e2beccde954ae40cc0d", -"T3T1_es_test_protection_levels.py::test_verify_message_t2": "035a118e7348bece76dd4c62a8cd836681448601f6a7ac2f8a847082ae5ce846", +"T3T1_es_test_protection_levels.py::test_verify_message_t2": "1d3351d9da92ff5014ca1a8a75211fa78d938828ac5990987a50fdf6888a2230", "T3T1_es_test_protection_levels.py::test_wipe_device": "bd526c2186cbe66c01f2336f3eb48b7bf9c612c5c906b11395fbc30e5b5d9f94", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "76e46214aa557b921fc0b740d4168bf88c34dd0f3a8f8cebfcda3293813b7160", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "c3d2f1ee21c8cfdde8f6e7a501bf375f0a2028849b9766f86e0398742130e23d", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ef358026817d4d7e183bb480cb0119be9c89209523f2fae4462d49b51f6ad009", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "58bc05745701f67056d140f0c871cb89d367f7dc266aecde0076b1a0e2355575", -"T3T1_es_test_sdcard.py::test_sd_format": "24e635fbd7426cff8a77fcba8583411c5467e87a284c790db903b5dff8d659c0", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "3ed9292921eeaf43533738e0968cbe72c7d3079915abba37b3fc12fdb12a559c", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "de0b7f89da03bc3d8afe7291f2e3a3cd1860d1933c19f75a645e2be8a3d04e26", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "16b8f7a814cfc070e0c1be34d6aa39e429bfd7c6407655d37b0c9fc406fdb5ff", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f1ccfa2ea82614346251255194e0171f2311b3bffe9e9fab403eadd45a6c2b9f", +"T3T1_es_test_sdcard.py::test_sd_format": "72f118c0af96c0efac42421ac361945413a8e956ba1715eb89daf6daa772d5aa", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", -"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "b30b5a0a5bd9866112698314afd5a8a6ee9cb5fc962864a51d38d47ec313e5cb", +"T3T1_es_test_sdcard.py::test_sd_protect_unlock": "33fe33134d770ff08151fa7fbe46f0c1feb78a65a20dd52e6fd152f5be0237e3", "T3T1_es_test_session.py::test_cannot_resume_ended_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_clear_session": "c56cbf5c99483b30bf0c012393c631c7bc13cfaa8973f0127313b55f38166a8c", "T3T1_es_test_session.py::test_derive_cardano_empty_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20930,8 +20930,8 @@ "T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "1c9452d995b711de9986e7ae260bb2f6f382e54a720330f989afffecc11449db", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "faa3fe89f0e40b73585f8ff38a46017fa083236ec02a3d3d847980e5d8f18164", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "727a8ecc2ce13554ff1335082c344550b71536e6fca9254492cd3509437d7ca9", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "8fe15a990edfd25a99e01883323d2866c33e313d233dafdd787f1596ef7a8b7b", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b501a2ef4238dd393ba155db916843344a2a3e78e0dc59f28226830aba844f81", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "0c12e7dbd0fa4fe4d655feb4f8498ad8ddf1dc467dadbe459f621a74ee7472bf", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "157ad9e868d5a5c525549f1e0cc12c2dd5589b57ed70e907eff3ffa26c9fd35b", "T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "2be2003eea5416d3bf50eadb034c8cbfae53be301f520a0e6327ee11dade3237", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d256d580916a357609b65412c929ab8d0150643558f73d6b0f1f6ad9f7215eb5", @@ -20960,8 +20960,8 @@ "T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "2d3d54cd06d36caa063de4a1943df12ff37de3e4279e38aec93f24e259763d5d", "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "164817fdc5862401d790b282965da438253de612380270b8446c7adca7cda297", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "21736bebb2ac62cda59c273498d44f9a33a5a0726080ec1ea0d23fb6d6840cd3", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d22f435a4cb29d0d2556795f181681d7c3a0b4856a8e302b5613bc5f65da937b", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "6ec69c2bcf022c45fd43e7968b5df4306ed0b426ccc5f4a0fbc1c990050f9786", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "94dc95c694f42763e7912656ef978025a2b4980d15f1993e287ccf37b3417b5b", "T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "98cecf7f2c431278df4b7b0fcb4670e03d097879085a9b106e61e093654cfa02", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "14bd7797ed91b846a7a2fbb33a7f0699bbad82aa33a77f25cd759bc57e502665", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "0c4cdffba554f4c8ff78fdf39a1d54732acbab86de919fdc82a6f2987921a83a", @@ -21095,14 +21095,14 @@ "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a5945259e180114ca27c1bbb113b59ea484fa1e58af129fd3b37e8a6c2d3561a", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e67426203b4d4dc3edff737752b6f412c9dfe2d6e2303da40880ccfe7db09ea7", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "49cbb116809067c6b190d6dcaceb80c9e37cba8ac2d0da6dfa73808c10893078", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "b637d376b6394e1270eb0f22c86cfdb92f8fe72a186f0b6de8f244e46ded5311", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "5e56cf87dc9782adfc399a8447e3b45fb620b0df03a515b42fe83660731f6fdc", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "f35141da7ff1c6b1c01a6f97870324e338ecdbadaa822382e511b337d713a11e", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "d96840693672c766e2ee77663e7569a8e060c321a2e123aec02dcae90985a7e1", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "aa3a8fa7fb9f779a0b4ef8a066fd696600b7824a39edcf63f7bf9261c258b35f", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "9d7a0d844a561228ea8c0f2f86e1ce5e815e0d3d2f840ca79d340f4f6811cc71", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "4b73ca39e53380d2f8979534425d99ff737838feedbfc1aa5000ca290f1f0d9d", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "c0e2f44fea9cecac74ef521580d045f781136afc7a8365f3cbe3f954d36e438f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "933267d483cb4a1c3316e3d70a1b310920f201e94dcab9b9f3fa2d79b778e70b", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "5475b4be111237b32eaf173fdd68ae2fe498bbc3c21230de68aa25ee2d009b58", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "a5f95c5adc0f425251f928057c4bd479aaab6e243b4fb1d80262cca57d6fd693", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "96d58ed7a66c6f26596cf1b5baa05e1873f605f867a5ff51717098dadd4ede6c", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "64a3e796cb1beaafad47939bb9c131c8820c161ebca8b13cd0d2b9917617f058", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "c3ab96590b8281341ff95dce66fac01523d70329cf8716ad057c4694289b3b0c", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "8100f83adfe801772f35eb8bbe731606e06ac8abb075afb94b65db988b2622a6", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "dae26bb560c16e50ef3b17b7cb8186ec949aa14475b8ffae7f013f2eae72b90a", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "308a798aac4ca789ace179ade3096e1c1871936783bb2eeef578ae2cf89d02c4", @@ -21389,21 +21389,21 @@ "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6aa5771be69c7cad657f75e339e34c38cdeed41b3a3cf19c36718a3e1417bb6d", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "11c0eb71bf931be0d1a5d28f6526ad52e0187aa22d14776be8ee1db8e3ca6eba", "T3T1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "626540b82a9265868272844915321d4fe03e9e705a4b09b3b45ee06d49ad96cd", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "8f944728a887d6556b08692ea9cd221aa1f23ea23d82b4b2311bd099ed18f5ed", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "7dddccc3bfc2a8ed2fa284dab95c913cf2be50a8f603a9d01211aae97603eef4", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "9bc5f43d9c777fb9349ea30c69d7aa745f88332d7e5de46a5172efdf30ae98b7", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "1899a0657205e9311f0b4c6ea200c5ab43a9fd82bf3cb21080dba90889006090", -"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "670d06c0905f6308d30fe89685a7c342c6eb29385463c55da42dd07f98d56590", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "7514ca7aea11818fac40170757823d69db64064f2e3f750e51698be508ac9e7b", -"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "3e95c1ffdf5f032a67b8ae8aba8b8b9d72aa6262d7be58cd29b4fe70e4b5e257", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "f668faf66223a22e49942f942f0bc8558a7acf64c086d5ee7e5ab62c2abb7c79", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "86cf15487e15741a3de70e68a73de14bbeee86d5952dfc0085ecb333bded0454", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "d65d1112085ac2dffb15a3c7584e7fd0a07102ab1bcad448cdf3e9403707ccf2", -"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "6b8683b225dfd137cfdbf4a1d3c082a81fdca1a64fb724e734317885d71a7b3a", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "405f0ea5cf46ff453eeb4bf1848b831324bc06f4be8efdbabc2c9cc014b3c2fb", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "77a84f0b3fa59c5c0daeb98a475b70b9f024db6923d3f9250bb35f1719a636a9", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "06095d90b05853e8c4caf3bbb3f0ac51ad720ab2fe47b006565842fe5feb5c6e", -"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "ddd6ea2edab4b1538dcd94091bb5fb3c814caee54d6ba6cd0dcc584d41e74537", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_grs": "b5e38ab77e61295b0babed09d7f37b87067cd540c5ba1ddd57a8cc68f02e9419", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_long": "b29efabdf8f97ad530adbdaf1fff611c2922e27c4c3cdde85db66cea6c8b95ef", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "d4fc54f176239cc125a08fe79153f2bdea960a6a8d233194081dd07c9df2b887", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify": "87a60f366a2e7520d482c0b852199512e1cf53c62b739d7d53064a60335163aa", +"T3T1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "29452a8374e1ab0e42818a5c305bbdceb8f725b4462ddaf4f157804da0c0401d", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "9308f94b366a3bff4248a80fc123647026164ee20e6e5524c0aee6756be5f68d", +"T3T1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "bb9e3a19f796519c1bcba19e94912e78ea73c2d777d225958d4bb8051aa9a63f", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "07ddb8f86f86809e207e6c18d19889e72291e7cab899d4c7a8199df336469e20", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "7919e3331b522c45d822f907973d48f93fb65ccf251e1c1fdd96179c8689d356", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "40847471adf5c9ae4fd3698af65527e03db50610c4121a031587b74bf5977a76", +"T3T1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "a109c9bda17ad3b1e0e74a5a52918d36e43e5055a56dad30f2c7db812d3f9697", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "962ec980c5e0d37984445ee43559843ee1a82986221a41df36137e325bb0f0e6", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "79be8385c95bb1aa7d6f8f9e9947aa54c7d12b4978a5d87621fa01537071925a", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "42120e6d06d94f5b89e56651536cb58136c79ecc1e0f7b121c813e1d24934e1b", +"T3T1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "3cf5b92d2a96594b78fe6dba8a7d432651dc13d0d6d5fb0639f326d496f26a3b", "T3T1_fr_bitcoin-test_zcash.py::test_external_presigned": "ed968fc6f87e77bf1062997e2ac7b1881aef2361331bd4551f823a7f9eb6e639", "T3T1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3e9dab704c22b2f3450d94f565a14a4295789095e786df9e73a23f21dd6f629e", "T3T1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "d7d7efd6cafb3d212904d0f10a2e4ed3290e2ab6e170267100cef222866a6724", @@ -21786,12 +21786,12 @@ "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "b84739865ca17bb3ef472461af0b8b1f18af067c3b9ae1475740e20c9369f6a4", "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "b9f93b4487a50cc2c9da32b37c5441f0e6cb140865fcf1e388ece004f64ae733", "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "1ab74fa6395c24bc6231221652cec1862861b9ef28ae0022c7702e8ff4b88b7a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "bd0a407aa855e3dc01d0b025181ba627ed6d5ea8dc1331139177459da4a00f44", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "9c52d2ed31045c53c5fc01cd7108e2204950a310b34153841b1ddf38686154df", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "e108bd8dd737130fbef5e7c6bf9861c130758c7256cb97af89a92e0435d7054d", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "684c8d00d82206266e4125baea6eac6d6ca554ed982a3ccb556d39176841aebb", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "2259885c39d1c2db4e1fe43ed11326cbaa14eb85e2b9e0b26bb7f54bdb8edb31", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "99c9381a3fa741ba2980eddc42390454f67500e10d3ca6f3e4c4dee90ba55600", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "cb3196a2cc3f3e3ecfb9439ddc5afe138b336e6fe4673711c4301c040e9ed60b", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a496e8a911d4340a3dd16f71a78cbcfd6eb4b42c4ae365073a4df3fc9f663d56", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "d1b533d434a1ac1cb6435942151990909843d387bdd7b27b7b443ef93a509109", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "fd7d826b03d5654b7a2713cb3c436fd6d1271533f7068b7943b44afacf2ff4a1", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0897fcee88b3256b8fc4143a1888776511bc981262fcda24aa2288a78bf2dd04", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "dcbd59fe2aa4bc367df8bf062a9d4b7fe00b7d9749cc8d76fc00b56fb486539e", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", @@ -21816,15 +21816,15 @@ "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "16f45832864cf0d2a54ece701f293d4d9471ecb28d72cee4889664b78cbd1ecf", "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "1b1de73cd68c831db47da55a18cdbcdf787721fedd53ab374b16e0c64de47ca0", "T3T1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ce9cbaa9360def1b454ed468129a021ad65a80b2e34470f1d2ec3304112987bc", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "82cd7db7d46d8f319df7d332bf1fd02c6dc1ac5798109264c003ed641544300a", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "19732dd3fd350f196cabc66c2105378d45050b2540ac82fde03aa1ae5ce81500", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "c712751099c72122bb672e23fc813509ab6ce61f9d5bb1e3b250c3fcaee140fd", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "2bd8a4682fdc9cd1764d76fe9947ef25b7826130fc7b8ac2c5b6b542ff84aab1", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "16ff5f3e1780492bfaa5009d73f4a28dc14337576ed4e70d112ee2ba9d2fc5f0", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "77003ef644e29eb8d36c7142de6ebdbe65684c05dd682d7cb30f26ed7a64ed01", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "11e0b39d7535fbb41c0006272b9f34f950d8c7a141e2bdb31d7a3c5d653ecadb", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "5185fdd2d6de2159ba4ae5887808cbad13a3c022ccccab8b35016aee672dff58", -"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "82cd7db7d46d8f319df7d332bf1fd02c6dc1ac5798109264c003ed641544300a", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "ed7765f1e49ad7caf148cd0377f873c6096458437fda3ea10517d52985d01ffe", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "571ff75750ac8ecacc1ebe0f381b56f195dd52a9d591dc7ddc2e58d083f74bb0", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "e51c39e99516886276b0e78ede843e65993516e08c9767b385b16ad72998c388", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "54da74baa881ec32c0e14b2178dd97c888a441caa8e41f1b5bbefe8c452c402c", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "7f64b6066af14613ff910ecad89eb39fe73bd88e19ff90c34184c9cd474ad527", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "3ccf770c867e4e21fb429fabb70c07d2e6b1ee3a16bf64dbbf1b0318a64bb995", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "2c60c401186673b0eaef75f4be73410314fcf9dd9c1e98590d66ceeec9d26171", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "87833edd6e79e9b10c7fb89763852a293519eb0aa1233bc88da98a6e79776d40", +"T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "ed7765f1e49ad7caf148cd0377f873c6096458437fda3ea10517d52985d01ffe", "T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "a57a2f9038741b16098751ffe03bc9daf376deca7466d9f5b4f0a5650b5d1f72", "T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -21928,69 +21928,69 @@ "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "6f1af5bcdb69b1785e2869383b5b8c00c927e34f9db99cf7eaae81dc89d7412a", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "cf8eed70a16404ee6cd0cebbb5415fd0a13ad47bf1ea0a31b75b27b6e4e92b44", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ecc8fb21a4be46de8ad9213d967f9d1b7dfdb66389b6b6397dd47293b09afe67", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "37fe3033e891ce4549a8765bbd3f30fbfbdcf3da4cbf783adebf60e5bd97424d", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "0604dde865a64007bf1cdddc3e0810d0cfb19b46489b1506fbc097293cd7e64e", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "85b4c7a962de0b356c940570165ad62d126c703a21d299356a09addfa1ba125d", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "325d1521ab9fdf964ef98b1ef494f69d494474246dddc7dc1196cb3b5a2a9aa2", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "182562732e89a6e8e7c0089e3c9c9e1e42b482be8c035fdef81a05588d4bb66b", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "13164c99ab9e5e8c475200f8f6ac622202a5ef2ca1317f5a377941a8c822afd0", "T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0a0d39084bbcb9c014340f3bbae0d2f3b56607d2c71df23fb4cfa8404479d186", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "75e0ad115c6fe9ceb2336e000def46987272b3c853219249fa6c8661d2637ab5", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "853e2ba6b26e9dbc6a7e74c49bb01d59c7cbfab985c02183dd62b64f29803e96", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "28be4c8caeb2de5f6347ac29dfc7182746da01d158d25db529576e60339c4dc3", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "2a26eb45ccf3507483a1cd6f69d462bf099269bdc4583aa7022278278e142c3f", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "82ae718de837fc30b5c16488fb63a8cda74ff3c928f161851a540bf24aab450a", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fc0db077001b299e0cbf519a8cc669958e7680a8c26463215bee4e44940a4177", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "009f45ee70df79ddf809e7d5b2e0be24f11b1a90a34f2c78429d8d6b823832f5", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "ceb682faf7f474c414a92ef0fdde3c63bf2b6272aba79ac4343ad07564d97452", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a18187cb7c6f0e53d784ed13eea90171c244f6331fc69a6ba5864429800f6b6f", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a66b052df87c1ff4b9b384e141b7ddf70167988fbef1d2e425e9ef30c98aa3a3", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "07e070860615e15cc8dda1d24c806d412f4681ace9c8a76fd2798ab18c47a731", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f71f1da2e054c92ed45a0c8eb2bf3b8dd318860ad441493b7026305cbeb37179", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5325593f0c64b4301d7dfe216f5964398b5565541e41ac18727118d4e3dd4269", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "2bc8ac2889c5c14dc7f0e361d3956d906ab2d3cb4eecf17545d8950dc042c2c1", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "60db9d84c5278e514728dc5a2c71860fc7c8906e979ffca86cbc07ab62ed2bbc", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6cbb6d349ab23b04275591af9e0fb0361d9082b0e307ba5d1e92a037fbe8aee6", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "64bb45511b47cb44b7f973edc966ad5e7c28839b8638624ed5514db23e760ab8", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a6d28c3f5a0d9876e606004d3dd0be4f11bdb66fa467d92180cdf028d7f0427c", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "9ea0de196386d7dd1c4b99f64692e8def486512f5521d2f44d6a20a4259d1662", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "b276eead3bf04a63859b23305db55a6b07e30bd69d70dab2cc2a44dde7ed6c4b", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "3bc1870c2502fea57441e74826ce80029893267eafe56ea884848ea061232d76", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "ee1afde5346b95492128dd7027994775d88f0dbe5862761dbb7eaa9b5ae10f29", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "6d919129a042d6fb64593725027109fd1ddb197bbc7c4d945b54f2130b9771be", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7e10181fd6563432da7c06fe7641856f2ed2f391db72a92ff11c11d6dfd71c8d", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "132b35daa64c902b2c6e89023bd92849570bdbc6f9199c3a79b52822ee174716", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "153e10a6be3ada86430dfb3d55fe1b1d40baecfb03e29e0a98b082a5923b21dd", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "ce50dfb545be7f1a4387bdd5350d835868fd92c664bb07370fcc30e7bf01d3d6", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b9728e81dceaa51ac2ffc7a1a0c8f64afd53ae0d2d02d5d76a0555aafaed3748", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5b4429e35b1b66c1b430582918bc18983d0ae4cf25d4375b8f1d4e4904bc8c5a", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "73a9efa1d81f294b0bac038a75da4c6da672b0ec509361f45a8e608e45539b54", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3151a76c9bb014e42237397a53d2cc7d119cb1efb4a67a028f66e2e4110cf824", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a675592972dda3a383d0650e13af87d07cdfc4dd9491ac87d9c2c447674fff4b", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "6d61a22ccc456d4a91dee7182800ec491b83beed651d52830f539801e81767fa", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f8550b156211595de3251810b700dc77465bcbc3f1173b52d0cb3db364ffdbab", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "92e4994617d0444a94e7064da482c195d46565b23ef27226e1ac8e0e9bafdf70", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "79e02904b2e0ed55d90136b9c6002071205ae9cb89ea67420f34e2e48c80b437", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c8a5f146ee40f438ffa945d96e6d56a3c6a0eecb1c1ef8aa2cb8badcced53cfb", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "764ec714fd71834ef6cb38ec8599d675f43ad652ca1c0aead359b7a254f9be0a", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "432de0db66b1b32a61d4bf34a111f2c8f591f46de4d7e4cbf6433fb70995cb1e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "706f698a182629fb6f0322d6d5d85f159f609041708ed1e405836cc87efa896f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "de993bafe4d97cb52483d292aa6d14611614114004bfda34ab586ff0bc969680", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fdef601c6fd4ad6918018360f704c8f173a81492f6d04aa26684d29019789b1f", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7806e6dbab69d47df8bd3da53313805aa764c289b9762e035f8d54a6d418bf4e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9d6db3913a2b4ca658c710d302d702c72dbd7ac07f997a5c407f420228ce2642", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "177d940e8509d13ebe59eaaeb6225d9659af68333e89d4498f41adec9cf1be37", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "9af2f1a296d52736b2fbde62e9947d01668b9632ceef4defe122d3dd173cff5f", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7f32f3d879b5ca2b65b59e98a5b287385228ffaa5f964d5ad2a035c949176382", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "85b2d85e5b2c982c3ae1b9dc9997e640c7e2c78f2e37bdb8d6a5a6553f0d214c", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8f2cc7ade0bcbb60e358fcec03697e7a7c7e324aab7296c623b2414b05a3ac7e", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9d6ea9f167e725bf3f5fcc7679838142e329a06aaf871c3b0dbf844d70af1e23", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a3d1df93630a73eeebae66a3044a3d151a8f1875e1a00eadd3b7a9681f810228", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d65ae5de34e02c6880ed5cdf0f0821a6001305a3899bc17e4f61d2e1c238f77e", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d3520a47187d674c018ec4c6e962c89663ed63523ea886dbfb1badbf22e9ad40", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d67a016b8769a74df60fc5ea48170af39ebe28a040fd7fa833477965b53b58d1", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d3f130732cd2837913cb832fc92b4c7db31942fcc85b9158121c8378ec1e3f85", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "281e456b2d47e1a131a8fb69af9601978a65fe825bbf3fbe8d2406c13927093a", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "01a663d0cb99874fcadb2df2b93a631067438e23af4026dd3b89e54021ece1f4", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "883a6593e321cc3d7626a5af8c8962da9890a4dd7223486c061e2e94e4ce90f3", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1007b2b01b08ae56e1557bcc1d1b36bbd1eefd43d2a8914699c43d1236b1023d", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4f9ee1f9c7d3cea7ad522024fc4558f91915be752a561740c00ab6828f1c0190", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a6e5e5b1422985ec1fc68fbadd183735b409f5c165a812c43447ad87fd24c894", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9025906d0de12594019c40eb53da1de21b35b069f302f29c58d954a26a11f75f", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "e3a73286a0ed2f88393557fdd05be703e0c801ef3c2c702842bc91a0351ed80e", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f64dadea0d8f1eb6b7383ed50eb19aec053c629b46440243e1aab4af7380c4e2", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d3e3358b34d43b156727939c240d79ec56bca3ada089957a5f39d7a2b5d73114", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "71ee2c76b706ab5087d5796292990f1532ba752f854cb52a0fa9c246f4fbc214", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "28a14d628912e43c37cd26b9cfc5e1f3bac68a3eff1033ff5d3d0b5bdc670d59", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "16014e5c37356cff29ec121d9c1a1d0136a712e20ba7ab3e06b28babb24d0d20", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "080ff20469d654266eec22d119f0774c32262d04e4078cfe11512f838ae77a02", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c75fec2bf39850da90da6af6e72de7aff99555156628a8870d292345852fa073", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "12f7d309148fbd55666d86dfb75d946df93431e66fe33930def70411a80044e8", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "17b5113dd418da7e55fa267b7d411ac9405bd063d807d0573e16bcc12e6ff968", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "59f90c5dda370b47c367b255db3c559cf9e1a83daf02b0121405d7e10bdf8c30", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d24335ffd25d1c9c04ed50bcac04874d89ff52dcaeffd6d46bd13db29f4dcb4e", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d939e88e6b70db570958e48b5b09f1f4fc854ce0a7891cdfd5a22d7c8f946f80", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "202e5e73de82f528da179679b2bb7c80aa8333e417e0b0eda44ad2e74a0c3dc8", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "3daa711a54b41d9584fb509d13f5f497d70b978c9b544a790a979ce23c4d7fbc", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9f3033804af14d08d8c6dc67e83eac4d06990a7ecb355445fd19baa98f974ab0", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "5cf57b199c4102d4f336c7f1df9d2fde86e728bce5ddb0ebd1e45e5b37d02ecf", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "756fa3d79c580eb4ff9bb5b64263aaf98d7bdaf1110986dcf2c8d74e0e5f4117", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "73191401673c02de0a069983f0f0321960bedf47676e35d14f729adeae5a30e4", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "4ada8bface13ff58c3e9e14015e55ae99759c61a45ab886959db01b2b441843e", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "2785e81f53077446341b32ffd25ea58eadc9916d0f1d8f4cd49c46f1e9b6f5ed", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "a44d75739b241e9dd53d4718b4a2f12874e1032a76455e09ff72e5cdb0a25294", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a8f83783a040d5587137b34ad3a8b3c05e21bb8f8a1f0c06a1e54ebcd33edde7", @@ -22081,16 +22081,16 @@ "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "b6429d040f99e9c3432ab9cd2cf82016245f620abe8456971262525fed3f6bfe", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "54efdd2a12510752f99b16e62d7b4b06b2070b3ab8b3e44b268c8efdf136957a", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "aa67179e047b45578be8eedbea592174a41b97726f776f801b32af1834621ea5", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "82ca7d75ff52ee2bbda10161c9efb05aa773a452c63547f0a00413938e470a89", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "26320344c2f9590a0f2cd293aa7e1efe7342bfea50bfa98083562610edea5184", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "2e9aaae1b01d259c92243a8a7bbf35d35a9c427440f9232060e889b863a9eafa", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "dac4ab1b107be7f6aeb71700c67353b2e2ac3887899cf551c30e6d4dc0624326", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "d9a4cc8496d2c4eb5710dea36c88e4bf2ba99a834caeb569c79a29bd7e5f5d2c", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "1fa2682031eff56af5abcb95d634868551b2e611ccb499bf42fce6766420932a", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "fd4ac97a1463a5465a8e27b297d117f0ca3f36c959b7db231e4e1ff00bfd738c", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "d0a162592241e9901e06b34410797218bb505ec40499c87349e40ba034dd6af0", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "15c4ea872516da41849937c063f962e0c86349fed30dca5274d2271578ebdafc", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "e59780f4f024580c7ee0a83fc0a410271fa5f66ce7aa060323828925cada5fa3", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "68009c4053c60589a29e5a668f1ecf17ac126c5bb2cfc22ea189f81e779710f9", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "076854bee85e44b4d171f0afcd944f5bf84a66b3589ca3cd28723aeb9265b75f", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "63ec6999f21a154c495ee8af8681d23760aa8f100d86c35b174c8795a61d0316", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "4b88c725449f180d1e27f5aa4ce2a86023464193502a43c7c12416b6b1f83a9e", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "e5ea4b8c1475bd3c85cefe90bf88fb4976c6c7a5b572eec493e2add33c065282", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "12f2d7e33fcd21e9d661cb0313dc28c79dff6e56f31cf9675b8e374a9e66feb8", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "3cdd4a474a4d2486766e740d211f856c87a0e3ccf0260eee345647222703c1f1", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "03c2068fd3db7efe82927834913f3aebedd1f2dc77256a1d9961b0cfaffe8044", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "b10aed13763af4b3496b21db23cdbf63a24a9955457ce30a74bb10ad68bc76a9", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "0e31fecc0e54f6144fa4e23e5875d60d37a6c5cc508d0add9cf52d26c687adc0", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "fcdbf6127bb5160d0e6a74e08b6c16de19b8c5496577057d189d7ab563808344", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "b47c50aabf68c2a4a498e3546327e3030d799d568df8c0b6d6590ed691c94bd7", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "bad58925a6f2c9f800c90db2099908ad1fc97d42b928e2535cc29de144c000ee", @@ -22157,28 +22157,28 @@ "T3T1_fr_test_debuglink.py::test_softlock_instability": "c82bad7aabed5698abc1ec69f8dfa4823653ce65aa9893376e070f26c1a34471", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "c6e89f9a3ae02d0c6eabdb2bdc97deb75194ed8e6976fd0ac39d5910b897e00c", "T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_language.py::test_error_invalid_data_hash": "53b7a23dc43061161cefd9fdf6f528d82dd9ec825a947e9f1127e7941b1dfae3", -"T3T1_fr_test_language.py::test_error_invalid_data_length": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", -"T3T1_fr_test_language.py::test_error_invalid_header_magic": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", -"T3T1_fr_test_language.py::test_error_invalid_signature": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", -"T3T1_fr_test_language.py::test_error_too_long": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", -"T3T1_fr_test_language.py::test_error_version_mismatch": "cd4d9a5424e84e9e5ca5852a5081bc79b23a92618310b5f4b9a03eacbf7c4acf", -"T3T1_fr_test_language.py::test_full_language_change[cs]": "090e5e699c2a893db977486683cdd66d3ebcfcfadae47c67055dc88d2233d546", -"T3T1_fr_test_language.py::test_full_language_change[de]": "d498d6baa4dc633356cf5506392b5981f71727a46cf13f0e7f5fca63ec440672", -"T3T1_fr_test_language.py::test_full_language_change[en]": "cf5fa6b095cc9afc478f871fbbc63e2a467557e52aec0be883ba7a010e297081", -"T3T1_fr_test_language.py::test_full_language_change[es]": "77de92938877af30cd5f0c699e19a2f8a879c0f734baae345f5af5d383d54083", -"T3T1_fr_test_language.py::test_full_language_change[fr]": "f65dcf17f4cfb333bd90132069367a27622b973860e2b4c7277559a3c235ac0b", -"T3T1_fr_test_language.py::test_header_trailing_data": "b9bb6e32eb8f17dfebb54d6db841d95458341550d7616dbc7d7affebb0c718e4", -"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "8437bdaa2fadc4938ea64b1cfac6feb76310e4e79b1296c1525122246fb5e42e", -"T3T1_fr_test_language.py::test_reject_update": "ff0e3d6fe760a82de7bdc23d9658a880b817acac12aeadc82445c3bda5893ad3", -"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "9cc5cf4108009c20d0aacaf363148c9c82eb129ee9477eabe2a2d6f9509c17f4", -"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "9cc5cf4108009c20d0aacaf363148c9c82eb129ee9477eabe2a2d6f9509c17f4", -"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "c9061b8926a09d9df7b15d75eb048f328ac65c3c1fb44a079628de2d9746d6c5", -"T3T1_fr_test_language.py::test_switch_from_english[None]": "69d9f3e66067b81fd64596b5476fcb7cebc8443aaa8ee1a57e0c4b16e6656370", -"T3T1_fr_test_language.py::test_switch_from_english[True]": "69d9f3e66067b81fd64596b5476fcb7cebc8443aaa8ee1a57e0c4b16e6656370", -"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "2924fc0c3564069dc503497e0c019c57ed93a78f5e2d051149870d889a561680", -"T3T1_fr_test_language.py::test_switch_language": "20ceea46d2baa50c1be3de93b9abd3371f4a04eca1dead20bb1dcdbeff67b72d", -"T3T1_fr_test_language.py::test_translations_renders_on_screen": "89126c78192f2671e3c71eb58ff1e22f0bb5f7248989b59d441a51db559c61cf", +"T3T1_fr_test_language.py::test_error_invalid_data_hash": "ca7ce5a7c64fb8eb00e5add76d7f1c459bcea4c734c2669a65a7b4199346f9d8", +"T3T1_fr_test_language.py::test_error_invalid_data_length": "c57d1f2cd82a0cc88509865f5d58f61ce2d5d99e6d230f152dfc05a7f156cda8", +"T3T1_fr_test_language.py::test_error_invalid_header_magic": "c57d1f2cd82a0cc88509865f5d58f61ce2d5d99e6d230f152dfc05a7f156cda8", +"T3T1_fr_test_language.py::test_error_invalid_signature": "c57d1f2cd82a0cc88509865f5d58f61ce2d5d99e6d230f152dfc05a7f156cda8", +"T3T1_fr_test_language.py::test_error_too_long": "c57d1f2cd82a0cc88509865f5d58f61ce2d5d99e6d230f152dfc05a7f156cda8", +"T3T1_fr_test_language.py::test_error_version_mismatch": "c57d1f2cd82a0cc88509865f5d58f61ce2d5d99e6d230f152dfc05a7f156cda8", +"T3T1_fr_test_language.py::test_full_language_change[cs]": "3eb1c4a51eb30d11ced06bd9f1646034d3ada55f4ab331cc9ac29789d8a3503f", +"T3T1_fr_test_language.py::test_full_language_change[de]": "88efdb54046a9537b6b8fe6df6f31fb274291268b733654bac21ccdce90f3c67", +"T3T1_fr_test_language.py::test_full_language_change[en]": "36d4482bee0ec3ebf5579ac502b62da0ca3092a27a7ecde1aa1124b1179e73cd", +"T3T1_fr_test_language.py::test_full_language_change[es]": "4558f0f37968b6763cbbf5dfe07a6ab9fcdd7e57858fbf92f695e0feaa8f3a61", +"T3T1_fr_test_language.py::test_full_language_change[fr]": "1b0d6e5cda85e92ed7eec50f5a8244073521a5a5b828323532464b4c66b19053", +"T3T1_fr_test_language.py::test_header_trailing_data": "061f6862d78fd52315aab73dddff08a75eea72d9417757577d15a4d26fdc8822", +"T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "378c062164a46157038e529241e73b3defbd6365a11e9d107bb97e87be023377", +"T3T1_fr_test_language.py::test_reject_update": "cedbae2346f339c02d59b5a5abae5d4bf8102f2f90406a9255d3c793d698bd41", +"T3T1_fr_test_language.py::test_silent_first_install[False-False]": "0446e2547286b51a4b2536913f8352adfb33c2cdd5b2b10a7a4b78e67140f67d", +"T3T1_fr_test_language.py::test_silent_first_install[None-False]": "0446e2547286b51a4b2536913f8352adfb33c2cdd5b2b10a7a4b78e67140f67d", +"T3T1_fr_test_language.py::test_silent_first_install[True-True]": "69b0049ab6c542fdb6ac2402ca8aa5f20c31822be31d202733c5677688811937", +"T3T1_fr_test_language.py::test_switch_from_english[None]": "e04cabee84056b61fc21408b1191c15752fd0f5c761aa6a3a3f92bf15f6725b2", +"T3T1_fr_test_language.py::test_switch_from_english[True]": "e04cabee84056b61fc21408b1191c15752fd0f5c761aa6a3a3f92bf15f6725b2", +"T3T1_fr_test_language.py::test_switch_from_english_not_silent": "47fbdddc9ff72993ca233157267b68c559c24e548416c48a9bba61090da5f65c", +"T3T1_fr_test_language.py::test_switch_language": "88adb4c2afed0b03225a3e49e1d969e71c29e98835cb74e04ca8fa3321545114", +"T3T1_fr_test_language.py::test_translations_renders_on_screen": "d1016fe16f7e5ea64e9d72747c9bc44be132a2556d7884623cc451b1e5473900", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "263d4108bf32c391fba7163e1978508b8223f06ee15c13255e3a6cbafeec979c", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", @@ -22190,40 +22190,40 @@ "T3T1_fr_test_msg_applysettings.py::test_experimental_features": "f948137df32c4849f56d2fc361fd898a5c529f85ee84cd15c76767210e87b547", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "71bc0ca6def2794a8fb31e7072d6535a479192d7298e4efd643d51b2d892ebce", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b14a053c5b521d6d15b721185eeafb74ded1f600ea7106563f4d70c4034257b6", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "43f3a933233bd2e14ef5152ffd1832822ee3a407790470f9f8e775a173ea95e5", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "01a4061e289eab1a5ff74526cea902e643a0e76d49657abf73ddf2fde97852b8", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "8e2fa16972a3dff467ac8aecfe5802feff73fcd716af0b0a1e74d45e14331940", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e11e3640d457d4689f7609aaf42db30d22bdce2ab14a5d2476e4324a4cdbf4bf", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b8b015e3488a5c659d8d2a94996e9c7452ed676c72b784cea619c8808197df43", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "128fa6bac71dff383c6c9f4e0b577389da5e0b8f6c2eff8870ecaff3952420fc", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "e5db2bff6610a705f5989bcb9ac7b687732447e5903fdb1a04d92478bc086183", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "600d67fdff0d47b862e67b4189d5fd5e31e14e57a0bead7d13e3848a3a9a9d4b", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "7b9681552a4b1c21d8e442973b8a051cab20949c076cc50afe320caef5157da7", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d89e2309bc68712e6228ebe1467670866a79c0b65fc6e6767b67fe413896e06b", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "57b6ad5787a29d38ad4453866383f672c549619b44d9a453f2d06816ca88a65d", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "455a7013b4080dc4878078e4b00a8dbe4b7d311ffac8e1ece7ae755e461d5b1f", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "fe405518c2224d1e6924441fa5b0d56b978f478d782736e6ad2ccddd64011a93", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "01f35f2a321ffc9b58c3d892189802c2365d97d91ec21783136577796d2f6199", "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", "T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "0448fc7e969b4ac7a7f840839e0a2882f8a8d78349f2cab419dabea18a2a2c88", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ddff2e9d7db6c5b63ad1eb244ecaf4185de9d4fb2da817bb7c8fcf689ccf8276", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "19ecf4aea55615df4f40c367daee7bf0e9f812576b6bacb90fab5f2e14ddd730", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ea00bde3dc79e88ea9ea3c626c3394c71652b4e0f6847ee9531f11ea3c8c01ba", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a3117342e89012ede2cb9f59d3058f4b899c4a04a4e685f1e60f1d358d62cd6c", -"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "ae4c2f4af5d2b3b1c021fe47f4a2d51a05d8cf6e0b71b3b311ae070effba9cd3", +"T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "3d4bc5515fe324453c5d4d39a1f637945d7e226bb2f751bf34f5188a08c9cf7d", "T3T1_fr_test_msg_changepin_t2.py::test_change_failed": "ebb63b62fd00d5c8c74219a7da0d0e6c5268d8508c7a515131e7dac75fcf20a1", "T3T1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "0d0a17776b2978c6e4bfa87433e385ae60d9c20442b7c05f5941345487dc9977", -"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "31286c3795c30ec02c25d5966836471bc4585ab310b0d645e53c0f422970d4db", +"T3T1_fr_test_msg_changepin_t2.py::test_change_pin": "b87c978b4896a1b6d28467d25c941ece8eea4504a95be8bee9afa8af0d2b77ca", "T3T1_fr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "ef0fca1345fb5bf320a37dd2fadff4b21ee4f8062b19061ca7110e0ef5ef7707", -"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "cde847f3b3672ae249aa1c9c34664183df5445deb9f4bd29139aa0e615dac79c", +"T3T1_fr_test_msg_changepin_t2.py::test_remove_pin": "286040ef10dc2e691fa57615d97686a6d6e713129a2eb879c32479620881b115", "T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "41af53080a9c6b57e4c3b0e9e1c8e75d7122d335be770939602cfb7c2e9868a9", -"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "216ec21441c7e63d420ee62507e9dce29a1896756b008638c4c339224b067402", +"T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "8deb5558089d7a8e13af17f2f4c3878d5791dbec7e5cf1329c93f7f2571e41c0", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "640da75650b68386d20e476cdf14da880378fe8db7654c5e876152463c6f918b", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "fed52ee47765a29e17b4c17aa87d6fe36a8122d239fbd1be954c0d03f86e2a54", "T3T1_fr_test_msg_ping.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", -"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "769a5349ecd4f2140187f0789c8b300f34d63b54606e4e6bb8454268cad39e32", -"T3T1_fr_test_msg_sd_protect.py::test_refresh": "c7d2f2c025a11857c453507b0ccd5c3ff4b00103d91adfe39e67bd2a51556085", -"T3T1_fr_test_msg_sd_protect.py::test_wipe": "4a38e7cbed38d10ff2f7a24d6788cdd20a75057f2e70c583b938c42d8ef98dcf", +"T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "248d3bd2c671109278f0c75e7986a20f58bc04f72ae39b855f000b11ece6d781", +"T3T1_fr_test_msg_sd_protect.py::test_refresh": "af9bd20cea2fd6e75d55a1b3ac918f7418dac77c4bf6a768611579becc71cd17", +"T3T1_fr_test_msg_sd_protect.py::test_wipe": "41ea5e6c2b26c9937792cb2cdfbad74286d740fd523bb7d07305566bcd167935", "T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "8367ee29080faf467cde999256920cc18e3d0238e05dee16b4502519443b2263", "T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "88c706fa341925c54fbab47e335a596a8ec0880c9312701e78ae37bcdad18e36", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "992d8d46e847917f5d507149d1725912ed1fbbd7ed56ca6d59e826e90c6b8db5", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "3738505cc3fc5b395bc652371875bc2274f6a9a65143d031450e01ec5ec82aeb", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", "T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", @@ -22235,7 +22235,7 @@ "T3T1_fr_test_pin.py::test_incorrect_pin_t2": "dc48fcbd7246036f8f262e30ed63b0c70eb08dfc0197cf00ab2c29ec1d0bf2e5", "T3T1_fr_test_pin.py::test_no_protection": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_protection_levels.py::test_apply_settings": "d3d75ac0578f796029b21235c4ad8a75d47fbd63446f3f287953df94004e5f18", -"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "587d03dcfee54504f8cfda1490bb8ca3e4d97f11ca7d5463d30a1eb5f819226e", +"T3T1_fr_test_protection_levels.py::test_change_pin_t2": "a9f8e31f72ba39c5629a00c0eaf0b87ef9f06ddff8c8fdabba08438b8d0bfb3a", "T3T1_fr_test_protection_levels.py::test_get_address": "bb7ce5b5f0d172175ae11481d7290188b4c0c10076983602b908a724877682d2", "T3T1_fr_test_protection_levels.py::test_get_entropy": "e7fe766fcd25ae3f693cd16747d3496b9ed5c2077d1b3a754939f2903ce1e966", "T3T1_fr_test_protection_levels.py::test_get_public_key": "bb7ce5b5f0d172175ae11481d7290188b4c0c10076983602b908a724877682d2", @@ -22247,15 +22247,15 @@ "T3T1_fr_test_protection_levels.py::test_sign_message": "4577195c875ba6b05f76866490b3faea19eb8fbd1cc07564c0a6cdf1b2ea16f6", "T3T1_fr_test_protection_levels.py::test_signtx": "15366bed34cea625cc5a1622cf8d47c856aac0a5e783b6809df4f4a0d3333978", "T3T1_fr_test_protection_levels.py::test_unlocked": "41aff29e00f12334bc5f4404403a86399c0bc3f3c7aa36619d13247918280d8e", -"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "ded5a7d614d328bff92de13ce2fca690cb8156cff697757e782e8e7b7e66803a", +"T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c7fb9d00a7a5519c050401b6b1181aafb2cee07aac911a1f69ca19bf4926bf45", "T3T1_fr_test_protection_levels.py::test_wipe_device": "53279b977255d6d8874a592a5241f6a113e96442f871e96522ed8bf12fb05586", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "ffc20e3d42b721278d713d7b3b6967a437d85b99687433d6de32f422f076de8d", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "054b69e5b514eb3ed2d198b4f00546dfc9c949660b426e98619cd985ff7ee3b2", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "af6421cf233a0f6758fe50d1d7bcfcdfb5dad10f804d070646e4e31531dcac0f", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "7ba578b05dbc3d239618bd38edd69b8bd74424bae763d67148eeba51c82ae7c2", -"T3T1_fr_test_sdcard.py::test_sd_format": "269b10242abbd5b7bd08e2d50e912e0d3de2aec294d2e0e1cdff3310a463fe71", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "da17851557ffc8df8e1cce8e1818726029d5d9da0e63384179159778ea31f3c4", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "c513fec61d453c1921859c8a9b09637fc4ed381789214b4e9cebb273a0341adb", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8d5c1b65476ea8d8c8ee332b69a5b9e2af0640562919677261abf901a9b94ec4", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c596ade6118e63e416f500606b9819dfcef0a5d599eb912d82b3ef71678090a1", +"T3T1_fr_test_sdcard.py::test_sd_format": "d47e1612b47b28186d3517ccc686a4ddd4b60557c41446373e3f0f97f93d0105", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", -"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "5f15c6dc0482763486a7d48670748d8c8fc121820fb8a0d3b45d398eb8350da5", +"T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4ebf7f7adc1ba12f1977c97573f1489ec6d58b8e71d67213d521f1c790d4fabf", "T3T1_fr_test_session.py::test_cannot_resume_ended_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_clear_session": "4a42ace86bb24b3921c3e6e632654b4456b3ee6b85008505be9114be6ae2df66", "T3T1_fr_test_session.py::test_derive_cardano_empty_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22277,8 +22277,8 @@ "T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "d69fd4643f9f8456871dbdb07a641482f0ba5aa433de190aa4307c53d257e5b1", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ec2caffc016d8c0cc628a4039774779149406552f38baa3230ca674766e18469", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "73959134ab8f750768060a39c13a1fbd5995b9e69c4d63dcb910a4e23f704434", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "8ecc9f66c9b707e20233ac8fc04183737f7feccd0240b02d19c90673ccbfd3f9", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "17becf8c653ad36e4d5dc9f99a300f1f0f9724d67ab69b148dfbf2bc54c278cb", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "bb8eb4722bd54462c986f19b71e20641af0c619b9f0d0cd34deb0405bbc078d8", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "3620d2c0663eac0db332e57b7403707cdb696d33a1fca6265807bbeccdde21fc", "T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "4ddd2ef98a581a629d826d998595b73b08b7d07e73744d63a25e82d97c8155c2", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "471590f3840e6cdaba53302760ecd23ffdfd1399a0dcbb5e20a242fbf17d0a05", @@ -22311,10 +22311,10 @@ "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "e997cc958f7d7d262604e7728469f7a6952b60c0b1b3520252e3d58e49b41e66", "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "a0879b23f779049abf46c42608ee7b841a0b8dc4ac83b85ac83a83e992068165", "T3T1_en_test_shamir_persistence.py::test_abort": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "ec869dbaa11205cc43fa142230d8f6efcfff6c9eb9f86a48ff44dbc755dffd4f", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "f4f3536a8367baeb994e3ff5568af6e7f8898a01e3c901804840aded88828a7b", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "2cf88aad50c20bfb7ede4bed612d68e7875987d1e0e9e86f8585bff7dbf1ded5", -"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "00cbbcf0d08bc3b1e4d2ca99039567b1fa5c27325becbb5ea311883be733e1f2" +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "f00a24ad650fdbd2c970274d2fc8d41bb4b8fa82bb1a4476c52985621e8bd6d5", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "e2f43ffb0e83e224587b52d09d3b5f11b1daae7e6854ae562f8c7e9bbc4c95c0", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "de163f01135f7a5c73f2e5cad513f6771118370e3295c8fb07ab0e8468b37f7e", +"T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "aa4da89845a41383de2a091315a54b90996c1f71692adcfaa69886c35c4ad261" } } } From 873658104d09da675e622167df37c193cfd094df Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sun, 14 Jul 2024 13:12:32 +0200 Subject: [PATCH 435/626] refactor(core/mercury): extract non-generic code from frame component [no changelog] --- .../src/ui/model_mercury/component/footer.rs | 35 ++++---- .../src/ui/model_mercury/component/frame.rs | 90 ++++++++++--------- .../src/ui/model_mercury/component/header.rs | 20 +++-- .../component/number_input_slider.rs | 9 +- 4 files changed, 86 insertions(+), 68 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index e8055b3663..7ee6e2a08a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -45,11 +45,14 @@ impl<'a> Footer<'a> { const STYLE_INSTRUCTION: &'static TextStyle = &theme::TEXT_SUB_GREY; const STYLE_DESCRIPTION: &'static TextStyle = &theme::TEXT_SUB_GREY_LIGHT; - pub fn new<T: Into<TString<'a>>>(instruction: T) -> Self { + pub fn new<T: Into<TString<'a>>>( + instruction: T, + description: Option<TString<'static>>, + ) -> Self { Self { area: Rect::zero(), instruction: instruction.into(), - content: None, + content: description.map(FooterContent::Description), swipe_allow_down: false, swipe_allow_up: false, progress: 0, @@ -57,13 +60,6 @@ impl<'a> Footer<'a> { } } - pub fn with_description<T: Into<TString<'a>>>(self, description: T) -> Self { - Self { - content: Some(FooterContent::Description(description.into())), - ..self - } - } - pub fn with_page_counter(self, max_pages: u8) -> Self { Self { content: Some(FooterContent::PageCounter(PageCounter::new(max_pages))), @@ -110,16 +106,17 @@ impl<'a> Footer<'a> { } } - pub fn with_swipe_up(self) -> Self { - Self { - swipe_allow_up: true, - ..self - } - } - pub fn with_swipe_down(self) -> Self { - Self { - swipe_allow_down: true, - ..self + pub fn with_swipe(self, swipe_direction: SwipeDirection) -> Self { + match swipe_direction { + SwipeDirection::Up => Self { + swipe_allow_up: true, + ..self + }, + SwipeDirection::Down => Self { + swipe_allow_down: true, + ..self + }, + _ => self, } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 174d4f15fe..cc78b6de13 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -1,4 +1,4 @@ -use super::{theme, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg, Footer, Header}; +use super::{theme, ButtonStyleSheet, CancelInfoConfirmMsg, Footer, Header}; use crate::{ strutil::TString, ui::{ @@ -84,7 +84,6 @@ impl HorizontalSwipe { pub struct Frame<T> { border: Insets, bounds: Rect, - button_msg: CancelInfoConfirmMsg, content: T, header: Header, footer: Option<Footer<'static>>, @@ -106,7 +105,6 @@ where Self { bounds: Rect::zero(), border: theme::borders(), - button_msg: CancelInfoConfirmMsg::Cancelled, content, header: Header::new(alignment, title), footer: None, @@ -145,8 +143,7 @@ where #[inline(never)] fn with_button(mut self, icon: Icon, msg: CancelInfoConfirmMsg, enabled: bool) -> Self { - self.header = self.header.with_button(icon, enabled); - self.button_msg = msg; + self.header = self.header.with_button(icon, enabled, msg); self } @@ -189,17 +186,13 @@ where instruction: TString<'static>, description: Option<TString<'static>>, ) -> Self { - let mut footer = Footer::new(instruction); - if let Some(description_text) = description { - footer = footer.with_description(description_text); - } - self.footer = Some(footer); + self.footer = Some(Footer::new(instruction, description)); self } #[inline(never)] pub fn with_footer_counter(mut self, instruction: TString<'static>, max_value: u8) -> Self { - self.footer = Some(Footer::new(instruction).with_page_counter(max_value)); + self.footer = Some(Footer::new(instruction, None).with_page_counter(max_value)); self } @@ -213,8 +206,7 @@ where } pub fn update_title(&mut self, ctx: &mut EventCtx, new_title: TString<'static>) { - self.header.update_title(new_title); - ctx.request_paint(); + self.header.update_title(ctx, new_title); } pub fn update_subtitle( @@ -223,8 +215,7 @@ where new_subtitle: TString<'static>, new_style: Option<TextStyle>, ) { - self.header.update_subtitle(new_subtitle, new_style); - ctx.request_paint(); + self.header.update_subtitle(ctx, new_subtitle, new_style); } pub fn update_content<F, R>(&mut self, ctx: &mut EventCtx, update_fn: F) -> R @@ -244,11 +235,7 @@ where #[inline(never)] pub fn with_swipe(mut self, dir: SwipeDirection, settings: SwipeSettings) -> Self { - self.footer = self.footer.map(|f| match dir { - SwipeDirection::Up => f.with_swipe_up(), - SwipeDirection::Down => f.with_swipe_down(), - _ => f, - }); + self.footer = self.footer.map(|f| f.with_swipe(dir)); self.swipe = self.swipe.with_swipe(dir, settings); self } @@ -275,21 +262,7 @@ where fn place(&mut self, bounds: Rect) -> Rect { self.bounds = bounds; - - let (mut header_area, mut content_area) = bounds.split_top(TITLE_HEIGHT); - content_area = content_area.inset(Insets::top(theme::SPACING)); - header_area = header_area.inset(Insets::sides(theme::SPACING)); - - self.header.place(header_area); - - if let Some(footer) = &mut self.footer { - // FIXME: spacer at the bottom might be applied also for usage without footer - // but not for VerticalMenu - content_area = content_area.inset(Insets::bottom(theme::SPACING)); - let (remaining, footer_area) = content_area.split_bottom(footer.height()); - footer.place(footer_area); - content_area = remaining; - } + let content_area = frame_place(&mut self.header, &mut self.footer, bounds); self.content.place(content_area); @@ -297,9 +270,17 @@ where } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - self.horizontal_swipe.event(event, self.swipe); + if let Some(value) = frame_event( + &mut self.horizontal_swipe, + self.swipe, + &mut self.header, + &mut self.footer, + ctx, + event, + ) { + return Some(FrameMsg::Button(value)); + } - self.footer.event(ctx, event); let msg = self.content.event(ctx, event).map(FrameMsg::Content); if let Some(count) = ctx.page_count() { self.internal_page_cnt = count; @@ -308,9 +289,7 @@ where if msg.is_some() { return msg; } - if let Some(ButtonMsg::Clicked) = self.header.event(ctx, event) { - return Some(FrameMsg::Button(self.button_msg)); - } + None } @@ -328,6 +307,37 @@ where .render_swipe_cover(target, self.bounds); } } +fn frame_event( + horizontal_swipe: &mut HorizontalSwipe, + swipe_config: SwipeConfig, + header: &mut Header, + footer: &mut Option<Footer>, + ctx: &mut EventCtx, + event: Event, +) -> Option<CancelInfoConfirmMsg> { + horizontal_swipe.event(event, swipe_config); + + footer.event(ctx, event); + + header.event(ctx, event) +} +fn frame_place(header: &mut Header, footer: &mut Option<Footer>, bounds: Rect) -> Rect { + let (mut header_area, mut content_area) = bounds.split_top(TITLE_HEIGHT); + content_area = content_area.inset(Insets::top(theme::SPACING)); + header_area = header_area.inset(Insets::sides(theme::SPACING)); + + header.place(header_area); + + if let Some(footer) = footer { + // FIXME: spacer at the bottom might be applied also for usage without footer + // but not for VerticalMenu + content_area = content_area.inset(Insets::bottom(theme::SPACING)); + let (remaining, footer_area) = content_area.split_bottom(footer.height()); + footer.place(footer_area); + content_area = remaining; + } + content_area +} #[cfg(feature = "micropython")] impl<T> crate::ui::flow::Swipable for Frame<T> { diff --git a/core/embed/rust/src/ui/model_mercury/component/header.rs b/core/embed/rust/src/ui/model_mercury/component/header.rs index af0e0ea146..c8c7e7464d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/header.rs +++ b/core/embed/rust/src/ui/model_mercury/component/header.rs @@ -7,7 +7,7 @@ use crate::{ geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, lerp::Lerp, model_mercury::{ - component::{Button, ButtonMsg, ButtonStyleSheet}, + component::{Button, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg}, theme, theme::TITLE_HEIGHT, }, @@ -71,6 +71,7 @@ pub struct Header { icon: Option<Icon>, color: Option<Color>, title_style: TextStyle, + button_msg: CancelInfoConfirmMsg, } impl Header { @@ -84,6 +85,7 @@ impl Header { icon: None, color: None, title_style: theme::label_title_main(), + button_msg: CancelInfoConfirmMsg::Cancelled, } } #[inline(never)] @@ -107,12 +109,14 @@ impl Header { self } #[inline(never)] - pub fn update_title(&mut self, title: TString<'static>) { + pub fn update_title(&mut self, ctx: &mut EventCtx, title: TString<'static>) { self.title.set_text(title); + ctx.request_paint(); } #[inline(never)] pub fn update_subtitle( &mut self, + ctx: &mut EventCtx, new_subtitle: TString<'static>, new_style: Option<TextStyle>, ) { @@ -126,10 +130,11 @@ impl Header { self.subtitle = Some(Label::new(new_subtitle, self.title.alignment(), style)); } } + ctx.request_paint(); } #[inline(never)] - pub fn with_button(mut self, icon: Icon, enabled: bool) -> Self { + pub fn with_button(mut self, icon: Icon, enabled: bool, msg: CancelInfoConfirmMsg) -> Self { let touch_area = Insets::uniform(BUTTON_EXPAND_BORDER); self.button = Some( Button::with_icon(icon) @@ -137,6 +142,7 @@ impl Header { .initially_enabled(enabled) .styled(theme::button_default()), ); + self.button_msg = msg; self } #[inline(never)] @@ -160,7 +166,7 @@ impl Header { } impl Component for Header { - type Msg = ButtonMsg; + type Msg = CancelInfoConfirmMsg; fn place(&mut self, bounds: Rect) -> Rect { let header_area = if let Some(b) = &mut self.button { @@ -201,7 +207,11 @@ impl Component for Header { } } - self.button.event(ctx, event) + if let Some(ButtonMsg::Clicked) = self.button.event(ctx, event) { + return Some(self.button_msg); + }; + + None } fn paint(&mut self) { diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs index 723a36c27e..5f0409d4f2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -1,3 +1,4 @@ +use super::{theme, Footer}; use crate::{ strutil::{ShortString, TString}, translations::TR, @@ -11,8 +12,6 @@ use crate::{ }, }; -use super::{theme, Footer}; - pub enum NumberInputSliderDialogMsg { Changed(u16), } @@ -32,8 +31,10 @@ impl NumberInputSliderDialog { Self { area: Rect::zero(), input: NumberInputSlider::new(min, max, init_value).into_child(), - footer: Footer::new::<TString<'static>>(TR::instructions__swipe_horizontally.into()) - .with_description::<TString<'static>>(TR::setting__adjust.into()), + footer: Footer::new::<TString<'static>>( + TR::instructions__swipe_horizontally.into(), + Some(TR::setting__adjust.into()), + ), min, max, val: init_value, From df018a2af8403b6d5425698db973603bfb2a018f Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sat, 13 Jul 2024 17:26:22 +0200 Subject: [PATCH 436/626] refactor(core/mercury): extract non-generic code from confirm action [no changelog] --- .../ui/model_mercury/flow/confirm_action.rs | 106 ++++++++++++++---- 1 file changed, 82 insertions(+), 24 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index b31250fec9..9788a48a11 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -1,5 +1,10 @@ +use super::super::{ + component::{Frame, FrameMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; use crate::{ error, + error::Error, maybe_trace::MaybeTrace, micropython::{map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, @@ -18,14 +23,6 @@ use crate::{ }, }; -use super::super::{ - component::{Frame, FrameMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg}, - theme, -}; - -// TODO: merge with code from https://github.com/trezor/trezor-firmware/pull/3805 -// when ready - #[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmAction { Intro, @@ -160,6 +157,8 @@ pub fn new_confirm_action_uni<T: Component + MaybeTrace + 'static>( hold: bool, info: bool, ) -> Result<Obj, error::Error> { + let (prompt_screen, prompt_pages, flow, page) = create_flow(title, prompt_screen, hold); + let mut content_intro = Frame::left_aligned(title, content) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) @@ -171,8 +170,6 @@ pub fn new_confirm_action_uni<T: Component + MaybeTrace + 'static>( content_intro = content_intro.with_subtitle(subtitle); } - let prompt_screen = prompt_screen.or_else(|| hold.then_some(title)); - let prompt_pages: usize = prompt_screen.is_some().into(); let content_intro = content_intro .map(move |msg| match msg { FrameMsg::Button(_) => Some(FlowMsg::Info), @@ -180,6 +177,60 @@ pub fn new_confirm_action_uni<T: Component + MaybeTrace + 'static>( }) .with_pages(move |intro_pages| intro_pages + prompt_pages); + let flow = flow?.with_page(page, content_intro)?; + + create_menu_and_confirm(subtitle, verb_cancel, hold, info, prompt_screen, flow) +} + +fn create_flow( + title: TString<'static>, + prompt_screen: Option<TString<'static>>, + hold: bool, +) -> ( + Option<TString<'static>>, + usize, + Result<SwipeFlow, Error>, + &'static dyn FlowState, +) { + let prompt_screen = prompt_screen.or_else(|| hold.then_some(title)); + let prompt_pages: usize = prompt_screen.is_some().into(); + + let flow = if prompt_screen.is_some() { + SwipeFlow::new(&ConfirmAction::Intro) + } else { + SwipeFlow::new(&ConfirmActionSimple::Intro) + }; + + let page: &dyn FlowState = if prompt_screen.is_some() { + &ConfirmAction::Intro + } else { + &ConfirmActionSimple::Intro + }; + + (prompt_screen, prompt_pages, flow, page) +} + +fn create_menu_and_confirm( + subtitle: Option<TString<'static>>, + verb_cancel: Option<TString<'static>>, + hold: bool, + info: bool, + prompt_screen: Option<TString<'static>>, + flow: SwipeFlow, +) -> Result<Obj, Error> { + let flow = create_menu(flow, verb_cancel, info, prompt_screen)?; + + let flow = create_confirm(flow, subtitle, hold, prompt_screen)?; + + Ok(LayoutObj::new(flow)?.into()) +} + +fn create_menu( + flow: SwipeFlow, + verb_cancel: Option<TString<'static>>, + info: bool, + prompt_screen: Option<TString<'static>>, +) -> Result<SwipeFlow, Error> { let mut menu_choices = VerticalMenu::empty().danger( theme::ICON_CANCEL, verb_cancel.unwrap_or(TR::buttons__cancel.into()), @@ -192,12 +243,26 @@ pub fn new_confirm_action_uni<T: Component + MaybeTrace + 'static>( } let content_menu = Frame::left_aligned("".into(), menu_choices) .with_cancel_button() - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(move |msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }); + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()); + + let content_menu = content_menu.map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + if prompt_screen.is_some() { + flow.with_page(&ConfirmAction::Menu, content_menu) + } else { + flow.with_page(&ConfirmActionSimple::Menu, content_menu) + } +} + +fn create_confirm( + flow: SwipeFlow, + subtitle: Option<TString<'static>>, + hold: bool, + prompt_screen: Option<TString<'static>>, +) -> Result<SwipeFlow, Error> { if let Some(prompt_title) = prompt_screen { let (prompt, prompt_action) = if hold { ( @@ -226,16 +291,9 @@ pub fn new_confirm_action_uni<T: Component + MaybeTrace + 'static>( FrameMsg::Button(_) => Some(FlowMsg::Info), }); - let res = SwipeFlow::new(&ConfirmAction::Intro)? - .with_page(&ConfirmAction::Intro, content_intro)? - .with_page(&ConfirmAction::Menu, content_menu)? - .with_page(&ConfirmAction::Confirm, content_confirm)?; - Ok(LayoutObj::new(res)?.into()) + flow.with_page(&ConfirmAction::Confirm, content_confirm) } else { - let res = SwipeFlow::new(&ConfirmActionSimple::Intro)? - .with_page(&ConfirmActionSimple::Intro, content_intro)? - .with_page(&ConfirmActionSimple::Menu, content_menu)?; - Ok(LayoutObj::new(res)?.into()) + Ok(flow) } } From a700ff8dff740d2a725ec7ce980e24cfde4de803 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 12 Jul 2024 15:38:41 +0200 Subject: [PATCH 437/626] refactor(core): extract non-generic code from SwipeContent [no changelog] --- .../model_mercury/component/swipe_content.rs | 245 ++++++++++-------- 1 file changed, 132 insertions(+), 113 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs index d1bc9ac466..06e6b4b9f3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs @@ -2,6 +2,7 @@ use crate::{ time::{Duration, Stopwatch}, ui::{ component::{base::AttachType, Component, Event, EventCtx, SwipeDirection}, + constant::screen, display::Color, event::SwipeEvent, geometry::{Offset, Rect}, @@ -15,10 +16,21 @@ use crate::{ #[derive(Default, Clone)] struct AttachAnimation { pub timer: Stopwatch, + pub attach_type: Option<AttachType>, + pub show_attach_anim: bool, } impl AttachAnimation { const DURATION_MS: u32 = 500; + + pub fn new() -> Self { + Self { + timer: Stopwatch::new_stopped(), + attach_type: None, + show_attach_anim: true, + } + } + pub fn is_active(&self) -> bool { if animation_disabled() { return false; @@ -36,7 +48,7 @@ impl AttachAnimation { self.timer.elapsed().to_millis() as f32 / 1000.0 } - pub fn get_offset(&self, t: f32, attach_type: Option<AttachType>) -> Offset { + pub fn get_offset(&self, t: f32) -> Offset { let value = pareen::constant(0.0).seq_ease_in( 0.0, easer::functions::Linear, @@ -44,7 +56,7 @@ impl AttachAnimation { pareen::constant(1.0), ); - match attach_type { + match self.attach_type { Some(AttachType::Initial) => { Offset::lerp(Offset::new(0, -20), Offset::zero(), value.eval(t)) } @@ -61,14 +73,14 @@ impl AttachAnimation { } } - pub fn get_opacity(&self, t: f32, attach_type: Option<AttachType>) -> u8 { + pub fn get_opacity(&self, t: f32) -> u8 { let value = pareen::constant(0.0).seq_ease_in_out( 0.0, easer::functions::Cubic, 0.2, pareen::constant(1.0), ); - match attach_type { + match self.attach_type { Some(AttachType::Initial) | Some(AttachType::Swipe(SwipeDirection::Up)) | Some(AttachType::Swipe(SwipeDirection::Down)) => {} @@ -86,63 +98,100 @@ impl AttachAnimation { pub fn reset(&mut self) { self.timer = Stopwatch::new_stopped(); } + + pub fn lazy_start(&mut self, ctx: &mut EventCtx, event: Event, animate: bool) -> bool { + if let Event::Attach(attach_type) = event { + if self.show_attach_anim && animate { + self.attach_type = Some(attach_type); + } else { + self.attach_type = None; + } + self.reset(); + ctx.request_anim_frame(); + } + if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { + if !animation_disabled() { + if !self.timer.is_running() { + self.timer.start(); + } + if self.is_active() { + ctx.request_anim_frame(); + ctx.request_paint(); + } + } + } + match event { + Event::Touch(_) => !self.is_active(), + _ => true, + } + } } -pub struct SwipeContent<T> { - inner: T, - bounds: Rect, +struct SwipeContext { progress: i16, dir: SwipeDirection, attach_animation: AttachAnimation, - attach_type: Option<AttachType>, - show_attach_anim: bool, } -impl<T: Component> SwipeContent<T> { - pub fn new(inner: T) -> Self { +impl SwipeContext { + fn new() -> Self { Self { - inner, - bounds: Rect::zero(), progress: 0, dir: SwipeDirection::Up, - attach_animation: AttachAnimation::default(), - attach_type: None, - show_attach_anim: true, + attach_animation: AttachAnimation::new(), } } - pub fn with_no_attach_anim(mut self) -> Self { - self.show_attach_anim = false; - self - } + fn get_params(&self, bounds: Rect) -> (Offset, Rect, u8) { + let progress = self.progress as f32 / 1000.0; - pub fn inner(&self) -> &T { - &self.inner - } + let shift = pareen::constant(0.0).seq_ease_out( + 0.0, + easer::functions::Cubic, + 1.0, + pareen::constant(1.0), + ); - fn process_event(&mut self, ctx: &mut EventCtx, event: Event, animate: bool) -> Option<T::Msg> { - if let Event::Attach(attach_type) = event { - self.progress = 0; - if self.show_attach_anim && animate { - self.attach_type = Some(attach_type); - } else { - self.attach_type = None; - } - self.attach_animation.reset(); - ctx.request_anim_frame(); - } - if let Event::Timer(EventCtx::ANIM_FRAME_TIMER) = event { - if !animation_disabled() { - if !self.attach_animation.timer.is_running() { - self.attach_animation.timer.start(); + let y_offset = i16::lerp(0, 50, shift.eval(progress)); + + let mut offset = Offset::zero(); + let mut clip = bounds; + let mut mask = 0; + + if self.progress > 0 { + match self.dir { + SwipeDirection::Up => { + offset = Offset::y(-y_offset); + mask = u8::lerp(0, 255, shift.eval(progress)); } - if self.attach_animation.is_active() { - ctx.request_anim_frame(); - ctx.request_paint(); + SwipeDirection::Down => { + offset = Offset::y(y_offset); + clip = screen(); + mask = u8::lerp(0, 255, shift.eval(progress)); } + _ => {} + } + } else { + let t = self.attach_animation.eval(); + let opacity = self.attach_animation.get_opacity(t); + offset = self.attach_animation.get_offset(t); + mask = 255 - opacity; + + if offset.x == 0 && offset.y == 0 { + clip = screen(); } } + (offset, clip, mask) + } + + fn process_event(&mut self, ctx: &mut EventCtx, event: Event, animate: bool) -> bool { + let inner_event = self.attach_animation.lazy_start(ctx, event, animate); + + if let Event::Attach(_) = event { + self.progress = 0; + } + if let Event::Swipe(SwipeEvent::Move(dir, progress)) = event { match dir { SwipeDirection::Up | SwipeDirection::Down => { @@ -156,15 +205,41 @@ impl<T: Component> SwipeContent<T> { ctx.request_paint(); } - match event { - Event::Touch(_) => { - if self.attach_animation.is_active() { - None - } else { - self.inner.event(ctx, event) - } - } - _ => self.inner.event(ctx, event), + inner_event + } +} + +pub struct SwipeContent<T> { + inner: T, + bounds: Rect, + swipe_context: SwipeContext, +} + +impl<T: Component> SwipeContent<T> { + pub fn new(inner: T) -> Self { + Self { + inner, + bounds: Rect::zero(), + swipe_context: SwipeContext::new(), + } + } + + pub fn with_no_attach_anim(mut self) -> Self { + self.swipe_context.attach_animation.show_attach_anim = false; + self + } + + pub fn inner(&self) -> &T { + &self.inner + } + + fn process_event(&mut self, ctx: &mut EventCtx, event: Event, animate: bool) -> Option<T::Msg> { + let inner_event = self.swipe_context.process_event(ctx, event, animate); + + if inner_event { + self.inner.event(ctx, event) + } else { + None } } } @@ -186,74 +261,18 @@ impl<T: Component> Component for SwipeContent<T> { } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - let progress = self.progress as f32 / 1000.0; + let (offset, clip, mask) = self.swipe_context.get_params(self.bounds); - let shift = pareen::constant(0.0).seq_ease_out( - 0.0, - easer::functions::Cubic, - 1.0, - pareen::constant(1.0), - ); - - let offset = i16::lerp(0, 50, shift.eval(progress)); - - let mask = u8::lerp(0, 255, shift.eval(progress)); - - if self.progress > 0 { - match self.dir { - SwipeDirection::Up => { - let offset = Offset::y(-offset); - target.in_clip(self.bounds, &|target| { - target.with_origin(offset, &|target| { - self.inner.render(target); - shape::Bar::new(self.bounds) - .with_alpha(mask) - .with_fg(Color::black()) - .with_bg(Color::black()) - .render(target); - }); - }); - } - SwipeDirection::Down => { - let offset = Offset::y(offset); - target.with_origin(offset, &|target| { - self.inner.render(target); - shape::Bar::new(self.bounds) - .with_alpha(mask) - .with_fg(Color::black()) - .with_bg(Color::black()) - .render(target); - }); - } - _ => {} - }; - } else { - let t = self.attach_animation.eval(); - let offset = self.attach_animation.get_offset(t, self.attach_type); - let opacity = self.attach_animation.get_opacity(t, self.attach_type); - - if offset.x != 0 || offset.y != 0 { - target.in_clip(self.bounds, &|target| { - target.with_origin(offset, &|target| { - self.inner.render(target); - shape::Bar::new(self.bounds) - .with_alpha(255 - opacity) - .with_fg(Color::black()) - .with_bg(Color::black()) - .render(target); - }); - }); - } else { - // some components draw outside their bounds during animations - // let them do that unless we are animating here + target.in_clip(clip, &|target| { + target.with_origin(offset, &|target| { self.inner.render(target); shape::Bar::new(self.bounds) - .with_alpha(255 - opacity) + .with_alpha(mask) .with_fg(Color::black()) .with_bg(Color::black()) .render(target); - } - } + }); + }); } } @@ -305,7 +324,7 @@ where let is_swipe_up = matches!(attach_type, AttachType::Swipe(SwipeDirection::Up)); let is_swipe_down = matches!(attach_type, AttachType::Swipe(SwipeDirection::Down)); - if !self.content.show_attach_anim { + if !self.content.swipe_context.attach_animation.show_attach_anim { return false; } From 91cbb332f44af501e5eaf1134d641305bcc2ffd8 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 9 Jul 2024 11:37:21 +0200 Subject: [PATCH 438/626] chore(common): drop NEM mosaics support when NEM network is unsupported this does not affect codegen but it might confuse consumers of the support info --- common/defs/support.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/common/defs/support.json b/common/defs/support.json index f79ad9e8b9..651ee196dc 100644 --- a/common/defs/support.json +++ b/common/defs/support.json @@ -204,12 +204,7 @@ "misc:XRP": "2.6.1", "misc:XTZ": "2.6.1", "misc:tADA": "2.6.1", - "misc:tXRP": "2.6.1", - "nem:BREEZE": "2.6.1", - "nem:DIM": "2.6.1", - "nem:DIMTOK": "2.6.1", - "nem:PAC:CHS": "2.6.1", - "nem:PAC:HRT": "2.6.1" + "misc:tXRP": "2.6.1" }, "unsupported": { "bitcoin:BTG": "not for T2B1 (#2793)", @@ -226,7 +221,12 @@ "bitcoin:tPART": "incompatible fork", "misc:EOS": "not for T2B1 (#2793)", "misc:LSK": "Incompatible mainnet hard-fork", - "nem:XEM": "not for T2B1 (#2793)" + "nem:XEM": "not for T2B1 (#2793)", + "nem:BREEZE": "not for T2B1 (#2793)", + "nem:DIM": "not for T2B1 (#2793)", + "nem:DIMTOK": "not for T2B1 (#2793)", + "nem:PAC:CHS": "not for T2B1 (#2793)", + "nem:PAC:HRT": "not for T2B1 (#2793)" } }, "T2T1": { @@ -434,12 +434,7 @@ "misc:XRP": "2.6.1", "misc:XTZ": "2.6.1", "misc:tADA": "2.6.1", - "misc:tXRP": "2.6.1", - "nem:BREEZE": "2.6.1", - "nem:DIM": "2.6.1", - "nem:DIMTOK": "2.6.1", - "nem:PAC:CHS": "2.6.1", - "nem:PAC:HRT": "2.6.1" + "misc:tXRP": "2.6.1" }, "unsupported": { "bitcoin:BTG": "not for T3T1 (#2793)", @@ -456,7 +451,12 @@ "bitcoin:tPART": "incompatible fork", "misc:EOS": "not for T3T1 (#2793)", "misc:LSK": "Incompatible mainnet hard-fork", - "nem:XEM": "not for T3T1 (#2793)" + "nem:XEM": "not for T3T1 (#2793)", + "nem:BREEZE": "not for T3T1 (#2793)", + "nem:DIM": "not for T3T1 (#2793)", + "nem:DIMTOK": "not for T3T1 (#2793)", + "nem:PAC:CHS": "not for T3T1 (#2793)", + "nem:PAC:HRT": "not for T3T1 (#2793)" } }, "connect": { From 21eafdc5ec6bac60b3546ec9742aeaf8cee76715 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 9 Jul 2024 12:08:03 +0200 Subject: [PATCH 439/626] chore(common): remove wallets and links from misc.json firmware repo is no longer a source of truth for these values --- common/defs/misc/misc.json | 130 +++++-------------------------------- 1 file changed, 15 insertions(+), 115 deletions(-) diff --git a/common/defs/misc/misc.json b/common/defs/misc/misc.json index 729e3f565b..dbd09766d8 100644 --- a/common/defs/misc/misc.json +++ b/common/defs/misc/misc.json @@ -4,204 +4,104 @@ "shortcut": "LSK", "slip44": 134, "curve": "ed25519", - "decimals": 8, - "links": { - "Homepage": "https://lisk.io/", - "Github": "https://github.com/LiskHQ/lisk" - }, - "wallet": { - "Liskish Wallet": "https://github.com/hirishh/liskish-wallet/releases" - } + "decimals": 8 }, { "name": "Stellar", "slip44": 148, "curve": "ed25519", "shortcut": "XLM", - "decimals": 7, - "links": { - "Homepage": "https://www.stellar.org", - "Github": "https://github.com/stellar/stellar-core" - }, - "wallet": { - "Account Viewer": "https://accountviewer.stellar.org/", - "Exodus": "https://www.exodus.io", - "Stellarport": "https://stellarport.io/" - } + "decimals": 7 }, { "name": "Monero", "shortcut": "XMR", "slip44": 128, "curve": "ed25519", - "decimals": 12, - "links": { - "Homepage": "https://getmonero.org", - "Github": "https://github.com/monero-project/monero" - }, - "wallet": { - "Monero CLI/GUI": "https://www.getmonero.org/downloads/" - } + "decimals": 12 }, { "name": "Ripple", "shortcut": "XRP", "slip44": 144, "curve": "secp256k1", - "decimals": 6, - "links": { - "Homepage": "https://ripple.com", - "Github": "https://github.com/ripple/rippled" - }, - "wallet": { - "Trezor Suite": "https://suite.trezor.io", - "Exodus": "https://www.exodus.io" - } + "decimals": 6 }, { "name": "Ripple Testnet", "shortcut": "tXRP", "slip44": 1, "curve": "secp256k1", - "decimals": 6, - "links": { - "Homepage": "https://ripple.com", - "Github": "https://github.com/ripple/rippled" - }, - "wallet": { - "Trezor Suite": "https://suite.trezor.io" - } + "decimals": 6 }, { "name": "Cardano", "shortcut": "ADA", "slip44": 1815, "curve": "ed25519", - "decimals": 6, - "links": { - "Homepage": "https://www.cardano.org", - "Github": "https://github.com/input-output-hk/cardano-node" - }, - "wallet": { - "Trezor Suite": "https://suite.trezor.io" - } + "decimals": 6 }, { "name": "Cardano Preview Testnet", "shortcut": "tADA", "slip44": 1815, "curve": "ed25519", - "decimals": 6, - "links": { - "Homepage": "https://www.cardano.org", - "Github": "https://github.com/input-output-hk/cardano-node" - }, - "wallet": { - "Trezor Suite": "https://suite.trezor.io" - } + "decimals": 6 }, { "name": "Tezos", "shortcut": "XTZ", "slip44": 1729, "curve": "ed25519", - "decimals": 6, - "links": { - "Homepage": "https://tezos.com", - "Github": "https://github.com/tezos/tezos" - }, - "wallet": { - "Briskett": "https://briskett.app" - } + "decimals": 6 }, { "name": "EOS", "shortcut": "EOS", "slip44": 194, "curve": "secp256k1", - "decimals": 4, - "links": { - "Homepage": "https://eos.io", - "Github": "https://github.com/EOSIO/eos" - }, - "wallet": { - "Bloks.io": "https://bloks.io/wallet" - } + "decimals": 4 }, { "name": "Omni", "shortcut": "OMNI", "slip44": 0, "curve": "secp256k1", - "decimals": 2, - "links": { - "Homepage": "https://www.omnilayer.org", - "Github": "https://github.com/OmniLayer" - }, - "wallet": {} + "decimals": 2 }, { "name": "MaidSafeCoin", "shortcut": "MAID", "slip44": 0, "curve": "secp256k1", - "decimals": 8, - "links": { - "Homepage": "https://maidsafe.net", - "Github": "https://github.com/maidsafe" - }, - "wallet": {} + "decimals": 8 }, { "name": "Binance Chain", "shortcut": "BNB", "slip44": 714, "curve": "secp256k1", - "decimals": 8, - "links": { - "Homepage": "https://binance.org" - }, - "wallet": { - "Binance Wallet": "https://binance.org/unlock" - } + "decimals": 8 }, { "name": "Tether", "shortcut": "USDT", "slip44": 0, "curve": "secp256k1", - "decimals": 2, - "links": { - "Homepage": "https://tether.to" - }, - "wallet": {} + "decimals": 2 }, { "name": "Solana", "shortcut": "SOL", "slip44": 501, "curve": "ed25519", - "decimals": 9, - "links": { - "Homepage": "https://solana.com", - "Github": "https://github.com/solana-labs" - }, - "wallet": { - "Trezor Suite": "https://suite.trezor.io" - } + "decimals": 9 }, { "name": "Solana Devnet", "shortcut": "DSOL", "slip44": 501, "curve": "ed25519", - "decimals": 9, - "links": { - "Homepage": "https://solana.com", - "Github": "https://github.com/solana-labs" - }, - "wallet": { - "Trezor Suite": "https://suite.trezor.io" - } + "decimals": 9 } ] From d37af9e23325d79d9ea646d0a990fdda3837330d Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Wed, 17 Jul 2024 16:27:52 +0200 Subject: [PATCH 440/626] feat(legacy/bootloader): Avoid overflow in readprotobufint(). [no changelog] --- legacy/bootloader/usb.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/legacy/bootloader/usb.c b/legacy/bootloader/usb.c index 37b5c066e0..24e1bcc959 100644 --- a/legacy/bootloader/usb.c +++ b/legacy/bootloader/usb.c @@ -129,10 +129,15 @@ static void check_and_write_chunk(void) { } // read protobuf integer and advance pointer -static secbool readprotobufint(const uint8_t **ptr, uint32_t *result) { +static secbool readprotobufint(const uint8_t **ptr, const uint8_t *end, + uint32_t *result) { *result = 0; for (int i = 0; i <= 3; ++i) { + if (*ptr == end) { + *result = 0; + return secfalse; + } *result += (**ptr & 0x7F) << (7 * i); if ((**ptr & 0x80) == 0) { (*ptr)++; @@ -141,13 +146,14 @@ static secbool readprotobufint(const uint8_t **ptr, uint32_t *result) { (*ptr)++; } + if (*ptr == end) { + *result = 0; + return secfalse; + } + if (**ptr & 0xF0) { // result does not fit into uint32_t *result = 0; - - // skip over the rest of the integer - while (**ptr & 0x80) (*ptr)++; - (*ptr)++; return secfalse; } @@ -308,8 +314,9 @@ static void rx_callback(usbd_device *dev, uint8_t ep) { } // read payload length const uint8_t *p = buf + 10; - if (readprotobufint(&p, &flash_len) != sectrue) { // integer too large - send_msg_failure(dev, 9); // Failure_ProcessError + if (readprotobufint(&p, buf + sizeof(buf), &flash_len) != sectrue) { + // integer too large + send_msg_failure(dev, 9); // Failure_ProcessError flash_state = STATE_END; show_halt("Firmware is", "too big."); return; From e34a0272914e8095022d4da4dc9cd73e8316d866 Mon Sep 17 00:00:00 2001 From: M1nd3r <petrsedlacek.km@seznam.cz> Date: Mon, 10 Jun 2024 15:54:03 +0200 Subject: [PATCH 441/626] style(core): fix indentation in crc32 documentation [no changelog] --- .../modtrezorcrypto/modtrezorcrypto-crc.h | 18 +++++++++--------- core/mocks/generated/trezorcrypto/crc.pyi | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-crc.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-crc.h index 77a2e264b0..ab0042eef3 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-crc.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-crc.h @@ -26,17 +26,17 @@ /// package: trezorcrypto.crc /// def crc32(data: bytes, crc: int = 0) -> int: -/// """ -/// Computes a CRC32 checksum of `data`. +/// """ +/// Computes a CRC32 checksum of `data`. /// -/// Args: -/// `data` (`bytes`): Input data. -/// `crc` (`int`, `optional`): Initial CRC value for chaining -/// computations over multiple data segments. Defaults to 0. +/// Args: +/// `data` (`bytes`): Input data. +/// `crc` (`int`, `optional`): Initial CRC value for chaining +/// computations over multiple data segments. Defaults to 0. /// -/// Returns: -/// `int`: Computed CRC32 checksum. -/// """ +/// Returns: +/// `int`: Computed CRC32 checksum. +/// """ mp_obj_t mod_trezorcrypto_crc_crc32(size_t n_args, const mp_obj_t *args) { mp_buffer_info_t bufinfo = {0}; mp_get_buffer_raise(args[0], &bufinfo, MP_BUFFER_READ); diff --git a/core/mocks/generated/trezorcrypto/crc.pyi b/core/mocks/generated/trezorcrypto/crc.pyi index 248d69dc38..c9d7c05aff 100644 --- a/core/mocks/generated/trezorcrypto/crc.pyi +++ b/core/mocks/generated/trezorcrypto/crc.pyi @@ -3,14 +3,14 @@ from typing import * # extmod/modtrezorcrypto/modtrezorcrypto-crc.h def crc32(data: bytes, crc: int = 0) -> int: - """ - Computes a CRC32 checksum of `data`. + """ + Computes a CRC32 checksum of `data`. - Args: - `data` (`bytes`): Input data. - `crc` (`int`, `optional`): Initial CRC value for chaining - computations over multiple data segments. Defaults to 0. + Args: + `data` (`bytes`): Input data. + `crc` (`int`, `optional`): Initial CRC value for chaining + computations over multiple data segments. Defaults to 0. - Returns: - `int`: Computed CRC32 checksum. - """ + Returns: + `int`: Computed CRC32 checksum. + """ From 108d9c737e9a55777f90d8b954f8a92f52ec16b0 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 18 Jul 2024 16:21:33 +0200 Subject: [PATCH 442/626] feat(core/mercury): add rounded overlay to keypads Make the corner keys of passphrase and mnemonic keyboards rounded by an overlay, similarly to PIN keyboard. [no changelog] --- .../component/keyboard/mnemonic.rs | 12 +- .../component/keyboard/passphrase.rs | 20 +- tests/ui_tests/fixtures.json | 586 +++++++++--------- 3 files changed, 316 insertions(+), 302 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 242c1ea2b0..181012c064 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -8,7 +8,7 @@ use crate::{ geometry::{Alignment, Grid, Insets, Rect}, model_mercury::{ component::{Button, ButtonMsg}, - theme, + cshape, theme, }, shape::Renderer, }, @@ -31,6 +31,8 @@ pub struct MnemonicKeyboard<T> { back: Child<Maybe<Button>>, /// Input area, acting as the auto-complete and confirm button. input: Child<Maybe<T>>, + /// Area with keypads - used for rounded overlay + keypad_area: Rect, /// Key buttons. keys: [Child<Button>; MNEMONIC_KEY_COUNT], /// Swipe controller - allowing for going to the previous word. @@ -66,6 +68,7 @@ where prompt_visible && can_go_back, )), input: Child::new(Maybe::new(theme::BG, input, !prompt_visible)), + keypad_area: Rect::zero(), keys: T::keys() .map(|t| { Button::with_text(t.into()) @@ -126,8 +129,9 @@ where let height_input_area: i16 = 38; let padding_top: i16 = 6; let back_btn_area_width: i16 = 32; - let (remaining, keyboard_area) = + let (remaining, keypad_area) = bounds.split_bottom(3 * theme::MNEMONIC_BUTTON_HEIGHT + 2 * theme::KEYBOARD_SPACING); + self.keypad_area = keypad_area; let prompt_area = remaining .split_top(padding_top) .1 @@ -137,7 +141,7 @@ where let (back_btn_area, input_area) = prompt_area.split_left(back_btn_area_width); let input_area = input_area.inset(Insets::left(BACK_BUTTON_RIGHT_EXPAND)); - let keyboard_grid = Grid::new(keyboard_area, 3, 3).with_spacing(theme::KEYBOARD_SPACING); + let keyboard_grid = Grid::new(keypad_area, 3, 3).with_spacing(theme::KEYBOARD_SPACING); self.swipe.place(bounds); self.prompt.place(prompt_area); @@ -222,6 +226,8 @@ where for btn in &self.keys { btn.render(target); } + + cshape::KeyboardOverlay::new(self.keypad_area).render(target); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 08511317a6..3aa8121bbc 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -8,10 +8,13 @@ use crate::{ }, display, geometry::{Alignment, Grid, Insets, Offset, Rect}, - model_mercury::component::{ - button::{Button, ButtonContent, ButtonMsg}, - keyboard::common::{render_pending_marker, MultiTapKeyboard}, - theme, + model_mercury::{ + component::{ + button::{Button, ButtonContent, ButtonMsg}, + keyboard::common::{render_pending_marker, MultiTapKeyboard}, + theme, + }, + cshape, }, shape, shape::Renderer, @@ -78,6 +81,7 @@ pub struct PassphraseKeyboard { cancel_btn: Child<Maybe<Button>>, confirm_btn: Child<Button>, next_btn: Child<Button>, + keypad_area: Rect, keys: [Child<Button>; KEY_COUNT], active_layout: KeyboardLayout, fade: Cell<bool>, @@ -131,6 +135,7 @@ impl PassphraseKeyboard { cancel_btn, confirm_btn, next_btn, + keypad_area: Rect::zero(), keys: KEYBOARD[active_layout.to_usize().unwrap()].map(|text| { Child::new( Button::new(Self::key_content(text)) @@ -261,15 +266,16 @@ impl Component for PassphraseKeyboard { const CONFIRM_BTN_INSETS: Insets = Insets::new(5, 0, 5, 0); let bounds = bounds.inset(theme::borders()); - let (top_area, key_grid_area) = + let (top_area, keypad_area) = bounds.split_bottom(4 * theme::PASSPHRASE_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); + self.keypad_area = keypad_area; let (input_area, confirm_btn_area) = top_area.split_right(CONFIRM_BTN_WIDTH); let top_area = top_area.inset(INPUT_INSETS); let input_area = input_area.inset(INPUT_INSETS); let confirm_btn_area = confirm_btn_area.inset(CONFIRM_BTN_INSETS); - let key_grid = Grid::new(key_grid_area, 4, 3).with_spacing(theme::BUTTON_SPACING); + let key_grid = Grid::new(keypad_area, 4, 3).with_spacing(theme::BUTTON_SPACING); let next_btn_area = key_grid.cell(11); let erase_cancel_area = key_grid.cell(9); @@ -389,6 +395,8 @@ impl Component for PassphraseKeyboard { // Note that this is blocking and takes some time. display::fade_backlight(theme::backlight::get_backlight_normal()); } + + cshape::KeyboardOverlay::new(self.keypad_area).render(target); } } diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index e51a639c90..ece25d4e83 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15325,30 +15325,30 @@ "click_tests": { "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "099531de60d33afa60963920e8a24f681000a9d2fc894a143cc85eeae5005903", "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "6fb9950f982f955fcad67f32f3a5d1171dbe674eea5c00263abc45efc38e0005", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "b3e073455427bc987e448da56a46f7056107ec996d6c60d75de61cf1e49077b4", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "b8a0cb4db6773e4eaf22692fa612f8dd3a3ea405470d7bbd2d8c92495d7ac158", "T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "43293b55a181cc8f65a4b5252909a0a46582ae9db33686bc24e8e34760490a0b", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "2d9ea7a371531b56e7f8ddce3cb419065dc6f02262e039eb25e24fc37e3b1331", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "ccf52cd8c3523f82a01608a72a07a14b793b30503f1dceacc438e4872151a868", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "e254663f0c687fefa01943561aaf750306e39848f95ae7b78cf2cd79436ae965", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "aac7d93be05d1e23d628b0758c661ded3ca270e6c785084e9761d85e28e9d93a", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "662fdecae7643270921e0c96105ad326d5421693d0f92471494f4af31a31e751", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "59a283aa35b2cd9d9c78120a58758634613adb058a2880f7f92564164fd5f7e0", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "3b225ed7b9336d6269b3f9080014e73c43fbe053ea87635582907b5dc2a7d3cc", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "18aed8d421ad8b126efc063aee92f3ee696067b06fe97b700c389ae391009aa9", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "25518bb77ff251bb1038ab28b29318b3cd2eb0352063fbe502052aa254ba7dc5", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2cbaef3274b2b501d589e798628bf8288d069223c42e5dd300bde1c03b93e1ff", "T3T1_cs_test_lock.py::test_hold_to_lock": "1824eb2d9867a82fb99174bac6ef8a906a0d6bf11381e0939091fee8a9c10b45", -"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "3ad09c8d05197cb0ac1627c792bebda14e1cd031c0c1414c9ace143c60f79fae", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "956e3bb892ca76d13da3bb45556dc19789d4fbfdde1052c4c954139f503f0c81", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "6f496d80c2ab52faf30679ceffd8915926d098be42f47123aaf18345e23baeeb", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "58a7ce43664b40a4655d8057fe9319ea975a850cf5ce0fcf74438d718510647e", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "184222bf9ba41697214af3b51ccd7a516eb755ec39c97b44140ab58770e22e55", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "4a44de6a8ac5a33b6e567185a451d2d2b45a7277ed5f6ea47e1d49f8322597bf", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "e5ff198abc033f9e4f5a68bd0c2b497e9b58afb95859355224bee917245ed2dc", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "313ee0d880b033b1c65bdde39f022ce631426f5aa591f60d918a855e994adb7a", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "615d93392cf5535665ef23b19e5c8ca6ebcfe6446173df08a2d85c6249069f7d", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "169c07657b42d942afbe37b1fe59dc041690ab52b3ecd8e03434bf8753c187e5", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "615d93392cf5535665ef23b19e5c8ca6ebcfe6446173df08a2d85c6249069f7d", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "ddc88cb6c0e5440d08ce2d856870efe3f443c3994d6bafc7d8b929545fa61638", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6d8773f6dfc30cc1acb2d89d374c297a44c1d1975d3cf6cf45952ad7e8c55ec6", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "3c58c69e6722c9274b8ccfddb2fc31b652bf01b977f7521c87fa9e8df7ce30f5", +"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "c0484f9fc8330a6b20dc91301055efae626a5e76ec9e7468dcba419d32a0f4cd", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0078ab0cc308d8959b25975908abd5f850c12fa48e59fd060873312acac0caea", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "aa1c703ce6bac8716dd4cda9e4a2c0e955555353057ba8d938f6e59073c59ab4", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "ef916afedf3afce94c1120bfb82b7f171c32dd71dc47a8682d5f5323e8cb68da", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "193d2a739c4f5413044fd126c4ce5f9b2fe5b912cfc0bbeb9453ebd334a3506f", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "694b29572e463958d157c62c1a1611fa6e3b3e801cde7cf75ee03ae4534887e1", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "abc4b57e1cab65eb18b397b0dadac309d66fab38c2cc5420f7ee3c4bc561f176", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5095caf10d42c8da15dc25d919324fc84af2bef32ff0c9f1d1319bd4490d4a4b", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "36c891311e423f6c8072c68b9990e8b59fe1ac5523e524f4d1b1960015408cc5", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "1621822d063f997293591b09c98c360fb180e3744fcbfd702532be782023a379", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "36c891311e423f6c8072c68b9990e8b59fe1ac5523e524f4d1b1960015408cc5", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "f7a06a49928018b7306fec51ddb79f01ce71131b025ccf0ab445432a5ba5a13c", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "728142e1432d28cf599c079f1259f44a8e1c4159501d1ea150216092892029ba", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "afd3b52112e14e14356a12b252f1fb42abe74267f97fd5c7ddef8ade7a35d672", "T3T1_cs_test_pin.py::test_pin_cancel": "ad3a70c37900c5720a7c5a8ad991940160b50e2f4f88d7cadfbd5fa3fd64792d", "T3T1_cs_test_pin.py::test_pin_change": "3c588124808bb72d6f8abfe871c225da69154a23d36f73fbe35adc635bea19d7", "T3T1_cs_test_pin.py::test_pin_delete_hold": "e3e0aff2edcecb8e8533fe6d99ffec871736ffcb26ae718adc270ad43239c441", @@ -15363,10 +15363,10 @@ "T3T1_cs_test_pin.py::test_pin_short": "d47d5d042fcafcfd35e3893c9f230fffcb174a2d10198e7e0c78907b5777142a", "T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "6d615ea3421738485484b14e305a8c3f159bdf82925329e98b87bff0890e4366", "T3T1_cs_test_pin.py::test_wipe_code_setup": "3566f17ed11804872e11694e5c5a8da8cfbae335ad1a2a4b10cc1f48da04cab5", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "eb5ef8ca712e9e9488ad645f7f4fa70316d0097356cec1dc8bdca8c003cb4b72", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9f6033faf5c61f953b3f8662cf0931fba63628eaff4b755cf72d5ee22ef5234e", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "5e2cf74333a9ceb0acf0914f9219b4bffb14be8e91da4dbec449db84f646d3ed", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "075dc10417b1e76b19f3809f4d917496db2a094bdce6b3bbc4aa6469ed806b91", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "45b95e8389eebe056b08b05dcf4551321994956f720a140adf2c3c51a10fde02", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "199a6bab747546f9f14783057931320aee5f353c1ce2e09dfa32448501931719", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "cf579f3b7f6b7e218a34e85e7f61287eff49933526aac1d6702cfa114d15ee82", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "6cea30008292a5e8b72f59117d93b093fddc4e819b78ecaf71bbd2b3b03c00a6", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "741569335759843d3cb80efecdd1f5e9a3913e257fdd9d83dd25a5ddbe08f60c", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3f08946972f3ac7d3986fc6e52252e46fbbfce4c3b25f259fb2afa95568fcb1d", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "924b9fdb9e202ccba413c83484310e4b6d49a050797a6ac9cba6b408dc9e518d", @@ -15374,30 +15374,30 @@ "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "526513add54db3291cdb8f2c1f6bdb9be3d6772116912b4d5703966b565ff6b2", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3f2cb64c585744ec1d3b2115e53663869aaf8005e3371a681de72d32a37f3c09", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "945e5b4d0f325e3da850dc37c75b175458c4f8d44a50adfac540f171277e04f1", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "70ddd80bdf03baacef0074c4424084169526592f7e7729d318c2ca8eb540c05b", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "6c0fdcf2d29233b9bb4162a1e42a261196b99a3f0aae065e29b985607f3fba5d", "T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "26a5707dbb0a5c6e9149af85c6af56dc62a91cfdf93085b188159306c8932c5e", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "45ff4871fbb4dcd88c541afb740b8628ae3cd983c8d82b0962b78b1a01ab95cc", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "ac71de880b9fb2506f786d81fb77e66378b7abc27beaf00808ad7e03916b88ec", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "42192f5f1d2ca9604b778d36eb303cf5b02601ae478d6ae9fb9e7348ee85d90d", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "7d8dce58f3aaeef084fcd7cdc18c9b709b54689ced07c7b161efaefcba7b75bf", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d7ad4444a3691a2c5891a1d6e5fb142540915048968a9381a09b227beaaad8e2", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "74776a874721d95375e84e5ae60f389164d1b759a0e2d51199e547b1bb472fb1", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "313a4da2ee3cca5c84971ca8d71032ed155fc906ef6dc9714dba2fc4a264249f", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f847c69c460b2a9817c82e952f93f65eb5ae9b9d5375debc38d7420f1661302a", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c795f8c0157c9ed4f774e3a13d0d641ec35a6e7f434a411693ecfa43ee24e408", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "493123029d3377e1cf2cff566a30c441bc194e5fbd601262d71567e4f9e08754", "T3T1_de_test_lock.py::test_hold_to_lock": "b2136906b71a65f5e949f79e80f381b44a5b87e59f67f23ee22767abb588dfcf", -"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "63c08446669db6dd58a639b5fd2e18ca75f8f0309dd3588dbd7fe8d96352a2b4", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "bf9d0f3b2d019fff0af115958eed8b6aed3b8794b10a18ce02dd9dfb35037009", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "79efacad4f082f5e54879a81dcac263a01a7583a8d645e5f2102f61e308671bc", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "24aa2a6456eb25d11f397d6428e22ecd7f383d7e0b23acbfce83f16152be0739", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "d03415a903ff30a7e914cc1f604f1cfc5b18f4a5913f9c6c4fa277b2ec3049a9", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "c3e64a77d2a05749e3a0990b886a5add4d83a1f0f76591e30d656fde787a8749", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "a9a9ef272867b481d344845124830f335e00543da7e2ffca3272e99cff6e8f3d", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "2668619446bb0d4f27a1c6c16cb9062ae25fb575ce68b760463d09bf27850d8e", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "92e2967435a149563f91d6a7d5c972a0001adf26847102458801f29c4f2a10da", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "9e11c0cbae2a5eaf359d7f250f1c32c96f8f5b46423db590b34caf7674b2ee37", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "92e2967435a149563f91d6a7d5c972a0001adf26847102458801f29c4f2a10da", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "483f544613d207964d639a972fddb89c5a727633e412d8e2b2b3ca2a984df26a", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "64858a57ff8101fa7b28bd4fe8d5aff9b5c221d33c4144bba399279895ca3d13", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "b311c171f29da6eb4410dda06050e7f4d62b53718c00f14875098b18b1cbe451", +"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "576c4416a551f6d25aa15a49ef6c8f465b917b735040cf841f7eef0c48ebfa62", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "388b692a537e83fcf6ed945e0735d602f6511275a2efe055195f10ed43a4207c", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "9cf841827bf4a657adb1e75d727ff9331f9307e854e1ffe430c5c9c5b4d2e228", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "63ac613b82297d22d719be6982f0052dab53220ffcb9b0d7d9fd0f7c68e97b08", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "749cd522e5f0a7afdcd8ca341fced2a5905d34f697f8e06b4116ec106a0ff3e5", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "0bb0f6acdfd7669c99fd449d299725ee92720fe7ba78cd06fdddfea8b897c4ee", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "09cef1a136def3f447646077917ddb4d30efbd44b7f7b68aa3e7f2153d88ec60", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "0daca82918358df02cb3bea39d8058adbe4b621d5fba1e576449ae9909877dfd", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "710693a61ffc28c6debc3741e70ea9f113118f0e0987a57e9d26dd55ea96ac8a", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "78fb72b99d26944ad2e95bbb66a54016916567c42826f5b908dd6d834b9b41f4", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "710693a61ffc28c6debc3741e70ea9f113118f0e0987a57e9d26dd55ea96ac8a", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "4a70e9b7f56937f8a859f74e8f9d5a1b8728f6d0a97ef885fbb3c0a0b64e63cf", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a6405a19b8ea78c744502c9c7dc0f59b103a0cf18b5ac7172432fa3fe2b2c136", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "5add02f25d1d1b500ad05b5cfbfe6cd3c47f7fcb744803b242f6645c895170a1", "T3T1_de_test_pin.py::test_pin_cancel": "6f240d48b47ae0351c37101cc7cf29b14679595539a1347caca4b0858f9a8cad", "T3T1_de_test_pin.py::test_pin_change": "6816b4493a1a917065e124910fc3ccc4c5514e94b3b3c8983924b25450bacdc7", "T3T1_de_test_pin.py::test_pin_delete_hold": "1b074f169bb04573da6198862ea48f72dd50fafc1ed1d61dbe255272931065aa", @@ -15412,10 +15412,10 @@ "T3T1_de_test_pin.py::test_pin_short": "43c58c441cbe7c6b62483812b9c88ed3376286d1e00ce931e49f92b44d744959", "T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "561db133f0d612048fd08b46d438a4a500e064d3088055c9364a5660afb01103", "T3T1_de_test_pin.py::test_wipe_code_setup": "e20e2c935c654931b9786df91908aa544d2736e06eb78cb0ef54d44604d5aeae", -"T3T1_de_test_recovery.py::test_recovery_bip39": "913cdb82f5a8b7018c96c2e9ae5532abe0cdced612461dd7cde4d4f71a38cd5b", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "79358c80045a608ea9f756f7166fad0df325acb6063f324f911534f95b3127f0", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "1ed0327b885ae2b1a8f582b4e049e8042fb2bea7f44f50c0f7cd1dfccc8e2700", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "1807c3373abebe8599094398c0c36755a2fcc409af8f095db5636d97beaeca2f", +"T3T1_de_test_recovery.py::test_recovery_bip39": "36cd09c4e3f35db162045782e30483f65bb078d0cc6ef8b253a8366cdc3ed81d", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "243fe1e3318810cbd64979dfb1c56050068cdce08ebf6f2929c2a2e6f4f9fc35", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "64ac5fe34475660731751e37f2e22e92c40e70b0bdbcc1dd749c2e96f118abf4", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "f777a0875e73b00d7990ae2032f410c6cabc82a23bd5595856390bb2ddc193e4", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "79fec4c63285b7abc909e1468ed83284ead35eaf1cbb0f46bf962da63bf5bd64", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c34695e1386509934313f1fab77b51c86bcf412e63d9327dfbd2cc616073ccaf", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "61a8f813635e4c118033cf41a54835aef433f7b08fbbd69eb09771c621ff54b9", @@ -15423,30 +15423,30 @@ "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "0ed3acb27101f11906cdf5f1715f31d251ab5547a41b1a7b4d0f0bf918d774ce", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3c731b042fc2e0b2f86391320f30937310cb6dc147057691bc14f52b73e597d7", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a28905faec2a54e67df6f9c67a94dd84ed76fc976ca4e8b60bf2cc7f6ce3415c", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "a8488ccbfef402f88042a970ef97b863edb269319afb93cfc03d449823d25726", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "130b0259aec5a8d067c8e826b590bec66eecbfc1d8b30bbdee979c3cfe21935c", "T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f1b5162e62e0fc8de8b0096111da724a0852236c4d5f539ec81c5270376e00b5", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "e93325d02c6a337bde5a5721c9ea5b075bab63fb86148d5275b0cbaf2236c99c", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "e100dcbecaf3a9afd71705fbca98ccbe52881c915021e96d9883da1b98e74be4", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "a418248cfe49d474ebbbbae6fb45a7acbb4f33e528070a3a98092c07f678e19b", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "b2d26dd11d27b6e51c3496df47b4b8851c932c6f41db8b8e61c177e8a4daf328", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "36114e7a5d1f1e35206dbfd3d129b7816b4b240faa2ce243dc6e16a57d764f28", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "0db8aefbf9c8753c128772f2a7ad9ccd9bd5c762496130e42de549d5d4b79ef6", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "b660b9a812d5f45d5b5ed15a26ecdfe72c4ba1c847bfceea1033118863a2d3cd", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6ef9917939ab80a901c52b193da8922f0faeaf388dfc6fffa04a787904a02a8d", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c2fa7e451ceee2968fb6568949bf1c0ca108e9ab04d74192c491d3fbc2ce735c", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "fc9482440dc8a8176d69f88544b16a52232e51de1fce70425e48160fb3c29471", "T3T1_en_test_lock.py::test_hold_to_lock": "0dd53e59ef70d6b20ad463f16ae28ad18472cd7e26e5bf61eae78b05cb395009", -"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "77fe6f8bfb1ddc6a8516913c2ebc669e6b988e6ef9ea6846ef6d94e921fa65af", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "c5540d1c33265bcd397b8a72fe949eef9b514c708fb3bbc2d3d2aef804cc8a23", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "ce2aaa6bc1c26c65a4278ebd3e23dac4adf81fb71dd72af685db34ba766c3935", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "57ef9ab3b4781fedf32b0d1c002f207ccfcfeefc1edbb56fa7bac7504bbbb610", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "87b90e0c8853ed000d13d3f5c7b26cddd2bb2e6077130d337457b4b771f80bcf", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "8b3784f623de67ab36519c22947786863b57b8d622591094f6e3c0cb8723985b", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "16725e1893eac9da55ffa31c53970986c10b3fd752f098a8a8736009046fc8cf", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "1fae1d8fb923e6ec62d6fcadf4bc73d802f873e04373b7d0fe66c0c52fdc554b", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "6b5543ca18cb03fed1b4cecee44ff771cb5a26f42c1da3d6b65d56d03b1cd2c9", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "c1a9329e18cd81b385a1a14af4793294172ff0450a7fba337f1e727a1a1438ac", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "6b5543ca18cb03fed1b4cecee44ff771cb5a26f42c1da3d6b65d56d03b1cd2c9", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "b57ded3b31901a1fe3cd7bc019cb9168e4126194cce02fb0ee9f41b2d6e30028", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "bbcb0e0053e1bb96d2bc52ffcc1a4592d8f51489b3c36fae640b6a9509c8993b", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "776b1b1d580b1450810fc19f03df408d44600360dc370503c440916ef9ed5639", +"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "96fb5c5ad65e0a5eab087fba30e610acd46549cc626f39a339c7b0140cefa3bb", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "857b81f2ef01eef0e2faeaa9b98885c916b769026e16744fcab1c48c1e6c74ef", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "dd1789231e6733fdfaec5f1f1c1479e551d7dac3e1b24686d935802ae4aa6f20", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "e7e9cd481bf8ac3f47812600f0ec0639bb5b3fdaad5e08846345e372ef5b8cf6", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "978569cfc68853d67c89f6f3417303b00d79e67747e296e4f4917226646ce555", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "35c0c81b1d6dc8bc5d45791e7dc970525f2f2546f6b30796cddf0be78ae079eb", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "a7a5715f05772ab16ea56b635c7ad4591817cbc3d84efa784e22853c10512e75", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "94cda7276826c3d88d7c10cd323f77c7f30f1386274fb41678b09bc99a890529", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "0e36c57eb04de1dd5bf5ddfddf067d67eb732d2034bc492057fa3891b7336766", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "dbc51bf6df20ecc63c119ccdb2757418f0c3c3336136e51ff9eb89b3fc301728", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "0e36c57eb04de1dd5bf5ddfddf067d67eb732d2034bc492057fa3891b7336766", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "61aff24f0bf2cce74b2723c0d3c0a869591d7fcdae28bd1774c902c721757ae0", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "8d82e7fb61640bb3f7270ab809b9bb8f5b4374e09de87259878d6de41aa615ad", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "77a6388005e15f3a687b53daea153f3c35d177f12c0df13735e0a7ea3f08bf48", "T3T1_en_test_pin.py::test_pin_cancel": "3a9aeb25d4c9de34f42e17f847eed1193ab975171cf84ccb2ebe5285750c483c", "T3T1_en_test_pin.py::test_pin_change": "b0bbd994d34098e9dec14abf153dddd9a865d068acda5cffbae8f5976e21c994", "T3T1_en_test_pin.py::test_pin_delete_hold": "4e505fc48e835b5cc29fd9b5067d5987d2cad92d495eef7d06ced69a35f9d85f", @@ -15461,10 +15461,10 @@ "T3T1_en_test_pin.py::test_pin_short": "79796966e4367b6d6d13acd229ecc9f13bb2b00cd030bf854184d94176f1e6eb", "T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "19435c69b4111ee84d73ec996aec7150c3d0c8492203d3aacd96a64a9facc2da", "T3T1_en_test_pin.py::test_wipe_code_setup": "ab34c35e04c86f39b8ebd6da3b48a7eb3b28cf8eabbcb4cbe17fc788ea7f14f4", -"T3T1_en_test_recovery.py::test_recovery_bip39": "6cef02426ae982ba6f9a1dad77f8fb42f7b03712fd0dddfa248ef260502d9711", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "8753d8e1e49e129114d7fd529d6ddfac5b50e9724ea142ba10c0926ffd50783b", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "f25cda2a74dccc5582d80367aff337b532eea0a89b12a1a5ac2713d6c9adf5ef", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "228275e28a1f0dd118e76b3186fb0c4738f060eaaa90c787cdb57ced34a2456d", +"T3T1_en_test_recovery.py::test_recovery_bip39": "dfce7ec45313bf75375236c87841b5ab43a9eff079022ec404f051f18b1b0ca9", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "d77c6f95aca273ea41e5a3082b2523ae868139ead52a4c38e5f1d035f421ff73", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "6525814b878b92b25d5a86eaab07071ddf5844d16dbbae590085572fc7185f9c", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "32f1176afc86d4930ef3fbd7b222ba9845e32f80aa42e302f9aad5e63cd812b8", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "a0774a5569a01ab853104483b002fe85e1b8e2f979e4516cd9b532a2d45cc977", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "85431f3e6bdfc696e4c6bd574d43d03fce720fb488f868d60a7a8b9c29bd5247", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3f63701cfe0ff10fe4d5c49c877e27879891cb7c42b19bb4d07d163ed7d0750a", @@ -15472,30 +15472,30 @@ "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6b231fc2cd69cedd33d2528b57f8136a5ca3b9c43b698e3ac20110ac31e6ddb8", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "8b5ce5e34200e989c1ddc6f5f3c7e4175891ccc043aac7209fb47b74ba51d61f", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d5cf039ee4bd1489039c8e31f8f90d0b075edeaddb2ec22f55543a8e1d8b8a4", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "9321b6f60edcc5560ef38209bb8e920a0ed6bca7a217c8d55346878c95268398", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "82df5a9a0e7df9f617b29bb16d01acc5b800635c420680ab9e546e8c908a1748", "T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "3f9070f1b83a17e4a428eeab7b056cf088dc421f21d7819f92dd07d63ac66cd0", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "dfd01aea0e3d989bc8a8f253a0b570e23b81f5431da8b6c85b7e809cc55ad0fb", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "3f8cdf6f79e1d7c3350025580730f206eb1cfc572437775030cd77cae0fed103", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "788a81368049c19f3528c0d47cbce3894d5e63db2f9b91f43966f71219e0565b", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "2a7d6f2a0ef28d9111b5fc6d1670c6a4df6fe00e47780bbc5b762541b85d45c4", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "8c9e39c583899fe215ae1b4e71d66ba42181246fa976da63f4bed172d1c9bf76", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "db570883f26e947bf58a61c8841c34a1147443ca28df1af706736f3c97d97cf8", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "f3e0e3f77a9bc5e247914fd423087efba68434c7e15219c8b2b2ea76d308c140", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cd8177dd73c1d2c9a67c52a41411f70306dce132350aac62ed562e8fe8d722d5", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7c493d42115f2e8ba1edbeffeb2d87f9fbdd646c37f5500c7082f71d37b34ad4", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "809ae3f75e4e4eeb61256b7f0b7c5354e362ca3bface379e5f18e63d4f1a4402", "T3T1_es_test_lock.py::test_hold_to_lock": "22121f35ab8ef5850185109c604bf540c3a7691b7a61c46ddbebc78e36e59ae4", -"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "3fc39e02f19cf7626398c62eeba26f2e36ee6449e3390283fa96c016ea85d58e", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "83116b38b2709f164d512a3e53dc36b2fc65cd635f8cc5dd49a7e4d01b52b554", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "7e4da3874efd61f9a37ecd276a3f104d15b511a075702de130ffc1b60ce96a2c", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "7907c3aeeba7e025afc328996be1c5db4e8f56d24e8298ffe375eddd33633ecc", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "7fb9b967da7546d791ba90059ab1028e29e141b649e30a36622c1dc541bc2145", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "e5fe58f58b2b466f84ba5128bd6071829217a137ef11e5e947947a42c5bc3bb6", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "9cd54f93cae59251f4de90d31b1c836f2dfe1289c2cbde94063e26de081f14aa", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5980de7bf7b130322764d4c31d51d81f9f333ed5c9441889273944feaa822745", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "2de2f933e589cb3690b1539fa1ad22e02f72f02d589613cb8bc26ebd2af8b90d", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "af09acd02280f7be284660c96d04eec71292b6803ca5b53701c3d3880c9eacd8", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "2de2f933e589cb3690b1539fa1ad22e02f72f02d589613cb8bc26ebd2af8b90d", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "e5bedd7d738690456c1e33f2af5b4f60fdfff41587013a5033c1431f59898603", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a955954f8e760b13d355187c3c08a60c2d47915d752e0b2adf097ed1de650a7", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "deaa6422b34f850d1253d4fd97758b7bb9f01debdc34fe7f5615e4db2f58cc39", +"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "aa473da16607da4aa0ca88c463f5bffbda15c8490646d33bddcf3970ca33dab3", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ed36652ac8e7dc0f66d55652b7a75d86af9487dda7519f761a332566e37f9d0d", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "64827326d894a5198858792a7aad1f0c1c247b35e9b08d18908dfa37809703f6", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "767c090c2e16a68e7d3977603d39f8ba63784d1f7f6e7bd74c6e3fe9b39b9c8d", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "a512600d91c132477666809584705064992bb8df350d8500439095dbf0ba7655", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "08237f939b2b546b4bda60ecf060b7a93a43b3e5353c3aa5aab5200093330718", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "168bfda12908f9edbd2cf2f395a0620023f82f0dee80fa6f45ee402070960839", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "edf5d4377b01e4309a44a05bd05fe66e054d487946bcb164e35d3cb04fcddd83", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "ad15d0ea00cd0bae37d69706c5b33f899607a188aa2bcafa54a97b7327bb47f2", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "3b00f3d133283e93cb1573b2787d33fbc38a30e2dc6edaf316ddb3a19becb508", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "ad15d0ea00cd0bae37d69706c5b33f899607a188aa2bcafa54a97b7327bb47f2", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "4008814b526127b75952a97b890b73c40aac75d09f783a445e9d153e86462c93", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9718fd3c6905a8c32a8b59ae39fdd891547f7cd3996361427a38265e4cf5ca28", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f3c474127343f6a200f3edaef9a58356ce6bb69fcd5901914f56e207987d9e4f", "T3T1_es_test_pin.py::test_pin_cancel": "cf9fbe520b7a777148f85f1accd64c6f7e6a6ba3abe699c6953ed343be136c3e", "T3T1_es_test_pin.py::test_pin_change": "691f6ef38c0de18b001e5af30c1806c3db06408130195c95781d3a629ffec244", "T3T1_es_test_pin.py::test_pin_delete_hold": "7420f26a620108a54218ba12a8009362b9be9661df3ba263233630133826e516", @@ -15510,10 +15510,10 @@ "T3T1_es_test_pin.py::test_pin_short": "21a6007121daa2808055f1fd035f00d1b4e5e1b51f4f1bce286f781bb24cc825", "T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "951f98ebd0dde31c123c7d93eb98af5d0bf5147f2bd28a3014ba26d8bda58d5d", "T3T1_es_test_pin.py::test_wipe_code_setup": "edfe089762dabc918417ca26916a6ad1d0377b8617255c169384ef8728c17381", -"T3T1_es_test_recovery.py::test_recovery_bip39": "2098a387db6821b94187295685c24d0aee03e27c95f3fd842431d1ad64fbeeb8", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "f860197aa1b7d8c7b0dd5616bb27b68f4d02dee379e68f9b8a71244a7ca848e3", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "3c4deeedd1504662a78f8bab9bf18b89405fcc945b67721b8ada97824d432b57", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "29fc4a63e1e7d550019bbd781228382c27441d576a4a8387e2322fac3c6bde94", +"T3T1_es_test_recovery.py::test_recovery_bip39": "35e4c2afa5a73759e1cfd102bbedf3e8832b7335137c2aa647e9f1360cd42ce8", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "579915d32e27bcdadc3f4e46fef1171577f49fb9e36339f1fd7c8df1f4eaae8f", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "d092abc369a9a86d1b98731d6a86d37b92895dc2fc59fa89bd6dcabf68288e7b", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "52672e88307c5e5ac4d333b291c3d274ecaf2b85804e3038360a49a54a8584a6", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "be3ebd0f242fab2389e6731d1ea5b16a4056cd02230b3b03c12ad1320ebabebb", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "36154af328abdbba03d29323c27a1be3778acf3a9e4a192b57e9cede707533d9", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "df14300374cb11ec251dd635193a0d7cf4ee3d8f7409ab71da2aef6c64a7c723", @@ -15521,30 +15521,30 @@ "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "96b66cc1944ea191c75e525ad7cee121d55627634087a7a845afa787da500d05", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e25b10ab63c55f12fe03eefd50111a9aa918b21667dd83426dc045634f9395ee", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "228265069b1eb183eb0ead8aacb1da337eda6dde9ed5c787e1f6d96d392f334a", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "d7bdeac79ed469879cd587ad73be204cc40e83e03c866473cec02197a9daca4d", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "547c7a970d5dbce28c9d46d54ef64a3a9de34ea4d71477a936d7d438170b9144", "T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "0ef21ef513b58f81c2ec570209ed941d4f11326b9374e6b4b28036548d60f58f", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "b452fcfe4d896cb3b5d2c887d2156f8119d7a7ff05c6ecfdf0217fbc3ca8ba82", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "2a161224d3797d17c6f0bf10acf211456194f2ec09d67791431156396c888dd3", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "60cd38d27c52144a463a29f549a20f6c455975ca8a0ee0bcbbbd277f05adc129", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "fa5b654ca9c772cc4b4ec802b945c5aba29021a48124733599ed930d7cf130d5", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "5397eaae685d28ecccdbb18289c3a9ed499a6654c95810f75a33a0aa2f9edbaa", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "73dba307121a90389ccb0df8623a22c0951fe638592a94360b1b43daa92ca55d", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "cb88125f308e6181dba45dc91223ebdf9b97ee0ef589d184dad1525666056aed", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d37f2008babc14ac37f74514bf84c0a70b5ec5d38697283263006c76c7452533", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d5e7b13490549c06445dddb887f28cd91eb97715d53177e845b36b229d942f65", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b1058a3a280b1a5323215f3fa3a4e7a47d274d58cfbb180a781b3faac589ab3b", "T3T1_fr_test_lock.py::test_hold_to_lock": "31961b0cba116a3a786e5758e4753f703fb9b8499d4c6cc7bffc8a162de70e82", -"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "6a74ce7c04eb4b26b79b91ee0f1580e1296ebf25750f5b237451e84afabb69c5", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ce9ad70bbb739a124b7fb0e039a7c63954b04609f869c549b4ed0dbaab590c7f", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "b4ee17ffa5f236746430884da9fafa69379ddb5c88383d517ce7e5cc1d88e7cc", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "1a9a52cbb9734fc1b6c1f6610532665984ab30714ee40921e102993d28715d0b", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "eab6600d86eea3315f45a373d78522d46d223dd504dbbc7744e1aa125fdbbc29", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "77efe5ab4177417e2f1a3c848ead5b85c9e0bf43c628ccb99ad290e61b355bd8", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "46db90a0d1211e58c72e06bec0c82ae3d46c6b2ad82e12786e7638af578380e6", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "b30d08ecde2447c5dbb030bc7a9a6560dd8e7e7ceeb82b6e402c1f57ff3ab95c", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "4456f7dabc049622d687f2c1d1665e5df91e7cefcb437d1bad377153e8181f38", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "0cf6821c9ce2cfbfea4eac6ecacefa91b5323ad657236426847c7d5b4c0af1fc", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "4456f7dabc049622d687f2c1d1665e5df91e7cefcb437d1bad377153e8181f38", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "44132964953507dbc964d44707e9f787acf351ff3ae98c8504ec8d95e28516b5", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "c367ba95529a226740fe7acc2c4eb7b8b971fdd7fc67db44bb4325ff721f0feb", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ccef614ba1920f596c45f674c8578194b79e1bb81a6c2d8bf1de7bef88a652ff", +"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "93d1de96820334a15f9586468be8b947168b0527e36387a31752317a0ca88444", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2c9caf679699f256b7e94caf1e3344210c2bb8b23716f021b8227815c67def2a", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "53eefd58f49cb1d87b5f738981565c1bb98aa7fd2fc089cf43f2c5b95fe01591", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "e6e3a8bfa780327ff4f60b004fb5d6597e4a5d06c59d242b515e6d9bdd5f86f3", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "f9ceb42a71201efd36807e1feadd23f369c987e07df2bca296dc48fb6aae9298", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9a70197679bb98635b41c923044a054f24ad534761395a0d40cb1310690c45e6", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "b66f28fd4e63a89c2588d0999d36efe03817d3fff26e44e10499966005c7ad40", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "0472c792ba30e841e8a3c8e6d2f1b815f511be36d5fb5a83b5b9d4832db4c5f8", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "e3116904279e92e35238181d93ea4a6066f33ae3a346957932d6a972f369daf0", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "37b6a3a77b77e66d633bbfd5f99e5a4fb3077fe25cedcfe818c8c089144e6d25", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "e3116904279e92e35238181d93ea4a6066f33ae3a346957932d6a972f369daf0", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "62dbf08c7c07783fb81e21a70e853f63bb1c1a08f184dd2632eaa2dc1e39883c", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a4046e8cb7fabe47e9d7d9761b88e3dc830fa0e2e22a296ea5275128ccea34f", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "a7842eee5486f2b3b7628bea2c9a7bc3a9c389589bacd4a23d94023eed9c8775", "T3T1_fr_test_pin.py::test_pin_cancel": "d609821dc4caea0c9b8d44bc090d46c3b39908dc6fe20ded1bd663f8b1df0181", "T3T1_fr_test_pin.py::test_pin_change": "7b33542fa2f40baddd28aecabca5ac079814785dd91c136b8da8e54ebb4006a6", "T3T1_fr_test_pin.py::test_pin_delete_hold": "e8fcfaf4854e8b529629e60cc4570ea22a64cf6e68505e70bfdf289fdf264713", @@ -15559,10 +15559,10 @@ "T3T1_fr_test_pin.py::test_pin_short": "84ab2ca4f7495f000b368d2d3018bcf7a67b9149c4f24e9c1c6b809c3a23224c", "T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "9fbf63afaf25ceec9a0b8d17ec83c0a7a39c7b106ac13519ac196474a083a31d", "T3T1_fr_test_pin.py::test_wipe_code_setup": "943ea3640d21ae0a79655035e2aa0722cc7b79f6a9e17bef39afd9ac1c327549", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "1e242a9525246a099363e20a8fea52d10e774a5dda083517468556dda07307cd", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "719f1efb87aeabc1f64ce8a5fe770eb01245ac0a632605f342bdf69aed35b500", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "bd1cf9e0fa2a9ef688145f2ad6a581978c1de36a05ffd424b45c41195feda0a5", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c24ff45b574d8b4e432f495b88b84cf8651ab8b862318cba088097918da6b723", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "8b277d4eef70dd761a740ccc3d543d8a2e6e9826f46d95619b794b065ce12966", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "34140a34950d35276fd45166cababfa52cdd5494741e27bd8b99cddcec99ad65", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "471d84d67e4c09958a078a09554251013967a603dc9be3e08ef35113c0e31b4c", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "e289661a03edf75a37023cdf13d3d7f2db7a09756ee26c2f1e9c1f60f01bb803", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "02f84e41630064450fd3df6a35e385cbd857f9e705a5e5ccf70b22cac1ce1f51", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3ed54b58ac12dad63cfb294a4143f23d8c9a94586116f6dc545f7a2a177aca89", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "39e2463b3b70e9a5a9a1e643e1a2f61f41e431eecad1ed487f9476c6c36d575b", @@ -16548,37 +16548,37 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "4a350b1a04d294399168054453df78e9c4b700c93cf22cc2579a1149d9082dcb", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8ca2284575a867d8db5d7bf02ef8f945eb537bc74cb404a0c8ebb204f3245e18", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0723159c480ea641e5b2b69e00f408a6cb9bb87c1cdd2c78772c29d8e4924341", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "09777a8abf0dceacfbd407ef20a4de9cf95df987faa5cdfcc5069262f03c6ae9", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5481313fab6f11ac386360188c47d0fc97a895bef919c8ea58ba0972aa12847d", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "7ab8c51b637f0ca2f1621c0e4ff4cdb51a4fb6eb3f02c231aaafa4c580a5ca98", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "fcbe31660744477fce02a61c484b242ce95b13a3df6f3681a072c32b3c5f618c", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "70d574b4c3964ea3e0992c62079f90ddf784703558dea9408efdc766728dddaa", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "05a1426609628a49e1f1d26db192dba2452865794fee8aa8ee9ca662c1febf33", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a2e19312f80697fb2a98d9ad401b9a4e098b1488be7ef446f1349e54e134920b", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "37e7493cdd9d106bbe2e84696cc07b5cc0df5d42a56899fc42fc3383b613609c", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "29132647b4f82aa01d2c737f7c139147e228772ef440c025a95e5c76c5b3e8d9", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f3a99a602894d1b0785df71b28821e1ead435389af845155bca3e223e8f95ce6", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0c0de61042156a0989c2d0da9f37773c15a14a33d1bf6a1f376e61c4216468d5", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "be2bea44f033d89ec5cd10e6df11baca613c55afd85e47fc1cc1458393a6d3da", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "a5f49abf91e9d80a694f54b76ecbe2ac8f0eaca4933ff34401af8c11e9a4c40c", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "36f671ef660b38727275557cb6ca50665df9f0795c3c446bacd9f2b320453f3b", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "fd2cc76ac0df8249da66e3102d3bb22629d088651dea93634b8b90855b9d3296", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2b0b3d0f3a5d623aaedc31f00c483fd5159c99433d4c4f86340029a220429061", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "058cf0bf4161817bb0e912472e47b39bcd7f8d843dffa9104ff93ba0a30ed03d", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "24b2d8c6d2023295805ceedf16fa6be3b4e333a861bbed01a20d150e011475a7", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1d4c62cd4856c67b0bfcca611632cc1b192c66ff246a8fd4283f71271a8944c3", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "24fc1057e85ac16b0b8776a9f7f27b138f16b37b4dc5ae76d2e31647a45deb46", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "ae7e8a296e68e872ff9c8f06224ddc742193140fc4679fc74ebb0efc32981353", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "092216adc5a1e4ae5bc77e0a872b5ff23df4031df727210ca7e3e8fcbae2ac40", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "725e7d4967ef39fa6d37a96fcadc26c463106c8ad44e4b21bc1857b305117cbd", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "df3172c93156226a540f2a36c4d280a0e19a8002cba1b1cdc5a45fdef90f323d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5ec4040e1dfd0f2eceb7112368a51717955e6980ee6655f41bdd419178a37e94", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "585779d2267de6c12617e30a81b329e5a73aa33b47c370a0259c6d9526ce9c8f", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4a34f639e0a6ac6c969dae2d23a9baf0fac4e3be9a0f2da482da7ebfbc789967", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "28a4610bdd2b42ec9c1b484917903c8ec747098b583df1cecbed2046b5452a8c", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "3699fc405e333ed78dd77d0f5c3f5310bd893cac94509ea4271f7bc400341151", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "127446a5c7b705e19c2b2e642243da87c6ead65d499d3bf242eb399e0c069d2d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f36ad5dee7039c120d0f14414be813394deae22d1acef85737ae89479465da9a", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9fcc89ffa2ba401ce892e71d78f870f8cc50ecb5b827f354ba9e8885a5e3e333", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "8ef53d496c1bb8e5e82f29dd3080802a158b01e164b922cea023013b31b7ce22", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4c000ca654f4ac17963dadd49e4fd216bf835f1c026ff1a67fe9d90d66f4260d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "87c47ae29b6f30515695ec866169d2a6f3b6feeab70cea247c3b5dd0c88315fc", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "1bf03de29a24ec5375321c86da5b070478ca96b967f9319fc834ed4020e3ac7a", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "86eb217c36e1ceae594a0a38c968774e2804a08ad2f44c702ffaf204a2f9c1b3", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "1b8f765a75803dd61440617d3b9e631110ded5fabc453099e5460b9d757ce515", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6417ba508e6f0b405b9afb505cd230bae3733932497117813c811057aeec90f4", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a3973cd71cbf85801bb61d6591457a0de0a76c04d24f09199823c5b106a4d335", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "efb1d0f2304c91666df9bd9a51c6717e665cc961c182bf9e7dcac2873219c40e", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "309b6ac236e37763ef7722fc1fc5c318fcd0c0565443ae87765bc9fe665048f0", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ada05456f347fee1db205c38fce573f382939545fbcfb3c99a15fb728079d442", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "636fb9359cf8ba85939d54d63f1eebf04392f72a1d8e6b0e008fe49c246c1492", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a95c75f1f19e883462968e16dbfd0f2a5c2001c8ce8abf9fb2c8d388f811330c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "94c80ab4df61359f29967bb71b1f89c13756cd251d5a1f726dcf7721b3e0f013", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "a6f718b5201137666e6c68332a9db67ee0aab13b54c5c96036df218fbf48b80a", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "de3725bc9ab0de70475476b02bd00e2be269319737e90575a216649d04b638b1", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "145cc89ef516b970f2b08e3f9b33f8c47ec21247d35c03072d3c2761a8c732d4", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "98053a571ac2fa884d422f08b202d3fa5866500eddb477fc00d76128822da405", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "bdbc7697a0d323816940902228f3895e6837b6337fa3f56afd58f2f101c7ea95", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "15a0fc0277bc6a52a2cacd3d97d1484ebaed87f47cc672e5dee95b6eb1c8fd08", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fa3aea6a28c4b350c3d266dd6174a2ba8ff568f504eed1ce8f7328439834754f", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "947e51e1898767a91aa47b87d55625fe433fe12a972fd1bf28793f4a026cec80", @@ -16591,9 +16591,9 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bc7d0692b8e75f8f18cb2945716b638fb68d759a389dc5208c168b3d0f2f1e7c", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c971a4b888bce33e88eaa3d05908464bd80a65ec9cd33372db2a33d82f516aa2", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "48a7c0b6cb8996e0c624fef8c74f5c6d5206b8315c9b471afd54305e632a41de", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "64e6927dcbb587b49577b472baab8f292cd6d7ae8a553dd554dc7cc08bee3f33", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ecfbd8fe50935b075f61c245c8e4207929b30df9ade8e022d01b78007534bbaa", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "2a169d4065636391fb58113d165f35f2eb43095840ccf0dbf415e695b1a0680a", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "94521044b9e5867b9c09a61ff6856a573fec03f3306ccc126fbfddf2ba5a9bd0", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "40af317113dd02d4f02997ecdb0bc2645795366221dc51f2e73e0879127b1ec3", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a2a617d89a8e05e56ce684a2bcb9ea178f38f73b98f68a526d7801aecf8d3ca7", "T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5084f60ba60f34ee3a842ab511b724b258f8cd61349d5f8fdb434e567f0b8fc3", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cb3aa03c5280805fd5c1deb7120ff16b1477141a7f5c1dcb23da16f7452e194f", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0c788e13e515561c0bb766276df8afd5c638a4fd277845c5e934e3381ee37d2e", @@ -16861,10 +16861,10 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "4489e8907a840ef83289f4ce45146dd4ed59d26502af93eed4e379b073842eda", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "d806653a6d4bd2b71c8b2c1995f56875115783f53c43be220e026419df16c1a1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "4bd90276272d0a3ef71aad24bf5facf72bae079751373abfd007258740346367", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "59738f3c625b07018f82cb0102d24330857950593573572d2d1b51054be4742b", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "0f30546934aecc6a273dd29811cafbc161c6c44873b850e208dd4c74343058db", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "dc4243a930798af918c3cec2bfaad336068ca749becfc59b33adfb50f8c7fe6f", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f655c774729ad792a5feece2157698f778d319b7e531f52f5a9f5e95c894daab", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "de3f78764b3f517dffe61a9dcbef65202faffbfb6626f52247d43a8733196848", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "5142919b9e93bcc030e90481912cf3afd81ce071536991be5e6b02c46dfdfa8a", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "0ff3ac7c7173752f4f728fac5ead53fdacd8c8b47b6fb0578d457effe854d518", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e46aa83089359ea8c73b8589c8e543adc7be07fdd862bb0f70f6fe6430cff001", "T3T1_cs_test_sdcard.py::test_sd_format": "76c7fed29920e2339f0f29cb9545474bbda504712ad06ac0c44d8d767448a35f", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "19cb5bfc1eafb2aad10f899040705034f5bbaa0104aeb455c08cbaea044ad4a6", @@ -16881,10 +16881,10 @@ "T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "09d51becff25e14cde93c880973b8b09c13124db9f9523fa4108efc82c70392d", "T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "dbe88e8b02b25115ea1fb6b55d37efc2c5a7cc297cbb698a275789a50a110321", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "5fe9efa8f266278a4cf16dc1345aa73996d2830fee4f61ba9a8ca0628ace59cb", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "23c7e79f4dd0ed9a3203889159a2de0998fa062622ed9751f08b9f1f9f8b165b", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "b4b7a75e7df32fe5e92f3b1f799b4981023232cea7ffac9a86e6a4c1e5dd9555", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "6f47b378799fd2905b63a43e53695fbfd437ff5173da4a0e512716db84282537", "T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "392d42ce2f371b3460f84fee0bc60c87c64b004e44c1660319e0fbec7d628aec", "T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "680c6be19b6652a1c7c21463f9d1c036e42aa3d38f48e7f828bf9c434325975b", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d0c6d02cde6433ff256b99e465f43b8fa64c0e336044f6ef56fc0c749caf7b5b", @@ -17895,37 +17895,37 @@ "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e88c0d1eb3d97eba69d70189ecc32327bd79adad11d62ffd8afe5ca1cb178c26", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e1790ea47461f58d75a30ab3f1f295ac006e43b3cedb33a1279f263635650654", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "9be5a7cca82ac8a7f5c5309f9ee4646933e8866c3ffd62968f79cfe928261c2c", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "dce6047a5ca9a4360ed820c0d2f1acffbabfdf2d7a336b3eff0d7f153fcd7c06", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "057ca836e3b18f19f14d984cd7d2870fe40de824692b34ab234687377cf68e20", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "68959b0a32797150d36d026145561c1ea2482f74ca5ba4c891019cfcc51f6b8d", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "130e29ea396be440b755b973843eb8874fef9818062680e604f78abda5b87dc9", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d401c1be20e9acee8b90dc000460813f49ca4dc43177464529cc7e0e38afa118", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "0c39973c60db9879b4c9bd831e521ff981782bb37825797df0d59cd91baa0788", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e30d686559052df61a65a5b56a41adfadce5c4be6ddd0f91d139de0ed660c84f", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "95d9b0d5c513c4d610ff09e69eecc23ab98716b5ab340fde212d7a1b8f269efd", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9e2a9c393d9339e7e527409119cc26681206357285c2208994265db494b7c505", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "6cee83b6bb3f672bdbd825e9fc757b8d3cc6a0fe668b35755f8a39c43f30a2ba", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "3a83bc0573993dd1c11f8fb96aabb6ea8e0d5b5e8d7b45e1b90d2835db87b964", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a939b35bb1ccbc9941b8b5e3724ef6f6d664986b86f2a08d2ffbc47278b08dcd", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "9bdef6c5ef61afbbd6712bc938b6a67d34485642dd47705ec94d5f996a56bd02", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "964f1acb7c9479e92b5bed9272766c73ba1d7b6936c7322af249a4e8207fe7c0", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a61e9d0e2b2907698c9c8f0376f093cc35dd7f7e93d0a79a0755474440bed58f", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "b7bb58c2a92e800a4f84df841f9ac3abc700726d345e9cb689b812e943381576", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "f335dd8961e1afc2169cbe31e3b267c2ddfd607f8e1e7486382335acbdc02f91", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d5fa29ae92492640a150010652bcc05d895c38a7b1534fb884c27905b414d367", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e94b8e538a136a3dd2fabb09397c76b2c3d123b80862099fef0053d234ca73cf", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5b174c70072955a6952c3b700cfce927814de3c7cb145dbcafefa301760142b4", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e157b4d38fe91c2f339ea670bb33ace9fc0b6dca83041fdcc8eaea131b591101", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "f9eadee79eae68423d19e3806f0a588465fd2e6f5bd3b288fe2b9f6eee9cd972", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "29552b4ba0add3b81e1f4702a857ca73b06fc40fb4b2079b8cfd95da9367e857", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "ec7b4ae29026546678c44dc3699a7b05262dcfff5141a8b38f7826b7e555328e", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "6af6b66b0725357d6c2c333af860ee054ba8a4cd8efdedb8d76083f2e4ca7029", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "1da5b40f51fb1cdc215c50e888290adbcdfd30f03bbec750a57fd3e41e7721bc", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "7b72498c0aa5de98ac03d96d99a2425d1a471011365eb41d256cc2c13568ad8a", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "dec28f17b510621d184b5a631f74da99759290541cf36fd00b244aa763ab9675", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "55d5611c62c72401d4e19807ac17f6d728d769f3281f5140d7d68b38bf4d3b35", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ab422e3b1286042d9e93999d272be669295687cae8cf856a9f2b12fc5322fa4b", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "53acf9711cc895e90eb36635ce1a4e09c35ccf89e4eaf6fa51bce84e1647bee6", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b994393d93b080551c1590849f0128aaec92b5e3f05281ad38703e389ec5085b", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "27b2bd442461848252ac2cccbaf1ad4c200253f363e48acf5dcc2629f0802489", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "5aabd4fa7147adb936816a84f684680479748c07465a622508afcce08f9bc5a4", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "017ec81c18c97892c24e3c05daa9b7b1bc13b9b38624aa60e0529763fdc69d89", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e8c5c9436755db6433df43b487c3f13b43c434a312a7b0cf2164bb9dbabdbada", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "091b69622efb9084e1ba65f47dac6ad84204350c501e7b97cd48e854ab9ef2eb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "a21b8a0d27db458f9e0344e0a24c099c34ddf0051862335b392aab1a1943c278", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7a7cc622227b930fb821404bf167ee01fe49e4d5b6203afbdf00f61c1c0ac00c", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "79fb3873ae55fe6069112cf5fbe03dae90b671eea9a41c82c6397d1b4de5bbf7", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "36994b76014bf6b50df0ad46535e992ccf25a666bc926cd5f21eca4ff351282d", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "37f2206ea586e3a4d787a88a3812d607d0a3f11580c70b141f9eceb569e4162a", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "51f3d8e2c238533c24a2982eeff37b6272ba365e3ffe9205ac8bc9790d2c4a86", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "357b584aa93da70a60dc2171f9441fe44911c6a84912482199b0bb7b2ba901bb", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "bc11576e224144b08db41d6d54b3a445de3351605af792a5595c4a052c60e8f4", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "30c3960a7449389451eb1d489b131a0447ba30788ef4101b63376545a2b1fb6b", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4ed527bf143951ac4b092943b8e7bacdb9388e8ea506258189ea03dc086981ab", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "29a95acf60500c9a5e8204c6f956785d9a77244c46111b65427a8d930e9ab7b7", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "887ea30901d04c0eefd55e18ff619d3f7e6be19a7d284de82914e22256a327eb", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "392a1f1ee9bb33c45db561b46f7949d773444fcdf57985e1e9561024ad6aeafe", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6b4d03ae67d98b8fe4eb9bd15c04d3166f109038842027de7ec06bffb2fab7f0", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dd0d48ba4e5f820250f0515954d1f204d7e29c818de37dad0e337842dacfde81", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b23aee10e4ee7b07ffed6c6868faccdf999d717fee975be0c8de89125ae58e4d", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9787c8fc06a8869d68a813121354d7087831dfe13baa06ce5b6816570dba7412", @@ -17938,9 +17938,9 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd093e21edacca6aaee4e4191ec199749d957b393a932e92bb85f8f34979512f", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "30e1be92c8f217f23a9e3cb396b41513e3405543957615eccc04d6db48be66c1", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ce8ee7157dcd5af873ae9f41260296c1045479fc18787e4e18b7dbcceb6d7ca8", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "3e298b2981ced757c39e58ba47248ef953fa81f1573980f4cb5b1974f1a03465", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "285232001bf17149e85d0747d85536aa72c7fba81c6d94eb4fd356f41b9b6da9", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "49fd364dbee5b1a64dd24542a155842152dca1ca6965a4a37e0f80de6eabd588", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "aaccb7f5e20079b5ec4cb0f1f270d7bc29f9084c233d0a62a7570b9f402b749f", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b544f08bee0eb15cad6417b02f2604fd4dba9cced94245fc4e3fff8f3d25b708", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "02d612e95bf14c4b98ee54225b542ba645c1ea3b205c896f200d22103d6932fc", "T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "01449a748875534523b51969db36b929813557726c16e2add0c60dde63ec92e3", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a89ce2f3aef9a40835e0ae74a893083414dc5757a24b7781c8fbc9b4ac9a47dc", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4d729a03e761f0ddc185632439ab95f62d2cf6b8bb64ca9bdca01ad741b2469e", @@ -18208,10 +18208,10 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "47f6e4a3a24563faff2e25b3b28377298806494cdd8b9e90f2f3fc144baf9473", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "a35b3bc3572529dff2fbc9c2fb6d7eaa5bedd362330ceebffdd042bffa2524c1", "T3T1_de_test_protection_levels.py::test_wipe_device": "ebb357b41fbdd0d78491a5864c12f347bea2c08f1b513caf30c45f6e612f2883", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "5beb24cac8da8ba6320afc9c661a678402ef94d0b6d8ee541b1c4881cc5ab84e", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "2f7027733595b927fa81a3b9b960e56ddfdf4df1bc39c3c47f2b87b24f675e32", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "95c5f747d17372d4624b3cf9c6866e13ad4475b63c1afbe0d28600ae84884ace", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1a66fb55615258f7657f8f91f5ebfb0efa844c30a3cd10019212d7e393067bd3", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "ffcd84a53814351b0b0b4948cf4db6837aa23254db1d4ba83d65ecf5ad1908da", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "fd342ca8ebc65bb62d658ff331d4995faf45cacd0b5e569af188671c0bb209d5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "7c1bbfcfc1e6016dd752c6762ad08ce55bca94d93fff3fae129095c4ec6beca5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "92f26280f99674e97408813a1c83afc9d493b56adaff001c2e368578c13d68d0", "T3T1_de_test_sdcard.py::test_sd_format": "deadd27fee071017c0cc6e1ef67f8b7cffe94502daa8168b042d1301175477b5", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "1cb949fd3c8d1b1169732dd79133fc25aec82caa6baf3cc54a585181cf825cf0", @@ -18228,10 +18228,10 @@ "T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "104cd214edf99de7a26c659376166e8247bc1d205f63ef63cf3bc7ca2e1a2bf2", "T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "e2bbf18178b182df6ec5e9e3108191214551340a9c1061dd74754e733c45039f", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "2e57dddee42e650761c521bfc614ea52712e5e13073e8d313f184008c3a819cd", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "ebebd751c01b13e111fa148e96bb1a091b5e416493a53d92f439586c1bb02b94", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "97ccdef51f0a5a156b84d2f2ced6005087ff30acbfcbdbfa050d9c39e28914e6", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "489d4eb881cace4ebe482dcbbb532beadca2281a7ab447764e3b9c3805671dd2", "T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6fbaec9f0136ef04374bc709ab3940bc0d74895e16cf7338d6a77b40f8d12fef", "T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "77e570ab1eb2d498b8896bd3beff1350e522fbc035939e57300a209bf5feafd2", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d13ed8c06e93d53ec52f740580c63688432d60fa00bde7afc0e3a9060b8758ea", @@ -19242,37 +19242,37 @@ "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e3eb5dd4ec41a52c26f460fa3b2c3e4f99404318220813575b4aaf3590481988", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b0dd8fd55197927f0ea0184c9fc6f802cac5cc1f7b6d129bd04fdcbb20aff7dc", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "0714a5ef3e24daf6ec0820869e46e96017d1b0f8a0c24e7877e39603e364a806", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "eee12f0d7be282da5a2b1b964006e0a8247c92f9785097a24ac3e24eab68e784", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0f8c720d2850c7d067135baf5e98c6bd2e9ca22a12c5b8422976535df8bf56ff", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ca680d0c57519a874c0b7634a07aec36cb531c2baf9c763ac90c928cc85400a1", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "2cb4f72325e0854502035e3e6f97069d6fe96374d10145692495d0847104bf6a", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "587d9959f6a587ad2c129e4cc951d7b48f35b696c95f4934c40a9569896f4285", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c66a75d3b1a732fe5ea9ada9e81205ebd2a71f1e170f0e26d34546aa9eb2744b", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9ee1e8d7bf62262cfd51f0cb5a97dda00c3a4a248633f3951222d7bc44577bd6", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "3b39a65295db84fd63f2e42b3c9cb52f06a5c7c28fdd16a503834a0e92cb10a6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "8378637d3af407cc237508271756bcf103232d9ee37428b5cd59c79e5fcd0900", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e0233367b7060da2a89e646531fd03241911867e9881df24f53be13e8a3904c6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "4f02e0f9be13b72a927ed33d10eebe4ab221c2f6cac5e41d9af8d1b14caef05f", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2fbf317ad199a7654247193f6d02d6d654edf3ff0da0a4971e1bcbd3e9c1c747", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "100dc7d309346d79bbb8c1286f6801195065818f1e50b4f532ebb54f84c4c780", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c279a1d886c6434ef01a2a7985854d23dd67069e9e70d76b15eda532114995c0", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "efcc422d12b12ce10863aad4ddd4a84d457c81d16fc0ac2b22d58ca77c87b406", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9e4ffd7ffc30c76a042d67a07b011cf18ea1d7c57e3ee5209687d6606a27dafc", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "26ecf6035d8107b607654a260b1103ffc235f4da4f779c199c84ee5689dde3d6", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ebf4bdf264609ae7c4d7cece11866d44d270c0d13e660a8669c80eba5577468b", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c4c0a731db6b1c22021830fa44f9693c901f8f75d7b84f4fa3a32c99ba3d01a2", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "21629cfc994bc500da7a6b3927189e4651873011a9090b978e1d9f4420c6c000", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e0768a26e5b95e83b18fdf1f818d5c92964f0541eb44e27654c25b57a4941eb7", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "ee04523f5b0475e009bea70c00687b4a3dcf54f6bef9f4c4ebae2024bfa67bc6", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "910bbe13207c7844fcb7299dd57eb4c9a3f4b46494d0fe1e847c2ffc5a3f5e64", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "08afc3846aec7cc415b18b86c88d2d6ded1fdc18551f9238adfb7f8cc572c288", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "558a8b5c9bbd3d10405603f74e8689958c149221cc055dbfd6a43152a3618c8b", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c53e4bc9598f7001b18b80d0aecebdb89ee6a2db0620d85e163f86209826e3f4", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1ad1be612b394c8852fd60a5bbec0c6887d817c40402188947b642c18b4ac23d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9d949ce33e245c536111a1ecf1dd7143ac13e7ecee106b3d2f05637da9cc2b2a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "1735c741d96f7faa19b06f2bd4c51c01d513e1854677c6956b160b33d5e1dd5e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ba0c77f7cccc8a67f6453f9bca618683beaa732435e171b25037cd2befb5e1ff", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "3a117fdf5f215be7334cae2b81fe65142918b846ce03a614dc5fcb35c7cb433e", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "037e97506e4a21d0cf0d1a4eace553d727cfc072e737d9042e975f2668bd9a35", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7fa621d04137f1b4d14a7f9d3231ad40a65945aebad12c76ee0e80a01b34b94f", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f8fff0baab8de0c2097c69e505eba8da6f695b1b0d8318ab85c909b3d3e6ebf5", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "27b0c74c9648425a6c073a852ff065daf16cae9bb0a3738a71f051f86da7d44d", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "201744eb6f5bbd91fef8778f6403408a2c0ac125aca704962c5c12efa2eba5c7", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "464551fee3c484123bf375913453bdbdeba8042656ac956d8d609258783d61f1", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "89942fffdb930ed8e0b90c8d6fb7949cd63d5d61c6e67d02ae2733783ae37be2", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0f028ee216dd2ce8d4ac4f7a2ca0804aca3b579fb76735714b0b727aa431b5ca", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bd30d5fe835787c26bb9fbcea4cad2e75c743d3fa7dca48db1c4b10d898040e1", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "c522bd2f93ac3a36e0258ede3d8ec8f6aa626aba96862f40cfa0e2a420cabf39", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a4130d211a35a009171fb78d8d33f1c745b92e384334b6dcd815fdfcc146595a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "486f70c1ca104f1604fc19c9e212171b3fa0b4504b53bf8f0f63b0828acc2eeb", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "65edc740cbed4df921803bb84f9af8005daca99e821a5b91c9acd000d2583a51", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "20861f513aee0695093fab75dbe4df6d9349064efa9b99536a60ce8b49064f53", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "14073480b57e18d7fac13536ff08d51d0342833d4d9598b26c2dcb8e1e63a4ca", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "41a35ea4fc6ee9fd231d48b8434889fe890d5fb110b373e96492c17839ba8fe5", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "541c86f25bfeb30e6f802ee5eefa7ded07210e93d6fdccea5c7f1f8f3eb52961", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8c1fb81021c9aae03fbc2c4c2b5a8a3fa1b1eb136fe0e2acf4b709ec94fbdd92", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0ad06fea09ce4fa950be0ab73f21dab943208907b4c3fdcc8ce839a3bda2bdc6", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "ead3131f5db32cd74f9fabf5a17dc2b8e2c3e4819f23fed7daf65f084080e541", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dab9f5dbc939a70d74d7cf892c8765268c7b044d2a982aac161c0d8d428e24e0", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "bc83b38956735c0f031c6033cad48b43c040154e49a2d53a1e31217f9effb4e1", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "db10660c23b501d20c2c7640b564758b33c9d3eedbea8193d1f5937cf425153d", @@ -19285,9 +19285,9 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ec64c8c0cde4aafdb1d5b83232c47e33620f45bd232a9cc44df4b50f3777936f", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2322c88f05f19d2faa0dff594fd574fbe0a90260d498116edfbb5c282d2e101e", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "6fe22a11fec54327631a72dbb77a50b4752f6bf25c520d4d5e34365d4e0dd1c6", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "00622e0ffe72ece741478546c58108d6f249f7b8a5c8d92dd13df133d74586be", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "dba99be110d2224caadf0fd12824c53b7bff8c2a9eab5f54dabe7b6e57f9d611", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "21b7f87592c9b64a4c09b68e4bc2855a0cb5e31e05a1b73d7f525c535369ae69", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e178bbbe5e34f51c143215614aedafa77324ed1a09b33d96d74e4858680e97a0", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "75552de5050baaf1840065ef2e3b175e3293871c4ed78f46831bca1a9ec19b9e", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "233684e1724c86c59199b19fc7debf14e777fbdd6e2b0a0c3c019ecd1267eb24", "T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "32ccb3b247b673a3ea2537184b8ac6e0f09b261a5b36c020a9ea7b69dbfddffd", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "61a13248da3ed86a39ce66da8dcd57677d14b142a96f90cb05be6f0a8fed081e", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4bde62b1aaec63eca05b222fdf5446afc3fa152abeee290ab9d1c6f4b1561c71", @@ -19555,10 +19555,10 @@ "T3T1_en_test_protection_levels.py::test_unlocked": "93d9edc9f59c738f0cb083e96f464cae99fccadbd3768a1c2a11258d8eeda9e2", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "7f26c6d11d1b8f56fb290525490665942b25e8ca9357186c5e343f58a18b8860", "T3T1_en_test_protection_levels.py::test_wipe_device": "2dc2c452d2907afc48d1d622ccd3ce692ab3633a0a6e425bdb19014c669a237d", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "b8481030791138c3e741d18508c235d9b5cf13921d3c314aed3ab83274ef592b", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "9a8af6b1b0b31ed001ac224f2dd56972d23c3c26ce322d8249498062791afd4c", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "7efe227998c324be3f805af7cdae2aa51193faa6c5c03d0bb7b532a0b5fe3426", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a4bc27e32a49dfbb1da41d7d058ced2ff3ca016c172e64349cf0a5c5c40f36b4", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "b10cb6cdb04a0cf22f73647640e5d874050d00e75a36ed45c13752ae78c3c764", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "b79e5de420bcec65338e45799e0a4d488e73084a48e0751fb70402027402e96d", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6022c19b5a8eceb268a14e1afa4d0fd8c45a58ff8913390dfec189b151d0cd39", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c411f4b854798ab93ae2c5f2a9a0b511927d123c779c8b9ac06c394233a7f307", "T3T1_en_test_sdcard.py::test_sd_format": "7be6fb799a7ec5d2a7812c8e0e57b09507ff1a33ae151d05ab8e7c627a2b0532", "T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", "T3T1_en_test_sdcard.py::test_sd_protect_unlock": "06c5df1542420ab8f04e9e048042b475f28459607a5d8c9bf15bef9d0f320af8", @@ -19575,10 +19575,10 @@ "T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "5389a24e5e9d99a1c4e9910292de37720acacc5f7c4aff9ef661475357062d08", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "4c18721a6d8180ae003cfa8d434273704be8090646f2ac49584152bbe65e6dbd", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "512539498be76e766663fd5c6668d224a904d2ff7c3ee7244f78822a9042012c", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "bc4f39786a92ed52ddb564037b23be3639813fe2189ef9117b90fb62d3473688", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "f9af547703ac43f19a4ebf1834f0335af8f9eb791aca2fb070a68dac75727218", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "4302293204f7dd7d795d8519b9de9490ae61fa62bf2dbbccf1f9e25a1a24a4ff", "T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "e6594b2d7a799b113123cfea4ef5ef3662943eb19178f3d2a336d5461e7bf7a6", "T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9fefd47db12895cb9f34c6e85fc57d683edeabf96157a6fea0cb1e94814380a5", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2260b3ddde77ab38e6f1d8c373cb3fcb5c0763ad794d364770e68657ae72f1bb", @@ -20589,37 +20589,37 @@ "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "3de50506eb6dc1a21ba057946c9f7604d64876fc373c9c68e58503e1826f15c2", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "a1d0c54b6f30be461479cb2dccc31f9f0f790f73466729cf74d2c2f2d66933a4", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "95a4130a90ddc60a42714ab14ca571af1cdb3e52673af2d08dfcd48de275302f", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "7473cd04dc18ceb89cfccb4f49a87a561fa7b27ab2651fe71932b2909c294e37", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "bf0c90fc091a9a8d0be9075701d77ec781eb165cbbf018f3c1081b37f4d42f71", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "27a398c55c96c448e4ab5b3c9b65a16f6fc34583f9c0582d1f68996a39427009", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "996632db4933fa237fcebdbfd7edd43549cc33764b34c89b9728be5a6589d10e", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "94b4ae48b8c4c479f52716e835bc9a95c4e83fb60bc0fa1d072495f492d15245", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1ba996657b5ea84fcc453fd960892904ca5bcb274c362cdf0e83f32ece00938c", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a05ba6275ba44c75c88ed569b2b225c05740b45b4c95404a8008e100102605be", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c7c3581064955b40e99c1581b25175732681af7fb42ef76f60f88767f1f35405", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "33b0be8c5e4527b5aeb5f6b0cee835b149874403772208e8c7c237e7317251cc", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c912ccb846a09b6418904cf4d0f877cc236763863415a51cb63c91597da9ba82", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "83ee8c0d11cca28e1ff69fac86824e937e26ecac7902cb55b3e5fa75b6fc97f3", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3005bc1292a1ae384f847132cb5212ede9f886c0d558c8ca89b6c8f1e8c47ae9", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "3771c68f03ac229dd0b3c44b4c46bfeac9eb39b1c2b27a2bf5887aab741f15cd", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7c83e5a1c01cacf38b08087f96cdb627b068672913d15c25b3b8d40ea0ff649e", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "f8c4be8819a7393f5e636f9c83febed0d7f3c9e122811b9cc8cb1c5a7dc4ab4c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "6f7ccad6babf4cc86460c90f2afe39ab02c85dfee07b33b38813d216b9930e49", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "47a68a77d6faed31fe8a4a8c59879b5e2c34644bba6c99e21314f94f347edaa8", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9c89c56503312016d675f4b4ec5483a37d4fcba2d30572df1d26682f46a5183f", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c04df05fe69fd083724fbf45ad9f280076e587829d0dae1b7428fe08e93edf2a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0a13a533533f52db6078406c8ce3e26855f633250ff97c44c2c12a1d58c98e51", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "b96404739681ff070a7507075a1eab6e689bfbd2ec7d613df7c293b56ade0de6", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d11413d564d7aa8aa60f288cfe9c1bdc50b668e8a117e537f44c86c9a0ed392b", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7c172db2fd6fc5499583ed1cfc057e0b4e82d78cc769ff5c7f915907d02c00a7", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "11d73e58305ad30aaab1b18fb8d46caf26ef23137104e8121a6b7e55c2291558", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "01a7c945d65e510fc46940f4aa8d4fdbca1e3a090510d60ca74e7103197a67b6", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7840b4ff25668f4397bc1ea41c5c37554f59a7bad2da6576940f4eb8bafe3f90", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "485a0ad1cc4e2392b3c95b0b836702ec16c346f97677bd2e532afe2ecaabbaaa", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "0c126d96dc9de12b03c74407fa7e3ffcfb900b03a45791b85499b7752b9e998f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4f2db6fb3b26588cf43380f0cecb5eb84778f856e2b6b048bb4cdd618fe4c863", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ae091a31b493416009cc1fd78e91b03fa6e8b4be4c0b2cfdd26637f9034b6dfd", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8aa9720d46bc325c8d16fd3d490a6a30def7df185f1649a44423f5d65dc07507", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "d1547201279807588547c782097ac4dce9f9171c0213120aa020493b039ee204", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "93d2878f01158872586ca3906c62139360318f50145a5420efaf11515ebf0562", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "86559b391b7f33069abc6fe73b36d8b58394cb55578f773038c2eabdc4b12c38", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6d21b68a32c26c54021892796d719e47858b589b66521afe5a61b06dd864cd9e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d0503788e182fecff7271302e2763639ed5622510ceea123d0b1efcd18306f56", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "bfc291ef5e29f0774241da823766ab53ef124a96c92c126bb24f56a2f2c2f87f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "9f4a24cb27a5ca56b1942a61c28a44ae22a05c9608b4043c0c0ec7c67e0f5aad", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "74830ff46e72546709d88e7e3707b8eb11fe770e94badb0aba1763b62c442379", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d94bcae899def74d77a530496583c67e0a1c97abe258f3a7118b3bf158389fcb", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9748342672b7dfbbb40775097ac15305a5388b396f7d4fd2e0e572e73b038937", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "10fee7a35e4f7b1b5d30f86861d92626d8c9b03aa718323c45278f1209319bc9", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4db474c5833736bd54f1739ab5dd00ec2498c593dd53cde3d0ced3eadc08df5d", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "01e2c519fac859278333cc1ee83f2f7aca113f698cafff63370ba9a0b067b54f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a6a76666ed92ce1bfd231ccf33eccc03b4e6bf4e42260d7c1aacb5b88b7c5072", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7b5891abd4fc7b82ba30daa1b8ab4b08b83055d8ba1fff81339ac50689168c3b", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "acc5a52d87cd9cb134efe5b7fa5e7160b7a5e992952e45756e1c7f350d2a2500", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f103fca137215f921ac887bafa7a78cdd4b904900217eacd27c7c47fc42fb1b3", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d1050c16ea2d4b7c2beb5727703e819e34af3d8f660ee1dfaf17724325d176cc", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "32dc866da9a502cbb7dd56a1e5ca08abe7a9216bea99a3a868a7f366da9b7066", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "54a01f2156fa7289ec99b818d9928d10fca69cc081401b866bb7a7a0170a4035", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9731c2a43c76035b2ba266400a0f7fb48d9664b684f2c03c6a1997e8a4d8c968", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "624e49c0bb22bff007f625d631599501c64bd650ae6a0573c0ba20615c6cf874", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "135d87414d036b68d2a055e10848e92370e18a3b1c47e4e47a2535361dd05df6", @@ -20632,9 +20632,9 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b2b3f5d920906e794b491568af6103b8b1a6fbf57ce89f325f892e3d113e3833", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "085c58e64c751a36643acf9bde37af20f99a99d1fadbf870003e5a291ed2e87d", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2b8712dce67fe3dea95754aee775c651cd40cbd184221f440e9ca41da4eabce1", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f028a23f0e1d3d14c55deb354b4c991ff425f1e96154119d82d471dcd33878bd", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "cff7eb5cf020a4828712b3f10dca05b00b32ab770e3d4be805851c326a6809e9", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b65703d6ee3120c837bfd6ef493aec11647ec7590abb2c47639d39c0db09b19b", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "814b29c64168417b085b09bc3da13978b9cab53a31ab7a6b0911fd9c8dbf9505", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4babb59ce04b2a1d35dffa9a1b8554c6cb2367f3781309ec8e2721f624e43f6e", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9604c57fe4d0b2241818a3f0b02931566b31ca15ded63ff089a2bb9fd9cf8bde", "T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a493510b64d232c00a870b6371beb4e2c684827fc73c20c7014b93be59deba2a", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a31ff3625a8f8990843141491b1627dc3fbb91b7e68ecac537da7045c17a299c", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0e38ff8ee2863b085eb40cd7ab00a9ea5f1cb501936806244fb2b82f6e6a4376", @@ -20902,10 +20902,10 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "fe43f2681f087deeb6ecc92501c4eff2d44a30e4ddfa7e2beccde954ae40cc0d", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "1d3351d9da92ff5014ca1a8a75211fa78d938828ac5990987a50fdf6888a2230", "T3T1_es_test_protection_levels.py::test_wipe_device": "bd526c2186cbe66c01f2336f3eb48b7bf9c612c5c906b11395fbc30e5b5d9f94", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "3ed9292921eeaf43533738e0968cbe72c7d3079915abba37b3fc12fdb12a559c", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "de0b7f89da03bc3d8afe7291f2e3a3cd1860d1933c19f75a645e2be8a3d04e26", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "16b8f7a814cfc070e0c1be34d6aa39e429bfd7c6407655d37b0c9fc406fdb5ff", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f1ccfa2ea82614346251255194e0171f2311b3bffe9e9fab403eadd45a6c2b9f", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "4af461eeb8e8cd65d49d07fa35aab48b71a9d41686bbc6ec66dcc9478e3bdb4d", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "53eb34d0960e2d043b84d9f298dacfbf9a7310cfe3985ca0ae81c02b95b9f8f4", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e2af0d1284f63e948c2e377a8f01fd78cf478c602acc8ef7bdfce5c9634a5603", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "7885d36c0e0da4d929d20b8c58c248b8c6a79bbfa14be56578e05176f26962dd", "T3T1_es_test_sdcard.py::test_sd_format": "72f118c0af96c0efac42421ac361945413a8e956ba1715eb89daf6daa772d5aa", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "33fe33134d770ff08151fa7fbe46f0c1feb78a65a20dd52e6fd152f5be0237e3", @@ -20922,10 +20922,10 @@ "T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "dc447a62d85b77f0c1644fa4ecfc42f243772cc41a32e27a91b415a7808d65c8", "T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "554b98ceb2d9ee191e8f8913ab087e5517dd76e11a89bc1c548b13889f083ed4", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "64f2bb12e6651c86436fd3cc3ee96a724cf98c25d0f295c9de17344bb20550db", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "7be553ea978220b1bf49a1ca359a92f6531b0cdc333449b510b990e92d70e73f", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "4c604de2497f84580864c465f19f048c74378b3e078c599a9acc210ed5b1e679", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "15524960dbdb98358f940081fd3ad4b15c22f78cf2737f2c76361ddbb3f2049d", "T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "74664875d2f7c17c91e4a850e5cb99eaa27b9af02ac7f53aa5c8ac059fa70a10", "T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "1c9452d995b711de9986e7ae260bb2f6f382e54a720330f989afffecc11449db", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "faa3fe89f0e40b73585f8ff38a46017fa083236ec02a3d3d847980e5d8f18164", @@ -21936,37 +21936,37 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "853e2ba6b26e9dbc6a7e74c49bb01d59c7cbfab985c02183dd62b64f29803e96", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "28be4c8caeb2de5f6347ac29dfc7182746da01d158d25db529576e60339c4dc3", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "2a26eb45ccf3507483a1cd6f69d462bf099269bdc4583aa7022278278e142c3f", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2126c3ac323ba133ba610c42d6b37152a45238540d28c4588158a5464a3f911a", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0735304fe388c64ab3a3c8ddd81e565076c5639789536803426f123021ddab21", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "50abfca3382be2601b1d214cbdbc0336af39de74fde6d2d9c6489b48576bb2dc", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "009f45ee70df79ddf809e7d5b2e0be24f11b1a90a34f2c78429d8d6b823832f5", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "ceb682faf7f474c414a92ef0fdde3c63bf2b6272aba79ac4343ad07564d97452", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c9e0e5407c7feeae3c514e1169553820ef1750834e3a407e9765f1a876c6ce75", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "245dfd00006cfc127984c46e82fa5d71f0e974ba3f871d0600b0cfb2f218dae1", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a66b052df87c1ff4b9b384e141b7ddf70167988fbef1d2e425e9ef30c98aa3a3", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "07e070860615e15cc8dda1d24c806d412f4681ace9c8a76fd2798ab18c47a731", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5325593f0c64b4301d7dfe216f5964398b5565541e41ac18727118d4e3dd4269", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "2bc8ac2889c5c14dc7f0e361d3956d906ab2d3cb4eecf17545d8950dc042c2c1", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "a6d28c3f5a0d9876e606004d3dd0be4f11bdb66fa467d92180cdf028d7f0427c", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "9ea0de196386d7dd1c4b99f64692e8def486512f5521d2f44d6a20a4259d1662", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "b276eead3bf04a63859b23305db55a6b07e30bd69d70dab2cc2a44dde7ed6c4b", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "3bc1870c2502fea57441e74826ce80029893267eafe56ea884848ea061232d76", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "6d919129a042d6fb64593725027109fd1ddb197bbc7c4d945b54f2130b9771be", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "04a1a7b08cd6fcad632f1756aba8a10d411158385ac8264819a6a311615daa13", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "48eefd9e80ea9fb774f47ebe3ec1b851c593f8b9f8faa24bffd14b5de12e482d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1ca3508d4ea5934a1650dc96e8fa0a91a2c195b4f20559647bbeeb0e2487eef1", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "26c7f705d20e185eeb62a7cd164546957d4be8c5d97db907ad3c679dd49e4b0e", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "ec10b4369301ca4cbadf56ae9c275282d0775fd30d48df5a3073729fe902ccf1", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "66a549b16660e3b6de50c2e59d9dd3c738369d0c05d7ed2692c1184a4be1f248", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8d743263aa07046546a5de82674c2bb9ab49ca23a69dcd4c4a8ae8abc5584f33", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "94e5e0e0562fed029f0bfb05cc7eb2a88fa711bcb92b327d4d264282c90f3598", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "a1eb2fd918a660a0646b9e9dcaa1461f83635013df92a5a59f501b4242c6da19", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7e10181fd6563432da7c06fe7641856f2ed2f391db72a92ff11c11d6dfd71c8d", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "132b35daa64c902b2c6e89023bd92849570bdbc6f9199c3a79b52822ee174716", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b9728e81dceaa51ac2ffc7a1a0c8f64afd53ae0d2d02d5d76a0555aafaed3748", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5b4429e35b1b66c1b430582918bc18983d0ae4cf25d4375b8f1d4e4904bc8c5a", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "73a9efa1d81f294b0bac038a75da4c6da672b0ec509361f45a8e608e45539b54", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f8550b156211595de3251810b700dc77465bcbc3f1173b52d0cb3db364ffdbab", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "92e4994617d0444a94e7064da482c195d46565b23ef27226e1ac8e0e9bafdf70", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "79e02904b2e0ed55d90136b9c6002071205ae9cb89ea67420f34e2e48c80b437", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c8a5f146ee40f438ffa945d96e6d56a3c6a0eecb1c1ef8aa2cb8badcced53cfb", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "764ec714fd71834ef6cb38ec8599d675f43ad652ca1c0aead359b7a254f9be0a", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "432de0db66b1b32a61d4bf34a111f2c8f591f46de4d7e4cbf6433fb70995cb1e", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "de993bafe4d97cb52483d292aa6d14611614114004bfda34ab586ff0bc969680", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fdef601c6fd4ad6918018360f704c8f173a81492f6d04aa26684d29019789b1f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "82a8cb96948bff4bf2b2233fd4da7a284387050f686c206e24ab84419cde2958", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "aef21c93d83c27ab3d4c59262c9046165fb8c164f56a8e9e06471822f297e810", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "797a46a22b3bce89a50176ad866a528fbb81996a084fb8e0a2e609af00dea0ad", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "46cb0e86e45a518268182d0551bd12a2025fc6afeb4d89ca20a9529a2de50c57", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5b363ca173bb4a58fee50802d45d20f11a88c09d980f7f424500541f86aebb33", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a13840f0d3a113c58d95d78d22276c8db358c6b71ed6e7e262a134500270a468", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7a10d1f898ed211c2f10002863e80b087efd22464c5c249f92a4a00e968ca3ca", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "6438b79dde6e2b111fee33dab2ecc65692b363b617e72abe3fbe7b669be9f931", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "eb5eb50e4b0b0022a682319917f79a38198a2455fd30bf2514196fa3ff74deb5", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f0b31c1ad90f5671e0ac1b28286ce12b1fdd56fcad147646f900097c06b0c447", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0cb40dea8aafa735ac5d0f028ec81d6a463baa5113ec04de34d0958b690b9487", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "fc391ecfefa74e5c2f2034cff0d20bd7a0732e7ea9b4f428757763731b700718", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "5bb09202d3b0bcf13fa3094ed876d3ec7aff6d2ec6c0675d101ca89dc792e410", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8f2cc7ade0bcbb60e358fcec03697e7a7c7e324aab7296c623b2414b05a3ac7e", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9d6ea9f167e725bf3f5fcc7679838142e329a06aaf871c3b0dbf844d70af1e23", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a3d1df93630a73eeebae66a3044a3d151a8f1875e1a00eadd3b7a9681f810228", @@ -21979,9 +21979,9 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "28a14d628912e43c37cd26b9cfc5e1f3bac68a3eff1033ff5d3d0b5bdc670d59", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "16014e5c37356cff29ec121d9c1a1d0136a712e20ba7ab3e06b28babb24d0d20", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "080ff20469d654266eec22d119f0774c32262d04e4078cfe11512f838ae77a02", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "c75fec2bf39850da90da6af6e72de7aff99555156628a8870d292345852fa073", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "12f7d309148fbd55666d86dfb75d946df93431e66fe33930def70411a80044e8", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "17b5113dd418da7e55fa267b7d411ac9405bd063d807d0573e16bcc12e6ff968", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2725b38012435c66a45f2085d88e31dc78b9c88d758cd21b1a421754a538bc22", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "cb4fd1f5e3d7cc7352802177f0b635ac100cbc715578a87d6bc6d6266c43df93", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bb95709bad9184ddb7675f85e30f166594f26b50ac7eddd7d72a4b125fbc636a", "T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "59f90c5dda370b47c367b255db3c559cf9e1a83daf02b0121405d7e10bdf8c30", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d24335ffd25d1c9c04ed50bcac04874d89ff52dcaeffd6d46bd13db29f4dcb4e", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d939e88e6b70db570958e48b5b09f1f4fc854ce0a7891cdfd5a22d7c8f946f80", @@ -22249,10 +22249,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "41aff29e00f12334bc5f4404403a86399c0bc3f3c7aa36619d13247918280d8e", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c7fb9d00a7a5519c050401b6b1181aafb2cee07aac911a1f69ca19bf4926bf45", "T3T1_fr_test_protection_levels.py::test_wipe_device": "53279b977255d6d8874a592a5241f6a113e96442f871e96522ed8bf12fb05586", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "da17851557ffc8df8e1cce8e1818726029d5d9da0e63384179159778ea31f3c4", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "c513fec61d453c1921859c8a9b09637fc4ed381789214b4e9cebb273a0341adb", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8d5c1b65476ea8d8c8ee332b69a5b9e2af0640562919677261abf901a9b94ec4", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c596ade6118e63e416f500606b9819dfcef0a5d599eb912d82b3ef71678090a1", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c7663ac35d12992aa206ad5f90e031b4c54c4c1fe2ce1cdf63dafe5b326647fa", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "ee1dd9d5bda45e3459f844509915d9a4d6adb60d7ec5b972e7cc23d2fdab4ec4", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "2a725daa46cc4160ccc931522d363bf2083cff3ac41f25fb3e057f11876721d6", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "fb361edd2001744f1d2916e0cd83fb5b3cc0522db2addfcdcff19fe68d46c174", "T3T1_fr_test_sdcard.py::test_sd_format": "d47e1612b47b28186d3517ccc686a4ddd4b60557c41446373e3f0f97f93d0105", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4ebf7f7adc1ba12f1977c97573f1489ec6d58b8e71d67213d521f1c790d4fabf", @@ -22269,10 +22269,10 @@ "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "ae4efbae55935340c767e11d0bace79b16d48e20324d46c816f808ea37aa17cf", "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "d01656d290b521c746a6a7902c79bd99a134fe94288d875a0820f60b11a439ae", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "e126bcddda7ce30f8f5a15bb717b6b841f64a976f96f747b51ada2c2e68d60ce", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "932857f746174d5a01348e8467a4c215c12b35517d035c9282be8366a915cef9", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "081140452661cfe3d6e55c295b72a3531db991343c042491518f9ad0810f5e8f", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "939e9908c41fa307ce4515a71cab9ecdbcd55101cd45a813947372aec9a57ca2", "T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "83e65a930718cc89d52171e14d998457fd880f64e4a7785f85deaf9856c572ce", "T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "d69fd4643f9f8456871dbdb07a641482f0ba5aa433de190aa4307c53d257e5b1", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ec2caffc016d8c0cc628a4039774779149406552f38baa3230ca674766e18469", @@ -22311,9 +22311,9 @@ "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "e997cc958f7d7d262604e7728469f7a6952b60c0b1b3520252e3d58e49b41e66", "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "a0879b23f779049abf46c42608ee7b841a0b8dc4ac83b85ac83a83e992068165", "T3T1_en_test_shamir_persistence.py::test_abort": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "f00a24ad650fdbd2c970274d2fc8d41bb4b8fa82bb1a4476c52985621e8bd6d5", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "e2f43ffb0e83e224587b52d09d3b5f11b1daae7e6854ae562f8c7e9bbc4c95c0", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "de163f01135f7a5c73f2e5cad513f6771118370e3295c8fb07ab0e8468b37f7e", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "13edcf7057ed889c811d06d2f36df561898a464c5e3ec3786f32bbf40d8a6c6b", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "3720a5f7f2d5826c86b672b5aba74b3f5c5fe860c59b125807ead4b98a73cecd", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "e3f6e19fc898057a7688d0bee6ecd2b5bee188573f12f2e6236de2ce813834f4", "T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "aa4da89845a41383de2a091315a54b90996c1f71692adcfaa69886c35c4ad261" } } From 7a32ebf2b6da9e07534dad544aab8d547705269f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 6 Jun 2024 12:32:36 +0200 Subject: [PATCH 443/626] refactor(core): use set-/get_bool in storage cache [no changelog] --- core/src/apps/base.py | 7 +++---- core/src/apps/cardano/seed.py | 4 ++-- core/src/apps/common/seed.py | 2 +- core/src/apps/monero/live_refresh.py | 4 ++-- core/src/storage/cache.py | 4 ++-- core/src/storage/common.py | 6 +++--- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 628bd12f8e..20384a18e1 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -203,7 +203,7 @@ async def handle_Initialize(msg: Initialize) -> Features: session_id = storage_cache.start_session(msg.session_id) if not utils.BITCOIN_ONLY: - derive_cardano = storage_cache.get(storage_cache.APP_COMMON_DERIVE_CARDANO) + derive_cardano = storage_cache.get_bool(storage_cache.APP_COMMON_DERIVE_CARDANO) have_seed = storage_cache.is_set(storage_cache.APP_COMMON_SEED) if ( @@ -218,9 +218,8 @@ async def handle_Initialize(msg: Initialize) -> Features: have_seed = False if not have_seed: - storage_cache.set( - storage_cache.APP_COMMON_DERIVE_CARDANO, - b"\x01" if msg.derive_cardano else b"", + storage_cache.set_bool( + storage_cache.APP_COMMON_DERIVE_CARDANO, bool(msg.derive_cardano) ) features = get_features() diff --git a/core/src/apps/cardano/seed.py b/core/src/apps/cardano/seed.py index f7b6cfd2ff..06b662c87b 100644 --- a/core/src/apps/cardano/seed.py +++ b/core/src/apps/cardano/seed.py @@ -112,7 +112,7 @@ def is_minting_path(path: Bip32Path) -> bool: def derive_and_store_secrets(passphrase: str) -> None: assert device.is_initialized() - assert cache.get(cache.APP_COMMON_DERIVE_CARDANO) + assert cache.get_bool(cache.APP_COMMON_DERIVE_CARDANO) if not mnemonic.is_bip39(): # nothing to do for SLIP-39, where we can derive the root from the main seed @@ -148,7 +148,7 @@ async def _get_keychain_bip39(derivation_type: CardanoDerivationType) -> Keychai seed = await get_seed() return Keychain(cardano.from_seed_ledger(seed)) - if not cache.get(cache.APP_COMMON_DERIVE_CARDANO): + if not cache.get_bool(cache.APP_COMMON_DERIVE_CARDANO): raise wire.ProcessError("Cardano derivation is not enabled for this session") if derivation_type == CardanoDerivationType.ICARUS: diff --git a/core/src/apps/common/seed.py b/core/src/apps/common/seed.py index d773909b40..58846b4f9d 100644 --- a/core/src/apps/common/seed.py +++ b/core/src/apps/common/seed.py @@ -57,7 +57,7 @@ async def derive_and_store_roots() -> None: raise wire.NotInitialized("Device is not initialized") need_seed = not storage_cache.is_set(storage_cache.APP_COMMON_SEED) - need_cardano_secret = storage_cache.get( + need_cardano_secret = storage_cache.get_bool( storage_cache.APP_COMMON_DERIVE_CARDANO ) and not storage_cache.is_set(storage_cache.APP_CARDANO_ICARUS_SECRET) diff --git a/core/src/apps/monero/live_refresh.py b/core/src/apps/monero/live_refresh.py index 011b2e2837..90d2dec642 100644 --- a/core/src/apps/monero/live_refresh.py +++ b/core/src/apps/monero/live_refresh.py @@ -64,9 +64,9 @@ async def _init_step( await paths.validate_path(keychain, msg.address_n) - if not storage_cache.get(storage_cache.APP_MONERO_LIVE_REFRESH): + if not storage_cache.get_bool(storage_cache.APP_MONERO_LIVE_REFRESH): await layout.require_confirm_live_refresh() - storage_cache.set(storage_cache.APP_MONERO_LIVE_REFRESH, b"\x01") + storage_cache.set_bool(storage_cache.APP_MONERO_LIVE_REFRESH, True) s.creds = misc.get_creds(keychain, msg.address_n, msg.network_type) diff --git a/core/src/storage/cache.py b/core/src/storage/cache.py index ee36b3e60d..7cfc71424b 100644 --- a/core/src/storage/cache.py +++ b/core/src/storage/cache.py @@ -112,10 +112,10 @@ def __init__(self) -> None: 2, # APP_COMMON_AUTHORIZATION_TYPE 128, # APP_COMMON_AUTHORIZATION_DATA 32, # APP_COMMON_NONCE - 1, # APP_COMMON_DERIVE_CARDANO + 0, # APP_COMMON_DERIVE_CARDANO 96, # APP_CARDANO_ICARUS_SECRET 96, # APP_CARDANO_ICARUS_TREZOR_SECRET - 1, # APP_MONERO_LIVE_REFRESH + 0, # APP_MONERO_LIVE_REFRESH ) self.last_usage = 0 super().__init__() diff --git a/core/src/storage/common.py b/core/src/storage/common.py index a9f3364af4..649c656d84 100644 --- a/core/src/storage/common.py +++ b/core/src/storage/common.py @@ -31,11 +31,11 @@ def delete( config.delete(app, key, public, writable_locked) -def set_true_or_delete(app: int, key: int, value: bool) -> None: +def set_true_or_delete(app: int, key: int, value: bool, public: bool = False) -> None: if value: - set_bool(app, key, value) + set_bool(app, key, value, public) else: - delete(app, key) + delete(app, key, public) def set_bool(app: int, key: int, value: bool, public: bool = False) -> None: From c7ec0938638e1946f62a542b838620759d3d8546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 16 Jul 2024 16:32:24 +0200 Subject: [PATCH 444/626] feat(core): make "experimental features" storage field public to get rid of the cached field [no changelog] --- core/src/storage/cache.py | 12 +++++------- core/src/storage/device.py | 15 ++------------- tests/ui_tests/fixtures.json | 6 +++--- 3 files changed, 10 insertions(+), 23 deletions(-) diff --git a/core/src/storage/cache.py b/core/src/storage/cache.py index 7cfc71424b..2228b3532b 100644 --- a/core/src/storage/cache.py +++ b/core/src/storage/cache.py @@ -29,12 +29,11 @@ # Keys that are valid across sessions APP_COMMON_SEED_WITHOUT_PASSPHRASE = const(0 | _SESSIONLESS_FLAG) APP_COMMON_SAFETY_CHECKS_TEMPORARY = const(1 | _SESSIONLESS_FLAG) -STORAGE_DEVICE_EXPERIMENTAL_FEATURES = const(2 | _SESSIONLESS_FLAG) -APP_COMMON_REQUEST_PIN_LAST_UNLOCK = const(3 | _SESSIONLESS_FLAG) -APP_COMMON_BUSY_DEADLINE_MS = const(4 | _SESSIONLESS_FLAG) -APP_MISC_COSI_NONCE = const(5 | _SESSIONLESS_FLAG) -APP_MISC_COSI_COMMITMENT = const(6 | _SESSIONLESS_FLAG) -APP_RECOVERY_REPEATED_BACKUP_UNLOCKED = const(7 | _SESSIONLESS_FLAG) +APP_COMMON_REQUEST_PIN_LAST_UNLOCK = const(2 | _SESSIONLESS_FLAG) +APP_COMMON_BUSY_DEADLINE_MS = const(3 | _SESSIONLESS_FLAG) +APP_MISC_COSI_NONCE = const(4 | _SESSIONLESS_FLAG) +APP_MISC_COSI_COMMITMENT = const(5 | _SESSIONLESS_FLAG) +APP_RECOVERY_REPEATED_BACKUP_UNLOCKED = const(6 | _SESSIONLESS_FLAG) # === Homescreen storage === # This does not logically belong to the "cache" functionality, but the cache module is @@ -140,7 +139,6 @@ def __init__(self) -> None: self.fields = ( 64, # APP_COMMON_SEED_WITHOUT_PASSPHRASE 1, # APP_COMMON_SAFETY_CHECKS_TEMPORARY - 1, # STORAGE_DEVICE_EXPERIMENTAL_FEATURES 8, # APP_COMMON_REQUEST_PIN_LAST_UNLOCK 8, # APP_COMMON_BUSY_DEADLINE_MS 32, # APP_MISC_COSI_NONCE diff --git a/core/src/storage/device.py b/core/src/storage/device.py index 1b84f1bfdc..fad4e136b1 100644 --- a/core/src/storage/device.py +++ b/core/src/storage/device.py @@ -1,7 +1,6 @@ from micropython import const from typing import TYPE_CHECKING -import storage.cache as storage_cache from storage import common from trezor import utils @@ -329,22 +328,12 @@ def set_safety_check_level(level: StorageSafetyCheckLevel) -> None: common.set_uint8(_NAMESPACE, _SAFETY_CHECK_LEVEL, level) -@storage_cache.stored(storage_cache.STORAGE_DEVICE_EXPERIMENTAL_FEATURES) -def _get_experimental_features() -> bytes: - if common.get_bool(_NAMESPACE, _EXPERIMENTAL_FEATURES): - return b"\x01" - else: - return b"" - - def get_experimental_features() -> bool: - return bool(_get_experimental_features()) + return common.get_bool(_NAMESPACE, _EXPERIMENTAL_FEATURES, True) def set_experimental_features(enabled: bool) -> None: - cached_bytes = b"\x01" if enabled else b"" - storage_cache.set(storage_cache.STORAGE_DEVICE_EXPERIMENTAL_FEATURES, cached_bytes) - common.set_true_or_delete(_NAMESPACE, _EXPERIMENTAL_FEATURES, enabled) + common.set_true_or_delete(_NAMESPACE, _EXPERIMENTAL_FEATURES, enabled, True) def set_hide_passphrase_from_host(hide: bool) -> None: diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index ece25d4e83..2c1472d921 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -4955,7 +4955,7 @@ "T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "a82a4ab4ca8d905ae55f12474230a72d3a2c6b495af64e659ec6093342b93e29", "T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e595040cd60ac0e5a31a768dcbdb517c5a8ca28e02707ccc35be95a0e516ac95", "T2B1_en_test_msg_applysettings.py::test_apply_settings_rotation": "360ab2993d6610006f922c54c79ddbc0a5a4d8cadc5333c634db5bce4df6a4ba", -"T2B1_en_test_msg_applysettings.py::test_experimental_features": "36947f290173554568d788c0242a42871fb651587ce653b2f8367bfc818c09a9", +"T2B1_en_test_msg_applysettings.py::test_experimental_features": "cb18c97c7dcf8d6f839d207efe7c13a2448b1463e3b325d7be3c865630f93c58", "T2B1_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", "T2B1_en_test_msg_backup_device.py::test_backup_bip39": "2c19ff45c8c02dadc065f360af23af8d357dedc066711cdc30c846cfc07a7d4d", @@ -12280,7 +12280,7 @@ "T2T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "c2b3471ea4f29da8b3ce71a8f1d822a6b320a484e0ca75386ad3e32116a8d8ff", "T2T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4356ecb3e22e2c04e396b1bff23f72382ae2796f0d93a0e778a25c3ba28857a4", "T2T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "28bb0fb9d5296039f379a0c6e9bc38f37358928dd3938cc322d523874c628240", -"T2T1_en_test_msg_applysettings.py::test_experimental_features": "38bfcb19f17cd020b3cd38a0a09c1698da86dacc62a43f59b926a50b1fadd041", +"T2T1_en_test_msg_applysettings.py::test_experimental_features": "40eaa5f22e43a86a13f132d617831929f691bcfe2a13bb29ce8ce946f1bcb6d5", "T2T1_en_test_msg_applysettings.py::test_label_too_long": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_msg_applysettings.py::test_safety_checks": "b129e0ba2e3c7ac836b3bb4b0bc8ded1c922eba054b42b434d10499fc780ea2b", "T2T1_en_test_msg_backup_device.py::test_backup_bip39": "7c8c3efab17cad82000aff453bc426b7665621edbff1bdb1c631827d23b4988b", @@ -19493,7 +19493,7 @@ "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "e89ddabe256ca5f8feb558f20e0d4b978ea83f0bf5b60c0abdadcb677becd928", "T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "75a8135cc46a082b667abb29e54c7549186b1c4469a912b02ba67ff3841b58f2", "T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "d07c2cc218fc9da94f861c2bcc8066c318333535c236bb76600e03ffdf9bbc1e", -"T3T1_en_test_msg_applysettings.py::test_experimental_features": "df77985e171a884259a5684f654c5d14c6bc008bd068f5d07cb52f0b056ed252", +"T3T1_en_test_msg_applysettings.py::test_experimental_features": "3ccd6c5126d5329905391fdf8e270a3ecfeafb4e87d42ad3d184275e542f6cd2", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "9ac2948f5dc0d41632d5717811add555ed1f5bd5b9670a1296427a23569b8ebb", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "f5d8efb15dfe2b4542ac65f405fd98ea86359573ed95ac8f7c8dfa9fa7c19dd6", From 1ef88117fe4e5c00b6985d1cb3ca1323434c5f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 18 Jul 2024 13:00:00 +0200 Subject: [PATCH 445/626] fix: make sure storage.cache import is correctly retained [no changelog] --- core/src/storage/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/storage/__init__.py b/core/src/storage/__init__.py index 7998ca5c27..3a012874f3 100644 --- a/core/src/storage/__init__.py +++ b/core/src/storage/__init__.py @@ -1,8 +1,8 @@ -from storage import common, device +# make sure to import cache unconditionally at top level so that it is imported (and retained) together with the storage module +from storage import cache, common, device def wipe() -> None: - from storage import cache from trezor import config config.wipe() From 522d33a71fa32c4b868a1992ad9487de5dc7ca13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 4 Jul 2024 16:00:36 +0200 Subject: [PATCH 446/626] refactor(core): send out ButtonRequest name [no changelog] --- common/protob/messages-common.proto | 8 +- core/embed/bootloader/protob/messages.pb.h | 2 +- core/embed/rust/librust_qstr.h | 2 +- core/embed/rust/src/ui/button_request.rs | 14 +- core/embed/rust/src/ui/component/base.rs | 4 +- .../rust/src/ui/component/button_request.rs | 2 +- core/embed/rust/src/ui/layout/obj.rs | 4 +- .../ui/model_mercury/flow/confirm_output.rs | 6 +- .../flow/confirm_reset_create.rs | 4 +- .../flow/confirm_reset_recover.rs | 2 +- .../ui/model_mercury/flow/confirm_summary.rs | 4 +- .../src/ui/model_mercury/flow/get_address.rs | 4 +- .../ui/model_mercury/flow/request_number.rs | 4 +- .../ui/model_mercury/flow/show_share_words.rs | 2 +- .../ui/model_mercury/flow/warning_hi_prio.rs | 2 +- .../embed/rust/src/ui/model_mercury/layout.rs | 8 +- core/mocks/generated/trezorui2.pyi | 8 +- core/src/apps/bitcoin/get_public_key.py | 2 +- core/src/apps/cardano/layout.py | 4 +- core/src/apps/eos/actions/layout.py | 4 +- core/src/apps/solana/layout.py | 6 +- core/src/trezor/messages.py | 2 + core/src/trezor/ui/layouts/common.py | 14 +- .../src/trezor/ui/layouts/mercury/__init__.py | 159 +++++++-------- .../src/trezor/ui/layouts/mercury/recovery.py | 4 +- core/src/trezor/ui/layouts/mercury/reset.py | 6 +- core/src/trezor/ui/layouts/tr/__init__.py | 186 +++++++++--------- core/src/trezor/ui/layouts/tr/recovery.py | 4 +- core/src/trezor/ui/layouts/tr/reset.py | 12 +- core/src/trezor/ui/layouts/tt/__init__.py | 152 +++++++------- core/src/trezor/ui/layouts/tt/recovery.py | 4 +- core/src/trezor/ui/layouts/tt/reset.py | 4 +- .../firmware/protob/messages-common.options | 2 + python/src/trezorlib/messages.py | 3 + .../src/protos/generated/messages_common.rs | 127 ++++++++---- tests/persistence_tests/test_wipe_code.py | 4 +- 36 files changed, 426 insertions(+), 353 deletions(-) diff --git a/common/protob/messages-common.proto b/common/protob/messages-common.proto index e7a0ac7153..500ddf7389 100644 --- a/common/protob/messages-common.proto +++ b/common/protob/messages-common.proto @@ -49,8 +49,14 @@ message Failure { * @next ButtonAck */ message ButtonRequest { - optional ButtonRequestType code = 1; // enum identifier of the screen + optional ButtonRequestType code = 1; // enum identifier of the screen (deprecated) optional uint32 pages = 2; // if the screen is paginated, number of pages + + // this existed briefly: https://github.com/trezor/trezor-firmware/commit/1012ee8497b241e8ca559e386d936fa549bc0357 + reserved 3; + + optional string name = 4; // name of the screen + /** * Type of button request */ diff --git a/core/embed/bootloader/protob/messages.pb.h b/core/embed/bootloader/protob/messages.pb.h index c623b94cf2..347bad7953 100644 --- a/core/embed/bootloader/protob/messages.pb.h +++ b/core/embed/bootloader/protob/messages.pb.h @@ -328,7 +328,7 @@ extern const pb_msgdesc_t UnlockBootloader_msg; /* Maximum encoded size of messages (where known) */ /* FirmwareUpload_size depends on runtime parameters */ #define ButtonAck_size 0 -#define ButtonRequest_size 2 +#define ButtonRequest_size 8 #define Failure_size 260 #define Features_size 497 #define FirmwareErase_size 6 diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 41a7ed0068..71657b06ba 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -120,7 +120,7 @@ static void _librust_qstrs(void) { MP_QSTR_bitcoin__voting_rights; MP_QSTR_bootscreen; MP_QSTR_br_code; - MP_QSTR_br_type; + MP_QSTR_br_name; MP_QSTR_brightness__change_title; MP_QSTR_brightness__changed_title; MP_QSTR_brightness__title; diff --git a/core/embed/rust/src/ui/button_request.rs b/core/embed/rust/src/ui/button_request.rs index 8a3056fbe4..58fe5ff178 100644 --- a/core/embed/rust/src/ui/button_request.rs +++ b/core/embed/rust/src/ui/button_request.rs @@ -32,8 +32,8 @@ impl ButtonRequestCode { *self as u16 } - pub fn with_type(self, br_type: &'static str) -> ButtonRequest { - ButtonRequest::new(self, br_type.into()) + pub fn with_name(self, name: &'static str) -> ButtonRequest { + ButtonRequest::new(self, name.into()) } pub fn from(i: u16) -> Self { @@ -44,15 +44,15 @@ impl ButtonRequestCode { #[derive(Clone)] pub struct ButtonRequest { pub code: ButtonRequestCode, - pub br_type: TString<'static>, + pub name: TString<'static>, } impl ButtonRequest { - pub fn new(code: ButtonRequestCode, br_type: TString<'static>) -> Self { - ButtonRequest { code, br_type } + pub fn new(code: ButtonRequestCode, name: TString<'static>) -> Self { + ButtonRequest { code, name } } - pub fn from_num(code: u16, br_type: TString<'static>) -> Self { - ButtonRequest::new(ButtonRequestCode::from(code), br_type) + pub fn from_num(code: u16, name: TString<'static>) -> Self { + ButtonRequest::new(ButtonRequestCode::from(code), name) } } diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index bdc28eedfb..9221f9f587 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -505,10 +505,10 @@ impl EventCtx { self.page_count } - pub fn send_button_request(&mut self, code: ButtonRequestCode, br_type: TString<'static>) { + pub fn send_button_request(&mut self, code: ButtonRequestCode, name: TString<'static>) { #[cfg(feature = "ui_debug")] assert!(self.button_request.is_none()); - self.button_request = Some(ButtonRequest::new(code, br_type)); + self.button_request = Some(ButtonRequest::new(code, name)); } pub fn button_request(&mut self) -> Option<ButtonRequest> { diff --git a/core/embed/rust/src/ui/component/button_request.rs b/core/embed/rust/src/ui/component/button_request.rs index 3e0bff1509..7b8d6d903e 100644 --- a/core/embed/rust/src/ui/component/button_request.rs +++ b/core/embed/rust/src/ui/component/button_request.rs @@ -34,7 +34,7 @@ impl<T: Component> Component for OneButtonRequest<T> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { if matches!(event, Event::Attach(_)) { if let Some(button_request) = self.button_request.take() { - ctx.send_button_request(button_request.code, button_request.br_type) + ctx.send_button_request(button_request.code, button_request.name) } } self.inner.event(ctx, event) diff --git a/core/embed/rust/src/ui/layout/obj.rs b/core/embed/rust/src/ui/layout/obj.rs index 3b98266629..dc4f4a6741 100644 --- a/core/embed/rust/src/ui/layout/obj.rs +++ b/core/embed/rust/src/ui/layout/obj.rs @@ -301,9 +301,7 @@ impl LayoutObjInner { fn obj_button_request(&mut self) -> Result<Obj, Error> { match self.event_ctx.button_request() { None => Ok(Obj::const_none()), - Some(ButtonRequest { code, br_type }) => { - (code.num().into(), br_type.try_into()?).try_into() - } + Some(ButtonRequest { code, name }) => (code.num().into(), name.try_into()?).try_into(), } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index 013eb402e7..8ec5e35a39 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -82,7 +82,7 @@ impl ConfirmOutput { let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; let account_path: Option<TString> = kwargs.get(Qstr::MP_QSTR_account_path)?.try_into_option()?; - let br_type: TString = kwargs.get(Qstr::MP_QSTR_br_type)?.try_into()?; + let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; let address: Obj = kwargs.get(Qstr::MP_QSTR_address)?; @@ -99,7 +99,7 @@ impl ConfirmOutput { .with_chunkify(chunkify) .with_text_mono(text_mono) .into_layout()? - .one_button_request(ButtonRequest::from_num(br_code, br_type)); + .one_button_request(ButtonRequest::from_num(br_code, br_name)); // Amount let content_amount = ConfirmBlobParams::new(TR::words__amount.into(), amount, None) @@ -109,7 +109,7 @@ impl ConfirmOutput { .with_text_mono(text_mono) .with_swipe_down() .into_layout()? - .one_button_request(ButtonRequest::from_num(br_code, br_type)); + .one_button_request(ButtonRequest::from_num(br_code, br_name)); // Menu let content_menu = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs index 9257f2c75f..5f6357298f 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs @@ -85,7 +85,7 @@ impl ConfirmResetCreate { .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) - .one_button_request(ButtonRequestCode::ResetDevice.with_type("setup_device")); + .one_button_request(ButtonRequestCode::ResetDevice.with_name("setup_device")); // FIXME: TR::reset__cancel_create_wallet should be used but Button text on // multiple lines not supported yet @@ -112,7 +112,7 @@ impl ConfirmResetCreate { FrameMsg::Content(()) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Info), }) - .one_button_request(ButtonRequestCode::ResetDevice.with_type("confirm_setup_device")); + .one_button_request(ButtonRequestCode::ResetDevice.with_name("confirm_setup_device")); let res = SwipeFlow::new(&ConfirmResetCreate::Intro)? .with_page(&ConfirmResetCreate::Intro, content_intro)? diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs index d3ee4910b9..13210faec4 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs @@ -81,7 +81,7 @@ impl ConfirmResetRecover { .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) - .one_button_request(ButtonRequestCode::ProtectCall.with_type("recover_device")); + .one_button_request(ButtonRequestCode::ProtectCall.with_name("recover_device")); let content_menu = Frame::left_aligned( "".into(), diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index f231443021..85988c048c 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -79,7 +79,7 @@ impl ConfirmSummary { let items: Obj = kwargs.get(Qstr::MP_QSTR_items)?; let account_items: Obj = kwargs.get(Qstr::MP_QSTR_account_items)?; let fee_items: Obj = kwargs.get(Qstr::MP_QSTR_fee_items)?; - let br_type: TString = kwargs.get(Qstr::MP_QSTR_br_type)?.try_into()?; + let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; // Summary @@ -93,7 +93,7 @@ impl ConfirmSummary { } let content_summary = summary .into_layout()? - .one_button_request(ButtonRequest::from_num(br_code, br_type)) + .one_button_request(ButtonRequest::from_num(br_code, br_name)) // Summary(1) + Hold(1) .with_pages(|summary_pages| summary_pages + 1); diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index a038fbdefe..7eaede6f75 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -105,7 +105,7 @@ impl GetAddress { let path: Option<TString> = kwargs.get(Qstr::MP_QSTR_path)?.try_into_option()?; let xpubs: Obj = kwargs.get(Qstr::MP_QSTR_xpubs)?; - let br_type: TString = kwargs.get(Qstr::MP_QSTR_br_type)?.try_into()?; + let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; // Address @@ -132,7 +132,7 @@ impl GetAddress { .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .with_vertical_pages() .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) - .one_button_request(ButtonRequest::from_num(br_code, br_type)) + .one_button_request(ButtonRequest::from_num(br_code, br_name)) // Count tap-to-confirm screen towards page count .with_pages(|address_pages| address_pages + 1); diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs index ebb3039ca1..5d1c645fc9 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -76,7 +76,7 @@ impl RequestNumber { let info: Obj = kwargs.get(Qstr::MP_QSTR_info)?; assert!(description != Obj::const_none()); assert!(info != Obj::const_none()); - let br_type: TString = kwargs.get(Qstr::MP_QSTR_br_type)?.try_into()?; + let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; let description_cb = move |i: u32| { @@ -103,7 +103,7 @@ impl RequestNumber { FrameMsg::Button(_) => Some(FlowMsg::Info), FrameMsg::Content(NumberInputDialogMsg(n)) => Some(FlowMsg::Choice(n as usize)), }) - .one_button_request(ButtonRequest::from_num(br_code, br_type)); + .one_button_request(ButtonRequest::from_num(br_code, br_name)); let content_menu = Frame::left_aligned( "".into(), diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs index bae28e0507..06fd8e78a6 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_share_words.rs @@ -98,7 +98,7 @@ impl ShowShareWords { .with_footer(TR::instructions__swipe_up.into(), description) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Content(_)).then_some(FlowMsg::Confirmed)) - .one_button_request(ButtonRequestCode::ResetDevice.with_type("share_words")) + .one_button_request(ButtonRequestCode::ResetDevice.with_name("share_words")) .with_pages(move |_| nwords + 2); let content_words = diff --git a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs index b541defaec..0c7993ed1c 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/warning_hi_prio.rs @@ -87,7 +87,7 @@ impl WarningHiPrio { .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); - // .one_button_request(ButtonRequestCode::Warning, br_type); + // .one_button_request(ButtonRequestCode::Warning, br_name); // Menu let content_menu = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 3473f1c6fd..d20fc21f72 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1707,7 +1707,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: Callable[[int], str] | None = None, /// info: Callable[[int], str] | None = None, /// br_code: ButtonRequestType, - /// br_type: str, + /// br_name: str, /// ) -> LayoutObj[tuple[UiResult, int]]: /// """Numer input with + and - buttons, description, and context menu with cancel and /// info.""" @@ -1835,7 +1835,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// path: str | None, /// xpubs: list[tuple[str, str]], /// br_code: ButtonRequestType, - /// br_type: str, + /// br_name: str, /// ) -> LayoutObj[UiResult]: /// """Get address / receive funds.""" Qstr::MP_QSTR_flow_get_address => obj_fn_kw!(0, flow::get_address::new_get_address).as_obj(), @@ -1858,7 +1858,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// account: str | None, /// account_path: str | None, /// br_code: ButtonRequestType, - /// br_type: str, + /// br_name: str, /// ) -> LayoutObj[UiResult]: /// """Confirm recipient.""" Qstr::MP_QSTR_flow_confirm_output => obj_fn_kw!(0, flow::new_confirm_output).as_obj(), @@ -1870,7 +1870,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// account_items: Iterable[tuple[str, str]], /// fee_items: Iterable[tuple[str, str]], /// br_code: ButtonRequestType, - /// br_type: str, + /// br_name: str, /// ) -> LayoutObj[UiResult]: /// """Total summary and hold to confirm.""" Qstr::MP_QSTR_flow_confirm_summary => obj_fn_kw!(0, flow::new_confirm_summary).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 7886f3a72b..623a91711b 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -423,7 +423,7 @@ def flow_request_number( description: Callable[[int], str] | None = None, info: Callable[[int], str] | None = None, br_code: ButtonRequestType, - br_type: str, + br_name: str, ) -> LayoutObj[tuple[UiResult, int]]: """Numer input with + and - buttons, description, and context menu with cancel and info.""" @@ -565,7 +565,7 @@ def flow_get_address( path: str | None, xpubs: list[tuple[str, str]], br_code: ButtonRequestType, - br_type: str, + br_name: str, ) -> LayoutObj[UiResult]: """Get address / receive funds.""" @@ -590,7 +590,7 @@ def flow_confirm_output( account: str | None, account_path: str | None, br_code: ButtonRequestType, - br_type: str, + br_name: str, ) -> LayoutObj[UiResult]: """Confirm recipient.""" @@ -603,7 +603,7 @@ def flow_confirm_summary( account_items: Iterable[tuple[str, str]], fee_items: Iterable[tuple[str, str]], br_code: ButtonRequestType, - br_type: str, + br_name: str, ) -> LayoutObj[UiResult]: """Total summary and hold to confirm.""" diff --git a/core/src/apps/bitcoin/get_public_key.py b/core/src/apps/bitcoin/get_public_key.py index 28f1ee4b00..613f80e420 100644 --- a/core/src/apps/bitcoin/get_public_key.py +++ b/core/src/apps/bitcoin/get_public_key.py @@ -110,7 +110,7 @@ async def get_public_key( account=account, path=path, mismatch_title=TR.addr_mismatch__xpub_mismatch, - br_type="show_xpub", + br_name="show_xpub", ) return PublicKey( diff --git a/core/src/apps/cardano/layout.py b/core/src/apps/cardano/layout.py index a13dfa6204..2e5d0d0bd5 100644 --- a/core/src/apps/cardano/layout.py +++ b/core/src/apps/cardano/layout.py @@ -294,7 +294,7 @@ async def confirm_reference_script( async def _confirm_data_chunk( - br_type: str, title: str, first_chunk: bytes, data_size: int + br_name: str, title: str, first_chunk: bytes, data_size: int ) -> None: MAX_DISPLAYED_SIZE = 56 displayed_bytes = first_chunk[:MAX_DISPLAYED_SIZE] @@ -308,7 +308,7 @@ async def _confirm_data_chunk( if data_size > MAX_DISPLAYED_SIZE: props.append(("...", None)) await confirm_properties( - br_type, + br_name, title=TR.cardano__confirm_transaction, props=props, br_code=BRT_Other, diff --git a/core/src/apps/eos/actions/layout.py b/core/src/apps/eos/actions/layout.py index 9dcbfbf0d6..8e2f96fff3 100644 --- a/core/src/apps/eos/actions/layout.py +++ b/core/src/apps/eos/actions/layout.py @@ -36,12 +36,12 @@ # Because icon and br_code are almost always the same # (and also calling with positional arguments takes less space) async def _confirm_properties( - br_type: str, + br_name: str, title: str, props: Iterable[PropertyType], ) -> None: await confirm_properties( - br_type, + br_name, title, props, hold=is_last, diff --git a/core/src/apps/solana/layout.py b/core/src/apps/solana/layout.py index 81aac811a4..ad3548483e 100644 --- a/core/src/apps/solana/layout.py +++ b/core/src/apps/solana/layout.py @@ -269,7 +269,7 @@ async def confirm_system_transfer( title=TR.words__recipient, value=base58.encode(transfer_instruction.recipient_account[0]), description="", - br_type="confirm_recipient", + br_name="confirm_recipient", br_code=ButtonRequestType.ConfirmOutput, verb=TR.buttons__continue, ) @@ -298,7 +298,7 @@ async def confirm_token_transfer( title=TR.words__recipient, value=base58.encode(destination_account), description="", - br_type="confirm_recipient", + br_name="confirm_recipient", br_code=ButtonRequestType.ConfirmOutput, verb=TR.buttons__continue, info_items=( @@ -312,7 +312,7 @@ async def confirm_token_transfer( title=TR.solana__token_address, value=base58.encode(token_mint), description="", - br_type="confirm_token_address", + br_name="confirm_token_address", br_code=ButtonRequestType.ConfirmOutput, verb=TR.buttons__continue, ) diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index 9d113f71bc..f86a88c90b 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -308,12 +308,14 @@ def is_type_of(cls, msg: Any) -> TypeGuard["Failure"]: class ButtonRequest(protobuf.MessageType): code: "ButtonRequestType | None" pages: "int | None" + name: "str | None" def __init__( self, *, code: "ButtonRequestType | None" = None, pages: "int | None" = None, + name: "str | None" = None, ) -> None: pass diff --git a/core/src/trezor/ui/layouts/common.py b/core/src/trezor/ui/layouts/common.py index 86ce7a47fb..1f17d7d02f 100644 --- a/core/src/trezor/ui/layouts/common.py +++ b/core/src/trezor/ui/layouts/common.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING -from trezor import log, workflow +from trezor import workflow from trezor.enums import ButtonRequestType from trezor.messages import ButtonAck, ButtonRequest from trezor.wire import context @@ -19,24 +19,24 @@ def report(self, value: int, description: str | None = None) -> None: ... async def button_request( - br_type: str, + br_name: str, code: ButtonRequestType = ButtonRequestType.Other, pages: int | None = None, ) -> None: - if __debug__: - log.debug(__name__, "ButtonRequest.type=%s", br_type) workflow.close_others() - await context.maybe_call(ButtonRequest(code=code, pages=pages), ButtonAck) + await context.maybe_call( + ButtonRequest(code=code, pages=pages, name=br_name), ButtonAck + ) async def interact( layout: LayoutType[T], - br_type: str, + br_name: str, br_code: ButtonRequestType = ButtonRequestType.Other, ) -> T: pages = None if hasattr(layout, "page_count") and layout.page_count() > 1: # type: ignore [Cannot access attribute "page_count" for class "LayoutType"] # We know for certain how many pages the layout will have pages = layout.page_count() # type: ignore [Cannot access attribute "page_count" for class "LayoutType"] - await button_request(br_type, br_code, pages) + await button_request(br_name, br_code, pages) return await layout diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index d4d4b4004b..9ff4ef6795 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING import trezorui2 -from trezor import TR, io, log, loop, ui, utils +from trezor import TR, io, loop, ui, utils from trezor.enums import ButtonRequestType from trezor.messages import ButtonAck, ButtonRequest from trezor.wire import ActionCancelled, context @@ -16,7 +16,7 @@ T = TypeVar("T") -BR_TYPE_OTHER = ButtonRequestType.Other # global_import_cache +BR_CODE_OTHER = ButtonRequestType.Other # global_import_cache CONFIRMED = trezorui2.CONFIRMED CANCELLED = trezorui2.CANCELLED @@ -251,17 +251,18 @@ def page_count(self) -> int: async def handle_usb(self, ctx: context.Context): while True: - br_code, br_type, page_count = await loop.race( + br_code, br_name, page_count = await loop.race( ctx.read(()), self.br_chan.take() ) - log.debug(__name__, "ButtonRequest.type=%s", br_type) - await ctx.call(ButtonRequest(code=br_code, pages=page_count), ButtonAck) + await ctx.call( + ButtonRequest(code=br_code, pages=page_count, name=br_name), ButtonAck + ) def _send_button_request(self): res = self.layout.button_request() if res is not None: - br_code, br_type = res - self.br_chan.publish((br_code, br_type, self.layout.page_count())) + br_code, br_name = res + self.br_chan.publish((br_code, br_name, self.layout.page_count())) def finalize(self): ui.LAST_TRANSITION_OUT = self.layout.get_transition_out() @@ -288,7 +289,7 @@ async def raise_if_not_confirmed( def confirm_action( - br_type: str, + br_name: str, title: str, action: str | None = None, description: str | None = None, @@ -300,7 +301,7 @@ def confirm_action( hold_danger: bool = False, reverse: bool = False, exc: ExceptionType = ActionCancelled, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, prompt_screen: bool = False, prompt_title: str | None = None, ) -> Awaitable[None]: @@ -324,7 +325,7 @@ def confirm_action( prompt_title=prompt_title or title, ) ), - br_type, + br_name, br_code, ), exc, @@ -332,7 +333,7 @@ def confirm_action( def confirm_single( - br_type: str, + br_name: str, title: str, description: str, description_param: str | None = None, @@ -355,7 +356,7 @@ def confirm_single( verb=verb, ) ), - br_type, + br_name, ButtonRequestType.ProtectCall, ) ) @@ -463,7 +464,7 @@ async def show_address( xpubs: Sequence[str] = (), mismatch_title: str | None = None, details_title: str | None = None, - br_type: str = "show_address", + br_name: str = "show_address", br_code: ButtonRequestType = ButtonRequestType.Address, chunkify: bool = False, ) -> None: @@ -489,7 +490,7 @@ def xpub_title(i: int) -> str: account=account, path=path, xpubs=[(xpub_title(i), xpub) for i, xpub in enumerate(xpubs)], - br_type=br_type, + br_name=br_name, br_code=br_code, ) ) @@ -503,7 +504,7 @@ def show_pubkey( account: str | None = None, path: str | None = None, mismatch_title: str | None = None, - br_type: str = "show_pubkey", + br_name: str = "show_pubkey", ) -> Awaitable[None]: title = title or TR.address__public_key # def_arg mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg @@ -512,7 +513,7 @@ def show_pubkey( title=title, account=account, path=path, - br_type=br_type, + br_name=br_name, br_code=ButtonRequestType.PublicKey, mismatch_title=mismatch_title, chunkify=False, @@ -520,7 +521,7 @@ def show_pubkey( async def show_error_and_raise( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -536,14 +537,14 @@ async def show_error_and_raise( allow_cancel=False, ) ), - br_type, - BR_TYPE_OTHER, + br_name, + BR_CODE_OTHER, ) raise exc def show_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -559,14 +560,14 @@ def show_warning( button=subheader or TR.words__continue_anyway, ) ), - br_type, + br_name, br_code, ) ) def show_success( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -579,7 +580,7 @@ def show_success( description=subheader if subheader else "", ) ), - br_type, + br_name, ButtonRequestType.Success, ) ) @@ -616,7 +617,7 @@ async def confirm_output( account=source_account, account_path=source_account_path, br_code=br_code, - br_type="confirm_output", + br_name="confirm_output", ) ) ) @@ -658,8 +659,8 @@ async def should_show_more( title: str, para: Iterable[tuple[int, str | bytes]], button_text: str | None = None, - br_type: str = "should_show_more", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "should_show_more", + br_code: ButtonRequestType = BR_CODE_OTHER, confirm: str | bytes | None = None, ) -> bool: """Return True if the user wants to show more (they click a special button) @@ -680,7 +681,7 @@ async def should_show_more( info_button=button_text, ) ), - br_type, + br_name, br_code, ) @@ -694,7 +695,7 @@ async def should_show_more( async def _confirm_ask_pagination( - br_type: str, + br_name: str, title: str, data: bytes | str, description: str, @@ -710,7 +711,7 @@ async def _confirm_ask_pagination( if not await should_show_more( title, para=[(ui.NORMAL, description), (ui.MONO, data)], - br_type=br_type, + br_name=br_name, br_code=br_code, ): return @@ -726,21 +727,21 @@ async def _confirm_ask_pagination( else: paginated.request_complete_repaint() - result = await interact(paginated, br_type, br_code) + result = await interact(paginated, br_name, br_code) assert result in (CONFIRMED, CANCELLED) assert False def confirm_blob( - br_type: str, + br_name: str, title: str, data: bytes | str, description: str | None = None, verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ask_pagination: bool = False, chunkify: bool = False, prompt_screen: bool = True, @@ -761,13 +762,13 @@ def confirm_blob( if ask_pagination and layout.page_count() > 1: assert not hold - return _confirm_ask_pagination(br_type, title, data, description or "", br_code) + return _confirm_ask_pagination(br_name, title, data, description or "", br_code) else: return raise_if_not_confirmed( interact( layout, - br_type, + br_name, br_code, ) ) @@ -777,31 +778,31 @@ def confirm_address( title: str, address: str, description: str | None = None, - br_type: str = "confirm_address", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "confirm_address", + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return confirm_value( title, address, description or "", - br_type, + br_name, br_code, verb=TR.buttons__confirm, ) def confirm_text( - br_type: str, + br_name: str, title: str, data: str, description: str | None = None, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return confirm_value( title, data, description or "", - br_type, + br_name, br_code, verb=TR.buttons__confirm, ) @@ -811,15 +812,15 @@ def confirm_amount( title: str, amount: str, description: str | None = None, - br_type: str = "confirm_amount", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "confirm_amount", + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: description = description or f"{TR.words__amount}:" # def_arg return confirm_value( title, amount, description, - br_type, + br_name, br_code, verb=TR.buttons__confirm, ) @@ -829,8 +830,8 @@ def confirm_value( title: str, value: str, description: str, - br_type: str, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str, + br_code: ButtonRequestType = BR_CODE_OTHER, *, verb: str | None = None, subtitle: str | None = None, @@ -869,14 +870,14 @@ def confirm_value( ) ), info_layout, - br_type, + br_name, br_code, ) ) def confirm_properties( - br_type: str, + br_name: str, title: str, props: Iterable[PropertyType], hold: bool = False, @@ -894,7 +895,7 @@ def confirm_properties( hold=hold, ) ), - br_type, + br_name, br_code, ) ) @@ -909,7 +910,7 @@ def confirm_total( source_account: str | None = None, source_account_path: str | None = None, fee_rate_amount: str | None = None, - br_type: str = "confirm_total", + br_name: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: title = title or TR.words__title_summary # def_arg @@ -936,7 +937,7 @@ def confirm_total( items=items, fee_items=fee_items, account_items=account_items, - br_type=br_type, + br_name=br_name, br_code=br_code, ) ) @@ -948,7 +949,7 @@ def confirm_summary( title: str | None = None, info_items: Iterable[tuple[str, str]] | None = None, info_title: str | None = None, - br_type: str = "confirm_total", + br_name: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: # TODO: info_title @@ -961,7 +962,7 @@ def confirm_summary( items=items or (), fee_items=(), account_items=info_items or (), - br_type=br_type, + br_name=br_name, br_code=br_code, ) ) @@ -975,7 +976,7 @@ async def confirm_ethereum_tx( total_amount: str, maximum_fee: str, items: Iterable[tuple[str, str]], - br_type: str = "confirm_ethereum_tx", + br_name: str = "confirm_ethereum_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, chunkify: bool = False, ) -> None: @@ -1000,7 +1001,7 @@ async def confirm_ethereum_tx( while True: # Allowing going back and forth between recipient and summary/details await confirm_blob( - br_type, + br_name, TR.words__recipient, recipient, verb=TR.buttons__continue, @@ -1011,7 +1012,7 @@ async def confirm_ethereum_tx( try: total_layout.request_complete_repaint() await raise_if_not_confirmed( - with_info(total_layout, info_layout, br_type, br_code) + with_info(total_layout, info_layout, br_name, br_code) ) break except ActionCancelled: @@ -1027,7 +1028,7 @@ async def confirm_ethereum_staking_tx( address_title: str, info_items: Iterable[tuple[str, str]], chunkify: bool = False, - br_type: str = "confirm_ethereum_staking_tx", + br_name: str = "confirm_ethereum_staking_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: @@ -1036,7 +1037,7 @@ async def confirm_ethereum_staking_tx( title, intro_question, "", - br_type, + br_name, br_code, verb=verb, value_text_mono=False, @@ -1058,7 +1059,7 @@ async def confirm_ethereum_staking_tx( title=title, info_title=TR.confirm_total__title_fee, info_items=info_items, - br_type=br_type, + br_name=br_name, br_code=br_code, ) @@ -1068,7 +1069,7 @@ def confirm_solana_tx( items: Iterable[tuple[str, str]], amount_title: str | None = None, fee_title: str | None = None, - br_type: str = "confirm_solana_tx", + br_name: str = "confirm_solana_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: amount_title = ( @@ -1078,7 +1079,7 @@ def confirm_solana_tx( return confirm_summary( ((amount_title, amount), (fee_title, fee)), info_items=items, - br_type=br_type, + br_name=br_name, br_code=br_code, ) @@ -1090,13 +1091,13 @@ def confirm_joint_total(spending_amount: str, total_amount: str) -> Awaitable[No (TR.send__to_the_total_amount, total_amount), ], title=TR.send__title_joint_transaction, - br_type="confirm_joint_total", + br_name="confirm_joint_total", br_code=ButtonRequestType.SignTx, ) def confirm_metadata( - br_type: str, + br_name: str, title: str, content: str, param: str | None = None, @@ -1106,7 +1107,7 @@ def confirm_metadata( ) -> Awaitable[None]: verb = verb or TR.buttons__continue # def_arg return confirm_action( - br_type, + br_name, title=title, action="", description=content, @@ -1180,10 +1181,10 @@ async def confirm_modify_output( async def with_info( main_layout: RustLayout, info_layout: RustLayout, - br_type: str, + br_name: str, br_code: ButtonRequestType, ) -> Any: - await button_request(br_type, br_code, pages=main_layout.page_count()) + await button_request(br_name, br_code, pages=main_layout.page_count()) while True: result = await main_layout @@ -1238,7 +1239,7 @@ def confirm_coinjoin(max_rounds: int, max_fee_per_vbyte: str) -> Awaitable[None] ) ), "coinjoin_final", - BR_TYPE_OTHER, + BR_CODE_OTHER, ) ) @@ -1252,7 +1253,7 @@ def confirm_sign_identity( f"{TR.words__sign} {proto}", identity, challenge_visual + "\n" if challenge_visual else "", - br_code=BR_TYPE_OTHER, + br_code=BR_CODE_OTHER, ) @@ -1266,10 +1267,10 @@ async def confirm_signverify( ) -> None: if verify: address_title = TR.sign_message__verify_address - br_type = "verify_message" + br_name = "verify_message" else: address_title = TR.sign_message__confirm_address - br_type = "sign_message" + br_name = "sign_message" address_layout = RustLayout( trezorui2.confirm_address( @@ -1315,7 +1316,7 @@ async def confirm_signverify( while True: result = await with_info( - address_layout, info_layout, br_type, br_code=BR_TYPE_OTHER + address_layout, info_layout, br_name, br_code=BR_CODE_OTHER ) if result is not CONFIRMED: result = await RustLayout( @@ -1330,7 +1331,7 @@ async def confirm_signverify( continue message_layout.request_complete_repaint() - result = await interact(message_layout, br_type, BR_TYPE_OTHER) + result = await interact(message_layout, br_name, BR_CODE_OTHER) if result is CONFIRMED: break @@ -1435,7 +1436,7 @@ async def confirm_reenter_pin( async def pin_mismatch_popup( is_wipe_code: bool = False, ) -> None: - await button_request("pin_mismatch", code=BR_TYPE_OTHER) + await button_request("pin_mismatch", code=BR_CODE_OTHER) title = TR.wipe_code__mismatch if is_wipe_code else TR.pin__mismatch description = TR.wipe_code__enter_new if is_wipe_code else TR.pin__reenter_new @@ -1447,7 +1448,7 @@ async def pin_mismatch_popup( async def wipe_code_same_as_pin_popup() -> None: - await button_request("wipe_code_same_as_pin", code=BR_TYPE_OTHER) + await button_request("wipe_code_same_as_pin", code=BR_CODE_OTHER) return await show_error_popup( TR.wipe_code__invalid, TR.wipe_code__diff_from_pin, @@ -1456,18 +1457,18 @@ async def wipe_code_same_as_pin_popup() -> None: def confirm_set_new_pin( - br_type: str, + br_name: str, title: str, description: str, information: str, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return raise_if_not_confirmed( interact( RustLayout( trezorui2.flow_confirm_set_new_pin(title=title, description=description) ), - br_type, + br_name, br_code, ) ) @@ -1482,7 +1483,7 @@ def confirm_firmware_update(description: str, fingerprint: str) -> Awaitable[Non ) ), "firmware_update", - BR_TYPE_OTHER, + BR_CODE_OTHER, ) ) @@ -1491,11 +1492,11 @@ async def set_brightness(current: int | None = None) -> None: await interact( RustLayout(trezorui2.set_brightness(current=current)), "set_brightness", - BR_TYPE_OTHER, + BR_CODE_OTHER, ) -def tutorial(br_code: ButtonRequestType = BR_TYPE_OTHER) -> Awaitable[None]: +def tutorial(br_code: ButtonRequestType = BR_CODE_OTHER) -> Awaitable[None]: """Showing users how to interact with the device.""" return raise_if_not_confirmed( interact( diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index e7ab841ba0..a1c9af3f6c 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -147,7 +147,7 @@ async def continue_recovery( async def show_recovery_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -164,7 +164,7 @@ async def show_recovery_warning( description="", ) ), - br_type, + br_name, br_code, ) ) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index a7ff154c55..5a2538370f 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -174,7 +174,7 @@ async def _prompt_number( max_count=max_count, info=info, br_code=ButtonRequestType.ResetDevice, - br_type=br_name, + br_name=br_name, ) ) @@ -352,7 +352,7 @@ async def show_success_backup() -> None: async def show_reset_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -369,7 +369,7 @@ async def show_reset_warning( allow_cancel=False, ) ), - br_type, + br_name, br_code, ) ) diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 0be6ee23bb..446322fbf4 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -26,7 +26,7 @@ CANCELLED = trezorui2.CANCELLED INFO = trezorui2.INFO -BR_TYPE_OTHER = ButtonRequestType.Other # global_import_cache +BR_CODE_OTHER = ButtonRequestType.Other # global_import_cache if __debug__: @@ -291,17 +291,19 @@ def page_count(self) -> int: async def handle_usb(self, ctx: context.Context): while True: - br_code, br_type, page_count = await loop.race( + br_code, br_name, page_count = await loop.race( ctx.read(()), self.br_chan.take() ) - log.debug(__name__, "ButtonRequest.type=%s", br_type) - await ctx.call(ButtonRequest(code=br_code, pages=page_count), ButtonAck) + log.debug(__name__, "ButtonRequest.name=%s", br_name) + await ctx.call( + ButtonRequest(code=br_code, pages=page_count, name=br_name), ButtonAck + ) def _send_button_request(self): res = self.layout.button_request() if res is not None: - br_code, br_type = res - self.br_chan.publish((br_code, br_type, self.layout.page_count())) + br_code, br_name = res + self.br_chan.publish((br_code, br_name, self.layout.page_count())) def draw_simple(layout: trezorui2.LayoutObj[Any]) -> None: @@ -317,7 +319,7 @@ def dummy_set_timer(token: int, deadline: int) -> None: # Temporary function, so we know where it is used # Should be gradually replaced by custom designs/layouts def _placeholder_confirm( - br_type: str, + br_name: str, title: str, data: str | None = None, description: str | None = None, @@ -325,11 +327,11 @@ def _placeholder_confirm( verb: str | None = None, verb_cancel: str | None = "", hold: bool = False, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg return confirm_action( - br_type, + br_name, title, data, description, @@ -342,14 +344,14 @@ def _placeholder_confirm( async def get_bool( - br_type: str, + br_name: str, title: str, data: str | None = None, description: str | None = None, verb: str | None = None, verb_cancel: str | None = "", hold: bool = False, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> bool: verb = verb or TR.buttons__confirm # def_arg result = await interact( @@ -363,7 +365,7 @@ async def get_bool( hold=hold, ) ), - br_type, + br_name, br_code, ) @@ -379,7 +381,7 @@ async def raise_if_not_confirmed( def confirm_action( - br_type: str, + br_name: str, title: str, action: str | None = None, description: str | None = None, @@ -391,7 +393,7 @@ def confirm_action( hold_danger: bool = False, reverse: bool = False, exc: ExceptionType = ActionCancelled, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, prompt_screen: bool = False, prompt_title: str | None = None, ) -> Awaitable[None]: @@ -413,7 +415,7 @@ def confirm_action( reverse=reverse, ) ), - br_type, + br_name, br_code, ), exc, @@ -421,7 +423,7 @@ def confirm_action( def confirm_single( - br_type: str, + br_name: str, title: str, description: str, description_param: str | None = None, @@ -436,7 +438,7 @@ def confirm_single( begin, _separator, end = description.partition(template_str) return confirm_action( - br_type, + br_name, title, description=begin + description_param + end, verb=verb or TR.buttons__confirm, @@ -477,19 +479,19 @@ async def show_wallet_created_success() -> None: async def prompt_backup() -> bool: - br_type = "backup_device" + br_name = "backup_device" br_code = ButtonRequestType.ResetDevice result = await interact( RustLayout(trezorui2.confirm_backup()), - br_type, + br_name, br_code, ) if result is CONFIRMED: return True return await get_bool( - br_type, + br_name, TR.backup__title_skip, description=TR.backup__want_to_skip, verb=TR.buttons__back_up, @@ -546,7 +548,7 @@ async def show_address( multisig_index: int | None = None, xpubs: Sequence[str] = (), mismatch_title: str | None = None, - br_type: str = "show_address", + br_name: str = "show_address", br_code: ButtonRequestType = ButtonRequestType.Address, chunkify: bool = False, ) -> None: @@ -570,7 +572,7 @@ async def show_address( if send_button_request: send_button_request = False await button_request( - br_type, + br_name, br_code, pages=layout.page_count(), ) @@ -624,7 +626,7 @@ def show_pubkey( account: str | None = None, path: str | None = None, mismatch_title: str | None = None, - br_type: str = "show_pubkey", + br_name: str = "show_pubkey", ) -> Awaitable[None]: title = title or TR.address__public_key # def_arg mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg @@ -633,7 +635,7 @@ def show_pubkey( title=title, account=account, path=path, - br_type=br_type, + br_name=br_name, br_code=ButtonRequestType.PublicKey, mismatch_title=mismatch_title, chunkify=False, @@ -641,7 +643,7 @@ def show_pubkey( def _show_modal( - br_type: str, + br_name: str, header: str, subheader: str | None, content: str, @@ -651,7 +653,7 @@ def _show_modal( exc: ExceptionType = ActionCancelled, ) -> Awaitable[None]: return confirm_action( - br_type, + br_name, header, subheader, content, @@ -663,7 +665,7 @@ def _show_modal( async def show_error_and_raise( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -671,17 +673,17 @@ async def show_error_and_raise( ) -> NoReturn: button = button or TR.buttons__try_again # def_arg await show_warning( - br_type, + br_name, subheader or "", content, button=button, - br_code=BR_TYPE_OTHER, + br_code=BR_CODE_OTHER, ) raise exc def show_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -706,13 +708,13 @@ def show_warning( description=subheader or "", ) ), - br_type, + br_name, br_code, ) def show_success( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -734,7 +736,7 @@ def show_success( title = "" return _show_modal( - br_type, + br_name, title, subheader, content, @@ -794,7 +796,7 @@ async def confirm_output( return -def tutorial(br_code: ButtonRequestType = BR_TYPE_OTHER) -> Awaitable[None]: +def tutorial(br_code: ButtonRequestType = BR_CODE_OTHER) -> Awaitable[None]: """Showing users how to interact with the device.""" return raise_if_not_confirmed( interact( @@ -824,8 +826,8 @@ async def should_show_more( title: str, para: Iterable[tuple[int, str]], button_text: str | None = None, - br_type: str = "should_show_more", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "should_show_more", + br_code: ButtonRequestType = BR_CODE_OTHER, confirm: str | bytes | None = None, verb_cancel: str | None = None, ) -> bool: @@ -848,7 +850,7 @@ async def should_show_more( info_button=button_text, # unused on TR ) ), - br_type, + br_name, br_code, ) @@ -862,14 +864,14 @@ async def should_show_more( def confirm_blob( - br_type: str, + br_name: str, title: str, data: bytes | str, description: str | None = None, verb: str | None = None, verb_cancel: str | None = "", # icon hold: bool = False, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ask_pagination: bool = False, chunkify: bool = False, prompt_screen: bool = True, @@ -891,21 +893,21 @@ def confirm_blob( if ask_pagination and layout.page_count() > 1: assert not hold return _confirm_ask_pagination( - br_type, title, data, description or "", verb_cancel, br_code + br_name, title, data, description or "", verb_cancel, br_code ) else: return raise_if_not_confirmed( interact( layout, - br_type, + br_name, br_code, ) ) async def _confirm_ask_pagination( - br_type: str, + br_name: str, title: str, data: bytes | str, description: str, @@ -923,7 +925,7 @@ async def _confirm_ask_pagination( title, para=[(ui.NORMAL, description), (ui.MONO, data)], verb_cancel=verb_cancel, - br_type=br_type, + br_name=br_name, br_code=br_code, ): return @@ -942,7 +944,7 @@ async def _confirm_ask_pagination( else: paginated.request_complete_repaint() - result = await interact(paginated, br_type, br_code) + result = await interact(paginated, br_name, br_code) assert result in (CONFIRMED, CANCELLED) assert False @@ -952,11 +954,11 @@ def confirm_address( title: str, address: str, description: str | None = None, - br_type: str = "confirm_address", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "confirm_address", + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return confirm_blob( - br_type, + br_name, title, address, description, @@ -965,14 +967,14 @@ def confirm_address( def confirm_text( - br_type: str, + br_name: str, title: str, data: str, description: str | None = None, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return _placeholder_confirm( - br_type, + br_name, title, data, description, @@ -984,12 +986,12 @@ def confirm_amount( title: str, amount: str, description: str | None = None, - br_type: str = "confirm_amount", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "confirm_amount", + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: description = description or f"{TR.words__amount}:" # def_arg return confirm_blob( - br_type, + br_name, title, amount, description, @@ -998,7 +1000,7 @@ def confirm_amount( def confirm_properties( - br_type: str, + br_name: str, title: str, props: Iterable[PropertyType], hold: bool = False, @@ -1025,7 +1027,7 @@ def handle_bytes(prop: PropertyType): hold=hold, ) ), - br_type, + br_name, br_code, ) ) @@ -1035,8 +1037,8 @@ async def confirm_value( title: str, value: str, description: str, - br_type: str, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str, + br_code: ButtonRequestType = BR_CODE_OTHER, *, verb: str | None = None, hold: bool = False, @@ -1060,7 +1062,7 @@ async def confirm_value( hold=hold, ) ), - br_type, + br_name, br_code, ) ) @@ -1083,7 +1085,7 @@ async def confirm_value( if send_button_request: send_button_request = False await button_request( - br_type, + br_name, br_code, should_show_more_layout.page_count(), ) @@ -1120,7 +1122,7 @@ def confirm_total( fee_label: str | None = None, source_account: str | None = None, source_account_path: str | None = None, - br_type: str = "confirm_total", + br_name: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: total_label = total_label or TR.send__total_amount_colon # def_arg @@ -1138,7 +1140,7 @@ def confirm_total( fee_label=fee_label, # type: ignore [No parameter named] ) ), - br_type, + br_name, br_code, ) ) @@ -1156,7 +1158,7 @@ async def confirm_ethereum_staking_tx( address_title: str, info_items: Iterable[tuple[str, str]], chunkify: bool = False, - br_type: str = "confirm_ethereum_staking_tx", + br_name: str = "confirm_ethereum_staking_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: # intro @@ -1164,7 +1166,7 @@ async def confirm_ethereum_staking_tx( title, intro_question, "", - br_type, + br_name, br_code, verb=verb, info_items=((address_title, address),), @@ -1190,7 +1192,7 @@ async def confirm_ethereum_staking_tx( cancel_cross=True, ) ), - br_type=br_type, + br_name=br_name, br_code=br_code, ) ) @@ -1201,7 +1203,7 @@ def confirm_solana_tx( items: Iterable[tuple[str, str]], amount_title: str | None = None, fee_title: str | None = None, - br_type: str = "confirm_solana_tx", + br_name: str = "confirm_solana_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: amount_title = ( @@ -1220,7 +1222,7 @@ def confirm_solana_tx( cancel_cross=True, ) ), - br_type=br_type, + br_name=br_name, br_code=br_code, ) ) @@ -1230,7 +1232,7 @@ async def confirm_ethereum_tx( total_amount: str, maximum_fee: str, items: Iterable[tuple[str, str]], - br_type: str = "confirm_ethereum_tx", + br_name: str = "confirm_ethereum_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, chunkify: bool = False, ) -> None: @@ -1247,7 +1249,7 @@ async def confirm_ethereum_tx( while True: # Allowing going back and forth between recipient and summary/details await confirm_blob( - br_type, + br_name, TR.words__recipient, recipient, verb=TR.buttons__continue, @@ -1259,7 +1261,7 @@ async def confirm_ethereum_tx( await raise_if_not_confirmed( interact( summary_layout, - br_type, + br_name, br_code, ) ) @@ -1284,7 +1286,7 @@ def confirm_joint_total(spending_amount: str, total_amount: str) -> Awaitable[No def confirm_metadata( - br_type: str, + br_name: str, title: str, content: str, param: str | None = None, @@ -1292,7 +1294,7 @@ def confirm_metadata( hold: bool = False, ) -> Awaitable[None]: return _placeholder_confirm( - br_type, + br_name, title, description=content.format(param), hold=hold, @@ -1394,7 +1396,7 @@ def confirm_coinjoin(max_rounds: int, max_fee_per_vbyte: str) -> Awaitable[None] ) ), "coinjoin_final", - BR_TYPE_OTHER, + BR_CODE_OTHER, ) ) @@ -1412,7 +1414,7 @@ def confirm_sign_identity( "confirm_sign_identity", f"{TR.words__sign} {proto}", text, - br_code=BR_TYPE_OTHER, + br_code=BR_CODE_OTHER, ) @@ -1424,25 +1426,25 @@ async def confirm_signverify( account: str | None = None, chunkify: bool = False, ) -> None: - br_type = "verify_message" if verify else "sign_message" + br_name = "verify_message" if verify else "sign_message" # Allowing to go back from the second screen while True: await confirm_blob( - br_type, + br_name, TR.sign_message__confirm_address, address, verb=TR.buttons__continue, - br_code=BR_TYPE_OTHER, + br_code=BR_CODE_OTHER, ) try: await confirm_blob( - br_type, + br_name, TR.sign_message__confirm_message, message, verb_cancel="^", - br_code=BR_TYPE_OTHER, + br_code=BR_CODE_OTHER, ask_pagination=True, ) except ActionCancelled: @@ -1538,27 +1540,27 @@ async def request_pin_on_device( def confirm_reenter_pin(is_wipe_code: bool = False) -> Awaitable[None]: - br_type = "reenter_wipe_code" if is_wipe_code else "reenter_pin" + br_name = "reenter_wipe_code" if is_wipe_code else "reenter_pin" title = TR.wipe_code__title_check if is_wipe_code else TR.pin__title_check_pin description = ( TR.wipe_code__reenter_to_confirm if is_wipe_code else TR.pin__reenter_to_confirm ) return confirm_action( - br_type, + br_name, title, description=description, verb=TR.buttons__continue, verb_cancel=None, - br_code=BR_TYPE_OTHER, + br_code=BR_CODE_OTHER, ) def _confirm_multiple_pages_texts( - br_type: str, + br_name: str, title: str, items: list[str], verb: str, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return raise_if_not_confirmed( interact( @@ -1569,7 +1571,7 @@ def _confirm_multiple_pages_texts( items=items, ) ), - br_type, + br_name, br_code, ) ) @@ -1583,7 +1585,7 @@ def pin_mismatch_popup(is_wipe_code: bool = False) -> Awaitable[None]: description, TR.pin__please_check_again, TR.buttons__check_again, - BR_TYPE_OTHER, + BR_CODE_OTHER, ) @@ -1594,19 +1596,19 @@ def wipe_code_same_as_pin_popup() -> Awaitable[None]: description=TR.wipe_code__diff_from_pin, verb=TR.buttons__try_again, verb_cancel=None, - br_code=BR_TYPE_OTHER, + br_code=BR_CODE_OTHER, ) async def confirm_set_new_pin( - br_type: str, + br_name: str, title: str, description: str, information: str, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> None: await _confirm_multiple_pages_texts( - br_type, + br_name, title, [description, information], TR.buttons__turn_on, @@ -1614,7 +1616,7 @@ async def confirm_set_new_pin( ) # Not showing extra info for wipe code - if "wipe_code" in br_type: + if "wipe_code" in br_name: return # Additional information for the user to know about PIN @@ -1623,7 +1625,7 @@ async def confirm_set_new_pin( TR.pin__cursor_will_change, ] await _confirm_multiple_pages_texts( - br_type, + br_name, title, next_info, TR.buttons__continue, @@ -1640,6 +1642,6 @@ def confirm_firmware_update(description: str, fingerprint: str) -> Awaitable[Non ) ), "firmware_update", - BR_TYPE_OTHER, + BR_CODE_OTHER, ) ) diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index b520494f7c..10de5e0d3c 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -107,11 +107,11 @@ async def continue_recovery( async def show_recovery_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, br_code: ButtonRequestType = ButtonRequestType.Warning, ) -> None: button = button or TR.buttons__try_again # def_arg - await show_warning(br_type, content, subheader, button, br_code) + await show_warning(br_name, content, subheader, button, br_code) diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index 2b0f4a1f73..f231de3cba 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -17,7 +17,7 @@ async def show_share_words( group_index: int | None = None, ) -> None: # Showing words, asking for write down confirmation and preparing for check - br_type = "backup_words" + br_name = "backup_words" br_code = ButtonRequestType.ResetDevice if share_index is None: @@ -36,7 +36,7 @@ async def show_share_words( # (by sending CANCELLED) while True: await confirm_action( - br_type, + br_name, title, description=TR.reset__write_down_words_template.format(len(share_words)), verb=TR.buttons__show_words, @@ -50,14 +50,14 @@ async def show_share_words( share_words=share_words, # type: ignore [No parameter named "share_words"] ) ), - br_type, + br_name, br_code, ) if result is CONFIRMED: break await confirm_action( - br_type, + br_name, check_title, description=TR.reset__select_correct_word, verb=TR.buttons__continue, @@ -290,7 +290,7 @@ async def show_success_backup() -> None: async def show_reset_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -299,7 +299,7 @@ async def show_reset_warning( button = button or TR.buttons__try_again # def_arg await show_warning( - br_type, + br_name, subheader or "", content, button, diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index 6d532991d5..f7ef29c1e9 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -22,7 +22,7 @@ T = 0 -BR_TYPE_OTHER = ButtonRequestType.Other # global_import_cache +BR_CODE_OTHER = ButtonRequestType.Other # global_import_cache CONFIRMED = trezorui2.CONFIRMED CANCELLED = trezorui2.CANCELLED @@ -254,17 +254,19 @@ def page_count(self) -> int: async def handle_usb(self, ctx: context.Context): while True: - br_code, br_type, page_count = await loop.race( + br_code, br_name, page_count = await loop.race( ctx.read(()), self.br_chan.take() ) - log.debug(__name__, "ButtonRequest.type=%s", br_type) - await ctx.call(ButtonRequest(code=br_code, pages=page_count), ButtonAck) + log.debug(__name__, "ButtonRequest.name=%s", br_name) + await ctx.call( + ButtonRequest(code=br_code, pages=page_count, name=br_name), ButtonAck + ) def _send_button_request(self): res = self.layout.button_request() if res is not None: - br_code, br_type = res - self.br_chan.publish((br_code, br_type, self.layout.page_count())) + br_code, br_name = res + self.br_chan.publish((br_code, br_name, self.layout.page_count())) def draw_simple(layout: trezorui2.LayoutObj[Any]) -> None: @@ -288,7 +290,7 @@ async def raise_if_not_confirmed( def confirm_action( - br_type: str, + br_name: str, title: str, action: str | None = None, description: str | None = None, @@ -300,7 +302,7 @@ def confirm_action( hold_danger: bool = False, reverse: bool = False, exc: ExceptionType = ActionCancelled, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, prompt_screen: bool = False, prompt_title: str | None = None, ) -> Awaitable[None]: @@ -322,7 +324,7 @@ def confirm_action( reverse=reverse, ) ), - br_type, + br_name, br_code, ), exc, @@ -330,7 +332,7 @@ def confirm_action( def confirm_single( - br_type: str, + br_name: str, title: str, description: str, description_param: str | None = None, @@ -353,7 +355,7 @@ def confirm_single( verb=verb, ) ), - br_type, + br_name, ButtonRequestType.ProtectCall, ) ) @@ -480,7 +482,7 @@ async def show_address( xpubs: Sequence[str] = (), mismatch_title: str | None = None, details_title: str | None = None, - br_type: str = "show_address", + br_name: str = "show_address", br_code: ButtonRequestType = ButtonRequestType.Address, chunkify: bool = False, ) -> None: @@ -509,7 +511,7 @@ async def show_address( if send_button_request: send_button_request = False await button_request( - br_type, + br_name, br_code, pages=layout.page_count(), ) @@ -560,7 +562,7 @@ def show_pubkey( account: str | None = None, path: str | None = None, mismatch_title: str | None = None, - br_type: str = "show_pubkey", + br_name: str = "show_pubkey", ) -> Awaitable[None]: title = title or TR.address__public_key # def_arg mismatch_title = mismatch_title or TR.addr_mismatch__key_mismatch # def_arg @@ -569,7 +571,7 @@ def show_pubkey( title=title, account=account, path=path, - br_type=br_type, + br_name=br_name, br_code=ButtonRequestType.PublicKey, mismatch_title=mismatch_title, chunkify=False, @@ -577,7 +579,7 @@ def show_pubkey( async def show_error_and_raise( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -593,14 +595,14 @@ async def show_error_and_raise( allow_cancel=False, ) ), - br_type, - BR_TYPE_OTHER, + br_name, + BR_CODE_OTHER, ) raise exc def show_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -616,14 +618,14 @@ def show_warning( button=button, ) ), - br_type, + br_name, br_code, ) ) def show_success( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -639,7 +641,7 @@ def show_success( allow_cancel=False, ) ), - br_type, + br_name, ButtonRequestType.Success, ) ) @@ -746,8 +748,8 @@ async def should_show_more( title: str, para: Iterable[tuple[int, str | bytes]], button_text: str | None = None, - br_type: str = "should_show_more", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "should_show_more", + br_code: ButtonRequestType = BR_CODE_OTHER, confirm: str | bytes | None = None, ) -> bool: """Return True if the user wants to show more (they click a special button) @@ -768,7 +770,7 @@ async def should_show_more( info_button=button_text, ) ), - br_type, + br_name, br_code, ) @@ -782,7 +784,7 @@ async def should_show_more( async def _confirm_ask_pagination( - br_type: str, + br_name: str, title: str, data: bytes | str, description: str, @@ -798,7 +800,7 @@ async def _confirm_ask_pagination( if not await should_show_more( title, para=[(ui.NORMAL, description), (ui.MONO, data)], - br_type=br_type, + br_name=br_name, br_code=br_code, ): return @@ -814,21 +816,21 @@ async def _confirm_ask_pagination( else: paginated.request_complete_repaint() - result = await interact(paginated, br_type, br_code) + result = await interact(paginated, br_name, br_code) assert result in (CONFIRMED, CANCELLED) assert False def confirm_blob( - br_type: str, + br_name: str, title: str, data: bytes | str, description: str | None = None, verb: str | None = None, verb_cancel: str | None = None, hold: bool = False, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ask_pagination: bool = False, chunkify: bool = False, prompt_screen: bool = True, @@ -849,13 +851,13 @@ def confirm_blob( if ask_pagination and layout.page_count() > 1: assert not hold - return _confirm_ask_pagination(br_type, title, data, description or "", br_code) + return _confirm_ask_pagination(br_name, title, data, description or "", br_code) else: return raise_if_not_confirmed( interact( layout, - br_type, + br_name, br_code, ) ) @@ -865,31 +867,31 @@ def confirm_address( title: str, address: str, description: str | None = None, - br_type: str = "confirm_address", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "confirm_address", + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return confirm_value( title, address, description or "", - br_type, + br_name, br_code, verb=TR.buttons__confirm, ) def confirm_text( - br_type: str, + br_name: str, title: str, data: str, description: str | None = None, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return confirm_value( title, data, description or "", - br_type, + br_name, br_code, verb=TR.buttons__confirm, ) @@ -899,15 +901,15 @@ def confirm_amount( title: str, amount: str, description: str | None = None, - br_type: str = "confirm_amount", - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str = "confirm_amount", + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: description = description or f"{TR.words__amount}:" # def_arg return confirm_value( title, amount, description, - br_type, + br_name, br_code, verb=TR.buttons__confirm, ) @@ -917,8 +919,8 @@ def confirm_value( title: str, value: str, description: str, - br_type: str, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_name: str, + br_code: ButtonRequestType = BR_CODE_OTHER, *, verb: str | None = None, subtitle: str | None = None, @@ -957,14 +959,14 @@ def confirm_value( ) ), info_layout, - br_type, + br_name, br_code, ) ) def confirm_properties( - br_type: str, + br_name: str, title: str, props: Iterable[PropertyType], hold: bool = False, @@ -982,7 +984,7 @@ def confirm_properties( hold=hold, ) ), - br_type, + br_name, br_code, ) ) @@ -997,7 +999,7 @@ def confirm_total( source_account: str | None = None, source_account_path: str | None = None, fee_rate_amount: str | None = None, - br_type: str = "confirm_total", + br_name: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: title = title or TR.words__title_summary # def_arg @@ -1018,7 +1020,7 @@ def confirm_total( items, TR.words__title_summary, info_items=info_items, - br_type=br_type, + br_name=br_name, br_code=br_code, ) @@ -1028,7 +1030,7 @@ def confirm_summary( title: str | None = None, info_items: Iterable[tuple[str, str]] | None = None, info_title: str | None = None, - br_type: str = "confirm_total", + br_name: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: title = title or TR.words__title_summary # def_arg @@ -1048,7 +1050,7 @@ def confirm_summary( ) ) return raise_if_not_confirmed( - with_info(total_layout, info_layout, br_type, br_code) + with_info(total_layout, info_layout, br_name, br_code) ) @@ -1059,7 +1061,7 @@ async def confirm_ethereum_tx( total_amount: str, maximum_fee: str, items: Iterable[tuple[str, str]], - br_type: str = "confirm_ethereum_tx", + br_name: str = "confirm_ethereum_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, chunkify: bool = False, ) -> None: @@ -1084,7 +1086,7 @@ async def confirm_ethereum_tx( while True: # Allowing going back and forth between recipient and summary/details await confirm_blob( - br_type, + br_name, TR.words__recipient, recipient, verb=TR.buttons__continue, @@ -1094,7 +1096,7 @@ async def confirm_ethereum_tx( try: total_layout.request_complete_repaint() await raise_if_not_confirmed( - with_info(total_layout, info_layout, br_type, br_code) + with_info(total_layout, info_layout, br_name, br_code) ) break except ActionCancelled: @@ -1110,7 +1112,7 @@ async def confirm_ethereum_staking_tx( address_title: str, info_items: Iterable[tuple[str, str]], chunkify: bool = False, - br_type: str = "confirm_ethereum_staking_tx", + br_name: str = "confirm_ethereum_staking_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: # intro @@ -1118,7 +1120,7 @@ async def confirm_ethereum_staking_tx( title, intro_question, "", - br_type, + br_name, br_code, verb=verb, value_text_mono=False, @@ -1140,7 +1142,7 @@ async def confirm_ethereum_staking_tx( title=title, info_title=TR.confirm_total__title_fee, info_items=info_items, - br_type=br_type, + br_name=br_name, br_code=br_code, ) @@ -1150,7 +1152,7 @@ def confirm_solana_tx( items: Iterable[tuple[str, str]], amount_title: str | None = None, fee_title: str | None = None, - br_type: str = "confirm_solana_tx", + br_name: str = "confirm_solana_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> Awaitable[None]: amount_title = ( @@ -1160,7 +1162,7 @@ def confirm_solana_tx( return confirm_summary( ((amount_title, amount), (fee_title, fee)), info_items=items, - br_type=br_type, + br_name=br_name, br_code=br_code, ) @@ -1184,7 +1186,7 @@ def confirm_joint_total(spending_amount: str, total_amount: str) -> Awaitable[No def confirm_metadata( - br_type: str, + br_name: str, title: str, content: str, param: str | None = None, @@ -1194,7 +1196,7 @@ def confirm_metadata( ) -> Awaitable[None]: verb = verb or TR.buttons__continue # def_arg return confirm_action( - br_type, + br_name, title=title, action="", description=content, @@ -1268,10 +1270,10 @@ async def confirm_modify_output( async def with_info( main_layout: RustLayout[T], info_layout: RustLayout[Any], - br_type: str, + br_name: str, br_code: ButtonRequestType, ) -> T: - await button_request(br_type, br_code, pages=main_layout.page_count()) + await button_request(br_name, br_code, pages=main_layout.page_count()) while True: result = await main_layout @@ -1326,7 +1328,7 @@ def confirm_coinjoin(max_rounds: int, max_fee_per_vbyte: str) -> Awaitable[None] ) ), "coinjoin_final", - BR_TYPE_OTHER, + BR_CODE_OTHER, ) ) @@ -1340,7 +1342,7 @@ def confirm_sign_identity( f"{TR.words__sign} {proto}", identity, challenge_visual + "\n" if challenge_visual else "", - br_code=BR_TYPE_OTHER, + br_code=BR_CODE_OTHER, ) @@ -1354,10 +1356,10 @@ async def confirm_signverify( ) -> None: if verify: address_title = TR.sign_message__verify_address - br_type = "verify_message" + br_name = "verify_message" else: address_title = TR.sign_message__confirm_address - br_type = "sign_message" + br_name = "sign_message" address_layout = RustLayout( trezorui2.confirm_address( @@ -1403,7 +1405,7 @@ async def confirm_signverify( while True: result = await with_info( - address_layout, info_layout, br_type, br_code=BR_TYPE_OTHER + address_layout, info_layout, br_name, br_code=BR_CODE_OTHER ) if result is not CONFIRMED: result = await RustLayout( @@ -1418,7 +1420,7 @@ async def confirm_signverify( continue message_layout.request_complete_repaint() - result = await interact(message_layout, br_type, BR_TYPE_OTHER) + result = await interact(message_layout, br_name, BR_CODE_OTHER) if result is CONFIRMED: break @@ -1520,7 +1522,7 @@ async def confirm_reenter_pin(is_wipe_code: bool = False) -> None: async def pin_mismatch_popup(is_wipe_code: bool = False) -> None: - await button_request("pin_mismatch", code=BR_TYPE_OTHER) + await button_request("pin_mismatch", code=BR_CODE_OTHER) title = TR.wipe_code__wipe_code_mismatch if is_wipe_code else TR.pin__pin_mismatch description = TR.wipe_code__mismatch if is_wipe_code else TR.pin__mismatch return await show_error_popup( @@ -1531,7 +1533,7 @@ async def pin_mismatch_popup(is_wipe_code: bool = False) -> None: async def wipe_code_same_as_pin_popup() -> None: - await button_request("wipe_code_same_as_pin", code=BR_TYPE_OTHER) + await button_request("wipe_code_same_as_pin", code=BR_CODE_OTHER) return await show_error_popup( TR.wipe_code__invalid, TR.wipe_code__diff_from_pin, @@ -1540,11 +1542,11 @@ async def wipe_code_same_as_pin_popup() -> None: def confirm_set_new_pin( - br_type: str, + br_name: str, title: str, description: str, information: str, - br_code: ButtonRequestType = BR_TYPE_OTHER, + br_code: ButtonRequestType = BR_CODE_OTHER, ) -> Awaitable[None]: return raise_if_not_confirmed( interact( @@ -1558,7 +1560,7 @@ def confirm_set_new_pin( verb=TR.buttons__turn_on, ) ), - br_type, + br_name, br_code, ) ) @@ -1573,7 +1575,7 @@ def confirm_firmware_update(description: str, fingerprint: str) -> Awaitable[Non ) ), "firmware_update", - BR_TYPE_OTHER, + BR_CODE_OTHER, ) ) @@ -1582,5 +1584,5 @@ async def set_brightness(current: int | None = None) -> None: await interact( RustLayout(trezorui2.set_brightness(current=current)), "set_brightness", - BR_TYPE_OTHER, + BR_CODE_OTHER, ) diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index 98bd6c8c8b..4b05fdce0c 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -147,7 +147,7 @@ async def continue_recovery( async def show_recovery_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -164,7 +164,7 @@ async def show_recovery_warning( allow_cancel=False, ) ), - br_type, + br_name, br_code, ) ) diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index 5794c27792..3cb0c24778 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -355,7 +355,7 @@ async def show_success_backup() -> None: async def show_reset_warning( - br_type: str, + br_name: str, content: str, subheader: str | None = None, button: str | None = None, @@ -372,7 +372,7 @@ async def show_reset_warning( allow_cancel=False, ) ), - br_type, + br_name, br_code, ) ) diff --git a/legacy/firmware/protob/messages-common.options b/legacy/firmware/protob/messages-common.options index 29176fec8d..7927e4b9fe 100644 --- a/legacy/firmware/protob/messages-common.options +++ b/legacy/firmware/protob/messages-common.options @@ -13,3 +13,5 @@ Deprecated_PassphraseStateRequest.state max_size:1 HDNodeType.chain_code max_size:32 HDNodeType.private_key max_size:32 HDNodeType.public_key max_size:33 + +ButtonRequest.name max_size:32 diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 3027302bc7..230fc4c5bc 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -892,6 +892,7 @@ class ButtonRequest(protobuf.MessageType): FIELDS = { 1: protobuf.Field("code", "ButtonRequestType", repeated=False, required=False, default=None), 2: protobuf.Field("pages", "uint32", repeated=False, required=False, default=None), + 4: protobuf.Field("name", "string", repeated=False, required=False, default=None), } def __init__( @@ -899,9 +900,11 @@ def __init__( *, code: Optional["ButtonRequestType"] = None, pages: Optional["int"] = None, + name: Optional["str"] = None, ) -> None: self.code = code self.pages = pages + self.name = name class ButtonAck(protobuf.MessageType): diff --git a/rust/trezor-client/src/protos/generated/messages_common.rs b/rust/trezor-client/src/protos/generated/messages_common.rs index 7688e2d411..46405da669 100644 --- a/rust/trezor-client/src/protos/generated/messages_common.rs +++ b/rust/trezor-client/src/protos/generated/messages_common.rs @@ -536,6 +536,8 @@ pub struct ButtonRequest { pub code: ::std::option::Option<::protobuf::EnumOrUnknown<button_request::ButtonRequestType>>, // @@protoc_insertion_point(field:hw.trezor.messages.common.ButtonRequest.pages) pub pages: ::std::option::Option<u32>, + // @@protoc_insertion_point(field:hw.trezor.messages.common.ButtonRequest.name) + pub name: ::std::option::Option<::std::string::String>, // special fields // @@protoc_insertion_point(special_field:hw.trezor.messages.common.ButtonRequest.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -593,8 +595,44 @@ impl ButtonRequest { self.pages = ::std::option::Option::Some(v); } + // optional string name = 4; + + pub fn name(&self) -> &str { + match self.name.as_ref() { + Some(v) => v, + None => "", + } + } + + pub fn clear_name(&mut self) { + self.name = ::std::option::Option::None; + } + + pub fn has_name(&self) -> bool { + self.name.is_some() + } + + // Param is passed by value, moved + pub fn set_name(&mut self, v: ::std::string::String) { + self.name = ::std::option::Option::Some(v); + } + + // Mutable pointer to the field. + // If field is not initialized, it is initialized with default value first. + pub fn mut_name(&mut self) -> &mut ::std::string::String { + if self.name.is_none() { + self.name = ::std::option::Option::Some(::std::string::String::new()); + } + self.name.as_mut().unwrap() + } + + // Take field + pub fn take_name(&mut self) -> ::std::string::String { + self.name.take().unwrap_or_else(|| ::std::string::String::new()) + } + fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(2); + let mut fields = ::std::vec::Vec::with_capacity(3); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "code", @@ -606,6 +644,11 @@ impl ButtonRequest { |m: &ButtonRequest| { &m.pages }, |m: &mut ButtonRequest| { &mut m.pages }, )); + fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( + "name", + |m: &ButtonRequest| { &m.name }, + |m: &mut ButtonRequest| { &mut m.name }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::<ButtonRequest>( "ButtonRequest", fields, @@ -630,6 +673,9 @@ impl ::protobuf::Message for ButtonRequest { 16 => { self.pages = ::std::option::Option::Some(is.read_uint32()?); }, + 34 => { + self.name = ::std::option::Option::Some(is.read_string()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -648,6 +694,9 @@ impl ::protobuf::Message for ButtonRequest { if let Some(v) = self.pages { my_size += ::protobuf::rt::uint32_size(2, v); } + if let Some(v) = self.name.as_ref() { + my_size += ::protobuf::rt::string_size(4, &v); + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -660,6 +709,9 @@ impl ::protobuf::Message for ButtonRequest { if let Some(v) = self.pages { os.write_uint32(2, v)?; } + if let Some(v) = self.name.as_ref() { + os.write_string(4, v)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -679,6 +731,7 @@ impl ::protobuf::Message for ButtonRequest { fn clear(&mut self) { self.code = ::std::option::Option::None; self.pages = ::std::option::Option::None; + self.name = ::std::option::Option::None; self.special_fields.clear(); } @@ -686,6 +739,7 @@ impl ::protobuf::Message for ButtonRequest { static instance: ButtonRequest = ButtonRequest { code: ::std::option::Option::None, pages: ::std::option::Option::None, + name: ::std::option::Option::None, special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -2438,43 +2492,44 @@ static file_descriptor_proto_data: &'static [u8] = b"\ essError\x10\t\x12\x1a\n\x16Failure_NotEnoughFunds\x10\n\x12\x1a\n\x16Fa\ ilure_NotInitialized\x10\x0b\x12\x17\n\x13Failure_PinMismatch\x10\x0c\ \x12\x1c\n\x18Failure_WipeCodeMismatch\x10\r\x12\x1a\n\x16Failure_Invali\ - dSession\x10\x0e\x12\x19\n\x15Failure_FirmwareError\x10c\"\x91\x06\n\rBu\ + dSession\x10\x0e\x12\x19\n\x15Failure_FirmwareError\x10c\"\xab\x06\n\rBu\ ttonRequest\x12N\n\x04code\x18\x01\x20\x01(\x0e2:.hw.trezor.messages.com\ mon.ButtonRequest.ButtonRequestTypeR\x04code\x12\x14\n\x05pages\x18\x02\ - \x20\x01(\rR\x05pages\"\x99\x05\n\x11ButtonRequestType\x12\x17\n\x13Butt\ - onRequest_Other\x10\x01\x12\"\n\x1eButtonRequest_FeeOverThreshold\x10\ - \x02\x12\x1f\n\x1bButtonRequest_ConfirmOutput\x10\x03\x12\x1d\n\x19Butto\ - nRequest_ResetDevice\x10\x04\x12\x1d\n\x19ButtonRequest_ConfirmWord\x10\ - \x05\x12\x1c\n\x18ButtonRequest_WipeDevice\x10\x06\x12\x1d\n\x19ButtonRe\ - quest_ProtectCall\x10\x07\x12\x18\n\x14ButtonRequest_SignTx\x10\x08\x12\ - \x1f\n\x1bButtonRequest_FirmwareCheck\x10\t\x12\x19\n\x15ButtonRequest_A\ - ddress\x10\n\x12\x1b\n\x17ButtonRequest_PublicKey\x10\x0b\x12#\n\x1fButt\ - onRequest_MnemonicWordCount\x10\x0c\x12\x1f\n\x1bButtonRequest_MnemonicI\ - nput\x10\r\x120\n(_Deprecated_ButtonRequest_PassphraseType\x10\x0e\x1a\ - \x02\x08\x01\x12'\n#ButtonRequest_UnknownDerivationPath\x10\x0f\x12\"\n\ - \x1eButtonRequest_RecoveryHomepage\x10\x10\x12\x19\n\x15ButtonRequest_Su\ - ccess\x10\x11\x12\x19\n\x15ButtonRequest_Warning\x10\x12\x12!\n\x1dButto\ - nRequest_PassphraseEntry\x10\x13\x12\x1a\n\x16ButtonRequest_PinEntry\x10\ - \x14\"\x0b\n\tButtonAck\"\xbb\x02\n\x10PinMatrixRequest\x12T\n\x04type\ - \x18\x01\x20\x01(\x0e2@.hw.trezor.messages.common.PinMatrixRequest.PinMa\ - trixRequestTypeR\x04type\"\xd0\x01\n\x14PinMatrixRequestType\x12\x20\n\ - \x1cPinMatrixRequestType_Current\x10\x01\x12!\n\x1dPinMatrixRequestType_\ - NewFirst\x10\x02\x12\"\n\x1ePinMatrixRequestType_NewSecond\x10\x03\x12&\ - \n\"PinMatrixRequestType_WipeCodeFirst\x10\x04\x12'\n#PinMatrixRequestTy\ - pe_WipeCodeSecond\x10\x05\"\x20\n\x0cPinMatrixAck\x12\x10\n\x03pin\x18\ - \x01\x20\x02(\tR\x03pin\"5\n\x11PassphraseRequest\x12\x20\n\n_on_device\ - \x18\x01\x20\x01(\x08R\x08OnDeviceB\x02\x18\x01\"g\n\rPassphraseAck\x12\ - \x1e\n\npassphrase\x18\x01\x20\x01(\tR\npassphrase\x12\x19\n\x06_state\ - \x18\x02\x20\x01(\x0cR\x05StateB\x02\x18\x01\x12\x1b\n\ton_device\x18\ - \x03\x20\x01(\x08R\x08onDevice\"=\n!Deprecated_PassphraseStateRequest\ - \x12\x14\n\x05state\x18\x01\x20\x01(\x0cR\x05state:\x02\x18\x01\"#\n\x1d\ - Deprecated_PassphraseStateAck:\x02\x18\x01\"\xc0\x01\n\nHDNodeType\x12\ - \x14\n\x05depth\x18\x01\x20\x02(\rR\x05depth\x12\x20\n\x0bfingerprint\ - \x18\x02\x20\x02(\rR\x0bfingerprint\x12\x1b\n\tchild_num\x18\x03\x20\x02\ - (\rR\x08childNum\x12\x1d\n\nchain_code\x18\x04\x20\x02(\x0cR\tchainCode\ - \x12\x1f\n\x0bprivate_key\x18\x05\x20\x01(\x0cR\nprivateKey\x12\x1d\n\np\ - ublic_key\x18\x06\x20\x02(\x0cR\tpublicKeyB>\n#com.satoshilabs.trezor.li\ - b.protobufB\x13TrezorMessageCommon\x80\xa6\x1d\x01\ + \x20\x01(\rR\x05pages\x12\x12\n\x04name\x18\x04\x20\x01(\tR\x04name\"\ + \x99\x05\n\x11ButtonRequestType\x12\x17\n\x13ButtonRequest_Other\x10\x01\ + \x12\"\n\x1eButtonRequest_FeeOverThreshold\x10\x02\x12\x1f\n\x1bButtonRe\ + quest_ConfirmOutput\x10\x03\x12\x1d\n\x19ButtonRequest_ResetDevice\x10\ + \x04\x12\x1d\n\x19ButtonRequest_ConfirmWord\x10\x05\x12\x1c\n\x18ButtonR\ + equest_WipeDevice\x10\x06\x12\x1d\n\x19ButtonRequest_ProtectCall\x10\x07\ + \x12\x18\n\x14ButtonRequest_SignTx\x10\x08\x12\x1f\n\x1bButtonRequest_Fi\ + rmwareCheck\x10\t\x12\x19\n\x15ButtonRequest_Address\x10\n\x12\x1b\n\x17\ + ButtonRequest_PublicKey\x10\x0b\x12#\n\x1fButtonRequest_MnemonicWordCoun\ + t\x10\x0c\x12\x1f\n\x1bButtonRequest_MnemonicInput\x10\r\x120\n(_Depreca\ + ted_ButtonRequest_PassphraseType\x10\x0e\x1a\x02\x08\x01\x12'\n#ButtonRe\ + quest_UnknownDerivationPath\x10\x0f\x12\"\n\x1eButtonRequest_RecoveryHom\ + epage\x10\x10\x12\x19\n\x15ButtonRequest_Success\x10\x11\x12\x19\n\x15Bu\ + ttonRequest_Warning\x10\x12\x12!\n\x1dButtonRequest_PassphraseEntry\x10\ + \x13\x12\x1a\n\x16ButtonRequest_PinEntry\x10\x14J\x04\x08\x03\x10\x04\"\ + \x0b\n\tButtonAck\"\xbb\x02\n\x10PinMatrixRequest\x12T\n\x04type\x18\x01\ + \x20\x01(\x0e2@.hw.trezor.messages.common.PinMatrixRequest.PinMatrixRequ\ + estTypeR\x04type\"\xd0\x01\n\x14PinMatrixRequestType\x12\x20\n\x1cPinMat\ + rixRequestType_Current\x10\x01\x12!\n\x1dPinMatrixRequestType_NewFirst\ + \x10\x02\x12\"\n\x1ePinMatrixRequestType_NewSecond\x10\x03\x12&\n\"PinMa\ + trixRequestType_WipeCodeFirst\x10\x04\x12'\n#PinMatrixRequestType_WipeCo\ + deSecond\x10\x05\"\x20\n\x0cPinMatrixAck\x12\x10\n\x03pin\x18\x01\x20\ + \x02(\tR\x03pin\"5\n\x11PassphraseRequest\x12\x20\n\n_on_device\x18\x01\ + \x20\x01(\x08R\x08OnDeviceB\x02\x18\x01\"g\n\rPassphraseAck\x12\x1e\n\np\ + assphrase\x18\x01\x20\x01(\tR\npassphrase\x12\x19\n\x06_state\x18\x02\ + \x20\x01(\x0cR\x05StateB\x02\x18\x01\x12\x1b\n\ton_device\x18\x03\x20\ + \x01(\x08R\x08onDevice\"=\n!Deprecated_PassphraseStateRequest\x12\x14\n\ + \x05state\x18\x01\x20\x01(\x0cR\x05state:\x02\x18\x01\"#\n\x1dDeprecated\ + _PassphraseStateAck:\x02\x18\x01\"\xc0\x01\n\nHDNodeType\x12\x14\n\x05de\ + pth\x18\x01\x20\x02(\rR\x05depth\x12\x20\n\x0bfingerprint\x18\x02\x20\ + \x02(\rR\x0bfingerprint\x12\x1b\n\tchild_num\x18\x03\x20\x02(\rR\x08chil\ + dNum\x12\x1d\n\nchain_code\x18\x04\x20\x02(\x0cR\tchainCode\x12\x1f\n\ + \x0bprivate_key\x18\x05\x20\x01(\x0cR\nprivateKey\x12\x1d\n\npublic_key\ + \x18\x06\x20\x02(\x0cR\tpublicKeyB>\n#com.satoshilabs.trezor.lib.protobu\ + fB\x13TrezorMessageCommon\x80\xa6\x1d\x01\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/tests/persistence_tests/test_wipe_code.py b/tests/persistence_tests/test_wipe_code.py index 14abc30a3d..9ea3822725 100644 --- a/tests/persistence_tests/test_wipe_code.py +++ b/tests/persistence_tests/test_wipe_code.py @@ -48,7 +48,9 @@ def test_wipe_code_activate_core(core_emulator: Emulator): ret = core_emulator.client.call_raw(messages.ButtonAck()) # Enter the wipe code instead of the current PIN - assert ret == messages.ButtonRequest(code=messages.ButtonRequestType.PinEntry) + assert ret == messages.ButtonRequest( + code=messages.ButtonRequestType.PinEntry, name="pin_device" + ) core_emulator.client._raw_write(messages.ButtonAck()) core_emulator.client.debug.input(WIPE_CODE) From 958d08cc91b73a6133012113af19ee9f38d6f7e8 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 18 Jul 2024 14:49:53 +0200 Subject: [PATCH 447/626] fix(core/mercury): small copy change in tutorial [no changelog] --- core/embed/rust/librust_qstr.h | 2 +- .../rust/src/translations/generated/translated_string.rs | 6 +++--- core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs | 4 ++-- core/mocks/trezortranslate_keys.pyi | 2 +- core/translations/cs.json | 1 - core/translations/de.json | 5 ++--- core/translations/en.json | 2 +- core/translations/es.json | 1 - core/translations/fr.json | 7 +++---- core/translations/order.json | 2 +- core/translations/signatures.json | 6 +++--- 11 files changed, 17 insertions(+), 21 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 71657b06ba..ffd4fac157 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -289,9 +289,9 @@ static void _librust_qstrs(void) { MP_QSTR_instructions__continue_holding; MP_QSTR_instructions__continue_in_app; MP_QSTR_instructions__enter_next_share; - MP_QSTR_instructions__exit_tutorial; MP_QSTR_instructions__hold_to_confirm; MP_QSTR_instructions__hold_to_continue; + MP_QSTR_instructions__hold_to_exit_tutorial; MP_QSTR_instructions__hold_to_finish_tutorial; MP_QSTR_instructions__hold_to_sign; MP_QSTR_instructions__learn_more; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 56a710899b..49364f3029 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1289,7 +1289,7 @@ pub enum TranslatedString { instructions__continue_holding = 888, // "Continue\nholding" instructions__enter_next_share = 889, // "Enter next share" instructions__hold_to_continue = 890, // "Hold to continue" - instructions__exit_tutorial = 891, // "Exit tutorial" + instructions__hold_to_exit_tutorial = 891, // "Hold to exit tutorial" instructions__hold_to_finish_tutorial = 892, // "\"\"" instructions__learn_more = 893, // "Learn more" instructions__shares_continue_with_x_template = 894, // "Continue with Share #{0}" @@ -2638,7 +2638,7 @@ impl TranslatedString { Self::instructions__continue_holding => "Continue\nholding", Self::instructions__enter_next_share => "Enter next share", Self::instructions__hold_to_continue => "Hold to continue", - Self::instructions__exit_tutorial => "Exit tutorial", + Self::instructions__hold_to_exit_tutorial => "Hold to exit tutorial", Self::instructions__hold_to_finish_tutorial => "\"\"", Self::instructions__learn_more => "Learn more", Self::instructions__shares_continue_with_x_template => "Continue with Share #{0}", @@ -3988,7 +3988,7 @@ impl TranslatedString { Qstr::MP_QSTR_instructions__continue_holding => Some(Self::instructions__continue_holding), Qstr::MP_QSTR_instructions__enter_next_share => Some(Self::instructions__enter_next_share), Qstr::MP_QSTR_instructions__hold_to_continue => Some(Self::instructions__hold_to_continue), - Qstr::MP_QSTR_instructions__exit_tutorial => Some(Self::instructions__exit_tutorial), + Qstr::MP_QSTR_instructions__hold_to_exit_tutorial => Some(Self::instructions__hold_to_exit_tutorial), Qstr::MP_QSTR_instructions__hold_to_finish_tutorial => Some(Self::instructions__hold_to_finish_tutorial), Qstr::MP_QSTR_instructions__learn_more => Some(Self::instructions__learn_more), Qstr::MP_QSTR_instructions__shares_continue_with_x_template => Some(Self::instructions__shares_continue_with_x_template), diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs index a71b36e90a..75f1f1f872 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs @@ -137,7 +137,7 @@ impl ShowTutorial { TR::tutorial__title_hold.into(), SwipeContent::new(PromptScreen::new_hold_to_confirm()), ) - .with_footer(TR::instructions__exit_tutorial.into(), None) + .with_footer(TR::instructions__hold_to_exit_tutorial.into(), None) .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); let content_step_done = Frame::left_aligned( @@ -181,7 +181,7 @@ impl ShowTutorial { TR::tutorial__title_hold.into(), SwipeContent::new(PromptScreen::new_hold_to_confirm_danger()), ) - .with_footer(TR::instructions__exit_tutorial.into(), None) + .with_footer(TR::instructions__hold_to_exit_tutorial.into(), None) .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); let res = SwipeFlow::new(&ShowTutorial::StepWelcome)? diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 167635f1d4..98f9f07982 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -380,9 +380,9 @@ class TR: instructions__continue_holding: str = "Continue\nholding" instructions__continue_in_app: str = "Continue in the app" instructions__enter_next_share: str = "Enter next share" - instructions__exit_tutorial: str = "Exit tutorial" instructions__hold_to_confirm: str = "Hold to confirm" instructions__hold_to_continue: str = "Hold to continue" + instructions__hold_to_exit_tutorial: str = "Hold to exit tutorial" instructions__hold_to_sign: str = "Hold to sign" instructions__learn_more: str = "Learn more" instructions__shares_continue_with_x_template: str = "Continue with Share #{0}" diff --git a/core/translations/cs.json b/core/translations/cs.json index e504f011c5..3c43c5efaa 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -412,7 +412,6 @@ "instructions__continue_holding": "Stále\ndržte", "instructions__continue_in_app": "Pokračujte v aplikaci", "instructions__enter_next_share": "Zadejte další část", - "instructions__exit_tutorial": "Ukončit tutoriál", "instructions__hold_to_confirm": "Držením potvrďte", "instructions__hold_to_continue": "Držením pokračujte", "instructions__hold_to_exit_tutorial": "Podržením ukončíte tutoriál", diff --git a/core/translations/de.json b/core/translations/de.json index 906b08150d..f4ebfe1428 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -412,10 +412,9 @@ "instructions__continue_holding": "Weiter\nhalten", "instructions__continue_in_app": "In der App fortfahren", "instructions__enter_next_share": "Nächsten Share eingeben", - "instructions__exit_tutorial": "Tutorial beenden", "instructions__hold_to_confirm": "Zum Bestätigen halten", "instructions__hold_to_continue": "Zum Fortfahren halten", - "instructions__hold_to_exit_tutorial": "Zum Verlassen des Tutorials halten", + "instructions__hold_to_exit_tutorial": "Zum Verlassen halten", "instructions__hold_to_sign": "Zum Signieren halten", "instructions__learn_more": "Mehr erfahren", "instructions__shares_continue_with_x_template": "Mit Share #{0} fortfahren", @@ -899,7 +898,7 @@ "tutorial__title_easy_navigation": "Leichte Navigation", "tutorial__title_handy_menu": "Nützliches Menü", "tutorial__title_hello": "Hallo", - "tutorial__title_hold": "Halte den Bildschirm um wichtige Schritte bestätigen", + "tutorial__title_hold": "Halte den Bildschirm um Schritte bestätigen", "tutorial__title_lets_begin": "Lass uns beginnen", "tutorial__title_navigation": "Navigation", "tutorial__title_screen_scroll": "Bildschirm scrollen", diff --git a/core/translations/en.json b/core/translations/en.json index 376c2a8dc2..bc33245d40 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -384,7 +384,7 @@ "instructions__enter_next_share": "Enter next share", "instructions__hold_to_confirm": "Hold to confirm", "instructions__hold_to_continue": "Hold to continue", - "instructions__exit_tutorial": "Exit tutorial", + "instructions__hold_to_exit_tutorial": "Hold to exit tutorial", "instructions__hold_to_sign": "Hold to sign", "instructions__learn_more": "Learn more", "instructions__shares_continue_with_x_template": "Continue with Share #{0}", diff --git a/core/translations/es.json b/core/translations/es.json index a6ec1e4985..1a6fd307d7 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -412,7 +412,6 @@ "instructions__continue_holding": "Continuar\nposición", "instructions__continue_in_app": "Continuar en la aplicación", "instructions__enter_next_share": "Introduce el siguiente recurso", - "instructions__exit_tutorial": "Salir del tutorial", "instructions__hold_to_confirm": "Pulsa para confirmar", "instructions__hold_to_continue": "Pulsa para continuar", "instructions__hold_to_exit_tutorial": "Pulsa para salir del tutorial", diff --git a/core/translations/fr.json b/core/translations/fr.json index 89012bd2a9..141eeb4ec4 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -412,10 +412,9 @@ "instructions__continue_holding": "Continuer\nappui", "instructions__continue_in_app": "Continuer dans l’application", "instructions__enter_next_share": "Saisissez le prochain fragment", - "instructions__exit_tutorial": "Sortir du tutoriel", "instructions__hold_to_confirm": "Appui pour confirmer", "instructions__hold_to_continue": "Appui pour continuer", - "instructions__hold_to_exit_tutorial": "Appui pour quitter le tutoriel", + "instructions__hold_to_exit_tutorial": "Appui pour quitter", "instructions__hold_to_sign": "Appui pour signer", "instructions__learn_more": "En savoir plus", "instructions__shares_continue_with_x_template": "Continuez avec le fragment #{0}", @@ -895,8 +894,8 @@ "tutorial__restart_tutorial": "Recommencer le tutoriel", "tutorial__scroll_down": "Utilisez le bouton droit pour lire le contenu lorsqu'il dépasse.\n\rBouton gauche pour faire défiler l'écran vers le haut.", "tutorial__sure_you_want_skip": "Voulez-vous vraiment\nignorer le tutoriel ?", - "tutorial__swipe_up_and_down": "Balayer vers le haut ou le bas\npour changer d'écran.", - "tutorial__title_easy_navigation": "navigation facile", + "tutorial__swipe_up_and_down": "Balayer vers le haut ou le bas pour changer d'écran.", + "tutorial__title_easy_navigation": "Navigation facile", "tutorial__title_handy_menu": "Menu pratique", "tutorial__title_hello": "Bonjour", "tutorial__title_hold": "Maintenir pour confirmer les actions importantes", diff --git a/core/translations/order.json b/core/translations/order.json index 45e5a2742f..796ca2f279 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -890,7 +890,7 @@ "888": "instructions__continue_holding", "889": "instructions__enter_next_share", "890": "instructions__hold_to_continue", - "891": "instructions__exit_tutorial", + "891": "instructions__hold_to_exit_tutorial", "892": "instructions__hold_to_finish_tutorial", "893": "instructions__learn_more", "894": "instructions__shares_continue_with_x_template", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index dae6719a3f..80472162d9 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "8c40d9e33f42783293a32e768f155e29aa3650b9bbc5e1ebaabf1ec46a7733b7", - "datetime": "2024-07-17T17:20:50.219181", - "commit": "ace22197e82214ae18255d48fae68ece0e7a0386" + "merkle_root": "d7985bf925238153655b5d7cc41beab9591035daba8d28578c20c452f454a2e0", + "datetime": "2024-07-18T12:41:32.771526", + "commit": "21eafdc5ec6bac60b3546ec9742aeaf8cee76715" }, "history": [ { From bd6c954a4fc7046ea5883dae4c0fddcf875658e4 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 18 Jul 2024 15:06:39 +0200 Subject: [PATCH 448/626] fix(core): add inverted exclamation mark for ES [no changelog] --- core/tools/codegen/foreign_chars.py | 1 + core/translations/fonts/font_pixeloperator_bold_8_es.json | 3 ++- .../fonts/font_pixeloperator_bold_8_upper_es.json | 3 ++- .../translations/fonts/font_pixeloperator_regular_8_es.json | 3 ++- .../fonts/font_pixeloperator_regular_8_upper_es.json | 3 ++- .../fonts/font_pixeloperatormono_regular_8_es.json | 3 ++- core/translations/fonts/font_roboto_bold_20_es.json | 3 ++- core/translations/fonts/font_roboto_regular_20_es.json | 3 ++- core/translations/fonts/font_robotomono_medium_20_es.json | 3 ++- core/translations/fonts/font_robotomono_medium_21_es.json | 3 ++- core/translations/fonts/font_tthoves_bold_17_upper_es.json | 3 ++- core/translations/fonts/font_tthoves_demibold_21_es.json | 3 ++- core/translations/fonts/font_tthoves_regular_21_es.json | 3 ++- core/translations/fonts/font_ttsatoshi_demibold_18_es.json | 3 ++- core/translations/fonts/font_ttsatoshi_demibold_21_es.json | 3 ++- core/translations/fonts/font_ttsatoshi_demibold_42_es.json | 3 ++- core/translations/fonts/font_unifont_bold_16_es.json | 3 ++- core/translations/fonts/font_unifont_regular_16_es.json | 3 ++- core/translations/signatures.json | 6 +++--- 19 files changed, 38 insertions(+), 20 deletions(-) diff --git a/core/tools/codegen/foreign_chars.py b/core/tools/codegen/foreign_chars.py index 27591f854b..344c5683dc 100644 --- a/core/tools/codegen/foreign_chars.py +++ b/core/tools/codegen/foreign_chars.py @@ -84,6 +84,7 @@ "ú", "ü", "¿", + "¡", ) german_chars = ( diff --git a/core/translations/fonts/font_pixeloperator_bold_8_es.json b/core/translations/fonts/font_pixeloperator_bold_8_es.json index 51f7ac58f7..a60a393385 100644 --- a/core/translations/fonts/font_pixeloperator_bold_8_es.json +++ b/core/translations/fonts/font_pixeloperator_bold_8_es.json @@ -13,5 +13,6 @@ "ó": "060707000718c7b3cf3780", "ú": "060707000718ccf3cf3780", "ü": "0607070007cc0cf3cf3780", - "¿": "0607070006300318c33780" + "¿": "0607070006300318c33780", + "¡": "0207050106cffc" } diff --git a/core/translations/fonts/font_pixeloperator_bold_8_upper_es.json b/core/translations/fonts/font_pixeloperator_bold_8_upper_es.json index acf4ba958a..bb2f81f324 100644 --- a/core/translations/fonts/font_pixeloperator_bold_8_upper_es.json +++ b/core/translations/fonts/font_pixeloperator_bold_8_upper_es.json @@ -13,5 +13,6 @@ "ó": "060707000718c7b3cf3780", "ú": "060707000718ccf3cf3780", "ü": "0607070007cc0cf3cf3780", - "¿": "0607070006300318c33780" + "¿": "0607070006300318c33780", + "¡": "0207050106cffc" } diff --git a/core/translations/fonts/font_pixeloperator_regular_8_es.json b/core/translations/fonts/font_pixeloperator_regular_8_es.json index e9d3c5dfe6..1505918ac8 100644 --- a/core/translations/fonts/font_pixeloperator_regular_8_es.json +++ b/core/translations/fonts/font_pixeloperator_regular_8_es.json @@ -13,5 +13,6 @@ "ó": "0507060007111d18c5c0", "ú": "0507060007112318c5c0", "ü": "0507060007502318c5c0", - "¿": "050706000620088845c0" + "¿": "050706000620088845c0", + "¡": "0107040106be" } diff --git a/core/translations/fonts/font_pixeloperator_regular_8_upper_es.json b/core/translations/fonts/font_pixeloperator_regular_8_upper_es.json index 431ec16706..e6f111f554 100644 --- a/core/translations/fonts/font_pixeloperator_regular_8_upper_es.json +++ b/core/translations/fonts/font_pixeloperator_regular_8_upper_es.json @@ -13,5 +13,6 @@ "ó": "0507060007111d18c5c0", "ú": "0507060007112318c5c0", "ü": "0507060007502318c5c0", - "¿": "050706000620088845c0" + "¿": "050706000620088845c0", + "¡": "0107040106be" } diff --git a/core/translations/fonts/font_pixeloperatormono_regular_8_es.json b/core/translations/fonts/font_pixeloperatormono_regular_8_es.json index 6f58b4a062..be39fe4886 100644 --- a/core/translations/fonts/font_pixeloperatormono_regular_8_es.json +++ b/core/translations/fonts/font_pixeloperatormono_regular_8_es.json @@ -13,5 +13,6 @@ "ó": "0507070007111d18c5c0", "ú": "0507070007112318c5c0", "ü": "0507070007502318c5c0", - "¿": "050707000620088845c0" + "¿": "050707000620088845c0", + "¡": "0107070206be" } diff --git a/core/translations/fonts/font_roboto_bold_20_es.json b/core/translations/fonts/font_roboto_bold_20_es.json index 15d5688e79..dc75f14b5e 100644 --- a/core/translations/fonts/font_roboto_bold_20_es.json +++ b/core/translations/fonts/font_roboto_bold_20_es.json @@ -13,5 +13,6 @@ "ó": "0b0f0b000f000030ff0c000000e1df01000000c51d00000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", "ú": "0a0f0b010f0000f3cf000010fe0d000050dc01000000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", "ü": "0a0f0b010f3006005500f17f40ff03c04e20de010000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", - "¿": "0a0f0a000b0000fc06000040ff0c000000ec060000000000000000ff07000030ff050000d1ff010000fc8f000090ff0a0000f1df000000f48f005225f49f00f86ff1ff66ff2f80ffffff0900c6ff6c00" + "¿": "0a0f0a000b0000fc06000040ff0c000000ec060000000000000000ff07000030ff050000d1ff010000fc8f000090ff0a0000f1df000000f48f005225f49f00f86ff1ff66ff2f80ffffff0900c6ff6c00", + "¡": "040f06010be51dfb5fe41c00000000f50ff61ff61ff72ff72ff83ff83ff94ff94ffa5f" } diff --git a/core/translations/fonts/font_roboto_regular_20_es.json b/core/translations/fonts/font_roboto_regular_20_es.json index 96d3abe944..b05f5b3a19 100644 --- a/core/translations/fonts/font_roboto_regular_20_es.json +++ b/core/translations/fonts/font_roboto_regular_20_es.json @@ -13,5 +13,6 @@ "ó": "0b100b0010000000fd04000000906f00000000c10800000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", "ú": "09100b01100000d13f000000fb050000206d000000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", "ü": "09100b01100000000000605f308f00605f308f0000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", - "¿": "090f09000b00209e00000020af00000000000000000000000000108c00000040af000000b04f000000f909000060bf000000e01e000000f309000000f408009105f20d00f807a0dfb9ef0100d8ef1900" + "¿": "090f09000b00209e00000020af00000000000000000000000000108c00000040af000000b04f000000f909000060bf000000e01e000000f309000000f408009105f20d00f807a0dfb9ef0100d8ef1900", + "¡": "030f05010bf604f70500000000c403f504f505f605f605f605f605f606f706f706f706" } diff --git a/core/translations/fonts/font_robotomono_medium_20_es.json b/core/translations/fonts/font_robotomono_medium_20_es.json index 127d393844..c31ab6d8cc 100644 --- a/core/translations/fonts/font_robotomono_medium_20_es.json +++ b/core/translations/fonts/font_robotomono_medium_20_es.json @@ -13,5 +13,6 @@ "ó": "0a100c010f00002077010000c08f000000f7080000003300000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", "ú": "0a100c010f00002077010000c08f000000f7080000003300009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", "ü": "0a100c010f003700730060ff00ff06207b00b80200000000009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", - "¿": "0a0f0c010b00009402000000fd09000000b60300000000000000006402000000fc06000040ff040000f49f000020ff0a0000a0df000000f06f000000f05f00d05ec0df23f92f40ffffff080092dc4a00" + "¿": "0a0f0c010b00009402000000fd09000000b60300000000000000006402000000fc06000040ff040000f49f000020ff0a0000a0df000000f06f000000f05f00d05ec0df23f92f40ffffff080092dc4a00", + "¡": "040f0c040b902bf38fb03d00000000a02bf04ff04ff04ff04ff04ff04ff05ff05fb03b" } diff --git a/core/translations/fonts/font_robotomono_medium_21_es.json b/core/translations/fonts/font_robotomono_medium_21_es.json index a56c76f46b..6403a1362b 100644 --- a/core/translations/fonts/font_robotomono_medium_21_es.json +++ b/core/translations/fonts/font_robotomono_medium_21_es.json @@ -13,5 +13,6 @@ "ó": "0b110d0110000000220200000040ff04000000e14f00000000a504000000004302000000f8ffdf0300a0ffbdfe3f00f48f00d1df00f90e0050ff03fc0a0010ff06fd090000ff06fc0a0010ff06f90e0050ff02f39f00d1cf0080ffceff3f0000e6ffcf0300000032010000", "ú": "0b110d0110000000220200000040ff04000000e14f00000000a5040000100100001100f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f43f0060ff01f19f00d2ff01a0ffdeefff0110fbff3aff01001013000000", "ü": "0b110d011000120020000030ff01f70c0020ff01f70c00001100200000100100001100f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f43f0060ff01f19f00d2ff01a0ffdeefff0110fbff3aff01001013000000", - "¿": "09110d020c00000100000060cf00000080ef00000000250000000000000000509b00000090cf000000f38f000030ff0b0000e1cf000000f91f000000fd09000000fe0900e80cfb3e40ff0bf3ffffff0230fbef2a000000000000" + "¿": "09110d020c00000100000060cf00000080ef00000000250000000000000000509b00000090cf000000f38f000030ff0b0000e1cf000000f91f000000fd09000000fe0900e80cfb3e40ff0bf3ffffff0230fbef2a000000000000", + "¡": "03100d050c4100fd0cfe0d720200000000fb09fb0afb0afb0afc0afc0afc0afc0afc0bda09" } diff --git a/core/translations/fonts/font_tthoves_bold_17_upper_es.json b/core/translations/fonts/font_tthoves_bold_17_upper_es.json index ee30e4c62b..7b14ca4319 100644 --- a/core/translations/fonts/font_tthoves_bold_17_upper_es.json +++ b/core/translations/fonts/font_tthoves_bold_17_upper_es.json @@ -13,5 +13,6 @@ "ó": "0d100d001000000070270000000000f90c0000000030ef010000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", "ú": "0b100c01100000306700000000e16f00000000fa080000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", "ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", - "¿": "090d0900090090ff01000090ff01000070cc010000000000000080ee000000c0ff000010fc9f0000d0ff090000f59f000000f76f10cc08f4efc8ff07c0ffffdf0000d8df1900" + "¿": "090d0900090090ff01000090ff01000070cc010000000000000080ee000000c0ff000010fc9f0000d0ff090000f59f000000f76f10cc08f4efc8ff07c0ffffdf0000d8df1900", + "¡": "040c050109fa1ffa1fc81c0000f50cf70ef80ffa1ffa1ffa1ffa1ffa1f" } diff --git a/core/translations/fonts/font_tthoves_demibold_21_es.json b/core/translations/fonts/font_tthoves_demibold_21_es.json index 3baa927bca..43e8e187e5 100644 --- a/core/translations/fonts/font_tthoves_demibold_21_es.json +++ b/core/translations/fonts/font_tthoves_demibold_21_es.json @@ -13,5 +13,6 @@ "ó": "0c100d0010000000000000000000f28f00000000fc0b00000060df00000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", "ú": "0b100d0110000000000000000020ff08000000c0bf00000000f60d0000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", "ü": "0b0f0d010f00fd08ff060000fd08ff0600006503660200000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", - "¿": "0b0f0b000b0000f93f00000000f93f00000000f93f00000000000000000000a51a00000000f91f00000030fe0f000000f5ff08000080ff7f000000f1ff02000000f3af00106603f1df0080ff06d0ff9dfaff0220feffff6f000091fdad0300" + "¿": "0b0f0b000b0000f93f00000000f93f00000000f93f00000000000000000000a51a00000000f91f00000030fe0f000000f5ff08000080ff7f000000f1ff02000000f3af00106603f1df0080ff06d0ff9dfaff0220feffff6f000091fdad0300", + "¡": "040f06010bf56ff56ff56f0000900af01ff12ff34ff45ff56ff56ff56ff56ff56ff56f" } diff --git a/core/translations/fonts/font_tthoves_regular_21_es.json b/core/translations/fonts/font_tthoves_regular_21_es.json index bb68a9af0b..cb19734e89 100644 --- a/core/translations/fonts/font_tthoves_regular_21_es.json +++ b/core/translations/fonts/font_tthoves_regular_21_es.json @@ -13,5 +13,6 @@ "ó": "0b0f0c000f000000f30900000000cd00000000801e00000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", "ú": "0a100c0110000020bf000000c01d000000f6020000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", "ü": "0a0f0c010f00fb10bf0000c9008c0000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", - "¿": "0b0f0b000b0000f60700000000e50700000000000000000000920300000000f40600000000f70400000060ef00000000f92c000000908f00000000f00c00000000f20900001100f00a0000fb00b04f0050af0010fe9bfc1e000091fd9d0100" + "¿": "0b0f0b000b0000f60700000000e50700000000000000000000920300000000f40600000000f70400000060ef00000000f92c000000908f00000000f00c00000000f20900001100f00a0000fb00b04f0050af0010fe9bfc1e000091fd9d0100", + "¡": "030f05010bf508e40800009002f004f105f205f206f307f307f307f307f307f307f307" } diff --git a/core/translations/fonts/font_ttsatoshi_demibold_18_es.json b/core/translations/fonts/font_ttsatoshi_demibold_18_es.json index 6dbdb15dc9..0611154d3f 100644 --- a/core/translations/fonts/font_ttsatoshi_demibold_18_es.json +++ b/core/translations/fonts/font_ttsatoshi_demibold_18_es.json @@ -13,5 +13,6 @@ "ó": "0b0e0b000e000000990200000080af00000000f30c00000000000000000090fd7c000010feffff0c00a0ef25f77f00f05f0080df00f30f0040ff00f30f0040ff00f05f0080df00a0ef14f67f0010feffff0c000091fd7c0000", "ú": "090e0b010e0000f22f000000fc050000206900000000000000fd0600f909fd0600f909fd0600f909fd0600f909fd0600f909fd0600fa09fc0800fc09f95f71ff09f1ffffff0920fb8ef809", "ü": "090d0b010d40cff01f0040cff01f000001100100fd0600f909fd0600f909fd0600f909fd0600f909fd0600f909fd0600fa09fc0800fc09f95f71ff09f1ffffff0920fb8ef809", - "¿": "0a0e0a000a0030ff03000030ff0300001088010000001100000020ff01000060ff000000f3cf000050ff3f0000f1df020000f43f000000f42f00f80ff1cf43fe0c80ffffff0300c5ef2b00" + "¿": "0a0e0a000a0030ff03000030ff0300001088010000001100000020ff01000060ff000000f3cf000050ff3f0000f1df020000f43f000000f42f00f80ff1cf43fe0c80ffffff0300c5ef2b00", + "¡": "030d05010af80cf80c84064101f407f509f70af80bf80cf80cf80cf80c9507" } diff --git a/core/translations/fonts/font_ttsatoshi_demibold_21_es.json b/core/translations/fonts/font_ttsatoshi_demibold_21_es.json index cf90c8fa63..ed5372615b 100644 --- a/core/translations/fonts/font_ttsatoshi_demibold_21_es.json +++ b/core/translations/fonts/font_ttsatoshi_demibold_21_es.json @@ -13,5 +13,6 @@ "ó": "0c100d0010000000000000000000f28f00000000fc0b00000060df00000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", "ú": "0b100d0110000000000000000020ff08000000c0bf00000000f60d0000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffffff0300c6df47ff03", "ü": "0b0f0d010f00fd08ff060000fd08ff0600006503660200000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffffff0300c6df47ff03", - "¿": "0b0f0b000b0000f93f00000000f93f00000000f93f00000000000000000000a51a00000000f91f00000030fe0f000000f5ff08000080ff7f000000f1ff02000000f3af00106603f1df0080ff06d0ff9dfaff0220ffffff6f000091fdad0300" + "¿": "0b0f0b000b0000f93f00000000f93f00000000f93f00000000000000000000a51a00000000f91f00000030fe0f000000f5ff08000080ff7f000000f1ff02000000f3af00106603f1df0080ff06d0ff9dfaff0220ffffff6f000091fdad0300", + "¡": "040f06010bf56ff56ff56f0000a00af01ff12ff34ff45ff56ff56ff56ff56ff56fb34b" } diff --git a/core/translations/fonts/font_ttsatoshi_demibold_42_es.json b/core/translations/fonts/font_ttsatoshi_demibold_42_es.json index 619cb8a9a7..45ed908bd6 100644 --- a/core/translations/fonts/font_ttsatoshi_demibold_42_es.json +++ b/core/translations/fonts/font_ttsatoshi_demibold_42_es.json @@ -13,5 +13,6 @@ "ó": "172019011f000000000000d0ffff080000000000000000f7ffbf000000000000000020ffff0d0000000000000000c0ffef020000000000000000f7ff3f000000000000000020ffff060000000000000000001111000000000000000000000000000000000000000000000000000000000000000030c8fede4900000000000030fcffffffff5d0000000000f7ffffffffffff0900000070ffffffffffffffaf000000f4ffffffefffffffff070000fdffff5e0140fcffff1f0050ffffcf010000a0ffff8f00b0ffff2f00000000feffef00f0ffff0800000000f5ffff02f2ffff0300000000f1ffff05f3ffff0100000000e0ffff06f4ffff0000000000c0ffff07f3ffff0100000000e0ffff06f2ffff0300000000f0ffff05f0ffff0800000000f5ffff02b0ffff1f00000000fdffef0050ffffcf01000090ffff8f0000fdffff5e0130fcffff1f0000f4ffffffefffffffff07000070ffffffffffffffaf00000000f7ffffffffffff090000000030fcffffffff5d00000000000040c8fede4900000000", "ú": "151f19021e000000000000fdff8f0000000000000070ffff0b00000000000000f2ffdf0000000000000000fcff2e0000000000000070ffff0300000000000000f2ff6f00000000000000001011010000000000000000000000000000000000000000000000000000f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000d0ffff07f3ffff02000000f0ffff07f2ffff06000000f4ffff07f0ffff1e000000fdffff07a0ffffef0500d3ffffff0730fffffffffdffffffff0700faffffffffffffffff0700d0ffffffffffdeffff070000faffffffbf71ffff07000030d9ffac0300000000", "ü": "151f19021e0000fbff1f00feff0e00000000fbff1f00feff0e00000000fbff1f00feff0e00000000fbff1f00feff0e00000000d9dd1d00dcdd0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000d0ffff07f3ffff02000000f0ffff07f2ffff06000000f4ffff07f0ffff1e000000fdffff07a0ffffef0500d3ffffff0730fffffffffdffffffff0700faffffffffffffffff0700d0ffffffffffdeffff070000faffffffbf71ffff07000030d9ffac0300000000", - "¿": "151d16011500000020ffff7f0000000000000020ffff7f0000000000000020ffff7f0000000000000020ffff7f0000000000000020ffff7f0000000000000020eeee6e0000000000000000000000000000000000000000000000000000000000007777270000000000000000ffff4f0000000000000000ffff3f0000000000000040ffff2f00000000000000d1ffff0f00000000000030fdffff0a000000000020faffffff020000000000f5ffffff4f000000000040ffffffaf010000000000d0ffffdf03000000000000f3ffff0c00000000000000f5ffff0400000000000000f7ffff03000000a5aaaa01f7ffff06000000fbffff01f4ffff1e000030ffffef00f0ffffef3731f7ffff9f0080ffffffffffffffff2f0000fcffffffffffffff060000c1ffffffffffff8f00000000f8ffffffffdf040000000010a6edef9c04000000" + "¿": "151d16011500000020ffff7f0000000000000020ffff7f0000000000000020ffff7f0000000000000020ffff7f0000000000000020ffff7f0000000000000020eeee6e0000000000000000000000000000000000000000000000000000000000007777270000000000000000ffff4f0000000000000000ffff3f0000000000000040ffff2f00000000000000d1ffff0f00000000000030fdffff0a000000000020faffffff020000000000f5ffffff4f000000000040ffffffaf010000000000d0ffffdf03000000000000f3ffff0c00000000000000f5ffff0400000000000000f7ffff03000000a5aaaa01f7ffff06000000fbffff01f4ffff1e000030ffffef00f0ffffef3731f7ffff9f0080ffffffffffffffff2f0000fcffffffffffffff060000c1ffffffffffff8f00000000f8ffffffffdf040000000010a6edef9c04000000", + "¡": "061e0c0315faffcffaffcffaffcffaffcffaffcfe9eebe000000000000405505e0ff0ff0ff2ff1ff3ff2ff5ff4ff6ff5ff8ff6ff9ff8ffaff9ffcffaffcffaffcffaffcffaffcffaffcffaffcffaffcffaffcffaffcffaffcffaffcf646656" } diff --git a/core/translations/fonts/font_unifont_bold_16_es.json b/core/translations/fonts/font_unifont_bold_16_es.json index 36352708db..c7f411bcb3 100644 --- a/core/translations/fonts/font_unifont_bold_16_es.json +++ b/core/translations/fonts/font_unifont_bold_16_es.json @@ -13,5 +13,6 @@ "ó": "0000080000", "ú": "0000080000", "ü": "0000080000", - "¿": "0000080000" + "¿": "0000080000", + "¡": "0000080000" } diff --git a/core/translations/fonts/font_unifont_regular_16_es.json b/core/translations/fonts/font_unifont_regular_16_es.json index 22a91e6ff7..b4fe4e1f4c 100644 --- a/core/translations/fonts/font_unifont_regular_16_es.json +++ b/core/translations/fonts/font_unifont_regular_16_es.json @@ -13,5 +13,6 @@ "ó": "060c07000c1980007a186186185e00", "ú": "060c07000c1980008618618618dd00", "ü": "060c07000c4920008618618618dd00", - "¿": "060a07000a20800821082185e0" + "¿": "060a07000a20800821082185e0", + "¡": "010a07030adfc0" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 80472162d9..b5efc792de 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "d7985bf925238153655b5d7cc41beab9591035daba8d28578c20c452f454a2e0", - "datetime": "2024-07-18T12:41:32.771526", - "commit": "21eafdc5ec6bac60b3546ec9742aeaf8cee76715" + "merkle_root": "8208aebbeec2ab19c0ee5e4298752597ff1b151d56482c877891097b9b72464b", + "datetime": "2024-07-18T13:04:23.054546", + "commit": "6280ef2e4266dca1080d549a9c2a7f1a74616527" }, "history": [ { From f846ec3c259803c1b28a8571837146f29b5787d7 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 19 Jul 2024 11:51:15 +0200 Subject: [PATCH 449/626] chore(core): update fixtures.json Update after an update of tutorial copy and adding inverted exclamation mark for spanish language. [no changelog] --- tests/ui_tests/fixtures.json | 150 +++++++++++++++++------------------ 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 2c1472d921..2418485d15 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -866,7 +866,7 @@ "T2B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", "T2B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", "T2B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", -"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "6590d22b77f52e54e26b3214b0f3b8e17c290dab051f8c4422c004520c5fbb95", +"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e0cd08f8c6b1e8164e13a1d5ae58af9f0b560e7f49aba175058bc5ecd9ed0e0", "T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "5167423df1a611f5608228d783445fcb6ef7e71e51e893ae11d352c35cd72a6e", "T2B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "65aa98bb42b5db52b6e074eae8e15862377029429e72f2c5da960df5bb03fb99", "T2B1_es_test_autolock.py::test_autolock_interrupts_signing": "b1c6590cf608778d41b1e9f424c8c0c9011731b7e70a07c09efd1c91818b7a4b", @@ -874,9 +874,9 @@ "T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "52a1db73b3489e5d4980785a15ba920f03498ec551e151f8436b6aa94c605c7c", "T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "9d001647fd3ae02ee9aef7f4730a09663e591c1b6663b5a8d0982e486be9188e", "T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "8a5cf50832754ef0709ca607d4adb4f31bd6f52eb592c09956cfa5ebf8fadd42", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "865726e45943461d22fb6cff431e807e6dbd3966eada3277932c2331e6eb089c", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "2674af838a5e60add577e4644cff5d7cc58ca578ab9338e8acbd9ecdba8afb0a", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10a548a135550394d7dffb774113af2340306493f8e7e60dbbee3ddd6c3ae9a3", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "70d87ff0242c1ed9bbd5889e4996c1b3b1882dee9a286eac12c338f54f71b4e6", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f2b099dd9ce6327caecb52bf69024816d6fd498a006405668985050f1199a06e", +"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3386b23c0b2fb42be7651867ecde812fac70b84d691ac33079075435e2d5aa54", "T2B1_es_test_lock.py::test_hold_to_lock": "e96bc5c43a4187163b152470c8296d101503d0b3c34eebfe5c0729fb3bdc005b", "T2B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", "T2B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", @@ -903,12 +903,12 @@ "T2B1_es_test_recovery.py::test_recovery_bip39": "d6428d52286874bd35e8b5581bae4dee184d4b2563f7065064c637d2f3e18426", "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "b6f0df37e7f59b65a78641ed2d464238fe408709c7d6d8e29c268f61b443dbca", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "1878e6255b3eb3797fcf568e62ae415b021fc046ca59071906aae50c214039d3", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "855daf01f717c7def02f36f59ac996e4cc4811773f733a575e77f6b089b7080c", -"T2B1_es_test_reset_bip39.py::test_reset_bip39": "b2108571d8efa816b9a6f319a0814173b4c6bc173e296cfe490105393ae76712", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "1317990c6f3205d2804250532928406cf4d16242fef6390e0aab9ba50ba75051", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "61db32a8a7790958edae7072a19860ea08eb6e61fc1a81b9c5db43d9105482b8", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "426a09a2e4b9441b30cc3832fa140dfa0e31d6e2a80da0b42b47c54f7b4a0a99", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "62c8c1941c8c542be9ed308ade5a2960e6dead0878e65160faa74d4b2e5c330b", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "1be678e94f2da89ecee7a3810ce3b4881cd74fec22eee9466c61b2c571784e5d", +"T2B1_es_test_reset_bip39.py::test_reset_bip39": "8731fd3a8c11ae495533954daed17869c20ebbd8894fca2ab60df65d5d527451", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "faa00c96fe873ca23bced4e1eda899d18d3e1a7838351bdd0f913a961f03c8dd", +"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8d4d9fab34aae28efbb9064c7f6e238d9dda67281f4d605e559142bda39b21d6", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4240927d1677d77d86ce0eb9ca8234d69daddcb8e80771cebb4038889929595a", +"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f17542ebeaf778c6f9033fcf2dc41f54b20c76b33e786b1d46e5cd17fe5141fe", "T2B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", "T2B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", "T2B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", @@ -2219,7 +2219,7 @@ "T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "6793e70a977dc5dcd8bd3064b2bb6045a236a87245940a9c9e2ae4e87324b2c1", "T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0f1467141822cf93346a757aa1d3e0f71ea2ac68ff318c5b6b91bbb80e74464a", "T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "fbe18469cd2dcc63a18ac3737d48360dc789996c427f0a67eab4e68e6e7cd983", -"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "17a254bc9fa8f7583beb3fecb933a951bb01a259239521cb7da0e753b8065157", +"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "b2caba93756d3b5ae12f75174a7657c38bc6ec9435bfe74934d05b91ffcf16da", "T2B1_cs_test_msg_applysettings.py::test_label_too_long": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_msg_applysettings.py::test_safety_checks": "c663fd32d9d6e18a0685cd69382e433f480c82933d5a84a3a53d8dee0d1d8f80", "T2B1_cs_test_msg_backup_device.py::test_backup_bip39": "51ca4acfa41ee2b628f44379bf763d0cb349b97a268c39de1b3422d366dba05d", @@ -3587,7 +3587,7 @@ "T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "4274bdb4acbbbcac76b90270fb1652d4a60e617ba165b98bb301b8f75e19c919", "T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e55071aed329923cf60c90370319a7024f24b3ebc209a1270bc9e6ba19195505", "T2B1_de_test_msg_applysettings.py::test_apply_settings_rotation": "4d17a2d5c4b7585ba5e8ab4acf617d74faeb715d5faade775c23894f211bd17a", -"T2B1_de_test_msg_applysettings.py::test_experimental_features": "637d981113e66bb90150880829ae95e2ce9bf1923035d09667979b7cb882ddde", +"T2B1_de_test_msg_applysettings.py::test_experimental_features": "a3e2bb32fd4344219f3917a058f240489b0fa21a3795112c208dd01a549a3e76", "T2B1_de_test_msg_applysettings.py::test_label_too_long": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_msg_applysettings.py::test_safety_checks": "91668616d03dbdbb3400a647bb89ecd1195b3fb5d8999c6229ee91b934ab53d5", "T2B1_de_test_msg_backup_device.py::test_backup_bip39": "e1bbf95c340e6262b00c14a485006470a14f282a7fb487cd8d40489296c37884", @@ -5079,9 +5079,9 @@ "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "610b680fc768e0ea25d782a3158d904ab55880e347a159460bc520bfdf71770b", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "fce796742f8bdb5d18d9189395a558dcd41a89e8e4e0cf9b425894afc085a7a2", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ab9079b221552a78d899b2ccd2e4a951597781ed31621c8e813d0b7bb2138e09", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "c91bddf0147d047f4e224e476ce5786718e6d8fc8d8190fae5d0269f9c9fcd0d", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "c91bddf0147d047f4e224e476ce5786718e6d8fc8d8190fae5d0269f9c9fcd0d", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "00c53611345581b92df202f11bc1c943857bcdc59500caff6519da95b4b226cb", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "83d5fd843fce37eb4b06f996d4bf0a3f241b32fe013e070b70918e6f429161d7", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "83d5fd843fce37eb4b06f996d4bf0a3f241b32fe013e070b70918e6f429161d7", +"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "e5d55ce428d5bf75d421252597ded559b6038a3dd325e64814fe56839fd5087c", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "21dbc28353e0e5cc571d5bac605cec888a6e99b78482a1c7a95056db2f3be6a2", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "c46f223715b7919e84b8c20ac59a0b670e7507bbbf30f1c4123dfec3b805f9f3", "T2B1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "838ec403f6c8fcb727602c60ffa2837fd215e172c23e89afd27c480bde849f30", @@ -6101,24 +6101,24 @@ "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "80ce3e926a7548682286da0751b78d86ca11e994430bd5f0b7eb5edb0ee45ef6", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "77a1cc209bfabc294b7d6e4adfd9f9608434fe02c1ecbe8c5f42038b9b8773e2", "T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "711f5d79c5bc54df8c0e5b7ccd2ce6dc074e5b32fbf0f8dd373ff1bc2cc7d047", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "98a065898845a10e7bd3a4b01d035435c80de6b6961f573aa360c79dcf371988", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "22cc16f1dda02723d87a13c9a05ed90b441cf8bd69b74d4c5a7a042b723df3ac", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "6c14743b37f9991da49e3245e58c3d21e47214a291f580fd4c9fd23ba5e72ddc", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "2c69b63e0fbd419bdc21e32d83111cdf3f688edc17ec08825b66b52ab8bd8df7", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "e9165f0ed720012195e90b6b75262cf2882f75378aca5039de249fbcc4ba0dfa", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a09b5cf2960e0ec31dc0f7b6a76a328fafe8f3632b48d115a15a860a3e8a5bc1", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "334222975daec47316ba1cac9c03b0411aeeedc6c392b158762ae13147e2524e", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "19025ebceae96c5a4c24539ce804b2786787fadf33544196721b2f4290563af9", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "218fe18f3d3b23c72666e9b88fc0465adcbd374451a1393840e4002f806cd26f", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "b16ebf479d085e2b6f4f1e8399c73b8bad5cf1643b3c4f61b410076daf530ac1", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "59f6186989d118d5cd272fc3c4832c9c857a59606efeaeac4f98a735d511cea0", +"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "80221956c507ddc31f2df586ce8895bd6a2613fc703ec18ec790001024a52215", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "766d59d9a5f4a38a71dc0306c423b71d53d33379f35cc5480ccfd7ccf0a7f8bd", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f3447d4144658b78e75bd6e31c0bf581f3435bcd953b904a7aed5409243258f9", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "243391c3593f54cd2740227060d51196a3f17991e84233d9967d94216a94ab87", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "50ecbf05185ece92d5461d1d5d5e03441a72227373baa628a177989829551da9", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8ddb89b1eca618eca3579db0cf069ddc06ffac192adf34cb266481a0e1a0a05b", -"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8112116fd87ecbaa9c9af2a09c02fd23f31f52d4a55639717c42050044a27dbe", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "a47d76a93e9cbe1c0247e8fb480c316fe351eecbf547f51742cd81bce871e8d0", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d3738b86544918395b9654bce66d68bccfab779d83207d6e9472e9181fe8ed55", -"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "ca314c6f7abd968e7a57f9dcd168a0ce5d950ef92867cb6afc4feaeca2404ca5", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d5829507722cb593fff67185c15b2f64d169c90d80155e79e5958c0732f7e0de", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "5f827dd23f9a7138259af994475c7e291e8fe536bb6fd9357029a5c16737e52e", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "3e0a31545ebe0804d48d8a86b15666c427e467ed1083dd22a775f93f13d8556d", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "eb3d1c0d8ba5376e897389a03029338594d5b338576550ae2e9b61121ff4fdea", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5c7637d69a9a5d0e52cc6404eb5c200612e2ec1f0647077a2d7c61e3dbd09f7c", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "82791fd125ef07d442d303fcb762dd48d9287520574e3f478eba44ae9c55dca5", +"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d80529a3e79b0c0e340c84653d34d2f6b403b313be9b6015c0bcd3f2313b73b4", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2f27db5c24e695bd72e2870cfc9c59906473abd99839233c31e8634487db1b1c", +"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5a1da728d01c0261a70c08f11289e4f3c3a4b2444b1d2d2ad4457ed02713ec6c", +"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "831de13d1086e017fad2280a900794c5e23e07c75af80fc9ba5729c60b3dd0e2", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "164ea79eb9015725ce1480684f87a9fa3491107d6bf9378b23c8e11557ca414e", +"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2622c3820bcb1be306f1f19d99e181770ee8f95071e9b31f30a045e60402e6c2", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "78f919438ef71fa5fc80c7ef7f9d3eda33473aec868c69691995bb7532105360", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6582438e0b80f97108f7f2cd7caf92721afe2fba6bc31513280d840d3c0bb522", "T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2eb70fa9f5f3acc615ee2594ca083e48e273c0406f18500690982f2b1b5d7dc1", @@ -6281,8 +6281,8 @@ "T2B1_es_test_basic.py::test_device_id_same": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_basic.py::test_features": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_basic.py::test_ping": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_busy_state.py::test_busy_expiry": "c550a9bbdc796a989d6e46a699b8e138c1b87aef7761dbad49ce4977bff27f26", -"T2B1_es_test_busy_state.py::test_busy_state": "1ef0f84e9a11dd22b6d94af2eb21afd6d76299aa4a61c3a0bdfae57a8ca655e5", +"T2B1_es_test_busy_state.py::test_busy_expiry": "58cb29e1bf047aa272323fecaa59a913a20d158c7e0f15df8fad1dd29365bc13", +"T2B1_es_test_busy_state.py::test_busy_state": "ec773b9a1f3b1b37c36a8ebab541467389864751116020c83d93fcdaae6ad883", "T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", "T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", "T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", @@ -6323,17 +6323,17 @@ "T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "c6e94451b965156345f769253593f902192e8cb4cda4d0ac4cff086fb147fd26", "T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "130cdc99035708d25d7bfde37f8cfef972acf0e1ad4628db33b5f7f981d8090c", "T2B1_es_test_msg_applysettings.py::test_apply_settings_rotation": "aea3c583db2a5e68a4316c32eb56e2b0512e774a080e395674053927ca8da70f", -"T2B1_es_test_msg_applysettings.py::test_experimental_features": "033dc4d20a5865b39bbeb10adbcca8511fb9941fe122e2eff9901d386c6da64e", +"T2B1_es_test_msg_applysettings.py::test_experimental_features": "aa31d90198a43eab4ddf58bff349d11920a8e840335dc9389e5cd98aac76a279", "T2B1_es_test_msg_applysettings.py::test_label_too_long": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_msg_applysettings.py::test_safety_checks": "4ef5ad04d866dd8c00c09551e1eb84f0742fd5d4d2ae4605d3612d764d6c4a12", -"T2B1_es_test_msg_backup_device.py::test_backup_bip39": "7afdf5bdd9889633dc2c7943a6c5f28504c7dd137ed74a06d11cb99bd8ce0965", +"T2B1_es_test_msg_backup_device.py::test_backup_bip39": "a003931f1bfd3b614a8d1a6a6ad44cf02651b27531a0a16ce30569181941708e", "T2B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ae3368c4f352bd7f151e33c4a83570a28ebe86369cd34b1dc89ed34f72bd7909", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "de884ea4964ab98564ac23f17890bbf2015cbc303fc65b2e97a587a7d84c15da", "T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "7cc7136d98b6e38717b13db495fef26a2dc7d495f2b52ec89f147e48b439526e", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "604e85a87648a491841f51c2a134d160064c8a552300b0813ae62e9ce5caadab", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ff380b5465071a147b824e255576a2eb3fc2fca2a7f7094a85074735a07eff47", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "82e9ad580472de26e6edd2f60eea5fd1f6d27ac7ca973652a37991cc0b91ecf2", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "3bc32d4fc08149dd81134cba2ee698ddb9819cf971beb8fd84b6e7fc75b5cb94", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "ce176b9e57372e3b338004a6123e2ed8bea4126f92ad7cd5b04f31d2558b22a3", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7b6e80e9e5c05fc78176016a2f661673d0467de14c2f1f05017a9d35ace4e48d", +"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6c500423247daf99b0be5964a3b9a8508429eadf315a049228ba7822a448a162", "T2B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", "T2B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", "T2B1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -6379,10 +6379,10 @@ "T2B1_es_test_protection_levels.py::test_unlocked": "85cbf192ba305b14f491ebad97b6fe0b63990d473d520a8035efa5089ced1921", "T2B1_es_test_protection_levels.py::test_verify_message_t2": "5a4bdaee180485d9e08ee5fdb0f5d5317e3d0df6601e1b5f30561f957b9a50eb", "T2B1_es_test_protection_levels.py::test_wipe_device": "a11c4318f3eca399c953ef595ac7fc81b5e4aee4845765a9f103796d8bb74926", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "f415aa8eda5d9eb9519c66f8df0f37f4e984a9ddbc4f39ca68a7bf7318174c06", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "0f443c5c0eb0334e4e4a7383a9daa2f45de474fd85d236632f3f1e663d86bd0c", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "5af4aa53521a5afeccd5316661faa0e2559014e9607adcfdbcb5db380d25561c", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "09c31f9ce71d712e887bc5f00e86615f47624f8627bca98f6e0159e23bac7fe8", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "4a6546707f8a41d371787f9b24e8795e5163db29db94ae7cf041d6b44ab1cca3", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "0a32bb4735a4dc91f7f0dde82b90d3ee638a4e09e123ce56d1a3d29a997cfa39", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6d5ea29095c545051660f16572ee99c90858fe929b2e2603767fec79344a920f", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "55663e2a46c14f682c5e5a893c5526cd0fb4a645d8bc484ef6aa68a51ea7abb3", "T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_clear_session": "6fbffc0958c6514ea65c5ce81ecf2cdc5f2ac8965aa68d8584d5ab30a93d7b82", "T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -7691,7 +7691,7 @@ "T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "5712955f435db11157fcb9396abcaf37949900cce9487089a6c64cd2d69fa1f8", "T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c2af499645a7ee44dcc4ddbd9e9df812493082162739ec035b406dbbc29dfc3e", "T2B1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "d2bf23bd8a4910a28f90606740038748d8859865a90054241601a60eae74eee4", -"T2B1_fr_test_msg_applysettings.py::test_experimental_features": "2fbfc070398f2bd8ebd7e3b0f787b85390778aa9091321a10abc10e5ed2edbe8", +"T2B1_fr_test_msg_applysettings.py::test_experimental_features": "f255b1a5c4f6e72b64a1b651cfcc47803668092e4c2a3da9f37f2796b515d675", "T2B1_fr_test_msg_applysettings.py::test_label_too_long": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_msg_applysettings.py::test_safety_checks": "6cc280764a02e46da93f042f4b6b2fd1ee4464a460d75f7c0fae38759728e4f4", "T2B1_fr_test_msg_backup_device.py::test_backup_bip39": "c8377359bd7bd73fbd3f168e775e3a27a52c6e33b620c58cd91b64a7c9d98838", @@ -7951,7 +7951,7 @@ "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "fcf15ef196fde1120248e0b16a8f2d464f5f539a5c7529f80a8a855e2721f107", "T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0fe9495c0fabdd09be97b06972d593ed2de5a3aa9cf2c38b500c05f4d0097d08", "T2T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "1bc2c12f2bce2f19caa48131b5667c0c163c611b0fdfda502ebecc25988c74e3", -"T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "0dc64fd0e6ac807d41d94dafbd893d388b1c91b0d4b98d1caf17453588ff1858", +"T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "8634bea70094d676213413916cc4dc32160a69e34a67c7f6602d0b1adf30d36b", "T2T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "ef6426713b40de5a54e3bf69e0ebc49f3880447bfa60df49a7078b52ae6fb8b5", "T2T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "3a0a9db8772a4e0d8e04d1e0631fb2f1c3dbcc85ab413060ba2fbda4149003ae", "T2T1_es_test_autolock.py::test_autolock_interrupts_signing": "ddf2c85d611de1566f56657515a7963421089b98b0ae6f52db707363e7a4e4b3", @@ -9384,7 +9384,7 @@ "T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "5c11a0a175ec03cabf25841cf49dff634deb2c09059b1d93263887c8e5c3c47e", "T2T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "07790be49485453e78b20a1e93052f4e39d4ba022bd214f48b5e4827c8ff825c", "T2T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "158211d7c9ac7471d117ff30285543578f99d3b17e0c7dabb67b7c5425dbf61d", -"T2T1_cs_test_msg_applysettings.py::test_experimental_features": "7f9b0e3d502e3f297f05921555a81074908964cd327bd4cc82fd7a03d387e506", +"T2T1_cs_test_msg_applysettings.py::test_experimental_features": "25dfb6e5dad6ac28aad7e4cdbefacbe762086649560bcb56f51ccf677fd68a19", "T2T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", "T2T1_cs_test_msg_backup_device.py::test_backup_bip39": "212688c449a822c4dc18990dd13b3c0504e93b9bf2580c69e49c77a7a2d9212d", @@ -10832,7 +10832,7 @@ "T2T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "04efb1a60c08e2bfd3341089974344b06b9c3c80b791bf3019614284284fa7c0", "T2T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "1118be26e5cc5d4bab865b8f55fb2e24d031ff006d2065a1c974c98d7461d1d8", "T2T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "84e71a5e58451cce848683bcecd4f47e88206265e81428f656ab4da2701a6382", -"T2T1_de_test_msg_applysettings.py::test_experimental_features": "7067eee263527d24c6e8676d685b698900ad87be9efe7afadd433ec45f65b50a", +"T2T1_de_test_msg_applysettings.py::test_experimental_features": "aa0f0ccff689374e234535f4de6ce3d0f74b97cdeb472a673960b1db3e24b2fa", "T2T1_de_test_msg_applysettings.py::test_label_too_long": "4ed24353a7aa99e894d4ed3cb45be13f54a94577289f3919be62add4c6c36390", "T2T1_de_test_msg_applysettings.py::test_safety_checks": "0105dacdfd0f8e69fca82643c84a9891b3953046571f041ce2b7e8596824aefc", "T2T1_de_test_msg_backup_device.py::test_backup_bip39": "201f0df190cf7eccebe576e5f8d365a29f7338d030dd5283cba78d10efbccb00", @@ -12428,9 +12428,9 @@ "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "20a8c35d06f9d5050ad9644b6921e73186abed298da83ef145d2c2af5b8fc671", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "1c9dd8de0ea726a346ce6480bec2414b29acd6779125d929fa83d84ce9ed3e74", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "399bfd4e6de87e62ebdc60087587f8c27e2befa2b8e6bd9c719c3c100c568057", -"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "47830dca5b98bef70285452943bc1a58fd8e302357fb0b380f0d24eef0faa1e7", -"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "47830dca5b98bef70285452943bc1a58fd8e302357fb0b380f0d24eef0faa1e7", -"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "cd27505e5b5c047732ddef06cb93ac052449b79e9babfe4fee6589a453d6fb0a", +"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "491f0b15c1d06a299f8f3d5e3865302d90d6324bb512152be3619154c9c124f9", +"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "491f0b15c1d06a299f8f3d5e3865302d90d6324bb512152be3619154c9c124f9", +"T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "bbfe04665f59994dd94630ec0d1e8763ca5477c4f5424133b3af08281a9feecd", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "9d60806fc7e7179071eb959f5cbe67d97f11153cbce97864e0615254a163d537", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0b3d3893f01bf57bbd644b19bb2072f8c435931d8cb2a38a97ac2659844efd3c", "T2T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "0e89f958dba7a48f1c417b808f71b08d84885c5d184274c3866b7ead5bf09f3b", @@ -13706,8 +13706,8 @@ "T2T1_es_test_basic.py::test_device_id_same": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_basic.py::test_features": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_basic.py::test_ping": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_test_busy_state.py::test_busy_expiry": "da280d408675fbdbaddefe467ce32f0fbd64726f8935dc5d49b9d2fe969f7585", -"T2T1_es_test_busy_state.py::test_busy_state": "0cc7986cdb2519b4b4fc6d25f5b2d2d8bacc938dc389bd834ce329f9ec8bfff4", +"T2T1_es_test_busy_state.py::test_busy_expiry": "9e55db4d84056f088846113d55e6010d6782d08eef316f266a6581083b7a0947", +"T2T1_es_test_busy_state.py::test_busy_state": "189091baab9e22ddc85c58901d3a8a5a5fcdc76a31a7e515d9d0cb618c4fc168", "T2T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", "T2T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "61caffa741cf81f709e6df2818a5ace7411fef1765e14aec7dd99b13f7d1322f", "T2T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", @@ -13746,7 +13746,7 @@ "T2T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "24e8a9d6fff3d74802136429e34637777232aa553bd0245d209f49ef151c7237", "T2T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "b1ada3ad447aee421b0a49f7391fde2f9daa7a6c5f93fe0bd6b5a08c11e475b9", "T2T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "966edc115c73b74ca5ac43774aea822f2b55fe05c2a5f799fe2b5fd3e48ae866", -"T2T1_es_test_msg_applysettings.py::test_experimental_features": "eee88752c3e36adfaa8edd095e83d0d45afb21974794124c7937479a01db969d", +"T2T1_es_test_msg_applysettings.py::test_experimental_features": "9a620ae2055e39a1b0a5a7a1d617f95b7c3c2f3abaab70175b2193e44d10a0c9", "T2T1_es_test_msg_applysettings.py::test_label_too_long": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_msg_applysettings.py::test_safety_checks": "74b8d81ff4612e2a0c2faea87ece873b1ffcabe7a908a0f8896b76b075b56917", "T2T1_es_test_msg_backup_device.py::test_backup_bip39": "3f8085c06a79fd0232c9ef93e20a6713d350bd2189c47f3a5a38a13fcb908bf7", @@ -15194,7 +15194,7 @@ "T2T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "b30134a9687dbd1627a59d7fe9c55cea47d5ff07edc977c83ec9a8404569c79f", "T2T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "229a3ead486c7b84af12435e6bc6b74bf4bd015aedcdfe252a31d70176319266", "T2T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "44ae39d49f5478e4de40595451673eb6f15b31a8a4aed8c87b9e5137298ab116", -"T2T1_fr_test_msg_applysettings.py::test_experimental_features": "38868e3af6f7867a1ad96a140991752197fc45bad1ba92c7e0a619bc2cdd3191", +"T2T1_fr_test_msg_applysettings.py::test_experimental_features": "d9e964546f02d2fa1b0b2803f66b4268221d6c06b6ac8d37d53d3a1f194b6b72", "T2T1_fr_test_msg_applysettings.py::test_label_too_long": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_msg_applysettings.py::test_safety_checks": "11728ebd055b8dd997f30c806950104e149df07c5a3dad5b29b22c91ccba7e7c", "T2T1_fr_test_msg_backup_device.py::test_backup_bip39": "51e3d5b640026fac3a4bc28e02260489f9aa190d40d7b96eebe8ff1f2b08ab06", @@ -15470,7 +15470,7 @@ "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3f63701cfe0ff10fe4d5c49c877e27879891cb7c42b19bb4d07d163ed7d0750a", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3b50655712f125adae01ef1a951db2ce33ce5587f1d0e70f6af6ce5a61e3eedb", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6b231fc2cd69cedd33d2528b57f8136a5ca3b9c43b698e3ac20110ac31e6ddb8", -"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "8b5ce5e34200e989c1ddc6f5f3c7e4175891ccc043aac7209fb47b74ba51d61f", +"T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "83dab8b004b7ad2dd1a0d6f56e1661ff0a25bdc18dafb2f09d339b9eea0dfdcc", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d5cf039ee4bd1489039c8e31f8f90d0b075edeaddb2ec22f55543a8e1d8b8a4", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "82df5a9a0e7df9f617b29bb16d01acc5b800635c420680ab9e546e8c908a1748", "T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "3f9070f1b83a17e4a428eeab7b056cf088dc421f21d7819f92dd07d63ac66cd0", @@ -16799,7 +16799,7 @@ "T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "f5e9e741bc45953e463fdabb87a81307d4b1ec379170487d18241ede278d6fa3", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4741416de5b0ae9aa27367c5a7f9d5f7a3607d1323a5a12e2709df429dfc3784", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "e3a64d7efe9482c038c304942a5d1da64b92ec0bf92d227331c4800f2ef7dea4", -"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "def9ad5e2b4db346c4e5bd2dcb0444b5787221a31144c17b9e06082a7fed6256", +"T3T1_cs_test_msg_applysettings.py::test_experimental_features": "c9cde0d61c26889516c7d875004af6f40d37a8e03e6797d3928dabad4d3e9edf", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0eed526ac2842f7e35e9c2cb5684d622178b696e1c834661c62224691a7992d5", "T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "8fd04ce896d76081179715f43988e940f37baff4cb0f622a28005ef67c015281", @@ -16833,8 +16833,8 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "f16d0f3c7e6fbf209dcdf3b9d164b256921193a59497181ce12880dbd68f344f", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c0629afadd2f660e7dde53a1f046e4451eb8ce7ee195cf0bb1c97624cf15fb4", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "f2034ed5b2e2698f84e2e7558e7912246e7b7fdd969381c427aad4b0b47353db", -"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "49b728c5299c3f8ceeed9595dd407c6940cc7bde3c77e34e22cce90262b1f44a", -"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "a459905ea805dd3b02e7748bdfd6c641a005ab6b22a13d74c75b2281a4aa5e51", +"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "42235c94a42fdc08cec3e2c74043f83b8194a2d8e9aee5f21dbc9d2891f5743a", +"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "3689ce122921337337638ddbe6804750e6a9d309eafa6b40b33317230b24ae30", "T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "3fe3ebecd6517fd08b52fb7a85fb6e6de5fda24b2fc000865ce83de6dafd5781", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", @@ -18146,7 +18146,7 @@ "T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "42f87da1a7cb19ef9cde7f2c768ac163ed5b32e29644b4808c4f4b33e69115ee", "T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "009732212982e29ead5a635e51e4301b9f0bb20134c01ccda4968979446af371", "T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "aa61c41bd8a2d8f0050a334bc63fc0c8ebb99101791c33b23e66cea4ac239fb8", -"T3T1_de_test_msg_applysettings.py::test_experimental_features": "647c48e563f037b79a1ceee522128e2c891b9368d7439427f9375d3f276fdd34", +"T3T1_de_test_msg_applysettings.py::test_experimental_features": "6ba91290c4610b4df056dae58397cfb7a0fee107ba5e13758dcb54c43ffedbf6", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "1a665973fa452a0d05ced007179fa7d2effa8e1abbda4460eb4678b99909997d", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "47478d72725f206ec8d3586fc7f4713c8ae52b00a7587f9225ece9ad78725358", @@ -18180,8 +18180,8 @@ "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "440ffae3947d0d08480b818a30ba631dcfe454a92f304a3d82735034ae0d6570", "T3T1_de_test_msg_sd_protect.py::test_refresh": "324fffc360acc54078865fec82f2f0b83dd4985cb45d03feb0a050e57190bab5", "T3T1_de_test_msg_sd_protect.py::test_wipe": "479cf95d2085e797b3fc4e048444e25b2ed4f0a3d3b29008b8417232646953f4", -"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "9ca49844a75ac43f361232a76fe360f5ec1652a05f6c427f35b687798151b102", -"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "b74617a1a728933e965d6964b5502be7b3ca9a3227d23623ad07a2ed18eb9117", +"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "1da46bd298cc19ceb1e344054808984a044264af254e5c6104e99912ac4edb8d", +"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "ca9a5dd65e8c9ab0c8458725a713b6155883ea735aecdb70aa9123f0c5dd324e", "T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "7c8b3639f4897e8a96b29b889ab6e3746e852b3a48cb2b0618629cfa47487f6a", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", @@ -19527,8 +19527,8 @@ "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "18e2495ee4cac06d66dcb351fba8ffdb9352f7752f305ae2c357e90cdcdb5401", "T3T1_en_test_msg_sd_protect.py::test_refresh": "82cb15201bdf6dcc16cc68190b304c74edb4933cca10ac5a2016a460012dd02a", "T3T1_en_test_msg_sd_protect.py::test_wipe": "1fac3944683e636c54bba28ce8a7fa8d075251ee359858db8f386ca53f63ac08", -"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "2f39eedba0ef8010f232b77606c453e06e63c74a54f08117a60066d64412e589", -"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "8908a0d44786f8d60477d04f54dbdb28a059358bc04f093daf4129c89e6b529b", +"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "7432bbffc51fbb646302c342feb84a8099b901cfc61b969cb13b6921f0a5ea45", +"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "e9fc618a8361d7ee4f46b3cb469406923c097c90a07c9b59ccb3cd2e4a997f39", "T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "593429d09da223f7d5a98c1f5a04a523c2ca58fbde4348179da8f2cfcae247ab", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", @@ -19626,9 +19626,9 @@ "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "67cce35faad540e24df64451de67cccc334b76a931449b5c6cb173768cab0e64", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "214466d2c0357c010e2df721b450736747bc57268d566f370973a3802f13eb22", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "48883805f726692aa612ace74c51d0b0c6fe06eda6898d41c80b9c7eb3e44030", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "e1859ba5e672d65a1cdb0934a2ca75df75c611a181406dab1bec4a720afd5175", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "e1859ba5e672d65a1cdb0934a2ca75df75c611a181406dab1bec4a720afd5175", -"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0efcb7411cd00037f181341983a0383978527ea683a9ee7b2f6a67d015526e84", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "6fb5d93b856fbfeecd5f8a6722a285593b4e913d81864978012be0d0cfb2f6b3", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "6fb5d93b856fbfeecd5f8a6722a285593b4e913d81864978012be0d0cfb2f6b3", +"T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "26da02134892fe986452baf5f36ab92c9d3b3f3961c066915d920801b254d2fb", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f19ba1a048878a769fa8b842fd2a23dd8533e0b72c501fe5cda93a5ff9075241", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f87ad1b10316f25c869668f96fc8a6bdb47b3d9bd6aa7c201882ae179f2a91b4", "T3T1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "f1bd5bbecaa4460f1171ed5c9c140babd496843fbfcbd61bf748fabb4f33ec8f", @@ -20800,8 +20800,8 @@ "T3T1_es_test_basic.py::test_device_id_same": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_features": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_basic.py::test_ping": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_busy_state.py::test_busy_expiry": "277899ea04ce989380c13c50fcf28367c9b83bc71ed26980ec022b5fe2b85c17", -"T3T1_es_test_busy_state.py::test_busy_state": "d3e743702a66366a40ede4ac1e601edcf581612cbe91783a97242eb9ab50baa6", +"T3T1_es_test_busy_state.py::test_busy_expiry": "15f0cd9ed20608096e79b7b0fb3654bc7d8907819fa50a73504a2d4d2e331536", +"T3T1_es_test_busy_state.py::test_busy_state": "1d0621d435f7caefce71a35a56c714dd8a04fe700d4935a6a831e010df14145f", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "82b85183f80ac5b2df306961c87edf7fbaa3d06650218a58a79c4d09890aab46", "T3T1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", @@ -20840,7 +20840,7 @@ "T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "7e7e88fb2de600bc7a88e983a185ca2ef0ed47beb8432131eeaaf2747dd94028", "T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00c5d64174cbfc42469465b5e80ba5a1ba5eb4fb56426994a9b5ad335dc8438c", "T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "43f2969d66acf65b7138440e32c21c349c554894694219819f8ae3c0c50b7b48", -"T3T1_es_test_msg_applysettings.py::test_experimental_features": "f12add2d1795e22eeb646955567aee4e091ddaca994f3ba5ac50798934837677", +"T3T1_es_test_msg_applysettings.py::test_experimental_features": "793eb86c560124fe0ab6dc5eef7ff4ba8634519bb4b684b0c2c4c0365b49d07c", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "0cdbbcc9774b858e0694802f24f0d89241b7c675a0732bd3b39866d17ce000ac", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "536773ce669cf1476f03f7be1acb26be08408f2ab7285ef3d184464c33cdaaae", @@ -20874,8 +20874,8 @@ "T3T1_es_test_msg_sd_protect.py::test_enable_disable": "cb61248c0d0b46b8a4433e2bf12ccfc0b32ad5b9842d5d80eb44d76f0f1f17e4", "T3T1_es_test_msg_sd_protect.py::test_refresh": "a7235bf977a5f7aab3b0133f0781feab28319170ad80785a29f343aecf72d996", "T3T1_es_test_msg_sd_protect.py::test_wipe": "7a7cf781e34a9131c2f4dfe9907cb733ddb93c805c92f0fb14b79634974bdd79", -"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "324856403c2cc8a54f9ba167845e37e8adb8f7ecbc212227aa3422aeec6b05c0", -"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "c7f6ff6fc460b7e310c1ca1c1e2b07a208e8deca1c99f74a2cce91c2a16a1b5b", +"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "5e4328cea5b060c25fe06ef1228313c4f4f3b0a9afb7021aa8b90b5f1e54e134", +"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "75650acb32f25ae46e9d7b78fa9d2c30c85b2c3998cfe3dfda3357c20e4302d0", "T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "f7ba337dc25fe91c0cf19877534ca2fca75d2ba02d0f5f3d639e1ee5924a0bfa", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", @@ -22187,7 +22187,7 @@ "T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "8d7b8761748809d490708735a3dc02fe60a86628d71cbeb0d159b26cd9436d43", "T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "95dc8034980a6c20e1f84cfcd178ed12cc87134b4536d7e5bbe375c36a293750", "T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "6ed189300fa6e85b6568e0baf4cd46b442addcbdee366d511d48e129872ee982", -"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "f948137df32c4849f56d2fc361fd898a5c529f85ee84cd15c76767210e87b547", +"T3T1_fr_test_msg_applysettings.py::test_experimental_features": "f75dfd9615a8f63074bd256d9452dd9c5f3db9aee5b0ae0d232c1d370d2f672d", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "e5db2bff6610a705f5989bcb9ac7b687732447e5903fdb1a04d92478bc086183", @@ -22221,8 +22221,8 @@ "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "248d3bd2c671109278f0c75e7986a20f58bc04f72ae39b855f000b11ece6d781", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "af9bd20cea2fd6e75d55a1b3ac918f7418dac77c4bf6a768611579becc71cd17", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "41ea5e6c2b26c9937792cb2cdfbad74286d740fd523bb7d07305566bcd167935", -"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "8367ee29080faf467cde999256920cc18e3d0238e05dee16b4502519443b2263", -"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "88c706fa341925c54fbab47e335a596a8ec0880c9312701e78ae37bcdad18e36", +"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "204db8befa27a853788bcd7ae567b83b7d277506057a1bad5abb925849f7df29", +"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "eec46a6bd76f0b408d9d59291f01316d32041cd6c1c37dc89914b641e7cbf3c7", "T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "3738505cc3fc5b395bc652371875bc2274f6a9a65143d031450e01ec5ec82aeb", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", From 27fc3a6614f53f30abf3125af3e7d4f47dfba5a5 Mon Sep 17 00:00:00 2001 From: M1nd3r <petrsedlacek.km@seznam.cz> Date: Fri, 19 Jul 2024 15:43:52 +0200 Subject: [PATCH 450/626] test(core): unify noqa style [no changelog] --- core/tests/test_trezor.crypto.base32.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/tests/test_trezor.crypto.base32.py b/core/tests/test_trezor.crypto.base32.py index 913a386b40..58bbb5d4db 100644 --- a/core/tests/test_trezor.crypto.base32.py +++ b/core/tests/test_trezor.crypto.base32.py @@ -26,12 +26,12 @@ class TestCryptoBase32(unittest.TestCase): "PJWHK5DPOVRWW6JANN2W4IDVOBSWYIDEMFRGK3DTNNSSA33EPE======", ), # fmt: off - (b"中文", "4S4K3ZUWQ4======"), # noqa:E999 - (b"中文1", "4S4K3ZUWQ4YQ===="), # noqa:E999 - (b"中文12", "4S4K3ZUWQ4YTE==="), # noqa:E999 - (b"aécio", "MHB2SY3JN4======"), # noqa:E999 - (b"𠜎", "6CQJZDQ="), # noqa:E999 - (b"Base64是一種基於64個可列印字元來表示二進制資料的表示方法", # noqa:E999 + (b"中文", "4S4K3ZUWQ4======"), # noqa: E999 + (b"中文1", "4S4K3ZUWQ4YQ===="), # noqa: E999 + (b"中文12", "4S4K3ZUWQ4YTE==="), # noqa: E999 + (b"aécio", "MHB2SY3JN4======"), # noqa: E999 + (b"𠜎", "6CQJZDQ="), # noqa: E999 + (b"Base64是一種基於64個可列印字元來表示二進制資料的表示方法", # noqa: E999 "IJQXGZJWGTTJRL7EXCAOPKFO4WP3VZUWXQ3DJZMARPSY7L7FRCL6LDNQ4WWZPZMFQPSL5BXIUGUOPJF24S5IZ2MAWLSYRNXIWOD6NFUZ46NIJ2FBVDT2JOXGS246NM4V"), # fmt: on ] From b567a91c22448d2f262147c8010d751abfa90bc8 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 19 Jul 2024 14:08:18 +0200 Subject: [PATCH 451/626] chore(core): changelogs and bump versions of boardloader, bootloader, prodtest --- core/embed/boardloader/CHANGELOG.md | 6 ++++++ core/embed/boardloader/version.h | 2 +- core/embed/bootloader/CHANGELOG.md | 6 ++++++ core/embed/bootloader/version.h | 2 +- core/embed/prodtest/.changelog.d/3900.fixed | 1 - core/embed/prodtest/CHANGELOG.md | 10 ++++++++++ core/embed/prodtest/version.h | 2 +- 7 files changed, 25 insertions(+), 4 deletions(-) delete mode 100644 core/embed/prodtest/.changelog.d/3900.fixed diff --git a/core/embed/boardloader/CHANGELOG.md b/core/embed/boardloader/CHANGELOG.md index 344b16ee95..e766ee74a2 100644 --- a/core/embed/boardloader/CHANGELOG.md +++ b/core/embed/boardloader/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## 2.1.3 [July 2024] + +### Added +- [T3B1] Added support for T3B1. + + ## 2.1.2 [April 2024] ### Added diff --git a/core/embed/boardloader/version.h b/core/embed/boardloader/version.h index c63395c08c..4af28c65c2 100644 --- a/core/embed/boardloader/version.h +++ b/core/embed/boardloader/version.h @@ -1,4 +1,4 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 1 -#define VERSION_PATCH 3 +#define VERSION_PATCH 4 #define VERSION_BUILD 0 diff --git a/core/embed/bootloader/CHANGELOG.md b/core/embed/bootloader/CHANGELOG.md index 17a0f6a8db..c612059126 100644 --- a/core/embed/bootloader/CHANGELOG.md +++ b/core/embed/bootloader/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## 2.1.7 [July 2024] + +### Added +- [T3B1] Added support for T3B1. + + ## 2.1.6 [May 2024] ### Added diff --git a/core/embed/bootloader/version.h b/core/embed/bootloader/version.h index b449164912..bfb51809ea 100644 --- a/core/embed/bootloader/version.h +++ b/core/embed/bootloader/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 1 -#define VERSION_PATCH 7 +#define VERSION_PATCH 8 #define VERSION_BUILD 0 #define VERSION_UINT32 \ (VERSION_MAJOR | (VERSION_MINOR << 8) | (VERSION_PATCH << 16) | \ diff --git a/core/embed/prodtest/.changelog.d/3900.fixed b/core/embed/prodtest/.changelog.d/3900.fixed deleted file mode 100644 index 07815ecf41..0000000000 --- a/core/embed/prodtest/.changelog.d/3900.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix TOUCH VERSION command diff --git a/core/embed/prodtest/CHANGELOG.md b/core/embed/prodtest/CHANGELOG.md index 159239f02e..3b5815e1b6 100644 --- a/core/embed/prodtest/CHANGELOG.md +++ b/core/embed/prodtest/CHANGELOG.md @@ -1,4 +1,13 @@ +## 0.2.8 [19th July 2024] + +### Added +- [T3B1] Added support for T3B1. + +### Fixed +- Fix TOUCH VERSION command [#3900] + + ## 0.2.7 [10th June 2024] ### Added @@ -54,4 +63,5 @@ [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3769]: https://github.com/trezor/trezor-firmware/pull/3769 [#3770]: https://github.com/trezor/trezor-firmware/pull/3770 +[#3900]: https://github.com/trezor/trezor-firmware/pull/3900 [#3932]: https://github.com/trezor/trezor-firmware/pull/3932 diff --git a/core/embed/prodtest/version.h b/core/embed/prodtest/version.h index 55036fa286..00f00ff0d8 100644 --- a/core/embed/prodtest/version.h +++ b/core/embed/prodtest/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 -#define VERSION_PATCH 8 +#define VERSION_PATCH 9 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 0 From 0d987a68f4db3419b0394adb3389d9d2f4e1ad4e Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 17 Jul 2024 09:55:43 +0200 Subject: [PATCH 452/626] fix(core/mercury): multi-share backup more info The commit fixes More Info screen hidden behind context menu during a prompt for number of shares and shares threshold. It removes wrong title and enables changing the info text based on currently selected number. --- core/.changelog.d/4006.fixed | 1 + core/embed/rust/librust_qstr.h | 2 + .../generated/translated_string.rs | 6 ++ .../src/ui/model_mercury/component/mod.rs | 2 + .../model_mercury/component/number_input.rs | 47 +++-------- .../component/updatable_more_info.rs | 82 +++++++++++++++++++ .../ui/model_mercury/flow/request_number.rs | 69 ++++++++-------- .../embed/rust/src/ui/model_mercury/layout.rs | 2 +- core/mocks/generated/trezorui2.pyi | 2 +- core/mocks/trezortranslate_keys.pyi | 2 + .../apps/management/reset_device/__init__.py | 6 +- core/src/trezor/ui/layouts/mercury/reset.py | 60 +++++--------- core/translations/en.json | 2 + core/translations/order.json | 4 +- 14 files changed, 169 insertions(+), 118 deletions(-) create mode 100644 core/.changelog.d/4006.fixed create mode 100644 core/embed/rust/src/ui/model_mercury/component/updatable_more_info.rs diff --git a/core/.changelog.d/4006.fixed b/core/.changelog.d/4006.fixed new file mode 100644 index 0000000000..ecbf6c3c3f --- /dev/null +++ b/core/.changelog.d/4006.fixed @@ -0,0 +1 @@ +[T3T1] Fix More info screen during multi-share backup creation diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index ffd4fac157..3a9ebdc115 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -525,6 +525,8 @@ static void _librust_qstrs(void) { MP_QSTR_reset__share_checked_successfully_template; MP_QSTR_reset__share_completed_template; MP_QSTR_reset__share_words_title; + MP_QSTR_reset__slip39_checklist_more_info_threshold; + MP_QSTR_reset__slip39_checklist_more_info_threshold_example_template; MP_QSTR_reset__slip39_checklist_num_groups; MP_QSTR_reset__slip39_checklist_num_groups_x_template; MP_QSTR_reset__slip39_checklist_num_shares; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 49364f3029..7aeb7f6eb1 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1355,6 +1355,8 @@ pub enum TranslatedString { brightness__changed_title = 954, // "Display brightness changed" brightness__change_title = 955, // "Change display brightness" words__title_done = 956, // "Done" + reset__slip39_checklist_more_info_threshold = 957, // "The threshold sets the minumum number of shares needed to recover your wallet." + reset__slip39_checklist_more_info_threshold_example_template = 958, // "If you set {0} out of {1} shares, you'll need {2} backup shares to recover your wallet." } impl TranslatedString { @@ -2704,6 +2706,8 @@ impl TranslatedString { Self::brightness__changed_title => "Display brightness changed", Self::brightness__change_title => "Change display brightness", Self::words__title_done => "Done", + Self::reset__slip39_checklist_more_info_threshold => "The threshold sets the minumum number of shares needed to recover your wallet.", + Self::reset__slip39_checklist_more_info_threshold_example_template => "If you set {0} out of {1} shares, you'll need {2} backup shares to recover your wallet.", } } @@ -4054,6 +4058,8 @@ impl TranslatedString { Qstr::MP_QSTR_brightness__changed_title => Some(Self::brightness__changed_title), Qstr::MP_QSTR_brightness__change_title => Some(Self::brightness__change_title), Qstr::MP_QSTR_words__title_done => Some(Self::words__title_done), + Qstr::MP_QSTR_reset__slip39_checklist_more_info_threshold => Some(Self::reset__slip39_checklist_more_info_threshold), + Qstr::MP_QSTR_reset__slip39_checklist_more_info_threshold_example_template => Some(Self::reset__slip39_checklist_more_info_threshold_example_template), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index bb58e3bf26..864a20357d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -36,6 +36,7 @@ mod swipe_content; mod swipe_up_screen; #[cfg(feature = "translations")] mod tap_to_confirm; +mod updatable_more_info; mod welcome_screen; #[cfg(feature = "translations")] @@ -82,6 +83,7 @@ pub use swipe_content::{InternallySwipable, InternallySwipableContent, SwipeCont pub use swipe_up_screen::{SwipeUpScreen, SwipeUpScreenMsg}; #[cfg(feature = "translations")] pub use tap_to_confirm::TapToConfirm; +pub use updatable_more_info::UpdatableMoreInfo; pub use vertical_menu::{VerticalMenu, VerticalMenuChoiceMsg}; pub use welcome_screen::WelcomeScreen; diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index 01872670fc..1730e6f301 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -4,7 +4,6 @@ use crate::{ ui::{ component::{ base::ComponentExt, - paginated::Paginate, text::paragraphs::{Paragraph, Paragraphs}, Child, Component, Event, EventCtx, Pad, SwipeDirection, }, @@ -17,28 +16,22 @@ use crate::{ use super::{theme, Button, ButtonMsg}; -pub struct NumberInputDialogMsg(pub u32); +pub enum NumberInputDialogMsg { + Confirmed(u32), + Changed(u32), +} -pub struct NumberInputDialog<F> -where - F: Fn(u32) -> TString<'static>, -{ +pub struct NumberInputDialog { area: Rect, - description_func: F, input: Child<NumberInput>, paragraphs: Child<Paragraphs<Paragraph<'static>>>, paragraphs_pad: Pad, } -impl<F> NumberInputDialog<F> -where - F: Fn(u32) -> TString<'static>, -{ - pub fn new(min: u32, max: u32, init_value: u32, description_func: F) -> Result<Self, Error> { - let text = description_func(init_value); +impl NumberInputDialog { + pub fn new(min: u32, max: u32, init_value: u32, text: TString<'static>) -> Result<Self, Error> { Ok(Self { area: Rect::zero(), - description_func, input: NumberInput::new(min, max, init_value).into_child(), paragraphs: Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, text)) .into_child(), @@ -46,27 +39,12 @@ where }) } - fn update_text(&mut self, ctx: &mut EventCtx, value: u32) { - let text = (self.description_func)(value); - self.paragraphs.mutate(ctx, move |ctx, para| { - para.inner_mut().update(text); - // Recompute bounding box. - para.change_page(0); - ctx.request_paint() - }); - self.paragraphs_pad.clear(); - ctx.request_paint(); - } - pub fn value(&self) -> u32 { self.input.inner().value } } -impl<F> Component for NumberInputDialog<F> -where - F: Fn(u32) -> TString<'static>, -{ +impl Component for NumberInputDialog { type Msg = NumberInputDialogMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -87,11 +65,11 @@ where fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { if let Some(NumberInputMsg::Changed(i)) = self.input.event(ctx, event) { - self.update_text(ctx, i); + return Some(NumberInputDialogMsg::Changed(i)); } if let Event::Swipe(SwipeEvent::End(SwipeDirection::Up)) = event { - return Some(NumberInputDialogMsg(self.input.inner().value)); + return Some(NumberInputDialogMsg::Confirmed(self.input.inner().value)); } self.paragraphs.event(ctx, event); None @@ -109,10 +87,7 @@ where } #[cfg(feature = "ui_debug")] -impl<F> crate::trace::Trace for NumberInputDialog<F> -where - F: Fn(u32) -> TString<'static>, -{ +impl crate::trace::Trace for NumberInputDialog { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("NumberInputDialog"); t.child("input", &self.input); diff --git a/core/embed/rust/src/ui/model_mercury/component/updatable_more_info.rs b/core/embed/rust/src/ui/model_mercury/component/updatable_more_info.rs new file mode 100644 index 0000000000..4a3824d9d0 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/updatable_more_info.rs @@ -0,0 +1,82 @@ +use crate::{ + strutil::TString, + ui::{ + component::{ + paginated::Paginate, + text::paragraphs::{Paragraph, Paragraphs}, + Component, Event, EventCtx, Never, + }, + geometry::Rect, + shape::Renderer, + }, +}; + +use super::theme; + +pub struct UpdatableMoreInfo<F> +where + F: Fn() -> TString<'static>, +{ + info_func: F, + paragraphs: Paragraphs<Paragraph<'static>>, +} + +impl<F> UpdatableMoreInfo<F> +where + F: Fn() -> TString<'static>, +{ + pub fn new(info_func: F) -> Self { + Self { + info_func, + paragraphs: Paragraphs::new(Paragraph::new( + &theme::TEXT_MAIN_GREY_LIGHT, + TString::empty(), + )), + } + } + + fn update_text(&mut self, ctx: &mut EventCtx) { + let text = (self.info_func)(); + self.paragraphs.inner_mut().update(text); + self.paragraphs.change_page(0); + ctx.request_paint(); + } +} + +impl<F> Component for UpdatableMoreInfo<F> +where + F: Fn() -> TString<'static>, +{ + type Msg = Never; + + fn place(&mut self, bounds: Rect) -> Rect { + self.paragraphs.place(bounds); + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Event::Attach(_) = event { + self.update_text(ctx); + } + None + } + + fn paint(&mut self) { + todo!("remove when ui-t3t1 done"); + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.paragraphs.render(target); + } +} + +#[cfg(feature = "ui_debug")] +impl<F> crate::trace::Trace for UpdatableMoreInfo<F> +where + F: Fn() -> TString<'static>, +{ + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("UpdatableMoreInfo"); + t.child("paragraphs", &self.paragraphs); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs index 5d1c645fc9..4b5a48d122 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -5,24 +5,21 @@ use crate::{ translations::TR, ui::{ button_request::ButtonRequest, - component::{ - swipe_detect::SwipeSettings, - text::paragraphs::{Paragraph, Paragraphs}, - ButtonRequestExt, ComponentExt, SwipeDirection, - }, + component::{swipe_detect::SwipeSettings, ButtonRequestExt, ComponentExt, SwipeDirection}, flow::{ base::{DecisionBuilder as _, StateChange}, FlowMsg, FlowState, SwipeFlow, }, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, }, }; +use core::sync::atomic::{AtomicU16, Ordering}; + use super::super::{ component::{ CancelInfoConfirmMsg, Frame, FrameMsg, NumberInputDialog, NumberInputDialogMsg, - VerticalMenu, VerticalMenuChoiceMsg, + SwipeContent, UpdatableMoreInfo, VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -61,6 +58,8 @@ impl FlowState for RequestNumber { } } +static NUM_DISPLAYED: AtomicU16 = AtomicU16::new(0); + #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, RequestNumber::new_obj) } @@ -72,27 +71,22 @@ impl RequestNumber { let count: u32 = kwargs.get(Qstr::MP_QSTR_count)?.try_into()?; let min_count: u32 = kwargs.get(Qstr::MP_QSTR_min_count)?.try_into()?; let max_count: u32 = kwargs.get(Qstr::MP_QSTR_max_count)?.try_into()?; - let description: Obj = kwargs.get(Qstr::MP_QSTR_description)?; + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let info: Obj = kwargs.get(Qstr::MP_QSTR_info)?; - assert!(description != Obj::const_none()); assert!(info != Obj::const_none()); let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; - let description_cb = move |i: u32| { - TString::try_from( - description - .call_with_n_args(&[i.try_into().unwrap()]) - .unwrap(), - ) - .unwrap() - }; - let info_cb = move |i: u32| { - TString::try_from(info.call_with_n_args(&[i.try_into().unwrap()]).unwrap()).unwrap() + NUM_DISPLAYED.store(count as u16, Ordering::Relaxed); + let info_cb = move || { + let curr_number = NUM_DISPLAYED.load(Ordering::Relaxed) as u32; + let text = info + .call_with_n_args(&[curr_number.try_into().unwrap()]) + .unwrap(); + TString::try_from(text).unwrap() }; - let number_input_dialog = - NumberInputDialog::new(min_count, max_count, count, description_cb)?; + let number_input_dialog = NumberInputDialog::new(min_count, max_count, count, description)?; let content_number_input = Frame::left_aligned(title, SwipeContent::new(number_input_dialog)) .with_menu_button() @@ -101,12 +95,19 @@ impl RequestNumber { .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| match msg { FrameMsg::Button(_) => Some(FlowMsg::Info), - FrameMsg::Content(NumberInputDialogMsg(n)) => Some(FlowMsg::Choice(n as usize)), + FrameMsg::Content(NumberInputDialogMsg::Changed(n)) => { + NUM_DISPLAYED.store(n as u16, Ordering::Relaxed); + None + } + FrameMsg::Content(NumberInputDialogMsg::Confirmed(n)) => { + NUM_DISPLAYED.store(n as u16, Ordering::Relaxed); + Some(FlowMsg::Choice(n as usize)) + } }) .one_button_request(ButtonRequest::from_num(br_code, br_name)); let content_menu = Frame::left_aligned( - "".into(), + TString::empty(), VerticalMenu::empty().item(theme::ICON_CHEVRON_RIGHT, TR::buttons__more_info.into()), ) .with_cancel_button() @@ -117,20 +118,14 @@ impl RequestNumber { FrameMsg::Button(_) => None, }); - let paragraphs_info = Paragraphs::new(Paragraph::new( - &theme::TEXT_MAIN_GREY_LIGHT, - info_cb(0), // TODO: get the value - )); - let content_info = Frame::left_aligned( - TR::backup__title_skip.into(), - SwipeContent::new(paragraphs_info), - ) - .with_cancel_button() - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(|msg| match msg { - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), - _ => None, - }); + let updatable_info = UpdatableMoreInfo::new(info_cb); + let content_info = Frame::left_aligned(TString::empty(), SwipeContent::new(updatable_info)) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); let res = SwipeFlow::new(&RequestNumber::Number)? .with_page(&RequestNumber::Number, content_number_input)? diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index d20fc21f72..523c491938 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1704,7 +1704,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// count: int, /// min_count: int, /// max_count: int, - /// description: Callable[[int], str] | None = None, + /// description: str, /// info: Callable[[int], str] | None = None, /// br_code: ButtonRequestType, /// br_name: str, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 623a91711b..6bdb6d423c 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -420,7 +420,7 @@ def flow_request_number( count: int, min_count: int, max_count: int, - description: Callable[[int], str] | None = None, + description: str, info: Callable[[int], str] | None = None, br_code: ButtonRequestType, br_name: str, diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 98f9f07982..16e3d948c9 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -652,6 +652,8 @@ class TR: reset__share_checked_successfully_template: str = "Share #{0} checked successfully." reset__share_completed_template: str = "Share #{0} completed" reset__share_words_title: str = "Standard backup" + reset__slip39_checklist_more_info_threshold: str = "The threshold sets the minumum number of shares needed to recover your wallet." + reset__slip39_checklist_more_info_threshold_example_template: str = "If you set {0} out of {1} shares, you'll need {2} backup shares to recover your wallet." reset__slip39_checklist_num_groups: str = "Number of groups" reset__slip39_checklist_num_groups_x_template: str = "Number of groups: {0}" reset__slip39_checklist_num_shares: str = "Number of shares" diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index 94974dae24..f2ae0efc0b 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -183,11 +183,13 @@ async def _backup_slip39_advanced( groups_count = await layout.slip39_advanced_prompt_number_of_groups() # get group threshold - await layout.slip39_show_checklist(1, advanced=True) + await layout.slip39_show_checklist(1, advanced=True, count=groups_count) group_threshold = await layout.slip39_advanced_prompt_group_threshold(groups_count) # get shares and thresholds - await layout.slip39_show_checklist(2, advanced=True) + await layout.slip39_show_checklist( + 2, advanced=True, count=groups_count, threshold=group_threshold + ) groups = [] for i in range(groups_count): share_count = await layout.slip39_prompt_number_of_shares(i) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 5a2538370f..8b94907324 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -157,7 +157,7 @@ def _slip_39_checklist_items( async def _prompt_number( title: str, - description: Callable[[int], str], + description: str, info: Callable[[int], str], count: int, min_count: int, @@ -200,38 +200,20 @@ async def slip39_prompt_threshold( min_count = min(2, num_of_shares) max_count = num_of_shares - def description(count: int) -> str: - if group_id is None: - return TR.reset__select_threshold - else: - return TR.reset__num_shares_for_group_template.format(group_id + 1) + description = ( + TR.reset__select_threshold + if group_id is None + else TR.reset__num_shares_for_group_template.format(group_id + 1) + ) def info(count: int) -> str: - # TODO: this is madness... - text = TR.reset__the_threshold_sets_the_number_of_shares - if group_id is None: - # FIXME: need to propagate the argument in rust, temporary hack to show plausible value - count = num_of_shares - 1 - text += TR.reset__needed_to_recover_your_wallet - text += TR.reset__set_it_to_count_template.format(count) - if num_of_shares == 1: - text += TR.reset__one_share - elif num_of_shares == count: - text += TR.reset__all_x_of_y_template.format(count, num_of_shares) - else: - text += TR.reset__any_x_of_y_template.format(count, num_of_shares) - text += "." - else: - text += TR.reset__needed_to_form_a_group - text += TR.reset__set_it_to_count_template.format(count) - if num_of_shares == 1: - text += TR.reset__one_share + " " - elif num_of_shares == count: - text += TR.reset__all_x_of_y_template.format(count, num_of_shares) - else: - text += TR.reset__any_x_of_y_template.format(count, num_of_shares) - text += " " + TR.reset__to_form_group_template.format(group_id + 1) - return text + return ( + TR.reset__slip39_checklist_more_info_threshold + + "\n" + + TR.reset__slip39_checklist_more_info_threshold_example_template.format( + count, num_of_shares, count + ) + ) return await _prompt_number( TR.reset__title_set_threshold, @@ -249,13 +231,11 @@ async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: min_count = 1 max_count = 16 - def description(i: int): - if group_id is None: - return TR.reset__num_of_shares_how_many - else: - return TR.reset__total_number_of_shares_in_group_template.format( - group_id + 1 - ) + description = ( + TR.reset__num_of_shares_how_many + if group_id is None + else TR.reset__total_number_of_shares_in_group_template.format(group_id + 1) + ) if group_id is None: info = TR.reset__num_of_shares_long_info @@ -282,7 +262,7 @@ async def slip39_advanced_prompt_number_of_groups() -> int: return await _prompt_number( TR.reset__title_set_number_of_groups, - lambda i: description, + description, lambda i: info, count, min_count, @@ -300,7 +280,7 @@ async def slip39_advanced_prompt_group_threshold(num_of_groups: int) -> int: return await _prompt_number( TR.reset__title_set_group_threshold, - lambda i: description, + description, lambda i: info, count, min_count, diff --git a/core/translations/en.json b/core/translations/en.json index bc33245d40..a42c5d1747 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -654,6 +654,8 @@ "reset__share_checked_successfully_template": "Share #{0} checked successfully.", "reset__share_completed_template": "Share #{0} completed", "reset__share_words_title": "Standard backup", + "reset__slip39_checklist_more_info_threshold": "The threshold sets the minumum number of shares needed to recover your wallet.", + "reset__slip39_checklist_more_info_threshold_example_template": "If you set {0} out of {1} shares, you'll need {2} backup shares to recover your wallet.", "reset__slip39_checklist_num_groups": "Number of groups", "reset__slip39_checklist_num_groups_x_template": "Number of groups: {0}", "reset__slip39_checklist_num_shares": "Number of shares", diff --git a/core/translations/order.json b/core/translations/order.json index 796ca2f279..422d2b589e 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -955,5 +955,7 @@ "953": "setting__apply", "954": "brightness__changed_title", "955": "brightness__change_title", - "956": "words__title_done" + "956": "words__title_done", + "957": "reset__slip39_checklist_more_info_threshold", + "958": "reset__slip39_checklist_more_info_threshold_example_template" } From c6df2179d6aaeaa7195de5c3f4c8f9ed1a6e7244 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 18 Jul 2024 11:30:45 +0200 Subject: [PATCH 453/626] fix(core): show correct word count in more info Make translated strings describing recovery shares templated so that we can show correct number of words (i.e. 20 or 33) in more info. --- core/embed/rust/librust_qstr.h | 4 ++-- .../generated/translated_string.rs | 16 ++++++++-------- core/mocks/trezortranslate_keys.pyi | 6 +++--- core/src/apps/common/backup_types.py | 19 +++++++++++++++++++ .../apps/management/reset_device/__init__.py | 16 +++++++++------- core/src/trezor/ui/layouts/mercury/reset.py | 10 +++++++--- core/src/trezor/ui/layouts/tr/reset.py | 4 +++- core/src/trezor/ui/layouts/tt/reset.py | 10 +++++++--- core/translations/cs.json | 6 +++--- core/translations/de.json | 6 +++--- core/translations/en.json | 6 +++--- core/translations/es.json | 6 +++--- core/translations/fr.json | 6 +++--- core/translations/order.json | 4 ++-- core/translations/signatures.json | 6 +++--- 15 files changed, 78 insertions(+), 47 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 3a9ebdc115..c7e919866a 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -506,9 +506,9 @@ static void _librust_qstrs(void) { MP_QSTR_reset__never_make_digital_copy; MP_QSTR_reset__num_of_share_holders_template; MP_QSTR_reset__num_of_shares_advanced_info_template; - MP_QSTR_reset__num_of_shares_basic_info; + MP_QSTR_reset__num_of_shares_basic_info_template; MP_QSTR_reset__num_of_shares_how_many; - MP_QSTR_reset__num_of_shares_long_info; + MP_QSTR_reset__num_of_shares_long_info_template; MP_QSTR_reset__num_shares_for_group_template; MP_QSTR_reset__number_of_shares_info; MP_QSTR_reset__one_share; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 7aeb7f6eb1..6ca003b263 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -845,8 +845,8 @@ pub enum TranslatedString { reset__needed_to_recover_your_wallet = 557, // "needed to recover your wallet. " reset__never_make_digital_copy = 558, // "Never put your backup anywhere digital." reset__num_of_share_holders_template = 559, // "{0} people or locations will each hold one share." - reset__num_of_shares_advanced_info_template = 560, // "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}." - reset__num_of_shares_basic_info = 561, // "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." + reset__num_of_shares_advanced_info_template = 560, // "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}." + reset__num_of_shares_basic_info_template = 561, // "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet." reset__num_shares_for_group_template = 562, // "The required number of shares to form Group {0}." reset__number_of_shares_info = 563, // "= total number of unique word lists used for wallet backup." reset__one_share = 564, // "1 share" @@ -1308,7 +1308,7 @@ pub enum TranslatedString { reset__incorrect_word_selected = 907, // "Incorrect word selected" reset__more_at = 908, // "More at" reset__num_of_shares_how_many = 909, // "How many wallet backup shares do you want to create?" - reset__num_of_shares_long_info = 910, // "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + reset__num_of_shares_long_info_template = 910, // "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." reset__select_threshold = 911, // "Select the minimum shares required to recover your wallet." reset__share_completed_template = 912, // "Share #{0} completed" reset__slip39_checklist_num_shares_x_template = 913, // "Number of shares: {0}" @@ -2196,8 +2196,8 @@ impl TranslatedString { Self::reset__needed_to_recover_your_wallet => "needed to recover your wallet. ", Self::reset__never_make_digital_copy => "Never put your backup anywhere digital.", Self::reset__num_of_share_holders_template => "{0} people or locations will each hold one share.", - Self::reset__num_of_shares_advanced_info_template => "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}.", - Self::reset__num_of_shares_basic_info => "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", + Self::reset__num_of_shares_advanced_info_template => "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}.", + Self::reset__num_of_shares_basic_info_template => "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet.", Self::reset__num_shares_for_group_template => "The required number of shares to form Group {0}.", Self::reset__number_of_shares_info => "= total number of unique word lists used for wallet backup.", Self::reset__one_share => "1 share", @@ -2659,7 +2659,7 @@ impl TranslatedString { Self::reset__incorrect_word_selected => "Incorrect word selected", Self::reset__more_at => "More at", Self::reset__num_of_shares_how_many => "How many wallet backup shares do you want to create?", - Self::reset__num_of_shares_long_info => "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + Self::reset__num_of_shares_long_info_template => "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", Self::reset__select_threshold => "Select the minimum shares required to recover your wallet.", Self::reset__share_completed_template => "Share #{0} completed", Self::reset__slip39_checklist_num_shares_x_template => "Number of shares: {0}", @@ -3549,7 +3549,7 @@ impl TranslatedString { Qstr::MP_QSTR_reset__never_make_digital_copy => Some(Self::reset__never_make_digital_copy), Qstr::MP_QSTR_reset__num_of_share_holders_template => Some(Self::reset__num_of_share_holders_template), Qstr::MP_QSTR_reset__num_of_shares_advanced_info_template => Some(Self::reset__num_of_shares_advanced_info_template), - Qstr::MP_QSTR_reset__num_of_shares_basic_info => Some(Self::reset__num_of_shares_basic_info), + Qstr::MP_QSTR_reset__num_of_shares_basic_info_template => Some(Self::reset__num_of_shares_basic_info_template), Qstr::MP_QSTR_reset__num_shares_for_group_template => Some(Self::reset__num_shares_for_group_template), Qstr::MP_QSTR_reset__number_of_shares_info => Some(Self::reset__number_of_shares_info), Qstr::MP_QSTR_reset__one_share => Some(Self::reset__one_share), @@ -4011,7 +4011,7 @@ impl TranslatedString { Qstr::MP_QSTR_reset__incorrect_word_selected => Some(Self::reset__incorrect_word_selected), Qstr::MP_QSTR_reset__more_at => Some(Self::reset__more_at), Qstr::MP_QSTR_reset__num_of_shares_how_many => Some(Self::reset__num_of_shares_how_many), - Qstr::MP_QSTR_reset__num_of_shares_long_info => Some(Self::reset__num_of_shares_long_info), + Qstr::MP_QSTR_reset__num_of_shares_long_info_template => Some(Self::reset__num_of_shares_long_info_template), Qstr::MP_QSTR_reset__select_threshold => Some(Self::reset__select_threshold), Qstr::MP_QSTR_reset__share_completed_template => Some(Self::reset__share_completed_template), Qstr::MP_QSTR_reset__slip39_checklist_num_shares_x_template => Some(Self::reset__slip39_checklist_num_shares_x_template), diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 16e3d948c9..e651f064ca 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -632,10 +632,10 @@ class TR: reset__needed_to_recover_your_wallet: str = "needed to recover your wallet. " reset__never_make_digital_copy: str = "Never put your backup anywhere digital." reset__num_of_share_holders_template: str = "{0} people or locations will each hold one share." - reset__num_of_shares_advanced_info_template: str = "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}." - reset__num_of_shares_basic_info: str = "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet." + reset__num_of_shares_advanced_info_template: str = "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}." + reset__num_of_shares_basic_info_template: str = "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet." reset__num_of_shares_how_many: str = "How many wallet backup shares do you want to create?" - reset__num_of_shares_long_info: str = "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." + reset__num_of_shares_long_info_template: str = "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet." reset__num_shares_for_group_template: str = "The required number of shares to form Group {0}." reset__number_of_shares_info: str = "= total number of unique word lists used for wallet backup." reset__one_share: str = "1 share" diff --git a/core/src/apps/common/backup_types.py b/core/src/apps/common/backup_types.py index 32dd223bd5..806deddd6b 100644 --- a/core/src/apps/common/backup_types.py +++ b/core/src/apps/common/backup_types.py @@ -65,3 +65,22 @@ def infer_backup_type(is_slip39: bool, share: Share | None = None) -> BackupType return BackupType.Slip39_Advanced_Extendable else: return BackupType.Slip39_Advanced + + +def get_num_of_words_per_share( + backup_type: BackupType, secret_length_bytes: int +) -> int: + if is_slip39_backup_type(backup_type): + if secret_length_bytes == 16: + return 20 + elif secret_length_bytes == 32: + return 33 + else: + if secret_length_bytes == 16: + return 12 + elif secret_length_bytes == 24: + return 18 + elif secret_length_bytes == 32: + return 24 + # Invalid backup type and secret length combination + raise RuntimeError diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index f2ae0efc0b..a2a036b186 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -144,7 +144,7 @@ async def _backup_slip39_single( async def _backup_slip39_basic( - encrypted_master_secret: bytes, extendable: bool + encrypted_master_secret: bytes, num_of_words: int, extendable: bool ) -> None: group_threshold = 1 @@ -152,7 +152,7 @@ async def _backup_slip39_basic( # get number of shares await layout.slip39_show_checklist(0, advanced=False) - share_count = await layout.slip39_prompt_number_of_shares() + share_count = await layout.slip39_prompt_number_of_shares(num_of_words) # get threshold await layout.slip39_show_checklist(1, advanced=False, count=share_count) @@ -173,9 +173,8 @@ async def _backup_slip39_basic( async def _backup_slip39_advanced( - encrypted_master_secret: bytes, extendable: bool + encrypted_master_secret: bytes, num_of_words: int, extendable: bool ) -> None: - await layout.show_backup_intro(single_share=False) # get number of groups @@ -192,7 +191,7 @@ async def _backup_slip39_advanced( ) groups = [] for i in range(groups_count): - share_count = await layout.slip39_prompt_number_of_shares(i) + share_count = await layout.slip39_prompt_number_of_shares(num_of_words, i) share_threshold = await layout.slip39_prompt_threshold(share_count, i) groups.append((share_threshold, share_count)) @@ -294,12 +293,15 @@ def _compute_secret_from_entropy( async def backup_seed(backup_type: BackupType, mnemonic_secret: bytes) -> None: if backup_types.is_slip39_backup_type(backup_type): + num_of_words = backup_types.get_num_of_words_per_share( + backup_type, len(mnemonic_secret) + ) extendable = backup_types.is_extendable_backup_type(backup_type) if backup_types.is_slip39_advanced_backup_type(backup_type): - await _backup_slip39_advanced(mnemonic_secret, extendable) + await _backup_slip39_advanced(mnemonic_secret, num_of_words, extendable) elif backup_type == BAK_T_SLIP39_SINGLE_EXT: await _backup_slip39_single(mnemonic_secret, extendable) else: - await _backup_slip39_basic(mnemonic_secret, extendable) + await _backup_slip39_basic(mnemonic_secret, num_of_words, extendable) else: await _backup_bip39(mnemonic_secret.decode()) diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index 8b94907324..d65abcc8df 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -226,7 +226,9 @@ def info(count: int) -> str: ) -async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: +async def slip39_prompt_number_of_shares( + num_words: int, group_id: int | None = None +) -> int: count = 5 min_count = 1 max_count = 16 @@ -238,9 +240,11 @@ async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: ) if group_id is None: - info = TR.reset__num_of_shares_long_info + info = TR.reset__num_of_shares_long_info_template.format(num_words) else: - info = TR.reset__num_of_shares_advanced_info_template.format(group_id + 1) + info = TR.reset__num_of_shares_advanced_info_template.format( + num_words, group_id + 1 + ) return await _prompt_number( TR.reset__title_set_number_of_shares, diff --git a/core/src/trezor/ui/layouts/tr/reset.py b/core/src/trezor/ui/layouts/tr/reset.py index f231de3cba..e1754d1426 100644 --- a/core/src/trezor/ui/layouts/tr/reset.py +++ b/core/src/trezor/ui/layouts/tr/reset.py @@ -196,7 +196,9 @@ async def slip39_prompt_threshold( ) -async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: +async def slip39_prompt_number_of_shares( + _num_words: int, group_id: int | None = None +) -> int: await confirm_action( "slip39_shares", TR.reset__title_number_of_shares, diff --git a/core/src/trezor/ui/layouts/tt/reset.py b/core/src/trezor/ui/layouts/tt/reset.py index 3cb0c24778..f887d5894a 100644 --- a/core/src/trezor/ui/layouts/tt/reset.py +++ b/core/src/trezor/ui/layouts/tt/reset.py @@ -241,7 +241,9 @@ def info(count: int) -> str: ) -async def slip39_prompt_number_of_shares(group_id: int | None = None) -> int: +async def slip39_prompt_number_of_shares( + num_words: int, group_id: int | None = None +) -> int: count = 5 min_count = 1 max_count = 16 @@ -258,9 +260,11 @@ def description(i: int): ) if group_id is None: - info = TR.reset__num_of_shares_basic_info + info = TR.reset__num_of_shares_basic_info_template.format(num_words) else: - info = TR.reset__num_of_shares_advanced_info_template.format(group_id + 1) + info = TR.reset__num_of_shares_advanced_info_template.format( + num_words, group_id + 1 + ) return await _prompt_number( TR.reset__title_set_number_of_shares, diff --git a/core/translations/cs.json b/core/translations/cs.json index 3c43c5efaa..88e7cb552f 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -663,10 +663,10 @@ "reset__needed_to_recover_your_wallet": "potřeba k obnovení peněženky. ", "reset__never_make_digital_copy": "Nevytvářejte digitální kopii zálohy ani ji nenahrávejte na internet!", "reset__num_of_share_holders_template": "Každý z {0} lidí nebo míst bude mít jednu část.", - "reset__num_of_shares_advanced_info_template": "Každá část zálohy je sekvence 20 slov. Dále zvolíte počet částí pro obnovu potřebných k vytvoření skupiny {0}.", - "reset__num_of_shares_basic_info": "Každá část zálohy je sekvence 20 slov. Dále zvolíte, kolik částí potřebujete k obnovení peněženky.", + "reset__num_of_shares_advanced_info_template": "Každá část zálohy je sekvence {0} slov. Dále zvolíte počet částí pro obnovu potřebných k vytvoření skupiny {1}.", + "reset__num_of_shares_basic_info_template": "Každá část zálohy je sekvence {0} slov. Dále zvolíte, kolik částí potřebujete k obnovení peněženky.", "reset__num_of_shares_how_many": "Kolik částí zálohy peněženky chcete vytvořit?", - "reset__num_of_shares_long_info": "Každá část zálohy je sekvence 20 slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", + "reset__num_of_shares_long_info_template": "Každá část zálohy je sekvence {0} slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", "reset__num_shares_for_group_template": "Potřebný počet částí k vytvoření skupiny {0}.", "reset__number_of_shares_info": "= počet seznamů jedinečných slov u zálohy peněženky.", "reset__one_share": "1 část", diff --git a/core/translations/de.json b/core/translations/de.json index f4ebfe1428..41aa3588b7 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -663,10 +663,10 @@ "reset__needed_to_recover_your_wallet": "zur Wallet Wiederh. nötig. ", "reset__never_make_digital_copy": "Erstelle niemals eine digitale Kopie deines Backups oder lade es online hoch!", "reset__num_of_share_holders_template": "{0} Personen oder Standorte halten jeweils einen Share.", - "reset__num_of_shares_advanced_info_template": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle jetzt die Schwelle für die Anzahl der Shares zur Bildung von Gruppe {0}.", - "reset__num_of_shares_basic_info": "Jeder Recovery Share besteht aus 20 Wörtern. Wähle, wie viele Shares du zur Wallet-Wiederherstell. benötigst.", + "reset__num_of_shares_advanced_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Wähle jetzt die Schwelle für die Anzahl der Shares zur Bildung von Gruppe {1}.", + "reset__num_of_shares_basic_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Wähle, wie viele Shares du zur Wallet-Wiederherstell. benötigst.", "reset__num_of_shares_how_many": "Wie viele Wallet-Backup-Shares möchtest du erstellen?", - "reset__num_of_shares_long_info": "Jeder Recovery Share besteht aus 20 Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", + "reset__num_of_shares_long_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", "reset__num_shares_for_group_template": "Die erforderliche Anzahl an Shares zur Bildung der Gruppe {0}.", "reset__number_of_shares_info": "= Gesamtzahl eindeutiger Wortlisten für Wallet-Backup.", "reset__one_share": "1 Share", diff --git a/core/translations/en.json b/core/translations/en.json index a42c5d1747..3384d8ad7e 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -634,10 +634,10 @@ "reset__needed_to_recover_your_wallet": "needed to recover your wallet. ", "reset__never_make_digital_copy": "Never put your backup anywhere digital.", "reset__num_of_share_holders_template": "{0} people or locations will each hold one share.", - "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of 20 words. Next you will choose the threshold number of shares needed to form Group {0}.", - "reset__num_of_shares_basic_info": "Each recovery share is a sequence of 20 words. Next you will choose how many shares you need to recover your wallet.", + "reset__num_of_shares_advanced_info_template": "Each recovery share is a sequence of {0} words. Next you will choose the threshold number of shares needed to form Group {1}.", + "reset__num_of_shares_basic_info_template": "Each recovery share is a sequence of {0} words. Next you will choose how many shares you need to recover your wallet.", "reset__num_of_shares_how_many": "How many wallet backup shares do you want to create?", - "reset__num_of_shares_long_info": "Each backup share is a sequence of 20 words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", + "reset__num_of_shares_long_info_template": "Each backup share is a sequence of {0} words. Store each wordlist in a separate, safe location or share with trusted individuals. Collect as needed to recover your wallet.", "reset__num_shares_for_group_template": "The required number of shares to form Group {0}.", "reset__number_of_shares_info": "= total number of unique word lists used for wallet backup.", "reset__one_share": "1 share", diff --git a/core/translations/es.json b/core/translations/es.json index 1a6fd307d7..ceb5aec035 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -663,10 +663,10 @@ "reset__needed_to_recover_your_wallet": "para recuperar el monedero. ", "reset__never_make_digital_copy": "No hagas nunca una copia digital de la copia de seguridad ni la cargues en línea.", "reset__num_of_share_holders_template": "{0} persona/s o ubicación/es tendrá/n un recurso compartido.", - "reset__num_of_shares_advanced_info_template": "Cada rec. comp. de recuperación es una cadena de 20 palabras. Elige el umbral necesario para formar el grupo {0}.", - "reset__num_of_shares_basic_info": "Cada rec. comp. de recuperación es una cadena de 20 palabras. Elige cuántos necesitas para recuperar el monedero.", + "reset__num_of_shares_advanced_info_template": "Cada rec. comp. de recuperación es una cadena de {0} palabras. Elige el umbral necesario para formar el grupo {1}.", + "reset__num_of_shares_basic_info_template": "Cada rec. comp. de recuperación es una cadena de {0} palabras. Elige cuántos necesitas para recuperar el monedero.", "reset__num_of_shares_how_many": "¿Cuántos recursos de copia de seguridad quieres crear?", - "reset__num_of_shares_long_info": "Cada recurso compartido de recuperación es una secuencia de 20 palabras. Guarda cada lista de palabras en un lugar separado y seguro o compártela con personas de confianza. Recopila lo necesario para recuperar el monedero.", + "reset__num_of_shares_long_info_template": "Cada recurso compartido de recuperación es una secuencia de {0} palabras. Guarda cada lista de palabras en un lugar separado y seguro o compártela con personas de confianza. Recopila lo necesario para recuperar el monedero.", "reset__num_shares_for_group_template": "Nro.necesario de rec. comp. para formar el grupo {0}.", "reset__number_of_shares_info": "= total de listas de palabras únicas para la copia de seguridad.", "reset__one_share": "1 recurso compartido", diff --git a/core/translations/fr.json b/core/translations/fr.json index 141eeb4ec4..fc40f84c06 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -663,10 +663,10 @@ "reset__needed_to_recover_your_wallet": "requis pour récup. votre portef. ", "reset__never_make_digital_copy": "Ne pas créer de copie numérique ni en ligne de votre sauv. !", "reset__num_of_share_holders_template": "{0} personnes ou emp. détiendront chacun un fragm.", - "reset__num_of_shares_advanced_info_template": "Chaque fragm. de récup. se compose de 20 mots. Vous choisirez le nbr seuil de fragm. néc. pour former le Groupe {0}.", - "reset__num_of_shares_basic_info": "Chaque fragm. de récup. se compose de 20 mots. Vous choisirez le nbr de fragm. néc. pour récup. votre portef.", + "reset__num_of_shares_advanced_info_template": "Chaque fragm. de récup. se compose de {0} mots. Vous choisirez le nbr seuil de fragm. néc. pour former le Groupe {1}.", + "reset__num_of_shares_basic_info_template": "Chaque fragm. de récup. se compose de {0} mots. Vous choisirez le nbr de fragm. néc. pour récup. votre portef.", "reset__num_of_shares_how_many": "Combien de fragments de sauvegarde de portefeuille voulez-vous créer ?", - "reset__num_of_shares_long_info": "Chaque fragment de récupération se compose de 20 mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", + "reset__num_of_shares_long_info_template": "Chaque fragment de récupération se compose de {0} mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", "reset__num_shares_for_group_template": "Le nbre de fragm. requis pour former le Groupe {0}.", "reset__number_of_shares_info": "= nbre total de listes de mots uniques pour la sauv. du portef.", "reset__one_share": "1 fragm.", diff --git a/core/translations/order.json b/core/translations/order.json index 422d2b589e..02e9aa0f37 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -560,7 +560,7 @@ "558": "reset__never_make_digital_copy", "559": "reset__num_of_share_holders_template", "560": "reset__num_of_shares_advanced_info_template", - "561": "reset__num_of_shares_basic_info", + "561": "reset__num_of_shares_basic_info_template", "562": "reset__num_shares_for_group_template", "563": "reset__number_of_shares_info", "564": "reset__one_share", @@ -909,7 +909,7 @@ "907": "reset__incorrect_word_selected", "908": "reset__more_at", "909": "reset__num_of_shares_how_many", - "910": "reset__num_of_shares_long_info", + "910": "reset__num_of_shares_long_info_template", "911": "reset__select_threshold", "912": "reset__share_completed_template", "913": "reset__slip39_checklist_num_shares_x_template", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index b5efc792de..09732b2e30 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "8208aebbeec2ab19c0ee5e4298752597ff1b151d56482c877891097b9b72464b", - "datetime": "2024-07-18T13:04:23.054546", - "commit": "6280ef2e4266dca1080d549a9c2a7f1a74616527" + "merkle_root": "5fc3e1a642df97568b380cb551bbf809faceed0c9e5c196d4f92b87f51b840c6", + "datetime": "2024-07-18T09:35:46.769791", + "commit": "3ee259636d33b7fea7b1a841685f610c7b52bf73" }, "history": [ { From fa9e2c0702c47eab3270f8ef079cafd42f3a16a2 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 19 Jul 2024 17:11:01 +0200 Subject: [PATCH 454/626] fix(core): templates for SLIP39 checklist The commmit fixes translation strings templates for non-en langs. [no changelog] --- core/translations/cs.json | 8 ++++---- core/translations/de.json | 4 ++-- core/translations/es.json | 8 ++++---- core/translations/fr.json | 4 ++-- core/translations/signatures.json | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 88e7cb552f..75e8a68574 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -643,7 +643,7 @@ "reset__check_backup_title": "Zkontr. zálohu", "reset__check_group_share_title_template": "Zkont. g{0}-část{1}", "reset__check_share_title_template": "Zkontrol. část #{0}", - "reset__check_wallet_backup_title": "Zkontrolovat seed", + "reset__check_wallet_backup_title": "Zkontrolovat zálohu", "reset__continue_with_next_share": "Pokračujte další částí.", "reset__continue_with_share_template": "Pokračujte částí #{0}.", "reset__create_x_of_y_multi_share_backup_template": "Chcete vytvořit vícedílnou zálohu s {0} díly z celkových {1}?", @@ -686,13 +686,13 @@ "reset__slip39_checklist_num_groups": "Počet skupin", "reset__slip39_checklist_num_groups_x_template": "Počet skupin: {0}", "reset__slip39_checklist_num_shares": "Počet částí", - "reset__slip39_checklist_num_shares_x_template": "Počet částí", + "reset__slip39_checklist_num_shares_x_template": "Počet částí: {0}", "reset__slip39_checklist_set_num_groups": "Nastavte počet skupin", "reset__slip39_checklist_set_num_shares": "Nastavte počet částí", "reset__slip39_checklist_set_sizes": "Nastavte velikosti a počet pro obnovu", "reset__slip39_checklist_set_sizes_longer": "Nastavte velikost a počet částí každé skup.", - "reset__slip39_checklist_set_threshold": "Nastavte počet částí", - "reset__slip39_checklist_threshold_x_template": "Počet částí zálohy pro obnovu:", + "reset__slip39_checklist_set_threshold": "Nast. počet obnovy", + "reset__slip39_checklist_threshold_x_template": "Počet částí zálohy pro obnovu: {0}", "reset__slip39_checklist_title": "Kont. seznam zálohy", "reset__slip39_checklist_write_down": "Zapište si a zkontr. všechny části", "reset__slip39_checklist_write_down_recovery": "Zapište si a zkontr. části zálohy", diff --git a/core/translations/de.json b/core/translations/de.json index 41aa3588b7..dc23f912b2 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -686,13 +686,13 @@ "reset__slip39_checklist_num_groups": "Anzahl der Gruppen", "reset__slip39_checklist_num_groups_x_template": "Anzahl der Gruppen: {0}", "reset__slip39_checklist_num_shares": "Anzahl der Shares", - "reset__slip39_checklist_num_shares_x_template": "Anzahl der Shares", + "reset__slip39_checklist_num_shares_x_template": "Anzahl der Shares: {0}", "reset__slip39_checklist_set_num_groups": "Gruppenanzahl wählen", "reset__slip39_checklist_set_num_shares": "Share-Anzahl festlegen", "reset__slip39_checklist_set_sizes": "Größen und Schwellen festlegen", "reset__slip39_checklist_set_sizes_longer": "Größe und Schwelle für jede Gruppe festlegen", "reset__slip39_checklist_set_threshold": "Schwelle festlegen", - "reset__slip39_checklist_threshold_x_template": "Wiederherstellungsschwelle:", + "reset__slip39_checklist_threshold_x_template": "Wiederherstellungsschwelle: {0}", "reset__slip39_checklist_title": "Backup-checkliste", "reset__slip39_checklist_write_down": "Alle Shares notieren und prüfen", "reset__slip39_checklist_write_down_recovery": "Notiere und prüfe alle Wallet-Backup-Shares.", diff --git a/core/translations/es.json b/core/translations/es.json index ceb5aec035..c5de401142 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -417,8 +417,8 @@ "instructions__hold_to_exit_tutorial": "Pulsa para salir del tutorial", "instructions__hold_to_sign": "Pulsa para firmar", "instructions__learn_more": "Más información", - "instructions__shares_continue_with_x_template": "Continuar con el recurso n.º {0}", - "instructions__shares_start_with_1": "Empezar con el recurso n.º 1", + "instructions__shares_continue_with_x_template": "Continuar con el rec. n.º {0}", + "instructions__shares_start_with_1": "Empezar con el rec. n.º 1", "instructions__swipe_up": "Desliza hacia arriba", "instructions__tap_to_confirm": "Toca para confirmar", "instructions__tap_to_start": "Toca para empezar", @@ -686,13 +686,13 @@ "reset__slip39_checklist_num_groups": "Número de grupos", "reset__slip39_checklist_num_groups_x_template": "Número de grupos: {0}", "reset__slip39_checklist_num_shares": "Nro.de rec. comp.", - "reset__slip39_checklist_num_shares_x_template": "Número de recursos compartidos", + "reset__slip39_checklist_num_shares_x_template": "Número de recursos compartidos: {0}", "reset__slip39_checklist_set_num_groups": "Ajustar nro.grupos", "reset__slip39_checklist_set_num_shares": "Ajustar nro.rec.comp.", "reset__slip39_checklist_set_sizes": "Definir tamaños y umbrales", "reset__slip39_checklist_set_sizes_longer": "Definir tamaño y umbral de cada grupo", "reset__slip39_checklist_set_threshold": "Ajustar umbral", - "reset__slip39_checklist_threshold_x_template": "Umbral de recuperación:", + "reset__slip39_checklist_threshold_x_template": "Umbral de recuperación: {0}", "reset__slip39_checklist_title": "Lista c. seg.", "reset__slip39_checklist_write_down": "Listar y revisar todos los rec. comp.", "reset__slip39_checklist_write_down_recovery": "Escribe y verifica los recursos de la copia", diff --git a/core/translations/fr.json b/core/translations/fr.json index fc40f84c06..6c245ecaea 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -686,13 +686,13 @@ "reset__slip39_checklist_num_groups": "Nbre de groupes", "reset__slip39_checklist_num_groups_x_template": "Nombre de groupes : {0}", "reset__slip39_checklist_num_shares": "Nbre fragm.", - "reset__slip39_checklist_num_shares_x_template": "Nombre de fragments", + "reset__slip39_checklist_num_shares_x_template": "Nombre de fragments : {0}", "reset__slip39_checklist_set_num_groups": "Déf. nbre de groupes", "reset__slip39_checklist_set_num_shares": "Déf. nbre de fragm.", "reset__slip39_checklist_set_sizes": "Déf. tailles et seuils", "reset__slip39_checklist_set_sizes_longer": "Déf. les tailles et seuils par groupe", "reset__slip39_checklist_set_threshold": "Déf. seuil", - "reset__slip39_checklist_threshold_x_template": "Seuil de récupération :", + "reset__slip39_checklist_threshold_x_template": "Seuil de récupération : {0}", "reset__slip39_checklist_title": "Liste contr. sauveg.", "reset__slip39_checklist_write_down": "Noter et vérifier tous les fragm.", "reset__slip39_checklist_write_down_recovery": "Notez et vérif. fragm. de sauv. du portef.", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 09732b2e30..369996d9da 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "5fc3e1a642df97568b380cb551bbf809faceed0c9e5c196d4f92b87f51b840c6", - "datetime": "2024-07-18T09:35:46.769791", - "commit": "3ee259636d33b7fea7b1a841685f610c7b52bf73" + "merkle_root": "d97ec488f8faf5330f885500b710f6df32e28021f14ee7384e56d10629296cbf", + "datetime": "2024-07-21T11:28:28.657421", + "commit": "81f35c21a49b69f706f03232e5fdfcdaeca7498d" }, "history": [ { From cf69a3ca5def55a1e2414bf9dfc00e971485ddc6 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 22 Jul 2024 10:24:39 +0200 Subject: [PATCH 455/626] chore(core): update fixtures.json [no changelog] --- tests/ui_tests/fixtures.json | 304 +++++++++++++++++------------------ 1 file changed, 152 insertions(+), 152 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 2418485d15..49a76c6550 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -763,12 +763,12 @@ "T2B1_cs_test_recovery.py::test_recovery_bip39": "986b3645dbaaebc733e0aaf2c129b986a4cc573248e6a7ba7096d03d364b92cc", "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "76c051617b6212b5f53f676c29d55fd0852218edaff74017cda4ff3e791082cd", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "f4b42fd8aa1d0c1d06f52a903a26c244039c4f2c3aa3d577266d0a9acfbfbaf8", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "ddbaf440d10d93149c9226a5a0be7044d5c9982bbe2bfcbaeefc4fb0c70e4239", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "92d8193ef1b311c1dc4ebde518d47e541ccc6da2c59fd2e17794a8dc52de6c6d", "T2B1_cs_test_reset_bip39.py::test_reset_bip39": "fa1f66ecb995b4152fd0cc4e4670cfc0f2b5a6c632a2645d1f3d01c05f7a037e", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0ca14e255f36cb736fcb3d90024fb2c00e346313dcac2d9e20c379368e60d4a9", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2157c3b2777af219ee4cf1358a15b6aa0a9a1bf629d4bff0586d2848344a2baa", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b7337d95882b4678f27a4456e9338d9760b0870ac559eff45e444ac48ec1f286", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b53fd9a6108cfe2492354ce0b7b78c2760f82303c7f0fc0d8ab114a2410b2696", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c480270210f7216a338c7934f1244b22d4e6e1ae305aece94141903fe428cac6", +"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "ff66d1724b4d0bb82237738eb9067659d37dcbed67014964c7343c02dd2656f4", "T2B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", "T2B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", "T2B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", @@ -1999,10 +1999,10 @@ "T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f5c22f27ac4763b9b297f4bb38d6696f31a4afec5be882b161df0a31a81a328f", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8e3d881fee9ac46718dc23704e752d7c4b8e54b407bf5ed5b59e0d6cb34175cc", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "e6c2d0308e60f9f6e513acf588f1115422d2c16148a3211092e6cf4f725324ae", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "12b37b66292f1ac23a54a30a3e44e389e4ec701937e7e960b7c6c2130bb9c61e", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "77a671dea4a9cf946ad46bd4e7a01ce4103e77e6e02ffd7328255e95981d0cde", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "35766a17e9be0c8ed841ae35427224cd26bb922784933fdeecfb42bb85393acf", "T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d52930a2db4d38ea38cfdad683abf5376881261e08b3824ea9bfb0c714a972f6", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "db834ebec0ba4acfd9c1b036cd4f9b60a5badd207592d1232fc176d3e12250c9", +"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f0c0740e17a4fd05df84a7eec1678225c21e1bb0c3cabca7a2ceeb98792eb8be", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dad50802915de6f0c59b24ec5d9b111c1094674fdb80f26847683d333e13a20f", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "01007597009a130457cdc28bde5af309c0caf57867524cd48f6a41954c292c57", @@ -2011,10 +2011,10 @@ "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e8b1dd1ab01b58f5706f704311f12692b4093961032aa3d1bd4e9ddaa14b406c", "T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "25f56d53555c7055b1dbf580ac5ea4179fc40efc08ccda4d773bf99023d3e4bb", "T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fb4150a9ef686dd18767d2a12a4140a7bec10510519789fd010d1b6c5ac8e244", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f6e8b9e670281f7648d6f3480f1ab1ba3b72a0543fe71975342412ba76582c86", +"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5a1c92174a8ce88f2a73c5ede6209873673ab4bcfdcadd7398d6d8e92a844d55", "T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "76b0638ea2096dbf61c965024164b9951e8f1d2de6890846998b1c87b39f3c0d", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "4d319f20140a7dd26e8b2d476dce318baf4d9350d2275e738a0ab06555c82d4a", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "fd4d4283ad318a4ec7cfbf1967501946ec48b8790fcf61d529edf30d537c6a7e", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3da40d4f2b11ba1fef85a1995197b8c3f342340b859b06c5c1c0b0676282df8f", +"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "86ed2ada8962ebe2d11ed69786dc17b1eb281e3796c41283f028f3d5340cdfa2", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8ccf16649aeac16d0845fd44fee2a1dbd2b223d367966ed15878478da43e5b92", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d737f4992a9b77b6f1e942ec780ac06eebc1d222622ab93071c90e7c0092d6ed", "T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c0cbbe91fed1a92fd632ddc86618f0e30ef58d16e931990cc0735b47362ddc08", @@ -2226,7 +2226,7 @@ "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3043098b4a0502e8970f0672f3bac8285cb5ff501f1462a0212c924739e77554", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "57c42749f5bc7753984bb8cb726059b7ca71ab3b58f1a1c09a140624b43d08b6", +"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "51a14b22367d3971f8528aef44fd0561e71ea2e31e2706eb48dabe15279863c2", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "95115ba157f4bc100649ad6f32cd23a1c202685b57050df21f9880fe3f17ffec", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "45958fd14a15ead3e7bc065f619b9c7e6bf7ccce6b8877dc1fe78ef76c0645ba", "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "9bdf9f49f613a7cc622ff29045f1506622b11bb958bfc7d662e138054b95cd18", @@ -2275,10 +2275,10 @@ "T2B1_cs_test_protection_levels.py::test_unlocked": "5d5cc20901d361b4957aea0e4c44a630db7ab8d7de0dfac4bc9058ecf26b6fee", "T2B1_cs_test_protection_levels.py::test_verify_message_t2": "5139e2170feab7f553d3128ac0e03582c4d1417c6752408d1637595ae3bcc81f", "T2B1_cs_test_protection_levels.py::test_wipe_device": "a22ffe67f254e33437a3465b85546622ac1c01430eb598065f0fca6e8d4fa530", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "8a5216a8a84bf11a22bc76141552255cbd22ed3a43c7909d1b275e159bd7b798", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "f61f33ae0feede62980fefc70eca85ac6e7c90a3c75849c6a3fa861527ff1973", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9cb3bf7a2aab051eb5af89797bde9af8148e6c42595fa20e3db5992b2b1a956f", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9b38bd9251be67c08c9ad573ce620f06c5e379ac92a7ec42366484aa3e1cb8a7", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "cefed0c8e56a59812d88f5604ad46379ad13b2f2f16e4b135c92d70c3b18bd68", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "61c26e7fd7f212dd781b21afde9bf08566d43cf7189a9fae49be1b0bf8a6a0d2", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a4d8b45720afa77c78e365e34ee726a2e9ca88555e30b6cdd98d8e150f2516bc", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d4cbf5834c82d85b997b26eabdbc26460ec845dca5633bf2a683fa8c0cd3341a", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_clear_session": "dd3da407a5324351fa6cf3a7e52b234671d47202c07867cc8fd00fefa9ed33be", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -7812,7 +7812,7 @@ "T2T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "6e13f1a4ae2c8c751ed374dfcf4f946f0eb27aeb25875dbf39ac63dafd156176", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "596bd0ffc488dacf96af65ccba3fa033b8d5ae054d732f9f521bd2d470799e14", "T2T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "f0e96f27fde2369b8433ca31fe8d5cf6fe3cf825ee2916ced9d04f1536517291", -"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "08021d1c5f55628ba04814e63e2b33accfdaf64ec63a3459017ed99a2f04794c", +"T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "4c40d167270e4917c6e8a94506355ac0c8ea51f27e2b872cd652478b4e313737", "T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "521d8367e1060b75317275890ecd98962eb7ef81d9ba31fabd789666353f25b7", "T2T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "6d511a4276929733488b755fb357b79de4e5edf15ce5d02cedb2e0d95055449d", "T2T1_cs_test_lock.py::test_hold_to_lock": "e211bb4badb78d5727f3da5f495cee2861206df1604125a4bfce0c2c2f417066", @@ -7847,12 +7847,12 @@ "T2T1_cs_test_recovery.py::test_recovery_bip39": "f2166fb9da2954b3ba3d45a8387ea2f54fbc5ba368dc8a3bae052605da85422e", "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "00d3300ced62470ecb0cca321dc2d51815c420ce7f638f30d00d98bf2544430a", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "2fd13d2bfec6a17af56fff6e74298a1d22eccc162382909741c4f3153887cee2", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "cb2125ecd8d8f508d665e84c3c14a872dcb9600c64cc0b4888f739d31505357a", -"T2T1_cs_test_reset_bip39.py::test_reset_bip39": "bc380add2c1c832aa343fc14a854b97d714b5ec8b88813fc2d94f9f71d067618", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "f0ddd5bcceb74cec9cc7c399d557c40cbc01037ec692e78690624a68df5c8564", +"T2T1_cs_test_reset_bip39.py::test_reset_bip39": "5674d27b155c782f45f5a3f5c6cb8b23f581b2346372cec20b3e36e7e944521e", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "bd5e78258e3530b21730dc2a5ca021ebe3a0879bb7fdae9819f43e14b2985c40", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5e459400560e5e8e7917639366757bad7adfa7627874bcf3f531925e643043d1", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d755058c2204b60ee09c4052b43086aa9082323ef43eb726023a83508549b33d", -"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a0657a9c16086f52a05900ac7f8a46347e1e8989e7fecbe80e0799f0fedcf48a", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "28e814f0bc986db908ef6f3734b30cfb7141c94b6ae35b4b4226c22fd4644d5f", +"T2T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "01f23fb023325538bcb4d51e650d162d5d6321df76600569d6b1fcee606c6b85", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d759ac31bf3312c03d63a5123f871c7a54803801f270261691bb4b49cbf5bff2", "T2T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "f0fa24c4e99e743f4497372cf8ad113b47ae14818692a9e866e5e84a1de36fe3", "T2T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "47b4aef34a49209c22585dff4dd097fc572587f90d4b30b947df7f1f4170c9e5", @@ -9168,24 +9168,24 @@ "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ccdfaff0309c1f71869c7e8a16d6130c31145c348b44dbc8182f1949a0aa5b99", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "4d88343f9dc26bc707dec9e08b937466c3ab81cf20046dc326473b2dc24d1b52", "T2T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "39ca89892eb3fa47a5f52e2a6e51c535510dd006d26097ffcb846fcc9dddc3cf", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "6a313384e06012b69902183a719c1fc183aab5731f73a6db709ab5861fc35fbc", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a973c359a7f6682ebd7ebd67a748cdcc0259f998f4587489c1e5695e7b7d5e1f", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "00a9999c63ba2b3ea8693948610629dd9a7724a176e0ddf0dd899cbf29c3d04a", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "17271c6db30d2cedec5bec6c1cae8200506263586f0fb66388592196007c819a", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6108e869fb312577b0ab1747398968e1be36a9501c2f6c2778751777bf15f8f7", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "7158fd85a78a045827e7fadc9d1354f5f6e80ccbce97bbd7532555a77a3f3d36", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "532e511edba6547cdf1e039412b7a7f0349fc69f300bf73055449b6a7f574f39", "T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "4c6889972500dda32563f8dac4a2369f8434b0cbc96cd4abe7eb69463853dc2b", -"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2bfec3379e613b577a4b83fb9403a63e3b99ea9609162781e15dc28b2cdf5f4a", +"T2T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "18c70303222d709ccdfc89f9aa0863d549058156d66985028946e891d518cbcc", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9825a0641aa5ea58ce49ab160abe1933303eb77522475bedc0855e3520ac129a", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "78358bda21cb523eca7485ee80c111a13a9b0a6a58088fe24885a1340f014269", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "449cb52f0e066f5c43d9240c0c64fb20948826509bec30b721e2058ae05e4a21", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6f7d67663f67a31cd281c3589fab0404d06fd51b34eb6b44dd77cd79e552efab", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3367efd0558ecab7a8dd8c3376c699f2a087e6fa2bc6dddb5d7784f2f69cfc9e", -"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "f66935d1d484133d205a7a972e2b69e0e16077624a9b5dddc62372df21cbb08b", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "3ad8cc7922034fc1ddf47448daf84fc743d068ad2a95c4bf0d04bb7d77bb79d3", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "460a5a40be89fb31b68193e242e48206740a5c04001f97ee32129877205c50ab", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "14cb6127b54213ad1aae348d49a85bb913033e482357c4d5258e09ed344b949c", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1d3766d2412b01485389d90e77505cccb4eba59f6525d243e4293f10bda08a00", +"T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1d7db2600a834f7ea4589fd60718246c09fd6f5b60d8a31e11fe2969e028ff70", "T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8a16b2eb55eb3c494e4d055ad005e1ce01cfb77f7367ce5acb2bdb3613362a2f", -"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5b60db6bab9b1cbb5fb4f8f79ee3a57224a55b26a8e62104be9cfa253d8d6509", +"T2T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ac4a1864e9097149f576755930d099e0a116422de2a7337e7c2191584ff81ba9", "T2T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "08398d649b2b7ab236185f27761179a6573c2819fa461827cdae38fd79b2a5a9", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "117614ca1209de5072de505ce028e67ead29027e296e5bf527ffead12f13abf7", -"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "ba1ab7768d2f9e0f4374cae8a97ead443d7c4aae1823b4e835c847231fa28070", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "85e98d39b14402513cc31e251ca776204e371258a9928d7f0c3fe2bad40a9094", +"T2T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "52dfe731105f0b19bba3f17fadc8b643f481dabb5dcdc33ee72109e9c17d6f3c", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "98b7b052da22d36e70218b9733a798030870e4a0f10e079c2f728f5f29c0a153", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "7f8f0314ca3ec2f367e5cce33d5efdd1974bc6f9ced4181f4096f600adf815dd", "T2T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e7052591a07ad5a6a94950f3fe1177fe14323f6b6fae84de6794f5ab63f6aba0", @@ -9387,12 +9387,12 @@ "T2T1_cs_test_msg_applysettings.py::test_experimental_features": "25dfb6e5dad6ac28aad7e4cdbefacbe762086649560bcb56f51ccf677fd68a19", "T2T1_cs_test_msg_applysettings.py::test_label_too_long": "1b0c0ad21a8089c6441d577f0d15ccea46d9b2d7f77b8eb50c3d952dc0d7114d", "T2T1_cs_test_msg_applysettings.py::test_safety_checks": "dc69395563169ea54eb25f5b05f4275abfc910de580ec195d7fc9f75645db635", -"T2T1_cs_test_msg_backup_device.py::test_backup_bip39": "212688c449a822c4dc18990dd13b3c0504e93b9bf2580c69e49c77a7a2d9212d", +"T2T1_cs_test_msg_backup_device.py::test_backup_bip39": "049ac42afc7ea488b499628fa948c88da2b4671985bafcda62380952873e2d77", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "cfcf6be682bfe561867a3c391608d3f8371fcc98b4920fd9b77f654f1792e8e5", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "7c76aa3e04d9de9926b3c1b3edeb980b0beeb2fd94f4cc64a96307e7bb3255ff", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f8ba8ab62fd58174f9fbe8c2b3e22f72b93be3b8e5008b60882247e9148f4cf2", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "6bb270520a4e999a02b2ea3b2759630d5285c65b0d3cd3b03f1ed27962c4564c", -"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "7cf053c7ce5e76b796e64d03d843e3921acf53abffc252e76d28bd2f4a97429d", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f92147d2ff4c756139d7d9e276ae41e57d5102deaa1dedaabbf05c1eb33774ee", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "1f8eaa7c4790485ac86c9e6178516a6c639ccb03dac8ace64aab0655407a4dcc", +"T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "52ae9c7027b1080dd26b105c781b588ce87f1ddf544bd910fd5114e395bb1647", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "3558f1ddafe6350e8877838eefbc7a37fd11254814ff1110e487c49e0d709452", "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d5ff212f9789ab6e5c6b7de5211262b11724ef7761435a095acf8809b8128c42", "T2T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", @@ -9443,10 +9443,10 @@ "T2T1_cs_test_protection_levels.py::test_unlocked": "b26429bc0d7a5e1356f97b7c577eb1df0dd6af527ab445f4e08bf79cdb654ab7", "T2T1_cs_test_protection_levels.py::test_verify_message_t2": "8c40df7255a897dc11da0ddcaa5c74a5e24e1d53fa92874d3bd7ed24938bce54", "T2T1_cs_test_protection_levels.py::test_wipe_device": "1b1e26b8af57813dfb5fb69a44ee9473c0471430ef69616fd46a908991704209", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "a96e30bf089d685b3a59de5c0cfb787d0f01b26a92aafe2c9e57a9996b7eb058", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "48f0aef6f62c06077fdbfd5d16be2a148b588ff5366a7c9782ad2fd8d88cbeda", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "554393895738420e0ffc1555abb1eb7cb8eb6eaa7f921431555e5c77a7af30f4", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "901a27ed898ed7622bd8c26a2b0d00c82c2305c05df9272fc0700a340fbe2674", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "50e5a98d3c7b9bffcb60153c241fc4c90d51c113ec04dd9cf3e2e61ed8b745e3", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "0a2486beab2317d2c2ad317d33d803301af2e5efc16ff6a63061a922e8070a51", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e991c45da9878e6a1d4d78d73cd1e6b1bce34581826cb1769921385886ac698b", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d6ee4f8c0829daf0ef04bfa055160ae27bf691d1f5fbf138706c6ff2585e17f5", "T2T1_cs_test_sdcard.py::test_sd_format": "589bc39a9dfdc478d92fbe118e7df14f24a3456965e5cf8a40210d198d2cb6e6", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "02cd293e8d502f3354cf35a222b8b7b5eb3a9c10cc41f631772215d8acd6e313", @@ -15331,9 +15331,9 @@ "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "aac7d93be05d1e23d628b0758c661ded3ca270e6c785084e9761d85e28e9d93a", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "662fdecae7643270921e0c96105ad326d5421693d0f92471494f4af31a31e751", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "3b225ed7b9336d6269b3f9080014e73c43fbe053ea87635582907b5dc2a7d3cc", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "18aed8d421ad8b126efc063aee92f3ee696067b06fe97b700c389ae391009aa9", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "25518bb77ff251bb1038ab28b29318b3cd2eb0352063fbe502052aa254ba7dc5", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2cbaef3274b2b501d589e798628bf8288d069223c42e5dd300bde1c03b93e1ff", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9031ad2fa055e7429226c823c09221e3b7386a03838d8b34ac4974a04db8aa9c", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "df8ec8be03b23f9b05214deec6b515e11ef85f64896237a729f35b8f1dcdaddf", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "26b92c6ca41c2ccf46f1c094026c91897c8022236aca9f71f58df0720e9709d7", "T3T1_cs_test_lock.py::test_hold_to_lock": "1824eb2d9867a82fb99174bac6ef8a906a0d6bf11381e0939091fee8a9c10b45", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "c0484f9fc8330a6b20dc91301055efae626a5e76ec9e7468dcba419d32a0f4cd", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0078ab0cc308d8959b25975908abd5f850c12fa48e59fd060873312acac0caea", @@ -15366,12 +15366,12 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39": "45b95e8389eebe056b08b05dcf4551321994956f720a140adf2c3c51a10fde02", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "199a6bab747546f9f14783057931320aee5f353c1ce2e09dfa32448501931719", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "cf579f3b7f6b7e218a34e85e7f61287eff49933526aac1d6702cfa114d15ee82", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "6cea30008292a5e8b72f59117d93b093fddc4e819b78ecaf71bbd2b3b03c00a6", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "741569335759843d3cb80efecdd1f5e9a3913e257fdd9d83dd25a5ddbe08f60c", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3f08946972f3ac7d3986fc6e52252e46fbbfce4c3b25f259fb2afa95568fcb1d", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "924b9fdb9e202ccba413c83484310e4b6d49a050797a6ac9cba6b408dc9e518d", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7215f4097b1ff8e8c4621aa9f1481703c6147c2785cd92c0c3e0509776374f70", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "526513add54db3291cdb8f2c1f6bdb9be3d6772116912b4d5703966b565ff6b2", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "56ba40e91b35cbc2d96231b0cc3bcf920bb0c9be622be789c6be447129b708cf", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e5e9d0a86dbbcfd26bf1f9d17bbba24b4de69440314d1ebd1fc7f78dec97a131", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "59490382e5026fa50d16803372d5d0b5ce487e093a3f6fe9c72a0a117b30ccdd", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "23ab489a042c20549601dbce1987065132bf11cfc9bae66ced84bf7ce82a947c", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f9c80c4f6c3eb28e83a57a04f4a1affcc0956a14e772c16c1363df211b9aeced", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6adc38c7b058994cda3e904674c0f40f30515a03068fe356e0633618c8cfce3d", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3f2cb64c585744ec1d3b2115e53663869aaf8005e3371a681de72d32a37f3c09", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "945e5b4d0f325e3da850dc37c75b175458c4f8d44a50adfac540f171277e04f1", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "6c0fdcf2d29233b9bb4162a1e42a261196b99a3f0aae065e29b985607f3fba5d", @@ -15415,12 +15415,12 @@ "T3T1_de_test_recovery.py::test_recovery_bip39": "36cd09c4e3f35db162045782e30483f65bb078d0cc6ef8b253a8366cdc3ed81d", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "243fe1e3318810cbd64979dfb1c56050068cdce08ebf6f2929c2a2e6f4f9fc35", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "64ac5fe34475660731751e37f2e22e92c40e70b0bdbcc1dd749c2e96f118abf4", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "f777a0875e73b00d7990ae2032f410c6cabc82a23bd5595856390bb2ddc193e4", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "099de9e777e117796d9f55437d00e5edbaf4f4f1b64d249031b0549856b13efa", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "79fec4c63285b7abc909e1468ed83284ead35eaf1cbb0f46bf962da63bf5bd64", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c34695e1386509934313f1fab77b51c86bcf412e63d9327dfbd2cc616073ccaf", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "61a8f813635e4c118033cf41a54835aef433f7b08fbbd69eb09771c621ff54b9", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "7d8727ae73c079568f14deda90cea2fc499f46ff03b7bf1cd17f792b7171bf83", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "0ed3acb27101f11906cdf5f1715f31d251ab5547a41b1a7b4d0f0bf918d774ce", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9979d59977efba077cff44b5cd929ad13b03099f23a92b842c4c650a58832706", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ae62f69464e452a92fbadf1487bdefb1b7b33c80ddc2d622be3b8f91eea4a03d", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b26e18ad203342661929ffa5ae183d716df186ec5e82267063cd5de098c21846", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b6e655e54ada9b19245920eeffe2eb757512c80dcd949d318a06e77d205d1e01", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3c731b042fc2e0b2f86391320f30937310cb6dc147057691bc14f52b73e597d7", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a28905faec2a54e67df6f9c67a94dd84ed76fc976ca4e8b60bf2cc7f6ce3415c", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "130b0259aec5a8d067c8e826b590bec66eecbfc1d8b30bbdee979c3cfe21935c", @@ -15466,8 +15466,8 @@ "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "6525814b878b92b25d5a86eaab07071ddf5844d16dbbae590085572fc7185f9c", "T3T1_en_test_repeated_backup.py::test_repeated_backup": "32f1176afc86d4930ef3fbd7b222ba9845e32f80aa42e302f9aad5e63cd812b8", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "a0774a5569a01ab853104483b002fe85e1b8e2f979e4516cd9b532a2d45cc977", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "85431f3e6bdfc696e4c6bd574d43d03fce720fb488f868d60a7a8b9c29bd5247", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3f63701cfe0ff10fe4d5c49c877e27879891cb7c42b19bb4d07d163ed7d0750a", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d22f019836e08486cf0d4dc581c79c6eab47599a5f5613ae6aeb7c29a79ed439", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3b445d647b09b0d032ea169b59608c0d5051dc0c032f3ea0ee47049087f0a91e", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3b50655712f125adae01ef1a951db2ce33ce5587f1d0e70f6af6ce5a61e3eedb", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6b231fc2cd69cedd33d2528b57f8136a5ca3b9c43b698e3ac20110ac31e6ddb8", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "83dab8b004b7ad2dd1a0d6f56e1661ff0a25bdc18dafb2f09d339b9eea0dfdcc", @@ -15479,8 +15479,8 @@ "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "8c9e39c583899fe215ae1b4e71d66ba42181246fa976da63f4bed172d1c9bf76", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "f3e0e3f77a9bc5e247914fd423087efba68434c7e15219c8b2b2ea76d308c140", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cd8177dd73c1d2c9a67c52a41411f70306dce132350aac62ed562e8fe8d722d5", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7c493d42115f2e8ba1edbeffeb2d87f9fbdd646c37f5500c7082f71d37b34ad4", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "809ae3f75e4e4eeb61256b7f0b7c5354e362ca3bface379e5f18e63d4f1a4402", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "93b2d6699297680a491576955854d4819b0d9322423c2bb4c52b110afc6dd3c9", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ce88c67bd11834bba68e564c2641a3eae658b995e9437229bb763b88eb8ca8ab", "T3T1_es_test_lock.py::test_hold_to_lock": "22121f35ab8ef5850185109c604bf540c3a7691b7a61c46ddbebc78e36e59ae4", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "aa473da16607da4aa0ca88c463f5bffbda15c8490646d33bddcf3970ca33dab3", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ed36652ac8e7dc0f66d55652b7a75d86af9487dda7519f761a332566e37f9d0d", @@ -15513,12 +15513,12 @@ "T3T1_es_test_recovery.py::test_recovery_bip39": "35e4c2afa5a73759e1cfd102bbedf3e8832b7335137c2aa647e9f1360cd42ce8", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "579915d32e27bcdadc3f4e46fef1171577f49fb9e36339f1fd7c8df1f4eaae8f", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "d092abc369a9a86d1b98731d6a86d37b92895dc2fc59fa89bd6dcabf68288e7b", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "52672e88307c5e5ac4d333b291c3d274ecaf2b85804e3038360a49a54a8584a6", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "a3f4a36a101bf323af6f123e47a8155090ad32aa8482ffdd78354e3b21b9d5d5", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "be3ebd0f242fab2389e6731d1ea5b16a4056cd02230b3b03c12ad1320ebabebb", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "36154af328abdbba03d29323c27a1be3778acf3a9e4a192b57e9cede707533d9", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "df14300374cb11ec251dd635193a0d7cf4ee3d8f7409ab71da2aef6c64a7c723", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "589a55d85639754272e27fa369b780e16fed0ff179957452dbf7b883430f8a43", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "96b66cc1944ea191c75e525ad7cee121d55627634087a7a845afa787da500d05", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "bc71dbd136fcae1e61e922398f8fd5734ae11e954ec16f09272390f5015c8cbe", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f70bac5e99513c1c670a863a5b000fc80f1c5a3d1afc49424a495183486a50da", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "21349a580c60aedbea800316d026dc2c6e3ca53584e9590f4ac9314b64843aee", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a03cfae53a15478c8d7a73842059eed8d2a3d5bd8b287cd97a3483dfedecfc44", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e25b10ab63c55f12fe03eefd50111a9aa918b21667dd83426dc045634f9395ee", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "228265069b1eb183eb0ead8aacb1da337eda6dde9ed5c787e1f6d96d392f334a", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "547c7a970d5dbce28c9d46d54ef64a3a9de34ea4d71477a936d7d438170b9144", @@ -15562,12 +15562,12 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39": "8b277d4eef70dd761a740ccc3d543d8a2e6e9826f46d95619b794b065ce12966", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "34140a34950d35276fd45166cababfa52cdd5494741e27bd8b99cddcec99ad65", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "471d84d67e4c09958a078a09554251013967a603dc9be3e08ef35113c0e31b4c", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "e289661a03edf75a37023cdf13d3d7f2db7a09756ee26c2f1e9c1f60f01bb803", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "f7c125728e0bbf6e7f138be7063b5b76f953979394f0ac5b402c5ef6a47c2d0c", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "02f84e41630064450fd3df6a35e385cbd857f9e705a5e5ccf70b22cac1ce1f51", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3ed54b58ac12dad63cfb294a4143f23d8c9a94586116f6dc545f7a2a177aca89", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "39e2463b3b70e9a5a9a1e643e1a2f61f41e431eecad1ed487f9476c6c36d575b", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "e41549f4168ebc0066883ec27a69721013492ff86b95b0ac00907a8cb548e0eb", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "dd996b1b053773a723611f32b3c3a9f47428ffab60e6f2a3e8cb762bcd7383f0" +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "8dee6fcb6cf9bffc06c450abc3e427cceb1531757d19459323c2cbced6832c1c", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a51e3c2693ddf0ab3f1369ba80dba5dbd43a4da3ca5d9a8db0478717b9ac28f0", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3b1488413f5e2c86ab1f9e02ebd3b0d6827cf785ff414a689511109834801673", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "41e6e319dfc6de8229b7b453cfdb6dee721dc329175b5755aca691f31da4d7e2" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "5cfc60601705372057cdc48cb73a2bfa596c586fe3214e20bb68ac6859c54537", @@ -16579,24 +16579,24 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "145cc89ef516b970f2b08e3f9b33f8c47ec21247d35c03072d3c2761a8c732d4", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "98053a571ac2fa884d422f08b202d3fa5866500eddb477fc00d76128822da405", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "bdbc7697a0d323816940902228f3895e6837b6337fa3f56afd58f2f101c7ea95", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "15a0fc0277bc6a52a2cacd3d97d1484ebaed87f47cc672e5dee95b6eb1c8fd08", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "fa3aea6a28c4b350c3d266dd6174a2ba8ff568f504eed1ce8f7328439834754f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "947e51e1898767a91aa47b87d55625fe433fe12a972fd1bf28793f4a026cec80", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "ebabaf017423fb614c446297be587cdebfbb0f093590a526dbcb96a009ff7797", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7c275effe77c93c4d56cac6ca507f4cf206586e99fd5a4dea44d1d0f7997d7c7", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "8ab96790c3ab69851d1bdcbb21befe2c6c2914c0d6b206db707bfc70eb04018f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "aaeef7c3aa2857a776bcca3222f0b1a2818713c676eaf4459165afddc664902a", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "37a23dd922ae16fbe278c1bc630ada2e4087fd1bfae5fd7524bec457840432c9", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "765221cfe2c0ffe8db41a9aaeabd326de36e24dbd4734e72ad2e51342352e8d9", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "244c805c3c65f4ea3340ecd3db67c2a9eb47034ce26a7b0742b20779b40208ec", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "32d8d204cd3759256f8541ab0799864ed76ba1b2d315e279e0b748cb59aba70f", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "ca58c522bdf9f390884512b659b2b65f6736305548a4da0c2f4cb6418076115b", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f32467ad7e6835d555511902977d25c3482af29a4021a6a0ee79ef5c5c3d42f1", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "18cb2fc89aaac2f555399613762f02a753faf013cb907dbcb7c6c612b9178cd5", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bc7d0692b8e75f8f18cb2945716b638fb68d759a389dc5208c168b3d0f2f1e7c", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c971a4b888bce33e88eaa3d05908464bd80a65ec9cd33372db2a33d82f516aa2", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "48a7c0b6cb8996e0c624fef8c74f5c6d5206b8315c9b471afd54305e632a41de", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "94521044b9e5867b9c09a61ff6856a573fec03f3306ccc126fbfddf2ba5a9bd0", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "40af317113dd02d4f02997ecdb0bc2645795366221dc51f2e73e0879127b1ec3", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a2a617d89a8e05e56ce684a2bcb9ea178f38f73b98f68a526d7801aecf8d3ca7", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "5084f60ba60f34ee3a842ab511b724b258f8cd61349d5f8fdb434e567f0b8fc3", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "cb3aa03c5280805fd5c1deb7120ff16b1477141a7f5c1dcb23da16f7452e194f", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0c788e13e515561c0bb766276df8afd5c638a4fd277845c5e934e3381ee37d2e", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "87c8836b5a24e5db265381d68e9607fc490f604c541a4718129bc9a8bbebffdb", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0a9f6f8c22e31c0efaa840060755279d4f9c00fd8661ccd276acc1b125764970", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "dfa5f9b295d645a5f0c61990f5630e16df92bece6a096db0605f4796edc9c6b4", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "01b00ea17ca93683b6e9b4a78af4053388305fff71597e67cd7277a22776bf3b", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e8f499f9ddc1269ccd9793e01ba7a7357bed3fa8385cdf9fb9397ad4d197b7ef", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "58e7d49eca04231f31d887e6e6cc9f582571f325a5d29b7a25b10deb11f00e0a", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9d8b67eb06b62c702daba233557830fe735f1b78beafc52663d3560fd923248c", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4f4cda6765dc4d4bce5a0a7cd5e1b41b24a9e5e7295b0ca8d38fa50ea600fc13", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8d0cf9321aae6c5b2c3a4f613698a0578cb88295a4babeff28b6bf91aa464551", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f10424440a7a572c6d65fb27a34e2cccbfe24668e5da5d9d69f53f2cd9b1fedf", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "786a4ff04f8fc543645eae6ac33075a08c32efd3d92cb7b95f5746152902d149", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "388845ea867ae63588eaad720440148f60a5d2c0a29a4b6831e9d399a8143641", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3d8bc8e1613153a51b1bf2afbfd616b2908e6ef45ff2375251fbf3fd92ebad1e", @@ -16802,12 +16802,12 @@ "T3T1_cs_test_msg_applysettings.py::test_experimental_features": "c9cde0d61c26889516c7d875004af6f40d37a8e03e6797d3928dabad4d3e9edf", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0eed526ac2842f7e35e9c2cb5684d622178b696e1c834661c62224691a7992d5", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "8fd04ce896d76081179715f43988e940f37baff4cb0f622a28005ef67c015281", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a8e5b73fcee14cf4bb6437e52c2283bfdf07b0397597885b06995b80b8186895", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "d03990d03a374b4c3ba765eb3629be3fce432858b637c3ed01efcb4168f8a6ea", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "fea20d5cc7dc7e95761058944c9a99bff9039a5035f4137ac4c3c95cdf373332", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "45385c7df917c24ca2e3662a49db50e8952607e5aaf979eaa73eb439a6ac5a07", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d3dccdc4fa6c23836f2dc4f86ede182a3929ba78d121a5a19965d3c90d6e4b21", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "46bc5f9babbf32d0cd733bc85fdc3ec305c929efd7196036000e323341e9c0cd", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2d102ded852007515950693358f536b788b2f65414e61623d150e8e184968460", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "37078084515be549437c8a2314a6caabae2581dfbb62e680e8e5ef58b42dcff5", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "c887a55c3c1f205137196a7960dc264ac40e757c0bdcbc7b07df1886f8bfde2c", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "b57460aaa226fe01d39efe74a58e91489b772e2c8d573437e0072c289a0c3f90", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "450b52ffe6ca7abb25d469f5dd97e4f97fa8353c39bfd4886ceb480949fce68b", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1a88c5b273d78e985584fdd5e9b2f8a2af1c57106898d1d04f4856e54bb2c528", "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f8488e40c2ef12caa4e44b6a2d43864e02636462d0de215a553aeab24fa1d61e", "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", @@ -16861,10 +16861,10 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "4489e8907a840ef83289f4ce45146dd4ed59d26502af93eed4e379b073842eda", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "d806653a6d4bd2b71c8b2c1995f56875115783f53c43be220e026419df16c1a1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "4bd90276272d0a3ef71aad24bf5facf72bae079751373abfd007258740346367", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "de3f78764b3f517dffe61a9dcbef65202faffbfb6626f52247d43a8733196848", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "5142919b9e93bcc030e90481912cf3afd81ce071536991be5e6b02c46dfdfa8a", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "0ff3ac7c7173752f4f728fac5ead53fdacd8c8b47b6fb0578d457effe854d518", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e46aa83089359ea8c73b8589c8e543adc7be07fdd862bb0f70f6fe6430cff001", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "bc66bb9bcffc8bbacad1134234b716ca59918b9bc40243b8e244756e3e2015bc", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "d5c72e891c7764ce40fd924020cb7f05e3076aeb2b02b61f046d4320ca241d78", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "bec1f7173902261007d42979fb302d78deb39a04463763bf1520ea28cf45b838", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "302e72d2a8af8235ade6974974dae0f086c48fb162f7cbcdba27f89f5fc3e688", "T3T1_cs_test_sdcard.py::test_sd_format": "76c7fed29920e2339f0f29cb9545474bbda504712ad06ac0c44d8d767448a35f", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "19cb5bfc1eafb2aad10f899040705034f5bbaa0104aeb455c08cbaea044ad4a6", @@ -17927,11 +17927,11 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "392a1f1ee9bb33c45db561b46f7949d773444fcdf57985e1e9561024ad6aeafe", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6b4d03ae67d98b8fe4eb9bd15c04d3166f109038842027de7ec06bffb2fab7f0", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dd0d48ba4e5f820250f0515954d1f204d7e29c818de37dad0e337842dacfde81", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "b23aee10e4ee7b07ffed6c6868faccdf999d717fee975be0c8de89125ae58e4d", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "9787c8fc06a8869d68a813121354d7087831dfe13baa06ce5b6816570dba7412", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "8068078c957085d5d5999bc56ca19501720dbc0095ec5a4070ae1499846edc98", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "922908f0935d39acce105ef7ef3b1bf34557635c692da7a833009d8734d8bbe7", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d4d4c18d0a755f523af0254ba8479d75a7816566d29c5c00f1ac92ac0b464fd1", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d1b080f6941058c9bc0b68e1be02f3acd147376c8e1fbe9cbe3d722e0dba3cf8", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d58e6768b8f08489997df466b54d90f1111e577b6bffe62ec01c52e3ecb24fed", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "33281fc3f8fc26f891dc9cdc45774229a147339b9d89840f95352ddeb7a3d926", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "1a6d3d8711b66091171e824f524c525b2c997b0e7d5e2d002ad736aaa7f726d2", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66fc33cd2f5978acd01b8cb4a7bc911c8dfb3c80a757c120f43fd20a2b6da22d", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a9a8b6ad1187e39044b9a9be38dd37025a450599ff7cc27e80db2c091aa68933", @@ -17939,11 +17939,11 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "30e1be92c8f217f23a9e3cb396b41513e3405543957615eccc04d6db48be66c1", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ce8ee7157dcd5af873ae9f41260296c1045479fc18787e4e18b7dbcceb6d7ca8", "T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "aaccb7f5e20079b5ec4cb0f1f270d7bc29f9084c233d0a62a7570b9f402b749f", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b544f08bee0eb15cad6417b02f2604fd4dba9cced94245fc4e3fff8f3d25b708", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "02d612e95bf14c4b98ee54225b542ba645c1ea3b205c896f200d22103d6932fc", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "01449a748875534523b51969db36b929813557726c16e2add0c60dde63ec92e3", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a89ce2f3aef9a40835e0ae74a893083414dc5757a24b7781c8fbc9b4ac9a47dc", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4d729a03e761f0ddc185632439ab95f62d2cf6b8bb64ca9bdca01ad741b2469e", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ec43e5ccc8482b3160f9426563a80686505bdb931ea56caac1d143ac80b260a0", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "39a6659f7477b838025f8652431863a4c362240138e208abeb23f2dc501bd6e0", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0764c093f703fc3805e72ead0c6d874083ec5c374f112608964d0c05f2a1614a", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0af05d99cc358d3fb7279253280935901f69b57b6e88a17014e8eb1a9bcd9bf1", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "de5204afe31fba17febe7787212da99229dea29ed7b535bda9d3d7331c734da4", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f23feeb1f495c66872cc7710c0b9efb6ff61ae6d892341a7563084b4bfc11d4a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ac77d26f757ee7492e6c0395fc5290451326a10e149f67673d6f4cfcc060966f", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "8e7259a76adaaa9da300395eca4ec0d621085229eca92f6248686c348787df42", @@ -18150,10 +18150,10 @@ "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "1a665973fa452a0d05ced007179fa7d2effa8e1abbda4460eb4678b99909997d", "T3T1_de_test_msg_backup_device.py::test_backup_bip39": "47478d72725f206ec8d3586fc7f4713c8ae52b00a7587f9225ece9ad78725358", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "acae760f37f32f3ce02c4fd124a549b9cfee0ac8aa71964d504da45368b16e21", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "19cd745982c27da753ab8e2534851bc115f4c7339ea671102afb6325b59a0be4", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "9480625044a26994db486fc8b8faf99d6d14a8abddeb8be5a3239b48553e36d7", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "028accfbcfd411e5796fba42f0bca1fff511cba275199b8decea1f9ae4415cf7", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "45942618de89a5d3d2ca47b3497b532323631f709a0261339cd96fa883261136", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "32e2740ff7887700b9792e85ddc037cd87f1be547ff0b123570dbe9cd077509c", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "09da46dd66f1818718d43f7441784b386e76bdfa52fa96a368b3b5c39c99ca22", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "63a4b86168df6529c400850e0239036ba3575b7ad43e1a32b1aca82aa1148265", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a99db48f5999cf5b780bb7a4091387c7b500de5a72981f12c81622dd33721037", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "90d56c3b300cd07b950579188fb9d408df8a32c82f77dad20c683915d75ac189", "T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "c2011cf42c3860a2cd5517dd8604a970f0d31e53e51940376a5711102888f51b", @@ -18208,10 +18208,10 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "47f6e4a3a24563faff2e25b3b28377298806494cdd8b9e90f2f3fc144baf9473", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "a35b3bc3572529dff2fbc9c2fb6d7eaa5bedd362330ceebffdd042bffa2524c1", "T3T1_de_test_protection_levels.py::test_wipe_device": "ebb357b41fbdd0d78491a5864c12f347bea2c08f1b513caf30c45f6e612f2883", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "ffcd84a53814351b0b0b4948cf4db6837aa23254db1d4ba83d65ecf5ad1908da", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "fd342ca8ebc65bb62d658ff331d4995faf45cacd0b5e569af188671c0bb209d5", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "7c1bbfcfc1e6016dd752c6762ad08ce55bca94d93fff3fae129095c4ec6beca5", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "92f26280f99674e97408813a1c83afc9d493b56adaff001c2e368578c13d68d0", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "6599065fb8bf7266959a574547da218197ae65349bf6e411287120432d2f2b21", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "b55b9b195beebf75c23b83f501b0f26451e72a6019a153a21cedb38c1d38f19e", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "d03383873d30ae02953fef96d9f7aaa83b0719f35ba80d2f4c511b67cfdfd123", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f4eb2f23355987df27388956db8a70fdc68d26b47a87cd2462d8422860021bb5", "T3T1_de_test_sdcard.py::test_sd_format": "deadd27fee071017c0cc6e1ef67f8b7cffe94502daa8168b042d1301175477b5", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "1cb949fd3c8d1b1169732dd79133fc25aec82caa6baf3cc54a585181cf825cf0", @@ -19274,10 +19274,10 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0ad06fea09ce4fa950be0ab73f21dab943208907b4c3fdcc8ce839a3bda2bdc6", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "ead3131f5db32cd74f9fabf5a17dc2b8e2c3e4819f23fed7daf65f084080e541", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dab9f5dbc939a70d74d7cf892c8765268c7b044d2a982aac161c0d8d428e24e0", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "bc83b38956735c0f031c6033cad48b43c040154e49a2d53a1e31217f9effb4e1", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "101d6ada0e92e2d46378269a9845406b19f9846de077cfc9f9203b062cade36f", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "db10660c23b501d20c2c7640b564758b33c9d3eedbea8193d1f5937cf425153d", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7be5debd87bc75397b8dd6cdbb241287a3596260d4afd988cdd242e681c2f605", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "b1b245d7f8b9b6b37fc89f486e5769bcde984ed55e58565295c0026ffdd5c0bb", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a74432975d214d678afe06003df550d76692229b6e4be157f2beebe48fd9aba0", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "98fbf4f03fcac8bd3a429e443033f46498f903f4b010c4ba5a56224e815341c4", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "954abdea6bd7631bffdfa93d1129409adedb07cc9069d42198ec74ca617b6bb9", @@ -19286,9 +19286,9 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2322c88f05f19d2faa0dff594fd574fbe0a90260d498116edfbb5c282d2e101e", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "6fe22a11fec54327631a72dbb77a50b4752f6bf25c520d4d5e34365d4e0dd1c6", "T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e178bbbe5e34f51c143215614aedafa77324ed1a09b33d96d74e4858680e97a0", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "75552de5050baaf1840065ef2e3b175e3293871c4ed78f46831bca1a9ec19b9e", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7402ee8b8df6259f2ef93d8819c19fcc25f786d06f695bc8126b738bd9102678", "T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "233684e1724c86c59199b19fc7debf14e777fbdd6e2b0a0c3c019ecd1267eb24", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "32ccb3b247b673a3ea2537184b8ac6e0f09b261a5b36c020a9ea7b69dbfddffd", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "951e1a39a1549b3ab20d44eadb8fffb035947dac52cc5cbed8070f353c6e0041", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "61a13248da3ed86a39ce66da8dcd57677d14b142a96f90cb05be6f0a8fed081e", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4bde62b1aaec63eca05b222fdf5446afc3fa152abeee290ab9d1c6f4b1561c71", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "009f4d31a4c23cd611b3aa1b3577e6758a5ab67bf507af2ecffa0526191e177f", @@ -19497,9 +19497,9 @@ "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "9ac2948f5dc0d41632d5717811add555ed1f5bd5b9670a1296427a23569b8ebb", "T3T1_en_test_msg_backup_device.py::test_backup_bip39": "f5d8efb15dfe2b4542ac65f405fd98ea86359573ed95ac8f7c8dfa9fa7c19dd6", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "f750508e957613f6211afdc80048afed1d160ac4f07e9a20a054d4a2836506a0", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b30e2feb48a369e97c88bcd3a9376a2e5a628fb97f60e31d2b73af1274a06486", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "0cec0f7b5c0716f3bdad9482af316bb088b21b4c05dce8332c9dbca805c809d2", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "45e9f9369965eabaf9fd1dcf36e3bed32f330ff9e49d9d21c217befe820ab0b4", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b465876b93cd836f2ba078a5b529975bd935acd5006da6bb058cc37a84bd8274", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ac3dbbb192002f360b84c8ff103f794d26a862b62b1e781b86014872e1839a64", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "cb7d3c4616a6f50eef46e9e381af6d95e94b14fea6d8e038db181cd376a00305", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "3557bcc0bfcf3e451d5d70184dca5c650530d54d902ba90202daaf5c31658d5c", "T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "5ddf280461559ed09903b1e9ed061452b67939b4d6c3947456a2a371da3eecdf", @@ -20621,11 +20621,11 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "32dc866da9a502cbb7dd56a1e5ca08abe7a9216bea99a3a868a7f366da9b7066", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "54a01f2156fa7289ec99b818d9928d10fca69cc081401b866bb7a7a0170a4035", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9731c2a43c76035b2ba266400a0f7fb48d9664b684f2c03c6a1997e8a4d8c968", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "624e49c0bb22bff007f625d631599501c64bd650ae6a0573c0ba20615c6cf874", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "135d87414d036b68d2a055e10848e92370e18a3b1c47e4e47a2535361dd05df6", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "0d7d582b5bc1e2eeb4138c73bde3f477c9dc773c3049f1d3ca61d51378fb0f95", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "3593a02883aa2df4eb2264bd6253599da3a6e4f697b9fca729912c8478250b37", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6ddf2523e77315afc51ef47e99255bc5283142da0d30a27128007b35f434d37b", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "237c036b0140d3efa96a1c9da6aa93708a487916919d476bfad3e3e34b04739a", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "4059e20d19a4d844654884fd3e9e5eefd68f123eee727cc0c5e418a4cadde99a", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f3d9ea58b2e8fd1ec3e01cb3757d6dee135d45b97a9868346baf6957064ea950", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a761c7cd84452419572c0dbc65ad2320be4d0d90b08fc5031f34eee12f7e49be", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5c493480c2be8018b01844522d0adc6307006d94359f641147dcfe9bf5ed7a81", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dc53105a6b05fcd2d6ceb4531ccf15a8617a3450db89b203bc827365ef2e14f7", @@ -20633,11 +20633,11 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "085c58e64c751a36643acf9bde37af20f99a99d1fadbf870003e5a291ed2e87d", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2b8712dce67fe3dea95754aee775c651cd40cbd184221f440e9ca41da4eabce1", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "814b29c64168417b085b09bc3da13978b9cab53a31ab7a6b0911fd9c8dbf9505", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4babb59ce04b2a1d35dffa9a1b8554c6cb2367f3781309ec8e2721f624e43f6e", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9604c57fe4d0b2241818a3f0b02931566b31ca15ded63ff089a2bb9fd9cf8bde", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a493510b64d232c00a870b6371beb4e2c684827fc73c20c7014b93be59deba2a", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a31ff3625a8f8990843141491b1627dc3fbb91b7e68ecac537da7045c17a299c", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "0e38ff8ee2863b085eb40cd7ab00a9ea5f1cb501936806244fb2b82f6e6a4376", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d1a7441ae4cb91fc23548d83520d8876b04c17117e05037959abf55e01b7d8a7", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d01e408c7441f1671a4ffd150200cf851fb2f6d8cc462225f20eb9a5975fd3d0", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a4f2dd7a4f0794fd21891429a4efc75158edfdd515f0dce5afa9ed238a27d63c", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "103f8bb4fdabb28090ca1e21679c4bdcb6e49ca800a47f0f5f71dd877c569996", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "dd5fc347de8f95cc2817d8bfdc21a2b3fa4c048a9f66a09c15d876b90cb04172", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "89bf880bda758eb19f52ed52e067db9eefc50ae733ee22b5fb588c1503bff329", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "225f1137de97158d11ea2764a86265a4e3f75a79b8f513fb2ecea8727040b5b4", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5d5718a47541b038f212f045964e93f42e5465399399475494ff8e19231d8609", @@ -20844,13 +20844,13 @@ "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "0cdbbcc9774b858e0694802f24f0d89241b7c675a0732bd3b39866d17ce000ac", "T3T1_es_test_msg_backup_device.py::test_backup_bip39": "536773ce669cf1476f03f7be1acb26be08408f2ab7285ef3d184464c33cdaaae", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "248b4863ba278d46ae5d34849071cfe4fa1f74d0cb461a945d45b928c96ea9ee", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c233388ea127e9b4217731046477810ea5907a1899413623e84401efa4a50fc8", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4f95e5fc0f743b3ce9ead2504c89795827319b4db1098259b8c20dadecbdbcc5", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "9ab103e76323dc6d7f710808ea8e63f62656f9f55643c4c4f8dbac2fd3ee288b", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "001dbf9765db08a1e113422cebf28dfb61a3508e940a3925c639dbe3cbe95317", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "2bf435c3f79b982f82487d057c412f05e954e911d24566f7570def343d2d074c", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "7e8d0ab960468b2a2f1f70690518d546cf291b240027bf1ca8473ed60c18dbd6", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "ca2316c40860e8b1fa3c01e8739e7be9fd94652e40ee6ebd6708d363115b82aa", "T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "381412ec20c743abb85a932f22190406bb2d0c0850bee8d549fe940df9e8534e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e1108808a66bb2d4969a6acbb651aaf649435c5d7eab4b6d199d0e9386be2c00", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "92c8d1c8e52c8468c19b3e7412f6bb917419295dcc3d10942ec83dbcec8a0562", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "75b53e4d68fe66dc4c27636dc0d05840000a6874c44f95dd80672c470c407f6d", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b8fea1e47b5e46937e6d6583d1644734e4ccf62726d6a29cee635b9903926040", "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", "T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", @@ -20902,10 +20902,10 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "fe43f2681f087deeb6ecc92501c4eff2d44a30e4ddfa7e2beccde954ae40cc0d", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "1d3351d9da92ff5014ca1a8a75211fa78d938828ac5990987a50fdf6888a2230", "T3T1_es_test_protection_levels.py::test_wipe_device": "bd526c2186cbe66c01f2336f3eb48b7bf9c612c5c906b11395fbc30e5b5d9f94", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "4af461eeb8e8cd65d49d07fa35aab48b71a9d41686bbc6ec66dcc9478e3bdb4d", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "53eb34d0960e2d043b84d9f298dacfbf9a7310cfe3985ca0ae81c02b95b9f8f4", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e2af0d1284f63e948c2e377a8f01fd78cf478c602acc8ef7bdfce5c9634a5603", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "7885d36c0e0da4d929d20b8c58c248b8c6a79bbfa14be56578e05176f26962dd", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "cb609c9cf6c4217b8bf857304f176f6ba592f314a4f4e2b54dee999e61332c23", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "caa5290015846945826de8bc718f1d3f8ff3ff154ba2b859bcabe6bc0a760fb0", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b2713252bea54c7fdf4e7148a53715f9dccdb673e0904651de8bed87ed4cc0ab", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8593e051d37352e53ef91d3719ca979076d61ad4b4c59066571e65dfcbefc4eb", "T3T1_es_test_sdcard.py::test_sd_format": "72f118c0af96c0efac42421ac361945413a8e956ba1715eb89daf6daa772d5aa", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "33fe33134d770ff08151fa7fbe46f0c1feb78a65a20dd52e6fd152f5be0237e3", @@ -21968,11 +21968,11 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "fc391ecfefa74e5c2f2034cff0d20bd7a0732e7ea9b4f428757763731b700718", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "5bb09202d3b0bcf13fa3094ed876d3ec7aff6d2ec6c0675d101ca89dc792e410", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8f2cc7ade0bcbb60e358fcec03697e7a7c7e324aab7296c623b2414b05a3ac7e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "9d6ea9f167e725bf3f5fcc7679838142e329a06aaf871c3b0dbf844d70af1e23", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a3d1df93630a73eeebae66a3044a3d151a8f1875e1a00eadd3b7a9681f810228", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "69be5ec95a9e25101d89248317d08d63a8c94cbac241e14ff5dab60cdd695bc0", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c994728318d0a32eb549ea50ce9d443969306543b63e1939b8e3cbd3b8137678", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d65ae5de34e02c6880ed5cdf0f0821a6001305a3899bc17e4f61d2e1c238f77e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d3520a47187d674c018ec4c6e962c89663ed63523ea886dbfb1badbf22e9ad40", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d67a016b8769a74df60fc5ea48170af39ebe28a040fd7fa833477965b53b58d1", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "4cfc4b435f2b7747254409f98f275c543b93c636e67f6b37c3a9e70adb3d788f", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b61b1def80908de36d7e1d6c343001663bd406d20dcfb62fee5b14306361cff1", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d3f130732cd2837913cb832fc92b4c7db31942fcc85b9158121c8378ec1e3f85", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "71ee2c76b706ab5087d5796292990f1532ba752f854cb52a0fa9c246f4fbc214", @@ -21980,11 +21980,11 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "16014e5c37356cff29ec121d9c1a1d0136a712e20ba7ab3e06b28babb24d0d20", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "080ff20469d654266eec22d119f0774c32262d04e4078cfe11512f838ae77a02", "T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2725b38012435c66a45f2085d88e31dc78b9c88d758cd21b1a421754a538bc22", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "cb4fd1f5e3d7cc7352802177f0b635ac100cbc715578a87d6bc6d6266c43df93", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bb95709bad9184ddb7675f85e30f166594f26b50ac7eddd7d72a4b125fbc636a", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "59f90c5dda370b47c367b255db3c559cf9e1a83daf02b0121405d7e10bdf8c30", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d24335ffd25d1c9c04ed50bcac04874d89ff52dcaeffd6d46bd13db29f4dcb4e", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "d939e88e6b70db570958e48b5b09f1f4fc854ce0a7891cdfd5a22d7c8f946f80", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "989162276ac12b65d3548e568c14cde7e59d3923bc59ecad09e3b63f0640288b", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bc2ecd1a9a43d54902594d038a956cbffe80709ada4302a60a37df322026709f", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "800dc112ef4a3e6f6c4ffa3a22dd00454b94c20cb05c800b3290138ce8630013", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5ef77d2ccad6e968780e906afd191a68584485fe677ecea4870262834946f752", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "be360a60f4107cdec7113c768abc8f19148b859fa171059fd887561887367987", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "202e5e73de82f528da179679b2bb7c80aa8333e417e0b0eda44ad2e74a0c3dc8", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "3daa711a54b41d9584fb509d13f5f497d70b978c9b544a790a979ce23c4d7fbc", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9f3033804af14d08d8c6dc67e83eac4d06990a7ecb355445fd19baa98f974ab0", @@ -22191,10 +22191,10 @@ "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", "T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "e5db2bff6610a705f5989bcb9ac7b687732447e5903fdb1a04d92478bc086183", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "600d67fdff0d47b862e67b4189d5fd5e31e14e57a0bead7d13e3848a3a9a9d4b", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "7b9681552a4b1c21d8e442973b8a051cab20949c076cc50afe320caef5157da7", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "d89e2309bc68712e6228ebe1467670866a79c0b65fc6e6767b67fe413896e06b", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "57b6ad5787a29d38ad4453866383f672c549619b44d9a453f2d06816ca88a65d", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2d74d5b6a54b2476e051418575a498f23e6332abc123e61440f7eba285ff81c2", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ffeaa268c258b4b970d991a245bd96309047c78dab3630ee3c649ca8ee338946", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "156bbe7d33c49bc0219a4861f372babb9ba5732f357554d8f694a2847ea27d8e", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "255f286400ec521caf9401a7638af49804c07765b1f49b320bae202af0695a35", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "455a7013b4080dc4878078e4b00a8dbe4b7d311ffac8e1ece7ae755e461d5b1f", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "fe405518c2224d1e6924441fa5b0d56b978f478d782736e6ad2ccddd64011a93", "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "01f35f2a321ffc9b58c3d892189802c2365d97d91ec21783136577796d2f6199", @@ -22249,10 +22249,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "41aff29e00f12334bc5f4404403a86399c0bc3f3c7aa36619d13247918280d8e", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c7fb9d00a7a5519c050401b6b1181aafb2cee07aac911a1f69ca19bf4926bf45", "T3T1_fr_test_protection_levels.py::test_wipe_device": "53279b977255d6d8874a592a5241f6a113e96442f871e96522ed8bf12fb05586", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c7663ac35d12992aa206ad5f90e031b4c54c4c1fe2ce1cdf63dafe5b326647fa", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "ee1dd9d5bda45e3459f844509915d9a4d6adb60d7ec5b972e7cc23d2fdab4ec4", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "2a725daa46cc4160ccc931522d363bf2083cff3ac41f25fb3e057f11876721d6", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "fb361edd2001744f1d2916e0cd83fb5b3cc0522db2addfcdcff19fe68d46c174", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "1e0c234c14d92832ba9ec39bc644034f9ef062a748a9587ee55701cdd5f85e8b", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "c857cceaebc7a6c801a6e99b2a71cae19c31891746642c5794fc033548c39798", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f49ab06659cb7af2b5da0476cfb2d5885edbd960ddcf138d96f8c20f7c59686b", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "65d1a06163c4a752aca9976cdc02e36f37079fb6f2a884427940c81fe0ee3752", "T3T1_fr_test_sdcard.py::test_sd_format": "d47e1612b47b28186d3517ccc686a4ddd4b60557c41446373e3f0f97f93d0105", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4ebf7f7adc1ba12f1977c97573f1489ec6d58b8e71d67213d521f1c790d4fabf", From edd5351732ba9a1dde6ebb5ce25f51faa33be7a1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sat, 22 Jun 2024 12:01:58 +0200 Subject: [PATCH 456/626] fix(core): fix missing touch events when PRESS_DOWN is missed [no changelog] --- core/embed/trezorhal/stm32f4/touch/ft6x36.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/core/embed/trezorhal/stm32f4/touch/ft6x36.c b/core/embed/trezorhal/stm32f4/touch/ft6x36.c index 2fc78cd17e..7d9f3d1ab0 100644 --- a/core/embed/trezorhal/stm32f4/touch/ft6x36.c +++ b/core/embed/trezorhal/stm32f4/touch/ft6x36.c @@ -418,12 +418,20 @@ uint32_t touch_get_event(void) { // Finger was just lifted up event = TOUCH_END | xy; } else { - // 1. Most likely, we have missed the PRESS_DOWN event. - // Touch duration was too short (< 20ms) to be worth reporting. - // 2. Finger is still lifted up. Since we have already sent the - // TOUCH_END event => no event needed. This should not happen - // since two consecutive LIFT_UPs are not possible due to - // testing the interrupt line before reading the registers. + if (!starving && ((x != driver->last_x) || (y != driver->last_y))) { + // We have missed the PRESS_DOWN event. + // Report the start event only if the coordinates + // have changed and driver is not starving. + // This suggest that the previous touch was very short, + // or/and the driver is not called very frequently. + event = TOUCH_START | xy; + } else { + // Either the driver is starving or the coordinates + // have not changed, which would suggest that the TOUCH_END + // is repeated, so no event is needed -this should not happen + // since two consecutive LIFT_UPs are not possible due to + // testing the interrupt line before reading the registers. + } } } From 1212a7319aae4a9f105e0d4226a9edb26833f42f Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 24 Jun 2024 12:26:12 +0200 Subject: [PATCH 457/626] fix(core): T3T1: adjust touch coordinates --- core/.changelog.d/3972.fixed | 1 + .../models/T3T1/boards/trezor_t3t1_revE.h | 1 + core/embed/trezorhal/stm32f4/touch/ft6x36.c | 24 ++++++++++- .../stm32f4/touch/panels/lx154a2422cpt23.c | 42 +++++++++++++++++++ .../stm32f4/touch/panels/lx154a2422cpt23.h | 35 ++++++++++++++++ core/embed/trezorhal/stm32u5/touch/panels | 1 + core/embed/trezorhal/touch.h | 1 + .../models/T3T1/trezor_t3t1_revE.py | 1 + 8 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 core/.changelog.d/3972.fixed create mode 100644 core/embed/trezorhal/stm32f4/touch/panels/lx154a2422cpt23.c create mode 100644 core/embed/trezorhal/stm32f4/touch/panels/lx154a2422cpt23.h create mode 120000 core/embed/trezorhal/stm32u5/touch/panels diff --git a/core/.changelog.d/3972.fixed b/core/.changelog.d/3972.fixed new file mode 100644 index 0000000000..f2cfd86999 --- /dev/null +++ b/core/.changelog.d/3972.fixed @@ -0,0 +1 @@ +[T3T1] Improve touch layer precision diff --git a/core/embed/models/T3T1/boards/trezor_t3t1_revE.h b/core/embed/models/T3T1/boards/trezor_t3t1_revE.h index 4fd2f7b48b..591ff37b52 100644 --- a/core/embed/models/T3T1/boards/trezor_t3t1_revE.h +++ b/core/embed/models/T3T1/boards/trezor_t3t1_revE.h @@ -77,6 +77,7 @@ #define I2C_INSTANCE_2_RESET_REG &RCC->APB3RSTR #define I2C_INSTANCE_2_RESET_BIT RCC_APB3RSTR_I2C3RST +#define TOUCH_PANEL_LX154A2422CPT23 1 #define TOUCH_SENSITIVITY 0x40 #define TOUCH_I2C_INSTANCE 0 #define TOUCH_RST_PORT GPIOC diff --git a/core/embed/trezorhal/stm32f4/touch/ft6x36.c b/core/embed/trezorhal/stm32f4/touch/ft6x36.c index 7d9f3d1ab0..bd22aad8cb 100644 --- a/core/embed/trezorhal/stm32f4/touch/ft6x36.c +++ b/core/embed/trezorhal/stm32f4/touch/ft6x36.c @@ -29,6 +29,10 @@ #include "i2c.h" #include "touch.h" +#ifdef TOUCH_PANEL_LX154A2422CPT23 +#include "panels/lx154a2422cpt23.h" +#endif + typedef struct { // Set if the driver is initialized secbool initialized; @@ -222,6 +226,16 @@ static secbool ft6x36_configure(void) { return sectrue; } +static void ft6x36_panel_correction(uint16_t x, uint16_t y, uint16_t* x_new, + uint16_t* y_new) { +#ifdef TOUCH_PANEL_LX154A2422CPT23 + lx154a2422cpt23_touch_correction(x, y, x_new, y_new); +#else + *x_new = x; + *y_new = y; +#endif +} + secbool touch_init(void) { touch_driver_t* driver = &g_touch_driver; @@ -376,8 +390,14 @@ uint32_t touch_get_event(void) { uint8_t flags = regs[FT6X63_REG_P1_XH] & FT6X63_EVENT_MASK; // Extract touch coordinates - uint16_t x = ((regs[FT6X63_REG_P1_XH] & 0x0F) << 8) | regs[FT6X63_REG_P1_XL]; - uint16_t y = ((regs[FT6X63_REG_P1_YH] & 0x0F) << 8) | regs[FT6X63_REG_P1_YL]; + uint16_t x_raw = + ((regs[FT6X63_REG_P1_XH] & 0x0F) << 8) | regs[FT6X63_REG_P1_XL]; + uint16_t y_raw = + ((regs[FT6X63_REG_P1_YH] & 0x0F) << 8) | regs[FT6X63_REG_P1_YL]; + + uint16_t x, y; + + ft6x36_panel_correction(x_raw, y_raw, &x, &y); uint32_t event = 0; diff --git a/core/embed/trezorhal/stm32f4/touch/panels/lx154a2422cpt23.c b/core/embed/trezorhal/stm32f4/touch/panels/lx154a2422cpt23.c new file mode 100644 index 0000000000..1da0f19161 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/touch/panels/lx154a2422cpt23.c @@ -0,0 +1,42 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include TREZOR_BOARD + +#include "lx154a2422cpt23.h" + +#include "touch.h" + +void lx154a2422cpt23_touch_correction(uint16_t x, uint16_t y, uint16_t *x_new, + uint16_t *y_new) { +#define CENTER (DISPLAY_RESX / 2) +#define CORRECTION 30 + + int x_corrected = CENTER + ((x - CENTER) * (CORRECTION + CENTER) / CENTER); + + if (x_corrected < 0) { + *x_new = 0; + } else if (x_corrected >= DISPLAY_RESX) { + *x_new = DISPLAY_RESX - 1; + } else { + *x_new = (uint16_t)x_corrected; + } + + *y_new = y; +} diff --git a/core/embed/trezorhal/stm32f4/touch/panels/lx154a2422cpt23.h b/core/embed/trezorhal/stm32f4/touch/panels/lx154a2422cpt23.h new file mode 100644 index 0000000000..bb17bf5d2a --- /dev/null +++ b/core/embed/trezorhal/stm32f4/touch/panels/lx154a2422cpt23.h @@ -0,0 +1,35 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_TOUCH_LX154A2422CPT23_H +#define TREZORHAL_TOUCH_LX154A2422CPT23_H + +#include <stdint.h> + +// Performs touch coordinates correction needed for a specific panel +// Input parameteres x, y represent original touch coordinates. +// Output parameters x_new, y_new represent corrected touch coordinates. +// +// In case of LX154A2422CPT23, this correction means to shift X coordinate +// towards the edge of the screen, proportionally to the distance from the +// center of the screen. +void lx154a2422cpt23_touch_correction(uint16_t x, uint16_t y, uint16_t *x_new, + uint16_t *y_new); + +#endif diff --git a/core/embed/trezorhal/stm32u5/touch/panels b/core/embed/trezorhal/stm32u5/touch/panels new file mode 120000 index 0000000000..1923ae8946 --- /dev/null +++ b/core/embed/trezorhal/stm32u5/touch/panels @@ -0,0 +1 @@ +../../stm32f4/touch/panels/ \ No newline at end of file diff --git a/core/embed/trezorhal/touch.h b/core/embed/trezorhal/touch.h index d0fe29a561..2120bde4bf 100644 --- a/core/embed/trezorhal/touch.h +++ b/core/embed/trezorhal/touch.h @@ -66,6 +66,7 @@ uint32_t touch_get_event(void); #define TOUCH_START (1U << 24) #define TOUCH_MOVE (1U << 25) #define TOUCH_END (1U << 26) +#define TOUCH_EVENT_MASK (0xFF << 24) // Returns x-coordinates from a packed touch event static inline uint16_t touch_unpack_x(uint32_t evt) { diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index 64c5baab77..644efac595 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -73,6 +73,7 @@ def configure( if "input" in features_wanted: sources += ["embed/trezorhal/stm32u5/i2c.c"] sources += ["embed/trezorhal/stm32u5/touch/ft6x36.c"] + sources += ["embed/trezorhal/stm32u5/touch/panels/lx154a2422cpt23.c"] features_available.append("touch") if "haptic" in features_wanted: From 888e384f79d26351e22c13928c69047636629e58 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Thu, 18 Jul 2024 17:19:22 +0200 Subject: [PATCH 458/626] refactor(core/mercury): remove unnecessary Child [no changelog] --- .../component/coinjoin_progress.rs | 9 +- .../src/ui/model_mercury/component/error.rs | 14 +-- .../src/ui/model_mercury/component/fido.rs | 8 +- .../component/keyboard/mnemonic.rs | 74 +++++------- .../component/keyboard/passphrase.rs | 110 +++++++----------- .../model_mercury/component/keyboard/pin.rs | 40 +++---- .../model_mercury/component/number_input.rs | 34 +++--- .../component/number_input_slider.rs | 10 +- .../ui/model_mercury/component/progress.rs | 29 ++--- .../src/ui/model_mercury/component/result.rs | 10 +- 10 files changed, 140 insertions(+), 198 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs index bda59ffbff..bdca56291a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/coinjoin_progress.rs @@ -6,9 +6,7 @@ use crate::{ strutil::TString, translations::TR, ui::{ - component::{ - base::Never, Bar, Child, Component, ComponentExt, Empty, Event, EventCtx, Label, Split, - }, + component::{base::Never, Bar, Component, Empty, Event, EventCtx, Label, Split}, display::loader::{loader_circular_uncompress, LoaderDimensions}, geometry::{Insets, Offset, Rect}, model_mercury::constant, @@ -30,7 +28,7 @@ const LOADER_SPEED: u16 = 5; pub struct CoinJoinProgress<U> { value: u16, indeterminate: bool, - content: Child<Frame<Split<Empty, U>>>, + content: Frame<Split<Empty, U>>, // Label is not a child since circular loader paints large black rectangle which overlaps it. // To work around this, draw label every time loader is drawn. label: Label<'static>, @@ -65,8 +63,7 @@ where content: Frame::centered( TR::coinjoin__title_progress.into(), Split::bottom(RECTANGLE_HEIGHT, 0, Empty, inner), - ) - .into_child(), + ), label: Label::centered(text, theme::TEXT_NORMAL), }) } diff --git a/core/embed/rust/src/ui/model_mercury/component/error.rs b/core/embed/rust/src/ui/model_mercury/component/error.rs index 0999a06541..c6280ae355 100644 --- a/core/embed/rust/src/ui/model_mercury/component/error.rs +++ b/core/embed/rust/src/ui/model_mercury/component/error.rs @@ -1,7 +1,7 @@ use crate::{ strutil::TString, ui::{ - component::{Child, Component, Event, EventCtx, Label, Never, Pad}, + component::{Component, Event, EventCtx, Label, Never, Pad}, constant::screen, geometry::{Alignment2D, Point, Rect}, shape, @@ -26,9 +26,9 @@ const STYLE: &ResultStyle = &super::theme::RESULT_ERROR; pub struct ErrorScreen<'a> { bg: Pad, - title: Child<Label<'a>>, - message: Child<Label<'a>>, - footer: Child<ResultFooter<'a>>, + title: Label<'a>, + message: Label<'a>, + footer: ResultFooter<'a>, } impl<'a> ErrorScreen<'a> { @@ -42,9 +42,9 @@ impl<'a> ErrorScreen<'a> { Self { bg: Pad::with_background(FATAL_ERROR_COLOR).with_clear(), - title: Child::new(title), - message: Child::new(message), - footer: Child::new(footer), + title, + message, + footer, } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index a19377d493..6aa9b8aa8e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -1,9 +1,7 @@ use crate::{ strutil::TString, ui::{ - component::{ - image::Image, Child, Component, Event, EventCtx, Label, Swipe, SwipeDirection, - }, + component::{image::Image, Component, Event, EventCtx, Label, Swipe, SwipeDirection}, display, geometry::{Insets, Rect}, model_mercury::component::{fido_icons::get_fido_icon_data, theme, ScrollBar}, @@ -30,7 +28,7 @@ pub struct FidoConfirm<F: Fn(usize) -> TString<'static>, U> { page_swipe: Swipe, app_name: Label<'static>, account_name: Label<'static>, - icon: Child<Image>, + icon: Image, /// Function/closure that will return appropriate page on demand. get_account: F, scrollbar: ScrollBar, @@ -79,7 +77,7 @@ where app_name: Label::centered(app_name, theme::TEXT_DEMIBOLD), account_name: Label::centered(current_account, theme::TEXT_DEMIBOLD), page_swipe, - icon: Child::new(Image::new(icon_data)), + icon: Image::new(icon_data), get_account, scrollbar, fade: Cell::new(false), diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 181012c064..2f0cd7d9ee 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -2,7 +2,7 @@ use crate::{ strutil::TString, ui::{ component::{ - maybe::paint_overlapping, Child, Component, Event, EventCtx, Label, Maybe, Swipe, + maybe::paint_overlapping, Component, Event, EventCtx, Label, Maybe, Swipe, SwipeDirection, }, geometry::{Alignment, Grid, Insets, Rect}, @@ -24,17 +24,17 @@ pub enum MnemonicKeyboardMsg { pub struct MnemonicKeyboard<T> { /// Initial prompt, displayed on empty input. - prompt: Child<Maybe<Label<'static>>>, + prompt: Maybe<Label<'static>>, /// Delete a char button. - erase: Child<Maybe<Button>>, + erase: Maybe<Button>, /// Go to previous word button - back: Child<Maybe<Button>>, + back: Maybe<Button>, /// Input area, acting as the auto-complete and confirm button. - input: Child<Maybe<T>>, + input: Maybe<T>, /// Area with keypads - used for rounded overlay keypad_area: Rect, /// Key buttons. - keys: [Child<Button>; MNEMONIC_KEY_COUNT], + keys: [Button; MNEMONIC_KEY_COUNT], /// Swipe controller - allowing for going to the previous word. swipe: Swipe, /// Whether going back is allowed (is not on the very first word). @@ -56,26 +56,20 @@ where .styled(theme::button_default()) .with_expanded_touch_area(Insets::right(BACK_BUTTON_RIGHT_EXPAND)); Self { - prompt: Child::new(Maybe::new( + prompt: Maybe::new( theme::BG, Label::centered(prompt, theme::TEXT_MAIN_GREY_LIGHT).vertically_centered(), prompt_visible, - )), - erase: Child::new(Maybe::new(theme::BG, erase_btn, !prompt_visible)), - back: Child::new(Maybe::new( - theme::BG, - back_btn, - prompt_visible && can_go_back, - )), - input: Child::new(Maybe::new(theme::BG, input, !prompt_visible)), + ), + erase: Maybe::new(theme::BG, erase_btn, !prompt_visible), + back: Maybe::new(theme::BG, back_btn, prompt_visible && can_go_back), + input: Maybe::new(theme::BG, input, !prompt_visible), keypad_area: Rect::zero(), - keys: T::keys() - .map(|t| { - Button::with_text(t.into()) - .styled(theme::button_keyboard()) - .with_text_align(Alignment::Center) - }) - .map(Child::new), + keys: T::keys().map(|t| { + Button::with_text(t.into()) + .styled(theme::button_keyboard()) + .with_text_align(Alignment::Center) + }), swipe: Swipe::new().right(), can_go_back, } @@ -90,32 +84,23 @@ where /// completion mask and the pending key. fn toggle_key_buttons(&mut self, ctx: &mut EventCtx) { for (key, btn) in self.keys.iter_mut().enumerate() { - let enabled = self - .input - .inner() - .inner() - .can_key_press_lead_to_a_valid_word(key); - btn.mutate(ctx, |ctx, b| b.enable_if(ctx, enabled)); + let enabled = self.input.inner().can_key_press_lead_to_a_valid_word(key); + btn.enable_if(ctx, enabled); } } /// After edit operations, we need to either show or hide the prompt, the /// input, the erase button and the back button. fn toggle_prompt_or_input(&mut self, ctx: &mut EventCtx) { - let prompt_visible = self.input.inner().inner().is_empty(); - self.prompt - .mutate(ctx, |ctx, p| p.show_if(ctx, prompt_visible)); - self.input - .mutate(ctx, |ctx, i| i.show_if(ctx, !prompt_visible)); - self.erase - .mutate(ctx, |ctx, b| b.show_if(ctx, !prompt_visible)); - self.back.mutate(ctx, |ctx, b| { - b.show_if(ctx, prompt_visible && self.can_go_back) - }); + let prompt_visible = self.input.inner().is_empty(); + self.prompt.show_if(ctx, prompt_visible); + self.input.show_if(ctx, !prompt_visible); + self.erase.show_if(ctx, !prompt_visible); + self.back.show_if(ctx, prompt_visible && self.can_go_back); } pub fn mnemonic(&self) -> Option<&'static str> { - self.input.inner().inner().mnemonic() + self.input.inner().mnemonic() } } @@ -181,14 +166,12 @@ where match self.erase.event(ctx, event) { Some(ButtonMsg::Clicked) => { - self.input - .mutate(ctx, |ctx, i| i.inner_mut().on_backspace_click(ctx)); + self.input.inner_mut().on_backspace_click(ctx); self.on_input_change(ctx); return None; } Some(ButtonMsg::LongPressed) => { - self.input - .mutate(ctx, |ctx, i| i.inner_mut().on_backspace_long_press(ctx)); + self.input.inner_mut().on_backspace_long_press(ctx); self.on_input_change(ctx); return None; } @@ -196,8 +179,7 @@ where } for (key, btn) in self.keys.iter_mut().enumerate() { if let Some(ButtonMsg::Clicked) = btn.event(ctx, event) { - self.input - .mutate(ctx, |ctx, i| i.inner_mut().on_key_click(ctx, key)); + self.input.inner_mut().on_key_click(ctx, key); self.on_input_change(ctx); return None; } @@ -213,7 +195,7 @@ where } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - if self.input.inner().inner().is_empty() { + if self.input.inner().is_empty() { self.prompt.render(target); if self.can_go_back { self.back.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 3aa8121bbc..46001f2100 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -3,8 +3,8 @@ use crate::{ translations::TR, ui::{ component::{ - base::ComponentExt, text::common::TextBox, Child, Component, Event, EventCtx, Label, - Maybe, Never, Swipe, SwipeDirection, + base::ComponentExt, text::common::TextBox, Component, Event, EventCtx, Label, Maybe, + Never, Swipe, SwipeDirection, }, display, geometry::{Alignment, Grid, Insets, Offset, Rect}, @@ -75,14 +75,14 @@ impl From<KeyboardLayout> for ButtonContent { pub struct PassphraseKeyboard { page_swipe: Swipe, - input: Child<Input>, - input_prompt: Child<Label<'static>>, - erase_btn: Child<Maybe<Button>>, - cancel_btn: Child<Maybe<Button>>, - confirm_btn: Child<Button>, - next_btn: Child<Button>, + input: Input, + input_prompt: Label<'static>, + erase_btn: Maybe<Button>, + cancel_btn: Maybe<Button>, + confirm_btn: Button, + next_btn: Button, keypad_area: Rect, - keys: [Child<Button>; KEY_COUNT], + keys: [Button; KEY_COUNT], active_layout: KeyboardLayout, fade: Cell<bool>, } @@ -105,43 +105,38 @@ impl PassphraseKeyboard { let confirm_btn = Button::with_icon(theme::ICON_SIMPLE_CHECKMARK24) .styled(theme::button_passphrase_confirm()) - .with_radius(15) - .into_child(); + .with_radius(15); let next_btn = Button::new(active_layout.next().into()) .styled(theme::button_passphrase_next()) - .with_text_align(Alignment::Center) - .into_child(); + .with_text_align(Alignment::Center); let erase_btn = Button::with_icon(theme::ICON_DELETE) .styled(theme::button_keyboard_erase()) .with_long_press(theme::ERASE_HOLD_DURATION) .initially_enabled(false); - let erase_btn = Maybe::hidden(theme::BG, erase_btn).into_child(); + let erase_btn = Maybe::hidden(theme::BG, erase_btn); let cancel_btn = Button::with_icon(theme::ICON_CLOSE).styled(theme::button_keyboard_cancel()); - let cancel_btn = Maybe::visible(theme::BG, cancel_btn).into_child(); + let cancel_btn = Maybe::visible(theme::BG, cancel_btn); Self { page_swipe: Swipe::horizontal(), - input: Input::new().into_child(), + input: Input::new(), input_prompt: Label::left_aligned( TString::from_translation(TR::passphrase__title_enter), theme::label_keyboard(), - ) - .into_child(), + ), erase_btn, cancel_btn, confirm_btn, next_btn, keypad_area: Rect::zero(), keys: KEYBOARD[active_layout.to_usize().unwrap()].map(|text| { - Child::new( - Button::new(Self::key_content(text)) - .styled(theme::button_keyboard()) - .with_text_align(Alignment::Center), - ) + Button::new(Self::key_content(text)) + .styled(theme::button_keyboard()) + .with_text_align(Alignment::Center) }), active_layout, fade: Cell::new(false), @@ -174,8 +169,7 @@ impl PassphraseKeyboard { _ => self.active_layout, }; // Clear the pending state. - self.input - .mutate(ctx, |ctx, i| i.multi_tap.clear_pending_state(ctx)); + self.input.multi_tap.clear_pending_state(ctx); // Update keys. self.replace_keys_contents(ctx); // Reset backlight to normal level on next paint. @@ -186,13 +180,12 @@ impl PassphraseKeyboard { } fn replace_keys_contents(&mut self, ctx: &mut EventCtx) { - self.next_btn.mutate(ctx, |ctx, b| { - b.set_content(ctx, self.active_layout.next().into()); - }); + self.next_btn + .set_content(ctx, self.active_layout.next().into()); for (i, btn) in self.keys.iter_mut().enumerate() { let text = KEYBOARD[self.active_layout.to_usize().unwrap()][i]; let content = Self::key_content(text); - btn.mutate(ctx, |ctx, b| b.set_content(ctx, content)); + btn.set_content(ctx, content); btn.request_complete_repaint(ctx); } } @@ -201,15 +194,11 @@ impl PassphraseKeyboard { fn after_edit(&mut self, ctx: &mut EventCtx) { // When the input is empty, enable cancel button. Otherwise show erase and // confirm button. - let is_empty = self.input.inner().textbox.is_empty(); - self.erase_btn.mutate(ctx, |ctx, btn| { - btn.show_if(ctx, !is_empty); - btn.inner_mut().enable_if(ctx, !is_empty); - }); - self.cancel_btn.mutate(ctx, |ctx, btn| { - btn.show_if(ctx, is_empty); - btn.inner_mut().enable_if(ctx, is_empty); - }); + let is_empty = self.input.textbox.is_empty(); + self.erase_btn.show_if(ctx, !is_empty); + self.erase_btn.inner_mut().enable_if(ctx, !is_empty); + self.cancel_btn.show_if(ctx, is_empty); + self.cancel_btn.inner_mut().enable_if(ctx, is_empty); self.update_input_btns_state(ctx); } @@ -218,13 +207,11 @@ impl PassphraseKeyboard { fn update_input_btns_state(&mut self, ctx: &mut EventCtx) { let active_states = self.get_buttons_active_states(); for (key, btn) in self.keys.iter_mut().enumerate() { - btn.mutate(ctx, |ctx, b| { - if active_states[key] { - b.enable(ctx); - } else { - b.disable(ctx); - } - }); + if active_states[key] { + btn.enable(ctx); + } else { + btn.disable(ctx); + } } } @@ -241,9 +228,9 @@ impl PassphraseKeyboard { /// We should disable the input when the passphrase has reached maximum /// length and we are not cycling through the characters. fn is_button_active(&self, key: usize) -> bool { - let textbox_not_full = self.input.inner().textbox.len() < MAX_LENGTH; + let textbox_not_full = self.input.textbox.len() < MAX_LENGTH; let key_is_pending = { - if let Some(pending) = self.input.inner().multi_tap.pending_key() { + if let Some(pending) = self.input.multi_tap.pending_key() { pending == key } else { false @@ -253,7 +240,7 @@ impl PassphraseKeyboard { } pub fn passphrase(&self) -> &str { - self.input.inner().textbox.content() + self.input.textbox.content() } } @@ -307,9 +294,8 @@ impl Component for PassphraseKeyboard { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if self.input.inner().multi_tap.is_timeout_event(event) { - self.input - .mutate(ctx, |ctx, i| i.multi_tap.clear_pending_state(ctx)); + if self.input.multi_tap.is_timeout_event(event) { + self.input.multi_tap.clear_pending_state(ctx); return None; } if let Some(swipe) = self.page_swipe.event(ctx, event) { @@ -331,18 +317,14 @@ impl Component for PassphraseKeyboard { match self.erase_btn.event(ctx, event) { Some(ButtonMsg::Clicked) => { - self.input.mutate(ctx, |ctx, i| { - i.multi_tap.clear_pending_state(ctx); - i.textbox.delete_last(ctx); - }); + self.input.multi_tap.clear_pending_state(ctx); + self.input.textbox.delete_last(ctx); self.after_edit(ctx); return None; } Some(ButtonMsg::LongPressed) => { - self.input.mutate(ctx, |ctx, i| { - i.multi_tap.clear_pending_state(ctx); - i.textbox.clear(ctx); - }); + self.input.multi_tap.clear_pending_state(ctx); + self.input.textbox.clear(ctx); self.after_edit(ctx); return None; } @@ -362,11 +344,9 @@ impl Component for PassphraseKeyboard { if let Some(ButtonMsg::Clicked) = btn.event(ctx, event) { // Key button was clicked. If this button is pending, let's cycle the pending // character in textbox. If not, let's just append the first character. - let text = Self::key_text(btn.inner().content()); - self.input.mutate(ctx, |ctx, i| { - let edit = text.map(|c| i.multi_tap.click_key(ctx, key, c)); - i.textbox.apply(ctx, edit); - }); + let text = Self::key_text(btn.content()); + let edit = text.map(|c| self.input.multi_tap.click_key(ctx, key, c)); + self.input.textbox.apply(ctx, edit); self.after_edit(ctx); return None; } @@ -383,7 +363,7 @@ impl Component for PassphraseKeyboard { self.next_btn.render(target); self.erase_btn.render(target); self.confirm_btn.render(target); - if self.input.inner().textbox.is_empty() { + if self.input.textbox.is_empty() { self.cancel_btn.render(target); // FIXME: when prompt fixed in Figma // self.input_prompt.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs index 06ccb44fc3..868508d462 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/pin.rs @@ -8,7 +8,7 @@ use crate::{ component::{ base::{AttachType, ComponentExt}, text::TextStyle, - Child, Component, Event, EventCtx, Label, Never, Pad, SwipeDirection, TimerToken, + Component, Event, EventCtx, Label, Never, Pad, SwipeDirection, TimerToken, }, display::Font, event::TouchEvent, @@ -246,12 +246,12 @@ pub struct PinKeyboard<'a> { allow_cancel: bool, show_erase: bool, show_cancel: bool, - major_prompt: Child<Label<'a>>, - minor_prompt: Child<Label<'a>>, - major_warning: Option<Child<Label<'a>>>, + major_prompt: Label<'a>, + minor_prompt: Label<'a>, + major_warning: Option<Label<'a>>, keypad_area: Rect, textbox_area: Rect, - textbox: Child<PinDots>, + textbox: PinDots, erase_btn: Button, cancel_btn: Button, confirm_btn: Button, @@ -282,15 +282,13 @@ impl<'a> PinKeyboard<'a> { allow_cancel, show_erase: false, show_cancel: allow_cancel, - major_prompt: Label::left_aligned(major_prompt, theme::label_keyboard()).into_child(), - minor_prompt: Label::right_aligned(minor_prompt, theme::label_keyboard_minor()) - .into_child(), - major_warning: major_warning.map(|text| { - Label::left_aligned(text, theme::label_keyboard_warning()).into_child() - }), + major_prompt: Label::left_aligned(major_prompt, theme::label_keyboard()), + minor_prompt: Label::right_aligned(minor_prompt, theme::label_keyboard_minor()), + major_warning: major_warning + .map(|text| Label::left_aligned(text, theme::label_keyboard_warning())), keypad_area: Rect::zero(), textbox_area: Rect::zero(), - textbox: PinDots::new(theme::label_default()).into_child(), + textbox: PinDots::new(theme::label_default()), erase_btn, cancel_btn, confirm_btn: Button::with_icon(theme::ICON_SIMPLE_CHECKMARK24) @@ -318,8 +316,8 @@ impl<'a> PinKeyboard<'a> { } fn pin_modified(&mut self, ctx: &mut EventCtx) { - let is_full = self.textbox.inner().is_full(); - let is_empty = self.textbox.inner().is_empty(); + let is_full = self.textbox.is_full(); + let is_empty = self.textbox.is_empty(); self.textbox.request_complete_repaint(ctx); @@ -343,7 +341,7 @@ impl<'a> PinKeyboard<'a> { } pub fn pin(&self) -> &str { - self.textbox.inner().pin() + self.textbox.pin() } fn get_button_alpha(&self, x: usize, y: usize, attach_time: f32, close_time: f32) -> u8 { @@ -454,12 +452,12 @@ impl Component for PinKeyboard<'_> { } match self.erase_btn.event(ctx, event) { Some(ButtonMsg::Clicked) => { - self.textbox.mutate(ctx, |ctx, t| t.pop(ctx)); + self.textbox.pop(ctx); self.pin_modified(ctx); return None; } Some(ButtonMsg::LongPressed) => { - self.textbox.mutate(ctx, |ctx, t| t.clear(ctx)); + self.textbox.clear(ctx); self.pin_modified(ctx); return None; } @@ -469,7 +467,7 @@ impl Component for PinKeyboard<'_> { if let Some(Clicked) = btn.0.event(ctx, event) { if let ButtonContent::Text(text) = btn.0.content() { text.map(|text| { - self.textbox.mutate(ctx, |ctx, t| t.push(ctx, text)); + self.textbox.push(ctx, text); }); self.pin_modified(ctx); return None; @@ -493,7 +491,7 @@ impl Component for PinKeyboard<'_> { self.erase_btn.render_with_alpha(target, erase_alpha); } - if self.textbox.inner().is_empty() { + if self.textbox.is_empty() { if let Some(ref w) = self.major_warning { w.render(target); } else { @@ -710,7 +708,7 @@ impl crate::trace::Trace for PinKeyboard<'_> { } } t.string("digits_order", digits_order.as_str().into()); - t.string("pin", self.textbox.inner().pin().into()); - t.bool("display_digits", self.textbox.inner().display_digits); + t.string("pin", self.textbox.pin().into()); + t.bool("display_digits", self.textbox.display_digits); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input.rs b/core/embed/rust/src/ui/model_mercury/component/number_input.rs index 1730e6f301..caa725ae45 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input.rs @@ -3,9 +3,8 @@ use crate::{ strutil::{self, TString}, ui::{ component::{ - base::ComponentExt, text::paragraphs::{Paragraph, Paragraphs}, - Child, Component, Event, EventCtx, Pad, SwipeDirection, + Component, Event, EventCtx, Pad, SwipeDirection, }, display::Font, event::SwipeEvent, @@ -23,8 +22,8 @@ pub enum NumberInputDialogMsg { pub struct NumberInputDialog { area: Rect, - input: Child<NumberInput>, - paragraphs: Child<Paragraphs<Paragraph<'static>>>, + input: NumberInput, + paragraphs: Paragraphs<Paragraph<'static>>, paragraphs_pad: Pad, } @@ -32,15 +31,14 @@ impl NumberInputDialog { pub fn new(min: u32, max: u32, init_value: u32, text: TString<'static>) -> Result<Self, Error> { Ok(Self { area: Rect::zero(), - input: NumberInput::new(min, max, init_value).into_child(), - paragraphs: Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, text)) - .into_child(), + input: NumberInput::new(min, max, init_value), + paragraphs: Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, text)), paragraphs_pad: Pad::with_background(theme::BG), }) } pub fn value(&self) -> u32 { - self.input.inner().value + self.input.value } } @@ -69,7 +67,7 @@ impl Component for NumberInputDialog { } if let Event::Swipe(SwipeEvent::End(SwipeDirection::Up)) = event { - return Some(NumberInputDialogMsg::Confirmed(self.input.inner().value)); + return Some(NumberInputDialogMsg::Confirmed(self.input.value)); } self.paragraphs.event(ctx, event); None @@ -101,8 +99,8 @@ pub enum NumberInputMsg { pub struct NumberInput { area: Rect, - dec: Child<Button>, - inc: Child<Button>, + dec: Button, + inc: Button, min: u32, max: u32, value: u32, @@ -110,12 +108,8 @@ pub struct NumberInput { impl NumberInput { pub fn new(min: u32, max: u32, value: u32) -> Self { - let dec = Button::with_icon(theme::ICON_MINUS) - .styled(theme::button_counter()) - .into_child(); - let inc = Button::with_icon(theme::ICON_PLUS) - .styled(theme::button_counter()) - .into_child(); + let dec = Button::with_icon(theme::ICON_MINUS).styled(theme::button_counter()); + let inc = Button::with_icon(theme::ICON_PLUS).styled(theme::button_counter()); let value = value.clamp(min, max); Self { area: Rect::zero(), @@ -150,10 +144,8 @@ impl Component for NumberInput { changed = true; }; if changed { - self.dec - .mutate(ctx, |ctx, btn| btn.enable_if(ctx, self.value > self.min)); - self.inc - .mutate(ctx, |ctx, btn| btn.enable_if(ctx, self.value < self.max)); + self.dec.enable_if(ctx, self.value > self.min); + self.inc.enable_if(ctx, self.value < self.max); ctx.request_paint(); return Some(NumberInputMsg::Changed(self.value)); } diff --git a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs index 5f0409d4f2..5245e53045 100644 --- a/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs +++ b/core/embed/rust/src/ui/model_mercury/component/number_input_slider.rs @@ -3,7 +3,7 @@ use crate::{ strutil::{ShortString, TString}, translations::TR, ui::{ - component::{base::ComponentExt, Child, Component, Event, EventCtx}, + component::{Component, Event, EventCtx}, constant::screen, display, event::TouchEvent, @@ -18,7 +18,7 @@ pub enum NumberInputSliderDialogMsg { pub struct NumberInputSliderDialog { area: Rect, - input: Child<NumberInputSlider>, + input: NumberInputSlider, footer: Footer<'static>, min: u16, max: u16, @@ -30,7 +30,7 @@ impl NumberInputSliderDialog { pub fn new(min: u16, max: u16, init_value: u16) -> Self { Self { area: Rect::zero(), - input: NumberInputSlider::new(min, max, init_value).into_child(), + input: NumberInputSlider::new(min, max, init_value), footer: Footer::new::<TString<'static>>( TR::instructions__swipe_horizontally.into(), Some(TR::setting__adjust.into()), @@ -43,7 +43,7 @@ impl NumberInputSliderDialog { } pub fn value(&self) -> u16 { - self.input.inner().value + self.input.value } } @@ -79,7 +79,7 @@ impl Component for NumberInputSliderDialog { if let Some(value) = self.input.event(ctx, event) { self.val = value; - if self.val == self.init_val || self.input.inner().touching { + if self.val == self.init_val || self.input.touching { self.footer .update_instruction(ctx, TR::instructions__swipe_horizontally); self.footer.update_description(ctx, TR::setting__adjust); diff --git a/core/embed/rust/src/ui/model_mercury/component/progress.rs b/core/embed/rust/src/ui/model_mercury/component/progress.rs index 7938d126ad..9b5f0fe3cd 100644 --- a/core/embed/rust/src/ui/model_mercury/component/progress.rs +++ b/core/embed/rust/src/ui/model_mercury/component/progress.rs @@ -4,10 +4,9 @@ use crate::{ strutil::TString, ui::{ component::{ - base::ComponentExt, paginated::Paginate, text::paragraphs::{Paragraph, Paragraphs}, - Child, Component, Event, EventCtx, Label, Never, Pad, + Component, Event, EventCtx, Label, Never, Pad, }, display::{self, Font, LOADER_MAX}, geometry::{Insets, Offset, Rect}, @@ -23,11 +22,11 @@ use crate::{ use super::theme; pub struct Progress { - title: Child<Label<'static>>, + title: Label<'static>, value: u16, loader_y_offset: i16, indeterminate: bool, - description: Child<Paragraphs<Paragraph<'static>>>, + description: Paragraphs<Paragraph<'static>>, description_pad: Pad, } @@ -40,14 +39,13 @@ impl Progress { description: TString<'static>, ) -> Self { Self { - title: Label::centered(title, theme::label_progress()).into_child(), + title: Label::centered(title, theme::label_progress()), value: 0, loader_y_offset: 0, indeterminate, description: Paragraphs::new( Paragraph::new(&theme::TEXT_NORMAL, description).centered(), - ) - .into_child(), + ), description_pad: Pad::with_background(theme::BG), } } @@ -60,10 +58,9 @@ impl Component for Progress { let description_lines = 1 + self .description .inner() - .inner() .content() .map(|t| t.chars().filter(|c| *c == '\n').count() as i16); - let (title, rest) = Self::AREA.split_top(self.title.inner().max_size().y); + let (title, rest) = Self::AREA.split_top(self.title.max_size().y); let (loader, description) = rest.split_bottom(Font::NORMAL.line_height() * description_lines); let loader = loader.inset(Insets::top(theme::CONTENT_BORDER)); @@ -80,14 +77,12 @@ impl Component for Progress { if !animation_disabled() { ctx.request_paint(); } - self.description.mutate(ctx, |ctx, para| { - if para.inner_mut().content() != &new_description { - para.inner_mut().update(new_description); - para.change_page(0); // Recompute bounding box. - ctx.request_paint(); - self.description_pad.clear(); - } - }); + if self.description.inner_mut().content() != &new_description { + self.description.inner_mut().update(new_description); + self.description.change_page(0); // Recompute bounding box. + ctx.request_paint(); + self.description_pad.clear(); + } } } None diff --git a/core/embed/rust/src/ui/model_mercury/component/result.rs b/core/embed/rust/src/ui/model_mercury/component/result.rs index f5e619f18c..f9d0374806 100644 --- a/core/embed/rust/src/ui/model_mercury/component/result.rs +++ b/core/embed/rust/src/ui/model_mercury/component/result.rs @@ -1,7 +1,7 @@ use crate::{ strutil::TString, ui::{ - component::{text::TextStyle, Child, Component, Event, EventCtx, Label, Never, Pad}, + component::{text::TextStyle, Component, Event, EventCtx, Label, Never, Pad}, constant::screen, display::{self, Color, Font, Icon}, geometry::{Alignment2D, Insets, Offset, Point, Rect}, @@ -117,8 +117,8 @@ pub struct ResultScreen<'a> { footer_pad: Pad, style: &'a ResultStyle, icon: Icon, - message: Child<Label<'a>>, - footer: Child<ResultFooter<'a>>, + message: Label<'a>, + footer: ResultFooter<'a>, } impl<'a> ResultScreen<'a> { @@ -134,8 +134,8 @@ impl<'a> ResultScreen<'a> { footer_pad: Pad::with_background(style.bg_color), style, icon, - message: Child::new(Label::centered(message, style.message_style())), - footer: Child::new(ResultFooter::new(footer, style)), + message: Label::centered(message, style.message_style()), + footer: ResultFooter::new(footer, style), }; if complete_draw { From 53799cdee8d88549de3eef071d58fb4a07eeb7db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 25 Jul 2024 16:11:34 +0200 Subject: [PATCH 459/626] fix(core/ui): fix cancel in ethereum sign tx flow [no changelog] --- .../src/trezor/ui/layouts/mercury/__init__.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 9ff4ef6795..7a519d9c2f 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -980,17 +980,6 @@ async def confirm_ethereum_tx( br_code: ButtonRequestType = ButtonRequestType.SignTx, chunkify: bool = False, ) -> None: - total_layout = RustLayout( - trezorui2.confirm_total( - title=TR.words__title_summary, - items=[ - (f"{TR.words__amount}:", total_amount), - (TR.send__maximum_fee, maximum_fee), - ], - info_button=True, - cancel_arrow=True, - ) - ) info_layout = RustLayout( trezorui2.show_info_with_cancel( title=TR.confirm_total__title_fee, @@ -1010,6 +999,17 @@ async def confirm_ethereum_tx( ) try: + total_layout = RustLayout( + trezorui2.confirm_total( + title=TR.words__title_summary, + items=[ + (f"{TR.words__amount}:", total_amount), + (TR.send__maximum_fee, maximum_fee), + ], + info_button=True, + cancel_arrow=True, + ) + ) total_layout.request_complete_repaint() await raise_if_not_confirmed( with_info(total_layout, info_layout, br_name, br_code) From f41176af02b258e7ab810f9c37594636cc7be2f4 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 23 Jul 2024 00:39:24 +0200 Subject: [PATCH 460/626] feat(core/mercury): change FW update UI This commit changes the UI of confirming interaction-less firmware update. --- core/.changelog.d/4030.added | 1 + .../flow/confirm_firmware_update.rs | 144 ++++++++++++++++++ .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../embed/rust/src/ui/model_mercury/layout.rs | 45 +----- core/embed/rust/src/ui/model_tr/layout.rs | 2 +- core/mocks/generated/trezorui2.pyi | 4 +- 6 files changed, 153 insertions(+), 45 deletions(-) create mode 100644 core/.changelog.d/4030.added create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs diff --git a/core/.changelog.d/4030.added b/core/.changelog.d/4030.added new file mode 100644 index 0000000000..333626231e --- /dev/null +++ b/core/.changelog.d/4030.added @@ -0,0 +1 @@ +[T3T1] New UI of confirming interaction-less firmware update diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs new file mode 100644 index 0000000000..f0e6e1182e --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs @@ -0,0 +1,144 @@ +use crate::{ + error, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + strutil::TString, + translations::TR, + ui::{ + component::{ + swipe_detect::SwipeSettings, + text::paragraphs::{Paragraph, Paragraphs}, + ComponentExt, SwipeDirection, + }, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + }, +}; + +use super::super::{ + component::{ + CancelInfoConfirmMsg, Frame, FrameMsg, PromptScreen, SwipeContent, VerticalMenu, + VerticalMenuChoiceMsg, + }, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ConfirmFirmwareUpdate { + Intro, + Menu, + Fingerprint, + Confirm, +} + +impl FlowState for ConfirmFirmwareUpdate { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Intro, SwipeDirection::Up) => Self::Confirm.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::Fingerprint, SwipeDirection::Right) => Self::Menu.swipe(direction), + (Self::Confirm, SwipeDirection::Down) => Self::Intro.swipe(direction), + (Self::Confirm, SwipeDirection::Left) => Self::Menu.swipe(direction), + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => Self::Fingerprint.transit(), + (Self::Menu, FlowMsg::Choice(1)) => self.return_msg(FlowMsg::Cancelled), + (Self::Fingerprint, FlowMsg::Cancelled) => Self::Menu.transit(), + (Self::Confirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), + (Self::Confirm, FlowMsg::Info) => Self::Menu.transit(), + _ => self.do_nothing(), + } + } +} + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_confirm_firmware_update( + n_args: usize, + args: *const Obj, + kwargs: *mut Map, +) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmFirmwareUpdate::new_obj) } +} + +impl ConfirmFirmwareUpdate { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; + let fingerprint: TString = kwargs.get(Qstr::MP_QSTR_fingerprint)?.try_into()?; + + let paragraphs = Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)); + let content_intro = Frame::left_aligned( + TR::firmware_update__title.into(), + SwipeContent::new(paragraphs), + ) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| { + matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) + }); + + let content_menu = Frame::left_aligned( + TString::empty(), + VerticalMenu::empty() + .item( + theme::ICON_CHEVRON_RIGHT, + TR::firmware_update__title_fingerprint.into(), + ) + .danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let paragraphs_fingerprint = + Paragraphs::new(Paragraph::new(&theme::TEXT_MONO_GREY_LIGHT, fingerprint)); + let content_fingerprint = Frame::left_aligned( + TR::firmware_update__title_fingerprint.into(), + SwipeContent::new(paragraphs_fingerprint), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::default()) + .map(|msg| { + matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Cancelled)) + .then_some(FlowMsg::Cancelled) + }); + + let content_confirm = Frame::left_aligned( + TR::firmware_update__title.into(), + SwipeContent::new(PromptScreen::new_hold_to_confirm()), + ) + .with_menu_button() + .with_footer(TR::instructions__hold_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Info), + }); + + let res = SwipeFlow::new(&ConfirmFirmwareUpdate::Intro)? + .with_page(&ConfirmFirmwareUpdate::Intro, content_intro)? + .with_page(&ConfirmFirmwareUpdate::Menu, content_menu)? + .with_page(&ConfirmFirmwareUpdate::Fingerprint, content_fingerprint)? + .with_page(&ConfirmFirmwareUpdate::Confirm, content_confirm)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index c87f04114f..47c264c287 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,4 +1,5 @@ pub mod confirm_action; +pub mod confirm_firmware_update; pub mod confirm_output; pub mod confirm_reset_create; pub mod confirm_reset_recover; @@ -15,6 +16,7 @@ pub mod warning_hi_prio; pub use confirm_action::{new_confirm_action, new_confirm_action_simple}; mod util; +pub use confirm_firmware_update::new_confirm_firmware_update; pub use confirm_output::new_confirm_output; pub use confirm_reset_create::ConfirmResetCreate; pub use confirm_reset_recover::ConfirmResetRecover; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 523c491938..2dd793d6bc 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -42,7 +42,7 @@ use crate::{ }, TextStyle, }, - Border, CachedJpeg, Component, FormattedText, Label, Never, SwipeDirection, Timeout, + Border, CachedJpeg, Component, FormattedText, Never, SwipeDirection, Timeout, }, flow::Swipable, geometry, @@ -266,15 +266,6 @@ where } } -impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - super::component::bl_confirm::ConfirmMsg::Cancel => Ok(CANCELLED.as_obj()), - super::component::bl_confirm::ConfirmMsg::Confirm => Ok(CONFIRMED.as_obj()), - } - } -} - extern "C" fn new_confirm_emphasized(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1250,36 +1241,6 @@ pub extern "C" fn upy_check_homescreen_format(data: Obj) -> Obj { unsafe { util::try_or_raise(block) } } -#[no_mangle] -extern "C" fn new_confirm_firmware_update( - n_args: usize, - args: *const Obj, - kwargs: *mut Map, -) -> Obj { - use super::component::bl_confirm::{Confirm, ConfirmTitle}; - let block = move |_args: &[Obj], kwargs: &Map| { - let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let fingerprint: TString = kwargs.get(Qstr::MP_QSTR_fingerprint)?.try_into()?; - - let title_str = TR::firmware_update__title.into(); - let title = Label::left_aligned(title_str, theme::TEXT_BOLD).vertically_centered(); - let msg = Label::left_aligned(description, theme::TEXT_NORMAL); - - let left = Button::with_text(TR::buttons__cancel.into()).styled(theme::button_default()); - let right = Button::with_text(TR::buttons__install.into()).styled(theme::button_confirm()); - - let obj = LayoutObj::new( - Confirm::new(theme::BG, left, right, ConfirmTitle::Text(title), msg).with_info( - TR::firmware_update__title_fingerprint.into(), - fingerprint, - theme::button_default(), - ), - )?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_show_wait_text(message: Obj) -> Obj { let block = || { let message: TString<'static> = message.try_into()?; @@ -1811,8 +1772,8 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: str, /// fingerprint: str, /// ) -> LayoutObj[UiResult]: - /// """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" - Qstr::MP_QSTR_confirm_firmware_update => obj_fn_kw!(0, new_confirm_firmware_update).as_obj(), + /// """Ask whether to update firmware, optionally show fingerprint.""" + Qstr::MP_QSTR_confirm_firmware_update => obj_fn_kw!(0, flow::confirm_firmware_update::new_confirm_firmware_update).as_obj(), /// def tutorial() -> LayoutObj[UiResult]: /// """Show user how to interact with the device.""" diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index f1b8c3057b..13319d4923 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -2044,7 +2044,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// description: str, /// fingerprint: str, - /// ) -> None: + /// ) -> LayoutObj[UiResult]: /// """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" Qstr::MP_QSTR_confirm_firmware_update => obj_fn_kw!(0, new_confirm_firmware_update).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 6bdb6d423c..20a9e563c9 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -538,7 +538,7 @@ def confirm_firmware_update( description: str, fingerprint: str, ) -> LayoutObj[UiResult]: - """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" + """Ask whether to update firmware, optionally show fingerprint.""" # rust/src/ui/model_mercury/layout.rs @@ -1079,7 +1079,7 @@ def confirm_firmware_update( *, description: str, fingerprint: str, -) -> None: +) -> LayoutObj[UiResult]: """Ask whether to update firmware, optionally show fingerprint. Shared with bootloader.""" From 008490bf4b8a04a085c59e217f743c9713727480 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 22 Jul 2024 17:07:34 +0200 Subject: [PATCH 461/626] refactor(core/mercury): unify confirm TOS [no changelog] --- core/embed/rust/librust_qstr.h | 4 +- .../ui/model_mercury/flow/confirm_reset.rs | 169 ++++++++++++++++++ .../flow/confirm_reset_create.rs | 123 ------------- .../flow/confirm_reset_recover.rs | 105 ----------- .../rust/src/ui/model_mercury/flow/mod.rs | 6 +- .../embed/rust/src/ui/model_mercury/layout.rs | 10 +- core/mocks/generated/trezorui2.pyi | 9 +- .../src/trezor/ui/layouts/mercury/__init__.py | 11 +- 8 files changed, 181 insertions(+), 256 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs delete mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs delete mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index c7e919866a..5c642a9661 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -240,8 +240,7 @@ static void _librust_qstrs(void) { MP_QSTR_firmware_update__title; MP_QSTR_firmware_update__title_fingerprint; MP_QSTR_flow_confirm_output; - MP_QSTR_flow_confirm_reset_create; - MP_QSTR_flow_confirm_reset_recover; + MP_QSTR_flow_confirm_reset; MP_QSTR_flow_confirm_set_new_pin; MP_QSTR_flow_confirm_summary; MP_QSTR_flow_get_address; @@ -417,6 +416,7 @@ static void _librust_qstrs(void) { MP_QSTR_reboot_to_bootloader__restart; MP_QSTR_reboot_to_bootloader__title; MP_QSTR_reboot_to_bootloader__version_by_template; + MP_QSTR_recovery; MP_QSTR_recovery__cancel_dry_run; MP_QSTR_recovery__check_dry_run; MP_QSTR_recovery__cursor_will_change; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs new file mode 100644 index 0000000000..e3ba7742b3 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs @@ -0,0 +1,169 @@ +use crate::{ + error, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + strutil::TString, + translations::TR, + ui::{ + button_request::ButtonRequestCode, + component::{ + swipe_detect::SwipeSettings, + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort}, + ButtonRequestExt, ComponentExt, SwipeDirection, + }, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::{PromptScreen, SwipeContent}, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ConfirmResetCreate { + Intro, + Menu, + Confirm, +} + +impl FlowState for ConfirmResetCreate { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Intro, SwipeDirection::Up) => Self::Confirm.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::Confirm, SwipeDirection::Down) => Self::Intro.swipe(direction), + (Self::Confirm, SwipeDirection::Left) => Self::Menu.swipe(direction), + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + (Self::Confirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), + (Self::Confirm, FlowMsg::Info) => Self::Menu.transit(), + _ => self.do_nothing(), + } + } +} + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ConfirmResetRecover { + Intro, + Menu, +} + +impl FlowState for ConfirmResetRecover { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), + (Self::Intro, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + _ => self.do_nothing(), + } + } +} + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_confirm_reset(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, new_confirm_reset_obj) } +} + +fn new_confirm_reset_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let recovery: bool = kwargs.get_or(Qstr::MP_QSTR_recovery, false)?; + + let (title, br, cancel_btn_text) = if recovery { + ( + TR::recovery__title_recover.into(), + ButtonRequestCode::ProtectCall.with_name("recover_device"), + TR::recovery__title_cancel_recovery.into(), + ) + } else { + ( + TR::reset__title_create_wallet.into(), + ButtonRequestCode::ResetDevice.with_name("setup_device"), + // FIXME: TR::reset__cancel_create_wallet should be used but Button text on + // multiple lines not supported yet + TR::buttons__cancel.into(), + ) + }; + + let paragraphs = ParagraphVecShort::from_iter([ + Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::reset__by_continuing) + .with_bottom_padding(17), + Paragraph::new(&theme::TEXT_SUB_GREY, TR::reset__more_info_at), + Paragraph::new(&theme::TEXT_SUB_GREY_LIGHT, TR::reset__tos_link), + ]) + .into_paragraphs(); + let content_intro = Frame::left_aligned(title, SwipeContent::new(paragraphs)) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) + .one_button_request(br); + + let content_menu = Frame::left_aligned( + TString::empty(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, cancel_btn_text), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let res = if recovery { + SwipeFlow::new(&ConfirmResetRecover::Intro)? + .with_page(&ConfirmResetRecover::Intro, content_intro)? + .with_page(&ConfirmResetRecover::Menu, content_menu)? + } else { + let content_confirm = Frame::left_aligned( + TR::reset__title_create_wallet.into(), + SwipeContent::new(PromptScreen::new_hold_to_confirm()), + ) + .with_menu_button() + .with_footer(TR::instructions__hold_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Info), + }) + .one_button_request(ButtonRequestCode::ResetDevice.with_name("confirm_setup_device")); + + SwipeFlow::new(&ConfirmResetCreate::Intro)? + .with_page(&ConfirmResetCreate::Intro, content_intro)? + .with_page(&ConfirmResetCreate::Menu, content_menu)? + .with_page(&ConfirmResetCreate::Confirm, content_confirm)? + }; + Ok(LayoutObj::new(res)?.into()) +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs deleted file mode 100644 index 5f6357298f..0000000000 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_create.rs +++ /dev/null @@ -1,123 +0,0 @@ -use crate::{ - error, - micropython::{map::Map, obj::Obj, util}, - strutil::TString, - translations::TR, - ui::{ - button_request::ButtonRequestCode, - component::{ - swipe_detect::SwipeSettings, - text::paragraphs::{Paragraph, Paragraphs}, - ButtonRequestExt, ComponentExt, SwipeDirection, - }, - flow::{ - base::{DecisionBuilder as _, StateChange}, - FlowMsg, FlowState, SwipeFlow, - }, - layout::obj::LayoutObj, - model_mercury::component::{PromptScreen, SwipeContent}, - }, -}; - -use super::super::{ - component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, - theme, -}; - -#[derive(Copy, Clone, PartialEq, Eq)] -pub enum ConfirmResetCreate { - Intro, - Menu, - Confirm, -} - -impl FlowState for ConfirmResetCreate { - #[inline] - fn index(&'static self) -> usize { - *self as usize - } - - fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { - match (self, direction) { - (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), - (Self::Intro, SwipeDirection::Up) => Self::Confirm.swipe(direction), - (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), - (Self::Confirm, SwipeDirection::Down) => Self::Intro.swipe(direction), - (Self::Confirm, SwipeDirection::Left) => Self::Menu.swipe(direction), - _ => self.do_nothing(), - } - } - - fn handle_event(&'static self, msg: FlowMsg) -> StateChange { - match (self, msg) { - (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), - (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), - (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), - (Self::Confirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), - (Self::Confirm, FlowMsg::Info) => Self::Menu.transit(), - _ => self.do_nothing(), - } - } -} - -#[allow(clippy::not_unsafe_ptr_arg_deref)] -pub extern "C" fn new_confirm_reset_create( - n_args: usize, - args: *const Obj, - kwargs: *mut Map, -) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetCreate::new_obj) } -} - -impl ConfirmResetCreate { - fn new_obj(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { - let title: TString = TR::reset__title_create_wallet.into(); - let par_array: [Paragraph<'static>; 3] = [ - Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::reset__by_continuing) - .with_bottom_padding(17), - Paragraph::new(&theme::TEXT_SUB_GREY, TR::reset__more_info_at), - Paragraph::new(&theme::TEXT_SUB_GREY_LIGHT, TR::reset__tos_link), - ]; - let paragraphs = Paragraphs::new(par_array); - let content_intro = Frame::left_aligned(title, SwipeContent::new(paragraphs)) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()) - .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) - .one_button_request(ButtonRequestCode::ResetDevice.with_name("setup_device")); - - // FIXME: TR::reset__cancel_create_wallet should be used but Button text on - // multiple lines not supported yet - let content_menu = Frame::left_aligned( - "".into(), - VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), - ) - .with_cancel_button() - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(|msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }); - - let content_confirm = Frame::left_aligned( - TR::reset__title_create_wallet.into(), - SwipeContent::new(PromptScreen::new_hold_to_confirm()), - ) - .with_menu_button() - .with_footer(TR::instructions__hold_to_confirm.into(), None) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) - .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), - FrameMsg::Button(_) => Some(FlowMsg::Info), - }) - .one_button_request(ButtonRequestCode::ResetDevice.with_name("confirm_setup_device")); - - let res = SwipeFlow::new(&ConfirmResetCreate::Intro)? - .with_page(&ConfirmResetCreate::Intro, content_intro)? - .with_page(&ConfirmResetCreate::Menu, content_menu)? - .with_page(&ConfirmResetCreate::Confirm, content_confirm)?; - Ok(LayoutObj::new(res)?.into()) - } -} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs deleted file mode 100644 index 13210faec4..0000000000 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset_recover.rs +++ /dev/null @@ -1,105 +0,0 @@ -use crate::{ - error, - micropython::{map::Map, obj::Obj, util}, - translations::TR, - ui::{ - button_request::ButtonRequestCode, - component::{ - swipe_detect::SwipeSettings, - text::paragraphs::{Paragraph, Paragraphs}, - ButtonRequestExt, ComponentExt, SwipeDirection, - }, - flow::{ - base::{DecisionBuilder as _, StateChange}, - FlowMsg, FlowState, SwipeFlow, - }, - layout::obj::LayoutObj, - model_mercury::component::SwipeContent, - }, -}; - -use super::super::{ - component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, - theme, -}; - -#[derive(Copy, Clone, PartialEq, Eq)] -pub enum ConfirmResetRecover { - Intro, - Menu, -} - -impl FlowState for ConfirmResetRecover { - #[inline] - fn index(&'static self) -> usize { - *self as usize - } - - fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { - match (self, direction) { - (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), - (Self::Menu, SwipeDirection::Right) => Self::Intro.swipe(direction), - (Self::Intro, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), - _ => self.do_nothing(), - } - } - - fn handle_event(&'static self, msg: FlowMsg) -> StateChange { - match (self, msg) { - (Self::Intro, FlowMsg::Info) => Self::Menu.transit(), - (Self::Menu, FlowMsg::Cancelled) => Self::Intro.swipe_right(), - (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), - _ => self.do_nothing(), - } - } -} - -#[allow(clippy::not_unsafe_ptr_arg_deref)] -pub extern "C" fn new_confirm_reset_recover( - n_args: usize, - args: *const Obj, - kwargs: *mut Map, -) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmResetRecover::new_obj) } -} - -impl ConfirmResetRecover { - fn new_obj(_args: &[Obj], _kwargs: &Map) -> Result<Obj, error::Error> { - let par_array: [Paragraph<'static>; 3] = [ - Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::reset__by_continuing) - .with_bottom_padding(17), - Paragraph::new(&theme::TEXT_SUB_GREY, TR::reset__more_info_at), - Paragraph::new(&theme::TEXT_SUB_GREY_LIGHT, TR::reset__tos_link), - ]; - let paragraphs = Paragraphs::new(par_array); - let content_intro = Frame::left_aligned( - TR::recovery__title_recover.into(), - SwipeContent::new(paragraphs), - ) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()) - .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) - .one_button_request(ButtonRequestCode::ProtectCall.with_name("recover_device")); - - let content_menu = Frame::left_aligned( - "".into(), - VerticalMenu::empty().danger( - theme::ICON_CANCEL, - TR::recovery__title_cancel_recovery.into(), - ), - ) - .with_cancel_button() - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(|msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }); - - let res = SwipeFlow::new(&ConfirmResetRecover::Intro)? - .with_page(&ConfirmResetRecover::Intro, content_intro)? - .with_page(&ConfirmResetRecover::Menu, content_menu)?; - Ok(LayoutObj::new(res)?.into()) - } -} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 47c264c287..7fb877bf36 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,8 +1,7 @@ pub mod confirm_action; pub mod confirm_firmware_update; pub mod confirm_output; -pub mod confirm_reset_create; -pub mod confirm_reset_recover; +pub mod confirm_reset; pub mod confirm_set_new_pin; pub mod confirm_summary; pub mod get_address; @@ -18,8 +17,7 @@ mod util; pub use confirm_firmware_update::new_confirm_firmware_update; pub use confirm_output::new_confirm_output; -pub use confirm_reset_create::ConfirmResetCreate; -pub use confirm_reset_recover::ConfirmResetRecover; +pub use confirm_reset::new_confirm_reset; pub use confirm_set_new_pin::SetNewPin; pub use confirm_summary::new_confirm_summary; pub use get_address::GetAddress; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 2dd793d6bc..656fc6bf64 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1422,13 +1422,9 @@ pub static mp_module_trezorui2: Module = obj_module! { /// the value is to be rendered as binary with monospace font, False otherwise.""" Qstr::MP_QSTR_confirm_properties => obj_fn_kw!(0, new_confirm_properties).as_obj(), - /// def flow_confirm_reset_recover() -> LayoutObj[UiResult]: - /// """Confirm TOS before recovery process.""" - Qstr::MP_QSTR_flow_confirm_reset_recover => obj_fn_kw!(0, flow::confirm_reset_recover::new_confirm_reset_recover).as_obj(), - - /// def flow_confirm_reset_create() -> LayoutObj[UiResult]: - /// """Confirm TOS before creating a wallet and have a user hold to confirm creation.""" - Qstr::MP_QSTR_flow_confirm_reset_create => obj_fn_kw!(0, flow::confirm_reset_create::new_confirm_reset_create).as_obj(), + /// def flow_confirm_reset(recovery: bool) -> LayoutObj[UiResult]: + /// """Confirm TOS before creating wallet creation or wallet recovery.""" + Qstr::MP_QSTR_flow_confirm_reset => obj_fn_kw!(0, flow::confirm_reset::new_confirm_reset).as_obj(), // TODO: supply more arguments for Wipe code setting when figma done /// def flow_confirm_set_new_pin( diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 20a9e563c9..d75e2ca786 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -154,13 +154,8 @@ def confirm_properties( # rust/src/ui/model_mercury/layout.rs -def flow_confirm_reset_recover() -> LayoutObj[UiResult]: - """Confirm TOS before recovery process.""" - - -# rust/src/ui/model_mercury/layout.rs -def flow_confirm_reset_create() -> LayoutObj[UiResult]: - """Confirm TOS before creating a wallet and have a user hold to confirm creation.""" +def flow_confirm_reset(recovery: bool) -> LayoutObj[UiResult]: + """Confirm TOS before creating wallet creation or wallet recovery.""" # rust/src/ui/model_mercury/layout.rs diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 7a519d9c2f..dd92777d4f 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -363,14 +363,9 @@ def confirm_single( def confirm_reset_device(_title: str, recovery: bool = False) -> Awaitable[None]: - if recovery: - return raise_if_not_confirmed( - RustLayout(trezorui2.flow_confirm_reset_recover()), - ) - else: - return raise_if_not_confirmed( - RustLayout(trezorui2.flow_confirm_reset_create()), - ) + return raise_if_not_confirmed( + RustLayout(trezorui2.flow_confirm_reset(recovery=recovery)) + ) async def show_wallet_created_success() -> None: From a15dd6598fd181df42569aa431cb70ebc40d751b Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 26 Jul 2024 10:34:47 +0200 Subject: [PATCH 462/626] fix(core/mercury): improve share words swiping animation --- core/.changelog.d/4063.changed | 1 + .../ui/model_mercury/component/share_words.rs | 95 ++++++++++++------- .../model_mercury/component/swipe_content.rs | 18 ++-- core/embed/rust/src/ui/util.rs | 27 ------ 4 files changed, 73 insertions(+), 68 deletions(-) create mode 100644 core/.changelog.d/4063.changed diff --git a/core/.changelog.d/4063.changed b/core/.changelog.d/4063.changed new file mode 100644 index 0000000000..e3391e23be --- /dev/null +++ b/core/.changelog.d/4063.changed @@ -0,0 +1 @@ +[T3T1] Improve share words swiping animation diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 3150543d65..396200fae6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -1,25 +1,25 @@ use super::{theme, InternallySwipableContent}; use crate::{ strutil::TString, - time::Duration, translations::TR, ui::{ - animation::Animation, component::{ + base::AttachType, swipe_detect::{SwipeConfig, SwipeSettings}, Component, Event, EventCtx, Never, SwipeDirection, }, event::SwipeEvent, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, - model_mercury::component::{Frame, FrameMsg, InternallySwipable}, + model_mercury::component::{ + swipe_content::SwipeAttachAnimation, Frame, FrameMsg, InternallySwipable, + }, shape::{self, Renderer}, - util, }, }; use heapless::Vec; const MAX_WORDS: usize = 33; // super-shamir has 33 words, all other have less -const ANIMATION_DURATION_MS: Duration = Duration::from_millis(166); + type IndexVec = Vec<u8, MAX_WORDS>; /// Component showing mnemonic/share words during backup procedure. Model T3T1 @@ -133,9 +133,9 @@ struct ShareWordsInner<'a> { next_index: i16, /// Area reserved for a shown word from mnemonic/share area_word: Rect, - /// `Some` when transition animation is in progress - animation: Option<Animation<f32>>, progress: i16, + attach_animation: SwipeAttachAnimation, + wait_for_attach: bool, } impl<'a> ShareWordsInner<'a> { @@ -147,8 +147,9 @@ impl<'a> ShareWordsInner<'a> { page_index: 0, next_index: 0, area_word: Rect::zero(), - animation: None, progress: 0, + attach_animation: SwipeAttachAnimation::new(), + wait_for_attach: false, } } @@ -175,6 +176,27 @@ impl<'a> ShareWordsInner<'a> { .render(target); }); } + + fn should_animate_progress(&self) -> (SwipeDirection, bool) { + let (dir, should_animate) = if self.page_index < self.next_index { + (SwipeDirection::Up, !self.is_final_page()) + } else { + (SwipeDirection::Down, !self.is_first_page()) + }; + (dir, should_animate) + } + + fn should_animate_attach(&self, event: Event) -> (SwipeDirection, bool) { + match event { + Event::Attach(AttachType::Swipe(SwipeDirection::Up)) => { + (SwipeDirection::Up, !self.is_first_page()) + } + Event::Attach(AttachType::Swipe(SwipeDirection::Down)) => { + (SwipeDirection::Down, !self.is_final_page()) + } + _ => (SwipeDirection::Up, false), + } + } } impl<'a> Component for ShareWordsInner<'a> { @@ -197,19 +219,29 @@ impl<'a> Component for ShareWordsInner<'a> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { ctx.set_page_count(self.share_words.len()); + let (_, should_animate) = self.should_animate_attach(event); + + self.attach_animation.lazy_start(ctx, event, should_animate); + match event { Event::Attach(_) => { self.progress = 0; + + if !should_animate { + self.wait_for_attach = false; + } } Event::Swipe(SwipeEvent::End(dir)) => match dir { SwipeDirection::Up if !self.is_final_page() => { self.progress = 0; self.page_index = (self.page_index + 1).min(self.share_words.len() as i16 - 1); + self.wait_for_attach = true; ctx.request_paint(); } SwipeDirection::Down if !self.is_first_page() => { self.progress = 0; self.page_index = self.page_index.saturating_sub(1); + self.wait_for_attach = true; ctx.request_paint(); } _ => {} @@ -260,35 +292,34 @@ impl<'a> Component for ShareWordsInner<'a> { .with_fg(theme::GREY) .render(target); - let (dir, should_animate) = if self.page_index < self.next_index { - ( - SwipeDirection::Up, - self.page_index < self.share_words.len() as i16 - 1, - ) - } else { - (SwipeDirection::Down, self.page_index > 0) - }; + let (dir, should_animate_progress) = self.should_animate_progress(); - if self.progress > 0 && should_animate { + if self.progress > 0 && should_animate_progress { target.in_clip(self.area_word, &|target| { - let progress = pareen::constant(0.0).seq_ease_out( - 0.0, - easer::functions::Cubic, - 1.0, - pareen::constant(1.0), - ); - - util::render_slide( - |target| self.render_word(self.page_index, target, target.viewport().clip), - |target| self.render_word(self.next_index, target, target.viewport().clip), - progress.eval(self.progress as f32 / 1000.0), - dir, - target, - ) + let bounds = target.viewport().clip; + let full_offset = dir.as_offset(bounds.size()); + let current_offset = full_offset * (self.progress as f32 / 1000.0); + + target.with_origin(current_offset, &|target| { + self.render_word(self.page_index, target, target.viewport().clip) + }); + }); + } else if (self.attach_animation.is_active() || self.wait_for_attach) && self.progress == 0 + { + let t = self.attach_animation.eval(); + + let offset = self + .attach_animation + .get_offset(t, ShareWordsInner::AREA_WORD_HEIGHT); + + target.in_clip(self.area_word, &|target| { + target.with_origin(offset, &|target| { + self.render_word(self.page_index, target, target.viewport().clip) + }); }); } else { self.render_word(self.page_index, target, self.area_word); - }; + } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs index 06e6b4b9f3..fb42a6c37d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs @@ -14,13 +14,13 @@ use crate::{ }; #[derive(Default, Clone)] -struct AttachAnimation { +pub struct SwipeAttachAnimation { pub timer: Stopwatch, pub attach_type: Option<AttachType>, pub show_attach_anim: bool, } -impl AttachAnimation { +impl SwipeAttachAnimation { const DURATION_MS: u32 = 500; pub fn new() -> Self { @@ -48,7 +48,7 @@ impl AttachAnimation { self.timer.elapsed().to_millis() as f32 / 1000.0 } - pub fn get_offset(&self, t: f32) -> Offset { + pub fn get_offset(&self, t: f32, max_offset: i16) -> Offset { let value = pareen::constant(0.0).seq_ease_in( 0.0, easer::functions::Linear, @@ -58,14 +58,14 @@ impl AttachAnimation { match self.attach_type { Some(AttachType::Initial) => { - Offset::lerp(Offset::new(0, -20), Offset::zero(), value.eval(t)) + Offset::lerp(Offset::new(0, -max_offset), Offset::zero(), value.eval(t)) } Some(AttachType::Swipe(dir)) => match dir { SwipeDirection::Up => { - Offset::lerp(Offset::new(0, 20), Offset::zero(), value.eval(t)) + Offset::lerp(Offset::new(0, max_offset), Offset::zero(), value.eval(t)) } SwipeDirection::Down => { - Offset::lerp(Offset::new(0, -20), Offset::zero(), value.eval(t)) + Offset::lerp(Offset::new(0, -max_offset), Offset::zero(), value.eval(t)) } _ => Offset::zero(), }, @@ -130,7 +130,7 @@ impl AttachAnimation { struct SwipeContext { progress: i16, dir: SwipeDirection, - attach_animation: AttachAnimation, + attach_animation: SwipeAttachAnimation, } impl SwipeContext { @@ -138,7 +138,7 @@ impl SwipeContext { Self { progress: 0, dir: SwipeDirection::Up, - attach_animation: AttachAnimation::new(), + attach_animation: SwipeAttachAnimation::new(), } } @@ -174,7 +174,7 @@ impl SwipeContext { } else { let t = self.attach_animation.eval(); let opacity = self.attach_animation.get_opacity(t); - offset = self.attach_animation.get_offset(t); + offset = self.attach_animation.get_offset(t, 20); mask = 255 - opacity; if offset.x == 0 && offset.y == 0 { diff --git a/core/embed/rust/src/ui/util.rs b/core/embed/rust/src/ui/util.rs index c330eee000..1537a5f520 100644 --- a/core/embed/rust/src/ui/util.rs +++ b/core/embed/rust/src/ui/util.rs @@ -1,6 +1,5 @@ use crate::{ strutil::{ShortString, TString}, - time::Duration, ui::{ component::text::TextStyle, display, @@ -191,32 +190,6 @@ macro_rules! include_res { } pub(crate) use include_res; -pub const SLIDE_DURATION_MS: Duration = Duration::from_millis(333); - -#[cfg(feature = "new_rendering")] -pub fn render_slide<'s, F0, F1, R>( - render_old: F0, - render_new: F1, - progress: f32, - direction: crate::ui::component::SwipeDirection, - target: &mut R, -) where - R: crate::ui::shape::Renderer<'s>, - F0: Fn(&mut R), - F1: Fn(&mut R), -{ - let bounds = target.viewport().clip; - let full_offset = direction.as_offset(bounds.size()); - let current_offset = full_offset * progress; - - target.with_origin(current_offset, &|target| { - render_old(target); - }); - target.with_origin(current_offset - full_offset, &|target| { - render_new(target); - }); -} - #[cfg(test)] mod tests { use crate::strutil; From 6f96585d4b159cf922497e26a0aa1835be434920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Wed, 17 Jul 2024 16:29:05 +0200 Subject: [PATCH 463/626] feat(core): make brightness an u8 [no changelog] --- core/embed/rust/src/ui/display/mod.rs | 20 ++++++------- .../ui/model_mercury/flow/set_brightness.rs | 16 +++++----- core/embed/rust/src/ui/model_mercury/mod.rs | 10 +++---- .../src/ui/model_mercury/theme/backlight.rs | 30 +++++++++---------- .../rust/src/ui/model_tt/component/page.rs | 2 +- .../ui/model_tt/component/set_brightness.rs | 8 ++--- .../src/ui/model_tt/component/simple_page.rs | 2 +- .../rust/src/ui/model_tt/component/swipe.rs | 6 ++-- core/embed/rust/src/ui/model_tt/layout.rs | 2 +- core/embed/rust/src/ui/model_tt/mod.rs | 10 +++---- .../rust/src/ui/model_tt/theme/backlight.rs | 30 +++++++++---------- core/embed/rust/src/ui/ui_features.rs | 10 +++---- 12 files changed, 71 insertions(+), 75 deletions(-) diff --git a/core/embed/rust/src/ui/display/mod.rs b/core/embed/rust/src/ui/display/mod.rs index e95fb11bbf..390c977eff 100644 --- a/core/embed/rust/src/ui/display/mod.rs +++ b/core/embed/rust/src/ui/display/mod.rs @@ -49,44 +49,44 @@ use crate::trezorhal::{ }; use crate::ui::constant::WIDTH; -pub fn backlight() -> u16 { - display::backlight(-1) as u16 +pub fn backlight() -> u8 { + display::backlight(-1) as u8 } #[cfg(feature = "backlight")] -pub fn set_backlight(val: u16) { +pub fn set_backlight(val: u8) { display::backlight(val as i32); } #[cfg(feature = "backlight")] -pub fn fade_backlight(target: u16) { +pub fn fade_backlight(target: u8) { const FADE_DURATION_MS: u32 = 50; fade_backlight_duration(target, FADE_DURATION_MS); } #[cfg(feature = "backlight")] -pub fn fade_backlight_duration(target: u16, duration_ms: u32) { +pub fn fade_backlight_duration(target: u8, duration_ms: u32) { let target = target as i32; let duration_ms = duration_ms as i32; let current = backlight() as i32; for i in 0..duration_ms { let val = i32::lerp(current, target, i as f32 / duration_ms as f32); - set_backlight(val as u16); + set_backlight(val as u8); time::sleep(Duration::from_millis(1)); } //account for imprecise rounding - set_backlight(target as u16); + set_backlight(target as u8); } #[cfg(not(feature = "backlight"))] -pub fn set_backlight(_: u16) {} +pub fn set_backlight(_: u8) {} #[cfg(not(feature = "backlight"))] -pub fn fade_backlight(_: u16) {} +pub fn fade_backlight(_: u8) {} #[cfg(not(feature = "backlight"))] -pub fn fade_backlight_duration(_: u16, _: u32) {} +pub fn fade_backlight_duration(_: u8, _: u32) {} #[cfg(not(feature = "framebuffer"))] /// Fill a whole rectangle with a specific color. diff --git a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs index 22a391d6c6..1e2e470dd0 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs @@ -1,4 +1,4 @@ -use core::sync::atomic::{AtomicU16, Ordering}; +use core::sync::atomic::{AtomicU8, Ordering}; use crate::{ error::Error, @@ -63,7 +63,7 @@ impl FlowState for SetBrightness { } } -static BRIGHTNESS: AtomicU16 = AtomicU16::new(0); +static BRIGHTNESS: AtomicU8 = AtomicU8::new(0); #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_set_brightness(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { @@ -72,13 +72,13 @@ pub extern "C" fn new_set_brightness(n_args: usize, args: *const Obj, kwargs: *m impl SetBrightness { fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, Error> { - let current: Option<u16> = kwargs.get(Qstr::MP_QSTR_current)?.try_into_option()?; + let current: Option<u8> = kwargs.get(Qstr::MP_QSTR_current)?.try_into_option()?; let content_slider = Frame::left_aligned( TR::brightness__title.into(), NumberInputSliderDialog::new( - theme::backlight::get_backlight_min(), - theme::backlight::get_backlight_max(), - current.unwrap_or(theme::backlight::get_backlight_normal()), + theme::backlight::get_backlight_min() as u16, + theme::backlight::get_backlight_max() as u16, + current.unwrap_or(theme::backlight::get_backlight_normal()) as u16, ), ) .with_subtitle(TR::homescreen__settings_subtitle.into()) @@ -87,7 +87,7 @@ impl SetBrightness { .map(|msg| match msg { FrameMsg::Content(NumberInputSliderDialogMsg::Changed(n)) => { display::backlight(n as _); - BRIGHTNESS.store(n, Ordering::Relaxed); + BRIGHTNESS.store(n as u8, Ordering::Relaxed); None } FrameMsg::Button(_) => Some(FlowMsg::Info), @@ -114,7 +114,7 @@ impl SetBrightness { .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(move |msg| match msg { FrameMsg::Content(()) => { - let _ = storage::set_brightness(BRIGHTNESS.load(Ordering::Relaxed) as u8); + let _ = storage::set_brightness(BRIGHTNESS.load(Ordering::Relaxed)); Some(FlowMsg::Confirmed) } FrameMsg::Button(_) => Some(FlowMsg::Info), diff --git a/core/embed/rust/src/ui/model_mercury/mod.rs b/core/embed/rust/src/ui/model_mercury/mod.rs index 0c57214d19..85dde610d0 100644 --- a/core/embed/rust/src/ui/model_mercury/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/mod.rs @@ -33,27 +33,27 @@ impl UIFeaturesCommon for ModelMercuryFeatures { } #[cfg(feature = "backlight")] - fn get_backlight_none() -> u16 { + fn get_backlight_none() -> u8 { backlight::get_backlight_none() } #[cfg(feature = "backlight")] - fn get_backlight_normal() -> u16 { + fn get_backlight_normal() -> u8 { backlight::get_backlight_normal() } #[cfg(feature = "backlight")] - fn get_backlight_low() -> u16 { + fn get_backlight_low() -> u8 { backlight::get_backlight_low() } #[cfg(feature = "backlight")] - fn get_backlight_dim() -> u16 { + fn get_backlight_dim() -> u8 { backlight::get_backlight_dim() } #[cfg(feature = "backlight")] - fn get_backlight_max() -> u16 { + fn get_backlight_max() -> u8 { backlight::get_backlight_max() } diff --git a/core/embed/rust/src/ui/model_mercury/theme/backlight.rs b/core/embed/rust/src/ui/model_mercury/theme/backlight.rs index 7dca47cc39..fd92eed535 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/backlight.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/backlight.rs @@ -10,43 +10,41 @@ const BACKLIGHT_MIN: u8 = 10; const BACKLIGHT_MAX: u8 = 255; #[cfg(feature = "bootloader")] -pub fn get_backlight_normal() -> u16 { - BACKLIGHT_NORMAL.into() +pub fn get_backlight_normal() -> u8 { + BACKLIGHT_NORMAL } #[cfg(not(feature = "bootloader"))] -pub fn get_backlight_normal() -> u16 { +pub fn get_backlight_normal() -> u8 { storage::get_brightness() .unwrap_or(BACKLIGHT_NORMAL) .clamp(BACKLIGHT_MIN, BACKLIGHT_MAX) - .into() } #[cfg(feature = "bootloader")] -pub fn get_backlight_low() -> u16 { - BACKLIGHT_LOW.into() +pub fn get_backlight_low() -> u8 { + BACKLIGHT_LOW } #[cfg(not(feature = "bootloader"))] -pub fn get_backlight_low() -> u16 { +pub fn get_backlight_low() -> u8 { storage::get_brightness() .unwrap_or(BACKLIGHT_LOW) .clamp(BACKLIGHT_MIN, BACKLIGHT_LOW) - .into() } -pub fn get_backlight_dim() -> u16 { - BACKLIGHT_DIM.into() +pub fn get_backlight_dim() -> u8 { + BACKLIGHT_DIM } -pub fn get_backlight_none() -> u16 { - BACKLIGHT_NONE.into() +pub fn get_backlight_none() -> u8 { + BACKLIGHT_NONE } -pub fn get_backlight_max() -> u16 { - BACKLIGHT_MAX.into() +pub fn get_backlight_max() -> u8 { + BACKLIGHT_MAX } -pub fn get_backlight_min() -> u16 { - BACKLIGHT_MIN.into() +pub fn get_backlight_min() -> u8 { + BACKLIGHT_MIN } diff --git a/core/embed/rust/src/ui/model_tt/component/page.rs b/core/embed/rust/src/ui/model_tt/component/page.rs index b893d12a9e..1d59d7ba55 100644 --- a/core/embed/rust/src/ui/model_tt/component/page.rs +++ b/core/embed/rust/src/ui/model_tt/component/page.rs @@ -43,7 +43,7 @@ pub struct ButtonPage<T> { /// Whether to pass-through right swipe to parent component. swipe_right: bool, /// Fade to given backlight level on next paint(). - fade: Cell<Option<u16>>, + fade: Cell<Option<u8>>, } impl<T> ButtonPage<T> diff --git a/core/embed/rust/src/ui/model_tt/component/set_brightness.rs b/core/embed/rust/src/ui/model_tt/component/set_brightness.rs index d47c84de82..0de97478f1 100644 --- a/core/embed/rust/src/ui/model_tt/component/set_brightness.rs +++ b/core/embed/rust/src/ui/model_tt/component/set_brightness.rs @@ -17,12 +17,12 @@ use super::{ pub struct SetBrightnessDialog(NumberInputSliderDialog); impl SetBrightnessDialog { - pub fn new(current: Option<u16>) -> Self { + pub fn new(current: Option<u8>) -> Self { let current = current.unwrap_or(theme::backlight::get_backlight_normal()); Self(NumberInputSliderDialog::new( - theme::backlight::get_backlight_min(), - theme::backlight::get_backlight_max(), - current, + theme::backlight::get_backlight_min() as u16, + theme::backlight::get_backlight_max() as u16, + current as u16, )) } } diff --git a/core/embed/rust/src/ui/model_tt/component/simple_page.rs b/core/embed/rust/src/ui/model_tt/component/simple_page.rs index a24bf9b65c..4941fef3fa 100644 --- a/core/embed/rust/src/ui/model_tt/component/simple_page.rs +++ b/core/embed/rust/src/ui/model_tt/component/simple_page.rs @@ -18,7 +18,7 @@ pub struct SimplePage<T> { scrollbar: ScrollBar, axis: Axis, swipe_right_to_go_back: bool, - fade: Cell<Option<u16>>, + fade: Cell<Option<u8>>, } impl<T> SimplePage<T> diff --git a/core/embed/rust/src/ui/model_tt/component/swipe.rs b/core/embed/rust/src/ui/model_tt/component/swipe.rs index 3539900d45..5902c903ec 100644 --- a/core/embed/rust/src/ui/model_tt/component/swipe.rs +++ b/core/embed/rust/src/ui/model_tt/component/swipe.rs @@ -20,8 +20,8 @@ pub struct Swipe { pub allow_down: bool, pub allow_left: bool, pub allow_right: bool, - backlight_start: u16, - backlight_end: u16, + backlight_start: u8, + backlight_end: u8, origin: Option<Point>, } @@ -82,7 +82,7 @@ impl Swipe { let start = self.backlight_start as f32; let end = self.backlight_end as f32; let value = start + ratio * (end - start); - display::set_backlight(value as u16); + display::set_backlight(value as u8); } } diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 7417679a73..f68f377b61 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1316,7 +1316,7 @@ extern "C" fn new_request_number(n_args: usize, args: *const Obj, kwargs: *mut M extern "C" fn new_set_brightness(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let current: Option<u16> = kwargs.get(Qstr::MP_QSTR_current)?.try_into_option()?; + let current: Option<u8> = kwargs.get(Qstr::MP_QSTR_current)?.try_into_option()?; let obj = LayoutObj::new(Frame::centered( theme::label_title(), TR::brightness__title.into(), diff --git a/core/embed/rust/src/ui/model_tt/mod.rs b/core/embed/rust/src/ui/model_tt/mod.rs index 4754ee74ec..eb97b3e3e0 100644 --- a/core/embed/rust/src/ui/model_tt/mod.rs +++ b/core/embed/rust/src/ui/model_tt/mod.rs @@ -34,27 +34,27 @@ impl UIFeaturesCommon for ModelTTFeatures { } #[cfg(feature = "backlight")] - fn get_backlight_none() -> u16 { + fn get_backlight_none() -> u8 { backlight::get_backlight_none() } #[cfg(feature = "backlight")] - fn get_backlight_normal() -> u16 { + fn get_backlight_normal() -> u8 { backlight::get_backlight_normal() } #[cfg(feature = "backlight")] - fn get_backlight_low() -> u16 { + fn get_backlight_low() -> u8 { backlight::get_backlight_low() } #[cfg(feature = "backlight")] - fn get_backlight_dim() -> u16 { + fn get_backlight_dim() -> u8 { backlight::get_backlight_dim() } #[cfg(feature = "backlight")] - fn get_backlight_max() -> u16 { + fn get_backlight_max() -> u8 { backlight::get_backlight_max() } diff --git a/core/embed/rust/src/ui/model_tt/theme/backlight.rs b/core/embed/rust/src/ui/model_tt/theme/backlight.rs index 7dca47cc39..fd92eed535 100644 --- a/core/embed/rust/src/ui/model_tt/theme/backlight.rs +++ b/core/embed/rust/src/ui/model_tt/theme/backlight.rs @@ -10,43 +10,41 @@ const BACKLIGHT_MIN: u8 = 10; const BACKLIGHT_MAX: u8 = 255; #[cfg(feature = "bootloader")] -pub fn get_backlight_normal() -> u16 { - BACKLIGHT_NORMAL.into() +pub fn get_backlight_normal() -> u8 { + BACKLIGHT_NORMAL } #[cfg(not(feature = "bootloader"))] -pub fn get_backlight_normal() -> u16 { +pub fn get_backlight_normal() -> u8 { storage::get_brightness() .unwrap_or(BACKLIGHT_NORMAL) .clamp(BACKLIGHT_MIN, BACKLIGHT_MAX) - .into() } #[cfg(feature = "bootloader")] -pub fn get_backlight_low() -> u16 { - BACKLIGHT_LOW.into() +pub fn get_backlight_low() -> u8 { + BACKLIGHT_LOW } #[cfg(not(feature = "bootloader"))] -pub fn get_backlight_low() -> u16 { +pub fn get_backlight_low() -> u8 { storage::get_brightness() .unwrap_or(BACKLIGHT_LOW) .clamp(BACKLIGHT_MIN, BACKLIGHT_LOW) - .into() } -pub fn get_backlight_dim() -> u16 { - BACKLIGHT_DIM.into() +pub fn get_backlight_dim() -> u8 { + BACKLIGHT_DIM } -pub fn get_backlight_none() -> u16 { - BACKLIGHT_NONE.into() +pub fn get_backlight_none() -> u8 { + BACKLIGHT_NONE } -pub fn get_backlight_max() -> u16 { - BACKLIGHT_MAX.into() +pub fn get_backlight_max() -> u8 { + BACKLIGHT_MAX } -pub fn get_backlight_min() -> u16 { - BACKLIGHT_MIN.into() +pub fn get_backlight_min() -> u8 { + BACKLIGHT_MIN } diff --git a/core/embed/rust/src/ui/ui_features.rs b/core/embed/rust/src/ui/ui_features.rs index d45e48cae6..41e507ff54 100644 --- a/core/embed/rust/src/ui/ui_features.rs +++ b/core/embed/rust/src/ui/ui_features.rs @@ -11,19 +11,19 @@ pub trait UIFeaturesCommon { fn fadeout() {} fn backlight_on() {} - fn get_backlight_none() -> u16 { + fn get_backlight_none() -> u8 { 0 } - fn get_backlight_normal() -> u16 { + fn get_backlight_normal() -> u8 { 0 } - fn get_backlight_low() -> u16 { + fn get_backlight_low() -> u8 { 0 } - fn get_backlight_dim() -> u16 { + fn get_backlight_dim() -> u8 { 0 } - fn get_backlight_max() -> u16 { + fn get_backlight_max() -> u8 { 0 } From 6d64448bd0e85ccf44a87a213662f726fd5b18a6 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 29 Jul 2024 14:17:20 +0200 Subject: [PATCH 464/626] chore: fix failing Poetry env poetry env was failing on click-default-group, which is unmaintained and apparently used a long-deprecated setuptools component. Today's setuptools update removed it, which broke installation. Fortunately, we don't need click-default-group for anything, and neither does towncrier (which pulled in that dep), whose maintainers cleverly realized _last year_ that they'd better vendor the package. Updating towncrier seems to fix the problem. Also bumping locked version of requests because poetry complains that the locked one was yanked... --- poetry.lock | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/poetry.lock b/poetry.lock index c9ac45a372..ceb8bdf72f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -224,19 +224,6 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -[[package]] -name = "click-default-group" -version = "1.2.2" -description = "Extends click.Group to invoke a command without explicit subcommand name" -optional = false -python-versions = "*" -files = [ - {file = "click-default-group-1.2.2.tar.gz", hash = "sha256:d9560e8e8dfa44b3562fbc9425042a0fd6d21956fcc2db0077f63f34253ab904"}, -] - -[package.dependencies] -click = "*" - [[package]] name = "colorama" version = "0.4.6" @@ -1358,13 +1345,13 @@ files = [ [[package]] name = "requests" -version = "2.32.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ - {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, - {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -1520,18 +1507,17 @@ files = [ [[package]] name = "towncrier" -version = "23.6.0" +version = "23.11.0" description = "Building newsfiles for your project." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "towncrier-23.6.0-py3-none-any.whl", hash = "sha256:da552f29192b3c2b04d630133f194c98e9f14f0558669d427708e203fea4d0a5"}, - {file = "towncrier-23.6.0.tar.gz", hash = "sha256:fc29bd5ab4727c8dacfbe636f7fb5dc53b99805b62da1c96b214836159ff70c1"}, + {file = "towncrier-23.11.0-py3-none-any.whl", hash = "sha256:2e519ca619426d189e3c98c99558fe8be50c9ced13ea1fc20a4a353a95d2ded7"}, + {file = "towncrier-23.11.0.tar.gz", hash = "sha256:13937c247e3f8ae20ac44d895cf5f96a60ad46cfdcc1671759530d7837d9ee5d"}, ] [package.dependencies] click = "*" -click-default-group = "*" importlib-resources = {version = ">=5", markers = "python_version < \"3.10\""} incremental = "*" jinja2 = "*" From 79feb690ad65b25d71b46a643e897844bac43db3 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 25 Jul 2024 11:40:50 +0200 Subject: [PATCH 465/626] fix(core/mercury): prefer vertical swipes over horizontal --- core/.changelog.d/4060.fixed | 1 + .../rust/src/ui/component/swipe_detect.rs | 34 +++++++++++++------ 2 files changed, 25 insertions(+), 10 deletions(-) create mode 100644 core/.changelog.d/4060.fixed diff --git a/core/.changelog.d/4060.fixed b/core/.changelog.d/4060.fixed new file mode 100644 index 0000000000..8730e08b48 --- /dev/null +++ b/core/.changelog.d/4060.fixed @@ -0,0 +1 @@ +[T3T1] Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes diff --git a/core/embed/rust/src/ui/component/swipe_detect.rs b/core/embed/rust/src/ui/component/swipe_detect.rs index c266665f12..f403d39793 100644 --- a/core/embed/rust/src/ui/component/swipe_detect.rs +++ b/core/embed/rust/src/ui/component/swipe_detect.rs @@ -162,8 +162,10 @@ impl SwipeDetect { const TRIGGER_THRESHOLD: f32 = 0.3; const DETECT_THRESHOLD: f32 = 0.1; - const MIN_LOCK: u16 = (Self::DISTANCE as f32 * Self::DETECT_THRESHOLD) as u16; - const MIN_TRIGGER: u16 = (Self::DISTANCE as f32 * Self::TRIGGER_THRESHOLD) as u16; + const VERTICAL_PREFERENCE: f32 = 2.0; + + const MIN_LOCK: f32 = Self::DISTANCE as f32 * Self::DETECT_THRESHOLD; + const MIN_TRIGGER: f32 = Self::DISTANCE as f32 * Self::TRIGGER_THRESHOLD; pub fn new() -> Self { Self { @@ -174,12 +176,22 @@ impl SwipeDetect { } } - const fn min_lock(&self) -> u16 { - Self::MIN_LOCK + fn min_lock(&self, dir: SwipeDirection) -> u16 { + match dir { + SwipeDirection::Up | SwipeDirection::Down => Self::MIN_LOCK as u16, + SwipeDirection::Left | SwipeDirection::Right => { + (Self::MIN_LOCK * Self::VERTICAL_PREFERENCE) as u16 + } + } } - const fn min_trigger(&self) -> u16 { - Self::MIN_TRIGGER + fn min_trigger(&self, dir: SwipeDirection) -> u16 { + match dir { + SwipeDirection::Up | SwipeDirection::Down => Self::MIN_TRIGGER as u16, + SwipeDirection::Left | SwipeDirection::Right => { + (Self::MIN_TRIGGER * Self::VERTICAL_PREFERENCE) as u16 + } + } } fn is_lockable(&self, dir: SwipeDirection) -> bool { @@ -187,7 +199,7 @@ impl SwipeDetect { return false; }; - let min_distance = self.min_trigger() as i16; + let min_distance = self.min_trigger(dir) as i16; match dir { SwipeDirection::Up => origin.y > min_distance, @@ -289,13 +301,13 @@ impl SwipeDetect { let res = match self.locked { Some(locked) => { // advance in locked direction only - let moved = config.progress(locked, ofs, self.min_lock()); + let moved = config.progress(locked, ofs, self.min_lock(locked)); Some(SwipeDetectMsg::Move(locked, self.progress(moved))) } None => { let mut res = None; for dir in SwipeDirection::iter() { - let progress = config.progress(dir, ofs, self.min_lock()); + let progress = config.progress(dir, ofs, self.min_lock(dir)); if progress > 0 && self.is_lockable(dir) { self.locked = Some(dir); res = Some(SwipeDetectMsg::Start(dir)); @@ -331,7 +343,9 @@ impl SwipeDetect { let final_value = match self.locked { // advance in locked direction only trigger animation towards ending // position - Some(locked) if config.progress(locked, ofs, self.min_trigger()) > 0 => { + Some(locked) + if config.progress(locked, ofs, self.min_trigger(locked)) > 0 => + { Self::PROGRESS_MAX } // advance in direction other than locked trigger animation towards starting From 33f5d4733065ac631d61ff458a5db32c81641124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Fri, 26 Jul 2024 09:58:34 +0200 Subject: [PATCH 466/626] chore(core): rename "hidden wallet" -> "passphrase wallet" [no changelog] --- core/embed/rust/librust_qstr.h | 4 +- .../generated/translated_string.rs | 12 +- core/mocks/trezortranslate_keys.pyi | 4 +- core/src/apps/common/passphrase.py | 6 +- core/tools/translations/rules.json | 4 +- core/translations/cs.json | 4 +- core/translations/de.json | 4 +- core/translations/en.json | 4 +- core/translations/es.json | 4 +- core/translations/fr.json | 4 +- core/translations/order.json | 4 +- core/translations/signatures.json | 6 +- tests/ui_tests/fixtures.json | 624 +++++++++--------- 13 files changed, 342 insertions(+), 342 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 5c642a9661..eb858009fc 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -342,10 +342,9 @@ static void _librust_qstrs(void) { MP_QSTR_page_count; MP_QSTR_pages; MP_QSTR_paint; - MP_QSTR_passphrase__access_hidden_wallet; + MP_QSTR_passphrase__access_wallet; MP_QSTR_passphrase__always_on_device; MP_QSTR_passphrase__from_host_not_shown; - MP_QSTR_passphrase__hidden_wallet; MP_QSTR_passphrase__hide; MP_QSTR_passphrase__next_screen_will_show_passphrase; MP_QSTR_passphrase__please_enter; @@ -358,6 +357,7 @@ static void _librust_qstrs(void) { MP_QSTR_passphrase__title_source; MP_QSTR_passphrase__turn_off; MP_QSTR_passphrase__turn_on; + MP_QSTR_passphrase__wallet; MP_QSTR_path; MP_QSTR_pin__cancel_description; MP_QSTR_pin__cancel_info; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 6ca003b263..0729a15eec 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -717,10 +717,10 @@ pub enum TranslatedString { nem__unencrypted = 430, // "Unencrypted:" #[cfg(feature = "universal_fw")] nem__unknown_mosaic = 431, // "Unknown mosaic!" - passphrase__access_hidden_wallet = 432, // "Access hidden wallet?" + passphrase__access_wallet = 432, // "Access passphrase wallet?" passphrase__always_on_device = 433, // "Always enter your passphrase on Trezor?" passphrase__from_host_not_shown = 434, // "Passphrase provided by host will be used but will not be displayed due to the device settings." - passphrase__hidden_wallet = 435, // "Hidden wallet" + passphrase__wallet = 435, // "Passphrase wallet" passphrase__hide = 436, // "Hide passphrase coming from host?" passphrase__next_screen_will_show_passphrase = 437, // "The next screen shows your passphrase." passphrase__please_enter = 438, // "Please enter your passphrase." @@ -2068,10 +2068,10 @@ impl TranslatedString { Self::nem__unencrypted => "Unencrypted:", #[cfg(feature = "universal_fw")] Self::nem__unknown_mosaic => "Unknown mosaic!", - Self::passphrase__access_hidden_wallet => "Access hidden wallet?", + Self::passphrase__access_wallet => "Access passphrase wallet?", Self::passphrase__always_on_device => "Always enter your passphrase on Trezor?", Self::passphrase__from_host_not_shown => "Passphrase provided by host will be used but will not be displayed due to the device settings.", - Self::passphrase__hidden_wallet => "Hidden wallet", + Self::passphrase__wallet => "Passphrase wallet", Self::passphrase__hide => "Hide passphrase coming from host?", Self::passphrase__next_screen_will_show_passphrase => "The next screen shows your passphrase.", Self::passphrase__please_enter => "Please enter your passphrase.", @@ -3420,10 +3420,10 @@ impl TranslatedString { Qstr::MP_QSTR_nem__unencrypted => Some(Self::nem__unencrypted), #[cfg(feature = "universal_fw")] Qstr::MP_QSTR_nem__unknown_mosaic => Some(Self::nem__unknown_mosaic), - Qstr::MP_QSTR_passphrase__access_hidden_wallet => Some(Self::passphrase__access_hidden_wallet), + Qstr::MP_QSTR_passphrase__access_wallet => Some(Self::passphrase__access_wallet), Qstr::MP_QSTR_passphrase__always_on_device => Some(Self::passphrase__always_on_device), Qstr::MP_QSTR_passphrase__from_host_not_shown => Some(Self::passphrase__from_host_not_shown), - Qstr::MP_QSTR_passphrase__hidden_wallet => Some(Self::passphrase__hidden_wallet), + Qstr::MP_QSTR_passphrase__wallet => Some(Self::passphrase__wallet), Qstr::MP_QSTR_passphrase__hide => Some(Self::passphrase__hide), Qstr::MP_QSTR_passphrase__next_screen_will_show_passphrase => Some(Self::passphrase__next_screen_will_show_passphrase), Qstr::MP_QSTR_passphrase__please_enter => Some(Self::passphrase__please_enter), diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index e651f064ca..511b8c3543 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -485,10 +485,9 @@ class TR: nem__under_namespace: str = "under namespace" nem__unencrypted: str = "Unencrypted:" nem__unknown_mosaic: str = "Unknown mosaic!" - passphrase__access_hidden_wallet: str = "Access hidden wallet?" + passphrase__access_wallet: str = "Access passphrase wallet?" passphrase__always_on_device: str = "Always enter your passphrase on Trezor?" passphrase__from_host_not_shown: str = "Passphrase provided by host will be used but will not be displayed due to the device settings." - passphrase__hidden_wallet: str = "Hidden wallet" passphrase__hide: str = "Hide passphrase coming from host?" passphrase__next_screen_will_show_passphrase: str = "The next screen shows your passphrase." passphrase__please_enter: str = "Please enter your passphrase." @@ -501,6 +500,7 @@ class TR: passphrase__title_source: str = "Passphrase source" passphrase__turn_off: str = "Turn off passphrase protection?" passphrase__turn_on: str = "Turn on passphrase protection?" + passphrase__wallet: str = "Passphrase wallet" pin__cancel_description: str = "Continue without PIN" pin__cancel_info: str = "Without a PIN, anyone can access this device." pin__cancel_setup: str = "Cancel PIN setup" diff --git a/core/src/apps/common/passphrase.py b/core/src/apps/common/passphrase.py index 0d57cd1785..da5af75d7f 100644 --- a/core/src/apps/common/passphrase.py +++ b/core/src/apps/common/passphrase.py @@ -61,15 +61,15 @@ async def _request_on_host() -> str: if storage_device.get_hide_passphrase_from_host(): await confirm_action( "passphrase_host1_hidden", - TR.passphrase__hidden_wallet, + TR.passphrase__wallet, description=TR.passphrase__from_host_not_shown, prompt_screen=True, - prompt_title=TR.passphrase__access_hidden_wallet, + prompt_title=TR.passphrase__access_wallet, ) else: await confirm_action( "passphrase_host1", - TR.passphrase__hidden_wallet, + TR.passphrase__wallet, description=TR.passphrase__next_screen_will_show_passphrase, verb=TR.buttons__continue, ) diff --git a/core/tools/translations/rules.json b/core/tools/translations/rules.json index cb550232b5..247ac4655b 100644 --- a/core/tools/translations/rules.json +++ b/core/tools/translations/rules.json @@ -433,10 +433,10 @@ "nem__under_namespace": "text,1", "nem__unencrypted": "text,1", "nem__unknown_mosaic": "text,1", - "passphrase__access_hidden_wallet": "text,1", + "passphrase__access_wallet": "text,1", "passphrase__always_on_device": "text,4", "passphrase__from_host_not_shown": "text,5", - "passphrase__hidden_wallet": "title,1", + "passphrase__wallet": "title,1", "passphrase__hide": "text,3", "passphrase__next_screen_will_show_passphrase": "text,3", "passphrase__please_enter": "text,2", diff --git a/core/translations/cs.json b/core/translations/cs.json index 75e8a68574..02bf13a473 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -516,10 +516,10 @@ "nem__under_namespace": "v rámci oboru názvů", "nem__unencrypted": "Nezašifrováno:", "nem__unknown_mosaic": "Neznámá mozaika!", - "passphrase__access_hidden_wallet": "Otev. passphrase pen.?", + "passphrase__access_wallet": "Otev. passphrase pen.?", "passphrase__always_on_device": "Vždy zadávat passphrase na Trezoru?", "passphrase__from_host_not_shown": "Použije se passphrase zadaná hostitelem, ale vzhledem k nastavení zařízení se nezobrazí.", - "passphrase__hidden_wallet": "Passphrase pen.", + "passphrase__wallet": "Passphrase pen.", "passphrase__hide": "Skrýt passphrase od hostitele?", "passphrase__next_screen_will_show_passphrase": "Na další obrazovce se zobrazí vaše passphrase.", "passphrase__please_enter": "Zadejte passphrase.", diff --git a/core/translations/de.json b/core/translations/de.json index dc23f912b2..08e74d81a4 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -516,10 +516,10 @@ "nem__under_namespace": "unter Namespace", "nem__unencrypted": "Unverschlüsselt:", "nem__unknown_mosaic": "Unbekanntes Mosaik.", - "passphrase__access_hidden_wallet": "Passphr. Wall. öffnen?", + "passphrase__access_wallet": "Passphr. Wall. öffnen?", "passphrase__always_on_device": "Deine Passphrase immer auf dem Trezor eingeben?", "passphrase__from_host_not_shown": "Passphrase vom Host wird verwendet, wegen Geräteeinstellungen aber nicht angezeigt.", - "passphrase__hidden_wallet": "Passphrase Wallet", + "passphrase__wallet": "Passphrase Wallet", "passphrase__hide": "Passphrase vom Host ausblenden?", "passphrase__next_screen_will_show_passphrase": "Der nächste Bildschirm zeigt deine Passphrase.", "passphrase__please_enter": "Gib deine Passphrase ein.", diff --git a/core/translations/en.json b/core/translations/en.json index 3384d8ad7e..b2292633a2 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -487,10 +487,10 @@ "nem__under_namespace": "under namespace", "nem__unencrypted": "Unencrypted:", "nem__unknown_mosaic": "Unknown mosaic!", - "passphrase__access_hidden_wallet": "Access hidden wallet?", + "passphrase__access_wallet": "Access passphrase wallet?", "passphrase__always_on_device": "Always enter your passphrase on Trezor?", "passphrase__from_host_not_shown": "Passphrase provided by host will be used but will not be displayed due to the device settings.", - "passphrase__hidden_wallet": "Hidden wallet", + "passphrase__wallet": "Passphrase wallet", "passphrase__hide": "Hide passphrase coming from host?", "passphrase__next_screen_will_show_passphrase": "The next screen shows your passphrase.", "passphrase__please_enter": "Please enter your passphrase.", diff --git a/core/translations/es.json b/core/translations/es.json index c5de401142..97a3d1a3cd 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -516,10 +516,10 @@ "nem__under_namespace": "en el espacio de nombres", "nem__unencrypted": "Sin cifrar:", "nem__unknown_mosaic": "Mosaico desconocido.", - "passphrase__access_hidden_wallet": "¿Ir al monedero oculto?", + "passphrase__access_wallet": "¿Ir al monedero frase contr.?", "passphrase__always_on_device": "¿Introduces siempre la frase de contraseña en Trezor?", "passphrase__from_host_not_shown": "Se usará la frase de contraseña dada por el host, pero no se verá debido a la configuración.", - "passphrase__hidden_wallet": "Monedero oculto", + "passphrase__wallet": "Monedero frase contr.", "passphrase__hide": "¿Ocultar la frase de contraseña del host?", "passphrase__next_screen_will_show_passphrase": "La siguiente pantalla muestra la frase de contraseña.", "passphrase__please_enter": "Escribe la frase de contraseña.", diff --git a/core/translations/fr.json b/core/translations/fr.json index 6c245ecaea..248384fefe 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -516,10 +516,10 @@ "nem__under_namespace": "sous l'espace de noms", "nem__unencrypted": "Non chiffré :", "nem__unknown_mosaic": "Mosaïque inconnue !", - "passphrase__access_hidden_wallet": "Accès portef. masqué ?", + "passphrase__access_wallet": "Accès portef. phrase secr. ?", "passphrase__always_on_device": "Saisissez toujours votre phrase secrète sur Trezor ?", "passphrase__from_host_not_shown": "La phrase secrète fournie par l'hôte sera utilisée, mais pas affichée en raison des paramètres du disp.", - "passphrase__hidden_wallet": "Portef. masqué", + "passphrase__wallet": "Portef. phrase secr.", "passphrase__hide": "Masq. phrase secrète de l'hôte ?", "passphrase__next_screen_will_show_passphrase": "L’écran suivant affiche votre phrase secrète.", "passphrase__please_enter": "Saisissez votre phrase secrète.", diff --git a/core/translations/order.json b/core/translations/order.json index 02e9aa0f37..9349b9a858 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -431,10 +431,10 @@ "429": "nem__under_namespace", "430": "nem__unencrypted", "431": "nem__unknown_mosaic", - "432": "passphrase__access_hidden_wallet", + "432": "passphrase__access_wallet", "433": "passphrase__always_on_device", "434": "passphrase__from_host_not_shown", - "435": "passphrase__hidden_wallet", + "435": "passphrase__wallet", "436": "passphrase__hide", "437": "passphrase__next_screen_will_show_passphrase", "438": "passphrase__please_enter", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 369996d9da..f4d4e4b65c 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "d97ec488f8faf5330f885500b710f6df32e28021f14ee7384e56d10629296cbf", - "datetime": "2024-07-21T11:28:28.657421", - "commit": "81f35c21a49b69f706f03232e5fdfcdaeca7498d" + "merkle_root": "fc865bd371402af05db581b89e09dca57d90aa2b45cbdcd7cf5ae48ad949c6d2", + "datetime": "2024-07-26T07:56:59.791936", + "commit": "53799cdee8d88549de3eef071d58fb4a07eeb7db" }, "history": [ { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 49a76c6550..1c30cf47ba 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -2247,7 +2247,7 @@ "T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "ef0a0942c208e7f752da466dd5aa8015efd50aec4e230c0fcedea7997ade1992", "T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", "T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "a71e7184361e63255a4bfa138ce1426c6505fd5d0c31ce4365c44df1dbc76bb1", +"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "042e9f78a793631eb68047230ea8cf82a047623585291cb2107c46e754ec9bc3", "T2B1_cs_test_msg_ping.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", "T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "e103300a4329bada7713e61b73afa224f89e1cc936a76e27cf973928e2e742d6", "T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "f85b71f80fd1ba51eb9071035afe352e4ee38c8917f0a46ca0fc2f617befead4", @@ -3615,7 +3615,7 @@ "T2B1_de_test_msg_loaddevice.py::test_load_device_2": "f0d18157b9bd2f128e7b07cee70a199a40c178fc0b2f2bb943de4fd31d1890f2", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", "T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "b47fb11fbacd6adc6efd59869aa1757113f0229caf29036eb488cc5b4a1ca751", +"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "a3fd3415145fdce244950f162ce09d89aea8b64754ff9b7881f794f2772e4239", "T2B1_de_test_msg_ping.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", "T2B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "b892f54b08ed97cbe0e572d4a9adfb979a61ada492278987a93c3917c5282609", "T2B1_de_test_msg_wipedevice.py::test_wipe_device": "83b61032ca87fecd27e115b4938301f42bd347eaac440be5490beecd6242ba8c", @@ -4153,8 +4153,8 @@ "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "810e5d7133ec687da04d9363725fc4a6050c268be4d08d6cfa46fcdfb454c001", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "726bcf34af11d0a58da2a25294dd67673f684c39bf76cc9f0608b78930398ea4", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "c2dcbcfc84d26bc814f31d1006e7d40791570b082c4489d7a8838179ce5592bc", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "b9e977fad552d471ca7180cd1e9c96b7b2852c382af96c4571c7763bc1baa6df", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "fa3bf46f979b8aaa43f8c51a9b5c2fbb12ad90062a9395ffa45bcef71d6d225e", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c12eaf454ac811420dec797d1a507cfc7ff627fbc0eb12078020bea2e27725ee", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "99a84f3ba0a8f99f0c551ab5783a7c342841af89ba78d1510213ccabc71c052a", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "bdbfc17421790c0092fa44f0526c10806fb2851614f0d6b5e6402249ccc02b04", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "9448e09cb83042fcff9906e3ba478d243bc87a38b06df5138ce21b0e5291cd7a", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "5674bf02496995d198ee16b62bd5cbf425acf325f3dfdc8b3f9b0a7161089974", @@ -4184,17 +4184,17 @@ "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4ab5d7c86398a5a61a8bd378f234999f147fa12c3f555d2cf090da869eb2777b", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7c0cec097064eca5ff9373b88bff58fa67775069fdc16fb4a8eba71f4f6444a5", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "0f3e255262332d8cc7c46bace39bb1dec26ce6b8704f422e8b7c554ddba3869e", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "9c0c1ecd1467b6641062dd8e02008e8f961add57f1af2814bca505c51076b8bd", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "ec0bda9bb9debd49a8b40f4012b86b3503fe5463a94e2cdf4791face058b354b", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "bec1ef99748992b59f7568e014804af26adf2c613d2c6f0c5bebca5ec98de86a", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "a4a477368f734d5384000dc656c69973012d15db57bc088ca138662e1bffb44a", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "6b3af4d685fec5823b8743e92c75d338beaa0446eb0d3b3b721c5b6ce6fcc1a0", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b708156fc244629863fd57b46bb00d357f37296ad5995c069d6cab4de77fd031", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b62aef52cd009e5ba3324ceeb3913972315ac86d0fd4510c814308e6ecbefc42", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "aa5615f52ae1a8f4c613e73e87dd4aec5539e21232f6752b5fcf17525931e8be", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a1e7128e23a8e8613a83c5ab86671a3b97f025a03609cc9bb35987f425151fc8", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "6693459df79b809151670e3de8b5f656e25248fbf2bbbdb2bd25449883517c28", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "46e5b9f8609dcc957ab5f2874374907a8c95746d36672ab3ac967a5956a64c21", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "33de2fd9072fd80691ad68e7f40e9e19d3b3e6e0d065750d985ed39d1e355324", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "20d33357921dc63afe299f4dd430f1f410a1750ee421496e511d87efa9db9bea", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "6354afb5efcc82d91b2a2bcbe763197e98ce45caf4788b8f294a837729d13771", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "9359e1e0bc099ccc490478e433d437dc90abeb213af24e637f53b58e23556873", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "8334ea02738d240ffdb8fe3fd00181c97c3c00c9d1d22613cfef1daa66632529", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d768bc3fa7e19fc2c7ed3d4d0811484d23cb13a651c135b0a6fcdf03ba90a818", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "284dcb51422dada54ca2b0d5e68a80cb61ce66f4f782f9b71d53e97dbae428de", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "203de3e09bfd8e02815fbec2d2c9a32098bbeb22eb09ebffa22cedc3f1434e34", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "dcbb352ebfcf7364c5444d701d3e352a563d6bf84ce533b497280ba3a5793d94", @@ -4224,10 +4224,10 @@ "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d5abbf0109420642c7203a29c083b045af55e333f4f922b8fb099a840151bb42", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "38425ccf3b5dbdb2fbca4b6d7f416cda91668f6afc4aabd8b32172d51b47e85d", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "58e5de56b1ebdc0b3b46ea44ea7442b3b5d778895c6f6916b942ee85c4071e87", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "25713220ac8bd3e6c90b9f7c36fc85a28fba54e904ec17ac8d848307e41d4268", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "55b0dbaf29b7b348a3587a74809de9a677546aa392abfc117db289e2626b9074", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "cded694065a901c83662513f0c94bcf806636ef07a782126f6ee7a749b404f77", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "eb371e2d23788611c1eed680f2bab0e87e7701d5790ced0c0014b4ffd737a985", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "75557e2a695e294e1afd4c3c9e5117f4d38749bf459cf8be85434cb6647f4991", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d23e589f172ebf44062f303da14cca030e70003b58f6456e399c407bb5ae84a1", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "da94713fc26459581a376bbe988eef7b1f1cd99244768460bdde50ee451c21fd", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "9ce997bf95b89d0a9715f204420980b125e426136dfad6e04faf5d0f994faede", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "41364122ea9e9e2d173707d82d02348a85abb382647f2b9f7a1e273c6dd13c50", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c75a822330f569d8afdfe02ad1e421171303c8d9fb3e9856bb93494a999030f6", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "81aef06c2f3331d7758db1601592c3ada3018132ed6792c1126d62a78166cfb1", @@ -4237,9 +4237,9 @@ "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "49766385de678f60d32c2d2917a9a56932a32def07f96f5a198ece0eb2c603e1", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "c768c5a9d0ea4e0d7158048e59468edd7b23d621479294b586fbd966af9c6c2f", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2037381a71effd407e166945821543ae05d7e45dd5b422676a1d05b4475aaa3a", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c9bcffc76ffc9a8e894910ab70c92a2cebf85d54e78002852dcb479efa8dd641", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "6b1e477c7eadd8427270bcd691fcdedfa3fa2c8c748defb4033673def39767d1", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "aae820f9aae2eb48d499c6bbdda838ae1f0a78a11170d2bb12692665e45b3f04", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "837fb2bcee435c8d5d053ee6833bd013d8f71e892fa12c8ea855b92629a0fde8", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "5cd974a14046ff919bf49dd62a036876f6a699c5ab6d332ef43ab353747c8486", +"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "cfa5ce72e18e3efb4d46dd07d477df0f34f200ba44b23034370b491c69856b75", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "633aed5ee504ab81f2cc9567dd76b70e9ce0a9affe903306e7347e33766144a3", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4e9fb93472cb3f70a9e5a64b146810aab506d93bc87b2dee6ef5c7713df21f86", "T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "599851b3275abcd3ee0632c8be9ea22b29e37e5b7f9ae8a8d06aa9ee02dc035d", @@ -4268,10 +4268,10 @@ "T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9facb40a3379b37d6611a35cc8412339a0f8a5f6c2343c9fd7feb353a6de8877", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "70609e795063e20a23b96e4d5ce2f982f4a2697c0fb4d3917b6cd0b8fac3a0cf", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "860934db08ac2f4e8888d58b17f3b2f11a022d5b4cb11b3e373ea6bf809c3d92", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "54742ab60446cc643bf358bb7d86a100c7176a69694f384f3f0a7f8cd995b5b8", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b5fb80df287436f8d00477f5cd136a91ddc920ad40e8ee74024cb7e4d9ce7ae0", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "a08ee7770d89b92b0f50f39e84e88201c0f3cb80a8fc87f4044b2eceab143e63", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0cb94d9efcadd912d882950bae55f27cef090d5392001299acf5c32a8bf0bc32", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "19f6de0c915cd19c968fe831abce1dbf827b1b5505618f1d0e79820cbcae2099", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", @@ -4336,7 +4336,7 @@ "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "b2515ad0d97aead646e466792d2f24b528f8a12ac65312b934bec642e1ae5622", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "bc34bd53f2f1dae3c391e5a5a12866c0cae82129c78bf084bce68418aafacae6", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0b84064d8397c8331112024747ac07c1ee98ce4f6611427e66c890be0cd4762c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9f950f81d022ec9ab793850b2d1dcd430790ffd85a84271863a973ad6b95bcfa", +"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a85e958372dbedd375a60ebe5c20a80bcf7b97a1c9a30ba30ee95d7f6552fe1c", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b1fa0c12a653e42a5bf09bd86f13605704cd1bfe25eb86b9849e316f96ccea5f", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "fa52a33cd2201fc5f9f21973cd54f3a4591ff6bb280c4c5e6a886a6025fa73db", "T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0bd7b51b49f660893e8778f47a987c9810771c5a945d5e924a5e240749f41e9b", @@ -4980,18 +4980,18 @@ "T2B1_en_test_msg_changepin_t2.py::test_set_failed": "200c1497e33124deadccd5b84e68616d6d27d03a3613a00055ef733604a12d9d", "T2B1_en_test_msg_changepin_t2.py::test_set_pin": "27391983afcf9aa42602b4bf955b4121130ec16ccf4503a078378f4cde4425fd", "T2B1_en_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "517f41e66e67614c0c7dc6afbcc4522b819d24cf4f087f3e9d5aa2260ce5b1f5", +"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "cea57802e624373fefb1084a361ef997bae138e7e062159ef9bae0e8cfb536ff", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", "T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "bc039fcbcf9df7eb2cefa7f9c150ff6f45f7c82b29091a1e827f802e4e41c21d", +"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "0623bc723e20f4690524a8dad3b7f2c0cf04e45b2e0202788e75758ef4a2156c", "T2B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", "T2B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b90e8e9393e604b4f83d718aada5e0f93bb460af49652b20ce7733b3a2a00ccc", "T2B1_en_test_msg_wipedevice.py::test_wipe_device": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", -"T2B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "977087a6cb4cc7c9e1fceb78f36e6da50bce7f62868e6cb4e534669b713307ae", -"T2B1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "977087a6cb4cc7c9e1fceb78f36e6da50bce7f62868e6cb4e534669b713307ae", -"T2B1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", -"T2B1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", -"T2B1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", +"T2B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc", +"T2B1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc", +"T2B1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", +"T2B1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", +"T2B1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", "T2B1_en_test_pin.py::test_correct_pin": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", "T2B1_en_test_pin.py::test_exponential_backoff_t2": "8272d37539ec7f2cb0f5f830ed8587bf22795e776422b657231017909547d8d9", "T2B1_en_test_pin.py::test_incorrect_pin_t2": "118048abb1aa461c0bdc2224ba21c9bd6ea400926181baf3cf40928d2d4af29a", @@ -5021,19 +5021,19 @@ "T2B1_en_test_session.py::test_derive_cardano_running_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_end_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_end_session_only_current": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_session_recycling": "6668e4de2c8d77f57ba7a546a39ee4f267d75d020c959d98fa20f90ed6c78820", -"T2B1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "821014bc5fae08a678fa4c40dc79f1e37d4b6286ee1e5c94b75299a1d01111d6", -"T2B1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "910fa5c855393bfaa9a188b8260bcd473103e6d013427368b0452a3050dc0f11", -"T2B1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "31f3aa9306778474ba10ba975cda6afbb2bd486ac642722d8ac3269572b8aad7", -"T2B1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "d421a35cba172f71b504b7196de3045237527c5b3eade7fe5d10ae668ead82c3", +"T2B1_en_test_session.py::test_session_recycling": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", +"T2B1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "042fef8250681b1ac2a1f14a7389a85644638c3df0e5a126ea91f1a24f73f44c", +"T2B1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "803ccce1d6845345b00396db28711cf2555833203700a58bf5c7ad872ff27705", +"T2B1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "3e2c53f842dbe4a85e9cb4d0ce0d59a17ccb22be53a87acf17bb030eb0ffe511", +"T2B1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "27f3bf94dec5abcfb2ec423a5871158610bae51a08d801f180fefe0c8972fd2e", "T2B1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", "T2B1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "299e864a48f7bc8a498d726c5f39ceab44df54dd79eb927acc9fc49937fc53c1", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_length": "e4b2ee535ab3dee5daf30efdc11aeda2c0e593fd009685173c7243a480ea9245", +"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_length": "7cb565e1cca10e69500e48079a37bd88dcf6e3931d7511a049b38feee95ceb3f", "T2B1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "2f674e8697ed0608b71c6f2ee838101bac6a8dadf8e6207a53db355f19b15ae7", -"T2B1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "873f72fe19bd7b49081f4fd7ef2042bc4dc4c72812f5a5035b35970783abcb94", -"T2B1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "77f43db202c44e6d124960d6af66daec63f6a0b14cbb6d4e8e5cc5ed422488e5", +"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b06cbb14d16de83f6cdd311f75119bc3efd6cf312b6889318e261bfc3d4f1d2c", +"T2B1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a944ccd981528c3e95018e2915d4fd5c44a990b2ceb64ff2c8d630fc7e918ea2", +"T2B1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "79704e684ec43e8eaee6604f7986684e69c95935fc44064e566993da3e1edff5", "T2B1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "718364f43811e6e8366675fb29661438a924f5bd59a51a7c253a2297f902ce29", "T2B1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9208f4ca66bc8a7be9ce0f7661cab2d6f102500a0fe5214f6c2042a452b45299", "T2B1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "53928e3a3f32d480e096b063c6700636fa6612421dc3b9708db25e4b4c7f136c", @@ -5521,8 +5521,8 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "aaa7d1a31458fe9d85f8bc049743bc922027a4680436c3a38ea7881dc9f34b41", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5346a1c0d340ed9d7eaabb74416e88ae8af605ed2ab80468781698199636907f", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fd46152a21d698be2f7cac447433c462a6e55b5063a2543c0cacccf5ca4b47ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "0962e0e9e8f089cca20c7f01a35466fc6d3d455676092d62b3b1ed7de8daa27d", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "46466af84836bbd78de5eb8c446b6e73b555cd7f53475cbc35d2519dab6ca199", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "bbddc0eaa465108d4cbca7d4d0d4609933c685d6af056ae9365b3aca64cb680a", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "a8b4ef99324dfb37ef61c512469e508f66d1cff97b7bd0c6ba96c43ba688e65a", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6c4bd02c5ae7f1901e07206a3d921e03476890e68253748e7a919e882985793", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "38de876a57f3ba9d3e9facab308ff4b28a52f231fcb47bd2f07994bce812d454", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "487bc1c567d4ecc260979e8abe46c22a27588147437901c85e24d98f2c3fbd8b", @@ -5552,17 +5552,17 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "743db1209a8100a03c68b9efaacb104b9b6a1650b4c49cb0c74b00cf6c3a05a8", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "968bb7cbd0d1bf085944b816b79956dcc38a12a5330c543336bafb3574508e90", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b3db521ea0173e39f3b93c8e49ff2223ea5ba3535e927ec7ce8b2999897e67f0", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4e4225f8f47b1b1c6e116a1539a6f944e395af0daebdc09e6682663d5f8a14b8", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3c378506e0869ce47a286cd8870b9df9cdc6f64c7b2c2e9f8f1cc8c2737fd9d4", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "fc22d68bfee9749d27b3231c55dd2d98a081aee461cbe519a8fb765f5c239d2e", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "6f5050363137038fe4e40ec62dd1eeb282c621aed9ef16c5249a47ff393f5a43", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "c1eabea776d65dc0f258acd00fa08db76a04c07f6ae0e7f32498a0b7680a1665", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "a96fdebe84cb13743dacf052975664905de871c68f8cc3d06136e56e09ea7fb6", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "425e05d70ab7181beb21af5c08617e9724808baf17e294b3319a39e012e760b9", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "3be8d9a67474a8cef48fdc35318f5843ee909831bea914f244c094ae1fe6cc32", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "cf959b359e3d546419e2693cad049fa151a9a007ce181bf18de36d7444f99aba", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "df2767c1c3c054ecee8e4c4efefee8c975bc9a8e2b3104b530d3d5a8b89d3192", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "5823edbe8eebbeefe3a01c108aa54c634422f8d9338bf0a6f8fa295d3aa3cea7", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "a2171feee8e00f1fa781561c32eb6c560fca457fb49571f67ed3adb38b90997b", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "49eac4f1e01f8c4d3ffc70e3929793a9a4bedfddcd1f96c1e5bca2048df3a2ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "cfa493ee0025faecf03830b8b73b0fedf42985ed1f1c20122445757ee14e96fe", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "2178589dd13b062ee6f414634950cbc2a4174f1f33ba9a041231e91f0a1dd514", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "a69b3d8df2de193b1b8dc57446f5e2871e708cc8fb3e1971deffd20a18499e6b", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "128996429c958aee8169602ea44c84dca9eaa1f73d07603c8615449e5a1794ed", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "63228f42518d18790cf9976f712ce3c22b50d86d9b7539132b6d5ce8e2ec949c", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ad01d89ceaf01a75f93b206ff0ff30671c032c3fc1310ee84c56d9d4d0e79571", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bc6db05b88c37cc1e86447f181fc0503dcf782bfe52d258a039716c35cd6d7d8", @@ -5592,10 +5592,10 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ef715afac35227b1d860be377efad158ce68ec175ac3873ec5573c82a01d2a65", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "6364dcb96857bb8ca4da148aa19b7a41848e3927769b14ed44cfa1eb3aeb26ed", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "6d3e3a1e4cada403f3f40e00f0b922002a47552dc9340d4731429e336594d734", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "4281e4f22a31a39808a8a369050a028ca62aac789b09fc5f1488d11700f43d13", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6a5e8f8d13734f3757cc0deff9fe3b7ce0f448081ba9b325fbeb6f985823cba4", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "7562ce8a10b78978b850cbd59f175e274974d3a8f6123092b419b2e85f0bdc77", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7b5733515968c2fc7ccde3e55fb4a9cac574e71eecad3ffe44fcfb659b5223eb", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f2256fa6dfa61cc47ea711c6ef24d46fabb9e13732daa79aac892f2bfaf30ba4", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d70ad565f392c6cebfa057f53a0513996262c5edce00ee5bc99dcb5ccd6d309f", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "3d54890a6f22a6b4149a3d925220040b1d93496b77e61d15b8a4d4acd035b4c6", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "395df4e7657c8ef24de4ebc3c3df537b7f01cd3778bfdd00890a24ec4bd27a07", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f913b9d236337ec8f17dbc4f0f2bd07a3c8158d08048d70a55f0cc120524970c", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2e40f2a04609287c8683867df59dff285e24f0c126c970d46929e238a72a66ea", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "53bccf1655146bacfb6ac2032c9ee763b0ec04ba5ac8997e3b1ecaa0bbf8851e", @@ -5605,9 +5605,9 @@ "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1d2847c685a686c010e046dc7ae2fff108260deb9ee7443d139a79a372ce98d7", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "3df98e23ce08153962829a451a64b16e546c1426d046e6da7137caeecb78cacb", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "569dd0b842a403b3f19305b5ea89ef246905981ea1894a4a5b6bcc1196c9b5f2", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "c390e2200c65fe7623774fb93a5d34aa290ab963057491e7c210775abaf0293d", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "63d58a9593d6daa026b10213b399e72084f14f0bc60ca535824aeb6e2f3afe48", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "a9ace2a6aaf56c428253c0c67d52b9bd9ed4806aba0c94ba7e88646c69e8f8ea", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "97642a4047ab93703ec14bd402f833f9a3c8cd10ecd5089098c5a91b4b36a71a", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "eee4fa1ab0a0e0bae1f3fa3d97c25562f8507bc6a7b358d36618134de0bb358d", +"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "7d6323949bf6bb8cdc3706622ad9b7c340a0a8109f5cbaaf66d0d6f78788f00b", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "fedacaeb8cbcd847208bbccd159f90fb1c298bd57f931ab2e4c9ebc3c6dc6eee", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5b5f2181c8cd524dbeb2856f0f1f2db023dea92899529e21baecbd2978521018", "T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "10ec8bce4299e22215e651b2f14a07a204142f54552bfc9af9b620b4c4337e1c", @@ -5636,10 +5636,10 @@ "T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "b3920827bef507ac8ad13b4ec58e4e8e927791e222c4f42579602798e0d09644", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b5902937268fc3aa0b0244ecdb97b125cd2d3e59bba955ff0c5a7f016e76f8", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6f3b6169e3fc48f40b46bf83cf21287b5f839e21fb9e874c4ab32c9c84aa723d", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "56a13056b8f44ce37968f92b19f05c11b59945ad728f0f7aaff2ddaebe3af202", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "e41b2012bcc3742c88416de993aa2e1132734016daf498f54d5b88c21aca8662", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "6a4b7074262aa40a1d9d8b1e17c3c56282a795360c9a3a3d7ad0f3020ab57165", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "2c54600663f0b05562cf38a96a63627ea437441290bf84cfc73829b31c6eb518", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9fc31eefe29fa7f64e846119691ae0db8c2894e1e14c551ed7098dfb6c9499e2", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "22c34c1e55257a07214d8877992945d142a696f8d712c090e0bf6751cf9a78ab", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "49fd2aaef8dbe41d3bf1ceb351b8e0984fbfa0d5a710f0ba0ab49a66fa9deefd", @@ -5704,7 +5704,7 @@ "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "85d4fd114e7ec656d60bfadd75a244acbca0386a3d49587b2ce85b98b5130e54", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "c71ca04cf884c0958b5b26659df368298befafee5faa92754b66d878a53a97d5", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "af03f4e6ba4a68e994fec97691ea567958e61d501726147dfb9804a0e1b5de22", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "4e4d37cd12863bd851aaf6e00acc92db393e73a48602b71ae03fd2d3b1b23775", +"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6feea77d35a0d3dfc122ccdb2dc7e5d480dac0c69f9da529862ffcf64b368d6b", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5ca2ca9569a03f92f8454625fa2a515facdd54d1ca6b9e09430021eb9518467a", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c5c2c0df91051bff949d55ba87780bb7b122e70ca87d9646dbeb523a2fba0083", "T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "84ce774f4972446fac86ba4b62fd16892496919e7fb6dd502d3cb98801153e11", @@ -6348,18 +6348,18 @@ "T2B1_es_test_msg_changepin_t2.py::test_set_failed": "e4019ce947c756c2ffb3753b86b1e2603e8d2a1e2b9ac9c08bb87758f4ac9ca9", "T2B1_es_test_msg_changepin_t2.py::test_set_pin": "cc2c759736892de34bdec1289feb6d7c7f84633cf6d37d8514f3ea5d587eca8e", "T2B1_es_test_msg_loaddevice.py::test_load_device_1": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "64667679c5c16e6b32e075d1f8e7355637ba2da31ec5b548d06adc189e595d61", +"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "ee1f058c4a786b56554acddcd0a6206bcde2eb5fe879867a71cb3dff2a8fbdfa", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", "T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "9932a98250c000f90d0af22a2344d7692079b98bd978272812ea4f5f16588506", +"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "511d36d501993568f70ecadb51afe81b6745135833c9b8e3c48ed3f6adeea3ea", "T2B1_es_test_msg_ping.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", "T2B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a956a09d0bc2b0133b6f1264bee739cfad1801793c7675e3d187fdb655dc842b", "T2B1_es_test_msg_wipedevice.py::test_wipe_device": "946157d3de0e8da4e891538057f266fb3da9caf5fee193b268f4c1c629663e3f", -"T2B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "971615ec06d9bb02995c0945715b8307c458f7995a1e04c3bafe919565bf795b", -"T2B1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "971615ec06d9bb02995c0945715b8307c458f7995a1e04c3bafe919565bf795b", -"T2B1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", -"T2B1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", -"T2B1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", +"T2B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "1e9227b2113b70db1b65daeb5f9cb869fad9625698ed59d54bc8f0f806368dd0", +"T2B1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "1e9227b2113b70db1b65daeb5f9cb869fad9625698ed59d54bc8f0f806368dd0", +"T2B1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", +"T2B1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", +"T2B1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", "T2B1_es_test_pin.py::test_correct_pin": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", "T2B1_es_test_pin.py::test_exponential_backoff_t2": "146a49a4c7ddfdd99e9a7972d9806cb03aa4cd15a9d708f006f191514842883c", "T2B1_es_test_pin.py::test_incorrect_pin_t2": "d4249533e46ad5a24dd3d008b14351b6e15e63ae34fc7473ab943218d905a004", @@ -6389,19 +6389,19 @@ "T2B1_es_test_session.py::test_derive_cardano_running_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_end_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_end_session_only_current": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_session_recycling": "ba11c55fba33e8d3a0b22c400c7911c01ef7e32e8a022a6169ea517feaca3b9f", -"T2B1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "1fc3b7bc80d2d39d9acc04d7fda008b2e8584f58deb3dc4ccdd93f5af001eb96", -"T2B1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "eff49b6f4d76b90b9401a81818434084a8d31f342b1975974f74be0f837b6ef5", -"T2B1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "1ad3892f7497056a3c375948bf32fdf8e48f5ace26d54448b9feb889e165c8ad", -"T2B1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "8a7f727b27f3ac029cba55082e8995549a87b03e15c403c113637a4145a8cf2e", +"T2B1_es_test_session.py::test_session_recycling": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", +"T2B1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "711bbec8cf8ff31af51d7831b7bf85f22ad72ce50555abd75c6e172bf97248db", +"T2B1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b8d5bb849a4096ded014148ccc83c60baa15eeb9176f9cb50e83e1da41a21823", +"T2B1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "ae3df3f4c5ed0ef47ce0faa573bf8a506c69489861c0f8ebff76229a591d9158", +"T2B1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "71b23840c2679f7a4eb549ae74ebc6c4c0c7d4f21e01f05fcacadf8e88671782", "T2B1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", "T2B1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "0efd88f75c5537a52205aeb1ff7b4a6ab299f4e3e83036acd79f1b627d5355e0", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_length": "5291df7e5538220717a55082f57512c70f3fc31608259c7959825680162db10d", +"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_length": "c79b68682fe3ad6fe7a0074dc4ad41c9f872b1ed675525cce53bc311b7d7e813", "T2B1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "130c22410e24d8866cecf22025b1bf6805268217835427944c909f4b933db684", -"T2B1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "441d0e4b5753a9bf3f518bbc4e21279539dec4e32d886f95ec6b9c954a5857c2", -"T2B1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "c1efe8a277b0095abab9f2cd7e2efa1f096ec14595a4ea68f3b509814c9883f6", +"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "2d5316868d556bce7e2bf9d8740e63b929fef99d00090488bbef05096ef86a63", +"T2B1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "7da3455fc1898ad7313faf986afa41e8683459137a02ed65459c4e2859477a90", +"T2B1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "e5732810f2ccd293e1b79d915687f5e894f5d955e6db00a1411b95bddbc7bd02", "T2B1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fb794c49205b78c579f8529e1cb2824316a8cae5ece46987acf8d4d56644e5b8", "T2B1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "505524149ea8a55b806fe691e8a74e41619ae0afd1d02cd1058d5d47bf20bed6", "T2B1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "6b71c7831c8b9750ec569694d677a7004625b7d899de8c85ff41822c459cc5be", @@ -6889,8 +6889,8 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9afd57dda298198f84af1f927c2001ac654a9b510b1f3e6394bc9632a6e73358", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "91e57cbcbe0090b502a9a4c6b92bf3d78e7c679a62417cbba4175cb4d18850e4", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fabd30e3c20680bb8afd2fea71db37c87cf08ae7d5b55e5813f89e2767aee7e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "f3cb62ac9a30c037f2b3bc1c17523081b07af9cfbbf382e5501ccadd091a0081", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "230a4c49545d5cd7460e219a1a505f958dd539538634ba6691ee964e4d51a5ea", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "fb8df840d07e830b44d3628361716d2e6459a9bfe14d8716ebb517db0c4b41ef", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "10932e98b48a678af83b05d811c90a2fa8615d1b3eb4fb4e83a7276967c9292f", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "04d50f562f60113c3803ba3c0d99ecb79c3fcea1ec8a1067b9b3ecb54ebb9652", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "f89db0a766f253ab425751742af0ecfa814a3a264f254ed2db86f32b3ff4c37b", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ff0b70b6e69e6b5422e8afee397566cdc92ae583171532fc25b5ff359b2bb4a8", @@ -6920,17 +6920,17 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4f9b061285820e0ccfad3c00636576fee92fa7ac88f3ebe12ceb4ee51c3162ef", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3c60baa9caea69387e92169e4b5d51b75c418719383aa82c0d4bf14464b51b35", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "5fd802f7689488b34577429cb6d8c1d099e034dc675d2a10e2f1a450088766e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d601e4e3c056bfb3d44b9640c10590b669833ec61b1017da702d3a7e7ab04b45", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "e1dc47251125f55d913e97366a0b766579e44e231eaebb8086ac64f0aadfeffb", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "e809b57a9f5cb842df2cec0188f078bba49cffe9ef989d2e96edcb232cb4d0f8", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "d39ec1e7959ad2a94d7ec58a7c40495c9c43a780421fea11b91773165ba7aa71", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "423177cc2b7a3ffd610fbe2f7b417198e4293ffc80af6fea20b0604556488650", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "f091dd3b08c47c09825c7f262335d6e50f1cf80a0823f0a2d026fcc3a7583440", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "7c35e3098a2af1927f629bb3cb05cf1cfe8ab795bb90d740369d2a59d10688ff", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "e333295cf9a891705ebe1c12b310645b6b6e6dfa5ed25b000c12be297248aaec", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "ee9fdd2effefcb92df1ac90a07706282b8f1fdbef3bb006c8c49af730e0db204", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "ac09fb4484c38b164a54664137a278a2f978cfddd5df977ee0d147d385dcb66f", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "00e92c80230b40fce9277554206a2685036248a1f15462ad016acd77df805fbe", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9d14745f5b58f3438c24ec3b3cc6ced879f4bd7eed9cecd32c768faba58a48d1", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "37598626b1ce9caa0318626a252678bb2683fad0e965cdcd30646cff4d288276", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "775f4a50e8b524f4373e6588a90d502ecfe7993065d949fcdb45c668cebe2d3b", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "c3ab839a1ac22b8694d7993978cb2604e237921bbd02f11d4de645276d6cd3f5", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "19ad5c8b2828f95a4ac14cd7dff4b1412cf9b038bbe6d62c1484e74b3fa7bdfe", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d5a7ed9e1fe4b8eb013d0e3d493d94fe4921c7fac8f6d4e7796d70fbde3a6966", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "e0e37e8e61e5c4dc2a9099fc8dbcd0a63f3128fbe103da76b4b788be0599bce6", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "20d68143d4d30f3bfcbcc1814cc3a7cf63e96088df630cfe3d6d1ebcaad17826", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "ffc722eb1b2b24f083be3878af89ee6146d7ed993d6acc4095dc49adf7db77ab", @@ -6960,10 +6960,10 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "b8a3906c386e2d370abcd72be87f14ed5546bec5426dffa2de0dbc3799184d7e", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2ed4dfeac9e12e918f34ff162aa80fac5500b586ee0039be26c116fcf8b0cc01", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b5a49a5dc4c0c803f37ae1f67cab2ba8fa7a34eac87681a94fd0e7253a51da85", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "17617208e47645fea90b3bfbce5e0f42550d3536c8786c32e95ceeb0162c3b6f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "93d4015e97e449babd8e85e45d979199b70b8f92d53ce85ace507e96ce435b85", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "ca130e2282603dbc90235813a821a9c07b1bd61b74ed2a17a9010b05930c462a", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7ca43bedf2e800499d9f54eb1c3842dd2aa72d56ee72a70eb89b3daa733c36dc", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "b4829c1b77d2ac3fc9c87a0cfb02a72a151784f388f31a4d718decd564b13bab", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "0a08b52fbffa270045e798faf26421e6f51dd44bd0585ffc1924404f81d2b5a3", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "dfefef56f83a4a6ecfcd5c6a26766329a5a781e76fc3832a4c0b3941a5286c54", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "6d136777607b5242ed84c6881dc0c5fc498e0b70c15c038d0ee4011ac10ac931", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "45029eeb0767519845e6c496ba8163e941e7b4b2cdf93e7d8a592b1839263fd6", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1cc8bf559fb76b417915aa19b9f865eb00bffbceadfc083bdfc1cbcf951a8c1f", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "894c43b0641ad5bd0b544a4a128b3906779a3acc05684008e71b6c313eb2617d", @@ -6973,9 +6973,9 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "40716d9d67d36916809e39e1ab2db6ae30bd7f6bc45db0855300378f20efac92", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "85bc2d30eb7e8be15ede2d307eff2c73fcfd8b604efb1f3bf3b2dce63cc6f867", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "14d516f1222aafde692f24beefeeaf63cfaee3849e9e9ea3269aec9ef7cdf389", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "dd44dee20611dd8b695253dbb87a5d08407c8f05b5f4a414db2a011551939db9", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "4132855143440e9583fd52d31b51ea5e2dcd6e5602cec295b8d18ef1e906951e", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "2d7116a04126968aa2f6e9efb0821fada71772b821c58146688959eb1269fb79", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4eb92276affe02941f06463a18ed538c1fcbcdf0776f3f182b7f129e819dac18", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "edabdd27cd98ed71d5deabbcedd9135ff3d9aee1fb541fd7d5747a975e48a1f6", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c59cae9b834ebb1dd1b2a46fba44a33cdbfec763e7279683278ab17456730a68", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "696ee5d8f72c02b4d3df8634957a823d2e1565d8b0bf4537baafd5d2e1811a09", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "bd5065d7c60bcbb3ed571988d4dc1175a0b05e1a2cd8639900910b8bd045af07", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "217a273734abd13c44a2ea5a12597c19672eb40a0db4fb7d08ecdf25d76a24ae", @@ -7004,10 +7004,10 @@ "T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "2298c4289751e1933928cf603a54e0db8ef10d090f75c4a97511aa7d10e8d488", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "708c33c2414a72a00aaf049f9d1691aebcfc13bd5ea5e9ed414cf341d5e7767f", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9f645c724245630a63a9f40505bb4a1f634aa47ad3a2c5cbef6021ff3e8440c5", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "fe9352a9c1687608edab86f49ac91e5e26230b476f43094e97d9521d9d4a05b4", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4604ed7241aa58637ca0d2d2e630db0f9f1f6765d51cc675967ea8c4e299480f", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "2d3a1763b32ffab0620e7262920b3246e16873f8a8c1723f5b256a36f3b4ce1e", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "ec9bdf857a530eabfe5d1374a505fb9b83f89d7d1e598e32be1116b0c596d138", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0d9f55a90637f95eb89ca4ba07d0c2cd0f8bc8d0c25bf5549c4d37e25d509fb6", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3098e0a9503604bcb09e83a476bf01ca98eaaddf2e5afc23438611e98466c9cf", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "23e83f83e51db2a6b95c02e30fd3cb2b04f0861c2b089a8047ddaa361fcbaf3c", @@ -7072,7 +7072,7 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "07906e020c17c07fe80b81257acfde89838b831ac449b3875dcaf4808d82cee2", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "49df6bbfe2a333aa99fc836fdc42520a10bbcf527ab618ddf30b6ef22f40c968", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "86eb89febd533cdedcd1fb9ae8df7774ad941482196c94247636fbc750187055", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "d64c60d3c2c132eff3924f0b119ad5e4a48921cc681fea4410bd7731e6e99809", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "79def66f2b88cf9cf07a1361c9c0c0f86c8b4572d7a13319fa21416220abd85b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5006caae3772336e8113e4e80ab29151ce6e2f1d2338e9b2f1dfc9700538caf6", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2a7b896c6c7a1fefc59a5d5fde8cc691605c537e0dcbb11712f3f6a20e0f23bf", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "2e02721d4017f477711c5cfac9e5c21ca863f5bb8cc2f16e55164a301f97798a", @@ -7716,18 +7716,18 @@ "T2B1_fr_test_msg_changepin_t2.py::test_set_failed": "c54eef85a1d0dc450a51346dd3d7427dc351f24c0b2350c878cc08b48472476b", "T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "647efd371506e23f9300b6ff58ac6565597ee2310fb03a2fc5c449966672986f", "T2B1_fr_test_msg_loaddevice.py::test_load_device_1": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "0fd2df9e7adde33b28149d62dcace66e3f8bc381ec00c3edde9fd184c7d97b49", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "c80ff2abf9fb027dc42563b1300ffedff9bc6846c15009aadc50bf5685d01857", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "8cec11111a5b0ec07ff381b2061bf2b774fed1e41e4bc8985f2602ae54fab71d", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "927e05d0f7144b8cc14702f89104310da9e74d81b19cffb2ffe1723929313c7d", "T2B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", "T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "c793c2bc1978892ee53fb9e1094355db1a5a088784ecaf3e49073f022fe1ab3f", "T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "cfb9e3e4e192b4e4be3cb9589e3f89686929030ceea7fe629a0c10612886498f", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "cfb9e3e4e192b4e4be3cb9589e3f89686929030ceea7fe629a0c10612886498f", -"T2B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", -"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", -"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", +"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6c9be862f95b1840923666a316842785a5bfa6ad6e444b71e4d920f5653c4daf", +"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6c9be862f95b1840923666a316842785a5bfa6ad6e444b71e4d920f5653c4daf", +"T2B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "709374844154fe2fb79361237af6e4d13fbb410d7d1cc876135d96c1e9d35641", +"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "709374844154fe2fb79361237af6e4d13fbb410d7d1cc876135d96c1e9d35641", +"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "709374844154fe2fb79361237af6e4d13fbb410d7d1cc876135d96c1e9d35641", "T2B1_fr_test_pin.py::test_correct_pin": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", "T2B1_fr_test_pin.py::test_exponential_backoff_t2": "cb30648ae851f7bb39079317f3f357248ce77d93831d630d732c55aeb7e66437", "T2B1_fr_test_pin.py::test_incorrect_pin_t2": "7607e494f4b01cf25938c262848d4cfcf66e16c3e5287d500ca966caa7dc7601", @@ -7757,19 +7757,19 @@ "T2B1_fr_test_session.py::test_derive_cardano_running_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session_only_current": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_session_recycling": "b0cf8d0110de6d2091da42ad8aa919baa2974d5edb48f55001962925efd2b1db", -"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "88d6762d1e13e6e617f3177f2843aa421405396c9bbefc03d1e3f748830a8177", -"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "c6db39f5bfcaac02bdaf93487749e839461e1e8f689261bb6aec2869ef957879", -"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "db3056ab633efc102ab39f94538c32a7824644873f0a2ff88c8a623ebfbf904c", -"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "aa8a0486dac49cf1f43a1cb49d9c3641b24ca8270c847eb41e306f8c7dab0f6c", +"T2B1_fr_test_session.py::test_session_recycling": "709374844154fe2fb79361237af6e4d13fbb410d7d1cc876135d96c1e9d35641", +"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "cfa52f0113bee5d0acc941c6e01b3435c59f37c94737a7560708f1b2a219e14e", +"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "1b08a6ba179e6af3d31a751bb49441bf13c37a7a23437313ebe99b82c8964ec2", +"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "b9719c2a8eea663238011c3f0bb71b54190dcd2cf379d2c1592b048e9167ded1", +"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "87958276a3907318b9608759cfdea0b8a2bbcd1be033ff1c2c9a37dc67cfbe60", "T2B1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fffcc2eefbd6456c9784b1689b34b9982c2d8f283441b8355521855e386ad90a", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "cf7fddc28796899bae40527367dac686f95528ed819d58872d06ce63c3a32ad9", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "dd5298b97e2c669c5c39bfdde8107cd39c7e0dab7e760280ec113e99b7fb1c45", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "9323ad9e2ce2e8bd90e0bb7f9f5fce7876e3fe6b7465f2ffaae4e8f13e0fa394", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "431dda9205fccbe426660b175b30fdce831495c2139ca79f60d77a3a34762b06", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "79818aa7b90b046f27085ab49a080ee8499e9a877f6bddac7af90ec19d3d6355", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "346f7351dba5ae978eeb89799bff1cba5b853276eab8878742bfbab59934f3de", +"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "c7c897a2c2cc1800bc9785c246f867698deee7d7b40c96bffc639a2d841f3aaf", +"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "40ba599e03764b909a58c6b1511d6e40ac758df3150957c4639b46ba05b96306", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ba9fe5b13953b72952449179d717b1dc52e6450b934c341fee319247281b663a", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9ad5b6b401a2ce7676b4cba10b6d74abfb4d9887c42cd73cb3487649fbfa3a16", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a530de477c0377f1f44dcbd0f42b3c124362c996a72baacad110224d94b531ed", @@ -9412,7 +9412,7 @@ "T2T1_cs_test_msg_loaddevice.py::test_load_device_2": "111b28d8d6ea16f45585361c247a0815d3f6dee083c3b36f67b449908ee8a88f", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", "T2T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7c4c159f3232d7cd1a75aeb8292199e34cc080a65173e5c145bdf092708004a2", -"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "dbedc63ff5498daaffb587f825fe9fa6dfc0c519caf7117b28aed98d9429ef27", +"T2T1_cs_test_msg_loaddevice.py::test_load_device_utf": "139d6e39914d0838b37d93cb2f7201bbe930038ea27bdbf79cf6d86d9322670a", "T2T1_cs_test_msg_ping.py::test_ping": "fea263b87f3b5ccbbc7ac43de02f28a3927cc13116505a76b71047427d3b80d3", "T2T1_cs_test_msg_sd_protect.py::test_enable_disable": "ab5dd386741c84f4e20e39f5a1824bbedd100c5274184e47baefb10d540cca1e", "T2T1_cs_test_msg_sd_protect.py::test_refresh": "59a2978fab8f7ddf4542d06c649d331836063951a9772bf89633457957b0a02e", @@ -10860,7 +10860,7 @@ "T2T1_de_test_msg_loaddevice.py::test_load_device_2": "662f26fbc1f5d5f10393a3dcd82d39017729f2b526c946c8769ffcb99df9ef80", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", "T2T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "04681c72ffca9b310b66d3837f6e5e9606ae7929163e6a3a1e58f4ac549ee085", -"T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "6128e7b5564852433dbea98b4d89a5eace2f3f69b985aed24496b387cc79fafd", +"T2T1_de_test_msg_loaddevice.py::test_load_device_utf": "196d683018b0a1225af1c9faf2858f01f851f602b25eae672040f016d705d26d", "T2T1_de_test_msg_ping.py::test_ping": "78c008c19b84f7784c6e26d9b1e3b04c2ef5aa6312318e53146abaa7b563cc08", "T2T1_de_test_msg_sd_protect.py::test_enable_disable": "70a721f36e75daf8828e72a7fdbed1d51906e37b7a42708f1be18105e2e8d5e4", "T2T1_de_test_msg_sd_protect.py::test_refresh": "710d7333c76b2dcbd53207204a89cae6be07962ca595f4bd12e70a21c86662d8", @@ -11447,8 +11447,8 @@ "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "28383f6ff4094be8d3ce786556bd40fc97c3ad0b4c5879328824084ab4317b86", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "8deed6efec61f0237dcc1e5048492e01d55c7bd833f2c70e4e8fed46e836ad61", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8ed36af60e84e1e43cf6d4e5c3fd3fff0125005ecb86f4a78e240f7837e777ea", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "5fa29d20d33f783c4f89fc1ee23bb988086fb87cc1dcb0a3325abfe40e5a8ce1", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "80247d2af8f2f69ae56ce1bceb839c56819787404f68e783c2d18fa53a973b37", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "35773c0fff5e3aadbe8ff7bbad52db9b30dfcc32519af26ed835a690727f13f6", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "d26cfad0e8ebf80bb0baa7ce10bcf5d09c3fe603bef0a43866ed7d5cc44803ed", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "115d5b4e020583299b990d80068cf91c7cb3a66a9911d75ea1b6edff41e18a46", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "5eebe2c33a6cd56cd926da5a8b525d862997df17846ac49ff137947a5034ef83", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "f7d576e9ee746008a36d2a19ec7832cb2d107193e77303e5865ad4e811ee52ef", @@ -11478,17 +11478,17 @@ "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "a3259e596d5f8c4ca8e9ba4de2f14fe30d269a4c3d011778b84f73ae4a4c80f0", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7fabc235b262cbb2fa45e42aeb900bbc1cdd8a684d2ad5e08b51fdb147657990", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "c40565fd4fdcf558c29c67b25e2aaf88e1e41c3d35735c344ee09ec672cc1266", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "dee5757130eda7c811b9b5c8b020cb3388ad7f390d0db6df3a3f4f005b511d07", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "7260bda81821bfb718ea557cdd9a2c6b3b947c4cea63047a326876937eda5b99", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "46383b901b3f85451a3e75048df580ec2eacc236d9f4e4660b5ff4bf1e250850", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f56f2859cd090b59f75d20dc48e510bcec839f1554b03f94662853f8c8e84a85", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "b862c9aa1bd4aff23522c16305ec46785f33256a553b12c6812dfd238d204a3c", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "181aa4f634a8ed508482ec5323b11048b3edc29b5977d41b08a859b6da166ce7", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "bf8b2ad1aafd0a626b66da74ac72796d9a8e226ff1f7600eff97a445819afda6", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "d5c003cdae1a49d7ff5defff401f907f83e77c26336d300ab3849cbf18fd53a9", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "5dd80af476ecb417881167555c48b0e267d575ce29f952dba73158861de802b6", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3acdf363fd73843b24bcc482bbffafc0f38eee9a29e1b46a2d101e19851b77bb", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fe53efd4fb003b92c0ec7c73e4f5bdb4e37cda1b42bd86c319328d127e4074ed", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "e8f224fe8adedfeba19c84716af802720cb4df5bb2e346f58b7e9daaefc1a129", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "dca5729b439904a756b21e18660a933446881f9d4fa47b2b579717b9d6a72e52", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "a0b76d678392490f7c541a7c7c12ef8526c198e95cf7bd0af353d47eb08bd0ad", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "983e3b9f3561af17c336cee3740317b86e136595b2ccacf1449537480fcab4fd", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "a75535068d5d1eac9e84a4e1a9db2cb4542219c778f48883be477f06313717fe", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "c72f41cf5c0ee28e58d3d07c2b83af09d5708d8fafd7ca621e0159ac8afb6e95", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b75c9f7cd0741200af7dadb268f07cf29bb80d1b6b3ee5d7b640c31b5544f41d", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d0aa6f83db15be9e81e663daed4ab2d08c7c4f50fe3947a95607ace47e33dfdf", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "0f2826893d63d9044ccade5681fc1c1e1bb132fa18df0536be1809333bdd5eef", @@ -11518,10 +11518,10 @@ "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "abd332668db3bf105d3a8e55fa1ccf90b4f1acb62e5d1c2860f7ee2599b80534", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2994c65408ded3a3a389cb1d3fb7fffd72f6e24aab6b26f6eba08315c09e9444", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "288e4e13bb3a3a7948e925dcbad8c61cc7245c52409818bd2178b49f0c230c23", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "6a2cb191aa36816f00bedfea929dc868a848d15af170c1e99e86642e7d8002e8", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "4d55bc70d7b38582328a0e550760ce91aae4d3ae2aa7d51f782a56aa55b1da72", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "031809cf59aafa25d8122290ac28a5db0b9474d31e361f8bbda01d5b25f22dc0", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "72607f8e4f41d2e1ca04659392399acc2f3170a354f7d3080f134e96e45a5077", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "46ae56c8583a3108693981753e52239bd3fc3e213f2aa36847e5f1a0d24f603b", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d32792fcfd0263c10e28c5196118ff05c187b653a7b05854b71798f477dbebcb", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "53779e29403c64c621fb7ad2a4cc79159dffc3d2693e076b1e5737edd42237c1", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "05ffd83b9f9a2a82bffae0e2c9bd522e4dc2975dc420c871a9d6f7b643575a94", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5dafbc14364b371d938a5dbf2dd1696958dd68fd2f10702dd512f5bd7df02602", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a882c9e5ffbaca9ec0e7f0fcc275270268fa9ef3c9ed135e543ce39af912cbe5", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "d3c1b530540a57f50020e62cd9acfe8c2d64d8c1ecad74226e9419876ae73f16", @@ -11531,9 +11531,9 @@ "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1b397226957de70e91fe48344b86beed80d3c21fc5bd2b6c2b38c1ec6d6a35f3", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "99898cc1734fd63bf4d7906f30087e77138857371109b4c58fcb0aa8d312476f", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "bd9d8a62ed8e4bb8dfe479f6c14d026b41a8b5f8d9a65c21784306dc208f4cdf", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "49207af4806e8cb1aa8c03b389c04a3b6f6c37b2c3154c38d62cc5693be94d08", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "786523529b700db7ad9360c2fd8cabe40acf98a3ef1b684d289892d354694510", -"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "fb7381a9577f078a61c8d0c81096dd2e2302fb836d759cb226fd681a5b83f235", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "34239eb7b715bca7dcd1cf655e702f3b9d001616dba9884e51b0458f11c3e81b", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "07f276f03a5731a83d488a95f7675817275399f5d992e8f7ce6080548c9f198e", +"T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "291d5ce28d34823fd36387282e88a2b5207fa6e656a9d73f5e1b4f5513ac82cb", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "dde7f3743ec2e9bd7d441b2f6970ccda38c47242fd64440126ded6f61825f756", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "eab03e524c6cfe6f04d0dcf1a7010faef85d62720f9d8722e6e137e7f05abc33", "T2T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "9859e1419d1a4aa46be81171ec835e137184d834d5f57ef37e918061b485ca8e", @@ -11562,10 +11562,10 @@ "T2T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9343101c53fe8b7360ecd5a102b3e507aabf29f37eeb253df3c88f6deecacb7b", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "2e4d092a9e9348ee51e3527a9b81844e25bb4bca822ad2b817021d66b54357c6", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "8b67edca40129904893563b0c85d2c86398a078cb740a3ca6e23d6489afc1813", -"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b60ab8284f14a76be943e309b8cdd90d55344886685075015b301405233637da", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "7a8d0e2994e3706e3b582339d2ee7ca106b68ba74a011930f848e00072f9e7b1", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "07975bcff0d8fd7d5277cb79fcc986a9d250dd4e78a13128c98912e4e83becc4", -"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3854c5f53d8d54a3641d61031b666f51f12dd21b7a022b4dcff9cf0748700d94", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "d08746e1dd9a06eea38496bb1a1e94c9ff89e806842c11908a1188c381c6f262", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "b37e039e74b17959b0d2f13d60bac840956b655b93d8395b9dceba54b4e0e504", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "7572d0edd262f438a53b71eb79f311c0219cc472613492fbc72797d879f5c1be", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "5043a77c9407a858b905aa2ff2d5ed9f2428519b529262b74feadc13f75c31a2", @@ -11630,7 +11630,7 @@ "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "eb632b495afa606d4eb03d0cd449859a659c5d40ad8f6ada7b33fd59ef163708", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "033d136f251737d3c3bd3e43d7aeed40e5c2af92266a99c17ce0ca45e23c3505", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "203e1cfccd5f40c0ca3eba2ab8812f37b72562a0ea8ca47085213c34e15ea8a7", -"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "9cab8899d57fb9af64ff23424412eb65c58edf40a87d6cb149c7f5f7d2415c48", +"T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "741e70ad2ed11bdcd581276778f45e03b6a8ca5aba3c0ed83130a8cb54ef8bbc", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b501c4b73b1a745c96b8c9706f28ec0bb06d5235e5739af83fa777aa2d0c7d41", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "6e4e1a5639f4f1c87505dc88a390e38c15f421ea962dc370f2df8aee075e7385", "T2T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ca56afd69ea46ac474132a124c7dd8e11857275f728c9a858f38bea64c9b9e4a", @@ -12305,21 +12305,21 @@ "T2T1_en_test_msg_changepin_t2.py::test_set_failed": "8102f364e48feb5a3bf9eca5435135ba955fca4c67b05e5fd543a662c5734d2c", "T2T1_en_test_msg_changepin_t2.py::test_set_pin": "d75e0ff70b44ba052992bddbe4bc99d053e1e3dbba412258e51dbe2acd5b6784", "T2T1_en_test_msg_loaddevice.py::test_load_device_1": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"T2T1_en_test_msg_loaddevice.py::test_load_device_2": "61d7c06bb965f419ee41c9c45a85dd1586c026efb69de3c30789aaad25d8808d", +"T2T1_en_test_msg_loaddevice.py::test_load_device_2": "af95c069d77c4c2a651af2427f4b62ac986d9723d71453c8162495aa3b65b23d", "T2T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", "T2T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "1d1bdf29f677492956efe2ab29ab2481bbb647ac14cef9cfb5d8f62370133b1a", -"T2T1_en_test_msg_loaddevice.py::test_load_device_utf": "4a5adaf797529d8897c90eabe30539d6d69a36457392b70c64c1013a073ddc23", +"T2T1_en_test_msg_loaddevice.py::test_load_device_utf": "e733fdcfc9964259413bcbd4c6b2eb42be36e41d78e00fe562c8bfa1fb1df928", "T2T1_en_test_msg_ping.py::test_ping": "d702b0f90581cf17e0f77b4d318324a002deec42c2c5cb8860d51f6cb50f5739", "T2T1_en_test_msg_sd_protect.py::test_enable_disable": "ff184d96c5f8a40ace66aab178778cabc37052707c48b4c44dc43ec79821176a", "T2T1_en_test_msg_sd_protect.py::test_refresh": "63ff651fa884b41ecff3202f7c53a7bbec1188a6bb9cca0010b60204e4b10acb", "T2T1_en_test_msg_sd_protect.py::test_wipe": "0cb0d0152a42e00ef0b609a5b5464f81b8b6701ba72b829ef180c4159f57638c", "T2T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "6edbe00e569f024b0c1082132c5a528ed7c44f5b79a96895170b82c080db617a", "T2T1_en_test_msg_wipedevice.py::test_wipe_device": "da62955bf95a46626b66fdc59ad58948236073a2154227dc6df0f0f8652cad7a", -"T2T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "19f014ae9368caa8c816d0eb613ca51038cec6b3a0b9d290b1e3fb5f0a7338e3", -"T2T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "19f014ae9368caa8c816d0eb613ca51038cec6b3a0b9d290b1e3fb5f0a7338e3", -"T2T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", -"T2T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", -"T2T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", +"T2T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "ef3fdf78e26c0ce176813ed39c0fb615985659c682a29cd6599e33e531701418", +"T2T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "ef3fdf78e26c0ce176813ed39c0fb615985659c682a29cd6599e33e531701418", +"T2T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a4df9335672fa52a419bc3681002237b2a5063cc04291c70013cd03f307d1974", +"T2T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a4df9335672fa52a419bc3681002237b2a5063cc04291c70013cd03f307d1974", +"T2T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a4df9335672fa52a419bc3681002237b2a5063cc04291c70013cd03f307d1974", "T2T1_en_test_pin.py::test_correct_pin": "77189def5f05cc4d4b80670d7e1c7163f24ee4e454f503e79fac7557039b7b4c", "T2T1_en_test_pin.py::test_exponential_backoff_t2": "7bb469b8983125d8fe7984d158697c19309899733acabf05fc9c5aa2132a6acd", "T2T1_en_test_pin.py::test_incorrect_pin_t2": "d4eed6222ee99b135fa3719c2bdfc56cf32a56e6f107e81e00d2900213434eb5", @@ -12352,19 +12352,19 @@ "T2T1_en_test_session.py::test_derive_cardano_running_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session.py::test_end_session": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session.py::test_end_session_only_current": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", -"T2T1_en_test_session.py::test_session_recycling": "a802bd668f7685426b4a8bc39735cc838bada6c21290134f64e7c233a2e7c4c0", -"T2T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "70a4470f371bf7c7b081e3db757be32e075380fe016f7995f8c809425787d1ec", -"T2T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "adbc00b3ed594251df5a77a3ea9837ab44c6f6de54ae761acf76956d48f67561", -"T2T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "9d0dc62af74dfcd2979b54fd422b0055b45fc2f827fe804f5f1adf81f2e8ccd1", -"T2T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "4e44fc968b3fd257aeda319d16ad27fa23ad8d4e4b954bf314931ea847520292", +"T2T1_en_test_session.py::test_session_recycling": "a4df9335672fa52a419bc3681002237b2a5063cc04291c70013cd03f307d1974", +"T2T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "f99d92748e9fd27f4460b5f75cf28cd68784a367f528fd9b32d661885dda1783", +"T2T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "216d2cb10391a38d16b47b3e8a88d7230b412032b0b1e29d49665ce092441730", +"T2T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "1a0c5545dc33fcf616167594cb92e4762f2c6cf0d62bd75deff308838787ad27", +"T2T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "4fe978249709f5d03718b3e6e511c2143ef71dd532319e82f7eb2fe79b785417", "T2T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "80a6e289138a604cf351a29511cf6f85e2243591317894703152787e1351a1a3", "T2T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "3b6c5cf5c6512f1491b77f895d21d2f850f774c2b9d67c1b76eaeb2892e95e6b", "T2T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "eaeae4b1ba4117245a81507cf7152c5292c389283acecc518d09a681e1c848ba", -"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "8e11ca5bf9f2f2205c332ab419327c910067387c6b06bd5f652d4335bbe6261f", +"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "397bb5a2488f2529dd0c793dc20f3843aa784e94684e58a8aa3d2ff841af2a6a", "T2T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "2be6f9bdf9836f159ba935cc758afc83121f2ad30f0ea8ae27a0c1d436a2a5cf", -"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b3dc95d0c70248610506be4bf506a1c525e7fa12ddafb876aae7c91b05ff38ab", -"T2T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "eb3a22dd9e8574f16ec47bb48db9609d3028be021e0902ee9cb2310c15f1107c", -"T2T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9c20ab85c4ccde600c9635764931c4133faa928020a670b1b0f0f6d01b06bc56", +"T2T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "69c689af3a86afe2491f66c127ea39c560df71bb3825cc92ab79667bd3e63115", +"T2T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "25b6c52965e587e9a2e8c170265b7bd800f8241a419b7022b0ebee39f555a2c1", +"T2T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "7e6cde10f90af022b6cbe543620ab1c5abd96c23740878a04f02003e34c1ad5b", "T2T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "e956201e6a960c53fee449e29be2a3094d10bfd7ea3956b0c356aebc90891f60", "T2T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b8006f9f20dbe6b437522702ea1068b15b3320909f8d6d86eed47c700b4d9bed", "T2T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "f911f2fcc0813237d78c7c59a4237058aec8f8066116703ed4402b70ae802569", @@ -12913,8 +12913,8 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "dcfb6a54ff7fd8ef200b8137cc97b145e785f41ff409a4026c023361d2d2bd0a", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "e4bb449d64ca4d6c92f253dee3bd99870ff65248cb086f59c172b41595fe7551", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "5d70b466935822b6c6c5e6a1f7eb750a3a425379e7c3dbb56ab5cdfec79fc98f", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "ea0dc1e21b0a4ce19ac733e603fe9e3efd7971d3ab5d6708f2bfc1a6d78513e0", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "8c258f0741fd3a6aea9f16240c3e58ff194c00b8c5a2c9830467e0df5b1919d6", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "7f35aa2d6401e0513305171fd6e2ca2d0a1a75e4ddbeeafbe05fab4bb2cef58c", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c27f9afd8f34bab6a200e5c4b381cfabaf0c6192140389e06296efa735bda184", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2c19fe123edca761389c3a3e07abd28fc5e50d1fdfd5742a2be939b133f18899", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "98c6beb11751523ad48e591e39d3f4f68e0f46496c16ee7ac0163c26e0b9debb", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6838552f5f44c17b5acd20d76cb1e07a1183fae55b2607bfe6a64481ae7530a6", @@ -12944,17 +12944,17 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e1e82251a53579070702580ff1103087708167a09dfb770d23fa3229ce88416c", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ba46ad5a447dca20038cb30e8dcd1d188b44f4df9e0b15297962cb96cec64cf0", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "51cccda41dd222cff0590d4173023768919769f2687897482b06b69879306edb", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "2252d25a31933968e275e8c0088815a5641310ddd6ea15ef7cc59016a38ec793", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "ac95ccfc164c9db264d129d2f690b2d7a279de33e4e74c3040a8f434c96aa9ef", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "c62892b035866b1e01174caa8d49ffb52ee52b446f56f65398fc6140432b1e03", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "be2fe5a8287b1ac71ff880d159d930b7573a71bcd5d80ef767ff205404526502", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "571d2e70f694289ceed7c49fc59ff990e22a2cc03cfeca2bf7244e42d41a4e08", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3e43a27e97fac5ec118477f461308b1901b00b85509384b5cc49ed81409d4dce", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "66bcb43311661acf58db41ebee5f5e8dd7ab192038337ee0b2d78fbdf26b6392", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "74c74340fd227957ee3d8458c5229c060fbff860e56baa7e98a98b1bd9d06d3b", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2c0a5bb5561226396e358a30191f9e10c8d54522fada452529a37f1e87e1bba2", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "cedd58e10f7821a44ab7713ff3de22e65aa02c7bb6a0e65bb9e29b2b025f3d4a", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "9b57bf9a10ba33ff9d87a806cb231c7328580b4919afe92dc78bba2a25c290a8", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "673bae2adef7afb59f8dab2a41507833b746253dc808752db4cdbc5bcb381909", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ca4dde19d88b69842e31fde653834c75c76ea552c420c3892cc2efb25c0ccfb3", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "e86c7df0f844a58667b131eb0b8fa2352b5a4005be56a585afcfcb458710ecfc", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "1ef629a1064785f0e7fc2946fed0afc58887609a040b343f820189e8ac55ee63", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "1a2a4712d06489758e6cd9aeff1d7c79514d21e6bc79fe6398478b95e321d15f", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "634fa63de32295f891b76398c389c0d205d27f527a2f1499332a13c2b0bf2127", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "5d80a50c6816dc2817ebe06035d4b7ebe32be3df5386ba4df75612bb6e0ae9ea", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "206400bbe9eb93d133150578c34af06a2dfe3033ac6a31ff79d3d3fe61e559a5", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "c1beae7f6aa8c49b33bcc5746b78649ba00417eeeb10adaf9b1b563e7643f662", @@ -12984,10 +12984,10 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0ff028a42c0d3de13b76d12e93dad860963f036c410f23cab098b6dfa40204c3", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "4fcf207e8bd4721493347e8991cfbc4a8557ef603941c76defec0dbf276a6a0a", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "5228918b8eec488834d692ffb6b856b11c9fb390dd03cbc7669c60af7ace1516", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7a1ed3a6721655eab77eed4f2d62923a86e538c5c457f48f088063cadd9b35eb", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "7a5b8d5be9f3a9729cc84a66981dffb640c8f7f48cbc0b8f937723fa0d6a354f", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "74666e62bcd057e366c0086611d17040008b3f2d681cb24b482f75f13cc3b361", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8c6aa7136407b1ac9bdf2eb920a26fb802e085ac24d999be99b2eed05e1247e0", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "b9beb832c56b66a606cfad15757455f08a6e6117dcd7af3809b16f64ed11f635", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "6e013fd4ba9631fe10348175fb1cd386f72858f9ff70aa2e2eda812a1416d9c3", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "7312faeb9e64c6a6cf9c79afcb055a40af44fffc9d7f14bc1c6fdfe9fb0f0b29", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "ab324636e2fd78aee6920f14e721b48dd89f03d20ccc60d43ab63a3e8f75a4b1", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f5861777419681afa594b7d2fadb0f08bd83a3d8794f5a082fffbeefee4eb74a", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "a9965d207bb2385b1174f4cecb16a73c49bdec344734df0886978a3b3529cbbd", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "388d35b0e0eb15b5b39aec9db3191758d2c3d86e4d22036f4a60e59b15b23882", @@ -12997,9 +12997,9 @@ "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9cfe0c547495d9b209d67e45274529dff8f987e185dbe92cb5ad7f4ae8639dd3", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "4ee28072584eb697ab9bdc9dea77e68c3b307430dd0ccc7752507dd1f6a8c7f4", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "c9c41d2cccca4bbf3afda0199ebfb59b169c7d453c05b9f93d2c388f92523325", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4ce313b45434db988fa71dcf3390ffe174228a4ecdd983fe4c67cd8008edbfb6", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f9cb1730549a759db1174eed813e4724fd00163e74a170b4f8197e843c6a42e9", -"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "122022cc9da90d7d9906f1e4a6dccc2fb49837e307b4280b326d8c7bbdb91db7", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "36ac27daba30a151d15d40e266fb487e8d9c18ea59251dfd94ba7f757f78a1ef", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "9d91a2130b992ea5444960a064ca30bedd7e1769436350877aebf4210c0ddb31", +"T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "84abbb8c57cb15a2f4a4b6f30c95cd2f69e8b4f4ac151482bb5f8c7407eeda99", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "40d2967f3c624b30eae7c31f85b6a81bcee47730f9f3199e8ac20db6621ca975", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "60285715c6450edbe423a19e8b0df400d5956c1640680244a4347c91ac6d745c", "T2T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8481e7ec34e24e41df8ddc65b6ebbf64d9a885e5dfb463d775cd7227b5f59334", @@ -13028,10 +13028,10 @@ "T2T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "d89c872bf1afc6275a1ea61229e01d8ce455478858296cb64eae09570a68f62b", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "906254885716b0b3dda7e84997c5088b7b8d1c51527c5a15ea6a44cc99da0f20", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "0538f0a988f6861777907d40c5a8984fa0b0b99510c7851215d727946a30a062", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "1336a95c33f0ecce91254e2692df8221e5b5763a069e0c2e7333f04c16c88fd6", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "6fbec934c1c5b1e0a7891aec7f46332874d6479be9ae1444a982b3da87077c73", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "db098d139b3c62a71d3bf3dc9c72b6e28334b859b053fe00dbf7ab227aca6fe4", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "7478654fef3518d5c95bbb6b8b6eeafd4f943090a741c947c6ebe4d2fb8b55c8", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "1c02e24cd7c86c1b0f11f27c39ca686c40c3992662810830d63262d10d554860", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "481ab377941c08d97a206616cb2f52e37d573759475dd91d9f9aa1b9709f2ff6", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "92d218a0409671c77c3702e8435fbd3f97360b088afe4bc1f2c11d41a32e942a", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "69cfdb39e02665599c0168d69e0419a0d3601604b5cdc2c1d4ac00c43b373785", @@ -13096,7 +13096,7 @@ "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ae7136a9c82302968e88ef958d21256b3963791009770de828ce3837b98e2186", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "2b2b3c3f9a4a0e63a76d67c8cbd62a8f32065a5c278aa95ffa8eae5b57d17153", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "8e93eb79301023ff6d10bf842c16f684306c20af7a0dd426ae72f0f3dff06393", -"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "dcba7cd0a0db12546f434edd9ca58a8c4e71286e45c5ee699e7241e5e3e27e47", +"T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b8c48e56fe32485708bac4378d3517af1197c91a1c283750ec5132795511639f", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "c19a1ac1776ec44f6b74b4a070006c39f1439ed54ce5525f60b7a11d553b1e35", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "520df8f6132a3209e9d1d4be9b09dff576703e0d31b43a7a0784c6288851f200", "T2T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "002246b014c00612613d2521a8022b182070af1745740d40b2915666bbb245af", @@ -13771,21 +13771,21 @@ "T2T1_es_test_msg_changepin_t2.py::test_set_failed": "d8d349f8486f4c82ccaa5d874cfcc4a5570e5da1f7781d332562b5073a70e802", "T2T1_es_test_msg_changepin_t2.py::test_set_pin": "a15c5ffc8f2a8743001672a4a8321f876ea9c3b81d0b55a321178fdb3b311bad", "T2T1_es_test_msg_loaddevice.py::test_load_device_1": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", -"T2T1_es_test_msg_loaddevice.py::test_load_device_2": "671f826d5757f120e4489d184d6f75ba366ab2dcc376f12736b64e4d1aa8cfc6", +"T2T1_es_test_msg_loaddevice.py::test_load_device_2": "e6d2fd0ac8b4d1dce725f5308729c9c19791c4f40a9a34d9a2794d2c67a39e91", "T2T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", "T2T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "88f7b1fecf30e3ac9d6e7a8e3d1a08f64e6d7a692aa397ec6fcd53c9b2b1e882", -"T2T1_es_test_msg_loaddevice.py::test_load_device_utf": "fc774c589e5c16d8a61a7c0b5b19b787aa81f976679b57c8b8f8c9dcd5ad558b", +"T2T1_es_test_msg_loaddevice.py::test_load_device_utf": "2cd9ac45433f3f0d329e9ac5011f4c3acedc24f9344813275a0b1d3c006a61cd", "T2T1_es_test_msg_ping.py::test_ping": "1d98be5dd1e52fe5da379d1c72d6bc9065228b1d66939ee5bd2eda2fe857b679", "T2T1_es_test_msg_sd_protect.py::test_enable_disable": "d1d62e6f12310ed889ff92c06303d20e918b89b079aa925bf4075d7dbdfd2a4f", "T2T1_es_test_msg_sd_protect.py::test_refresh": "8ed8e82d78f71c0bf538cf111f967abd53b4e46d4f8b8ac5c762e244614709c2", "T2T1_es_test_msg_sd_protect.py::test_wipe": "33dec375458d256ade6e880f4dd829c9b44e83e3349c8512081b0f06989c80af", "T2T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "693c907d6ee3ee573fd5de5e40dd33edfd637f4adadd8a2eb1a23c78640d177f", "T2T1_es_test_msg_wipedevice.py::test_wipe_device": "b1d0cc9f9deb8574deec887fd955a1687b81ed4de4799573752ffc874605fe5f", -"T2T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2468f75bb87b9dd55c5cfc2d2352efc73ad03081b985cb0e65672157d07752b0", -"T2T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2468f75bb87b9dd55c5cfc2d2352efc73ad03081b985cb0e65672157d07752b0", -"T2T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", -"T2T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", -"T2T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", +"T2T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "22168036fa44da2ed40cf7bd5dfd9a63be299ddc6245104869c24bddb81e1ac6", +"T2T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "22168036fa44da2ed40cf7bd5dfd9a63be299ddc6245104869c24bddb81e1ac6", +"T2T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "b6de519694d13a3d73bab48c14c6ca4360cf010e5a94fada54a2bf70ddff210a", +"T2T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "b6de519694d13a3d73bab48c14c6ca4360cf010e5a94fada54a2bf70ddff210a", +"T2T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "b6de519694d13a3d73bab48c14c6ca4360cf010e5a94fada54a2bf70ddff210a", "T2T1_es_test_pin.py::test_correct_pin": "2b29813507704ff50ab8ae7055b3f374bddd5065a3f1beb57f5bb258c261c1d6", "T2T1_es_test_pin.py::test_exponential_backoff_t2": "73ae448ae7c61962e7760015a2e3e9b35b7f68c3fd946697365f3868bd192ef9", "T2T1_es_test_pin.py::test_incorrect_pin_t2": "260f6e6f67366173c9802603d758de655733a542874034d754241dee386c8730", @@ -13818,19 +13818,19 @@ "T2T1_es_test_session.py::test_derive_cardano_running_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session.py::test_end_session": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session.py::test_end_session_only_current": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", -"T2T1_es_test_session.py::test_session_recycling": "c00541487874dba598852169fa300e42de65a9f51b564d51058452205fa1ac32", -"T2T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "207c03bb17b8e59d362b3ceb0bf91fd5313f4a6f19394c0083f310adfbcbb9be", -"T2T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4da324dd8e5e834b874c0eae23ad9a7d12921eba9b8e669cf21c4e1942f0222b", -"T2T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "62ef965ee7587f305889336d89c040e728297da6c1a555316affaf8d5d46b025", -"T2T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "c56f02c025321e37d3c1f92e90b2dd4848ee0ccbc3ed4585f5507c34baf44681", +"T2T1_es_test_session.py::test_session_recycling": "b6de519694d13a3d73bab48c14c6ca4360cf010e5a94fada54a2bf70ddff210a", +"T2T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "84ca5d87113d701738f91774aa4c60a91ef636f986a6303d996c4a0040cfe51f", +"T2T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "3ddeffcc9f6a5d288eccf7034794ea70cf5e245b578d348004feb232cbbebbac", +"T2T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "3c9fffbaf45ae8895e66d40b6e1bde3bfb3557847ef3f22ca57bf54dd1e834e2", +"T2T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "e8989d41cd3f38069f77d650743242fd3d06b4720c46b68920970856709cf6ad", "T2T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "3d2d3c815bfd09c3235e3749e66769dc375f49f9cc92f13f4a7b7df38e6bcfab", "T2T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "d8f0b91058cb8c62d4885837240bd0e7c4d551c42c242d90f4f973bba8f0985c", "T2T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "2f58ac54c73c2a20b25e2cddc3edb0d8731344e4db075de49ceae14c1122a5b6", -"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "e8ed03435f17e920e4ad165b74944218ff8b0f760f498aa137f1af83a934cdd7", +"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "47921991a66833a4ee1c56343d6566cb9d54e7102aaedf92d13ad4a7bf7b542d", "T2T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "377541d279b5db99f173b9a915a08aedb23c219d6a667ab4b66278d568eaf56b", -"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "165c38fdfbcde6e612ec45274d020fde0f6b745ee2fbd64391b9e349ec76290a", -"T2T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6b91e01b3180c4bf36cd729700622a853a76e5339088d5de1fba7785bfd699b6", -"T2T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "3c1a78a7085370efef3ad1e7702687e92c1e3124a9986f6a2b65754fa6e7fecc", +"T2T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "9675a6216cb21e4e1d0c837b9b02b0400d680fafb8380d778ef40ebd75e370c2", +"T2T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "9695360775eb63692b3d600632864d026cc2e13c33677dc950d679a708d2163f", +"T2T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "23b3c8bb341f65f93f66a71495d3c0b330dbbb8c33f40c4485b4c9eeee390905", "T2T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2e7b27ed5d4bd60abd63d89a9b202feded6732b47388c95c59d711bb2a7d35b8", "T2T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "fce669ad118178bf67066aeef778e16028e63dadce84337d81232abd241e56a8", "T2T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "55ac235b00f0084ad9975ed77ed430f7bec60ce9bd44be26edbe040c63d13dbf", @@ -14361,8 +14361,8 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0a67d101b35dbdaaebb5f344a61801545445396c2d7270a9adb3132d0f58ac3d", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5a89c7e7bbc72bb983afc2c2af60d95921ddf2708616d2d5c342b25a3a314e6a", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4f594bf9acd05f585a15ac45d7a5d260129d4eafa00743d26b24f5772a918869", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "f75a4501235ce5898d458242083b5e6f96f1ffced1384728d1bfb87aadbb17fd", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "9f8e293d2d074e23726d8aeb4cacc8649b75f60fceda00bf0444621a5bf90b33", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "88f9af085bec70f0fb73e5cf31e71fe3cd2bce0efaee8f52ae5e27472d2930d6", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5eb22cee3e66f77269e9d994e24b1e53c54c95e09fe26c6e0e607eea7b64de56", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "86e8b7419f6d6c21a27c253eb0b35c0d9436a289c25e8eeffca9214d43c8e82f", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "cee382f33dfe57030dfc80193a7bb0ac01a2fb021b9abb42526229f2bdad11a5", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6bf47689dc005ff8b2c8d41dd84c58c39ff0b298e2e2f1ef985e54bf75e8ed1d", @@ -14392,17 +14392,17 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "35abc08942aaa0f711188d5bda2838f330b1ec4b982fd0e3cb0ec02becdbd975", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "85a2020a385dd9e4a884f1b3cf97c1aec50773add42833b886ed71a6d75db6fd", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cf3be7e08377134c4118bfe9147a6783fa365288d711a8bbf80eea017ebe1f07", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "35605eebe09625b4199f00fbb9a99a1d5fa9b7b9e95111e01a8496655d473cb3", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "faf87601351b6c853f8e4312bbecb228fb17dae603fa1fe30b4b91f81d7cbde7", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "e0def3acffcf941f24fb5c4d608f37cf3ee364d26059cbe128f02e8a4ac7c8a9", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "69a98654bbea558a75a6c80e1806c0c82bbc1637baa699e2bb654f0b2ac0fe97", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4fc2845223ea3aeaba857a25a5374aeeba2cd3524632e01d537e1c13144c6585", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "7a040a50ca6dca9e9e77cff832f2498006a5bf1a9ccb06bd1a9b286ca983dc40", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "44dd0618ad0af3154cb2c3fef2b9ab0c0daee639a76eabf98275defbbeb63021", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "b61b3caaa97eae0a6afaf29a94e58641922b0596e5a98edf7f971dd3e7808cb0", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a2557fb826e3bd3568bf3918363865b368b2f0ada5032de9574a1957c6a26b81", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "65b1a1518e976ac9fdda81403d8ce9b60a208b0648cb248202a36034a9bc5258", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fb2d9ec0389f9fc2d5fe8a0481e76b4a123c4cac1b46e872ac8441e689eabb71", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fc046d0cb15f58374373c56c6b9add1175ef1bebe48ded0714d70f29fdb5e96b", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "00d1ece5abbd4adaeee7283b457659eabb6cf1c12557bdae4fa8b0aad0717476", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "7424b9e3fd3ad19dfc605085a5202207b7d59313b585cbe9ffcf5074b08f66bb", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "42c50d40e1d9a9358f71217f9b076f22ebbf699da19da3d4acbab7b34f3d0932", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "980fd7bb35314e3dce7155118b9dd9f40b4875a45a678dfc25c61d2c54af6f45", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "5f48b212819e31cd95ba9116677fadb5e76b1c9e07549f685b59fd3d1d33b6f6", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "29c7a13359a599d2948e10968e1cbf20dc442aa188913a90bb84a83b6e7bd633", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "4e9de82c3c7beee2a39cb7bf711c5abf24a5e43f3ac5b08cff41df3ad3820d9d", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cdce5e977765d9c237c171e49a73b16b09be0750672de56cb2c1a1719890a333", @@ -14432,10 +14432,10 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ffdb9bd91151fcf5be1fc569e687cf8bda303f8894acd0c23e635964fad3a32c", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "befd923116fd7afc9b8600b525123c06283e8b6ba749a1e07592b5aae20316c0", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3b8e31ef6838f5b86b07a1c8b1f7bc75454e1859cd02d4d07428209c56a637eb", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "5323d908b1a61f446eb841d9f3e8373b5923e376241aff006fd26090a8c50f60", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "e72bf7a853539a0c91ee586123b278c5ed83aba7d15022f54f92d309b114873c", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "bd895015951ca6fa5a457a600469b70b960f5c1fda4e0e7de64124350f9ef0e6", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a661b760f47c41a2112e861bd605c09b51a6dd2eb68b0f80d621cbe1a33310a2", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "d05dc5a50f2a81f19a596be23130d409260b3e68d349ccfb173db24dac5e61c0", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d57ff0cd9454feb85bd20e5b4e8e16caad842cb674a0932f59ce5f0dc39539d8", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "75a04ac98a821c01c343ce8e100ac6b9acffde53ee1722d044ce06dd8771897e", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "842e08af3023a134f95f1845625d69a5d670bcf2892a6347a7eccbca5e158588", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "21f83843259aa869a6127df0788a7c37b1957c495526a22bf053779f36f68858", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "778e4ab5b9a8df87228d72fd43932f95e9cdf58c7ae03aa475b412cec48bbbaf", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "5c82462aa9aa9b37f312a51c936fa1236e6b05a7d049e0070bc797842f6a6def", @@ -14445,9 +14445,9 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "74728cc1862fb0f3c3b0daecba04fd6dd090ab314cc899da7c7c29b50c57ca4b", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "9fe5245c5ec4941d3b1bb000d6212f05e5a5653553c86daa15ec82a1ba49d103", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "d454a300a25312d4ef81351e68b22a46a95f4d24a87efcb4be077658c915f980", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b8f7b8d4e760392b3038bcabe0999c0219e097797ddb7d333ae51adc9772a344", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "72939d1549a06a4a118446f7b3045e913a1f6ae0cd047dc62fbd60195f31d53f", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "d1cd371f15c7ed5d1dde8622df3176c0c5cc5f54e7f62dbfd48461b1431a54d0", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "cf1361e7ca4240e8a3503cbfca39da2fc36bcd0d0567d1f2e834776b626ee319", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "670293fe5291599afbc3f970aeeb58b350b174dc9af3900dcdb7610d77218d0a", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "b95dbfcb6d7bd5274fdf287f892205d8697fd4229a186af5935770c5cd61de51", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "41338181a4e1dd1e8fa5ca591cbbb8ff56ebd3f4752eabf4a2fa4e2ea30eb70a", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "87f49008b06d12d0ab16d66fa3d109505889f898de59b29de4cecd6299ff21aa", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "df049cbfe85eb8bb41c3d76b5ffb1433a9f2f05612421e66b367c977649762c2", @@ -14476,10 +14476,10 @@ "T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "396e2461990856920dd261bda781ce7472cf3b49331062801037bf84bde31023", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a70f36ba6d7379273b9651315e9f24ea61cdc97a259366f8dc48dafda7471b12", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "41054e930a871602894027b45c9a0c5a507126213654f820dcfabf70e1a8ad79", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3928cac8baeed452994232c6aedfb3bcf105f491a51372bd28bd986f933fdd70", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f81d3cafddf1db90e20137a8badf6623ff3f8a911ce92b6ce8f6585bae49c68e", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "528cd1b7978e1ca0175afd7e7ff8191462fe69b1bce888ab6774e8cba3a69cef", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9b6a3ae8a310c2c9961f69bbef0463f16335350724a62f05899b99a4f9f63550", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ea8961c7c4310e9013b0175413956ba55a39aed8a5185387be2469e376329237", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", @@ -14544,7 +14544,7 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11ef6fc1e148b4777e04173fda74991e7f623e9c4e0c4a5d7dcd4d9bf2af7e2e", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e31bee62cd3a5aa0c24e945311409968d70a03310d7e4c9459301d380be9c66b", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a80b71a15747d894489171974cdc867dc8b764b4a9137df695f934f2464164ca", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "2767d02ad1cf3559e06307b9b1473aa49ba531f6e1ffe17792d894db1e25f7f0", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "72bd97f0f34bc14466119f5b9626bb55639ca1b78ab0670f40f2b5e8db16698d", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "1f8693e7979c83f231fd36a3f8be5167bd8964dfdd2ceabaddd0a2bb69af469f", @@ -15219,21 +15219,21 @@ "T2T1_fr_test_msg_changepin_t2.py::test_set_failed": "ccc6212506a30dadacd6f7470569e40098c4bdc5fcd63244b900f64a5fc23598", "T2T1_fr_test_msg_changepin_t2.py::test_set_pin": "2ab805d6f6eea2e95db4bb1373d541ce61afe8f8de1573f32b6b982a5d050cd3", "T2T1_fr_test_msg_loaddevice.py::test_load_device_1": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "91f4e0813cbc4cd586b0d826904aebc50eb16d2ae096d4cae70acc3d112f2b7b", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "3af4b556656a2059464dae107583c83ffd73ba0229c7ed25da4944f92340b082", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "f1c83aa90417737d788d6f5891942a6b446ceebd497830d4cda465197f95f32e", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "4c854ce622fc61ff2cfa66e1077b21b28df89ded3cef3e23b2fd6d5f15f3d7d8", "T2T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", "T2T1_fr_test_msg_sd_protect.py::test_enable_disable": "0de6e5f9cb29e86164e29a0edae8252d600f08b6dde5d8f4ecdbebed63ba6ee1", "T2T1_fr_test_msg_sd_protect.py::test_refresh": "5a584a657f4ed3fdb8b453aff966e78cf67261298fa46fc08b9b1552f90bc027", "T2T1_fr_test_msg_sd_protect.py::test_wipe": "8ea3ae882630b623ed62c9df2b0c17dc5fa0babaffb826ff7c49a4ec5ae8881d", "T2T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "24d55cc37ebc6a853bedc1dc02d03783db3b0253cb8ab67beb19978dd9ec6ffb", "T2T1_fr_test_msg_wipedevice.py::test_wipe_device": "de049b25439137e5b3e8e1e2cb62007a6b689a2979d861abaee4cee80ebbc716", -"T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "68ec42a0c82970f062a66318d4d5c0ccdce7b93a166324abfa7f29adc673423c", -"T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "68ec42a0c82970f062a66318d4d5c0ccdce7b93a166324abfa7f29adc673423c", -"T2T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", -"T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", -"T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", +"T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "8f1b3a32f636a9fc3b04e723d929b42d9781f062d1c7b9a92e539d8b25c84f92", +"T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "8f1b3a32f636a9fc3b04e723d929b42d9781f062d1c7b9a92e539d8b25c84f92", +"T2T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "244dadb7f9f650bbece323e6db06e8e31d5cb31dae8222770f5693110f6a78f4", +"T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "244dadb7f9f650bbece323e6db06e8e31d5cb31dae8222770f5693110f6a78f4", +"T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "244dadb7f9f650bbece323e6db06e8e31d5cb31dae8222770f5693110f6a78f4", "T2T1_fr_test_pin.py::test_correct_pin": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", "T2T1_fr_test_pin.py::test_exponential_backoff_t2": "28c4ff4b2a9b7e881645db9fcae55679b03af977f90ded803ea5aa6543d4e46f", "T2T1_fr_test_pin.py::test_incorrect_pin_t2": "2914001db3a0c10605d0cc252b0852b245e0b3da0003adc805989c40fd721f96", @@ -15266,19 +15266,19 @@ "T2T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_test_session.py::test_session_recycling": "f2eb97708313937084a27fdd93182b8a7f0add858597fb28de723e67337d8b93", -"T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "276a260cf104db73af4a1d9e9a704ec88d3a9d1dfff0014156355d37c4d4639d", -"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "102808683361a84525df77dd5cbd21ff92714f776697675f32c9a656cf15cc21", -"T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "9ae6cf6704101aa4436c9bf0b656431348e694ecf083dca72e982e3a3da24f10", -"T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "cb661a3129d5bda89fee53331ad9671ba8f62d2cf73e33ebd779e3656eec8f0e", +"T2T1_fr_test_session.py::test_session_recycling": "244dadb7f9f650bbece323e6db06e8e31d5cb31dae8222770f5693110f6a78f4", +"T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "663983ab8becdc61ae77ea8a21413d421e059657e90e6f0284d418ea87ea0e2f", +"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "d65c5e232994eb58b9d46be7b3e48e23565dea5e48b329ba8e7a8ba3ce695574", +"T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "2e9504dc2da65966101d3e67c193f2bddeeeca33ce6c752cc3092762db635682", +"T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "4ea9f8f9f0b12a9ac0ce1922612e7ca36b025c651e346cb89750f9b99bd9cf24", "T2T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "8f923a821cac68e04da90bc85419b72c379b0a12dd14f88568bfa719894c6d82", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "f435fe09e2241449a485b41586ade750bc9724ccdf2d85b3ea2820ac0ba5939a", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "ee24a7c07d50a700f3719fa5a8b5a9c2f5e255ee148d2201778107159f0d0c55", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "8fbe05ac2ed51d9796cf9c436af7e3cc58f78e17c7e5a36034df4b3a7278d533", -"T2T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "54862373eb82f2e4b96eaea2d57897b01e43f37c23029b0b2cb8b8e2a199c4f4", -"T2T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "78c7587a24e7c10a33add4e7d2b0f67c5229e5f2d4e184593d22ac7ae40c6e7d", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "c1ad20f9367f5758772da816fbda6a47ea3bf76a34d5879fae3434a3b327cf78", +"T2T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8185f65dde13228d2e69f9ebdc98dab0c4e2a4bdc959caa3e75e8c199b78bff2", +"T2T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "c53361a04e81e8a6b64a3b9710e92f82938b03a8c35bcdedaad543f196b3f498", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c4585c060afed6a846facf4909e7705d64f93673f5711a4e62fcbbc1020be275", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b80498105334cc6c0c17dbbaef4d2f012004f4df8ff461d94a992fef1ae567b4", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "781da6f1be1715db1139b5859a65bf608fd4c3cb1eea1f8df563fd42237f5b8a", @@ -16828,7 +16828,7 @@ "T3T1_cs_test_msg_loaddevice.py::test_load_device_2": "a942abeb2da6b93256417f0414c1cbc30f89c7d5648b9469fa10d4588f3fad31", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", "T3T1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "a84ac1c169af13fcbffd59b2aac05799dcee852570c9b35b12fc3f37cec88bd6", -"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "64f920bcca3718f1b1cc9d41e9f2a715aad28768f42d940bb33517be9da63727", +"T3T1_cs_test_msg_loaddevice.py::test_load_device_utf": "4ae6cafe982040dc371ad11661b613ffae6962c4842a2b3d06dd390dab71748c", "T3T1_cs_test_msg_ping.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "f16d0f3c7e6fbf209dcdf3b9d164b256921193a59497181ce12880dbd68f344f", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c0629afadd2f660e7dde53a1f046e4451eb8ce7ee195cf0bb1c97624cf15fb4", @@ -18175,7 +18175,7 @@ "T3T1_de_test_msg_loaddevice.py::test_load_device_2": "bcc375efcf02e45ec7ad8b97fdd2611360542381e6b5ecf087c66a5d6eb155ce", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", "T3T1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "fea082f3cffbc1cef70b7cf16917eabb8c8861eaed5040a30404c7ff7154082f", -"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "fd5097fe0d02cb6d95eaa980b68f8a714069cdd7d98d0a354e0f013455793b6b", +"T3T1_de_test_msg_loaddevice.py::test_load_device_utf": "1584848f98473778da03e312eb057140e2493326ed3a06d2393ad2b85485f2cc", "T3T1_de_test_msg_ping.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "440ffae3947d0d08480b818a30ba631dcfe454a92f304a3d82735034ae0d6570", "T3T1_de_test_msg_sd_protect.py::test_refresh": "324fffc360acc54078865fec82f2f0b83dd4985cb45d03feb0a050e57190bab5", @@ -18720,8 +18720,8 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "132ae1aace0ae044fb6aca0ff2d30aaa90887234ddc37a3f753a9055675c8796", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "155374383ce921968b782b1a7ed1b19204ab183da0be47f25b6fcdbbbbaf9b8f", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "a9b58c9e5f2f7c00798f424deb12a64cbcfbcb3e22deeab8b17c78d478325fe9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "8940fe562917c7685785990304fabd8bf8a80130c664e9eb98818780ccbe50b8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "02f6cbc1034498c696edbaf61a3c092d9f63b2836024b4da73980fd1c049bdbd", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "7e2c31070f50f3021242bf0c3f33da5edc17c3da25156a7e9540b8d26ac53bf8", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "08a28e6a450b97ade416e311ec0c2255d0ebebd39963e16f9b9109879ba3b450", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "d042135fa665917ec28ff6de6d9f723900302fb8655bdfee12b7cd70f5649e11", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "d25dad4156db737360669cf2f356e7fe335dac39ff6b7214e42fb029d2a0f00c", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "0ff775238ef21f3d478e1cc2f233a8ef18cae5e8baf2007b0768da9614ef470a", @@ -18751,17 +18751,17 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "bd743d1b2c24c365059dc7990e168ade6a8aea9942566f38fe9634f9c48b47e3", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "ba056db944adc682f9ccbea45fe60b04d9a994cc2d2651417585acc4de31409a", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "a97932cd2364dd67351ac08994969293cef0419ffe82bc85ab258cc6f84f8103", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "36568f660597ca6a817a67638a5a7cbaf9fd4b5183cf21f74aad24d638c04f9b", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "939f6101d62d3718e0b3c16bcbbd47e0d4e5993ecc15841a7139f2a9215dbef3", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "794cd7527ff55de26f6d2e6fe56f008ee03adb3779ebe5fb97bf847d50097807", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "985d68bc91e582ab178b4cfd40ff8073890bf51ac7563a570d0e8a2bd9dcc051", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "2da3136e6cae13394147082882d5320c107b00c9da2fdcd66a3f8ae9691a1715", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "260736ae8299d97f7389edbe9534b1eab58c9d8b4d626f1016f0e558a59dacb0", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4c1a0ecf82ef9c716c9db1769f8d155e2e42bb9a646a6d22e8cddf35f3e42f28", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "88e53f2b238f6e1c91f2d9cbbf7639f3badb39e4810b8d422200e0346db9a034", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "d706c9608699b438c175a065cc4f7fb31f23f89fbcb4a44052f0e8962e983685", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "17299417c5d742cce1c4b39212eeb51b98bccc6ba22f1bc76605d2f966c191c3", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "07f2d384e26fec24ddab93913e85d055079d97bc075fa65b4cbc38f53a3a2f3f", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "1aabdc6306d6e2655c3cd7a81f9a9ed5604198bb26db7ca337714ffe956666f5", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "cfe8cad6df60c586999477476424e7f1ada767d3487673845fcc217b4bf19799", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5cc227d20a7c10c2c9fac4f7e1749dafa97f65044d8893cce1b32b2ef49493e1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "7e9507616c6365e7bc2fc2512c80d1b2c343754e3a4bf61fcfeac49f729a464d", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "face8a6667fb3e15d01b2f8cfe12dcfd22c5255fbb6f5b714b08f481d0762e2f", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d82609001413d7fbd3dcc0d8685667da896bf230f6b9c3611cd9dd577285133b", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "da12326664c35ac287bae76b7401102fe460b0756967d762f2ed1fae755ada91", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "71bec5655dee5bd3fe9248b4c631ea5d7598304096d7ce260ca90e89eef6c2fd", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "2ab5c69eb39bc5100b28141df19274c217ceb42a16936ae8ffc1cc0c2798d9b7", @@ -18791,10 +18791,10 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "7b903750178ab191eb42479ca0b3f2a312c9ffcfe7a675e3a8884a28022246a3", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "653eb396779808d1b81ef2d02c3b19860e4d361002598277a6353bce9254a3c9", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "bff530bbb56bf345cc69be1738b6584187011a7b7c00584df1421c3474d1e5b1", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "07f7f558924ce02e261ef4603b25afcaaaca0b06472794d1d3fa0f1fa792c2e8", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "89aeb09385ad67bd0c18c727cf6c866e7b30b4563b5b333b424a5a1f39ba3cf7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "a43930084af18da483c0eb5dd44b1c2b275ada1cd073facb14212f6f8965acbd", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "4b8a0247fce7b5dc34c24e1bebca4bb645bdba23ff81bb7350cd4c8ddf3515b1", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "2c476bf214233738d7e30156d70d351384c21fdf8df506f7995ea52b55c3ac07", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "e2734228154eaac6a01918f60f70b3fefa59162a5c6f3fb7b9fcb364bce7090c", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "6f5bb9696d142814e12b32fe5cf4158214ab8da0a5f0f0ed5df8007223b6843b", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "dfb561fcf4640a4af97dd19cc3a5768b87e84227ddf27b748443f581b69938c3", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "157e2763c0ad8403265d21269edfff5575ab6992bd640ee737946bbc80d662c0", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "ceefa7b8f63b4be2ea64fd6dfbadb2606af8d0ffadaf6a655b8c274adec50c78", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "705a8422d8d9860ede9c52643a23f69ec918acba05bd7944c09e32742d9fbd67", @@ -18804,9 +18804,9 @@ "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "3bb5a804accb371cb9afdb31948a039bd557281f1c14c4b0f95ec339d838f065", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "ff8c8a18452fb8c2bdba9ad8d97dc24566072ece3846a391e094efd77b022904", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "143d3b381ac23c26974d325df12ec16c0a393e3ced78d87c5f027a077b3b441c", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "de184a05863522406fd9d8bd265baeb605a087accaea8778decddfc85078b3c9", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f9cb0433ce3157bdae1f796b0833f95b7d37fb3d3b8af4d4ae5a651e50b749b7", -"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "0aadc2fa6a3949318ecbf619038c01cf4e0c9200a0e43bf8912e874d6b686713", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "eb1bcc0631bf91eff03bfce49677433be837f1721f5f3d447b4abdb562aff8d9", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "60a6ec31da7ce71fdb45fb5a04856010880927d77527fd8b83a4a1d32ab48809", +"T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "cc3a28cd9dbbfef3ae627eb498662bc33ba8113b4c79ae0d0d35f326f4c5dc10", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d201e5dd4f97fba0e2ee1c4bbae67f5ff878d038edc1edfcf9840374620ad576", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "8e0764928ed2a8d3491c1e04138d401b1847c2908ad7ad9d6c6e83c2c07f8ad0", "T3T1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "18fea61a3020f3eae38b7e6f35730c683243ee940b1dc5f3cb6b9e3262410287", @@ -18835,10 +18835,10 @@ "T3T1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "fedf3d463f91ac879cddbdb1263173f5e48facf94b366a35283b222070c26c19", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "fa7b1924df190c575dcc0e4708d8529b6e0b48c3c1905e6bbc44c644cd6e6ffe", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "ff91d729d5b32112bfd0f8b83d1ff2455ccc098966266de4810ccaa4ae12653e", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4cddd78ba0f356ff8d8ff86314cb582a3f197c39fe60a9d4dafcf71fa80557cf", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "5414b443963aded2ed9665730f386c187ad9518f713de26a16767366a1897c63", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "d49710baa53de5f1b98e5f64ffa1ea2c5fd8dcdeca32c9a5047401ccbad41c5f", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "d49710baa53de5f1b98e5f64ffa1ea2c5fd8dcdeca32c9a5047401ccbad41c5f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "e21a3af2c65a559db97c9564c19aa362fc1cec3f62eff5742eac82d04421b1fe", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "5cb2feddc8a2c2b346a2c0196367e2f62a6b3b7f392c44b21459b789aa67b7fb", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "d2194aec4961b8d6001829b515a5333c0e6a97fce72ca523dccb484c374cd8e6", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3a5e2786b322013c71ae60c19673c9b07fa516c29e23050dac1298558e2f6218", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "1b9a230537e0dffef18f5840a763a96f8af93067501b10b1fed5079ec7efd6ae", @@ -18903,7 +18903,7 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "4644be9295a9c06edea2fb0e46529a9f391681cc58bcef24bf778d8461dd1a3e", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "c52201d65dbe07eaa574f7ae336269126c184fddea719585be0e7c0d712d663e", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "efcfbb2809da66a6162ed783758ccf61ffbc4364dea49fea981c1b164a765d8f", -"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "600bca78d5d15da17384217fae3e0620fb1a9f1b51979c9dd6d151ac89c8500a", +"T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "d1ea4bc56d32113f43788868a01ad6add3a303e818d7bfe37a8903f56aa246e3", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "37dca8ca5991d24631dc4a39492d09baea18dd80160b454985b7d9ceb262e7a4", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "09f7cbd49cd5cf886a11201f9566072ad2bfd2454c20863683fcd1c4036b6d91", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f99a7c593d074df574784d6263c534ccebbf2831a90b0f53c5669b0f54bae9bd", @@ -19519,10 +19519,10 @@ "T3T1_en_test_msg_changepin_t2.py::test_set_failed": "8efba7eeda1f478b36a855615587cd429596e1084aca4e3ec2b57d3362391fc3", "T3T1_en_test_msg_changepin_t2.py::test_set_pin": "c3609223d27488c6b2477ae4c8ddb4973a1bf7fdd1aa84530b2718be4ad8f2e8", "T3T1_en_test_msg_loaddevice.py::test_load_device_1": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", -"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "684580ad2697540f07f7512b298673ec2d5b75f487b461ab8211d8290fd50262", +"T3T1_en_test_msg_loaddevice.py::test_load_device_2": "50c92a916a0733925ff30870ffacd86605fd6d5a34ca76e3b98440e2e0cd0edf", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", "T3T1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "965055b6152f524cfdaeaa5aace9b2a894bdeda5c9f64c6b38a7875b048810b9", -"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "0a0badd99b7e0be703965afa388edd1ae1b6f3a96fbcedd457a6de699b73c3df", +"T3T1_en_test_msg_loaddevice.py::test_load_device_utf": "cc16b101743f12264f3a24eebfa8d8ff6fd94e353a693afd471715d6a34a6c96", "T3T1_en_test_msg_ping.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "18e2495ee4cac06d66dcb351fba8ffdb9352f7752f305ae2c357e90cdcdb5401", "T3T1_en_test_msg_sd_protect.py::test_refresh": "82cb15201bdf6dcc16cc68190b304c74edb4933cca10ac5a2016a460012dd02a", @@ -19531,11 +19531,11 @@ "T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "e9fc618a8361d7ee4f46b3cb469406923c097c90a07c9b59ccb3cd2e4a997f39", "T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "593429d09da223f7d5a98c1f5a04a523c2ca58fbde4348179da8f2cfcae247ab", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", -"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", -"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6def6c3c6ecd03c7345cce0ab75f71e9e76b45e047f1026b8149f6676048d748", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", -"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", -"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", +"T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b52bdc7d83d4ec583340a0c9d92c84bfe8dc9d7c7b677bdd8b2796c59b03706c", +"T3T1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "b52bdc7d83d4ec583340a0c9d92c84bfe8dc9d7c7b677bdd8b2796c59b03706c", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "03fe9ec37f7c26a76cb43b8faf4b11d621fe848ae08aa13f815fbb38707f1d80", +"T3T1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "03fe9ec37f7c26a76cb43b8faf4b11d621fe848ae08aa13f815fbb38707f1d80", +"T3T1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "03fe9ec37f7c26a76cb43b8faf4b11d621fe848ae08aa13f815fbb38707f1d80", "T3T1_en_test_pin.py::test_correct_pin": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", "T3T1_en_test_pin.py::test_exponential_backoff_t2": "6eebf99aeef2d6252e025f84d9d15fa86f518bb1aa7dc012628f2fa9e02186c0", "T3T1_en_test_pin.py::test_incorrect_pin_t2": "8abd9089996ddeff3814670b600e0dc4f62d70b5648b48ca5ec0e4bd52bfbd73", @@ -19568,19 +19568,19 @@ "T3T1_en_test_session.py::test_derive_cardano_running_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_end_session": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_end_session_only_current": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_test_session.py::test_session_recycling": "1a953d965f3e72848c0c08a33c14fd125519ebb10e55956da1bf7958f1f4e533", -"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "59a9b9fbfbe92fb73a444f7cd67c57883dba9e5c2b219651fd7bd6ba546eaea4", -"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4036f4a9b235b5fa274cb69537c6eb08e0342ec75523e33710c50f66152a0359", -"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "a20cba7405117cdc6d7ccf7c9098ca29e5ae0743edc01fc2c890ef878ac40a4c", -"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "5389a24e5e9d99a1c4e9910292de37720acacc5f7c4aff9ef661475357062d08", +"T3T1_en_test_session.py::test_session_recycling": "03fe9ec37f7c26a76cb43b8faf4b11d621fe848ae08aa13f815fbb38707f1d80", +"T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "df4fb367764068a45ab3ab6d9a7070d2815149afd75e7f5212411aea4f77ae24", +"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "070aacc253ee47e92ae0b9d4ad93eaea4accb42a6855a7a94a03ddc651302324", +"T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "9684da54658e5c014638051d98c8ea7df258faf64c46da18c08e0109ac0ca124", +"T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "f7ca4ea6f763704d8dea45926dba503e230edc555ebfaa820976cf47706c1bfb", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "512539498be76e766663fd5c6668d224a904d2ff7c3ee7244f78822a9042012c", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "bc4f39786a92ed52ddb564037b23be3639813fe2189ef9117b90fb62d3473688", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "cbe22a00d571f873034b913cf58cab18c7af126ef61ff2d592cb5a761319858d", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "4302293204f7dd7d795d8519b9de9490ae61fa62bf2dbbccf1f9e25a1a24a4ff", -"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "e6594b2d7a799b113123cfea4ef5ef3662943eb19178f3d2a336d5461e7bf7a6", -"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "9fefd47db12895cb9f34c6e85fc57d683edeabf96157a6fea0cb1e94814380a5", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "5e5cef939fe8f8cdcf14c25905795da1a21f43d995b9e08bd192e1e589de9f12", +"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "d0f6ae87ca0cb4d2ecdfd3d4c6731ff6d08e09351b8e8c7706f586f363309156", +"T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "778f47acd58335640b8ac5941378b5adab98a58088736a7e795aa2880e7bf217", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2260b3ddde77ab38e6f1d8c373cb3fcb5c0763ad794d364770e68657ae72f1bb", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d42b9d33225764a1594808eea8499ae5deb9ddd84ec658aa7ada598191838a78", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "51091f6156d8ad96ef64d6f2899f72d980d8ec4329f2936559b21beee6667a3f", @@ -20067,8 +20067,8 @@ "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9ff0d3d8aef9be7c9428cc31295affbab4613e654a7ffd82020392ea5e84fd95", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "f56af5d69ffa50694b0a69eed414c63f821e2a13c30d3d7ed0a97a51028ebf0c", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "dab5eab5b6020566c9e43a1555c23f4407f1259262a8f388bba71f955c8cfaba", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "d535f68598a6b6ef664d34d1f854861fc87175dd2ddf2b00add9cb4af2587ce4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "557f234086c3067c6b0e1a0e8b3dd6f1c62a9973b5e800a9291e1f8602d9ce9d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "49dfd711c504cf1772a06471c818519552651b0d5f021d915ed15f8cc8cef188", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "89e200bcdb699c691a85a7d1a1a3f352d050ec3fa2008353ba38978d2bba545c", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "2204fd58dae8c87a9c71caafd654e57883cf97fb0e2746f12f6eaa27a2177032", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "6ce82e56a4ae3b4dea196d15ae948b15bc0e7fbb9bc12149143669ca07c94b67", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "44e546aa5ec03eac7aa2e68ed60bf791e636918c4f8cf17e0360fae6316a1f66", @@ -20098,17 +20098,17 @@ "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "d7d8cd425d5addc92f9c5a4d8bc6ce5898265ace3a33230651a0082a9efd0705", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "a553daad93cd33e14eb9ba0a39fe7b9c5ae708fd75dc0ddb07b4bc4f05a730c2", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "9bd647bd275d49d2c98c66075825ca8990328f092b98a7bbce14b74b6b4387b8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "0bde1cdcc1ac9ad82dd6c90d72efcfcf0390a5bdb5e729a3fe4e4e3d1435b06d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b434456c91ff2653a7a5ac3d1504f6d91278138af267cf08b5b6292c4f119662", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "de8b67f2041ee5e877d248decdc5511b6d5a94f2bff779d5a08119662e67f89e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "2e7d41ae0490da386441f00922e15ed9faa8650c1b1230e2c1005b11c000b304", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "01c490cea9f9fd810376b46df3599a40d7c0d827a2efefd63b71db520cbc350d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "9da80147bb32ed50267232b324c62d12e41b02fb71eb52f275f25739124b5b74", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ac06b4ec95e25c4257c3fbbb987fc5b16fd395136a482d7506680536f21eba01", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4d7d4813008e435c62fb494f23f7e8bf70adb2604c846fb5d1413eae055670ae", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a57206d2ba29a0775aacc6d00d73c508ac21bf91f6ae9e4ff42b35d2d4f087cd", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "e07d938a5e61edf90be26a5d90a03e1984348375906df6ed605ad57058f51825", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "e7d6db3daebe4be35cdd4842d9ff7dcbd8033fb557b7b93a6edd1de49ab1ae1f", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "6ce3fa46689d4abe03965c73e8257782e164b1a150953dd9c6cab99ef5fb35cb", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "f7cabf6ad647d22d1270f5015974034f137c9f403dd0526119c260ace2487143", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "b8ec62d3608e42c09cfed04ab7ef68022617466296fefed3b7a767f58ae8872e", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "f43bfaabbedff6e979a11170dc6662627836beb37ea6cf00f85432e58fc2c634", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "acc5845f25037f0f36da96fe9736239c5143277d507864a77ab609ffd6f7eea6", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "256a1a8a018b1b37769bef43cdc7b1557a9d73ac8494f1ee1da4d258829d6490", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "b22ab08f8733a899ba440120d6bb4465276c2f07a7766fc7c680599bd466bf68", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "7e2fc403472456a86e990b81e81d68c5bcd0520e807b3c419866a34ffe208bb1", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6a341016ea669db4e2da9857ecd5ed484104c51c36554ba3d1620ade49008fd2", @@ -20138,10 +20138,10 @@ "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ec0e75c206f7dbe3a5426b16d3bdf7f24c5ad09d394f937de2bc6f26d31ee2bb", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "ed390d33fb018fd00bd4027c77fc7b4dd6d3b9580163cae73243873482c93045", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "0fd376496b0025207bc3c7d007c84ddb3b7c839627827ea869aa9116a6078933", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "e822d1a969209741608547341dd96e5ad7203e2477ae172a74ac8b3e72cbbfd4", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d02f885aeccb2ac1d890880af1b46eac05bc0d08a001de8c18c30dda2bb71461", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "75d7cfd915f7714d1ea15c0ccac56fb25204795fa0d31c54145f1eed93bf352f", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "dea4068e87c7a7eabcb48fe520f20ba2ce0a046c811fe707ec4e86d36828b221", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7bd04f54de38eeeb814a9eadf3343cc46134e208141fb31ee70adec3e25c98af", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "be6523fad98cc403d8d73b4f45beb1e55c271c90a72219e667b0b155879db170", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "dd9723d587f1b7ea71212ea5237f8023aef23e2d3e63c58a84663d7bf94d2866", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "c6dec532870efd9dec6a126c07bb9ac94b416057911778eea05c04b71766e16a", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5d38ec4d35fc7bd234fac68b4231fdf3320205575931141b9ec3160e50ee0a10", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0d0f2ea474ae4f1987935f1653340cb5bde1223d9799c631dc849270eec6b00d", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "c77b227e20d89d74c08b2e8f277194858f914f84093b26685d2d2b790a81ba50", @@ -20151,9 +20151,9 @@ "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "c753e577d257f499e3960744874c38bf9e17844ffb9dbc72e64c673dd1a5ab70", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "bab0461d15b1c271a242b84757a5578ad636acfa311ae79d0ee4a743e22ae8b3", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "722dd8dbdbc3acffaa8b10dbad32556512b7ca9e4f0ac18e307b526b6cf2228b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8ff4906fc472c1839bd8befa231dbfad277c63083060f4d293e599aa45d952ec", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "cde9440f31c4337af2476badb82967a8c0ba47605c0a751e8d26f71b58dec6ca", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "49b8ab14e95001ad2b1d16de24f66e20a37fba96d50fa228229ccc553d093067", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "78d4bd273a23e399c1a5a3dfedb59ccd22163fe386295a5044fdc97a862aeaee", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c86a3aafdb2614f048368a978cef2990d0c5ad7d58581f0660af339de5c13366", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "9f2e09ddac9b6f55fa16a9010866510eade45e0999fd51e4caf24e84435852e3", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "2e83efa10b346d7f5b947d7d2ef9f55c16c21bc60a758154a46569e6cb17e8e8", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "07a5dbc578a03d531af5de180cbc24ccef503b4ebf7cf11f7798d0941d695648", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "b31f5666f78f0359631f4eaf08b56af8cfa34aaa71abc46eed3860f4d089bb17", @@ -20182,10 +20182,10 @@ "T3T1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "f7d24bbf076a277385eb9c6ee153c74b0c44f451fed3cac8fbc91cee293be9f4", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "072a72c596b2445fb72056b14775a8fd32bc46f4c0bb916ac914f95e6b15a8cc", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "ae80bf27248bee57aa11f01ed91177ec0197b56662d704e5d47dbf204fbacb6f", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "742ed8bbd51a436e582635b806e2905ce66809ae5760217a2b381e442e78e7ac", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "905aa9798ad68769d01c38b1507867fd53993458ac811b24e05ca133c3616942", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ba3d5982805325964427f9b107407f5cd365be8ef21b468154584a1c1ee715fc", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ba3d5982805325964427f9b107407f5cd365be8ef21b468154584a1c1ee715fc", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "4a2ab20c187a6295b1d2db72ced28fe552b56ceccda18e870bed5f6a6956fa54", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "e777f27994f05047765062b006e5e6e73eebdfd718a886a7a99d85eef95aa834", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9a75cbc0e925b9523e1450e3fe2835986c5c26a2aabd8bb8d3d24268d4c9bf63", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "670778ed05c5fb477adcf77a1e1b36159120e655324739b2bd2d27591d1ea546", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "1444f8543981957cc9a6e94fe235eee9e515d7c7ff37a0697a905f74262e1020", @@ -20250,7 +20250,7 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "ed3a80f37785ac683ec81e3226a179976643c67c4b131f0298a12082a97223e4", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "8aa9c1cccf151fbee8814d9fcb2a9580b134ed351dc9e04de99a9432397bc013", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "06fde8045b8e76320eab6f8ecc1891f262a4eb40a60b242544297f9f95c27f66", -"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6690a761c94d4f68651d0245f09572ab1b698c91ff9eef32fbc6c0d78328d00c", +"T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "f15a8d836141abcb2d9229f118768655f6f869ba2696f76e7b138cdc87faa20f", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "fc866efb5946931fcd6f0bddfe3b785f4754789fab33cfb0d7b306c7a575b9ac", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "550392a19f3972f928555150b252cfb9b38e1c12be057875dcde425e2fd0d37a", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "660bc57db1b12e2a1b5c55cf00073c06e6cd79d1e9095ac8e65cadf4783749d5", @@ -20866,10 +20866,10 @@ "T3T1_es_test_msg_changepin_t2.py::test_set_failed": "98eeb009e044e3ad3f27630a701f5b39243cd5fe7c8ea43916cfd7c9f35b262e", "T3T1_es_test_msg_changepin_t2.py::test_set_pin": "cd8d5f6ca5fa423cae01ff7a18189304f0feda07d034e21b505bf01ee0f131b2", "T3T1_es_test_msg_loaddevice.py::test_load_device_1": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", -"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "459fdc8bed25deb41cba5a210b39b2ee634a0eb468a2aadc766dcb6c909273a7", +"T3T1_es_test_msg_loaddevice.py::test_load_device_2": "74eb49e692ed4c7aefb7c6beacca9b7481a41c681afdcee7c9ed664dfeec7e11", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", "T3T1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "8910bfdff6f3d44bf239fbcc2094585137d122df08f84c5ad3a095ab30692350", -"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "3f998178fa0bfef5f40a1bed446fe0fbd09541cd10cf9ba0f471d0ef7f550f0b", +"T3T1_es_test_msg_loaddevice.py::test_load_device_utf": "10476fde25ff363f5ead022752eeb7e222c3081f6c66b905db3c1be55249fba4", "T3T1_es_test_msg_ping.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_msg_sd_protect.py::test_enable_disable": "cb61248c0d0b46b8a4433e2bf12ccfc0b32ad5b9842d5d80eb44d76f0f1f17e4", "T3T1_es_test_msg_sd_protect.py::test_refresh": "a7235bf977a5f7aab3b0133f0781feab28319170ad80785a29f343aecf72d996", @@ -20878,11 +20878,11 @@ "T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "75650acb32f25ae46e9d7b78fa9d2c30c85b2c3998cfe3dfda3357c20e4302d0", "T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "f7ba337dc25fe91c0cf19877534ca2fca75d2ba02d0f5f3d639e1ee5924a0bfa", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", -"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", -"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3034969f1ef1dd6ba774b7ea5828066b7688da1efb1d89fe86bd0ed657cc387b", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", -"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", -"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", +"T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "7664f198126a0c78d7ea2ad1e6e1e2a2d07e9322151f439ab82a41c9695a6c81", +"T3T1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "7664f198126a0c78d7ea2ad1e6e1e2a2d07e9322151f439ab82a41c9695a6c81", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "0fd2f3b1000c1ebf6661796358a3ca656f029b86b852923e14faac4700779889", +"T3T1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "0fd2f3b1000c1ebf6661796358a3ca656f029b86b852923e14faac4700779889", +"T3T1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "0fd2f3b1000c1ebf6661796358a3ca656f029b86b852923e14faac4700779889", "T3T1_es_test_pin.py::test_correct_pin": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", "T3T1_es_test_pin.py::test_exponential_backoff_t2": "ec4b118e4cd17f4eb8e2ea323557f11ffd30557473512024a509ac661ed433ec", "T3T1_es_test_pin.py::test_incorrect_pin_t2": "356c591450c2f7096ae374bc843af0dd64d4b82991c072a1d193f5bbe580033c", @@ -20915,19 +20915,19 @@ "T3T1_es_test_session.py::test_derive_cardano_running_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_end_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_end_session_only_current": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_test_session.py::test_session_recycling": "f2a7c4cda878053dde2970f3617d36622f37a958d377fa9b845f48bd86df681b", -"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "830cdadc929bdbc2cfeb97b9188e57d3d8ed50b118b99371dfd30ada1e4d1987", -"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "2b5ee070998b431b248af37af5a58902a65102fb2c1f3a2c7e397ee9b13dbd80", -"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "94897a889f24f2f82e0f06651a28043b94a713c01784926ebaf78c7850d4a84c", -"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "dc447a62d85b77f0c1644fa4ecfc42f243772cc41a32e27a91b415a7808d65c8", +"T3T1_es_test_session.py::test_session_recycling": "0fd2f3b1000c1ebf6661796358a3ca656f029b86b852923e14faac4700779889", +"T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "722825857cafeed2f9c987418b23dcbeb893dbc7d04be197f69b9b1dff725761", +"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "5056778737f478ccf29e135a302413f0d2b7aee386dfc87161ed7e9109cb4b75", +"T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "ad2a8d58a1e3054e764cf423de68812105293b0ffafb152f9cc949ca63f72a97", +"T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "627263066ee57d565bf588e6186c3fce399a33a7395ca82f7b38e958939d1913", "T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "64f2bb12e6651c86436fd3cc3ee96a724cf98c25d0f295c9de17344bb20550db", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "7be553ea978220b1bf49a1ca359a92f6531b0cdc333449b510b990e92d70e73f", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "60758e89e11f0f3b3c5185c83f726ac8c8ec708bbb9556b1c63fecb61f55af5a", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "15524960dbdb98358f940081fd3ad4b15c22f78cf2737f2c76361ddbb3f2049d", -"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "74664875d2f7c17c91e4a850e5cb99eaa27b9af02ac7f53aa5c8ac059fa70a10", -"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "1c9452d995b711de9986e7ae260bb2f6f382e54a720330f989afffecc11449db", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "1b909819708a91228829e52895199e974ea1467ebefe9fd658798beca0c84b75", +"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "86c60fe1498cf03cf4cd01d8b3e889e41e84c67b0444bef93d13e288ab9248bc", +"T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b9b5c69cedac3983ec25b128a3fc1fb940a3c922e783405e4d7e640c4fbe49f", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "faa3fe89f0e40b73585f8ff38a46017fa083236ec02a3d3d847980e5d8f18164", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "727a8ecc2ce13554ff1335082c344550b71536e6fca9254492cd3509437d7ca9", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "0c12e7dbd0fa4fe4d655feb4f8498ad8ddf1dc467dadbe459f621a74ee7472bf", @@ -21414,8 +21414,8 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "65442d456d3d521ba59aee02f930aa2203d11071cea13c0ed31d6497ad6c77e4", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "7fcd35e688e8ee972f222f45ec34a01acbe817191cb2ac98a130495860bad82e", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "0b1b00d9e82fdb3a6a1a665d7b1860b2b3e381b399f30338ac5c0ac01614ef36", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "aeb3d55d6877571f9a8c7b073e2629ab85caad7aa027f844d3926c1e218019b7", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "99520106d3c6ed0e52af2f46b274d47dfbef69d9f934b5ed78488665e7c63b6c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "a1c6b1ec2222f6932d37658c1a2e67e7883b98a592e4a8dbec5c1ee94e770ebe", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e7c50e3369dd58e84c0c0d6750fffe2f450da5d011354aaaa77e653434be362e", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "6072be81bf0b333e30019206fe3c0932970c869a5905c61394303a2ecc4d1570", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "4fd99df9d27d24a5912322ead6651ce08f2b6aa5900b2e23759e07e662757f35", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "2cb81883166b264fd5d514bfbfa2f86391ad94d8a21c16f0cb9727a8d24c03f6", @@ -21445,17 +21445,17 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "7d561d8448c9da41817218af1917d84cc4317a3ef3d3d583f7cf66698e9968b6", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "bcf0e2a1fa567b792a0b7e06997cb49cc39b6c854708d7cc205f27c04fa3972c", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b01ae467c0df90ee63d74e75804b67cb538a951d7fa971942aceb74db1e9d651", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d3e8771a9941ccd8f8ebd72fc7cdb6c68365e459128c8a0d5fcc2419e47c67e9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "d3d0ca8b15341ab7fcbbda68b64e2c4be81b86abf1a45b92e25f77921e68f9d4", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "14d42083d9d28d1e86e587042fe993b7af3c36b71bd757786a09d3005b494a34", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "28d3cbb241b30a28097ca39fa2aff71e970af0a264ca8d9576e7740958bc01b7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "311d2e2f3d62c1c59c753abce609eec917a97e73adba9beb40954d03aa125083", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "647654667740bbdea7545f80a55572ca988c06099c25ddc476ce483cbd8fa40c", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "eda24010a49f716b78766be6433d959bebfb46375daf2d46f42b16b4d7913175", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "907ca35cf21775a4bf884b7c72ca84b307224273d4642d4ac8e527c06408d35d", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "01c287aa4d24a862bcc371a16382b5db28281523f155b35af5f647d46bf7a907", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c24b6523b0fd6931855318048b690a1868d017da94166a30afaab34dca35cb29", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "82646557b8aeea5f813789ace8f750283910de2cf983ed356ad4c0c99ca0bc5b", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "56f2a02d046b14a25118b26320462691a312d35a1c123af6d01ed9ca695ec729", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "64323c9f66c26e229c54bd3f49bbf87dd8ac5969dcce09d651a72afdd0a3d455", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "f631d43bd2de8bf6942d9636f5f882e9eb4c4f1d02db5f0d53765766039b5283", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "0ce983cccc1ef25889f5e0aa2623d2fdcd1ff2623cda6a62ea13f0a8959b368b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "8febe567b69d5dbf55bf6803c09978e729bbd729eec3caca4a7c80fb3c41d74d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "487a7903037cbd348280fcedab802e0c664333ddce73bf17490ef7bc8b30a48e", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "137814e0aebe1f2a09eee183218d1b3e19363e2a5700ab870eb822f7d32c5aa4", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "3bb4f1974796e51b293cd43f05d36dc5b6da422c7cb4e12f9cf9c2f8356a4fdb", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "36366148d1586503079ced39177c3d0d92e2781d64806976ab7a13f448730fd6", @@ -21485,10 +21485,10 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "87d8f3d292dd2b1b87d6bc1c2a17b9d17501583a436ae673c7c00ae9a8bfa208", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f5022320b1f86fdeb07f6a507cfc560aa7f87cb88e36509c13edffd3f3b2986c", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "70b4f9ef41baaa3344606071a0c8ce23e4fb654b3bff3eb2cb7db5602aa755a5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f0377bebef9b49783ae6e1037be2e39a253bce52913a23794202635e02f65b0e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "c68befd5af9438ce218aaa5986bbb295c45e495e78211f6a5aafdcb1e8d515a6", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "9c97b9a6525c024a3f1320694662747bdf449bfe8849f15f8fa679d6e3f72e4a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "76daf421e38e4a4a1e694d915b8cd5d1b39aac461fe2b32185d85dd32cac96cc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7c48be18c0ca8d713d87059537d0f800346694c4fa8addbef389ab2d79ea23cb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "0f3e930b1e6f71f49f89fc31fb14114675a6778f780d5ecf615ca3462cd0c93d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "4cc65484bd801773ca9d78d6a8c8473a08dec9c423672be51955e262976306aa", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1e67c0ebbbe782a709b60fb00600574ae93c8633bf5265ead8ead8e524858d8a", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "9b0316def113760816e1d0dd860b3d24e91a7ecd265b787fc22a8e544dc0887e", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1b5affdc4a3b3acfb6574ffc3a7002f3d8ec17dd8a98bb107f48e2926678e3d9", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a81d84551ade18836ad6e966bbdaa97ca6da01f4354c3b8a17c8a2b19f2f2982", @@ -21498,9 +21498,9 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "0288fcbf818decdd67f328c8d1d6a663689debb7376e66f582ff3860a538498a", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6714257c9f0a8664d2ef99e2159e9484e07bb60f79c3e87f34c603c03a1f1b8f", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "eb900758db099b0e32e4ab2457bb36c812a23a304db037f572663b4528d70ebc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b6764e6ac9d6136011eb859ddd3133b752c7a6ce9e8a3ae8255718bfce8a661a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "6136e9177de3d198553fc9e55d90fa81b13e09303025e99b88483063f36a3495", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "87e992228ffba47d4e73db8f7682dcd61daf7a2c5f675250d90b75453e9e4f81", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "bebe0a07240cb7f8200e13356b415750698109c50c974d20e359e06d3802da6f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "fc10fd5c152c993da52e7f9e4a60ea85f9b2cec51cd1d0bfd96d97ea1fa00fca", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "9a71c0bdd7b945357c22a6f8456cb53d978d09e26fcc419d583c7faca67350f3", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "4a7bad8df987f22a13031b89e60cf90b4deea803059ef236be024c949e8a180a", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "de739b099b84cb9b66546eab0b53b59970bb7f47156c0b908997e321b3a4eb54", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "4d47b8b72d559fc2cdb1dbd6dc924e6ebae230f70ac856b6d6c9032439e1b46a", @@ -21529,10 +21529,10 @@ "T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "cafafedf3e3f8f44be5f2a25bade677de4f90193b76c0f345c9ffeabcda8c6f5", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "bc8cc136dbfdee105d5c6c816b1c84c976f881221cfcd277d7178aaa1d6f2ec5", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "d01f1297d0e4575dc9dc29a94c2018d0e69a9983be5b9d18fdf83c0f4bd89b3c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b527e7e451b26a18d79802ff2741c2fbe214fd4f69e62a8ec867c8d4e60b508e", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9339c33733671f2996b691a19e86dd19512b682ad18ce1bfe2f9dabcd4dc2565", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b1d06289fbeaafbe0726b17ff91b6d42058b9402bd4098e783179d636dd28ec6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "e64cb1030330ce7c57ccbf0d8310fb75174f6bd71a0ec1978727fab690e0a857", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0c1ffc6630f1068a0b1fb2aceee8e36db3939cdf7b0274d3e6b74816219bcb66", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "0b5d5822eb7f5f28f6e1b2b3e6e895e9755a119bc500ed1cc1370db9ddd34c0b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6860dd2bf19c1b1479adab501d445e0bd7283f86128a43efd4981b363da2fe11", @@ -21597,7 +21597,7 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "e2b6844d60ab805660c838607272775ec68b7d016201e6ba87e8de5c4338ceed", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "abed94637c26f35db7fc0db29b7e226e48ba08512391fa8ebff0b10863e64e61", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "e2f8bc33f283665b3d23466f17e6819e06871e56e319116472214482aa414a6b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "fe8912025bd59cea9f4333fbf88a9e898924687b0074285835606415d876ed2c", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "59e8fd7e17193fd54e58a75e082f1bfcfd1bb74975e882ad03f322bc5861f1e6", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5a54e0fcbbc6d8ca427799ef3ac2f498619dd561846089b64fa582f9ba3443fd", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "63e1435f861abb0dcf3132b6c175ec1cc817faa43891cda63c3e76506997a00d", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "9f5a936ab753770d3f7c747b6bc1859165f321cc39f8a1a85154941ce46fded1", @@ -22213,10 +22213,10 @@ "T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "41af53080a9c6b57e4c3b0e9e1c8e75d7122d335be770939602cfb7c2e9868a9", "T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "8deb5558089d7a8e13af17f2f4c3878d5791dbec7e5cf1329c93f7f2571e41c0", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "640da75650b68386d20e476cdf14da880378fe8db7654c5e876152463c6f918b", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "930976396476ca121ad5e7c4c3344fd952635d7c0836d36b5fe8f2a2d4bf7bad", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "fed52ee47765a29e17b4c17aa87d6fe36a8122d239fbd1be954c0d03f86e2a54", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "64760e649f45ed08e79fff2f404c4124923962757a617769d58b5673469379cf", "T3T1_fr_test_msg_ping.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "248d3bd2c671109278f0c75e7986a20f58bc04f72ae39b855f000b11ece6d781", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "af9bd20cea2fd6e75d55a1b3ac918f7418dac77c4bf6a768611579becc71cd17", @@ -22225,11 +22225,11 @@ "T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "eec46a6bd76f0b408d9d59291f01316d32041cd6c1c37dc89914b641e7cbf3c7", "T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "3738505cc3fc5b395bc652371875bc2274f6a9a65143d031450e01ec5ec82aeb", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "e66c1e71edd702b180073acf2fc7629c1eb51f50f7d3d0f4e5843abd2fab3c2f", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "bd195bb47315721defc944f1a2fbc51ab1a2a26855c0fc5af452cb9f93556f57", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "bd195bb47315721defc944f1a2fbc51ab1a2a26855c0fc5af452cb9f93556f57", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "8f8e76c0c002c2e1a10d123bb3ededfa42a7dae66b00e8bf1000cb8121c21e56", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "8f8e76c0c002c2e1a10d123bb3ededfa42a7dae66b00e8bf1000cb8121c21e56", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "8f8e76c0c002c2e1a10d123bb3ededfa42a7dae66b00e8bf1000cb8121c21e56", "T3T1_fr_test_pin.py::test_correct_pin": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_pin.py::test_exponential_backoff_t2": "6a4db222948a30f8babbb2233df1afb45700e388be00bd28269d88c54923bd21", "T3T1_fr_test_pin.py::test_incorrect_pin_t2": "dc48fcbd7246036f8f262e30ed63b0c70eb08dfc0197cf00ab2c29ec1d0bf2e5", @@ -22262,19 +22262,19 @@ "T3T1_fr_test_session.py::test_derive_cardano_running_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_end_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_end_session_only_current": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_session.py::test_session_recycling": "720aad446ac3d976a0325c47cfc153739216abd60981b2f8da4fa6d1f5609b14", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "cbaa5c31450c0951ed28605dbb3afb73b768c395860da44d648e5572d67414e4", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "995795cb54bf23179f5ae59cf059697261ce08d4a2d5598641df2bf2470b3707", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "5845603b87774e931fc2e63564e958b750d91e270c4cc6fccd4d14895e239999", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "ae4efbae55935340c767e11d0bace79b16d48e20324d46c816f808ea37aa17cf", +"T3T1_fr_test_session.py::test_session_recycling": "8f8e76c0c002c2e1a10d123bb3ededfa42a7dae66b00e8bf1000cb8121c21e56", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "643677f155243cde93cebb6e8bdafdcf3697968de70413b6f3b6d809b6e1e1ea", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "3d32a35115088aba5ddf7d7f67740b0b0c5d88ab72c9c5dcde1cdacfdbf63b17", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "3b3820ac53cd7fd7af513486060d6de492b963010cb64ed32e8f53c5242844fe", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "a74992fc3d4750ac50fcede8466510dec1d2a14a3689ce787704148ad2f16e9f", "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "e126bcddda7ce30f8f5a15bb717b6b841f64a976f96f747b51ada2c2e68d60ce", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "932857f746174d5a01348e8467a4c215c12b35517d035c9282be8366a915cef9", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "db8ac687f06daef0aa7e3b075041eca6060d377ad3ff1aaf0e87d58909de87e3", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "939e9908c41fa307ce4515a71cab9ecdbcd55101cd45a813947372aec9a57ca2", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "83e65a930718cc89d52171e14d998457fd880f64e4a7785f85deaf9856c572ce", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "d69fd4643f9f8456871dbdb07a641482f0ba5aa433de190aa4307c53d257e5b1", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "a6ae19bbae8c88f3c2561d3c85000d8cdfd50e3fc56a37dbabcd86a7da951266", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "214b82c8a28cee35c905b4f13c7e6c1b886c072ae29c20d7ecb7cc91d126764d", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "e12e826422f3ed0cbca996e5d07ec6c4bbede35ea61a83d740e5b2f86a6696fd", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ec2caffc016d8c0cc628a4039774779149406552f38baa3230ca674766e18469", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "73959134ab8f750768060a39c13a1fbd5995b9e69c4d63dcb910a4e23f704434", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "bb8eb4722bd54462c986f19b71e20641af0c619b9f0d0cd34deb0405bbc078d8", From 470d6ec24e52cc53f42d9e4b30cfec5ac7ea39cd Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Fri, 19 Jul 2024 13:28:36 +0200 Subject: [PATCH 467/626] fix(core/embed): fix too frequent reading of touch panel registers [no changelog] --- core/embed/trezorhal/stm32f4/touch/ft6x36.c | 74 ++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/core/embed/trezorhal/stm32f4/touch/ft6x36.c b/core/embed/trezorhal/stm32f4/touch/ft6x36.c index bd22aad8cb..2d8e5485bf 100644 --- a/core/embed/trezorhal/stm32f4/touch/ft6x36.c +++ b/core/embed/trezorhal/stm32f4/touch/ft6x36.c @@ -21,6 +21,7 @@ #include TREZOR_BOARD #include <stdbool.h> +#include <stdio.h> #include <string.h> #include "common.h" @@ -33,6 +34,9 @@ #include "panels/lx154a2422cpt23.h" #endif +// #define TOUCH_TRACE_REGS +// #define TOUCH_TRACE_EVENT + typedef struct { // Set if the driver is initialized secbool initialized; @@ -43,6 +47,8 @@ typedef struct { uint32_t init_ticks; // Time (in ticks) when touch_get_event() was called last time uint32_t poll_ticks; + // Time (in ticks) when the touch registers were read last time + uint32_t read_ticks; // Set if the touch controller is currently touched // (respectively, the we detected a touch event) bool pressed; @@ -259,6 +265,7 @@ secbool touch_init(void) { driver->init_ticks = hal_ticks_ms(); driver->poll_ticks = driver->init_ticks; + driver->read_ticks = driver->init_ticks; driver->initialized = sectrue; return sectrue; @@ -337,6 +344,57 @@ secbool touch_activity(void) { return secfalse; } +#ifdef TOUCH_TRACE_REGS +void trace_regs(uint8_t* regs) { + // Extract gesture ID (FT6X63_GESTURE_xxx) + uint8_t gesture = regs[FT6X63_REG_GEST_ID]; + + // Extract number of touches (0, 1, 2) or 0x0F before + // the first touch (tested with FT6206) + uint8_t nb_touches = regs[FT6X63_REG_TD_STATUS] & 0x0F; + + // Extract event flags (one of press down, contact, lift up) + uint8_t flags = regs[FT6X63_REG_P1_XH] & FT6X63_EVENT_MASK; + + // Extract touch coordinates + uint16_t x = ((regs[FT6X63_REG_P1_XH] & 0x0F) << 8) | regs[FT6X63_REG_P1_XL]; + uint16_t y = ((regs[FT6X63_REG_P1_YH] & 0x0F) << 8) | regs[FT6X63_REG_P1_YL]; + + char event; + + if (flags == FT6X63_EVENT_PRESS_DOWN) { + event = 'D'; + } else if (flags == FT6X63_EVENT_CONTACT) { + event = 'C'; + } else if (flags == FT6X63_EVENT_LIFT_UP) { + event = 'U'; + } else { + event = '-'; + } + + uint32_t time = hal_ticks_ms() % 10000; + + printf("%04ld [gesture=%02X, nb_touches=%d, flags=%c, x=%3d, y=%3d]\r\n", + time, gesture, nb_touches, event, x, y); +} +#endif + +#ifdef TOUCH_TRACE_EVENT +void trace_event(uint32_t event) { + char event_type = (event & TOUCH_START) ? 'D' + : (event & TOUCH_MOVE) ? 'M' + : (event & TOUCH_END) ? 'U' + : '-'; + + uint16_t x = touch_unpack_x(event); + uint16_t y = touch_unpack_y(event); + + uint32_t time = hal_ticks_ms() % 10000; + + printf("%04ld [event=%c, x=%3d, y=%3d]\r\n", time, event_type, x, y); +} +#endif + uint32_t touch_get_event(void) { touch_driver_t* driver = &g_touch_driver; @@ -361,18 +419,28 @@ uint32_t touch_get_event(void) { bool starving = (int32_t)(ticks - driver->poll_ticks) > 300 /* ms */; driver->poll_ticks = ticks; + // Test if the touch controller is polled too frequently + // (less than 20ms since the last read) + bool toofast = (int32_t)(ticks - driver->read_ticks) < 20 /* ms */; + // Fast track: if there is no new event and the touch controller // is not touched, we do not need to read the registers - if (!ft6x36_test_and_clear_interrupt() && !driver->pressed) { + if (!ft6x36_test_and_clear_interrupt() && (!driver->pressed || toofast)) { return 0; } + driver->read_ticks = ticks; + // Read the set of registers containing touch event and coordinates if (sectrue != ft6x36_read_regs(0x00, regs, sizeof(regs))) { // Failed to read the touch registers return 0; } +#ifdef TOUCH_TRACE_REGS + trace_regs(regs); +#endif + // Extract gesture ID (FT6X63_GESTURE_xxx) uint8_t gesture = regs[FT6X63_REG_GEST_ID]; @@ -465,5 +533,9 @@ uint32_t touch_get_event(void) { driver->last_x = x; driver->last_y = y; +#ifdef TOUCH_TRACE_EVENT + trace_event(event); +#endif + return event; } From a35e9ba5fa11b5a887beccd970468bc3b974bb90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 30 Jul 2024 13:00:43 +0200 Subject: [PATCH 468/626] chore(core/translations): use ASCII apostrophe in French [no changelog] --- core/translations/fr.json | 28 +- core/translations/signatures.json | 6 +- tests/ui_tests/fixtures.json | 922 +++++++++++++++--------------- 3 files changed, 478 insertions(+), 478 deletions(-) diff --git a/core/translations/fr.json b/core/translations/fr.json index 248384fefe..531d065a78 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -42,7 +42,7 @@ "addr_mismatch__support_url": "trezor.io/support", "addr_mismatch__wrong_derivation_path": "Chemin dériv. incorrect du compte sélectionné.", "addr_mismatch__xpub_mismatch": "Err. clé publ. (XPUB) ?", - "address__cancel_contact_support": "Si l’adresse de réception ne correspond pas, contactez l’assistance Trezor sur trezor.io/support.", + "address__cancel_contact_support": "Si l'adresse de réception ne correspond pas, contactez l'assistance Trezor sur trezor.io/support.", "address__cancel_receive": "Annuler la réception", "address__confirmed": "Adresse de réception confirmée", "address__public_key": "Clé publique", @@ -57,11 +57,11 @@ "address_details__title_receiving_to": "Récep. sur", "authenticate__confirm_template": "Autoriser l'ord. connecté à conf. que votre {0} est auth. ?", "authenticate__header": "Authentifier le disp.", - "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d’inactivité ?", + "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d'inactivité ?", "auto_lock__title": "Délai de ver. auto", "auto_lock__turned_on": "Verrouillage automatique activé", "backup__can_back_up_anytime": "Vous pouvez sauv. Trezor une fois, à tout moment.", - "backup__create_backup_to_prevent_loss": "Créez une sauvegarde pour éviter de perdre l’accès à vos fonds", + "backup__create_backup_to_prevent_loss": "Créez une sauvegarde pour éviter de perdre l'accès à vos fonds", "backup__info_multi_share_backup": "La sauvegarde de votre portefeuille contient plusieurs listes de mots dans un ordre spécifique (fragments).", "backup__info_single_share_backup": "La sauvegarde de votre portefeuille contient {0} mots dans un ordre spécifique.", "backup__it_should_be_backed_up": "Sauvegardez votre portef. maintenant.", @@ -158,7 +158,7 @@ "cardano__addr_pointer": "Pointeur", "cardano__addr_reward": "Récompense", "cardano__address_no_staking": "adr. - aucune récompense de staking.", - "cardano__always_abstain": "Toujours s’abstenir", + "cardano__always_abstain": "Toujours s'abstenir", "cardano__always_no_confidence": "Toujours voter Non", "cardano__amount_burned_decimals_unknown": "Montant brûlé (décimales inconnues) :", "cardano__amount_minted_decimals_unknown": "Montant frappé (décimales inconnues) :", @@ -390,9 +390,9 @@ "haptic_feedback__title": "Retour haptique", "homescreen__click_to_connect": "Se connecter", "homescreen__click_to_unlock": "Cliquez pour déverr.", - "homescreen__set_default": "Remplacer le fond d’écran par une image par défaut ?", + "homescreen__set_default": "Remplacer le fond d'écran par une image par défaut ?", "homescreen__settings_subtitle": "Paramètres", - "homescreen__settings_title": "Écran d’accueil", + "homescreen__settings_title": "Écran d'accueil", "homescreen__title_backup_failed": "Échec sauvegarde", "homescreen__title_backup_needed": "Sauveg. nécessaire", "homescreen__title_coinjoin_authorized": "Coinjoin autorisé", @@ -410,7 +410,7 @@ "inputs__show": "AFFICHER", "inputs__space": "ESPACE", "instructions__continue_holding": "Continuer\nappui", - "instructions__continue_in_app": "Continuer dans l’application", + "instructions__continue_in_app": "Continuer dans l'application", "instructions__enter_next_share": "Saisissez le prochain fragment", "instructions__hold_to_confirm": "Appui pour confirmer", "instructions__hold_to_continue": "Appui pour continuer", @@ -521,7 +521,7 @@ "passphrase__from_host_not_shown": "La phrase secrète fournie par l'hôte sera utilisée, mais pas affichée en raison des paramètres du disp.", "passphrase__wallet": "Portef. phrase secr.", "passphrase__hide": "Masq. phrase secrète de l'hôte ?", - "passphrase__next_screen_will_show_passphrase": "L’écran suivant affiche votre phrase secrète.", + "passphrase__next_screen_will_show_passphrase": "L'écran suivant affiche votre phrase secrète.", "passphrase__please_enter": "Saisissez votre phrase secrète.", "passphrase__revoke_on_device": "Voulez-vous révoquer la phrase secrète dans les par. du disp. ?", "passphrase__title_confirm": "Conf. phrase secr.", @@ -586,7 +586,7 @@ "recovery__cancel_dry_run": "Annuler la vér. de la sauv.", "recovery__check_dry_run": "Vérifier votre sauvegarde ?", "recovery__cursor_will_change": "La position du curseur change entre les entrées pour plus de sécurité.", - "recovery__dry_run_backup_not_on_this_device": "La sauvegarde du portefeuille n’est pas disponible sur ce dispositif", + "recovery__dry_run_backup_not_on_this_device": "La sauvegarde du portefeuille n'est pas disponible sur ce dispositif", "recovery__dry_run_bip39_valid_match": "La sauvegarde du portefeuille saisie est valide et correspond à celle du dispositif.", "recovery__dry_run_bip39_valid_mismatch": "La seed de récup. saisie est valide mais ne correspond pas à celle du disp.", "recovery__dry_run_invalid_backup_entered": "Sauvegarde de portefeuille saisie non valide", @@ -598,7 +598,7 @@ "recovery__enter_any_share": "Saisissez un fragm.", "recovery__enter_backup": "Saisissez votre sauvegarde.", "recovery__enter_different_share": "Saisissez un autre fragment.", - "recovery__enter_each_word": "Saisissez chaque mot de la sauvegarde de votre portefeuille dans l’ordre.", + "recovery__enter_each_word": "Saisissez chaque mot de la sauvegarde de votre portefeuille dans l'ordre.", "recovery__enter_share_from_diff_group": "Saisissez un fragm. d'un autre groupe.", "recovery__group_num_template": "Groupe {0}", "recovery__group_threshold_reached": "Seuil de groupe atteint.", @@ -611,7 +611,7 @@ "recovery__progress_will_be_lost": "Toute progression sera perdue.", "recovery__share_already_entered": "Fragment déjà saisi", "recovery__share_does_not_match": "Le fragment ne correspond pas", - "recovery__share_from_another_multi_share_backup": "Vous avez saisi un fragment d’une autre sauvegarde.", + "recovery__share_from_another_multi_share_backup": "Vous avez saisi un fragment d'une autre sauvegarde.", "recovery__share_num_template": "Fragment {0}", "recovery__title": "Récup. portef.", "recovery__title_cancel_dry_run": "Annuler vér. sauv.", @@ -655,7 +655,7 @@ "reset__group_share_checked_successfully_template": "Groupe {0} - Fragment {1} vérifié.", "reset__group_share_title_template": "Groupe {0} - fragm. {1}", "reset__incorrect_word_selected": "Mauvais mot sélectionné", - "reset__more_at": "Plus d’infos sur", + "reset__more_at": "Plus d'infos sur", "reset__more_info_at": "Plus d'inf. à l'adr.", "reset__need_all_share_template": "Pour la récup., tous les {0} fragm. sont requis", "reset__need_any_share_template": "Pour la récup., {0} fragm. sont requis", @@ -714,8 +714,8 @@ "reset__total_number_of_shares_in_group_template": "Déf. le nbre de fragm. dans le Groupe {0}.", "reset__use_your_backup": "Utilisez votre sauv. lorsque vous devez récup. votre portef.", "reset__words_may_repeat": "Les mots peuvent se répéter.", - "reset__words_written_down_template": "J’ai noté tous les {0} mots dans l’ordre.", - "reset__write_down_words_template": "Inscrivez les {0} mots suivants dans l’ordre.", + "reset__words_written_down_template": "J'ai noté tous les {0} mots dans l'ordre.", + "reset__write_down_words_template": "Inscrivez les {0} mots suivants dans l'ordre.", "reset__wrong_word_selected": "Mauvais mot sélectionné !", "reset__you_need_one_share": "Un fragment requis pour la récupération.", "reset__your_backup_is_done": "Sauv. terminée.", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index f4d4e4b65c..fbdfaa0dfd 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "fc865bd371402af05db581b89e09dca57d90aa2b45cbdcd7cf5ae48ad949c6d2", - "datetime": "2024-07-26T07:56:59.791936", - "commit": "53799cdee8d88549de3eef071d58fb4a07eeb7db" + "merkle_root": "c5cdf75468eef57a71e8bf98489515e1aac7515679f8ab1dddd8211f4e352b32", + "datetime": "2024-07-30T10:59:33.893703", + "commit": "33f5d4733065ac631d61ff458a5db32c81641124" }, "history": [ { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 1c30cf47ba..7296109245 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -912,17 +912,17 @@ "T2B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", "T2B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", "T2B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "658842029d58ab5b1333118bbe38d0fb611ecc32ae6b4fe2187d3bcfc4132bb6", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "4bcf794b3339d50dda4d8dd5bd9e466f50d5f94197e470a49c7d679a7c7e827b", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "548a87b769b34bc6fa2c4155458059d79e50fd028714f2bb29c2a40dbd13c7b4", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "698ad1e8849ba5efb3bbfb180c60ac4954c2aebc398fc4bdf4d84278dd4c4760", -"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "ddde012d396dcf6b115ce68807fdf5686680988e02814addf3544bc8c93c7292", -"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "ef825828106552edef6c68cd65b5f32030cb988a4ad1913b781eaee3baafbed7", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "a73f3e2c8e43b894ccd1c3347d6349f28c5257f3b00be7f7f7a5756f995530fe", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "3bf862878aa42e2c658c4694ddc99a3691d3dc06a4038f905a389011d0be9a54", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "fe5bce0f248bf84e620fcc83ff9ea607392c5567b590840e9b41d9aa6068fb7f", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c9bcab658b0d2bc5af484848c5c0d518f76730249dcc3aef441441434b58bfda", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "a4ddf786d06652065ab230609a65721e774e7b28646bfa29ff9e430203d43c5f", +"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "dc8334ed53feb63bcecacf6c24c1bd49260dda7ad96e378d0152ad17941291b8", +"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "11dfbf27699cef2965dc33c1b2658a2eff7490297e627284850da90b012a512e", +"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "94dca4ffa2d6a0a8facbfad3c5806df597b3987a9fb8d4946c47a530b641445e", +"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "482cc15955ca4f2500808c8ffd583e679296775fecee69fe2286684bebb6d555", +"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "32c706544b2aa930335f4edbc80a9bc9620c9e8b04f7f18076d04c8ba5a281c3", +"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "1d5b521490effaf74d08a5fd29868e65d9377fdf9c5a13c323092d90609df18c", +"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "04d245ae8fc92872a0bc710dd8231b479617e7cf9cd1c3c9543c6a149ca84278", +"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "44a3372ae24a53ac14d3371f684d092aa0d6600874d3fc3c7c8f2a78dec6ecec", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2a1ca30ccbc3df5b568cf118152a8ef4c3af49fb23392ab624aeaafa0f0ce932", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4db4fd3c72e4233585a6c3fad5ab98d19fbdfd4ecf3fb00484fcf0a4ad690c91", +"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f0853ef27588def2ea3b4143f2cab8d095e3cbc6bb3034e67948f90fa304480d", "T2B1_fr_test_lock.py::test_hold_to_lock": "777f7b227d219ead82a76f086fc589b9d0d37ab0fadefdc59d42c750e3dabaf0", "T2B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", "T2B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", @@ -934,27 +934,27 @@ "T2B1_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "8da058fa6f29f5327cffe6239655cddf530719f0dcecb3cded5554f0f317a9c7", "T2B1_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "9f70b92d9ccdbdf713e473f25e12f0a81684b1070483f6e4efa14dc2f30612de", "T2B1_fr_test_pin.py::test_pin_change": "8fae22f4e962b43d8aaa780083c83fccdae3075d859f8a6d7bee8730d03d0e22", -"T2B1_fr_test_pin.py::test_pin_delete_hold": "55b267c663be31b5e104503ae9b3190991e0a8a85f241b35427f40e5943a767b", -"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "b1bcba5fbc5a708780a0a7a3103a293cac9afb3fadebf8e7753cbc0cd20a0e5d", -"T2B1_fr_test_pin.py::test_pin_incorrect": "5689d325e1e1f6b15952b52d618b4c4ef9c67652d0f4e789d73a8add783ba946", -"T2B1_fr_test_pin.py::test_pin_long": "9953cb70644650dab4732e74b671f0e1967b1a531495e7ea13c099e81f9eb030", -"T2B1_fr_test_pin.py::test_pin_long_delete": "d709985360c2d7a299c2cfefa92f02540ab6bda30145dbcadf1452ba9eebdc9a", -"T2B1_fr_test_pin.py::test_pin_longer_than_max": "a9ee354087c3b1743b9f9dde22448e803306cef4830cd03f7cba619e3d8c075c", +"T2B1_fr_test_pin.py::test_pin_delete_hold": "6c414c97465845619bbd44a1b1e8e0ff9ab880af2f59c5076422cb57ad1b620b", +"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "9221e38beb9670a2545a13aa0c9967efe959f0866c1e5663795bb9f86c08c162", +"T2B1_fr_test_pin.py::test_pin_incorrect": "c0df4cd148d9f932cb99352e3cb881a788ce3303f1b97eb2bd6af085e1274dc4", +"T2B1_fr_test_pin.py::test_pin_long": "7c4dccb4bc2dbf259b05e3e17127389fcee171f5397d14c496cb251ddda77bf1", +"T2B1_fr_test_pin.py::test_pin_long_delete": "f1a1e3b110186d57e69f6d4cadad2cf3b1c41876203321833aee8ab280ec18d5", +"T2B1_fr_test_pin.py::test_pin_longer_than_max": "c2e4426269eb067bf712f3bf1d50195b5337c5ab443487b3526953d5990c5e84", "T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "ab26611dcc6266d74a28a09c124f506c99e669d5daf4fc1b0ead8b1658cbaf12", "T2B1_fr_test_pin.py::test_pin_setup": "03d7383eb6bfdbfd2fae666f2dba55a0e06b801460dab855a2939b7896434b10", "T2B1_fr_test_pin.py::test_pin_setup_mismatch": "2355be5932873459592cbfed1950b07cf03a88aee418b8d8645476953450de8b", -"T2B1_fr_test_pin.py::test_pin_short": "901774deb37aca1c827777954193cb8a5f94927fd7e7492b7ecc1614a129db14", +"T2B1_fr_test_pin.py::test_pin_short": "86ab5946d9410f3733a8f906bd2b6d59893450a23c2bdbbc8a94fb459469d005", "T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "669dfa6cedab691eba86d223aedbfe0c522b5d27fc60f073f79c3e08df7f4ff9", "T2B1_fr_test_pin.py::test_wipe_code_setup": "03d8e92fde43596248e69df7a0eb8880e3e9397125cf3d54940260a966121213", -"T2B1_fr_test_recovery.py::test_recovery_bip39": "50e9b5e8a24bc4379b0d0413dc07b54782d2734a84faeb458f7ae4dd8f749e07", -"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "74ffad79bf897870e4b814f14bd41a856f33dfdd134126aafe678a60cd2907df", -"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "a95e953ddc5dcc0f377871df1d2ee1f828b078cc5d09c20d677067066f6dad50", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "d61ebc7d45f3a3431f64e79ed3f0e71c65375e6193bd6647cc09d8f71fc8c09c", -"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "dd0c052d0243a0ca0398c727bdf54608b82e26d1a8c0220c44e814a99446997b", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "633bbed186ac7565658c83b4147c5d097faf8602ad265d055cc09c26ba0d0ebb", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ff8ebe3f936dde224ce9d49e9945368716eaf673f49c47fe11f995f17c7b7fac", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "25f569fe7a9afac950f22d84157f8e8f7842aae3a08ed2f645c22b09c382ddc9", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c51dc8688c1657e8e656e4cbc219f8a0a25f36cc7ec4bb93a16a775f8c5d4c59", +"T2B1_fr_test_recovery.py::test_recovery_bip39": "a5170bb705000dda24f7e9106298c829c3cb389b4b5f5307e4d3bd4789417f3f", +"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "d996fac24e730456a2c860f22b60f5d469476066d39741171f0b1fdb91e3b168", +"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "82af3fea0b8bb00eb27e8c7f001fb1acdf211a2a4908ee681a4245fb80f333b1", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "81fc606b3cd21d9f4081c04ead25aba8f5670c764f6099a58978fe05b8cef87a", +"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "d52b12d3857e40aa36df40447bcc65c07e9aa11eb33a172d265df8149b0868dc", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3eda1d5af4e53c8982e06dcb9c84b5e3f3bc6aea4b4e3f90db189fc3d464155d", +"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f96d564a0550ec845f78de7d90b48728b142daa2071d6dc9fdb06edef0c8b219", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eb88caad1d08915a450dfd81ac7b798aa140547bd5ced825541abb121ab851a4", +"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a7b5c10b578002d764a7a97bbe1559d2c1284f0e043800aed7836fdba8c5dbf4", "T2B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", "T2B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", "T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" @@ -6889,8 +6889,8 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9afd57dda298198f84af1f927c2001ac654a9b510b1f3e6394bc9632a6e73358", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "91e57cbcbe0090b502a9a4c6b92bf3d78e7c679a62417cbba4175cb4d18850e4", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fabd30e3c20680bb8afd2fea71db37c87cf08ae7d5b55e5813f89e2767aee7e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "fb8df840d07e830b44d3628361716d2e6459a9bfe14d8716ebb517db0c4b41ef", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "10932e98b48a678af83b05d811c90a2fa8615d1b3eb4fb4e83a7276967c9292f", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "befa69419b5f2c6a1fb0d81838fa0a783c216cd5bfabfa71d6849ec887e5e201", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5517cc37ac1da6f0ffcdeaafc2cf88f9590f8e5de370be8b219535e01c08135b", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "04d50f562f60113c3803ba3c0d99ecb79c3fcea1ec8a1067b9b3ecb54ebb9652", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "f89db0a766f253ab425751742af0ecfa814a3a264f254ed2db86f32b3ff4c37b", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ff0b70b6e69e6b5422e8afee397566cdc92ae583171532fc25b5ff359b2bb4a8", @@ -6920,17 +6920,17 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4f9b061285820e0ccfad3c00636576fee92fa7ac88f3ebe12ceb4ee51c3162ef", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3c60baa9caea69387e92169e4b5d51b75c418719383aa82c0d4bf14464b51b35", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "5fd802f7689488b34577429cb6d8c1d099e034dc675d2a10e2f1a450088766e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "423177cc2b7a3ffd610fbe2f7b417198e4293ffc80af6fea20b0604556488650", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "f091dd3b08c47c09825c7f262335d6e50f1cf80a0823f0a2d026fcc3a7583440", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "7c35e3098a2af1927f629bb3cb05cf1cfe8ab795bb90d740369d2a59d10688ff", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "e333295cf9a891705ebe1c12b310645b6b6e6dfa5ed25b000c12be297248aaec", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "efbe5e3e4ef1cb2de392295d649f3da88801b98621b70a7d0ab224020ea80779", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "d49551188556bd49a853596faaf11ecae2cb253c2610a40225ebaee3329bba1f", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "31437cabfe69d7e998e103b993975ba4c980ad1536859c23c1c6254d2d065a8e", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "365f4c7ba0ce27fbe3b42e336b5f7af1edfe1de16b0f2e964d59a406e4140ad5", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "ee9fdd2effefcb92df1ac90a07706282b8f1fdbef3bb006c8c49af730e0db204", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "ac09fb4484c38b164a54664137a278a2f978cfddd5df977ee0d147d385dcb66f", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "00e92c80230b40fce9277554206a2685036248a1f15462ad016acd77df805fbe", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9d14745f5b58f3438c24ec3b3cc6ced879f4bd7eed9cecd32c768faba58a48d1", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "37598626b1ce9caa0318626a252678bb2683fad0e965cdcd30646cff4d288276", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "19ad5c8b2828f95a4ac14cd7dff4b1412cf9b038bbe6d62c1484e74b3fa7bdfe", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d5a7ed9e1fe4b8eb013d0e3d493d94fe4921c7fac8f6d4e7796d70fbde3a6966", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5b8b526f693f2e16fe900675772980f9e915fd77fe32c4eb92e8304f54215e22", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d17b4176399dd83dedff60ef2bba3a083b7633f7e3863074bcbbf8b47d14b0df", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "e0e37e8e61e5c4dc2a9099fc8dbcd0a63f3128fbe103da76b4b788be0599bce6", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "20d68143d4d30f3bfcbcc1814cc3a7cf63e96088df630cfe3d6d1ebcaad17826", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "ffc722eb1b2b24f083be3878af89ee6146d7ed993d6acc4095dc49adf7db77ab", @@ -6960,10 +6960,10 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "b8a3906c386e2d370abcd72be87f14ed5546bec5426dffa2de0dbc3799184d7e", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2ed4dfeac9e12e918f34ff162aa80fac5500b586ee0039be26c116fcf8b0cc01", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b5a49a5dc4c0c803f37ae1f67cab2ba8fa7a34eac87681a94fd0e7253a51da85", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "b4829c1b77d2ac3fc9c87a0cfb02a72a151784f388f31a4d718decd564b13bab", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "0a08b52fbffa270045e798faf26421e6f51dd44bd0585ffc1924404f81d2b5a3", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "dfefef56f83a4a6ecfcd5c6a26766329a5a781e76fc3832a4c0b3941a5286c54", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "6d136777607b5242ed84c6881dc0c5fc498e0b70c15c038d0ee4011ac10ac931", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "908c68dc386bdf7c461a62814a49b979b084fa70c03f56168cb7928bca564e13", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d7b97e01dae0f67213d38112995fe9bceec0dcd59149c230dd4ef474e4378ad0", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "7359d240dbf2c948bf6aad7c8da47faac37da96e4b5f1c732779ec4cf4e3a2e7", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "355bb0d93181fc3f652fc9e22c6b22045e66e2088f278134b50dd6528407dee3", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "45029eeb0767519845e6c496ba8163e941e7b4b2cdf93e7d8a592b1839263fd6", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1cc8bf559fb76b417915aa19b9f865eb00bffbceadfc083bdfc1cbcf951a8c1f", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "894c43b0641ad5bd0b544a4a128b3906779a3acc05684008e71b6c313eb2617d", @@ -6973,9 +6973,9 @@ "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "40716d9d67d36916809e39e1ab2db6ae30bd7f6bc45db0855300378f20efac92", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "85bc2d30eb7e8be15ede2d307eff2c73fcfd8b604efb1f3bf3b2dce63cc6f867", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "14d516f1222aafde692f24beefeeaf63cfaee3849e9e9ea3269aec9ef7cdf389", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "4eb92276affe02941f06463a18ed538c1fcbcdf0776f3f182b7f129e819dac18", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "edabdd27cd98ed71d5deabbcedd9135ff3d9aee1fb541fd7d5747a975e48a1f6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "c59cae9b834ebb1dd1b2a46fba44a33cdbfec763e7279683278ab17456730a68", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b8de4f3503e1d4d9ad10b5f202df9c4f3d52503332a28525676e3c6b96c382a1", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "272959dad8840175f3371a91aee3d259d46a90467ff5c957f430a19b5c0ba652", +"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1b1279595b4bb098858164855066a05fc4c6421bef3a5851613a4baaec6094a2", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "696ee5d8f72c02b4d3df8634957a823d2e1565d8b0bf4537baafd5d2e1811a09", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "bd5065d7c60bcbb3ed571988d4dc1175a0b05e1a2cd8639900910b8bd045af07", "T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "217a273734abd13c44a2ea5a12597c19672eb40a0db4fb7d08ecdf25d76a24ae", @@ -7004,10 +7004,10 @@ "T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "2298c4289751e1933928cf603a54e0db8ef10d090f75c4a97511aa7d10e8d488", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "708c33c2414a72a00aaf049f9d1691aebcfc13bd5ea5e9ed414cf341d5e7767f", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9f645c724245630a63a9f40505bb4a1f634aa47ad3a2c5cbef6021ff3e8440c5", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "4604ed7241aa58637ca0d2d2e630db0f9f1f6765d51cc675967ea8c4e299480f", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "de63b72b74963cd35ef63c5cf971e82c893ed65cd5caf50d886f572a2de5f396", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "ec9bdf857a530eabfe5d1374a505fb9b83f89d7d1e598e32be1116b0c596d138", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cd6fade271d76080a3ca7b0cc3af812d5408a36893cab08df289a5bd24f405a5", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0d9f55a90637f95eb89ca4ba07d0c2cd0f8bc8d0c25bf5549c4d37e25d509fb6", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3098e0a9503604bcb09e83a476bf01ca98eaaddf2e5afc23438611e98466c9cf", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "23e83f83e51db2a6b95c02e30fd3cb2b04f0861c2b089a8047ddaa361fcbaf3c", @@ -7072,10 +7072,10 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "07906e020c17c07fe80b81257acfde89838b831ac449b3875dcaf4808d82cee2", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "49df6bbfe2a333aa99fc836fdc42520a10bbcf527ab618ddf30b6ef22f40c968", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "86eb89febd533cdedcd1fb9ae8df7774ad941482196c94247636fbc750187055", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "79def66f2b88cf9cf07a1361c9c0c0f86c8b4572d7a13319fa21416220abd85b", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b3e99807f7bc5e407518b67156f33409d6a0b97323cbc68de6b061039a008c16", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5006caae3772336e8113e4e80ab29151ce6e2f1d2338e9b2f1dfc9700538caf6", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2a7b896c6c7a1fefc59a5d5fde8cc691605c537e0dcbb11712f3f6a20e0f23bf", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "2e02721d4017f477711c5cfac9e5c21ca863f5bb8cc2f16e55164a301f97798a", +"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "4f558f035715587b1fb72a9485632b33fbcf429b5869c5b72d8996e99a1472c9", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "8f6e740cfd6049ade118a36c531064f3ea7eb48a4445c47ef4ffdfcac385502d", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0b6d36f11550f0f8b59ccee39600c937fe4b8d47c43684ccabed75580bd543ff", @@ -7441,52 +7441,52 @@ "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "785795fc4510a099a4cb3e5b4e77e2ce12556b562662184d1a17351edb789c54", "T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "feb8bc0cefca2926a50e6e8f4c69ce10cff8fbf196bedbd705ad3802efedb36e", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "91440f137f887885d3096b104bb8023d764f8f98d8fe946abc5d8d7a8d5d7045", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "5abe0e4f89ec1f51a00c9f79968b14faf5fd8547e8e00947a51c3a91df3dfec9", +"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fba5a250a20d28d65bc87806922e4cf05e4233bd3f197508c861b2b2aa3526f1", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "ff27522bfe3126716b1ec9582b9a065bb4eeeafeda88ca879a3aeffb72d49d68", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "79959a16e596eb5d507f3eddcec961d5e3643b36c37fb09a7ad07a8986f56033", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "deb948eebd9edb50d2a82f0cfb3e365b793cbbf85d8a2263ff74880aaed6b6e9", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "59fc8168e210b8f6727077532f902da0ee482903ee2279e066bd65bc13bdec6c", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3ee818a3fcb63f83da417586c6743519f28153393d13eea288cef0164e5387af", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "98d6018794e333740f352bdc6cfda92606755caa164c79b0e0e8a3c481e946cf", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3ee818a3fcb63f83da417586c6743519f28153393d13eea288cef0164e5387af", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "98d6018794e333740f352bdc6cfda92606755caa164c79b0e0e8a3c481e946cf", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2fb44ed4e343855cc22c1b442cf76537b50403fb589bcc6295d4beec4f8e1114", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "aa9dc4c9cfe54afaed6cbc26bd7ab5a581bf4ab7eab106623e1d99057b164936", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4488460ff030d1526a95abcf0edbfc1b438f51ec54d737140760a03f25ba960e", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e3161276dde6c72e9d94ef376ff494a27eeb26b310f62afb088f820b3f677f1d", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3cb35542ab6c61844abc3d45adb8e445147f907eb436f28d91b2c18e7aafb7da", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b87be9ca092bbf6b30836b35fdccfb1defbf339078a3e45f16565416b2e4659c", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3cb35542ab6c61844abc3d45adb8e445147f907eb436f28d91b2c18e7aafb7da", +"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b87be9ca092bbf6b30836b35fdccfb1defbf339078a3e45f16565416b2e4659c", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "25e220570c703d66e40dd48e73393ae1012cb4c10aecbc1e85e1b786dc10d163", "T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "1dfc877b17e4d6c38f695aad714056a468af0014f63c1a1a85a959be92873fc6", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "1110dc473220e2ad9e0dce934a53bbd3233ce1137b628662f34ae5e423c6f3c1", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "43cc7aebc4571980a454880235f448f4c4d6a03ee57b4fb23bea006541bf2b50", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "494ac946977b0a53a37975f6e7f75bcd8e84fbb6c19b1ee82f769f7ea0f2bfda", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "34dbd49b12b5c2f2fcf5873f2dff08b1dcbc1ddeadd9929735a44af92b3a00af", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "a9d7673879102a429b59d364f7f04f495dcb3d43bae3f8ce3d7439a77f4f1918", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "9ed7eb52637a62498d2fcf6f9947292c354c0026b9fe47b6facbb0f2f4479a7c", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0f6b3b9b0ceb1278fd0087e685ed980066fce626b73f00d69d8cc1b98c6108b3", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6c1b179d713e8eed48823caa9e5d97c2c9479378eccf8fb7a68bdad15502bbc2", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b9074d0653f925bd2fcf9f5fa5711a50a7e6d605c386c6c2a4e187172eea0af8", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "840e71bb456cb14f2dcb034f5a6f2ee4d6dd96bf691afaf03e04eb4fde148448", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "5d7bb1fcc0fbde5a432087d60669c129c15d21b78a92e7b95e03377fb48b1df2", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "403e9d88a6124651ba0afb9a9badf394448d05e2c7848a29b1eaac0edfece1b3", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a6cbc8c7eabbca9f393e0227775dadf3e3c9c3f5bb98f6aa5f0ccea1fc17b156", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "95d6ebdd3cf99ee2a4826b9eaaae1cad6496c628123278146ce6de839ceb6391", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e8065e252cf2b9b2927068fc2838bedfb6c41d765b6c544cdc56b6832dbd38b0", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cba3c45c899c9022b7d70bf1756cf643d50f86407107b535c0f055342495b1c6", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f5d4a08383e9bfb909a4449d368d047608a24839ff24afc4117210aa125d51ab", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a75a56586931aff16c23f0fd3434ace334dce68bc96233337209c6ae0acc0d67", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "34db00ab469704c8edd3167bb826548c2c4c2456bef2c90f202c31fe743196fd", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "51fe3d66fbeae88cb9f6b88f6b90667d8fbd18bda4af1009f09eb17c0b7a0ab4", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "24fb0084ed4c9c1885ee1d9e2cd45c37494778e369f2b6a8880c5568b6016a5b", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "8edd602f1b61f90416828d95bd50cb09e54dccbc0806cf1073c4d7497f822b0e", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5e6643ec4ead801545417fcfd04953cb208445c2cd044da7fd0b150a36e457ed", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4651003fe1263dcfce13335e1e77e528ed88a9c9b1fa54216104395b8b8d9111", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6277f247a770d3b1f7a4bc38b9b28924bc0b58d422e8a94f76d0fc7db59ff733", "T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f89093e9ec8dbdce95073e327a7edc9ef3220fb91585e08a22fc6bb383f09305", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "7d0c535a65ec35891ea4847e4ae14b68ad77054af23037e8003fb7465a2441ef", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "ccaa5b8c12aad8ec9e0ef069c6c9b226b5804c62e4830889bec62f4703f45e66", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f2804064739fef4e9a784b0107a950d9ec5aa1ab8147dfb1e3ad57b1011120fa", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "e041eb34e702fd65000fe710834e7ad71d72ac146c95226521f73a9ec371714c", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c0f84f867a0df50098740c83b71b37bc684eae9f98fdc43c6b51745d4280d7af", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f9f73430c44a23fb433cae764c0df78b3339eca47c026a1d4082577b8b1fd886", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fcbab715f3b873208282820a92d802b9e602d75022bf758df594b4ffb56aeb98", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "822d871cfc9a724780e4f1fb3dc71b5b540919e2661cd4ea20609f56e025d87e", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2feb0001ea7e4cf39ba8b3107a29b57cf1500d6a97a7d00e4283bce5e53d43a0", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a928ee1919f253147a75030ed0cb52557bfcce59f417d37782fc2f0d7bec46c7", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6f66d1013bf293e0b1d91fef4790622fc7f45c8fec228904d8bdef36adb2afce", +"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d9bf103951d06a8c4be1ce6de417b42ef91850ff34ec6fe5e22dcdc3203fdd47", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3a29d01a969e8c7110ebb4ddb147435221d9d2821a1908d4d2a3fc079c90a029", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "35364e5b182a3a56ef335580ec4361ea47a812e22f64fbf170f185b339651804", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "11dcf9c7baadaffb1b43c2aa4db1e48c8b45148365fcf27c46d5c5880fef9d77", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "9f24a559d44695a8e3bab2dfdf54b7ab0bafb2e2be52de8ebda8ec346a0c716a", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3bf80acf43fc15bf9370cbb3e4210e74370fe834c2258fd4654e2d59153237c9", -"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "5b9cf05525d564e28ab9c428ce99b894f34e2f2e2bc8a91a822b51a779d287da", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8146b92016334e8b767db007e65f8271b7f5f13640bcaf5f33c84e56a05ff8a6", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "34e8eb1efd030d6e63fb117e1e787c9ca73dd94dfee41e3f98bdfa9c1fed08ab", -"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "08c606b396cd1fbb0bccba7c0d7fb03a2a4731e8e724c6ac071c490ae376e067", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a7df8265080c4530e58f730baef0d956677074d0714df4255dbba403f2883bcf", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a52d56a1df8ea0c3f7011610d9f41685caba806fdba15b3cdda0505b6de4657c", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6593a8c0283de0d2c9947a35ee356d1770a48e19857cca06b70bf8bf1b0e220f", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "86fe0dfd373e5e7f0f0bdef6ca7a31bc365083847f8c0e0ee43cda55e4239d38", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c2d4229ea89338cbf74ab0719f28b2914f637f30903183378328b5520137fea6", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "86f99abd1ed1abf04e04d12683bb143690255e235cb904ad33c5bd4e1b76fe6a", +"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d5ef9c3dc71dd4b2f847c1615c32788fc8d3e948bf53fdbb785facec8b107eb0", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ed34bd9e171947035b322b9ead6bc1ca5abb1b2c4b3dd18bc7339c3e17734f10", +"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "56d2ea322e3cc8dfcb33225b93424fdd576b073b82c5f84006ad180177c40065", +"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2afaffb93d73a2c9559f3976ececb28818ffe7b4131d297134a5c353b93b2f22", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "7edd1ceceba03aa2b5c332644b01cb5c30e159b8135e821d1f577504c4318f32", +"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8b2603842a35f783837068e7c9432980955ddfb6e4d4fff245fc491c67bae6b5", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "851bee61c1b9d2d3417144b6d0504f0ae48409a1e01da5498d6cc1c4a5fb9e0a", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "47bc3fb72c06124191ef7e9586df146a892f87046107218384d08b06baceb34e", "T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3256148778d8e34a180b5ca01b0bb41ff5cf573055a8b4fea6a8f42aa084b5b3", @@ -7628,22 +7628,22 @@ "T2B1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", "T2B1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "d251245429e17ab05a7ff1669d2d1c0f436edb7dc2f159b67c63bd52f1903a1e", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "bb9a8dc3d776a626180104de0dfa3efa55ff05d04bc3b51eb9e844759d805b3a", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", "T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1da6f98ea446448284b3188671584efbbb4dbdb736348f656528adae8ed6beee", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "e0d5ddf12be4371b6c1fd5e5ed5035ffbd4b9a96f83126e7d08afb9659f70288", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "02ecce69e8059e9e31946595a07447222b41f5c4396568393714b6039f863b55", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a34fde26d22e7b49b192775d43770668f6ced448760bace5f1aa060e41657ab0", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "edadcda4d1ca278dd53dec1018029932db7bf3ff68237e1cbebd6b31d194f05d", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "2db51a34f3d6e303b9dc07e7ab3b2238bd4d268a6302db245cffeac4522ddbb6", -"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "f23b61cec10379ecf4375276456f924bd82a9725da97d9e065d031ee1c2cfb16", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "7e54818d0b7a102ff18b4fac6aadf90294898eaa67935bed8f65c27458d1e653", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d18490c6a6518fd0772fe4b0b08a854874327a05d7d7a0b20acd1339b681de3a", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a444799a88960058f5191a5a217b718debb6b4d1f9046a7e0c5080b5750b3971", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "242829e1d71100eda3d108ab26f66329ed0e550f68cbc241d93b331547cc391a", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4d0ead355410f2b5763a88545e404477244674b85838db38ab6bcd9b8fa3fa36", +"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "50e9bf77b0f9599fd104ac174a5ecfbea2b713fad2031174444bea64af119a08", +"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "d3ed0bf61fba9f568a8c781956e7a45f4bc36ca1894a7cea1f9caa352eceb848", "T2B1_fr_test_autolock.py::test_autolock_default_value": "d9aafcbf4105319b250681abcb77518290618aff2408548c1f55ce8c2ce313de", -"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "ae85a970b2cb39cd7ff2b9167fce7c0d4288df8e8b7c306a17304223a40ae60d", -"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "ae85a970b2cb39cd7ff2b9167fce7c0d4288df8e8b7c306a17304223a40ae60d", +"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "6cf1dedad72ec92de8146e9538018bd9d318616c0c71157bde55d12ba62eb06d", +"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "6cf1dedad72ec92de8146e9538018bd9d318616c0c71157bde55d12ba62eb06d", "T2B1_fr_test_basic.py::test_capabilities": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_basic.py::test_device_id_different": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", "T2B1_fr_test_basic.py::test_device_id_same": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7694,14 +7694,14 @@ "T2B1_fr_test_msg_applysettings.py::test_experimental_features": "f255b1a5c4f6e72b64a1b651cfcc47803668092e4c2a3da9f37f2796b515d675", "T2B1_fr_test_msg_applysettings.py::test_label_too_long": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_msg_applysettings.py::test_safety_checks": "6cc280764a02e46da93f042f4b6b2fd1ee4464a460d75f7c0fae38759728e4f4", -"T2B1_fr_test_msg_backup_device.py::test_backup_bip39": "c8377359bd7bd73fbd3f168e775e3a27a52c6e33b620c58cd91b64a7c9d98838", +"T2B1_fr_test_msg_backup_device.py::test_backup_bip39": "a9085f202d8b9a89da15ae653bb1fbe83f7a3ccebd474ddc7bda7ab88e275efe", "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6d2ed2e061d228b716c3d501d183b39e6baa4fb67613288ff4a5c89ab5dad71b", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "5bcb07f9372ace99cdcb4708a3344244654015792b87c81685afd7c929ff6e8a", "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "d7bda948e8a77810ae51b47bde75d01468c612ef55f9e5f8c0855217a66c79aa", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "38ffde2b77a58fc328bc4fc4e96cb95a63787aff475841f3c4299706f032a03c", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "97c11fecea8c9aa6531d0ec2088b48e5bba66e8bfccad63086baa9b02c2592e0", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d6da5a09b37b2c4195cbb6a7026c4914be05f5aa8a4c960f68497119f114aea9", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a82e3853b5e8aae09551038d3c44bcf6dd432100197270e1c5e99fd2032df94f", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "25b45a916474aa4e6db170ea873b829260351c41126ae529da6096ba61652539", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "31fc1d149fa01408ab23339d3a984d2efcdfed072ed9994d9621ad71e1e4801a", +"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "cc19a3138911543f7dbb65762dbd5217f48bc35ab9559505f4991461e8cef1c1", "T2B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", "T2B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", "T2B1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", @@ -7716,18 +7716,18 @@ "T2B1_fr_test_msg_changepin_t2.py::test_set_failed": "c54eef85a1d0dc450a51346dd3d7427dc351f24c0b2350c878cc08b48472476b", "T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "647efd371506e23f9300b6ff58ac6565597ee2310fb03a2fc5c449966672986f", "T2B1_fr_test_msg_loaddevice.py::test_load_device_1": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "c80ff2abf9fb027dc42563b1300ffedff9bc6846c15009aadc50bf5685d01857", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "db00a26e8b4b190e62931e002a4d244cf6a563a838f7de754a8ef33ec73a883f", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", "T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "927e05d0f7144b8cc14702f89104310da9e74d81b19cffb2ffe1723929313c7d", +"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "a5fefc356ff9d247dd7bd9f51e6155731eebe27786bac5caf7619cba01e02850", "T2B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "c793c2bc1978892ee53fb9e1094355db1a5a088784ecaf3e49073f022fe1ab3f", +"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "070f03c81acb86de9d9e2aaa47c9346efe0ea630fdc651e25cbdfc78a9ea7368", "T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6c9be862f95b1840923666a316842785a5bfa6ad6e444b71e4d920f5653c4daf", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6c9be862f95b1840923666a316842785a5bfa6ad6e444b71e4d920f5653c4daf", -"T2B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "709374844154fe2fb79361237af6e4d13fbb410d7d1cc876135d96c1e9d35641", -"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "709374844154fe2fb79361237af6e4d13fbb410d7d1cc876135d96c1e9d35641", -"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "709374844154fe2fb79361237af6e4d13fbb410d7d1cc876135d96c1e9d35641", +"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "66c433745d2114e94429ea4b870520ad489ae80252796a9d8da8792ae0dfa2b3", +"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "66c433745d2114e94429ea4b870520ad489ae80252796a9d8da8792ae0dfa2b3", +"T2B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", +"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", +"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", "T2B1_fr_test_pin.py::test_correct_pin": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", "T2B1_fr_test_pin.py::test_exponential_backoff_t2": "cb30648ae851f7bb39079317f3f357248ce77d93831d630d732c55aeb7e66437", "T2B1_fr_test_pin.py::test_incorrect_pin_t2": "7607e494f4b01cf25938c262848d4cfcf66e16c3e5287d500ca966caa7dc7601", @@ -7747,29 +7747,29 @@ "T2B1_fr_test_protection_levels.py::test_unlocked": "7f59e3db07b56dd4ad8f18954d9ff157ca544e1b94b00be1b55aedd5f9805d89", "T2B1_fr_test_protection_levels.py::test_verify_message_t2": "651a5f37e406cbd5f4751d16a4d430d2a8fd3d3b222f3e27695342ed03dc9182", "T2B1_fr_test_protection_levels.py::test_wipe_device": "012fe61fb16333d582486d7f30349df6c5f902f50830d9f5995f1dc88e23b124", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "46b4dc3869715c6b08c1ca10f7a749024d12b45a38a8a522375bbc316f596916", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "5965ba994d8b741df171ff729b9b68ca65fe52571c06079f9f18adde7bfe5b08", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f53ed986e9b98dea3a93f569a8233e7b8a7bc1924839e1fc9ba5bd4c11faed8e", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4c2fc9d8ddd4ef3fadca637009053b4106a269b076a6e0e8d034a559e38d6ad8", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "3f582035d0aa130a00212c26a4166980750c33490980b7aee93fa8794066c9a8", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "9611c82053799095ab589e03ed1fd658b50ba4a252013b4a81143c3b5a6da33a", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "36252557b9c53e47246fb3d0995eb8afff80d88ebaea4a3a1429e607412e9f17", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b35674d97b30c15b0a87dcb91f11ca52e15d4e9788687d6df3a8e9a309c04d32", "T2B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_clear_session": "9aca31bd4e8408f98819944f81951eed96dec078fe5ce7d10269f922faf984f9", "T2B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_derive_cardano_running_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_end_session_only_current": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_session_recycling": "709374844154fe2fb79361237af6e4d13fbb410d7d1cc876135d96c1e9d35641", -"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "cfa52f0113bee5d0acc941c6e01b3435c59f37c94737a7560708f1b2a219e14e", -"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "1b08a6ba179e6af3d31a751bb49441bf13c37a7a23437313ebe99b82c8964ec2", -"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "b9719c2a8eea663238011c3f0bb71b54190dcd2cf379d2c1592b048e9167ded1", -"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "87958276a3907318b9608759cfdea0b8a2bbcd1be033ff1c2c9a37dc67cfbe60", +"T2B1_fr_test_session.py::test_session_recycling": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", +"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "edbf8c40bf7ece48bf6727a0492ee6dcb3e91a82932522b99801c1bf4eda57d1", +"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4dd2c8aaed3f9bd357f4b14f98edc1cd809e8a054fa5c1092f9a82b1df7f42f2", +"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "e83fbbade16a5705f5cdaf29e36e2f4a459db58f710a4d31ca46e7e52fbd0c1a", +"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "bdab81235e34c0c7446e170e6c430b8daed201a168518df4c20715d54155a25e", "T2B1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fffcc2eefbd6456c9784b1689b34b9982c2d8f283441b8355521855e386ad90a", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "dd5298b97e2c669c5c39bfdde8107cd39c7e0dab7e760280ec113e99b7fb1c45", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "9aaa4fb5933520726bfff7af28201859db8b4ecdca4b443528fadd203be19a88", "T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "346f7351dba5ae978eeb89799bff1cba5b853276eab8878742bfbab59934f3de", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "c7c897a2c2cc1800bc9785c246f867698deee7d7b40c96bffc639a2d841f3aaf", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "40ba599e03764b909a58c6b1511d6e40ac758df3150957c4639b46ba05b96306", +"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "82fd0e2579b699015c83946e7538f6e4f23f98b3ae4608e71e729b5c41202f51", +"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "1d3f1485834901b1a53a30405f5c1e26667adb56f1cf06cac068807326e87f18", +"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "a433d453d7dae3bb1d3cbf1637e55a0b0ae5bab99d3c6b431fe98b67cf3f1f08", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ba9fe5b13953b72952449179d717b1dc52e6450b934c341fee319247281b663a", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9ad5b6b401a2ce7676b4cba10b6d74abfb4d9887c42cd73cb3487649fbfa3a16", "T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a530de477c0377f1f44dcbd0f42b3c124362c996a72baacad110224d94b531ed", @@ -8000,14 +8000,14 @@ "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1eae37cc70471fcf46f49dc3b3324618c76ab9778bc8f1f2edec0c483505ebe4", "T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "30b807d4d42ef93a3942c30b018519fba6b191a71862f081e84163dc5d8469c0", "T2T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "54848d33f1379320133ce761008864dfd6a64c3cbd904fcc12e6747daa5a8bbb", -"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ac06ebf381cca6956de7acdb46aba82a870f4be2c8c3fddccb60f6dca3633310", -"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "d9ccea72795202ae2cbbb6d693c20b4a8162d8cabfc1bdc6ccb9febf2d912199", -"T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "547a0c5636b3fe6df38252dd7dd293833e52fc3bf42e7891c71d6de50d30a6b7", -"T2T1_fr_test_autolock.py::test_autolock_interrupts_signing": "763f133b86f8e563c68f698e9970e8b8a00b5823558ae36aca4f4c25540fe372", -"T2T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "6cab65c35d64b59abae055e6664061b8bd1362b6841f1f7a7b90f81ceff282f6", -"T2T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "a386ac778fcaa8229482476f4afd6a95c4e66a0c1c5f5198044784c7c5eea3d5", -"T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "d5bf81105ca2471e707141642f0994e4a63b2a3fc21bf0337edab4be1d5d16fb", -"T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "d722658e30a8c05c8434b85eb787598b9b9d2c3b20d16857d298f465ca47062d", +"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "faf2632e2b7a21df44b35ae4d907330ff26d9f7189b49c75db067b360d9c7d35", +"T2T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "69e1d609001304c4af7a6328c7ee80902359c923572b38b1f7e227cbd4a75392", +"T2T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "e6017ca936c54158f59ec56f62fe15dc3306affd1b8ef3c57b30c8e4615d7e43", +"T2T1_fr_test_autolock.py::test_autolock_interrupts_signing": "ffedd12e895fd9d0ad9802ac2d754fc72df3f3a7121dd7697fc3abc63df97e2e", +"T2T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "155f68bd09f05f573a96fd6354519f23f2119c638d0de418a7a38ca34e91f7c7", +"T2T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "48438c1a9b33cec5a84ba5579c117f835084e390f0304d09878bb5a7f42f1e3f", +"T2T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "063222150ca3efc0db6162659a9f29d2281ff8be46a97717b95373e940d38964", +"T2T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "96e7bf6440cda04606873b304d867985e002d579f21c33365c2a3f78b61bda3b", "T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1e09442a98e0bf71db3cdbd4cbe3e5caefd2e01b183adc0106601c928bdc1ddd", "T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f41392c5534d2ba3c0317b2d788c895e6e2266b5cd0d536b14481f108ae62b4d", "T2T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f6f95f036c914ac9862fb7d4ae4447ebc54e8cf65d06194b09e6ac9681f8984c", @@ -8028,22 +8028,22 @@ "T2T1_fr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "2338104c8aad606e9ccfa0774ebe33a688c5b9237289e8d08de16fc6d6c19426", "T2T1_fr_test_pin.py::test_pin_cancel": "d042a69c511b077e6feb819da7234dcde385179870b46f968221be395a3cf16c", "T2T1_fr_test_pin.py::test_pin_change": "e0567e11a91bfa03756a508d95cd890488b1837268d5fca7635a3df52b53d5a8", -"T2T1_fr_test_pin.py::test_pin_delete_hold": "7afb576d53368892c3d830d20d2e40ee554f5c7f7ae21f5d7d81497b734b31c8", -"T2T1_fr_test_pin.py::test_pin_empty_cannot_send": "b3c98a0d8d9bb09f2a66148ac34d91d48d995a45ccc9ebc987f14d82f9459494", -"T2T1_fr_test_pin.py::test_pin_incorrect": "0d863174fac356b2ef8c143fa9eaa06456272164bc4083e2237990b686a24b12", -"T2T1_fr_test_pin.py::test_pin_long": "ee73b6407e01daa956943177ba790ad571f492cec73d2eb6d92bb6b853002076", -"T2T1_fr_test_pin.py::test_pin_long_delete": "4b6941799da939fe886ec2faf9674efe837627aa9f37085295d444b70a272f9c", -"T2T1_fr_test_pin.py::test_pin_longer_than_max": "a67765ef72538c6219d62fc7a33bf424f23c9ec63d5f6b239263fd68ea76369f", +"T2T1_fr_test_pin.py::test_pin_delete_hold": "03236061fdf7d227180f83f518fa43e11c218912a685b4c510fb834ef448667e", +"T2T1_fr_test_pin.py::test_pin_empty_cannot_send": "c7bb505a2eeefeaada1b431c01f0a786bc41d422a51e288c929009cdc3ee0a37", +"T2T1_fr_test_pin.py::test_pin_incorrect": "b752b9814bb66fd8bd757f70e967a6ce059b4083d8c54038e3334014678c66e2", +"T2T1_fr_test_pin.py::test_pin_long": "6d30c9f43d9d288d2d2112489147f062a87a0b1054d66a9e8c0a1ef367445772", +"T2T1_fr_test_pin.py::test_pin_long_delete": "e21cfaf23c13185b45c65a2e367c5f4ec61d16a473a53ef2bb0d5610b54f957a", +"T2T1_fr_test_pin.py::test_pin_longer_than_max": "74346e14e8320aa2f14c2a4f64e35eded468e593770e49f58dd11c697f7d166c", "T2T1_fr_test_pin.py::test_pin_same_as_wipe_code": "e457ce25d3be4485f4288d9b5f4be1c0a78afd922ae2bf4c9a7d0d89b80f30cb", "T2T1_fr_test_pin.py::test_pin_setup": "c2bc0b444070c705fe1cecf69b838147a121511e8a474fc9d970e4abed6d38b9", "T2T1_fr_test_pin.py::test_pin_setup_mismatch": "68b8d7176492ade4cee98bdb8a8b30cfe2870b2a9c7a69edd8209690399e21cf", -"T2T1_fr_test_pin.py::test_pin_short": "b3c98a0d8d9bb09f2a66148ac34d91d48d995a45ccc9ebc987f14d82f9459494", +"T2T1_fr_test_pin.py::test_pin_short": "c7bb505a2eeefeaada1b431c01f0a786bc41d422a51e288c929009cdc3ee0a37", "T2T1_fr_test_pin.py::test_wipe_code_same_as_pin": "40f4b0505fa503476b2d3fcf5d6c78b732addb522d9c6ba5d7414048ceb6a9f5", "T2T1_fr_test_pin.py::test_wipe_code_setup": "bdd2e5e200b8333867e017e137a80ef9678102fca527c74eac369825a73cffaa", -"T2T1_fr_test_recovery.py::test_recovery_bip39": "88728103a35a260aeb9e91c66067d7b2f0089e5081556b91a87213e4fa9a60ca", -"T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "4d99bc3689c09a6c237840391449f7e229e881bd43a26e14c7e28454b4abb008", -"T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "a59ab84ee2374a1cc89c591fe33e303081d916e50ff4258416af7dbdd1ac59c8", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "55860008b2c4dffb2e8fd0eedc0327aea47822e717d5ffe971a201a82349d2ab", +"T2T1_fr_test_recovery.py::test_recovery_bip39": "f59eb22db3a6b211b3dfca235479c21871138c2d3b0b771d69ec63cad3d804fb", +"T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "46070c5379251e1bf44144cd35921126062c60906fe1c6d6666bf7515d9fadba", +"T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "da87f2762c9713ad50993f6862bb34da82f4f5dc4e8a2696f2956dd3e0abceda", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "9a280efe2de3c20a7332adca64a4d40bb009bce8dd70421f9be01970901703e9", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "c1bcf2768d4ac54af417ad7468ba40c13c16c80cdfcf24d455e96199043dfb6d", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c2cbedf1d60c5945d8c2500010137e8d29ccfc40f9be7a860f6c9d6d0933bc70", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ad49d9bb88c4b720471ee7c7d01c93f1000fac1d9c1c4395bd543dcea9f83e4a", @@ -14361,8 +14361,8 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "0a67d101b35dbdaaebb5f344a61801545445396c2d7270a9adb3132d0f58ac3d", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5a89c7e7bbc72bb983afc2c2af60d95921ddf2708616d2d5c342b25a3a314e6a", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "4f594bf9acd05f585a15ac45d7a5d260129d4eafa00743d26b24f5772a918869", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "88f9af085bec70f0fb73e5cf31e71fe3cd2bce0efaee8f52ae5e27472d2930d6", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5eb22cee3e66f77269e9d994e24b1e53c54c95e09fe26c6e0e607eea7b64de56", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "93fc4551414a0c8c61b4d1c94629c88dd98843e0760d4bad68cab40b1f3dee00", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "99df0b7cb0fb84a15075d9a401acec7f61f83bf6de210c138b9cd68b40c81cde", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "86e8b7419f6d6c21a27c253eb0b35c0d9436a289c25e8eeffca9214d43c8e82f", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "cee382f33dfe57030dfc80193a7bb0ac01a2fb021b9abb42526229f2bdad11a5", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6bf47689dc005ff8b2c8d41dd84c58c39ff0b298e2e2f1ef985e54bf75e8ed1d", @@ -14392,17 +14392,17 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "35abc08942aaa0f711188d5bda2838f330b1ec4b982fd0e3cb0ec02becdbd975", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "85a2020a385dd9e4a884f1b3cf97c1aec50773add42833b886ed71a6d75db6fd", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cf3be7e08377134c4118bfe9147a6783fa365288d711a8bbf80eea017ebe1f07", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "4fc2845223ea3aeaba857a25a5374aeeba2cd3524632e01d537e1c13144c6585", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "7a040a50ca6dca9e9e77cff832f2498006a5bf1a9ccb06bd1a9b286ca983dc40", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "44dd0618ad0af3154cb2c3fef2b9ab0c0daee639a76eabf98275defbbeb63021", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "b61b3caaa97eae0a6afaf29a94e58641922b0596e5a98edf7f971dd3e7808cb0", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "09a480e89de8fa12f4c8292ca4d48cc9219a6d350c3fb469affc79a2171f79c6", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "20bd506d52d9f0f8a966ae74f410d73970c2c92148e08081f244913b98788e76", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b0ca10e62e38e24ad7fa296e5c4332f3d4da4acb082e523f673c2dfe5e01163c", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "0b5b0b49a45cedf6d66243336aa6176408e0046f2eee6de81b6603f6e6fd8d09", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a2557fb826e3bd3568bf3918363865b368b2f0ada5032de9574a1957c6a26b81", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "65b1a1518e976ac9fdda81403d8ce9b60a208b0648cb248202a36034a9bc5258", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "fb2d9ec0389f9fc2d5fe8a0481e76b4a123c4cac1b46e872ac8441e689eabb71", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "fc046d0cb15f58374373c56c6b9add1175ef1bebe48ded0714d70f29fdb5e96b", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "00d1ece5abbd4adaeee7283b457659eabb6cf1c12557bdae4fa8b0aad0717476", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "980fd7bb35314e3dce7155118b9dd9f40b4875a45a678dfc25c61d2c54af6f45", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "5f48b212819e31cd95ba9116677fadb5e76b1c9e07549f685b59fd3d1d33b6f6", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "6aaa7720362f9c3a311747f9e3e5817efc436748a4c76bce52cae9c359f05c87", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "844983cc8be650dd541e48f88ae7b592ffa03b6e5b65dcfeb3217b2cd7e6c084", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "29c7a13359a599d2948e10968e1cbf20dc442aa188913a90bb84a83b6e7bd633", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "4e9de82c3c7beee2a39cb7bf711c5abf24a5e43f3ac5b08cff41df3ad3820d9d", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "cdce5e977765d9c237c171e49a73b16b09be0750672de56cb2c1a1719890a333", @@ -14432,10 +14432,10 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ffdb9bd91151fcf5be1fc569e687cf8bda303f8894acd0c23e635964fad3a32c", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "befd923116fd7afc9b8600b525123c06283e8b6ba749a1e07592b5aae20316c0", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "3b8e31ef6838f5b86b07a1c8b1f7bc75454e1859cd02d4d07428209c56a637eb", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "d05dc5a50f2a81f19a596be23130d409260b3e68d349ccfb173db24dac5e61c0", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d57ff0cd9454feb85bd20e5b4e8e16caad842cb674a0932f59ce5f0dc39539d8", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "75a04ac98a821c01c343ce8e100ac6b9acffde53ee1722d044ce06dd8771897e", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "842e08af3023a134f95f1845625d69a5d670bcf2892a6347a7eccbca5e158588", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "61cbfb3bf613b7b802f9fc78ffeebadda406681e26495b05a04c5de060ce849c", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "54f9ac9fd8e11f3ae6f4eec5e0e3698db9d11e6b846191ecca7e88cb1ae67f1c", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "db9c8c43c925aaae4f594a111f5cd703661e910e0b1b2f4b7e902cfa04145660", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "46a15c0adf05be8f1005f68cef050f0b317ca24df11915f3e4ee168f26d60d08", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "21f83843259aa869a6127df0788a7c37b1957c495526a22bf053779f36f68858", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "778e4ab5b9a8df87228d72fd43932f95e9cdf58c7ae03aa475b412cec48bbbaf", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "5c82462aa9aa9b37f312a51c936fa1236e6b05a7d049e0070bc797842f6a6def", @@ -14445,9 +14445,9 @@ "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "74728cc1862fb0f3c3b0daecba04fd6dd090ab314cc899da7c7c29b50c57ca4b", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "9fe5245c5ec4941d3b1bb000d6212f05e5a5653553c86daa15ec82a1ba49d103", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "d454a300a25312d4ef81351e68b22a46a95f4d24a87efcb4be077658c915f980", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "cf1361e7ca4240e8a3503cbfca39da2fc36bcd0d0567d1f2e834776b626ee319", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "670293fe5291599afbc3f970aeeb58b350b174dc9af3900dcdb7610d77218d0a", -"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "b95dbfcb6d7bd5274fdf287f892205d8697fd4229a186af5935770c5cd61de51", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "ed823496ad33346e907a18e8bb7e1d170caa4b5a24dd9ebaad86fed48aee2edb", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "56958603491b9fdef2659e9b79ca1646d9c3274918bf28a1648416b106b2906e", +"T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "8ab643f808fbe85dde80d72b70a5ec47bede9892cf339b1f397aca5dd15025a9", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "41338181a4e1dd1e8fa5ca591cbbb8ff56ebd3f4752eabf4a2fa4e2ea30eb70a", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "87f49008b06d12d0ab16d66fa3d109505889f898de59b29de4cecd6299ff21aa", "T2T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "df049cbfe85eb8bb41c3d76b5ffb1433a9f2f05612421e66b367c977649762c2", @@ -14476,10 +14476,10 @@ "T2T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "396e2461990856920dd261bda781ce7472cf3b49331062801037bf84bde31023", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "06c07f4ce7ca17fac54747d5fac4a3ced073824d51303d4b4fa25af5833c99d7", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "a70f36ba6d7379273b9651315e9f24ea61cdc97a259366f8dc48dafda7471b12", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "3928cac8baeed452994232c6aedfb3bcf105f491a51372bd28bd986f933fdd70", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "b9dca6e8ef73fd2c301873a2b40d18ded2842feb315f6bc84a5ddb790b7833a6", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "7025ac4bbd10497515d421602d035c2a97b192db8ac138419107ea8ce4d34da4", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "528cd1b7978e1ca0175afd7e7ff8191462fe69b1bce888ab6774e8cba3a69cef", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "65135f20dc7c22e4dafadf1d44bc64d565b7a9b5fdebc5c9e58fc7b9ba5963a4", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9b6a3ae8a310c2c9961f69bbef0463f16335350724a62f05899b99a4f9f63550", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ea8961c7c4310e9013b0175413956ba55a39aed8a5185387be2469e376329237", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "9968e1beffee1c30b00cf3ff24b14a92308eeaed2675c6a6bc593d4d7a3c1896", @@ -14544,10 +14544,10 @@ "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "11ef6fc1e148b4777e04173fda74991e7f623e9c4e0c4a5d7dcd4d9bf2af7e2e", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fa7716bc8a1a9d876d072a783e5509e77e39f079d185e66460c3704d34af833c", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "afeb5467364ead60fdb24fba2851148ae3a56404cf6b8ee9b65c846e2a7ae393", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a80b71a15747d894489171974cdc867dc8b764b4a9137df695f934f2464164ca", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "cd3892968543c3b02afda630057f42835dc06dba290bb3d29c4ef1f3fdb29f50", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "2767d02ad1cf3559e06307b9b1473aa49ba531f6e1ffe17792d894db1e25f7f0", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "72bd97f0f34bc14466119f5b9626bb55639ca1b78ab0670f40f2b5e8db16698d", -"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "1f8693e7979c83f231fd36a3f8be5167bd8964dfdd2ceabaddd0a2bb69af469f", +"T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "66a1c895aa4dde83315c87254eb230df9d626e71a9cd46999297e792f8702575", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "ea9368ffac0bcf77a4b7633fd3e7fe7fa9b636b0946a753ac9147ce1c183f059", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "ee755dc54e83a841fc58ca6af2ac8ce4718bb302b313e00922f7b848193dc819", "T2T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "550d903912e285c4975e23cda2d18e889dc5740bebcf9887aded69dda8c5d680", @@ -14945,39 +14945,39 @@ "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b12e0abf5c1e405b49aef1cbc01ff10c5af55dc548ba5dc3a4eb07f1a2f1d86f", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "69cfc596c320360a744184799d7d9fd244a57db53fa8feb49d03a7a18d836421", -"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ae95460b8c04577d7936880211c171db2a0591aa84c82c3ec078afd979dabf6e", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "0a08ace04a6dcf2b7bbf4d505070fb15025acfb3e696762f9a18bd9884d21cf2", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "41646dd2b6c3422e12f72281c7b51949cdbd5491eb6a67352ea06fcd4344d618", +"T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "879f9c2dd876718e3a6119fa34b2912aa519cde26e742c9eaf539c57953ec213", "T2T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "b82fc427122da04b06518acc31732290391db98d5a5b6df133110e9c573501ab", -"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "913809c03460ca38aff144ec55cd55e166179c725f2aa4ad8d24d2aa4e2fb8b8", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "d5d4cc948529667c0149434c4d3df2a427cc78f833cff09eae76d90cb01d6d4f", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "94798d641eb4a69f4ac2f479389596b402bc798c38b33f0e5de3b52334261680", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "3d985f091f7fff7eda02cd958fd0990c69a4b93e6a7b2edf58a2848dc5e9e15c", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e01a474bbdac682e9fd9f9e809347cb5396962581eaf614aa35de9820aeb49e0", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "56f9e0c000fa9fcd2dec5aee5ada334f8a9d3a81991c5f3e3ae37940f5d33663", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "27ae5fe1bd4770e5943d98541e1226ca6823acf34cff26debbc6f15ae360cb00", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "ad0b1d7c8dc50da9ae7c814b10d014ba9a3c3cb171785e87ceebd043b4829c64", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f94f658bf95cd7baf10d2513285f79acc7279be861d479d456ea3d83557ee833", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "58251e5b49061c1dcb3025cfe9101b4773665245c2cc09743f1ec0edd66a60ef", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "4db9d578d09eff8b139b6830945ef5437483ef7f8d6e278abb3f67118e54f30c", -"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7a9b138806a131bdcad68cfa563d2ff19ee145c69864dcebe8a3a6c92c306611", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e892c2e402b991a7e824bce802b617bcdb38c14f029e0a6eb04cd08c33111bb3", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "d5d4cc948529667c0149434c4d3df2a427cc78f833cff09eae76d90cb01d6d4f", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c0b2767f155bb315cf6184cdf87f457ada3550bfce9b022d83d04481cfab8dbb", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "3aa55bcd800eba64079a6134d972191f10e083edbe4bdc5f866f1ce8ee5bb2de", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f32fe55716209f9cf77b61e8d9a4cd36a21361f39215328052abe8fe43609571", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "6c7ab82b8c8b325cde20347be9779c83c975e7949672d7adb8c755b598002ffb", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "565349c4092cecac56bc0fd52c9254ab4a6fb63bdafe41e5e802a4648cccfe90", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "249cbed4673dc7dc17919886e820762621a5fbfb2b81812b48071e7d1a967d2c", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "72eb38e6fa6711f10f0c8806b4bc29aa93a6929d4aa47f347ccc19f75d3e18bb", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "063054a87aaf7b48eb88e53aab99392fe441ba6b171ef7a1af4959e44f085a06", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e4f53fc4c5cc0616eaa5018726456093ea62da9e10271d80981f8b4184c6e3d8", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5e5c53afd9974f73a0ed5f34a32870e644eea6b8a2254ea89080022075e366e0", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "a7550b9fee4ac99be0327600f5f6fb3e50a8f591c5c58eaccf19a3c6a30f4dcf", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0fb93a5fc3f15aeb83983aa4c94b43cde430fe9f7ca55c10811c518140da2b5b", -"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "48cdb1337fac00e0c7104648fa8609f2d0f46a3592df89278c1e24db6566f3ab", +"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e7c03e6640418d710e6d72d1144a5492295a957bb42e600e59c497fcbe616c18", +"T2T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "799841cafca198f7c4c25275d8d1d3d4bdfdc588afea24bfd6f3d0a8d305332b", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b35ef76d4c5b2a99eee49de8fc313f5d4791169284f5d671635eb3d7a37f7f51", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "5d067a63e181970b020c4d4956491805472ea84c57f9c22497a5683fb77d572b", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ca099711d89d5d6dad836d39063822dc7b3cdf290087625fdb4c898978427982", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dfc9bd785c2a3325507a9afb112b31185df5af45508e76321ce3dc726adacd83", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5963a78cc32a9c1c038aa0ca544694cfe4960884783a38c5877129eeb31b52ce", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "17551447ac773c14c5a26da7844bc00f78112337a65778b3814db01335a8bd38", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "4afd8361bc03eefd38ff07e998cad6c32f2ca5b2f68feac537bb2659fea6d68f", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "98758ee85b9db6cbc064f994e41da58d2082de8541c1324e55db3dbc2004092a", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "ebc531ac20e6ba7e59e215616b6f9d2ece10ade94211c72c60c51208390ca369", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "1aebe0cd51cead904b8d0630a89e179301ba4d1412b213cb4039d8b240607ecf", +"T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "82667e670d2f5646d7563225357d8c9402b2003a608dce44f5b07c664e599504", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "4ac64555dc3fa2d6a392fc71e08eaaff2d15f42e3a7848e311f55b8e17b7e9f6", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b35ef76d4c5b2a99eee49de8fc313f5d4791169284f5d671635eb3d7a37f7f51", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "498d8435e6e3fba49395ae6a969f7c77f6d39aec40acec9e541e21c30d86308e", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "dcd9316ee09abdb81e116222b63cdee3fc5fdaaf5d273d5e5e8910672cae306c", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "96fe74bba707ee0ea23f74ce32f3b5adcbaff005d02a6dfd09f9eda406a83b12", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "72b21b0d54d1ea94215af63d15adf8c307bfd1a69ffee20bfbc5e8a6335ab082", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "16e4825c04b944f5f0f0af1c384991fb2cda5b24360e180db75ef7c1fdbb335c", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "9f2ca3625756904ab044247dc06467ce935c3e5ab7fc92b1087fa4ebc60cebdf", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "22b939d3bf6d62638269b18c9e350650644e26cdd007f481069ae7600e085495", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "c3789b87fc1f58405606efbda59b751db81f3b7866aa4b15224d2c05776012ea", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "a8e8e2706c2881a1d328b6ebf5e9ef8dfacb3af6b49779c7d9bcca92b25bafa2", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "bfdbfde43e99780800a2616f8f53f7962245345893f48f571ca520373fe98227", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8b955a554ed78e04fcdbba05d810233c981d1edc840e45ec315eb0dad18b08b6", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "39d71a7c157d68f53366584682cdcbde7bbc274b8dc5db4211ab0a77af4c6ff3", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "8c1d0857643641c8e9f412e91ab73b1ebe8e6f61550b8c3954c8396a4c39d39e", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "d7696460fbc4009b5c528d4f6498ad2b4d3b82bb4d50e15bd624f39caaed114f", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f13c5837e89a9f336c7b4cfa1ffc5ed0c0daad509be201172bef3d759797ad48", "T2T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c2f798cd193f80cdd1ccfaf256877b552f388558101d1a7d8fbc8089fa3d922e", @@ -15133,22 +15133,22 @@ "T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "108d774249ed92c8fba2691aebd948cf7838c52015b4a15c02db5bfc9d6fe5d3", "T2T1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "e13b6ec91432909991491101f4023962e642c268f8877035e15ba7870f6aa2b7", "T2T1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ade0899bf79556c28959438700567564c8a8065dd92d81b6839aa0b1200216a4", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay": "e1210f903cf0713c9f4110efadb1793b840b2024c3551528d54ff49b40b6ca37", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay": "ed784e6808853cdf7a848e16a95aebd0376295f4411911877d46bff582132cc2", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", "T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "74d2e27f23fbcc8d5d2b959999cd8fb2eaa9500ce7a304ea83583b6056925c5d", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "9088c1dfa23955aa2edf9c7f4877396a0b20f0bb9c5cc7f9f457ad0928a64a15", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "c64d78e609298e78e29621d4a201c47b783e92f8c4371f00c00bb004c646d9ee", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "0a4c7fedc90471e392d21d5c4cc46004fc1c212a902baac5e639acef463ee4ff", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "6dfd64d66377880c47a522bdc64b4f1d07525fe9674926a76647bfc73222b20e", -"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "21b018546041f298f6ad4f7873b4cec4029c3c5e6b28d6903eadf8f055eb60ef", -"T2T1_fr_test_autolock.py::test_autolock_cancels_ui": "48fef550bec0305db7f89f8bd1f47070962ebd55944a002a1205767907ea0609", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f7bb3a42cf7c6a55b803987f3124592745fcd61f8d22e426ce89f81c14ff755e", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "afc5126c5f3ed76e863a697bff9a90a5f5513f7e6843a1c23351218ae5e144f1", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "9b5111d0808da1b288a93f0b47ab06397690e4797615a818f34983c5510847be", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "daebee9f6c90a323fab3f3230ae0c20f9e648e4488b2b44cad8f0249801fc62e", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "db42ef795fcf4cbeca32ae73a302a36640e6d66008537a67b468f26c9bd3511b", +"T2T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "3eb584d18ec6b8d90b1b4c33b6a4bae8b9ceea57b3a1348fd92f843481fdd9bd", +"T2T1_fr_test_autolock.py::test_autolock_cancels_ui": "be3735904f4e91dafa8da0d74fc53620bda02b3de34af7a4167c74e2fe67dad9", "T2T1_fr_test_autolock.py::test_autolock_default_value": "4b0cb3a7c3439cca9b74175b7b424b3fd2a3d66b06c4dbdf7bce0a32df5c248f", -"T2T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "7724a6c46d766d30fa7eff6b808a96f8cef30ac9bd2a8ff18d8b26366f0d6bc7", -"T2T1_fr_test_autolock.py::test_autolock_ignores_initialize": "7724a6c46d766d30fa7eff6b808a96f8cef30ac9bd2a8ff18d8b26366f0d6bc7", +"T2T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "240afb62995c13692737b0636972361fe0b5d11c7436662751d7bb19a33431c4", +"T2T1_fr_test_autolock.py::test_autolock_ignores_initialize": "240afb62995c13692737b0636972361fe0b5d11c7436662751d7bb19a33431c4", "T2T1_fr_test_basic.py::test_capabilities": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_basic.py::test_device_id_different": "de049b25439137e5b3e8e1e2cb62007a6b689a2979d861abaee4cee80ebbc716", "T2T1_fr_test_basic.py::test_device_id_same": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -15219,21 +15219,21 @@ "T2T1_fr_test_msg_changepin_t2.py::test_set_failed": "ccc6212506a30dadacd6f7470569e40098c4bdc5fcd63244b900f64a5fc23598", "T2T1_fr_test_msg_changepin_t2.py::test_set_pin": "2ab805d6f6eea2e95db4bb1373d541ce61afe8f8de1573f32b6b982a5d050cd3", "T2T1_fr_test_msg_loaddevice.py::test_load_device_1": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "3af4b556656a2059464dae107583c83ffd73ba0229c7ed25da4944f92340b082", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_2": "ccdea2f05454f0ff2a8703c1c74f930bc772261c8d8d4fcc775ec19651457dbf", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", "T2T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "036e5f74d7712b38ea151a33e758623dea2a6edc59c3f4ef09a1f057f513ff5c", -"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "4c854ce622fc61ff2cfa66e1077b21b28df89ded3cef3e23b2fd6d5f15f3d7d8", +"T2T1_fr_test_msg_loaddevice.py::test_load_device_utf": "32b03f2d51c314473cad862bf0d0100d0b8b1f3021a2808fc9ebd45ade01d144", "T2T1_fr_test_msg_ping.py::test_ping": "e2146f6ece95111d17b01b0f2e0bf720c845242c7b0791ce5c8af5e9ca63249e", "T2T1_fr_test_msg_sd_protect.py::test_enable_disable": "0de6e5f9cb29e86164e29a0edae8252d600f08b6dde5d8f4ecdbebed63ba6ee1", "T2T1_fr_test_msg_sd_protect.py::test_refresh": "5a584a657f4ed3fdb8b453aff966e78cf67261298fa46fc08b9b1552f90bc027", "T2T1_fr_test_msg_sd_protect.py::test_wipe": "8ea3ae882630b623ed62c9df2b0c17dc5fa0babaffb826ff7c49a4ec5ae8881d", -"T2T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "24d55cc37ebc6a853bedc1dc02d03783db3b0253cb8ab67beb19978dd9ec6ffb", +"T2T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "54eb3340f64310e6e043392fd9807409770d0e57bbcb60971d0e88fa7e480de8", "T2T1_fr_test_msg_wipedevice.py::test_wipe_device": "de049b25439137e5b3e8e1e2cb62007a6b689a2979d861abaee4cee80ebbc716", -"T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "8f1b3a32f636a9fc3b04e723d929b42d9781f062d1c7b9a92e539d8b25c84f92", -"T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "8f1b3a32f636a9fc3b04e723d929b42d9781f062d1c7b9a92e539d8b25c84f92", -"T2T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "244dadb7f9f650bbece323e6db06e8e31d5cb31dae8222770f5693110f6a78f4", -"T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "244dadb7f9f650bbece323e6db06e8e31d5cb31dae8222770f5693110f6a78f4", -"T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "244dadb7f9f650bbece323e6db06e8e31d5cb31dae8222770f5693110f6a78f4", +"T2T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "161ab2b2377ba7fcc523252c5802cecdae1f6623941d1979fb53246e3ee3ace7", +"T2T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "161ab2b2377ba7fcc523252c5802cecdae1f6623941d1979fb53246e3ee3ace7", +"T2T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "7959b9bf8c147ebc176bf1f01f6b9ede2f65f1b7ea964bef7bf4621cc4c0a2fe", +"T2T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "7959b9bf8c147ebc176bf1f01f6b9ede2f65f1b7ea964bef7bf4621cc4c0a2fe", +"T2T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "7959b9bf8c147ebc176bf1f01f6b9ede2f65f1b7ea964bef7bf4621cc4c0a2fe", "T2T1_fr_test_pin.py::test_correct_pin": "a2ae3abb60d07940bcb28ef4aabe6bd94cebb8202593b8fd645f4f4648c2cb41", "T2T1_fr_test_pin.py::test_exponential_backoff_t2": "28c4ff4b2a9b7e881645db9fcae55679b03af977f90ded803ea5aa6543d4e46f", "T2T1_fr_test_pin.py::test_incorrect_pin_t2": "2914001db3a0c10605d0cc252b0852b245e0b3da0003adc805989c40fd721f96", @@ -15253,10 +15253,10 @@ "T2T1_fr_test_protection_levels.py::test_unlocked": "d790632d2fbdb9d39484953f8c35cb1cb27609c8bf745c14b88449da9b84b734", "T2T1_fr_test_protection_levels.py::test_verify_message_t2": "a207a1b801df070ecf7e05a790958f0dba2a77a447238ced39c5f3ff8ca04998", "T2T1_fr_test_protection_levels.py::test_wipe_device": "9703f5d61609675156a2acf09414ff23bb2eba18b94942bbddb50397f7c57050", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "5b7c425177543a5b7e388bb87ca466948fb30a9fa1ec114b9e4ed76020ee1866", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "6da007e821c75c970b3e6f15d1033e0ca6827888347260fbcf252e92c9ff5714", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ce343451d53dc4bbd165d9756614119a68e3a6551f825e064bbdff97ea3f1b73", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "9a6349694cc668feee6b5f42c9c765d366bf2a3555f16c491308a978a8cb629e", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "85a60c26d35d293b9010ee8367d16e8424cbe934c13eb3285d00c14b576f0fb2", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "fd1df231056175632804a5c54ba41b963b5a16a69e9e268aca0029f7d2debb47", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ba29d13b736a17081847c3f11fb30ae9a7d3c2cf69def8825e522f60e4d21f4b", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f4f1f50273a878ac439eb704f07bda6d4dca006c74c33a76bb12c511246e4956", "T2T1_fr_test_sdcard.py::test_sd_format": "844e3271ac6ddf52ce0d38ab2a081ec3b9871f3e5afc80ea420d167ca9b69145", "T2T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", "T2T1_fr_test_sdcard.py::test_sd_protect_unlock": "84a1aede2a48386c5e83988ff158586cf5d14418f7a090f8edbde461cb3af9da", @@ -15266,19 +15266,19 @@ "T2T1_fr_test_session.py::test_derive_cardano_running_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session.py::test_end_session_only_current": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_test_session.py::test_session_recycling": "244dadb7f9f650bbece323e6db06e8e31d5cb31dae8222770f5693110f6a78f4", -"T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "663983ab8becdc61ae77ea8a21413d421e059657e90e6f0284d418ea87ea0e2f", -"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "d65c5e232994eb58b9d46be7b3e48e23565dea5e48b329ba8e7a8ba3ce695574", -"T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "2e9504dc2da65966101d3e67c193f2bddeeeca33ce6c752cc3092762db635682", -"T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "4ea9f8f9f0b12a9ac0ce1922612e7ca36b025c651e346cb89750f9b99bd9cf24", +"T2T1_fr_test_session.py::test_session_recycling": "7959b9bf8c147ebc176bf1f01f6b9ede2f65f1b7ea964bef7bf4621cc4c0a2fe", +"T2T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "6ccc7d834789d84eb497fdd251000fd71873769dd0600fb0188e6fa5965ec5d2", +"T2T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b8f66beca73b4acc9d061b9f50f508133a6afe948b7c62f9b857ed58a74210b0", +"T2T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6be653b2d7e391ba7f9867a1390896e715ea677c19c02d44b28c159630df728f", +"T2T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "b0438dc9a34c4e2a8809ad709f340511009727707f3f478b7f103f2cbfd772a2", "T2T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "8f923a821cac68e04da90bc85419b72c379b0a12dd14f88568bfa719894c6d82", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "ee24a7c07d50a700f3719fa5a8b5a9c2f5e255ee148d2201778107159f0d0c55", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "80af0b3ee70865ec8669551f0042d43374e8588599c312360c1caf2d7d14a627", "T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "1329b3423a52c61ffec8fbb134f63d006ebd9b8f994065824c34db610a7f3b5d", -"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "c1ad20f9367f5758772da816fbda6a47ea3bf76a34d5879fae3434a3b327cf78", -"T2T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8185f65dde13228d2e69f9ebdc98dab0c4e2a4bdc959caa3e75e8c199b78bff2", -"T2T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "c53361a04e81e8a6b64a3b9710e92f82938b03a8c35bcdedaad543f196b3f498", +"T2T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "2b79e4419b5d57993e3bac1467e58579401f2b2a8993f23469afd46a136f44c9", +"T2T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "996ba14a87f9f82455ec4011015f77f01142be18bf6672dfb5705cd90cac0479", +"T2T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "ae7e8303081727901fef1565908d4e16684ef9427c0350418cdf252e6a247c8d", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "c4585c060afed6a846facf4909e7705d64f93673f5711a4e62fcbbc1020be275", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "b80498105334cc6c0c17dbbaef4d2f012004f4df8ff461d94a992fef1ae567b4", "T2T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "781da6f1be1715db1139b5859a65bf608fd4c3cb1eea1f8df563fd42237f5b8a", @@ -15519,17 +15519,17 @@ "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f70bac5e99513c1c670a863a5b000fc80f1c5a3d1afc49424a495183486a50da", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "21349a580c60aedbea800316d026dc2c6e3ca53584e9590f4ac9314b64843aee", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a03cfae53a15478c8d7a73842059eed8d2a3d5bd8b287cd97a3483dfedecfc44", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e25b10ab63c55f12fe03eefd50111a9aa918b21667dd83426dc045634f9395ee", -"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "228265069b1eb183eb0ead8aacb1da337eda6dde9ed5c787e1f6d96d392f334a", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "547c7a970d5dbce28c9d46d54ef64a3a9de34ea4d71477a936d7d438170b9144", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "0ef21ef513b58f81c2ec570209ed941d4f11326b9374e6b4b28036548d60f58f", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "60cd38d27c52144a463a29f549a20f6c455975ca8a0ee0bcbbbd277f05adc129", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "fa5b654ca9c772cc4b4ec802b945c5aba29021a48124733599ed930d7cf130d5", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "5397eaae685d28ecccdbb18289c3a9ed499a6654c95810f75a33a0aa2f9edbaa", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "cb88125f308e6181dba45dc91223ebdf9b97ee0ef589d184dad1525666056aed", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "d37f2008babc14ac37f74514bf84c0a70b5ec5d38697283263006c76c7452533", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d5e7b13490549c06445dddb887f28cd91eb97715d53177e845b36b229d942f65", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "b1058a3a280b1a5323215f3fa3a4e7a47d274d58cfbb180a781b3faac589ab3b", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2695412f733ed741ea4de2fd627be6e9ca5c48bc8079ed52b54adda1a828e2ff", +"T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "f750821c92d3aa15d2f0c370d341e4905d4400f11ae368f02efdd253fa3f84cf", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "a01e2d94c229cc801b458ca27af1e1a0b0717d0b2c21366d740b9b0b98907f83", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "7cfb7eb316e587770c9859ea9ca84844fdd398cf018492d41860e343b3132ded", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "d6bec560890ee243e2ab354aa220f122a684522537b812ef00e9346977c05db5", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "7ac7b448e45899f51b946fba7840a6cbd6746021a77fb35163e378c3d52d7584", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "c97f5c38ea479cc17c1e48fd77d7c7f71a8ae69725d2038d779ba0a308a03ba9", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "74b464cd02fa0809702211ea27d3817c23d947bfd68d5b7e7584201de3320157", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f3b673ef9b5f8dc186eccf18ae424aa401e5dac927b85de11ab221dcac01268c", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "82b39aebd2dba788c07e775502ed9b62afcdf8125a379207df2fb2391f3abc75", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "56f3a131657dc659648457a3784585739ddc5761a59ff34c30ad450e8e2e62f2", "T3T1_fr_test_lock.py::test_hold_to_lock": "31961b0cba116a3a786e5758e4753f703fb9b8499d4c6cc7bffc8a162de70e82", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "93d1de96820334a15f9586468be8b947168b0527e36387a31752317a0ca88444", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2c9caf679699f256b7e94caf1e3344210c2bb8b23716f021b8227815c67def2a", @@ -15547,27 +15547,27 @@ "T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "a7842eee5486f2b3b7628bea2c9a7bc3a9c389589bacd4a23d94023eed9c8775", "T3T1_fr_test_pin.py::test_pin_cancel": "d609821dc4caea0c9b8d44bc090d46c3b39908dc6fe20ded1bd663f8b1df0181", "T3T1_fr_test_pin.py::test_pin_change": "7b33542fa2f40baddd28aecabca5ac079814785dd91c136b8da8e54ebb4006a6", -"T3T1_fr_test_pin.py::test_pin_delete_hold": "e8fcfaf4854e8b529629e60cc4570ea22a64cf6e68505e70bfdf289fdf264713", -"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "84ab2ca4f7495f000b368d2d3018bcf7a67b9149c4f24e9c1c6b809c3a23224c", -"T3T1_fr_test_pin.py::test_pin_incorrect": "b5c9dd99174550a30e19cf49e42374d50eebb43376c085c29a40c52aa706729e", -"T3T1_fr_test_pin.py::test_pin_long": "428b30c7357fb1ac9f895eaaa81eb879428c3fef46929e4664b6162bfd7beffb", -"T3T1_fr_test_pin.py::test_pin_long_delete": "d5bc7b3ace89ab13370717c7044f827d1d3638e53f74f90be17593ff97cecb35", -"T3T1_fr_test_pin.py::test_pin_longer_than_max": "24516d807963656575861c14b78aff401c6aa0524ca3cc900ff3db47f89ae0fe", +"T3T1_fr_test_pin.py::test_pin_delete_hold": "7ea38d5cae1dd598f0a43f49054f74770f41a2bb0e15eabfbcd2178e555a206f", +"T3T1_fr_test_pin.py::test_pin_empty_cannot_send": "f727f318a1334890b62ec8670e55a3eb68d4e14448cccafe8e7882c34df1cc87", +"T3T1_fr_test_pin.py::test_pin_incorrect": "ba692267969433762b7054898b80238ea44a4ddf1ebb11226b8b8b7021cab019", +"T3T1_fr_test_pin.py::test_pin_long": "f3c9de8af54db9ddf04c115945a3783c4ff4f083f79597a5e913d3f196fa40d6", +"T3T1_fr_test_pin.py::test_pin_long_delete": "64f095534ac021613a8b51da50aca8bb3991705df51c8c7be70e0e88ce08623b", +"T3T1_fr_test_pin.py::test_pin_longer_than_max": "253d45663ff993e054ce434e90a431e205e8ebcee65d7cb48c5d5a5fd4352082", "T3T1_fr_test_pin.py::test_pin_same_as_wipe_code": "63a70c1b1961a503aa419a44511198f9abcec3ee54df6976909054f0f8183ab0", "T3T1_fr_test_pin.py::test_pin_setup": "382a3cd752cc35adb0d4a3f0060e42d2ee0c1e9860df3ac0cb0c5933bc735e4d", "T3T1_fr_test_pin.py::test_pin_setup_mismatch": "6a1840ef1e97ae048f51792e0bb8fe59c540a9721495960242df3dfad99325a2", -"T3T1_fr_test_pin.py::test_pin_short": "84ab2ca4f7495f000b368d2d3018bcf7a67b9149c4f24e9c1c6b809c3a23224c", +"T3T1_fr_test_pin.py::test_pin_short": "f727f318a1334890b62ec8670e55a3eb68d4e14448cccafe8e7882c34df1cc87", "T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "9fbf63afaf25ceec9a0b8d17ec83c0a7a39c7b106ac13519ac196474a083a31d", "T3T1_fr_test_pin.py::test_wipe_code_setup": "943ea3640d21ae0a79655035e2aa0722cc7b79f6a9e17bef39afd9ac1c327549", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "8b277d4eef70dd761a740ccc3d543d8a2e6e9826f46d95619b794b065ce12966", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "34140a34950d35276fd45166cababfa52cdd5494741e27bd8b99cddcec99ad65", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "471d84d67e4c09958a078a09554251013967a603dc9be3e08ef35113c0e31b4c", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "f7c125728e0bbf6e7f138be7063b5b76f953979394f0ac5b402c5ef6a47c2d0c", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "02f84e41630064450fd3df6a35e385cbd857f9e705a5e5ccf70b22cac1ce1f51", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "8dee6fcb6cf9bffc06c450abc3e427cceb1531757d19459323c2cbced6832c1c", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a51e3c2693ddf0ab3f1369ba80dba5dbd43a4da3ca5d9a8db0478717b9ac28f0", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3b1488413f5e2c86ab1f9e02ebd3b0d6827cf785ff414a689511109834801673", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "41e6e319dfc6de8229b7b453cfdb6dee721dc329175b5755aca691f31da4d7e2" +"T3T1_fr_test_recovery.py::test_recovery_bip39": "28cac606fee1d9da20a548a74bc63a55f052258edd5056607f9736775adc711f", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "17b4e0ae446f28295fbfebf6520ff44eb3b0e189e8c4f3482c013a8198d7d807", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "9e94c4dfe920a2b935b24c1f536ad5e97b15b716b0a4c5603858354e7cbc7a50", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "fdf60b5cbe030f7496d4f1187d626906ae64c3db46578407242e806d4d8c3716", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "8ac5b9e2727c2b483776b4299fb60ac7ae04d0b2fafd6515d35ee2ee40807ddd", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f517156acededb8679ea50110d4874522e2f3678140d1eb3429bad4c5ed041dc", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3773efb385df6d0b33967fcdbb47e5613b50d5d5c018b7a8d632b8569994d93e", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1865f3547ce05f2f6292b91799489a9f64c888109abeceee0c1d286fa0472396", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "7e365c6c97869a8a8603922ad9df4f2abad3bd8a451bd2deef4f43876cdd58f1" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "5cfc60601705372057cdc48cb73a2bfa596c586fe3214e20bb68ac6859c54537", @@ -20960,9 +20960,9 @@ "T3T1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "2d3d54cd06d36caa063de4a1943df12ff37de3e4279e38aec93f24e259763d5d", "T3T1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "164817fdc5862401d790b282965da438253de612380270b8446c7adca7cda297", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "6ec69c2bcf022c45fd43e7968b5df4306ed0b426ccc5f4a0fbc1c990050f9786", -"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "94dc95c694f42763e7912656ef978025a2b4980d15f1993e287ccf37b3417b5b", -"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "98cecf7f2c431278df4b7b0fcb4670e03d097879085a9b106e61e093654cfa02", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "8a6053bb5e3404894e45dcd8f7eea23ade43eaf14146e273d3255c1823a2a453", +"T3T1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "190c749399f2a6e8a73444b4608203f333e40cfacbe32e49d4f4ea062e8c7a80", +"T3T1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "bc0866d755160fbca9a24408a9334265dbd7e0b7f49de67347018f0aadd99fba", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "14bd7797ed91b846a7a2fbb33a7f0699bbad82aa33a77f25cd759bc57e502665", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "0c4cdffba554f4c8ff78fdf39a1d54732acbab86de919fdc82a6f2987921a83a", "T3T1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "1e933ba8d215b7613a649235d706137206b04ce3dfd2c8bbc337403a50460e9f", @@ -20987,42 +20987,42 @@ "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "df0f713a2781675ef2198ccee8a26da5f38f54cae54b559d4c780f5d34bdfb15", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "58344ecb9011870b2220324fa5f2e0961937706100598e6cbf82abee81284dd5", "T3T1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "bb1a7ee8cd98a7925560cf4b1f9015e44fa8cc6e72ffcedf74ca1d25913b38ca", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "5d0b4918063c9dce34fdf0af88e7dc850157009f981a03c504fcc19af0e0d218", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f3a59629c951f13a7f7dbbec40d019ef92dfe424195d63577f082e6b2e8398db", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "1f2ce03625d122a0e07ae80aacf6defaa219c2e900053fab6cfc0adf05aae611", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "6cfabba40a18314ae3784905b7747591c539552efc56de9e9c5228e254816ce6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "b94cb0a30179b74915c8972fa1d716436361c1ca86919c82001a178aec5c2b97", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "a3bb80774a4361170ef3983f6f70980eb187b306171048cf37a4e435fd0aeff5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "0658fcf5b15a238864f791ea7f7381725df2275a77669db04d83f6d47afecfca", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "d8a4cb0b0902c6bec975a2fa88c7d6a2891555484e45aa1cbe14677720a7fd06", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "3c42bb0ef4e75d90262fbaa7d14d14d11b33f9f86e4b48f502b84e65d95af0dd", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "cf65ed0f9b110de871c36291097a923f5faa00bd0f0a785a7a78a718184f4356", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "5fd237aeb450acf19acf5d5bfacc4cfb47de9fe43339f11e85606bb25fd77dc7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "a562207679e4b4aab1c6e935b2badcb1bdc74f154e7318ab3a94de4d182b7a95", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "9275e8e94062a0acd1d1831cbb9845464b3d2f3f5dc27d2956d5c0a40d32f291", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "4159b67485b4b03e4b7bf778897c9aa3ca0cffc998337d18828a024cedd92bfa", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a7ec2674f61204866dc6210696c6332d063cc292107ab72b9624507e4e458cc7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "30cad621551099918b93ccd9af696bf928ba5c833f87fe26b0d3da52453beeb5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "65b6d172e1afdd97686554e5f7057c62f01dcdc71e0c0f1895e2843711b24b2a", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "201eb9133e462ff97c8af705d80a11c708b5b2ffcccce365fe74f96a3b8268a3", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "5d0b4918063c9dce34fdf0af88e7dc850157009f981a03c504fcc19af0e0d218", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f3a59629c951f13a7f7dbbec40d019ef92dfe424195d63577f082e6b2e8398db", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "1f2ce03625d122a0e07ae80aacf6defaa219c2e900053fab6cfc0adf05aae611", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "6cfabba40a18314ae3784905b7747591c539552efc56de9e9c5228e254816ce6", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "b94cb0a30179b74915c8972fa1d716436361c1ca86919c82001a178aec5c2b97", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "a3bb80774a4361170ef3983f6f70980eb187b306171048cf37a4e435fd0aeff5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "0658fcf5b15a238864f791ea7f7381725df2275a77669db04d83f6d47afecfca", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "d8a4cb0b0902c6bec975a2fa88c7d6a2891555484e45aa1cbe14677720a7fd06", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "3c42bb0ef4e75d90262fbaa7d14d14d11b33f9f86e4b48f502b84e65d95af0dd", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "cf65ed0f9b110de871c36291097a923f5faa00bd0f0a785a7a78a718184f4356", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "5fd237aeb450acf19acf5d5bfacc4cfb47de9fe43339f11e85606bb25fd77dc7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "a562207679e4b4aab1c6e935b2badcb1bdc74f154e7318ab3a94de4d182b7a95", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "9275e8e94062a0acd1d1831cbb9845464b3d2f3f5dc27d2956d5c0a40d32f291", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "4159b67485b4b03e4b7bf778897c9aa3ca0cffc998337d18828a024cedd92bfa", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a7ec2674f61204866dc6210696c6332d063cc292107ab72b9624507e4e458cc7", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "30cad621551099918b93ccd9af696bf928ba5c833f87fe26b0d3da52453beeb5", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "65b6d172e1afdd97686554e5f7057c62f01dcdc71e0c0f1895e2843711b24b2a", -"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "201eb9133e462ff97c8af705d80a11c708b5b2ffcccce365fe74f96a3b8268a3", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "3f796f0088298f35468a2dc9d5561627577a25863aa22473c2f874fc092c3a61", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ad6f1b5d9dbea3280b180e23f920f41c71fc9d73275db6d285071600c5994cd6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "0d8b5b405ade14ec3389f7ed84b0a1b316743f43f6d3311ff8a3f77d7e7b0dda", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "9fc9c547d16995bb61140accfcf22803be379e0c674f7a3874be8775836ee9b9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "5dbe4d93649fb5c08ec48b55d166031f6a54b3f0801f5d8500a055af06959258", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "ff73ab53b6d60927d7c4690f267893515cdca8ea836ee726973d974e8862f513", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "f2b38ff1576432f295bd7edee3dfdff4535fc09247133f9a066a35cb015c15f9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "b6e5797b929d52e1b807f50e555abf754cdf2846afae0202787700b13f2cbe64", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "cce95533ebf7ee228b303144b897bd4a3344bcccdd5b5db3001fa4cc7e47279c", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "47c31ced9f5dcfd941af71f60ea1d663fc85d9b31d611473ea4afc90e420aa8d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "9e5bae4233be1f2ff8bbcb29f5c0dbf92c6d9fc29e3cf88ba87d1b33f1a3e37d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "b23bc05f88641c17cc0d1baa636b91cfcb2765f33b9262c1fe69105598e65df9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c25f06fead89e98f88698975163a872e838870aaf18ad52463b8e71c6cf5bd1d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "a030aa41a20aeaaa0080fc77173650b658c30a1a38c5422d6f4109e4b6a1eaca", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "33257e11c7e6ac8ceeee00e3471d54271d5ff1550e32809633f72a6fe6267d93", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "4d4cd59ed4f8ab8ca98726bd00f03c425ae99ef4ebf168572c5eb44e705be14e", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "5927b81fb10f3a2dd040e98ec0b3903d9d5186aeae3420d8802ade011a860421", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "67312b7b497eb7b9b2da2005b160311b0ef5d400cfb16f828740b486301c7bcc", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "3f796f0088298f35468a2dc9d5561627577a25863aa22473c2f874fc092c3a61", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ad6f1b5d9dbea3280b180e23f920f41c71fc9d73275db6d285071600c5994cd6", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "0d8b5b405ade14ec3389f7ed84b0a1b316743f43f6d3311ff8a3f77d7e7b0dda", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "9fc9c547d16995bb61140accfcf22803be379e0c674f7a3874be8775836ee9b9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "5dbe4d93649fb5c08ec48b55d166031f6a54b3f0801f5d8500a055af06959258", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "ff73ab53b6d60927d7c4690f267893515cdca8ea836ee726973d974e8862f513", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "f2b38ff1576432f295bd7edee3dfdff4535fc09247133f9a066a35cb015c15f9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "b6e5797b929d52e1b807f50e555abf754cdf2846afae0202787700b13f2cbe64", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "cce95533ebf7ee228b303144b897bd4a3344bcccdd5b5db3001fa4cc7e47279c", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "47c31ced9f5dcfd941af71f60ea1d663fc85d9b31d611473ea4afc90e420aa8d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "9e5bae4233be1f2ff8bbcb29f5c0dbf92c6d9fc29e3cf88ba87d1b33f1a3e37d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "b23bc05f88641c17cc0d1baa636b91cfcb2765f33b9262c1fe69105598e65df9", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "c25f06fead89e98f88698975163a872e838870aaf18ad52463b8e71c6cf5bd1d", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "a030aa41a20aeaaa0080fc77173650b658c30a1a38c5422d6f4109e4b6a1eaca", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "33257e11c7e6ac8ceeee00e3471d54271d5ff1550e32809633f72a6fe6267d93", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "4d4cd59ed4f8ab8ca98726bd00f03c425ae99ef4ebf168572c5eb44e705be14e", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "5927b81fb10f3a2dd040e98ec0b3903d9d5186aeae3420d8802ade011a860421", +"T3T1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "67312b7b497eb7b9b2da2005b160311b0ef5d400cfb16f828740b486301c7bcc", "T3T1_fr_bitcoin-test_firo.py::test_spend_lelantus": "be59ae85e852144bb8f725be75465ce16d2f769bc160f0ce3278beb7e3cdb0a0", "T3T1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "f3b61d254c60cff0a11b4526acd7fc7557a99bfbb46150b772734957663b3cda", "T3T1_fr_bitcoin-test_getaddress.py::test_address_mac": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -21083,26 +21083,26 @@ "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "d39bbe42f0325f79a33348cfff7e301bc61b26c42d53703fde128c0a2635cb80", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "c539ef1f091a5f6e87bb74a07c03657ad18d9dd30cb2ac715ff83ba536849f75", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "61b107044ae71a12e1749735f21b00f92e12dd68db381544694273e2bbf8027e", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "86cf736371dfd37554157f0a56b38de6e66996ee915cea5b1bfb28e44099924b", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "03a42b542b68478ca3d478c25e5e7c4e86048cde956780d3f9c59d7bebc670ec", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "a244e767fa9077a29c16b3b30172368e8a065cc6eeb93158ded40b6d4cf9e4a7", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "d6487a44ad572dbfbc858765b9244b9c3b8e67cae0141fa53b7504216e02a92d", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "edf967b5b4e7c1580b4b1a5665fc39a1f8ce33eda196894c9813fd471e422a6f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "946a319dc6af55d8f91651fc90f5eee1039a4ca728d5c083b46eb0ff44b41c45", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e1dfc05cb29d86ab703656e8ff7227e3e053b7f936aca96421e2df60a35fe420", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "41d287728608b9b99ffe2d1e469057524fbe69be2545545346e3389428a88cf4", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "cc88139d23265919116f67a4226cdb7342809299da9726f04cc45fd740cf79f5", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "cc88139d23265919116f67a4226cdb7342809299da9726f04cc45fd740cf79f5", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "104653bf243f17156316e83010bc9836bdc83c5bdc9de3b77a6d0f7813bf4e1f", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a5945259e180114ca27c1bbb113b59ea484fa1e58af129fd3b37e8a6c2d3561a", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "e67426203b4d4dc3edff737752b6f412c9dfe2d6e2303da40880ccfe7db09ea7", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "49cbb116809067c6b190d6dcaceb80c9e37cba8ac2d0da6dfa73808c10893078", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "933267d483cb4a1c3316e3d70a1b310920f201e94dcab9b9f3fa2d79b778e70b", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "5475b4be111237b32eaf173fdd68ae2fe498bbc3c21230de68aa25ee2d009b58", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "a5f95c5adc0f425251f928057c4bd479aaab6e243b4fb1d80262cca57d6fd693", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "96d58ed7a66c6f26596cf1b5baa05e1873f605f867a5ff51717098dadd4ede6c", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "64a3e796cb1beaafad47939bb9c131c8820c161ebca8b13cd0d2b9917617f058", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "c3ab96590b8281341ff95dce66fac01523d70329cf8716ad057c4694289b3b0c", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "8100f83adfe801772f35eb8bbe731606e06ac8abb075afb94b65db988b2622a6", -"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "dae26bb560c16e50ef3b17b7cb8186ec949aa14475b8ffae7f013f2eae72b90a", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "2c6af57254d9a36c00773958b93a8a407eb3ccaa9e54a5a48dbbe76f397b2a1b", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "2c6af57254d9a36c00773958b93a8a407eb3ccaa9e54a5a48dbbe76f397b2a1b", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "00071770be7a96c887faeb2934760801da71ab4067f7a72852d6c386ba42bc69", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "4dc956f0f5c584cea4bddc4f3d5f651b9b03ed2e6de511a636798cd4bc26469e", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "6605432fb515c0edcfa7c11ac51208322b9736cddff965d913034855a9e87721", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "64e0c71d4d7f9ada454b9a7a6e153fdfb6e93533bacba2fbd94020cef93c1df9", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "bb326a5b41870e74bdb99c7c88f6d3ccfa7b45f422f151280ca3c52adbe5478f", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "655158cfcaf0ec4a31a6bb1676d3c2bb089836e3f396b70bff90643d34ec79d3", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "54017cb3e4d7c2406a9568be7ce7e55f18349e9a3d0f9f6f1c803da5ac50d1eb", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "22e43a5871270b3a727269fbee7ea8073f538cca9655fa963ccc4cb42b8dc4d2", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "ced28f442a0d53265d0fd0157302f5d52bc84c594fd03ed60248a1c126357f76", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "19b37d3eb242ab44855e85cd871ffd0da48664d9a17f7a96766d2906fb926273", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "83ea1d0f90f3473dfe93aeff1d9c5d1408ba2d4b6722d62f326808ea3811bdd3", +"T3T1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "d3debf4dcbb48e3c23be3854db847ccd4de76b44cdc5d6aa0551199879976373", "T3T1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "308a798aac4ca789ace179ade3096e1c1871936783bb2eeef578ae2cf89d02c4", @@ -21123,17 +21123,17 @@ "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f3a59629c951f13a7f7dbbec40d019ef92dfe424195d63577f082e6b2e8398db", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b98c58e23878eaa0f8d7b963045567f8e8eabf9baa230522b80a1e1a09296de7", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "c9e92507288c87b97ccdfd9c6a73f8bc726b057261025f647a7de55ab825ed3b", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "b7d9645b3c9419b7ee7bee8b7b19a05dd30d47c3b3d3db9657bbe4bdefe2e6b3", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "8893adc8d7a8f82573743d54fb8012ee379fa7ac73759545bff30b204688222f", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "edf337dddfb2c7c595c139901cbe209c2423a90a220caa4e597ffeef3a90b12f", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ac64da560edf66ed71957aa5428fba918ada53ccbecc4eba1079646f2cd11544", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "cd2a2a693d49256bac89d6eaf09a2808b4b32ec442ced4957f6f3a6f89041cfa", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "5fdbe7549939d41e8f23a1a131ac63dfff28bf876855935818d0b07fe512d4a5", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "5fd237aeb450acf19acf5d5bfacc4cfb47de9fe43339f11e85606bb25fd77dc7", -"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "3c423c24263483fbf6854ac11e2a2aa44dd4238b5f2f41902a0800fb4f88eae5", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ad6f1b5d9dbea3280b180e23f920f41c71fc9d73275db6d285071600c5994cd6", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "58b2e0ebf877ab0a70513f4548d9f4d88093978ebe9a75d2ab75ddccc3246319", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "f1339d96fa5a12e27f26c11a0d12fcd9e7ad6bb738485b35d3d214d5c8f61ed4", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "14c38c44771435c86f21d2bb17a9b61ae70c24751f511734541f72cb771a7651", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "03f2228300764a3f3bbd604326a213e96dc379fe31ae6023bbd3ab524a933589", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "371277544e13822d6a4228f37c003b62b0991135ca4c30395053b5faf8d9e0fc", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "c338cb0b778ee05c98f74e521d118ebfe9b3201461bde12e7b21cb5dfb2e5498", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "7b4602b75cd9e514149ae54aab2fd5d18a5f16b2627ca487b6e79614e47f2cd0", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "aa310b2c405ab04b2de25054f90c00b699d3f34162a45166fb4666fbfe0204f9", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "9e5bae4233be1f2ff8bbcb29f5c0dbf92c6d9fc29e3cf88ba87d1b33f1a3e37d", +"T3T1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "5ba07c9baf85c5e15796179d9eaf7ba3f60ea1bd10128aa9c6e48b29b262d3f3", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -21414,8 +21414,8 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "65442d456d3d521ba59aee02f930aa2203d11071cea13c0ed31d6497ad6c77e4", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "7fcd35e688e8ee972f222f45ec34a01acbe817191cb2ac98a130495860bad82e", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "0b1b00d9e82fdb3a6a1a665d7b1860b2b3e381b399f30338ac5c0ac01614ef36", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "a1c6b1ec2222f6932d37658c1a2e67e7883b98a592e4a8dbec5c1ee94e770ebe", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "e7c50e3369dd58e84c0c0d6750fffe2f450da5d011354aaaa77e653434be362e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "cd264f4274d930bd0921559f6a35a6618d885fb04f5296f677a92dc411afff84", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "592621e70f9c3f0b4db40cf3ed475958ac7bd4b40de4fecd47cc409e41bbef2a", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "6072be81bf0b333e30019206fe3c0932970c869a5905c61394303a2ecc4d1570", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "4fd99df9d27d24a5912322ead6651ce08f2b6aa5900b2e23759e07e662757f35", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "2cb81883166b264fd5d514bfbfa2f86391ad94d8a21c16f0cb9727a8d24c03f6", @@ -21445,17 +21445,17 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "7d561d8448c9da41817218af1917d84cc4317a3ef3d3d583f7cf66698e9968b6", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "bcf0e2a1fa567b792a0b7e06997cb49cc39b6c854708d7cc205f27c04fa3972c", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b01ae467c0df90ee63d74e75804b67cb538a951d7fa971942aceb74db1e9d651", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "311d2e2f3d62c1c59c753abce609eec917a97e73adba9beb40954d03aa125083", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "647654667740bbdea7545f80a55572ca988c06099c25ddc476ce483cbd8fa40c", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "eda24010a49f716b78766be6433d959bebfb46375daf2d46f42b16b4d7913175", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "907ca35cf21775a4bf884b7c72ca84b307224273d4642d4ac8e527c06408d35d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "11d1dea6c7d3f6309646203104bb6b7cb387561bc3ecdc0911cd98c3cead37c0", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "d5feff8d1f25accf031fdce53838cf65f45a3908d6273147327e7fb727428429", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "d14fd4dbe38cec5c72226c35e413dd4bb833d146f84d3c23999a6e82f38b2450", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "9745a57e4337414bc5a0b60c8a741967716bcf1f1e8cbb1e80f643c6f1d95b71", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "01c287aa4d24a862bcc371a16382b5db28281523f155b35af5f647d46bf7a907", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c24b6523b0fd6931855318048b690a1868d017da94166a30afaab34dca35cb29", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "82646557b8aeea5f813789ace8f750283910de2cf983ed356ad4c0c99ca0bc5b", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "56f2a02d046b14a25118b26320462691a312d35a1c123af6d01ed9ca695ec729", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "64323c9f66c26e229c54bd3f49bbf87dd8ac5969dcce09d651a72afdd0a3d455", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "8febe567b69d5dbf55bf6803c09978e729bbd729eec3caca4a7c80fb3c41d74d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "487a7903037cbd348280fcedab802e0c664333ddce73bf17490ef7bc8b30a48e", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "e02bdfa37e65c38a38d645c0e0d3f637ebf193330ae1006ae34f54e1c40960df", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "de8150bd4a807a796dc82ddc7fcc4dc1b2f0d5b0e3183a63849720f61fd3735c", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "137814e0aebe1f2a09eee183218d1b3e19363e2a5700ab870eb822f7d32c5aa4", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "3bb4f1974796e51b293cd43f05d36dc5b6da422c7cb4e12f9cf9c2f8356a4fdb", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "36366148d1586503079ced39177c3d0d92e2781d64806976ab7a13f448730fd6", @@ -21485,30 +21485,30 @@ "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "87d8f3d292dd2b1b87d6bc1c2a17b9d17501583a436ae673c7c00ae9a8bfa208", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "f5022320b1f86fdeb07f6a507cfc560aa7f87cb88e36509c13edffd3f3b2986c", "T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "70b4f9ef41baaa3344606071a0c8ce23e4fb654b3bff3eb2cb7db5602aa755a5", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7c48be18c0ca8d713d87059537d0f800346694c4fa8addbef389ab2d79ea23cb", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "0f3e930b1e6f71f49f89fc31fb14114675a6778f780d5ecf615ca3462cd0c93d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "4cc65484bd801773ca9d78d6a8c8473a08dec9c423672be51955e262976306aa", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1e67c0ebbbe782a709b60fb00600574ae93c8633bf5265ead8ead8e524858d8a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "9b0316def113760816e1d0dd860b3d24e91a7ecd265b787fc22a8e544dc0887e", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1b5affdc4a3b3acfb6574ffc3a7002f3d8ec17dd8a98bb107f48e2926678e3d9", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "a81d84551ade18836ad6e966bbdaa97ca6da01f4354c3b8a17c8a2b19f2f2982", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "daaa052e8c3cc7c85f3aae3f6e26a5ca626647d3cbc9c1b7efde48469581c951", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e3f23d6eaf834a163496f0a173d20395fcc713b5fdb4b379052d2fdd0b94fce3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "ddea86de344eb0d41d50bbfd61b8188b0f2b635f0e4eaad3cd1c3b1367723556", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "0288fcbf818decdd67f328c8d1d6a663689debb7376e66f582ff3860a538498a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6714257c9f0a8664d2ef99e2159e9484e07bb60f79c3e87f34c603c03a1f1b8f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "eb900758db099b0e32e4ab2457bb36c812a23a304db037f572663b4528d70ebc", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "bebe0a07240cb7f8200e13356b415750698109c50c974d20e359e06d3802da6f", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "fc10fd5c152c993da52e7f9e4a60ea85f9b2cec51cd1d0bfd96d97ea1fa00fca", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "9a71c0bdd7b945357c22a6f8456cb53d978d09e26fcc419d583c7faca67350f3", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "4a7bad8df987f22a13031b89e60cf90b4deea803059ef236be024c949e8a180a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "de739b099b84cb9b66546eab0b53b59970bb7f47156c0b908997e321b3a4eb54", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "4d47b8b72d559fc2cdb1dbd6dc924e6ebae230f70ac856b6d6c9032439e1b46a", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4e7a883f1de45d05956903da6054a5cb59df6da9fcdfcf885527d405a1bd224d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "6ac40ef73d2efb7491d86195aea0b3c49a1c9216942c2eaf5e7ce42e7a8f107d", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "32eb2b727b2bc8518cc3282d3ad0561f2515cbeb3bce77dea1112a4ced333645", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "a4b1759464d1831a39ff16df02d8791fbc99fcb8b039a31250c0e5b989b54105", -"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "87cc2fa4e1f3beca1c130754d214f4689c3eeddea205dba6bcd5674a4f218ca7", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "fe1a282d1f033e70204824b84884092b44fffa47279748948ec7e5e11ec5fea9", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "953c21ed83347eefabc061a78e94c2f9f8d1e120804f1481f224dbace65335b2", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "08660e0374ceb457db5dada5968ad89f8b4ef8c46a47bbc6fe07ab92345f597a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a673fb75ae46fbdbcd8eca86fe1e7ab97c5582bd0e670312cc8db2cc5c4c89c4", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "91407956f28bbce33785643e5a8e85099d77a49bebd02b19025dce7155a8a4fb", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "90cdab7fc0202a3bec2946c2739baeae886be281bf559386654783971da07bac", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "ef8a64e31003e34cf0970390b276eddcb6e058e41d02354b93eb64b9117ba9ce", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "86d95ce33f3c0211c69cc482c12e33475e78a74a5c27d22546f8499854716263", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "b6f9617232e897040a6791a50559a3e731a74e90cbf3920c653fc860818bd333", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "41f33720457089a0d25804da3b4d4f2c49a484b2dc39fd331f9566dd14f00f6d", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "d1a254c19d4dd61e552070d39683f69ff45474e72d5b049fa497c48adfd19894", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "533ad346cdf110f2fc04bbcf2a7bdc793e8a47bd3aa37f47cd5684482081bd42", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "cb344ca67f1922facdeab28688ab95f2a3a10fc39d54228d0f3cc0086c086bdd", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "46f9cc7b82a7fd76d147ed591384fd94a3fb28372b85c2face30ad2b95879e3a", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f2973b8bccd1c93a30dceaeb95f82ecd9ef090ec923dfeefd7b088fabc7bd8d1", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "38d43eceb795582a90d6968981ca5322c61afd645b6f5718eae3fab2709158d6", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "912f737971c1e6131d7ce6b66c80a2fd32cda97d4c3aca4e125d570185bb7ebc", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "89c836c349c3924b880d4a95bbfa70593ba8e4ec7ae34beba667511b226ff565", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "7f7ab4070dbaefb3f6f76da2ae33c351cbc40476e976702e20be6135ba5f33aa", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "9eaf5b0b9ceed4b2cd73aed31035d6e8655cedab88cd1848f3920a9e3867bf4b", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "8d6f171b894714ff441808e88ec907c908555418a595debeae1dff696cf1b37f", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fd19afcc0cec292d8bc327339daa904d2df08054cbdd7c4284b951ac8fdb3ec5", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "54d35e479b0a224e4d74097d5e91f681f27e8d214c8ea52fdd54594397a5ee84", +"T3T1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e19f9307342b53288ffdc699b18ba2ae88a66173605c789652f5bd92f2c6d52f", "T3T1_fr_cardano-test_derivations.py::test_bad_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -21529,10 +21529,10 @@ "T3T1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "cafafedf3e3f8f44be5f2a25bade677de4f90193b76c0f345c9ffeabcda8c6f5", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "bc8cc136dbfdee105d5c6c816b1c84c976f881221cfcd277d7178aaa1d6f2ec5", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "d01f1297d0e4575dc9dc29a94c2018d0e69a9983be5b9d18fdf83c0f4bd89b3c", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "9339c33733671f2996b691a19e86dd19512b682ad18ce1bfe2f9dabcd4dc2565", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "246f979928eb540a060522c2acef2cacdb512c37156006ebed4c353abde4949d", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "818a159b75a1bfd47007b0b643a433862209f75f8e0b96f921ccbf78a82021b4", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "e64cb1030330ce7c57ccbf0d8310fb75174f6bd71a0ec1978727fab690e0a857", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "783248f9c12e9875895ac665289c51f048eb64508e3104093ff46b64f5cbf35a", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0c1ffc6630f1068a0b1fb2aceee8e36db3939cdf7b0274d3e6b74816219bcb66", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "0b5d5822eb7f5f28f6e1b2b3e6e895e9755a119bc500ed1cc1370db9ddd34c0b", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6860dd2bf19c1b1479adab501d445e0bd7283f86128a43efd4981b363da2fe11", @@ -21597,10 +21597,10 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "e2b6844d60ab805660c838607272775ec68b7d016201e6ba87e8de5c4338ceed", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "abed94637c26f35db7fc0db29b7e226e48ba08512391fa8ebff0b10863e64e61", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "e2f8bc33f283665b3d23466f17e6819e06871e56e319116472214482aa414a6b", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "59e8fd7e17193fd54e58a75e082f1bfcfd1bb74975e882ad03f322bc5861f1e6", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "76c3ebd116425531df4429860a4f1bf68821645f93a682598c8f9cbcf4d79c15", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5a54e0fcbbc6d8ca427799ef3ac2f498619dd561846089b64fa582f9ba3443fd", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "63e1435f861abb0dcf3132b6c175ec1cc817faa43891cda63c3e76506997a00d", -"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "9f5a936ab753770d3f7c747b6bc1859165f321cc39f8a1a85154941ce46fded1", +"T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ae54be1beabe16477f5db69461c418d535ba3f52f95a8bfcf14fe651f924f12a", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "5c07c52bc348b17e7170613874ff4a9299d1111ba8ba98128fa13c311ae5a2cb", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "4dee60dcc8bc0639fe7d9105bf12f1fda2d7513bd70bc17cac39399e1feb3025", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "bb0a1cb749a14ad3ad6272971d621a89168297aa1829f81e06930e6844416655", @@ -21786,12 +21786,12 @@ "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "b84739865ca17bb3ef472461af0b8b1f18af067c3b9ae1475740e20c9369f6a4", "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "b9f93b4487a50cc2c9da32b37c5441f0e6cb140865fcf1e388ece004f64ae733", "T3T1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "1ab74fa6395c24bc6231221652cec1862861b9ef28ae0022c7702e8ff4b88b7a", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "cb3196a2cc3f3e3ecfb9439ddc5afe138b336e6fe4673711c4301c040e9ed60b", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a496e8a911d4340a3dd16f71a78cbcfd6eb4b42c4ae365073a4df3fc9f663d56", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "d1b533d434a1ac1cb6435942151990909843d387bdd7b27b7b443ef93a509109", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "fd7d826b03d5654b7a2713cb3c436fd6d1271533f7068b7943b44afacf2ff4a1", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0897fcee88b3256b8fc4143a1888776511bc981262fcda24aa2288a78bf2dd04", -"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "dcbd59fe2aa4bc367df8bf062a9d4b7fe00b7d9749cc8d76fc00b56fb486539e", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "daf8f8a028f0692bbeaed2abb693ec1bb63c69fa6baa6e9718851474e7089a44", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "a955804170f7049288b5b3cfcda4e1829ad1bcf07375f557de58366b1be63ec2", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "33f229733f7b730764971c5bae5e9f2ce08bb742db6114fea46685c27c0a8c00", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "3f474085d60e4b39b7fb89f59d19b92ed044828a914b121121a0955c14abaee5", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d7cf674837429349e491b6bfd44d9885f4dabd7a971a38d18341e417f1841d47", +"T3T1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "199970eb945dfd75930e57724128e5333cf9b8e02b285da189238abaf97b2f3e", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", @@ -21928,69 +21928,69 @@ "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "6f1af5bcdb69b1785e2869383b5b8c00c927e34f9db99cf7eaae81dc89d7412a", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "cf8eed70a16404ee6cd0cebbb5415fd0a13ad47bf1ea0a31b75b27b6e4e92b44", "T3T1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "ecc8fb21a4be46de8ad9213d967f9d1b7dfdb66389b6b6397dd47293b09afe67", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "325d1521ab9fdf964ef98b1ef494f69d494474246dddc7dc1196cb3b5a2a9aa2", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "182562732e89a6e8e7c0089e3c9c9e1e42b482be8c035fdef81a05588d4bb66b", -"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "13164c99ab9e5e8c475200f8f6ac622202a5ef2ca1317f5a377941a8c822afd0", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "36f597d97e285b79e4c80a2361d1c353f1eb91479a1eb49c36c501d45d11063c", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "dd4f83de8c6acca864253d37bd448bec2f0e8517603fd7e5c526ef50b0c3e7b4", +"T3T1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "77613e2b63f4f53174a686c795552953a350d3891f91073f1040a0d2999e27c9", "T3T1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "0a0d39084bbcb9c014340f3bbae0d2f3b56607d2c71df23fb4cfa8404479d186", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2126c3ac323ba133ba610c42d6b37152a45238540d28c4588158a5464a3f911a", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0735304fe388c64ab3a3c8ddd81e565076c5639789536803426f123021ddab21", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "50abfca3382be2601b1d214cbdbc0336af39de74fde6d2d9c6489b48576bb2dc", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "13bd71028f5b53daf8f88604730de9f33f84b98421276d6ae2020ccd8980bfef", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "be2286108237e6b321e41efc2c4dcb17d7891a664f1674c99c537083d4582f93", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "8725ed753c16feedbfafaffbc2e926b838d044aab6c5908f367b71062420be2e", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c9e0e5407c7feeae3c514e1169553820ef1750834e3a407e9765f1a876c6ce75", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "245dfd00006cfc127984c46e82fa5d71f0e974ba3f871d0600b0cfb2f218dae1", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "04a1a7b08cd6fcad632f1756aba8a10d411158385ac8264819a6a311615daa13", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "48eefd9e80ea9fb774f47ebe3ec1b851c593f8b9f8faa24bffd14b5de12e482d", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1ca3508d4ea5934a1650dc96e8fa0a91a2c195b4f20559647bbeeb0e2487eef1", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "26c7f705d20e185eeb62a7cd164546957d4be8c5d97db907ad3c679dd49e4b0e", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "ec10b4369301ca4cbadf56ae9c275282d0775fd30d48df5a3073729fe902ccf1", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "66a549b16660e3b6de50c2e59d9dd3c738369d0c05d7ed2692c1184a4be1f248", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8d743263aa07046546a5de82674c2bb9ab49ca23a69dcd4c4a8ae8abc5584f33", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "94e5e0e0562fed029f0bfb05cc7eb2a88fa711bcb92b327d4d264282c90f3598", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "a1eb2fd918a660a0646b9e9dcaa1461f83635013df92a5a59f501b4242c6da19", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bc51f0439b6ad76384e234ca118a6d68de563c6d96349d988bb48ccf991a276d", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "82a8cb96948bff4bf2b2233fd4da7a284387050f686c206e24ab84419cde2958", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "aef21c93d83c27ab3d4c59262c9046165fb8c164f56a8e9e06471822f297e810", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "797a46a22b3bce89a50176ad866a528fbb81996a084fb8e0a2e609af00dea0ad", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "46cb0e86e45a518268182d0551bd12a2025fc6afeb4d89ca20a9529a2de50c57", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "5b363ca173bb4a58fee50802d45d20f11a88c09d980f7f424500541f86aebb33", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a13840f0d3a113c58d95d78d22276c8db358c6b71ed6e7e262a134500270a468", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7a10d1f898ed211c2f10002863e80b087efd22464c5c249f92a4a00e968ca3ca", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "6438b79dde6e2b111fee33dab2ecc65692b363b617e72abe3fbe7b669be9f931", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "eb5eb50e4b0b0022a682319917f79a38198a2455fd30bf2514196fa3ff74deb5", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f0b31c1ad90f5671e0ac1b28286ce12b1fdd56fcad147646f900097c06b0c447", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0cb40dea8aafa735ac5d0f028ec81d6a463baa5113ec04de34d0958b690b9487", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "fc391ecfefa74e5c2f2034cff0d20bd7a0732e7ea9b4f428757763731b700718", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "5bb09202d3b0bcf13fa3094ed876d3ec7aff6d2ec6c0675d101ca89dc792e410", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8f2cc7ade0bcbb60e358fcec03697e7a7c7e324aab7296c623b2414b05a3ac7e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "69be5ec95a9e25101d89248317d08d63a8c94cbac241e14ff5dab60cdd695bc0", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "c994728318d0a32eb549ea50ce9d443969306543b63e1939b8e3cbd3b8137678", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d65ae5de34e02c6880ed5cdf0f0821a6001305a3899bc17e4f61d2e1c238f77e", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "4cfc4b435f2b7747254409f98f275c543b93c636e67f6b37c3a9e70adb3d788f", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b61b1def80908de36d7e1d6c343001663bd406d20dcfb62fee5b14306361cff1", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "336c50d9e303356ebb8ae6cb182bc21815a987031b7870322e35803164231d8a", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9ff972a13f12934776fb2a3a6b15315851e33c06402b4da0c1dda0a7479660c8", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "05a6ac0b137db1b78810b9f7d3d738cd8f3d5336549532ee37f7e0c0d205de0f", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "6c8d3f30ae4e6c61f1616b0192fdf2d01f4e03ec1af7b54bbb8e0c002e0243a2", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c5ef1dde5086f61bcefae4da21e0a4fa3704243c2d401dd70a050ceb6733414b", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "65d1f81530eb3788ccf838c7dcd17c0f6fc1b2197968b4084cc270d1be5fc9cd", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1bf77045e6d65da395d91c899f6c3bea810eaac95e2480f5c78aad804a6259be", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "4f4d2dc6a904b25641e962f3eeb228faeafe27e296b877bcef156049d41f9325", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "59b756f042f7aa360e0b6b9dbdf41ca912fd01f55b9ee46c9390f7bdb3b5fc17", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "09ddbf75676e36b179702143c6f1796c9f3cebad6ccb3e48586bfad50c0a1cfe", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7f073737068fe3f9a612f72cf5eae83b584c6ba47d0479263cfaf24ecd900fac", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3dda559b8342a94e96e57a7f944510067017d5332655d71cec17ce484c660f8c", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "05a6ac0b137db1b78810b9f7d3d738cd8f3d5336549532ee37f7e0c0d205de0f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "88ab2ef6ee6a8aa02a26f7aba9c57b787e3291492dbe2af88f3da893cb4c1b08", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6d75db129653518b3369888b4086093b4e33e0f2ee0da7b7dc26b4af33227ba8", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fe97ff4517b27442a18e5631ad0688c89ceaf97783515546819a9051ff83e1d2", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b0d60eac68db917ffd11ce849b5380ef521a1ddad9c275199bdfc13bf5c6d9b5", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4dc51adbc1a91b02c236878f8dbdd6684768a9554c80ab2e4ff3be986fd408fa", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "c103ce305ca54e15c2eb97f4179896eb065997548bca45be9e3bb1fae77d764f", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "2c00ed0a6c03716d5c3df7ba21d9e62fcd6d1ae7a9bb86c43159ed96370088ea", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "4f8674e58aba9aa2a7141e7e4aa2c7b70cbf2298a4e2ddf4aa43ae4c1a1856ab", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "297350887d5e0a171f15255d455a02b7b814c045c0020e11a89bb2074366f2da", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "73ec9fcffa49a79ed8fade6c7ecfb852ae6c17d2859dc2ab544ee9916a5d2141", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ccb21120f5080a4ef8ba4ffb9c7412f9fee4db6fe888ea66ecaf8ec771bcf40d", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "eb2241e2818b6795d2628ff0e964fa2c55b9838b54db62965f70b1683c6cdb59", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f807ce31c3e7089de6d0d51f8712198d1323493c1f1f402050372e2d8062e1d1", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "c614826c96d99b311b17330b0b55a4e300262ceedfa9f6eaaf7d74f87fb5788b", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6eae2bf8f4478ccdf0fbfbb925b773be87044c64af295725e5c60410d47e3e63", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e9852303e5bb8bdf89842a70bcd5da74fc58aa586c193687b57529b5b10859ca", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6953ad800acd81c44193125730e3dfaf2bec7e0a3ceddb62f52003221af8a31c", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "983f65557215d7bdf345b290ff014c594a725bdcb23952cbf28166becfcb080b", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9acb89fc5971c34ad5cad4c95ebd623267b55d5e91a24e9139628813b79c2d1c", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d3f130732cd2837913cb832fc92b4c7db31942fcc85b9158121c8378ec1e3f85", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "71ee2c76b706ab5087d5796292990f1532ba752f854cb52a0fa9c246f4fbc214", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "28a14d628912e43c37cd26b9cfc5e1f3bac68a3eff1033ff5d3d0b5bdc670d59", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "16014e5c37356cff29ec121d9c1a1d0136a712e20ba7ab3e06b28babb24d0d20", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "080ff20469d654266eec22d119f0774c32262d04e4078cfe11512f838ae77a02", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2725b38012435c66a45f2085d88e31dc78b9c88d758cd21b1a421754a538bc22", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "989162276ac12b65d3548e568c14cde7e59d3923bc59ecad09e3b63f0640288b", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bc2ecd1a9a43d54902594d038a956cbffe80709ada4302a60a37df322026709f", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "800dc112ef4a3e6f6c4ffa3a22dd00454b94c20cb05c800b3290138ce8630013", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5ef77d2ccad6e968780e906afd191a68584485fe677ecea4870262834946f752", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "be360a60f4107cdec7113c768abc8f19148b859fa171059fd887561887367987", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f7dc4fc7a8e30e86a4a647b1dd53debbe90d4ad27f4866ea28ef7a215b235484", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "36e70439f852096a324127a5198d6f22fd27588df99181ec9ba3616b04f311ae", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0ee1d255cba202c089e106724293a930252ef84abb1990c260249a3b328bdcc0", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b4756695193a1502c00d78e0add614a61485c8fba37047b37a19c57e342542e7", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "93848c26516fbda44742087c0d4bbdda77de0a59d5e15fdbca9c587969cd98a9", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "aae355422f77c44667de9751491da40081b87ac0dda00d53acdbc3c35deda935", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "86452546788274496c2759f86225d2a33b0d53d6a76054cdacc7944426bba87a", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3d346cebd59afba91eb0dd03fe5ffff9b20e4a03c375bf99246b239353e7e145", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "49622c490d7f4a2e45c361b01e4158e861e2ab2bf22f040b825fb8f491512615", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cb13cbc4e960a28c1ac13f240014a3c6463cfb292d0543c2a634c1256f2389ec", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "202e5e73de82f528da179679b2bb7c80aa8333e417e0b0eda44ad2e74a0c3dc8", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "3daa711a54b41d9584fb509d13f5f497d70b978c9b544a790a979ce23c4d7fbc", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9f3033804af14d08d8c6dc67e83eac4d06990a7ecb355445fd19baa98f974ab0", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "4ada8bface13ff58c3e9e14015e55ae99759c61a45ab886959db01b2b441843e", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "2785e81f53077446341b32ffd25ea58eadc9916d0f1d8f4cd49c46f1e9b6f5ed", -"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "a44d75739b241e9dd53d4718b4a2f12874e1032a76455e09ff72e5cdb0a25294", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "44edb8fa38bce40f981785e81ae2b283e26032790fef81f035599571add45076", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "2589cde607831292dce42cccebef56929175f6d2ac63a60f881dadeadf213107", +"T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "610b739a5bd4c6b45c7ccbe3ef8ceb871f382a96e55e630a95d73d0251079c92", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a8f83783a040d5587137b34ad3a8b3c05e21bb8f8a1f0c06a1e54ebcd33edde7", @@ -22081,16 +22081,16 @@ "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "b6429d040f99e9c3432ab9cd2cf82016245f620abe8456971262525fed3f6bfe", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "54efdd2a12510752f99b16e62d7b4b06b2070b3ab8b3e44b268c8efdf136957a", "T3T1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "aa67179e047b45578be8eedbea592174a41b97726f776f801b32af1834621ea5", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "68009c4053c60589a29e5a668f1ecf17ac126c5bb2cfc22ea189f81e779710f9", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "076854bee85e44b4d171f0afcd944f5bf84a66b3589ca3cd28723aeb9265b75f", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "63ec6999f21a154c495ee8af8681d23760aa8f100d86c35b174c8795a61d0316", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "4b88c725449f180d1e27f5aa4ce2a86023464193502a43c7c12416b6b1f83a9e", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "e5ea4b8c1475bd3c85cefe90bf88fb4976c6c7a5b572eec493e2add33c065282", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "12f2d7e33fcd21e9d661cb0313dc28c79dff6e56f31cf9675b8e374a9e66feb8", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "3cdd4a474a4d2486766e740d211f856c87a0e3ccf0260eee345647222703c1f1", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "03c2068fd3db7efe82927834913f3aebedd1f2dc77256a1d9961b0cfaffe8044", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "b10aed13763af4b3496b21db23cdbf63a24a9955457ce30a74bb10ad68bc76a9", -"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "0e31fecc0e54f6144fa4e23e5875d60d37a6c5cc508d0add9cf52d26c687adc0", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3d655df6ba8e084358099a6c3ef55c62a0ce582f282e8f7cee0680c0ba585b5a", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "7a0e953c1ba21253a2099aaaa9c2063fa3dab23856fcaea496d95fc34afb06a6", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "6d6a2f4f7233c83c44ef7c64fa1e2fd18cf25d2bbc079238e035ced46076b38e", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "e6b598dc6fdaff0345f340dc560f52c3966d82b8c720326bf4af5701eaef79c9", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "474d9fb366e5308600e22d2633f1b1dd35c76239d8e111d57ac949fde36ddefd", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e0d9e08284fadeff913bd92ac5ebd0e7e3bbbb31d388b7d59fa5afe53a11363e", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "f9b4a5068553ee2954beb6334442e2b9f93f8f2e3163c193c48fa7aee2b94c81", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "d38c9245d3289e1fd6aac6b2f39f6978d3c4c73b75b2685d353307cc5e889242", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "5520121fe6f7e8b0453fe6ef52b96273ebea3dc0908e359f03b1908ece1b41f8", +"T3T1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "09ea826194daf139e9b228f95f993f636589d28990cbb9f5fa49ecec92e494b9", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "fcdbf6127bb5160d0e6a74e08b6c16de19b8c5496577057d189d7ab563808344", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "b47c50aabf68c2a4a498e3546327e3030d799d568df8c0b6d6590ed691c94bd7", "T3T1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "bad58925a6f2c9f800c90db2099908ad1fc97d42b928e2535cc29de144c000ee", @@ -22126,22 +22126,22 @@ "T3T1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", "T3T1_fr_test_authenticate_device.py::test_authenticate_device[]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", "T3T1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "24fa1cde5cd288226f0c96f133f3fc44afd56cd64947ff5b7f749d62dfa7270e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "cf898265dbce54aa24499476eb5a3401719458e629d1db3f297899d88a4bb94b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay": "8a7bd928fbe19145d2c54a3e587409de03c841a751613522f66023f4a7889b02", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0673f2bbfe4198c0c33fe5be322add496b2076e3a410675ac45966614e55508b", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "64b37a599188471bf57b5f8cae2e7ec63caa7bef05d3a4a921e4f9daf90fca7c", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "2d1ff80b9e326cdc940f135455608d9225410c42f1070c150a62f98ce9836a7e", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "178aa260ab48ba1f5d43a2d6c05d245c73f46324525342abe2803bf3db5ff4fe", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8eb7b7affc9cca802c9b9ac10b0025b6df24c552756321c1df4d25228f255b5f", -"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "b9500df75f346ee4e43aca6dcc5febade476b5dd02d33d58071bc1fd39f5597e", -"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "c1e4b62b5dabbee7a91b3006ba5e8d7d7a3dceda8b8b8e4af3fb47df04fc0413", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "253ba5c2538e21f37c5452f8001cb08ab1d10f8a256af12491b3a2d403c20845", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d52a4cf34b0f88378756128e9ea7da1826eaa02cfbced41af9ed5e3e0c70d68b", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "365c7528b3143c76c2edad56984aaf329ca5eae1a729a7bb36363ad8ff2c2fda", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "696c55820376ea8d6030144749e3e4479927c8f72cd4508b19ef04da873b5ab2", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "3c39c3dc69db2e3b3b61445296e190e131e7b9ed68e4c9f40c6c11718abcb803", +"T3T1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7187bad56eb45b7282469224be8dd40203586da088f6cb78bca66b71af47d35c", +"T3T1_fr_test_autolock.py::test_autolock_cancels_ui": "072288cad9dec0589a478b78adc8aac507f7d1b715ac9aa0b85930b80183966e", "T3T1_fr_test_autolock.py::test_autolock_default_value": "29109b5da7d1d5a13cac36a949cd9ef556b533a8b10eebb82de967b2112a5436", -"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "881ac763bced5c72fb61eafcdd466775dce9f3142361ad29c1356d8073639990", -"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "881ac763bced5c72fb61eafcdd466775dce9f3142361ad29c1356d8073639990", +"T3T1_fr_test_autolock.py::test_autolock_ignores_getaddress": "c3db568b6355dee64cf65fd3348bf10f327ef349a4a1f55aa0a2ef8c2cafa485", +"T3T1_fr_test_autolock.py::test_autolock_ignores_initialize": "c3db568b6355dee64cf65fd3348bf10f327ef349a4a1f55aa0a2ef8c2cafa485", "T3T1_fr_test_basic.py::test_capabilities": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_basic.py::test_device_id_different": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_basic.py::test_device_id_same": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22179,7 +22179,7 @@ "T3T1_fr_test_language.py::test_switch_from_english_not_silent": "47fbdddc9ff72993ca233157267b68c559c24e548416c48a9bba61090da5f65c", "T3T1_fr_test_language.py::test_switch_language": "88adb4c2afed0b03225a3e49e1d969e71c29e98835cb74e04ca8fa3321545114", "T3T1_fr_test_language.py::test_translations_renders_on_screen": "d1016fe16f7e5ea64e9d72747c9bc44be132a2556d7884623cc451b1e5473900", -"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "263d4108bf32c391fba7163e1978508b8223f06ee15c13255e3a6cbafeec979c", +"T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "7bb533b5d0a27f7387b047e737e5e32d9d73f423a205253e56642c8e54732039", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", @@ -22190,14 +22190,14 @@ "T3T1_fr_test_msg_applysettings.py::test_experimental_features": "f75dfd9615a8f63074bd256d9452dd9c5f3db9aee5b0ae0d232c1d370d2f672d", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "e5db2bff6610a705f5989bcb9ac7b687732447e5903fdb1a04d92478bc086183", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2d74d5b6a54b2476e051418575a498f23e6332abc123e61440f7eba285ff81c2", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ffeaa268c258b4b970d991a245bd96309047c78dab3630ee3c649ca8ee338946", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "156bbe7d33c49bc0219a4861f372babb9ba5732f357554d8f694a2847ea27d8e", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "255f286400ec521caf9401a7638af49804c07765b1f49b320bae202af0695a35", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "455a7013b4080dc4878078e4b00a8dbe4b7d311ffac8e1ece7ae755e461d5b1f", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "fe405518c2224d1e6924441fa5b0d56b978f478d782736e6ad2ccddd64011a93", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "01f35f2a321ffc9b58c3d892189802c2365d97d91ec21783136577796d2f6199", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "ae9555e32655e2424427a506b74907816b0e4abe3ae33884ed1fbd415ab463c7", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "3d31a041c69582fedf69fda5677afbfe16b0380aa5e52e410fe02262e0e046a9", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ae753648fcb4f898ea88b83447a154d3fb6ba927a607d12867586882c671fc8a", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "a33cd152e6a582056c21b1f90c54bd9d6baeab1da8aee2c7a3d47aa1d12dd48d", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "ca28514e9337fc3f46a58a920920b321066f615c7cba1ae7fc547d1437bd02c5", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "f9c6c6c989bd6cd567fc7fe29ad1c4d420a137832e27b9d0cf4947918c6bc9c7", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1fb2ab98ada3d268a24842c4db1dbde07dcc83efcc0e21e329ee6ea30f938189", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "144f3ce0b7f2a24a4b45d3d6673fdb7ccc66555e25d0c82368a4be68b44f84a9", "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", "T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", @@ -22213,23 +22213,23 @@ "T3T1_fr_test_msg_changepin_t2.py::test_set_failed": "41af53080a9c6b57e4c3b0e9e1c8e75d7122d335be770939602cfb7c2e9868a9", "T3T1_fr_test_msg_changepin_t2.py::test_set_pin": "8deb5558089d7a8e13af17f2f4c3878d5791dbec7e5cf1329c93f7f2571e41c0", "T3T1_fr_test_msg_loaddevice.py::test_load_device_1": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "930976396476ca121ad5e7c4c3344fd952635d7c0836d36b5fe8f2a2d4bf7bad", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_2": "c8242753a933ca32221d0d81e8444a868e68c9205cfb539760b83295e944c32e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", "T3T1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "766e62046497e27920fe887e7936d69908aa0c5332d50c378a468580ec306a4e", -"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "64760e649f45ed08e79fff2f404c4124923962757a617769d58b5673469379cf", +"T3T1_fr_test_msg_loaddevice.py::test_load_device_utf": "e974a55e5cd1533a438ab6b4c500cecf699f4582f15b0bbb6ced84ce19f5ed82", "T3T1_fr_test_msg_ping.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "248d3bd2c671109278f0c75e7986a20f58bc04f72ae39b855f000b11ece6d781", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "af9bd20cea2fd6e75d55a1b3ac918f7418dac77c4bf6a768611579becc71cd17", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "41ea5e6c2b26c9937792cb2cdfbad74286d740fd523bb7d07305566bcd167935", "T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "204db8befa27a853788bcd7ae567b83b7d277506057a1bad5abb925849f7df29", "T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "eec46a6bd76f0b408d9d59291f01316d32041cd6c1c37dc89914b641e7cbf3c7", -"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "3738505cc3fc5b395bc652371875bc2274f6a9a65143d031450e01ec5ec82aeb", +"T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "06456c05df3aee6226fbbe776d4db63eabdd553241185869396024ec4fae7c52", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "bd195bb47315721defc944f1a2fbc51ab1a2a26855c0fc5af452cb9f93556f57", -"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "bd195bb47315721defc944f1a2fbc51ab1a2a26855c0fc5af452cb9f93556f57", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "8f8e76c0c002c2e1a10d123bb3ededfa42a7dae66b00e8bf1000cb8121c21e56", -"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "8f8e76c0c002c2e1a10d123bb3ededfa42a7dae66b00e8bf1000cb8121c21e56", -"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "8f8e76c0c002c2e1a10d123bb3ededfa42a7dae66b00e8bf1000cb8121c21e56", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2807886270191466d7c47e855760dbb4d96a09009e42031fdf60c9b6fcb16df1", +"T3T1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "2807886270191466d7c47e855760dbb4d96a09009e42031fdf60c9b6fcb16df1", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "df03d7f892f794cd26891155597faee862aaa1ff0e0c59b6f3b39541bab72754", +"T3T1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "df03d7f892f794cd26891155597faee862aaa1ff0e0c59b6f3b39541bab72754", +"T3T1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "df03d7f892f794cd26891155597faee862aaa1ff0e0c59b6f3b39541bab72754", "T3T1_fr_test_pin.py::test_correct_pin": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_pin.py::test_exponential_backoff_t2": "6a4db222948a30f8babbb2233df1afb45700e388be00bd28269d88c54923bd21", "T3T1_fr_test_pin.py::test_incorrect_pin_t2": "dc48fcbd7246036f8f262e30ed63b0c70eb08dfc0197cf00ab2c29ec1d0bf2e5", @@ -22249,10 +22249,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "41aff29e00f12334bc5f4404403a86399c0bc3f3c7aa36619d13247918280d8e", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c7fb9d00a7a5519c050401b6b1181aafb2cee07aac911a1f69ca19bf4926bf45", "T3T1_fr_test_protection_levels.py::test_wipe_device": "53279b977255d6d8874a592a5241f6a113e96442f871e96522ed8bf12fb05586", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "1e0c234c14d92832ba9ec39bc644034f9ef062a748a9587ee55701cdd5f85e8b", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "c857cceaebc7a6c801a6e99b2a71cae19c31891746642c5794fc033548c39798", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f49ab06659cb7af2b5da0476cfb2d5885edbd960ddcf138d96f8c20f7c59686b", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "65d1a06163c4a752aca9976cdc02e36f37079fb6f2a884427940c81fe0ee3752", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "59ed7c24ccf9b68461b45536b00462d9e4ac9d0ca653b8f411ab42937035ded6", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "dfd2eb0d986d42da07019c555ff8467a365701122e5edf7950412d7202461367", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "339133e9ae4e411c8d7c86e28e1292828fb98663f81df02a2619855d61ba2c37", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "3eeaa5a884fb33b97b19ca15a9911b876aa8ef4e9dcbbe368a96f0ac3a3f521b", "T3T1_fr_test_sdcard.py::test_sd_format": "d47e1612b47b28186d3517ccc686a4ddd4b60557c41446373e3f0f97f93d0105", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4ebf7f7adc1ba12f1977c97573f1489ec6d58b8e71d67213d521f1c790d4fabf", @@ -22262,23 +22262,23 @@ "T3T1_fr_test_session.py::test_derive_cardano_running_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_end_session": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_end_session_only_current": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_test_session.py::test_session_recycling": "8f8e76c0c002c2e1a10d123bb3ededfa42a7dae66b00e8bf1000cb8121c21e56", -"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "643677f155243cde93cebb6e8bdafdcf3697968de70413b6f3b6d809b6e1e1ea", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "3d32a35115088aba5ddf7d7f67740b0b0c5d88ab72c9c5dcde1cdacfdbf63b17", -"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "3b3820ac53cd7fd7af513486060d6de492b963010cb64ed32e8f53c5242844fe", -"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "a74992fc3d4750ac50fcede8466510dec1d2a14a3689ce787704148ad2f16e9f", +"T3T1_fr_test_session.py::test_session_recycling": "df03d7f892f794cd26891155597faee862aaa1ff0e0c59b6f3b39541bab72754", +"T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "94783bc3a1dcedfbb006658a14148926c0b7937d4f92d7ca1c1347529884c51a", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "a050bcf376e8e2303c8ead14b48275ca81be56e379884059a270b7633ce813af", +"T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "c9b64d97897a9f6fa67f7381cdc75762ee9c064b80b9eb7dae8a38aa57d6d716", +"T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "72fdb966113a5ad4adc79bf3cde215b1fb204b3c2f7855499f3aa37e322cd01f", "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "e126bcddda7ce30f8f5a15bb717b6b841f64a976f96f747b51ada2c2e68d60ce", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "db8ac687f06daef0aa7e3b075041eca6060d377ad3ff1aaf0e87d58909de87e3", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "d5027c8bc7000f899d36345064e84edf0409ce563b0f4a30a966caae2868d280", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "a6ae19bbae8c88f3c2561d3c85000d8cdfd50e3fc56a37dbabcd86a7da951266", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "214b82c8a28cee35c905b4f13c7e6c1b886c072ae29c20d7ecb7cc91d126764d", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "e12e826422f3ed0cbca996e5d07ec6c4bbede35ea61a83d740e5b2f86a6696fd", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "881fb4850bcc869488c6cf258fdf32f6d4435f4154c130e87e10b7d4695818bd", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "88178e46da8faf68fdcc028a626494f8fa6987c649b2a166f6920ba3b6e288f0", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "fd4a57aba6ab7786199ca6edf6fee9c247f6324ef8b76059d36433b3daa4b70f", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ec2caffc016d8c0cc628a4039774779149406552f38baa3230ca674766e18469", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "73959134ab8f750768060a39c13a1fbd5995b9e69c4d63dcb910a4e23f704434", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "bb8eb4722bd54462c986f19b71e20641af0c619b9f0d0cd34deb0405bbc078d8", -"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "3620d2c0663eac0db332e57b7403707cdb696d33a1fca6265807bbeccdde21fc", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "5ab9e6a49f5a705cf8f08726f8bb5488ad72cd55bf5c03576df7cc1e7076b7ff", +"T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "8ee92eb70e2f5253e2ab2925e9086b8ebfddb7bb37043abe55ba12f0a6beaec1", "T3T1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "4ddd2ef98a581a629d826d998595b73b08b7d07e73744d63a25e82d97c8155c2", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "471590f3840e6cdaba53302760ecd23ffdfd1399a0dcbb5e20a242fbf17d0a05", From 5188dfc83d568d058c6371763142142b5422cc05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 9 Jul 2024 11:28:21 +0200 Subject: [PATCH 469/626] feat(core): deal with non-breaking spaces [no changelog] --- .../src/translations/generated/translated_string.rs.mako | 3 ++- core/embed/rust/src/ui/display/font.rs | 6 ++++++ tests/translations.py | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/embed/rust/src/translations/generated/translated_string.rs.mako b/core/embed/rust/src/translations/generated/translated_string.rs.mako index 3147724698..9ecc94fbcf 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs.mako +++ b/core/embed/rust/src/translations/generated/translated_string.rs.mako @@ -5,6 +5,7 @@ #![cfg_attr(rustfmt, rustfmt_skip)] <% import json +import re ALTCOIN_PREFIXES = ( "binance", @@ -55,7 +56,7 @@ impl TranslatedString { %if any(name.startswith(prefix + "__") for prefix in ALTCOIN_PREFIXES): #[cfg(feature = "universal_fw")] %endif - Self::${name} => ${json.dumps(en_data.get(name, '""'))}, + Self::${name} => ${re.sub(r'\\u([0-9a-f]{4})', r'\\u{\g<1>}', json.dumps(en_data.get(name, '""')))}, % endfor } } diff --git a/core/embed/rust/src/ui/display/font.rs b/core/embed/rust/src/ui/display/font.rs index 2814f7fa38..fd410a43bf 100644 --- a/core/embed/rust/src/ui/display/font.rs +++ b/core/embed/rust/src/ui/display/font.rs @@ -285,6 +285,12 @@ impl Font { } pub fn get_glyph(self, ch: char) -> Glyph { + /* have the non-breaking space counted for width but not counted as a + * breaking point */ + let ch = match ch { + '\u{00a0}' => '\u{0020}', + c => c, + }; let gl_data = display::get_char_glyph(ch as u16, self.into()); ensure!(!gl_data.is_null(), "Failed to load glyph"); diff --git a/tests/translations.py b/tests/translations.py index 3be33e88e8..48e0ca9a38 100644 --- a/tests/translations.py +++ b/tests/translations.py @@ -107,7 +107,7 @@ def _resolve_path_to_texts( if lower: texts = [t.lower() for t in texts] - texts = [t.strip() for t in texts] + texts = [t.replace("\xa0", " ").strip() for t in texts] return texts From 4afaf4c41e54be76697a470e31859a7767ecd42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 18 Jul 2024 13:49:50 +0200 Subject: [PATCH 470/626] Revert "fix(core/translations): remove unbreakable spaces for now" This reverts commit cca066c4768e68acb29bdccb8cf1623cffc665f6. [no changelog] --- core/translations/cs.json | 32 +++++++++++++++---------------- core/translations/de.json | 8 ++++---- core/translations/es.json | 10 +++++----- core/translations/fr.json | 26 ++++++++++++------------- core/translations/signatures.json | 6 +++--- tests/ui_tests/fixtures.json | 4 ++-- 6 files changed, 43 insertions(+), 43 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 02bf13a473..a122c18fc1 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -50,7 +50,7 @@ "address__title_cosigner": "Další podepisující", "address__title_receive_address": "Přijímací adresa", "address__title_yours": "Vaše", - "address_details__account_info": "Informace o účtu", + "address_details__account_info": "Informace o účtu", "address_details__derivation_path": "Derivační cesta", "address_details__derivation_path_colon": "Derivační cesta:", "address_details__title_receive_address": "Přijímací adresa", @@ -62,8 +62,8 @@ "auto_lock__turned_on": "Automatické uzamčení zapnuto", "backup__can_back_up_anytime": "Svůj Trezor můžete kdykoli zálohovat.", "backup__create_backup_to_prevent_loss": "Vytvořte si zálohu, abyste neztratili přístup ke svým prostředkům.", - "backup__info_multi_share_backup": "Záloha peněženky obsahuje několik seznamů slov v určitém pořadí (části).", - "backup__info_single_share_backup": "Záloha peněženky obsahuje slova ({0}) v určitém pořadí.", + "backup__info_multi_share_backup": "Záloha peněženky obsahuje několik seznamů slov v určitém pořadí (části).", + "backup__info_single_share_backup": "Záloha peněženky obsahuje slova ({0}) v určitém pořadí.", "backup__it_should_be_backed_up": "Novou peněženku byste si měli ihned zálohovat.", "backup__it_should_be_backed_up_now": "Měli byste ji hned zálohovat!", "backup__new_wallet_created": "Peněženka byla vytvořena.\n", @@ -278,7 +278,7 @@ "confirm_total__fee_rate": "Výše poplatku", "confirm_total__fee_rate_colon": "Výše poplatku:", "confirm_total__sending_from_account": "Odeslání z účtu:", - "confirm_total__title_fee": "Info o poplatcích", + "confirm_total__title_fee": "Info o poplatcích", "confirm_total__title_sending_from": "Odeslání z", "debug__loading_seed": "Načítání seedu", "debug__loading_seed_not_recommended": "Nedoporučujeme načítat soukromý seed.", @@ -410,7 +410,7 @@ "inputs__show": "ZOBRAZIT", "inputs__space": "ROZDĚLENÍ", "instructions__continue_holding": "Stále\ndržte", - "instructions__continue_in_app": "Pokračujte v aplikaci", + "instructions__continue_in_app": "Pokračujte v aplikaci", "instructions__enter_next_share": "Zadejte další část", "instructions__hold_to_confirm": "Držením potvrďte", "instructions__hold_to_continue": "Držením pokračujte", @@ -533,7 +533,7 @@ "passphrase__turn_off": "Vypnout ochranu s passphrase?", "passphrase__turn_on": "Zapnout ochranu s passphrase?", "pin__cancel_description": "Pokračovat bez PIN kódu", - "pin__cancel_info": "Bez PIN kódu může k tomuto zařízení přistupovat kdokoli.", + "pin__cancel_info": "Bez PIN kódu může k tomuto zařízení přistupovat kdokoli.", "pin__cancel_setup": "Zrušit nastavení PIN kódu", "pin__change": "Změnit PIN?", "pin__changed": "PIN byl změněn.", @@ -590,10 +590,10 @@ "recovery__dry_run_bip39_valid_match": "Zadaná záloha peněženky je platná a shoduje se se zálohou v zařízení.", "recovery__dry_run_bip39_valid_mismatch": "Zadaná záloha je platná, ale neshoduje se se zálohou v zařízení.", "recovery__dry_run_invalid_backup_entered": "Zadali jste neplatnou zálohu peněženky", - "recovery__dry_run_slip39_valid_all_shares": "Všechny části jsou platné a patří k záloze v zařízení", + "recovery__dry_run_slip39_valid_all_shares": "Všechny části jsou platné a patří k záloze v zařízení", "recovery__dry_run_slip39_valid_match": "Zadané části zálohy jsou platné a odpovídají tomu, co je aktuálně v zařízení.", "recovery__dry_run_slip39_valid_mismatch": "Zadané části zálohy jsou platné, ale neodpovídají tomu, co je aktuálně v zařízení.", - "recovery__dry_run_slip39_valid_share": "Zadaná část je platná a patří k záloze v zařízení", + "recovery__dry_run_slip39_valid_share": "Zadaná část je platná a patří k záloze v zařízení", "recovery__dry_run_verify_remaining_shares": "Ověřit zbývající části zálohy?", "recovery__enter_any_share": "Zadejte libovolnou část", "recovery__enter_backup": "Zadejte zálohu.", @@ -602,7 +602,7 @@ "recovery__enter_share_from_diff_group": "Zadejte část z jiné skupiny.", "recovery__group_num_template": "Skupina {0}", "recovery__group_threshold_reached": "Dosaženo počtu částí zálohy skupiny.", - "recovery__info_about_disconnect": "Během obnovování peněženky můžete odpojit Trezor a pokračovat později.", + "recovery__info_about_disconnect": "Během obnovování peněženky můžete odpojit Trezor a pokračovat později.", "recovery__invalid_share_entered": "Zadali jste neplatnou část zálohy.", "recovery__invalid_wallet_backup_entered": "Zadali jste neplatnou zálohu.", "recovery__more_shares_needed": "Je potřeba více částí", @@ -611,7 +611,7 @@ "recovery__progress_will_be_lost": "Veškerý postup bude ztracen.", "recovery__share_already_entered": "Část jste již zadali", "recovery__share_does_not_match": "Část se neshoduje", - "recovery__share_from_another_multi_share_backup": "Zadali jste část z jiné zálohy.", + "recovery__share_from_another_multi_share_backup": "Zadali jste část z jiné zálohy.", "recovery__share_num_template": "Část {0}", "recovery__title": "Obnovit peněženku", "recovery__title_cancel_dry_run": "Zruš. kontr. zálohy", @@ -666,7 +666,7 @@ "reset__num_of_shares_advanced_info_template": "Každá část zálohy je sekvence {0} slov. Dále zvolíte počet částí pro obnovu potřebných k vytvoření skupiny {1}.", "reset__num_of_shares_basic_info_template": "Každá část zálohy je sekvence {0} slov. Dále zvolíte, kolik částí potřebujete k obnovení peněženky.", "reset__num_of_shares_how_many": "Kolik částí zálohy peněženky chcete vytvořit?", - "reset__num_of_shares_long_info_template": "Každá část zálohy je sekvence {0} slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", + "reset__num_of_shares_long_info_template": "Každá část zálohy je sekvence {0} slov. Každý seznam slov si uložte na jiné, bezpečné místo nebo ho sdělte někomu, komu důvěřujete. Poté je použijte v případě potřeby obnovení peněženky.", "reset__num_shares_for_group_template": "Potřebný počet částí k vytvoření skupiny {0}.", "reset__number_of_shares_info": "= počet seznamů jedinečných slov u zálohy peněženky.", "reset__one_share": "1 část", @@ -676,7 +676,7 @@ "reset__repeat_for_all_shares": "Zopakujte to pro všechny díly.", "reset__required_number_of_groups": "Požadovaný počet skupin pro obnovení.", "reset__select_correct_word": "Pro každou pozici vyberte správné slovo.", - "reset__select_threshold": "Vyberte minimální počet částí potřebných k obnovení peněženky.", + "reset__select_threshold": "Vyberte minimální počet částí potřebných k obnovení peněženky.", "reset__select_word_template": "Vybrat slovo {0}", "reset__select_word_x_of_y_template": "Vyb. slovo {0} z {1}:", "reset__set_it_to_count_template": "Nastavte {0} a budete potřebovat ", @@ -880,13 +880,13 @@ "tezos__submit_ballot": "Odeslat hlas", "tezos__submit_proposal": "Odeslat návrh", "tezos__submit_proposals": "Odeslat návrhy", - "tutorial__continue": "Pokračovat v tutoriálu", + "tutorial__continue": "Pokračovat v tutoriálu", "tutorial__did_you_know": "Věděli jste, že...", "tutorial__exit": "Ukončit tutoriál", "tutorial__first_wallet": "Trezor Model One, vyrobený v roce 2013,\nbyl první hardwarovou peněženkou na světě?", "tutorial__get_started": "Jdeme na to!", "tutorial__lets_begin": "Snadno se naučte používat toto zařízení.", - "tutorial__menu": "Nabídka obsahuje kontextové akce a možnosti.", + "tutorial__menu": "Nabídka obsahuje kontextové akce a možnosti.", "tutorial__middle_click": "Stiskněte současně levé i pravé tlačítko\npro potvrzení.", "tutorial__press_and_hold": "Podržením pravého tlačítka\nschválíte důležité operace.", "tutorial__ready_to_use": "Nyní můžete\npoužívat Trezor.", @@ -894,7 +894,7 @@ "tutorial__restart_tutorial": "Restartovat tutoriál", "tutorial__scroll_down": "Když se text nevejde na jednu obrazovku, pravým tlačítkem posunete text dolů.\n\rLevým tlačítkem se posunete nahoru.", "tutorial__sure_you_want_skip": "Opravdu chcete\npřeskočit tutoriál?", - "tutorial__swipe_up_and_down": "Přejetím prstem nahoru/dolů\nprocházíte mezi obrazovkami.", + "tutorial__swipe_up_and_down": "Přejetím prstem nahoru a dolů procházíte mezi obrazovkami.", "tutorial__title_easy_navigation": "Základní navigace", "tutorial__title_handy_menu": "Praktická nabídka", "tutorial__title_hello": "Dobrý den", @@ -941,7 +941,7 @@ "words__array_of": "Pole", "words__blockhash": "Blockhash", "words__buying": "Nákup", - "words__cancel_and_exit": "Zrušit a ukončit", + "words__cancel_and_exit": "Zrušit a ukončit", "words__confirm": "Potvrdit", "words__confirm_fee": "Potvrdit poplatek", "words__contains": "Obsahuje", diff --git a/core/translations/de.json b/core/translations/de.json index 08e74d81a4..a7d608f008 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -42,7 +42,7 @@ "addr_mismatch__support_url": "trezor.io/support", "addr_mismatch__wrong_derivation_path": "Ableitungspfad für gewähltes Konto falsch.", "addr_mismatch__xpub_mismatch": "XPUB passt nicht?", - "address__cancel_contact_support": "Wenn die Empfängeradresse nicht übereinstimmt, dann wende dich bitte unter trezor.io/support an den Trezor Support.", + "address__cancel_contact_support": "Wenn die Empfängeradresse nicht übereinstimmt, dann wende dich bitte unter trezor.io/support an den Trezor Support.", "address__cancel_receive": "Empfang abbrechen", "address__confirmed": "Empfängeradresse bestätigt", "address__public_key": "Public Key", @@ -594,7 +594,7 @@ "recovery__dry_run_slip39_valid_match": "Eingegebene Recovery Shares sind gültig und passen zu denen auf dem Gerät.", "recovery__dry_run_slip39_valid_mismatch": "Eingegebene Recovery Shares sind gültig, passen aber nicht zum Geräteinhalt.", "recovery__dry_run_slip39_valid_share": "Der eingegebene Share ist gültig und gehört zu dem Backup auf dem Gerät.", - "recovery__dry_run_verify_remaining_shares": "Verbleibende Recovery Shares überprüfen?", + "recovery__dry_run_verify_remaining_shares": "Verbleibende Recovery Shares überprüfen?", "recovery__enter_any_share": "Share eingeben", "recovery__enter_backup": "Gib dein Backup ein.", "recovery__enter_different_share": "Gib einen anderen Share ein.", @@ -666,7 +666,7 @@ "reset__num_of_shares_advanced_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Wähle jetzt die Schwelle für die Anzahl der Shares zur Bildung von Gruppe {1}.", "reset__num_of_shares_basic_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Wähle, wie viele Shares du zur Wallet-Wiederherstell. benötigst.", "reset__num_of_shares_how_many": "Wie viele Wallet-Backup-Shares möchtest du erstellen?", - "reset__num_of_shares_long_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", + "reset__num_of_shares_long_info_template": "Jeder Recovery Share besteht aus {0} Wörtern. Speichere jede Wortliste an einem anderen, sicheren Ort oder teile sie mit vertrauenswürdigen Personen. Nutze sie je nach Bedarf, um dein Wallet wiederherzustellen.", "reset__num_shares_for_group_template": "Die erforderliche Anzahl an Shares zur Bildung der Gruppe {0}.", "reset__number_of_shares_info": "= Gesamtzahl eindeutiger Wortlisten für Wallet-Backup.", "reset__one_share": "1 Share", @@ -907,7 +907,7 @@ "tutorial__title_well_done": "Gut gemacht!", "tutorial__use_trezor": "Verwende Trezor durch\ndrücken der linken und rechten Tasten.\n\rWeiter rechts.", "tutorial__welcome_press_right": "Willkommen bei Trezor. Drücke rechts, um fortzufahren.", - "tutorial__welcome_safe5": "Willkommen bei Trezor Safe 5.", + "tutorial__welcome_safe5": "Willkommen bei Trezor Safe 5.", "u2f__get": "U2F-Zähler erhöhen und abrufen?", "u2f__set_template": "U2F-Zähler auf {0} setzen?", "u2f__title_get": "U2F-zähler erhalten", diff --git a/core/translations/es.json b/core/translations/es.json index 97a3d1a3cd..2cc75cae2f 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -417,8 +417,8 @@ "instructions__hold_to_exit_tutorial": "Pulsa para salir del tutorial", "instructions__hold_to_sign": "Pulsa para firmar", "instructions__learn_more": "Más información", - "instructions__shares_continue_with_x_template": "Continuar con el rec. n.º {0}", - "instructions__shares_start_with_1": "Empezar con el rec. n.º 1", + "instructions__shares_continue_with_x_template": "Continuar con el rec. n.º {0}", + "instructions__shares_start_with_1": "Empezar con el rec. n.º 1", "instructions__swipe_up": "Desliza hacia arriba", "instructions__tap_to_confirm": "Toca para confirmar", "instructions__tap_to_start": "Toca para empezar", @@ -589,7 +589,7 @@ "recovery__dry_run_backup_not_on_this_device": "La copia de seguridad del monedero no está en este dispositivo", "recovery__dry_run_bip39_valid_match": "La copia de seguridad del monedero indicada es válida y coincide con la del dispositivo.", "recovery__dry_run_bip39_valid_mismatch": "La semilla de recuperación es válida, pero no coincide con la del dispositivo.", - "recovery__dry_run_invalid_backup_entered": "Se ha introducido una copia de seguridad del monedero no válida", + "recovery__dry_run_invalid_backup_entered": "Se ha introducido una copia de seguridad del monedero no válida", "recovery__dry_run_slip39_valid_all_shares": "Todos los recursos compartidos son válidos y pertenecen a la copia de seguridad del dispositivo", "recovery__dry_run_slip39_valid_match": "Recursos compartidos válidos; coinciden con el dispositivo.", "recovery__dry_run_slip39_valid_mismatch": "Recursos compartidos válidos; no coinciden con el dispositivo.", @@ -680,8 +680,8 @@ "reset__select_word_template": "Usar {0} palabra", "reset__select_word_x_of_y_template": "Palabra {0} de {1}:", "reset__set_it_to_count_template": "Ajústalo en {0} y necesitarás ", - "reset__share_checked_successfully_template": "Se ha verificado el recurso n.º {0}.", - "reset__share_completed_template": "Se ha completado el recurso n.º {0}", + "reset__share_checked_successfully_template": "Se ha verificado el recurso n.º {0}.", + "reset__share_completed_template": "Se ha completado el recurso n.º {0}", "reset__share_words_title": "C. seg. estándar", "reset__slip39_checklist_num_groups": "Número de grupos", "reset__slip39_checklist_num_groups_x_template": "Número de grupos: {0}", diff --git a/core/translations/fr.json b/core/translations/fr.json index 531d065a78..536eb6ca20 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -52,12 +52,12 @@ "address__title_yours": "La vôtre", "address_details__account_info": "Infos sur le compte", "address_details__derivation_path": "Chemin de dérivation", - "address_details__derivation_path_colon": "Chemin de dérivation :", + "address_details__derivation_path_colon": "Chemin de dérivation :", "address_details__title_receive_address": "Adr. de récep.", "address_details__title_receiving_to": "Récep. sur", "authenticate__confirm_template": "Autoriser l'ord. connecté à conf. que votre {0} est auth. ?", "authenticate__header": "Authentifier le disp.", - "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d'inactivité ?", + "auto_lock__change_template": "Verr. automatiquement Trezor après {0} d'inactivité ?", "auto_lock__title": "Délai de ver. auto", "auto_lock__turned_on": "Verrouillage automatique activé", "backup__can_back_up_anytime": "Vous pouvez sauv. Trezor une fois, à tout moment.", @@ -276,7 +276,7 @@ "coinjoin__title_progress": "Coinjoin en cours", "coinjoin__waiting_for_others": "En attente des autres", "confirm_total__fee_rate": "Taux des frais", - "confirm_total__fee_rate_colon": "Taux des frais :", + "confirm_total__fee_rate_colon": "Taux des frais :", "confirm_total__sending_from_account": "Compte d'envoi :", "confirm_total__title_fee": "Infos sur les frais", "confirm_total__title_sending_from": "Envoi depuis", @@ -384,8 +384,8 @@ "fido__wanna_erase_credentials": "Voulez-vous vraiment effacer tous les id ?", "firmware_update__title": "Maj logiciel", "firmware_update__title_fingerprint": "Empreinte fw", - "haptic_feedback__disable": "Désactiver le retour haptique ?", - "haptic_feedback__enable": "Activer le retour haptique ?", + "haptic_feedback__disable": "Désactiver le retour haptique ?", + "haptic_feedback__enable": "Activer le retour haptique ?", "haptic_feedback__subtitle": "Définir", "haptic_feedback__title": "Retour haptique", "homescreen__click_to_connect": "Se connecter", @@ -517,7 +517,7 @@ "nem__unencrypted": "Non chiffré :", "nem__unknown_mosaic": "Mosaïque inconnue !", "passphrase__access_wallet": "Accès portef. phrase secr. ?", - "passphrase__always_on_device": "Saisissez toujours votre phrase secrète sur Trezor ?", + "passphrase__always_on_device": "Saisissez toujours votre phrase secrète sur Trezor ?", "passphrase__from_host_not_shown": "La phrase secrète fournie par l'hôte sera utilisée, mais pas affichée en raison des paramètres du disp.", "passphrase__wallet": "Portef. phrase secr.", "passphrase__hide": "Masq. phrase secrète de l'hôte ?", @@ -594,7 +594,7 @@ "recovery__dry_run_slip39_valid_match": "Les fragm. de récup. saisis sont valides et correspondent à ceux du disp.", "recovery__dry_run_slip39_valid_mismatch": "Les fragm. de récup. saisis sont valides, mais ne correspondent pas à ceux du disp.", "recovery__dry_run_slip39_valid_share": "Le fragment saisi est valide et appartient à la sauvegarde du dispositif", - "recovery__dry_run_verify_remaining_shares": "Vérifier les fragments de récupération restants ?", + "recovery__dry_run_verify_remaining_shares": "Vérifier les fragments de récupération restants ?", "recovery__enter_any_share": "Saisissez un fragm.", "recovery__enter_backup": "Saisissez votre sauvegarde.", "recovery__enter_different_share": "Saisissez un autre fragment.", @@ -665,8 +665,8 @@ "reset__num_of_share_holders_template": "{0} personnes ou emp. détiendront chacun un fragm.", "reset__num_of_shares_advanced_info_template": "Chaque fragm. de récup. se compose de {0} mots. Vous choisirez le nbr seuil de fragm. néc. pour former le Groupe {1}.", "reset__num_of_shares_basic_info_template": "Chaque fragm. de récup. se compose de {0} mots. Vous choisirez le nbr de fragm. néc. pour récup. votre portef.", - "reset__num_of_shares_how_many": "Combien de fragments de sauvegarde de portefeuille voulez-vous créer ?", - "reset__num_of_shares_long_info_template": "Chaque fragment de récupération se compose de {0} mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", + "reset__num_of_shares_how_many": "Combien de fragments de sauvegarde de portefeuille voulez-vous créer ?", + "reset__num_of_shares_long_info_template": "Chaque fragment de récupération se compose de {0} mots. Stockez chaque liste de mots dans un emplacement séparé et sûr ou partagez-la à des personnes de confiance. Recueillir si nécessaire pour récupérer votre portefeuille.", "reset__num_shares_for_group_template": "Le nbre de fragm. requis pour former le Groupe {0}.", "reset__number_of_shares_info": "= nbre total de listes de mots uniques pour la sauv. du portef.", "reset__one_share": "1 fragm.", @@ -692,7 +692,7 @@ "reset__slip39_checklist_set_sizes": "Déf. tailles et seuils", "reset__slip39_checklist_set_sizes_longer": "Déf. les tailles et seuils par groupe", "reset__slip39_checklist_set_threshold": "Déf. seuil", - "reset__slip39_checklist_threshold_x_template": "Seuil de récupération : {0}", + "reset__slip39_checklist_threshold_x_template": "Seuil de récupération : {0}", "reset__slip39_checklist_title": "Liste contr. sauveg.", "reset__slip39_checklist_write_down": "Noter et vérifier tous les fragm.", "reset__slip39_checklist_write_down_recovery": "Notez et vérif. fragm. de sauv. du portef.", @@ -772,7 +772,7 @@ "send__title_sending_to": "Envoi à", "send__to_the_total_amount": "Au montant total :", "send__total_amount": "Montant total", - "send__total_amount_colon": "Montant total :", + "send__total_amount_colon": "Montant total :", "send__transaction_id": "ID de transaction :", "send__transaction_signed": "Transaction signée", "send__you_are_contributing": "Votre contribution :", @@ -907,7 +907,7 @@ "tutorial__title_well_done": "Bien joué !", "tutorial__use_trezor": "Utilisez Trezor avec\nles boutons gauche et droit.\n\rContinuez avec le droit.", "tutorial__welcome_press_right": "Bienvenue sur Trezor. Appuyez sur le bouton droit pour continuer.", - "tutorial__welcome_safe5": "Bienvenue dans Trezor Safe 5.", + "tutorial__welcome_safe5": "Bienvenue dans Trezor Safe 5.", "u2f__get": "Augm. et récup. compteur U2F ?", "u2f__set_template": "Déf. compteur U2F sur {0} ?", "u2f__title_get": "Obtenir compt. U2F", @@ -957,7 +957,7 @@ "words__know_what_your_doing": "Continuez uniquement si vous savez ce que vous faites !", "words__my_trezor": "Mon Trezor", "words__no": "Non", - "words__not_recommended": "Non recommandé !", + "words__not_recommended": "Non recommandé !", "words__operation_cancelled": "Opération annulée", "words__outputs": "sorties", "words__please_check_again": "Revérifiez", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index fbdfaa0dfd..c0acd85353 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "c5cdf75468eef57a71e8bf98489515e1aac7515679f8ab1dddd8211f4e352b32", - "datetime": "2024-07-30T10:59:33.893703", - "commit": "33f5d4733065ac631d61ff458a5db32c81641124" + "merkle_root": "61467ac92c2678b624b2d9ab6d37d4a0ec01a44b5542261c19406cc674d71142", + "datetime": "2024-07-30T14:58:52.679738", + "commit": "39300036083657236e241da6f57f9a78269814e7" }, "history": [ { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 7296109245..dd722054b2 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -16833,8 +16833,8 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "f16d0f3c7e6fbf209dcdf3b9d164b256921193a59497181ce12880dbd68f344f", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c0629afadd2f660e7dde53a1f046e4451eb8ce7ee195cf0bb1c97624cf15fb4", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "f2034ed5b2e2698f84e2e7558e7912246e7b7fdd969381c427aad4b0b47353db", -"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "42235c94a42fdc08cec3e2c74043f83b8194a2d8e9aee5f21dbc9d2891f5743a", -"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "3689ce122921337337638ddbe6804750e6a9d309eafa6b40b33317230b24ae30", +"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "a14c3b143c24b398bd41379d0dd963dd12084a81e6e81e7697d1468ae99124a9", +"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "19443b6af09e24cd4c8635d7107b172d77abe29b3805ea5ab50d67540604a7fc", "T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "3fe3ebecd6517fd08b52fb7a85fb6e6de5fda24b2fc000865ce83de6dafd5781", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", From 6c75d9f97a4a28917e8d54b1435f5b11bd62a076 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 23 Jul 2024 23:37:35 +0200 Subject: [PATCH 471/626] docs(core): fix 2.8.0 changelog --- core/CHANGELOG.T2T1.md | 6 ------ core/CHANGELOG.md | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index 07b83a8f3a..126b16dfce 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -6,18 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [2.8.0] (9th July 2024) -### Added -- Expose value of the Optiga SEC counter in `Features` message. - ### Changed - Reworked PIN processing. ### Removed - CoSi functionality. [#3442] -### Fixed -- Increase Optiga read timeout to avoid spurious RSODs. - ## [2.7.2] (14th June 2024) diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index fb0de9c2b1..bc8848dd14 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -10,7 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - [T3T1] Animated device label on homescreen/lockscreen. [#3895] - [T3T1] Improved change homescreen flow. [#3907] - [T3T1] Added word counter during wallet creation. [#3917] -- Expose value of the Optiga SEC counter in `Features` message. +- [T2B1,T3T1] Expose value of the Optiga SEC counter in `Features` message. ### Changed - Reworked PIN processing. @@ -22,7 +22,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - [T3T1] Fixed swipe back from address QR code screen. [#3919] - [T3T1] Fixed device authenticity check. [#3922] - [T3T1] Improve swipe behavior and animations. [#3965] -- Increase Optiga read timeout to avoid spurious RSODs. +- [T2B1,T3T1] Increase Optiga read timeout to avoid spurious RSODs. ## [2.7.2] (14th June 2024) From 11308f578d30e1c9b4a3f5cf1b18bd8700cf0826 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 27 Jun 2024 16:26:03 +0200 Subject: [PATCH 472/626] feat(core/ui): T3T1 instruction screens between shares Changes the content and visual appearance of the screens between shares during multi-share (shamir) recovery. Context menu with the option to cancel is added to the screen. --- core/.changelog.d/3992.changed | 1 + core/embed/rust/librust_qstr.h | 4 + .../model_mercury/flow/continue_recovery.rs | 232 ++++++++++++++++++ .../rust/src/ui/model_mercury/flow/mod.rs | 2 + .../embed/rust/src/ui/model_mercury/layout.rs | 42 +--- core/mocks/generated/trezorui2.pyi | 9 +- .../apps/management/recovery_device/layout.py | 43 +--- .../src/trezor/ui/layouts/mercury/recovery.py | 53 ++-- core/src/trezor/ui/layouts/tr/recovery.py | 66 +++-- core/src/trezor/ui/layouts/tt/recovery.py | 73 ++++-- 10 files changed, 373 insertions(+), 152 deletions(-) create mode 100644 core/.changelog.d/3992.changed create mode 100644 core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs diff --git a/core/.changelog.d/3992.changed b/core/.changelog.d/3992.changed new file mode 100644 index 0000000000..06c52ff0d4 --- /dev/null +++ b/core/.changelog.d/3992.changed @@ -0,0 +1 @@ +[T3T1] Improve instruction screens during multi-share recovery process diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index eb858009fc..6d6aaa6d61 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -239,10 +239,12 @@ static void _librust_qstrs(void) { MP_QSTR_fingerprint; MP_QSTR_firmware_update__title; MP_QSTR_firmware_update__title_fingerprint; + MP_QSTR_first_screen; MP_QSTR_flow_confirm_output; MP_QSTR_flow_confirm_reset; MP_QSTR_flow_confirm_set_new_pin; MP_QSTR_flow_confirm_summary; + MP_QSTR_flow_continue_recovery; MP_QSTR_flow_get_address; MP_QSTR_flow_prompt_backup; MP_QSTR_flow_request_number; @@ -659,7 +661,9 @@ static void _librust_qstrs(void) { MP_QSTR_storage_msg__verifying_pin; MP_QSTR_storage_msg__wrong_pin; MP_QSTR_subprompt; + MP_QSTR_subtext; MP_QSTR_subtitle; + MP_QSTR_text; MP_QSTR_text_confirm; MP_QSTR_text_info; MP_QSTR_text_mono; diff --git a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs new file mode 100644 index 0000000000..07be4b2682 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs @@ -0,0 +1,232 @@ +use crate::{ + error, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + strutil::TString, + translations::TR, + ui::{ + button_request::{ButtonRequest, ButtonRequestCode}, + component::{ + swipe_detect::SwipeSettings, + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, + ComponentExt, SwipeDirection, + }, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + model_mercury::component::{CancelInfoConfirmMsg, PromptScreen, SwipeContent}, + }, +}; + +use super::super::{ + component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, + theme, +}; + +const RECOVERY_TYPE_NORMAL: u32 = 0; +const RECOVERY_TYPE_DRY_RUN: u32 = 1; +const RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP: u32 = 2; + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ContinueRecoveryBeforeShares { + Main, + Menu, +} + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ContinueRecoveryBetweenShares { + Main, + Menu, + CancelIntro, + CancelConfirm, +} + +impl FlowState for ContinueRecoveryBeforeShares { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Main, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Main.swipe(direction), + (Self::Main, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (Self::Main, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Cancelled) => Self::Main.swipe_right(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + _ => self.do_nothing(), + } + } +} + +impl FlowState for ContinueRecoveryBetweenShares { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Main, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Main.swipe(direction), + (Self::Main, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + (Self::CancelIntro, SwipeDirection::Up) => Self::CancelConfirm.swipe(direction), + (Self::CancelIntro, SwipeDirection::Right) => Self::Menu.swipe(direction), + (Self::CancelConfirm, SwipeDirection::Down) => Self::CancelIntro.swipe(direction), + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (Self::Main, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Choice(0)) => Self::CancelIntro.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Main.swipe_right(), + (Self::CancelIntro, FlowMsg::Cancelled) => Self::Menu.transit(), + (Self::CancelConfirm, FlowMsg::Cancelled) => Self::CancelIntro.swipe_right(), + (Self::CancelConfirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), + _ => self.do_nothing(), + } + } +} + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_continue_recovery(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { + util::try_with_args_and_kwargs(n_args, args, kwargs, ContinueRecoveryBeforeShares::new_obj) + } +} + +impl ContinueRecoveryBeforeShares { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let first_screen: bool = kwargs.get(Qstr::MP_QSTR_first_screen)?.try_into()?; + let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + let text: TString = kwargs.get(Qstr::MP_QSTR_text)?.try_into()?; // #shares entered + let subtext: Option<TString> = kwargs.get(Qstr::MP_QSTR_subtext)?.try_into_option()?; // #shares remaining + + let (title, cancel_btn, cancel_title, cancel_intro) = + if recovery_type == RECOVERY_TYPE_NORMAL { + ( + TR::recovery__title, + TR::recovery__title_cancel_recovery, + TR::recovery__title_cancel_recovery, + TR::recovery__wanna_cancel_recovery, + ) + } else { + // dry-run + ( + TR::recovery__title_dry_run, + TR::recovery__cancel_dry_run, + TR::recovery__title_cancel_dry_run, + TR::recovery__wanna_cancel_dry_run, + ) + }; + + let mut pars = ParagraphVecShort::new(); + let footer_instruction; + let footer_description; + if first_screen { + pars.add(Paragraph::new( + &theme::TEXT_MAIN_GREY_EXTRA_LIGHT, + TR::recovery__enter_each_word, + )); + footer_instruction = TR::instructions__swipe_up.into(); + footer_description = None; + } else { + pars.add(Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, text)); + if let Some(sub) = subtext { + pars.add(Paragraph::new(&theme::TEXT_SUB_GREY, sub)); + } + footer_instruction = TR::instructions__swipe_up.into(); + footer_description = Some(TR::instructions__enter_next_share.into()); + } + + let paragraphs_main = Paragraphs::new(pars); + let content_main = Frame::left_aligned(title.into(), SwipeContent::new(paragraphs_main)) + .with_subtitle(TR::words__instructions.into()) + .with_menu_button() + .with_footer(footer_instruction, footer_description) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)) + .repeated_button_request(ButtonRequest::new( + ButtonRequestCode::RecoveryHomepage, + "recovery".into(), + )); + + let content_menu = Frame::left_aligned( + TString::empty(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, cancel_btn.into()), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let paragraphs_cancel = ParagraphVecShort::from_iter([ + Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, cancel_intro).with_bottom_padding(17), + Paragraph::new(&theme::TEXT_WARNING, TR::recovery__progress_will_be_lost), + ]) + .into_paragraphs(); + let content_cancel_intro = + Frame::left_aligned(cancel_title.into(), SwipeContent::new(paragraphs_cancel)) + .with_cancel_button() + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::words__continue_anyway.into()), + ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }) + .repeated_button_request(ButtonRequest::new( + ButtonRequestCode::ProtectCall, + "abort_recovery".into(), + )); + + let content_cancel_confirm = Frame::left_aligned( + cancel_title.into(), + SwipeContent::new(PromptScreen::new_tap_to_cancel()), + ) + .with_cancel_button() + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let res = if first_screen { + SwipeFlow::new(&ContinueRecoveryBeforeShares::Main)? + .with_page(&ContinueRecoveryBeforeShares::Main, content_main)? + .with_page(&ContinueRecoveryBeforeShares::Menu, content_menu)? + } else { + SwipeFlow::new(&ContinueRecoveryBetweenShares::Main)? + .with_page(&ContinueRecoveryBetweenShares::Main, content_main)? + .with_page(&ContinueRecoveryBetweenShares::Menu, content_menu)? + .with_page( + &ContinueRecoveryBetweenShares::CancelIntro, + content_cancel_intro, + )? + .with_page( + &ContinueRecoveryBetweenShares::CancelConfirm, + content_cancel_confirm, + )? + }; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 7fb877bf36..a5e3397bb7 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -4,6 +4,7 @@ pub mod confirm_output; pub mod confirm_reset; pub mod confirm_set_new_pin; pub mod confirm_summary; +pub mod continue_recovery; pub mod get_address; pub mod prompt_backup; pub mod request_number; @@ -20,6 +21,7 @@ pub use confirm_output::new_confirm_output; pub use confirm_reset::new_confirm_reset; pub use confirm_set_new_pin::SetNewPin; pub use confirm_summary::new_confirm_summary; +pub use continue_recovery::new_continue_recovery; pub use get_address::GetAddress; pub use prompt_backup::PromptBackup; pub use request_number::RequestNumber; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 656fc6bf64..815ba43bce 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -395,9 +395,6 @@ impl ConfirmBlobParams { } } -const RECOVERY_TYPE_DRY_RUN: u32 = 1; -const RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP: u32 = 2; - extern "C" fn new_confirm_blob(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1053,34 +1050,6 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let _title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let _button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; - let _info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; - - let paragraphs = Paragraphs::new(Paragraph::new(&theme::TEXT_NORMAL, description)); - - let notification = match recovery_type { - RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run.into(), - RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP => TR::recovery__title_dry_run.into(), - _ => TR::recovery__title.into(), - }; - - let obj = LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned(notification, SwipeContent::new(paragraphs)) - .with_cancel_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .with_subtitle(TR::words__instructions.into()) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()), - ))?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], _kwargs: &Map| { let obj = LayoutObj::new(Frame::left_aligned( @@ -1688,16 +1657,15 @@ pub static mp_module_trezorui2: Module = obj_module! { /// mark next to them.""" Qstr::MP_QSTR_show_checklist => obj_fn_kw!(0, new_show_checklist).as_obj(), - /// def confirm_recovery( + /// def flow_continue_recovery( /// *, - /// title: str, - /// description: str, - /// button: str, + /// first_screen: bool, /// recovery_type: RecoveryType, - /// info_button: bool = False, + /// text: str, + /// subtext: str | None = None, /// ) -> LayoutObj[UiResult]: /// """Device recovery homescreen.""" - Qstr::MP_QSTR_confirm_recovery => obj_fn_kw!(0, new_confirm_recovery).as_obj(), + Qstr::MP_QSTR_flow_continue_recovery => obj_fn_kw!(0, flow::continue_recovery::new_continue_recovery).as_obj(), /// def select_word_count( /// *, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index d75e2ca786..a928e89580 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -445,13 +445,12 @@ def show_checklist( # rust/src/ui/model_mercury/layout.rs -def confirm_recovery( +def flow_continue_recovery( *, - title: str, - description: str, - button: str, + first_screen: bool, recovery_type: RecoveryType, - info_button: bool = False, + text: str, + subtext: str | None = None, ) -> LayoutObj[UiResult]: """Device recovery homescreen.""" diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index 3925a923d7..7de6c75bc3 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -2,7 +2,6 @@ from trezor import TR from trezor.enums import ButtonRequestType -from trezor.ui.layouts import confirm_action from trezor.ui.layouts.recovery import ( # noqa: F401 request_word_count, show_group_share_success, @@ -18,28 +17,6 @@ from trezor.enums import BackupType -async def _confirm_abort(dry_run: bool = False) -> None: - if dry_run: - await confirm_action( - "abort_recovery", - TR.recovery__title_cancel_dry_run, - TR.recovery__cancel_dry_run, - description=TR.recovery__wanna_cancel_dry_run, - verb=TR.buttons__cancel, - br_code=ButtonRequestType.ProtectCall, - ) - else: - await confirm_action( - "abort_recovery", - TR.recovery__title_cancel_recovery, - TR.recovery__progress_will_be_lost, - TR.recovery__wanna_cancel_recovery, - verb=TR.buttons__cancel, - reverse=True, - br_code=ButtonRequestType.ProtectCall, - ) - - async def request_mnemonic( word_count: int, backup_type: BackupType | None ) -> str | None: @@ -149,24 +126,12 @@ async def homescreen_dialog( show_info: bool = False, ) -> None: import storage.recovery as storage_recovery - from trezor.enums import RecoveryType from trezor.ui.layouts.recovery import continue_recovery - from trezor.wire import ActionCancelled from .recover import RecoveryAborted recovery_type = storage_recovery.get_type() - - while True: - if await continue_recovery( - button_label, text, subtext, info_func, recovery_type, show_info - ): - # go forward in the recovery process - break - # user has chosen to abort, confirm the choice - try: - await _confirm_abort(recovery_type != RecoveryType.NormalRecovery) - except ActionCancelled: - pass - else: - raise RecoveryAborted + if not await continue_recovery( + button_label, text, subtext, info_func, recovery_type, show_info + ): + raise RecoveryAborted diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index a1c9af3f6c..021cbfceac 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -8,23 +8,10 @@ from . import RustLayout, raise_if_not_confirmed CONFIRMED = trezorui2.CONFIRMED # global_import_cache +CANCELLED = trezorui2.CANCELLED # global_import_cache INFO = trezorui2.INFO # global_import_cache -async def _is_confirmed_info( - dialog: RustLayout, - info_func: Callable, -) -> bool: - while True: - result = await dialog - - if result is trezorui2.INFO: - await info_func() - dialog.request_complete_repaint() - else: - return result is CONFIRMED - - async def request_word_count(recovery_type: RecoveryType) -> int: selector = RustLayout(trezorui2.select_word_count(recovery_type=recovery_type)) count = await interact(selector, "word_count", ButtonRequestType.MnemonicWordCount) @@ -112,38 +99,30 @@ async def show_group_share_success(share_index: int, group_index: int) -> None: async def continue_recovery( - button_label: str, + button_label: str, # unused on mercury text: str, subtext: str | None, - info_func: Callable | None, + info_func: Callable | None, # TODO: see below recovery_type: RecoveryType, - show_info: bool = False, # unused on TT + show_info: bool = False, ) -> bool: - from ..common import button_request - - if show_info: - # Show this just one-time - description = TR.recovery__enter_each_word - else: - description = subtext or "" + # TODO: info_func should be changed to return data to be shown (and not show + # them) so that individual models can implement showing logic on their own. + # T3T1 should move the data to `flow_continue_recovery` and hide them + # in the context menu + # NOTE: show_info can be understood as first screen before any shares homepage = RustLayout( - trezorui2.confirm_recovery( - title=text, - description=description, - button=button_label, - info_button=info_func is not None, + trezorui2.flow_continue_recovery( + first_screen=show_info, recovery_type=recovery_type, + text=text, + subtext=subtext, ) ) - - await button_request("recovery", ButtonRequestType.RecoveryHomepage) - - if info_func is not None: - return await _is_confirmed_info(homepage, info_func) - else: - result = await homepage - return result is CONFIRMED + # TODO: the button request might go to rust + result = await interact(homepage, "recovery", ButtonRequestType.RecoveryHomepage) + return result is CONFIRMED async def show_recovery_warning( diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index 10de5e0d3c..41ceae2215 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -69,6 +69,30 @@ async def show_group_share_success(share_index: int, group_index: int) -> None: ) +async def _confirm_abort(dry_run: bool = False) -> None: + from . import confirm_action + + if dry_run: + await confirm_action( + "abort_recovery", + TR.recovery__title_cancel_dry_run, + TR.recovery__cancel_dry_run, + description=TR.recovery__wanna_cancel_dry_run, + verb=TR.buttons__cancel, + br_code=ButtonRequestType.ProtectCall, + ) + else: + await confirm_action( + "abort_recovery", + TR.recovery__title_cancel_recovery, + TR.recovery__progress_will_be_lost, + TR.recovery__wanna_cancel_recovery, + verb=TR.buttons__cancel, + reverse=True, + br_code=ButtonRequestType.ProtectCall, + ) + + async def continue_recovery( button_label: str, text: str, @@ -81,6 +105,8 @@ async def continue_recovery( # There is very limited space on the screen # (and having middle button would mean shortening the right button text) + from trezor.wire import ActionCancelled + # Never showing info for dry-run, user already saw it and it is disturbing if recovery_type in (RecoveryType.DryRun, RecoveryType.UnlockRepeatedBackup): show_info = False @@ -88,22 +114,32 @@ async def continue_recovery( if subtext: text += f"\n\n{subtext}" - homepage = RustLayout( - trezorui2.confirm_recovery( - title="", - description=text, - button=button_label, - recovery_type=recovery_type, - info_button=False, - show_info=show_info, # type: ignore [No parameter named "show_info"] + while True: + homepage = RustLayout( + trezorui2.confirm_recovery( + title="", + description=text, + button=button_label, + recovery_type=recovery_type, + info_button=False, + show_info=show_info, # type: ignore [No parameter named "show_info"] + ) ) - ) - result = await interact( - homepage, - "recovery", - ButtonRequestType.RecoveryHomepage, - ) - return result is trezorui2.CONFIRMED + result = await interact( + homepage, + "recovery", + ButtonRequestType.RecoveryHomepage, + ) + if result is trezorui2.CONFIRMED: + return True + + # user has chosen to abort, confirm the choice + try: + await _confirm_abort(recovery_type != RecoveryType.NormalRecovery) + except ActionCancelled: + pass + else: + return False async def show_recovery_warning( diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index 4b05fdce0c..9163987c81 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -11,18 +11,18 @@ INFO = trezorui2.INFO # global_import_cache -async def _is_confirmed_info( +async def _homepage_with_info( dialog: RustLayout, info_func: Callable, -) -> bool: +) -> trezorui2.UiResult: while True: result = await dialog - if result is trezorui2.INFO: + if result is INFO: await info_func() dialog.request_complete_repaint() else: - return result is CONFIRMED + return result async def request_word_count(recovery_type: RecoveryType) -> int: @@ -111,14 +111,40 @@ async def show_group_share_success(share_index: int, group_index: int) -> None: ) +async def _confirm_abort(dry_run: bool = False) -> None: + from . import confirm_action + + if dry_run: + await confirm_action( + "abort_recovery", + TR.recovery__title_cancel_dry_run, + TR.recovery__cancel_dry_run, + description=TR.recovery__wanna_cancel_dry_run, + verb=TR.buttons__cancel, + br_code=ButtonRequestType.ProtectCall, + ) + else: + await confirm_action( + "abort_recovery", + TR.recovery__title_cancel_recovery, + TR.recovery__progress_will_be_lost, + TR.recovery__wanna_cancel_recovery, + verb=TR.buttons__cancel, + reverse=True, + br_code=ButtonRequestType.ProtectCall, + ) + + async def continue_recovery( button_label: str, text: str, subtext: str | None, info_func: Callable | None, recovery_type: RecoveryType, - show_info: bool = False, # unused on TT + show_info: bool = False, ) -> bool: + from trezor.wire import ActionCancelled + from ..common import button_request if show_info: @@ -127,23 +153,32 @@ async def continue_recovery( else: description = subtext or "" - homepage = RustLayout( - trezorui2.confirm_recovery( - title=text, - description=description, - button=button_label, - recovery_type=recovery_type, - info_button=info_func is not None, + while True: + homepage = RustLayout( + trezorui2.confirm_recovery( + title=text, + description=description, + button=button_label, + recovery_type=recovery_type, + info_button=info_func is not None, + ) ) - ) - await button_request("recovery", ButtonRequestType.RecoveryHomepage) + await button_request("recovery", ButtonRequestType.RecoveryHomepage) - if info_func is not None: - return await _is_confirmed_info(homepage, info_func) - else: - result = await homepage - return result is CONFIRMED + result = ( + await homepage + if info_func is None + else await _homepage_with_info(homepage, info_func) + ) + if result is CONFIRMED: + return True + try: + await _confirm_abort(recovery_type != RecoveryType.NormalRecovery) + except ActionCancelled: + pass + else: + return False async def show_recovery_warning( From 510230628b2bede948f07722b8607dcde4653750 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 28 Jul 2024 18:51:02 +0200 Subject: [PATCH 473/626] feat(core): allow BR from rust on every Attach This commit allows creating a rust flow in which a component sends the configured ButtonRequest repeatedly on every Event::Attach. This is necessary in recovery homescreen flow where we want to send ButtonRequest also after restarting the device. [no changelog] --- .../rust/src/ui/component/button_request.rs | 51 +++++++++++++++---- core/embed/rust/src/ui/component/mod.rs | 2 +- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/core/embed/rust/src/ui/component/button_request.rs b/core/embed/rust/src/ui/component/button_request.rs index 7b8d6d903e..273f9858ed 100644 --- a/core/embed/rust/src/ui/component/button_request.rs +++ b/core/embed/rust/src/ui/component/button_request.rs @@ -8,23 +8,36 @@ use crate::ui::{ use crate::ui::component::swipe_detect::SwipeConfig; /// Component that sends a ButtonRequest after receiving Event::Attach. The -/// request is only sent once. +/// request is either sent only once or on every Event::Attach configured by +/// `policy`. #[derive(Clone)] -pub struct OneButtonRequest<T> { +pub struct SendButtonRequest<T> { button_request: Option<ButtonRequest>, pub inner: T, + policy: SendButtonRequestPolicy, } -impl<T> OneButtonRequest<T> { - pub const fn new(button_request: ButtonRequest, inner: T) -> Self { +#[derive(Clone)] +pub enum SendButtonRequestPolicy { + OnAttachOnce, + OnAttachAlways, +} + +impl<T> SendButtonRequest<T> { + pub const fn new( + button_request: ButtonRequest, + inner: T, + policy: SendButtonRequestPolicy, + ) -> Self { Self { button_request: Some(button_request), inner, + policy, } } } -impl<T: Component> Component for OneButtonRequest<T> { +impl<T: Component> Component for SendButtonRequest<T> { type Msg = T::Msg; fn place(&mut self, bounds: Rect) -> Rect { @@ -33,8 +46,17 @@ impl<T: Component> Component for OneButtonRequest<T> { fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { if matches!(event, Event::Attach(_)) { - if let Some(button_request) = self.button_request.take() { - ctx.send_button_request(button_request.code, button_request.name) + match self.policy { + SendButtonRequestPolicy::OnAttachOnce => { + if let Some(br) = self.button_request.take() { + ctx.send_button_request(br.code, br.name) + } + } + SendButtonRequestPolicy::OnAttachAlways => { + if let Some(br) = self.button_request.clone() { + ctx.send_button_request(br.code, br.name); + } + } } } self.inner.event(ctx, event) @@ -50,7 +72,7 @@ impl<T: Component> Component for OneButtonRequest<T> { } #[cfg(all(feature = "micropython", feature = "touch", feature = "new_rendering"))] -impl<T: crate::ui::flow::Swipable> crate::ui::flow::Swipable for OneButtonRequest<T> { +impl<T: crate::ui::flow::Swipable> crate::ui::flow::Swipable for SendButtonRequest<T> { fn get_swipe_config(&self) -> SwipeConfig { self.inner.get_swipe_config() } @@ -61,18 +83,25 @@ impl<T: crate::ui::flow::Swipable> crate::ui::flow::Swipable for OneButtonReques } #[cfg(feature = "ui_debug")] -impl<T: crate::trace::Trace> crate::trace::Trace for OneButtonRequest<T> { +impl<T: crate::trace::Trace> crate::trace::Trace for SendButtonRequest<T> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { self.inner.trace(t) } } pub trait ButtonRequestExt { - fn one_button_request(self, br: ButtonRequest) -> OneButtonRequest<Self> + fn one_button_request(self, br: ButtonRequest) -> SendButtonRequest<Self> + where + Self: Sized, + { + SendButtonRequest::new(br, self, SendButtonRequestPolicy::OnAttachOnce) + } + + fn repeated_button_request(self, br: ButtonRequest) -> SendButtonRequest<Self> where Self: Sized, { - OneButtonRequest::new(br, self) + SendButtonRequest::new(br, self, SendButtonRequestPolicy::OnAttachAlways) } } diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index 16ab3c8698..7cc7b8de77 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -29,7 +29,7 @@ pub mod timeout; pub use bar::Bar; pub use base::{Child, Component, ComponentExt, Event, EventCtx, Never, TimerToken}; pub use border::Border; -pub use button_request::{ButtonRequestExt, OneButtonRequest}; +pub use button_request::{ButtonRequestExt, SendButtonRequest}; #[cfg(all(feature = "jpeg", feature = "ui_image_buffer", feature = "micropython"))] pub use cached_jpeg::CachedJpeg; pub use empty::Empty; From 71b2c986f8b95ad4dba9ad3559f40a0e4ab7e506 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 28 Jul 2024 18:52:29 +0200 Subject: [PATCH 474/626] feat(core/ui): send BR from rust during recovery [no changelog] --- .../embed/rust/src/ui/model_mercury/flow/continue_recovery.rs | 1 + core/src/trezor/ui/layouts/mercury/recovery.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs index 07be4b2682..2988ee15a0 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs @@ -6,6 +6,7 @@ use crate::{ ui::{ button_request::{ButtonRequest, ButtonRequestCode}, component::{ + button_request::ButtonRequestExt, swipe_detect::SwipeSettings, text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, ComponentExt, SwipeDirection, diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index 021cbfceac..5ac7403fd4 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -112,6 +112,7 @@ async def continue_recovery( # in the context menu # NOTE: show_info can be understood as first screen before any shares + # NOTE: button request sent from the flow homepage = RustLayout( trezorui2.flow_continue_recovery( first_screen=show_info, @@ -120,8 +121,7 @@ async def continue_recovery( subtext=subtext, ) ) - # TODO: the button request might go to rust - result = await interact(homepage, "recovery", ButtonRequestType.RecoveryHomepage) + result = await homepage return result is CONFIRMED From 37edfcb974ace94bc841ea84d0f8826e06ea7783 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sun, 28 Jul 2024 18:54:42 +0200 Subject: [PATCH 475/626] tests: fix input_flow of recovery abort [no changelog] --- tests/input_flows_helpers.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 5135549e0b..8d59db2b9a 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -126,20 +126,31 @@ def abort_recovery(self, confirm: bool) -> BRGeneratorType: yield if self.client.model is models.T2B1: TR.assert_in(self._text_content(), "recovery__num_of_words") + self.debug.press_no() + yield + TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") + self.debug.press_right() + if confirm: + self.debug.press_yes() + else: + self.debug.press_no() elif self.client.model is models.T3T1: TR.assert_in(self._text_content(), "recovery__enter_each_word") + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.synchronize_at("VerticalMenu") + if confirm: + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + else: + self.debug.click(buttons.CORNER_BUTTON, wait=True) else: TR.assert_in(self._text_content(), "recovery__enter_any_share") - self.debug.press_no() - - yield - TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") - if self.client.model is models.T2B1: - self.debug.press_right() - if confirm: - self.debug.press_yes() - else: self.debug.press_no() + yield + TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") + if confirm: + self.debug.press_yes() + else: + self.debug.press_no() def input_number_of_words(self, num_words: int) -> BRGeneratorType: br = yield From 935afbb46f60915e318fd2fdb0a6c7359aa62188 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 30 Jul 2024 16:54:40 +0200 Subject: [PATCH 476/626] tests: UI test of cancel recovery between shares [no changelog] --- .../test_recovery_slip39_basic.py | 14 +++++++++ tests/input_flows.py | 19 ++++++++++++ tests/input_flows_helpers.py | 31 +++++++++++++++++++ 3 files changed, 64 insertions(+) diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py b/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py index 40f324e544..a12cdcba75 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py @@ -28,6 +28,7 @@ from ...input_flows import ( InputFlowSlip39BasicRecovery, InputFlowSlip39BasicRecoveryAbort, + InputFlowSlip39BasicRecoveryAbortBetweenShares, InputFlowSlip39BasicRecoveryInvalidFirstShare, InputFlowSlip39BasicRecoveryInvalidSecondShare, InputFlowSlip39BasicRecoveryNoAbort, @@ -118,6 +119,19 @@ def test_abort(client: Client): assert client.features.initialized is False +@pytest.mark.setup_client(uninitialized=True) +def test_abort_between_shares(client: Client): + with client: + IF = InputFlowSlip39BasicRecoveryAbortBetweenShares( + client, MNEMONIC_SLIP39_BASIC_20_3of6 + ) + client.set_input_flow(IF.get()) + with pytest.raises(exceptions.Cancelled): + device.recover(client, pin_protection=False, label="label") + client.init_device() + assert client.features.initialized is False + + @pytest.mark.setup_client(uninitialized=True) def test_noabort(client: Client): with client: diff --git a/tests/input_flows.py b/tests/input_flows.py index c71e2070de..14545bd7f9 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -2106,6 +2106,25 @@ def input_flow_common(self) -> BRGeneratorType: yield from self.REC.abort_recovery(True) +class InputFlowSlip39BasicRecoveryAbortBetweenShares(InputFlowBase): + def __init__(self, client: Client, shares: list[str]): + super().__init__(client) + self.first_share = shares[0].split(" ") + self.word_count = len(self.first_share) + + def input_flow_common(self) -> BRGeneratorType: + yield from self.REC.confirm_recovery() + if self.model() in (models.T2T1, models.T3T1): + yield from self.REC.input_number_of_words(20) + else: + yield from self.REC.tr_recovery_homescreen() + yield from self.REC.input_number_of_words(self.word_count) + + yield from self.REC.enter_any_share() + yield from self.REC.input_mnemonic(self.first_share) + yield from self.REC.abort_recovery_between_shares() + + class InputFlowSlip39BasicRecoveryNoAbort(InputFlowBase): def __init__(self, client: Client, shares: list[str]): super().__init__(client) diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 8d59db2b9a..63f317086d 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -152,6 +152,37 @@ def abort_recovery(self, confirm: bool) -> BRGeneratorType: else: self.debug.press_no() + def abort_recovery_between_shares(self) -> BRGeneratorType: + yield + if self.client.model is models.T2B1: + TR.assert_template( + self._text_content(), "recovery__x_of_y_entered_template" + ) + self.debug.press_no() + assert (yield).name == "abort_recovery" + TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") + self.debug.press_right() + self.debug.press_yes() + elif self.client.model is models.T3T1: + TR.assert_template( + self._text_content(), "recovery__x_of_y_entered_template" + ) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.synchronize_at("VerticalMenu") + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + self.debug.swipe_up(wait=True) + assert (yield).name == "abort_recovery" + self.debug.synchronize_at("PromptScreen") + self.debug.click(buttons.TAP_TO_CONFIRM) + else: + TR.assert_template( + self._text_content(), "recovery__x_of_y_entered_template" + ) + self.debug.press_no() + assert (yield).name == "abort_recovery" + TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") + self.debug.press_yes() + def input_number_of_words(self, num_words: int) -> BRGeneratorType: br = yield assert br.code == B.MnemonicWordCount From ca469784ba424b4a53b4d829bd703db4a59e9dd7 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 31 Jul 2024 10:36:24 +0200 Subject: [PATCH 477/626] chore(core): update fixtures.json Update as a part of T3T1 recovery share success screens and adding a new test of aborting the recovery process between shares for all models. [no changelog] --- tests/ui_tests/fixtures.json | 441 ++++++++++++++++++----------------- 1 file changed, 228 insertions(+), 213 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index dd722054b2..d9ae9c9df8 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -1984,6 +1984,7 @@ "T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c3ab79ad41399637b6a82872952f840d656752b82fa1863080e5ef6df90c47b7", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "dc0dfe0e394b5afe43b7fea94856e7dc324e687d0901a4cd229b652f45521d4b", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b52e7a0a8af4788f135c177f73ff767c8abc517862372696f110fac26c0edac6", +"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "7bcf2d382e165d0a9aa2683db1b6106851d572c590fcd7b022e5db99db937433", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f9619044cb62669198a6f2843be1b94fb0be88f025dc0443590bb86fc4121d38", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "99245bbe920df25798b36262b33292c70d35f912c8186417611babe8940d87d5", "T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fa9c4b9d32656420392dedf6701881aee8745af80478dc412767d220ca563e12", @@ -3352,6 +3353,7 @@ "T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "e577a4feacfa10f0b994ea7e215bf0bf292f52951837350060d829864da2127d", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9f9b88d887a1ac36b239f2cf902449c381d3cbcafaba6565a5d9c813caf96fe6", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c40d392b79520a91b10a8cc50ecd7f44d89f855436b7c55a17227f4289420b8e", +"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "7ed46540113c3c3dc183cce4a2b8564a1f7ec4807aeb428402957a423ff09476", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "24d8e26d2f91b56f6c8629513c417cdc018371aa5a8b6e467d68fb37c5eb91df", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "0bf5ccc67667bf33e0b2e3d224fd9ed692274b707b866e7945e7029cdc6d5a6a", "T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b75e26bd68b3bd22ff66d52fe0bbf463d8c32a6caf5b61a3b83d34f45d234b6f", @@ -4720,6 +4722,7 @@ "T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "5bab31d37f412874570b376d49ed23869f9ebc16dc46840be63a4efb8de960fc", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "77f8fcb1d2eac768969de855dbf2c49097c353224be8ddf531b412f641922730", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e0844d255947779308662723f63f5e43d3670058c4bc4b923b63becf1eeda3db", +"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "c273f53065fc57fb06a3276d824e72490f67c3d272a5df1b8eb9c063abf4ffa3", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "43dc93150091f8158a0f09444bc7cbdab6ebb5a42975544f3de5ca60213dc065", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "45b5eb820d6ea5682a0627335840d6c7be41f45787ad3f1ed5fb13868b5f7c6d", "T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3267f5d7334570b22a5113b911a0bd118a44281dd1a30b1fad6ba87060a82431", @@ -6088,6 +6091,7 @@ "T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c30299b2541560e7eb65d5806b4ce8debd811bdf899c734ead0b88072d36693d", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f98e90623e44fbb8d8e5c211c5ecde355045392735a6b724648f2a5c879feace", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3e903c575b88b4b2f5b43e9869ddd45f21b12473d9838f6543c50ae641f67c6b", +"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "15327a6cc7f93a39fe1f2bb2ef366e63abbfb84ef1e784f84ba8fe12638dec4f", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "d7a09aea890dd9b88c9198708b65e60405f4ea04edaf67a7a0c335a0b8be7a69", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2ee23ce7f9a759675389df3aaa67e3a631a6c779c4e385cb6f10e393ff4d1791", "T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "bbcb5fe78657625c1c1c5e5301ad62e4ef69a7a5d9d4dd9c061fbd8a5cfafdce", @@ -7456,6 +7460,7 @@ "T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "1dfc877b17e4d6c38f695aad714056a468af0014f63c1a1a85a959be92873fc6", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "43cc7aebc4571980a454880235f448f4c4d6a03ee57b4fb23bea006541bf2b50", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", +"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "ad2d869ece8d5df4da38321fd90105b571e4a9b04f2985c2b5722cc78c768b95", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "95d6ebdd3cf99ee2a4826b9eaaae1cad6496c628123278146ce6de839ceb6391", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e8065e252cf2b9b2927068fc2838bedfb6c41d765b6c544cdc56b6832dbd38b0", "T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cba3c45c899c9022b7d70bf1756cf643d50f86407107b535c0f055342495b1c6", @@ -9155,6 +9160,7 @@ "T2T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c50f8f8da5bcc89768e792ce138af8a09f6acbc77b82ea8d9bc30156a61d5163", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "739899ee619adfff62533347f0c0d100c22f60817e21cda63576ea063db09782", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "55485084a3d2b1fd48afa7b65149c110e9353ab56e5e762ff4ebe6b6e4cc482d", +"T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "3e0bfd8859577b246840715c5cc678e1a10ff6388e375519cfce337dbc110500", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "fb83744721ef19e3a8579dbf37aa022d4b2c838a04bc2c6e08885a9128e18313", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4e6f3ce3436f142608e23199d9621f93d95ed4f49f9d846ec32f9c8c0201e1da", "T2T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "a13acc203d688c6c445c5d910426fcfda92a9994364f51179ef11286e7ac06b9", @@ -10603,6 +10609,7 @@ "T2T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "8369175f96818eab2275e3be5ccc926a0ea49b9aa99a8685749ee8713cd6fe09", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "807df8ecb5db12f04003483e3ea04110ead3605a7dfba0888b0fb78fff2adf31", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b554433ebd5bd81a04cdfc3b9a2613c8ce958dc7424830c81cb0be8ceae3f9b1", +"T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "3e88a388343357601d55d8d41259b83141f4f095b3608092aacb37c6eeaab1a8", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "86d7e7bc19be3e751ead123b48d42a8372b73f943dbcc463f49b71bfa371e0bf", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c675ffc891dc8013ea5adb88d83b47bb2881796be1ce9146c0faf69fb9c1702e", "T2T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "7b21c5755a92ed029aba4b9d2e2050b2b0ffc4fa2264acaa0be7b664547e4ad6", @@ -12051,6 +12058,7 @@ "T2T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "d906b0aaa23b2f6c85d6ea93723987218f3cef476c4da8f7b587f86b3501fe8b", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cd1e1b8dec17b710f2f81c2ea4f8fa7c9426771af56d6a6b101e603229b58a0f", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "7883096ed0e02a2d89ced6acaa46e98c63697ce0d480dd519115efbcce20fbc8", +"T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "5d21b6952a6ed4051c503c8440e37eff72d6cc89f6e1bd02f57f637c0dbb2b0d", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c1776298773f2521b593dfa5229a585504f54dcdcdd1d0a4185d82b5ca7e7d4e", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "4e6cefa7e46f0ab55e720eae68c24877105fa10320d5dde727024aadeb4aa0ea", "T2T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "f6d319b1be8f92e0ab79d27e6b3bdef233e682c6610391dd4bd9bd15f1d98885", @@ -13517,6 +13525,7 @@ "T2T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7ee679b8b34114b7e14190fb53cd728efc08170780ab9f62dc4c4410d6253bc6", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "c7f2d8ecdc393c271f44ceef151349b2435e7ee68d95924a4439836eac01b7ef", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "aceadc1d9e447ea443ed4e338e0dfba0d731acdbfdb3b383a3a1d5c3cdc2a14c", +"T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "f67a65341862429b5d5d10ccbbb00fabf331c82de499ddf5be9b771f9bd07927", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e43a1dbbb1e3ef37a98a5b1a67a1ead03579f21ca6349d11b4928028b272ae6e", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "915d83b0f221bf460a912104d411efb1c53f090e62c3915ae64f4d8fa33c0f3c", "T2T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "eb6631c58ee29019af80acbea0aaae9f2141dd6636feeb73a8c5d77006ef3bd6", @@ -14965,6 +14974,7 @@ "T2T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "82667e670d2f5646d7563225357d8c9402b2003a608dce44f5b07c664e599504", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "4ac64555dc3fa2d6a392fc71e08eaaff2d15f42e3a7848e311f55b8e17b7e9f6", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b35ef76d4c5b2a99eee49de8fc313f5d4791169284f5d671635eb3d7a37f7f51", +"T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "f18e1ae6ec5f0eef19ecc0695db0686e79e1529a1ea9aa0120144d6d914f8996", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "498d8435e6e3fba49395ae6a969f7c77f6d39aec40acec9e541e21c30d86308e", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "dcd9316ee09abdb81e116222b63cdee3fc5fdaaf5d273d5e5e8910672cae306c", "T2T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "96fe74bba707ee0ea23f74ce32f3b5adcbaff005d02a6dfd09f9eda406a83b12", @@ -15328,9 +15338,9 @@ "T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "b8a0cb4db6773e4eaf22692fa612f8dd3a3ea405470d7bbd2d8c92495d7ac158", "T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "43293b55a181cc8f65a4b5252909a0a46582ae9db33686bc24e8e34760490a0b", "T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "e254663f0c687fefa01943561aaf750306e39848f95ae7b78cf2cd79436ae965", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "aac7d93be05d1e23d628b0758c661ded3ca270e6c785084e9761d85e28e9d93a", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "dedee62f34cb9fb82b76b57229afdeb633cad520ee417f8379ed40728aa48ddd", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "662fdecae7643270921e0c96105ad326d5421693d0f92471494f4af31a31e751", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "3b225ed7b9336d6269b3f9080014e73c43fbe053ea87635582907b5dc2a7d3cc", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "6b09e1ad5594138a7f01ef8f1e89adbc3b52e112421eb295e296dde22e7e0bfb", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9031ad2fa055e7429226c823c09221e3b7386a03838d8b34ac4974a04db8aa9c", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "df8ec8be03b23f9b05214deec6b515e11ef85f64896237a729f35b8f1dcdaddf", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "26b92c6ca41c2ccf46f1c094026c91897c8022236aca9f71f58df0720e9709d7", @@ -15363,10 +15373,10 @@ "T3T1_cs_test_pin.py::test_pin_short": "d47d5d042fcafcfd35e3893c9f230fffcb174a2d10198e7e0c78907b5777142a", "T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "6d615ea3421738485484b14e305a8c3f159bdf82925329e98b87bff0890e4366", "T3T1_cs_test_pin.py::test_wipe_code_setup": "3566f17ed11804872e11694e5c5a8da8cfbae335ad1a2a4b10cc1f48da04cab5", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "45b95e8389eebe056b08b05dcf4551321994956f720a140adf2c3c51a10fde02", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "199a6bab747546f9f14783057931320aee5f353c1ce2e09dfa32448501931719", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "cf579f3b7f6b7e218a34e85e7f61287eff49933526aac1d6702cfa114d15ee82", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "56ba40e91b35cbc2d96231b0cc3bcf920bb0c9be622be789c6be447129b708cf", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "0b4ded4093e543b29799e950c3d56b8ef4c03493709a94f12e3a1b245128dbf2", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "eece72ab6ae9aa5d919aa408a70197426f1773dca0c744007963fffecb3e9f8a", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "758f8c529232f37caaa4adc3caa57382d93ee0323b924a11bbd1ef484e7d7d2b", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "8154731b4649361f23ce5b118d13de8ffd5b33eadd0b83f9b7be792b1cb52bc6", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e5e9d0a86dbbcfd26bf1f9d17bbba24b4de69440314d1ebd1fc7f78dec97a131", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "59490382e5026fa50d16803372d5d0b5ce487e093a3f6fe9c72a0a117b30ccdd", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "23ab489a042c20549601dbce1987065132bf11cfc9bae66ced84bf7ce82a947c", @@ -15377,9 +15387,9 @@ "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "6c0fdcf2d29233b9bb4162a1e42a261196b99a3f0aae065e29b985607f3fba5d", "T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "26a5707dbb0a5c6e9149af85c6af56dc62a91cfdf93085b188159306c8932c5e", "T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "42192f5f1d2ca9604b778d36eb303cf5b02601ae478d6ae9fb9e7348ee85d90d", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "7d8dce58f3aaeef084fcd7cdc18c9b709b54689ced07c7b161efaefcba7b75bf", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "68c3185780d8976ede424a042d7a9bf093c1825d8049babb0a406bb5ae7a33b0", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d7ad4444a3691a2c5891a1d6e5fb142540915048968a9381a09b227beaaad8e2", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "313a4da2ee3cca5c84971ca8d71032ed155fc906ef6dc9714dba2fc4a264249f", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "966025defcd879d831ef6b7a1bf0331f62d4f1d9a27872dafd3c9ba72d49cef2", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f847c69c460b2a9817c82e952f93f65eb5ae9b9d5375debc38d7420f1661302a", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c795f8c0157c9ed4f774e3a13d0d641ec35a6e7f434a411693ecfa43ee24e408", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "493123029d3377e1cf2cff566a30c441bc194e5fbd601262d71567e4f9e08754", @@ -15412,10 +15422,10 @@ "T3T1_de_test_pin.py::test_pin_short": "43c58c441cbe7c6b62483812b9c88ed3376286d1e00ce931e49f92b44d744959", "T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "561db133f0d612048fd08b46d438a4a500e064d3088055c9364a5660afb01103", "T3T1_de_test_pin.py::test_wipe_code_setup": "e20e2c935c654931b9786df91908aa544d2736e06eb78cb0ef54d44604d5aeae", -"T3T1_de_test_recovery.py::test_recovery_bip39": "36cd09c4e3f35db162045782e30483f65bb078d0cc6ef8b253a8366cdc3ed81d", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "243fe1e3318810cbd64979dfb1c56050068cdce08ebf6f2929c2a2e6f4f9fc35", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "64ac5fe34475660731751e37f2e22e92c40e70b0bdbcc1dd749c2e96f118abf4", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "099de9e777e117796d9f55437d00e5edbaf4f4f1b64d249031b0549856b13efa", +"T3T1_de_test_recovery.py::test_recovery_bip39": "f15dd2779fe059da83e5c3384e3c882fb1f11a4fc77ad2cac2cca87ce6ff48c7", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "f62897d9041e6e6c38676cc8d62a1c9c0e08c40877f426c1bfeb366e15ae1e9f", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "9c132785b4d7f79f09ad2469d5f8e427a9b67617c77b297b7d1ddd2c4c3ddb72", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "17f48f0abb54999a763d30a4dd9c1fc86888a54b454791b814f84f8651050f36", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "79fec4c63285b7abc909e1468ed83284ead35eaf1cbb0f46bf962da63bf5bd64", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9979d59977efba077cff44b5cd929ad13b03099f23a92b842c4c650a58832706", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ae62f69464e452a92fbadf1487bdefb1b7b33c80ddc2d622be3b8f91eea4a03d", @@ -15426,9 +15436,9 @@ "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "130b0259aec5a8d067c8e826b590bec66eecbfc1d8b30bbdee979c3cfe21935c", "T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f1b5162e62e0fc8de8b0096111da724a0852236c4d5f539ec81c5270376e00b5", "T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "a418248cfe49d474ebbbbae6fb45a7acbb4f33e528070a3a98092c07f678e19b", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "b2d26dd11d27b6e51c3496df47b4b8851c932c6f41db8b8e61c177e8a4daf328", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "a4053424e407160dda2095cebac34065565afb4201092e1b80a702a2536cdefd", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "36114e7a5d1f1e35206dbfd3d129b7816b4b240faa2ce243dc6e16a57d764f28", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "b660b9a812d5f45d5b5ed15a26ecdfe72c4ba1c847bfceea1033118863a2d3cd", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "7bf68edf1ffc0d6d01503f25d2266d3c5ba0d856d28c44ae592b3947761bc12a", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6ef9917939ab80a901c52b193da8922f0faeaf388dfc6fffa04a787904a02a8d", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c2fa7e451ceee2968fb6568949bf1c0ca108e9ab04d74192c491d3fbc2ce735c", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "fc9482440dc8a8176d69f88544b16a52232e51de1fce70425e48160fb3c29471", @@ -15461,10 +15471,10 @@ "T3T1_en_test_pin.py::test_pin_short": "79796966e4367b6d6d13acd229ecc9f13bb2b00cd030bf854184d94176f1e6eb", "T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "19435c69b4111ee84d73ec996aec7150c3d0c8492203d3aacd96a64a9facc2da", "T3T1_en_test_pin.py::test_wipe_code_setup": "ab34c35e04c86f39b8ebd6da3b48a7eb3b28cf8eabbcb4cbe17fc788ea7f14f4", -"T3T1_en_test_recovery.py::test_recovery_bip39": "dfce7ec45313bf75375236c87841b5ab43a9eff079022ec404f051f18b1b0ca9", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "d77c6f95aca273ea41e5a3082b2523ae868139ead52a4c38e5f1d035f421ff73", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "6525814b878b92b25d5a86eaab07071ddf5844d16dbbae590085572fc7185f9c", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "32f1176afc86d4930ef3fbd7b222ba9845e32f80aa42e302f9aad5e63cd812b8", +"T3T1_en_test_recovery.py::test_recovery_bip39": "d80025a0c9f7c2d888eaad44e5771ae073063ecbd4a59d6e8be6141f2ad1ca0c", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "22ba5126dddd99f93d19bd9391dbc88697dd499ce735f1d8db1978f18416d462", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "ef3cbbc66db078e7db645f1b7e1609a5741fc71823a1ce4105414f0a348ef214", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "1bdd58bae00bf199a32084e41a681ae6fa65bdce6efc33d4be1cf4d0f882c59f", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "a0774a5569a01ab853104483b002fe85e1b8e2f979e4516cd9b532a2d45cc977", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d22f019836e08486cf0d4dc581c79c6eab47599a5f5613ae6aeb7c29a79ed439", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3b445d647b09b0d032ea169b59608c0d5051dc0c032f3ea0ee47049087f0a91e", @@ -15475,9 +15485,9 @@ "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "82df5a9a0e7df9f617b29bb16d01acc5b800635c420680ab9e546e8c908a1748", "T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "3f9070f1b83a17e4a428eeab7b056cf088dc421f21d7819f92dd07d63ac66cd0", "T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "788a81368049c19f3528c0d47cbce3894d5e63db2f9b91f43966f71219e0565b", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "2a7d6f2a0ef28d9111b5fc6d1670c6a4df6fe00e47780bbc5b762541b85d45c4", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "91a394679fb03f54f591307c09ca3af442985dd90042de2b26abae981a1062e1", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "8c9e39c583899fe215ae1b4e71d66ba42181246fa976da63f4bed172d1c9bf76", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "f3e0e3f77a9bc5e247914fd423087efba68434c7e15219c8b2b2ea76d308c140", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "1bca8c9c7f748d36edbbe2eb5ddb161d26d3130e7afd03325450a8b14531bb69", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cd8177dd73c1d2c9a67c52a41411f70306dce132350aac62ed562e8fe8d722d5", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "93b2d6699297680a491576955854d4819b0d9322423c2bb4c52b110afc6dd3c9", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ce88c67bd11834bba68e564c2641a3eae658b995e9437229bb763b88eb8ca8ab", @@ -15510,10 +15520,10 @@ "T3T1_es_test_pin.py::test_pin_short": "21a6007121daa2808055f1fd035f00d1b4e5e1b51f4f1bce286f781bb24cc825", "T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "951f98ebd0dde31c123c7d93eb98af5d0bf5147f2bd28a3014ba26d8bda58d5d", "T3T1_es_test_pin.py::test_wipe_code_setup": "edfe089762dabc918417ca26916a6ad1d0377b8617255c169384ef8728c17381", -"T3T1_es_test_recovery.py::test_recovery_bip39": "35e4c2afa5a73759e1cfd102bbedf3e8832b7335137c2aa647e9f1360cd42ce8", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "579915d32e27bcdadc3f4e46fef1171577f49fb9e36339f1fd7c8df1f4eaae8f", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "d092abc369a9a86d1b98731d6a86d37b92895dc2fc59fa89bd6dcabf68288e7b", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "a3f4a36a101bf323af6f123e47a8155090ad32aa8482ffdd78354e3b21b9d5d5", +"T3T1_es_test_recovery.py::test_recovery_bip39": "4ab6e088de9d60283c6a9bedcd39a9447cb484c0dcc3792351c620f129903078", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "b433b71921e24c77d6860fdd5c0c2648d3e3574ed3ed0becb19470fd1bc781ae", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "77ee2df1a216bbd3a040523ec0904384653f5bda080e77059b99715b6a297cad", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "9853ef21f770b3824378f4eabf17c1d90542479a6e08c988a6ab82c4ff8347ed", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "be3ebd0f242fab2389e6731d1ea5b16a4056cd02230b3b03c12ad1320ebabebb", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "bc71dbd136fcae1e61e922398f8fd5734ae11e954ec16f09272390f5015c8cbe", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f70bac5e99513c1c670a863a5b000fc80f1c5a3d1afc49424a495183486a50da", @@ -15524,9 +15534,9 @@ "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "a01e2d94c229cc801b458ca27af1e1a0b0717d0b2c21366d740b9b0b98907f83", "T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "7cfb7eb316e587770c9859ea9ca84844fdd398cf018492d41860e343b3132ded", "T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "d6bec560890ee243e2ab354aa220f122a684522537b812ef00e9346977c05db5", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "7ac7b448e45899f51b946fba7840a6cbd6746021a77fb35163e378c3d52d7584", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "5082a965b4ba4fe2372fe280326d05e376be3e521143d820547c541f61f0361b", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "c97f5c38ea479cc17c1e48fd77d7c7f71a8ae69725d2038d779ba0a308a03ba9", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "74b464cd02fa0809702211ea27d3817c23d947bfd68d5b7e7584201de3320157", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "8105547c44bb473bca255c9f5f6f6e9116dad0ef2e1d21e216f7a63020a6c8fe", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f3b673ef9b5f8dc186eccf18ae424aa401e5dac927b85de11ab221dcac01268c", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "82b39aebd2dba788c07e775502ed9b62afcdf8125a379207df2fb2391f3abc75", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "56f3a131657dc659648457a3784585739ddc5761a59ff34c30ad450e8e2e62f2", @@ -15559,10 +15569,10 @@ "T3T1_fr_test_pin.py::test_pin_short": "f727f318a1334890b62ec8670e55a3eb68d4e14448cccafe8e7882c34df1cc87", "T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "9fbf63afaf25ceec9a0b8d17ec83c0a7a39c7b106ac13519ac196474a083a31d", "T3T1_fr_test_pin.py::test_wipe_code_setup": "943ea3640d21ae0a79655035e2aa0722cc7b79f6a9e17bef39afd9ac1c327549", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "28cac606fee1d9da20a548a74bc63a55f052258edd5056607f9736775adc711f", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "17b4e0ae446f28295fbfebf6520ff44eb3b0e189e8c4f3482c013a8198d7d807", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "9e94c4dfe920a2b935b24c1f536ad5e97b15b716b0a4c5603858354e7cbc7a50", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "fdf60b5cbe030f7496d4f1187d626906ae64c3db46578407242e806d4d8c3716", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "ad346e6b6f0dab29d4240f7495cb92b1546b8f545477ec02c03e6f25545adb47", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "0f89c01652f65d814aca2ebaec766479cf362772ab3b1e06fd7f9be2eb281d26", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "ae737b02fa5dcbcb89d4996f81305ba07d0cc13aeec289045b94402074a09576", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c070782c58a9fcf97445daa47c2dd0c152fa8589b0aa6b2ed38f15a670b7a4af", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "8ac5b9e2727c2b483776b4299fb60ac7ae04d0b2fafd6515d35ee2ee40807ddd", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f517156acededb8679ea50110d4874522e2f3678140d1eb3429bad4c5ed041dc", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3773efb385df6d0b33967fcdbb47e5613b50d5d5c018b7a8d632b8569994d93e", @@ -16548,37 +16558,38 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "09777a8abf0dceacfbd407ef20a4de9cf95df987faa5cdfcc5069262f03c6ae9", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5481313fab6f11ac386360188c47d0fc97a895bef919c8ea58ba0972aa12847d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "7ab8c51b637f0ca2f1621c0e4ff4cdb51a4fb6eb3f02c231aaafa4c580a5ca98", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "1476b23a156d18a90e7a56204510d723b6fa1eb582bc22b6ed59ea2b4ead5c2d", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "187bca6b6f353f91e42574ff535b4604a4c0890d2d0226a8c80f77b97aac8a20", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "3f5a4e237c5971dfa94f34efab47e78107e64c48e32efee232c195ec521f7329", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "05a1426609628a49e1f1d26db192dba2452865794fee8aa8ee9ca662c1febf33", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a2e19312f80697fb2a98d9ad401b9a4e098b1488be7ef446f1349e54e134920b", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "058cf0bf4161817bb0e912472e47b39bcd7f8d843dffa9104ff93ba0a30ed03d", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "24b2d8c6d2023295805ceedf16fa6be3b4e333a861bbed01a20d150e011475a7", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1d4c62cd4856c67b0bfcca611632cc1b192c66ff246a8fd4283f71271a8944c3", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "24fc1057e85ac16b0b8776a9f7f27b138f16b37b4dc5ae76d2e31647a45deb46", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "ae7e8a296e68e872ff9c8f06224ddc742193140fc4679fc74ebb0efc32981353", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "092216adc5a1e4ae5bc77e0a872b5ff23df4031df727210ca7e3e8fcbae2ac40", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "725e7d4967ef39fa6d37a96fcadc26c463106c8ad44e4b21bc1857b305117cbd", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "df3172c93156226a540f2a36c4d280a0e19a8002cba1b1cdc5a45fdef90f323d", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "5ec4040e1dfd0f2eceb7112368a51717955e6980ee6655f41bdd419178a37e94", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "795756d1858446485033878f56b8cc94742abdf410e1617927e330980ae14bfc", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6417ba508e6f0b405b9afb505cd230bae3733932497117813c811057aeec90f4", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "a3973cd71cbf85801bb61d6591457a0de0a76c04d24f09199823c5b106a4d335", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "efb1d0f2304c91666df9bd9a51c6717e665cc961c182bf9e7dcac2873219c40e", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "309b6ac236e37763ef7722fc1fc5c318fcd0c0565443ae87765bc9fe665048f0", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ada05456f347fee1db205c38fce573f382939545fbcfb3c99a15fb728079d442", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "636fb9359cf8ba85939d54d63f1eebf04392f72a1d8e6b0e008fe49c246c1492", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a95c75f1f19e883462968e16dbfd0f2a5c2001c8ce8abf9fb2c8d388f811330c", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "94c80ab4df61359f29967bb71b1f89c13756cd251d5a1f726dcf7721b3e0f013", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "a6f718b5201137666e6c68332a9db67ee0aab13b54c5c96036df218fbf48b80a", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "de3725bc9ab0de70475476b02bd00e2be269319737e90575a216649d04b638b1", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "145cc89ef516b970f2b08e3f9b33f8c47ec21247d35c03072d3c2761a8c732d4", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "98053a571ac2fa884d422f08b202d3fa5866500eddb477fc00d76128822da405", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "bdbc7697a0d323816940902228f3895e6837b6337fa3f56afd58f2f101c7ea95", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "4234000f40333ced5b8068fd2b8633b15bf88f0206fb673039b0e05387cffbba", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f3fcebcbac5a7abe60462bd657dc77a9137c32b29b19609d04cb6266f5358ab5", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "d0e14e7722b2d7f9d727ab4af4ef7e19afd2ef6f09ee0e80886daefab218d13a", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "37588374cde99b3bcc5dbec1e8f57c05c2f60a9bb10d28ffadee96452a887ed8", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e05d68b6225137131c65431de9f299d42c1935c9b025b382a9d934fb86ce7ed3", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1f056dcb4beb161afd044629b293c399546f7f7cf31ce61450107189c54eef77", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e87339e08ff810fb1a0e907582a7340789451ec07f487f6772b451357dc92e14", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fbbe5f2836e291893fc4137107901f8937e04fe79c5bc06512ff61d5026e1d20", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "07decacae90519da51684f858516f5fdb689218c8531368e708d00ba4a03058c", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a297ac7480990a01cffd0567560c142a7650e3d6f3b1c818a744eec830279ed7", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7a39162cc834b301dc86280bbc21bc21bfae04e5abe23a1cca57139e19e8e5ac", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cc154d22097faf0097af5574264c4fc27e07e3fa7fbd4a0506a238d69fe065da", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "d0e14e7722b2d7f9d727ab4af4ef7e19afd2ef6f09ee0e80886daefab218d13a", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "2dc8f1cf38765eedf49143837fb82e7e46c53ab0ea0b3df94ce95e80c833c121", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "77cf9ff6c2fa032843a09450dc373403f1cd6129a793a0df7d53481b207d2a61", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "ea98bf3281a2611fff3c51e1dd0147b23b04e331c44dc2313e5862225851cb55", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "739277758ac2a3b52ee1e96359ae130066f7416509c7c1356cdfba6997ad5ba2", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "afa9da7a4cbe7c87e7bd0da8b72b17fcad675664484a16cb95e0ac6e91a97ddf", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2b62a6daa1174785d184438b8ee2b2263fd4260384e410eb320d8e8edd1e620c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "7f19643de036437664eaaca2760283c3873027ea8bd6d41b5ad00b75b3f588ae", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "2382e5688c9948d3169ac223ac095968097dfaa6fb005a6b456c44fb3fa2adca", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ced06cd994fbf388757abfeecb6861607e69ac04b9f63645e3b0d43a14f347d8", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "22e9c26c999518f181422b52d59890d22386a882d78b310c9e47393d7baed214", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c51b1c529aee20d879802aa8a1140b14be2f4dce9bf5dc1c3c7c61b372085838", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2f1959704c7070bfb99dc9055557833162a58bf13a0da471c204bc70156fc9cb", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "139c4026e0187291bc3714796de4ce3bd012082c58f0f105722c8c1d34e1c2a3", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "0d926628d631a76f1360c031e1567c7860d5f211f86a81d6d5f8afb1c95cd1ef", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "aaeef7c3aa2857a776bcca3222f0b1a2818713c676eaf4459165afddc664902a", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "37a23dd922ae16fbe278c1bc630ada2e4087fd1bfae5fd7524bec457840432c9", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "765221cfe2c0ffe8db41a9aaeabd326de36e24dbd4734e72ad2e51342352e8d9", @@ -16591,9 +16602,9 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0a9f6f8c22e31c0efaa840060755279d4f9c00fd8661ccd276acc1b125764970", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "dfa5f9b295d645a5f0c61990f5630e16df92bece6a096db0605f4796edc9c6b4", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "01b00ea17ca93683b6e9b4a78af4053388305fff71597e67cd7277a22776bf3b", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e8f499f9ddc1269ccd9793e01ba7a7357bed3fa8385cdf9fb9397ad4d197b7ef", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "58e7d49eca04231f31d887e6e6cc9f582571f325a5d29b7a25b10deb11f00e0a", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9d8b67eb06b62c702daba233557830fe735f1b78beafc52663d3560fd923248c", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "249158de2df0162d5f7caf23b486c893285d3b747c2744f1ede27c1bd62ff977", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "bc095b9784c70a73630f5bc0a66e0e8fda6d49e7e5da750bf9cfc9d208b03902", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "605b578522d6627a79c13f90d72c047bb324792b8eb23275468b0bcf1fa8703b", "T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4f4cda6765dc4d4bce5a0a7cd5e1b41b24a9e5e7295b0ca8d38fa50ea600fc13", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8d0cf9321aae6c5b2c3a4f613698a0578cb88295a4babeff28b6bf91aa464551", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f10424440a7a572c6d65fb27a34e2cccbfe24668e5da5d9d69f53f2cd9b1fedf", @@ -16861,10 +16872,10 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "4489e8907a840ef83289f4ce45146dd4ed59d26502af93eed4e379b073842eda", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "d806653a6d4bd2b71c8b2c1995f56875115783f53c43be220e026419df16c1a1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "4bd90276272d0a3ef71aad24bf5facf72bae079751373abfd007258740346367", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "bc66bb9bcffc8bbacad1134234b716ca59918b9bc40243b8e244756e3e2015bc", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "d5c72e891c7764ce40fd924020cb7f05e3076aeb2b02b61f046d4320ca241d78", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "bec1f7173902261007d42979fb302d78deb39a04463763bf1520ea28cf45b838", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "302e72d2a8af8235ade6974974dae0f086c48fb162f7cbcdba27f89f5fc3e688", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "e1657c2cf5e9db6f22289e569b339f48e8cd0b33b181c6d7b5e606542d0c1ed9", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "da536cf73d2145e0575963ed6b999763f6ce31742890a421b9f35d1229459348", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9e611d70dd56257b7fbf85f1c05c0f378228c03b5691b00e2d2b107cf6e58b58", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "88a7d99f84ae6bdbdd45dc680814370878f658ccae2f5aff24ea97c85aaf9bef", "T3T1_cs_test_sdcard.py::test_sd_format": "76c7fed29920e2339f0f29cb9545474bbda504712ad06ac0c44d8d767448a35f", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "19cb5bfc1eafb2aad10f899040705034f5bbaa0104aeb455c08cbaea044ad4a6", @@ -17895,37 +17906,38 @@ "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "dce6047a5ca9a4360ed820c0d2f1acffbabfdf2d7a336b3eff0d7f153fcd7c06", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "057ca836e3b18f19f14d984cd7d2870fe40de824692b34ab234687377cf68e20", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "68959b0a32797150d36d026145561c1ea2482f74ca5ba4c891019cfcc51f6b8d", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "16f8e8a7e18e34903d9534488670013f54b223363958629009bd11bf27a801ab", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "02248b8a17ece7d52309cb68afc8097e9933fe2783c51bd68beaf4698659118f", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1787582af6123f848c73d642276a4219c95584df17951b2d98642b93cd2383e5", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "0c39973c60db9879b4c9bd831e521ff981782bb37825797df0d59cd91baa0788", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e30d686559052df61a65a5b56a41adfadce5c4be6ddd0f91d139de0ed660c84f", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "f335dd8961e1afc2169cbe31e3b267c2ddfd607f8e1e7486382335acbdc02f91", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d5fa29ae92492640a150010652bcc05d895c38a7b1534fb884c27905b414d367", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e94b8e538a136a3dd2fabb09397c76b2c3d123b80862099fef0053d234ca73cf", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "5b174c70072955a6952c3b700cfce927814de3c7cb145dbcafefa301760142b4", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e157b4d38fe91c2f339ea670bb33ace9fc0b6dca83041fdcc8eaea131b591101", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "f9eadee79eae68423d19e3806f0a588465fd2e6f5bd3b288fe2b9f6eee9cd972", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "29552b4ba0add3b81e1f4702a857ca73b06fc40fb4b2079b8cfd95da9367e857", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "ec7b4ae29026546678c44dc3699a7b05262dcfff5141a8b38f7826b7e555328e", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "6af6b66b0725357d6c2c333af860ee054ba8a4cd8efdedb8d76083f2e4ca7029", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "47b835594ab63e9bb8dfdd69a45aa738c81710e40283c4c3dabe75e3a5ae1330", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "7a7cc622227b930fb821404bf167ee01fe49e4d5b6203afbdf00f61c1c0ac00c", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "79fb3873ae55fe6069112cf5fbe03dae90b671eea9a41c82c6397d1b4de5bbf7", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "36994b76014bf6b50df0ad46535e992ccf25a666bc926cd5f21eca4ff351282d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "37f2206ea586e3a4d787a88a3812d607d0a3f11580c70b141f9eceb569e4162a", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "51f3d8e2c238533c24a2982eeff37b6272ba365e3ffe9205ac8bc9790d2c4a86", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "357b584aa93da70a60dc2171f9441fe44911c6a84912482199b0bb7b2ba901bb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "bc11576e224144b08db41d6d54b3a445de3351605af792a5595c4a052c60e8f4", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "30c3960a7449389451eb1d489b131a0447ba30788ef4101b63376545a2b1fb6b", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "4ed527bf143951ac4b092943b8e7bacdb9388e8ea506258189ea03dc086981ab", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "29a95acf60500c9a5e8204c6f956785d9a77244c46111b65427a8d930e9ab7b7", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "887ea30901d04c0eefd55e18ff619d3f7e6be19a7d284de82914e22256a327eb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "392a1f1ee9bb33c45db561b46f7949d773444fcdf57985e1e9561024ad6aeafe", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "6b4d03ae67d98b8fe4eb9bd15c04d3166f109038842027de7ec06bffb2fab7f0", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e238d30e6b5acc12760d929fef34ef5933d08e1a356c44694a672cd6082da409", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f5bf5c36a726d6a0ec39b9c9083da897236ec3f02ebf822437a9f0a6e6ad2700", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e95fd1e2af99ed5f414e9897edc5fd9b3dae3a998e3789eb1b2644903db06450", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0cbee1252ade888ca4f37e5394a76d89e8475b93dfc013b2e20106e077231cd0", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "99fa22729f4501bf4336a955a70f4cf4e7b1d392bfd3f0f072252ca91851036e", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "385ff622b271ff1e604a41d971fda52f3983e4cdb5adcef1c64ae9e8c557c7ab", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "dccfb22149a25b31bfeb83cf575932260611492b61892fb57b616fd0837cc7e3", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5159157e7dfb73d9e3c6754d75acf9dc3b1059185fbdc6ab1e1dbd61ee242574", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "95d3547140e8bd520ad60bd283bfed122a8ec82a32be690ae79c82647f1e7bbc", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "1299dd54c76679f5bbb601cec60b10ff836adfc52c066d4c3055d2ec3600672b", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "885e73d58e4e734b4580c7ec1df060f5b3b691105ff02b407baab578aac61e18", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3f998578def08ade20f821a9e1decee9534f29223910c44d56b3f48e98561270", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e95fd1e2af99ed5f414e9897edc5fd9b3dae3a998e3789eb1b2644903db06450", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "15742acda7adaa2f78280dde78975e00296a08483275721a6c8371cd25c0b619", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "42f88340ac6d0e6d49efe699f778d9e9eb6bcfa3aa4c4dbf2e0d9cc1022940e3", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "b4c7f04c647934c0b644c408daedf4456a330e131a0b1452723eecf96e7b97ec", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "8100d7511051d92bf6c20f76de10c0f97327fe11a6281b34948c42e00b5b4b6d", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c4357225caadac2ce0f207cef2abf93b3823f0a43405006913054dc9033775c9", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4f8551f8abfed53604d162f9596213c30d3bdbedd7e0a01f91b7ff4602f5b599", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "525e129c0dbbdbe50f4c72e0d803b6847adb7b725fc9b29f1b4fb295b7051d19", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "f627a45fd1608c8bec05daefb43a7c126e6bf8f4872993057562e9206af4f100", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "034c76a0a5d48742cdd9042c658bcfa349509a8c7a283b032e02a7ebba826949", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b06d99be344846d8af03cf89543870f17ee5825d492170dda8fdeda443bbaa4c", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "7c8da306cd26c5f1b71b086bf1a3950638a044de09f228642e3d61efd7dad28d", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b9123cb405619c99dd1fa740f41343021f7642db499ef290cdb7e0d7b337e6eb", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "224d1b5bb2c250326d834ee6b584a023eba1ad5c1e070d69c6385f861d34e462", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fbc46e8ea32dad57600f9f4d5e10cd8a60fcb54807e41432b811bfade913df12", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dd0d48ba4e5f820250f0515954d1f204d7e29c818de37dad0e337842dacfde81", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "8068078c957085d5d5999bc56ca19501720dbc0095ec5a4070ae1499846edc98", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "922908f0935d39acce105ef7ef3b1bf34557635c692da7a833009d8734d8bbe7", @@ -17938,9 +17950,9 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd093e21edacca6aaee4e4191ec199749d957b393a932e92bb85f8f34979512f", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "30e1be92c8f217f23a9e3cb396b41513e3405543957615eccc04d6db48be66c1", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ce8ee7157dcd5af873ae9f41260296c1045479fc18787e4e18b7dbcceb6d7ca8", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "aaccb7f5e20079b5ec4cb0f1f270d7bc29f9084c233d0a62a7570b9f402b749f", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ec43e5ccc8482b3160f9426563a80686505bdb931ea56caac1d143ac80b260a0", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "39a6659f7477b838025f8652431863a4c362240138e208abeb23f2dc501bd6e0", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "03a3b751d14f7dc633cdab13c94b93b436027c083d09a2f72147cd90f6bf21a6", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "efb1c6218e53909031325ab2954dd3d5ac14664f5824c434796d3aa223e79717", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f86e85104c4a7f19106323d7dc5f62f06b1ef5461ae05830941803122fb507cd", "T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0764c093f703fc3805e72ead0c6d874083ec5c374f112608964d0c05f2a1614a", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0af05d99cc358d3fb7279253280935901f69b57b6e88a17014e8eb1a9bcd9bf1", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "de5204afe31fba17febe7787212da99229dea29ed7b535bda9d3d7331c734da4", @@ -18208,10 +18220,10 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "47f6e4a3a24563faff2e25b3b28377298806494cdd8b9e90f2f3fc144baf9473", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "a35b3bc3572529dff2fbc9c2fb6d7eaa5bedd362330ceebffdd042bffa2524c1", "T3T1_de_test_protection_levels.py::test_wipe_device": "ebb357b41fbdd0d78491a5864c12f347bea2c08f1b513caf30c45f6e612f2883", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "6599065fb8bf7266959a574547da218197ae65349bf6e411287120432d2f2b21", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "b55b9b195beebf75c23b83f501b0f26451e72a6019a153a21cedb38c1d38f19e", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "d03383873d30ae02953fef96d9f7aaa83b0719f35ba80d2f4c511b67cfdfd123", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f4eb2f23355987df27388956db8a70fdc68d26b47a87cd2462d8422860021bb5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "18d7dfc8e198a3dcbef86df017ba7c192903787c7f7a82b7617ba66035f8040c", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "03d2f9e499b75ca3907da8c39436535302a3c1d1de1069fd9390d72543764f27", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "17a05105f9560e54284e4a8cf62ad3c15897e3498863a66e714bea07d7015421", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "63bc1bf3b040ae47098095bd715628c8a807272d7d810152fff6f9573831dce9", "T3T1_de_test_sdcard.py::test_sd_format": "deadd27fee071017c0cc6e1ef67f8b7cffe94502daa8168b042d1301175477b5", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "1cb949fd3c8d1b1169732dd79133fc25aec82caa6baf3cc54a585181cf825cf0", @@ -19242,37 +19254,38 @@ "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "eee12f0d7be282da5a2b1b964006e0a8247c92f9785097a24ac3e24eab68e784", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "0f8c720d2850c7d067135baf5e98c6bd2e9ca22a12c5b8422976535df8bf56ff", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ca680d0c57519a874c0b7634a07aec36cb531c2baf9c763ac90c928cc85400a1", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "020bd1b8df3974676841ad8a299f672433240b7f50e3447f9d8c52f0edf4a408", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f055ef228186a1b70a5b97541f4caf0f094905d3904b3131cf4f5f2e7dabf81b", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "72edd2c513bb99742064e23b596c79ad867ed6da097ffd3c445645fc2a381148", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "c66a75d3b1a732fe5ea9ada9e81205ebd2a71f1e170f0e26d34546aa9eb2744b", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9ee1e8d7bf62262cfd51f0cb5a97dda00c3a4a248633f3951222d7bc44577bd6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "26ecf6035d8107b607654a260b1103ffc235f4da4f779c199c84ee5689dde3d6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ebf4bdf264609ae7c4d7cece11866d44d270c0d13e660a8669c80eba5577468b", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c4c0a731db6b1c22021830fa44f9693c901f8f75d7b84f4fa3a32c99ba3d01a2", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "21629cfc994bc500da7a6b3927189e4651873011a9090b978e1d9f4420c6c000", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e0768a26e5b95e83b18fdf1f818d5c92964f0541eb44e27654c25b57a4941eb7", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "ee04523f5b0475e009bea70c00687b4a3dcf54f6bef9f4c4ebae2024bfa67bc6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "910bbe13207c7844fcb7299dd57eb4c9a3f4b46494d0fe1e847c2ffc5a3f5e64", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "08afc3846aec7cc415b18b86c88d2d6ded1fdc18551f9238adfb7f8cc572c288", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "558a8b5c9bbd3d10405603f74e8689958c149221cc055dbfd6a43152a3618c8b", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e701225762ce64bed74d8bca5b0bb6357ee68ddf61039aab571dc6d8a001b3c3", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0f028ee216dd2ce8d4ac4f7a2ca0804aca3b579fb76735714b0b727aa431b5ca", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "bd30d5fe835787c26bb9fbcea4cad2e75c743d3fa7dca48db1c4b10d898040e1", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "c522bd2f93ac3a36e0258ede3d8ec8f6aa626aba96862f40cfa0e2a420cabf39", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a4130d211a35a009171fb78d8d33f1c745b92e384334b6dcd815fdfcc146595a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "486f70c1ca104f1604fc19c9e212171b3fa0b4504b53bf8f0f63b0828acc2eeb", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "65edc740cbed4df921803bb84f9af8005daca99e821a5b91c9acd000d2583a51", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "20861f513aee0695093fab75dbe4df6d9349064efa9b99536a60ce8b49064f53", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "14073480b57e18d7fac13536ff08d51d0342833d4d9598b26c2dcb8e1e63a4ca", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "41a35ea4fc6ee9fd231d48b8434889fe890d5fb110b373e96492c17839ba8fe5", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "541c86f25bfeb30e6f802ee5eefa7ded07210e93d6fdccea5c7f1f8f3eb52961", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8c1fb81021c9aae03fbc2c4c2b5a8a3fa1b1eb136fe0e2acf4b709ec94fbdd92", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0ad06fea09ce4fa950be0ab73f21dab943208907b4c3fdcc8ce839a3bda2bdc6", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "ead3131f5db32cd74f9fabf5a17dc2b8e2c3e4819f23fed7daf65f084080e541", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "af5c899e45889f45e9b582e3f25e97a3f4821c55a3ffa3b246462d2f0f63fdf7", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "c3c77394b680e235008d1bf233b53621bcdb134c3d2fa7fd87a5707814ad23f0", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0d3e7eb6389ea988a064d5a9d97c85cbec063751ba7d17c0d2e9cd368ca05fe4", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c6c9343f64aa3c091a7989985b972cc62e7c4916382f18568c463155ddad8c4b", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "8a30caf810592fc11fd04afb647597587064f12fe571843260d0876d26a99c21", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a26c6a8f38b12743573b9f0c2163eefa49fa7ef1a896be00c6dbd53b370543c6", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "d27521a191186a062201f1c5ac52eb6163c02510047736cbc889ced161f9166f", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "60f423c9e246c86472cfeadd7253033f7c1853ebb2eb583cf449ecff52ff723f", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d4b3e64eaa0b2d06a43294846ccbb09d4fcc0915c51cf5f6de191276e3fa9259", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7e06212f37fb48a60e95d46a4cc91ef252a1ee354f0ba082178b2a6a4e184abf", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "4d923a28d1447c38cecb32964c5ddef6dfbf1476f7b41c884e0b541629d6107c", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f0cf1974b868ec8b4c811cb5e0ce04df59860c0e194e2b390d784a654b3ba8ee", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0d3e7eb6389ea988a064d5a9d97c85cbec063751ba7d17c0d2e9cd368ca05fe4", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "538e6f1202fee8abe7e3d86fcadc27520b6a2ef864a8d2e7d8aec37a5d111cae", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e2dac5442b83360440bda5bf903fb0976c228226ce448f3c22676306a85ddf78", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1c5a0fbf469905267e7d3622530879d1ad52a5bd3aee3323b846d92831ed4631", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "974085c3c23e66f27272b53e4996bcfe907d2a9bb163d0f318edd9d915309557", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b7e097fabb5d5ca4e7dcbf6c208e2925d90502f7dbd3274fb01c7576fddc7431", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "72ae0214d906bc7478bbf30089df9a57551fa4c58032c8d813a098e2c8f2d780", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d1da48a5cefeaa041b0bac6f91341dfd88776815e335321e403726f28d729530", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "6b2d91c1a924554526e1dbd47509b116161624cc6c5135eae9b96760592df00a", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "c52e8703123c9a4f9f138779671d41550c5aebabef805fb878896b969f3ec0e8", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7206fad05873b9d8b33423a3a455b9467143a98bb74df89ac626869c6f793e98", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f5cd4384ddf453e4de4b49cbc1801202d521700ef10959b27215939017f6d2d0", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e02bd958760ac51cdc92bfe98a7fe1bd352053ef022519901f12e342e3cdb5dd", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "bcf2d76c628d19cc576b84ae5ebf584b74b962671a8c0c60037c61f74b41bf23", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "adbe9651b01e32224dd318e6f0e2aca6ab83a3b0b283d621607412d95cfe5deb", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dab9f5dbc939a70d74d7cf892c8765268c7b044d2a982aac161c0d8d428e24e0", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "101d6ada0e92e2d46378269a9845406b19f9846de077cfc9f9203b062cade36f", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "db10660c23b501d20c2c7640b564758b33c9d3eedbea8193d1f5937cf425153d", @@ -19285,9 +19298,9 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ec64c8c0cde4aafdb1d5b83232c47e33620f45bd232a9cc44df4b50f3777936f", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2322c88f05f19d2faa0dff594fd574fbe0a90260d498116edfbb5c282d2e101e", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "6fe22a11fec54327631a72dbb77a50b4752f6bf25c520d4d5e34365d4e0dd1c6", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e178bbbe5e34f51c143215614aedafa77324ed1a09b33d96d74e4858680e97a0", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7402ee8b8df6259f2ef93d8819c19fcc25f786d06f695bc8126b738bd9102678", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "233684e1724c86c59199b19fc7debf14e777fbdd6e2b0a0c3c019ecd1267eb24", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1a691412647be159cc262fb4b0b6cecc47b57d159d4aa8eba4e219a8b4054774", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8608496c6815f89998b2668f042276b40ebde3715a496ed83103e68fff7fb6f4", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "11717c56f06d6f82ab72f4b7681d163fbb81905dba787573e59fca37506bd712", "T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "951e1a39a1549b3ab20d44eadb8fffb035947dac52cc5cbed8070f353c6e0041", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "61a13248da3ed86a39ce66da8dcd57677d14b142a96f90cb05be6f0a8fed081e", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4bde62b1aaec63eca05b222fdf5446afc3fa152abeee290ab9d1c6f4b1561c71", @@ -19555,10 +19568,10 @@ "T3T1_en_test_protection_levels.py::test_unlocked": "93d9edc9f59c738f0cb083e96f464cae99fccadbd3768a1c2a11258d8eeda9e2", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "7f26c6d11d1b8f56fb290525490665942b25e8ca9357186c5e343f58a18b8860", "T3T1_en_test_protection_levels.py::test_wipe_device": "2dc2c452d2907afc48d1d622ccd3ce692ab3633a0a6e425bdb19014c669a237d", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "b10cb6cdb04a0cf22f73647640e5d874050d00e75a36ed45c13752ae78c3c764", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "b79e5de420bcec65338e45799e0a4d488e73084a48e0751fb70402027402e96d", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6022c19b5a8eceb268a14e1afa4d0fd8c45a58ff8913390dfec189b151d0cd39", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c411f4b854798ab93ae2c5f2a9a0b511927d123c779c8b9ac06c394233a7f307", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "2841d2df5100309616abd1f2c3d7f58d228cf3b79ac78b88b6fb03a7241edb1b", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "0d38afd539213b25b854225b8be2e8422f94f0bbe712417046d1c3e4adc808c0", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "36dcd8560838fafe6b45a60fe95c19c09efa8da40055beb4eb7fb35b77a60bc3", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "2dad39315c25a0a9f54934b78ec631b96e310b536c5c5c3fc502a875d13e844e", "T3T1_en_test_sdcard.py::test_sd_format": "7be6fb799a7ec5d2a7812c8e0e57b09507ff1a33ae151d05ab8e7c627a2b0532", "T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", "T3T1_en_test_sdcard.py::test_sd_protect_unlock": "06c5df1542420ab8f04e9e048042b475f28459607a5d8c9bf15bef9d0f320af8", @@ -20589,37 +20602,38 @@ "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "7473cd04dc18ceb89cfccb4f49a87a561fa7b27ab2651fe71932b2909c294e37", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "bf0c90fc091a9a8d0be9075701d77ec781eb165cbbf018f3c1081b37f4d42f71", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "27a398c55c96c448e4ab5b3c9b65a16f6fc34583f9c0582d1f68996a39427009", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "5ff18179cbb0bc013220aabf5ba50bf780f1c2d9dd65305622666fea07583bd8", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "7e2969826adc99e358dbd4547277740eff6038790fb81c66dc2af3d1b481d083", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d467eacfe212e8a7a42f5aa73cb7475282f997b55f99601ac3429969715f9d9f", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1ba996657b5ea84fcc453fd960892904ca5bcb274c362cdf0e83f32ece00938c", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a05ba6275ba44c75c88ed569b2b225c05740b45b4c95404a8008e100102605be", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "47a68a77d6faed31fe8a4a8c59879b5e2c34644bba6c99e21314f94f347edaa8", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9c89c56503312016d675f4b4ec5483a37d4fcba2d30572df1d26682f46a5183f", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "c04df05fe69fd083724fbf45ad9f280076e587829d0dae1b7428fe08e93edf2a", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "0a13a533533f52db6078406c8ce3e26855f633250ff97c44c2c12a1d58c98e51", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "b96404739681ff070a7507075a1eab6e689bfbd2ec7d613df7c293b56ade0de6", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d11413d564d7aa8aa60f288cfe9c1bdc50b668e8a117e537f44c86c9a0ed392b", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7c172db2fd6fc5499583ed1cfc057e0b4e82d78cc769ff5c7f915907d02c00a7", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "11d73e58305ad30aaab1b18fb8d46caf26ef23137104e8121a6b7e55c2291558", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "01a7c945d65e510fc46940f4aa8d4fdbca1e3a090510d60ca74e7103197a67b6", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3dc02cd759baea568cef80c132f3d80ba9c2d7521e716a5aa2c80cea93c1aba8", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "74830ff46e72546709d88e7e3707b8eb11fe770e94badb0aba1763b62c442379", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d94bcae899def74d77a530496583c67e0a1c97abe258f3a7118b3bf158389fcb", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "9748342672b7dfbbb40775097ac15305a5388b396f7d4fd2e0e572e73b038937", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "10fee7a35e4f7b1b5d30f86861d92626d8c9b03aa718323c45278f1209319bc9", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4db474c5833736bd54f1739ab5dd00ec2498c593dd53cde3d0ced3eadc08df5d", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "01e2c519fac859278333cc1ee83f2f7aca113f698cafff63370ba9a0b067b54f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a6a76666ed92ce1bfd231ccf33eccc03b4e6bf4e42260d7c1aacb5b88b7c5072", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7b5891abd4fc7b82ba30daa1b8ab4b08b83055d8ba1fff81339ac50689168c3b", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "acc5a52d87cd9cb134efe5b7fa5e7160b7a5e992952e45756e1c7f350d2a2500", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f103fca137215f921ac887bafa7a78cdd4b904900217eacd27c7c47fc42fb1b3", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "d1050c16ea2d4b7c2beb5727703e819e34af3d8f660ee1dfaf17724325d176cc", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "32dc866da9a502cbb7dd56a1e5ca08abe7a9216bea99a3a868a7f366da9b7066", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "54a01f2156fa7289ec99b818d9928d10fca69cc081401b866bb7a7a0170a4035", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "5bcf14978edb212c74da1b0b2b31e5f6e905b59791c2388455aa0bf7795a02ef", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "023ba896d8710b10072030b9a96ba8cd171cad1210f1eb98245b79360313e3c2", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "303d5f8b8e25a8d129d144eee3b52d9be0ada15e6ce6e4ed31f729cb3bb0029b", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "29a3c2fc4310f95f3541b01ce5bcf6eb4fede1450e7d6ffe8781ff344f9968e6", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "77281552d202f793b256c72cb559b261fd125679d198b67e8d4ee1921a0010c8", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ec3ff153ac63edc8ab2bf51189db2c123f96ce3cb49830ba87a768ba520e3786", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "2755f1fdac7d78331f17410296d86bb0af238170ed21416a28b6af4dee3ad106", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "09ed12059d0997eb98184c9341fbe7f50cbad85962d192fe5a5bb434df68bc47", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "140e3f86b43fbe07cb4d7ebb4c0ddc0bd122c7b85fc38fdca394a10394c02c35", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "25bd7e50c98e87aad33534b017ea396d07538e606c161a01ecff94ad3c85b034", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "0b680fe903564441ec085869975a68b10e3f45e4d3c16f3e8735118e03c0e03f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "eb748eec0e1a4c92d0a4c17298cb452bc993b96a0e0bbf346944e6bef8cd7ed4", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "303d5f8b8e25a8d129d144eee3b52d9be0ada15e6ce6e4ed31f729cb3bb0029b", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "ea5eb133806e710b3363355bde10e5a9679ac0c69a5354abf0245ec4c4a841a4", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "b7652babe5b8a851b87db4749e0547e1f3a74f5bcd9f078468170bfa2beb10ac", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d2a230a0a66d6356bdee423034e69b370b8ae0ade478850dd3330091f6ca0365", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "63f0d65d222ec878ba0f94b73652735cd0833e78bb7ea58de270e1c5b92dc39c", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2d49cac8a811a16ea2ba9d987c2e3a3a2e53f8ad2b19f3fa2607d7a2230bd09e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "f7f383fa8e25bf944d0c671fb701207b6458869d87b69927a741997a0905a511", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "76791cfbf0a40d11b403ad67e71bdf150d24aa58572e94d95c2ac8c9449b1a73", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "bb0422914cf05ed8b92b10b78441f73b2f086eafe14dfddbc07a830c68370dce", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "1937206bd2989e246e0013b468e209fc4addcd6bf486a74e9562db146fad7719", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "6105752f9d9906195764a898ea2d151b448f5e6924f8b0a58182fbd244f3c7ea", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8fb8c916a2efa26be8c2b8ed2cbc16530fd9b10e09f4d5d9ee5ab5d42ddf8c90", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8ccd8c6ac6e2b9800c1d63f4afca16279984882cdd3463a9fe434c3d25936f43", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "b5bda9a41c176f6f1b317c7401f65533905e6c2764f23da1931653c48782c640", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "25526e25d51f7f1a6b80423041a9a6462775356f04669f1f4f175cf071500ae5", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9731c2a43c76035b2ba266400a0f7fb48d9664b684f2c03c6a1997e8a4d8c968", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "0d7d582b5bc1e2eeb4138c73bde3f477c9dc773c3049f1d3ca61d51378fb0f95", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "3593a02883aa2df4eb2264bd6253599da3a6e4f697b9fca729912c8478250b37", @@ -20632,9 +20646,9 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b2b3f5d920906e794b491568af6103b8b1a6fbf57ce89f325f892e3d113e3833", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "085c58e64c751a36643acf9bde37af20f99a99d1fadbf870003e5a291ed2e87d", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2b8712dce67fe3dea95754aee775c651cd40cbd184221f440e9ca41da4eabce1", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "814b29c64168417b085b09bc3da13978b9cab53a31ab7a6b0911fd9c8dbf9505", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d1a7441ae4cb91fc23548d83520d8876b04c17117e05037959abf55e01b7d8a7", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "d01e408c7441f1671a4ffd150200cf851fb2f6d8cc462225f20eb9a5975fd3d0", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8923a59ab4531fc987c8965592f2a3fd8fac4b4b60846d1a8e3c08bc13cd2bd5", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f69c838933730806c344c51da6a0fa372168a215395672f79f8f0ea6ab09eef4", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bfc719fa54d4392153c9d773ff627bfa2cadc05fa3cc04232c0fddaeda3942ba", "T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a4f2dd7a4f0794fd21891429a4efc75158edfdd515f0dce5afa9ed238a27d63c", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "103f8bb4fdabb28090ca1e21679c4bdcb6e49ca800a47f0f5f71dd877c569996", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "dd5fc347de8f95cc2817d8bfdc21a2b3fa4c048a9f66a09c15d876b90cb04172", @@ -20902,10 +20916,10 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "fe43f2681f087deeb6ecc92501c4eff2d44a30e4ddfa7e2beccde954ae40cc0d", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "1d3351d9da92ff5014ca1a8a75211fa78d938828ac5990987a50fdf6888a2230", "T3T1_es_test_protection_levels.py::test_wipe_device": "bd526c2186cbe66c01f2336f3eb48b7bf9c612c5c906b11395fbc30e5b5d9f94", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "cb609c9cf6c4217b8bf857304f176f6ba592f314a4f4e2b54dee999e61332c23", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "caa5290015846945826de8bc718f1d3f8ff3ff154ba2b859bcabe6bc0a760fb0", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b2713252bea54c7fdf4e7148a53715f9dccdb673e0904651de8bed87ed4cc0ab", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8593e051d37352e53ef91d3719ca979076d61ad4b4c59066571e65dfcbefc4eb", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "4696c4ce5da60605626c9637b488d7ed76afefef6d9d63485260d3408cf50967", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "ddc0d93f5bae11114b0cafd1385e81aabf96d4fcff90670e0d67acca09dad82e", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f001fa4e06d0e347e2aebef5965496d6e1f8a791c29ca5722e08f4d3d44a79b4", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d68fee19d8ceb57fa38df3260c1632a6253d56350f68e486fb059cf03fc552cd", "T3T1_es_test_sdcard.py::test_sd_format": "72f118c0af96c0efac42421ac361945413a8e956ba1715eb89daf6daa772d5aa", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "33fe33134d770ff08151fa7fbe46f0c1feb78a65a20dd52e6fd152f5be0237e3", @@ -21936,37 +21950,38 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "13bd71028f5b53daf8f88604730de9f33f84b98421276d6ae2020ccd8980bfef", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "be2286108237e6b321e41efc2c4dcb17d7891a664f1674c99c537083d4582f93", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "8725ed753c16feedbfafaffbc2e926b838d044aab6c5908f367b71062420be2e", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "4d9a551b8aedce10efdb327478688229a97c4f25fb9e2ccaaefd66e7dd4967a1", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e5f9b6583046b56616b2bb019d37e9a33e6192213bb6df858269b9dc6381c1ec", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "7adbf5c3587cb8f33dd9b134d6a3a78f48c715e91d0e450726a479e2fa1ce687", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "336c50d9e303356ebb8ae6cb182bc21815a987031b7870322e35803164231d8a", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9ff972a13f12934776fb2a3a6b15315851e33c06402b4da0c1dda0a7479660c8", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "05a6ac0b137db1b78810b9f7d3d738cd8f3d5336549532ee37f7e0c0d205de0f", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "6c8d3f30ae4e6c61f1616b0192fdf2d01f4e03ec1af7b54bbb8e0c002e0243a2", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "c5ef1dde5086f61bcefae4da21e0a4fa3704243c2d401dd70a050ceb6733414b", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "65d1f81530eb3788ccf838c7dcd17c0f6fc1b2197968b4084cc270d1be5fc9cd", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1bf77045e6d65da395d91c899f6c3bea810eaac95e2480f5c78aad804a6259be", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "4f4d2dc6a904b25641e962f3eeb228faeafe27e296b877bcef156049d41f9325", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "59b756f042f7aa360e0b6b9dbdf41ca912fd01f55b9ee46c9390f7bdb3b5fc17", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "09ddbf75676e36b179702143c6f1796c9f3cebad6ccb3e48586bfad50c0a1cfe", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7f073737068fe3f9a612f72cf5eae83b584c6ba47d0479263cfaf24ecd900fac", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3dda559b8342a94e96e57a7f944510067017d5332655d71cec17ce484c660f8c", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "05a6ac0b137db1b78810b9f7d3d738cd8f3d5336549532ee37f7e0c0d205de0f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "88ab2ef6ee6a8aa02a26f7aba9c57b787e3291492dbe2af88f3da893cb4c1b08", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "6d75db129653518b3369888b4086093b4e33e0f2ee0da7b7dc26b4af33227ba8", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fe97ff4517b27442a18e5631ad0688c89ceaf97783515546819a9051ff83e1d2", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b0d60eac68db917ffd11ce849b5380ef521a1ddad9c275199bdfc13bf5c6d9b5", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4dc51adbc1a91b02c236878f8dbdd6684768a9554c80ab2e4ff3be986fd408fa", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "c103ce305ca54e15c2eb97f4179896eb065997548bca45be9e3bb1fae77d764f", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "2c00ed0a6c03716d5c3df7ba21d9e62fcd6d1ae7a9bb86c43159ed96370088ea", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "4f8674e58aba9aa2a7141e7e4aa2c7b70cbf2298a4e2ddf4aa43ae4c1a1856ab", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "297350887d5e0a171f15255d455a02b7b814c045c0020e11a89bb2074366f2da", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "73ec9fcffa49a79ed8fade6c7ecfb852ae6c17d2859dc2ab544ee9916a5d2141", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ccb21120f5080a4ef8ba4ffb9c7412f9fee4db6fe888ea66ecaf8ec771bcf40d", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "eb2241e2818b6795d2628ff0e964fa2c55b9838b54db62965f70b1683c6cdb59", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f807ce31c3e7089de6d0d51f8712198d1323493c1f1f402050372e2d8062e1d1", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "24e2895bc6fe62454556e7ffc17c91fb2d482e182682061998a28e751137b96a", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "ff73723868fa85968729529443af81ec02c6e1967637c288c43bab6143db8c9d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "72f4e5e0fd6831120136591ad268306b0406a78a29a50ec146b86bd6210905c3", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2a624a785479bee226ad18857c9e10e5b84183ab9b4befa2e00eeff8d87f1217", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "337ffca4bd75ef71669292eed7ae25aa8fe785e7700fef20a195d5d153d72542", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "7fbb1b5ff9b0140b4b1cdf1e6e1aaecb1d5f83c1503dfe47bda72618e31bebd8", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "40bf5c8194fd746d64044cd95c2c6aa0562e9c755c7e2ebf49523c1331a5dbba", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f4fe1e248b9dc8c9ef059e33305b806da5c55da332797865537839b4bacf6432", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e3f89d8c87d54107d5edc25ee4fff0d70c9e80fa5feacf95cf1d903ae2aa9faf", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "bbc3d28d32dd8d54847cbb02b09edc2451492a3f0e193fe934aff6cc48c6a622", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "47b5a7273bb3cccd79817d2710b3f2b6eb302f5e1705aaab8f6d52db89a980c2", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "6204587e397eca636781391239ab6c8ff6699d58c66205ee3d9865a6d50106e4", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "72f4e5e0fd6831120136591ad268306b0406a78a29a50ec146b86bd6210905c3", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "f19738ebc18bb66e20a8bce6c9f3fece4d017e9de9392e7de169b42a9aed1db7", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "899c7f67fed9c7fe49ec0256025d3dc9a64e88f8bf1e23a51f1d13ff322bb3b7", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d079e807d2a814e22fd2f8a6d1a7b4f552855b8604bd5dbdcca70f041a272f01", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "935853a14d308f64b42eb5954232ae957d6790852e6079cdb5cb85897225c3a3", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4c081398b66d9abfbd614f7212f669a92532cdf42e071393c791d07538b08b41", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7dc9f1d962683da973892213937656f171f6657dc9e71beef56b3ada78b668cc", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4856c35ff7ee8cb94fe59e49faba8f29fe4e08354931e5aad107d8e3f09e1f83", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b1d49b8bb76d1decb056feb13335ec9a58024e9d23c41f1dc8aed60d3b261f87", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "95024b5c27826bf4f3ff53bdba6c297550ac8c0e4ee90866ee94642cdab53857", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "cb0734a617bd6cb6154540a0cab05ac6233952807c9e906e2eadadc41676b304", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "52176c4c716fbb836a629029452345a8cefb64790801d80f3610b02d6a0ff782", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8cc10f59d8f0385a8ef2480110998a9ff10f199f099ab02b2760db0c32af33d5", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "04f89551545d65b9253cd773123ac045f1898947fd667cbfdde280b0786f9552", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "629f2b6aef6b2697f165ca244bf142a3fcab1dcb5574062d4a81040a7cb527d5", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "c614826c96d99b311b17330b0b55a4e300262ceedfa9f6eaaf7d74f87fb5788b", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6eae2bf8f4478ccdf0fbfbb925b773be87044c64af295725e5c60410d47e3e63", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e9852303e5bb8bdf89842a70bcd5da74fc58aa586c193687b57529b5b10859ca", @@ -21979,9 +21994,9 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "36e70439f852096a324127a5198d6f22fd27588df99181ec9ba3616b04f311ae", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0ee1d255cba202c089e106724293a930252ef84abb1990c260249a3b328bdcc0", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b4756695193a1502c00d78e0add614a61485c8fba37047b37a19c57e342542e7", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "93848c26516fbda44742087c0d4bbdda77de0a59d5e15fdbca9c587969cd98a9", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "aae355422f77c44667de9751491da40081b87ac0dda00d53acdbc3c35deda935", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "86452546788274496c2759f86225d2a33b0d53d6a76054cdacc7944426bba87a", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cf00b387e6505d133b0a246efe235424b0ed84d4ded82177e46946149f9282f5", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0cdb03c086c8a45c0ac80aaaacbe8fb68a443b942e1ebca354a02594a58b5b99", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "fb6c80235de30d9209b43e5fd84a414e85dfa46679bfd8b37411df0d52ccbe44", "T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3d346cebd59afba91eb0dd03fe5ffff9b20e4a03c375bf99246b239353e7e145", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "49622c490d7f4a2e45c361b01e4158e861e2ab2bf22f040b825fb8f491512615", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cb13cbc4e960a28c1ac13f240014a3c6463cfb292d0543c2a634c1256f2389ec", @@ -22249,10 +22264,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "41aff29e00f12334bc5f4404403a86399c0bc3f3c7aa36619d13247918280d8e", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c7fb9d00a7a5519c050401b6b1181aafb2cee07aac911a1f69ca19bf4926bf45", "T3T1_fr_test_protection_levels.py::test_wipe_device": "53279b977255d6d8874a592a5241f6a113e96442f871e96522ed8bf12fb05586", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "59ed7c24ccf9b68461b45536b00462d9e4ac9d0ca653b8f411ab42937035ded6", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "dfd2eb0d986d42da07019c555ff8467a365701122e5edf7950412d7202461367", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "339133e9ae4e411c8d7c86e28e1292828fb98663f81df02a2619855d61ba2c37", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "3eeaa5a884fb33b97b19ca15a9911b876aa8ef4e9dcbbe368a96f0ac3a3f521b", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "5e434ac0c0e4e1082b3add2fb0c704e3c9028a3e25c270ce61c7b1c0be2e7b16", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "8f22ef761629afdb7be446443466b01899b252fa356ff13ee711aff18f3953aa", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "57be3e939999c8a96802c666cd9d1db7e60025d530908a65015caa31add1660f", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "2c7360c9243075f2a3ba01b27aa178b5ea235c4eef0a429e1b26e8753580d9eb", "T3T1_fr_test_sdcard.py::test_sd_format": "d47e1612b47b28186d3517ccc686a4ddd4b60557c41446373e3f0f97f93d0105", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4ebf7f7adc1ba12f1977c97573f1489ec6d58b8e71d67213d521f1c790d4fabf", @@ -22311,9 +22326,9 @@ "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "e997cc958f7d7d262604e7728469f7a6952b60c0b1b3520252e3d58e49b41e66", "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "a0879b23f779049abf46c42608ee7b841a0b8dc4ac83b85ac83a83e992068165", "T3T1_en_test_shamir_persistence.py::test_abort": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "13edcf7057ed889c811d06d2f36df561898a464c5e3ec3786f32bbf40d8a6c6b", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "3720a5f7f2d5826c86b672b5aba74b3f5c5fe860c59b125807ead4b98a73cecd", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "e3f6e19fc898057a7688d0bee6ecd2b5bee188573f12f2e6236de2ce813834f4", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "1c5d122bf2962438ac71eb20f0fd000494bc28a89c59aa397136da62d8d70901", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "6f24e04532cef5a0316795e18ebffe0e45cd5a52044e58d4bbee11006834cf56", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "d75e7d84af3f78b4df3cd781b0d65d0dfba1ea6f31dcd6cdfce8bc4fb1456374", "T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "aa4da89845a41383de2a091315a54b90996c1f71692adcfaa69886c35c4ad261" } } From fbf380cabaf5431376a84a297ea5036007a34384 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 29 Jul 2024 15:11:12 +0200 Subject: [PATCH 478/626] refactor(core/mercury): init Paragraphs from Vec [no changelog] --- .../src/ui/model_mercury/flow/confirm_set_new_pin.rs | 12 +++++------- .../rust/src/ui/model_mercury/flow/prompt_backup.rs | 8 ++++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs index 44b871e887..0ed39821da 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs @@ -6,7 +6,7 @@ use crate::{ ui::{ component::{ swipe_detect::SwipeSettings, - text::paragraphs::{Paragraph, Paragraphs}, + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs}, ComponentExt, SwipeDirection, }, flow::{ @@ -76,9 +76,7 @@ impl SetNewPin { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; - let par_array: [Paragraph<'static>; 1] = - [Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)]; - let paragraphs = Paragraphs::new(par_array); + let paragraphs = Paragraphs::new(Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description)); let content_intro = Frame::left_aligned(title, SwipeContent::new(paragraphs)) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) @@ -100,11 +98,11 @@ impl SetNewPin { FrameMsg::Button(_) => None, }); - let par_array_cancel_intro: [Paragraph<'static>; 2] = [ + let paragraphs_cancel_intro = ParagraphVecShort::from_iter([ Paragraph::new(&theme::TEXT_WARNING, TR::words__not_recommended), Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, TR::pin__cancel_info), - ]; - let paragraphs_cancel_intro = Paragraphs::new(par_array_cancel_intro); + ]) + .into_paragraphs(); let content_cancel_intro = Frame::left_aligned( TR::pin__cancel_setup.into(), SwipeContent::new(paragraphs_cancel_intro), diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index 5b92ecbde6..899a0040b3 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -6,7 +6,7 @@ use crate::{ ui::{ component::{ swipe_detect::SwipeSettings, - text::paragraphs::{Paragraph, Paragraphs}, + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs}, ComponentExt, SwipeDirection, }, flow::{ @@ -99,14 +99,14 @@ impl PromptBackup { FrameMsg::Button(_) => None, }); - let par_array_skip_intro: [Paragraph<'static>; 2] = [ + let paragraphs_skip_intro = ParagraphVecShort::from_iter([ Paragraph::new(&theme::TEXT_WARNING, TR::words__not_recommended), Paragraph::new( &theme::TEXT_MAIN_GREY_LIGHT, TR::backup__create_backup_to_prevent_loss, ), - ]; - let paragraphs_skip_intro = Paragraphs::new(par_array_skip_intro); + ]) + .into_paragraphs(); let content_skip_intro = Frame::left_aligned( TR::backup__title_skip.into(), SwipeContent::new(paragraphs_skip_intro), From e30fe7769a1d86f5bf354d61f53965c077707d3c Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 29 Jul 2024 13:13:35 +0200 Subject: [PATCH 479/626] feat(core/prodtest): add more touch layer tests --- core/embed/prodtest/.changelog.d/4064.added | 1 + core/embed/prodtest/README.md | 44 +++++- core/embed/prodtest/main.c | 144 +++++++++++++++++++- 3 files changed, 184 insertions(+), 5 deletions(-) create mode 100644 core/embed/prodtest/.changelog.d/4064.added diff --git a/core/embed/prodtest/.changelog.d/4064.added b/core/embed/prodtest/.changelog.d/4064.added new file mode 100644 index 0000000000..316a6e42e2 --- /dev/null +++ b/core/embed/prodtest/.changelog.d/4064.added @@ -0,0 +1 @@ +Added TOUCH_CUSTOM and TOUCH_IDLE commands diff --git a/core/embed/prodtest/README.md b/core/embed/prodtest/README.md index ca551b68e6..e9302da623 100644 --- a/core/embed/prodtest/README.md +++ b/core/embed/prodtest/README.md @@ -88,7 +88,7 @@ OK ``` ### TOUCH -The `TOUCH` command test the functionality of the display's touch screen. +The `TOUCH` command tests the functionality of the display's touch screen. It draws a filled rectangle in one of the four display quadrants and waits for user interaction. The command requires two input parameters: @@ -106,6 +106,48 @@ TOUCH 09 OK 50 90 ``` + +### TOUCH_CUSTOM +The `TOUCH_CUSTOM` command tests the functionality of the display's touch screen. +It draws a filled rectangle on custom coordinates and waits for user interaction. + +The command requires five input parameters: + +* X position of the top-left corner of the rectangle +* Y position of the top-left corner of the rectangle +* Width of the rectangle +* Height of the rectangle +* The timeout in seconds + +If the display is not touched within the specified timeout, the command will return an `ERROR TIMEOUT`. + +The device report touch events, coordinates and timestamps (in ms), correctness of the touch point is not checked and is left to the test equipment. + +The test ends with first lift-up event. + +Example (to draw a 100x100 rectangle in the top-left (10,10) position and wait for 15 seconds for touch input): +``` +TOUCH_CUSTOM 10 10 100 100 15 +TOUCH D 69 35 357300 +TOUCH U 69 35 357328 +OK +``` + +### TOUCH_IDLE +The `TOUCH_IDLE` command tests the functionality of the display's touch screen. +It waits for a specific time period without any touch input. + +The command requires one input parameter: +* The timeout in seconds + +If a touch activity is detected within the specified timeout, the command will return an `ERROR TOUCH DETECTED`. + +Example - wait ten seconds for no touch input: +``` +TOUCH_IDLE 10 +OK +``` + ### SENS The `SENS` command is used to evaluating the touch screen sensitivity. It draws a filled box around the touch coordinates. diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index af6c6794d0..3a92daf402 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -17,6 +17,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <ctype.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> @@ -160,6 +161,30 @@ static void usb_init_all(void) { ensure(usb_start(), NULL); } +void extract_params(const char *str, int *numbers, int *count, int max_count) { + int i = 0; + int num_index = 0; + int len = strlen(str); + char buffer[20]; // buffer to hold the current number string + + while (i < len && num_index < max_count) { + if (isdigit((int)str[i])) { + int buffer_index = 0; + // Extract the number + while (isdigit((int)str[i]) && i < len) { + buffer[buffer_index++] = str[i++]; + } + buffer[buffer_index] = '\0'; // null-terminate the string + + // Convert the extracted string to an integer + numbers[num_index++] = atoi(buffer); + } else { + i++; + } + } + *count = num_index; +} + static void draw_border(int width, int padding) { const int W = width, P = padding, RX = DISPLAY_RESX, RY = DISPLAY_RESY; display_clear(); @@ -331,19 +356,22 @@ static void test_touch(const char *args) { int column = args[0] - '0'; int timeout = args[1] - '0'; + const int width = DISPLAY_RESX / 2; + const int height = DISPLAY_RESY / 2; + display_clear(); switch (column) { case 1: - display_bar(0, 0, 120, 120, 0xFFFF); + display_bar(0, 0, width, height, 0xFFFF); break; case 2: - display_bar(120, 0, 120, 120, 0xFFFF); + display_bar(width, 0, width, height, 0xFFFF); break; case 3: - display_bar(120, 120, 120, 120, 0xFFFF); + display_bar(width, height, width, height, 0xFFFF); break; default: - display_bar(0, 120, 120, 120, 0xFFFF); + display_bar(0, height, width, height, 0xFFFF); break; } display_refresh(); @@ -364,6 +392,108 @@ static void test_touch(const char *args) { touch_deinit(); } +static void test_touch_custom(const char *args) { + static const int expected_params = 5; + + int params[expected_params]; + int num_params = 0; + + extract_params(args, params, &num_params, expected_params); + + if (num_params != expected_params) { + vcp_println("ERROR PARAM"); + return; + } + +#undef NUM_PARAMS + + int x = params[0]; + int y = params[1]; + int width = params[2]; + int height = params[3]; + int timeout = params[4]; + + uint32_t ticks_start = hal_ticks_ms(); + + display_clear(); + display_bar(x, y, width, height, 0xFFFF); + display_refresh(); + + touch_init(); + + while (true) { + if (hal_ticks_ms() - ticks_start > timeout * 1000) { + vcp_println("ERROR TIMEOUT"); + break; + } + + uint32_t touch_event = touch_get_event(); + if (touch_event != 0) { + uint16_t touch_x = touch_unpack_x(touch_event); + uint16_t touch_y = touch_unpack_y(touch_event); + + if (touch_event & TOUCH_START) { + vcp_println("TOUCH D %d %d %d", touch_x, touch_y, hal_ticks_ms()); + } + if (touch_event & TOUCH_MOVE) { + vcp_println("TOUCH C %d %d %d", touch_x, touch_y, hal_ticks_ms()); + } + if (touch_event & TOUCH_END) { + vcp_println("TOUCH U %d %d %d", touch_x, touch_y, hal_ticks_ms()); + vcp_println("OK"); + break; + } + } + } + + display_clear(); + display_refresh(); + + touch_deinit(); +} + +static void test_touch_idle(const char *args) { + static const int expected_params = 5; + int num_params = 0; + + int params[expected_params]; + + extract_params(args, params, &num_params, expected_params); + + if (num_params != expected_params) { + vcp_println("ERROR PARAM"); + return; + } + + int timeout = params[0]; + + uint32_t ticks_start = hal_ticks_ms(); + + display_clear(); + display_text_center(DISPLAY_RESX / 2, DISPLAY_RESY / 2, "DON'T TOUCH", -1, + FONT_BOLD, COLOR_WHITE, COLOR_BLACK); + display_refresh(); + + touch_init(); + + while (true) { + if (hal_ticks_ms() - ticks_start > timeout * 1000) { + vcp_println("OK"); + break; + } + + if (touch_activity() == sectrue) { + vcp_println("ERROR TOUCH DETECTED"); + break; + } + } + + display_clear(); + display_refresh(); + + touch_deinit(); +} + static void test_sensitivity(const char *args) { int v = atoi(args); @@ -703,6 +833,12 @@ int main(void) { } else if (startswith(line, "TOUCH ")) { test_touch(line + 6); + } else if (startswith(line, "TOUCH_CUSTOM ")) { + test_touch_custom(line + 13); + + } else if (startswith(line, "TOUCH_IDLE ")) { + test_touch_idle(line + 11); + } else if (startswith(line, "SENS ")) { test_sensitivity(line + 5); From b37971eea404c30265f80cf435ec912a5e699cca Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 29 Jul 2024 14:12:44 +0200 Subject: [PATCH 480/626] feat(core/prodtest): add commands to read bootloader and boardloader versions --- core/embed/prodtest/.changelog.d/3752.added | 1 + core/embed/prodtest/README.md | 20 +++++++++++ core/embed/prodtest/main.c | 35 ++++++++++++++++++- core/embed/trezorhal/board_capabilities.h | 6 ++-- .../trezorhal/stm32f4/board_capabilities.c | 2 +- 5 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 core/embed/prodtest/.changelog.d/3752.added diff --git a/core/embed/prodtest/.changelog.d/3752.added b/core/embed/prodtest/.changelog.d/3752.added new file mode 100644 index 0000000000..76748afb30 --- /dev/null +++ b/core/embed/prodtest/.changelog.d/3752.added @@ -0,0 +1 @@ +Added commands to read bootloader and boardloader versions diff --git a/core/embed/prodtest/README.md b/core/embed/prodtest/README.md index e9302da623..64d6eb4ced 100644 --- a/core/embed/prodtest/README.md +++ b/core/embed/prodtest/README.md @@ -282,6 +282,26 @@ FIRMWARE VERSION OK 0.2.6 ``` +### BOOTLOADER VERSION +Returns the version of the bootlaoder. +The command returns `OK` followed by the version in the format `<major>.<minor>.<patch>`. + +Example: +``` +BOOTLOADER_VERSION +OK 2.1.7 +``` + +### BOARDLOADER VERSION +Returns the version of the boardloader. +The command returns `OK` followed by the version in the format `<major>.<minor>.<patch>`. + +Example: +``` +FIRMWARE VERSION +OK 0.2.6 +``` + ### WIPE This command invalidates the current firmware in the flash memory by erasing its beginning, including metadata. After performing this operation, it displays the text "WIPED" on the screen and returns the response OK. diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 3a92daf402..d5215a7d30 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -24,6 +24,7 @@ #include STM32_HAL_H +#include "board_capabilities.h" #include "button.h" #include "common.h" #include "display.h" @@ -591,6 +592,32 @@ static void test_firmware_version(void) { vcp_println("OK %d.%d.%d", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); } +static uint32_t read_bootloader_version(void) { + const image_header *header = read_image_header( + (const uint8_t *)BOOTLOADER_START, BOOTLOADER_IMAGE_MAGIC, 0xffffffff); + + if (secfalse == header) { + return 0; + } + + return header->version; +} + +static void test_bootloader_version(uint32_t version) { + vcp_println("OK %d.%d.%d", version & 0xFF, (version >> 8) & 0xFF, + (version >> 16) & 0xFF); +} + +static const boardloader_version_t *read_boardloader_version(void) { + parse_boardloader_capabilities(); + return get_boardloader_version(); +} + +static void test_boardloader_version(const boardloader_version_t *version) { + vcp_println("OK %d.%d.%d", version->version_major, version->version_minor, + version->version_patch); +} + static void test_wipe(void) { invalidate_firmware(); display_clear(); @@ -778,6 +805,9 @@ int main(void) { #endif usb_init_all(); + uint32_t bootloader_version = read_bootloader_version(); + const boardloader_version_t *boardloader_version = read_boardloader_version(); + mpu_config_prodtest_initial(); #ifdef USE_OPTIGA @@ -897,7 +927,10 @@ int main(void) { } else if (startswith(line, "FIRMWARE VERSION")) { test_firmware_version(); - + } else if (startswith(line, "BOOTLOADER VERSION")) { + test_bootloader_version(bootloader_version); + } else if (startswith(line, "BOARDLOADER VERSION")) { + test_boardloader_version(boardloader_version); } else if (startswith(line, "WIPE")) { test_wipe(); } else if (startswith(line, "REBOOT")) { diff --git a/core/embed/trezorhal/board_capabilities.h b/core/embed/trezorhal/board_capabilities.h index e7465960b0..66a4c28f59 100644 --- a/core/embed/trezorhal/board_capabilities.h +++ b/core/embed/trezorhal/board_capabilities.h @@ -45,12 +45,12 @@ enum CapabilityTag { TAG_BOARDLOADER_VERSION = 0x03 }; -struct __attribute__((packed)) BoardloaderVersion { +typedef struct __attribute__((packed)) BoardloaderVersion { uint8_t version_major; uint8_t version_minor; uint8_t version_patch; uint8_t version_build; -}; +} boardloader_version_t; /* * Structure of current boardloader. Older boardloaders can have it missing, @@ -75,6 +75,6 @@ struct __attribute__((packed)) BoardCapabilities { void parse_boardloader_capabilities(); const uint32_t get_board_name(); -const struct BoardloaderVersion* get_boardloader_version(); +const boardloader_version_t* get_boardloader_version(); #endif diff --git a/core/embed/trezorhal/stm32f4/board_capabilities.c b/core/embed/trezorhal/stm32f4/board_capabilities.c index 7560aaf3af..c867c87cdc 100644 --- a/core/embed/trezorhal/stm32f4/board_capabilities.c +++ b/core/embed/trezorhal/stm32f4/board_capabilities.c @@ -28,7 +28,7 @@ static struct BoardloaderVersion boardloader_version; const uint32_t get_board_name() { return board_name; } -const struct BoardloaderVersion *get_boardloader_version() { +const boardloader_version_t *get_boardloader_version() { return &boardloader_version; } From 6ed8aad60840e47e8dd8954f5d6f2201f256823a Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Mon, 29 Jul 2024 18:32:47 +0200 Subject: [PATCH 481/626] fix(core): Remove bias in ed25519.generate_secret() [no changelog] --- core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h | 4 ---- core/tests/test_trezor.crypto.curve.ed25519.py | 6 ------ 2 files changed, 10 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h index 17fea3cbcc..a09c18e919 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h @@ -34,10 +34,6 @@ STATIC mp_obj_t mod_trezorcrypto_ed25519_generate_secret() { vstr_t sk = {0}; vstr_init_len(&sk, 32); random_buffer((uint8_t *)sk.buf, sk.len); - // taken from https://cr.yp.to/ecdh.html - sk.buf[0] &= 248; - sk.buf[31] &= 127; - sk.buf[31] |= 64; return mp_obj_new_str_from_vstr(&mp_type_bytes, &sk); } STATIC MP_DEFINE_CONST_FUN_OBJ_0(mod_trezorcrypto_ed25519_generate_secret_obj, diff --git a/core/tests/test_trezor.crypto.curve.ed25519.py b/core/tests/test_trezor.crypto.curve.ed25519.py index a03ef8c645..7cfb31b20a 100644 --- a/core/tests/test_trezor.crypto.curve.ed25519.py +++ b/core/tests/test_trezor.crypto.curve.ed25519.py @@ -69,12 +69,6 @@ def test_verify(self): ) pass - def test_generate_secret(self): - for _ in range(100): - sk = ed25519.generate_secret() - self.assertTrue(len(sk) == 32) - self.assertTrue(sk[0] & 7 == 0 and sk[31] & 128 == 0 and sk[31] & 64 == 64) - def test_sign_verify_random(self): for l in range(1, 300): sk = ed25519.generate_secret() From 13de099bc1005903512a06458d8092544447c08a Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Tue, 30 Jul 2024 11:09:15 +0200 Subject: [PATCH 482/626] refactor(core): Improve parameter naming in ed25519_sign_ext(). [no changelog] --- .../modtrezorcrypto/modtrezorcrypto-ed25519.h | 8 ++++---- core/mocks/generated/trezorcrypto/ed25519.pyi | 4 ++-- crypto/ed25519-donna/ed25519.c | 15 ++++----------- crypto/ed25519-donna/ed25519.h | 2 +- 4 files changed, 11 insertions(+), 18 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h index a09c18e919..fb3fa4c7c8 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h @@ -100,16 +100,16 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_trezorcrypto_ed25519_sign_obj, 2, #if !BITCOIN_ONLY /// def sign_ext( -/// secret_key: bytes, secret_extension: bytes, message: bytes +/// secret_scalar: bytes, secret_extension: bytes, message: bytes /// ) -> bytes: /// """ -/// Uses secret key to produce the cardano signature of message. +/// Uses extended secret key to produce the cardano signature of message. /// """ -STATIC mp_obj_t mod_trezorcrypto_ed25519_sign_ext(mp_obj_t secret_key, +STATIC mp_obj_t mod_trezorcrypto_ed25519_sign_ext(mp_obj_t secret_scalar, mp_obj_t secret_extension, mp_obj_t message) { mp_buffer_info_t sk = {0}, skext = {0}, msg = {0}; - mp_get_buffer_raise(secret_key, &sk, MP_BUFFER_READ); + mp_get_buffer_raise(secret_scalar, &sk, MP_BUFFER_READ); mp_get_buffer_raise(secret_extension, &skext, MP_BUFFER_READ); mp_get_buffer_raise(message, &msg, MP_BUFFER_READ); if (sk.len != 32) { diff --git a/core/mocks/generated/trezorcrypto/ed25519.pyi b/core/mocks/generated/trezorcrypto/ed25519.pyi index 451b346821..735c4dce3b 100644 --- a/core/mocks/generated/trezorcrypto/ed25519.pyi +++ b/core/mocks/generated/trezorcrypto/ed25519.pyi @@ -24,10 +24,10 @@ def sign(secret_key: bytes, message: bytes, hasher: str = "") -> bytes: # extmod/modtrezorcrypto/modtrezorcrypto-ed25519.h def sign_ext( - secret_key: bytes, secret_extension: bytes, message: bytes + secret_scalar: bytes, secret_extension: bytes, message: bytes ) -> bytes: """ - Uses secret key to produce the cardano signature of message. + Uses extended secret key to produce the cardano signature of message. """ diff --git a/crypto/ed25519-donna/ed25519.c b/crypto/ed25519-donna/ed25519.c index 6b7413421d..9f7abfb1ae 100644 --- a/crypto/ed25519-donna/ed25519.c +++ b/crypto/ed25519-donna/ed25519.c @@ -101,23 +101,17 @@ ED25519_FN(ed25519_cosi_sign) (const unsigned char *m, size_t mlen, const ed2551 } void -ED25519_FN(ed25519_sign_ext) (const unsigned char *m, size_t mlen, const ed25519_secret_key sk, const ed25519_secret_key skext, ed25519_signature RS) { +ED25519_FN(ed25519_sign_ext) (const unsigned char *m, size_t mlen, const ed25519_secret_key secret_scalar, const ed25519_secret_key skext, ed25519_signature RS) { ed25519_hash_context ctx; bignum256modm r = {0}, S = {0}, a = {0}; ge25519 ALIGN(16) R = {0}; ge25519 ALIGN(16) A = {0}; ed25519_public_key pk = {0}; - hash_512bits extsk = {0}, hashr = {0}, hram = {0}; - - /* we don't stretch the key through hashing first since its already 64 bytes */ - - memcpy(extsk, sk, 32); - memcpy(extsk+32, skext, 32); - + hash_512bits hashr = {0}, hram = {0}; /* r = H(aExt[32..64], m) */ ed25519_hash_init(&ctx); - ed25519_hash_update(&ctx, extsk + 32, 32); + ed25519_hash_update(&ctx, skext, 32); ed25519_hash_update(&ctx, m, mlen); ed25519_hash_final(&ctx, hashr); expand256_modm(r, hashr, 64); @@ -128,8 +122,7 @@ ED25519_FN(ed25519_sign_ext) (const unsigned char *m, size_t mlen, const ed25519 ge25519_pack(RS, &R); /* a = aExt[0..31] */ - expand256_modm(a, extsk, 32); - memzero(&extsk, sizeof(extsk)); + expand256_modm(a, secret_scalar, 32); /* A = aB */ ge25519_scalarmult_base_niels(&A, ge25519_niels_base_multiples, a); diff --git a/crypto/ed25519-donna/ed25519.h b/crypto/ed25519-donna/ed25519.h index 46544dda08..defaf43639 100644 --- a/crypto/ed25519-donna/ed25519.h +++ b/crypto/ed25519-donna/ed25519.h @@ -22,7 +22,7 @@ void ed25519_publickey_ext(const ed25519_secret_key extsk, ed25519_public_key pk int ed25519_sign_open(const unsigned char *m, size_t mlen, const ed25519_public_key pk, const ed25519_signature RS); void ed25519_sign(const unsigned char *m, size_t mlen, const ed25519_secret_key sk, ed25519_signature RS); -void ed25519_sign_ext(const unsigned char *m, size_t mlen, const ed25519_secret_key sk, const ed25519_secret_key skext, ed25519_signature RS); +void ed25519_sign_ext(const unsigned char *m, size_t mlen, const ed25519_secret_key secret_scalar, const ed25519_secret_key skext, ed25519_signature RS); int ed25519_scalarmult(ed25519_public_key res, const ed25519_secret_key sk, const ed25519_public_key pk); From 54985494250e935bc4de852c7a3e06cfd5927229 Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Tue, 30 Jul 2024 12:26:22 +0200 Subject: [PATCH 483/626] build(core): bump scons from 4.3.0 to 4.8.0 --- poetry.lock | 116 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 102 insertions(+), 14 deletions(-) diff --git a/poetry.lock b/poetry.lock index ceb8bdf72f..b999322901 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. [[package]] name = "astroid" version = "2.15.8" description = "An abstract syntax tree for Python with inference support." +category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -23,6 +24,7 @@ wrapt = [ name = "atomicwrites" version = "1.4.0" description = "Atomic file writes." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -34,6 +36,7 @@ files = [ name = "attrs" version = "21.4.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -51,6 +54,7 @@ tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy" name = "autoflake" version = "1.4" description = "Removes unused imports and unused variables" +category = "main" optional = false python-versions = "*" files = [ @@ -64,6 +68,7 @@ pyflakes = ">=1.1.0" name = "binsize" version = "0.1.3" description = "Tool to analyze the size of a binary from .elf file" +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -81,6 +86,7 @@ typing-extensions = "*" name = "black" version = "24.3.0" description = "The uncompromising code formatter." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -127,6 +133,7 @@ uvloop = ["uvloop (>=0.15.2)"] name = "certifi" version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -138,6 +145,7 @@ files = [ name = "cffi" version = "1.15.0" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = "*" files = [ @@ -200,6 +208,7 @@ pycparser = "*" name = "charset-normalizer" version = "2.0.11" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -214,6 +223,7 @@ unicode-backport = ["unicodedata2"] name = "click" version = "8.1.3" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -228,6 +238,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -239,6 +250,7 @@ files = [ name = "construct" version = "2.10.67" description = "A powerful declarative symmetric parser/builder for binary data" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -252,6 +264,7 @@ extras = ["arrow", "cloudpickle", "enum34", "lz4", "numpy", "ruamel.yaml"] name = "construct-classes" version = "0.1.2" description = "Parse your binary structs into dataclasses" +category = "main" optional = false python-versions = ">=3.6.2,<4.0" files = [ @@ -266,6 +279,7 @@ construct = ">=2.10,<3.0" name = "coverage" version = "4.5.4" description = "Code coverage measurement for Python" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" files = [ @@ -307,6 +321,7 @@ files = [ name = "cryptography" version = "42.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -361,6 +376,7 @@ test-randomorder = ["pytest-randomly"] name = "demjson3" version = "3.0.5" description = "encoder, decoder, and lint/validator for JSON (JavaScript Object Notation) compliant with RFC 7159" +category = "main" optional = false python-versions = "*" files = [ @@ -371,6 +387,7 @@ files = [ name = "dill" version = "0.3.8" description = "serialize all of Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -386,6 +403,7 @@ profile = ["gprof2dot (>=2022.7.29)"] name = "distlib" version = "0.3.4" description = "Distribution utilities" +category = "main" optional = false python-versions = "*" files = [ @@ -397,6 +415,7 @@ files = [ name = "dominate" version = "2.6.0" description = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -408,6 +427,7 @@ files = [ name = "ecdsa" version = "0.16.1" description = "ECDSA cryptographic signature library (pure python)" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -426,6 +446,7 @@ gmpy2 = ["gmpy2"] name = "execnet" version = "1.9.0" description = "execnet: rapid multi-Python deployment" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -440,6 +461,7 @@ testing = ["pre-commit"] name = "fido2" version = "0.8.1" description = "Python based FIDO 2.0 library" +category = "main" optional = false python-versions = ">=2.7.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" files = [ @@ -458,6 +480,7 @@ pcsc = ["pyscard"] name = "filelock" version = "3.4.2" description = "A platform independent file lock." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -473,6 +496,7 @@ testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-co name = "flake8" version = "7.0.0" description = "the modular source code checker: pep8 pyflakes and co" +category = "main" optional = false python-versions = ">=3.8.1" files = [ @@ -489,6 +513,7 @@ pyflakes = ">=3.2.0,<3.3.0" name = "flake8-requirements" version = "2.1.0" description = "Package requirements checker, plugin for flake8" +category = "main" optional = false python-versions = "*" files = [ @@ -507,6 +532,7 @@ pyproject = ["Flake8-pyproject"] name = "flaky" version = "3.7.0" description = "Plugin for nose or pytest that automatically reruns flaky tests." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -518,6 +544,7 @@ files = [ name = "graphviz" version = "0.19.1" description = "Simple Python interface for Graphviz" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -534,6 +561,7 @@ test = ["coverage", "mock (>=4)", "pytest (>=6)", "pytest-cov", "pytest-mock (>= name = "hypothesis" version = "6.36.1" description = "A library for property-based testing" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -565,6 +593,7 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] name = "idna" version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -576,6 +605,7 @@ files = [ name = "importlib-resources" version = "5.12.0" description = "Read resources from Python packages" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -594,6 +624,7 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec name = "incremental" version = "21.3.0" description = "A small library that versions your Python projects." +category = "dev" optional = false python-versions = "*" files = [ @@ -608,6 +639,7 @@ scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] name = "iniconfig" version = "1.1.1" description = "iniconfig: brain-dead simple config-ini parsing" +category = "main" optional = false python-versions = "*" files = [ @@ -619,6 +651,7 @@ files = [ name = "inotify" version = "0.2.10" description = "An adapter to Linux kernel support for inotify directory-watching." +category = "main" optional = false python-versions = "*" files = [ @@ -633,6 +666,7 @@ nose = "*" name = "isort" version = "5.11.5" description = "A Python utility / library to sort Python imports." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -650,6 +684,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jinja2" version = "3.1.4" description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -667,6 +702,7 @@ i18n = ["Babel (>=2.7)"] name = "lazy-object-proxy" version = "1.7.1" description = "A fast and thorough lazy object proxy." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -713,6 +749,7 @@ files = [ name = "libusb1" version = "3.0.0" description = "Pure-python wrapper for libusb-1.0" +category = "main" optional = false python-versions = "*" files = [ @@ -726,6 +763,7 @@ files = [ name = "mako" version = "1.1.6" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -744,6 +782,7 @@ lingua = ["lingua"] name = "markupsafe" version = "2.0.1" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -822,6 +861,7 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -833,6 +873,7 @@ files = [ name = "mnemonic" version = "0.20" description = "Implementation of Bitcoin BIP-0039" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -844,6 +885,7 @@ files = [ name = "munch" version = "2.5.0" description = "A dot-accessible dictionary (a la JavaScript objects)" +category = "main" optional = false python-versions = "*" files = [ @@ -862,6 +904,7 @@ yaml = ["PyYAML (>=5.1.0)"] name = "mypy-extensions" version = "0.4.3" description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "main" optional = false python-versions = "*" files = [ @@ -873,6 +916,7 @@ files = [ name = "nanopb" version = "0.4.5.post1" description = "Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system." +category = "main" optional = false python-versions = ">=2.7" files = [ @@ -890,6 +934,7 @@ grpcio-tools = ["grpcio-tools (>=1.26.0rc1)"] name = "nose" version = "1.3.7" description = "nose extends unittest to make testing easier" +category = "main" optional = false python-versions = "*" files = [ @@ -902,6 +947,7 @@ files = [ name = "packaging" version = "23.2" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -913,6 +959,7 @@ files = [ name = "pathspec" version = "0.9.0" description = "Utility library for gitignore style pattern matching of file paths." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -924,6 +971,7 @@ files = [ name = "pillow" version = "10.3.0" description = "Python Imaging Library (Fork)" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1010,6 +1058,7 @@ xmp = ["defusedxml"] name = "platformdirs" version = "2.6.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1025,6 +1074,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest- name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1040,6 +1090,7 @@ testing = ["pytest", "pytest-benchmark"] name = "protobuf" version = "3.19.4" description = "Protocol Buffers" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1075,6 +1126,7 @@ files = [ name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1086,6 +1138,7 @@ files = [ name = "pyasn1" version = "0.4.8" description = "ASN.1 types and codecs" +category = "main" optional = false python-versions = "*" files = [ @@ -1097,6 +1150,7 @@ files = [ name = "pycodestyle" version = "2.11.1" description = "Python style guide checker" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1108,6 +1162,7 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1119,6 +1174,7 @@ files = [ name = "pyflakes" version = "3.2.0" description = "passive checker of Python programs" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1130,6 +1186,7 @@ files = [ name = "pylint" version = "2.17.7" description = "python code static checker" +category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -1159,6 +1216,7 @@ testutils = ["gitpython (>3)"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" +category = "main" optional = false python-versions = "*" files = [ @@ -1173,6 +1231,7 @@ cp2110 = ["hidapi"] name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1197,6 +1256,7 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-forked" version = "1.4.0" description = "run tests in isolated forked subprocesses" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1212,6 +1272,7 @@ pytest = ">=3.10" name = "pytest-ordering" version = "0.6" description = "pytest plugin to run your tests in a specific order" +category = "main" optional = false python-versions = "*" files = [ @@ -1227,6 +1288,7 @@ pytest = "*" name = "pytest-random-order" version = "1.0.4" description = "Randomise the order in which pytest tests are run with some control over the randomness" +category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -1241,6 +1303,7 @@ pytest = ">=3.0.0" name = "pytest-timeout" version = "2.1.0" description = "pytest plugin to abort hanging tests" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1255,6 +1318,7 @@ pytest = ">=5.0.0" name = "pytest-xdist" version = "2.5.0" description = "pytest xdist plugin for distributed testing and loop-on-failing modes" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1276,6 +1340,7 @@ testing = ["filelock"] name = "python-bitcoinlib" version = "0.11.0" description = "The Swiss Army Knife of the Bitcoin protocol." +category = "main" optional = false python-versions = "*" files = [ @@ -1287,6 +1352,7 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1347,6 +1413,7 @@ files = [ name = "requests" version = "2.32.3" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1368,6 +1435,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "scan-build" version = "2.0.20" description = "static code analyzer wrapper for Clang." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1377,22 +1445,21 @@ files = [ [[package]] name = "scons" -version = "4.3.0" +version = "4.8.0" description = "Open Source next-generation build tool." +category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" files = [ - {file = "SCons-4.3.0-py3-none-any.whl", hash = "sha256:8c13911a2aa40552553488f7d625af4c0768fc8cdedab4a858d8ce42c8c3664d"}, - {file = "SCons-4.3.0.tar.gz", hash = "sha256:d47081587e3675cc168f1f54f0d74a69b328a2fc90ec4feb85f728677419b879"}, + {file = "SCons-4.8.0-py3-none-any.whl", hash = "sha256:760fbfd05e459113e9a1362ab2b00e12ea4195607e820a127d30e6275c8436a1"}, + {file = "scons-4.8.0.tar.gz", hash = "sha256:2c7377ff6a22ca136c795ae3dc3d0824696e5478d1e4940f2af75659b0d45454"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "setuptools" version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1408,6 +1475,7 @@ testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metad name = "shamir-mnemonic" version = "0.3.0" description = "SLIP-39 Shamir Mnemonics" +category = "main" optional = false python-versions = "<4.0,>=3.6" files = [ @@ -1422,6 +1490,7 @@ cli = ["click (>=7,<9)"] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1433,6 +1502,7 @@ files = [ name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +category = "main" optional = false python-versions = "*" files = [ @@ -1444,6 +1514,7 @@ files = [ name = "termcolor" version = "2.3.0" description = "ANSI color formatting for output in terminal" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1458,6 +1529,7 @@ tests = ["pytest", "pytest-cov"] name = "toiftool" version = "0.1.0" description = "" +category = "main" optional = false python-versions = ">=3.8" files = [] @@ -1476,6 +1548,7 @@ url = "python/tools/toiftool" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1487,6 +1560,7 @@ files = [ name = "tomli" version = "1.2.3" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1498,6 +1572,7 @@ files = [ name = "tomlkit" version = "0.12.4" description = "Style preserving TOML library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1509,6 +1584,7 @@ files = [ name = "towncrier" version = "23.11.0" description = "Building newsfiles for your project." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1530,6 +1606,7 @@ dev = ["furo", "packaging", "sphinx (>=5)", "twisted"] name = "tox" version = "3.24.5" description = "tox is a generic virtualenv management and test command line tool" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1553,10 +1630,11 @@ testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psu [[package]] name = "trezor" -version = "0.13.9" +version = "0.13.10" description = "Python library for communicating with Trezor Hardware Wallet" +category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [] develop = true @@ -1568,12 +1646,13 @@ ecdsa = ">=0.9" libusb1 = ">=1.6.4" mnemonic = ">=0.20" requests = ">=2.4.0" -typing_extensions = ">=3.10" +typing_extensions = ">=4.7.1" [package.extras] -ethereum = ["rlp (>=1.1.0)", "web3 (>=5)"] +authentication = ["cryptography (>=41)"] +ethereum = ["web3 (>=5)"] extra = ["Pillow (>=10)"] -full = ["Pillow (>=10)", "PyQt5", "hidapi (>=0.7.99.post20)", "rlp (>=1.1.0)", "stellar-sdk (>=6)", "web3 (>=5)"] +full = ["Pillow (>=10)", "PyQt5", "cryptography (>=41)", "hidapi (>=0.7.99.post20)", "stellar-sdk (>=6)", "web3 (>=5)"] hidapi = ["hidapi (>=0.7.99.post20)"] qt-widgets = ["PyQt5"] stellar = ["stellar-sdk (>=6)"] @@ -1586,6 +1665,7 @@ url = "python" name = "trezor-pylint-plugin" version = "0.1.0" description = "" +category = "main" optional = false python-versions = "^3.8" files = [] @@ -1603,6 +1683,7 @@ url = "tools/trezor-pylint-plugin" name = "typing-extensions" version = "4.12.1" description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1614,6 +1695,7 @@ files = [ name = "uhid-freebsd" version = "1.2.2" description = "Get information on FreeBSD uhid devices." +category = "main" optional = false python-versions = "*" files = [ @@ -1624,6 +1706,7 @@ files = [ name = "urllib3" version = "1.26.19" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1640,6 +1723,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "virtualenv" version = "20.13.1" description = "Virtual Python Environment builder" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1661,6 +1745,7 @@ testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", name = "vulture" version = "2.6" description = "Find dead code" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1675,6 +1760,7 @@ toml = "*" name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1754,6 +1840,7 @@ files = [ name = "yamllint" version = "1.26.3" description = "A linter for YAML files." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1769,6 +1856,7 @@ setuptools = "*" name = "zipp" version = "3.7.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1783,4 +1871,4 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "08f0edb51d2d41a2e333b7f8b5ae0a06730f9aa362136c49fd262d823ed5d59a" +content-hash = "221a0d791923d52140b77fc4d7f82219a32cbc1f161af3029a912f9b20e0543e" From 974630897bbbf7e40617dae8b8690730c4c6d626 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 11:51:07 +0000 Subject: [PATCH 484/626] build(deps-dev): bump zipp from 3.7.0 to 3.19.1 Bumps [zipp](https://github.com/jaraco/zipp) from 3.7.0 to 3.19.1. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.7.0...v3.19.1) --- updated-dependencies: - dependency-name: zipp dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> --- poetry.lock | 106 ++++------------------------------------------------ 1 file changed, 8 insertions(+), 98 deletions(-) diff --git a/poetry.lock b/poetry.lock index b999322901..790f87f5de 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "astroid" version = "2.15.8" description = "An abstract syntax tree for Python with inference support." -category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -24,7 +23,6 @@ wrapt = [ name = "atomicwrites" version = "1.4.0" description = "Atomic file writes." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -36,7 +34,6 @@ files = [ name = "attrs" version = "21.4.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -54,7 +51,6 @@ tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy" name = "autoflake" version = "1.4" description = "Removes unused imports and unused variables" -category = "main" optional = false python-versions = "*" files = [ @@ -68,7 +64,6 @@ pyflakes = ">=1.1.0" name = "binsize" version = "0.1.3" description = "Tool to analyze the size of a binary from .elf file" -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -86,7 +81,6 @@ typing-extensions = "*" name = "black" version = "24.3.0" description = "The uncompromising code formatter." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -133,7 +127,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "certifi" version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -145,7 +138,6 @@ files = [ name = "cffi" version = "1.15.0" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = "*" files = [ @@ -208,7 +200,6 @@ pycparser = "*" name = "charset-normalizer" version = "2.0.11" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -223,7 +214,6 @@ unicode-backport = ["unicodedata2"] name = "click" version = "8.1.3" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -238,7 +228,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -250,7 +239,6 @@ files = [ name = "construct" version = "2.10.67" description = "A powerful declarative symmetric parser/builder for binary data" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -264,7 +252,6 @@ extras = ["arrow", "cloudpickle", "enum34", "lz4", "numpy", "ruamel.yaml"] name = "construct-classes" version = "0.1.2" description = "Parse your binary structs into dataclasses" -category = "main" optional = false python-versions = ">=3.6.2,<4.0" files = [ @@ -279,7 +266,6 @@ construct = ">=2.10,<3.0" name = "coverage" version = "4.5.4" description = "Code coverage measurement for Python" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4" files = [ @@ -321,7 +307,6 @@ files = [ name = "cryptography" version = "42.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -376,7 +361,6 @@ test-randomorder = ["pytest-randomly"] name = "demjson3" version = "3.0.5" description = "encoder, decoder, and lint/validator for JSON (JavaScript Object Notation) compliant with RFC 7159" -category = "main" optional = false python-versions = "*" files = [ @@ -387,7 +371,6 @@ files = [ name = "dill" version = "0.3.8" description = "serialize all of Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -403,7 +386,6 @@ profile = ["gprof2dot (>=2022.7.29)"] name = "distlib" version = "0.3.4" description = "Distribution utilities" -category = "main" optional = false python-versions = "*" files = [ @@ -415,7 +397,6 @@ files = [ name = "dominate" version = "2.6.0" description = "Dominate is a Python library for creating and manipulating HTML documents using an elegant DOM API." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -427,7 +408,6 @@ files = [ name = "ecdsa" version = "0.16.1" description = "ECDSA cryptographic signature library (pure python)" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -446,7 +426,6 @@ gmpy2 = ["gmpy2"] name = "execnet" version = "1.9.0" description = "execnet: rapid multi-Python deployment" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -461,7 +440,6 @@ testing = ["pre-commit"] name = "fido2" version = "0.8.1" description = "Python based FIDO 2.0 library" -category = "main" optional = false python-versions = ">=2.7.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" files = [ @@ -480,7 +458,6 @@ pcsc = ["pyscard"] name = "filelock" version = "3.4.2" description = "A platform independent file lock." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -496,7 +473,6 @@ testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-co name = "flake8" version = "7.0.0" description = "the modular source code checker: pep8 pyflakes and co" -category = "main" optional = false python-versions = ">=3.8.1" files = [ @@ -513,7 +489,6 @@ pyflakes = ">=3.2.0,<3.3.0" name = "flake8-requirements" version = "2.1.0" description = "Package requirements checker, plugin for flake8" -category = "main" optional = false python-versions = "*" files = [ @@ -532,7 +507,6 @@ pyproject = ["Flake8-pyproject"] name = "flaky" version = "3.7.0" description = "Plugin for nose or pytest that automatically reruns flaky tests." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -544,7 +518,6 @@ files = [ name = "graphviz" version = "0.19.1" description = "Simple Python interface for Graphviz" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -561,7 +534,6 @@ test = ["coverage", "mock (>=4)", "pytest (>=6)", "pytest-cov", "pytest-mock (>= name = "hypothesis" version = "6.36.1" description = "A library for property-based testing" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -593,7 +565,6 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2021.5)"] name = "idna" version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -605,7 +576,6 @@ files = [ name = "importlib-resources" version = "5.12.0" description = "Read resources from Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -624,7 +594,6 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec name = "incremental" version = "21.3.0" description = "A small library that versions your Python projects." -category = "dev" optional = false python-versions = "*" files = [ @@ -639,7 +608,6 @@ scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] name = "iniconfig" version = "1.1.1" description = "iniconfig: brain-dead simple config-ini parsing" -category = "main" optional = false python-versions = "*" files = [ @@ -651,7 +619,6 @@ files = [ name = "inotify" version = "0.2.10" description = "An adapter to Linux kernel support for inotify directory-watching." -category = "main" optional = false python-versions = "*" files = [ @@ -666,7 +633,6 @@ nose = "*" name = "isort" version = "5.11.5" description = "A Python utility / library to sort Python imports." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -684,7 +650,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jinja2" version = "3.1.4" description = "A very fast and expressive template engine." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -702,7 +667,6 @@ i18n = ["Babel (>=2.7)"] name = "lazy-object-proxy" version = "1.7.1" description = "A fast and thorough lazy object proxy." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -749,7 +713,6 @@ files = [ name = "libusb1" version = "3.0.0" description = "Pure-python wrapper for libusb-1.0" -category = "main" optional = false python-versions = "*" files = [ @@ -763,7 +726,6 @@ files = [ name = "mako" version = "1.1.6" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -782,7 +744,6 @@ lingua = ["lingua"] name = "markupsafe" version = "2.0.1" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -861,7 +822,6 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -873,7 +833,6 @@ files = [ name = "mnemonic" version = "0.20" description = "Implementation of Bitcoin BIP-0039" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -885,7 +844,6 @@ files = [ name = "munch" version = "2.5.0" description = "A dot-accessible dictionary (a la JavaScript objects)" -category = "main" optional = false python-versions = "*" files = [ @@ -904,7 +862,6 @@ yaml = ["PyYAML (>=5.1.0)"] name = "mypy-extensions" version = "0.4.3" description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "main" optional = false python-versions = "*" files = [ @@ -916,7 +873,6 @@ files = [ name = "nanopb" version = "0.4.5.post1" description = "Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system." -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -934,7 +890,6 @@ grpcio-tools = ["grpcio-tools (>=1.26.0rc1)"] name = "nose" version = "1.3.7" description = "nose extends unittest to make testing easier" -category = "main" optional = false python-versions = "*" files = [ @@ -947,7 +902,6 @@ files = [ name = "packaging" version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -959,7 +913,6 @@ files = [ name = "pathspec" version = "0.9.0" description = "Utility library for gitignore style pattern matching of file paths." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -971,7 +924,6 @@ files = [ name = "pillow" version = "10.3.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1058,7 +1010,6 @@ xmp = ["defusedxml"] name = "platformdirs" version = "2.6.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1074,7 +1025,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest- name = "pluggy" version = "1.0.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1090,7 +1040,6 @@ testing = ["pytest", "pytest-benchmark"] name = "protobuf" version = "3.19.4" description = "Protocol Buffers" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1126,7 +1075,6 @@ files = [ name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1138,7 +1086,6 @@ files = [ name = "pyasn1" version = "0.4.8" description = "ASN.1 types and codecs" -category = "main" optional = false python-versions = "*" files = [ @@ -1150,7 +1097,6 @@ files = [ name = "pycodestyle" version = "2.11.1" description = "Python style guide checker" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1162,7 +1108,6 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1174,7 +1119,6 @@ files = [ name = "pyflakes" version = "3.2.0" description = "passive checker of Python programs" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1186,7 +1130,6 @@ files = [ name = "pylint" version = "2.17.7" description = "python code static checker" -category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -1216,7 +1159,6 @@ testutils = ["gitpython (>3)"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" -category = "main" optional = false python-versions = "*" files = [ @@ -1231,7 +1173,6 @@ cp2110 = ["hidapi"] name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1256,7 +1197,6 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-forked" version = "1.4.0" description = "run tests in isolated forked subprocesses" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1272,7 +1212,6 @@ pytest = ">=3.10" name = "pytest-ordering" version = "0.6" description = "pytest plugin to run your tests in a specific order" -category = "main" optional = false python-versions = "*" files = [ @@ -1288,7 +1227,6 @@ pytest = "*" name = "pytest-random-order" version = "1.0.4" description = "Randomise the order in which pytest tests are run with some control over the randomness" -category = "main" optional = false python-versions = ">=3.5.0" files = [ @@ -1303,7 +1241,6 @@ pytest = ">=3.0.0" name = "pytest-timeout" version = "2.1.0" description = "pytest plugin to abort hanging tests" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1318,7 +1255,6 @@ pytest = ">=5.0.0" name = "pytest-xdist" version = "2.5.0" description = "pytest xdist plugin for distributed testing and loop-on-failing modes" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1340,7 +1276,6 @@ testing = ["filelock"] name = "python-bitcoinlib" version = "0.11.0" description = "The Swiss Army Knife of the Bitcoin protocol." -category = "main" optional = false python-versions = "*" files = [ @@ -1352,7 +1287,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1413,7 +1347,6 @@ files = [ name = "requests" version = "2.32.3" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1435,7 +1368,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "scan-build" version = "2.0.20" description = "static code analyzer wrapper for Clang." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1447,7 +1379,6 @@ files = [ name = "scons" version = "4.8.0" description = "Open Source next-generation build tool." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1459,7 +1390,6 @@ files = [ name = "setuptools" version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1475,7 +1405,6 @@ testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metad name = "shamir-mnemonic" version = "0.3.0" description = "SLIP-39 Shamir Mnemonics" -category = "main" optional = false python-versions = "<4.0,>=3.6" files = [ @@ -1490,7 +1419,6 @@ cli = ["click (>=7,<9)"] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1502,7 +1430,6 @@ files = [ name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" -category = "main" optional = false python-versions = "*" files = [ @@ -1514,7 +1441,6 @@ files = [ name = "termcolor" version = "2.3.0" description = "ANSI color formatting for output in terminal" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1529,7 +1455,6 @@ tests = ["pytest", "pytest-cov"] name = "toiftool" version = "0.1.0" description = "" -category = "main" optional = false python-versions = ">=3.8" files = [] @@ -1548,7 +1473,6 @@ url = "python/tools/toiftool" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1560,7 +1484,6 @@ files = [ name = "tomli" version = "1.2.3" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1572,7 +1495,6 @@ files = [ name = "tomlkit" version = "0.12.4" description = "Style preserving TOML library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1584,7 +1506,6 @@ files = [ name = "towncrier" version = "23.11.0" description = "Building newsfiles for your project." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1606,7 +1527,6 @@ dev = ["furo", "packaging", "sphinx (>=5)", "twisted"] name = "tox" version = "3.24.5" description = "tox is a generic virtualenv management and test command line tool" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1632,7 +1552,6 @@ testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psu name = "trezor" version = "0.13.10" description = "Python library for communicating with Trezor Hardware Wallet" -category = "main" optional = false python-versions = ">=3.8" files = [] @@ -1665,7 +1584,6 @@ url = "python" name = "trezor-pylint-plugin" version = "0.1.0" description = "" -category = "main" optional = false python-versions = "^3.8" files = [] @@ -1683,7 +1601,6 @@ url = "tools/trezor-pylint-plugin" name = "typing-extensions" version = "4.12.1" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1695,7 +1612,6 @@ files = [ name = "uhid-freebsd" version = "1.2.2" description = "Get information on FreeBSD uhid devices." -category = "main" optional = false python-versions = "*" files = [ @@ -1706,7 +1622,6 @@ files = [ name = "urllib3" version = "1.26.19" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -1723,7 +1638,6 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "virtualenv" version = "20.13.1" description = "Virtual Python Environment builder" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -1745,7 +1659,6 @@ testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", name = "vulture" version = "2.6" description = "Find dead code" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1760,7 +1673,6 @@ toml = "*" name = "wrapt" version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1840,7 +1752,6 @@ files = [ name = "yamllint" version = "1.26.3" description = "A linter for YAML files." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1854,21 +1765,20 @@ setuptools = "*" [[package]] name = "zipp" -version = "3.7.0" +version = "3.19.1" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, - {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, + {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, + {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, ] [package.extras] -docs = ["jaraco.packaging (>=8.2)", "rst.linker (>=1.9)", "sphinx"] -testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "221a0d791923d52140b77fc4d7f82219a32cbc1f161af3029a912f9b20e0543e" +content-hash = "08f0edb51d2d41a2e333b7f8b5ae0a06730f9aa362136c49fd262d823ed5d59a" From 52437b1fc838f7d1aed2a5ad40cd0954f07bbd6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 19 Jul 2024 13:31:54 +0200 Subject: [PATCH 485/626] feat(core): improve optiga initialization error handling [no changelog] --- core/embed/firmware/main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/embed/firmware/main.c b/core/embed/firmware/main.c index 253cc00eec..4785fce6dd 100644 --- a/core/embed/firmware/main.c +++ b/core/embed/firmware/main.c @@ -228,11 +228,17 @@ int main(void) { #endif optiga_init(); - optiga_open_application(); if (sectrue == secret_ok) { - optiga_sec_chan_handshake(secret, sizeof(secret)); + // If the shielded connection cannot be established, reset Optiga and + // continue without it. In this case, OID_KEY_FIDO and OID_KEY_DEV cannot be + // used, which means device and FIDO attestation will not work. + if (optiga_sec_chan_handshake(secret, sizeof(secret)) != OPTIGA_SUCCESS) { + optiga_soft_reset(); + } } memzero(secret, sizeof(secret)); + ensure(sectrue * (optiga_open_application() == OPTIGA_SUCCESS), + "Cannot initialize optiga."); #endif #if !defined TREZOR_MODEL_1 From c3161f8b18193d648ed6a8a3cf6278655114b891 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 31 Jul 2024 15:42:34 +0200 Subject: [PATCH 486/626] chore(core): bump version to 2.8.2 [no changelog] --- core/embed/firmware/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/firmware/version.h b/core/embed/firmware/version.h index 4a3ed90d59..b1b21300ce 100644 --- a/core/embed/firmware/version.h +++ b/core/embed/firmware/version.h @@ -1,6 +1,6 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 8 -#define VERSION_PATCH 1 +#define VERSION_PATCH 2 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 2 From 4397978563b3a73d68a361e116fc3e6a5761e581 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Wed, 31 Jul 2024 11:31:54 +0200 Subject: [PATCH 487/626] chore(core): add T3B1 binaries [no changelog] --- core/embed/firmware/bl_check.c | 6 ++++++ .../firmware/bootloaders/bootloader_T3B1.bin | Bin 0 -> 95232 bytes .../bootloaders/bootloader_T3B1_qa.bin | Bin 93184 -> 95232 bytes .../vendorheader_prodtest_signed_prod.bin | Bin 0 -> 512 bytes ...endorheader_trezor_btconly_signed_prod.bin | Bin 0 -> 512 bytes .../vendorheader_trezor_signed_prod.bin | Bin 0 -> 512 bytes .../vendorheader_unsafe_signed_prod.bin | Bin 0 -> 512 bytes 7 files changed, 6 insertions(+) create mode 100644 core/embed/firmware/bootloaders/bootloader_T3B1.bin create mode 100644 core/embed/models/T3B1/vendorheader/vendorheader_prodtest_signed_prod.bin create mode 100644 core/embed/models/T3B1/vendorheader/vendorheader_trezor_btconly_signed_prod.bin create mode 100644 core/embed/models/T3B1/vendorheader/vendorheader_trezor_signed_prod.bin create mode 100644 core/embed/models/T3B1/vendorheader/vendorheader_unsafe_signed_prod.bin diff --git a/core/embed/firmware/bl_check.c b/core/embed/firmware/bl_check.c index bf31311eaf..c5e13f081b 100644 --- a/core/embed/firmware/bl_check.c +++ b/core/embed/firmware/bl_check.c @@ -84,6 +84,12 @@ static secbool known_bootloader(const uint8_t *hash, int len) { // bootloader_T2T1_qa.bin version 2.1.4.0 #define BOOTLOADER_T2T1_QA_00 {0xff, 0xda, 0xfd, 0x0f, 0xe1, 0x89, 0x56, 0xb6, 0x0b, 0x6e, 0x2d, 0x67, 0xf1, 0x63, 0x8c, 0x4c, 0x4d, 0x6f, 0x97, 0xe7, 0xe0, 0xa4, 0xce, 0x76, 0xc9, 0x49, 0x0a, 0x34, 0x3e, 0xd8, 0xcb, 0x1f} #define BOOTLOADER_T2T1_QA_FF {0xbe, 0x31, 0x71, 0x7b, 0x8b, 0x31, 0x12, 0xbd, 0x58, 0xc4, 0x81, 0x09, 0x8d, 0xd9, 0x07, 0x51, 0x5c, 0xb6, 0x3d, 0x07, 0x82, 0x00, 0x30, 0x4a, 0xeb, 0x26, 0xf0, 0xe4, 0x00, 0xd4, 0xf2, 0x9c} +// bootloader_T3B1.bin version 2.1.7.0 +#define BOOTLOADER_T3B1_00 {0x6a, 0x29, 0x58, 0x1f, 0x4f, 0x0c, 0x64, 0xd0, 0x57, 0xb3, 0x36, 0xb7, 0xca, 0xc5, 0x00, 0xc6, 0xbe, 0x87, 0x46, 0x10, 0x48, 0xb0, 0x20, 0xc5, 0xc3, 0x55, 0xaa, 0xf8, 0xec, 0x48, 0xd6, 0xa3} +#define BOOTLOADER_T3B1_FF {0x57, 0x1e, 0xa2, 0xb8, 0x09, 0xf0, 0xab, 0xb4, 0x35, 0xb9, 0x92, 0xcd, 0xde, 0x28, 0x8a, 0xe2, 0x73, 0x04, 0x92, 0x16, 0x01, 0xac, 0x70, 0x48, 0xad, 0x1d, 0x72, 0x9e, 0x31, 0x42, 0xbf, 0x37} +// bootloader_T3B1_qa.bin version 2.1.7.0 +#define BOOTLOADER_T3B1_QA_00 {0x2e, 0x90, 0x8a, 0x99, 0x25, 0x93, 0xcd, 0x9c, 0xf1, 0x23, 0x1e, 0x4e, 0x41, 0xfc, 0xc9, 0xf1, 0x4b, 0x06, 0x69, 0x57, 0x6e, 0x64, 0x84, 0x1c, 0xb1, 0xd9, 0x89, 0x0c, 0xa5, 0xb4, 0x38, 0xeb} +#define BOOTLOADER_T3B1_QA_FF {0x63, 0xd2, 0x2d, 0x7b, 0xe8, 0x17, 0x2b, 0x97, 0x64, 0x06, 0x9b, 0x60, 0xa0, 0x3d, 0xfc, 0xd6, 0xea, 0x8a, 0x8d, 0xaf, 0x12, 0x25, 0x58, 0x93, 0x9e, 0x40, 0x16, 0xf2, 0x25, 0x30, 0x30, 0x6f} // bootloader_T3T1.bin version 2.1.6.0 #define BOOTLOADER_T3T1_00 {0x4a, 0x07, 0x5c, 0x74, 0x0f, 0x9a, 0x84, 0x61, 0xaf, 0x10, 0x34, 0x9c, 0x24, 0x3d, 0x79, 0x5b, 0xc6, 0x12, 0x5e, 0xec, 0x51, 0xb3, 0x91, 0x4b, 0x65, 0xf9, 0x79, 0x17, 0x98, 0xc2, 0x4f, 0xcb} #define BOOTLOADER_T3T1_FF {0xd8, 0xee, 0x0d, 0xd8, 0x87, 0x0b, 0xf4, 0x38, 0x73, 0x52, 0x83, 0x5e, 0xa9, 0xef, 0x3e, 0x5a, 0x3e, 0x59, 0xc2, 0x12, 0x5b, 0x24, 0xc9, 0x2d, 0xd4, 0xc5, 0xf5, 0x57, 0x15, 0x8a, 0x34, 0x78} diff --git a/core/embed/firmware/bootloaders/bootloader_T3B1.bin b/core/embed/firmware/bootloaders/bootloader_T3B1.bin new file mode 100644 index 0000000000000000000000000000000000000000..034d5c954af9c1a306db636d22b4ebbac475606a GIT binary patch literal 95232 zcmeFZd3aPs);L^sx4ylk(^<(z=yVnmf|?Ckl}@K~vvee^ih`O2q!Snoi-;REi-NcT z9WY5JfTB(Smw>~Js7x5aU1rjvGbk{EsBP{Yo!bKTO*%>cPTda3%)IaWeb4vL_dVb9 z=6O0*b?VfqQ>RXys#|rcX3xCCh8Tn}g1;t=D6BygL}wS;@@)Vd%qfqeV^)tpH)Hvm z<-aM&WggvDxcIfiZ_n>73%qsm&QYY;|Ni~21pZe7|F1}ZuD^cS(J3dMF&4ak?vtk4 z`|rH_jm<4w#2;Sz_Wn=C#F>ge{%X-F+k`jzU88Tf=Ue?N$wKMFzneMoWBbvj-y6o% z)IFd<Ryr^LHf*?j1RI`)Un~4xg5Lr7orPb=NB{kg{UDt8(y?E0&VTr8oRsbTzo79y z(f|KTUc;CFDwF@IU9TSfzmNMr(fR*k-gUil87CNoEy5@PWg<VND|}?X4WB{ggmX74 znOi0)nWl0<FMk}|V2k=JO(5}4f}ILNyCp4Jdyu5x37V58)Kts+@{ar<Z_G%-<Iea@ zhZx9tE7;}VH<ju^8D_zB#0-#+f&_k4g<teu^eKl>1}kI<8&h&0*#q_F3CfZ2N``5i zl7aN{vq4<M+5NujdX*Bw<%lqkTEe6LEb!-=2>e-r;zPin;j_{9jW+5_WIpnPvL0Ei zLKNiG1kLtee1xkDK7>Xcigm;a$xhl`Eh9R@&r#I=P~ede;WNTv@+LWH&mC5hhkNw0 z+;0)6)*}jsn64u~n5=sFrMG{@_{odROqc1%3J&G{*L0`<H*}Bx2i@2HTe|Vr@T=D( zda3<{>rlX=(vI>P9lvr!c;4|Jw159LdkxNy!(5|o!Z-AP^`5R2;ksQ@94?ScnktuK zQ9~zdB7}IML+RSB?Lp=uppZ5!nY*Bt`u^YAE}q1aMjHx@46QBw@zjXJL<2-$oV-S# z?PdKg?cvglQ)|W=zbp`P1gj7V{6^*Yl=nryOYgdIzTldAi*Ui`vdj>0XN){;Ame~V z$XDZW1Ed7r7YfW$%ly!D#1}a>;wq&TD)bGnX^QDa)^F09rhe%&4bvHO4IO{*3Y~ds zi8e3F_}-TeeJMX1Zhs8uA9kbWP~f2u1$}v4Z=m`K0i`iQq!1^pOQ|T;e}&SwJWQV} zP||B~;dpzCt?vxZk1p{0;tos{kh!xAw1t0H_^>qlt34?w3%ldb6)9P0uHAJo6nJ=u zXx0d?&X08jf4b0FruSn#_7o~v<~vGz&)^%=A9=$@pW*$Ok1jgx18Vwz`jDAcxg;{} z^XUYf7785bCfuP64tU!t>=t5cV7%%JVccY$d9yUyI|4>*#&n!E$NuWUY|wnU@6A$^ z7jMZ1*^gKGz#ba<GEDg+1?3Uy0iVlGxSOnG<jpEQdj=PML3q&p;?v9V-A!c(@rPIk z8pC%d35)|}^W6!8NlqU?-LKmy!*2Ltfj@*RsdAH?FmMHi4jCLTbs0d0$<B0Dr<{ke z@Q8)p!a!fo4W<jOG^P@5r#q3nbb#&*1<r(sK7Io9_(N1BRY3ziIp~G-Mfi;^p$uFe zoBdQbGGp^m)KvE0rJBl2hmQ85==C+GBM5PMS>2RlmSRT83~lMQ0v+?j%?Ixq6M2eI zFrNDQ2PA8>S}m<*0WS?GGmd^A<4}B|z&WU`sf>3}hE6+W$Pg%la)=d-!YfWRcK+E$ zXVj|IIr>w$08hzwzSoO0LIH0muLfoR)Pv2+5j?i62g~Q^qqz~@S*vLIC~{@r?0o{` zOG+&*Po)z}r~+!rc^@^l5b$LBTyC6q`YI$JrCqsWylzrL<GLZ!OK@GdM8t*Y(jzr= zN$WwnfS&T6j~+V$$|<y*8xy7v<&5ES5Yu{35(*Gwyi5TzrTUk_rTcw^*FMm$*TEL% z9g1<V!p1IBssVb5ReOp0iWg$!=lf6eQnOJ8vjsQfy%hA$`jGXo25bO3Yy()Z0ksPD zcvhv@fApCJO;?_32Z=p-tP8!qRd{Q0gz!*}rIHb%o&7L7z$eUsio?j93RHs5u#L?F zDmN>eY!^>q%VsN{M2i%c2lc<zzuV>#e(*L5^uZUTl9&zwWr)HaLFi|GKB?iq&`A!H z*>XF~6ESkAPaRK1FWLTi#wN@VRyis8r$Lnck(X%q2fo<xM}%L;JMDbZ7Vj-_zH!-g zU$l3<6X!;rI_7-gva8N*)19I(yXqn5ZuaD{i#&~T6V(1EI<VeJ0bdyDd$u;Pj#eAz zjag&MHFT3YRLue$@_n`j^drWBJBdWYbBta-+y_?Z=k5aBsh9uISDa~>hAqU->E*6I ze3Rl$Q{zAPU2COrk4`=iV!E1+gzeNB&|8pgF$=R`Jj~V2T_YUy-U$C#KG_+g_FO3N zr_c!nxy-^Ou%g?Q?!r)Df@<{`0W5fi9^@V~+<SVUzAj`F%xUc9rsZ@eC7&KZ+5hnV z19~!+*qyaxEGmZ#0%O4fE103}jy{X?CP$kMg9TBJFqXXuyAxt$YhOK)<<v{37z^v? zG2`b^j6AOIWhc5`^ilvb;N!}M>5Sh1@SHvj5F=n2A!X@f{3Z>7L;@rdAc=io%`s(} z0QJT6oqw3m`S4Vs!1~Ro)ut2jU{%8SV`+X&p4XfeAH=oTl4EE5MNo1;`R3tTCl{n< zr4{a}Z&r%(iYKNO#s{ezueUF^(K1b^+6nge^^D&N_}?nEPOHT_k(4in^cjWp<ThWK z!bIXibKd*D62*dW!G}K7J$vRIw}R|TMhTgY=eo$OnCy&GWzGoYhf(GzkZjzrWQ#zu zUkuUEw|`XXoS!QjOvRH(>TRH3%zv%S-GVI@0)ZS<-UN#u@Una9&Io@Iub2G_>A!5X z|C$wRUMMhEwc4!ksh9K>a7we#S1k0^G4C;7wlIS9)q2ubL_cT?m4+Rmz}{}u-2>@7 zSc63fk9C<qAAi-xWeP~g{QP2~e@#lPMOQ&$i<KNz3tw0MT?_9WVu#1}T%g%>h_s)~ zkDI%q94QtGC~H+&;H@$85+z^AhIv~j_l3+BqSrC<GDQQkMl6gZBH<*bc34tG!>vO) z&~U;($hS-bl%v5yK$|w=pF^=3mqIHtWXvo~>QM}?F+v{9WBvUoeZS4%-EB9Ix0gno zB(Ssn8*CaO{Uo7(&PT06W6pSSq2xP$(Zs%Y8I9|d7`nrj-91uB6T(#f){h0S5Ir@9 zF@i?2nnD4$I#P~$$J$T&FmO)j9`E0xpe<T|sPOc`!Q6viR?Bz-AJi&W=uS=!Q)OjZ zHxp=+GW+^bc1I7Abo6>#tarAZKwpw{uwLuvr=iYgdopF3qU>O8ybxo@+J9^N>#65` zCI#nKmVVo_#y3l0l8Z}!>Uqc~9|E}vXM5Sq>%OXg8)sQ<XlyK4oMJ<@Tx*CCUh(S; z8lfxbmvPXv`tJT`F8$H3jco4DD_UUx_TaNNTEUK=KFiCPZc9vf+7@vt{=ju<082(` zElG(@lr$Z0wXt6L2+I1*M{p%y?5Y?A-$^NWUP_bfI|C~O)1foH*oG%ZCwr2fv^96X zn_x@WVmqVod6XAflA26MZcq7C;Z4AQa$=L8lrcexf|E(O@JXBIvsolJ&(wr0q)bv1 zSx+<_iW4SPKGPNLjMzrzg%iEBDMg6h&$-zxV^*E*Wn$(gy?cOeElGLO7W-M|7^Vl0 zGYJuXgJH(G##MP^VtP<IHEzL}?4HC^bH_~VsUK6^gU0;m&4h6nF|1w1pj}ae`&Xgd zi#>UhPao9fimS4_Q93j38{hq7^gXM_jO<xH=A;*;%~lwF$^6N06Z)oeFZl0Ax-?|L zZp~{YHngLpnB<276GIq!lHh~_%R~EpFZk!;N}J|2?5-@v>83QaL-fT0W*Fm<P@50u zpY$28+Hb?}#vkJLL*M4=t1_Ip8QRStcPQ{+h|H?^nlbVF0kS^Jvr=7Ty+X!D-k}VK zyDQllrH(U{W=_ZZ7_(0PbP#2xSaJkL&~<9JN6W7cnbUJ%{ApqQ{c(`2JIy`6ga5JK z4uvt}F(wFEQ?w(osYBuNZclaC9L13p`ld)nhoUhhHo=!flNPv%8s<g^GQ4k~1J;G1 z+^>4fY1+<c`Sj2izL;TqKvO6W!;gX=%<g&Ek+6#Jtip%mB<~8G;9iLneECqC<H@cK zsaGrr%1jrKKb1>YsJq{=1-*KKlCYt^G|r3C@vF3}NTJqbD%9lP*(Tc+fVpiZuL=0Q zVo?%+-w^|#!4KytBc|hVX88ZL@6-9S59nTHB|B53WX!)e#WXHM$yj1m;_`6eS)aa3 zR_#wuFDd|fU@_^>?nt3(5>}axtana6utmu+TMoCBp=^Bm=)p@qoQ}*Jl$^YOs^6q6 ze32T2i3e~N%BY4_B-f7>p_Do~A(4E6E^fFZwXrt+Fj;^9CG=h|qs?u&gFme)?|w0H zOzle4>qF_p?y<0*-z208KtYH7soMGI+L8xJN!^%+4@;}XnKUJ1D!0~RH}p(UsHv@q zCzIGO;_apz$1CxO*iEDGweLQeLJF+!fOd7U<BKl5Z4<0Na5S5i?3|_Q5C<IX3c<{q zrctd{YlyL|g|B5|!Q3H~PVZx2<(??u!kApJ2Fd-fmO}ckm3MaUf!>G#og?3Kqe3V{ zBWd;XOXE*Y8ve$M3*nYZp*JxUFolpg@f@<yX@sgXlmr%ztkgPZpYau|HMv6YHE}vB zJEJE$dvuQ}JH<QuFyTEG`gGQ?4yHn%UKb=YTW%us>??$pEo4c6FQ-#u?b!zy1@Ffb z`h9gN*>hrr!#>&)1#(0>(Wkd)()xUJ)UT-UIQl!xUnt#ls9Fvc9qo;bc0oUu)YA3G z>q-`s)SHed(EAq}??|!rpxhgK@MN63=v4h;l#Ar;t_y1Tsq6X0-!x25IafPxeoRvs z_77LxlIIssPpMgO`~23~pZA(TFBz~j^$Yea#)WPh-;FGL>Z7|aG+bzSp}uZ0o>W(F zX>7B7bc(E_zN<smS>?}Mix#6Bgq}xJ7uG-acKTxd0rLG&-*9_sZ7r$)b(f`qnmmUm zy<cCOS!=0BIac{qSnGuXFAQlctWa0$<Y%NF?`1G6V-}4;@(ZpK-UKVw^x98*sBzSF zP?LPxrRoOk#DoHm4_#=uBjuag1Zc<P19eMgq|`2GA^aD#+3xPS(C`YZ1;N%0k=0)) zaNiIOAuG|Dp+LhBr@|HvaS}4SF0HY;<Pdty*5h4NyAw(={&E}&Y#nNbv4h6E=M7~~ zKHGKKwPst-eV1Iz6YMG3Z=bo%F}E^tet}{#6Y94Eb>{MzrS<hBwPI*wHZANuGre*~ zMS&7y{%AgdmJNmF{g}(LWQz^`yxCQ|M4N=Zh_XLlU*x;cuzPXR{G_G}4Y=?^t;2^b z7aHmoR090y!P`^LtF1)2?w;Bux1=mwFqgD5ztwi3Va=t9uZwC+hX%QHq{_FHx6~&I zxB4tgMyfgfK}~vn?QOp5OGl%sp#@_rkM~BS7Z#cqGX8t0+J(2LSYRwZdGL+PPpu(# ziSh5C2m}{y$?f-ADlO&d6~}w;r6@lWeZ03Rnz?*o*{@|>q)b}%C1lbI$9wlhF+aa= zIj(dKQ!oRCcfJRiULLb7EZ5i}l)dKCH?Li2-2eUOy<B=*(iYp)Ut(Uj+IH7J3S*x^ z3Vbtcg74KT`27qze?5dPs0k(EWSoE#aS9%ZiES7mZ0)MA#9K$Eu7_{5NOdkgqAaO7 zqBL3QuO<l5az_w)--6OKVEI=EtK~>7j4ea8_}A>?7fYkQ(RE6nXTN{3G?kG@F`PV# zeoey0<m7iHD*8_njyf(ev6{{U!M<M(2K)L~VnO^k>vs?{__09{b=*6CQ>0m;7TfGg z?J0KAn+q%7q*eyLHd7U_L2i04i3`f~!+Lp+G7+po<gis(1XjV)M|;{<xnYHdwjK7P z$o!r=S3UZMTcKSk4`R<LdrES)_`^e5iRUuJZy$Ke?~2T{bN<kcg82Q)PFO{`boeIg z4V~TA(WT;d_piCWvwKa})ayFCr)C~Jxc}hcgQNO4%X)c~G9_6XWG=lZ@yzSCoU_Q| zu^;sD5<^7^XbkOnv)en8md?{NY*^Odc@I*uhML=5X?xeNp<;?@8PmrkI>xl`^g&80 zp$nA^gHC=sMD}{RN>87~<Evo3*&`^vsB7%hghM*{pCMMz$)~`E>g7cWN}HO##=-;S zZz0f>*$8I;mJpuO@12^S24iuJMJIn8B6~hFlp{Y(u<GO^-KzaB9$9rnNtmAHT;R;J zo5gdh((ERCnt1+!H$fhWc66;g_^MRv4R-O{6+|Y(@)!&9$k=o6+vI~Fk(WW1qxv_= zuqPX2>^gaC2xa{acCKLFDb~pwy0d}5TSEB8OYqIakoo<08mK)M^eLg~^IlYXqL*Ei zV>jF7cS3>gKZbG0{1+>X6e1mG6|*bJdAIZNgh=}sSWR1nBTB}WBTDw}p}@Wnl6snQ z1&c6IIMJ(ZI{~;aOEqN1D+>i$hiRE$pDN)1<Fq<cYUb7?IOjR}ni$vxBE00mcMD2; zwkyfO2xHZ+mWbi6mS{PuKjMu%SUH*D%LU09eb#gs<;x(o7s<T}>{>&p?=uTp2qXLQ z(lC63%?R<Jk5^WknjWqERVdFAF0(dx))zUvMmh-J#$;8&oLpkjR_Mxy0?UTzCAbiK ze`EQ@hvdaUSkHlVdp(p6(DVhcXVpD+I%SvyKO!5Haj>gZnBX9Lep^5)V=Y<m#g(t} zp4l8NztLCVNE4jUqRdyZ8)rnz`}+0?)YzvL+8Y0*GmQdXgF`da`S#IJUfOhlk}nS7 z^uh({z<>Vmc$xzI!~Q4WropNp!cSwWla^x?2Ixje6sF|}#Rjq`P+qAJCbf|mt#l}K z9+j)@$x(CeQ_SN4V#P(@9z5bhX(^V}&XHTA<=VcHu!ls;cPk_Jnk?C1S2Fv|X(OSw z*M`3L6%fteNY=S<;_Z^vZ&s8>_BfvIiiIys2HLAv+e-tj$ya-ahTcem-XY->CE8OU zAa{;1S)G~cLgXt}KioPDt<#4hV5Jvc2k4#9D{JUlhqI*iN$2|7Pn>+WDgRil4nnPi zs;hJ+bn^~d-Dc;yx{saj)+ITqnme4fnl|UUn$yl>HDrxD1Nx^JeklEDuc1)yTwm{S z9;<IE(>rO1l|U@K{z6%Abe-tMCY^gc?BnMPQ!JLN{g<{QT0W`hJY<HSzK-%FJ0snc zXP(mp|2?qUr#z>f(eOXHA%?&kVhOw<j=&q@3A}Lxfj1@)cw-{`H|{vym_%|GCzG7T z49QuX0{>4h9_dc@ux_0P?5byKuHh8!pxe^+?@Ne-_1$*zt(e^BH8!Wcf}3@jXM0Dq zob8P{f3`QO=4@}|2O~XamDt_9JH->RUGHW*T6dC1<4*K&?z6pd>D0NfTrb(55_LMQ zG^yeV(P%VCH_v}coKy+vg{j*g6K|el*skq}v~LtyBQM=tzDdMbBjw+=QM}o~OOqEq zCg#r=wO!v4Z+{#xxQ+xnt71_UCl%cKxOj7^emgIXbMhSqY3UM|$Z9nmo5X^dtTb`j zGa^kRsc^bWoLFI$Cf@s$II)43CYEcYWs5e7lNvXPOKYDI3uhUm{P{*{(lp4gct%`S zS1nFlsF4b8<AL(Tg@9R3xZt)Mr3ni;Y56^m0e#K()Q-o+$%|QOGPG-XJtq|cH<KOJ z;^c+e?S>AmG`Rsu_t)q<s>KP7E^*xAQ5{b}U4UP10NB#nP2&CcBI#z}E?i2#J)#3z z?A#>Yd>6i{TIFMTeYLpy-iYmMF3o>Evf~xIspAHFRLAx9=#FfAOvh{X*p3`~T*nxD zd`GT*M2Eq>*PhUk=;^d`9V6}g1?UY3Sr4~;mR;MSfgT!Z*KSYo=mDzVKGMTOh@tOJ zDrom+(O@{KFc4}qClww-jytIsAVlb-V%p7hY=+)D3H`kpdg!E*03k)4R8n>uJex&Y zhe7Ywi&`xP&08<>JnR8OsD~4c(~XO*oErl#$%_|TH4xKw%!3#YF@1*zVp@nrbex9R zNP+d>Le|Z9GoB3!I?8n8LdIP!rli+5!T*vyO_O!?OD7xlEG^X4FDo?cSw`#Xm(zwl z%d5rI^!gR>zhut}y{`U#y<yM&F}nJdF@`-WtHq@B(Mz+InU`-+Oy|<>x2&vx0H`ei zc*#`bjYedIa`$SD(Z&tXo(&3p)VK8eW#<4p=G^)Fzgf8luoKfaC~0{RmTXWg5GFu6 zlZ24Yf-o7<IV6Pim^==+H*eXXjLl2dZBVXL(;2R0!v^JgHJ;s-40YX*r||#}jT@9a z6)#^+CpHkg0yUoCBzT2+Jm4iS-T?cTgx)wvZ%{_<CV1&k%V^gICAVvXa-#~LGM$te zpQi<!2`c_Xh!fmNB!s-ldAUI4ro3E$-JF*Tkg0jJ$C{gV>OOfYrSs@o@nnyd3ewTZ zt=2Kvk8z@%gWZ*L^Nk%p%*KUnaMne6n6||FJL+}U%okd)sC5HCsmMB+hCa0xV)x1K z3a?qi#0Yu6)4^%&{Dc>5v^Vb^9n5hL93eYPaIWN}Yrsa<fbFgM1njB40c>#t*y0AT z#SO=5^^J6$qp_rpSX0xXSZBJOu9@w0Kv+`K?0gc!^);V6KY{RAO>Bd{0rG2SH#i_H zscmj}62kShpErC0;j!A-MtvjX1HGAzG4_%=(~%fw(;<U1#hxKQQp(oc3UmwYwA5Um zF0Z!RYj!xFau(ScY1RVBFIivnSE%RL{Npw84Tgqa^Xb}Kq26Ef?X^1^p1LM~eeGX? zk6-hT*Ty#*8m}o|H?z?Jd=1xcv(?2|<{6<s=CCzQN61cYj580o{Wgj5qXk)02v2m) z9N>9gGVOQOQ<I@2aJssrq-HxvhCq=DojuI|7r_5DxN0kp*Tg|979<mz)D+TIMwMUk zFwL+ONs7=4%koNISfW?*!gBQ_g?TBd%Nv$1;ny|0itsxuV~<LWxrW~zz%PNiW)bKW zeu=#Q9rqYWUElEUxMA7<J8lW|z?1)h8}5gH$2|tUp>O;Tx@w=0HlcczUm~;r=$R*B zeXVz9RW=>^EXg82B5*ZT&U8mgG9zsx{b94!Jnb}B&Pisa*$Xq}N9-GFK6R4Z?IgGK zy_$%IU-OvSs)k?lN^76KCT~OSr`P1YR~ykdGntZR*Fl|jrmmuKUJ@;B`&SO{;Xrr3 z3WYR7p%4u}4f)oK6=Ixwx{&*`UYxFTf8I+k*Ta9-9pS#vpxt7GIA0XmY=E7~Dks(a zl#_1$)X6j(8rbHl2Cn(322Jy)4c=b<HNN?Upe`15@H@W?8e=sb`W9c1jn#F07vy5u z4n07%v7DNsJB*OxVwsKzHN+i}YDhsY9ebiTA$A5bZG8~MZmkw8aNJg7tEQt0=~|x; zvhfITbnz_wNAYw^M8`RR;g&h*T#%0ETS$s)c@$D?Jkt`V=28G<;$t#S^d`mYTA3jI zOKnM{Cw}W_85Kuuh4es_C!(dkq^4v9nT=WvTZ}C)1nF^15G!UGS#to738G;1)|f4| zC8&jJ2YTb^76XKaaSTxB#&M*Maio5JTztz<K{SqqxPF`l{^M~YT10@PY##yZD@14) zF@&=s+@ga}Q$#pqi`W(eqzpxb7FVRUrRb+1Uqoo=i!ucfD4pmXIgSm}$ma+j`E-j8 zLQOv5gUQD&dPr&W)i&pol7@UjiOV+-uJXm8KL14TsC<nFwE`cL`IhrRG?{Jn1@UBE zE2pODRwIPk$xLgtoTWV<WG3TQf^|3eyF?I-@nX<0{-+=}KBhIz9p%vmaZnqiFGaRS zleiz^7qvmEk8Y!&t=w3Uz}U0Bh=n$e4Y!dUt7)O3t^C+{BAKy21+`-d|N60{?eti} zF*8=zV%&z?UI?Nb1Zg&hYB3S1<q%AqL*&clXjGZ8Ibx8{A!YSBq%58DQ;^BgwM1^C z+t_xXkWDBs*<tB0*-VRx$S#{|iB&_cMFSzuCi3F4#UPtasOYnQ3ewp+k6|0zhFbOn zsRAfdK&ujF3UEsVDO<pWX%#SGS_M=~oC+rtaDf=)3eNT>2|oof{PYET1Y>JLOSQQ5 z-Vv?S#HUhIVOJ!jwODFj7}<Kgyt=AdyzAa+;(IE*LYmVsvb9>=xv*4xBJMW{sesqI zzyOdr4He??#6$^e%ca@QQ2=ROU>7&VE=Vx9W`YeVmRf47#o5ks@lOc}63yGB8MSG! zdT6P$iEE=jODL1JE}CU55kH8Dk@U16-F8o_u~>XON}G@fyv<l-m3G`?Y$+4pA7Pds zam1K^8$=I{kn|dD%V@A?m42k_HkOH-M}WPub2W?X*8}vu8hdRH*z|0$J{GWY=`bIq z$*YUYY96m)Yd6%sTT9m!*M<FSh}H4-Qp>%)X!dhm8n>p++smw<iD<XCm)pa*^^JJj zLx^?jw>cW=Hm!Rmsz=neJwZ5q*}?#arP^NjHpVTh(GL*Pq}S3;^hTsHZEVX-!~-Uk zMljCyV(y0^pGNXmflbf>R%9C6rfmg`tll8bBATts!U99|I*V%k0bnP3qq4HH;7mVl zSqTSykAu2_870~_I6)q&7RxCeXqB#IS&0F7d?AQ)F9eOb-v!y+JB5D)Q6{$&gOrd1 z>dZ9kRC&uZY}*@T>Y)GYFwu%SGCB=)Tnlht7qjEVAT9I;H3Dvl-F7Z$6m*0a80`kw z)1X?^QJ(eNAYG+t(QSiPRs9e&RuKxgiX)>3bfywfP&%%8PY^kJgS^8R)HtBzE}-T( zAEX>ii@ptPgo6PLeg)kER8|mOr&fqT;|jj*n;>36wb9RkRK`=li*7t_`3A<hzU>Eq zkbL8KmSBxP+Z$nmlu6r$x2}cr$4Cq*{J3BMiByZ*oH1?X;$xt56d&7WleX7ogEm%+ zb3qf|1t{VLX=Ys<V7A;Ni0k5SOsJB!)sY^(bxD=@Zc2)T3=Y7c0n*-BDXvROl90|0 z^JcYp2k7o`Rd;7E!Yyvl-i<NI2~9$U^jyPyqh0(cHY1@}y1h24<+q@lYe!5?hz2UR zHCUyswH4x@5@XW#2JucqOP0J^AX=R$>9wc@G`4t}9~p5CjG+e5-Qo)InZ&g<V<C2n z9oNEKY8wMu4D);mtXS-$<<(`SHSgCH*RHEQR?F0t)v4#~&xSP`EqKz|+J)VpIQ82& z&}HTrMKsz?gGMuMM<eg%+UilYXw%^~x??8NY@^z$MS-7*5a_Hn?S~+n_7Bif%`OVQ z4y%mc1vQ|t#x%N(0c@SB*I^t(8tMQ$mF9y|Cwfhw`Fsb_dXjq+=#Dmx-bG5Ij(-5; zL~nH3Bq3{bOy)x++HEjOf?9uL3A>GN(*&u@RNF%(>@LGL4cJ-@XfvDpeUQt&OE@1i zW@&ecK~2^h0=3Jq(+AKKy@p)e#_qI$hIa;;W#0w$%fQAhLp#3@;$_;M|A2VxbD+^> zabUYad&+>zGNL=iG8k`V2x43rZi|Pt0-ef%bq1VN;4zitFsZ#kE_K9K80pDB1P#d; zq*K9s6Qq(!E}Kl~Fv&EbkxT=Yp_n3d6rb(ovH(`x8)S>wojQ_VjM^yBcB<%yptgtu zh^|P}_76ytT(*cII7O|X!Nz(>*B^wKsSde$5469|;MpQ{7$ZCpZKdM+xL6Of<Hv+J zu%C18DUr4<0Sjx3$&B|1;-~SyBxHe|E0g9g!tUQ2M*wW23R_(=O?qw-=U!=~0rmmF z9MWxzC=Xy){oWYHDh3SD#*&qg{vbYH(sFjd0gQ?;M!clsC^v#KtBaZT66v{mdh1fK z)5oH;iD{sV<<hKrruhkDbbGP59$+!;cFA22HrHOEV!>)DhHo~s6TQ_YmiQ43rGzIS zZ+(>BGdlrK*1OkS`u%Iz13qyJ*4J<l(o-n-&rYO0pxqw2j`x(*C92<U@*%H+&Q&{~ zc6t@VQA0x|tfl|l0G7X)jGdje#p1>&V(*J<`V7TlX+G3dytbx6Uo3uFOyGY4toA5e z3v)(sacwPd@ov;-2Afz?kgP8exmg7N%DnOZ#g_QB>Wm@O$>4V>S69n1{L@{n4zP1q z_xwVE9~7|gG4w84+PZ|<sexW#+d1jEd$<-xx^;o3gZCh*xrUXdFQldI_i8<)4qCda zLFX9@b1f~kHiBKL=Yw<<%xh%^ph9R63qhz5xe+>Md9{_$fwg)mp#}5wG$YUh+fktf zYG5BKbwG<yC-jQ#gd(YdP$ZQ9pHd|h31#ee!F+zl;+TniP#<-lyt@28uwbNy<6x1( zoZoHdM4lrx33f)*Gf=jKv;v7dp0Bo}vb@;Nih34H&9!&hjUsQ<iM$SpPZ?Ng#=`gQ z7%<<pSBo*(F-_|f?3!8*@$xD$rv79T*?mFc2b!3rlL4AiGHdB%C@Gju!aht4?7z5| z(T0=Dj$eF^p0&Ji+VP9ern{GGMZH$9o3-LgyWYTwrTXhtskvc)COMrG|IEeQU#9NA zB$rsl5sR{KK}I6Ys1>vBw~8A~g*t~AReSv6M!NvJ9;~R1Tc=R2bqaU%wq>T}pD*{W z_*!W?w@!)gI(dJgA!a3!Q?AY^ZccTt%r%^Z{hrkHS+Hl5T2d;;-{XE@ni#iG3p;bE z_ujfP?tyj6sB_ou0`oFI5OK{O#Q=O8DWTA)bD_{w@|^_nNEzZsL!mWI;K$e272%KM zvgAmP^XD;nj%+vyGlTC}qPiPxk}nSuNFI2@%7ZMNiIaW&9|y?U1v&Az_vwaV7gQKI zxt`P)3!Z-j@5_M#z$39dzzfIza<yz$U%_zM_pX*r>02;d_U)@>qX92m_Q2J$yy{1o zcy;fam!A$MUG+nOaaJ5DxP+HU+n5YFk{Rt_{534&&*MmIvY~yM!|i+QYWrMj%nU7k zco17As_k1fKmm`WRm%s6$02FU$I6w~zo&q=otnE~fOvJ2+_z!3J`|W4VuyLYP374N zu-8<tv&?IFE(~Uoo>Kh~|Al8ZQ;uXuJ6L}W!w&OI`s51FxmS74Qe)Y`bDGLC;WQO^ zCLU^`KqBxQ?y)9?^aROW3_OQ(b-;5tw^rp@8KQ=H9t=(bY{K*G|KRz{{$F{P4@H7E z+eq-u`9oKnqX#7G1TM!7OZL=&Q^4}*0W-*w#C8msp=J`>Iy9v%M~yu-1m`*cDNxTc z#$6+um-@$FJ<9;ul%cE?;nmCN(Fp$tRXR6<bawM=h0Wx?MA~k+2a)VtGhDN0V7J=K zCV9ue6sWVQ^S&J>dCNcs#OHLH<R{hGT@ZVGAcgSMxd`%I1I@5=I4V~MK5(Ht;=#LS zn4f|kUcR%RXath~3BGSX^*G=ZH%+*&6MPwWga3QTYPoOkoK7Tv6S}LD@tZN0y~<sk zSRT`dvj5g|*Zw*Ch&Kt6UkMfqivVw3zZuTa7Qv~`eM(oqOSWpQw)cDy(7r3@MDn3n zA=q_;W4DC^|3=)2z^~=O;r8XK?aKlFv((rOh@}nSv7Fbe>Z3{a1(BIMN4y;o+?AMq zn6xMbTJ+#>i*A4xUFySob0B|}f=A;i@7P$WENa9lQsPl)<9Dz_nzIk@odM|!%8b1P zo}=Ksyf75FJd~%N8;<J##D_cacqA`?5})?u>@%tG-}L>>_wcaK5lYWHMA^5%{^;D) zqZg4m?+AF&Iig^Xbcr>+<Y%}WV*uY<>|dps1U?nhxuHN(r~qQwnDu9)p+HQCj62pp z9nL`&>rg-s_XEH=FkFVW5ljxsX@&wrLt#u(N*N+2d8E`(;O8Nt`>cNzIY})Z3W$Fs zcFzEHW^+2AJrw93B%?Q6--JP+26dB?BO$&D;;Rr<dE|#CsQuGF?uPR);vdQgySv7y z){@NQqlSCtt{|~5dgzba)mR+FW(R>XNBSZZ@PY5B9>NO>)PUn4_ID+2UzA`1E*=^r zcSy_-`(=Q%Ds1!qtN=eO$a|lD?@*w3AbU8r5U>fxP~gqMF+$v4;1oDMI7rR}M_n_H zaG&{Fy9oC<vUwwn*%4|BCOT{|daiB3U_XJ77AXCk#A`{4w8GzCArwFxh634xB&LVh z3j=sBD?LW>;9vSK^_YxxLxIUdI%zWnzVZMe92dd}2TwkU2ktfx5RUP_p#VoDtJU~d zQ5;A(4rq-UDi<{V>5!g|hXM&hl|lvF!x{?wbD)Cg1(d#ZU~dW^#Km#@z()Y?a190O z2Kb;(O%Dam4sie0ayYXf)^+0*|3cDd`@4)VqQWiC8Sb+U{o%fe4Uv;=@M0SxGR(O~ zhIhkxMBebZs;v43Gr~t*)2{Y@*)XNM`>*u=9cqloZH^in1+nRBjEq``8Y_gD&=0zy zA*F7D)YSelptVHCD`D1{sLEIl;=Kg|8FkMLa{g?P=_ttGG>G?&g3&t^I2RlRW0J^p z{s7350&P|0`2b)~htza@6JRwB-ZZRb9|q(0-L$t5U_S<L0<Fnrc_9u;ZwJk~31|)l z?ie%+h5K?KHiz^QchkN?z#~0y%V5sFJb~bp52gvE_NRhmE+kqw5^ghP3pqgPxgcMe z4|B~>V4SLrWmhGsk>3hc4BG`Vj`9wrJN9-F|7{`xqJ^V}CHYq06-gdaV?>f&edM&= z+&OBi3C{noj2|u38@G?hY-k{EA4n6N?_m575RV4%tLeueFYu=8?@%5wUs$tVd^hI8 z1EhaPU&GaXp`2^_7iIpXYXNvr7zN^YdNXi!i^|na+fDMlaLXYB`~^&MLmvijiWG~` ziQR!UrI1$xdD#{+a^|Tq!t<?ajP(8tHAZ^B3R;vS6v8}_&6?!WJ~A7Fe7R8IU>~uo zLxJ<4k))S<hDs{Ky}V_B^l|~nv}hn_SRXF*=j<hIJu;L7wt@8MqtNO?DE~Vcb7r+K zRt${V7w(_?)Ug)|d=ez-Lg=S^uIAN39--7Sq=#BaAI^n5{a!LI2ZC{XOF@Fq_n9p> zsj>LMmcs;Z6yTYIdKI?qYOZEbK0s=StAzdsx}@y-z78cepZE#AA^mNX2JV88+V1Tq zeKZvKbCB3BqDMo4lmToey>rVoy|a6$dRS+Ai0y@+>CkTQ%?Cd=@bTDFm%b4ENr)dP z_>pWATEWZo)nCf*T;dpj)l9@M_VFzIFV9PMo>1&JfoB&DFkwoKN#3M{G0Lq)kXox$ zU)o)lCXl)G;o*41&vwXJq3i}q7~uD*G17;P%I-8WcOHc`@eE-C@G=Wx6`=J<o;Fyl z+WPk)oB^%>a3JFH3#)7b59<}HfQyKYIWwpkd)aG;TM5wXgSHA%Qz-Dp0Px2{e1S#S zU1Ww5m?zlp4Zi8uL|*ceHQm}!C}Z-S1$V}jU@zQq`m9>st>Ywy*GP=EJ|)phMlPAL zz=j0D!)Gbs?KguYMtE}$W`T6if+WIsldL@&Sl8#kSPli62U`13-kt+Fdr3W2B!x_H zbEy?P<cVjJ%`{`LE=Wb6)`sy<4YUCM{$czgk^=lJrR6F<w50ah65U{9a-coz0G`78 zLlfZE!NeDR&^vejYNyc*@HcTbl|g@2(@xthwu+JV5~r;)(Z1e!+?iyzI-ZxlSekBU z8eWjR%Y=qK(r3$Kr@SbgT=BB>`Rd2Is>Q#rq;@>sP%VD(@XONQAE_44tfY6m-@r;w z-v6?6<^c}Al>heN%a>iZzAXK1CEfvkeh+a@9dL8Ml@)mw{@0v{#L{C+OPw0&i3b|2 z<ZH6QT3q9eq@=aW);cS#l*m(+)^#;sMbgr`<?lLYS!t1{XIYQcT!>_(^(*KGTf=-S zBl66AE1WFX8m0Biui$_$u4i3?;Tp*L+G7oOTQwrDx!a08AJo#4PM{m_vXZZ0_+Q7W zUvn{Ibr+sn{`;>z1&{a4-BkP`k<Wdywc?Y8tzESH$p-Mhp<ti6f!@ix9SvVAE$cPz zC!Jp_&2MPkup?K%se5@kx8BLNjS~Lm@G8tX*tshGqVoG7Rm$)D974WS1G`^TDYx^* zMEy=dVp-kJ5t7mHeNbNtn#sKq)PB6OSR3T_#YzUIQet%xjqg=3+vyHw=Sx9)KJ1*$ z*R;MEc|OR`XIt&!W(M|b=ku^Lt)G9S0#0V;pY7GwE=?e`Ru)G|MlARdH(q!?sEyYK zHTN_m2$F%-CYDNV@NK>I5nYF&xk}t%;M<v<3lgCeTMBi)7}U<z26gtAgY+bBC%wx9 zy#DDTTPwgWlMn7fX?DF(=?m&_WOw<3{Ea^WWL~0O;<y;eKpS>di|bPiqShct&#f#L z4I1t_de`>K-v;?q2J+mG0EJY|u5Ca;o67F05+64JtyJx<V;9+al6MQxGBR<%XSMiP z6c)AQ&LRfhXuGsyg=QDKQ@iz-#FvBG_nBQK5{=;;=^mh-zytN|tAT0)y=$7d!3b0n zbi3ZW$Swq`2~iSUFqL?o$fR6qUiB1aL@iS)GCI1Q*##}02KdwXT~9{>_Ow!Q6H9tP zkc=G2Mcfbvy9z9kL9xi{1*v7_*<Sj#9}}T|O^onTQ2QQ8_cl$(^N}wFsk_)VI3a=E zZtY#96=jmq_?raMmg5)M1*AQ8;<L1MnzUmz=tul3k#_MJhVWM=aT+buwl<b<J<K1& zHUo!kWal3!3T4vH2cC{B6*sc~$`_G#PRUD<^EgXyjS`ZCT;cbiC)ACtnAAz?hI%R8 z4rW`?G_LJy<(%t<AU9gSZEGY4{BFeEk>3RQ5juf)Ydu`+1;{gO8&hfMcs@wQUI_BB zAl*l*#Ek~Rsa<*w&I7pEh^@~?!p`aWv|Bh&nYcj%JEG^|eC@mx<j$u`8oFAJH5$Pm z$NdQBDVCa-?twD|t*1&{YXD53K&_DAltBYKsoaVYpglJTkt(*<W0$tB0BksgWb>sU zl@F)7pr_vj`Fyq`=G;>|mfx5R19o*=0SDVH=*N?nQx=|h@P^I@{y5%t+a{bQg{C$< zRbhsc<9wo(r0#ui79s^TRT|hYcR%=Dkg8%kD#W!~pjkzCXkZVVtBRGhOqI0tk^Mnq z;+$Km#pZ|LTso26RVhBD1HDM3ccshL643fYW*6T9yWEMoUDp{)MNMXuq{A--xtA)W z_6NzxsuG_759bjL+%7Jty>)cIF<32XCTezBZ}A0<9(Grfq}2(M9>x><@*IKQl_6X0 zP{XZETbgVwhMu@p-$t~@B3sL;woG|VX}ptaBfhg>Pgil$rj;CcofuRI!67*jum}Fv z2RZ49mElqX_@R7gH~vd0$eBj9Jq{izkpMSx!xUF@(lew~8P)ba_(@Q0za*2~KqMz^ zT*-ld%EhG9$$tlH{P^;cTH-&Loa{+H1L+OR*F*Yr!|h4h<WD0h50*A8{Znmn<GkeL zWMaLkdb%zY_-H`&Os<C8aPN>lBDNJ}MF@MkR>C?kU(jre?wn$|@@_!Xj!3z2ARpF& zd}pM*5Z0fXwkU{QHxLE0=<@^MXAWV<z&arY!q$PcLM(*a2V4UA-rG8Wx5PvE^Z>PG z1cXlv&|4B9d~ARc5+PhWKnqC_K03f`Nrv#j0d`9Yg!d0<gpm*~9pHpi2!Auc!Wt3o zDGYF1%n&Xd$d#>C$HB|2THI`?5<QQMRnrWlwJB9%(r}uG^rjTtS|zqF31b)lg2z^g z2}`KfFvJ9qwPOj+*7@`>ES6wRp#T;&pJ36g$CU(tt(yW^RRp2|ND4scswy!WAZw~d z<s4VcM{oKPU_d__{5h;P9!_oez1t|8=$=KiRqJNK_bQn#5u?>K+op5B4XJG<Bv<b) zWJ<&lYTV%75Ahv^1Rmk$JX~8cTO!7(X`_2R#J8m*9mzFqvA_y65^kO?86d04D{ner zSnWL67e2YYavzh1Z>vz?{op!*9~la~8(a(f0z3)@js#s0GeGQ3a-!)sLF|nn2eDX) zy#{v%us;D}a2^V=6o|bTq=YdrIudKD#V2sF*tV36mD?f3M-_{SYO1y7Fyyq<lAJGV z@~L8Rgc?t*-3##@Gt?5bE;@}a7UO1E#bzskm}RRq+R$2isy3-kT`8p}3E<yVh5Q*9 zZtmSVLt%dNnysiCXQIqf(MCO`#x~hX#S;1_ZyVfbB<~3{9XSqbE27&tix%*t9ai9* z)s32|Fx9j_Rl~^G03NcRylsOMcP8N7XY+e?jmR(4=(1}m+{$6d{mCaGcP15p8z2;T zFT-t7{(V0-M)%?5!v|vF1&3poT@O~2Mt!BpxuK`I4;_V^`G$Vn&q_M|U8VZ7;2rnQ z=q8+xizFW|gj>~X&Uv9t&%*st_Wsi7(~v(u6K<0t!#n;^q<CgK(0B)KK2YAr;NI{z zJ{E4i{nJMvXL@kqyS_--^fq~4MFZb!X5n`><W-Ku!kts>4F;k@KO%EKd-<k0xX2H8 z#fXo(*}_#s%D44f;ihpm^xD@UWI^f2d--(JkxjG7w*@0uEgHZn?RNprbig?=j1vub zCcyg;<j5Zg1^xyvM-X{3LTlFw$7c1;FqDNa#u4flW2Ag*KX@UXOLv}cpuzhHAH&2S z=?ypwOaEHw+)8&KI2A)}cPQyD&3?Fx?YdoI9<CPUbgFH=*cDS|UoSS*Pqrgb&s#*K z*$8Vy+&0;+w;M!?e@diqwRrz{)V5JPq{*?u|J!iET3D@4w425lVeUuU^maH`I&YOX zx^Agtww;A@uVn%*K-(xe5*z(SK4BlMX)!NH@-q~BJ0)%6jdCPq^lOdmHi#J$_En3A ziz(?D<6VmVA8W<FsI}skc&UAdz_!g*?5`N5b=un%``Bu+AAFr3f?r#9l)V_vUIN)n z+a~c33Av)is1cEFllXx18Bu3^-wyirY=vS^dEd^!sqr)RWk9W3Ts{G}Jti9PCh-kE z5mw>`EyU(7v#*8KL9u;{fZ9&<;!mt&mfCZ?;I&{csHuamfn_y&oVoTlYA!hI?H6m( z8%pejwe<~??aOQTG|=`pYA-a*vtO)@02?r3_=_^Chm#+GHw5^u6AE*5z3>Wry^Rzm z`>w>w1ijGc3!fAc8}TjZL?`^n>pWynAP#QC+|olg##|a$bL`@K+Kir${8kO}XY+5_ zcz7*n9NZF<=f0uUSDKnwOAXmoC`+h_c>PqGa4~i~VM}i@yNF9oZYA-)glb)%1BS zLNRD=DDc(L4RBh=YC$jgsW<GEG&uQGoIF(%54WkOvXg|RiK@n;NLf(`_0x&$xgR0r zS5xy6NiCqq1>{zy752j;;r>74&!B&;@5z6u?}Z^kCFU|(ex;;!>btNXOJ0RRIrbix zg@)0e%|R>axhWH}f1VB0*qASm`mH$64tpv?xv+2XuWd1dr$;`tWyKIOAN5aA@vc|# z<`1_y%mb-8A8vvrq>~b%!2F@~QH($3U*tmW)=z*|tcBAFviIwR*J1cSl5uz4AH(Br zh2sxhXv-6V8}=w&mRJ~f;j@QGxlKVHxXHOT*%{%VZj6FaHV<wYz`Z6X2menyHSj;V zK}X;XdIE1S5O_l*fj5$~>UoVcfrF<5f_nkwyH7W2N#5cJlDF7M@)ny&-eRraMaO{m z7<S*T@DI~1Foshe*TcT8iE5?VpMY~?S25Lcsu!gTq6;*AOBLPnSz?vwngVevoDk+c zE+UR@Sqs`<Egqe26=$2P#pCnoc9+PZDslE$pjbt6OW=<G<^-!m(-Eyy%byk0lm=G8 z*h;tX?GQs$t9ECam2Q8~nq{4lU}_`fOC&@;k$~H9JNRb9Sz>gPAX4$LMp$MOo2gQu zb*uFy4S3#wSIXznrD7Xv6?G=3^;YXbj%(Akmx^D-trHo8rcK}Ov_cFlkggr<kAZ8` zh&qkMs%h7EfGwgjt&dtaCK%etcjNSg$Tr^3gTEF{eFWbjEKP1@7{RAs?=kv$W28I6 z!)!IVV?3>;R(al9+7anCr5oJrIWp#4Gr_*X&#?2xR|?^NuE9-%y}EHfE&U14=(XHj zEzZ)8(v^wEMHS+oAACZDJIQ_{wBat0UuvdCj?|Qj^g>4ZKm$GoOB<}W^;+gvi=Q%f zan1@;GwckM{{z{@`76rBstKD!hKD_ZGE;k*SUP@@^|Y3Q^Fr;7rsfiHTK$c$K#F6e z_qiwF_QhK9@2R);TH@y=Op`dAC79Y@)pF8tu#KCRyyoA;n3_w)rxq@7dJ;E@EL$uw zc%#@pVqRh~jAb6=zh%NkLz%d4e7U#|ETx9e5Rvu+Rtq)H98J<Y^cf<h*>0df>aKA_ zTkf?Yko^}d4Up-X_gbHTdkvJxunCgE@R+D!LDpPk$24WrlsO8&hG~!7{u^hCq|p#~ zD8U3@H5_+)O@znTdK$RkIHolsl5H&&ahx`?SY)Eu_TOq4sJ|Jcx8V^MG^a{zHZ0<p zcCf{4nfUpLYSF$V4F5cZ+l5v52H;iGzFB09Ogj(qW7~}o$L*s*7oZ&)9q_Dce+GE{ z5o$HyScx|3!KZ^WaP9LFb<LV~LBd$y%(q80Yuk<B*)e_Wz22zy3klJHh4Cl7C?9#4 zc8?RaCMSO6WQU;?KmpQ#+bbH96Dw6r24Gyfr$NPR&<ta8Va&#g#u&*+SE-o13iC96 z)R>%LlQ8v3udV=jsMh4gsBK=t%*AwTu|xsXP=MNy$Gh0Gm~ZnWXu<o7aAeF+f?4Fs z31tq<BC`j0PXv688sX*<5B{(xdMQc^>r$Ot<I#iv?TKD)5~JQJ!fyX}R67q}$|_DX zZf}Aceq1HfPHr64K^**Dn>T(x{+e_9Yv-GJJ@k^8ORHhNd0$%y^NkDUo9V;zO*PCn zM){wE<W4i0Z)U<Q0J{+=yBnKfwNj9G;Pc+-0$doj@zDjYo5FKYIm`<mqFD-m!|l%K zx3q7y*p9(_QomfCjj9LtlG%ud6_Dnze@$ekq{aC#AFa{E!hE!5cs_#F5i-hMYVD^J zhwH{rcN(etiNj<r`Vla8sTlLFU|i)6W&haoul#)nZ>3Fu7CjDU5C6{N`l~!nRA<b= z0n+Lic+ZHm4%U+Qky@8QocruwsqTfB+B{e1wi#q@TLLnKx$S+J+nUt5t(=YfGAfD8 zY+v+~neD%l&XxJ?=m44Dn$-F2k1F<?*U0h;pTGmmZ^wJ{(t*!(GT#-XliBY1ffxNe z$bZ6rQO2sydPbRpQy4Pq^}ww6^jip}lq2{Cab47Hg5IT)%9AQI@^yXTFlRW-91hcl z!;!;bq8cVw8sP<`r1Inn68r0bMs8J-D)^eDa_od(O+q<P#<-^T_ef?Scj{q;Xt=Kk zyT2g{LK0_4dIGY-5AhHuKLWe*BWb{If<0XFm@mBXiI#=q#I6%MO%T$8<`54rF&w+7 zvEgm---5QCK1f#v1AiZ+yY5uLN4>jq4!pVMNFZ;iz%2xn#~;$j2l_R#4^Eo<;5)7t z!pji;7GP)lu?qVd!pl88@v|z?3)L0Rb!nY(TS=>;Qdyy@s@ltK{$MfO|8ns{n#*ND zTdnDwY~=<5XZq0f)iO^_5K1b@dsnI2`{ZOTXyHKK;kTWW;4G3c!wpEeeDEi7mVRUP zFQEt0H=XE3izxSYxW}YTvzqrU9ti0A$;yj`J?^JN>6<LzuZWjh&4mKm!R{Lf1p72{ zeP0gPkt;7LVXz~4{i^3>3G~O|?6Z0yqY_@M>I??v4yJE%Sw^QJGjb=U4+J*%rEh|I zmr?L-5h|Pvv{8Z8Oz8dv=#GcqgMHE0(Dr&&y6gXy%A!8=CcUf-YUETXQKS0NT;b-; zaEX#opj>^E#Q=AT--UiS06)FF`AE|tvi@a+c6b%ZY>6tT_a-}&)i0e;AP#&W@*2pQ z8@!3JoxHxJ-~aq#y3-)<RO?8-dZNR@`(P<o&!ow_&wBaiZW(Bg6k-L9unT-i@<4{k z&XFqZVBmv3LOTLze>0TfdC|YGfO5a&-&c62?at!aw%NsaJ8EY4N9=n}DKfpeSTFxZ zJ;5D$O^vJjMh%}KQ4S0eO<HA;lintJMLAGf(kgV&AV;fdcrOa97cv{<AKt3I^w9FT zC0pR_A(TcizJ_r~J9McD-Pn@2N-sYOXTpSrL4NZsy*zXT@R#j?vi*U-cJqg-FZC}& zX*(eGm(Y<Pc<Vsmu{X&(gSfmua4Pf($TaUz(lu}1z$*mlD2+1XeVja_pS)}XH>!Is zS&%uZqCfBvyftNl^CF`>B{=s0ynnMd7+4ElBwFyyFv<mRGXUOk%OGdqS6;Rux<$c_ zZt{{%_ze7WsPnX1??QODaMSRaYxw0tql|(z<rt{0>?3uvJ=UKyqwlP^6S#dcgh3x| zDo<2T^`+)zKZD-~d0j>25+K``&8(PR-s_`UsxS3KBfqs~Mg_XO+Z+rWR^S9gp#9c* z`tt7d78@zwvg|WoFz}%gE^YmJTyzN>_J0iTP;|gc7#&KqiQ69x^sD(4@G(C6Eg#hi zr}LLxwKsv4n5S}r1wyN1*(*M{f1gKRI=W1~@hq>Que?~dhP-W;#>smIR1C;jlUvXe z3gpB0JUP(|1;oKnAR|O_PnX2V#z<IavhbSZbtW(LWfLdgrRdL*lSzX6Ih>*q*lY#g zgs!{jC8a!^=5rX01!0V1KyCjZGKT`c3~6Me!pY_EyCX<>qRJEO=1ZX_GrU#8$#Yfx zOut4yuU9gM@6sd08c074z%Tk%$^h@O3Aqsd?rzEuVp(`Ml9SJeh(8Y}&k219eb^t^ zHMH#ahRV;Br}EM-xnkah@P*4C7R+*%Ttf7$n(m9$&vF%<<6|dv>0Dh*$tNlVbr1TG zfw~p_h|V#npKUtykYgvjzZ4#GM)0pe>Dh0$+G62FOn7sw;8n$x_p}n7x75LO!YhiG z(DGN6guMG48uxt;9)4Q*>0rF>D?HJwFVM)7)z@#io<~7{8$f>>hLVIcK4-Z`-mLa3 z?pb5;`!w<gDqd92T8ro#4|l|W>w@?1S|j#hxhTk;%Z0Z`nO3wT0^Tfm1?1nq+zRv} z_L8~Jn*EEH*%tvX?M1*z>@DhBP(MPi81po_U!KzBesv1JFjGmFQTOP(;EiecC13Mv zg}5JngYXO2h~y6jPr!SaLxVV52k*z;T!G{XgA2^8JTIh?7X~Mno6dy-e(2vYf16<j zGJR!`+xrMk1>npAud8erfmbX~c@HZWhYa#<eLuo$l%y1re;o8&jn5fkQu(hgjQq4m zSA@O&fy<yjrw70CZC14p-a;J&dFC^qPshREf`;&@s)MW?9ZC}@NWVFp)<GIWx@$O1 z0XK$VWceR_*Ge#d@J?SUSY9$0Yom|OvVvY!!|zV`t%M)ZyA}vH!f(?9_slu_>D&8Y zE-m&rUIWdzPPN7yyno8Un*_YPY><<ShJpc0KhgL{A$5BnD|?6FCE0R#O~Q@c6x<hJ z+^m~(YuvoMKTr{ZcT7BQfOVn0dax*o3f_XRrs3}FAhm^RC$D+U@fxmLlGUmu=?^py z89dxImIQg}W_q}Ep3ooIJ;ZEb)HLtS14}X)EXgF3X@7s<iy?LktLA9EhSofxv65Jl zU|_t$ZQ<aKKQB)K?k5cK@-u_1Y#*w3wAfO5$bWc+EfX+WYpdoamDnuKlHyq<gntuQ zrM_rno)4NmFo3e&@^LDCpO<%k2QSO+gLjxg9z&e`><}q$ao(OpULwQU6x=CedkBq8 zppj%b<0J7tFX_FF!7!KkUS6eU?IDtV1n%N|t;DXiRikvRTjyr4Lq9KH`}GfT@=3H0 zCE%ra94<nKfXbPkFc+tW%YP2(U+WHY4&DH3t1n%*Y&Y=N-G|`Ksq4VP|1$iBHP~W{ z+h_gx%yd>hH^^qb>tiyH`Z8}xp9bRs?je!Aa&fTJ#`SdBtg_EV#yjCj+otoh*>o`D zz<w>zOaPjnsx+<gE?9c&KmvOt%%1|^{Spbz%2g>^<>a+mwWUZ-T^nxQ$MCL-x>f`` zNNgXmdpqtp7Wwr2%6<mclSD^}UcL`-qN7hiFEx2Nc&$MLUtVE8w7|y<m5;}Pk4-8c z^Sog$!u@ci{?ou4kw23E?h4n>wS)qH2)=3i%=;^?T$R>xpjD^R8aGS}T4emY+9KoC z79G4w@z52DZTSM4MAi(%^Y2c$owvVdx1S;<;XK>OzKX&%A$hZllP@boesiI&v1(mw zKucb*eDwWnXy>!n@N{0qn+A9ZDxNgV6VcNvTDlluq;>a!FDL0Gy-Y#vQ!g!foyz{w z8wxxb#PIeHnT7T6M(u<UHctWTb=~m1v<R%%Hv_O%9QxVEx9s-sn{vhvOM1xw>$ROj zVL!%i2dt%2FEzgYrY)lfW&geBSD9^9`O5<SK2&FG&#y8w03FZ*!?4T}hPg}`=JG=_ zepIdcn~%<H@`d~D+IEpO!Aq8@--lbb=F;-lA{~*HNi`e459`0)!Fu(TiO#LIlx`is zlb!Ikoq3Dzdez$+b=wOqQCIXw)iuzoiFabdqw}!3&r7_TQKsF=_-X!-&GgxxRWHN7 zEG=m%>lj|5kw#)cl`Dk^xp3(JaP}?WO;y?c=aom3l%`FA(iTXQ0%=nqw18DmLQ+E8 zfFPh(z!}pP^rQu;;9T*+5GZP?;#7(Xtq&Au<e_4!ouO)N1$^t6@Nf#~P(+9n#Z%gn z(`Wv_eUjGd9q;%5E_}N=XP>>-ey_dO+H0@1XT39LPbsY@obHh}D-$iGA#Sz<&#cv; zUq3pB>{@bA+*T9qQ2C42LkB3Us1(|hJ+qAGOQFG3`bD4syBZB#@^$wsz`eK)54&{3 zom+u*6%y8^jN3$xiqbRNwfWmbnT6d>?}yYNb(<)sG}XA5wU;(B!Xu&*R!B92R!9|t z6oyRb>xmkq1M61O&|xJup4F-0J(cL7$%Qi1QQ=e8(=*#)_matDFna5{OB)WNPAv#T zCK2u%a_*DElfHR*eGyN3XIBDqIf}KK(Kl4MZ~odhv~LbeeN%(D0-p2@>6uXQy-?Bm zEw~LqdgNaL0>6xxIo|4|X2tW#H?yapFYF>cn^6ynBQpfN5)C@w06%hpG3Ts!hv%%g zurkYafLGVk`qsb=e4&@n?A&FW^>%wR^pM!gHv5}B?LsK1?%vOv9JQU)0#hSk*`gqw zqlLB5&;G*4by7Ls0Poz6eNjlFEGzKKBOI>%yq4Gk_9d3iZ3372LA%0OZ43JGY{Rp? z8Yg5?!#=pIg|!^)lXHi|z9F%Z7`oxPHzztbK@*K=^b(!;FqZ_5Ee8^ySGXOFU<buM z)5q4>K#4}TrBP$w*(RDQqlFv$?AM||TculUSB+V(!{$b^Gt(i1)gRRX*<K=3`tp)8 zXPY?Lqj{DQ^gTZB^I|$R%Or1(ZZoq)HlL8wAH1(SJg(1+CJOPiTsYKgHF3WCG0&nf z&tCowPbL$7>Q0ulWyyNjwSv}=c}VttI<@!Bd}lQHGGecY-n*cqV{H=ukTff!g^Rr@ zDbZ~*3bWJNAG{v?h&7MAM+@Wo7$fX4CVY7b_tlKCNc9q>sd`<U>e(jlMp|RH)-WAu zUqV`KAHH{9DBUK03jOR6_%bDryhjUcA2o4-kD4^!m*rjn9k$c86SqgVeM%9T0fK$< z_SeN10I}A(O+19qWSvsAP5cD#+q=M*>-UwA)X~D(-tOSkevg;Nia9g8JDA+RP5gfL z{gvIp(RgZ^{UDyk;OQJqW2JpJMJ9aO2aK0>yY2SbF<5cuY5G8HN;Y;swPefmp~%YO zfFl=nqYl=81|F8M3+caB^xbU;9SE*vuvxr*mRak!uQ$R*dKvzz{BOdh)be-K9v{{+ zu$?989UZZ_1pC^Sx>3#}Z(6UiaYQeccZ|qO;%7&CySE2DYJVN`nkLq}?u892YMaPd z`hyR5g`iVP-lGL~Z;3;d&!&(wrMD$cWA+d{(A8xh!~;`r$GTq1XoNaqo9q!_o3J%+ zSod?NUf2d(w#)&lN(F1ne~;*<hoJjUPSk(#A0ZQbU9t#ooxA-12Ug`Etgxo_P*~9G zjlePi7Lnsn<H)JoNJpyk^-jfxB>oYpFAUC*fmp>OZPqBk1E3!?3%7~USV7PABss%( zb%>>D*q82;`lfR$=2z@f(ZUlwk>0x+tKBAQr$BdH48a~)G#!nYXn60?<mVh<r2dQV zCmi)7L;7!NS2XH@6YH`tonrqZqshh?YY~LH4Ckll#jrj&?oZ51zuD+YpO?PC=we>W za?NlVON(44C!`e^8%>{a{pI>B7a8l+Jo(;eQ0&%gw2tsq1LK>7b|qqbpFj<hv09Qa zz7O=UDT(>=1G<(Xe%YAXPT$xp*Eh#>u(*864;iS0-(VIK@*&O`n?J+F9U%Ig2Y;iB zEfYG#0bT3?e0K-tt_$Hk%n33#x-fsq{Mdnju~_hWr+Guv!5bY<IG%wN=y~V!Hz)D? zr16OPXUvBrJoAHs+T}beKKF7|)oIMrNAQj-b&dkaYj-%QXNmp`p*K|iv*N?GNTEN2 zR8P*=<)rgfwsh?4Y}^xhx1%o}?GE>aYs$cA6=AdrF<Nr;#TIDH7GbQ~p+n53Y|6hK z{!MNIw-mD6kMY_U881qBs!S$$#0M8#&l6jsw{L#HnZ)CC&uoP)vis-9L({c8*e_8) z2C3}7b#A|xls@-&O79DP910oSk<#CmN-va35B07AZ{HY*-`gF0U6P>u8seDWh4=y> z-WGxQxCC*&1o3M?WT<BXxMdER%FTJEobF(pIJ{<)!wml%zlQ#E*MIJ<zTg@_2TqoH z>kbL}bP4*afX-5P2fBmYe`r4>ZqiKrZSVI5=K|iu2)wBhJc9&pBj9n=tUxX}uRFnc z{ZTs#oL7PbTjt37RqyWnUFZpbJ~9GbCP7z8&=&%_jM7GUgKW&l;djxR75F84Hkqr@ z{}rCAWG*j3Ap5u;anlh9A8{Lgi5%q~{4T_IGS7iS3-cWBf~Hu|^-k{eeO*COl4yAx zR$-Utx<L-~ZHWWzf}fV_Y7|2_P%9|*=@{=isg-~7XFIxre~=)o!SnNC0R3=LJL5oC zaEBBtcNF<|?ISbf74fBgB<F5XZ+L0nF3h-Fx*%~e{g?k)=L2pcp(eNQ8bKr6a>nYo z-W>|o<C%Hp3&^JTXHmvU4sh1O&;5VNuLK`f?NRKNK`UVRu2UkXSL{{gROFHM{n9=X zpWVd?Ex3F4(!OZOeA$}aZ;@5DSz2Ys#ors}#r+|}gOQQ2LW;<ytd~aO@t!q;igI40 z##6>Qj(3R{6=hdouVaz}mL82`pcCZ9FKRh$jN>(lx262Uq!RCvO053f5))CPD^j9D zDsj0~;v$r&rs6I(h%O5&$?&e1X44`G-rC=VcNKVlegxiG=n$|eb0v7`fTy8aFA$D7 z-Zx|Z^==dTH>w9xdh91mbv*7S9O|V_xJ~D{DK8Y9j=3kNj$OdLj9y0Kr(&?{r*soO z?Yi79+?600jmS&)fV#@c>k78_4zJ0apOw$zWJ>2U^O$EgLeol=XV#uhj~!M*aWeE7 z@Zaaaf65fu0aHG)@o(Y@)@({NxvDSVtClhtbMv^aU>jsjbNpo7;?Zi25Dfj^xZRId z53HaSQmex&=wSC6K|!s#un;nRB4Z?Lg7DO2osjjj73+fF`WpP!B7BNKcqBpx5?Yw7 zDY6d`e*AlUJ1h3Slul}^odGTLj!mVxixR2JcJ1t(uHc>0Y@hC1m9OI|v-VqhhR!vE z*E^PTvMPe_l_~P7yYgkg*(<tNIurQR3#4T$q?T3uZp&0?*&Wh&lJ=AFTq=#H4J}hr z%!Nt(jeHi)vFFVBBjm!_YqO=fc?vcBQjGWPvn4m*oGaVk75qx#mx=87hPC4Z_->I^ z>vD*vAV^=}K_Sbr)4>T}N%BN8s_h0{ATLSw)XxDssClOPMvVDwgD`Gf%LO>$GbuIU zOM`~qi%hi%zBm$d=HxKji3Te*sorm%kCyArd`+U+^?AMQnX}?+9`nss#}uB_=@AK@ z0{LZ`-&};&ekC-NpzW3gZGBx%mWxWiL^STkV@_CR@FVimcsgr_YlLg7*E=w;rYz?$ ztEON+X_YB4=v|5a>oW0w`aTZSQqub9PA@1RSL`;iV2VbF3QciDqyH}B)~T7$Gw>Bv zin#%ooYFXxF(>n)6Jt&01sQij9}s$n&^iM+mIjyD6-;^eughr7pOMB=Hy-q>3_MSm zY7GUiNV6dgZDZr~dAvg-?CcNE-rv%(eZhoYm^}xb!%`YS23x-+80Fzu84J6}-X4R! zeSnr7;p2p=UMh8%)HcFHF`$)b%Qlg+YJ}>3l9x$QB5x*e$+-ZbdI@b#+N4AvZ5n8c zP&d*sHvh<**QLpz{T0X0-VUtB$WP5OD6-z_x!OUE|C?=`wE9L$_0Pt=BdqBN{Y{}v z#?lvjrzeCHnsD7;?Jsc*0}W0nudCq7f2p?u^}en*e7pQck)G~H%?50?lDdtF)J>?9 z@yu3pMYZkjW9j_tt&dZS#1t(punKUVsr2M6fBK;P5&0M&Guh;$CTGHSJ+1kmoh`!G zxvCi3W*fg-jBk=}UiR+h0;Z4?hH=V_SXgX7ytRa144aSkLRv30B<3vQKWJCa)5SPi z%SJp~tByI`uC|>GBtnBPb{_1gT{lYQXx$XMee098%WID#zE;#Wk@%~D8*(-ma6%Jp z^d3+2q_Krj{+Jd{u*mh3g8o?<Tr&kPHf-VHf~J5ct=k`d)A2_N4nh9?L4e&#V-Bk- zYHF+Dk$~OAHWMqeOqRBRPF3@^t*E0`twMWguA6RC<=8fD-pUFVno3hP(wUn#9md-* zR%s@0hc}%MltOP!(#}gU88H4hJwJMhT1js0!t#1!wsgx_&F|vXJh*XH*k@FHV<B%C zt(giRSfPx<>;|IyiThZgP|zCEZ>6#!v(poc`D_K}c-)3t*pSkS4RXG=qQXWWgJt`` z<F@j~tO~`}@<w(OS#LW+g<G?v{(YnsDj{;Y&$#tnND0Wd5upn>UC@P$6$fnX{yiIT z*2JpJS9~V|*>z<ba7HG*kMzm5lGJNLM!s+>d>LS@j<mBzm6?T}Y&KeR^?l>k1GXO_ zzxxSVcG(TIz87#eHim*vG^%l`zNkX`wlY1&|CzhkYw^bOsa`JA=)kGEGhwa~@A2LQ z2bb9yp!Fn<coJjR6Zwg@AyH1Bpy4Zx6<V04bd}$>o)MZDPr41>x%$~A^G!a+@&mpK zOiTLM@K@TCmgV2Ho)(%oPsSvFi&^GpklO>lC9LIG;3w3YyzfrG7WmoR>2FML_tQc@ z{eIdNz!4cCJ$?{QOc)Lzs{9`ih<JkM773yNh%%hXycX!di2o(MtC_Rxf&axEeounk zb-h&kmODOyHP0$rw?7C9q#OFaWw5NtIcC%!;iK{?<kR6a={#&@(*_n2L2dncp3A=) z*u&E^_PE+XTb6?7{IkS&w$HXW%LzYC%W)>1#M2U&6AFGEQaC*IZ}CnqHG!P;4EQw3 z!K$9uO=YzEXrmEcWuEV1EwB>3kTOp>tw@zYU&bOq3kB=o52D3KY)X&K05!v;p1LVR z-n`#SO;nu@nU#LU)JuUvys@WgGmUi=>ucwSMQY#fIue+bam}A7=h_t9$rHv5#;+4f zV}9~~B2o+g9(dV0+%5#N9ZW>dN$}lcXpaRxNFKvI+X4S)M29uYcdnk{li}+s!Ka-V z-JA{%jodZ76dHkc4R}B^pj|CpTFK@&&ZbcJpMBaJFQU&5!0*j@K6*&MeitAxjFFyI z<hLQ!@}xa3T7NP?Jg0^E<vHsidyMomWe5fHaDqPZQu}P;VT#!Q9_Z`6jttzUBqI<C zCWVx5p~sqDY16YB^x08ZSYW!@b^|bj+WxXNS@7Uy5rZ25O6V&oIL80+CF*u%izDM( ze><-l>^;~-7&2xw+P1dqw|#XT{PrY58bW-Vg-4w->Ppq6Zim^0wbyU*QZ=WQte{}i z!Oas{$iN&R@bbIZ$UdX1GvV&Y01R2$EcoC9HXAYFrkkeG2DhZYlod+wK94(;l)3W^ zvCc36N$DqE8WV=Z5ZK9GN}TrUrP0*_55zaRfhYbT%_pMaJdhidLUn6^>^TE5Eq=~$ zE^q|1J-iBzxG4Qc5nk$9jK#XT;gImT!P5`amz<Hy9WL*VA7ZFS5U5=hwit}JCIaES ziyA+)1Uc&Wg}4ve*vk|5xY`01)G~a|xDW6v_-x7ILORxI5nlpr?aQw02GSOsal+F> zJ65c&E*gFA9#R9LUyr_~W&jIgP5ri~pB70Uh3C}Ry4XnGu>1<^wBO~0rAA%8($;!p z?Wdp$7qdBy$Lwe9*cFVwmSAzX*GoK{hGFU8(~)?D8(Nb)`<1AP(e>LpEdEs;Nd1*k zzJXfU`x8hlaBJXymN{)mnWc5Ro#lhF{;J4cFx;UwQ&)H4q)!KaWxVwNMd~f;W2zml zn+)``^g5cp{?ppNG<oxRzH)G67PmZsvHwN(&%)f#CAShdf$W9O#&Dhsrx<g#pTUZ^ z!qW+5%J!91DB)T0+e-|6*$rJl`k^6EzQKvA5+ll)HGZb1)va?;29okAcz)SwyW~61 z-<$t_fPoiA>8q!v_DX;zn46?6MGe@Cf%CjO|Fr;1Vo~b2P-#6i{)+&a!y$Mw6n*Ha zOm~GcEur!BNJz;uNqyu)>O+sO3viH~hRZ)a@|W@({eo0>LzmKm@;m~{{@CB@eje|- z(n|qY-1LRgHsajNF{Di!JJuf5JAUaIrjd@MyZs<J2OH?YjU9jdRXSB816YoOq!llq z<~2U18k#4wnB(X9%={UF0~?-74$~Km|2#h_KQmBLvCAejUviIksyqpRd%G3%CA+aB z^B^+?x4a`GlhHunCIapiH|}`>@~n<~4l>n?lL?&B`NIJDmI&ly7_D9K0(_oN$Y-$I z5!*v=EeQoxQm(}ZiKQPMZi*2vDoF>=^V<BMFB0gN-ypSCV9m|yupTTaeiwV7D*xQY z@ZA3ZYxO*WAE6V0yMxh;Kp2NG4Z((RK%!fs%qri34YSN+Pf^BJx4W2u21a5x@OMjk zF_qrtTO=xHQs$rFGl9E-*}HQthm(7?moj}1N{H0p8tS>R<DYNzT?9?X>ZLV)IzVbz zE!FU<RQFjOSKeTDdC|9x9k(1Tt{7GSgIgoKCVDScK#%A=ugKqWQQ;hg9$gyg(XDS> za^DI}$L8OUHZ4be$sV`?ze3#;&c9%dg*{?aZIFT9YEoDy55xXW3Hv;r$&|3ib7wv3 zgPTYCm<2v%Gr46n*+)FMO!HmlH{{>j@?M)IrVG>%p*&-Y<0`DeBOY~mm5mZMd9HU9 zR<xjgcZdbWkMrjG&-tW!C#X%zyw=A%zQdTl4laHbo+;eSpiFoBFJnc_ZMn;t3?CbJ zNG*u*v4W{zR}9}s@H=-WX5oPMjjPbiC8u;TWN*hhzR)nTxK@m7y1sn7o0&xSXbj&K zWTR#=tjs*MnXIb#KDmReF=GpKPE&ZqeBQU$JEI(&qo=Uqyjz!Z9(N;?yf>8Z0hjUP zai+%Zz0A*v;E~I&a{;-d1M8FUFk>)Yr+hPp)Mr01LJT+;XYvfso{Gn9=T5yEFjN?e z6Fqy-|I_l%1a$lvetG?*A$cnO1GO)Gk4YQlC$;<lejZ=*8F>TFmw3k+o_T>#W|#SK z`Ox{QQF~v&$_dxu8_bD@0G*cNlci1Y6}+oDNKaQ!V$h38`LDpAVVI}d3OU&p-^ea{ z24%i-2DWRQfLx_I08Py4MxK<wKDBf1sesa;!aQ8tqa06}F8fOYob+DY!;Qa&`bXtI z6xkoi+<6h95`nCTzatQuiqJ7+?<}pG@7xaBN{hXj#SN6O|2nm>6duMHoJGkkM!tr( zze|miD1Jtjp65UB9s|#zz`ivHyoQP@TO7s~-s-f(L-2uq?OV}p3YLLplbj|ofA9Ik zYb<8Hqf5zt`8rN4Pk|57wpj8>3iuU-v@Mjy?3dvbnB>IWQ}n?{pq9s@?+3I2?U-3T zxV5SP#PwY!@3eK~X*Z~cR^Q+Ge*|Wk)0#2&8Etx^-%!kWhXZSqS)Sl0v)PE*tdnMQ znfE(4$vGGGc)>@W{tOtq{2vFZ<rhvGi${B^;1z|e1hw$5{%xT02?w#&|FXMAKHT-l z$)5so*hhY$1<AQWjpIq@i&&ds-7|9fq`*mMQr7F@2umm!hmxj3`T^b72dW`oq^tH| zP2J$f`?_6oWWENZqN}SQ2R-Uh)GV(!@3opujaDONSQ?eI_vzYw@S}Cs!wO@WGxA}+ zF}Ovti9QTU61|prrq%#D@)l8(QH}h^JhVQkB}t%TKK7HA#iC`0fqU;B+*{QxdeEf9 zS^0jV<9n&QwElVc*rUvc(A$4NZx3jG5pQO!VDJ4_Oz<267Loar1TN;UfOTtrGd#l) z=*LA9&Tca;ShJWF3;lnoC$U|kss0`0(14>4U8iUnRzv(*keF*|X-4UxIhn_Ab?m`O z-Sf~tWY8CE^|ZIDZ5uo8J7@;B8RM{fZIT@+rshp}^sDu~&i@!lbCA2q4~vB7nV$b_ zpg~+>**T}p9|ylISHQCXEAKL|i-j-plD_W)1loM;c_={}3RVMaZS0tHkc=g8wK>%v zQ>{5rZ5st$yHtyFPMnWuB|kMsK}JGPgHj~8d362?_$S-tz!>TqM2nurx$OuxrYa0o zfs&^89SczAYk*?1%rakXUK%w<x{XLiiZ)hR$*Ab;vqjC!?*j`(ZaKU<Pn*>-61$lq ze|lgn!GjV1=45?-gzy!@IRxep1mDA|V$)-9>I5c+XgZ8^Bs<`@v*}AnMX>v7qW$sn z#^GkkN`iMe8mnVfk0OFw>)t1v(0$#vdyT-kH%Qu_2m0xKoP-N^c2o868jaB&;F4Of zt0^MqmQ>yK&TW{>VQ)TV8)(NY^MYobV4;$IdK2SU7bld<TP&t-_yUyUeyzc)T_3gp zr)g2~mHeC7fnpe0dVKTe?)-{G_)v|)YEMOJ1D<|vL|sSpz)xTjmG(0<#Dsu6o%Vn3 zJ{C}<Gx$wd|8+o(nA{3@JeAh)S;zwDy?Mp`!Bv>i|MC%S)&qDtj;H?MmQY7zmD2tu z_o09_{e-lSsLT>H{$PORW%<o~rES0eS|B>2pHKGH|GJ-suW;f;@d#h-mGe(}k0&t4 z9^+pGZ)kKYBddne8w<pSH-XiSZZ5wAbRexa=bU$S1V&+;2)`}VO~`xfO;36hFO#(O z*R@gLyHC`{9HR}}M1>Vt4P4-7q0vM7d<uG@s+-w+G74U94V<u%TihzsjC3$<G^6z2 zfZqhRB*)@lMeRH~^K4)RQgG=MZZLxz=WqvX_(eZuzU)h&DWR0&>}Qme`FkHp^~4hJ z<s6-PCaM#Bs}R9e+Y^X2kIk*;*KTS(zb+K~EBIDLo!ZI4E<l)1RP%1^G@;;sOSTLL zcrP-uW_5>eHIP0dyvo2iJFJEq>FtTCZDN!@QA5t#w}~o!(lDig-nUIu1NSYIVEuAJ z&I+TtWzq-`SULx6&oawnLcu>aR&0PLQOq25dMr3iM$q8jFu4l<v?@9!u>v+`8<`YH zMN-6oEah5&b+eK2VGD@f0omtD>j>^8zK=t}X(5X@Y>zI?H>ev+$-Ro%WF<Wc%XjhE z?>I@f1=_%%X4OIqtVR<1j+Ah+OIy#?7z>mw_@ZQ=x5Fbb*}K#sc#_s94H-o<dgslq z6h5UsoT9n^XUvb6ai_P+COc(x$42Vd94Nvq4C*N!C159q_W-t>5?+F3{`35P8z>nU zT~p-ZYG}W);GY35AKI5>EpH0%Gi08PL-^cHq=fL120i1?Jg}L7H9!dsp1m93^Nd!f zQCHvd5H4LF8yh=!?w#wZtKa#@Wq0EGu=XAWEE(>LSKnvSN-E<0G*$@t-UjYNdMf`B z9E$YB2LeiSCcYlW7=H(TM1|+7E=qrVB%7vpoQ5oqaAPOlXCNWF?0ySh+6MFfh`jNU zya8|z9C#+esf6<!eP8*j_pjeKy0aqvWGuL~<&rzCUWNV+rykxo%cLroH<wf}GpcM1 z)@54$4*_P%75HUqf+OydiYx9|pAKs?HUFCcJ>v~8HST%a+COM~`Srwxo6uK^Z)5WR ziPMx&*3SWY+Rp((;TzqF`9}lO96v(pGsW?7prn|<7y+s+DoyUwI|x@0uEF>36P}<m z!V|QCCxEBN8=#Q~x(hR}p}69b`_%x!7tcW^iBrTz!hc+k@tTi7_zo9-3GYGX=)_Aw z`^`>rz7Sq@k8jX`lD9CH^f=(w#Bw!g*?9kV?mZg}?*i+_4D*}a_DJuTG1C<-+Vr1+ zcZ<C`_)TsFZY5Ohz-nFTCw_^AvRUSDo0XWc37~tMeLqV0(VDLD8$r_&JV7j{QhL&c ze*=C7dMCU$-sCqHzXh!mvgiAKkXicnRM_V*$IR&6_X5-eLIeJjebhY8f6<-d_!=54 zCI_r$R1)8g36SU}_bcl!790RIYm#JN@Nicdg5AA~1(azw{FN3~(AN>V{oPvooaW=Z zA@_Z{UkHS4@mBU@-VA9A!90vezDaGut)7kWAxQ8B*&pviC_^AN_?`v*O04gN{k``G zn?aLLgN!oK5|&AupiexSA6-v&i`BhCz|5yPmh(oh-m!D;?cUe<wg9o`*4VoqGeA2y z6LE(IwHdfu6ysyy6EbX-Z*=H9?s||tHi7Iy{!1A59|9u>WrSoO$K5Yj0izmMp}yIY zT>cuoMHVHGY2=(q>%UJR=SudZJ+|)S*$qmZS>eu5-8cNvb|&>GXy9?9InaQdQ9co~ zb{gzoq_Q(*p!8C3i}$ZqL#vG0W2H>?R)&48k!o{U75T7HqB~Q2ppoh<umT%U9+Aq@ zEwMC^`w{U7lu2=hHqMR$))dB4WmcP*Vv+8qougVB+wc5~+-ZgW#}RP{wXE3I;mKT9 zNbX%Uwy*gMQXxM{qi`-OHb~!&i#zlN_+dqQ{jbx7+v-7EsSHYZ0$R~q#CaCRXyCVi zW?SsG3vzaGfstS4K89PM_ikF|P613iqp~k6IOi^Ozmu!7r?|^(Hds@7$xZ$Ois$cn zkAp`o_t0&nvprMD^JYAIZh73c!8Z`M9#16ZzQLF^k(iRfn7bk|g@ZAFh{P-%j9C(i zSvVNujKs_xjIl*xZW@faJ`yu+Fvb#z$ry~85Q#Ak#*B%?Bo4+5kHo|d#%Llj%E1^m z5)<uzshGY#N=6G0-y3WHt~l0SSWMp#M>8D{uT|Mct#Z$&1y72~p12~V<YiuEFW_lm zBdxNZ;~|q+V-@l@m7yo+Z2F_ryR$Y8^du!*hiB54lwcVWYZ{DA84^2cFjg@nwj(k= zChVs_4jH%aBk`2*?U2}$gR%b{68q6$Y~zsFe+<UHIV5)PVC+jnVs{P3J~kM;G17bY z4EE>Uk(h$Pm}QX|G8e)#Zhj<&jB_|9GZK^HTe>REiut>OGE}di^v!n{mF!+=TuEc* zFR`dwz!UXZlVqli*S5T&HSSr-O7S#Kz7|r96=9)gO4H0c=ARVfV`;#_>MQ(Ej8CBq zABqVn(JlWqzb$YpzV6We@^y!veBFt^%T`veJQ}!p{uP985zYkW&Hn-6BEo-$_<Fzr zh&jIl@rA%Fe4RDF1>xU;8|Pm}xP;J*@O5Cu{PPIs5PS|x=$uFv(MZlniD&6|J` zC_@wK_CO#DU*cnb`9j*%gf^`TOv-HwWaNH_(1LIo;Zh(y_cTIt02%=sm#$Ja+B&GU zzw~QrewFPpAJgVpRAno}Z>h}#U+}X!{(LYTH>=|TJPpLI8;penaxj)3j4e8tj(wU^ zFbff^lpMcu{L1hv!!L(l4!<mZS^P5iW$;Vmm&Px~48gh(c`S95X}YgcoM)voruyhq z51uN;C3quz**HHl&Lb{axMd~B*VO)X)kMuiZnS+tN5B2AE6%<uU-Ca@#xJu@@EC z?@98KXKGzh0lOyhytoKEK4Jx$Eh?}ySd9dF*-D(^1{hEpEKle`T5s&w2-{RJF~kpd zA8A)J3vW2wel)Jq3Tt|d7HjyBC(*r77Iku&`xcq}<N}P+Y1hlEZNT3zuS|5uNnb`t zU#Q3zM*4D+BYAwBlxI;m4<~)OMf$QR{KXdjqLjWoBSCvQ3~lXcSJ6FcX`eOniS9}+ z3-F%eET{tocss-;dM@4IU*<O8eObXWw@qM}Wd&4Ycz>AJ$l{;?t4MEHJwnc%q*Dsl z#IBQ8nY62%zlSpCfmS1QTEbkJw62V6ekt#yEP>QtHvFVvb*y~i$<u2x>#J88>S;s4 z8Uj_dZb63?bqw!O#z;-~tnTp|c(PM5*r`Zemb*_YP#0r(MH^Qq$!)j|Q?w>=T{!2S zd)^6DucFfb<qy~Pc%T$#@sw$Xj|H!Y5#bijJlcLVo{ZCO>lbn|R*I9f5X;48Ea5ec zoPCRZiR%fu5^)C3kP(kKy&cvyD6K139);K(CMP{{m4>Vd8~VzYxI%@qZi<|FucC!= zx;zcv1bjnCT!GuIpvGr|I$-Sy^%TBoVI}N#EBw39ni{sHHFu%6Qq)_P)^GQ27xmOm z+>>PWgpZo-eG2jI0sPhOvi<C15T|tDlpTTSGarKt;!(cftp(S5|4gOc?=U*XInIht zcw(#zTAzrjv(5CqXdCaJ<dC<>_^0Y+tqPW&;<br>nt#R>rHSIy_T#R_xD}v5i+jLL z5o#58QaD-bFd3Y*J1zt?&|v}e`_GEmEr6*!8=wj8);f%(r~NY!g|x(?X~FHuknS3x zr<BAcY1DRIL37|m+vh%VT1!!(P?<u0GRiA=s$D9t!l-kV&W-Z2c%#z0d@>`bbc*gr z5X1C}3HHzky%O;J@AS$So)edb#l_l7@=J1w)V$mi#y*r#hNm$0*$}}}4-8_d`yw%= zgE1wMn7apK3L`Op9E@2SiMe$!W?>{|-eAn!NQ`|j209KBj=W(oW?Cd>%3w@JB*rut zV~oU%^_AI1`v_)D9Q-ys@-22SMiYrq4#u#N7}{@G6>DDx`i;<ZgnC<606fSPtV&$5 zbVc=w(<>5Jj`ocPF8{y5XK=5F?096C-LvY~yR4%-yvwE?{PiwNHA?#|a5eDt!s~FZ zJ-~ZWCYx{e8Y*oT@b?mnjHk`T?r&<*mW(O><Lu;<B$hUxu1)p>zvF2EFoM|!9E=?f zSly!G)$2B|R2Arp$w|OR{YFg^ymhdg*_FysHL03p`;T{1`Vt9$mlP1+tOI<S3f#mF zc*!nXNfDfGq4hrp5*$AT$mx5S$GNU<@?bq#oP#a$+160$3rJ1198agY++UKKPMq!k zfSq-+3bAzBm$e!GDsi3`ckt6Pd{j!AxP&Sb=PlH(+qE*bpuj!5;~hBsS$fYXFL|c! zEhtDDveOKQ{Kr&GL8qah-;9=wgB3cXYa&`QQ8U_p0WBHWiH34%m;=IO*f+qK7*Lj; zv}8bsKmZP;gq<Gv4HTaC9Cq8?GG1ptT%xlxZk>HI!r^<=uAFqP5&NE9?PAxIo0 zZx_hha6!+-`ZkvwDc0Fl$hVo$wlYR|c&*NE8>Dk}NNMMp5@Scxx*AzcG+^>h7tS-+ zjP}QS?H!&Xr^~*|>19^w?D+)BsyGhxah%TXbiFC^)&q(sT)s;QA8Ss0aEbkRPRDM{ zt!Vf<ss$DDouBN-{|+2k<ygIJOp<d>N6SjKm9ZP`-0ID%sf?!8hZ^mIXE8O2{8Edl zbm`qrnI3n&M`G-cyQqvqjVo*<#edt>PLg7gjWQi=*KlmB+`hf`P@~nBY`3*iHd6k) zf{KFofxX`+I81>sR;WwEJ-TSf3&J<)Aj9>hc<pZ5toCz8V*#yC!Mqwc>&?b!@S=jJ zV1ouXUVD{Znej(x)Zok%r)ltt;h$SS4q6Vlt(UdO1-W^F5$z-6PD7%-vX6d|*-y@5 z8QgSG_7(9|b(VJk$Lj2J#0eHMD<*O>%!%Q4yEtKCb0BI^#wgUK{-&;a?<g;eQ#3}Z zDbW!bsOe<XR43Z`B=6(4aX!v?C17*Y>D@lYz^r2n25OXy8WDL5v!B$c5hrNn^)%k0 zPu`0?VjWd&w(9J%Y8z@s8^;%{bQ#xC`p*J#<43=$*VrL<5jjT!WW9fk)QM=R4Acqy zneb_74nNxahHb1=C(_TTlaXB~L!B&AFCFV8y(HBNb^24J9$7=`F|Ob)sUE%|btv_^ zvEweWAn4E3GU>EW2JL{M7yzD>A0l!%+Ndso4jZ2cESVa?tNKAqn-qx|IT#Zci5WH+ z6BUV(`P6(;agBmL$r?`tnAJ{x6C~_O^_=lboLuzyXJbth833VUHBN1vCjU8J<J7gL zvf0ozOXLZKnCSYsUAuYh-zno4w;x@|Wogab{>|;$axL(b26BrGJ+siHXROi4AC3Ic z&bZc8CL2~4bg<vxu@l-=_Zt|V-@qXG37lwWH6(4^nbY{IK11rJ%CB}YZRMHOF7oB- zX;=ZBE6YDE#hrFF7dOR_`cuejr0<@iM1DdARTq-fjg5e#C-0{VUxOy(nc{)8VqN0R zGDqUP{$NI^mLKJuJ1V}_z-2ckJB+-p!#YdnAD(C6)y0g^&9EKRVx2wCx0X+|uXR;( zxCuq5*TwK4saLnSlP~!CgHfSFwsXf>J+YK|MnUK@u>m?iE=a4TKGLIosi-5VCy_yq zoX<JT>th_WxzaJ-M;pzhI30v-juIF2i9&DIYj2KqzUG?VnkqLnj&Y<4R1Tdn8@2?a zAz?FzNJ^ZMhO&5LE5~MmdNr34S#c<MV+eXA;0=b3i`uEl-zAM|iZrSpC}uZeWFf_| z2^>auv%)65H)SS*M*8)b4#SuZ!<Y^mGNzw`5;k^FMZk<jI+u<&c5KQrcJ!^Yw>DAM z4v)nuFrZqs4WteO<4W$ujz^DYt>20^&q0f`A}wBr7H5Yzhfr_k$L5dCd&@PY)u=Qz zRyuO8a*Poew8}Qz&-0;RO{Co^NS)4;yRin0tPwOWbO$XIAWHV8%7~Pg=)xc5PeKPr zm-DVIa4Os3285jv2vkVxMT*kX0s6Wh15E07Qh%YY3&|WL=ee73mym6(G_qA5CvHjL ze1ILsI{v(17(cz6>0taaB4hmvoyv7Hy~(X|j^05DPkQd3H=o~a8z*R$R!FR3#&f(3 zb3e6J!&O<0cIG+OwStE&89@Qd)lX>T-I{Loc>L{U#wYO$T2J79_SUFV@cCkHRjKB+ zsx+U%_At&)D`CM-GYqNIT2)ab{XAHIKLRS8cpx~`M#osMZuYPf=lhO}8qbsb3Tjw4 z*K309I(awOk%Q8|as5c$bTVeVL0~nSw%6t{pinfO%9-C&--xbCq!QT|(x7=r($g>G z!0P`OqRYCbRj#?h<TlbT%;e`aPPJ=VIc}!w4d!7!A93Vus{LWt8|=TtE!JORKE~Tm zi1U!R=Sivz`^R`=o})9BQ<)uq2*BrN)UfWT4jF25sEvtPgEX4%sNS3WG2<7s9#b-c zB8q|?SJ)tqY8Lgo<=s&|!`$huY85OQs?~UNwyM;hpr6n;9{4Cw=Aw<su6V~k(Th3C zVcp6udACxe#~&A!O&RDbd{-X9ZG__@=Rq4u-zYz9r;;^zp4X~GUvf=<43M5CHsMK+ z5oimrb~kP`Q_n%hjCFe(`2E{h_bBj5w8ST=yqgM2=WZ&*nxT@R&%rfo(`3H*v{+y1 zTz%Sg_?zZD&BwjNxWHk*V{<LT-_0&q_I~FG)|ufye5*!^!>%((!2<HA|0RVkpQKq_ zob-;ppbCG>kUsi<Nl#MCA-hFA3aasUbHN$pI)Yrloty^lPc@6k8YSn<PvM-oKe)S> z+)h_Gh+JRqYsNYGbV#1{{-R_N`0lCRrlj3ARWp^*=2x^7CdVM|F)5B}o>xyBS^Xp8 zG_1)-#0=^YSQnGE3_$n+Cnn@Re7Ib47DDussR{7+;Gv&-)i&-JU888@qLTPeM9xCj zJR?rWo<mQhtFrws&6$2|*5nb*1lAda<s@ZzMx1DQRGhA7%+N2zi4$GJ&HO&8-8HpP zX?&E_VBDw{a-Tlkp@auOV$+N=o%ONfhPANBA;T$DILEqzw+k->XyloyC;1{L4rL1* zbpg^pWQ+-)XnLy>U!e`iB-MM67W%Xy%nc)*GAw@!zO)qR3%7_9wXVXJM|T(L_;I`u z8V6>37*Ap!aUqp<3woucD6ID$?gs+DwC?EY9e|-UNBgGEHzTK#HRJBpQn~yD(QhE| zVY?($+OPwymYF+zta*ocoqnqS#3i|o)1zDpC)I`LT)T@Bz3IU4)S`6Pex4Or$Q#Cj z7yF3W@6wly$!G3jR>#RFowTh{y%ooIdq+qV9+!3a5;G;isVjg^Q`aG{0&<sWxbI_^ z>Or1Az`0pHN~5R9P!1{Yoa^PHF9Qn5U8Y$EQZmxpfxrM%7JhVA_kS(*<1K%qHCXNF zPwil9hxyKz=p97Xa=wVjSEgCeKWOPs&_5zi+6MGFRXSI!8{;6o4|$ilxt8%MO;%xx zhxSgwd?UH&aVCd|zL^R>?SAYq=p||k-geq<_A?W1$VHk`87RGR9WCR=2|2RS_BjG4 zlex-x;6s^F7z>;2AF^c_p^1{7lDA)mKF^>i(=mT|T*muM3mC_{Jd*;tX5G6ky+d9T z3Kl^ZakhU3=!T}r*ZF4fY)6w3x0okq4L&zbj&Iba=%pFh+BeX~iC7<`etQCpX?UcB z(T&>qs10?1Hx!R)4A-fNJ>VjIr?T-JPEe*<-VBhx;k;V{@hQgx$tnH-Gj1bnjcfqU zBJ-8ZRnluuE1GJRe%eH%w`TZhFC<^#zJlx-Jw?$boKaxrOr_95N@+ql=(A~*&VLRy zAXN6G{%{{$jMOk0y3D_ne<nbBnKniFmGe!!zN1C27jmcsyA?NSO)fGMCR)ybBKbH{ zFCwiZ^`cE5)}l@mi~VU{gO|XVGlrhXouZATHq$I*j!#`kPlObH95WvETZsBC#1|Jm zF>U_!XpzeQKg&aDu%toy@0XrC=Q0%POGZ1{yGA?9?lSY_Cd!^7781NsC+%z0Zzb_P z-e(lajRt{bxXdG$n3VYZM63X-I53}g)|39J3y>Z;6{s3atAmY#{vg%YiqpjK8VQey z!uT9o{QTg2pY>{F&e!Qk+x4)!pFRw_A({TAz$R1mObVTz0hz*7E0HNo)58B~A27|k zI`AcNm{W<qMA$uRGJvC<Ji-Uf3u%50ol{M{G%)Qn%OmJ*f^(-@^p4Vo_!I#%;|k~- z@Diz=QhjuF3p$!o=^fm2)Q(W_wtk|4ju>Moc=7#EP=H+#@|=O2ID26kp4>g5OgBT~ zFnbW^StXp8ijkcSy}(4?AaMw|g(Q>~CKgolL^fINI)Q$q)8u~OAiOOjv4x5jTL))j z(yCq8{L2V-DqMyy5`Dgwq+8}XE#*Fq+#JrVq_aN*c~g)REY|=xqBpu$kka)<TSOa$ zyD+#tB%r2`zv)7MHcXWP<Aw3_d#Q|YM;|$DX_$JsWSrw3hYtM6t)f<~Y&`E`g=^h0 zU&eey!qY#n)HuhZ_&Z@V`Tpz=!zfmm4t-#Ym(1dZsRX;I!RLba1pKqzQ;6q)VX5Pl zjuW6BKC9g^hi;?k3C&bW>UfpoliDrP`^4s$FYj^uQU)nO&xfJkNF<J?ufXkX5wo%C z8m1N%6MYOl&dcWaky7sHKN^6id;5_~v5?~2*it6W)b9~*)0c@>s(A(ZM&a8_kh*L@ zc$g^@J%%IV6NX0I$AUg*J*jhc0}J_5!&D0JuJw@;+ff2!1brxR$rao{;v74~_wb!I z#{p|@!SfzckH)eRV7aWaBGjXs)CM}&Sex&0+6D$ao?Taolmr(iAeW5y;0?Pb?hui* zp+4X{{5}B7YGG&xAfNGM9Vj9YvLy&w0wEO;($zj1Ge27k7^$S5hhd@amy$~BXyV)V z@<&`OZpp}Ce|!tKKuD#)pSR7V=~SvmzA!DvBi?AOaOJNbR;s?2@!nhpP5ws8=)Cu7 z)GORF6aNUFSz>7t)X94s?gDg<y_XuyzrprztlM^}M^GX~U2bAYi71PK&n0$*k0s?9 znI6iPlCxR7(V{FRJr{<q2W}?NZGaxGJ4>JsrrwYlkf3MRrKSS9jO&rn2;9+2FB=Ko zczDrKu`+XuxFPchPa`Ld+g?Y-od$|OUCRnb05!WI)rg!l+e1@6v63mB`#)jD0ap0j zaVD_kjg}+)%qaxY%PYfhUX<Wu*V%Cn93y+)#yK*YBW<K`5^bb<WU~>hGpC?GEwnMZ z^l{S0)M`j;2U@tXcVd0YLwcUOdep`W%OYci+b}(}J<$<v^=7mKQhW3!gL8;Tc}z9R zOK)Z_A0Fseiu7wjq+h8X#+pLL5mcM1bX%lv<58=Dl2^m~8v1q#=Cste135Nif_96P zg?6#*<s+<0PGIBA24hB2(>Y{jefo~%XK#U=-wKTp=+?ph4_irrl32Tm%vUe;Mkry` zrmsb1wjO&$wDG9ei&6b+?_-MGMgy<sa~l`C<(<^ZoJJOV^5Ozkc(%7mo^jH^SGkRX zmaQuITGV?!X}8-MGrUqLtU~Ulxz~hs39W2Qyf4+r_9*6l(ykhnkJA4omdCNeKYH++ z>CE{UfB%I!K%Ocy2|T+5kJM{rFU?YI)1*4y*=u8?Pm<WXdM5x2Q7W!d-l;9&YV^?T zu?jy(spg?2y3-|~B5Ae+=WHFAr&eL}W(s$fwul|^lrX7>oN=)NWnWxCpk?(^GS$fg z{3!)<l3<9P;qTz`!{3d)3>|-xoXar+aCZS<rc&uv;f~F83W2zMwI246%h;nLwo4%- z;en{$BRKIZ;k7B@dXRF~hzqW5oPrt`74q!P&CqS0wfQoUkn1iN7)yv|+mg*E#Vr=Q zpk_bBZ^<h1RI&oPM%iS}89VxmKEgAZgRGF)E48A-vp8H!U(aLQ2&s4addPQ6m%d;E zPr>G_;b9sQ6xbMp4i6)Y8faZ4-`hQuLLs$V8R-|;_>=nO)gD?-wGH1)puN;{n9-cv z?Vu;fJLB9%{JW@q%H~K7bm8=W=_z9-o;1Rf40eVVd1t2U$vOH{RpKj$8U8)OtqWr| zQ|X?oNt;iIz4tMY!zct=@eZ`N<2ILxdk)v)4AjHa7OZuTM7he%CBzEqx)N8o6e?26 z9X+$DaD7j7hsV(q8OH@ZHiZh~^as8qGLj#Y6ujBK*cBzoE#&5n9bdhnG*}$y&)KZ- z-`(MPNoF7BW`aGZ;Ua16q@I_-nUUFL;ls0QR>%8qa5ZNXg(vUqeynFH)=x%{7TV^U z97)nTJqNB$X`wnTMeOCdIy%iKTAQl*_5N7&ZEfBYbCjpF(upx;V_Ke)=bqFXs$HW5 zWlW4uX(Ty~{Jy+|Rcs`GxviSNr<sh_gziy-HYT}IE2SC*jp%saI(H&YVM*_Jib`D7 z;>JuG@>I&W6w=`eyfM&PWg_YI$g2-OcTjgGgU+EAlk%W%dEIg)SEX#zD^+c&s>cIy zf+?oX{}}2@pNix5ok(<_7N5&J+#bi&Bz}heSyO)kJ1p)2riAg|>29v&gjjA!%sGm` zq-;j`x@$*ZJs`;av0V9yN_o4~P9Z=|zT!vjOro`SJ?VSwII&zVsf|tV$ZdqAQ>g7a zhqIl>`~&!PfA^*U>2YgYjpxqpiuO^kq{a#lc9UNBIL7+ul#&t^PLt_w<|>hel@xt0 zDzyYgwEth1VvUf0tsuJha{u{N#`*!M8)2D7wu=!ex)RX)$&E@Qa#<20eH?zaBHkK_ zXJTS~w*X@?LS_H6@G&0lX#(RhyfMO)U5u2{$R}XOlvm~W{&h*0S#7g6@43t<A6m6@ zj;V1cxFsd*5wckM?B#sjg4Uf%1#DjKa+9=MYiG}yaJ<T<Zl+V<fdKpOadE0?6Exk3 zj@eXGQVSqOJ+w+zy$i5*IgAg<cT!dLtHyS3ZHK<S`0lDGz;>dwGgcGG&YT%5eSs?5 zzfN&Asy13hMmhC5b(>yYe1VM7#IB9f@3^l07j}WR)MtT4jkAmTj3eR?vB$-h6!Lxq zzvS5lj7Of?YC4nM{_+KtWyu27lqCyrvWJ;u7tCx)0kkxMr_2TWFVGV}Geo`R=B{ou z83hmfRsq2j8?XKQb$BssPr%J-8alIjM^|kq_-ZeG-OquY;tC7wc<5<!l%GmhoW2`c zT6#yhSY-JWX`V(JWm~E;s!bnt^a4F4HA`<faY3S=BnnK6wMXbLwVdLKRzVES2=Dzu zLkZvX5p9t!Nn7Oh;y7+pJ!7vfB$}(w72iCDx*Tt%Qs1`8j?bFH*m1XnUFH%3T$@$K zUVcQjnulrD%fqd>?G9RfDWqL=3d1*v)Nq_hf)efE$Ua3CRTV5=Z5KS~3zl8HvUG0g zTqa+KFP_CZB4tuCw`J#R>yEphD#l$<oS|yW;74H_fleET8vw`MQ}WOLG-cUS#Z|>S ziV2TKXUVTr-cVI?w4I7S(*6ZoWLMyw<Y3YcT?srWUb$HOk1JHM!3S+*AHJ!?D|bIQ zy5%W8idoWlOzhBa=f~tNX*}G{X2!+bA{wY7ug3g2%2Ku*!w#llxb$&8rFldyENnxI z;_OeuA6#7W*p<I6JJPOXNm(LF30xWXpvrmwl}8_3UUK)9M;<)VE-#|96j!wP`f)K* zKiGTa;|E8g^lt-f?wPPXYKppk9&C(IsT~xRdY@BSM||GOoU;6+Vxo<D{ElWT>r8Md zaehMVS3iNYCdkUQ&Sh(W`PVMHd)XR;^y|ZYQk++k6H^4n4Q)@mGJi2-?z7#-j)xb+ zZ>Nz+mh6IyCHf6vc$AA;$ns0w)!0XrOmzYI)#5iX!mA}h*Jk-z!taLpH7hu@N^z^6 z107xgT@#=91kOx6OcQ=dUOn=X?<~IO4}RwczgzLW0y;n8eDpv(bhoMtJ{ycz4#s;B zPZ@WM#g^UTT4<mW*_Q||1Xeq7Y66OxUzk@`SYbQDkCOE3Ds01jACxGw@}kZt=^i#K zFRuc2dWm*og-!08i#Im%Hq5Uzt6O4VH~ZX>^fQs-4!_d;Rr3yUtHj3w4}u0N2PgYM zD6E&d)uQ89O0<&BRmK0UgzXTM_qbd5x7s{wmiX&BJux|cYSN9+{Fa+?PmSa!ba?(e zVfD@M6f@ElaGUMf_E(Fu@HbGBZMU{+s7jZsgtfbhS-akiUj#j#TUN35-8=&MU5$4H z{XMMxxGT+joG(~y1T99iV}J)hcRm50aI57{ff&^PMPFGUmY?0>xh2;1Uf>V)e{b{L z$uthcq&cJ--G3-Byu(AkPOL}hDF<bttrYQep{H&mvfa^;K9oz+v#pLw$1n+Jlv@;h zUvPgH=^1zigj`MLBiu;2g^{GRMEcA4h%Pvbot4D52M9mC6><jD&~o(Bn5<XCV$b=z zUcp$tB9>bA@G1OTolTR6H+~LFB{-8e0z(!hkn{blqvDFnS47^UX;iyDcj0C!bPQne zfOWdmn8P%SSa&s}I8g)$o)}3F0F;l~b)Jtg&p*XGcVXPwHqYW+827vI#zx*|``^ZF zGC;qsrk?0(C1JPR=ONOohhWQ_)SB?MTP@goA;u*(Q7Qxf<sK<83bn839(XcKiY+X< zi@=~~)YPIqmahYS!LePQq`fx(@si}PpkWpY-U>-rc`0VO1r*0RtPVi+04l3@2NdSq zQzU;1>Oh&_^EutPwWUn-Ax>X(&-Pk6U32QYl0{yWWmZMXVj^Y1Mv};wZ`d+WgLagC zP9$ZYJkBQ{m&zVV%Jwt`!f-PQTub3SHMOi+cj|nJ)vP@QpL8?Sg;M-oTm<qjHTurK zHbCBLYO%v0#|&?#$jq3rC7hm_aWSA<zX@7jMfbptZKNl@K|P+A>T&wGJGt5S4&I-} z`y;kl*XA88PM+0~cMv@aI$aN%{|SqO$oL|24)_8RTWD8Bbl^*&15f2bj|~1(lywyB z|0{pj+CL=}_4gB4z>R&u!b5$*Wrv8*iH_h4{mH<U1TK@mxY&-lwV0f~KsP=7{mK3m zd=EdD_m3ZZ-rR4Np5@M(;xmlwq|8~?t}N#O@lX9+ZVxGo=*L@Giv{VX4d%P6|AxV5 zSN|;OnR6~*y<EneWRd%}{sA1GgKr^|vRRb_t&uyqX1dK<Kwq{3yOA?&We)W2HlAqA zh42S4mv6CnY7tw9GZRtnB-T?Cacb>l5(}3}zsm|GxHyX>X`U8I3MKRjlbw&g88ZE1 z1tsbfr5_0?;lM4valTNnI7AyanqYmv!c}c*WN?FbH@v&CRSbMYx^YK>_+04^UWXg0 zE&dho;A33@+rf*UvoXg>DgO!>csldApPSl=`$t;I-c&a1iD(UKtbiwR^4jFpVGkSb zzg0BqmxxAfg+0bkXK}a%Nf{BRMV$UAn<5fNU_vqgd6DFULf;?sh%97Kog{xG?az_4 zKR`|}+~JW*S{f;7<Nqj0{~t;salbAp=PFJ02lJ(}I);>W1!a-c0o*&OYK$>y>vYXu zB<M4=-_UKd3g}LK3PvrK(jToI=n-v0&K>bfXiFz>su)OfuB$taebIEY4c43?Ytxgr z@$(qGQQN8N<JeU!4x%-21W$OgOojZ6W@&iS(i^i}{lRa#ml~7usd2=j#sY9IM=vpp zl|}~MrnqU~1F{gPqd3ojeJ+91z#AfqRCZzuN_FJuCC#n9!3Ci!;Nkm%Uv;NDWGPGZ z7gzQM&-E|S6FV@a@X?}f46hxS{Ije_AUbb!ZeQ?HJ=I9w%M|3)P3F+xmYl^udcj%o zK2Lmo_}0+durB?QL$dOhH-pc20BbK!b66cSQ1iB4E6xS4hyC?#KS{@(l66vZUV-K5 z^MQ9^A@ISq1TRiO>UWX)-@Ws5UV*n~e}J67QB{zZJK*mmw?Ej>`-vorCiPRMh{25w zL?%Pd9x0yKG7!B@ZJgp+*s&Ywkl`fo21jm=LO2^r=M~^34z+PHAL86s<<E229Pxnn zVlQQ!?Z}078!@=F@1~sZlg^4WE1`v_;Bd}8w?4xw*&P_I5E?=mk}d9kp!SEtt<0SQ zD7k3Y!@Z82S1&6S7XzeT#I|^b<B2yDoqEGC2fLR_8MqIt5WWn-W33u>r1d#sP*40- zpnd5){97D|L4B5^K3s|!r$b^ewoh+h_gNeYVPi;-+w~%Js)!Aift#>2R_s%Kn!)?z zr0o3$mGg+$gxS-iw{?`;2A&6gZ9+H>m_))`%DUd*l>SigJbc1TcdqHs794@@{j~fA z*ZNA2h|lSn&W*N<n5(<>w1Iq?oF9%2WinU41&6a+&q(p<QvA!EF$Q2U#NIMyYwaf6 z6W~sNh}+Jj=Iv~Jxzm~%o5LDr3kn+fv;^ANd`2IJH_O0W`)n<N$4T%;N$|+u-Flf6 zGg68fA;rk0n0P6M>1>zs!6G&wY9nzQ7pbILhdmFyA>Cu5DN4gpw1%cwO-qQ;i~`+^ z;5r`)x$w<;Ar!ikrn=RL%kB;StpU0l&SgcEaKpRks|<Rf+$r^{v_2y}EHDh|S%Rst zP8`ZQy+H-szN@R$OBror##-V;dTfZ;Y|GjVEoQxWz&bs_(J#YZpt4Seo1_Zl+1RD` z$_z62HT#^{+tDi<2v#Ed3rY7J_6YKhl0fegOHsptQ(Gk4f}Df#QK^_Q4cFtQsSL1| zcHvgAsl%5Ju3I6va7T{7pz6jtAAeJi^2lwsDCyp+Lf8V^s9MC}M!p1XjE^#mz#P&~ zJR+tdm=H1$EC^E(vJqxZ1g^t;Z0aFesZkMo!)naOyk4bKnMdyjMWMDMJZ|gq{}50Q z-r1!}soV4$sN1Xvxc3aZTvW>V+yTp69l?hsZwZ{Q%3#Pdpe0{+6CdHk!YJ+AVdw}@ zsYwfntqFRsLYUA`jicY7gt{(z8aL5_(nLS}!0gX<bOifEnS-=S4Bpd2ES<8x=M5(V z+SHZ+mC=KG-W!4WqT#auSyKbMAX!rZ+=Le}KIE=oCHn0p^!+~&EOq(lzk#01&DS_$ zi)9W-z-N#2&B^nFiZOP0bRXb%sP7?bp7lTY9?}~~3qHd7rxu3b*DKsY=mWyf72<9o z<Dr(uV>ZTP3dVy%zjFvm1Py`~As!(CAvrQ0Vz<FLA)mB2v2X$OrZI{s7)1mVLI#2b zVJbp4!pszzUkg5F59~DI{0>;)$$sK}M(Z4bQ^TR7`p2F)r|vhS`XNTO;RlN~6kPZI zFR6d<s|R(EsfVfChWc0{W3R+IqcHYl4uHpp4a6|-N$xocb(5S=p?_nfnTZoJ#(eYF zKYTUoqaQw)Or>@C&wx6f<Dal#CZF@}cxX2h-yWQA5v;SN=5+)Qbs6WISH0Ew;Kuk< zli*c=-OKDy2*dj_Qy9#G)!imo-Z45d4b+a#U`|gs*41r=wb<dgox#yPGx_*jPMF2X z{-DpHr$R!9XEC^-dnPpGKKkJ=v)~~D^CTuR*ICSy<J}&8M<8}^uB=y3mirJMM)(Tz z#e?6e2)N6UTKQ(YGhC~I_L16s)ElnHm~K)tO)j&K)NW0rcCp=9@tM$;mMm`#luTym zGu_$<eMQP3<>??NxDz@LICHI{;bmx#jjB<e*<*vv#+t{yWOvu%Ugya}H0-G&)<+3n z!ACHih150l3>sd0Bzs~M>(JK8<`v=`T){w}*1wyN@|M}I`G~$Ir6jrmiusCpW}Ib| z*`Q6Ig0tTconmrf4u|xv?1oQJm!k+{@|AVEl4iy6qOm7-DaM{S&5k{>6JaUBX$H>- zOA!(gnrS>EBqHbp&z)LlY@V`l6zm#kfdOj8n7l6Vu|b4Rgm#2Bgr5<9Lb!}@2_b-R z0pWar%)4b+w}lAzAe_ZmTtxT@p%Z~doEjkk!H6&!VJ1Qz!p#VjF#AwB_(LoBt#VtB zzjQ9=xcBd5Jx$A<mIohLq44idk>5*^-wTo7bCKU~BfqCYe<LR?6et)63oCOnhaCPS zJdRC{&5kn17RSFu3Z5;M<>p*S##)qk=UPhVN+teo9_T6F6q_4|+UyU7fBzQweL3>` zLgcqP^7~BWcRReN(I_vzoYV=t68R_jrlcs=682>&asJuVfR9V?UB7(eB59NsCHNke zK2vLN)oM3u%P2<3Vp!n|R%gFmyBsIr`&ml375W@x&nm?lh{}WCsg=V;I-1ZM!`9Ox zttNU^--hU^pb0mcN(Fx@<{7Ufw#gq{r>mo@U?HNq+7|OoMJ<V;9dgh}{|K4txp{=E zZWReVNoFpc)f)H$^KQ6Ps7u`XV);9^#O6D;o+^LIHsbgN<@a`a{Nc`x_nyUx0y_md zlpN7keChIsv8tPsMS7tHdU@mQf3<7yOlNMdeb$z^i9429p15h*RyuRpCZXXD)JeM~ z6e4va?STP0XJTpTTxj@UeWNy>0?*5y^B(=Cf=y(tkn{umD>}>)0*$ahu--!SX-^d- zx)iv}c&hNoB@SorTlLUSE<ELuaP}?B3Kw*Em|X?STqviJv<Z;F%Y}kxB|nNZdf?Ib zNj#~?Sm@X$uBXzkClo-6!I7MsT-q1(!AC+;F8qpzXrVGh8}un7K*N97Lt}68+&di4 zjXefO{5*Y%7SHuPM*eMB+l1~$2;U20kaJdOAkHA=mm}R@dn7C(!Qk-z{JYu)(tav| zS=36_jgnbJ+DiIJTPL4q1dfpTl-{>t_eBp3u`i_ON#Bq(r0!Imeu!TE7<i&2{1CgB zXciA}M+~0Byb+NrDhJ{%S_2EsGQt@t1Y<XC<cLqcqG7<GOjTcSCj7s6iqw&}Y25^K z4`}Jr&^EjliW*|aMcSiKcl-js0Zu_YT4(BkU78NkAK2sZuJ6%0S453k&p2MPDSXt# zc-W$+N*4&8(&W<Y2Bd9|%3B_#T)z|YC1tL<6uyYk6B-j7IJwco+C&7tTZ8^V0KG{g zFqk9j$vBhvfoJkvTjvv#ZL<XrZG7l)8;h|S2Hmfs`-rr;lzdynIqrGrNt+yB=st4i zf)XC-GvRwFzDEPgAWdNiw%E<<b%HBKjdVZtmaJEql|D86u#}YR9qsFA0X{;I12e=S zZ;OFPpuOTX*d|DG;7+(0K7E%UElPWc5=Qm8A0p)p?@N<@Rj@MbM!dX_(wl($3Ex9% z%^LPRg!5GwCH&mG=b?g!SXgtQgiG)fhu&Ogau_$i%#-+w>nI_$&jM|uFb_v8s!$J5 z@HGh9O}g7BmW|X?!qy(b^<VRy0Cs#I(!@4j;RA~FE6sm<Kr!iZb5sgl%B9RMWm5DH zU_>;d?hU2LaE79Yg5I@qXK5KMr!Kws+yg`^z3bkT2T!j(b??}<Wnxt2i}<VYy!7B6 zF<QIg!CjlbSyv`%EAPDTh5O1xo#(kfeRzq!iPU)CI$2)&x<|yArhC?zH&a4d523^l z1_aD`WnEMr1<xf5y)3bc`>@4ZCH78XLFbb+go;ma^n!-}CGEBDa9ZpCnpT8A*qFSL z=(m4&bB^7BUgc#Ue%JPGZEW)<K1|o&CqiH2K0ROX5a~}!_%k#dL~sou!ZqN;hLo9& zxuD7;HvZn}W*xVC89v`j8Ep4afHCT!J++i@N3R}wK9O8fJ;@z|u-BQ<j-KE<{T|G& zP_ROxM&+<AL}nW_*k^}=upTjyK5c2d0)M7|>)(A@N$s@-k4v{QH~kvQvk@p8{sWZP zhd?R&4U{+|ovZeg&fPf-w%H@k87@Y$yA<P~#;b4-ePO2Eo5W{%Wt}6|UXQxLqKIMV zTza~4lB}&<b_F`ah+)KrQmiX-RxmW*^8af-_y4WDn*YyyrKsmX>t=Y*xXn`Qe%rR6 zBW=T)N84ENr<D^Hl`|f;^B8sy5~o01d^Vw!W&SH^tUu1k<?7I%lrh0U?w61>z35M6 zof0cf*#HlQp_@!y&1ClCBmlgodcDk{gO_NHV}XwqT#Pk6309ZKvXlK&24Tnfo$G1y zDF5T-3~Z=6%gOCB*m~~%t~@O-F5T1^Ct-jG`^n7~>;s_1Q!pc){p1#Uin$&6IP+EH zcn&$n<e8AeWPnzV`Jz8zu#6Uzkz)Q9X=Ubb{Ex$W4e{Yuh8%Hu+mU0t;R{%y8Oze< z&yhx9{_OuT_9k#mUitp;IZqan5Fjint7ZWjK%I!zQnhUe;gLlvF7?`N3R=C;6>Dc| zJH6B3GB;|O35uPdwWHPcVmovotutE7K-JE*Go?4EopGb4vmwwriHdnhAbG#%Nl-ht zbN?@Vo;=T4o^#G~mf!j9=d4}7v_!Eeka|j}(v$pS?(Ma(>TyekC$5`o?G`c%9rHf{ zjQpUV^}!(e;216wE`|ZC_ybp)*PRy1IMz}c((;;4X-Z_TSMky^7JCEmkL_nHUi77Z z+j~~=y}yY$BJbTQ(=4X_={wWriD{qSOjEM&H@Yx>s@~H=YLUEbKhA$%YFSz=c_GWd zRz_qb**DC>zFKtX?gcX5Aks#4Zu1QzN5Josdz(T-b@@-Qd2j;r;e?QC#Qp{O$fD~~ zTw9(yAmkSw5RCc)oJTjc@JakmD|{Ef(+kazetfU+UHbvSR5*m+!oq?r2ZULLIE%}0 zK$wlYB>8|)RCu{I?7tYLW0}4gJ5}V2820zp;`wv&+1J~O=ab^|5PVl^t4|2?3JdB^ z2<E~k@oO!77r$kN(&1C9pwo7jyb`~&*>CggLbSv=o6XGs5ywo)DY1(Zo92)TxCZ;S zIOrLZ!lfPBEO@C2XtNewS3W1=EIPSY^IJAnte@EUM)I?L)dQ-@P(7YjbVvigc#MLM zWo7B#ITBZ{%{n1yjgUKxFgp2U7#e0C1!AG61Wx#HFMFZ^V)XVhjmc;oHJD4dV!$O< zV<yTgq4_uKj8J8H)dDZUL10b86YEhcxZA8vEMFq>DOkQjHe>UT=sK{T=j&gjh5EI2 zJ>q8`7pju5|BK%sUvNfnOsce}r-t)?-h~yvifB{QDr}K-(;@ygTAHgZfv59ldP^2S zM|TO6yO10vGh>n$7Lp!hd}gwP?B)zTI5$gzU-?p%p{Pu;W7NNMOqA4slRTbZf@g+% zoe`QL!I7ezW|Y$m`KVOF?cjEY{8I!LuDtPz$q-HN8BjhDyYr0jI^M9YJApfUmf%@} zqXMvVFIDZ(qh7T{Yf!ev?_jcve_Tu1crhm9i+@~`ZDf-5_m7lo<vQ*Xi@y+)ax?x% zh$oknx6$V+V0n^YHTrX-P;U5pe>u+L-V^)=)OzF`4A40Y-&+n8Yzcu6Bd!+Ke-?Ew zgO{&r_1A5d2nN~;KShkk*Q#Y0YxEuHJ-G#i40G%V(|w{676QLsPrQ%b76YFS-pxlM zIq8Q?SC-a^p}QeP)DiFBM$X{92xZ<K&G%*W{+H<eTJ-+SKi!9pfJu2swtm7<xgl{u zQpE|B#H0dd1J$pp;SAk^7Ft1&1r+A2`df9*N<+=xR*w0%j@U%*e^GeAr3KDM?;OL4 z4DxAy>?1{;PQWqtjSAqGT5ilA9AP`cct{Ct+*_f^Vn}l+1sI=}ONSqaF@HJYG&l3V z^sW5=4cLF{?Y?iN#Y3-D(V4Ahx}+$rFr$n48NykuGugF6xR)rpb_hR)&gytu$hY2y zhtAu|ep(DgzF_l*T$!Xcwqwk1I0_sB-={ca>ws68!esDgyKz@`bPJj!=;hYifVV+T z3yU0us9{VEY{XbB%THf?7@qwZ9`s{q0EYcfBcG--4R5F59AxOL;9@jdt@u7`XG-Br zU?uR8Cd!P>BvNW5g_XtXDLO=kxgS7ZAG^sBP%+JdBI$&1eZ~hud?7R;XHe*7XbU*E zxgg8E^axI?#qI`+`GQ#YkB%@4V&WYG{$A7>dCm$z#w5m?0@s*_F;EX-e`)v|*jbFu z;O64pvuDt*-O%*>i|B{WIsa1hjm?4c;u#_nd3w~17DzxNxCcs>?y<z4`zHNe$Wsb{ z_jL>E#k+trzJorl?_}SYQD=Z%@~BRdPkLGZ5buG2x1Xi#u4DcsBWe9e`&&Q5y^<OB zm3L1s>d<jGrNccCv;2@H<y>1v8vjYnJ1G14z+9X_kcRIF`zM4MJZF0COcD<%8SsaV zb?*mn49kNP?p%H34Oo%61wpsNB0rUnx|atEfc*)JzwBq<d7-wT17D7|QRquWT2~$T zLTuf`Xx*Qptvij@^}<^#(|b4PB=TlhF>DXv<ZwM(EhhxcVqm{G^JWuz@r;mKn6t8= zgO!gHooaP2vXO)}7Nfl8<7=V&JT^lL+5YH^NX!^wBF_rwth3fg@%3n3ounf&3s}DK zi|R2$kqbHW^u;B$4so7{GZDPD$AE`K_A{L7^4oQX9JigZP`N&ySHfd{v+WW*<`0n= zx}5|;I&UE={9YixBIS0RC^I)6c{U)A#G5mHp3S!EDO==E0ljcdA<hw^7wX8%&iRZ6 zV`K1fxD%8h$$!y(%}xq_=-!37kPZs54Y6#ze>U=zhrO9mt9_Zh&E5nz@n!anbB^qO zf}Kp{oX;6#{FC+P`Y$|jqyJNvEH5*19z;xRLh>Z`_QSQ8FfJO*%?slFLhYZ#dq&-9 z@&0h#|3uR3{(yT5YbUq+N$32N{gRhY12&2=<YB~gA!ggnm<+_kpziMeZT6W*{$Mv8 zVPmw=E)jL;!u}=UI1f9YBo8Y+gmL~Hm>2O{MjjO{H%4dNg*|25>&9yLnExCk<X8K* ztS?+h^YZHZ&a%?D0yV7Z{?yw6p8&<xY_!3<$4KE+?~yP2!MTQ>r6iiddel3{8UNAS z)n5!f%ON+@(YrpDx4s5?bHBIK{P*E4gp~>Xl!CTinzf)GvK&LPptx^-znFq`ybrTp zT8MbjbNs`E)5A~jeRuUU%=@k06G&t8lhJ9r0cnohd~fqvmZKS~>Fa(-tROjLGL8dj z3~yv*;}o8PIM|8DzNjc*D~rJj=lmgiGG+qt{zil~VgKP!0I))}9&#tp1KRvJ{-^fX z7iHqCX8AFfJ1f@H{5ft(ewLf$-(X*a)n1Hn27K$jA|pex35D`BenD5towDH#KM2DT zDgq}ty|Fq1!&V9BS-bIG4&IZ9nk+vGx%(^Z`Xdj?Id>X*@=v4eJ6V2KFKgp!p)2|p zw0-jb+FM~K`M>V{zT7M3|J~@{`yZ6QCq5q;eWyQmy`;W!eMx<#y~MW7zR~sv`*B;n zXt`v=YHI~$JiglA{K$03-a)cy5p=U>$sQ%s0+2`0nGcg>TWr0=P+89zGy+{DJ!0y7 zDD$&rr(E333$Dgx*ZY%sPOmxCJs_Xi4Vb5bpZBo;&C$qC$>iEBybEErJC282qG2ia zsOvL`fx*KtY-A(3WZ#P2D8_DTPX_dowc22N#7;#h@tP%nf#iZ=X>=z0-C>!0)&Qt? z<2;Ks)FmJfl^AMnrN^Ju)<H9v4EM(GUV3D|Xu-38RYZ0mZLgm%(c-iq(Gurczd24q zxcrLVJ1UJ8vG7)V_qjVDd16nq&*fI^8-8B0e^|40hh@gO?23K9jqCOg_rn%{>S<l2 zUd)wuPFJZDpK?!Yqfds@TIBr=@~*&}lTT+=P8M@a?UEZ}498&KRlnp|^|4yZ;6}so zY6dYA4A=VO4Zi+3!$11fhHv^~4MY7Z!$7~%0ROXwzk$9rFTEoio~0({$r<7MED7Y5 zMcA(Ym`tjF{kPC#f0;<g>CZ#v7cxlq!|#W>n{-6`gCgQt_F%~KdNIyVVm-7`tZAdD z-xql<Is_}5JcGAe)Pp!)o!m>Zk0UQxdc2xy1O7WgPu9^{u!J~Mh|`J+vk&+RCF~^S zqRu*;#RTlPB$6*#%y&NK$`>r(U_aG<gR?9+enY#a?AEw#v`jdg938hUwAibqbVp)M zO!@e@ZL`SEYA|kEj2l)oMv2Lc+4w}tN+`co);3G>&9dkYjX_bKd~^KA%hCL=a@??& zNGpMCB30a_$fkCtaUtcE;%p;^Ets8s!UCJbXXc>IGqizAC|F$W?}cvAzccN>RlPsL zS96jdRkPVclJ~DNAZ(Txs@dI!JIRrVJ1zM>qpx87h1vcRPT*np*TbfgZkIWOY2M{S zj^Zc=t*{1GAoK32kwP2%KWfHm7M9M2XD6hUCNfEjm@0)GKt<`?-nr0rwXK^At<n88 z&!X>F)x_@3II<tw#Tv=}nm6kvS0<P2uSvj35G+oCIOY|BcCiriKO#j8Y|cyA3Seu3 zwf}8q?=SKqmFMp~GPydvhTaLuY`1pik^Z!5e}8)Q@NGE?kt3~!LLY(U_@F-vInt1W z6wSj4*ovZLC~ipI%u{<x7pG0Yyrz27A@zDPOjb!@Y4whI;d(M;)zE2ay?u50CFg4} zB6p`tHD|Wg;_1O-*HjYKiv=YmgBx&df)+J2so@a`BX&2@nmRAmSqC|b_}1JE>F}9t z?5%?1cnhA9UKHQD^~T)4!G=w>z8p1LV1t1+z^)*H(}Vj!(nwzHd3G=Mk{U>)(<0Bd zV)jgRC!S<>1lfa}^u(%<>vV%0cdUlxNU2bnkt2`6JcQx5T`VOdT1p0s1E-snk^z3} zjDJy1h9pu>!FkMYvVP{*Wc{^&5JScK4efMCEcTm4gC)t6d&#h-`q+w(Q%OE|LEPi! zA6sF82L7=scDGrMRavfTo*Q31J1q1Z)eiN?0w=zH;qU#hK8e2VIsbpZ_m{Kmof{WE zLx1fN6lUuY$xK?fTS1066CK(p*#_Aw`{KorB61jULi~p+*H7YA;FPKBaQ@}TxV}O! zPk?2WO*X7qGqcWmR5GZR%&eKoECUSeE`i^=nKkr#>KEt3x4ooeT@9V8#!ib_bKUmJ z7Z_o+=sSvyIW(K@W-*wvCG44KC6G-=N?;|ilDE}<cx1n&s4Mnn9kF$@;Po*{Vknte z6Z;}9IN3Y1j=?su6@Y17{h3xe?}OmA>-SXt5vLzY22Ws?sU=_av%2Wi@!DeRV%?<R z1T=%)!mLy_XLgulF$ZTAeF%(AQMTKa5@~U{y36V%%dB48GPJUs{QOgJjvfvF7s}Jj zl?|KL{Bw)v9F=y&*2JzX6x*2`X&L&5es5+CeDv3{USTc&R=>>sR=><eTjxewI`=u~ zfSh%Yf7JmOtOF|8mvMt9ES5nvhni}}>-vn%H6lz2hhsdrharj3)*oty9g6J%4qEVg zEt=DGXcJl4ftaP4wZw3aWaC`6k8u`Xi)*XJ->b3KcTTS@7PQsW)ZbsRp3PKtQfv}N z5o;n}exaa)t!D$E4O_A78Ka*ZS-ti1*;>7sYi=~xT*S_e=9-JyyS@VJwM2tn$lved zBo|zutWY{F(8CS|CFRM0&9RwbTY7uBH`5E==n_keq|arRy@0TV;6VezlHut!yQ%@b z^xBzBpND{R0IJ9cP9m;MBhDrmH3CCqxRM6g%$|=lpbbfpk}_*M)K|np^m?e~)-HmW zdzoi2q}~f$w#b0}p&NI$!~Am^+dIb7EOoXzjhW?1En={#yDrsCpw)YOnCZuoq2ffA z-YX~y%+WVAM$F72q~ILU1o{UvgA^C2t@eT|xg-^3n(M&FBVzq`8?J{}8F0!S>n+y4 z66_)4Z7>~@J*8Q|?9|?}NY0_Pm1OF~3nV+UCbN#_S+7T)tlm^9i?MpUt(i5n>mdfU zF$Zl1lsT8dWo8G&q$GN1=4RAJ&JkD!eiHFt5;ob?{0bqaS}_zOyZ0!hAUk4TuCA5t z*tUh8vH%U;H9`NULBq>?5%(7{F6jRla$HSCnGj<N86dlYzfmLq$$(_`Cj&8So~ar2 z&lWTt%Cf8eG=a%OZ)rS@`JWk)GuyuCc>xbSc*^t?c$cl93y5|?<tF&bd0m@QZV_#o zUWaZW^aAlrw^Qh>GP$gITrR8S@XT%J{y83eJ~Q-)CA+2VVgKf+j_EQc2R@W_+u3g< z8$9U;Xl`0%S{W;uJIJh0qOxF9&w$h_!LH5l8T7z%d2`S|A9CzGKE5pIUp}hRj`?LH z?9>Jo!uOA+APhaQZ^?eg{DPo}(mf*oPs1%?x(SP}Z{Xz%$NWDFwFhrplLRLcI_sIK zrO+w6F6tx{r4thytH&!>FZdFp^{A+$6!w1=X1q~)2g4M{xud{lL~bhlVJHYRcONX1 z97NmyQ?f(8Gv?<(|2F}~`7G1V1wS>y1<m8<n(2<p)<s@ehwhd^R)_YKRJ1PKQSln_ z76di=JYZWg?|Xr2ruX}tf=RpADNt&hp`taP?-7hP;@uO3Euraov0OX2t9BDBm)kL| zl|z}1Kv5;$nl%;gnk944elyPDo>$UfnA&>pj(~sH*cIJWoXLJ{bOmZlL~SnwblQ2W zzNdNy5+n-nW|NK^E3s>N?m!tA*Yylc*wiy%{L3P*U12pC$`ha;o?p~6kotoD=K;Sq zJh^;IS-}6>aAtWH#zP}y;P*ixy?knG(EoE`U2PFRw`5)QI^cj($-3%m%ocOqwdx<N z3iy8_RJ4L4Hj>A)`;SIhyDT9#l8^3w$P5fmLP3is3*Q%KEu&$_dAV-FRk5*3!8MBc z3z<lj<O%MH`a{gu1h>*!yP+-)l!UEN?_I~`mox&ehgZ&$^o6bP*(dYa9%!{>xKj~I zjfPU(6A(&_hT`1G2&tkWxm$yfBpQnC?LleqyHk>V-TZ^z0U1B5#DH&`T4Jr<P*YKB zStVIn5BUIeNzG&yE;BAGt}<$lwh?2?+IZ}r+lbLF8I&0^zg2hIZFR@9x}gEVasl66 zg%&&zX+i0rG$qB8fV|hE?ex0i5c(z>8gQ!+`g=6=XScQb7}|R5|4&<&+-xf>&h*#+ zj@?tHM~_~IRpX#+W(LZ=)l=WmTHp~fcz?68{wf`B?WX_LTJ`_4wcO)k&;E;kH63E( z&DzR6JwEpJk+Fx)Jlaq)2{qgr{S<_5jeZhBw??1!<E?LE{Ww1Q(%yx2+1G8etb?*_ zYc;pJqILsXW%@tHTWnX-&31`>=(*L0$!OWqiKyXUwJh=fXc_CXe`;B_b#QaEWyc~d z`;Pu{FwYGI#l4(CSHZj~K<~hE%ik|7+7{)w-}miZq<1s_l2f9dA~W2R5K4`PuwoEm z{(hOa^*DDDLhx8ChOlA~8u#}b)7yeGbX8_~zTEACcWDXqPMQ5fx=3?V-~!@WkrJ@a zae<5<UpFy??bL+uunToqB(*;l%Xe5_a<`+6FW`6YqUYV_3WsHFH05dcJqSG!4Xts{ zMJUoLhvgx6(Sp5bmDFcjwioib3asOLP)CKx^MHE>ewRewyWjmiges$<`R=I*S)(Dd zJ0GEYqM^Ip6~LoyC`D4et@ilJ*xHRNGb)|vGiHV61e9SR=D&i4Qru|>B}PMW?uiIR z?A4smCrUvmVz1@|RS{b!fv>BQ8cpW{v7LsJcl*a%{CliE^Sb1cZictA@%@gz8;3cJ zt6cRy8}V_UH}jwkybM;2%xA_uCS6t-_9E24e3F!zHVOCQx(}BbS1~RNt`b~UT&1{p zT=Q|=V~Y6I8Hc-?TX6T=a00epnB&R+4>*B7WVsB$AOI&;--Hv=e}-!RH=JM)ctZrL zeaF0K{Lgu!ed9Ve)vEJ13G>MPI0I9fU*J|iyY9mdCV`j-dn8T%5_d|zA2#;vyc)^V zDn_fVlB||I&EPJ(!_wApzlWtC8{JrkbnFQmYc^swNX2_{$;KKmq54^lr^8|nlpy9n z3GB{F_*zWAHhMf-!tt8pVhQY?TyngoPfWjiOiai7VmjVuclQ1_V)`p%Vhhm%)-u)t zcE_At-3hDip99aQ*^(z9S)#9+nLkj;O34#j&FLlFN=WkZ6o+!$s<Q_>q<LwOm6QN7 zBm*+o@HEw<&YR-a<Xr=A*Mj&MG2UX*dK{Q1&;>y+uEjI6_8$?`?lUDJY)058hRr4w z!o>&=h~Z)r=V4{vYl1f+c#(F6XJXb{qATKF_Y8#K5no&_+3x8G<wZkT?x_f+M?;g{ zc?cy(L#Ez`o&w%#dFXLHVsEWI39t?-kyKCilstv;D=B$A3+Z3?#@`I5BOD{HN?)(! zX6%OAiIvG_c>(8!mFayKK;bJo8N|6NLY#lN6IdzY?|?fV&wr1$<IisRu=|dA2Y6N` z!ZkIiiUCX$*Q=CNF?bjD-wQull04N}%jAwggV(Iobu3*@?|$DGzVF6G$Q)~vyf)ZH zFq-LDrXJL2Qo5o`s+Zoq)gn8!aRqd#@ALLb3;q4(6<Y5rrpP&apl=Rwzk-LSl1Mna zBfaBfdgR#+4^^-m*KV*#p&eq^)X#56-eex9?Zv`Rwu{wF`r12}t>2Lu3;n(+5~d}8 z$(VBPi_Ey{o$I|unfE?f>ENc6_|uv!MYVf9JU`)tx%-HDaFfP7*kEq&v<`06uwRL( zz0-S0@~ee{v=cgp17vmB-yNoW`>=gVjC*hG8A!8dT4mOu^mOZ+)sG6&qux%|8aMob z?oYK9NY4?it-ubhV0$OY7u<;geVERXJ;2iGtZw{X>qn`{Ef#}2orfJxmZiGF<-!+C zyU5B(;}ZpLVR3bhE7508NI9R$rwEcqt<_JtQV>o!pDaipEvd%$5gF(}Gg=)3Z;<xH zc#jk(Ajv#3c$uKy`)Ki?O#^Qs?4H<px!tV5Ne8w=&+?<tbMl~`(OTO4Q7vhfdbhxq z1s)#>i{<zXEp_0`y0Um3ad2hq<oR8oxn9LZIwB=d*dt6FC0&OQ*X`nrshAC{WCfoH zzUam9r9<*x&D%;`T(i>k(UwRpSN*dCmpWOlSXj(yAW8N4$42Jg2(PtU4tF7jS+8}m zu!6UV`F#Eb|7W_&+C31H<nyl#QzPY5yEq*|OW50%+HL9JO~9YQ;Vb6!Uwo6U(uGKV zlZA%3bjLR&zj({xE0+9*D_lB!E#!Z2#ggv3q6wV9yV$w6*e%=@jf&+^oHM7}ToN%< zGKXF%$&c|Uz7-?M|HU_w^bH|+EAl>il(4_>E8;x1Y>{j^lU~&Idb%A_$t~#zTw7dd zQ3buCNk^+tesOxk6{13W5H3#FUZJXwu5_z3NGEyR8B6Wr^x|sw&6x;0LT!_9PqmtF z5bhy5Ub9|ilwyuyS0l_r*^$v^;T}y|2i0vBiV~>@@zJ^IKv>s7bnr!%DDf`+Et3X6 zqKU*jqQQw%hvA{SRst_Gi|tAFk8K-l#Wv0sS&b?1u%ie6#BC<toWpE=a##^@CTpg# zi_3<m&Q<cW9Q;xpACS?-PtqBSSGnQW@?H(aOtCykQRlrHNxpEF3?1W+4agFUk*9c7 z{d~5*rVWsUpSKf76W=?Kw9TyV9Y}dX(wYSePN{c)5H#GjLYyg>ypy&{4lacR?T5mm z!8CIx&f_%?%FNBe3KO+{JT$?Qr>^W^=lCVNxZEAV8#mq@;<@)zr5=)-%u^3Bz#h~J ze=1i$O($=_AHDe<7tU`eHdU{!J~5!7liH=;_u)Tle8t=0LCZamvYdDgf)pNU<YhC_ z3Zm2ToI?tVmUyc`r$<)(*O>neFV%Ihbz`X|x`yXyE%GMOEw#w^*;wc0SIv=c1uSXA zK3*;5+Xb_&U9eP{kmK{93@2f-`v*dq#+Xj6W*#MP^Fr@9+MdRrpgjuS39GtztgUll zsn>)ym56Pcfi`JjSqDvLLC)HQH&3EX<GuTC`xbsXe?;K59YTes6EjM&<H(4`q;$n@ zZ?T;0iscWDaGF02NOIwWpebdC(jo7g@q~uA&!;*9>}uYhTZFmhLjq~%rgF`xy)8I{ zf%$Ve*umvb?EQ7!gS=2%$*Xp?&u<Zogfr@pV;+&{F9|ky;_?Qx9+q3-{60U&!%{8@ zkEdjBr}`e@sl7*_;e1X|>?Pid&?An#ACFUo5<Tz-LyibjG2_BPt@ZnmQj(!q`E=VP zF@<=q2RCO*gDUT@>r}fcd2<F*r2_0!+vm%m=i7&}<!Og&vv<jD3g;2Qtda53rX%pf zCu?dE7HTw2xd#<9lJGo7lZkk%CK11xnz$yVPeav+Pu0XXor5>n9$|rFGSbwV1jNqM z<TR;TCN)uA_IAmRZ5Gh_MBe1Y3S7+gKwr61VUBT-X~g?RLyi+Vn1M+x3M+M`I43j_ z*F;ByMRJj7`-Cz_f+ya|?wnE9o8y$|zkr_hL-4nx##=uL#^Ei4gJ@MlGDW^)F`wwP zfQzzsuPvizAos1Toe2S3utzvxOMR_ud`^tAohjelH(*TC8n3zc`jiq`!9Pyt@3t8; zPfJyg1#F{Aw`ppeTRSzuJ#lJMZ~O2Ek6m)ddk&Xr1U2c7IoGT3v=5sf`@${tyf4Pt zV*ck$YsRru;vxDR=VHt-Xj$oqOW(AjG`Y{vqHs~;;Vx)!HX+uS))aR!)5#fC?i}Yd z=#RY>&^oA=^AN4Up>?D=SbsbdczprMO~;qvJHSsON|IxAu$eH$p>ymkbMg6(O`vdc zTj8a2)CMT<0lsP}O4OnDmjl@?Tps71++r_X>OSC8(TTu5sGb8y+g_1qk-7~ni>*r6 zgQZD*RaUv{`=$Ivt<z*Bt`()z(KdZc1dmXFlA&6?Bio~zdY?OP>YZ*fgcFAlL$p)S z=3ZXsDCH-3@>}Z58eqe~S~CKz|DJ(7N<4XcI?$#pr=p8NW1XXePjgOj^bO=~dIMSu zS$op)B?x2QWIHu2sh$L<atKN;+H^;}=l8tY!}?)x1pA`S5%hUkUzGB!R-Kriy~i0R zVjL#`&-u73!Pz}jLD(0l`}zj5IEO_6%mTbSmCiwOVx8>$DURZfcZXDj=5bx)<zmdV zsV#pJG`2qhQdv{mI<lObp@)>wQuc2eUvYv^E4}!Xr`00VX0+7yo)y&9mHeb#fLjyT z8qzt<X<2&|?#(#oHKRqjJP~iui_1Jqd!^_pwz{UJzblaH4c2rg!7K>h*!<oUXBG~| zlE9y~#w_*b2r<s|7UR)LPK8y5*(`NUbZ)X_U6j6|=g$h6CZSfoX9oYSz?tcttR&}r zczS8h-j%gSvU|zjCEjacqEqZv?y9matxmKRv`f5y>B@4NJ2)pTqDJZ2tRrWI6tl$Z z3&W4PMyR#Vmw3;GaS~?B!|7D_=l;-_nw8L*1{|a$k=UN*)Jl-&46_1Nna&_>X=*c| z5%G=+9{?^It?*>g39WSTpW!YFeh1cj3ZMSdhkx1#y#*crrvc7Dyk%pTI&V+kbu%42 z?F!;8LV6<V9^XqgwWt1=Gb(U)%{+1udAS{`N{M$~SnY9c<8m+llv*V|4SDpZ1RPBA zIJXl!!H6`vx3Knip)ET^$a;Gj3Y3u^?&>`IQ!eL`pK{H3w@TvE5<qP4dm~-o>#%pD zdqC{8Z@6u0UeH~_?1GQpL5-FUrs&$Qn75vs-+rY`HL9~A_6tG>&(KJWoWD%IA}8l7 zyaJVbN4aj-DS{nSS3Kw@onLd?Ixmx0Z|BIp4EIasEf$5S1Cn&~qeD{kFb-~Z)UvaD zw}<^X0S1{k&?4IEk2*O>&GUGswb2gP{`BEf??>7gj!i*+w4${bdzk^d-1)FEjka_O zN!8Hyts<~ekLTrBiI0orY22Kc7kc^vb(VD?AL#^?R#-a)jb`r<RZ<UwFJ{!HM`^zd z9~_cXg;jx?S<4w!!tl^;m)YX=Cy)Ls9F(Pp{U3gKD{t(-%**mXt2|6iHtgMzxpvaE z9VI04UcYQ~ZwGzRvR=1=uGcjzE?L>2(8tW!xL)b{WPMZcs_$<NN|(&EzX5u(w7run zOM$HF?f~gZ!CYdv1@!&$=yu7eMnS5fhFKn*B>1fI6lYNJtFHYbsZo$=yY-gAro<c% z2R|b#ul*t!=V0C!hx~Gr$51kuICF~<@0yU3h};^9A<2XDyG`4aEHBFy8@ojvd6t<b z>!pU3*Dg_3Tem9>Bg|~R^?_GA)%mj1vFn$?2W{p0MbP)0pi@`K4I8RUs;S}QYDsnd z{B7&YnbkzCdgczma%i#+&?Lz^Uq7vwpd09)hwoX8OPZ%S-MyX%{>ou2=Ho8GeGTqx zZ2n!uYwPESzAUbl<ta{2>7un;?Bpf0WpbC<rLeLThKWki<5$8pwJ~{;)04Y&wV&GE zouMyd^YhL{*I#4X@V=*QIQd#(isu(y-&>OfKO7QobI6oN9de(V5X{u9jy$B<RsvIm z<)hC(ZKMvqJ{Dcyw^HJLA{2)bB6wBkO8|^0*4lQ%nl+i{wo98>8;*pJ)^6c_E{S7C z2lEb1U7Q}HIxO+P3xG$4nSIs;=w(dk`aPcz*y0tTe?Xk0DyB!$5~j^^?03Xl9^3{< zBT2I1jA3X1dA}dzc4=MDdMV`$Zw{$AwrePdEL@Und+^#-jTM-Wl9i|(^gL&Bu~cb` zbbEP*WRGm9m?~XO!D~JRaw${^fvqgpk17W_bB|CYRSrps%%vKV6Z15V;S@q^mpO;$ z5BqEhtzEX<b{E63dxUw?xZ(e-CSDaZq0vh<jlx|d{+C+xqHl~k4U9TYVmZS8lJIQT zG#BSYd#-P?l$`Go)Q(>Ey}shoyUriP9;NhA<+jq)i$AqY?31?avm{@9%aYjF9h23| zN{I8_MHzP`X=GA)3ht+cJ*bPF_?zhIjyeCWJY*zZ%=5AEc|Xh5eNCc4kI@-|hK%|v z0>}INP&=#d*ZrgZ9|qzuURe7HSo>YZD14qa;7PE<8WAU)1XkMj+f~*imwxciKhoR( zYUiw}Rvp4>myE@|Xr5X=7;7Qh(MQ>~Y3QGvR`ie5%pe`ZO%ei|0@GYm0`}_(fo<NZ z())SUd6TQvB0aAKwGA9)w!c5tM`Qod-+4Jc0rE`vvnhzu9MeDr?P>qg<v?5L^t*c3 z;B<wa0nKs^dYRc!GyAtZH5r;{ZWHb&Z9)a9pWKGC&)NiY70GE6$`HqE+5{`^7EQ)` zQedEew9OK7NHH{FpCZ)MCe#z@&}L$`w+YXP;pYgmZhkpT@9gh?yn<+@upv2aOMZl! z-iI#`O{)c8r42CKkw4oLwzHm*Z#U=T>-8T9Qb!xSe*v%ICb(?V@_F<IV!6H9cGVD# zZ4+v>(jkIVPGXA_0(Nh~;8$xU4&$JwzD-zzRz6PBAUFHV$U)3M%tM=Eh)`Pwy_;+5 z5mNRNR|25^_ig)zR5W%7Qn4H1=je8g-W9xYHDP<4!=6E0YT%5Tc6kfyX}hKRywu6< zdUpuc5<?_W)kIqe-8U3VxgnaQ*dFUpP^ClWWa+H`dxXq(%#6L5?<0LeQTsck_ndzh zEg`OUi~M{?X}t3tv?um_tTWyd*J8Jr`LqiirIXLAoO>~UWx&uIO3i%21tl<>gqE@r zn~QnC$~l!%zF5!_jZu3_b1*Uo6(g)Z=ArYm{>WR`FDRS|Evy{&UfB58b4pJi+SAgX z#rCD>tk50-oatJFIr=g#wxg=~kL{dc0#EO51LfObXLqTl*iL6a&sjsoJJIMco@Ya~ z;*Lk5C4MUO5%wVlCGG8Zm)l%1O^a@%7R#INDwpAs;*vDMZhbA+bZ0qjTI79cEkXE$ zwe3OQ)n9y5n9c<g$u!-w-l-g7e82eSdlfXuk;+VP%_L9og@VBhUWTf0M2CKFpohV? z$WG68aYGxq2=C-rz76~g@H#3EU->wlT%q8TWPwjY=WGmF=X72<J_lTve8zQ2Mme>B z`yHS}m)Mu2gWHmx<T{KTC@KH&m1Ftj3Wv9-$`-P!I#JUHS4!rvHyNh{Z|W57ZmjEj z#*TCMjNLOvNa`qiI?f&E2$^L8N9MmtD9n%V3BZfHiHjH$0<Q}6jJY)K!m`QPE>Ip9 z-W*a(#iu^Ci%cy!V=XN{503=#iv}0Sp30o&nwT-$^%D!du-OvZ7w<Y`p?x$v#*>+m z<09FI7!NBOn0I!Zi|9&Au~tfx&o@9~bhuV;X12l9UDzS_1Z&eu5K9wFNbh75u}7)> zsRM4ckIGvzV)6F7mOo$Eo{{9*U}=Rl&c*)yLuwiDnfPh0w=9P*K02A*TVcgZ<2(9A zPFo$<%y@b8Ucz~N%^|-zbV=kIK`S5@6oA7HuMQKynM;R9s7%b0?BLyXpcR_(`H@=a z3^zRn7+r25O>CcGdq^?(B_V%SsPl3Huq6@y(AF`21EKHu{M&?1%)d@}hIqA;&94pi zV!PB%=XBfQ53p#Xi)q`q&CvPiitd)cKvk9T*ae$FGd%^ZVojdJoh>91I%A~YbtQf) z$<a(xx-p*~DuX2lu>Fy2VFICdUc>o)W?l<>`qu-UU#lvyO3)r^-(WY}6Rn({?Qd7F zny<xE4fu8p=lX+vq5W06(tf-_Wj$_NmHuXWhAYXn%d)AVw4u~SZHICC8_8eMm1d<4 z4Ypfc-VTBDbO`e9M!Z`(sJ2>biU)ylRzH)@WzTf|I(;@uc`bPTdN%y09quylzXq?i z6{T#0hlzMAbk0gjs-Hw%o2qvqeY_6%{vC|B6c4J4xtfn};}e@Zpv~@`9*~Lnu;^Lq z2!WTRJicAzBdhtM4jp`PgrF(HIGRSDQFNfqM6PJi9|+fXn7pqP!#`-AvKO2hhPlL3 zqs+}2;Z;Rz>y+XG4_X`_DJ-S$3QLDm>O=m6p=RNSNz&o0`f}KbJe8D&-+Dc4?Z>3U zfqJFq%)rl+D184&hhInTuW|pZp4Lk8QoBO_XJI$Md1sAAMpqLZT{x^j`7tPe65e<* zBprSO_x~9~NfQ_j&Q4oebR+zdLJfQZ)&iJCyUaZJdYG4C|Gxzpj$X(!+di@@61Nb# zB5(_D%<Pg5hgh4@iqCO>3-%8oe+zhO2{CL34f;R-t@ht<(m4q`+Bc#l$3n5g$B=tg zXt!Xa1pC@~TkNo_o@8$mY{enJF|-1u{BW$HEY4?C9u?L!kes8!6Z;en&ZKlG-ZLTf z_d!Orq=3pO<E6mFQv;nNMP!<5v*j%4{!XD#qe$1e2)u}$1jks)|F!?Zz=QOiAqDU< zQ0MAc_4eTCjr~KKlG&~d*Hr5pmTXs>kgaJBj$UuWK5@8fCQsCD@ZD=3q-L#^asFGo zQmq#T9!Y8wa!DEbSuqA~6#VR>?|wjY%{sN78YJF3guVfl!K~Hl&|j;8pCYVAI6oR* zDeM-0jIVyImzAYz<-C6#RkbP(va?UOg!%^J_g)a5Z<0H93op|cN7bN`aJ?6VdU~%1 z<(e1rM}_q|nxO|D#g?AS6PIjzgf~x&E4t#XEGN}T9Lyt>0^D|KlPQB?j!Y{#^Fr-p znd=a~gkFqswsx>5sgv~=-b#GOrD~;K#fZ#l63aE09`3TibHa))-g>cL;-uNpGPC!U zDo)2ZO-GV%?ukMF`A)eLqop`Hvc87xp9E0&a2NQd(^qtDu*xHQvx`pq>jj4K?JMQZ z#W;zv&%LkI&OBi#Sqsd31+32gTX+v|-YLHMj`gelq?@=PNoZ*=x*yn}wy5&NK(l;y z*(3+Fk+c&XX9Oqxc(RJm1fJ7<btad*JrxqD%*3Q73Fs8)%w3%+!FpLsTajNM@^2rd ztyni}limsWmx<4TwG;7t|7e^~s?dS5SdcUmaE*gK8pH6W!Mjy*sM{rlzZiw@9$B2P zObLG!UaG=eiVgc^p<^y7&JS$_r=pl|6v~Mf-!i>=`r1apytii{{>e5WrJBChDDdr# zLRmHSHo&vL1a@U%e|YT6eo$~?Uoza+20n<5%*1uaO<HC*_{&6_%NJGh!e<GKuFpz( z+xL`eU3E<BVyuON(d7fm!;AUl12GTAw3@-W)$HZGXTsCV^7&MemzQ=J+#`pqHRd4J z=xFE2#HyH9#WYpl9hK}`g(RFJIV$tzkww?DlawCVRv=c5*icaBn}*m~NkmHE%QL36 z4;-sv)aeUOD9eE!=S7yPDHYBp1pR*;Wh=8Bek4MEe)I$3uY>~Y{5z;&uF1@1zgFt& zCTh&{X(J3y{1lKS<lhzy`j3ug{L}Y`U$KEr%MR~ldmH#7dz(OgxnUg!-{iPUvF_t> zCq{V3!~RH&u@wrOG)}<XHS*%q)YL9LPo^olT5-CzqAQm#=4Yb5WuVy~i;Kw0ZqbVK zvNrN@!#}CsBJRQPeIxV<CLAPX_8zbS3tiSH%(C`@(o#E^y-?U+FLXnuW@hILgIB63 z1rLO%ohpaC73U_%8Rl*iHt=+)oJe<KAJ3u9j^OZh7XQ2;=M{`zRN8q*aKtOMhW%4U zSEeSqbc0{5Qw>#uCY0@H3J&`w@P(iuN3JGXsa4^MP=*rFdnPI4p-WwoX7f}=?by?} zCam$mhoB3WGhAP!45i393zXqcK=+LW<9sFs(Y6WGF<!PBHnaZ{qAe^{x~l}Onk^&* zeln8lk~pUV&(fcl?&S6)1U3uq(zNp|SDbG;<*;%l1QJ2jh5Ubn*SzDU-(38-bf{0} z+-tdf@omfB`#Mp6(EmvAtA6PodgodA_1GGWyD=|H*KuVWb}@!KGnwQq8ZVSUa`a_b zO-h+Vy0cM82lbL#74*Lsl(vTax?rb}LfAS3=ST}!yB@qGjmDs{POP|JnhJjRC1KfK zM=*Gu4y`HHG91Xs?R3xARA{wCjEQGEml&t6Fh%1MSlnTjFXlEV_5yr0vh}B}<<$Qj z%c;${-;XPbmv(MykFSv8e0acnj5?8-wfE}aLDjo{Oj$;9Gj((Hu$uAaj>*d&j6Q3} z#(9OC)^O_eC~I%DylDf#l-e1O+5vv{Cmr;?yUOEnE=I@?eyj2EUY+w5W6fEW?htT$ z3jF;oa0`mPCOTu8&RLqN+Zp4TR!&>lSnNRl1--gG`uFn6%_sq<K#axt&MHav41S@W z?NnDs_3s&?X(zF3RTGxN;RG70U4<TZP<n7>Q<AQ-DWkjsSEI0*HVP(OIk=i}&7w-I z-KNV^aqu+0zy4W=-AhTM@F6Wjk3VJY8K|?i35Sc@gkKgn3hy<9{rkr1S<eC+WaHjD z+KumK<NizBQ|mbO3S6J#*^T=+-v4=fQu)(p?~{PTRSJ@uhgPz=`p9UU82{L)0&Qop zoOj7+hE7#c+(fl8<>sb%U0##Cobwt+?~lsZ#_JeF`4@3npSXpGv|ZiwG~+Xc{b|9F ze~lo6gl-E$972x?alTa5MnD;}t_pQ88v8+I+*P&pIRN$N?|*}TuJTo0Yn<e+0e+Nv zVl94C{+fng&8)mfz)yKxrDXcyZ$6^JY*h`xrpZ+E$l`iflWEtK&vr~~P1KM1Kg3y( zX76F!#MTGl19lABDlFV?`+oVvRw>fo5yP#vINu6|tfc}w(U^a)825$^#CyjBSS^}Z z86*~S>K1v`u}jL9mXmx2373?e1->J5oW!o05DRa#O=vrB*3W+3#Fyi1J{=`FGtk-v z%c`(XR4wZfmMv=&RxG;<c*rNCEHBlv(JqJYPwXTEm76&4uSO5ovNvweuj!Cz?{~y{ z?r+6A#Z?%Ox1lkOnY4J7V`kY(M~oI{d^jHBXOu~HQpf$R#BtZVOp5x)P`tJr^}j5i zqc14y5!TD)z-l?~e~fb49>Ki4QJ4csPouCxZbo>Sd<K6`m`i$ux$+j_KHRO#dxWy( z;H}_Z^>(9hpL{iVFvNQ$WP(>1>Ma^w{Y#vWc75`5oVPv5AoW+lIE*%<-o2d(n2E0j zN!O~!SFb6$yJqFAJ7?czno&5j3UlL!z%xvkk2QFH8rO@s*c`Rv{yMJxxY+z1hXrlJ zRsWIEHW72KF34tT&p^SND*d$AunMZBzvR4YgH$WQjt`NuHq8+S|BMFg#uDujhfK>k zRAtn01ig~crYHyP;H?N5(bjFjIFt%{6WS`Q?he#>3D+rHH}|UH#s48~`?&m<nUKH1 zmV)zM!dvbaNv_hT!rF+}w+SEBGz!11;k>7Uhs#-xQvs!~BAPaev=Gux1m#*z*C>Q3 z!($qSOZ0h1qtHdA=>0Q^@0Q~`=(Ao4S=Uq!9+g0;sYf_h(<6LQ(<WT5SR+t((X ztf|LSYfUYF1GEkBz=rXl-sgkx@B)rUn~*6vsr{Y9h%tHnxf8D)dyVrp!2=f6?5JGj zP-$19M;d{%GK{NHc!WC29&k9y8p|JQVm-QgRip3*YIz-PcI@jJsQyW#@Z*{`;pLi# zUt96o^4FH4f6Ea6XtfQv>*r&v4?i7|4Y$_geD>!h4jCvN4m8Z2BN5!~rG>Wl*w<n= zfqyTe@MKb?=8lYGZ+A;Ng{}CCd2jX%G;V1WEZcj8dpEQRnho%DwxLn@Sp()Lc=1IW zYdijDH|Ss|0cG~dShq`JoZh<!-ytz7-S>JTPm{ZPgzARK_p#iZnEO5CE_<Id;`9(> zUaz$EbDViU=KnGz<-4!N81|qK9t&&=N{q(dqd1|s#C_B!Pnh7Y@^p@DO{BYM9(Wk~ zM8Mjui8vn+aw}=;4D|QkLK08p>9f!t;U10{jXVWD>e$z6S%W+{pL=9WKP&4W?tPPq z{!^DUuLvbk(VK|MqUdr$KFey%=yh7s+!Cz51^C)W=yKrcU-W7`9$EaE2U>_0aWi^^ z6%AwuG!OtK#{9nv5m;0#-Me=(>j(8&3K{cJ_{s)6D#+^X8>mjI#ptXJx%!tv2P9sM z!8q<?v5$wIb-vrrTAqoocqSwjzk)r#95V2%J*<?Sy)3^GnDx*0HTTD11w_{K>rZm( z6S$^=#$@~Ui$#zl-o>70l9HKl2{JAVxcb*efpr15W4x6qf@@*x{Efilwj!huTIbvF z9U}b4v&iMwzFV$y(AHSM;=h8vXD6vqv{8?*y(osw4LDt}+~UxS@cfh*H@iU(=~xBw z{9X)CZ`fU~7vcFaF`SF^2l*vP|4<B1Zm>Ab`W*}UV6Q_QC2f#kg5rj!S?`UJ2t--B zW}*H8%<&a9eSpuyBU=C~RC?n5_mI6@=7V}Jo@?L-E03>q_|Th2Mp!AFS344Sb<~{4 z1I7<5UGo6e<_fI%FGhgLy`;;Ur)T@xiIM;E)sn@0Ir1!7vkbK?L!RR!k#jfT{VrDF z`7hrG1i5HA;QOyf7!F2rRKssP-zYq{bRpnO{i?o$93-@j!ht1heK!hwm-Gm)Z=kJj zJE|~RJD2#7-ZG*Z{`^I>2>V2%U|qs6lAnzbCrYQ_C%j*dSn1M60oH=(&)+&!!vs6R zk4GAX$CoByzEv;P@%Jwz`ad};%NADt5m4%ZRXqdeSNmGW{B2`C&_E1&6kyKu01~cU zUs_p?7&9;jc$pkK=9EB(!`FIWG*<1ow^B76TI&;O!7=}<V|Q2jTG<=zNn`%aV<o^j zSA|3VjPOl*Pg>H3)|cO+_(FblcpPSgQW(WICN*N@bE|Vf@sR^P10hg+XIA;ptMU&T zh0({y;6L$WmppHhyFpxil03V(`XX8>i6t9c;e2wo<_NiNuHTFAAJ>GC!7CJN%O}vc zB_67c!%U9M{W$DpxdQ3R5~%vG*dNCCux8+yXK+1%{p?HJBlM&?N>ffGY!71`Nnorx zk{$9_1{Gz%WzB5YRgi%H+E^`mG6|f;OXh(8O6SYbGRF5kdwXm}oKK^EoZo)AmH-!g zuJ(l7(0Ey*QR)EgwbC+K1@WeijO$;eV151r?R!1S2U-Y?&F?BhA(o-Kt&AHtb+}j= zT3oN9E#qr?OS^&542m8hoqz@tCXzN`GHXvgXl;_Ll{zxZ8gU+?#1Zgs8I!cCOz=qr ze7A2vva3@_Z|@W)LQgHTs#8eCnE{`IW16BNu1;aHb}6KW999KsIGCn{#O^9~tgAk1 zjTNO3EL?#x(T*u^QVs$CL!GRj^U=m=KQ%^hS?ZOAZ^vb+_eO}}veY{g8pma+_v_H@ zxU5>lWvRC_^j)~@J*eY<<IL3C8~S!V$D;Loa$7xzzq6h#-&s#N>KVtG*_d(pu>N0g z3@2#foQ-ZNY?MzA(AB2}wI^Z0oDP}~&qBaJJHU66x<g+|eb!mTqg(*p3EDkCe%C#~ zeV_O=TodL@?XeRz5gg|;%n2*tbl+!3-x(j*wi};4D*5Ga1cfc(gixE>aS`)0<QGQH z!*lKFQ7N<#*m>`HR;l&#%mY3pndpE-D)5t_(orxt^b)A#dg_~?Om~<ERc4ceNnXvy zcn9UB$O~#2^x_nU%?K)4JHcUtgpisiHO+9Cu<D-})wU7fYM4W7fs=u<svkABg5Jj- zKP_wmydX8yJ3p+1L>79iF4b#{6CVdG=5WwEa@d!W!1Q^n*WyVLuy0P8>~La5F@7)6 zF7cT8!-Bdh1o~g<B3kp*G)LLRl$~*|;%UG{<UIpfq-P)lS1c(xA9v$~{4Aul#K7pm zTET>K98mkpG5-UBmhw34N)rRd)|3|3#>u14f)b0{wKM4TH3z+3m31*@tvQc<YerLY z3wQ@<#1;ACEQiLW-p=|c)1h#sHL<734#tJa6k;7TSMFi$Ai3i$IpSND035~<bB^gW z5u71F6iE)E(|aI?s()Os3=-cFUtvNA)<;LsdzA}n7)P1d!4C(QEx^*GyuAxrWT2-) z{w;w6=vNlYpkLDVNxLx`yQT!T4rjX3cgLVjiH?&#_$3Z(9GQSL4aRRHB)6|#Q|yR$ zZY;H3-ELDkV_TT4aFRpqjM>ee`h;v-SxLGhPLv^1=yN<+LR=G?6p;R<I3VLA2@Xf; z+Vezv|NE0$ic51ZX5rV+m)Y`QsrF(9ezW@0oawt-Q5Nxr=uNqWkLb6!TtmIzd%oB7 z&f-T@%I+9oBd|?3wwj>N67cs2rtG5HlcnYh?$UeDzgs%*!v0cxKW&9fNKtZUZ>n>Z zQF}Jo`AdGnt~+^FelAa4iB1|MdZLBT0eA&x_?%{U%Ii2^tauhbonH+PSFDUOl#yso z+O^dJoj_0uIB%zgIyle{N&1P-Bm*lAv}?fT3i$V<9SR>+Y=caFUVB}C!2fvwaL&Nx zh}`KPnzcq9+1WEd9}oFYAVp>{YiBWz+;Zwo9}D<{kiLHw-B%cYhQa)CS_gcJ1jc_{ z4@#3Lwlm#_ye#16#3p%f8ze<0z7q5cyq!ZHk;gxRwXzRVfEkE;Zj5S=z!vBs?h*Ya za1ofK0(@I|fqZ_$0b#|469Yg0kb1X{t*_f8yueA|XZ1Q2kpG8BX;GdKp4u?Z6=X72 zI-K@{CgF#cCgFvosXb&`Y8TBxD;6`&Ln?d}m8J=pZ#aGArB6F(+oJN;OzK@WDg|A{ z@TqwH+Z*400V{Zn(;g7g_i7*4u9Ry%FG#i8jkyiE)h~Ju*Y3v2G|u-K7kF;D0=}mx zq$%S2ImLMYt&MNt{X53)ETg(RD`tZWJ+X?@o)}0fl;aDRkxe*$mVL+FRVQ#}yl!>Q z<FI)`UH52C48%T}vpHwwpI;Db-k8&nQ(f$VmY+|hkoq!ZLI-V~QV!n_-q9fS>PG27 z>b(Y<Sgxabl;=Qs4lOH9gVMCD9#$fJZX!kN`09mZ4{c2l-@l0WsrWviC2+(U{6pxW z`$sr!<ZC67Z{K(TxaJ9gIArbEqdvm<Jb?EU;zL2a#}S5GkMCv9cA6{WFM|VX6CPU0 z<UydR!bWgZ!J-~r<drF&fEPL)PPV(Jdb7|BY7OXy*D`i1HWDKjSdP>vhbCHjXB=do zuu~p;P57a{!S!LsG01A=`BiSNi0By(CekUQA3V-d+8fR*Icq`-euB9W_P-aN=lP@X zRG~`sWCz2qX5lSHg-}o-(|h&r)BNmSE<4}zn(zWVdmeYm3k<jA$m*?{tn{#0SRdYe zFR9ltIf8##33RkxLH*fE50fKPVA`mcV|?7TVI~iZ>|^6!vZ-Be=d?^y4*Z%?$~cAf zfX<wOtrsnU2O93RQNJZT&J!H(Uwb<wuY!rhGo3t06XR!_?A7l-Xa8aVIu>f$#N<?& zu4^yF=8^(MS6r?f;p0PzC6irmLsl}2m#A?bV+oVB7_6IIJB1llu#n-&Yv3wQ%kSk{ z>i~Nn9+9<3ohKm|p5fUkWMf~N*=zdI7qHG4^Q%WWzWpWV`|`q1`qAcfN#I3GB+7K9 z>m+nPx1x?jQ6{Uf+FYqtlmUGo&Z<slrEP&ufzq`Pd7vGYx1vjnJmx`(8E+C12iykB zo0qCOWWG!?=D$3;A!|p!_a*j~(!!ti$LU|~2hfdJ@-%L0pTOS%4r@GUwLC~78N{L9 z{6Krh)4Wk!%})o|YGiBqfRJh1Buutp9@{XFZPfcPX8tb&5^bDkQUz$CKt0|{7vEYE zpx#nkdjf2&i@lFlB_P+^ffdLVFXp-rISK;|BE**Mtr_Z9lw-~O0REo`B&*?Rb^wg2 z22Ve;v3US%V|iq~$iK#2LPo=Ey|6XJzJ=*6NqJ2z2jBH_=v6-JvGa-lacV$v(EL7^ z_hj!WLE0|YE*5FU`-5`+S+5K_QU4ag*$(hJ&=Op9J@6dSeXsJ(RSd4&YkT`YaR%26 zoWYf`Nyye#Z_3$(GrJC=MTt5<5l8JGUwPmaiF!LURk%EtknV8_sol{0E2KMju5T1n zRdi1h^okVP>J1p(=l0sr3)OoB72uUoLv)*j0_bKc08tbN-+p2B3!6|5pp@qTO8IKT z{tda$|83nSAs%sR#HqUV4Szw;--&A$gKLQgggnA@rXcq(o1h!@zc)65eu#f+ye~rN z3sNgB0#5^)__ZC>xU%=npEV2j5_w^gs~+L3UJCq6C1iROwdJ)alj^dVKI5~Yg`QrF zt=-PNgCB#ma|7lXq&)dds`$Bm(O{}s4ahg<KNW_~5F|C4y)2I5ev1avd0-YkXnb8Q z9+Ve13)$_=vV@g>W<Z*>0&8?_0J0gT=RKkjWtMEMGMsL$v^0|&s^OJGGQwuFyo}}k zP2jB|B{iipodH&kToD7<`R_-@XD@snn$-Mjube`Q!~S3hx;yoog$K;W)dU{yTdNOa zKf$i0CDZYnYcg-fjsf_=)(2!<De&f|tObrN<3yg!j#o$l@)^?1Hes2@Av~aA+$}fw zggR(%w8OryYFv9G;b+*N<@_>1^O$i;q?Zq)SIu61gW%s2mO$I=G{k8YZVH|U@%E3| zpc7uw+y3M>m&|T~FaJFLq(|;cp|1&6Gxl^y&g4FQ>`_5lrD&Bkh5hf2>9x-e%2Z5_ zmcnE(&%b4nIw13U%K%My#g@f@Z>lXSSl*2JUl?QBaAYXW%%n{Rfqk_JQwhF$C>1gJ z1b7N!j6?;xok5;NPy3U^u-UU4^O5NS{K3XbL>+4*Wio!r!m-^#Y;<ImrLZt6X6H)d ztSPOil_2FDwW$(VaEN1h{n4^A=$kNJ%?Lb=MoOZZa>Nmbo?l)@3}gPU1Co~4gd#ve zT`#MdmB&2(Lv9TIAd@OC8mv%Aou-HWIG|omjQ6>B!wQ4xK^%on{Fr~;h&G+k0Bp8M z9fh8wIKx`*Gm)c$-270gWJso#Vy;Ms6cUtfCR43$noXKxUWXRx>s)i1btUBYoFPfn z{$zTh6m5DlP>#M}CzV+26r+-GlfES0%uYxcY^qjSOBfs}$l3OGV(&+r%oE>Nwd$ag zJrm!n8Bw*&g!aR1EomlsG0>D#P-xLQVHM>pv!-_0((_?A@tROt)i)sj`xn?9Cil|p z#>-XaL;a+g<&JUY^VC5M<L_V}8%t=1Jx>=K6*eOJesGO1Tg*6N$8eyZ1Jzz;-V1y2 z+htpfUc{QO8(;I(nCkZ81aOjbxnoVO;9nZDWe{CE^bfGlUOfp+cZo8wME|rywAis@ zjVR1Y51XrVg=WlrnO5$RYhf*>eXBaBn#F)_(?<5*DnWCfbS_tb9UmuHGaYZ@)dz{Z z^Rms%Z0}$#hznL``cePB50U$O(m7l{cb4W8cl~^LmHibctLNGTsg}M&yfU0p@-uV& z{O`_ZzM0P#h~$gxUDF0^3DBb18;6~X=<=a&vRu&q47-;Sl4{=yLUo1kEJtG@zlN7P zsjnUMBbVcz&mh8yfwGnp1C=d+rcIlK{0`uBO$<tG5@u8QWnPRk=tP~^pG~`kk8Ob5 zkZR-k%|bp!O$llq5^~!UJSSpFoAKrs1C<mw2W8Nrdp-+2!Eg{NLu=rP_ggXT1b8Ct zp3g<`GSbzHx|rUWv`#uz0UK?rxfy!hG#gfpfJRpBhG(StEdF)vE*1|kbC1>rZ!~V9 zTPw|1_I_CF5U!ixg%R)zX(k)a#CAvZreuI(Rbkc+rVn`+p4#ygfoN6{qOsY-^pMnm zOQ&4j!eNtS&Bkg;wOMGtuUJ@dUwTIzPxDiuw<7qbkI~#u21xZzz*1vJ-qTE%_s79c z2Ds|T?6@^P*pJsw02Rs^4Q|HKo!ZbW%&Mtfzf<7aFI|><CCguSd;kb!_Wq|0p0z0l zSfp=&$6n~AjQW=a9~=C`TC+E~0iNmvO`>#o>)OPxSiWbl%TIEj5!8uPKNC5h#YueZ z%m@X=K8l^jN+a>BqVXEUXCa=Wh4}vWaeA6Ghs~5FU!56972^&@<EXL>anr@PUxbM9 z2{+5hDew8JS-3Ni7@u@A7{AT7t#m7I_U;s0eH3tvc>OlcI0gEetQBk~Wl}chicy~l zIEKv?<zx<O@?P;!V|*{0qbzk3bkAnfSP=pe?<SihSDrKGL2dh1vtJ!CK7cyE-@Bvq zJpTy3ne~zaP#ChFL{=AYGTb$kmBL{8?`)Bhx1;Q9W31*QVrdlc^*p>Q5|n?hxXynw zhMspz8J9u%fM*-ZpL(-=_D$-pW_(36dX5<HcaN99&$bmiS~1o(R+kdq_@V#CzT@|y zy`HUntY=5*c3uH38y43c;!xXpey3+UFV7K2T)us~1QTT4nAP*x;P312b}#a<_7ZRX zSQW;Qm5EhJ6Fk@pl#*PM^8(V_kzPGk-LdHU2Ato+DGwkA@h%=C(CA$qqB+la<T+1y z*ep?Cmi%O`q8c-&euCHv=4Fzo!v0sI?L0ijiDOT5dq9arzJwU&qeqHiQOV_m{V#;Z zNA6ARtI*cXWoh6Z7|3f(FNw8ahG%@VHR5Pz(a0Ci5qq4~xCkSy@UVUq_qW(ZgO#xC z+m16rUV%*L_Si^&R-nJ;gt#0omq0s>=_(6j!1(r|H)<{eA5v-~P>JC!fb+wS`cePF zfPA5rZx!Jk`)$W=$yT*uKIu|UAIAl|A(OT`U`GVaxp=;gXHs~;CByFq%1VDXP+59% zz8q2sQIl1C?!Ng9TB8ayg}L*xI+p249h}OkAJ?fs9loZM;P<4CS%#0}Vz6<7evYy? zo`)v@tiYgue^}Fz^Ri@`v{wRdR0QwBDoiyqOIpZ(M*S;CfSb^-sxfv0MDulj1e5p1 zrmUX`>5z<H&;jntRB6{*_;3B5TN>4Fs9(<+;b#KpH^57vtrge}H4dH?{9gq?{{aJJ zns+!$Rso-5n${<&Bc_+Z6PwUI{L)(5I_f_v&{hZR*QnNx-z~5d=YTDK+Hb67mUPJ| z=_8cHWW=!}3~!TmZFRYDPT^Fn#Ob{X=~QTw65SmhPJ5_d@W0J!^}bZkYBSb8@g%s9 z+vUB+tWp1b0eVuXZ=*mDqCMc{QAN|`IPxm4G9JDZZKM9{0_wMIgRX)^msc(El%b`A z0;i=q#A`P9Gpfyi-89lOB<4Unbg`htD24qF@!Fs{VN=a1SNS-(8hR+iyB&HQnV4xz zGQAiy8>FXIZ9-8MPBs{wQO<H~4l>C!OKTI>S2YSRA?<}xrlC5;AxFK9!jDL!06)o) z`phL#ZJY3*hJ%b?7GbjKMxjchg{1m<SWF~|a_S!fx10^_yB^_zsvco6YJ0qD(oR@j zR3+dyyDDZUbh}`Mzkpu4OuU?2H9^a31nU$z)|^IoeF`VuuTQBGW=+K&*99+#(B7r> z42l*}J4R=d@C;NTA%ltWcHS<31poLWwjS*5Ph<aQxcUwF`p@GtA)|{QRkXLmtKsuH zRR^7;gy)i%bxS(jLj4S?XD5$9Q&ZoKRCpAJmj<@;qE`!Pb~G*fO$$9m3nk)vg*btU z<z+g)SfyR=POermCkc{LdWvB>3<Hvyg3R|0a0FYFFJ?<%HioV38+cpe#2qR81jiQs zLvS2Y9OnmO4?+GcBswOw#zRL$kG?B&BsY)weX!-vFw2J~lruXcIV?uNO}}BD&TK}& zIbIvzl(=h$b%J#&`0v|TOuZCbcWTx<z<bWMK{w5oy_Zo>W&`AUka`Nxm9a5x^1gu- z&A}ms@~xp*g(7`o3v5(PWhKnkf#K6C$PD6|X1L@{xvuzK1UzAI#dj&-FW9V<I}@SP zYrFazTSAk}sYy?9#BZ<4i~)Wtb$x*NgSLr|y+g4iaTj$}@=Xk%q=$iDGW}gVbHFwA ziRMY~0Oshh0w~wiH;|-D?Nad*wx_gMFyA}FAC9C}{nB!v>%);u%|45w@57OFO~USN zV$5V<JoMtk*ULN_2g!|hp2vA7#pxdkdfWfk-j{$ib*=5Lof!;>GmdOj6s=+a6>X^! zW)uMfXw|k7LV(ynFa!auH7I(h(mHhb@u)pGwBl3+tHmmV6Kab^ZEJ0vaOiRB0HP8Z z<i2a~1gY(5d+xo@|NPIrXTh7b_FCVXzx}Ow?awT1VYk4}O*zdy*E*~Z?dys&pDu&w zDHa#pSZ8dd`<30!2!dS;n1uuJ9^xB%1-Ef7@_nZjy?d9u8MLvY%(9B@7TC9Ba*zXd z(iJEI0=M78A@P!RoZA||5rKnCUJmMVsm$^&kpzBq%b}j_bQvYnbG=i+I+P8h!)Q9* zV}rA9?YJitZo9`Y)Lqyt=pq|r&z(mbw61H(JN~ZUnO{C!FJ&0quX56_$69)GrJp}N z$3;(!IN=0z!($pc4K?qU^zQ+;-1pE^r8xL#Jq3e!DxO@iO4~Ae|A9HrHBT_)dL9`h z3lzLVN>rj%&5!E4hZ^XuLHFYQF%HXM=&n0_GkjzVJ6~4p7)oj#al7HF+u?X)!w<LM zyN>jRRHj}o0G(K{N?6o8m>Ja4*rSEJIRU$3NX2^0E0}Oz*wQ|~KsvYXIeka$)FXH< z_PB}Oi7mpHBb%;T4sCRJc#eM6t&<;i!C^PaL5x!^>x;2UT}<i%n@-=!K1lZ>{a8E& zlBup(`mv-wPUZ)x<kzIzITib#=m-QiIn-C$xnj>5rAIiRr_`iwWK%5GWv1Z$c5ix| z%&_6Bv9^&sd9`RQ<Pw9uzQ8zOG%yUf0D1K_a0<u*bR+~TuijI|Yx}Ln{gG>fCih*9 zy;*lu2O+NzhiMPa_7z91(t&@*V^_yZ7`657>JA?5f!i3UZf;^rBo9~3OLiAtma&Mn zSd6_VQC&K*^gOPN^_=X|w4xrf75+NxOlWTG`9#O9bSt_>2gl&q5#K;oAV=XFRqr)7 z>Jdj2gL;~`s(5fX!AVQ*EWkAEAbPK*F&ew6%&_A|+|#Jdq-H5nwxiV#Ar-aic1G5X zkUcj9a~*-hu=768zsto%?wv0M_1k6Hf*uJShwrj%&)H@9NR1ssQ(GDxF~5ELRw#VG z*=lJ#@MIy!U9^sEd-v#?s+n{Go+I=e!I6?La8d*(mT=}s*@xczQdwfV2S$KfWTd$H zrK1hOy)q*E9NhduZ-BvB%~E<FFI9^I*82BD51E&?_!cwd9%}S4Kks{{%zd@2z7lmN z16om6MZg9?j^~|Z&Fyhy++mudw=6>#Kh)Wz#M5^|5~r+w%i@LHDS*N1)<%~DI3<|a z6}te!<M8Ff1Mc7{QYSq?Fppfg#BpF@CY!^?aqA0pEv0g}JuU_3i|9_3KEXn8{<Sjt z#^CHw<2#?3pD1m&&)BDh47GIcx3#_tGt|;kzO}w5zHf8-j#uF5cfn(Rr0!}d_#UUL zKSaOMao|#mU=<w)qvwcTCK;F(LQiqGHL6SLEjQ+$W%ezN2TC1Wn;Xv@<aZbNao=1k zDYai4ihBoI8of&CyeMsR8AaR@+#ZD#{iBS&AKObkxf@1${hbY=^YXN}IMp^YC3PAu z`-;@<wtR%U4R8<CED2z_B@7-`yXl@xo)<WxPUtAQ=O~<gH*ao_GtREe-II32b>qF0 zkWJ3^?sY=Op}$@7dVhy=u1$821gDuM`}<x2qGJzlDTCMh3(kp7iH<ehlHGG;<ha4A z556EEI)}TQCJO-zPIAsD5~A6GgJxBn`@pPuaz;=HC@xE}N(3)8phmKZZ5)g`ha ztcT>Bq|RA9kBFMY4@U$%x`i`m0^E-!?jN`V?Xc6)=34^9H9YV=#4qOjlDgp1w#L&H zwB`0M#+MvkV4kO`*zDhU#<}kqobx$@RMcUAChiP*8GQhJV=*nHt+BD9t#J;}QXw2( z0Nqj{J0*HvR@rz9y$9U<Lb(7tX)Dg*%nIWj9UvS=sTwL|m7?($d~*gjLgBf&BEVll zb0q5&jB~`Iv=Hmq7q@@-`QtwL@j`r;*{c{Sie#RrB|}Cup6wGz@Z}qF)~O6OeIMV# zdHq1Aearp31q;vg%VNC92+LXLK2Bw%j+FA>nRvS*Kqjn<^{(u*L`LeoaqpkEw=+&I zJK=t!&Y1DT3dcRXu#RaVVG%Jwst9E`8>CW2sz_9LkTN=mofZ}y7Gocy3Yr<I@(7C@ zrHYOWByQ=?yCsk)y;hyBW#{SAbtZe0Q9IvY^w1eb#TyJJy+NIzHIlH@bdy@ISDSQ( zRMwElYBJJIh7>kYXH3ad8?~%19acu8Hr1rhW{ui(lToKJX%jq1SVVM;GCZ7B1x3fG z!UAG~0tqP$5y-c9KyEny9K*%TPSd6)7>sPFmWx^WU0x{T^Ewu7KAF+7Zrbj?Qy-)U zZ2stG>*2efAKH~U4WC1aIF>Xed1s90?ay+*-8uM+nTcs0$F<Cqo|BBu!xK-C<qLO4 zUn>ueGkUJ+B%dpuGqk+t{`sRSFC<Kv{WsaBx6YE30D=5%U^hUBQ<ttpCbg5;i#v(r zLI;5(gS*0rfCvfBgA*w(WpTir8NDH(J&BU2Ne(%TAx;iDGmMZCF}Oy7kuy$=Gs7|p z#*c}k@(zvyp-?0eizO1NR3@{tv$yZmNiKK5mmX-S5`-&5$o7!74wypdLb{P&xNP4A z1I_2Ko9+b?K%$9;q?09NGdW6b5CKEO<rM=ZfD%H9pu|wrML1a?Z=EENKLUOPt^?<R zYM=@z2lfNIfGxlWKmo7@SPqzhEFcv~0A>PFKrrA7cmeLfK%g(s9dH07KuZ|*9RWW8 z7lE_D37`zv3v2`a0jvd90!x7ffC10~vw*2U2=F4{4GaUYN-OUH*a2;!_$D}T54Ztb z1ik{QfhwR9`0tAUbMW&q;2`h`@Sn05$UjB-?*g^}e+O0rdB7qd126yyz)T<-2m|~8 zAHV}}1Ns5o0DFJ|EGXNbfggZNz*oStWiOWEeOgg=xoy!?lSCjT(!@9sbvoiYu#%CA z80ix{GSbnZfeO5sL~O}hX~qjm#QE`crJT+3ydtwyEF<D2lJNH{Ijj8mO@udSdJ&NX z?`~vZ0B>XJhr0!7KpQ;ag$DF`d|fVQc%ZrM$2pnci!(gXIP*dOG$h=a70~2t-@>Ig z*DYcaE0!UlGJ(@F55gt2oOgQBxr()gTq=@69*uqwXbpLhlyF3{+0Msn`N-6WjOIA^ zMduThoK@QFUS@$nM5L?441|P5EQIsGO+rd_b4`{|3a8bBL-8z--VYnc`L+ZG2Gnw< z{1|^Hv(*$7%tDkADT-#T*DOAse2sIF)m`I!ypp4QEVKDB#noEv9%x*UMH;6`)8|wn zXM&wSvD(@E=BLl7vc@9qKSL2`=G=3!yQh{j<!@VV4F{1Nw^l0eqOqW)xER#qP#o0M z;(F2=15DNsPz@*<o=z6Tn^0LcJB<tCmm!x6B`Gua7ET~MssBLizY&XwB(F#$6yuUf z^iS|Ke4s!gB4TA6BNj2@Jf1eb&YEdc{B5fV1!~Kx+Gf|{iwtl+dPlqDvetOwY<~R* z4yr|^Fj9{-p}bqt%f~CZ>T+{q88keM8F3O3ZbTOm!ArEVC9V??4GdDZS5$<n;=DD5 zT-6Q_&0~aMxmrG~xZB5Txyn>d+O%n#lF#L!qU#nj+AAWN{9sKhD-<I3{br6En+TdM zGBgVNLV@0ZBOn0oM+)S(fNQ`7pawV&90K+MyMb*$A@ClM599#zfY*RHAQqSeOaw*) zBLO#{KhP6!1cbn&2*`e*7WfAE9H;<30k#1j0RIK#13ADvU=A=FhylWY34k}?4)h1Q z0#cxP3g%3KAAs+Hv%pE90@x4i0k#7hf%k#8fW<&IU;wnhOduKv0epecz;M77a0VO! z5zvhO&wbzyPz!tuoCb~op8>_dR-h1gA6N;X8-drlW_(Rcn^XY)%q-<<@>;%kU$a0e zW~6N`oW%>hmnmu`Vu*$ojdKgFO>vFyRR`Yc^o;@4oOnC2^40y79950)6@}H%kVPep zB<Vs`Kh9=>bcuy`dP7mkg|x``s$9XDnth)fB|MdHLl$Rf_HEz;|7rKDzHvgDri&>B zT)K}s9BR;4Vga8><>aW`_X^>XT+_n4cHUd#+a7@f&!R6(sPZ)P5lpPh;^^c)4K+S| zsu%cr^L9t!cOp-h<<s!GPyh*8%}Y9o2+?`|c#UvvK!dk;9Vb7l6EzBvR4S0RR9Dw= z;kJ0@YdTkQ#u}e|1@cA98pZ{_mE22$(kh#O(Q576aQa5OvBt;D2XRzx^S8ivKxeBh zN~9UtrlBqHZEj2Cjnr1ohp@mGIpRa8nb3B%J-Uk4ta{#>hHFckVH_<)8XC3qu~j>t zTHiKWhI~{$w3w)|P40Wt8WlBK14065nenuWqwR@(^3=AW4Qc5p26<{ll>+@&bT%bb zV=JwKkb4{p2Q-c1IHXF9;;*zN<*KbL7WiJVWtEn9djU+a*|v3FVx#T%sG$WM$0bnl zrOkGMqRMk+C8~~*`ZRkhc;^?}e(^DL_3E9duM{w1hN<Mmq7ZUgVBmOEqNu4>aBqj( z8^3%FauiLKH*!GPU~F}jLLdaQ^2~_pL+Qz-4n&&vR>4JSszdQQCtg-MH3wW<luM)% z8Ih#4?lt^m<{Hy0kNEemnv;>5WHtV0Cm7?CJTyd^o~|{Th&C%totnUUjvX1FZPK!@ zS)aYVtk2edy-nLw=qNaMY8kV^c_mq-8$;scWn}BO&CCbkW`Rz7jp^SaB5ULy+sMg` z`VxWN4<9k}FAo>=@BTGWnT14gwt-}3`w2a7tY_L%jx$MpSGCh`&YB_2HGW0PQhNv; z?dOnTl?*Akoy{EdEff~a{gP?he_gQGA+&wO(dQdC;h>jRFvDj&A|tnnnErdWFfU&^ z&pdISE9ib<5&7Y~FLQCrQu0z_qG0XXwM=z&HSzZLW~ezaF_D^u)DC9Oy*=Re6#c$o z^W{&OJ3BWq2Y0<HSpJ!iym4d+S$Jay@d_ErT;5qtKFw++ulN6e`RS{N{dD<ZtoC&F zsG`hrpYG2F=fqpcP917U`lsET7q)($yY%CvgU?ysePV1#^{pS<fA;eaBR@R5_@BEL zsT`-e=qEgvk8ke0R;Fy;@!b-aY}Yrs^*&uYYv9N3-xiEo?tfbQ%b?YPK66LCFy+UZ z=E{ACF20%b;l+J-#_bDjm~~{@_}*v4`|G>Z&sZ1Pd-s;b6W2KBq<sI)tNnKP3xt~s zwo5OR8`6T9SxdU+m)wjfU+Ovd`X_DQ99<}nHN3gtzUh^6WAXbvUwBe{#XP3#3Ae41 zOY7bpqN_30uRDBhQvC;qb?a{4aElzbETsIGec$A-sM>J2vv&Q?%<7Hu!5M<*W*A1? z8M)-<N2%L$O_RQER+e4bw&&%2(Os5&pZ9p)j;o13tENsUaPs<OWJ;B1(L~qgf|Emq zdu}@ZQhs95jEW;Gi(YK#R9oe?)&8B3)my(YEEd*I)qE~VOLeqQ8aAwZ%cyg~OYJ`$ zI^@)lm&dvG_4sM{v6(F?Bc@#4``(6b4&$P)Xm+oNNw?P)m1O!Jw4XEYpCA7e;&JLo z&I@A}cV9ZfxF$hZAHMN+#U@7Ke`s=IpQ6?OWjT|!V)7A1d5mQ9RQ(BO)i39J-(GXp zX`427uw?D|;q2V$OUF1qC_Q`7E3I&j)5$aEN_!sO(mQ&Ga;i-4Ghpq#x37k0h7K(X zU3YEYp*^EDGfy4gEAKb{i{;82leS-oNWY=UjQo84tj(n*=Nk+j$t@+nyz=wnm8Q5+ zy#frH53`Ir>Na-II+^?9_=G+(!HInL0h&QgZRM-(lr6q;Pan0VM|M?7<L1ZZ&qW(= z+|Qa@wO&2s?w1pWel9&y>3X7c+1Ua2YEPeE`2F3iv#CEXid^{cGea-q_M|$=M+GN0 z9bc%i|JdPixu{@bm%btWx{c{Hw{Px3(V&N!7v0|(e8O+Rj?cXgm7nTiU;cq_xP#OB zV@dr3_WMuxqWtUQ;ltn1wyYnvXvU9C=bztU_+oaimqI4x_YTxk-lcp?d6x1k<yFe3 zlt(FlQr@I|NqLg;BjrWPhm;2?|54tfd`EeX@*Cwf%4d|vD1TAjqI^Ypit-cXCCW#X zhbaG0-l2R$d4}=}<rT^<(CkP~M<?L3x7m1LXzE2b2eB{nNUq^-k-Y);FzdTF<nO zY5mf=rS(edl-4J$OInY#4r%?-x})_*>x|YHtt(njw2o-~xFvXS{{(YaMw2cziPfdD zZV7BUiHQsg&LUaZZ<3_fnKa46NQzpQ3IW~rCyE4jobfUkjTvc}<|47F>I_q|!Kj<B zO<?Eo^H;BFv(w3RqXE&jPm`q>60~|^o#zTLq@Wqdwmn9x6Sb^2QTz)<_?bI4EY+kn zCaN`BGF_LZWi{$ljaIKm8VGR|;9E)zq$%S^Qncym>LhJC@)Tq=Vmi%;=`>mdiAK!Z z#YX#kurbDLHbIw|sHM|()Cz&c>$M()8u_Wi_PIb3<L&SHY;Mw#UCa#5Q|omJtR^`l z^)>caR@Q<@<|p!Oguk+dhon@sDZ}_Qp!ULg#$UVrQ!nk6k)lgaQKKG7gu%qBpO$w< zT9Og7h&JmCy?&(0h^b3fmx99SP?`MnW{1*j587lfu<^R2XY!e>PERHQh75fIn~Es4 zMmm3*sHe8Esc6o%boP_ARsz@B{MAP8*|zHc(`WMx-0ug_>`%{R<Twk0Iapp{_Z<wF zFYU>&_E;vPY7c04TIuPtfcv8+bi)M1PbLugQS$}ReBFVLhGeT6QCAUWrwM6+y9G#| z#m7(MZI8Pv=62!3t{3Bk-AkO;5i>D<1oT$=j$w*Hhi8s11~gHBf$nwCWC1iSRQ15z zvo~)fe0Z+J4imtGF$i~n?hd^R^byc|I5AG1h^{x{^~Nl<8}uodPaXz+Hl4GEdk);k zpzLx<PZEabb$E`2`v%a>=*qBr5Y8)I8NX8KYUq{FwQxU<d=x{kV!DuhD2EG-h#Y|b z%aA$8p<ji58uT||PgNkw!_QhK*5v<6OMqM4AGpg<YS@)bAWugc5=UZDL90$7Is;xe zNHj7}ZPY<<8RkJA>J6DhXO%>mI-_>BDLYL|(y%lE3f?12-{f=%X%orhq%x&rIXauq z1hq*$n-gIOSev9Za(?t`BV+~bsi!}UEY-lKU_r#7Vbe3x(rBR6Uk7@+1OjpUo782P z634YCHBqO91WC}QYmB-y6Y``>)u2&<^neV@f&|fPQ<F@|EFZZwWxTxQy>iJ{8;$Dh zr!gg}b!ZQe6gFLJLg0z&4819xXpr1^wdOUJcPI0;Mgwb7C$%R=n`P3brelG}T0UHc z647+<NzoWGP?lV@1oAeW=FX^{n}JeHuv%LSIuUY~q-VsZq$hC=0@?<3Y7&~Lr`ce& zSsJZ20d_PQBdyuw%Zwl%tuaN1b^#$<?b=h%*FB%*6m=FKL3?Q67J-U;*`VY7<enu| z6Itz{Q=TF+fr@*l<pPxheTL3G!=7^o9kr%(+>3~3E<ETQcjMcWoI7;RA9U*O9vwZ5 zxQ7PgXUY`(_)}AKBz|H!6a5KO;wJ!fROv4X$k<f8%nu0Z`zaxIFA{U^01`F1JNATN zM@X#)A!)q`DTKKcYw>*~gnl19PbwgV%lMqqU>HpMNu)Bn7}d;ZlCISlwI($Eyn)R$ z>P%?uc)l=#u~X4taUCN6(8<Jzv8W+sHhL!NY}#K4i-?Mi@#HlxGA%MZMi~-BVuGeb z1*w!Vv8o^vj^)IF@W_D4L=_XjMotS-1&2pYC(+XbS!F;#P;@j=V)-#Lgq<E3;z_1N zMntj!k+F1Dk_4z`M8!l}yBA?_??CEBVk0I;L{5+BVCRi=SXVP+lr#nSkoj$z;dVu( z@zZjk*7V6HuX!>mBhT<g>o0?FWY5^Jzp)`sexUj0OGds8cm=R|afSKC4$n6GXLXU# zPPB$vVs4fpc`!(U;Uth~$vmRNnjU&SB$Z%NfEY<4))T2s2#JMlAlCZ`J|{)U0@#iP zyonDP4VtmIoy`k><H#78M#Ci@=8<rT$CEcqo}e5Hvkw=Z8gvTSCy<2*jUM!Xf|PDA zH)eWR1iF3Hx})kUWZJucqqtslSK$<_L<W->#Gt^RE69hPW#nT3hp!oV{a1|q8{h!2 z0T>25CET)sZRehrUooEV0InVEVqvy{rb373Fs}eMQ=QKBvbeSA1UAiRNYfhi*?2KX zJ9o_HI;?-N)SZ!<X;i0Kg`bB9^*rnmpB`EYj|t{sJD?TjHlQO7R$1k)KoIa2V53ow zRAyUWE(l$kN;XNKot7M^)u4-y)o?0Qtufnr!E^*-mF`$1x3*lICExA!AOexhX-ZH; zY*3cYl%h?|u#eAXk<h=WXrAaIupK~|))9aN`BOz@81+MGe-D2Y0DYf+&re6Y-}6u7 zq-pF(_pi*)`lo(vdHYv>I@)*i|L^*x;dE4gHO;>l|6eJqj{a<B8b3|9?fKu;ssBH! z-#-hF^3|Ww{E<85$v<-cGq?Yfw9~Nvcj~NTn*JSL>*(+QmKj+fX5vQzA|qlTvV&}+ z;$OFSl!{l++S{Jn+VB}RC{Ur-PUR@SPbYYKaF}Y!bfpR{e56Vh8-*P^5KAF)>`WO5 zx^CUOzuQZ+c%_SSi*H`T)Tk$ea_u%wTpW8c;JE9Y!n?|F(A44n0xDmriVg}73Wy0- zYtXyRhA7mU_|W8B%b|%go7>uygWIH%Wu4n{%>T%7IVrHOTT~gbSgRbqv5B!o?Si11 z>s(~`CM98V6Uge8xckDRf9tIHu5;*hx#D458BuBJekFcx#TEx{(;%8SKS>LFU0CqA zt!>d8ie}+U{RZa6Ewa?C+|-Q_uOzJZfoeQ-%9|6QkAzNDD(>*1eLbU9e+_QWaV~_s z4>Rpo(tCBNz6ts;t6K=V-CSdd?rWyblpGMMj0g#0gQv68f+7MVRoR9NBW7RdHY-+b zdZvM;Nw>#_Aj+s3+^68;Y&N@eqE$p*NyfUNH4YmY<;P~!<01)GCAzqrp>ib`bhwp= zQ!2DUsi|~8VM^9wFfdQ2(W<aN>*<78`%H(9p9Ik+(6D9b3sIiEaqCu+nGF8Bi)`ZS zWG`1ASZyS92K@#c-dNT-&R#abe86wQvwbdfU6GEyAf$<><=Bkpe$c6+W!8ZQ1(Yvs zyh+`u`gi=(IB2@Nldjk?MQhzc*`>FceAz^<-5*rU%ALAxc<6$E+1VMaMAGT9ul|u& z++1*0few34XoOJKjc(S~+PX0g12Vo4?VlDRjm#MXXgV<0#F53FTjXixV^1nq*0RM) zxwG_5hb^q^J%{L=W!H>~chsVu@2vhoQGMdhfb~D0xI3GO=U{!CMhMkj0~pD2T?JLp z)7LQ&{oxRmGLZ65Y*e5!1_tXJ8jTSY7)-Bc<F))0RD!G3BX})13{0nrQlbCM5z-YW zo3wb=SFkc5CQ>zn?$QgwJR^SmBO_zNBN45N1-ocXbhN<pg@mhoO<bI%h8%0_%{m>? z#9<=|@?)!8YZ=1FbhVBfX3$Y&vLW4sewUT+xj?xeYf<~Y$_Fncbh+k6Qe16YWgQcG z-`ni&<ZxY>-GX@_oNH&{Xsc^%Rk6M%m6e?X<u1;CB9aT5j_(Miq2s$7NtQ}b4YuUu zQSYP(biJtoijP>t@w<kSRo2wtc+TUT5rmuposEZeVPFHg)sas5S%>}F1j@w{E{s<p zBVR{&OINROFe_w%-<exKJ>(EE;Y0s9o8KJWZ{_AqC$An|y=wm9HAiF8Jjc8;bii_H z-?$C=J|(fD&2LYy_fyV4et7hQxY*Le12*m$I``q`<<%eEe~_CIqWI^K^6A&l=VgR9 z>c4&SR$<dk;onUCq;Kc!c%xRIX~>#=vpL%Dlc3M;lkR%#vEp*Y=c^~=Yyh6iRvmUA ztW216TlC|^SBDnO9C$Z!;{D{eC2IsE)c^g_YpdM7f4X+2;I7^Le4nDN-}|=)T|2bE zt)!%hta$r!>$VNM97qwuj(jF;wKeQYg-lq+#4rA_VuN>1ry<Lm?(OzHb4uxYpgKHk z{D<UknWWa3*T;OLC_%dLO3wWF%_lBZM3sM0_RBx6_uaOw@Z0Kh6;nebD;-}`rca!8 z@lwp#mM(MpFDxCt`|J2dDxXCuxEItKH{I*VDWMQMAFY-hG@BJCRDLT~I#B+u@mVqS zyF^ciPQP`w#s6EE|JeM$Py)1mDU<wOJ^#us`As|eO#4~l&ix7F>?9`R_RB_Zvnvc) z(ONh!ug88Zx?h~17!35CF{eb~hr8P0&m<R2BZP(NKk9!{2|S+3$hSlNPfF8&((>O| G0{;sh#Frod literal 0 HcmV?d00001 diff --git a/core/embed/firmware/bootloaders/bootloader_T3B1_qa.bin b/core/embed/firmware/bootloaders/bootloader_T3B1_qa.bin index 4a0444e88615fd5414398b06b2a1980aa15e4a33..dfd4cce143e9da41dcfeb6958c2077ac65fb66f8 100755 GIT binary patch delta 61870 zcmcG0d3;k<_V|5k)~4x7H%gYaq%CMSHUUY~^mR$0Ad4WVEd@z|k+P`hpf3n2qG%xn z+olB+ohjf_P-aAjDPP5Hl$l0!1_cI`(a@JsUj)o+lP14&UkfsRXTIO>KfioFFLyil z+;h)8=Pu_iuG5U`5@Vfn+Z{GUBSawhH4%s;6o>@xoMKy{4I=OOTkdP$-a2~CLyuRs z-jbx>8?B4|E@AnyBkjFY-|n*%e|4zz5sF9Dqnv+2jA=*Sfo+OI4`i#(zIRvsYj^dn zZ2wF1ig9afN9)$S@!;M+=|1`E1Gl{RM$Ob;k7Iwj(EsZBmv8zm>+TQy-xbCnD^*Z< zJE6ULjL>d_uMNJJ;5!80Irut1`p+N3e=wBz(z`zcef8nbew?}Qe?js;74W~M@&6mZ z|L1i6e`L>%g*SfjuUxq??U(*nj{jd_`Tr~6|0lTO|3Nr@S*vSd_abY~9UAdZq0P3q zPmNq9rx8C6bx8>A^{ddv!#MnhkRfeiU9EVa;MgVciL5kY+*zOg2n{K3g}MU=rjflU z%fRW686f7P5RN}C$6xkd_PM{bX3!e(*^qm{n!{_vhoBtor=#sp*vK!C;n*c<6Ea!3 zILK2MGT49eVeA)u2#q?D=t$(!os_#)L{v<GCCP));D#tJFUFzwra39k9afx1^lC(L zz{HVl$0Qcf-N!EJts3#Aw||EC-ir)$xBl2Vo<#-!9`VfofcV6JL;UK$LoDM>zJXwk zBGpSC#AHW<CK-2}SLfh=rU_HM>%SrY-P?@gXPEDX=|(;4pn$P`V(q@}3~ub6DGnEK z#wc^9R8UaqiWn}L>y*0ps(O*31TYwfd2<(((lGE_+vQV)U!jWf!I9C8<=>qiaTGVE z;7byDjm66ZT&knxS*Q6ix-W{jT+YfxgTIn#KJ9%m;L^CpFXCL&rgIm4F4HWI=t>Z0 zgtHErxI)>V6vjD-1JU4YInSluW4_oiG1oDzlVe}^>Zj<(S1|#-N<ZxjpMDro-VKNX zp=*d1%30dIDC=9F8QN2Pc8CKBM^F~wMlI3cL+;6CQ)j%xeOPY!a$g3@A>7FqN~9b# z-|jjb4gNZUrDTLx9U#<6hbD0|xvmOLfY1=0VkyUPM|s~_V!V07>o)4FGC(NfOV0Q} zjx_G~%M5%hx1HO|CDx$;sVUyD&z5uc&GLBfhzsMTteJ#yuKkt677$gj|IKo}muR*C zrzXgS5grOyPszl7B%uP#-=NQB$0SUavI=IGpF2yGe2xoJ|K!t%$vsUK2q}*+4wR?t zN#ke-vM75}cup^x!>H#q8>!t3AHgY)5Y=R*UQ7vJi$h1Wj+eT%ToTBDS(X9kQG(lG zqMB)Fn)x9!=Q7gOXeZT$#MNP{D;hi-#q#qp;8PwUtH~+~@QEQWgfGK4ri|3G1&rnC z9%SGN!*SG9aV_}EP*a8e$nicDzo|}t3?a54r-yXRmJA3Ppf){LKxCM-_3&MJv8OQx z-Rbj}kf>0pRFsMVI3r-D9RohvA^D=g3s78Bh0;N4yX>SkizBtt5r*e<+{;chX3@Fj z&balD<Z4b6MZ^?~^SwSID;o4h3+j;N`(DBz9V5n6^b+C)>Ue&PclLTpJdRwJTfI*b z#1*NY5~oqAWn>XK<traKrWoKv>Oy{!cjkH|9;aOSd0scpp>W-t?ZvPzqD&x)(UlE# z6;xT<VXBCl@}7?xGXgS7l$f6|Q~+eu4P^wM%6kf<03Yq8i|8q}KMk%v=)=VJ`;g%^ z_o2#kK0$nb;A9^;2W8RCL<_N>gr?XOwH{S~f-=Jj%7B8_ON7U>KEwW<&%i0V3yxh= z_Q$%>YumZER>W`*)tRbkF5Wo+oiI#F4pkjRhD^W`at?KY1%TyNX^ZXhX~MMCO58#T zBwN693F2D=du=Z6l6N^r9e%-Ime9$eEP>m{aRc;^rxeQ1)qaQGU|Jw$=@Z0gzpNuA zFWG)LYvX2d>z$<d{UEY@<i*1LfiH2wG45wwq?}LLlD%cl*RQ%(#d|k7iTv2p?>b+& z>RRl!sZUc^T@CKus$_nXlLRsdr0Lz>$T-?;tT%zT<!gH|N?B?^2Jj4vKf-Vc4x&qY zz022#NBf~e__3#m=+cP4?=Q{P&LB*<&(Vn8{lrwsYn1&z_TSiL61{5iP?YX&Iwp4+ ze8C?;D52*pWjHPLk)ybl?hy`Ze@tMEGToUVYfm)zU(u5iav8W=piA2+^%O^g6XhO= z=Ab{#(g33qhMP+R=pT*RID?V7+O(GHBE>UdWcjD}pU`xPSot^N#*>a{Iod>U496Rw z_Ktp&bE>1=MnDfC9ivVAQ}(7Lh}QlF%)Dt=PSYkPpd{#k5+#V^`hVj@Hwj)6;<UsG zY4c1vpoRF{ega~20HuSFsh<w$6*wjqVqzgCwI8}xf;3Hp@)G*L`n59m!_&nalN~Ui zHk+C&I13|SAdyn$6?hFf$swYiFy-3mKnY|GOYTP;V?bK}A=NvrChH`ePzniWCEQ9o zd=(NMOB5Rl-uIPBCPWl{=tDg)Tb>7OEgQvUJD%&t!%w<1NoFU_RUSpzqkw5i!%Qmy zrhOivpxyo`Ep~n;ZPu6Gf<tcu{!-<6X?`<ds^U2uby#{6dgP#&*-v%F1WJ?|F(Bc# zvB+)HB3TQf!TEBB%W$7~aXSF16a($RKs&taeb;B<M&NeXgxdkPJ!K+|gd-Z<--CL( zAzT3SmKg4_ZaoOwwb_M6TqE7mB9$1PUxB5oNlG-StFUi{lq<{FYtk=e?A{17tf}+M z+~3w@0{d1<g`5QjLbcc*HJGq)CIDUqbnJ=H)nQhqIaR|f!D4ESs6kAJmAyg%EQ|-W z2HKw>evBq&U5T#C5(#=~TCb#a<#7ct)C>$D^Ff=|yVq`*U@wn3h2zc*Y_=&lGk*#f zaKT5eM|o$xM6us@;<BE3?<yMC<)^7mo26$YXXJ*^{B3~XK&^Z0w0WGuZ`DVGZdu%q zd&k&M`3N8#BR(<EETLvqAX<Fp@L>MoFKR_%qB5kCuHl`WK7^GKDfMj}Ka}af0J3!U zBEOp2WJ~nUvE$g6{A!p4bq-Ka=(D}qB1MvR=p($~W5(EjYy0cz=Y4vK$geK{M=$T2 zEz#+v<=^){<P(no=eToyO!n9>8{Q^ztTr?z5ju`iZLL_ZP2gS*sI>~NI}{L!ke+|! z?ty2n{4t=4ZRsf}Sz`ak;b(1>L^!_xv><DyEj4AEE#`Fcp|M7YOGn1mwA3cjKa<#Q zW4z)ql=G<%!}@)R>k}m6PEsNkW;BVuvoMb9kDTozY{caFbWhq-ww9iEQfw*BwzHD5 zfb=3$T9f|Rf{afjrJjcxq^C9oa3(!uDLR!#6hCECd^#H^7wDUi31>=c!oz;kktFVx z>Swy+oiRIbhkmk;(r0k-2U$1MoVWg5ADu8i?VUqZTUo|aw!}}f^XOh;oSusbXtlF0 zEMH%cm(YvM<hUhymfqCU^YbS4HsqD^y(sTHZ#HOM%&>@+f{4Wp9$b&|FZUKqK66-| zFRZupATvGgYu|l&n%?z!BYW58o$?~%9EsMHEt>o`E<k_bg}{ACZA2!*t$4M}hIW;e z;`C^6Qj~zk#4yp|+UP;w3xWAWwN3FV;jS(v%)H)+b_u>j038C^5N-Dng{OSFYh7`H z_KgWg*n`l%`I?$6C(!~mr;$4vd@za!MB)a`_+1!JqzbHLH=b5t4JkO1<#2bWJLBXo z1{n=z;s9+>i=Pal><m*bNAsMzOSLmzd?jKq=YkrlKn?#mh^K*u-Z$Vs(c3A}1|m-n zE~Afkq&9U*Y{7y|hs{wMTcv4=b#zJ!eQJ}=k=CRFa^i-`Q3DrOg*#ye7tQ~&*I-n2 z#fxVmpZgMqwVxtU0Ri7Q68>OlE+8B!>oL`G!muBwU5m%S*Zj!M%$iH9#SvlmU9)DI za}B1Wtrf^ZoH>5@ijOcO!)7VB;0NE>KB<i1M!*0z$^DmEBls1KcVsTFHy_2b&%Z?9 z>!Vfqjdv)|C@OniOwFsmANBc=8T#f5hKuF4aG6}Ks8ADuOw}TEW6r}kr#i3k!}40; zHi{GpGQZwr*Y-}7$Z2h<r_z|ulkNKP6QpE>yCfZV-nU95k>o=>!Yh$d$LHO|jx8`i z6Y-2O-8oxs85T&|6NQ1vsE|96wkU1d2&+5Xp}3>SOdX(M-kQo0#R>VKX6XYkw?LZn z(jWHjD^Kz!KuhAq$EYaEQutMxMdit-ZW&&XBt?nVYOXIe8szm+WJtY$Oq3C$bw<;m z^T1P=t~qCYrE*cOD9onM#96X><1M3m^_C3poTHffL}=OB!!4T$Eju=Zhll)B(E67# zE?d-;0?UKbW9*hgv_u>vCJy)(XISPYaz}lXDGoS^)B^9*m=wl--&}dJKO~>$VPrvO z{gGNRT5`NEHr@pdS5{9ooLF48q^v=IOoCD8;_^E(Y`rLdd@nJX$X|B4VFk)Z;!f8^ z+5N=z{EDv|XJ%ZeU$`itX(;ZWuEi^#UokVIZpng0ZF4^B)0^Ekx`#*Rh9&z}5XEkr zvIm*=HN^K^Y`oa`Lc`(}#4U>(Ov~GCADzZCjc*pCu~zX@*RmDpX0G?)%%u&Fy=`8h zIfSRr4UG#j>+3NAuenT(<m9<ZECCJm+4ZIdlxr1Vf$2~*_(DWsVz|ZiPUWo36MZzn zhy;W9JS4v0DpTrVT4%2Rq?a5=j)kJcGcH*`zzPrzJ|4N)ct^(9^(j!3$%huNoRv|( zq!rhosNHsV@5RQKVZH?2NQB|AyDCC~%lN76Xs|KD%5h60tRER%S9q&SjH1VEz20T@ zyCD}H;46t}aC@Xh$~B<8_q<Wd<a6CuUHp#TRaabVQ|uX*x6j`0m|vZ`s7TTqF!}|6 zp1zv5x}gDw)<s5IC~p7RnbotZilhX?M~iT5MP!KOkGV`Mn{DXFt*-i&sx<U@oc;NR z65qwfy(`idr8Qk_B#JNc^$s60U2I&uq#6>AA6}60m0VAh@9wQ%IXz?PlKHr%g>ANr zjr^5KuL*KpBZI6N$t*5cni|r$c|Oz1k#b64P+@MUzui}R<#=2zRAEf@iN1LB!cxOh zI&cqJzjQ%{2~_f_!>?a`nwPxD%+rBgB#t7AoAU>}rfO5Ax#~pUy(Af+<4^Q8#nV?W zuK78W3uiLcUO{>dccSk=9R1__rV~>4Fa`r)_`|or)~k7I=m6$yVgy<ED__5Qarwb- zKkH-7?P<-nX+I^rX0`2Yco_NsdI6GPa=ir>Z8h-y2$FvjxUHxOr4i{w3Xw`=5F-iP zM~vXMcQ;fM+ec<@g2hX$Jk}kPR@NPpnyl296S;V?GXxS~LPiC2tB-`-o9!ip!hO`9 z&*#I0FRhJ+6;q}J-G-amkNuo9^QcCgD@_7DjvdzHWuV8Ve#+Cn-VO5=wBu+1#TNG7 zx&GnT-4f->c#!a%wr8YUgi8;p{7N=U_{Rfp1zfS&b~X?l&k5h&-vv_&mztPry}7H$ zI=Wo==05(WE_Y*joO!FL5l2Z=(p4e)%8Py_{hBTJ9P)VVhkZ&vO~!F3k8(d>KAP7b zICGfvmr=!1mR2pk9mPh4?(#F|hzT_?pX%i#U)&8{#l$0O@rNkGsm0UKk7>kZ5;9IR z^Cl(4{4EOYGzY=J)*2<I40xxRji3y?NiF^<itP@wq+^#RTGisQ9)vsL(vdaCq!i1{ z9On{ef!!cnSZ}oJ?MC6N2i}A#rrObsRaDlvf5nX*r53kGQO+A+`+#n}R4s1qu|UDo zqr~_tFs-NEN4Zga&mX}D;}jl561kCFtmB+yaHTo#c0QgGYtMs;q?J1+Wi=m@EPErt z15xDfZOZ3N+$8Q~pQ`;N!2ZTxhlh=dXs~S<mmW+VDTipM)tON@zb?hO(5b9T05bwE zr{G8ohm6m5r#WbDjEQvrnvLP(24Y?>fT7#~GioGe^;^xL8*3o6ABlYuSQ^3A^cy%8 zxUu~OMgrCVv!Y56jB67hMXyTyGFo67%Cj+a&KEm8Xdi}U7q(y0r&gL&RqDz}a7~0- zNfZ;_UzvXLA#p_r@kZP$ycRV>w0Q|wJ9@^<B(=A|hna%14tKY46CEs!u+6}ZF{T_? zOccsPV0KHq_<Dbl!^k;JWLNepgqz5U7Z3Cw;K(uCB+8onh0{m^v7yK;d8~RkT40>X zk>ceDVJ==`h6)sdWb-i8P*b1=4@EJs5ysS*07Z~pl$apVfH=la5|kJt*?{XfRw-3+ zx3ps)C3Q+v0hzDr&6QJDNrrI{V<k%darl@I88b|oT_d;0i}n2@!6ZS6cS|Gp>rEEW z#_WEBaU_)XYUEpYobqOJaz6|)CA3P^MBNW5XRx!N`lU17e^%O5rzEupj~+AKsj7eK zbxQxOm0JXYQ1}aPe?qv`ouocCN#&p1i2V1}X*z3#iOXHWxD}&1pA?E`GychyT8LX+ zzeTw3UgW=Zrc0RYs1+tJ)$EMvRQe~oHJaI@*qyWOs!oNQ_KdWvc4l}qog?j<og+O; za0yS0`(aHs!MgWpZmLp(^<?=bK?CN!Gs{<4SvTQPbf&LZVO4-n)wvLSO7LkqJ>XM; zFQ)Sh_(pP!hbU&;${yOYSwhF@9(Rhik{`V~XN_U)W=Vg+c%SM1h6ieejFq)QTG=$+ zcpcK!3Yqt+bn&{)QpVoR5_R0S`r9=Z06O8qSNDB=|2}|DHE))T1>lx#mQ3KLKsXz_ z5Y7QN9m2WTg>YU03q>26H%ns*($$-#u>~v-5m~Nu?PlpFInmOc4u#!Zpzr_@%Qs5} zGGL(`PHn_+MY2D|iQ$S1lmM5$VzX2t!;ORRW@*%33}=R7M!Pmk`Q4kP@pAl>nK;jc z0u{hal;I~8xEIG*_*LRGQteT<5tBVCGDO9vw^{Ru070bMSy*{oSfuN`G>0f|xAmVT zJ#>3&!yOIkVX?(hs{*NA9Hu<h66<6N*ljH)+^4=NzM%_D;0oSQb0~XJ$_qBiTkr=p zsM-U^@Uja`qhRq@=pN_GnYwvShqKsD`CA&y;v;r@-7e?T&JsKApS>hY+)%cu?yt^| zZ%98;m)xjr{5hSfpV#PUydi)6uEwWtNZ(Zd*T#=;NIy}Zyj;8dT7I`SHhunFrmpE2 zHXS553yx@=|45?)Xi3f#Tsl=Z7pPm9P6b>I<Yb@`XnLfqtZt|CDLEF&v2%tg{TwL0 z0oKjOCX-8O_j9p#T&t%CFrfze228sE6OMJw#<ABh;X3~k_FbsCrtz1sL-qe9Y#DIj zsT*Lkh7rrm_$BbWz!J@JPrAEBKb9Y6##1o#Xq-9KO-DXWGl?5Gwywr$c4VZ}{vDVF zHe1~`r=faoI^&<SG+W$Y-(2^J6Q}OPspaq0#Wen$M%ULg{+w1`zwL&!&Gnz$koI1^ z+Zt!)?_r@qzKli{k!X~HPl0C{iCltnUpI1p+DDkx?$7$DwHo+m+%fKpjjCoH_?0EG zEm~M{);P(Qr=3*GCr-LW+sL%kG_oyEH!4~_Y4r9fUsble5K<?iPUY@zLb^mnr>4~x zViMJz--Osirc(p4yeg5EgH)#uf@~t)86&$yXRPd!kV++<>`O_Uh4kAWM2XvLg(@Ox zyRJ>qS%cJV&xe>~1TgAk2L4ep)f&@z0pf_(x#&WON>;Yw5Zn4NgqUQyHAzk-A(l=~ z$U4dQr6sG|=n(Z&eOat0dHZM)mBwv{a5&Br)7ns0S2hB7bZy#ZUF!=WY8)LRB!h^o zxd2CpP$+(TLUVl?Y9%`W;W(;Q3$At?4d~f%EG}dmCO|nZx%K-H8pnWNGfn~j#JCZy z0>tncJ4d)F55mYxXiQrP(W(YlQG#h?N|;tHgtR3X8CxRPrsVsOvIHa1lw@-PpgP$% zavU>+qmadf6jH5fa217^5W0|P)j&v9DA&3W=hPNrOl+Z+$8;46Ax+`QzEOn=4{8HK zCM#RN3ZcnNn=eF6R=2Toh-%Y;tC~!=)rvW)uR`=>q76gc4ZDOf7-E7D(oXn3#7;<P zGrHqEst^%Ug{UjBZSmM20RLrGi0r4@NvJG426!;$Tpy1ZsO6ZUS~6o4trXN&IVKr1 zXUz8@)fij@%@|yJY7C~C9;0s6?I7A;2%%gAVJ4Ss)nmTpVn`wvvzX0Q$XsJ`g^)5A z=hfumyj1S@Av#yx8oPsPXF33b1@RC~TZR}!Tj*9jW}k&@O_W`>RRJzx!7O7fLWr?o zG#bnIA<ClmXm>E}sC8e6EP^~ml+0whh-i($d5hQ~Tt)N{t|GEENsh-Dh$11x7M<%$ z<ILZO2=4okrf46hYfEXZ6}I0yqHTuobY`ZX&}Foh`a71!x;070>`d^tEz!2s3UeE) zgcGT$enM60pW_?_F>Ooi!j{A(DF%0KQYvqR@v3#PP1qR!X-b8E`?A@(GU0=S1iyyj z{I}oJrYjX5k5i?jLRqtxS^c~2(Y00x?~gEu8ypFS--ggbBm5eLs&zDUMAZSL?$K2U zTSq`gV`uA@*>8f__v-BRx#EU$3v@*$=$_2bcN@h=N-OFfuVd;r^Y!o4Q;SO%5A8DI z-o)ESuJ!hzInQ+~+=_N@AHC@|M7h0v>^|D9Sx)SD2r+KW4##q;UFE(FH6U`wz7Uwp znrR@hT-6ssMxyl*bO~Gvw}bIyUyPA%XIgJVN`NGd7~)(X!Cnd}jTb^ZYg`Yyt_HAJ zBh#*G1CX4)5Rrq$Rh>g{G#1tzvh5PYo$QOt$;pBJ6yusQ7Mha?sl&6%RPAhtjMNI1 zq#7he-MXes3q-yUBJwYWbot+enEX4re}+&tyPE($AqNnZt=%mXm#yV@><`h4p-C4L zxTP0krPD5ETY>(?3A<hlQCwe0!4a*AJ1&HDoEj4YO00#sKG`ZOZ_aN+RE?rly#wl1 zb19^&!5D}d7OO-}tx%0f$eq-(FN7R@A*I6?QaB*z9>C`KDnvSXx>eH-y6>O?M7fS? z1vKlh0FkZzr_{p%31j%=r%1HMckff)4!qV;P~UrqZZh{5T)2@HmsaIP;#4<Ws( zo!Gt+%*L?<gowvEE%2mP*x^iQuM{3jN%51)#CDs1=VA*CN42~#-&rZV1JOvy`EOgC z1fZ?=aKfX><5Oz<I~L<sowu?^cqb#nkF*YepdhAWdA0CpTAClJ?J(-q3U`12pO6K3 z&N8Ca4I=zRLV8LQSLJ`Magok0e3Y1#QtDq&AJ_U@5YUYyrlrIKmfIVx{=2u=R|)@> znqb@?B6e$AbHqnDEZeDmjS97b+?LJ=ARSQ$TGI#;Tv{bOle)2P4EUzoiFz1*ZFwNe zFgq%PIf;F=_((;0-TQT=^^exSTTd^pSUlqOb1BILUy%fT5b&!4I)w_%EnNl3SOo$f zTS2rZ!@x&nve3%_Oy)mBOeRjDGy6hp=7{Ye-szV@+H|5F#xnZr5SflsnRJYYPNy)A zbPAxfr6ew+^jsgC197E&A*Phst%h`-Ek*4lG%#6mDWoc4Axd4MX#XdKaWYdvV<aVQ z&}g~_2sa!CpMEiND?JxO%wnylnd{WWcw*Yig-uC`9(vbzDM`?6%)O_~zhh-KD0M=1 zvWF8sN&YD%2h_X5zi1iZ{+(_F#65xIc;L?r|8vV&_x(BwB0qpghyV6vqzAxjey1A( zD+LJPf7$&I{vbKouVU>00}xe15XpWuOS%!{d8Cx?DDywpKy6<Q{nNW~s#GIzztTUu zfo^$H7vE7TY=XFi4!hso0DX;pY?TZKgMWguMcaX!N|jm`Kon%-o`kebaT?E@6k@W* z&0qPQ`<3+PdE67#iV4bX-E9ugAXr>#<i%w)cu9iZBZ1mO`M0m6cPpT-Ob6?K?jE+4 z_Rm|Q=u~=;zom}x&s<9RciyY=KpCZ!|E@;0XN>qr4driJ4)WTd3{i2=X;x?f3&w#3 z4`ac!0UmydL43rD5y2F$93#6)d}M|W5Q0orsQ?|wU9}pJVe}YbsU4%lMPQT|^}j*; zf5M6}@)$J{aMc6q6$z7+Ax+#W@sY|^pc=S{6CmnCwBK!K1tp7%;_S4bp&@e_t_Kp7 z#3EdiCDoOsc1F-JgukW!PP<M}>ePZ#jfAJQjDObB_w58gzGJTy5-bT#k4l7VS|#}T z${Hb|;ZzeW{>(`DK#{O|GDK&T&0akjvU2)Ut0!v{)=+Bq8cKU=&56s;QM1<;&p2`U zS+jesO3<h@>e=hQuxqreP_DU2=9_yRtjo--@MkvRz6yCsnO<fUMl7>TM>@>UxOKDd zvkIH_#cGETSI?ig{Dhr@g&ZTOk{*>v*P{}9{Ps2awV$o^t~)O^U3gSV?ml&2u{Pm; z%&B~}PS~31zCT}k>V8<EnrFj0G_$N+NWRDYzziX2sR~xtnfK1SKk0!-rBN5soSI?N z8PTg0mEo8hR%T(CQ%ljP`!AUjc)fUa&;qu(0yvW*4l-by$0m{Q!r1<Uw;t^M>fyMH zavV0G-_oB5Tl5(2i*OOZVP65j4f+0ZJ#S8b(Qw}PuIJ6@UoxEcZJc+koH-r<hcX|! zo>?jH_@~}biESbG;ZY?(@nhF1cF8_Cl_vgrkT6Y>DPA8Yp;S!g+A!Yh$JG5vx>ld} zB-j&|Q<sGC;U=8=HdvaX!P}zDFcG)QL|7s2Re4J|`vxM4`A`mKrF;Yc6u2~&b8)}v zjtRsv*<vg++Q9_sXeLm=Vx}5kzdT!3X}y?#o#-6dX91#(GSQgSOduL>EJuT>K=e=} zG)b7bICTXOJ(Q{r^QPhCdYNh|LJm_s7`g?(G1YVa8`WP7{7kfXBo=m|M{+dx`|c!1 zFOca3GRF;*c{=Rm2yt}S0NljBT@eEmjeXlAQ`&PmClB7IBVhLew<wBt%*Wlpo|gtD zbi-cjwWDkmC?|t^<tlnOCNM(g&v@X^Ugbt^E9`V3<6bxvnC|3<i}r-~0x_5`yTVhT z(59|cyYymnI1Bu9yY%8yvX8$DypM-7FjZa40KgS)k){=l%2&hYb+iB<nBj*BDgw#B za{x;P5`Ta_>+gFVU~o2atGeK{!Cp8)7PXpI?VsC)#IK`wb<qI>L5N=It}a5%>qnNq z_1<-G?g6}4g~XRbrQ9-rdvw6y9%o8o(ZhJV%sta&$jX<g&IO`!WZx|C8N<XF)@zUj zO)vUF?iQ1QQi@mHzc)=HuDS!JJ4dBOi(r?-LNEafiUbp)SW=n5Ot7a))<{s}{*^h^ z8Ho(VVhAaMZGade68tfO1%nB!$JW=<NKp7=6CAA3azwzwssT?V*fWS_dkFW$K{_xK z%E38Df`2{u*CVp}*rg^Y>61V1o$3DGoWb7}!V;?i>KDkqB=F4%0SXqMj)(?*aPUC` z?nMbu5lP_tyOeYwj?+VN4-MiIg$D5b6oyK%L%RHD2?}Nkz_hE`9|`t_EyKR00F5Cc z!8Zr<xTO6+5{e`R4-aBt8g+v(5&iDnS!w*<?nw?CNDCeyM-9u$-~f)n)Jg-aU#Y?& zOmSeKiYo$oBSFg`_G!TPLYUak_#Y#ca1P=f@-dN6M}m_hYX4RePGUg}rmh$y8aA8# zN?_8~Fs6<;5DBuFU5izUz<QDez9j*&QISec5ts?#nM5R*5~=2@;52O{_(Qk~+7t75 zUU+|oGDMUn9ROp0fP}&phm|3<9F7Ffh1p-!5^RI+w(M+j^MLz!wt>GJY<C628YF_r zJQ)=AqwX0F+&Y*86~i33d*E7o-68vM?dQtAQQ(^?`><3xWM47(xB+NQ1<o}ULemEF zK%g+E?uYJflFTVFMDY8II3?8QnL##S0oIHHfGvZ>fl>Q&!FM4vYQIuu&7v@Hgak>F zx$*!&&xFuSVk$s24Ne^vj1NOe2d3^XhPdxSQ=y?PjFL+N#_j}Rm<l)}!8-;GT=9Wi z@Xf`{X8EZHiUANaa{6HIfdUQ#RSp_CT>R4^+>K+&842f6EnF_3dM>1_E`(k(5*#NB zP{nltQiyLwtDrZ+M+^3XQM=%X*|EPH9}K$2%hAKUe5?N&FOTrD7c;ZFA6wB4U8A<^ z!LWZ#=v7c~(gDo2NI2;LFcfyAK|8~EuL8EN1_<C7Y%vdXN*fFp`Axz*2^Sy0ay|M6 zvQ|ZNZ)jqa{g>_~uqUG9@EHg9+0i=wUN{q%1?GRf*w|0N_DF__>muAizI>-%tb;U* z2}}M$*@sD;C;M=_&ysz(-D{vCxm+=HYZgW?miOcF1Nh2DgNOS;CxNS94dimTd3z&e z)kDqO9LCLC!~-)+!nwneaB(1aKd$4kNG>QcZp(+Ew#9(p4Nw|`+z9K!qYex;%qm%V zqQQ?tI9v=3bkFs)dPu{VS|b`L1~=Y(NYm`cdKC^O?Joz;J>L%_&s5o)JlJ{^1C9bf zLr5dX?SSN=RK=ip2p5r54J{9dapp~KV{TH}y#u&0BEdh0aL<AzCKAjD69(K2({E^o zy^-2s>F5RNXo63FWUrBi?w)Wzn485<V7Qo{Dhtw`Cnft-Z1ax!$<9rw(~DcAFpRm7 zW-WoxMydA7-o-`^cl^H|_Q(8ahm>{FUVtMYewFOQ&9YqDYs`g_<T%W=W^ogtu-V|N z0s%(ijKNa5t9>8bSzYdoygB^jJB#j2C?mXZ;`Gy6aj%;7(@KS(RyAa#da>Hzt{gNt z1lwk-F|uC`Vjo849L$0Go&(Z{PLEo96)?fe1wD!eTf%Mqs9@ir-2HgQQG-KB4`)l; z;4Bp0=CkQ%?N^7$_%pm}D8uP+D`Yr0oS_7VAVZGSdOZWwxL(dOoTCRcJQp;A2@_M4 zf#^gyVm9eTAMor>JaP_A5YQ|*PvLB;!0RB&X`61V8fh<c+Nx9So17<{X?Cl_eQ&;> zXYaDIiy3+TnlMIv@wv6XJMSraym$VV(hqUYRid@(<HqgXl>4d1lYImUmYYUux6<us zJTJ9wQn;UTo|jr)SGo6vR7I@&W2a_^+O2Ui?W4HAIlK~m0hYz(pI3hyBFmM#KLb}; zuGo!3?Cuv+HM==K&oJuUBm6q;w;@eAhynX@NcE@tOI0EEK%!quSNj=t%<}iD=$%w2 zz5AsQwdmUru}IPOV(eET<szodE^MX22(m~CwjRx*V^v_lTy(BaRlhm~<GQ~z&aWf5 z0AeR_&xcgWs*vKI#uU!4WmKu<{&rYTZ09$qJGCt}!e*_qgWkO)6|ynqQ0R*x)f`nw zZU0S(x`o|M?ePG$|8<$E=U@rz3z6d$dtRvag*4-tJ-(1~{Pz&EFxBp7*#y6q((b7h zHf3l9m6r2AcYmp%Rj|)ddv;d;Hl)m?A<ex3Fk~wB>;MeBDwEk$BRsAJWSOcx?_Opa zaN=}8rlXU9(purMI6_e2<JANZN7?<m)+zQdyH(qNO8rep^*+6)%uf+uaJ>i6rzipa z&PRM9RSLCdhOk)&SX0z{-n+~!1*|D?emD*9S1K`AD*Y|%pC)KtP|@WAt)@EYJy7Qv zkYR>$&$d_qpHVJsVQ?dGejN*(5jH2mT8hD3C>0nD=Wo6LTpxA&cd0;tB7u7;q<Rk+ ze7mCa`Pi32<XucV7#_iZq`C`Nqr$J#{VD}l=EP-Y39gVG?{#kHXZUwL0z#7fa;#l= zhQ<_D_*sPtirbio>86JWq?r~Vu^pS!03}!9-~GV0*mB_s=3fcJ49_il2~r+ssO@oF z8kf)g4rGNK-$vj<ap6!fsoq8JD4D^wpXa3ut`|b=Xw8o8u`E#h1kn@wbx1iv%_-d~ z58HMT(zHABs<oZZhseZ>A!Q;kctefwgcg%(_df?lHa0P4`?IlNoB7H(o%K`*n-ySl z`3g+YU-?7qSDAhVRVyaybZ*@8tf$o9vU(pF=2V^<VWXA@P(VSh^Mmb90md43-3Sn& zo4HsST;;L*x32?mFxfMO{t#IRyC5K}--MKfOlQJ{r+2L#pALHaNP7_*jmDzyPF>Ad zdh)@WyB_%C1l#Rf2%|qbt?}t91MIXEV$sBf9{>}hKcuKpzy`9LfAE_SS;KTz2^&>_ zw1(<b>;d4KM8Arz@o(R7Fr-VJJH1wDc?foLQkgx~!qaMyjZ|unS+tgc?5EOul%2j1 zo2uS3R#z@4vg7<};-wJ#QkB2sK~ON@)sxy<VMHUlhYhLbjULd2Y6Zn4#UAT)Ur6WS znLTNKm74QwK&_bH%;l&(S)$brMa-kyjiR*_8e^WO9gC1jv{sVs*&<(_>?GTN11C{x zg}<(6{afy5VV_eg$6y$o5(AdDzdp$NpS*u47Y93^AKG>Qk_%F1kbL{&un8Iq2|9Kd z<s+>B8Jw+xY=0lN1<CfG(s61qmi0ezKMPx;m($Lq|2>xSKfboCp7eMc)6+faXCb_K z?IsAHX<U$|O8+F5^br2dtN*J$efh%l^z<(woot{MM}r@Q<)bXMa6I@AT@UbooPfJo zloP}4>%Jc*DutY4M|{^5)3wV<al2y0<>5k@u_(J@#icMoQnbf`Z)`XY59nby76fi* z_)#ta+_vyWE)m?FVHby25!=H=b27Nw!esLZaGwlQ%_-nM7ACn=a5wT{ic15}!(qBP z9oz@QOmhaf_k|VQNN`t&SuPXYUxgW%&cNBSFxzYZcWF3ZwAP$}P5)Y9tF}h)Y#1Yl zX$Y$_YJ{}muoA*sGKjVsp>5?5gcf3mF*QQUO0sQ?$YUgWh}t*?18rYKK_re##9&iM zh>Kf<W2m+hQVPU9It8F=aEt<CG9ZSksS)BKhOZfwdqOfCpZW#FK>_iLp%HD$9dx^L z{|?e7xMyRLRk<11a8IYogm@h0%b0ex`)vsBD8tDbcQIWijFA0W_d)RQD#r0KZq~!L zr!!?jk{s5#H-UeL8L4rqzS#tmrC2zLyE2R?Lf7t&5il)yuzzT0<k~593RVEo;QOIR zIps(=iTO@wBP=bIC>lH#a)D0^zBloPK|l|_*F!A$62bQ>9P=UqDd2<c2JmHo@5K<w z<$;c**3}A65~V`>YOFB}Af${d6;kC;TisDeX|2a8U(^+nrNRi=pIW~k{JSR1lC#vi zC?i!WB+ar4Emj<35UtjDZCm~6`n1LJoWh*OH678`pg<M@hneqm?=7(;o`5L^mR=%< z;)q*zS%E6XeYPZxIN%PJjD$m$B-|E(L+{G>1B5QVpGZG?D3K$K?_PC1SXCbPr6Tv{ z-j;rJ98wl(2Z#a2uh!gEt~m#%82&K2i6|sW{63->E_m=4yg<XVa0;HeuRQ(?q%X>b zGx13Khd?w|IJ*;Y`~i-vk>1DPp2OEZMk0RwgYOSKM4jy=ir?|Yiu$)DxcH`kWq^Tu z!-l-lu|zmJPk2MYxafDtFu+`$I+rL3z@<risL5brt76652dr>4!UB9gA4Mi)KGCN% z>yK@jgJ-fdXEiARrhEV{iotp+8az1+6Ay5DfctP34|l~5MT38XYigKDG}qR>&aoAi zoX7~7VX-+vULeJa^9EqY{es!~RU-vE?ZmqT-g|!?4CUtYQrC8>6M@MbwcjC`U5bNn zeZ;juqJLd0h-R{VlhB<|Vc#S)HB7c6L8CMYNb!WAR1ocx?Hb;$6-edN0!h>g_f0_U zPY6d8xmNhUohaG}CfiANeVz`6ZnQ&V2ZQ)mR`Chf^lEy?ISE}@!x2Sj2Pwu9x`0lZ za)9)2B$Q&Ta+YN8ApKjEIx&{i1ynj_2l#X;2Wo|*rKJBE-CdIXpBsh#xQ)UW1i#w8 zi(}g7OZJy_{zp{{B>R|JVF1oJJp^C7CC*+7Hshd$Zr>vOJ|$mJ=oA7{ZxJ4FJ|n1g z@7r&a=x3`Wd&c{AdI#D5jC~DYs}<HxB-$Snw8R$Sb!DoR5wt4s&0k~R2!ng6y_rMp zC;Nzxt$C~Mxx5$l^6W)*i(#_6rf#1z-~M{tMQ4Nka-F%c%wAmI&^Xz?wtinDWq-Z? zV&g*l<@y*<-4VlUn7Ce6d;l&rDZ5Wf^zlvH%dngn$xZfM^Hp#fZn-a2o;YLG{s+iK z7kv1nIbLoiaXiYK-b*b{xDw{yz5JdktM{XTRe=H)<y$r-+zTED=dxqP(fx3?qNpD& zOffGubG85?ty9aStedCXZ-pyFO9(jYe{=j>ZML+!ey@ou1@Vmrzl_`rI}MBqgi|@~ z=KX#Jk$yT!oTf;In<3MfTe#J!ve@z{R+J=+{!A)!;X4Qg<j}%YTntEa5xzQX1uJ1J z+*_gpS=7%3KJ_mJz7WA!60V}P*K%5?z2n0NvST@vYwvZLsO3;G7OF|j&zNZWaSmW( zZcq5)c)&^&*kQ#U$%p0fzt+Y8JD`P7n{^RnI3AcN!`&pqEgG)%5D~cOLO6DtV#Yb5 z!A0(0O&Y;Z1fn;BjTT$<oW^KS`A4j4WB)j$YwH}p??%l}a&FKymnji+ZO8%}E4E9> z183zoraNN-Gj(yGSqq)<@b7W5@PEdsfdBMHHI8r8;P^%@j&F>`@yqe%)xzbJ8}V>n zP6>f?Qsv$=%T+jWMGQ_{p@V<V3O!C+p$fRD1UMQ&xEDyuUsJ81xEYUYz;dT2+sKY5 zHKl^9lx#iShs>Pd0^x41p;|vptr1*Pz;A`UjDp7n#8RyrLEvkJ<1?+o97C;eViDEB zy95^12y?~&${L(p23M4}rda(H71Ktx{#imzM(7K4ZB(nW1AK^VQ|&fdsg4J&Io4Sz z`gWYZ%#WxiQ;2q=0}jT)u19<mCy>c7p0BY9Eo3?1nrD4U0XxvJH~U$9xzNs71-0I3 zoo8LjvuwM%qg?nh=~02!D%v$2PAmAJ<571&ucKw#6@pq}vMM?>ozMf3+17`xPo!wu zIX}b9Oo?q*29!#hpCUhk#REezZna0(sdZ~Sx`0v_>yGiz+x6}QPg}WFT)2^P#Jcrn zt(&=k^~`k}bgQ>P->Tg`{^er01)+6Q&`pg$NcsPZnAK;xwN{v|8l|ofbjzxQKR@`S zpir>^9n|73U}0vqLX1_E3)E8D|A7KF9#=P7Z|^fLsuez=?ZVu3`j%SZ^U8lByRc|o zrBE|*i$E)Dg|ij<jtZfC!ZPa_6)VQls_}ZhrA(O7F#cr-vb6tw_DO-FHVS{woY!Yc zUYIh&&k{MDzT*`Y>puZ~;+B=K2DZ@pmU7|grAwTi)GY$Tl=^An387=e!qiewU?ns` z^Ta2#6~dzvDuqX(gH$N91f=?aQ9;qSjmF_!nk<1-?9`ILciuG)i_E=N1nmEup&)8z z_Py381+A78XePz4)jlRD7+^OW+c`tpGG(r$<mrysoxgHs_!SBqA5GE2T7+d6)Wvvo zZD)WCmZjTbVwtvbfk;xtmI`zn)A3sc4Ft3R|2A)6KzeF~7VR>Y<~yJhW-5fwM$`)S zl|u=iWw3h)Ies%xtLWG&&^o$92`pqfbl@jCMuR*+O%!S%THWys5c?ezt0fZsluiSC zy{wk)SeUAAQFL&Ag3z=mJ7QW?9Xi<XojK-SZ(PU4lz4z5h>zhIQ6cis9UdoYOHcjC z$qYx65DPJlL`PL)dTO-{N<$pm;c1j18x_Nl>=5Mgs^tlO9aSSkD&;uO@{g9Mr`Y@i z`Ej4R2zki1^cARmVajbQsJ2o+39;HD#J3}lcZFw#vfY!Sg0m2qCS73~j33wbYjR=y zm=jjQF<X^K=O#T$IQ0cLnMoB)B-L((M+3*qPWG|4(9nk@?j_uTZ^#ZMtZ`+S7NVmG z4uZ4QbO%md41PG()$+u*6NWb$-IcfMiG}V3x27v=VI0wkKMcAz+-l)nQ-=nQO6bc! zM6)I3%?q6IZ>ipDwY>{>&VRZ-gwzi1$3ut`<}Qk(0Y0|NuObRz5aAVxFo^KOg9yxP zkWTC##FtLaq}~Rj23Q~nOAld$IZn}&NAdXa9YE}nAr_|I22(B!f&j#TL6GIU-p~5t zi-_W(fg`@?8+ZU=BGCId*rR_*<fiLHPLjvD!7wg30q#NL+%OMZg>kL{Kl|ywV%-nV zFL+=;;)h10S$ITRiNGHF?&bGkL~4>pq)H~~i?}pA9DP23hogVTpKF8C@h~2gn&d(0 zk23U|H*oVBp+E!-N+<dX%s{9a1}SA<kr|Is&%5)jqhO5Ei7Z&)@fg($W7M{{5Xz`T zFtK-CR&N15k!h7_RSI!z|B#zI>}C(U#$k8lu$wBo>D4;8F`ZVKUWI*s4J*VpDXmIb zmsUwQ;j2rj#EnGM)vJDoL>iK(9d%o7pA^#s=0N-y4?K>8*0}GzJ&z9s|2{}{-zmYl z#-6UZ@KS;!1>dcN)2XOHc|;)|8c>Kn*xBocRZJhaSHb-)#GM-;<hb+TUhP#LgV}AF zhO4c5u3P0y+Kx+)%VfBknp!Wr^@A0sB)v<?8C@<D+HN(oqLmE?&-SC6YI#vfPUOm} z@J;qi)haPv1!55{IQq8p7TETo4ccOjSULFpQP_AKU;9(^0rQrVeP|i!-U%nORYt4f zz>08CJ%Hyg446W<Ma^4Ga0ZN6Yc&*eXcu!J91Qg<#D@M{(8_D~s0q-@f`JiOi^_Q5 z+)>Lp4VP67chS2-!TE#cEiTh&BQhX&syQ6o+Hc+h1+O7to*pfp49HQD)qoNI1rSew z@4^1~8<2awGU84Die*{9VT(qT1{Go^<fxN3-eq#~z?%2wP?oZ2uu|UD)xuSdcc3W_ z!KV?o9&0*+XOgtLc0m%K1RJUajd&vjZtv~Hcda!CpI<?BX~o?#()8=rcNXsYXI#HD zieF*Uh(Gp-fNLa|$SJrzur*x(TuXP3l$Ri(;0OH}cMRbEI+EpiF>s)WbiWihP<*HD z&eA!yIi<u-#J4a9V-7qgmFVAGp%H%-!Ry?SHx&6u|EOVuKj|QVhiU7zV%pnSmPiLO zrmaVZwPL&+hU?+bg&>1gy!2M>m50{OFKdPy$jFEx&V!Cn4s~Wq4`E7OuMr=H%{q)j zEAnr?r4b{?Aj6tnka-~Z*B<4O+A9NVkZ~7;{t`WQNofrSAA1wO2|`p31W!jl1}+vH zNxR|ND_oT_BO_@b4zS{^0erU=uCVl8F(E@-)j;qgxOA?ETkAS;N@)HexB<IA6x=vq zFsb%K94{8Z0n(Hnl!f;guU&4%0!6|d8hn{`$nO3b6naK3cqzOwvSoN<ap;v1orpqp zl?0%@zaJOQ^jd$+j=!_&P9XQGC;>8PlZhgGYp=Ad`O$~BhW8A;qtMIOUfH?kwyHUm zeLk|a_DXL&3RvrARiUeU4WZys39b=vRKVImUEOPLwP6IUYd-abf*(q9Euo-s@nx`^ z`X{(B*9mv_I;D6$doUCnkkd&>pAi3+k8Fdz*{iPlsnwz2LYWkT!?-%vyiEI!Nr~>l zMI-rrVel1DB2V%8MZM8rAuN6IPE0f?3`T=lQJi|FEJ4)8!pw|;M_$J2z0hn;taz8C zxq!EfFzjcrnS$fyNW@e$_Och}^011}K-Y?fAl?OR2M3WM8vH4u5OoqOR>F5jLx}Xm zRi@YtSE5Y@xIoE@^JQT)-yn=PN!h~}l@MaIxJknB#m^(P@ah7W5AGXxliDc5z;iCF z_*E1NEnvmD(GQ`y27-Gc?wjtk^A9<8!+q%?716;<6v%9OyUmsePtCwX0Y$G!`hsmz ze8Fl5-Nm@!(%ITqq?CeH4uyM_LkXV>J~gP<f#Q>Wnj(cbS$@xn?R^-8tr3K+F_Ole z^*JjQ;#Ro{h+f_l@F~O(WVpEAjl4<lO@RABzjeXG6KydE2(cu@UdZQg2<?i2D_t)G z3kTL(0b$I3Jd9W^KY8f`G4RGk3~Yi;m+x+W2aMGfDDuBJt;qlKH1Wc1l37GOqwj*J z(cnwJ;cEkb0KP%^a2Y%<;)B7H@X$<Tkg%xXC8b-dkT`L0iGdLpMit`H(Bw+}g=jDU zZ8SvSRv0DpUuwmUehgCuFtbC*V7Z~EsO)9L(x_Ivz5hFS<OSzK;&+3d>;AbBI#c=O z#gU)%s`(PaI}p4ILU3mAOW#&mgrdPigTT^48ie8m>|0ad9+w4)5#ysqj)d@=!(laq z2?%!&he;qu8;Y&`z3)aI77pI&%N%}0LKS~}wiRTf7QQ>@!5ZU!@L=I-1@{T~wmfjp z+;gA2eE>$hQjg<RkdCo(2g<_RLadl3DaAE|tXL8W1x*83ZXbrwf__HyMv%F=67Ji% z2{-Ac+_al<vu=f3=^hAHMd8Y&=XK}}D6a;3fK-WSCUBUSBj8%kAlXcI;2ZdJz1r)V z|A?&l1HqPv*2CVQ`N&JPP{Zg7xPjo_2;EG}VWqbKG=DN^{w;d_!GYlC5vG}uQ&e7U zTLHJc8f$(iI6-2YS&zcaE5#{5|HOz=d}fdl?U4pYt1Y7!|HJDE*#Od3Uo$_g%w}?y zmCi21HPAyh(jSiui$K1^VU+WhkChAXd6n*O;NhkN@Gco}B*Kc%MsR+Ub3qz@K7g>0 za9e=s#W=D7N1ExZ?{yvm{a)OHPlSf(Ec7a6bk<(X+zoId`@EF6(N>GhD!1Crj72}L z-FW^|l6VRoKq<s(VjNL|jsTXky+dT29?t(6gnur4h;-Q9-B^2N?3%qmU{61SJMH{f z=#_sOew_`vPm|kc{qgKfM!Yb{WWVF1vyc0-r<-ShcEEXbY||A6yKHQ4x6La0Tv+ch zQL1*er`@K8Q39-#fHVbgej?+vihE$vss<kH^ApO`aF(^qucU^Ev5M&%RlHnRBxY_L zs^6dBaw%Q`;~ow7Vz>v}b;rB0+ZI(1&@ijRf{KOneTc_``ZP3Dlb7|VV6}0L5ET$I zOD5!TAY_Y7$U^TB8ADBRjes*QUNua>-(5olu&vSH??Z3eKJ^aO3M0#xk*x(}i)Ccv zhLJ&?bbpuYq`O|H!%$z`!bm)F4P$#Dhi<`RJwE(&C)~U^*t<7C;+#x5@7FP}prN9W zxYfmqS0&8C`B2yxxiB6?<ptA6-_C)WK6?XEU&(MY04_y_^A8h+h4q@Ku7Eg9%qqB! zhZ{;Gl2H7#D=S|kEnj$}!KXqz0aust;HiP9p(aKN!xZSp#tsiM%b*|oIt=r=$d5i{ z>)ybDDQ5#PxAtpcs<k^ZbeQWOVQcxcE6ZPd)0WkXEPwC)nQPl+0&{@C59LAD^E219 zfCnT&OU>qGl}Z_=Gh>*}53w4_qV+c)mEGhUYP%b2hR5=kOw+y{svm!4?W?hl*y^;p zC%zrh0*!<5YN}J6+ie*=YKTvF!iyP(X5USCR=g4Q*o#eZScXPmA(90Sglp2Bg!bWu z1U7HFM>k|IRi3WqV#MOezV#0Kz9zzemxAvGtYnOs3vs0!_$jN&uzsW+4^b@4f2|gR zQ+pfMTft`2&;$p^LetC_n+Ws1rcZqJFoY4%XZ&^GMd)SWq9D9)k>q&N{a+2)u(8Lw zsV>4yijPT3cnL^*{Usp9^#Pv|2ScjsGq58|2`xUer{gqPLjxo}p2LcpfCfdc@+dLo zGCVv(R*}H}wF6DZUV}0(%yZ9Ja#Ko-_|o8wReDFRl4sD}vcyuH=**ZweSr)Gb-1=; zj>4E<6a|frfr0p-b40D#eqLJSIxo#^F0MQ1)Ep%Yg8PRhBa1Wx2b>n}@Ksc6>47{p z6_|bqaSfb;{G^w@itJ}WvFC$gi|MFf3AkX2ymjdmzN34rV<Wsif=~b9L!{~QPy>q) zJJ<+bq+3X_3?`&gdMS?$AD9W`qET;clPt|K;?%*ipHwg%$t$q^XfA#QuEu6Kia5rd z%c&1CUD)byvQKH>Cf)4PK1Yg%Q178mDGyDvu%}}J`4l$Vrr0BVaNWQV_c|pDf&_vU z-wazVbngSuS}JI*7k;tqV8rhRGO!Rmfu*Kx38BTUiN{JJE8Jb}h=HXCGA6_9ulCB7 zHR;Y@%N2?dzYQCWF#!f`lW1!sI0+`))~cAmYzD=MIfJAbo<~VJ*$3Ah%y9trJkq*f zkxE?Kq`d%a9?+Y{1Mu?zs~?2)tKT$jlRkoDo5_$;ScSteA~lG{*7l;Crn`T*=Vm?< zyxb3KNW=aWF@cXD-}&%Buq5I-L}YD~&Xf)WGa}ohf0RDZJP;fSz6+%ffiDw$UlD|P zoAh-dBYrdp3ST_mHor8sdYg2SAP&YEC&B=rk)PrD^{`md&_&D~ctzT6{j+a_tXr5Z z0uMZy2j3O=>h6HowboC|*L%y>o8c9{P4KVwcEjECg>PwGy%Hlof|&kRLLIEj;hDFB zBdLyeyRAP`@%W&flS{5jca{!wF&qL$mAwLIh6sGme>L272ab{jk>G~@C>&P9;TW+o z%&*|o)szu$B)lQdn@ev{qyGM~>uOXoAJk$2sTGgl=L;T#$<EM2qVWC^r{28{zu$Ba zxz+G6*zbl<s78ZVWsE;RE6Rwy{mk&PuyUb{tKxq_)_fh=U;Z01I4L-c%(Bq^qtnEr zW?V6?66U;6S?$biQVhs{M=0GfbT}P9d<M^*4ay9-`XtCk-1Zpp>CiBXevH#^lk|mf za8!!I;{Y*448+911FYI=`$1CXQDOuy_a3`}M+^F6t}5^m<xPl}2jsH5NbN*uNj-ex zkui>sfK@{WNs&3XCU1thF0Ur9)?7!vTwFJ~&fL^cXK|nw1{y#+XkPC>T3m-)G^>j3 zih&8L^(P_$uOzOuVmeeT4O;POATa|(Jsn!{!4PFkt7Z@K2^SiicVr&E+B>Sa?(C-t z@G#gHUNDr&9SyuM111aF99KQLjy{ObqP_NuGn|ZgMY?u|bExA%1&csN>)`tXv^<u8 zeh^bE1ugL5ZOm7$=0B`@Z7TOPw+lZR)#>P*k?!0t%V6xEW8cHyu1gBk<~T2Pyr6P_ z3G(<DgyEhCR}WUb76*C`A4|aFs@i*A+He>k3}*o9ndu4kJg3{12g4T?|8&)S;Kt(v zL)@q<yw+e1&|r(9!C2tN<|;ns#|CJx%Wx)<GH$G%56|1)3hRSt!2{4{`-j^MiQ6|Z zqDy+Hc9Ijn%QOGc2Oa57*viSbiZdU5V0t2)(;Emz<e}aq7yg^8J67Z3EB-_AgTW7? zQBz}83@;b|hFtt&x%g;!6)Z`6e2HBH!B^xp{=cHk{EsMi1Il?-Llt^T#yDNZ_*cM4 zqFp|?R|kv!8C4ehKrmiP@@(Yt?R=~4U(x^2|L++#7+eMDp<9&+UL>O*FQfl0pr_C> z-$0Q5Hyi-FkSvbBY=FUF1>hUY4<js*5t?L#JRqdeG+!kwHtvSS#$EbUSZt)o$QiEc zUl`o_AJL}(`Vqs}85z4;#y%6UGe|!?73L>`R3_a+XqSMChfplBF}Dv%ESBgw@Zn+A z0CD5t!}I2O;9?8Fz2MG-bS&-AVJ@!X-iD#Pw*Rfl@%#IOl5BQyaaOU-HR1ZI>kWC; z)erCVPVgu=iob4fvBCs(Jhb@{xt{lVCvyG4J7pBBz~3qPfD_;9Cm-w&w#cz8*Whj2 zkEP^A>G}OQ=U&NRdVYT!h~2Dyur*k2_de%%un}8N@vV~{80u%8v2v3dqrs!#CwF}U zW>fw^F*4u8!Gco!A@Xc>Gb}yYU5YLS_I;DuzJS--6kTfj)+(&$&+o_a6Z>iL0$e(I zet!&@BPq|`*RiraDl6M5=|8pg>`2t~&~Rf|!PrF^*UOFZ6dzh8s*&Scl!MIW+}rqR zUS+?pi@S+~H(<<}aQfpAxOm-{$-V58=l))uT;x4+k?sGn$TTRjZn#K=T;xKz$lIVq z4T}Hvm{f-?P}l@DNfxQwWQ1$}Bf=kH446KQ@H}iBQ^pDzVICmVBH<gnPE72bJbhB5 z1z4;KfejhP7P37Nj!(ZCCM<B{guAsW8XOM-$f8fbffL?ga*Vu$h=qaPIDnTX6Ds@R z)b%yX-aeQo6<75KFNc#nMbnGjovTLh`>wjmPWCadZSW`P_dbSxPibThTB`9YloluM zEsv*J>e|17R6R18E34@KU;wNt<zC!SiBL(c7>xd>hI#-hc};7U$dw$@n%4$ai3+sp zo0&Y=m#?iK@wyS~2G*G;K^Jf@?*aEPd>_Gw*8q3|=N#4}JObb~=RY9rycB*u50k5( z3<rR(Y;3B$Ee-k0^riOx;N7x-kMCVso!~_I`g6qOgu2O21GkW7+&u2-l}6TmPc;Lb z^^$?5judCsH@I#~<hpJBk9AW+-4@9Wh&g~8aDm)_HmI8tk>A|poa!uweaiCkyTD*M zam_?o8ovM%PfCfd{kDwLGb$PWK!5Nr@|qA^HE&sy;{$*Krai%qUz`Rj1HAHC%(Zf~ z_!rrFh7GirO$olLbY}YxzA~7JlkHQXk>_2<F?9{?qs2eT(0Jt)G=;w<+btqRrP<5v z<PLnO5Z!dtn?D_@Zs7Bsp0xbBkB>6D&Py-5{vTs+0^ekj$BjQ%j;5ten-+RPnzYb1 z9H9j)f)bJvdVrv?u7F3{g8QTet)MH4nm|zts9Sk(xjaxj5L8InDiv!h;C*Z&pyiSx zLTsz}los;z%=?`rEx7-E_x-n@$@9!S^UVBao;iN=I}Nv(tmAnZfO;}epaKQRvQJ-x zOm#IxPaw;b16gWKUXG2*YJuG{W+cXiaSA`QFq5Zqrr3ts*123)fVq=%#rQ=WM%H+Y zDYY^+3jG^E@wzhjhkl7E^6QdT4!PoT00Xi`KPwfFj}XKB<E=x`g>Bv;*wcZ}z(jZj z#s?fY7|FLL-<^z&EBM}IY>;nHumghb5L9PiZKZLL>hh%?d}ARU@dWZ1Yexb}mEpt^ zL{0s^OMwxQiN-nD7;OP>jS#o=2gmS#Vyk_=_+D5L1fIiE5uywxyUOvU<1jzwc9D%e z3LE<X!aCH=i9#=x78z(AIRY`jm1yI$5@m`IxAl{EnN%g-&Bh9H&I{Dm5ztp5tx_V8 zRt>a9tQ}?@QFwUY4Vf}X_QdehH)1hk<R_--6gm5QE_YHR-!!KOCgHF^19D+&>Kd9& zp;E@!=lih74-P^Q__zAYt&zaA3FdVfM^^&4Bd9K*0OU9H1~n>glITeuz&4=RM}Qk1 z0#2-z@yt5I`fcXFeV@foU$=p}O-fbMBCGhMLy<<0Tl>%_9Z$-KyP0trZfaaMEJ4x{ zpLDRLcsf%RWnN?EcR-L*zGmUUHN{K`Cq@e12jd)xdAISObcD~+L|I!ahi<M3k2=&5 zZa(WxggjRCEZBg#AwgwrT^+q~-E%dIYK|hk1|pgy{j&GQyfwv~*huSLM-!cyY)P0W zs+kjwa_v~3XWD44iGqb>w&YN8qt}_)?Fq&-{NdsQpzwa;W!KR>EtEg>*Jykna7K@` zP)mrW91IK!M;{trZt`o_QMsT8X^Fi@c0Fg^U>;(Hf(Fbj%K4i0>&^7{Fw5xOV6JM& zS+7`E)xfSMqkNOUWL*wF57wfdYz3cPE_dtK9W=LN$@cq(`Y(Wjt?}#E?=g3Hc0LZC z1gkP!67K)|`0&dg>(}iu{|0i;@B8=sJ%x5qR3%TO`=-<#=EDjpgR(&bdi!}8S)+9< z=p^d8^E_90*}Idcr|h(K01c_YspbiUF)ba_jYU=Dm_^IMWlKUsF@jjX?+3ra>a5$( z7rCfWgcLqtrZo?PU{*IZy2DND^{|!uQWxtm!phiO$}s+<B25N1JTVr_!k}O+jBz%* ziA}N*qp|BTX(w(TEpOWGqQ<CB`VC5tVnU0z1Tpp`ZJ_ZTqTL;QWC;8Y+hOmt(N{f* za;{y$9Y3ZY&3H6oMbz(}FC=R2``*_~aTd{=Yh`dmbrAXwIi)_078z?(i=Ku?R}v5Q z23isaYkfKHb9D@#3`^YcZuOWUO<6$cX>bi&{6o>Q0gLQ9w5+*H9WWaQ>OFw}!>zvQ zB6@8P%=w<@hg{dQKYK|T`e5H?@ruHBWLuQ9(?)BLdx<IcAV4!#f~FJdYD(w#6$lSJ zqGyx*N@4ROHx~xJQ-_VxlC#=C|I&bBc^7Hc^{u)AhJzDv1SM9|gI|c!YbwGk>{f#f z^Hdn|Xo`&!3%l45|437t0jcbPyt2$`u*i=IICRv_H&3K>_JE*5jz8Y@5>$97!<AFX z*Fm84FmRa>e_aZJDY;8{@zF#F5jGqE6>IypRxep122z?mobH_WFa}$25FSS3J_}*J zo6!#|YU4mpu|s`v05rmflUr@BO}|D_Pa;rT*PElz*%6@<&fBPw*VT~1$^pwa(%X=X zT$H%e*6uZ82n3C3zr9E(Ts8c!E|{_G@c6u%+9BvJ`*k&m{aP0!ZKhzRV(1c1@BrMT zfiFm;*}?BNqBc78Zjg9@=^!+$GH@KUwuDQoh9}<BuS8LL+kX}^PZCBxHr!$9k9VDc zfE-o|J;`#7w7`iICE}4JSWiXmj-o1@yA^?<Dm)HmDCT*bHQYd5-U_CG21wq>!2c`M ze(H0o1J;>!^k#YmO;7%^rY}?8be^vs?5TOp&!8^Q7ab-t@@Y3K`u#0-CB_n2tcn_f zFI_mn7;-%f#=i+BSE-C#clmlHJRF>9VdyqHByQ+c!D0fXoCg0zi5}(*5gulHt6gKG zbR_5VutB@U+~PjZKT!Cwmw`8gz*Fb;noC{>ZIA_{6##*~=snNd3*YgwBo)=B`zz|G zk>7ajSm*rkGa$LqSK0RU%FOtNlfytJ%q9TIuLFo4S?lFMV+sOra@aKh8a!g4^7<~N z5x_Y`FKzgIuBX-h5)w2OEnZk&a{DtKppaXyYn7vO`ChH{THi1YbSU2)dkMjOfJp1; zyqn|`qMwL!ybMscyP0h@Fe1quJ<n$sPVw$}{Q2adHweaao*!G7?JZxw)hsr(*hdzr zobf2<jzBLuI<xmO<F)9?;I|lE&j6;xz0BK}>`+%g$<sRT+ska5mrTk@DU3wPw}wjo z9^YrHnQ@#r&&L-sIGGR&1^egweX77~^Y#*R02*jK5c91`d(ZRg!apvO;@jRMy{*7} znAU09TV8e$+kmR@+{NJ7`vmjxJc0+|3Ica06EPGa9bqDZ8DURg-w89Q+<P8(Of!r) zLFrrV_A&;1+Qe?yz--Pcqq5rFw@J#Wl;L-no#bw0c5Ru-fwvd#qB4HLRz^U$3P2s5 z-@Vs&krj=sHZTECdI^Zz0w7)v06(qs(tFHS7kam$^VYp(>l5mJwMU5WNUn?PAsKMq zfmL?xMMY5pI(0#)Q`f!MV*d-)8@BLav}zF`CfmT{xQeyU6#WA;Ye;Bj$uP4T6{c~K z*yJejZKrb_CGK?IQwM+`kFSlI<5o5iY5Z~SkJ{By6Wwk6<Ao12f7EV_>Vl_`NLFcZ zM3=>^H;GR=!>a@{C9ZZ(wwA1K284G?#bq0KL*3VWQe6?Bgww-vH*ftJ-}PM_ftKQ) zf}}E)@i$K!roqhSdyA4`s`So46QVFjGx{}Uu+0pc^7mlm4Hz-K45>H50Ei+x0cP(7 zNByv}8Y!l6a@9sVGnVd&(EVJT3)rGqnPEZ`nM<*Kax0lx`esOTrSeGmx^I_jN)>Q! zXUY2Wc1_-SX!<0%Zmik~-0Zib%yx^bjh_)(KiX{PymD(NW+g%WhU1f+a8J1oAjfX3 z1W`cvijt=|cdp-HK6m0RuWr4*EYZ0WpI~C)DX)e<#V@KGd)-Ubo&oqPK4LNxJOs>7 z;IQExx1QI5tj=3c@yyEvLuupF3n9s|J>2y&=1&la(-;@^UOF??Ez2C`a2Fp`?WHG$ zk7dx2NrkV&VL=cVT?fj-TKBLndJ1K@bP7uUMJQTO?SWX;Bt1{6V4vSI^MqHaQ(-VJ z?@^AVGTJ=lUM>(X>)}RTMFYYLSA}*eGJak`s74^O;(dgt7de;+vYnG{tfF>y(MI4H zYRFx%5YrACrw<nwz|c7(JPZ5sdVV`^IY^}k5I07ZRp2>q9}fQ>Sa-MYap~3z<`{fm zSfW=GH$8j$)%%CED_90n5OSKNyx;SMOJByiQYr{C_%4_(Cmg^h)y>92k_CPPK%emE zFuP^oGLcuIOod+f4AKrG(ftE*J{AnG9;jg{P~^(44A;aJ<ZcI0n^yPx{0H7?hRi0+ z07jja=+Tuit~jjMWUR+~$dJ}!NNWN^y3+Nt-9cWR2}oXcle;HS$X3ti-fi*=$Mt0? zP5}mH$$SVGf9!wOi^;|~v(|ZDvu~Hj*`7T9yEg`V$Tg&h&}6q;pDTI=Q#2^5Lg@1f zaCwq)-j#;J*+&d&nt;P2MA;tM29gY&DD1@4y3vD#6<cS>-1W#tZxcW~IwI_?jFY_$ z<K1V4FDug>-#ck-Qgf0>M}6)gphg4KLs(Y-Hn>xUH*0~T#<B9<L<p~?yQ1zTDGrFx z0rcNp=)VC8F=8a06)nAIq<H56tPV0ylE_89fwKNm*aVaFr1Yaw1{hJ<M$ANf=((PM zIO<4pmy}WWAzq2V@y36HqB(N=Q5YB@DOUmd=!yd~vXB17x)a=qmmosKpmFTBiTk&i z9i0#EHDDDPZne0~0Sg+;_I>aTP~(1=|IM3eCHixZNd%*xRJhq&FU>b@nbGcvflb~^ zz{s)QZgm(|M8hdpdEYNyQrv88V5kDlKDJ>wa&*qvOFj>lVMCfHYFosfZRP|B+oTzb zX2iIO+~D&w6r^vpG%ztNyV#5t!|M4~D?W?1UNUOwjYHapvQa{?R0V39)c3uYGF(L| z8OCXb%feru95r$n_8~>#B<~2ae1*Jtkva7l!oLyDAux9dA3m9FV8x|9iqI-o`!T`G zAMC!vrN`=bV?g9;Pe1)O7g&_G2*aKl;h0?XEJjVxELP>?v~`+cPLoD7Qps*@2IC1Y zi?5P58#B6L{a@};mFZmSmHWD#qA4t*S;bfL`>^CkF|w@KrmyXV>l5LSBn%TP4Ih2L zIMPj+G(&sf86b(u`~xx@qF0_pd%m`R?^R?mp06GD_?16+!;zG~9_~W|^X07PD?7cb zpse4w6l3j2H<1+EgS(@+>-VkocZMbe?P;_h@S3uY1=ekq0ma$l`MqA2mlZbg)#lxv ztKK0Y*;cZX{q<oQ&asH+gv0zcmz;mjbu>Pk`TlAC6`V-)c4cTlQ(AqoRKE|asNT*M zb^_g^wT8U&woY%tUF4i6ls%mh`;|WhjT|`aj7KAdZsE<R%N!fyi7xh<*7M6(x1L|& z_r1|TQHt8|A`aS|!Lvp<Z^we__x(L!+vgh63>RA6K~Y=+EJ2zFxNR_`sHZn3s-Bg? zw22Xf>-Maq(k4YJb@bcMO5vE_a|2}oG1dk)LV~O&bjt#5CxvOO(_0TQi=zC#yM?n= zagIp23V&)9otn5Fw$K`w)NU*|l2?{`)yvx1P)D%Egx^Tk?}}Qopb%3je&0mD(G@gC z6GXnk8!CwO@AOC*9C~VBR#7aLaW25D4jvi9#b($|A{LG)@pzZIj@zzx6f2v7Q!Ck* zEbyg6*5q(Myd7ziuIo|*ny{}cl~1h;=4k5w17G4bXmAN;*$KTpIs{~sw-mC%)bl*5 zz!n9&sB9G_z6z70=lR`cY|=J*d#R1vPJ8sl-+8%02p{cRbnQ4uK506_*Y*mG4A@VH zu-#Wq=(b|KQDVJw*W<8@PKRewmp^inL!Uf4I(p{Jdsb}Q_TdL@_QaJz$rTDqMX)#C z5(?HA(8mN}eU9VE$4cPn1ThXi`{84~JtqXVzW6WAE%wYh6`CJ>8rLu_LscbjDqqh` z5zGt*WM<*7US|9ySW+im*~-^nvPZi$7?f#+r@i!)_gqx^OXlTwMYs#=h;bINuL948 z7k&qtr$6TpI8mGUhnL`!dV6Bw5${CnZ#ZR-w|?#|FC&Ev1%42gDR*nF1P2X*@Qbi| zL(&cS==EjmTkLOn$((r6OKU;MZy<>6WOUSQ1cK1oa3x4B86IO=e3n}T&xUk|?jY8V zs7Q~&ZV5HifI*~aR%iWz)uYU%fghb#tPlhh8W{OYJOO`ymD3Donv@s|@j#ZE+`k1T zxhX5cqX!;D8GdmSvs{#xcy{>-<&Q=~gA4D?9(~z<@OZJMIHEjmXO_&pbG>B-^SuE* z^^unvMbL)t*ryEXo{RQW>kn{mkYR<|a5Zsp5D&Ufa=)_fVlmv#!FoHPwZOc5wI9ZD zE*4W6JK$xbWIcTY!S)W;SY|XG-2qC{3;m)uXuYkv|F`ST>~LI5rXC}ahk;f>s@nn6 z{bUj{=&=V8DiMgKoXx;_h`phpzps8@6EL}nAn+s_2^y+0WI$3ag-@v?i{7$c(QDu{ zt&4cQOKaUS^A6X$e7l#JdTHogiLa>+_VzTZ9^D;*&K(eTk8(3`r4Y28lj1)Q!C$f^ z#FN$3(}GX?t9RHSedXVG3WuJZmcgc{aE6QqPA?yWku-4=q@CHRvTn8`6$(yom~^c& zW~YhDun3vYjTx#qMeC=BVZ{(fP?aXLlxif}1H#hh=0@dWLiv48_-LR;Q{pqi*Uyb` zJg|D9J+(~NX<<~Bg~jLWCH4>VRhCqHrP&ON46oYBFY-FyFW7)nL6wtkubA!}Pwv;? z-g)Z=^W*M;w3WCcDGv^&+#gCQA56J7lu{B*aiFNXLP-k-GtCdB%pFWA3Z={(OfiR2 zZXQgT97>rum|_g2j2=uG6-v>EQj{Ca!vjgeum8w%L|c9?i?)=M(Kp7>Oy^_ERhERM z_Sv-POjTJD7pIoL#;YvFJS{qCmE|0dqul)_v2b-II%CG_y8|6GZS_EBP~r`^C*47b z#_Liu22)e7OHClDjzDI`b;+HfKF+{W{o8eY|4S&H63<+hdVDbTyX#Uv8%%AuF7<=K z)O~}g4ociLnEdKsG6iPqKuew;Om&2M^1e_{ZZQ8Xlu|sHvM`iFzGraQ%nqfHZxu|* z4yB~J7dVz?nlK6%Q@U-7DQ(l=O3QaF(J!IlSYW;}ycsxWpD9U};kdf?J+*%45;l-d zYjf-8Qj7^<u5*0j)H`P%mtv!7lw$_>_){r1mC}7G#itHw{_E^^?_cnAllt1zO<MAF z3w{?a*|x-S#Cyx^O9*EWPI+g|{uSXO!hbLFU9S~I=KWuaeAzn<Pp8dpM)=8l)9f~c z7KA2*AG}j$pGP={;70h)I~ny&cI3MO9q9uCd!t04YXo$UcysV1Hu~BV(yB(ZYN>Z@ ze!F*c{?7=_2yF;0-mLtS2u)rvp&SdADjUq5)beXRn^q{8pLR3t&f5fYC9V}_XSQIT z*7?L<M=)_(=OcTsC9l9e$r>Qw3})sBQ%m<|VKbr>%v=N$CC62cs|;5et{ko$t}L!B zt_-dWt~9PRuJ~*Srnz{>I0laKCb_GnStfe)1UH@L#9g&CA2Hx2T)KxzcS`f;u3f_M z+iTufD%`%&LYstb8#B_XO|X5#s4>$HI1}x2Wnsq`+HaM~kIz9jp0vHT%nbiT`+wP3 zLPyZr!yVz=+^I)8j>HPLZJOZ7mxmpv#XKf2D{*NA=_#`gA#t%vP9LMd@JL)ri&b=0 zCZ36ShLE@zDj?c+@AOuNWi9b_6rQPJKH?4&yfsam06|C^NZMRiwWKvJsN3k;C~2uJ zP*7mC1bLh8dLHQ=Ui_-Jn*VUP86+yLa6pRytj+ShL^VFe7w?~Qwf6}s?P06lnr=NS zJ>!fr&1romtkyi${fc>{XRKA;EaRWAlfg?eJ>F%OJT(7LTUbOGJl-9(&4X}Zgk`?1 zC+K&vQrX6Gverl$TrOEJcq70{L+KBnm2#VJM4`&FUYhJ`t&uD}@jGuAG85ym#djow zT%rfhG>J=!2)Ag8o4l`>zjhNA07b!;YU8F1b#P0`fEf(3rFfmfH_r_p`i=8gOJq#6 zrM$2_pU{%3oMZ^?FRPBAN9vYFTNYw>Av+G)TNW1M+cL#V6BjR7ylwHx#feK&+$n{^ z)aP@BU!RX~>|FZiCBWJpTmmxp{&@+Y8Ul*|MiEBR+#A3i7(ni+46}Rs{Z!^O46OM^ z8T`4H*-zK7Zf5j&&rx>Vags_KPSzxQFz|3UM`T!o8$%D14=$$W8zcDe6>FBLinV2g zy7O7TJ|c-r6Isq+OXH~RX%Wem-~L8v%k37CX3L9-!;k?yN`<X{6CC_hE}`@&&`4|l z@Wxwz_Yy8f5CgfPcHAJKEC`&pxy|=eS#t=eYL2Hf9X9*71lBRrJ)f}CjtfYpGrz4F z?GdC|YA8%)j&@V2mC}5wQkpeay<+Q<=;C7g^v(~b7Z)$MFTq9bsRxRSlkQJ)mD(+x z)V$K-I2?8|$_TfnxZi-L5O0-w+ZZ%uOhk(10-A!HXi8}@_!5r6wkXk-anMKGwuI85 zGK}#*0_`Ap6me)tiCdiT1t7lQJY=`nWxU36s9a-V>>A4&ghTg*+w!uw27q7*x3TwE z8JLD}-XfA%oT%lZ-D}DZmuW02ytjsIzcNOAY`MnbFc0p<8f3NbOu4?Zam9Ao_8};g zFS3DHeSeB4)@A8*mKND8ON(60QjMjM6tgsj!yX=^u@u?%NxW%~;u)K}CI0h>W1qCJ zpU>#ru>=Y_C1O1!fE_=30N9G3yoZ-smn|HgR5YWrc?nz%Tl5YKw`|QaYINhW0}U3@ zIgc7kuGBm#D-gF(85?XLkrc}Y8#Ves!(ubZ@pp4Lyk8$^xXnyu9O;PQ*jBk^W6gmE zlR4R9Zl%lwfLX=si$BIX@-dl93WO12ZD!Frc$^(zmw+bVa-_N}b~pj_aC&_)txd(? z8X(>0;)C##f~TOl3vGv9rAwy&4ID#I#6c&eGA?*#)}@1ugykq_rwyc&Vm(?&zCCei zzNC+Sh1pFg?F=OUlzpW<wJparFxfSh8PX^tMutN+hLd4n#91uTsJTtvutA2n2*;Iw zhF0rJaIv6|G67Ht$87-AaR5~#S@<N^26MWb(_iwM?Q~YRo6#{V*x~_@k^vI2sLJdn zAT@wCT2<$u1BcPNUaVIusBH$529|-$fQ{CVEM8*Mub{MFdFA@g{sh<v0Cuet<3U%r zI|LMA`V9aDOi=vNKZ8$ky=NW~0E+Z9fYP%oWB|%Y`pMz@zL#`V04_lFPzaEm>i|hF zzBd4f`#K;hTz0Jg^Nk2v_)yED-7+wIu3rf%W`?g~Kp>&@;l(}>ND{Ftr-gQ9?clEL zND3tl8%&A`r9=*<goRSza+^;o+peIGv-)FRW?2!x8U&rBI!^yB=vO_S>6qK(EI{_! zh$3}uMB$5kM3JU7jm-r^J&`B7WTNel4)vPl?^F73?l>}+6HdJlEg1i)8ltWpg4{!j zVp`LfT!H=P7~!`URKkt_ybprgqy05}Leb2G*j62v+mH;lv8K~BP2-6x(DC7AjM&Yv zSa~#-8255M(X!mOjf2!J_GW4xyfbLSo9)RL-2J{V{{i#4qpX(L+&QHnn=gE!>-9F! zK^h_;{G!z|rZg?E1q4Ff7&e=;8dgRvu+oNV>qyWB4HclKLV2;=27NUDzB=_S(M9jr zCbg!?Ga80l(?lwd9z7lQVus*=Y4DSrAS(NFczr9!=GZ8_PlynH-%Wn7+#t>%I5)@2 zG_9#@uCR6UsJWw2Zw6q9M9)Q{FCv3|0lh;F|D|G9gT9k0#VS&&v1xdH=jt4NXWt4- zYa?aqbQ(<}L#ZLIK-xjdAY}>aE&Cj+A;HbIR>KdVvk0PUVCJxqto4aGk^H1?rjzl= z0^~(Hjq7H5lUwB+y@?W^b3Qz4HowE1E~=F#oXny|ay<N3vT3amoM6&hm={^wVjh~O zq5>w~o{5lmM|6je#BVP%GKrtldMu1>TNidh((W@jT2-o9t*VGGVW11-+iIANh=@e? z%vMzxd0`f;B_0MoLabTBe|41U@){>QX14pN6ybc1Ura@IbG;cb7$NWGI`dHdY1?nq z&Bvog>O?joqWzs&47SOLE6S<AP^TqZHF8Pp%bBf8CCN{}oY(45a^FZc)BUaTh)Ya< z1O4(;epbT-OGGQjO|`wpJjNFyjl?Ec9<#m2{wS?AT}$~KvEPyABxx^^T%#?YBgVW) zXDcT#o9^<?X*GvMc87J!0M3DSChC6ViRcdNz1b5ra!%{_O2#27!YCL{f}yUkCP}+P z-W}ExY0qj6SHXlxcsOE3t*Y=Z&{gOiCkM#$(aL07to1u|WS%mzTiGS=R!a29qmr_5 zG<plqm4_iCc2we=XeH?#<)<A~as=*YwJOn@T;ttd($~a<VhrgtQrsL2a)-k}y?B@K z-nLc;(UN)InhYA!j$Wd@qOcOmh}PW%I`$--`L&+XWC?TT`QFB)9q>v|jc)fSnoE+S zkoI&SjcS@zN9$SblhQ;ZrGHWyO+5((eOdEB3BQ69K=fsRxpNV>5pod`kD*4veyEe) zKkUUYnw}t}zGT4f?3czlh8HsTGRtD*V~?BfSM87CyIn&An+2D1sD&9HU!*Ap->d6@ zOQBmUP1G8&vnyGHjog0%idUTn2DHY@wE7abf}_saUMv09tH9}PqH!Q66Nv5c4wTBm z!tJvDAG`#(Ti=8o;Fo4Q);ej|STu^fN2h04rFv-F17Uj@bAJ=cCBEUdm~Zhgqi)Pc zo(dV3`t;7`^mH*#mSUM9ax$5%lE;vg>BSK+E%zx~2?)moI8ZJ)Y=yHripu!jvkB!Z z4I|wda~SJEo=F92vEraj>#)kV`+cS0Hc$6V!3x(n?gsZ1p6zVZL$rTf&ftCHxY!1D zsy5)lx3w<_F7bdz0q_aNon9s*E>uNIgL*c=q4w~)vf&Lupc>gdHiCgF8_w~hq5Hh# zm%KY;f^n@kHub1CIo0E3(jCw<dz>7+&_e_Xua+iKFDM#olpZ<*?hi7icxabypto>F zMqg2MhEaI@l@at<;iXqH9J4ccZD+GqE9O!0789hyGi>BDj4__V^7nbDXhMS}MbjCd z)}YuiWu8oz&PBR=#&CKJcY@Z_S^{AOsbDTW1}FY>W+YlV7u`4)Pi*v<%-NFxl*;qx z`W&P}R0pLj(h1j^f6k^W(UzwavG=AFRo-jh4|lNoou%xuBzeMd%l+Z|llUIjKNZOh zI+10#?87ZgYHVR5#-B+V7)@L10033%J%^4x;S~n+YM^7&@1y!!LAkS}1cqqvt0?p@ zqRlT247Z4BZwVK780i~@VXvl#U;CVm!pv81NVvV92-3i*t={ju__5z7Ld=ugj}|t+ z`t|TT`v_g4enMM$y7fM*rqgNpi=+-$Hk`My;?-`!`Py*DB#0ImU8Jw;Cy;?04x|cr z4$q2byT=pDe35A*mDXceDZZ-NG=umj9Mwdnrj1ltzo=Ooh>vNC`u09+)MruOMt%0e zuPpTxf|lR>Yb3>rH<7bg#=n7B!1*C2Mg4@*G8%}679^zEeW>Lg@y`AuUienB9Bzrm z!QrOnN@=Qgr*ylvQZi9Zi^($z&t3(d|2V>9Or_-19hRQaHF(KLQ`ZrobL&~0Y3e6X z0Q+hmsj`DeL%;^Jux4kL63PsCpy(I=wKGjUD-iMbVOk*Zk#6DFo!J~K9_kZ@zkVl^ z-6K4Pi@8TQ`TBh3aF1Yo!^*tUBdmNQoij}x?-X8rBSG!x9aEROO3QPXkC<6;VW05T z8)eM0USZOkrYT>-It5|4%K3F5;2I$baS;YJsSK02d^M@i1u`xrE?xbDq|DV~I1SMs zk$NYv;v2nB3wz&8U^n+R3SYmOLgx!DZ;oI-=n+(J=^RUXX_jiA7%1SLUNbx7I4SDh z-ck5Kl!~jCUs0EH+qIyBo5WuOxn`jn&B=0JkG;6uwn^%oK;zk(H54?K)=HhRlsL9W z$Ir8~I4#U8CZ*-{QZm)?J^Tp;bDZ?umf&+B5%Uy*4EkPS-&;fH-MNNNB_%9crnMgK zsAP{w7~Y~k(5qp+hq;{N<-9sIST8B}ere8C$9O<kTEeqi)_`$5ZA}|F)M?s^^#P~c z^M!<621jCV0G>|gydXU8o~OB?fp+%wkaCP&+Tu|>1-l!%$7o<qQ1%4jnh_HQ;0(R@ zuO3RF2(&;MY9Umn0}Xhqhn7?Aacf9vul5{bB98B{(xc>8V(g{-!8ibxx+VmICiucX zdW5E3+Jxb2s4VB@q&3H+-UpdZCk!>viVwjGj}fBZ);N@F%6Xt#E6Q!bm#NUpclJ!D zf^Zz`4)(M&)YEf%%nH?UJ%1Np9_s7QNe<p%nP&?N;8=2lqx0YIDRo9GhS+pg{Cjtr zp6yZ0{86gT{-Q$_Z^^5_NLn$r=d~>ClVkuG`QQMU*7@;!-1bw7lH>PuKi#tc<8O2i ze27P_wk8SRzMYh}(i4sDsVR77hVq1(BUCBM%rrkQ&p)o!ZL=ka%BU!}QvU^*h<g6* zg7~HE6=NyeHd9k&-p1e8L^^y_w{Y9;3Cy%^p=!4=dV@Dc%!sP>JdG0R6EWP|!k4>K z9VffF=3`QoE-~*2eix8~l=wr}Chtn*l6#`Ls$<pijzEo~ml}7;b4+?Bo3MT+lLniA z@<wy{0X<l)HNRn-jS*|Q&Vc~&v}a(>?e1RfC9O2IZ+G6)y}ly>s;jK{Xg6u86TX$* zbZU9I3cP2!o4Kq9ZLGZXYe}glg$(ih*b=SR<Q-g0<OAfM^Go%01I0R^MkL$Hi0ixJ z(GkfFN<H2(#*1p)t3&rD+?zu8OjNX+_!nlx>i*4ef<oh5MVNgK+195KWyI&Ym_SxN zA1^wi<U*eN#}-ZYHnXW|CtRehTDoOMM#C2D<;r$e$zqDIZG{^6MpMEo-uA6_l6PIr z^cka$3g+-8Iu&NY#3<^hG$CU(_$)MY7<Wm{C@E~!QrWhxC~K=#ze>J^nkm#R9nrn6 zgN1tf!KGm+ya?@`vWyg6ls9FG+bfuVJi%>OwbQCaN=`_-A-r81UUq?erZHWPz%{*V z_XT0gJH`>OT~Hb4&ryw^KL=zboRch~0i-3c@WgP|P`q0>`%XgKPw&F6cSk&=k7)yo zrMIib?|Vxa@~(d93%&FW%Jwv6Si3gt$OU?QT8`Fu?1GU0ZnA?BKZ041wbDnNx}FhF z_et3Hx^ViesJ){shD)epEZa&5xADcYTZU6@u_h|*UuN0SY2z6S+qRlrXcN6$yGh2j zJt<qp!;C{)oaqwYrnC!6DrVBD4BseGaiC*iC+Xw_fJ>DM#q*X~Ksm91jyTV;q+({p zOr}tSN6vYgVw^^m%<Z{_>e{3B=gS}s3d&oA0jP_}(sX7zgcFY1#}}Ucef+}b%Y?E` zWds$VbL5w*ZxqUpbWpK}JHBB{EegcR8%*YbOWsGNOBc&NxI~rd+-#=Sjb|$9(%&9U zX?~s$V;u7vzLz?+8~Nb{^BWFzu-P$Dw@Nyy)D>a)8kH%Vzqd1D1jA*eyOoBa`7kR4 z3h>$A;~t$?{`93c7as0VvZOKz)p#$ZKdLHv_|j94E-L@qr6(Uf+#xTea}<}<c=~x6 zazEO8>GMa2q53mkHvg2DiePT1Vkv6!EGTMFX`K|6_F$2+7RH{1A$yaUXYSsgwO36$ z<`z_ztT!L#69Qb3_2xMDC*{hVg0NFcx`)jvC|D1x6@(YF-Yj>|M2ro^B0XwDcyknt z$(*|`|5W6-)1x%}yJ?fO4oplxgNcXDs7ecT9T6RH%ymW$za+3}X>5X?f3uwJl#+Ma zoB93i&im(kYOgq>@;ubon;`ut&&WS9j2C{`SLS%g8-=o8aaVey`RSd`Tcd3sdGD%w zzukEc(=d>dX&uIo>U2JQz#9iX*1M2drnHomGSVh0monl0c4C$_1^8u^5sX*EI=CE< z1TybLT*3GGc6Sk|VQSgXR3mc}Os&eu1Wqk=Myw-@n}{s2nEm8IhnL`8>wqdBk)AOg zX&IjLx>V*ofA8zka^ve#h47<mx?>xoI9AF7U5^S-AF+dk+s^Y*hS?|hqOIsy;*)qQ zI`&?~*idY`=U-BpQ3sC0_BuVk$ex4+@NFlNkXQxtF{EaKXst71Ii-S164l<n+J}jZ zBHUei9}LANMVFM`OUj_<Oxa!opo~9w`+Ot1oJqUPo}=Z-{|3X~@B2$XimGq}baLEi z#Fg{|zM0nURT%P5kOEQx1ZDWhU1ZmYj55(JwAQ3Kpo}Cjh8x$0>X_1j!p}*h@Z(4M z<fDPYhmpdajo#pk*=|x;$$i^vScB%o`Erv%eFA2Er-YXT((mO$U|y^8XU}pkiEXc; z4Pkg=iYr@Urc7CjG?lUBUS`TguV&?H;racVF)szGK6%uh+~occpuB+iljdnxXYDOZ zp4M5g7u{sEh+3d9&ls)3nf;kE3WlDP!uY!qz<n(3?<eODOqD)g$$>uK!UM!;Sf}sh z{$$J=tQPR$G_TA8bbB5a9O`$fIr#j!{!}~<-dFXH9K2uCZwTDWi?)}YVr0i<MU@@O zDh?$+)X(Mjkh)L?F}`QKo4Fxk;^2$-_TM;oZ|k2HxaW!%En6gGj<b0E_I@QO_yo|r zyM>zCN%Ye~ORb)MK^XG>7`jZD@_ssVLzhtU{z}>@oO<8R_4^7XA^(Go^l9PL2h-Ae zeRKSmfEM=o{tcHzvefz7i%WWa=lbVsiDE<r45o!Q2sa-Xn$%K9HLL`My;4Dr=)~dG zP^;0CGUu%Hpm6_zbVqxy2}FX)u#wX3`4>!Ca3^F}s2Q)re8qY1K^`=&<zzUGheNM} zwtnAFy|eRPhYJCZ7f)7D0?tELSQ5*Jqnq9@0*4<cQ9=<=@;T}WN-d#AiYFq)lB=<u zQ*4GF-Y~e>;=*pU=I1HIvorkA4Z*H@pq-2Q6ciGbr@(5q#-hMidMW*MYd+LBB;SI* zoAZ82Ix9`B2HQlzfhIJwZnP^P{+pr@>;1y4x<togz1F<9+LVfmUIGI#6f)ZS%)Z1T ztuE5a?xIo$B;pj}w|<y94+lK7Hc#?ti5)4lC5wmMsXbAsdJ(GTQVlk(Rq{pmX?5(| zMyo<}__dH_l|bqy3JU|WaI_n0?|l*bD#Aky8B)2xeVEPl`o{MQH-7jNZr-aGk`Ee( z^!nbc2aT?1VJRivC@eTQ&e7@H+EwAA^yc9sj4={D!k?*ZpmWxM8K*T27(^lC<TdEu zDQjgA!%|@EIJ&ehnN9{1lV1}p3$3yqs<=in7)ibtG1f?&40fp&GUyPF^ZS|ux_X?I zaZ_n%SN&v2X~}LxVGFuw9KAZ-SwM+k#}HC5q!6lhMA3$QT2x5HS;7J`;tFvsRE*U~ zflQ|`<D+qLlCQCcu&csCD*55)i~?cZM`IkLpkhR&j?5oWGV1g_7O;rJxdolBK!<w2 z?Ivyuh)yl--lXgFQfWzZh`2DlOCgTxr_$;7U{9!vp2&@{;$ul382#FvYwh&)Nir*e zLGs<#LzH`2_e;9tUUgctmm1xJ`X3-=jzOWX=)UrjFEt?0N4^xC><;oDs?p3>(N`bb zEqqu%U;7z`0X3HxN({mTQa#KDBJEbv-f+J#_T#af<deDu+s6~acS3&!2lsxz?>XU> zkB8BB3m<%(Laz{xe_Y@gTl74*2XOQuQt%K$GlpA!`1Rk@KKu2Paa3lP=M+}p8J<yd zrt*0QM}l=nw5K`uZBVL8E9mqc=+e(NEZu+QQAg~Fu`vI_?qW76#JIlfR0b_x)|~-$ z0lhU_M{T;|%j*fI+PY294vx#e;!Ek7%E!*l=fr88>@IB{J%LUo_mXc;_f*iQKl}9` z(_k<MeG(P=U@ZFNXtz__>5U%jmz4_2_#nb#2>(X^IEAi;)H$E^1}huhO{$N`XWk|t z+#doVx*H=d8|=P-zRy7Eq{si+tp=@w@c5jeGBrS1?h)*bsgC0ZXehz%G}CTM{5K4E z(>XAtww<0r!>Cw5)rexP>RQ>X63}-P4EQ~s9ekLp(tOoT)PpD`p<5|tD`pvZEnjJ7 zJX9*^DSkRN1N8f!{aRaY{THb72*U6}Wv!;XNpZAv#Idc45ywulBaUrx;Aa8CNd^&w z1qg`<O*HNi5)m|_^B#3kbb+!V!Aj}W7`HW2R6!ST7azhEgbsvugg+2|M`%N6LGU76 zKsfKE9;0qwh{0BZa38{1bm~O}$M5*Lf<PlN93dV-k1!5lDnbFmEeMo2{XiA)36sPb zs?0r}ikY1Cf%h@In2Grl3t*_vAH4n^y0(O_7ed!_q3fB@^@RUTLW2;(52Z#J@_}(T zE3H4lsgrQvP}ca}{^<M|6#8c9`daAva_G7(bp2=Ox>3*^o)dYh#?q=*uTfW0jF`g+ z6^9cYR9aX8EYB^8ljtGvfas50NlSD%QN=mqrzc>qab#489wPJ3D~Y9sM^|WSX*frq zw{0^=onBu<QfR9j>+uKvj5=->L2_CpvQLq*LFcr3zrmM{D-vrH*S%8pp*gYX&UGiM zUNsLrdO`V%g}!6tp(~CD&Pt|6c03pv9N`$e+V*L*>Xu}Qo@<0SMY`n;O9bxe?2R>> z&55hI?-Q#MS1(*gXD?hW*53)B)NB2I0vuUNp;lIu2s^r?h2kT_#*?S8s|!C|RD%&b z89(@9b41gv;YAUJCyEno3W(R7C^_81f&8^jyUn&uc=yOK2LTxG%_Ug-*??hF8qIs^ zW0Fql7y-@@<WI9ElSMjJXHCveuITf*VHGAR9~Sccv{>z@b=uUS`F*}mduXgq&IjUf z-_WD8#?I2Fs&QY}qv!txZBdXD!J={&N8!zB{y^I8NYn)ikR#(8J@vn;O;n%|4)K=` zs_Q|&Hd67-ZLMU~DVf_y(?|!XYvr@_m}4@x()BOMkZUo+-u7#GG7pWy3!hGQC~>fT zMtc-UnOet!FiK-4D@1)at%sFc(4!);VlYCVZz_yWIZMMsv5DPeH5y>3(qKMZ^@m+2 z-W@pe01jL+*HKP!EFjJ3fxLPrX`IX&jkvZ)?I>CtmavkszG_yusWGvzp+Qy55uFvu z6}k1u+!0o=C``F>3s7@qes~4!jb+6*#9Kkf&_WhBRDnGLjYXjGu@M-2-<9P1lJtRl z@?2f(mXgiWMJKIawZY7yQzQEvw7&E~a@MOL4{zhF_pN%)EXO0dkFdxo;(iy;EAV^> zlsl0JE`vIH4J$RGEh-%Oe(x<`sWK?t;V>6fUZu5mte{0$Il>$G;8uBi6ikcllCDD7 z6P`uI$0P>wLxh$}YRg<jImCoM`zlgVTwiA3s)8Q2eH8^u)s!{^OCdps2;8i0=PJ-a zZSd~eyK`0XDi#v5l-L5Rj_A-88CLz8*LaeCaRnu&^%<?0paDdVNPtt1P_Pb){Wl;L zBvlU6QsO$e?t<3DRrfKhBOl{D)$T5NM3Hr=>CHzJW80d-Qt1jVb$SJps(l0>B_iPg zf2wTM9I(y6sZ?&MsFc{o1rMBi#4I|Qtq-I=dUE-R2SzNfl)|cC!Ec1~)kk+qL)42O z-MZ%Vib_dceb0k0KUgVgoG(7~X$yTb0r~9}vVttfiYKM0#`{(n)=*+*4?%zSdPNLk zWo=ji1?x+5T`W=5e$40+q~7r?kSmghpic4DULa1_@?Px@<~9A#yb_EqM-{*wulQ3p zXWij)u)N@6A3JD1Qxn~^nhzpV4@#6?|DcvHUPZc;5}$y3KMA;+pWtesnvhC!F&<O} zMCI<oZq|B-i{T4hl+OGhg)$OW?X021JK;Doci^o6poDo%e31-;-RB<Phy6~gHVup8 z`k)0GPtZgbSkcq{zIPg^G4x4e!zGvuep7IGQXHE}cI1BizvO=Ry4;ohJK)%Lm)Uoe z@cG2mF?u>b+*vVmOC(H5gziV%n1J>L+=Yx(L5gv1w#Aji=eT57hAy9sS|E|F+cJ}$ zq#P@2uaaE?$MA?lN@k?`3QQvjqxbq37ya)S|L^bF|7V5&@t)%vq}%_0zDPJ&18+@n zow6GO?fcKx{XtrX$}q*zIJW4hR6XjpD#poP`Q8Sa719()i*@7@giq$Vl*xKx^jy9M zT}tWWtwczHWa>qiDr=RPV9I(J7xmwq(bYtTDo7u|=EGOYtQweFkFd^hv!abLWhFuB ze*`<uGoBP4C_Bbew30R?cs5iq&{;03BEml~HPHQYRc1j<mLsDfCNSe4g?|>Q9?Ljz z%2W)$qJ9QS0jY)#yvP|Y<CPcj%J71Wtc->X-34e3U-ZNeR?>`0QVnO2S7tcv*#H#) zVqCKlZ^RUA#2XuR-$0aq1WOyfMjnOXtEMX5Jd1Kpw<G?0X|9gSI^^ESQ&|me_R7!| zQ}P<6<m~F1pJG+~mzVTHD|+D&f)RmWfGX?jmp83AD&;c-RJtF|%j>yVvJ`W8#^saL zt61>Jenip()<3R$FE8-k1>|rHym+lpQ{dr`f!BkDUVAn*@a)UMXJMoVGHUP%Ri2|# ze6BoyCyc7kGtZmOKAfT_^CS2%Nh2m;^USTCJWFQP2e5p*+jKPpmU?h(m%}l5n?0+H zj0N~a%Y_fL3~XAUC(Y^P5Y{b!UCPRSUCPiIR)VXXU5?)|*?aIiHroVh(YWkARj*6N z>^A&nXB*bNE=|aWnLz#P(j;72&FfNb_OHC(cRF;Kp|rX6#QxE-eg`?-_&hu!-vu7F zdv@Xei@<#w^hUL|Bhu7tgZ+qP$}Y!mUiKdR=4W$PzArr@Ro@^l!tW&VyJ=E3K-n^h z49|ZDK3f<QhP{(=s%uq17f9oVfKyFn&vR*0piR)NO_}593|k(+J5uGM`eX9FNLP_> z9DIRnr_In3)!PQ1<<_carSs&d7fuS(?XDYApiO~CII!f-b&+G(7k(;T)vQD+cv{ek zyy78ubT^eDdI+B}R7Ww!Q?Y}IP-H-I3FA>-#Pm=Tj!ARP&zPZ{-viX=%Fqf_tL+W6 zhUAMzJ|)SQO@?h&U8)Q7dZz9XI$QTZl@94Sho!kO*!BaBkk2|MRSzqwN{shsZEnEK zFQv5c35Cw!b7QTw=y~CUXD0JPpP>8R2%63aNx1!c6K-CRgl*s79K-h5P+g@|pugxX zfc^KEdW6>R=Q>8z5mpk-x+SITD0nlJc-M6)+m-^os3XtN=npX^th7B4n+!V+sg!u3 z>lmH|I$dlG<@+ggJs-Mugs#8;$F;2vG)Z}_Y-QX*xzKPl)6oa_3C;lFDc9dpqb0UL zCicM$i+qd^3t(>j7R)}1;%-v{57IJy@YO(8vVm9_%x7PV4G+ZBwXr}<v`iudmHT`J zNK+5yfAmlJKkug;*S&t`PY)wukz84yri%v82E}D3H4rTe82`;7L6B~ylnsLP1Or*= z5NOn&-iPkzb!9IL#DYzD@<S${<-=WlKK(%s8(^%^dW=sXrNn0EV84U<Qoy#2iBi@x z+FrqNJc+Iowjcj1Jwxa?o=!h0B>XTYWj9K!s3-3v+4T_Z>rG{|D9@Ie1ZR6)DE(pD zkO#Y`z=TOcV0Vra_Wm%AzFj!`Ln>_(=pRQ#Z-fsmN=LdLjumgkZZAy!@yR>y!BQBU zPO!D}@rv5&>x`Ndt&FsW!A`~|Xt`;`HcCNnq<W~0)H+Iq-&53Hs-P-dMNf%Do;AqB zis@sgI-R9UoxwjLu_>4ShcK^cwc{v;MQk=P#I&e<%ghEZ``CuTlq94m^fGIscSBW9 z-Pcw6Iy7$l>?$_ERPy_7^ABkzMsG5$PN^S&e}~1C63tzA1q2v+$KQYxz<|8-5_g~P zgrC-5_O4r*J)6$VtT@wz(vrtBh6p!n_|fBn9OiVJ6BU3agSNwrws8N6ID^>7Wc=Z2 z@J<J_u+9A?I9Z*2nJbIIZu+W<&f4!GATb7z<PGl%dru4-`f8I~;<7>c3Yc10L@~PQ zQp7aj^a&k4m;Xc@^Lm0X^yEnT1L3BV;~Y1-*{l>dm35VrlgeaGM?47{sty^|CX36K zCs=1S#7>l5S@Vz|!Xd%Y!00k;MCcPVY3Zal_+C2RV*>>BRsC*nVU@0Kp`39i02}+U z_ZT{u<lm0*MBZ8=HH6+$-GbMC@f223S?_!9mWzQGKI^^cT_Aria9`KE+Z(=;tteV) zsVJ(lI5$*PI=`+ujLnEF22M~#b^(VR7$&a?x1O3@q_HwOb!}sdJf~6WOjW_sfZz8T zyyK9$N2t0az726QTL<D>Lvc=zcg9n29Z5icTKMBsoV+sdOo%vrS~j{tu2%@ZpWf_< zupYK)JXG3YBB(v@u#JX8k5T>Qc6tH?7LH}ZdQo=T>+RVrF}a&tZ-;RvaP=&~e40SM zlZs2nNxoJut%YX+c%EFdPn}N=mvj#Ktu)6qY3$IgK1u1}DpS<bv=CjaC<r|ND>7^_ z%bL`7wWy`8fNoGRlhqPBsc8sH1q+KRxK`K(vu3a`8otSt1)Ac4iU!J2qa0!3Ph&IJ zq48&=Sxz|TVCWpKZ4DD;xYg$K!1D9o2wSPtvkI+Y*j2*2Kczdq@I!P3o%JYe`H<_2 zexs$a#*{>CVr79CQ#~DrqkAEAG4-Zm4m{<@i~EXa&zJ;z)_67}nviP(PdRY*3ujF6 zOtI^6^qEpj>30_2k3K6c4&R<sw-a1ZHM_I;HT&=)jb&$X6l__LG^GNGMEp{?{p@h- zn?!mra8wIBIk9fIEwPxM2#Lc+ZBCsx!RGTO+OAxeBO5sqis|fNj(>SmkRt&(gvPUp zchNc+^<GI`p-MTp1letxy^?CnQ`2J-JZJ1#mXpP9iJF|qsgJGaakt=5hl*7_Vz5|R z*C4C~M;BaO$n%2&HJQ>H>rdPBS{ZZTttm;|6=7oY2<C!!{~gVD(!+*XRlsT^;GX=Q zPY}*gZRR-0#t2`Y({ke?9+@fper`s=2L8jko#xzz@Zuc8_15PUhubIE4|l|{dJFC! zp$%Vna_oAs5i#Vzm~8MS=h0LD)zi^=Q_&BwhQ_uY0ca6|<L6;<N5DyROB3SZE|U>V z;Q(_&?uWvjpNCJ`{3UR!yZmo?k4x$)vMa`WS!lkHBH7jmTsQDH9^_o%#o;B{fyy<( z>HrWuPLQ9UG;cX*)lKe!nqRL02fC2d&a@sen_D9oyjVQ&>Ngm!K>bJf{fcH>{e(GQ zQM(C}2hP7h?2XxBRv(2&V&Na>^_<p58-@4JH${Ebn*la0nel4O<Clb&etALXmed(& zPA=6p9j4}@;7yadqPCr)o&2d9jV0bxF;lqxLWbbHFn6}D=qXUJgSy`Hfq78Av(j2; zg!K+dVN<p#WH%qgX;27%%*J!VhIK^s9X5&X?eTrtqkn7%(#{9cdVHUN7Nr(aE+$Oq z^-Yr0uCV;e@Pk1}KG%ryeZKp;<V1ibWTI^0g71w>fvW9F5T3Yrd)Si=K`z;R;mpN! zhkB68^lb~5$6~OP*^A0=mv8Fv%>)@N(;AuI<Ga0ArS0>{x`<M{3h`TdV-W}I;7`=1 zKA!|Xph4SM0ZNmaxeaRZFfPBwDxclw`$zx2o~s>f&rph<aNp<|66Xl-3=k}H6DcD( zgfA{yGV3Sw)Lj8uzu$MxPq>rxC<sag_>&|?rL%}p$iXP7?OOeUeD-Ys|1>MeUr=oB z@%`R?OnT9nubW~yf-AYtv`#V6LeZ`{B1E0G%Rm?aK$gN?vjs=tKPl1BqlVe<Fj#$k zuiHj!6)sl>+|(#h>=1q7t}N@fQihWfU+RG{kMY4k!Br@@Do`*ZjM>GY(CY5oBAhoS zjK;er_C|nbf&tU1meu;vyKaX2l5KsLQb)sl?V;W~P+K%=d$>E*p`A)9T>5QG6sy#K z+Y)m)1NNZbX&!|_POtd3C2sAvEg9$Mh*iowy}lp{#!9kszio+sShu;`r}Ymn7?I!Y z``Djckb+O5mXh$h06xw}@9ObwmR9h&)+v@1wiQ@4Id+Au0|Hvk6&<#RO1pheNrk&8 zv98OJX(czSdI@CafEn?-LYxd5n1e>TJ1~$4w;}L7Ddsje#mpt2D;A+QA#f<0%a$=^ z6}39BW|)#ZevN$yuY-h`PF%rcS)PR;1Jt)HiL-Y>sYBN8{L3zLk~<!;c(=?Eh{n3( z5RDE!9OBj>rV7R6ZZ%?TC>HMd7R5o3*^<_2ddSlvvre$+(Yn!=JlmS$Lf#C|;T1TZ zP@^HyFag1YkcW^@n?gY1^AaEr1%Py12PMvmmR6ZQ`A?N6TvvG{shp@3AQv`^Qh@N6 zAP6&Bx!Bm|DCF%70V=wOAohDG*5Xznb}<zD*_~%Q1Yi%9vX1{Zw6_gHD>|3!Ixk{9 zlj+c@L<Xr<mXm~nul3b`0T-*U44My4(ql6Qz+D>x*KrNri2o<N%;G@j{$IM*SWCV+ z0hU=d@ck=--@lW}0T7m9sNvcOh(#>k5$cjycMPJ}MgZx`Ypo((IWPh^&un{Ir*lGH zt1K<g#w;o1*8nWz|M=zsz+wgg3-n@hs23gRMh#$_HxyO;2W*3&MgI@bNU!||XlZ$^ zPliA{6a?+R^jNiY6NJR3J3Nd&wa|$O$erfVA+4bd`1f(nNyqPwIXX8{LmCl!lH?wS zSbQjkd4pJVC^p0$gBTPX1G>SOH;6$`F%VODw!)aC$|TQ{yKA5l%esTQMUF%pHouuf zJ2o(7I0ykL5h4&m(?<dN1D;Y=h=f&}S^kMYk=5o$-TMIK!}#4X=Rvm#HnkrJJz3_y z39+(J>|Xa2#DZW|n-{usXYBx3T)T7r4m0QQ6k<MCuo_D?GX2Fp9>2GRUcALU4zZ$8 zY^HlOVtJvM$(@DRO`+IicOh^PxDd9mwhjE@l5oDVBnhr=Mg#<gwqUs-vG`Cd)}4S@ zbRY)1@I%}~5e-TjZ2>zY7O|kD(H1l93AeMQwBAyzuAdbERBzei9RT?&OhVHNjir$w z6yzKKm);v#e8{<B?tb#siO5${ofGoie&2itB)+te_`1oMn&O893auxifceI?(#;6d z5KIWu5zGh{ggk^92v&rd2satQx&wV>U<p=VTY~?*UO>VJ16}jy^}_N0SuoIzB%59| zu~;yc3@#Ylf39!;d%Ylw@tWXb{9i_YZf&(Rl?a%@aFm<YMr5s(rc$@S9v+uva4W&B z`_M%MxuzO(>(yDexnr|@ka;CGNZ4g6f`^u}OW0*(2_{!dE2F=qnLIz#TWQC0><^X2 zl^79R;Ht4y!rsRZUXo*(Kac|@1afpboPirs#BYHN9leJ`MI0_Z94LZZHI~E0X9CYB z_XVD#fWUKrK(6Hd-viGbeE|>wLI6a7K&}{=OX?xlx!J3(rPJ6lI836SF+t1C!LlW6 z*?Lo=g(<;7F;iKa?p8Iu?cy>Mpm1!#5~0Bg;l$nO=7`J@Zgpk{PRwScD+1|eqqeyk zV+G`C^y34#C*rqVfoIc<F^HQGZx6&xMit`I5pM~^ryH4O2Pyn!BgNBDKCbcSVC<Vi z)8uCNc*LfJVrlNNh-HRiDelpTC5B?d-I<7KLNTLf;ZmZrzi_b*sn@0;3p9jgS=;bt z%Tjzoi)C?2(G~}63P%nmB;o}{V0N~9*um5_{LmteNp4`=5EGns3PdqwJz07#2bP{c z+);Szx4>_UI}-O7LxBA3hO*Ls8GKmS<^~qH2x@Mu0;^kK-g4Ajvhu+%M#KKa-j8U< z+uhBz%-&v}-t-YqZQ{gr5U;uHrzn!jSd+ALbvWd-B2%eqCZE{#-3Ao<83f8zG1FOl zzm<m6$k1M@p%!V4H4GeL2Gf<+XdG8h`_I<O_fB0;)i9gFYCc*QtmU$AQuo<<@^&~8 z15<-~)$Z#PqB|25B(dE$i`++&dsSXziz24oSK=3rwLHb#bx^powPegqwg~HL=_V@G zs$MC};BXek3PHilj#$^bNxDg$;G$EXlyal#W~2*kt)rO2kA>K_k%j38+<|tvTZS0( zk~12ZG}f@GRNln29cB-=$mm<k>G8Lgy6Z96)HGUXE~is5a@1^=)I_x%Vh**)qNgLz z^itueHeKA#9^kGUvSDmW^8&q#eS040FMk*6+ZH74hh~Ua%kG^marITu4RN=`-cE^n zi4z|c#{HJU{8lX7@>??fjZpsEU$w?=dA<dOP^sgsOtlsgR$#wMa>CEvAl83TEd2c2 zSHt{0+Pu3#e4*OH<zt=0njvG2DmsP3zn`L?5?;BKL!S_iUV5H>Ls;_1G>xg(36Z^j zU8x!|&z-)7usI$RKKNr5)77(of;gInz1?(4SloW|+zvmLs@xv7ZLV{kE!t_=$BO40 zQnr{}%oaMA&fuC->YAij6Dzj+p{A&o_^O$#c)|~BL|Ydn(y2dt`+riGfaij*PgBv9 zbD40ty%72=H(efaOK#uU`e-~H=!doY;-6qLl&~N$l{)?0qURVm3u48o{)px+8<>%& zpQH0w_(HzxISMBPYBBQyC4Se%kxn=$)*mVsc3)1`Ci)xdo1SCR?|hEggiLc;(g}J> ze6Onks1Y(<yj;R`-7FM#=;(A|Sw|AROjy^E6TP^5AG$*AW?*G$Iy$3B__kv@C&IX^ z@LWs0kkzS1B)nI+xijq+irR-U!a?O}V~xoiZ54g8-W@Lb5%bE_HT25V)wfzoRx5Ri z@s%sXYCc{0e9z_f3#-FwWX7GVVU(EOSI^|f;_N)Rn`($f<Aq(FRkThRf5jr7is-E+ z!lPFz9K2O&jI_?_+)+$C@Ur5jeq#b%EpLyYsA}Gt;>yG`X9?X*K^&yrH>S%DIm$Vm zua>Z4S^tnLuPzIYjQ*d3gKSI-74`1byp-WqW+V4Jv9wg@Kgh4Mw%4%L<6U&7+(Xwe zIzW1bZH9ncv&><2TAOO{ku#zizOqJjuM?S6_}uNLn?Wy95jxXWKfOtg5k!dvJsYe) zwy-fy*uxr%`tI&wwrOkb7ipT&zt*N=h_BwTHZv1bv$3b+vN{jrGmMm|ZEap|tRYXi zt=z_fB=#j)+jKgt=J}qEc83z#l&Yxi^(5P>qE^QAt(42b5gH|{QMJh_(-`K3sBWjU ztHG3RwH|19M(t{Fj@(ycYLy}9RBp(Xr)`v|0_h(8RQ#-T0~PrWTtJBJee@PRCL0w) za`=4~|D>8RHOv+O)VbDdIr*&=QSGrtIl9-iPoHta$+z27R9HJ5wqZv6>F3Nt&v08` zHET}4VU9l2s7UdUB8IfzK$A@)rfXP1EUrhTmrxn(z){i7jf#_h%0qQU2J(C&edi^) z8ar4u`ivegsi|IHVfSJ08B|Z|OMl<n>-&565PY-xU#Tb&V>cr-QO2}1M^!=61KQR? zi*FkJn2;%rNMyR{Nj`6QJ01RqxBl12D3CoMs%yX^BiJMzy<4c17SWIGKZ{>R*(FTv zo)n?2!|-Uh7sWnSvj2(hTm}|vKIk1mrwKpyrYENK*Z&$7F4mJ}p3>UM;zQB9+kG1( zVQ60(2NDd#fctVa=eyFRIEtRw0s9RmD@0nw7ln0w-$t8U#G>}tZa7c|sRW|0!m|E^ z_*<Ze7T*B5kY-AoYTXxD;^9)*FTC8JkwTUM5I+<gWDh3#xhume`h9Qpb5~x*wR3a2 znof84;rGIX^0KWASp&Ag=S4Nd-9eCmPFzNE19zn#nZN7fu6&2<S6~SA``mqKiGp-U zkFWP*?cbOPvc!{0I#75l@-6A#B>g>xyOL5-;5sHPjY+_7g^m{2p`7lDu;yben`3Bk zO&_=L%8SVU3X;F6pm`QXv-^DpFbfz_gv^s06@2q?uoYC4u&)wT9O@6hatQBC=-)0m zX`<|R(iwiGrh-b_AUWZ6E~EbrfavI3z1a{=C&U8g9<mU{Vj;@6a#$wfyEoqvO;_B` zh|0b&tbQOOUG+aik2Ix5=%7U{j*`x_sPrbS7OuOfC7Aw*M<AXRikC>+r6*AFJ)To7 zcgCo8G2$=1s$I&riItUg{hNoz&`)r*sO;LjC5BFmRUTDrG1h57?4SZesK<A*e)AVG z^hn1qr^vW`bp~@nv4zSw<9>BU6_JGsJ0(>_o2-Qp9r|2)&wQX^qLmtZN5k&CbKaQ2 z0ZT<~-Isd{hO9QX=t#>Z`K0_|)gTUOhgKhxw$PspS6P!AoVv!#IgDmwJebwV(J{}n z*tMN{q_NzU7ayP<Z~<u2_4_vV(!0?655(;5_stL7cRw%`_qX&8Y3G!wSOaIp<X|8& z;_J}fg3vAmX*K<gH5{b-l<hakhP3C0K_E$_RUn&%`+c(hLp2=ieLO1_s;66@l?o^= z8Z*{5_JL<5(~fUj{!ejV9v9V-wOw_41)J3k1>|-k2r8rz+!8bmVoQq)0-9(R*##9L zK;o998zp(wkx6T!7n7KvF-e<9M$95=h-9KplAow#n@pmyog}X^*}C2OLN9zz-3F8S zzWL+(>wQ}vZr!?d>r|bpTXkwXCwNt>IINKF=9@(0;U+P=kUAQ0aFCs9LgV54?rP_e zQ4+VFwe?RiPw*`1320wrT+*Xjs<Ih$U1Dep=lG&OIeWY@!b<qAo>A>N#*tQqO?A-c zdezg>J0e$QQzr#p8kfV;E`~$dghv6(j0<m$4G*wuC0`AEeQt#_3BGCJkkXtMnaXwv zhMqD|cbx9w*>PC9yGXDEo)$V={5r(#`pUz!JesgA$mcS8-VuMmF2i?VPm0EJI}EI5 z@N#D-(Vz|_!P1FO`l@`cO>VdAgeOwU4{LHP82wsEzu7{Pa7~m%zRTjgmK|vKFU(<I z_7+^_sHwrYl7wA$s-{DB_25HA>7ajG9^{t=2fvBd+v(ApjX}4bF5C*~Z!}o=pm<4y z0T~>KJz%*cPAj-1re$41`>nCEC98f{jmTt11JmFG?x|<P7A4U%2U?Xj;#4cyo==Oo z$w+@P5&162ka6@mtNYeXy%`VcMWs>A`k{a=MytEmA<yb}#dwM%!j5SFb)_!wryTS( zif4DYZ#jn>C!ufZy&jfDv(!iY9gYm$h+eM1P9^yf*>i@8=xD}n8O7~Dr_*;F-OUo? zV22||$TV~~Poq2Wx`Uj0HO%(3ipeM~OA)Jy-}~qu_E`S>EF^1+7}EE2Z~PHi^TZ>K znYwS}ySTj}eNTxOW{>)Yg$i;eQw}wKcwZPg3!m#NY*qhg_AeJdoc+@!MRQB$wTrK1 z{`aL0#P4=J=)Q7QzL!q^8k?}Txr4x6e{aEsWpj=$FKgeK*v+~QVLL~o0^P2++;W@G zrF9EOI9g$LyVjoYmos0%Y5q2Z(-?4F0I(usvT5Vt;JI?><U*T+0w4+lKU1rQZPj(& zfNT;UrM+8+<t~`rRAw(7aP!_lnXIv#)2u^WEd%i-^}yII4E?}(tWj${-A0AIG8$lh z6B^n}yS2^cgrctlwePx}PWn>=eHFq$hC@$N3bf6$qqMtJ_9PRvF^)Wo@bkL0dv$Lm znhZD<i^HVeAm`TsWNeCYzAhX0*FCzoVh5gmjApZtuqPZ2UsJwhSCeR^^kDIhaBa?x zNYh+yN2D-LPG_6<d23kJN2kYuechf;B%87C5UvrGuonlMgZl!m1MF!!cR1Ws1&XWC z{^Y7jd?M(uGJnt$B>6A*s6n0ia*jMtq&9GF#tzD>Ooko7+Qc176X%HaEbz<mIUR#U z{sjUTfvlB&Lf~6S>-EMeCJOeuM!9{ia#4X{z*gLGxLYm;IU@o$<7+f%b3uHeSD2)r zxies12)a8B&^$N7wiKsdycpWD`@@!pO(Se_9nP^y_clwA^M18r&s;Q|UP(u}!SRxC zQbF(KKJn~U($S+&dxEZOj1;Y48a3fO2b#8?oJP*^7mtvpq+_|)Ji;<1)yawDE1zId z(h=Mf9-&!D({Xa@SDzmHz^G%Ir|b}P2;3Y~%Q+6a*~fjw9fVx@t855ZzTHhumXwy2 zPn%v;oHlvNRDH^%)Lii3G1Ol@7+(Z;6|f#)g|P+K7lBs*R#1a=w)Ix-6OpYWz}!l+ zo0Umd&xG<^UDEDWvAs}!h;uyRro3!-lURW*Q=_awICT(<_F2XsvnqJb8kkM3$85wJ z*{U|NEv$247>e0<4nnm4!3HDV2BMdN&wxAa+pR@U$Xh=&9g4!>3OiUhhxsyIyRe?b z2RH*!4T5#8;`<OsKPciHpSjyjEXZel0nWJt&pdeM!?ROvCC_P_#D2=UswVL=t+zIb zC#f7I@I~00CS-(GLp4R+4imJ4i<IiS#D5fZiC-4Air0$PA)}Y}wTd4X)r^GGR#bt% zeY90PPA!mvsiWR4%v00Ru{*G#m4-f>Q(_I|i;@2(v4*l9v`KuBTC*2ht=Ub&RyCb$ zKIdgD_@q~H%T@z@SM@Th0%92l*=usIzjNI%-}2T#w~7t8L~W0vcpBe3*u74db%@)L zg!KJgJxyDi#LS&t;>=C0V(2DpM&8sUKGV=7-aWKQoVK~5?feTVMp-iqt~gG6JCDc` zlFi+Fkuq6Az=fH1ziZ6NF0rt|pJEoAlY+m6;Ms3;2{>Szkk~D^or4-Nuj@OX+}L?T z6}uO?THe>_mL()~pMcJtSr<+?l_A3~<k~xWw}sK?X<|DJi-%>kird1V1Oo$6xh)0U z`q7stv-_QAeS5_j97#wpQiu%JeYVVU1cG9w-mO<zWWNbN1<>({$jgIt3FM?NyF=}E zMerAk_Yg4m!IUoX{s!{wmN^vPkQWO3gqeYK?8--cN3Q0#QOOWYA(;Q<z6u+4l=`Zh z-@MA`Mj;Vvd~zub%>B48*2pq|BV7}Ab+hmZ5M7?x_Z$qfErMY-Heh&h6{k4`OoY74 z`tkMCI8DG*;ani)%`xJU`L;Qm(ZOy*sj5ZW91GGTwI*;&qdNXglh#UYL(oS20GZw3 z$ZnuWi4Lj0DBT+x2>*&H)2g$DA<Soz-;@R&2G4U5=2PiDx#0zqPHJcVD&5E9`BGz^ z83B$<9%C9Zn+>{W=Uu`gFtN^R)f)c}fgVSZ9JhP@-)(;ReBEMvsrMIMvT=@Ey<71` z24b7q3f~r!!ilM7xQnpCG|`x2b%JTfdRZ)-gYONx?lB}9bJ0-cmoG;BzaO8~m$1b9 z^aiswI$g)w$y2?rJ1fW{qX~iX$_qfI0D(U0Wg3lO?$03`qPD;8e1{+uHK7524;JOP zAv7-V)=TwGVr~9>e9bi_mkx3ckJuz0$Xj^x#aft|&g&9i+(d1!S#wb;yYifPzNa_v z*17daQbw+>$t-5&v0mz#Ueb){DF!ibn{+T{oex8F`6t2B53GT=NDb$BvbRYr%@0S_ zDa_Xz7tANRzgu&%=jVKd#$a(tSI;+PPMg=&>UG){Ns{jbRE{n*IFGEGonwNJ0eun9 zUwHr8EK5*yJ8kz$zGj0?W1pE5c+2;QQxdDauI=9GIZhjU<#4#y^^|uOWQ586K38P_ z9no1ns}<=t{VqKFT$=vDuiH0_3C~`60!lx=Fdo7)IndSPgYf)Ci4%NPzSAUnO1(IY z@Zk}qur!Fqn2U~)n}(Ve<P*mzU?V`Cslc8}pX(RjY0MB4JLQ9}|L~B%G6$h^h!@Gp zXpw4uKzlpbDLe-O;|pLVI*9LZ^$V;T2&<{U2*NrAHopi_MN7u|TsdxaHiQ@hI<k?X zn)JDDcq_oNaEx^?8~R+oc067#1P9Z!VG+IRfqA82_=bK1$ro1$OM<C>*ljHA`#S;l zga@{l3(w=7_&(QGugn&x$JRuM8JBuw&v%HU55t~=p+k(y?GPhy%=HsdxQSTIyqBr= z@Q<<jT+2FG!p9@7e-|q#>>2)1te}qDJ|<RBN3U;Cte}pceSZ`yG?G|B9UZ;_vEtvP ziW#5*@nyyTL#W&L?}Yw3K<M-z2(|x5LR<eMArlB?trY$oN*|tn7EMrAsxIu(*%NQv z=_zlYeMolbDAbXKoDwS{+AgAmd@ix~8ys8u+{2XXLtU7#XeeDgZl#BBCFrIhgFb@p z7y@98C&7l{0s4oeem!b1DWZ-!Lf23_`GGvU!PpMF-ad%`@*{*dOdMs+zBp`G(2)!% zC@0FUo@fF~C%_Og>zkn4r<7k~E{Mdk;ZlXD$9Y^tSL}5y?%QJuLc=zqFTpl!4<kB8 zSUQZ(rcuJn!)X4{oqflglS1UiEhh;y4sF5PTLr~%dX&}+9mDBJ?rNX#)o^MVUEXIo z(&u`mFXnl*ldAuO37+)Bm9U+Bu1}~LK_kYW>bnHvt_D7h4a$~K$7pY#%Z+)Tvja7s ziSUo3X1`k`yfuPO3)qJ#jTFcvwZd;BXdK-p3?E77n?<B#;cf4RPughfLX$0uItn~; z2pp^p4c5K3`L(rRkeA~Rh@)HhQodNp+t<o@esg?7eBpX~d&LVlyWI>sICAwpCN=hA zQb(Hq{kROg|LW#f@%}jP<ZP;)Ja-C)@FQ|L{!~x+B&81euSugBI)7w1qcA=96f|pT z%i>D0W(Q(3LQnM!SrzwGT=75GN~AZ(HN+KW*u@GYPAzvvDa1Bvi!pI}>hQR!L+haj zspE!+<CR*fLwr`mXXROJp@<E0_-Ta2i0$im!dtJb9crhx5R;ija1jwuDFW0V^b9G+ zW#H3-UXJ(YSLV<C<^$+qPC?0?;xIn1_i=_DH5F?gRFtkkgms*QpJDT18m};3!*JIk zE-PjePt2r6f|1P-zw24(P^eczcfWQf^j6F$d`f%{(i_?xN2XWumVEs_N|A+#@C*7K z1JQQ`8KDi;F+sQzK~D&dQFK^ji-)qYR!udwki@b%H=bY@AGh1%$`oQo(?_Ep=vC~I zH-9Y3LsRU##Ib}+NbS~d{1QtbUYAB_8%-;@YaSsg621I5jN5{t{27K2V6lj(sbhTK z;kGJcf>c4O`d9^F)#HE|WoZ=0Sil$y7-ON12f)fheKJ1CK5{O))V><LHClQrua7!r z1AF^e^^wMTSbzvYsMlaPrpg#Bg}N6ZCYk$KEgO>EQuNbRwF#y0D2}o8$jWdGphrph z2K!aEO0*c<Ug9qS<<Gdvh^L>G04o)LTVY4t4z1vDHc-j)h1K>g#;_+o>yaHayv-%9 z>i!HS{gnJ7N$6PMRvMYHZ;$If=*$aKVq?}G_rjZfwM2VY&i)dmusn)t%^7xU#aHIV zW|?NE7<HISJR**^9}y!u)fa|OqPupjgSC`gx;K1FtElD+H=!_UTP(<I;a)M2G>QqK zMB6A%ARXvFPW7k{zP7e(Z6o4A^|l{CELS$YvMIj)$GS!_7=9Y~1$OEhz6XOR18JeB zB725}9S{=<o1}$qwd~<qoZ|QPBD=w>h2Uta9~vk|+0_-M3e<F}jb>-WtA$0;betSw zR=@CgG!9=sBD6)*B<^URV2`H5Mz1(FSYdI3POmZUHbYalrQhZD3BhA%0lgrUjG^pM z{oa0A5^;Qv`JA~Ipw<nQ@2c?n7@9)g6#g*=mO$4EiWr&%OIxWiXk6wCOJnHNs9x+Z zXKgPGri7Yq1XE(w8JA>}Sg-5nKH*Rdok{D2pJHe}-7nnB)5vjA9hmmA1lkmP`XM`F zqM`-XiL5V(8pDXU18rI?UZp}P2^AW6ny+f{h8)HsmGCVOg+~6l0)f-gu{c_u?-Ryr z>0{i!<HCL|J<dIoBs{F6D^t6Z24-+8<rCFd1<o=&mpSGn9gFoogGJ2ZH?5J6XZ|np z&oh4=`~|m;M$#F=$XL2`r07ca()iOoq;MA+uY|Tls4nxko)rEo7I`QTzKx}cqpG0@ zft|WiQxq=!q9+S;{HX|4ax{7@ji&Uda8DfFIJC~2WnccUPiv-MSZJ3!@5i)%jqphv zjTu_#Eo{TyI-C^c0&s+e62~IJ9Y_B`e-OTmr{lm{Z#<3U0+NN%<7ggtaH6ng9G!?+ z^;i0Zm&Q?^77Hg4io4P$1Sim_DHgHw)`mx@&Eq;DQkxap^eDdtf45>)lfx;@Pp&3Z zu;sX+UyH8y`zRVE;uz8^6edue`8C`xbZn@>X2#Hjij}Ll1iDk%oe=GD%@HY<yF9MV zB0UJz8Bp#()jO^Qk?laXk!j8FxNeG|Vfhn|70R@Ug))0KxbQC=5~W)Bhdy<c&F9Br z+l>EXC8`65F(-(bW@gogI4oiiwzdV{Z3=X9N)6^}h+`*aN}>Wt92*cXLi2-RUv8^7 zEf+^kJSip?;wd*95VL2k;=0@>aRZ*M^{{n-7^@P5o5YQzNqm3|g%o@bk@KzM(ojy@ ziq3%ziJQdSP#y#1dP4Q#7#@#n6(1w5;uK8mc8QB~yTnBxSDHI=SF4zn8-l-Mb5*-A z5h?svBE4tK41D8j=vXG4ss4Qs<#VlkU$7_A2rk$o^d&--Wu6c_p57IC_sI(#T!rlJ zaE!>9wPFAAwp{OaEflK8)1(pKiDA}}wqT<P!>2AW+dA|)ugfV4hsV<e+;MUD1iBxZ zJUaS?*Cx<{VYOa1{~w3>e{C~;LWj~h=@x<~(gJ)Dd;5j*i8PDe5Z;_fW0=QD;oL-e zw=v1XZ&0@dXA^rcHi25N%|mAAedxj2c($pRIyD@+5(Q_K*+v;@tj9InBdr}{*_51o zaWyQ>RN=VgYGFYVjiQT%RY_D!vxKH38ku6~t30#_(><)Mz$&z}GeC>EtgfE*C$f>3 zpWB*5M;mb@^(}_vG#_KJ1mPb^v}ojXjFa!rz0?yKo`Cu?94A@X)gmlPrgz1R@Ks7f z4SjgNu>fl%!BEPfM{M)<<?V92RtqmD(`Y^)Gej0FZc6JsOSoNFA9Jg)pL4(0fLC7j z3Kx^<Bz-Vsg=<%{;bZZNu4BF@?#x{e&ZYT>1Vhj*PaymXVdh;llRhjo+(psQ3H$DX z@C1!V$GUn#%fm5FnTJKg;l~n?Vd797BN$e;Y!247tmPZ{LP?-<c-l31*4qw-%Gnl% z(MA~<dZh#RW!!Tf*R#hhzKp>4f9(tm{WUbOX3jWqSk&vzFgi{gp?Tdo0;hz!dM0J1 zJ%@Q5194n#Uuec6ioy6QB$8m=QzB=@9y1>D1*Z3i4mKIkTtXdwd;713K+CV{K#%KK zdyv-cx^TijGBQX<E|0Va?#VWeeBR@l)XsWc_8m}t;btf_Ly}(ZV5Rp)dx}x4!0N;E z{2V=m0t&sLi%vS;J$g=0w^0+F&QxMdY6}zTLVCAMq&Z}wt9x`7(LS3=x<fnQ6WM!} zGt#WkceiB@HOekTt)r93M6o+!bZ7^0kaqvkjz0@OO`?e*rUeDF^A=>x<7emPEzBcA z*fJVvCUJFl$CZ-Y)n!F>W&C56b(Qsj^|fUis%w)gtM4kVuC8BQT~u0DOH6C(>Wfyd zE~>ArUc*<H^Cgeg)mK;X<(0KnYl~{j_{utX)z+4+sb9UGuPv*qudOVpFDp$ZrUm&0 z8T01xd9(8i@=UV|W@i!7GKbT=!4NXwXq@Nw5H3uk_iH|wg-J!=&wwy)I*lC~8Wv8} zssLr6Vu)NL3*v%lh_HG(T_$`yojz!m<!~DBTuyTv_!;;o@D*?tI0JkDya%)b2Y{D= zW?(0<4X^;~fHgoVunforj6gat2}l5RKqN2>2m+LV$HbX6znM7AkHEJ;H}E&019%%a z2)qpJ0iFS#0yYBGKpF4=un3p~%m7k>L;y0lW;hT4^k+kP2=Ei|J@75?IdB#@lZ|7J zopAh5CE!z(*(u-z@D3m||L?M2WB%V|Kgyr6|0vK38~~mNb^u!dGw>)-4U_`QfPBCN z7=WojG7twu0Yia6fC3`e`z!Dxa1r<%_`lh&P??oP^{0+Y{bq$~(52*5L{(lWXC8mm z>N=@PPE|hKQdL@ZmR_My5{0<s8H+**$M#}JyX3QNi_M}^sEJ~;a^CJv$!mM@e&TnO zj3jcUf+!be&GP%yN5%LZ=DjI+hsE@Gv7=FP+$_0fkY20DYm(z;NrXS{U*hLQ@El9e z8waEWH^wcP%PZ7KshSIYI+;jm{lNcdM#LF@Fy?l-N<ma<H?sy}HmisfNNrvoaoX;u zRs?D+&y6!8{?;jZ)hr)r;W#-_Srt@)Gc^hs9_#kYSg0R%u7id#qS`Sw8~2>*x@ns9 zwwRSQ%PzUL7i5N723)g^yh^1eDlliyqzC+TwwFZMEPlSjdAd^y+N&OXslL!Y;CHhm z2AO0;>q|y|(jvLwm+6nD{?5DG>z1AwAft+2sxP!iAse;o!2})LHV_Ypoc5Qi*(U|s zULt~75{aT|U<h-0v>y+UfNLNMlmvL=52v2(ccHun{Yqkx05$UYgtBVc+buJRKWL_o zSY!%0QEsuxWeTEjKr=e-#_KpGbaN{*3aLU)6<hp)iyZ^mt}nhe-~vwvGg~z1=SfEv zq&G(8$29T-gbD}W&D6!(Q7%-KyffSXY{i48JEanfi^JhRIi(iRBxX5IamWdGKPzyh zb|&b+p^AGbk4VM5WoL_2yyLUCP#7yx+5M3fUOR1<3N&Nx{{06t{P~Qv{Zq6kl`5jl zxw+HJ%VZ$`o<*vXeQY--8JCMGMqm^W3~;&l{;x0OG*^Kuz}LWe;56_)@GkHd;2_Wf z>;kp}4Zvf-DxeTp49o@Y1=4^dAP$HIMgYNp47j}j{QzJGz63s9fcF0+9Pa=JftLUQ z*bX!Rj{z%z<v;;o0%iiKKmrgAgaazTJs)Fy;78yapd0uYI0?K590uM1_5r(rCSa2p zf7S!lKpC(M$Oq;C=|CDV9?$|2KrkQ&-01YL13iEp_&d-AoC1ymZNTe53$Pn_22iTd zur;2ae%{ls!Wk>o+ID~YcV&BOq=i!{sH)#174JQxp4Quy3bYZPk_ZngQN{W6%Rzpx zuJ6a3l^VLgJ@fE;ol>at>EG!G95>dnCP%sA>oZZ3&qmc|(f{a4eWw(YIsLLmFS*?5 zzK_hrA1wXGI?3Tqzu}Mlm%lumUMORU`nIZBO8G}Y@84M6sZ=8q8uF1Q{W~J1`Mk&f zH015`>31mLBsKd;@0ocf#o{M$uVbAQPBZn!`KkV7Z%j{JXTJ0Dz5amfrrvm5#-Xu1 z>u>Xva?nfp`3jNxgBz)-4yh?UTVA4<t5lrIbM~x5io=t#y(FYla-N^MUH=gobZ$)V zls*;kt7F5r1K#O3y1r*lGf|ySM~W=|I6l%0zPK@cOvr#Qc;ZIJS?O&|clVe3oy=Fm zqF}yvVmLpu|MDGrC%x;O{)kz;gNdu2#@NW-gQpop28v$tI-lOp*yxXSD&rJ$_G{8V z8lc6T12G{5=fO39Sp7$LQtSKO_eMVw^T!6!A6kD#FC(xLL6qh*Q#uFQMCpDCo}i~x z6e3v)ltAZTS}qTAV`KVvci07%-(kVbLErw6&4Xd1Zr|{r+DR$YpBwbus6UhPOeac@ zs-~LVse1qO8U4RawMb=~TE4oIqY6qpSqlj*nrO4RYN?_s_2<v(rK%P8<ZoXfIGA%L z6<J_aVanMvdQOHK>#vb0LGVwb3L>hSrsi)|Yl7Nd2=%v`q3&5%%#B2)RNqIGRo=I& zf3Zk?>vy;PWpP$&E=wwk@PBz}ZSjia5|U9@S5{k3%GT8sttsVGrX&@wuP@_Q4cw<r z8n`F^pU|8}v2$ne&X7h6g_cy>B7B^N*(l~MSf^3LQO9K3!oB`;8l}QmSnW|&6;-YQ zF`+w)MhNySsunO=G*WnAHXW66Uv2f86~B*Ks;W!NR+9p0z{Ag~u0p!j58mb%m6!3U z!ck}x9(P}5O&MQOw5FtN_3E-xP!8sB?2xiaY6Gb%tE($oQC62+BGhD4<I#?6I*bZO z=hCF3AI_t9(T6Qdv7r-SNoGc@F`G{~c7vb7h)A%#KVSsq1Bp)ZJB+Z02EsEBPWmT3 zf^|e<P;+tvyZahpzE~<G=hBfe;c|?t2=Ty61S(+em)$cm48p{PG@@+cGBo+X>Vc<> zGz0r7M$%B0ALcGVnB4!5aE~L*I)J^ye#423qzX$H($|M|g;T>1R4OHs1#$*pM@EFY z6xTw(TcHNAz@v$a=wCP?pn#?brUH6zo<Az21f9B4r4A^_Tb57i%1Ua>>QSnG2fwzq zvc8NMiz-nZ7;dg8TT@nxu_?+nGdqXWqIy+VEl1fFt!Ks3x0r4Sm_!yY$XT%Pz6C<% z5*j@`f?OM<BwZ=8PK6hiP_59sgoX?6FQH>~1WNM=`SKjq90VQ$2H(-bJp<U0!OP{c z0J(7ee!5fGy_6=H!)5gMAv8wKwe{h$`6QnhNdZYgwb5hclaR!2s+kM~eL*$O&#C51 z;25wMNQ7Soo~;KCe)c=jHr)3B+CTU$hI<e!ag{Q72p5;q=rG(34*Hi%gMR;*|IsyT zYl~|5a*27#$;m7+xBWy|>Gu+J&3}Lw?tb8pVX%>0qXlLIO~7E7qNI%V1BFsw&9kWk ze#PqbH5FN9CHS~7El^iktzI)g`sm}!=nrzvQ7#lOr*F)iv;r~+=ugKLk~*1*YZ9*P zw+5@ptS;3KTvy@Q1nCJOyWv*C{o=rNKbD0HX)*Uug>bx(#&eAo!aob?)8Y0CjNTEB z<&nkZt`Ig9(d7T+f4qn;;hHOj@M2oaDOL(k7t?c`xKdbBf_U#+B^)oII<9e*@LdVw zx2+PCr8Iur1uPg0#$RbF!88fxMAlT-^L3Bb)Ku4EGNd18bd<uqrF1JdY_;%dDP6|d zRtxcEbOR@^I=a7%KFsaNow&P#PGnyOjAr)t3n>+pKbl)X4^egRGOBq4zqSmK{vRoj B-TeRn delta 59409 zcmcG0dwdgB_V_%L$)jodqEAX5JOV}S3n&yMP12!lDlISNrJGXJ6j&`Fipn}cKtaVV z9Ug5$0V!$=x)u~yRD@k|cU_nLCO%PQMG-<Lx;s%Y(<V)R=S~aaem~#+e*gLP^O?+j zoO|xM=bU@az31Mk=Q8a%LtE$0UTDK848t+_bK@9+(-;BCxh1wD8x-zMaV)O+;QQxq zx%`g-<CRelee%p}343Mv)ITn}9B4lL8}H$Y$4Cw%KV6}ExOw8;*%{wl{$bg%*A9Db zKXmDYN;RhDfcmRw<!?vVJvB-dH5`8a>xOajD*f+n$r<sERxz@wEbYDx_pT|)p)o62 zc=UE$yW=RX#o@_-XDmF^;Q2K?NB{6YKS|t)!OB^0{S4H1^5-;ay#9Yd@}D~R-|D#k z4dDNCJ@+5kb7SY{KK><FZmj$F^sG1judv+z74ZKP9QPlT<KIVhEnj#viN%b+?a6Uc z?06H=mFrI8>qLyix21~SfuvUp&0|>uiyy?qaeY>E-4)L&$aQ1lza#^zfp<!ufmOjf zqp#3t#JdP_MS^kWxRZPftq6_MuNJ99p=q$ull&isr*ZU0D~xKVrbbhx7Qc#<EASFB z@N1*Wsi?Uc#Kilen9;x{A}=M(P-9-IKb~GfXqUk=4xZcKxv5v2kqks1>1k&tITdUR zJGyJUDc4;j6Fv$EpEOYHbek|E(S`G)UQQKn8Nkg4*{u>;NOTdLSeL*}NnsKvx=3+` zM8T+&LIh5V6_Sme%%ak%QZ+lpi&B%M4%Do`>>n%FbV-H@P-4YPzdb^X2b9)NK6gV$ zgxDLO#TEkL^@&1bJxhpR$8mGX(qv#p(GW8-fEf?P$6&@hQ-0TQp!3_<@NU$}W76<$ zy~)C+id`{-aX27*H~u&N`}|vocVc}0h*C-|-V*0;A2CzG!T5h$!XF%AQ{5g@`>+B` zoW)-q@tt17gvzTn3plO}72WZqP|k-9$0yebWy`S88keR+6)JD?2ou~RI<^QUbLdc+ zQ`=D|tZaB%SaTm1y0zXTlvM%r-I^Uq9hy)XA2iNUDtF9rs5+AP3R5PY&o3~I!j(K{ zx_Jhv;BntalErg&*=9k*EVn8lpVX1Ne7Ti@l&0e&skBGsds-khxX%ZrDk#nGI18!a zEbYTfXr4Gh`S_nqRb1mkbwZAPqlBFtvvTw*!|IKa{=9LG>A{Us-o8$#%Ue+=WSgh! zCh9O<osfT@N|y@noMjs&@?>!3rB&ylMcVnV*L(vlM(o=t8Co_<#zJTVI8B8L-$o#F zqcpNGSG`dhCFe_fa<v<!(U1lxt|?cyQ5pjcvdkN$vFHsA#}z7}GRwVD8ZS4z3Gy2y za|>#Cvz#vQpmw(uGEiP9!xTXp)fb~T)Rh3PT);U2z3uQU-zZHi+$c=~&TN#X)^C)` zpdDW}ay+N@soNLk-!D!lTUBI~NXu=v7T{qVS34Ab%;;LI>u}G-i=MXieM$Io8Y%C> zM%4{Ur2?he6eWGuQfoO0jJB5G{D&7ydX8TffBS#}D=d6X!(yZ6W_8-AK;heItQu7G zq2r{4FS;7kxJj3jzc_Lu$0}U6x#zeG9As#Fqgi~+;c#trZ+DM(P@y?XM~dt08(gQ| zAKg%Y%9YfV-t==l*>GFaoTeMvH*9U%enb6+hSN<S-B5q3A$?iWvTN=6%cF9+M$*-M zJQ3+Wk>&=g<o-T~4r6zZo;C`4CtY*gweD|osIaGzC?`WZ?j9vRX1BYZar5pAIb;}< zOXoo;qVyy8-)@AJ$8*Y+(WGr!noEVTrNmSiRU_Fjx5?R*n@h?#?G60nqn(HkbKJKL z_T5N9PupSisHd&aQwVzU%t57dZ{P_k#cqIo7dVsF^zX2P{P}lSJ8+4=0e0jNVwqY0 z4*YII8n7&s!#9t)$uz{Qr%zy*#@&2$)NSAAz~F)WTDRGmmrI3q@F&LPk3)QNoN{TK z(xGS`qPmg>N!^)ChqlXgj)rFj>v*N5jA$hJ3QHQ7=I-qIP#W2S@gMf$?`q(eT&;y) z`hpIAl^fJ<bqn5F<0e|4a+9rpbyKbCCc3qzNzwXLld|=%O-!qLSwI@OPu2QTlrUm# z%<l71wNcp?1lz7@J0GQtbek5+bVh}oBinS4V~muX!#Q}Vj0F6W(CBn;mQmAQC)5(p zMX}ehc2!$)>(`K?+qG?vU?@elC%1harC!I|)1iiZodM{X1gcTAuazM(TB-JowmP9o zE=@BK?O#WU*EQbUoi_Wh)-fVxOKH`5u_*bI&8~0dZiWIZN`zBeO>BzKX1CijVP+-4 zXvhf`s3UftmfSsQtpF3nqN*P-ME3-;EeS?JOhBVhOpr%5foao288u;8Tjp*dicO%Q zPBTFXzxV`|+$xhNeOMb{F3sCPb)1jVr7(UCB$TCy19U0fmIOJX6d_cUGIE)|P0<19 zN)aMWDMEyo4(I7XL`Bf5h#bUGgovSw@HQ>r&=tuTi%=_~2w_qbCA9&bB7{Lxbh<ac zNa@4cIiRMT0hVIrbbBz0muuP;a*k}*!CO~O0sH839DbSdU$Kap*d$du33bGzDXb7x z6rb)j6puEic+=X!qDiS<GKxnR+R3OYOh&ao?u#nEL!{u}o$JMDAn?1vLDJtT+w>jh zIVe!I4MWWMPKc7<Q9e!Eg{bB`h3`U?`0gQ=fj6@b_jN|GUd%^A9o9?ulI1rAb$BoB zOM;xDSLvfWP_4dA1?5<;Vh~d=!a(${22z>HdJsUJu<Jg+R))3B6rRcFpyRSZmeFNY zTQVY~jA%=j-wIhAco|}%q6{&PE@Rr1P^T#qqC^?(P2x2mh|VZc40Xk%%zC<5*MTG0 zV#Of7VrmdyG0~QR@D?L+;Kc}^BB%IVZ;nEU;)=|6A*w0P58=AJ_KMK%yY>9p0;Aax zYG0ZJIzF$dS~!)R9l}*rp}FpSC~05n5H_bT%^JZQ$7geOLR+K3YZun1`Lc{&uwxEe zXj{WVolW>dYHA46u%THESuiVnOKigW)YPo(wlQErtN@c{xI;HX_(SH4QS1?Q+lg!_ zuc!%QYTR{9S0Ox=(%`6Y-3(>xUEnM1V<Ck%yxU-bcL7*nllYkJJ(q)PSl>V{u`Myn zz6e%rb%9>2vAsvl2YQLs4E$0XDE{dt#*6bGG|k3nUbBp7eFRhRNv+Ohlvl&g#?(Ht z756T}fSX1dRxGUUpHbRKbkvEX)t4ca&QcwZU>BoA1?^4QHXBp5B1rvq1;BDuS_FKq zmzaAQjLStZJ9x)B>{}>1-J5Ducs1<+JnElOeAKyKyaFu9D0=t9U@xdqWcy_(O#`^} zQMk9pu5DFEsUMWB3a@teEW5_5>`+IEKFSNf{f}V#qj<rEsH)&nR8epj`)yP^n%E6C zg>ynzqp986j&Gyt(WiTLqt#ww_wS;_{@$o&|F=<mKe-zq_A7T^j#B$GTTe^#_W?x5 z{wR6ipHbz3i&52qucO)nc!$=j+yi4gKz3Y=Dh|9DB^NV$PD_@3|BNaYUyiC4lY1^j z@x|j<e2)_GNPQ_vk0&}fa!+TJUi8l>vnUu<F1i#|E&4jDUPSLv?$x$lf)aX1XOvk( z?Md<iqBRU4A=cpDZ=$L-D)`0MkX~vRaA-9S^~CC8me})6RIxhAdl_;FLbY0f;8vgO z)enQ*u-939+qvG<1`Vof&~e@#woYhWmh4U5QzJZ{Gt8S4BGj4QapGguw$RQcb;81B zYN+{RPEJUnc7$dx(e9}eyr9C5ryt0!4YjVgM@M^E;cvrU&vJ$qFQ>e9!p;@7!qa(q zAwpXj@-43u7K7@3kosY^J+x@~E*<WhAv~QK&6<hoL@rJDE70N(GBZOAQvm=lAMQ<W zM<Bn+%0Tny-U<Lj5HCh`kLlXc3^9TZKb!@>GiHV{-4@XHXH%*jO4oStu^APv(J(*8 z0mO_3leo@?bRTqn2Kd;@^{!JcMZ@DT3zSPLmt-TAe|6U_sW|t0d^f!Z1pIp;O8=hT zozePjRQLPdDE@oZZVU`3^?STsvHQ6wnGZ1e-$m(s44ljSo^PXyeARAzPcM{aZtIMy zb1z4=xu9XW7%-`t0ukrZATcVJ+^yOJ(77Z)X)6fmOHpyISFr@7S<xHi=n8s|8U&)K zAhu&(5T_k9#*PH1wky5gK_1o8b_&7RpJUJU>R8CL3`h^#4x(KOxusff5@=TIiX`t5 zwpMsNFWrk|km0q3cHA?p1DIn2S%7T*1hS#EGeWoDJ04h-*@1IA>xA9+u)>qW9?YH@ z+I274F<N}A_CXyh{25A|p*!v+I!;SjCxNrIuR|$<s}s}c3V;R3ib2R>A(g@oumDw! z`3B*B%BmWKv0sBxD@Yz7?2gbKODX<!U8;{2rfnSdQ&yUf*k*^N93Yf|PYrt^N;fdP z)@KIrAG0dL7!E1cr$ff_<1CF2d>+qT`5ix}_&E;4knKuhfh^V5o_5$MTVQXA!&X@% z?>JM$7y8Gtcvm9wo&<&@jSOwOkMvP{$<SRZ=niFQ_q~cXI&{a~$~}w^3+-?zLiP8M zp`C7(Pwgc`^Oq4J?~*w>q<E?*nR2uE*i0Q@0RGi#0mB#$G!G$x<y|F0V-O#+A~Z-B z5h{!LSQP{4Krd_5fDTz-K)D<cf>0JU);IvIX%KDe&uITU)(SkdqhS#1tQ)X$gJ=uH z$DBy%HGrB3dzRb}WFYiuQvkjBeh>`m0v9mi3CHYeM7=J=-}g5M8iUe`3(x9qt5!N_ zK}Dm%+~&ZAziDf#(SQhtLQpAiVMZnq+OdSKp6Or&j8TMU-{Wz>z&N*BP^oc&RamP7 z4pnG=lSaTaxbPQdS~X#v4~SGLSg5_Jyb1{u6Sib$sm;x<<}B?@A+7O3Gi)2p=9Tbk zZ-n1G^9A&4H?JyJcdjbeURd?skGsgm)$jfITXW~?G<D+xY1+;QO4PNm*)*@20UJ=R zL^~bK$fiuw1C47~Ar<Uambpq8cF%i1K3VzA1N)jcN{aIvCDq9>t1qs8Va<g#XcK9E zP^0dAP@}!@Alkp8U2e9$0=AT$4^;~(4Js$(n>I?>9^*r>Z*9qOYlcDuxL+meqDivH z#7?07Ta0g-FpWzQ7xp2oD`Zo|d404A1!WSEZ(`$EBWr=w=sxvO*%`SE1tRkL(oID& z+}~rx0Eb$n0^DHg)b+MZU-3}eH?OyiOG}5^_Mo;m$&If_#Y2r>xZYThXxNNq-#|X! z&(EG%3KR>{HHt6FDFe`cUcyb2Wr}|tBcNAAr#m)<9i;Om>DqW+1h~Q41u@f5Z3l#$ z5|P;ndWeWxnFuSCwa7$_x`BwvT>ogq#Px`UFnueMSr7X{Pf|FU9wjEzBb;=&P=T8Y z*<AN1c@ooM7nO*Zfv6&xynG;PkjYCV#5_dkoj}xJZ88uwSUX21ib)VdL=n)=$XZ!0 z5n=xuRsZVynW*NY!`R_0#lF##=ES$5z}uw3z?)beGnnvph+T=>;s)ptrJjjT^`Zb2 zE<PDI%I}*Ki1Cwd81u=#vYzJSLj&gQFJHxflN8RB$D7B};eE=9P7k|<9R{JZeWo%P zIX7g!GNpZ>S{4vbs)QM*nwq=r-<Be3rIAoNuPa4V%Bi~`ML>O?$=!ADHoX{2Y?r1N zritg1)&4p$QJ4?pa6{x2`<*KB;XcGH2o?5YmVf%~EMnvRU8g0iB@tPlu$u1gp4Wwm zQsS;IDr~@U@hj;r7~hmW%<`H4u0!(<j%CZB^-Iyod|%mc1^ycl=LSA+vSH*42}JMM zF1`4ioSFrx-3ffWB4Ch}MlUW&@UF=QQYGs74U;G1-}A>O-^ryWidiab!RfFCi$^pG zq;+(-9y@+nvc@Ci38W@kmS*wrTE>PT6;!xh8ISxFAB04$#5f8OqE_*U5Jw}T!)pP9 zSP_qW^UkEBsJ)4`6ye+Akv9fREZ#oYThRbz4A(=~sNt{ys)h=$h1^<<1T8Iu?oYjA zE#=>wlE-}>N3%u)L;6@wWkBk`;($dl=wrT>idYT!n)4DM!!satR?0Y-!s^+0WYs{i ztd{Y}KVyjg!I}Pn1mmC!A&9H#jz_+ZS%y+~0yKh%M|uXvu^HV!5*E*h92`K3HR1-v z8ZPn6%5%8=J(Ha_P#zL=)hMfuUR(?Oz>G;i<7zpT390+yiV%Yrvt$?If&qHL+mpKD z5pRs_rbC+uhE<0CNNf^ubv#lMSBIV=401^lP*(ujO&+8|46y0(7^03m7>~qZG;5cr zl;O360{E5*$TH(qtTJ2=`FcDa(Z_4pYPJf75{y-Y=n$7@#=7&EC|;3ykb&~WF?E>0 zf6jjrQ@|*V*GI{S`w}Mp?x~}Q!~p-yR0H>DqM)bn_@E7Lh9LPcn5%#7ndwB*K^&+a z;=mUJs04A~6FG%A;FnWINPQru3Ly0-IW+-Ne~?qtA@%kE$Q2(q#Hstho(*#9a+Kt{ zi&;eX69bB{g-Gf)!k9e+<UwP10i@1EjopmQnz=FH2mzWTbLD=3u7_MbJ{_Rk1Jj2T z<771R;PmbZP<Amo9RzKm88#CbyA_mSI^c{)W)B$H2?q-xb=v?iTft2~H~|0=BP$0A z4i>Tq$U0zTQTH38$W9~8$%u`GIbHy$ej8<Kioi_9BR9zkRDA<$KaJN6Ste^Kp)EXW zc6RqrY|{00)R-Y&PLMf+bia_5lSugs29V7$bd3O;GYS|ssPrSC<BWqi5c5+k;~-+A z2GU{-ok}Dk3;Xfz5im7w=kLEYmtw@H<NUL?TDV?lG!nx7dWgK^aIleQV&Q}!!d33j zi)YbDOsMZq<rL~VAg4w^>ThxinVdhzEMR0xz-C!!y?8Q)Y#i`O0js}0m}9`D&tWw< z0*E;sx7Up59t)|>u@NAyVh)%yJ~nnpvS<6pb|aeKjE{whSpumwKz#`yI1H1(z>Wo` zu855|ILPRG<;jqUd>uvk5~#cDdffu3Lzs5NHP8)eR}XcX?hGiq63ytY1Wp|7Gnn|- zrl+d1q8hp21^&OLXEfXdO;Po(z78q9h!k=1)zD`nlz~Bn_w*xn#v^}<BHMsu9*?BQ za04<Bx7{G$w+HHaMA`E+gM9bFqd&UONP+d%@s-w*+(ep9`l+fg*L_-YOhd;)Nk2Je zl)CgH8H<76ggWa~$i<>{SN1J2vdEtQG?Y&I!2vb@itYnA9Lfbbg#>Xix(|E+CY~Ok zP3YtW6B{8_Ejx|71}fwQ`JdoDtBb#Eo!eM^XZf9Jb{1UKKD9DLsT3iK8Ox4^u^)-G z^<jmbhsSoKmDDnn!}Q{3(KZPy#6tdNn|@X|Z1hvlss`bIinRm$p&|I$C<pK-qV4?I zifry2OsTQm_|!zi6l=^=g%gvRaH8x)06&jUJ@R46!Li-Q?8hUwzyLif5!vMfD2068 z!~rF6_8c&2@bnD#GvetOu;)(jFi#HJqJ3}zgt?n%pgjrcw%=y29`3Na?KRns4enF! z9Kun-PquxR%xo4&g<=Ukw36ft?U~%n51O|1kPvY>-HQ_tZE5;STKlS!f7<==Ocmc5 z)tNQ?2X1vM!_!`f)bI-aznlRn-2?H6O47^h{U)lZRH9vC<zH(c1W>8=9>~(b4v?n* zToZ)6VsCaxsRr>X4@Px=<tlVh<-zojmZ}NS>ZE1It2t^1*+K1n9>N#Fs0IQTipBKa z1IZ9zT&&#tMm3;V4Ey56=X#mUhqDlx86l-cvDYCyMZKT>TvV6s3}YHyRO4%caDY~$ zg59Hc&ADFX1DPOBfTy~nx?|K{M~KquqS|%{lT20b-B)`yTeDZYZAM7TsmZ-tpgU>` zP(Ov<>jSD4QxtnEgiSbfJ|!)rA*(}b^@1#|uO_tPk#~Qjmp+Y?f{rxX6%Zt(_I5&C z_nDe!00%MQa#S~g-n*p+k%#iCy-(Ks;YYdwr2&(s8u*eMqBNC2WS#JIj#}V!WQ9Pg zX`ga$T8N>5V)8&#w|x;XigZxEhiU-*#9&l6k=zS0xs`xuBC~f@%@BDL(?TlJ5mG1? zWwD_hu&vmTM|Nlho%Vwt>E%vAi$5RLy+`f6yN1~YE#Fh_U0TzQ2z{?YcmmH0sk9Cb zD9Q`r+B)HxY?Yu>!T1_0LpvX|3o7zlFPV`Nq7fVMbhaXdD}kBYK!TZFQDQyqRr23N zb?ad(zuGQ5L1u+i%#09@XN5?nPS~9Gw;$;hh)=ZwNmc+x6~8}96+yUV9U{6`cmg5< zIL@Vov|3aR1f<}C4*$!Kw7W{cNt!3UV_0ZXF^;_$)m2>UCOt&z2I2QS;1HgmjwXK- zRaVwPL<V(e6s;At(3<2s@xT8_-)9!B_L)F{W(UQOzD?o#N;=R3@vo^`zE0pDQ}||b z!ZUDoxO*K6C8N+UJvF~3iC6fNP#Ew61X?d_Nv;r{!BM!CX}5=VuZAf1h0{{m`8r|G z+JjNzlA?VCTP18@Qk?4TaL{mxY0qQ7j%qF`Q9S%oeu&Z4iRp}@oek|;{aln;nRecG z$7cMQovSB4<}Frm#!zB<B9V-J|IyXFyH7uSOV>m1Ov+6guWov#+8{)!mCSDF=;3dp z#7gDvYGH%w+o)!xYWK~ebtZ%fS7wG(%8C&G;K3*}mD#<b8e-M}i%(UyR|`+5AoM;} z)jmeF&H#d@(ukm`GV?<_S00EmE0TE^R||}ISm~=4)~hZ=sTC+BPOPBeSF?hIUwVbo zhXO6Np>69RFqo}^u=vhL05Y5Q)d<h10Xm!XjTWsew8%z*b~-yHq=q@O`(Y(w@;bGz zR@kD=(`kH_)eeCic_2z}uM^UiDSUKPUCEjInf^Qyb<5PyzU&Z1Rfg0w#Oo_j_e3S- zBfNmRQtLxz1LWx>d?Q7!cDS4HJs;B0b;2iW>ComiwChf|VDNm1p#i1}y>&q9U|l6d zq^*^NuglRPw_>ih+Qhle$wfLEnt&$!W33L5z2_R<l<fOH7oquAG97wy4c#!W2`N)3 z=WOn|WHPjAwY`A=(tJ&Oav#i9`mQD`LYp20hzi2@M8nyp1v%BZA0*?U4J-cuhnfd~ z^lx)6BvT=BDYYaKc`cTLY;av7!oBh~b^^(KFr0)LTiEA%Rzf&ws!0zE$`SG+D0y45 z=ue=Xm!d0K{2(!wwXw;N;uFc>s-B5$VD<3c9DAHif%nGPdNvi_o*2QV!Fyc{Ye|Rq z+8Ew~wgwNxh?ZgSZjRw>CI^WXF_O)Kw>w6*WW#%DjB3e&w<|`s<idM#Ov&cKdwxv8 z4u|*L7|rIxyFOMRT5C_iIene*l(tszJ^BR1c2#*;Tdk1uNF783YlZfvIsqGB3lS2N zXtkLda4)oRwh}g>Wi~3|mNXDvye*Zq33|DJXxrcL6y#cLsQR0R9Lgr7*v5(0nz5p_ z+9YzeH^L*5Pf1kIDTO47ENmfZSz4j@cvAiZe*Bjo%XBrGLQ`ABarX%|xEJUB5Q z<@G_n)sE_EuZrW#DX5mSYW`J7@0wIV+l65h!KBQA0Fl8i>=>okh9(ix@=>5jx)u{G zw-nu)UD};VI}(uwdE4;w=7<qDOU5A|JGAqjLBhg45qTr}ILizN`A65oj*`KU{G%R7 zY9V<L0<3sg52@#)6r|E2wJ)lKR2HOsQ3a&(Ahk0}K)l%s7IBL<+f^qp`L%*~B^vom zA$#2dh)ScnO?mCETA{50m4EIs5*0!Qob6gGhc_H2DuwNHM~YU*;)c>9(jjEdLO|^e z>%kT6v>HUKHC212A!muazQ8bZ4%>WGTZ@H9;&UZx0blF1aF<~@2O2vAA4RhGlpR)} zOrahzTcYa7aK4ffaV=aX_~0#wHO{3Xfg`qXK)nnLizIf{vyu>T3TmBCL+xxL5+K>S zE1n0jF?AxYdM}JKX?=J>>s$D({Q*S4wm$46l+<ebi8vL~spnOy&XJsizm(jJ7vn`o zY{D1Hao+`k!2=;3<)}<O3#e<g?12!beLI{;{_e}|fZ**gmP`cTMoG)JK}y0O{Z|l` z{KNmZU^a`Jz6>Udzj{YHij7pVI*{yZHY^|=PZvoV4`8A*@jYhfr>{<%hnI$f`lA$U zFma0NWZ1k}jj-SciJVVhCd_=Qmoe*)H<zJ>F2!0+N`QH7zymP#0Q2`Dm{fq%16&Kh zF^3b8&rS?3+bGu8^N>^Z%2RSI#wy2RvIl3scxvF|UeaTBf89j!ANS%Ha1LJds|1gk zzmi_tMs;93xeN1RdlyQklcaZnM3vj5F)%B|F;5CTnT?Joh30!lI0zpmXtZVlE^>J{ z2wJk-p>gO0Li?;h;B~^9NtpLZ;iz(~bv-N`@M1{ck?hcqV?v}BYb|#`6nni@eA-i2 zL$`A0B+O%D@nWo%5R>togG6XOK1*_}W5POBo$&jL^+F_7(W(-YRj6)@YJub!&xpzD zI^l<EvUQ8Fs+#sPVHE=!lMCex-HPCzQWK%gjKZtj_PFpFz7X({-pP*n@ZKV{j!kyd z2{B8ZW3%u!msJ2XY6VQC^llc`xz`ISyuy*<nCz$lU}7)sO?GS&bkN=EqV>Y7xEd|7 z1RXQQ@sz+YP%^8+(ZXV0So4Og<B}a?1C)1)qu8~?o#t5W>VzvTuevU{S37=mnVam6 zl7_~nM#t)g&L-0FYQu%5MGo%Ah9p>&UyE?2_?6=N_-TphIW1A=H?Y5BT@c2b6ug!? z#g?=81aoDRfDFR;3551Lc?L;#3REtG#m3F?lgrYs#JG2Vd{1TezaO?Lv9N`C)5e5U zSoud&*krLK_Hi#$+=ng7vT<RI0Cg+2v({<1Ic{}OVK<)RPJPoZQ3dU`zJQ6X06k7b zK8fD~#{o10YO0!kOIJvVo6ev+MF&-*#OXL0CFT`5jvpR};#%1E7|a6Hg?V1KJ&cin ze~#)rDxHf;ixy?06A>saI)0gxHdswnK+}wv6B_^AIb2AB&a36lcf}FCX;-n;wjpw@ z)87s@!`#rZ*jSt2V<N#OSZEkAIX|z=BFs(u{AAdQTO5hVlz71}@S;H(Ac!^=2DLnn z-E24+E|URA%Yd%yqeldwZpX5xdb7-^Ng^_bPp;483W3~U)W9CU+-!9l6A|nkH2p@t z(>!DFEQex`^{jAiW_gHRc}&Bu$6k}gMD*ic-A=PRg>Q7H@||v)zu;Ez<|Y;2*ret= zo09npO?uwE4Cfn{5q#$|C4XTV!<(0D`Nri*{Cua5A9hH?@l4o5rtvAhb5hkljMuf# zmzYPHBAsu(1bdThn)Z)+F>|u3%Ec6Ewn3=3ZHuNt@XW;9H)$$`^|f2Ho3xOJTN@-_ zDR>H>5ipu)!+j@dt1!n<C%n6u@VTwE!kqDB2Vk7~EL{8hFdI$f$`DCz$>OZ=(t@ic zI!tgLlhmf%YY=D*@1O;xj@e6eJTB;nY1S=S9w@bk;Fhy5C8SbeUN(d&vXe2m5|9Jy zd?F2e{VH(Jghy!=yjX>xPN}eBZF8)3Ld_DJ;7_$Gtil)i4PaL)tl(hVRC^x>QWcz6 z-KO@{Tfs~TYAge)rdSnwmqCY0fm9}YJ%SRe4Pj(zNJZ;m1F68^4g<jg(G;(O1OH@R z?K{`2-Kpo(d~KChv2HyDjMc;Tls=E<ln8UGc_N`bCyhV9n#D^rJSip<Wrs)zE6(mU zP2_&XWUFTge|l&YQz0lC>V#piDj`=qY_$pRu1W@jqa}1<9j<T1!Jw6aG5P~OtJh=+ z0Mn}`*9m`w9nzVK3c*%XE6iV)zHN)3Ri^E#6aIpy!(MUr%7?AGy*e;=)7`qTN|(M% z&gnS!Sycw4?E=d+GLv+>%3e{1-d8C@f7d4OZB;#L)$g?lo0mK(d^&7_v~k^fp)DnO z*8*wtx;kOUt!J~7_s#?jU_(mf;$G7VUv}Ca*s&^CS$$b`Ld#TmY&Kz2ajmea_8DMz zop5rtO_*mwX{8r7SITa!NuXi4o+8G}{gVcjfWy@K(bc`CNzV!j9q0j$dx<^cKxCT* zf>>!y-;*CAh+5c}wPt7RVd4ED?0eBZ?V~I$pX4L=+F`Fq`pEX2WXebFu?b{qZn9m# z)2Q|>$_il@enL4z*r{|{S1QOok60^&Pg5RJP<x!#8JzHGCe}_v;d(&<+o7j`7_yxa zaE5BvK^ki>vMTnV%c^QYp`4xdEU2XxHe5QL%C{g3u0!s$hqNlK&znX2YEdb#^l5p< zhc4FC7yK%a;v@HXvr>J~g8Tqx(#O3-u`io~K@h|Tkmj&GANNvFR3jHq#Wds<kXH<W zD2kEYSd>*Q*E5h)7ca`T$~kp0-u`i~);v3lfGam7bf7gWp+pBI%utEWoC7Z5+S$uk za0w4YuaSuRly~uj58O>XT7#-!gQ?~*$kS6uum^gu2mKcT=sFDMOJaYnt%5XpGsg3m zCjVkt`Lp-9lfP+RE;CE^6ZiG;_46#8o%Ia)20sR-#i#=Bz~rXB*=7STG5+dxAJH^$ z%}3O$IN3*(f{)-x0el2E<RiAqKB8Xs5jXXH3=5cf*>k{0pvZvb1a5>S&73XA;LKzL z@)vmsf&+&!3mgW3U;ttOkRr_Tz5nCh)MC73&?BT4UkrL=KSK5)Kk`dLH(V!l(4S<$ zDo79h#M6jczk1bkKj1801!O2b{3TY;bZ?Nm=4fUiN3#Nh(~ft4{1Z5uW^gpaK2OO( zZYJ1|+{`b#y~dww?&gaa2HvJw_BQ_|!=L;GKd+GqB!Is;)msRvr#FvPL$cV6+|Qf* z!0jVak^6zG$g=zKgZt@tlV712Jzpsv=-+5d`OpXl6-x2>{w@i__JPY^e+1=s_8W4_ zTy^5XLbMbfnS)RGQeJ^7#qIq);e*o|aEeN}X+Xhmhg^dBv5^K=f1LkLkw+=TW&ONX zIhs?7^Pm^)hhrR1+KA6F1CkVGva%`AuDsvi_$i2RUkHvks&}TtAs{I)Jd?r-f;g0j zJeELx=|E$M_T!QQQ;J*r(Lo706zwHJ*AMn#hATm;M=wWw{|yf}glOS^L$v3=A$sB$ zhzgIUIXCsBh{;sOb+R%8#34jlB2p~lQv}9cC+sC)#lMqwXCH@+yb?69G@RWG?Z@gm zd-B+u_D*xI2egCdRuzJh%vGW@oers|hk%$c#!Ni_qOJcUJfvh2k@AG6^2(XaV<3&P zapyBcjwuY#VUPOF%JFBo@w(5^DO(kY`*E45uL1|c9>z1#!Fs08<Jb$J=L;bEtP`I~ zj694EuTgpy?BuK9;0?Cka-+-sY+&oP^QY0kR;(|1eA0E)56e(T0{W@?iF8=6)=v)v z^+R~?x&iN~>v&yq3#L7Qjl2}Jvb;+*3}4GXq?*RP%l@U(@<nGJHX7%LoiCL}WAzTt zkwj!$90@x!pb6uejKh=J`E1t=br@IUz7lD)VRmKjm-s}}x+6C7O9u98sikLwz$o>< zf|voFT8h6#%GwuHvpDGZVK_dG)L|nP>}EETeU43cVPQg3vaZuMiu>{pmFWQloO*tu zG_oEy&U3tc!~**G59tq;NddeC#oe7UF}RQPUqfH+>JP4WAcD%_2LGJO^IzhnpUNcs z6jX}SU^RyVDVZ$ab9W8iLT($LpXyF&1rmwl(gUvJ(poF|MH#CTb#KRM*vNrd1UYoX z`L>)=T*aTxDd3XAS*ikd3J4~z9TV++n3?9QSQ<WOxv#JOm{ROcOaURK4C#K8Um>1P z&_3^4Uc&Yft#87<ve<v;+D)(W66wLcc@LAm7DryLMY#N^I>abO3g15TR@jp~%Ap7+ zCbGh%2fI$xi5?9;&3a4M3G0|jer0avn5RXhxGFI<7cLlHIRF>cUa^fk2m7z$GzZSV z5`>dbA_cY#G=C^}43~QF>=7blCrhM}TBWE?;H9tGzC4Fd@;g2ZE@q`*+6^wF?5I+# zNYKFLaS6<z6ptk^<8(7;VxVMfqV5Vd7nNR)<5T+s)6M8mi8Cq1yabX<XX5zfGOJQd zhTG-9<BH*R$EB?LTSvRsxeFaehe0^MmT(w_uOHGl-hcrTHx7?k%s-rW(+H(_A&!lH z4Ri-Ir9vrw`VK<e5yvN931TNO{=K{r+*|KJia_@>BKCAPxkkNrnESXi-m@wDc6S+@ z!|EJH_PA8og7cX8nIz97xIpD^em>;FPWNiIsCUVFXoon-I|z^dDDBKTOu4P@JlA|z zmV1$#aizKR$5EYaIPF)QeK&9X3C4gKnrASEW^M*bBqBeYun$-Gm1p5IAImc*Far*y z=s~smqbGZ@)D3`yE~G4qGhbcCL?x{xl^9Vq2!X>p+d*ir+)8K-lb<?r*SMrJ2v$1? zt3j}obB<)hnrD#C{$L{V1@r-Jr*njM<P<_H!7eF@-RH(EOU^aAv)4X0R(l37*>a@O zg_rGf8Qh7;#|euI`BU5=9mg$BKQ5jpPL9(B7Oo}4lM2txqXS!T{EE~-h|>w8B*ot7 zBFerF5|)VoDH7+$4GY}0Rw14wJmYQ(cu^ar=N3x<K7^VM;WNDWFf?A*pa!+t2Az^+ zr-Gy<`y4JxxHvXruoGyiA8ZOKP2dZJ1X79sRnq99%Iba^Sh>&D9mFArmqoxp91LO@ zGUzn>WRE^y3znCb{S5I112eKEb{a0_f~lrj@a;H!0+opTCSg5>4!`K3$p+FA!vpaB z(Aqr5_h8VKHyHFyJ=@q(HP|ajY^u8-TqZ_%*w3W0ea){ny}H>}a0WL$WyPlu0!bO5 zvokSkrGhmCmca!+OhX>oAF`))uxD5Y*U$X$p;G+`8FK0krUjBk|ENnRMxu|pkwHWz zud?#HFN@i1ww@h`G{ve8V+QnXThu*xI!6JC`v#C*`!Se4={UH1@wbC#bfo)fTV}xS zMhlm;zy^1Th~vqDcisE1dY14u^%)WtHm_dgJxS?sxp0FUVz(lWY5d!oXlJ`k5lG`~ z1?iw92=$<np|4Q6qcjUwg}M+k2c5P;yc4Xy^@kJ1c$Y$4l&Bb`or!KJq1@aAK23sS zT$J7}UlqFM!f_yb+5iOy@<1#H+o>^=39SgowcrnT!TDgilkQG>CD)xHODqw2H(>xL zwnI8mLVB@XiO3|`(ZD(+FoiW3>8s7F>8^pu{3v!98;MSaGp?TuD?}AsE65x=8<ya9 z3}wRMh71zR)Tqfl&B=LfI2e5CIA!Y2+Lxshi=vH)ZPTxup-gm`!6^ux>cr8}7u?v* zLV$oWEq+ScSWiJ5RVU^|aVXIN6nq~hrpdWv$R$Hg8wJ0K6DA7ctU8g7e*Gvj_Wd(d zI9>TRTLRa14A|2)buN4JS<K9gD-0M$4~yarxM?gzSW2P6_x=3D<nf$N{G`9ZZ8cdZ zqlyZsINgur(i*IlC=Fg>DEv!s27GFU7ykw98hk~3I~Yv+2zIn{R}WfXTw@~~hFhli zNsz|M_!9TW(nfv76qLI!UME&CUr8%ka5%e0C3nZ)0M&~G=x(wri3^u93UNOKoG_0C zJXI09U9uJ?B8{@Q1nVBKfee5!63Jj=KgeJdnnu@TK!UI*Kn(v%&;oJ*4c#!Pp-ASW zi7?{MMC8R2*oj)m7s`fcQ;!~$?3#+*st|MH+oe*&bIXw?WyRA?>S~lqi=*pE3UOW> ziTp<0ibt<4zWimpSDz0oT-1+lN#F++;`0Lr`5<2>HuNi<m_-X7@n9il$bs9i*Ur2Z zqCcws`6k;8q?g#ZU;E#6V_}05hcib<rRpPeA@6wKMw^En@e#rSV|(({k9zvOtJs9D z5Jl{;Sx#iYjfHWXe0T4yJ{%<A^fzk9!DS=6J`s6AR%2UWyyLSV4n!e@U41POIEF*} zlCwt!3Q9kRBaRs}1l7Ipz-Cu9=7tXNt<XUdON*p>HgtnpZ|OU87=r_`4YstvT<~3m z?DHWt0XG4E(?_z+hewGdK{&iNO#o8#c*nlV&(7=*>Lt9Ort%_8f<3`G5F$Nh``#}F zzl0UQmlCG`C<iZj+BW^foV>qDOrgFRGfg}3C8TgePBZc%00V9hplx`0YOXJ*9f-<i zZCNcg1VsigQx4b6z$RfaLSTi?oO#V+P&|rR&h^rjH-EAGEqt`qhK)-HK~!k##0IUI zeJQNgD%qZBSj40H$9~oS><{mRRms~=6c#UWe0b!yHVC^H{PV*?LxXK$)()HQ%&@~Z znNS&Y)@)+4;7hZ5e4C99h{v(ffglG}8X=gzHci6sB;dP4L_p!u40cM*Z+lYRN%D#f zHof{hHuaE#r&}y*&-GG8@8`U6nDjdHcw5?sqb#H!pO6&RYG<8yuPwBs`7tvwVX4L9 z&ptEXQs!^8Sp9IvFfbZa@!FTi6`=XQ>p!#>;|hNC7nYwrqAs|+)^Y+fQxm=kuCZwR zYb|;H)s~L~m=TUTH1@^iZ=nv7&toRFaZMS{D-U73-Da;qwTZ~R2~>--O7K-|;^pAJ z@O-?+HV9Qyft&S4A&4Lm)Ja%d8xp=CUi49rVY%e%_sF!bDUVWzK*|MQNrfjtb|)c- zd=lJ}7UL6<2NP&JgWoU@>iWr^J0&Va^fb>vyBYmale4ua7owBUhQy2pGk%aVD8$F% zySh9R#j3kh+jQcKa7oi(W>^)>w>8lo4%Ya2{@37FALx)M13pd*Z(6T+W;b_8ioyl? zPMfnrSFLH*IdhuTK*F^JuNqjW>+gWYccS1QeuKPz?w39froz^5(2S^HWyQdwh6i_M ztp#s&0+n4$qdL{KjGDigK95p}$NTtOGwO|_45njkGst}W?3p81g18wopigxF6}+ie zveU4K_?$nSk;xS_EzBR+U_OSn2>!%-y`(DSUdWtPR-HJIEw~=UdV^ZFH;9?h2^GyI zv-#lVm1;apFnHLYT8!P;z6Z5ehunXGI|OqGblFL8<vFzeGKnbnW?#smKPh$SOD9R` z=tAd{!`QEa_uncKm;`GXw9~LTKk3=bwz9O*`U9St>z*S^K>>tyzz5~DQ7IdNT?xvx z9(LQvAZ+8gVcA@vv$HZIkOsHL&|T&H1e`sERGP(=SrEb*EK5(+vo&mQb|R7tYxP`E zK@x6y<De7wB;bQ;SdGBkDd?K}MX*A~`&a_AFlSRNqy4Ec2lSTwz}#c^1Em=tyg5Vq zGXjL?m%zqz#)52UK6Mb`tqD`s!ph5MaNl@`<uDwOmE&do!6kW?dFkxYAZdclhPgMW zF)5Ax!Fe}qC+35Lz|8uiaMQQ+WUnsO1F|9;-d(bB3AvPP)E`Iur`RL69hv!RUFWie zd5wOopv({03pn<Sc{%z}eZQwuexLC)EZ^T$pSQ1J(c-k`!LmM&X+^{G`aHwZ1&iC~ ze%zaE=4}*AR`b%v<#-8iV@_bE#>UhWolTuhOBzkf@hPUpZ<@Te_s?L4tn;VfEAKa8 zH)a*jc|Mj3_o1CxonH<2u1-mXoLt2OE-d@#Fb?4m@kzug^frJv_QX4z7Uu15$O1y_ zhfOPH<r$Z@Ap(lMHVlryI-5QSnwu8n8ynCNc6+{Y6XoWHISia^65lMj;2L`jVR<yJ zG@Bbp*3>kg0li}8<ezt$8?bSh_*)NWXY?YDU2whRXTk(Y6m%}Z#0wtMyb_kRiO5}X zk9>r(FwTT93o4lxUoV%;imO7H!E=SPZx9n?TV-e96oe0VLMtllz`?74V;)tA73>Nm zEK|<)T=j5U{r6w-tj==eS+;&T$5|rj4YQru++u{(5hq#d>e!VA*4zlk{qf<J>5+A> z)XG3kXSNJe97n=<#Q)9m78~}%9*=Q_DhK-{#nI4c33fKQmgg+aY3^*oOFA2-2QgD; zlWFO#!Tn7qkIc$@u0h|te>pa8`W5#p#uf1Ky7rW0Jz0<VXymqm^vp{a$)mkIpa4c; zF!e4hu`}-AH_P>M`IiHTfy;t*S5BtX!5AzxuBA)v-naDpQYyTJFy3vFi0OEV@5rlH zpW&nc81Zl`F<918&>t9Hb4q$`)+y<v@s#vN!zt<QmDJU*S1rgx5KnW^$Rjs`O>gQc z=|J%*=_S)CsjHa!;g6<4BnCk8yGwA;YWC)|*rxv^{?2N1H9i^4!n5%lJQvTyhvR>N z89>2)Z3Vo$;Az8}v3z_44&t~vcGaLrE)HN8?#f5M>s<EurTaw+JADZ|!R1w9umtt| zsNM`#o5-oksaA*&4Gg|l554andM_V(-#hefl;62EN#f0r%B@DJu>%V6t5{Ao<I1VR z-SD`wssJ;NyBc1Hf720Di0>cAFtQNNbqcWr!SjF3;orX_J;@C-82w8d_!l$SGG4f2 z9IQ+x#$*o@#ZHWbJuF!2W@N%qOSFuoSo$f<PykEW;PP=ZuPtQ*lHTKibv)K$HPfP% zF7&{))&zD_oyZVntg#xc>GD<gi@B;KF&ryA_Lh4J91~IoZHZcZD)v1@)e;lxeo8!4 z!fjR=t%m)}3I231b_c973*(W6@L_-zLNIVMB2lv01Ycm{tF49t7TZC?y;f&JA=2?1 z7r3~e7N^GLrL7(IH4srij#3ML=T;by{%BUsQ$1O=B<vJb@<Kyz%&4Kkhrby$Z{|Fv zF-FXQ@!95h<Zp5FW}s>n0aiUxQVtzs#a09AGzB{S0C=7(FLi%jr_v%8R}V!&QHM7{ zhs;rh_*`5eeip|pePDq<hxb)@?}D<^aa=C@FL+<|Gsn}oqv~3Z$-Ehe;4uRt;;Fb{ zvsxsfGajDL1_-dgdMiW#PM{9d;{LarkLutedIr0@C&g(nrBspKx$a!q5hWr?z`MdG zbpM%wZ!<~_nnTYm$99li8u2ChQ<U86OAA`;9LVe8<Sihu3;nYrwWvNJ9!-YB>~vPa z?(NBNmVp>@-NT2FkCEV_LQ@hT{~|upcOZPQnBboeA1t}kc4x(0+uREJP}0GjQmMXY zIlcqi4*!!vz6Cz~hAx*4j2PMp5>6cWp2Mxxh=w<jvJp<qn6nl;q7k#?yjpzX9R#8g z|9PzL$|I}i+go5YiWw2a#bcn{PIZ3P3EY&uRxR#=TU7{$MttX(S{!y9;8*R0w(-dK zZ!<^huJo_Mj5{HBDR%raV~t0S!sK9%64gW%M~jIVc47v|tsb7jqq)u<u)0c<M-01E zGyDe`19^~!O%4i_!j9LU283dKT20KHRz-`yiy2I*)v!$yJ<<7xE%Md#PbGs%gSKws zgHg<qbz*Q&oOS~rf^f|{1BElt=KH4^g!Wg^`9tu$50C!n3g-(wn;}|>J~9~mHYrK0 zh~5j5hKtyPF<$@O&bw<c-ulBWX-li`211s_NYLqR5+YOSzteda)ZSHHccp#xT~+@I z%5`!}rT=#49Z<Ir>b$GD1yx@MskXW+{!}b%b=^^oUEK$aA`)=k$C6=dBYAb7xy`2Z zS37H<Q4KWeSUt1q&%t;^H-ygaw97TtAEu|(RJ{qdyhF-0bVxaR=1@E`Z3t?za|%FB zskZ)5kycUlVvuTw{|9u{V``XQlZfn)sfLxcztC9-V1>}l{?${ewg-<(d3@dC;oR#I zqzXwmsNxF7`V$d#0zMLf@xCySh{WTl?yNmc)Fs0yFr^FN<8=Yhfo5798B?7{zV8ZL zutxd37(Nw)<1p01r@%i>L?*;BLn3k}j_PQ!1_qv4mF0j1bwAqG4t-G8Kq4bU#6}Oz zbqu4m$yI}56F_8GC7~^cXAwLPzym=5c00VkhlgMZZ8kh@w-efh@Wv<_Yy?=CLWOuZ z`WFy$Jkk>7XWr@H9&qjf<r|!CItY?r=J{{6+vE*$aSr>kq%Yhmr4}xCQe6;AyMnEL zS;{JGaw_>ICj*ZP9yKWL!4im!7AwTw#649?@sBcZRsN;2+BVjB%#ENeW1~6jrw~Ga zQG(gA+G@fKN!>~g&ULJop90juBnYS^!NvLyV@RF82X^TSl?BQ($^r&rnxvSNp;Rh! zowFvvf@p&WGf?eG2XXOi|Cu0|X~<zali=S)B@Or?4v6Y7an8VBA@2Fz0B+F+FoUBS z6HmpK8fbAsR4Fc(l<-fOtW{j<`9$R0z%_L9;iIwCFErw_5&|>=;2i*1B4LJcAen1s z#R-DRjA{Tu=z3>s2DV>Me>FhmtG>7}{4aiWDG{K>hQt>@$f<$Pf{)8Ol8AUw0I!HL zB)G`S@O29b>d-x;F2R2I(hl;^4duUrJP!Hxq5Nn4N-;@7tWK?Z?H6NzJvJwpKNw(x zDXvOAIp=wh{b6|CfF}Tt1@!0Jp{f53<P$7JgEv2P&%ASgd+Q)_z1_~kpbfXkrbr=9 zk!X>MF<?>@qPHKuYXLqaBEK4-#ToE)_G9KfRY~0hPx2H`!^M3i&+sZ<&Br5~28b5I z_bLdI44{v&?ue5u<n=s!(>Or2P`hDw$W5;b=&sv>XNGLS$1$CczQGn?0eU+<)Z7AJ zgM1THv?$~}6R^PCx5M1G=~H3uXAUS^lyZ$Kpli3VYinS}H^4_Oai)cVV{t~b!eDmy z)8eVVRn9gWr}3i~6=38>SO8AVN0R5UQGbRbpM#~)q<#6!&JfO=fm7gOw>`v=bL?nb zjQ<`dvV|m=>!mfw8ou495Z~-qh+;o#RqTdVx_>|`bYEbw4dq`Tw;5snHi$zkKpsEi zAMBb6sAUqY;$;t#_bfQuM;&Djl^6IC^Vuji(pmSFRJtCXZ5Uim(em_o?1#giuP#$! zNyXi->>5ss#|AKnve~NQk^Uj$TrPJ!1&EzoGp(vCX#L^KdRlz7kE2I^7Nkag0{V&m zO%4Ngt8d^9+bF-a5=}GQfPx#h47m|Ze8WSF9eoUZ6pBqjo-hgQ;pr%DG586~N;nu+ zooCt-5ix45l>Akdnf^B*CPj?Yc;Qxstr2F;uVupWfUw`mge~Cw88T%rnvVqWkwTF1 zY2Y%BmcJNOi@tu`as?3oBLF+p7%py-n;79gPyI1|1j3$Z$%U*UvV6$W?Ogb7^47&Q z{b;Ef9@26hype*x4fXRNjTGHcVoFhqE8;CdbsM)Yd~oWQVOXAqw6GXSh4>;G(^}v` z8}NXD0MEX_I;0D5-{;jJIkFwNwJWIcX+gsCb5NvaP_{~crflto)mVQxXdYH2UDC+n z<F4HNN}6-EYfvW^<e;d>HEmEkF)OIhG4ofK26ccAsGO_ZUR&M?2AZsPx6Qx|(}P8F z1ohg8cEBix--&BSEyCe~Y=rkM9mT26)UaBSNOZ1sIy#&2!GqEb?}n`qVvoc-*H*BQ zCaosJ+Tjjld=;WHVYT3_I?%Y*3RjsLn+GC9-*oeZX58G_{6UbEheFmgm`PA<o0L~a zXiLF%)Wf5PczQOQ;oJ;{0`A|Vh!B6v-MOV|FMO@ig_{ZSqQpRq6@~T&W30*>Rv~x8 z6~=2}oLNix$L=1M|8(4HQTUl-_|zW*L^bNrBB3SXO6Y8V6@TRJo3peat!raLHw*qK zk8DYtm+rRA%9}~Tg@ZyDsz`T_hm{*voG@lpY2oA0L+;Evv*RmivF9tPzNN%<$gMes z8+wCN+)ECl6&@9`S?Al&Ksb{O+3Y>hAH_uENq*%$8F?SV2f-issjHadOB7*;b?~W7 ztZ*^BT?D`Xo~hiPo>Dm5-wfXuqc5bdxllM^a-8m^4k)%0;-6t9R^!(mvO}0Ri>3E! zMP*!N+A0+rro(TE!3@8phON>B!xY_Csmw4%yH%QOn4;b)O)=!xjD;&XN<%S({!aI* z4s3-3$*s~P&sM3tSp&G+x#;D?9a1qi9gYW+!X+fS*O=vqMg9nftjN1|NQD@b;|lTU zfYqY(Yh;mXY92CcswgogZz`_&Gu%&!GZOho&7MS)YE&bx)!ZO*@C+6B$o`%xXA-Mq ztEz`V44$jIBCg7HKP+p2R&);-jY(k|+bU7kSj3Ysn5I{wyjDCnK$szNm36vTT}qo% z0O~nR%fBp@!dUhJ?6QR3Gy!0tRQ&S*)L*^Wyj6O?A{Mz5Y6`1SUMs#ifZbH%$8N6j zmo(MEcWYnpliXvtSY%3K2k@|ac~ba&XuoqH9{Dyl|1dsst8^B=js7sURXShsP)j`W z5v0Dxar0K`n<83t^ux3-nQxn4p|9C0UBK}}DaJA|eQ|k{_wbOuQoxo&@t37N){laZ zAm*$ev^nQ%2<=OtoUe26a~vM39!(2!?ev1IfPJmGAS18=ep3Ud){+mCA<C@rY<Rfh z;arLg;f;TQ65NbGf+mN?A)gZ)V)C(Nw)0*2^HlIDshQPoIK!zJVs1BlHcFY$u;Kql z0*f(NlM(Q6xFH4~awZ_ghbpvU=D>1RRYS`E$+BG*amDqyM~Q6QK6IRUvX;;~K)~G5 z;cPN|3Uck-1<s`QY=sCuaR}qpa7NQH^ksJ<^3Q)eaG}Hzaq5oii;a`Of&UHJL)Vf0 z<-Z~88yGqn1nt{b&zqK+xC^alR9Xhsg)n4o{Z=WdMJrava-D<!w*j3^B_g*D$fLiy z1#~85n^v3*tdbe^LyCT@q%Vp^@_;`{;Uqi>O0?qIn6}1oh>$tdKY$|Nn{MFHivvkl zmGT$=7$>_IB<jmZy0g$><xS4_!RXBxG<xQ7wFNWHu7cWvI<t#-$=uxNDsh#&u<aH& zeum@yn0f7w$4XpCnxm=}U0U&26gR7eq?ijs$^r@Iz>^I^{3{G24<<n_2ysk|H0IQB zibHAV8{G@@k6iVSC~=+rFb&Re&IBN+RA)H>BeXLRE1=9NHRUeq5DHUomv_E1ZWv9) zKsD@q2X%JPaAAe>!GP7nV}U^-E%+m-FVcj1$ip<Rd--a?Z&a^LW1r#Jov`EI=iCPY zm~MH*$$w9N4?R0CE3w_qucVjutN1TK7dJs(&97n`AbhyXiH>U5$V>PaexO(;z&ioP zkn3)}EzL2`&D#q6h$Ai4^MNBpKXc@VMi7^)XsfgYo(5wq!r6c&PgW;Eg;v}Px2j3w zrkeS1SIh`Y=S1NnAi3_Lv0~!M4V3sn?6JDZZfvYota*H$^CJoCc}tGXRy_X5ZRzlh z?Lg#pd0%Lj2~b=WS0WO`{_8^dB?%nRfCC9DhDf+eCSj>e!ui<!5L!JROox^2J@TUD zmq`EgKOqI2pT!cU`9nBMWt?>~&es7af$>53e}S+uuCL}Sjsb`cW%$;!1&%h`FFV-z zA3AsuI<O6OK*=3Uk~??;Iv}ye;6UVr99Q@y#$W$CM(ze#JO(Il9zuB*KF%hMW*Oz3 zfRe(d1gl^P{wr95-=)t!G!Xf4=#aSj7mS|v?;YHLe<tA19KwG{#;>X2kgRWl4j@Jp zL{90{OxVjT#kC&LRHVVkB_j>~bV!4dhA%~M;HG<_ECCN%8IGtP+!IfNw;SqV?kuTh zkHGTaO5fqCiQNN{mt=xHtX1@SCSBW$aIQo0W@I3uiBIw=Z`h2WPgEwtvG;OWogNI7 zfof&SD4HSNAq9aGm-OYpiJ5Y#f?XPD?@osn3lq<Eqn5XWdwj0D9n|lqKG<<v<_Dg2 zKHT&X1URiQkvm}7F#9ZLWhXbm7xIvKmHimbB+wG{W)`+u;>G?aYFcbo@#e>sU6gqH zKt}uLaKNVQQajdHQ{wD_=ekk(_5n)#v>$b(72oY6eO<4jiTAKP@z(bJ4_Xfjx+R)0 zt*lPs<cW6){?9ULyib<4J9@vU#wssiqcL+O`zE>)$Mgle*qhm(;3O=c9l`d%8_1lH z&mIb*tqT?yCU?46?)29G&}kiXdi#(Dyd?L@&5}F489LQqnoGwe*H9?NB&$`Gj56at zpd1Y-ug!xEGRkQ(Mj9|`v2QNIzbhDc3y4ewFTXdA_Df||1CjH6DEh$oCvx(7$@;@{ z=F*x8uwtt1&+wJrR$7BD(WJQw+@MCbSFghI3yd*Va!YmRRgWF+Q=2s|1N&F7c=RF0 zSO9URzxP|*$V#5fvADV}LX93XjjpPu1|m;OusjSPp=8K|c}2QWDBLg2;mQ7lDSL=P z!{yPa<<aczzh6{h>n<(@?Z37cLVF-I3()MC4O)-v`%-v63J=-`i7=DUY98%}Ttl-4 z%_!sp&_3#AfNSBL<J{TqucT*=l)Im;nw^8e?S%zkl19loJ<0!6O`01k(4WK0(_H0l z1G|W#`6rx=G1vV>4IHP#<elBW(V6AG<sus426=?je=)*e4zL~u_{h)zUxr)E9BEuD zkMI^4A%kfzeggh}nmbEOPOcLwD<Ac*lm)aBwp;%&H&@+))KUF8u=li-zOVcLG4|$h zQC9mO_;a3Tm>GrvhQ$p~X8|1;%>i5}Epfn+MU&FHE_EBAyfbKpOGQ?92DL(LK_3g1 zTWNNSG8ZuJl?);EwtMePX`yCemXlESAkaK8F!Ot#nZfM)`~C6L*Wr2Q?B_h^e9q^5 zR?~#`Re53W40-Yc-%}R4tX~dX*8i3_+KrsXuw8MvpVDVt&Rl(Kj(L|^B1{d)I4hjX zg5Q5Bs_)j_lgGI86T`N4x)+(30o}hF3+1EG#kwfajfKc}O}8lTm&+0%B~S$=Us9rN zK2rL03-Z3doF;JGUAc9+^<4@%WgEWfx^=-V1qN%ZwJyP6>1jsCaZ4Gj`Cd$_%ro0@ zDN)f8TnRNaJ#bIvGGBGmOy9ZbrG<{*6Fix;%ivBW7o=M0$4D+9nKLcy#8H;b4GqIf zG+kY=T!ICf9%GSf#ubF^qa?}={d%kA$Ct%R8NiYH8p`oWVsQMXM+mRl{WqI6_yAq* zCTxh=y(<rlUvRTc50G?ce<qkPbROvW_Y`jb_TGCAsLiAE{hl58SW;%jkC8wlfG|Ta zje_J&SX^*&5I{WWBBP6rF3w}2#W}nnUHDBGAOoz+ZpNSG2yY-z^oy?WZOA}ZHpOBH zNa;hKzZ|)F8Bunikg;hZ5a_V$Xftru0Dw*lzzYo!>Ii}OuWzwGA<`6&j_n7J8YmdY zL<kT2^>*`0K)w;!!QCQ7I8;D5hLPz}02%)fndIm~81KR4!Inrj3yh8cn`5$RGkTO} zHFA{x5^K4`eIw%iZw!cTNs3zr@yb!=@dYOi%}5P1M}T8AC%`eXr?k_JlMv|ln=tAQ zfb%ExADF-B*T#i<Jj%b)90SasVuCwG<qe&ULTAn5>||NyVQ+6QGvQ6sm*=Q0G@s{! zpG^0lYr{Aq{UoPCofAr$!mR9OL-j7xsxJ-JIh(5)2$QOaz{x)BktLHUn;!YF=V@uA zlbw?4WTs4a5gp>^ZQLN;@L>;E8Xi4oLu5x>?lS9#JrOw@H^fDoJ2#H3Z9Lu+VUli$ zh&F97Sxvm{k+HV8+^?>XiC>Azwm1dN6Rxa89g7-wi?MAT?ojF#E)I1B(rMaB_bs^_ ziVGXQO5jQ)LL28WC}6$&IILiP?v@BfPHm95N~P>+raPYd6=xEq(tgVOAGtRsLKuW- z;K?h@15`;5ist--kEYva`qi76EYP#msus4oys6qmWn+m8;<zoGb!YY4rcqzLW2$OR ztd?%BYUL{F)_K{lvzBazI0mHfp6-O54ynwk+kDt0Kw$y~?;udo0h(HrUst`)bj`K* zDR2omg#p?r?yRPbPl3@9_&v%Qwpq=OeQa#Rug7$o_nCeHsq5#%a~~T^>>I6A$#-V+ zace|AlO}Ifn2%dVL!^pmInafS&Cn1mU<~rsIP)b-k9)6`%-m~%kbLVT?3G&(CSU29 zGYQ&;SkWX5+_gk2383*<l76Y#(F{^Z12X}n&PiS;(do)HSTn;?Kr@`2U6|*4rJplW zuLF!>(mB~giC~xL1Jyz99-<%}PU@pz{1k9V*qF1kr%Y}2YltSHftkde+i4=M*;C|a zyR4C+PIg&7alfA(pOYY!b<1SuPV1(yt~jAQ`d1eKSazG+Xr^4p;VX8|9Ux3A8W@2) z5|D|8RIjG+SzM2)l15Ob_hK_^9b34|G}@_}9NC_R%Lf6M@F)K$jAK}wH^s>bKMtt^ zejq^RN2h;ts&2iE+1h84eR;_mRRBJ0XbyjH(>ipaxs^}4KDl4JU$@?w_`2mw_pmhZ zzQ>4ic$yh4lnD6n^*U~hU&T*Ze_KJQ#vaR`<*GPgU4XIr#}HZN49KHJ7bvmmNnq1c zQ8q<+n#Be&bTE+kf3F{F=Y;t~T<G2&*EAt;TMvH8u+&-Lj9^QSoH%o42GQEkf4?Ww zKf2)+SPEhcednpZ*zh-%yI4@(M&1xZFgxRh<lqLW1Cvi#zVWR#)Nya%^U`?6zRT~C zfPX<nkcX?f<dSHAbf2(FLUVM&g8dah(idUjt!)|sI*|>x$3K?bG%Pu5!}gz}nWqt$ zoz<pjOuw=KxMXPhZ>(R6j(s`!Hq@k-C#d#Xx&w=&JfK<gz#V+&6XX7J5De}fm&YB~ z6j`W5TYt3F>r*!{b<9lcW-MyTPaEzv9d6wqorK_(czjb#sBBQK87yZ0z9$V5PIzRH zf8oh-38g+cs?u5hZzW3y`H!9)XP@UA-2g-4(6)yH2io~V8kK`FMXIP2Y^S{G)f<SV zd}!~FG)EYiYcE!Q|8pGBQElM=Ys_KhW2TE45BZMgNjV`mf7&>d%C=v!zEJQ?$8%`o z4^k>NX!u~aO^!`N0olUVVCE}lS;Hh3i=B`M^%F{eTw5(SM7m&(I-}e6A*2iN1~Ex_ z>kiW_=Oydo1<N`l0GDjtHCvp8(f;OUhkrTh8h>{aLtZegoP#vbRX1k{3)DW%Z!d3V zQW87pa*4y&5S^HdjMdfh)X}ZyMu7~PK^q?N|Jm>f7fD%q!)SJbi6aLs>5q<_8|4mk zq@`bOM8_PoBNEp&8+Z@KxbolJm#p)Pu5Zwz?yywW=})!yt~!`|L$&tahYqUEf6Niv zN<#UT9HbgH!;@+6T}Jcq4SyeDe|?C~TD_Cq)d+EL_Nz<QDFw&fho9P-#03r-)^*7` zsi4`twtA;YXz#XZMAkre-Bgr&-p!&9+Jo%deL$0*f>6%v-W3Pgx@AeU)cAr|-HlHz zO$zEToOiCN-U>~*OV)&fZ4hhfTucpnvUIma2MQJ(q(}K!2vJknp5lX-tTERIyfo0z z)dTc1D=_!7dovF{Qr3hcA-v$1z&?Bm`|ve{=MfqZ+7P}(xQNh=;6peZIFrH+5zfO; z#R+ZE<00N^zh+xq#)1nwb^v0H9T{azn&7-sl+R)ezc|y)5Jalq0f9$Vg9J`sF5#%7 zUFZ*pAE^!smpOX)2DaY0Ko?&Lbg@4$h}pgV1MJQQ%xY`zT?f}xk7*Wc5kh=_&t=R5 zR-&XJ+O4qTb1ea6VGF`>l#RNRRo;w1>Cf8=UjXeb=p~4MN{aKdO_Dt+np!px-g7u6 zF~R}IJ<aF<jB==>7dz$c)Bwj+=Lg-Y=v$mU){O=0J3i<(M)$ioA&Qe5vW0DqxUz&Q zis3NAa}JHUtomo0Jwo_Gw3ThK8k#@1CN>vZ6LHCT%4s!s;)@;ybNDg5GeWmW1?yM4 zdaMtJK1z>eNk>^>66ApI$;M5Diw3ZnIuKVD(LeyxOR?I9C4{d*neb-FQ%2F_ZjRs6 z)pABuJ8acQa13s<+lq78DT>_A;#uftG#6&bYNtDF%#Z{}Hj_M|BhBpBSP|nKYHL6d zBguq9r?ITM3z$?F3<l|Fta=|tb>%CzE~lZ#I`4WHzjI3<l5YzLbE@&tzINVvL&x64 z=d=fURau%uE8SPU*Yy3_J?^w>Ls^336?~TI1!vuH*7Mfo%~NhDSnV1f%eoKP)I=BU z@P~tRhW_U?Skqwbz-m5kWnbF?QB75Ik2R&>0XJJ0(eRq-Hw=zSte!*eW;aRI+MQvk zdZ+EE;$1Q$0vJM%HL+m#bvgMhAcoBDed=I*KbgrGem&1<MiioYUa=4IS~Cn*+6=dK z$Gmp8T&uvsT<eujWb|FGQnw`Vd!<)0@plYEUhrsOm(aDf9AQ2J-63o41lEy*7ka?c zqpZAXJ|v&f>yThfPy$*ZeBg&9IR8Avn03}V>&&CfgaCraD$-`VF4@LfpFYag?Q76h z^QKtnv_jljMFmG*^{Ea=cFQ;xvJO&0W1796H0a8>hH>Q-h8*l??D})SI&bTkQb4mn zJRS5De<u45Y?am1qSRgwqyHG<43j!i15)7|`qd3Lt(Bp&xBaTa`>h|kv6tC&tR5p# zrD|Q8GSZ*`@TO~C?JCC7)?sPK1(x=Sh97LS<Q?F3z3HTH_GfYO?{QK0QN!ZcBe0Uc z6n9E5oY7$w@NPy^Qr%%w2s8c9yB%p;T(8^eq$4f4t-7*tj!h8K4xZC=1}Q!HHE8xc z7r<G9A|{NE^0N{%_lqN;Pcovv<|xea{O+%4Hj~=DP_{9cT==<m$6SfC1zC=Q%yrZu zt6N@usUh2-Z_U;*+NI%%^)EF(Z)y|H@DFcFv3~+Cbz}!ucUJc4X*!0H7{W;aT<djs zc|V3T%<E!=RtG06!>uf`djuzahsyl92lUOah$Db99m34I-O`=;%{a|vZ=b$oh1^mI zL+N(Y+Ruu5%6Btjcj9yBxrn`PV>3<gAt4G5s+bxm6B-HM4Ddth<lut(;T!3KIC?j! z+co#GuNIj1T4D9_5V(l23&u=d>D*<q_pUjZW{tCsGv_ocH{Xe?wc31W9-}|v+;8o2 zrv{8}*+mrq{Ir69yIaJ?>TPqoU9r2Ew5v`FtQv7kQNXY^<{b$34qb8wz_3B<ir%H% zw+kv^Es&+pnX7VALBpE4QaZEh_X9vzTTp|;X9v}HEXOBNM|O|oqIoJ#6|a(^wi!do z9lZ3Jj9D5SK#>KdZrWEVPD`4>?^z0nXz%qMxZORTLbHJ9C%U0FAZ$T+1>xA8{9m8R zFtEZpzl>%Avhwd^6jgt8U`c}xsztYeo9OrK_mQ_HxRydThClkuczagihNqqf#19&~ zkHz78yDJvQOR7^16oe}qU3F-{A!LWgcNh&Gr^>(~E}~&{MUR`qmOR`{tp<gq#<!oa znW__Vc~dy{l@9A**yQ;vCo7EeLqa`~N&O9?6@puuN?a#w!1C$SZaeFaz)N=Z=WbSr zV&!SSx{llClu^^KYp}rDowU>M;_WovAVTTybvq2i)n+^F&Nh7GLi1Q2EGisreFt3% zD>x74hsSw%V59JcJCf>Gcqvu8<xvt)#T;Qi-XOL9tKo$8tI_P2&swLyh6{?$rnr7V z(G`m=hj8uF*@mxuy5c_f4_2a1%l*M3xX)m!Z@Gh4RO#bC@{h$phwnh?80bzPZ>}n{ ztKLg8ZyTM{#Svywg!zNkFLOT6K}W#o+ubUIV*W4|9bv@<1Z-%i`+y}K;5Mogqa<Kg zbJ(=^2lV>>z^YkchA$}2O9wQ*X(Z|iV$?9_sf$5967}=Y{D>)1#)8i+Q`4%$1651G z^pS&TqCoX>EqVKSF#-)t{XdF>EcoVO*JmuwJg4(GyF41QF#N*JBka;B1^%fNVVZ<$ zT%KE5s1Pt3(M>eJyEz*d+P+*d)mx$fe?}AJxPdm1tw68*S+F~So8wNZ(rd)hyn2k@ zwJ5?74G(|M9MTuY1NKYIlpPzqcPa$KAhpI#@qi2cDtoh}PFEZWi6QP)1B3x6Aiw6* zH)yQI&B0&)@!fbOO~&WgF?7lLx-}E4Qg&8nQ-!*yH|vV8xJ#`jGqcr-25_cL#|dy3 z0}(lH*ClJCDK7Vth15ayweCMoNx>zz6rKJ{(AYfv{1*{Ew^6GUaIOd`x&Jz-0+GC# zQ9s$Sk0N^{B9*z;=Ad^*X-rJaym|Lky!P6$qg}Ryil8_T1N#!e`@~khr8=J+<7Hbi z?TyFe*m7#~6<aXvzsGd8X`xQ*ieGkLv86UEFz{gNs8$?6jG{{6T3OA`<V{j6<FxC! z%Ujs=D*#ZGXcOnOR;#d}lM8-x=Zw2*I{+=hS4?Z}RXPirsYU1Zp>m{-omJ2Q;;ujQ zs+&yv&CR5BJ9V}(1+DIB=3j7SPd6WTTgzxQBMQE7ho?%NY9MR2vS4Q}@m*UIr`_T% ztG;5}3ylhS!45Z3HvqS!m~kH_EPPQABTmATV#Psx)01;2f9rE8_OzpMfH_gFG~2uo z5he`_N!FoC`wjNy${OM-7(*u@%WQ18;T`diE1(~~k>b?fy5v|7-a%?yzKaf<&4x;| z4k#4RXD78b#i$|Vqrc!X*dT=(IB5*U--IBz$?npXjjv*+{MYG73wQ3VK8o2i*d|`j z*z68s9{=T@F-&xw7L$O+f-Vfp1}DX&8hQea0YNF&mjx^|NV>rmuJL<PhoB3=AdiF5 z*E%oRN~+0pEUx0ijjx%$Zm$L5s>=79TVu9Uc)Zc~i<`>6508&v1^)zl(0X%VoX~?` zbByl%W0*}NW^pzGHMU&~#EGhO1{HdJo@UI#bkK|v=-CNcSSn=h##+ZVQ}B8Fpx`!G zQ_ah*x(2m*$GlIlXu~@q79wf)AYBE+n*>`8T^ZIhjX_s-gU3mQ&qw-ybnmx*16g2t zxIm*x|E23&eC*5aQ6cKdmOJ@zFU;15>BdSX>suu$QUhI9+aW8>&EjBxPtzGj_GW84 zId)Grqo2b+{lest^7BMz3TK4z3^#x|E6fqKO!++ilNXAj=|+PMOc*<0aQk?ZpZMZ< z`<BXOHcgqfH-}Z^EGxcfE3q9~pvckK_Q8%4VfWY$<k2T1JnMKje+%v%kg)46pW}d= z#iyL4+i}Mh)8lvsW7dUY%CE<)48{EIdQ3?u=C8pRJ1SZlin{B1rlL^H{Od9ELNPhl zV{Qw@+;Tl;S|}#{dd#FyjQ)CzE)+A~xzRM%=}712*W})&$hlY+lT%VgZiyvq?~`j3 zIb&9>uoA(cQRF1tuUYxJRVvt}iX2m?l>A`DHTz+zK(!CE@vP%71&5V8lw{eQUPtk= zRU2WUGsmRuwa03E|5l>KkxFN8+5Na+vAgb{;EX8X!5C+|%T109-ZTzxjyri%!u6OD zPFY70!)6yr5g4`z&m#V>JCjRFSMGj5_W;pt5*Hh(^T+RpvJ=Df_TS46sC0WD-~#bP z-R*AdW9;(QIlav4dgzYQ<y#}p&nA<mI!SVkxVXrHU;i|rJ7Fmhb99J{vnAH2ANc30 zx<-Eb_8d~guiviMG6U?j)EouI_ismn?XEESnPs*+!otpgpkH#%^7?~p&f$-?mk{NN zo(QHWtF7l`JW=ygU!HnPfi(OK5pvnww1id4R#Pv7sbEYA_s0khMgf#1VHFXoNL4D* z;2ltlkO056;AOb^-L-oAjHdJ(h=q*)Zl~#CY6TD-S8-O7y2N&>k#n+>=ej=Ra?Wf= zEJ;1pIK{PHoUdZlB-Q9-G?*Y}lQ_RfwRX<~F~v)5b9&#Ov$VMQp)n2gomsuKSo3h` z{f?!@aljiG?dURKbN<qM9@gOYoS=+_NnMUpSP~`7u0&;A&gXw))LQEzTMp3HMa4Ig z{p2tl@rpkiUx2|Em~SL%C=rDAuCfqvhXwzzDho3^lQ}*A{i~_`{MQtbs-{T9Miypt zCbN2e{A-itlhkaHUd?9ni(e~;s?l@aM(dcud1Iz_Y9;#CBoKJxdb4N8xklt`t@1Kf z7+{%Rrijgnb*{C><*c>v60L>Bw_z4Vln`}PM_JNOPQS<IJz~1}6{nVVsI643js?kF zW!70l(D;<#Y$c;nH5z5`^fZlLATb*%qRqr^AloJ&tDzi>aVP_<w7~AW|4?(x?J<S# zTBdg<OZBbe%*g_iOD1JeFARXzlOVviz8tqjf2LK}DUnRIFeuM~O9N>qzu;!o&<qVU zIy};dLS@0uz|3ekJ@^41%I35tSWUgy6vuZb1SW%KjlvY}vPR91D*R(EK9kLF)%7x^ zIS4w7&Z_IJ%+&P`!3<v;lilkuW(zE%h8Yq%#^L7pNqY|2ABWK-uCoTW;EF;<OX<;E z1ZRHqc4jNHGtxS3fbE9hd*Dt$G-QDF+?ve@dmYTq`PPT>lLeKs3KzTG4lKi+x=xu4 z=3F^Gdu9%2alyQ0v?fZB$yymQAnT7nX_<%B5SUv2P7cHp<~!R(wS9M5XL$HL=*NE| zs>^Zda=`bdECL1eo#Ap?WL~FSHr}G__RspDn?xtHzh-6Nd+m04#DIKoVy9C1KP%D5 z2IR=6l)YxT&q@ZO0`Vt%m{GEUs6hOE7H(3W^Ls1G!FpUoD94Ld*?>LDcRLDxZ*enO zXQDM)fm15G-<{8bJ*MoF&+;?hiWUdD;bV8|JENk49g32DAzI2G?hI4TuwG;rw<<C6 zDLFGNk6HIz|Mi&VYjIQg9&R}GBmDYWbd+DbA;wWo?EfGc@~LEdzI$P(DGELFNCZy) zK{p%yFe;S~MEMe23p>A*Gr{Rn0fi3dwnl4U(Knn7gb#2#HJu6tyqemmF+#-j=XWZ? zF_$%TE@hazd7V+1zn9H_b=&O*W(m%8tnIrQhP|7!jWO}!-fve?Gn-qXx#jn$`l*Pm z%uF#3jk6us&FL_Su5qnQ60vzme_LWb?2j;$yInGDC>7#7B8_9(?`nn$ww5|9rcigP zdbF9kKMv~{uEUKBITh?Zoc+%v0+rl*-!zb$_|0!lv5zfaSFjJpO4H7m9zNF)YyGTY zWCMjXlFZ{**z{3_am9YmUT;l<4E0VkMs+Z0t+3lk(!<ocl1<`d=Az~G(y!by9aR9I zW;9rH1UYB0ED7a5=pL?3QsDQD9{@d5cg@X6ly{DJg(xKwB|r16e0!yXG)!nFDX5`H zZx&mqG9fWM;v^~C#mPpDr)ZyPK5S62%B+RR({?Lp&MCbeDJep3*w~!8f+Xx#%MmM9 z4W|Z%k==QMJ8D7S+UO<XFzEM~3x?6V0FtK}<%T)V2@6^CQ7fy-fv)ONiyD4|>-?Sv zKmoqZH4|{HZOT;VOe@#hrh}N^6yx>xwkgV1wMGTy?tnT>U_#K0aZCpb3VpEhv8~Yy zXh-U;+Ol!2!`;~j>H^EjTQ9;Z^)%yQHytPi&Qp!gy5lu7zjh~SPP^HZN;j8c56n(^ zQw_36%r&xK8*g)w$?zpHd6tVbBtYyMg_&|XM-0(t@E_NYC)0R$z21Ji(W>t4P^*Pp zW^_(AB+4LSjW#A5&jWq?7y$1-fvOJy-$Lam{GUcz?J8GlgSG(^&CDG~CQHr|9bG)r zjE86wMP%|l_zdhs`Vla~BBYd)$!QBrE}~bs^f$D~KlgUHy}bTUpJAWnqD5PxUOBFi zTQRP1;|hcIL=UIiTgp9{DAk_Hd3e#`L~G9BT3J#nwmvJ#IB|uAtUv;moE}OG)EZ%1 z<M5IS&KILU<P0vwcik5;$4)nYy>y&8L5fwjPrQf$U&4UvuCFxzD}35JMsgd!{GF7D zKfdBge#<*E#w_tsZWff6b$-u}$DnrsStR<N#-D%ZbNdlL-BK-6yH=){A2P>5Wb`f( z4%=HVSvcX*q3Bc5AJOpA&m5Cteg=Ohj-~0fKSwc~@Glr*S2xhF&@z>zEbbs?wUrZ! zhm5duK%$Z-5c6qK(ssOY`&_1*FiGtYKAAAa+}^lpF4s*sZF}^ohwSD*8lctFifJXS zLqr#578+RW`j%v;Tk2(VPF#tJ*(l!Hu~D3*-Yed%-Y90P&ffn&q%o%BSN6ng5TA<O zAU?@%5FN3{#phx_!$QmgV$w3Tw2T;7+)WuFYe;RCK=lmzkT@%|nqZhhg{`SKXSHxT z2eL9qenh1FlpYjdg%ACF+q-G<vxBtUGa`TO-DK6LfggVtRT|pW-v{{#`!ggGVUEb( zv;Q9U;1K^l9<4+C=mU${Y#;y70W+KA<NtLaMPizjzJdS#z!;U!H@R8!1nRtY(!>ep z{k;5O8T*TmUw1J3W;3NMER<R|<7#9C3*&Eou7=TP3#%(>bLqIVFv7~puSI#58VfE` zcTyaj$_Xj{O8&QlW4KZN<9x)Sv1A^fdT2a5!^amK(q{bR<2a^!YM_Geee*cw8Cun4 z-$ZJ6DqK<{?NgOeW=*!x8OU?W$L~HAZ-06N<?e10d*c~ls+ZzpoWSHPDyD_s^D$wH zGyAM(W$YO`Q9VO}bf5^q^f!Dgi9e&WF0-)$Q?jghyV#q|q-6{DZ6H7xd*hcss5YPI z*~py~vDIM$iPl-|J0ZzDv(l>4=y2Ar)LUre)q#b-+tbm*(h@7TV*|AR=WXbsh+$k; zu`Xb=VF|yy!C-&I7wmvzQLqDd_@0%F42;w6qxBs0s*5LD8DW7}`y_!U9!`)ziWC&b z;f{yOLGMx~3k<0=m;#U=tWobHQl@*%23niecbrw8*=;5hrG2rsQtQzX=vc~zP#5BY z1ynvhp;2wuZeY?J*T!!+Ee@_@fpEzLB6}aG&BzTK#l6QHZ6?9NHWsh3jY93p4J)m{ zv(~P(gr+l8)rFxsOt4o|LcMZ?K7@0~1Vdpu>%G>Mp--WuIjn}9MV4@iT;2Vm)L`#* z9+1POAlBO)PVfvS>o~7$-Zx@R#wR_B(K)%tE(fM)=yfwQkuC?Ll`e<by=@01b?vf8 z&)hfgtQX{C41E6(P}}HAa}pnYII)b1xyE3+-pYS&uKcV@BBe;NiS5`bU3NyT-DMdg z$Z^)ob)SHOr?bAAm#~WKGnR5)^Wrv`c3LH8!zH;?G;+>P2t<a#i2D<RFBOLE+69u= zMO;24uHhY0JH$V9cq;qsApgc;V@!oRR?tW9b*)9K<ZP^@mjCIn#$GTa={PM`Y2$KF zid7ku*bU<C;0E{o$R%^dNM`pvday=%EzmEJh^G7sTF7%5jNyvwW;!pX3vNl>d0BS% zKOFZBYz~dKe~^wARxq4IvvMU2$+N&yujx8jZe?i%L^$QDi`Jc{NY^)4V(hxO+@tqX z<VNbcv`W`J+;#t8uq!`!M`JRew53Ba<7h#JcU9;;8}HencQ!iKnIG8r%Kln-F(d{V zkOL+_y?++JDP4sP<#j~Qb$)Xt4)#FiwA<?v*00ileoV1@F0)Q9<q0+o*Oea^wp9i* z#nK%+Z8Y=d#!8d^t6e7LS40gXz(DQ35~u2!0n)9-#rXu@6Fc^HvGONYL1PXwk2}or zZjPh%>7EGN!SKzi#t&5Wa6;|C(N#GZ^2`Twa%Vp9-*k}uzy4BE7v4?6m&+x5@(e|{ zT4DW(euk&LPX?Y(dEfepX;l~(FI1#2UdVseWSqO}r<FD=_(eH_fm>N@z{ZZ?48?E$ zL?$j2lEV+%B-iYEo#5aO7h{u|?7yGeAMTa)j0TaJfSj*3_rsvkKlyq8(v9W^$qadS zvOFBdb=rO+>B%sF=0tP6<6lV-keLpS=O*z3iK>MY?iNKHp#5$*t7?js<d%(T*5+&| z0r9tGW7&dnlCHR1M)%jG^Np{V!rEu2Yjc>cO2%Zl>dww&x;Apltu#lb`B#wa8THZ< zn5ED_rOoO9SZfoRX}nEt&JmbWzIf4tIf4U2<Lum`2g>ImBf}QNVT_JNamDy0XYanP zz}WPaZEG0>Jh(8Y609xA>JXB8n`^5z92ozXVy}9eb$b5d*5f@~Mr`yQpe-?m<xWPc zG%R;b$^Z9NrtG=0EoIM_QRIVU%C6SjQoT~V>MlFp^9A>x9wv5Cj_j(v<`&@o5_ZzS z)hp}AI=M-S&cc-^dgPq!s_K>_S3h3=*wu;a@veC6>ND$)T%A`oy5ma#ZY3*8lQ`vu z6g0=EKXQ*K@Vfus<!G7LepQt{b9KV{h{C^JeRlnF)GaNgoe9?d@uaKImJMFLynfWx z8ilb%k~ip9nL&YXWt8mQd5dvvNbY5r<aLGeCcoz~e)5q-cKYJO1xHk5!N!t2$Zvt! z@0^!k4S}&}LwEbdmGaE|@bhxw<ud0WHb@q$23c%2eklU<rfQSac`JUwIu}T0w4};# znr~>1oAr^O)oFpMZZ^hQAF$GsCeE_gR%1Qf?Rfajl}xXgBylzMIihcKF*nU|j_7re z4(li@Y<B5qpXCRe%j^|yW^$YBU)_%TT3j(!P@(RKu^e$v>~%c$p<8Z%poW?O#g@67 zF_LU1i^--|qs9U&tulhvY1j;wK{T%W4*Zr`hdk7V-DV@asu<cE=|1P2n~=h)WgQfj zuuduk%)x0$m62X?IPJ;NSH@+c_v%Y4PKwVN-w?|Y${cTqYxogI=h*95+3A3p!f3WN zB5;&MST0$k4Mk^H!hoZ~$#pvx!H}cVieFslSFY<lvCOEo)-~2O>#WOdiGYIp9Q1xs z?W2fkm61}xHX8vinV<+{oqLgOhb-bu=|j{mTue#n3R(l1S+}SWoiTm`1(K~p4qV=1 zzp^DcL2VD*Kmt{v63Bnh%L(m%u;O)?(H2*iTV}{TODoc#D~zGpS!mlOOE|+Pe~@gy z<j#Z?%`KaTTk1g*MS&*RuU00VcDA4jm+SpNzcS9C5>@F#n;W^*xU&~mW~Zvo-q=sc z%(_4~heu7NRMxs_nazzPH5?^wZn&{EcIIV?JF#K|@A@F_=IBtPwxo9FlW6pe>v42N zg4m}`;q7HfvwQOn(lO=;Y9Key8RsI8z4x|*y?jhdY8Vkd7UldM_l~hMLcZS@+5(QI z@vxtH@(`n@1_g0z2nb;kp;q*(iI4=NX@gpBzoeeqDiaR*GO4GU)$#(pnW^pfoEl;# z#kXp}B?v1B%cClH5UlVArOJA7BX38bCPZK&qzMLOw-R9$_}UVC0of@L!hL=<BmClr zc|kwTNHdK#GutBIv4Z5|eu;{_h#&I&{evOTqcB=Rjgx@EjrefvTUs#@79U{?7M11T zTCs=%!(W+>;e7u=zNk>X;kcuSi(3pK3R-wL60)MLqpxR_7S@%WXQgMt3ODx1t0ehh zXmYn-k`Iu9%Bkx1*ic?Ap2Ky#h&m=-uOryerx7>ldYq(i`Gd>DxHDWn7lSGv^UGT( z1WFHN;G>RBClmR($8@-I+Kx>oxAV2fQrK@q{@Ae!P+MoT+Mtlp>F3{Q-9}dNGumd~ zHRM_7y$Te0$fNY7!T8!@_2mbKJQoKRtErr7c{cQdjs}4o1m2Am2$Z@^Ad)^2G(q}% zql{V@4jMQ$xDuhXzl#67Eye!SU^bXrALE`l;Cio*Ss31a6xt-~*U){F4r6UcEk4h~ zg9~!s=n9v>@HDiPVfw`kd)H<zk8(;*(Uk>41Z`KY@pzUTqlV(B^*Y8H1wr4R8``=h z@){iPHLy1-2{)PZa%IAV!6{aA?z~)yeaaLIEIvyVu6(fG<51<4K}L5otWg^*9#4kv zdvR7xGU!<JP?^^}DPT%mKUOA42PXwotpANJA2A2iUh>l6CM*wwi5fKLzSSj{U3Sw> zQO3w~hsHw)R2`C=2{Q3z!YEv??5e{P#-fMBnCtO)sZk4zn&GupZXfN;uU@ccL8;K8 zGrz!WC%8;+%Y;w75n%fa^X?--K(Y@((e-WKD$S$w##`tN`aGw-Ke?6HwNhzk=uEw% zRTQ2O+tgnnnD_^dr{H5x9^hX%{vBT4Y39pM7$b)~uQxMVws2V~BOK!QpO|77J?{^| z_^!@0ZoF{=>`JN)%8+$jc}uKF#`{y{tt7MC{SK55<V|51sw_|R>>f}zglWU_VJO=R z@lmzBg=+eG@y%$yDlA9(o1zOdVEh*5o;1|E6J#efL1RB$z`Q=l-nX@c<uThtPsIQ= zA=>K%NZ3Vf@C$(knWpiDTMp6rr7X7a08o($A41<tg&4ob#lLiN$_S6=#X)LXaoBoP z1SW1GfA-{L`;@}XhZxOGdBZyVqURZJ(2P%7p#kP_cwJh)0sE-lOWnND6sa@0Fc~Sy z`P+3VdEIU%dHlklT$D_>X8`Q)1C$?5rb#B7VUUs<0p{MxGK-!#ND``GR><R-Hb_-T zq|VsFSUW0;&3{D~pLfcwnyQ|34utRfLd_@&Baj-A|C%l;@0goP)(#755_JDPZ#b^^ zl;8La=Ck@P$T(t7<M1>fP^FOtcv7Vi7`-fngfcJ5@6|~#lpL5FyFZj)dIw&La{0#p zELMNhk84U1Y7S^N(Khm-pNF_R=tN%d@e@9}N#cQfG=9lPQ+1C(>KC?L0EsQWfOX5l zk<LF)u!=wU(O5E<KlM>Qrg<x5SfT@;2b2?b((PaW{J+^B{ruq+Cbi#n9w%X*OTTcI z^`4^>AvHmD=48$Zg&ORKl!7}k&0ydUq%1J3I^4J39)I>G7!u&>+3hkx*Po$bF{P1S zJwz~d<_s;fz1Q<UZ!nheW<!-_R9<g_=XLKa>qs0Ovn65os&mOyqM`2|&u{$OA16-S zFyMesg_zKUw#gXdI)o1p&SHLcBYc8T!T<EJW}!<AR(^DVHmA&E-=<A^LQNhRz_QK& zHzy!19erI3+3zt8s6eEmAFLu&cN{RmrTkr=XzZh!2{f4YnuwDTV)~gnlF9I-4(1zS z|05u%&4d*!!p&615tz#3t>FzjOusuvn<;*+yfdpQe17->wbfwV0r4KXk$(28Ekr|& zmtTVM@~jpB5p29q(C$fuaRu_GxRvd)uS&<A-YFY*`kb8`cX|iHQiO9X-Vv4}Bp|dC zydxwa#0if3RE075qhaJ$g>Uk9zY6D-DqlqS9ibQD8iIgu72y|zPK2KkE+hO%A@-BZ z-DOy@J($o(@$}+3g~dxaLJY!Kgoy}K5oRM4A}m380KtvSj8MtH_UWk1yYlYB>D}!Q zK7S28uY{gIg`O8f&kOX)U-{IqpfC>?m=3x5J8)RaA&I&AUqDIOth_AL_HTdic{ubu z7<%ptJ>LpF_lBOY@xOjLar8|$)QH6mTZ8dctvwIF$g4j~OE2@s<i(=u6`^NI==s;s zb6Mzlcj$R1|HNkti*h<us<xh|IZnuAH-ZlN1s9jIM711m?{JK87wE$ja+brs8naHG z57Rym=qu>Qj;bIq_e<&9P->bLCX(=LuJV>IWc;|#$Jzhq(>F`zQ$$rN(nFW7ERxyj zZjWG$BMXJ5gw3y3HJTFJ@7a8|Y7bO>ev<!~Lna>Yv#<VM%x&Y+C4x+{r|Um4vH?kN z#KNS0QgnY~mMOk9CFh?xN|6+ijBSlCn-VG|UnW!~R4&_0GL}_RovJTTziN~Jul_Hv z_-Mb0mcZ6+`8*@IX{si4$x-Zh-EqmGt}L#k+5)ryj3L6!GB6wD@k3;3q2QRKEQ~BT zTZ}QMCs=kuNMEKoaYdrth>OCmlCylw7o+TSC@5P*FIgAhMnRrUaF*7$(0JPNIPm@; z<dZgoo-P`#IWaE@CSQIWfTaPf=Or*CtJaJJ?s9&B1S}Mc!26j2tvP-^_y&0Y-+<2g z9>m*%>`6y)G)mp-ACA-V`@RTIJ32tE1~P&25|laozN&?elo`$5c@2vgSK>SAsPI+3 z`(kAHK0jEg81y85=!={4RiI8hhXeXKqe{yODvkgSNCnvL(n(-;%uyNzc*F8To)QYI zb0R{&miJQ~n?H^RpU1-6PmP?eVgVdbtT-P1xNQKEg1sm<C(Im!-_r+Fh4+V#sbI}} zOfn}knc6yYlw&jSpPxzuyMMG<z&-D(oA#GMO;#miv>_1O@Da$cVPP6S{7%zxQaw&G z5>_v(Qo+v&SFpsv<;GcHLK$ga#4yHK9m$Ju;CCdnAw%!qE@73xIjUGk0I0z-J~B%~ zM?skDYAWZ7g$<rK6l1{N7;vvb`lh8pk@$c^OZkZTa|A~i?6X_go0LxOrZG-(Q#3x* z3xnGsrn(Q15v&i3w8QUtdQkVoKHQc!LD3ZSlqoPCD)}M6UlS@Jjyb4Xzt4p6ZxSON zzq#Ly4tU5|D1|T?=0?6y$c-@0r)J=x@ZjVO3!TI;0nIE&Gnr^c?Mek@i-FI3W@4qe z)XH`HZ%HnU@XFJh=a!Tuxr{I&Kh=o5Dn?l23rBZu8!Sb4B%yK-`#RRa`GFm(vGQoz zvro~pfPm49m&#@~IPcvq8r3x>)<q!TO?G}}-D3SRp%k`~!kwjMKUmxEg|H+%jO|!_ z$x1RICO6{*q?jTHOEIReLQUM}Q?ET08d%R9MFsS(glyRzkRh^g*#?P|nV1E8Xq2v6 z87qvJrMap?AL5#;u!0!kTwAJG(9yk)!YYEN$HCP2J>PnNsIuqBrs-Q_wagA8{H_06 zx5jW5c_qm6Qy|Z0$n#jf9(nZIU)*HMXRg(un*W2EHHPEJ9fsWhb-ZY=V5VdXp9P8? zM6t5`Z78-)>w*;Oc$TE?M^+gWhngMuAoBZfmwUNVKJZZz@lhCIn}c@koj~~)y}Alc zu(0a1ZBVsyMDMBkp^DkD&RL2k%Um+lE7LB{|EC*BC|n&?c!7kn_LPb}RU-sT*d(WV za<;I^QCh*y3^!y1Oz@41P7nMW6_yJkGbt{uidaX4G5w7C<Hizqt`4e+h*hN%n1JfV z?_i!pMd7-x&@ZBmN&n4VTA_gOUxY#FltQquv?@`dF+@AHhLKK<-AshtBCGz|Ee|xX zW!--RZ?Wm8>9hNXs?|%v(erR^c>3p|N-tG?_C!9Yqgky9W{_!6PL3RM?ez34hzri{ z9dYo+I0Cbz%Fvko11S}Buqvo2F>EP@ZdVwj=-E+Mu=&r|ycno3BK;+Imiak1{o+5t zARqnG3q*F}&#<&hw`2$Q@ypnj*YKn}rvgtv_(I8ig}L1d1Abs3QKwl&v5e6PSU{n_ z!Ys+7DN_R}Oe>B5mmP@faKRmcf+_#EV4%_^fwWQopJ}55Y2klL3lA+gg-c#22iCtA zmQ)v+7R})v8w>M9fG%n|{o87%qbWy72c(uajc$;FJ#?F%z{1w`n+$H7a2}DuOiY-M zJFSDl1Y#HoSg>?}@{+gU&V;?Lve;fPBR7+*ou=sanGM<4{~4;fM#_hUqoYA`E8XNB z(EOtN4Wf%}Z`$6Q+i7>cX=6I2$_Zs7MWyBI#c#s!GnxKo@wb6}TLsWrj%yP$AteNg z#$(k(8p~h+8#_aVJCYDb0aD;C3UBFww{Qvz18+m#;ZzZC=_+N1<_TI#^cDx6_Fiu= z;z}suCoh>UzlrwsBLJlG7R`E^{i3%x@Vwv+{{9lb-N5pKP*cFE&B&+D4>P}RHdBsi zIOeFFYD#lc@||SLt?(!kgoeRRz3m<TooNsB5?<VO9I^y^zspOvl6>#0mhUXD7JmnR z+f-vo865|m%=ivYyZ4D;r=RxH_s~eZd!KmSTKvR>bt~4rx$g2hK>Zrp^=2>iF*6Kh z8-wuw*;~we*VCbZc2(-7KZ4`C*SmLpiM4qB<uw!5;#`2)0Xo9CCUfD3HnwbxWo}^u z?kowA5{PAU3UQM5N><~fU7b))v`Zb!%1MR9JZANrilwV7D|W8V)|_2kSv98e!>Xl~ zWb>}IJ1beu*|nTz*}5_7+JLlw>I=9HkU7%>rW49^#)5R9F(bWd8?>*2##EeXfwZ)O zl{!P7;I<&;Kqw_SkfJMCg^SZA_im)@38jn;q>L?iP^ZrO+O019!K%(ruxM@L^Ojjk zY`ZM4+s;|W7LF@8amCKWW@r=EBo%~b##xf`K^up;P>Fd-b3%T69wXfCwKgaM_cKMo zbGngvhaeftz{-QP;8~dFeLHYz8QwwkoPQW_pbxlD++QG_k8lsdCIkux!r5?!E@+A$ zFu<NEj_`pU1sn)*2=&M)Z;C*(;a<3hC<Ip=obgQvpCBkT8^t1o?Fj7%Nm@|6T4{y! z6A_e>fj~un(|2j;of3+;$3Y7;+}EBv@xGkz#ZPL&yJTT60e@g_y31vsRB&h2s0@GF zo$ZE#7?@L<?=(GL(;o&gl>Bqs`=!iwQQE=ibIz;bIck=3OL@4O)yc~vR>PL5F0cH* z<%O#+Jq}+8$}OvP>md{-|9o|ru2Kwdi&(Q|&1Y*WMWti+`aNPKQ?kBrUDbxq){atF zimJ9sF}9;pjB`}mAAy2_S7*%^WvZveY{yDVDXM$NXjrrN@s(@#uD`lw-x?rxYxh-B zk~yRHLN~bIJ&a<}k<0Y4?YWpO*2@@c0Gc?1!o@t1*B~wA#ldv$|F}2`Zdp1@!E*LL z7tH?uQ825C!*t5cW7~5zu?x5^E*{K_Mf6Y(>)IqigD%|@yy-$?9F)|HA^SR4goA;# z#p~sHCDy&`8JHoWG71ny29@YxJMK}C?^DC1P5_t$dsdDnC~0p5Mi!ZeCPpw_PlvHy zjtPzs_HA`5*TNFvdTHL?M%cN9g_!c;Dg!mrnW1%2&`ssGMnP`N>zVEY{}cD36#+{b zQg~Kcl^zh}r;3RXjGj!+8C$Qqy&kP^cbA;0H+jCI;#flEpR0)rRde6<YW}EY&keQs zhyGj(Z~1yYyTHpI_}U0U+~-654_{~Fr4S^SZ*GhAix#aMi#}g>*`2TUdYXp#N53gD zq&6p0#Da5*^02SK6J~_J-4L^D6`UV5(=<ki;Jd$xoA+D)Y5WRYO@z-vDL;pvzlNSe zp{M8nJo{kuJF6+IV#HAiU)Y`sdxJOm9RZ^7rNJwWMrv1J+K{JZP%_yAIGWXB!M0`? z$(`~hr>JHJJ+H$IguG?=*P%cC0{t9ms-}1|&6{A>nFl=r;#8shLmmy-n!}}sJgWzp z#2bFX)%*>=nnXV8?5I1^SuaW7D&EG(TepgTXW?%y)RDJtXnM#q=TBwh1HWh|hCGvw zuz4H|LkxL7JyJf;63ah&)|wA|1bvLpAdfGHbp*OzO0V}bJ|m);MMn~m!srL!Lx?sR zpFwld4rVnmee5Gtv5OHt;N#Byh0Nqvo=YKH`K{+BlM{UFxkS>!pFcM{(lIa-Ru9Gm z)?)-e@%$80!vE#GhCI$cetu$16})gWS~~aeMsWvdl6=GYr|-GTN3~9H=>+X(;jy(% zH8%)67gj`>!+|OD(07Rwx)>SR%6K83x|vbn?|J4RlV25~ATy(orxJM}XLHjmyS;Rk zJ@}8`_H7oa<3InlGVXIMi}(y`<7N5E9rIe<+>;ym`!0+yKuNeNvAHGyRw%<7j==p< z9Sf?$1bbMj*&+JS(UY(@!U)Ux*Dj2)e~#<yHTUL<j0Ge$wfx(5T9O48%o)CRH8iuj zITi<E{IEDi%gpHi&J8Ld#1pts3T@%q5Uc;qb<8~nLKI!jPr)MZ9ZIbzh6dPYRV1y^ z6|58NKf}8&GIqWj#ADqYQ9gT~yJjqH4z5vlLtN{G#VJZMA|T>*!a|*uDG9&$JMHLA z?euQ59pK~_03kR43J~sAjpASUZUS-gP2Wwi-|FPj)J`VtciNPOP0PjaaW08Ql|l`H zjKn=7zLjLCGDdjW5o63@@PXSi800LnTD^s8HZovSed7+6PC;odz(lO@opKjcX`BBl zWu0R%(9Z@>W728<y1=SqgeSxg+%+o#je^;k_M@wyib*@{S_+Rdv_SLVW%n}azQFst zgKxPbD!B5(ik$M#Dz;Q`U92w0QSf*KtZ%ZqjgHSA-x7E`0i>5MZwD68HW<hsUQEyN z4d36qP}RgH$C=x%NVRQZ?;HgbnITUOXT5ZbQjQG$y$QeRHs%63O*iEH`~S)LC_lbq z#JKwd`N1#Hq0V$hN0&Tk$$?mg;fp%H4V&63(@FXCi?#L>mT34@JptKNX3+@?0T4_Q zSK7$bv$FWp8Iyi@5x^WK)$3B4X&y&TFpnaT=Nv?aXr5o(Z**sH)Yj?GFom<>kg9;v zR)AIGFK-&z&e<5l@8=lZW->=mlW>|^97_KSGDwjj4*bqO*Jv|!2*u&ZWm>Z%Ifhmi z{in*}uUAIkH(g%94Oeu%9#x<o{?#9DN~yxY<6eWkf0krQx;C)UhC3`C7Yy#MV5XF~ z)?z#?x0dhwA>}Wh`5}&nNqW)`F+@CH^~-bG8nY9r!Jagr*EMs1Zm)tU*=^H`C6J4G zq`0qm?%ZiEkfMZ|xiOS{5lEFlKFKt9rYqB?0|t@Fuf8-UetcnE&fenay2OUPklm1T zdyB~we)pwu_P5+rm6!7A73XekJ|Qw~3B_dE2~pmm&TMv%0bx18(sx6iTLO8;6qAf# zp2P03$TJ3cK>N*_<-n1Y6$gft#2F{B*dnYtS`A8I6G@J&VEUMnFz7`6BfGGI>6)t| zhObPv(XOPN)5T7axj8|iI$dqWTmJDL1*dpimy^@E0pV$gpFji!^e|9%Z-xovmYhyW zZlKJ}M9J^`6F-iZTy`_e;eY&i4;c{+5{A<Dz4+dT2p5^Ic_Xrgr}^m1YDt>%@q9k> z^4tY3QQr1(bEfT$xmm3r0xLt+y3FDT+f>_$o>)$ogZIaY;UhYMLK}W%V#=6BE$;hs zOUE7d4))$w__e6&;5tvDb5Z<<mq(2_?u0v6mP~YtQ?qKb$D^ZDD~|BLULJSrwol=o z1>__D8}2irYGzoUaRt{I#nDQ+P9>gOth0|w8X}4#O8#gb4WdgVjW@feFM8O`Olo%~ z<&s(Nd3$=_Xe`Z<Ekyfmvd)vaxt&T03KkC+{epf4MjY?=%R2D%!!ceHlUyU``W$yb z>Y3eSQo#wcga4mfCrP%Dsr>Km_UKOr_02($pu$G4<1hUDQnCuCn<|eEhv}LFb6C;j z^K7P1WjRkA*7J?JoYC3vjJ^Gep2c4N;7XBw@x*z+vEOiL3zvv8OVuIjMl)zNTMn$7 zxoHxm@9_~&TC7rj%VtXBgjLrSUeD5g-IKc!cPS9(g^Iq;8e5Pj%8WkUf3CoQuugA= zTe0c?xguNfP_ft3IF!{u^*|V2nZH7(%o~IfDhQHOZXk{hf?`X}#RL^bmo5F$*bj=u zF@$dseuUeI@=^Soop*;n(Td3e@4Sc)>q;qMuTy5xvs@0ll0ps`c)44;-Rn682f3-{ zs64Odi+%;HsQu4J?O`kM`(%GSet#S=_4@~f76z()^3btD+n_|&!}{MpAokTm4AarX z9!yk+X-G{NsGdv>m&d{;p8~E2e)Y#JW0gt-rlEYEqv>I+ouB<}jVyef4FB%%f8QiM zIIEgzWVeSmez2Kr|G>&@@AK^TecwV$M1X~^0*=w=;r;V|_ph!p9ce`j<!86f<LzRE zq|ft>kAFc_OQo^D!*dJ&p7;!V?R|b$f63%@i_%;vrZXC|sv=A;0qEI;U*Jv)_Xfxe zV;YF&X)!B?bReGpyniBlwT18PpD=&I5hq5)nw?h^M!3joWs^C>=@Mx>+jWA2*f`l* z29&MD*-`@v1;N-hlo5>s?_8SL&U77TV|CDHh^s`d$`bzm0quy1-cwgbY{>xcIPN7< z&%M0}2kIky-N4c@v)>n*xPuEsNlO(3jGb5F?`8y@C=o{T(cZD_;${3z-X!vGzR>#@ z^%wnMoCny?>1MV@ZH5^QK`KhAmh~2)#kh<=?)_|(*Q?I`tC`g@T@lio9HTlQe#bC^ z!0#PAPd4!Op-kfD4-ai6d-%D&*>SfII^fLpy}qjPi<~JtKqC_>_*&l+tZeXbynhmb zU8RHmmvYH%MGp9chB^FQMUF+57>D5yCzQ92-I3kE?jTu2FKHj!+%CpvbHWpTX!@u` zYt=kXSmB4V=+5N{MDv5&_gw|n!6XF2#4ztZ@Y0v0fMnE;C1m{V+M(}T9!JXXL~J@V z`tPhBW{AaE%(pKre}RQvYff<alpQ;^uoJ$0f#h=Vl6CJ3j1E-L``MQm;nRKzorR-9 z%cNzs)r2Ie5BgeL+FxK(?s<XTj$B0?odz8vyxreQ`4`J-KO&@roin92jRl7%vvvUs z-(9O}Z8+Fs)(jlNgs7Y>RAJ{}N(yTCvt$m}=h?|WD2}OBa72Ywx3#}^97mGPhp<v4 z=1&^8HD;S)uugaNA8H_vn<_LLNQI{Ij+~7Z|Ebtp8D=c0l<R(~R5a$xwt0K5;T+6} zX@nUna)|1P4b;|fq>4<a9U~z*(kC$)TbI?ANJzPz)XR-g@Z38%hq_zhgt0#37`8?V zpSGli)Q@dQrP4<wqyrQUZJ(zJ78$aUTXH7{5%9>qJr4#KhwnQ&xs$Ij(ffa&H8#o2 zZj)@K?g-!aAGJoBFE(;D=?x@R>LQJ-cB}VVFHFoOlMab_BV6(|W;L+-=+=6(zLC|y zxspgaa5~E=<F3w6UarK=lo4+BR-3=M0;8cY(J>MW?shM`%h>p^KnSaQ9iGXlQ>L&k z6C2w|N3Y6-^V2YWBiw_pi5}Q2&{WAz$+qxB?jMq_IV8MstGB0Hp1U#E9zC!{pkBoD zI@#<~VwR+SjHEH5E1b!m#BPrsa16jbdh*@o_u*T-zSS||P-Awd1o>u3BKw}TFv8$K zWOr6L16u|&7*6<bknAYL9%Eu@DwP?C9(V>f`3a5e&M;Ufx#iqFX0Arlc*op~b8mD- zFl1_#eeTF_H_wf~Aldo0DdyV)rsxZ8vN0}NJhFQRAuuF2t{==y@f9?{2+>S*N1N=s zKcz<@{VVabo91Zi;Z&F(k}j&4K~KEzQ#ZGR7~9-~aJm<X57Y896D_m^KUGI`70j`L zgZg}JkCe>LdSW1YVAH_lMo9bi(n%?rd%Ib2&e&LQlAKfH9_kvRmLaJJ$lu&8KSxF5 z(8wP247Sv+l3|7Kt9?;MmXoLc-9;a4`(SNeIGL`z_JQv^ru9v%w-1*6yE>d?v6{O9 zd4oL=BEAvjHC6EOH3D8L6CgE|gl~RJ?WG8kl91_Z`8hg5XrbVrQQIh3V#qtap75bs zt&${520i@I+5#oXird_uERJBvv>sS7%7%CmC(NjQNl8xSEop$gA+_e7Ff%bSsROu- zr9v+0$w3B2lj!@Q7P_~T=Bx${oE%XBE9xZ+x6%%jLMlBU20fp8Yu|{3JyT47aEZ&d zADRwjPDVYw@Z^>4VN>(sY8Lipt7B_Ui#y1N;}qtkR)@CjS|%I4Z8V6VNik7dIUEiS z9pX4i-#=CZKnsl`sh9M9u{sJ~-3Er}`@rg0y!YZ=gDp2d)&N0j!8_=2LT!NvhSH%y z&nX;wZ{UEFfMFd8DXypk(8Q86DWE1RU>4ecyit-i;EZ?&&LUJBepZL&!}bK+M=+@1 zB{-8PBEsH5B9*xYJ#PjoC8%@nz(sdkV?1yGMpoM%L#EqL58Ztw{Ky^VyRXQW%IdSV zr{L<56G;C}d1>a+HH`Yyl`%&O&7*3<>Sgc)w!qiYKe9+xFQ2TqFcDPHg}q{|52#02 zcPg{6H#s)ELlcNqBK9rBPDbq1SVqEhJ2+YW1ySXggQ?#&G$Jnr*Z6Olh4$X5s<~o& z^q^<f0JZqgJw)x2ULAT*{1MFZ_h3dF!q;1~saHI;q`Qq#Vvo={@_8l?Q6aiC3`#SQ zNC$+q&a^t1Y{tR(?G9!#o~fa)*d~MXkKJ2wI5}avOl_{hQ-T#3Wv-RS5hYR9j))^E zb}-nm4wW*YWs#2rP>ny}+@!HEs?qnfWpiNh`aOgF7eu{;s_wkz;I>~7jky=ZN$*_{ zr%Dtx8uJn??dSoDoMa1I9ds6@?*VyY6g%WKl6t0FE~Nl({D8wuy7CzYvcYV4josVd zN2B8hq-HsVb_#ZTjdws$2JX=B4n^i>G^PUL4P4W7UR=xV<al`qy7hO*<dR%Dg@Ee| zIyrzWy+jYtMz&{9q9Cnm46_yBO*{g?W;Wjl+9m<CJq_TsWhk=St_N(}FHT@sp~%nf zq6tgQh3L@Pen2)a07gIAaZ}?nrt#;Pf3Pp5G|rtn>Kx4#**$@<TA$|wug_EIB~#y- zD}1|e?$rz2jzgxdZyV-bxzK`I2R*Igk8buAGVMG-)Nf+s?~_6x3NnpeKn}vxeiBcT z6oa0Geo4L0^S{B`tMSCTYS44(Nbt*AEUfbAAW=H-d;x)e9*XR2!ZlQ4hH;}u2&S3| z%U0i}k?Yv)FjG1hp2ti`(%hnDbgW?Y$?}$l-b;MLr##bo@~`lah59-ywZ}#fwekU2 zHM-xW+2PO^e_7i(f+Q`S1n1-N7~%q?%y(&C(H_v}XG7-(YPE3C+#b#(r<)gO^YA;( zr#+wzrS<#5yDbb&fwqc|s7tXiYY2I}WNWOZaBD(-!PbP@`$m$v_J0nQ(<KZD==0n) z0OY%vRsMnwEx~gKLKK3k<obZ0|L>vL{0Gt4etfnfIWr*@O=RQut3#22_&q~%G)!Yz zn1N5!C<^9mC2CoI_SPs(>Q-q!D?BiCdkED-8}kB<q@jT%giWD_0tfuHO%GC30m5;E zK2O3x7%;`n__Yha;&2>}R&2y>%GMO2@eRJ(hena2TYa8KVNNVtXm*UOUkdq9pXZ^# z?*_+T^GDW8FpDb!zu$I5b}x~K?JNKw_j&FK#JyJQ9YtodgG05mMw5gDaVYYd63)-y zCWlbH8NjD2g_~I6hoRc?(IlBYJ5>AfXrfIb!e}u{oo_xRJ}JFLYsfn#R!F6N1Ldr6 zXsGt|Xfn%A1fyt#zjPv04?Xa1Iw04$HB@`$MNsGbo=$Hh1{wq+J`V)ZT1)SLU`5u= z#U)dxO`l;*&&aI7r2GpfTRFbU9=z{IXhxu4=My}?MYx18yd?Mc6+M->e-vi=%|U!0 zJB~ENiX!dgm-mZDERuI=({~QRPt(iKi&jRX9#azuy1ot|ms2;_gsIsYMINbXu4ifz z_lM_G+UfH!DGj5;-bhp>!3+Bn?QD#w?y%2<T!;HvMArzHD7$bUBp2svoftYD7? z{^oo<)g0cf!2TXN_^*5#9X%M{U4V7M3Xy}Xnwjvtc$!Gn>uTs3b09C@ytYOHh;W2F z495}sMUfEWDe-LaDe+9P9RvBfxB`DK?Ab4VQhe&l!z=cS^~F}i43Pce`^14k65;e9 zT>q%xTW7zR#C@Xv2pq_Tz5iHq^5x?%voP_BhEy*VmewfLB^dehVmYCw;q&4>WLw@{ zHQVxDti6~(rrB@udp%J;It`-+!}{vWxtg%PSIdD1dcu4Qe;-^21A>6I^rT$Bz;Ph5 zTLozqCY+9<BZ+`x|M@`hw8Z(yvDy}~8kY5{x1AD=ufvJVw&%qcx8f9y!>P$z8~#_9 zZsvBtq=7I2r!S|!$@NNYZ6b-cZw+>krn7<cXr$*IX7ySpr%!eL_nmCmBJz3aU>dTm zN2YrPgSc;Clb6#^avg<U{ygW=ZfW!g=i-i*{^}UAi=^W6sg23qFILAGffUPKv^)!4 zCaxp+HWr9rI?L$wX5xHaOsv^cZ(8Z{dN$(ZgTYF#*W(zfcGF6`YHv*<X{i{*J>>2k zR9{@x(GeDP`mUW6S-mIyl(=Lo!&l8C*g`&!U97E1BFU?c`46}kH4sA-WFIV;^S|%0 z))S$@|L~5t+_VEp_<TqGl0awZ`=@@LnGOU(&(JyCdXSdT1Lb&e&x`IzthnIz`4;O? zazES^-v>S>PUDMuR=Ij&?YOZ-Z9mz6a6$dNjW~fR40)%&ex3t8s>b^pc$eaQX4Lih z8eBypw2;e&T6?yTTS@BEp|Jq*?7;6?m5h3KzNtoAAA>wQ0&y9YTHLMfM4p<!@3hJt z`C34lAy_e@b!d^k)LdXk21g(wp>pf|Z0!YcljDLYZ^+rNF#|c>4M|!d(@UZ0sVj?C zEYRMC&AFubLOm;Fc%Q*0RDjjg>VG;vtUH^L;Jw+;s#DE{HQkuD5nfsg;Oao+wZZIE za}glbq7`>xHvqm0vDmiHJZ{&FofSAEi1)2-E0b@|N2WVhEJibnk%{qA|KY3?OjCut z<E`%Z7~~@P0O385tz{J?IlS-HN1hkg<Sfwc7t2d8z^4rq1_z!O-!RcV1#eoWQ{q21 zkoq@k^6*_=GIhVr3TFnw`~F*jPR%K@!+u+?DI0}8A2=n-_o4{`+iW@ch-Y$6iGz*W z`eQZWeGK5{`>6K*oLDR$OHQh}U_PV$rY0{hzwqmt=f%59PhB~8e|P<m=K+6reLgny z{8$|ph<?aa*o_Z?jop8I2d58nb=TikI0xz3T1CgKLVI|hZ*@1O^Thwt*R{Y!S*87R z-npWKAd;X7zJp+cfevEcLL6=*m<j=!S~(2EAd_6inZfJUjA?zk*)J;Vl+}J_wo$tl z+E-F$QmNIhF4@+8wsxVdR;hNwyvz&3<@=xaol)EMTYkSk^S<ZyoXc~b^PJ~g-rkvV zz|sqCaRb2ubnbtI3R+1|pf?0jj3X|R(wPf>AANE4dgL7z+$*Z@eo5)fA*jBC@mEye z0X6RM#R%J9Ie^Oq-`THCPxxq4GD-OmCxy16t5NphcpBs1^ai<LaqmJYmHPwr*dQ0e zHg~=(aWgXTeCPw5A0%D4Q}X9;?^Kw2Ao%7$NjEj5g1I9j!6#4};=$xEVN^&CGkbs- zpmt^hqX{=fLHRI})WP7Tetj_%6AMPN1W8Xq!PTKUR9G!GYJO!21?vyKwSqN@bXvT- zPan2DRD#qL;By;$U8LstMZfT=g3s|4tPgP}hJw0~s&$xo06Qe8_(ivB=OJlq8?Jb? z;DfVehonRtC)w7=Dvi|a|HB|ZHcaICTqt<zP2NNALR#Tr>#}08O!}o_F<(*?i-pn^ z#lj+8tymbsip5CjD#hZmUU4^QK!Nf98=<s+Av8KnXv|fF4A&q;d%hUD7NKn*bVY%| zzFjN1n1G$GV+Pe2F;oM=TGky+(+UTJKlfQMEu3l<xZ!6f`U5@^ceW4bxT(rC?y&me zAYxet)EEDR-yCQOYI)YgC&B~4Ihblx+1OnvbcG)uvoP=vO7ag&Mh4(V+ctylyNJ1a z;3+9UiHY?5B{2Nrem6;dKnmmy1Roz*3TgC@{=18#&zYhQO0}Cv+Ck~AXZ0<DIjTkf zvKhYC5H}sg!*o<^RpW!b_w^p?ok=qH-<N;tum(4FPL0)%HL@FG=$(sb&oB(-v4o_` zTJS`R(U1ZganB?iEEzVzB8o=ZQ-x;(o+sgX`Os6+J;;{r<mv7^;)X$heIFXus(+C{ zJNs^c{WXT(qsAm>klhhWQw{1r>z;^xV^kaMIrBE#5lbgJ&YtE+fuAiBKGR{m`TC=0 zi?(7DEr~iUxkp;8^C8g>555fR>P=QMdFkPo3co(H0o^20J$o-5xl{G~1Cl-vb4033 z+;<w?1Rq)N`wV-1(s0pnG)Ae<81ldPhPV2~z4%6X3yQTG<3F<ZZojD&i-H)R#}1iW zvDe6s9dzt&9PGNS3}aP0z7&U>110r-B3d%Wv{*lne=K@`9=;M!v?scg2=1N*hLb!@ zT@1CSV7?&}_^5bXGQWt+EiRC1tmpR)1n=!LwZ=cm33^y`DlMY-vWiq%G3xJqZ=9PN zqqc56Owvryeeo3y_C_i_K%3d>G@2j`A7Z~wqk*Mw_67F$!TLRZC*N)Lz?m<koHo~) zzTkyH^w0@Hn%q)rETYLs9>YbCHG{!K?7!5YeWvl*?h;|gU@#`s7fcz7Ms0;v(=Q<> zYA4c}QICKjacHXNUiQL7nnpLW6BFq|KWF#SO9LA=?Q5`FN?M^7m-MTl@TEi6%;O54 zQLH)At&3HQ)m`m%NjQ!uzM5Tf7H7Z(LVL31uz3iZ)&G^$-hl&!Mj<8hmLo7K9Kp3K zTcj0ak90@uE+;Mp6OVMq<rtk}%^qnEcA-rZ$8<^lIuO%$Tgj`*B~fyc!*J5A1PMlA zbyG0Xlt@xW9u4;MX|XEfk?!G6@xCs*SiMIYyUVy)+$2^dc14F%=ng3<oDHcl>SoDi zYHu$u3NMIC<Z;B!#!W^XO^b`c)V&=7U?%hrN}|c<4pwWT$+Ie;J9FFXH_$gV`n#|f z!HAnLva0TrcGxlW1xSy3;EJo_qLmPW9Wv1bx{Q5lq6aIv6`zZfcy#NE-W}4KIQ7LO zcgem_r24oq`0s{FkRZXf<Bsb3q?^T&o>;s+jnEimFCKT(Iu)+QhbZdhYf2wkFy6h* zTGDC!^<;qZ*{iz=2ZSbY<CjRVt|>f@{UhvfI&DsRzE|_4`iT!Db!=AGV^S&+OxY*R z8$a#VVfd_Pw@#uip>Tk`H3>RaCT7ATta^wx{wXe^r#;DiZQzGYnID$)Df}=ZWe<Aa z5tJSG%Z0dl&+mey=Bmvqaa32*d^6&6`9b=&B5sl#cV-{$$-(D+ROIh=9#Soeo8>t) z)(hgoF-oz02_(PkEkm>sa<n8wGxiyZk92FbxYHkuqjHMP1T8l%AXe>KyUQ+aI*rvi zzO?fg8t-u+0}ZGm{X<-t<PE9_jsUt{Y@J{dPHIK5s-bJEb>!V2cdK5syeg!-PJS$@ z+o+g!E2Pgra8F1Jongq_4^03TL2)4XQwX0$^$=smExR3*{cs~S`sa2%Uboo)h%~Ov zY}hZ2?Gn=WONkxYkFJ~g=(@PA{0p0Vu`_1Zy(Fb8pa!>^VyRKAdPWk^6>cPlBto8D zYxHr+bfjDVqI2yQqy&EK+JjX7c5m&y-(kn(2)G#FGOWY6>9+xF*94}a4u+@fiILI? z4r;(|1>?uz*){C98Pq(gOd8jvuPdoT5Nb@~2hdir?hJZ^8UjLM@tHWmb%K>-(#(WW zq33^yqUN#N_UC<1ET~?+4idVIJ(vkGM2FaKGifFL3kzk^DcAJ|$A?szr035tjLrXu zucDKl|7CM0(=7S|TRoZHNDr}RCgZlI3iijz5GaqbbCc<eab+PQ^727I#g?2OK}kyr zzI{a|KxqrH!YMSDcCyV=XhnK&UrATnDt?qR9~Tme)|ks$2I(;zf>ALrtX1<Q4mz@- zDRd0hM#h+Fh3@YIF>N?A$h>B1)P@Z(JI%27_69%gW$&8l8e#ZBHam;HDFl<)r7U_^ z>8xbIAa_KUIzx{QD20|C`N@ZADpuw!0jW^Dw^2QbyFV@N<nAeO7X#AM=8tglQ#~o_ z<ePOZ(gic_ip1AJ;KyE>N|z<{2HPY$@n|=xdJNYcn)apR{+j;aU)lI<T0z^GH=Cx@ z&)75BkOe0Wyp~O|(DWSp^EA3~)a?U>UAFK4;GXqSX_xxkQkaeJVD_8n_)!Z6s_=c` zdvU5nh}r||1r{~fqc_pd=yBG7lgP<0_GuT2*4BAE693-@A${m<n?*kl-#t!d`=`@# zVPq21&Y&5ven(4e`V1=4x7lqo=)y|JAmjz^2yDm2b~xax$69P`>nhr!!xXYV__@?^ zaRcnm{lSD@+S-C!m#DZE|F>beQV>m5AD%JQ@pZOQr=(ymQsUF<ki?`JG(|8CvT-wM zV$^dI#d=kL@GCZFCcWNY){Dr22e2bZWlXP9brpk*6;hZQ;U0V68E#6SfZYt?0e<+N zHkeqUSnz9;AzUSKZ+6Mc;|wsEVWqM^`rNoE#S%e!)`v1nxT`0mSRxQQ1Wj!<Y^Ks; z4AjY#8uu1U%VGuNgHl<n);Q|nl#&zDtz@rMLlRo{N`(kC0&l5A*TQ8}+{0?)Udcx& zI`6dD64)Kqz;`;#;zJOXb7#?;XJ(=QHqz9v#qH_|>tJx{LB33|wXFfmCEVb0X^1Z# zjDu(&3bFmOsEJmy)3fLlI-d=n4NgAD(q_}l(bIZIwj{KUz+jgGBUEwAs2u~rdA+P| zHeDpd_OkZbbT{@jj*{4ln`veIj{{t>OM_x(e1hJcf_k3R&yK+djQ?JUCFjt>)Sr5z z&xymII%|pAdPcXi;Ebv5(2v3cSl|n5@4dmJ2ig5ObT-|=-pQfYEgT5Wl2n*L({ly^ zLx@IbQMHbN5bwt#h`g+e1x*}<gk;_26bz|AL>(Jw!)M`Qud}X(*;4)JVob!WY{DFB zOuwn`MEClG+^qKFzJ-`1_UzNWtUXty=k|xJKG*MWg+Y!>5+iGvL&pqH?pq8MY9Z=s z410JEwI}>`@EK`o*%#f{$C<z|oBDW__6L7tQMq)=_|1bZdG2VAtFTsLE9%BUl4b^} z1<#g0hN%g=Ete*VZ(>>&z+$AVq%RR3>ksY==~}rl$bu-t2icBXI@RoiZgcibF<gEe z=na0;ceh+iyttTr%X1KAU0^td`Wp!p_e;4npW4{0x%kdbGFvtmx)ZF-hfj3J*2ZBr zzMu+g;cu8wI-Cn=H{k!p_7V91b2}eBxq)Cr%EV0*5vsc#Rjt;`ivlWC_4K##?i6<P z2YcTP4CW1c>z^INVsZ6~d)|resfE*az`%xa|5W=8QvA3V&W)ruNTUreoEt5;ZS#l- z6$R#1l7cgTm@&i9b0`n`4!)+_-u_R^u)sg{Fpa0bp{RluoQuc3;O)bnEVd@>><>QA zGa?hFZ<pfSTQPj!Y|pYvby&UGDb72v+d{WfZ0;{?H@{~2o~obI(UYo4F{idz>A9g? zT~{&=v{xppa2@_T`%<h=TOC$1>B33#q2bmo*r$aXHg13Z9G#Z>y+$416PWw$N%ib8 z)&+1?P5SB77ubl?{ZVxxkNs$V2(ec011tW3rIjuRJ~uEHUzi`cj-*TRCu7ID=OqGq z9N|^=&$-yze46fWYWBICeYSdM<4Rwhm?KWV>89-IWR0`2rpYtK=W%Xm@?<(Z>)pPl zDULea7i729c&b-Ub`XbeU1qMw>2*45Y>uYpMxWCo-Y8~?#yO&yTou%|(%I<r*nLjo zT<5ko)`;0tGppD8oZ>3}Zh%A9^soaPDx=S`U1hY2xyz`D?YfnwzR+4pshZ&LfWDmW z64(c~QVUyJK$o&Z1vDjvkn~xC;k%iFL5ttmk#R(?i_#9$3|AXe(ZUECL)gy+bh$tX zTTn>v@VDeZ-2t8gb_2f$UI*R<jsqV9e+B*q`~X}4`T#Nq6o3&xA|L{jfN4N3Pz;m< zcL2438(0I}4Qv4(03MlxnfTLqcoBFNI0U>8oCHn--vK`Xy}%F<m5T!jKoXD+WCL@6 zdBCl}?SK<#0@eeYfro%6f#-m|z-z!E;3#lB7gvOQjE7Ue*T4_JuA5;@0bT{(0*(Tm zz^6bL@I7!22mxx;L^LoO7!R0$EMPWJ04xBO05+fwSPg6d0>Cyv<JW14PH#&*+NIHG ziN@#G5jD1B>84#Mv}m+&`BimKyM_naGAHqvNOfwedt0ODk%ZX$ClkdhZP9#D;9f87 z(P{KV^N)!O5=A+|3y#EqlCmR#$O&F>oV}d#7LA`%eI^TWWb)(26SY=Dw55dwipzE$ zjeBjc-c97RH)|I>-XS~vdTVPyPI5cXBM&5PeJG&TX{l~naiLkx>mXi<?p<R_hgQ%L zU2PS1r4u51^{G@^>esy<&}wx=d&>pPCFRmgX#JZMz}>M#mp6a+?icfvGWx2{9_^wk zl(9>tLt2xHx8j%Rwm!0plh&o(SuST(Ys}3jf=W$<rE01nxX_oXDaEp{8e!5D3ci(h z9PL1Cs+;V8q*x~E%TJlm6@IEZ+95xUsTjXSiO`=D8+P;A&xW6*!oqx_#HfzA`Ko)4 zc2ErnZxys^qRFdLY1BkJDMhW)5KT{y{I<0<LJ=3-`t>O1-P(rbukOkXr{)-cOreUF zdcQ*nYu6VkPiW7uTfgyxf-cz?Pm!G1XM&M<wQP4tVQv|e-}U*C5^R6**Yic$ZHrM~ z;O~-adb2KRnYk*UMD;EUXTax33>Wr-V|;{!W9)~!<Zy5cC*-T@3Ww_jop36b<8F5( zwkquj)_HR3?L?tcS!5M8IzP{AWh4^nv_NUzpG#)SP4;kVvE0nxKC(`uLfDku8nh~r z1Oe^YA~T)amY|SC4?*3?d~65T@@jbC&=*74M6n@HF!+J{fd_#nfIYzf<e~o`#=}wI zPr&~IUjyF*=YSwE0BG}ZHv%vgNCV8k&43lS6}SUf33!0@z$RcDfOEozCxGXGHsBy| z3^)mV4xI7h-_O7Rpf3;%F~C?L4KM>az&xNFxD%)YyudxcHed(v-@xyH*MWC{<G`oD zm%tgI2e<_E1DZk%3c#-{g5kdae+&NY1oi;00Ivh@0w;h^fv<qG0JcXPLVyOfF#<>c zL?9iQ3giGqKq;^ks0Lhs7trd^^$j!5ch2b0YIH=iac<8#xp{8R^&iWU`@hDY^Hp@0 z9PquES37e$1f7QJI{Pu1L{##gA?Hh?_(s2Vz8;+yzNZ_WP^8@}D{`vjghM&!k1G^% z&ST{jq(V7^?-BV41Po@`v-2KvI3K#reu+yk?aEWf#wmV0BF|%I&X;C6_4glI@wyWH z#5c*u<)k|0yz)@}j>LYYBxCM3cgcAkQXIbCo_&2lht&ez+ICsyDW1n=F8=b8POB%{ zhJjc8P5)5(Mr^3yYyTEv&_xrS`@ttp>l&l?Jr%3e$i|#xRGpwgnfui`ouHe3{FoUJ zM0YHEdWTFu?Vg`L3Gj?-&7H^1Du^4Qi6{b4pc+a$<WVKNw!TBI#f@`@ewqPMt@Bge zj8L{&aWo&xdMNB~{!`41fb2T%()oVW7pFE9vpM3rF(<b(9H2jIyTd?~6mq_dxNgk( z3Sk8ex@$*=3S)|<3IsJ6Tc#uLia5lppJ<OwkI+13R$*MbN+5<4JwKGA1VL+d&JBcJ z&F_UXfL4#V4jFRZi&4Vz$IIE8!C8+Np)+SF!dyfBaPfn?%<n}?)!8%?%q0hWk2`nB z!twow4iBt5r;zQ;9r`MqnT;TOB?qC)v_eC*N)pIdC{o`!$q^d;JY^Ej%z1w#iO!t! zC%z$JdMgfXI2{f$WBbN1z0MiiBN2I($Dm2U3jN2A_sDH~yw(ApfXq9eo!z5VqpVp! zeoYi<sS==4C_Q7{jPt)z3W#ntHxMr~`^KE?b+Y4@&RL!PL#%Z%&G45jsw^sBl(#@E zDlacBC(edyXU&xArY2u~lfB02nbKf)HA3&Lt+#vYY)wA5&EvG!n5+x(DvE8Tm1Va4 z1*HYI*p?J6Dl9Fx6&K|d7M0t$Q-+8e{Og+>t1`rY4O~&OyeORv$$#w3Vj9nS7E>(? zEv5;}dFnPr54Y9f+37Kv98Ha0pV;hb^v$&S#7XJalJbSO<&_uNDk}5JD>KB2YwBt| z>CnENj#a;mYg^@9?=>m@Y~&I;)_<))JeT1>1SyGg=7?dMt_J%`XE+}qZ1TD`IBmXk z(=T&?2>{Q*WB?P2baAfebvk^WW~VrtKh@gny-sqQr>SwJ=&yBo8rIr9PO+h>##tZE zvqDC8F<n)ZtEt<(u9e&`Lm{;WueOG(Um7DX?&j)9T__2l`h3ntpO;6sW{4#V^X3&r zT8cNtFSC#8yj(ieab7y9u=|?4b*=^WYA>lQFIo;RVfH0xHTM##X3a}zoWI#yZCmTC z=0EnD8q>t^v#YVTDV^Nrayvzbz0u*UuXomv8f3@T<o3B5cx7TDW|OOGl4y$5jm^y` zSdBj35dZ3CtF}8<HM`Tp42hbw+nj!n-RrbfH`lK+RaBOi^YZbmS7eC4c(oOjE?xwF zS+sb;g7p884_;xe#%8p1lPyA@=jB@Na(?_gL%i^=MwicKudgS(*Ibh!Ij<39y54qI zbA$V83VgCR0w0<un<!Lg%QbqU)9VF0deIvr{Dn&6>^f3hT#;`p%PY90sM03)F81;g zYSmWQYn@{Df%8k~b<}Ti)HOG*0v~N~ifQ3KsdQeM2~a+Bx;Tk5EN_or)URB<Zo9|l zve%n_$sQRZX1S>RrrKJs(+B3^lU%P&cC3lCQgdT{lOKI^t;gkanj)@p+sRJ08oST_ zZwV`2k%YY-M~0{*j%JblA_?(2y_|MIQ*(Wd*x2M#GA7D`i!5$r;!=9uKI<3sfY?a8 z=)+~Dez&K|fjYG{cvsr2;eNT;&E+1k$sEnIYpbnq_SRkHfJF|1GoAR;#L-xajf7DN zG**Q+<8J0ssENQ00Ds2}Tn2yEARHw|5`}wxQi+;9u$(^Z;2u>7Jg!WMz~AGEie&Kz z{HbxPF#i?dZ@DTArzTV6VFY5)3u+4<Ng=}2T@_9s0$aO`CYkEt_(a%)e+CeXaF=t& zBR&nkcHrT>MEzU%JtaTKk5+Q6(E1#11Ya$?v6PKnPLs!|@obXcmCRqx)PaWE=_>+z zC7+HTDW=sByVvXV_{3Vf3nGABzk*JcYlmVAr`74B*!&eVKdG{Oc}1A*6%$OIy?%<< z*N{E6`KBrC*%frOUm1q3;+)mZ_L{X#9>|=EqJna;KkxV%qQW(hY$g|YI%|4*hG^mg zNcL2D1ewSg?)He^o$16XXH4`s!)6;7WOaV=E&tjJ{7%zEIERTSas;x9lwg2Dw?}-h z&*O6VAm-4IJWij@Ti3J}VnO!C&>8WzdEx79jD)JLTLsT6CL?(e{`WfY<iV2E)L_HN zVPDVX05?j>LI)ia{TjlRJ6ujD59502Jn^=|c~i;aMYk*}y=@Wuas}PM>TNU*UuC51 zc^fsd-FRciY&6xMNX~LrxcrCqjI}5#!N2DQU4$FN<WaZA>2=spI8%*t4Kh^Ql$qOL zZ)~o$JABO^=jFlq8o|&BYnmNCdC1~2;u=A~Iw+s5u^H9!pOQlRIz1riOy~6)8C4(} z3vH#hZ~-nqmOw_ECi4Ex^IC@*t#^VuxS!uvh;n#bF#CDDmFwNkLT4?8{czyRJ{gL* zEna3TDNO&5w91_;U0!6W0NNAukZTgP$(}Mb{}pl$9s`N<D11~Q<Xzsm^yIbU)NmbO z|A5L}h__YR`_!-vc=C@|+|C`Nh6s2V3jfdG_8pLgaMuC7f1rjhfOmj}cpt4+MXA9U zN?T8MHKF%G>N9f{ePm>uY9Xm0R#FMkgv;NEk-bwz)06){?r=?YfIC>dohBvXSuO<r zAwehtgyb)n?D2B>aDCb2$&-omjFNL+#xXxr!}V7o3D4t!tHT)ap2yvQy+9<4Ju`3p zft+gkty(bKSjtNJ(tHngOX-m8di=tsK<>eBCVu(f%UA{GR@VLD-`~OSM%jmuzu;Mm z=g-5xf3vaCbvStSOcmQuM<)tLs@U#2dVic~7Yx@U9M3vW>t;Kf?V^*f<-Wm1mk6iq z>|+=82u0P*dKdkZFw?<CuR^-a!8WYIqSz4!`^_q(f7Zc{;dfLl)=(npyP!3L5*t-d zw+WUS_M3Xxct5FOef4yMV0Io@(?C}UkGpAxhAY>UO><N6z+yN39mYGg{w4f9xSSgH I<w^Aa0QK-*H2?qr diff --git a/core/embed/models/T3B1/vendorheader/vendorheader_prodtest_signed_prod.bin b/core/embed/models/T3B1/vendorheader/vendorheader_prodtest_signed_prod.bin new file mode 100644 index 0000000000000000000000000000000000000000..49f5575920923fd82e01adef85e2546712f092e0 GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=6c2uV<$rxpMl~0te+AY6Xz~cTJ=TQBE{`$NS;{yIevz?hCCZ7 z9%Yj^_chKfU3xV9ZP<b06L;U8llQ4eneqPiW@nxAlP|1qu1HefV(vWSN~`b5wa=F_ zsKv?2md5_G7P-X!?|7Cz7ayypWT;=TqnoRaf}5jrh<{L|LWpZ{h=RYLPb33Fh`*=1 z1cL;F5zslw2@cHiKQ?Z%|DbH)kt4u-%rS{slfx<XaL9th9WrN9BpQ#Vq*(HNF5Jbw z{CD9maW;e(hBJ%#o&1UNqNQvSIWN<6_v)_MRb~8&eSJ}0+8lujNq5b99`5Q~zk6JP fHA%aDgGHun%9Z>o7RA%QE7xlM`41`+4{!hgBsXXq literal 0 HcmV?d00001 diff --git a/core/embed/models/T3B1/vendorheader/vendorheader_trezor_btconly_signed_prod.bin b/core/embed/models/T3B1/vendorheader/vendorheader_trezor_btconly_signed_prod.bin new file mode 100644 index 0000000000000000000000000000000000000000..c2efc8727fa79916a9b52c5c6443b7190de539b7 GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=6c2uV<$rxpMk+m=DgM6&pL1OTQ$~w<z90squ%Mn#bfGko&0Za z__l??QFPtqKbL+bKDS7bb$?#R)zxe+`{;eT*w5qs1s}7I=iWFG`1NX1%y07}>vzPx zYcAckK3eeU?1!S~moa{yI!RuGPdKC~wJN_z!6~yOIX^Q`H$N|@GQ{80U4lV^Apq!% z-U*Cc2Mjov|2oA@_-}t+e22?*qZ=CC7v^19Wys_(wQoX?->l1Lj-ENXYpVRtJlUBF zUlSwFnmK<wX@Ae=)s)xo_vN0QW6YHP?Aq<!b2gM0F(Q06ELhCf1pYd%WN|%kD^1I; z_lensnLB4sjS7<5FX(Y$ouSf#huO~TENSYSv%PuijE^#Tt-kbgl4*34WrY)W%4db6 GGgtx4Xogb& literal 0 HcmV?d00001 diff --git a/core/embed/models/T3B1/vendorheader/vendorheader_trezor_signed_prod.bin b/core/embed/models/T3B1/vendorheader/vendorheader_trezor_signed_prod.bin new file mode 100644 index 0000000000000000000000000000000000000000..65d018bd66e156a3619afdee0b6360e512bade6a GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=6c2uV<$rxpMhb*+byx%;?=HC{;}iOQdTylHZ@(QUK4qBqoSvm z_8ga&c&s0JZ@QJ`Y3-Qjv&2sy5hyCUl9O2B@%Z@0+0n%^2TQtQxt$|rH{Jf+8S`+i z!Sy$+#?}lP#Z}vL)@<4Smc#fTTS!rAReljeh`*=11cL;FE70oX1OX9|KmX-D3>X+Y zI3G3Kly}Ujl!*SP+{3%1v1ZSk{{aotc|-UvIT)Lr2yQB<J{ZTm(cWo}0)L^gM8YrG zj1C(MAA}EvHH-PmG25+|9F9vaTf!|>5K@@n8UIJ6X{9NDW^8)s!-bz4R91C6tTk6! e=4Y+my@FjKI>WB$Sl-X5!ef4l(>4p)@Bsh|RBO`! literal 0 HcmV?d00001 diff --git a/core/embed/models/T3B1/vendorheader/vendorheader_unsafe_signed_prod.bin b/core/embed/models/T3B1/vendorheader/vendorheader_unsafe_signed_prod.bin new file mode 100644 index 0000000000000000000000000000000000000000..1a4a2a2333fdc84119d812c87a46f49aa9d7d5ce GIT binary patch literal 512 zcmWFuiV9<3Vt@iB=01iHV<$rxpMl{~S7$+~vC-b5e_w>3ZP@f)+H38tsznDKKN%Nl zWt43Wyz=f~+x(3?mb?%T%(}YLFtlcC2J7M1VlO_gV7}&lzaq0-r^`jVc0-<6&hLX~ z_UyTrZ?~&#$;-aa|Bp%rD4Ab-FC6L@?C9pIqu}DN;O8Hr5E|^N7~=2gF2NwdU<7nV za)JZ1{Ev;B>^~@5c;pB$A9GA%*5q(XJsh$iafi&A6p6;8DJhmbp9^=fFaKTmOPmei z^pU_~{{GU!)85=Aa=YW}>&@0SK`(6!vz=F(EMkz@^Nllj#xD8fu&2_ybC#a+wR7-| YdFa-|x5)YY)F~fi{=eGqaQ7i60DKB@r~m)} literal 0 HcmV?d00001 From 8cffddb957de5edaab56c77af1740331b3743479 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 31 Jul 2024 15:16:45 +0200 Subject: [PATCH 488/626] chore(common): set definition timestamp to the current signed definitions [no changelog] --- common/defs/ethereum/released-definitions-timestamp.txt | 2 +- core/src/apps/ethereum/definitions_constants.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/defs/ethereum/released-definitions-timestamp.txt b/common/defs/ethereum/released-definitions-timestamp.txt index df18699a82..aea5282a5b 100644 --- a/common/defs/ethereum/released-definitions-timestamp.txt +++ b/common/defs/ethereum/released-definitions-timestamp.txt @@ -1 +1 @@ -2024-06-06T19:35:30+00:00 +2024-07-09T10:03:06+00:00 diff --git a/core/src/apps/ethereum/definitions_constants.py b/core/src/apps/ethereum/definitions_constants.py index 9dba840d42..58e7e71cb9 100644 --- a/core/src/apps/ethereum/definitions_constants.py +++ b/core/src/apps/ethereum/definitions_constants.py @@ -9,7 +9,7 @@ b"\xb8\xd2\xb2\x1d\xe2\x71\x24\xf0\x51\x1f\x90\x3a\xe7\xe6\x0e\x07\x96\x18\x10\xa0\xb8\xf2\x8e\xa7\x55\xfa\x50\x36\x7a\x8a\x2b\x8b", ) -MIN_DATA_VERSION = 1717702530 +MIN_DATA_VERSION = 1720519386 FORMAT_VERSION = b"trzd1" if __debug__: From ee6ab8effb35a8ae5b20d2ee022284ee7af60d7b Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Thu, 1 Aug 2024 16:06:32 +0200 Subject: [PATCH 489/626] docs(core): generate changelog for 2.8.1 --- core/.changelog.d/3035.fixed | 1 - core/.changelog.d/3728.added | 1 - core/.changelog.d/3885.added | 1 - core/.changelog.d/3896.added | 1 - core/.changelog.d/3969.fixed | 1 - core/.changelog.d/3972.fixed | 1 - core/.changelog.d/3987.changed | 2 -- core/.changelog.d/3990.fixed | 1 - core/.changelog.d/3992.changed | 1 - core/.changelog.d/4000.added | 1 - core/.changelog.d/4006.fixed | 1 - core/.changelog.d/4023.fixed | 1 - core/.changelog.d/4030.added | 1 - core/.changelog.d/4060.fixed | 1 - core/.changelog.d/4063.changed | 1 - core/CHANGELOG.T2B1.md | 24 +++++++++++++++++++++ core/CHANGELOG.T2T1.md | 24 +++++++++++++++++++++ core/CHANGELOG.T3T1.md | 38 +++++++++++++++++++++++++++++++++ core/CHANGELOG.md | 39 ++++++++++++++++++++++++++++++++++ 19 files changed, 125 insertions(+), 16 deletions(-) delete mode 100644 core/.changelog.d/3035.fixed delete mode 100644 core/.changelog.d/3728.added delete mode 100644 core/.changelog.d/3885.added delete mode 100644 core/.changelog.d/3896.added delete mode 100644 core/.changelog.d/3969.fixed delete mode 100644 core/.changelog.d/3972.fixed delete mode 100644 core/.changelog.d/3987.changed delete mode 100644 core/.changelog.d/3990.fixed delete mode 100644 core/.changelog.d/3992.changed delete mode 100644 core/.changelog.d/4000.added delete mode 100644 core/.changelog.d/4006.fixed delete mode 100644 core/.changelog.d/4023.fixed delete mode 100644 core/.changelog.d/4030.added delete mode 100644 core/.changelog.d/4060.fixed delete mode 100644 core/.changelog.d/4063.changed diff --git a/core/.changelog.d/3035.fixed b/core/.changelog.d/3035.fixed deleted file mode 100644 index fec90f3088..0000000000 --- a/core/.changelog.d/3035.fixed +++ /dev/null @@ -1 +0,0 @@ -[T2T1] Added a progress indicator for the formatting operation diff --git a/core/.changelog.d/3728.added b/core/.changelog.d/3728.added deleted file mode 100644 index 5f87842afa..0000000000 --- a/core/.changelog.d/3728.added +++ /dev/null @@ -1 +0,0 @@ -Added support for T3B1 diff --git a/core/.changelog.d/3885.added b/core/.changelog.d/3885.added deleted file mode 100644 index 2773a0199a..0000000000 --- a/core/.changelog.d/3885.added +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Added PIN keyboard animation diff --git a/core/.changelog.d/3896.added b/core/.changelog.d/3896.added deleted file mode 100644 index ef241f1d5c..0000000000 --- a/core/.changelog.d/3896.added +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Added menu entry animation diff --git a/core/.changelog.d/3969.fixed b/core/.changelog.d/3969.fixed deleted file mode 100644 index 3b19dbfe27..0000000000 --- a/core/.changelog.d/3969.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Improved screen brightness settings. diff --git a/core/.changelog.d/3972.fixed b/core/.changelog.d/3972.fixed deleted file mode 100644 index f2cfd86999..0000000000 --- a/core/.changelog.d/3972.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Improve touch layer precision diff --git a/core/.changelog.d/3987.changed b/core/.changelog.d/3987.changed deleted file mode 100644 index 397d06f243..0000000000 --- a/core/.changelog.d/3987.changed +++ /dev/null @@ -1,2 +0,0 @@ -[T3T1] Smoothened screen transitions by removing backlight fading -[T3T1] Improved resuming of interrupted animations diff --git a/core/.changelog.d/3990.fixed b/core/.changelog.d/3990.fixed deleted file mode 100644 index 72e6165c36..0000000000 --- a/core/.changelog.d/3990.fixed +++ /dev/null @@ -1 +0,0 @@ -[T2B1] Fix display orientation "south" diff --git a/core/.changelog.d/3992.changed b/core/.changelog.d/3992.changed deleted file mode 100644 index 06c52ff0d4..0000000000 --- a/core/.changelog.d/3992.changed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Improve instruction screens during multi-share recovery process diff --git a/core/.changelog.d/4000.added b/core/.changelog.d/4000.added deleted file mode 100644 index 0fee65a138..0000000000 --- a/core/.changelog.d/4000.added +++ /dev/null @@ -1 +0,0 @@ -Include Optiga throttling delay in PIN countdown. diff --git a/core/.changelog.d/4006.fixed b/core/.changelog.d/4006.fixed deleted file mode 100644 index ecbf6c3c3f..0000000000 --- a/core/.changelog.d/4006.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Fix More info screen during multi-share backup creation diff --git a/core/.changelog.d/4023.fixed b/core/.changelog.d/4023.fixed deleted file mode 100644 index 87ceb7dfde..0000000000 --- a/core/.changelog.d/4023.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Fixed title sometimes not fitting into result screen diff --git a/core/.changelog.d/4030.added b/core/.changelog.d/4030.added deleted file mode 100644 index 333626231e..0000000000 --- a/core/.changelog.d/4030.added +++ /dev/null @@ -1 +0,0 @@ -[T3T1] New UI of confirming interaction-less firmware update diff --git a/core/.changelog.d/4060.fixed b/core/.changelog.d/4060.fixed deleted file mode 100644 index 8730e08b48..0000000000 --- a/core/.changelog.d/4060.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes diff --git a/core/.changelog.d/4063.changed b/core/.changelog.d/4063.changed deleted file mode 100644 index e3391e23be..0000000000 --- a/core/.changelog.d/4063.changed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Improve share words swiping animation diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index b10a5cad27..e809959fd4 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.8.1] (21st August 2024) + +### Added +- Improve precision of PIN timeout countdown. [#4000] + +### Fixed +- Fix display orientation "south". [#3990] + + ## [2.8.0] (9th July 2024) ### Added @@ -873,6 +882,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#2937]: https://github.com/trezor/trezor-firmware/pull/2937 [#2955]: https://github.com/trezor/trezor-firmware/pull/2955 [#2989]: https://github.com/trezor/trezor-firmware/pull/2989 +[#3035]: https://github.com/trezor/trezor-firmware/pull/3035 [#3047]: https://github.com/trezor/trezor-firmware/pull/3047 [#3048]: https://github.com/trezor/trezor-firmware/pull/3048 [#3205]: https://github.com/trezor/trezor-firmware/pull/3205 @@ -906,8 +916,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3539]: https://github.com/trezor/trezor-firmware/pull/3539 [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3728]: https://github.com/trezor/trezor-firmware/pull/3728 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3885]: https://github.com/trezor/trezor-firmware/pull/3885 [#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3896]: https://github.com/trezor/trezor-firmware/pull/3896 [#3907]: https://github.com/trezor/trezor-firmware/pull/3907 [#3911]: https://github.com/trezor/trezor-firmware/pull/3911 [#3916]: https://github.com/trezor/trezor-firmware/pull/3916 @@ -917,3 +930,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 [#3965]: https://github.com/trezor/trezor-firmware/pull/3965 +[#3969]: https://github.com/trezor/trezor-firmware/pull/3969 +[#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3987]: https://github.com/trezor/trezor-firmware/pull/3987 +[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 +[#3992]: https://github.com/trezor/trezor-firmware/pull/3992 +[#4000]: https://github.com/trezor/trezor-firmware/pull/4000 +[#4006]: https://github.com/trezor/trezor-firmware/pull/4006 +[#4023]: https://github.com/trezor/trezor-firmware/pull/4023 +[#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4060]: https://github.com/trezor/trezor-firmware/pull/4060 +[#4063]: https://github.com/trezor/trezor-firmware/pull/4063 diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index 126b16dfce..8115584f2d 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.8.1] (21st August 2024) + +### Added +- Improve precision of PIN timeout countdown. [#4000] + +### Fixed +- Added a progress indicator for the formatting operation. [#3035] + + ## [2.8.0] (9th July 2024) ### Changed @@ -866,6 +875,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#2937]: https://github.com/trezor/trezor-firmware/pull/2937 [#2955]: https://github.com/trezor/trezor-firmware/pull/2955 [#2989]: https://github.com/trezor/trezor-firmware/pull/2989 +[#3035]: https://github.com/trezor/trezor-firmware/pull/3035 [#3047]: https://github.com/trezor/trezor-firmware/pull/3047 [#3048]: https://github.com/trezor/trezor-firmware/pull/3048 [#3205]: https://github.com/trezor/trezor-firmware/pull/3205 @@ -899,8 +909,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3539]: https://github.com/trezor/trezor-firmware/pull/3539 [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3728]: https://github.com/trezor/trezor-firmware/pull/3728 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3885]: https://github.com/trezor/trezor-firmware/pull/3885 [#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3896]: https://github.com/trezor/trezor-firmware/pull/3896 [#3907]: https://github.com/trezor/trezor-firmware/pull/3907 [#3911]: https://github.com/trezor/trezor-firmware/pull/3911 [#3916]: https://github.com/trezor/trezor-firmware/pull/3916 @@ -910,3 +923,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 [#3965]: https://github.com/trezor/trezor-firmware/pull/3965 +[#3969]: https://github.com/trezor/trezor-firmware/pull/3969 +[#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3987]: https://github.com/trezor/trezor-firmware/pull/3987 +[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 +[#3992]: https://github.com/trezor/trezor-firmware/pull/3992 +[#4000]: https://github.com/trezor/trezor-firmware/pull/4000 +[#4006]: https://github.com/trezor/trezor-firmware/pull/4006 +[#4023]: https://github.com/trezor/trezor-firmware/pull/4023 +[#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4060]: https://github.com/trezor/trezor-firmware/pull/4060 +[#4063]: https://github.com/trezor/trezor-firmware/pull/4063 diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md index 8a0f3da298..edf37ed487 100644 --- a/core/CHANGELOG.T3T1.md +++ b/core/CHANGELOG.T3T1.md @@ -4,6 +4,29 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.8.1] (21st August 2024) + +### Added +- Added PIN keyboard animation. [#3885] +- Added menu entry animation. [#3896] +- Improve precision of PIN timeout countdown. [#4000] +- New UI of confirming interaction-less firmware update. [#4030] + +### Changed +- Smoothened screen transitions by removing backlight fading. +- Improved resuming of interrupted animations. [#3987] +- Improve instruction screens during multi-share recovery process. [#3992] +- Improve share words swiping animation. [#4063] + +### Fixed +- Added a progress indicator for the formatting operation. [#3035] +- Improved screen brightness settings. [#3969] +- Improve touch layer precision. [#3972] +- Fix More info screen during multi-share backup creation. [#4006] +- Fixed title sometimes not fitting into result screen. [#4023] +- Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes. [#4060] + + ## [2.8.0] (9th July 2024) ### Added @@ -874,6 +897,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#2937]: https://github.com/trezor/trezor-firmware/pull/2937 [#2955]: https://github.com/trezor/trezor-firmware/pull/2955 [#2989]: https://github.com/trezor/trezor-firmware/pull/2989 +[#3035]: https://github.com/trezor/trezor-firmware/pull/3035 [#3047]: https://github.com/trezor/trezor-firmware/pull/3047 [#3048]: https://github.com/trezor/trezor-firmware/pull/3048 [#3205]: https://github.com/trezor/trezor-firmware/pull/3205 @@ -907,8 +931,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3539]: https://github.com/trezor/trezor-firmware/pull/3539 [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3728]: https://github.com/trezor/trezor-firmware/pull/3728 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3885]: https://github.com/trezor/trezor-firmware/pull/3885 [#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3896]: https://github.com/trezor/trezor-firmware/pull/3896 [#3907]: https://github.com/trezor/trezor-firmware/pull/3907 [#3911]: https://github.com/trezor/trezor-firmware/pull/3911 [#3916]: https://github.com/trezor/trezor-firmware/pull/3916 @@ -918,3 +945,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 [#3965]: https://github.com/trezor/trezor-firmware/pull/3965 +[#3969]: https://github.com/trezor/trezor-firmware/pull/3969 +[#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3987]: https://github.com/trezor/trezor-firmware/pull/3987 +[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 +[#3992]: https://github.com/trezor/trezor-firmware/pull/3992 +[#4000]: https://github.com/trezor/trezor-firmware/pull/4000 +[#4006]: https://github.com/trezor/trezor-firmware/pull/4006 +[#4023]: https://github.com/trezor/trezor-firmware/pull/4023 +[#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4060]: https://github.com/trezor/trezor-firmware/pull/4060 +[#4063]: https://github.com/trezor/trezor-firmware/pull/4063 diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index bc8848dd14..f6683d88d6 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -4,6 +4,30 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [2.8.1] (21st August 2024) + +### Added +- [T3B1] Added support for T3B1. [#3728] +- [T3T1] Added PIN keyboard animation. [#3885] +- [T3T1] Added menu entry animation. [#3896] +- Improve precision of PIN timeout countdown. [#4000] +- [T3T1] New UI of confirming interaction-less firmware update. [#4030] + +### Changed +- [T3T1] Smoothened screen transitions by removing backlight fading. +- [T3T1] Improved resuming of interrupted animations. [#3987] +- [T3T1] Improve instruction screens during multi-share recovery process. [#3992] +- [T3T1] Improve share words swiping animation. [#4063] + +### Fixed +- [T2T1,T3T1] Added a progress indicator for the formatting operation. [#3035] +- [T3T1] Improved screen brightness settings. [#3969] +- [T3T1] Improve touch layer precision. [#3972] +- [T2B1] Fix display orientation "south". [#3990] +- [T3T1] Fix More info screen during multi-share backup creation. [#4006] +- [T3T1] Fixed title sometimes not fitting into result screen. [#4023] +- [T3T1] Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes. [#4060] + ## [2.8.0] (9th July 2024) ### Added @@ -891,6 +915,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#2937]: https://github.com/trezor/trezor-firmware/pull/2937 [#2955]: https://github.com/trezor/trezor-firmware/pull/2955 [#2989]: https://github.com/trezor/trezor-firmware/pull/2989 +[#3035]: https://github.com/trezor/trezor-firmware/pull/3035 [#3047]: https://github.com/trezor/trezor-firmware/pull/3047 [#3048]: https://github.com/trezor/trezor-firmware/pull/3048 [#3205]: https://github.com/trezor/trezor-firmware/pull/3205 @@ -924,8 +949,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3539]: https://github.com/trezor/trezor-firmware/pull/3539 [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3728]: https://github.com/trezor/trezor-firmware/pull/3728 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3885]: https://github.com/trezor/trezor-firmware/pull/3885 [#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3896]: https://github.com/trezor/trezor-firmware/pull/3896 [#3907]: https://github.com/trezor/trezor-firmware/pull/3907 [#3911]: https://github.com/trezor/trezor-firmware/pull/3911 [#3916]: https://github.com/trezor/trezor-firmware/pull/3916 @@ -935,3 +963,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3925]: https://github.com/trezor/trezor-firmware/pull/3925 [#3940]: https://github.com/trezor/trezor-firmware/pull/3940 [#3965]: https://github.com/trezor/trezor-firmware/pull/3965 +[#3969]: https://github.com/trezor/trezor-firmware/pull/3969 +[#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3987]: https://github.com/trezor/trezor-firmware/pull/3987 +[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 +[#3992]: https://github.com/trezor/trezor-firmware/pull/3992 +[#4000]: https://github.com/trezor/trezor-firmware/pull/4000 +[#4006]: https://github.com/trezor/trezor-firmware/pull/4006 +[#4023]: https://github.com/trezor/trezor-firmware/pull/4023 +[#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4060]: https://github.com/trezor/trezor-firmware/pull/4060 +[#4063]: https://github.com/trezor/trezor-firmware/pull/4063 From effd81ed3bc646caf437265eb5a5dda749cce3b1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 2 Jul 2024 16:02:34 +0200 Subject: [PATCH 490/626] chore(core): fix xframebuffer conditionals [no changelog] --- .../rust/src/ui/shape/cache/drawing_cache.rs | 12 +- core/embed/rust/src/ui/shape/display/mod.rs | 2 +- core/embed/rust/src/ui/shape/mod.rs | 7 +- .../rust/src/ui/shape/progressive_render.rs | 143 +++++++++++++++++ core/embed/rust/src/ui/shape/render.rs | 145 +----------------- 5 files changed, 158 insertions(+), 151 deletions(-) create mode 100644 core/embed/rust/src/ui/shape/progressive_render.rs diff --git a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs index 6f64d7f43c..b0d431b6f4 100644 --- a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs +++ b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs @@ -11,9 +11,9 @@ use without_alloc::alloc::LocalAllocLeakExt; const ALIGN_PAD: usize = 8; -#[cfg(feature = "xframebuff")] +#[cfg(feature = "xframebuffer")] const ZLIB_CACHE_SLOTS: usize = 1; -#[cfg(not(feature = "xframebuff"))] +#[cfg(not(feature = "xframebuffer"))] const ZLIB_CACHE_SLOTS: usize = 3; const RENDER_BUFF_SIZE: usize = (240 * 2 * 16) + ALIGN_PAD; @@ -39,7 +39,7 @@ pub struct DrawingCache<'a> { #[cfg(feature = "ui_blurring")] blur_cache: RefCell<BlurCache<'a>>, - #[cfg(not(feature = "xframebuff"))] + #[cfg(not(feature = "xframebuffer"))] render_buff: &'a RefCell<RenderBuff>, } @@ -67,7 +67,7 @@ impl<'a> DrawingCache<'a> { #[cfg(feature = "ui_blurring")] blur_cache: RefCell::new(unwrap!(BlurCache::new(bump_a), "Blur cache alloc")), - #[cfg(not(feature = "xframebuff"))] + #[cfg(not(feature = "xframebuffer"))] render_buff: unwrap!(alloc_buf(bump_b), "Render buff alloc"), } } @@ -90,7 +90,7 @@ impl<'a> DrawingCache<'a> { } /// Returns a buffer used for ProgressiveRenderer slice - #[cfg(not(feature = "xframebuff"))] + #[cfg(not(feature = "xframebuffer"))] pub fn render_buff(&self) -> Option<RenderBuffRef<'a>> { self.render_buff.try_borrow_mut().ok() } @@ -122,7 +122,7 @@ impl<'a> DrawingCache<'a> { pub const fn get_bump_b_size() -> usize { let mut size = 0; - #[cfg(not(feature = "xframebuff"))] + #[cfg(not(feature = "xframebuffer"))] { size += core::mem::size_of::<RefCell<RenderBuff>>(); } diff --git a/core/embed/rust/src/ui/shape/display/mod.rs b/core/embed/rust/src/ui/shape/display/mod.rs index 3da85bbf30..5fba9b1b57 100644 --- a/core/embed/rust/src/ui/shape/display/mod.rs +++ b/core/embed/rust/src/ui/shape/display/mod.rs @@ -10,7 +10,7 @@ pub mod fb_mono8; pub mod fb_rgb565; #[cfg(all(feature = "xframebuffer", feature = "display_rgba8888",))] pub mod fb_rgba8888; -#[cfg(feature = "display_rgb565")] +#[cfg(all(not(feature = "xframebuffer"), feature = "display_rgb565"))] pub mod nofb_rgb565; #[cfg(not(feature = "new_rendering"))] diff --git a/core/embed/rust/src/ui/shape/mod.rs b/core/embed/rust/src/ui/shape/mod.rs index 7497ee224a..fd9a70a2c7 100644 --- a/core/embed/rust/src/ui/shape/mod.rs +++ b/core/embed/rust/src/ui/shape/mod.rs @@ -10,6 +10,8 @@ mod corner_highlight; mod display; #[cfg(feature = "ui_jpeg_decoder")] mod jpeg; +#[cfg(not(feature = "xframebuffer"))] +mod progressive_render; mod qrcode; mod rawimage; mod render; @@ -31,9 +33,12 @@ pub use corner_highlight::CornerHighlight; pub use display::{render_on_canvas, render_on_display, unlock_bumps_on_failure, ConcreteRenderer}; #[cfg(feature = "ui_jpeg_decoder")] pub use jpeg::JpegImage; +#[cfg(not(feature = "xframebuffer"))] +pub use progressive_render::ProgressiveRenderer; pub use qrcode::QrImage; pub use rawimage::RawImage; -pub use render::{DirectRenderer, ProgressiveRenderer, Renderer, ScopedRenderer}; +pub use render::{DirectRenderer, Renderer, ScopedRenderer}; + pub use text::Text; pub use toif::ToifImage; #[cfg(feature = "ui_image_buffer")] diff --git a/core/embed/rust/src/ui/shape/progressive_render.rs b/core/embed/rust/src/ui/shape/progressive_render.rs new file mode 100644 index 0000000000..a38cc36b93 --- /dev/null +++ b/core/embed/rust/src/ui/shape/progressive_render.rs @@ -0,0 +1,143 @@ +use crate::ui::{ + display::Color, + geometry::{Offset, Point, Rect}, + shape::{BasicCanvas, Canvas, DrawingCache, Renderer, Shape, ShapeClone, Viewport}, +}; +use without_alloc::{alloc::LocalAllocLeakExt, FixedVec}; + +use super::Rgb565Canvas; + +struct ShapeHolder<'a> { + shape: &'a mut dyn Shape<'a>, + viewport: Viewport, +} + +/// A more advanced Renderer implementation that supports deferred rendering. +pub struct ProgressiveRenderer<'a, 'alloc, T, C> +where + T: LocalAllocLeakExt<'alloc>, + C: BasicCanvas, +{ + /// Target canvas + canvas: &'a mut C, + /// Bump for cloning shapes + bump: &'alloc T, + /// List of rendered shapes + shapes: FixedVec<'alloc, ShapeHolder<'alloc>>, + /// Current viewport + viewport: Viewport, + // Default background color + bg_color: Option<Color>, + /// Drawing cache (decompression context, scratch-pad memory) + cache: &'a DrawingCache<'alloc>, +} + +impl<'a, 'alloc, T, C> ProgressiveRenderer<'a, 'alloc, T, C> +where + T: LocalAllocLeakExt<'alloc>, + C: BasicCanvas, +{ + /// Creates a new ProgressiveRenderer instance + pub fn new( + canvas: &'a mut C, + bg_color: Option<Color>, + cache: &'a DrawingCache<'alloc>, + bump: &'alloc T, + max_shapes: usize, + ) -> Self { + let viewport = canvas.viewport(); + Self { + canvas, + bump, + shapes: unwrap!(bump.fixed_vec(max_shapes), "No shape memory"), + viewport, + bg_color, + cache, + } + } + + /// Renders stored shapes onto the specified canvas + pub fn render(&mut self, lines: usize) { + let canvas_clip = self.canvas.viewport().clip; + + if canvas_clip.is_empty() { + return; + } + + let buff = &mut unwrap!(self.cache.render_buff(), "No render buffer"); + + let mut slice = unwrap!( + Rgb565Canvas::new( + Offset::new(canvas_clip.width(), lines as i16), + None, + Some(1), + &mut buff[..], + ), + "No render memory" + ); + + let lines = slice.height() as usize; + + for y in (canvas_clip.y0..canvas_clip.y1).step_by(lines) { + // Calculate the coordinates of the slice we will draw into + let slice_r = Rect::new( + // slice_r is in absolute coordinates + Point::new(canvas_clip.x0, y), + Point::new(canvas_clip.x1, y + lines as i16), + ); + + // Clear the slice background + if let Some(color) = self.bg_color { + slice.set_viewport(Viewport::from_size(slice_r.size())); + slice.fill_background(color); + } + + // Draw all shapes that overlaps the slice + for holder in self.shapes.iter_mut() { + let shape_viewport = holder.viewport.absolute_clip(slice_r); + let shape_bounds = holder.shape.bounds(); + + // Is the shape overlapping the current slice? + if shape_viewport.contains(shape_bounds) { + slice.set_viewport(shape_viewport.translate((-slice_r.top_left()).into())); + holder.shape.draw(&mut slice, self.cache); + + if shape_bounds.y1 + shape_viewport.origin.y <= shape_viewport.clip.y1 { + // The shape will never be drawn again + holder.shape.cleanup(self.cache); + } + } + } + self.canvas.draw_bitmap(slice_r, slice.view()); + } + } +} + +impl<'a, 'alloc, T, C> Renderer<'alloc> for ProgressiveRenderer<'a, 'alloc, T, C> +where + T: LocalAllocLeakExt<'alloc>, + C: BasicCanvas, +{ + fn viewport(&self) -> Viewport { + self.viewport + } + + fn set_viewport(&mut self, viewport: Viewport) { + self.viewport = viewport.absolute_clip(self.canvas.bounds()); + } + + fn render_shape<S>(&mut self, shape: S) + where + S: Shape<'alloc> + ShapeClone<'alloc>, + { + // Is the shape visible? + if self.viewport.contains(shape.bounds()) { + // Clone the shape & push it to the list + let holder = ShapeHolder { + shape: unwrap!(shape.clone_at_bump(self.bump), "No shape memory"), + viewport: self.viewport, + }; + unwrap!(self.shapes.push(holder), "Shape list full"); + } + } +} diff --git a/core/embed/rust/src/ui/shape/render.rs b/core/embed/rust/src/ui/shape/render.rs index 7551febc09..9a59a996a0 100644 --- a/core/embed/rust/src/ui/shape/render.rs +++ b/core/embed/rust/src/ui/shape/render.rs @@ -1,11 +1,9 @@ use crate::ui::{ display::Color, - geometry::{Offset, Point, Rect}, + geometry::{Offset, Rect}, }; -use super::{BasicCanvas, Canvas, DrawingCache, Rgb565Canvas, Shape, ShapeClone, Viewport}; - -use without_alloc::{alloc::LocalAllocLeakExt, FixedVec}; +use super::{Canvas, DrawingCache, Shape, ShapeClone, Viewport}; // ========================================================================== // trait Renderer @@ -114,145 +112,6 @@ where } } -// ========================================================================== -// struct ProgressiveRenderer -// ========================================================================== - -struct ShapeHolder<'a> { - shape: &'a mut dyn Shape<'a>, - viewport: Viewport, -} - -/// A more advanced Renderer implementation that supports deferred rendering. -pub struct ProgressiveRenderer<'a, 'alloc, T, C> -where - T: LocalAllocLeakExt<'alloc>, - C: BasicCanvas, -{ - /// Target canvas - canvas: &'a mut C, - /// Bump for cloning shapes - bump: &'alloc T, - /// List of rendered shapes - shapes: FixedVec<'alloc, ShapeHolder<'alloc>>, - /// Current viewport - viewport: Viewport, - // Default background color - bg_color: Option<Color>, - /// Drawing cache (decompression context, scratch-pad memory) - cache: &'a DrawingCache<'alloc>, -} - -impl<'a, 'alloc, T, C> ProgressiveRenderer<'a, 'alloc, T, C> -where - T: LocalAllocLeakExt<'alloc>, - C: BasicCanvas, -{ - /// Creates a new ProgressiveRenderer instance - pub fn new( - canvas: &'a mut C, - bg_color: Option<Color>, - cache: &'a DrawingCache<'alloc>, - bump: &'alloc T, - max_shapes: usize, - ) -> Self { - let viewport = canvas.viewport(); - Self { - canvas, - bump, - shapes: unwrap!(bump.fixed_vec(max_shapes), "No shape memory"), - viewport, - bg_color, - cache, - } - } - - /// Renders stored shapes onto the specified canvas - pub fn render(&mut self, lines: usize) { - let canvas_clip = self.canvas.viewport().clip; - - if canvas_clip.is_empty() { - return; - } - - let buff = &mut unwrap!(self.cache.render_buff(), "No render buffer"); - - let mut slice = unwrap!( - Rgb565Canvas::new( - Offset::new(canvas_clip.width(), lines as i16), - None, - Some(1), - &mut buff[..], - ), - "No render memory" - ); - - let lines = slice.height() as usize; - - for y in (canvas_clip.y0..canvas_clip.y1).step_by(lines) { - // Calculate the coordinates of the slice we will draw into - let slice_r = Rect::new( - // slice_r is in absolute coordinates - Point::new(canvas_clip.x0, y), - Point::new(canvas_clip.x1, y + lines as i16), - ); - - // Clear the slice background - if let Some(color) = self.bg_color { - slice.set_viewport(Viewport::from_size(slice_r.size())); - slice.fill_background(color); - } - - // Draw all shapes that overlaps the slice - for holder in self.shapes.iter_mut() { - let shape_viewport = holder.viewport.absolute_clip(slice_r); - let shape_bounds = holder.shape.bounds(); - - // Is the shape overlapping the current slice? - if shape_viewport.contains(shape_bounds) { - slice.set_viewport(shape_viewport.translate((-slice_r.top_left()).into())); - holder.shape.draw(&mut slice, self.cache); - - if shape_bounds.y1 + shape_viewport.origin.y <= shape_viewport.clip.y1 { - // The shape will never be drawn again - holder.shape.cleanup(self.cache); - } - } - } - self.canvas.draw_bitmap(slice_r, slice.view()); - } - } -} - -impl<'a, 'alloc, T, C> Renderer<'alloc> for ProgressiveRenderer<'a, 'alloc, T, C> -where - T: LocalAllocLeakExt<'alloc>, - C: BasicCanvas, -{ - fn viewport(&self) -> Viewport { - self.viewport - } - - fn set_viewport(&mut self, viewport: Viewport) { - self.viewport = viewport.absolute_clip(self.canvas.bounds()); - } - - fn render_shape<S>(&mut self, shape: S) - where - S: Shape<'alloc> + ShapeClone<'alloc>, - { - // Is the shape visible? - if self.viewport.contains(shape.bounds()) { - // Clone the shape & push it to the list - let holder = ShapeHolder { - shape: unwrap!(shape.clone_at_bump(self.bump), "No shape memory"), - viewport: self.viewport, - }; - unwrap!(self.shapes.push(holder), "Shape list full"); - } - } -} - pub struct ScopedRenderer<'alloc, 'env, T> where 'env: 'alloc, From 182f8d9774d4222a45dff23f5b5a20f17acfb34b Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 2 Jul 2024 16:02:38 +0200 Subject: [PATCH 491/626] chore(core): fix unused warning [no changelog] --- core/embed/rust/src/ui/model_tr/component/share_words.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/core/embed/rust/src/ui/model_tr/component/share_words.rs b/core/embed/rust/src/ui/model_tr/component/share_words.rs index f1e920f281..0ec10399d3 100644 --- a/core/embed/rust/src/ui/model_tr/component/share_words.rs +++ b/core/embed/rust/src/ui/model_tr/component/share_words.rs @@ -13,6 +13,7 @@ use crate::{ }; use heapless::Vec; +#[cfg(feature = "ui_debug")] use ufmt::uwrite; use super::{common::display_left, scrollbar::SCROLLBAR_SPACE, theme, ScrollBar}; From 7307c47b94ddc2f0df48e1fd359231ce5d881249 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 1 Aug 2024 13:28:13 +0200 Subject: [PATCH 492/626] chore(core): support new rendering on T3B1 [no changelog] --- core/site_scons/models/T3B1/trezor_t3b1_revB.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/site_scons/models/T3B1/trezor_t3b1_revB.py b/core/site_scons/models/T3B1/trezor_t3b1_revB.py index 9682dd3576..67e3f1bfc4 100644 --- a/core/site_scons/models/T3B1/trezor_t3b1_revB.py +++ b/core/site_scons/models/T3B1/trezor_t3b1_revB.py @@ -17,6 +17,11 @@ def configure( hw_model = get_hw_model_as_number("T3B1") hw_revision = "B" + if "new_rendering" in features_wanted: + defines += ["XFRAMEBUFFER"] + features_available.append("xframebuffer") + features_available.append("display_mono") + mcu = "STM32U585xx" linker_script = "stm32u58" @@ -37,7 +42,12 @@ def configure( sources += [ "embed/models/T3B1/model_T3B1_layout.c", ] - sources += [f"embed/trezorhal/stm32u5/displays/{display}"] + + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/xdisplay_legacy.c"] + sources += ["embed/trezorhal/stm32u5/xdisplay/vg-2864/display_driver.c"] + else: + sources += [f"embed/trezorhal/stm32u5/displays/{display}"] if "input" in features_wanted: sources += ["embed/trezorhal/stm32u5/button.c"] From 5bba2e0aadb42e9acb24807bafda06557dffef82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 19 Jul 2024 13:31:54 +0200 Subject: [PATCH 493/626] feat(core): improve optiga initialization error handling [no changelog] --- core/embed/firmware/main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/embed/firmware/main.c b/core/embed/firmware/main.c index 253cc00eec..4785fce6dd 100644 --- a/core/embed/firmware/main.c +++ b/core/embed/firmware/main.c @@ -228,11 +228,17 @@ int main(void) { #endif optiga_init(); - optiga_open_application(); if (sectrue == secret_ok) { - optiga_sec_chan_handshake(secret, sizeof(secret)); + // If the shielded connection cannot be established, reset Optiga and + // continue without it. In this case, OID_KEY_FIDO and OID_KEY_DEV cannot be + // used, which means device and FIDO attestation will not work. + if (optiga_sec_chan_handshake(secret, sizeof(secret)) != OPTIGA_SUCCESS) { + optiga_soft_reset(); + } } memzero(secret, sizeof(secret)); + ensure(sectrue * (optiga_open_application() == OPTIGA_SUCCESS), + "Cannot initialize optiga."); #endif #if !defined TREZOR_MODEL_1 From 632b9561559b7ab6824bb7eeac072874e07b7b82 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 5 Aug 2024 15:53:52 +0200 Subject: [PATCH 494/626] docs(core): added Solana fix to changelog --- core/CHANGELOG.T2B1.md | 2 ++ core/CHANGELOG.T2T1.md | 2 ++ core/CHANGELOG.T3T1.md | 2 ++ core/CHANGELOG.md | 2 ++ 4 files changed, 8 insertions(+) diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index e809959fd4..479b91f6a9 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Fix display orientation "south". [#3990] +- Solana: added support for deprecated AToken Create `rent_sysvar` argument. [#3976] ## [2.8.0] (9th July 2024) @@ -932,6 +933,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3965]: https://github.com/trezor/trezor-firmware/pull/3965 [#3969]: https://github.com/trezor/trezor-firmware/pull/3969 [#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3976]: https://github.com/trezor/trezor-firmware/pull/3976 [#3987]: https://github.com/trezor/trezor-firmware/pull/3987 [#3990]: https://github.com/trezor/trezor-firmware/pull/3990 [#3992]: https://github.com/trezor/trezor-firmware/pull/3992 diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index 8115584f2d..1fb8af53e2 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Added a progress indicator for the formatting operation. [#3035] +- Solana: added support for deprecated AToken Create `rent_sysvar` argument. [#3976] ## [2.8.0] (9th July 2024) @@ -925,6 +926,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3965]: https://github.com/trezor/trezor-firmware/pull/3965 [#3969]: https://github.com/trezor/trezor-firmware/pull/3969 [#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3976]: https://github.com/trezor/trezor-firmware/pull/3976 [#3987]: https://github.com/trezor/trezor-firmware/pull/3987 [#3990]: https://github.com/trezor/trezor-firmware/pull/3990 [#3992]: https://github.com/trezor/trezor-firmware/pull/3992 diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md index edf37ed487..4148f5a663 100644 --- a/core/CHANGELOG.T3T1.md +++ b/core/CHANGELOG.T3T1.md @@ -25,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix More info screen during multi-share backup creation. [#4006] - Fixed title sometimes not fitting into result screen. [#4023] - Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes. [#4060] +- Solana: added support for deprecated AToken Create `rent_sysvar` argument. [#3976] ## [2.8.0] (9th July 2024) @@ -947,6 +948,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3965]: https://github.com/trezor/trezor-firmware/pull/3965 [#3969]: https://github.com/trezor/trezor-firmware/pull/3969 [#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3976]: https://github.com/trezor/trezor-firmware/pull/3976 [#3987]: https://github.com/trezor/trezor-firmware/pull/3987 [#3990]: https://github.com/trezor/trezor-firmware/pull/3990 [#3992]: https://github.com/trezor/trezor-firmware/pull/3992 diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index f6683d88d6..f59734b737 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -27,6 +27,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - [T3T1] Fix More info screen during multi-share backup creation. [#4006] - [T3T1] Fixed title sometimes not fitting into result screen. [#4023] - [T3T1] Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes. [#4060] +- Solana: added support for deprecated AToken Create `rent_sysvar` argument. [#3976] ## [2.8.0] (9th July 2024) @@ -965,6 +966,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3965]: https://github.com/trezor/trezor-firmware/pull/3965 [#3969]: https://github.com/trezor/trezor-firmware/pull/3969 [#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3976]: https://github.com/trezor/trezor-firmware/pull/3976 [#3987]: https://github.com/trezor/trezor-firmware/pull/3987 [#3990]: https://github.com/trezor/trezor-firmware/pull/3990 [#3992]: https://github.com/trezor/trezor-firmware/pull/3992 From c6093c7a1a30a9aa8f182416d5de67c8a6bd4e97 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 6 Aug 2024 13:28:00 +0200 Subject: [PATCH 495/626] chore(core): include signed translations for 2.8.1 --- core/translations/signatures.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/translations/signatures.json b/core/translations/signatures.json index c0acd85353..6ff7391c35 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -5,6 +5,13 @@ "commit": "39300036083657236e241da6f57f9a78269814e7" }, "history": [ + { + "signature": "03f25c425729485e7dd7c8078b61347668e174d438c5a3cfbb6ac0f62ae9edc7741c554bb8622cf027a41f5d56cf7adcc5f0c14174ac99c1d48b46d7fde853280e", + "version": "2.8.1.0", + "merkle_root": "61467ac92c2678b624b2d9ab6d37d4a0ec01a44b5542261c19406cc674d71142", + "datetime": "2024-08-06T11:26:05.720294", + "commit": "632b9561559b7ab6824bb7eeac072874e07b7b82" + }, { "signature": "032698a3739876f30f74e9561521641c12dda685510f68c00f78dab4ff066444e3c13eff312ee242f7554342dc9a5ddf888fd672d85dec021ee55f4e7c9e1c290b", "version": "2.8.0.0", From 1c5d47a875ee6ef8823cca7cf8a265e2e0b57584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 23 Jul 2024 14:19:40 +0200 Subject: [PATCH 496/626] refactor(core/solana): use variables instead of literals [no changelog] --- .../apps/solana/transaction/instructions.py | 174 ++++++++++-------- .../solana/transaction/instructions.py.mako | 2 +- 2 files changed, 103 insertions(+), 73 deletions(-) diff --git a/core/src/apps/solana/transaction/instructions.py b/core/src/apps/solana/transaction/instructions.py index a30cab45f4..afae160648 100644 --- a/core/src/apps/solana/transaction/instructions.py +++ b/core/src/apps/solana/transaction/instructions.py @@ -109,149 +109,179 @@ def __getattr__(name: str) -> Type[Instruction]: def get_id(name: str) -> tuple[str, InstructionId]: if name == "SystemProgramCreateAccountInstruction": - return ("11111111111111111111111111111111", 0) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT) if name == "SystemProgramAssignInstruction": - return ("11111111111111111111111111111111", 1) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ASSIGN) if name == "SystemProgramTransferInstruction": - return ("11111111111111111111111111111111", 2) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_TRANSFER) if name == "SystemProgramCreateAccountWithSeedInstruction": - return ("11111111111111111111111111111111", 3) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED) if name == "SystemProgramAdvanceNonceAccountInstruction": - return ("11111111111111111111111111111111", 4) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT) if name == "SystemProgramWithdrawNonceAccountInstruction": - return ("11111111111111111111111111111111", 5) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT) if name == "SystemProgramInitializeNonceAccountInstruction": - return ("11111111111111111111111111111111", 6) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT) if name == "SystemProgramAuthorizeNonceAccountInstruction": - return ("11111111111111111111111111111111", 7) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT) if name == "SystemProgramAllocateInstruction": - return ("11111111111111111111111111111111", 8) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ALLOCATE) if name == "SystemProgramAllocateWithSeedInstruction": - return ("11111111111111111111111111111111", 9) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED) if name == "SystemProgramAssignWithSeedInstruction": - return ("11111111111111111111111111111111", 10) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED) if name == "SystemProgramTransferWithSeedInstruction": - return ("11111111111111111111111111111111", 11) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED) if name == "SystemProgramUpgradeNonceAccountInstruction": - return ("11111111111111111111111111111111", 12) + return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT) if name == "StakeProgramInitializeInstruction": - return ("Stake11111111111111111111111111111111111111", 0) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_INITIALIZE) if name == "StakeProgramAuthorizeInstruction": - return ("Stake11111111111111111111111111111111111111", 1) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_AUTHORIZE) if name == "StakeProgramDelegateStakeInstruction": - return ("Stake11111111111111111111111111111111111111", 2) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_DELEGATE_STAKE) if name == "StakeProgramSplitInstruction": - return ("Stake11111111111111111111111111111111111111", 3) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_SPLIT) if name == "StakeProgramWithdrawInstruction": - return ("Stake11111111111111111111111111111111111111", 4) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_WITHDRAW) if name == "StakeProgramDeactivateInstruction": - return ("Stake11111111111111111111111111111111111111", 5) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_DEACTIVATE) if name == "StakeProgramSetLockupInstruction": - return ("Stake11111111111111111111111111111111111111", 6) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_SET_LOCKUP) if name == "StakeProgramMergeInstruction": - return ("Stake11111111111111111111111111111111111111", 7) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_MERGE) if name == "StakeProgramAuthorizeWithSeedInstruction": - return ("Stake11111111111111111111111111111111111111", 8) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED) if name == "StakeProgramInitializeCheckedInstruction": - return ("Stake11111111111111111111111111111111111111", 9) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED) if name == "StakeProgramAuthorizeCheckedInstruction": - return ("Stake11111111111111111111111111111111111111", 10) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED) if name == "StakeProgramAuthorizeCheckedWithSeedInstruction": - return ("Stake11111111111111111111111111111111111111", 11) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED) if name == "StakeProgramSetLockupCheckedInstruction": - return ("Stake11111111111111111111111111111111111111", 12) + return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED) if name == "ComputeBudgetProgramRequestHeapFrameInstruction": - return ("ComputeBudget111111111111111111111111111111", 1) + return ( + COMPUTE_BUDGET_PROGRAM_ID, + COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME, + ) if name == "ComputeBudgetProgramSetComputeUnitLimitInstruction": - return ("ComputeBudget111111111111111111111111111111", 2) + return ( + COMPUTE_BUDGET_PROGRAM_ID, + COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT, + ) if name == "ComputeBudgetProgramSetComputeUnitPriceInstruction": - return ("ComputeBudget111111111111111111111111111111", 3) + return ( + COMPUTE_BUDGET_PROGRAM_ID, + COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE, + ) if name == "TokenProgramInitializeAccountInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 1) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT) if name == "TokenProgramInitializeMultisigInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 2) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG) if name == "TokenProgramTransferInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 3) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_TRANSFER) if name == "TokenProgramApproveInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 4) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_APPROVE) if name == "TokenProgramRevokeInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 5) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_REVOKE) if name == "TokenProgramSetAuthorityInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 6) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_SET_AUTHORITY) if name == "TokenProgramMintToInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 7) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_MINT_TO) if name == "TokenProgramBurnInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 8) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_BURN) if name == "TokenProgramCloseAccountInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 9) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT) if name == "TokenProgramFreezeAccountInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 10) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT) if name == "TokenProgramThawAccountInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 11) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT) if name == "TokenProgramTransferCheckedInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 12) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED) if name == "TokenProgramApproveCheckedInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 13) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED) if name == "TokenProgramMinttoCheckedInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 14) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED) if name == "TokenProgramBurnCheckedInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 15) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_BURN_CHECKED) if name == "TokenProgramInitializeAccount2Instruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 16) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2) if name == "TokenProgramSyncNativeInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 17) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_SYNC_NATIVE) if name == "TokenProgramInitializeAccount3Instruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 18) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3) if name == "TokenProgramInitializeImmutableOwnerInstruction": - return ("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", 22) + return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER) if name == "Token2022ProgramInitializeAccountInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 1) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT) if name == "Token2022ProgramInitializeMultisigInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 2) + return ( + TOKEN_2022_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG, + ) if name == "Token2022ProgramTransferInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 3) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_TRANSFER) if name == "Token2022ProgramApproveInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 4) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_APPROVE) if name == "Token2022ProgramRevokeInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 5) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_REVOKE) if name == "Token2022ProgramSetAuthorityInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 6) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY) if name == "Token2022ProgramMinttoInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 7) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_MINT_TO) if name == "Token2022ProgramBurnInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 8) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_BURN) if name == "Token2022ProgramCloseAccountInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 9) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT) if name == "Token2022ProgramFreezeAccountInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 10) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT) if name == "Token2022ProgramThawAccountInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 11) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT) if name == "Token2022ProgramTransferCheckedInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 12) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED) if name == "Token2022ProgramApproveCheckedInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 13) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED) if name == "Token2022ProgramMinttoCheckedInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 14) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED) if name == "Token2022ProgramBurnCheckedInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 15) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED) if name == "Token2022ProgramInitializeAccount2Instruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 16) + return ( + TOKEN_2022_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2, + ) if name == "Token2022ProgramSyncNativeInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 17) + return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE) if name == "Token2022ProgramInitializeAccount3Instruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 18) + return ( + TOKEN_2022_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3, + ) if name == "Token2022ProgramInitializeImmutableOwnerInstruction": - return ("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", 22) + return ( + TOKEN_2022_PROGRAM_ID, + TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER, + ) if name == "AssociatedTokenAccountProgramCreateInstruction": - return ("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL", None) + return ( + ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE, + ) if name == "AssociatedTokenAccountProgramCreateIdempotentInstruction": - return ("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL", 1) + return ( + ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT, + ) if name == "AssociatedTokenAccountProgramRecoverNestedInstruction": - return ("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL", 2) + return ( + ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED, + ) if name == "MemoProgramMemoInstruction": - return ("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr", None) + return (MEMO_PROGRAM_ID, MEMO_PROGRAM_ID_INS_MEMO) if name == "MemoLegacyProgramMemoInstruction": - return ("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo", None) + return (MEMO_LEGACY_PROGRAM_ID, MEMO_LEGACY_PROGRAM_ID_INS_MEMO) raise AttributeError # Unknown instruction id = get_id(name) diff --git a/core/src/apps/solana/transaction/instructions.py.mako b/core/src/apps/solana/transaction/instructions.py.mako index 5877a20627..1ad43af71b 100644 --- a/core/src/apps/solana/transaction/instructions.py.mako +++ b/core/src/apps/solana/transaction/instructions.py.mako @@ -70,7 +70,7 @@ def __getattr__(name: str) -> Type[Instruction]: %for program in programs["programs"]: %for instruction in program["instructions"]: if name == "${getClassName(program, instruction)}": - return ("${program["id"]}", ${instruction["id"]}) + return (${getProgramId(program)}, ${getInstructionIdText(program, instruction)}) %endfor %endfor raise AttributeError # Unknown instruction From 90eef5331ae0b9a8362ed81fb136364e33cc4ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 23 Jul 2024 13:46:43 +0200 Subject: [PATCH 497/626] refactor(core/solana): use local constants [no changelog] --- .../apps/solana/transaction/instructions.py | 661 +++++++++--------- .../solana/transaction/instructions.py.mako | 11 +- ...test_apps.solana.predefined_transaction.py | 18 +- 3 files changed, 356 insertions(+), 334 deletions(-) diff --git a/core/src/apps/solana/transaction/instructions.py b/core/src/apps/solana/transaction/instructions.py index afae160648..f8f5d75db4 100644 --- a/core/src/apps/solana/transaction/instructions.py +++ b/core/src/apps/solana/transaction/instructions.py @@ -1,5 +1,6 @@ # generated from instructions.py.mako # do not edit manually! +from micropython import const from typing import TYPE_CHECKING from trezor.wire import DataError @@ -23,265 +24,279 @@ from ..types import Account, InstructionData, InstructionId -SYSTEM_PROGRAM_ID = "11111111111111111111111111111111" -STAKE_PROGRAM_ID = "Stake11111111111111111111111111111111111111" -COMPUTE_BUDGET_PROGRAM_ID = "ComputeBudget111111111111111111111111111111" -TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" -TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" -ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" -MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr" -MEMO_LEGACY_PROGRAM_ID = "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo" - -SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT = 0 -SYSTEM_PROGRAM_ID_INS_ASSIGN = 1 -SYSTEM_PROGRAM_ID_INS_TRANSFER = 2 -SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED = 3 -SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT = 4 -SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT = 5 -SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT = 6 -SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT = 7 -SYSTEM_PROGRAM_ID_INS_ALLOCATE = 8 -SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED = 9 -SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED = 10 -SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED = 11 -SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT = 12 -STAKE_PROGRAM_ID_INS_INITIALIZE = 0 -STAKE_PROGRAM_ID_INS_AUTHORIZE = 1 -STAKE_PROGRAM_ID_INS_DELEGATE_STAKE = 2 -STAKE_PROGRAM_ID_INS_SPLIT = 3 -STAKE_PROGRAM_ID_INS_WITHDRAW = 4 -STAKE_PROGRAM_ID_INS_DEACTIVATE = 5 -STAKE_PROGRAM_ID_INS_SET_LOCKUP = 6 -STAKE_PROGRAM_ID_INS_MERGE = 7 -STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED = 8 -STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED = 9 -STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED = 10 -STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED = 11 -STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED = 12 -COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME = 1 -COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT = 2 -COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE = 3 -TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT = 1 -TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG = 2 -TOKEN_PROGRAM_ID_INS_TRANSFER = 3 -TOKEN_PROGRAM_ID_INS_APPROVE = 4 -TOKEN_PROGRAM_ID_INS_REVOKE = 5 -TOKEN_PROGRAM_ID_INS_SET_AUTHORITY = 6 -TOKEN_PROGRAM_ID_INS_MINT_TO = 7 -TOKEN_PROGRAM_ID_INS_BURN = 8 -TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT = 9 -TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT = 10 -TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT = 11 -TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED = 12 -TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED = 13 -TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED = 14 -TOKEN_PROGRAM_ID_INS_BURN_CHECKED = 15 -TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2 = 16 -TOKEN_PROGRAM_ID_INS_SYNC_NATIVE = 17 -TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3 = 18 -TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER = 22 -TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT = 1 -TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG = 2 -TOKEN_2022_PROGRAM_ID_INS_TRANSFER = 3 -TOKEN_2022_PROGRAM_ID_INS_APPROVE = 4 -TOKEN_2022_PROGRAM_ID_INS_REVOKE = 5 -TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY = 6 -TOKEN_2022_PROGRAM_ID_INS_MINT_TO = 7 -TOKEN_2022_PROGRAM_ID_INS_BURN = 8 -TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT = 9 -TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT = 10 -TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT = 11 -TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED = 12 -TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED = 13 -TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED = 14 -TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED = 15 -TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2 = 16 -TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE = 17 -TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3 = 18 -TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER = 22 -ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE = None -ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT = 1 -ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED = 2 -MEMO_PROGRAM_ID_INS_MEMO = None -MEMO_LEGACY_PROGRAM_ID_INS_MEMO = None +_SYSTEM_PROGRAM_ID = "11111111111111111111111111111111" +_STAKE_PROGRAM_ID = "Stake11111111111111111111111111111111111111" +_COMPUTE_BUDGET_PROGRAM_ID = "ComputeBudget111111111111111111111111111111" +_TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" +_TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" +_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" +_MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr" +_MEMO_LEGACY_PROGRAM_ID = "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo" + +_SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT = const(0) +_SYSTEM_PROGRAM_ID_INS_ASSIGN = const(1) +_SYSTEM_PROGRAM_ID_INS_TRANSFER = const(2) +_SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED = const(3) +_SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT = const(4) +_SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT = const(5) +_SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT = const(6) +_SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT = const(7) +_SYSTEM_PROGRAM_ID_INS_ALLOCATE = const(8) +_SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED = const(9) +_SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED = const(10) +_SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED = const(11) +_SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT = const(12) +_STAKE_PROGRAM_ID_INS_INITIALIZE = const(0) +_STAKE_PROGRAM_ID_INS_AUTHORIZE = const(1) +_STAKE_PROGRAM_ID_INS_DELEGATE_STAKE = const(2) +_STAKE_PROGRAM_ID_INS_SPLIT = const(3) +_STAKE_PROGRAM_ID_INS_WITHDRAW = const(4) +_STAKE_PROGRAM_ID_INS_DEACTIVATE = const(5) +_STAKE_PROGRAM_ID_INS_SET_LOCKUP = const(6) +_STAKE_PROGRAM_ID_INS_MERGE = const(7) +_STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED = const(8) +_STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED = const(9) +_STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED = const(10) +_STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED = const(11) +_STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED = const(12) +_COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME = const(1) +_COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT = const(2) +_COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE = const(3) +_TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT = const(1) +_TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG = const(2) +_TOKEN_PROGRAM_ID_INS_TRANSFER = const(3) +_TOKEN_PROGRAM_ID_INS_APPROVE = const(4) +_TOKEN_PROGRAM_ID_INS_REVOKE = const(5) +_TOKEN_PROGRAM_ID_INS_SET_AUTHORITY = const(6) +_TOKEN_PROGRAM_ID_INS_MINT_TO = const(7) +_TOKEN_PROGRAM_ID_INS_BURN = const(8) +_TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT = const(9) +_TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT = const(10) +_TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT = const(11) +_TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED = const(12) +_TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED = const(13) +_TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED = const(14) +_TOKEN_PROGRAM_ID_INS_BURN_CHECKED = const(15) +_TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2 = const(16) +_TOKEN_PROGRAM_ID_INS_SYNC_NATIVE = const(17) +_TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3 = const(18) +_TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER = const(22) +_TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT = const(1) +_TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG = const(2) +_TOKEN_2022_PROGRAM_ID_INS_TRANSFER = const(3) +_TOKEN_2022_PROGRAM_ID_INS_APPROVE = const(4) +_TOKEN_2022_PROGRAM_ID_INS_REVOKE = const(5) +_TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY = const(6) +_TOKEN_2022_PROGRAM_ID_INS_MINT_TO = const(7) +_TOKEN_2022_PROGRAM_ID_INS_BURN = const(8) +_TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT = const(9) +_TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT = const(10) +_TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT = const(11) +_TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED = const(12) +_TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED = const(13) +_TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED = const(14) +_TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED = const(15) +_TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2 = const(16) +_TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE = const(17) +_TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3 = const(18) +_TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER = const(22) +_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE = None +_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT = const(1) +_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED = const(2) +_MEMO_PROGRAM_ID_INS_MEMO = None +_MEMO_LEGACY_PROGRAM_ID_INS_MEMO = None + +COMPUTE_BUDGET_PROGRAM_ID = _COMPUTE_BUDGET_PROGRAM_ID +COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT = ( + _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT +) +COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE = ( + _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE +) def __getattr__(name: str) -> Type[Instruction]: def get_id(name: str) -> tuple[str, InstructionId]: if name == "SystemProgramCreateAccountInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT) if name == "SystemProgramAssignInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ASSIGN) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_ASSIGN) if name == "SystemProgramTransferInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_TRANSFER) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_TRANSFER) if name == "SystemProgramCreateAccountWithSeedInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED) if name == "SystemProgramAdvanceNonceAccountInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT) if name == "SystemProgramWithdrawNonceAccountInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT) if name == "SystemProgramInitializeNonceAccountInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT) if name == "SystemProgramAuthorizeNonceAccountInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT) if name == "SystemProgramAllocateInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ALLOCATE) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_ALLOCATE) if name == "SystemProgramAllocateWithSeedInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED) if name == "SystemProgramAssignWithSeedInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED) if name == "SystemProgramTransferWithSeedInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED) if name == "SystemProgramUpgradeNonceAccountInstruction": - return (SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT) + return (_SYSTEM_PROGRAM_ID, _SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT) if name == "StakeProgramInitializeInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_INITIALIZE) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_INITIALIZE) if name == "StakeProgramAuthorizeInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_AUTHORIZE) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_AUTHORIZE) if name == "StakeProgramDelegateStakeInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_DELEGATE_STAKE) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_DELEGATE_STAKE) if name == "StakeProgramSplitInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_SPLIT) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_SPLIT) if name == "StakeProgramWithdrawInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_WITHDRAW) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_WITHDRAW) if name == "StakeProgramDeactivateInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_DEACTIVATE) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_DEACTIVATE) if name == "StakeProgramSetLockupInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_SET_LOCKUP) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_SET_LOCKUP) if name == "StakeProgramMergeInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_MERGE) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_MERGE) if name == "StakeProgramAuthorizeWithSeedInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED) if name == "StakeProgramInitializeCheckedInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED) if name == "StakeProgramAuthorizeCheckedInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED) if name == "StakeProgramAuthorizeCheckedWithSeedInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED) + return ( + _STAKE_PROGRAM_ID, + _STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED, + ) if name == "StakeProgramSetLockupCheckedInstruction": - return (STAKE_PROGRAM_ID, STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED) + return (_STAKE_PROGRAM_ID, _STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED) if name == "ComputeBudgetProgramRequestHeapFrameInstruction": return ( - COMPUTE_BUDGET_PROGRAM_ID, - COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME, + _COMPUTE_BUDGET_PROGRAM_ID, + _COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME, ) if name == "ComputeBudgetProgramSetComputeUnitLimitInstruction": return ( - COMPUTE_BUDGET_PROGRAM_ID, - COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT, + _COMPUTE_BUDGET_PROGRAM_ID, + _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT, ) if name == "ComputeBudgetProgramSetComputeUnitPriceInstruction": return ( - COMPUTE_BUDGET_PROGRAM_ID, - COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE, + _COMPUTE_BUDGET_PROGRAM_ID, + _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE, ) if name == "TokenProgramInitializeAccountInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT) if name == "TokenProgramInitializeMultisigInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG) if name == "TokenProgramTransferInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_TRANSFER) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_TRANSFER) if name == "TokenProgramApproveInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_APPROVE) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_APPROVE) if name == "TokenProgramRevokeInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_REVOKE) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_REVOKE) if name == "TokenProgramSetAuthorityInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_SET_AUTHORITY) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_SET_AUTHORITY) if name == "TokenProgramMintToInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_MINT_TO) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_MINT_TO) if name == "TokenProgramBurnInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_BURN) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_BURN) if name == "TokenProgramCloseAccountInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT) if name == "TokenProgramFreezeAccountInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT) if name == "TokenProgramThawAccountInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT) if name == "TokenProgramTransferCheckedInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED) if name == "TokenProgramApproveCheckedInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED) if name == "TokenProgramMinttoCheckedInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED) if name == "TokenProgramBurnCheckedInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_BURN_CHECKED) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_BURN_CHECKED) if name == "TokenProgramInitializeAccount2Instruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2) if name == "TokenProgramSyncNativeInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_SYNC_NATIVE) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_SYNC_NATIVE) if name == "TokenProgramInitializeAccount3Instruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3) if name == "TokenProgramInitializeImmutableOwnerInstruction": - return (TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER) + return (_TOKEN_PROGRAM_ID, _TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER) if name == "Token2022ProgramInitializeAccountInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT) + return ( + _TOKEN_2022_PROGRAM_ID, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT, + ) if name == "Token2022ProgramInitializeMultisigInstruction": return ( - TOKEN_2022_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG, + _TOKEN_2022_PROGRAM_ID, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG, ) if name == "Token2022ProgramTransferInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_TRANSFER) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_TRANSFER) if name == "Token2022ProgramApproveInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_APPROVE) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_APPROVE) if name == "Token2022ProgramRevokeInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_REVOKE) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_REVOKE) if name == "Token2022ProgramSetAuthorityInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY) if name == "Token2022ProgramMinttoInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_MINT_TO) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_MINT_TO) if name == "Token2022ProgramBurnInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_BURN) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_BURN) if name == "Token2022ProgramCloseAccountInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT) if name == "Token2022ProgramFreezeAccountInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT) if name == "Token2022ProgramThawAccountInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT) if name == "Token2022ProgramTransferCheckedInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED) if name == "Token2022ProgramApproveCheckedInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED) if name == "Token2022ProgramMinttoCheckedInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED) if name == "Token2022ProgramBurnCheckedInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED) if name == "Token2022ProgramInitializeAccount2Instruction": return ( - TOKEN_2022_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2, + _TOKEN_2022_PROGRAM_ID, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2, ) if name == "Token2022ProgramSyncNativeInstruction": - return (TOKEN_2022_PROGRAM_ID, TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE) + return (_TOKEN_2022_PROGRAM_ID, _TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE) if name == "Token2022ProgramInitializeAccount3Instruction": return ( - TOKEN_2022_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3, + _TOKEN_2022_PROGRAM_ID, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3, ) if name == "Token2022ProgramInitializeImmutableOwnerInstruction": return ( - TOKEN_2022_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER, + _TOKEN_2022_PROGRAM_ID, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER, ) if name == "AssociatedTokenAccountProgramCreateInstruction": return ( - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE, ) if name == "AssociatedTokenAccountProgramCreateIdempotentInstruction": return ( - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT, ) if name == "AssociatedTokenAccountProgramRecoverNestedInstruction": return ( - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED, ) if name == "MemoProgramMemoInstruction": - return (MEMO_PROGRAM_ID, MEMO_PROGRAM_ID_INS_MEMO) + return (_MEMO_PROGRAM_ID, _MEMO_PROGRAM_ID_INS_MEMO) if name == "MemoLegacyProgramMemoInstruction": - return (MEMO_LEGACY_PROGRAM_ID, MEMO_LEGACY_PROGRAM_ID_INS_MEMO) + return (_MEMO_LEGACY_PROGRAM_ID, _MEMO_LEGACY_PROGRAM_ID_INS_MEMO) raise AttributeError # Unknown instruction id = get_id(name) @@ -806,21 +821,21 @@ class MemoLegacyProgramMemoInstruction(Instruction): def get_instruction_id_length(program_id: str) -> int: - if program_id == SYSTEM_PROGRAM_ID: + if program_id == _SYSTEM_PROGRAM_ID: return 4 - if program_id == STAKE_PROGRAM_ID: + if program_id == _STAKE_PROGRAM_ID: return 4 - if program_id == COMPUTE_BUDGET_PROGRAM_ID: + if program_id == _COMPUTE_BUDGET_PROGRAM_ID: return 1 - if program_id == TOKEN_PROGRAM_ID: + if program_id == _TOKEN_PROGRAM_ID: return 1 - if program_id == TOKEN_2022_PROGRAM_ID: + if program_id == _TOKEN_2022_PROGRAM_ID: return 1 - if program_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID: + if program_id == _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID: return 1 - if program_id == MEMO_PROGRAM_ID: + if program_id == _MEMO_PROGRAM_ID: return 0 - if program_id == MEMO_LEGACY_PROGRAM_ID: + if program_id == _MEMO_LEGACY_PROGRAM_ID: return 0 return 0 @@ -852,13 +867,13 @@ def get_instruction( instruction_accounts: list[Account], instruction_data: InstructionData, ) -> Instruction: - if program_id == SYSTEM_PROGRAM_ID: - if instruction_id == SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT: + if program_id == _SYSTEM_PROGRAM_ID: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT, + _SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT, [ PropertyTemplate( "lamports", @@ -924,12 +939,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_ASSIGN: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_ASSIGN: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_ASSIGN, + _SYSTEM_PROGRAM_ID_INS_ASSIGN, [ PropertyTemplate( "owner", @@ -969,12 +984,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_TRANSFER: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_TRANSFER: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_TRANSFER, + _SYSTEM_PROGRAM_ID_INS_TRANSFER, [ PropertyTemplate( "lamports", @@ -1026,12 +1041,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED, + _SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED, [ PropertyTemplate( "base", @@ -1116,12 +1131,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT, + _SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT, [], [ AccountTemplate( @@ -1163,12 +1178,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT, + _SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT, [ PropertyTemplate( "lamports", @@ -1242,12 +1257,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT, + _SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT, [ PropertyTemplate( "nonce_authority", @@ -1297,12 +1312,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT, + _SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT, [ PropertyTemplate( "nonce_authority", @@ -1354,12 +1369,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_ALLOCATE: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_ALLOCATE: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_ALLOCATE, + _SYSTEM_PROGRAM_ID_INS_ALLOCATE, [ PropertyTemplate( "space", @@ -1399,12 +1414,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED, + _SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED, [ PropertyTemplate( "base", @@ -1470,12 +1485,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED, + _SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED, [ PropertyTemplate( "base", @@ -1534,12 +1549,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED, + _SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED, [ PropertyTemplate( "lamports", @@ -1610,12 +1625,12 @@ def get_instruction( False, None, ) - if instruction_id == SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT: + if instruction_id == _SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT, + _SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT, [], [ AccountTemplate( @@ -1654,13 +1669,13 @@ def get_instruction( False, False, ) - if program_id == STAKE_PROGRAM_ID: - if instruction_id == STAKE_PROGRAM_ID_INS_INITIALIZE: + if program_id == _STAKE_PROGRAM_ID: + if instruction_id == _STAKE_PROGRAM_ID_INS_INITIALIZE: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_INITIALIZE, + _STAKE_PROGRAM_ID_INS_INITIALIZE, [ PropertyTemplate( "staker", @@ -1761,12 +1776,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_AUTHORIZE: + if instruction_id == _STAKE_PROGRAM_ID_INS_AUTHORIZE: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_AUTHORIZE, + _STAKE_PROGRAM_ID_INS_AUTHORIZE, [ PropertyTemplate( "pubkey", @@ -1849,12 +1864,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_DELEGATE_STAKE: + if instruction_id == _STAKE_PROGRAM_ID_INS_DELEGATE_STAKE: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_DELEGATE_STAKE, + _STAKE_PROGRAM_ID_INS_DELEGATE_STAKE, [], [ AccountTemplate( @@ -1918,12 +1933,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_SPLIT: + if instruction_id == _STAKE_PROGRAM_ID_INS_SPLIT: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_SPLIT, + _STAKE_PROGRAM_ID_INS_SPLIT, [ PropertyTemplate( "lamports", @@ -1987,12 +2002,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_WITHDRAW: + if instruction_id == _STAKE_PROGRAM_ID_INS_WITHDRAW: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_WITHDRAW, + _STAKE_PROGRAM_ID_INS_WITHDRAW, [ PropertyTemplate( "lamports", @@ -2071,12 +2086,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_DEACTIVATE: + if instruction_id == _STAKE_PROGRAM_ID_INS_DEACTIVATE: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_DEACTIVATE, + _STAKE_PROGRAM_ID_INS_DEACTIVATE, [], [ AccountTemplate( @@ -2118,12 +2133,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_SET_LOCKUP: + if instruction_id == _STAKE_PROGRAM_ID_INS_SET_LOCKUP: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_SET_LOCKUP, + _STAKE_PROGRAM_ID_INS_SET_LOCKUP, [ PropertyTemplate( "unix_timestamp", @@ -2203,12 +2218,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_MERGE: + if instruction_id == _STAKE_PROGRAM_ID_INS_MERGE: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_MERGE, + _STAKE_PROGRAM_ID_INS_MERGE, [], [ AccountTemplate( @@ -2267,12 +2282,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED: + if instruction_id == _STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED, + _STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED, [ PropertyTemplate( "new_authorized_pubkey", @@ -2369,12 +2384,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED: + if instruction_id == _STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED, + _STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED, [], [ AccountTemplate( @@ -2428,12 +2443,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED: + if instruction_id == _STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED, + _STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED, [ PropertyTemplate( "stake_authorize", @@ -2514,12 +2529,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED: + if instruction_id == _STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED, + _STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED, [ PropertyTemplate( "stake_authorize", @@ -2614,12 +2629,12 @@ def get_instruction( False, None, ) - if instruction_id == STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED: + if instruction_id == _STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED, + _STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED, [ PropertyTemplate( "unix_timestamp", @@ -2711,13 +2726,13 @@ def get_instruction( False, False, ) - if program_id == COMPUTE_BUDGET_PROGRAM_ID: - if instruction_id == COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME: + if program_id == _COMPUTE_BUDGET_PROGRAM_ID: + if instruction_id == _COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME: return Instruction( instruction_data, program_id, instruction_accounts, - COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME, + _COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME, [ PropertyTemplate( "bytes", @@ -2744,12 +2759,12 @@ def get_instruction( False, None, ) - if instruction_id == COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT: + if instruction_id == _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT: return Instruction( instruction_data, program_id, instruction_accounts, - COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT, + _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT, [ PropertyTemplate( "units", @@ -2776,12 +2791,12 @@ def get_instruction( False, None, ) - if instruction_id == COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE: + if instruction_id == _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE: return Instruction( instruction_data, program_id, instruction_accounts, - COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE, + _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE, [ PropertyTemplate( "lamports", @@ -2822,13 +2837,13 @@ def get_instruction( False, False, ) - if program_id == TOKEN_PROGRAM_ID: - if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT: + if program_id == _TOKEN_PROGRAM_ID: + if instruction_id == _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT, + _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT, [], [ AccountTemplate( @@ -2882,12 +2897,12 @@ def get_instruction( False, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG: + if instruction_id == _TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG, + _TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG, [ PropertyTemplate( "number_of_signers", @@ -2937,12 +2952,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_TRANSFER: + if instruction_id == _TOKEN_PROGRAM_ID_INS_TRANSFER: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_TRANSFER, + _TOKEN_PROGRAM_ID_INS_TRANSFER, [ PropertyTemplate( "amount", @@ -3006,12 +3021,12 @@ def get_instruction( True, "Warning: Instruction is deprecated. Token decimals unknown.", ) - if instruction_id == TOKEN_PROGRAM_ID_INS_APPROVE: + if instruction_id == _TOKEN_PROGRAM_ID_INS_APPROVE: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_APPROVE, + _TOKEN_PROGRAM_ID_INS_APPROVE, [ PropertyTemplate( "amount", @@ -3068,12 +3083,12 @@ def get_instruction( True, "Warning: Instruction is deprecated. Token decimals unknown.", ) - if instruction_id == TOKEN_PROGRAM_ID_INS_REVOKE: + if instruction_id == _TOKEN_PROGRAM_ID_INS_REVOKE: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_REVOKE, + _TOKEN_PROGRAM_ID_INS_REVOKE, [], [ AccountTemplate( @@ -3110,12 +3125,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_SET_AUTHORITY: + if instruction_id == _TOKEN_PROGRAM_ID_INS_SET_AUTHORITY: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_SET_AUTHORITY, + _TOKEN_PROGRAM_ID_INS_SET_AUTHORITY, [ PropertyTemplate( "authority_type", @@ -3181,12 +3196,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_MINT_TO: + if instruction_id == _TOKEN_PROGRAM_ID_INS_MINT_TO: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_MINT_TO, + _TOKEN_PROGRAM_ID_INS_MINT_TO, [ PropertyTemplate( "amount", @@ -3243,12 +3258,12 @@ def get_instruction( True, "Warning: Instruction is deprecated. Token decimals unknown.", ) - if instruction_id == TOKEN_PROGRAM_ID_INS_BURN: + if instruction_id == _TOKEN_PROGRAM_ID_INS_BURN: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_BURN, + _TOKEN_PROGRAM_ID_INS_BURN, [ PropertyTemplate( "amount", @@ -3305,12 +3320,12 @@ def get_instruction( True, "Warning: Instruction is deprecated. Token decimals unknown.", ) - if instruction_id == TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT: + if instruction_id == _TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT, + _TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT, [], [ AccountTemplate( @@ -3359,12 +3374,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT: + if instruction_id == _TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT, + _TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT, [], [ AccountTemplate( @@ -3406,12 +3421,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT: + if instruction_id == _TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT, + _TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT, [], [ AccountTemplate( @@ -3453,12 +3468,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED: + if instruction_id == _TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED, + _TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED, [ PropertyTemplate( "amount", @@ -3541,12 +3556,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED: + if instruction_id == _TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED, + _TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED, [ PropertyTemplate( "amount", @@ -3629,12 +3644,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED: + if instruction_id == _TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED, + _TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED, [ PropertyTemplate( "amount", @@ -3705,12 +3720,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_BURN_CHECKED: + if instruction_id == _TOKEN_PROGRAM_ID_INS_BURN_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_BURN_CHECKED, + _TOKEN_PROGRAM_ID_INS_BURN_CHECKED, [ PropertyTemplate( "amount", @@ -3781,12 +3796,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2: + if instruction_id == _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2, + _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2, [ PropertyTemplate( "owner", @@ -3843,12 +3858,12 @@ def get_instruction( False, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_SYNC_NATIVE: + if instruction_id == _TOKEN_PROGRAM_ID_INS_SYNC_NATIVE: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_SYNC_NATIVE, + _TOKEN_PROGRAM_ID_INS_SYNC_NATIVE, [], [ AccountTemplate( @@ -3873,12 +3888,12 @@ def get_instruction( False, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3: + if instruction_id == _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3, + _TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3, [ PropertyTemplate( "owner", @@ -3930,12 +3945,12 @@ def get_instruction( False, None, ) - if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER: + if instruction_id == _TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER, + _TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER, [], [ AccountTemplate( @@ -3974,13 +3989,13 @@ def get_instruction( False, False, ) - if program_id == TOKEN_2022_PROGRAM_ID: - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT: + if program_id == _TOKEN_2022_PROGRAM_ID: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT, [], [ AccountTemplate( @@ -4034,12 +4049,12 @@ def get_instruction( False, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG, [ PropertyTemplate( "number_of_signers", @@ -4089,12 +4104,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_TRANSFER: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_TRANSFER: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_TRANSFER, + _TOKEN_2022_PROGRAM_ID_INS_TRANSFER, [ PropertyTemplate( "amount", @@ -4158,12 +4173,12 @@ def get_instruction( True, "Warning: Instruction is deprecated. Token decimals unknown.", ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_APPROVE: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_APPROVE: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_APPROVE, + _TOKEN_2022_PROGRAM_ID_INS_APPROVE, [ PropertyTemplate( "amount", @@ -4220,12 +4235,12 @@ def get_instruction( True, "Warning: Instruction is deprecated. Token decimals unknown.", ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_REVOKE: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_REVOKE: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_REVOKE, + _TOKEN_2022_PROGRAM_ID_INS_REVOKE, [], [ AccountTemplate( @@ -4262,12 +4277,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY, + _TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY, [ PropertyTemplate( "authority_type", @@ -4333,12 +4348,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_MINT_TO: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_MINT_TO: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_MINT_TO, + _TOKEN_2022_PROGRAM_ID_INS_MINT_TO, [ PropertyTemplate( "amount", @@ -4395,12 +4410,12 @@ def get_instruction( True, "Warning: Instruction is deprecated. Token decimals unknown.", ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_BURN: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_BURN: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_BURN, + _TOKEN_2022_PROGRAM_ID_INS_BURN, [ PropertyTemplate( "amount", @@ -4457,12 +4472,12 @@ def get_instruction( True, "Warning: Instruction is deprecated. Token decimals unknown.", ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT, + _TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT, [], [ AccountTemplate( @@ -4511,12 +4526,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT, + _TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT, [], [ AccountTemplate( @@ -4558,12 +4573,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT, + _TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT, [], [ AccountTemplate( @@ -4605,12 +4620,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED, + _TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED, [ PropertyTemplate( "amount", @@ -4693,12 +4708,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED, + _TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED, [ PropertyTemplate( "amount", @@ -4781,12 +4796,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED, + _TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED, [ PropertyTemplate( "amount", @@ -4857,12 +4872,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED, + _TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED, [ PropertyTemplate( "amount", @@ -4933,12 +4948,12 @@ def get_instruction( True, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2, [ PropertyTemplate( "owner", @@ -4995,12 +5010,12 @@ def get_instruction( False, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE, + _TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE, [], [ AccountTemplate( @@ -5025,12 +5040,12 @@ def get_instruction( False, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3, [ PropertyTemplate( "owner", @@ -5082,12 +5097,12 @@ def get_instruction( False, None, ) - if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER: + if instruction_id == _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER: return Instruction( instruction_data, program_id, instruction_accounts, - TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER, + _TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER, [], [ AccountTemplate( @@ -5126,13 +5141,13 @@ def get_instruction( False, False, ) - if program_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID: - if instruction_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE: + if program_id == _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID: + if instruction_id == _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE: return Instruction( instruction_data, program_id, instruction_accounts, - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE, [], [ AccountTemplate( @@ -5208,12 +5223,12 @@ def get_instruction( False, None, ) - if instruction_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT: + if instruction_id == _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT: return Instruction( instruction_data, program_id, instruction_accounts, - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT, [], [ AccountTemplate( @@ -5284,12 +5299,12 @@ def get_instruction( False, None, ) - if instruction_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED: + if instruction_id == _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED: return Instruction( instruction_data, program_id, instruction_accounts, - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED, + _ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED, [], [ AccountTemplate( @@ -5372,13 +5387,13 @@ def get_instruction( False, False, ) - if program_id == MEMO_PROGRAM_ID: - if instruction_id == MEMO_PROGRAM_ID_INS_MEMO: + if program_id == _MEMO_PROGRAM_ID: + if instruction_id == _MEMO_PROGRAM_ID_INS_MEMO: return Instruction( instruction_data, program_id, instruction_accounts, - MEMO_PROGRAM_ID_INS_MEMO, + _MEMO_PROGRAM_ID_INS_MEMO, [ PropertyTemplate( "memo", @@ -5432,13 +5447,13 @@ def get_instruction( False, False, ) - if program_id == MEMO_LEGACY_PROGRAM_ID: - if instruction_id == MEMO_LEGACY_PROGRAM_ID_INS_MEMO: + if program_id == _MEMO_LEGACY_PROGRAM_ID: + if instruction_id == _MEMO_LEGACY_PROGRAM_ID_INS_MEMO: return Instruction( instruction_data, program_id, instruction_accounts, - MEMO_LEGACY_PROGRAM_ID_INS_MEMO, + _MEMO_LEGACY_PROGRAM_ID_INS_MEMO, [ PropertyTemplate( "memo", diff --git a/core/src/apps/solana/transaction/instructions.py.mako b/core/src/apps/solana/transaction/instructions.py.mako index 1ad43af71b..4560277a50 100644 --- a/core/src/apps/solana/transaction/instructions.py.mako +++ b/core/src/apps/solana/transaction/instructions.py.mako @@ -1,6 +1,6 @@ # generated from instructions.py.mako # do not edit manually! -<%def name="getProgramId(program)">${"_".join(program["name"].upper().split(" ") + ["ID"])}</%def>\ +<%def name="getProgramId(program)">${"_" + "_".join(program["name"].upper().split(" ") + ["ID"])}</%def>\ <%def name="getInstructionIdText(program, instruction)">${"_".join([getProgramId(program)] + ["INS"] + instruction["name"].upper().split(" "))}</%def>\ <%def name="getClassName(program, instruction)">${program["name"].replace(" ", "")}${instruction["name"].replace(" ", "")}Instruction</%def>\ <%def name="getReferenceName(reference)">${"_".join(reference["name"].lower().split(" "))}</%def>\ @@ -27,6 +27,7 @@ str\ int\ % endif </%def>\ +from micropython import const from typing import TYPE_CHECKING from trezor.wire import DataError @@ -61,10 +62,18 @@ ${getProgramId(program)} = "${program["id"]}" % for program in programs["programs"]: % for instruction in program["instructions"]: + % if isinstance(instruction["id"], int): +${getInstructionIdText(program, instruction)} = const(${instruction["id"]}) + % else: ${getInstructionIdText(program, instruction)} = ${instruction["id"]} + % endif % endfor % endfor +COMPUTE_BUDGET_PROGRAM_ID = _COMPUTE_BUDGET_PROGRAM_ID +COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT = _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT +COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE = _COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE + def __getattr__(name: str) -> Type[Instruction]: def get_id(name: str) -> tuple[str, InstructionId]: %for program in programs["programs"]: diff --git a/core/tests/test_apps.solana.predefined_transaction.py b/core/tests/test_apps.solana.predefined_transaction.py index 307bf0abc4..9bf3fdfda6 100644 --- a/core/tests/test_apps.solana.predefined_transaction.py +++ b/core/tests/test_apps.solana.predefined_transaction.py @@ -4,17 +4,15 @@ from apps.solana.predefined_transaction import is_predefined_token_transfer from apps.solana.transaction.instruction import Instruction -from apps.solana.transaction.instructions import ( - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, - ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE, - SYSTEM_PROGRAM_ID, - SYSTEM_PROGRAM_ID_INS_TRANSFER, - TOKEN_2022_PROGRAM_ID, - TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED, - TOKEN_PROGRAM_ID, - TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED, -) +ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" +ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE = None +SYSTEM_PROGRAM_ID = "11111111111111111111111111111111" +SYSTEM_PROGRAM_ID_INS_TRANSFER = 2 +TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" +TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED = 12 +TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" +TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED = 12 def create_mock_instruction( program_id: str, instruction_id: int, parsed_data: dict[str, Any] From aedef2d69de31aaa7bf4af8043b669ee0b481f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 23 Jul 2024 14:43:51 +0200 Subject: [PATCH 498/626] refactor(core/tests): create template for solana [no changelog] --- ...test_apps.solana.predefined_transaction.py | 88 +++++++- ...apps.solana.predefined_transaction.py.mako | 210 ++++++++++++++++++ tools/build_solana_templates.py | 1 + 3 files changed, 293 insertions(+), 6 deletions(-) create mode 100644 core/tests/test_apps.solana.predefined_transaction.py.mako diff --git a/core/tests/test_apps.solana.predefined_transaction.py b/core/tests/test_apps.solana.predefined_transaction.py index 9bf3fdfda6..99b342f310 100644 --- a/core/tests/test_apps.solana.predefined_transaction.py +++ b/core/tests/test_apps.solana.predefined_transaction.py @@ -1,18 +1,94 @@ -from common import * # isort:skip +# generated from test_apps.solana.predefined_transaction.py.mako +# do not edit manually! +from common import Any, unittest, utils # isort:skip from trezor.crypto import base58 from apps.solana.predefined_transaction import is_predefined_token_transfer from apps.solana.transaction.instruction import Instruction -ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" -ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE = None SYSTEM_PROGRAM_ID = "11111111111111111111111111111111" -SYSTEM_PROGRAM_ID_INS_TRANSFER = 2 -TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" -TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED = 12 +STAKE_PROGRAM_ID = "Stake11111111111111111111111111111111111111" +COMPUTE_BUDGET_PROGRAM_ID = "ComputeBudget111111111111111111111111111111" TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" +TOKEN_2022_PROGRAM_ID = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" +ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" +MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr" +MEMO_LEGACY_PROGRAM_ID = "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo" + +SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT = 0 +SYSTEM_PROGRAM_ID_INS_ASSIGN = 1 +SYSTEM_PROGRAM_ID_INS_TRANSFER = 2 +SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED = 3 +SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT = 4 +SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT = 5 +SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT = 6 +SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT = 7 +SYSTEM_PROGRAM_ID_INS_ALLOCATE = 8 +SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED = 9 +SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED = 10 +SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED = 11 +SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT = 12 +STAKE_PROGRAM_ID_INS_INITIALIZE = 0 +STAKE_PROGRAM_ID_INS_AUTHORIZE = 1 +STAKE_PROGRAM_ID_INS_DELEGATE_STAKE = 2 +STAKE_PROGRAM_ID_INS_SPLIT = 3 +STAKE_PROGRAM_ID_INS_WITHDRAW = 4 +STAKE_PROGRAM_ID_INS_DEACTIVATE = 5 +STAKE_PROGRAM_ID_INS_SET_LOCKUP = 6 +STAKE_PROGRAM_ID_INS_MERGE = 7 +STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED = 8 +STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED = 9 +STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED = 10 +STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED = 11 +STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED = 12 +COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME = 1 +COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT = 2 +COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_PRICE = 3 +TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT = 1 +TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG = 2 +TOKEN_PROGRAM_ID_INS_TRANSFER = 3 +TOKEN_PROGRAM_ID_INS_APPROVE = 4 +TOKEN_PROGRAM_ID_INS_REVOKE = 5 +TOKEN_PROGRAM_ID_INS_SET_AUTHORITY = 6 +TOKEN_PROGRAM_ID_INS_MINT_TO = 7 +TOKEN_PROGRAM_ID_INS_BURN = 8 +TOKEN_PROGRAM_ID_INS_CLOSE_ACCOUNT = 9 +TOKEN_PROGRAM_ID_INS_FREEZE_ACCOUNT = 10 +TOKEN_PROGRAM_ID_INS_THAW_ACCOUNT = 11 TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED = 12 +TOKEN_PROGRAM_ID_INS_APPROVE_CHECKED = 13 +TOKEN_PROGRAM_ID_INS_MINT_TO_CHECKED = 14 +TOKEN_PROGRAM_ID_INS_BURN_CHECKED = 15 +TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2 = 16 +TOKEN_PROGRAM_ID_INS_SYNC_NATIVE = 17 +TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3 = 18 +TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER = 22 +TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT = 1 +TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG = 2 +TOKEN_2022_PROGRAM_ID_INS_TRANSFER = 3 +TOKEN_2022_PROGRAM_ID_INS_APPROVE = 4 +TOKEN_2022_PROGRAM_ID_INS_REVOKE = 5 +TOKEN_2022_PROGRAM_ID_INS_SET_AUTHORITY = 6 +TOKEN_2022_PROGRAM_ID_INS_MINT_TO = 7 +TOKEN_2022_PROGRAM_ID_INS_BURN = 8 +TOKEN_2022_PROGRAM_ID_INS_CLOSE_ACCOUNT = 9 +TOKEN_2022_PROGRAM_ID_INS_FREEZE_ACCOUNT = 10 +TOKEN_2022_PROGRAM_ID_INS_THAW_ACCOUNT = 11 +TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED = 12 +TOKEN_2022_PROGRAM_ID_INS_APPROVE_CHECKED = 13 +TOKEN_2022_PROGRAM_ID_INS_MINT_TO_CHECKED = 14 +TOKEN_2022_PROGRAM_ID_INS_BURN_CHECKED = 15 +TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_2 = 16 +TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE = 17 +TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3 = 18 +TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER = 22 +ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE = None +ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT = 1 +ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED = 2 +MEMO_PROGRAM_ID_INS_MEMO = None +MEMO_LEGACY_PROGRAM_ID_INS_MEMO = None + def create_mock_instruction( program_id: str, instruction_id: int, parsed_data: dict[str, Any] diff --git a/core/tests/test_apps.solana.predefined_transaction.py.mako b/core/tests/test_apps.solana.predefined_transaction.py.mako new file mode 100644 index 0000000000..6eb95c6e2e --- /dev/null +++ b/core/tests/test_apps.solana.predefined_transaction.py.mako @@ -0,0 +1,210 @@ +# generated from test_apps.solana.predefined_transaction.py.mako +# do not edit manually! +<%def name="getProgramId(program)">${"_".join(program["name"].upper().split(" ") + ["ID"])}</%def>\ +<%def name="getInstructionIdText(program, instruction)">${"_".join([getProgramId(program)] + ["INS"] + instruction["name"].upper().split(" "))}</%def>\ +from common import Any, unittest, utils # isort:skip + +from trezor.crypto import base58 + +from apps.solana.predefined_transaction import is_predefined_token_transfer +from apps.solana.transaction.instruction import Instruction + +% for program in programs["programs"]: +${getProgramId(program)} = "${program["id"]}" +% endfor + +% for program in programs["programs"]: + % for instruction in program["instructions"]: +${getInstructionIdText(program, instruction)} = ${instruction["id"]} + % endfor +% endfor + +def create_mock_instruction( + program_id: str, instruction_id: int, parsed_data: dict[str, Any] +): + instruction = Instruction( + instruction_data=b"", + program_id=program_id, + accounts=[], + instruction_id=instruction_id, + property_templates=[], + accounts_template=[], + ui_properties=[], + ui_name="", + is_program_supported=True, + is_instruction_supported=True, + is_ui_hidden=False, + supports_multisig=False, + is_deprecated_warning=None, + ) + + instruction.parsed_data = parsed_data + return instruction + + +def create_transfer_token_instruction( + program_id=TOKEN_PROGRAM_ID, + instruction_id=TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED, + token_mint="GHArwcWCuk9WkUG4XKUbt935rKfmBmywbEWyFxdH3mou", + destination_account="92YgwqTtTWB7qY92JT6mbL2WCmhAs7LPZL4jLcizNfwx", + owner="14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS", +): + return create_mock_instruction( + program_id, + instruction_id, + { + "token_mint": (base58.decode(token_mint),), + "destination_account": (base58.decode(destination_account),), + "owner": (base58.decode(owner),), + }, + ) + + +def create_create_token_account_instruction( + token_mint="GHArwcWCuk9WkUG4XKUbt935rKfmBmywbEWyFxdH3mou", + associated_token_account="92YgwqTtTWB7qY92JT6mbL2WCmhAs7LPZL4jLcizNfwx", + spl_token=TOKEN_PROGRAM_ID, +): + return create_mock_instruction( + ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID, + ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE, + { + "token_mint": (base58.decode(token_mint),), + "associated_token_account": (base58.decode(associated_token_account),), + "spl_token": (base58.decode(spl_token),), + }, + ) + + +@unittest.skipUnless(not utils.BITCOIN_ONLY, "altcoin") +class TestSolanaPredefinedTransactions(unittest.TestCase): + def test_is_predefined_token_transfer(self): + # note: if there are multiple transfer instructions they are the same + # in the tests because that's the info the test cares about. In reality + # the instructions can differ in the destination account and amount. + valid_test_cases = [ + [create_transfer_token_instruction()], + [create_transfer_token_instruction(), create_transfer_token_instruction()], + [ + create_create_token_account_instruction(), + create_transfer_token_instruction(), + ], + [ + create_create_token_account_instruction(), + create_transfer_token_instruction(), + create_transfer_token_instruction(), + ], + [ + create_create_token_account_instruction( + spl_token=TOKEN_2022_PROGRAM_ID + ), + create_transfer_token_instruction( + program_id=TOKEN_2022_PROGRAM_ID, + instruction_id=TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED, + ), + create_transfer_token_instruction( + program_id=TOKEN_2022_PROGRAM_ID, + instruction_id=TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED, + ), + ], + ] + + invalid_test_cases = [ + # only create account + [ + create_create_token_account_instruction(), + ], + # there are other instructions + [ + create_transfer_token_instruction(), + create_mock_instruction( + SYSTEM_PROGRAM_ID, SYSTEM_PROGRAM_ID_INS_TRANSFER, {} + ), + ], + # multiple create account instructions + [ + create_create_token_account_instruction(), + create_create_token_account_instruction(), + create_transfer_token_instruction(), + ], + # transfer instructions program_id mismatch + [ + create_transfer_token_instruction( + program_id=TOKEN_PROGRAM_ID, + instruction_id=TOKEN_PROGRAM_ID_INS_TRANSFER_CHECKED, + ), + create_transfer_token_instruction( + program_id=TOKEN_2022_PROGRAM_ID, + instruction_id=TOKEN_2022_PROGRAM_ID_INS_TRANSFER_CHECKED, + ), + ], + # transfer instructions token_mint mismatch + [ + create_transfer_token_instruction( + token_mint="GHArwcWCuk9WkUG4XKUbt935rKfmBmywbEWyFxdH3mou" + ), + create_transfer_token_instruction( + token_mint="GZDphoFQJ9m7uRU7TdS8cVDGFvsiQbcaY3n5mdoQHmDj" + ), + ], + # transfer instructions destination mismatch + [ + create_transfer_token_instruction( + destination_account="92YgwqTtTWB7qY92JT6mbL2WCmhAs7LPZL4jLcizNfwx" + ), + create_transfer_token_instruction( + destination_account="74pZnim7gywyschy4MGkW6eZURv1DBXqwHTCqLRk63wz" + ), + ], + # transfer instructions owner mismatch + [ + create_transfer_token_instruction( + owner="14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS" + ), + create_transfer_token_instruction( + owner="BVRFH6vt5bNXub6WnnFRgaHFTcbkjBrf7x1troU1izGg" + ), + ], + # token program mismatch + [ + create_create_token_account_instruction( + spl_token=TOKEN_2022_PROGRAM_ID + ), + create_transfer_token_instruction( + program_id=TOKEN_PROGRAM_ID, + ), + ], + # create account token_mint mismatch + [ + create_create_token_account_instruction( + token_mint="GZDphoFQJ9m7uRU7TdS8cVDGFvsiQbcaY3n5mdoQHmDj" + ), + create_transfer_token_instruction( + token_mint="GHArwcWCuk9WkUG4XKUbt935rKfmBmywbEWyFxdH3mou", + ), + ], + # create account associated_token_account mismatch + [ + create_create_token_account_instruction( + associated_token_account="74pZnim7gywyschy4MGkW6eZURv1DBXqwHTCqLRk63wz" + ), + create_transfer_token_instruction( + destination_account="92YgwqTtTWB7qY92JT6mbL2WCmhAs7LPZL4jLcizNfwx", + ), + ], + # create account is not first + [ + create_transfer_token_instruction(), + create_create_token_account_instruction(), + ], + ] + + for instructions in valid_test_cases: + self.assertTrue(is_predefined_token_transfer(instructions)) + + for instructions in invalid_test_cases: + self.assertFalse(is_predefined_token_transfer(instructions)) + + +if __name__ == "__main__": + unittest.main() diff --git a/tools/build_solana_templates.py b/tools/build_solana_templates.py index 12b734810e..c8f27b12da 100755 --- a/tools/build_solana_templates.py +++ b/tools/build_solana_templates.py @@ -15,6 +15,7 @@ TEMPLATES = ( ROOT / "core" / "src" / "apps" / "solana" / "transaction" / "instructions.py.mako", ROOT / "tests" / "device_tests" / "solana" / "construct" / "instructions.py.mako", + ROOT / "core" / "tests" / "test_apps.solana.predefined_transaction.py.mako", ) PROGRAMS_JSON = ROOT / "common" / "defs" / "solana" / "programs.json" From 415d62bc662447e3c68f3ea9d2d2bb0d6b907a35 Mon Sep 17 00:00:00 2001 From: vdovhanych <dovhanych@me.com> Date: Mon, 29 Jul 2024 12:02:07 +0200 Subject: [PATCH 499/626] ci: add arm emulator build in github actions --- .github/workflows/core.yml | 42 +++++++++++++++++++++++++++++++++++- .github/workflows/legacy.yml | 36 ++++++++++++++++++++++++++++--- 2 files changed, 74 insertions(+), 4 deletions(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index a80ce85c96..184d289450 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -126,6 +126,44 @@ jobs: core/build/bootloader_emu/bootloader.elf retention-days: 7 + core_emu_arm: + if: github.event_name == 'schedule' + name: Build emu arm + runs-on: ubuntu-latest-arm64 + needs: param + strategy: + fail-fast: false + matrix: + model: [T2T1, T2B1, T3T1] + coins: [universal] + type: [debuglink] + asan: [noasan] + exclude: + - type: normal + asan: asan + env: + TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model }} + BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} + PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }} + ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} + LSAN_OPTIONS: "suppressions=../../asan_suppressions.txt" + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: ./.github/actions/environment + - run: nix-shell --run "poetry run make -C core build_bootloader_emu" + if: matrix.coins == 'universal' + - run: nix-shell --run "poetry run make -C core build_unix_frozen" + - run: mv core/build/unix/trezor-emu-core core/build/unix/trezor-emu-arm-core-${{ matrix.model }}-${{ matrix.coins }} + - uses: actions/upload-artifact@v4 + with: + name: core-emu-arm-${{ matrix.model }}-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }} + path: | + core/build/unix/trezor-emu-* + core/build/bootloader_emu/bootloader.elf + retention-days: 2 + core_unit_python_test: name: Python unit tests runs-on: ubuntu-latest @@ -708,7 +746,9 @@ jobs: name: Upload emulator binaries if: github.event_name == 'schedule' runs-on: ubuntu-latest - needs: core_emu + needs: + - core_emu + - core_emu_arm steps: - uses: actions/download-artifact@v4 with: diff --git a/.github/workflows/legacy.yml b/.github/workflows/legacy.yml index 7793076632..a9a51efd1d 100644 --- a/.github/workflows/legacy.yml +++ b/.github/workflows/legacy.yml @@ -74,6 +74,34 @@ jobs: legacy/firmware/trezor-emu-legacy* retention-days: 7 + legacy_emu_arm: + if: github.event_name == 'schedule' + name: Emulator arm + runs-on: ubuntu-latest-arm64 + strategy: + matrix: + coins: [universal] + type: [debuglink] + asan: ${{ fromJSON(github.event_name == 'schedule' && '["noasan", "asan"]' || '["noasan"]') }} + env: + EMULATOR: 1 + BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} + DEBUG_LINK: ${{ matrix.type == 'debuglink' && '1' || '0' }} + ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: ./.github/actions/environment + - run: nix-shell --run "poetry run legacy/script/cibuild" + - run: mv legacy/firmware/trezor.elf legacy/firmware/trezor-emu-arm-legacy-T1B1-${{ matrix.coins }} + - uses: actions/upload-artifact@v4 + with: + name: legacy-emu-arm-${{ matrix.coins }}-${{ matrix.type }}-${{ matrix.asan }} + path: | + legacy/firmware/trezor-emu-arm-legacy* + retention-days: 7 + legacy_device_test: name: Device test runs-on: ubuntu-latest @@ -202,11 +230,13 @@ jobs: # TODO: always run if comment already exists if: ${{ steps.check-fixtures-changed.outputs.FIXTURES_CHANGED == '1' }} - core_upload_emu: + legacy_upload_emu: name: Upload emulator binaries if: github.event_name == 'schedule' runs-on: ubuntu-latest - needs: legacy_emu + needs: + - legacy_emu + - legacy_emu_arm steps: - uses: actions/download-artifact@v4 with: @@ -220,5 +250,5 @@ jobs: continue-on-error: true - run: | mkdir emulators - cp trezor-emu-legacy* emulators + cp trezor-emu-* emulators aws s3 sync --no-progress emulators s3://data.trezor.io/dev/firmware/emu-nightly From bb92a6b56af5093cbcb7439715bd99b43238622c Mon Sep 17 00:00:00 2001 From: vdovhanych <dovhanych@me.com> Date: Tue, 30 Jul 2024 16:48:58 +0200 Subject: [PATCH 500/626] chore: fix hardcoded x86 build --- core/SConscript.bootloader_emu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index fb254c8765..a9083f8c6a 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -256,7 +256,7 @@ cmake_gen = env.Command( # Rust library # -RUST_TARGET = 'x86_64-unknown-linux-gnu' +RUST_TARGET = os.popen("rustc -vV | sed -n 's/host: //p'").read().strip() RUST_LIB = 'trezor_lib' if ARGUMENTS.get('TREZOR_EMULATOR_DEBUGGABLE', '0') == '1': From 171961829ad1b32a7cbbd15e3c027cef7f8d2454 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 5 Aug 2024 16:52:20 +0200 Subject: [PATCH 501/626] fix(core): fix gfx_clear [no changelog] --- core/embed/lib/gfx_draw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/embed/lib/gfx_draw.c b/core/embed/lib/gfx_draw.c index 4cce909ec5..c8fc4da822 100644 --- a/core/embed/lib/gfx_draw.c +++ b/core/embed/lib/gfx_draw.c @@ -91,8 +91,8 @@ static inline gfx_clip_t gfx_clip(gfx_rect_t dst, const gfx_bitmap_t* bitmap) { void gfx_clear(void) { gfx_bitblt_t bb = { // Destination bitmap - .height = DISPLAY_RESX, - .width = DISPLAY_RESY, + .height = DISPLAY_RESY, + .width = DISPLAY_RESX, .dst_row = NULL, .dst_x = 0, .dst_y = 0, From c42c268e053f5a2c797e1afc10c348b0a8698a4b Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 5 Aug 2024 17:13:54 +0200 Subject: [PATCH 502/626] fix(core): fix dma2d includes and initialization with respect to new rendering [no changelog] --- core/SConscript.bootloader_emu | 1 - core/embed/boardloader/main.c | 12 ++++++++++++ core/embed/bootloader/main.c | 4 ++++ core/embed/firmware/main.c | 5 +++++ core/embed/trezorhal/dma2d_bitblt.h | 3 +++ core/embed/trezorhal/stm32f4/dma2d_bitblt.c | 2 ++ core/embed/trezorhal/unix/dma2d_bitblt.c | 2 ++ core/site_scons/models/D001/discovery.py | 7 +++++-- core/site_scons/models/D002/discovery2.py | 8 ++++---- core/site_scons/models/T2T1/trezor_t.py | 6 ++++-- core/site_scons/models/T3T1/trezor_t3t1_revE.py | 6 ++++-- core/site_scons/models/T3T1/trezor_t3t1_v4.py | 6 ++++-- 12 files changed, 49 insertions(+), 13 deletions(-) diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index a9083f8c6a..a71a7aade7 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -158,7 +158,6 @@ SOURCE_TREZORHAL = [ if NEW_RENDERING: SOURCE_TREZORHAL += [ 'embed/trezorhal/unix/display_driver.c', - 'embed/trezorhal/unix/dma2d_bitblt.c', 'embed/trezorhal/xdisplay_legacy.c', ] else: diff --git a/core/embed/boardloader/main.c b/core/embed/boardloader/main.c index 4f7fa1c50c..6f5d3eee3a 100644 --- a/core/embed/boardloader/main.c +++ b/core/embed/boardloader/main.c @@ -44,6 +44,14 @@ #include "hash_processor.h" #endif +#ifdef USE_DMA2D +#ifdef NEW_RENDERING +#include "dma2d_bitblt.h" +#else +#include "dma2d.h" +#endif +#endif + #include "lowlevel.h" #include "model.h" #include "version.h" @@ -281,6 +289,10 @@ int main(void) { hash_processor_init(); #endif +#ifdef USE_DMA2D + dma2d_init(); +#endif + display_init(); display_clear(); display_refresh(); diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index cec5b58b7f..fbba58170e 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -35,8 +35,12 @@ #include "secret.h" #ifdef USE_DMA2D +#ifdef NEW_RENDERING +#include "dma2d_bitblt.h" +#else #include "dma2d.h" #endif +#endif #ifdef USE_I2C #include "i2c.h" #endif diff --git a/core/embed/firmware/main.c b/core/embed/firmware/main.c index 4785fce6dd..fc59514d3c 100644 --- a/core/embed/firmware/main.c +++ b/core/embed/firmware/main.c @@ -60,8 +60,13 @@ #include "consumption_mask.h" #endif #ifdef USE_DMA2D +#ifdef NEW_RENDERING +#include "dma2d_bitblt.h" +#else #include "dma2d.h" #endif +#endif + #ifdef USE_BUTTON #include "button.h" #endif diff --git a/core/embed/trezorhal/dma2d_bitblt.h b/core/embed/trezorhal/dma2d_bitblt.h index 0f3aa26bb1..86c0731167 100644 --- a/core/embed/trezorhal/dma2d_bitblt.h +++ b/core/embed/trezorhal/dma2d_bitblt.h @@ -22,6 +22,9 @@ #include "gfx_bitblt.h" +// Initializes DMA2D peripheral +void dma2d_init(void); + // Waits until any pending DMA2D operation is finished void dma2d_wait(void); diff --git a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c index 2ca307e088..87bc6452f6 100644 --- a/core/embed/trezorhal/stm32f4/dma2d_bitblt.c +++ b/core/embed/trezorhal/stm32f4/dma2d_bitblt.c @@ -40,6 +40,8 @@ static inline bool dma2d_accessible(const void* ptr) { #endif } +void dma2d_init(void) { __HAL_RCC_DMA2D_CLK_ENABLE(); } + void dma2d_wait(void) { while (HAL_DMA2D_PollForTransfer(&dma2d_handle, 10) != HAL_OK) ; diff --git a/core/embed/trezorhal/unix/dma2d_bitblt.c b/core/embed/trezorhal/unix/dma2d_bitblt.c index c2fe9c71a7..f92fae98dc 100644 --- a/core/embed/trezorhal/unix/dma2d_bitblt.c +++ b/core/embed/trezorhal/unix/dma2d_bitblt.c @@ -19,4 +19,6 @@ #include "dma2d_bitblt.h" +void dma2d_init(void) {} + void dma2d_wait(void) {} diff --git a/core/site_scons/models/D001/discovery.py b/core/site_scons/models/D001/discovery.py index 327d6b9c58..b0533b5679 100644 --- a/core/site_scons/models/D001/discovery.py +++ b/core/site_scons/models/D001/discovery.py @@ -48,8 +48,11 @@ def configure( sources += [f"embed/trezorhal/stm32f4/displays/{display}"] sources += ["embed/trezorhal/stm32f4/displays/ili9341_spi.c"] - sources += ["embed/trezorhal/stm32f4/dma2d.c"] - sources += ["embed/trezorhal/stm32f4/dma2d_bitblt.c"] + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] + else: + sources += ["embed/trezorhal/stm32u5/dma2d.c"] + sources += [ "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c" ] diff --git a/core/site_scons/models/D002/discovery2.py b/core/site_scons/models/D002/discovery2.py index 6c73b7efbd..cba3537d1f 100644 --- a/core/site_scons/models/D002/discovery2.py +++ b/core/site_scons/models/D002/discovery2.py @@ -92,10 +92,10 @@ def configure( features_available.append("usb") defines += ["USE_DMA2D", "FRAMEBUFFER", "FRAMEBUFFER32BIT", "UI_COLOR_32BIT"] - sources += [ - "embed/trezorhal/stm32u5/dma2d.c", - "embed/trezorhal/stm32u5/dma2d_bitblt.c", - ] + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] + else: + sources += ["embed/trezorhal/stm32u5/dma2d.c"] features_available.append("dma2d") features_available.append("framebuffer") features_available.append("framebuffer32bit") diff --git a/core/site_scons/models/T2T1/trezor_t.py b/core/site_scons/models/T2T1/trezor_t.py index 11550162d7..237db9aa96 100644 --- a/core/site_scons/models/T2T1/trezor_t.py +++ b/core/site_scons/models/T2T1/trezor_t.py @@ -113,8 +113,10 @@ def configure( if "dma2d" in features_wanted: defines += ["USE_DMA2D"] - sources += ["embed/trezorhal/stm32f4/dma2d.c"] - sources += ["embed/trezorhal/stm32f4/dma2d_bitblt.c"] + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] + else: + sources += ["embed/trezorhal/stm32u5/dma2d.c"] sources += [ "vendor/micropython/lib/stm32lib/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c" ] diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index 644efac595..1c0ca02b55 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -114,8 +114,10 @@ def configure( if "dma2d" in features_wanted: defines += ["USE_DMA2D"] - sources += ["embed/trezorhal/stm32u5/dma2d.c"] - sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] + else: + sources += ["embed/trezorhal/stm32u5/dma2d.c"] features_available.append("dma2d") if "optiga" in features_wanted: diff --git a/core/site_scons/models/T3T1/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py index 6b32ca5e2d..ad6b3bfaac 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -115,8 +115,10 @@ def configure( if "dma2d" in features_wanted: defines += ["USE_DMA2D"] - sources += ["embed/trezorhal/stm32u5/dma2d.c"] - sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] + if "new_rendering" in features_wanted: + sources += ["embed/trezorhal/stm32u5/dma2d_bitblt.c"] + else: + sources += ["embed/trezorhal/stm32u5/dma2d.c"] features_available.append("dma2d") if "optiga" in features_wanted: From 4b68431f7cc04f5e0ae041e4bf2ddc82bba79cd3 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 2 Aug 2024 11:27:48 +0200 Subject: [PATCH 503/626] feat(core): tune consumption mask protection on T3B1 [no changelog] --- core/embed/trezorhal/stm32u5/consumption_mask.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/embed/trezorhal/stm32u5/consumption_mask.c b/core/embed/trezorhal/stm32u5/consumption_mask.c index 859b430e91..fcc51b3f32 100644 --- a/core/embed/trezorhal/stm32u5/consumption_mask.c +++ b/core/embed/trezorhal/stm32u5/consumption_mask.c @@ -20,8 +20,8 @@ #include STM32_HAL_H #include "rng.h" -#define SAMPLES 110 -#define TIMER_PERIOD 16640 // cca 10 KHz @ 160MHz +#define SAMPLES 119 +#define TIMER_PERIOD 16000 // cca 10 KHz @ 160MHz uint32_t pwm_data[SAMPLES] = {0}; From 88cdfb01f36f33f2c0046b9ffb465c392b86301c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C5=A0etina?= <57008159+Hannsek@users.noreply.github.com> Date: Mon, 19 Aug 2024 12:03:06 +0200 Subject: [PATCH 504/626] docs(common): Update README.md (#4111) --- common/defs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/defs/README.md b/common/defs/README.md index 6e30ef3c83..8790f2c702 100644 --- a/common/defs/README.md +++ b/common/defs/README.md @@ -81,7 +81,7 @@ added to the dataset. # Support Information We keep track of support status of each built-in coin over our devices. That is -`T1B1` for Trezor One, `T2T1` for Trezor T, `T2B1` for Trezor R, `connect` for [Connect](https://github.com/trezor/connect) +`T1B1` for Trezor One, `T2T1` for Trezor T, `T2B1` for Trezor Safe 3, `T3T1` for Trezor Safe 5, `connect` for [Connect](https://github.com/trezor/connect) and `suite` for [Trezor Suite](https://suite.trezor.io/). In further description, the word "device" applies to Connect and Suite as well. From 77eeabf7f58f92873b870a44c8752a839e81b9f0 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 15 Aug 2024 11:44:33 +0200 Subject: [PATCH 505/626] fix(core/prodtest): fix expected param numbers for TOUCH_IDLE command [no changelog] --- core/embed/prodtest/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index d5215a7d30..436951619f 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -454,7 +454,7 @@ static void test_touch_custom(const char *args) { } static void test_touch_idle(const char *args) { - static const int expected_params = 5; + static const int expected_params = 1; int num_params = 0; int params[expected_params]; From 5417ec15df69bfed256c3b4ff0c54fe4fdf32db6 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 16 Aug 2024 14:56:46 +0200 Subject: [PATCH 506/626] fix(core): introduce ui_overlay feature - fixes T3T1 bootloader compilation with new rendering [no changelog] --- core/SConscript.firmware | 1 + core/SConscript.unix | 1 + core/embed/rust/Cargo.toml | 2 ++ core/embed/rust/src/ui/model_mercury/cshape/mod.rs | 4 ++++ core/embed/rust/src/ui/shape/cache/drawing_cache.rs | 9 +++++++-- 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 9cd97ee350..75ad320dc3 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -845,6 +845,7 @@ def cargo_build(): if NEW_RENDERING and TREZOR_MODEL in ('T3T1', 'DISC2'): features.append('ui_image_buffer') + features.append('ui_overlay') features.extend(FEATURES_AVAILABLE) diff --git a/core/SConscript.unix b/core/SConscript.unix index 8dad6103b7..8013fe4f09 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -888,6 +888,7 @@ def cargo_build(): if NEW_RENDERING and TREZOR_MODEL in ('T3T1', ): features.append('ui_image_buffer') + features.append('ui_overlay') if NEW_RENDERING: features.append('new_rendering') diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 99b42eb987..4cd56c1153 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -27,6 +27,7 @@ ui_blurring = [] ui_jpeg_decoder = ["jpeg"] ui_image_buffer = [] ui_color_32bit = [] +ui_overlay = [] new_rendering = [] bootloader = [] button = [] @@ -62,6 +63,7 @@ test = [ "ui_jpeg_decoder", "ui_blurring", "ui_image_buffer", + "ui_overlay", "universal_fw", ] universal_fw = [] diff --git a/core/embed/rust/src/ui/model_mercury/cshape/mod.rs b/core/embed/rust/src/ui/model_mercury/cshape/mod.rs index 3ff046b79f..8f2b94688b 100644 --- a/core/embed/rust/src/ui/model_mercury/cshape/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/cshape/mod.rs @@ -1,11 +1,15 @@ mod loader; +#[cfg(feature = "ui_overlay")] mod unlock_overlay; +#[cfg(feature = "ui_overlay")] mod keyboard_overlay; +#[cfg(feature = "ui_overlay")] pub use unlock_overlay::UnlockOverlay; +#[cfg(feature = "ui_overlay")] pub use keyboard_overlay::KeyboardOverlay; pub use loader::{render_loader, LoaderRange}; diff --git a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs index b0d431b6f4..37ca16bcf4 100644 --- a/core/embed/rust/src/ui/shape/cache/drawing_cache.rs +++ b/core/embed/rust/src/ui/shape/cache/drawing_cache.rs @@ -16,17 +16,22 @@ const ZLIB_CACHE_SLOTS: usize = 1; #[cfg(not(feature = "xframebuffer"))] const ZLIB_CACHE_SLOTS: usize = 3; +#[cfg(not(feature = "xframebuffer"))] const RENDER_BUFF_SIZE: usize = (240 * 2 * 16) + ALIGN_PAD; -#[cfg(feature = "model_mercury")] +#[cfg(feature = "ui_overlay")] const IMAGE_BUFF_SIZE: usize = 240 * 240 + ALIGN_PAD; -#[cfg(not(feature = "model_mercury"))] +#[cfg(not(feature = "ui_overlay"))] const IMAGE_BUFF_SIZE: usize = 2048 + ALIGN_PAD; pub type ImageBuff = [u8; IMAGE_BUFF_SIZE]; + +#[cfg(not(feature = "xframebuffer"))] pub type RenderBuff = [u8; RENDER_BUFF_SIZE]; pub type ImageBuffRef<'a> = RefMut<'a, ImageBuff>; + +#[cfg(not(feature = "xframebuffer"))] pub type RenderBuffRef<'a> = RefMut<'a, RenderBuff>; pub struct DrawingCache<'a> { From a265b0f176392cbaad27b7bf23e42ba0759af331 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 15 Aug 2024 12:48:39 +0200 Subject: [PATCH 507/626] fix(core/bootloader): evaluate model before vendor header signature when installing firmware --- .../bootloader/.changelog.d/4081.changed | 1 + core/embed/bootloader/messages.c | 8 ++++++++ core/embed/bootloader/messages.h | 1 + core/embed/lib/image.c | 19 ++++++++++++++++++- core/embed/lib/image.h | 6 +++++- 5 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 core/embed/bootloader/.changelog.d/4081.changed diff --git a/core/embed/bootloader/.changelog.d/4081.changed b/core/embed/bootloader/.changelog.d/4081.changed new file mode 100644 index 0000000000..d461de838b --- /dev/null +++ b/core/embed/bootloader/.changelog.d/4081.changed @@ -0,0 +1 @@ +Fix incorrect error message when installing firmware for different model. diff --git a/core/embed/bootloader/messages.c b/core/embed/bootloader/messages.c index 67ee6ebb48..77477d012d 100644 --- a/core/embed/bootloader/messages.c +++ b/core/embed/bootloader/messages.c @@ -528,6 +528,14 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, return UPLOAD_ERR_INVALID_VENDOR_HEADER; } + if (sectrue != check_vendor_header_model(&vhdr)) { + MSG_SEND_INIT(Failure); + MSG_SEND_ASSIGN_VALUE(code, FailureType_Failure_ProcessError); + MSG_SEND_ASSIGN_STRING(message, "Wrong model"); + MSG_SEND(Failure); + return UPLOAD_ERR_INVALID_VENDOR_HEADER_MODEL; + } + if (sectrue != check_vendor_header_keys(&vhdr)) { MSG_SEND_INIT(Failure); MSG_SEND_ASSIGN_VALUE(code, FailureType_Failure_ProcessError); diff --git a/core/embed/bootloader/messages.h b/core/embed/bootloader/messages.h index 1b69508634..0113982e24 100644 --- a/core/embed/bootloader/messages.h +++ b/core/embed/bootloader/messages.h @@ -35,6 +35,7 @@ enum { UPLOAD_ERR_INVALID_CHUNK_SIZE = -1, UPLOAD_ERR_INVALID_VENDOR_HEADER = -2, UPLOAD_ERR_INVALID_VENDOR_HEADER_SIG = -3, + UPLOAD_ERR_INVALID_VENDOR_HEADER_MODEL = -15, UPLOAD_ERR_INVALID_IMAGE_HEADER = -4, UPLOAD_ERR_INVALID_IMAGE_MODEL = -5, UPLOAD_ERR_INVALID_IMAGE_HEADER_SIG = -6, diff --git a/core/embed/lib/image.c b/core/embed/lib/image.c index 9e0dd20f1a..6712c7076d 100644 --- a/core/embed/lib/image.c +++ b/core/embed/lib/image.c @@ -26,6 +26,8 @@ #include "image.h" #include "model.h" +_Static_assert(VENDOR_HEADER_MAX_SIZE + IMAGE_HEADER_SIZE <= IMAGE_CHUNK_SIZE); + const uint8_t BOOTLOADER_KEY_M = 2; const uint8_t BOOTLOADER_KEY_N = 3; static const uint8_t * const BOOTLOADER_KEYS[] = { @@ -150,7 +152,7 @@ secbool __wur read_vendor_header(const uint8_t *const data, if (vhdr->magic != 0x565A5254) return secfalse; // TRZV memcpy(&vhdr->hdrlen, data + 4, 4); - if (vhdr->hdrlen > 64 * 1024) return secfalse; + if (vhdr->hdrlen > VENDOR_HEADER_MAX_SIZE) return secfalse; memcpy(&vhdr->expiry, data + 8, 4); if (vhdr->expiry != 0) return secfalse; @@ -162,6 +164,7 @@ secbool __wur read_vendor_header(const uint8_t *const data, memcpy(&vhdr->vsig_m, data + 14, 1); memcpy(&vhdr->vsig_n, data + 15, 1); memcpy(&vhdr->vtrust, data + 16, 2); + memcpy(&vhdr->hw_model, data + 18, 4); if (vhdr->vsig_n > MAX_VENDOR_PUBLIC_KEYS) { return secfalse; @@ -190,6 +193,20 @@ secbool __wur read_vendor_header(const uint8_t *const data, return sectrue; } +secbool check_vendor_header_model(const vendor_header *const vhdr) { +#ifdef TREZOR_MODEL_T + if (vhdr->hw_model == 0) { + // vendor headers for model T have this field set to 0 + return sectrue; + } +#endif + if (vhdr->hw_model == HW_MODEL) { + return sectrue; + } + + return secfalse; +} + secbool check_vendor_header_sig(const vendor_header *const vhdr, uint8_t key_m, uint8_t key_n, const uint8_t *const *keys) { if (vhdr == NULL) { diff --git a/core/embed/lib/image.h b/core/embed/lib/image.h index 38869559f6..bfcfba634b 100644 --- a/core/embed/lib/image.h +++ b/core/embed/lib/image.h @@ -27,6 +27,7 @@ #include "model.h" #include "secbool.h" +#define VENDOR_HEADER_MAX_SIZE (64 * 1024) #define IMAGE_HEADER_SIZE 0x400 // size of the bootloader or firmware header #define IMAGE_SIG_SIZE 65 #define IMAGE_INIT_CHUNK_SIZE (16 * 1024) @@ -88,7 +89,8 @@ typedef struct { uint8_t vsig_m; uint8_t vsig_n; uint16_t vtrust; - // uint8_t reserved[14]; + uint32_t hw_model; + // uint8_t reserved[10]; const uint8_t *vpub[MAX_VENDOR_PUBLIC_KEYS]; uint8_t vstr_len; const char *vstr; @@ -127,6 +129,8 @@ secbool __wur check_image_header_sig(const image_header *const hdr, secbool __wur read_vendor_header(const uint8_t *const data, vendor_header *const vhdr); +secbool __wur check_vendor_header_model(const vendor_header *const vhdr); + secbool __wur check_vendor_header_sig(const vendor_header *const vhdr, uint8_t key_m, uint8_t key_n, const uint8_t *const *keys); From dc276d1520f91c44ac7ba22aa2a591510f76469b Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 6 Aug 2024 13:15:24 +0200 Subject: [PATCH 508/626] fix(core/bootloader): fix firmware update on stm32u5a [no changelog] --- core/embed/boardloader/main.c | 16 +++++++++++++--- core/embed/bootloader/messages.c | 15 ++++++++++++++- core/embed/bootloader/messages.h | 1 + core/embed/bootloader_ci/messages.c | 2 +- core/embed/lib/image.c | 2 +- 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/core/embed/boardloader/main.c b/core/embed/boardloader/main.c index 6f5d3eee3a..321297d4d0 100644 --- a/core/embed/boardloader/main.c +++ b/core/embed/boardloader/main.c @@ -175,9 +175,19 @@ static uint32_t check_sdcard(void) { _Static_assert(IMAGE_CHUNK_SIZE >= BOOTLOADER_IMAGE_MAXSIZE, "BOOTLOADER IMAGE MAXSIZE too large for IMAGE_CHUNK_SIZE"); - if (sectrue != (check_single_hash( - hdr->hashes, ((const uint8_t *)sdcard_buf) + hdr->hdrlen, - hdr->codelen))) { + const uint32_t headers_end_offset = hdr->hdrlen; + const uint32_t code_start_offset = IMAGE_CODE_ALIGN(headers_end_offset); + + for (uint32_t i = headers_end_offset; i < code_start_offset; i++) { + if (((uint8_t *)sdcard_buf)[i] != 0) { + return 0; + } + } + + if (sectrue != + (check_single_hash(hdr->hashes, + (const uint8_t *)sdcard_buf + code_start_offset, + hdr->codelen))) { return 0; } diff --git a/core/embed/bootloader/messages.c b/core/embed/bootloader/messages.c index 77477d012d..9e9f92af23 100644 --- a/core/embed/bootloader/messages.c +++ b/core/embed/bootloader/messages.c @@ -576,6 +576,20 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, memcpy(&hdr, received_hdr, sizeof(hdr)); + size_t headers_end = IMAGE_HEADER_SIZE + vhdr.hdrlen; + headers_offset = IMAGE_CODE_ALIGN(IMAGE_HEADER_SIZE + vhdr.hdrlen); + + // check padding between headers and the code + for (size_t i = headers_end; i < headers_offset; i++) { + if (CHUNK_BUFFER_PTR[i] != 0) { + MSG_SEND_INIT(Failure); + MSG_SEND_ASSIGN_VALUE(code, FailureType_Failure_ProcessError); + MSG_SEND_ASSIGN_STRING(message, "Invalid chunk padding"); + MSG_SEND(Failure); + return UPLOAD_ERR_INVALID_CHUNK_PADDING; + } + } + vendor_header current_vhdr; secbool is_new = secfalse; @@ -684,7 +698,6 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, NULL); } - headers_offset = IMAGE_HEADER_SIZE + vhdr.hdrlen; read_offset = IMAGE_INIT_CHUNK_SIZE; // request the rest of the first chunk diff --git a/core/embed/bootloader/messages.h b/core/embed/bootloader/messages.h index 0113982e24..d1ff9a2f08 100644 --- a/core/embed/bootloader/messages.h +++ b/core/embed/bootloader/messages.h @@ -46,6 +46,7 @@ enum { UPLOAD_ERR_FIRMWARE_MISMATCH = -11, UPLOAD_ERR_NOT_FIRMWARE_UPGRADE = -12, UPLOAD_ERR_NOT_FULLTRUST_IMAGE = -13, + UPLOAD_ERR_INVALID_CHUNK_PADDING = -14, }; enum { diff --git a/core/embed/bootloader_ci/messages.c b/core/embed/bootloader_ci/messages.c index 2a7c372785..ee177017a1 100644 --- a/core/embed/bootloader_ci/messages.c +++ b/core/embed/bootloader_ci/messages.c @@ -558,7 +558,7 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, // no user confirmations, go directly to upload - headers_offset = IMAGE_HEADER_SIZE + vhdr.hdrlen; + headers_offset = IMAGE_CODE_ALIGN(IMAGE_HEADER_SIZE + vhdr.hdrlen); read_offset = IMAGE_INIT_CHUNK_SIZE; // request the rest of the first chunk diff --git a/core/embed/lib/image.c b/core/embed/lib/image.c index 6712c7076d..0dc6a6f22a 100644 --- a/core/embed/lib/image.c +++ b/core/embed/lib/image.c @@ -270,7 +270,7 @@ secbool check_image_contents(const image_header *const hdr, uint32_t firstskip, const uint8_t *addr = (uint8_t *)flash_area_get_address(area, firstskip, padding_size); for (size_t i = 0; i < padding_size; i++) { - if (*addr != 0) { + if (*addr++ != 0) { return secfalse; } } From 4868a0410776b9a9db80727a52d90479c22725dc Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Wed, 21 Aug 2024 10:33:10 +0200 Subject: [PATCH 509/626] docs(core): changelog: 2.8.1 not released for T2B1 --- core/.changelog.d/3990.fixed | 1 + core/CHANGELOG.T2B1.md | 4 +--- core/CHANGELOG.md | 2 -- 3 files changed, 2 insertions(+), 5 deletions(-) create mode 100644 core/.changelog.d/3990.fixed diff --git a/core/.changelog.d/3990.fixed b/core/.changelog.d/3990.fixed new file mode 100644 index 0000000000..72e6165c36 --- /dev/null +++ b/core/.changelog.d/3990.fixed @@ -0,0 +1 @@ +[T2B1] Fix display orientation "south" diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index 479b91f6a9..43fd79d767 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,13 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [2.8.1] (21st August 2024) +## [2.8.1] (unreleased) ### Added - Improve precision of PIN timeout countdown. [#4000] ### Fixed -- Fix display orientation "south". [#3990] - Solana: added support for deprecated AToken Create `rent_sysvar` argument. [#3976] @@ -935,7 +934,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3972]: https://github.com/trezor/trezor-firmware/pull/3972 [#3976]: https://github.com/trezor/trezor-firmware/pull/3976 [#3987]: https://github.com/trezor/trezor-firmware/pull/3987 -[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 [#3992]: https://github.com/trezor/trezor-firmware/pull/3992 [#4000]: https://github.com/trezor/trezor-firmware/pull/4000 [#4006]: https://github.com/trezor/trezor-firmware/pull/4006 diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index f59734b737..95e194a70f 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -23,7 +23,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - [T2T1,T3T1] Added a progress indicator for the formatting operation. [#3035] - [T3T1] Improved screen brightness settings. [#3969] - [T3T1] Improve touch layer precision. [#3972] -- [T2B1] Fix display orientation "south". [#3990] - [T3T1] Fix More info screen during multi-share backup creation. [#4006] - [T3T1] Fixed title sometimes not fitting into result screen. [#4023] - [T3T1] Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes. [#4060] @@ -968,7 +967,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3972]: https://github.com/trezor/trezor-firmware/pull/3972 [#3976]: https://github.com/trezor/trezor-firmware/pull/3976 [#3987]: https://github.com/trezor/trezor-firmware/pull/3987 -[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 [#3992]: https://github.com/trezor/trezor-firmware/pull/3992 [#4000]: https://github.com/trezor/trezor-firmware/pull/4000 [#4006]: https://github.com/trezor/trezor-firmware/pull/4006 From 5912c1e8201e3220b4b5254fc3e1b9ae3e25393a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 6 Aug 2024 16:53:53 +0200 Subject: [PATCH 510/626] refactor(crypto): use boolean to indicate public key is set [no changelog] --- .../extmod/modtrezorcrypto/modtrezorcrypto-bip32.h | 2 ++ crypto/bip32.c | 12 +++++++++++- crypto/bip32.h | 1 + crypto/cardano.c | 3 ++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h index afae086504..ed0794b597 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-bip32.h @@ -131,8 +131,10 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_make_new(const mp_obj_type_t *type, } if (33 == public_key.len) { memcpy(o->hdnode.public_key, public_key.buf, 33); + o->hdnode.is_public_key_set = true; } else { memzero(o->hdnode.public_key, 33); + o->hdnode.is_public_key_set = false; } o->hdnode.curve = curve; diff --git a/crypto/bip32.c b/crypto/bip32.c index 09723d9fd5..741049c433 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -103,6 +103,7 @@ int hdnode_from_xpub(uint32_t depth, uint32_t child_num, memzero(out->private_key, 32); memzero(out->private_key_extension, 32); memcpy(out->public_key, public_key, 33); + out->is_public_key_set = true; return 1; } @@ -136,6 +137,7 @@ int hdnode_from_xprv(uint32_t depth, uint32_t child_num, memcpy(out->chain_code, chain_code, 32); memcpy(out->private_key, private_key, 32); memzero(out->public_key, sizeof(out->public_key)); + out->is_public_key_set = false; memzero(out->private_key_extension, sizeof(out->private_key_extension)); return 1; } @@ -174,6 +176,7 @@ int hdnode_from_seed(const uint8_t *seed, int seed_len, const char *curve, memcpy(out->private_key, I, 32); memcpy(out->chain_code, I + 32, 32); memzero(out->public_key, sizeof(out->public_key)); + out->is_public_key_set = false; memzero(I, sizeof(I)); return 1; } @@ -255,6 +258,7 @@ int hdnode_private_ckd_bip32(HDNode *inout, uint32_t i) { inout->depth++; inout->child_num = i; memzero(inout->public_key, sizeof(inout->public_key)); + inout->is_public_key_set = false; // making sure to wipe our memory memzero(&a, sizeof(a)); @@ -329,6 +333,7 @@ int hdnode_public_ckd(HDNode *inout, uint32_t i) { inout->child_num = i; inout->public_key[0] = 0x02 | (child.y.val[0] & 0x01); bn_write_be(&child.x, inout->public_key + 1); + inout->is_public_key_set = true; // Wipe all stack data. memzero(&parent, sizeof(parent)); @@ -468,7 +473,9 @@ int hdnode_get_address(HDNode *node, uint32_t version, char *addr, } int hdnode_fill_public_key(HDNode *node) { - if (node->public_key[0] != 0) return 0; + if (node->is_public_key_set) { + return 0; + } #if USE_BIP32_25519_CURVES if (node->curve->params) { @@ -501,6 +508,7 @@ int hdnode_fill_public_key(HDNode *node) { return 1; } #endif + node->is_public_key_set = true; return 0; } @@ -750,9 +758,11 @@ static int hdnode_deserialize(const char *str, uint32_t version, } memcpy(node->private_key, node_data + 46, 32); memzero(node->public_key, sizeof(node->public_key)); + node->is_public_key_set = false; } else { memzero(node->private_key, sizeof(node->private_key)); memcpy(node->public_key, node_data + 45, 33); + node->is_public_key_set = true; } node->depth = node_data[4]; if (fingerprint) { diff --git a/crypto/bip32.h b/crypto/bip32.h index 4be5c44831..27084719ca 100644 --- a/crypto/bip32.h +++ b/crypto/bip32.h @@ -56,6 +56,7 @@ typedef struct { uint8_t private_key_extension[32]; uint8_t public_key[33]; + bool is_public_key_set; const curve_info *curve; } HDNode; diff --git a/crypto/cardano.c b/crypto/cardano.c index 485d6514a4..090dfe3ce5 100644 --- a/crypto/cardano.c +++ b/crypto/cardano.c @@ -143,6 +143,7 @@ int hdnode_private_ckd_cardano(HDNode *inout, uint32_t index) { inout->depth++; inout->child_num = index; memzero(inout->public_key, sizeof(inout->public_key)); + inout->is_public_key_set = false; // making sure to wipe our memory memzero(z, sizeof(z)); @@ -164,7 +165,7 @@ int hdnode_from_secret_cardano(const uint8_t secret[CARDANO_SECRET_LENGTH], cardano_ed25519_tweak_bits(out->private_key); - out->public_key[0] = 0; + out->is_public_key_set = false; if (hdnode_fill_public_key(out) != 0) { return 0; } From 865ca5f0a9534ca64f41a1d508983029b55c9b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 6 Aug 2024 15:20:17 +0200 Subject: [PATCH 511/626] fix(crypto): fix fingerprints for curve25519 and ed25519 --- core/.changelog.d/4093.fixed | 1 + crypto/bip32.c | 5 +++ crypto/tests/test_check.c | 42 ++++++++++++++++++++----- legacy/firmware/.changelog.d/4093.fixed | 1 + 4 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 core/.changelog.d/4093.fixed create mode 100644 legacy/firmware/.changelog.d/4093.fixed diff --git a/core/.changelog.d/4093.fixed b/core/.changelog.d/4093.fixed new file mode 100644 index 0000000000..0fa95d8866 --- /dev/null +++ b/core/.changelog.d/4093.fixed @@ -0,0 +1 @@ +Fixed SLIP-10 fingerprints for ed25519 and curve25519. diff --git a/crypto/bip32.c b/crypto/bip32.c index 741049c433..15a7d7add1 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -186,6 +186,11 @@ uint32_t hdnode_fingerprint(HDNode *node) { uint32_t fingerprint = 0; hdnode_fill_public_key(node); + if (node->public_key[0] == 0x01) { + // The prefix 0x01 indicates curve25519 or ed25519 + // In this case, SLIP-10 uses the prefix 0x00 to calculate the fingerprint + node->public_key[0] = 0x00; + } hasher_Raw(node->curve->hasher_pubkey, node->public_key, 33, digest); fingerprint = ((uint32_t)digest[0] << 24) + (digest[1] << 16) + (digest[2] << 8) + digest[3]; diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index 1a7ba16441..c08b34389e 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -2633,9 +2633,11 @@ START_TEST(test_bip32_nist_repeat) { } END_TEST -// test vector 1 from https://en.bitcoin.it/wiki/BIP_0032_TestVectors +// https://github.com/satoshilabs/slips/blob/master/slip-0010.md#test-vector-1-for-ed25519 START_TEST(test_bip32_ed25519_vector_1) { HDNode node; + uint32_t fingerprint; + int r; // init m hdnode_from_seed(fromhex("000102030405060708090a0b0c0d0e0f"), 16, @@ -2660,7 +2662,10 @@ START_TEST(test_bip32_ed25519_vector_1) { 33); // [Chain m/0'] - hdnode_private_ckd_prime(&node, 0); + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0xddebc675); + r = hdnode_private_ckd_prime(&node, 0); + ck_assert_int_eq(r, 1); ck_assert_mem_eq( node.chain_code, fromhex( @@ -2679,7 +2684,10 @@ START_TEST(test_bip32_ed25519_vector_1) { 33); // [Chain m/0'/1'] - hdnode_private_ckd_prime(&node, 1); + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x13dab143); + r = hdnode_private_ckd_prime(&node, 1); + ck_assert_int_eq(r, 1); ck_assert_mem_eq( node.chain_code, fromhex( @@ -2698,7 +2706,10 @@ START_TEST(test_bip32_ed25519_vector_1) { 33); // [Chain m/0'/1'/2'] - hdnode_private_ckd_prime(&node, 2); + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0xebe4cb29); + r = hdnode_private_ckd_prime(&node, 2); + ck_assert_int_eq(r, 1); ck_assert_mem_eq( node.chain_code, fromhex( @@ -2717,7 +2728,10 @@ START_TEST(test_bip32_ed25519_vector_1) { 33); // [Chain m/0'/1'/2'/2'] - hdnode_private_ckd_prime(&node, 2); + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x316ec1c6); + r = hdnode_private_ckd_prime(&node, 2); + ck_assert_int_eq(r, 1); ck_assert_mem_eq( node.chain_code, fromhex( @@ -2736,7 +2750,10 @@ START_TEST(test_bip32_ed25519_vector_1) { 33); // [Chain m/0'/1'/2'/2'/1000000000'] - hdnode_private_ckd_prime(&node, 1000000000); + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0xd6322ccd); + r = hdnode_private_ckd_prime(&node, 1000000000); + ck_assert_int_eq(r, 1); ck_assert_mem_eq( node.chain_code, fromhex( @@ -2756,9 +2773,10 @@ START_TEST(test_bip32_ed25519_vector_1) { } END_TEST -// test vector 2 from https://en.bitcoin.it/wiki/BIP_0032_TestVectors +// https://github.com/satoshilabs/slips/blob/master/slip-0010.md#test-vector-2-for-ed25519 START_TEST(test_bip32_ed25519_vector_2) { HDNode node; + uint32_t fingerprint; int r; // init m @@ -2787,6 +2805,8 @@ START_TEST(test_bip32_ed25519_vector_2) { 33); // [Chain m/0'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x31981b50); r = hdnode_private_ckd_prime(&node, 0); ck_assert_int_eq(r, 1); ck_assert_mem_eq( @@ -2807,6 +2827,8 @@ START_TEST(test_bip32_ed25519_vector_2) { 33); // [Chain m/0'/2147483647'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x1e9411b1); r = hdnode_private_ckd_prime(&node, 2147483647); ck_assert_int_eq(r, 1); ck_assert_mem_eq( @@ -2827,6 +2849,8 @@ START_TEST(test_bip32_ed25519_vector_2) { 33); // [Chain m/0'/2147483647'/1'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0xfcadf38c); r = hdnode_private_ckd_prime(&node, 1); ck_assert_int_eq(r, 1); ck_assert_mem_eq( @@ -2847,6 +2871,8 @@ START_TEST(test_bip32_ed25519_vector_2) { 33); // [Chain m/0'/2147483647'/1'/2147483646'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0xaca70953); r = hdnode_private_ckd_prime(&node, 2147483646); ck_assert_int_eq(r, 1); ck_assert_mem_eq( @@ -2867,6 +2893,8 @@ START_TEST(test_bip32_ed25519_vector_2) { 33); // [Chain m/0'/2147483647'/1'/2147483646'/2'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x422c654b); r = hdnode_private_ckd_prime(&node, 2); ck_assert_int_eq(r, 1); ck_assert_mem_eq( diff --git a/legacy/firmware/.changelog.d/4093.fixed b/legacy/firmware/.changelog.d/4093.fixed new file mode 100644 index 0000000000..0fa95d8866 --- /dev/null +++ b/legacy/firmware/.changelog.d/4093.fixed @@ -0,0 +1 @@ +Fixed SLIP-10 fingerprints for ed25519 and curve25519. From ba1a680baca5e253ecaa35ec980279e0c869ff90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 6 Aug 2024 16:18:07 +0200 Subject: [PATCH 512/626] tests(crypto): add bip32 curve25519 tests [no changelog] --- crypto/tests/test_check.c | 288 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index c08b34389e..a5b7d287c1 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -2916,6 +2916,289 @@ START_TEST(test_bip32_ed25519_vector_2) { } END_TEST +// https://github.com/satoshilabs/slips/blob/master/slip-0010.md#test-vector-1-for-curve25519 +START_TEST(test_bip32_curve25519_vector_1) { + HDNode node; + uint32_t fingerprint; + int r; + + // init m + hdnode_from_seed(fromhex("000102030405060708090a0b0c0d0e0f"), 16, + CURVE25519_NAME, &node); + + // [Chain m] + ck_assert_mem_eq( + node.chain_code, + fromhex( + "77997ca3588a1a34f3589279ea2962247abfe5277d52770a44c706378c710768"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "d70a59c2e68b836cc4bbe8bcae425169b9e2384f3905091e3d60b890e90cd92c"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "015c7289dc9f7f3ea1c8c2de7323b9fb0781f69c9ecd6de4f095ac89a02dc80577"), + 33); + + // [Chain m/0'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x6f5a9c0d); + r = hdnode_private_ckd_prime(&node, 0); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "349a3973aad771c628bf1f1b4d5e071f18eff2e492e4aa7972a7e43895d6597f"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "cd7630d7513cbe80515f7317cdb9a47ad4a56b63c3f1dc29583ab8d4cc25a9b2"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "01cb8be6b256ce509008b43ae0dccd69960ad4f7ff2e2868c1fbc9e19ec3ad544b"), + 33); + + // [Chain m/0'/1'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0xfde474d7); + r = hdnode_private_ckd_prime(&node, 1); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "2ee5ba14faf2fe9d7ab532451c2be3a0a5375c5e8c44fb31d9ad7edc25cda000"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "a95f97cfc1a61dd833b882c89d36a78a030ea6b2fbe3ae2a70e4f1fc9008d6b1"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "01e9506455dce2526df42e5e4eb5585eaef712e5f9c6a28bf9fb175d96595ea872"), + 33); + + // [Chain m/0'/1'/2'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x6569dde7); + r = hdnode_private_ckd_prime(&node, 2); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "e1897d5a96459ce2a3d294cb2a6a59050ee61255818c50e03ac4263ef17af084"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "3d6cce04a9175929da907a90b02176077b9ae050dcef9b959fed978bb2200cdc"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "0118f008fcbc6d1cd8b4fe7a9eba00f6570a9da02a9b0005028cb2731b12ee4118"), + 33); + + // [Chain m/0'/1'/2'/2'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x1b7cce71); + r = hdnode_private_ckd_prime(&node, 2); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "1cccc84e2737cfe81b51fbe4c97bbdb000f6a76eddffb9ed03108fbff3ff7e4f"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "7ae7437efe0a3018999e6f00d72e810ebc50578dbf6728bfa1c7fe73501081a7"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "01512e288a8ef4d869620dc4b06bb06ad2524b350dee5a39fcfeb708dbac65c25c"), + 33); + + // [Chain m/0'/1'/2'/2'/1000000000'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0xde5dcb65); + r = hdnode_private_ckd_prime(&node, 1000000000); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "8ccf15d55b1dda246b0c1bf3e979a471a82524c1bd0c1eaecccf00dde72168bb"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "7a59954d387abde3bc703f531f67d659ec2b8a12597ae82824547d7e27991e26"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "01a077fcf5af53d210257d44a86eb2031233ac7237da220434ac01a0bebccc1919"), + 33); +} +END_TEST + +// https://github.com/satoshilabs/slips/blob/master/slip-0010.md#test-vector-2-for-curve25519 +START_TEST(test_bip32_curve25519_vector_2) { + HDNode node; + uint32_t fingerprint; + int r; + + // init m + hdnode_from_seed( + fromhex( + "fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c" + "999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542"), + 64, CURVE25519_NAME, &node); + + // [Chain m] + ck_assert_mem_eq( + node.chain_code, + fromhex( + "b62c0c81a80a0ee16b977abb3677eb47549d0eef090f7a6c2b2010e739875e34"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "088491f5b4dfafbe956de471f3db10e02d784bc76050ee3b7c3f11b9706d3730"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "0160cc3b40567729af08757e1efe62536dc864a57ec582f98b96f484201a260c7a"), + 33); + + // [Chain m/0'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x75edaf13); + r = hdnode_private_ckd_prime(&node, 0); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "341f386e571229e8adc52b82e824532817a31a35ba49ae334424e7228d020eed"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "8e73218a1ba5c7b95e94b6e7cf7b37fb6240fb3b2ecd801402a4439da7067ee2"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "017992b3f270ef15f266785fffb73246ad7f40d1fe8679b737fed0970d92cc5f39"), + 33); + + // [Chain m/0'/2147483647'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x5b26da66); + r = hdnode_private_ckd_prime(&node, 2147483647); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "942cbec088b4ae92e8db9336025e9185fec0985a3da89d7a408bc2a4e18a8134"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "29262b215c961bae20274588b33955c36f265c1f626df9feebb51034ce63c19d"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "012372feac417c38b833e1aba75f2420278122d698605b995cafc2fed7bb453d41"), + 33); + + // [Chain m/0'/2147483647'/1'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0xf701c832); + r = hdnode_private_ckd_prime(&node, 1); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "fe02397ae2ca71efe455f470fb23928baf026360a9e9090e21958f6fba9efc30"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "a4d2474bd98c5e9ff416f536697b89949627d6d2c384b81a86d29f1136f4c2d1"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "01eca4fd0458d3f729b6218eda871b350fa8870a744caf6d30cd84dad2b9dd9c2d"), + 33); + + // [Chain m/0'/2147483647'/1'/2147483646'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x6063347b); + r = hdnode_private_ckd_prime(&node, 2147483646); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "b3b49d550e732ee629f4aeb4bf7213c3ae0f239fd10add513253cddbb8efb868"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "d3500d9b30529c51d92497eded1d68d29f60c630c45c61a481c185e574c6e5cf"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "01edaa3d381a2b02f40a80d69b2ce7ba7c3c4a9421744808857cd48c50d29b5868"), + 33); + + // [Chain m/0'/2147483647'/1'/2147483646'/2'] + fingerprint = hdnode_fingerprint(&node); + ck_assert_uint_eq(fingerprint, 0x86bf4fed); + r = hdnode_private_ckd_prime(&node, 2); + ck_assert_int_eq(r, 1); + ck_assert_mem_eq( + node.chain_code, + fromhex( + "f6ded904046e9758b9388dbf95ea5db837ab98b03b00e4db7009a8e3ac077685"), + 32); + ck_assert_mem_eq( + node.private_key, + fromhex( + "e20fecd59312b63b37eee27714465aae1caa1c87840abd0d685ea88b3d598fdf"), + 32); + ck_assert_int_eq(hdnode_fill_public_key(&node), 0); + ck_assert_mem_eq( + node.public_key, + fromhex( + "01aa705de68066e9534a238af35ea77c48016462a8aff358d22eaa6c7d5b034354"), + 33); +} +END_TEST + // test vector 1 from // https://github.com/decred/dcrd/blob/master/hdkeychain/extendedkey_test.go START_TEST(test_bip32_decred_vector_1) { @@ -11045,6 +11328,11 @@ Suite *test_suite(void) { tcase_add_test(tc, test_bip32_ed25519_vector_2); suite_add_tcase(s, tc); + tc = tcase_create("bip32-curve25519"); + tcase_add_test(tc, test_bip32_curve25519_vector_1); + tcase_add_test(tc, test_bip32_curve25519_vector_2); + suite_add_tcase(s, tc); + tc = tcase_create("bip32-ecdh"); tcase_add_test(tc, test_bip32_ecdh_nist256p1); tcase_add_test(tc, test_bip32_ecdh_curve25519); From 59a005bf99468708af677291db0de376f9ecf51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Wed, 7 Aug 2024 15:07:14 +0200 Subject: [PATCH 513/626] refactor(crypto): change ed25519 and curve25519 public key prefix [no changelog] --- core/src/apps/bitcoin/common.py | 4 ++ core/src/apps/bitcoin/get_public_key.py | 2 - core/src/apps/misc/get_ecdh_session_key.py | 5 ++- core/src/apps/misc/sign_identity.py | 2 - crypto/bip32.c | 8 +--- crypto/tests/test_check.c | 50 +++++++++++----------- legacy/firmware/fsm_msg_coin.h | 4 -- legacy/firmware/fsm_msg_crypto.h | 7 ++- legacy/firmware/layout2.c | 10 +---- 9 files changed, 40 insertions(+), 52 deletions(-) diff --git a/core/src/apps/bitcoin/common.py b/core/src/apps/bitcoin/common.py index aa8d560597..92f63be59b 100644 --- a/core/src/apps/bitcoin/common.py +++ b/core/src/apps/bitcoin/common.py @@ -121,6 +121,10 @@ def bip340_sign(node: bip32.HDNode, digest: bytes) -> bytes: def ecdsa_hash_pubkey(pubkey: bytes, coin: CoinInfo) -> bytes: from trezor.utils import ensure + ensure( + coin.curve_name.startswith("secp256k1") + ) # The following code makes sense only for Weiersrass curves + if pubkey[0] == 0x04: ensure(len(pubkey) == 65) # uncompressed format elif pubkey[0] == 0x00: diff --git a/core/src/apps/bitcoin/get_public_key.py b/core/src/apps/bitcoin/get_public_key.py index 613f80e420..8e7855857b 100644 --- a/core/src/apps/bitcoin/get_public_key.py +++ b/core/src/apps/bitcoin/get_public_key.py @@ -70,8 +70,6 @@ async def get_public_key( raise wire.DataError("Invalid combination of coin and script_type") pubkey = node.public_key() - if pubkey[0] == 1: - pubkey = b"\x00" + pubkey[1:] node_type = HDNodeType( depth=node.depth(), child_num=node.child_num(), diff --git a/core/src/apps/misc/get_ecdh_session_key.py b/core/src/apps/misc/get_ecdh_session_key.py index 68b55baed1..1aacc16725 100644 --- a/core/src/apps/misc/get_ecdh_session_key.py +++ b/core/src/apps/misc/get_ecdh_session_key.py @@ -46,10 +46,12 @@ async def get_ecdh_session_key(msg: GetECDHSessionKey) -> ECDHSessionKey: from trezor.crypto.curve import secp256k1 session_key = secp256k1.multiply(node.private_key(), peer_public_key) + public_key = node.public_key() elif curve_name == "nist256p1": from trezor.crypto.curve import nist256p1 session_key = nist256p1.multiply(node.private_key(), peer_public_key) + public_key = node.public_key() elif curve_name == "curve25519": from trezor.crypto.curve import curve25519 @@ -58,8 +60,9 @@ async def get_ecdh_session_key(msg: GetECDHSessionKey) -> ECDHSessionKey: session_key = b"\x04" + curve25519.multiply( node.private_key(), peer_public_key[1:] ) + public_key = b"\x01" + node.public_key()[1:] else: raise DataError("Unsupported curve for ECDH: " + curve_name) # END ecdh - return ECDHSessionKey(session_key=session_key, public_key=node.public_key()) + return ECDHSessionKey(session_key=session_key, public_key=public_key) diff --git a/core/src/apps/misc/sign_identity.py b/core/src/apps/misc/sign_identity.py index 90863f7ef5..55fd115d04 100644 --- a/core/src/apps/misc/sign_identity.py +++ b/core/src/apps/misc/sign_identity.py @@ -46,8 +46,6 @@ async def sign_identity(msg: SignIdentity) -> SignedIdentity: else: address = None pubkey = node.public_key() - if pubkey[0] == 0x01: - pubkey = b"\x00" + pubkey[1:] seckey = node.private_key() if msg_identity_proto in ("gpg", "signify", "ssh"): diff --git a/crypto/bip32.c b/crypto/bip32.c index 15a7d7add1..cb67834764 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -186,11 +186,6 @@ uint32_t hdnode_fingerprint(HDNode *node) { uint32_t fingerprint = 0; hdnode_fill_public_key(node); - if (node->public_key[0] == 0x01) { - // The prefix 0x01 indicates curve25519 or ed25519 - // In this case, SLIP-10 uses the prefix 0x00 to calculate the fingerprint - node->public_key[0] = 0x00; - } hasher_Raw(node->curve->hasher_pubkey, node->public_key, 33, digest); fingerprint = ((uint32_t)digest[0] << 24) + (digest[1] << 16) + (digest[2] << 8) + digest[3]; @@ -489,7 +484,8 @@ int hdnode_fill_public_key(HDNode *node) { return 1; } } else { - node->public_key[0] = 1; + // According to SLIP-10, curve25519 and ed25519 use the prefix 0x00 + node->public_key[0] = 0; if (node->curve == &ed25519_info) { ed25519_publickey(node->private_key, node->public_key + 1); } else if (node->curve == &ed25519_sha3_info) { diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index a5b7d287c1..e2ab3fc80e 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -2658,7 +2658,7 @@ START_TEST(test_bip32_ed25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "01a4b2856bfec510abab89753fac1ac0e1112364e7d250545963f135f2a33188ed"), + "00a4b2856bfec510abab89753fac1ac0e1112364e7d250545963f135f2a33188ed"), 33); // [Chain m/0'] @@ -2680,7 +2680,7 @@ START_TEST(test_bip32_ed25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "018c8a13df77a28f3445213a0f432fde644acaa215fc72dcdf300d5efaa85d350c"), + "008c8a13df77a28f3445213a0f432fde644acaa215fc72dcdf300d5efaa85d350c"), 33); // [Chain m/0'/1'] @@ -2702,7 +2702,7 @@ START_TEST(test_bip32_ed25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "011932a5270f335bed617d5b935c80aedb1a35bd9fc1e31acafd5372c30f5c1187"), + "001932a5270f335bed617d5b935c80aedb1a35bd9fc1e31acafd5372c30f5c1187"), 33); // [Chain m/0'/1'/2'] @@ -2724,7 +2724,7 @@ START_TEST(test_bip32_ed25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "01ae98736566d30ed0e9d2f4486a64bc95740d89c7db33f52121f8ea8f76ff0fc1"), + "00ae98736566d30ed0e9d2f4486a64bc95740d89c7db33f52121f8ea8f76ff0fc1"), 33); // [Chain m/0'/1'/2'/2'] @@ -2746,7 +2746,7 @@ START_TEST(test_bip32_ed25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "018abae2d66361c879b900d204ad2cc4984fa2aa344dd7ddc46007329ac76c429c"), + "008abae2d66361c879b900d204ad2cc4984fa2aa344dd7ddc46007329ac76c429c"), 33); // [Chain m/0'/1'/2'/2'/1000000000'] @@ -2768,7 +2768,7 @@ START_TEST(test_bip32_ed25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "013c24da049451555d51a7014a37337aa4e12d41e485abccfa46b47dfb2af54b7a"), + "003c24da049451555d51a7014a37337aa4e12d41e485abccfa46b47dfb2af54b7a"), 33); } END_TEST @@ -2801,7 +2801,7 @@ START_TEST(test_bip32_ed25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "018fe9693f8fa62a4305a140b9764c5ee01e455963744fe18204b4fb948249308a"), + "008fe9693f8fa62a4305a140b9764c5ee01e455963744fe18204b4fb948249308a"), 33); // [Chain m/0'] @@ -2823,7 +2823,7 @@ START_TEST(test_bip32_ed25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "0186fab68dcb57aa196c77c5f264f215a112c22a912c10d123b0d03c3c28ef1037"), + "0086fab68dcb57aa196c77c5f264f215a112c22a912c10d123b0d03c3c28ef1037"), 33); // [Chain m/0'/2147483647'] @@ -2845,7 +2845,7 @@ START_TEST(test_bip32_ed25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "015ba3b9ac6e90e83effcd25ac4e58a1365a9e35a3d3ae5eb07b9e4d90bcf7506d"), + "005ba3b9ac6e90e83effcd25ac4e58a1365a9e35a3d3ae5eb07b9e4d90bcf7506d"), 33); // [Chain m/0'/2147483647'/1'] @@ -2867,7 +2867,7 @@ START_TEST(test_bip32_ed25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "012e66aa57069c86cc18249aecf5cb5a9cebbfd6fadeab056254763874a9352b45"), + "002e66aa57069c86cc18249aecf5cb5a9cebbfd6fadeab056254763874a9352b45"), 33); // [Chain m/0'/2147483647'/1'/2147483646'] @@ -2889,7 +2889,7 @@ START_TEST(test_bip32_ed25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "01e33c0f7d81d843c572275f287498e8d408654fdf0d1e065b84e2e6f157aab09b"), + "00e33c0f7d81d843c572275f287498e8d408654fdf0d1e065b84e2e6f157aab09b"), 33); // [Chain m/0'/2147483647'/1'/2147483646'/2'] @@ -2911,7 +2911,7 @@ START_TEST(test_bip32_ed25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "0147150c75db263559a70d5778bf36abbab30fb061ad69f69ece61a72b0cfa4fc0"), + "0047150c75db263559a70d5778bf36abbab30fb061ad69f69ece61a72b0cfa4fc0"), 33); } END_TEST @@ -2941,7 +2941,7 @@ START_TEST(test_bip32_curve25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "015c7289dc9f7f3ea1c8c2de7323b9fb0781f69c9ecd6de4f095ac89a02dc80577"), + "005c7289dc9f7f3ea1c8c2de7323b9fb0781f69c9ecd6de4f095ac89a02dc80577"), 33); // [Chain m/0'] @@ -2963,7 +2963,7 @@ START_TEST(test_bip32_curve25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "01cb8be6b256ce509008b43ae0dccd69960ad4f7ff2e2868c1fbc9e19ec3ad544b"), + "00cb8be6b256ce509008b43ae0dccd69960ad4f7ff2e2868c1fbc9e19ec3ad544b"), 33); // [Chain m/0'/1'] @@ -2985,7 +2985,7 @@ START_TEST(test_bip32_curve25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "01e9506455dce2526df42e5e4eb5585eaef712e5f9c6a28bf9fb175d96595ea872"), + "00e9506455dce2526df42e5e4eb5585eaef712e5f9c6a28bf9fb175d96595ea872"), 33); // [Chain m/0'/1'/2'] @@ -3007,7 +3007,7 @@ START_TEST(test_bip32_curve25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "0118f008fcbc6d1cd8b4fe7a9eba00f6570a9da02a9b0005028cb2731b12ee4118"), + "0018f008fcbc6d1cd8b4fe7a9eba00f6570a9da02a9b0005028cb2731b12ee4118"), 33); // [Chain m/0'/1'/2'/2'] @@ -3029,7 +3029,7 @@ START_TEST(test_bip32_curve25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "01512e288a8ef4d869620dc4b06bb06ad2524b350dee5a39fcfeb708dbac65c25c"), + "00512e288a8ef4d869620dc4b06bb06ad2524b350dee5a39fcfeb708dbac65c25c"), 33); // [Chain m/0'/1'/2'/2'/1000000000'] @@ -3051,7 +3051,7 @@ START_TEST(test_bip32_curve25519_vector_1) { ck_assert_mem_eq( node.public_key, fromhex( - "01a077fcf5af53d210257d44a86eb2031233ac7237da220434ac01a0bebccc1919"), + "00a077fcf5af53d210257d44a86eb2031233ac7237da220434ac01a0bebccc1919"), 33); } END_TEST @@ -3084,7 +3084,7 @@ START_TEST(test_bip32_curve25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "0160cc3b40567729af08757e1efe62536dc864a57ec582f98b96f484201a260c7a"), + "0060cc3b40567729af08757e1efe62536dc864a57ec582f98b96f484201a260c7a"), 33); // [Chain m/0'] @@ -3106,7 +3106,7 @@ START_TEST(test_bip32_curve25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "017992b3f270ef15f266785fffb73246ad7f40d1fe8679b737fed0970d92cc5f39"), + "007992b3f270ef15f266785fffb73246ad7f40d1fe8679b737fed0970d92cc5f39"), 33); // [Chain m/0'/2147483647'] @@ -3128,7 +3128,7 @@ START_TEST(test_bip32_curve25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "012372feac417c38b833e1aba75f2420278122d698605b995cafc2fed7bb453d41"), + "002372feac417c38b833e1aba75f2420278122d698605b995cafc2fed7bb453d41"), 33); // [Chain m/0'/2147483647'/1'] @@ -3150,7 +3150,7 @@ START_TEST(test_bip32_curve25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "01eca4fd0458d3f729b6218eda871b350fa8870a744caf6d30cd84dad2b9dd9c2d"), + "00eca4fd0458d3f729b6218eda871b350fa8870a744caf6d30cd84dad2b9dd9c2d"), 33); // [Chain m/0'/2147483647'/1'/2147483646'] @@ -3172,7 +3172,7 @@ START_TEST(test_bip32_curve25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "01edaa3d381a2b02f40a80d69b2ce7ba7c3c4a9421744808857cd48c50d29b5868"), + "00edaa3d381a2b02f40a80d69b2ce7ba7c3c4a9421744808857cd48c50d29b5868"), 33); // [Chain m/0'/2147483647'/1'/2147483646'/2'] @@ -3194,7 +3194,7 @@ START_TEST(test_bip32_curve25519_vector_2) { ck_assert_mem_eq( node.public_key, fromhex( - "01aa705de68066e9534a238af35ea77c48016462a8aff358d22eaa6c7d5b034354"), + "00aa705de68066e9534a238af35ea77c48016462a8aff358d22eaa6c7d5b034354"), 33); } END_TEST @@ -8235,7 +8235,7 @@ static void test_bip32_ecdh_init_node(HDNode *node, const char *seed_str, hdnode_from_seed((const uint8_t *)seed_str, strlen(seed_str), curve_name, node); ck_assert_int_eq(hdnode_fill_public_key(node), 0); - if (node->public_key[0] == 1) { + if (node->public_key[0] == 0) { node->public_key[0] = 0x40; // Curve25519 public keys start with 0x40 byte } } diff --git a/legacy/firmware/fsm_msg_coin.h b/legacy/firmware/fsm_msg_coin.h index 692671cf53..1640a19498 100644 --- a/legacy/firmware/fsm_msg_coin.h +++ b/legacy/firmware/fsm_msg_coin.h @@ -76,10 +76,6 @@ void fsm_msgGetPublicKey(const GetPublicKey *msg) { resp->node.has_private_key = false; resp->node.public_key.size = 33; memcpy(resp->node.public_key.bytes, node->public_key, 33); - if (node->public_key[0] == 1) { - /* ed25519 public key */ - resp->node.public_key.bytes[0] = 0; - } if (coin->xpub_magic && (script_type == InputScriptType_SPENDADDRESS || script_type == InputScriptType_SPENDMULTISIG)) { diff --git a/legacy/firmware/fsm_msg_crypto.h b/legacy/firmware/fsm_msg_crypto.h index cb2a42ec1d..5712371709 100644 --- a/legacy/firmware/fsm_msg_crypto.h +++ b/legacy/firmware/fsm_msg_crypto.h @@ -161,10 +161,6 @@ void fsm_msgSignIdentity(const SignIdentity *msg) { } resp->public_key.size = 33; memcpy(resp->public_key.bytes, node->public_key, 33); - if (node->public_key[0] == 1) { - /* ed25519 public key */ - resp->public_key.bytes[0] = 0; - } resp->signature.size = 65; msg_write(MessageType_MessageType_SignedIdentity, resp); } else { @@ -225,6 +221,9 @@ void fsm_msgGetECDHSessionKey(const GetECDHSessionKey *msg) { return; } memcpy(resp->public_key.bytes, node->public_key, 33); + if (strcmp(curve, CURVE25519_NAME) == 0) { + resp->public_key.bytes[0] = 0x01; + } resp->public_key.size = 33; resp->has_public_key = true; msg_write(MessageType_MessageType_ECDHSessionKey, resp); diff --git a/legacy/firmware/layout2.c b/legacy/firmware/layout2.c index 530c438eb2..af839b63c9 100644 --- a/legacy/firmware/layout2.c +++ b/legacy/firmware/layout2.c @@ -963,14 +963,8 @@ void layoutAddress(const char *address, const char *desc, bool qrcode, } void layoutPublicKey(const uint8_t *pubkey) { - char desc[16] = {0}; - strlcpy(desc, "Public Key: 00", sizeof(desc)); - if (pubkey[0] == 1) { - /* ed25519 public key */ - // pass - leave 00 - } else { - data2hex(pubkey, 1, desc + 12); - } + char desc[] = "Public Key: 00"; + data2hex(pubkey, 1, desc + 12); const char **str = split_message_hex(pubkey + 1, 32 * 2); layoutDialogSwipe(&bmp_icon_question, NULL, _("Continue"), NULL, desc, str[0], str[1], str[2], str[3], NULL); From 3da9c6bbb9910ce7f8fc29f9c5da758dbb50cb9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 6 Aug 2024 17:07:05 +0200 Subject: [PATCH 514/626] fix(crypto): forbid public key derivation for curve25519, ed25519 and cardano [no changelog] --- crypto/bip32.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crypto/bip32.c b/crypto/bip32.c index cb67834764..b78d31159b 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -209,6 +209,8 @@ int hdnode_private_ckd_bip32(HDNode *inout, uint32_t i) { memcpy(data + 1, inout->private_key, 32); } else { // public derivation if (!inout->curve->params) { + // SLIP-10 doesn't support private key to private key non-hardened + // derivation for curve25519 and ed25519 return 0; } if (hdnode_fill_public_key(inout) != 0) { @@ -321,6 +323,13 @@ int hdnode_public_ckd_cp(const ecdsa_curve *curve, const curve_point *parent, int hdnode_public_ckd(HDNode *inout, uint32_t i) { curve_point parent = {0}, child = {0}; + if (!inout->curve->params) { + // SLIP-10 doesn't support public key to public key derivation for + // curve25519 and ed25519, Cardano BIP32-ed22519 public key to public key + // derivation is not implemented + return 0; + } + if (!ecdsa_read_pubkey(inout->curve->params, inout->public_key, &parent)) { return 0; } From 20f75e001b24e36ab04bc20767d3b1bd77575f5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Wed, 14 Aug 2024 16:44:26 +0200 Subject: [PATCH 515/626] fix(core,legacy): fix curve25519 public key prefix --- core/.changelog.d/4093.changed | 1 + core/src/apps/misc/get_ecdh_session_key.py | 5 +---- legacy/firmware/.changelog.d/4093.changed | 1 + legacy/firmware/fsm_msg_crypto.h | 3 --- tests/device_tests/misc/test_msg_getecdhsessionkey.py | 2 +- 5 files changed, 4 insertions(+), 8 deletions(-) create mode 100644 core/.changelog.d/4093.changed create mode 100644 legacy/firmware/.changelog.d/4093.changed diff --git a/core/.changelog.d/4093.changed b/core/.changelog.d/4093.changed new file mode 100644 index 0000000000..ab2575938f --- /dev/null +++ b/core/.changelog.d/4093.changed @@ -0,0 +1 @@ +Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. diff --git a/core/src/apps/misc/get_ecdh_session_key.py b/core/src/apps/misc/get_ecdh_session_key.py index 1aacc16725..68b55baed1 100644 --- a/core/src/apps/misc/get_ecdh_session_key.py +++ b/core/src/apps/misc/get_ecdh_session_key.py @@ -46,12 +46,10 @@ async def get_ecdh_session_key(msg: GetECDHSessionKey) -> ECDHSessionKey: from trezor.crypto.curve import secp256k1 session_key = secp256k1.multiply(node.private_key(), peer_public_key) - public_key = node.public_key() elif curve_name == "nist256p1": from trezor.crypto.curve import nist256p1 session_key = nist256p1.multiply(node.private_key(), peer_public_key) - public_key = node.public_key() elif curve_name == "curve25519": from trezor.crypto.curve import curve25519 @@ -60,9 +58,8 @@ async def get_ecdh_session_key(msg: GetECDHSessionKey) -> ECDHSessionKey: session_key = b"\x04" + curve25519.multiply( node.private_key(), peer_public_key[1:] ) - public_key = b"\x01" + node.public_key()[1:] else: raise DataError("Unsupported curve for ECDH: " + curve_name) # END ecdh - return ECDHSessionKey(session_key=session_key, public_key=public_key) + return ECDHSessionKey(session_key=session_key, public_key=node.public_key()) diff --git a/legacy/firmware/.changelog.d/4093.changed b/legacy/firmware/.changelog.d/4093.changed new file mode 100644 index 0000000000..ab2575938f --- /dev/null +++ b/legacy/firmware/.changelog.d/4093.changed @@ -0,0 +1 @@ +Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. diff --git a/legacy/firmware/fsm_msg_crypto.h b/legacy/firmware/fsm_msg_crypto.h index 5712371709..7ddaec6c48 100644 --- a/legacy/firmware/fsm_msg_crypto.h +++ b/legacy/firmware/fsm_msg_crypto.h @@ -221,9 +221,6 @@ void fsm_msgGetECDHSessionKey(const GetECDHSessionKey *msg) { return; } memcpy(resp->public_key.bytes, node->public_key, 33); - if (strcmp(curve, CURVE25519_NAME) == 0) { - resp->public_key.bytes[0] = 0x01; - } resp->public_key.size = 33; resp->has_public_key = true; msg_write(MessageType_MessageType_ECDHSessionKey, resp); diff --git a/tests/device_tests/misc/test_msg_getecdhsessionkey.py b/tests/device_tests/misc/test_msg_getecdhsessionkey.py index f09ff530c0..8c38f612b1 100644 --- a/tests/device_tests/misc/test_msg_getecdhsessionkey.py +++ b/tests/device_tests/misc/test_msg_getecdhsessionkey.py @@ -84,5 +84,5 @@ def test_ecdh(client: Client): ) assert ( result.public_key.hex() - == "019753a0738c55c7ba7c17dd4a9a975ce9b0d2b62e8a1ecef4a76767fad99d3c71" + == "009753a0738c55c7ba7c17dd4a9a975ce9b0d2b62e8a1ecef4a76767fad99d3c71" ) From eef4319cda3e30fd39c1ebb38e7a77d81b35a341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Wed, 14 Aug 2024 16:51:18 +0200 Subject: [PATCH 516/626] chore(crypto,legacy,core): add comments about prefixes [no changelog] --- core/src/apps/bitcoin/get_public_key.py | 1 + core/src/apps/misc/get_ecdh_session_key.py | 2 ++ core/src/apps/misc/sign_identity.py | 1 + crypto/bip32.c | 2 ++ legacy/firmware/fsm_msg_coin.h | 3 +++ legacy/firmware/fsm_msg_crypto.h | 6 ++++++ 6 files changed, 15 insertions(+) diff --git a/core/src/apps/bitcoin/get_public_key.py b/core/src/apps/bitcoin/get_public_key.py index 8e7855857b..f852b1d134 100644 --- a/core/src/apps/bitcoin/get_public_key.py +++ b/core/src/apps/bitcoin/get_public_key.py @@ -70,6 +70,7 @@ async def get_public_key( raise wire.DataError("Invalid combination of coin and script_type") pubkey = node.public_key() + # For curve25519 and ed25519, the public key has the prefix 0x00, as specified by SLIP-10. However, since this prefix is non-standard, it may be removed in the future. node_type = HDNodeType( depth=node.depth(), child_num=node.child_num(), diff --git a/core/src/apps/misc/get_ecdh_session_key.py b/core/src/apps/misc/get_ecdh_session_key.py index 68b55baed1..b4403e2610 100644 --- a/core/src/apps/misc/get_ecdh_session_key.py +++ b/core/src/apps/misc/get_ecdh_session_key.py @@ -55,6 +55,7 @@ async def get_ecdh_session_key(msg: GetECDHSessionKey) -> ECDHSessionKey: if peer_public_key[0] != 0x40: raise DataError("Curve25519 public key should start with 0x40") + # The prefix 0x04 doesn't make sense here, and may be changed or removed in the future session_key = b"\x04" + curve25519.multiply( node.private_key(), peer_public_key[1:] ) @@ -62,4 +63,5 @@ async def get_ecdh_session_key(msg: GetECDHSessionKey) -> ECDHSessionKey: raise DataError("Unsupported curve for ECDH: " + curve_name) # END ecdh + # For curve25519, the public key has the prefix 0x00, as specified by SLIP-10. However, since this prefix is non-standard, it may be removed in the future. return ECDHSessionKey(session_key=session_key, public_key=node.public_key()) diff --git a/core/src/apps/misc/sign_identity.py b/core/src/apps/misc/sign_identity.py index 55fd115d04..fd6298a4c0 100644 --- a/core/src/apps/misc/sign_identity.py +++ b/core/src/apps/misc/sign_identity.py @@ -61,6 +61,7 @@ async def sign_identity(msg: SignIdentity) -> SignedIdentity: curve_name, ) + # For ed25519, the public key has the prefix 0x00, as specified by SLIP-10. However, since this prefix is non-standard, it may be removed in the future. return SignedIdentity(address=address, public_key=pubkey, signature=signature) diff --git a/crypto/bip32.c b/crypto/bip32.c index b78d31159b..ee44c24e3c 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -701,6 +701,8 @@ int hdnode_get_shared_key(const HDNode *node, const uint8_t *peer_public_key, *result_size = 65; return 0; } else if (node->curve == &curve25519_info) { + // The prefix 0x04 doesn't make sense here, and may be changed or removed in + // the future session_key[0] = 0x04; if (peer_public_key[0] != 0x40) { return 1; // Curve25519 public key should start with 0x40 byte. diff --git a/legacy/firmware/fsm_msg_coin.h b/legacy/firmware/fsm_msg_coin.h index 1640a19498..b767859b76 100644 --- a/legacy/firmware/fsm_msg_coin.h +++ b/legacy/firmware/fsm_msg_coin.h @@ -75,6 +75,9 @@ void fsm_msgGetPublicKey(const GetPublicKey *msg) { memcpy(resp->node.chain_code.bytes, node->chain_code, 32); resp->node.has_private_key = false; resp->node.public_key.size = 33; + // For curve25519 and ed25519, the public key has the prefix 0x00, as + // specified by SLIP-10. However, since this prefix is non-standard, it may be + // removed in the future. memcpy(resp->node.public_key.bytes, node->public_key, 33); if (coin->xpub_magic && (script_type == InputScriptType_SPENDADDRESS || diff --git a/legacy/firmware/fsm_msg_crypto.h b/legacy/firmware/fsm_msg_crypto.h index 7ddaec6c48..ff5c003e95 100644 --- a/legacy/firmware/fsm_msg_crypto.h +++ b/legacy/firmware/fsm_msg_crypto.h @@ -160,6 +160,9 @@ void fsm_msgSignIdentity(const SignIdentity *msg) { } } resp->public_key.size = 33; + // For ed25519, the public key has the prefix 0x00, as specified by SLIP-10. + // However, since this prefix is non-standard, it may be removed in the + // future. memcpy(resp->public_key.bytes, node->public_key, 33); resp->signature.size = 65; msg_write(MessageType_MessageType_SignedIdentity, resp); @@ -220,6 +223,9 @@ void fsm_msgGetECDHSessionKey(const GetECDHSessionKey *msg) { layoutHome(); return; } + // For curve25519, the public key has the prefix 0x00, as specified by + // SLIP-10. However, since this prefix is non-standard, it may be removed in + // the future. memcpy(resp->public_key.bytes, node->public_key, 33); resp->public_key.size = 33; resp->has_public_key = true; From 2203d9be1ad530af559cd1f7269f1350d0177d3c Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 30 Jul 2024 12:57:36 +0200 Subject: [PATCH 517/626] feat(core/ui): introduce FlowMsg::Text option This commit allows flows to work with ShortString which can be converted to micropython as str. [no changelog] --- core/embed/rust/src/ui/flow/base.rs | 10 +++++++--- core/embed/rust/src/ui/flow/swipe.rs | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index 2e4657b44c..2da6a7348e 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -1,4 +1,7 @@ -use crate::ui::component::{base::AttachType, swipe_detect::SwipeConfig, SwipeDirection}; +use crate::{ + strutil::ShortString, + ui::component::{base::AttachType, swipe_detect::SwipeConfig, SwipeDirection}, +}; pub trait Swipable { fn get_swipe_config(&self) -> SwipeConfig; @@ -11,16 +14,17 @@ pub trait Swipable { /// /// Also currently the type for message emitted by Flow::event to /// micropython. They don't need to be the same. -#[derive(Copy, Clone)] +#[derive(Clone)] pub enum FlowMsg { Confirmed, Cancelled, Info, Choice(usize), + Text(ShortString), } /// Composable event handler result. -#[derive(Copy, Clone)] +#[derive(Clone)] pub enum Decision { /// Do nothing, continue with processing next handler. Nothing, diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index b2a233fe91..d30598562d 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -363,6 +363,11 @@ impl ObjComponent for SwipeFlow { Some(FlowMsg::Choice(i)) => { Ok((crate::ui::layout::result::CONFIRMED.as_obj(), i.try_into()?).try_into()?) } + Some(FlowMsg::Text(s)) => Ok(( + crate::ui::layout::result::CONFIRMED.as_obj(), + s.as_str().try_into()?, + ) + .try_into()?), } } fn obj_paint(&mut self) { From d99a94758be7043987ceee7b54d2efb85bb4bd9a Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 1 Aug 2024 15:22:41 +0200 Subject: [PATCH 518/626] feat(core/mercury): allow passphrase in FlowStore [no changelog] --- .../component/keyboard/passphrase.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 46001f2100..b0b08b0fc3 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -3,8 +3,8 @@ use crate::{ translations::TR, ui::{ component::{ - base::ComponentExt, text::common::TextBox, Component, Event, EventCtx, Label, Maybe, - Never, Swipe, SwipeDirection, + base::ComponentExt, swipe_detect::SwipeConfig, text::common::TextBox, Component, Event, + EventCtx, Label, Maybe, Never, Swipe, SwipeDirection, }, display, geometry::{Alignment, Grid, Insets, Offset, Rect}, @@ -85,6 +85,8 @@ pub struct PassphraseKeyboard { keys: [Button; KEY_COUNT], active_layout: KeyboardLayout, fade: Cell<bool>, + swipe_config: SwipeConfig, // FIXME: how about page_swipe + internal_page_cnt: usize, } const PAGE_COUNT: usize = 4; @@ -140,6 +142,8 @@ impl PassphraseKeyboard { }), active_layout, fade: Cell::new(false), + swipe_config: SwipeConfig::new(), + internal_page_cnt: 1, } } @@ -447,6 +451,17 @@ impl Component for Input { } } +#[cfg(feature = "micropython")] +impl crate::ui::flow::Swipable for PassphraseKeyboard { + fn get_swipe_config(&self) -> SwipeConfig { + self.swipe_config + } + + fn get_internal_page_count(&self) -> usize { + self.internal_page_cnt + } +} + #[cfg(feature = "ui_debug")] impl crate::trace::Trace for PassphraseKeyboard { fn trace(&self, t: &mut dyn crate::trace::Tracer) { From 15526343c9725c37f596a589da85a8632fea3ab3 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 6 Aug 2024 13:37:19 +0200 Subject: [PATCH 519/626] feat(core/mercury): introduce binary_selection This commit adds a Component which prompts a user with a pair of two buttons - left and right. The Component is parametrized by the buttons contents and styles. [no changelog] --- .../component/binary_selection.rs | 90 +++++++++++++++++++ .../src/ui/model_mercury/component/mod.rs | 4 + 2 files changed, 94 insertions(+) create mode 100644 core/embed/rust/src/ui/model_mercury/component/binary_selection.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/binary_selection.rs b/core/embed/rust/src/ui/model_mercury/component/binary_selection.rs new file mode 100644 index 0000000000..3761970795 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/binary_selection.rs @@ -0,0 +1,90 @@ +use crate::ui::{ + component::{Component, Event, EventCtx}, + geometry::{Alignment2D, Offset, Rect}, + shape::Renderer, +}; + +use super::{super::cshape, theme, Button, ButtonContent, ButtonMsg, ButtonStyleSheet}; + +pub enum BinarySelectionMsg { + Left, + Right, +} + +/// Component presenting a binary choice represented as two buttons, left and +/// right. Both buttons are parameterized with content and style. +#[derive(Clone)] +pub struct BinarySelection { + buttons_area: Rect, + button_left: Button, + button_right: Button, +} + +impl BinarySelection { + pub fn new( + left_content: ButtonContent, + right_content: ButtonContent, + left_style: ButtonStyleSheet, + right_style: ButtonStyleSheet, + ) -> Self { + Self { + buttons_area: Rect::zero(), + button_left: Button::new(left_content).styled(left_style), + button_right: Button::new(right_content).styled(right_style), + } + } +} + +impl Component for BinarySelection { + type Msg = BinarySelectionMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + // Ensure reasonable space. Other than that, this component fits itself into any + // bounds. + let bounds_width = bounds.width(); + let bounds_height = bounds.height(); + assert!(bounds_width > 62); + assert!(bounds_height > 30); + + let buttons_area = Rect::snap( + bounds.center(), + Offset::new(bounds_width, theme::BUTTON_HEIGHT.min(bounds_height)), + Alignment2D::CENTER, + ); + let (left_area, _, right_area) = buttons_area.split_center(theme::SPACING); + self.button_left.place(left_area); + self.button_right.place(right_area); + + self.buttons_area = buttons_area; + bounds + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + if let Some(ButtonMsg::Clicked) = self.button_left.event(ctx, event) { + return Some(BinarySelectionMsg::Left); + } + if let Some(ButtonMsg::Clicked) = self.button_right.event(ctx, event) { + return Some(BinarySelectionMsg::Right); + } + None + } + + fn paint(&mut self) { + unimplemented!() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.button_left.render(target); + self.button_right.render(target); + cshape::KeyboardOverlay::new(self.buttons_area).render(target); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for BinarySelection { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("BinarySelection"); + t.child("button_left", &self.button_left); + t.child("button_right", &self.button_right); + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 864a20357d..abb63435e5 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -1,5 +1,7 @@ #[cfg(feature = "translations")] mod address_details; +#[cfg(feature = "ui_overlay")] +mod binary_selection; pub mod bl_confirm; mod button; #[cfg(feature = "translations")] @@ -41,6 +43,8 @@ mod welcome_screen; #[cfg(feature = "translations")] pub use address_details::AddressDetails; +#[cfg(feature = "ui_overlay")] +pub use binary_selection::{BinarySelection, BinarySelectionMsg}; pub use button::{ Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, CancelConfirmMsg, CancelInfoConfirmMsg, IconText, From 2b4d6eb7983eca29db3767de5ad5688339d86a68 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 6 Aug 2024 12:25:58 +0200 Subject: [PATCH 520/626] feat(core/mercury): passphrase confirm empty btn [no changelog] --- .../component/keyboard/passphrase.rs | 51 +++++++++-- .../model_mercury/component/prompt_screen.rs | 4 +- .../model_mercury/component/status_screen.rs | 8 +- .../model_mercury/flow/request_passphrase.rs | 85 +++++++++++++++++++ .../rust/src/ui/model_mercury/theme/mod.rs | 56 ++++++------ 5 files changed, 161 insertions(+), 43 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/flow/request_passphrase.rs diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index b0b08b0fc3..6f3ab77a7b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -79,7 +79,8 @@ pub struct PassphraseKeyboard { input_prompt: Label<'static>, erase_btn: Maybe<Button>, cancel_btn: Maybe<Button>, - confirm_btn: Button, + confirm_btn: Maybe<Button>, + confirm_empty_btn: Maybe<Button>, next_btn: Button, keypad_area: Rect, keys: [Button; KEY_COUNT], @@ -101,13 +102,26 @@ const KEYBOARD: [[&str; KEY_COUNT]; PAGE_COUNT] = [ const MAX_LENGTH: usize = 50; +const CONFIRM_BTN_INSETS: Insets = Insets::new(5, 0, 5, 0); +const CONFIRM_EMPTY_BTN_MARGIN_RIGHT: i16 = 7; +const CONFIRM_EMPTY_BTN_INSETS: Insets = Insets::new(5, CONFIRM_EMPTY_BTN_MARGIN_RIGHT, 5, 0); + impl PassphraseKeyboard { pub fn new() -> Self { let active_layout = KeyboardLayout::LettersLower; let confirm_btn = Button::with_icon(theme::ICON_SIMPLE_CHECKMARK24) .styled(theme::button_passphrase_confirm()) - .with_radius(15); + .with_radius(14) + .with_expanded_touch_area(CONFIRM_BTN_INSETS) + .initially_enabled(false); + let confirm_btn = Maybe::hidden(theme::BG, confirm_btn); + + let confirm_empty_btn = Button::with_icon(theme::ICON_SIMPLE_CHECKMARK24) + .styled(theme::button_passphrase_confirm_empty()) + .with_radius(14) + .with_expanded_touch_area(CONFIRM_EMPTY_BTN_INSETS); + let confirm_empty_btn = Maybe::visible(theme::BG, confirm_empty_btn); let next_btn = Button::new(active_layout.next().into()) .styled(theme::button_passphrase_next()) @@ -133,6 +147,7 @@ impl PassphraseKeyboard { erase_btn, cancel_btn, confirm_btn, + confirm_empty_btn, next_btn, keypad_area: Rect::zero(), keys: KEYBOARD[active_layout.to_usize().unwrap()].map(|text| { @@ -199,6 +214,10 @@ impl PassphraseKeyboard { // When the input is empty, enable cancel button. Otherwise show erase and // confirm button. let is_empty = self.input.textbox.is_empty(); + self.confirm_btn.show_if(ctx, !is_empty); + self.confirm_btn.inner_mut().enable_if(ctx, !is_empty); + self.confirm_empty_btn.show_if(ctx, is_empty); + self.confirm_empty_btn.inner_mut().enable_if(ctx, is_empty); self.erase_btn.show_if(ctx, !is_empty); self.erase_btn.inner_mut().enable_if(ctx, !is_empty); self.cancel_btn.show_if(ctx, is_empty); @@ -253,18 +272,22 @@ impl Component for PassphraseKeyboard { fn place(&mut self, bounds: Rect) -> Rect { const CONFIRM_BTN_WIDTH: i16 = 78; + const CONFIRM_EMPTY_BTN_WIDTH: i16 = 32; const INPUT_INSETS: Insets = Insets::new(10, 2, 10, 4); - const CONFIRM_BTN_INSETS: Insets = Insets::new(5, 0, 5, 0); let bounds = bounds.inset(theme::borders()); let (top_area, keypad_area) = bounds.split_bottom(4 * theme::PASSPHRASE_BUTTON_HEIGHT + 3 * theme::BUTTON_SPACING); self.keypad_area = keypad_area; let (input_area, confirm_btn_area) = top_area.split_right(CONFIRM_BTN_WIDTH); + let confirm_empty_btn_area = confirm_btn_area + .split_right(CONFIRM_EMPTY_BTN_WIDTH + CONFIRM_EMPTY_BTN_MARGIN_RIGHT) + .1; let top_area = top_area.inset(INPUT_INSETS); let input_area = input_area.inset(INPUT_INSETS); let confirm_btn_area = confirm_btn_area.inset(CONFIRM_BTN_INSETS); + let confirm_empty_btn_area = confirm_empty_btn_area.inset(CONFIRM_EMPTY_BTN_INSETS); let key_grid = Grid::new(keypad_area, 4, 3).with_spacing(theme::BUTTON_SPACING); let next_btn_area = key_grid.cell(11); @@ -276,6 +299,7 @@ impl Component for PassphraseKeyboard { // control buttons self.confirm_btn.place(confirm_btn_area); + self.confirm_empty_btn.place(confirm_empty_btn_area); self.next_btn.place(next_btn_area); self.erase_btn.place(erase_cancel_area); self.cancel_btn.place(erase_cancel_area); @@ -310,9 +334,17 @@ impl Component for PassphraseKeyboard { if let Some(ButtonMsg::Clicked) = self.next_btn.event(ctx, event) { self.on_page_change(ctx, SwipeDirection::Left); } + + // Confirm button was clicked, we're done. + if let Some(ButtonMsg::Clicked) = self.confirm_empty_btn.event(ctx, event) { + return Some(PassphraseKeyboardMsg::Confirmed(unwrap!( + ShortString::try_from(self.passphrase()) + ))); + } if let Some(ButtonMsg::Clicked) = self.confirm_btn.event(ctx, event) { - // Confirm button was clicked, we're done. - return Some(PassphraseKeyboardMsg::Confirmed); + return Some(PassphraseKeyboardMsg::Confirmed(unwrap!( + ShortString::try_from(self.passphrase()) + ))); } if let Some(ButtonMsg::Clicked) = self.cancel_btn.event(ctx, event) { // Cancel button is visible and clicked, cancel @@ -365,12 +397,13 @@ impl Component for PassphraseKeyboard { fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { self.input.render(target); self.next_btn.render(target); - self.erase_btn.render(target); - self.confirm_btn.render(target); if self.input.textbox.is_empty() { + self.confirm_empty_btn.render(target); self.cancel_btn.render(target); - // FIXME: when prompt fixed in Figma - // self.input_prompt.render(target); + self.input_prompt.render(target); + } else { + self.confirm_btn.render(target); + self.erase_btn.render(target); } for btn in &self.keys { btn.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 4937c1f894..86a0840e38 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -30,7 +30,7 @@ impl PromptScreen { theme::GREEN, theme::GREY_EXTRA_DARK, theme::GREEN_LIGHT, - theme::ICON_SIMPLE_CHECKMARK, + theme::ICON_SIMPLE_CHECKMARK30, )) } @@ -40,7 +40,7 @@ impl PromptScreen { theme::ORANGE_LIGHT, theme::GREY_EXTRA_DARK, theme::ORANGE_DIMMED, - theme::ICON_SIMPLE_CHECKMARK, + theme::ICON_SIMPLE_CHECKMARK30, )) } diff --git a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs index 59aad748a9..d4145a30b4 100644 --- a/core/embed/rust/src/ui/model_mercury/component/status_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/status_screen.rs @@ -167,7 +167,7 @@ impl StatusScreen { pub fn new_success(msg: TString<'static>) -> Self { Self::new( - theme::ICON_SIMPLE_CHECKMARK, + theme::ICON_SIMPLE_CHECKMARK30, theme::GREEN_LIME, theme::GREEN_LIGHT, DismissType::SwipeUp, @@ -177,7 +177,7 @@ impl StatusScreen { pub fn new_success_timeout(msg: TString<'static>) -> Self { Self::new( - theme::ICON_SIMPLE_CHECKMARK, + theme::ICON_SIMPLE_CHECKMARK30, theme::GREEN_LIME, theme::GREEN_LIGHT, DismissType::Timeout(Timeout::new(TIMEOUT_MS)), @@ -187,7 +187,7 @@ impl StatusScreen { pub fn new_neutral(msg: TString<'static>) -> Self { Self::new( - theme::ICON_SIMPLE_CHECKMARK, + theme::ICON_SIMPLE_CHECKMARK30, theme::GREY_EXTRA_LIGHT, theme::GREY_DARK, DismissType::SwipeUp, @@ -197,7 +197,7 @@ impl StatusScreen { pub fn new_neutral_timeout(msg: TString<'static>) -> Self { Self::new( - theme::ICON_SIMPLE_CHECKMARK, + theme::ICON_SIMPLE_CHECKMARK30, theme::GREY_EXTRA_LIGHT, theme::GREY_DARK, DismissType::Timeout(Timeout::new(TIMEOUT_MS)), diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_passphrase.rs b/core/embed/rust/src/ui/model_mercury/flow/request_passphrase.rs new file mode 100644 index 0000000000..53f47e2b64 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/request_passphrase.rs @@ -0,0 +1,85 @@ +use crate::{ + error, + micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + strutil::{ShortString, TString}, + translations::TR, + ui::{ + component::{ComponentExt, SwipeDirection}, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, + }, + layout::obj::LayoutObj, + }, +}; + +use super::super::component::{ + Frame, FrameMsg, PassphraseKeyboard, PassphraseKeyboardMsg, PromptMsg, PromptScreen, +}; + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum RequestPassphrase { + Keypad, + ConfirmEmpty, +} + +impl FlowState for RequestPassphrase { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, _direction: SwipeDirection) -> StateChange { + self.do_nothing() + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (Self::Keypad, FlowMsg::Text(s)) => { + if s.is_empty() { + Self::ConfirmEmpty.transit() + } else { + self.return_msg(FlowMsg::Text(s)) + } + } + (Self::Keypad, FlowMsg::Cancelled) => self.return_msg(FlowMsg::Cancelled), + (Self::ConfirmEmpty, FlowMsg::Cancelled) => Self::Keypad.transit(), + (Self::ConfirmEmpty, FlowMsg::Confirmed) => { + self.return_msg(FlowMsg::Text(ShortString::new())) + } + _ => self.do_nothing(), + } + } +} + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_request_passphrase(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, RequestPassphrase::new_obj) } +} + +impl RequestPassphrase { + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let _prompt: TString = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; + let _max_len: u32 = kwargs.get(Qstr::MP_QSTR_max_len)?.try_into()?; + + let content_confirm_empty = Frame::left_aligned( + TR::passphrase__continue_with_empty_passphrase.into(), + PromptScreen::new_yes_or_no(), + ) + .map(|msg| match msg { + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let content_keypad = PassphraseKeyboard::new().map(|msg| match msg { + PassphraseKeyboardMsg::Confirmed(s) => Some(FlowMsg::Text(s)), + PassphraseKeyboardMsg::Cancelled => Some(FlowMsg::Cancelled), + }); + + let res = SwipeFlow::new(&RequestPassphrase::Keypad)? + .with_page(&RequestPassphrase::Keypad, content_keypad)? + .with_page(&RequestPassphrase::ConfirmEmpty, content_confirm_empty)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index de5370b19e..c38a6f1ec6 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -78,7 +78,7 @@ include_icon!(ICON_CONFIRM_INPUT, "model_mercury/res/confirm_input30.toif"); include_icon!(ICON_DELETE, "model_mercury/res/delete30.toif"); include_icon!(ICON_MENU, "model_mercury/res/menu30.toif"); include_icon!( - ICON_SIMPLE_CHECKMARK, + ICON_SIMPLE_CHECKMARK30, "model_mercury/res/simple_checkmark30.toif" ); include_icon!(ICON_SIGN, "model_mercury/res/sign30.toif"); @@ -301,33 +301,6 @@ pub const fn button_confirm() -> ButtonStyleSheet { } } -// TODO: delete -pub const fn button_cancel() -> ButtonStyleSheet { - ButtonStyleSheet { - normal: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: ORANGE_LIGHT, - icon_color: GREY_LIGHT, - background_color: BG, - }, - active: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: ORANGE_DIMMED, - icon_color: GREY_LIGHT, - background_color: BG, - }, - disabled: &ButtonStyle { - font: Font::BOLD, - text_color: GREY_LIGHT, - button_color: ORANGE_DIMMED, - icon_color: GREY_LIGHT, - background_color: BG, - }, - } -} - pub const fn button_danger() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { @@ -490,6 +463,33 @@ pub const fn button_passphrase_confirm() -> ButtonStyleSheet { } } +pub const fn button_passphrase_confirm_empty() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: GREY, + button_color: GREY_EXTRA_DARK, + icon_color: GREY, + background_color: BG, + }, + active: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: BG, + button_color: GREY_LIGHT, + icon_color: BG, + background_color: GREY_LIGHT, + }, + // not used + disabled: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: BG, + button_color: BG, + icon_color: BG, + background_color: BG, + }, + } +} + pub const fn button_passphrase_next() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { From 60ad7219fe94fc943dd866a6073f3be4315e82f5 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 7 Aug 2024 17:46:16 +0200 Subject: [PATCH 521/626] refactor(core): use PromptMsg instead of Option<> PromptScreen now uses dedicated PromptMsg with Confirmed and Cancelled values instead of empty Option<>. This change affects only mercury code. This is more explicit and enables "yes" or "no" prompts screens. Otherwise, the "no" option was handled by the 'x' button handled by Frame. [no changelog] --- .../src/ui/model_mercury/component/mod.rs | 2 +- .../model_mercury/component/prompt_screen.rs | 51 ++++++++++++++--- .../ui/model_mercury/flow/confirm_action.rs | 14 +++-- .../flow/confirm_firmware_update.rs | 5 +- .../ui/model_mercury/flow/confirm_output.rs | 7 ++- .../ui/model_mercury/flow/confirm_reset.rs | 8 ++- .../model_mercury/flow/confirm_set_new_pin.rs | 5 +- .../ui/model_mercury/flow/confirm_summary.rs | 10 +++- .../model_mercury/flow/continue_recovery.rs | 8 ++- .../src/ui/model_mercury/flow/get_address.rs | 10 ++-- .../ui/model_mercury/flow/prompt_backup.rs | 6 +- .../ui/model_mercury/flow/set_brightness.rs | 13 +++-- .../ui/model_mercury/flow/show_tutorial.rs | 17 ++++-- .../rust/src/ui/model_mercury/theme/mod.rs | 56 ++++++++++++++----- 14 files changed, 150 insertions(+), 62 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index abb63435e5..ca675a03a5 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -76,7 +76,7 @@ pub use number_input::{NumberInputDialog, NumberInputDialogMsg}; pub use number_input_slider::NumberInputSliderDialog; pub use progress::Progress; #[cfg(feature = "translations")] -pub use prompt_screen::PromptScreen; +pub use prompt_screen::{PromptMsg, PromptScreen}; pub use result::{ResultFooter, ResultScreen, ResultStyle}; pub use scroll::ScrollBar; #[cfg(feature = "translations")] diff --git a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs index 86a0840e38..214f603c48 100644 --- a/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs +++ b/core/embed/rust/src/ui/model_mercury/component/prompt_screen.rs @@ -1,18 +1,26 @@ use crate::ui::{ component::{Component, Event, EventCtx}, geometry::Rect, - model_mercury::theme, shape::Renderer, }; -use super::{HoldToConfirm, TapToConfirm}; +use super::{super::theme, BinarySelection, ButtonContent, HoldToConfirm, TapToConfirm}; /// Component requesting an action from a user. Most typically embedded as a -/// content of a Frame and promptin "Tap to confirm" or "Hold to XYZ". +/// content of a Frame. Options are: +/// - Tap to confirm +/// - Hold to confirm +/// - Yes/No selection #[derive(Clone)] pub enum PromptScreen { Tap(TapToConfirm), Hold(HoldToConfirm), + Choose(BinarySelection), +} + +pub enum PromptMsg { + Confirmed, + Cancelled, } impl PromptScreen { @@ -53,23 +61,50 @@ impl PromptScreen { theme::ICON_CHEVRON_RIGHT, )) } + + pub fn new_yes_or_no() -> Self { + PromptScreen::Choose(BinarySelection::new( + ButtonContent::Icon(theme::ICON_CLOSE), + ButtonContent::Icon(theme::ICON_SIMPLE_CHECKMARK30), + theme::button_cancel(), + theme::button_confirm(), + )) + } } impl Component for PromptScreen { - type Msg = (); + type Msg = PromptMsg; fn place(&mut self, bounds: Rect) -> Rect { match self { PromptScreen::Tap(t) => t.place(bounds), PromptScreen::Hold(h) => h.place(bounds), + PromptScreen::Choose(c) => c.place(bounds), } } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { match self { - PromptScreen::Tap(t) => t.event(ctx, event), - PromptScreen::Hold(h) => h.event(ctx, event), + PromptScreen::Tap(_) | PromptScreen::Hold(_) => { + let res = match self { + PromptScreen::Tap(t) => t.event(ctx, event), + PromptScreen::Hold(h) => h.event(ctx, event), + _ => None, + }; + if res.is_some() { + return Some(PromptMsg::Confirmed); + } + } + PromptScreen::Choose(c) => { + if let Some(res) = c.event(ctx, event) { + match res { + super::BinarySelectionMsg::Left => return Some(PromptMsg::Cancelled), + super::BinarySelectionMsg::Right => return Some(PromptMsg::Confirmed), + } + } + } } + None } fn paint(&mut self) { @@ -80,6 +115,7 @@ impl Component for PromptScreen { match self { PromptScreen::Tap(t) => t.render(target), PromptScreen::Hold(h) => h.render(target), + PromptScreen::Choose(c) => c.render(target), } } } @@ -90,7 +126,8 @@ impl crate::trace::Trace for PromptScreen { t.component("PromptScreen"); match self { PromptScreen::Tap(c) => t.child("TapToConfirm", c), - PromptScreen::Hold(c) => t.child("HoldToConfirm", c), + PromptScreen::Hold(h) => t.child("HoldToConfirm", h), + PromptScreen::Choose(c) => t.child("ChooseBinarySelection", c), } } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs index 9788a48a11..7450fbdfe5 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_action.rs @@ -1,7 +1,3 @@ -use super::super::{ - component::{Frame, FrameMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg}, - theme, -}; use crate::{ error, error::Error, @@ -23,6 +19,13 @@ use crate::{ }, }; +use super::super::{ + component::{ + Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, + }, + theme, +}; + #[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmAction { Intro, @@ -287,8 +290,9 @@ fn create_confirm( } let content_confirm = content_confirm.map(move |msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, }); flow.with_page(&ConfirmAction::Confirm, content_confirm) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs index f0e6e1182e..99a1b7c7fd 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs @@ -19,7 +19,7 @@ use crate::{ use super::super::{ component::{ - CancelInfoConfirmMsg, Frame, FrameMsg, PromptScreen, SwipeContent, VerticalMenu, + CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, }, theme, @@ -130,8 +130,9 @@ impl ConfirmFirmwareUpdate { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, }); let res = SwipeFlow::new(&ConfirmFirmwareUpdate::Intro)? diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index 8ec5e35a39..26c30a081d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -11,14 +11,14 @@ use crate::{ FlowMsg, FlowState, SwipeFlow, }, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, }, }; use super::{ super::{ component::{ - AddressDetails, Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + AddressDetails, Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, + VerticalMenuChoiceMsg, }, theme, }, @@ -139,8 +139,9 @@ impl ConfirmOutput { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + _ => None, }); let res = SwipeFlow::new(&ConfirmOutput::Address)? diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs index e3ba7742b3..424eb31e8d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_reset.rs @@ -15,12 +15,13 @@ use crate::{ FlowMsg, FlowState, SwipeFlow, }, layout::obj::LayoutObj, - model_mercury::component::{PromptScreen, SwipeContent}, }, }; use super::super::{ - component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, + component::{ + Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, + }, theme, }; @@ -155,8 +156,9 @@ fn new_confirm_reset_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Erro .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, }) .one_button_request(ButtonRequestCode::ResetDevice.with_name("confirm_setup_device")); diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs index 0ed39821da..87cd2546d7 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs @@ -20,7 +20,8 @@ use crate::{ use super::super::{ component::{ - CancelInfoConfirmMsg, Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, VerticalMenu, + VerticalMenuChoiceMsg, }, theme, }; @@ -128,7 +129,7 @@ impl SetNewPin { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index 85988c048c..f128180e0f 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -17,7 +17,9 @@ use crate::{ use super::{ super::{ - component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + component::{ + Frame, FrameMsg, PromptMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + }, theme, }, util::ShowInfoParams, @@ -107,8 +109,9 @@ impl ConfirmSummary { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, }); // Menu @@ -151,8 +154,9 @@ impl ConfirmSummary { .with_footer(TR::instructions__tap_to_confirm.into(), None) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + _ => None, }); let res = SwipeFlow::new(&ConfirmSummary::Summary)? diff --git a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs index 2988ee15a0..218dc50387 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs @@ -16,12 +16,14 @@ use crate::{ FlowMsg, FlowState, SwipeFlow, }, layout::obj::LayoutObj, - model_mercury::component::{CancelInfoConfirmMsg, PromptScreen, SwipeContent}, }, }; use super::super::{ - component::{Frame, FrameMsg, VerticalMenu, VerticalMenuChoiceMsg}, + component::{ + CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, + VerticalMenuChoiceMsg, + }, theme, }; @@ -206,7 +208,7 @@ impl ContinueRecoveryBeforeShares { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 7eaede6f75..7033341e3c 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -15,14 +15,13 @@ use crate::{ FlowMsg, FlowState, SwipeFlow, SwipePage, }, layout::{obj::LayoutObj, util::ConfirmBlob}, - model_mercury::component::SwipeContent, }, }; use super::super::{ component::{ - AddressDetails, CancelInfoConfirmMsg, Frame, FrameMsg, PromptScreen, StatusScreen, - VerticalMenu, VerticalMenuChoiceMsg, + AddressDetails, CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, + StatusScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -143,8 +142,9 @@ impl GetAddress { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, }); let content_confirmed = Frame::left_aligned( @@ -216,7 +216,7 @@ impl GetAddress { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index 899a0040b3..87d404d647 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -14,13 +14,13 @@ use crate::{ FlowMsg, FlowState, SwipeFlow, }, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, }, }; use super::super::{ component::{ - CancelInfoConfirmMsg, Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, + VerticalMenuChoiceMsg, }, theme, }; @@ -132,7 +132,7 @@ impl PromptBackup { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs index 1e2e470dd0..d069e032f5 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs @@ -13,15 +13,15 @@ use crate::{ FlowState, SwipeFlow, }, layout::obj::LayoutObj, - model_mercury::component::{ - number_input_slider::{NumberInputSliderDialog, NumberInputSliderDialogMsg}, - SwipeContent, - }, }, }; use super::super::{ - component::{Frame, FrameMsg, PromptScreen, StatusScreen, VerticalMenu, VerticalMenuChoiceMsg}, + component::{ + number_input_slider::{NumberInputSliderDialog, NumberInputSliderDialogMsg}, + Frame, FrameMsg, PromptMsg, PromptScreen, StatusScreen, SwipeContent, VerticalMenu, + VerticalMenuChoiceMsg, + }, theme, }; @@ -113,11 +113,12 @@ impl SetBrightness { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) .map(move |msg| match msg { - FrameMsg::Content(()) => { + FrameMsg::Content(PromptMsg::Confirmed) => { let _ = storage::set_brightness(BRIGHTNESS.load(Ordering::Relaxed)); Some(FlowMsg::Confirmed) } FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, }); let content_confirmed = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs index 75f1f1f872..27d9d20fb0 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/show_tutorial.rs @@ -13,12 +13,13 @@ use crate::{ FlowMsg, FlowState, SwipeFlow, }, layout::obj::LayoutObj, - model_mercury::component::SwipeContent, }, }; use super::super::{ - component::{Frame, FrameMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, + component::{ + Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, + }, theme, }; @@ -85,7 +86,9 @@ impl ShowTutorial { SwipeContent::new(PromptScreen::new_tap_to_start()), ) .with_footer(TR::instructions__tap_to_start.into(), None) - .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); + .map(|msg| { + matches!(msg, FrameMsg::Content(PromptMsg::Confirmed)).then_some(FlowMsg::Confirmed) + }); let content_step_begin = Frame::left_aligned( TR::tutorial__title_lets_begin.into(), @@ -138,7 +141,9 @@ impl ShowTutorial { SwipeContent::new(PromptScreen::new_hold_to_confirm()), ) .with_footer(TR::instructions__hold_to_exit_tutorial.into(), None) - .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); + .map(|msg| { + matches!(msg, FrameMsg::Content(PromptMsg::Confirmed)).then_some(FlowMsg::Confirmed) + }); let content_step_done = Frame::left_aligned( TR::tutorial__title_well_done.into(), @@ -182,7 +187,9 @@ impl ShowTutorial { SwipeContent::new(PromptScreen::new_hold_to_confirm_danger()), ) .with_footer(TR::instructions__hold_to_exit_tutorial.into(), None) - .map(|msg| matches!(msg, FrameMsg::Content(())).then_some(FlowMsg::Confirmed)); + .map(|msg| { + matches!(msg, FrameMsg::Content(PromptMsg::Confirmed)).then_some(FlowMsg::Confirmed) + }); let res = SwipeFlow::new(&ShowTutorial::StepWelcome)? .with_page(&ShowTutorial::StepWelcome, content_step_welcome)? diff --git a/core/embed/rust/src/ui/model_mercury/theme/mod.rs b/core/embed/rust/src/ui/model_mercury/theme/mod.rs index c38a6f1ec6..0c8580f54a 100644 --- a/core/embed/rust/src/ui/model_mercury/theme/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/theme/mod.rs @@ -274,28 +274,56 @@ pub const fn button_warning_low() -> ButtonStyleSheet { } } -// TODO: delete +// TODO: somehow merge with button_passphrase_confirm? pub const fn button_confirm() -> ButtonStyleSheet { ButtonStyleSheet { normal: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: GREEN, - icon_color: GREY_LIGHT, - background_color: BG, + font: Font::DEMIBOLD, + text_color: GREEN_LIME, + button_color: GREEN_DARK, + icon_color: GREEN_LIME, + background_color: GREEN_DARK, }, active: &ButtonStyle { - font: Font::BOLD, - text_color: FG, - button_color: GREEN_DARK, - icon_color: GREY_LIGHT, + font: Font::DEMIBOLD, + text_color: GREEN_LIME, + button_color: GREEN_LIGHT, + icon_color: GREEN_DARK, + background_color: GREEN_LIGHT, + }, + // not used + disabled: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: BG, + button_color: BG, + icon_color: BG, background_color: BG, }, + } +} + +pub const fn button_cancel() -> ButtonStyleSheet { + ButtonStyleSheet { + normal: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: ORANGE_LIGHT, + button_color: ORANGE_DARK, + icon_color: ORANGE_LIGHT, + background_color: GREEN_DARK, + }, + active: &ButtonStyle { + font: Font::DEMIBOLD, + text_color: ORANGE_DARK, + button_color: ORANGE_LIGHT, + icon_color: ORANGE_DARK, + background_color: ORANGE_LIGHT, + }, + // not used disabled: &ButtonStyle { - font: Font::BOLD, - text_color: GREY_LIGHT, - button_color: GREEN_DARK, - icon_color: GREY_LIGHT, + font: Font::DEMIBOLD, + text_color: BG, + button_color: BG, + icon_color: BG, background_color: BG, }, } From 50dc26516275f380899456eec1d9931b3738a404 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 2 Aug 2024 11:52:45 +0200 Subject: [PATCH 522/626] feat(core/mercury): impl flow_request_passphrase This commit replaces request_passphrase with flow_request_passphrase. The added benefit is that the user is prompted for confirmation if they want to proceed with an empty passphrase. --- core/.changelog.d/4054.added | 1 + core/embed/rust/librust_qstr.h | 2 ++ .../generated/translated_string.rs | 3 ++ .../component/keyboard/passphrase.rs | 4 +-- .../rust/src/ui/model_mercury/flow/mod.rs | 2 ++ .../embed/rust/src/ui/model_mercury/layout.rs | 30 +++--------------- core/mocks/generated/trezorui2.pyi | 2 +- core/mocks/trezortranslate_keys.pyi | 1 + .../src/trezor/ui/layouts/mercury/__init__.py | 16 ++++++++-- core/translations/en.json | 1 + core/translations/order.json | 3 +- tests/buttons.py | 31 ++++++++++--------- tests/click_tests/test_passphrase_mercury.py | 5 ++- tests/input_flows.py | 2 +- 14 files changed, 55 insertions(+), 48 deletions(-) create mode 100644 core/.changelog.d/4054.added diff --git a/core/.changelog.d/4054.added b/core/.changelog.d/4054.added new file mode 100644 index 0000000000..9abac987df --- /dev/null +++ b/core/.changelog.d/4054.added @@ -0,0 +1 @@ +[T3T1] Added reassuring screen when entering empty passphrase diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 6d6aaa6d61..ad8a9e0a75 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -248,6 +248,7 @@ static void _librust_qstrs(void) { MP_QSTR_flow_get_address; MP_QSTR_flow_prompt_backup; MP_QSTR_flow_request_number; + MP_QSTR_flow_request_passphrase; MP_QSTR_flow_show_share_words; MP_QSTR_flow_warning_hi_prio; MP_QSTR_get_language; @@ -346,6 +347,7 @@ static void _librust_qstrs(void) { MP_QSTR_paint; MP_QSTR_passphrase__access_wallet; MP_QSTR_passphrase__always_on_device; + MP_QSTR_passphrase__continue_with_empty_passphrase; MP_QSTR_passphrase__from_host_not_shown; MP_QSTR_passphrase__hide; MP_QSTR_passphrase__next_screen_will_show_passphrase; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 0729a15eec..5ac8a98c19 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1357,6 +1357,7 @@ pub enum TranslatedString { words__title_done = 956, // "Done" reset__slip39_checklist_more_info_threshold = 957, // "The threshold sets the minumum number of shares needed to recover your wallet." reset__slip39_checklist_more_info_threshold_example_template = 958, // "If you set {0} out of {1} shares, you'll need {2} backup shares to recover your wallet." + passphrase__continue_with_empty_passphrase = 959, // "Continue with empty passphrase?" } impl TranslatedString { @@ -2708,6 +2709,7 @@ impl TranslatedString { Self::words__title_done => "Done", Self::reset__slip39_checklist_more_info_threshold => "The threshold sets the minumum number of shares needed to recover your wallet.", Self::reset__slip39_checklist_more_info_threshold_example_template => "If you set {0} out of {1} shares, you'll need {2} backup shares to recover your wallet.", + Self::passphrase__continue_with_empty_passphrase => "Continue with empty passphrase?", } } @@ -4060,6 +4062,7 @@ impl TranslatedString { Qstr::MP_QSTR_words__title_done => Some(Self::words__title_done), Qstr::MP_QSTR_reset__slip39_checklist_more_info_threshold => Some(Self::reset__slip39_checklist_more_info_threshold), Qstr::MP_QSTR_reset__slip39_checklist_more_info_threshold_example_template => Some(Self::reset__slip39_checklist_more_info_threshold_example_template), + Qstr::MP_QSTR_passphrase__continue_with_empty_passphrase => Some(Self::passphrase__continue_with_empty_passphrase), _ => None, } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 6f3ab77a7b..94aad186bb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -1,5 +1,5 @@ use crate::{ - strutil::TString, + strutil::{ShortString, TString}, translations::TR, ui::{ component::{ @@ -26,7 +26,7 @@ use core::cell::Cell; use num_traits::ToPrimitive; pub enum PassphraseKeyboardMsg { - Confirmed, + Confirmed(ShortString), Cancelled, } diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index a5e3397bb7..962e989726 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -8,6 +8,7 @@ pub mod continue_recovery; pub mod get_address; pub mod prompt_backup; pub mod request_number; +pub mod request_passphrase; pub mod set_brightness; pub mod show_share_words; pub mod show_tutorial; @@ -25,6 +26,7 @@ pub use continue_recovery::new_continue_recovery; pub use get_address::GetAddress; pub use prompt_backup::PromptBackup; pub use request_number::RequestNumber; +pub use request_passphrase::RequestPassphrase; pub use set_brightness::SetBrightness; pub use show_share_words::ShowShareWords; pub use show_tutorial::ShowTutorial; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 815ba43bce..646eab2e3e 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -4,10 +4,9 @@ use super::{ component::{ AddressDetails, Bip39Input, Button, CancelConfirmMsg, CancelInfoConfirmMsg, CoinJoinProgress, FidoConfirm, FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, - Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PassphraseKeyboard, - PassphraseKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, - SelectWordCount, SelectWordCountMsg, Slip39Input, StatusScreen, SwipeUpScreen, - SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, + Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PinKeyboard, + PinKeyboardMsg, Progress, PromptScreen, SelectWordCount, SelectWordCountMsg, Slip39Input, + StatusScreen, SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, }, flow, theme, }; @@ -124,15 +123,6 @@ impl ComponentMsgObj for PinKeyboard<'_> { } } -impl ComponentMsgObj for PassphraseKeyboard { - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - PassphraseKeyboardMsg::Confirmed => self.passphrase().try_into(), - PassphraseKeyboardMsg::Cancelled => Ok(CANCELLED.as_obj()), - } - } -} - impl<T> ComponentMsgObj for MnemonicKeyboard<T> where T: MnemonicInput, @@ -954,16 +944,6 @@ extern "C" fn new_request_pin(n_args: usize, args: *const Obj, kwargs: *mut Map) unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_request_passphrase(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let _prompt: TString = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; - let _max_len: u32 = kwargs.get(Qstr::MP_QSTR_max_len)?.try_into()?; - let obj = LayoutObj::new(PassphraseKeyboard::new())?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_request_bip39(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let prompt: TString = kwargs.get(Qstr::MP_QSTR_prompt)?.try_into()?; @@ -1570,13 +1550,13 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Request pin on device.""" Qstr::MP_QSTR_request_pin => obj_fn_kw!(0, new_request_pin).as_obj(), - /// def request_passphrase( + /// def flow_request_passphrase( /// *, /// prompt: str, /// max_len: int, /// ) -> LayoutObj[str | UiResult]: /// """Passphrase input keyboard.""" - Qstr::MP_QSTR_request_passphrase => obj_fn_kw!(0, new_request_passphrase).as_obj(), + Qstr::MP_QSTR_flow_request_passphrase => obj_fn_kw!(0, flow::request_passphrase::new_request_passphrase).as_obj(), /// def request_bip39( /// *, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index a928e89580..290cc53d10 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -349,7 +349,7 @@ def request_pin( # rust/src/ui/model_mercury/layout.rs -def request_passphrase( +def flow_request_passphrase( *, prompt: str, max_len: int, diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 511b8c3543..d2a24425bc 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -487,6 +487,7 @@ class TR: nem__unknown_mosaic: str = "Unknown mosaic!" passphrase__access_wallet: str = "Access passphrase wallet?" passphrase__always_on_device: str = "Always enter your passphrase on Trezor?" + passphrase__continue_with_empty_passphrase: str = "Continue with empty passphrase?" passphrase__from_host_not_shown: str = "Passphrase provided by host will be used but will not be displayed due to the device settings." passphrase__hide: str = "Hide passphrase coming from host?" passphrase__next_screen_will_show_passphrase: str = "The next screen shows your passphrase." diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index dd92777d4f..b224329187 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -1374,7 +1374,7 @@ def show_wait_text(message: str) -> None: async def request_passphrase_on_device(max_len: int) -> str: result = await interact( RustLayout( - trezorui2.request_passphrase( + trezorui2.flow_request_passphrase( prompt=TR.passphrase__title_enter, max_len=max_len ) ), @@ -1384,8 +1384,18 @@ async def request_passphrase_on_device(max_len: int) -> str: if result is CANCELLED: raise ActionCancelled("Passphrase entry cancelled") - assert isinstance(result, str) - return result + if __debug__: + if not isinstance(result, tuple): + # TODO: DebugLink problem, better comment or solution? + result = (CONFIRMED, str(result)) + + status, value = result + if status == CONFIRMED: + assert isinstance(value, str) + return value + else: + # flow_request_pin returns either CANCELLED or (CONFIRMED, str) so this branch shouldn't be taken + raise ActionCancelled("Passphrase entry cancelled") async def request_pin_on_device( diff --git a/core/translations/en.json b/core/translations/en.json index b2292633a2..3faf93793f 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -489,6 +489,7 @@ "nem__unknown_mosaic": "Unknown mosaic!", "passphrase__access_wallet": "Access passphrase wallet?", "passphrase__always_on_device": "Always enter your passphrase on Trezor?", + "passphrase__continue_with_empty_passphrase": "Continue with empty passphrase?", "passphrase__from_host_not_shown": "Passphrase provided by host will be used but will not be displayed due to the device settings.", "passphrase__wallet": "Passphrase wallet", "passphrase__hide": "Hide passphrase coming from host?", diff --git a/core/translations/order.json b/core/translations/order.json index 9349b9a858..cf4b8424ad 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -957,5 +957,6 @@ "955": "brightness__change_title", "956": "words__title_done", "957": "reset__slip39_checklist_more_info_threshold", - "958": "reset__slip39_checklist_more_info_threshold_example_template" + "958": "reset__slip39_checklist_more_info_threshold_example_template", + "959": "passphrase__continue_with_empty_passphrase" } diff --git a/tests/buttons.py b/tests/buttons.py index b1a290e399..8de58cfcb9 100644 --- a/tests/buttons.py +++ b/tests/buttons.py @@ -13,6 +13,20 @@ def grid(dim: int, grid_cells: int, cell: int) -> int: return cell * step + ofs +def grid35(x: int, y: int) -> Coords: + return grid(DISPLAY_WIDTH, 3, x), grid(DISPLAY_HEIGHT, 5, y) + + +def grid34(x: int, y: int) -> Coords: + return grid(DISPLAY_WIDTH, 3, x), grid(DISPLAY_HEIGHT, 4, y) + + +def _grid34_from_index(idx: int) -> Coords: + grid_x = idx % 3 + grid_y = idx // 3 + 1 # first line is empty + return grid34(grid_x, grid_y) + + LEFT = grid(DISPLAY_WIDTH, 3, 0) MID = grid(DISPLAY_WIDTH, 3, 1) RIGHT = grid(DISPLAY_WIDTH, 3, 2) @@ -31,6 +45,9 @@ def grid(dim: int, grid_cells: int, cell: int) -> int: CONFIRM_WORD = (MID, TOP) TOP_ROW = (MID, TOP) +MERCURY_YES = grid34(2, 2) +MERCURY_NO = grid34(0, 2) + def reset_minus(model_internal_name: str) -> Coords: RESET_MINUS_T3T1 = (LEFT, grid(DISPLAY_HEIGHT, 5, 3)) @@ -109,20 +126,6 @@ def pin_passphrase_grid(idx: int) -> Coords: return grid35(grid_x, grid_y) -def grid35(x: int, y: int) -> Coords: - return grid(DISPLAY_WIDTH, 3, x), grid(DISPLAY_HEIGHT, 5, y) - - -def grid34(x: int, y: int) -> Coords: - return grid(DISPLAY_WIDTH, 3, x), grid(DISPLAY_HEIGHT, 4, y) - - -def _grid34_from_index(idx: int) -> Coords: - grid_x = idx % 3 - grid_y = idx // 3 + 1 # first line is empty - return grid34(grid_x, grid_y) - - def type_word(word: str, is_slip39: bool = False) -> Iterator[Coords]: if is_slip39: yield from _type_word_slip39(word) diff --git a/tests/click_tests/test_passphrase_mercury.py b/tests/click_tests/test_passphrase_mercury.py index 23343d95f7..7f37d334d4 100644 --- a/tests/click_tests/test_passphrase_mercury.py +++ b/tests/click_tests/test_passphrase_mercury.py @@ -168,8 +168,11 @@ def input_passphrase(debug: "DebugLink", passphrase: str, check: bool = True) -> def enter_passphrase(debug: "DebugLink") -> None: """Enter a passphrase""" - coords = buttons.grid35(2, 0) # top-right corner + is_empty: bool = len(debug.read_layout().passphrase()) == 0 + coords = buttons.CORNER_BUTTON # top-right corner debug.click(coords, wait=True) + if is_empty: + debug.click(buttons.MERCURY_YES) def delete_char(debug: "DebugLink") -> None: diff --git a/tests/input_flows.py b/tests/input_flows.py index 14545bd7f9..03353899ce 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -1597,7 +1597,7 @@ def input_flow_t3t1(self) -> BRGeneratorType: # Mnemonic phrases self.mnemonics = yield from load_N_shares(self.debug, 5) - br = yield # safety warning + br = yield # success screen assert br.code == B.Success self.debug.press_yes() From 80792eae5a4982817b3878ca988f8bd9179bebec Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 7 Aug 2024 23:33:37 +0200 Subject: [PATCH 523/626] chore(core): regenerate lang jsons [no changelog] --- core/translations/cs.json | 4 ++-- core/translations/de.json | 4 ++-- core/translations/en.json | 20 ++++++++++---------- core/translations/es.json | 4 ++-- core/translations/fr.json | 4 ++-- core/translations/signatures.json | 6 +++--- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index a122c18fc1..061084351f 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -33,7 +33,7 @@ }, "header": { "language": "cs-CZ", - "version": "2.8.1" + "version": "2.8.2" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktujte naši podporu na", @@ -519,7 +519,6 @@ "passphrase__access_wallet": "Otev. passphrase pen.?", "passphrase__always_on_device": "Vždy zadávat passphrase na Trezoru?", "passphrase__from_host_not_shown": "Použije se passphrase zadaná hostitelem, ale vzhledem k nastavení zařízení se nezobrazí.", - "passphrase__wallet": "Passphrase pen.", "passphrase__hide": "Skrýt passphrase od hostitele?", "passphrase__next_screen_will_show_passphrase": "Na další obrazovce se zobrazí vaše passphrase.", "passphrase__please_enter": "Zadejte passphrase.", @@ -532,6 +531,7 @@ "passphrase__title_source": "Zdroj passphrase", "passphrase__turn_off": "Vypnout ochranu s passphrase?", "passphrase__turn_on": "Zapnout ochranu s passphrase?", + "passphrase__wallet": "Passphrase pen.", "pin__cancel_description": "Pokračovat bez PIN kódu", "pin__cancel_info": "Bez PIN kódu může k tomuto zařízení přistupovat kdokoli.", "pin__cancel_setup": "Zrušit nastavení PIN kódu", diff --git a/core/translations/de.json b/core/translations/de.json index a7d608f008..9abad7d31e 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -33,7 +33,7 @@ }, "header": { "language": "de-DE", - "version": "2.8.1" + "version": "2.8.2" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktiere den Trezor Support unter", @@ -519,7 +519,6 @@ "passphrase__access_wallet": "Passphr. Wall. öffnen?", "passphrase__always_on_device": "Deine Passphrase immer auf dem Trezor eingeben?", "passphrase__from_host_not_shown": "Passphrase vom Host wird verwendet, wegen Geräteeinstellungen aber nicht angezeigt.", - "passphrase__wallet": "Passphrase Wallet", "passphrase__hide": "Passphrase vom Host ausblenden?", "passphrase__next_screen_will_show_passphrase": "Der nächste Bildschirm zeigt deine Passphrase.", "passphrase__please_enter": "Gib deine Passphrase ein.", @@ -532,6 +531,7 @@ "passphrase__title_source": "Passphrasen-quelle", "passphrase__turn_off": "Passphrasenschutz deaktivieren?", "passphrase__turn_on": "Passphrasenschutz aktivieren?", + "passphrase__wallet": "Passphrase Wallet", "pin__cancel_description": "Ohne PIN fortfahren", "pin__cancel_info": "Ohne PIN kann jeder auf dieses Gerät zugreifen.", "pin__cancel_setup": "PIN-Einrichtung abbrechen", diff --git a/core/translations/en.json b/core/translations/en.json index 3faf93793f..b7a6d2bcf6 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -1,7 +1,7 @@ { "header": { "language": "en-US", - "version": "2.8.1" + "version": "2.8.2" }, "translations": { "addr_mismatch__contact_support_at": "Please contact Trezor support at", @@ -81,9 +81,9 @@ "bitcoin__unverified_external_inputs": "The transaction contains unverified external inputs.", "bitcoin__valid_signature": "The signature is valid.", "bitcoin__voting_rights": "Voting rights to:", - "brightness__title": "Display brightness", "brightness__change_title": "Change display brightness", "brightness__changed_title": "Display brightness changed", + "brightness__title": "Display brightness", "buttons__abort": "Abort", "buttons__access": "Access", "buttons__again": "Again", @@ -360,6 +360,9 @@ "haptic_feedback__title": "Haptic feedback", "homescreen__click_to_connect": "Click to Connect", "homescreen__click_to_unlock": "Click to Unlock", + "homescreen__set_default": "Change wallpaper to default image?", + "homescreen__settings_subtitle": "Settings", + "homescreen__settings_title": "Homescreen", "homescreen__title_backup_failed": "Backup failed", "homescreen__title_backup_needed": "Backup needed", "homescreen__title_coinjoin_authorized": "Coinjoin authorized", @@ -368,9 +371,6 @@ "homescreen__title_pin_not_set": "PIN not set", "homescreen__title_seedless": "Seedless", "homescreen__title_set": "Change wallpaper", - "homescreen__settings_title": "Homescreen", - "homescreen__settings_subtitle": "Settings", - "homescreen__set_default": "Change wallpaper to default image?", "inputs__back": "BACK", "inputs__cancel": "CANCEL", "inputs__delete": "DELETE", @@ -389,8 +389,8 @@ "instructions__learn_more": "Learn more", "instructions__shares_continue_with_x_template": "Continue with Share #{0}", "instructions__shares_start_with_1": "Start with share #1", - "instructions__swipe_up": "Swipe up", "instructions__swipe_horizontally": "Swipe horizontally", + "instructions__swipe_up": "Swipe up", "instructions__tap_to_confirm": "Tap to confirm", "instructions__tap_to_start": "Tap to start", "joint__title": "Joint transaction", @@ -491,7 +491,6 @@ "passphrase__always_on_device": "Always enter your passphrase on Trezor?", "passphrase__continue_with_empty_passphrase": "Continue with empty passphrase?", "passphrase__from_host_not_shown": "Passphrase provided by host will be used but will not be displayed due to the device settings.", - "passphrase__wallet": "Passphrase wallet", "passphrase__hide": "Hide passphrase coming from host?", "passphrase__next_screen_will_show_passphrase": "The next screen shows your passphrase.", "passphrase__please_enter": "Please enter your passphrase.", @@ -504,6 +503,7 @@ "passphrase__title_source": "Passphrase source", "passphrase__turn_off": "Turn off passphrase protection?", "passphrase__turn_on": "Turn on passphrase protection?", + "passphrase__wallet": "Passphrase wallet", "pin__cancel_description": "Continue without PIN", "pin__cancel_info": "Without a PIN, anyone can access this device.", "pin__cancel_setup": "Cancel PIN setup", @@ -860,8 +860,8 @@ "tutorial__did_you_know": "Did you know?", "tutorial__exit": "Exit tutorial", "tutorial__first_wallet": "The Trezor Model One, created in 2013,\nwas the world's first hardware wallet.", - "tutorial__lets_begin": "Learn how to use and navigate this device with ease.", "tutorial__get_started": "Get started!", + "tutorial__lets_begin": "Learn how to use and navigate this device with ease.", "tutorial__menu": "Find context-specific actions and options in the menu.", "tutorial__middle_click": "Press both left and right at the same\ntime to confirm.", "tutorial__press_and_hold": "Press and hold the right button to\napprove important operations.", @@ -871,11 +871,11 @@ "tutorial__scroll_down": "Press right to scroll down to read all content when text doesn't fit on one screen.\n\rPress left to scroll up.", "tutorial__sure_you_want_skip": "Are you sure you\nwant to skip the tutorial?", "tutorial__swipe_up_and_down": "Swipe up & down\nto move through screens.", + "tutorial__title_easy_navigation": "Easy navigation", "tutorial__title_handy_menu": "Handy menu", "tutorial__title_hello": "Hello", "tutorial__title_hold": "Hold to confirm important actions", "tutorial__title_lets_begin": "Let's begin", - "tutorial__title_easy_navigation": "Easy navigation", "tutorial__title_screen_scroll": "Screen scroll", "tutorial__title_skip": "Skip tutorial", "tutorial__title_tutorial_complete": "Tutorial complete", @@ -943,13 +943,13 @@ "words__sign": "Sign", "words__signer": "Signer", "words__title_check": "Check", + "words__title_done": "Done", "words__title_group": "Group", "words__title_information": "Information", "words__title_remember": "Remember", "words__title_share": "Share", "words__title_shares": "Shares", "words__title_success": "Success", - "words__title_done": "Done", "words__title_summary": "Summary", "words__title_threshold": "Threshold", "words__try_again": "Try again.", diff --git a/core/translations/es.json b/core/translations/es.json index 2cc75cae2f..2bd98dc917 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -33,7 +33,7 @@ }, "header": { "language": "es-ES", - "version": "2.8.1" + "version": "2.8.2" }, "translations": { "addr_mismatch__contact_support_at": "Contacta con atención al cliente de Trezor en", @@ -519,7 +519,6 @@ "passphrase__access_wallet": "¿Ir al monedero frase contr.?", "passphrase__always_on_device": "¿Introduces siempre la frase de contraseña en Trezor?", "passphrase__from_host_not_shown": "Se usará la frase de contraseña dada por el host, pero no se verá debido a la configuración.", - "passphrase__wallet": "Monedero frase contr.", "passphrase__hide": "¿Ocultar la frase de contraseña del host?", "passphrase__next_screen_will_show_passphrase": "La siguiente pantalla muestra la frase de contraseña.", "passphrase__please_enter": "Escribe la frase de contraseña.", @@ -532,6 +531,7 @@ "passphrase__title_source": "Origen frase contr.", "passphrase__turn_off": "¿Desactivar la protección por frase de contraseña?", "passphrase__turn_on": "¿Activar la protección por frase de contraseña?", + "passphrase__wallet": "Monedero frase contr.", "pin__cancel_description": "Continuar sin PIN", "pin__cancel_info": "Sin un PIN, cualquiera puede acceder al dispositivo.", "pin__cancel_setup": "Cancelar configuración de PIN", diff --git a/core/translations/fr.json b/core/translations/fr.json index 536eb6ca20..56aae9ed8e 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -33,7 +33,7 @@ }, "header": { "language": "fr-FR", - "version": "2.8.1" + "version": "2.8.2" }, "translations": { "addr_mismatch__contact_support_at": "Contactez l'assistance Trezor à l'adr.", @@ -519,7 +519,6 @@ "passphrase__access_wallet": "Accès portef. phrase secr. ?", "passphrase__always_on_device": "Saisissez toujours votre phrase secrète sur Trezor ?", "passphrase__from_host_not_shown": "La phrase secrète fournie par l'hôte sera utilisée, mais pas affichée en raison des paramètres du disp.", - "passphrase__wallet": "Portef. phrase secr.", "passphrase__hide": "Masq. phrase secrète de l'hôte ?", "passphrase__next_screen_will_show_passphrase": "L'écran suivant affiche votre phrase secrète.", "passphrase__please_enter": "Saisissez votre phrase secrète.", @@ -532,6 +531,7 @@ "passphrase__title_source": "Source phrase secr.", "passphrase__turn_off": "Désactiver la prot. par phrase secrète ?", "passphrase__turn_on": "Activer la prot. par phrase secrète ?", + "passphrase__wallet": "Portef. phrase secr.", "pin__cancel_description": "Continuer sans PIN", "pin__cancel_info": "Sans PIN, tout le monde peut accéder à ce dispositif.", "pin__cancel_setup": "Annuler la configuration du PIN", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 6ff7391c35..4bfa570137 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "61467ac92c2678b624b2d9ab6d37d4a0ec01a44b5542261c19406cc674d71142", - "datetime": "2024-07-30T14:58:52.679738", - "commit": "39300036083657236e241da6f57f9a78269814e7" + "merkle_root": "14c1d561c00b83c685a89d37be68d94dae0fb8b88835d346c877e6246fe022e3", + "datetime": "2024-08-07T21:19:23.594799", + "commit": "0a6b0baa2790360902f9a451f595325f9c8c1fb0" }, "history": [ { From b7dc557bfa08e1a2e8583bacf364c1489635706b Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Thu, 8 Aug 2024 19:16:08 +0200 Subject: [PATCH 524/626] feat(core): slight change of passphrase copy Usage of different copy in mercury (especially titles and subtitles) requires moving the layout code deeper into the model specifics. [no changelog] --- core/src/apps/management/apply_settings.py | 46 ++++++------------- .../src/trezor/ui/layouts/mercury/__init__.py | 42 +++++++++++++++++ core/src/trezor/ui/layouts/tr/__init__.py | 40 +++++++++++++++- core/src/trezor/ui/layouts/tt/__init__.py | 40 +++++++++++++++- core/translations/signatures.json | 4 +- 5 files changed, 135 insertions(+), 37 deletions(-) diff --git a/core/src/apps/management/apply_settings.py b/core/src/apps/management/apply_settings.py index 1f06cd1e18..2c98479604 100644 --- a/core/src/apps/management/apply_settings.py +++ b/core/src/apps/management/apply_settings.py @@ -147,33 +147,24 @@ async def _require_confirm_change_label(label: str) -> None: async def _require_confirm_change_passphrase(use: bool) -> None: - description = TR.passphrase__turn_on if use else TR.passphrase__turn_off - verb = TR.buttons__turn_on if use else TR.buttons__turn_off - await confirm_action( - "set_passphrase", - TR.passphrase__title_settings, - description=description, - verb=verb, - br_code=BRT_PROTECT_CALL, - prompt_screen=True, - ) + from trezor.ui.layouts import confirm_change_passphrase + + await confirm_change_passphrase(use) + + +async def _require_confirm_hide_passphrase_from_host(enable: bool) -> None: + from trezor.ui.layouts import confirm_hide_passphrase_from_host + + if enable: + await confirm_hide_passphrase_from_host() async def _require_confirm_change_passphrase_source( passphrase_always_on_device: bool, ) -> None: - description = ( - TR.passphrase__always_on_device - if passphrase_always_on_device - else TR.passphrase__revoke_on_device - ) - await confirm_action( - "set_passphrase_source", - TR.passphrase__title_source, - description=description, - br_code=BRT_PROTECT_CALL, - prompt_screen=True, - ) + from trezor.ui.layouts import confirm_change_passphrase_source + + await confirm_change_passphrase_source(passphrase_always_on_device) async def _require_confirm_change_display_rotation(rotation: int) -> None: @@ -263,17 +254,6 @@ async def _require_confirm_experimental_features(enable: bool) -> None: ) -async def _require_confirm_hide_passphrase_from_host(enable: bool) -> None: - if enable: - await confirm_action( - "set_hide_passphrase_from_host", - TR.passphrase__title_hide, - description=TR.passphrase__hide, - br_code=BRT_PROTECT_CALL, - prompt_screen=True, - ) - - if utils.USE_HAPTIC: async def _require_confirm_haptic_feedback(enable: bool) -> None: diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index b224329187..5b83080d7f 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -446,6 +446,48 @@ def confirm_homescreen( ) +def confirm_change_passphrase(use: bool) -> Awaitable[None]: + description = TR.passphrase__turn_on if use else TR.passphrase__turn_off + + return confirm_action( + "set_passphrase", + TR.passphrase__title_passphrase, + subtitle=TR.words__settings, + description=description, + br_code=ButtonRequestType.ProtectCall, + prompt_screen=True, + ) + + +def confirm_hide_passphrase_from_host() -> Awaitable[None]: + return confirm_action( + "set_hide_passphrase_from_host", + TR.passphrase__title_passphrase, + subtitle=TR.words__settings, + description=TR.passphrase__hide, + br_code=ButtonRequestType.ProtectCall, + prompt_screen=True, + ) + + +def confirm_change_passphrase_source( + passphrase_always_on_device: bool, +) -> Awaitable[None]: + description = ( + TR.passphrase__always_on_device + if passphrase_always_on_device + else TR.passphrase__revoke_on_device + ) + return confirm_action( + "set_passphrase_source", + TR.passphrase__title_passphrase, + subtitle=TR.words__settings, + description=description, + br_code=ButtonRequestType.ProtectCall, + prompt_screen=True, + ) + + async def show_address( address: str, *, diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 446322fbf4..54b32b464b 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -394,7 +394,7 @@ def confirm_action( reverse: bool = False, exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_CODE_OTHER, - prompt_screen: bool = False, + prompt_screen: bool = False, # unused on TR prompt_title: str | None = None, ) -> Awaitable[None]: verb = verb or TR.buttons__confirm # def_arg @@ -536,6 +536,44 @@ def confirm_homescreen(image: bytes) -> Awaitable[None]: ) +def confirm_change_passphrase(use: bool) -> Awaitable[None]: + description = TR.passphrase__turn_on if use else TR.passphrase__turn_off + verb = TR.buttons__turn_on if use else TR.buttons__turn_off + + return confirm_action( + "set_passphrase", + TR.passphrase__title_settings, + description=description, + verb=verb, + br_code=ButtonRequestType.ProtectCall, + ) + + +def confirm_hide_passphrase_from_host() -> Awaitable[None]: + return confirm_action( + "set_hide_passphrase_from_host", + TR.passphrase__title_hide, + description=TR.passphrase__hide, + br_code=ButtonRequestType.ProtectCall, + ) + + +def confirm_change_passphrase_source( + passphrase_always_on_device: bool, +) -> Awaitable[None]: + description = ( + TR.passphrase__always_on_device + if passphrase_always_on_device + else TR.passphrase__revoke_on_device + ) + return confirm_action( + "set_passphrase_source", + TR.passphrase__title_source, + description=description, + br_code=ButtonRequestType.ProtectCall, + ) + + async def show_address( address: str, *, diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index f7ef29c1e9..f7253b6d7c 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -303,7 +303,7 @@ def confirm_action( reverse: bool = False, exc: ExceptionType = ActionCancelled, br_code: ButtonRequestType = BR_CODE_OTHER, - prompt_screen: bool = False, + prompt_screen: bool = False, # unused on TT prompt_title: str | None = None, ) -> Awaitable[None]: if description is not None and description_param is not None: @@ -469,6 +469,44 @@ def confirm_homescreen(image: bytes) -> Awaitable[None]: ) +def confirm_change_passphrase(use: bool) -> Awaitable[None]: + description = TR.passphrase__turn_on if use else TR.passphrase__turn_off + verb = TR.buttons__turn_on if use else TR.buttons__turn_off + + return confirm_action( + "set_passphrase", + TR.passphrase__title_settings, + description=description, + verb=verb, + br_code=ButtonRequestType.ProtectCall, + ) + + +def confirm_hide_passphrase_from_host() -> Awaitable[None]: + return confirm_action( + "set_hide_passphrase_from_host", + TR.passphrase__title_hide, + description=TR.passphrase__hide, + br_code=ButtonRequestType.ProtectCall, + ) + + +def confirm_change_passphrase_source( + passphrase_always_on_device: bool, +) -> Awaitable[None]: + description = ( + TR.passphrase__always_on_device + if passphrase_always_on_device + else TR.passphrase__revoke_on_device + ) + return confirm_action( + "set_passphrase_source", + TR.passphrase__title_source, + description=description, + br_code=ButtonRequestType.ProtectCall, + ) + + async def show_address( address: str, *, diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 4bfa570137..faf8f88322 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { "merkle_root": "14c1d561c00b83c685a89d37be68d94dae0fb8b88835d346c877e6246fe022e3", - "datetime": "2024-08-07T21:19:23.594799", - "commit": "0a6b0baa2790360902f9a451f595325f9c8c1fb0" + "datetime": "2024-08-09T07:44:08.162423", + "commit": "89a3ce360514eff165fe0fcb0c2a218b88d85e07" }, "history": [ { From 9b7ce3c84febf535974ad88a52b6304e84b5005a Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 21 Aug 2024 23:49:58 +0200 Subject: [PATCH 525/626] chore: update fixtures.json [no changelog] --- tests/ui_tests/fixtures.json | 250 +++++++++++++++++------------------ 1 file changed, 125 insertions(+), 125 deletions(-) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index d9ae9c9df8..306f9f5193 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15335,9 +15335,9 @@ "click_tests": { "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "099531de60d33afa60963920e8a24f681000a9d2fc894a143cc85eeae5005903", "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "6fb9950f982f955fcad67f32f3a5d1171dbe674eea5c00263abc45efc38e0005", -"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "b8a0cb4db6773e4eaf22692fa612f8dd3a3ea405470d7bbd2d8c92495d7ac158", +"T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "aa7e12d0fc686046e24460dd1e025540c910427b7efda5f7730baeda6a1605fa", "T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "43293b55a181cc8f65a4b5252909a0a46582ae9db33686bc24e8e34760490a0b", -"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "e254663f0c687fefa01943561aaf750306e39848f95ae7b78cf2cd79436ae965", +"T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "41ecf1502524f1ea58f60bd6bcb41783262b1e95dbbc74768817725212a1878f", "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "dedee62f34cb9fb82b76b57229afdeb633cad520ee417f8379ed40728aa48ddd", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "662fdecae7643270921e0c96105ad326d5421693d0f92471494f4af31a31e751", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "6b09e1ad5594138a7f01ef8f1e89adbc3b52e112421eb295e296dde22e7e0bfb", @@ -15345,20 +15345,20 @@ "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "df8ec8be03b23f9b05214deec6b515e11ef85f64896237a729f35b8f1dcdaddf", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "26b92c6ca41c2ccf46f1c094026c91897c8022236aca9f71f58df0720e9709d7", "T3T1_cs_test_lock.py::test_hold_to_lock": "1824eb2d9867a82fb99174bac6ef8a906a0d6bf11381e0939091fee8a9c10b45", -"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "c0484f9fc8330a6b20dc91301055efae626a5e76ec9e7468dcba419d32a0f4cd", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "0078ab0cc308d8959b25975908abd5f850c12fa48e59fd060873312acac0caea", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "aa1c703ce6bac8716dd4cda9e4a2c0e955555353057ba8d938f6e59073c59ab4", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "ef916afedf3afce94c1120bfb82b7f171c32dd71dc47a8682d5f5323e8cb68da", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "193d2a739c4f5413044fd126c4ce5f9b2fe5b912cfc0bbeb9453ebd334a3506f", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "694b29572e463958d157c62c1a1611fa6e3b3e801cde7cf75ee03ae4534887e1", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "abc4b57e1cab65eb18b397b0dadac309d66fab38c2cc5420f7ee3c4bc561f176", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "5095caf10d42c8da15dc25d919324fc84af2bef32ff0c9f1d1319bd4490d4a4b", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "36c891311e423f6c8072c68b9990e8b59fe1ac5523e524f4d1b1960015408cc5", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "1621822d063f997293591b09c98c360fb180e3744fcbfd702532be782023a379", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "36c891311e423f6c8072c68b9990e8b59fe1ac5523e524f4d1b1960015408cc5", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "f7a06a49928018b7306fec51ddb79f01ce71131b025ccf0ab445432a5ba5a13c", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "728142e1432d28cf599c079f1259f44a8e1c4159501d1ea150216092892029ba", -"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "afd3b52112e14e14356a12b252f1fb42abe74267f97fd5c7ddef8ade7a35d672", +"T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "0573c7df09b4df05e6720b7fcb0614fbcbe4f3149e1049265cc2f6b246524a39", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "3682359cf58e22162b229cb45085606606b6a4d59c1304e59c572e04452367fb", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete": "b91578e2e4831088066639cb532c430f32a6c210722a695d042bbce161205346", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_delete_all": "f8939a634ac39bcdf6ea50c825ce417e8ee4db707dc2e211eb8530fae71de9bb", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "28c729440f8559207f4a268a0f5d32d3388a73f1d92e7c0dc4c5992edcb21b0b", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "7b108024e829b22fce4cd1b3aec9a07ed8232490486c2688a03a9aad1cea08bb", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "7b57ae796c46c57aeeedee8606f63ddefd82ea84ff02f76b9c2550608c553eed", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "35b0e256861b6c58fc760360b267c7b3fef4cd113f830c86d8aa38b748cdb7ef", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "7801d6f6613f91f51811b0ff573e28b31e8504ef67bfc3695ac6b59a2702b189", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "f8a7bacf84c54f9a2d076536a32b27b6bd4c7c435c7765e45af4f6572e4e7edf", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "7801d6f6613f91f51811b0ff573e28b31e8504ef67bfc3695ac6b59a2702b189", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "2ff1a9bfb493d719564a7978f0b9c696f0c127be960e4e1c516d60320158205f", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "02c2a8e753de9b51a77aedee98c91536d26b963095e914684b904e5bad45ec65", +"T3T1_cs_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "537d1de05e8074d8b24eb2c2be83837281df655d5359160e7e4b4b04fea358a5", "T3T1_cs_test_pin.py::test_pin_cancel": "ad3a70c37900c5720a7c5a8ad991940160b50e2f4f88d7cadfbd5fa3fd64792d", "T3T1_cs_test_pin.py::test_pin_change": "3c588124808bb72d6f8abfe871c225da69154a23d36f73fbe35adc635bea19d7", "T3T1_cs_test_pin.py::test_pin_delete_hold": "e3e0aff2edcecb8e8533fe6d99ffec871736ffcb26ae718adc270ad43239c441", @@ -15384,9 +15384,9 @@ "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6adc38c7b058994cda3e904674c0f40f30515a03068fe356e0633618c8cfce3d", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3f2cb64c585744ec1d3b2115e53663869aaf8005e3371a681de72d32a37f3c09", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "945e5b4d0f325e3da850dc37c75b175458c4f8d44a50adfac540f171277e04f1", -"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "6c0fdcf2d29233b9bb4162a1e42a261196b99a3f0aae065e29b985607f3fba5d", +"T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a3e97d19a9b9e966091b25801ad44bfc09d2ca02cf6ed540825a287fc77a353d", "T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "26a5707dbb0a5c6e9149af85c6af56dc62a91cfdf93085b188159306c8932c5e", -"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "42192f5f1d2ca9604b778d36eb303cf5b02601ae478d6ae9fb9e7348ee85d90d", +"T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "6ff4145d8507d852fd5d9ead68dfe26bdc69b4a9638231dd5bf33b7f1f96dca7", "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "68c3185780d8976ede424a042d7a9bf093c1825d8049babb0a406bb5ae7a33b0", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d7ad4444a3691a2c5891a1d6e5fb142540915048968a9381a09b227beaaad8e2", "T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "966025defcd879d831ef6b7a1bf0331f62d4f1d9a27872dafd3c9ba72d49cef2", @@ -15394,20 +15394,20 @@ "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c795f8c0157c9ed4f774e3a13d0d641ec35a6e7f434a411693ecfa43ee24e408", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "493123029d3377e1cf2cff566a30c441bc194e5fbd601262d71567e4f9e08754", "T3T1_de_test_lock.py::test_hold_to_lock": "b2136906b71a65f5e949f79e80f381b44a5b87e59f67f23ee22767abb588dfcf", -"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "576c4416a551f6d25aa15a49ef6c8f465b917b735040cf841f7eef0c48ebfa62", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "388b692a537e83fcf6ed945e0735d602f6511275a2efe055195f10ed43a4207c", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "9cf841827bf4a657adb1e75d727ff9331f9307e854e1ffe430c5c9c5b4d2e228", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "63ac613b82297d22d719be6982f0052dab53220ffcb9b0d7d9fd0f7c68e97b08", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "749cd522e5f0a7afdcd8ca341fced2a5905d34f697f8e06b4116ec106a0ff3e5", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "0bb0f6acdfd7669c99fd449d299725ee92720fe7ba78cd06fdddfea8b897c4ee", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "09cef1a136def3f447646077917ddb4d30efbd44b7f7b68aa3e7f2153d88ec60", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "0daca82918358df02cb3bea39d8058adbe4b621d5fba1e576449ae9909877dfd", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "710693a61ffc28c6debc3741e70ea9f113118f0e0987a57e9d26dd55ea96ac8a", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "78fb72b99d26944ad2e95bbb66a54016916567c42826f5b908dd6d834b9b41f4", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "710693a61ffc28c6debc3741e70ea9f113118f0e0987a57e9d26dd55ea96ac8a", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "4a70e9b7f56937f8a859f74e8f9d5a1b8728f6d0a97ef885fbb3c0a0b64e63cf", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "a6405a19b8ea78c744502c9c7dc0f59b103a0cf18b5ac7172432fa3fe2b2c136", -"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "5add02f25d1d1b500ad05b5cfbfe6cd3c47f7fcb744803b242f6645c895170a1", +"T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "647c3264abafcab0cae3878325582d584bca258d0d65ad8391d2e34b67f41db9", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "759f4b7a9c06322d0a83aec0690da7456538dca361579c7403ec71fce2477798", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete": "f5243283aa9b9c33fdd1885a04b34d011ac93024504eba1fc75e7f13700f3457", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_delete_all": "db9a3a5b6ad0db54323c7ac2c3294629476ac6daa7cbe88a2ad56ad28974a6bc", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "91e9a504e5c03c8e7d74e401b92c2f3e080e4bcf4aec973a5e655bbe4e705663", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "2664a8c8c18ed6ef426017c1d70b037fe18f8c3f28101257bd38dc4d3d7ea5db", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "ab473513be76bbccda3abd29d9fdd7c0e83ff84b796266d42f77380220a091e7", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "9244bcbb4f5e5516cded981b8f291bdb476f49283005b1f85f8bc7ee2d1b1ed7", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "994c0a61e2ef464d3ed0631185fed77046c74ae95e50b8ab413a5f68440b36cd", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "43b0889e9fdadcf535ed52d7774e2cddaef43e04b8439a9ce9af4ced141c7c75", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "994c0a61e2ef464d3ed0631185fed77046c74ae95e50b8ab413a5f68440b36cd", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "e6fb5f312a1d4fa07dcc2861b90c4065c8fe3ee5e8ec14f5b05519041274976a", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "abe1f50a44223faffc17cb11039f524a89eb00e25a4cff08951c874d9cc9a722", +"T3T1_de_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "276df72c9ad0179754baf2f1c369b972dc625a64277ddb03994eb51769a4b67c", "T3T1_de_test_pin.py::test_pin_cancel": "6f240d48b47ae0351c37101cc7cf29b14679595539a1347caca4b0858f9a8cad", "T3T1_de_test_pin.py::test_pin_change": "6816b4493a1a917065e124910fc3ccc4c5514e94b3b3c8983924b25450bacdc7", "T3T1_de_test_pin.py::test_pin_delete_hold": "1b074f169bb04573da6198862ea48f72dd50fafc1ed1d61dbe255272931065aa", @@ -15433,9 +15433,9 @@ "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b6e655e54ada9b19245920eeffe2eb757512c80dcd949d318a06e77d205d1e01", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3c731b042fc2e0b2f86391320f30937310cb6dc147057691bc14f52b73e597d7", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a28905faec2a54e67df6f9c67a94dd84ed76fc976ca4e8b60bf2cc7f6ce3415c", -"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "130b0259aec5a8d067c8e826b590bec66eecbfc1d8b30bbdee979c3cfe21935c", +"T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "b77e0edc22959c2d16a403b1742e911e27c7eb2da10736a5969d66583fd04d4c", "T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f1b5162e62e0fc8de8b0096111da724a0852236c4d5f539ec81c5270376e00b5", -"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "a418248cfe49d474ebbbbae6fb45a7acbb4f33e528070a3a98092c07f678e19b", +"T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "7278bf0c1a5344022802e0381d38e837abe00ab413a863345dd36c94a629c330", "T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "a4053424e407160dda2095cebac34065565afb4201092e1b80a702a2536cdefd", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "36114e7a5d1f1e35206dbfd3d129b7816b4b240faa2ce243dc6e16a57d764f28", "T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "7bf68edf1ffc0d6d01503f25d2266d3c5ba0d856d28c44ae592b3947761bc12a", @@ -15443,20 +15443,20 @@ "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c2fa7e451ceee2968fb6568949bf1c0ca108e9ab04d74192c491d3fbc2ce735c", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "fc9482440dc8a8176d69f88544b16a52232e51de1fce70425e48160fb3c29471", "T3T1_en_test_lock.py::test_hold_to_lock": "0dd53e59ef70d6b20ad463f16ae28ad18472cd7e26e5bf61eae78b05cb395009", -"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "96fb5c5ad65e0a5eab087fba30e610acd46549cc626f39a339c7b0140cefa3bb", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "857b81f2ef01eef0e2faeaa9b98885c916b769026e16744fcab1c48c1e6c74ef", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "dd1789231e6733fdfaec5f1f1c1479e551d7dac3e1b24686d935802ae4aa6f20", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "e7e9cd481bf8ac3f47812600f0ec0639bb5b3fdaad5e08846345e372ef5b8cf6", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "978569cfc68853d67c89f6f3417303b00d79e67747e296e4f4917226646ce555", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "35c0c81b1d6dc8bc5d45791e7dc970525f2f2546f6b30796cddf0be78ae079eb", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "a7a5715f05772ab16ea56b635c7ad4591817cbc3d84efa784e22853c10512e75", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "94cda7276826c3d88d7c10cd323f77c7f30f1386274fb41678b09bc99a890529", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "0e36c57eb04de1dd5bf5ddfddf067d67eb732d2034bc492057fa3891b7336766", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "dbc51bf6df20ecc63c119ccdb2757418f0c3c3336136e51ff9eb89b3fc301728", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "0e36c57eb04de1dd5bf5ddfddf067d67eb732d2034bc492057fa3891b7336766", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "61aff24f0bf2cce74b2723c0d3c0a869591d7fcdae28bd1774c902c721757ae0", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "8d82e7fb61640bb3f7270ab809b9bb8f5b4374e09de87259878d6de41aa615ad", -"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "77a6388005e15f3a687b53daea153f3c35d177f12c0df13735e0a7ea3f08bf48", +"T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "fd4a49419a8083ccd6ece805feaecc7b25e7be2939af6f05da6cea756d415ae3", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "e16d25609a3814be571e75056db6870cd4f8c511b943a62765e99b2df75266f7", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete": "de73738b44dd2dcdfbe0ee687dfdca1304806afd6302d49a66012a811c3f9f27", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_delete_all": "bc059460fbea24b37b54aa9af7fa6e3ec98186b8c4749137ebb349cc6eac8e4e", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "e8101c6546f873a9f00e7e11de9596b02fb07c34db281dcf1c3444e770317732", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9c6a38d336bff79b1f98316ea5c6a8a3d013d0b0617283c78f7be5a8c82a4572", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "4d6ffe07461bc0fb444a18728be29e9fefc5210409c8d56e4e9ba0518046316f", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "4161aa24a9e5034bbdc70bcd81b4c8a60e145ddb505aaa996766eede4227a96b", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "3410e3b7f9aea897158002f6dc784bff367d3e2b751c24f5d7923dfe86578e6e", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "3a78f284e8e185a4847b5145ea092b4b7b1bc64f3cc90b946d18c9f316a55bae", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "3410e3b7f9aea897158002f6dc784bff367d3e2b751c24f5d7923dfe86578e6e", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "3504b05b4e0ed9de006017d530285ff5ea016253750ae0b8d6c191d015473459", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "6af006cd74d409039747c75c96b73608d116c658a55ab5d6266763af66fdc77f", +"T3T1_en_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "ed50aadd30fe02afc3e5178583fddbd6c62814b5f31bcde0fd43e613b29d3288", "T3T1_en_test_pin.py::test_pin_cancel": "3a9aeb25d4c9de34f42e17f847eed1193ab975171cf84ccb2ebe5285750c483c", "T3T1_en_test_pin.py::test_pin_change": "b0bbd994d34098e9dec14abf153dddd9a865d068acda5cffbae8f5976e21c994", "T3T1_en_test_pin.py::test_pin_delete_hold": "4e505fc48e835b5cc29fd9b5067d5987d2cad92d495eef7d06ced69a35f9d85f", @@ -15482,9 +15482,9 @@ "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6b231fc2cd69cedd33d2528b57f8136a5ca3b9c43b698e3ac20110ac31e6ddb8", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "83dab8b004b7ad2dd1a0d6f56e1661ff0a25bdc18dafb2f09d339b9eea0dfdcc", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d5cf039ee4bd1489039c8e31f8f90d0b075edeaddb2ec22f55543a8e1d8b8a4", -"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "82df5a9a0e7df9f617b29bb16d01acc5b800635c420680ab9e546e8c908a1748", +"T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "dcd00ffe9769bd57777fd0480b86020b2c1d837f901853516a3fe50fbbc6410d", "T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "3f9070f1b83a17e4a428eeab7b056cf088dc421f21d7819f92dd07d63ac66cd0", -"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "788a81368049c19f3528c0d47cbce3894d5e63db2f9b91f43966f71219e0565b", +"T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "2855527c9d14d1bbd0ad8603a52a320fd2cb2071537ba6fee13bf9e5a326d961", "T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "91a394679fb03f54f591307c09ca3af442985dd90042de2b26abae981a1062e1", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "8c9e39c583899fe215ae1b4e71d66ba42181246fa976da63f4bed172d1c9bf76", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "1bca8c9c7f748d36edbbe2eb5ddb161d26d3130e7afd03325450a8b14531bb69", @@ -15492,20 +15492,20 @@ "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "93b2d6699297680a491576955854d4819b0d9322423c2bb4c52b110afc6dd3c9", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ce88c67bd11834bba68e564c2641a3eae658b995e9437229bb763b88eb8ca8ab", "T3T1_es_test_lock.py::test_hold_to_lock": "22121f35ab8ef5850185109c604bf540c3a7691b7a61c46ddbebc78e36e59ae4", -"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "aa473da16607da4aa0ca88c463f5bffbda15c8490646d33bddcf3970ca33dab3", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ed36652ac8e7dc0f66d55652b7a75d86af9487dda7519f761a332566e37f9d0d", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "64827326d894a5198858792a7aad1f0c1c247b35e9b08d18908dfa37809703f6", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "767c090c2e16a68e7d3977603d39f8ba63784d1f7f6e7bd74c6e3fe9b39b9c8d", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "a512600d91c132477666809584705064992bb8df350d8500439095dbf0ba7655", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "08237f939b2b546b4bda60ecf060b7a93a43b3e5353c3aa5aab5200093330718", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "168bfda12908f9edbd2cf2f395a0620023f82f0dee80fa6f45ee402070960839", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "edf5d4377b01e4309a44a05bd05fe66e054d487946bcb164e35d3cb04fcddd83", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "ad15d0ea00cd0bae37d69706c5b33f899607a188aa2bcafa54a97b7327bb47f2", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "3b00f3d133283e93cb1573b2787d33fbc38a30e2dc6edaf316ddb3a19becb508", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "ad15d0ea00cd0bae37d69706c5b33f899607a188aa2bcafa54a97b7327bb47f2", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "4008814b526127b75952a97b890b73c40aac75d09f783a445e9d153e86462c93", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9718fd3c6905a8c32a8b59ae39fdd891547f7cd3996361427a38265e4cf5ca28", -"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "f3c474127343f6a200f3edaef9a58356ce6bb69fcd5901914f56e207987d9e4f", +"T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "fe4dec057596e15594ebb7919b467d3fa91315383f720083bfe49de64e864613", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ec6eb66ec60195362c8ee217c1b20e3305da4487cbb653341360571cc3ac4613", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete": "1ed381ad463decf17981be2e79d49dca188367ff5d712fef551827d07f7f1d65", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_delete_all": "724fb1c28abb4d0d4d044b424e481fcb6829fd9872db6910d1d50a52e87d55e9", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "0a4c000ac885d930b3f24b1adc0477a02b0ef79376de859fc9560b2f823cd6b3", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "f18a4a16e9c4ea7109e32f7075875070c3148bcc96cf33b1393c09a81cea8e8d", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "5d3958f661071de23b5a417348be7baa805b662252d180db3ba453c680874f71", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "85d0f659735b1296f39bdcbb783f332c4f9b38cf6add53a8cbc2b653e8743cae", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "d94a7ac9e6b243fa5fb094914811fa3c1f8c9777c1de2047c0f7aab6967d9ccc", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "16aa73cb8cd3fbc52a7d0b98bfa09c234e4310208c76ded8b1938988d77d23bc", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "d94a7ac9e6b243fa5fb094914811fa3c1f8c9777c1de2047c0f7aab6967d9ccc", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "29215f3682f14d1294955f9c861a846a61b0c8d34d739babc84d916db63c6268", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "d1ffeed70881add65179024cbf5df91ae497ac19c2664427ce62e7c3d8f0a32e", +"T3T1_es_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "5b3ab5864956d23f8f25add944e22855d3ccce80d2d09c5dfebd3635fc5a30db", "T3T1_es_test_pin.py::test_pin_cancel": "cf9fbe520b7a777148f85f1accd64c6f7e6a6ba3abe699c6953ed343be136c3e", "T3T1_es_test_pin.py::test_pin_change": "691f6ef38c0de18b001e5af30c1806c3db06408130195c95781d3a629ffec244", "T3T1_es_test_pin.py::test_pin_delete_hold": "7420f26a620108a54218ba12a8009362b9be9661df3ba263233630133826e516", @@ -15531,9 +15531,9 @@ "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a03cfae53a15478c8d7a73842059eed8d2a3d5bd8b287cd97a3483dfedecfc44", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2695412f733ed741ea4de2fd627be6e9ca5c48bc8079ed52b54adda1a828e2ff", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "f750821c92d3aa15d2f0c370d341e4905d4400f11ae368f02efdd253fa3f84cf", -"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "a01e2d94c229cc801b458ca27af1e1a0b0717d0b2c21366d740b9b0b98907f83", +"T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "f2c4df9d57c5581f92bfa0a41b296d4765abcaac1be016e161242cf88b04a7a5", "T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "7cfb7eb316e587770c9859ea9ca84844fdd398cf018492d41860e343b3132ded", -"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "d6bec560890ee243e2ab354aa220f122a684522537b812ef00e9346977c05db5", +"T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "f7897f611cb0b149feab055d6ef8e35765c42a364938fad9839d5cc25d24ea3c", "T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "5082a965b4ba4fe2372fe280326d05e376be3e521143d820547c541f61f0361b", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "c97f5c38ea479cc17c1e48fd77d7c7f71a8ae69725d2038d779ba0a308a03ba9", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "8105547c44bb473bca255c9f5f6f6e9116dad0ef2e1d21e216f7a63020a6c8fe", @@ -15541,20 +15541,20 @@ "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "82b39aebd2dba788c07e775502ed9b62afcdf8125a379207df2fb2391f3abc75", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "56f3a131657dc659648457a3784585739ddc5761a59ff34c30ad450e8e2e62f2", "T3T1_fr_test_lock.py::test_hold_to_lock": "31961b0cba116a3a786e5758e4753f703fb9b8499d4c6cc7bffc8a162de70e82", -"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "93d1de96820334a15f9586468be8b947168b0527e36387a31752317a0ca88444", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2c9caf679699f256b7e94caf1e3344210c2bb8b23716f021b8227815c67def2a", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "53eefd58f49cb1d87b5f738981565c1bb98aa7fd2fc089cf43f2c5b95fe01591", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "e6e3a8bfa780327ff4f60b004fb5d6597e4a5d06c59d242b515e6d9bdd5f86f3", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "f9ceb42a71201efd36807e1feadd23f369c987e07df2bca296dc48fb6aae9298", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "9a70197679bb98635b41c923044a054f24ad534761395a0d40cb1310690c45e6", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "b66f28fd4e63a89c2588d0999d36efe03817d3fff26e44e10499966005c7ad40", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "0472c792ba30e841e8a3c8e6d2f1b815f511be36d5fb5a83b5b9d4832db4c5f8", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "e3116904279e92e35238181d93ea4a6066f33ae3a346957932d6a972f369daf0", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "37b6a3a77b77e66d633bbfd5f99e5a4fb3077fe25cedcfe818c8c089144e6d25", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "e3116904279e92e35238181d93ea4a6066f33ae3a346957932d6a972f369daf0", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "62dbf08c7c07783fb81e21a70e853f63bb1c1a08f184dd2632eaa2dc1e39883c", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "9a4046e8cb7fabe47e9d7d9761b88e3dc830fa0e2e22a296ea5275128ccea34f", -"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "a7842eee5486f2b3b7628bea2c9a7bc3a9c389589bacd4a23d94023eed9c8775", +"T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "805f240368de40f5d64dc5e07743a4164c9a577ea11ff02af291a4ac83cb99a6", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2d1d8a838ee6f60713349569c6948d9ccb2e5c3a4e8621243b614a1e162b25ec", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete": "4d324e909ad85a370664619bc97d1dc48ade492aacb9e0e7b311c563a45ae22c", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_delete_all": "a07d238e91dfef1629532d9df69a553cf92b1df5a1284139f42f9bfe91716124", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "28efbac397097718ea7abc46e9772234e0de5581d2a1d92dfd21e469fe900bda", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "172bcf3d7d007b41fe36243d95508a95fc4f8a19323991d9fd0f8f190d171bc4", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "fab406225aa00c273a3b4fe51669bd79edadbddb660bd3bfe95fff9b4594aa7f", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "9ff9b10849c0195d14588033a75d21baaf3f74151c10188313499e46bef8987a", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "9d397b7c7685b13d4e29e05d6dad7185f263a4523dab59a01b5e29aeec786e07", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "37b13d0e6d3088a25b41bd6fa81e507e58d5bda5562a014a1c3246edd3079b2e", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "9d397b7c7685b13d4e29e05d6dad7185f263a4523dab59a01b5e29aeec786e07", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "3cd8d2b64f97cee3e0cf169b6f9182c75ff75fa9d0a53801fcb3f02e997d8da3", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "ae5e6fb51f5892596d9da8fb7526aff0a82326dca670ce10b1eb047b6129033c", +"T3T1_fr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "b47e616c51aae82bf5b7f336fc2c64c5fe3578032dd65c893078999908e85054", "T3T1_fr_test_pin.py::test_pin_cancel": "d609821dc4caea0c9b8d44bc090d46c3b39908dc6fe20ded1bd663f8b1df0181", "T3T1_fr_test_pin.py::test_pin_change": "7b33542fa2f40baddd28aecabca5ac079814785dd91c136b8da8e54ebb4006a6", "T3T1_fr_test_pin.py::test_pin_delete_hold": "7ea38d5cae1dd598f0a43f49054f74770f41a2bb0e15eabfbcd2178e555a206f", @@ -16807,8 +16807,8 @@ "T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", "T3T1_cs_test_msg_applysettings.py::test_apply_homescreen_toif": "54349d97212a954961eae04dd9a4fb3d7a288a4375ff01f164c25e68ba017df4", "T3T1_cs_test_msg_applysettings.py::test_apply_settings": "16f0a3cb785a16719b7075a66a0e89574678c3547ae788c5048e7b9b2ebe87c6", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "f5e9e741bc45953e463fdabb87a81307d4b1ec379170487d18241ede278d6fa3", -"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4741416de5b0ae9aa27367c5a7f9d5f7a3607d1323a5a12e2709df429dfc3784", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "e11feb2099eb2412bfd8da1e8bc976c55a981b1c8769cf26dcfd3b43f1b284b1", +"T3T1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3469eda5703433d682624772be2d9d922e3bb72727b6a7dee979c10d6746da98", "T3T1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "e3a64d7efe9482c038c304942a5d1da64b92ec0bf92d227331c4800f2ef7dea4", "T3T1_cs_test_msg_applysettings.py::test_experimental_features": "c9cde0d61c26889516c7d875004af6f40d37a8e03e6797d3928dabad4d3e9edf", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16864,8 +16864,8 @@ "T3T1_cs_test_protection_levels.py::test_get_public_key": "90032a429c463d5bc98e67ebaf930a0455797e5dc312aec4d975d9f07e36366c", "T3T1_cs_test_protection_levels.py::test_initialize": "0168a4178e6a8f5cce83139b789b165c332bd29fa26261f535faa460676c0f31", "T3T1_cs_test_protection_levels.py::test_passphrase_cached": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "f9597b2076bdd34a2fe952d23ca544553a77d990412398eb53d2b152f7cf3199", -"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "b84fa7238f8efa3eadcd7788209d76ac61d4dc528d9d01292ca403ddf836479a", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "1d29986ea5d0e839e0a4c1b7e25659da00d78830a877dbfb7751aad9ad02e447", +"T3T1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "25ac9f32e1c0684dd1972c697002e9fe7ddade0710375e00cadcb57885cdcc15", "T3T1_cs_test_protection_levels.py::test_ping": "938359f2917edb734242009ed930642a306d8e6fe4e8a12729191b790c521481", "T3T1_cs_test_protection_levels.py::test_sign_message": "75a8b343ba369c5de0b144ad457ed0b973e0882bbae6b6a9d4e5a3033af04953", "T3T1_cs_test_protection_levels.py::test_signtx": "81fe8b692870292bfc24bb8551b248fef7379c410f5f7606ecd86c45ae307532", @@ -16887,16 +16887,16 @@ "T3T1_cs_test_session.py::test_end_session_only_current": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session.py::test_session_recycling": "410c27bc36ecc8b6fdb19fbf02bb4c807d7551ea2b375c564eae918fca52e652", "T3T1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "94efd83f7441978cd2c844677a39ada47302be09c89deeeea93e1dec2c50f244", -"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "83f7a3919a270c23ae45b68dffd09edb65f462b2fb993f93eea48a3a6a8d5851", +"T3T1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "6395fa988ad5b8ce2615b17eb37cd182e2c1aba84237d25c96aa1e28daeb1be1", "T3T1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "0408525b19e98110cb3f2d29b44e93ff192df9891568193b97641ab2cd7e5346", "T3T1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "09d51becff25e14cde93c880973b8b09c13124db9f9523fa4108efc82c70392d", "T3T1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "5fe9efa8f266278a4cf16dc1345aa73996d2830fee4f61ba9a8ca0628ace59cb", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "82608a7065b4d06c407b93c208554ad8bc183ffedcbe80c53318dfc920b44dfa", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "23c7e79f4dd0ed9a3203889159a2de0998fa062622ed9751f08b9f1f9f8b165b", "T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "60f6428e48895346258413abfeca821792c3d37f514435a9371c2bcb796b3ea1", -"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "6f47b378799fd2905b63a43e53695fbfd437ff5173da4a0e512716db84282537", -"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "392d42ce2f371b3460f84fee0bc60c87c64b004e44c1660319e0fbec7d628aec", +"T3T1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "ef1f4bc39c9d86e1f1e2a0b552a2ad26b79a1d5a8a22ea3b9269d76fa2f04f27", +"T3T1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "30b4d37d8de8c7044a4a01ba8f2d44ea685182878b631fabc4fc5eb96521fb17", "T3T1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "680c6be19b6652a1c7c21463f9d1c036e42aa3d38f48e7f828bf9c434325975b", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d0c6d02cde6433ff256b99e465f43b8fa64c0e336044f6ef56fc0c749caf7b5b", "T3T1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "414ad69722e0d68f6c9aa1d930d8ce52ed33b8fb6d3c84efed1c347b26a984ca", @@ -16917,7 +16917,7 @@ "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "c86f8a5e634d46bb9e213275ca59ebb7dd57624660c1f8381e3f37b44b3687cb", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "a0ec5adc925d8546a9ee52224f874029ca989882daf762e24eb72701722755a2", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "9938e23983b3f11af45521aa0c2488ad21dffd3f75b28f3ef30885da3bfb7123", -"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "774d5723974299a9358b8c6321971abec584e01c9187626caff8fff1092bc93f", +"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "e3a00be2a98bbb17b2b2a13742de59f88011ca85efef334b4a475a48a03dad94", "T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "748b990a8eb65c96e9720ac5a339a058390c1546db631dd1cd65aac6ad848251", "T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "8e8f8d7c9e18312b93627a202e55bb6b4ed48d2a7c30bc89493bc945fa47fb37", "T3T1_cs_zcash-test_sign_tx.py::test_one_two": "e4375b012b97230a765d04857674758533540eda29111ba36ccedeb6008472dc", @@ -18155,8 +18155,8 @@ "T3T1_de_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", "T3T1_de_test_msg_applysettings.py::test_apply_homescreen_toif": "af79ffa3c26a6528b8a95c8c885552418248b2f91ef4a492861acfb7e14204eb", "T3T1_de_test_msg_applysettings.py::test_apply_settings": "2c4195efbce848b986f8c0c44b7658a8865e97affe67de39a034a7df7390e031", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "42f87da1a7cb19ef9cde7f2c768ac163ed5b32e29644b4808c4f4b33e69115ee", -"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "009732212982e29ead5a635e51e4301b9f0bb20134c01ccda4968979446af371", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "66e35b16136a401c4377e85f87c613eeaa9bc334caad84918603ed33bb939570", +"T3T1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "7af086c19b76aeb959e7a93372976ffde5f0f4ddd550274be12ef149d164fd43", "T3T1_de_test_msg_applysettings.py::test_apply_settings_rotation": "aa61c41bd8a2d8f0050a334bc63fc0c8ebb99101791c33b23e66cea4ac239fb8", "T3T1_de_test_msg_applysettings.py::test_experimental_features": "6ba91290c4610b4df056dae58397cfb7a0fee107ba5e13758dcb54c43ffedbf6", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -18212,8 +18212,8 @@ "T3T1_de_test_protection_levels.py::test_get_public_key": "9205f3ecfd1c4f38f7f5fdca932bf1c86aec98381d8d271eec856a7fa6b2ec28", "T3T1_de_test_protection_levels.py::test_initialize": "4c550599be7b929c222516c352c5533ac3222536f3141b9c22535f14dc9a2224", "T3T1_de_test_protection_levels.py::test_passphrase_cached": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "7e969b268081c0adb04bd3b6b1b912e018f030a11975a26f5825bf29c24298ec", -"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "5b4b7bfe2693cf1ef9d66a2188d0333849f043846b2254d5285aebe466aeb192", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[False]": "d34535dcae5f16ad6493d1298cdaaef4316a9ba48f4d10b9e5e236faaf54f3f9", +"T3T1_de_test_protection_levels.py::test_passphrase_reporting[True]": "916cb352f5b0a1dee4e3020bf30bf09497ffb0d288ec5b0b8f401bc8daa4f7a0", "T3T1_de_test_protection_levels.py::test_ping": "1cdf9b1c9eab8410a648748cbdb784ee911c10757ba5edc7baddb8e94ee84a86", "T3T1_de_test_protection_levels.py::test_sign_message": "869cf263ea29b15d2157a2c481ed4a0e3ffcec28d1d46f191364808f989052a5", "T3T1_de_test_protection_levels.py::test_signtx": "76042a712f97da440ecbabf7e0288dbb59093b8e6709b3e34537ebd1d3a2ab36", @@ -18235,16 +18235,16 @@ "T3T1_de_test_session.py::test_end_session_only_current": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session.py::test_session_recycling": "3e782ca40dc1938e45c1760edc7b08b9840720d2169de7a1e884833dfac3f993", "T3T1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "4dad740f196419b2ad1da1fca26008944e65e310e1f011afbb39fdfd20aa1bfa", -"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "2b5423c872ef285d12a9895c73595683d6ca72cb9f2368fec07bf9b7f8528a71", +"T3T1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "f2028f6647d3563c54341a429ff585f36133ffe870fd60e6058fe8834de11620", "T3T1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "de72c5e328f9971e0c72d082b9eb4014950df9c6d7269c6003d225add40ccc9f", "T3T1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "104cd214edf99de7a26c659376166e8247bc1d205f63ef63cf3bc7ca2e1a2bf2", "T3T1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "2e57dddee42e650761c521bfc614ea52712e5e13073e8d313f184008c3a819cd", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "59349aade71be922d6dec157e15e7105d13ca711bdba0aadfccabac5e45e44c3", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_length": "ebebd751c01b13e111fa148e96bb1a091b5e416493a53d92f439586c1bb02b94", "T3T1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "0a31ab1a377bc6c884e1b3e31044023e8dc2e36e6f76488a23dbc02cdbb81aa4", -"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "489d4eb881cace4ebe482dcbbb532beadca2281a7ab447764e3b9c3805671dd2", -"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6fbaec9f0136ef04374bc709ab3940bc0d74895e16cf7338d6a77b40f8d12fef", +"T3T1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "291ca70accedd84e01fdad4019adbd9f93f2f72c702dbc930795ce789d0b3172", +"T3T1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "5ac4f4e552b0c32c12ca1f6be12b8f3a1960a9c450ddbbf6e8cf553c81f68acf", "T3T1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "77e570ab1eb2d498b8896bd3beff1350e522fbc035939e57300a209bf5feafd2", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "d13ed8c06e93d53ec52f740580c63688432d60fa00bde7afc0e3a9060b8758ea", "T3T1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "f6b2dfdb708c189e779bde5b30a628debe1803003f8e8b2a7cd5f0ede4f7e72a", @@ -18265,7 +18265,7 @@ "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "534db7b1cba3a2a0a1cf4d2eba3cf8652001b5c4db1310891871234fcb555e08", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e787f8ef4c14ddcdaae214d30f3499335d9cab6e2066b31a53d47858a407a7e1", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "fc619426393e344424721750988489067b17a7a85861bc2d7703053a1b99fa46", -"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "a66b0728f23397fe59b13bde88a9ee1cd8a666d67e6ba1fa5badcf6d32687584", +"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "e64d049fb19083b94e6333eb1af6e524b24d5c3f1d06da3d286ffcbe806c1072", "T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "688352aeccbd7fbbee6f3ed7e4dbcc1362b78d965a0c854e27e756b9871d43da", "T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "85f2067de3f218e718ae164e97dc030c4aef065c29755f6138afe10d664a2d56", "T3T1_de_zcash-test_sign_tx.py::test_one_two": "10258e39046685e302d403a9df4f82cc4b851cfa07d8103f2a52f4afd81fa99d", @@ -19503,8 +19503,8 @@ "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", "T3T1_en_test_msg_applysettings.py::test_apply_homescreen_toif": "db803c5daf18ba04a9eea0681f717820ff0bca0a48c39caaa4c3eb796527aac8", "T3T1_en_test_msg_applysettings.py::test_apply_settings": "4aa06903fbbe34f4e27654e7dd030ff62e686c5194fb4ee00d98e2d3d5c187ca", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "e89ddabe256ca5f8feb558f20e0d4b978ea83f0bf5b60c0abdadcb677becd928", -"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "75a8135cc46a082b667abb29e54c7549186b1c4469a912b02ba67ff3841b58f2", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "b29f7ddcbe03d39b212783d62f3e6268c03fe977c71c22bc7f761beb20437d6d", +"T3T1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "ef179ba9c0428015bb5b523567c5a8c2d15a18b2e41bac6adca4ffbbdf47fcfb", "T3T1_en_test_msg_applysettings.py::test_apply_settings_rotation": "d07c2cc218fc9da94f861c2bcc8066c318333535c236bb76600e03ffdf9bbc1e", "T3T1_en_test_msg_applysettings.py::test_experimental_features": "3ccd6c5126d5329905391fdf8e270a3ecfeafb4e87d42ad3d184275e542f6cd2", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19560,8 +19560,8 @@ "T3T1_en_test_protection_levels.py::test_get_public_key": "62ac6965d10de96ad14749a061768db346a7f3430014d22ddd0d941ae0cad6f2", "T3T1_en_test_protection_levels.py::test_initialize": "a770e799f861d0b0c66e90219f1a41f0746c9d82ecc4c1acfc7304d0197aad48", "T3T1_en_test_protection_levels.py::test_passphrase_cached": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "35a0f7a07903f3ded1e163d441aae43af83ec59ea16fc52dc010b76720f5c4f6", -"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "6accee9009707acd9c80a1e4b2407b0469e7c82e17a8f9f2d44511d0c31a1c3d", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[False]": "aaaa72ecc98a76bfa3234e74d9969405f484d6bcdbb2174f54527b82254d5580", +"T3T1_en_test_protection_levels.py::test_passphrase_reporting[True]": "97a9c6976f4b7372eb0e868e07f76aee6f8e6efe0da908a1cb219bfc3aee0560", "T3T1_en_test_protection_levels.py::test_ping": "65afc729ec26dc85ccce9fc8bc4691302d2959ffc2e6cab94f7373503b0f39b8", "T3T1_en_test_protection_levels.py::test_sign_message": "6e3cc9a3600dc290d2637ba28cf966d9f063114038e9c1365aaf452ed3663d37", "T3T1_en_test_protection_levels.py::test_signtx": "b7b31f218929c9d1899fba416ad2e62acd055f5594fb010bf508b095d259ec9f", @@ -19583,16 +19583,16 @@ "T3T1_en_test_session.py::test_end_session_only_current": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session.py::test_session_recycling": "03fe9ec37f7c26a76cb43b8faf4b11d621fe848ae08aa13f815fbb38707f1d80", "T3T1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "df4fb367764068a45ab3ab6d9a7070d2815149afd75e7f5212411aea4f77ae24", -"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "070aacc253ee47e92ae0b9d4ad93eaea4accb42a6855a7a94a03ddc651302324", +"T3T1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "70c9fd856591700a2daf090dcbf546733a73645d580ee4606be263b0e073ffb4", "T3T1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "9684da54658e5c014638051d98c8ea7df258faf64c46da18c08e0109ac0ca124", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "f7ca4ea6f763704d8dea45926dba503e230edc555ebfaa820976cf47706c1bfb", "T3T1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "512539498be76e766663fd5c6668d224a904d2ff7c3ee7244f78822a9042012c", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "2f74b3a7aefe7603dd76a747b90c8599c68d8a383247228c6d7d848b4e9478c2", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_length": "cbe22a00d571f873034b913cf58cab18c7af126ef61ff2d592cb5a761319858d", "T3T1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "cc5d45d78fda56d06c4497cd29934e15c2efe958b909049ca531a256d824ea7e", -"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "5e5cef939fe8f8cdcf14c25905795da1a21f43d995b9e08bd192e1e589de9f12", -"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "d0f6ae87ca0cb4d2ecdfd3d4c6731ff6d08e09351b8e8c7706f586f363309156", +"T3T1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "77840e3e47d4171e571b3dfe84925dc2cb4fd05b95e42853d18d689f179adb67", +"T3T1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "41cfd118b7ac6d452efaa5fd5ae8264c24db43629ba4c80de7e44e8b9bbf9af2", "T3T1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "778f47acd58335640b8ac5941378b5adab98a58088736a7e795aa2880e7bf217", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2260b3ddde77ab38e6f1d8c373cb3fcb5c0763ad794d364770e68657ae72f1bb", "T3T1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d42b9d33225764a1594808eea8499ae5deb9ddd84ec658aa7ada598191838a78", @@ -19613,7 +19613,7 @@ "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "2488848ff080a1de419fdc6bc7064bf4a0504b306f70df555863e9ddcac66a93", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "23ccb252c1ff5847c1db298a36dae6cb48fa2ae0962c10acc05bcf666cbe9875", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ba87e90e6d810d1a8e39febbc867d89a69007b1ce7bdcc63224627e14914ab66", -"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "330f7f0028869424b70ffd52b56584663cccf30342086022ffdaa836af34e12d", +"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "3d20b34ed2f65f424ca962dbd5470d7078b6b01af415aba19ba7c3fd11e5202b", "T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "eb0670c196dacdf4d35fe8d03ba368ace9b3e90471a0f892ccec5e1ea7b42c10", "T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "ea19880720b16fe8a730e908b2abfb34cf507940c156e882853a7632b842b329", "T3T1_en_zcash-test_sign_tx.py::test_one_two": "7346debbcbd3b808e607c9f6a75c638307c976d4c3249fb3ec1dc6c416826a38", @@ -20851,8 +20851,8 @@ "T3T1_es_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", "T3T1_es_test_msg_applysettings.py::test_apply_homescreen_toif": "c51cc939a3cf94143bab4ac1c049983820d47220c0b7e50cb5ac319080cf1f57", "T3T1_es_test_msg_applysettings.py::test_apply_settings": "27aabb15a55dc0418bc056234ad0c1bfc4f72bba73490ac3945b21aa8abb967b", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "7e7e88fb2de600bc7a88e983a185ca2ef0ed47beb8432131eeaaf2747dd94028", -"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "00c5d64174cbfc42469465b5e80ba5a1ba5eb4fb56426994a9b5ad335dc8438c", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "905a23a8d66434a0fc91acb6a743073d417dd5fd59708acf56600bb77e0158b5", +"T3T1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "42d3cde183ea8642b9479a86191a3d2f9ec17af898dc663ecf0a4b72e486c304", "T3T1_es_test_msg_applysettings.py::test_apply_settings_rotation": "43f2969d66acf65b7138440e32c21c349c554894694219819f8ae3c0c50b7b48", "T3T1_es_test_msg_applysettings.py::test_experimental_features": "793eb86c560124fe0ab6dc5eef7ff4ba8634519bb4b684b0c2c4c0365b49d07c", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20908,8 +20908,8 @@ "T3T1_es_test_protection_levels.py::test_get_public_key": "38978069db1fac71804fdd6e29fc3b7eb7db443362ef7e991065423938aa2e61", "T3T1_es_test_protection_levels.py::test_initialize": "5fce5b738833875e177756aa3ce4a7e85e468aeeafb806dd9fc2265bba207141", "T3T1_es_test_protection_levels.py::test_passphrase_cached": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "f8b244895fcff6d2ae2e98e7c04e582d1f8e09f7e11d9e2b413825ea288b5a42", -"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "fd7893f44c9c68d4e0620da476e37bf0df9deef74478ebbd24f5bb3f6cadcddd", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[False]": "cb5e8f5962a5c72de7b961b3915cec469e0349b3514a4d5b8bacba28a57cfb00", +"T3T1_es_test_protection_levels.py::test_passphrase_reporting[True]": "55ddfaf0b79b573338478f55d6db198f87dc6c36b41e85404b92a5df96c98f9c", "T3T1_es_test_protection_levels.py::test_ping": "268378b1164cc83656a862cb23b1526e8ccca1c68dfcdbdd54064258f7d2b86e", "T3T1_es_test_protection_levels.py::test_sign_message": "d354ec8f178db5f78039df8eb0aee161272d9918f1eddf26ba415f64234c8368", "T3T1_es_test_protection_levels.py::test_signtx": "76b034cb80c3cde87f6f306926563edc012ad6ec77fb46656d0f57f78ad5a239", @@ -20931,16 +20931,16 @@ "T3T1_es_test_session.py::test_end_session_only_current": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session.py::test_session_recycling": "0fd2f3b1000c1ebf6661796358a3ca656f029b86b852923e14faac4700779889", "T3T1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "722825857cafeed2f9c987418b23dcbeb893dbc7d04be197f69b9b1dff725761", -"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "5056778737f478ccf29e135a302413f0d2b7aee386dfc87161ed7e9109cb4b75", +"T3T1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "5470df2f76c5e6b2b5d3d8096153cbbd932750dae771b9b742c45f58949d773a", "T3T1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "ad2a8d58a1e3054e764cf423de68812105293b0ffafb152f9cc949ca63f72a97", "T3T1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "627263066ee57d565bf588e6186c3fce399a33a7395ca82f7b38e958939d1913", "T3T1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "64f2bb12e6651c86436fd3cc3ee96a724cf98c25d0f295c9de17344bb20550db", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "09c2822f2f78c77c07132f4188cbe3989d21a8c9d02d5bbc1fc047f2cad2bb23", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_length": "60758e89e11f0f3b3c5185c83f726ac8c8ec708bbb9556b1c63fecb61f55af5a", "T3T1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "8749a65c2912f9f7b216d4d1794ed827e9a8fd4a3120666116a2fbf5870c2ba9", -"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "1b909819708a91228829e52895199e974ea1467ebefe9fd658798beca0c84b75", -"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "86c60fe1498cf03cf4cd01d8b3e889e41e84c67b0444bef93d13e288ab9248bc", +"T3T1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "7ecdda1e855c81c47bef40100d2dcef70bf711b08e9c3829a6ffaf9bd805757a", +"T3T1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "13615616451109253a45a76f81f154c58b499a6e97a565706bb5ee372b4afeb1", "T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b9b5c69cedac3983ec25b128a3fc1fb940a3c922e783405e4d7e640c4fbe49f", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "faa3fe89f0e40b73585f8ff38a46017fa083236ec02a3d3d847980e5d8f18164", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "727a8ecc2ce13554ff1335082c344550b71536e6fca9254492cd3509437d7ca9", @@ -20961,7 +20961,7 @@ "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "290251b9cc8901f682b5238649d59148f2e38f8bf600c9a7371c8704d1ebf531", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8c3138d7b797bcaea06d66998cc049d19448030b5c0f3c93112e5fd046422e67", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "f91fca0f393aaaa079d872dd72286065f0df707dc66b7cf70b030e63ac4fec45", -"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "310511986f493af5a50e8c30b0574046e2a935dee59f543d735980deca08f358", +"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "6a7c3882c247b42f236385b8b7e913d98d6959b033b16b87692e411873894c0e", "T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "2e7ce8f4c09f1c65cb451f9784b4f9973bb53ca2ccb9ad4282addc9d0b2beb65", "T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "43b0985d5076d4b3a9962384e688d6b5bac71f2b493547cfa6cf41a45bb405d2", "T3T1_es_zcash-test_sign_tx.py::test_one_two": "156d2d776997b10e5b8a85c231e734a95508a6df77ce9c5241333d9adcd71a97", @@ -22199,8 +22199,8 @@ "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_msg_applysettings.py::test_apply_homescreen_toif": "bc580c46d9e3dc481ae2f6e34a8b2907db60e9f1525730b914e88471170a7873", "T3T1_fr_test_msg_applysettings.py::test_apply_settings": "2c7825d629c499fd4ba3922c4fc742af1c57eec6ec33a65b9e3ffd85e3ddba0d", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "8d7b8761748809d490708735a3dc02fe60a86628d71cbeb0d159b26cd9436d43", -"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "95dc8034980a6c20e1f84cfcd178ed12cc87134b4536d7e5bbe375c36a293750", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "3060ff09e07c1afce3b77ea137270a5a4b3706258e47de6a5e0c77efe297e3dc", +"T3T1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "7578cb741ba5418131e9957d9a3d7afab4f3cb67792cec2b8c4aa9761b72a4f2", "T3T1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "6ed189300fa6e85b6568e0baf4cd46b442addcbdee366d511d48e129872ee982", "T3T1_fr_test_msg_applysettings.py::test_experimental_features": "f75dfd9615a8f63074bd256d9452dd9c5f3db9aee5b0ae0d232c1d370d2f672d", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -22256,8 +22256,8 @@ "T3T1_fr_test_protection_levels.py::test_get_public_key": "bb7ce5b5f0d172175ae11481d7290188b4c0c10076983602b908a724877682d2", "T3T1_fr_test_protection_levels.py::test_initialize": "e2be98d3dde35b530841984c83d196715c4511d6e3f68658c978127667a515d4", "T3T1_fr_test_protection_levels.py::test_passphrase_cached": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "247a1c447e5ae63f7a60757f18d289c9a487ab6ebf70704db3ed64885001f3c6", -"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "feaddf76d40fa37b27b3812aea8ef36a3918f9506b264685c0d463b3b924ebac", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "c24b731102d38bdd26078b7f0ec1de7e0ab46aaedfb71941f86975e7ea87ecaf", +"T3T1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "dc5a9d3e38dbb232fec88350548269cc08bfd6f927457db343e4b72ce616b414", "T3T1_fr_test_protection_levels.py::test_ping": "352577ee07a27a9ebfc8e8b0b1a430192f7d038875a6fa7232d2c6a612eb44e2", "T3T1_fr_test_protection_levels.py::test_sign_message": "4577195c875ba6b05f76866490b3faea19eb8fbd1cc07564c0a6cdf1b2ea16f6", "T3T1_fr_test_protection_levels.py::test_signtx": "15366bed34cea625cc5a1622cf8d47c856aac0a5e783b6809df4f4a0d3333978", @@ -22279,16 +22279,16 @@ "T3T1_fr_test_session.py::test_end_session_only_current": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session.py::test_session_recycling": "df03d7f892f794cd26891155597faee862aaa1ff0e0c59b6f3b39541bab72754", "T3T1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "94783bc3a1dcedfbb006658a14148926c0b7937d4f92d7ca1c1347529884c51a", -"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "a050bcf376e8e2303c8ead14b48275ca81be56e379884059a270b7633ce813af", +"T3T1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "d9133b67c9c3d0e4b7ce3caf77b3f6c6a48441f98d47a85676a8e06a8b6333c3", "T3T1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "c9b64d97897a9f6fa67f7381cdc75762ee9c064b80b9eb7dae8a38aa57d6d716", "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "72fdb966113a5ad4adc79bf3cde215b1fb204b3c2f7855499f3aa37e322cd01f", "T3T1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "e126bcddda7ce30f8f5a15bb717b6b841f64a976f96f747b51ada2c2e68d60ce", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "53188ebe2e238abb2315fdbf5aa2f63278971deeb48a3b1ae299b27c7f436e0b", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "d5027c8bc7000f899d36345064e84edf0409ce563b0f4a30a966caae2868d280", "T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "c0edc6e45e8cb50ece847bf3c701750f537ec2a3656b0b147507462a986506b1", -"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "881fb4850bcc869488c6cf258fdf32f6d4435f4154c130e87e10b7d4695818bd", -"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "88178e46da8faf68fdcc028a626494f8fa6987c649b2a166f6920ba3b6e288f0", +"T3T1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "e78e9354d28d908ed5e91cac149456611ead59c5e0b40a9c4480c2f8ba47e219", +"T3T1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "6dd13b00a5d9aaca2a7a7d2218e5f8f010712c58a03b97c2de3d2414a7018fd4", "T3T1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "fd4a57aba6ab7786199ca6edf6fee9c247f6324ef8b76059d36433b3daa4b70f", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ec2caffc016d8c0cc628a4039774779149406552f38baa3230ca674766e18469", "T3T1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "73959134ab8f750768060a39c13a1fbd5995b9e69c4d63dcb910a4e23f704434", @@ -22309,7 +22309,7 @@ "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "ddaa5b732f252125d32b0f5a37e7921bcc1ff294d77b09c112e4e3f563b8855c", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e05975469765465d77085adce8e3adc259e5c8e653a2be6fcdaf428277805f22", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "01bdb5b8ceac205728755f3f9e555c30ab7a6caceb03c6156542f2955bf08ea8", -"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "86d5d149fe800a06673016df3c546da83e0e59226bf4d7f21082e21e1f99783f", +"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "45717859ce16c0e10b6aad7fe4dadedba449fbad3578c263d33324f936c1bca2", "T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "dc90f97d311358870f5ff032a1af0cc677a8966ea236c82bcd7f7d3f58990c93", "T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "ed968fc6f87e77bf1062997e2ac7b1881aef2361331bd4551f823a7f9eb6e639", "T3T1_fr_zcash-test_sign_tx.py::test_one_two": "24180452ff7c2caec1587e3f0c9cdde8f760fdb060bf0a7a41bcaf80841d0aa6", From e19138cdc87fba19d87b611ccd60a3ed588b27c0 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Wed, 21 Aug 2024 12:04:28 +0200 Subject: [PATCH 526/626] chore(core): remove unused mercury ButtonContent [no changelog] --- .../src/ui/model_mercury/component/button.rs | 66 +++++-------------- .../component/keyboard/passphrase.rs | 1 - 2 files changed, 15 insertions(+), 52 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 7f0a7446d4..1cf6c53a2f 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -71,10 +71,6 @@ impl Button { Self::new(ButtonContent::IconAndText(content)) } - pub const fn with_icon_blend(bg: Icon, fg: Icon, fg_offset: Offset) -> Self { - Self::new(ButtonContent::IconBlend(bg, fg, fg_offset)) - } - pub const fn empty() -> Self { Self::new(ButtonContent::Empty) } @@ -181,12 +177,7 @@ impl Button { } pub fn paint_background(&self, style: &ButtonStyle) { - match &self.content { - ButtonContent::IconBlend(_, _, _) => {} - _ => { - display::rect_fill(self.area, style.button_color); - } - } + display::rect_fill(self.area, style.button_color); } pub fn render_background<'s>( @@ -195,25 +186,20 @@ impl Button { style: &ButtonStyle, alpha: u8, ) { - match &self.content { - ButtonContent::IconBlend(_, _, _) => {} - _ => { - if self.radius.is_some() { - shape::Bar::new(self.area) - .with_bg(style.background_color) - .with_radius(self.radius.unwrap() as i16) - .with_thickness(2) - .with_fg(style.button_color) - .with_alpha(alpha) - .render(target); - } else { - shape::Bar::new(self.area) - .with_bg(style.button_color) - .with_fg(style.button_color) - .with_alpha(alpha) - .render(target); - } - } + if self.radius.is_some() { + shape::Bar::new(self.area) + .with_bg(style.background_color) + .with_radius(self.radius.unwrap() as i16) + .with_thickness(2) + .with_fg(style.button_color) + .with_alpha(alpha) + .render(target); + } else { + shape::Bar::new(self.area) + .with_bg(style.button_color) + .with_fg(style.button_color) + .with_alpha(alpha) + .render(target); } } @@ -243,12 +229,6 @@ impl Button { ButtonContent::IconAndText(child) => { child.paint(self.area, self.style(), Self::BASELINE_OFFSET); } - ButtonContent::IconBlend(bg, fg, offset) => display::icon_over_icon( - Some(self.area), - (*bg, Offset::zero(), style.button_color), - (*fg, *offset, style.text_color), - style.background_color, - ), } } @@ -294,20 +274,6 @@ impl Button { alpha, ); } - ButtonContent::IconBlend(bg, fg, offset) => { - shape::Bar::new(self.area) - .with_bg(style.background_color) - .with_alpha(alpha) - .render(target); - shape::ToifImage::new(self.area.top_left(), bg.toif) - .with_fg(style.button_color) - .with_alpha(alpha) - .render(target); - shape::ToifImage::new(self.area.top_left() + *offset, fg.toif) - .with_fg(style.icon_color) - .with_alpha(alpha) - .render(target); - } } } @@ -452,7 +418,6 @@ impl crate::trace::Trace for Button { t.string("text", content.text); t.bool("icon", true); } - ButtonContent::IconBlend(_, _, _) => t.bool("icon", true), } } } @@ -471,7 +436,6 @@ pub enum ButtonContent { Text(TString<'static>), Icon(Icon), IconAndText(IconText), - IconBlend(Icon, Icon, Offset), } #[derive(PartialEq, Eq, Clone, Copy)] diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 94aad186bb..7cea508859 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -169,7 +169,6 @@ impl PassphraseKeyboard { ButtonContent::Icon(_) => " ".into(), ButtonContent::IconAndText(_) => " ".into(), ButtonContent::Empty => "".into(), - ButtonContent::IconBlend(_, _, _) => "".into(), } } From c0b295a9b1ef4981cd8a1266570276165c9ac16d Mon Sep 17 00:00:00 2001 From: cepetr <petr@cerninovi.cz> Date: Tue, 2 Jul 2024 10:05:38 +0200 Subject: [PATCH 527/626] fix(core/prodtest): fix prodtest build with NEW_RENDERING on [no changelog] --- core/SConscript.prodtest | 21 ++++++++++++++- core/embed/lib/gfx_draw.c | 53 ++++++++++++++++++++++++++++++++++++++ core/embed/lib/gfx_draw.h | 9 +++++++ core/embed/prodtest/main.c | 1 + 4 files changed, 83 insertions(+), 1 deletion(-) diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index b505b4337e..946c5ee73c 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -8,6 +8,7 @@ CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) PRODUCTION = ARGUMENTS.get('PRODUCTION', '0') == '1' BOOTLOADER_DEVEL = ARGUMENTS.get('BOOTLOADER_DEVEL', '0') == '1' HW_REVISION = ARGUMENTS.get('HW_REVISION', None) +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' if TREZOR_MODEL in ('DISC1', 'DISC2'): # skip prodtest build @@ -22,6 +23,9 @@ if TREZOR_MODEL in ('DISC1', 'DISC2'): FEATURES_WANTED = ["input", "sbu", "sd_card", "rdb_led", "usb", "consumption_mask", "optiga", "haptic"] +if NEW_RENDERING: + FEATURES_WANTED.append("new_rendering") + CCFLAGS_MOD = '' CPPPATH_MOD = [] CPPDEFINES_MOD = [ @@ -100,11 +104,14 @@ CPPPATH_MOD += [ SOURCE_MOD += [ 'embed/lib/colors.c', - 'embed/lib/display_draw.c', 'embed/lib/display_utils.c', 'embed/lib/error_handling.c', 'embed/lib/fonts/font_bitmap.c', 'embed/lib/fonts/fonts.c', + 'embed/lib/gfx_color.c', + 'embed/lib/gfx_bitblt_rgb565.c', + 'embed/lib/gfx_bitblt_rgba8888.c', + 'embed/lib/gfx_bitblt_mono8.c', 'embed/lib/image.c', 'embed/lib/mini_printf.c', 'embed/lib/qr-code-generator/qrcodegen.c', @@ -114,6 +121,18 @@ SOURCE_MOD += [ 'vendor/micropython/lib/uzlib/tinflate.c', ] + +if NEW_RENDERING: + CPPDEFINES_MOD += ['NEW_RENDERING'] + SOURCE_MOD += [ + 'embed/lib/gfx_draw.c', + ] +else: + SOURCE_MOD += [ + 'embed/lib/display_draw.c', + ] + + # fonts tools.add_font('NORMAL', FONT_NORMAL, CPPDEFINES_MOD, SOURCE_MOD) tools.add_font('BOLD', FONT_BOLD, CPPDEFINES_MOD, SOURCE_MOD) diff --git a/core/embed/lib/gfx_draw.c b/core/embed/lib/gfx_draw.c index c8fc4da822..192bfef361 100644 --- a/core/embed/lib/gfx_draw.c +++ b/core/embed/lib/gfx_draw.c @@ -241,6 +241,53 @@ void gfx_draw_text(gfx_offset_t pos, const char* text, size_t maxlen, } } +#ifdef TREZOR_PRODTEST + +#include "qr-code-generator/qrcodegen.h" +#define QR_MAX_VERSION 9 + +void gfx_draw_qrcode(int x, int y, uint8_t scale, const char* data) { + if (scale < 1 || scale > 10) return; + + uint8_t codedata[qrcodegen_BUFFER_LEN_FOR_VERSION(QR_MAX_VERSION)] = {0}; + uint8_t tempdata[qrcodegen_BUFFER_LEN_FOR_VERSION(QR_MAX_VERSION)] = {0}; + + int side = 0; + if (qrcodegen_encodeText(data, tempdata, codedata, qrcodegen_Ecc_MEDIUM, + qrcodegen_VERSION_MIN, QR_MAX_VERSION, + qrcodegen_Mask_AUTO, true)) { + side = qrcodegen_getSize(codedata); + } + + // Calculate border size (1 extra modules around the QR code) + int border_side = ((side + 2) * scale); + + // Calculate border left-top corner + x -= border_side / 2; + y -= border_side / 2; + + // Fill the backround (including the border) with white color + gfx_rect_t border_rect = gfx_rect_wh(x, y, border_side, border_side); + gfx_draw_bar(border_rect, COLOR_WHITE); + + // Center QR code inside the border + x += scale; + y += scale; + + // Draw black modules + for (int i = 0; i < side; i++) { + for (int j = 0; j < side; j++) { + if (qrcodegen_getModule(codedata, i, j)) { + gfx_rect_t rect = + gfx_rect_wh(x + i * scale, y + j * scale, scale, scale); + gfx_draw_bar(rect, COLOR_BLACK); + } + } + } +} + +#endif // TREZOR_PRODTEST + // =============================================================== // emulation of legacy functions @@ -274,3 +321,9 @@ void display_text_center(int x, int y, const char* text, int textlen, int font, int w = font_text_width(font, text, textlen); gfx_draw_text(gfx_offset(x - w / 2, y), text, maxlen, &attr); } + +#ifdef TREZOR_PRODTEST +void display_qrcode(int x, int y, const char* data, uint8_t scale) { + gfx_draw_qrcode(x, y, scale, data); +} +#endif // TREZOR_PRODTEST diff --git a/core/embed/lib/gfx_draw.h b/core/embed/lib/gfx_draw.h index fcd32bacca..280c13abdb 100644 --- a/core/embed/lib/gfx_draw.h +++ b/core/embed/lib/gfx_draw.h @@ -150,4 +150,13 @@ void gfx_draw_bitmap(gfx_rect_t rect, const gfx_bitmap_t* bitmap); void gfx_draw_text(gfx_offset_t offset, const char* text, size_t maxlen, const gfx_text_attr_t* attr); +#ifdef TREZOR_PRODTEST +// Draws a QR code to the specified position. +// +// `x`, `y` - center of the QR code +// `scale` - size of a single QR code module +// `data` - utf-8 text +void gfx_draw_qrcode(int x, int y, uint8_t scale, const char* data); +#endif + #endif // GFX_DRAW_H diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 436951619f..15484f4aa6 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -831,6 +831,7 @@ int main(void) { display_qrcode(DISPLAY_RESX / 2, DISPLAY_RESY / 2, dom, 4); display_text_center(DISPLAY_RESX / 2, DISPLAY_RESY - 30, dom + 8, -1, FONT_BOLD, COLOR_WHITE, COLOR_BLACK); + display_refresh(); } display_fade(0, BACKLIGHT_NORMAL, 1000); From 20453f6c994ba9b3f4e72fbc53fb46acf067e66b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 2 Aug 2024 14:38:29 +0200 Subject: [PATCH 528/626] chore(crypto): do not use precomputed tables by native implementation of ECC [no changelog] --- crypto/options.h | 2 +- crypto/tests/test_check.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crypto/options.h b/crypto/options.h index 94f5c3ba66..4bf9a99046 100644 --- a/crypto/options.h +++ b/crypto/options.h @@ -25,7 +25,7 @@ // use precomputed Curve Points (some scalar multiples of curve base point G) #ifndef USE_PRECOMPUTED_CP -#define USE_PRECOMPUTED_CP 1 +#define USE_PRECOMPUTED_CP 0 #endif // use fast inverse method diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index e2ab3fc80e..590db52396 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -7385,6 +7385,7 @@ START_TEST(test_ecdsa_der) { } END_TEST +#if USE_PRECOMPUTED_CP static void test_codepoints_curve(const ecdsa_curve *curve) { int i, j; bignum256 a; @@ -7422,6 +7423,7 @@ START_TEST(test_codepoints_secp256k1) { test_codepoints_curve(&secp256k1); } END_TEST START_TEST(test_codepoints_nist256p1) { test_codepoints_curve(&nist256p1); } END_TEST +#endif static void test_mult_border_cases_curve(const ecdsa_curve *curve) { bignum256 a; @@ -11466,10 +11468,12 @@ Suite *test_suite(void) { tcase_add_test(tc, test_pubkey_uncompress); suite_add_tcase(s, tc); +#if USE_PRECOMPUTED_CP tc = tcase_create("codepoints"); tcase_add_test(tc, test_codepoints_secp256k1); tcase_add_test(tc, test_codepoints_nist256p1); suite_add_tcase(s, tc); +#endif tc = tcase_create("mult_border_cases"); tcase_add_test(tc, test_mult_border_cases_secp256k1); From df2545b78e03887bc14bac5d95e779a50cbf610b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 2 Aug 2024 15:16:48 +0200 Subject: [PATCH 529/626] chore(crypto,core,legacy): reduce size of precomputed table used by secp256k1 submodule [no changelog] --- core/SConscript.firmware | 2 +- core/SConscript.unix | 2 +- crypto/Makefile | 2 +- legacy/firmware/Makefile | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 75ad320dc3..a1ec161725 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -183,7 +183,7 @@ if FEATURE_FLAGS["SECP256K1_ZKP"]: 'USE_EXTERNAL_ASM', 'USE_EXTERNAL_DEFAULT_CALLBACKS', ('ECMULT_GEN_PREC_BITS', '2'), - ('ECMULT_WINDOW_SIZE', '8'), + ('ECMULT_WINDOW_SIZE', '2'), 'ENABLE_MODULE_GENERATOR', 'ENABLE_MODULE_RECOVERY', 'ENABLE_MODULE_SCHNORRSIG', diff --git a/core/SConscript.unix b/core/SConscript.unix index 8013fe4f09..2b4adda962 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -184,7 +184,7 @@ if FEATURE_FLAGS["SECP256K1_ZKP"]: ('SECP256K1_CONTEXT_SIZE', '208'), 'USE_EXTERNAL_DEFAULT_CALLBACKS', ('ECMULT_GEN_PREC_BITS', '2'), - ('ECMULT_WINDOW_SIZE', '8'), + ('ECMULT_WINDOW_SIZE', '2'), 'ENABLE_MODULE_GENERATOR', 'ENABLE_MODULE_RECOVERY', 'ENABLE_MODULE_SCHNORRSIG', diff --git a/crypto/Makefile b/crypto/Makefile index ef1f5bac76..b3cd50b027 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -65,7 +65,7 @@ endif ZKP_CFLAGS = \ -DECMULT_GEN_PREC_BITS=4 \ - -DECMULT_WINDOW_SIZE=8 \ + -DECMULT_WINDOW_SIZE=2 \ -DENABLE_MODULE_GENERATOR \ -DENABLE_MODULE_RECOVERY \ -DENABLE_MODULE_SCHNORRSIG \ diff --git a/legacy/firmware/Makefile b/legacy/firmware/Makefile index 3f003cd2c2..a02c3f2c5e 100644 --- a/legacy/firmware/Makefile +++ b/legacy/firmware/Makefile @@ -19,7 +19,7 @@ ZKP_CFLAGS = \ -DUSE_EXTERNAL_ASM \ -DUSE_EXTERNAL_DEFAULT_CALLBACKS \ -DECMULT_GEN_PREC_BITS=4 \ - -DECMULT_WINDOW_SIZE=8 \ + -DECMULT_WINDOW_SIZE=2 \ -DENABLE_MODULE_GENERATOR \ -DENABLE_MODULE_RECOVERY \ -DENABLE_MODULE_SCHNORRSIG \ From 54eef8d886c08bf29a035988f42ec587bb828884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 2 Aug 2024 16:46:43 +0200 Subject: [PATCH 530/626] refactor(crypto,core,lagacy): use secp256k1 submodule for ECDH [no changelog] --- core/SConscript.firmware | 3 +- core/SConscript.unix | 3 +- crypto/Makefile | 3 +- crypto/ecdsa.c | 14 ++++++- crypto/ecdsa_internal.h | 3 +- crypto/tests/test_check.c | 86 +++++++++++++++++++++++++++++++++++++++ crypto/zkp_ecdsa.c | 77 +++++++++++++++++++++++++++++++++++ crypto/zkp_ecdsa.h | 2 + legacy/firmware/Makefile | 3 +- 9 files changed, 187 insertions(+), 7 deletions(-) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index a1ec161725..7f6844a14d 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -188,6 +188,7 @@ if FEATURE_FLAGS["SECP256K1_ZKP"]: 'ENABLE_MODULE_RECOVERY', 'ENABLE_MODULE_SCHNORRSIG', 'ENABLE_MODULE_EXTRAKEYS', + 'ENABLE_MODULE_ECDH', ] SOURCE_MOD_SECP256K1_ZKP = [ 'vendor/secp256k1-zkp/src/secp256k1.c', @@ -779,7 +780,7 @@ obj_program = [] obj_program.extend(env.Object(source=SOURCE_MOD)) obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero')) if FEATURE_FLAGS["SECP256K1_ZKP"]: - obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function')) + obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function -Wno-maybe-uninitialized')) source_files.extend(SOURCE_MOD_SECP256K1_ZKP) obj_program.extend(env.Object(source=SOURCE_FIRMWARE)) obj_program.extend(env.Object(source=SOURCE_MICROPYTHON)) diff --git a/core/SConscript.unix b/core/SConscript.unix index 2b4adda962..288ddcbba9 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -189,6 +189,7 @@ if FEATURE_FLAGS["SECP256K1_ZKP"]: 'ENABLE_MODULE_RECOVERY', 'ENABLE_MODULE_SCHNORRSIG', 'ENABLE_MODULE_EXTRAKEYS', + 'ENABLE_MODULE_ECDH', ] SOURCE_MOD_SECP256K1_ZKP = [ 'vendor/secp256k1-zkp/src/secp256k1.c', @@ -824,7 +825,7 @@ source_files = SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_MICROPYTHON + SOURCE_UNIX obj_program.extend(env.Object(source=SOURCE_MOD)) obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero')) if FEATURE_FLAGS["SECP256K1_ZKP"]: - obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function')) + obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function -Wno-maybe-uninitialized')) source_files.extend(SOURCE_MOD_SECP256K1_ZKP) obj_program.extend(env.Object(source=SOURCE_MICROPYTHON)) obj_program.extend(env.Object(source=SOURCE_UNIX)) diff --git a/crypto/Makefile b/crypto/Makefile index b3cd50b027..34bab1175d 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -69,7 +69,8 @@ ZKP_CFLAGS = \ -DENABLE_MODULE_GENERATOR \ -DENABLE_MODULE_RECOVERY \ -DENABLE_MODULE_SCHNORRSIG \ - -DENABLE_MODULE_EXTRAKEYS + -DENABLE_MODULE_EXTRAKEYS \ + -DENABLE_MODULE_ECDH ZKP_PATH = ../vendor/secp256k1-zkp # this is specific for 64-bit builds CFLAGS += -DSECP256K1_CONTEXT_SIZE=208 diff --git a/crypto/ecdsa.c b/crypto/ecdsa.c index 79fdaec670..0e3175e60c 100644 --- a/crypto/ecdsa.c +++ b/crypto/ecdsa.c @@ -635,8 +635,8 @@ int scalar_multiply(const ecdsa_curve *curve, const bignum256 *k, #endif -int ecdh_multiply(const ecdsa_curve *curve, const uint8_t *priv_key, - const uint8_t *pub_key, uint8_t *session_key) { +int tc_ecdh_multiply(const ecdsa_curve *curve, const uint8_t *priv_key, + const uint8_t *pub_key, uint8_t *session_key) { curve_point point = {0}; if (!ecdsa_read_pubkey(curve, pub_key, &point)) { return 1; @@ -1312,3 +1312,13 @@ int ecdsa_recover_pub_from_sig(const ecdsa_curve *curve, uint8_t *pub_key, #endif return tc_ecdsa_recover_pub_from_sig(curve, pub_key, sig, digest, recid); } + +int ecdh_multiply(const ecdsa_curve *curve, const uint8_t *priv_key, + const uint8_t *pub_key, uint8_t *session_key) { +#ifdef USE_SECP256K1_ZKP_ECDSA + if (curve == &secp256k1) { + return zkp_ecdh_multiply(curve, priv_key, pub_key, session_key); + } +#endif + return tc_ecdh_multiply(curve, priv_key, pub_key, session_key); +} diff --git a/crypto/ecdsa_internal.h b/crypto/ecdsa_internal.h index 6d5c98465e..0397f6250f 100644 --- a/crypto/ecdsa_internal.h +++ b/crypto/ecdsa_internal.h @@ -39,5 +39,6 @@ int tc_ecdsa_verify_digest(const ecdsa_curve *curve, const uint8_t *pub_key, int tc_ecdsa_recover_pub_from_sig(const ecdsa_curve *curve, uint8_t *pub_key, const uint8_t *sig, const uint8_t *digest, int recid); - +int tc_ecdh_multiply(const ecdsa_curve *curve, const uint8_t *priv_key, + const uint8_t *pub_key, uint8_t *session_key); #endif diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index 590db52396..12fb9d0d94 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -4426,6 +4426,90 @@ START_TEST(test_aes) { } END_TEST +static void test_ecdh_multiply_helper( + int (*ecdh_multiply_fn)(const ecdsa_curve *curve, const uint8_t *priv_key, + const uint8_t *pub_key, uint8_t *session_key)) { + static struct { + const char *priv_key; + const char *pub_key; + int res; + const char *session_key; + } tests[] = { + // Compressed public key + {"1618cc490a4a5b38d9f877759a2c312026fe9f459edb9ba49e91b6de4a237cad", + "0322c16706cd0d80dbb4e314799ba1323420e7ffa859a0cf0c82a444192bb6c997", 0, + "047b27ebb15e8197c9a560afc1bd45e2a78b864829fc1257333a1a2d7d30d79eed17889" + "8ad4960f756cf155cf46d22f2e3b21df10ee5bad560c467ae0d79427a70"}, + // Uncompressed public key + {"55b57f9ffc79d206eaa2b25dd5fe5a0be2d9d880ddfa777a3a0f9c0b2d3a191e", + "04816c5bb10c97b96a0b02382b8f8c1a8876218af04396976dace353a139752c6baef57" + "449121650cefca54cf9ac4e304890ada667512b5d98171b54a5a8347b09", + 0, + "049b3ab299d119eb89b632ff63ed0b3790508a0020fd729bbc35f39d221101ac5edc3be" + "e252886ea8f68c835ed410b715d41e967d0bd10a01a4b01eaa2320a7f4d"}, + // Invalid compressed public key + {"d2ffd4daa78a7fb253edb315e27f5841df00a581ab2c3330ffded22be98b7c96", + "026a575a9f3d4e945366a78e7961b312018451df8485ee1210767a0575225c2764", 1, + ""}, + // Invalid uncompressed public key + {"7da05844e870b1674c14a9a80b45ef36d221680707b727a7b6c70b2a25e99717", + "71ebf221ab355d070a570525e4c4bff94b27ca97e67fcdfb993f6546e7e1ead0ea09ed1" + "f7e55282f2787c7fc54cc5815660641cd95148a4b56f15818a04c7f72", + 1, ""}, + // Invalid compressed public key - the point at infinity + {"6753537e70935a9c85b0bad5b2aa54fb565b50bcf086acc7836a94318bc442d4", + "000000000000000000000000000000000000000000000000000000000000000000", 1, + ""}, + // Invalid uncompressed public key - the point at infinity + {"6753537e70935a9c85b0bad5b2aa54fb565b50bcf086acc7836a94318bc442d4", + "0000000000000000000000000000000000000000000000000000000000000000000000" + "0" + "00000000000000000000000000000000000000000000000000000000000", + 1, ""}, + // Invalid private key - the group order + {"fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141", + "02e38ad3515c21358659ef113864b26e6caaa6bb780ce02daaf1c13f4fe24bb632", 2, + ""}, + // Invalid private key - zero + {"0000000000000000000000000000000000000000000000000000000000000000", + "038325242a489e883afdc86da5a714e4ffc86530e1b6660ac87ffb87c0045e486c", 2, + ""}, + }; + + const ecdsa_curve *curve = &secp256k1; + uint8_t priv_key[32] = {0}; + uint8_t pub_key[65] = {0}; + uint8_t session_key[65] = {0}; + uint8_t expected_session_key[65] = {0}; + int expected_res = 0; + int res = 0; + + for (size_t i = 0; i < sizeof(tests) / sizeof(*tests); i++) { + memcpy(priv_key, fromhex(tests[i].priv_key), 32); + memcpy(pub_key, fromhex(tests[i].pub_key), 65); + expected_res = tests[i].res; + if (expected_res == 0) { + memcpy(expected_session_key, fromhex(tests[i].session_key), 65); + } + + res = ecdh_multiply_fn(curve, priv_key, pub_key, session_key); + ck_assert_int_eq(expected_res, res); + if (expected_res == 0) { + ck_assert_mem_eq(expected_session_key, session_key, 65); + } + } +} + +START_TEST(test_tc_ecdh_multiply) { + test_ecdh_multiply_helper(tc_ecdh_multiply); +} +END_TEST + +START_TEST(test_zkp_ecdh_multiply) { + test_ecdh_multiply_helper(zkp_ecdh_multiply); +} +END_TEST + // test vectors from // https://datatracker.ietf.org/doc/html/rfc3610 // https://doi.org/10.6028/NIST.SP.800-38C @@ -11351,10 +11435,12 @@ Suite *test_suite(void) { tcase_add_test(tc, test_tc_ecdsa_get_public_key65); tcase_add_test(tc, test_tc_ecdsa_recover_pub_from_sig); tcase_add_test(tc, test_tc_ecdsa_verify_digest); + tcase_add_test(tc, test_tc_ecdh_multiply); tcase_add_test(tc, test_zkp_ecdsa_get_public_key33); tcase_add_test(tc, test_zkp_ecdsa_get_public_key65); tcase_add_test(tc, test_zkp_ecdsa_recover_pub_from_sig); tcase_add_test(tc, test_zkp_ecdsa_verify_digest); + tcase_add_test(tc, test_zkp_ecdh_multiply); #if USE_RFC6979 tcase_add_test(tc, test_tc_ecdsa_sign_digest_deterministic); tcase_add_test(tc, test_zkp_ecdsa_sign_digest_deterministic); diff --git a/crypto/zkp_ecdsa.c b/crypto/zkp_ecdsa.c index aca2c21779..b34c24a90a 100644 --- a/crypto/zkp_ecdsa.c +++ b/crypto/zkp_ecdsa.c @@ -29,6 +29,7 @@ #include "zkp_context.h" #include "vendor/secp256k1-zkp/include/secp256k1.h" +#include "vendor/secp256k1-zkp/include/secp256k1_ecdh.h" #include "vendor/secp256k1-zkp/include/secp256k1_extrakeys.h" #include "vendor/secp256k1-zkp/include/secp256k1_preallocated.h" #include "vendor/secp256k1-zkp/include/secp256k1_recovery.h" @@ -403,3 +404,79 @@ int zkp_ecdsa_verify(const ecdsa_curve *curve, HasherType hasher_type, memzero(hash, sizeof(hash)); return result; } + +static int plain_hash_function(unsigned char *output, const unsigned char *x32, + const unsigned char *y32, void *data) { + (void)data; + output[0] = 0x04; + memcpy(output + 1, x32, 32); + memcpy(output + 33, y32, 32); + return 1; +} + +// ECDH multiplication +// curve has to be &secp256k1 +// private_key_bytes has 32 bytes +// public_key_bytes has 33 or 65 bytes +// session key has 65 bytes +// returns 0 on success +int zkp_ecdh_multiply(const ecdsa_curve *curve, + const uint8_t *private_key_bytes, + const uint8_t *public_key_bytes, uint8_t *session_key) { + assert(curve == &secp256k1); + if (curve != &secp256k1) { + return 1; + } + + int result = 0; + + int public_key_length = 0; + + if (result == 0) { + if (public_key_bytes[0] == 0x04) { + public_key_length = 65; + } else if (public_key_bytes[0] == 0x02 || public_key_bytes[0] == 0x03) { + public_key_length = 33; + } else { + result = 1; + } + } + + const secp256k1_context *context_read_only = zkp_context_get_read_only(); + secp256k1_pubkey public_key = {0}; + + if (result == 0) { + if (secp256k1_ec_pubkey_parse(context_read_only, &public_key, + public_key_bytes, public_key_length) != 1) { + result = 1; + } + } + + secp256k1_context *context_writable = NULL; + if (result == 0) { + context_writable = zkp_context_acquire_writable(); + if (context_writable == NULL) { + result = 1; + } + } + if (result == 0) { + if (secp256k1_context_writable_randomize(context_writable) != 0) { + result = 1; + } + } + + if (result == 0) { + if (secp256k1_ecdh(context_writable, session_key, &public_key, + private_key_bytes, plain_hash_function, NULL) != 1) { + result = 2; + } + } + + if (context_writable) { + zkp_context_release_writable(); + context_writable = NULL; + } + memzero(&public_key, sizeof(public_key)); + + return result; +} diff --git a/crypto/zkp_ecdsa.h b/crypto/zkp_ecdsa.h index aa9b0256fe..2977eac29f 100644 --- a/crypto/zkp_ecdsa.h +++ b/crypto/zkp_ecdsa.h @@ -27,4 +27,6 @@ int zkp_ecdsa_verify_digest(const ecdsa_curve *curve, int zkp_ecdsa_verify(const ecdsa_curve *curve, HasherType hasher_sign, const uint8_t *pub_key, const uint8_t *sig, const uint8_t *msg, uint32_t msg_len); +int zkp_ecdh_multiply(const ecdsa_curve *curve, const uint8_t *priv_key, + const uint8_t *pub_key, uint8_t *session_key); #endif diff --git a/legacy/firmware/Makefile b/legacy/firmware/Makefile index a02c3f2c5e..f85ba1ab76 100644 --- a/legacy/firmware/Makefile +++ b/legacy/firmware/Makefile @@ -23,7 +23,8 @@ ZKP_CFLAGS = \ -DENABLE_MODULE_GENERATOR \ -DENABLE_MODULE_RECOVERY \ -DENABLE_MODULE_SCHNORRSIG \ - -DENABLE_MODULE_EXTRAKEYS + -DENABLE_MODULE_EXTRAKEYS \ + -DENABLE_MODULE_ECDH OBJS += secp256k1-zkp.o OBJS += precomputed_ecmult.o From d00002ee69339a23fa6522b8455b606b12600a05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 2 Aug 2024 17:06:11 +0200 Subject: [PATCH 531/626] refactor(crypto): use secp256k1 submodule in bip32 [no changelog] --- crypto/bip32.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/crypto/bip32.c b/crypto/bip32.c index ee44c24e3c..319e419409 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -300,8 +300,12 @@ int hdnode_public_ckd_cp(const ecdsa_curve *curve, const curve_point *parent, hmac_sha512(parent_chain_code, 32, data, sizeof(data), I); bn_read_be(I, &c); if (bn_is_less(&c, &curve->order)) { // < order - scalar_multiply(curve, &c, child); // b = c * G - point_add(curve, parent, child); // b = a + b + // b = c * G + uint8_t child_pubkey[65] = {0}; + ecdsa_get_public_key65(curve, I, child_pubkey); + ecdsa_read_pubkey(curve, child_pubkey, child); + + point_add(curve, parent, child); // b = a + b if (!point_is_infinity(child)) { if (child_chain_code) { memcpy(child_chain_code, I + 32, 32); From eaa12f1cad279d5f6db38fe6cf57d653e40d65e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 2 Aug 2024 17:41:01 +0200 Subject: [PATCH 532/626] chore(crypto): update secp256k1 submodule to 0.5.1 [no changelog] --- core/SConscript.firmware | 2 +- core/SConscript.unix | 2 +- vendor/secp256k1-zkp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 7f6844a14d..90763ac85a 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -780,7 +780,7 @@ obj_program = [] obj_program.extend(env.Object(source=SOURCE_MOD)) obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero')) if FEATURE_FLAGS["SECP256K1_ZKP"]: - obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function -Wno-maybe-uninitialized')) + obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function')) source_files.extend(SOURCE_MOD_SECP256K1_ZKP) obj_program.extend(env.Object(source=SOURCE_FIRMWARE)) obj_program.extend(env.Object(source=SOURCE_MICROPYTHON)) diff --git a/core/SConscript.unix b/core/SConscript.unix index 288ddcbba9..d51ab2836a 100644 --- a/core/SConscript.unix +++ b/core/SConscript.unix @@ -825,7 +825,7 @@ source_files = SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_MICROPYTHON + SOURCE_UNIX obj_program.extend(env.Object(source=SOURCE_MOD)) obj_program.extend(env.Object(source=SOURCE_MOD_CRYPTO, CCFLAGS='$CCFLAGS -ftrivial-auto-var-init=zero')) if FEATURE_FLAGS["SECP256K1_ZKP"]: - obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function -Wno-maybe-uninitialized')) + obj_program.extend(env.Object(source=SOURCE_MOD_SECP256K1_ZKP, CCFLAGS='$CCFLAGS -Wno-unused-function')) source_files.extend(SOURCE_MOD_SECP256K1_ZKP) obj_program.extend(env.Object(source=SOURCE_MICROPYTHON)) obj_program.extend(env.Object(source=SOURCE_UNIX)) diff --git a/vendor/secp256k1-zkp b/vendor/secp256k1-zkp index 346a053d4c..f8c1b0e0e6 160000 --- a/vendor/secp256k1-zkp +++ b/vendor/secp256k1-zkp @@ -1 +1 @@ -Subproject commit 346a053d4c442e08191f075c3932d03140579d47 +Subproject commit f8c1b0e0e665d81be9074d9702d97ef209cca32d From 3994c654e9218ca8035990d021ead8c583c48157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Tue, 6 Aug 2024 13:12:36 +0200 Subject: [PATCH 533/626] refactor(crypto): extract get_public_key_length [no changelog] --- crypto/zkp_ecdsa.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/crypto/zkp_ecdsa.c b/crypto/zkp_ecdsa.c index b34c24a90a..331ae4af4a 100644 --- a/crypto/zkp_ecdsa.c +++ b/crypto/zkp_ecdsa.c @@ -41,6 +41,16 @@ static bool is_zero_digest(const uint8_t *digest) { return memcmp(digest, zeroes, 32) == 0; } +static size_t get_public_key_length(const uint8_t *public_key_bytes) { + if (public_key_bytes[0] == 0x04) { + return 65; + } else if (public_key_bytes[0] == 0x02 || public_key_bytes[0] == 0x03) { + return 33; + } else { + return 0; + } +} + // ECDSA compressed public key derivation // curve has to be &secp256k1 // private_key_bytes has 32 bytes @@ -322,16 +332,9 @@ int zkp_ecdsa_verify_digest(const ecdsa_curve *curve, int result = 0; - int public_key_length = 0; - - if (result == 0) { - if (public_key_bytes[0] == 0x04) { - public_key_length = 65; - } else if (public_key_bytes[0] == 0x02 || public_key_bytes[0] == 0x03) { - public_key_length = 33; - } else { - result = 1; - } + size_t public_key_length = get_public_key_length(public_key_bytes); + if (public_key_length == 0) { + result = 1; } if (result == 0) { @@ -430,16 +433,9 @@ int zkp_ecdh_multiply(const ecdsa_curve *curve, int result = 0; - int public_key_length = 0; - - if (result == 0) { - if (public_key_bytes[0] == 0x04) { - public_key_length = 65; - } else if (public_key_bytes[0] == 0x02 || public_key_bytes[0] == 0x03) { - public_key_length = 33; - } else { - result = 1; - } + size_t public_key_length = get_public_key_length(public_key_bytes); + if (public_key_length == 0) { + result = 1; } const secp256k1_context *context_read_only = zkp_context_get_read_only(); From a5fd5e179f51d3373cc32e437929e30a4577dccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Mon, 12 Aug 2024 16:18:46 +0200 Subject: [PATCH 534/626] refactor(crypto): use goto cleanup [no changelog] --- crypto/zkp_ecdsa.c | 43 ++++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/crypto/zkp_ecdsa.c b/crypto/zkp_ecdsa.c index 331ae4af4a..8319b59223 100644 --- a/crypto/zkp_ecdsa.c +++ b/crypto/zkp_ecdsa.c @@ -432,42 +432,39 @@ int zkp_ecdh_multiply(const ecdsa_curve *curve, } int result = 0; + secp256k1_context *context_writable = NULL; + const secp256k1_context *context_read_only = zkp_context_get_read_only(); + secp256k1_pubkey public_key = {0}; size_t public_key_length = get_public_key_length(public_key_bytes); if (public_key_length == 0) { result = 1; + goto end; } - const secp256k1_context *context_read_only = zkp_context_get_read_only(); - secp256k1_pubkey public_key = {0}; - - if (result == 0) { - if (secp256k1_ec_pubkey_parse(context_read_only, &public_key, - public_key_bytes, public_key_length) != 1) { - result = 1; - } + if (secp256k1_ec_pubkey_parse(context_read_only, &public_key, + public_key_bytes, public_key_length) != 1) { + result = 1; + goto end; } - secp256k1_context *context_writable = NULL; - if (result == 0) { - context_writable = zkp_context_acquire_writable(); - if (context_writable == NULL) { - result = 1; - } + context_writable = zkp_context_acquire_writable(); + if (context_writable == NULL) { + result = 3; + goto end; } - if (result == 0) { - if (secp256k1_context_writable_randomize(context_writable) != 0) { - result = 1; - } + if (secp256k1_context_writable_randomize(context_writable) != 0) { + result = 3; + goto end; } - if (result == 0) { - if (secp256k1_ecdh(context_writable, session_key, &public_key, - private_key_bytes, plain_hash_function, NULL) != 1) { - result = 2; - } + if (secp256k1_ecdh(context_writable, session_key, &public_key, + private_key_bytes, plain_hash_function, NULL) != 1) { + result = 2; + goto end; } +end: if (context_writable) { zkp_context_release_writable(); context_writable = NULL; From a12a81a321595cb6a2aecefd6bbf9e34bd12b223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Thu, 15 Aug 2024 18:06:14 +0200 Subject: [PATCH 535/626] feat(crypto): introduce ecdsa_tweak_public_key [no changelog] --- crypto/ecdsa.c | 55 ++++++++++++++++++++++++++++ crypto/ecdsa.h | 13 +++++++ crypto/ecdsa_internal.h | 3 ++ crypto/tests/test_check.c | 77 +++++++++++++++++++++++++++++++++++++++ crypto/zkp_ecdsa.c | 67 ++++++++++++++++++++++++++++++++++ crypto/zkp_ecdsa.h | 4 ++ 6 files changed, 219 insertions(+) diff --git a/crypto/ecdsa.c b/crypto/ecdsa.c index 0e3175e60c..a02d4f78ac 100644 --- a/crypto/ecdsa.c +++ b/crypto/ecdsa.c @@ -1142,6 +1142,49 @@ int tc_ecdsa_verify_digest(const ecdsa_curve *curve, const uint8_t *pub_key, return result; } +ecdsa_tweak_pubkey_result tc_ecdsa_tweak_pubkey( + const ecdsa_curve *curve, const uint8_t *public_key_bytes, + const uint8_t *tweak_bytes, uint8_t *tweaked_public_key_bytes) { + int result = ECDSA_TWEAK_PUBKEY_SUCCESS; + curve_point public_key = {0}; + bignum256 tweak = {0}; + curve_point public_tweak = {0}; + + if (public_key_bytes[0] != 0x02 && public_key_bytes[0] != 0x03) { + result = ECDSA_TWEAK_PUBKEY_INVALID_PUBKEY_ERR; + goto end; + } + + if (!ecdsa_read_pubkey(curve, public_key_bytes, &public_key)) { + result = ECDSA_TWEAK_PUBKEY_INVALID_PUBKEY_ERR; + goto end; + } + + bn_read_be(tweak_bytes, &tweak); + if (!bn_is_less(&tweak, &curve->order)) { + result = ECDSA_TWEAK_PUBKEY_INVALID_TWEAK_OR_RESULT_ERR; + goto end; + } + + (void)scalar_multiply(curve, &tweak, &public_tweak); + point_add(curve, &public_tweak, &public_key); + + if (point_is_infinity(&public_key)) { + result = ECDSA_TWEAK_PUBKEY_INVALID_TWEAK_OR_RESULT_ERR; + goto end; + } + + tweaked_public_key_bytes[0] = 0x02 | (public_key.y.val[0] & 0x01); + bn_write_be(&public_key.x, tweaked_public_key_bytes + 1); + +end: + memzero(&public_key, sizeof(public_key)); + memzero(&tweak, sizeof(tweak)); + memzero(&public_tweak, sizeof(public_tweak)); + + return result; +} + int ecdsa_sig_to_der(const uint8_t *sig, uint8_t *der) { int i = 0; uint8_t *p = der, *len = NULL, *len1 = NULL, *len2 = NULL; @@ -1322,3 +1365,15 @@ int ecdh_multiply(const ecdsa_curve *curve, const uint8_t *priv_key, #endif return tc_ecdh_multiply(curve, priv_key, pub_key, session_key); } + +ecdsa_tweak_pubkey_result ecdsa_tweak_pubkey(const ecdsa_curve *curve, + const uint8_t *pub_key, + const uint8_t *tweak, + uint8_t *tweaked_pub_key) { +#ifdef USE_SECP256K1_ZKP_ECDSA + if (curve == &secp256k1) { + return zkp_ecdsa_tweak_pubkey(curve, pub_key, tweak, tweaked_pub_key); + } +#endif + return tc_ecdsa_tweak_pubkey(curve, pub_key, tweak, tweaked_pub_key); +} diff --git a/crypto/ecdsa.h b/crypto/ecdsa.h index 7b951d236e..8b346f4394 100644 --- a/crypto/ecdsa.h +++ b/crypto/ecdsa.h @@ -125,4 +125,17 @@ int ecdsa_recover_pub_from_sig(const ecdsa_curve *curve, uint8_t *pub_key, int ecdsa_sig_to_der(const uint8_t *sig, uint8_t *der); int ecdsa_sig_from_der(const uint8_t *der, size_t der_len, uint8_t sig[64]); +typedef enum { + ECDSA_TWEAK_PUBKEY_SUCCESS = 0, + ECDSA_TWEAK_PUBKEY_INVALID_CURVE_ERR, + ECDSA_TWEAK_PUBKEY_CONTEXT_ERR, + ECDSA_TWEAK_PUBKEY_INVALID_PUBKEY_ERR, + ECDSA_TWEAK_PUBKEY_INVALID_TWEAK_OR_RESULT_ERR, + ECDSA_TWEAK_PUBKEY_UNSPECIFIED_ERR, +} ecdsa_tweak_pubkey_result; + +ecdsa_tweak_pubkey_result ecdsa_tweak_pubkey(const ecdsa_curve *curve, + const uint8_t *pub_key, + const uint8_t *tweak, + uint8_t *tweaked_pub_key); #endif diff --git a/crypto/ecdsa_internal.h b/crypto/ecdsa_internal.h index 0397f6250f..a66a8e9a29 100644 --- a/crypto/ecdsa_internal.h +++ b/crypto/ecdsa_internal.h @@ -41,4 +41,7 @@ int tc_ecdsa_recover_pub_from_sig(const ecdsa_curve *curve, uint8_t *pub_key, int recid); int tc_ecdh_multiply(const ecdsa_curve *curve, const uint8_t *priv_key, const uint8_t *pub_key, uint8_t *session_key); +ecdsa_tweak_pubkey_result tc_ecdsa_tweak_pubkey( + const ecdsa_curve *curve, const uint8_t *public_key_bytes, + const uint8_t *tweak_bytes, uint8_t *tweaked_public_key_bytes); #endif diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index 12fb9d0d94..835e1e2b9e 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -4510,6 +4510,81 @@ START_TEST(test_zkp_ecdh_multiply) { } END_TEST +static void test_ecdsa_tweak_pubkey_helper(ecdsa_tweak_pubkey_result ( + *ecdsa_tweak_pubkey_fn)(const ecdsa_curve *curve, const uint8_t *pub_key, + const uint8_t *priv_tweak, + uint8_t *tweaked_pub_key)) { + static struct { + const char *pub_key; + const char *tweak; + ecdsa_tweak_pubkey_result res; + const char *tweaked_pub_key; + } tests[] = { + {"03062c585e0bf279a06f1741a481e1fc5d6f85fe98c66ba4535b80e72b8cff459e", + "ca3f9fcb28ca7a6819ad4d233a26b2d4cda78dea15278b162428bbb88c36b7f9", + ECDSA_TWEAK_PUBKEY_SUCCESS, + "03375d82263d6a01f13be81210d0c20cafd4b15f1896a9e4acb8bb9c4ee2e524e2"}, + // Zero private tweak + {"03a61dfafced7279cda56dd9535d639b9eb1fde842ffb5c1741efb7a5de61f1784", + "0000000000000000000000000000000000000000000000000000000000000000", + ECDSA_TWEAK_PUBKEY_SUCCESS, + "03a61dfafced7279cda56dd9535d639b9eb1fde842ffb5c1741efb7a5de61f1784"}, + // Invalid public key - uncompressed format + {"0480622d89bb56d2752861db0f0d95ab90dbd962030655d85ab5fc8072ca43e1b0f8e1b" + "63f0949ab0803c471d09a279c93cd85161d35c8efc2acfd21dd4a77e8d3", + "5862cd69aabb8a6804656b4adea447ea89bf384875dfb3a19591ec910e29dae9", + ECDSA_TWEAK_PUBKEY_INVALID_PUBKEY_ERR, ""}, + // Invalid public key - the point at infinity + {"0000000000000000000000000000000000000000000000000000000000000000", + "89406ab5f3e2be503dbbbaf4e63e0154ddedeea6793494296f42d4f88c9ae814", + ECDSA_TWEAK_PUBKEY_INVALID_PUBKEY_ERR, ""}, + // Invalid public key - the point doesn't lie on the curve + {"025b685000eabe640bdb1fd714d6dea837d76e16a6dbd3f0c839ea18328091def9", + "9180a64d35e5b47b6c4eb296a0936334c0499fa27439b5d507372ee8af8c67bd", + ECDSA_TWEAK_PUBKEY_INVALID_PUBKEY_ERR, ""}, + // Invalid private tweak - the group order + {"02b3303f7bc64cef5894f265a6f0412260359850bf5b57e6fd931791e21abcd1ff", + "fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141", + ECDSA_TWEAK_PUBKEY_INVALID_TWEAK_OR_RESULT_ERR, ""}, + // Invalid tweaked public key - the point at infinity + {"023c0429e944048c61cdad02e73f3277806eaabfa92b3326f834f7a363f126a355", + "7b30f9ed2f8ec13ecbd77788815c53773ace8b2f6900f2b386c96e2c440bce02", + ECDSA_TWEAK_PUBKEY_INVALID_TWEAK_OR_RESULT_ERR, ""}}; + + const ecdsa_curve *curve = &secp256k1; + uint8_t pub_key[33] = {0}; + uint8_t tweak[32] = {0}; + uint8_t tweaked_pub_key[33] = {0}; + uint8_t expected_tweaked_pub_key[33] = {0}; + ecdsa_tweak_pubkey_result expected_res = 0; + ecdsa_tweak_pubkey_result res = 0; + + for (size_t i = 0; i < sizeof(tests) / sizeof(*tests); i++) { + memcpy(pub_key, fromhex(tests[i].pub_key), 33); + memcpy(tweak, fromhex(tests[i].tweak), 32); + expected_res = tests[i].res; + if (expected_res == ECDSA_TWEAK_PUBKEY_SUCCESS) { + memcpy(expected_tweaked_pub_key, fromhex(tests[i].tweaked_pub_key), 33); + } + + res = ecdsa_tweak_pubkey_fn(curve, pub_key, tweak, tweaked_pub_key); + ck_assert_int_eq(expected_res, res); + if (expected_res == ECDSA_TWEAK_PUBKEY_SUCCESS) { + ck_assert_mem_eq(expected_tweaked_pub_key, tweaked_pub_key, 33); + } + } +} + +START_TEST(test_tc_ecdsa_tweak_pubkey) { + test_ecdsa_tweak_pubkey_helper(tc_ecdsa_tweak_pubkey); +} +END_TEST + +START_TEST(test_zkp_ecdsa_tweak_pubkey) { + test_ecdsa_tweak_pubkey_helper(zkp_ecdsa_tweak_pubkey); +} +END_TEST + // test vectors from // https://datatracker.ietf.org/doc/html/rfc3610 // https://doi.org/10.6028/NIST.SP.800-38C @@ -11436,11 +11511,13 @@ Suite *test_suite(void) { tcase_add_test(tc, test_tc_ecdsa_recover_pub_from_sig); tcase_add_test(tc, test_tc_ecdsa_verify_digest); tcase_add_test(tc, test_tc_ecdh_multiply); + tcase_add_test(tc, test_tc_ecdsa_tweak_pubkey); tcase_add_test(tc, test_zkp_ecdsa_get_public_key33); tcase_add_test(tc, test_zkp_ecdsa_get_public_key65); tcase_add_test(tc, test_zkp_ecdsa_recover_pub_from_sig); tcase_add_test(tc, test_zkp_ecdsa_verify_digest); tcase_add_test(tc, test_zkp_ecdh_multiply); + tcase_add_test(tc, test_zkp_ecdsa_tweak_pubkey); #if USE_RFC6979 tcase_add_test(tc, test_tc_ecdsa_sign_digest_deterministic); tcase_add_test(tc, test_zkp_ecdsa_sign_digest_deterministic); diff --git a/crypto/zkp_ecdsa.c b/crypto/zkp_ecdsa.c index 8319b59223..cf9c01d16b 100644 --- a/crypto/zkp_ecdsa.c +++ b/crypto/zkp_ecdsa.c @@ -24,6 +24,7 @@ #include <stdbool.h> #include <string.h> +#include "ecdsa.h" #include "memzero.h" #include "secp256k1.h" #include "zkp_context.h" @@ -473,3 +474,69 @@ int zkp_ecdh_multiply(const ecdsa_curve *curve, return result; } + +// ECDSA public key tweak +// tweaked_public_key = public_key + tweak * G +// curve has to be &secp256k1 +// public_key_bytes has 33 bytes +// tweak_bytes has 32 bytes +// tweaked_public_key_bytes has 33 bytes +ecdsa_tweak_pubkey_result zkp_ecdsa_tweak_pubkey( + const ecdsa_curve *curve, const uint8_t *public_key_bytes, + const uint8_t *tweak_bytes, uint8_t *tweaked_public_key_bytes) { + assert(curve == &secp256k1); + if (curve != &secp256k1) { + return ECDSA_TWEAK_PUBKEY_INVALID_CURVE_ERR; + } + + int result = ECDSA_TWEAK_PUBKEY_SUCCESS; + secp256k1_context *context_writable = NULL; + const secp256k1_context *context_read_only = zkp_context_get_read_only(); + secp256k1_pubkey public_key = {0}; + + size_t public_key_length = get_public_key_length(public_key_bytes); + if (public_key_length != 33) { + result = ECDSA_TWEAK_PUBKEY_INVALID_PUBKEY_ERR; + goto end; + } + if (secp256k1_ec_pubkey_parse(context_read_only, &public_key, + public_key_bytes, public_key_length) != 1) { + result = ECDSA_TWEAK_PUBKEY_INVALID_PUBKEY_ERR; + goto end; + } + + context_writable = zkp_context_acquire_writable(); + if (context_writable == NULL) { + result = ECDSA_TWEAK_PUBKEY_CONTEXT_ERR; + goto end; + } + if (secp256k1_context_writable_randomize(context_writable) != 0) { + result = ECDSA_TWEAK_PUBKEY_CONTEXT_ERR; + goto end; + } + + if (secp256k1_ec_pubkey_tweak_add(context_writable, &public_key, + tweak_bytes) != 1) { + // The tweak is not less than the group order, or the resulting public key + // is the point at infinity. + result = ECDSA_TWEAK_PUBKEY_INVALID_TWEAK_OR_RESULT_ERR; + goto end; + } + + public_key_length = 33; + if (secp256k1_ec_pubkey_serialize(context_read_only, tweaked_public_key_bytes, + &public_key_length, &public_key, + SECP256K1_EC_COMPRESSED) != 1) { + result = ECDSA_TWEAK_PUBKEY_UNSPECIFIED_ERR; + goto end; + } + +end: + if (context_writable) { + zkp_context_release_writable(); + context_writable = NULL; + } + memzero(&public_key, sizeof(public_key)); + + return result; +} diff --git a/crypto/zkp_ecdsa.h b/crypto/zkp_ecdsa.h index 2977eac29f..57754c47a6 100644 --- a/crypto/zkp_ecdsa.h +++ b/crypto/zkp_ecdsa.h @@ -3,6 +3,7 @@ #include <stdint.h> +#include "ecdsa.h" #include "hasher.h" int zkp_ecdsa_get_public_key33(const ecdsa_curve *curve, @@ -29,4 +30,7 @@ int zkp_ecdsa_verify(const ecdsa_curve *curve, HasherType hasher_sign, const uint8_t *msg, uint32_t msg_len); int zkp_ecdh_multiply(const ecdsa_curve *curve, const uint8_t *priv_key, const uint8_t *pub_key, uint8_t *session_key); +ecdsa_tweak_pubkey_result zkp_ecdsa_tweak_pubkey( + const ecdsa_curve *curve, const uint8_t *public_key_bytes, + const uint8_t *tweak_bytes, uint8_t *tweaked_public_key_bytes); #endif From dd6d48aff34709f318b2df22295b8880a4340593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Thu, 15 Aug 2024 12:04:06 +0200 Subject: [PATCH 536/626] refactor(crypt): remove unused function [no changelog] --- crypto/bip32.c | 25 ------------------------- crypto/bip32.h | 7 ------- crypto/tests/test_check.c | 29 ----------------------------- crypto/tests/test_speed.c | 16 ++-------------- 4 files changed, 2 insertions(+), 75 deletions(-) diff --git a/crypto/bip32.c b/crypto/bip32.c index 319e419409..2112577303 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -355,31 +355,6 @@ int hdnode_public_ckd(HDNode *inout, uint32_t i) { return 1; } -void hdnode_public_ckd_address_optimized(const curve_point *pub, - const uint8_t *chain_code, uint32_t i, - uint32_t version, - HasherType hasher_pubkey, - HasherType hasher_base58, char *addr, - int addrsize, int addrformat) { - uint8_t child_pubkey[33] = {0}; - curve_point b = {0}; - - hdnode_public_ckd_cp(&secp256k1, pub, chain_code, i, &b, NULL); - child_pubkey[0] = 0x02 | (b.y.val[0] & 0x01); - bn_write_be(&b.x, child_pubkey + 1); - - switch (addrformat) { - case 1: // Segwit-in-P2SH - ecdsa_get_address_segwit_p2sh(child_pubkey, version, hasher_pubkey, - hasher_base58, addr, addrsize); - break; - default: // normal address - ecdsa_get_address(child_pubkey, version, hasher_pubkey, hasher_base58, - addr, addrsize); - break; - } -} - #if USE_BIP32_CACHE static bool private_ckd_cache_root_set = false; static CONFIDENTIAL HDNode private_ckd_cache_root; diff --git a/crypto/bip32.h b/crypto/bip32.h index 27084719ca..8407be7387 100644 --- a/crypto/bip32.h +++ b/crypto/bip32.h @@ -82,13 +82,6 @@ int hdnode_public_ckd_cp(const ecdsa_curve *curve, const curve_point *parent, int hdnode_public_ckd(HDNode *inout, uint32_t i); -void hdnode_public_ckd_address_optimized(const curve_point *pub, - const uint8_t *chain_code, uint32_t i, - uint32_t version, - HasherType hasher_pubkey, - HasherType hasher_base58, char *addr, - int addrsize, int addrformat); - #if USE_BIP32_CACHE void bip32_cache_clear(void); int hdnode_private_ckd_cached(HDNode *inout, const uint32_t *i, size_t i_count, diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index 835e1e2b9e..a1e155a12d 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -2014,34 +2014,6 @@ START_TEST(test_bip32_compare) { } END_TEST -START_TEST(test_bip32_optimized) { - HDNode root; - hdnode_from_seed((uint8_t *)"NothingToSeeHere", 16, SECP256K1_NAME, &root); - ck_assert_int_eq(hdnode_fill_public_key(&root), 0); - - curve_point pub; - ecdsa_read_pubkey(&secp256k1, root.public_key, &pub); - - HDNode node; - char addr1[MAX_ADDR_SIZE], addr2[MAX_ADDR_SIZE]; - - for (int i = 0; i < 40; i++) { - // unoptimized - memcpy(&node, &root, sizeof(HDNode)); - hdnode_public_ckd(&node, i); - ck_assert_int_eq(hdnode_fill_public_key(&node), 0); - ecdsa_get_address(node.public_key, 0, HASHER_SHA2_RIPEMD, HASHER_SHA2D, - addr1, sizeof(addr1)); - // optimized - hdnode_public_ckd_address_optimized(&pub, root.chain_code, i, 0, - HASHER_SHA2_RIPEMD, HASHER_SHA2D, addr2, - sizeof(addr2), 0); - // check - ck_assert_str_eq(addr1, addr2); - } -} -END_TEST - START_TEST(test_bip32_cache_1) { HDNode node1, node2; int i, r; @@ -11471,7 +11443,6 @@ Suite *test_suite(void) { tcase_add_test(tc, test_bip32_vector_3); tcase_add_test(tc, test_bip32_vector_4); tcase_add_test(tc, test_bip32_compare); - tcase_add_test(tc, test_bip32_optimized); tcase_add_test(tc, test_bip32_cache_1); tcase_add_test(tc, test_bip32_cache_2); suite_add_tcase(s, tc); diff --git a/crypto/tests/test_speed.c b/crypto/tests/test_speed.c index e2371ee85f..db033a1fcb 100644 --- a/crypto/tests/test_speed.c +++ b/crypto/tests/test_speed.c @@ -174,7 +174,7 @@ void prepare_node(void) { hdnode_fill_public_key(&root); } -void bench_ckd_normal(int iterations) { +void bench_ckd(int iterations) { char addr[MAX_ADDR_SIZE]; HDNode node; for (int i = 0; i < iterations; i++) { @@ -186,17 +186,6 @@ void bench_ckd_normal(int iterations) { } } -void bench_ckd_optimized(int iterations) { - char addr[MAX_ADDR_SIZE]; - curve_point pub; - ecdsa_read_pubkey(&secp256k1, root.public_key, &pub); - for (int i = 0; i < iterations; i++) { - hdnode_public_ckd_address_optimized(&pub, root.chain_code, i, 0, - HASHER_SHA2, HASHER_SHA2D, addr, - sizeof(addr), false); - } -} - void bench(void (*func)(int), const char *name, int iterations) { clock_t t = clock(); func(iterations); @@ -224,8 +213,7 @@ int main(void) { prepare_node(); - BENCH(bench_ckd_normal, 1000); - BENCH(bench_ckd_optimized, 1000); + BENCH(bench_ckd, 1000); return 0; } From c8b811bac51c835545c5f52ec4873c3f0e4e3385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Thu, 15 Aug 2024 11:57:36 +0200 Subject: [PATCH 537/626] refacor(crypto): refactor hdnode_public_ckd [no changelog] --- crypto/bip32.c | 89 ++++++++++++++++++-------------------------------- crypto/bip32.h | 5 --- 2 files changed, 31 insertions(+), 63 deletions(-) diff --git a/crypto/bip32.c b/crypto/bip32.c index 2112577303..41d09c706d 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -281,78 +281,51 @@ int hdnode_private_ckd(HDNode *inout, uint32_t i) { } } -int hdnode_public_ckd_cp(const ecdsa_curve *curve, const curve_point *parent, - const uint8_t *parent_chain_code, uint32_t i, - curve_point *child, uint8_t *child_chain_code) { - uint8_t data[(1 + 32) + 4] = {0}; - uint8_t I[32 + 32] = {0}; - bignum256 c = {0}; +int hdnode_public_ckd(HDNode *inout, uint32_t i) { + if (!inout->curve->params) { + // SLIP-10 doesn't support public key to public key derivation for + // curve25519 and ed25519, Cardano BIP32-ed22519 public key to public key + // derivation is not implemented + return 0; + } + + uint8_t data[33 + 4] = {0}; + uint8_t digest[32 + 32] = {0}; + int result = 0; if (i & 0x80000000) { // private derivation return 0; } - data[0] = 0x02 | (parent->y.val[0] & 0x01); - bn_write_be(&parent->x, data + 1); + memcpy(data, inout->public_key, 33); write_be(data + 33, i); while (true) { - hmac_sha512(parent_chain_code, 32, data, sizeof(data), I); - bn_read_be(I, &c); - if (bn_is_less(&c, &curve->order)) { // < order - // b = c * G - uint8_t child_pubkey[65] = {0}; - ecdsa_get_public_key65(curve, I, child_pubkey); - ecdsa_read_pubkey(curve, child_pubkey, child); - - point_add(curve, parent, child); // b = a + b - if (!point_is_infinity(child)) { - if (child_chain_code) { - memcpy(child_chain_code, I + 32, 32); - } - - // Wipe all stack data. - memzero(data, sizeof(data)); - memzero(I, sizeof(I)); - memzero(&c, sizeof(c)); - return 1; - } + hmac_sha512(inout->chain_code, 32, data, sizeof(data), digest); + + result = ecdsa_tweak_pubkey(inout->curve->params, inout->public_key, digest, + inout->public_key); + if (result == ECDSA_TWEAK_PUBKEY_SUCCESS) { + memcpy(inout->chain_code, digest + 32, 32); + inout->depth++; + inout->child_num = i; + memzero(inout->private_key, 32); + break; + } + if (result != ECDSA_TWEAK_PUBKEY_INVALID_TWEAK_OR_RESULT_ERR) { + break; } + // The tweak is less than the order of the curve or the tweaked public key + // is the point at infinity data[0] = 1; - memcpy(data + 1, I + 32, 32); - } -} - -int hdnode_public_ckd(HDNode *inout, uint32_t i) { - curve_point parent = {0}, child = {0}; - - if (!inout->curve->params) { - // SLIP-10 doesn't support public key to public key derivation for - // curve25519 and ed25519, Cardano BIP32-ed22519 public key to public key - // derivation is not implemented - return 0; - } - - if (!ecdsa_read_pubkey(inout->curve->params, inout->public_key, &parent)) { - return 0; - } - if (!hdnode_public_ckd_cp(inout->curve->params, &parent, inout->chain_code, i, - &child, inout->chain_code)) { - return 0; + memcpy(data + 1, digest + 32, 32); } - memzero(inout->private_key, 32); - inout->depth++; - inout->child_num = i; - inout->public_key[0] = 0x02 | (child.y.val[0] & 0x01); - bn_write_be(&child.x, inout->public_key + 1); - inout->is_public_key_set = true; - // Wipe all stack data. - memzero(&parent, sizeof(parent)); - memzero(&child, sizeof(child)); + memzero(digest, sizeof(digest)); + memzero(data, sizeof(data)); - return 1; + return result == ECDSA_TWEAK_PUBKEY_SUCCESS; } #if USE_BIP32_CACHE diff --git a/crypto/bip32.h b/crypto/bip32.h index 8407be7387..b02beb6541 100644 --- a/crypto/bip32.h +++ b/crypto/bip32.h @@ -75,11 +75,6 @@ int hdnode_from_seed(const uint8_t *seed, int seed_len, const char *curve, hdnode_private_ckd((X), ((I) | 0x80000000)) int hdnode_private_ckd(HDNode *inout, uint32_t i); - -int hdnode_public_ckd_cp(const ecdsa_curve *curve, const curve_point *parent, - const uint8_t *parent_chain_code, uint32_t i, - curve_point *child, uint8_t *child_chain_code); - int hdnode_public_ckd(HDNode *inout, uint32_t i); #if USE_BIP32_CACHE From 07ac2fd4d80120eada092fc47bfffd7b976b0802 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak <pavol@rusnak.io> Date: Mon, 26 Aug 2024 18:09:06 +0200 Subject: [PATCH 538/626] chore(rust/trezor-client): run clippy [no changelog] --- rust/trezor-client/src/client/common.rs | 2 +- rust/trezor-client/src/client/ethereum.rs | 2 +- rust/trezor-client/src/flows/sign_tx.rs | 16 ++++++++-------- rust/trezor-client/src/lib.rs | 14 +++++++------- rust/trezor-client/src/transport/protocol.rs | 18 +++++++++--------- rust/trezor-client/src/transport/udp.rs | 2 +- rust/trezor-client/src/transport/webusb.rs | 8 ++++---- rust/trezor-client/src/utils.rs | 2 +- 8 files changed, 32 insertions(+), 32 deletions(-) diff --git a/rust/trezor-client/src/client/common.rs b/rust/trezor-client/src/client/common.rs index b8bef6c9fd..897f849704 100644 --- a/rust/trezor-client/src/client/common.rs +++ b/rust/trezor-client/src/client/common.rs @@ -237,7 +237,7 @@ impl<'a> EntropyRequest<'a> { /// Provide exactly 32 bytes or entropy. pub fn ack_entropy(self, entropy: Vec<u8>) -> Result<TrezorResponse<'a, (), protos::Success>> { if entropy.len() != 32 { - return Err(Error::InvalidEntropy) + return Err(Error::InvalidEntropy); } let mut req = protos::EntropyAck::new(); diff --git a/rust/trezor-client/src/client/ethereum.rs b/rust/trezor-client/src/client/ethereum.rs index 1780681d5f..12ac0ea0d7 100644 --- a/rust/trezor-client/src/client/ethereum.rs +++ b/rust/trezor-client/src/client/ethereum.rs @@ -45,7 +45,7 @@ impl Trezor { Box::new(|_, m: protos::EthereumMessageSignature| { let signature = m.signature(); if signature.len() != 65 { - return Err(Error::MalformedSignature) + return Err(Error::MalformedSignature); } let r = signature[0..32].try_into().unwrap(); let s = signature[32..64].try_into().unwrap(); diff --git a/rust/trezor-client/src/flows/sign_tx.rs b/rust/trezor-client/src/flows/sign_tx.rs index 3faaeaaa29..40c72bdc73 100644 --- a/rust/trezor-client/src/flows/sign_tx.rs +++ b/rust/trezor-client/src/flows/sign_tx.rs @@ -22,7 +22,7 @@ use tracing::trace; /// Fulfill a TxRequest for TXINPUT. fn ack_input_request(req: &protos::TxRequest, psbt: &psbt::Psbt) -> Result<protos::TxAck> { if req.details.is_none() || !req.details.has_request_index() { - return Err(Error::MalformedTxRequest(req.clone())) + return Err(Error::MalformedTxRequest(req.clone())); } // Choose either the tx we are signing or a dependent tx. @@ -63,7 +63,7 @@ fn ack_input_request(req: &protos::TxRequest, psbt: &psbt::Psbt) -> Result<proto Error::InvalidPsbt(format!("invalid utxo for PSBT input {}", input_index)) })? } else { - return Err(Error::InvalidPsbt(format!("no utxo for PSBT input {}", input_index))) + return Err(Error::InvalidPsbt(format!("no utxo for PSBT input {}", input_index))); }; // If there is exactly 1 HD keypath known, we can provide it. If more it's multisig. @@ -108,7 +108,7 @@ fn ack_output_request( network: Network, ) -> Result<protos::TxAck> { if req.details.is_none() || !req.details.has_request_index() { - return Err(Error::MalformedTxRequest(req.clone())) + return Err(Error::MalformedTxRequest(req.clone())); } // For outputs, the Trezor only needs bin_outputs to be set for dependent txs and full outputs @@ -127,7 +127,7 @@ fn ack_output_request( } else if let Some(ref utxo) = inp.witness_utxo { utxo } else { - return Err(Error::InvalidPsbt("not all inputs have utxo data".to_owned())) + return Err(Error::InvalidPsbt("not all inputs have utxo data".to_owned())); }; let mut bin_output = TxOutputBinType::new(); @@ -187,7 +187,7 @@ fn ack_output_request( /// Fulfill a TxRequest for TXMETA. fn ack_meta_request(req: &protos::TxRequest, psbt: &psbt::Psbt) -> Result<protos::TxAck> { if req.details.is_none() { - return Err(Error::MalformedTxRequest(req.clone())) + return Err(Error::MalformedTxRequest(req.clone())); } // Choose either the tx we are signing or a dependent tx. @@ -312,9 +312,9 @@ impl<'a> SignTxProgress<'a> { TxRequestType::TXOUTPUT => ack_output_request(&self.req, psbt, network), TxRequestType::TXMETA => ack_meta_request(&self.req, psbt), TxRequestType::TXEXTRADATA => unimplemented!(), //TODO(stevenroose) implement - TxRequestType::TXORIGINPUT | - TxRequestType::TXORIGOUTPUT | - TxRequestType::TXPAYMENTREQ => unimplemented!(), + TxRequestType::TXORIGINPUT + | TxRequestType::TXORIGOUTPUT + | TxRequestType::TXPAYMENTREQ => unimplemented!(), TxRequestType::TXFINISHED => unreachable!(), }?; self.ack_msg(ack) diff --git a/rust/trezor-client/src/lib.rs b/rust/trezor-client/src/lib.rs index 7d0ccfdcc8..cd8b7ebb99 100644 --- a/rust/trezor-client/src/lib.rs +++ b/rust/trezor-client/src/lib.rs @@ -159,7 +159,7 @@ mod tests { #[serial] fn test_emulator_find() { let trezors = find_devices(false); - assert!(trezors.len() > 0); + assert!(!trezors.is_empty()); assert!(trezors.iter().any(|t| t.model == Model::TrezorEmulator)); } @@ -169,12 +169,12 @@ mod tests { let emulator = init_emulator(); let features = emulator.features().expect("Failed to get features"); assert_eq!(features.vendor(), "trezor.io"); - assert_eq!(features.initialized(), true); - assert_eq!(features.firmware_present(), false); - assert_eq!(features.initialized(), true); - assert_eq!(features.pin_protection(), false); - assert_eq!(features.passphrase_protection(), false); - assert!(["T", "Safe 3"].contains(&features.model())); + assert!(features.initialized()); + assert!(!features.firmware_present()); + assert!(features.initialized()); + assert!(!features.pin_protection()); + assert!(!features.passphrase_protection()); + assert!(["T", "Safe 3", "Safe 5"].contains(&features.model())); } #[test] diff --git a/rust/trezor-client/src/transport/protocol.rs b/rust/trezor-client/src/transport/protocol.rs index e058b5a9ba..ab2c6d886a 100644 --- a/rust/trezor-client/src/transport/protocol.rs +++ b/rust/trezor-client/src/transport/protocol.rs @@ -40,7 +40,7 @@ impl<L: Link> Protocol for ProtocolV2<L> { let resp = self.link.read_chunk()?; if resp[0] != 0x03 { println!("bad magic in v2 session_begin: {:x} instead of 0x03", resp[0]); - return Err(Error::DeviceBadMagic) + return Err(Error::DeviceBadMagic); } self.session_id = BigEndian::read_u32(&resp[1..5]); Ok(()) @@ -55,7 +55,7 @@ impl<L: Link> Protocol for ProtocolV2<L> { let resp = self.link.read_chunk()?; if resp[0] != 0x04 { println!("bad magic in v2 session_end: {:x} instead of 0x04", resp[0]); - return Err(Error::DeviceBadMagic) + return Err(Error::DeviceBadMagic); } self.session_id = 0; Ok(()) @@ -107,10 +107,10 @@ impl<L: Link> Protocol for ProtocolV2<L> { let chunk = self.link.read_chunk()?; if chunk[0] != 0x01 { println!("bad magic in v2 read: {:x} instead of 0x01", chunk[0]); - return Err(Error::DeviceBadMagic) + return Err(Error::DeviceBadMagic); } if BigEndian::read_u32(&chunk[1..5]) != self.session_id { - return Err(Error::DeviceBadSessionId) + return Err(Error::DeviceBadSessionId); } let message_type_id = BigEndian::read_u32(&chunk[5..9]); let message_type = MessageType::from_i32(message_type_id as i32) @@ -123,13 +123,13 @@ impl<L: Link> Protocol for ProtocolV2<L> { let chunk = self.link.read_chunk()?; if chunk[0] != 0x02 { println!("bad magic in v2 session_begin: {:x} instead of 0x02", chunk[0]); - return Err(Error::DeviceBadMagic) + return Err(Error::DeviceBadMagic); } if BigEndian::read_u32(&chunk[1..5]) != self.session_id { - return Err(Error::DeviceBadSessionId) + return Err(Error::DeviceBadSessionId); } if BigEndian::read_u32(&chunk[5..9]) != seq as u32 { - return Err(Error::DeviceUnexpectedSequenceNumber) + return Err(Error::DeviceUnexpectedSequenceNumber); } seq += 1; @@ -185,7 +185,7 @@ impl<L: Link> Protocol for ProtocolV1<L> { "bad magic in v1 read: {:x}{:x}{:x} instead of 0x3f2323", chunk[0], chunk[1], chunk[2] ); - return Err(Error::DeviceBadMagic) + return Err(Error::DeviceBadMagic); } let message_type_id = BigEndian::read_u16(&chunk[3..5]) as u32; let message_type = MessageType::from_i32(message_type_id as i32) @@ -197,7 +197,7 @@ impl<L: Link> Protocol for ProtocolV1<L> { let chunk = self.link.read_chunk()?; if chunk[0] != 0x3f { println!("bad magic in v1 read: {:x} instead of 0x3f", chunk[0]); - return Err(Error::DeviceBadMagic) + return Err(Error::DeviceBadMagic); } data.extend(&chunk[1..]); diff --git a/rust/trezor-client/src/transport/udp.rs b/rust/trezor-client/src/transport/udp.rs index 54c4ba3797..921a2c931d 100644 --- a/rust/trezor-client/src/transport/udp.rs +++ b/rust/trezor-client/src/transport/udp.rs @@ -48,7 +48,7 @@ impl Link for UdpLink { let timeout = Duration::from_millis(WRITE_TIMEOUT_MS); self.socket.set_write_timeout(Some(timeout))?; if let Err(e) = self.socket.send(&chunk) { - return Err(e.into()) + return Err(e.into()); } Ok(()) } diff --git a/rust/trezor-client/src/transport/webusb.rs b/rust/trezor-client/src/transport/webusb.rs index 9e65af0901..635f048ecb 100644 --- a/rust/trezor-client/src/transport/webusb.rs +++ b/rust/trezor-client/src/transport/webusb.rs @@ -53,7 +53,7 @@ impl Link for WebUsbLink { debug_assert_eq!(CHUNK_SIZE, chunk.len()); let timeout = Duration::from_millis(WRITE_TIMEOUT_MS); if let Err(e) = self.handle.write_interrupt(self.endpoint, &chunk, timeout) { - return Err(e.into()) + return Err(e.into()); } Ok(()) } @@ -101,7 +101,7 @@ impl WebUsbTransport { .ok_or(rusb::Error::Other)? .class_code(); if class_code != constants::LIBUSB_CLASS_VENDOR_SPEC { - continue + continue; } devices.push(AvailableDevice { @@ -137,9 +137,9 @@ impl WebUsbTransport { let dev_desc = dev.device_descriptor()?; let dev_id = (dev_desc.vendor_id(), dev_desc.product_id()); if derive_model(dev_id).as_ref() != Some(&device.model) { - return Err(Error::DeviceDisconnected) + return Err(Error::DeviceDisconnected); } - let mut handle = dev.open()?; + let handle = dev.open()?; handle.claim_interface(interface)?; Ok(Box::new(WebUsbTransport { diff --git a/rust/trezor-client/src/utils.rs b/rust/trezor-client/src/utils.rs index 1d4647eb60..c248599700 100644 --- a/rust/trezor-client/src/utils.rs +++ b/rust/trezor-client/src/utils.rs @@ -45,7 +45,7 @@ pub fn parse_recoverable_signature( sig: &[u8], ) -> Result<RecoverableSignature, bitcoin::secp256k1::Error> { if sig.len() != 65 { - return Err(bitcoin::secp256k1::Error::InvalidSignature) + return Err(bitcoin::secp256k1::Error::InvalidSignature); } // Bitcoin Core sets the first byte to `27 + rec + (fCompressed ? 4 : 0)`. From 09d3301785fae0bc51581e067183a705941c1f39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Thu, 8 Aug 2024 15:13:43 +0200 Subject: [PATCH 539/626] feat(core): improve ETH send flow --- core/.changelog.d/3858.fixed | 1 + core/embed/rust/librust_qstr.h | 1 + .../generated/translated_string.rs | 20 +- .../ui/model_mercury/flow/confirm_output.rs | 211 ++++++++++++------ .../ui/model_mercury/flow/confirm_summary.rs | 66 ++++-- .../rust/src/ui/model_mercury/flow/util.rs | 8 +- .../embed/rust/src/ui/model_mercury/layout.rs | 4 +- core/mocks/generated/trezorui2.pyi | 4 +- core/mocks/trezortranslate_keys.pyi | 10 +- .../src/trezor/ui/layouts/mercury/__init__.py | 80 +++---- core/src/trezor/ui/layouts/tr/__init__.py | 12 +- core/src/trezor/ui/layouts/tt/__init__.py | 22 +- core/translations/cs.json | 10 +- core/translations/de.json | 10 +- core/translations/en.json | 10 +- core/translations/es.json | 10 +- core/translations/fr.json | 10 +- tests/input_flows_helpers.py | 2 +- tests/ui_tests/fixtures.json | 146 ++++++------ 19 files changed, 363 insertions(+), 274 deletions(-) create mode 100644 core/.changelog.d/3858.fixed diff --git a/core/.changelog.d/3858.fixed b/core/.changelog.d/3858.fixed new file mode 100644 index 0000000000..303df6505c --- /dev/null +++ b/core/.changelog.d/3858.fixed @@ -0,0 +1 @@ +[T3T1] Improved ETH send flow. diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index ad8a9e0a75..a9e6cd1705 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -168,6 +168,7 @@ static void _librust_qstrs(void) { MP_QSTR_can_go_back; MP_QSTR_cancel_arrow; MP_QSTR_cancel_cross; + MP_QSTR_cancel_text; MP_QSTR_case_sensitive; MP_QSTR_check_homescreen_format; MP_QSTR_chunkify; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 5ac8a98c19..96eb44aee5 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -449,11 +449,11 @@ pub enum TranslatedString { #[cfg(feature = "universal_fw")] ethereum__data_size_template = 273, // "Size: {0} bytes" #[cfg(feature = "universal_fw")] - ethereum__gas_limit = 274, // "Gas limit:" + ethereum__gas_limit = 274, // "Gas limit" #[cfg(feature = "universal_fw")] - ethereum__gas_price = 275, // "Gas price:" + ethereum__gas_price = 275, // "Gas price" #[cfg(feature = "universal_fw")] - ethereum__max_gas_price = 276, // "Max gas price:" + ethereum__max_gas_price = 276, // "Max gas price" #[cfg(feature = "universal_fw")] ethereum__name_and_version = 277, // "Name and version" #[cfg(feature = "universal_fw")] @@ -461,7 +461,7 @@ pub enum TranslatedString { #[cfg(feature = "universal_fw")] ethereum__no_message_field = 279, // "No message field" #[cfg(feature = "universal_fw")] - ethereum__priority_fee = 280, // "Priority fee:" + ethereum__priority_fee = 280, // "Priority fee" #[cfg(feature = "universal_fw")] ethereum__show_full_array = 281, // "Show full array" #[cfg(feature = "universal_fw")] @@ -931,7 +931,7 @@ pub enum TranslatedString { send__confirm_sending = 641, // "Sending amount" send__from_multiple_accounts = 642, // "Sending from multiple accounts." send__including_fee = 643, // "Including fee:" - send__maximum_fee = 644, // "Maximum fee:" + send__maximum_fee = 644, // "Maximum fee" send__receiving_to_multisig = 645, // "Receiving to a multisig address." send__title_confirm_sending = 646, // "Confirm sending" send__title_joint_transaction = 647, // "Joint transaction" @@ -1801,11 +1801,11 @@ impl TranslatedString { #[cfg(feature = "universal_fw")] Self::ethereum__data_size_template => "Size: {0} bytes", #[cfg(feature = "universal_fw")] - Self::ethereum__gas_limit => "Gas limit:", + Self::ethereum__gas_limit => "Gas limit", #[cfg(feature = "universal_fw")] - Self::ethereum__gas_price => "Gas price:", + Self::ethereum__gas_price => "Gas price", #[cfg(feature = "universal_fw")] - Self::ethereum__max_gas_price => "Max gas price:", + Self::ethereum__max_gas_price => "Max gas price", #[cfg(feature = "universal_fw")] Self::ethereum__name_and_version => "Name and version", #[cfg(feature = "universal_fw")] @@ -1813,7 +1813,7 @@ impl TranslatedString { #[cfg(feature = "universal_fw")] Self::ethereum__no_message_field => "No message field", #[cfg(feature = "universal_fw")] - Self::ethereum__priority_fee => "Priority fee:", + Self::ethereum__priority_fee => "Priority fee", #[cfg(feature = "universal_fw")] Self::ethereum__show_full_array => "Show full array", #[cfg(feature = "universal_fw")] @@ -2283,7 +2283,7 @@ impl TranslatedString { Self::send__confirm_sending => "Sending amount", Self::send__from_multiple_accounts => "Sending from multiple accounts.", Self::send__including_fee => "Including fee:", - Self::send__maximum_fee => "Maximum fee:", + Self::send__maximum_fee => "Maximum fee", Self::send__receiving_to_multisig => "Receiving to a multisig address.", Self::send__title_confirm_sending => "Confirm sending", Self::send__title_joint_transaction => "Joint transaction", diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index 26c30a081d..bbed8b3bbf 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -1,3 +1,5 @@ +use heapless::Vec; + use crate::{ error, micropython::{map::Map, obj::Obj, qstr::Qstr, util}, @@ -25,11 +27,12 @@ use super::{ util::ConfirmBlobParams, }; +const MENU_ITEM_CANCEL: usize = 0; +const MENU_ITEM_ACCOUNT_INFO: usize = 1; + #[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmOutput { Address, - Amount, - // Tap, Menu, AccountInfo, CancelTap, @@ -41,6 +44,47 @@ impl FlowState for ConfirmOutput { *self as usize } + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Address, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Address, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + (Self::Menu, SwipeDirection::Right) => Self::Address.swipe(direction), + (Self::Menu, SwipeDirection::Left) => Self::AccountInfo.swipe(direction), + (Self::AccountInfo | Self::CancelTap, SwipeDirection::Right) => { + Self::Menu.swipe(direction) + } + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (_, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => Self::CancelTap.swipe_left(), + (Self::Menu, FlowMsg::Choice(MENU_ITEM_ACCOUNT_INFO)) => Self::AccountInfo.transit(), + (Self::Menu, FlowMsg::Cancelled) => Self::Address.swipe_right(), + (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), + (_, FlowMsg::Cancelled) => Self::Menu.transit(), + _ => self.do_nothing(), + } + } +} + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ConfirmOutputWithAmount { + Address, + Amount, + Menu, + AccountInfo, + CancelTap, +} + +impl FlowState for ConfirmOutputWithAmount { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { (Self::Address | Self::Amount, SwipeDirection::Left) => Self::Menu.swipe(direction), @@ -48,7 +92,6 @@ impl FlowState for ConfirmOutput { (Self::Amount, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), (Self::Amount, SwipeDirection::Down) => Self::Address.swipe(direction), (Self::Menu, SwipeDirection::Right) => Self::Address.swipe(direction), - (Self::Menu, SwipeDirection::Left) => Self::AccountInfo.swipe(direction), (Self::AccountInfo | Self::CancelTap, SwipeDirection::Right) => { Self::Menu.swipe(direction) } @@ -71,85 +114,107 @@ impl FlowState for ConfirmOutput { #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_output(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmOutput::new_obj) } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, new_confirm_output_obj) } } -impl ConfirmOutput { - const EXTRA_PADDING: i16 = 6; - - fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { - let title: Option<TString> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; - let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; - let account_path: Option<TString> = - kwargs.get(Qstr::MP_QSTR_account_path)?.try_into_option()?; - let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; - let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; - - let address: Obj = kwargs.get(Qstr::MP_QSTR_address)?; - let amount: Obj = kwargs.get(Qstr::MP_QSTR_amount)?; - - let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; - let text_mono: bool = kwargs.get_or(Qstr::MP_QSTR_text_mono, true)?; - - // Address - let content_address = ConfirmBlobParams::new(TR::words__address.into(), address, None) - .with_subtitle(title) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .with_chunkify(chunkify) - .with_text_mono(text_mono) - .into_layout()? - .one_button_request(ButtonRequest::from_num(br_code, br_name)); - - // Amount - let content_amount = ConfirmBlobParams::new(TR::words__amount.into(), amount, None) - .with_subtitle(title) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .with_text_mono(text_mono) - .with_swipe_down() - .into_layout()? - .one_button_request(ButtonRequest::from_num(br_code, br_name)); - - // Menu - let content_menu = Frame::left_aligned( - "".into(), - VerticalMenu::empty() - .item(theme::ICON_CHEVRON_RIGHT, "Account info".into()) - .danger(theme::ICON_CANCEL, "Cancel sign".into()), - ) +fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: Option<TString> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; + let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; + let account_path: Option<TString> = + kwargs.get(Qstr::MP_QSTR_account_path)?.try_into_option()?; + let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; + let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; + + let address: Obj = kwargs.get(Qstr::MP_QSTR_address)?; + let amount: Option<Obj> = kwargs.get(Qstr::MP_QSTR_amount)?.try_into_option()?; + + let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; + let text_mono: bool = kwargs.get_or(Qstr::MP_QSTR_text_mono, true)?; + + let cancel_text: Option<TString> = kwargs.get(Qstr::MP_QSTR_cancel_text)?.try_into_option()?; + + // Address + let content_address = ConfirmBlobParams::new(TR::words__address.into(), address, None) + .with_subtitle(title) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_chunkify(chunkify) + .with_text_mono(text_mono) + .into_layout()? + .one_button_request(ButtonRequest::from_num(br_code, br_name)); + + // Menu + let mut menu = VerticalMenu::empty(); + let mut menu_items = Vec::<usize, 3>::new(); + if account.is_some() && account_path.is_some() { + menu = menu.item( + theme::ICON_CHEVRON_RIGHT, + TR::address_details__account_info.into(), + ); + menu_items.push(MENU_ITEM_ACCOUNT_INFO); + } + menu = menu.danger( + theme::ICON_CANCEL, + cancel_text.unwrap_or(TR::send__cancel_sign.into()), + ); + unwrap!(menu_items.push(MENU_ITEM_CANCEL)); + let content_menu = Frame::left_aligned(TString::empty(), menu) .with_cancel_button() .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(|msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + .map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { + let selected_item = menu_items[i]; + Some(FlowMsg::Choice(selected_item)) + } FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - // AccountInfo - let ad = AddressDetails::new(TR::send__send_from.into(), account, account_path)?; - let content_account = ad.map(|_| Some(FlowMsg::Cancelled)); - - // CancelTap - let content_cancel_tap = Frame::left_aligned( - TR::send__cancel_sign.into(), - SwipeContent::new(PromptScreen::new_tap_to_cancel()), + // AccountInfo + let ad = AddressDetails::new(TR::send__send_from.into(), account, account_path)?; + let content_account = ad.map(|_| Some(FlowMsg::Cancelled)); + + // CancelTap + let content_cancel_tap = Frame::left_aligned( + TR::send__cancel_sign.into(), + SwipeContent::new(PromptScreen::new_tap_to_cancel()), + ) + .with_cancel_button() + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let res = if amount.is_some() { + let content_amount = ConfirmBlobParams::new( + TR::words__amount.into(), + amount.unwrap_or(Obj::const_none()), + None, ) - .with_cancel_button() - .with_footer(TR::instructions__tap_to_confirm.into(), None) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) - .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .map(|msg| match msg { - FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - _ => None, - }); - - let res = SwipeFlow::new(&ConfirmOutput::Address)? + .with_subtitle(title) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_text_mono(text_mono) + .with_swipe_down() + .into_layout()? + .one_button_request(ButtonRequest::from_num(br_code, br_name)); + + SwipeFlow::new(&ConfirmOutputWithAmount::Address)? + .with_page(&ConfirmOutputWithAmount::Address, content_address)? + .with_page(&ConfirmOutputWithAmount::Amount, content_amount)? + .with_page(&ConfirmOutputWithAmount::Menu, content_menu)? + .with_page(&ConfirmOutputWithAmount::AccountInfo, content_account)? + .with_page(&ConfirmOutputWithAmount::CancelTap, content_cancel_tap)? + } else { + SwipeFlow::new(&ConfirmOutput::Address)? .with_page(&ConfirmOutput::Address, content_address)? - .with_page(&ConfirmOutput::Amount, content_amount)? .with_page(&ConfirmOutput::Menu, content_menu)? .with_page(&ConfirmOutput::AccountInfo, content_account)? - .with_page(&ConfirmOutput::CancelTap, content_cancel_tap)?; - Ok(LayoutObj::new(res)?.into()) - } + .with_page(&ConfirmOutput::CancelTap, content_cancel_tap)? + }; + + Ok(LayoutObj::new(res)?.into()) } diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index f128180e0f..50d3543002 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -1,3 +1,5 @@ +use heapless::Vec; + use crate::{ error, micropython::{iter::IterBuf, map::Map, obj::Obj, qstr::Qstr, util}, @@ -25,6 +27,10 @@ use super::{ util::ShowInfoParams, }; +const MENU_ITEM_CANCEL: usize = 0; +const MENU_ITEM_FEE_INFO: usize = 1; +const MENU_ITEM_ACCOUNT_INFO: usize = 2; + #[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmSummary { Summary, @@ -59,9 +65,9 @@ impl FlowState for ConfirmSummary { match (self, msg) { (_, FlowMsg::Info) => Self::Menu.transit(), (Self::Hold, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), - (Self::Menu, FlowMsg::Choice(0)) => Self::FeeInfo.swipe_left(), - (Self::Menu, FlowMsg::Choice(1)) => Self::AccountInfo.swipe_left(), - (Self::Menu, FlowMsg::Choice(2)) => Self::CancelTap.swipe_left(), + (Self::Menu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => Self::CancelTap.swipe_left(), + (Self::Menu, FlowMsg::Choice(MENU_ITEM_FEE_INFO)) => Self::FeeInfo.swipe_left(), + (Self::Menu, FlowMsg::Choice(MENU_ITEM_ACCOUNT_INFO)) => Self::AccountInfo.swipe_left(), (Self::Menu, FlowMsg::Cancelled) => Self::Summary.swipe_right(), (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), (_, FlowMsg::Cancelled) => Self::Menu.transit(), @@ -83,6 +89,8 @@ impl ConfirmSummary { let fee_items: Obj = kwargs.get(Qstr::MP_QSTR_fee_items)?; let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; + let cancel_text: Option<TString> = + kwargs.get(Qstr::MP_QSTR_cancel_text)?.try_into_option()?; // Summary let mut summary = ShowInfoParams::new(title) @@ -114,37 +122,59 @@ impl ConfirmSummary { _ => None, }); - // Menu - let content_menu = Frame::left_aligned( - "".into(), - VerticalMenu::empty() - .item(theme::ICON_CHEVRON_RIGHT, "Fee info".into()) - .item(theme::ICON_CHEVRON_RIGHT, "Account info".into()) - .danger(theme::ICON_CANCEL, "Cancel sign".into()), - ) - .with_cancel_button() - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(|msg| match msg { - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - }); - // FeeInfo + let mut has_fee_info = false; let mut fee = ShowInfoParams::new(TR::confirm_total__title_fee.into()).with_cancel_button(); for pair in IterBuf::new().try_iterate(fee_items)? { let [label, value]: [TString; 2] = util::iter_into_array(pair)?; fee = unwrap!(fee.add(label, value)); + has_fee_info = true; } let content_fee = fee.into_layout()?; // AccountInfo + let mut has_account_info = false; let mut account = ShowInfoParams::new(TR::send__send_from.into()).with_cancel_button(); for pair in IterBuf::new().try_iterate(account_items)? { let [label, value]: [TString; 2] = util::iter_into_array(pair)?; account = unwrap!(account.add(label, value)); + has_account_info = true; } let content_account = account.into_layout()?; + // Menu + let mut menu = VerticalMenu::empty(); + let mut menu_items = Vec::<usize, 3>::new(); + if has_fee_info { + menu = menu.item( + theme::ICON_CHEVRON_RIGHT, + TR::confirm_total__title_fee.into(), + ); + menu_items.push(MENU_ITEM_FEE_INFO); + } + if has_account_info { + menu = menu.item( + theme::ICON_CHEVRON_RIGHT, + TR::address_details__account_info.into(), + ); + menu_items.push(MENU_ITEM_ACCOUNT_INFO); + } + menu = menu.danger( + theme::ICON_CANCEL, + cancel_text.unwrap_or(TR::send__cancel_sign.into()), + ); + unwrap!(menu_items.push(MENU_ITEM_CANCEL)); + let content_menu = Frame::left_aligned(TString::empty(), menu) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { + let selected_item = menu_items[i]; + Some(FlowMsg::Choice(selected_item)) + } + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + // CancelTap let content_cancel_tap = Frame::left_aligned( TR::send__cancel_sign.into(), diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/model_mercury/flow/util.rs index 7b7c4324c8..dbcdbef0d4 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/util.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/util.rs @@ -15,7 +15,7 @@ use crate::{ Component, SwipeDirection, }, flow::{FlowMsg, Swipable, SwipePage}, - layout::util::ConfirmBlob, + layout::util::{ConfirmBlob, StrOrBytes}, model_mercury::component::SwipeContent, }, }; @@ -102,7 +102,11 @@ impl ConfirmBlobParams { let paragraphs = ConfirmBlob { description: self.description.unwrap_or("".into()), extra: self.extra.unwrap_or("".into()), - data: self.data.try_into()?, + data: if self.data != Obj::const_none() { + self.data.try_into()? + } else { + StrOrBytes::Str("".into()) + }, description_font: &theme::TEXT_NORMAL, extra_font: &theme::TEXT_DEMIBOLD, data_font: if self.chunkify { diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 646eab2e3e..8f14345ebf 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1758,12 +1758,13 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// title: str | None, /// address: str, - /// amount: str, + /// amount: str | None, /// chunkify: bool, /// account: str | None, /// account_path: str | None, /// br_code: ButtonRequestType, /// br_name: str, + /// cancel_text: str | None = None, /// ) -> LayoutObj[UiResult]: /// """Confirm recipient.""" Qstr::MP_QSTR_flow_confirm_output => obj_fn_kw!(0, flow::new_confirm_output).as_obj(), @@ -1776,6 +1777,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// fee_items: Iterable[tuple[str, str]], /// br_code: ButtonRequestType, /// br_name: str, + /// cancel_text: str | None = None, /// ) -> LayoutObj[UiResult]: /// """Total summary and hold to confirm.""" Qstr::MP_QSTR_flow_confirm_summary => obj_fn_kw!(0, flow::new_confirm_summary).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 290cc53d10..20bc5f2100 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -579,12 +579,13 @@ def flow_confirm_output( *, title: str | None, address: str, - amount: str, + amount: str | None, chunkify: bool, account: str | None, account_path: str | None, br_code: ButtonRequestType, br_name: str, + cancel_text: str | None = None, ) -> LayoutObj[UiResult]: """Confirm recipient.""" @@ -598,6 +599,7 @@ def flow_confirm_summary( fee_items: Iterable[tuple[str, str]], br_code: ButtonRequestType, br_name: str, + cancel_text: str | None = None, ) -> LayoutObj[UiResult]: """Total summary and hold to confirm.""" diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index d2a24425bc..22c7efd30f 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -297,13 +297,13 @@ class TR: ethereum__amount_sent: str = "Amount sent:" ethereum__contract: str = "Contract:" ethereum__data_size_template: str = "Size: {0} bytes" - ethereum__gas_limit: str = "Gas limit:" - ethereum__gas_price: str = "Gas price:" - ethereum__max_gas_price: str = "Max gas price:" + ethereum__gas_limit: str = "Gas limit" + ethereum__gas_price: str = "Gas price" + ethereum__max_gas_price: str = "Max gas price" ethereum__name_and_version: str = "Name and version" ethereum__new_contract: str = "new contract?" ethereum__no_message_field: str = "No message field" - ethereum__priority_fee: str = "Priority fee:" + ethereum__priority_fee: str = "Priority fee" ethereum__show_full_array: str = "Show full array" ethereum__show_full_domain: str = "Show full domain" ethereum__show_full_message: str = "Show full message" @@ -732,7 +732,7 @@ class TR: send__from_multiple_accounts: str = "Sending from multiple accounts." send__incl_transaction_fee: str = "incl. Transaction fee" send__including_fee: str = "Including fee:" - send__maximum_fee: str = "Maximum fee:" + send__maximum_fee: str = "Maximum fee" send__receiving_to_multisig: str = "Receiving to a multisig address." send__send_from: str = "Send from" send__sign_transaction: str = "Sign transaction" diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 5b83080d7f..4126a1feb7 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -625,7 +625,7 @@ def show_success( async def confirm_output( address: str, - amount: str, + amount: str | None = None, title: str | None = None, hold: bool = False, br_code: ButtonRequestType = ButtonRequestType.ConfirmOutput, @@ -634,6 +634,7 @@ async def confirm_output( chunkify: bool = False, source_account: str | None = None, source_account_path: str | None = None, + cancel_text: str | None = None, ) -> None: if address_label is not None: title = address_label @@ -655,6 +656,7 @@ async def confirm_output( account_path=source_account_path, br_code=br_code, br_name="confirm_output", + cancel_text=cancel_text, ) ) ) @@ -976,18 +978,21 @@ def confirm_total( account_items=account_items, br_name=br_name, br_code=br_code, + cancel_text=TR.send__cancel_sign, ) ) ) -def confirm_summary( - items: Iterable[tuple[str, str]], +def _confirm_summary( + items: Iterable[tuple[str, str]] | None = None, title: str | None = None, info_items: Iterable[tuple[str, str]] | None = None, info_title: str | None = None, + fee_items: Iterable[tuple[str, str]] | None = None, br_name: str = "confirm_total", br_code: ButtonRequestType = ButtonRequestType.SignTx, + cancel_text: str | None = None, ) -> Awaitable[None]: # TODO: info_title title = title or TR.words__title_summary # def_arg @@ -997,10 +1002,11 @@ def confirm_summary( trezorui2.flow_confirm_summary( title=title, items=items or (), - fee_items=(), + fee_items=fee_items or (), account_items=info_items or (), br_name=br_name, br_code=br_code, + cancel_text=cancel_text, ) ) ) @@ -1012,48 +1018,26 @@ async def confirm_ethereum_tx( recipient: str, total_amount: str, maximum_fee: str, - items: Iterable[tuple[str, str]], + fee_info_items: Iterable[tuple[str, str]], br_name: str = "confirm_ethereum_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, chunkify: bool = False, ) -> None: - info_layout = RustLayout( - trezorui2.show_info_with_cancel( - title=TR.confirm_total__title_fee, - items=items, - ) + await confirm_output( + recipient, + title=TR.words__recipient, + chunkify=chunkify, + cancel_text=TR.buttons__cancel, ) - while True: - # Allowing going back and forth between recipient and summary/details - await confirm_blob( - br_name, - TR.words__recipient, - recipient, - verb=TR.buttons__continue, - chunkify=chunkify, - prompt_screen=False, - ) - - try: - total_layout = RustLayout( - trezorui2.confirm_total( - title=TR.words__title_summary, - items=[ - (f"{TR.words__amount}:", total_amount), - (TR.send__maximum_fee, maximum_fee), - ], - info_button=True, - cancel_arrow=True, - ) - ) - total_layout.request_complete_repaint() - await raise_if_not_confirmed( - with_info(total_layout, info_layout, br_name, br_code) - ) - break - except ActionCancelled: - continue + await _confirm_summary( + items=( + (TR.words__amount, total_amount), + (TR.send__maximum_fee, maximum_fee), + ), + fee_items=fee_info_items, + cancel_text=TR.buttons__cancel, + ) async def confirm_ethereum_staking_tx( title: str, @@ -1088,11 +1072,11 @@ async def confirm_ethereum_staking_tx( items = ((TR.send__maximum_fee, maximum_fee),) else: items = ( - (TR.words__amount + ":", total_amount), + (TR.words__amount, total_amount), (TR.send__maximum_fee, maximum_fee), ) - await confirm_summary( - items, # items + await _confirm_summary( + items=items, title=title, info_title=TR.confirm_total__title_fee, info_items=info_items, @@ -1113,8 +1097,8 @@ def confirm_solana_tx( amount_title if amount_title is not None else f"{TR.words__amount}:" ) # def_arg fee_title = fee_title or TR.words__fee # def_arg - return confirm_summary( - ((amount_title, amount), (fee_title, fee)), + return _confirm_summary( + items=((amount_title, amount), (fee_title, fee)), info_items=items, br_name=br_name, br_code=br_code, @@ -1122,11 +1106,11 @@ def confirm_solana_tx( def confirm_joint_total(spending_amount: str, total_amount: str) -> Awaitable[None]: - return confirm_summary( - items=[ + return _confirm_summary( + items=( (TR.send__you_are_contributing, spending_amount), (TR.send__to_the_total_amount, total_amount), - ], + ), title=TR.send__title_joint_transaction, br_name="confirm_joint_total", br_code=ButtonRequestType.SignTx, diff --git a/core/src/trezor/ui/layouts/tr/__init__.py b/core/src/trezor/ui/layouts/tr/__init__.py index 54b32b464b..8d54956f91 100644 --- a/core/src/trezor/ui/layouts/tr/__init__.py +++ b/core/src/trezor/ui/layouts/tr/__init__.py @@ -1216,7 +1216,7 @@ async def confirm_ethereum_staking_tx( amount_title = verb amount_value = "" else: - amount_title = TR.words__amount + ":" + amount_title = f"{TR.words__amount}:" amount_value = total_amount await raise_if_not_confirmed( interact( @@ -1224,9 +1224,9 @@ async def confirm_ethereum_staking_tx( trezorui2.altcoin_tx_summary( amount_title=amount_title, amount_value=amount_value, - fee_title=TR.send__maximum_fee, + fee_title=f"{TR.send__maximum_fee}:", fee_value=maximum_fee, - items=info_items, + items=[(f"{k}:", v) for (k, v) in info_items], cancel_cross=True, ) ), @@ -1269,7 +1269,7 @@ async def confirm_ethereum_tx( recipient: str, total_amount: str, maximum_fee: str, - items: Iterable[tuple[str, str]], + fee_info_items: Iterable[tuple[str, str]], br_name: str = "confirm_ethereum_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, chunkify: bool = False, @@ -1278,9 +1278,9 @@ async def confirm_ethereum_tx( trezorui2.altcoin_tx_summary( amount_title=f"{TR.words__amount}:", amount_value=total_amount, - fee_title=TR.send__maximum_fee, + fee_title=f"{TR.send__maximum_fee}:", fee_value=maximum_fee, - items=items, + items=[(f"{k}:", v) for (k, v) in fee_info_items], ) ) diff --git a/core/src/trezor/ui/layouts/tt/__init__.py b/core/src/trezor/ui/layouts/tt/__init__.py index f7253b6d7c..93215a0e71 100644 --- a/core/src/trezor/ui/layouts/tt/__init__.py +++ b/core/src/trezor/ui/layouts/tt/__init__.py @@ -1054,7 +1054,7 @@ def confirm_total( if fee_rate_amount: info_items.append((TR.confirm_total__fee_rate_colon, fee_rate_amount)) - return confirm_summary( + return _confirm_summary( items, TR.words__title_summary, info_items=info_items, @@ -1063,7 +1063,7 @@ def confirm_total( ) -def confirm_summary( +def _confirm_summary( items: Iterable[tuple[str, str]], title: str | None = None, info_items: Iterable[tuple[str, str]] | None = None, @@ -1098,7 +1098,7 @@ async def confirm_ethereum_tx( recipient: str, total_amount: str, maximum_fee: str, - items: Iterable[tuple[str, str]], + fee_info_items: Iterable[tuple[str, str]], br_name: str = "confirm_ethereum_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, chunkify: bool = False, @@ -1108,7 +1108,7 @@ async def confirm_ethereum_tx( title=TR.words__title_summary, items=[ (f"{TR.words__amount}:", total_amount), - (TR.send__maximum_fee, maximum_fee), + (f"{TR.send__maximum_fee}:", maximum_fee), ], info_button=True, cancel_arrow=True, @@ -1117,7 +1117,7 @@ async def confirm_ethereum_tx( info_layout = RustLayout( trezorui2.show_info_with_cancel( title=TR.confirm_total__title_fee, - items=items, + items=[(f"{k}:", v) for (k, v) in fee_info_items], ) ) @@ -1169,17 +1169,17 @@ async def confirm_ethereum_staking_tx( # confirmation if verb == TR.ethereum__staking_claim: - items = ((TR.send__maximum_fee, maximum_fee),) + items = ((f"{TR.send__maximum_fee}:", maximum_fee),) else: items = ( - (TR.words__amount + ":", total_amount), - (TR.send__maximum_fee, maximum_fee), + (f"{TR.words__amount}:", total_amount), + (f"{TR.send__maximum_fee}:", maximum_fee), ) - await confirm_summary( + await _confirm_summary( items, # items title=title, info_title=TR.confirm_total__title_fee, - info_items=info_items, + info_items=[(f"{k}:", v) for (k, v) in info_items], br_name=br_name, br_code=br_code, ) @@ -1197,7 +1197,7 @@ def confirm_solana_tx( amount_title if amount_title is not None else f"{TR.words__amount}:" ) # def_arg fee_title = fee_title or TR.words__fee # def_arg - return confirm_summary( + return _confirm_summary( ((amount_title, amount), (fee_title, fee)), info_items=items, br_name=br_name, diff --git a/core/translations/cs.json b/core/translations/cs.json index 061084351f..55e8f8c7da 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -329,13 +329,13 @@ "ethereum__amount_sent": "Odeslaná částka:", "ethereum__contract": "Kontrakt:", "ethereum__data_size_template": "Velikost: {0} bajtů", - "ethereum__gas_limit": "Limit gasu:", - "ethereum__gas_price": "Cena gasu:", - "ethereum__max_gas_price": "Maximální cena gasu:", + "ethereum__gas_limit": "Limit gasu", + "ethereum__gas_price": "Cena gasu", + "ethereum__max_gas_price": "Maximální cena gasu", "ethereum__name_and_version": "Název a verze", "ethereum__new_contract": "nový kontrakt?", "ethereum__no_message_field": "Žádné pole zprávy", - "ethereum__priority_fee": "Přednostní poplatek:", + "ethereum__priority_fee": "Přednostní poplatek", "ethereum__show_full_array": "Zobrazit celé pole", "ethereum__show_full_domain": "Zobrazit celou doménu", "ethereum__show_full_message": "Zobrazit celou zprávu", @@ -760,7 +760,7 @@ "send__from_multiple_accounts": "Odesílání z více účtů.", "send__incl_transaction_fee": "vč. transakčního poplatku", "send__including_fee": "Včetně poplatku:", - "send__maximum_fee": "Maximální poplatek:", + "send__maximum_fee": "Maximální poplatek", "send__receiving_to_multisig": "Příjem na adresách multisig.", "send__send_from": "Odeslat z", "send__sign_transaction": "Podepsat transakci", diff --git a/core/translations/de.json b/core/translations/de.json index 9abad7d31e..f986e1f5ab 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -329,13 +329,13 @@ "ethereum__amount_sent": "Gesendeter Betrag:", "ethereum__contract": "Kontrakt:", "ethereum__data_size_template": "Größe: {0} Bytes", - "ethereum__gas_limit": "Gas-Grenze:", - "ethereum__gas_price": "Gas-Preis:", - "ethereum__max_gas_price": "Max. Gas-Preis:", + "ethereum__gas_limit": "Gas-Grenze", + "ethereum__gas_price": "Gas-Preis", + "ethereum__max_gas_price": "Max. Gas-Preis", "ethereum__name_and_version": "Name und Version", "ethereum__new_contract": "neuer Kontrakt?", "ethereum__no_message_field": "Kein Nachrichtenfeld", - "ethereum__priority_fee": "Prioritätsgebühr:", + "ethereum__priority_fee": "Prioritätsgebühr", "ethereum__show_full_array": "Ganzes anzeigen", "ethereum__show_full_domain": "Ganze anzeigen", "ethereum__show_full_message": "Ganze zeigen", @@ -760,7 +760,7 @@ "send__from_multiple_accounts": "Von mehreren Konten gesendet.", "send__incl_transaction_fee": "inkl. Transaktionsgebühr", "send__including_fee": "Einschließ. Gebühr:", - "send__maximum_fee": "Max. Gebühr:", + "send__maximum_fee": "Max. Gebühr", "send__receiving_to_multisig": "Von Multisig-Adresse empfangen.", "send__send_from": "Senden von", "send__sign_transaction": "Transaktion signieren", diff --git a/core/translations/en.json b/core/translations/en.json index b7a6d2bcf6..7c56be40b9 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -299,13 +299,13 @@ "ethereum__amount_sent": "Amount sent:", "ethereum__contract": "Contract:", "ethereum__data_size_template": "Size: {0} bytes", - "ethereum__gas_limit": "Gas limit:", - "ethereum__gas_price": "Gas price:", - "ethereum__max_gas_price": "Max gas price:", + "ethereum__gas_limit": "Gas limit", + "ethereum__gas_price": "Gas price", + "ethereum__max_gas_price": "Max gas price", "ethereum__name_and_version": "Name and version", "ethereum__new_contract": "new contract?", "ethereum__no_message_field": "No message field", - "ethereum__priority_fee": "Priority fee:", + "ethereum__priority_fee": "Priority fee", "ethereum__show_full_array": "Show full array", "ethereum__show_full_domain": "Show full domain", "ethereum__show_full_message": "Show full message", @@ -734,7 +734,7 @@ "send__from_multiple_accounts": "Sending from multiple accounts.", "send__incl_transaction_fee": "incl. Transaction fee", "send__including_fee": "Including fee:", - "send__maximum_fee": "Maximum fee:", + "send__maximum_fee": "Maximum fee", "send__receiving_to_multisig": "Receiving to a multisig address.", "send__send_from": "Send from", "send__sign_transaction": "Sign transaction", diff --git a/core/translations/es.json b/core/translations/es.json index 2bd98dc917..95e2a6a2cf 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -329,13 +329,13 @@ "ethereum__amount_sent": "Importe enviado:", "ethereum__contract": "Contrato:", "ethereum__data_size_template": "Tamaño: {0} bytes", - "ethereum__gas_limit": "Límite de gas:", - "ethereum__gas_price": "Precio de gas:", - "ethereum__max_gas_price": "Precio máximo de gas:", + "ethereum__gas_limit": "Límite de gas", + "ethereum__gas_price": "Precio de gas", + "ethereum__max_gas_price": "Precio máximo de gas", "ethereum__name_and_version": "Nombre y versión", "ethereum__new_contract": "¿Nuevo contrato?", "ethereum__no_message_field": "Sin campo de mensaje.", - "ethereum__priority_fee": "Comisión de prioridad:", + "ethereum__priority_fee": "Comisión de prioridad", "ethereum__show_full_array": "Ver matriz íntegra.", "ethereum__show_full_domain": "Ver dominio íntegro.", "ethereum__show_full_message": "Ver mensaje íntegro.", @@ -760,7 +760,7 @@ "send__from_multiple_accounts": "Enviando desde varias cuentas.", "send__incl_transaction_fee": "incl. comisión de transacción", "send__including_fee": "Comisión incluida:", - "send__maximum_fee": "Comisión máxima:", + "send__maximum_fee": "Comisión máxima", "send__receiving_to_multisig": "Recepción en una dirección multifirma.", "send__send_from": "Enviar desde", "send__sign_transaction": "Firmar transacción", diff --git a/core/translations/fr.json b/core/translations/fr.json index 56aae9ed8e..72e9a493ba 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -329,13 +329,13 @@ "ethereum__amount_sent": "Montant envoyé :", "ethereum__contract": "Contrat :", "ethereum__data_size_template": "Taille : {0} octets", - "ethereum__gas_limit": "Limite de gaz :", - "ethereum__gas_price": "Prix du gaz :", - "ethereum__max_gas_price": "Prix max du gaz :", + "ethereum__gas_limit": "Limite de gaz", + "ethereum__gas_price": "Prix du gaz", + "ethereum__max_gas_price": "Prix max du gaz", "ethereum__name_and_version": "Nom et version", "ethereum__new_contract": "nouveau contrat ?", "ethereum__no_message_field": "0 champ de mess.", - "ethereum__priority_fee": "Frais de priorité :", + "ethereum__priority_fee": "Frais de priorité", "ethereum__show_full_array": "Aff. liste complète", "ethereum__show_full_domain": "Aff. domaine complet", "ethereum__show_full_message": "Aff. message complet", @@ -760,7 +760,7 @@ "send__from_multiple_accounts": "Envoi depuis plusieurs comptes.", "send__incl_transaction_fee": "Frais de transaction inclus", "send__including_fee": "Frais inclus :", - "send__maximum_fee": "Frais max :", + "send__maximum_fee": "Frais max", "send__receiving_to_multisig": "Récep. vers adr. multisignatures.", "send__send_from": "Envoyer depuis", "send__sign_transaction": "Signer la transaction", diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 63f317086d..cdf5ca1c25 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -489,7 +489,7 @@ def confirm_tx_staking( if info: self.debug.press_right(wait=True) TR.assert_equals_multiple( - self.debug.wait_layout().title(), + self.debug.wait_layout().title().rstrip(":"), [ "ethereum__staking_stake_address", "ethereum__staking_claim_address", diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 306f9f5193..ff2c486f88 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -19060,15 +19060,15 @@ "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", "T3T1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "f6da157bdea4ae4d89661f12adc96ca99074f142d2e98e8fd339dfb0554cb0c9", -"T3T1_en_ethereum-test_definitions.py::test_builtin": "b605a64b843e89831e440ee9c44c1dc12a4bf5062d3279f707f34739257926b7", -"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "2b10036d64f8d34e04cc27fe1057bae9ad70ad5d1f034fd76f39656040c2d492", -"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "875e8029e1d22c55342149fefd1f12f9bcb075b0063d10e2c3fd7276bb6fbfdf", +"T3T1_en_ethereum-test_definitions.py::test_builtin": "1c38c3525b07103255c0a4a0419579b3e12738b213f5556bb0ac54b1994a51ee", +"T3T1_en_ethereum-test_definitions.py::test_builtin_token": "1c324a3f0e193d488f0486614291bef80121b797873457e8af98842cc498c642", +"T3T1_en_ethereum-test_definitions.py::test_chain_id_allowed": "e095804871f8cf67238d3b8da1a199ed74caa5bf393b6538f239e71e3160d4f0", "T3T1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "fcf99475735b6d37e98dc4a0dd5881b525b2161b41de2874667ca8017a5cf63b", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "f7ea3fce70c0c26353e3c4b4bc0e9353ff5fc56d6cbf1c2056d2cb9819ef1269", -"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "3c3c43f30da2c784304ce0fb0cf5bb04e9db57b13e8b6aaf5df283a0f7eb7896", -"T3T1_en_ethereum-test_definitions.py::test_external_token": "bde77578d3a09d6b480af2c2f60a062aa215bedbc85c7508188ef4cbac8cced4", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "3592082e46dbea15776f28853fbd5e48b6c7e8f44e6f66ee108bd0ae45cd5a87", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "1607ff438918c9a1654e7cc3606323388e5960ba47cbaa809130ac0efd2126c9", +"T3T1_en_ethereum-test_definitions.py::test_external_chain_without_token": "3077d3a17f228a281a9965e8252eccdf8f75b8ceead1f02626f918587812d971", +"T3T1_en_ethereum-test_definitions.py::test_external_token": "5c931b0690457aa457322f10e617a36300ecbfddfc29578f826657155f821f7a", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "63ac4972e7937d0ea5ee6a25074d7e013c2fee272436772b015f741afe89b2c6", "T3T1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "34651e0c0cd0ef2e87c0e34acb578d678943646d78d7013dce8e8744c11efb37", @@ -19082,7 +19082,7 @@ "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions.py::test_slip44_disallowed": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "232d717c5343ba752e687911084e50f87b255fce1b4223a9be5d488e567e4dfe", +"T3T1_en_ethereum-test_definitions.py::test_slip44_external": "851ef9c67c6ec26eef50b64121bf5c2f6b32347eac606909a89fd18f4e6f839e", "T3T1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_definitions_bad.py::test_bad_proof": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", @@ -19143,67 +19143,67 @@ "T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "3575019909d7c8b10645e8dade7f30551a77e9af3560e07169a50fe62e3707a4", "T3T1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "6b233a31f5d1be062072e05a8b4e6fdcb8a2d3c2014f15650338ef68dafe9b35", "T3T1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "e0d45bed5a75337e85b0e34607a4e8ce0793276639dec49a539755c0803a1359", -"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "9afdd28b61ba5366056e0af40147beeea3a36d90bffcf00a5f9c6cbed0c1f4fc", +"T3T1_en_ethereum-test_signtx.py::test_data_streaming": "20445885c45bc572a81b8262c839d9a599dc302617d6932b0881ebd0577dff05", "T3T1_en_ethereum-test_signtx.py::test_sanity_checks": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "445637b736d5e0cb2a00217ae7c55644ac50232ce33af63f847031b609d0bc1f", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "cfad113cdbb95b121cbc1a077b996600a4d640509ffed86013ea3e2ab35722be", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "a789be9eace7bc495530535b12eecc0bf8ef89142c530139e1c38c2175cd1e33", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "cfad113cdbb95b121cbc1a077b996600a4d640509ffed86013ea3e2ab35722be", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0c42808945204f4baa128f9783e07b02ceb621bfdd67370c6c447eced647f738", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0c42808945204f4baa128f9783e07b02ceb621bfdd67370c6c447eced647f738", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "b1a1b2c780248ea17574aa0e4e117d9b535235dca6bb684def66edfd3fe02c03", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "d21faaece2aff75ef8f2d2fd510d3409037ff51140d61e98bf258a466dc40df5", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "b26b7dbfb483361a289c750310d4db34a2dfb7fb6b46c544166c1d735a8a9f12", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "8546ef13f253ad67c5cd4e624cf67f860939196f1dca0d55e4f399a4017dddc8", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a3819dc3ca187456e7924ada6ac703ac98ee437b4af13b7f6c5d585e63c6c24e", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "6478b2f7fe2bb5ba5b6877d7f9209b521da3a34d2a46a90071aca1cf73549fc1", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "86f5f744d7aa31484f051d4ea28bcefbccca9900e0a98f4c8bc6ee8a9925aa43", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "a56ec7acd67b5dc52c12ec0a0968e640bc8549175adfa97875f783704258dc03", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9c45a68b3e4308f632c2da333b353ee27b627f888c0ca2cab39a5a5e10268d77", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "46e95812eb5319ec55f19be624c097b715538e0f2969c9804f00861d73de5baf", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9c45a68b3e4308f632c2da333b353ee27b627f888c0ca2cab39a5a5e10268d77", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "954201170bf340c99a3f7e87d113a7d9b107617b0c2b01fb6e66204baec7a374", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "954201170bf340c99a3f7e87d113a7d9b107617b0c2b01fb6e66204baec7a374", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "1933b03620922ff6fe108349f60abb54d1155afbf4ce41fa9f3737bfb9f4c060", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "7340ab0c232fd712b41be5aef254fe4fc7a1da70fe52c204d6747e1988d37e89", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7af4ae79b354b8fbcbecc8a1e91965e64286c46e27561bd95c1dd0a955db2fff", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "455dfefa74b046ef8912fda51027e43a43bf98ea1638403c559bb8d2f5d2a119", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a3819dc3ca187456e7924ada6ac703ac98ee437b4af13b7f6c5d585e63c6c24e", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "f35dcc06d20f1eb30acad5893efd6679500749390287e96971378da8cadf5a79", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "5e9a56ed0d435eb71c086d851d2363ab3da1fd6a514a3d24b2dbbf9ac677295c", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b1fe85ae0746d360ab7a3ca15ab43199686d57473aeb57efdfc4f74f8c6eb7c5", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "b1a1b2c780248ea17574aa0e4e117d9b535235dca6bb684def66edfd3fe02c03", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "3a35cfeeaa140c480a1c91f824603be14f6a6744caf27e9569f4d11614991304", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "b26b7dbfb483361a289c750310d4db34a2dfb7fb6b46c544166c1d735a8a9f12", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b610c76a4cbf67112f04a326d7bdaaf2469c6bae0c0ec79c2ea396cc00fe66a2", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4723bf6ce0bf8037da50c5bf2a534c8d7a9992a5081d37eb4ca966a314030b7b", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "5716e12e1f096b2c76aa4c974489ef5ac130e93224853e07b8175264142609da", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f35dcc06d20f1eb30acad5893efd6679500749390287e96971378da8cadf5a79", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "1933b03620922ff6fe108349f60abb54d1155afbf4ce41fa9f3737bfb9f4c060", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "cb3f46ea1416b8dc220280ea46043902656daf4f0827a1ddc632699c198234d4", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "7af4ae79b354b8fbcbecc8a1e91965e64286c46e27561bd95c1dd0a955db2fff", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7de181bc17de9f3cb0281d4e0b4a56fefff71f27ea0953c02b755b445857adb0", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "54ace8cfbfa5ec3115a6bb95de505f2a65eb9e08a7c1e8f31521c1891419515e", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f35dcc06d20f1eb30acad5893efd6679500749390287e96971378da8cadf5a79", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "5727664e843777a2abbd1fe4a3334eefa023c84314842dbf7098363347172264", -"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5727664e843777a2abbd1fe4a3334eefa023c84314842dbf7098363347172264", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "0737fbd6eaa79b22d396181983fe51d463e5346183cab92ea42e52ef1b3448e2", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "95fcf561db853878ec6fdbaa1529cdcd64a6fcc29c6d6bf1ddc085f44c957a1f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "edb67eba2465e6a8ca2185ec7a9065d450119fd72c1c3433e05b9b338ff8bdb9", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "95fcf561db853878ec6fdbaa1529cdcd64a6fcc29c6d6bf1ddc085f44c957a1f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "97c1c18900c6e13ffb87eef423366e0d837d260d1e4bbcdb3dd1dcfb4e02ef44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "97c1c18900c6e13ffb87eef423366e0d837d260d1e4bbcdb3dd1dcfb4e02ef44", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "5a142ae14f8b19bde071fde2e45ec322a9d09d888167daa5ff6a0c7ee2da4820", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "bf1200bea695f6da3153cc67cb2728895d1d1f1940b450c80723e27a1015499b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "698287e0c1d7779805428d6f4eebd7b6c679e493a525de0637b76bfd7d2b059b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "0d5d82c82e875b9d2e963873a872d5be66a4c211b7a8850c671a9fe97fd8e9cd", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "632cf49d9e43bd49d0b7b9665870c9f098484b105b58aec1633967e74a0038df", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "6e243138bd300ac6cc4a73836fbb9a88ed6e6cbea0227e2d98ad1e634e699a02", +"T3T1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "f4655d67e71979154b56f58944435cfe858da4b06342a8c59bdb80342e6e706b", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "107aab12ef0b6821dfb37bb8ae3aed646417783ea5e87ccf359f3e03402f8a4c", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "0d4c80ec8b5063bceaecfeeefb05b88c45c520b9cd600db1332fd69cd59a9ed0", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "c22ef1979a4a203d8de0267acbd7eb71f5339fc92f952fa6306e8fd4b449bb4f", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "0d4c80ec8b5063bceaecfeeefb05b88c45c520b9cd600db1332fd69cd59a9ed0", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "3f00e3fbda900ea0bd0be4d90bbb89295b30f9fcd0ef3c3c5f99ae05599c95ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "3f00e3fbda900ea0bd0be4d90bbb89295b30f9fcd0ef3c3c5f99ae05599c95ab", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "b79f262928821e60e6e11eba33b63ee19be7d245f3b964d48d9e2083e6e7876a", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "550f06fb050923d9560cbbd176c2c7cff325a3fc54c29e4646da91dfd4849f43", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "8a38042860b1784ff248d9d371663f58762366420ec0c9fcdcd9f0b91720185a", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "0d5d82c82e875b9d2e963873a872d5be66a4c211b7a8850c671a9fe97fd8e9cd", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "debda32ecd2270eeae53d61ce034ee54cf036143c5cf7c95cd7546821a11b386", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "d4433efa0ba95ba14021dcd02d502dfe032709dd5be4b99e900904718c2ea5f2", +"T3T1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "df2641d1a3e0037ceec2fd5effc2c0e5b72121b9edbadc02e6b71e955161ce78", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "632cf49d9e43bd49d0b7b9665870c9f098484b105b58aec1633967e74a0038df", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "5a142ae14f8b19bde071fde2e45ec322a9d09d888167daa5ff6a0c7ee2da4820", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "f1406227fa8eeb0d6d428e3e219c6f4153014a9eb1edbaef3eafb17409f5a047", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "698287e0c1d7779805428d6f4eebd7b6c679e493a525de0637b76bfd7d2b059b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "d72fa92841cb2263f015082b1f24a94ae8714b6ba77b01b5e50eb57eef2e5047", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "4960d78a5e24d30c04f9050f68e049f7bb3230d4b0772a41f8264b3b246aeaec", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "632cf49d9e43bd49d0b7b9665870c9f098484b105b58aec1633967e74a0038df", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "debda32ecd2270eeae53d61ce034ee54cf036143c5cf7c95cd7546821a11b386", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "b79f262928821e60e6e11eba33b63ee19be7d245f3b964d48d9e2083e6e7876a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "5a27a1a4c2e3d2c2f3ed011d1800bb66180337198e554c7367112ff16996be7f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "8a38042860b1784ff248d9d371663f58762366420ec0c9fcdcd9f0b91720185a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "3ab2081e1b532a71e89c411b06b5cd5d106337f9669f8126d2c3953d8298744c", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "9c800ca435400efbd04eff51474e21b9b9d1b4f8c2814e44ffe24b2d4ebc4ba7", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "debda32ecd2270eeae53d61ce034ee54cf036143c5cf7c95cd7546821a11b386", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "dd2790ac7fa5c240b051e85342d6368d0deac5a5cf8c7c8c4af1c09e3cf7182f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "dd2790ac7fa5c240b051e85342d6368d0deac5a5cf8c7c8c4af1c09e3cf7182f", "T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "dab3a2a9c2a2e2429d6a749bf25ab272d8620881b7518c2036f78c2cdb3e2f44", "T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "6902b90abea50a3f6037a6e5d217e2e1704ab9dcaa0d114404ebc6b8da0b96a0", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", @@ -19211,12 +19211,12 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "571cdbecf1aefa07a05f3d102342dd571f4b5dd23318e75911164b91b5cbc207", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "571cdbecf1aefa07a05f3d102342dd571f4b5dd23318e75911164b91b5cbc207", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "68e0f086eb6f19ec9ac84c8ca58399ec58ba6a7fcceb92921807926b5c00226a", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "68e0f086eb6f19ec9ac84c8ca58399ec58ba6a7fcceb92921807926b5c00226a", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", -"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "45d4268452baf0a3fda5bf7688b697fdf5782bce4010d2b46c2a7fcbd5596c25", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "c7ba45c3cce4ec42f9410b450ffa1981bdc8ecc742561d7ce24dccc509a4ffdf", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "c7ba45c3cce4ec42f9410b450ffa1981bdc8ecc742561d7ce24dccc509a4ffdf", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "56808444a3538fd30b93af84949b12d7b35923fb85db3e3c4378a6c3f6de070a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "56808444a3538fd30b93af84949b12d7b35923fb85db3e3c4378a6c3f6de070a", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "4d658a17eca877e95db9da00e70f74f89b66370cbb9ef64ae015f7d37579380b", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "4d658a17eca877e95db9da00e70f74f89b66370cbb9ef64ae015f7d37579380b", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "3f6963d82a094c2efea50fe683868b47bd9e165ff15dc520d80245ed48768874", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "2e7bea46e6a2126dd9b0d3a7e0584dd3e089683fcb6987007d1642407fd841dd", From 692eee3e076faf31201c1f19cec8e7b151be11f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Wed, 14 Aug 2024 11:00:06 +0200 Subject: [PATCH 540/626] feat(core): add progress to Ethereum transaction signing --- .../ui/model_mercury/flow/confirm_output.rs | 2 +- .../ui/model_mercury/flow/confirm_summary.rs | 4 +- core/src/apps/ethereum/sign_tx.py | 37 + .../src/trezor/ui/layouts/mercury/__init__.py | 1 + tests/device_tests/ethereum/test_signtx.py | 1 + tests/input_flows_helpers.py | 60 +- tests/ui_tests/fixtures.json | 983 +++++++++--------- 7 files changed, 588 insertions(+), 500 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index bbed8b3bbf..ee4082c60b 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -151,7 +151,7 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err theme::ICON_CHEVRON_RIGHT, TR::address_details__account_info.into(), ); - menu_items.push(MENU_ITEM_ACCOUNT_INFO); + unwrap!(menu_items.push(MENU_ITEM_ACCOUNT_INFO)); } menu = menu.danger( theme::ICON_CANCEL, diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index 50d3543002..b30908cf0c 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -150,14 +150,14 @@ impl ConfirmSummary { theme::ICON_CHEVRON_RIGHT, TR::confirm_total__title_fee.into(), ); - menu_items.push(MENU_ITEM_FEE_INFO); + unwrap!(menu_items.push(MENU_ITEM_FEE_INFO)); } if has_account_info { menu = menu.item( theme::ICON_CHEVRON_RIGHT, TR::address_details__account_info.into(), ); - menu_items.push(MENU_ITEM_ACCOUNT_INFO); + unwrap!(menu_items.push(MENU_ITEM_ACCOUNT_INFO)); } menu = menu.danger( theme::ICON_CANCEL, diff --git a/core/src/apps/ethereum/sign_tx.py b/core/src/apps/ethereum/sign_tx.py index 37af6424ff..c90f4d427d 100644 --- a/core/src/apps/ethereum/sign_tx.py +++ b/core/src/apps/ethereum/sign_tx.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from trezor import utils from trezor.crypto import rlp from trezor.messages import EthereumTxRequest from trezor.utils import BufferReader @@ -19,6 +20,7 @@ EthereumTokenInfo, EthereumTxAck, ) + from trezor.ui.layouts.common import ProgressLayout from apps.common.keychain import Keychain @@ -67,6 +69,10 @@ async def sign_tx( ) await confirm_tx_data(msg, defs, address_bytes, maximum_fee, fee_items, data_total) + _start_progress() + + _render_progress(30) + # sign data = bytearray() data += msg.data_initial_chunk @@ -89,6 +95,8 @@ async def sign_tx( rlp.write_header(sha, data_total, rlp.STRING_HEADER_BYTE, data) sha.extend(data) + _render_progress(60) + while data_left > 0: resp = await send_request_chunk(data_left) data_left -= len(resp.data_chunk) @@ -102,6 +110,8 @@ async def sign_tx( digest = sha.get_digest() result = _sign_digest(msg, keychain, digest) + _finish_progress() + return result @@ -376,3 +386,30 @@ async def _handle_staking_tx_claim( raise DataError("Invalid staking transaction call") await require_confirm_claim(staking_addr, maximum_fee, fee_items, network, chunkify) + + +_progress_obj: ProgressLayout | None = None + + +def _start_progress() -> None: + from trezor import TR, workflow + from trezor.ui.layouts.progress import progress + + global _progress_obj + + if not utils.DISABLE_ANIMATION: + # Because we are drawing to the screen manually, without a layout, we + # should make sure that no other layout is running. + workflow.close_others() + _progress_obj = progress(title=TR.progress__signing_transaction) + + +def _render_progress(progress: int) -> None: + global _progress_obj + if _progress_obj is not None: + _progress_obj.report(progress) + + +def _finish_progress() -> None: + global _progress_obj + _progress_obj = None diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 4126a1feb7..e2a522f2e3 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -1028,6 +1028,7 @@ async def confirm_ethereum_tx( title=TR.words__recipient, chunkify=chunkify, cancel_text=TR.buttons__cancel, + br_code=ButtonRequestType.Other, ) await _confirm_summary( diff --git a/tests/device_tests/ethereum/test_signtx.py b/tests/device_tests/ethereum/test_signtx.py index 5e4f0e2849..196d6b5bfa 100644 --- a/tests/device_tests/ethereum/test_signtx.py +++ b/tests/device_tests/ethereum/test_signtx.py @@ -125,6 +125,7 @@ def test_signtx_fee_info(client: Client): @pytest.mark.skip_t1b1("T1 does not support input flows") +@pytest.mark.skip_t3t1("Cancel on Summary means Cancel Sign. No going back here!") def test_signtx_go_back_from_summary(client: Client): input_flow = InputFlowEthereumSignTxGoBackFromSummary(client).get() _do_test_signtx( diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index cdf5ca1c25..c0df5e7e9b 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -379,10 +379,11 @@ def confirm_tx( info: bool = False, go_back_from_summary: bool = False, ) -> BRGeneratorType: + yield - TR.assert_equals(self.debug.wait_layout().title(), "words__recipient") - if self.client.model in (models.T2T1, models.T3T1): + if self.client.model in (models.T2T1,): + TR.assert_equals(self.debug.wait_layout().title(), "words__recipient") if cancel: self.debug.press_no() else: @@ -409,7 +410,13 @@ def confirm_tx( ) self.debug.press_no(wait=True) self.debug.press_yes() - else: + + yield + elif self.client.model in ( + models.T2B1, + models.T3B1, + ): + TR.assert_equals(self.debug.wait_layout().title(), "words__recipient") if cancel: self.debug.press_left() else: @@ -436,6 +443,49 @@ def confirm_tx( self.debug.press_left(wait=True) self.debug.press_middle() + yield + elif self.client.model in (models.T3T1,): + TR.assert_equals( + self.debug.wait_layout().title().split("\n")[0], "words__address" + ) + TR.assert_equals( + self.debug.wait_layout().title().split("\n")[1], "words__recipient" + ) + if cancel: + self.debug.press_no() + else: + self.debug.press_yes() + yield + TR.assert_equals( + self.debug.wait_layout().title(), "words__title_summary" + ) + TR.assert_in( + self.debug.wait_layout().text_content(), "send__maximum_fee" + ) + if go_back_from_summary: + self.debug.press_no() + yield + self.debug.press_yes() + yield + if info: + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.synchronize_at("VerticalMenu") + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + TR.assert_in( + self.debug.wait_layout().text_content(), "ethereum__gas_limit" + ) + TR.assert_in( + self.debug.wait_layout().text_content(), "ethereum__gas_price" + ) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.swipe_up() + self.debug.wait_layout() + self.debug.click(buttons.TAP_TO_CONFIRM) + yield + else: + raise ValueError("Unknown model!") + def confirm_tx_staking( self, info: bool = False, @@ -484,6 +534,8 @@ def confirm_tx_staking( self.debug.press_no(wait=True) self.debug.press_yes() yield + + self.debug.press_yes() else: # confirm intro if info: @@ -513,3 +565,5 @@ def confirm_tx_staking( self.debug.press_left(wait=True) self.debug.press_middle() yield + + self.debug.press_yes() diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index ff2c486f88..6bd7e896d7 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -7230,15 +7230,15 @@ "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "199e50efdae788798b4a54d94cb12b42f3024371c11568aa6193979acf4acb49", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "615783b5758e8353b75a4745a8c41407ac063748007f602e74a5128f273d1fee", "T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "f92dbaa1f71e28eb096eccb84a0b7c7699c01d2607e5f94377b42fefda70f0e0", -"T2B1_fr_ethereum-test_definitions.py::test_builtin": "34ef7794e8cd1e1302676298857eb7603f69d1b137290574e3bd72c907f98194", -"T2B1_fr_ethereum-test_definitions.py::test_builtin_token": "0af55b44184df4fb2d401192ae62cfa19f8bb54900870433b007d0b41d742a8c", -"T2B1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "5abaf5a963833954b7d99492140e1595b893c58660153321d226a9b7c32044d5", +"T2B1_fr_ethereum-test_definitions.py::test_builtin": "76f2ffda8a77516765e1336a71c05dd263e9f7becdd63b76228526aeb34ed3b2", +"T2B1_fr_ethereum-test_definitions.py::test_builtin_token": "dcdab7e0d0206ba6e678e6d6e0951ca0470ab7f5050f192d040590f149a8db64", +"T2B1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "1cdf0e7363eae672598985302bde15c54e82f1df3a4c26c58424d6c1722bee37", "T2B1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "2e95bc97e6dacdeae1e34f6a1e8fbade7cbc6775f07e087562968160bdd34507", -"T2B1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "ee34557ed16da901dc4c3ab81f670f45d860668690a17e22ee4907e94847108a", -"T2B1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "5d64a95c44bcc4f51952081dea5393ad0a98018ddf146b3672114b52c03ced58", -"T2B1_fr_ethereum-test_definitions.py::test_external_token": "79631b07630c91f4709eb3a155d4d5233336f9a4f7ded8c39be29cf64d9c9647", +"T2B1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "2965027e18aa1304694947e5aad539d16b96d1f2c62acf23bd1e228ba84684f7", +"T2B1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "b89d8e2bcd9af9dd34af12c66d59acf57381f1b9588921c436c928ca9077dd03", +"T2B1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "b25c7b49ef0c2f5273a77d949def2fdf4a12cdea5e68d256b1db291265a65af6", +"T2B1_fr_ethereum-test_definitions.py::test_external_token": "69099e34e590c49e193ac3eecb1acf68118887cc09eb2f23a1a8e4175e6313a5", "T2B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ee57b2b7fc3dc5b45b26f78ae2f7b0cb02eefc5427d2bf2989ff06af2b56ba92", "T2B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "24bcba655d8dfa0d06fa7bdf925eaffa02afa23d340307d6ae4d701bdfe8ea0e", @@ -7252,7 +7252,7 @@ "T2B1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_slip44_external": "959160ba9f51c2a7b5cd741fe54035676ebe3244a50579124c3a05d9aea621e6", +"T2B1_fr_ethereum-test_definitions.py::test_slip44_external": "a231ec44d8f7fdd009bf89c07a24971b552ceb36daa696c0b8f19f0d03e2c322", "T2B1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7314,95 +7314,95 @@ "T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9840890d191598b71847d8322e21460fec86ba1971f7e9ce3fc8777eaab53d07", "T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "609b97dcecc8dd28d29c7a8cea8c6bb5dd3a59c5eec22fd07cb1e3105baa8590", "T2B1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "57a5ddd2466b4f13d542a4db8cafe8e39c2ccc37e160cb17a056a9742b0327b0", -"T2B1_fr_ethereum-test_signtx.py::test_data_streaming": "0ed7057988b3016246d9b5aa050101fb43bb9e53df1bfc1092169df78075e290", +"T2B1_fr_ethereum-test_signtx.py::test_data_streaming": "12095bebba8f418474053cba6828ece5dd5c67999993a58e0e5ba6e90cf8f34f", "T2B1_fr_ethereum-test_signtx.py::test_sanity_checks": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "fa26ba098101a9396ce03eaccdea8fc84265bc45f12e446084f0e2d669bc1141", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "5842c9d4d7e0fd24e02169ed0619c070ebc2140598a52e5b2077cf091c9d51a0", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "cea7191114ebd52aeaeec50843dca2518ca6ad8e65aac88303e44178a446dfae", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "5842c9d4d7e0fd24e02169ed0619c070ebc2140598a52e5b2077cf091c9d51a0", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "5282d8bba633d11985490443ac73542af3e9da1411951ed52d5662b2603c389e", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "5282d8bba633d11985490443ac73542af3e9da1411951ed52d5662b2603c389e", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "1392400722748dfa31df2a1bee999f12ae67d67e9f3c60bad15a47777a7d8519", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "0c4d843c5a41828d15a982b078f6b3ec0286b29e3659563ec1378711003763ef", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "8777dbc9a3fb51890f41bd40f7ae3a5861a401e2c6076f310342e3267cd401f2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "9b56cd62117e3230d349d9657eff8f2e38da03dc51b10a6d8d3e33b3530d6281", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "df350ea4cdee8d23803507248dcfa3d75770d3998a29b9d08850001b04e60c76", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7cf131c7386e3e3a73f1c418ff6dbd59811c4a8a717a6a06f205724927a68078", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "3a724a027ad8c1457c4951e078d06cfbc110068083ffcb92b9cc912b9693ad22", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5e5b791079e5690807d9fdde093c9693a09390f1f0ad832df5e9580d8bd4d197", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "bed8ebc57024888e173acb4509a31897716d1242976734840c91fbbda9a9a10c", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ecb88b143ec39312983a3d2fff20cf32e2b1adc3953b9596b65f8c174df906b3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "2b6028d768f0e039fd1280a3686e84a96a23be59067347e1a5145ce87151cb4b", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ecb88b143ec39312983a3d2fff20cf32e2b1adc3953b9596b65f8c174df906b3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "3ed376f8829e8dfb99a71f9784d42cff43c7260984b1de84d56bf9dd41ca34e3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "3ed376f8829e8dfb99a71f9784d42cff43c7260984b1de84d56bf9dd41ca34e3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "dc25ad0df15ce2d64e3086f32e4ef1850cfe8327a07e3e93987cf720437395e6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "827c262013a1b26392c99cad3897b4d95f121f7eef03351bfc159cdd5c044682", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "576cc3b678483408294ee8bea2c7100ff444f508886c63dcfd73abd1354a2304", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2cc393ce8f804061784a0746abaf49280f359a66a440e02edb1f1d344bb457e2", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "df350ea4cdee8d23803507248dcfa3d75770d3998a29b9d08850001b04e60c76", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "74de483257e4ab4fb9092e84bc1b44939af328ac1df8fb2f782be907fdd813e1", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "de2ae47cc080df1d3d06137a9931451a2be464ab3d26a39df4853ad32b880184", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "aa33dc2bceb95d614fda653e98158d442f318c2b16e224b34678570adf86801a", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "f8053139dc2b1b4d6e31d39adbaf06ef6806ad448091a658e502d54ec9b1b02d", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "8cb7270f20b61301526f18675c2c710d8e4f0993024996187b86863d11036d32", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "839a5a3102c0216388fdd5482c95db6d72dbb3817e454091ebc447b5df7768cb", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "0516ca238c47989bc7e66be820b7190a18245d0c6842e447a451418b8d67fce8", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7598d225c03a8914ac3fac4740f9e27630094c7bc7ab536bc57905cc2ebbaadc", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "3f11e53292e71323aaba49a90cf4ec1f84d261767556fbfd76110de2ffd37868", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "e39015607ff2ccbbc2ee62c726b5c082ffb3661c828c3e3c8a5fd23535c1ea7d", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "ea80d174a37b59b222fd73affd73ea0513c315b887fa248d0db08f101e8cf47d", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "2bd5e6d0da500f9986ef3f8b1a6f9edc3c4f850c342cb44b741686d69cfc9590", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "0516ca238c47989bc7e66be820b7190a18245d0c6842e447a451418b8d67fce8", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "c4f21d86d95ddf9c92800ec7b0e14de05877118e7cf044b4face4a8f54bfb5fa", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "ba1ed61833f092b98302bb3c8fd6a0d99ef2abd5209186b80ccddc53b30d9e60", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "17dc9e7736061aef6d661e4de2c9954ac975635733ea5336d447699bdd6f3f8d", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "2eed9c9cbe3fed3c866e440cec40015e16f10e2e182ce8efaecd4f463a37bdce", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e217aafa63500c7fea1febc53202a295a739ce0215996ac193e11c73d6bc949d", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "572432827e580603df5192418b3649e9eb8047fbd7bf16c24dabc8ae37abf27e", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "c4f21d86d95ddf9c92800ec7b0e14de05877118e7cf044b4face4a8f54bfb5fa", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "5d3682595e9fb0e7b0e9ffdff2abf53256aa5ead9007526f4cfedecfe2354551", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "5d3682595e9fb0e7b0e9ffdff2abf53256aa5ead9007526f4cfedecfe2354551", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "0442e496c19758c5918510bd2f38b18da51948b03cd11650ebbc99714fbcf8a6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "c75cb68e25fa009749bb990a322facb954131c8295bc3a9fdf55f40c4d3b7980", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "859baaa006e47c7f2cd1aba116b514d66ec8f3a4be7802ec502ecea9b41f0bd3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "80d3e99051b5983c0d8aaa74dc35718e12a158b3e994c99a7723daad7c645a63", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "429f8edfe73b2121a6f5fb746fa96e3d581a39719f9094392df64784f0f550b6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c495ccd67dedb9d0354b250afe3b08d6eb4771b66cc86de44ce98b9bad13ecfd", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "c4db547cfdd9e6fda33f81839b334ca7fa2ff0db5931afaa6b9ca3fc06c11c28", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "5a57cd27e23f917d82c875b3fd4b2540e0614657abb1a98be3b9060d55155af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "f247fcb65211aa7d323ccd92a811b0b880f9f57174d7b05864257f7e63f991e8", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "c40bef4c8895862acc10c3294c6b6e8df2d94bfa8db39f022727336381398d4e", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "45a9a709df136a9bdccb5d4bdfa7c45ccf18657fc35fb1d5c6df6ad535c03ff8", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "674706b2d97a4d43edc349192d98278a94b293fe3d6d47ff24823a41e029310c", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "2b95c8e2fa89af319fe7883d931f5c9d7bb942458b251fe9cfa231ca4ff6d5de", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "fe620ee874eee90fa3cbc4932b0561339b356e998ed3f2a013f6f6c24077a4d8", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "dfc10f76c07cefcda9e9529954bb3dcdd688d083127a5d74e0bfb8693ce1c4ae", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7fd3bde10c03d5b814ab211154230c58f18260cd92708a5a1100ae43b519b303", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c8011ee8db5d1ef3676ce1488328697aadbadac05e03c99e3caa3a87ce7567f5", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7fd3bde10c03d5b814ab211154230c58f18260cd92708a5a1100ae43b519b303", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "c1a4ac33ff04f1879c852b3885b9fb58d47b2905598b498724e60fad293c343f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "c1a4ac33ff04f1879c852b3885b9fb58d47b2905598b498724e60fad293c343f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "2af7a0c0cf008db7926240ede75225f4d6ae3cdcd013a7ba0d7c0d4ae0c70c00", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "0889e150f08b6f8ac5305c3b29443cddcdac348ecac10a9f0bba116845936591", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "e91849840818e3beb3b48d75325c7b8b05a24cfe8f36936fba04a36af2743e96", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "9faccb9f59f6b3487b1e93a31ef8dbf512ef1ba7ac158f5adad5fb8702387f94", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "69cf014a6e16497ac12e2865270aa353d82588b365b17728cc7d5ab038a4612f", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "11509e5ffc96dcb765a087303b5ed1a9bc2b11d77d32cb8a5fc318f6205ae16c", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "71cd1de3efd6c9d6aa0ce1d04674a192c04b393d3d2f19b53fd314c04927176c", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "6e22b5d8007d56b47a7bdb72ebb38f4d343791d7da4ee399cc25213e113de7ab", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9b2c88fad6a10221c22a7053ddb4db8fc600aabe13abbb67a3744cfb337205cb", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "8b7f5f448207a7d33e6256702ee3be20554d4a49628e14432308fe40c29bad20", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9b2c88fad6a10221c22a7053ddb4db8fc600aabe13abbb67a3744cfb337205cb", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "214838115a5e128449b0231d8613a862e832ff611c2ff0035201ba5d52a23a7d", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "214838115a5e128449b0231d8613a862e832ff611c2ff0035201ba5d52a23a7d", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "0b36eaa4ffa4e98e2e05128376357b868ed6581230cd2d00a65f0939ac6013c7", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b694ba3fd36df8450866d17a933b396aeae890e8c598a5798ed9bdcc5c218779", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "6fdc6c49ec1fbc5b2900ad3906f21052949520c3f6f0cff4952f93a465954a01", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "9faccb9f59f6b3487b1e93a31ef8dbf512ef1ba7ac158f5adad5fb8702387f94", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e710d78ef753aa06ad82fb35149498faa376c16503259d8c896f8245f0b4709c", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "675404d11f81f39fc7fb80e0c3139146f1ad61b865c8c82bbecbb079edd97b4a", +"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "cded0125dc65cac3aae4e14e1be2a79049d13b41a4b896665a383ba961138124", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "d4a464f652fb63d5173862ad76b744aa8cb569a13290e9d7b72739e9a2314c81", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "61154a1e35fa83cc1f708bcb12dc379a211c285a95fa295cc3bb414d8c5d36fc", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "e26b91ebe863f2700d8e30b2b8d09ad8f7126345df934dc249ac671cb4e9f0eb", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "8274c010621e0516f5f3d36d3cc2962b2bbdb8a8edffd008708364b8e999a71a", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "385ee3fc0f17f3d1402c6668c7d149172880c4bc95b886bdd2a20c687944bf8b", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d3ff987835a0244afbc0f10c8d2ba942edb6377260bfbd71bf8feafdf429f8b3", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "76fbd9dcda6617b8497b6f1457f2dac099a0165022d912d24470d5390fc499dc", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "52f046aabcf01ab1b7be293db6ebe615bdd47e7771160ea25d3ed4726fd027d8", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "89391ebe8294be5e2f793c9edb7caf75b3d67124c44a21a12a25f5b3e496f93c", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "8274c010621e0516f5f3d36d3cc2962b2bbdb8a8edffd008708364b8e999a71a", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f155e1dfd39ad9a9d4493823b9de051d00193800d45c767f2ec7f99e92d08896", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "d04fbc673d8d56bce18ae3bc2dda9a12139fbcc8f6a182a770fc2ee4f29b7219", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "3a9aaf70920719eba57e64394fd666c81e7d9e2e36d0e9179c2469b5d033f370", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f2a6218ceaebec8f49e44ac351b3e64b96ad6fa18b18d2d385cbc8e5c36e83ca", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e8034ea5dcb3e1aad116ad6914d4438dc163ed633d7f0336613c5d513d2ded62", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "88ac3123ccd3b66a5f7a18f8941081d256306c468630920e88ed74750c529340", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f155e1dfd39ad9a9d4493823b9de051d00193800d45c767f2ec7f99e92d08896", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "c7bfafcb594e4e09de7054e57aec8ca7e04ba2fa22059deaeaa3ac32e70e2463", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "c7bfafcb594e4e09de7054e57aec8ca7e04ba2fa22059deaeaa3ac32e70e2463", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "3a50e2ddc45443e77064ce2ad2116d24ad36a8b28507043b5b2c9c727149f843", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "5ca603753b660d215e0236fd3ff23fba342d55c8c01f4c67993a40d6089f3d23", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "db11071e6237f85e956461e990d75ed7e4ef902c19855be97a973139a20eb753", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e5ae6eec57f4c3466d13d0a891ad6b53a6ce57cece8fe9cc239f8cbd2f0797a4", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "5a041c003bd3565ad5050f6c612614c96f37bbe3671cd632eaa64b5fdf232b00", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c643140e0cb70747e977dea4b072e9ef2898d427b2f6919d693912a0f8205fc9", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "f6f368291f9c1f93439b935c1a37c32df8b3fb2b4c2e76138fedb53d753b4050", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "08c1911590dbc8285500fa013cc1132adb09bbd1efa2e123298f6df93ad5a653", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "a7a75f4b69a39d0b8586c8abb9a86bba71d0b14b6f6e100f60be689a864c6b7b", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "a5c7ea0a018955f04d444ce487871760cc7d41cd5e56986acfb4db77df8b271e", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "389b0a4f7b86a2d2c357e108f46e9b1557349a2341c0d21b7ea034db1923d21b", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e456afcf2ba3f69128033e53a4cd16e670c28595f99db81b050fefc7a235c1c6", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "75103786a5e2d57be567f33207333f6b4e66892919fcc09dcdf4db147a2b42c8", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "ad356a0bc82c8f13f55c005beb976c2c98c1ce9c58c914fa7420b2580a4b18f4", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", "T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "fc528b8c99bc2e96f148f693c2b033ca88f8fa5670f2c0a3fc5f91e0aed3d1e3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "fc528b8c99bc2e96f148f693c2b033ca88f8fa5670f2c0a3fc5f91e0aed3d1e3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "cee0f6a519db68f21773449f3e6856006dd40734e49b069fb879028322150cb6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "cee0f6a519db68f21773449f3e6856006dd40734e49b069fb879028322150cb6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "e2b731229d1427e2b311d23f3e096545613313ec5a3da4e50e86afbad6adbfca", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "e2b731229d1427e2b311d23f3e096545613313ec5a3da4e50e86afbad6adbfca", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "2858a8028bdbc9fe79dd3a31f58da6b9551a252aee6b1c1c4afc0f0d45bb6db1", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "2858a8028bdbc9fe79dd3a31f58da6b9551a252aee6b1c1c4afc0f0d45bb6db1", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "9ba051868e441353bf67235851578a885eb1f2db8ad68fe5f3fe9cb19e34359c", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "9ba051868e441353bf67235851578a885eb1f2db8ad68fe5f3fe9cb19e34359c", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "bc78ce96b59859194ad342ab9f9efc14471725b93c81457a083bf8aa8ce42951", +"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "bc78ce96b59859194ad342ab9f9efc14471725b93c81457a083bf8aa8ce42951", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b88a77fd08f3bb3bff5dc70f960878ed65bdd46dc34f11865bce617e7aaaed28", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "d7b2b7f911d0b1ebcd95275ccd1ecf1e7b8e53080d5fa70c01a8840dc23b1237", @@ -14725,15 +14725,15 @@ "T2T1_fr_eos-test_signtx.py::test_eos_signtx_updateauth": "0c5ed0f0a547ef6f2e80bcb4364afe286e30231877ff48e303e505a4fdad278b", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_vote": "d17b9d3c59216517638700e5bf93d90f6802690ea04a1ef089242e38e9369790", "T2T1_fr_eos-test_signtx.py::test_eos_signtx_vote_proxy": "49130facb02c1ea05f52c9451da2e65b92828ad9a7be8800ab760f77f49f9872", -"T2T1_fr_ethereum-test_definitions.py::test_builtin": "1c98ed8141eda4ba6a5c7d2e1ddc0fadfd150254375d162785e57bccdceed17a", -"T2T1_fr_ethereum-test_definitions.py::test_builtin_token": "090b2890cca08fc368e3f7e7ae97ba4c599fdd59761d007ba9f93b07db19fe6d", -"T2T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "78d21e2665b7d3df8a784437279ccd505d52d1c3b13447e5f454cda0fba10759", +"T2T1_fr_ethereum-test_definitions.py::test_builtin": "0e59ec01964f1fcf6f067405b8278a29d5397760fcbecaaaa270330f667f0f1a", +"T2T1_fr_ethereum-test_definitions.py::test_builtin_token": "b1dd2f4469ca4ae8d705d38848dade91914475f26fa403ffe3e4cd271675f332", +"T2T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "881365ecd276e7b15ed78e282dc3cc636ba56d63efc7eed8a51593029559fad7", "T2T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "5a19c2c3f96af75950f14bfbd97432f04c7e213e14088874b90a8c9fd5f140d7", -"T2T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "1cbc76602510f2c32c55ecfc5efe9b9048244f0cf2eb9c71e49b745001e0689c", -"T2T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "30b48c90b23e603d4efddfe3722c1329d3f92c5d59f648d225b882099beaf712", -"T2T1_fr_ethereum-test_definitions.py::test_external_token": "7ab7d59356c2a2cbe646a815ea958a4457a272cb361ae91be6abd82189aa2059", +"T2T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "75f6603c63c77d227ff1fefee117ded45705bcec459d54c4d74ed462404b1381", +"T2T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "91269f0a46dbe4ae2e8aab9badb0ed04246e36a3c728f654ae671f0b76964178", +"T2T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "825d52d3f1eb399f675b1f9349abbd2b323dc5f8f5d44a5fbf2ee06cc12e2026", +"T2T1_fr_ethereum-test_definitions.py::test_external_token": "eaa00d7275aac3f09a451c7bae63bada654e75720124566e5c5da6bc2e33c3bd", "T2T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "602fb8ee875e3bd792e821d1b0f3196c93f4be9e3feec03b044a86d8911f9b6c", "T2T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "3ede7171d0348e4fc94746de7569d554225f637c2368b538e295f15f87e21b11", @@ -14747,7 +14747,7 @@ "T2T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_ethereum-test_definitions.py::test_slip44_external": "d44c6b2e62b6e036c5fa743a664b79d97e71612892e3291807bb8c61510cb475", +"T2T1_fr_ethereum-test_definitions.py::test_slip44_external": "592030361565f9a761bb84261b9840a9d251ca7eac8830a18f22e5e732a89e96", "T2T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", @@ -14809,95 +14809,95 @@ "T2T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "b33f775b59faf0415c059612d83b2c4afd30b91a5bd125822fc79f5dbf61d42c", "T2T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "636e3fa1b4bce69bba5d9ce334acf4e499b0402dacaa430f8706325c531bc17d", "T2T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "6a3233fa6fd98f14759574176b508419990e67102dbf711cb093b983d80eb217", -"T2T1_fr_ethereum-test_signtx.py::test_data_streaming": "39c644065c23ab2d40f5a219cdde89e80cef55da23211600aea975663e64c9ef", +"T2T1_fr_ethereum-test_signtx.py::test_data_streaming": "84a7c49a3cea40dffde3517e24dd23f5fe77e08a0e0d81383389fd8f510559c4", "T2T1_fr_ethereum-test_signtx.py::test_sanity_checks": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "a70cf0bca25efecb826b9db460b63d728c6c4d7862d819c2f5fa8123417faa83", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0fa5200a85bc302d0c1ee645d7663d837ae373de1adf2bbb278d91c90f4c44e6", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "b392e66422c2a22c71f29d652d750d8b18c5f35ece5a362e733bf030db1f9ba9", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0fa5200a85bc302d0c1ee645d7663d837ae373de1adf2bbb278d91c90f4c44e6", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "089efd046a3a539cfdc3b0373a2c6a93bd5faa5553584edf488b13d0bf93bf8e", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "089efd046a3a539cfdc3b0373a2c6a93bd5faa5553584edf488b13d0bf93bf8e", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "e0d1ffe749984181ed939c749f4b2c6b8fe35e745a479e50a0365af364343a0e", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "e7068d20456be0ecc58577dc033010da57779a9d6d12cb906dc5b60d5513c469", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a2cb91087b6969b5ae344d00acd65aea40044e22551866a5df56f9de99c7bf07", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "99b86ab49b0e1270fad2d7e6bea8813b8610df6d955c6f868a7af8a7b74c63d1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f55479bf285eb75e3d5f227eafe2f85642c1533afce8aaf2d24e6e7e59b3a7b0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "e18c43496ee653734fcaf7de599f7b185effbfb4138bf0efbb5c323aab1d9a9c", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b35066c915e731c414e80634ea8ec3fa51f0e84e0d907c02a4e765a1948651c6", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "b13e260ea043fc69a0d9c3e7a00b9bc69784523255d730f2af8a5ce1ef6fb5b1", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "39019472c630f90f8b6c2f6a9b4f82b61412e9fe2965f13c391706a855a5b172", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "3b30f7fc13137daf71b64e2dc7c09c6294af909372fb443491354b0766371edb", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "39019472c630f90f8b6c2f6a9b4f82b61412e9fe2965f13c391706a855a5b172", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "326503f9c4681f24d9b12671dbb849b223aa3d6f2a667566b5ddcf3a3f6f7d22", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "326503f9c4681f24d9b12671dbb849b223aa3d6f2a667566b5ddcf3a3f6f7d22", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "6f7d27138a69da79c5a6b2371cbc6fd55ec4844a5ca55fd48de10b7670406215", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "67ee956c2e4d271eb4ddeb5e60f97226c9ab6e1bb305681bc8db81d5cee295af", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "622ad0639de17f384d91fbe6b7af462352ee73f9e1e8f6b62827626fd9496fac", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "2e27041ea9af266c953fb94bd9a90baa265aac2287e085df87caa92f3ec2aec0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f55479bf285eb75e3d5f227eafe2f85642c1533afce8aaf2d24e6e7e59b3a7b0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "915bfa57183bffe468402ae5c6f9eab59012a417298e143dc43138efd4a020a4", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "2344627e39f46b4cb62af84523b7a69c762171ad6bd20e3c0252e4b25338e94f", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "173831538109a7fdd2b7f64e00736dd8ced301b66897e2060c9925430d4cd0bc", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "30a069438e974826e0255f3a74c3075e8d9d8e3514787421391b965b01516c4f", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "48523c8f340829fc40105884871399b1679468f2e2f557ed9f856087702e1049", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "e0d1ffe749984181ed939c749f4b2c6b8fe35e745a479e50a0365af364343a0e", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "da886e6c81a15788fccdbf0c19f02415456b2c80345bea15fea0b7aa9bb0aa8f", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a2cb91087b6969b5ae344d00acd65aea40044e22551866a5df56f9de99c7bf07", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "7edc40f50cdf2a6a154ae58d8699628f4de817ef5f3e07831f6f52bc76aff75c", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e364f5bcaec8f89a6a44d6d02137a317ac022dca4de04f326f03536506fa880e", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "171be862183672165f921a77db19d643b197dbea7fe481ee676fb90f046d405f", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "6f7d27138a69da79c5a6b2371cbc6fd55ec4844a5ca55fd48de10b7670406215", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "c10bbea32b9c5e9fd420b759fffdcd34dabd4896f5e06bb632122008beeb2ee0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "622ad0639de17f384d91fbe6b7af462352ee73f9e1e8f6b62827626fd9496fac", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1e8787c9eda2feb94c3b4e807d84567195f82173b90653adf3ca1b585ca2f41e", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "02e0e2e5cd83aae57e38e9240571332fbe393cbdb98bde4645f500532332d6bd", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "195b35ef2c4b75dce4bd1c3369f0fc95e1606580d5e177cf1564f428a77437bb", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "ab76bb8f35306b93530410f3bbf0f481aa2a991fb5a3a5084423142b5372bcfe", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "e29654de22055ebbc1df87d28f388bb459a3b9621f04dba7dcd2cb3f87fde182", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "5329cb28e68167d514f3faddbccab0f961f6df1153471aac73214584d877f593", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "8e4b8af17e22d14dcbdfcb4a4deb7c1ff141ab981585136dc0b89e4f3b8dc378", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "9933a646a8752a658611fabe7915be21a135b43e3193c7862d97b8be7d0b98a4", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "99e851a4dae695541dd4a6f16f19d93d6f5b1cd89c044e3140a8562ba3b0e9cb", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "2817962044763ea85affd5881323633d0ba3d1e38b4daa9d7f6cae15d70535d2", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "f78025b9f242d9ba3eefda79caf669f5c880aec3fd31a5e4c96322f44df8a97a", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "f3cf647fb3af7087c00575a892566b15d52b786d0a1d4cf6c2bb16f389314589", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "24902244378ba7f8a9bc2e85d4762d8db2b2ab08d894ab949f15ead97d2c356b", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "5f8d0e2b53ce6311f6466018c49517bab79a54991b9bf45dcacbe36fc974ca85", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "8fc7faa759f3901782ff51cb809b785af7fd9ea658993940c449178be05026e0", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "922bfcd357220097dd54195ea9d25e08d3131d23f659f70f86dc6a83dc1d6a21", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "63bd0485fb2d1a56ffdbe0a818c9b4ff6d5f0b1fdcef839f89a6c10a3b9a0297", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "a9cb97a5f35cfc43c41303e1a31fb3d19a86961a13430824de133e4f9f46c032", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "7bd99c79f558579662d052fa8ff8b50b8b213c104f3d3dc418862116f8dee3e3", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "bbec18c01a724e5ffde5df42ad0af988aa9c4849613aa13d352f8531782072ea", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5804e9fd43a2efa7ba056fcf64aa2390fda9a476c26d5972b836ccd60d1eb5b8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "bbec18c01a724e5ffde5df42ad0af988aa9c4849613aa13d352f8531782072ea", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0fe58e49ad825d46a38a3a7f2f11569abf074579d8d244831cd5e1a4fce9aafc", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0fe58e49ad825d46a38a3a7f2f11569abf074579d8d244831cd5e1a4fce9aafc", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "266e45aa3b7d81a06f629daba6a83d9ff98cea8b5833d04afb686706dd056dfe", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "4879f127c4b4fe9d60480d7bbc3e2f73cb5cd160953adf7e6b00ee64d391f2b3", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "57b045d81240c4b84745e5d3fad24dd985f5b0974d802c138b22ae7b9dd10d64", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "95586a369b38594838aaae68f1c65d061d7c2de67d14fa2e2eb62e4979e7f8db", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "63bcd208ee10fdb1fb568356ac6acf832beea2006f396280aabd40cca2a3ee8b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "b86f5b95554bf767e3eec72d021ff0b63ec57e51801ac19eeaf600ac094e3d59", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9d668d8812257c7d20cafaf4691f35cf75104012724b002527c1592cf0f63d1d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "4a2de8a5dd3c0dedcc7c9f6777fe9e723e1219073ed70a5850a95359d45deb1b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "c4bd32721d0e912b80ca9db457767123c2f4d71b9a94c1add122e43665dfbbbd", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "21fa18b115e0b96e5f59ae920060563cf569947239e09b9af72b2f9e37e529f4", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "c4bd32721d0e912b80ca9db457767123c2f4d71b9a94c1add122e43665dfbbbd", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0d506bbc5cd588f9ae90dd5d0dfee2865af66049a8ffb55eb3a5769c5895174f", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0d506bbc5cd588f9ae90dd5d0dfee2865af66049a8ffb55eb3a5769c5895174f", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "469d1ec1899d167cd9436151dd8184c9134f8404aeeae7078fe95b0219634a5f", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "e0e3595667bba5ae5812fe0caa09a1005f02b64eca8342ad4ad6d31158bdc957", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "9f4eb58187a48e62160b0318bf98082d4f369baf01038b7058e39d0e467d2ee0", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "95586a369b38594838aaae68f1c65d061d7c2de67d14fa2e2eb62e4979e7f8db", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "aa8d76537bbfaae601ce769a4d847781c04b8edae6b6fa1c030618f2bc21f021", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "bb5a1e6300eb2b8082119a14f7d27e550464d61b9ce197d68a4c05affe2c2c36", +"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "09b5905dc1bf0f3e6bf524b190a176873e69b4163cb5ec05f61f8621745a659c", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "89b39bfb990d839618c6a503548b88a4e586e1ca2452a9bbfefd0b10385fc7f1", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "b95a74d8eb956f4e4764512c84fcfb302f246e5ca6bf674ab53cbafba5b6c691", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "ab938caa5063b26d831ebc560fe2cbf1a5ae25fdbd806f47d154de4f0c837556", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "63bcd208ee10fdb1fb568356ac6acf832beea2006f396280aabd40cca2a3ee8b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "266e45aa3b7d81a06f629daba6a83d9ff98cea8b5833d04afb686706dd056dfe", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "5fa30918e7e51beebe5d8ddd62f48f42d541181c01216d421c2942c7693d53d5", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "57b045d81240c4b84745e5d3fad24dd985f5b0974d802c138b22ae7b9dd10d64", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "4a490dd4d1675261ff8d747a558b4f283818b52fcf59c1f616e3a9488435285b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "7c1062adbc2bead4508a8404db1269d47fd2c96e703b2b9e613ced0182a23ccb", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "63bcd208ee10fdb1fb568356ac6acf832beea2006f396280aabd40cca2a3ee8b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "aa8d76537bbfaae601ce769a4d847781c04b8edae6b6fa1c030618f2bc21f021", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "469d1ec1899d167cd9436151dd8184c9134f8404aeeae7078fe95b0219634a5f", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "5545f451da6fc55b848ba8155a739d2cdd94491f25890f7142d6cdbbefee8550", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "9f4eb58187a48e62160b0318bf98082d4f369baf01038b7058e39d0e467d2ee0", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e1ad41668f5789fe460be38b4e3f77a5e9c0519673d9a54ccffdf2fc957c4d63", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "4c6d848e441ecf67aaedf4fdf790823b714ac1e68edd4563adc48f9a83f3054f", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "aa8d76537bbfaae601ce769a4d847781c04b8edae6b6fa1c030618f2bc21f021", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "37964cd58bc4ba814274b0ed65541c85bae94da7a5130233ce203de2ac14d185", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "37964cd58bc4ba814274b0ed65541c85bae94da7a5130233ce203de2ac14d185", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "1e4b3a96e9191598f8a61816a2620cfff54a6a8ad78c55cefddaa8ffa4883bcd", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "65d4d88cbdcd4fa3b106a535a640d255a2e22c4e7a0f99dde4a7dc5b83c24f9b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "5b5e6c2d95c093fe1648e830e7f1dcb9fa62825bd840cb6cfe56fd84e85970ec", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "3869ff837f949afd1d135757699c162d14de56e8a4fdf34d5b3cb9dae1d1f6cb", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "f0034b62db2fa6e033230b2758a1a42b21d29f0a9ed3f42d61478c061c1d79bd", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "7acb73cc1258a14fee7f2bcca519a42ffd2e5bc9fb58d08d40fe1b6e0e0b0ae7", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "5c87cd426c3a9c5080fd2d8ce18b3b3d84656bde29b6768311fe865d53113874", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "945b9b1cb82389e55bba2447986ac7f0ada677abd775fc3a039164f927fafa6c", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "8cf81ce986e64b56f0c428bf47f93eff6bc89300635552124d6dc2564f31eecc", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "5b225260224dbcb62a8883af5a3ce83a3e36e91108367a9c65f06483f5d5696b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "52e41b1de966b3248c39422768702e3812bf46499d99b618f077139609da429c", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "8bf4b31a44fb0f3997c35c51ceff90d32e6ceb2ac1b436383efdff6b1501298b", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "f9c5a878b95c92426a03a22324ab57de85f6fb97a39c8c8a0c6b71fdc5840d11", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "1642d354aeeb6b7b2a8dd4e57c97c1e9f407b9a2aee19ed8f6d7234a62fc3730", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", "T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "e81d1835bfd25536710080d38a3b8f2cf5fc7ad1b872119157a68b8957497363", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "0a33486a04d1100d485ce5c32d0de1e7b91d103c1f20e3f40609d6e2d87bbbfc", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "0a33486a04d1100d485ce5c32d0de1e7b91d103c1f20e3f40609d6e2d87bbbfc", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "36b6a6189091ad76e3637fa9d74070fc204fdaf3954e00c7b1e4b657dac47d39", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", -"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "eab90388b2dff775a94c02cdcf56877568023d5f5be0fe72dc02b443d82607e3", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "3981949e25bb77c612139a06ef09162f55aed4a3b677c72d2a72358e8a9c0b62", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "3981949e25bb77c612139a06ef09162f55aed4a3b677c72d2a72358e8a9c0b62", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "f009b58a03b3b59ddc9595119896be6d774618cc86ff0029be41fafb22b9ddbe", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "f009b58a03b3b59ddc9595119896be6d774618cc86ff0029be41fafb22b9ddbe", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "cfadd704d47e785b1e34f2f58d405ccf06174f22e3d2e957b2b3dbe42f7d315d", +"T2T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "cfadd704d47e785b1e34f2f58d405ccf06174f22e3d2e957b2b3dbe42f7d315d", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e2fae2f630e8cc65fdd66d7edc4bb1452d1fd4ecb70c028ec9f5e6273769406e", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", "T2T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "62953fca62df18b03f69e3644b65ff9675169c680c83e42a0a0aa33dbd365eb2", @@ -15880,9 +15880,9 @@ "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", "T3T1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "084cdffa11c062e31a1335e2dc27fb5ba86b4459ec73f85d71acf01eef2ec871", -"T3T1_cs_bitcoin-test_signtx.py::test_information": "ade3a6238c78ce56d8436bd3e32d37d4df62347d19b21e7ed3152505c0ecbbc8", -"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "12a7debcbec0b4dbc955ceeb781c0476e8b1d1470a2842544ba231694e6b64bf", -"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "aee7e17ffc905d035922d174ada0c220c1ce9487cb3bbd567eb904c5b0373391", +"T3T1_cs_bitcoin-test_signtx.py::test_information": "1f4d80a4ca51e3a8e58255bd920c6233c9e9670637b73ecfb68e4c1deb56e247", +"T3T1_cs_bitcoin-test_signtx.py::test_information_cancel": "109f43ae8a1e76d0d788e4c83c5e46050bfac186d9a608b053ec1ee15808291b", +"T3T1_cs_bitcoin-test_signtx.py::test_information_mixed": "e53f0372855b4882c4bc55b811cb78bafb3e4a926b36513263d54c76193fa115", "T3T1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "6995e511f29645e4debe460482f966968edf98cbf950fa8a0e467d9c5c89d09b", "T3T1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "be9019c229df19c7b2b0e135dcb0c1f65b9442527135f9679fc6c118e6393188", "T3T1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "fb5315f44f8f37f614f049a7d08610d528a6ae6af6e295fbb9d380bed21783cf", @@ -16364,15 +16364,15 @@ "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", "T3T1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "048799708df4e4a61fe5487d9c77e43c086f948958d55dce15095584f982b40c", -"T3T1_cs_ethereum-test_definitions.py::test_builtin": "146f340cc9a934cce4ed52f404a541c51fe38652afca311dd732357a43c4543c", -"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "6bc77dd863a16263e29db64e27c139d90f12d68bdc605262c1c6e8b58dfeb7d6", -"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "6fe92b35c92b129a234aba0761143e6f7e4a7aa6d84acb8a512d0f681c3f622a", +"T3T1_cs_ethereum-test_definitions.py::test_builtin": "62d7ac2c8b76b9e76fd584ebe2bbce2a09c7be8fda21d2ff545f128a4287911c", +"T3T1_cs_ethereum-test_definitions.py::test_builtin_token": "dd7b3a98534702bf091b6402180d150b55a7ab6939d4d5410aa45ff4e6f0e88a", +"T3T1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "28e2c6c983afacf8bf414babfa613b6e13474d203efbffe18682c500d4af414b", "T3T1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "78d9305a4ee3d93d16cc06ffc4d8ae688e2982d283f999ec4692cf0fb38a5074", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "0de7a9b5935c902211a124397961ed86bc4fa09e0c01269ca9a510c7319a4c90", -"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "bc240ffa909ba8ba05f0b9b4a3aa672646c4570765f48b494914013bdc88990b", -"T3T1_cs_ethereum-test_definitions.py::test_external_token": "b20b610fb8e977eea67759f92ab03fd6a5a4f715365ca1b5097e7e567ce46ad6", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "33287568c2babfa202216844a54585a0c9cc604ee2319089e720fcb02f2edb96", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "0eaf4e0ab9c7cc1b76d286999325efb56e4fcb692456a66e0c34c4ad38e5284f", +"T3T1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "9d97b8f07af83ac257566034565e6b4ca1ae183cd581562d160803cbeb05aa28", +"T3T1_cs_ethereum-test_definitions.py::test_external_token": "3c38bea5deb5645e93dbb765d5eb7bc76e92763384fe04e6e4ea39f047893cbf", "T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "6e4ca2d3855a0be980a3c6b1a2cddb050d2d13a277323858a899d2f2afdb3f41", "T3T1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "190f0958e1e59d951e091007e2a6e5335a883083100549e8f2bc1d54e8d80fb4", @@ -16386,7 +16386,7 @@ "T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "6c77dfc19f704055f1fb8e22b459d3be7d1ff29157c3e8ff62d6c2aa50ccee0e", +"T3T1_cs_ethereum-test_definitions.py::test_slip44_external": "4c15b954e1b2c85f487a243969d54befbf2c5effba211c4146aa11c121046a8e", "T3T1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", @@ -16447,80 +16447,79 @@ "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "aec79623f34f99febacab31cc2230a916105b896c1f36dec7bc7791dd28109e2", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "e461710ac9c6911575b257ed7b1a35f0bd911a2267bfc42a8ad86d5d5a80d814", "T3T1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "abe82d6d2b56b22201a08dc29d5c764b1dd70921613d293d0b0bf6980f460838", -"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "c33960434a2f59eb9a39eb5ee37d45f23f4988f0ea0ab9469fb7dc8b9ff42e62", +"T3T1_cs_ethereum-test_signtx.py::test_data_streaming": "8721d80d63cbbc3653998311193942abefba2bf2a5c87c89559d72aea10aab74", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "df019dc473830b69007c7ff6edc48462fa185a2e322d07b894684320eccef520", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "09765f5c5772d1d5eb1b2ac762f64899dbf9d935ced0c6deda899b1439425e20", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "7c1a784134a9b39cb94ae48c7aad5bc95443069ddc82aba9a60d26ea5fec2a27", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "09765f5c5772d1d5eb1b2ac762f64899dbf9d935ced0c6deda899b1439425e20", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f071e29a597b8f564c63adb08dde47b29ffe50c27ef3a0841858f8685c805d42", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f071e29a597b8f564c63adb08dde47b29ffe50c27ef3a0841858f8685c805d42", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "f6221a1a99395d4bba919fce6f2844f595cc6b51d15d4f3b7639c02bdca74819", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "f9e912d11c7ccbda6c9f9f58a56dd5b106461fe5f841f1b2871ca5770b79591e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a3b59cd93bb059b5b5cd7aa586799a161b26d396bf239e79c031dea735fd082c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "1c00e5497105e2b5405d4c10f0e7900e0e1c21e8ecf892fb1f5b06a0c2ce72d7", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "868b00500057092f8266feba72b263d3b25230411045981cc37dac9c99ef8998", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "53622c81e8b83ea2db1661863fdcdcab3fc21547779b2410f6f4bbc689ab49ab", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "5abbd13b8d4a1fca4472698daf402206b29d45282e7bbdab51cfcb6deb7d9533", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "7a352ac09259427850628474c72a84bd5f78ef50aa62c6ffea5cb76a9abf69b1", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "a6578a44eb7008459650424c777438382a4f38ee26111cab9eaa0bc0507456d0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "297a96ecb10dd7852d6947c8d7e5fa9041edc9c1bb3b6d2c78c78594dfbbba49", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "a6578a44eb7008459650424c777438382a4f38ee26111cab9eaa0bc0507456d0", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "d69997b860d09805f0cca00a1d9eb1841c9b3fe76aff52509a0d4f4a68d8146a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "d69997b860d09805f0cca00a1d9eb1841c9b3fe76aff52509a0d4f4a68d8146a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "27224f62eec48605f4209bad4cf51f896288d16531c3a8f6e0070c7d4716ab0e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "2a805d3f7a405032974f4b0b96b8ff7aab4ceafdb57831adb4080994dbfc117b", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "ef6395a08dbf548d08e13cec6b534da79bb0a2d26f469d6215ab2d481cf3cdfd", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "b5d4ac7d911d4645eb6417811514e4790e75671c3706277fa350a890dd6eca40", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "868b00500057092f8266feba72b263d3b25230411045981cc37dac9c99ef8998", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fe0ba83ca08ad71c48c42967f4744403071620d4ad32561dfc6ceafa24bad3c3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "c4fb35f3a318e1d5f7b4a5c55a213a03625936fe6e0a6ac3e9bcec90d6b1eb9d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "c146dca57f928b92e4749354c0bd1470d4e1d5e7a95f1fe211df0642ebcd0066", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "f6221a1a99395d4bba919fce6f2844f595cc6b51d15d4f3b7639c02bdca74819", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "62cefd0f7eda5e90b660548a444afc3a292ece41d7da9e1c736f2e01b4b1829e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a3b59cd93bb059b5b5cd7aa586799a161b26d396bf239e79c031dea735fd082c", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "359b73f5bb65c0df2200cb9689618e1608f24ad0333218d268de6ac53bb43679", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "a2ecc1fbfc669c642a0f8fe64189b8f1bd110d9fb25bdcef81cfc4a84ef395ff", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "292d0e789c3d87049e68c448315ddf05bd3cb92fa9dcf15a8775c7fe19b42ded", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "fe0ba83ca08ad71c48c42967f4744403071620d4ad32561dfc6ceafa24bad3c3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "27224f62eec48605f4209bad4cf51f896288d16531c3a8f6e0070c7d4716ab0e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "198190b29b5844e34ef7f9f3185c753a336734a1ff9ac3131c34e2d5b2a9f7d2", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "ef6395a08dbf548d08e13cec6b534da79bb0a2d26f469d6215ab2d481cf3cdfd", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e19ef1abf5cf004e9c8d5dcb763a7eabb529138b13a59318c80d383aa6f3f051", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "651b986c8a2e21cf2e20cf27002fc1a5c4a12258e359f5d50e9783b4ddc4625e", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "fe0ba83ca08ad71c48c42967f4744403071620d4ad32561dfc6ceafa24bad3c3", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "310074074419291f1c5a25cea8aaf8fd081bbe31bddf2b4beb0889e6870d4479", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "310074074419291f1c5a25cea8aaf8fd081bbe31bddf2b4beb0889e6870d4479", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "80510a62cf80bfbfa159a399fea59c94ad2daa404f43cbb05c41b4b1367e984d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "7080fb54b780bb764d198fff1b5a449e369b1fe963a24c54b2c5ef54e1838ee1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "f6961eec25dc81fb0e7b7f294c92c822b2c388766c3d3408d801dcd12f275b06", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "be67eda15be006788fe978c6fb2978c8d18facac74a2751a41b020db743e5e78", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "08a2795ca5a9362111ccf375080bb4d1c303df0b8e789ae6b4d3186a76b9f929", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "be67eda15be006788fe978c6fb2978c8d18facac74a2751a41b020db743e5e78", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "1585e32b240e0f287f8adcc722ac757f2c7695ebd5fd8c3f2bd5542bf0315bd1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "1585e32b240e0f287f8adcc722ac757f2c7695ebd5fd8c3f2bd5542bf0315bd1", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "29c0e76c6e87b280122fc437800d6152dff0b535c97d64951d4bada2f6923ff3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "ef52779f5f987dcfd2f4f6ae1dd3f3e9357a5a94c7bf1ea17abed102242a5425", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "cb8c34df03f0539b825393f1fb757084e39c2d9b4e281a636183df4df46fbf5a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "842671c1ccb667f300986ae9457f69fad7ba0b98a5187c2b8d94fad9f2a8da6a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "661f96624783bf8b320332e64dd5a3ab5632805b8927ca32ef6227ba4fc02566", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "9a790103905dfb710fef2fdc5f4acb44bd925e138334a330b9a21e3a7b5a1389", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "2caf24fb17318d9cec8866ccb5f008ec192f10b9f4bf1b32a75f90515992681c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "6d308da0f8ed5bbf4a97bbcd3ed8a103bd0d995cbedae3f37908283ae4523e4f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9ada158dac0fd43c9120e1340295938365badbd9f07d30fa9c3692f628a36232", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "be76f63360c0ccc9e53d8959bd206a891407b481a72853bc15ef3eaa5f3b37b2", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9ada158dac0fd43c9120e1340295938365badbd9f07d30fa9c3692f628a36232", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "89e0aaed15b81ecfcdaec65a32a7ffd3f8d60851b76180bbffa67bf66a1d50ab", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "89e0aaed15b81ecfcdaec65a32a7ffd3f8d60851b76180bbffa67bf66a1d50ab", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "4497490434dc7b02c09cb455175ac96b24cb3f5d52c3734fb038d4fb3c249a1a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "377b1a84cfda95cc23840eb114f6afa9ec01df8a27b91e3e53be7f55e97321a8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "50877991daffe2b13c427b826942161b24e4594fde319e03e09b18af73e3331a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "842671c1ccb667f300986ae9457f69fad7ba0b98a5187c2b8d94fad9f2a8da6a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "08210b48f00f235cd98b338b71bfdc3bd435427dcfe088cdf56a611feedda9fe", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "3f15eabed56f691c7a3aa479bc913cfa077866dc6524625cda2ed96e591f432c", +"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "2af1ed77225aa8d08b3e233b5871d87f8e69f9d3a54d51ccfeb3aa0b33e97425", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "661f96624783bf8b320332e64dd5a3ab5632805b8927ca32ef6227ba4fc02566", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "29c0e76c6e87b280122fc437800d6152dff0b535c97d64951d4bada2f6923ff3", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "f580b4f1965477d3c4c2d2c47a3a4d0e79f0ff30b31dfdd0440a82972a7bd63a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "cb8c34df03f0539b825393f1fb757084e39c2d9b4e281a636183df4df46fbf5a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "cd98745617b35fcf79701d188485f2f5c43d8b3d83b31b00630759f70e878b89", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "1539ba354b30341d0487724f462b2ef4cb700adeda39801f662132b5bfbd4d74", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "661f96624783bf8b320332e64dd5a3ab5632805b8927ca32ef6227ba4fc02566", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "08210b48f00f235cd98b338b71bfdc3bd435427dcfe088cdf56a611feedda9fe", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "4497490434dc7b02c09cb455175ac96b24cb3f5d52c3734fb038d4fb3c249a1a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "3c02b7fd430de8fa67f20d486855efb3d939794f375b579c2cd45d0230f86648", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "50877991daffe2b13c427b826942161b24e4594fde319e03e09b18af73e3331a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "8d44d64c7a78387ec8b9f02b8c45c9358dbecac9da4a7461981b31d648aa45b6", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "c544717ad0bf885d593138664681ec10c1492fa854684c4dc3e040bcb4277b64", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "08210b48f00f235cd98b338b71bfdc3bd435427dcfe088cdf56a611feedda9fe", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "6ce1d66af3f9e857b66dd057a60f5f5bcba6e7a0a241a08855d109a2fc440ac7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "6ce1d66af3f9e857b66dd057a60f5f5bcba6e7a0a241a08855d109a2fc440ac7", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "6a43a117d79ced98980f2c3d63b8cf7c580326f8df601be465627f1131a8606d", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "392c9e843ac76e965bc08ff116dc5124a7b4a0cc430fd5ee4dbd3f29c2444377", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "392c9e843ac76e965bc08ff116dc5124a7b4a0cc430fd5ee4dbd3f29c2444377", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "ded996ebdb16ac51a7d467d75ebaf88c83783148cc0e16bfa130fc11d10d6f27", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "ded996ebdb16ac51a7d467d75ebaf88c83783148cc0e16bfa130fc11d10d6f27", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", -"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "a32aebc4c23eaa5b329c975b8eed770c826fccb315e57a9d22c90c768433ad3a", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "699acfce10629ac8abae02cb0331d2c60c54163594bbc84698213ffe175f9620", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "699acfce10629ac8abae02cb0331d2c60c54163594bbc84698213ffe175f9620", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "ef16bce08d419af6b90c885584871e5521faf779bbaf505fe823d8c3963192e0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "ef16bce08d419af6b90c885584871e5521faf779bbaf505fe823d8c3963192e0", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "16a71362f391b8a6eb03a25754a00c613626d277bab95d2bec9761792cfa0620", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "16a71362f391b8a6eb03a25754a00c613626d277bab95d2bec9761792cfa0620", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "fc42856145638724b237005cedb803a0693ce8b0f593350b97b79583d08a100b", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f714bf3001e4de3125ce491394f169edf71006a83dcf16018b0ce0dd0f055889", @@ -17228,9 +17227,9 @@ "T3T1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", "T3T1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "3e00d5e908ec6e4bb329cea527a4e2548eda55ec942db8f9805836426e7b4bbc", -"T3T1_de_bitcoin-test_signtx.py::test_information": "fab07edfce390adb6b11b189d282f58313ae64f05c7da475a23e8ff25fa117ce", -"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "bfda4b3eb1a1b1e7e9180a419ee9b5d3356e289e6195b6063160e8606c247158", -"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "0e6658ddb3af487155f14e893d06fc7b0b28747513db777d8cfdbde52d26bc6b", +"T3T1_de_bitcoin-test_signtx.py::test_information": "19476f4e2ff9ad376dd597e5e76812e2d6227eed85186a90505b85a79122e39a", +"T3T1_de_bitcoin-test_signtx.py::test_information_cancel": "a3ff84df302549e93dc6b4fbec86214084c26218f5f349f8bf63f1ebf4ddeb84", +"T3T1_de_bitcoin-test_signtx.py::test_information_mixed": "9f8dcc1ae060f9b04ec0f1ee9958465f3393a03a0a74fce8a4f22876e029e82a", "T3T1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "5af3799c0b7814d982fa36d00a42f6f82ea54527f3fa2c77d44f899cf1a13829", "T3T1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "667361a8d8cfd5408f87d8f9b35bcd37f32faccaf17636a1783120e799e15ea3", "T3T1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "7381c585cf6b31cff9eb5f95891ca8cb6efd711206a301d5808193613a70ea81", @@ -17712,15 +17711,15 @@ "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", "T3T1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b9753dc21ef6b31f8df45bc391252d0a307d3a67497992b972c734c31ca263f0", -"T3T1_de_ethereum-test_definitions.py::test_builtin": "be322925718beb426b76e8f990bbc67a12963ef3661b1fc6b42675c32bc0ad6f", -"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "39c17fdfe992c37be2f579e0ff46fd8322efdac7af09fa0aa96afa1bb74d0229", -"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "9f5b76f9c835b4f95c103cb70da0a20911c7db53ccf68e1372b869b4693db8af", +"T3T1_de_ethereum-test_definitions.py::test_builtin": "76c39d0f0c9bafd43f0b95b0b5b5516398abd9f007cc0bb23a3320f7df1f1348", +"T3T1_de_ethereum-test_definitions.py::test_builtin_token": "afc61b08b4de26fe1b6f3e46ef9f25d32a7496da871d7a1cc187314b9daf71b6", +"T3T1_de_ethereum-test_definitions.py::test_chain_id_allowed": "1e9cdc0951023573f8971c387e161db823832a88b519fbe6486c0a0b1961d572", "T3T1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "ccfe216bcfd4eae1c39e01065e297f9f524f120fb732c1d129229dede457ed3a", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "ae5e572642abe4be37a65fc67d71a35b79c20dd59dd62b4bab18d3e6f956afa1", -"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "d2e14397347f3ffc44ce590dde66b7c9f79a3296538df4481a7a7a183013df6f", -"T3T1_de_ethereum-test_definitions.py::test_external_token": "0e30eb035d22ff1f65adcd75730eed4a8a69a90d5595c42aa1711b291a63b3eb", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "ded557210fbe3fe638fbdd5a871f9a972e74051bfcc62647d313355ac48e2595", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "aea3d1064fbd89a7aa56c3daa4983a632816405f87f9ed8fdb6bfad5467871ae", +"T3T1_de_ethereum-test_definitions.py::test_external_chain_without_token": "79a5f3e0816f92f547133bb2165230b49793b4661b84c0a5fa2da8bc7b462289", +"T3T1_de_ethereum-test_definitions.py::test_external_token": "aad80e794e0e92376a4e2d3351c7240ffc1dc452270c863604a4d8926bd2d1ae", "T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "d9aed1fd3bb2fe31698a44205c89530d9a393033b3501c1e7f28bd6c8def0719", "T3T1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "965c43a0dfa492fbe03be789e086d8870a35c7930242579eb9e9a56f4d15c05c", @@ -17734,7 +17733,7 @@ "T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions.py::test_slip44_disallowed": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "b2d7cd15150890652dc2038e83c70f43047a90f545de58efdc9ff4434070da76", +"T3T1_de_ethereum-test_definitions.py::test_slip44_external": "02f06ab416e262b1cf1df2787a15042ae4b4da07228f7f454a4560ac9208dd5d", "T3T1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_definitions_bad.py::test_bad_proof": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", @@ -17795,80 +17794,79 @@ "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "ba04a01212ede2f28ed72bec780476661aca391a72a3030a24866ad3e17bfd2d", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "4b7c66ebd6967eaf9fe6b8b7dbfa74947a30f55814ec21e98dedb27e0e87cc14", "T3T1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "5fbccc9d068ecc004078654960c9d3d18ae59d788badd50c07e397163dc5bc27", -"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "9a69fd24d792d82e5d81bcff88968c5d3a4b5ffd1a298b9333fb775bab432c2a", +"T3T1_de_ethereum-test_signtx.py::test_data_streaming": "695453bc535c5c720a6629aceec6a60c54770ed42f7321a611f035b45afed543", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "2037d579d0b1e702e4886395cfa6c68c5d2dae139367783993476c833e91c4e0", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "d0e192550b85b86bb2e5d1a2c80b45a68b9252ef0e55d29475580cd559ee3cd2", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "9e0d4a9795c028547d51a283911c79dd45a0d6ddf7e69852c9121b8aeda30a02", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "d0e192550b85b86bb2e5d1a2c80b45a68b9252ef0e55d29475580cd559ee3cd2", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "98ca7b629fcf0c4c67be29317710bcbe93283fa7315eb00bbb06505f39a8f9ee", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "98ca7b629fcf0c4c67be29317710bcbe93283fa7315eb00bbb06505f39a8f9ee", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "c8445018f7a8ac86e989dcc7d874747c617f8f871215cd9fe0e30fb820f5d49e", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "ac62f48fae61aa6f1c5315b7ba83a97762c44b37f4d765dfca3e19d1987e7b82", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "ab4ee586b8baf7ef29620145bbf811d541fefc075d2c94c0bc81fbbf09d86edc", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "efe4aadae0b4ca5ed21471cf9d9b16c64ea56f9c2a5b2078f6715c8782287f72", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c187d70ff95698b4facd48915a678bf1e01d107ce9c0d9f7c265c8380fe3aa54", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "302024fccae3ee96b0dcf3b621f411149e8565e26b7e00c56dd9d548e2a57cff", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "e4f46ca198e4c2db6c8d9b6d50026e05c84df75f43a27afe5708b0d94a22afbe", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "ee0dcc9bc33b17341cfa1eaacdd799786ff3cbdff7811d084a6bad7c37053f83", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "3d0652d529e675c71404c886c760c8c44d47b3986e057c669bd2f1fb06815ad4", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a846383072148ffd977e437fb95a2d26e862717a0cfee097909a9d64d95b3664", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "3d0652d529e675c71404c886c760c8c44d47b3986e057c669bd2f1fb06815ad4", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "2761c00663a989f9c8412e3f19b4a5d2a038b1c22572aeb23b465ef911dab592", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2761c00663a989f9c8412e3f19b4a5d2a038b1c22572aeb23b465ef911dab592", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "8623f783bbfb7d0749fb5fac5d6d038c219e6ee3ac752530f8115ce50e9a5c56", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b208c74182a4bd2df4479fc68741e44b8819ad06d77b7236808c2d7aa5f95e7b", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "dcd7605bcefe01b9b5331d99a9d62dd46e6d1d8eaad6aec92beced3981beaa99", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "58d2fd0777a2cedafd6f71e4381266d961b9f08b93170cb0bb235485df8ccd2a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c187d70ff95698b4facd48915a678bf1e01d107ce9c0d9f7c265c8380fe3aa54", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fee7cf6fbcacc9976bbd37a10fe9f58f25c96c16adc382a50cde090934f4f2eb", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "b4a8bea9c0ff815b833ef3ce78ab553eb62db8c0c1f3608ba948719c8528c9f2", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "4c7f1adcaca46cfa0df61e35bfb7621cc56cc5f3a175c14ae54081073d2f2499", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "c8445018f7a8ac86e989dcc7d874747c617f8f871215cd9fe0e30fb820f5d49e", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "212c0ca8c8e930c2b2ecd1b761dc281a41932d7029b6e81ba346fa7029f4b6c3", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "ab4ee586b8baf7ef29620145bbf811d541fefc075d2c94c0bc81fbbf09d86edc", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "4b02a2725793a8af6a4b2ec09b33af2fdd38462a1020fdbf092dddfef7b407f8", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "301ac123204e81766c4a4dba0f829f007f3c19c7d11274bcf3b90ee9df2b486d", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "ee42ba1e58153d121f162f8f08fc4d99d6436af3b0e32dcc55773f42fdb1027a", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "fee7cf6fbcacc9976bbd37a10fe9f58f25c96c16adc382a50cde090934f4f2eb", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "8623f783bbfb7d0749fb5fac5d6d038c219e6ee3ac752530f8115ce50e9a5c56", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8568748b3ba3d78f205ef722fe2af5b1838ee348eda4cfa133797cfd9c382113", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "dcd7605bcefe01b9b5331d99a9d62dd46e6d1d8eaad6aec92beced3981beaa99", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "eedae983f5b61469602e8d00c22f69b51b2aaa5bf789e5b8013632af51785e03", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "691f7326c5c46b9fcb54e7e7de39ffe5b79d85674ff35fc4fa10e5377ca077eb", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "fee7cf6fbcacc9976bbd37a10fe9f58f25c96c16adc382a50cde090934f4f2eb", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "3eb8fdd101fa55b5223057def53a68f2994528640f1ec08a209fffeb18903b17", -"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "3eb8fdd101fa55b5223057def53a68f2994528640f1ec08a209fffeb18903b17", -"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "dad405c1123725358c27329073ed3c01224532fc549e4cbf4bbb12490b56ba99", -"T3T1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "23dfce8d7608e849c2085687f5dee7cdd31002bc2cf31d19c784b4c3af5c9daa", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "c27ab20cd4c4081f3cca8b3c62b7fa61950a8f37e7eb7cc4c09af13dcb883bee", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "638eda9e28fe166c900cbdf9eaaabd15dd8a8370528f17374c48d926b3090682", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "0a8e4c2e444aa2408b3a5479e7ecb00df40e36783e9def2c16071a1809bb1bbd", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "638eda9e28fe166c900cbdf9eaaabd15dd8a8370528f17374c48d926b3090682", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f620d1d2fbeed916839c388d46a4d484343a43983fae08e235f3937edc6161f7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f620d1d2fbeed916839c388d46a4d484343a43983fae08e235f3937edc6161f7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "496762dabe501f45b8629a29990e3337a3fb690556e0d8fbf298a4ea8d2e984d", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "67313fb1d17f13b55da1b913a044a579e89223a015188701143541ed5c871cc7", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "abadcd316ab319a60e1560b8b753e6afebc44d10af9a82c2be8920095ad26ebf", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "92f0b2cc44149069ae9419bc8c7183d91d09112c6fa756c84ae71dd348c70b27", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f80cc9687fad6a190005100072cbe46d74b4dcde39d1cb79a02e5666a0527d19", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "29031817e9a96ee7de8360b0dc885fbff4fb75009e349a1210c0a4b8f6abedac", +"T3T1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "26c2d143a2f91ad0961e0c71ce5477ee301fa2fcc6da1ee5302c9a4230c94e07", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "6d59e3c23c6a5f9f918a470291d5fee7682482a2c0dc2c0003314cafc2472781", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "81373751b8ba43472cf8fd47c2085bae4eaf5b245b34448665ca1361ce5e9048", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "bb1fea253aab6573b1d9a1d986d82f428c22365566f705a3a94e8f418f9285af", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "81373751b8ba43472cf8fd47c2085bae4eaf5b245b34448665ca1361ce5e9048", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "88d416665629ea2cf1d4b99b8ae7f82ecea60699e993aa658f0694a9f1fec3f1", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "88d416665629ea2cf1d4b99b8ae7f82ecea60699e993aa658f0694a9f1fec3f1", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "d74c430901a5c1cb6df41f38a4527774e592eb484b5b2983b773126a421e06e5", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "203cacf1b1bf1358af8ba1a158c5e5fc3a4f9101d29b91c791b328ccdf8a12d4", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "337eb031a899c988e3a749652c838f4e768da1094d1733d5a00fff1c14f8f21f", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "92f0b2cc44149069ae9419bc8c7183d91d09112c6fa756c84ae71dd348c70b27", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "c9dc599990082bf3a7dd07beec9ad97354265f2f2e73fbc51a5814b5070dca41", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "5d17fca9ce48401e3b850661e698f4dc08de318d8b0bc8d1bb765b1d9afff424", +"T3T1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "98260988d7d7b26b216a110f321f28e03e834b82e3d0508e760a4d7c0a30f7e3", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f80cc9687fad6a190005100072cbe46d74b4dcde39d1cb79a02e5666a0527d19", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "496762dabe501f45b8629a29990e3337a3fb690556e0d8fbf298a4ea8d2e984d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "79885f437d7d94a92cd0af7b887b4c51256b04f0469efedf4e980c99152bf307", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "abadcd316ab319a60e1560b8b753e6afebc44d10af9a82c2be8920095ad26ebf", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "946fdda5499d465202d1811b85cd87286043ad8f1630908d1ad2a04613788bd5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "daace9ab4b3fbf294c117e8ededcb68b5a66cb4fc061ee70cc2eae525352add9", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f80cc9687fad6a190005100072cbe46d74b4dcde39d1cb79a02e5666a0527d19", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "c9dc599990082bf3a7dd07beec9ad97354265f2f2e73fbc51a5814b5070dca41", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "d74c430901a5c1cb6df41f38a4527774e592eb484b5b2983b773126a421e06e5", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8bc1c5e85e2d17cc91801921bc0ecef7647aa5250ba2cc8de7b7385f13c96377", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "337eb031a899c988e3a749652c838f4e768da1094d1733d5a00fff1c14f8f21f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "eb6778b3201e92c1403dabfd5f5e3878f3f96def05a3a3c954a9dd5aed635b07", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "d5bb0c493ad5ec0948b9af38b327855709eed7738ce406125759295cf282c739", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "c9dc599990082bf3a7dd07beec9ad97354265f2f2e73fbc51a5814b5070dca41", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "fe02b97c28cec0b8f6c03cd93fe6219b3b732390bb98badf5a6f35a82cb997ef", +"T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "fe02b97c28cec0b8f6c03cd93fe6219b3b732390bb98badf5a6f35a82cb997ef", +"T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "17a4d8511d786f95410c1cfe55ab6df1c54edd581637839380d504a9a943192e", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "e2dde31b972d7192e156142a56d4753e9d8f2a96f7e6843b5de060de95863879", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "e2dde31b972d7192e156142a56d4753e9d8f2a96f7e6843b5de060de95863879", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "11f323fdeb0b2dc3bcba00c238dc48a3f840122dca34d7ddf9b0cd1b25b36320", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "11f323fdeb0b2dc3bcba00c238dc48a3f840122dca34d7ddf9b0cd1b25b36320", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", -"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d9ad606085999d2b60c289c9752394c4374140dd38f2dd10cc4d36cb7a08a4fc", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "073f650c92ba019c128291cca3380475ddb7ad729c264e3da1e0895adbe5bdd1", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "073f650c92ba019c128291cca3380475ddb7ad729c264e3da1e0895adbe5bdd1", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "d3cf2200385af7738ff56bc039a62e8ebd1dc2f4baaf3758d9b14e0e052caf02", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "d3cf2200385af7738ff56bc039a62e8ebd1dc2f4baaf3758d9b14e0e052caf02", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "d65a065b500cf880297c2d1b8a8e0d702ccaf5187b0c81e4dd97d83d5f4d5e4b", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "d65a065b500cf880297c2d1b8a8e0d702ccaf5187b0c81e4dd97d83d5f4d5e4b", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "ff7aaee28bfb9750f7e0b184353be8e27d36ab50752e53460ba40d4bf12fad4b", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "3ab2c61df687955c71dcf44a18f386c41d4a7b5f6cf27a45aac0e1b784a29a89", @@ -19204,8 +19202,7 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "debda32ecd2270eeae53d61ce034ee54cf036143c5cf7c95cd7546821a11b386", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "dd2790ac7fa5c240b051e85342d6368d0deac5a5cf8c7c8c4af1c09e3cf7182f", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "dd2790ac7fa5c240b051e85342d6368d0deac5a5cf8c7c8c4af1c09e3cf7182f", -"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "dab3a2a9c2a2e2429d6a749bf25ab272d8620881b7518c2036f78c2cdb3e2f44", -"T3T1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "6902b90abea50a3f6037a6e5d217e2e1704ab9dcaa0d114404ebc6b8da0b96a0", +"T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "b85b87c6946ad2074272ae7156fd6a5bfec4db17f12290c8b88d1bde1b551565", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", @@ -19924,9 +19921,9 @@ "T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_signtx.py::test_information": "59331600377905b01bdf3065d7bedc2942a4c822094d068a87fba56c2d95c6b5", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "0b2bf7aaa910bbb02157022b783f13a3dc13acdd06ba95aa08f7e4798f2bfd91", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "126787d3ffa424b6ce26edc826bb0827eea6a3416d3bc0fcd477f6c40d4997f0", +"T3T1_es_bitcoin-test_signtx.py::test_information": "6ec2cc9e5933b6dce64c18be2daff1c199fb13334d0c94f1e76d95769d5d6035", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "bc0ec1dbdbfedaa14e2ad5a8264f7fee6958dd61463952866d4b5f86ea8fb7d7", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "559975ac4144d9810e6e8c86f2af2e0a5be31783278c4b8ea6eda493ec35fe02", "T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "2411c979803877085721d7ecc594668db5cecd123f21aa48e0ec0c8040e24ee9", "T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "c78efa1a2f369e1252974905609bf6869db79b09d6f57a51a326b5e6163ba1c1", "T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "85b253265c7e2733d42f6e115f6b876d7fd50534e9c00a04317d08d6d9955384", @@ -20408,15 +20405,15 @@ "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", "T3T1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0181cc48b84e9b0d3fbeae982041dc80037ec822c8b7cd4a8d232cff15a39f67", -"T3T1_es_ethereum-test_definitions.py::test_builtin": "0bcbb8abb9e4a36b8eba5d7863bc185cd11a597c99b973f954c1a97dcaaaf50c", -"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "b99b5d49819f1d0b8e1189da0582aae58d441bb11f28c13b8d8cc10bb92a43da", -"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "7355f8eb2cfe09582b23e545e510149fa60f36c7f49d4d5ebf6278091d44e433", +"T3T1_es_ethereum-test_definitions.py::test_builtin": "3715719d6c6522df9df318d24074387ddf47535c220b928822e2d697a4cf425f", +"T3T1_es_ethereum-test_definitions.py::test_builtin_token": "676fea0da99a867c44a828cce1cd3c1ba1250ba0fa16eba4431a9418e26a8570", +"T3T1_es_ethereum-test_definitions.py::test_chain_id_allowed": "892c7d2b655dbadce0c6ebe70b6d16687b3e3dbcecb189599b4a9dbe396f8742", "T3T1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "00eec1fbac492468146c4d71b7adb829d915caff2f81519bab56465d783dffc2", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "07e97ff8d3fcbafb3983a32ebdfe3ffb45533d2182684efc903dd761741693c0", -"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "44cc613ba9c8ba5cb07fd1d0bb0fb44fee452a81dcb629fe40d39db6668bd387", -"T3T1_es_ethereum-test_definitions.py::test_external_token": "20631399e2f852d90cc80e5f1fc147050eabf5c3d37c5d794a253ef2b5eeceba", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "9cc88f494b996ecc9f5f0da9bfd2cdd93ca368d9f2a8d2a29529a4e9f32a8307", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "e5eb1c48c9fc4a80a0157fbc234901591bd37a021afdc6bd6c03abcbf8bce3c8", +"T3T1_es_ethereum-test_definitions.py::test_external_chain_without_token": "d9ee3bfdebfa7a62073dbbfef049fd2712782968260a3114136a9b7a2f65202b", +"T3T1_es_ethereum-test_definitions.py::test_external_token": "092c99ed1c4941c41970f9f3256b70071203532e6ad7d90b1d85ee4f38d78cb4", "T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "78875cca7efca24e980e0744c3a4d0ea3bd78ffaaf3156c95c43b5d522b57284", "T3T1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "94be7e21e93b63815d6be200f0a823eb4931f503a8aff65f6b2bb7dcb01b6a89", @@ -20430,7 +20427,7 @@ "T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions.py::test_slip44_disallowed": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "018736989f4950deff6367d981048e59ff8ed266e261115183176611f113ef4d", +"T3T1_es_ethereum-test_definitions.py::test_slip44_external": "d373808b7ed887db7045e6d740ca17c5f0614a2351e7a77f10352e1c5b9c2f74", "T3T1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_definitions_bad.py::test_bad_proof": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20491,80 +20488,79 @@ "T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "a6647eb87901d0e8b798204c62b3175eb3b7f6103751b33a32a6de9d8f780f4b", "T3T1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "7686ab6184188cdbe7d9436097a435af4661b593e2a33b940ad51d46adeb2c0a", "T3T1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "8801459666fc8900216e202d14a4804ca633eec7087b2ebb6972728f7e6bbe8c", -"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "463660bcef98fdbf02ab568313ee0823fe08e2f1610ee360c4abd0cc6347651d", +"T3T1_es_ethereum-test_signtx.py::test_data_streaming": "3663e395e92920e4742d1bf883e04a50ba987286cbcdb0b67bf5c839368d5533", "T3T1_es_ethereum-test_signtx.py::test_sanity_checks": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "36617038b14ca7b917d203b74759afd912c31cb8c56624d12bec9d315ab8dd4d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "a42c867e98a91e01451c1bf7c06a65f853af9aeb53e2e8bf2fe19172559d746e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "6f522df0b7e7ba290c0aee8f0ad48eaf5a23650bcbc39141808cb93073fb6b0b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "a42c867e98a91e01451c1bf7c06a65f853af9aeb53e2e8bf2fe19172559d746e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "220d11a91b096f3afe1634ad77c06c28a532f473509e25036d58173fe2314a9d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "220d11a91b096f3afe1634ad77c06c28a532f473509e25036d58173fe2314a9d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "bbda81a2fb147caec5375cb51df28efbcd87932b27c489dc9ba6534e0cef5947", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "9a631a7430e0494ba16bd5eb32b2ea86e1be1e16f15ba3dd5bc857d690b56e16", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "a8c99d7cebbaf46b31d7dc0a5eab08afb710a31988a46170085b99bfbf2b726d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "5819547ee64d70b43b1961c3f510caaac5868a0841fd66e69e051b0e3f2df4a0", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "eb0c2332d2308b7527580138f2ddbe1d3a5ed746da227fa639014a26b9ac4cbd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "086342492ed12262c5d6bc5f02067005d87a919391d05218814fbb5c8f679723", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b7063bda23766efd821036b0d36f4caa78b60d70a644c0f2f6dd508c50d5123b", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "c8a3d24e05079b0603761169884fa43e44801b8a448fd215c349b95f633ed47e", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6756f452696e7aea40f8eb9e82e0eed80ecc8ee7aef05d040eb3f7273bc7d2b4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "a214466137aa36208a023acaf57736791463ec982df424221abc7bb680b1a58d", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6756f452696e7aea40f8eb9e82e0eed80ecc8ee7aef05d040eb3f7273bc7d2b4", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "eb87ec4167450d453f20d064c61b288ec013a97706994272ca224dcf971b9208", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "eb87ec4167450d453f20d064c61b288ec013a97706994272ca224dcf971b9208", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "94f91bcf01dff5bf685a6526f36fdce9aba95fa6392e62398e73e4da10f852ae", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "55f994bef68d8bff53a1a85d7a4e363140a4560fa8edaadcf29bcb05664409f5", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "e05f4dc3bfa5795953aec7ec10253ce79903f53f19ac25c59ef3f88080b9cb54", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "ed74fc00d7da1ca1e382707474c6d528042bf6dda26dff6a97d3d37602a20dd3", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "eb0c2332d2308b7527580138f2ddbe1d3a5ed746da227fa639014a26b9ac4cbd", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "5c2d4a2a4cdb950b9f443ad00dae583b57e25c5a90e00cc24b97227a2a3e3bfb", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "2ba6c995da8e4b15949f316d8eecdfdf66ef185ffb20e23f0787b774a0527e7c", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "607bd7f927cf65cd813e85864c546282d8f0954795f17bede5f85450fb431dfd", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "bbda81a2fb147caec5375cb51df28efbcd87932b27c489dc9ba6534e0cef5947", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "1e4617c52c0a6313a00556bf80eb804c93a88ea05d2dd244eb3c24469165976d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "a8c99d7cebbaf46b31d7dc0a5eab08afb710a31988a46170085b99bfbf2b726d", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "fad918d2a349b02ed238fd229357f9ab270e2cf15bee34aae673e9b52db98413", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "23f0844e096e68d2d24bb49c76276e377b50be22e37e68b817e1bcb760ac5172", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "7a6d360e46558a1eeefe4dcc1ad1c4836f48d2b3a49a9e5f95b1a48ceb963f6c", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "5c2d4a2a4cdb950b9f443ad00dae583b57e25c5a90e00cc24b97227a2a3e3bfb", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "94f91bcf01dff5bf685a6526f36fdce9aba95fa6392e62398e73e4da10f852ae", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "04992ded513d50111942d273b4176623ef8901e3272eab0fd98d1ffb2c3c3e7a", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "e05f4dc3bfa5795953aec7ec10253ce79903f53f19ac25c59ef3f88080b9cb54", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "849d0c942c3f3ae4fbdd966f9f9f2966fbddc3751100d8c9feab0a5cb224e332", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "d0b4829d235b2adad94ab75e32f7de7c7d864e7809b9050011d9b96115fe5eaa", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "5c2d4a2a4cdb950b9f443ad00dae583b57e25c5a90e00cc24b97227a2a3e3bfb", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "7fdbfd85468a9bd6d91b159ad07eec49f9f1daf39506427e9c3f7c2706bbb454", -"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "7fdbfd85468a9bd6d91b159ad07eec49f9f1daf39506427e9c3f7c2706bbb454", -"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "60be87d4431af14c8d731bbbc9932dee25f5ca60c43174af683b0b5a4b1ea1e5", -"T3T1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "a5470a3f2ccf55b8ac8d1fd97eebe4ea056a1b5e1ded52fe4e95d67251c304bc", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "eef214e5374c179bdc676f7b1e78b4f9901c5ea71a3a7b3a829e4f5e888c52cd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "1f6a89049097f5e72dc79752aaf3d5a9ec20710b379381eee33a7e88485b0804", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "cc11a6d3eba300bcb901e17b7d4444f8cfe361284dd5bc3e2b90d92e34087fcd", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "1f6a89049097f5e72dc79752aaf3d5a9ec20710b379381eee33a7e88485b0804", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "42ea2a481ae97e29c0347f54349d87f780ebe32117c3cc301daa482d9f992089", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "42ea2a481ae97e29c0347f54349d87f780ebe32117c3cc301daa482d9f992089", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "469c502264b1dae4c59c7e4e63d67636830eacfab49335375ebdbbecdfe4f21d", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "705f5a26d77cc7cc006b88367d9fcdb62216218ea0f86cbc908d12d887595b13", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "f5f9f88562eea8d5a12fda285db0b823747773cfec5ec3a391fe946a0dd98f8a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "02296a97063fa9ecf2a24d09c86f2f51e8f1a402b9106f29d7069312771d69cf", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "b51b76ffebe6575d4b87ee687a0a0a7e49cd0767880ba93f819fc79acb7ea839", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "bcba39aa044c9367045dc93542797ab2859ecfcb2317743a4b279e558eb3ae90", +"T3T1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "abf5c3b72db1400bc5d021aaa21e279b645f6e9c57ad584469d739fd38efb746", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "06b108c57f8457701d79320aa38c32b58ba9fd6ced251ccfaef0087bf2d38522", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "d0e3f869ab4c97978ed4923b64e2a31aa9b1e3a2cfc5bf8a930a3f98acfeec19", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "b253cb902a229c59e07bf345b3d34062c9a0b05d5524860318dc776ec10f958a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d0e3f869ab4c97978ed4923b64e2a31aa9b1e3a2cfc5bf8a930a3f98acfeec19", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "67aaf779ec290c0bd7b9a0b8242b870f5e26bc6950e321e5079ccd13ceeafa2a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "67aaf779ec290c0bd7b9a0b8242b870f5e26bc6950e321e5079ccd13ceeafa2a", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "9e0a8526fc03b75751f5abe9f0eefaec72aa3f65e6982bfbba029ff7fdec39ac", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "8f7fc02b11b13f2b931f1a471e223e64dcda5f79704fb14dfb77217ed924af78", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "4bd5b6b764f23e70d018659116a3fb5a2267f17624563d3e67625ffd3ed4fcb2", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "02296a97063fa9ecf2a24d09c86f2f51e8f1a402b9106f29d7069312771d69cf", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "715d3420a5bb43c1d43513204da4c8a3b99c34cac92ceb8e4a6bbb807dd64a64", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "51da7ec9bb817cf86b0319f75eb32240f8e938fe2d6b13bff6f3ed4ca54565b0", +"T3T1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "3b6db1f94c77052c10296f92c6f208ca87ca06c59abaa6ab7c8b7170ffc5afd5", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "b51b76ffebe6575d4b87ee687a0a0a7e49cd0767880ba93f819fc79acb7ea839", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "469c502264b1dae4c59c7e4e63d67636830eacfab49335375ebdbbecdfe4f21d", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "a39c0266c7cb1bab48d2b0e8543d90ad18910fe6e193c66f1d5ba8c1f2cb646b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "f5f9f88562eea8d5a12fda285db0b823747773cfec5ec3a391fe946a0dd98f8a", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "79ffae4844c27aa8946537a39252bcdaf95554bed04e6db0a2d0661e7dc0e39b", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "9782e4b8e4ab7915a45b59f858c24475cec4cebb7f30bfa89a459cd344447ea6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "b51b76ffebe6575d4b87ee687a0a0a7e49cd0767880ba93f819fc79acb7ea839", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "715d3420a5bb43c1d43513204da4c8a3b99c34cac92ceb8e4a6bbb807dd64a64", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "9e0a8526fc03b75751f5abe9f0eefaec72aa3f65e6982bfbba029ff7fdec39ac", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "8691b0901adb121002335768b96e47aece7487feb200633f226254877836a9ec", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "4bd5b6b764f23e70d018659116a3fb5a2267f17624563d3e67625ffd3ed4fcb2", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "233667f2b2f50e4749ca9761f39ba4c6762b37ac84f53c9d1349345c2a1736f6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "b4ec0e6637f2e248b387ebcb96a055e09463b8a06cdb47083658b77e70d35be6", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "715d3420a5bb43c1d43513204da4c8a3b99c34cac92ceb8e4a6bbb807dd64a64", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "8f70757da8d2e04371c54ce284f59c7d1212eb3f4a9e035b1afa09dea6dda976", +"T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "8f70757da8d2e04371c54ce284f59c7d1212eb3f4a9e035b1afa09dea6dda976", +"T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "2fb56492bae54739eb8af2259ea05fff90397dc4ca16ed0ab859566a97c5ec48", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "c664ca74bfc3e28e7578c27b7f31d232c5d0e15b5ca3eb6fb99b16008feb0192", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "c664ca74bfc3e28e7578c27b7f31d232c5d0e15b5ca3eb6fb99b16008feb0192", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "7ed435d0ea98ddd5318c024d9bbd9b19f492955dccf20009aa6e063d6f5a654f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "7ed435d0ea98ddd5318c024d9bbd9b19f492955dccf20009aa6e063d6f5a654f", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", -"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "58d53046225569771b1e611ca4a600472751f6ce18e335055e90c020cff5aefc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "2bdab58674038e776486450c7f0ba6a7fba349e4b8b66bc05793f527897c7bcc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "2bdab58674038e776486450c7f0ba6a7fba349e4b8b66bc05793f527897c7bcc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "16c7c44bd13d49acacab20b86e97fecaa4bcee9ad0175e4a63dc7e44e0b499bb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "16c7c44bd13d49acacab20b86e97fecaa4bcee9ad0175e4a63dc7e44e0b499bb", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "7963550422c3fae83bce7a1a1faded08fe308ecd1dcf145df992cacc0e204982", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "7963550422c3fae83bce7a1a1faded08fe308ecd1dcf145df992cacc0e204982", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e08d043a6116cca9d74765dfce2ff2155767b35dbd688bd95de98ff06e589d38", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "89815a33a926b8ba6b4cc49fed381dbd22daa34e5babae43e9632e89b4fcb98b", @@ -21272,9 +21268,9 @@ "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", "T3T1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "3c907400365a294ed9bbec6d6c3264a4b379f4272c0fde25c16a66be4e3c0bf9", -"T3T1_fr_bitcoin-test_signtx.py::test_information": "a5beca64eda50fa94f4e79166fe5fe9eee0c9dff75f5cdce7966a80bc3f99a49", -"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "199f66a9424230b66d9e994c32b76f50cce329f962277999e9709d48b6d6df6f", -"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "ab6b1e816de92695e878414403493103882703d3425edf76a1d67158ab592c7b", +"T3T1_fr_bitcoin-test_signtx.py::test_information": "e39ecfdfd1b7a5b43889026c84648a1b4d6ef4e1f97fb4d1cee087e0fc4fbb98", +"T3T1_fr_bitcoin-test_signtx.py::test_information_cancel": "54d8e2f5811d23d64d79505f3978f51099f25e29b70175a85e0da6d9fdec190a", +"T3T1_fr_bitcoin-test_signtx.py::test_information_mixed": "ffbef805a1d8c199cfddd43ad306c9e5e131de9bf91eceed24dcacc6597f1220", "T3T1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "bceeb7d46f62c39e1bbd9c67730cdf67c98cb57d6a1781917ebbf895f377ae02", "T3T1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "23d6a64d9e6c6be7358c1a1c64fa8ef189dceffaf89edf1a0200e330727dea39", "T3T1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "97bad4a2005f89fb500ae8c59efef8903376d6f63bb9b9dc6ad24254bb6135a7", @@ -21756,15 +21752,15 @@ "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", "T3T1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "45e902800e5858af7311df0b159397b32380d1063d1cc96b54a25105ff494979", -"T3T1_fr_ethereum-test_definitions.py::test_builtin": "7a402f9f64147a7cff27cd9b7f242598b8087c41c18c36c981525ce1d0f48943", -"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "f616cc25eb131fad619326aeadbb2bc20a340aefceae78a101388614839079d5", -"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "77ebfe7c9cb119175c8ad3f4a4374c1d1ec1afbec8468ccbb24f54f15dbaa6d2", +"T3T1_fr_ethereum-test_definitions.py::test_builtin": "3c775fc5e5a0c6cf4d30a0a25be12da0b99fd9f4e9c364f893a5358ae52b6e75", +"T3T1_fr_ethereum-test_definitions.py::test_builtin_token": "8993cc1c3d9c3992be56dfc812eb0567c859facdeedd63d3e0d360d3221f3575", +"T3T1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "40eee491edffe7c5cee4d8131b7e29a4905caf83306093093194ab70d207a435", "T3T1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "04168a06be0d65680b7b4a2772e2d439535b69192152f1ba4d623dc234d2373c", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "28f99ccf9ff8053371856ea89882ca20de3d53cf350861c4eb9b5254bcd42328", -"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "29b058c62e59a808178e644ee6e2aafdf00951dd18eef29d950960d92c99db4a", -"T3T1_fr_ethereum-test_definitions.py::test_external_token": "5a1bc8da58b96f068c78bf15f5caf16088f97d60483094c3f0f7ac8cd2fd6ba9", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "96593097a1dd21397f1a6f6b14d11738c8019787997218d2d449786ba5ad6541", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "16826ff3a1a67313b368906d858be53ce22cf7522438919d6302494905bc072e", +"T3T1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "99fa04865343ecc23cedea96fa7edbdc34c42cdb7b9e14e2efedcb42493f51d7", +"T3T1_fr_ethereum-test_definitions.py::test_external_token": "581e871d8e8fe9c369e3f73e16260ad5e5d0726485633b509c78ab36b77ff280", "T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5e3aafa62dc0a8fea217680d41c9e6fc53f47ae595d0b3c993916893d298b931", "T3T1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "b39add119a7fe2b3f8a551d942fb49b307c12b8c3c4e266358a91775a0b2129e", @@ -21778,7 +21774,7 @@ "T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "49b2754193d331c3d2bac703c0616d3f775753d5c7f86e61cb43652097f9f62e", +"T3T1_fr_ethereum-test_definitions.py::test_slip44_external": "9bdc3c596fc63123de7a9fe39f72fbff6ea1d4d8a050abc20a1a811223cfbc8d", "T3T1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", @@ -21839,80 +21835,79 @@ "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "2c60c401186673b0eaef75f4be73410314fcf9dd9c1e98590d66ceeec9d26171", "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "87833edd6e79e9b10c7fb89763852a293519eb0aa1233bc88da98a6e79776d40", "T3T1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "ed7765f1e49ad7caf148cd0377f873c6096458437fda3ea10517d52985d01ffe", -"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "a57a2f9038741b16098751ffe03bc9daf376deca7466d9f5b4f0a5650b5d1f72", +"T3T1_fr_ethereum-test_signtx.py::test_data_streaming": "d3a3db26f731f341e1a16b8317a11a619f8d46b9a7ce0d956da64b9569e5cdb1", "T3T1_fr_ethereum-test_signtx.py::test_sanity_checks": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "f139b00c372dc8925af53e4f3ff4c578a0f02d5f8ed1ce2dcbc3eeb59a676fd3", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "16406c15f17f035607266fb96c0ab40e02a88c82b8e370f1b45ba3ca25b82263", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "2527bafe3ccddf322d2f206f8ae835fe7a2fc08a95258e580cbce076385da3ac", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "16406c15f17f035607266fb96c0ab40e02a88c82b8e370f1b45ba3ca25b82263", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "39fbc2396f88a6e946da3e3b2c4ea149a526d640de9edb38e0907417ba8d3453", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "39fbc2396f88a6e946da3e3b2c4ea149a526d640de9edb38e0907417ba8d3453", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "0eaaeafa2e13de37216c888643d96e62c2ed15e079f0042a79a0b5b24be2428d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "3e6443b8603a0c6e54896243364a2bf738411d43ac8270f4a51fee1107c64696", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1dc47e6b3962a8e91897fdfd25e0287f191ee7fb85e31f8e99fabc5a2f3012d8", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "9c2faee33067305393c37d2bd5bda7cc7dd27ab583a3725df2e9c52f41930465", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "a37dbdb063db16baff8086498a1f1b3b32bcba9f508d51af1a8b96d7819b2528", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "592362a5429d13daa3b323bec541fd6ad46ac767122261aa95be5136303605a2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "42701b5c2b6949607eb93e9a71888756ec5b0b6958183d5751eaae80a41dd4a4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "0565b7b023a86373e7222ace325758d228b673b01bf41c0dcdd64df35f25a942", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "505ffada94b49514d1a48fe5e00dfac0b05a0e79a3bda865d73e2367394c2da2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "63105a336e4bbc2be9e4603808da0067d52893e5cdbc521ba4d1bf893e90f015", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "505ffada94b49514d1a48fe5e00dfac0b05a0e79a3bda865d73e2367394c2da2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "9624cf5eee5cbcc8fee67dfea23a1dd6d01cfd6055b3756a380d9d3383f256da", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "9624cf5eee5cbcc8fee67dfea23a1dd6d01cfd6055b3756a380d9d3383f256da", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "fa293020a4dd5bce2d1f4ee8df03ec49ee888f824cba50f67d35b4863940acd5", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "22a7ae444d95e79f1fe95594a273a41bc258c47380df542afea52e70ceeda023", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "7c85fea4217087a2d5fe209c988c5b0d3476547688eeac7ef0ce3c742c3e8682", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "18c63f5e932fbd0ed88f05c5a28318c5ff0f57c6b5432c971702dabb7bbf6d6b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "a37dbdb063db16baff8086498a1f1b3b32bcba9f508d51af1a8b96d7819b2528", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "1a1c681cb798a5350dfabb2358f2539d9c0413d4846234f34b1a34ff26045d17", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "1a9a2cdb163d1a60f00644c8a8fda75e61d09995d3299b86e9637c50d80f8255", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d846017b38a50af96e41a90eded9796e4876cc9834da8c118c3995c5a9b22ea9", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0eaaeafa2e13de37216c888643d96e62c2ed15e079f0042a79a0b5b24be2428d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ffd25aef4ec54132f553eb9404dfc70cc0b78f9a620fc107c7c89f20172b7f1c", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "1dc47e6b3962a8e91897fdfd25e0287f191ee7fb85e31f8e99fabc5a2f3012d8", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "2dd31c7de2e00f515ff9aed6d8fdd1fc3c5afc71710f3741e172e2855209ec03", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "e18942f84b7c02b06360f66d4d4db82f4a1294d63ee38e50687e6eb87126f32d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "164989e869fbd7e3b21ef0217098216bf2c3a2c8e7616c86310c1d64f9d1f9b5", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "1a1c681cb798a5350dfabb2358f2539d9c0413d4846234f34b1a34ff26045d17", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "fa293020a4dd5bce2d1f4ee8df03ec49ee888f824cba50f67d35b4863940acd5", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "9c799f2c623d29bf3eb604b4683146f08d40bab2a2121b6f0a7d33788e14c595", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "7c85fea4217087a2d5fe209c988c5b0d3476547688eeac7ef0ce3c742c3e8682", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "70dec2ba507f4881070308ba9b1d3c3d0c135dc22239e3acb194a6465b7f0af0", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "ddddaef5156ea65f897313a71fd5773578f7cc16bd885c69189b61e45b4e067b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "1a1c681cb798a5350dfabb2358f2539d9c0413d4846234f34b1a34ff26045d17", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "8231d3e53653597dd3c325233ff702b7fae8dc50fac08a5be41b75bc82247d22", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "8231d3e53653597dd3c325233ff702b7fae8dc50fac08a5be41b75bc82247d22", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "6e0d98d8af31a36a596e9bc7ba20f1c7074dc4eeabb259012c5426e6dccc959d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "546f0e8007aa77a2af521ac00663f1277484f6509f246b761649223f08f71595", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "bc61bf319968281a970eedd72f2a324f506cabdf7918831d857ec4c572e40e87", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "b11ecfdde8e5f71c971ea974481c3caf9788dfdf4ff8c6688669a829857eea0a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "95e45c8f50706f64950fe9d7a715d05cd3a305fcc9ac9e5a19340535147dc1f9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "b11ecfdde8e5f71c971ea974481c3caf9788dfdf4ff8c6688669a829857eea0a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0b1533e3d291e89fe21b3542a44a7791fc307d94d5972896a04db133db0ff915", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0b1533e3d291e89fe21b3542a44a7791fc307d94d5972896a04db133db0ff915", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "14cd47754efdaf800f2c804c63117b3f52fbb58d24361fdb59400869ac306783", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "5f0cc8859ddd9a47e35019ca91b6582ad5435bc2e58088e7eebb83fc3a190931", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "dbd0d2becd8854a2bfa7264e593e9a79a4c72f46b12bbd1298078f083e6d439b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "f64a8f79bef535f59a59813dfb9cdb4e0b29163f0b7637cebe755460cdaef51a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "ad002a7f6e600ae2c32c97ffce4c681c20ff438943fa53bf79d5d9b3ea2cd076", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "3be0d4f796468d5a0badc962eddb7e0ce05f329b6d77a11542db1e13d2738e6b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "73a9282b279160e08d23a761ec21360662150bb9d930129c5234598859acb882", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "b5094945beef4e53f153b7c34d570429dea8b5452433090d6bee259e80515e44", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "a95c7b1c72aa9381c31401d5d8e6d4926dbf3cb9a9b7350aa96e3c4870389200", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "11e2c63d031b16c9936225e1715eb9c532ca43742d4dfd3696279d372a093fc9", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "a95c7b1c72aa9381c31401d5d8e6d4926dbf3cb9a9b7350aa96e3c4870389200", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "2b302d2e78e75cf7c6061310d7d51f83c5458172b8287c67c3a009aff81beac4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2b302d2e78e75cf7c6061310d7d51f83c5458172b8287c67c3a009aff81beac4", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "bfd12a49430db12fd0f664ea483061b3d0de2d41cafca9229c126ddfc703fccf", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "17fd2fc255c43a3723a2cff868101c0f88c3fd2b1c93e89975ce990787653991", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "a20d8a1d298f670c4862f9a69631f6639e16a1de2b60ef7ecddf15193e30ea49", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "f64a8f79bef535f59a59813dfb9cdb4e0b29163f0b7637cebe755460cdaef51a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "c1945698315266ed0122146b0c73fa2e08cbdd38201a6ad86126b2d72a232d10", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "90a02594cd95d89e6aa7f8cc12fc99a0822b2950c3d7267567fbc385c571b0ad", +"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "32962ed3018918180d75d43aa45347aa004ac514d5314e2d9a8def0118d4ab9a", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "ad002a7f6e600ae2c32c97ffce4c681c20ff438943fa53bf79d5d9b3ea2cd076", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "14cd47754efdaf800f2c804c63117b3f52fbb58d24361fdb59400869ac306783", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "e1285de14dd5caf6f999838a19d1fd099e14615092c18d1d66e0bc02db1c45e2", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "dbd0d2becd8854a2bfa7264e593e9a79a4c72f46b12bbd1298078f083e6d439b", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b4a0c44e7ec030d2190a6275e66c226d355442354d241992fcf24d83676d8da1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "99f491d82319d111457618179dcd376ce0f515e8f11d28595888fbc732e91424", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "ad002a7f6e600ae2c32c97ffce4c681c20ff438943fa53bf79d5d9b3ea2cd076", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "c1945698315266ed0122146b0c73fa2e08cbdd38201a6ad86126b2d72a232d10", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "bfd12a49430db12fd0f664ea483061b3d0de2d41cafca9229c126ddfc703fccf", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "e6986babc5f2ad63a8158b445e1875aa96bf2d5eb7c690fc9676d0f714e15589", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "a20d8a1d298f670c4862f9a69631f6639e16a1de2b60ef7ecddf15193e30ea49", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "bab62fdda1244bef57668320f6a4b25a2e3dddb55252a0292c11b2f6d6142b60", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "e7739ff5d837841a877594b704b655962f6b9cf1e2151967345f18f6b2a62a02", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "c1945698315266ed0122146b0c73fa2e08cbdd38201a6ad86126b2d72a232d10", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "19b948f557ebf500d80540e5b86a03f2be9dfa8e6a30686e4c3efa89689b78e1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "19b948f557ebf500d80540e5b86a03f2be9dfa8e6a30686e4c3efa89689b78e1", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "7f9aece317e149abd566d9028ad68752eb8226e2775d1655c3e60ef5a6980a63", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "67bba4c7b941a7bba39422bb79bee3000ff52a14fdd8ad79338a201f7e44f955", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "67bba4c7b941a7bba39422bb79bee3000ff52a14fdd8ad79338a201f7e44f955", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "958b83692ce78ab79690d310cfb0e26b34de15182c82cca99a78b6d2cd879e34", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "958b83692ce78ab79690d310cfb0e26b34de15182c82cca99a78b6d2cd879e34", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", -"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "f0400f343f28fb8d9762c75f44479a8e25757f0f18d7fe4b0f103fe91c5c436f", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "62f1005e2954f7a8b266a6c0e0df94f78b32405488f0ba675bc80845a29919cd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "62f1005e2954f7a8b266a6c0e0df94f78b32405488f0ba675bc80845a29919cd", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "faead315ded8a7a4f041240c3e8a343182beff3e85089433b957dfcdee250515", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "faead315ded8a7a4f041240c3e8a343182beff3e85089433b957dfcdee250515", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "7694f05670a7beefc7804e5edee71c5d8b0b576c249803677fdb428d47fc4383", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "7694f05670a7beefc7804e5edee71c5d8b0b576c249803677fdb428d47fc4383", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "400d50061c103adc8174221b2c9a3f8d7e0f6e2db9690a3da346a8043529c63d", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "9658e2a196c78b8df9d893aeed64f96fadb259e18d080a3e5d06d1be6adc2662", From b747a5bcc90f5d827eb3cb13f7c53cd73d109664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 20 Aug 2024 13:57:04 +0200 Subject: [PATCH 541/626] refactor(core): merge confirm_summary flow into confirm_output flow --- core/embed/rust/librust_qstr.h | 4 + core/embed/rust/src/ui/flow/swipe.rs | 2 +- .../ui/model_mercury/flow/confirm_output.rs | 267 +++++++++++++++--- .../ui/model_mercury/flow/confirm_summary.rs | 1 - .../rust/src/ui/model_mercury/flow/util.rs | 11 + .../embed/rust/src/ui/model_mercury/layout.rs | 7 +- core/mocks/generated/trezorui2.pyi | 7 +- .../src/trezor/ui/layouts/mercury/__init__.py | 44 +-- core/translations/signatures.json | 6 +- tests/input_flows_helpers.py | 2 +- 10 files changed, 293 insertions(+), 58 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index a9e6cd1705..9a5ac8936d 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -666,6 +666,10 @@ static void _librust_qstrs(void) { MP_QSTR_subprompt; MP_QSTR_subtext; MP_QSTR_subtitle; + MP_QSTR_summary_br_code; + MP_QSTR_summary_br_name; + MP_QSTR_summary_items; + MP_QSTR_summary_title; MP_QSTR_text; MP_QSTR_text_confirm; MP_QSTR_text_info; diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index d30598562d..3aa50bd76a 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -98,7 +98,7 @@ pub struct SwipeFlow { /// Current state of the flow. state: &'static dyn FlowState, /// Store of all screens which are part of the flow. - store: Vec<GcBox<dyn FlowComponentDynTrait>, 10>, + store: Vec<GcBox<dyn FlowComponentDynTrait>, 12>, /// Swipe detector. swipe: SwipeDetect, /// Swipe allowed diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index ee4082c60b..6724f63903 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -2,12 +2,14 @@ use heapless::Vec; use crate::{ error, - micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + micropython::{iter::IterBuf, map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ button_request::ButtonRequest, - component::{swipe_detect::SwipeSettings, ButtonRequestExt, ComponentExt, SwipeDirection}, + component::{ + swipe_detect::SwipeSettings, ButtonRequestExt, ComponentExt, MsgMap, SwipeDirection, + }, flow::{ base::{DecisionBuilder as _, StateChange}, FlowMsg, FlowState, SwipeFlow, @@ -24,11 +26,12 @@ use super::{ }, theme, }, - util::ConfirmBlobParams, + util::{ConfirmBlobParams, ShowInfoParams}, }; const MENU_ITEM_CANCEL: usize = 0; -const MENU_ITEM_ACCOUNT_INFO: usize = 1; +const MENU_ITEM_FEE_INFO: usize = 1; +const MENU_ITEM_ACCOUNT_INFO: usize = 2; #[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmOutput { @@ -102,8 +105,8 @@ impl FlowState for ConfirmOutputWithAmount { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { (_, FlowMsg::Info) => Self::Menu.transit(), - (Self::Menu, FlowMsg::Choice(0)) => Self::AccountInfo.transit(), - (Self::Menu, FlowMsg::Choice(1)) => Self::CancelTap.swipe_left(), + (Self::Menu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => Self::CancelTap.swipe_left(), + (Self::Menu, FlowMsg::Choice(MENU_ITEM_ACCOUNT_INFO)) => Self::AccountInfo.transit(), (Self::Menu, FlowMsg::Cancelled) => Self::Address.swipe_right(), (Self::CancelTap, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), (_, FlowMsg::Cancelled) => Self::Menu.transit(), @@ -112,6 +115,97 @@ impl FlowState for ConfirmOutputWithAmount { } } +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ConfirmOutputWithSummary { + Address, + AddressMenu, + AddressMenuCancel, + Summary, + SummaryMenu, + SummaryMenuCancel, + FeeInfo, + Hold, + HoldMenu, + HoldMenuCancel, + AccountInfo, +} + +impl FlowState for ConfirmOutputWithSummary { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Address, SwipeDirection::Left) => Self::AddressMenu.swipe(direction), + (Self::Address, SwipeDirection::Up) => Self::Summary.swipe(direction), + (Self::AccountInfo, SwipeDirection::Right) => Self::AddressMenu.swipe(direction), + (Self::Summary, SwipeDirection::Left) => Self::SummaryMenu.swipe(direction), + (Self::Summary, SwipeDirection::Up) => Self::Hold.swipe(direction), + (Self::Summary, SwipeDirection::Down) => Self::Address.swipe(direction), + (Self::FeeInfo, SwipeDirection::Right) => Self::SummaryMenu.swipe(direction), + (Self::Hold, SwipeDirection::Left) => Self::HoldMenu.swipe(direction), + (Self::Hold, SwipeDirection::Down) => Self::Summary.swipe(direction), + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (Self::Address, FlowMsg::Info) => Self::AddressMenu.transit(), + (Self::AddressMenu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => { + Self::AddressMenuCancel.swipe_left() + } + (Self::AddressMenuCancel, FlowMsg::Cancelled) => Self::AddressMenu.swipe_right(), + (Self::Summary, FlowMsg::Info) => Self::SummaryMenu.transit(), + (Self::SummaryMenu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => { + Self::SummaryMenuCancel.swipe_left() + } + (Self::SummaryMenuCancel, FlowMsg::Cancelled) => Self::SummaryMenu.swipe_right(), + (Self::Hold, FlowMsg::Info) => Self::HoldMenu.transit(), + (Self::HoldMenu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => { + Self::HoldMenuCancel.swipe_left() + } + (Self::HoldMenuCancel, FlowMsg::Cancelled) => Self::HoldMenu.swipe_right(), + (Self::SummaryMenu, FlowMsg::Choice(MENU_ITEM_FEE_INFO)) => Self::FeeInfo.swipe_left(), + (Self::AddressMenu, FlowMsg::Choice(MENU_ITEM_ACCOUNT_INFO)) => { + Self::AccountInfo.swipe_left() + } + (Self::AddressMenu, FlowMsg::Cancelled) => Self::Address.swipe_right(), + (Self::SummaryMenu, FlowMsg::Cancelled) => Self::Summary.swipe_right(), + (Self::FeeInfo, FlowMsg::Cancelled) => Self::SummaryMenu.swipe_right(), + (Self::HoldMenu, FlowMsg::Cancelled) => Self::Hold.swipe_right(), + ( + Self::AddressMenuCancel | Self::SummaryMenuCancel | Self::HoldMenuCancel, + FlowMsg::Confirmed, + ) => self.return_msg(FlowMsg::Cancelled), + (Self::Address, FlowMsg::Cancelled) => Self::AddressMenu.transit(), + (Self::Summary, FlowMsg::Cancelled) => Self::SummaryMenu.transit(), + (Self::Hold, FlowMsg::Cancelled) => Self::HoldMenu.transit(), + (Self::Hold, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), + _ => self.do_nothing(), + } + } +} + +fn get_cancel_page( +) -> MsgMap<Frame<SwipeContent<PromptScreen>>, impl Fn(FrameMsg<PromptMsg>) -> Option<FlowMsg>> { + Frame::left_aligned( + TR::send__cancel_sign.into(), + SwipeContent::new(PromptScreen::new_tap_to_cancel()), + ) + .with_cancel_button() + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + _ => None, + }) +} + #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_confirm_output(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, new_confirm_output_obj) } @@ -119,9 +213,11 @@ pub extern "C" fn new_confirm_output(n_args: usize, args: *const Obj, kwargs: *m fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { let title: Option<TString> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; + let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; let account_path: Option<TString> = kwargs.get(Qstr::MP_QSTR_account_path)?.try_into_option()?; + let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; @@ -131,6 +227,18 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; let text_mono: bool = kwargs.get_or(Qstr::MP_QSTR_text_mono, true)?; + let summary_items: Obj = kwargs.get(Qstr::MP_QSTR_summary_items)?; + let fee_items: Obj = kwargs.get(Qstr::MP_QSTR_fee_items)?; + + let summary_title: Option<TString> = + kwargs.get(Qstr::MP_QSTR_summary_title)?.try_into_option()?; + let summary_br_name: Option<TString> = kwargs + .get(Qstr::MP_QSTR_summary_br_name)? + .try_into_option()?; + let summary_br_code: Option<u16> = kwargs + .get(Qstr::MP_QSTR_summary_br_code)? + .try_into_option()?; + let cancel_text: Option<TString> = kwargs.get(Qstr::MP_QSTR_cancel_text)?.try_into_option()?; // Address @@ -143,27 +251,27 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err .into_layout()? .one_button_request(ButtonRequest::from_num(br_code, br_name)); - // Menu - let mut menu = VerticalMenu::empty(); - let mut menu_items = Vec::<usize, 3>::new(); + // AddressMenu + let mut address_menu = VerticalMenu::empty(); + let mut address_menu_items = Vec::<usize, 2>::new(); if account.is_some() && account_path.is_some() { - menu = menu.item( + address_menu = address_menu.item( theme::ICON_CHEVRON_RIGHT, TR::address_details__account_info.into(), ); - unwrap!(menu_items.push(MENU_ITEM_ACCOUNT_INFO)); + unwrap!(address_menu_items.push(MENU_ITEM_ACCOUNT_INFO)); } - menu = menu.danger( + address_menu = address_menu.danger( theme::ICON_CANCEL, cancel_text.unwrap_or(TR::send__cancel_sign.into()), ); - unwrap!(menu_items.push(MENU_ITEM_CANCEL)); - let content_menu = Frame::left_aligned(TString::empty(), menu) + unwrap!(address_menu_items.push(MENU_ITEM_CANCEL)); + let content_address_menu = Frame::left_aligned(TString::empty(), address_menu) .with_cancel_button() .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(move |msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { - let selected_item = menu_items[i]; + let selected_item = address_menu_items[i]; Some(FlowMsg::Choice(selected_item)) } FrameMsg::Button(_) => Some(FlowMsg::Cancelled), @@ -173,21 +281,6 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err let ad = AddressDetails::new(TR::send__send_from.into(), account, account_path)?; let content_account = ad.map(|_| Some(FlowMsg::Cancelled)); - // CancelTap - let content_cancel_tap = Frame::left_aligned( - TR::send__cancel_sign.into(), - SwipeContent::new(PromptScreen::new_tap_to_cancel()), - ) - .with_cancel_button() - .with_footer(TR::instructions__tap_to_confirm.into(), None) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) - .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .map(|msg| match msg { - FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), - FrameMsg::Button(_) => Some(FlowMsg::Cancelled), - _ => None, - }); - let res = if amount.is_some() { let content_amount = ConfirmBlobParams::new( TR::words__amount.into(), @@ -205,15 +298,121 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err SwipeFlow::new(&ConfirmOutputWithAmount::Address)? .with_page(&ConfirmOutputWithAmount::Address, content_address)? .with_page(&ConfirmOutputWithAmount::Amount, content_amount)? - .with_page(&ConfirmOutputWithAmount::Menu, content_menu)? + .with_page(&ConfirmOutputWithAmount::Menu, content_address_menu)? .with_page(&ConfirmOutputWithAmount::AccountInfo, content_account)? - .with_page(&ConfirmOutputWithAmount::CancelTap, content_cancel_tap)? + .with_page(&ConfirmOutputWithAmount::CancelTap, get_cancel_page())? + } else if summary_items != Obj::const_none() { + // Summary + let mut summary = + ShowInfoParams::new(summary_title.unwrap_or(TR::words__title_summary.into())) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe_up() + .with_swipe_down(); + for pair in IterBuf::new().try_iterate(summary_items)? { + let [label, value]: [TString; 2] = util::iter_into_array(pair)?; + summary = unwrap!(summary.add(label, value)); + } + let content_summary = summary + .into_layout()? + .one_button_request(ButtonRequest::from_num( + summary_br_code.unwrap(), + summary_br_name.unwrap(), + )) + .with_pages(|summary_pages| summary_pages + 1); + + // Hold + let content_hold = Frame::left_aligned( + TR::send__sign_transaction.into(), + SwipeContent::new(PromptScreen::new_hold_to_confirm()), + ) + .with_menu_button() + .with_footer(TR::instructions__hold_to_sign.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .map(|msg| match msg { + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, + }); + + // FeeInfo + let mut has_fee_info = false; + let mut fee = ShowInfoParams::new(TR::confirm_total__title_fee.into()).with_cancel_button(); + if fee_items != Obj::const_none() { + for pair in IterBuf::new().try_iterate(fee_items)? { + let [label, value]: [TString; 2] = util::iter_into_array(pair)?; + fee = unwrap!(fee.add(label, value)); + has_fee_info = true; + } + } + let content_fee = fee.into_layout()?; + + // SummaryMenu + let mut summary_menu = VerticalMenu::empty(); + let mut summary_menu_items = Vec::<usize, 2>::new(); + if has_fee_info { + summary_menu = summary_menu.item( + theme::ICON_CHEVRON_RIGHT, + TR::confirm_total__title_fee.into(), + ); + unwrap!(summary_menu_items.push(MENU_ITEM_FEE_INFO)); + } + summary_menu = summary_menu.danger( + theme::ICON_CANCEL, + cancel_text.unwrap_or(TR::send__cancel_sign.into()), + ); + unwrap!(summary_menu_items.push(MENU_ITEM_CANCEL)); + let content_summary_menu = Frame::left_aligned(TString::empty(), summary_menu) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { + let selected_item = summary_menu_items[i]; + Some(FlowMsg::Choice(selected_item)) + } + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + // HoldMenu + let hold_menu = VerticalMenu::empty().danger( + theme::ICON_CANCEL, + cancel_text.unwrap_or(TR::send__cancel_sign.into()), + ); + let content_hold_menu = Frame::left_aligned(TString::empty(), hold_menu) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(move |msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(_)) => { + Some(FlowMsg::Choice(MENU_ITEM_CANCEL)) + } + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + SwipeFlow::new(&ConfirmOutputWithSummary::Address)? + .with_page(&ConfirmOutputWithSummary::Address, content_address)? + .with_page(&ConfirmOutputWithSummary::AddressMenu, content_address_menu)? + .with_page( + &ConfirmOutputWithSummary::AddressMenuCancel, + get_cancel_page(), + )? + .with_page(&ConfirmOutputWithSummary::Summary, content_summary)? + .with_page(&ConfirmOutputWithSummary::SummaryMenu, content_summary_menu)? + .with_page( + &ConfirmOutputWithSummary::SummaryMenuCancel, + get_cancel_page(), + )? + .with_page(&ConfirmOutputWithSummary::FeeInfo, content_fee)? + .with_page(&ConfirmOutputWithSummary::Hold, content_hold)? + .with_page(&ConfirmOutputWithSummary::HoldMenu, content_hold_menu)? + .with_page(&ConfirmOutputWithSummary::HoldMenuCancel, get_cancel_page())? + .with_page(&ConfirmOutputWithSummary::AccountInfo, content_account)? } else { SwipeFlow::new(&ConfirmOutput::Address)? .with_page(&ConfirmOutput::Address, content_address)? - .with_page(&ConfirmOutput::Menu, content_menu)? + .with_page(&ConfirmOutput::Menu, content_address_menu)? .with_page(&ConfirmOutput::AccountInfo, content_account)? - .with_page(&ConfirmOutput::CancelTap, content_cancel_tap)? + .with_page(&ConfirmOutput::CancelTap, get_cancel_page())? }; Ok(LayoutObj::new(res)?.into()) diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs index b30908cf0c..a5766390f2 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_summary.rs @@ -53,7 +53,6 @@ impl FlowState for ConfirmSummary { (Self::Summary, SwipeDirection::Up) => Self::Hold.swipe(direction), (Self::Hold, SwipeDirection::Down) => Self::Summary.swipe(direction), (Self::Menu, SwipeDirection::Right) => Self::Summary.swipe(direction), - (Self::Menu, SwipeDirection::Left) => Self::FeeInfo.swipe(direction), (Self::AccountInfo | Self::FeeInfo | Self::CancelTap, SwipeDirection::Right) => { Self::Menu.swipe(direction) } diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/model_mercury/flow/util.rs index dbcdbef0d4..0cf9e5d979 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/util.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/util.rs @@ -153,6 +153,7 @@ pub struct ShowInfoParams { footer_description: Option<TString<'static>>, chunkify: bool, swipe_up: bool, + swipe_down: bool, items: Vec<(TString<'static>, TString<'static>), 4>, } @@ -167,6 +168,7 @@ impl ShowInfoParams { footer_description: None, chunkify: false, swipe_up: false, + swipe_down: false, items: Vec::new(), } } @@ -218,6 +220,11 @@ impl ShowInfoParams { self } + pub const fn with_swipe_down(mut self) -> Self { + self.swipe_down = true; + self + } + #[inline(never)] pub fn into_layout( self, @@ -268,6 +275,10 @@ impl ShowInfoParams { frame = frame.with_swipe(SwipeDirection::Up, SwipeSettings::default()); } + if self.swipe_down { + frame = frame.with_swipe(SwipeDirection::Down, SwipeSettings::default()); + } + frame = frame.with_vertical_pages(); Ok(frame.map(move |msg| { diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 8f14345ebf..154ca77bb9 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1764,9 +1764,14 @@ pub static mp_module_trezorui2: Module = obj_module! { /// account_path: str | None, /// br_code: ButtonRequestType, /// br_name: str, + /// summary_items: Iterable[tuple[str, str]] | None = None, + /// fee_items: Iterable[tuple[str, str]] | None = None, + /// summary_title: str | None = None, + /// summary_br_code: ButtonRequestType | None = None, + /// summary_br_name: str | None = None, /// cancel_text: str | None = None, /// ) -> LayoutObj[UiResult]: - /// """Confirm recipient.""" + /// """Confirm the recipient, (optionally) confirm the amount and (optionally) confirm the summary and present a Hold to Sign page.""" Qstr::MP_QSTR_flow_confirm_output => obj_fn_kw!(0, flow::new_confirm_output).as_obj(), /// def flow_confirm_summary( diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 20bc5f2100..0f251b98ab 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -585,9 +585,14 @@ def flow_confirm_output( account_path: str | None, br_code: ButtonRequestType, br_name: str, + summary_items: Iterable[tuple[str, str]] | None = None, + fee_items: Iterable[tuple[str, str]] | None = None, + summary_title: str | None = None, + summary_br_code: ButtonRequestType | None = None, + summary_br_name: str | None = None, cancel_text: str | None = None, ) -> LayoutObj[UiResult]: - """Confirm recipient.""" + """Confirm the recipient, (optionally) confirm the amount and (optionally) confirm the summary and present a Hold to Sign page.""" # rust/src/ui/model_mercury/layout.rs diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index e2a522f2e3..60c0d9afbc 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -648,14 +648,19 @@ async def confirm_output( await raise_if_not_confirmed( RustLayout( trezorui2.flow_confirm_output( + title=title, address=address, amount=amount, - title=title, chunkify=chunkify, account=source_account, account_path=source_account_path, br_code=br_code, br_name="confirm_output", + summary_items=None, + fee_items=None, + summary_title=None, + summary_br_name=None, + summary_br_code=None, cancel_text=cancel_text, ) ) @@ -1023,21 +1028,28 @@ async def confirm_ethereum_tx( br_code: ButtonRequestType = ButtonRequestType.SignTx, chunkify: bool = False, ) -> None: - await confirm_output( - recipient, - title=TR.words__recipient, - chunkify=chunkify, - cancel_text=TR.buttons__cancel, - br_code=ButtonRequestType.Other, - ) - - await _confirm_summary( - items=( - (TR.words__amount, total_amount), - (TR.send__maximum_fee, maximum_fee), - ), - fee_items=fee_info_items, - cancel_text=TR.buttons__cancel, + await raise_if_not_confirmed( + RustLayout( + trezorui2.flow_confirm_output( + title=TR.words__recipient, + address=recipient, + amount=None, + chunkify=chunkify, + account=None, + account_path=None, + br_code=ButtonRequestType.Other, + br_name="confirm_output", + summary_items=( + (TR.words__amount, total_amount), + (TR.send__maximum_fee, maximum_fee), + ), + fee_items=fee_info_items, + summary_title=TR.words__title_summary, + summary_br_name="confirm_total", + summary_br_code=ButtonRequestType.SignTx, + cancel_text=TR.buttons__cancel, + ) + ) ) async def confirm_ethereum_staking_tx( diff --git a/core/translations/signatures.json b/core/translations/signatures.json index faf8f88322..accc1df2d4 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "14c1d561c00b83c685a89d37be68d94dae0fb8b88835d346c877e6246fe022e3", - "datetime": "2024-08-09T07:44:08.162423", - "commit": "89a3ce360514eff165fe0fcb0c2a218b88d85e07" + "merkle_root": "ec4c2be9904443c49bf659e69670ffb2d979fa9e4335fb3cda666a08ce27c16c", + "datetime": "2024-08-22T07:03:54.917145", + "commit": "bfa6f2c3e44156eea17c08bb09ce12f2307bcc0f" }, "history": [ { diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index c0df5e7e9b..7abe27fcfa 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -454,7 +454,7 @@ def confirm_tx( if cancel: self.debug.press_no() else: - self.debug.press_yes() + self.debug.swipe_up() yield TR.assert_equals( self.debug.wait_layout().title(), "words__title_summary" From e3c3264f688a13d0cb669baa762186e68546d2fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Mon, 26 Aug 2024 13:19:29 +0200 Subject: [PATCH 542/626] chore(core/translations): shorten es menu item --- core/translations/es.json | 2 +- core/translations/signatures.json | 6 +- tests/ui_tests/fixtures.json | 230 +++++++++++++++--------------- 3 files changed, 119 insertions(+), 119 deletions(-) diff --git a/core/translations/es.json b/core/translations/es.json index 95e2a6a2cf..66d0ac5a1e 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -50,7 +50,7 @@ "address__title_cosigner": "Cofirmante", "address__title_receive_address": "Dirección destino", "address__title_yours": "Tuyo", - "address_details__account_info": "Información de la cuenta", + "address_details__account_info": "Info. cuenta", "address_details__derivation_path": "Ruta de derivación", "address_details__derivation_path_colon": "Ruta de derivación:", "address_details__title_receive_address": "Dirección destino", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index accc1df2d4..24e3ace6bb 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "ec4c2be9904443c49bf659e69670ffb2d979fa9e4335fb3cda666a08ce27c16c", - "datetime": "2024-08-22T07:03:54.917145", - "commit": "bfa6f2c3e44156eea17c08bb09ce12f2307bcc0f" + "merkle_root": "96fd6399d7631ec16b02f8794aa75ddc5e42152ffcf5acf528206298e9998bb3", + "datetime": "2024-08-26T11:18:49.662110", + "commit": "26436ef6aa930f019e85acf0d0b48e22838b91b3" }, "history": [ { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 6bd7e896d7..f24419fa2d 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -19623,9 +19623,9 @@ "T3T1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "b15ce77f1ccb9de9cf3ba7a8cd6bc97bf52040fab84bb80ecde321ec59ed8dbb", "T3T1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "6093b1b647c91bdea75429533c16f92483abe01e7278cddf8311dc6d63e9a42c", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "ed71aaf248b10ef2f55c62b85cdd3cf09e8d3153cd253dddc41d68858b319507", -"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "02173ee3c6d91d2275836bbc15e9080f8db800b0357b7b1c291f082b5c5c18a8", -"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "cf5a52723f0599b739202dca77da2fe387c52a5ce1885b9b5dba025a50b9fe4a", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "b46fe77a46390cbe650fc330dc2c2b067a79e6e34e4c6366ff10fcc11849c231", +"T3T1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "368c0f495ae82549827fcae725a3db76b5afff11012441e4609dbbba0f77e25e", +"T3T1_es_binance-test_get_public_key.py::test_binance_get_public_key": "da2dfc870783f27dd7a65d4d9d6dd097da4c431990a3368be603f9076cae8682", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "d5ce001ab5b814e7e2599eb38e353980d0911c4d32546f843c0a54d513f0b35d", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "4ee7888beccdf7a8ccd06e72e4267ed02ee0a05f5826db237a0a1b61123bd4d6", "T3T1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "837d521274bdb9f793da96aa158c90405b44e1f60b1c18374fa5ba93b24b8f8f", @@ -19650,42 +19650,42 @@ "T3T1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "7b0fbd9aa6437612e452b3cb59266949ab33486d19fdf9dd638000524c63432e", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "09ef6b274e404f23eb51b8129fcafceb26fd0f797529242b5fe4b137ba0aa2c3", "T3T1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "d4978c6453a533d34d732f20fb14a2e7b49a528f769899d311c8dc10f48d79c0", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "8fd3972e119070574de778b1d2144e47925c4f1b822cf82da7ebff47038f3309", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "f83868727119831ef97bfc3ccdd03fdde9122d9c7446e2d4e897f1fa6a22355a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "a7a05777a0bd2d6ee796aef96036487b8581efaac9cd16ab84cb80866ac0b255", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "a2e30316dfa1e1cafd8cc6169971555e8a89e47c37fe765df6e9557bdff89df9", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "ce7e19cac1a192f5838aa3e947e235653ac5654ed750bb2a7c8ca3d7cab7f5cc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "ebf08c5cb26f7889f4c35c3c705188e2ed69a190b6fb7d676b3843da44b9f3cf", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "c226fdb7d080d0561f791ff5240f3bbd23609c406e3c9c5daec41bba4753e980", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "db41ea5b4c0e4fa313f67aa29d6331ce624ba79ec82103273da47079d422e2d3", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "180e34e65d4869f6826c3137de20dc7bc333cd14b4abf866eaa0932af4c08db5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "5db5cdf4602fd039cb0061bb7183c918a0727369359c7ff6f0a3a0d2b38794f6", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b27f1a9a3ec8e9511a550e7f317b8fdfef5170da3af6de7f1fe6effc3f352d5d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "5e817c8efa97fbb35e49e36defe2de884652ed698fdb5203bdbee10f1d82ffcb", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "cc0e8ff4c3f97cfa9a6a57e60574ecc90ec1c83e0b46501c56f6a3d252da6f95", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "93e30f2d8931f22cba138a877a21fed01de844c3f5199520a06ac139a4d9c541", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "c0a441130364247682ffcb719448209687dee9ed7a2b6ac1fe107dbc407524ba", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "f6981ce57969456e40df06201824c5ed70de5407f87d4ab86869e15e04afa015", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "1e44abb57d3a3f76e5ddb103e4f9eaf4b2d7227e4e0f5c58e07b1df693914590", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "956551cd4f59daad41129561474ce1c9c228f525dbf8de77acd28408d1913212", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "8fd3972e119070574de778b1d2144e47925c4f1b822cf82da7ebff47038f3309", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "f83868727119831ef97bfc3ccdd03fdde9122d9c7446e2d4e897f1fa6a22355a", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "a7a05777a0bd2d6ee796aef96036487b8581efaac9cd16ab84cb80866ac0b255", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "a2e30316dfa1e1cafd8cc6169971555e8a89e47c37fe765df6e9557bdff89df9", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "ce7e19cac1a192f5838aa3e947e235653ac5654ed750bb2a7c8ca3d7cab7f5cc", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "ebf08c5cb26f7889f4c35c3c705188e2ed69a190b6fb7d676b3843da44b9f3cf", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "c226fdb7d080d0561f791ff5240f3bbd23609c406e3c9c5daec41bba4753e980", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "db41ea5b4c0e4fa313f67aa29d6331ce624ba79ec82103273da47079d422e2d3", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "180e34e65d4869f6826c3137de20dc7bc333cd14b4abf866eaa0932af4c08db5", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "5db5cdf4602fd039cb0061bb7183c918a0727369359c7ff6f0a3a0d2b38794f6", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b27f1a9a3ec8e9511a550e7f317b8fdfef5170da3af6de7f1fe6effc3f352d5d", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "5e817c8efa97fbb35e49e36defe2de884652ed698fdb5203bdbee10f1d82ffcb", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "cc0e8ff4c3f97cfa9a6a57e60574ecc90ec1c83e0b46501c56f6a3d252da6f95", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "93e30f2d8931f22cba138a877a21fed01de844c3f5199520a06ac139a4d9c541", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "c0a441130364247682ffcb719448209687dee9ed7a2b6ac1fe107dbc407524ba", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "f6981ce57969456e40df06201824c5ed70de5407f87d4ab86869e15e04afa015", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "1e44abb57d3a3f76e5ddb103e4f9eaf4b2d7227e4e0f5c58e07b1df693914590", -"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "956551cd4f59daad41129561474ce1c9c228f525dbf8de77acd28408d1913212", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "212bbae3f2669f831b1705effee50d337fd007dff99df1eb749eafbedc4d09fb", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "71097b2e162eac354d73a5132753ee76780111468a730879519737cdd9620df8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "1650fade10b0cbfbbb0bd1e701f59827cfb55839f76dd6c0fa7f3820b6df97d6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "38abf37027d93f5a2f244997bff450c936413b057b436ac52ed0ee12a60fd28a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "4063db359bae09f86c081d472e8d92ef75688f1418bbfef58f959da374e29dac", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "04852c520a79895f60af202ebf07decc4e51eae083a232c8cbba0c160e750b7a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "eaba275a76e086c5ab3f7d862ef3a02dca38622f33c82ef4c5541e508fcac432", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "982d4168072a04f71228dd454b2fa6bdfc9ca42ac08ac72d231f4bd162f021c5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "42b17109fd99215a98157d17bfd39fa71d85ce5fe3bee1cb61a46a01bc0c0c71", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "35e9d698295a9b17e4402f2b96c24123680d0ef08fdea06cee80375495df4eff", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b381446cafb2bdcc2e4c1444210f6a6d95481329f3446aac9a126719be22df0a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "198559f0ed625ddfdbbc7d26bcdd26c9506b84ee50f4aa15f8adf71a723faa4f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c36d78af58cae953754708b7347c21dd5627f97687d82f558e5d1b2af2ed1896", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f427b7a81f554bb146f3897a0e1b2a2cb48a6b9a314093a1e1c4adc697937074", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "2491be0879a35db44a0734a44ca4048b82ac91a78412aa5241f93cd90694e0cc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "dbbb9387f897ac733cb416b9975365410b4b8e4407d10a45aacd12a6f695608a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "57ec9256204cdb49bf96daddbffeee83d5ee9c3a5d220d40f0c096713fd965f4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "84362470ddd14fff092077d1e3c4e9065dbf74d335f8ef6a10536b925f1e2f71", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "212bbae3f2669f831b1705effee50d337fd007dff99df1eb749eafbedc4d09fb", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "71097b2e162eac354d73a5132753ee76780111468a730879519737cdd9620df8", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "1650fade10b0cbfbbb0bd1e701f59827cfb55839f76dd6c0fa7f3820b6df97d6", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "38abf37027d93f5a2f244997bff450c936413b057b436ac52ed0ee12a60fd28a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "4063db359bae09f86c081d472e8d92ef75688f1418bbfef58f959da374e29dac", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "04852c520a79895f60af202ebf07decc4e51eae083a232c8cbba0c160e750b7a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "eaba275a76e086c5ab3f7d862ef3a02dca38622f33c82ef4c5541e508fcac432", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "982d4168072a04f71228dd454b2fa6bdfc9ca42ac08ac72d231f4bd162f021c5", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "42b17109fd99215a98157d17bfd39fa71d85ce5fe3bee1cb61a46a01bc0c0c71", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "35e9d698295a9b17e4402f2b96c24123680d0ef08fdea06cee80375495df4eff", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b381446cafb2bdcc2e4c1444210f6a6d95481329f3446aac9a126719be22df0a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "198559f0ed625ddfdbbc7d26bcdd26c9506b84ee50f4aa15f8adf71a723faa4f", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "c36d78af58cae953754708b7347c21dd5627f97687d82f558e5d1b2af2ed1896", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f427b7a81f554bb146f3897a0e1b2a2cb48a6b9a314093a1e1c4adc697937074", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "2491be0879a35db44a0734a44ca4048b82ac91a78412aa5241f93cd90694e0cc", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "dbbb9387f897ac733cb416b9975365410b4b8e4407d10a45aacd12a6f695608a", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "57ec9256204cdb49bf96daddbffeee83d5ee9c3a5d220d40f0c096713fd965f4", +"T3T1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "84362470ddd14fff092077d1e3c4e9065dbf74d335f8ef6a10536b925f1e2f71", "T3T1_es_bitcoin-test_firo.py::test_spend_lelantus": "f3ac191bc9d38086442dd0a37ef19f66ede96d1145c73b419ae0e61ebf617b8d", "T3T1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "ff9598b6c84935bae534e54f066ebb7ea27ea94056c2d6657eb1c68a8e9bd783", "T3T1_es_bitcoin-test_getaddress.py::test_address_mac": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -19746,26 +19746,26 @@ "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "e3c09a5c5189e006e99b3d0ba6e39fb61ad69b9cffd0321dd72f2b2c94afba09", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b790d44a8e0732a01daf178eec9984bb5a661d79b0b4c2d0d8967dab55f6fb1f", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "75a2c7eebd35b909cee3e150ce3a64ce6017b8c3e5415d9f4d803ddc4a78e2d5", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "3bd7c2f4ce28270484f067f86d5297640029dea68604dce741ce7e34f51df3ab", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "46a990dd535b00d5dbcc88a70193f69a571bb393990ce3171507fe887943f3b3", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "d75b51c7e16f2c86db0258a3ff40b423153969902987451e499356fe721cb122", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "f4e7ad66f0b5bc7378008eb195aa57d64a42b24cc54c273fd3679afa293b7f91", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "dda5a2551feebbfadd96f97586f15035fd4e48cbca965603bf7f8e974a8c495b", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "e6b277642b173f2e8af4efa484366c798953f087a9618abce8cad53efc6091d8", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "9bbb4d7882099cd63b660ac266573a0933fd3c9735a3bb52b4dde47a018dce56", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "8d713e67a3f8e179e28a52e7b85d343716a64e9e722f08fb1eaad633352a6b59", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "462e6c078325ea37b15e2aaf1fb1dfc458afc40e486df85a099ede76990cc89d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "462e6c078325ea37b15e2aaf1fb1dfc458afc40e486df85a099ede76990cc89d", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "11ca3c12899d9bcaa818c507f1ce6563db38ae9b30cbfef1de3c98f9820fd71a", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fc529b4f35296c4a0f427dc088b0566f320b0773a99dc0eec3d1f07fde7dbaa0", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "8558a6387b134f066557faa2b11707088d322d8b25618c6affda849c5ddc26d0", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "6e60bf00c27f3db4e0e79080ebd05bfff247c2d78e87b810fd4ef66ada9931ec", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "7f115c2adb5b65d82e70fbfa8c057f5402707be6e297b5e96c0c4858a24c3bb8", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "544870ff5b236caeab7482d917ae403ea2c135205d3ea09885da041d88f8aef8", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "489893624bc004649fdea866477d945b47bfe8fb511fd1b05757c33336f106a7", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "bab542e98d6850b230760c0e865c65b6248101026f8bdef835b6ba04942752f0", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "f558d2e6890ec68abbc5c7d0d0c6e9e4d867fc35c7ce4e91eb0963236a9c6fc6", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "9fb1ec3af776faf7723ef62c9b21735d83f9ba69dc8fe4a9a5370a28d9c215f9", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "2b70f846469e47878a14e1c288900192e70cd5ac5de734c7c7defbbafe6032c3", -"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "9dd8e24b88bd30a5feb139a8239d86a6a27fd0ad06788979cd5537bfd0f88e42", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "efa59e6767de97fe6fae0c93a2ec9e6c9af499857f687a9d16c07e2f9452d0c9", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "efa59e6767de97fe6fae0c93a2ec9e6c9af499857f687a9d16c07e2f9452d0c9", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "236d65bd3db015f4084e9d528d6d9eefb52d1b40faa8c16c510cefcf9a103d2a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "0140e4addc8eb1919ae4d7e669e6cf5f8bc0baca98980aed5bdfed1b77b64062", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "db7146da7dc1a9983f79216326724dc630fdd4f7cbe0237c230c2513a6c153ce", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "ddd88e93eefd62f7f04bc6747368fb83fbf32591b8de1d7470c2257d2b3b8ef7", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "80949a3f922ae312e13c3120f1536ed53d182bd7b4e176d02ab099feb85930a8", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "cad135a75db716e94730661737d624c18f00056b40016efac632621c86cec129", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "d2cc4cd869ce285ec6509a8e056930814c8bb652ade1d5229176f1cddd8f085c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "dd7ddb10f0243be37fdbd2926c9104f4c3a67fb2dd1d713147a7e2ca8244b82c", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "9ab79b49af67a8e27a3206ec9e79d3096ab1ac9ee3c3ddac7960246559532e15", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "6af397878db20732b6e8daa42017724cd5f279d83f3ab1c39490c8c15e6c09b3", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "21d880d24cc3a08ee1d1b88a699bcfd11c3d4544c346499970f97eaa14faf72a", +"T3T1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "158cb6f07f547283c392d80ca2432af314dd797cd4537e1e2d64cd45f41d40be", "T3T1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "7ccb1a25d3b74248a3fbe32a11130badfe105cb080602e4a715ba17f6a8f5f32", @@ -19786,17 +19786,17 @@ "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "f83868727119831ef97bfc3ccdd03fdde9122d9c7446e2d4e897f1fa6a22355a", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "8dd4032523da4c02bb67250ee8b0fc60f377da14989c2595e699f4d0a5a16ef1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "89563bbb4acabe79ad7c9c277695dc4a62d3e08f94d03149a84d39a036144983", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "6d4fe4312a1968c957977ae3f3127463699b41ff3300566f0fb324ba4b9d8983", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "b52ecd2522629d7ffe856043759321bc07ebf78d5683c0a66be292904ba563d1", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "023c395c34d04695455435bffe26048d34898cae596e1b285298eb0fe0513a60", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "ed1ad6236ffe1a3e4c9573b2412d0b7b188a2820c5ac45c1441e0320a0c01bfc", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "0369bb9916e710f7d5cd53515b47a55d33e369d8dc7a99dd830b04209b5f0a24", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "283d76329488a6ca11e10cabc14027c4951cce72833c71a7b56dd094e8270ae6", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b27f1a9a3ec8e9511a550e7f317b8fdfef5170da3af6de7f1fe6effc3f352d5d", -"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "b3d8cdb1cbfae5f30f558b6d7130aa60c5f0592557c3ec667715c9244830f089", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "71097b2e162eac354d73a5132753ee76780111468a730879519737cdd9620df8", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "7b26642b5da6c5c2cb1cc162e7fcc517e2add3bba209773ccebbdc1ac80ec760", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "8045a46a3fc943e7faa23347504684e7cf8e5ef7eeddc3f9169c75a3cf5b91af", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ec8976f10d9e99c1c90025e7c43be9b4422580ccb649ec1e9d3966ad17266152", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "5b0ef100144e8dff48b0217cd70ac99557c58c7c86dc2d7458ab2cc1cce9392d", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "538725b32f18a89c9087a86eccfe6b020c1cdea5f5af6061d566e6f7a5aa7a8f", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "d02f87b447ca8124e6695c63954f93652f84e966e917b9893be0b212fd668a5f", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "f042cebe3c5480459f5a2905a536769dc166ba653744586a503b5d544decbaec", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "89818083eaac6d6cbb0c3475fd4742f76e6ed4037f476490178a1d69dc6ccd1d", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b381446cafb2bdcc2e4c1444210f6a6d95481329f3446aac9a126719be22df0a", +"T3T1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "dc92bc83632d441becc040a30d2adbbfbdf13a3c0bb0a0bdb84617e4f0a5ca8d", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -19921,9 +19921,9 @@ "T3T1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", "T3T1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "de1d5713c02c912342a3d51c2c17d0396dff7128e685cf7bf7aeb88d82c1532e", -"T3T1_es_bitcoin-test_signtx.py::test_information": "6ec2cc9e5933b6dce64c18be2daff1c199fb13334d0c94f1e76d95769d5d6035", -"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "bc0ec1dbdbfedaa14e2ad5a8264f7fee6958dd61463952866d4b5f86ea8fb7d7", -"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "559975ac4144d9810e6e8c86f2af2e0a5be31783278c4b8ea6eda493ec35fe02", +"T3T1_es_bitcoin-test_signtx.py::test_information": "6d0fca8f91d9eb624e227aad26072f57ff2d03f7e0116957acf22c3cd7d16fa5", +"T3T1_es_bitcoin-test_signtx.py::test_information_cancel": "b6c674c59df0519200f5518af5a1713d39654d2dd8de6bc970e7ef3181a9b29a", +"T3T1_es_bitcoin-test_signtx.py::test_information_mixed": "a939d8f4a7bf9940294c6351e95b6c7741ab7b1d2f7bd387420a8d180cae0440", "T3T1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "2411c979803877085721d7ecc594668db5cecd123f21aa48e0ec0c8040e24ee9", "T3T1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "c78efa1a2f369e1252974905609bf6869db79b09d6f57a51a326b5e6163ba1c1", "T3T1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "85b253265c7e2733d42f6e115f6b876d7fd50534e9c00a04317d08d6d9955384", @@ -20152,26 +20152,26 @@ "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "be6523fad98cc403d8d73b4f45beb1e55c271c90a72219e667b0b155879db170", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "dd9723d587f1b7ea71212ea5237f8023aef23e2d3e63c58a84663d7bf94d2866", "T3T1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "c6dec532870efd9dec6a126c07bb9ac94b416057911778eea05c04b71766e16a", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5d38ec4d35fc7bd234fac68b4231fdf3320205575931141b9ec3160e50ee0a10", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0d0f2ea474ae4f1987935f1653340cb5bde1223d9799c631dc849270eec6b00d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "c77b227e20d89d74c08b2e8f277194858f914f84093b26685d2d2b790a81ba50", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "920174225cfc06828b56a5b55cf69e210e85318f9c942d97a044da14fbe79c96", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "9d8f2fa2a1e5e35924501ba171fdcb0c36814ec63d98af6258e206cc571a57b8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "1f319fd496645e224d8a2f96dd987c765d03ce118f2bf12d0d20c609d8dc63db", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "c753e577d257f499e3960744874c38bf9e17844ffb9dbc72e64c673dd1a5ab70", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "bab0461d15b1c271a242b84757a5578ad636acfa311ae79d0ee4a743e22ae8b3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "722dd8dbdbc3acffaa8b10dbad32556512b7ca9e4f0ac18e307b526b6cf2228b", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "78d4bd273a23e399c1a5a3dfedb59ccd22163fe386295a5044fdc97a862aeaee", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "c86a3aafdb2614f048368a978cef2990d0c5ad7d58581f0660af339de5c13366", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "9f2e09ddac9b6f55fa16a9010866510eade45e0999fd51e4caf24e84435852e3", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "2e83efa10b346d7f5b947d7d2ef9f55c16c21bc60a758154a46569e6cb17e8e8", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "07a5dbc578a03d531af5de180cbc24ccef503b4ebf7cf11f7798d0941d695648", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "b31f5666f78f0359631f4eaf08b56af8cfa34aaa71abc46eed3860f4d089bb17", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "f6fd7cfc15191b49d301847305a93c4e3634a58722e48e5ff3bcf7d03e83afe7", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a16450edf58ddce10dce0ccf35fa61a6ba2aa725fc10e69fc34dc52e2a94bdf0", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "a69ba0d3b98968a24567ac85cbda44fd0a413d6243bc1fd45d85c0f84c98050d", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "299f16f9717e853b2b193ee006484b89e73ab0123ce387e348b8d14fd991cfc6", -"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "44b818a7ef2bd7622a1968ab0d368ac2f48cb03b53b32b36bddcaea103d5aeb3", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "c16c17e18c56b375a036c115f359295a1c8bda8dacc680d5573084dc3540642b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "3e53e36fc8f9c1b2d247b79faf9bc9ca42b044a14304639da207ec751b68c152", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "3ecab541a9cfc4603550ba7861fc913d882b20bc4ecc4a60f6d83520016baa66", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "049062d2314976981b67f3f9da9fa49d6debea9193b885fad4d9052f87967050", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "b907448444207e01947956c631a319fd6bb6fe2499bab1a8c93d70336468b132", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "d799b2d1ead426ca9cfb193ed76866f840b19bf55a6bc7bcc2e5d71f0ef3cddc", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "db04d1f13c5607163f95bff69704f0c441f9be8c8966d9611b85c0afa78ba35d", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "f501eda4987a7370b9f4bc0dc4486ba8432be11bbb11f8e6adf55ae0218792c7", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "5cd49f2095e27dbab214950969ae6916f2e8c8f7ed4d1724cc0ce4f887964f1b", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "ad101be91dbcb533dfedb21bc3364296c97aac517d42c3860370d0395f93ad66", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "befb6f32190d061b67daba86dbd124e79754e967853a91b4a8ae69f94027f0aa", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "527b60551b234fa45dc3c159995dcc598d41b21601ae0c0c2b29bd4be6a09934", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "25f392e99f38501046ab00dae55e16d3092b4abeaca82b0f619f18c3ffec4dfd", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "ac282f657bedb3ea45ad6538f72261d30f49a6beed7122998aaf7aa1219f1256", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "b909c2ae61d91b73d6b17628306c3e48f937790ce36f7e59ce9031c24a6a0feb", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e09394109c2f5c6f9a2df7c72fdfac87d5cb63c6c279b34c70bceaf2edc7053e", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "dcc04e9d6411164956bf9b68273679065e8e5942e7e84a22930244832b7ce478", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "9475e9938154536b60cd293ef7e535e81e7fd6dba588950ec09b4c3bf26b82e0", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "637aae90d955ad5b852bb31697b9bbc6dca813e1c854a031a497e2dd3e502500", +"T3T1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "cfd18adc43f3f455bdd73c5424011ddc5426a19072253ea0e4ada00770c54a91", "T3T1_es_cardano-test_derivations.py::test_bad_session": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20449,12 +20449,12 @@ "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "5a6bcbade23abc09e916995b954c06283fef230a68ab89c7fc7f0db3b0628349", "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d006f7ae1dda4a34a4311b16cef24d9651fe14c44ff7ac39e6a0be577d690539", "T3T1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "00a6361fd0330027ea8505cd72c275aa75d32acfd006bb4281adc9e170d26076", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "0ceec0ceea6fa701c93912342a726421fb656d2a3b2da27d4b0ff620a28fc84f", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "3641e4a7344aa216386ccdac483d3a28acef6f577ee1b0160f5d68752dd54fa3", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "d392a65b792ac825164c1c51c9be19056bc84b5554f1917754879059d7f0724c", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f600c52557cfc869ffcfc2a996976c213df709468e510ff6ab2d5e211cb40096", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d8699e7b165b0839ffe274c4dbf62557d402eec5556c31510ba018384eaad91a", -"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "6f16883acf1342c4ef20452654cea11842eb83e7b148fee4578faaed904352a9", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "a705f462b1c8f84c9ad622ecfd329149ce88e898d0f0818940a4199bfa754b92", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "e5bbc660c64fd690e05c87a063d0356deabb7687357478550028447e20eba4af", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "c5a0dd9d631c1107611df4f2d333860942beab6cbb0f4d68e747a964dc15ffe6", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "2b6318f6420419f3da212557754c57f1a88940631e26b699038b2b10a0716a9e", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "5df1ac3eb51f62ea91dd22b096d86c51206a96411d10db0577bd0902776d8bcb", +"T3T1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "31a36389241215f008a86936d881e6900fb3854fa60606045baa991a8895ce9a", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", @@ -20590,9 +20590,9 @@ "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "4ceea07e3dbc713e086faf4005cd554a2b9cf6115852374b90ad4f413df1d1f4", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "48e303100c2701625f0cb096aeaeff15634dae299d0b8685dc01170244caf9c0", "T3T1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "bcc6e600d07887a176f7eeb11c3e2cc9c412a64d9559e3fe943255482dc71604", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "eb48ecceb68ff2126f1fdce140fae13616c21c21226c336f59b1766c42b9d675", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "90c6ac32c495cd80d2121c229d59952b384e0804671b12451cf7830439ccef72", -"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "e60cd445b7b044b5790f8f8f3f1d3d6f9d05669ab757dc8ab8efc4832129617a", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "582332920eee4720aa7f221e30950f4b86fe77bf89d47ea532073fd84d3c143d", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "c0bba28c847f6ba3ebe83769dcbb28971131b51208f02604298e116aaae627e8", +"T3T1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "4a4d3a0ac930122bef8d2c210c18c8ee04e5bf2c77e5580c23ba470f6fcc6605", "T3T1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "a01e8976a383b973efeccb020ca2e466bc56e81f71df7f2745d02129f621d996", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", @@ -20651,9 +20651,9 @@ "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "89bf880bda758eb19f52ed52e067db9eefc50ae733ee22b5fb588c1503bff329", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "225f1137de97158d11ea2764a86265a4e3f75a79b8f513fb2ecea8727040b5b4", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5d5718a47541b038f212f045964e93f42e5465399399475494ff8e19231d8609", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "6e590e23b0d71cb88cecfa60d65f3b92f35e7194c11de7074879828991fd4b80", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "be21e72fbcd04e9910d0e2c00d9ece642988317eaf3609e00c595870d05e6622", -"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "d6c2ad9954a2aa0e613f3d0537cd9ea8fb60c97f6776b455beaf61f0e9358276", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "de4656c1139558264b4276bc948d3a2c595f061bfebe160afd3992df1ddc3dd5", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "da8af43a2e577ef2a6b56ab0364d15bcb5600af08542acffbc7c78245a2f7dc7", +"T3T1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ed40ecdcaac9c171becb62aa44eef109a432ec0402b246c192443a30d5e50f61", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address_other": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "4b679f5cb96d989418755c99012447c637432b702aa0daf199acd6340a32e2ec", @@ -20744,16 +20744,16 @@ "T3T1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "bdda4329f4c64b5a8b394c4f2d6238a2e309d2d6f9d8fac0fa22b371264270e1", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "5231708cea497ece36853ee7aff92b01a56c12e4d7b149b54ea88d17937868c5", "T3T1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "54425ada4138e710631379130b2d01e2c046c698e8ef65f449cbff2ad94bfca2", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "4296c657a07ca2afc1ed94ce91fed40e85a96aec8714ecb69a2a2c7b7d8ad509", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "582d61bf89c98ba63fdf2ea729619de65682d7d6e172d487da73c5cb39a98966", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "dc3fb86f55450c9e6de4d79404b6f02d97f8cd47b14ddaac732fdcc3419852c1", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "1a93d695cd0eefa82e7405ec9d22eae35440a91c58ecad29378b305004bb0ab6", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "867cacf7c6c8d3cda42ed586e5b170d8f9f9422b970775484651272e66146716", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "a5e9060ad64f05b311b98bb9abb1b751e6ffea042db58743fc4b4934afe4d341", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "509255e9bf1206c8cffbb689412e3cd363f9daab813f755ee3ea507cecf3d9f4", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "503803b3a92103db035d6ed9780aedbfbd916d116505e255de0d191d097b785e", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "deb03fb2bf1eaf1d84a130811517e4130521156667c5253f54e853820265912d", -"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "80c6adeaa88e759bf5452d4f2219988adcd04b6e53f9fa189b70197d9d1a1be8", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "217e8287712efcd9735681fd96bc18aec220ddeed9f16d844699c0f28230d2d1", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "fdd7e2bdd44ea410b7dbd62a80c5981722f854d4de5b00cd5bfbda17bde5ec09", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "231e9a69dcf44db0cec24b28fa25ba52783b57de6f387e94362ce870cbacde0c", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "ae8d7eccaad0a898a40e635cfc7875a868fc2381afccba53e4fb6bb06c8a7ef7", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "166ecadd4f0b4b36080a3b31f0854013f197ceb27c6ef68fe3cb72ebf495fa76", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "18775f4ecff9b3d26181c9a878f4783c91a43b428bab1f8c4dff90d266d07738", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "977034c30d8662a2bf3167767c1a513ef4a051e977cd6adc96325c2e72f66a57", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "0d17a8d4e8e36a95d7d462ce9a207036a8def4feb289d109717ddc219be9847d", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "af289bdd3924941147a4ed13b12a9651878da21a027d624beb62da9d5adcea54", +"T3T1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "9f7b0c920d5dd3b49edc182a80d33314b1ed3a375a84b5e781bd9a31c8e0bf82", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "7611242549ae7472fba5ac920f4d43760e31ca11cda9afe3d712614da1e588f9", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "347e57729e002be57b6853188f46cf5c6b0e8fd9d702eed7cf0f73ae8b00720c", "T3T1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "3a06ba291c77fa4cfe90ac452a44ae3c8b5e27d53016632f08598a4fdda2f36e", @@ -20940,8 +20940,8 @@ "T3T1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "9b9b5c69cedac3983ec25b128a3fc1fb940a3c922e783405e4d7e640c4fbe49f", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "faa3fe89f0e40b73585f8ff38a46017fa083236ec02a3d3d847980e5d8f18164", "T3T1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "727a8ecc2ce13554ff1335082c344550b71536e6fca9254492cd3509437d7ca9", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "0c12e7dbd0fa4fe4d655feb4f8498ad8ddf1dc467dadbe459f621a74ee7472bf", -"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "157ad9e868d5a5c525549f1e0cc12c2dd5589b57ed70e907eff3ffa26c9fd35b", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "16aeaa1bc88aaac9cb3f47cdcf709982a3dbdbd1c0e94beec91bb3de3c937d26", +"T3T1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "3877d60e2d321e25738775e7ab22e59e381960aa69d27f385bde703f201d3b30", "T3T1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "2be2003eea5416d3bf50eadb034c8cbfae53be301f520a0e6327ee11dade3237", "T3T1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d256d580916a357609b65412c929ab8d0150643558f73d6b0f1f6ad9f7215eb5", From 0a0c1004c8dfd6e68181543acc75f457ea854747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 27 Aug 2024 13:59:34 +0200 Subject: [PATCH 543/626] chore(core): fix failing style check --- rust/trezor-client/src/flows/sign_tx.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/trezor-client/src/flows/sign_tx.rs b/rust/trezor-client/src/flows/sign_tx.rs index 40c72bdc73..300742b7d6 100644 --- a/rust/trezor-client/src/flows/sign_tx.rs +++ b/rust/trezor-client/src/flows/sign_tx.rs @@ -312,9 +312,9 @@ impl<'a> SignTxProgress<'a> { TxRequestType::TXOUTPUT => ack_output_request(&self.req, psbt, network), TxRequestType::TXMETA => ack_meta_request(&self.req, psbt), TxRequestType::TXEXTRADATA => unimplemented!(), //TODO(stevenroose) implement - TxRequestType::TXORIGINPUT - | TxRequestType::TXORIGOUTPUT - | TxRequestType::TXPAYMENTREQ => unimplemented!(), + TxRequestType::TXORIGINPUT | + TxRequestType::TXORIGOUTPUT | + TxRequestType::TXPAYMENTREQ => unimplemented!(), TxRequestType::TXFINISHED => unreachable!(), }?; self.ack_msg(ack) From 2a567f3a0cf02e528a615227e194ecc95b8236ea Mon Sep 17 00:00:00 2001 From: Andrew Kozlik <andrew.kozlik@gmail.com> Date: Thu, 22 Aug 2024 18:49:48 +0200 Subject: [PATCH 544/626] feat: Remove display_random feature. --- common/protob/messages-management.proto | 2 +- core/.changelog.d/4119.removed | 1 + .../generated/translated_string.rs | 4 +- core/mocks/trezortranslate_keys.pyi | 1 - .../apps/management/reset_device/__init__.py | 4 - .../apps/management/reset_device/layout.py | 13 -- core/src/trezor/messages.py | 2 - core/tools/translations/rules.json | 1 - core/translations/cs.json | 1 - core/translations/de.json | 1 - core/translations/en.json | 1 - core/translations/es.json | 1 - core/translations/fr.json | 1 - core/translations/signatures.json | 6 +- legacy/firmware/.changelog.d/4119.removed | 1 + legacy/firmware/fsm_msg_common.h | 3 +- legacy/firmware/reset.c | 47 +----- legacy/firmware/reset.h | 7 +- python/.changelog.d/4119.removed | 1 + python/src/trezorlib/cli/device.py | 3 - python/src/trezorlib/device.py | 7 +- python/src/trezorlib/messages.py | 3 - python/tools/mnemonic_check.py | 95 ----------- rust/trezor-client/src/client/mod.rs | 2 - .../protos/generated/messages_management.rs | 155 +++++++----------- .../test_reset_bip39_skipbackup.py | 17 -- .../reset_recovery/test_reset_bip39_t1.py | 31 +--- .../reset_recovery/test_reset_bip39_t2.py | 11 +- .../test_reset_recovery_bip39.py | 1 - .../test_reset_recovery_slip39_advanced.py | 1 - .../test_reset_recovery_slip39_basic.py | 1 - .../test_reset_slip39_advanced.py | 1 - .../reset_recovery/test_reset_slip39_basic.py | 1 - tests/device_tests/test_msg_backup_device.py | 17 -- tests/device_tests/test_protection_levels.py | 9 +- tests/input_flows.py | 4 - tests/ui_tests/fixtures.json | 47 ++---- tests/upgrade_tests/test_firmware_upgrades.py | 3 - 38 files changed, 117 insertions(+), 390 deletions(-) create mode 100644 core/.changelog.d/4119.removed create mode 100644 legacy/firmware/.changelog.d/4119.removed create mode 100644 python/.changelog.d/4119.removed delete mode 100755 python/tools/mnemonic_check.py diff --git a/common/protob/messages-management.proto b/common/protob/messages-management.proto index 8c119ae5f9..d743e91329 100644 --- a/common/protob/messages-management.proto +++ b/common/protob/messages-management.proto @@ -404,7 +404,7 @@ message LoadDevice { * @next Failure */ message ResetDevice { - optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy + reserved 1; // unused display_random optional uint32 strength = 2 [default=256]; // strength of seed in bits optional bool passphrase_protection = 3; // enable master node encryption using passphrase optional bool pin_protection = 4; // enable PIN protection diff --git a/core/.changelog.d/4119.removed b/core/.changelog.d/4119.removed new file mode 100644 index 0000000000..f8c8d2759f --- /dev/null +++ b/core/.changelog.d/4119.removed @@ -0,0 +1 @@ +Removed display_random feature. diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 96eb44aee5..6414a63558 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -361,7 +361,7 @@ pub enum TranslatedString { device_name__change_template = 226, // "Change device name to {0}?" device_name__title = 227, // "Device name" entropy__send = 228, // "Do you really want to send entropy?" - entropy__title = 229, // "Internal entropy" + entropy__title = 229, // "\"\"" entropy__title_confirm = 230, // "Confirm entropy" #[cfg(feature = "universal_fw")] eos__about_to_sign_template = 231, // "You are about to sign {0}." @@ -1713,7 +1713,7 @@ impl TranslatedString { Self::device_name__change_template => "Change device name to {0}?", Self::device_name__title => "Device name", Self::entropy__send => "Do you really want to send entropy?", - Self::entropy__title => "Internal entropy", + Self::entropy__title => "\"\"", Self::entropy__title_confirm => "Confirm entropy", #[cfg(feature = "universal_fw")] Self::eos__about_to_sign_template => "You are about to sign {0}.", diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 22c7efd30f..2fb40bdfff 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -253,7 +253,6 @@ class TR: device_name__change_template: str = "Change device name to {0}?" device_name__title: str = "Device name" entropy__send: str = "Do you really want to send entropy?" - entropy__title: str = "Internal entropy" entropy__title_confirm: str = "Confirm entropy" eos__about_to_sign_template: str = "You are about to sign {0}." eos__action_name: str = "Action Name:" diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index a2a036b186..57addb4d1b 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -73,8 +73,6 @@ async def reset_device(msg: ResetDevice) -> Success: int_entropy = random.bytes(32, True) if __debug__: storage.debug.reset_internal_entropy = int_entropy - if msg.display_random: - await layout.show_internal_entropy(int_entropy) # request external entropy and compute the master secret entropy_ack = await call(EntropyRequest(), EntropyAck) @@ -269,8 +267,6 @@ def _validate_reset_device(msg: ResetDevice) -> None: else: raise ProcessError("Backup type not implemented") - if msg.display_random and (msg.skip_backup or msg.no_backup): - raise ProcessError("Can't show internal entropy when backup is skipped") if storage_device.is_initialized(): raise UnexpectedMessage("Already initialized") diff --git a/core/src/apps/management/reset_device/layout.py b/core/src/apps/management/reset_device/layout.py index 8376d038e3..6606f562e9 100644 --- a/core/src/apps/management/reset_device/layout.py +++ b/core/src/apps/management/reset_device/layout.py @@ -1,8 +1,6 @@ from micropython import const from typing import Sequence -from trezor import TR -from trezor.enums import ButtonRequestType from trezor.ui.layouts.reset import ( # noqa: F401 show_share_words, slip39_advanced_prompt_group_threshold, @@ -15,17 +13,6 @@ _NUM_OF_CHOICES = const(3) -async def show_internal_entropy(entropy: bytes) -> None: - from trezor.ui.layouts import confirm_blob - - await confirm_blob( - "entropy", - TR.entropy__title, - entropy, - br_code=ButtonRequestType.ResetDevice, - ) - - async def _confirm_word( share_index: int | None, share_words: Sequence[str], diff --git a/core/src/trezor/messages.py b/core/src/trezor/messages.py index f86a88c90b..8524f83e46 100644 --- a/core/src/trezor/messages.py +++ b/core/src/trezor/messages.py @@ -2472,7 +2472,6 @@ def is_type_of(cls, msg: Any) -> TypeGuard["LoadDevice"]: return isinstance(msg, cls) class ResetDevice(protobuf.MessageType): - display_random: "bool | None" strength: "int" passphrase_protection: "bool | None" pin_protection: "bool | None" @@ -2485,7 +2484,6 @@ class ResetDevice(protobuf.MessageType): def __init__( self, *, - display_random: "bool | None" = None, strength: "int | None" = None, passphrase_protection: "bool | None" = None, pin_protection: "bool | None" = None, diff --git a/core/tools/translations/rules.json b/core/tools/translations/rules.json index 247ac4655b..873524446f 100644 --- a/core/tools/translations/rules.json +++ b/core/tools/translations/rules.json @@ -228,7 +228,6 @@ "device_name__change_template": "text,3", "device_name__title": "title,1", "entropy__send": "text,2", - "entropy__title": "title,1", "entropy__title_confirm": "title,1", "eos__about_to_sign_template": "text,2", "eos__action_name": "text,1", diff --git a/core/translations/cs.json b/core/translations/cs.json index 55e8f8c7da..cd55d69be5 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -285,7 +285,6 @@ "device_name__change_template": "Změnit název zařízení na {0}?", "device_name__title": "Název zařízení", "entropy__send": "Opravdu chcete odeslat entropii?", - "entropy__title": "Interní entropie", "entropy__title_confirm": "Potvrdit entropii", "eos__about_to_sign_template": "Chystáte se podepsat {0}.", "eos__action_name": "Název akce:", diff --git a/core/translations/de.json b/core/translations/de.json index f986e1f5ab..c7f969c4bd 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -285,7 +285,6 @@ "device_name__change_template": "Gerätename in {0} ändern?", "device_name__title": "Gerätename", "entropy__send": "Entropie wirklich senden?", - "entropy__title": "Interne entropie", "entropy__title_confirm": "Entropie bestätigen", "eos__about_to_sign_template": "Du bist dabei, {0} zu signieren.", "eos__action_name": "Aktionsname:", diff --git a/core/translations/en.json b/core/translations/en.json index 7c56be40b9..748e9028be 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -255,7 +255,6 @@ "device_name__change_template": "Change device name to {0}?", "device_name__title": "Device name", "entropy__send": "Do you really want to send entropy?", - "entropy__title": "Internal entropy", "entropy__title_confirm": "Confirm entropy", "eos__about_to_sign_template": "You are about to sign {0}.", "eos__action_name": "Action Name:", diff --git a/core/translations/es.json b/core/translations/es.json index 66d0ac5a1e..9d1ee3db39 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -285,7 +285,6 @@ "device_name__change_template": "¿Cambiar el nombre del dispositivo a {0}?", "device_name__title": "Nombre dispositivo", "entropy__send": "¿Quieres enviar la entropía?", - "entropy__title": "Entropía interna", "entropy__title_confirm": "Validar entropía", "eos__about_to_sign_template": "Estás a punto de firmar {0}.", "eos__action_name": "Nombre de acción:", diff --git a/core/translations/fr.json b/core/translations/fr.json index 72e9a493ba..b2626ed361 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -285,7 +285,6 @@ "device_name__change_template": "Modifier le nom du disp. pour {0} ?", "device_name__title": "Nom du disp.", "entropy__send": "Voulez-vous vraiment envoyer l'entropie ?", - "entropy__title": "Entropie interne", "entropy__title_confirm": "Conf. entropie", "eos__about_to_sign_template": "Vous êtes sur le point de signer {0}.", "eos__action_name": "Nom de l'action :", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 24e3ace6bb..a2d6ca3b00 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "96fd6399d7631ec16b02f8794aa75ddc5e42152ffcf5acf528206298e9998bb3", - "datetime": "2024-08-26T11:18:49.662110", - "commit": "26436ef6aa930f019e85acf0d0b48e22838b91b3" + "merkle_root": "6803ea2d1eb1555ae32a5b32689cdf40d7626a8b3717f6ae9418e0948f9da746", + "datetime": "2024-08-27T15:18:26.530958", + "commit": "6ebe850fe24f5ec894328d82eec97aacccb3d3f5" }, "history": [ { diff --git a/legacy/firmware/.changelog.d/4119.removed b/legacy/firmware/.changelog.d/4119.removed new file mode 100644 index 0000000000..f8c8d2759f --- /dev/null +++ b/legacy/firmware/.changelog.d/4119.removed @@ -0,0 +1 @@ +Removed display_random feature. diff --git a/legacy/firmware/fsm_msg_common.h b/legacy/firmware/fsm_msg_common.h index 43dc33f49a..ab6beb5820 100644 --- a/legacy/firmware/fsm_msg_common.h +++ b/legacy/firmware/fsm_msg_common.h @@ -321,8 +321,7 @@ void fsm_msgResetDevice(const ResetDevice *msg) { msg->strength == 192 || msg->strength == 256, _("Invalid seed strength")); - reset_init(msg->has_display_random && msg->display_random, - msg->has_strength ? msg->strength : 128, + reset_init(msg->has_strength ? msg->strength : 128, msg->has_passphrase_protection && msg->passphrase_protection, msg->has_pin_protection && msg->pin_protection, msg->has_language ? msg->language : 0, diff --git a/legacy/firmware/reset.c b/legacy/firmware/reset.c index a9031ade34..cefffb075c 100644 --- a/legacy/firmware/reset.c +++ b/legacy/firmware/reset.c @@ -38,23 +38,15 @@ static bool awaiting_entropy = false; static bool skip_backup = false; static bool no_backup = false; -void reset_init(bool display_random, uint32_t _strength, - bool passphrase_protection, bool pin_protection, - const char *language, const char *label, uint32_t u2f_counter, - bool _skip_backup, bool _no_backup) { +void reset_init(uint32_t _strength, bool passphrase_protection, + bool pin_protection, const char *language, const char *label, + uint32_t u2f_counter, bool _skip_backup, bool _no_backup) { if (_strength != 128 && _strength != 192 && _strength != 256) return; strength = _strength; skip_backup = _skip_backup; no_backup = _no_backup; - if (display_random && (skip_backup || no_backup)) { - fsm_sendFailure(FailureType_Failure_ProcessError, - "Can't show internal entropy when backup is skipped"); - layoutHome(); - return; - } - layoutDialogSwipe(&bmp_icon_question, _("Cancel"), _("Confirm"), NULL, _("Do you really want to"), _("create a new wallet?"), NULL, _("By continuing you"), _("agree to trezor.io/tos"), NULL); @@ -66,39 +58,6 @@ void reset_init(bool display_random, uint32_t _strength, random_buffer(int_entropy, 32); - if (display_random) { - for (int start = 0; start < 2; start++) { - char ent_str[4][17] = {0}; - char desc[] = "Internal entropy _/2:"; - data2hex(int_entropy + start * 16, 4, ent_str[0]); - data2hex(int_entropy + start * 16 + 4, 4, ent_str[1]); - data2hex(int_entropy + start * 16 + 8, 4, ent_str[2]); - data2hex(int_entropy + start * 16 + 12, 4, ent_str[3]); - layoutLast = layoutDialogSwipe; - layoutSwipe(); - desc[17] = '1' + start; - oledDrawStringCenter(OLED_WIDTH / 2, 0, desc, FONT_STANDARD); - oledDrawStringCenter(OLED_WIDTH / 2, 2 + 1 * 9, ent_str[0], FONT_FIXED); - oledDrawStringCenter(OLED_WIDTH / 2, 2 + 2 * 9, ent_str[1], FONT_FIXED); - oledDrawStringCenter(OLED_WIDTH / 2, 2 + 3 * 9, ent_str[2], FONT_FIXED); - oledDrawStringCenter(OLED_WIDTH / 2, 2 + 4 * 9, ent_str[3], FONT_FIXED); - oledHLine(OLED_HEIGHT - 13); - layoutButtonNo(_("Cancel"), &bmp_btn_cancel); - layoutButtonYes(_("Continue"), &bmp_btn_confirm); - // 40 is the maximum pixels used for a row - oledSCA(2 + 1 * 9, 2 + 1 * 9 + 6, 40); - oledSCA(2 + 2 * 9, 2 + 2 * 9 + 6, 40); - oledSCA(2 + 3 * 9, 2 + 3 * 9 + 6, 40); - oledSCA(2 + 4 * 9, 2 + 4 * 9 + 6, 40); - oledRefresh(); - if (!protectButton(ButtonRequestType_ButtonRequest_ResetDevice, false)) { - fsm_sendFailure(FailureType_Failure_ActionCancelled, NULL); - layoutHome(); - return; - } - } - } - if (pin_protection && !protectChangePin(false)) { layoutHome(); return; diff --git a/legacy/firmware/reset.h b/legacy/firmware/reset.h index ea34970e45..cebf33cc23 100644 --- a/legacy/firmware/reset.h +++ b/legacy/firmware/reset.h @@ -23,10 +23,9 @@ #include <stdbool.h> #include <stdint.h> -void reset_init(bool display_random, uint32_t _strength, - bool passphrase_protection, bool pin_protection, - const char *language, const char *label, uint32_t u2f_counter, - bool _skip_backup, bool _no_backup); +void reset_init(uint32_t _strength, bool passphrase_protection, + bool pin_protection, const char *language, const char *label, + uint32_t u2f_counter, bool _skip_backup, bool _no_backup); void reset_entropy(const uint8_t *ext_entropy, uint32_t len); void reset_backup(bool separated, const char *mnemonic); uint32_t reset_get_int_entropy(uint8_t *entropy); diff --git a/python/.changelog.d/4119.removed b/python/.changelog.d/4119.removed new file mode 100644 index 0000000000..f8c8d2759f --- /dev/null +++ b/python/.changelog.d/4119.removed @@ -0,0 +1 @@ +Removed display_random feature. diff --git a/python/src/trezorlib/cli/device.py b/python/src/trezorlib/cli/device.py index 2e42e9b7b3..6f2bd14883 100644 --- a/python/src/trezorlib/cli/device.py +++ b/python/src/trezorlib/cli/device.py @@ -206,7 +206,6 @@ def recover( @cli.command() -@click.option("-e", "--show-entropy", is_flag=True) @click.option("-t", "--strength", type=click.Choice(["128", "192", "256"])) @click.option("-r", "--passphrase-protection", is_flag=True) @click.option("-p", "--pin-protection", is_flag=True) @@ -218,7 +217,6 @@ def recover( @with_client def setup( client: "TrezorClient", - show_entropy: bool, strength: int | None, passphrase_protection: bool, pin_protection: bool, @@ -257,7 +255,6 @@ def setup( return device.reset( client, - display_random=show_entropy, strength=strength, passphrase_protection=passphrase_protection, pin_protection=pin_protection, diff --git a/python/src/trezorlib/device.py b/python/src/trezorlib/device.py index 97b42297c3..95b5db2654 100644 --- a/python/src/trezorlib/device.py +++ b/python/src/trezorlib/device.py @@ -244,6 +244,12 @@ def reset( no_backup: bool = False, backup_type: messages.BackupType = messages.BackupType.Bip39, ) -> "MessageType": + if display_random: + warnings.warn( + "display_random ignored. The feature is deprecated.", + DeprecationWarning, + ) + if language is not None: warnings.warn( "language ignored. Use change_language() to set device language.", @@ -263,7 +269,6 @@ def reset( # Begin with device reset workflow msg = messages.ResetDevice( - display_random=bool(display_random), strength=strength, passphrase_protection=bool(passphrase_protection), pin_protection=bool(pin_protection), diff --git a/python/src/trezorlib/messages.py b/python/src/trezorlib/messages.py index 230fc4c5bc..062bf94bfa 100644 --- a/python/src/trezorlib/messages.py +++ b/python/src/trezorlib/messages.py @@ -3652,7 +3652,6 @@ def __init__( class ResetDevice(protobuf.MessageType): MESSAGE_WIRE_TYPE = 14 FIELDS = { - 1: protobuf.Field("display_random", "bool", repeated=False, required=False, default=None), 2: protobuf.Field("strength", "uint32", repeated=False, required=False, default=256), 3: protobuf.Field("passphrase_protection", "bool", repeated=False, required=False, default=None), 4: protobuf.Field("pin_protection", "bool", repeated=False, required=False, default=None), @@ -3667,7 +3666,6 @@ class ResetDevice(protobuf.MessageType): def __init__( self, *, - display_random: Optional["bool"] = None, strength: Optional["int"] = 256, passphrase_protection: Optional["bool"] = None, pin_protection: Optional["bool"] = None, @@ -3678,7 +3676,6 @@ def __init__( no_backup: Optional["bool"] = None, backup_type: Optional["BackupType"] = BackupType.Bip39, ) -> None: - self.display_random = display_random self.strength = strength self.passphrase_protection = passphrase_protection self.pin_protection = pin_protection diff --git a/python/tools/mnemonic_check.py b/python/tools/mnemonic_check.py deleted file mode 100755 index 3a4f6416a3..0000000000 --- a/python/tools/mnemonic_check.py +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python3 - -# This file is part of the Trezor project. -# -# Copyright (C) 2012-2022 SatoshiLabs and contributors -# -# This library is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# as published by the Free Software Foundation. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License for more details. -# -# You should have received a copy of the License along with this library. -# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. - -import hashlib - -import mnemonic - -__doc__ = """ - Use this script to cross-check that Trezor generated valid - mnemonic sentence for given internal (Trezor-generated) - and external (computer-generated) entropy. - - Keep in mind that you're entering secret information to this script. - Leaking of these information may lead to stealing your bitcoins - from your wallet! We strongly recommend to run this script only on - highly secured computer (ideally live linux distribution - without an internet connection). -""" - - -def generate_entropy( - strength: int, internal_entropy: bytes, external_entropy: bytes -) -> bytes: - """ - strength - length of produced seed. One of 128, 192, 256 - random - binary stream of random data from external HRNG - """ - if strength not in (128, 192, 256): - raise ValueError("Invalid strength") - - if not internal_entropy: - raise ValueError("Internal entropy is not provided") - - if len(internal_entropy) < 32: - raise ValueError("Internal entropy too short") - - if not external_entropy: - raise ValueError("External entropy is not provided") - - if len(external_entropy) < 32: - raise ValueError("External entropy too short") - - entropy = hashlib.sha256(internal_entropy + external_entropy).digest() - entropy_stripped = entropy[: strength // 8] - - if len(entropy_stripped) * 8 != strength: - raise ValueError("Entropy length mismatch") - - return entropy_stripped - - -def main() -> None: - print(__doc__) - - comp = bytes.fromhex( - input("Please enter computer-generated entropy (in hex): ").strip() - ) - trzr = bytes.fromhex( - input("Please enter Trezor-generated entropy (in hex): ").strip() - ) - word_count = int(input("How many words your mnemonic has? ")) - - strength = word_count * 32 // 3 - - entropy = generate_entropy(strength, trzr, comp) - - words = mnemonic.Mnemonic("english").to_mnemonic(entropy) - if not mnemonic.Mnemonic("english").check(words): - print("Mnemonic is invalid") - return - - if len(words.split(" ")) != word_count: - print("Mnemonic length mismatch!") - return - - print("Generated mnemonic is:", words) - - -if __name__ == "__main__": - main() diff --git a/rust/trezor-client/src/client/mod.rs b/rust/trezor-client/src/client/mod.rs index 502b2687d5..338b3671a3 100644 --- a/rust/trezor-client/src/client/mod.rs +++ b/rust/trezor-client/src/client/mod.rs @@ -183,7 +183,6 @@ impl Trezor { #[allow(clippy::too_many_arguments)] pub fn reset_device( &mut self, - display_random: bool, strength: usize, passphrase_protection: bool, pin_protection: bool, @@ -192,7 +191,6 @@ impl Trezor { no_backup: bool, ) -> Result<TrezorResponse<'_, EntropyRequest<'_>, protos::EntropyRequest>> { let mut req = protos::ResetDevice::new(); - req.set_display_random(display_random); req.set_strength(strength as u32); req.set_passphrase_protection(passphrase_protection); req.set_pin_protection(pin_protection); diff --git a/rust/trezor-client/src/protos/generated/messages_management.rs b/rust/trezor-client/src/protos/generated/messages_management.rs index 283e93c601..fd3438c9fd 100644 --- a/rust/trezor-client/src/protos/generated/messages_management.rs +++ b/rust/trezor-client/src/protos/generated/messages_management.rs @@ -6842,8 +6842,6 @@ impl ::protobuf::reflect::ProtobufValue for LoadDevice { #[derive(PartialEq,Clone,Default,Debug)] pub struct ResetDevice { // message fields - // @@protoc_insertion_point(field:hw.trezor.messages.management.ResetDevice.display_random) - pub display_random: ::std::option::Option<bool>, // @@protoc_insertion_point(field:hw.trezor.messages.management.ResetDevice.strength) pub strength: ::std::option::Option<u32>, // @@protoc_insertion_point(field:hw.trezor.messages.management.ResetDevice.passphrase_protection) @@ -6878,25 +6876,6 @@ impl ResetDevice { ::std::default::Default::default() } - // optional bool display_random = 1; - - pub fn display_random(&self) -> bool { - self.display_random.unwrap_or(false) - } - - pub fn clear_display_random(&mut self) { - self.display_random = ::std::option::Option::None; - } - - pub fn has_display_random(&self) -> bool { - self.display_random.is_some() - } - - // Param is passed by value, moved - pub fn set_display_random(&mut self, v: bool) { - self.display_random = ::std::option::Option::Some(v); - } - // optional uint32 strength = 2; pub fn strength(&self) -> u32 { @@ -7106,13 +7085,8 @@ impl ResetDevice { } fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(10); + let mut fields = ::std::vec::Vec::with_capacity(9); let mut oneofs = ::std::vec::Vec::with_capacity(0); - fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( - "display_random", - |m: &ResetDevice| { &m.display_random }, - |m: &mut ResetDevice| { &mut m.display_random }, - )); fields.push(::protobuf::reflect::rt::v2::make_option_accessor::<_, _>( "strength", |m: &ResetDevice| { &m.strength }, @@ -7176,9 +7150,6 @@ impl ::protobuf::Message for ResetDevice { fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::Result<()> { while let Some(tag) = is.read_raw_tag_or_eof()? { match tag { - 8 => { - self.display_random = ::std::option::Option::Some(is.read_bool()?); - }, 16 => { self.strength = ::std::option::Option::Some(is.read_uint32()?); }, @@ -7218,9 +7189,6 @@ impl ::protobuf::Message for ResetDevice { #[allow(unused_variables)] fn compute_size(&self) -> u64 { let mut my_size = 0; - if let Some(v) = self.display_random { - my_size += 1 + 1; - } if let Some(v) = self.strength { my_size += ::protobuf::rt::uint32_size(2, v); } @@ -7254,9 +7222,6 @@ impl ::protobuf::Message for ResetDevice { } fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::Result<()> { - if let Some(v) = self.display_random { - os.write_bool(1, v)?; - } if let Some(v) = self.strength { os.write_uint32(2, v)?; } @@ -7301,7 +7266,6 @@ impl ::protobuf::Message for ResetDevice { } fn clear(&mut self) { - self.display_random = ::std::option::Option::None; self.strength = ::std::option::Option::None; self.passphrase_protection = ::std::option::Option::None; self.pin_protection = ::std::option::Option::None; @@ -7316,7 +7280,6 @@ impl ::protobuf::Message for ResetDevice { fn default_instance() -> &'static ResetDevice { static instance: ResetDevice = ResetDevice { - display_random: ::std::option::Option::None, strength: ::std::option::Option::None, passphrase_protection: ::std::option::Option::None, pin_protection: ::std::option::Option::None, @@ -11238,64 +11201,64 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ecksum\x18\x07\x20\x01(\x08R\x0cskipChecksum\x12\x1f\n\x0bu2f_counter\ \x18\x08\x20\x01(\rR\nu2fCounter\x12!\n\x0cneeds_backup\x18\t\x20\x01(\ \x08R\x0bneedsBackup\x12\x1b\n\tno_backup\x18\n\x20\x01(\x08R\x08noBacku\ - p\"\x99\x03\n\x0bResetDevice\x12%\n\x0edisplay_random\x18\x01\x20\x01(\ - \x08R\rdisplayRandom\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\x03256R\ - \x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\x08R\x14pa\ - ssphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\x08R\rpinPr\ - otection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08languageB\x02\x18\ - \x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\n\x0bu2f_co\ - unter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_backup\x18\x08\ - \x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\x08R\x08n\ - oBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.messages.ma\ - nagement.BackupType:\x05Bip39R\nbackupType\"\xe5\x01\n\x0cBackupDevice\ - \x12'\n\x0fgroup_threshold\x18\x01\x20\x01(\rR\x0egroupThreshold\x12O\n\ - \x06groups\x18\x02\x20\x03(\x0b27.hw.trezor.messages.management.BackupDe\ - vice.Slip39GroupR\x06groups\x1a[\n\x0bSlip39Group\x12)\n\x10member_thres\ - hold\x18\x01\x20\x02(\rR\x0fmemberThreshold\x12!\n\x0cmember_count\x18\ - \x02\x20\x02(\rR\x0bmemberCount\"\x10\n\x0eEntropyRequest\"&\n\nEntropyA\ - ck\x12\x18\n\x07entropy\x18\x01\x20\x02(\x0cR\x07entropy\"\x8d\x04\n\x0e\ - RecoveryDevice\x12\x1d\n\nword_count\x18\x01\x20\x01(\rR\twordCount\x123\ - \n\x15passphrase_protection\x18\x02\x20\x01(\x08R\x14passphraseProtectio\ - n\x12%\n\x0epin_protection\x18\x03\x20\x01(\x08R\rpinProtection\x12\x1e\ - \n\x08language\x18\x04\x20\x01(\tR\x08languageB\x02\x18\x01\x12\x14\n\ - \x05label\x18\x05\x20\x01(\tR\x05label\x12)\n\x10enforce_wordlist\x18\ - \x06\x20\x01(\x08R\x0fenforceWordlist\x12j\n\x0cinput_method\x18\x08\x20\ - \x01(\x0e2G.hw.trezor.messages.management.RecoveryDevice.RecoveryDeviceI\ - nputMethodR\x0binputMethod\x12\x1f\n\x0bu2f_counter\x18\t\x20\x01(\rR\nu\ - 2fCounter\x12O\n\x04type\x18\n\x20\x01(\x0e2+.hw.trezor.messages.managem\ - ent.RecoveryType:\x0eNormalRecoveryR\x04type\";\n\x19RecoveryDeviceInput\ - Method\x12\x12\n\x0eScrambledWords\x10\0\x12\n\n\x06Matrix\x10\x01J\x04\ - \x08\x07\x10\x08\"\xc5\x01\n\x0bWordRequest\x12N\n\x04type\x18\x01\x20\ - \x02(\x0e2:.hw.trezor.messages.management.WordRequest.WordRequestTypeR\ - \x04type\"f\n\x0fWordRequestType\x12\x19\n\x15WordRequestType_Plain\x10\ - \0\x12\x1b\n\x17WordRequestType_Matrix9\x10\x01\x12\x1b\n\x17WordRequest\ - Type_Matrix6\x10\x02\"\x1d\n\x07WordAck\x12\x12\n\x04word\x18\x01\x20\ - \x02(\tR\x04word\"0\n\rSetU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\ - \x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNextU2FCounter\"1\n\x0eNextU2FCou\ - nter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x11\n\ - \x0fDoPreauthorized\"\x16\n\x14PreauthorizedRequest\"\x15\n\x13CancelAut\ - horization\"\x9a\x02\n\x12RebootToBootloader\x12o\n\x0cboot_command\x18\ - \x01\x20\x01(\x0e2=.hw.trezor.messages.management.RebootToBootloader.Boo\ - tCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\n\x0ffirmware_header\x18\ - \x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14language_data_length\x18\ - \x03\x20\x01(\r:\x010R\x12languageDataLength\"5\n\x0bBootCommand\x12\x11\ - \n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UPGRADE\x10\x01\"\x10\n\x08\ - GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\x14\n\x05nonce\x18\x01\ - \x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\nUnlockPath\x12\x1b\n\ - \taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\x10\n\x03mac\x18\x02\x20\ - \x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\x12\x10\n\x03mac\x18\x01\ - \x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTutorial\"\x12\n\x10UnlockBoo\ - tloader\"%\n\rSetBrightness\x12\x14\n\x05value\x18\x01\x20\x01(\rR\x05va\ - lue*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\x10\0\x12\x10\n\x0cSlip39_Ba\ - sic\x10\x01\x12\x13\n\x0fSlip39_Advanced\x10\x02\x12\x1c\n\x18Slip39_Sin\ - gle_Extendable\x10\x03\x12\x1b\n\x17Slip39_Basic_Extendable\x10\x04\x12\ - \x1e\n\x1aSlip39_Advanced_Extendable\x10\x05*G\n\x10SafetyCheckLevel\x12\ - \n\n\x06Strict\x10\0\x12\x10\n\x0cPromptAlways\x10\x01\x12\x15\n\x11Prom\ - ptTemporarily\x10\x02*0\n\x10HomescreenFormat\x12\x08\n\x04Toif\x10\x01\ - \x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04ToiG\x10\x03*H\n\x0cRecoveryType\ - \x12\x12\n\x0eNormalRecovery\x10\0\x12\n\n\x06DryRun\x10\x01\x12\x18\n\ - \x14UnlockRepeatedBackup\x10\x02BB\n#com.satoshilabs.trezor.lib.protobuf\ - B\x17TrezorMessageManagement\x80\xa6\x1d\x01\ + p\"\xf8\x02\n\x0bResetDevice\x12\x1f\n\x08strength\x18\x02\x20\x01(\r:\ + \x03256R\x08strength\x123\n\x15passphrase_protection\x18\x03\x20\x01(\ + \x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x04\x20\x01(\ + \x08R\rpinProtection\x12\x1e\n\x08language\x18\x05\x20\x01(\tR\x08langua\ + geB\x02\x18\x01\x12\x14\n\x05label\x18\x06\x20\x01(\tR\x05label\x12\x1f\ + \n\x0bu2f_counter\x18\x07\x20\x01(\rR\nu2fCounter\x12\x1f\n\x0bskip_back\ + up\x18\x08\x20\x01(\x08R\nskipBackup\x12\x1b\n\tno_backup\x18\t\x20\x01(\ + \x08R\x08noBackup\x12Q\n\x0bbackup_type\x18\n\x20\x01(\x0e2).hw.trezor.m\ + essages.management.BackupType:\x05Bip39R\nbackupTypeJ\x04\x08\x01\x10\ + \x02\"\xe5\x01\n\x0cBackupDevice\x12'\n\x0fgroup_threshold\x18\x01\x20\ + \x01(\rR\x0egroupThreshold\x12O\n\x06groups\x18\x02\x20\x03(\x0b27.hw.tr\ + ezor.messages.management.BackupDevice.Slip39GroupR\x06groups\x1a[\n\x0bS\ + lip39Group\x12)\n\x10member_threshold\x18\x01\x20\x02(\rR\x0fmemberThres\ + hold\x12!\n\x0cmember_count\x18\x02\x20\x02(\rR\x0bmemberCount\"\x10\n\ + \x0eEntropyRequest\"&\n\nEntropyAck\x12\x18\n\x07entropy\x18\x01\x20\x02\ + (\x0cR\x07entropy\"\x8d\x04\n\x0eRecoveryDevice\x12\x1d\n\nword_count\ + \x18\x01\x20\x01(\rR\twordCount\x123\n\x15passphrase_protection\x18\x02\ + \x20\x01(\x08R\x14passphraseProtection\x12%\n\x0epin_protection\x18\x03\ + \x20\x01(\x08R\rpinProtection\x12\x1e\n\x08language\x18\x04\x20\x01(\tR\ + \x08languageB\x02\x18\x01\x12\x14\n\x05label\x18\x05\x20\x01(\tR\x05labe\ + l\x12)\n\x10enforce_wordlist\x18\x06\x20\x01(\x08R\x0fenforceWordlist\ + \x12j\n\x0cinput_method\x18\x08\x20\x01(\x0e2G.hw.trezor.messages.manage\ + ment.RecoveryDevice.RecoveryDeviceInputMethodR\x0binputMethod\x12\x1f\n\ + \x0bu2f_counter\x18\t\x20\x01(\rR\nu2fCounter\x12O\n\x04type\x18\n\x20\ + \x01(\x0e2+.hw.trezor.messages.management.RecoveryType:\x0eNormalRecover\ + yR\x04type\";\n\x19RecoveryDeviceInputMethod\x12\x12\n\x0eScrambledWords\ + \x10\0\x12\n\n\x06Matrix\x10\x01J\x04\x08\x07\x10\x08\"\xc5\x01\n\x0bWor\ + dRequest\x12N\n\x04type\x18\x01\x20\x02(\x0e2:.hw.trezor.messages.manage\ + ment.WordRequest.WordRequestTypeR\x04type\"f\n\x0fWordRequestType\x12\ + \x19\n\x15WordRequestType_Plain\x10\0\x12\x1b\n\x17WordRequestType_Matri\ + x9\x10\x01\x12\x1b\n\x17WordRequestType_Matrix6\x10\x02\"\x1d\n\x07WordA\ + ck\x12\x12\n\x04word\x18\x01\x20\x02(\tR\x04word\"0\n\rSetU2FCounter\x12\ + \x1f\n\x0bu2f_counter\x18\x01\x20\x02(\rR\nu2fCounter\"\x13\n\x11GetNext\ + U2FCounter\"1\n\x0eNextU2FCounter\x12\x1f\n\x0bu2f_counter\x18\x01\x20\ + \x02(\rR\nu2fCounter\"\x11\n\x0fDoPreauthorized\"\x16\n\x14Preauthorized\ + Request\"\x15\n\x13CancelAuthorization\"\x9a\x02\n\x12RebootToBootloader\ + \x12o\n\x0cboot_command\x18\x01\x20\x01(\x0e2=.hw.trezor.messages.manage\ + ment.RebootToBootloader.BootCommand:\rSTOP_AND_WAITR\x0bbootCommand\x12'\ + \n\x0ffirmware_header\x18\x02\x20\x01(\x0cR\x0efirmwareHeader\x123\n\x14\ + language_data_length\x18\x03\x20\x01(\r:\x010R\x12languageDataLength\"5\ + \n\x0bBootCommand\x12\x11\n\rSTOP_AND_WAIT\x10\0\x12\x13\n\x0fINSTALL_UP\ + GRADE\x10\x01\"\x10\n\x08GetNonce:\x04\x88\xb2\x19\x01\"#\n\x05Nonce\x12\ + \x14\n\x05nonce\x18\x01\x20\x02(\x0cR\x05nonce:\x04\x88\xb2\x19\x01\";\n\ + \nUnlockPath\x12\x1b\n\taddress_n\x18\x01\x20\x03(\rR\x08addressN\x12\ + \x10\n\x03mac\x18\x02\x20\x01(\x0cR\x03mac\"'\n\x13UnlockedPathRequest\ + \x12\x10\n\x03mac\x18\x01\x20\x01(\x0cR\x03mac\"\x14\n\x12ShowDeviceTuto\ + rial\"\x12\n\x10UnlockBootloader\"%\n\rSetBrightness\x12\x14\n\x05value\ + \x18\x01\x20\x01(\rR\x05value*\x99\x01\n\nBackupType\x12\t\n\x05Bip39\ + \x10\0\x12\x10\n\x0cSlip39_Basic\x10\x01\x12\x13\n\x0fSlip39_Advanced\ + \x10\x02\x12\x1c\n\x18Slip39_Single_Extendable\x10\x03\x12\x1b\n\x17Slip\ + 39_Basic_Extendable\x10\x04\x12\x1e\n\x1aSlip39_Advanced_Extendable\x10\ + \x05*G\n\x10SafetyCheckLevel\x12\n\n\x06Strict\x10\0\x12\x10\n\x0cPrompt\ + Always\x10\x01\x12\x15\n\x11PromptTemporarily\x10\x02*0\n\x10HomescreenF\ + ormat\x12\x08\n\x04Toif\x10\x01\x12\x08\n\x04Jpeg\x10\x02\x12\x08\n\x04T\ + oiG\x10\x03*H\n\x0cRecoveryType\x12\x12\n\x0eNormalRecovery\x10\0\x12\n\ + \n\x06DryRun\x10\x01\x12\x18\n\x14UnlockRepeatedBackup\x10\x02BB\n#com.s\ + atoshilabs.trezor.lib.protobufB\x17TrezorMessageManagement\x80\xa6\x1d\ + \x01\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py b/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py index f5d16a20a7..611fdc2999 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py @@ -31,7 +31,6 @@ def test_reset_device_skip_backup(client: Client): ret = client.call_raw( messages.ResetDevice( - display_random=False, strength=STRENGTH, passphrase_protection=False, pin_protection=False, @@ -99,7 +98,6 @@ def test_reset_device_skip_backup(client: Client): def test_reset_device_skip_backup_break(client: Client): ret = client.call_raw( messages.ResetDevice( - display_random=False, strength=STRENGTH, passphrase_protection=False, pin_protection=False, @@ -151,18 +149,3 @@ def test_reset_device_skip_backup_break(client: Client): def test_initialized_device_backup_fail(client: Client): ret = client.call_raw(messages.BackupDevice()) assert isinstance(ret, messages.Failure) - - -@pytest.mark.setup_client(uninitialized=True) -def test_reset_device_skip_backup_show_entropy_fail(client: Client): - ret = client.call_raw( - messages.ResetDevice( - display_random=True, - strength=STRENGTH, - passphrase_protection=False, - pin_protection=False, - label="test", - skip_backup=True, - ) - ) - assert isinstance(ret, messages.Failure) diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t1.py b/tests/device_tests/reset_recovery/test_reset_bip39_t1.py index 1ad8725e7b..7ccb50c2c5 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t1.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t1.py @@ -30,7 +30,6 @@ def reset_device(client: Client, strength: int): # No PIN, no passphrase ret = client.call_raw( messages.ResetDevice( - display_random=False, strength=strength, passphrase_protection=False, pin_protection=False, @@ -105,7 +104,6 @@ def test_reset_device_256_pin(client: Client): ret = client.call_raw( messages.ResetDevice( - display_random=True, strength=strength, passphrase_protection=True, pin_protection=True, @@ -118,16 +116,6 @@ def test_reset_device_256_pin(client: Client): client.debug.press_yes() ret = client.call_raw(messages.ButtonAck()) - # Entropy screen #1 - assert isinstance(ret, messages.ButtonRequest) - client.debug.press_yes() - ret = client.call_raw(messages.ButtonAck()) - - # Entropy screen #2 - assert isinstance(ret, messages.ButtonRequest) - client.debug.press_yes() - ret = client.call_raw(messages.ButtonAck()) - assert isinstance(ret, messages.PinMatrixRequest) # Enter PIN for first time @@ -193,7 +181,6 @@ def test_failed_pin(client: Client): ret = client.call_raw( messages.ResetDevice( - display_random=True, strength=strength, passphrase_protection=True, pin_protection=True, @@ -206,16 +193,6 @@ def test_failed_pin(client: Client): client.debug.press_yes() ret = client.call_raw(messages.ButtonAck()) - # Entropy screen #1 - assert isinstance(ret, messages.ButtonRequest) - client.debug.press_yes() - ret = client.call_raw(messages.ButtonAck()) - - # Entropy screen #2 - assert isinstance(ret, messages.ButtonRequest) - client.debug.press_yes() - ret = client.call_raw(messages.ButtonAck()) - assert isinstance(ret, messages.PinMatrixRequest) # Enter PIN for first time @@ -232,4 +209,10 @@ def test_failed_pin(client: Client): def test_already_initialized(client: Client): with pytest.raises(Exception): - device.reset(client, False, 128, True, True, "label") + device.reset( + client, + strength=128, + passphrase_protection=True, + pin_protection=True, + label="label", + ) diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py index c05a972d58..d1ffb1416f 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py @@ -39,7 +39,6 @@ def reset_device(client: Client, strength: int): # No PIN, no passphrase, don't display random device.reset( client, - display_random=False, strength=strength, passphrase_protection=False, pin_protection=False, @@ -88,7 +87,6 @@ def test_reset_device_pin(client: Client): # PIN, passphrase, display random device.reset( client, - display_random=True, strength=strength, passphrase_protection=True, pin_protection=True, @@ -122,7 +120,6 @@ def test_reset_failed_check(client: Client): # PIN, passphrase, display random device.reset( client, - display_random=False, strength=strength, passphrase_protection=False, pin_protection=False, @@ -185,4 +182,10 @@ def test_failed_pin(client: Client): @pytest.mark.setup_client(mnemonic=MNEMONIC12) def test_already_initialized(client: Client): with pytest.raises(Exception): - device.reset(client, False, 128, True, True, "label") + device.reset( + client, + strength=128, + passphrase_protection=True, + pin_protection=True, + label="label", + ) diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py index 2bea52908a..785525a2fe 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py @@ -45,7 +45,6 @@ def reset(client: Client, strength: int = 128, skip_backup: bool = False) -> str # No PIN, no passphrase, don't display random device.reset( client, - display_random=False, strength=strength, passphrase_protection=False, pin_protection=False, diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py index 8fd3b426b1..b7585df914 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py @@ -65,7 +65,6 @@ def reset(client: Client, strength: int = 128) -> list[str]: # No PIN, no passphrase, don't display random device.reset( client, - display_random=False, strength=strength, passphrase_protection=False, pin_protection=False, diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py index da3a1b0499..b3f8004f2d 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py @@ -55,7 +55,6 @@ def reset(client: Client, strength: int = 128) -> list[str]: # No PIN, no passphrase, don't display random device.reset( client, - display_random=False, strength=strength, passphrase_protection=False, pin_protection=False, diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py index 5940c9a4e5..141b4cb612 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py @@ -41,7 +41,6 @@ def test_reset_device_slip39_advanced(client: Client): # No PIN, no passphrase, don't display random device.reset( client, - display_random=False, strength=strength, passphrase_protection=False, pin_protection=False, diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py index ae64392333..6e6378e846 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py @@ -40,7 +40,6 @@ def reset_device(client: Client, strength: int): # No PIN, no passphrase, don't display random device.reset( client, - display_random=False, strength=strength, passphrase_protection=False, pin_protection=False, diff --git a/tests/device_tests/test_msg_backup_device.py b/tests/device_tests/test_msg_backup_device.py index aa233e8013..2a79338772 100644 --- a/tests/device_tests/test_msg_backup_device.py +++ b/tests/device_tests/test_msg_backup_device.py @@ -193,20 +193,3 @@ def test_interrupt_backup_fails(client: Client): # Second attempt at backup should fail with pytest.raises(TrezorFailure, match=r".*Seed already backed up"): device.backup(client) - - -# we only test this with bip39 because the code path is always the same -@pytest.mark.setup_client(uninitialized=True) -def test_no_backup_show_entropy_fails(client: Client): - with pytest.raises( - TrezorFailure, match=r".*Can't show internal entropy when backup is skipped" - ): - device.reset( - client, - display_random=True, - strength=128, - passphrase_protection=False, - pin_protection=False, - label="test", - no_backup=True, - ) diff --git a/tests/device_tests/test_protection_levels.py b/tests/device_tests/test_protection_levels.py index 85b7628606..75b5b811b6 100644 --- a/tests/device_tests/test_protection_levels.py +++ b/tests/device_tests/test_protection_levels.py @@ -224,14 +224,19 @@ def test_reset_device(client: Client): + [messages.ButtonRequest] * 24 + [messages.Success, messages.Features] ) - device.reset(client, False, 128, True, False, "label") + device.reset( + client, + strength=128, + passphrase_protection=True, + pin_protection=False, + label="label", + ) with pytest.raises(TrezorFailure): # This must fail, because device is already initialized # Using direct call because `device.reset` has its own check client.call( messages.ResetDevice( - display_random=False, strength=128, passphrase_protection=True, pin_protection=False, diff --git a/tests/input_flows.py b/tests/input_flows.py index 03353899ce..d593e49a87 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -1333,10 +1333,6 @@ def input_flow_common(self) -> BRGeneratorType: yield from self.PIN.setup_new_pin("654") - br = yield # Confirm entropy - assert br.code == B.ResetDevice - self.debug.press_yes() - if self.debug.model is models.T3T1: br = yield # Wallet created assert br.code == B.ResetDevice diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index f24419fa2d..801ed85dca 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -569,7 +569,6 @@ "T1B1_en_reset_recovery-test_reset_bip39_skipbackup.py::test_initialized_device_backup_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup_break": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_reset_recovery-test_reset_bip39_skipbackup.py::test_reset_device_skip_backup_show_entropy_fail": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_already_initialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_failed_pin": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_reset_recovery-test_reset_bip39_t1.py::test_reset_device_128": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", @@ -656,7 +655,6 @@ "T1B1_en_test_msg_applysettings.py::test_safety_checks": "f69025c134e99a8d390d01fd29a8373d8cbd8c47819d97ec351bedf55187441d", "T1B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_test_msg_backup_device.py::test_no_backup_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -"T1B1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "T1B1_en_test_msg_change_wipe_code_t1.py::test_set_pin_to_wipe_code": "5e5b3aab138a323a90e75db03e70d2c40e4e56fdc8a1b393b9f38d6501ed8589", "T1B1_en_test_msg_change_wipe_code_t1.py::test_set_remove_wipe_code": "6a14202a03bd09b55edfe56bca02f6a1ab03fbbcd25983dc4c4a83e34f05c9da", "T1B1_en_test_msg_change_wipe_code_t1.py::test_set_wipe_code_invalid[1204]": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", @@ -2008,7 +2006,7 @@ "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dad50802915de6f0c59b24ec5d9b111c1094674fdb80f26847683d333e13a20f", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "01007597009a130457cdc28bde5af309c0caf57867524cd48f6a41954c292c57", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c5af512bca98a5b29240db3bed0150fb4335174a0308c64c951c083a76b81897", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d4be2da08a9efbf3f8860e6381136129b7ba9759670c8177b0904b45115c8141", +"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6537e500a30132b156ca44ba634551075801fb7d16ea4c76a861dc979300a0e7", "T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e8b1dd1ab01b58f5706f704311f12692b4093961032aa3d1bd4e9ddaa14b406c", "T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "25f56d53555c7055b1dbf580ac5ea4179fc40efc08ccda4d773bf99023d3e4bb", "T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fb4150a9ef686dd18767d2a12a4140a7bec10510519789fd010d1b6c5ac8e244", @@ -2233,7 +2231,6 @@ "T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "9bdf9f49f613a7cc622ff29045f1506622b11bb958bfc7d662e138054b95cd18", "T2B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", "T2B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", -"T2B1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "2d1ae52522952895deb80c526f031419d6f7b68b2ddbfe40c892bcb71660677d", "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "904dd45fd64f9ff4d9e67a9669e0922f5a4cb5b60fed32f43ee5db8cfc7bcf0d", "T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1d56ba8d29b61fc3d41c197093da2fb465d1f0ff87622df2ceb599420f8cb78f", @@ -3377,7 +3374,7 @@ "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9ecd4c00fc84e6fe6617cef2aa0d258ae1c332133b1df33df7a1f6feea30e465", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "06d6a6cace3c49d8a621b949cbb3369911a9b600957f5daab68330f6cce50332", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b017a195135d9863a2a7eab808bc3101aee726653e936a55ff39d94b583b8fe3", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "84933db744530b8a169b246d4460538047cb191a12f8b0a4f3a12b265895c478", +"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75e232300b41d02788bfe7942637a66519b7e67f00129eaa35af5585d4021247", "T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3e2513cd2012fab7ae8e420f128d761f0db892126a5868f83ebf2fbe0c968710", "T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "37cbee54132b02bb1db42c5606b6df9c7f76983abcc4ac19ca00d3ebc9ffa958", "T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9342e12335ace2245c604b120efa7c877266fc772321396f4c8323ce3a630464", @@ -3602,7 +3599,6 @@ "T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "331e67d7e99409f48516a400926c853cc47369951d0f489af36a4566d1651e45", "T2B1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c925fcea96ab652c5cba68ecf4c6cfeb069da7eed29037211d72301b0e34fbb0", "T2B1_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", -"T2B1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "29c78026d1760c76b4015d8b125780f78818756b70acb7ef43419908dd188570", "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "10d97ce1dd72142822b63218a3aa4eacd3b16bba3809f0eda4234fb95bcbcc2b", "T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5ed7a9edbef7af20347d0d89bfd78e877c19e28c59a0460d61c9a30b4efe2eca", @@ -4746,7 +4742,7 @@ "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "061927456f5d16fcaa71d68793f7440d16f9f208d430a62f83e8388b69ab7dd7", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8efd6bdb4186a209c8ee6b3989d19b8cbab00de69faabd82785fafdb519cb178", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "1b882977322631d60dda1d7500a3cc070d0e0b1c407db1533d676a93dc20d9cc", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "09272fa08921ca6761ab8adb78558f643a0d447130af93cf163e63c1cb9c1c8c", +"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "89d8d57c57933248ba2a8d4ce0c83fb80043d05d83cf5ad58ba4adafe536ca15", "T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "10c8a8c9e19f6171ec14cddd9f93731a79a75cd8649a87fdb700cf7e57f7a285", "T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "787c9dd005bc2a80e79f777e5c0397d57f0eca685c1cf5bed44d4800c82a7fe7", "T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7307234c817ddc4815b705f3128a9c7d5793b437546a2718af8b6ff30bb5a33a", @@ -4971,7 +4967,6 @@ "T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "81d5804eb846dd513b42b684ca6477841a673e81dd8a30dabf8c55affea216ca", "T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", "T2B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", -"T2B1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ad9871bad4a93df7cbf27bffd1709e539a3408c1b5e3c5bf458e9946a6b43ad0", "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e7dbd89723a50e0b5ac4810ab681044f6ae3cf6c203beb346281bd5d8677dff7", "T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", @@ -6115,7 +6110,7 @@ "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "766d59d9a5f4a38a71dc0306c423b71d53d33379f35cc5480ccfd7ccf0a7f8bd", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "3e0a31545ebe0804d48d8a86b15666c427e467ed1083dd22a775f93f13d8556d", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "eb3d1c0d8ba5376e897389a03029338594d5b338576550ae2e9b61121ff4fdea", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5c7637d69a9a5d0e52cc6404eb5c200612e2ec1f0647077a2d7c61e3dbd09f7c", +"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "22e066960263cf8df7c639ced82b53cf24a67c0d78c9f27b299975c8df7ce30f", "T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "82791fd125ef07d442d303fcb762dd48d9287520574e3f478eba44ae9c55dca5", "T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d80529a3e79b0c0e340c84653d34d2f6b403b313be9b6015c0bcd3f2313b73b4", "T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2f27db5c24e695bd72e2870cfc9c59906473abd99839233c31e8634487db1b1c", @@ -6340,7 +6335,6 @@ "T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6c500423247daf99b0be5964a3b9a8508429eadf315a049228ba7822a448a162", "T2B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", "T2B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", -"T2B1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "685a78596477a49013be94ac8dcd0f8e9b3c500fe201a5eacef08581fc614866", "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "237438f415979801f1dcac7ce52a27a52d90cd7355bc1e58447882f8673a873a", "T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "22ae79c8dc2b0d32a5d9bacddd9be52b6bf8ce8216aa69360270e746e5d7a2a3", @@ -7484,7 +7478,7 @@ "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3a29d01a969e8c7110ebb4ddb147435221d9d2821a1908d4d2a3fc079c90a029", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6593a8c0283de0d2c9947a35ee356d1770a48e19857cca06b70bf8bf1b0e220f", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "86fe0dfd373e5e7f0f0bdef6ca7a31bc365083847f8c0e0ee43cda55e4239d38", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c2d4229ea89338cbf74ab0719f28b2914f637f30903183378328b5520137fea6", +"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "7f8ffc9101bf19997c9fb773ef95ab7ff40e710b0feb1ddda9ce177e5705ae64", "T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "86f99abd1ed1abf04e04d12683bb143690255e235cb904ad33c5bd4e1b76fe6a", "T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d5ef9c3dc71dd4b2f847c1615c32788fc8d3e948bf53fdbb785facec8b107eb0", "T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ed34bd9e171947035b322b9ead6bc1ca5abb1b2c4b3dd18bc7339c3e17734f10", @@ -7709,7 +7703,6 @@ "T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "cc19a3138911543f7dbb65762dbd5217f48bc35ab9559505f4991461e8cef1c1", "T2B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", "T2B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", -"T2B1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a65fedb9eebf9b75fc75df51391b2fcea739a657a7a949aadae3b335600ebf90", "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6e6361deaa470d441e69a61a294a203e9aea3cf114b8919b5aef9b1ee66fb90a", "T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5364e98bc3e6941907557b4d563bd51b1dea6c6c2b789acd75cf81ea3b1f2b44", @@ -9184,7 +9177,7 @@ "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9825a0641aa5ea58ce49ab160abe1933303eb77522475bedc0855e3520ac129a", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "3ad8cc7922034fc1ddf47448daf84fc743d068ad2a95c4bf0d04bb7d77bb79d3", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "460a5a40be89fb31b68193e242e48206740a5c04001f97ee32129877205c50ab", -"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "14cb6127b54213ad1aae348d49a85bb913033e482357c4d5258e09ed344b949c", +"T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1d3ae0782fa7d502e73fe505cd258769f6ca238389288e68f11393321792507c", "T2T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "1d3766d2412b01485389d90e77505cccb4eba59f6525d243e4293f10bda08a00", "T2T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1d7db2600a834f7ea4589fd60718246c09fd6f5b60d8a31e11fe2969e028ff70", "T2T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8a16b2eb55eb3c494e4d055ad005e1ce01cfb77f7367ce5acb2bdb3613362a2f", @@ -9403,7 +9396,6 @@ "T2T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d5ff212f9789ab6e5c6b7de5211262b11724ef7761435a095acf8809b8128c42", "T2T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "3e97ecace94b8c8e86675faff159f3b7acce1b88db8c46a6337c721c3af3649d", "T2T1_cs_test_msg_backup_device.py::test_no_backup_fails": "8bfd76717067ea75a3d818a7804d1c2f95b75fbbc51bbf96eff07c24fae8aece", -"T2T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "599756b95fbc5065407afe20241573e02d5b9206e58f55e3af42b2c5f1e857f2", "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "2a27c997825ba311dbd6f018a711a8d713e05e33d54bda25a0627ffe97aa8469", "T2T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "3e893170b1e80dc53617b5707b94f9a486f9fbf6f7d42fe05dd7d6c1d0c3d497", @@ -10633,7 +10625,7 @@ "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "45ff384626da22d4dfe63cb9ce67e5dc57be7ff904fc4a06fbb7b06a4a76d0fd", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a5bbc468b3620560e5f8cf29c4b6cca6afc8e9e6cca66063b2d221b7bb34c5b5", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ae10a81f33d927f3dbe15b2c8413462d169c8cfa73d2616fc7f73b292538d5b9", -"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "42dfaa2c365df2e9be0bc434afeb224bac64fe1a4454052786d56510f746efa1", +"T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "3e48df32f115c0924a4586c72690299c1f17202f497c6b08c3792b9df8c08a4f", "T2T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b42ff5e1408793e57d4440be2164c8c283a605793b0ce61f303ae1f60fb237a5", "T2T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2981aea95a67badd130d7526f5c4c46a44bc5aa80c0a74b89034a266c21511fe", "T2T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "41191a8c1620276c01f6db89c1d011417a797a6a226087ca2ec9cd7bdff969d3", @@ -10852,7 +10844,6 @@ "T2T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "370ba430452bf181ebfe18376104ba5356fc8686c17ae7a196064c6f92834bf9", "T2T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "7ed1f824ee883fc377b218a21141650f4eaa860ab37742e0e38f48a1152cf151", "T2T1_de_test_msg_backup_device.py::test_no_backup_fails": "6cdb796622c4019fcfa131a746866e7b5d5bd39f02f08352ba42e7ad7389c8c9", -"T2T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b1cfdeb0468d312fdd3521cb7641aad1538bda28e073adf8a069d0709c670685", "T2T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "5ee8787d1dcce995ae781e4ed9b8d4bde31d483835d58813b37caa8f6a871e7d", "T2T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "294aca06fb27eccda67897470412979142bde2e7bf363f19035c20c31277e486", @@ -12082,7 +12073,7 @@ "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "6a8509d7f082af7f66b79b9924235baba636705b2079e19b8719a8032ae63a8d", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "0a3f82c22b5294aa3b2dfa80038e8c7b6b421c2ba2218feebf624b736b2f4935", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "30c820e4864c26d1c8c49a411caac082c294402681d230ca3005dd9bd5a033bf", -"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1667bf812fc1c0298428919d30564d8edb4ee0d2fbc84a5e01e993ac05363e45", +"T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "a8ec11db8ceeba459788492254f765d5b1b90d11b8a06bbf70f6d8c130a5f3a8", "T2T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "26aac7d580bc5016915c58fe1683d4277f9f13a9f3262093045657fb0f3dd820", "T2T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "987b8e2a6274c23b8365ed3076c016e5560ef190e47fff2e13c2cd498716ddfb", "T2T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d8fa65e5938e8c29f89c96b32e2ee705e820de527bfff87ea9ab5917f29f26ad", @@ -12301,7 +12292,6 @@ "T2T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "078d24fc71ed83d0d474a8aa9356bc66cba883c709f0e63b6db8405a244214bf", "T2T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "ae147498028d68aa71c7337544e4a5049c4c943897f905c6fe29e88e5c3ab056", "T2T1_en_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", -"T2T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "16cd07db386059bdc79dcfd404aa464fc1876ca831c317de9f1851afb7dbbc36", "T2T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6369901e32c214102a0ed60ceb71318009bbe2e3675bbe54bc00e8597a9a5033", "T2T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "96a18ef7ba92b18fd9d6d3856f737e8b1418df79221d6750723109c90b2d5807", @@ -13549,7 +13539,7 @@ "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "09de554c06d4ac935bd92fd5b4948c4c1901811fdbc535e58db3cfcff381f00c", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "2215ef3feecc0b5779aa8152b33a4b63bf31ce867d0bfdd0df0e660d7257c027", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "9529294daa4d778155a91982b8651040d2ebb00857fbc9d0bf5c165eebfface3", -"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f457adacc76760a2d98e18a39b6bad2f98459901598f2452c3e1be26ae5e1eaf", +"T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5f4271fb4c11d94e5f2e5190814a1169c3a34af7ea7c89e4b094580f9c85b4dd", "T2T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "55cadd14cec29cb7139a978f9bdd90dd4a53e5f37735fed0c82b3422e738f046", "T2T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "43a6eb6652519e5ec2404b9932bd4cb7033f2ee158c40deb432644957ab68736", "T2T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ddccf0ba5b9d3fb402104f11b0a789831169503888335be13fc16cb91fc87c90", @@ -13768,7 +13758,6 @@ "T2T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "ccd42cd88af5803b23f2fa07312bb6c09ce51b945eb95571e28baa54b0ae2afa", "T2T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "5bd2c1de8e56bfccbb9d072783b919d660210d49370ddf0aab4d67572887b845", "T2T1_es_test_msg_backup_device.py::test_no_backup_fails": "84751f6b38fd85d1be38335b1310a45a10fc6ea80d11b8e0ad3cf8d43853d102", -"T2T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "aad9bb08b00fec27de32dc6efea71cf432db28e8d5b6113436506122405341a6", "T2T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "154818fd12bb019fd2f864f60d435621e95705f2d42d7636833c3b6bda0e5aba", "T2T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "6b9bce5a9ffc79f57f0d9f2856c65c708a0f82ddc6ffbfa84b6746421788a00d", @@ -14998,7 +14987,7 @@ "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "2133ea17fa2ac057a8cee0e430996451514eb9803e64a09ae00da090d32f5a19", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "cba1131d14a682f0cbfb938216a1f0d6f8dca053eb67880e780d66eedb905121", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "dc605279dc25be4e7e6681c45055389fe6ede4a2315f30d1b9de8b9be80ac098", -"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "cc94347a31b87e9761096574bb1981ded3923943c6ae234e033c797867cf6e45", +"T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0f6d341271f6d54bb4b4a882d6be75c1f09ce7fc826e17e2a5f29d75e3596858", "T2T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2982de2a83a18442cbaf47b3443e0d0048f5487bade58359c4bbced56fba9dfd", "T2T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e6ff58950fcbdbcb00253ebdf26ad83691e4c6ed4479764363dcd7a8f626cfe4", "T2T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "b868d87e13f85f85601a1cccdab55e1384cc29da10a6ff137bfe27e8982aa72b", @@ -15217,7 +15206,6 @@ "T2T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "0c40701baa20aff63e32f42f4f16e346e098b8b414eb4d62db53c4a5ece0bf14", "T2T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "f58eff59f22fd51c8e01f2115c8e84c7de88efafb4ceb88e3210ed4feba3f485", "T2T1_fr_test_msg_backup_device.py::test_no_backup_fails": "005c1b631d2632fa7f4c36edfd243a90448c05c9d70c90dce341031e89b197a4", -"T2T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", "T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "91ac0ba60dc650dbacf552acb9623353fc6e7b10ffcc285e7005638f6310313e", "T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "d70109e3af6e64276af88ee4b1352e6d96bda4ec4c3e7f3964607b5a62cb5eac", "T2T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c7c79c893280efdcfa43925b3e559eb5e00bc7615817ecc08920bb60f0096b6c", @@ -16599,7 +16587,7 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f32467ad7e6835d555511902977d25c3482af29a4021a6a0ee79ef5c5c3d42f1", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "87c8836b5a24e5db265381d68e9607fc490f604c541a4718129bc9a8bbebffdb", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0a9f6f8c22e31c0efaa840060755279d4f9c00fd8661ccd276acc1b125764970", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "dfa5f9b295d645a5f0c61990f5630e16df92bece6a096db0605f4796edc9c6b4", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "52275843923bd3cf4c6abdec9328c5c12668b990f6f60a8f706eee7006e41069", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "01b00ea17ca93683b6e9b4a78af4053388305fff71597e67cd7277a22776bf3b", "T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "249158de2df0162d5f7caf23b486c893285d3b747c2744f1ede27c1bd62ff977", "T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "bc095b9784c70a73630f5bc0a66e0e8fda6d49e7e5da750bf9cfc9d208b03902", @@ -16822,7 +16810,6 @@ "T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f8488e40c2ef12caa4e44b6a2d43864e02636462d0de215a553aeab24fa1d61e", "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "c9ca005679502266318da239e432a9661bb71967c41455abc9a78ab14ab16588", -"T3T1_cs_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "78a223276aab0b863f2b77d200ce0760acc786dfe83577df6a4642ae5fade030", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c32615dade60555fccd939eb3d919ec2ae976ae927ae604b8831bf0725e94f7a", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "885c23004db682853f559eb07a382f99064fca941decb96ca6978a665f7a5f08", @@ -17946,7 +17933,7 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66fc33cd2f5978acd01b8cb4a7bc911c8dfb3c80a757c120f43fd20a2b6da22d", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a9a8b6ad1187e39044b9a9be38dd37025a450599ff7cc27e80db2c091aa68933", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd093e21edacca6aaee4e4191ec199749d957b393a932e92bb85f8f34979512f", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "30e1be92c8f217f23a9e3cb396b41513e3405543957615eccc04d6db48be66c1", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "8dbaed3a7dcebb1fafd579d8e895f9bbb80fe9fae7556f97217a06077f755eb7", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ce8ee7157dcd5af873ae9f41260296c1045479fc18787e4e18b7dbcceb6d7ca8", "T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "03a3b751d14f7dc633cdab13c94b93b436027c083d09a2f72147cd90f6bf21a6", "T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "efb1c6218e53909031325ab2954dd3d5ac14664f5824c434796d3aa223e79717", @@ -18169,7 +18156,6 @@ "T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "c2011cf42c3860a2cd5517dd8604a970f0d31e53e51940376a5711102888f51b", "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "46a0aaa1de9d5768ec769aa75c050cc6c3f7f037b54d191336ccdb52b12d716a", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "3c27d51b28767f7ef347d31c482c4cb1a3a0e857f45d2e249ba59767d8622d9a", -"T3T1_de_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "e6a54d638aa25f453abdf38010d281a1efbe36703913272e4af582d94981e0ba", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "199caf405a161784c815eb88880517bc50087990926fa5a798b1dfed46165577", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "c322136ccd06eabb0414a9dcd53b83c816850ac1e41accee72a04a804735a917", @@ -19293,7 +19279,7 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "954abdea6bd7631bffdfa93d1129409adedb07cc9069d42198ec74ca617b6bb9", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8fc050d6fdd2d3b37d07c46c884605b875fd0f0a7a6ff9dd9ba0fcaa56a18ee9", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ec64c8c0cde4aafdb1d5b83232c47e33620f45bd232a9cc44df4b50f3777936f", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "2322c88f05f19d2faa0dff594fd574fbe0a90260d498116edfbb5c282d2e101e", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1a49c5a41c127c9ffd2a5c597b2d29e338c2b6d8bae8658fb2e2793894327716", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "6fe22a11fec54327631a72dbb77a50b4752f6bf25c520d4d5e34365d4e0dd1c6", "T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1a691412647be159cc262fb4b0b6cecc47b57d159d4aa8eba4e219a8b4054774", "T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8608496c6815f89998b2668f042276b40ebde3715a496ed83103e68fff7fb6f4", @@ -19516,7 +19502,6 @@ "T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "00e79d25f914d8fcdf173e1b8f00c92eb254d6f1ee7db38cb7449b8b07eeb714", "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "6867b3fefe40bbdf848693ad940eb096c9974e57e476f1efa9201c30502ff621", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", -"T3T1_en_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "9ad354ff1eae2748d7900efd602466909ae2bb0895aa83cfa8a61f68e9f2565c", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "c1e5b58f031f5951b18ce78d8498822698a3dc123036b3df8e0319400ea90d3d", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "0177323dd22623f82836638798699157b31749d63ebb0e1c160d0f8b31a23b18", @@ -20640,7 +20625,7 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5c493480c2be8018b01844522d0adc6307006d94359f641147dcfe9bf5ed7a81", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dc53105a6b05fcd2d6ceb4531ccf15a8617a3450db89b203bc827365ef2e14f7", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b2b3f5d920906e794b491568af6103b8b1a6fbf57ce89f325f892e3d113e3833", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "085c58e64c751a36643acf9bde37af20f99a99d1fadbf870003e5a291ed2e87d", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d14e7406abeff6b48c9674b9ef2c51528b76b419d6ec1688240fddd21cc04051", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2b8712dce67fe3dea95754aee775c651cd40cbd184221f440e9ca41da4eabce1", "T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8923a59ab4531fc987c8965592f2a3fd8fac4b4b60846d1a8e3c08bc13cd2bd5", "T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f69c838933730806c344c51da6a0fa372168a215395672f79f8f0ea6ab09eef4", @@ -20863,7 +20848,6 @@ "T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b8fea1e47b5e46937e6d6583d1644734e4ccf62726d6a29cee635b9903926040", "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", -"T3T1_es_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "3d6fa73765854729d7a2d51197b4bcf0797ca1233946d24958d26fa355bb0b9c", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "a455376f20c3072a7d2941e9881acbdc910aed9148f2e4d7b72ed8da2cf5ff97", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "f38dc739b870fd271bb0df1876aebad20a1f655a04eb61ca9049bd266aae4404", @@ -21987,7 +21971,7 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d3f130732cd2837913cb832fc92b4c7db31942fcc85b9158121c8378ec1e3f85", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f7dc4fc7a8e30e86a4a647b1dd53debbe90d4ad27f4866ea28ef7a215b235484", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "36e70439f852096a324127a5198d6f22fd27588df99181ec9ba3616b04f311ae", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "0ee1d255cba202c089e106724293a930252ef84abb1990c260249a3b328bdcc0", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "aef67a18b4b49ca74299a0c1ab5d5206246d8bf4325e0269ee952f03709bac01", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b4756695193a1502c00d78e0add614a61485c8fba37047b37a19c57e342542e7", "T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cf00b387e6505d133b0a246efe235424b0ed84d4ded82177e46946149f9282f5", "T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0cdb03c086c8a45c0ac80aaaacbe8fb68a443b942e1ebca354a02594a58b5b99", @@ -22210,7 +22194,6 @@ "T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "144f3ce0b7f2a24a4b45d3d6673fdb7ccc66555e25d0c82368a4be68b44f84a9", "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", -"T3T1_fr_test_msg_backup_device.py::test_no_backup_show_entropy_fails": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "19ecf4aea55615df4f40c367daee7bf0e9f812576b6bacb90fab5f2e14ddd730", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "ea00bde3dc79e88ea9ea3c626c3394c71652b4e0f6847ee9531f11ea3c8c01ba", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "a3117342e89012ede2cb9f59d3058f4b899c4a04a4e685f1e60f1d358d62cd6c", diff --git a/tests/upgrade_tests/test_firmware_upgrades.py b/tests/upgrade_tests/test_firmware_upgrades.py index 7b9d393c36..d74bea90ca 100644 --- a/tests/upgrade_tests/test_firmware_upgrades.py +++ b/tests/upgrade_tests/test_firmware_upgrades.py @@ -210,7 +210,6 @@ def asserts(client: "Client"): with EmulatorWrapper(gen, tag) as emu: device.reset( emu.client, - display_random=False, strength=STRENGTH, passphrase_protection=False, pin_protection=False, @@ -241,7 +240,6 @@ def asserts(client: "Client"): with EmulatorWrapper(gen, tag) as emu: device.reset( emu.client, - display_random=False, strength=STRENGTH, passphrase_protection=False, pin_protection=False, @@ -273,7 +271,6 @@ def asserts(client: "Client"): with EmulatorWrapper(gen, tag) as emu: device.reset( emu.client, - display_random=False, strength=STRENGTH, passphrase_protection=False, pin_protection=False, From ed79d35de9b4f2dc47f8654d260e76541d37507c Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 5 Aug 2024 14:17:41 +0200 Subject: [PATCH 545/626] feat(python): make webusb transport more resilient * convert more USB errors into TransportExceptions * add a timeout + infinite loop for read/write operations, so that they are interruptible by Python, instead of leaving the interface in a bad state when hard-killed * (also ctrl+c now works if the process is waiting for usb) --- python/.changelog.d/4089.changed | 1 + python/.changelog.d/4089.fixed | 1 + python/src/trezorlib/transport/webusb.py | 48 +++++++++++++++++++----- 3 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 python/.changelog.d/4089.changed create mode 100644 python/.changelog.d/4089.fixed diff --git a/python/.changelog.d/4089.changed b/python/.changelog.d/4089.changed new file mode 100644 index 0000000000..8a8b3b80b5 --- /dev/null +++ b/python/.changelog.d/4089.changed @@ -0,0 +1 @@ +Most USB level errors are now converted to `TransportException`. diff --git a/python/.changelog.d/4089.fixed b/python/.changelog.d/4089.fixed new file mode 100644 index 0000000000..1626297f51 --- /dev/null +++ b/python/.changelog.d/4089.fixed @@ -0,0 +1 @@ +It is now possible to interrupt USB communication (via Ctrl+C, or a signal, or any other way). diff --git a/python/src/trezorlib/transport/webusb.py b/python/src/trezorlib/transport/webusb.py index 1b60df61bd..8e2d08147a 100644 --- a/python/src/trezorlib/transport/webusb.py +++ b/python/src/trezorlib/transport/webusb.py @@ -40,6 +40,9 @@ DEBUG_INTERFACE = 1 DEBUG_ENDPOINT = 2 +USB_COMM_TIMEOUT_MS = 300 +WEBUSB_CHUNK_SIZE = 64 + class WebUsbHandle: def __init__(self, device: "usb1.USBDevice", debug: bool = False) -> None: @@ -64,28 +67,53 @@ def open(self) -> None: def close(self) -> None: if self.handle is not None: - self.handle.releaseInterface(self.interface) - self.handle.close() + try: + self.handle.releaseInterface(self.interface) + self.handle.close() + except Exception as e: + raise TransportException(f"USB close failed: {e}") from e self.handle = None def write_chunk(self, chunk: bytes) -> None: assert self.handle is not None - if len(chunk) != 64: + if len(chunk) != WEBUSB_CHUNK_SIZE: raise TransportException(f"Unexpected chunk size: {len(chunk)}") LOG.log(DUMP_PACKETS, f"writing packet: {chunk.hex()}") - self.handle.interruptWrite(self.endpoint, chunk) + while True: + try: + bytes_written = self.handle.interruptWrite( + self.endpoint, chunk, USB_COMM_TIMEOUT_MS + ) + except usb1.USBErrorTimeout as e: + bytes_written = e.transferred + except Exception as e: + raise TransportException(f"USB write failed: {e}") from e + if bytes_written == 0: + continue + if bytes_written != len(chunk): + raise TransportException( + f"USB partial write: {bytes_written} out of {WEBUSB_CHUNK_SIZE}" + ) + return def read_chunk(self) -> bytes: assert self.handle is not None endpoint = 0x80 | self.endpoint while True: - chunk = self.handle.interruptRead(endpoint, 64) - if chunk: - break - else: - time.sleep(0.001) + try: + chunk = self.handle.interruptRead( + endpoint, WEBUSB_CHUNK_SIZE, USB_COMM_TIMEOUT_MS + ) + if chunk: + break + else: + time.sleep(0.001) + except usb1.USBErrorTimeout: + pass + except Exception as e: + raise TransportException(f"USB read failed: {e}") from e LOG.log(DUMP_PACKETS, f"read packet: {chunk.hex()}") - if len(chunk) != 64: + if len(chunk) != WEBUSB_CHUNK_SIZE: raise TransportException(f"Unexpected chunk size: {len(chunk)}") return chunk From c39ba83c8b307e4b41ad3d99fa04c3129f5dae91 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 5 Aug 2024 15:47:17 +0200 Subject: [PATCH 546/626] fix(core/debug): make sure return_layout_change does not crash on a race condition [no changelog] --- core/src/apps/debug/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/src/apps/debug/__init__.py b/core/src/apps/debug/__init__.py index 3f08be81af..bd80af92d6 100644 --- a/core/src/apps/debug/__init__.py +++ b/core/src/apps/debug/__init__.py @@ -127,10 +127,13 @@ async def get_layout_change_content() -> list[str]: return content - async def return_layout_change() -> None: + async def return_layout_change() -> None: # type: ignore [Return type of async generator] content_tokens = await get_layout_change_content() - assert isinstance(DEBUG_CONTEXT, context.Context) + # spin for a bit until DEBUG_CONTEXT becomes available + while not isinstance(DEBUG_CONTEXT, context.Context): + yield # type: ignore [Return type of async generator] + if storage.layout_watcher is LAYOUT_WATCHER_LAYOUT: await DEBUG_CONTEXT.write(DebugLinkLayout(tokens=content_tokens)) else: From c7eabe30886bad47dd1a36e101fb77e8cffc2dfc Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 26 Aug 2024 13:15:48 +0200 Subject: [PATCH 547/626] fix(core): update display initialization sequence on T3T1 [no changelog] --- .../trezorhal/stm32f4/displays/st7789v.c | 14 +- .../stm32f4/xdisplay/st-7789/display_driver.c | 2 +- .../stm32f4/xdisplay/st-7789/display_panel.c | 14 +- .../stm32f4/xdisplay/st-7789/display_panel.h | 4 +- .../xdisplay/st-7789/panels/lx154a2482.c | 194 ++++++++++++++++++ .../xdisplay/st-7789/panels/lx154a2482.h | 29 +++ .../stm32u5/displays/panels/lx154a2482.c | 179 ++++++++++++++++ .../stm32u5/displays/panels/lx154a2482.h | 10 + .../models/T3T1/trezor_t3t1_revE.py | 4 +- core/site_scons/models/T3T1/trezor_t3t1_v4.py | 4 +- 10 files changed, 438 insertions(+), 16 deletions(-) create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2482.c create mode 100644 core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2482.h create mode 100644 core/embed/trezorhal/stm32u5/displays/panels/lx154a2482.c create mode 100644 core/embed/trezorhal/stm32u5/displays/panels/lx154a2482.h diff --git a/core/embed/trezorhal/stm32f4/displays/st7789v.c b/core/embed/trezorhal/stm32f4/displays/st7789v.c index 4e3c0fb99c..35a6812914 100644 --- a/core/embed/trezorhal/stm32f4/displays/st7789v.c +++ b/core/embed/trezorhal/stm32f4/displays/st7789v.c @@ -35,7 +35,7 @@ #include "displays/panels/lx154a2422.h" #include "displays/panels/tf15411a.h" #else -#include "displays/panels/lx154a2422.h" +#include "displays/panels/lx154a2482.h" #endif // using const volatile instead of #define results in binaries that change @@ -243,7 +243,7 @@ int display_orientation(int degrees) { lx154a2422_rotate(degrees, &DISPLAY_PADDING); } #else - lx154a2422_rotate(degrees, &DISPLAY_PADDING); + lx154a2482_rotate(degrees, &DISPLAY_PADDING); #endif panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); } @@ -294,7 +294,7 @@ void display_init_seq(void) { _154a_init_seq(); } #else - lx154a2422_init_seq(); + lx154a2482_init_seq(); #endif display_unsleep(); @@ -474,9 +474,6 @@ void display_reinit(void) { // important for model T as this is not set in boardloader display_set_little_endian(); - DISPLAY_ORIENTATION = 0; - panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); - backlight_pwm_init(BACKLIGHT_RETAIN); #ifdef TREZOR_MODEL_T @@ -487,8 +484,13 @@ void display_reinit(void) { } else if (id == DISPLAY_ID_ST7789V) { lx154a2411_gamma(); } +#else + lx154a2482_init_seq(); #endif + DISPLAY_ORIENTATION = 0; + panel_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); + #ifdef FRAMEBUFFER display_setup_te_interrupt(); #endif diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c index e68851858f..e486ebfaf3 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_driver.c @@ -68,7 +68,7 @@ void display_reinit(void) { // Important for model T as this is not set in boardloader display_panel_set_little_endian(); - display_panel_init_gamma(); + display_panel_reinit(); backlight_pwm_init(BACKLIGHT_RETAIN); #ifdef XFRAMEBUFFER diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c index aaf86d8e84..0d9bcf4151 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.c @@ -31,7 +31,7 @@ #include "panels/lx154a2422.h" #include "panels/tf15411a.h" #else -#include "panels/lx154a2422.h" +#include "panels/lx154a2482.h" #endif // using const volatile instead of #define results in binaries that change @@ -212,14 +212,17 @@ void display_panel_init(void) { _154a_init_seq(); } #else - lx154a2422_init_seq(); + lx154a2482_init_seq(); #endif display_panel_unsleep(); } -void display_panel_init_gamma(void) { +void display_panel_reinit(void) { + // reinitialization is needed due to original sequence is unchangable in + // boardloader #ifdef TREZOR_MODEL_T + // model TT has new gamma settings uint32_t id = display_panel_identify(); if (id == DISPLAY_ID_ST7789V && display_panel_is_inverted()) { // newest TT display - set proper gamma @@ -227,6 +230,9 @@ void display_panel_init_gamma(void) { } else if (id == DISPLAY_ID_ST7789V) { lx154a2411_gamma(); } +#else + // reduced touch-display interference in T3T1 + lx154a2482_init_seq(); #endif } @@ -239,6 +245,6 @@ void display_panel_rotate(int angle) { lx154a2422_rotate(angle, &g_window_padding); } #else - lx154a2422_rotate(angle, &g_window_padding); + lx154a2482_rotate(angle, &g_window_padding); #endif } diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.h index 99935a7ba8..79163c4894 100644 --- a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.h +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/display_panel.h @@ -44,7 +44,9 @@ uint32_t display_panel_identify(void); bool display_panel_is_inverted(); void display_panel_init(void); -void display_panel_init_gamma(void); +// Due to inability to change display setting in boardlaoder, +// we need to reinitialize the display when bootloader or firmware runs +void display_panel_reinit(void); void display_panel_set_little_endian(void); void display_panel_set_big_endian(void); diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2482.c b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2482.c new file mode 100644 index 0000000000..6ef516fb8d --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2482.c @@ -0,0 +1,194 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "lx154a2482.h" + +#include "../display_io.h" + +void lx154a2482_gamma(void) { + // positive voltage correction + ISSUE_CMD_BYTE(0xE0); + ISSUE_DATA_BYTE(0xD0); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x10); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x26); + ISSUE_DATA_BYTE(0x36); + ISSUE_DATA_BYTE(0x34); + ISSUE_DATA_BYTE(0x4D); + ISSUE_DATA_BYTE(0x18); + ISSUE_DATA_BYTE(0x13); + ISSUE_DATA_BYTE(0x14); + ISSUE_DATA_BYTE(0x2F); + ISSUE_DATA_BYTE(0x34); + + // negative voltage correction + ISSUE_CMD_BYTE(0xE1); + ISSUE_DATA_BYTE(0xD0); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x10); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x09); + ISSUE_DATA_BYTE(0x26); + ISSUE_DATA_BYTE(0x36); + ISSUE_DATA_BYTE(0x53); + ISSUE_DATA_BYTE(0x4C); + ISSUE_DATA_BYTE(0x18); + ISSUE_DATA_BYTE(0x14); + ISSUE_DATA_BYTE(0x14); + ISSUE_DATA_BYTE(0x2F); + ISSUE_DATA_BYTE(0x34); +} + +void lx154a2482_init_seq(void) { + // TEON: Tearing Effect Line On; V-blanking only + ISSUE_CMD_BYTE(0x35); + ISSUE_DATA_BYTE(0x00); + + // Memory Data Access Control (MADCTL) + ISSUE_CMD_BYTE(0x36); + ISSUE_DATA_BYTE(0x00); + + // Interface Pixel Format + ISSUE_CMD_BYTE(0x3A); + ISSUE_DATA_BYTE(0x05); + + // Column Address Set + ISSUE_CMD_BYTE(0x2A); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0xEF); + + // Row Address Set + ISSUE_CMD_BYTE(0x2B); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0xEF); + + // Porch Setting + ISSUE_CMD_BYTE(0xB2); + ISSUE_DATA_BYTE(0x0C); + ISSUE_DATA_BYTE(0x0C); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x33); + ISSUE_DATA_BYTE(0x33); + + // VCOM Setting + ISSUE_CMD_BYTE(0xBB); + ISSUE_DATA_BYTE(0x1F); + + // LCMCTRL: LCM Control: XOR RGB setting + ISSUE_CMD_BYTE(0xC0); + ISSUE_DATA_BYTE(0x20); + + // VDV and VRH Command Enable + ISSUE_CMD_BYTE(0xC2); + ISSUE_DATA_BYTE(0x01); + + // VRH Set + ISSUE_CMD_BYTE(0xC3); + ISSUE_DATA_BYTE(0x0F); // 4.3V + + // VDV Setting + ISSUE_CMD_BYTE(0xC4); + ISSUE_DATA_BYTE(0x20); + + // Frame Rate Control in Normal Mode + ISSUE_CMD_BYTE(0xC6); + ISSUE_DATA_BYTE(0xEF); // column inversion //0X0F Dot INV, 60Hz + + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is gate 80.; + // gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x11); + + // INVOFF (20h): Display Inversion Off + // INVON (21h): Display Inversion On + ISSUE_CMD_BYTE(0x21); + // the above config is the most important and definitely necessary + + // PWCTRL1: Power Control 1 + ISSUE_CMD_BYTE(0xD0); + ISSUE_DATA_BYTE(0xA4); + ISSUE_DATA_BYTE(0xA1); + + lx154a2482_gamma(); +} + +void lx154a2482_rotate(int degrees, display_padding_t* padding) { + uint16_t shift = 0; + char BX = 0, BY = 0; + +#define RGB (1 << 3) +#define ML (1 << 4) // vertical refresh order +#define MH (1 << 2) // horizontal refresh order +#define MV (1 << 5) +#define MX (1 << 6) +#define MY (1 << 7) + // MADCTL: Memory Data Access Control - reference: + // section 8.12 in the ST7789V manual + uint8_t display_command_parameter = 0; + switch (degrees) { + case 0: + display_command_parameter = 0; + BY = 0; + break; + case 90: + display_command_parameter = MV | MX | MH | ML; + BX = 1; + shift = 1; + break; + case 180: + display_command_parameter = MX | MY | MH | ML; + BY = 0; + shift = 1; + break; + case 270: + display_command_parameter = MV | MY; + BX = 1; + break; + } + + ISSUE_CMD_BYTE(0x36); + ISSUE_DATA_BYTE(display_command_parameter); + + if (shift) { + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is + // gate 80.; gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x00); + ISSUE_DATA_BYTE(0x11); + } else { + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is + // gate 80.; gate scan direction 319 -> 0 + ISSUE_CMD_BYTE(0xE4); + ISSUE_DATA_BYTE(0x1D); + ISSUE_DATA_BYTE(0x0A); + ISSUE_DATA_BYTE(0x11); + } + + padding->x = BX ? (320 - DISPLAY_RESY) : 0; + padding->y = BY ? (320 - DISPLAY_RESY) : 0; +} diff --git a/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2482.h b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2482.h new file mode 100644 index 0000000000..b28f3f182a --- /dev/null +++ b/core/embed/trezorhal/stm32f4/xdisplay/st-7789/panels/lx154a2482.h @@ -0,0 +1,29 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef LX154A2422_H_ +#define LX154A2422_H_ + +#include "../display_panel.h" + +void lx154a2482_init_seq(void); +void lx154a2482_gamma(void); +void lx154a2482_rotate(int degrees, display_padding_t* padding); + +#endif diff --git a/core/embed/trezorhal/stm32u5/displays/panels/lx154a2482.c b/core/embed/trezorhal/stm32u5/displays/panels/lx154a2482.c new file mode 100644 index 0000000000..3ce189a3ff --- /dev/null +++ b/core/embed/trezorhal/stm32u5/displays/panels/lx154a2482.c @@ -0,0 +1,179 @@ + +#include "display.h" +#include "displays/st7789v.h" +#include "touch.h" + +void lx154a2482_gamma(void) { + // positive voltage correction + CMD(0xE0); + DATA(0xD0); + DATA(0x0A); + DATA(0x10); + DATA(0x0A); + DATA(0x0A); + DATA(0x26); + DATA(0x36); + DATA(0x34); + DATA(0x4D); + DATA(0x18); + DATA(0x13); + DATA(0x14); + DATA(0x2F); + DATA(0x34); + + // negative voltage correction + CMD(0xE1); + DATA(0xD0); + DATA(0x0A); + DATA(0x10); + DATA(0x0A); + DATA(0x09); + DATA(0x26); + DATA(0x36); + DATA(0x53); + DATA(0x4C); + DATA(0x18); + DATA(0x14); + DATA(0x14); + DATA(0x2F); + DATA(0x34); +} + +void lx154a2482_init_seq(void) { + // TEON: Tearing Effect Line On; V-blanking only + CMD(0x35); + DATA(0x00); + + // Memory Data Access Control (MADCTL) + CMD(0x36); + DATA(0x00); + + // Interface Pixel Format + CMD(0x3A); + DATA(0x05); + + // Column Address Set + CMD(0x2A); + DATA(0x00); + DATA(0x00); + DATA(0x00); + DATA(0xEF); + + // Row Address Set + CMD(0x2B); + DATA(0x00); + DATA(0x00); + DATA(0x00); + DATA(0xEF); + + // Porch Setting + CMD(0xB2); + DATA(0x0C); + DATA(0x0C); + DATA(0x00); + DATA(0x33); + DATA(0x33); + + // VCOM Setting + CMD(0xBB); + DATA(0x1F); + + // LCMCTRL: LCM Control: XOR RGB setting + CMD(0xC0); + DATA(0x20); + + // VDV and VRH Command Enable + CMD(0xC2); + DATA(0x01); + + // VRH Set + CMD(0xC3); + DATA(0x0F); // 4.3V + + // VDV Setting + CMD(0xC4); + DATA(0x20); + + // Frame Rate Control in Normal Mode + CMD(0xC6); + DATA(0xEF); // column inversion //0X0F Dot INV, 60Hz + + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is gate 80.; + // gate scan direction 319 -> 0 + CMD(0xE4); + DATA(0x1D); + DATA(0x0A); + DATA(0x11); + + // INVOFF (20h): Display Inversion Off + // INVON (21h): Display Inversion On + CMD(0x21); + // the above config is the most important and definitely necessary + + // PWCTRL1: Power Control 1 + CMD(0xD0); + DATA(0xA4); + DATA(0xA1); + + lx154a2482_gamma(); +} + +void lx154a2482_rotate(int degrees, display_padding_t* padding) { + uint16_t shift = 0; + char BX = 0, BY = 0; + +#define RGB (1 << 3) +#define ML (1 << 4) // vertical refresh order +#define MH (1 << 2) // horizontal refresh order +#define MV (1 << 5) +#define MX (1 << 6) +#define MY (1 << 7) + // MADCTL: Memory Data Access Control - reference: + // section 8.12 in the ST7789V manual + uint8_t display_command_parameter = 0; + switch (degrees) { + case 0: + display_command_parameter = 0; + BY = 0; + break; + case 90: + display_command_parameter = MV | MX | MH | ML; + BX = 1; + shift = 1; + break; + case 180: + display_command_parameter = MX | MY | MH | ML; + BY = 0; + shift = 1; + break; + case 270: + display_command_parameter = MV | MY; + BX = 1; + break; + } + + CMD(0x36); + DATA(display_command_parameter); + + if (shift) { + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is + // gate 80.; gate scan direction 319 -> 0 + CMD(0xE4); + DATA(0x1D); + DATA(0x00); + DATA(0x11); + } else { + // GATECTRL: Gate Control; NL = 240 gate lines, first scan line is + // gate 80.; gate scan direction 319 -> 0 + CMD(0xE4); + DATA(0x1D); + DATA(0x0A); + DATA(0x11); + } + + // reset the column and page extents + display_set_window(0, 0, DISPLAY_RESX - 1, DISPLAY_RESY - 1); + + padding->x = BX ? (MAX_DISPLAY_RESY - DISPLAY_RESY) : 0; + padding->y = BY ? (MAX_DISPLAY_RESY - DISPLAY_RESY) : 0; +} diff --git a/core/embed/trezorhal/stm32u5/displays/panels/lx154a2482.h b/core/embed/trezorhal/stm32u5/displays/panels/lx154a2482.h new file mode 100644 index 0000000000..fa1f6eab10 --- /dev/null +++ b/core/embed/trezorhal/stm32u5/displays/panels/lx154a2482.h @@ -0,0 +1,10 @@ +#ifndef LX154A2422_H_ +#define LX154A2422_H_ + +#include "displays/st7789v.h" + +void lx154a2482_init_seq(void); +void lx154a2482_gamma(void); +void lx154a2482_rotate(int degrees, display_padding_t* padding); + +#endif diff --git a/core/site_scons/models/T3T1/trezor_t3t1_revE.py b/core/site_scons/models/T3T1/trezor_t3t1_revE.py index 1c0ca02b55..85edb12c54 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_revE.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_revE.py @@ -54,12 +54,12 @@ def configure( sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_io.c"] sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_panel.c"] sources += [ - "embed/trezorhal/stm32u5/xdisplay/st-7789/panels/lx154a2422.c", + "embed/trezorhal/stm32u5/xdisplay/st-7789/panels/lx154a2482.c", ] else: sources += [f"embed/trezorhal/stm32u5/displays/{display}"] sources += [ - "embed/trezorhal/stm32u5/displays/panels/lx154a2422.c", + "embed/trezorhal/stm32u5/displays/panels/lx154a2482.c", ] sources += ["embed/trezorhal/stm32u5/backlight_pwm.c"] diff --git a/core/site_scons/models/T3T1/trezor_t3t1_v4.py b/core/site_scons/models/T3T1/trezor_t3t1_v4.py index ad6b3bfaac..4d8e3e59bc 100644 --- a/core/site_scons/models/T3T1/trezor_t3t1_v4.py +++ b/core/site_scons/models/T3T1/trezor_t3t1_v4.py @@ -55,13 +55,13 @@ def configure( sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_io.c"] sources += ["embed/trezorhal/stm32u5/xdisplay/st-7789/display_panel.c"] sources += [ - "embed/trezorhal/stm32u5/xdisplay/st-7789/panels/lx154a2422.c", + "embed/trezorhal/stm32u5/xdisplay/st-7789/panels/lx154a2482.c", ] else: sources += [f"embed/trezorhal/stm32u5/displays/{display}"] sources += [ - "embed/trezorhal/stm32u5/displays/panels/lx154a2422.c", + "embed/trezorhal/stm32u5/displays/panels/lx154a2482.c", ] sources += ["embed/trezorhal/stm32u5/backlight_pwm.c"] From e2022db8fa57864221afa1d2019c0064ead0d5be Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 26 Aug 2024 14:36:05 +0200 Subject: [PATCH 548/626] feat(core/mercury): use less severe icon color Not using danger color during onboarding. [no changelog] --- core/embed/rust/librust_qstr.h | 1 + .../src/ui/model_mercury/component/frame.rs | 7 +- .../embed/rust/src/ui/model_mercury/layout.rs | 20 +- core/embed/rust/src/ui/model_tt/layout.rs | 1 + core/mocks/generated/trezorui2.pyi | 2 + .../src/trezor/ui/layouts/mercury/__init__.py | 1 + .../src/trezor/ui/layouts/mercury/recovery.py | 1 + core/src/trezor/ui/layouts/mercury/reset.py | 2 + tests/ui_tests/fixtures.json | 370 +++++++++--------- 9 files changed, 213 insertions(+), 192 deletions(-) diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 9a5ac8936d..831b1f6ce7 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -209,6 +209,7 @@ static void _librust_qstrs(void) { MP_QSTR_confirm_with_info; MP_QSTR_count; MP_QSTR_current; + MP_QSTR_danger; MP_QSTR_data; MP_QSTR_data_hash; MP_QSTR_data_len; diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index cc78b6de13..e6f47c035e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -155,7 +155,12 @@ where self.with_button(theme::ICON_MENU, CancelInfoConfirmMsg::Info, true) } - pub fn with_warning_button(self) -> Self { + pub fn with_warning_low_icon(self) -> Self { + self.with_button(theme::ICON_WARNING, CancelInfoConfirmMsg::Info, false) + .button_styled(theme::button_warning_low()) + } + + pub fn with_danger_icon(self) -> Self { self.with_button(theme::ICON_WARNING, CancelInfoConfirmMsg::Info, false) .button_styled(theme::button_danger()) } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 154ca77bb9..731e6598b8 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -753,18 +753,25 @@ extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map let description: TString = kwargs.get_or(Qstr::MP_QSTR_description, "".into())?; let value: TString = kwargs.get_or(Qstr::MP_QSTR_value, "".into())?; let action: Option<TString> = kwargs.get(Qstr::MP_QSTR_button)?.try_into_option()?; + let danger: bool = kwargs.get_or(Qstr::MP_QSTR_danger, false)?; let content = ParagraphVecShort::from_iter([ Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, description), Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, value), ]) .into_paragraphs(); - let obj = LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned(title, SwipeContent::new(content)) - .with_warning_button() - .with_footer(TR::instructions__swipe_up.into(), action) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()), - ))?; + + let frame = Frame::left_aligned(title, SwipeContent::new(content)) + .with_footer(TR::instructions__swipe_up.into(), action) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()); + + let frame_with_icon = if danger { + frame.with_danger_icon() + } else { + frame.with_warning_low_icon() + }; + + let obj = LayoutObj::new(SwipeUpScreen::new(frame_with_icon))?; Ok(obj.into()) }; unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } @@ -1472,6 +1479,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: str = "", /// allow_cancel: bool = False, /// time_ms: int = 0, + /// danger: bool = False, /// ) -> LayoutObj[UiResult]: /// """Warning modal. No buttons shown when `button` is empty string.""" Qstr::MP_QSTR_show_warning => obj_fn_kw!(0, new_show_warning).as_obj(), diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index f68f377b61..2d14ad01a5 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -1901,6 +1901,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// description: str = "", /// allow_cancel: bool = False, /// time_ms: int = 0, + /// danger: bool = False, # unused on TT /// ) -> LayoutObj[UiResult]: /// """Warning modal. No buttons shown when `button` is empty string.""" Qstr::MP_QSTR_show_warning => obj_fn_kw!(0, new_show_warning).as_obj(), diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 0f251b98ab..a6bf99e9b3 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -262,6 +262,7 @@ def show_warning( description: str = "", allow_cancel: bool = False, time_ms: int = 0, + danger: bool = False, ) -> LayoutObj[UiResult]: """Warning modal. No buttons shown when `button` is empty string.""" @@ -1381,6 +1382,7 @@ def show_warning( description: str = "", allow_cancel: bool = False, time_ms: int = 0, + danger: bool = False, # unused on TT ) -> LayoutObj[UiResult]: """Warning modal. No buttons shown when `button` is empty string.""" diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 60c0d9afbc..182b70b4a1 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -595,6 +595,7 @@ def show_warning( title=TR.words__important, value=content, button=subheader or TR.words__continue_anyway, + danger=True, ) ), br_name, diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index 5ac7403fd4..1399d01ad7 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -141,6 +141,7 @@ async def show_recovery_warning( value=subheader or "", button=button, description="", + danger=True, ) ), br_name, diff --git a/core/src/trezor/ui/layouts/mercury/reset.py b/core/src/trezor/ui/layouts/mercury/reset.py index d65abcc8df..03f5c33e64 100644 --- a/core/src/trezor/ui/layouts/mercury/reset.py +++ b/core/src/trezor/ui/layouts/mercury/reset.py @@ -319,6 +319,7 @@ async def show_warning_backup() -> None: value=TR.reset__never_make_digital_copy, button="", allow_cancel=False, + danger=False, # Use a less severe icon color ) ), "backup_warning", @@ -351,6 +352,7 @@ async def show_reset_warning( value="", button="", allow_cancel=False, + danger=True, ) ), br_name, diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 801ed85dca..337d0bcced 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -15329,9 +15329,9 @@ "T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "dedee62f34cb9fb82b76b57229afdeb633cad520ee417f8379ed40728aa48ddd", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "662fdecae7643270921e0c96105ad326d5421693d0f92471494f4af31a31e751", "T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "6b09e1ad5594138a7f01ef8f1e89adbc3b52e112421eb295e296dde22e7e0bfb", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9031ad2fa055e7429226c823c09221e3b7386a03838d8b34ac4974a04db8aa9c", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "df8ec8be03b23f9b05214deec6b515e11ef85f64896237a729f35b8f1dcdaddf", -"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "26b92c6ca41c2ccf46f1c094026c91897c8022236aca9f71f58df0720e9709d7", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3727ab4838230367640d950c272e18bc14e2c63fcb0f8d5528d3b2f739ac3c69", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1e326613e4c4d7c71475d27fd5358c89289132980c884f531cf2860a05c4abea", +"T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2baa8ce83175e16f4af030652109dec4051822858e396c2157e3bb066285ac7a", "T3T1_cs_test_lock.py::test_hold_to_lock": "1824eb2d9867a82fb99174bac6ef8a906a0d6bf11381e0939091fee8a9c10b45", "T3T1_cs_test_passphrase_mercury.py::test_cycle_through_last_character": "0573c7df09b4df05e6720b7fcb0614fbcbe4f3149e1049265cc2f6b246524a39", "T3T1_cs_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "3682359cf58e22162b229cb45085606606b6a4d59c1304e59c572e04452367fb", @@ -15364,12 +15364,12 @@ "T3T1_cs_test_recovery.py::test_recovery_bip39": "0b4ded4093e543b29799e950c3d56b8ef4c03493709a94f12e3a1b245128dbf2", "T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "eece72ab6ae9aa5d919aa408a70197426f1773dca0c744007963fffecb3e9f8a", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "758f8c529232f37caaa4adc3caa57382d93ee0323b924a11bbd1ef484e7d7d2b", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "8154731b4649361f23ce5b118d13de8ffd5b33eadd0b83f9b7be792b1cb52bc6", -"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "e5e9d0a86dbbcfd26bf1f9d17bbba24b4de69440314d1ebd1fc7f78dec97a131", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "59490382e5026fa50d16803372d5d0b5ce487e093a3f6fe9c72a0a117b30ccdd", -"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "23ab489a042c20549601dbce1987065132bf11cfc9bae66ced84bf7ce82a947c", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "f9c80c4f6c3eb28e83a57a04f4a1affcc0956a14e772c16c1363df211b9aeced", -"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6adc38c7b058994cda3e904674c0f40f30515a03068fe356e0633618c8cfce3d", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "814b4b08d026372e5a8c922c814847f06742d5f27e769e0bc0cfc50dbe1899bc", +"T3T1_cs_test_reset_bip39.py::test_reset_bip39": "93d1941ad5ce363252b3365b47bd10eb933d9f2a96d12cc518fd904a9e193e37", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "834bc00d7405a9061bd0e579bc9ef9bac81d0098e26d8465533e1ef2f5cc109b", +"T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b99576c0410bbcc38c27c681ad365df30f69829369bca07bc9c137289ccd1b13", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "005acfecee63449fc5aeaf80ce87b444508dc02e091050232e100c5fdf518b8a", +"T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "576d26a4cb02a5924a6dea6b46c6f3082e871339ed400e22e8135f3a8a583b65", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3f2cb64c585744ec1d3b2115e53663869aaf8005e3371a681de72d32a37f3c09", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "945e5b4d0f325e3da850dc37c75b175458c4f8d44a50adfac540f171277e04f1", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a3e97d19a9b9e966091b25801ad44bfc09d2ca02cf6ed540825a287fc77a353d", @@ -15378,9 +15378,9 @@ "T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "68c3185780d8976ede424a042d7a9bf093c1825d8049babb0a406bb5ae7a33b0", "T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d7ad4444a3691a2c5891a1d6e5fb142540915048968a9381a09b227beaaad8e2", "T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "966025defcd879d831ef6b7a1bf0331f62d4f1d9a27872dafd3c9ba72d49cef2", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f847c69c460b2a9817c82e952f93f65eb5ae9b9d5375debc38d7420f1661302a", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c795f8c0157c9ed4f774e3a13d0d641ec35a6e7f434a411693ecfa43ee24e408", -"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "493123029d3377e1cf2cff566a30c441bc194e5fbd601262d71567e4f9e08754", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cfb48403af7b3c67c51606072fa1be83497252a9d13ff56318b72f142833e8ac", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7d31d671fbe5c8cb76e58cff256648599db82d8a55c35c01b6a5db801d7ea6a9", +"T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "e271367931f483a13c2e19bb346673bfe19d973c494c8324b894fb2430c79da7", "T3T1_de_test_lock.py::test_hold_to_lock": "b2136906b71a65f5e949f79e80f381b44a5b87e59f67f23ee22767abb588dfcf", "T3T1_de_test_passphrase_mercury.py::test_cycle_through_last_character": "647c3264abafcab0cae3878325582d584bca258d0d65ad8391d2e34b67f41db9", "T3T1_de_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "759f4b7a9c06322d0a83aec0690da7456538dca361579c7403ec71fce2477798", @@ -15413,12 +15413,12 @@ "T3T1_de_test_recovery.py::test_recovery_bip39": "f15dd2779fe059da83e5c3384e3c882fb1f11a4fc77ad2cac2cca87ce6ff48c7", "T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "f62897d9041e6e6c38676cc8d62a1c9c0e08c40877f426c1bfeb366e15ae1e9f", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "9c132785b4d7f79f09ad2469d5f8e427a9b67617c77b297b7d1ddd2c4c3ddb72", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "17f48f0abb54999a763d30a4dd9c1fc86888a54b454791b814f84f8651050f36", -"T3T1_de_test_reset_bip39.py::test_reset_bip39": "79fec4c63285b7abc909e1468ed83284ead35eaf1cbb0f46bf962da63bf5bd64", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "9979d59977efba077cff44b5cd929ad13b03099f23a92b842c4c650a58832706", -"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ae62f69464e452a92fbadf1487bdefb1b7b33c80ddc2d622be3b8f91eea4a03d", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b26e18ad203342661929ffa5ae183d716df186ec5e82267063cd5de098c21846", -"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b6e655e54ada9b19245920eeffe2eb757512c80dcd949d318a06e77d205d1e01", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "b612d5a6af5bb306b0c399ecea31fe86985d03f6f95ae954598e45f5540e1244", +"T3T1_de_test_reset_bip39.py::test_reset_bip39": "8d05181934d3331c81e7b81b94baa24a8f4db336d29e1e7f650b42b38c0c3484", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "bcf7bf99d44844a13b7b473c3aa0cdbdef229013f41a11a0db681a2c8d5a20fc", +"T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c5a72423a04b26d01fa930faf4c300e18fcba8303580e479b52bbbbf0d654c7c", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "34fa7b2ce06e8aee7a4fa59febacbda3a2c93aa75fc5b914b18bb4a595766b5d", +"T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "79cc9a6a7ba8d63ada3d3ca69e40606ec4db280b1795bd6db20b01c337d935f2", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3c731b042fc2e0b2f86391320f30937310cb6dc147057691bc14f52b73e597d7", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a28905faec2a54e67df6f9c67a94dd84ed76fc976ca4e8b60bf2cc7f6ce3415c", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "b77e0edc22959c2d16a403b1742e911e27c7eb2da10736a5969d66583fd04d4c", @@ -15427,9 +15427,9 @@ "T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "a4053424e407160dda2095cebac34065565afb4201092e1b80a702a2536cdefd", "T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "36114e7a5d1f1e35206dbfd3d129b7816b4b240faa2ce243dc6e16a57d764f28", "T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "7bf68edf1ffc0d6d01503f25d2266d3c5ba0d856d28c44ae592b3947761bc12a", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "6ef9917939ab80a901c52b193da8922f0faeaf388dfc6fffa04a787904a02a8d", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "c2fa7e451ceee2968fb6568949bf1c0ca108e9ab04d74192c491d3fbc2ce735c", -"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "fc9482440dc8a8176d69f88544b16a52232e51de1fce70425e48160fb3c29471", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cb4de4d6d805de1ebce4910d503da207879185c978b4cb66a56f146fd2e96af1", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f7d6a0803004d5fcb548430e67a07b277b10be9315d574d875813ad0662cc3c8", +"T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "898f8c5921c5e6fc3d297c375f4e380886bc56a9dea04b5b1a8c028a8b599db6", "T3T1_en_test_lock.py::test_hold_to_lock": "0dd53e59ef70d6b20ad463f16ae28ad18472cd7e26e5bf61eae78b05cb395009", "T3T1_en_test_passphrase_mercury.py::test_cycle_through_last_character": "fd4a49419a8083ccd6ece805feaecc7b25e7be2939af6f05da6cea756d415ae3", "T3T1_en_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "e16d25609a3814be571e75056db6870cd4f8c511b943a62765e99b2df75266f7", @@ -15462,12 +15462,12 @@ "T3T1_en_test_recovery.py::test_recovery_bip39": "d80025a0c9f7c2d888eaad44e5771ae073063ecbd4a59d6e8be6141f2ad1ca0c", "T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "22ba5126dddd99f93d19bd9391dbc88697dd499ce735f1d8db1978f18416d462", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "ef3cbbc66db078e7db645f1b7e1609a5741fc71823a1ce4105414f0a348ef214", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "1bdd58bae00bf199a32084e41a681ae6fa65bdce6efc33d4be1cf4d0f882c59f", -"T3T1_en_test_reset_bip39.py::test_reset_bip39": "a0774a5569a01ab853104483b002fe85e1b8e2f979e4516cd9b532a2d45cc977", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d22f019836e08486cf0d4dc581c79c6eab47599a5f5613ae6aeb7c29a79ed439", -"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3b445d647b09b0d032ea169b59608c0d5051dc0c032f3ea0ee47049087f0a91e", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3b50655712f125adae01ef1a951db2ce33ce5587f1d0e70f6af6ce5a61e3eedb", -"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "6b231fc2cd69cedd33d2528b57f8136a5ca3b9c43b698e3ac20110ac31e6ddb8", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "3a551f8b623311790b430aae9769edd544e448ec97679bb7921791f049927bbd", +"T3T1_en_test_reset_bip39.py::test_reset_bip39": "38af86057d4d922c371d9957d05e8f0974f9a1a27589c3f286a409a8f7b03ae2", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b04c36cfb930c793b4ecdb568da122dfffd0e9206e2671d557759aba0096717d", +"T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d5f933a53b426e452b8007edb64c3e05526e68e8f7246377f708349a1fc09d62", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "2b7bc8347f531c3966134370287e614bab2fa84228d287c96245ef1c47df8dc7", +"T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "731f4030689124cd68f4d541e725c1653af3922b7a0f0118d49fe50f090fd893", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "83dab8b004b7ad2dd1a0d6f56e1661ff0a25bdc18dafb2f09d339b9eea0dfdcc", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d5cf039ee4bd1489039c8e31f8f90d0b075edeaddb2ec22f55543a8e1d8b8a4", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "dcd00ffe9769bd57777fd0480b86020b2c1d837f901853516a3fe50fbbc6410d", @@ -15476,9 +15476,9 @@ "T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "91a394679fb03f54f591307c09ca3af442985dd90042de2b26abae981a1062e1", "T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "8c9e39c583899fe215ae1b4e71d66ba42181246fa976da63f4bed172d1c9bf76", "T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "1bca8c9c7f748d36edbbe2eb5ddb161d26d3130e7afd03325450a8b14531bb69", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cd8177dd73c1d2c9a67c52a41411f70306dce132350aac62ed562e8fe8d722d5", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "93b2d6699297680a491576955854d4819b0d9322423c2bb4c52b110afc6dd3c9", -"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "ce88c67bd11834bba68e564c2641a3eae658b995e9437229bb763b88eb8ca8ab", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9d6a6457adb90933b06a63a33be99cca3aa8d2a8d314547ac2bb4c144f2f4782", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "73eb055845fd5e29d8f188e549f2b95c2e1bd9e3e13b38d40a14fd3515eca7f6", +"T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "03fc313148f107de5e8d15ca6c8012ca94d7cc16febeaf2f581c6824247e4445", "T3T1_es_test_lock.py::test_hold_to_lock": "22121f35ab8ef5850185109c604bf540c3a7691b7a61c46ddbebc78e36e59ae4", "T3T1_es_test_passphrase_mercury.py::test_cycle_through_last_character": "fe4dec057596e15594ebb7919b467d3fa91315383f720083bfe49de64e864613", "T3T1_es_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "ec6eb66ec60195362c8ee217c1b20e3305da4487cbb653341360571cc3ac4613", @@ -15511,12 +15511,12 @@ "T3T1_es_test_recovery.py::test_recovery_bip39": "4ab6e088de9d60283c6a9bedcd39a9447cb484c0dcc3792351c620f129903078", "T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "b433b71921e24c77d6860fdd5c0c2648d3e3574ed3ed0becb19470fd1bc781ae", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "77ee2df1a216bbd3a040523ec0904384653f5bda080e77059b99715b6a297cad", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "9853ef21f770b3824378f4eabf17c1d90542479a6e08c988a6ab82c4ff8347ed", -"T3T1_es_test_reset_bip39.py::test_reset_bip39": "be3ebd0f242fab2389e6731d1ea5b16a4056cd02230b3b03c12ad1320ebabebb", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "bc71dbd136fcae1e61e922398f8fd5734ae11e954ec16f09272390f5015c8cbe", -"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f70bac5e99513c1c670a863a5b000fc80f1c5a3d1afc49424a495183486a50da", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "21349a580c60aedbea800316d026dc2c6e3ca53584e9590f4ac9314b64843aee", -"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a03cfae53a15478c8d7a73842059eed8d2a3d5bd8b287cd97a3483dfedecfc44", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "4713a3a4d39b6a7e8bf764dfc7c57fa454ecf4b1a253981262a2241d2fb11c5a", +"T3T1_es_test_reset_bip39.py::test_reset_bip39": "0dcc22c287bd99765d79d3d393d287cfc70002213aea2679b5db004efe5da319", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "09f477495c1948dbcca337fca741fb720f18155387d79690ce6fc4b4e908c99a", +"T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a876586c9321ebbeec3cedfa926573b5f4fa42b0fb3969d781a3d0830e4dce10", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0daf9211dda6cf4db8fffd16aa39f9f772554fcf952921816782e4fcc4cacf61", +"T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c4f842ca9bdd585eea4e55c2c6f22e3d9d0915c8368b7ec93e561df25a86a470", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2695412f733ed741ea4de2fd627be6e9ca5c48bc8079ed52b54adda1a828e2ff", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "f750821c92d3aa15d2f0c370d341e4905d4400f11ae368f02efdd253fa3f84cf", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "f2c4df9d57c5581f92bfa0a41b296d4765abcaac1be016e161242cf88b04a7a5", @@ -15525,9 +15525,9 @@ "T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "5082a965b4ba4fe2372fe280326d05e376be3e521143d820547c541f61f0361b", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "c97f5c38ea479cc17c1e48fd77d7c7f71a8ae69725d2038d779ba0a308a03ba9", "T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "8105547c44bb473bca255c9f5f6f6e9116dad0ef2e1d21e216f7a63020a6c8fe", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "f3b673ef9b5f8dc186eccf18ae424aa401e5dac927b85de11ab221dcac01268c", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "82b39aebd2dba788c07e775502ed9b62afcdf8125a379207df2fb2391f3abc75", -"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "56f3a131657dc659648457a3784585739ddc5761a59ff34c30ad450e8e2e62f2", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b1ea7d079c24e6411bedcc213b5686b8181d34c1218de2d3ddec6ed0ff2d5347", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "cebdffc0d599eefbefa4ec6b420defd3c3b9b2a3f764a1ea956d9c0dc3c7416b", +"T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "452069108c2b3285efd6f7c0d9bb4ac4a50090e8c229b4aeaee0d730b7911776", "T3T1_fr_test_lock.py::test_hold_to_lock": "31961b0cba116a3a786e5758e4753f703fb9b8499d4c6cc7bffc8a162de70e82", "T3T1_fr_test_passphrase_mercury.py::test_cycle_through_last_character": "805f240368de40f5d64dc5e07743a4164c9a577ea11ff02af291a4ac83cb99a6", "T3T1_fr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "2d1d8a838ee6f60713349569c6948d9ccb2e5c3a4e8621243b614a1e162b25ec", @@ -15560,12 +15560,12 @@ "T3T1_fr_test_recovery.py::test_recovery_bip39": "ad346e6b6f0dab29d4240f7495cb92b1546b8f545477ec02c03e6f25545adb47", "T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "0f89c01652f65d814aca2ebaec766479cf362772ab3b1e06fd7f9be2eb281d26", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "ae737b02fa5dcbcb89d4996f81305ba07d0cc13aeec289045b94402074a09576", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c070782c58a9fcf97445daa47c2dd0c152fa8589b0aa6b2ed38f15a670b7a4af", -"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "8ac5b9e2727c2b483776b4299fb60ac7ae04d0b2fafd6515d35ee2ee40807ddd", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "f517156acededb8679ea50110d4874522e2f3678140d1eb3429bad4c5ed041dc", -"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "3773efb385df6d0b33967fcdbb47e5613b50d5d5c018b7a8d632b8569994d93e", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "1865f3547ce05f2f6292b91799489a9f64c888109abeceee0c1d286fa0472396", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "7e365c6c97869a8a8603922ad9df4f2abad3bd8a451bd2deef4f43876cdd58f1" +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "2bf3386dee3dd696764a4f5f59eaf76072b833cadc9c7a79496ac722c21458c9", +"T3T1_fr_test_reset_bip39.py::test_reset_bip39": "7c0ec2b343c28d167670e90cde9e41e007cc0a892042b1a846347ebb06a7a791", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "046b4d4f6c9ca3491a9bdcecd25ae80d4ecc41c189dc9640331ffeb5dab40030", +"T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6e81831b32542ba19822375c2c7c780de6130136f77f39f4022ee43be6bbbc59", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "fc6cda5bdac795155c67cafbf523b4dbb4fc553fd10f7d90403e19c6dd9005ce", +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "13826b2a715342d5df2c4665442ffeab1b08808a56bd3a40bd786a60d9223fe5" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "5cfc60601705372057cdc48cb73a2bfa596c586fe3214e20bb68ac6859c54537", @@ -16577,24 +16577,24 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2f1959704c7070bfb99dc9055557833162a58bf13a0da471c204bc70156fc9cb", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "139c4026e0187291bc3714796de4ce3bd012082c58f0f105722c8c1d34e1c2a3", "T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "0d926628d631a76f1360c031e1567c7860d5f211f86a81d6d5f8afb1c95cd1ef", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "aaeef7c3aa2857a776bcca3222f0b1a2818713c676eaf4459165afddc664902a", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "37a23dd922ae16fbe278c1bc630ada2e4087fd1bfae5fd7524bec457840432c9", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "765221cfe2c0ffe8db41a9aaeabd326de36e24dbd4734e72ad2e51342352e8d9", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "244c805c3c65f4ea3340ecd3db67c2a9eb47034ce26a7b0742b20779b40208ec", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "32d8d204cd3759256f8541ab0799864ed76ba1b2d315e279e0b748cb59aba70f", -"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "ca58c522bdf9f390884512b659b2b65f6736305548a4da0c2f4cb6418076115b", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2a42ba32c22a866cfc71ad4386b8f22c6384bb0658c535429e4b14ab9bd7c9ea", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "d597af898dab4d882e83691035b4203273196ecbcceccf76ad817ea93d47d456", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "fdd564ba45c56687218b9f023c24a74ac1f2a6f5b821f4f0f27ae3b5dfa24d7d", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "64b09da1cb9011cb4ef5d24b632781f9abf32d81b207d02ce6d5ac9f010a24d5", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2024e7541334fc13a42fc9bcb33e23178069ced0b3d053b49d2a62390c83742d", +"T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "89f1723f613a2109edb8f118bde313fcbfb82c1ad655e9e689f5f7ac8bc9eefe", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "f32467ad7e6835d555511902977d25c3482af29a4021a6a0ee79ef5c5c3d42f1", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "87c8836b5a24e5db265381d68e9607fc490f604c541a4718129bc9a8bbebffdb", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "0a9f6f8c22e31c0efaa840060755279d4f9c00fd8661ccd276acc1b125764970", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "52275843923bd3cf4c6abdec9328c5c12668b990f6f60a8f706eee7006e41069", -"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "01b00ea17ca93683b6e9b4a78af4053388305fff71597e67cd7277a22776bf3b", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "249158de2df0162d5f7caf23b486c893285d3b747c2744f1ede27c1bd62ff977", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "bc095b9784c70a73630f5bc0a66e0e8fda6d49e7e5da750bf9cfc9d208b03902", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "605b578522d6627a79c13f90d72c047bb324792b8eb23275468b0bcf1fa8703b", -"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4f4cda6765dc4d4bce5a0a7cd5e1b41b24a9e5e7295b0ca8d38fa50ea600fc13", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "8d0cf9321aae6c5b2c3a4f613698a0578cb88295a4babeff28b6bf91aa464551", -"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f10424440a7a572c6d65fb27a34e2cccbfe24668e5da5d9d69f53f2cd9b1fedf", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dd0c850e3041d93ee3271a5f89f5234923b071423bc7848aaaa7cecbb257ef5d", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "93cf9d74f37b647c900e59be98a7f05ec73e03964058ea9325890b440f3c4c9f", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "dab6c78840b4079303b01360b886fdf3f7d9983289b4cf5d785e9b97aae492a6", +"T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "10baab4b3cae026f6e2382cbbfd6c0bcbf37e27b57957bebe8a6d2067a6dacae", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "29a537c67cdb93e39b0f92b2cfeaf120ccd843680d13d19a57955f799c4f27d0", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fa31902ff0145ec23e5171b754b11678facd590d413fbd36c565074765de981d", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "12cb46c5d48bdc342e97345d13d347ee027ca184d4a2c2abe3db2e3890410991", +"T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "53134494ba83ce570e51c70a2ed11fc99e8e4bfaa4a736a630c495688cf7b1a5", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0d06176a67ce460fad6fd8269caab5854cc43f4bb557f1debd35647d9cf2e255", +"T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e7e51faede48870e1abd2cd7948d49c36b048c58613de2995d3fa1db785a0860", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "786a4ff04f8fc543645eae6ac33075a08c32efd3d92cb7b95f5746152902d149", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "388845ea867ae63588eaad720440148f60a5d2c0a29a4b6831e9d399a8143641", "T3T1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3d8bc8e1613153a51b1bf2afbfd616b2908e6ef45ff2375251fbf3fd92ebad1e", @@ -16800,14 +16800,14 @@ "T3T1_cs_test_msg_applysettings.py::test_experimental_features": "c9cde0d61c26889516c7d875004af6f40d37a8e03e6797d3928dabad4d3e9edf", "T3T1_cs_test_msg_applysettings.py::test_label_too_long": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_test_msg_applysettings.py::test_safety_checks": "0eed526ac2842f7e35e9c2cb5684d622178b696e1c834661c62224691a7992d5", -"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "46bc5f9babbf32d0cd733bc85fdc3ec305c929efd7196036000e323341e9c0cd", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2d102ded852007515950693358f536b788b2f65414e61623d150e8e184968460", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "37078084515be549437c8a2314a6caabae2581dfbb62e680e8e5ef58b42dcff5", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "c887a55c3c1f205137196a7960dc264ac40e757c0bdcbc7b07df1886f8bfde2c", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "b57460aaa226fe01d39efe74a58e91489b772e2c8d573437e0072c289a0c3f90", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "450b52ffe6ca7abb25d469f5dd97e4f97fa8353c39bfd4886ceb480949fce68b", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1a88c5b273d78e985584fdd5e9b2f8a2af1c57106898d1d04f4856e54bb2c528", -"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f8488e40c2ef12caa4e44b6a2d43864e02636462d0de215a553aeab24fa1d61e", +"T3T1_cs_test_msg_backup_device.py::test_backup_bip39": "9f1609c6ee5ef740593d02933413a3680b51b2acae2dabb34e6ee0ff4b58d973", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "f1c399fdcf21dfc2cb5c6e073f1e0e6a6496c0c6b1ab39e34029e05b0dce730c", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3e39e7a57efdc6b3f84720c3cb203d35d69fb096a0d60da279613d2c52ef1754", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "236fa0955a134f3ca8d70f5c407d9c529a4b2214cdfe9632aa976f5a1290f143", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "100709421c85db0f10430b92ae3d76ca60b711dd3870c7a7c0e4a375de604590", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "2d5ab76c4154c3d9b7d6c8317ea029eb486834400f7ff7fb58c1e2329e99a6e5", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7b48f9e33f928f5b285c3f0324eaffd5f7d0ffe2dcec9cfec203d15e09bb2491", +"T3T1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "435586c172930423e2848eadad54e0a97d9344cdbe49ddf927b26937b4233609", "T3T1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "6ec2771f7959b0d0a6e7beaa83fd5be2c1c3eed51f103c72d3ae97b7e0bda66f", "T3T1_cs_test_msg_backup_device.py::test_no_backup_fails": "c9ca005679502266318da239e432a9661bb71967c41455abc9a78ab14ab16588", "T3T1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "78a223276aab0b863f2b77d200ce0760acc786dfe83577df6a4642ae5fade030", @@ -16858,10 +16858,10 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "4489e8907a840ef83289f4ce45146dd4ed59d26502af93eed4e379b073842eda", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "d806653a6d4bd2b71c8b2c1995f56875115783f53c43be220e026419df16c1a1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "4bd90276272d0a3ef71aad24bf5facf72bae079751373abfd007258740346367", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "e1657c2cf5e9db6f22289e569b339f48e8cd0b33b181c6d7b5e606542d0c1ed9", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "da536cf73d2145e0575963ed6b999763f6ce31742890a421b9f35d1229459348", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9e611d70dd56257b7fbf85f1c05c0f378228c03b5691b00e2d2b107cf6e58b58", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "88a7d99f84ae6bdbdd45dc680814370878f658ccae2f5aff24ea97c85aaf9bef", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "c83b4f4563fdacf5688416eab3bf0eefec5352243e0432f3fb92a71760b81425", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "9f3174335248eb1936cefa08998332f426fa146ef741199c58f21e01f8110bf2", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "72ceac61ff59e497157a15bb0075bc916bf8620a36c5329900761c69b5a8ba13", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d71ada53b400796e0efd336f707b5e134f57b29f313f53559b6323cb3db603c8", "T3T1_cs_test_sdcard.py::test_sd_format": "76c7fed29920e2339f0f29cb9545474bbda504712ad06ac0c44d8d767448a35f", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "19cb5bfc1eafb2aad10f899040705034f5bbaa0104aeb455c08cbaea044ad4a6", @@ -17923,24 +17923,24 @@ "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b9123cb405619c99dd1fa740f41343021f7642db499ef290cdb7e0d7b337e6eb", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "224d1b5bb2c250326d834ee6b584a023eba1ad5c1e070d69c6385f861d34e462", "T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fbc46e8ea32dad57600f9f4d5e10cd8a60fcb54807e41432b811bfade913df12", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dd0d48ba4e5f820250f0515954d1f204d7e29c818de37dad0e337842dacfde81", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "8068078c957085d5d5999bc56ca19501720dbc0095ec5a4070ae1499846edc98", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "922908f0935d39acce105ef7ef3b1bf34557635c692da7a833009d8734d8bbe7", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "d4d4c18d0a755f523af0254ba8479d75a7816566d29c5c00f1ac92ac0b464fd1", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "33281fc3f8fc26f891dc9cdc45774229a147339b9d89840f95352ddeb7a3d926", -"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "1a6d3d8711b66091171e824f524c525b2c997b0e7d5e2d002ad736aaa7f726d2", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "946b7d98190e282f0a8545a7d11f143a5faa5645485f3c3f224ecbc783a7e55b", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "72cb3756c7947395bee9bc8560e4d3ea721d88a92c0069fd6a604702876f2021", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1e1001aca0b3f59ca7addc8b93c142671b67028c7e3e8360559ac11f7cd26b8f", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "f2369b4bc86d59e4bb24f9ffbc8ee622cfcce6aeb8c6329d8c6a887ef87f8df6", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c09a20b9fd3a52f1e8d7a0f5a410e58696466ea5e9a3c1f4a57081b6a94dae11", +"T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "1738fd456cc223bc27fb31b4f99e415bc845e3b74b267ae569303277bb2c6098", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "66fc33cd2f5978acd01b8cb4a7bc911c8dfb3c80a757c120f43fd20a2b6da22d", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "a9a8b6ad1187e39044b9a9be38dd37025a450599ff7cc27e80db2c091aa68933", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bd093e21edacca6aaee4e4191ec199749d957b393a932e92bb85f8f34979512f", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "8dbaed3a7dcebb1fafd579d8e895f9bbb80fe9fae7556f97217a06077f755eb7", -"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ce8ee7157dcd5af873ae9f41260296c1045479fc18787e4e18b7dbcceb6d7ca8", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "03a3b751d14f7dc633cdab13c94b93b436027c083d09a2f72147cd90f6bf21a6", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "efb1c6218e53909031325ab2954dd3d5ac14664f5824c434796d3aa223e79717", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f86e85104c4a7f19106323d7dc5f62f06b1ef5461ae05830941803122fb507cd", -"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "0764c093f703fc3805e72ead0c6d874083ec5c374f112608964d0c05f2a1614a", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0af05d99cc358d3fb7279253280935901f69b57b6e88a17014e8eb1a9bcd9bf1", -"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "de5204afe31fba17febe7787212da99229dea29ed7b535bda9d3d7331c734da4", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "b9a46eb962e4d3a2fd47690e074e495b2b973e454d6e9c55454df994d9a9beb0", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b56cfbf3f21121954a8583b13dcbcf7f5dff51c64b3a2cf3edc4f28b216301dd", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "bc545316c3935bd35aabc53395b467a976221bc3eb4bc7d65722ea53c0352c46", +"T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "68d37244d32d15ed45bb58d5de13190e4efda76d3687df6f537cc0584ac57108", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b4a7500f5e8604fec09cfda56a25cdcd5222d632c0d5a2d6a73b660021c7ee21", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "65a20cc35914964c25bfeb87953e49b54eb04880e8a4185b38da1c7893cfc0dd", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0bdb85efebc3b8f60199f857dde6d98167ca977ff9881a81b1706c3b2ba8bb44", +"T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1eb438ae73479824c347fdf888a840169c4c86bffa5d65fd259733e71dae4648", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "e488904453ddb309d21c344a484d28bddfbedc212ecbc211b99ede63dde5a7cf", +"T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b92b6fcb1e6a058ec189e1227ebd08236375441b3aa9955538a49879cb1faa47", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "f23feeb1f495c66872cc7710c0b9efb6ff61ae6d892341a7563084b4bfc11d4a", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ac77d26f757ee7492e6c0395fc5290451326a10e149f67673d6f4cfcc060966f", "T3T1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "8e7259a76adaaa9da300395eca4ec0d621085229eca92f6248686c348787df42", @@ -18146,14 +18146,14 @@ "T3T1_de_test_msg_applysettings.py::test_experimental_features": "6ba91290c4610b4df056dae58397cfb7a0fee107ba5e13758dcb54c43ffedbf6", "T3T1_de_test_msg_applysettings.py::test_label_too_long": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_test_msg_applysettings.py::test_safety_checks": "1a665973fa452a0d05ced007179fa7d2effa8e1abbda4460eb4678b99909997d", -"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "47478d72725f206ec8d3586fc7f4713c8ae52b00a7587f9225ece9ad78725358", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "45942618de89a5d3d2ca47b3497b532323631f709a0261339cd96fa883261136", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "32e2740ff7887700b9792e85ddc037cd87f1be547ff0b123570dbe9cd077509c", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "09da46dd66f1818718d43f7441784b386e76bdfa52fa96a368b3b5c39c99ca22", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "63a4b86168df6529c400850e0239036ba3575b7ad43e1a32b1aca82aa1148265", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "a99db48f5999cf5b780bb7a4091387c7b500de5a72981f12c81622dd33721037", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "90d56c3b300cd07b950579188fb9d408df8a32c82f77dad20c683915d75ac189", -"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "c2011cf42c3860a2cd5517dd8604a970f0d31e53e51940376a5711102888f51b", +"T3T1_de_test_msg_backup_device.py::test_backup_bip39": "a590f1f0832207630fad8472e410706229ee0796cc6b9f30965fc60e9d92e795", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "768a90f01ed243692ae7730e33081545c51560ea47a2c486de2b416d3c6da281", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0af2b9b57664f1a28df898de11ebf3396d7cd4268284e4ce7a23e0eae2bb62ca", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f1d6cbfa7748eb45fe50f99ff9ad57641b5963af471f6e0cf58fc1909002a83f", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "36f911647cac2f453a07299965ddbac08fa3c81f8420b4b15d6a2dd794561570", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "ecfb034f5eadc112eff23a67445aaa00ecffaeb0ec9efa3065c3d16bfca4fce1", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ddab12bdc8d9fbbd9cdcd4bcb34e001a28ff07c7785f3e7638b445d5a25d9a45", +"T3T1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "5ccd2d94a0d93b34ddd037168a222bc3ae49513c9c20910d4efe04e402f142dc", "T3T1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "46a0aaa1de9d5768ec769aa75c050cc6c3f7f037b54d191336ccdb52b12d716a", "T3T1_de_test_msg_backup_device.py::test_no_backup_fails": "3c27d51b28767f7ef347d31c482c4cb1a3a0e857f45d2e249ba59767d8622d9a", "T3T1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "e6a54d638aa25f453abdf38010d281a1efbe36703913272e4af582d94981e0ba", @@ -18204,10 +18204,10 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "47f6e4a3a24563faff2e25b3b28377298806494cdd8b9e90f2f3fc144baf9473", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "a35b3bc3572529dff2fbc9c2fb6d7eaa5bedd362330ceebffdd042bffa2524c1", "T3T1_de_test_protection_levels.py::test_wipe_device": "ebb357b41fbdd0d78491a5864c12f347bea2c08f1b513caf30c45f6e612f2883", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "18d7dfc8e198a3dcbef86df017ba7c192903787c7f7a82b7617ba66035f8040c", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "03d2f9e499b75ca3907da8c39436535302a3c1d1de1069fd9390d72543764f27", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "17a05105f9560e54284e4a8cf62ad3c15897e3498863a66e714bea07d7015421", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "63bc1bf3b040ae47098095bd715628c8a807272d7d810152fff6f9573831dce9", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "9a9731f9eb2e1a8a0bfdba9658e0d259e5f6cafe97925b0a9a92f6615d1257c5", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "634885195e35e0001500a39b7c1f9f54ddea9ef1a9fb8b4edab45110559cf24c", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f45eef18c613d9844ab1520d9cf50aa838e446a684e2844af38ca929af3580c1", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1e905d67b52d1b6ebad061de36d8125c53c6d66d89840beed96bc53776d7f47e", "T3T1_de_test_sdcard.py::test_sd_format": "deadd27fee071017c0cc6e1ef67f8b7cffe94502daa8168b042d1301175477b5", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "1cb949fd3c8d1b1169732dd79133fc25aec82caa6baf3cc54a585181cf825cf0", @@ -19269,24 +19269,24 @@ "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e02bd958760ac51cdc92bfe98a7fe1bd352053ef022519901f12e342e3cdb5dd", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "bcf2d76c628d19cc576b84ae5ebf584b74b962671a8c0c60037c61f74b41bf23", "T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "adbe9651b01e32224dd318e6f0e2aca6ab83a3b0b283d621607412d95cfe5deb", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "dab9f5dbc939a70d74d7cf892c8765268c7b044d2a982aac161c0d8d428e24e0", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "101d6ada0e92e2d46378269a9845406b19f9846de077cfc9f9203b062cade36f", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "db10660c23b501d20c2c7640b564758b33c9d3eedbea8193d1f5937cf425153d", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "7be5debd87bc75397b8dd6cdbb241287a3596260d4afd988cdd242e681c2f605", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "a74432975d214d678afe06003df550d76692229b6e4be157f2beebe48fd9aba0", -"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "98fbf4f03fcac8bd3a429e443033f46498f903f4b010c4ba5a56224e815341c4", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1eb695a3b031f8f14a1ddfe94490a6a1ddf12ac583044b58b78d20f0318e1468", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "540ed9c7f0444ba3ed47293cff06f305ecdae2adc82435b3bd04c3bfca2dbe5e", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "870d4a94a01af78e7f88fb3d635a556721103fcf0cc3f7ddffdbdfb88eea9226", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "b2a61ac3c4093de036b4e69c83af967964a22ea0a6654cf784600bda8ca93d43", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "0399e0758ea2457628dc1e92775de847e94f40210a0ffd7af048e8e68313f5ee", +"T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b0c3b04d5c94babd84ed22ea1a0b5f7271d01468918105c44f8309f2dddd279f", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "954abdea6bd7631bffdfa93d1129409adedb07cc9069d42198ec74ca617b6bb9", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8fc050d6fdd2d3b37d07c46c884605b875fd0f0a7a6ff9dd9ba0fcaa56a18ee9", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "ec64c8c0cde4aafdb1d5b83232c47e33620f45bd232a9cc44df4b50f3777936f", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1a49c5a41c127c9ffd2a5c597b2d29e338c2b6d8bae8658fb2e2793894327716", -"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "6fe22a11fec54327631a72dbb77a50b4752f6bf25c520d4d5e34365d4e0dd1c6", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "1a691412647be159cc262fb4b0b6cecc47b57d159d4aa8eba4e219a8b4054774", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8608496c6815f89998b2668f042276b40ebde3715a496ed83103e68fff7fb6f4", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "11717c56f06d6f82ab72f4b7681d163fbb81905dba787573e59fca37506bd712", -"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "951e1a39a1549b3ab20d44eadb8fffb035947dac52cc5cbed8070f353c6e0041", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "61a13248da3ed86a39ce66da8dcd57677d14b142a96f90cb05be6f0a8fed081e", -"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "4bde62b1aaec63eca05b222fdf5446afc3fa152abeee290ab9d1c6f4b1561c71", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c826d25bc1604005cbd95d5dd74f15cd0683bb05c8858998083ea24a7cf1cd8c", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "67c086b823f76aee0ea4d215d0f9e52cf2aafb44c9f2aff39c86aed33a3308b9", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "97f1a7d378ccb2f4fe73d8b06973998989773cff165e887098ebee7db1d47377", +"T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "465fdd641e5a07060123ab705d6ec55fda4dd322a06daeb8bd6bb5559de9bbbe", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2c21a92e53c97629706b826d0ba6cff80b12423749fd05b433d270915d98ad33", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "59e6be183a8f8a4ecfb52e832519efffa0d0cce1977eda6a6452514e9b4b391a", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b4c92c2509652e900c3f9176f6039c1634345bc59678fb93a96b70601433b4e2", +"T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b3b93bdcdc089eeb9666fa68d97766014892366ac460d9d849494cf21c9c5577", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b71fb525c300fd204113534be4e3e7c06425d72d5d2e15065af72a774b0a6220", +"T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "88937dff65f3c61b47436aa69bab78b2227de21f177d8e525f195a370c5be157", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "009f4d31a4c23cd611b3aa1b3577e6758a5ab67bf507af2ecffa0526191e177f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "81b9ef3c491de698533eca5e26e417942d03971c547cd9facae540dfad8a8c4f", "T3T1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "1cf51af6c1d26e9acdd8b3412bfec28f632d5a2f24783050b643a6828e9ca74c", @@ -19492,14 +19492,14 @@ "T3T1_en_test_msg_applysettings.py::test_experimental_features": "3ccd6c5126d5329905391fdf8e270a3ecfeafb4e87d42ad3d184275e542f6cd2", "T3T1_en_test_msg_applysettings.py::test_label_too_long": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_test_msg_applysettings.py::test_safety_checks": "9ac2948f5dc0d41632d5717811add555ed1f5bd5b9670a1296427a23569b8ebb", -"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "f5d8efb15dfe2b4542ac65f405fd98ea86359573ed95ac8f7c8dfa9fa7c19dd6", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "45e9f9369965eabaf9fd1dcf36e3bed32f330ff9e49d9d21c217befe820ab0b4", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "b465876b93cd836f2ba078a5b529975bd935acd5006da6bb058cc37a84bd8274", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ac3dbbb192002f360b84c8ff103f794d26a862b62b1e781b86014872e1839a64", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "cb7d3c4616a6f50eef46e9e381af6d95e94b14fea6d8e038db181cd376a00305", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "3557bcc0bfcf3e451d5d70184dca5c650530d54d902ba90202daaf5c31658d5c", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "5ddf280461559ed09903b1e9ed061452b67939b4d6c3947456a2a371da3eecdf", -"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "00e79d25f914d8fcdf173e1b8f00c92eb254d6f1ee7db38cb7449b8b07eeb714", +"T3T1_en_test_msg_backup_device.py::test_backup_bip39": "c4303a2df31941bc07238485c7d9eb3079d0ec0a0743140f901938fac3afc666", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "dfeee149f0625889f7be1e4c4be233f6e5867db7240ca07b10d187ece1b83fcc", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "0008fb2a3e535f689fbfb179f02b6016f09d5db1a4e71b2ae06a255ea84b5d84", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "35c7d3ffaf732ec0445f62855b7e40c593e4051474d9b7b18c09de7d5988e504", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "4cbf4abab943edff4374b168cba58983c46eec2fe14012b5c627b9a7a4baa552", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "e461a5aac88fd87f4aad64aee0fd22598a1d25457dfa38c9677254bb710f09f3", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ca57bbcfde21ed6ca66e3ab3b4ce98ed85df6d76d41d02d824a7d66518b70d23", +"T3T1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "2caf4e7e8d25ccd41e7bf6819e6e9f9d0a9485fffd139bb3372244cb2e494251", "T3T1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "6867b3fefe40bbdf848693ad940eb096c9974e57e476f1efa9201c30502ff621", "T3T1_en_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", "T3T1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "9ad354ff1eae2748d7900efd602466909ae2bb0895aa83cfa8a61f68e9f2565c", @@ -19550,10 +19550,10 @@ "T3T1_en_test_protection_levels.py::test_unlocked": "93d9edc9f59c738f0cb083e96f464cae99fccadbd3768a1c2a11258d8eeda9e2", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "7f26c6d11d1b8f56fb290525490665942b25e8ca9357186c5e343f58a18b8860", "T3T1_en_test_protection_levels.py::test_wipe_device": "2dc2c452d2907afc48d1d622ccd3ce692ab3633a0a6e425bdb19014c669a237d", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "2841d2df5100309616abd1f2c3d7f58d228cf3b79ac78b88b6fb03a7241edb1b", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "0d38afd539213b25b854225b8be2e8422f94f0bbe712417046d1c3e4adc808c0", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "36dcd8560838fafe6b45a60fe95c19c09efa8da40055beb4eb7fb35b77a60bc3", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "2dad39315c25a0a9f54934b78ec631b96e310b536c5c5c3fc502a875d13e844e", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "b12734401aedc7756ccf09fe7dfb04bb82b2642a4f8c62893ae63fe90c1e3c24", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "145964c6bf8672f1ad81d4786de757937627a1b64788405d4e681241731e0d93", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "07998e323ac92a6625ec8b0505ec99177cd4ebdc921309320e1a19972565654c", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a1b3eee15f02b6cec258f349d42e2e2d6f7c535d9105b5f05c54465391b73507", "T3T1_en_test_sdcard.py::test_sd_format": "7be6fb799a7ec5d2a7812c8e0e57b09507ff1a33ae151d05ab8e7c627a2b0532", "T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", "T3T1_en_test_sdcard.py::test_sd_protect_unlock": "06c5df1542420ab8f04e9e048042b475f28459607a5d8c9bf15bef9d0f320af8", @@ -20615,24 +20615,24 @@ "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8ccd8c6ac6e2b9800c1d63f4afca16279984882cdd3463a9fe434c3d25936f43", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "b5bda9a41c176f6f1b317c7401f65533905e6c2764f23da1931653c48782c640", "T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "25526e25d51f7f1a6b80423041a9a6462775356f04669f1f4f175cf071500ae5", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "9731c2a43c76035b2ba266400a0f7fb48d9664b684f2c03c6a1997e8a4d8c968", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "0d7d582b5bc1e2eeb4138c73bde3f477c9dc773c3049f1d3ca61d51378fb0f95", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "3593a02883aa2df4eb2264bd6253599da3a6e4f697b9fca729912c8478250b37", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6ddf2523e77315afc51ef47e99255bc5283142da0d30a27128007b35f434d37b", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f3d9ea58b2e8fd1ec3e01cb3757d6dee135d45b97a9868346baf6957064ea950", -"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a761c7cd84452419572c0dbc65ad2320be4d0d90b08fc5031f34eee12f7e49be", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "365b2f206f400c5a1bd1063aabaf264273df4aa25c08c41a67993e48b12d5795", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c22fe1803518906f0d67bee59f5b97534c63942d2bbc16f567d3e1ca8a27e509", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e4d72560eba9680b3ee4ea7b09021cc95afb9dba779dc820ba4bf8538f369d59", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "93a3ba83db1ebe1c41c2e212a14dd91e4e9e60b29af183ef53caf9e02c5a3d22", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "c65cdbee25c0eca554eb434da92b96bdc6befc86ca0c56c52229b095b0ea7274", +"T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "485a7eb899a7217ab1d3fba1dd82f5e3610637b8963c4e5458c67d7a8c8aa0a5", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "5c493480c2be8018b01844522d0adc6307006d94359f641147dcfe9bf5ed7a81", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "dc53105a6b05fcd2d6ceb4531ccf15a8617a3450db89b203bc827365ef2e14f7", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b2b3f5d920906e794b491568af6103b8b1a6fbf57ce89f325f892e3d113e3833", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "d14e7406abeff6b48c9674b9ef2c51528b76b419d6ec1688240fddd21cc04051", -"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2b8712dce67fe3dea95754aee775c651cd40cbd184221f440e9ca41da4eabce1", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "8923a59ab4531fc987c8965592f2a3fd8fac4b4b60846d1a8e3c08bc13cd2bd5", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f69c838933730806c344c51da6a0fa372168a215395672f79f8f0ea6ab09eef4", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "bfc719fa54d4392153c9d773ff627bfa2cadc05fa3cc04232c0fddaeda3942ba", -"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "a4f2dd7a4f0794fd21891429a4efc75158edfdd515f0dce5afa9ed238a27d63c", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "103f8bb4fdabb28090ca1e21679c4bdcb6e49ca800a47f0f5f71dd877c569996", -"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "dd5fc347de8f95cc2817d8bfdc21a2b3fa4c048a9f66a09c15d876b90cb04172", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f73f65ae6488e75dbf1ce48ede3d45feb21df53088c5b6b77e5ae668127a8d7a", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "3b3f60eafa6ba55e31231dad66a5dca4243aa5b679282579fa08505d42e78ec3", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "adb553bf323a959262c38562c4e76e9d4257bda2ec3f1eae7107cc7add23c6f3", +"T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "4047e344718b64d93dc7e76a77a40799c241e29f5ba84317391b06e5565ef261", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b5f1e44295ce5e72bf4c1c53b31c123892b26b8ac878f8e57c19381d1d608f4c", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "3c419c359eb48c217e825704d4dab5f34de5c361a9a70acd57671193274dd3ff", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "04750df0b17ff904462a696796c5f2e871606cc1d8086dc8845791b87fb2bcf4", +"T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1a8b04710690b8b55ca712b7aad50b643887e639335b031dc60ae5318a09604a", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d5ded293d44f50ca98484ad38ca49cd90a0662610d9420bd90e275a843cdb27c", +"T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "5d72847afacd0203138886c3a6f0fdcf0a7f0ad7ebadf6e2ff606b0c8d654304", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "89bf880bda758eb19f52ed52e067db9eefc50ae733ee22b5fb588c1503bff329", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "225f1137de97158d11ea2764a86265a4e3f75a79b8f513fb2ecea8727040b5b4", "T3T1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5d5718a47541b038f212f045964e93f42e5465399399475494ff8e19231d8609", @@ -20838,14 +20838,14 @@ "T3T1_es_test_msg_applysettings.py::test_experimental_features": "793eb86c560124fe0ab6dc5eef7ff4ba8634519bb4b684b0c2c4c0365b49d07c", "T3T1_es_test_msg_applysettings.py::test_label_too_long": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_test_msg_applysettings.py::test_safety_checks": "0cdbbcc9774b858e0694802f24f0d89241b7c675a0732bd3b39866d17ce000ac", -"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "536773ce669cf1476f03f7be1acb26be08408f2ab7285ef3d184464c33cdaaae", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "001dbf9765db08a1e113422cebf28dfb61a3508e940a3925c639dbe3cbe95317", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "2bf435c3f79b982f82487d057c412f05e954e911d24566f7570def343d2d074c", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "7e8d0ab960468b2a2f1f70690518d546cf291b240027bf1ca8473ed60c18dbd6", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "ca2316c40860e8b1fa3c01e8739e7be9fd94652e40ee6ebd6708d363115b82aa", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "381412ec20c743abb85a932f22190406bb2d0c0850bee8d549fe940df9e8534e", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "75b53e4d68fe66dc4c27636dc0d05840000a6874c44f95dd80672c470c407f6d", -"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "b8fea1e47b5e46937e6d6583d1644734e4ccf62726d6a29cee635b9903926040", +"T3T1_es_test_msg_backup_device.py::test_backup_bip39": "d3f24f6e722cbb699d66fdbac52a89074bec72c34b8e87c8a5d44f44151df5e7", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "7e7a00496ae254386601080816be78e1519061ae69b6b5bb0fd271eea1308615", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "591cdb4ed363e514c101dfda6c7ed831d96e1d41646e65196b2e2db6e2b4105d", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "6664867bb92aa5b13cc8c64b75489279efaf8e9db1030d68a9fae5e35ff83305", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "deebcdcb7d1b21f3a5ef0347c3ce173980179b0cf32098c91bbb3d86f2b274c4", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d5906eca78c302e2ae96e5aad1cd7c67314234d1b2f47c4ca24682513e9f83fc", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "76d98a61559a50291761e220f6c1647d871d12e6d69cf7965076d8127fd1db1c", +"T3T1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f376bda408b4cd9cf81b66b1457323be2dad9ca643bad2a9e47f04d33cdb01d7", "T3T1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "f89b255bb5ba23a89d5e0eb1109901ba35ac67624e3c9d587be6d19b0ffb3a72", "T3T1_es_test_msg_backup_device.py::test_no_backup_fails": "991c8240e658e84a358bb3297f2bd59c5cadfb58b57aa0da592e919ac77c5f80", "T3T1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "3d6fa73765854729d7a2d51197b4bcf0797ca1233946d24958d26fa355bb0b9c", @@ -20896,10 +20896,10 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "fe43f2681f087deeb6ecc92501c4eff2d44a30e4ddfa7e2beccde954ae40cc0d", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "1d3351d9da92ff5014ca1a8a75211fa78d938828ac5990987a50fdf6888a2230", "T3T1_es_test_protection_levels.py::test_wipe_device": "bd526c2186cbe66c01f2336f3eb48b7bf9c612c5c906b11395fbc30e5b5d9f94", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "4696c4ce5da60605626c9637b488d7ed76afefef6d9d63485260d3408cf50967", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "ddc0d93f5bae11114b0cafd1385e81aabf96d4fcff90670e0d67acca09dad82e", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f001fa4e06d0e347e2aebef5965496d6e1f8a791c29ca5722e08f4d3d44a79b4", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d68fee19d8ceb57fa38df3260c1632a6253d56350f68e486fb059cf03fc552cd", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "0e50a0c0f8a4ef569d451f86089157f8e417ecd9a3ad7fcb203aa9a294ee9ff9", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "da65eaa99fcd520acedf285eb0d9094025d35b758c399dd9358bb271c70f411f", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "c4fa4d14bc361d1aac63e4572d2a6e2bd5d966ffb7c6cda598e4fee1e4c9c0f4", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "851706810a37e3437230aaa7bad7e8ced0af3c832ddeea889226b574b337fe96", "T3T1_es_test_sdcard.py::test_sd_format": "72f118c0af96c0efac42421ac361945413a8e956ba1715eb89daf6daa772d5aa", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "33fe33134d770ff08151fa7fbe46f0c1feb78a65a20dd52e6fd152f5be0237e3", @@ -21961,24 +21961,24 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8cc10f59d8f0385a8ef2480110998a9ff10f199f099ab02b2760db0c32af33d5", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "04f89551545d65b9253cd773123ac045f1898947fd667cbfdde280b0786f9552", "T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "629f2b6aef6b2697f165ca244bf142a3fcab1dcb5574062d4a81040a7cb527d5", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "c614826c96d99b311b17330b0b55a4e300262ceedfa9f6eaaf7d74f87fb5788b", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "6eae2bf8f4478ccdf0fbfbb925b773be87044c64af295725e5c60410d47e3e63", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e9852303e5bb8bdf89842a70bcd5da74fc58aa586c193687b57529b5b10859ca", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6953ad800acd81c44193125730e3dfaf2bec7e0a3ceddb62f52003221af8a31c", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "983f65557215d7bdf345b290ff014c594a725bdcb23952cbf28166becfcb080b", -"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "9acb89fc5971c34ad5cad4c95ebd623267b55d5e91a24e9139628813b79c2d1c", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a745724fa11eb6052ebcf1165182d77b2f3ba6d3e13426ffc4d36e3f4daeb518", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "855b6597092938e14055cc78e88ad5baccb14d6b573a2da27fc1a9089dd40584", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2dcdc176124490bcb621f1e0e165a24fe04650d8eda69755330f559eebdebf19", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "ef07b4ea8b351b7f4f4891dc32cdae07c140ff5324ae5b8294b6c6bec5794fca", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "2a609b2c50c52f577cb6c383257cb423d8dce33c5d6481ee0884c656a0ac5c9b", +"T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "e82a94f09ed53ef04b0224423585f7b01ea3cf1822310663d0a5abeb462ee4b0", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d3f130732cd2837913cb832fc92b4c7db31942fcc85b9158121c8378ec1e3f85", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f7dc4fc7a8e30e86a4a647b1dd53debbe90d4ad27f4866ea28ef7a215b235484", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "36e70439f852096a324127a5198d6f22fd27588df99181ec9ba3616b04f311ae", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "aef67a18b4b49ca74299a0c1ab5d5206246d8bf4325e0269ee952f03709bac01", -"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "b4756695193a1502c00d78e0add614a61485c8fba37047b37a19c57e342542e7", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "cf00b387e6505d133b0a246efe235424b0ed84d4ded82177e46946149f9282f5", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "0cdb03c086c8a45c0ac80aaaacbe8fb68a443b942e1ebca354a02594a58b5b99", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "fb6c80235de30d9209b43e5fd84a414e85dfa46679bfd8b37411df0d52ccbe44", -"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "3d346cebd59afba91eb0dd03fe5ffff9b20e4a03c375bf99246b239353e7e145", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "49622c490d7f4a2e45c361b01e4158e861e2ab2bf22f040b825fb8f491512615", -"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "cb13cbc4e960a28c1ac13f240014a3c6463cfb292d0543c2a634c1256f2389ec", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "e34fd04085e9702c3aa3a2fc1e9700106c8e76ee34022005938714352df60d4f", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "630dd24e47c14dce4cca477909f70b38921e4787c0865787b7ec3e11d87c785c", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "af4d8889d269d0bc5bed1e1530c055619a3ed4fb16077900f858ee5b7326bc18", +"T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ee1a08bb27a75e84223347a2d9f5c364328f94283b79d133b4b9239a1eb1ae30", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4b929009e0e2893c7bbbc23fa107b9031a62c4ee4cd4c88ce346eb34e4dcd708", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f603c8994bc5b44c99749f743345366b805d575ce47f6437afe1d3503da9b433", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "421c29861fdb209a3a6cf0ca6eabacb0c89ee09d136056a3c5f9246a186d0336", +"T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "469bec5aab906736578bbc249ff3e6eda95f1c7e29e6729f69acaa2cfa4d565b", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f2ee63ccc245cc4ac50456bbb3b6d3f0769ca02923ce0e31b3cc64428d54c60b", +"T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6355a8725088cdbb252010ebe97897b4f8f0e6f783001ab3b4155292d817fa8b", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "202e5e73de82f528da179679b2bb7c80aa8333e417e0b0eda44ad2e74a0c3dc8", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "3daa711a54b41d9584fb509d13f5f497d70b978c9b544a790a979ce23c4d7fbc", "T3T1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9f3033804af14d08d8c6dc67e83eac4d06990a7ecb355445fd19baa98f974ab0", @@ -22184,14 +22184,14 @@ "T3T1_fr_test_msg_applysettings.py::test_experimental_features": "f75dfd9615a8f63074bd256d9452dd9c5f3db9aee5b0ae0d232c1d370d2f672d", "T3T1_fr_test_msg_applysettings.py::test_label_too_long": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_test_msg_applysettings.py::test_safety_checks": "0a84e1bf6720d6f5c1a12d7cc278dcadf886a63e24531ab4b29a9e7a1c93b846", -"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "ae9555e32655e2424427a506b74907816b0e4abe3ae33884ed1fbd415ab463c7", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "3d31a041c69582fedf69fda5677afbfe16b0380aa5e52e410fe02262e0e046a9", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ae753648fcb4f898ea88b83447a154d3fb6ba927a607d12867586882c671fc8a", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "a33cd152e6a582056c21b1f90c54bd9d6baeab1da8aee2c7a3d47aa1d12dd48d", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "ca28514e9337fc3f46a58a920920b321066f615c7cba1ae7fc547d1437bd02c5", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "f9c6c6c989bd6cd567fc7fe29ad1c4d420a137832e27b9d0cf4947918c6bc9c7", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "1fb2ab98ada3d268a24842c4db1dbde07dcc83efcc0e21e329ee6ea30f938189", -"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "144f3ce0b7f2a24a4b45d3d6673fdb7ccc66555e25d0c82368a4be68b44f84a9", +"T3T1_fr_test_msg_backup_device.py::test_backup_bip39": "88fc58484e39ac64194da52b2228bfc46e5ce3333ccc4b2565e07e64f18b4c87", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "eb08502905fcd3a8cca0639d84eadf2e643ec9a18ff173f2c897f30f41a7438e", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e9506c8b7b536dbb4e8bb452c97d2d67fb3b8457dac23177f0a2c26cf00c2a98", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "83665e768e55868193569b67ed40e50de19dd8c33b4a1a9471c1c7fcf2632c5e", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "3bd3db89b0ce37c99ae8c6da074531c9b2e4a7d0f720e4dd0235150ed66a9429", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "be435cdd41f4e69a1008658774ba94db3ba4f0ad5b44c9d672aed3a3e619a62a", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "f8ebceb747e813f87f5048a61282129f79248cff5f1a304ef3b6fe64c91fcd06", +"T3T1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "0aad5ea14a69d8889c61e37d541b587fe8d71244a2f59bcaa4a4424b8a19641b", "T3T1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "629a12e180fc45421731cacf9dfd3d33ef97715ccafd9370b86a1f967f9dd45d", "T3T1_fr_test_msg_backup_device.py::test_no_backup_fails": "520ee2d956be93f1d869cd353a8fe2b5628a1f8587076604e85b33d8f66c5907", "T3T1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "19ecf4aea55615df4f40c367daee7bf0e9f812576b6bacb90fab5f2e14ddd730", @@ -22242,10 +22242,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "41aff29e00f12334bc5f4404403a86399c0bc3f3c7aa36619d13247918280d8e", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c7fb9d00a7a5519c050401b6b1181aafb2cee07aac911a1f69ca19bf4926bf45", "T3T1_fr_test_protection_levels.py::test_wipe_device": "53279b977255d6d8874a592a5241f6a113e96442f871e96522ed8bf12fb05586", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "5e434ac0c0e4e1082b3add2fb0c704e3c9028a3e25c270ce61c7b1c0be2e7b16", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "8f22ef761629afdb7be446443466b01899b252fa356ff13ee711aff18f3953aa", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "57be3e939999c8a96802c666cd9d1db7e60025d530908a65015caa31add1660f", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "2c7360c9243075f2a3ba01b27aa178b5ea235c4eef0a429e1b26e8753580d9eb", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "54de4457f35aaa869d5f45f1acbddab22962eab75ee82f3dbd918c041ebb77ad", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "72e12e6e6aeb25c0452cc502b6533be596ccdfe516280b9682573e29a3468abc", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "41537f31c77038bead3a8a630715b9e79009c75aaf71be8adc8b77cb6a10d7e4", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e37628bd6f4856fed629fd406c6130a01833e49183e729cd4af49b403c784f71", "T3T1_fr_test_sdcard.py::test_sd_format": "d47e1612b47b28186d3517ccc686a4ddd4b60557c41446373e3f0f97f93d0105", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4ebf7f7adc1ba12f1977c97573f1489ec6d58b8e71d67213d521f1c790d4fabf", From 65d3fd00f1175f8cf16d53dadbbfc242b2153a02 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sat, 17 Aug 2024 18:42:53 +0200 Subject: [PATCH 549/626] fix(core/ui): fix mnemonic keys availability This commit disables keys of mnemonic keyboard if their press cannot lead to a valid word if the keyboard is initialized with a pre-filled word. This is useful to get valid keyboard state when going to a previous word during recovery. [no changelog] --- .../component/keyboard/mnemonic.rs | 18 ++++++++++++----- .../model_tt/component/keyboard/mnemonic.rs | 14 ++++++++++--- tests/ui_tests/fixtures.json | 20 +++++++++---------- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 2f0cd7d9ee..00755202a1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -55,6 +55,18 @@ where let back_btn = Button::with_icon(theme::ICON_CHEVRON_LEFT) .styled(theme::button_default()) .with_expanded_touch_area(Insets::right(BACK_BUTTON_RIGHT_EXPAND)); + let keys = { + const EMPTY_BTN: Button = Button::empty(); + let mut array = [EMPTY_BTN; MNEMONIC_KEY_COUNT]; + for (key, t) in T::keys().iter().enumerate() { + array[key] = Button::with_text((*t).into()) + .styled(theme::button_keyboard()) + .with_text_align(Alignment::Center) + .initially_enabled(input.can_key_press_lead_to_a_valid_word(key)); + } + array + }; + Self { prompt: Maybe::new( theme::BG, @@ -65,11 +77,7 @@ where back: Maybe::new(theme::BG, back_btn, prompt_visible && can_go_back), input: Maybe::new(theme::BG, input, !prompt_visible), keypad_area: Rect::zero(), - keys: T::keys().map(|t| { - Button::with_text(t.into()) - .styled(theme::button_keyboard()) - .with_text_align(Alignment::Center) - }), + keys, swipe: Swipe::new().right(), can_go_back, } diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs index b5c7fc5694..9899f3fed3 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/mnemonic.rs @@ -40,6 +40,16 @@ where pub fn new(input: T, prompt: TString<'static>, can_go_back: bool) -> Self { // Input might be already pre-filled let prompt_visible = input.is_empty(); + let keys = { + const EMPTY_BTN: Button = Button::empty(); + let mut array = [EMPTY_BTN; MNEMONIC_KEY_COUNT]; + for (key, t) in T::keys().iter().enumerate() { + array[key] = Button::with_text((*t).into()) + .styled(theme::button_pin()) + .initially_enabled(input.can_key_press_lead_to_a_valid_word(key)); + } + array.map(Child::new) + }; Self { prompt: Child::new(Maybe::new( @@ -59,9 +69,7 @@ where !prompt_visible, )), input: Child::new(Maybe::new(theme::BG, input, !prompt_visible)), - keys: T::keys() - .map(|t| Button::with_text(t.into()).styled(theme::button_pin())) - .map(Child::new), + keys, swipe: Swipe::new().right(), can_go_back, } diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 337d0bcced..4c00d0d16a 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -7843,7 +7843,7 @@ "T2T1_cs_test_pin.py::test_wipe_code_same_as_pin": "c3446b0a48892acdb5fc178ad7c18ef6a1d2df14367148fa9bc02c54c9b819ae", "T2T1_cs_test_pin.py::test_wipe_code_setup": "6035ededebf828bc8d85f1c3ba370a996c1267b1885bc7de27921badf9a244f1", "T2T1_cs_test_recovery.py::test_recovery_bip39": "f2166fb9da2954b3ba3d45a8387ea2f54fbc5ba368dc8a3bae052605da85422e", -"T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "00d3300ced62470ecb0cca321dc2d51815c420ce7f638f30d00d98bf2544430a", +"T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9090fb71903ebf09d2f355eca6148089234c968663a6fbc7ef8b3da83cb68d10", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "2fd13d2bfec6a17af56fff6e74298a1d22eccc162382909741c4f3153887cee2", "T2T1_cs_test_repeated_backup.py::test_repeated_backup": "f0ddd5bcceb74cec9cc7c399d557c40cbc01037ec692e78690624a68df5c8564", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "5674d27b155c782f45f5a3f5c6cb8b23f581b2346372cec20b3e36e7e944521e", @@ -7892,7 +7892,7 @@ "T2T1_de_test_pin.py::test_wipe_code_same_as_pin": "63f3a5b7c4b825e0369df49708667f0cfcef8bcd53e26cb5bcbc233bf5d9545d", "T2T1_de_test_pin.py::test_wipe_code_setup": "ab1f71d108bdda802c5a182fdd15a89f6e5b924965170c45b652cc359b488c60", "T2T1_de_test_recovery.py::test_recovery_bip39": "8eb3c0dfe5209acd644ab4d95e24852f2056adae2d023b25ce6c2de74638a099", -"T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "05782006b68c1f3b1898f46bf3535d0c79181f21c1e5a363c462df9df3744ded", +"T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "8d67f14a44e211a22189fc96947f9ea6aae558162076757fa26f8c55477dad5b", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "2fabf58b8ebca83403c9d6a361009116c6d25791c489af35c87d03c5a9093442", "T2T1_de_test_repeated_backup.py::test_repeated_backup": "448e6cb792f1f2081e83accea479ff910023df654bbb00f4186674d8934b300c", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "2c19504e49aefdf5c54d157b618763cf366f0a18cb1b488938d6ee7f0d6a78bf", @@ -7941,7 +7941,7 @@ "T2T1_en_test_pin.py::test_wipe_code_same_as_pin": "ca637846a0de6a5f5b8eca96ae2aa4c59432516bb28352b5e23dbfac470fe57b", "T2T1_en_test_pin.py::test_wipe_code_setup": "01974e0c3a9169cfbe617c238fc73c20750736e60e52ad32ec170c829329823f", "T2T1_en_test_recovery.py::test_recovery_bip39": "0246dc05c08fc0f59685314448ac43bbd95599d85b252abc31d258d435a98dec", -"T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "b2a434341e1f84d87bba74a742b9387ea37d85ed13f596b4228c9a5d84444120", +"T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "db9efe6d9c0e6e61dfa028e93f5eda6f9257cb8be5e1d1f36ac71e4f328f8355", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "186037afb1c137cba14536c50f3ba854a10c289aa9792df59847e385671d5221", "T2T1_en_test_repeated_backup.py::test_repeated_backup": "9d24a9538f3e10de96f5115db283813eccf6a5c471d9e9997a93c8a8b359b6c6", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "05255b352fde7646a698b74808b3de04350353ad7d8f7b2568a14967956c8bc8", @@ -7990,7 +7990,7 @@ "T2T1_es_test_pin.py::test_wipe_code_same_as_pin": "9c295e0f8093b5e484310899f5b9f93ca68581e1be0d569d3eeb2e0b763490d1", "T2T1_es_test_pin.py::test_wipe_code_setup": "e7eeeafa1baed438c6eaf7983a54e6b7ea186f2d117e59041d9d63afb30d24ba", "T2T1_es_test_recovery.py::test_recovery_bip39": "9cefbfa32e60aa0e9fc3f0ecdecb15bdd1a42ca90437629e3800f48a873ade71", -"T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "2d20545f8ae79659d805722e16510237660dedf46ad99405d0c1b455a8c3c8ce", +"T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "531bf101fe9f9d80a702816f490dea8dc5bf2f179460721f2a9d28322c153ec7", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "3078b430c266dfc210f8f5e6a0b3f65659036354851c311769da3565c70039c2", "T2T1_es_test_repeated_backup.py::test_repeated_backup": "d94bd04bfbc22fda7951e5f0e05e9978099412409db1c7ab01583ad83ad94275", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "2707d73e704b5dd08ac93498aa4cd578be2694c87f3987f5b1332352a7b49e42", @@ -8039,7 +8039,7 @@ "T2T1_fr_test_pin.py::test_wipe_code_same_as_pin": "40f4b0505fa503476b2d3fcf5d6c78b732addb522d9c6ba5d7414048ceb6a9f5", "T2T1_fr_test_pin.py::test_wipe_code_setup": "bdd2e5e200b8333867e017e137a80ef9678102fca527c74eac369825a73cffaa", "T2T1_fr_test_recovery.py::test_recovery_bip39": "f59eb22db3a6b211b3dfca235479c21871138c2d3b0b771d69ec63cad3d804fb", -"T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "46070c5379251e1bf44144cd35921126062c60906fe1c6d6666bf7515d9fadba", +"T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "299c2e3e7647113d7711c1c61e5f14bbb7abe7f3992b83e5ab6bed7306e5d316", "T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "da87f2762c9713ad50993f6862bb34da82f4f5dc4e8a2696f2956dd3e0abceda", "T2T1_fr_test_repeated_backup.py::test_repeated_backup": "9a280efe2de3c20a7332adca64a4d40bb009bce8dd70421f9be01970901703e9", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "c1bcf2768d4ac54af417ad7468ba40c13c16c80cdfcf24d455e96199043dfb6d", @@ -15362,7 +15362,7 @@ "T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "6d615ea3421738485484b14e305a8c3f159bdf82925329e98b87bff0890e4366", "T3T1_cs_test_pin.py::test_wipe_code_setup": "3566f17ed11804872e11694e5c5a8da8cfbae335ad1a2a4b10cc1f48da04cab5", "T3T1_cs_test_recovery.py::test_recovery_bip39": "0b4ded4093e543b29799e950c3d56b8ef4c03493709a94f12e3a1b245128dbf2", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "eece72ab6ae9aa5d919aa408a70197426f1773dca0c744007963fffecb3e9f8a", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "6f2ca2bb7d573126aa25c4a70fffea973670c6865d79bbeaad8deb8736efcca5", "T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "758f8c529232f37caaa4adc3caa57382d93ee0323b924a11bbd1ef484e7d7d2b", "T3T1_cs_test_repeated_backup.py::test_repeated_backup": "814b4b08d026372e5a8c922c814847f06742d5f27e769e0bc0cfc50dbe1899bc", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "93d1941ad5ce363252b3365b47bd10eb933d9f2a96d12cc518fd904a9e193e37", @@ -15411,7 +15411,7 @@ "T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "561db133f0d612048fd08b46d438a4a500e064d3088055c9364a5660afb01103", "T3T1_de_test_pin.py::test_wipe_code_setup": "e20e2c935c654931b9786df91908aa544d2736e06eb78cb0ef54d44604d5aeae", "T3T1_de_test_recovery.py::test_recovery_bip39": "f15dd2779fe059da83e5c3384e3c882fb1f11a4fc77ad2cac2cca87ce6ff48c7", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "f62897d9041e6e6c38676cc8d62a1c9c0e08c40877f426c1bfeb366e15ae1e9f", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "c025bd7d5e6f4609241b1dc17663a91d59f242635905d67d6be0c06ed961b3bc", "T3T1_de_test_recovery.py::test_recovery_slip39_basic": "9c132785b4d7f79f09ad2469d5f8e427a9b67617c77b297b7d1ddd2c4c3ddb72", "T3T1_de_test_repeated_backup.py::test_repeated_backup": "b612d5a6af5bb306b0c399ecea31fe86985d03f6f95ae954598e45f5540e1244", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "8d05181934d3331c81e7b81b94baa24a8f4db336d29e1e7f650b42b38c0c3484", @@ -15460,7 +15460,7 @@ "T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "19435c69b4111ee84d73ec996aec7150c3d0c8492203d3aacd96a64a9facc2da", "T3T1_en_test_pin.py::test_wipe_code_setup": "ab34c35e04c86f39b8ebd6da3b48a7eb3b28cf8eabbcb4cbe17fc788ea7f14f4", "T3T1_en_test_recovery.py::test_recovery_bip39": "d80025a0c9f7c2d888eaad44e5771ae073063ecbd4a59d6e8be6141f2ad1ca0c", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "22ba5126dddd99f93d19bd9391dbc88697dd499ce735f1d8db1978f18416d462", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "c580851c236bbb8f8a7d11fb0555f76ebf0d24560231548aa041c5260fbd2589", "T3T1_en_test_recovery.py::test_recovery_slip39_basic": "ef3cbbc66db078e7db645f1b7e1609a5741fc71823a1ce4105414f0a348ef214", "T3T1_en_test_repeated_backup.py::test_repeated_backup": "3a551f8b623311790b430aae9769edd544e448ec97679bb7921791f049927bbd", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "38af86057d4d922c371d9957d05e8f0974f9a1a27589c3f286a409a8f7b03ae2", @@ -15509,7 +15509,7 @@ "T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "951f98ebd0dde31c123c7d93eb98af5d0bf5147f2bd28a3014ba26d8bda58d5d", "T3T1_es_test_pin.py::test_wipe_code_setup": "edfe089762dabc918417ca26916a6ad1d0377b8617255c169384ef8728c17381", "T3T1_es_test_recovery.py::test_recovery_bip39": "4ab6e088de9d60283c6a9bedcd39a9447cb484c0dcc3792351c620f129903078", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "b433b71921e24c77d6860fdd5c0c2648d3e3574ed3ed0becb19470fd1bc781ae", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "8ce954ae8e00a8d60dc94aba2b4a332ffafbe343efb4be18ef6f400d8f7d7b39", "T3T1_es_test_recovery.py::test_recovery_slip39_basic": "77ee2df1a216bbd3a040523ec0904384653f5bda080e77059b99715b6a297cad", "T3T1_es_test_repeated_backup.py::test_repeated_backup": "4713a3a4d39b6a7e8bf764dfc7c57fa454ecf4b1a253981262a2241d2fb11c5a", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "0dcc22c287bd99765d79d3d393d287cfc70002213aea2679b5db004efe5da319", @@ -15558,7 +15558,7 @@ "T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "9fbf63afaf25ceec9a0b8d17ec83c0a7a39c7b106ac13519ac196474a083a31d", "T3T1_fr_test_pin.py::test_wipe_code_setup": "943ea3640d21ae0a79655035e2aa0722cc7b79f6a9e17bef39afd9ac1c327549", "T3T1_fr_test_recovery.py::test_recovery_bip39": "ad346e6b6f0dab29d4240f7495cb92b1546b8f545477ec02c03e6f25545adb47", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "0f89c01652f65d814aca2ebaec766479cf362772ab3b1e06fd7f9be2eb281d26", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "996f0fed4bb82ab3c815e5697fe4ac5c81e241da08fcc2de5bf59a0105911691", "T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "ae737b02fa5dcbcb89d4996f81305ba07d0cc13aeec289045b94402074a09576", "T3T1_fr_test_repeated_backup.py::test_repeated_backup": "2bf3386dee3dd696764a4f5f59eaf76072b833cadc9c7a79496ac722c21458c9", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "7c0ec2b343c28d167670e90cde9e41e007cc0a892042b1a846347ebb06a7a791", From f0989e20b8a1ecc6edcdbbd9280277f251525521 Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Sat, 17 Aug 2024 16:49:03 +0200 Subject: [PATCH 550/626] fix(core/ui): fix persistent word during recovery Remove the current word from recovery progress if a user goes to previous word. [no changelog] --- core/.changelog.d/3859.fixed | 1 + .../model_mercury/component/keyboard/mnemonic.rs | 14 ++------------ core/src/apps/management/recovery_device/layout.py | 13 +++++++------ tests/click_tests/recovery.py | 6 +++++- 4 files changed, 15 insertions(+), 19 deletions(-) create mode 100644 core/.changelog.d/3859.fixed diff --git a/core/.changelog.d/3859.fixed b/core/.changelog.d/3859.fixed new file mode 100644 index 0000000000..06b0f82394 --- /dev/null +++ b/core/.changelog.d/3859.fixed @@ -0,0 +1 @@ +Fix persistent word when going to previous word during recovery process. diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs index 00755202a1..e9ee60cc56 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/mnemonic.rs @@ -1,10 +1,7 @@ use crate::{ strutil::TString, ui::{ - component::{ - maybe::paint_overlapping, Component, Event, EventCtx, Label, Maybe, Swipe, - SwipeDirection, - }, + component::{maybe::paint_overlapping, Component, Event, EventCtx, Label, Maybe}, geometry::{Alignment, Grid, Insets, Rect}, model_mercury::{ component::{Button, ButtonMsg}, @@ -35,8 +32,6 @@ pub struct MnemonicKeyboard<T> { keypad_area: Rect, /// Key buttons. keys: [Button; MNEMONIC_KEY_COUNT], - /// Swipe controller - allowing for going to the previous word. - swipe: Swipe, /// Whether going back is allowed (is not on the very first word). can_go_back: bool, } @@ -78,7 +73,6 @@ where input: Maybe::new(theme::BG, input, !prompt_visible), keypad_area: Rect::zero(), keys, - swipe: Swipe::new().right(), can_go_back, } } @@ -136,7 +130,6 @@ where let input_area = input_area.inset(Insets::left(BACK_BUTTON_RIGHT_EXPAND)); let keyboard_grid = Grid::new(keypad_area, 3, 3).with_spacing(theme::KEYBOARD_SPACING); - self.swipe.place(bounds); self.prompt.place(prompt_area); self.erase.place(back_btn_area); self.back.place(back_btn_area); @@ -149,14 +142,11 @@ where } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - // Back button or swipe will cause going back to the previous word when allowed. + // Back button will cause going back to the previous word when allowed. if self.can_go_back { if let Some(ButtonMsg::Clicked) = self.back.event(ctx, event) { return Some(MnemonicKeyboardMsg::Previous); } - if let Some(SwipeDirection::Right) = self.swipe.event(ctx, event) { - return Some(MnemonicKeyboardMsg::Previous); - } } match self.input.event(ctx, event) { diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index 7de6c75bc3..d602b98a8e 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -27,14 +27,14 @@ async def request_mnemonic( await button_request("mnemonic", code=ButtonRequestType.MnemonicInput) - # Allowing to go back to previous words, therefore cannot use just loop over range(word_count) + # Pre-allocate the list to enable going back and overwriting words. words: list[str] = [""] * word_count i = 0 - while True: - # All the words have been entered - if i >= word_count: - break + def all_words_entered() -> bool: + return i >= word_count + + while not all_words_entered(): # Prefilling the previously inputted word in case of going back word = await request_word( i, @@ -43,9 +43,10 @@ async def request_mnemonic( prefill_word=words[i], ) - # User has decided to go back if not word: + # User has decided to go back if i > 0: + words[i] = "" i -= 1 continue diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 108214929c..2a630e2cea 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -222,7 +222,7 @@ def enter_seed_previous_correct( if go_back: go_back = False - if debug.model in (models.T2T1, models.T3T1): + if debug.model in (models.T2T1,): debug.swipe_right(wait=True) for _ in range(len(bad_word)): debug.click(buttons.RECOVERY_DELETE, wait=True) @@ -237,6 +237,10 @@ def enter_seed_previous_correct( while layout.get_middle_choice() not in DELETE_BTN_TEXTS: layout = debug.press_left(wait=True) layout = debug.press_middle(wait=True) + elif debug.model in (models.T3T1,): + debug.click(buttons.RECOVERY_DELETE, wait=True) # Top-left + for _ in range(len(bad_word)): + debug.click(buttons.RECOVERY_DELETE, wait=True) continue if i in bad_indexes: From 0ce00cbdb6500a9c3d037ee0153ad4f12865838a Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 31 Jul 2024 12:40:59 +0200 Subject: [PATCH 551/626] feat(core/tools): create a poetry-installable package from some cli tools so that we can have them available globally inside the poetry shell --- core/tools/.gitignore | 1 + core/tools/README.md | 129 ++++++++++++++++++ core/tools/pyproject.toml | 20 +++ .../combine_firmware.py} | 0 .../{ => trezor_core_tools}/headertool.py | 0 .../{ => trezor_core_tools}/layout_parser.py | 0 6 files changed, 150 insertions(+) create mode 100644 core/tools/.gitignore create mode 100644 core/tools/README.md create mode 100644 core/tools/pyproject.toml rename core/tools/{combine_firmware => trezor_core_tools/combine_firmware.py} (100%) rename core/tools/{ => trezor_core_tools}/headertool.py (100%) rename core/tools/{ => trezor_core_tools}/layout_parser.py (100%) diff --git a/core/tools/.gitignore b/core/tools/.gitignore new file mode 100644 index 0000000000..c04bc49f76 --- /dev/null +++ b/core/tools/.gitignore @@ -0,0 +1 @@ +poetry.lock diff --git a/core/tools/README.md b/core/tools/README.md new file mode 100644 index 0000000000..14fb0baf73 --- /dev/null +++ b/core/tools/README.md @@ -0,0 +1,129 @@ +# Scripts for managing the project + +This directory contains various scripts that are used either in some of the make +targets, or manually, to generate code, check its size, etc. + +## Most used tools + +### `headertool` + +Lives in `trezor_core_tools/headertool.py` and is exposed as a CLI tool by the same +name. + +Headertool can generate, analyze, and modify vendor and firmware headers. Use +`headertool --help` to get the full list of commands. + +The most common usage is `headertool somefile.bin` that will dump header information. + +Another useful feature is `headertool -V vendor_header.bin firmware.bin`, which will +replace the embedded vendor header in `firmware.bin` with the one in +`vendor_header.bin`. + +### `build_mocks` + +Generate `.pyi` stubs from C and Rust source files. + +### `build_templates` + +Regenerate sources from Mako templates. + +### `build_vendorheader` + +Generate a vendor header binary from a json description. + +### `combine_firmware` + +Combine a flashable image from a boardloader, bootloader, and firmware. + +## Everything else + +### `codegen` + +Code generation tool for fonts, the loader graphic (deprecated) and cryptographic keys +(also deprecated). + +### `dialog-designer` + +Deprecated tool to visually preview multi-line dialogs in the old Trezor T UI. + +### `gdb_scripts` + +Scripts for GDB debugger. + +### `hid-bridge` + +Tool that creates a virtual HID device bridged to a UDP. This allows using the emulator +as a FIDO/U2F authenticator in a browser. + +### `size` + +Scripts to examine size of firmware. + +### `snippets` + +Ad-hoc scripts for various one-off tasks that could become useful again. + +(the whole thing is prooobably deprecated by LLMs, which will regenerate any script on +demand). + +### `translations` + +Tools for checking validity of translation data and its usage. + +### `trezor_core_tools` + +A Python package that exposes certain functionalities as CLI commands. + +`headertool` and `combine_firmware` live here, more may be moved or added. + +One additional tool is `layout_parser`, which is used to extract memory layout +information from a model `.h` file. + +### `alloc.py` + +Generate a HTML report of allocation count per line of code, as captured when running +`emu.py -p`. + +### `analyze-memory-dump.py` + +Generate a HTML report of a state of the Micropython GC heap, as captured by +`trezor.utils.mem_dump` at some execution point. + +### `build_icons.py` + +Regenerate embedded TOIF icons for webauthn apps from png files. + +### `coverage-report` + +Combine coverage reports from multiple CI jobs and generate a report. + +### `frozen_mpy_translator.py` + +Translate bytecode instructions in frozen_mpy.c to human readable form. + +### `generate_vendorheader.sh` + +Uses `build_vendorheader` to rebuild all vendor headers for all models. + +### `jpg_to_h.py` + +Convert a JPG image to a C array that can be embedded into the firmware. + +(TODO could we replace it with xxd -i?) + +### `make_cmakelists.py` + +Generate a CMakeLists.txt file for the core. + +### `provision_device.py` + +Run the provisioning flow on a prodtest firmware, against a staging provisioning server. + +### `rust_api_checks.py` + +Check that the Rust UI API is consistent with the Python UI API. + +### `rust_api_models_unification.py` + +Checks the consistency of the Rust API between models. + diff --git a/core/tools/pyproject.toml b/core/tools/pyproject.toml new file mode 100644 index 0000000000..125aaf6dd2 --- /dev/null +++ b/core/tools/pyproject.toml @@ -0,0 +1,20 @@ +[tool.poetry] +name = "trezor_core_tools" +version = "0.1.0" +description = "Collection of CLI tools for trezor-core development" +authors = ["matejcik <jan.matejek@satoshilabs.com>"] +license = "GPLv3+" +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.8" +trezor = "^0.13.9" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry.scripts] +headertool = "trezor_core_tools.headertool:cli" +layout_parser = "trezor_core_tools.layout_parser:main" +combine_firmware = "trezor_core_tools.combine_firmware:main" diff --git a/core/tools/combine_firmware b/core/tools/trezor_core_tools/combine_firmware.py similarity index 100% rename from core/tools/combine_firmware rename to core/tools/trezor_core_tools/combine_firmware.py diff --git a/core/tools/headertool.py b/core/tools/trezor_core_tools/headertool.py similarity index 100% rename from core/tools/headertool.py rename to core/tools/trezor_core_tools/headertool.py diff --git a/core/tools/layout_parser.py b/core/tools/trezor_core_tools/layout_parser.py similarity index 100% rename from core/tools/layout_parser.py rename to core/tools/trezor_core_tools/layout_parser.py From 0f18520690d4f7d8600292537ae188ca3d766de2 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 31 Jul 2024 12:42:55 +0200 Subject: [PATCH 552/626] chore(core/tools): make the core-tools available in top level poetry env --- poetry.lock | 18 +++++++++++++++++- pyproject.toml | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 790f87f5de..948d65670c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1580,6 +1580,22 @@ stellar = ["stellar-sdk (>=6)"] type = "directory" url = "python" +[[package]] +name = "trezor-core-tools" +version = "0.1.0" +description = "Collection of CLI tools for trezor-core development" +optional = false +python-versions = "^3.8" +files = [] +develop = true + +[package.dependencies] +trezor = "^0.13.9" + +[package.source] +type = "directory" +url = "core/tools" + [[package]] name = "trezor-pylint-plugin" version = "0.1.0" @@ -1781,4 +1797,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "08f0edb51d2d41a2e333b7f8b5ae0a06730f9aa362136c49fd262d823ed5d59a" +content-hash = "6e63e1ae52fbff76a8e45b5c4bc58938a5537bce7b0eee7993bb55342e47b74a" diff --git a/pyproject.toml b/pyproject.toml index 2c55d25bce..828ba7e534 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,6 +72,7 @@ vulture = "^2.6" binsize = "^0.1.3" toiftool = {path = "./python/tools/toiftool", develop = true, python = ">=3.8"} trezor-pylint-plugin = {path = "./tools/trezor-pylint-plugin", develop = true} +trezor-core-tools = {path = "./core/tools", develop = true} [tool.poetry.dev-dependencies] scan-build = "*" From 4208707088b5b5475a98774e12f0b297b2a46487 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 31 Jul 2024 17:37:29 +0200 Subject: [PATCH 553/626] refactor(core/tools): make combine_firmware nicer --- .../trezor_core_tools/combine_firmware.py | 72 +++++++++++-------- core/tools/trezor_core_tools/common.py | 21 ++++++ core/tools/trezor_core_tools/layout_parser.py | 68 ++++++++++-------- 3 files changed, 104 insertions(+), 57 deletions(-) create mode 100644 core/tools/trezor_core_tools/common.py diff --git a/core/tools/trezor_core_tools/combine_firmware.py b/core/tools/trezor_core_tools/combine_firmware.py index d52d4743e3..7477a60685 100755 --- a/core/tools/trezor_core_tools/combine_firmware.py +++ b/core/tools/trezor_core_tools/combine_firmware.py @@ -3,24 +3,16 @@ import datetime import io +import sys from pathlib import Path -import os -import subprocess import click -def get_layout_params(layout: Path, name: str) -> int: - directory = os.path.dirname(os.path.realpath(__file__)) - with subprocess.Popen(args=["python", Path(directory, "layout_parser.py"), str(layout), name], - stdout=subprocess.PIPE) as script: - return int(script.stdout.read().decode().strip()) +from .layout_parser import find_all_values + @click.command() -@click.argument( - "layout", - type=click.Path(dir_okay=False, writable=True, path_type=Path), - required=True, -) +@click.argument("model") @click.argument( "outfile", type=click.Path(dir_okay=False, writable=True, path_type=Path), @@ -32,37 +24,59 @@ def get_layout_params(layout: Path, name: str) -> int: type=(str, click.Path(exists=True, dir_okay=False, readable=True, path_type=Path)), multiple=True, ) -def main( - layout: Path, - bin: List[Tuple[Path, str]], - outfile: Path | None, +def main(model: str, bin: list[tuple[str, Path]], outfile: Path | None) -> None: + """Create a combined.bin file from components. -) -> None: + MODEL is the internal model name (e.g. T1B1, T2T1, T2B1). + BIN is a list of tuples with the type and path to the binary file. The usual types + are: + + \b + * BOARDLOADER + * BOOTLOADER + * FIRMWARE + + For example: + + \b + $ combine_firmware T3T1 -b boardloader build/boardloader.bin -b bootloader build/bootloader.bin -b firmware build/firmware.bin + """ if outfile is None: today = datetime.date.today().strftime(r"%Y-%m-%d") outfile = Path(f"combined-{today}.bin") - first_bin = bin[0] - (name, bin_path) = first_bin + offset = 0 + out_buf = io.BytesIO() + + all_values = find_all_values(model) - start_offset = get_layout_params(layout, name+ "_START") + def find_value(name: str) -> int: + value_name = f"{name.upper()}_START" + if value_name not in all_values: + click.echo(f"ERROR: component {name} not found in layout for model {model}") + click.echo("Try one of: boardloader, bootloader, firmware") + sys.exit(1) + return all_values[value_name] - offset = start_offset - out_bytes = io.BytesIO() + for name, bin_path in bin: + bin_start = find_value(name) - for (name, bin_path) in bin: - bin_start = get_layout_params(layout, name + "_START") - # zero-pad until next section: - offset += out_bytes.write(b"\x00" * (bin_start - offset)) + if not offset: + # initialize offset + offset = bin_start + else: + # pad until next section + offset += out_buf.write(b"\x00" * (bin_start - offset)) assert offset == bin_start # write binary - offset += out_bytes.write(bin_path.read_bytes()) + offset += out_buf.write(bin_path.read_bytes()) # write out contents - click.echo(f"Writing {outfile} ({offset - start_offset} bytes)") - outfile.write_bytes(out_bytes.getvalue()) + out_bytes = out_buf.getvalue() + click.echo(f"Writing {outfile} ({len(out_bytes)} bytes)") + outfile.write_bytes(out_bytes) if __name__ == "__main__": diff --git a/core/tools/trezor_core_tools/common.py b/core/tools/trezor_core_tools/common.py new file mode 100644 index 0000000000..7a4f2f5be7 --- /dev/null +++ b/core/tools/trezor_core_tools/common.py @@ -0,0 +1,21 @@ +from __future__ import annotations + +from pathlib import Path + +HERE = Path(__file__).parent.resolve() +CORE = HERE.parent.parent + +MODELS_DIR = CORE / "embed" / "models" + +MODELS_DICT = { + "1": "T1B1", + "T": "T2T1", + "R": "T2B1", + "DISC1": "D001", + "DISC2": "D002", +} + + +def get_layout_for_model(model: str) -> Path: + model = MODELS_DICT.get(model, model) + return MODELS_DIR / model / f"model_{model}.h" diff --git a/core/tools/trezor_core_tools/layout_parser.py b/core/tools/trezor_core_tools/layout_parser.py index 0b5adfd1fe..13b2e43303 100644 --- a/core/tools/trezor_core_tools/layout_parser.py +++ b/core/tools/trezor_core_tools/layout_parser.py @@ -1,40 +1,52 @@ #!/usr/bin/env python3 from __future__ import annotations - -from pathlib import Path +import re import click import ast +from .common import get_layout_for_model + + +# the following regular expression matches a thing looking like those examples: +# #define HEADER_START 0x123456 +# #define HEADER_START (1 * 2 * 3) // comment +# and returns two groups: the name and the value. Comment is ignored. +SEARCH_PATTERN = r"#define (\w+) (.+?)(?:\s*//.*)?$" + + +def find_all_values(model: str) -> dict[str, int]: + layout = get_layout_for_model(model) + values = {} + for line in open(layout): + match = re.match(SEARCH_PATTERN, line) + if match is not None: + name, value = match.groups() + try: + node = ast.parse(value, mode="eval") + parsed_value = eval(compile(node, "<string>", "eval")) + values[name] = int(parsed_value) + except Exception: + pass + return values + + +def find_value(model: str, name: str) -> int: + all_values = find_all_values(model) + if name not in all_values: + raise ValueError(f"Value {name} not found in layout for model {model}") + return all_values[name] + @click.command() -@click.argument( - "layout", - type=click.Path(exists=True, dir_okay=False, readable=True, path_type=Path), -) -@click.argument( - "name", - type=click.STRING, -) -def main( - layout: Path, - name: str, -) -> None: - - search = f'#define {name} ' - for line in layout.read_text().splitlines(): - - if line.startswith(search): - line = line.split(search)[1] - if line.startswith("("): - line = line.split("(")[1].split(")")[-2] - if "//" in line: - line = line.split("//")[0] - line = line.strip() - node = ast.parse(line, mode='eval') - result = eval(compile(node, '<string>', 'eval')) - print(result) +@click.argument("model") +@click.argument("name") +def main(model: str, name: str) -> None: + try: + print(find_value(model, name)) + except ValueError as e: + raise click.ClickException(str(e)) if __name__ == "__main__": From 6ae96868dfee003f7ed121b55afa8ce2266cb574 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 31 Jul 2024 17:40:17 +0200 Subject: [PATCH 554/626] chore(core): use trezor-core-tools in scripts --- core/Makefile | 69 ++++++++++------------ core/SConscript.bootloader | 2 +- core/SConscript.bootloader_ci | 2 +- core/SConscript.firmware | 2 +- core/SConscript.prodtest | 2 +- core/SConscript.reflash | 2 +- core/tools/generate_vendorheader.sh | 2 +- core/tools/trezor_core_tools/headertool.py | 4 +- 8 files changed, 39 insertions(+), 46 deletions(-) diff --git a/core/Makefile b/core/Makefile index 4e53bac5f5..25fbddc96b 100644 --- a/core/Makefile +++ b/core/Makefile @@ -46,66 +46,59 @@ OPENOCD_TRANSPORT ?= hla_swd ifeq ($(TREZOR_MODEL), 1) MCU = STM32F2 -LAYOUT_FILE = embed/models/T1B1/model_T1B1.h OPENOCD_TARGET = target/stm32f2x.cfg else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T)) MCU = STM32F4 -LAYOUT_FILE = embed/models/T2T1/model_T2T1.h OPENOCD_TARGET = target/stm32f4x.cfg MODEL_FEATURE = model_tt else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),R)) MCU = STM32F4 -LAYOUT_FILE = embed/models/T2B1/model_T2B1.h OPENOCD_TARGET = target/stm32f4x.cfg MODEL_FEATURE = model_tr else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3T1)) MCU = STM32U5 OPENOCD_TARGET = target/stm32u5x.cfg -LAYOUT_FILE = embed/models/T3T1/model_T3T1.h MODEL_FEATURE = model_mercury else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),T3B1)) MCU = STM32U5 OPENOCD_TARGET = target/stm32u5x.cfg -LAYOUT_FILE = embed/models/T3B1/model_T3B1.h MODEL_FEATURE = model_tr else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC1)) MCU = STM32F4 -LAYOUT_FILE = embed/models/D001/model_D001.h OPENOCD_TARGET = target/stm32f4x.cfg else ifeq ($(TREZOR_MODEL),$(filter $(TREZOR_MODEL),DISC2)) MCU = STM32U5 -LAYOUT_FILE = embed/models/D002/model_D002.h OPENOCD_TARGET = target/stm32u5x.cfg else $(error Unknown TREZOR_MODEL: $(TREZOR_MODEL)) endif -FLASH_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FLASH_START) -BOARDLOADER_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} BOARDLOADER_START) -BOOTLOADER_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} BOOTLOADER_START) -FIRMWARE_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_START) -FIRMWARE_P2_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_P2_START) -STORAGE_1_OFFSET = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} STORAGE_1_OFFSET) -STORAGE_2_OFFSET = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} STORAGE_2_OFFSET) -STORAGE_SIZE = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} NORCOW_SECTOR_SIZE) -BOARDLOADER_MAXSIZE = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} BOARDLOADER_IMAGE_MAXSIZE) -BOOTLOADER_MAXSIZE = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} BOOTLOADER_IMAGE_MAXSIZE) -FIRMWARE_MAXSIZE = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_IMAGE_MAXSIZE) -FIRMWARE_P1_MAXSIZE = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_P1_IMAGE_MAXSIZE) -FIRMWARE_P2_MAXSIZE = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_P2_IMAGE_MAXSIZE) -BOARDLOADER_SECTOR_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} BOARDLOADER_SECTOR_START) -BOARDLOADER_SECTOR_END = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} BOARDLOADER_SECTOR_END) -BOOTLOADER_SECTOR_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} BOOTLOADER_SECTOR_START) -BOOTLOADER_SECTOR_END = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} BOOTLOADER_SECTOR_END) -FIRMWARE_SECTOR_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_SECTOR_START) -FIRMWARE_SECTOR_END = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_SECTOR_END) -FIRMWARE_P2_SECTOR_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_P2_SECTOR_START) -FIRMWARE_P2_SECTOR_END = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} FIRMWARE_P2_SECTOR_END) -STORAGE_1_SECTOR_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} STORAGE_1_SECTOR_START) -STORAGE_1_SECTOR_END = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} STORAGE_1_SECTOR_END) -STORAGE_2_SECTOR_START = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} STORAGE_2_SECTOR_START) -STORAGE_2_SECTOR_END = $(shell python ./tools/layout_parser.py ${LAYOUT_FILE} STORAGE_2_SECTOR_END) +FLASH_START = $(shell layout_parser ${TREZOR_MODEL} FLASH_START) +BOARDLOADER_START = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_START) +BOOTLOADER_START = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_START) +FIRMWARE_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_START) +FIRMWARE_P2_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_START) +STORAGE_1_OFFSET = $(shell layout_parser ${TREZOR_MODEL} STORAGE_1_OFFSET) +STORAGE_2_OFFSET = $(shell layout_parser ${TREZOR_MODEL} STORAGE_2_OFFSET) +STORAGE_SIZE = $(shell layout_parser ${TREZOR_MODEL} NORCOW_SECTOR_SIZE) +BOARDLOADER_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_IMAGE_MAXSIZE) +BOOTLOADER_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_IMAGE_MAXSIZE) +FIRMWARE_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_IMAGE_MAXSIZE) +FIRMWARE_P1_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P1_IMAGE_MAXSIZE) +FIRMWARE_P2_MAXSIZE = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_IMAGE_MAXSIZE) +BOARDLOADER_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_SECTOR_START) +BOARDLOADER_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} BOARDLOADER_SECTOR_END) +BOOTLOADER_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_SECTOR_START) +BOOTLOADER_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} BOOTLOADER_SECTOR_END) +FIRMWARE_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_SECTOR_START) +FIRMWARE_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_SECTOR_END) +FIRMWARE_P2_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_SECTOR_START) +FIRMWARE_P2_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} FIRMWARE_P2_SECTOR_END) +STORAGE_1_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} STORAGE_1_SECTOR_START) +STORAGE_1_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} STORAGE_1_SECTOR_END) +STORAGE_2_SECTOR_START = $(shell layout_parser ${TREZOR_MODEL} STORAGE_2_SECTOR_START) +STORAGE_2_SECTOR_END = $(shell layout_parser ${TREZOR_MODEL} STORAGE_2_SECTOR_END) OPENOCD = openocd -f interface/$(OPENOCD_INTERFACE).cfg -c "transport select $(OPENOCD_TRANSPORT)" -f $(OPENOCD_TARGET) @@ -439,8 +432,8 @@ sizecheck: ## check sizes of binary files test $(FIRMWARE_MAXSIZE) -ge $(shell wc -c < $(FIRMWARE_BUILD_DIR)/firmware.bin) combine: ## combine boardloader + bootloader + prodtest into one combined image - ./tools/combine_firmware \ - $(LAYOUT_FILE) \ + combine_firmware \ + $(TREZOR_MODEL) \ $(PRODTEST_BUILD_DIR)/combined.bin \ -b BOARDLOADER $(BOARDLOADER_BUILD_DIR)/boardloader.bin \ -b BOOTLOADER $(BOOTLOADER_BUILD_DIR)/bootloader.bin \ @@ -448,8 +441,8 @@ combine: ## combine boardloader + bootloader + prodtest into one combined image ifeq ($(MCU),$(filter $(MCU),STM32F4)) combine_fw: ## combine boardloader + bootloader + firmware into one combined image - ./tools/combine_firmware \ - $(LAYOUT_FILE) \ + combine_firmware \ + $(TREZOR_MODEL) \ $(PRODTEST_BUILD_DIR)/combined.bin \ -b BOARDLOADER $(BOARDLOADER_BUILD_DIR)/boardloader.bin \ -b BOOTLOADER $(BOOTLOADER_BUILD_DIR)/bootloader.bin \ @@ -457,8 +450,8 @@ combine_fw: ## combine boardloader + bootloader + firmware into one combined ima -b FIRMWARE_P2 $(FIRMWARE_BUILD_DIR)/firmware.bin.p2 else ifeq ($(MCU),$(filter $(MCU),STM32U5)) combine_fw: ## combine boardloader + bootloader + firmware into one combined image - ./tools/combine_firmware \ - $(LAYOUT_FILE) \ + combine_firmware \ + $(TREZOR_MODEL) \ $(PRODTEST_BUILD_DIR)/combined.bin \ -b BOARDLOADER $(BOARDLOADER_BUILD_DIR)/boardloader.bin \ -b BOOTLOADER $(BOOTLOADER_BUILD_DIR)/bootloader.bin \ diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 53d1a88024..557a30ad4c 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -224,7 +224,7 @@ env.Replace( ) env.Replace( - HEADERTOOL='tools/headertool.py', + HEADERTOOL='headertool', ) env.Replace( diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 27734cc3c9..80adfb36f4 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -194,7 +194,7 @@ env.Replace( ALLSOURCES=SOURCE_MOD + SOURCE_MOD_CRYPTO + SOURCE_BOOTLOADER + SOURCE_HAL+ SOURCE_NANOPB, ) env.Replace( - HEADERTOOL='tools/headertool.py', + HEADERTOOL='headertool', ) env.Replace( diff --git a/core/SConscript.firmware b/core/SConscript.firmware index 90763ac85a..b80fde68a8 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -538,7 +538,7 @@ env.Replace( ) env.Replace( - HEADERTOOL='tools/headertool.py', + HEADERTOOL='headertool', PYTHON='python', MAKEQSTRDATA='$PYTHON vendor/micropython/py/makeqstrdata.py', MAKEVERSIONHDR='$PYTHON vendor/micropython/py/makeversionhdr.py', diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index 946c5ee73c..91c9f5bf2b 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -211,7 +211,7 @@ env.Replace( ) env.Replace( - HEADERTOOL='tools/headertool.py', + HEADERTOOL='headertool', ) diff --git a/core/SConscript.reflash b/core/SConscript.reflash index dccc9e66fa..3f87be288e 100644 --- a/core/SConscript.reflash +++ b/core/SConscript.reflash @@ -157,7 +157,7 @@ env.Replace( ) env.Replace( - HEADERTOOL='tools/headertool.py', + HEADERTOOL='headertool', ) env.Replace( diff --git a/core/tools/generate_vendorheader.sh b/core/tools/generate_vendorheader.sh index 981032a7aa..873d3292e0 100755 --- a/core/tools/generate_vendorheader.sh +++ b/core/tools/generate_vendorheader.sh @@ -5,7 +5,7 @@ set -e cd $(dirname $0) BUILDVH=$(realpath ./build_vendorheader) -BINCTL=$(realpath ./headertool.py) +BINCTL=headertool for arg in "$@"; do if [ "$arg" == "--check" ]; then diff --git a/core/tools/trezor_core_tools/headertool.py b/core/tools/trezor_core_tools/headertool.py index e8656d8441..61600da359 100755 --- a/core/tools/trezor_core_tools/headertool.py +++ b/core/tools/trezor_core_tools/headertool.py @@ -107,14 +107,14 @@ def cli( To insert an external signature: - ./headertool.py firmware.bin -s 1:2:3 ABCDEF<...signature in hex format> + headertool firmware.bin -s 1:2:3 ABCDEF<...signature in hex format> The string "1:2:3" is a list of 1-based indexes of keys used to generate the signature. To sign with local private keys: \b - ./headertool.py firmware.bin -S 1:ABCDEF<...hex private key> -S 2:1234<..hex private key> + headertool firmware.bin -S 1:ABCDEF<...hex private key> -S 2:1234<..hex private key> Each instance of -S is in the form "index:privkey", where index is the same as above. Instead of specifying the keys manually, use -D to substitue known From 1e1edd774f1a3b44cc72aa2e44829628f1efdeb3 Mon Sep 17 00:00:00 2001 From: Jan Komarek <jan.komarek@satoshilabs.com> Date: Tue, 30 Jul 2024 18:45:52 +0200 Subject: [PATCH 555/626] chore(common): add t3b1 defs --- common/defs/support.json | 114 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/common/defs/support.json b/common/defs/support.json index 651ee196dc..eb4034d70e 100644 --- a/common/defs/support.json +++ b/common/defs/support.json @@ -343,6 +343,120 @@ "bitcoin:tPART": "incompatible fork", "misc:LSK": "Incompatible mainnet hard-fork" } + }, + "T3B1": { + "supported": { + "bitcoin:ACM": "2.8.1", + "bitcoin:AXE": "2.8.1", + "bitcoin:BCH": "2.8.1", + "bitcoin:BTC": "2.8.1", + "bitcoin:BTCP": "2.8.1", + "bitcoin:BTX": "2.8.1", + "bitcoin:CPU": "2.8.1", + "bitcoin:CRW": "2.8.1", + "bitcoin:DOGE": "2.8.1", + "bitcoin:ELEMENTS": "2.8.1", + "bitcoin:FIRO": "2.8.1", + "bitcoin:FJC": "2.8.1", + "bitcoin:FLO": "2.8.1", + "bitcoin:FTC": "2.8.1", + "bitcoin:GRS": "2.8.1", + "bitcoin:KMD": "2.8.1", + "bitcoin:KOTO": "2.8.1", + "bitcoin:LTC": "2.8.1", + "bitcoin:MONA": "2.8.1", + "bitcoin:PPC": "2.8.1", + "bitcoin:QTUM": "2.8.1", + "bitcoin:REGTEST": "2.8.1", + "bitcoin:RITO": "2.8.1", + "bitcoin:RVN": "2.8.1", + "bitcoin:SMART": "2.8.1", + "bitcoin:SYS": "2.8.1", + "bitcoin:TAZ": "2.8.1", + "bitcoin:TBCH": "2.8.1", + "bitcoin:TEST": "2.8.1", + "bitcoin:UNO": "2.8.1", + "bitcoin:VIA": "2.8.1", + "bitcoin:VIPS": "2.8.1", + "bitcoin:XPM": "2.8.1", + "bitcoin:XRC": "2.8.1", + "bitcoin:XSN": "2.8.1", + "bitcoin:XVG": "2.8.1", + "bitcoin:ZCR": "2.8.1", + "bitcoin:ZEC": "2.8.1", + "bitcoin:tFIRO": "2.8.1", + "bitcoin:tGRS": "2.8.1", + "bitcoin:tLTC": "2.8.1", + "bitcoin:tPPC": "2.8.1", + "bitcoin:tQTUM": "2.8.1", + "bitcoin:tRVN": "2.8.1", + "bitcoin:tSMART": "2.8.1", + "erc20:bnb:ATOM": "2.8.1", + "erc20:eth:AAVE": "2.8.1", + "erc20:eth:APE": "2.8.1", + "erc20:eth:AXS": "2.8.1", + "erc20:eth:BUSD": "2.8.1", + "erc20:eth:CHZ": "2.8.1", + "erc20:eth:CRO": "2.8.1", + "erc20:eth:DAI": "2.8.1", + "erc20:eth:FRAX": "2.8.1", + "erc20:eth:LEO": "2.8.1", + "erc20:eth:LINK": "2.8.1", + "erc20:eth:MANA": "2.8.1", + "erc20:eth:MATIC": "2.8.1", + "erc20:eth:OKB": "2.8.1", + "erc20:eth:QNT": "2.8.1", + "erc20:eth:SAND": "2.8.1", + "erc20:eth:SHIB": "2.8.1", + "erc20:eth:STETH": "2.8.1", + "erc20:eth:UNI": "2.8.1", + "erc20:eth:USDC": "2.8.1", + "erc20:eth:USDT": "2.8.1", + "erc20:eth:WBTC": "2.8.1", + "erc20:eth:XCN": "2.8.1", + "erc20:matic:WAVAX": "2.8.1", + "eth:BNB:56": "2.8.1", + "eth:ETC:61": "2.8.1", + "eth:ETH:1": "2.8.1", + "eth:MATIC:137": "2.8.1", + "eth:tSEP:11155111": "2.8.1", + "eth:tHOL:17000": "2.8.1", + "misc:ADA": "2.8.1", + "misc:BNB": "2.8.1", + "misc:DSOL": "2.8.1", + "misc:MAID": "2.8.1", + "misc:OMNI": "2.8.1", + "misc:SOL": "2.8.1", + "misc:USDT": "2.8.1", + "misc:XLM": "2.8.1", + "misc:XMR": "2.8.1", + "misc:XRP": "2.8.1", + "misc:XTZ": "2.8.1", + "misc:tADA": "2.8.1", + "misc:tXRP": "2.8.1" + }, + "unsupported": { + "bitcoin:BTG": "not for T3B1 (#2793)", + "bitcoin:DASH": "not for T3B1 (#2793)", + "bitcoin:DCR": "not for T3B1 (#2793)", + "bitcoin:DGB": "not for T3B1 (#2793)", + "bitcoin:NMC": "not for T3B1 (#2793)", + "bitcoin:PART": "incompatible fork", + "bitcoin:TBTG": "not for T3B1 (#2793)", + "bitcoin:TDCR": "not for T3B1 (#2793)", + "bitcoin:TRC": "address_type collides with Bitcoin", + "bitcoin:VTC": "not for T3B1 (#2793)", + "bitcoin:tDASH": "not for T3B1 (#2793)", + "bitcoin:tPART": "incompatible fork", + "misc:EOS": "not for T3B1 (#2793)", + "misc:LSK": "Incompatible mainnet hard-fork", + "nem:XEM": "not for T3B1 (#2793)", + "nem:BREEZE": "not for T3B1 (#2793)", + "nem:DIM": "not for T3B1 (#2793)", + "nem:DIMTOK": "not for T3B1 (#2793)", + "nem:PAC:CHS": "not for T3B1 (#2793)", + "nem:PAC:HRT": "not for T3B1 (#2793)" + } }, "T3T1": { "supported": { From 23d57949dbede42f602b6b485d59003ac3302b10 Mon Sep 17 00:00:00 2001 From: Jan Komarek <jan.komarek@satoshilabs.com> Date: Tue, 30 Jul 2024 18:52:11 +0200 Subject: [PATCH 556/626] chore(common): update eth and alt defs --- common/defs/blockchain_link.json | 24 +++++++++++++++++++ common/defs/duplicity_overrides.json | 3 --- common/defs/ethereum/networks.json | 28 ++++++++-------------- common/defs/support.json | 36 ++++++++++++++++------------ 4 files changed, 55 insertions(+), 36 deletions(-) diff --git a/common/defs/blockchain_link.json b/common/defs/blockchain_link.json index 09914fa2fe..e23201984f 100644 --- a/common/defs/blockchain_link.json +++ b/common/defs/blockchain_link.json @@ -252,5 +252,29 @@ "url": [ "https://solana-dev.trezor.io" ] + }, + "eth:ETH:1": { + "type": "blockbook", + "url": ["https://eth1.trezor.io", "https://eth2.trezor.io"] + }, + "eth:BNB:56": { + "type": "blockbook", + "url": ["https://bsc1.trezor.io"] + }, + "eth:ETC:61": { + "type": "blockbook", + "url": ["https://etc1.trezor.io", "https://etc2.trezor.io"] + }, + "eth:MATIC:137": { + "type": "blockbook", + "url": ["https://matic1.trezor.io", "https://matic2.trezor.io"] + }, + "eth:tHOL:17000": { + "type": "blockbook", + "url": ["https://holesky1.trezor.io", "https://holesky2.trezor.io"] + }, + "eth:tSEP:11155111": { + "type": "blockbook", + "url": ["https://sepolia1.trezor.io"] } } diff --git a/common/defs/duplicity_overrides.json b/common/defs/duplicity_overrides.json index 85b5a11fcc..cfd324d0c6 100644 --- a/common/defs/duplicity_overrides.json +++ b/common/defs/duplicity_overrides.json @@ -3,9 +3,6 @@ "erc20:eth:USDT": false, "eth:BNB:56": false, "eth:MATIC:137": false, - "eth:tETH:3": false, - "eth:tETH:4": false, - "eth:tETH:5": false, "misc:BNB": false, "misc:USDT": false } diff --git a/common/defs/ethereum/networks.json b/common/defs/ethereum/networks.json index 884d4beeb7..19e82558fb 100644 --- a/common/defs/ethereum/networks.json +++ b/common/defs/ethereum/networks.json @@ -9,35 +9,27 @@ "slip44": 60 }, { - "chain": "rop", - "chain_id": 3, + "chain": "hol", + "chain_id": 17000, "is_testnet": true, - "name": "Ropsten", - "shortcut": "tETH", + "name": "Holesky", + "shortcut": "tHOL", "slip44": 1 }, { - "chain": "rin", - "chain_id": 4, + "chain": "sep", + "chain_id": 11155111, "is_testnet": true, - "name": "Rinkeby", - "shortcut": "tETH", + "name": "Sepolia", + "shortcut": "tSEP", "slip44": 1 }, { - "chain": "gor", - "chain_id": 5, - "is_testnet": true, - "name": "Görli", - "shortcut": "tETH", - "slip44": 1 - }, - { - "chain": "bnb", + "chain": "bsc", "chain_id": 56, "coingecko_id": "binance-smart-chain", "is_testnet": false, - "name": "Binance Smart Chain", + "name": "BNB Smart Chain", "shortcut": "BNB", "slip44": 714 }, diff --git a/common/defs/support.json b/common/defs/support.json index eb4034d70e..fbb9a240d7 100644 --- a/common/defs/support.json +++ b/common/defs/support.json @@ -83,9 +83,8 @@ "eth:ETC:61": "1.11.3", "eth:ETH:1": "1.11.3", "eth:MATIC:137": "1.11.3", - "eth:tETH:3": "1.6.2", - "eth:tETH:4": "1.11.3", - "eth:tETH:5": "1.11.3", + "eth:tSEP:11155111": "1.11.3", + "eth:tHOL:17000": "1.11.3", "misc:MAID": "1.7.2", "misc:OMNI": "1.7.2", "misc:USDT": "1.7.2", @@ -189,9 +188,8 @@ "eth:ETC:61": "2.6.1", "eth:ETH:1": "2.6.1", "eth:MATIC:137": "2.6.1", - "eth:tETH:3": "2.6.1", - "eth:tETH:4": "2.6.1", - "eth:tETH:5": "2.6.1", + "eth:tSEP:11155111": "2.6.4", + "eth:tHOL:17000": "2.6.4", "misc:ADA": "2.6.1", "misc:BNB": "2.6.1", "misc:DSOL": "2.6.4", @@ -313,9 +311,8 @@ "eth:ETC:61": "2.5.3", "eth:ETH:1": "2.5.3", "eth:MATIC:137": "2.5.3", - "eth:tETH:3": "2.0.7", - "eth:tETH:4": "2.5.3", - "eth:tETH:5": "2.5.3", + "eth:tSEP:11155111": "2.6.4", + "eth:tHOL:17000": "2.6.4", "misc:ADA": "2.0.8", "misc:BNB": "2.1.5", "misc:DSOL": "2.6.4", @@ -344,7 +341,7 @@ "misc:LSK": "Incompatible mainnet hard-fork" } }, - "T3B1": { + "T3B1": { "supported": { "bitcoin:ACM": "2.8.1", "bitcoin:AXE": "2.8.1", @@ -533,9 +530,8 @@ "eth:ETC:61": "2.6.1", "eth:ETH:1": "2.6.1", "eth:MATIC:137": "2.6.1", - "eth:tETH:3": "2.6.1", - "eth:tETH:4": "2.6.1", - "eth:tETH:5": "2.6.1", + "eth:tSEP:11155111": "2.6.1", + "eth:tHOL:17000": "2.6.1", "misc:ADA": "2.6.1", "misc:BNB": "2.6.1", "misc:DSOL": "2.6.4", @@ -618,7 +614,12 @@ "bitcoin:tFIRO": true, "bitcoin:tLTC": true, "bitcoin:tPPC": true, - "eth:tETH:3": true, + "eth:BNB:56": true, + "eth:ETC:61": true, + "eth:ETH:1": true, + "eth:MATIC:137": true, + "eth:tSEP:11155111": true, + "eth:tHOL:17000": true, "misc:ADA": true, "misc:BNB": true, "misc:DSOL": true, @@ -652,7 +653,12 @@ "bitcoin:TEST": true, "bitcoin:VTC": true, "bitcoin:ZEC": true, - "eth:tETH:3": true, + "eth:BNB:56": true, + "eth:ETC:61": true, + "eth:ETH:1": true, + "eth:MATIC:137": true, + "eth:tSEP:11155111": true, + "eth:tHOL:17000": true, "misc:ADA": true, "misc:DSOL": true, "misc:SOL": true, From d6db9dd3e69b1408b83ef8b5f93e75cf12319aed Mon Sep 17 00:00:00 2001 From: Jan Komarek <jan.komarek@satoshilabs.com> Date: Wed, 31 Jul 2024 15:18:56 +0200 Subject: [PATCH 557/626] chore(common): remove unused defs --- common/defs/support.json | 99 ---------------------------------------- 1 file changed, 99 deletions(-) diff --git a/common/defs/support.json b/common/defs/support.json index fbb9a240d7..d794681090 100644 --- a/common/defs/support.json +++ b/common/defs/support.json @@ -568,104 +568,5 @@ "nem:PAC:CHS": "not for T3T1 (#2793)", "nem:PAC:HRT": "not for T3T1 (#2793)" } - }, - "connect": { - "supported": { - "bitcoin:ACM": true, - "bitcoin:AXE": true, - "bitcoin:BCH": true, - "bitcoin:BTC": true, - "bitcoin:BTCP": true, - "bitcoin:BTG": true, - "bitcoin:BTX": true, - "bitcoin:DASH": true, - "bitcoin:DCR": true, - "bitcoin:DGB": true, - "bitcoin:DOGE": true, - "bitcoin:FIRO": true, - "bitcoin:FJC": true, - "bitcoin:FLO": true, - "bitcoin:FTC": true, - "bitcoin:KMD": true, - "bitcoin:KOTO": true, - "bitcoin:LTC": true, - "bitcoin:MONA": true, - "bitcoin:NMC": true, - "bitcoin:PPC": true, - "bitcoin:REGTEST": true, - "bitcoin:RITO": true, - "bitcoin:RVN": true, - "bitcoin:SYS": true, - "bitcoin:TAZ": true, - "bitcoin:TBCH": true, - "bitcoin:TBTG": true, - "bitcoin:TDCR": true, - "bitcoin:TEST": true, - "bitcoin:UNO": true, - "bitcoin:VIA": true, - "bitcoin:VTC": true, - "bitcoin:XPM": true, - "bitcoin:XRC": true, - "bitcoin:XSN": true, - "bitcoin:XVG": true, - "bitcoin:ZCR": true, - "bitcoin:ZEC": true, - "bitcoin:tDASH": true, - "bitcoin:tFIRO": true, - "bitcoin:tLTC": true, - "bitcoin:tPPC": true, - "eth:BNB:56": true, - "eth:ETC:61": true, - "eth:ETH:1": true, - "eth:MATIC:137": true, - "eth:tSEP:11155111": true, - "eth:tHOL:17000": true, - "misc:ADA": true, - "misc:BNB": true, - "misc:DSOL": true, - "misc:EOS": true, - "misc:SOL": true, - "misc:XLM": true, - "misc:XRP": true, - "misc:XTZ": true, - "misc:tADA": true, - "misc:tXRP": true, - "nem:BREEZE": true, - "nem:DIM": true, - "nem:DIMTOK": true, - "nem:PAC:CHS": true, - "nem:PAC:HRT": true, - "nem:XEM": true - }, - "unsupported": {} - }, - "suite": { - "supported": { - "bitcoin:BCH": true, - "bitcoin:BTC": true, - "bitcoin:BTG": true, - "bitcoin:DASH": true, - "bitcoin:DGB": true, - "bitcoin:DOGE": true, - "bitcoin:LTC": true, - "bitcoin:NMC": true, - "bitcoin:REGTEST": true, - "bitcoin:TEST": true, - "bitcoin:VTC": true, - "bitcoin:ZEC": true, - "eth:BNB:56": true, - "eth:ETC:61": true, - "eth:ETH:1": true, - "eth:MATIC:137": true, - "eth:tSEP:11155111": true, - "eth:tHOL:17000": true, - "misc:ADA": true, - "misc:DSOL": true, - "misc:SOL": true, - "misc:XRP": true, - "misc:tADA": true, - "misc:tXRP": true - }, - "unsupported": {} } } From 94a7ff5d324ac27036167642952e1f2c33b99e01 Mon Sep 17 00:00:00 2001 From: Jan Komarek <jan.komarek@satoshilabs.com> Date: Mon, 26 Aug 2024 19:01:31 +0200 Subject: [PATCH 558/626] chore(common): remove ropsten and rinkeby from fixtures --- .../fixtures/ethereum/sign_tx_eip155.json | 38 ----------- tests/ui_tests/fixtures.json | 64 ------------------- 2 files changed, 102 deletions(-) diff --git a/common/tests/fixtures/ethereum/sign_tx_eip155.json b/common/tests/fixtures/ethereum/sign_tx_eip155.json index b31965bae1..451d148161 100644 --- a/common/tests/fixtures/ethereum/sign_tx_eip155.json +++ b/common/tests/fixtures/ethereum/sign_tx_eip155.json @@ -23,44 +23,6 @@ "sig_s": "4ae58ccd3bacee07cdc4a3e8540544fd009c4311af7048122da60f2054c07ee4" } }, - { - "name": "Ropsten", - "parameters": { - "chain_id": 3, - "path": "m/44'/1'/0'/0/0", - "nonce": "0x0", - "gas_price": "0x4a817c800", - "gas_limit": "0x5208", - "value": "0x2540be400", - "to_address": "0x8eA7a3fccC211ED48b763b4164884DDbcF3b0A98", - "tx_type": null, - "data": "" - }, - "result": { - "sig_v": 42, - "sig_r": "9d49a5c234a134bc56d00a7cf0c208c97d746f002c1fd3609b643eb8ef99d07d", - "sig_s": "3f064e133624cb59f8103fd5de76c089d8754e3da233a59d2ab2ca47fc306837" - } - }, - { - "name": "Rinkeby", - "parameters": { - "chain_id": 4, - "path": "m/44'/1'/0'/0/0", - "nonce": "0x0", - "gas_price": "0x4a817c800", - "gas_limit": "0x5208", - "value": "0x2540be400", - "to_address": "0x8eA7a3fccC211ED48b763b4164884DDbcF3b0A98", - "tx_type": null, - "data": "" - }, - "result": { - "sig_v": 43, - "sig_r": "79a9fd0391f027ed518f3d796a598bf33eef0fb30ef22568a140d674d6b0b76c", - "sig_s": "408cd459abafcdb7f2e415b269c85a308aad4c53e63c01d3431d3db6ab6292dd" - } - }, { "name": "ETC", "parameters": { diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 4c00d0d16a..92c5c5cff5 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -457,8 +457,6 @@ "T1B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", "T1B1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", "T1B1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1B1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", -"T1B1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", "T1B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", "T1B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", "T1B1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "8b432aba21bc4344814cceaf693e114b9d3e3d6ceb83c3a6af7c3ed0f9b37449", @@ -478,8 +476,6 @@ "T1B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "90feef1fdcd162209a948c127df638c09bee0444fee40f2d30dbff21658d83ef", "T1B1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", "T1B1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", -"T1B1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", -"T1B1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "937894301354c759d2221ed56286e7df6c6696fa4be3d61846cb3307fd428d21", "T1B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", "T1B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4552f9a68c62613e1ef7df68c1f47f7d4888c4505f0586012b71c07acba1fbcb", "T1B1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "8b432aba21bc4344814cceaf693e114b9d3e3d6ceb83c3a6af7c3ed0f9b37449", @@ -1846,8 +1842,6 @@ "T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7a19dec8ca3e0d7b63b4d89e25f87cb7c0759ba57929a53523829ac5f7908fe3", "T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", "T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "8e216a589fc798163e1a8f28deb17850a948b8917fa3df7ae5352505c9762487", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "8e216a589fc798163e1a8f28deb17850a948b8917fa3df7ae5352505c9762487", "T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", "T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", "T2B1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "7d735b66b9b733594b277339bbe09be1bac72a45ef57e15f1e57b123a8401fd8", @@ -1867,8 +1861,6 @@ "T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1f35d44082179825cbc9d020563ee3ab4f162950a4e282e57dbad976655f7fbe", "T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", "T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "a54a0f8e9448aa7797e4d36c2cdfd542bf2732e4c68cff475e7fa506d33a546f", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "a54a0f8e9448aa7797e4d36c2cdfd542bf2732e4c68cff475e7fa506d33a546f", "T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", "T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", "T2B1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "60f3db675f134312d0185ee768f8019ccbc34c894368d109d7f5bbed200aafae", @@ -3214,8 +3206,6 @@ "T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "53a3aca737c843cdbef9e3eda6f6b09d468162cbe3b1846af23c7b4be7a60046", "T2B1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", "T2B1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "2b37ddb77289de24f2ff705161350dc96f3815892ce66ab42be406570c1c8fb3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "2b37ddb77289de24f2ff705161350dc96f3815892ce66ab42be406570c1c8fb3", "T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", "T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", "T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "f4fb7992803186f5a687afb0ddaea574abe8ad8abfb37554769d21a46d3d759d", @@ -3235,8 +3225,6 @@ "T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "7d516ed2cfa85e25cf239f7304e521a20acac7d7a897a1f440ff8f0680179d5d", "T2B1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", "T2B1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0f58e84e6da023008bac1aa6eeea9a435654f98a88f3b42fd62c328615d1bbce", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0f58e84e6da023008bac1aa6eeea9a435654f98a88f3b42fd62c328615d1bbce", "T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", "T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", "T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "c655d608604a2ae2f7d3583688830bab10a99335d1e2c0b87c6b9a1568c4d7a6", @@ -4582,8 +4570,6 @@ "T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "23184ecbdfc938c3dc53e135b9fba21b8425e23a7e45bb260b5df19b48d24524", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "394e362bd6cf1a6c66265834a36f77b8cc9d4caf4b416789d71a9f423e32ed07", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "394e362bd6cf1a6c66265834a36f77b8cc9d4caf4b416789d71a9f423e32ed07", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", "T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "5c7a9a61fdeefc03fa200516624cc793c4cdcb5b9741a8b6db91d74e8de78ff4", @@ -4603,8 +4589,6 @@ "T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ff053d1856c67af52a039982a112f25c50f5a8900fff73a79a74e115080ede01", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "bc2162643b6fb561fdc6830743fb29e7bf65ef2c84efb624bdf2d12f80625f4a", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "bc2162643b6fb561fdc6830743fb29e7bf65ef2c84efb624bdf2d12f80625f4a", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", "T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "6c1aac437606774c1b3ccb4d39f65f64029552a9bf60ddad9e9127e4a9f69c21", @@ -5950,8 +5934,6 @@ "T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "90d125097b25f6c485f610a71575d17f93de39480360b0b0cb3b0b2cf3f868c5", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "d1ed083a179e295aae354595cd0cd5bde7d00187ecf313d35bdee920a197f15b", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "d1ed083a179e295aae354595cd0cd5bde7d00187ecf313d35bdee920a197f15b", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", "T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "5bf76005b87bc0f508fe21453d1c05f4176bb1a0bbdbd1dfe84189c897c58ded", @@ -5971,8 +5953,6 @@ "T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "35f2cc536ee7b000ce3d7ca074185dfada3fd47d44d7d5e22fa48156fb67913f", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "352f12af7c1d22782e3a20dc252dc64d5cf6e004ef3e204800a5923da3da3148", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "352f12af7c1d22782e3a20dc252dc64d5cf6e004ef3e204800a5923da3da3148", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", "T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "404935ea33061384c838ce800777e1b8d7043577098fe9e8e620858ba9f5f16d", @@ -7318,8 +7298,6 @@ "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7fd3bde10c03d5b814ab211154230c58f18260cd92708a5a1100ae43b519b303", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "c1a4ac33ff04f1879c852b3885b9fb58d47b2905598b498724e60fad293c343f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "c1a4ac33ff04f1879c852b3885b9fb58d47b2905598b498724e60fad293c343f", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", "T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "2af7a0c0cf008db7926240ede75225f4d6ae3cdcd013a7ba0d7c0d4ae0c70c00", @@ -7339,8 +7317,6 @@ "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9b2c88fad6a10221c22a7053ddb4db8fc600aabe13abbb67a3744cfb337205cb", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "214838115a5e128449b0231d8613a862e832ff611c2ff0035201ba5d52a23a7d", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "214838115a5e128449b0231d8613a862e832ff611c2ff0035201ba5d52a23a7d", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", "T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "0b36eaa4ffa4e98e2e05128376357b868ed6581230cd2d00a65f0939ac6013c7", @@ -8998,8 +8974,6 @@ "T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0d23a2f7562795f98415879966258c8678c2b8242b5b54fcc1c736daac93a4e3", "T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", "T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0a8a1aff3aae84f5dbf9c102b4b0b979e0be025f8e9654947f76ddcffcb8b684", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0a8a1aff3aae84f5dbf9c102b4b0b979e0be025f8e9654947f76ddcffcb8b684", "T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", "T2T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "05b1fee58b9dd38dc17580e3cccdf0256f8148a589067bb0ab6bdf8bbe732c40", "T2T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "554e6136b09ac2120fb94a8bcf3c0fe6d0fd15711c54424d157463aa4a27a6cd", @@ -9019,8 +8993,6 @@ "T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "f11763bbdb0984feba9cda8fd7e27f3c29f422acfb8f3c33a1d3c461316ce6dc", "T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", "T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "045ab58e5228e001327f01a8b11b11e5881ab18afed272c8c6ffc507ffb4ba6d", -"T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "045ab58e5228e001327f01a8b11b11e5881ab18afed272c8c6ffc507ffb4ba6d", "T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", "T2T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "2bb3ad9d62b82bfdc4b9b63db6819a042d276c54ed34aaf0ec81e7648dcb6f15", "T2T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "b15f9caeb5627b7de07e4a3ba80dd662315398aa0577b4aa850bf04870d96ae6", @@ -10446,8 +10418,6 @@ "T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "9b24333cad04e517540786994a66d51929e3c892fd2ccc6b48eef1ae5b8306a9", "T2T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", "T2T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "ac03ac36e181810e3f88bbe9a6417ed201de7d8188841f8a686540701edff076", -"T2T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "ac03ac36e181810e3f88bbe9a6417ed201de7d8188841f8a686540701edff076", "T2T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", "T2T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "32accd88b9e4bd8403e49f50bda9d7c5535f19ff87e2c51e0729a82aaf678c61", "T2T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "bf46a2d0c525fae4e7c3a37c31b7a7ced8c22524ecf20ee3f56ae8c0a6d7c651", @@ -10467,8 +10437,6 @@ "T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ccaaa0ba67fafbc5fff1db2775156efb5f891e162a1ac981d2083d5e5593e544", "T2T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", "T2T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "c505b2e84a72f486093491b637047df4a8a5ee42aa3d826e47c9f9245d80a95c", -"T2T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "c505b2e84a72f486093491b637047df4a8a5ee42aa3d826e47c9f9245d80a95c", "T2T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", "T2T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "826b367619ce4c17b9a73542bac5fcb1e04ddd44aa7252939f1c8b778e7415af", "T2T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "cebc4d3abfede9b91cd438941570e7f8f3ef00a4f1ad13ac8b59189a69297a69", @@ -11894,8 +11862,6 @@ "T2T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "089129c3cf550128d8f2c9f54e50a0705f6094a1944a17a9575dca950cd57a22", "T2T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", "T2T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", -"T2T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", -"T2T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "b2ca4fea79015cdb99b128ee137b6a2e6a7f6baac44c4d26e1eeb0a9b08f1315", "T2T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", "T2T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b71d381dcc2c67bd4f50e5c4c9fde74eebe99c3f88030a83e69586a9891d7780", "T2T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "c2977250dbd06ad14031de715da17175f5c9db6ddbc3abf3f41b641c68f2e954", @@ -11915,8 +11881,6 @@ "T2T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d672cf971c908bb336356df29037283651ab3ce88e998e25435fd84aeac6fefe", "T2T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", "T2T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", -"T2T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", -"T2T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "f5d7bab7cb8b1cab1e1856c91a0af105fe034383c6699cc3395c3efc6fc9dc9f", "T2T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", "T2T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "62d6ad021dfc6541a8d87ef99f13b5c8c206d417f51a90cf8eed0e926f1f2d42", "T2T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "1f28dfb98015aca1acdee20dff8a1100892ca40b3a7ba5df80c21629c7cbdfdf", @@ -13360,8 +13324,6 @@ "T2T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "83b62cdf961627ef8d389ae253d44aac5fbc748715fd11b659ae43712ceeb0ad", "T2T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", "T2T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", -"T2T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "73f33065179da23455b439a090619c7f482a6d87c8fe5ca6b735c82c5cf326c3", -"T2T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "73f33065179da23455b439a090619c7f482a6d87c8fe5ca6b735c82c5cf326c3", "T2T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", "T2T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "f379598c2c597a956cbcc8f968b50085fcd360df875a794cade7529379f27376", "T2T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "0d16f2e4c29244d2805ae4d00bdfada039d5f339424b891ad36c6ed4ce271081", @@ -13381,8 +13343,6 @@ "T2T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "7c6b28f9f3c2efd5102742e97ae9a1839eed329cfd0d8ad68bd02b8cc443e503", "T2T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", "T2T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", -"T2T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "2b281ec5b27b9f818be53a0772d39d252ab9b60099cbba9a513bb5ac4b871910", -"T2T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2b281ec5b27b9f818be53a0772d39d252ab9b60099cbba9a513bb5ac4b871910", "T2T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", "T2T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8ae8b9306e289b28174f791020b3d95eb261d00b807473c390890a9f501fb91f", "T2T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "6c69663945f7704b67ce6b660fbcc32d11063d67d8b9efb2e71822b58813fe6d", @@ -14808,8 +14768,6 @@ "T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "bbec18c01a724e5ffde5df42ad0af988aa9c4849613aa13d352f8531782072ea", "T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", "T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0fe58e49ad825d46a38a3a7f2f11569abf074579d8d244831cd5e1a4fce9aafc", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0fe58e49ad825d46a38a3a7f2f11569abf074579d8d244831cd5e1a4fce9aafc", "T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", "T2T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e3d05345b6a304699372e414999548604b66992f1661fcee97bfb85a92ad9b0d", "T2T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "266e45aa3b7d81a06f629daba6a83d9ff98cea8b5833d04afb686706dd056dfe", @@ -14829,8 +14787,6 @@ "T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "c4bd32721d0e912b80ca9db457767123c2f4d71b9a94c1add122e43665dfbbbd", "T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", "T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "0d506bbc5cd588f9ae90dd5d0dfee2865af66049a8ffb55eb3a5769c5895174f", -"T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "0d506bbc5cd588f9ae90dd5d0dfee2865af66049a8ffb55eb3a5769c5895174f", "T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", "T2T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "af7b913a5ad8749c6ecd659864a0771fabf4f109f019403daa018302b61219d8", "T2T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "469d1ec1899d167cd9436151dd8184c9134f8404aeeae7078fe95b0219634a5f", @@ -16445,8 +16401,6 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "be67eda15be006788fe978c6fb2978c8d18facac74a2751a41b020db743e5e78", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "1585e32b240e0f287f8adcc722ac757f2c7695ebd5fd8c3f2bd5542bf0315bd1", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "1585e32b240e0f287f8adcc722ac757f2c7695ebd5fd8c3f2bd5542bf0315bd1", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "eec7b497b4e5d405a896edc37e9e81c4d91d73cdf669ec4c21a7dfaef473410f", "T3T1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "29c0e76c6e87b280122fc437800d6152dff0b535c97d64951d4bada2f6923ff3", @@ -16466,8 +16420,6 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9ada158dac0fd43c9120e1340295938365badbd9f07d30fa9c3692f628a36232", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "89e0aaed15b81ecfcdaec65a32a7ffd3f8d60851b76180bbffa67bf66a1d50ab", -"T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "89e0aaed15b81ecfcdaec65a32a7ffd3f8d60851b76180bbffa67bf66a1d50ab", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "d3780ffba0d2cbf5d34d8563b285998aebbff5f3f786d63a12d7ea5119869d8d", "T3T1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "4497490434dc7b02c09cb455175ac96b24cb3f5d52c3734fb038d4fb3c249a1a", @@ -17791,8 +17743,6 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "638eda9e28fe166c900cbdf9eaaabd15dd8a8370528f17374c48d926b3090682", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "f620d1d2fbeed916839c388d46a4d484343a43983fae08e235f3937edc6161f7", -"T3T1_de_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "f620d1d2fbeed916839c388d46a4d484343a43983fae08e235f3937edc6161f7", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "33a2d3cb5cfd3d399bc3803c6821beb5eeb3761019f192a1bf2a1aef7b44888a", "T3T1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "496762dabe501f45b8629a29990e3337a3fb690556e0d8fbf298a4ea8d2e984d", @@ -17812,8 +17762,6 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "81373751b8ba43472cf8fd47c2085bae4eaf5b245b34448665ca1361ce5e9048", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "88d416665629ea2cf1d4b99b8ae7f82ecea60699e993aa658f0694a9f1fec3f1", -"T3T1_de_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "88d416665629ea2cf1d4b99b8ae7f82ecea60699e993aa658f0694a9f1fec3f1", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "fdd24bf8d4d1da902e48f7b37b9faae029a59a07c9d00d7371a42ecb9da2260a", "T3T1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "d74c430901a5c1cb6df41f38a4527774e592eb484b5b2983b773126a421e06e5", @@ -19137,8 +19085,6 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "95fcf561db853878ec6fdbaa1529cdcd64a6fcc29c6d6bf1ddc085f44c957a1f", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "97c1c18900c6e13ffb87eef423366e0d837d260d1e4bbcdb3dd1dcfb4e02ef44", -"T3T1_en_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "97c1c18900c6e13ffb87eef423366e0d837d260d1e4bbcdb3dd1dcfb4e02ef44", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "c6a1f1412737284f448906f4fff1503cdfe501580ac20c4df42b218ba2a12d20", "T3T1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "5a142ae14f8b19bde071fde2e45ec322a9d09d888167daa5ff6a0c7ee2da4820", @@ -19158,8 +19104,6 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "0d4c80ec8b5063bceaecfeeefb05b88c45c520b9cd600db1332fd69cd59a9ed0", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "3f00e3fbda900ea0bd0be4d90bbb89295b30f9fcd0ef3c3c5f99ae05599c95ab", -"T3T1_en_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "3f00e3fbda900ea0bd0be4d90bbb89295b30f9fcd0ef3c3c5f99ae05599c95ab", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "5fc3eb72f1f0c5cc8fd2486e7cc84b04fcac34a7e14df3a205dba57f86f89ffa", "T3T1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "b79f262928821e60e6e11eba33b63ee19be7d245f3b964d48d9e2083e6e7876a", @@ -20483,8 +20427,6 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "1f6a89049097f5e72dc79752aaf3d5a9ec20710b379381eee33a7e88485b0804", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "42ea2a481ae97e29c0347f54349d87f780ebe32117c3cc301daa482d9f992089", -"T3T1_es_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "42ea2a481ae97e29c0347f54349d87f780ebe32117c3cc301daa482d9f992089", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ea5c95ac2940fea53bbf04ed669f1b0876939fde62673b33d70772e27e497f76", "T3T1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "469c502264b1dae4c59c7e4e63d67636830eacfab49335375ebdbbecdfe4f21d", @@ -20504,8 +20446,6 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "d0e3f869ab4c97978ed4923b64e2a31aa9b1e3a2cfc5bf8a930a3f98acfeec19", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "67aaf779ec290c0bd7b9a0b8242b870f5e26bc6950e321e5079ccd13ceeafa2a", -"T3T1_es_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "67aaf779ec290c0bd7b9a0b8242b870f5e26bc6950e321e5079ccd13ceeafa2a", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "810118d969e5feed9f85aa72777cb7ee0eef68e780619c6596245598e80d0c04", "T3T1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "9e0a8526fc03b75751f5abe9f0eefaec72aa3f65e6982bfbba029ff7fdec39ac", @@ -21829,8 +21769,6 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "b11ecfdde8e5f71c971ea974481c3caf9788dfdf4ff8c6688669a829857eea0a", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Rinkeby]": "0b1533e3d291e89fe21b3542a44a7791fc307d94d5972896a04db133db0ff915", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Ropsten]": "0b1533e3d291e89fe21b3542a44a7791fc307d94d5972896a04db133db0ff915", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "1e2165e7bcc38439c6f857ce6213f3f8448a8d8128216e21f54ac089a76dda1d", "T3T1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "14cd47754efdaf800f2c804c63117b3f52fbb58d24361fdb59400869ac306783", @@ -21850,8 +21788,6 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "a95c7b1c72aa9381c31401d5d8e6d4926dbf3cb9a9b7350aa96e3c4870389200", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Rinkeby]": "2b302d2e78e75cf7c6061310d7d51f83c5458172b8287c67c3a009aff81beac4", -"T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Ropsten]": "2b302d2e78e75cf7c6061310d7d51f83c5458172b8287c67c3a009aff81beac4", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "52c265d34c2ec3baff522662cdd639abc7b1395fa3f3e64777a5831453fdfc9b", "T3T1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "bfd12a49430db12fd0f664ea483061b3d0de2d41cafca9229c126ddfc703fccf", From b42ae4494b35155e2d50bf2ebfc257fe6e98868f Mon Sep 17 00:00:00 2001 From: Jan Komarek <jan.komarek@satoshilabs.com> Date: Mon, 26 Aug 2024 19:02:03 +0200 Subject: [PATCH 559/626] chore(common): remove ropsten from defs --- common/defs/blockchain_link.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/common/defs/blockchain_link.json b/common/defs/blockchain_link.json index e23201984f..15cc7901b7 100644 --- a/common/defs/blockchain_link.json +++ b/common/defs/blockchain_link.json @@ -205,13 +205,6 @@ "https://eth2.trezor.io" ] }, - "eth:tROP": { - "type": "blockbook", - "url": [ - "https://ropsten1.trezor.io", - "https://ropsten2.trezor.io" - ] - }, "misc:XRP": { "type": "ripple", "url": [ From 3f64f05b8cbaccc4b54968f5c99802c81c60e8c1 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 27 Aug 2024 10:55:48 +0200 Subject: [PATCH 560/626] chore(common): revert supported versions for T1B1 and T2T1 to correct values --- common/defs/support.json | 76 ++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/common/defs/support.json b/common/defs/support.json index d794681090..01dc0a60ef 100644 --- a/common/defs/support.json +++ b/common/defs/support.json @@ -56,33 +56,33 @@ "bitcoin:tRVN": "1.10.0", "bitcoin:tSMART": "1.7.1", "erc20:bnb:ATOM": "1.11.3", - "erc20:eth:AAVE": "1.11.3", + "erc20:eth:AAVE": "1.10.4", "erc20:eth:APE": "1.11.3", - "erc20:eth:AXS": "1.11.3", - "erc20:eth:BUSD": "1.11.3", + "erc20:eth:AXS": "1.10.3", + "erc20:eth:BUSD": "1.9.0", "erc20:eth:CHZ": "1.11.3", "erc20:eth:CRO": "1.11.3", - "erc20:eth:DAI": "1.11.3", + "erc20:eth:DAI": "1.11.2", "erc20:eth:FRAX": "1.11.3", - "erc20:eth:LEO": "1.11.3", + "erc20:eth:LEO": "1.8.4", "erc20:eth:LINK": "1.11.3", - "erc20:eth:MANA": "1.11.3", - "erc20:eth:MATIC": "1.11.3", - "erc20:eth:OKB": "1.11.3", - "erc20:eth:QNT": "1.11.3", + "erc20:eth:MANA": "1.6.2", + "erc20:eth:MATIC": "1.9.0", + "erc20:eth:OKB": "1.9.5", + "erc20:eth:QNT": "1.6.3", "erc20:eth:SAND": "1.11.3", - "erc20:eth:SHIB": "1.11.3", + "erc20:eth:SHIB": "1.10.4", "erc20:eth:STETH": "1.11.3", - "erc20:eth:UNI": "1.11.3", - "erc20:eth:USDC": "1.11.3", - "erc20:eth:USDT": "1.11.3", - "erc20:eth:WBTC": "1.11.3", + "erc20:eth:UNI": "1.9.5", + "erc20:eth:USDC": "1.7.1", + "erc20:eth:USDT": "1.8.0", + "erc20:eth:WBTC": "1.8.0", "erc20:eth:XCN": "1.11.3", "erc20:matic:WAVAX": "1.11.3", - "eth:BNB:56": "1.11.3", - "eth:ETC:61": "1.11.3", - "eth:ETH:1": "1.11.3", - "eth:MATIC:137": "1.11.3", + "eth:BNB:56": "1.9.4", + "eth:ETC:61": "1.6.2", + "eth:ETH:1": "1.6.2", + "eth:MATIC:137": "1.9.4", "eth:tSEP:11155111": "1.11.3", "eth:tHOL:17000": "1.11.3", "misc:MAID": "1.7.2", @@ -284,35 +284,35 @@ "bitcoin:tRVN": "2.4.0", "bitcoin:tSMART": "2.0.8", "erc20:bnb:ATOM": "2.5.3", - "erc20:eth:AAVE": "2.5.3", + "erc20:eth:AAVE": "2.4.3", "erc20:eth:APE": "2.5.3", - "erc20:eth:AXS": "2.5.3", - "erc20:eth:BUSD": "2.5.3", + "erc20:eth:AXS": "2.4.2", + "erc20:eth:BUSD": "2.3.0", "erc20:eth:CHZ": "2.5.3", "erc20:eth:CRO": "2.5.3", - "erc20:eth:DAI": "2.5.3", + "erc20:eth:DAI": "2.5.2", "erc20:eth:FRAX": "2.5.3", - "erc20:eth:LEO": "2.5.3", + "erc20:eth:LEO": "2.1.8", "erc20:eth:LINK": "2.5.3", - "erc20:eth:MANA": "2.5.3", - "erc20:eth:MATIC": "2.5.3", - "erc20:eth:OKB": "2.5.3", - "erc20:eth:QNT": "2.5.3", + "erc20:eth:MANA": "2.0.7", + "erc20:eth:MATIC": "2.3.0", + "erc20:eth:OKB": "2.3.7", + "erc20:eth:QNT": "2.0.8", "erc20:eth:SAND": "2.5.3", - "erc20:eth:SHIB": "2.5.3", + "erc20:eth:SHIB": "2.4.3", "erc20:eth:STETH": "2.5.3", - "erc20:eth:UNI": "2.5.3", - "erc20:eth:USDC": "2.5.3", - "erc20:eth:USDT": "2.5.3", - "erc20:eth:WBTC": "2.5.3", + "erc20:eth:UNI": "2.3.7", + "erc20:eth:USDC": "2.0.8", + "erc20:eth:USDT": "2.0.10", + "erc20:eth:WBTC": "2.0.11", "erc20:eth:XCN": "2.5.3", "erc20:matic:WAVAX": "2.5.3", - "eth:BNB:56": "2.5.3", - "eth:ETC:61": "2.5.3", - "eth:ETH:1": "2.5.3", - "eth:MATIC:137": "2.5.3", - "eth:tSEP:11155111": "2.6.4", - "eth:tHOL:17000": "2.6.4", + "eth:BNB:56": "2.3.5", + "eth:ETC:61": "2.0.7", + "eth:ETH:1": "2.0.7", + "eth:MATIC:137": "2.3.5", + "eth:tSEP:11155111": "2.5.4", + "eth:tHOL:17000": "2.5.4", "misc:ADA": "2.0.8", "misc:BNB": "2.1.5", "misc:DSOL": "2.6.4", From 0b2b0d06fbc4b4ec557a1033353ecdbd46941675 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 28 Aug 2024 12:10:09 +0200 Subject: [PATCH 561/626] chore(common): add T3B1 to the list of supported models in support.json --- common/tools/coin_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/tools/coin_info.py b/common/tools/coin_info.py index 26b2c663ad..128a1bacbf 100755 --- a/common/tools/coin_info.py +++ b/common/tools/coin_info.py @@ -450,7 +450,7 @@ def _load_fido_apps() -> FidoApps: RELEASES_URL = "https://data.trezor.io/firmware/{}/releases.json" MISSING_SUPPORT_MEANS_NO = ("connect", "suite") -VERSIONED_SUPPORT_INFO = ("T1B1", "T2T1", "T2B1", "T3T1") +VERSIONED_SUPPORT_INFO = ("T1B1", "T2T1", "T2B1", "T3T1", "T3B1") def get_support_data() -> SupportData: From 4ac28e60f639db05abf286efa832df92a67f5ff2 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Wed, 28 Aug 2024 12:10:52 +0200 Subject: [PATCH 562/626] chore(core): regenerate networks [no changelog] --- core/src/apps/ethereum/networks.py | 92 ++++++++++++------------------ 1 file changed, 37 insertions(+), 55 deletions(-) diff --git a/core/src/apps/ethereum/networks.py b/core/src/apps/ethereum/networks.py index a30ef72309..39f57e9a06 100644 --- a/core/src/apps/ethereum/networks.py +++ b/core/src/apps/ethereum/networks.py @@ -66,29 +66,11 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: "ETH", # symbol "Ethereum", # name ) - yield ( - 3, # chain_id - 1, # slip44 - "tETH", # symbol - "Ropsten", # name - ) - yield ( - 4, # chain_id - 1, # slip44 - "tETH", # symbol - "Rinkeby", # name - ) - yield ( - 5, # chain_id - 1, # slip44 - "tETH", # symbol - "Görli", # name - ) yield ( 56, # chain_id 714, # slip44 "BNB", # symbol - "Binance Smart Chain", # name + "BNB Smart Chain", # name ) yield ( 61, # chain_id @@ -102,36 +84,30 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: "MATIC", # symbol "Polygon", # name ) - if utils.INTERNAL_MODEL == "T3T1": yield ( - 1, # chain_id - 60, # slip44 - "ETH", # symbol - "Ethereum", # name - ) - yield ( - 3, # chain_id + 17000, # chain_id 1, # slip44 - "tETH", # symbol - "Ropsten", # name + "tHOL", # symbol + "Holesky", # name ) yield ( - 4, # chain_id + 11155111, # chain_id 1, # slip44 - "tETH", # symbol - "Rinkeby", # name + "tSEP", # symbol + "Sepolia", # name ) + if utils.INTERNAL_MODEL == "T3T1": yield ( - 5, # chain_id - 1, # slip44 - "tETH", # symbol - "Görli", # name + 1, # chain_id + 60, # slip44 + "ETH", # symbol + "Ethereum", # name ) yield ( 56, # chain_id 714, # slip44 "BNB", # symbol - "Binance Smart Chain", # name + "BNB Smart Chain", # name ) yield ( 61, # chain_id @@ -145,36 +121,30 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: "MATIC", # symbol "Polygon", # name ) - if utils.INTERNAL_MODEL == "T2T1": - yield ( - 1, # chain_id - 60, # slip44 - "ETH", # symbol - "Ethereum", # name - ) yield ( - 3, # chain_id + 17000, # chain_id 1, # slip44 - "tETH", # symbol - "Ropsten", # name + "tHOL", # symbol + "Holesky", # name ) yield ( - 4, # chain_id + 11155111, # chain_id 1, # slip44 - "tETH", # symbol - "Rinkeby", # name + "tSEP", # symbol + "Sepolia", # name ) + if utils.INTERNAL_MODEL == "T2T1": yield ( - 5, # chain_id - 1, # slip44 - "tETH", # symbol - "Görli", # name + 1, # chain_id + 60, # slip44 + "ETH", # symbol + "Ethereum", # name ) yield ( 56, # chain_id 714, # slip44 "BNB", # symbol - "Binance Smart Chain", # name + "BNB Smart Chain", # name ) yield ( 61, # chain_id @@ -188,3 +158,15 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: "MATIC", # symbol "Polygon", # name ) + yield ( + 17000, # chain_id + 1, # slip44 + "tHOL", # symbol + "Holesky", # name + ) + yield ( + 11155111, # chain_id + 1, # slip44 + "tSEP", # symbol + "Sepolia", # name + ) From 384615c047facc4e8621e2fd3ccc5d0a5ac5e36e Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 27 Aug 2024 16:38:09 +0200 Subject: [PATCH 563/626] fix(core): fix button alignment in T3T1 bootloader [no changelog] --- core/SConscript.bootloader | 2 +- core/SConscript.bootloader_ci | 2 +- core/SConscript.bootloader_emu | 2 +- .../src/ui/model_mercury/bootloader/intro.rs | 6 +++- .../src/ui/model_mercury/bootloader/mod.rs | 28 +++++++++++++------ 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 557a30ad4c..8eb4913013 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -8,7 +8,7 @@ CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) BOOTLOADER_QA = ARGUMENTS.get('BOOTLOADER_QA', '0') == '1' PRODUCTION = 0 if BOOTLOADER_QA else ARGUMENTS.get('PRODUCTION', '0') == '1' HW_REVISION = ARGUMENTS.get('HW_REVISION', None) -NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' or TREZOR_MODEL in ('T3T1',) if TREZOR_MODEL in ('1', ): # skip bootloader build diff --git a/core/SConscript.bootloader_ci b/core/SConscript.bootloader_ci index 80adfb36f4..73e7a688c7 100644 --- a/core/SConscript.bootloader_ci +++ b/core/SConscript.bootloader_ci @@ -6,7 +6,7 @@ import tools, models TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) HW_REVISION = ARGUMENTS.get('HW_REVISION', None) -NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' or TREZOR_MODEL in ('T3T1',) if TREZOR_MODEL in ('1', 'DISC1', 'DISC2'): # skip bootloader_ci build diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index a71a7aade7..692224013b 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -6,7 +6,7 @@ import tools, models TREZOR_MODEL = ARGUMENTS.get('TREZOR_MODEL', 'T') CMAKELISTS = int(ARGUMENTS.get('CMAKELISTS', 0)) HW_REVISION = 'emulator' -NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' +NEW_RENDERING = ARGUMENTS.get('NEW_RENDERING', '1') == '1' or TREZOR_MODEL in ('T3T1',) if TREZOR_MODEL in ('1', 'DISC1', 'DISC2'): # skip bootloader build diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs index 775f8725c6..8fe0b39818 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/intro.rs @@ -44,7 +44,11 @@ impl<'a> Intro<'a> { .styled(button_bld_menu()) .with_expanded_touch_area(Insets::uniform(13)), ), - host: Child::new(Button::with_text("INSTALL FIRMWARE".into()).styled(button_bld())), + host: Child::new( + Button::with_text("INSTALL FIRMWARE".into()) + .styled(button_bld()) + .with_text_align(Alignment::Center), + ), text: Child::new(Label::left_aligned(content, TEXT_NORMAL).vertically_centered()), warn: (!fw_ok).then_some(Child::new( Label::new("FIRMWARE CORRUPTED".into(), Alignment::Start, TEXT_WARNING) diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 0acbce9665..14d0c897d3 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -5,7 +5,7 @@ use crate::{ ui::{ component::{connect::Connect, Label}, display::{self, Color, Font, Icon}, - geometry::{Offset, Point, Rect}, + geometry::{Alignment, Offset, Point, Rect}, layout::simplified::{run, show}, }, }; @@ -37,7 +37,7 @@ use super::theme::BLACK; #[cfg(feature = "new_rendering")] use crate::ui::{ display::{toif::Toif, LOADER_MAX}, - geometry::{Alignment, Alignment2D}, + geometry::Alignment2D, model_mercury::cshape::{render_loader, LoaderRange}, shape, shape::render_on_display, @@ -258,12 +258,20 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { )); let (left, right) = if should_keep_seed { - let l = Button::with_text("CANCEL".into()).styled(button_bld()); - let r = Button::with_text("INSTALL".into()).styled(button_confirm()); + let l = Button::with_text("CANCEL".into()) + .styled(button_bld()) + .with_text_align(Alignment::Center); + let r = Button::with_text("INSTALL".into()) + .styled(button_confirm()) + .with_text_align(Alignment::Center); (l, r) } else { - let l = Button::with_icon(Icon::new(X24)).styled(button_bld()); - let r = Button::with_icon(Icon::new(CHECK24)).styled(button_confirm()); + let l = Button::with_icon(Icon::new(X24)) + .styled(button_bld()) + .with_text_align(Alignment::Center); + let r = Button::with_icon(Icon::new(CHECK24)) + .styled(button_confirm()) + .with_text_align(Alignment::Center); (l, r) }; @@ -290,8 +298,12 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { ); let alert = Label::centered("SEED AND FIRMWARE\nWILL BE ERASED!".into(), TEXT_WIPE_BOLD); - let right = Button::with_text("RESET".into()).styled(button_wipe_confirm()); - let left = Button::with_text("CANCEL".into()).styled(button_wipe_cancel()); + let right = Button::with_text("RESET".into()) + .styled(button_wipe_confirm()) + .with_text_align(Alignment::Center); + let left = Button::with_text("CANCEL".into()) + .styled(button_wipe_cancel()) + .with_text_align(Alignment::Center); let mut frame = Confirm::new(BLD_WIPE_COLOR, left, right, ConfirmTitle::Icon(icon), msg) .with_alert(alert); From 43677c6afde25dedf65676a86ef727e8fea89c04 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 27 Aug 2024 12:00:46 +0200 Subject: [PATCH 564/626] style(core): add check for utils.INTERNAL_MODEL in (tuple) The static replacer doesn't understand tuples (it's just a dumb sed, we'd need to teach it the python ast which is a somewhat bigger project that would also make the build slower) so instead we spell out every "utils.INTERNAL_MODEL == xyz" equality check separately. If you don't, you don't get static replacement and you're checking at run-time in every firmware for every device. This pylint will catch the problem. --- .pylintrc | 1 + .../trezor_pylint_plugin.py | 48 ++++++++++++++++++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/.pylintrc b/.pylintrc index e47f2bc6c9..cefee09d88 100644 --- a/.pylintrc +++ b/.pylintrc @@ -35,3 +35,4 @@ enable= useless-else-on-loop, useless-object-inheritance, async-awaitable-return, + internal-model-tuple-comparison, diff --git a/tools/trezor-pylint-plugin/trezor_pylint_plugin.py b/tools/trezor-pylint-plugin/trezor_pylint_plugin.py index 4c5879d3dc..0cc97e2abb 100644 --- a/tools/trezor-pylint-plugin/trezor_pylint_plugin.py +++ b/tools/trezor-pylint-plugin/trezor_pylint_plugin.py @@ -1,4 +1,4 @@ -from astroid import AsyncFunctionDef +from astroid import nodes from pylint.checkers import BaseChecker from pylint.checkers.utils import check_messages from pylint.interfaces import IAstroidChecker @@ -18,12 +18,56 @@ class AsyncAwaitableChecker(BaseChecker): } @check_messages("async-awaitable-return") - def visit_asyncfunctiondef(self, node: AsyncFunctionDef): + def visit_asyncfunctiondef(self, node: nodes.AsyncFunctionDef): # Check if the return type is explicitly an Awaitable if node.returns and "Awaitable" in node.returns.as_string(): self.add_message("async-awaitable-return", node=node, args=(node.name,)) +class InternalModelComparisonChecker(BaseChecker): + """Check that utils.INTERNAL_MODEL is only compared using '==' or '!='. + + This is because the static replacer does not support 'in' or 'not in' comparisons, + so the comparison is compiled into all models and performed at runtime. This is + typically not what you want. + + When multiple comparisons are necessary, you may need to silence another + pylint warning: # pylint: disable=consider-using-in + """ + + __implements__ = IAstroidChecker + + name = "internal-model-comparison-checker" + priority = -1 + msgs = { + "W9998": ( + "Only compare INTERNAL_MODEL using '==' or '!='.", + "internal-model-tuple-comparison", + "Used when utils.INTERNAL_MODEL is compared using 'in' or 'not in' with a tuple.", + ), + } + + @staticmethod + def _is_internal_model(node): + return ( + isinstance(node, nodes.Attribute) + and node.attrname == "INTERNAL_MODEL" + and isinstance(node.expr, nodes.Name) + and node.expr.name == "utils" + ) + + @check_messages("internal-model-tuple-comparison") + def visit_compare(self, node: nodes.Compare): + if not self._is_internal_model(node.left): + return + if len(node.ops) != 1: + return + op, _right = node.ops[0] + if op in ("in", "not in"): + self.add_message("internal-model-tuple-comparison", node=node) + + def register(linter): """Required method to auto register this checker.""" linter.register_checker(AsyncAwaitableChecker(linter)) + linter.register_checker(InternalModelComparisonChecker(linter)) From afb75892f2d07d9754d71fba8f99974f58a82dfc Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 27 Aug 2024 12:21:40 +0200 Subject: [PATCH 565/626] chore(core): include T3B1 where relevant also convert "INTERNAL_MODEL in (tuple)" to equality comparisons, see previous commit [no changelog] --- core/src/apps/base.py | 6 +++++- core/src/apps/bitcoin/sign_tx/layout.py | 10 ++++++++-- core/src/apps/debug/__init__.py | 9 +++++++-- core/src/apps/management/recovery_device/homescreen.py | 5 +++-- core/src/apps/workflow_handlers.py | 8 +++++--- core/src/boot.py | 7 +++++-- core/src/trezor/ui/__init__.py | 7 ++++++- core/tests/test_apps.bitcoin.signtx_decred.py | 4 ++-- core/tests/test_apps.common.coins.py | 2 +- 9 files changed, 42 insertions(+), 16 deletions(-) diff --git a/core/src/apps/base.py b/core/src/apps/base.py index 20384a18e1..3dfc37db1e 100644 --- a/core/src/apps/base.py +++ b/core/src/apps/base.py @@ -93,7 +93,11 @@ def get_features() -> Features: bootloader_locked=utils.bootloader_locked(), ) - if utils.INTERNAL_MODEL in ("T1B1", "T2B1"): + if ( + utils.INTERNAL_MODEL == "T1B1" # pylint: disable=consider-using-in + or utils.INTERNAL_MODEL == "T2B1" + or utils.INTERNAL_MODEL == "T3B1" + ): f.homescreen_format = HomescreenFormat.ToiG else: f.homescreen_format = HomescreenFormat.Jpeg diff --git a/core/src/apps/bitcoin/sign_tx/layout.py b/core/src/apps/bitcoin/sign_tx/layout.py index cf4044cc8a..3e6eaf4534 100644 --- a/core/src/apps/bitcoin/sign_tx/layout.py +++ b/core/src/apps/bitcoin/sign_tx/layout.py @@ -100,8 +100,14 @@ async def confirm_output( if output.address_n and not output.multisig: from trezor import utils - # Showing the account string only for T2B1 model - show_account_str = utils.INTERNAL_MODEL == "T2B1" + # Showing the account string only for model_tr layout + # TODO expose layout_type so that we can check for it, instead of listing + # all models that use the layout? + show_account_str = ( + # pylint: disable-next=consider-using-in + utils.INTERNAL_MODEL == "T2B1" + or utils.INTERNAL_MODEL == "T3B1" + ) script_type = CHANGE_OUTPUT_TO_INPUT_SCRIPT_TYPES[output.script_type] address_label = ( address_n_to_name( diff --git a/core/src/apps/debug/__init__.py b/core/src/apps/debug/__init__.py index bd80af92d6..c9d81389b5 100644 --- a/core/src/apps/debug/__init__.py +++ b/core/src/apps/debug/__init__.py @@ -178,11 +178,16 @@ async def dispatch_DebugLinkDecision(msg: DebugLinkDecision) -> None: if ( x is not None and y is not None - and utils.INTERNAL_MODEL in ("T2T1", "T3T1", "D001") + and utils.INTERNAL_MODEL # pylint: disable=internal-model-tuple-comparison + in ("T2T1", "T3T1", "D001") ): click_chan.publish((debug_events.last_event, x, y, msg.hold_ms)) # Button devices press specific button - elif msg.physical_button is not None and utils.INTERNAL_MODEL in ("T2B1",): + elif ( + msg.physical_button is not None + and utils.INTERNAL_MODEL # pylint: disable=internal-model-tuple-comparison + in ("T2B1", "T3B1") + ): button_chan.publish( (debug_events.last_event, msg.physical_button, msg.hold_ms) ) diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 717a62cdc6..375e4704ac 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -94,8 +94,9 @@ async def _continue_recovery_process() -> Success: if is_first_step: # If we are starting recovery, ask for word count first... # _request_word_count - # For TT, just continuing straight to word count keyboard - if utils.INTERNAL_MODEL == "T2B1": + # For others than model_tr, just continue straight to word count keyboard + # pylint: disable-next=consider-using-in + if utils.INTERNAL_MODEL == "T2B1" or utils.INTERNAL_MODEL == "T3B1": await layout.homescreen_dialog( TR.buttons__continue, TR.recovery__num_of_words ) diff --git a/core/src/apps/workflow_handlers.py b/core/src/apps/workflow_handlers.py index 2631f614eb..2bc7ac692b 100644 --- a/core/src/apps/workflow_handlers.py +++ b/core/src/apps/workflow_handlers.py @@ -56,9 +56,11 @@ def _find_message_handler_module(msg_type: int) -> str: return "apps.management.reboot_to_bootloader" if ( - utils.INTERNAL_MODEL in ("T2B1", "T3T1") - and msg_type == MessageType.ShowDeviceTutorial - ): + # pylint: disable-next=consider-using-in + utils.INTERNAL_MODEL == "T2B1" + or utils.INTERNAL_MODEL == "T3B1" + or utils.INTERNAL_MODEL == "T3T1" + ) and msg_type == MessageType.ShowDeviceTutorial: return "apps.management.show_tutorial" if utils.USE_BACKLIGHT and msg_type == MessageType.SetBrightness: diff --git a/core/src/boot.py b/core/src/boot.py index 9e3086a839..2df18c35a2 100644 --- a/core/src/boot.py +++ b/core/src/boot.py @@ -25,8 +25,11 @@ # have to use "==" over "in (list)" so that it can be statically replaced # with the correct value during the build process -# pylint: disable-next=consider-using-in -if utils.INTERNAL_MODEL == "T2T1" or utils.INTERNAL_MODEL == "T2B1": +if ( # pylint: disable-next=consider-using-in + utils.INTERNAL_MODEL == "T2T1" + or utils.INTERNAL_MODEL == "T2B1" + or utils.INTERNAL_MODEL == "T3B1" +): _WELCOME_SCREEN_MS = 1000 # how long do we want to show welcome screen (minimum) else: _WELCOME_SCREEN_MS = 0 diff --git a/core/src/trezor/ui/__init__.py b/core/src/trezor/ui/__init__.py index 7f7c6bf63e..3a15955549 100644 --- a/core/src/trezor/ui/__init__.py +++ b/core/src/trezor/ui/__init__.py @@ -53,7 +53,12 @@ def refresh() -> None: # in both debug and production, emulator needs to draw the screen explicitly -if utils.EMULATOR or utils.INTERNAL_MODEL in ("T1B1", "T2B1"): +if ( + utils.EMULATOR + or utils.INTERNAL_MODEL == "T1B1" + or utils.INTERNAL_MODEL == "T2B1" + or utils.INTERNAL_MODEL == "T3B1" +): loop.after_step_hook = refresh diff --git a/core/tests/test_apps.bitcoin.signtx_decred.py b/core/tests/test_apps.bitcoin.signtx_decred.py index 490538e0b8..4136f59132 100644 --- a/core/tests/test_apps.bitcoin.signtx_decred.py +++ b/core/tests/test_apps.bitcoin.signtx_decred.py @@ -1,6 +1,6 @@ from common import * # isort:skip -if utils.INTERNAL_MODEL not in ("T2B1", "T3T1"): +if utils.INTERNAL_MODEL in ("T1B1", "T2T1"): from trezor.crypto import bip39 from trezor.enums import AmountUnit, OutputScriptType from trezor.enums.RequestType import TXFINISHED, TXINPUT, TXMETA, TXOUTPUT @@ -405,5 +405,5 @@ def test_purchase_ticket(self): if __name__ == "__main__": - if utils.INTERNAL_MODEL not in ("T2B1", "T3T1"): + if utils.INTERNAL_MODEL in ("T1B1", "T2T1"): unittest.main() diff --git a/core/tests/test_apps.common.coins.py b/core/tests/test_apps.common.coins.py index ba3008e824..68ff3bd8ac 100644 --- a/core/tests/test_apps.common.coins.py +++ b/core/tests/test_apps.common.coins.py @@ -22,7 +22,7 @@ def test_altcoins(self): ("ZEC", "Zcash", 7352), ("TAZ", "Zcash Testnet", 7461), ] - if utils.INTERNAL_MODEL not in ("T2B1", "T3T1"): + if utils.INTERNAL_MODEL in ("T1B1", "T2T1"): ref.extend( [ ("NMC", "Namecoin", 52), From 21988d6ef4b977d9ada9c6bfe53c5f3c5410a693 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 27 Aug 2024 12:21:57 +0200 Subject: [PATCH 566/626] style(python): fix flake8 warning on python 3.12 [no changelog] --- python/src/trezorlib/debuglink.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index 5786e1590a..e5326a2dfa 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -156,8 +156,8 @@ def visible_screen(self) -> str: ******************** ICON_CANCEL, -, CONFIRM """ - title_separator = f"\n{20*'-'}\n" - btn_separator = f"\n{20*'*'}\n" + title_separator = f"\n{20 * '-'}\n" + btn_separator = f"\n{20 * '*'}\n" visible = "" if self.title(): From 7275a5544e53abd4d7b090c7bea0ea42062f3cc2 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 26 Aug 2024 17:53:14 +0200 Subject: [PATCH 567/626] refactor(core): move embedded bootloaders and their hashes to model folders [no changelog] --- core/SConscript.firmware | 2 +- core/embed/firmware/bl_check.c | 70 +----------------- core/embed/firmware/bootloader_hashes.py | 57 ++++++++------ .../firmware/bootloaders/bootloader_1.bin | 1 - .../firmware/bootloaders/bootloader_T1B1.bin | Bin 32768 -> 0 bytes .../T2B1}/bootloaders/bootloader_T2B1.bin | Bin .../T2B1}/bootloaders/bootloader_T2B1_qa.bin | Bin .../T2B1/bootloaders/bootloader_hashes.h | 17 +++++ core/embed/models/T2B1/model_T2B1.h | 2 + .../T2T1}/bootloaders/bootloader_T2T1.bin | Bin .../T2T1}/bootloaders/bootloader_T2T1_qa.bin | Bin .../T2T1/bootloaders/bootloader_hashes.h | 17 +++++ core/embed/models/T2T1/model_T2T1.h | 2 + .../T3B1}/bootloaders/bootloader_T3B1.bin | Bin .../T3B1}/bootloaders/bootloader_T3B1_qa.bin | Bin .../T3B1/bootloaders/bootloader_hashes.h | 17 +++++ core/embed/models/T3B1/model_T3B1.h | 2 + .../T3T1}/bootloaders/bootloader_T3T1.bin | Bin .../T3T1}/bootloaders/bootloader_T3T1_qa.bin | Bin .../T3T1/bootloaders/bootloader_hashes.h | 17 +++++ core/embed/models/T3T1/model_T3T1.h | 2 + 21 files changed, 112 insertions(+), 94 deletions(-) delete mode 120000 core/embed/firmware/bootloaders/bootloader_1.bin delete mode 100644 core/embed/firmware/bootloaders/bootloader_T1B1.bin rename core/embed/{firmware => models/T2B1}/bootloaders/bootloader_T2B1.bin (100%) rename core/embed/{firmware => models/T2B1}/bootloaders/bootloader_T2B1_qa.bin (100%) create mode 100644 core/embed/models/T2B1/bootloaders/bootloader_hashes.h rename core/embed/{firmware => models/T2T1}/bootloaders/bootloader_T2T1.bin (100%) rename core/embed/{firmware => models/T2T1}/bootloaders/bootloader_T2T1_qa.bin (100%) create mode 100644 core/embed/models/T2T1/bootloaders/bootloader_hashes.h rename core/embed/{firmware => models/T3B1}/bootloaders/bootloader_T3B1.bin (100%) rename core/embed/{firmware => models/T3B1}/bootloaders/bootloader_T3B1_qa.bin (100%) create mode 100644 core/embed/models/T3B1/bootloaders/bootloader_hashes.h rename core/embed/{firmware => models/T3T1}/bootloaders/bootloader_T3T1.bin (100%) rename core/embed/{firmware => models/T3T1}/bootloaders/bootloader_T3T1_qa.bin (100%) create mode 100644 core/embed/models/T3T1/bootloaders/bootloader_hashes.h diff --git a/core/SConscript.firmware b/core/SConscript.firmware index b80fde68a8..5e199f2617 100644 --- a/core/SConscript.firmware +++ b/core/SConscript.firmware @@ -912,7 +912,7 @@ if TREZOR_MODEL not in ('DISC1', 'DISC2'): env, 'bootloader', 'embed/firmware/bootloaders/bootloader.o', - f'embed/firmware/bootloaders/bootloader_{BOOTLOADER_SUFFIX}.bin', + f'embed/models/{MODEL_IDENTIFIER}/bootloaders/bootloader_{BOOTLOADER_SUFFIX}.bin', ) diff --git a/core/embed/firmware/bl_check.c b/core/embed/firmware/bl_check.c index c5e13f081b..c172df62d6 100644 --- a/core/embed/firmware/bl_check.c +++ b/core/embed/firmware/bl_check.c @@ -34,79 +34,13 @@ extern const void extern const void _binary_embed_firmware_bootloaders_bootloader_bin_deflated_size; -/* -static secbool known_bootloader(const uint8_t *hash, int len) { - if (len != 32) return secfalse; - // bootloader-2.0.1.bin (padded with 0x00) - if (0 == memcmp(hash, -"\x91\x37\x46\xd0\x2d\xa7\xc4\xbe\x1d\xae\xef\xb0\x9b\x4e\x31\x88\xed\x38\x23\x5e\x0e\x31\xa7\x8c\x01\xde\x4e\xcc\xc2\xd6\x36\xb3", -32)) return sectrue; - // bootloader-2.0.1.bin (padded with 0xff) - if (0 == memcmp(hash, -"\x2f\xdb\xde\x94\x0a\xd8\x91\x1c\xbd\x07\xb0\xba\x06\x2c\x90\x84\x02\xec\x95\x19\xde\x52\x8d\x4b\xe9\xb9\xed\x30\x71\x91\xb4\xd3", -32)) return sectrue; - // bootloader-2.0.2.bin (padded with 0x00) - if (0 == memcmp(hash, -"\x2e\xf7\x47\xf8\x49\x87\x1e\xc8\xc6\x01\x35\xd6\x32\xe5\x5a\xd1\x56\x18\xf8\x64\x87\xb7\xaa\x7c\x62\x0e\xc3\x0d\x25\x69\x4e\x18", -32)) return sectrue; - // bootloader-2.0.2.bin (padded with 0xff) - if (0 == memcmp(hash, -"\xcc\x6b\x35\xc3\x8f\x29\x5c\xbd\x7d\x31\x69\xaf\xae\xf1\x61\x01\xef\xbe\x9f\x3b\x0a\xfd\xc5\x91\x70\x9b\xf5\xa0\xd5\xa4\xc5\xe0", -32)) return sectrue; - // bootloader-2.0.3.bin (padded with 0x00) - if (0 == memcmp(hash, -"\xb1\x83\xd3\x31\xc7\xff\x3d\xcf\x54\x1e\x7e\x40\xf4\x9e\xc3\x53\x4c\xcc\xf3\x8c\x35\x39\x88\x81\x65\xc0\x5c\x25\xbd\xfc\xea\x14", -32)) return sectrue; - // bootloader-2.0.3.bin (padded with 0xff) - if (0 == memcmp(hash, -"\xab\xdb\x7d\xe2\xef\x44\x66\xa7\xb7\x1f\x2b\x02\xf3\xe1\x40\xe7\xcd\xf2\x8e\xc0\xbb\x33\x04\xce\x0d\xa5\xca\x02\x57\xb6\xd4\x30", -32)) return sectrue; return secfalse; -} -*/ - -// clang-format off -// --- BEGIN GENERATED BOOTLOADER SECTION --- -// bootloader_1.bin version <unknown> -#define BOOTLOADER_1_00 {0xa5, 0x5a, 0x8b, 0x88, 0x94, 0x8a, 0x33, 0x2b, 0xed, 0x0d, 0xd9, 0x5c, 0x79, 0xd5, 0xbe, 0x0c, 0x73, 0x52, 0xaa, 0xac, 0xb3, 0x4f, 0xea, 0xd0, 0xaa, 0x88, 0x33, 0x23, 0x64, 0xab, 0x77, 0x5a} -#define BOOTLOADER_1_FF {0x50, 0x6c, 0x5f, 0xd3, 0x73, 0x7b, 0x9b, 0xb7, 0xb9, 0xbf, 0xf9, 0xfa, 0xc6, 0xb9, 0x43, 0x27, 0x8b, 0x06, 0xad, 0x3a, 0xec, 0xce, 0x35, 0xa3, 0x52, 0xc3, 0x6e, 0x9e, 0x9a, 0xb3, 0x50, 0x98} -// bootloader_T1B1.bin version <unknown> -#define BOOTLOADER_T1B1_00 {0xc1, 0x01, 0xd3, 0x8a, 0x00, 0x5e, 0x4f, 0x5f, 0x87, 0x1f, 0x49, 0x78, 0x24, 0x9c, 0xf9, 0x82, 0xd1, 0x91, 0x4b, 0xa6, 0x90, 0x03, 0x9c, 0x50, 0x49, 0x61, 0x10, 0x4f, 0xee, 0xe7, 0x1d, 0x7b} -#define BOOTLOADER_T1B1_FF {0xbd, 0xb2, 0xf7, 0x62, 0xfb, 0x10, 0xbb, 0x30, 0x1f, 0x95, 0xa3, 0x12, 0x6b, 0x41, 0x1f, 0x66, 0xfc, 0x57, 0x28, 0xce, 0x7f, 0x59, 0x42, 0x6c, 0x3e, 0xed, 0xf7, 0x69, 0xbb, 0x96, 0xbd, 0x4b} -// bootloader_T2B1.bin version 2.1.4.0 -#define BOOTLOADER_T2B1_00 {0x12, 0xf5, 0x51, 0x01, 0x10, 0xb3, 0x59, 0x8e, 0x73, 0x95, 0xa9, 0xa8, 0xc5, 0xbc, 0x3a, 0x53, 0xa3, 0xa8, 0xed, 0x83, 0x32, 0xc2, 0xd2, 0x5b, 0x47, 0x99, 0x27, 0x9f, 0x93, 0x8b, 0xb3, 0xd6} -#define BOOTLOADER_T2B1_FF {0x19, 0x7c, 0x2a, 0xd1, 0xba, 0x89, 0xeb, 0x2a, 0xfc, 0xe1, 0x7b, 0xf3, 0x62, 0x7d, 0xf8, 0xb2, 0x3c, 0x70, 0x16, 0x03, 0x53, 0xad, 0x8e, 0x90, 0x9b, 0x57, 0xeb, 0x4b, 0x83, 0x4d, 0xa0, 0x34} -// bootloader_T2B1_qa.bin version 2.1.4.0 -#define BOOTLOADER_T2B1_QA_00 {0x96, 0xe7, 0xfa, 0x21, 0x66, 0x81, 0x6b, 0x27, 0xf6, 0x27, 0xc1, 0x50, 0xaa, 0xf8, 0xbf, 0xac, 0xf5, 0x0d, 0x37, 0xea, 0x10, 0xa9, 0xa2, 0x0c, 0x1a, 0x58, 0xa7, 0x42, 0x23, 0x80, 0xbe, 0x40} -#define BOOTLOADER_T2B1_QA_FF {0x7c, 0xca, 0xde, 0xf6, 0x8f, 0xf8, 0x9a, 0x08, 0x35, 0x0a, 0x82, 0xe4, 0xb5, 0x76, 0x37, 0x36, 0x51, 0x33, 0x40, 0xd9, 0x66, 0x84, 0xfb, 0x1b, 0x4f, 0x89, 0x34, 0xcd, 0x6f, 0x4c, 0x03, 0x1a} -// bootloader_T2T1.bin version 2.1.4.0 -#define BOOTLOADER_T2T1_00 {0x37, 0xaf, 0xad, 0xb6, 0x55, 0x7a, 0xd3, 0x82, 0x2c, 0x7b, 0xd3, 0x41, 0x65, 0xb7, 0x4d, 0xce, 0xbe, 0x23, 0x87, 0x90, 0x93, 0x3f, 0xbc, 0x4c, 0x5a, 0x1c, 0x60, 0x8c, 0xf9, 0xf6, 0xec, 0x0c} -#define BOOTLOADER_T2T1_FF {0x5e, 0x84, 0xd3, 0xf7, 0xfd, 0x55, 0x51, 0xfd, 0x5f, 0x22, 0xc4, 0x83, 0xe2, 0x67, 0xc5, 0x1b, 0x77, 0xce, 0x49, 0xce, 0x42, 0x19, 0xe8, 0x23, 0x84, 0x4a, 0x58, 0x47, 0xaf, 0x80, 0x69, 0x86} -// bootloader_T2T1_qa.bin version 2.1.4.0 -#define BOOTLOADER_T2T1_QA_00 {0xff, 0xda, 0xfd, 0x0f, 0xe1, 0x89, 0x56, 0xb6, 0x0b, 0x6e, 0x2d, 0x67, 0xf1, 0x63, 0x8c, 0x4c, 0x4d, 0x6f, 0x97, 0xe7, 0xe0, 0xa4, 0xce, 0x76, 0xc9, 0x49, 0x0a, 0x34, 0x3e, 0xd8, 0xcb, 0x1f} -#define BOOTLOADER_T2T1_QA_FF {0xbe, 0x31, 0x71, 0x7b, 0x8b, 0x31, 0x12, 0xbd, 0x58, 0xc4, 0x81, 0x09, 0x8d, 0xd9, 0x07, 0x51, 0x5c, 0xb6, 0x3d, 0x07, 0x82, 0x00, 0x30, 0x4a, 0xeb, 0x26, 0xf0, 0xe4, 0x00, 0xd4, 0xf2, 0x9c} -// bootloader_T3B1.bin version 2.1.7.0 -#define BOOTLOADER_T3B1_00 {0x6a, 0x29, 0x58, 0x1f, 0x4f, 0x0c, 0x64, 0xd0, 0x57, 0xb3, 0x36, 0xb7, 0xca, 0xc5, 0x00, 0xc6, 0xbe, 0x87, 0x46, 0x10, 0x48, 0xb0, 0x20, 0xc5, 0xc3, 0x55, 0xaa, 0xf8, 0xec, 0x48, 0xd6, 0xa3} -#define BOOTLOADER_T3B1_FF {0x57, 0x1e, 0xa2, 0xb8, 0x09, 0xf0, 0xab, 0xb4, 0x35, 0xb9, 0x92, 0xcd, 0xde, 0x28, 0x8a, 0xe2, 0x73, 0x04, 0x92, 0x16, 0x01, 0xac, 0x70, 0x48, 0xad, 0x1d, 0x72, 0x9e, 0x31, 0x42, 0xbf, 0x37} -// bootloader_T3B1_qa.bin version 2.1.7.0 -#define BOOTLOADER_T3B1_QA_00 {0x2e, 0x90, 0x8a, 0x99, 0x25, 0x93, 0xcd, 0x9c, 0xf1, 0x23, 0x1e, 0x4e, 0x41, 0xfc, 0xc9, 0xf1, 0x4b, 0x06, 0x69, 0x57, 0x6e, 0x64, 0x84, 0x1c, 0xb1, 0xd9, 0x89, 0x0c, 0xa5, 0xb4, 0x38, 0xeb} -#define BOOTLOADER_T3B1_QA_FF {0x63, 0xd2, 0x2d, 0x7b, 0xe8, 0x17, 0x2b, 0x97, 0x64, 0x06, 0x9b, 0x60, 0xa0, 0x3d, 0xfc, 0xd6, 0xea, 0x8a, 0x8d, 0xaf, 0x12, 0x25, 0x58, 0x93, 0x9e, 0x40, 0x16, 0xf2, 0x25, 0x30, 0x30, 0x6f} -// bootloader_T3T1.bin version 2.1.6.0 -#define BOOTLOADER_T3T1_00 {0x4a, 0x07, 0x5c, 0x74, 0x0f, 0x9a, 0x84, 0x61, 0xaf, 0x10, 0x34, 0x9c, 0x24, 0x3d, 0x79, 0x5b, 0xc6, 0x12, 0x5e, 0xec, 0x51, 0xb3, 0x91, 0x4b, 0x65, 0xf9, 0x79, 0x17, 0x98, 0xc2, 0x4f, 0xcb} -#define BOOTLOADER_T3T1_FF {0xd8, 0xee, 0x0d, 0xd8, 0x87, 0x0b, 0xf4, 0x38, 0x73, 0x52, 0x83, 0x5e, 0xa9, 0xef, 0x3e, 0x5a, 0x3e, 0x59, 0xc2, 0x12, 0x5b, 0x24, 0xc9, 0x2d, 0xd4, 0xc5, 0xf5, 0x57, 0x15, 0x8a, 0x34, 0x78} -// bootloader_T3T1_qa.bin version 2.1.6.0 -#define BOOTLOADER_T3T1_QA_00 {0x53, 0x5f, 0xf9, 0xa8, 0x21, 0x7d, 0xb5, 0x39, 0xe4, 0xfa, 0xf8, 0x3d, 0x0d, 0xe6, 0xf3, 0x65, 0x21, 0x30, 0x46, 0x9e, 0x40, 0x85, 0xd4, 0xd8, 0x49, 0x00, 0xb0, 0xb5, 0x58, 0x39, 0xe3, 0xd4} -#define BOOTLOADER_T3T1_QA_FF {0x1e, 0x03, 0x50, 0x25, 0xa1, 0xc7, 0x20, 0xe2, 0x04, 0x62, 0x24, 0xa1, 0x31, 0xc2, 0xf5, 0x7b, 0x35, 0xe9, 0x22, 0x42, 0x36, 0x2d, 0xab, 0xcc, 0xb6, 0x3b, 0xfe, 0x88, 0x53, 0x2f, 0x49, 0xa7} -// --- END GENERATED BOOTLOADER SECTION --- - - #define CONCAT_NAME_HELPER(prefix, name, suffix) prefix##name##suffix #define CONCAT_NAME(name, var) CONCAT_NAME_HELPER(BOOTLOADER_, name, var) - #if BOOTLOADER_QA // QA bootloaders - #define BOOTLOADER_00 CONCAT_NAME(MODEL_INTERNAL_NAME_TOKEN, _QA_00) - #define BOOTLOADER_FF CONCAT_NAME(MODEL_INTERNAL_NAME_TOKEN, _QA_FF) +#define BOOTLOADER_00 CONCAT_NAME(MODEL_INTERNAL_NAME_TOKEN, _QA_00) +#define BOOTLOADER_FF CONCAT_NAME(MODEL_INTERNAL_NAME_TOKEN, _QA_FF) #else // normal bootloaders #define BOOTLOADER_00 CONCAT_NAME(MODEL_INTERNAL_NAME_TOKEN, _00) diff --git a/core/embed/firmware/bootloader_hashes.py b/core/embed/firmware/bootloader_hashes.py index 2661847e60..3e72aeb733 100755 --- a/core/embed/firmware/bootloader_hashes.py +++ b/core/embed/firmware/bootloader_hashes.py @@ -7,7 +7,7 @@ ALIGNED_SIZE = 128 * 1024 HERE = Path(__file__).parent -BOOTLOADERS = HERE / "bootloaders" +BOOTLOADERS = HERE / ".." / "models" BL_CHECK = HERE / "bl_check.c" @@ -74,29 +74,38 @@ def bootloader_str(file: Path) -> str: def main(): - bl_check_new = [] - with open(BL_CHECK) as f: - # read up to auto-begin - for line in f: - bl_check_new.append(line) - if line == BL_CHECK_AUTO_BEGIN: - break - - # write bootloader definitions - for file in sorted(BOOTLOADERS.glob("bootloader*.bin")): - bl_check_new.append(bootloader_str(file)) - - # consume up to auto-end - for line in f: - if line == BL_CHECK_AUTO_END: - bl_check_new.append(line) - break - - # read the rest - bl_check_new.extend(f) - - # write the file - BL_CHECK.write_text("".join(bl_check_new)) + + models = list(BOOTLOADERS.iterdir()) + + models = [model for model in models if model.is_dir()] + + for model in models: + + path = model / "bootloaders" + + if path.is_dir(): + + header_file = path / "bootloader_hashes.h" + + content = [] + content.append("#ifndef BOOTLOADER_HASHES_H\n") + content.append("#define BOOTLOADER_HASHES_H\n") + content.append("\n") + content.append("// Auto-generated file, do not edit.\n") + content.append("\n") + content.append("// clang-format off\n") + + bootloaders = sorted(path.glob("bootloader*.bin")) + for bootloader in bootloaders: + if bootloader.is_file(): + print(f"Processing {bootloader}") + content.append(bootloader_str(bootloader)) + + content.append("// clang-format on\n") + content.append("\n") + content.append("#endif\n") + + header_file.write_text("".join(content)) if __name__ == "__main__": diff --git a/core/embed/firmware/bootloaders/bootloader_1.bin b/core/embed/firmware/bootloaders/bootloader_1.bin deleted file mode 120000 index 6a019c96b1..0000000000 --- a/core/embed/firmware/bootloaders/bootloader_1.bin +++ /dev/null @@ -1 +0,0 @@ -../../../../legacy/firmware/bootloader.dat \ No newline at end of file diff --git a/core/embed/firmware/bootloaders/bootloader_T1B1.bin b/core/embed/firmware/bootloaders/bootloader_T1B1.bin deleted file mode 100644 index ac9d56f2307c80722bd3ca49998efa776cac2de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeFadwf*I`9D5q&)Hk9n=F^yAbSZAvLS>73lcQT?s7=7NCK$k*191?Hvvrqtig{h zi)e|W6%1{K;HOk+3#gbxV@1WJg7sdrTv`yVc&U+%m$MMulig&`_dREKlYsX1`+oob z<@K6#X6N$EGtWHp%rnnCb0SKN;jdGOX247|*X9t-O$awsM*_L(Z(c6ZR3eWi)Atio zN6N<P{QvL&cbW*DyW29Is%JUgVIsy{KGQwErBWbl0k0B@L!95BF5(Tm#;BRe3IXv| zo64V}y6h$9_b+h8iGC-`wj}!JunIh<vhQCYOSKho&badUGDf&Jq;zJu$G5JqQg}>{ zLbxoZw+Tl{mxytnR7W&AgaU+T))URF&SYou4Vi96ZaryXF3$>o5gFmr0dtf7i1{93 zx!j|28k#cPOcY{w2Zi~r$hH+mVeb1iL&{W)fpo?@A8gBXt7TZktf>HI4ELD2BAtK# zf}%)Omcc7q7{L-!2rmR9_{;<zWeBT)3+dEdQ9m(SKOtIQ*^<G>p@;Dy6?&*1)x-Nm zZQIX8E);>e3h){c?gz|i7aGfMaqa|G$ud^&i)n2N;YCp)WQoh2X)Z?C6JmtJLkgjB zK(*&)=N?;a4<nQfa6A$II6!iL-t&}d)oGH$2;30H$*`yb?T3lcYFLPvA<PJihO$gX zUUNXbOC{VKTu`PyNQA=!{30daX3OfC@8m1k7T(F1zkh+T<6TBtFoq5@&j^1BN`X=- z?TD@X`Z6itlGF#Jz@@MhxJDwm{XN%|5n)`g&8Fy?Szc21ZLdOL28ij}@;PM+p?{#$ zcI`r~w^BH7J|=2zFuS*2(lpn&A72ngxz3<Ms2eD9X1Xu+GQxpDVl1rCpuOkNgEYf5 z;C+0E2u0|l&`!*8#ubLCNP90#%()d4@rx1uj`-w?B01iTK7KUF2zg>6sGc09x(-x& zTVi=yI}5d+4V(GQXzjlso?h`uFEOOF9sR1YneyH5Rvb$nq+?7N&9OhtUGXT!=U#-} z2$UC}ML3207xC^wAVgt+$T1L((a`$GHxSM8bwu+4@;*fP6v2lOK+t#U7V4aw$-wK% zW1OrKz7#!2T<!$tzRRTQaofXP#K0KT=s}E+S@ggy5kr5kqD^;{c!=E2OZ8~`qa-rz zf-o=7`4IR<EAvgRb85vc?%&(yoFT@E_hgwA2Yz<X-g}sxDq+>YwY<5EIiwWQ2kxBs zZU<+{J)`tXvu_DDU*asLGq+6)A#LKB!{CNL+cJ9oWJ~KwTbNdHqiEEnl`&6qLSU%r z$T<AY)s2yVe>XJyh#tSE=ydY$-l4K~BIB-&QlH`;C&icb_r`(3!j=f%(>{>FB#@2K zyo!EU@%yb!MB~A`8-dbY*O}pb_VSk7EBigG6L^Ma4rIFD7rB{KR;UDzXf-}~fD_h) zt;XGWyYN1U_bTv%iASAk=D;K37e$YV|3Ub&NGbe5q;v6OK#0j3MmQQyL<_p3bllXK z)4Gb-s3ben-8*eM?-_R@#>Mkr$7OGrjte_#PT#m>1yB1$zD^>IogAOY6XQc|g-$vW zu`!~f@mtZrGY6%>cIjvB7M?k*eYS{a-#KJUb1ip`<5|Ck{ocDvJfB)N@fb#B#+hB> zr>3P7IZHlbpB4RVA~$WynVq&tJ-cn@o;@~WPudO4(>I9*9d}u?eq0$R7>8auf;y@C zGUnQwFoGDr%W3O5VeHT{q<@y0I4V6C=~{X0D2+ysU4EF8$F5PP5gjW!PIP?KorzAy z5u;bLP3vV0no(S<#>gjzbs|$jEZ_AIgAk<>rFCN`F>?GvZIiE{3f2-8rHn?b?7w%O z0i4PS$0dVl2F6|~ER`s4WsJhlf)+j+`rOT4_S9r0w05xV%uHs|GdA|4<oq!or<8rw z3qF{U%Mm|uX&e;V6M)7XRQ1i*DFq8;*FU|?HDC4`jH*6|P73@EDew0%Gd}^ZM*2(V zH0^6Pc!R^r$41u+*0jY)TC8TJuqqhmWKE=nF<Q+AUMbudq-z>GEb$p(`w&NGt-Pi^ zl0Y<tor|0;Z5(ekQjSiMA#ws4k^--VNiGqZJqw%}b!PJ;VnSh@xzw04=@BupP>bK3 z?h#Q_Wj3xyN>brQq$rW1LP#zo##;Q=RXrk(sVYFe8mU@@ID~kFl)^{Eu~qk&>yS4= zmuq}POhwALss?i!QYPwlAVrUq@dz1JI&(Zy4Z1@}O+!j%6$9vIong`pq@*JytLhOk z8*d|mi990a;5`XpvaYSY4P~b2Ucxg^mlF4gn6K+be5xTe;Sn(xWh@BObdQJycuzN2 z&0CC^36M(v9I)mFyp#h|qV(f1!hM4ZKEr%>uO6#7<sCY=be*Zr$J(smq0uz_`CwuN z^R&*r*qwS0dn}`I1oA-{G98&1WCoC58%)K>$aDX8IxdNPOWPRd)liEEb%1(8j3Xz+ zB;AsS0NDfjSB*fw=SQJGI!G~&jJq1})zCR&vxO5pVNTc)rhSb`d5Y0pgR&&)<Ag)6 zMPyR)a2+Y|Z%JX)@SKo}H*4U8B#Fwqt6?l1hVeTY2G)lKymP^#{cWF!Sz9vQW|`xP z-7krxicBGvgf7gIH6({j)6m#8S*C0GtOK8j{W~&$uM})yH-5Xp+1G{LX#3lco6pPC z_Hhg+D26&OdrISbrt_bOZ|&nui&2i7#R=aJ{uSxppLFw?2RUK$P=4hMx51?Do0pP_ zdE5XwBLyCll%^@pDdo9k8I4k4R%rZrDR76hU-PWyPqvIRoFEKw!cW3R(C3Uu3in_| zqH}pX<l5R$v70F_cBLTC9OaXA(C%NMLichpM@PPA2-oK+^bk&{4l^_V**nwC%uLSz z_ZfpxEzk2Ohe+;a?`yp|bVb@m>71iv421~iv5xo9b(LWZGx7U+tl6jWJ0Ee-vGN6H zXC<`Zs0KWTx0)I7ppvdexkm4EH&~jKmI*xyi{dP2u?mZ}&S@&m8|%HN$()z!eHqVW zZ?Nh5O^ij=r<lCI;>C_}9&+*Do?jd>@X)7*7_+5uFM1Wzh~vHK6vIbn6(o6oH!7WS ziYsK`<=jds@Xw=6L4x;@Q6;|hj^x(8rYu<IB~u=BJ_IdQu>tRLrsW~$LlOP%?h@#a ze}(j^4DNVd3Op0OmVW^H+?a5L*FG9*FmA!`1pKBvcWQ{6T-krmrb<Dp`JYN{Nag?I z<zRJtNc7JJoPi;sLt$io!U^3&2?gJIIUxb#xMWCazO($!G7Cm}b?{JcV|im)0phEI zu2DGe@^X*^u|CayO;tby&3(&8mDuWKjNkO4UZ@P1ZVg@UdP^ik3M>i7a8helMsd1l z7^mlkar%Xf6EQADfA#~f*9JN0%9Qs18d8|8y_JGgOd-DWDaAwzd=I=Wjk88!u({v% zoVDCh7Q-@hM1gVs>lSsvA@Bd(6K5IIqm^r(m1|DDqUNOMW|hwxuKC&#VvOTwI`{H= zky)z}Hj`$n!cnNo=Et2XbY{4wW8Oc1+0$^_nFz!-8RD2LAPyd$Tt4BvdPdgNbKbNj zQ@KtMlFNIDi7AP5=?9qUBrkL>QhTRdd-QH=bN|PO)5_DzUhJj({{<J}_r2i%%i#Af z5fauC&9`_@z?<&Bit(;M_&EaAeQWV<M|c<EON7{5`4+I~d`W>0Jcx89-iki5KF*ck zSEwKBeg1Oe^yklTrrG?9<x0UFQt_Vl2$t8&Shio$$A=CdE`P49hOXq*hcWxt4Ny7o z3}Uwpuo#`EowNCgt{MC+zL-CF!@-50hzDNJbAKZ4|Lha7`LW5a_eA1qobTZ^C&#xV zUYO@11*QE94;x+OUp_99My4n;j>{u{hS+`T8m0FkO}S_)WF`|6H-nk-X)iP7+w;G7 z662#~6Wvl^e8@WADhQtK*abZy$9*0tFeX@b<gBREUF>+bqs3O#vnPY(bzl4#Im)3= z#GL!c^w~Y1h=V(~Eh^-fi(Dp$`7vgYpC7>dxHrTJuZJj~ZGOe$oP%BGX6Lm$hv()p zI$Jk88N^8oouyxdB6K>0Jx*QdZ<o~Ozh6?DT5Ny!B5p_A)?(}S7A3vjm$Le3?^?75 zEemb^JH*cyy>InWo?bn;{zdhnar{~*>rYdT;nUp9-I`+d_|rBMAMj>2e<D7<#q250 zsjaNNftYLM{VZ1lOlH@VJtEGqlE;|eXYkBiB0LfLq9d1A2>%fa^Dm$$-$_#7XTg2g zr>&@1QO-TKqGBcOLD7l|?4<FF&>-9wk^&hb$t~@_;jk2#AN)jIwnfEXUrAF^4}T(x zJBYE2;u%!&^z93t6~`2+teBUs5|`#n#`10tYazm4JeDTTvbq1ZXR+7CXjA}_Zp$a) zt{v9-rTsb2*_@fpnaKYs^0Q3X^X^m%9|hG1Da;cC>I30Gixdu=meklQ+;itFNQBl< zG3J~dwbjo_0UP$Bv3lLX%6>9$dYKv;<h?<Isi0hqbu2zeaZY^Bz-x_C;CyImd0tsK za6+2!AJX*#<_(=!S>XK~g!3e_w$OFP0s8}8Ypi(F-;YQ4j#RIC0A*Vd4kN_&m~?La z4Zm+ha3Oe(z0EY?O>G8uB9HD#AHbW=(N?_wgg|X4vjLmxu5?b*IZCjvDn`B7JY_+h zx1K3!D#d&Mvsmvv*HvOh6wY153fU}Y!JfVUo((hH*Oo1}m$=(Qm;6M~hG>aT#4|gX z;%3Aug;LEY;(O36-rHB~p5tz@<(}9rGP-jjF=$oue5r;H5qlRhl_}!#-a%aNrBbcZ z*TNKaO{tht@wZEfj7>BW%r~s*tsS&X{1GXzKlGBH(P;gQ_JlVAd2|1r&$M>LLwERH zh%*!8czHcpG%()zxUIBbJZv?p53s^2X-tJ0+FH8qggBP4$2y?xp4go3*%Q?U=@>pa zNcGI}FGyD|XhdZd9S=$)DhKJf&@qaQnY`D5{)YA6KHIqstG`m#prpW;*r#|lC|YJZ zXI3yRtXatymy?#_vYAd!$QdkNIJ4XUtIdpXv9q|`;HLUjI&2&9p&9ta2;WG=XmBfp zC&W+0mplkN3~o*+93<0%UW+rciLrcthEkhYE_%zLc{K)!ki+I!CRI*er0%&-wW^CT zmo(bd^j+Lo(p1vUfGPxdX!s0Bi-w_MIc+m`C&b8_?==vicBlllvf?IUd8>yA{9p-U z$9m}R?jFWWNAy*BJ(vr6%t4<QAbj*cM6(Y(G#4~^P(w7iNSlE`?HT7mFGzPQ)s;R) z{4)e~XWX#PI@*fCphcy`mBln%&C5|+0P5>IbB60sJy$1i3PZWkndMDrUZXai%C1=D z-evoD*9tdNw8BM98I5txI>Epx1cSoh-E(Ao#Yb}fhsghs=C6-GAJ?1;C<^Zi7i0Re zmzY+#KJWd=m9<{$)Obd;ZVj+{Ih=arLzMa)r9O0>k62mc{n|6=H?<c^E!W&l_q&E` zV;cOs9k*D1-=%dD!&2;l(weT+!U=Ty(KdnpUr_!3>iWM!{kSsJCo1RTT}<H!R+Lr^ zQ3zCy(E0|1S)F5@O6)@;HqZoqYI_{d7-kz`e;dqcBIZ1Pw()!x5g2L#1P^>1(qc6o z*<ldD5#}7F=2=E!Fil{gT^3r2kpC)eV^-(5AHcp_hW%A22K%`Gmjw2>DD=ZWfIc={ zYTj&`WjyY`mosF<;19k+;ZyyY<F~av&VPI%wdLarx|f-jF|A3wqGfFBSe|W}<$OY1 z))<>zuxSQowiBa?*PtJN0S4U6SNtSd*;B&9z5*?a2)`M8IhwKrGMJ`3FnA=IQo*On zDfbRCt(Nu@J`=x~Jw(_z_!3G?=pkksKMl4~BK&DkdF0l13u0dlPHZpa$CXO~r!=8G zmmiDRMv3k-l+k_0IE>3vLkbyU4j?K3(K*P<zo+3hi{JLa#3Q8O^PXbE>0UL}-z$l* zGs^3GF>jth(7_J)P+N{$yQ@+l9LZ7bO4+O2rQ6HxO5V%vO4_T~mAIGLm9UrWk^(gn z)!Sk=8Oj-}hvK69)>*KTWenTIu_E%UMRVqpuUJ7bE-hnh1+@c1iw;?um||97SxaM* zb65KaN2md<WGJD+*PBrB6~dRW(L{J+_RAxszV=cJIvvAhm<z80|1a)<e%MGfGw&pt z&7CA?k~4AGI-<fj92+18DbOZSZUA=zhh>AmGF@xD-VAxMiwMThy(UFS=})<Q&t}!f zSZCJn3|;KMH~&D_y*Z3|br#8)V}w<;<vKHgyqpCng>*DglM5BJoB1NXP#(KCLsY_y zSX+p2YLG(@8m&b5*OBPnyVK+}4cqnfZnL0gGr7!!r!FtFe_c{@<T3Z_m*N#qem}Tg zZ&!NLohQXH`Dw7OPwZiZUU?V93d`jkH!IvEu|i*%72Xf0l(E9ErTD96*KebHZ&t|Y z;zs59K|yNur!*wpQZ^}6SigC1F!^f)b*J8$og16eDNgnbF>N+vG_vOvs<=~B){Sl@ zo{s-uS1xmwG4=IkLUNCRy?C?X>nm)KE8-Z#2G~fb^^q~eU^7DUVA7&Vjxi#WS%?+o zdGQ&W=+!#+xOb`tPw#Q3ss>L{UK=eh@&^?$TUa4uRRiYc5nRudPE9`3eR*@^yE?Y; zZTr5yV>-qh2OGPZVS|iczbf6Ha^uwy*$9nfS}X@Y{oljfZcSNb^s&qjVV(_*(3irb zvgUy{re&&=>`3Ov4)Z2vTYRO!X!Dy^&DVTn8pS(vK-U*TOe_05Gk1SqJohAzvKo^A zQWxh}$JN+aLCtc4np@Vj%0^m``_){f&ljf+a{cjrtg5aluW8<V?xT1=6W`OjivOfn z5z<^->n`NkzRwh?Vw^$Ur(sMst_M1@q=9DhAM9iAlLmT~R6;yT`Qrbc4iVZexBie0 zH(f=C(Ke^iwpl7gN<+|Is$=UhD|AI=6s4cOGkthH9uHmQQu}yki+I1eW#B&cKEb1C z8Q7w45x3g6%4r_+{X#eA5zdn>g23D-h>ERp-hJ#=af^Pd=rLc-158Lh$&lCB<>1u_ zA7l=<30tV7Gp1pVT^wSe=}Cdd!#d*_{Qhc)k>6ho>5Mx3{%nZ$LWdIDP$C{F|3V4+ zK0S1`_VM>%ME8&ak9I|M52CPcY{EEm3Tp(1iB85iu`D)YSfK;$WCGeVLkbz614Fqu zby^!#$XGmu*57Jmgc|&&*z88>WW0Yrlx|D{PS-_odIa{BYo)94`PDE!TVnVC4+5O- z22KI2_0;AZS?iazrwE?pF<pwu*qi1on8*m5mE%Pw*?MHObV$IsF2z~h=^=(Ex!?BW zVz={DsL;VVzQXR09X?yVk}pn*q?>7N@g*dH=Wz~8gc(6%j?rrQYcV-GV!zZtN?u)O ze2^KgQyQ(aIqyK%W>cx<Kv$`G+J#H=#_^Byx`jsHr+4SL8F}q9_|9*9!Itvz)x8h~ zrs7l?>u;F3X8wHfV`gSw?{)kDbTiDCEp)zY&YN~2U>|`$j^E9XS@?vQ>xsdp?L^>@ z|2S!sTuVg{yJh%P7f@kNwhS@X+%W$#TKNj|^2MP5+WKBz3x%z;Eh<mO^LZ89+BWAZ z`6NEot$Yl$Qe=Mg&ICR$?TkJ$HYUcz3Y)oWfjRpa_6I=^PvcU63BBbf>=U-Fyy9b$ zvk$UoJn)HW6=vYmG|<kIDat-BE>q+R-}I{$`g!Nns?%&MV~O)t@ki37fOUwOrJ1hv zE3{vGnVIK$8S@gJw3PEzywf2C?v}ob=o^nl#tYP`oWN%|J^X{iTvXpaR>rhaP{ctF z#*ryEPE-n;<FO)ulafc#Xbf;F7{D4ni1i$tq~I+)WEd$&Z<?eT{4%_M5v+2k9p@u- zl4V$+a{{k(s`zAH$4}+Q47W??Z`>&8l*c5|!ka)J($~}Y=ROyqnulNozeeW*g_ZQ9 zu-1pKmStz7unJ|JlS1*xvSk)@?oy0cY!<1{kQ@UrV`fT$-GiQd(R;OIdO`LUh>ZEA zc@z0@PBovv?-+)l<mb<i2cNuPOFefry?!U=@<z~Q-C!<118?^rb4_ork)MtD>OmuK z#rx-jbbk@!;cV#K!>39@u1L)AS!hx0U|P4@nAU`ITWv{RMQhEG1kf&~<s^Z2)uLjL z-hncRuL&}(OfhP;G9`+ZPqCtm_!rFTOmU_R>po-M$>q9*8utO4wkO`HbB(O@RI8XJ zo)Wp)be&@?-*``nn%VKLuQ0Z;GmKS`(=G%;R8>FppGfDq$273?P>YY6dP68Ocoihz zL)f+IgOr{-Ak+3D(DQWaL!s{EoZPUah0Ky7e0vCG)SU^#Ye5`jO~UL<mEyD(@Lrd- z;Smi*3Y?Qh)_$s29g*u_3HvWm*zf*G-tK7LKap41S?1h6e3A~I1=9&}%yo_%?EPc| z`^@WzC%>P3{I_4R<bDK_!yaITqgY3~U92z=vR-8HzKpj5Z-2=8{lkP6zQONb<M)M7 zam5Ld%(e?0`#RoIpir6)4V|VHl%WMPP0cY=8S=}Z&I~)QaVpl5yMwG8pMv<E!F`A; zjAq2w2KSkiMk8Xs4w^BObVg9!k&WNp&;&f+4rSr_DqZDk7}ObuUyEVM>RxK%6-GUN zRp8h8C2{h~wI*o2xD8nTE@a}9%adUb8$Uqj#>l=y3QU&bqx*p4unEX~0D9B?KV7rv z8cLue5~ZRFzpLnemzZKRFXI2PYg*T(%165{H9UIdepw2LSL~P7o#r2@t1}%F_fDHo zaZKDNKle_{lH>HbcUq<#r_a69GUPaY?wyt{$LVwLv@|)+0?w{!C&ip;wti31F}!0~ zT`3Kuz_X+F;H5;t`Zp7emMBOn>;l-e>-B_KjYO#*gZ^jYJ(iHFNqDO}EkA<)6d8xf zG7j{)ciJR5PM>?H<;ZdR+&j%I$LVwLG?N^s&%M)(a-2T*PBX}H`rJD$TaN$telg~) zm&P<-P4nxopt+6^%@m?grNB-&fhhF<wU2XQuOZ5manZhxpUu$U<E$cQX|{#DjSJGt z(#siFdYK2FJ~7IUFY6IW+qkmv<#gSY0$)jE%f^+Dt6+szX(+G-UOwcdJ6}W|VR!}4 z@;FuFRlJ(_@LTx%_^tf?(8s0gRb^`I$={K}y+HOGaz5sBgIWfHF#+EhcHphMmuSF* zWTL<&Cv<&xN#ptMlGX#e$V;S4-#L4fUbVGOFDm9LE!Fa_nJpSSf7wcf&@L&2zexpG ztXNXu&qGvl>#PdlTo(t+-Tz8#e$tsqnAN(u=6>r2yN|;h*3G5A?E-^YuA4hy6pW9( zvexU~I<d8bvG~u78<qEgS7Ge#h`?tB<4X#mK}v??)8(54MsW;p8n+3=7Kta!HM@Fx z)sT`wJk=E$n7ajo^aSf-Z$yq#SvUx}OKC%Wn)KMG>zsz+l`P4bg*t;FIy3Fx|K6~- zniakavBHqNryea~^P>G`h3{X9z@~7ioiA>9ZPDXQR`0rc{v-~K$mU3$(K_VF`olm6 z3k*sokCAgm^iEcIBDx>Z=E=6#$^_Vs7}#3rZZ2kly=AbbNoBdoThp8wmuy+=o#xDP zll;maruDQ)_GLFuY63@TpR>*Ex}Gn<+FS%(i4|6dui@kRRO~Kr<ZGEPb{IEh2Oqq+ z)0T3EF+7KLcV^d6$2T2^L`B;KPa4K3rl(B;miq@!iAqBnzeJp>qt@x2BJs4%-_>OU z>>bp1FqIXG!YnL7irsogT+^TXG^+WI7RQSn&vs-7w};;9RTxe|7e8@@uC@m2svh!k zMBk5hrn?Bv6>hz1*8qFapn>PgBb-76g=|}+^}SQ+x|uS(ZpJsQJyPDhd20Nb9`U2X zw>!4n)gl%e;@Vfj_YRig^Te#GNO3cJ7F+3zq$BW?!8Gg<Vs?rEWEi#TMD`!$%^ZKE zopmQpUUn}rKW@{WAqMj({=E+M#|^G_t3s@4$)<;F@cSz6lTTEc;&UCJ-{m}V3RoEU zb7=jP_*P--5ytTE-bB+<`)YS$iQYj>IzD~VPFvsElki&^$K1J$Y1iO%uD_R<IsaR# zr`DKjpQ<(A%K6WzZx*={eY=6LYkqveUu^;JS!gLj#E+v>SFUw4JJBO1y_uPMe-~p+ z_Z<6Wirdm|b0-=|h&Ag)&D{9Lt7YL!A;vJ$_YIv{(41fYWvus!<`s6kJ8_QQF=5j~ z&A+u7DV9~^7-gR#)!Cf7X^$=K?4jk4wd)&u#50BZ_KM~Qfg6Ff%j_AgtExezts!FR z>(TL;r|^lQ)|JSdg04DAzc99UIsQwld!0RTF6Vfp*|6yW+n5uKA<eVB`IM+7nM~#~ zwjCz~hE%uyik`55zcdu_NQ>!h>dvH5G*N&i3ebd@Q{3^5sqUp$)TdlfJWPoQUi!{4 zysjeE&B!~RjAlh1Aeb^d4>rHu!3s&xS<<>7WlUywTBF&$qVZ}O5D$1%?ol0(?mL-b zoq$462p6QQ$Kqme^jOe3BYH%n&IdoJbLNUVbiei>pUod|KGLR?_aX7oGaEj5L{xYx zeQ5?o?)V-y7yA$olWP@bZOL<A+iY^_o3`7UyW;s0&u(yceAMnsgsEE~|AUq~_)3aq z7krw{Y)B)X7P%dBo6|*&OWUVmUx1vM#9zZB&gAjz;{`a)Wd#fD!}~KQIEWeLJo`Ho zEy~u6O-DryyjqlJ*w&|j&-EV0@b_Ltt71<kqeecstB~ze=ue88Hfr@A+tVtN9l87; zA!**>pX8VGOCZO>A*2@W?~CJZc0BI5$+5rVMaUSO;+Q$WQ178o^p142r8DfbDb8Sr zP~6o!*2p0zp$#^eV5S(iBfc+=rEn{tL+<2rdHiOW7S&^{@Q)Dk3srj_cQCE{`?TCi zF;Tb3F?P6}_V$xv%D!Cw$@vGmp5(KG4-HfRtLI@wi<C|&Tm-ys7%op`F@wHC+FsfN zd^q59u$O6lyHA@*am|G<M7)mei;w%GZC6(u@L9}jfr$pVG>25Jnmu1+Omt{lKZJK1 zN*0a<^jM$&*8ZUwZvZZ~16?NIa$jf#Pd%uiCx?)OUQnyv&rxFpe=5IU>`fCSoS`Oq zwdUs=IrF7PoTW9xGq#H}mv~t7hQ`UR!rlXJ4g6&3d2j#WKAaI}e{8*|wI2~V!ya3@ zw@S>dqTcA?5L0L+-5rI1@VG6vD~%`S*`7JgOEk=!J+?C+Us$E;vnv*Rm|{pZ!#}=E zr2D|A?eG6>j#dxEW=L#~raBeFvYMEQ|1IuDk&AC?Z?>gC5_6USJg}w0t7Xx314YF) z`1QqPkuEBW^qm>Ql4xO*Hs1*Ch!e&e@RvT;pjYbQXHnMukx0(NpSF9iFDVIQo1lgC z7&DN#Q0Pru_$|WM2)^F^d}OV1Ef_5sE_jJ76(acm(t<O^eBALUAe#Bp5XWzQ=eSWg z#O3RH;t^grl7hCaKWJNtw*M){qwRRK{o`$Zb48mM3ZX)x%}ogU&a_c&G5K5%G`pUx zBl?BO=NC4gYS)cg=~ALl7B-Xoi{1oalk)>?s2qM&Q~{e2OsM>O0Dbc!DA7-Sr+K)| zgr+fqE4c_>6xke;pW36ypV+hNmCS{wsFiK+u83uhqtbZ|v=XX=N`Yxz`m6H4gMJyw ztL{p;D(}<bya&5RkHhIJXfpcjmYJ=QeKBL2Anns6k#t?eY8%rLHsI_+KYad#^=|gf zS=(*#USd>;dL6Y|#A+v_wn~IIaAl5m&Cif)<(fDlnOpNS72-_s=kiKOY4o|gNB?hn zVmR=*wAln7&8VKJ5FU*3?2MUIPrNiQfuF!naE=?E4dK8-sRpO%Q@u|$D=azQHO(`h zXYvi+vCdg;STQ|T%v>Y(*niLZzC*!Z-}pa`V%j|Z)kaoWG+=4|U(Dl)e1YeD$CYy@ z9QcDoaxOuey9jNLuH!MAjvKnzX#1)bn%tF^-*8}yq%4o<xl+IwwUyF(1I1K_`|o|P zm0VZ!JwDp^o!1b}hECe^u~+o`gD~#KfU`2ZR8JlcJvk$e&C`3&b$n~ld9fB7id~lG zR7ks2v&A!d9cFvNfdWY(-#KWM*X|eL_Z?{?`-(Q62-h?jEz`Y*CY_K?#(~PzcZ4yF zbLKS{yE5Su@^IJ5j&mIrPj|=Yd6b40hQds)4mFgPL~mS0O>^qK=Q{S-)LxB~;`JEt zdJK4d25AYanE|IN(X*(-*yH5@A3gl*b;BAjeD*gcV}IB*<T53}j~C~&!aakd$BjXo z$HLjT$7JAD&d6+02yXfOo5H*d9-_3ICeu^z%qom&fW(}^CuLWO-12EJD}!vm$!-!{ zHeTeWAM;O8u*GSXNkPTMZ!u%yR*!H!ZEt&cM8_LFzpmzqyTduaE5a49>AV!tmqzSh zj2S!ZlB;{ODr^{4Yc2M-k$TBaMfNc6egjJkOGGYvkIm|1$beVvYzumX5j-n>RXU36 zHKXhu>P`ip?93Ua0P2@)#jY0b%=>J1AHxoKpAT*oR8FgQ1QLakdWBtK1NNPIr)F5| zGxLi@Q&p8{avg@g#7rWS=KJjI!*Yz7GvDXnzCH1jP3_zz--Edl@_(=s9nqHwMmg3; zJr9Uh3YjTdXVvCmFV0?;@l*Z)zt^!Vjhtr-oj4`jN%st_yk{Ur=7|OybKMfrXoX*f zYp%7xI@4~&FJ^{z>LuA)9J9mHo<1?89CfCW;v{|p6T>Lpy;$U?tt4i_Ww-lMH#FOv zu72+lLiq-~H_G}-AvHyJ%CYr4W%POusAJrqdugVc6+BDrz8l${Hk-)Jz2s%<S8CYR zqa`|pwitAZt>ppCk#SCiJBAmqDzRN6s$#3&u~Gw!)kv|_x{IuNj<IU^GT&rz0O$D* zkz2V$^B0?<Z|R0_ygzIs8yE{w`9tL{$uT=84NF}!ugYfn?pKq(`!(3FefLw5d%JD^ zx1oe<0$xDpZDNj#nYl7qn{W5M!B+Ziy6a2te!oV=_zg)_;^gk1i`*vWC)$FqL+We3 zzoJIUs2WSxjFwrn=cjO9O(k)Jj=*aHnF8IUyg_IzdyO|Z6@HIRQxu~`3t|0SLY0_c z1@{=%FkD~iny35*MPjzXVVH3fC_c`;Kg7;C=_ht~UtC;kdW9cmzdkLypiiZ)^ex>) z`*P4$?t4><@mO2w`{~`EV|H1^g!5N&ZgT{$Z4tZz*r%&-t}uR>UYbdH(X*mINz8TP z31Yrc#Dx+BrdVsa`kW#haN!g^vgd7t+*jd@dskbEvkbC;-iXl4yB&p46E^aNxLYAX zmgnIlirzQ+n^cA}jPRy>`%)j>;ZWNBWN=JWzS8jo)soVkmHnQLF>3YmJ4AD%Dx163 zPzav61>;)!mymK9Jo+{)^k*wpX0GnjC^FMQ6UU-Hg<__w%?286bogG!Y59_0eR0)k z3*<k}fn)3DEc7D<CqCdvWvoRudnqLBYWvf+3>TGJSJL#~IPIq1DpKGt(K93L`|R7> zZin?S8#+KUs2jNxH;zw!FZm4`%<kE|#YJ)?%#liAf_9mhQ>Do#-Ur(I)ZFPJjDZ`c zG&e~_e4QMtl8#`P0RB|=;ml2&|AjZl=!O?xu1viV>v%Zu`%paXi+o<F?;KlUm>SzN zV}ER7dEBlLq#~TUacNx-S-brT@Saqh)}`=EMGxCFCr3+m4Mw9Ow9>A(vLQm&5S{fK ztbLI^G##5H9<=|TY$xYd@)L}+hq;KJj}TM0pH!K7mwgOQx_0pf!DT%kQe&>!eaBfP z=GU6!^K$(PH_~%YreVBn^B@BpeHw0M@^9wTa+SUtH}-igtFNA4Infb|@bN6%iyF1g zm?>vKPE}IwxX+gFFjGn57~=vLY`FM?(GTPNJ0gdvUXg;;hMOB3dCCQm(Z@cf;b~iu zBf}NB8x+$hDaU>sr2Nwe4)}BQzRbvqz-Ai?Dfgr}jOgE1a8RXh@tv1{fW<43Q+U}Q zh4!c17Q=y?6NOQUKHahv{V`Hljw~6{5Bu}G;r;|V$1G$f$80$bf@>kksRE}h6>}PE z9m>81%EgF%lUd-H3`q-FSVeiO(s%PO`hI}lT0o7-*#P`+n4B1XfD0Q_m1wS744cGt zj%PFT9XT>Qa}|{ubPT`y0X+LCc#ZHecnEjVV)G;kygy}7$x}_l4eiN3SdWuTdV>AB zv=;mE$eH|_!N?r=^HnEA;lS7+y*U??z0$ly*j^?$nH{k+&J@@enE#am$E5v`ySVSC zz@8xo{aAFjEjOFFeid{S=va@gp8r<gJmp=Ed5(NXyhH8dlq&fB%=a<MN$8&v^uKW< z<*6^_9m?nx`P2aQ|BA_fp>uoNI`}}*6KQ(V8j%L{437qjn?WzlE-COi?lwsQ#~^*q z8!YDMVD=Xx{;#2H<@Z`C(&K4A=<(ix_^2GFHm7EsSj^`ia{d)(h}Xz6I0Ihp%ZBF3 zXTW6=rE4MR`umXP85%bqPzXCiBluhgY*L;X`E5Qxu^S9hTs{rb8u_Tv6v{s!1<nQ` zp|#eFaky#E;C8(uo}S6)!1|KtH^f<OtbH*~>6sQOa6QsAPn@%-?Ec37ww-HXTIXLP z%1J(!RkqB#gu70yQ|;;YckNbNwU2PB76Wv<I3G(mU%WzLXF&b@1G!dqM;v0TFP`Mu z)h%o*N-^nn9ol>$tZp?wn{miwWqnE}#je_;YDuwX9Llh=t(;FuP|7X^E)0EqL20)6 zSne~s1=<;)ku*E?lV}dHdorG8eF~CqHK62*5Z8LJkJUy_v|GFra$5P_q5l3C_{02b zUnP@g5Mu9t!vZ!BV?^(ENP#<tR?R=vg*DJ<fju6!EcjzdfrQX2{?z18yc5j3Lzgas zYVm9+b@xpE8U9s3N<JQW!kQsNq7<(Uo&6CwUj<+BPe}gEOV9Hc1uftbMjqFXf;q-2 ztO*mv9AgSr)(pI{>I&oV2EPlbBGu2X8MV@G5ob{@jrvTCll}B!vzqv`)RVKr0i#GI zH+C4wuffJ04y5DvW~*T}osG%3d+@b4G8-!q|FY+54X_G+3=#bxp2x1Ef`QLU#Dbf~ zmzfm8d6|<(%hFk>5!=`6asEDX76G4(fzhiImAnR#^XHJr4hsG=QD4g|&oHFGD+7h? zv>beD1|oLiEAbq{q0h*=CM<9}_qHX<(uc$9o9WJs>M_y)<^9Ay1yKkCay%9Dpnrh+ zH@zWQk0|{)Dmq8D4!GdAD`9VbGbo-pY`y)XXDINd)W%=nU&4q_=MUmZWAuFn<4#Y+ z-Td1!54{pH$}9gbqwm{?68$-Gk+j5c@&|`dC-N+DYY$TYWZYQ*@0H->oHc4OGxvl} zi7)6(e7TMOIz4EDG@-G)(6>BbCB%3)_CAaHqalq8J%e&(TFRFc!`QpToq8aG<J$w; zLuUBcq(Yy28=fT;`Xt~>-(!c&;QZ7>TI9Wgw%u~6uY;*_4eFQDh8n3TnSdIp2ei*f zfzV(~Kf-;D!qjI<T=@NW8YpgWA>7=XML9OAztV4UP~XxR&q{&W1J-to0uveS8UJOp zmGIRljIIx}qW-BPFvbm(9U+F%RwG@{P@pfIGn4ZCZ*gnrJKSretw;efKzFcKZLjR1 zLifCozY8AZ|J=3`x3#FvpE;0&J?Eq-2mM>5925txIV;EXh@FySS%`fgmZ61x;o0&{ z%)QW>UF|fbI$Q=mnl#Ku4}g!J3e%ilNk%?R=C!B7U-#0K-%DvYlcIIL=(S+Yj5|bq zrGofEN{(tOA9p|tE|LOY4_aW=j_BlHhZ6k@HF?m=;|?&mbCeNG{@{SjUG!Pv)*s9R zcTwtNtb*_HS<lIm>dnZL%Bwt_X=WWLfyDZGNPoxzj>y8OcZa6(dW>&YF!D}7n`L~~ zAwBXsLU|~|AoufuEV;&FVEGr+$U+*68d(SQ&q{%d(N*ahKKVGEA!b+BGcg`1aa&yL zdnb?L2fEKn<{5uk++6-9oP%DEQ~NAu3Qk)`MtA$r$hv03I(IE{)&3l%6!_nP<bOar zM=-mQ!dYNgF(OwA>>RK`Bd64T_$moB6!>I_mI75}DI_eA0{0w=@Bzgo$H@Q^@s}w_ ze7El7BN(6!ZSwI&yv2PTKM&BU#5W9%;9$cJ;aXX;FGl<2a%`cD3B_rFoE9fbwRr=P zm3?LCO8Gbx*nu^_OtySe%$(74bIPMsCwixCmy`0NN4~#aF7qfOJS^)6;00lu9MdCq zpB&3V?3Z$E5@JnqY!+f0q=M%t9P0t4ANN#*wGw*qCJn{z0$DbdxFCym%mR1yi71mW znuChnCVtkz0-1k466wteeUJ5U!E?zUVD2MW50<z!(E5r&pZCPK{e&^`Z+BS1CsPNk zNG~`ThtlxX6=O9@+;N9=C_j}qgHrbfjo^DJa7LWU7vTNX0R0^fn55~bJ?r3oyarUn zeAY;Ty&}Fdb7&qv3*}rv{ozRLgMk=i{U}_1EmBEKIs88|*2*5eEZeN$Z(ERgIt?>S ze<&Q#NpVjv=F|9DhbBE2cQ_o-jH1q@D0QU3En?PliT>QHC{q9ovkp#@X|o9JO#+>y z0Pcn&mE!0SndeN9MP&@_;dP@ZK(*vtnPx@kQy$`zfY<lvdoF0Q1Zg&un1oti4@BZt zq<=YJ0x!~eIbJSdm1puf)Uxv7zywGeTB=z7hDrIbCNUIPHCS=QJQU_B;pvdTA8xCc zIgGBN)1v&fO13bjf^U8*$1)LH64uHbl!N%f@Cf&457Ln@afJgPNU?RTK>V8aI4QPn z#oqshe4uNbTh_wDffrGO{t5@$rPxY{)wM$kB#K(_hZ(t2;CA#)3vPHWjI}NS>*5dK zV!e|`iRyNl&xHdIN#K<$#)-<n%;-pl1NTVJ@Htn=$YM9;E)$<~FcTvg4%7iNt2}C9 z+^eCh?2aF4m5yFGFdnNwF8Z)ZqN6xfUNQCZC}MApG&+ho7%#0na<nINq)eG=u%pWP zR($_J3Ji#mF}z7Wvz|6;?0yw0pkp^|s}d@c`DZVW{UvE>!0MU=IZBL`{krw+0a(wL z!;&5y$EG278Dk`-Ej)Hk6-t3oGS_kbbxA6JRy<0U!gls<hFytMqot0g`V!c5x@)z+ zGN0Oy=^prN?@#Jai4Pa5{F2UMC6_l_yE7Qa5}%5FTQukrz2tEz5XO1>B4>uXWq9q| ziM4N1sLV8v-vVCgh8M~f^e#tEVUhCJL1r@h>~y~DnljUtgH-Q5JjnbcX4NVj)D#Hb zGDGR)N@0xVtZ3N5K3nNazl|x~=1X6C?2?UzZ$=elO*!PnU=eO7bMeOL{$&?Ng6?g0 zMBfib-_7Bd{G5VmEj|5~pHpgs%8S_V@74IzHB*C{%VX_aiBiapd*c!r%Ut(>Pfg0E znD`0h@B$+b`IK>VXY{PdKK;%m8&QWS2QNn(1w+jBOzRl0iBHAtbOxGhE9N}eomhr@ z!`S!6!80;1s4ZKEJ9m?@FI(3;oj=sOgP$5yTz<1R5u+E=>j^!hKrkSzLkQseBH8>H z*tga(95^esGL8d}-9DJ)^o+Wf#X#?A2$o<ELv{R^XY{wPjo81w#R<!ZT|nQd=i`Tc zG_=&uw42%USmfLgzCA;MvLNy2C}R5hk*K{a06&+UQKvadUXNLy%&VYdftK;xsg*f? zz)SUvLg4xK&}nG4)RI_k3kTe=DMr$d;wuVD|4U3b@O?P4E5V&!capQx8dN8r9>JPo z!Uj#Kh4XUC`_^#aw_PLo-{GEA%+?`*UcYTCk)>GVJ1-HdCL@TUh%UznmqJvg9v`4z z2Etbp+%aqBPtnc?(Ye|cg5KBzIiRMV*x|rm@w*qd2=T=kzawE>><0YbYvvc>27H>^ z!WX*YkZ1UjJQMPmgA|Hm$Ovg24*VPvC6|vo7!H&S#bg~_<30?>(x(rZcn-9osoTN1 z^lg`@&WH1ZP-IuMuXpTlzc+LmoQ6d)?uc(9xoKT0p0iNBA=R70yR#rygU~7&rQb-x zfv1D?s}QlB9MzbY3@Az%OX`_O*;dfIke}Lw8Z6FWCF+q58w99N?Pd$FxTkhrJ`HY^ z&->_io`lYc{NLJ^;a+GmTF1?NQzop-rBOLF6LX&!r(y0-mq&!!Mf2ns-KjA`jvS}! zO?K#7%JHy6@4z>fHultkgTmNDYY)N(gg%sGCZ&Rg^MiEN*cbF1q4IQZkmHwOZ?{f0 zLtafj3>w;J$ZN*wAUUGQNktj>m*+0>u6rd?iq<ND?KbrwjjbP?0jV7hJRB}UeJ$YE zA%*5_4Np6i3K<2z{BY*e8OWpYf^aTB?GTmOX9uQ1vOg|zyzY4}r_7jnfC$sYGW3-Q z7VPTXxZ^kl@5DZa5W$34Dsm>u-<>OsO3W0D#3Le;^GPq8^KtJCej3_c5U!Koe+1T= zE@h4vXUFrR`*d}ucK9^wN~`Nopf0jE?_-32$T}`PcOTiGD|p=v;8&G}XWxC^rgJTJ zP2d%NjpBPR&dL3`kYQd}g^Bt21<h4Av4#S3;ZG15@BQ%UhOgK#4)IRcRT61(6bmWP zHEPaY9Cf#m+Q2xzwe4=F_PK}nao`v$zVngkPLFa-X7JPn)<b>8KCR<gJ`rEt$vtuE z0`ochd#2^o1?BUKmKCC@oBad6l2Nh%u}YsXWt*>Ue2rt9ukp5QhoY7E;uFk1!fy2? zuqCh!GP|h<N~Q0vS-*ijDhU#Ao3B$n)w;!(z##ThrYPB=%hU9+2_=q?FECrI!f!lF z%9T5JK=(}2Ci>lRS|M2**Y}`yx#-x-6lFZ85R#eq#e^N|zAemR(Q)s`V#2;k-#~e# z@2~S7^xaebu{dVm7GEGmwQ~hdLall4<F`ggj??(H8ud=ZG#Lk(zK7zNzGjVT_ZHv3 zm=%C>tz#LUmA=8;WCy#u+4pMNgT9?pD;*Z#ncySZX5YQ;Ej}$X&+)OC<*7i~d5&ux zia$KyONvW&RQfi|*y4MhfmJR}=}Xc)<kM*IdoeA|d0_wRd&!aPnCj*B%yAUCR=f3% z4X&r$7RU3h&)pjwmt5vLyQ8?ermn`Zq57#h*71Dx=XEO`m#XP^64QtIbr5>X`|vo! zSN6_tg{{p6e}bR%#$w0$627K4lS*ybZngg&+yh3Sx3K2R`btb@jpa$+(jK;6-#@td z*rhkL=AO6xRyFbGYF@T!`n06vBrIq69^a`8nxX-+GR@{E3h-u;owr_hgX4M!=XWz1 z?$np<IFs0I8^BsT5As3^^n|DLsy?L_Jgq66ey~r?PCe5gl(L7klY~-+4JmG#;W*l! z2Wgv2zJdI?gSKG4Dcz2{SAf4%d!DA&(9{_#)8}D7gVY(Ly|7I^gMsJ6Hhg{0dd2!@ z2h0(iwvWQ;*J0WV{bjNt)(dNC8*CDw($<I_d_!m9sJV)-0Z!$6JSMgt^iY91?6R!c zxfgHLpY2AQg}BER8Y;e`HA(>kR%L3rsl?X?yZy7}a=mgn*D$3hRuq>R{P7EEI65?; z{H(A!oAYPUzD!SjdAEFuW(IVF0x6j-w)uDtz}sSE{a`?WqOhC#PDEFT=cD$T#!h<k zZ4AG+P3Lq&?vL2#Apb=-T6<xL>MJyM8S5N<!_Nh<V|F+Sn+s<}<&6SbO2XW8Z0J<u z0_v;I%D?S`2Y&Mjb0cY*PJ9<jBEn4~5pF|RDIWbwV<kfION4M#%b9Byl3CV{n=`aV z7lp$)mADO|$yfLtxZ9!0kENI7rE4O29P*lx#|`J1ncL>m_Nm`K0W@8-{TNQvmp_J+ zihAW|8T+kw!V^DB_R9AW+$hmeXruaJ7*!_*$ND2_x~tO0MDGraiQ>@MnS{F#@e8Rh zxWWM0i#=83e!+3P3tX_5%PD5~X3!LR{zCDX4gHD37&xU|e*6uv;Yz2G8=v3Y#mzJe zBKrn@HFtf{K~ujVUvy;Ik+P8fvI`11SC034ifKul3(57(qw-=<W*?2Tmv94ZPmgkA z=AKhCr|F&79D(KD5XS&6?H7eRX716iW<&Fk;P*u9ZK-ZtpylY3)Ok7@7hnyUN3cs^ zla%h`ZhKG_kkpB%?<Pq>^&k^ei<5i_${b$;rwFP8Wj>{HuATXbuE6J2x{kXr>$VVc zrI4H;bgJw5dK)}-{-ai(eu5+fmHktEoSF$LFHg5K#Ttv?jg-WfHaQ#aaeskwdr^+N zJlUsIF-Vy#m;2VMUd^u-j&ivZ;RQ(qR+~IFog~p4u$t~mR#)SK_*mT9xIn%cOVdds z{2fn<jT*6+#e1WM`h3QCQNe3E>B$N1yyXUaG=M!N0y{osd^Sm?oQ->8o(=RySmT1E z$Zw3q_r3AaJO&>p&>-H3a+Et8QI5`tjnUs5@jE&negwApD%j>xuqhwKVAJ?$*pc6( zV53FNY%{(rLFb@mq|HcrKlOaE7DsdF+>EB5hYyR#{DX8sVC_DlA4#X4vzaQpPhn^6 zY=zyoMQ`t?@`0l*0iF)NEp$%Yf^SdVgfHacoB@_#DezPLzCkkl5B6-53(sTHK0IHL zOWZA)Hq~sZZZ<SYux-#fR+RpUw9ifNO;c#QB$bTku}fQ6g$3(R9g8ort(KoUnb*%? zKlc#=W3p>mzsJsAPAX1!6ZpR=aNkj5PXkx5Zo6P*S;V%wTk(B`zaeHv8pqlZE9~Ul z+!I{?yc_fF>=XI+Ec+PTFi5aF1dfZ8;au3$93_O#hlxCklm2G-i#)zS)!Kc5Y&+&s zw|0vkRk77aMML4QU0d%{IoaD(&SST#oLg_jJ<<zB#oZTX7RxiDtM(S6c>`gAi)iR= zkd^gm3v@3aX5H`J&+A@wEtu6wCgJNL?l<l`w~1Oi$Zw^<w~#9z6;9<>x(#Ue^SaFT zh`&YJ0&2yN)c>L`Qa|!5r#|wFwvkzvwt&7{qwke?>pEFC$DiG__0jv*?zSbLh=+zK z1wND%=KIC`LbLnHwP!ay^=O=9WyX^=Pi+IOk^8Q+OLX8XNVxlMX614OPe<WX+n%cV zrkCDwrnV9#PjKo<{IlWFG&i33t=i|-EjY3gRvLPKEw9IwLxK4(&uIFsc!S}$;=;ld z>vr5y(Oh%W{0m-RZ>;3|@Uwqu0h4?2j9lkYT_=OJj>@&)O0?blLfz3u^y0opkN@V} zru`Xv;cuSBZ&~~2jyOj#dZR?iP13JzO8M^nd5L;mHy(ZZ(S02g9f!9K^v>>N>o|UE z&Gt?2Y)a(8+2*a=VEvTH^L@=vw?Fx)5&n{IZ%R5_)ZP*DUt&UfQ%CT=i%YZy9(^`M zB<HFwV*0)}gHM;Wq7sRd@tS?qz(?}`)P?Ws=D_x?x>=lAH4R_I<?;t)|8J}feaE@` z#f7?Dz`Mcl)SAn^D2tJ2OjCK~8saZhNr7DHv)|+$p>&Jv5&zV+YoHJ#aQWO*54G61 z6S4F=yUcZe!YG*CQ~7h7415dx`IKfAzCuLl6sfD|(sk~@FOFAPQhU^vDLqPy(M!LA zL2|X{o_zH4-?V0!+$T1**c2bBqV&b-DwT`paL>tKh_jwVX*RwpXTVpj(m~y0Vb1Ks zzA57AJiUv0X3}(gJy))8UYCh;7+RCwz%j4+XKxGx)}rp=EJ^r2r`a2+{nyvjxKHZ= zekoCShhAgX>DxgE)ZQf)7B0oNl4leuEh=yIZz4CCR=VHrppYZH5P|dcYq*ctNpH|X z_kmy0KKqAmn_yLZ=*p-gd4nHj)Y)*0FQb~~WYnEd51#sPZF*V9Wpc}&wfSAPelFG4 zuQTnbq4_68F4rU|aOaQ9rBFOJTYuw{4_yk=ifXJmxi*1C9=;R|or4s3Oe<FJ6VDs= zpd_Q%<5E`asZK^tRxX35E?0AO9sG)Qxtu55+qi(<^`ocA%dpzg+s*nqd{GA;iX7y( zemIS;)1!Yev0r8enpMKIa4$!KN;<bctfwoLxj$S3e^AJ6x>`NVBS#0RwIB=MsL=f3 zANBN`2(!JV7R%Yci)8sb^{pCcSmp26I|Ong?&(c+^phN$ps~Gy_&fF8;#XGWJKuwi zl2~Z^al9*j^IkoC2W(HSZbNVNj@AzJx^SQP8Td@tmTh72Jsd!v`ay59<zd`UVoibG zEPU&r(l>u%rSCr5<Q~-9f$z>Gl=~7Ylzyv*7jyUhqy9aI>T=4hfYr^5N!GXPVc+I# zz6X}9Vf6M}m)V6hyS<;-i|sX4Wcu4Z3Apv6B-?I1-b-;-U7m5P(myA`D(2&yK2m!b z7pn<*K3wyeXw5fo{Y!5faMpEF>?`|=YCtQ4w|?0&lKWcMvSn7mV_jC|t$*q=X>=?z z6qEedx*W?Kg2&;gdj9h4h6~=4^_Bg<UY${`JF4qMUF-RJ<`vwmy>@jwTGMwUwrs{{ z^>25SGuxNZl<ifS=gmLJp()#|KC4F=_>+F!8?Vxz#ur7{vf`DDsXb$vt)HagE6_(X zmYL+(r}ZnAffJXksDc)g_hHX_y>Ti!{tLTMi&-|~T>ZkXvKh41x0XTose(?VN;qXt z+bVuxpyg<ZazK6uP{`_ckWXWt)dRf(?L`%Z@>TsJhFnf@-M>7C9e*l|2li98E&i?^ zr;5bN{CznygBLjd?~Ao8$!9)F<AtMN)x$4qEjKr*>T)kJU+$gN$?)x>Sf%5ifY<&6 z>{Vb9v1EVLfEn|&MiF9{kiM<t$##^ndVv+2|9BV4Iad#jcrLynzBJR_+_k^skH}>X zGA#uD|I|uZcoby~T*--g#bwWuR5$!$Er4L)=AfkEAHB4Hl-ob7=lGlJ#`Tk%v_0U- z1^8y<;+4NyTunzBJGWOWg#@kq%?-a>LnTQAbFQBKUZX#^{H!|Zv^J!?v`l1ichJCJ zfPA4PBKdYvy^pzuoA!nGqUxs8NY}kpuc%k_3;O3Tlj*QlD9v7(FYVOwn%N-NHGnV4 z$@&{b17R=EsHtO?RpmQ&iC++JJ;@ydPecuFeR5W%e;K=yS+PuEUr|Np(eszPr+?A| zf6nQQmoaP4KY!Ue{i3&lj!VtC<(aJYl*0V_rMOguWk32}<JFjHn~=4*(QU>0_<|_v zcH62yB4*?l7AZBS&Gl^i<CGSwBRyJCO$sz0)<jZqn>m(R4DI_VIaOndrP243_2=qI zp0#HWB&bHQr~2t$%uwJA|Ca8B0$FFp`>lHNy(a5b2fdFpQLrWldoq``CiaNB^RMAd zGx%XE!}d3BunPv3t;W|V>sj>X%;I<Jb<o)!#5b>Y^+xD-?hazv+e3Tw_=3lK(Yk>v zj*WUt@18mnFgPlY_qlp1rH$>jsGM$GKqdA-FU|&zuz9-9acALYpO7W6$s8Zgo4j<T z_5wT1)NZc0e?I5uxba^27v|xM$NYC^Zk+fe)*NXrb1ifJSXx3)mdJdUA~MtW<Mift z^Dp-thCNkx^u~!__onff`3R)zetsV8V0!4@<zDL?^T~KO>vFp7uI=uvu6NzXT=8{m zwX@D%y}fR0^}BV)s^ja~)y{hR>h1MgSHD|-Y<2uvw#K>EUbB7e)|z+M9;>kyT4z}2 zoI6oi6#oNQx<cIy-JDA&5{i^3ssA`VN#f=VoZyNyJtx#zUBI=3ATTH6n^}*Gr+W`g zp8n)^b$gEv7#{99=I7WG8Rtfo-G6e1s3<WY{GpedbM_=NCkAEUM0^w5=xnk#Zg1M! zNTF?2<I5a9H%=sZr9CYFP6u<InLFnsD>9ZR)B|2Nf7;piJLdb8lallCod1)v`~5nF z3A;cR-mYK5dX}2SBE@!ryUBJzag(lSJ-&yV;Aa$LgoI=kcX)9VDM8=!3~;1-8Ln9G zz`4iD7JSVh0sGhd_IEn69JIB)NGUwJ2B#z>zu!C1%R<I<K@;20pYJsYEQ7w1Za*QE zMg$&?mA>~98U&)q>M{irF6!-={|O6y3Hb;MaWbbc`B+7&@4Zy6i`L)@`+Hu8RZ8Jw z6jbYb9X{2h?*wUF5GU)&_jcJEZf~q!Uu(Fv?vC4P*Eg=OyJO=9VsE%(W8EEh)slIu z8`f_m>uc-o*s!sB-8z(7fBW4iUO;ZTqjB9`w;47y+_m0t<NDfr8rJ8NyMB;XK$bV$ zWw^b1li`kryGi*JfY?~Qw$`xGU29lhw_z<=Q@gRYW@GId3b5hUTkC4-sz+KOKb^N^ zQTd_;Mp8}jprvf<8`jp|F^mVXH8gBo*HFEtc0HL<Fk?nRA^B<Tx|)XDYmKC8U2XM- zTEj2uHq>n-8)Xy=>Kdk_Bj}Ri^qqh8m%Z_YIe+$;z};tpKK}vRxHliUx%Eyid+-+z zt(->Knkjn|G`IdILHXwHla_zJ+?KZe_Vcwr@#>x^IQx%Zyj#4ADC~#Ny$GG)=F;Ds z_-@VDySJ20O7H!yvf|+ODGw}qxIFcCqS$utwL|x=Hvfvf@0ttUcYWAVU6b7O?MvSr z$=Npc57IY7-xGGj{cmJ^mGN=hk~!zvfBkmmj)u^h*Wax5ST5dvRDaZ;KLcleg#P~z zge7Wx19&Qe6XAA*M-e3ak@@S_H>@{A2MGg72apaGu~*+wQ@f7L1KrnDZ>%=lU5D7} zTEn`A4I2x{-F1zTp;%M<i@KWHQsQW!18P`bi?QBhxV!p}jfRa4<fr9T7z9H>L4hGk z)4Qud(hYaj)YNX+aO+)iS%AXuIAlQ47g}qqB{GMsudQkLMeX`chMMa2Ym8)3Eq)l* zG=LB4HlWx>cf(y9NsPHlNqLmr?x?++R4tibHE+p}AyB?(>5cOiF8r}9KFX&tnpAJB zYq*1KY-lj7uDh*(jAU<+6F1zB4i^x2EoGzv^3(MVcic9@W7B@UFurMz-MHx62XaoP z8SYB``Kl-1U$Xg{`@Y^LowferRm$VBNpK}qq9Z~nv#9p&5r~xiYZ}&rDjSCr3kXeZ zT;EVryXG!TNJ<rX_S{ihy9UF6QE9BL-iSeq4B`4(nUj%McZcB?!-fK~w0dL126x@U z>eU;-GV@ndE+K{g<&Tt_&G_gH{i88_c!(%8ax_DZYKbx#U-{SpgM=K}g@_jA8HRX@ z9>(W7QyCqtZq=rCFGZ??Wz@<otd-#KD)OgRGNXTLIkX@lYdI>%%FuVL!re&MAZI_` zj&JXseebspBoOifek(Z58Np>hZwNVlRsGShek9(VK-)M!kv@g%X#r_)<hfZKiOcDX zNXy`K@jM~fS3bMtbXs06132Ajglrx<KUaR<3&=wf;EBJYPhp}Y5aLRtal**3Spj7T zd!DvXdcL&#%BNaR$A2)B%hOs!t~>e}&8008LR<eYf0RyN<9n+ACHu<c+44^rB#At) zSJR}@4?OfK(dTA5azqN_kt{#6Wg27)6OjTs;i(p~Ju%8f=*NhqpLSDv|BXIFY&Yl- zIMz*YWGvzNW<WYmm@StmouH`Dc0QGm0qSqYlRaOGlnAvVw8@q!lr8r@J4z>tQ3S6j zj-@iDrC?q{=Bnf;eUKj|7Nye|d~;SV@&EOZi9*yKT5j|+`EN*4mj=2iZ7BYD(iDhg z;2-5DN+)=8U-e|=6jm(7zpX;~N9DR7#Gb0`PyetLKmM`#I}cI+fkLHE0DV**19g<2 z=%BGORYpJ6a*A5`6>@<Qp4l>9k!M2bn@Azq9{QAt6@5l}NmEDtQ98}N^Z$}g<h)#y zKAA1_$$lz7G1`dBqs>G)n^KENa)wxnZ14?I@I*4c7>{Ri^hqg~EMDJ;mn1dexmkXe zO80_v+0y1e;JIxxdO1<%hKcfwOURbzU8zi`(*M)m`3FT&hH?D4UwbFnu@V(1-JJ~O zj{!u%bERt+)D%rh^G8#dDF~*WfrxbG#jU3lgCvSIS|%ZBDNTlzmfD<$&79U`PLq@= z=}lSbID?{ACtdIM-9;NKn`Zi}KYZ@}?7Q!~&%OJ+@4oxq`?Bo&YULqmbtpD0Aqmv5 z;2&G9&grxg>aniJQnO~9xjwAw8`Lct6Kxw*w|^0y$D38^Jal2$9g(6-PjuBs>`^Hy zMeJSmOHW8qdnER}Ijri{U8Cn?$~onvvhT7K@kNy?cCFrfSM+QimupGm#ly;B<yA#u zKIZc=(QETuO|JubI$0+hf`*_uYz|w?tYtQj%_DlHXca_(B;?>37uJ%yYBnxBN>o;x ze>BgCwwQ^xV6H22ILMJhIr4R#J*Xf9e{zz-JLtc=1mZd3buv%05-5Qq4mqJ&+Fgr# zSSO<;{UZS5)qH&V=Y053F;Kh6tf025&K@D@Jla{pMfS<pb#_I$jti6hKf4Io8LFdf zSHgBBVpbSxl-e-aHN$kMpRm)8n;n@#KJ?w)WO6fn$TUoOM43ojFqBjlLIKQR@34tB z(gn#Nc>QGXdj+TpOn@rSdr^b*29At81QV=rWUvZhGI^PwdC8E&7@1ZzHe4tqlfR)s zO+H~@o*MaWb8{d`)zdtARp5M3wLnuT>#oI@^-d@0Go46UaEHh^5JJX~Tj0qgzq}`$ zL!6hj?CJK9sfyLGDl#$F%w}k(_WRY4YJnQrtc9AIWbIg^O^tNG20g$e`YcKuLv})b zGBT#ulbKazBxF=EL}MokAGx`bSWTo%3qGqnqb5_s%E?%Gp|OrQS!PVeDWXhEF&wek zB4PX(F`LWA&J!2v6ok$Y$~7#CVdQmH<DLuOk^yGo{uit$SeRp&6`Vz!UK7&GIb<@X z4;D3xlSLF)l9=p_*E}dAG&s928LC(liuIm5B~i;6)b)V?=DOV%P{T>iWUPxJI#h>* zu6RgDO;3_iTnYHHD@BsXD2jXr8T)3Zr;;JclF8%}^&%3@a9Ld$WEMm&i4$@4ouWl_ zl1aG7q@MDw^z32DxJuqmKRQ+l8U3AJo{SdWf-9w*+==H<sABlh4HBKjJpXkSSbGQl zYWV9wBX}Kb2RpznuovtHAA>{S3-A@_0N;Vr;2iiF{05AR$#N5j1Bt)^Qoulv4zfTt z$OYrUB=8WJ35tOmECNr1WuO|Y1Z%-dpc%A)cffAY1`dMHz?a|~@IB}RKLZ9#$YTtM z1@Rye^apo>RFDa>K`zJx`Cuw20FQw=K(*xw_=|xTEC;n<4Oj;@f@ZJ{w1V9r2o8YH zz!7j1oB*c)UbfxdE^n2-pq%I99kl7-vAAW2zwSDov-$P6)lPrU@GJf5h_z=JO;ajn z7d_#?&;)&Ybx7wfMNk`26wY(ct5`yL7)v=yW-oSEP=4`(QjD&80vSVxWo8X`ju1xX zjv77Y-m#Rxn@HGY$=cSdY23=+nks8<-BpZEyY3(2sevFm6Dm**cGNDxU>ZZkR7vxw z2>y7&SPFhQmC$T0W*kjJ>=;@E-AQ06WzaBkQYIDBa2ksJG!pPBLO6}G5R-|cX*3dB zbw3SSML1rJPzGY>X!|9I#p)1{I72>7p|LboJC3CZX-HJD|DrYEY9oGKX#MSx+m6P( z5IfyjdrQHt%eN0IYvo7(IHAw7={v0J?mih?5?DeX9O3)<R*3q!+%#SOn#W^5udn4T zW_HKg$`|{1j-0X{%g&?RTqj?0slj&6IxueLq1|`1oc-JRsL9dKlKJ#_`%~ulUT^=< zVQv5EuR3V@A!=#<o2(yFJ8I3C5epCh8r-?%_|7v0`=^iW>eKb`X1~<XJ~Qdf^)2S3 zx`O3#f$E_tA3f81TE(M*a<=1y{07&tp`vR;Tid)1r=A@bI2YR37W?U@-YKQ2XVO|$ zR7~jD);i-@&E?7mCyVPBgobWCIKa?)!1wUJi#LTs<JP><KDp=<ZtkE#@zpW!4-oqI zOOGx{&A;VlVan7+F~xgh=2xbFynk7BYI(z^)BBq5E9twnY~_9XUz_Ycka)V`^Azr- zFRO=JFO@aT=WlD<oM>^6uuXg_Z@|tETeIHnoiuVn%hCHE_~ey>i>2w0clzrqN{hC5 z;ynjfSo8<#x|P7{v+hZo@ls&mf@fi9?hn1@S8t!YxBTLhuI!&4*y4N8I=K#WCcgRg za(m*TFs7KmAHYm#-OxEeTTSZvMfBWS!&`V3y>T`kn}PO1%sE<wHVte5-+>`>u$B>c zu|(?wO~PQ7E@5t<-uS;%)FBAbaja+bBj^Mvcq9hV8P%q=M|2O3zkk}4QCEZ4_$ik# RdoQ>lH%j0}3H)zM;CFAsl2iZy diff --git a/core/embed/firmware/bootloaders/bootloader_T2B1.bin b/core/embed/models/T2B1/bootloaders/bootloader_T2B1.bin similarity index 100% rename from core/embed/firmware/bootloaders/bootloader_T2B1.bin rename to core/embed/models/T2B1/bootloaders/bootloader_T2B1.bin diff --git a/core/embed/firmware/bootloaders/bootloader_T2B1_qa.bin b/core/embed/models/T2B1/bootloaders/bootloader_T2B1_qa.bin similarity index 100% rename from core/embed/firmware/bootloaders/bootloader_T2B1_qa.bin rename to core/embed/models/T2B1/bootloaders/bootloader_T2B1_qa.bin diff --git a/core/embed/models/T2B1/bootloaders/bootloader_hashes.h b/core/embed/models/T2B1/bootloaders/bootloader_hashes.h new file mode 100644 index 0000000000..2e65297edc --- /dev/null +++ b/core/embed/models/T2B1/bootloaders/bootloader_hashes.h @@ -0,0 +1,17 @@ +#ifndef BOOTLOADER_HASHES_H +#define BOOTLOADER_HASHES_H + +// Auto-generated file, do not edit. + +// clang-format off +// bootloader_T2B1.bin version 2.1.4.0 +#define BOOTLOADER_T2B1_00 {0x12, 0xf5, 0x51, 0x01, 0x10, 0xb3, 0x59, 0x8e, 0x73, 0x95, 0xa9, 0xa8, 0xc5, 0xbc, 0x3a, 0x53, 0xa3, 0xa8, 0xed, 0x83, 0x32, 0xc2, 0xd2, 0x5b, 0x47, 0x99, 0x27, 0x9f, 0x93, 0x8b, 0xb3, 0xd6} +#define BOOTLOADER_T2B1_FF {0x19, 0x7c, 0x2a, 0xd1, 0xba, 0x89, 0xeb, 0x2a, 0xfc, 0xe1, 0x7b, 0xf3, 0x62, 0x7d, 0xf8, 0xb2, 0x3c, 0x70, 0x16, 0x03, 0x53, 0xad, 0x8e, 0x90, 0x9b, 0x57, 0xeb, 0x4b, 0x83, 0x4d, 0xa0, 0x34} + +// bootloader_T2B1_qa.bin version 2.1.4.0 +#define BOOTLOADER_T2B1_QA_00 {0x96, 0xe7, 0xfa, 0x21, 0x66, 0x81, 0x6b, 0x27, 0xf6, 0x27, 0xc1, 0x50, 0xaa, 0xf8, 0xbf, 0xac, 0xf5, 0x0d, 0x37, 0xea, 0x10, 0xa9, 0xa2, 0x0c, 0x1a, 0x58, 0xa7, 0x42, 0x23, 0x80, 0xbe, 0x40} +#define BOOTLOADER_T2B1_QA_FF {0x7c, 0xca, 0xde, 0xf6, 0x8f, 0xf8, 0x9a, 0x08, 0x35, 0x0a, 0x82, 0xe4, 0xb5, 0x76, 0x37, 0x36, 0x51, 0x33, 0x40, 0xd9, 0x66, 0x84, 0xfb, 0x1b, 0x4f, 0x89, 0x34, 0xcd, 0x6f, 0x4c, 0x03, 0x1a} + +// clang-format on + +#endif diff --git a/core/embed/models/T2B1/model_T2B1.h b/core/embed/models/T2B1/model_T2B1.h index 9b384605db..d82aefc89b 100644 --- a/core/embed/models/T2B1/model_T2B1.h +++ b/core/embed/models/T2B1/model_T2B1.h @@ -1,6 +1,8 @@ #ifndef MODELS_MODEL_T2B1_H_ #define MODELS_MODEL_T2B1_H_ +#include "bootloaders/bootloader_hashes.h" + #define MODEL_NAME "Safe 3" #define MODEL_FULL_NAME "Trezor Safe 3" #define MODEL_INTERNAL_NAME "T2B1" diff --git a/core/embed/firmware/bootloaders/bootloader_T2T1.bin b/core/embed/models/T2T1/bootloaders/bootloader_T2T1.bin similarity index 100% rename from core/embed/firmware/bootloaders/bootloader_T2T1.bin rename to core/embed/models/T2T1/bootloaders/bootloader_T2T1.bin diff --git a/core/embed/firmware/bootloaders/bootloader_T2T1_qa.bin b/core/embed/models/T2T1/bootloaders/bootloader_T2T1_qa.bin similarity index 100% rename from core/embed/firmware/bootloaders/bootloader_T2T1_qa.bin rename to core/embed/models/T2T1/bootloaders/bootloader_T2T1_qa.bin diff --git a/core/embed/models/T2T1/bootloaders/bootloader_hashes.h b/core/embed/models/T2T1/bootloaders/bootloader_hashes.h new file mode 100644 index 0000000000..de3db66f3d --- /dev/null +++ b/core/embed/models/T2T1/bootloaders/bootloader_hashes.h @@ -0,0 +1,17 @@ +#ifndef BOOTLOADER_HASHES_H +#define BOOTLOADER_HASHES_H + +// Auto-generated file, do not edit. + +// clang-format off +// bootloader_T2T1.bin version 2.1.4.0 +#define BOOTLOADER_T2T1_00 {0x37, 0xaf, 0xad, 0xb6, 0x55, 0x7a, 0xd3, 0x82, 0x2c, 0x7b, 0xd3, 0x41, 0x65, 0xb7, 0x4d, 0xce, 0xbe, 0x23, 0x87, 0x90, 0x93, 0x3f, 0xbc, 0x4c, 0x5a, 0x1c, 0x60, 0x8c, 0xf9, 0xf6, 0xec, 0x0c} +#define BOOTLOADER_T2T1_FF {0x5e, 0x84, 0xd3, 0xf7, 0xfd, 0x55, 0x51, 0xfd, 0x5f, 0x22, 0xc4, 0x83, 0xe2, 0x67, 0xc5, 0x1b, 0x77, 0xce, 0x49, 0xce, 0x42, 0x19, 0xe8, 0x23, 0x84, 0x4a, 0x58, 0x47, 0xaf, 0x80, 0x69, 0x86} + +// bootloader_T2T1_qa.bin version 2.1.4.0 +#define BOOTLOADER_T2T1_QA_00 {0xff, 0xda, 0xfd, 0x0f, 0xe1, 0x89, 0x56, 0xb6, 0x0b, 0x6e, 0x2d, 0x67, 0xf1, 0x63, 0x8c, 0x4c, 0x4d, 0x6f, 0x97, 0xe7, 0xe0, 0xa4, 0xce, 0x76, 0xc9, 0x49, 0x0a, 0x34, 0x3e, 0xd8, 0xcb, 0x1f} +#define BOOTLOADER_T2T1_QA_FF {0xbe, 0x31, 0x71, 0x7b, 0x8b, 0x31, 0x12, 0xbd, 0x58, 0xc4, 0x81, 0x09, 0x8d, 0xd9, 0x07, 0x51, 0x5c, 0xb6, 0x3d, 0x07, 0x82, 0x00, 0x30, 0x4a, 0xeb, 0x26, 0xf0, 0xe4, 0x00, 0xd4, 0xf2, 0x9c} + +// clang-format on + +#endif diff --git a/core/embed/models/T2T1/model_T2T1.h b/core/embed/models/T2T1/model_T2T1.h index 47c75409c9..fc29eaf94c 100644 --- a/core/embed/models/T2T1/model_T2T1.h +++ b/core/embed/models/T2T1/model_T2T1.h @@ -1,6 +1,8 @@ #ifndef MODELS_MODEL_T2T1_H_ #define MODELS_MODEL_T2T1_H_ +#include "bootloaders/bootloader_hashes.h" + #define MODEL_NAME "T" #define MODEL_FULL_NAME "Trezor Model T" #define MODEL_INTERNAL_NAME "T2T1" diff --git a/core/embed/firmware/bootloaders/bootloader_T3B1.bin b/core/embed/models/T3B1/bootloaders/bootloader_T3B1.bin similarity index 100% rename from core/embed/firmware/bootloaders/bootloader_T3B1.bin rename to core/embed/models/T3B1/bootloaders/bootloader_T3B1.bin diff --git a/core/embed/firmware/bootloaders/bootloader_T3B1_qa.bin b/core/embed/models/T3B1/bootloaders/bootloader_T3B1_qa.bin similarity index 100% rename from core/embed/firmware/bootloaders/bootloader_T3B1_qa.bin rename to core/embed/models/T3B1/bootloaders/bootloader_T3B1_qa.bin diff --git a/core/embed/models/T3B1/bootloaders/bootloader_hashes.h b/core/embed/models/T3B1/bootloaders/bootloader_hashes.h new file mode 100644 index 0000000000..e01f324ce0 --- /dev/null +++ b/core/embed/models/T3B1/bootloaders/bootloader_hashes.h @@ -0,0 +1,17 @@ +#ifndef BOOTLOADER_HASHES_H +#define BOOTLOADER_HASHES_H + +// Auto-generated file, do not edit. + +// clang-format off +// bootloader_T3B1.bin version 2.1.7.0 +#define BOOTLOADER_T3B1_00 {0x6a, 0x29, 0x58, 0x1f, 0x4f, 0x0c, 0x64, 0xd0, 0x57, 0xb3, 0x36, 0xb7, 0xca, 0xc5, 0x00, 0xc6, 0xbe, 0x87, 0x46, 0x10, 0x48, 0xb0, 0x20, 0xc5, 0xc3, 0x55, 0xaa, 0xf8, 0xec, 0x48, 0xd6, 0xa3} +#define BOOTLOADER_T3B1_FF {0x57, 0x1e, 0xa2, 0xb8, 0x09, 0xf0, 0xab, 0xb4, 0x35, 0xb9, 0x92, 0xcd, 0xde, 0x28, 0x8a, 0xe2, 0x73, 0x04, 0x92, 0x16, 0x01, 0xac, 0x70, 0x48, 0xad, 0x1d, 0x72, 0x9e, 0x31, 0x42, 0xbf, 0x37} + +// bootloader_T3B1_qa.bin version 2.1.7.0 +#define BOOTLOADER_T3B1_QA_00 {0x2e, 0x90, 0x8a, 0x99, 0x25, 0x93, 0xcd, 0x9c, 0xf1, 0x23, 0x1e, 0x4e, 0x41, 0xfc, 0xc9, 0xf1, 0x4b, 0x06, 0x69, 0x57, 0x6e, 0x64, 0x84, 0x1c, 0xb1, 0xd9, 0x89, 0x0c, 0xa5, 0xb4, 0x38, 0xeb} +#define BOOTLOADER_T3B1_QA_FF {0x63, 0xd2, 0x2d, 0x7b, 0xe8, 0x17, 0x2b, 0x97, 0x64, 0x06, 0x9b, 0x60, 0xa0, 0x3d, 0xfc, 0xd6, 0xea, 0x8a, 0x8d, 0xaf, 0x12, 0x25, 0x58, 0x93, 0x9e, 0x40, 0x16, 0xf2, 0x25, 0x30, 0x30, 0x6f} + +// clang-format on + +#endif diff --git a/core/embed/models/T3B1/model_T3B1.h b/core/embed/models/T3B1/model_T3B1.h index 3ed7683535..3e973c8ff5 100644 --- a/core/embed/models/T3B1/model_T3B1.h +++ b/core/embed/models/T3B1/model_T3B1.h @@ -1,6 +1,8 @@ #ifndef MODELS_MODEL_T3B1_H_ #define MODELS_MODEL_T3B1_H_ +#include "bootloaders/bootloader_hashes.h" + #include "sizedefs.h" #define MODEL_NAME "Safe 3" diff --git a/core/embed/firmware/bootloaders/bootloader_T3T1.bin b/core/embed/models/T3T1/bootloaders/bootloader_T3T1.bin similarity index 100% rename from core/embed/firmware/bootloaders/bootloader_T3T1.bin rename to core/embed/models/T3T1/bootloaders/bootloader_T3T1.bin diff --git a/core/embed/firmware/bootloaders/bootloader_T3T1_qa.bin b/core/embed/models/T3T1/bootloaders/bootloader_T3T1_qa.bin similarity index 100% rename from core/embed/firmware/bootloaders/bootloader_T3T1_qa.bin rename to core/embed/models/T3T1/bootloaders/bootloader_T3T1_qa.bin diff --git a/core/embed/models/T3T1/bootloaders/bootloader_hashes.h b/core/embed/models/T3T1/bootloaders/bootloader_hashes.h new file mode 100644 index 0000000000..d4dcbffc2a --- /dev/null +++ b/core/embed/models/T3T1/bootloaders/bootloader_hashes.h @@ -0,0 +1,17 @@ +#ifndef BOOTLOADER_HASHES_H +#define BOOTLOADER_HASHES_H + +// Auto-generated file, do not edit. + +// clang-format off +// bootloader_T3T1.bin version 2.1.6.0 +#define BOOTLOADER_T3T1_00 {0x4a, 0x07, 0x5c, 0x74, 0x0f, 0x9a, 0x84, 0x61, 0xaf, 0x10, 0x34, 0x9c, 0x24, 0x3d, 0x79, 0x5b, 0xc6, 0x12, 0x5e, 0xec, 0x51, 0xb3, 0x91, 0x4b, 0x65, 0xf9, 0x79, 0x17, 0x98, 0xc2, 0x4f, 0xcb} +#define BOOTLOADER_T3T1_FF {0xd8, 0xee, 0x0d, 0xd8, 0x87, 0x0b, 0xf4, 0x38, 0x73, 0x52, 0x83, 0x5e, 0xa9, 0xef, 0x3e, 0x5a, 0x3e, 0x59, 0xc2, 0x12, 0x5b, 0x24, 0xc9, 0x2d, 0xd4, 0xc5, 0xf5, 0x57, 0x15, 0x8a, 0x34, 0x78} + +// bootloader_T3T1_qa.bin version 2.1.6.0 +#define BOOTLOADER_T3T1_QA_00 {0x53, 0x5f, 0xf9, 0xa8, 0x21, 0x7d, 0xb5, 0x39, 0xe4, 0xfa, 0xf8, 0x3d, 0x0d, 0xe6, 0xf3, 0x65, 0x21, 0x30, 0x46, 0x9e, 0x40, 0x85, 0xd4, 0xd8, 0x49, 0x00, 0xb0, 0xb5, 0x58, 0x39, 0xe3, 0xd4} +#define BOOTLOADER_T3T1_QA_FF {0x1e, 0x03, 0x50, 0x25, 0xa1, 0xc7, 0x20, 0xe2, 0x04, 0x62, 0x24, 0xa1, 0x31, 0xc2, 0xf5, 0x7b, 0x35, 0xe9, 0x22, 0x42, 0x36, 0x2d, 0xab, 0xcc, 0xb6, 0x3b, 0xfe, 0x88, 0x53, 0x2f, 0x49, 0xa7} + +// clang-format on + +#endif diff --git a/core/embed/models/T3T1/model_T3T1.h b/core/embed/models/T3T1/model_T3T1.h index 28cf69b542..cbada112e4 100644 --- a/core/embed/models/T3T1/model_T3T1.h +++ b/core/embed/models/T3T1/model_T3T1.h @@ -1,6 +1,8 @@ #ifndef MODELS_MODEL_T3T1_H_ #define MODELS_MODEL_T3T1_H_ +#include "bootloaders/bootloader_hashes.h" + #include "sizedefs.h" #define MODEL_NAME "Safe 5" From 3bfc0b61e5953c665e4069ea631f74fa313f8e77 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 26 Aug 2024 21:02:45 +0200 Subject: [PATCH 568/626] feat(core/tests): add core bootloader hashes to make gen and gen_check targets [no changelog] --- Makefile | 10 ++- .../firmware => tools}/bootloader_hashes.py | 76 +++++++++++-------- 2 files changed, 53 insertions(+), 33 deletions(-) rename core/{embed/firmware => tools}/bootloader_hashes.py (53%) diff --git a/Makefile b/Makefile index ff9f996929..1daba0dad5 100644 --- a/Makefile +++ b/Makefile @@ -148,6 +148,12 @@ vendorheader: ## generate vendor header vendorheader_check: ## check that vendor header is up to date ./core/tools/generate_vendorheader.sh --quiet --check -gen: templates mocks icons protobuf ci_docs vendorheader solana_templates ## regenerate auto-generated files from sources +bootloader_hashes: ## generate bootloader hashes + ./core/tools/bootloader_hashes.py -gen_check: templates_check mocks_check icons_check protobuf_check ci_docs_check vendorheader_check solana_templates_check ## check validity of auto-generated files +bootloader_hashes_check: ## check generated bootloader hashes + ./core/tools/bootloader_hashes.py --check + +gen: templates mocks icons protobuf ci_docs vendorheader solana_templates bootloader_hashes ## regenerate auto-generated files from sources + +gen_check: templates_check mocks_check icons_check protobuf_check ci_docs_check vendorheader_check solana_templates_check bootloader_hashes_check ## check validity of auto-generated files diff --git a/core/embed/firmware/bootloader_hashes.py b/core/tools/bootloader_hashes.py similarity index 53% rename from core/embed/firmware/bootloader_hashes.py rename to core/tools/bootloader_hashes.py index 3e72aeb733..6683d87908 100755 --- a/core/embed/firmware/bootloader_hashes.py +++ b/core/tools/bootloader_hashes.py @@ -1,18 +1,29 @@ #!/usr/bin/env python3 + +import click + from pathlib import Path from hashlib import blake2s -from trezorlib.firmware.core import FirmwareImage +from trezorlib.firmware.core import FirmwareImage, Model ALIGNED_SIZE = 128 * 1024 HERE = Path(__file__).parent -BOOTLOADERS = HERE / ".." / "models" +BOOTLOADERS = HERE / ".." / "embed" / "models" + +TEMPLATE = """\ +#ifndef BOOTLOADER_HASHES_H +#define BOOTLOADER_HASHES_H -BL_CHECK = HERE / "bl_check.c" +// Auto-generated file, do not edit. -BL_CHECK_AUTO_BEGIN = "// --- BEGIN GENERATED BOOTLOADER SECTION ---\n" -BL_CHECK_AUTO_END = "// --- END GENERATED BOOTLOADER SECTION ---\n" +// clang-format off +{patterns} +// clang-format on + +#endif +""" PATTERN = """\ // {name} version {version} @@ -21,7 +32,7 @@ """ -def aligned_digest(data: bytes, padding: bytes) -> bytes: +def aligned_digest(fn: Path, data: bytes, padding: bytes) -> bytes: """Calculate digest of data, aligned to ALIGNED_SIZE with the specified padding. @@ -46,7 +57,7 @@ def to_uint_array(data: bytes) -> str: return ", ".join([f"0x{i:02x}" for i in data]) -def bootloader_str(file: Path) -> str: +def bootloader_str(file: Path, model: str) -> str: """From a given file, generate the relevant C definition strings from PATTERN. Calculates the two padded hashes, one with 0x00 and the other 0xFF, and returns @@ -55,14 +66,19 @@ def bootloader_str(file: Path) -> str: data = file.read_bytes() suffix = file.stem[len("bootloader_") :].upper() - bytes_00 = to_uint_array(aligned_digest(data, b"\x00")) - bytes_ff = to_uint_array(aligned_digest(data, b"\xff")) - - try: - bl = FirmwareImage.parse(data) - version_str = ".".join(str(x) for x in bl.header.version) - except Exception: - version_str = "<unknown>" + bytes_00 = to_uint_array(aligned_digest(file, data, b"\x00")) + bytes_ff = to_uint_array(aligned_digest(file, data, b"\xff")) + + bl = FirmwareImage.parse(data) + version_str = ".".join(str(x) for x in bl.header.version) + if not isinstance(bl.header.hw_model, Model): + raise ValueError( + f"Model mismatch: {file.name} {model} (found {bytes(bl.header.hw_model).decode()})" + ) + elif bl.header.hw_model.value != model.encode(): + raise ValueError( + f"Model mismatch: {file.name} {model} (found {bl.header.hw_model.value})" + ) return PATTERN.format( name=file.name, @@ -73,7 +89,9 @@ def bootloader_str(file: Path) -> str: ) -def main(): +@click.command() +@click.option("-c", "--check", is_flag=True, help="Do not write, only check.") +def bootloader_hashes(check): models = list(BOOTLOADERS.iterdir()) @@ -87,26 +105,22 @@ def main(): header_file = path / "bootloader_hashes.h" - content = [] - content.append("#ifndef BOOTLOADER_HASHES_H\n") - content.append("#define BOOTLOADER_HASHES_H\n") - content.append("\n") - content.append("// Auto-generated file, do not edit.\n") - content.append("\n") - content.append("// clang-format off\n") + patterns = [] bootloaders = sorted(path.glob("bootloader*.bin")) for bootloader in bootloaders: - if bootloader.is_file(): - print(f"Processing {bootloader}") - content.append(bootloader_str(bootloader)) + print(f"Processing {bootloader}") + patterns.append(bootloader_str(bootloader, model.name)) - content.append("// clang-format on\n") - content.append("\n") - content.append("#endif\n") + content = TEMPLATE.format(patterns="\n".join(patterns)) - header_file.write_text("".join(content)) + if not check: + header_file.write_text(content) + else: + actual = header_file.read_text() + if content != actual: + raise click.ClickException(f"{header_file} differs from expected") if __name__ == "__main__": - main() + bootloader_hashes() From 11b923959ad92f929b0da078d2916ce1af4501dd Mon Sep 17 00:00:00 2001 From: vdovhanych <dovhanych@me.com> Date: Thu, 29 Aug 2024 13:11:45 +0200 Subject: [PATCH 569/626] ci: migrate trezor-common sync to github actions --- .github/workflows/bot-common-sync.yml | 24 ++++++++++++++++++++++++ ci/common_sync/common_repo_sync.sh | 4 ++-- ci/deploy.yml | 17 ----------------- 3 files changed, 26 insertions(+), 19 deletions(-) create mode 100644 .github/workflows/bot-common-sync.yml diff --git a/.github/workflows/bot-common-sync.yml b/.github/workflows/bot-common-sync.yml new file mode 100644 index 0000000000..4bed1dcd75 --- /dev/null +++ b/.github/workflows/bot-common-sync.yml @@ -0,0 +1,24 @@ +name: "[Bot] sync to trezor-common repository" + +on: + schedule: + - cron: "0 0 * * *" + +permissions: + contents: read + +jobs: + sync-common: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Sync trezor-common repository + env: + GITHUB_BOT_USERNAME: ${{ secrets.TREZOR_BOT_USERNAME }} + GITHUB_BOT_TOKEN: ${{ secrets.GH_BOT_TOKEN }} + run: | + echo "Synchronizing common with the trezor-common repository" + ./ci/common_sync/common_repo_sync.sh diff --git a/ci/common_sync/common_repo_sync.sh b/ci/common_sync/common_repo_sync.sh index 904d526c64..6caae4f2e0 100755 --- a/ci/common_sync/common_repo_sync.sh +++ b/ci/common_sync/common_repo_sync.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash -GH_USER="$GH_TREZOR_BOT" -GH_TOKEN="$GH_TOKEN_COMMON_SYNC" +GH_USER="$GITHUB_BOT_USERNAME" +GH_TOKEN="$GITHUB_BOT_TOKEN" # checkout to temporary branch git checkout -B tmp diff --git a/ci/deploy.yml b/ci/deploy.yml index 5a1cd06839..2cd163476b 100644 --- a/ci/deploy.yml +++ b/ci/deploy.yml @@ -324,20 +324,3 @@ sync emulators to aws: - branches # run for tags only tags: - deploy - -# common sync to trezor-common - -common sync: - stage: deploy - variables: - GIT_SUBMODULE_STRATEGY: "none" - GIT_STRATEGY: clone # clone entire repo instead of reusing workspace - GIT_DEPTH: 0 # avoid shallow clone - only: - - schedules - interruptible: false - needs: [] - before_script: [] # no poetry - script: - - echo "Synchronizing common with the trezor-common repository" - - ./ci/common_sync/common_repo_sync.sh From 9e18e72a2c7896cbcce1df4c2d908eab0f01564f Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Fri, 9 Aug 2024 22:34:20 +0200 Subject: [PATCH 570/626] feat(core): ask for 20/33 words to unlock backup Unlocking repeated backup is only possible with SLIP-39 extendable backup which contains shares of 20 or 33 words. It is UI bug to have the user choose from all options (12, 18, 20, 24, 33). This commit reduces the choices when unlocking repeated backup to (20, 33) for all models. --- core/.changelog.d/4099.added | 1 + core/embed/rust/src/ui/layout/util.rs | 37 +- .../component/binary_selection.rs | 10 +- .../component/keyboard/word_count.rs | 111 +++- .../model_mercury/flow/continue_recovery.rs | 39 +- .../embed/rust/src/ui/model_mercury/layout.rs | 17 +- core/embed/rust/src/ui/model_tr/layout.rs | 34 +- .../model_tt/component/keyboard/word_count.rs | 105 +++- core/embed/rust/src/ui/model_tt/layout.rs | 28 +- core/mocks/generated/trezorui2.pyi | 15 +- tests/click_tests/recovery.py | 79 ++- tests/ui_tests/fixtures.json | 546 +++++++++--------- 12 files changed, 619 insertions(+), 403 deletions(-) create mode 100644 core/.changelog.d/4099.added diff --git a/core/.changelog.d/4099.added b/core/.changelog.d/4099.added new file mode 100644 index 0000000000..eacb4c6c02 --- /dev/null +++ b/core/.changelog.d/4099.added @@ -0,0 +1 @@ +Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. diff --git a/core/embed/rust/src/ui/layout/util.rs b/core/embed/rust/src/ui/layout/util.rs index 60604d7301..163dcbd730 100644 --- a/core/embed/rust/src/ui/layout/util.rs +++ b/core/embed/rust/src/ui/layout/util.rs @@ -1,5 +1,5 @@ use crate::{ - error::Error, + error::{value_error, Error}, io::BinaryData, micropython::{ buffer::{hexlify_bytes, StrBuffer}, @@ -162,6 +162,41 @@ impl ParagraphSource<'static> for PropsList { } } +/// RecoveryType as defined in `common/protob/messages-management.proto`, +/// used as arguments coming from micropython into rust world for layouts or +/// flows. +pub enum RecoveryType { + Normal = 0, + DryRun = 1, + UnlockRepeatedBackup = 2, +} + +// Converting `Obj` into `RecoveryType` enum +#[cfg(feature = "micropython")] +impl TryFrom<Obj> for RecoveryType { + type Error = Error; + + fn try_from(obj: Obj) -> Result<Self, Self::Error> { + let val = u32::try_from(obj)?; + let this = Self::try_from(val)?; + Ok(this) + } +} + +// Converting `u32` to `RecoveryType` +impl TryFrom<u32> for RecoveryType { + type Error = Error; + + fn try_from(value: u32) -> Result<Self, Self::Error> { + match value { + 0 => Ok(RecoveryType::Normal), + 1 => Ok(RecoveryType::DryRun), + 2 => Ok(RecoveryType::UnlockRepeatedBackup), + _ => Err(value_error!(c"Invalid RecoveryType")), + } + } +} + pub extern "C" fn upy_disable_animation(disable: Obj) -> Obj { let block = || { set_animation_disabled(disable.try_into()?); diff --git a/core/embed/rust/src/ui/model_mercury/component/binary_selection.rs b/core/embed/rust/src/ui/model_mercury/component/binary_selection.rs index 3761970795..b1a8495e68 100644 --- a/core/embed/rust/src/ui/model_mercury/component/binary_selection.rs +++ b/core/embed/rust/src/ui/model_mercury/component/binary_selection.rs @@ -1,6 +1,6 @@ use crate::ui::{ component::{Component, Event, EventCtx}, - geometry::{Alignment2D, Offset, Rect}, + geometry::{Alignment, Alignment2D, Offset, Rect}, shape::Renderer, }; @@ -29,8 +29,12 @@ impl BinarySelection { ) -> Self { Self { buttons_area: Rect::zero(), - button_left: Button::new(left_content).styled(left_style), - button_right: Button::new(right_content).styled(right_style), + button_left: Button::new(left_content) + .styled(left_style) + .with_text_align(Alignment::Center), + button_right: Button::new(right_content) + .styled(right_style) + .with_text_align(Alignment::Center), } } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs index 58210a21db..33b4800ca2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/word_count.rs @@ -2,37 +2,102 @@ use crate::ui::{ component::{Component, Event, EventCtx}, geometry::{Alignment, Grid, GridCellSpan, Rect}, model_mercury::{ - component::button::{Button, ButtonMsg}, - theme, + component::{ + button::{Button, ButtonContent, ButtonMsg}, + BinarySelection, BinarySelectionMsg, + }, + cshape, theme, }, shape::Renderer, }; -const NUMBERS: [u32; 5] = [12, 18, 20, 24, 33]; -const LABELS: [&str; 5] = ["12", "18", "20", "24", "33"]; -const CELLS: [(usize, usize); 5] = [(0, 0), (0, 2), (1, 0), (1, 2), (2, 1)]; - -pub struct SelectWordCount { - button: [Button; NUMBERS.len()], -} - pub enum SelectWordCountMsg { Selected(u32), } +// We allow large_enum_variant here because the code is simpler and the larger +// variant (ValueKeypad) predates the smaller one. +#[allow(clippy::large_enum_variant)] +pub enum SelectWordCount { + All(ValueKeypad), + Multishare(BinarySelection), +} + impl SelectWordCount { - pub fn new() -> Self { - SelectWordCount { - button: LABELS.map(|t| { + pub fn new_all() -> Self { + Self::All(ValueKeypad::new()) + } + + pub fn new_multishare() -> Self { + Self::Multishare(BinarySelection::new( + ButtonContent::Text("20".into()), + ButtonContent::Text("33".into()), + theme::button_keyboard(), + theme::button_keyboard(), + )) + } +} + +impl Component for SelectWordCount { + type Msg = SelectWordCountMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + match self { + SelectWordCount::All(full_selector) => full_selector.place(bounds), + SelectWordCount::Multishare(bin_selector) => bin_selector.place(bounds), + } + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + match self { + SelectWordCount::All(full_selector) => full_selector.event(ctx, event), + SelectWordCount::Multishare(bin_selector) => { + if let Some(m) = bin_selector.event(ctx, event) { + return match m { + BinarySelectionMsg::Left => Some(SelectWordCountMsg::Selected(20)), + BinarySelectionMsg::Right => Some(SelectWordCountMsg::Selected(33)), + }; + } + None + } + } + } + + fn paint(&mut self) { + unimplemented!() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + match self { + SelectWordCount::All(full_selector) => full_selector.render(target), + SelectWordCount::Multishare(bin_selector) => bin_selector.render(target), + } + } +} + +pub struct ValueKeypad { + button: [Button; Self::NUMBERS.len()], + keypad_area: Rect, +} + +impl ValueKeypad { + const NUMBERS: [u32; 5] = [12, 18, 20, 24, 33]; + const LABELS: [&'static str; 5] = ["12", "18", "20", "24", "33"]; + const CELLS: [(usize, usize); 5] = [(0, 0), (0, 2), (1, 0), (1, 2), (2, 1)]; + + fn new() -> Self { + ValueKeypad { + button: Self::LABELS.map(|t| { Button::with_text(t.into()) .styled(theme::button_keyboard()) .with_text_align(Alignment::Center) }), + keypad_area: Rect::zero(), } } } -impl Component for SelectWordCount { +impl Component for ValueKeypad { type Msg = SelectWordCountMsg; fn place(&mut self, bounds: Rect) -> Rect { @@ -43,19 +108,20 @@ impl Component for SelectWordCount { n_rows as i16 * theme::BUTTON_HEIGHT + (n_rows as i16 - 1) * theme::BUTTON_SPACING, ); let grid = Grid::new(bounds, n_rows, n_cols).with_spacing(theme::BUTTON_SPACING); - for (btn, (x, y)) in self.button.iter_mut().zip(CELLS) { + for (btn, (x, y)) in self.button.iter_mut().zip(Self::CELLS) { btn.place(grid.cells(GridCellSpan { from: (x, y), to: (x, y + 1), })); } + self.keypad_area = grid.area; bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { for (i, btn) in self.button.iter_mut().enumerate() { if let Some(ButtonMsg::Clicked) = btn.event(ctx, event) { - return Some(SelectWordCountMsg::Selected(NUMBERS[i])); + return Some(SelectWordCountMsg::Selected(Self::NUMBERS[i])); } } None @@ -71,6 +137,8 @@ impl Component for SelectWordCount { for btn in self.button.iter() { btn.render(target) } + + cshape::KeyboardOverlay::new(self.keypad_area).render(target); } } @@ -78,5 +146,16 @@ impl Component for SelectWordCount { impl crate::trace::Trace for SelectWordCount { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("SelectWordCount"); + match self { + SelectWordCount::All(full_selector) => t.child("all", full_selector), + SelectWordCount::Multishare(bin_selector) => t.child("multi-share", bin_selector), + } + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for ValueKeypad { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("ValueKeypad"); } } diff --git a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs index 218dc50387..fac9d9e6cb 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs @@ -15,7 +15,7 @@ use crate::{ base::{DecisionBuilder as _, StateChange}, FlowMsg, FlowState, SwipeFlow, }, - layout::obj::LayoutObj, + layout::{obj::LayoutObj, util::RecoveryType}, }, }; @@ -27,10 +27,6 @@ use super::super::{ theme, }; -const RECOVERY_TYPE_NORMAL: u32 = 0; -const RECOVERY_TYPE_DRY_RUN: u32 = 1; -const RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP: u32 = 2; - #[derive(Copy, Clone, PartialEq, Eq)] pub enum ContinueRecoveryBeforeShares { Main, @@ -111,27 +107,24 @@ pub extern "C" fn new_continue_recovery(n_args: usize, args: *const Obj, kwargs: impl ContinueRecoveryBeforeShares { fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { let first_screen: bool = kwargs.get(Qstr::MP_QSTR_first_screen)?.try_into()?; - let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + let recovery_type: RecoveryType = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; let text: TString = kwargs.get(Qstr::MP_QSTR_text)?.try_into()?; // #shares entered let subtext: Option<TString> = kwargs.get(Qstr::MP_QSTR_subtext)?.try_into_option()?; // #shares remaining - let (title, cancel_btn, cancel_title, cancel_intro) = - if recovery_type == RECOVERY_TYPE_NORMAL { - ( - TR::recovery__title, - TR::recovery__title_cancel_recovery, - TR::recovery__title_cancel_recovery, - TR::recovery__wanna_cancel_recovery, - ) - } else { - // dry-run - ( - TR::recovery__title_dry_run, - TR::recovery__cancel_dry_run, - TR::recovery__title_cancel_dry_run, - TR::recovery__wanna_cancel_dry_run, - ) - }; + let (title, cancel_btn, cancel_title, cancel_intro) = match recovery_type { + RecoveryType::Normal => ( + TR::recovery__title, + TR::recovery__title_cancel_recovery, + TR::recovery__title_cancel_recovery, + TR::recovery__wanna_cancel_recovery, + ), + _ => ( + TR::recovery__title_dry_run, + TR::recovery__cancel_dry_run, + TR::recovery__title_cancel_dry_run, + TR::recovery__wanna_cancel_dry_run, + ), + }; let mut pars = ParagraphVecShort::new(); let footer_instruction; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 731e6598b8..3292bec53a 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -48,7 +48,7 @@ use crate::{ layout::{ obj::{ComponentMsgObj, LayoutObj, ATTACH_TYPE_OBJ}, result::{CANCELLED, CONFIRMED, INFO}, - util::{upy_disable_animation, ConfirmBlob, PropsList}, + util::{upy_disable_animation, ConfirmBlob, PropsList, RecoveryType}, }, model_mercury::{ component::{check_homescreen_format, SwipeContent}, @@ -1038,10 +1038,16 @@ extern "C" fn new_show_checklist(n_args: usize, args: *const Obj, kwargs: *mut M } extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], _kwargs: &Map| { + let block = move |_args: &[Obj], kwargs: &Map| { + let recovery_type: RecoveryType = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + let content = if matches!(recovery_type, RecoveryType::UnlockRepeatedBackup) { + SelectWordCount::new_multishare() + } else { + SelectWordCount::new_all() + }; let obj = LayoutObj::new(Frame::left_aligned( TR::recovery__num_of_words.into(), - SelectWordCount::new(), + content, ))?; Ok(obj.into()) }; @@ -1658,8 +1664,9 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def select_word_count( /// *, /// recovery_type: RecoveryType, - /// ) -> LayoutObj[int | str]: # TT returns int - /// """Select mnemonic word count from (12, 18, 20, 24, 33).""" + /// ) -> LayoutObj[int | str]: # merucry returns int + /// """Select a mnemonic word count from the options: 12, 18, 20, 24, or 33. + /// For unlocking a repeated backup, select from 20 or 33.""" Qstr::MP_QSTR_select_word_count => obj_fn_kw!(0, new_select_word_count).as_obj(), /// def show_group_share_success( diff --git a/core/embed/rust/src/ui/model_tr/layout.rs b/core/embed/rust/src/ui/model_tr/layout.rs index 13319d4923..f957ca8510 100644 --- a/core/embed/rust/src/ui/model_tr/layout.rs +++ b/core/embed/rust/src/ui/model_tr/layout.rs @@ -49,7 +49,7 @@ use crate::{ layout::{ obj::{ComponentMsgObj, LayoutObj, ATTACH_TYPE_OBJ}, result::{CANCELLED, CONFIRMED, INFO}, - util::{upy_disable_animation, ConfirmBlob}, + util::{upy_disable_animation, ConfirmBlob, RecoveryType}, }, model_tr::component::check_homescreen_format, }, @@ -234,9 +234,6 @@ impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { } } -const RECOVERY_TYPE_DRY_RUN: u32 = 1; -const RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP: u32 = 2; - /// Function to create and call a `ButtonPage` dialog based on paginable content /// (e.g. `Paragraphs` or `FormattedText`). /// Has optional title (supply empty `TString` for that) and hold-to-confirm @@ -1404,7 +1401,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let block = move |_args: &[Obj], kwargs: &Map| { let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let button: TString<'static> = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + let recovery_type: RecoveryType = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; let show_info: bool = kwargs.get(Qstr::MP_QSTR_show_info)?.try_into()?; let mut paragraphs = ParagraphVecShort::new(); @@ -1422,8 +1419,8 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut } let title = match recovery_type { - RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run, - RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP => TR::recovery__title_dry_run, + RecoveryType::DryRun => TR::recovery__title_dry_run, + RecoveryType::UnlockRepeatedBackup => TR::recovery__title_dry_run, _ => TR::recovery__title, }; @@ -1439,13 +1436,19 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut } extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = |_args: &[Obj], _kwargs: &Map| { + let block = |_args: &[Obj], kwargs: &Map| { let title: TString = TR::word_count__title.into(); + let recovery_type: RecoveryType = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + + let choices: Vec<TString<'static>, 5> = { + let nums: &[&str] = if matches!(recovery_type, RecoveryType::UnlockRepeatedBackup) { + &["20", "33"] + } else { + &["12", "18", "20", "24", "33"] + }; - let choices: Vec<TString<'static>, 5> = ["12", "18", "20", "24", "33"] - .map(|num| num.into()) - .into_iter() - .collect(); + nums.iter().map(|&num| num.into()).collect() + }; let obj = LayoutObj::new( Frame::new(title, SimpleChoice::new(choices, false)).with_title_centered(), @@ -1985,9 +1988,10 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def select_word_count( /// *, - /// recovery_type: RecoveryType, # unused on TR - /// ) -> LayoutObj[int | str]: - /// """Select mnemonic word count from (12, 18, 20, 24, 33).""" + /// recovery_type: RecoveryType, + /// ) -> LayoutObj[int | str]: # TR returns str + /// """Select a mnemonic word count from the options: 12, 18, 20, 24, or 33. + /// For unlocking a repeated backup, select from 20 or 33.""" Qstr::MP_QSTR_select_word_count => obj_fn_kw!(0, new_select_word_count).as_obj(), /// def show_group_share_success( diff --git a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs index 5309915ebf..f6c9d8b680 100644 --- a/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs +++ b/core/embed/rust/src/ui/model_tt/component/keyboard/word_count.rs @@ -7,23 +7,38 @@ use crate::ui::{ }, shape::Renderer, }; - -const NUMBERS: [u32; 5] = [12, 18, 20, 24, 33]; -const LABELS: [&str; 5] = ["12", "18", "20", "24", "33"]; -const CELLS: [(usize, usize); 5] = [(0, 0), (0, 2), (0, 4), (1, 0), (1, 2)]; - -pub struct SelectWordCount { - button: [Button; NUMBERS.len()], -} +use heapless::Vec; pub enum SelectWordCountMsg { Selected(u32), } +pub struct SelectWordCount { + keypad: ValueKeypad, +} + impl SelectWordCount { - pub fn new() -> Self { - SelectWordCount { - button: LABELS.map(|t| Button::with_text(t.into()).styled(theme::button_pin())), + const NUMBERS_ALL: [u32; 5] = [12, 18, 20, 24, 33]; + const LABELS_ALL: [&'static str; 5] = ["12", "18", "20", "24", "33"]; + const CELLS_ALL: [(usize, usize); 5] = [(0, 0), (0, 2), (0, 4), (1, 0), (1, 2)]; + + const NUMBERS_MULTISHARE: [u32; 2] = [20, 33]; + const LABELS_MULTISHARE: [&'static str; 2] = ["20", "33"]; + const CELLS_MULTISHARE: [(usize, usize); 2] = [(0, 0), (0, 2)]; + + pub fn new_all() -> Self { + Self { + keypad: ValueKeypad::new(&Self::NUMBERS_ALL, &Self::LABELS_ALL, &Self::CELLS_ALL), + } + } + + pub fn new_multishare() -> Self { + Self { + keypad: ValueKeypad::new( + &Self::NUMBERS_MULTISHARE, + &Self::LABELS_MULTISHARE, + &Self::CELLS_MULTISHARE, + ), } } } @@ -31,36 +46,78 @@ impl SelectWordCount { impl Component for SelectWordCount { type Msg = SelectWordCountMsg; + fn place(&mut self, bounds: Rect) -> Rect { + self.keypad.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + self.keypad.event(ctx, event) + } + + fn paint(&mut self) { + self.keypad.paint() + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.keypad.render(target) + } +} + +type ValueKeyPacked = (Button, u32, (usize, usize)); // (Button, number, cell) + +pub struct ValueKeypad { + buttons: Vec<ValueKeyPacked, 5>, +} + +impl ValueKeypad { + fn new(numbers: &[u32], labels: &[&'static str], cells: &[(usize, usize)]) -> Self { + let mut buttons = Vec::new(); + + for ((&number, &label), &cell) in numbers.iter().zip(labels).zip(cells).take(5) { + unwrap!(buttons.push(( + Button::with_text(label.into()).styled(theme::button_pin()), + number, + cell + ))); + } + + Self { buttons } + } +} + +impl Component for ValueKeypad { + type Msg = SelectWordCountMsg; + fn place(&mut self, bounds: Rect) -> Rect { let (_, bounds) = bounds.split_bottom(2 * theme::BUTTON_HEIGHT + theme::BUTTON_SPACING); let grid = Grid::new(bounds, 2, 6).with_spacing(theme::BUTTON_SPACING); - for (btn, (x, y)) in self.button.iter_mut().zip(CELLS) { + for (btn, _, (x, y)) in self.buttons.iter_mut() { btn.place(grid.cells(GridCellSpan { - from: (x, y), - to: (x, y + 1), + from: (*x, *y), + to: (*x, *y + 1), })); } bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - for (i, btn) in self.button.iter_mut().enumerate() { + for (i, (btn, _, _)) in self.buttons.iter_mut().enumerate() { if let Some(ButtonMsg::Clicked) = btn.event(ctx, event) { - return Some(SelectWordCountMsg::Selected(NUMBERS[i])); + return Some(SelectWordCountMsg::Selected(self.buttons[i].1)); } } None } fn paint(&mut self) { - for btn in self.button.iter_mut() { - btn.paint() + for btn in self.buttons.iter_mut() { + btn.0.paint() } } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - for btn in self.button.iter() { - btn.render(target) + for btn in self.buttons.iter() { + btn.0.render(target) } } } @@ -69,5 +126,13 @@ impl Component for SelectWordCount { impl crate::trace::Trace for SelectWordCount { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("SelectWordCount"); + t.child("keypad", &self.keypad); + } +} + +#[cfg(feature = "ui_debug")] +impl crate::trace::Trace for ValueKeypad { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + t.component("ValueKeypad"); } } diff --git a/core/embed/rust/src/ui/model_tt/layout.rs b/core/embed/rust/src/ui/model_tt/layout.rs index 2d14ad01a5..c423e18bba 100644 --- a/core/embed/rust/src/ui/model_tt/layout.rs +++ b/core/embed/rust/src/ui/model_tt/layout.rs @@ -52,7 +52,7 @@ use crate::{ layout::{ obj::{ComponentMsgObj, LayoutObj, ATTACH_TYPE_OBJ}, result::{CANCELLED, CONFIRMED, INFO}, - util::{upy_disable_animation, ConfirmBlob, PropsList}, + util::{upy_disable_animation, ConfirmBlob, PropsList, RecoveryType}, }, model_tt::component::check_homescreen_format, }, @@ -317,9 +317,6 @@ impl ComponentMsgObj for super::component::bl_confirm::Confirm<'_> { } } -const RECOVERY_TYPE_DRY_RUN: u32 = 1; -const RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP: u32 = 2; - extern "C" fn new_confirm_action(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1375,7 +1372,7 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; let button: TString = kwargs.get(Qstr::MP_QSTR_button)?.try_into()?; - let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + let recovery_type: RecoveryType = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; let info_button: bool = kwargs.get_or(Qstr::MP_QSTR_info_button, false)?; let paragraphs = Paragraphs::new([ @@ -1385,8 +1382,8 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut .with_spacing(theme::RECOVERY_SPACING); let notification = match recovery_type { - RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run.into(), - RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP => TR::recovery__title_dry_run.into(), + RecoveryType::DryRun => TR::recovery__title_dry_run.into(), + RecoveryType::UnlockRepeatedBackup => TR::recovery__title_dry_run.into(), _ => TR::recovery__title.into(), }; @@ -1416,10 +1413,10 @@ extern "C" fn new_confirm_recovery(n_args: usize, args: *const Obj, kwargs: *mut extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { - let recovery_type: u32 = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + let recovery_type: RecoveryType = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; let title: TString = match recovery_type { - RECOVERY_TYPE_DRY_RUN => TR::recovery__title_dry_run.into(), - RECOVERY_TYPE_UNLOCK_REPEATED_BACKUP => TR::recovery__title_dry_run.into(), + RecoveryType::DryRun => TR::recovery__title_dry_run.into(), + RecoveryType::UnlockRepeatedBackup => TR::recovery__title_dry_run.into(), _ => TR::recovery__title.into(), }; @@ -1428,10 +1425,16 @@ extern "C" fn new_select_word_count(n_args: usize, args: *const Obj, kwargs: *mu TR::recovery__num_of_words, )); + let content = if matches!(recovery_type, RecoveryType::UnlockRepeatedBackup) { + SelectWordCount::new_multishare() + } else { + SelectWordCount::new_all() + }; + let obj = LayoutObj::new(Frame::left_aligned( theme::label_title(), title, - Dialog::new(paragraphs, SelectWordCount::new()), + Dialog::new(paragraphs, content), ))?; Ok(obj.into()) }; @@ -2068,7 +2071,8 @@ pub static mp_module_trezorui2: Module = obj_module! { /// *, /// recovery_type: RecoveryType, /// ) -> LayoutObj[int | str]: # TT returns int - /// """Select mnemonic word count from (12, 18, 20, 24, 33).""" + /// """Select a mnemonic word count from the options: 12, 18, 20, 24, or 33. + /// For unlocking a repeated backup, select from 20 or 33.""" Qstr::MP_QSTR_select_word_count => obj_fn_kw!(0, new_select_word_count).as_obj(), /// def show_group_share_success( diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index a6bf99e9b3..8f5b25ba45 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -460,8 +460,9 @@ def flow_continue_recovery( def select_word_count( *, recovery_type: RecoveryType, -) -> LayoutObj[int | str]: # TT returns int - """Select mnemonic word count from (12, 18, 20, 24, 33).""" +) -> LayoutObj[int | str]: # merucry returns int + """Select a mnemonic word count from the options: 12, 18, 20, 24, or 33. + For unlocking a repeated backup, select from 20 or 33.""" # rust/src/ui/model_mercury/layout.rs @@ -1016,9 +1017,10 @@ def confirm_recovery( # rust/src/ui/model_tr/layout.rs def select_word_count( *, - recovery_type: RecoveryType, # unused on TR -) -> LayoutObj[int | str]: - """Select mnemonic word count from (12, 18, 20, 24, 33).""" + recovery_type: RecoveryType, +) -> LayoutObj[int | str]: # TR returns str + """Select a mnemonic word count from the options: 12, 18, 20, 24, or 33. + For unlocking a repeated backup, select from 20 or 33.""" # rust/src/ui/model_tr/layout.rs @@ -1567,7 +1569,8 @@ def select_word_count( *, recovery_type: RecoveryType, ) -> LayoutObj[int | str]: # TT returns int - """Select mnemonic word count from (12, 18, 20, 24, 33).""" + """Select a mnemonic word count from the options: 12, 18, 20, 24, or 33. + For unlocking a repeated backup, select from 20 or 33.""" # rust/src/ui/model_tt/layout.rs diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 2a630e2cea..1177effeb1 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -65,42 +65,63 @@ def select_number_of_words( wait: bool = True, unlock_repeated_backup=False, ) -> None: - if wait: - debug.wait_layout() - if debug.model in (models.T2T1,): - TR.assert_equals(debug.read_layout().text_content(), "recovery__num_of_words") - # click the number - word_option_offset = 6 - word_options = (12, 18, 20, 24, 33) - index = word_option_offset + word_options.index( - num_of_words - ) # raises if num of words is invalid - coords = buttons.grid34(index % 3, index // 3) - layout = debug.click(coords, wait=True) - elif debug.model in (models.T2B1,): - layout = debug.press_right(wait=True) - TR.assert_equals(layout.title(), "word_count__title") + def select_tt() -> "LayoutContent": + # click the button from ValuePad + if unlock_repeated_backup: + coords_map = {20: buttons.grid34(0, 2), 33: buttons.grid34(1, 2)} + else: + coords_map = { + 12: buttons.grid34(0, 2), + 18: buttons.grid34(1, 2), + 20: buttons.grid34(2, 2), + 24: buttons.grid34(0, 3), + 33: buttons.grid34(1, 3), + } + coords = coords_map.get(num_of_words) + if coords is None: + raise ValueError("Invalid num_of_words") + return debug.click(coords, wait=True) + def select_tr() -> "LayoutContent": # navigate to the number and confirm it - word_options = (12, 18, 20, 24, 33) + word_options = (20, 33) if unlock_repeated_backup else (12, 18, 20, 24, 33) index = word_options.index(num_of_words) for _ in range(index): debug.press_right(wait=True) - layout = debug.press_middle(wait=True) - elif debug.model in (models.T3T1,): - if num_of_words == 12: - coords = buttons.grid34(0, 1) - elif num_of_words == 18: - coords = buttons.grid34(2, 1) - elif num_of_words == 20: - coords = buttons.grid34(0, 2) - elif num_of_words == 24: - coords = buttons.grid34(2, 2) - elif num_of_words == 33: - coords = buttons.grid34(1, 3) + return debug.press_middle(wait=True) + + def select_mercury() -> "LayoutContent": + # click the button from ValuePad + if unlock_repeated_backup: + coords_map = {20: buttons.MERCURY_NO, 33: buttons.MERCURY_YES} else: + coords_map = { + 12: buttons.grid34(0, 1), + 18: buttons.grid34(2, 1), + 20: buttons.grid34(0, 2), + 24: buttons.grid34(2, 2), + 33: buttons.grid34(1, 3), + } + coords = coords_map.get(num_of_words) + if coords is None: raise ValueError("Invalid num_of_words") - layout = debug.click(coords, wait=True) + return debug.click(coords, wait=True) + + if wait: + debug.wait_layout() + + if debug.model in (models.T2T1,): + TR.assert_equals(debug.read_layout().text_content(), "recovery__num_of_words") + layout = select_tt() + elif debug.model in ( + models.T2B1, + models.T3B1, + ): + layout = debug.press_right(wait=True) + TR.assert_equals(layout.title(), "word_count__title") + layout = select_tr() + elif debug.model in (models.T3T1,): + layout = select_mercury() else: raise ValueError("Unknown model") diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 92c5c5cff5..b4d5f401d0 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -757,7 +757,7 @@ "T2B1_cs_test_recovery.py::test_recovery_bip39": "986b3645dbaaebc733e0aaf2c129b986a4cc573248e6a7ba7096d03d364b92cc", "T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "76c051617b6212b5f53f676c29d55fd0852218edaff74017cda4ff3e791082cd", "T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "f4b42fd8aa1d0c1d06f52a903a26c244039c4f2c3aa3d577266d0a9acfbfbaf8", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "92d8193ef1b311c1dc4ebde518d47e541ccc6da2c59fd2e17794a8dc52de6c6d", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "e2624137c4885a5a5dbda6ea4cca36c5025e03313854029c183dd41229e6dc5e", "T2B1_cs_test_reset_bip39.py::test_reset_bip39": "fa1f66ecb995b4152fd0cc4e4670cfc0f2b5a6c632a2645d1f3d01c05f7a037e", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0ca14e255f36cb736fcb3d90024fb2c00e346313dcac2d9e20c379368e60d4a9", "T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2157c3b2777af219ee4cf1358a15b6aa0a9a1bf629d4bff0586d2848344a2baa", @@ -803,7 +803,7 @@ "T2B1_de_test_recovery.py::test_recovery_bip39": "658711dfc1780e026b9ce4057dbdf04fb969ee84bf5f35bf172c93a59133e7d7", "T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "ceae77d5d1da1916c1072cd2c2e18dccfe5e97c9b05225dd1f09dcb0617b1bde", "T2B1_de_test_recovery.py::test_recovery_slip39_basic": "e3dbc1a321425e9051712967d00f7b685d571b066f0b4d88c6face859b8044d6", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "2965aa84918242f250520d48a233bd0ba6ac71c2bb7653929733d152f7312349", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "350148ddc405a699fc8e0a89f1554838796177cb77436e9e808422175e350cf2", "T2B1_de_test_reset_bip39.py::test_reset_bip39": "75c87592c3a77f3bd9df77e415cb8e7652ea686789968d4090254f7f53a90e61", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "699f62c2f6477b0fe504ace63132269cf07c1a0687a005e22b2719830fa57d72", "T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f48eebda84373ac7ae9a9f047cd12aeb8daae65c239f6434b72df378f44c501b", @@ -851,7 +851,7 @@ "T2B1_en_test_recovery.py::test_recovery_bip39": "96b513e7c2044b4ee00a922e5e3d746c9008f116881ba328fbfecfb479835b10", "T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "e4e8a7fbcb779d36491d08ae03cc7105b5f956ff2679f2621db427a7a3056cbf", "T2B1_en_test_recovery.py::test_recovery_slip39_basic": "0156d5bb87a8a38deac15a51d100ddfb3ed0bec3c5d683fa54862f391e43a7a1", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "2f9f45a81d516df73bcf65716ec78b1566a7c78899da25e01239c9c73691d7bb", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "d507d5785935faf4b2798b5540cc57c668554bb7543463240e289fcd0b7b77e3", "T2B1_en_test_reset_bip39.py::test_reset_bip39": "2ed2a2957c618130654925f9b6c3ef0ef4c9281dd5fd96b0c3859da8a0b759e5", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ff7a9903ed4c88f8b784de9eee6aca82a6604e7750f035de91f6c8e0f9e64cfd", "T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9a9d78e8f7730dad9dae7dce628239a1e983a7770afb313b2d0edf78c4255c1c", @@ -897,7 +897,7 @@ "T2B1_es_test_recovery.py::test_recovery_bip39": "d6428d52286874bd35e8b5581bae4dee184d4b2563f7065064c637d2f3e18426", "T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "b6f0df37e7f59b65a78641ed2d464238fe408709c7d6d8e29c268f61b443dbca", "T2B1_es_test_recovery.py::test_recovery_slip39_basic": "1878e6255b3eb3797fcf568e62ae415b021fc046ca59071906aae50c214039d3", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "1be678e94f2da89ecee7a3810ce3b4881cd74fec22eee9466c61b2c571784e5d", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "44445f4dc5b91dd3f073a1f7b17c1d8bd2c7ddc7d949849ba83b53413e0d80b6", "T2B1_es_test_reset_bip39.py::test_reset_bip39": "8731fd3a8c11ae495533954daed17869c20ebbd8894fca2ab60df65d5d527451", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "faa00c96fe873ca23bced4e1eda899d18d3e1a7838351bdd0f913a961f03c8dd", "T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8d4d9fab34aae28efbb9064c7f6e238d9dda67281f4d605e559142bda39b21d6", @@ -943,7 +943,7 @@ "T2B1_fr_test_recovery.py::test_recovery_bip39": "a5170bb705000dda24f7e9106298c829c3cb389b4b5f5307e4d3bd4789417f3f", "T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "d996fac24e730456a2c860f22b60f5d469476066d39741171f0b1fdb91e3b168", "T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "82af3fea0b8bb00eb27e8c7f001fb1acdf211a2a4908ee681a4245fb80f333b1", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "81fc606b3cd21d9f4081c04ead25aba8f5670c764f6099a58978fe05b8cef87a", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "e6b8b0c99b90b4f436d58c3fc29ec772c51e7bfc9bd43bb3e328d7d1f0c44c65", "T2B1_fr_test_reset_bip39.py::test_reset_bip39": "d52b12d3857e40aa36df40447bcc65c07e9aa11eb33a172d265df8149b0868dc", "T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3eda1d5af4e53c8982e06dcb9c84b5e3f3bc6aea4b4e3f90db189fc3d464155d", "T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f96d564a0550ec845f78de7d90b48728b142daa2071d6dc9fdb06edef0c8b219", @@ -2265,10 +2265,10 @@ "T2B1_cs_test_protection_levels.py::test_unlocked": "5d5cc20901d361b4957aea0e4c44a630db7ab8d7de0dfac4bc9058ecf26b6fee", "T2B1_cs_test_protection_levels.py::test_verify_message_t2": "5139e2170feab7f553d3128ac0e03582c4d1417c6752408d1637595ae3bcc81f", "T2B1_cs_test_protection_levels.py::test_wipe_device": "a22ffe67f254e33437a3465b85546622ac1c01430eb598065f0fca6e8d4fa530", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "cefed0c8e56a59812d88f5604ad46379ad13b2f2f16e4b135c92d70c3b18bd68", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "61c26e7fd7f212dd781b21afde9bf08566d43cf7189a9fae49be1b0bf8a6a0d2", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a4d8b45720afa77c78e365e34ee726a2e9ca88555e30b6cdd98d8e150f2516bc", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d4cbf5834c82d85b997b26eabdbc26460ec845dca5633bf2a683fa8c0cd3341a", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "a0b6efe247c1aa3540b496c44a781f766b962bd0c6ff5da1d6dab212be510458", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "7660e1cff4bbb8e82c9f622b7e97fec8d4cfca69fbcc3991588071add5f43d7b", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "be5676d3668901a2b9db08845bbc3e3c81b7c5cd3f04818444c78bd6d70b315a", +"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1c091fef79888c1c4b7f03c7497c9a12d1267b0725a06eb5274466b0fe64877f", "T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T2B1_cs_test_session.py::test_clear_session": "dd3da407a5324351fa6cf3a7e52b234671d47202c07867cc8fd00fefa9ed33be", "T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", @@ -3629,10 +3629,10 @@ "T2B1_de_test_protection_levels.py::test_unlocked": "c37426e06d6301c72c1f2110ea040b92ca1eb5190055696d14be2730fea13013", "T2B1_de_test_protection_levels.py::test_verify_message_t2": "ed21d6e6e9faf5746a845dd7e506b0f8cb1a854bf279adf0c8e1f0101cbf3554", "T2B1_de_test_protection_levels.py::test_wipe_device": "a9a44ce394801cbd06c6f4394fc0fb2e32bbcee9e165168f475c7317987d926f", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "ab53bcee65220ff380eca54f99ebdaf2619af3f1b8061ae5b3c2008ce00dac62", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "4836c674b8992e65f8aff0ffd7c193dcd3d1c5281fd769adc724587416da6fa2", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6eeb94829e05211f2ab5a6ac56111afefd1772848b7b588c61c08648d8eb9f9d", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "adb22bb54fc2ba127e6f32f7e75541b85af3babe23155ba7c7df9d35f32861fa", +"T2B1_de_test_repeated_backup.py::test_repeated_backup": "71c4da86452ebb39b78d71c91bf370d940952685274e11f1fd7eacc1f03dc2ef", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "0dbed525a45f2acea9dfafaa309846e6dc71ac4a0513a670b0ac8ca08b21604c", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "87ec74e08e032076e43531238118e7eed8a24102dd8193825afd5e47c16a1949", +"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "38f9dfddd8852ca784f0327efae83b1d0bbfbe19d933838ef020c3880116fb68", "T2B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T2B1_de_test_session.py::test_clear_session": "3063aa83a1e4c5de6b8e69367809eb1f05863068856dcceeec4ad9410b5c798f", "T2B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", @@ -4993,10 +4993,10 @@ "T2B1_en_test_protection_levels.py::test_unlocked": "95cba1775050d4d6bf7dc3417eb05f814147d930667feda07f65c22e0c528499", "T2B1_en_test_protection_levels.py::test_verify_message_t2": "4f225a4839c5d31e527c34a4af320e6ac1cb611ede3018bc0effe14eb43a72b5", "T2B1_en_test_protection_levels.py::test_wipe_device": "ea9872538ce4f61462eeac4880f9635eebc2bf9220c54ec3e210b773cda55440", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "c3836c45134044d56255ad14ae1d0c980e7a5ce422b6fea3065f4c20f24fecc5", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "9352d7ddb859cddae1917b781a9766890a4eca74d21e21068b3c356563842577", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "dccd21b7361c560ea159b30396567b208437d7d9a5bde0fa559f4631288252de", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "91ccbd13e8f5a928243d93dd8fc4b1c535b900f219d981f6b6a68dec9f861ff7", +"T2B1_en_test_repeated_backup.py::test_repeated_backup": "feee62e02f5679f28fa928382122fdc2814d7941f101d7841243dce0cdf178ae", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "da5218f7195e6e1cab7b95a2a2465e60978bd4d1140e7f8d3d7b814b44c04043", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1bbda0ea8a6bc5bf77f77682d35ec8f0d125eb5e7217d7eb527b5f04db5f6b5a", +"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f3ecf16e519cd36d585486f388166361fcf5040802ce64da5895cd55c4bb7a35", "T2B1_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T2B1_en_test_session.py::test_clear_session": "779c42d2d2c288f8486356395b9bc204fa0ff773f723c6caf4066126e38e531f", "T2B1_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", @@ -6357,10 +6357,10 @@ "T2B1_es_test_protection_levels.py::test_unlocked": "85cbf192ba305b14f491ebad97b6fe0b63990d473d520a8035efa5089ced1921", "T2B1_es_test_protection_levels.py::test_verify_message_t2": "5a4bdaee180485d9e08ee5fdb0f5d5317e3d0df6601e1b5f30561f957b9a50eb", "T2B1_es_test_protection_levels.py::test_wipe_device": "a11c4318f3eca399c953ef595ac7fc81b5e4aee4845765a9f103796d8bb74926", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "4a6546707f8a41d371787f9b24e8795e5163db29db94ae7cf041d6b44ab1cca3", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "0a32bb4735a4dc91f7f0dde82b90d3ee638a4e09e123ce56d1a3d29a997cfa39", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6d5ea29095c545051660f16572ee99c90858fe929b2e2603767fec79344a920f", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "55663e2a46c14f682c5e5a893c5526cd0fb4a645d8bc484ef6aa68a51ea7abb3", +"T2B1_es_test_repeated_backup.py::test_repeated_backup": "9b0ebafe8e17c11dbb24bdf95dc230f6ef9c5be29e178f93e8d5061b460db046", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "ec41b85ade2fba738b810b1b3a35e812fdd645f9266c3fcb7191ef803ca02ea8", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8a8ed93312503227b580368870d575b47af570cba5b1e3a71d63c9f6e7e91bee", +"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8b3b91c5f21c4814398ea5b0f16be2fd35a57036730c17a441b18241dbfd114c", "T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T2B1_es_test_session.py::test_clear_session": "6fbffc0958c6514ea65c5ce81ecf2cdc5f2ac8965aa68d8584d5ab30a93d7b82", "T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", @@ -7721,10 +7721,10 @@ "T2B1_fr_test_protection_levels.py::test_unlocked": "7f59e3db07b56dd4ad8f18954d9ff157ca544e1b94b00be1b55aedd5f9805d89", "T2B1_fr_test_protection_levels.py::test_verify_message_t2": "651a5f37e406cbd5f4751d16a4d430d2a8fd3d3b222f3e27695342ed03dc9182", "T2B1_fr_test_protection_levels.py::test_wipe_device": "012fe61fb16333d582486d7f30349df6c5f902f50830d9f5995f1dc88e23b124", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "3f582035d0aa130a00212c26a4166980750c33490980b7aee93fa8794066c9a8", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "9611c82053799095ab589e03ed1fd658b50ba4a252013b4a81143c3b5a6da33a", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "36252557b9c53e47246fb3d0995eb8afff80d88ebaea4a3a1429e607412e9f17", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b35674d97b30c15b0a87dcb91f11ca52e15d4e9788687d6df3a8e9a309c04d32", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "2dd056735372c5f1351629daa6731151de9cfc67b38e96f561383fff147e9f7a", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "e813c44112061d58db3150a9333047a76a9948517236235999768b5e8a3683d4", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fc7d74fab127f02de7e3ab97dcae5d7b3670635bc0bf515c0e70a435d3814097", +"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "31096ae6b628c0fe0f35c58c7c01abedf153ae1e6c0051ffb8f32597e0438a1b", "T2B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T2B1_fr_test_session.py::test_clear_session": "9aca31bd4e8408f98819944f81951eed96dec078fe5ce7d10269f922faf984f9", "T2B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", @@ -7821,7 +7821,7 @@ "T2T1_cs_test_recovery.py::test_recovery_bip39": "f2166fb9da2954b3ba3d45a8387ea2f54fbc5ba368dc8a3bae052605da85422e", "T2T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "9090fb71903ebf09d2f355eca6148089234c968663a6fbc7ef8b3da83cb68d10", "T2T1_cs_test_recovery.py::test_recovery_slip39_basic": "2fd13d2bfec6a17af56fff6e74298a1d22eccc162382909741c4f3153887cee2", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "f0ddd5bcceb74cec9cc7c399d557c40cbc01037ec692e78690624a68df5c8564", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "ad53f4d869a6a9cea833fcea372ad3d257ebc14b2509e4aee8df8e7cf4d9b190", "T2T1_cs_test_reset_bip39.py::test_reset_bip39": "5674d27b155c782f45f5a3f5c6cb8b23f581b2346372cec20b3e36e7e944521e", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "bd5e78258e3530b21730dc2a5ca021ebe3a0879bb7fdae9819f43e14b2985c40", "T2T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "5e459400560e5e8e7917639366757bad7adfa7627874bcf3f531925e643043d1", @@ -7870,7 +7870,7 @@ "T2T1_de_test_recovery.py::test_recovery_bip39": "8eb3c0dfe5209acd644ab4d95e24852f2056adae2d023b25ce6c2de74638a099", "T2T1_de_test_recovery.py::test_recovery_bip39_previous_word": "8d67f14a44e211a22189fc96947f9ea6aae558162076757fa26f8c55477dad5b", "T2T1_de_test_recovery.py::test_recovery_slip39_basic": "2fabf58b8ebca83403c9d6a361009116c6d25791c489af35c87d03c5a9093442", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "448e6cb792f1f2081e83accea479ff910023df654bbb00f4186674d8934b300c", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "488f2fc153b1fa8d897782f4f645a6b45a1505b70de97e35bad0f9b289a89d26", "T2T1_de_test_reset_bip39.py::test_reset_bip39": "2c19504e49aefdf5c54d157b618763cf366f0a18cb1b488938d6ee7f0d6a78bf", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2cbf4015d5c53c9703adbe8f1c0bf0c6ae2b35745a5f44b78a34a141d2738b44", "T2T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "431af5b02a95639be50c28c7788bc1d854a0972cf09675286104ab2518e635ff", @@ -7919,7 +7919,7 @@ "T2T1_en_test_recovery.py::test_recovery_bip39": "0246dc05c08fc0f59685314448ac43bbd95599d85b252abc31d258d435a98dec", "T2T1_en_test_recovery.py::test_recovery_bip39_previous_word": "db9efe6d9c0e6e61dfa028e93f5eda6f9257cb8be5e1d1f36ac71e4f328f8355", "T2T1_en_test_recovery.py::test_recovery_slip39_basic": "186037afb1c137cba14536c50f3ba854a10c289aa9792df59847e385671d5221", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "9d24a9538f3e10de96f5115db283813eccf6a5c471d9e9997a93c8a8b359b6c6", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "23dfe62956199c456e7d765670c3ed1dd4b326670b438a4f324850839f87f4c4", "T2T1_en_test_reset_bip39.py::test_reset_bip39": "05255b352fde7646a698b74808b3de04350353ad7d8f7b2568a14967956c8bc8", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "46e964c0d9a2530a156ae7e72265a917d55931cd4fd0e1087e48a49b3f100375", "T2T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "fcf15ef196fde1120248e0b16a8f2d464f5f539a5c7529f80a8a855e2721f107", @@ -7968,7 +7968,7 @@ "T2T1_es_test_recovery.py::test_recovery_bip39": "9cefbfa32e60aa0e9fc3f0ecdecb15bdd1a42ca90437629e3800f48a873ade71", "T2T1_es_test_recovery.py::test_recovery_bip39_previous_word": "531bf101fe9f9d80a702816f490dea8dc5bf2f179460721f2a9d28322c153ec7", "T2T1_es_test_recovery.py::test_recovery_slip39_basic": "3078b430c266dfc210f8f5e6a0b3f65659036354851c311769da3565c70039c2", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "d94bd04bfbc22fda7951e5f0e05e9978099412409db1c7ab01583ad83ad94275", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "06cccc616ce9e080c58cec05c2abdd9a07b9c6f5308fbf2e261391d1ca4a038b", "T2T1_es_test_reset_bip39.py::test_reset_bip39": "2707d73e704b5dd08ac93498aa4cd578be2694c87f3987f5b1332352a7b49e42", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "cca940a1d92e19585b70f921d41dcbdb2b9559cf82612c4cc18ace2386cbd11c", "T2T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "1eae37cc70471fcf46f49dc3b3324618c76ab9778bc8f1f2edec0c483505ebe4", @@ -8017,7 +8017,7 @@ "T2T1_fr_test_recovery.py::test_recovery_bip39": "f59eb22db3a6b211b3dfca235479c21871138c2d3b0b771d69ec63cad3d804fb", "T2T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "299c2e3e7647113d7711c1c61e5f14bbb7abe7f3992b83e5ab6bed7306e5d316", "T2T1_fr_test_recovery.py::test_recovery_slip39_basic": "da87f2762c9713ad50993f6862bb34da82f4f5dc4e8a2696f2956dd3e0abceda", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "9a280efe2de3c20a7332adca64a4d40bb009bce8dd70421f9be01970901703e9", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "bf82b45a4fb648a29802de9d9df3c0f4215f3bf4444d8136a9ffbfe3b010b69b", "T2T1_fr_test_reset_bip39.py::test_reset_bip39": "c1bcf2768d4ac54af417ad7468ba40c13c16c80cdfcf24d455e96199043dfb6d", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c2cbedf1d60c5945d8c2500010137e8d29ccfc40f9be7a860f6c9d6d0933bc70", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ad49d9bb88c4b720471ee7c7d01c93f1000fac1d9c1c4395bd543dcea9f83e4a", @@ -9413,10 +9413,10 @@ "T2T1_cs_test_protection_levels.py::test_unlocked": "b26429bc0d7a5e1356f97b7c577eb1df0dd6af527ab445f4e08bf79cdb654ab7", "T2T1_cs_test_protection_levels.py::test_verify_message_t2": "8c40df7255a897dc11da0ddcaa5c74a5e24e1d53fa92874d3bd7ed24938bce54", "T2T1_cs_test_protection_levels.py::test_wipe_device": "1b1e26b8af57813dfb5fb69a44ee9473c0471430ef69616fd46a908991704209", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "50e5a98d3c7b9bffcb60153c241fc4c90d51c113ec04dd9cf3e2e61ed8b745e3", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "0a2486beab2317d2c2ad317d33d803301af2e5efc16ff6a63061a922e8070a51", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "e991c45da9878e6a1d4d78d73cd1e6b1bce34581826cb1769921385886ac698b", -"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d6ee4f8c0829daf0ef04bfa055160ae27bf691d1f5fbf138706c6ff2585e17f5", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup": "78090f695f044002f57fec5f0446613ee39ad948652961ce9cbd1a9ca8345160", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "597b790619de662770acbbe05366245fb4798728869c2d70bc020b3ce7c792f5", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "b0c153a68202fd491bad0f37220327cb4e64af2c15379a1d4a9333c9a81493dd", +"T2T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "aa859432b693c76c744a78ef6fe10500a4e7b491c4a4d955798a2e369f3fc0b0", "T2T1_cs_test_sdcard.py::test_sd_format": "589bc39a9dfdc478d92fbe118e7df14f24a3456965e5cf8a40210d198d2cb6e6", "T2T1_cs_test_sdcard.py::test_sd_no_format": "3ba9a245bd44511b17d97932de2143ddd9ac0e2b63dd5f573a82779990c446fc", "T2T1_cs_test_sdcard.py::test_sd_protect_unlock": "02cd293e8d502f3354cf35a222b8b7b5eb3a9c10cc41f631772215d8acd6e313", @@ -10857,10 +10857,10 @@ "T2T1_de_test_protection_levels.py::test_unlocked": "6cf68efc83e357e1dcc04b35afbdabb677a4db2062b02dcee205ebdcf3d4bcf5", "T2T1_de_test_protection_levels.py::test_verify_message_t2": "38633ab6b696c42571ee1fc78bda65b4fa8bfacaa4f780bfcd59b9199a32df36", "T2T1_de_test_protection_levels.py::test_wipe_device": "f5e7ac6eb69be6988971f5f01038f5bee01f8c320a5ee344277c465ec82c77d8", -"T2T1_de_test_repeated_backup.py::test_repeated_backup": "db003c214a5c904b5a528f4b1339999f620e30f52a16e92c41698ec2183b9cc6", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "7ac417a8027f47010e620b97cf92e99642a1e6715964e4f99add410911aaf58f", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "cfa94e9a80f9bdd5f416dd0084df6809e0c95e81b591f186a48bbac7ca17fd78", -"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "2d46cb617a2c6724d8930ac84af6f95bf336c5aecfe5cf619abdff7202d946c9", +"T2T1_de_test_repeated_backup.py::test_repeated_backup": "aa421a9e0a71eb894c7cf9d6b1d22650c6344fcfd4c6cd0af34c5f30ef6e5384", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "e863e59c5068bce7ef8dcd336b4995c02cda44eb8ddc4b9f75fe11fad1f2f204", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "80ec5b23748a5d0bce0bb6b5308e72973b234ba360b9e8815f4973868c8c0310", +"T2T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "252033a809b0a3930f3b3873f8d0f9cd14cca717dc2c3908868b1eaeca1aed13", "T2T1_de_test_sdcard.py::test_sd_format": "90df1a6177d74d3bb27e235f9142f7523c4978b2a45c339e319c5aadc4bc330a", "T2T1_de_test_sdcard.py::test_sd_no_format": "3d0bc9d38a1d1ad8eba878d6ed1038eb8ba78e74a6e3385b65ea29f07794ea22", "T2T1_de_test_sdcard.py::test_sd_protect_unlock": "c7d60b81900d00d13bae9dc5d8c51751816326a114fc6df5fcf8cfe706476d20", @@ -12301,10 +12301,10 @@ "T2T1_en_test_protection_levels.py::test_unlocked": "ab65da2ea346b0f54de6b527d06b3b5b84b106af7c8a520ac7816141ecedf220", "T2T1_en_test_protection_levels.py::test_verify_message_t2": "df42b13fa758144fb18f66704fa0e43d61722dedc954be3394b1e29f67f103b1", "T2T1_en_test_protection_levels.py::test_wipe_device": "96fa9b5cd96c7172c60f8e991c5afa4f8caf911561be11b32a10c1f0a984d704", -"T2T1_en_test_repeated_backup.py::test_repeated_backup": "10bafd2c400e291a33cb1b234acae4885fdf4e9619fbf1411d0270e530f31854", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "421f1c311a3aa522d97178cb771bfb17c5746a8434cb85914f7244fc7a7e614c", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a1a84c031fbdae140735699cee7305f603cc447e7157e6e32bc4f665bd951b2c", -"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b9c6fef7822f8aff7a42e2c9631e9722c9dd4d6af3e681e6d60b80e690a3882e", +"T2T1_en_test_repeated_backup.py::test_repeated_backup": "3f1d0d71b808d6b19ec09a145a471ae867b2b4e8713b1e63d0e1bb94f594d863", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "3c06f80595f7a4ef2c9bd4b0f9d9e31f35664d0b169aed7aac2dc4401e3962ba", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "6e8132c2c884109d42142241f516b1110c369a1942712b56f009c38e85368168", +"T2T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "322f57edbd335bb2b75f47d6fc2102a3596a505edd47277e1024b06792aee39e", "T2T1_en_test_sdcard.py::test_sd_format": "88e466d3626b9863f8fe1da739e8552541ab4610016478d496cd7e4440ee9e55", "T2T1_en_test_sdcard.py::test_sd_no_format": "14511e3d3ee535d97287d8ade25101e8c16db17c1dc5d3151b91e5e8eba61ba5", "T2T1_en_test_sdcard.py::test_sd_protect_unlock": "bee2b8b705eed3ad0cecf1d79f97dedf9b5c28929b9121659ae660c959a27ec3", @@ -13763,10 +13763,10 @@ "T2T1_es_test_protection_levels.py::test_unlocked": "e7c8ed3c1bb4f3beb20b7d6fa396bab7136830a4608a2940067edc7fb42bb10f", "T2T1_es_test_protection_levels.py::test_verify_message_t2": "9e6f782063e9ad8000aca54256a9d33e95df623735ff8c4a05cad352f816d766", "T2T1_es_test_protection_levels.py::test_wipe_device": "37eb71e1c71e2d6511ed41f0276dcbd964bd9e85fa2d2ab627e306eccc243853", -"T2T1_es_test_repeated_backup.py::test_repeated_backup": "20976c80742ed7056323dfe8d8db04d6fbb9dc45bb848fc01114b9166d06bd41", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "a15d4acfd9782a1c43471292e9658b51b6921bbdbf3905b58539d5fc27f530df", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f0464acd8704ab703483e2f370520c7a2e79208562902d34fa7b4463f5b70efc", -"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "67492dd57cb547c9988e528b5bd03d0a7833535c6834e4c34cf6d2f550bb8e9a", +"T2T1_es_test_repeated_backup.py::test_repeated_backup": "d872af5f197a3c1e8f5203a0f3fabddfcdc5d7f2c0a0c4748d09c987fd614c54", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "346b66969cf24b00b7f0f0d00d8226307df939537fb3e8c6049b7aa1b5f0f7e6", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ba09556514bd3285fd8565d027ca1870e4009843bfc4a49b19056158adb6a36f", +"T2T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "2237229a0a623bd2d9b5bf840cddc22379d0b1a1e18c98a5766c7dcf5da8db55", "T2T1_es_test_sdcard.py::test_sd_format": "c04913d3290b82ff60f8c7303c94f6f015142489b3b0c0f719bce8d01e7e31bd", "T2T1_es_test_sdcard.py::test_sd_no_format": "307242047f19b261c47bbb5a7c2813fac42420a064ae97c8b05de27f746a9b7f", "T2T1_es_test_sdcard.py::test_sd_protect_unlock": "6318330ebb141e486a46e2399f39cef35775c8dfaa37bf14e6848b2a6a4fe030", @@ -15207,10 +15207,10 @@ "T2T1_fr_test_protection_levels.py::test_unlocked": "d790632d2fbdb9d39484953f8c35cb1cb27609c8bf745c14b88449da9b84b734", "T2T1_fr_test_protection_levels.py::test_verify_message_t2": "a207a1b801df070ecf7e05a790958f0dba2a77a447238ced39c5f3ff8ca04998", "T2T1_fr_test_protection_levels.py::test_wipe_device": "9703f5d61609675156a2acf09414ff23bb2eba18b94942bbddb50397f7c57050", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "85a60c26d35d293b9010ee8367d16e8424cbe934c13eb3285d00c14b576f0fb2", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "fd1df231056175632804a5c54ba41b963b5a16a69e9e268aca0029f7d2debb47", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "ba29d13b736a17081847c3f11fb30ae9a7d3c2cf69def8825e522f60e4d21f4b", -"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f4f1f50273a878ac439eb704f07bda6d4dca006c74c33a76bb12c511246e4956", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup": "78ee19e195b874973c5f8180e71f6e63bb69610f8b395f41215346a8940dfad1", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "dfd554435e400f508ccb06b0a54e84cee26bd33fbef81f586869027c064b403f", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "947a181d9056fa5a51b7d9ae2ddab54a8c426162b8abfe1b932de041348f9608", +"T2T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "92c0cbdd553b90033da6eeef1909f82d8d3e0be4e7937247181c7a4108421cb3", "T2T1_fr_test_sdcard.py::test_sd_format": "844e3271ac6ddf52ce0d38ab2a081ec3b9871f3e5afc80ea420d167ca9b69145", "T2T1_fr_test_sdcard.py::test_sd_no_format": "28930db57ccfe8bd016be50b62fe6ff6ec0f22e6a0258e772a18135c948827b6", "T2T1_fr_test_sdcard.py::test_sd_protect_unlock": "84a1aede2a48386c5e83988ff158586cf5d14418f7a090f8edbde461cb3af9da", @@ -15282,9 +15282,9 @@ "T3T1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "aa7e12d0fc686046e24460dd1e025540c910427b7efda5f7730baeda6a1605fa", "T3T1_cs_test_autolock.py::test_autolock_interrupts_signing": "43293b55a181cc8f65a4b5252909a0a46582ae9db33686bc24e8e34760490a0b", "T3T1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "41ecf1502524f1ea58f60bd6bcb41783262b1e95dbbc74768817725212a1878f", -"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "dedee62f34cb9fb82b76b57229afdeb633cad520ee417f8379ed40728aa48ddd", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "662fdecae7643270921e0c96105ad326d5421693d0f92471494f4af31a31e751", -"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "6b09e1ad5594138a7f01ef8f1e89adbc3b52e112421eb295e296dde22e7e0bfb", +"T3T1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "7cff83e81c85e72e532b89891db91915987df5801c0b6a7198c559bca049eff3", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "b97dce7803bd5fe63d5c283b86ca2200bc9b9877aef3f78718fc7835089b56f8", +"T3T1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "a9285840118c65ef6e2db200c3198970ed810aff0eaf5f6ad3d647ba72af9f09", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "3727ab4838230367640d950c272e18bc14e2c63fcb0f8d5528d3b2f739ac3c69", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1e326613e4c4d7c71475d27fd5358c89289132980c884f531cf2860a05c4abea", "T3T1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2baa8ce83175e16f4af030652109dec4051822858e396c2157e3bb066285ac7a", @@ -15317,10 +15317,10 @@ "T3T1_cs_test_pin.py::test_pin_short": "d47d5d042fcafcfd35e3893c9f230fffcb174a2d10198e7e0c78907b5777142a", "T3T1_cs_test_pin.py::test_wipe_code_same_as_pin": "6d615ea3421738485484b14e305a8c3f159bdf82925329e98b87bff0890e4366", "T3T1_cs_test_pin.py::test_wipe_code_setup": "3566f17ed11804872e11694e5c5a8da8cfbae335ad1a2a4b10cc1f48da04cab5", -"T3T1_cs_test_recovery.py::test_recovery_bip39": "0b4ded4093e543b29799e950c3d56b8ef4c03493709a94f12e3a1b245128dbf2", -"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "6f2ca2bb7d573126aa25c4a70fffea973670c6865d79bbeaad8deb8736efcca5", -"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "758f8c529232f37caaa4adc3caa57382d93ee0323b924a11bbd1ef484e7d7d2b", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "814b4b08d026372e5a8c922c814847f06742d5f27e769e0bc0cfc50dbe1899bc", +"T3T1_cs_test_recovery.py::test_recovery_bip39": "882758bb205cf0e7044633579f54e612c4b54c78427b4ddf2959567097fe3c39", +"T3T1_cs_test_recovery.py::test_recovery_bip39_previous_word": "54f20590f44d03bf725a2f7dd5e6b701fbaa4c79650e6d1e9a9c5b6ce3bbc055", +"T3T1_cs_test_recovery.py::test_recovery_slip39_basic": "e36e91a9f03a307d42fdc7fd70028abdd80609de4199aaaff22312cfa1370b9c", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "546c14daec665a137c05c645cc5107ffec77aa2d16892c6276960fcbbc676c78", "T3T1_cs_test_reset_bip39.py::test_reset_bip39": "93d1941ad5ce363252b3365b47bd10eb933d9f2a96d12cc518fd904a9e193e37", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "834bc00d7405a9061bd0e579bc9ef9bac81d0098e26d8465533e1ef2f5cc109b", "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b99576c0410bbcc38c27c681ad365df30f69829369bca07bc9c137289ccd1b13", @@ -15331,9 +15331,9 @@ "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a3e97d19a9b9e966091b25801ad44bfc09d2ca02cf6ed540825a287fc77a353d", "T3T1_de_test_autolock.py::test_autolock_interrupts_signing": "26a5707dbb0a5c6e9149af85c6af56dc62a91cfdf93085b188159306c8932c5e", "T3T1_de_test_autolock.py::test_autolock_passphrase_keyboard": "6ff4145d8507d852fd5d9ead68dfe26bdc69b4a9638231dd5bf33b7f1f96dca7", -"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "68c3185780d8976ede424a042d7a9bf093c1825d8049babb0a406bb5ae7a33b0", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "d7ad4444a3691a2c5891a1d6e5fb142540915048968a9381a09b227beaaad8e2", -"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "966025defcd879d831ef6b7a1bf0331f62d4f1d9a27872dafd3c9ba72d49cef2", +"T3T1_de_test_autolock.py::test_dryrun_enter_word_slowly": "a57575ede01f3ed97e0b701061772b6742d5df7df8b8a2e14e60e0702320a7f2", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "3087c9a7481b296cd5c48283ec5f4b69ae251fc421ab2b445324362f3f0665db", +"T3T1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "fca850436a8d2d4c22ef25a01e186afde094ef375818e95126153c5e4aa605a2", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cfb48403af7b3c67c51606072fa1be83497252a9d13ff56318b72f142833e8ac", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "7d31d671fbe5c8cb76e58cff256648599db82d8a55c35c01b6a5db801d7ea6a9", "T3T1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "e271367931f483a13c2e19bb346673bfe19d973c494c8324b894fb2430c79da7", @@ -15366,10 +15366,10 @@ "T3T1_de_test_pin.py::test_pin_short": "43c58c441cbe7c6b62483812b9c88ed3376286d1e00ce931e49f92b44d744959", "T3T1_de_test_pin.py::test_wipe_code_same_as_pin": "561db133f0d612048fd08b46d438a4a500e064d3088055c9364a5660afb01103", "T3T1_de_test_pin.py::test_wipe_code_setup": "e20e2c935c654931b9786df91908aa544d2736e06eb78cb0ef54d44604d5aeae", -"T3T1_de_test_recovery.py::test_recovery_bip39": "f15dd2779fe059da83e5c3384e3c882fb1f11a4fc77ad2cac2cca87ce6ff48c7", -"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "c025bd7d5e6f4609241b1dc17663a91d59f242635905d67d6be0c06ed961b3bc", -"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "9c132785b4d7f79f09ad2469d5f8e427a9b67617c77b297b7d1ddd2c4c3ddb72", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "b612d5a6af5bb306b0c399ecea31fe86985d03f6f95ae954598e45f5540e1244", +"T3T1_de_test_recovery.py::test_recovery_bip39": "cce5d2b179fe78993870a787d46c885bd7bb0e1c2a52025cc5438890e13ca1ec", +"T3T1_de_test_recovery.py::test_recovery_bip39_previous_word": "c3ef749dea89d1402aff85fd1d7761f1db39ab8bcbaffad9a4bf3d293a1b9e7e", +"T3T1_de_test_recovery.py::test_recovery_slip39_basic": "72eba7f0171638f0a021da53fb0032ff501a20ffe8adf4653eb3cbaa3ed66d91", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "d6bf433f3b0602f64c59f22a930368a9821e1591e95f2a48fcb8f08af73d6953", "T3T1_de_test_reset_bip39.py::test_reset_bip39": "8d05181934d3331c81e7b81b94baa24a8f4db336d29e1e7f650b42b38c0c3484", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "bcf7bf99d44844a13b7b473c3aa0cdbdef229013f41a11a0db681a2c8d5a20fc", "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c5a72423a04b26d01fa930faf4c300e18fcba8303580e479b52bbbbf0d654c7c", @@ -15380,9 +15380,9 @@ "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "b77e0edc22959c2d16a403b1742e911e27c7eb2da10736a5969d66583fd04d4c", "T3T1_en_test_autolock.py::test_autolock_interrupts_signing": "f1b5162e62e0fc8de8b0096111da724a0852236c4d5f539ec81c5270376e00b5", "T3T1_en_test_autolock.py::test_autolock_passphrase_keyboard": "7278bf0c1a5344022802e0381d38e837abe00ab413a863345dd36c94a629c330", -"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "a4053424e407160dda2095cebac34065565afb4201092e1b80a702a2536cdefd", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "36114e7a5d1f1e35206dbfd3d129b7816b4b240faa2ce243dc6e16a57d764f28", -"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "7bf68edf1ffc0d6d01503f25d2266d3c5ba0d856d28c44ae592b3947761bc12a", +"T3T1_en_test_autolock.py::test_dryrun_enter_word_slowly": "037901a841bb06b764261627e979c1f38f2a260c9a7ca65d1b17b03329ee52a8", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "6af62735f4dd42984c1a5dfa2e31401314f4b4dbe4ea9ee0c7ee2b4b8adb564c", +"T3T1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "74eba0323f3105c6ceaf701543e6d095721c9cbbd5a2657d9fa8f81a6a28d5b4", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "cb4de4d6d805de1ebce4910d503da207879185c978b4cb66a56f146fd2e96af1", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f7d6a0803004d5fcb548430e67a07b277b10be9315d574d875813ad0662cc3c8", "T3T1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "898f8c5921c5e6fc3d297c375f4e380886bc56a9dea04b5b1a8c028a8b599db6", @@ -15415,10 +15415,10 @@ "T3T1_en_test_pin.py::test_pin_short": "79796966e4367b6d6d13acd229ecc9f13bb2b00cd030bf854184d94176f1e6eb", "T3T1_en_test_pin.py::test_wipe_code_same_as_pin": "19435c69b4111ee84d73ec996aec7150c3d0c8492203d3aacd96a64a9facc2da", "T3T1_en_test_pin.py::test_wipe_code_setup": "ab34c35e04c86f39b8ebd6da3b48a7eb3b28cf8eabbcb4cbe17fc788ea7f14f4", -"T3T1_en_test_recovery.py::test_recovery_bip39": "d80025a0c9f7c2d888eaad44e5771ae073063ecbd4a59d6e8be6141f2ad1ca0c", -"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "c580851c236bbb8f8a7d11fb0555f76ebf0d24560231548aa041c5260fbd2589", -"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "ef3cbbc66db078e7db645f1b7e1609a5741fc71823a1ce4105414f0a348ef214", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "3a551f8b623311790b430aae9769edd544e448ec97679bb7921791f049927bbd", +"T3T1_en_test_recovery.py::test_recovery_bip39": "4f67e7ab62623c431124aa1a4f1104ae64b4e28d2e3205db0067b9ab7ba1c8e8", +"T3T1_en_test_recovery.py::test_recovery_bip39_previous_word": "6ab852a2003bd6b55cdda7e6909812b2370656cd89574f5c09f53abf80e1d437", +"T3T1_en_test_recovery.py::test_recovery_slip39_basic": "7c426d5d7f9768d827b8da902d2350372ecd492aee0537bba2ec117db09ef7f0", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "87e544f6813cc437f9a7aecf9938b92b1cb88feb6eb2aae7482ff92b0d180d9d", "T3T1_en_test_reset_bip39.py::test_reset_bip39": "38af86057d4d922c371d9957d05e8f0974f9a1a27589c3f286a409a8f7b03ae2", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "b04c36cfb930c793b4ecdb568da122dfffd0e9206e2671d557759aba0096717d", "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d5f933a53b426e452b8007edb64c3e05526e68e8f7246377f708349a1fc09d62", @@ -15429,9 +15429,9 @@ "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "dcd00ffe9769bd57777fd0480b86020b2c1d837f901853516a3fe50fbbc6410d", "T3T1_es_test_autolock.py::test_autolock_interrupts_signing": "3f9070f1b83a17e4a428eeab7b056cf088dc421f21d7819f92dd07d63ac66cd0", "T3T1_es_test_autolock.py::test_autolock_passphrase_keyboard": "2855527c9d14d1bbd0ad8603a52a320fd2cb2071537ba6fee13bf9e5a326d961", -"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "91a394679fb03f54f591307c09ca3af442985dd90042de2b26abae981a1062e1", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "8c9e39c583899fe215ae1b4e71d66ba42181246fa976da63f4bed172d1c9bf76", -"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "1bca8c9c7f748d36edbbe2eb5ddb161d26d3130e7afd03325450a8b14531bb69", +"T3T1_es_test_autolock.py::test_dryrun_enter_word_slowly": "5e07534bca56bbd5d97800ec22dbf3b009f130fc3a774b60cf51095209e7b820", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "024000bca4b7b82790117a3b7859de16201c198bd64dac4ed7727aa3ecf88430", +"T3T1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "c1602712a5829b7cd37e9d9a40b1e66aac661f8001459e089d5db023faca6a69", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "9d6a6457adb90933b06a63a33be99cca3aa8d2a8d314547ac2bb4c144f2f4782", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "73eb055845fd5e29d8f188e549f2b95c2e1bd9e3e13b38d40a14fd3515eca7f6", "T3T1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "03fc313148f107de5e8d15ca6c8012ca94d7cc16febeaf2f581c6824247e4445", @@ -15464,10 +15464,10 @@ "T3T1_es_test_pin.py::test_pin_short": "21a6007121daa2808055f1fd035f00d1b4e5e1b51f4f1bce286f781bb24cc825", "T3T1_es_test_pin.py::test_wipe_code_same_as_pin": "951f98ebd0dde31c123c7d93eb98af5d0bf5147f2bd28a3014ba26d8bda58d5d", "T3T1_es_test_pin.py::test_wipe_code_setup": "edfe089762dabc918417ca26916a6ad1d0377b8617255c169384ef8728c17381", -"T3T1_es_test_recovery.py::test_recovery_bip39": "4ab6e088de9d60283c6a9bedcd39a9447cb484c0dcc3792351c620f129903078", -"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "8ce954ae8e00a8d60dc94aba2b4a332ffafbe343efb4be18ef6f400d8f7d7b39", -"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "77ee2df1a216bbd3a040523ec0904384653f5bda080e77059b99715b6a297cad", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "4713a3a4d39b6a7e8bf764dfc7c57fa454ecf4b1a253981262a2241d2fb11c5a", +"T3T1_es_test_recovery.py::test_recovery_bip39": "69dfc45940f98afe124de12fe4ed342ac82169541b9c8e722f23f5e86514c307", +"T3T1_es_test_recovery.py::test_recovery_bip39_previous_word": "245efb4eb0f239f49752b34a10edb645a8e86c26e375a255e2afb2d819a83a5f", +"T3T1_es_test_recovery.py::test_recovery_slip39_basic": "9cb23d7e230ffb07f4974a98f3fecae8254e08a3af68cf1db719400aa89823ec", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "60fe849c1b1309e0f330c6fbe905fc5bbf8a9d7402ea79a8b857775cc362cc7a", "T3T1_es_test_reset_bip39.py::test_reset_bip39": "0dcc22c287bd99765d79d3d393d287cfc70002213aea2679b5db004efe5da319", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "09f477495c1948dbcca337fca741fb720f18155387d79690ce6fc4b4e908c99a", "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a876586c9321ebbeec3cedfa926573b5f4fa42b0fb3969d781a3d0830e4dce10", @@ -15478,9 +15478,9 @@ "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "f2c4df9d57c5581f92bfa0a41b296d4765abcaac1be016e161242cf88b04a7a5", "T3T1_fr_test_autolock.py::test_autolock_interrupts_signing": "7cfb7eb316e587770c9859ea9ca84844fdd398cf018492d41860e343b3132ded", "T3T1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "f7897f611cb0b149feab055d6ef8e35765c42a364938fad9839d5cc25d24ea3c", -"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "5082a965b4ba4fe2372fe280326d05e376be3e521143d820547c541f61f0361b", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "c97f5c38ea479cc17c1e48fd77d7c7f71a8ae69725d2038d779ba0a308a03ba9", -"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "8105547c44bb473bca255c9f5f6f6e9116dad0ef2e1d21e216f7a63020a6c8fe", +"T3T1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "d226bbf65da2021a057ee1e3ec99b548475d2fa4a102cfa5e86c84a728103cf1", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "11a16599f57bd8a4969112cfd9a349df836f0eee99d5ae04b5c6a239868ed234", +"T3T1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "b05a4d9eb62c4cf9faa83965851e4440847d68e28c5118de449d6af15b4d8666", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b1ea7d079c24e6411bedcc213b5686b8181d34c1218de2d3ddec6ed0ff2d5347", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "cebdffc0d599eefbefa4ec6b420defd3c3b9b2a3f764a1ea956d9c0dc3c7416b", "T3T1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "452069108c2b3285efd6f7c0d9bb4ac4a50090e8c229b4aeaee0d730b7911776", @@ -15513,10 +15513,10 @@ "T3T1_fr_test_pin.py::test_pin_short": "f727f318a1334890b62ec8670e55a3eb68d4e14448cccafe8e7882c34df1cc87", "T3T1_fr_test_pin.py::test_wipe_code_same_as_pin": "9fbf63afaf25ceec9a0b8d17ec83c0a7a39c7b106ac13519ac196474a083a31d", "T3T1_fr_test_pin.py::test_wipe_code_setup": "943ea3640d21ae0a79655035e2aa0722cc7b79f6a9e17bef39afd9ac1c327549", -"T3T1_fr_test_recovery.py::test_recovery_bip39": "ad346e6b6f0dab29d4240f7495cb92b1546b8f545477ec02c03e6f25545adb47", -"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "996f0fed4bb82ab3c815e5697fe4ac5c81e241da08fcc2de5bf59a0105911691", -"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "ae737b02fa5dcbcb89d4996f81305ba07d0cc13aeec289045b94402074a09576", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "2bf3386dee3dd696764a4f5f59eaf76072b833cadc9c7a79496ac722c21458c9", +"T3T1_fr_test_recovery.py::test_recovery_bip39": "9516139d536357d5e536ceab84b2514a1507b508bbef69099cd2ad8017b0c98d", +"T3T1_fr_test_recovery.py::test_recovery_bip39_previous_word": "580451fa5e29258ec413812437f1cc9798cd6ca8ab18bc379022ed86faa110bb", +"T3T1_fr_test_recovery.py::test_recovery_slip39_basic": "c172808a37da03bce6767da476c69da6e37437769712f5452875e468dca0e3aa", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "c9235d472ef674eeda30d57817e199ced9c7276ab5ba90b2aa5b4cac35f32bb1", "T3T1_fr_test_reset_bip39.py::test_reset_bip39": "7c0ec2b343c28d167670e90cde9e41e007cc0a892042b1a846347ebb06a7a791", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "046b4d4f6c9ca3491a9bdcecd25ae80d4ecc41c189dc9640331ffeb5dab40030", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6e81831b32542ba19822375c2c7c780de6130136f77f39f4022ee43be6bbbc59", @@ -16497,38 +16497,38 @@ "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "1476b23a156d18a90e7a56204510d723b6fa1eb582bc22b6ed59ea2b4ead5c2d", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "187bca6b6f353f91e42574ff535b4604a4c0890d2d0226a8c80f77b97aac8a20", -"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "3f5a4e237c5971dfa94f34efab47e78107e64c48e32efee232c195ec521f7329", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2e83a174861abcc5955f1666deac05515672dc9bd924fb3e3d6ab4c642aa26fd", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "9187dc7038789e65bacfa9c9d9bb615461f3a433ca7ad0db1030e230d9ca1dd5", +"T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "950452c88676bd7ba39b59edcedda3083a6bc2368475a76007cda0d0de1394bd", "T3T1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e333c4ca5bad56f95c92048d50f9de86ba17177f57345eb1d215f1d5f46d7027", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "4234000f40333ced5b8068fd2b8633b15bf88f0206fb673039b0e05387cffbba", -"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f3fcebcbac5a7abe60462bd657dc77a9137c32b29b19609d04cb6266f5358ab5", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "d0e14e7722b2d7f9d727ab4af4ef7e19afd2ef6f09ee0e80886daefab218d13a", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "37588374cde99b3bcc5dbec1e8f57c05c2f60a9bb10d28ffadee96452a887ed8", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e05d68b6225137131c65431de9f299d42c1935c9b025b382a9d934fb86ce7ed3", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "1f056dcb4beb161afd044629b293c399546f7f7cf31ce61450107189c54eef77", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e87339e08ff810fb1a0e907582a7340789451ec07f487f6772b451357dc92e14", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fbbe5f2836e291893fc4137107901f8937e04fe79c5bc06512ff61d5026e1d20", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "07decacae90519da51684f858516f5fdb689218c8531368e708d00ba4a03058c", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a297ac7480990a01cffd0567560c142a7650e3d6f3b1c818a744eec830279ed7", -"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "7a39162cc834b301dc86280bbc21bc21bfae04e5abe23a1cca57139e19e8e5ac", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cc154d22097faf0097af5574264c4fc27e07e3fa7fbd4a0506a238d69fe065da", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "d0e14e7722b2d7f9d727ab4af4ef7e19afd2ef6f09ee0e80886daefab218d13a", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "2dc8f1cf38765eedf49143837fb82e7e46c53ab0ea0b3df94ce95e80c833c121", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "77cf9ff6c2fa032843a09450dc373403f1cd6129a793a0df7d53481b207d2a61", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "ea98bf3281a2611fff3c51e1dd0147b23b04e331c44dc2313e5862225851cb55", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "739277758ac2a3b52ee1e96359ae130066f7416509c7c1356cdfba6997ad5ba2", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "afa9da7a4cbe7c87e7bd0da8b72b17fcad675664484a16cb95e0ac6e91a97ddf", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2b62a6daa1174785d184438b8ee2b2263fd4260384e410eb320d8e8edd1e620c", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "7f19643de036437664eaaca2760283c3873027ea8bd6d41b5ad00b75b3f588ae", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "2382e5688c9948d3169ac223ac095968097dfaa6fb005a6b456c44fb3fa2adca", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ced06cd994fbf388757abfeecb6861607e69ac04b9f63645e3b0d43a14f347d8", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "22e9c26c999518f181422b52d59890d22386a882d78b310c9e47393d7baed214", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "c51b1c529aee20d879802aa8a1140b14be2f4dce9bf5dc1c3c7c61b372085838", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "2f1959704c7070bfb99dc9055557833162a58bf13a0da471c204bc70156fc9cb", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "139c4026e0187291bc3714796de4ce3bd012082c58f0f105722c8c1d34e1c2a3", -"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "0d926628d631a76f1360c031e1567c7860d5f211f86a81d6d5f8afb1c95cd1ef", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "58f1a9515c1f84d84a538008f382f0a9427d5f3e815cb3ee05b0d9d705274457", +"T3T1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f7e0cfa306afae47c36cc8198db16a91849ec7404a43941fe633c8f153c673bc", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "49e3412248fc7ca76cbd6528ee3f4ca749d78c028aa4d3e51579dc6c51d69504", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "ed334101589cfec7cae59834a90c2486d508280544cf8809222878290a64b66f", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "6d9208b12161b618b05c80d05d49bf04d673aed7974c7cff5e7597dace4df2e9", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e79d91fa2ccdb845bc38996174b22d2f35ceddba90a1a967ef46ef4b37d5c999", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "f207194fc64f068391f521c2069ef1fcf55c581c1c241c49c620f9462557fcf1", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "ad415d9e066ae572abc1e81df83758f1eb884aa75d33464ad5cf393edd17c2ac", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e8a1825029d6cd6fccf2d9433df5153cc7494c00350c0cab09300fc05bff8a87", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "06b9b90d151e8eb32f824b25c379e38dccd2732592a9d54cbe963b75b88cef24", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "908dfde70e1269935c7add3c2edaea223724fc78bc8e030e5aeb08dd4fd0ec9f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "65a86c715390ceca75c9eb2f56a54bf85e2b915489bc080ca45f15a69c5dc55d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "49e3412248fc7ca76cbd6528ee3f4ca749d78c028aa4d3e51579dc6c51d69504", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "21f4ef0952f4b3f4233e181d61fcbd247f9ed5e32771f8161cf78c01c0cb2811", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "6a826cbfed9fa8a7e53efeec8d5bc57b74068ec67fbb2b4d8c772164f43665dd", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "3aaa4161cb7dba6fcd6c9506692a742ef55a19a0ced31be30db3b78ae0014f28", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b1ff20d176a10a093c21b8ca6012713e8af95b7f6215de06f0e3fcb0467b3b7d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "8643012df73a05cb9be16e894a3b58549e007879aa02f417d2078fb41fbc6dc1", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "db46f8b5425fd9a14a2efaac43fb31723bf42c306a96f82b6dc949945011052f", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "c4f418b268c2a605288d5db1ddd1b657c77c05c89977b2024bf5d33cc83cd11c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "bafad7fe09bd423bb3d65634e2cd841e664abdbf1a4586e8811562078f5ba7ff", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "7a4535b34b91211ba27aa992c54c9a93fb4e40c4fe8a549f78afdd1f2c3dcdcf", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7cf76db89a805a690fae4e500dc14eb31443e1ed2d1ce3594582ebab7c3d2c3c", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6aa1dede61477b9c9b09228fe0fd85ccfdaa3db5e59ff70a1abf234072352db2", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "168c5790ef3459394c588db76cc9cb57af8ad2118a6c1b991a83772174d414a1", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "73cb63d0838a44e06a2f4031a48d54318dd7d4f77b921708e074ec25fd49476d", +"T3T1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "ccddd116f59eb0049db899e09a5717d1f4ef6bb1498e352c991ac19910f1e414", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2a42ba32c22a866cfc71ad4386b8f22c6384bb0658c535429e4b14ab9bd7c9ea", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "d597af898dab4d882e83691035b4203273196ecbcceccf76ad817ea93d47d456", "T3T1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "fdd564ba45c56687218b9f023c24a74ac1f2a6f5b821f4f0f27ae3b5dfa24d7d", @@ -16541,9 +16541,9 @@ "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "93cf9d74f37b647c900e59be98a7f05ec73e03964058ea9325890b440f3c4c9f", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "dab6c78840b4079303b01360b886fdf3f7d9983289b4cf5d785e9b97aae492a6", "T3T1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "10baab4b3cae026f6e2382cbbfd6c0bcbf37e27b57957bebe8a6d2067a6dacae", -"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "29a537c67cdb93e39b0f92b2cfeaf120ccd843680d13d19a57955f799c4f27d0", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fa31902ff0145ec23e5171b754b11678facd590d413fbd36c565074765de981d", -"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "12cb46c5d48bdc342e97345d13d347ee027ca184d4a2c2abe3db2e3890410991", +"T3T1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "dfc535ca81c0d2f662d096fe1ea08a6f63a8a819cfc05a8d8e7bd6bc271c7a9e", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "22052ab39e9bbcdcd20016b23bbad5ed2d7d5fadef4d2c9415bc9ef6e4c6cb4b", +"T3T1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "51a60b40e08fdd275c754a3a989cd37dbe8d2bdad218d0a97fd6f69525079514", "T3T1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "53134494ba83ce570e51c70a2ed11fc99e8e4bfaa4a736a630c495688cf7b1a5", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0d06176a67ce460fad6fd8269caab5854cc43f4bb557f1debd35647d9cf2e255", "T3T1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e7e51faede48870e1abd2cd7948d49c36b048c58613de2995d3fa1db785a0860", @@ -16810,10 +16810,10 @@ "T3T1_cs_test_protection_levels.py::test_unlocked": "4489e8907a840ef83289f4ce45146dd4ed59d26502af93eed4e379b073842eda", "T3T1_cs_test_protection_levels.py::test_verify_message_t2": "d806653a6d4bd2b71c8b2c1995f56875115783f53c43be220e026419df16c1a1", "T3T1_cs_test_protection_levels.py::test_wipe_device": "4bd90276272d0a3ef71aad24bf5facf72bae079751373abfd007258740346367", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "c83b4f4563fdacf5688416eab3bf0eefec5352243e0432f3fb92a71760b81425", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "9f3174335248eb1936cefa08998332f426fa146ef741199c58f21e01f8110bf2", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "72ceac61ff59e497157a15bb0075bc916bf8620a36c5329900761c69b5a8ba13", -"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d71ada53b400796e0efd336f707b5e134f57b29f313f53559b6323cb3db603c8", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup": "d14ec553c75818f9bda9700e948e4c806fe8865c6242f2a8e347556808b504f4", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "bfb2ba599d2774868a6907b7bf87c70e695175ca30e3f7b76519053d486a3c54", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "076b6b365e3099cbef5ef34c8f35533488ed87ab45c7a582dbb3f1920ed6a5d6", +"T3T1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "24bcf8758f11057c898d56478e386300592dd606ac3d27cbe7fa3671f9a9f5db", "T3T1_cs_test_sdcard.py::test_sd_format": "76c7fed29920e2339f0f29cb9545474bbda504712ad06ac0c44d8d767448a35f", "T3T1_cs_test_sdcard.py::test_sd_no_format": "bd5b7504a75426fb6b9ec89d23c9332fb3010db2b6c58cd95f41670bec65a846", "T3T1_cs_test_sdcard.py::test_sd_protect_unlock": "19cb5bfc1eafb2aad10f899040705034f5bbaa0104aeb455c08cbaea044ad4a6", @@ -17839,38 +17839,38 @@ "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "16f8e8a7e18e34903d9534488670013f54b223363958629009bd11bf27a801ab", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "02248b8a17ece7d52309cb68afc8097e9933fe2783c51bd68beaf4698659118f", -"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1787582af6123f848c73d642276a4219c95584df17951b2d98642b93cd2383e5", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "fdbd032655a3d8d2d413f4741c25088aa13e7b4dd7f5d0c0b01bda91de066df8", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "680b4174c506e98b1e8eb34054a19c0fe473f8cfadf8baca713bb8610db3432f", +"T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "06cdd3a7497a1ff17d8db4c58aee97ee8768f7a9d3d3407a32d8338ceea2a780", "T3T1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "e70bebe8aa868999dc88c44f04d136bbdae30a0abc1af2ed4740bb516b60a202", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e238d30e6b5acc12760d929fef34ef5933d08e1a356c44694a672cd6082da409", -"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "f5bf5c36a726d6a0ec39b9c9083da897236ec3f02ebf822437a9f0a6e6ad2700", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e95fd1e2af99ed5f414e9897edc5fd9b3dae3a998e3789eb1b2644903db06450", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0cbee1252ade888ca4f37e5394a76d89e8475b93dfc013b2e20106e077231cd0", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "99fa22729f4501bf4336a955a70f4cf4e7b1d392bfd3f0f072252ca91851036e", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "385ff622b271ff1e604a41d971fda52f3983e4cdb5adcef1c64ae9e8c557c7ab", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "dccfb22149a25b31bfeb83cf575932260611492b61892fb57b616fd0837cc7e3", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5159157e7dfb73d9e3c6754d75acf9dc3b1059185fbdc6ab1e1dbd61ee242574", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "95d3547140e8bd520ad60bd283bfed122a8ec82a32be690ae79c82647f1e7bbc", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "1299dd54c76679f5bbb601cec60b10ff836adfc52c066d4c3055d2ec3600672b", -"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "885e73d58e4e734b4580c7ec1df060f5b3b691105ff02b407baab578aac61e18", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "3f998578def08ade20f821a9e1decee9534f29223910c44d56b3f48e98561270", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e95fd1e2af99ed5f414e9897edc5fd9b3dae3a998e3789eb1b2644903db06450", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "15742acda7adaa2f78280dde78975e00296a08483275721a6c8371cd25c0b619", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "42f88340ac6d0e6d49efe699f778d9e9eb6bcfa3aa4c4dbf2e0d9cc1022940e3", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "b4c7f04c647934c0b644c408daedf4456a330e131a0b1452723eecf96e7b97ec", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "8100d7511051d92bf6c20f76de10c0f97327fe11a6281b34948c42e00b5b4b6d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c4357225caadac2ce0f207cef2abf93b3823f0a43405006913054dc9033775c9", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "4f8551f8abfed53604d162f9596213c30d3bdbedd7e0a01f91b7ff4602f5b599", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "525e129c0dbbdbe50f4c72e0d803b6847adb7b725fc9b29f1b4fb295b7051d19", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "f627a45fd1608c8bec05daefb43a7c126e6bf8f4872993057562e9206af4f100", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "034c76a0a5d48742cdd9042c658bcfa349509a8c7a283b032e02a7ebba826949", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "b06d99be344846d8af03cf89543870f17ee5825d492170dda8fdeda443bbaa4c", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "7c8da306cd26c5f1b71b086bf1a3950638a044de09f228642e3d61efd7dad28d", -"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "b9123cb405619c99dd1fa740f41343021f7642db499ef290cdb7e0d7b337e6eb", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "224d1b5bb2c250326d834ee6b584a023eba1ad5c1e070d69c6385f861d34e462", -"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fbc46e8ea32dad57600f9f4d5e10cd8a60fcb54807e41432b811bfade913df12", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "66efc50681c22030b22350c626018b92c5f1bf6c3410312349ff3daaf5f8061f", +"T3T1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "1d85b1ef2213be3660a2d0e601cce58ebb885c487ef9fda53fc25d1566e16978", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1a667966f6b56f270a1039f1b9f7ce31365606aaeed38c1fe8d9bcfa2de2e08a", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "25eb625a0cc452d50f12236188ff593aee080749fa0025ca67d83d8e7c5b8e3a", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "65afa19bf76b83a2fb3eda4588203ff3d32446ea633d7212d8c96fd14d47cc30", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a808639585a771667959904721f269e65a53ef4c2471a4f8cb1fc7da069d6234", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "d585bf013c0c6526bd9dc17f33bb21c0de19e2d5e653159d5821921f32da2705", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "03437b32a72c828dbb6365be52090ca3bdabdc969cd8e238b88b8fff868b0417", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "aca43fcd50b60741f3dda0e06adb01d74c41cf92853368759c476e6fe55326a9", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "af836476467f13d07ca7689fef5e9703e85f0ec489c0f3528b5fa9ccc9531041", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "f238d4b9f4f6d13fb082a2b048a7aed6a3f25281ce637d973f3a3cdfedbb5909", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2fc4b3a3ab644a339238a7291a162b1e1fbed9714cae4de49b7e1e10814af2bf", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1a667966f6b56f270a1039f1b9f7ce31365606aaeed38c1fe8d9bcfa2de2e08a", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "aca67606c6264d09ee1ae6fdb1537be2404afded475dce43b291de78b968b297", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8197e05d8a644832f50e03d1c1773e2dddbd7ee9b1caa49fd6be4f03f9edcc58", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "da74851a56e7e47f81c7088df43c07ea74ec532da9267d3d772b507b696213b5", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "95c672e6e3213320f54515fae118a81572cc7720e6598ae1fa516f1a779fd125", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "d04775cae8cc914c39c7cb593450d0ee4e447fd822b98e7eea8bc9d11cb60a1a", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "0aaeeda492c102fb67c447de43dfc0dbdc9a75a384d46a4f5d0a5d4c03d4a914", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8de8e296ec2bbeac94daf30600948edce065d849148034ef7c661ec0df3f3b0a", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "538ab094a32b59810341c6a4ac8ad063c465a50fd5bc3f49ce6c89faae33f6f2", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ffbdc754ba522fe002b154c7b3f75f8b844a8bbecbe1fcdd01ee5007582a8e7f", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "92d3b85b88f99fcb75707189458ad2e6a0dab00aab99284f38a97f35b3b28843", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "63bd8f6812ade28cbf3ea1ec2c40fc238e64cb0e2ac0be38b1ef0f21b1f31767", +"T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "940e96515bf3a58404844395502a3f41c74458df97cd1fcbfd0a78156ffdb836", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "7df941dabce59246d82e377e5b5c00576d6d28e1235e4e3fbdad805f098d162b", +"T3T1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "3cde82437fec7d6f0159cd4634c26f915684720c920bd0b529c726be7eb86dee", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "946b7d98190e282f0a8545a7d11f143a5faa5645485f3c3f224ecbc783a7e55b", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "72cb3756c7947395bee9bc8560e4d3ea721d88a92c0069fd6a604702876f2021", "T3T1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "1e1001aca0b3f59ca7addc8b93c142671b67028c7e3e8360559ac11f7cd26b8f", @@ -17883,9 +17883,9 @@ "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b56cfbf3f21121954a8583b13dcbcf7f5dff51c64b3a2cf3edc4f28b216301dd", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "bc545316c3935bd35aabc53395b467a976221bc3eb4bc7d65722ea53c0352c46", "T3T1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "68d37244d32d15ed45bb58d5de13190e4efda76d3687df6f537cc0584ac57108", -"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b4a7500f5e8604fec09cfda56a25cdcd5222d632c0d5a2d6a73b660021c7ee21", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "65a20cc35914964c25bfeb87953e49b54eb04880e8a4185b38da1c7893cfc0dd", -"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "0bdb85efebc3b8f60199f857dde6d98167ca977ff9881a81b1706c3b2ba8bb44", +"T3T1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "ed391de49d754f06c61b09403ace14b9f8c3f16be2b6e880ee75ebe4e5561c97", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "d9782997b85a4b50d4c37da26d1429de63dbd45b9cd87a6931892450123ab3ec", +"T3T1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "131107ea0fcddcb7ad8d373ded7e348b62f35ca379c05ecfb4f4d03457020828", "T3T1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1eb438ae73479824c347fdf888a840169c4c86bffa5d65fd259733e71dae4648", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "e488904453ddb309d21c344a484d28bddfbedc212ecbc211b99ede63dde5a7cf", "T3T1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "b92b6fcb1e6a058ec189e1227ebd08236375441b3aa9955538a49879cb1faa47", @@ -18152,10 +18152,10 @@ "T3T1_de_test_protection_levels.py::test_unlocked": "47f6e4a3a24563faff2e25b3b28377298806494cdd8b9e90f2f3fc144baf9473", "T3T1_de_test_protection_levels.py::test_verify_message_t2": "a35b3bc3572529dff2fbc9c2fb6d7eaa5bedd362330ceebffdd042bffa2524c1", "T3T1_de_test_protection_levels.py::test_wipe_device": "ebb357b41fbdd0d78491a5864c12f347bea2c08f1b513caf30c45f6e612f2883", -"T3T1_de_test_repeated_backup.py::test_repeated_backup": "9a9731f9eb2e1a8a0bfdba9658e0d259e5f6cafe97925b0a9a92f6615d1257c5", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "634885195e35e0001500a39b7c1f9f54ddea9ef1a9fb8b4edab45110559cf24c", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f45eef18c613d9844ab1520d9cf50aa838e446a684e2844af38ca929af3580c1", -"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1e905d67b52d1b6ebad061de36d8125c53c6d66d89840beed96bc53776d7f47e", +"T3T1_de_test_repeated_backup.py::test_repeated_backup": "dde863793cd82145844cf99373ca013f86a646c72ad7a09f94281c207d635c64", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_cancel": "a6359a110a2ce0bbc9f9d7bc89ff2af3cbc9600eb91f28879b3cb7a0672f40d9", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fdd736f2c0a79b50a99fa0fa3feadb27a36998dad130b31404341ee35f30ad47", +"T3T1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "6bcb0adcbd49577d1ae09cd246bf7ae1c2dd60d17f89d0fb75bfd047b96d1d33", "T3T1_de_test_sdcard.py::test_sd_format": "deadd27fee071017c0cc6e1ef67f8b7cffe94502daa8168b042d1301175477b5", "T3T1_de_test_sdcard.py::test_sd_no_format": "61fe71d535c66495b219d4a64d0f08a2ec4831ed555ca261a6ecab56af9a2dac", "T3T1_de_test_sdcard.py::test_sd_protect_unlock": "1cb949fd3c8d1b1169732dd79133fc25aec82caa6baf3cc54a585181cf825cf0", @@ -19181,38 +19181,38 @@ "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "020bd1b8df3974676841ad8a299f672433240b7f50e3447f9d8c52f0edf4a408", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "f055ef228186a1b70a5b97541f4caf0f094905d3904b3131cf4f5f2e7dabf81b", -"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "72edd2c513bb99742064e23b596c79ad867ed6da097ffd3c445645fc2a381148", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e010bcf79ea5995d6855843bcbf3af06e6a0a6be8bfb459729d63833c69c9714", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "4e6c01b71612b39e4f0a5bea2296050c01d5b236723ddfac729e20841b89b4cd", +"T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "b2c2e7716c5cf4c86ea420208306812667a864e3d5499def30b5331de2e8c7de", "T3T1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5133fce02dd881612fb121f919b85166d9edf574147fc18d5ab9812f01a17e3a", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "af5c899e45889f45e9b582e3f25e97a3f4821c55a3ffa3b246462d2f0f63fdf7", -"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "c3c77394b680e235008d1bf233b53621bcdb134c3d2fa7fd87a5707814ad23f0", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "0d3e7eb6389ea988a064d5a9d97c85cbec063751ba7d17c0d2e9cd368ca05fe4", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "c6c9343f64aa3c091a7989985b972cc62e7c4916382f18568c463155ddad8c4b", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "8a30caf810592fc11fd04afb647597587064f12fe571843260d0876d26a99c21", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a26c6a8f38b12743573b9f0c2163eefa49fa7ef1a896be00c6dbd53b370543c6", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "d27521a191186a062201f1c5ac52eb6163c02510047736cbc889ced161f9166f", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "60f423c9e246c86472cfeadd7253033f7c1853ebb2eb583cf449ecff52ff723f", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d4b3e64eaa0b2d06a43294846ccbb09d4fcc0915c51cf5f6de191276e3fa9259", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "7e06212f37fb48a60e95d46a4cc91ef252a1ee354f0ba082178b2a6a4e184abf", -"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "4d923a28d1447c38cecb32964c5ddef6dfbf1476f7b41c884e0b541629d6107c", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f0cf1974b868ec8b4c811cb5e0ce04df59860c0e194e2b390d784a654b3ba8ee", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "0d3e7eb6389ea988a064d5a9d97c85cbec063751ba7d17c0d2e9cd368ca05fe4", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "538e6f1202fee8abe7e3d86fcadc27520b6a2ef864a8d2e7d8aec37a5d111cae", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "e2dac5442b83360440bda5bf903fb0976c228226ce448f3c22676306a85ddf78", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1c5a0fbf469905267e7d3622530879d1ad52a5bd3aee3323b846d92831ed4631", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "974085c3c23e66f27272b53e4996bcfe907d2a9bb163d0f318edd9d915309557", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "b7e097fabb5d5ca4e7dcbf6c208e2925d90502f7dbd3274fb01c7576fddc7431", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "72ae0214d906bc7478bbf30089df9a57551fa4c58032c8d813a098e2c8f2d780", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "d1da48a5cefeaa041b0bac6f91341dfd88776815e335321e403726f28d729530", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "6b2d91c1a924554526e1dbd47509b116161624cc6c5135eae9b96760592df00a", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "c52e8703123c9a4f9f138779671d41550c5aebabef805fb878896b969f3ec0e8", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "7206fad05873b9d8b33423a3a455b9467143a98bb74df89ac626869c6f793e98", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "f5cd4384ddf453e4de4b49cbc1801202d521700ef10959b27215939017f6d2d0", -"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "e02bd958760ac51cdc92bfe98a7fe1bd352053ef022519901f12e342e3cdb5dd", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "bcf2d76c628d19cc576b84ae5ebf584b74b962671a8c0c60037c61f74b41bf23", -"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "adbe9651b01e32224dd318e6f0e2aca6ab83a3b0b283d621607412d95cfe5deb", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "d260a1a71f4dc9e7d25dc2019d93546f31c929e54bad7c8ddd67b412f8beb2f5", +"T3T1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e048a104165c1198a0667ce599250f046fdcdd09e04d996a29b38c736f41ea92", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "805d5daa68c8a9c207a8837ed8e7b83d0e2222fca4d426279fd4bb17cb586de2", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "70e3db8ac70c4180d6e175e1ca9c5f16b4e6feda02bebd089017d50c96a739c1", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "7bfb4b3e48e3ba0bee295da744591c007c17baac9a55734ce08898e675ffcb09", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "f88637763806182278edec7a03716c042b683f5b06e44f3606684ac485b8a231", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb29b0dcf08f0ac969197d48ab9547850846959d09ac215aa5a831b2432e3d3b", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e7748f6864c05f4a81677d0c70baf12c16eb3463f1f6f1f6caf99b89752318ca", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "f26e7ad1434f037331503f436e82780c7f3e4c9d6389b064680f1098d82fb2fc", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "ff9fd97ab6ca805596bba50ff532a5decded71da4888456d6bc4f6aa6992cc4a", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "49149d6d43bbf9fd59f92685569e541fc01a8765e60580518a9b75063bad89ba", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "a23cd874215a2944ef6282f9e396715d3f629b9afa3da0dd534049ce6cc323cd", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "805d5daa68c8a9c207a8837ed8e7b83d0e2222fca4d426279fd4bb17cb586de2", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "cec64e4e13982b23c774d42c9a24115c9c094a2043f62ce552f835d44980ba6f", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "d8b56051cde8e053a2d3c75953bcac3c45fecfc12536ed3baa7a6a42c1166ed4", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2cfc8c32863e15366d6447803e9a31c7e77b42e1dc6c3592d0886c335fb4d008", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d2e46d8d517cf3052a899488f82b9838f4e0c115a3c4bbd59cc1253106eb09ec", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5c385ee9e701a7539fe4cad63dac4f7110faa31fdaf31600ecb97da3e91af1a9", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "66bf4c256e43055c1e889892ad1afd98de2eae4547c54ff511edac752874f530", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "cf6288ddf583f4d6e67752902e4e8d1e4ca7ca29a8898e653a2835433460d9fb", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "14d488f788fef46ec8c9965def8bf52226e42606ee4cabf826c38425a75aa899", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "3b65d06b4b67d723879cb25695e873f5edc2e900522ea686d8ad100dba312cd4", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "36bcdb8807cb4428cfd98d6c940405851dda8aa5eebdbde94e8a585871487de7", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "7ec6f953e50ba3e432980772e1e0bec11d833321785cbfee30d8afeb97de04ec", +"T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "90ec78213094c5b3b41f2b42092dfb514ef177227530e702eaa06dd326664399", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a9139167b7e7b73b535eab11b68f624f6a8ea68da0eddbcb3e33d58856a47f2b", +"T3T1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "35c5ff4c5c5c29e352ad85006dfbf90d842651e509400ff62d974a9caf773120", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "1eb695a3b031f8f14a1ddfe94490a6a1ddf12ac583044b58b78d20f0318e1468", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "540ed9c7f0444ba3ed47293cff06f305ecdae2adc82435b3bd04c3bfca2dbe5e", "T3T1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "870d4a94a01af78e7f88fb3d635a556721103fcf0cc3f7ddffdbdfb88eea9226", @@ -19225,9 +19225,9 @@ "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "67c086b823f76aee0ea4d215d0f9e52cf2aafb44c9f2aff39c86aed33a3308b9", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "97f1a7d378ccb2f4fe73d8b06973998989773cff165e887098ebee7db1d47377", "T3T1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "465fdd641e5a07060123ab705d6ec55fda4dd322a06daeb8bd6bb5559de9bbbe", -"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2c21a92e53c97629706b826d0ba6cff80b12423749fd05b433d270915d98ad33", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "59e6be183a8f8a4ecfb52e832519efffa0d0cce1977eda6a6452514e9b4b391a", -"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b4c92c2509652e900c3f9176f6039c1634345bc59678fb93a96b70601433b4e2", +"T3T1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "e20b84af701538780517d53d073961d8ff5767bde5e9bd81ec8ca11192e28001", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "1aacaea071a015aacb7893eecea8236532bfdf76b81c77d35956dba4dd8c509c", +"T3T1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "a1ac4556cf35b1d1ac37b631676b35f3881162d43975e221776a87ac4dfb0a25", "T3T1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b3b93bdcdc089eeb9666fa68d97766014892366ac460d9d849494cf21c9c5577", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b71fb525c300fd204113534be4e3e7c06425d72d5d2e15065af72a774b0a6220", "T3T1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "88937dff65f3c61b47436aa69bab78b2227de21f177d8e525f195a370c5be157", @@ -19494,10 +19494,10 @@ "T3T1_en_test_protection_levels.py::test_unlocked": "93d9edc9f59c738f0cb083e96f464cae99fccadbd3768a1c2a11258d8eeda9e2", "T3T1_en_test_protection_levels.py::test_verify_message_t2": "7f26c6d11d1b8f56fb290525490665942b25e8ca9357186c5e343f58a18b8860", "T3T1_en_test_protection_levels.py::test_wipe_device": "2dc2c452d2907afc48d1d622ccd3ce692ab3633a0a6e425bdb19014c669a237d", -"T3T1_en_test_repeated_backup.py::test_repeated_backup": "b12734401aedc7756ccf09fe7dfb04bb82b2642a4f8c62893ae63fe90c1e3c24", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "145964c6bf8672f1ad81d4786de757937627a1b64788405d4e681241731e0d93", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "07998e323ac92a6625ec8b0505ec99177cd4ebdc921309320e1a19972565654c", -"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "a1b3eee15f02b6cec258f349d42e2e2d6f7c535d9105b5f05c54465391b73507", +"T3T1_en_test_repeated_backup.py::test_repeated_backup": "7dd2db8eb237d09da5d39c24df80e7bb67c2af387a961d42b68c96d42e819e55", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_cancel": "766873853e735bd57ecd203943a9350f4d89f9f972a2db724ad874c89ea82939", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "35d0ffe626da37ea6784855cd9eb425ef0a1d870c9d23a152367971a09911cd4", +"T3T1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "118cc21dbcaeb3cf9e5ce910768e4b1ac77d41efafc37f692e7a6ccf6782d446", "T3T1_en_test_sdcard.py::test_sd_format": "7be6fb799a7ec5d2a7812c8e0e57b09507ff1a33ae151d05ab8e7c627a2b0532", "T3T1_en_test_sdcard.py::test_sd_no_format": "0ca70b53967f1f1121ab161b1000ffe5d8dcc85528142dbf5732949358a8d6f9", "T3T1_en_test_sdcard.py::test_sd_protect_unlock": "06c5df1542420ab8f04e9e048042b475f28459607a5d8c9bf15bef9d0f320af8", @@ -20523,38 +20523,38 @@ "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "5ff18179cbb0bc013220aabf5ba50bf780f1c2d9dd65305622666fea07583bd8", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "7e2969826adc99e358dbd4547277740eff6038790fb81c66dc2af3d1b481d083", -"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "d467eacfe212e8a7a42f5aa73cb7475282f997b55f99601ac3429969715f9d9f", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "e70137ea17c49aaeaac2769aa60585f62ea5259f406ccfc278509b03d066d7f5", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d46e28ff26b78c00c596333488a894472527cae33f007d23f9d342d02e9ee02f", +"T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "faae5cfa2f53ef68394fabe508f8b6d95b5c5b873532fed2572f8a74bac0c31d", "T3T1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "a44ee27c95d20bca090bfe76b46e7fdbffb1f12802a0a80a87e3e22251b3fe90", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "5bcf14978edb212c74da1b0b2b31e5f6e905b59791c2388455aa0bf7795a02ef", -"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "023ba896d8710b10072030b9a96ba8cd171cad1210f1eb98245b79360313e3c2", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "303d5f8b8e25a8d129d144eee3b52d9be0ada15e6ce6e4ed31f729cb3bb0029b", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "29a3c2fc4310f95f3541b01ce5bcf6eb4fede1450e7d6ffe8781ff344f9968e6", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "77281552d202f793b256c72cb559b261fd125679d198b67e8d4ee1921a0010c8", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ec3ff153ac63edc8ab2bf51189db2c123f96ce3cb49830ba87a768ba520e3786", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "2755f1fdac7d78331f17410296d86bb0af238170ed21416a28b6af4dee3ad106", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "09ed12059d0997eb98184c9341fbe7f50cbad85962d192fe5a5bb434df68bc47", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "140e3f86b43fbe07cb4d7ebb4c0ddc0bd122c7b85fc38fdca394a10394c02c35", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "25bd7e50c98e87aad33534b017ea396d07538e606c161a01ecff94ad3c85b034", -"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "0b680fe903564441ec085869975a68b10e3f45e4d3c16f3e8735118e03c0e03f", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "eb748eec0e1a4c92d0a4c17298cb452bc993b96a0e0bbf346944e6bef8cd7ed4", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "303d5f8b8e25a8d129d144eee3b52d9be0ada15e6ce6e4ed31f729cb3bb0029b", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "ea5eb133806e710b3363355bde10e5a9679ac0c69a5354abf0245ec4c4a841a4", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "b7652babe5b8a851b87db4749e0547e1f3a74f5bcd9f078468170bfa2beb10ac", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d2a230a0a66d6356bdee423034e69b370b8ae0ade478850dd3330091f6ca0365", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "63f0d65d222ec878ba0f94b73652735cd0833e78bb7ea58de270e1c5b92dc39c", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2d49cac8a811a16ea2ba9d987c2e3a3a2e53f8ad2b19f3fa2607d7a2230bd09e", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "f7f383fa8e25bf944d0c671fb701207b6458869d87b69927a741997a0905a511", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "76791cfbf0a40d11b403ad67e71bdf150d24aa58572e94d95c2ac8c9449b1a73", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "bb0422914cf05ed8b92b10b78441f73b2f086eafe14dfddbc07a830c68370dce", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "1937206bd2989e246e0013b468e209fc4addcd6bf486a74e9562db146fad7719", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "6105752f9d9906195764a898ea2d151b448f5e6924f8b0a58182fbd244f3c7ea", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8fb8c916a2efa26be8c2b8ed2cbc16530fd9b10e09f4d5d9ee5ab5d42ddf8c90", -"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8ccd8c6ac6e2b9800c1d63f4afca16279984882cdd3463a9fe434c3d25936f43", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "b5bda9a41c176f6f1b317c7401f65533905e6c2764f23da1931653c48782c640", -"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "25526e25d51f7f1a6b80423041a9a6462775356f04669f1f4f175cf071500ae5", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "b21b9b245a4b8beb1aa97b2ae215c728e4149164240a477e78b5d261c76bf20c", +"T3T1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a7753a8d13c62a226921d061839d3db04304fbaee03e82222d23d6fbdb497bc6", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "1da3ba4f179f60728cbe012c56120b2b1adbfd777ee282b802ef7a44a7c53915", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "5da7f134310e41b1a304a86b2160c00ce2cbeb49e11af3a5f720d0800083f6e6", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d809fa837f26ea930315af0e24ccd13555e13139dd73fbd20d97146e4912de87", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "bdc0c72734662bed63ee63143ecdb343bfd779e3983e96b13ae33816bcbb294a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "bfcc90188c0e704f2b2ee4afd7c616e116493bf0f9ef08aeb006c8eae23e3130", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c86b3f84b601aa162ebfa59e49f7a83ece8b3d03f780ca6cffba01e257f9e631", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "739e3359b4c0d22da0ce39c1949d36e50942fa6855941c19bb5ef8a33b10e63a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "95dc3c3561517b60adb1c2021ea23b9ec11e6b63851e11b4586fbf1762bea32b", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "83bbf55f0a13974b9f7832554aa3019ae16d56555f017ecb5130c7594637e775", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e046d946894f3308666456016642ae88826ddcfb4253e7d90f29e410b3dc14fe", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "1da3ba4f179f60728cbe012c56120b2b1adbfd777ee282b802ef7a44a7c53915", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "1f8540603708c55638db91f3cd3a186e096fcc2d98e34428de0d307f7e9f465a", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "aaafb3665ca17749efcf55d9b865560c9fc7037682cdc6b2eb27a2cb16e93b64", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "530ce8cf762cbb732a1f675fb1380821d8bb8951917d4d74b34047d952354633", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cd39189f226230308eeba0acb69bc61a47b987d14ec467456f6210d396489da8", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4197cae4a38a26edafa852b67130229801a3c4d25863a230dd09ca5182979931", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "00faa2c692dd39e72daa257ad1bd645a2658415b2809d8731b77107dfa6f6ad7", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "52f456554d9c47d36d8c7b4d259b627dcdde0feb9fc4e609e4d7c1fb182b7813", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8aa1ce542df79cc78ac054fb39e02e229bfdb0d0170e3ce41d1443fb90651348", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "d0f14aac0036f48c58b433407f34bbbc16e1f15ecd5fb10cf15aaefcfa54e669", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "e5b21d6b8460d0f2bed297ef9152d75e698a669a73d62987f9eb520d15af9d70", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6fb8edb7fd4a56732819f87a41e88b97569994cbb0f4c7f134b8d1bc92d4114f", +"T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "fd601b7147e8f2e3503ef9336736b7234ecc352df68847f90a0950817571f83e", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "33284c233a9a67675d134734557ee231eb2d264780c3e79baef7ddbf5f482928", +"T3T1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "97ec29b2140ec2346a5177cb35c16594f81df2862f65ba165b641eb960ada2c2", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "365b2f206f400c5a1bd1063aabaf264273df4aa25c08c41a67993e48b12d5795", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c22fe1803518906f0d67bee59f5b97534c63942d2bbc16f567d3e1ca8a27e509", "T3T1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "e4d72560eba9680b3ee4ea7b09021cc95afb9dba779dc820ba4bf8538f369d59", @@ -20567,9 +20567,9 @@ "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "3b3f60eafa6ba55e31231dad66a5dca4243aa5b679282579fa08505d42e78ec3", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "adb553bf323a959262c38562c4e76e9d4257bda2ec3f1eae7107cc7add23c6f3", "T3T1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "4047e344718b64d93dc7e76a77a40799c241e29f5ba84317391b06e5565ef261", -"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b5f1e44295ce5e72bf4c1c53b31c123892b26b8ac878f8e57c19381d1d608f4c", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "3c419c359eb48c217e825704d4dab5f34de5c361a9a70acd57671193274dd3ff", -"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "04750df0b17ff904462a696796c5f2e871606cc1d8086dc8845791b87fb2bcf4", +"T3T1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b28c48bbb5804deb9eb45efb1e7e1dde9c522272585890257300cfa34451266b", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "cbd3d18ee092dbbc35aef9784ce0052e4393fad53635ce940b6460530b273359", +"T3T1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b4cc463379c199cfb9cde5233205f752539db811fac3f7cabcb5e9f3450f15d4", "T3T1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "1a8b04710690b8b55ca712b7aad50b643887e639335b031dc60ae5318a09604a", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d5ded293d44f50ca98484ad38ca49cd90a0662610d9420bd90e275a843cdb27c", "T3T1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "5d72847afacd0203138886c3a6f0fdcf0a7f0ad7ebadf6e2ff606b0c8d654304", @@ -20836,10 +20836,10 @@ "T3T1_es_test_protection_levels.py::test_unlocked": "fe43f2681f087deeb6ecc92501c4eff2d44a30e4ddfa7e2beccde954ae40cc0d", "T3T1_es_test_protection_levels.py::test_verify_message_t2": "1d3351d9da92ff5014ca1a8a75211fa78d938828ac5990987a50fdf6888a2230", "T3T1_es_test_protection_levels.py::test_wipe_device": "bd526c2186cbe66c01f2336f3eb48b7bf9c612c5c906b11395fbc30e5b5d9f94", -"T3T1_es_test_repeated_backup.py::test_repeated_backup": "0e50a0c0f8a4ef569d451f86089157f8e417ecd9a3ad7fcb203aa9a294ee9ff9", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "da65eaa99fcd520acedf285eb0d9094025d35b758c399dd9358bb271c70f411f", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "c4fa4d14bc361d1aac63e4572d2a6e2bd5d966ffb7c6cda598e4fee1e4c9c0f4", -"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "851706810a37e3437230aaa7bad7e8ced0af3c832ddeea889226b574b337fe96", +"T3T1_es_test_repeated_backup.py::test_repeated_backup": "61d1f2b6253c191fbc8f1fe26ec80b8f7af5c31c908337c959cdebd4553fb617", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_cancel": "be00dd99130ddc7df16bb9dbabef10d8dfe9ec6df1751d1bbbea691ae9e150f3", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9ca1fae13fcb52478b18731c36a0b9d35cd4f410fbc992399b6177c98394fa24", +"T3T1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b9904b98abc32002a6b9d07788a8615fde2e3deca0fb373856be17f52e888b17", "T3T1_es_test_sdcard.py::test_sd_format": "72f118c0af96c0efac42421ac361945413a8e956ba1715eb89daf6daa772d5aa", "T3T1_es_test_sdcard.py::test_sd_no_format": "29396b71ce166f434a1a7c8ca2855e0f4432949533cd4fa822b8fe647cf3ee8c", "T3T1_es_test_sdcard.py::test_sd_protect_unlock": "33fe33134d770ff08151fa7fbe46f0c1feb78a65a20dd52e6fd152f5be0237e3", @@ -21865,38 +21865,38 @@ "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "4d9a551b8aedce10efdb327478688229a97c4f25fb9e2ccaaefd66e7dd4967a1", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "e5f9b6583046b56616b2bb019d37e9a33e6192213bb6df858269b9dc6381c1ec", -"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "7adbf5c3587cb8f33dd9b134d6a3a78f48c715e91d0e450726a479e2fa1ce687", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "b03ba7414e247d9da39ebc650e254c4d78dc7ad623a4c6748b61834498c99e35", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6dba1e788d99af0016e42c1592d489d35e1d6f62caf6cbd58f920223b7c0f5a0", +"T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "48dd7de168be2797bb680b6e5627ef93e624e6f3323207358b2c99e6970b6e23", "T3T1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", "T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "24e2895bc6fe62454556e7ffc17c91fb2d482e182682061998a28e751137b96a", -"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "ff73723868fa85968729529443af81ec02c6e1967637c288c43bab6143db8c9d", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "72f4e5e0fd6831120136591ad268306b0406a78a29a50ec146b86bd6210905c3", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2a624a785479bee226ad18857c9e10e5b84183ab9b4befa2e00eeff8d87f1217", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "337ffca4bd75ef71669292eed7ae25aa8fe785e7700fef20a195d5d153d72542", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "7fbb1b5ff9b0140b4b1cdf1e6e1aaecb1d5f83c1503dfe47bda72618e31bebd8", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "40bf5c8194fd746d64044cd95c2c6aa0562e9c755c7e2ebf49523c1331a5dbba", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f4fe1e248b9dc8c9ef059e33305b806da5c55da332797865537839b4bacf6432", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e3f89d8c87d54107d5edc25ee4fff0d70c9e80fa5feacf95cf1d903ae2aa9faf", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "bbc3d28d32dd8d54847cbb02b09edc2451492a3f0e193fe934aff6cc48c6a622", -"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "47b5a7273bb3cccd79817d2710b3f2b6eb302f5e1705aaab8f6d52db89a980c2", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "6204587e397eca636781391239ab6c8ff6699d58c66205ee3d9865a6d50106e4", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "72f4e5e0fd6831120136591ad268306b0406a78a29a50ec146b86bd6210905c3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "f19738ebc18bb66e20a8bce6c9f3fece4d017e9de9392e7de169b42a9aed1db7", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "899c7f67fed9c7fe49ec0256025d3dc9a64e88f8bf1e23a51f1d13ff322bb3b7", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "d079e807d2a814e22fd2f8a6d1a7b4f552855b8604bd5dbdcca70f041a272f01", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "935853a14d308f64b42eb5954232ae957d6790852e6079cdb5cb85897225c3a3", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "4c081398b66d9abfbd614f7212f669a92532cdf42e071393c791d07538b08b41", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7dc9f1d962683da973892213937656f171f6657dc9e71beef56b3ada78b668cc", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "4856c35ff7ee8cb94fe59e49faba8f29fe4e08354931e5aad107d8e3f09e1f83", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "b1d49b8bb76d1decb056feb13335ec9a58024e9d23c41f1dc8aed60d3b261f87", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "95024b5c27826bf4f3ff53bdba6c297550ac8c0e4ee90866ee94642cdab53857", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "cb0734a617bd6cb6154540a0cab05ac6233952807c9e906e2eadadc41676b304", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "52176c4c716fbb836a629029452345a8cefb64790801d80f3610b02d6a0ff782", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "8cc10f59d8f0385a8ef2480110998a9ff10f199f099ab02b2760db0c32af33d5", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "04f89551545d65b9253cd773123ac045f1898947fd667cbfdde280b0786f9552", -"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "629f2b6aef6b2697f165ca244bf142a3fcab1dcb5574062d4a81040a7cb527d5", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "3cfe69addcb64d994be21ac44481334aa4ac032ccc9964b6878ea6376d5acc10", +"T3T1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fe12660d2ecee32ed8059a01a1f3c49871ff6b1bc65f19774c007cbeec115881", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3c9a3e5b8a715953f0fdb94f921d8a456dc9bd0f8d302f6b6b7bc04e949c9a1d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "72b4368fd8f503bf744388e434795732a909cb956d7bb7ad35f4f2546d9b9f20", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "0faa302548491b9370c3c7bc5523cc8b1225bb06b59fa71622776e50a8efb0d0", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d2a9585a2bd83d75f21e2e0d4ca1026b159d6edb91a1ff54f04b67775a8da4c6", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "c2a537f28eac80fcf674c4f2c1f00c82dd618b06d5b030ad86cf5a7f54178c27", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fc949c187da623bf33b5bfdb034d9933d3edd0551b4355f70c6347420989939d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e8a0a40d53e0f359d1b4178bbf14d7a372f4f56918819fdd9ed5806d515e1b7a", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "3c43ed6e7e58eabe8b7db49124c2ec0202fcfc3f50cb15449e24ffeb716c090d", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "08306b13088a2fcca5beaeb6b97c4071a149b399fb607b82e1c57352d4ba78e0", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "7eca9e95d1798c4762fd052d976eb080374b7e8cf96ce1fc01b7f9ad25717bcf", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3c9a3e5b8a715953f0fdb94f921d8a456dc9bd0f8d302f6b6b7bc04e949c9a1d", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "b7543f548ad1a00b2eff274b2d3b8abc610c233a57f2f0c9a57cb02a9096e7e2", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8a6808ee7668b9844b48e7c29e156bc2648657c4f3b906278c542902c03eed07", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "1af889cf5bf93ea3a24390a1fa19845dffb893953ecaa1fbe600ac379c3ab957", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fc4a08e2fc1d61b3e862fb2f85a472027b6a8596267464b997cfc39fd986db8c", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "83256e9fe1da8f7ac78f6cc0d6a153944fcc3967309b48721b4acf2be832a822", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c02dd0f69fca16cf99efe56184f7aabd0a4f12e490aa2a363029c8d3a83fc5cf", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "cd1d24d2b47ca8859c2bfa5bf94139fa27c0b9ab3ad4938776d42417f137b0ca", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "5feb8e79312b5174de550969f394a89d166d527db2d6a0b7855bbc5b5c179020", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "a59b769e92465f00a18354ebbd1fc72ac5de1812f641a2100939e4e018b8219a", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "35dadd6fea63256e24578ee5b78a79c3fc7fddd8f99c5ebbd3c3dda038145d81", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "0ab0c73f4dac97dfb272775e5d89a93a153199b678d2e22d6b709e5fa10da140", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5aa9bf8ade52e7c7909ec98f72a1b6daae8960e0dd364ccebc4f8f437aeab5bd", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "0ba21f8a7dc2554235b60c92981b927d091b0a649f1ddb38bcb2a46b96c163fa", +"T3T1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "b4274e13a05ff1edc4d5b6cc5eb3e8707d218dfc9912e1ef804f7520600ef16b", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a745724fa11eb6052ebcf1165182d77b2f3ba6d3e13426ffc4d36e3f4daeb518", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "855b6597092938e14055cc78e88ad5baccb14d6b573a2da27fc1a9089dd40584", "T3T1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2dcdc176124490bcb621f1e0e165a24fe04650d8eda69755330f559eebdebf19", @@ -21909,9 +21909,9 @@ "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "630dd24e47c14dce4cca477909f70b38921e4787c0865787b7ec3e11d87c785c", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "af4d8889d269d0bc5bed1e1530c055619a3ed4fb16077900f858ee5b7326bc18", "T3T1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ee1a08bb27a75e84223347a2d9f5c364328f94283b79d133b4b9239a1eb1ae30", -"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "4b929009e0e2893c7bbbc23fa107b9031a62c4ee4cd4c88ce346eb34e4dcd708", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f603c8994bc5b44c99749f743345366b805d575ce47f6437afe1d3503da9b433", -"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "421c29861fdb209a3a6cf0ca6eabacb0c89ee09d136056a3c5f9246a186d0336", +"T3T1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "2a7b2533d3aad3a703f11a18efef6a75b877b6fae0fca0203df53a7723ca06f6", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "35fb3bcbcf695e36c43e863c11be1485a23b26cbe5453dc63e603b3888f2d1f6", +"T3T1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "9bd10fb917e2c5cc3f0588d9639a2d15a20527ee4300b0b8fea23de4fd22540b", "T3T1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "469bec5aab906736578bbc249ff3e6eda95f1c7e29e6729f69acaa2cfa4d565b", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "f2ee63ccc245cc4ac50456bbb3b6d3f0769ca02923ce0e31b3cc64428d54c60b", "T3T1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "6355a8725088cdbb252010ebe97897b4f8f0e6f783001ab3b4155292d817fa8b", @@ -22178,10 +22178,10 @@ "T3T1_fr_test_protection_levels.py::test_unlocked": "41aff29e00f12334bc5f4404403a86399c0bc3f3c7aa36619d13247918280d8e", "T3T1_fr_test_protection_levels.py::test_verify_message_t2": "c7fb9d00a7a5519c050401b6b1181aafb2cee07aac911a1f69ca19bf4926bf45", "T3T1_fr_test_protection_levels.py::test_wipe_device": "53279b977255d6d8874a592a5241f6a113e96442f871e96522ed8bf12fb05586", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "54de4457f35aaa869d5f45f1acbddab22962eab75ee82f3dbd918c041ebb77ad", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "72e12e6e6aeb25c0452cc502b6533be596ccdfe516280b9682573e29a3468abc", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "41537f31c77038bead3a8a630715b9e79009c75aaf71be8adc8b77cb6a10d7e4", -"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "e37628bd6f4856fed629fd406c6130a01833e49183e729cd4af49b403c784f71", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup": "f723b24f7710e6dcf2e647c51739507173db327c763efa9de421b9ecb50edfb4", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "f85117cf512774123c0d76f011423927a958856db577d33cb6a12e838fbb4b96", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "9ee89f8aa08b3fed5791f0f777060fc01bca4217ed77bdf5a61997044b368f6f", +"T3T1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d660141ef88b49b7b18b1912f66c78329eeeaf780ca7113c5883b5d141e4dd2a", "T3T1_fr_test_sdcard.py::test_sd_format": "d47e1612b47b28186d3517ccc686a4ddd4b60557c41446373e3f0f97f93d0105", "T3T1_fr_test_sdcard.py::test_sd_no_format": "b2dd511b9d011aaaa01dca823466fa2dcf42a79b319f85c5a07b0e5ba99003e2", "T3T1_fr_test_sdcard.py::test_sd_protect_unlock": "4ebf7f7adc1ba12f1977c97573f1489ec6d58b8e71d67213d521f1c790d4fabf", @@ -22240,9 +22240,9 @@ "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptTempora-b3d21f4a": "e997cc958f7d7d262604e7728469f7a6952b60c0b1b3520252e3d58e49b41e66", "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.Strict-Safety-f1ff9c26": "a0879b23f779049abf46c42608ee7b841a0b8dc4ac83b85ac83a83e992068165", "T3T1_en_test_shamir_persistence.py::test_abort": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", -"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "1c5d122bf2962438ac71eb20f0fd000494bc28a89c59aa397136da62d8d70901", -"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "6f24e04532cef5a0316795e18ebffe0e45cd5a52044e58d4bbee11006834cf56", -"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "d75e7d84af3f78b4df3cd781b0d65d0dfba1ea6f31dcd6cdfce8bc4fb1456374", +"T3T1_en_test_shamir_persistence.py::test_recovery_multiple_resets": "ace0e626ddf56eeac716327fb92ea7a4bdaa155488f47d462ea371724d36acfc", +"T3T1_en_test_shamir_persistence.py::test_recovery_on_old_wallet": "89a5417c0f4dbdc2932ff705425306707d329bc65f8f9de5652f803c5d18a493", +"T3T1_en_test_shamir_persistence.py::test_recovery_single_reset": "1ee4f62b9967ed9a41575a96b1c115697a741dd3891953e4a96dfff800be203a", "T3T1_en_test_wipe_code.py::test_wipe_code_activate_core": "aa4da89845a41383de2a091315a54b90996c1f71692adcfaa69886c35c4ad261" } } From c86dfaa00789f28af8a8f8f342b15e8844c20b41 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 30 Aug 2024 10:02:32 +0200 Subject: [PATCH 571/626] fix(docs): generate pipeline docs [no changelog] --- docs/ci/jobs.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/ci/jobs.md b/docs/ci/jobs.md index ca21d7d127..7a57340f24 100644 --- a/docs/ci/jobs.md +++ b/docs/ci/jobs.md @@ -308,7 +308,7 @@ Consists of **2 jobs** below: --- ## DEPLOY stage - [deploy.yml](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml) -Consists of **14 jobs** below: +Consists of **13 jobs** below: ### [release core fw regular deploy](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L5) @@ -336,6 +336,4 @@ Consists of **14 jobs** below: ### [sync emulators to aws](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L304) -### [common sync](https://github.com/trezor/trezor-firmware/blob/master/ci/deploy.yml#L330) - --- From 6caafd6642bc0968d0865f5870539d34f7035717 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Fri, 30 Aug 2024 09:21:23 +0200 Subject: [PATCH 572/626] fix(core/bootloader): fix T3B1 bootloader UI - unsafe screen, boot image --- core/SConscript.bootloader | 4 ++++ core/SConscript.bootloader_emu | 3 +++ core/embed/bootloader/.changelog.d/4140.fixed | 1 + core/embed/bootloader/bootui.c | 4 ++-- core/embed/rust/Cargo.toml | 2 ++ core/embed/rust/src/ui/model_tr/bootloader/mod.rs | 2 +- 6 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 core/embed/bootloader/.changelog.d/4140.fixed diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index 8eb4913013..dd0060af83 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -261,6 +261,10 @@ def cargo_build(): features = ["model_mercury"] else: features = ["model_tt"] + + if TREZOR_MODEL in ("R",): + features.append("ui_empty_lock") + features.append("ui") features.append("bootloader") features.extend(FEATURES_AVAILABLE) diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 692224013b..789185f24f 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -277,6 +277,9 @@ def cargo_build(): else: features = ["model_tt"] + if TREZOR_MODEL in ("R",): + features.append("ui_empty_lock") + if NEW_RENDERING: features.append('new_rendering') diff --git a/core/embed/bootloader/.changelog.d/4140.fixed b/core/embed/bootloader/.changelog.d/4140.fixed new file mode 100644 index 0000000000..8f13291fe6 --- /dev/null +++ b/core/embed/bootloader/.changelog.d/4140.fixed @@ -0,0 +1 @@ +[T3B1] UI adjustments: fix icon on warning screen, replace empty logo with full during boot diff --git a/core/embed/bootloader/bootui.c b/core/embed/bootloader/bootui.c index 15d74d4c15..b1d446aec4 100644 --- a/core/embed/bootloader/bootui.c +++ b/core/embed/bootloader/bootui.c @@ -52,7 +52,7 @@ #define COLOR_BL_GRAY COLOR_BL_FG #endif -#ifndef TREZOR_MODEL_R +#if !defined TREZOR_MODEL_R && !defined TREZOR_MODEL_T3B1 #define BOOT_WAIT_HEIGHT 25 #define BOOT_WAIT_Y_TOP (DISPLAY_RESY - BOOT_WAIT_HEIGHT) #else @@ -95,7 +95,7 @@ static void ui_screen_boot_old(const vendor_header *const vhdr, display_bar(0, 0, DISPLAY_RESX, DISPLAY_RESY, boot_background); -#ifndef TREZOR_MODEL_R +#if !defined TREZOR_MODEL_R && !defined TREZOR_MODEL_T3B1 int image_top = show_string ? 30 : (DISPLAY_RESY - 120) / 2; // check whether vendor image is 120x120 if (memcmp(vimg, "TOIF\x78\x00\x78\x00", 8) == 0) { diff --git a/core/embed/rust/Cargo.toml b/core/embed/rust/Cargo.toml index 4cd56c1153..77091f4326 100644 --- a/core/embed/rust/Cargo.toml +++ b/core/embed/rust/Cargo.toml @@ -28,6 +28,7 @@ ui_jpeg_decoder = ["jpeg"] ui_image_buffer = [] ui_color_32bit = [] ui_overlay = [] +ui_empty_lock = [] new_rendering = [] bootloader = [] button = [] @@ -64,6 +65,7 @@ test = [ "ui_blurring", "ui_image_buffer", "ui_overlay", + "ui_empty_lock", "universal_fw", ] universal_fw = [] diff --git a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs b/core/embed/rust/src/ui/model_tr/bootloader/mod.rs index 0b0307ca7a..fc5fa225fa 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/mod.rs @@ -321,7 +321,7 @@ impl UIFeaturesBootloader for ModelTRFeatures { #[cfg(not(feature = "new_rendering"))] display::rect_fill(SCREEN, BLD_BG); - let mut frame = WelcomeScreen::new(true); + let mut frame = WelcomeScreen::new(cfg!(ui_empty_lock)); show(&mut frame, false); } From 167f567ab0bf8b7014d8a128374ebfa31134bb97 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Mon, 2 Sep 2024 09:17:58 +0200 Subject: [PATCH 573/626] fix(core/prodtest): T3B1 welcome screen changed to full white screen to match T2B1 --- core/embed/prodtest/.changelog.d/4140.changed | 1 + core/embed/prodtest/main.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 core/embed/prodtest/.changelog.d/4140.changed diff --git a/core/embed/prodtest/.changelog.d/4140.changed b/core/embed/prodtest/.changelog.d/4140.changed new file mode 100644 index 0000000000..490a422bb7 --- /dev/null +++ b/core/embed/prodtest/.changelog.d/4140.changed @@ -0,0 +1 @@ +[T3B1] Changed welcome screen to show full white display diff --git a/core/embed/prodtest/main.c b/core/embed/prodtest/main.c index 15484f4aa6..2d35986e05 100644 --- a/core/embed/prodtest/main.c +++ b/core/embed/prodtest/main.c @@ -195,7 +195,7 @@ static void draw_border(int width, int padding) { } static void draw_welcome_screen(void) { -#if TREZOR_MODEL_R +#if defined TREZOR_MODEL_R || defined TREZOR_MODEL_T3B1 display_bar(0, 0, DISPLAY_RESX, DISPLAY_RESY, 0xFFFF); display_refresh(); #else From 7c8be6f0eab7d2a4ec2192ceace52328c94f209c Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 30 Jul 2024 00:12:28 +0200 Subject: [PATCH 574/626] fix(core/ui/mercury): FIDO2 layouts --- core/.changelog.d/3797.fixed | 1 + core/embed/rust/librust_qstr.h | 6 + .../generated/translated_string.rs | 33 +++ .../rust/src/ui/component/text/paragraphs.rs | 13 + .../src/ui/model_mercury/component/button.rs | 44 +-- .../src/ui/model_mercury/component/fido.rs | 257 ++++-------------- .../ui/model_mercury/component/fido_icons.rs | 70 +++-- .../component/fido_icons.rs.mako | 12 +- .../component/keyboard/passphrase.rs | 6 +- .../component/keyboard/slip39.rs | 5 +- .../src/ui/model_mercury/component/mod.rs | 7 +- .../model_mercury/component/vertical_menu.rs | 153 ++++++++--- .../src/ui/model_mercury/flow/confirm_fido.rs | 202 ++++++++++++++ .../rust/src/ui/model_mercury/flow/mod.rs | 6 +- .../embed/rust/src/ui/model_mercury/layout.rs | 64 +---- .../ui/model_mercury/res/fido/icon_apple.toif | Bin 697 -> 344 bytes .../ui/model_mercury/res/fido/icon_aws.toif | Bin 1264 -> 619 bytes .../model_mercury/res/fido/icon_binance.toif | Bin 555 -> 330 bytes .../res/fido/icon_bitbucket.toif | Bin 865 -> 451 bytes .../model_mercury/res/fido/icon_bitfinex.toif | Bin 1151 -> 537 bytes .../res/fido/icon_bitwarden.toif | Bin 617 -> 328 bytes .../res/fido/icon_cloudflare.toif | Bin 615 -> 294 bytes .../model_mercury/res/fido/icon_coinbase.toif | Bin 568 -> 246 bytes .../model_mercury/res/fido/icon_dashlane.toif | Bin 2158 -> 922 bytes .../model_mercury/res/fido/icon_dropbox.toif | Bin 852 -> 361 bytes .../ui/model_mercury/res/fido/icon_duo.toif | Bin 463 -> 253 bytes .../model_mercury/res/fido/icon_facebook.toif | Bin 747 -> 393 bytes .../model_mercury/res/fido/icon_fastmail.toif | Bin 1185 -> 597 bytes .../model_mercury/res/fido/icon_fedora.toif | Bin 1185 -> 638 bytes .../ui/model_mercury/res/fido/icon_gandi.toif | Bin 1237 -> 576 bytes .../model_mercury/res/fido/icon_gemini.toif | Bin 1042 -> 548 bytes .../model_mercury/res/fido/icon_github.toif | Bin 1092 -> 540 bytes .../model_mercury/res/fido/icon_gitlab.toif | Bin 952 -> 501 bytes .../model_mercury/res/fido/icon_google.toif | Bin 1071 -> 514 bytes .../model_mercury/res/fido/icon_invity.toif | Bin 136 -> 106 bytes .../model_mercury/res/fido/icon_keeper.toif | Bin 1507 -> 691 bytes .../model_mercury/res/fido/icon_kraken.toif | Bin 654 -> 334 bytes .../res/fido/icon_login.gov.toif | Bin 651 -> 340 bytes .../res/fido/icon_microsoft.toif | Bin 165 -> 127 bytes .../model_mercury/res/fido/icon_mojeid.toif | Bin 1330 -> 658 bytes .../res/fido/icon_namecheap.toif | Bin 867 -> 441 bytes .../model_mercury/res/fido/icon_proton.toif | Bin 587 -> 356 bytes .../res/fido/icon_slushpool.toif | Bin 1021 -> 536 bytes .../model_mercury/res/fido/icon_stripe.toif | Bin 668 -> 350 bytes .../model_mercury/res/fido/icon_tutanota.toif | Bin 646 -> 321 bytes core/mocks/trezortranslate_keys.pyi | 6 + core/src/trezor/ui/layouts/mercury/fido.py | 14 +- core/tools/build_icons.py | 24 +- core/translations/en.json | 6 + core/translations/order.json | 8 +- core/translations/signatures.json | 6 +- .../webauthn/test_msg_webauthn.py | 143 +++++----- tests/input_flows.py | 20 ++ tests/ui_tests/fixtures.json | 10 +- 54 files changed, 625 insertions(+), 491 deletions(-) create mode 100644 core/.changelog.d/3797.fixed create mode 100644 core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs diff --git a/core/.changelog.d/3797.fixed b/core/.changelog.d/3797.fixed new file mode 100644 index 0000000000..a298e7f169 --- /dev/null +++ b/core/.changelog.d/3797.fixed @@ -0,0 +1 @@ +[T3T1] Redesigned FIDO2 UI. diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index 831b1f6ce7..a06861a1e7 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -301,6 +301,7 @@ static void _librust_qstrs(void) { MP_QSTR_instructions__learn_more; MP_QSTR_instructions__shares_continue_with_x_template; MP_QSTR_instructions__shares_start_with_1; + MP_QSTR_instructions__swipe_down; MP_QSTR_instructions__swipe_horizontally; MP_QSTR_instructions__swipe_up; MP_QSTR_instructions__tap_to_confirm; @@ -1008,15 +1009,20 @@ static void _librust_qstrs(void) { MP_QSTR_fido__does_not_belong; MP_QSTR_fido__erase_credentials; MP_QSTR_fido__export_credentials; + MP_QSTR_fido__more_credentials; MP_QSTR_fido__not_registered; MP_QSTR_fido__not_registered_with_template; MP_QSTR_fido__please_enable_pin_protection; + MP_QSTR_fido__select_intro; MP_QSTR_fido__title_authenticate; + MP_QSTR_fido__title_credential_details; + MP_QSTR_fido__title_for_authentication; MP_QSTR_fido__title_import_credential; MP_QSTR_fido__title_list_credentials; MP_QSTR_fido__title_register; MP_QSTR_fido__title_remove_credential; MP_QSTR_fido__title_reset; + MP_QSTR_fido__title_select_credential; MP_QSTR_fido__title_u2f_auth; MP_QSTR_fido__title_u2f_register; MP_QSTR_fido__title_verify_user; diff --git a/core/embed/rust/src/translations/generated/translated_string.rs b/core/embed/rust/src/translations/generated/translated_string.rs index 6414a63558..e898761831 100644 --- a/core/embed/rust/src/translations/generated/translated_string.rs +++ b/core/embed/rust/src/translations/generated/translated_string.rs @@ -1358,6 +1358,17 @@ pub enum TranslatedString { reset__slip39_checklist_more_info_threshold = 957, // "The threshold sets the minumum number of shares needed to recover your wallet." reset__slip39_checklist_more_info_threshold_example_template = 958, // "If you set {0} out of {1} shares, you'll need {2} backup shares to recover your wallet." passphrase__continue_with_empty_passphrase = 959, // "Continue with empty passphrase?" + #[cfg(feature = "universal_fw")] + fido__more_credentials = 960, // "More credentials" + #[cfg(feature = "universal_fw")] + fido__select_intro = 961, // "Select the credential that you would like to use for authentication." + #[cfg(feature = "universal_fw")] + fido__title_for_authentication = 962, // "for authentication" + #[cfg(feature = "universal_fw")] + fido__title_select_credential = 963, // "Select credential" + instructions__swipe_down = 964, // "Swipe down" + #[cfg(feature = "universal_fw")] + fido__title_credential_details = 965, // "Credential details" } impl TranslatedString { @@ -2710,6 +2721,17 @@ impl TranslatedString { Self::reset__slip39_checklist_more_info_threshold => "The threshold sets the minumum number of shares needed to recover your wallet.", Self::reset__slip39_checklist_more_info_threshold_example_template => "If you set {0} out of {1} shares, you'll need {2} backup shares to recover your wallet.", Self::passphrase__continue_with_empty_passphrase => "Continue with empty passphrase?", + #[cfg(feature = "universal_fw")] + Self::fido__more_credentials => "More credentials", + #[cfg(feature = "universal_fw")] + Self::fido__select_intro => "Select the credential that you would like to use for authentication.", + #[cfg(feature = "universal_fw")] + Self::fido__title_for_authentication => "for authentication", + #[cfg(feature = "universal_fw")] + Self::fido__title_select_credential => "Select credential", + Self::instructions__swipe_down => "Swipe down", + #[cfg(feature = "universal_fw")] + Self::fido__title_credential_details => "Credential details", } } @@ -4063,6 +4085,17 @@ impl TranslatedString { Qstr::MP_QSTR_reset__slip39_checklist_more_info_threshold => Some(Self::reset__slip39_checklist_more_info_threshold), Qstr::MP_QSTR_reset__slip39_checklist_more_info_threshold_example_template => Some(Self::reset__slip39_checklist_more_info_threshold_example_template), Qstr::MP_QSTR_passphrase__continue_with_empty_passphrase => Some(Self::passphrase__continue_with_empty_passphrase), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_fido__more_credentials => Some(Self::fido__more_credentials), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_fido__select_intro => Some(Self::fido__select_intro), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_fido__title_for_authentication => Some(Self::fido__title_for_authentication), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_fido__title_select_credential => Some(Self::fido__title_select_credential), + Qstr::MP_QSTR_instructions__swipe_down => Some(Self::instructions__swipe_down), + #[cfg(feature = "universal_fw")] + Qstr::MP_QSTR_fido__title_credential_details => Some(Self::fido__title_credential_details), _ => None, } } diff --git a/core/embed/rust/src/ui/component/text/paragraphs.rs b/core/embed/rust/src/ui/component/text/paragraphs.rs index c66392def3..e2674caf72 100644 --- a/core/embed/rust/src/ui/component/text/paragraphs.rs +++ b/core/embed/rust/src/ui/component/text/paragraphs.rs @@ -90,6 +90,19 @@ where &mut self.source } + pub fn area(&self) -> Rect { + let mut result: Option<Rect> = None; + Self::foreach_visible( + &self.source, + &self.visible, + self.offset, + &mut |layout, _content| { + result = result.map_or(Some(layout.bounds), |r| Some(r.union(layout.bounds))); + }, + ); + result.unwrap_or(self.area) + } + /// Update bounding boxes of paragraphs on the current page. First determine /// the number of visible paragraphs and their sizes. These are then /// arranged according to the layout. diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 1cf6c53a2f..1b59be31ee 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -4,9 +4,7 @@ use crate::{ strutil::TString, time::Duration, ui::{ - component::{ - Component, ComponentExt, Event, EventCtx, FixedHeightBar, MsgMap, Split, TimerToken, - }, + component::{Component, Event, EventCtx, TimerToken}, display::{self, toif::Icon, Color, Font}, event::TouchEvent, geometry::{Alignment, Alignment2D, Insets, Offset, Point, Rect}, @@ -139,10 +137,9 @@ impl Button { matches!(self.state, State::Disabled) } - pub fn set_content(&mut self, ctx: &mut EventCtx, content: ButtonContent) { + pub fn set_content(&mut self, content: ButtonContent) { if self.content != content { - self.content = content; - ctx.request_paint(); + self.content = content } } @@ -454,41 +451,6 @@ pub struct ButtonStyle { pub background_color: Color, } -impl Button { - pub fn cancel_confirm( - left: Button, - right: Button, - left_is_small: bool, - ) -> CancelConfirm< - impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, - impl Fn(ButtonMsg) -> Option<CancelConfirmMsg>, - > { - let width = if left_is_small { - theme::BUTTON_WIDTH - } else { - 0 - }; - theme::button_bar(Split::left( - width, - theme::BUTTON_SPACING, - left.map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Cancelled) - }), - right.map(|msg| { - (matches!(msg, ButtonMsg::Clicked)).then(|| CancelConfirmMsg::Confirmed) - }), - )) - } -} - -#[derive(Copy, Clone)] -pub enum CancelConfirmMsg { - Cancelled, - Confirmed, -} - -type CancelConfirm<F0, F1> = FixedHeightBar<Split<MsgMap<Button, F0>, MsgMap<Button, F1>>>; - #[derive(Clone, Copy)] pub enum CancelInfoConfirmMsg { Cancelled, diff --git a/core/embed/rust/src/ui/model_mercury/component/fido.rs b/core/embed/rust/src/ui/model_mercury/component/fido.rs index 6aa9b8aa8e..92bcbe344e 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido.rs @@ -1,251 +1,88 @@ use crate::{ strutil::TString, ui::{ - component::{image::Image, Component, Event, EventCtx, Label, Swipe, SwipeDirection}, - display, - geometry::{Insets, Rect}, - model_mercury::component::{fido_icons::get_fido_icon_data, theme, ScrollBar}, - shape, + component::{ + image::Image, + text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs}, + Component, Event, EventCtx, + }, + geometry::{Insets, Offset, Rect}, + model_mercury::component::{fido_icons::get_fido_icon_data, theme}, shape::Renderer, }, }; -use super::CancelConfirmMsg; -use core::cell::Cell; - -const ICON_HEIGHT: i16 = 70; -const SCROLLBAR_INSET_TOP: i16 = 5; -const SCROLLBAR_HEIGHT: i16 = 10; -const APP_NAME_PADDING: i16 = 12; -const APP_NAME_HEIGHT: i16 = 30; - -pub enum FidoMsg { - Confirmed(usize), - Cancelled, -} - -pub struct FidoConfirm<F: Fn(usize) -> TString<'static>, U> { - page_swipe: Swipe, - app_name: Label<'static>, - account_name: Label<'static>, - icon: Image, - /// Function/closure that will return appropriate page on demand. +pub struct FidoCredential<F: Fn() -> TString<'static>> { + app_icon: Option<Image>, + text: Paragraphs<ParagraphVecShort<'static>>, get_account: F, - scrollbar: ScrollBar, - fade: Cell<bool>, - controls: U, } -impl<F, U> FidoConfirm<F, U> -where - F: Fn(usize) -> TString<'static>, - U: Component<Msg = CancelConfirmMsg>, -{ +impl<F: Fn() -> TString<'static>> FidoCredential<F> { + const ICON_SIZE: i16 = 32; + const SPACING: i16 = 8; + pub fn new( + icon_name: Option<TString<'static>>, app_name: TString<'static>, get_account: F, - page_count: usize, - icon_name: Option<TString<'static>>, - controls: U, ) -> Self { - let icon_data = get_fido_icon_data(icon_name); - - // Preparing scrollbar and setting its page-count. - let mut scrollbar = ScrollBar::horizontal(); - scrollbar.set_count_and_active_page(page_count, 0); - - // Preparing swipe component and setting possible initial - // swipe directions according to number of pages. - let mut page_swipe = Swipe::horizontal(); - page_swipe.allow_right = scrollbar.has_previous_page(); - page_swipe.allow_left = scrollbar.has_next_page(); - - // NOTE: This is an ugly hotfix for the erroneous behavior of - // TextLayout used in the account_name Label. In this - // particular case, TextLayout calculates the wrong height of - // fitted text that's higher than the TextLayout bound itself. - // - // The following two lines should be swapped when the problem with - // TextLayout is fixed. - // - // See also, continuation of this hotfix in the place() function. - - // let current_account = get_account(scrollbar.active_page); - let current_account = "".into(); - + let app_icon = get_fido_icon_data(icon_name).map(Image::new); + let text = ParagraphVecShort::from_iter([ + Paragraph::new(&theme::TEXT_SUB_GREY, app_name), + Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, (get_account)()), + ]) + .into_paragraphs(); Self { - app_name: Label::centered(app_name, theme::TEXT_DEMIBOLD), - account_name: Label::centered(current_account, theme::TEXT_DEMIBOLD), - page_swipe, - icon: Image::new(icon_data), + app_icon, + text, get_account, - scrollbar, - fade: Cell::new(false), - controls, } } - - fn on_page_swipe(&mut self, ctx: &mut EventCtx, swipe: SwipeDirection) { - // Change the page number. - match swipe { - SwipeDirection::Left if self.scrollbar.has_next_page() => { - self.scrollbar.go_to_next_page(); - } - SwipeDirection::Right if self.scrollbar.has_previous_page() => { - self.scrollbar.go_to_previous_page(); - } - _ => {} // page did not change - }; - - // Disable swipes on the boundaries. Not allowing carousel effect. - self.page_swipe.allow_right = self.scrollbar.has_previous_page(); - self.page_swipe.allow_left = self.scrollbar.has_next_page(); - - let current_account = (self.get_account)(self.active_page()); - self.account_name.set_text(current_account); - - // Redraw the page. - ctx.request_paint(); - - // Reset backlight to normal level on next paint. - self.fade.set(true); - } - - fn active_page(&self) -> usize { - self.scrollbar.active_page - } } -impl<F, U> Component for FidoConfirm<F, U> -where - F: Fn(usize) -> TString<'static>, - U: Component<Msg = CancelConfirmMsg>, -{ - type Msg = FidoMsg; +impl<F: Fn() -> TString<'static>> Component for FidoCredential<F> { + type Msg = (); fn place(&mut self, bounds: Rect) -> Rect { - self.page_swipe.place(bounds); - - // Place the control buttons. - let controls_area = self.controls.place(bounds); - - // Get the image and content areas. - let content_area = bounds.inset(Insets::bottom(controls_area.height())); - let (image_area, content_area) = content_area.split_top(ICON_HEIGHT); - - // In case of showing a scrollbar, getting its area and placing it. - let remaining_area = if self.scrollbar.page_count > 1 { - let (scrollbar_area, remaining_area) = content_area - .inset(Insets::top(SCROLLBAR_INSET_TOP)) - .split_top(SCROLLBAR_HEIGHT); - self.scrollbar.place(scrollbar_area); - remaining_area - } else { - content_area - }; - - // Place the icon image. - self.icon.place(image_area); - - // Place the text labels. - let (app_name_area, account_name_area) = remaining_area - .inset(Insets::top(APP_NAME_PADDING)) - .split_top(APP_NAME_HEIGHT); - - self.app_name.place(app_name_area); - self.account_name.place(account_name_area); - - // NOTE: This is a hotfix used due to the erroneous behavior of TextLayout. - // This line should be removed when the problem with TextLayout is fixed. - // See also the code for FidoConfirm::new(). - self.account_name - .set_text((self.get_account)(self.scrollbar.active_page)); - + let icon_size = self.app_icon.map_or(Offset::zero(), |i| i.toif.size()); + let (icon_area, text_area) = bounds.split_top(icon_size.y); + let text_area = text_area.inset(Insets::top(Self::SPACING)); + self.text.place(text_area); + let text_height = self.text.area().height(); + let vertical_space = bounds.height() - icon_size.y - Self::SPACING - text_height; + let off = Offset::y(vertical_space / 2); + + let icon_area = icon_area.with_width(icon_size.x).translate(off); + let text_area = text_area.with_height(text_height).translate(off); + self.app_icon.place(icon_area); + self.text.place(text_area); bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - if let Some(swipe) = self.page_swipe.event(ctx, event) { - // Swipe encountered, update the page. - self.on_page_swipe(ctx, swipe); - } - if let Some(msg) = self.controls.event(ctx, event) { - // Some button was clicked, send results. - match msg { - CancelConfirmMsg::Confirmed => return Some(FidoMsg::Confirmed(self.active_page())), - CancelConfirmMsg::Cancelled => return Some(FidoMsg::Cancelled), - } + if let Event::Attach(_) = event { + self.text.inner_mut()[1].update((self.get_account)()); + ctx.request_paint(); } + self.app_icon.event(ctx, event); + self.text.event(ctx, event); None } fn paint(&mut self) { - self.icon.paint(); - self.controls.paint(); - self.app_name.paint(); - - if self.scrollbar.page_count > 1 { - self.scrollbar.paint(); - } - - // Erasing the old text content before writing the new one. - let account_name_area = self.account_name.area(); - let real_area = account_name_area - .with_height(account_name_area.height() + self.account_name.font().text_baseline() + 1); - display::rect_fill(real_area, theme::BG); - - // Account name is optional. - // Showing it only if it differs from app name. - // (Dummy requests usually have some text as both app_name and account_name.) - let account_name = self.account_name.text(); - let app_name = self.app_name.text(); - if !account_name.is_empty() && account_name != app_name { - self.account_name.paint(); - } - - if self.fade.take() { - // Note that this is blocking and takes some time. - display::fade_backlight(theme::backlight::get_backlight_normal()); - } + unimplemented!() } fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - self.icon.render(target); - self.controls.render(target); - self.app_name.render(target); - - if self.scrollbar.page_count > 1 { - self.scrollbar.render(target); - } - - // Erasing the old text content before writing the new one. - let account_name_area = self.account_name.area(); - let real_area = account_name_area - .with_height(account_name_area.height() + self.account_name.font().text_baseline() + 1); - shape::Bar::new(real_area).with_bg(theme::BG).render(target); - - // Account name is optional. - // Showing it only if it differs from app name. - // (Dummy requests usually have some text as both app_name and account_name.) - let account_name = self.account_name.text(); - let app_name = self.app_name.text(); - if !account_name.is_empty() && account_name != app_name { - self.account_name.render(target); - } - - if self.fade.take() { - // Note that this is blocking and takes some time. - display::fade_backlight(theme::backlight::get_backlight_normal()); - } + self.app_icon.render(target); + self.text.render(target); } } #[cfg(feature = "ui_debug")] -impl<F, T> crate::trace::Trace for FidoConfirm<F, T> -where - F: Fn(usize) -> TString<'static>, -{ +impl<F: Fn() -> TString<'static>> crate::trace::Trace for FidoCredential<F> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { - t.component("FidoConfirm"); + t.component("FidoCredential"); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs index 9818292212..77eeabfbe1 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs +++ b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs @@ -37,48 +37,44 @@ const ICON_PROTON: &[u8] = include_res!("model_mercury/res/fido/icon_proton.toif const ICON_SLUSHPOOL: &[u8] = include_res!("model_mercury/res/fido/icon_slushpool.toif"); const ICON_STRIPE: &[u8] = include_res!("model_mercury/res/fido/icon_stripe.toif"); const ICON_TUTANOTA: &[u8] = include_res!("model_mercury/res/fido/icon_tutanota.toif"); -/// Default icon when app does not have its own -const ICON_WEBAUTHN: &[u8] = include_res!("model_mercury/res/fido/icon_webauthn.toif"); /// Translates icon name into its data. -/// Returns default `ICON_WEBAUTHN` when the icon is not found or name not -/// supplied. -pub fn get_fido_icon_data(icon_name: Option<TString<'static>>) -> &'static [u8] { +pub fn get_fido_icon_data(icon_name: Option<TString<'static>>) -> Option< &'static [u8]> { if let Some(icon_name) = icon_name { icon_name.map(|c| match c { - "apple" => ICON_APPLE, - "aws" => ICON_AWS, - "binance" => ICON_BINANCE, - "bitbucket" => ICON_BITBUCKET, - "bitfinex" => ICON_BITFINEX, - "bitwarden" => ICON_BITWARDEN, - "cloudflare" => ICON_CLOUDFLARE, - "coinbase" => ICON_COINBASE, - "dashlane" => ICON_DASHLANE, - "dropbox" => ICON_DROPBOX, - "duo" => ICON_DUO, - "facebook" => ICON_FACEBOOK, - "fastmail" => ICON_FASTMAIL, - "fedora" => ICON_FEDORA, - "gandi" => ICON_GANDI, - "gemini" => ICON_GEMINI, - "github" => ICON_GITHUB, - "gitlab" => ICON_GITLAB, - "google" => ICON_GOOGLE, - "invity" => ICON_INVITY, - "keeper" => ICON_KEEPER, - "kraken" => ICON_KRAKEN, - "login.gov" => ICON_LOGIN_GOV, - "microsoft" => ICON_MICROSOFT, - "mojeid" => ICON_MOJEID, - "namecheap" => ICON_NAMECHEAP, - "proton" => ICON_PROTON, - "slushpool" => ICON_SLUSHPOOL, - "stripe" => ICON_STRIPE, - "tutanota" => ICON_TUTANOTA, - _ => ICON_WEBAUTHN, + "apple" => Some(ICON_APPLE), + "aws" => Some(ICON_AWS), + "binance" => Some(ICON_BINANCE), + "bitbucket" => Some(ICON_BITBUCKET), + "bitfinex" => Some(ICON_BITFINEX), + "bitwarden" => Some(ICON_BITWARDEN), + "cloudflare" => Some(ICON_CLOUDFLARE), + "coinbase" => Some(ICON_COINBASE), + "dashlane" => Some(ICON_DASHLANE), + "dropbox" => Some(ICON_DROPBOX), + "duo" => Some(ICON_DUO), + "facebook" => Some(ICON_FACEBOOK), + "fastmail" => Some(ICON_FASTMAIL), + "fedora" => Some(ICON_FEDORA), + "gandi" => Some(ICON_GANDI), + "gemini" => Some(ICON_GEMINI), + "github" => Some(ICON_GITHUB), + "gitlab" => Some(ICON_GITLAB), + "google" => Some(ICON_GOOGLE), + "invity" => Some(ICON_INVITY), + "keeper" => Some(ICON_KEEPER), + "kraken" => Some(ICON_KRAKEN), + "login.gov" => Some(ICON_LOGIN_GOV), + "microsoft" => Some(ICON_MICROSOFT), + "mojeid" => Some(ICON_MOJEID), + "namecheap" => Some(ICON_NAMECHEAP), + "proton" => Some(ICON_PROTON), + "slushpool" => Some(ICON_SLUSHPOOL), + "stripe" => Some(ICON_STRIPE), + "tutanota" => Some(ICON_TUTANOTA), + _ => None, }) } else { - ICON_WEBAUTHN + None } } diff --git a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako index 4712ee4124..3aeb2c92b0 100644 --- a/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako +++ b/core/embed/rust/src/ui/model_mercury/component/fido_icons.rs.mako @@ -19,21 +19,17 @@ for app in fido: % for icon_name, var_name in icons: const ICON_${var_name}: &[u8] = include_res!("model_mercury/res/fido/icon_${icon_name}.toif"); % endfor -/// Default icon when app does not have its own -const ICON_WEBAUTHN: &[u8] = include_res!("model_mercury/res/fido/icon_webauthn.toif"); /// Translates icon name into its data. -/// Returns default `ICON_WEBAUTHN` when the icon is not found or name not -/// supplied. -pub fn get_fido_icon_data(icon_name: Option<TString<'static>>) -> &'static [u8] { +pub fn get_fido_icon_data(icon_name: Option<TString<'static>>) -> Option< &'static [u8]> { if let Some(icon_name) = icon_name { icon_name.map(|c| match c { % for icon_name, var_name in icons: - "${icon_name}" => ICON_${var_name}, + "${icon_name}" => Some(ICON_${var_name}), % endfor - _ => ICON_WEBAUTHN, + _ => None, }) } else { - ICON_WEBAUTHN + None } } diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs index 7cea508859..eab5648903 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/passphrase.rs @@ -198,14 +198,14 @@ impl PassphraseKeyboard { } fn replace_keys_contents(&mut self, ctx: &mut EventCtx) { - self.next_btn - .set_content(ctx, self.active_layout.next().into()); + self.next_btn.set_content(self.active_layout.next().into()); for (i, btn) in self.keys.iter_mut().enumerate() { let text = KEYBOARD[self.active_layout.to_usize().unwrap()][i]; let content = Self::key_content(text); - btn.set_content(ctx, content); + btn.set_content(content); btn.request_complete_repaint(ctx); } + ctx.request_paint(); } /// Possibly changing the buttons' state after change of the input. diff --git a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs index 722b3c96b4..abd6bcadd7 100644 --- a/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs +++ b/core/embed/rust/src/ui/model_mercury/component/keyboard/slip39.rs @@ -288,12 +288,13 @@ impl Slip39Input { // Confirm button. self.button.enable(ctx); self.button - .set_content(ctx, ButtonContent::Icon(theme::ICON_SIMPLE_CHECKMARK24)); + .set_content(ButtonContent::Icon(theme::ICON_SIMPLE_CHECKMARK24)); } else { // Disabled button. self.button.disable(ctx); - self.button.set_content(ctx, ButtonContent::Text("".into())); + self.button.set_content(ButtonContent::Text("".into())); } + ctx.request_paint(); } fn input_sequence(&self) -> Option<u16> { diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index ca675a03a5..cfbc091890 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -46,13 +46,12 @@ pub use address_details::AddressDetails; #[cfg(feature = "ui_overlay")] pub use binary_selection::{BinarySelection, BinarySelectionMsg}; pub use button::{ - Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, CancelConfirmMsg, - CancelInfoConfirmMsg, IconText, + Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, CancelInfoConfirmMsg, IconText, }; #[cfg(feature = "translations")] pub use coinjoin_progress::CoinJoinProgress; pub use error::ErrorScreen; -pub use fido::{FidoConfirm, FidoMsg}; +pub use fido::FidoCredential; pub use footer::Footer; pub use frame::{Frame, FrameMsg}; pub use header::Header; @@ -88,7 +87,7 @@ pub use swipe_up_screen::{SwipeUpScreen, SwipeUpScreenMsg}; #[cfg(feature = "translations")] pub use tap_to_confirm::TapToConfirm; pub use updatable_more_info::UpdatableMoreInfo; -pub use vertical_menu::{VerticalMenu, VerticalMenuChoiceMsg}; +pub use vertical_menu::{PagedVerticalMenu, VerticalMenu, VerticalMenuChoiceMsg}; pub use welcome_screen::WelcomeScreen; use super::{constant, theme}; diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index 5480e8f4bc..bb7744c538 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -7,13 +7,13 @@ use crate::{ ui::{ component::{ base::{AttachType, Component}, - Event, EventCtx, SwipeDirection, + Event, EventCtx, Paginate, SwipeDirection, }, constant::screen, display::{Color, Icon}, geometry::{Offset, Rect}, lerp::Lerp, - model_mercury::component::button::{Button, ButtonMsg, IconText}, + model_mercury::component::button::{Button, ButtonContent, ButtonMsg, IconText}, shape::{Bar, Renderer}, util::animation_disabled, }, @@ -25,11 +25,7 @@ pub enum VerticalMenuChoiceMsg { /// Number of buttons. /// Presently, VerticalMenu holds only fixed number of buttons. -/// TODO: for scrollable menu, the implementation must change. -const N_ITEMS: usize = 3; - -/// Number of visual separators between buttons. -const N_SEPS: usize = N_ITEMS - 1; +const MAX_ITEMS: usize = 3; /// Fixed height of each menu button. const MENU_BUTTON_HEIGHT: i16 = 64; @@ -37,8 +33,7 @@ const MENU_BUTTON_HEIGHT: i16 = 64; /// Fixed height of a separator. const MENU_SEP_HEIGHT: i16 = 2; -type VerticalMenuButtons = Vec<Button, N_ITEMS>; -type AreasForSeparators = Vec<Rect, N_SEPS>; +type VerticalMenuButtons = Vec<Button, MAX_ITEMS>; #[derive(Default, Clone)] struct AttachAnimation { @@ -174,11 +169,10 @@ impl AttachAnimation { #[derive(Clone)] pub struct VerticalMenu { - area: Rect, /// buttons placed vertically from top to bottom buttons: VerticalMenuButtons, - /// areas for visual separators between buttons - areas_sep: AreasForSeparators, + /// length of `buttons` prefix that is currently active, set by `place()` + n_items: usize, attach_animation: AttachAnimation, } @@ -186,9 +180,8 @@ pub struct VerticalMenu { impl VerticalMenu { fn new(buttons: VerticalMenuButtons) -> Self { Self { - area: Rect::zero(), buttons, - areas_sep: AreasForSeparators::new(), + n_items: MAX_ITEMS, attach_animation: AttachAnimation::default(), } } @@ -226,26 +219,23 @@ impl Component for VerticalMenu { fn place(&mut self, bounds: Rect) -> Rect { // VerticalMenu is supposed to be used in Frame, the remaining space is just - // enought to fit 3 buttons separated by thin bars - let height_bounds_expected = 3 * MENU_BUTTON_HEIGHT + 2 * MENU_SEP_HEIGHT; - assert!(bounds.height() == height_bounds_expected); + // enought to fit 3 buttons separated by thin bars. If there's footer only 2 + // buttons fit. + let n_items = (bounds.height() + MENU_SEP_HEIGHT) / (MENU_BUTTON_HEIGHT + MENU_SEP_HEIGHT); + self.n_items = n_items as usize; - self.area = bounds; - self.areas_sep.clear(); let mut remaining = bounds; let n_seps = self.buttons.len() - 1; - for (i, button) in self.buttons.iter_mut().enumerate() { + for (i, button) in self.buttons.iter_mut().take(self.n_items).enumerate() { let (area_button, new_remaining) = remaining.split_top(MENU_BUTTON_HEIGHT); button.place(area_button); remaining = new_remaining; if i < n_seps { - let (area_sep, new_remaining) = remaining.split_top(MENU_SEP_HEIGHT); - unwrap!(self.areas_sep.push(area_sep)); + let (_area_sep, new_remaining) = remaining.split_top(MENU_SEP_HEIGHT); remaining = new_remaining; } } - - self.area + bounds } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { @@ -278,7 +268,7 @@ impl Component for VerticalMenu { target.with_origin(offset, &|target| { // render buttons separated by thin bars - for (i, button) in (&self.buttons).into_iter().enumerate() { + for (i, button) in (&self.buttons).into_iter().take(self.n_items).enumerate() { button.render(target); Bar::new(button.area()) @@ -286,18 +276,22 @@ impl Component for VerticalMenu { .with_bg(Color::black()) .with_alpha(opacities[i]) .render(target); - } - for (i, area) in self.areas_sep.iter().enumerate() { - Bar::new(*area) - .with_thickness(MENU_SEP_HEIGHT) - .with_fg(theme::GREY_EXTRA_DARK) - .render(target); - Bar::new(*area) - .with_fg(Color::black()) - .with_bg(Color::black()) - .with_alpha(opacities[i]) - .render(target); + if i + 1 < self.buttons.len().min(self.n_items) { + let area = button + .area() + .translate(Offset::y(MENU_BUTTON_HEIGHT)) + .with_height(MENU_SEP_HEIGHT); + Bar::new(area) + .with_thickness(MENU_SEP_HEIGHT) + .with_fg(theme::GREY_EXTRA_DARK) + .render(target); + Bar::new(area) + .with_fg(Color::black()) + .with_bg(Color::black()) + .with_alpha(opacities[i]) + .render(target); + } } // todo screen here is incorrect @@ -322,3 +316,90 @@ impl crate::trace::Trace for VerticalMenu { }); } } + +// Polymorphic struct, avoid adding code as it gets duplicated, prefer +// extending VerticalMenu instead. +pub struct PagedVerticalMenu<F: Fn(usize) -> TString<'static>> { + inner: VerticalMenu, + page: usize, + item_count: usize, + label_fn: F, +} + +impl<F: Fn(usize) -> TString<'static>> PagedVerticalMenu<F> { + pub fn new(item_count: usize, label_fn: F) -> Self { + let mut result = Self { + inner: VerticalMenu::select_word(["".into(), "".into(), "".into()]), + page: 0, + item_count, + label_fn, + }; + result.change_page(0); + result + } +} + +impl<F: Fn(usize) -> TString<'static>> Paginate for PagedVerticalMenu<F> { + fn page_count(&mut self) -> usize { + self.num_pages() + } + + fn change_page(&mut self, active_page: usize) { + for b in 0..self.inner.n_items { + let i = active_page * self.inner.n_items + b; + let text = if i < self.item_count { + (self.label_fn)(i) + } else { + "".into() + }; + let mut dummy_ctx = EventCtx::new(); + self.inner.buttons[b].enable_if(&mut dummy_ctx, !text.is_empty()); + self.inner.buttons[b].set_content(ButtonContent::Text(text)); + } + + self.page = active_page + } +} + +impl<F: Fn(usize) -> TString<'static>> Component for PagedVerticalMenu<F> { + type Msg = VerticalMenuChoiceMsg; + + fn place(&mut self, bounds: Rect) -> Rect { + self.inner.place(bounds) + } + + fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { + let msg = self.inner.event(ctx, event); + if let Some(VerticalMenuChoiceMsg::Selected(i)) = msg { + return Some(VerticalMenuChoiceMsg::Selected( + self.inner.n_items * self.page + i, + )); + } + msg + } + + fn paint(&mut self) { + // TODO remove when ui-t3t1 done + } + + fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { + self.inner.render(target) + } +} + +impl<F: Fn(usize) -> TString<'static>> InternallySwipable for PagedVerticalMenu<F> { + fn current_page(&self) -> usize { + self.page + } + + fn num_pages(&self) -> usize { + (self.item_count / self.inner.n_items) + (self.item_count % self.inner.n_items).min(1) + } +} + +#[cfg(feature = "ui_debug")] +impl<F: Fn(usize) -> TString<'static>> crate::trace::Trace for PagedVerticalMenu<F> { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.inner.trace(t) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs new file mode 100644 index 0000000000..a7c67a924e --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs @@ -0,0 +1,202 @@ +use crate::{ + error, + micropython::{gc::Gc, list::List, map::Map, obj::Obj, qstr::Qstr, util}, + strutil::TString, + translations::TR, + ui::{ + component::{ + swipe_detect::SwipeSettings, + text::paragraphs::{Paragraph, Paragraphs}, + ComponentExt, SwipeDirection, + }, + flow::{ + base::{DecisionBuilder as _, StateChange}, + FlowMsg, FlowState, SwipeFlow, SwipePage, + }, + layout::obj::LayoutObj, + model_mercury::component::{FidoCredential, SwipeContent}, + }, +}; + +use super::super::{ + component::{ + Frame, FrameMsg, PagedVerticalMenu, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + }, + theme, +}; + +use core::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ConfirmFido { + Intro, + ChooseCredential, + Details, + Tap, + Menu, +} + +static CRED_SELECTED: AtomicUsize = AtomicUsize::new(0); +static SINGLE_CRED: AtomicBool = AtomicBool::new(false); + +impl FlowState for ConfirmFido { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Intro, SwipeDirection::Up) => Self::ChooseCredential.swipe(direction), + (Self::Details, SwipeDirection::Up) => Self::Tap.swipe(direction), + (Self::Tap, SwipeDirection::Down) => Self::Details.swipe(direction), + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (_, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Choice(0)) => self.return_msg(FlowMsg::Cancelled), + (Self::Menu, FlowMsg::Cancelled) => { + if Self::single_cred() { + Self::Details.swipe_right() + } else { + Self::Intro.swipe_right() + } + } + (Self::ChooseCredential, FlowMsg::Choice(i)) => { + CRED_SELECTED.store(i, Ordering::Relaxed); + Self::Details.swipe_left() + } + (Self::Details, FlowMsg::Cancelled) => Self::ChooseCredential.swipe_right(), + (Self::Tap, FlowMsg::Confirmed) => { + self.return_msg(FlowMsg::Choice(CRED_SELECTED.load(Ordering::Relaxed))) + } + _ => self.do_nothing(), + } + } +} + +#[allow(clippy::not_unsafe_ptr_arg_deref)] +pub extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, ConfirmFido::new_obj) } +} + +impl ConfirmFido { + const EXTRA_PADDING: i16 = 6; + + fn single_cred() -> bool { + SINGLE_CRED.load(Ordering::Relaxed) + } + + fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; + let app_name: TString = kwargs.get(Qstr::MP_QSTR_app_name)?.try_into()?; + let icon_name: Option<TString> = kwargs.get(Qstr::MP_QSTR_icon_name)?.try_into_option()?; + let accounts: Gc<List> = kwargs.get(Qstr::MP_QSTR_accounts)?.try_into()?; + let num_accounts = accounts.len(); + SINGLE_CRED.store(num_accounts <= 1, Ordering::Relaxed); + CRED_SELECTED.store(0, Ordering::Relaxed); + + let content_intro = Frame::left_aligned( + title, + SwipeContent::new(Paragraphs::new(Paragraph::new::<TString>( + &theme::TEXT_MAIN_GREY_LIGHT, + TR::fido__select_intro.into(), + ))), + ) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info)); + + // Closure to lazy-load the information on given page index. + // Done like this to allow arbitrarily many pages without + // the need of any allocation here in Rust. + let label_fn = move |page_index| { + let account = unwrap!(accounts.get(page_index)); + account + .try_into() + .unwrap_or_else(|_| TString::from_str("-")) + }; + let content_choose_credential = Frame::left_aligned( + TR::fido__title_select_credential.into(), + SwipeContent::new(SwipePage::vertical(PagedVerticalMenu::new( + num_accounts, + label_fn, + ))), + ) + .with_subtitle(TR::fido__title_for_authentication.into()) + .with_menu_button() + .with_footer( + TR::instructions__swipe_up.into(), + (num_accounts > 2).then_some(TR::fido__more_credentials.into()), + ) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .with_vertical_pages() + .map(|msg| match msg { + FrameMsg::Button(_) => Some(FlowMsg::Info), + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + }); + + let get_account = move || { + let current = CRED_SELECTED.load(Ordering::Relaxed); + let account = unwrap!(accounts.get(current)); + account.try_into().unwrap_or_else(|_| TString::from_str("")) + }; + let content_details = Frame::left_aligned( + TR::fido__title_credential_details.into(), + SwipeContent::new(FidoCredential::new(icon_name, app_name, get_account)), + ) + .with_footer(TR::instructions__swipe_up.into(), Some(title)) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()); + let content_details = if Self::single_cred() { + content_details.with_menu_button() + } else { + content_details.with_cancel_button() + } + .map(|msg| match msg { + FrameMsg::Button(bm) => Some(bm), + _ => None, + }); + + let content_tap = Frame::left_aligned(title, PromptScreen::new_tap_to_confirm()) + .with_menu_button() + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Button(_) => Some(FlowMsg::Info), + }); + + let content_menu = Frame::left_aligned( + "".into(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, TR::buttons__cancel.into()), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + let initial_page = if Self::single_cred() { + &ConfirmFido::Details + } else { + &ConfirmFido::Intro + }; + let res = SwipeFlow::new(initial_page)? + .with_page(&ConfirmFido::Intro, content_intro)? + .with_page(&ConfirmFido::ChooseCredential, content_choose_credential)? + .with_page(&ConfirmFido::Details, content_details)? + .with_page(&ConfirmFido::Tap, content_tap)? + .with_page(&ConfirmFido::Menu, content_menu)?; + Ok(LayoutObj::new(res)?.into()) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/flow/mod.rs b/core/embed/rust/src/ui/model_mercury/flow/mod.rs index 962e989726..9cf4ff6c91 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/mod.rs @@ -1,4 +1,6 @@ pub mod confirm_action; +#[cfg(feature = "universal_fw")] +pub mod confirm_fido; pub mod confirm_firmware_update; pub mod confirm_output; pub mod confirm_reset; @@ -14,9 +16,11 @@ pub mod show_share_words; pub mod show_tutorial; pub mod warning_hi_prio; -pub use confirm_action::{new_confirm_action, new_confirm_action_simple}; mod util; +pub use confirm_action::{new_confirm_action, new_confirm_action_simple}; +#[cfg(feature = "universal_fw")] +pub use confirm_fido::new_confirm_fido; pub use confirm_firmware_update::new_confirm_firmware_update; pub use confirm_output::new_confirm_output; pub use confirm_reset::new_confirm_reset; diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 3292bec53a..89c2ff0a3b 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -14,9 +14,7 @@ use crate::{ error::{value_error, Error}, io::BinaryData, micropython::{ - gc::Gc, iter::IterBuf, - list::List, macros::{obj_fn_1, obj_fn_kw, obj_module}, map::Map, module::Module, @@ -58,17 +56,6 @@ use crate::{ }, }; -impl TryFrom<CancelConfirmMsg> for Obj { - type Error = Error; - - fn try_from(value: CancelConfirmMsg) -> Result<Self, Self::Error> { - match value { - CancelConfirmMsg::Cancelled => Ok(CANCELLED.as_obj()), - CancelConfirmMsg::Confirmed => Ok(CONFIRMED.as_obj()), - } - } -} - impl TryFrom<CancelInfoConfirmMsg> for Obj { type Error = Error; @@ -101,19 +88,6 @@ impl TryFrom<VerticalMenuChoiceMsg> for Obj { } } -impl<F, U> ComponentMsgObj for FidoConfirm<F, U> -where - F: Fn(usize) -> TString<'static>, - U: Component<Msg = CancelConfirmMsg>, -{ - fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { - match msg { - FidoMsg::Confirmed(page) => Ok((page as u8).into()), - FidoMsg::Cancelled => Ok(CANCELLED.as_obj()), - } - } -} - impl ComponentMsgObj for PinKeyboard<'_> { fn msg_try_into_obj(&self, msg: Self::Msg) -> Result<Obj, Error> { match msg { @@ -716,37 +690,6 @@ extern "C" fn new_show_error(n_args: usize, args: *const Obj, kwargs: *mut Map) unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; - let app_name: TString = kwargs.get(Qstr::MP_QSTR_app_name)?.try_into()?; - let icon: Option<TString> = kwargs.get(Qstr::MP_QSTR_icon_name)?.try_into_option()?; - let accounts: Gc<List> = kwargs.get(Qstr::MP_QSTR_accounts)?.try_into()?; - - // Cache the page count so that we can move `accounts` into the closure. - let page_count = accounts.len(); - // Closure to lazy-load the information on given page index. - // Done like this to allow arbitrarily many pages without - // the need of any allocation here in Rust. - let get_page = move |page_index| { - let account = unwrap!(accounts.get(page_index)); - account.try_into().unwrap_or_else(|_| "".into()) - }; - - let controls = Button::cancel_confirm( - Button::with_icon(theme::ICON_CANCEL), - Button::with_text(TR::buttons__confirm.into()).styled(theme::button_confirm()), - true, - ); - - let fido_page = FidoConfirm::new(app_name, get_page, page_count, icon, controls); - - let obj = LayoutObj::new(Frame::centered(title, fido_page))?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_show_warning(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let title: TString = kwargs.get(Qstr::MP_QSTR_title)?.try_into()?; @@ -1213,6 +1156,13 @@ extern "C" fn new_show_wait_text(message: Obj) -> Obj { unsafe { util::try_or_raise(block) } } +extern "C" fn new_confirm_fido(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { + #[cfg(feature = "universal_fw")] + return flow::confirm_fido::new_confirm_fido(n_args, args, kwargs); + #[cfg(not(feature = "universal_fw"))] + panic!(); +} + #[no_mangle] pub static mp_module_trezorui2: Module = obj_module! { /// from trezor import utils diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_apple.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_apple.toif index d6c97f897e8e8eeb119cc65065b6955ad799fc6a..8c188f32033b0e1a318d11e316f9c69b7d281643 100644 GIT binary patch literal 344 zcmV-e0jK^{Pf11~03ZNN0RRA{k|B?SFciltCMpn>NJ!3Hf@mf3a3h&05=Y313z@3K zEe)#ahnPSh_!1KnC-@ME3B<m_-Huys2i^97_Y5KYc<t}~5rR~L*I_LRhGtd4h~$c^ z_t!ae$><MFWrC;Ed(zM5%1Y-<ucDqN@?g*5$?w_cxl8bc)?($t83*mij$EG$*4q7_ zTD!HM8GLcAv_J7VucCfxf^nclZ-J|AcJ!aQ`s*gwg396BO=dbr7Z1O?-`mU?&?g^G zQ#rhYgU&geFWESwaQZV|c6U<_YXPO3{C-Ly?WHE3F680!YhmKGfcx8%W&Tb3!vUP< zsu<<xU{B$xJo)nzVBW*D8*o)c|M>*NcX;V`l;U*=r!7N@9Iyi-O&LIF<-&42wm-#U q7o!LD5#H{3lXbC|-kSAN2R*KmX+gfpqyL7lW(sDdO|AtFhV&O=Ca;qK literal 697 zcmV;q0!IB*Pf12V06+k(0ssKT(xI;MFcb&yiiwIVDkoWjU<sm=lPsB_$;2k-$bwj! zsmVIhAjrZ)AP@*%0)as6Atn%ry~3A;eBlo6Wd(M6|FzBeot_?q`p(c=MHxTE=nt}W z_IX$|C*Zp6gPHNG-JGvPuRgblyy;<)GM)O;p)EZumX1E%u<ms#Cs>z0!KG;HVR4D| zy?)B>bt)@Ump;Qp-ut^q-|Nrry<Q4^e~(bc+d9!WdxQpvwx(YT!$KN!Fu&^=-w>oV zhIRY(ql>g>K>|KbQZ@vh`V1SEZ~Jy-4mxl8_R+;2_O{N@n&8hTyoyS3`(r8tes*U+ z)ZLJgm+|lW(A>^A_Gb89JGiTNt9yxk`~STG+B(18yxvaPtCJX@UG#g!>#4;hUPWIC zm0dTR{WPps{yXE{HD5ba&TUnFpZBd_JMe9l$p;)lZw`?Q(&bMXluqT@?b0h#Wt-l6 zyUGTR6DYkhyY<S1n*Cg1^AOraF#0Y+N~s0R>?c@7H!PUfPnp{5u?ORCh?;+jA@oup z#bg}9KgFtk39@}7Pt_+9!auvJKK)}K=KbpPuf^Z)-#&-%_qnP+P9XfS*bp^;7s2>b zrsiW0#;?T$tN23;#t(~Cq~cF7l`uY)zOB;1I)|D7k(Jr)PZ^ZobkIEm!-DghUl@5^ z9h3sHgRofV&!><wSikAunSU^$ecbT}0f*gz8Gi21ZAkwVqt5JeIR9XF`*0JuD7+qS z2dLZ-HUD5z*}tDMq?{@1TQ9``y^@UgJNu#a5|0*y^!NuO551hZ-IpG4^j7-Wf>O*d zdNZf^Q@s`k6Mc~1Iw-|1I=f3}=^WjZ1)R#CZ&e@ZO|aLlP30*ztjB#Fd8KIUm-zk3 fw`-?to!4TYe<ervSxw(wMdM_hXM7bs_V}28Hz;eg diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_aws.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_aws.toif index 898afe3e0353d7ddfdb56562013ca69735431427..b429a082eb51e6d68d6dca19ca9583479f9e443f 100644 GIT binary patch literal 619 zcmV-x0+jt!Pf11~03ZNg0ssK*Qa@-KVHAIZ!wng3=-|-dgboT05jsT3a0(75I2dp+ z5V%7e5^=DhgAIX0q=QI?AQ?&shanCLF3LF=lmj6h0%lOmkfMTuLkcd18x&sec@ZsX zONB0h{Eqv+_r1Tr_r4F{6)ztnck49VOg2Nsf(t<KmvRj&>FwT9F6to3=P2dKwieNA z)y{n_9$SvD>v}DbE#-E`b=_jy^&<vm_KJ!a%#yU8M)Wz3_7P81HeJe1x)QU9PqF51 z_aYwcdziW&D$@CIygAyqA!+00p$m{~()xRF#^10auBQP`)SWRv)Ir&L=wT$LH{%g1 zBF1COl}$WuKXeg$NGruVBZyH)AU5gdS;UcBFgp6`2C&$w9rCNFjCT>uc&V#`%jdY< zGUJIyJof(L%>_WUb9a!)ZjKhSPGk?qh>HxtEaGPuN$+g)d4-!Fi*HBH2tez!q9&WI z(`CNYndwKkJD_S*^}a?-OkG{4iBoT9h9vk&>x@`zv<G5{l-op}ofv(e={;oA6?M{` zSD+aJ46J1HFy<{F)(t<Z!Y%RfFuVTCt%31oBxXL{fi?ehs}`I2ng|8g<Mvv_?Dqda zwyx&Sv)l)<tlcUN*rRh_;>)lCA0-HTN?4PiZDcTCo`)aG*GiE4#|(YDoDo?#*N*3! z*=Z_%hjS$;vVRG6i>ZD~nTjc+k0Iy&#pV*PwJCkvH~vb_5KB=I1v#im{HOjGrJ?-L zrplDNQVgP;TP#0Mui2FhKQyyE|DY|V<fkS@f&U{<&EA)^W12Cvp{?B#8zsEzJ-y;3 F;3rRqEKdLc literal 1264 zcmV<M1P}XEPf12V06+lb1ONc-Qa?x|OB~+fiY;ETg~b*YD_A6OMFJKI7Mp-Y0u~8e zkp*EzEWBW$!9s%&La>l<MF<ulghj~}1}zM^;vNZsfEIyR<e`P43m&A1km7_bUSQwO z{&sFA$?B=-HE+L#Wac+BzdzsiF^mHT4jede;9#F?N}kkMajJNd{SsStlao33vU|=w ze0$l5`dB(9FeujG@jl6YTx#bxjy@f&rMnV|kAn4URecDT)jJ-t!v5nDxu4`}8j5Wk z(OKGgcn7=V7~CQFnSZQ)LDOw;b+c&BH+_nBdlhnjB?vbP8l7dfgJS1#w9aJhGJcq_ zuV2%)dq4As;mL_4*Wg+I#u40yT*ooA-tLk6p)}4&beeNR1Sxek1M7AkbW3uqKa*YP zJ*L6g%%GAC^R0s3Z?@>nJ6?Q>7`ZiL^HCgIjRI$Ay=L||efoMgHYJqdR)^iy4cZ;Y zVCQ3RO*PT)R1v=b&O&Llo+_gCr=!=`-|@oC-~gECo8^Fx$!=3ZER1*Xi|rnYp3R`O zCk5`9bHB9iA}g5x%Wk?pR4iz4b{<E&1`jR(PeH#6mPhdGns$=?>U~b#4-=Uzu#B>3 z)v+R7U$CZwT*w>$8afApDAtvTN85Rvk4q8P&vs6-tpBO%U8$z&wpg@$3H_YMG1Fs3 z#1*Lteq9NYob%Cz9-S$70osg$^}~(v4wpI%uLPUYd3>)jSpP7Lc9&Jm?O#hMy4lk8 z?-z)lf`-`kv2<P^dl;T77Jf}u)9gDyKGOB8n<PhKlM{pW7fsLC3<u0dQGC)=J(ET2 zBzI=|W5d?(f}s<hX8P35ad5U8rK8{{QlDWitKjdcBJmlpvJ&jYi4*MMvHU>Kh@A%~ zhhaJjQ|kI1k0YyQq!%CWkV*GB6bq#_qqkd|+ytN+oo{%4E=6JuezpTqqSze|Dh+al z_M0uFjaH>OA4XHsE&WD;T%_v-jrBu6T?tp$^|ds)m%G5x9WRcx^EgK9m%E6x=A+;d z<in=4-9vZAigw)WhH;LC-ndn{od>;XPji-r1&zGzO870!?Dq@o_}LDbWxUhi?bSJs z=@bguml(s$xog_(fGSwSy$XqeD!LwN(fPX8yfpaJJN|KhOip-GdzH)TSaCjzeYE3U zb`ReA>J0>4{(WvZ76=Yc=3@iFP<pQtX>GPHtD!XUk%RvmWL}BLNj1kDs5x;<^ifAM zg71B63%<nPO20nv3G2T)3n+cLTz9=!^?F3<3qR^jxh$5%vf76FN`~AJee%80QAu_E z2_@<gRA1bpV~PNM$z?h4ZYr>h7xXqO1%^-6oTbdQxRv1FcxIQfi#Se%jP;_yeqUs5 zJQ@&xSnBkZ2J`tXx~RLvEv&gv5>V9xgZ;AoZIM+nv{Ti#(RV=PUS3z`5}|rVxW<{p zdnII@+>f$9)N#4qr$437{KFgw>vBL5p0270Mz`z20dq~iPdp@cG2e2aj=22|RF7C1 z?16lSMoqaalnlRQ(5L2v1G!vpV(kXM#DlU+>nM~G4|Ugb7*vFW>6zDmYMWUf)Xq@l z;VJIzJgMeh-i6vuBvsF7Hi3QK>?80B>te~CVcI8Z+fXG!^Zm9k*ql)!;+C>&s9rKU aDj^>vlFVnr?Jj|F;J|?c2M!$k9{&N%8GAwi diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_binance.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_binance.toif index 8d9ba3649866cd8f60d22e8faed3ad2af8f68c40..af00c7d0c9b22be441dc8f038f656889e2a9de70 100644 GIT binary patch literal 330 zcmV-Q0k!^APf11~03ZN90RRA<(lJiMKoEuDl@JnTN|z`Ii7U8FQn{o}mB2A*90jVB zlx|{0xd)N$&TS45L`s+LVPuWwdAv5>-R&%Wzcw>5X6R(e_p|XnKZl||R=x$&bo~mf z{R*hv3tGDsY<hg5trxpIcPX^>&6_c+$@oH+XiY~K(x}g$qGP4CF63oA>3;ziP-CG_ zU!pjWg6Qe;>s|_?_rVE%#dKNJ*OCjDC;mQvDeA|w6hz;iWs;=nUdw%eZz4@s3Zi8f zteZj{XsrvZxsc9e=I{CH&bAAj8t&qw+Jwe%0W}u%%(>8LI#dw74zYkU$6bhS4D0#d zJhq?wJ)PmqaTn{*_CMgMNufP8y$ie61)TX%VX+f01=KV(`^%g2+9_zg8PMHAmbmF| c!BzJa#%o)_P3wZY#)6;bg1@Hou>DW}0_v)#WB>pF literal 555 zcmV+`0@VFfPf12V06+jA0ssKT(yeX+K@^7Jg&<ZUE1|SWkw_e(2y7(^NVoxH6$#-g zDxnV93n&yEvXzLYU5UguTe{iK&UfaIJ+lYL&%6(_CkWhUP`!Vtw}OIZP+e|!r*Tw_ z;9QSiMF`S*5dyL9TOikc3UJ+*fUf%xsO#JUeVtQaR_79!*Es}s^}Gf4^*jaYdS&^1 z<P@mujad+^dwc?YJsvKBS)EH@Ugr^1R_1k`pc{2U+y3WW_h4RE3(5~JPXG(3IxTRk zV}YuU1@3iOpsULQ+xoOh3sAk(R0&XBE~GPT&yS-K7En7+y^rgg$vCRF=z6S1g0DyV ze_{cy$KS_-q>csZ=WMbUNgWIR*G&Z3J=Y7;x-7`nb%JbNFA(dZ0M%6jR96e+dMcpm zlz^(!0$l$SG+%4CANbSxaoCnmD>b_Z>b&c|&3)}o(SCXr1XzIUDnYq#voA?K9$7%w zDFI!_g0wCR)O93K*JXiN7X|uyR-mto0=b?FP<`F2tZE@8K=sX}F{1>yeilS~RF8jk zLkMs^c45JGOVxF^h6J6Es#5~H5w`{j==$XXv2G#|>z4`Sx=tY1-37R=65zV4VDUtq zh6QweclzFULVLlRg+N`OR^2whRKQa=74X$f1ibZM!9r1Z=dSDSfWPh{$hU4Q$iHqQ t;HjGm`06GC-nve}UsnnI)G2|#IuiJ;X9fQ2{{_X=6G3tHcp9@y>pvn~2H^kz diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitbucket.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitbucket.toif index 61c4b67f2fca6df9086f4415bfb37d1933dda611..1cce809928242007997fbc434167806c3aa4fe96 100644 GIT binary patch literal 451 zcmV;!0X+UxPf11~03ZOj0RRB4l08VnKp2KES<EF<?}kba43Z4G71tJoIMq&dwUap6 zO(-sQb88$OM7lavoR!+Kj=G6OJK9lPDk!uzxm<oO*HRMi8;|GV?tMQ1vYo!-K+&|8 zn!YkIx2^OuF|RW5U308w;m3LvW#OyHfmwJ5ekfV^k+Keq)U;vQvkmB)>C<;N=sR@- zdE)ZP2G*=i$WI;Ca0!>RqDF#wl3czcXy7cl=YVLx>OdaI_wt>5>5b~~BS8bZkmoCs z%m4TW%3pgowxEFm;`wLjzL**43vB-`*}z!m`G#83LWBE<6PexRiMW~Q(P!xueFOai z4){HkOyD3!+n|PPfr0+vR${lET$102B{%|2>>0fN=pQNpFKXa37v&w;#HYT2rSKSe zogvt*GAsw%bAj4~8p0HIBK|j1w4a7GH7Dkf3`vi)NgGEEuWIyt$p$FT3_bGT8(5Bw z7=MgJJTnXfLz5Y_uUNh}IWZp?NNAuro=Z`F1<vDX3ezwJ-=IkG{aD0@DfEIA4!Qk& tH<vTe9QQH5->YOkpG@He@q7U-;`tP|RFF7F&{;68+0^~1KpXtm`2%IA+@t^i literal 865 zcmV-n1D^a;Pf12V06+j$0{{T+(mzZSQ5*;GU%SwEUFf@^=H76*+zpBg=wbp%V@H`F zI*@b%Ct(5;5`@WaNF0nNrs)V1>H>)n$_7lvI20lgM_@7}CMA{x?e!mby?5{Z+Ny8i z_gnkR=i7H*fa_5?Sy(fYOwFztSr}s}N8OGw(^2W0&YZ2%pR<dGO226IQk8x$eL__F zlVllG`a58OsZ2K=3jpS9ResK{@K7{V`6a{k`>85_fV%!9QROcZ*WUqE{%*|mEijen zrgI-^^UPM^=j=KUMMH&OG8%qARpF1&hQCNu_^YJh@5V5{KeDGOW@l)D6<FTC`a)p$ z8a!BFBK*r{U&ONl7utnZ*2>Yt>TXtcBl<S5Y0pj0#=O8X%I}M?crC$UGr>k6!EDrf zQ!+6AB*FNf35)v^Y;qF(jCgMbXnTzn%|p%g-2`Ppf|ovjkzo8J!}wpDzNiJaeg1I_ z;~ya!n1;dlVBDMFkegt|cV&U;U=lo+`g<_c^hG^Px7_7yjQ>E|z$r4Mhb6db!EChk zu4G{RUTFi*NJjT2sJEacfgbQjD8}D6Wd3U{qgN8d0||UB_z-EmdqFV%mb8I}UiGUl zFc{i`;edY}!}z8%F4QMrzUuqGL9hjTfy*?Q4kp1(VFOQ_elUTz1rwaxEgR$iNQnF; zvY_)5cw6u>%DX)`F#ejbfp@e8{VG9N3m$R(5sLA1!Ui5t*Ow*u65-vhCU6b31b#-( z*L_hBr?~z}EQM;|Ni0myLY`ID_X4~YoN}+zV50nc>=ku)rn#f_U8hw)m>}*?@Hiy@ zmW_J>_ba&j+jjTT{?6Rpu56+1=LIb&Yhmw~WLV#upyB%y@OoJD--P<3v|ZnyU^|e2 z*FzfWuO{$5K0#{_mm*>QNvs`T+5*OJ0SWcfU^<;Az_uU@;q%Sz#FzEZ+X5E11b&jG zobD5dT5zBVc$lW``l1%_65JK~?-K3%(jMyG1n-H+?;)M|DO3w;3Hl-;e;mv%e0dAz z^<@yxk)8U72{O7R@o%usd}#}+34T!t57V?$zoiA-9zK=&pAwz>@*bWMncqXY_rqH- rEcF4#*xz}9))o}l0?W#INLM<LWZmw$QQHH$U*C0l3-Rx-=l{+hdVjU} diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitfinex.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitfinex.toif index 9fe4a9a3c78fb095f369f9c5135bd1a04dee0d60..9a4d7732ef931f2bdb89a987b8d5397817b01844 100644 GIT binary patch literal 537 zcmV+!0_OcxPf11~03ZMj0ssJw(mji#Ko|$`;RqsO3d`M2k06`tlF~|s5P~VEwAsDc zkbSYVv<VkkLP%+uz!r{3KE)yu@-c3Y%iZSoL!5J-YmBeY)9L(t#{Uce&Ffh}(vRLi zu~CRZ%|*A$SE*j9fJiR#^o6;%vh7<tQZ0k-6#F@sv`6+<nSBvLZBZ)s)^XnIZ=JSX zWWNhTTrOF^SrcWdL;A2fx7Yknt=clpjXzz!uOVGJSsirm%z8b<04yv>vt9%;uCq)( z=>SX+(~y4o*uTo}NE7W5F}erab?lGxWOg(Cq>It&do$LM`v1?b+0NO21K^@WL&_U* zYE5*gv9(BgU#FgZQ3ZEKz3wPX&-lkxsv#XjPdiGT_Dv+kDf!l^hLk<OGO8#4CNm*U zX-Bg9&sqep7uDKD$qCCitK;;`cmHNx8J{l`&5h4BqzA3)<ZL8<+|7fQ*O0QW{~|?` zWjy24o1Nb|>$c6_jdJO6;};>dVl<&hLmDS@Z>EyJ9Vj;^b3t^|&rdArt)u>1$?nd` z7~+m{IyJ7Kw{(g%q#RBrs5~gBYu+PpQ>GtQ#VV<RQa(BAP0%g3t$y3Cuu)I-V)-l_ zG;LLFAsw0dfBn|waFq0>&N3~Y=^MUozv+JuadFlovtIialByDatVsMgZ}mY<sbGTg b87v)-5D7G{86WgqBx4zeTC4whQMdjtsy+>% literal 1151 zcmV-_1c3WgPf12V06+k91ONcN(mikDNEiq35kk3<HHFL2*=QAEx}<bvO*R|WDJk6q zIf&!p(xn>&BZMNCltw~`i4dQH)!ycE*-wEY4mdu<G3#)=tO37F_Ic#ao}Zt2{s8=n zl7I$oVORVjj+akYEI|!Q@91e@EY_8e>O`*?zugtAmi_GPcGdp7(G~elnaZRuPHx~` zkhk44=MPsPJ%x`v7C)#Jqk2?bx9(mS7aqY$C&u!hIA?`-{mzr7F}+9hte9Zt(>^Xl zmRSp=Wnan*578$xUb<e-pUgP2zj=Xl#e#(>qR@(J*C4^a+i`8C>uxI3Q&5Nbxk!Fj zoaloDwx9Z*B7u2>>4>)M@N*}%{nWF>6YT4V&KlwNT~=F(?WImw-fQroz4GTF{GJjo z<-46HO@p1+G*&vIdH2}HD@7hQ)1ORfc_Nk<-r5()Aw7M;<JMUVq+m0BoxEfF*Wf2k zlQX?)Yml8f(KmHOTTZY(65$;`z2%gC=&8)+-LuYFK{}SJHa~sf)PCp^7&zNHqR<M` zTkoI)@J-*<5q&b>S8v%XJ(YR!e)gNj?%sLoRlD@22i-mEiN2}d!kooVFIXB}oqSdd z(h)7=P5)Dom!2nonbQB~)|G`9?Dv$l{(8<&uNZ5+E8e@oI_iv1S8vrIug&YEzp+&b zRP8-F{nuM>=;VfnJzLJ6zS!RBJ{{4#yLxMU%156!F6B-AgNi!){hY-!c><~0U2#*# z@{6}$NA#@dzc&(jWUgswoA@$!H|`-F(bseT%|1@P^(%D?2O4~K4(q5h68(f0tYrGY z$!4~73FNFJI=y*IUpABY-XYkjrg2P1bb6ok_F3N37vQHlD<0PoEo1-fsTnu#Q*%4- zew~EUSKHU%z>YP!lU6}MO?1==<Ifv$w?A7>-ZW}3NdFd6NA#@df04e3dg}$-lmSRG zJG=d?96fzAXW)ELrC>Z{>iibS`m3<^vqP{3gKY^kjqp066Mgk%(+D?rf3M9lT(F|( z3$H7#zWv8MY|ovleWmWV0T_w%Mid=UXsy47*8Zty&ZALRBygxq`Jo+6NAyxY>@yi! zS85G{BSrASi>kMr%@elopKbclxKc+VI9eq*y^m@yyVFy4eU|NlRWZscmNgKr>Wc2h z(CKG;`<!g1uB0+02qKgQuZ`&U&U)cxGazBr6@kRDSyzl?c2}I5s1sMuySFgDt-*;t zY{#|P-Pe`aHX!)Mjc>C)DaNx)u#feGHp{&f!%k(cjfZwp8&QFjVAQFv)Rq%JYn!dR zBQd-@63h6r{oUgs`}!9#OuDmj89$nNvfw7Oo;SkG{`LHYtGZ6zZOFZs@q+Uo481;% zlDMA2Bk6D5$yre{w@ThJ@f>u4d_4!TN&<a6Y$r>58A~8Zb;Tz$UKRvW#v0&J<I|=w zjPMUH9<+Lj1b9{nmT}eoe&jEP?VR;dEkW>3Rf0X`q?oe=^3eAGW#J9my4!LdO@gzs R27XmZK!c@aYmnzX{|7MWRww`f diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitwarden.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_bitwarden.toif index 6779de1d2fd2b12359641d0d91fbbc4addbe5aa1..db3e51d6f610d28116af3d96bfe8338068ae3399 100644 GIT binary patch literal 328 zcmV-O0k{5CPf11~03ZN70RRAFV4wzAA-LH%+@_pJ7-lnBJ6#Z=`<zm_4e2mP38H(Y zAUV20&>ifC&BiePbeG6df-o1MUqBnAKMc-~UiO~|AUzGH-pmH1A7Nh2I%4$4EJNrZ ztbfn8IdEuuopk-k;dQHZRR5@c3iS8l*DpN{zy3YjKq9+Zap{*##i##9$bGQL4If<k z%WY)O<I+Ff#r8Uge|I0UdUXAkso3>Tclmn^#Jm6fMhHIrurNZ^e<Q^1I)pc?7F9K- ze)Lc*x7pRY|2u?zs})@>HvJ$S2>mdd?|+|Fim4L2eo#2X-A8tX-Sr<a*wlgahuL70 zneJje?>^Yw`@jG0Eyt?H46J{$F?QK<n;kwe%dF?^@WCZ7pbgTWE{IE>5M<?K0D~MQ aa&&V^F~EVlpn$d+(K=0mE{EAoDF6Uw6r)oB literal 617 zcmV-v0+#($Pf12V06+j;0ssK*(lKb;KokaGErpa!9x_<LV6<vfFc=?(f=CxF1`#9T zdh=#2hH$jR*)n=;453(CXcsM6Oon<hbn;S=C<HAj8MP$XP>gC3WXbMHx|0-n=>2b# z?%pTeJ%*w2^N#6qJ^tVbf~>0vo`nX#&z2)}iLC(m%Jn3CEui%V4?#YqbGy{t8gSbu zpQrBD`$BN)Dj;wFN$@AJ%R!KT9j{NIC!pRh<kOp022~r4B~<_JdIk=T5bs6Jb}~xc zK>4?V=Oh2V<zyJt37ml4`jGk=_=*}<Z7UBSwfCh;GwM^H`qZaB^{G$&|I4o%X?#;o z>t9&@s-Z~gLtxF*_+!yuquJ;+(SF-X<JU(1nsYsg|3y#ZUp)G2uKP)Rya|l|dn;u6 z;(Q27vt)j?6P%seD6D^+uc%3UQ`YR@3R6z%L$I8Z`eP}0^Nw?P72ZAGH>HV9;xFV) zy>1M}G=BUYY_8q>T5G<Lqk7}`5d6Bt^AE3rQ|G3tMt8>Z-Oh2oDVJv3Z$6&I^~Lp9 zXE2EJ|9qazx1TF&d{=xQg6qCDNBN)5+Q#;?iCygA^d#{isCG2l!ARXOWxS4L{_2*c z<upz|*M}l*KT_YVyG!&vxY6wRnM3(aK(fn}@4ut;*3DQV>2tF7p9KiWN>STZ&|Xf9 zA4q%j1kZ2qq<bM4ig*3dqidIDWT);G&wBnon`FQH4T@UrB-;zYo41}{PH+QhtH(2e zd@JPb|K4LZqH}rbKZ?vh8F0JQ-5eKw3a@|f4|_~#%Bycsxm%%`xm#JuJnPRq%}f3Q DT1Z5r diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_cloudflare.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_cloudflare.toif index 5c5f803e5b698f5718824375b4dba60a06120adf..b15eabdbebda9e026c0be6add0acd806c388bf35 100644 GIT binary patch literal 294 zcmV+>0ondkPf11~03ZMw0RRAFU>F6X02ff;SfFvhAVGp0y$>x8t$O^L`3nd(Uw&Aq zz(I;`rzVI_1WdlXK!a%AUFf<&aPjR1qI{z0h)p*LGHu4EZ(-u2O-!2)W-1@XrJwoB zLknEGlP2NTg@8vUVb{GtgBab+UrPUFetrJr=;|g<RQ-vO#OQYWV);MgF9fzOR)D9H z#K1#~h|wSN@7q6^evk<u-46_!Zxd&C$iM&p_x@k?7hyt@V}rus$H=NWz6gH<!H{pE z|E2-q_J23N-T3zFpY{Ly{~_T1f2;rB|4jzFW9eezLY?^w%a;vbLAtm6>q4@B`5ofi s4uSjr2O#+#1lgaWx}MmuhrzTn4GIg0ga;Lv6%Q()!UhS3Q81zb09HPeNdN!< literal 615 zcmV-t0+{_&Pf12V06+j+0ssK*l0Rq@Q5=AeBw#?HL6^8)Qk4vX8M;IrdJ%*;6ap^6 z42^+$S(G})4Cx6SZgdP4@`nzlOEHQ<B&27HgAtSzK`NzfIvJ|VU4p{BpZD$x`C~3= z!n=a-zHdG5`~BW~3`3z%C=?2X@;{MgJ={_x7h8&WxU~B;%X|L&&k8$sx!b4ppjh=; z->&*?rQUM4QZdU~S+^z4+lGziM#7pl>y(P4>V`tbivGa~>()#V6i;5q?k|$8d${rH z*s7mgKVBcdKV6=@H}6`Ccm=PJi=|nHiABb*V?Eqt?>s0rnw`JoGq>JP)|c{=)a~WT zYX913vd(e)LWWcw`{OY;)&yA}$@&8s;MdWaqYvM&ygL-R!05hLAld(-RDf4IF4Xej z;eDw{uI`Yd;O^;TSJ&oU=KX`0<oah7fH3Os^Xl?;&ONx!I;A|h?f)QvPb#ktnxOv- zvTRU{e<XSL7h0h4b6{V)g+lk%L6KzHE?<&o5a_%{yvYPY$f(b{rpqMT4*9Bb13H9F zCb+$+@6OnV)?dhT%EM#VmCq{nJko6$&gkB4y+PRD=sEPW0s;7nUZE0NL{qKK1p7XQ zu_cFZ^GJP*bX(YO$6g2QJxJ+BA=<{K+9?>!iuTnLZHkLM_fbgBx*AQAC-0Ci%j?Q+ zS2+MvrY~T1Z6iVU-5Jg)Mtc{onYOVDHK}Mt-y!2SP=T7t4|RDvUbmuemv6RV$hmj+ zFYH*ee?`0ZQFUJ3Dp|AtIqm-aXmtNj*z<EC@@|C^cQ!-$k)~Y?g+ifFC=|*m^A}}M BKNkQ1 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_coinbase.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_coinbase.toif index 5550238a1fe71557876172700a2e28e00787ee8b..2e4a566690d6ea5bf7a473897236762b4ed540a5 100644 GIT binary patch literal 246 zcmV<S015w8Pf11~03ZPB0002(QaciaAPk+c+>&++55N&}4SOy?Y0pV^tZcWWG`FzL zF(|Xl>_=20?$G+u=)ij<FK=jutFncS(*y)g<KJA<8Bc*fpkOA`oqiX1<{V~(6KqQ? z18s@T1so|L5SJlOv7Q?Pjofoj4-9J`B+t`J?UU6{SH-^s`CS;FvbU$Hg7LYuEM3Mg zwVO?0l81ewoK6}Xv+j(`1*f;C1PQ;-@#)syzqNnAmS5X{t$(%qtIv;^-|<|2qX$4- w27<(o3bx3$GW)GS73}vEYaf=mk2>G(!gxydZ6?X{gFa#=2?(6VX1GeI7dZ}fi2wiq literal 568 zcmV-80>}MSPf12V06+jN0ssK*lA(^=Fc5~Ng@J}WV30>BEHGGT8otEvpbJ-iir{&R zrDlP7g@J*7gsFRxR;}tu?AUj!N|~V^fB*dR!v)Sh`|Pv-qedYIFl6Oj-pPWI1Bovp zYZw($q7=eN`t!)XLz^c5rD8$ryY_TvT%gQy0ZdD_>fJ<z1(WI<UHl4x4pf}dEqq5h zT1f7_mQIybqX4g1i;o^0y+X`SpauouSQ5)K&nlQc=khK{l;|>C0#io!om;m4^D`Lv zbXC5A@$<G)-xVd#@_(r%ohZ_3Bd%zRvd8{(d!S%d3-#bt7i_P2y5GLrg;$VvEt$QM z+kxNx4-c5+z?jRIShE2!?kUW4U$B|a)bD3Tzo^j<CObhU{ev8;ru*#s^)(xiP0ohw z?SCiuyZiBP)3+@3KWoxc->>Gs+W(j5PuEOuZZPCbqexHtIhXI}^baI5{X=G6*Z5bE z;F0-ZL9y?iTA2HdxqM_cAi6#Lw)2<UgPYBBZ*7IV0^WnTJ4;tfK0W?q*)8Hv=}k!U zs)^8+@O^h%XrufLM)uFVzJXyg|4}aZu7nR4XK1%vkSNiG{g+_M=pPCuYE&?l(_;pE z2u<ig^+)(Ig;%Vm#~<`DdTt7KGV*?$zAC_q-D~OV6^`W~PU(93nnX91XZ~pFxI4IP z7hC|-lD)R?(5hvRtroPtYfpcsLBlAMkyHp{tBdcd5OM%RR^H{EEEqYE_!{!rXP<p` GtNsO3&L~s> diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_dashlane.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_dashlane.toif index 02d618c4068e8d4ba68f6b8af34e395fd775bd6c..d4d024276e09eae7f623ced45d3c54e93716e645 100644 GIT binary patch literal 922 zcmV;L17-YFPf11~03ZO40{{S((tS)5XB-Fcr+w-I>@f^_n0ekG{o@+V@=P(d6I>y% zAYv5#1DY6V6Gb~rv_{>k!rDd|BQt`DZ-t;~qAVRRmFQk-6|K>l5>}JOk<gx~jaj6z zs2yNJiZN%8<Hc^*L%zTNes`bWy*xhvgi{P^Bu?o8xL2x_D8NEe4LT&RrGLY**}4Xs zq@^D*r5^N4RzbOJ9CB4jwHmkE*J|a6pYjkorQb@51*I2!k#X=-HBuoWQRgvZq59bA zgeQ7kM+|ESe#$6(CH+;hb5`yI`?3e*hpEGame8U>4cS-_WCios(_*ZkMq!qWD-0tN z&MVWe(=C*Z$}9icW(~9RhUyEN&eE%8xo8!d@j+~l2;Hj>E<L3eoO#ogi?&Yt5FNs) zp5`{m(K#Hl6a<p{nqV&4GUXSEdY1LXmY%Ah#^85!zU_mr2y8`PPWk&FM7!zK+HLw% zH3qZMSK40JT>q_SKf+V~N5CX}cp}w=b+$T31$D%b+<oNQPmIX<J!No+7XE*H;y;bS zkR`d->S!i9<@^S?X@)Kgq|$W`ZfpKfC3nfb9P7$T-m4S-iAz{B7JlbOp<4Uarwi)C zmPDDS>RQ7yph);b%NVS){a4<ZsIr^zIGpkS!c1AFY$Ym3M$|-f6C+fHa-;H6!e1fd zc*r>8F80*w^RzA%fyN=Pv(cN9prx%x6R^i-mgyyqQq}4F`*&o;F<CJ8<Zb#KM9AJi z&Mzsy(DVPZF^B)6qVx`)gL*KD8QMC#rv*XI6X=G?n&MQhJEC+M1!kkB<M^U|`nzM> zv^l8OAa<fx4N?4@ob%1(B;H=mT`3H>RW10Pj}^)7SQNj&-=xp^b`Zx5E)1CMtyG)g zPK*^zrLA98hCxyeEt|yLj9WeIJn_UvN?vGWWU|l5p2R<Btr2$Kj5ha|Y|to@^c9j+ z59(O<=%8gnT!(y}oBKD{XML#K)7+|>^y0MB&c)8Fw>%=cD$=Fvs9dxL2<Eb)`*(kD z;K9=rS{Ld1e$Q^-rXr9kFu%*&=`}vE2xu~V!d$j*xawFM5Q#K@kN;<X)bD<stO?(W zhUMnQUB^W=mrE-?@zxB~_+yWC)BlngKIx2{jhuX5T{N%eqWFwHQ#w?dn34HJJ=}EP w(e3DNyx`pk7LdDn4ZkUe)(@=r8@z_z-F3%42Mf-#BG~rJy?<(tE5z=44+5^=`~Uy| literal 2158 zcmV-!2$A<xPf12V06+j@2mk=R(tl7BXBr3aO*WhaRt2&ugtddRxq@A&*2J?KI?@3Y z4W+bz70gVJDL*;~cI*+jA~2(;h&^HIXd@?(n--6PATt$3FkYA%%CA_tIa-0nGvlCT z0BZ_(rlC4}@4Fj>#1Ke8pYLCp+0EzK=XnsswYrO}<Hn-janm{B$crsE&MxkLbo^=l zgZ|9@ij(r(-2g<y$>g3uCuZ0)vkdLz9C|MD8YGQV&%FTTsf^E>SJ7ck)uPGa$WhJ> z?gT2}O`z5pM+Ml*m~6^^7qMtC_wIt^6r_{092htZPrzi#-iYs(mp2$pG^nsX^N~|x z`(1p7?&R_~&dOEDF#l~&F~$bB>L8x@OX^jPfwnEV!LRfO>1<v6i7Vm+%tLNNUhy~~ zNWht35~~grWV7ONJMFMkLt9k;lZ|`Yb})u|^Zt$2aZ_jQ!i|&Z(JROya_}5Hk@azj zrGqB%K*8!Bdfufm=2fpu@WG~a=(G6+9px5r!maFdzL+=-q9j;9$Kog8H>JW-c^~ak z8BFC3iSpO*F)M!qZ#@R%={fE1^0`c2w&`G1OtP}jKrgrqw7Mxb^&P_6e;a!hv+>E( zmJZ%aIG|D)=|!&J+Ak|UCcSy<?fT6moIoE{(a`FId`nX}<Xjg-PlDXO4?FOUbnf4h zR1@eWsb8twi9P+j8tSoFsFmMO!VaAE4fN;K1asl1sQx2i^SaYd?D(%({9mQc-*}Sh z6g7^r$tIf>k8jNF$6_B@`5wTB9sDYG?Y3@d9?7P97)ReFa<lZB*`9q*70dWbXZR!D ztluwo{l3HccBfAFFowRawEx`ZQt0o)FnrqY;t#Ms<(f_Om`hg1Y{aK^AFOc5{<EtJ zp}r5-c~1Mq`~ixcfWd{?3-IahhL`xdQr|S2PScMH-U5CJeoip$Z-45y8lC@oIQLUj znPQV1`bpJ}pT4AkUtfZMIKy}2n<;h!v-j<&RG{lt)4K%p3+DKTlc`WYj|a{0tB@)G zjUHF;FV}K?b8Yaom=fUE<3k?PemL|&2hHRYjca;d_0;95=GdTD7}T#5MKgQ^X=eO> zvZBEi{c*bwHsvR&96#GY9%p=!l`kRT1_nrJsq^|Rjo_(1hW?psH92~^(#Yn+oiqK$ zK-T|F;jEsdn($<G)*nM3$~4Bg-z(ZM(_ik-UO--gb9es-`2;$STKi*Y9HGqGto)?< zOv9BXm>-!;Hkq5u8W_J;zgCg3im&B=WAQV6%oLn}Svp_4)nqOa<M#Alm@MbPgz`eM zP%H){3p<X(&DY^NVwCV$y-u`K6df|iXZ;%fB*ku^)i|GfE6aj5%zX9Cr@D?9Av{Fu zM8Uwn<IehR?u-vQc&WoyGnj5QRWwvI9BA08Y*DO=kq{5jhv)=q-`{}uN|jl@$}3I& zJq1G=lfmj5V`CV7b(8?HsTPZ$ud?;u=sQhq!XzLouoXO<2X$M241I@4Ox;s0H#nZ0 zj_hW>KElV=|2~l2fIiFKu6<(|{TUzH*;M}#Y2SQqCb<uO{RrtHdXsPK-w?9CUzpu% zGv<)b`U1QxYjqDj?^3F|8GV@CX3HZr-jmcMvw=dpGZdCu&tE}pQCaVH?)o~F^@E6K zcq9dZKAb>BwY_(*Hck7VQwJJo7wSGWLPGyrAH+_rAX)#6{Mk2ELw!=#Pau+2v`Z!I z=q4FIB!zF!FA)kum<>>^M(a19w4Ww7VG@v*f>smlVhIX?PkDrNQ33XN<gPpP;RGtJ zHsD{Hh;PC+VSUoDK6(K)D($95D1Jy(ATmoyNcIMkVy52thjCBBZhSYMi2qn%SO`w{ zH$i=v;!CQ$XY*w~QxkZpgPnUnm5b-%m#HW1^a5+29Qfj4aq%qEhn0euDP{s>Ik-V- zX&G5Y<Pv$Qw)fz|?e%nvyMR6{{-+ReP|N)-H%M-YX#sjOnO{vWLVc9l1$}9k^q?ai zsX`_#6Br;{Ko5n6#nAgTwLtEY4olqvkvYn1Y66tBlwOp&ZNd_uKOE61{leX`-sUc$ zgpx^WOC)=Ni%|k)ZA5KESHy6{*|m=K5pT12t3)VytY9xrZd|zT*HbG4zN|~OBVwBa zI~<7%Ob$y96H0aoP5**#ZoU~>@#wpS>6J#^-eWS*fvi(@$j{NYpI@6FnH-iQz6Ul$ zu8|uze!J}K()yq4T7Gg}H_#!9WAVr0Ye3vKI-Y$v(l1>fxW@A9r|4xDmtMTzc)t<5 z=<o6tJ}b$HF9xZJUn1K!*Wn{6R=;ZU?yK*sN7cGU?CMsNEBe=!8GAGK7K3E$z2k*A zSpn|B<)d1iwp-n;#;!U)gA<iIKF9zm2063_aiRX`72VjaJEsK!b7*-mfBQBaTe%~1 zM`i{SbRFVi9rTS>pVQUqYPB#c=6Q+v#_Pv}vUe~^&yLuFET9hh2B~X%kLix-igm?W zuOBpX>diN!55Jrbvps)%cHn|^W(&SU7m9nCfF3-q4>;I^hTeZ^$?+wJmmGc>CSSV& zS%eC3KXN8RpRP~uP47LbJF4~iZ>3%R^zG=1p_4;@108_0|MksaWYJ2yf4ilFbX~fx zM%Q@HdK2ac^%pzJJIaU3K?fj_2fpw{7Pand{+%vLpQcai1<|GHIzbQY9LgTlw^i4H zRJFsDx0gpG1t5!G0baaMqXwh&AiYsc4@KJZ-}Bpw)J2U&jn$1z4|SrGoM7a+)i;|D zU->=gAyOaN3j%sb(}Jke)Ub=xy1_jG?#OelwQ*;!i3UY_5T*wv+DJ9}@%vuL3o1_B k2N&E1-Sli1_pWL8zwe8@;5r!e<-x<(&@b1<Eo|oh2QmXqy8r+H diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_dropbox.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_dropbox.toif index f82ac61738676502498bf81444be67da17db761a..0d2780244310a18c48603e37055cae77879038fe 100644 GIT binary patch literal 361 zcmV-v0haz$Pf11~03ZNe0RRBak|B75Fc5|Bt`fWIe#{QNd8*N^ADU|BH{0pXcbeMP zZyGf9)ULWLfrSOQ1UA)o@`vQ|-UGNM6>u8hg^|r+O0&sqGNt)HxQBT~<s8XF8_zpD zghj*DEa}<G7Zm=`6<&H&PD$(PmdL;_v=Tf+j;T3gYUP<YAuygFRrd#YH1Gi1&g%2f zypQMi^w{$E1P9Gu2m8s}Ie-f(mL%Wov-!KQ!}`s)#twNHpsjxndKSJG_t&ZLl1VF9 zyLyLB^S%vj8UEDpxWm=U_1U3o<w?VJ=k+;I(Q{s(J$(vl?^lY6l_w$#bAxZluXZ=L zyH5H8-iY7ctMcM_y}c5`Ys(?&UI<H4P44nUb64pFV){)_X05)iGgmxj(p8F3wnxvp zoq2?jwV!;}wynF$2J##{0PZkn@6X8@@wb!@=iU}yqA7n-0ej-J9xE4QcS{=Mnn_!c H`gQ9Y^JlyI literal 852 zcmV-a1FQU0Pf12V06+jp0{{T+(k*o2KokYw`|dhwo7z3W7Tx;9mbFm5(O^q`YKsOB zcBusq8f=4JYKsm_fKYz&Gc(ZLv*+|a3E#|Q<^o^&N?PpY{5$^}eGd3$>}MD({mjTZ zn9KKX>#^t>c#E;0i=(NpCD`g{ro0m!UpnvsOUmBE?VgRNN?*}e5`Bf9g04xJsH0i% zSx)gG>zV!ujZ_;?i`|oagPlZcqbGSbp0U`8enB<gJMts6sk(bK1I|wJ{T=UME;=?I zi|)!7@owbj;w<%r1T@jn1T0BGUQh7XGD6?jN3SqM%h>n%d)1s@%FRh`VbjR(w$R7D z)(S0l_xk6fs^uH(;4o#GDy^~LvmhZQ#U_QUC3?VxmAgWfKGNbS_zFE_<qZR-_w`PY zlUb%O<@%_PV@c8$U8uxHFVSDpfoi&F?R~|7Gw9?AjXmGj^ik>(Zq^u!4gJ)%zGvhC z4;8l9g=sw8@R1#3U&KUS49~u9!i)4o4E5Wl$!(5|{A}xo+SY}&*PppKTHe9so}Wlj zLziW`r=tmYp?r}g36A_L3rgNc^~lC^OHZk@Y5t0Cj((O!s*WaPE%PgC5@z}-%c;JL zR;G=o!KXyu!K0FYpnqg-j77z+XThG>2fnA}o3eWiGYqJ%*VE@{$M>~;o5PiLVQJfV z=HkG?Tul8$iuh%$qj{IS#%9lW`3ys}jaCSFAv(Q1oB<1)5(t{wUol_a-ADBO<e<Sm z8dUF2+&vFJxBgz)w>I57OijYvH5Tk`PhMaCKV(^A|3k?)1*!3Ho4G=RPn&;sc3%CS zzM`*g|Cyd^2@=-``D1f(8!rd%9eq`NE2UIl7AVDmb+p0_z0I#P44B;tH^E=gg-&*N z33ws#$u2YR_g#t`|F+{_SrBN)##kaf7boXtcjsfTA|@+8*`7&1U5vKPs^sqd@mBF& zk1)hJQj<`5_h_cdUCU1gk6L@j^FaR$yZ6Lo@AWKLKlv7XJkWIi3ca(uKv|~RX9!q2 zTLS<WS6U~yq=R#(Ag@Yi7;uKqNfDFWHol0B&&&wz)LUq=gU^qkDT|{sgscnxT72B^ eouEPwe>-KFuFep!B={%!i5psU@s+RqulWOXAG?bH diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_duo.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_duo.toif index 173f1d0372d78c29fcfd69d09cce3412d1b777e0..25d4a42e3442b04575f7b94f608b6fe817b44d74 100644 GIT binary patch literal 253 zcmV<Z00RG1Pf11~03ZPI0002(QacWUKoopNqp#hPPB0p4ENzHuNl7Wm#$@#xU?bPi zNIVBdy@&>{A&RWXTWc+tsos3D$z}j*)c74Hh9VO$t*g`qOVDIFyDwM3gf-L^$ueUe zB0z%0J#giC@8wJ~C%~BJ&d@*Fv>(aaY=htWA>O=l_QYvFk}3bzKl5s~XVHEnSB9=X zH)wL<rJS;9>G~IwCeJ+9@SuJFVCu4kTV{YApY|<Ale&I?46w6x|JNE-vs<I8w5Q^^ zptei<4x}INU9$z0@3nWd9ks!ojed1MPNpuO*TB7)k6efa1ElK~D3t$JgG_}QHU0p1 D{my(y literal 463 zcmV;=0WkhlPf12V06+l40RRB)lEG@iKoEu}6v|$6+}p;Wls)b>7jaQM<d|z9M1nqs z6`{UHLd54#)INyPzDCtnj4>t?3+-jT|G2aNmt+D!5ClOG1VIpgN2-dVWynQta>;Jz zLT;E^=CfqiHwA=T%T!I}${Od+M$zm}`hMiZndyYz&a9Q)Sa|s){BkR1U8nD7@3h?P z`F;QC8KQywjo+5n?sK*}K>3epI*<DI>VE6O``$#ge-@?k5&uAzw+=ml^p7ILtm|L0 z>gK(|`Df9GuIry`%zKR)&OeJ@Ssj0X?43%i-)_|L?<`zv%f<SeP91;QpP$W(Z#Qg- zNyzK?I~><)%T%pVSy_`B{)FRNQ+0d0I8$kuc>h4+T6-?mpKt+vAL|b}uC?pn=H9$E z0L(SkFJOr3-B~#QULEw%;aEQaX0t<A0LDIa#|%zvG}a$L^=@|-p!^dKKLqU4!}*V2 ztGu=89H%flf(%Rc?&16ZNy!sLj(}=^%k7wuBVd;;l=}fJ^SN*f19_gf@80UChJa#1 zzR`WZ+7BRLXU+BHtmmdGW|wozEQ(<UP=x@)jM<po-VRuPwtbjAp2Q3Yf*=TjAPC|g F`2x~e@s$7o diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_facebook.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_facebook.toif index 78542cbdde5d47107ebd878fc0cea5d165f8affe..966466f6cbc6b26211497d772626b6f350ea0178 100644 GIT binary patch literal 393 zcmV;40e1dWPf11~03ZN;0RRA{lC5sTFcgI^?Pbv=i7ai3Mn}RYRf-0O65f)r(!yjT z9t<3-8df-1=9J|fiu?$HW6kPim6f`7((W9V`1Aeo0WcNAVv?XwE2>z<R^(HHi%AS) z#34oT%bi<LirmSD5TRg|!-7Q^S}O-sv0(>vsf!x2QM7VKwNZOK-QB=@bK5(gJ++^^ zs;y;RZtvH3k9rEd2M=wuEZUylp7lQuPrciA{+_q3ofoW|A+=OLJnX(*e8o~!SreAo z53ialo9RXtve5H)iBd_m&A$84bf42!IUnBLbYnY{pijfRENo|d%KpW>Qa6Ub<mp#y zQQ3^?z|PCsr2Q*+^BsIL-_Oy1ZoZ$HpIKgRmFM!r&1Lsx{bJ_Fp5Nj9tNa3_cq^ac z5eE+9CSEWOojkmS_wWyg5CXcE4=4mJ4rY#Ad`2Als*M}$d`2~x;%8IX_`s;G_Yk3Q n@`6Pef=m3Ehb~d)yr2|0j8P1WNrL-j-Y7b6_DhxX_~O|gU0KI# literal 747 zcmV<H0u=pJPf12V06+lW0ssKT(k*Y}KoADtp}WZ0A&D%d3T}yi!AVw;RTLev+LV+Y zEQ&5AF7v?_RCbGe%w>jk|AAqSCD1VNg5rxC<=V9Ccz6Agcc?v&Ju?7ualj%PjaU!I z_@c+_deO(&!-#3rA`Uc{6bx!(tnV)y4Vu<0n~;!ldG{+4V%B7Ls4r!2%f}9_`VArR zl<aMJ7!p-GfNmvwTU`tkbeH(G=$lQrl2aJcy6kNYsi-}Gh}Es<6|sSkK5azLYbx*s zQDgdM25s+M<_=t<+I4a|x_-T#|H|v>c67bEnw-rFo^=Ud55PxxxqmXhyGb){R#&_? zd<?k$QepF>pRa$j!t{Ue-&%66AXJ$B(POqZMSiS@pLSq^Cq4VuyDU@nJv4Xxj`ZC> zo@JT3AL||Z@$cm?Z=O{1{SOmJq<23#&9Z8KtSA3(z?R?rZFS$qjh=$6UOfHF=h=Dx zWG2`pee(?}?>{Yg`szxqi$T?<zy5!Y{_VGHmwW?`!t`f4@9$^l@|_&8i2PeI*IymW z_pyjZ>+)6lXf$Gn^dr{8L;5`&AJiY?i+)I7O|Q=vtI79FAvbAV6HxQ#iHI(8e`<bq zCvtzi#{9{3dFLKRtSNtXUfwxk8g0t&pOkmjs70FbpBAyeWn097X8fZ+BEACvHa6j3 zK9}n@u6Zy@FJN`t|FK)#eeXOmIxY7Nn)@k;Olr4yzI>MyHYwjg6aHrUc@lC6KOtM+ z1RvY>eKg@c9on|vp&$751Uzih_jdk1Pe|JILjqs2WNrCN2Al*ES6IdOF#vvC(uVI6 zD9n&H?GGvJO~jh?BL*cIz?3!RPuT#<GZ2`8iXRE-Vs{|#m+k#?T;gM0zK{EEz9<27 zu@1kB0jMS<9#-)^3<*?<2^#&n2@&5%jhawLOh|~0GQN!osmFd#3I^SNMX_(AK~rch d4p>B^_tC@jVljVn=h?;LVR|2F)FO^_zkf~wb~gY3 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_fastmail.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_fastmail.toif index 859d3b6f609a31a78921c933e90d0c21200c7a2d..11eda901fc1fe4aa32ffebdc6b05d12768b85b7a 100644 GIT binary patch literal 597 zcmV-b0;>H~Pf11~03ZNK0ssJ=lCN*uKorOCY*3>p$dfga(@+hj)W8KEX|hGj$|ft5 zCI=LFQKT4TGzL`+Iw`0HLk5*X0>%Pn6?IZQmBeUZe}N@~u}vDPcIWf&+K#n6<hy*{ z_xry004V?UfDfi{g=-3Z{MG!|11q>?j@f)|nHAjM1%Vyp+2e}h*&ReRv<rS`bY-l0 ziEGQqnI1nFw}Ku*IU!q&4?4+B2WQb@(%T^{qho~@)2qm(mAET*_zvV~!UI^B&q0)q z%(}VM=-fQ(?oHSQw8Q78C&}3^@?Ni<dU(g)ytIw363@j)b2r_PkBV*BhN&+(^0k6= zqUJkhai&f>coO-dyB4co55e0iZr!Ge*g>E0Usd9s&hE!={T@7kFX!zd+W`X<9Id1C zPXgg>W6Ak|y6<H9hx1=~7wh)@VQ`f42-x8S8(|twzfH2Ed{~hSs!VI0`1+|4ekRiN zF3b4PMXX%pM=DLQj{o-OgO#%7e6|0(yVq~>beaG1{2nXkc?9SNY*5+zl_}@>i|G9< zuDCz9!&i&@!>Wq+XCCg4qy69hE_3_a1AI8abEYYO6{?%M6}j1A2Y;Vw;{Y|G14L)< zD)9*dPhOCdg+37W(F0)-dKboLnbV0t_j#e$dk7GvZGBQuIu)ra+qmk-DHl_tbCWt1 zAK&8+v^P#>-oFr1BM86uyl+Ogwq8clDTHyXK)N{ENFAw;mXP7xlbVc9Kv&8BJ71>W jRnGRlkHvYCqZL_4^(2dHykfY^2F*lI@}!x#LDl3xmP|6f literal 1185 zcmV;S1YY}8Pf12V06+kh1ONcll0Rr7SscfI^M+i8G%*J*%x$Bo+!4;K2QFl`SQQRD z8*>cV!m&|ib4V<<*@eR*B+Fgks<jaoyDb$C&f+Y#x+HLcBaIf;hX`AE7H0~Z<s6OY zdvE5=A7@hR?^ij#_ddVx_xA<(yeb8oT$78T8k(R7{F7Nf;3u<RG1TNXxzs(9&!ENC z&=cOeYpBJY`Oc0wAd^!>IKS8#uIGxq>>kQ^p5Y4GYq6KzMptXILonjJu$MjJLTjbX zN_mifi?-2-YtDMaZKJm+Xz7C6L=M6Hy#$||ZS{;XafZvG1Y_QztF$Lf^Hk=Nws(_I zHqC2-k8n=u#@n|pvz*~>(RvdMAz_lBu<QJUP12jN-NKn+@9s87YoT2T@>WR<88Y8R zCGb)u=u$7XQHXh(cC3a{;I&dvL-aPyPhJ77-8+3T0q#Nnp<Fl;&CZeD2l*2CRi(Qe zJm=p%ZB!bS-xcGT4CVb0{H!4?l<Rc8vl4xxhn(za{rYux$<}+Sk|~T3>L)1dHy)Dk zRRN!1i*SI<XvTN-dSxY?{|d{%8^Gy31ou)Qn5y^$gTV5i7U6!GQh!oD39QGvpza+L z4*U~0b3eh;yMOlKWCY*4rN0mS`RE1pR8gpED}McM11ZA&oWcEPAK=rhTh3hw!MEX$ zk3T+sVTkc0i#u>C=-)Ou>+Id}KRI<lSFY2|_+$pJ=l?eeehFB7CoU|Nv-p<*V*+B> z_JcfF^DSLiDQEEk@>l}eX*zu`ksY7q0;!zMKUC-hPB4DV8Q<Unt(?vOExqE41^r6` z+y01i#>ZVSQ_kk+<Q2cF>0j{lHQn&%E|@E4^KasK0=@D7xc%uD7TY<0UH=Dv{qUU? z-Kqb0{<a<F&rZ3U{M9i2OGkWr<!t_;vf|ej{Ywnv2YEZbGv#c4UR&|oY5hx!!xLDt z<U3W);$I4Q`o?kn+a|%!a4fzX<t%<w!ui+p|5JeT_mDZ?opKg`lEwL_!s2TiOF)7T z8~E;(oAZlM)#&sY6Hul$@b`~jq<((1PG1DbmyRXl_Vs#0Y@mnWo@%P%{EeN}KQ&~X zK|hMj-pYNwBE$wJDC|2u31R`~M<ptmgacoH={G+o<MgQ-qW;hP@4$2Z-P1<pT=bKE zF5>h?B`X=vwC4`=AIfu|_O%PaFZzYBui^BLYIf=h7Rs01SBt((P!#$qss4!J?cO)! zxz~#K35vpNg?#luW@ofRP1;wzZQ;E^dq+)LoF4@88hL(STR(~C;y(3SUK<4L?o_Ee zjY>{Vx@IRKC)4j#9ckIxZ5SpH3sK1pJt~O>`i+LRwd?Hm)~?ZmMrEoVOGW#<!Lc+| zjkl|g>5DDoO(xJ^`8OMtE=@CeDMY1iwrYAW?>a?;Ku0xuY0<KFsMOMX@=g3Ez9-kx zhl;GRPj?i%)R`yfKxV(`ybsn$@3M}>j^c&gQI16LSXt9N+4oe<N+Iy0LJ*beu6(E~ zQJ>hW+SnP#?Wd?K<M_r7+*_Rr*Wq!zo31Njp*qieRTB$!rJEkdufwMTd}j3@e7bNR diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_fedora.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_fedora.toif index 7b64093043673d19b5ad7c8575577d11e35ce648..fb05ae9681d9ad7e70951e657de5e5463714347c 100644 GIT binary patch literal 638 zcmV-^0)hQhPf11~03ZNz0ssJ&k}+)4Koo{=i>F8@ioipM+b$lka9UNW2~wPm3@!~} zAZ%F~qCzdCMwyr#5Gqmy5^7nJu~OTi5mHIFOjZ;X$paKTX0n3R!2?La=kpP}Ig{kQ z#eS#n-h2Q30PvzEU}%aKa{aWBDPq_Xz+90B7`iAeO{a@6%+H`x(9Q7Je|Kb3Fo{K= ziITXt>vu~7jea)~;?NqfxU{a=uXDq35RK8zXS!drkT$h7pN2)o(zx#!>ajv@h%3RL ze4rhS#<BR)GgNv*6Gc_yZ~d`Psjm03U9RuFy8Wh8AiSZHEtrydz}Ng;mD0=3k;ZBl z3gxd9@)mRloY4J4oAM7!(dtUTKUT>%4kmEX|E6Dd;??7D0y%ILaca_=|M^MyonE}U zt4tI~OTN#=#dxN`o!}3P=0dzIl>>TJrT?aAp&5KX;zemyrQJ^yTCq@6J>8$~QQ_O+ zPLJfdM|fvk={@oDb9*~{`$>1AAme3eDND}oosJXYdz;ebP`fCvhkF_7(?tIFAvs^l z%8?z}{ERl#)1ulvv(M~Hn^NcArA<=pZWq2PwQCxgBH>RIw%5kY_lqYE_;R?HJjeUT zvn9Almf~+RKTrJYqFTt;q(ylQ3BM8YyVv?RMucBa<lRgj5I!C9H?q;wtqRqDZ9j=m z`Q0f`ofDnlNXrc=zggkaO#}ernF5`{`})d@tLJO`2Og!9wzp7-1L~iPzyUw{amO`A z1C38>0K|BD!zV9F=Z3JzpB#Znm?Ep!q)y%OSm#@Ny28_(sy2zLz$PH6E1RXQ%C84} Yw_unD(@_;n-^IykAydS#B>-;x1!+4*2mk;8 literal 1185 zcmV;S1YY}8Pf12V06+kh1ONcN(lKZoR~QHIH{Nu}Ns4(X9bP7JgG|mc0UcT7CB%bl z6hpAmsa~WQD%?Z}EV7&@=?ZbMiXkLf<VmE(q6(C@@+3`X4GLT_*wuC(U8)kH(r}fd zobKMccPG7*?C;xjPyF8dzCQr0C3AWp2ve|()X!Z;DHw!$K<2<DRut%g0^$Yl&iC&T zow{8gL$-GT)dSPA^?=G`o2?>!;yaW$f3|gplJ86)kc5-iW+x%?q01A#9G`;BvF_ZD z^HXFq5q|O@_s@5?<00Z3OBRC6bDxQ4_wSw=wmR(oTfMe8XFC&w<LUPp^_iu$hC!`o zXMZfUL~9cF;Pl_FDQ&~OzWgyGtxD;!XTY}ikkI?x@T}8jM!M(&ahx2;9GiZ#W{jvu zwSjNHfy~i$1XRT0-+47kZyOKSO+Pc-f{GB;Pcm(OGeH%*C)!ryM0<UH*gb7#H!S@k z2WAqJloXUWw%q;qCuzTIzJF|GJuNIq8KPUm9h4k9V4HpCF{xJ-=c$%R-XJvG!6doo zg{=mzKi#IEBX3X{PCyU%fBm-+T!%IHv-lRm5>J^xo$>YWiRu4!-~H@!0iS^Nr9PZM z0kQd-V%LAuyienPZ1{Wr^8})RP3MKZw{}0f?|nLq`DxpisITntLa%D~KkRy+zA<n2 zcSP&UAcL&aCw)yB;Y)6Q9$xsYI;+2m`ODZh0A%iR{WOuk5cXB(*tgH-<J(`5@UMCx z2rtv$5%JfzMErXYrY_MZ^^6oFPNZNNP3q4UX=mnyjzjN=<f$@JJ^h&QTsRP~Ek51W z6su1(yZ`K5Q>xo$hoAf%X^HsO-CoZNs;eLC-+%Sfzk0d0!BVf!v+FedK;$X@5u(}F z{kuzS`d}hIERLSNn_t297Wv-rQQ3`gbed15X3dwshxrxJEnj8AcV>3>0lR+KeK(wc zn36iHQ_${LL|Sgvifnq@=;a3gygr}yurE4j^J4-{U+C}d=frF=yKnY!757fGU*1}M zr??w$i3j2+dC+>m@^47a%+hBUso8x^;RU}fbEd!Sc>RuRYI@Zv`L_TteKL9O`t<xf zw0v^%UjLhxuLn$@%w9~m3O@==e+Qd>SmLk1&m%DOE8_UmpO#<e-2B!R`0A(E`+I++ zVfWuDezOOB?*Hp^yC2T^f4%9)1iPP+<~;tpnJ}=r9cTAT9Paak@3nz7Z2Gk>yPkvq zkbXzRZ;*ERZ*d!c{c)95KSBsN{WLKF`VC0kFkU2BeVGFkpBKUsd4rB<&%sIppZrC= zZ2HZ;(_bbg@NoT6?W4BU=v9xaH*0s#3`((PFE|5$o6id^TL$(v+Qz8*u*;}J0K9x& zxIS<Cr_E71tWElMr*GZhO?Q+YnrQE4sfau|*uqE6OP?*W*hdJ@yuFgpd45?4_xJB+ z|Jqz(N?j5n;9ez;{;#y~#rju71P{Bt>Wgn!Y!#I_Fro^`{r@vd;hd&)cQs`-w-RUD zxQg6%j#reDfl0f7>KqumqMkEg>Rb8#tD}IuN?a1E=!m)1ewR@S2B991Id=DdeG_vt diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gandi.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_gandi.toif index 19c8063166b2d24d58caa0dcde3e01b37a83fcbb..def0c44fbc84acfae94fcbc893db5de01f91d13b 100644 GIT binary patch literal 576 zcmV-G0>AxKPf11~03ZM~0ssJ=QZ0z%Ko}iSF=9o;iinETb=?M5G*FYeTc~K^#1<;b zvf?Nwj-{fMm=YqEs$*GEN<^V64tnAs5etbaWJRGX4pOnuh>8&>MywdIVy@HKx%7V8 zB=^+J@V)uI@4W}WK8&TK%i7@UwWWgp0Mhb^ZV}N_Q_09)%S}voP;F=9OD1F4<aja+ z+39taZ35R}EZhSiSMUkjVJ&CjcczU0GEzXX5^YXC8B1CC)i&Qdk63p~<si-cGx>Nz zykZ4_7Q9%*>iGm|0O+tbC<TX<{61pU24;?rrLzg|{SdMr0jLeQoA-P3@O~<$<~3^> zX;&vY1VDLngaKCe@h#ORyv8PyDHPWs(w3fJyUrmc<_(|3TMt9mA)d$~!!VpB_&9Ia zgziBpNRt9fm4m;zJ~=g8FrE7fxT*WUP2oCMC+X9ZD|C0<?=Ie*XUX1LeqIS~9vxjO zS;(8&W3SF8*;3E&rOvq#ed>wMI@DoWK6&e28}NIv;yPtiMt9Es+{Nfi-2Eo*Zzq?` z=$DQWt+tcB=e3<FyWQ0P%z&jH<|B<)e!Jz}`OUy0lP{xm{qG!pYhp?-7Hip3`5q5p zy8R8zotw#z8cVGX4b0wOS4nAb9X`S5+uhfBgTI!7Bn3a53$;ECT3gp!@MBx-|I|y) zUuP<QD5IrEye5v*oF<QBX&BOfz`#gLm%*7VREW`C+^Zlpl#OD<vq`i`oq?C$kA@CG OX7r_8Ay;S}Wc~!N6df}F literal 1237 zcmV;`1S<PfPf12V06+lA1ONcNk}+uVP8h~-aLCZ%h7K7V66m1d@Ch9%xF~d};85W| zG~giOP=Z4V-%uorh(i&F4{;E25OgTCgAfP7EP@>b9fWi!n4v=khZ{QF;E;cdwaIC$ zwMqPqckkWvzR&vr@H-gLgdX<X?_u*09GD2@i@w!sN)m}EtX+*SOT{2_F!cfbR&QXP zAgoPtDe4gFCoJyk7N~ls;(iBtSe5iGs5&gTy@fch>f1@8r;xkTUyaviCYjdVbl@pu z&RtCzaqVE14{OHR%d83A(+{N0UblnG)1$QELIW3r?&&`YhW^=bmG*Og60J^UOhw(( z&+=xc2lVn(Gi{}T-Av$hOf@C%vebkO@UUIUyp>nlJ$(=BHDyhGPheMC%ybja{Rrir zJ_9-x{Toz$&N-=83{G;LN}M-5&G^ZANxD)Vt}2^w&i$*vf)-+asXphzpKjldi^0|T zh!c^udQUN`Ug@s1%!-I6x!-hfLhSl%xblDjcL^&GuEy;z^%Qm7GHx2!7u{b!kS6~> zZW-R5`=|A=rheYYxTj2VgRdP$C|FR5w>PEz^~=I~wx)HX0|t25`^2O0r%)DrQA7Jf z{ZWuH`F2|0e*?Z~1Fv^*+<K+If7OJSC3)jrAie+m5n_kNmhTb~YFlEp&~snictZ~d z^e+PV?(o%kvjZ7-r4jc^o4a7ZfWD5MwnVg9znB@h+?S`2Rnk8k^=i-kPUTUE^JU?t zRFxJp)v8bz(TD>!xQKZ*{ns>bmS=!Hd{Ju;b|a#=ZT00Ata7l6#q2KOg!(dx(|QB{ zTwBI}A2NR6AQ9?1Mi1p5_0Us}(kTi!P9EMT{yu!~gNXiBJS=bt=G!#NxGHHO2Dqnw zln!gw+Nypwyh}tV*TmlwFv(eauj(}=kj_H@+*P+upI1Y<0S#OxkhYq=fsb1mKX4r_ zWVQF2;_k**G$B3Q-1%|K!-9j5<<$+}VIf5wM!gAZ%DQ@-XEy3mR1-F#^IeTNb<O!l zfmF}K>)5n@HtZ=qg&uY)zNm9uFyORBPXFJ7`F93TQQViYxkAQW=_$lG<o?Ud{I`gn zLT1lVPDHu|VQtPi(Lp=dAZF`Ik+10^)MZK4w;`et=lu33IpZ$QlfJLBn4SCW>SuW} zd)F}|bu~rbL8oGO2a_DB-wv*BPS_;cr61PpI)Jw74`{DOrv7YrJ6_L2oVTZ67Pk4% zfN9;Fwxe{4%EOxyssC1YHh;*JKM&iLmbYGQ&M}{7<W`>h5z3B!G1wq7P7hP2|MKuI zfpT%)*m55Bl<oEV(_H(nfql{M>eo|YcYboq%OCS_d;NTEU#Bg`UI4&FOvYpe{}i^( zl<|{p>H4E!Q~rIU^pN~h#(xT%TV;S2x*e014cra_+l)BUfe#O=Qaflk8=*4(o05q1 zHL8-m?Jr4DRY~7KL{$mp0_n1FQ+n<v(PqW2tp1#0a52;Orc-fZ`X%=X5$&hml?F6$ z3<d<!`*eW&9u_zX1Lj;<`-!%ypSE6U-~w6*_thQhi&>UWQNSgduq^Zxb<5l@Ggxri z_e}=$oI7p3%#ujP>bt6p!&*&wtB<$=&49zefIQ6jspv(_7u7;1Y>GORveWzzxBq(+ diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gemini.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_gemini.toif index 10e81eab143d6600e33be76b28efe226609ea274..3006a28fba8ea39df3880a61b51e769c6c8143ca 100644 GIT binary patch literal 548 zcmV+<0^9vmPf11~03ZMu0ssJ&QXy31KoFh0cZl8hav~d<eJ^JBy&`H6hp9Moq6Ps1 zbBGE~f<P2gfvG`Mv?7KI#8qGsC<G@euJRC3h#Eu<qT+fx6E5BIvPn8?+L`&2Kl498 zb#z#t`{Ffd@G)!`H!u^&dS$%}dCKder##7Vsd?)eFE!9XnBmT%IXj`uC(jqp60=?1 zVddy+fqf&Xyv=+JZIRN1G7h&4d-i0ju-f1$ZQ;g`49hRN=d8Dh-4DklpBPsAC3lWt zsoV?}0{4qc@AKL8{MC<zwV`1@h|2G)JmlE;z;Vuka41vKEva~j_l1r9qgHym*Ua%V zk!8AuIez~wYKrxHi;$6>xugEcJO6_S|LyCa9IuvaOvY%M?nK)e#u0HvF7#>Ek^HZB z9sIfZ;w5SH2oI+JUVhJO)p+IMjzNgOgAjMKeO`rc!M#!Vfz*%T(sZA1s9lcl!J%Ah zcST-hydFM=3EwB34#KQ5p*!9QTN{^tgQ)wi`%KuAw|mcO&eqIc1I$%<HFNY(2H`KZ z>G%fmx36Cm1H*qPiz;JC^IN(i2Hbn$=(#XzELB{B?-R!-R$M)$YTL=62dLOcy5}EB zyv{B!s<mK`s<+IIf1&+S!{Or=${Uf_u0{EMJ1ld?Qu$(sv^aq|JBw1vE-KI&hs@P0 mVv^==N%WLM&G^O-WokL?SpODd*e-5>@oC_TKL6^~>Hi14VHv6b literal 1042 zcmV+t1nv7&Pf12V06+i+1ONctk}GiINDzkGaHdK`<H~^@RXIRiWpcm)1~C!vf`D5P zDq;hJ954-#iGTwP9B?2DL}CzdB)|b7rWcq4A_l@Ch9}^wTAjDDni)BM=y_nfnKa#B z_uoIj&k#L$BU3i#cgEW6;3xcQ`23MIsrx^$n{>_>812je+s1@8Dq~ORr#)mfJNPRr ze+IMm)rc@{F3lHGCS7B}PR;^HxY%=xM^+BI0hfHc_dk544@gh=aX?mj$hT+oxm5yv zo}fE8WcPdCy6_ttB_?PaMJG6`%WmJWRqr2p-v_;}>Jai`cbA<;NNBpMCiRpF^84U3 zk(+d|TT5TrCAOm43(3d7GvXc|nzd}T-I~<kU-L8v{ZA_Wo>uwf732-H95+~-akXC0 zr(a8W*Fh`y^bYoO`p1QlP+*c#L7&H!Uvm2wV94SwZ6iya1%bG|n;#GNIs3ekc<zux zp$LVJR~ara6}qkTVth?>`a8oN=VIzHDaOAMN}i-}K!4-=NA|=$;aeL!h0+$Cp3Ot# z22ALQ5s262r;YpB8auC${GQGp{tH=}5mukO_n)#ung=*KkU@%9(n-%B{AYpBw|OUq z#>T`sqS<?Nj$RgEOyb@l-=?<>mF?k_&3^o|OXF)S?*Gb?f0Daja##6R9zPV63#xv< zW$Nb1f93IKAU&e)_ZN|_b8tYm>&oI!#g=WweW$QC<?bKpW$|6`#Fi7f%M;ND<;&z> zird?0DZaNA*X^z>gMUHgmKu}aCsb<hLRI_$k=ifKQ{_+Fh`&!6RKy<;N6-U&AgU(< z@qGr>@Gq#`eS6C*p?=7r0=}!b?tA)MlvlRP6Xoz{FlFlI5w;C$t0olF-H@{Q4vvY& zPK+SIj_`?FA8MY3`#c=&P3e(QidVZbz*}}`=4x|kK9Ix8R+pWPvl>TlRz(IF@+;an zWEtiD_GZ!|DV6ka&Tko^JvbgAkE?D76pAs4JI#6es#g|QX{;E3rN^D789H6ixGLnu z_)^KY3`)8X2)Eo9px-NftW1?{;lN>m3k<~_{fs(J#04De=cM<+!MID4W~)5~ThzAd z`S`7R++l5IuhxWi*{A;=O)BdrIqDm*Hsg8^Ka*_L-I^!p*G4}59!Ma1*x1c5L6^wu z1(_<7ajV?GOMQhVmAgl%F(?o|mz}=hS-pSM^R0TI(9h~nC@lEJh?IUK9J1M-w=R5P zBUE3{c>{`u1y4LmbPX`%D}6wEKVI};KvsIl15Ca<D}nwVQ?}jvJr^527JL4zbSN=y z$kL23ZC)GQ8k8IjSn1~}*h_Olp`vKO@6_kP9`XWx-mHu*qYs2WvN^vq*5>(U-)rL! MK4dS%f}bP)1HK0b^#A|> diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_github.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_github.toif index 7092c7eaf0fc64b8365a1985ab1ae8b52375aa66..d95a79db0c5f703b6a7b87fbb50982f5c7d08e6f 100644 GIT binary patch literal 540 zcmV+%0^|KuPf11~03ZMm0ssKDk|AvJKorN36%!SRN@SZLN-{x{8JbjV34+hj<P%FJ ziZoLVW~utpASXyO(WJQHm>?;Jgb5NRNNPx0S%Ek)aRPDMag;lt(0*cn_ujqV-Fx@` zrP6Q6;}?3@d3u8Z44&S)&O-P2qO7RCk5Pu+$D*3YY7z|46~RE0F4G%*3Q>-xaHD6_ zpB5^pPwSj+cF=#Q**T_%wRnF5tg`=_ImIh1`(WQ=jD|HzS4xwR<Od;+pZTuS129;* zvMt*y7Y04hb)I({9PBG6VI`yYmvP>PUdHD$tRuRgJf7}%9g$3;&>2bp*Oc~;l_)sV za%kp5$>Tqm*IEwF2=g?q&x`oGeyA6A^>;}c%XSf7w$u8%1jq5ApT1dy@0)3TjBrfn z0ag(nFh0jIb=#L)gfIKlkvN_lHnNS1@Y{o1CcACl`m~?>hdlcJfmYx8I8!xfW*d3@ zHQM9p>j+g1lA{~IuDtA_L|HR*jMBHr1fn`J{{rHRzL_WuF69~=_j5*l!*-9QNw|X^ zNR%5R?WMhBUv4kaiDINl^t|Pe=`~5V$qhFK%Qrixe9K|aEBhC!hR6T=1FVJq$g$_5 zdQ7*Mm6N}j3HWcOuxd28^PfBB*U?NkubByhkW99XdO%b!ZG8}C(d3_3Znl#s|K(=& e$L^TyDT}Yq6Qzj5hqaM;{C|(!$Q;&6zo2htRuW|Z literal 1092 zcmV-K1iSlGPf12V06+jZ1ONc-k|BsHYZS*PY?xq}V3=@&f?)>?3L6~QqF}fK6V|3+ zxQIapgUAaaQ$#k17>416MGOmWSa=(R-5_WYG%U;wf`$bRh6x+K@WK~1d~fCAb(}fQ zI{FDO+<!gi{D0>=-=AUr$g2WOUMNVi^0Ug-x%$tltQ4fY5I8$G&VH9Py<#j0q$Q~s zn*Lpiv*%!&qQBe0<N$TBziWy#*^N}%ARd)A8Yvp=iRhiZ-C-i0_TN37oT#3DY##E$ z+k#Ng+afP`r$45Km{8IXKYGkUQ6ZF7R1T-N%H#}cl@Fu)a^y_%<-Vq~iRHQQWJ%bB zJAK7x(e8|jI!EWQgH@Yb7Oi+UJ|5UNzUS6k$x6lWLarFHvL@Yg_G{w7etOvP^Za;Q zy-XaoL&dnXT$vx+>)|~qsB!jd5mIW}H&jvD(DZPQO@x9qF3!f;8W#$(iEvKS(}s#< zWp|>~w0o+k#zA~dcfQ5$=3Pa_>8k0@z7anJa^}mO%J=1*u0uR>q%cy4{<3(M_Y)GS z?{)>4EQ0!=OL-IYtAu1xV5h4f!CCIlPUZJ!uyaAOc3pMhuBY;;{HHSPeATsfso?eJ z1BQa;1ISxN+m72Pykk<J!A}aX`)zd7A%huxd1ff-<r(sql}&xxhU)JbTKxA6<Ueh1 z>KOc?6;F%5;vs+hJ6#_OXLX1fiW*`k;bXC>c7W=&Nt1tVItiWMFNCghem)^?d==5; zLl<`E6B1`>(c>&kaNjNzq{UAPkpK4oKNe8^HA9R4nt}X37MnUAK=qzZi{H~Be>~XK zr){WyZPMajn~?vsy{XFzoR3C|2ECDj-DPFdaT|p@?q-3L=>g_$2D{%zw_PfNdr<XM zKB~gbDzbL@yJU}EGpEqu<gexLTKftT*{fFhSbD3x-?bp^{!$k0@5O_>;FX;h@L<1V z7TJ>(satbD5nJVNrgh@w`7!l_J%n82UNdtS_F9p;eQLxH@utdsR!z|quWYGUlGs?& zW#u9WaYMmYdD^ZROY)V5c*HyBOU-QuKdx~X!ASkDf1K0(8GMHy?AwAIq*4>Un`+5G zY`p%VM#`Cs-Q*ma;;mFv<KX#l&f15n40F@GOe}55ar=9>6mJyH?Vq>iW{B@U_mq{V zoh16ZZv4NWzoO3vZu2AF`hxWZl0sfE#iue?ziAeg_sqWA{ZdbNr)LqAJgZD`d+!eZ zmGsL*Beml1W`WO)CIz?Yo2DCmN!SGQrF@nYye&dO#)I7XzT9ChMa7zeNd3aHL%?-X zbGd&}Is6^6vOD|DjE(1mw2?(O&Exp8!gx|6)xnUDrhDfPaU;ceR#NECXz=^9yuci# zI9qC-%GdNb%bcKxXl#5eKQ?}dG89yhwmZ1<xA%&T3lc+757B8`MJk$zZe0^`-ScnT Kz3Y$uKl%?h_dc)y diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_gitlab.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_gitlab.toif index a7eeab8f667664a4b2991e0700dfb5e137efb443..143ce303f901c9c6532630211b3f6d856af9666d 100644 GIT binary patch literal 501 zcmV<R0Sf+9Pf11~03ZPA0RRBCQoC-#KoB(6A*D>|(!3;ofetA&=~BA19j6FgS}H*1 z2l$1U0;NhBQ5n1B6H-K%tE^NZR6a{#vCqE44?s$GoAWZW%-oG6{Z(OYt(}8gYq${S zyS{r4zZhq9>$r}M?kRQ|PJV*9{B(+6hVxyRJFlns&Kuy49q1}dq5EnTyPx880VhAQ zx%^nEz69sIvU#<GVqB)`;6N!=uLw9buL>ILr3uq{T;||;$<LpcWqc9G9O%j-m~p)b zu;$+78*9fn{ou4Yw5S#Gy$JaKVZ8`Mltr6E;D353Lc#{LE#jlCfT1Y*^g#Wdy>Ca@ z-N~^#nE%}gW0tPe%=kp8UFm>VZ-<1&teWYq;uDH&TIGOOZ&SwcR^*4BQPieo4tVu# znlZ>vbBK1_cZ!+`4rZx(5@u+$gBNJ@toM|k-h$|Wsn49F$a-(|l3ZWkzp$xK^A0lg ze#*Xo>0k5NluiFD*-MWdr0Ns4|0SFGbboYPn`HZ81Nmlr^34(h-P(L~rNUCL@H|V? zAaT&a11>Rmu3kwMHMw;NyT{l8sE_Z>A(LC_WQ`Tb6r?G30O}zz-fFB!XV!Ftc5Mm{ rK>dKCojH;&sz%QyBzy=Sf_<jam%gM9so0|J&CyF=Qd47UNdH>D%^Crd literal 952 zcmV;p14sN+Pf12V06+k&0{{T+l0Q@8Kp4h%B+OW*w9Jq&LrE!J7_p$ErPDDsbhdOM zvGBfuLxVG+xS_JXM!DGWAuz)=43#Of%$&;_@@M~$O`<lwTU~B>p7r;80r(km=Dm6E z`|`}ws#o<c8)da$Hc*~<n)UwK9lEcYW%a8j$~(Kudf$CU_uc2R`o;1vt?~?r=3!dp z84%6Gw8}FemKV_~$AD;FL<=47qG<ooO+4?gfru75&STMj=P{ml$Uu@7I{HbGcKsxs z$2X9qRosAgk<L51$xf@d0kJ%iR@JK)Frc5*Ju;D<N75>0Ks1k}Rm^}`9-UTx1EP6! zTIkGsdHUx)Rvz5|ofbM*_j&rS?pb*>11wsYm~t%It{n67NCRwI`3&&$NCRwI`3#8V z@o42SAe#5k@Aw+`NOS9V_9M;tX&wKeAMdwj4m1MZk^HKc{YXAP&4Jb|YS(3HD{YMf zFQ{j3uY3F?1EM}%4*OsG=-=;$`-0nb*8bZymn6h(ul<PrNB`F0{O;dd*8YEQ9P&Zf z6&k?w@o}Ne{ADMjfx6dWX4ruXqc&{7>_%UttqqGB;L*2XyvyvOesvuGCT%rX%mACd z29r(d81=iG<kxo#1q`t1y8+R&Nz=z?#oU7Hg9fhGEb}W!HksWteS934*8q#Y18F_# zn52)70rMDO(uedGcf;y`KTzBNoxTKF9qy(!VD@hvVFNV!PQY%c4bTR%7`T)@<QbsR zw*!~S-t2<iOq9xke#eF)259tcMtfy3Q9x`)L;5|9c)<(PzzacNW3-QkfS7iR?!nDy zfTX_)=-k^aKpkDSX5{@9u?5$3`d-@nit^W6GhGIpsSU{AI53NWG=19Mp?yCz%ce?f zqmg)l7SQ^&BqgF<T`Zd*)9A7~Cf=TS!8y@>o}e$0?PEUo^qAfBHac+wYl8kd`d=qV zZ=Bf$!ZT4S2@h^;4@m<WbMGpPi2`!YXc$kjA<ICVzMW_v4MCx4x8feO{R^fE1JgZy z4aT{*TcGghvNek`S7DEzpzq_atC)FfCbn_BsSWo1`z<&p=*P|12B6egHq}MAhiL;L zeHVrsw`_vaN0-$x&NpDvfQ0FPw5#LtxToi}|FMm`7u0v{^&Nc);*B%A;8SO!RCXSm zy#Yku2{8AG0={78zwjPPKBkZNZZrg6Htm+Xu^}>m=-bfUv|HdyN0<Np(cpAFU2D*q aecs0LrZzBq!><j%x6M=IsR4eb!2Ac@r15V6 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_google.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_google.toif index 5c628be2926a8cbbabf693e23a2d89ad9ab9b843..3ae8dc49107fb2897cc561c4c79e6348ae933200 100644 GIT binary patch literal 514 zcmV+d0{#6|Pf11~03ZPN0RRAFV88|v4VVj4Rvtacc8l%Nvztc`rp$bl;2^<34B&W_ z0Mz#i8*EwG=zw4IA_rW05oX|ahjJr+y%6~9<{}Slx>FVsqZ<StC1BA#lM>y`g;-QR zYF+8vsodx?ap_L{x)U|n9--<zdh$>N0|!EdgM@M=NDVgK3=AzRQFXg?BI|_#M}<QH z*mNgY9{Q4oq+7X?fh4eC_JhBPU!OvCrz|8*w*o`M+XsIi{5|k@$!k!UDM*l}-@y>1 z8v>iYBzH292ojPI`XBsla733cRJv`A8)gYAG$ZSGzzFxrT6QkDp}tbWWF*_)V!98% z{z+Pt>Zi>8g-V3N55N9*lF0G5WUs0=y8fjc8iL5MTM}8nrywl-Jp9_$>t)Jm+DIV2 z&!Ff}hNj;`Pcu@zOhItDGXB&$%Nn7((iohAEEga3bcN^!!J|^R^%p83+s>y15q++V z&<%oW$_hm2mUT&jiZgL)nWCD|sly`Vfa31Mf}T1vY>@Q_C?VuqrMyhhA*bncWi{!i zQfkuAl{ukem*FPNvQ|WKTe~u*3D_XNZ4B7$&p6OSb~%wI=$J;@cnV?*A2w-X^uIJo z;=~m{&4Qge_;nvwUdVtyg}4Y|H$w{;p3R&LL;)qvrBcV0J9S=~Z~@)xq0_GHB81&u E0CBbQ`Tzg` literal 1071 zcmV+~1kn3bPf12V06+jE1ONcV(m!Y$XA}VN2TtWr9$HC5kYx-Xx*&vl#WvEl33AQZ zT#9l~P=-<u4akZ~Lm-0#g@`UbET>fhg%(OlC&{)3ftL;)6f#Ikj-sJMN;{~uAS=}w zCCyNX#)I5hIJP2vy8qRC<9+x2-uK=EFd8hbC8^B%{bE_HOAXhbQbT$oR<k88_cSHU zgM(3Extv&cJsX*=Y^jyP9(!fhPi3Sh8ggG1>ji<e$6m(Vx2~1}`*jw}I|*wxMwDRA zKF;mZTG*^Eu$t4>HH(Q2GrIEfXLe<=%=!)W-IFcZr>iM7g!B5hU98%xt5c{Yb?f!< z>DV*Qw*wS^8mG?X#;MnmdT$l0T&}h%oL|PQe;KdM?<6KRvL#o`ijF-}LtB;_l&}^i z+<<DU#j-gaVEw*!FDEh>Y2CAv5bMTuVO~owmY1>4%Mc|P(*gE0_MXdup<w++PNyye zyLU$DR0f=l{iZC)7oQXKoU?e|U+FewHK~6?1A4aP@Y^AOtEa2kdf7h*sbOrAW@7X4 ziLcC|`_`#Bv{H`io{HS;%ZmKZ^WGf9IyfH9%T0MOYcH?;FRur{_lEgRd95q9Fmm2! z9}f4MGVE*rEuq^{vpE+$dVibbr_$Q~q<4uko2yYphf0^^;{|8^Sq>oYC+QWLMb7$5 z+*N3XiQRvpXM3#qBEk#A?*Hw)Kj|H}Ki>YkyyM+JW&Tj<5+|_Ww0~8(0k?@0NIUD# za#*>6eMs_Q-&y}bT)hF`8?M*d;VZ1BpGEV*(fM73<e!bIH#9E~)AvOFBF~)jf#tY6 zP4bgL_4}r$@`imN-}#<r)cl&Z?*C4F{|#^N#OCAEdi6!(W=~hsY6n(emN@_8_0Hcq z(RY8n^zn(#Go6@V$)5|7^xM(nGkJfd+tas;{D-G?H4iEC`WBMoB>$b@se}7!-#`E2 zO}m$_8MFS`=n}E}d+6j`>cZ|Hmp&P;t0@M|=o>+@{z0_=>?BRr)eOyGgL-m=zQo<| z_MZ;ANBcYzrmIM=orZ2?l>TFU@SkgxRs~ba99T^o!x`T<vCp_s{@v-p{{-m7v?}14 zPOKd`AoigE*+A)Nk~EW9B<Y_<hyVS^tL^vlIvt|U_*UEpsGyiFly;x<xn>e{r0>+v zLo1l&L}L9RN^b@F^1sC^1O8la)a(##Zw2o$U-s$mM@Mf@3a;B+!Mn^4ujlX}p4Qyo z0_1G2fM<R?s^G8q9s(U9*xm!4d7GJD6m{vnDID6oi8;EeTkl0X5V1`^q*7o!((aNC zbC_bb17I>(r3+J*^hx>vfu*RTk0^7KNYJ}puq6s02I?{Wa)kMX+Oo+$4h&oF5T&&d pQ_8M!J^`GI0zC4Hfv>1Aoulh?C)SD8=>&a9g=RS4iW?ie?G^eaGtdA4 diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_invity.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_invity.toif index d13db26677984936a8e50c9699d1325b8392d4c3..e268c10aa67b0eea5ffa788bbf3f1fecb2a0ae45 100644 GIT binary patch literal 106 zcmV-w0G0n#Pf11~03ZNf0001EU>F619ken2W<|g@#=)(>jggm`m)VO6A##`jBw|ja z{<lmZRV6Iw;w3D^>E~r0n)+e#=y0g$S7lty1d8V=V0GrKAU1M381C^01Kr^CD@3+_ MTwtW@9|g1k03<Ok>Hq)$ literal 136 zcmV;30C)dXPf12V06+kI0002((#Z{gAP_)N81P89)<6ZeITd*EC@u-IsEPhRSD9x} zV~B`|S_*C+&L=p0eEj;-Z7QX2@-08V4IdxB-dEY4&rNTCe;)r|{@edww84%3s(#$w q>K`lHhL4Ybm#>n0TBWx?`E^^g&--QdzkmFa`2P6ms2Cz5qD>17q(kZe diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_keeper.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_keeper.toif index e15958b4f9fc97579dea8a9ec1474a59682eeeff..23479ed1ee33413727a0ebb2d2b93e69a40c4671 100644 GIT binary patch literal 691 zcmV;k0!;l>Pf11~03ZOT0ssJ|l0RtMKorK0HiL!^8a2K^h6=K1)OIptkRU?@T{K-C zGT52wk|kaaR64|^OS)w_+K|CGOX=uAL%>TyCy#~$BRrW->1g`yWMMg{G){Xr9NgXS z{rTQUNc}o;KfnL}<=v-W-B*WO+vHgb$o}!k_0MiU>BnbrD+;5J9z28JJ$!S$d)SY! zygm2IyYj3?E1LP6M%Z&tuJ@0_D6q<Ewzfxp7>)eR_>pga=*MrZ>Ya+vil)xfbYRVb zvv}s4dcJO0ji>pqHg+5DxwZGvdR33{XYo$W#1ub;f9GdGE85xq58mI5pZWFt=m{QM zi}{d@8{?OE!GNDbD%y~UfVkW)c~jSNaa-Q<T;9W?e)BvSPj6maina_%O_U6HUdxa9 zkPqo({Z<%Gk_IpDNtfH$l?xuXg##)1UA|@J9Nl%E=fo9Gc2VAtI}(E{@?~s;2hC^Y z?*;Y16LVeboG&Sw;%)J6C_uexews2{QQ4ft7~7H|YLH;wP=3=t44(Nbo-DXcdqouz zly>qI<N4UtP==cK{>GyVh|11-_;6Q51S{(ls_6O*o(C(Q_PA42sd6s$bX4VR0-9(3 zLta$)tW#tGf(|U^HAfZ3cwW$^jusgH30J&46*@n)_>!kRYAHuZ$ZqsZ3|?0F>;mhV zE48_!PBElb2I$0~jF*K5e^AjcM?F!0IuQ=D!NYF5SU-^+<!9wWlPB@o{1axYxnbXz zY^W8Rs5jPQT2Xmm_%EsQ=tJ~83`+HN&pB(7rGu5L9{5l5s<x%W@9{U0z?zWKH0$s{ zsaeK{#PCmZo!2$z{2Zgikl;iwm6GMA8}W6UEV5fjg=6@~fx)W(hYX#tAN-s*sZTBP Z=z@e!(D!3;LkH-zRJ2LVd^1;d{Q)L|XD0vv literal 1507 zcmV<91swWRPf12V06+lO1polul0Rr0NfgGXIJhlRY>`6c7;@n4PUUthaVb`i!dq@N z-oyt|D$As?njs1*ER*6C+$hDIt+)uA6hZE`7>K}yEv`6J3I>ACg%K$Zr8GCQf25VP zD~%la%-u{ivv2nI-uHa~tiC>HiiMARyN93N{PyPOS5KaA=8skIFRdL-ef8qQ(b>`2 z!*{!fU#nj$TfC1y-@e}alDTX4w({h8z}`K)c8Z1Ry;<1Na?0J&k5%<mF!zI}#lm~* z!oIdI_&%^EJzVK`<-|+%kBXpwdUL?Z51z)kr`dCTGaspN7d}96ZAbKL=fYO<KWuC( zkl(*lA8qVtr`a0s!Sp*Y3!m5C!A|z!yQ8ze-yT>Gp1!vpZOp4v%bxNbsIZyeUaJc^ z<@Mgt*^3VszTav3KH50fPqRus$N^j<|FKpqy!h~OugIr=tfkj|fue&zgL#c^zpnUS zcMpq&3%gi=OF9)UgdQmCp>Hcn{z@0@#nT7tT(5-+EU%SYUoz*q|3{wu+|rqj)pPwy z7kniT*W~_b*5v;?unsJl`da9KSvXeL#V`7NvmmEeP`|DWPWVMBKI9n)_~-h4@Pz{b ze=~m{`U7x!C;a#S8Gh}a`8!&~hyMfqj#kT>EAbzPe6x^KZqGFo!vQVY%)7t1KeYyp zzZ$<*unsh=8p>VsvC7J@hX>#WCT{SJf9nzty0{K1xWr7PQwWuH@R4d%Q6CS)hBvEi zI^tb>+wL=W(5zK|eEz$7i`jDl`!@W9j)tIXv{9XuNY0Q_gRGSw-$<9?Q&XPLMx=uq zY@e2C8CKZ|=z;~+c&&Ww0c&1So*tWaQeNa__)Lc1oBWGpsA<^9fi~8W8qHwz=U)*i zKCqVYK`WRWscawiW*oUBCGpizpgWgEQw9&0@M$xs!wwy$=sW<HuR?RCH#xq&h>zNS zjRM>yS+DadfW0Z*EE&Gxr1SAWI1B-5Pbo4a9`;awz5|kBqgDB60U!E*ATeFh0NOB0 zVos!vbVxH$hi&o8O6;{Q!^fqFPG<P@GRSt^jUe%mPs%+3IAipM%P{MI?Q;iIFs?SF z_#~C@&jTij=kEG1SXm^IjX;IFm*qsR;UsaB3?N5_Ps_=CeiAHmk_GI~P8zX%ltK-| zJMIL4)z$bcjo<V?yVGiN_own1{-YB**5QiSv)wJ>?<ezv^pasn@B4IRHlqxR+i~i9 z@w^ZzKBy$~#h)o0cT<_4-tQ~RueEViH|`iM%iv)(;>Ty>DHi$8jlI<U;?^u5Xk2k; ze0KSp(s+V>8NQLoCqv(xtuf!v9_-D~zxiD@;*Qhiv}Q~B^(6g~?>Dd_HNu?FxQ{(? zOT+ZB5mu*asxo{u;SXc;`^lbU2`2JIMj?pOhw4)=ZVV|tZY1%!vLK!;<{z;)mC#EN zujv`w3w9af*Jb!5k<Zhc;j<~xY{FUYl^y#&40?k8ozW+mc=jSamM_{&<_m4PJMHk) z4a-~MY<-vwZ!~s^8zP@b=c>ii(U9S@6h3WErt{C`uwRpw*%nmz@U1BwbCFi#3`y}p zD}_H4enP+}jr4S4v<wkhu*RoGs7sqR(I7s-(&Z-eqlvK|Q`9pYtTPigqFHIja6vcj zI8VjRDtwsEABs%PrYe04KOmr;=*&)J_(m$9JJ^AW-=j6_?HoH)i#DhGS-wy^ozMMr zgAOQ+lApu|Ev`DBot;d5ab@_}Tf`R*b9R_AS{B`ckjh4&$4-!gRq>U<iSkkJtMTbD zc|JB`WkZQ2M!_mp<2NM3llN^-yS5CUEaeAT#0`>*GyP5g(6EErAn^^7;?s@{KXMxO zum@c3vx`00TbxQ>DY4k4Jb#sq2DE%1d@?lJoU8%KMM`K5d^|v&QHK_TVD+V;_Ue2x zq#e+LRl`O)QowgE>=^w;d^`YM)TT{XMGnmY&G>HO?4lXaLVegH9iz=oa2-@|30Q=) JunN~k`3E)f1?vC+ diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_kraken.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_kraken.toif index 9aaacd6e1f6b48b0acc45421a0dd50b0abb07a7f..b1e1ae2bf478ee1c4c7553749e47124826e31527 100644 GIT binary patch literal 334 zcmV-U0kQs6Pf11~03ZND0RRB)lCgDzFc5}Cm&SgSdamSD&=6Cq<Ry)|95ciV#5;rm z9Pa=F*q#9vurdP-5M1TSaFR?C2T0?*7hT1F_Z=twN659FrJK@%6)dGs?hwu)1zSfo z%wiKYta#4)(3L08NIRq`+2x6M;yV^&8$H~7O=q-*pXlZ;3H?mx?AVJ|afGzfA#wY% zIK$HN<d#S=jGx7O;b<Php|py-5MO-^tzO~&<OJ|>d^5qE)G(Hppj;nIt4Qb~{0%?# zH<9@|i0)ma=sNo@4wkawn8%%ZwB{+9QYOApf|F+j!|$E$^~@VL9sQo$2=@d3C<Q97 z5h~qnFxA-6RGW_I`5XN6*TDxq=JqWQnqRlo8_naENfEcX7Z-Cuo69IFWxH>che}Et gWf9KF)CZpET6HQ9c+PC4V8F{WC8NM6KKb+K1H?h36aWAK literal 654 zcmV;90&)FRPf12V06+kO0ssK*k}<ZTFcgMkmqt&@9IHSj%|ObO3^wVEYk1lZ?m-ry z?g17s%o=3+!9C~#lxil=<0wf`-&5ht8UEYBpZneXxd60k^)D%aG2RV48nUG?YvG5? zrCSnV8@`g;0WtPy&imu)O1VoT^nCUNdGsKzkuPh*drt7QET(A2?j@hA5P}Wi<8S@# z6YTR0F0~$@|0MTkUR61d@n_gJ2-&0TQ@OPBLHZl|!JkE!wesx`?7|#9p1b}I_ikf^ zpHG*yxod(~-2I$EaASfY+`o)2E9LeTx&>1HO1i8WtL6*(YPzi5z)VkY9rXUV5EEp| ze#7hG_s1(==ex8nx~z<p=>aT6o%{{AN_?-@+pAj`z=NoppYzUNe%Gm+E-S$&e$JcV zFZ?5Yj+&s$vZ3U=v?+c@BtPX%@k0i{SJ)K2Ki+TvV%!|RKOVxa(<DE^f|>uMJY-A1 z5ZCjYu^BsD^&G^4g)Fbwv97c7^{+XPFnCu0Lsr#yOO753^eQuSsdY4gH8IU8s6N?2 z3?aDC!Z&qZlS_~J6<vDiiLjogDZQQpN}3?O^U?>3O!u%AkDlds!`-IncJJLl^>|dj zo9fAkzGXVUoW9gjn=&J+N8f=FRXq{bH%;dUcktI5U*7<)<+uEn-|}02%Wr@`x`Y3V z@0AG(VXMbL$kcNYRy|vydU}rPnIP4(^hZ?vqTxZN^gakn^9-Tddye!@YTmm+05{^Y z^TcopfK}-Qw#4LdOE(eB<VkQjed|4yl%KXi&-Ex9&e&-}GhONnEyU^VI~AUc?8PbR o^QKMFn#>WnsyCS67~5ApHjHtC^$ot1^=A(gJh?$@)#`uHZ|QzkPyhe` diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_login.gov.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_login.gov.toif index fc02cd70d467b85c2adf9a3c3d3f5f64c1e6e36a..573ca214dbf728f982098fd94f90617a80f2cf3e 100644 GIT binary patch literal 340 zcmV-a0jvI0Pf11~03ZNJ0RRAFV1NKciKR1+UpRgP6+XZ4WCI3V(Nw^|!GH=ljvaXZ z023a+fki(M9-e@zJvjlJZru8xY;d$d*5A@Ws{W)1dgy;np?;2sl<3cWRs5ysj^`or z^l$m{9|{bvkgosStN%zq^AM@}zkWg1Z+L}N{i0tf)Blb__dkDN26sW=9dg3I;5AJD zn^Tm<pWzj9^#6przw{|N`fcH%x9c0}`ZFIQLjV4MmW`z9??s6}4wB<9_tlQCQU7-T z+x0E--L$8K^e1Ov`X2-}9%A|&0v#=o^)qlBKS7HA!xI?LfRhJS7u>+EUr~Vp1Ef@7 z>OXz~o9;vp2CSfU0x|lV5*ToTmI;LPH$^bu1t|si^y6|lN=P~&;sRO!;ThOM4J#0U mg#<!B(AOLcBmgIiWgB4n7dI#<FpvS9JeICl+~BBzPYnS7i=d<c literal 651 zcmV;60(AXUPf12V06+kL0ssK*(!XmHVHm*iXFPDZK{tn-Ae>tkAq9sdf@DmGN^ok7 zln7Ni2zF6I2%-TcgBZc(Xt<EgD_t6dQj(GjE~y+sih<;$;UK|Ixpolxn&OXE@80CS z+`aFC^!xk)pZD&00IUgtT&A(9?iy34vAwSlOr>7PCV&T`QfZ@Y^vFitCGvm0A`+Ue z=T=E=$NqSxy&xKLqC5BZE0eb%S19|+_zv*#&h%OQdI8T1LHho91K6&F82HM$|Nr>0 zy>s7B|Aqdn>W{xXD4I{vNl(y1pR2L-IsNkp{Z$vWG<N<a6WR1$W8)tTkZoH?t+Md% z93xCxhrWMbN7%j}()S+>(1hswFMam&KL3BC_s-Y*GkWo%y}pIiDhuD}6-_(8rIF}f z_@X{%*}+DKO!vY!dXFuCV4kV}!SelY`s{p8?^?G1<&d3!;j8ufy6EaUD?dI&HeIW+ z@?Vea{D&GVzirz28y!~uWjh`nePiQ`x-E}x9I^422ME)xDhq#oi1YI`7QQ*c`7Mow zKX;7tFZNmZAN7O5r{SZKIl65Y&4vE;zSf!VywdWuC71gb0wn&~N$-)}{OQysm{3`v z?Pn8{{Ah@>F98P=lM6KcWEiH!t4(r0=EyH)fS_oY+;23=^&JU#AnM)<4L>3Raq?TQ z{bUTB#FZ;v`q@Qr8rM*~^0R4}C9bS^;m`2xe_kL<ZvAWmT$Ow7#!rU9b*V+8J&V61 zMMUtVNU*W()GuX#2k+wLf)oF496T=?Q=24yy$}cho%nyR(c)KVeEHdgU|GTWYb&1a l9KVV9?|VG;OBo>m3`-?W-tf~eWg;T@(9O6kl~x5;_7A&cR+#_* diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_microsoft.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_microsoft.toif index fd54d3ec5c1eacafb994f32ae0c9b66bbf11a0af..363741cf72fe60b0cdd9251cbfcebed0fd654600 100644 GIT binary patch literal 127 zcmV-_0D%8gPf11~03ZN!0001c7|}ElH%w4?Ah5t2H*_#+n%MFQH*B;>kUUU}8!qr3 z)jz6#R6qIp6BHUPa6<(S2ZjVm-0*?G5e9We+|ZH1fg`~ZH+-OA#B9ro8@e+(SRVL` h8!nhVs()1fsDASGb2Aw+<Az5V4k#>`jT<^70RWu1Fw6h| literal 165 zcmWIX_jGe$aA26pz`*eKk|Eb21BteWOB5{9dZKS1G``X_!Dp|VU%-mR4-_gUOo>xT zFA~2Z^Dz2%-Frs4A3vkF^JN{JeSeep+&hJ`ars;8R{o2S%UXH(I1;$uE?={Mg>CzO zdB4<<)92pQ%$_N|b@STq`={)V%2ThlU2)d;@BZkYE0%WjBZ2+=_Oni|%3b!$&eife FD*y@aRto?C diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_mojeid.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_mojeid.toif index f08b3544ccb0c70639fa99bef039035431d0771f..74a13d1c308c1fc1a283dec8476994e5fb7ddeee 100644 GIT binary patch literal 658 zcmV;D0&V?NPf11~03ZN{0ssK*(lJQfP#6H<7jekYA<zyP91`o$bn=$sfy3pXLxc`@ zn+FHUfrCni3LUHz?hZGdR66K!q^EX}b}8*5DmfK96t9EyIvm{Pde{s$+)&aClB9Wg z_mWuCYP%KszwPIJ|9kI$KLG!JFkB+`w^pQ-L*C|X@uNcH+-z;nyu8kvk6%5Uu22_! zegSH)!W*31t~<Ysmh*ZgTthv?UeT}PVPv~^lD=Q_{o!>zjI#{dt1$8@)Wml&_9wpO zkV)LZL`KZXbnvFYPjEO_q+Y~^=bv_i3Zq()ivE)*kD@|-+6^i^S_B{wQ`gW^_=~>f zl+F9xrC9-{U!iPDBuL}_sWX9xHrpN00?%;yoV=Xh0UHN&*~AszXQKRg4cbO?yFSD+ z?g?O{s>2=3F_;5x#ibSOzm)>7_}<)YG*|1hwR^SOJ=xat%fP>jFoykj4SCikY}xnE z-j2KW?ibe0^LABNpNM3*2mLJe=S}FLZd-xBxp|{GXtQ2kT)1dq4Ees{dZhQQLeGow z1D!?snBk)ScQSN;HAUD}R~HRw%A3a-!bUp3Ji%2WC*-7r{Ygnp?OPRB=UmT#_Byg{ zE0Nhs@0k-3=l8RF{{L;Il~l!mdeA7$NIN}k$oz-7sQCkcCr6IL^P>nz_vr-#YcWpE zN6&AErjLU89iDgJD<nN#v4~#BRpG%j-a#f0XtX*snOs^4CeLvOG<SM|EI?f}2pf5M z3eK-{Wwe}kad@NWLZ3e9Y3PZUFn6_YIg?}PMFpYr^|OV%bShHU@dKI`#~mpMx!&o7 stq3UhJ6|?ai&AJJMV>#Eyj5Mtxsju6_vbaLt=4aCo@FEw{Etxl0IVrd5dZ)H literal 1330 zcmV-21<m?YPf12V06+jH1pol;(mzZaR~!fMXA7ww+R6h`J!E)i7(lA3SjvDUSMpiP z5F`dHWxx`WO_Twc05K2?>G&fmC8z_S3>cv^gboNYR8EI9K{illptu9V8H|mAq8q@u zAv!#y`0D5Laev;kITF(@{{F`Mz5BdBKLF~fr=I^e5U?}|!XWhet^d95cQWZffi9Kl zg6$*qd|c?}jn+tFc%2VgJha7#&eGHcT~I1e071NKcwM}4HuCS^u6nP#c_yvarGl-s z@TIu8pNFd4gcsN8LNru6ALUb~(mnW}k$m@lZGDu7>*IvkW@kx0ldipwZs9TZu52I4 z_eXBS7sbWA#iR3W6s89XZr|<rqPUUgoZ3Ibpx)1J<L^`}Uld3A`<hpPni&Wbb=GFo zKg7yNQkj57_X;$4;okSB{Ski;1f-DsGauf!WPRM)+kSU)K3Q!Cdkf%(G3qO^c;3IQ zyn`0cZTl#z-fo`k&nLgsKNNR-*RN}!QW^3N<lSeX->EIP<2oNr+D6`pk0ye=gONnJ z;RTv|b+M<_d}J@?7x__s)obkTnyJM+X$S9|H}%n}CA*t<aZjuGtc`IpJ#d1ZWs1u8 zk4XN^oN@o*y2|EU+#T+p4DP!vES(*6N1{3E>TgU0eHlsMekx<!zqf+yZpl9Ulu2cN zPxiK}8d}*t=8fq>`zN>$gHeb+@AybJ&_I#=Fu`wJ8RdU0o?5o&lTQ*4N`4e(2dRBZ z_Yc!<bTA8*^$?8mxL=xJL;lAFbmPc=U9!6p&UkNowllm<VXNH}ptafrE4e#~`&40! z;P1_)GO46ue;5BDb0T0n-*)?8g^7GQg!}ha^gdNE6#@i*W)9gSW&4|qz1T@<*102o zC#aI%cHDpdO6^l6o$L=xBfG6=e_OWIzCYr2fNR1zao-kKd|5xbqzQiKbX(jOw<en| zr~;+&O}mT}7)W(r(Km^{byE1_s}E`$RV>H!0E2nzt$hD#ee=>z@PAsf7xX%{##n*j z@Il;fEX|)}%leXFPHR_2VR&0_hjYLSZj|3%;XWS(;AmO0Wqn-dXFFp#y*~ElCMQRs zEsJ^FU-e49S|1mV50rIq!i3#BoPfpu?Jey1jQbt^A|YEg0AkB!yR7#Jn`Pf^p(A?x zNXT{q&`iBfisG4JAA(c{*XNVyTWndY%RXa`{fXWCDRcnP;*svsxc^s>bo$O|*<TW5 z-BYZk12l7V8k_fY6aw(|qr>ugqyCiRki?6RThZ5WNI5yu?ZWs$wk2??*G;=j@wIr> zNsRf;l#3(jwz%{?98z?<&?K01$A6P_zXbs6r1}p={3!=n7scLosbegp)$PL3B{uW> zj8%JfWB$vbjXYUzi_1M@A+=sSeNor?fm8JE9sT-$RP!M?^UWv4iuuJMcLqYzt0UW- z+brp7KPJH9oN!KjhWOx=122oGqrY*bn-{C(?xeC)<jeZFAnA&4DnuWkuHkjDW@(Gl z7R9GSO=aD4r7M1PQ0l6k@8V8u>X)KJrB^>U=M??QkH}rM@?BgrrJWQ{2<a#1^2;lJ z;M8xet?%OQx9TU=9y&hXI`0wGx~cT?j8o~Vh2NEEpa2#sw57Xy$qzhJcYV1(Fs+_C zCFa>J-QA<2({4-c{E@^vC#VqftX<ISrUFZAyFT9^N$mJQm6&Ibu+y8?^j)9h-{F3p ot9))bu_xheeX%xu*Ua4Oq_OHsJbyJXedcSXKt1);Q%{xr3u+R*K>z>% diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_namecheap.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_namecheap.toif index 23de6ffcbf2173c9910a090ae3a17bfca2aeede4..d5a4d0f53c9e49756046db90a9e302b22948ce0f 100644 GIT binary patch literal 441 zcmV;q0Y?5*Pf11~03ZOZ0RRB)Qol~ZKp3wHi5+=_M*P#!N2tLVAHlJS#yE<bPFFD+ z+!)!~LNw(mN)0h#lnGp}1!HnD9ZVMn?`W@gt@Q;6-!EOh-tW(S_bJMz)~6=dkHhat zjMw3$_RlfZY#L)_0L^TB$LfssqN}Aq>86NoJAlN1XQFFp)u<Fr!>766t23jVX9JzH zDZeNBPP2~AQ58KPIl=CIp6`2h%2x)wYia=su#4MN<3&oKFR}@MZW9hbj9cChTOp2c zfSJY{I{h~R^!$`>B2DG)Ar1-sRvMP|)h(U@(0vkv@r65VQFekJGRi%@I05t^;R--< z_X$k-c7yeb5`aVYAFkjNGj;bJKk3HqtXGs^tIItgu_bpqNyHRDgRABfP<JeDDco&` z%_5l!7PHDFxC_02PB+$YqSRe_PkJXyek(b_!J>`a)%!9H*&T>|z*=TkvI#Edbrfs3 zsXO(@@g}bJ!OHKdoIqb5M^(f$j%wnBf%q<)IrqN__J5{fC8~S~ck18Ze6dY(^<6nZ jf7BU;X7+?(X=92)wxVe2#q;~;_AJK9&^47!tx^2~`}Nn5 literal 867 zcmV-p1DyO+Pf12V06+j&0{{T+lD|*eKpe#n8YISy9j`zo#*FP2go@IQ{s&G|C>^_% zEpC2PUD?d!1Q4Pd?L@mcA#EjhDokdIuSiJ8cIjkgs4s5F`TRZG39H{*&-Xs>oe|2E zDO09QnKFg7^!$5!`&U!)#(90uEzEG;A}U*_$hOXkdJ!ib#`)Yy!}&1S8A2`%8++4* zYpeL8>W!^2^d_FQa$0w`d><<ac7{j$>C=n(BAKKIMrHN+`M1|@&pmYN&can`s3KTe zOPgOc<aE9P&a1Y6aJ52mBw%=btIFRvPq{sgrjHg-yusRTg|5?e5->a__g#RuHz5K8 zZvT?hXpN2-=(5ky9NcGtBIfCV!}(?lI$z#xvo<@R6NXp!TEH|+Pqgp{=urDM>9Q^p z87g%41vG53aK1oLh@RJX2_vlg-(!YDI_m;*`!Rv(_0NE}%6BNwk21`*0B>)3ChRA` zpQ^i_%Ul*^sMw{y(=T8emKRt~SGD)^J&3{GtnW>`fQBtL&W|vt+D|MnytMs4<KeUm zScaG`G9<JQQSf~9f}e<4;2Ye&@AW;9A-TQavK^e5ZUM{S>4C%faC?jLlTd!po~x01 z0S$MU>-9Z|0d7Az3AYaxSRJYe=GVgQ$KT5g=quFTq@!iLD8;0G`UN!X|Gh#7kpONl zyiSNgv%@FTE#Ml_R}5}MpTYJ_`a>q(lusuwAh#D8p!S+>c~SFpxqZ3?ItF1bgBalU zRc3nJ0K+B%6u*FmyOc2QC<EC3V~`$YDB1{A>;g|aMwf9DCR03$Z69TT+m9C5SLHV^ z+qBKP3}9f%?L`Jv`_Teey+H2vz$b_@%z^DSR`nDFB^0A0<pMW@8m&>ELE6DA0PXdv z7g$cmHj0&wOUea$wBnmnOc>@qLAT(malXtD-#&hUpMzzxe#a2JMzsLlA*PEIN$rys zI3g=VWFRN-9sKp7{N(mY3tYQ7lDlJo+auKPKnoxnrBd7iTcqcX8Q!;4H}o|qKVAEz z1?tYB({rwU3ay~Np??<HzlBmu%isJ_5&R%q4riFx<8Hu<)~S@fh^9~rA78@xC7<Bg tZ}Kkr4y)v+ULf0SnME|UFghqNd}&@DOWr<j?6nFgQ>ILrGG)pn=^rnXtwI0* diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_proton.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_proton.toif index 478a38a570fc20aacb10a25c17151e0b35fd3006..7e1a8c58e50a96cdf31a0257523b0e5f724ebaad 100644 GIT binary patch literal 356 zcmV-q0h|6*Pf11~03ZNZ0RRA{(y>m1Ko|$`bGxOL(Zre{UFamFi??7du-tegH8~d& zk~%Q9CccBa+DFg_kmxJe7ifJ3SR7%o1Q9Mh3U_}0k^9|u$9(`46_X%3lu;Oy!Nh=| zrMi3>C%Ulz<BM#m=oI~Z5M^wC2N@qkF*)RYWZ8Utlrw&ZPrcoHn&=NDCifSZtOsDN zH+Pt8vL1j9tyiU{ydT>2DvFw4UiH+hVzhDY21^X2tJ&X2^1gZh!9-TCxfi_E<aBCY zaWmY$^5tY`Td0`@KE2`RFEPdT*ggx}=f28@imU;*wA%*JD0JbzJ^~r*qjTm#QFn^^ z=mkCp;<I<jj9EzBxv1ptZJlsMQ**Alu+A8Ez3vj1dPTl3A9VT2d?LHf(KVUkDfXbe zk9Yo=%y5yhlF!*aDWl>a$p?M^jjQ1A@E5D%Dfv-Y#Zx-J6ISswdH+W0NmKE$vi||z CIkWfx literal 587 zcmV-R0<`^9Pf12V06+jg0ssK*(y?ySKp4RBFPj&L)h;L1kxaUnskZ21iJWA?;_)Op zxC1AhaDjV(K0+LJB6x)O1se4g(uFb2Go%t7Nf;oiP#SXA>Kyw!3Gw}R|Lo5nz<TBZ zm(`=v6Jy5WiT@0$&2IkvhUtjd^jH1JN@CN$+e6o}>2ui;17g!(brsn4xts@feJ)4D zuHO@{9h*LvQ)btH{0ek_=|BGOx=umD*b@)=o@h1Z|Cy%|t-OIce1P25Z()%&?*qJZ zd)hb1-R6COiLdk95rz*iX6k2+Qyjn4Y@j1>{1#BnALu$5KEO3Iy}*gT$W#qT75^et z`+XNsM&}m<$2Z@9ozsH1#`jm}OnkLY1<v-Tn(a@S&9CP&jGNbUw<mOdL7LXjTu-Ze zqUoz|N4mRTbrdz_9y%k!;+KLypi|Lx%%A<rxd}cei;POXW9DC9kc*VddOA358QF)< zur_;@+2xN&N7Si5d2XU#1$Ek7ve-nQ_%`+2r4~02aGlj>FS9-|({F0~^Hdx~EifIg zmfatmwxh0NjPHDTJuzlsTo9-@!&LX&8GDn=gM##3UAbH3i#JDg`Il@z{uX{9(D>x; zw!IhMhPUBI1RbE<`1>7kob1J`zK4J^^I)wnvlq#JeAg!*+h1nK$+|Na*Z0Ipaz9+3 z%JcMOBV7NIou`{&`W^8l{k!)B&!4fcTNP+N{k{F|@O)3qvh4<F{xVaA=l{%94G{OQ ZYJ}$ZgsKwFr&3kvWBFXF`tSd{{x5TSH@E-* diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_slushpool.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_slushpool.toif index 27bd873d7832f69c1185ea09d2a035efeceefbc4..1fb0a57fdd3e5f5ae9374357a2f773e905e0443d 100644 GIT binary patch literal 536 zcmV+z0_XiyPf11~03ZMi0ssK*k}rtkKorJDRE#(gQ4vwGffW}xv4IsS)TFRt0}%;C zG_D*GrD`cBN~u{&MTsh5MJX!^sVF3((2ByYDP%>VCkiozL{vmnM68IYn9F2ZdKEP> z$H9J2<eNXgnU^;YfG_>eTGH{`)?aBgv2Oz4G%9NV@|Mm%iUV)!kEkc3r`$5X>}&i= z<J~cbzj+IQXQ~haFrSS%)qXN^3_dGr;XT)Q0a6{_m5ocj%RR7D^WejB-s0Vt*>xV4 zRa>?D=1N<5eRD@2eAy_4OZu)O8w2lq!tXVmz0Ti&nmADexTAYYPpQHj^W$fi!<p>0 zun54I+tF2s-8H@nv&E@?0m>4uu>c8=GATfWhh>yeA4T$h?TCz<Yp3BfqSnGgs2$0M zRR0_X$^2`K{U-IL&}jrm{;oqRpxR`7Z#`2^W1=kS0DVi|K&mh4iGq++*IB8)qiZ6* z1AzCK>>qf9-)krSfkkMM%(f%m#kUl~D&*bD8WW|&)9&9qLbyKx7*WBIzX7+*h<X&y z|ERO~*2#Cd&*3F6)ky}tOZXhqTra%fSYL#ASAe)0L0TOFHrJQ@d`9@+t#ke-P0cPR zz$jhW46(<%FhAx#ic=HMzsIDD^pq=v^Vyj%gqtK=;!BCIq`n=gHjaTuR%#;2;NWNL afvHLOmsvJGZxMbo-1=EUHo%wusr~@&eFXLZ literal 1021 zcmV<Z0|NY1Pf12V06+lo0{{T+l09fDOBBbaNU=o<3yUdID7?Z2i!0nBf=w1IcEKVG zDHJS%qzH>ekQ5SZB%~0r2$CX*ML-L|S6t9Sh>froflU$c76C0REK+P?u|<mWJkHze ztQucFz*l7dr<px-c7ErJ5Ld2TxpL*|d#a$`w5U#XZw<c=i&U?N@HD3AomTMNP^n%} z@e~!W%jl<iR3xMxqWW18{Q-&UG412@U<zOaRjX?4>-c@s0+1EP?+gI42A<OzKrlr} zk47dikItD_A*2GdTNv?>05~juoNwI&u*#Sgd_s2oUCYTw%2D$`u%o}uKWYNR4bNpk zWv_1L%L+i!e5wRfJARwr8I&@mjJNhVepKuXMu3VN$HIT{eZ*VqS{Plm0utjd^cg<t zDpXLj20%k~^2gNXmokix>QPxaD+2t!XZ(F#R%GSJ<>&Z<G_8!OkDSlu@Q`5q-BeVJ zipPSFB+Z<Or*?~Fm-iesg<0JNb;1Ao{&i>j4DdS4dl-K-H_T>Qv2P<2ynRXFZO+7d z%;)R;yr-0*dfYfGvW>z`V%856ax6Sv?9XnWDp8Te%gT8(YuvQhj84R#wZAiX>W95G z%-GdO``@G6H7Eb5S+%xlNfY;YA>8+Es%m|2e%HEl@PF1|%Q{tf{!3!p{HF@fAJeY2 zI-{IvTXpGnZ;~}`2i28-B5VBJ`8&&zuS4Qc+*po~xeoPcTC-oZ?gfc??>wc<;^lok zAo=G0yeFn5O=qR68Pr2O|M6lI9~DfY_on4@c%x!uf_|zW2)zF<|Lbrw|M7y4uZKo! z_@_!_f|k|@@e!=)c0kCEe_DAS#*LVUe+m-**%{yzf0dtyStG4sj{Pv3>0A7`;jC|O zvdV9$cF!@QGr(yEq{yGh>oWS=Er8K1-mVy6I%l3YH}SjHj-TiMD!<M5)-Zy-&*wRU z6VaZGGyi^=kcY%3KEO+Y=btL8{2rARSqVsa&$<brc2k7N%Bnv&^H0K?`R7fZpZ7Rp zoclMXw}Ul!XsD~1+qDIx&HSY4+*zEXlYbSOR?yn5s<n<DncU4fV_q!#b7qeclGZl! zmuuWjy)}QQ>|B!O=`7|zcplmtWz(@MKEgV-iO=?T(c{s(_^-o&6w`K7SR)}nE*ISp z=6<%<kN<Xs@nc#k!>r47@_Fdv6ChdRJ$!(An8o{Mz2|eD{PCAEwx97A;yW>d6Oq63 zTrTcBmksr>xSoGqJ`wxjV2aO|v93b(&`ToD`G4OxRNkDMRLb!Dei+`V(Fgr+iRwJx rNA@PLRdp@4MYf(Quw?}#o*&a({{P9Bm3C{pb`>J7T)A@P>Raj`oFNvc diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_stripe.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_stripe.toif index a198d7a381dfdbaf898a6f95ae2ce5258b673af2..e86d66eb0926b423159ab73108818f9c584d0ee9 100644 GIT binary patch literal 350 zcmV-k0ipg>Pf11~03ZNT0RRB)QY~-8Fc397Xf~J4Y=(voG&FQkV|XyIFoT7KfuV(i z=}!n8TmC{|#!@(6ov8b)s%c|6OP22Lz594JV~Z{JU#29_T5&u2)g1Wy$R^aN<gNTX zqWcfs3e}72bPL{^unCPrApXfW4pyDl*^7J9mFs*jwzl(wF+qev5eFk@6HcDI#?_ck z%ZXoOKqpg#XK8*BW=z`VZe3$Od2|;s2&>fJNd)4TF^6#B586T%dv%_&qbIe<>wJxm zSUK8z-k%U6T=Wy?x{URL>hi2c6SkJBm1sd{<uuDRKJD6``8uPH<#gKkUXmT-6xtI1 zLH^7iOpLGhisnx0%ZM;hdz#=`kFiP~(uSY;B~q492!s~v%8h=|N1t@vTGEg*Iey1C wA))RW>5#ngJe7q5w=mCh;9viXnBE2965GL!-}*6U{eNqFrKDwxE%x{J2H~`^cK`qY literal 668 zcmV;N0%QGDPf12V06+kc0ssK*lA&VTFc5~1O;BtKtDvBu%_=rQ1ubF|YuE}?XjVhR zz=drveFQ_Zx^J*R4=shWW1p>LUe>hBLi8VqqO<Nh>3)EqprD|jprD|jQ^aAz$mBBY zN^Z^4EuB&4x?9dx^w0U0eja`y%U$(CUWSjgkMT?MWMq899k~quU&)a|t~Il4S{kV| z=N`W_G^TOW#auKi8atwSrZcU`H`(rJK4cU6oqbl%W?NS}^o}D{R2pWRnqT_dTrAvj zFH!;UZ2X<b0%W>fKX$*4`18l?cJJI*G0^W1IO#68VN16>iH|YPKaA#W+FOq2*805s zndQ5e$Gb1;i7vbxu5T5GD@f>EthLWKDra?2pHP}qq~aRJ_zQP09Led=zW;e$t%}+; zvyK2L@_vdr{A!I4)d~5H^I8oP#+@<#TDQ4R{f)Ca%k0ogBh9;8>!Ht?lktZAosWd$ zd;p_xc8VaQl5^2SB{4_%{=BxP?cweGRNzEbble+F00=&_`+I`Fp8wcS2WNZd@}qnJ z4)>z;{2tq3VyE&SdVV3%<p~{T99cgmc5vK^4n5?QO>ttc<zuzdaJcL09+<oqjmZSp zWP<z+Lw=@D<FoEYH@&ZD4DevkU48=zX=}{vttw<8S?`0ydy7odc-&!Q{H6mL5C7`7 zWP=wP$5(PLQc*<>LG?BK*w$}YNq;A@FX!(Eem%w+=g-`V0x0s)zMUUgN7`>4VRnq4 z3crIpcdL@_L_(kX%(Hp%{HH@FnMQge4nLyBUT;O`ZACUrbImvG`oNtls=44fZO>y2 z72CKvaA&eR<+D*&kkbz}iA<7_>|6Bv>-=8@{-S1A(YwiI_>MqOP*6}%P*70N3-k-) CW>+Wx diff --git a/core/embed/rust/src/ui/model_mercury/res/fido/icon_tutanota.toif b/core/embed/rust/src/ui/model_mercury/res/fido/icon_tutanota.toif index 80edb2ca31226a61fd63b70c4c4dfbbe027d1309..5f42ae2ca37246ebd7a8382f27e4f28da7bc54c9 100644 GIT binary patch literal 321 zcmV-H0lxlJPf11~03ZN00RRAFU|<YjtYB&&9Wquh1~4!%dXS?RZiWYWb|c(CiSAKI zFX&9M37WHxc95^zZDP=o6Elfd-`w$L)#f8*SGQmNes$Va)3btm+DXveKJ)jpdEaL} zYoAD-YgezTeLwGe?E9i4oU_Oaxf3&|U9J5-?>oqp?^g}?cr9unIrP#eUOobH2L#pv z%~`)$Z6c}RKJ6;Z1PJ_b^~@?IlFSG^f@%UNWV;s;uV1O5@*cVg^S%ciA>IU$vzYox zF~Ra4HvRLy6Xy%w)!22<`@ZWL;gIZJ6#E{R{(0Zmtim61f_rN5=$`j|+Ev`TU(SrY zhfgmgb>d2Ure_K1g+Oe2Mb6@PHE#W!v&zoaexFAIM1<9uRTB5+eJ2%y^e*YRu>1Bi T()EJiiJ4!H#J(p_F9-qvk4&G% literal 646 zcmV;10(t#ZPf12V06+kG0ssK*(y@!$PyomAq#)Gc;0_!doE(HJWDr_#uy9<#vCxAK zHv|qG?yw+-kWvaM89GFSD{(k5!yClOH{6h|mob7v9~2Jb5O6bE5T4M3S8!>gw6?w4 zOJZKKB;P;a^UHgWVVsXWV9y^&;l-Y_2h2le_3eghuQxEe%YQ$MLSHU8`@t8Y(w&$B zdlIG3p0IBs^&{2e;^N}s;)3XzG?t@Xkd-PbY)8A{O5<RZ{*nH&7lm7v_f-yl8x(QB zMOVtz8*L6&wfXgpF+>GZ9a(k}iv*AiPW4I(J$YaKYAkF(R`J-fkIf;vHRjh<ZPuMC zH2=CI3+UZ1Ij<+xY^e8piGKb!AXi%W?~BK4e__wMhavkH@b?9P6tRGI;HeVcg1#~w zhy?tVWeeyz{L%_%LsAuxhyl4<29rTmORDrYl$4rY{O5+%j!VSBM4j#iL!N7y$)*i} zi1>K)K`T*x9Ub|F&g0D+oE2$v)-6-Li-P&T1<M<m<n^9RYr&y(W8Aj@kRs0O9cmkH zT`T}(VK>@z{P(hDyICOOrcP(UXU&c8Bp@2^vC($x1M(UL@4xck15yk87OI*TU&KMb zM0MoF2V`M)<N*I3defbb0=t7#<tg^=^LQM{36zwD?Ok`;3*ZF$t<1!q4v1xMt6xAK z`_-K)s(*Vd3uqhLscHDtIq3h~*M0PL1JhR8+}?H)u~$2%q<SI_MtAaJC+bau5774F zC+amlXxpuyQ#6By?Z)pbk9)N2`}~SJ9EcR{&3;+hfp152<xT!r-qSOaFzmbjw3VWI g+nfEY^r@XTMFK)@b>ef)vH^*rN9q$4?uq}|cZS+Vng9R* diff --git a/core/mocks/trezortranslate_keys.pyi b/core/mocks/trezortranslate_keys.pyi index 2fb40bdfff..ac6bdb670c 100644 --- a/core/mocks/trezortranslate_keys.pyi +++ b/core/mocks/trezortranslate_keys.pyi @@ -335,15 +335,20 @@ class TR: fido__does_not_belong: str = "The credential you are trying to import does\nnot belong to this authenticator." fido__erase_credentials: str = "erase all credentials?" fido__export_credentials: str = "Export information about the credentials stored on this device?" + fido__more_credentials: str = "More credentials" fido__not_registered: str = "Not registered" fido__not_registered_with_template: str = "This device is not registered with\n{0}." fido__please_enable_pin_protection: str = "Please enable PIN protection." + fido__select_intro: str = "Select the credential that you would like to use for authentication." fido__title_authenticate: str = "FIDO2 authenticate" + fido__title_credential_details: str = "Credential details" + fido__title_for_authentication: str = "for authentication" fido__title_import_credential: str = "Import credential" fido__title_list_credentials: str = "List credentials" fido__title_register: str = "FIDO2 register" fido__title_remove_credential: str = "Remove credential" fido__title_reset: str = "FIDO2 reset" + fido__title_select_credential: str = "Select credential" fido__title_u2f_auth: str = "U2F authenticate" fido__title_u2f_register: str = "U2F register" fido__title_verify_user: str = "FIDO2 verify user" @@ -386,6 +391,7 @@ class TR: instructions__learn_more: str = "Learn more" instructions__shares_continue_with_x_template: str = "Continue with Share #{0}" instructions__shares_start_with_1: str = "Start with share #1" + instructions__swipe_down: str = "Swipe down" instructions__swipe_horizontally: str = "Swipe horizontally" instructions__swipe_up: str = "Swipe up" instructions__tap_to_confirm: str = "Tap to confirm" diff --git a/core/src/trezor/ui/layouts/mercury/fido.py b/core/src/trezor/ui/layouts/mercury/fido.py index 677232519e..f56a23b3ce 100644 --- a/core/src/trezor/ui/layouts/mercury/fido.py +++ b/core/src/trezor/ui/layouts/mercury/fido.py @@ -9,18 +9,19 @@ if TYPE_CHECKING: from trezor.loop import AwaitableTask - if __debug__: from trezor import io, ui from ... import Result + # needed solely for test_emu_u2f class _RustFidoLayoutImpl(RustLayout): def create_tasks(self) -> tuple[AwaitableTask, ...]: return ( self.handle_input_and_rendering(), self.handle_timers(), self.handle_swipe(), + self.handle_click_signal(), self.handle_debug_confirm(), ) @@ -32,8 +33,11 @@ async def handle_debug_confirm(self) -> None: raise Result(result) for event, x, y in ( - (io.TOUCH_START, 220, 220), - (io.TOUCH_END, 220, 220), + (io.TOUCH_START, 120, 160), + (io.TOUCH_MOVE, 120, 130), + (io.TOUCH_END, 120, 100), + (io.TOUCH_START, 120, 120), + (io.TOUCH_END, 120, 120), ): msg = self.layout.touch_event(event, x, y) if self.layout.paint(): @@ -66,8 +70,8 @@ async def confirm_fido( # The Rust side returns either an int or `CANCELLED`. We detect the int situation # and assume cancellation otherwise. - if isinstance(result, int): - return result + if isinstance(result, tuple): + return result[1] # Late import won't get executed on the happy path. from trezor.wire import ActionCancelled diff --git a/core/tools/build_icons.py b/core/tools/build_icons.py index e4f4f478a0..945ed906f2 100755 --- a/core/tools/build_icons.py +++ b/core/tools/build_icons.py @@ -11,10 +11,10 @@ HERE = Path(__file__).resolve().parent ROOT = HERE.parent.parent -ICON_SIZE = (64, 64) -DESTINATION = ( - ROOT / "core" / "embed" / "rust" / "src" / "ui" / "model_tt" / "res" / "fido" -) +DESTINATIONS = { + ROOT / "core" / "embed" / "rust" / "src" / "ui" / "model_tt" / "res" / "fido": 64, + ROOT / "core" / "embed" / "rust" / "src" / "ui" / "model_mercury" / "res" / "fido": 32, +} EXCLUDE = {"icon_webauthn"} # insert ../../common/tools to sys.path, so that we can import coin_info @@ -31,9 +31,15 @@ @click.command() @click.option("-c", "--check", is_flag=True, help="Do not write, only check.") @click.option("-r", "--remove", is_flag=True, help="Remove unrecognized files.") -def build_icons(check, remove): +def build_icons(check: bool, remove: bool): """Build FIDO app icons in the source tree.""" + for path, size in DESTINATIONS.items(): + build_icons_size(path, size, check, remove) + + +def build_icons_size(destination: Path, size: int, check: bool, remove: bool): + icon_size = (size, size) checks_ok = True apps = coin_info.fido_info() @@ -47,9 +53,9 @@ def build_icons(check, remove): continue im = Image.open(app["icon"]) - resized = im.resize(ICON_SIZE, Image.BOX) + resized = im.resize(icon_size, Image.BOX) toi = toif.from_image(resized) - dest_path = DESTINATION / f"icon_{app['key']}.toif" + dest_path = destination / f"icon_{app['key']}.toif" total_size += len(toi.to_bytes()) @@ -65,11 +71,11 @@ def build_icons(check, remove): print(f"Icon different from source: {dest_path}") checks_ok = False - print(f"Total icon size: {total_size} bytes") + print(f"{destination.parts[-3]} icon size: {total_size} bytes") keys = EXCLUDE | {"icon_" + app["key"] for app in apps} unrecognized_files = False - for icon_file in DESTINATION.glob("*.toif"): + for icon_file in destination.glob("*.toif"): name = icon_file.stem if name not in keys: unrecognized_files = True diff --git a/core/translations/en.json b/core/translations/en.json index 748e9028be..55e1e10610 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -337,15 +337,20 @@ "fido__does_not_belong": "The credential you are trying to import does\nnot belong to this authenticator.", "fido__erase_credentials": "erase all credentials?", "fido__export_credentials": "Export information about the credentials stored on this device?", + "fido__more_credentials": "More credentials", "fido__not_registered": "Not registered", "fido__not_registered_with_template": "This device is not registered with\n{0}.", "fido__please_enable_pin_protection": "Please enable PIN protection.", + "fido__select_intro": "Select the credential that you would like to use for authentication.", "fido__title_authenticate": "FIDO2 authenticate", + "fido__title_credential_details": "Credential details", + "fido__title_for_authentication": "for authentication", "fido__title_import_credential": "Import credential", "fido__title_list_credentials": "List credentials", "fido__title_register": "FIDO2 register", "fido__title_remove_credential": "Remove credential", "fido__title_reset": "FIDO2 reset", + "fido__title_select_credential": "Select credential", "fido__title_u2f_auth": "U2F authenticate", "fido__title_u2f_register": "U2F register", "fido__title_verify_user": "FIDO2 verify user", @@ -388,6 +393,7 @@ "instructions__learn_more": "Learn more", "instructions__shares_continue_with_x_template": "Continue with Share #{0}", "instructions__shares_start_with_1": "Start with share #1", + "instructions__swipe_down": "Swipe down", "instructions__swipe_horizontally": "Swipe horizontally", "instructions__swipe_up": "Swipe up", "instructions__tap_to_confirm": "Tap to confirm", diff --git a/core/translations/order.json b/core/translations/order.json index cf4b8424ad..48a4e0bb71 100644 --- a/core/translations/order.json +++ b/core/translations/order.json @@ -958,5 +958,11 @@ "956": "words__title_done", "957": "reset__slip39_checklist_more_info_threshold", "958": "reset__slip39_checklist_more_info_threshold_example_template", - "959": "passphrase__continue_with_empty_passphrase" + "959": "passphrase__continue_with_empty_passphrase", + "960": "fido__more_credentials", + "961": "fido__select_intro", + "962": "fido__title_for_authentication", + "963": "fido__title_select_credential", + "964": "instructions__swipe_down", + "965": "fido__title_credential_details" } diff --git a/core/translations/signatures.json b/core/translations/signatures.json index a2d6ca3b00..8461a14be6 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "6803ea2d1eb1555ae32a5b32689cdf40d7626a8b3717f6ae9418e0948f9da746", - "datetime": "2024-08-27T15:18:26.530958", - "commit": "6ebe850fe24f5ec894328d82eec97aacccb3d3f5" + "merkle_root": "0682f8041f5d002800da51d3c3a36351d326b89ddf8fff6c3e70cd1943f3e064", + "datetime": "2024-08-29T14:44:39.968325", + "commit": "c5e520fd1e34182fb19044baa190dbc81fcf5cad" }, "history": [ { diff --git a/tests/device_tests/webauthn/test_msg_webauthn.py b/tests/device_tests/webauthn/test_msg_webauthn.py index 4027c2b0c8..f98d01c5bd 100644 --- a/tests/device_tests/webauthn/test_msg_webauthn.py +++ b/tests/device_tests/webauthn/test_msg_webauthn.py @@ -21,6 +21,7 @@ from trezorlib.exceptions import Cancelled, TrezorFailure from ...common import MNEMONIC12 +from ...input_flows import InputFlowFidoConfirm from .data_webauthn import CRED1, CRED2, CRED3, CREDS RK_CAPACITY = 100 @@ -30,73 +31,77 @@ @pytest.mark.altcoin @pytest.mark.setup_client(mnemonic=MNEMONIC12) def test_add_remove(client: Client): - # Remove index 0 should fail. - with pytest.raises(TrezorFailure): - fido.remove_credential(client, 0) - - # List should be empty. - assert fido.list_credentials(client) == [] - - # Add valid credential #1. - fido.add_credential(client, CRED1) - - # Check that the credential was added and parameters are correct. - creds = fido.list_credentials(client) - assert len(creds) == 1 - assert creds[0].rp_id == "example.com" - assert creds[0].rp_name == "Example" - assert creds[0].user_id == bytes.fromhex( - "3082019330820138A0030201023082019330820138A003020102308201933082" - ) - assert creds[0].user_name == "johnpsmith@example.com" - assert creds[0].user_display_name == "John P. Smith" - assert creds[0].creation_time == 3 - assert creds[0].hmac_secret is True - - # Add valid credential #2, which has same rpId and userId as credential #1. - fido.add_credential(client, CRED2) - - # Check that the credential #2 replaced credential #1 and parameters are correct. - creds = fido.list_credentials(client) - assert len(creds) == 1 - assert creds[0].rp_id == "example.com" - assert creds[0].rp_name is None - assert creds[0].user_id == bytes.fromhex( - "3082019330820138A0030201023082019330820138A003020102308201933082" - ) - assert creds[0].user_name == "johnpsmith@example.com" - assert creds[0].user_display_name is None - assert creds[0].creation_time == 2 - assert creds[0].hmac_secret is True - - # Adding an invalid credential should appear as if user cancelled. - with pytest.raises(Cancelled): - fido.add_credential(client, CRED1[:-2]) - - # Check that the invalid credential was not added. - creds = fido.list_credentials(client) - assert len(creds) == 1 - - # Add valid credential, which has same userId as #2, but different rpId. - fido.add_credential(client, CRED3) - - # Check that the credential was added. - creds = fido.list_credentials(client) - assert len(creds) == 2 - - # Fill up the credential storage to maximum capacity. - for cred in CREDS[: RK_CAPACITY - 2]: - fido.add_credential(client, cred) - - # Adding one more valid credential to full storage should fail. - with pytest.raises(TrezorFailure): + with client: + IF = InputFlowFidoConfirm(client) + client.set_input_flow(IF.get()) + + # Remove index 0 should fail. + with pytest.raises(TrezorFailure): + fido.remove_credential(client, 0) + + # List should be empty. + assert fido.list_credentials(client) == [] + + # Add valid credential #1. + fido.add_credential(client, CRED1) + + # Check that the credential was added and parameters are correct. + creds = fido.list_credentials(client) + assert len(creds) == 1 + assert creds[0].rp_id == "example.com" + assert creds[0].rp_name == "Example" + assert creds[0].user_id == bytes.fromhex( + "3082019330820138A0030201023082019330820138A003020102308201933082" + ) + assert creds[0].user_name == "johnpsmith@example.com" + assert creds[0].user_display_name == "John P. Smith" + assert creds[0].creation_time == 3 + assert creds[0].hmac_secret is True + + # Add valid credential #2, which has same rpId and userId as credential #1. + fido.add_credential(client, CRED2) + + # Check that the credential #2 replaced credential #1 and parameters are correct. + creds = fido.list_credentials(client) + assert len(creds) == 1 + assert creds[0].rp_id == "example.com" + assert creds[0].rp_name is None + assert creds[0].user_id == bytes.fromhex( + "3082019330820138A0030201023082019330820138A003020102308201933082" + ) + assert creds[0].user_name == "johnpsmith@example.com" + assert creds[0].user_display_name is None + assert creds[0].creation_time == 2 + assert creds[0].hmac_secret is True + + # Adding an invalid credential should appear as if user cancelled. + with pytest.raises(Cancelled): + fido.add_credential(client, CRED1[:-2]) + + # Check that the invalid credential was not added. + creds = fido.list_credentials(client) + assert len(creds) == 1 + + # Add valid credential, which has same userId as #2, but different rpId. + fido.add_credential(client, CRED3) + + # Check that the credential was added. + creds = fido.list_credentials(client) + assert len(creds) == 2 + + # Fill up the credential storage to maximum capacity. + for cred in CREDS[: RK_CAPACITY - 2]: + fido.add_credential(client, cred) + + # Adding one more valid credential to full storage should fail. + with pytest.raises(TrezorFailure): + fido.add_credential(client, CREDS[-1]) + + # Removing the index, which is one past the end, should fail. + with pytest.raises(TrezorFailure): + fido.remove_credential(client, RK_CAPACITY) + + # Remove index 2. + fido.remove_credential(client, 2) + # Adding another valid credential should succeed now. fido.add_credential(client, CREDS[-1]) - - # Removing the index, which is one past the end, should fail. - with pytest.raises(TrezorFailure): - fido.remove_credential(client, RK_CAPACITY) - - # Remove index 2. - fido.remove_credential(client, 2) - # Adding another valid credential should succeed now. - fido.add_credential(client, CREDS[-1]) diff --git a/tests/input_flows.py b/tests/input_flows.py index d593e49a87..488d3997be 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -2335,3 +2335,23 @@ def input_flow_t3t1(self) -> BRGeneratorType: self.debug.swipe_up(wait=True) self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) self.debug.swipe_up(wait=True) + + +class InputFlowFidoConfirm(InputFlowBase): + def __init__(self, client: Client, cancel: bool = False): + super().__init__(client) + self.cancel = cancel + + def input_flow_tt(self) -> BRGeneratorType: + while True: + yield + self.debug.press_yes() + + def input_flow_tr(self) -> BRGeneratorType: + yield from self.input_flow_tt() + + def input_flow_t3t1(self) -> BRGeneratorType: + while True: + yield + self.debug.swipe_up(wait=True) + self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index b4d5f401d0..5efa0f1f33 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -16855,7 +16855,7 @@ "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "c86f8a5e634d46bb9e213275ca59ebb7dd57624660c1f8381e3f37b44b3687cb", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "a0ec5adc925d8546a9ee52224f874029ca989882daf762e24eb72701722755a2", "T3T1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "9938e23983b3f11af45521aa0c2488ad21dffd3f75b28f3ef30885da3bfb7123", -"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "e3a00be2a98bbb17b2b2a13742de59f88011ca85efef334b4a475a48a03dad94", +"T3T1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "0910f0f00f36470da0475b1f8fdd918d6a550b050a32642639481105664cc043", "T3T1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "748b990a8eb65c96e9720ac5a339a058390c1546db631dd1cd65aac6ad848251", "T3T1_cs_zcash-test_sign_tx.py::test_external_presigned": "8e8f8d7c9e18312b93627a202e55bb6b4ed48d2a7c30bc89493bc945fa47fb37", "T3T1_cs_zcash-test_sign_tx.py::test_one_two": "e4375b012b97230a765d04857674758533540eda29111ba36ccedeb6008472dc", @@ -18197,7 +18197,7 @@ "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "534db7b1cba3a2a0a1cf4d2eba3cf8652001b5c4db1310891871234fcb555e08", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e787f8ef4c14ddcdaae214d30f3499335d9cab6e2066b31a53d47858a407a7e1", "T3T1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "fc619426393e344424721750988489067b17a7a85861bc2d7703053a1b99fa46", -"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "e64d049fb19083b94e6333eb1af6e524b24d5c3f1d06da3d286ffcbe806c1072", +"T3T1_de_webauthn-test_msg_webauthn.py::test_add_remove": "03f7773f30726020e07dbc7ab3c5a3a6eaf9d63bb954e13e5022d51539718221", "T3T1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "688352aeccbd7fbbee6f3ed7e4dbcc1362b78d965a0c854e27e756b9871d43da", "T3T1_de_zcash-test_sign_tx.py::test_external_presigned": "85f2067de3f218e718ae164e97dc030c4aef065c29755f6138afe10d664a2d56", "T3T1_de_zcash-test_sign_tx.py::test_one_two": "10258e39046685e302d403a9df4f82cc4b851cfa07d8103f2a52f4afd81fa99d", @@ -19539,7 +19539,7 @@ "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "2488848ff080a1de419fdc6bc7064bf4a0504b306f70df555863e9ddcac66a93", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "23ccb252c1ff5847c1db298a36dae6cb48fa2ae0962c10acc05bcf666cbe9875", "T3T1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ba87e90e6d810d1a8e39febbc867d89a69007b1ce7bdcc63224627e14914ab66", -"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "3d20b34ed2f65f424ca962dbd5470d7078b6b01af415aba19ba7c3fd11e5202b", +"T3T1_en_webauthn-test_msg_webauthn.py::test_add_remove": "49a2ce71a462f645ababd1dea2fc88fcf3d1b291391a12209342bf4e36e19b5c", "T3T1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "eb0670c196dacdf4d35fe8d03ba368ace9b3e90471a0f892ccec5e1ea7b42c10", "T3T1_en_zcash-test_sign_tx.py::test_external_presigned": "ea19880720b16fe8a730e908b2abfb34cf507940c156e882853a7632b842b329", "T3T1_en_zcash-test_sign_tx.py::test_one_two": "7346debbcbd3b808e607c9f6a75c638307c976d4c3249fb3ec1dc6c416826a38", @@ -20881,7 +20881,7 @@ "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "290251b9cc8901f682b5238649d59148f2e38f8bf600c9a7371c8704d1ebf531", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8c3138d7b797bcaea06d66998cc049d19448030b5c0f3c93112e5fd046422e67", "T3T1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "f91fca0f393aaaa079d872dd72286065f0df707dc66b7cf70b030e63ac4fec45", -"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "6a7c3882c247b42f236385b8b7e913d98d6959b033b16b87692e411873894c0e", +"T3T1_es_webauthn-test_msg_webauthn.py::test_add_remove": "1beb0994c99deb80b0a5a95752ac4453df19abad5e960a4e20d6db2a9bdbae56", "T3T1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "2e7ce8f4c09f1c65cb451f9784b4f9973bb53ca2ccb9ad4282addc9d0b2beb65", "T3T1_es_zcash-test_sign_tx.py::test_external_presigned": "43b0985d5076d4b3a9962384e688d6b5bac71f2b493547cfa6cf41a45bb405d2", "T3T1_es_zcash-test_sign_tx.py::test_one_two": "156d2d776997b10e5b8a85c231e734a95508a6df77ce9c5241333d9adcd71a97", @@ -22223,7 +22223,7 @@ "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "ddaa5b732f252125d32b0f5a37e7921bcc1ff294d77b09c112e4e3f563b8855c", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e05975469765465d77085adce8e3adc259e5c8e653a2be6fcdaf428277805f22", "T3T1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "01bdb5b8ceac205728755f3f9e555c30ab7a6caceb03c6156542f2955bf08ea8", -"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "45717859ce16c0e10b6aad7fe4dadedba449fbad3578c263d33324f936c1bca2", +"T3T1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "e7292add524a8fb87e18786704b7e809e17fa00bf828370e572a61932c90fbee", "T3T1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "dc90f97d311358870f5ff032a1af0cc677a8966ea236c82bcd7f7d3f58990c93", "T3T1_fr_zcash-test_sign_tx.py::test_external_presigned": "ed968fc6f87e77bf1062997e2ac7b1881aef2361331bd4551f823a7f9eb6e639", "T3T1_fr_zcash-test_sign_tx.py::test_one_two": "24180452ff7c2caec1587e3f0c9cdde8f760fdb060bf0a7a41bcaf80841d0aa6", From 6ec9937ead5802f54cb1690199384b563ac8bbad Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 26 Aug 2024 16:23:44 +0200 Subject: [PATCH 575/626] chore(vendor): update vendor/fido2-tests [no chagelog] --- vendor/fido2-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/fido2-tests b/vendor/fido2-tests index 9cfd22ef20..b9deb14b9e 160000 --- a/vendor/fido2-tests +++ b/vendor/fido2-tests @@ -1 +1 @@ -Subproject commit 9cfd22ef20fec2c34d0f0e5c16a5d5152da30861 +Subproject commit b9deb14b9e38cffa31b6d9a880c5e0d6855ef6ce From 2572705d1f232a7f33bf7fc6b7b37b9e29168a74 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Tue, 30 Jul 2024 01:19:41 +0200 Subject: [PATCH 576/626] refactor(core/ui/mercury): delete CancelInfoConfirm [no changelog] --- core/embed/rust/src/ui/component/base.rs | 33 ++++++++++++++++++- core/embed/rust/src/ui/component/mod.rs | 2 +- core/embed/rust/src/ui/flow/base.rs | 21 ++---------- core/embed/rust/src/ui/flow/mod.rs | 3 +- core/embed/rust/src/ui/flow/swipe.rs | 5 +-- .../src/ui/model_mercury/component/button.rs | 7 ---- .../src/ui/model_mercury/component/frame.rs | 25 +++++++------- .../src/ui/model_mercury/component/header.rs | 20 +++++------ .../src/ui/model_mercury/component/mod.rs | 4 +-- .../src/ui/model_mercury/flow/confirm_fido.rs | 3 +- .../flow/confirm_firmware_update.rs | 10 ++---- .../model_mercury/flow/confirm_set_new_pin.rs | 16 ++++----- .../model_mercury/flow/continue_recovery.rs | 7 ++-- .../src/ui/model_mercury/flow/get_address.rs | 6 ++-- .../ui/model_mercury/flow/prompt_backup.rs | 14 ++++---- .../ui/model_mercury/flow/request_number.rs | 8 ++--- .../ui/model_mercury/flow/set_brightness.rs | 4 +-- .../embed/rust/src/ui/model_mercury/layout.rs | 15 +-------- 18 files changed, 95 insertions(+), 108 deletions(-) diff --git a/core/embed/rust/src/ui/component/base.rs b/core/embed/rust/src/ui/component/base.rs index 9221f9f587..0b96581c2e 100644 --- a/core/embed/rust/src/ui/component/base.rs +++ b/core/embed/rust/src/ui/component/base.rs @@ -3,7 +3,7 @@ use core::mem; use heapless::Vec; use crate::{ - strutil::TString, + strutil::{ShortString, TString}, time::Duration, ui::{ button_request::{ButtonRequest, ButtonRequestCode}, @@ -578,3 +578,34 @@ impl EventCtx { self.transition_out } } + +/// Component::Msg for component parts of a swipe flow. Converting results of +/// different screens to a shared type makes things easier to work with. +/// +/// Also currently the type for message emitted by Flow::event to +/// micropython. They don't need to be the same. +#[derive(Clone)] +pub enum FlowMsg { + Confirmed, + Cancelled, + Info, + Choice(usize), + Text(ShortString), +} + +#[cfg(feature = "micropython")] +impl TryFrom<FlowMsg> for crate::micropython::obj::Obj { + type Error = crate::error::Error; + + fn try_from(val: FlowMsg) -> Result<crate::micropython::obj::Obj, Self::Error> { + match val { + FlowMsg::Confirmed => Ok(crate::ui::layout::result::CONFIRMED.as_obj()), + FlowMsg::Cancelled => Ok(crate::ui::layout::result::CANCELLED.as_obj()), + FlowMsg::Info => Ok(crate::ui::layout::result::INFO.as_obj()), + FlowMsg::Choice(i) => { + Ok((crate::ui::layout::result::CONFIRMED.as_obj(), i.try_into()?).try_into()?) + } + FlowMsg::Text(_s) => panic!(), + } + } +} diff --git a/core/embed/rust/src/ui/component/mod.rs b/core/embed/rust/src/ui/component/mod.rs index 7cc7b8de77..199359aed9 100644 --- a/core/embed/rust/src/ui/component/mod.rs +++ b/core/embed/rust/src/ui/component/mod.rs @@ -27,7 +27,7 @@ pub mod text; pub mod timeout; pub use bar::Bar; -pub use base::{Child, Component, ComponentExt, Event, EventCtx, Never, TimerToken}; +pub use base::{Child, Component, ComponentExt, Event, EventCtx, FlowMsg, Never, TimerToken}; pub use border::Border; pub use button_request::{ButtonRequestExt, SendButtonRequest}; #[cfg(all(feature = "jpeg", feature = "ui_image_buffer", feature = "micropython"))] diff --git a/core/embed/rust/src/ui/flow/base.rs b/core/embed/rust/src/ui/flow/base.rs index 2da6a7348e..eddfb80f26 100644 --- a/core/embed/rust/src/ui/flow/base.rs +++ b/core/embed/rust/src/ui/flow/base.rs @@ -1,7 +1,6 @@ -use crate::{ - strutil::ShortString, - ui::component::{base::AttachType, swipe_detect::SwipeConfig, SwipeDirection}, -}; +use crate::ui::component::{base::AttachType, swipe_detect::SwipeConfig, SwipeDirection}; + +pub use crate::ui::component::FlowMsg; pub trait Swipable { fn get_swipe_config(&self) -> SwipeConfig; @@ -9,20 +8,6 @@ pub trait Swipable { fn get_internal_page_count(&self) -> usize; } -/// Component::Msg for component parts of a flow. Converting results of -/// different screens to a shared type makes things easier to work with. -/// -/// Also currently the type for message emitted by Flow::event to -/// micropython. They don't need to be the same. -#[derive(Clone)] -pub enum FlowMsg { - Confirmed, - Cancelled, - Info, - Choice(usize), - Text(ShortString), -} - /// Composable event handler result. #[derive(Clone)] pub enum Decision { diff --git a/core/embed/rust/src/ui/flow/mod.rs b/core/embed/rust/src/ui/flow/mod.rs index 0a7ca047eb..cd01cd02d7 100644 --- a/core/embed/rust/src/ui/flow/mod.rs +++ b/core/embed/rust/src/ui/flow/mod.rs @@ -2,6 +2,7 @@ pub mod base; pub mod page; mod swipe; -pub use base::{FlowMsg, FlowState, Swipable}; +pub use crate::ui::component::FlowMsg; +pub use base::{FlowState, Swipable}; pub use page::SwipePage; pub use swipe::SwipeFlow; diff --git a/core/embed/rust/src/ui/flow/swipe.rs b/core/embed/rust/src/ui/flow/swipe.rs index 3aa50bd76a..b35f9ea065 100644 --- a/core/embed/rust/src/ui/flow/swipe.rs +++ b/core/embed/rust/src/ui/flow/swipe.rs @@ -9,11 +9,11 @@ use crate::{ component::{ base::{AttachType, AttachType::Swipe}, swipe_detect::SwipeSettings, - Component, Event, EventCtx, SwipeDetect, SwipeDetectMsg, SwipeDirection, + Component, Event, EventCtx, FlowMsg, SwipeDetect, SwipeDetectMsg, SwipeDirection, }, display::Color, event::{SwipeEvent, TouchEvent}, - flow::{base::Decision, FlowMsg, FlowState}, + flow::{base::Decision, FlowState}, geometry::Rect, layout::obj::ObjComponent, shape::{render_on_display, ConcreteRenderer, Renderer, ScopedRenderer}, @@ -370,6 +370,7 @@ impl ObjComponent for SwipeFlow { .try_into()?), } } + fn obj_paint(&mut self) { render_on_display(None, Some(Color::black()), |target| { self.render_state(self.state.index(), target); diff --git a/core/embed/rust/src/ui/model_mercury/component/button.rs b/core/embed/rust/src/ui/model_mercury/component/button.rs index 1b59be31ee..5ff30c0fbb 100644 --- a/core/embed/rust/src/ui/model_mercury/component/button.rs +++ b/core/embed/rust/src/ui/model_mercury/component/button.rs @@ -451,13 +451,6 @@ pub struct ButtonStyle { pub background_color: Color, } -#[derive(Clone, Copy)] -pub enum CancelInfoConfirmMsg { - Cancelled, - Info, - Confirmed, -} - #[derive(PartialEq, Eq, Clone)] pub struct IconText { text: TString<'static>, diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index e6f47c035e..1a70134da6 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -1,21 +1,20 @@ -use super::{theme, ButtonStyleSheet, CancelInfoConfirmMsg, Footer, Header}; +use super::{theme, ButtonStyleSheet, Footer, Header}; use crate::{ strutil::TString, ui::{ component::{ swipe_detect::{SwipeConfig, SwipeSettings}, text::TextStyle, - Component, Event, - Event::Swipe, - EventCtx, SwipeDetect, SwipeDirection, + Component, + Event::{self, Swipe}, + EventCtx, FlowMsg, SwipeDetect, SwipeDirection, }, display::{Color, Icon}, event::SwipeEvent, geometry::{Alignment, Insets, Point, Rect}, lerp::Lerp, model_mercury::theme::TITLE_HEIGHT, - shape, - shape::Renderer, + shape::{self, Renderer}, }, }; @@ -94,7 +93,7 @@ pub struct Frame<T> { pub enum FrameMsg<T> { Content(T), - Button(CancelInfoConfirmMsg), + Button(FlowMsg), } impl<T> Frame<T> @@ -142,26 +141,26 @@ where } #[inline(never)] - fn with_button(mut self, icon: Icon, msg: CancelInfoConfirmMsg, enabled: bool) -> Self { + fn with_button(mut self, icon: Icon, msg: FlowMsg, enabled: bool) -> Self { self.header = self.header.with_button(icon, enabled, msg); self } pub fn with_cancel_button(self) -> Self { - self.with_button(theme::ICON_CLOSE, CancelInfoConfirmMsg::Cancelled, true) + self.with_button(theme::ICON_CLOSE, FlowMsg::Cancelled, true) } pub fn with_menu_button(self) -> Self { - self.with_button(theme::ICON_MENU, CancelInfoConfirmMsg::Info, true) + self.with_button(theme::ICON_MENU, FlowMsg::Info, true) } pub fn with_warning_low_icon(self) -> Self { - self.with_button(theme::ICON_WARNING, CancelInfoConfirmMsg::Info, false) + self.with_button(theme::ICON_WARNING, FlowMsg::Info, false) .button_styled(theme::button_warning_low()) } pub fn with_danger_icon(self) -> Self { - self.with_button(theme::ICON_WARNING, CancelInfoConfirmMsg::Info, false) + self.with_button(theme::ICON_WARNING, FlowMsg::Info, false) .button_styled(theme::button_danger()) } @@ -319,7 +318,7 @@ fn frame_event( footer: &mut Option<Footer>, ctx: &mut EventCtx, event: Event, -) -> Option<CancelInfoConfirmMsg> { +) -> Option<FlowMsg> { horizontal_swipe.event(event, swipe_config); footer.event(ctx, event); diff --git a/core/embed/rust/src/ui/model_mercury/component/header.rs b/core/embed/rust/src/ui/model_mercury/component/header.rs index c8c7e7464d..8b22248eda 100644 --- a/core/embed/rust/src/ui/model_mercury/component/header.rs +++ b/core/embed/rust/src/ui/model_mercury/component/header.rs @@ -2,17 +2,15 @@ use crate::{ strutil::TString, time::{Duration, Stopwatch}, ui::{ - component::{text::TextStyle, Component, Event, EventCtx, Label}, + component::{text::TextStyle, Component, Event, EventCtx, FlowMsg, Label}, display::{Color, Icon}, geometry::{Alignment, Alignment2D, Insets, Offset, Rect}, lerp::Lerp, model_mercury::{ - component::{Button, ButtonMsg, ButtonStyleSheet, CancelInfoConfirmMsg}, - theme, - theme::TITLE_HEIGHT, + component::{Button, ButtonMsg, ButtonStyleSheet}, + theme::{self, TITLE_HEIGHT}, }, - shape, - shape::Renderer, + shape::{self, Renderer}, util::animation_disabled, }, }; @@ -71,7 +69,7 @@ pub struct Header { icon: Option<Icon>, color: Option<Color>, title_style: TextStyle, - button_msg: CancelInfoConfirmMsg, + button_msg: FlowMsg, } impl Header { @@ -85,7 +83,7 @@ impl Header { icon: None, color: None, title_style: theme::label_title_main(), - button_msg: CancelInfoConfirmMsg::Cancelled, + button_msg: FlowMsg::Cancelled, } } #[inline(never)] @@ -134,7 +132,7 @@ impl Header { } #[inline(never)] - pub fn with_button(mut self, icon: Icon, enabled: bool, msg: CancelInfoConfirmMsg) -> Self { + pub fn with_button(mut self, icon: Icon, enabled: bool, msg: FlowMsg) -> Self { let touch_area = Insets::uniform(BUTTON_EXPAND_BORDER); self.button = Some( Button::with_icon(icon) @@ -166,7 +164,7 @@ impl Header { } impl Component for Header { - type Msg = CancelInfoConfirmMsg; + type Msg = FlowMsg; fn place(&mut self, bounds: Rect) -> Rect { let header_area = if let Some(b) = &mut self.button { @@ -208,7 +206,7 @@ impl Component for Header { } if let Some(ButtonMsg::Clicked) = self.button.event(ctx, event) { - return Some(self.button_msg); + return Some(self.button_msg.clone()); }; None diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index cfbc091890..113ab70d77 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -45,9 +45,7 @@ mod welcome_screen; pub use address_details::AddressDetails; #[cfg(feature = "ui_overlay")] pub use binary_selection::{BinarySelection, BinarySelectionMsg}; -pub use button::{ - Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, CancelInfoConfirmMsg, IconText, -}; +pub use button::{Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, IconText}; #[cfg(feature = "translations")] pub use coinjoin_progress::CoinJoinProgress; pub use error::ErrorScreen; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs index a7c67a924e..a13bb16184 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs @@ -171,8 +171,9 @@ impl ConfirmFido { .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Content(()) => Some(FlowMsg::Confirmed), + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), FrameMsg::Button(_) => Some(FlowMsg::Info), + _ => None, }); let content_menu = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs index 99a1b7c7fd..b20d35b9b8 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_firmware_update.rs @@ -19,8 +19,7 @@ use crate::{ use super::super::{ component::{ - CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, - VerticalMenuChoiceMsg, + Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -88,9 +87,7 @@ impl ConfirmFirmwareUpdate { .with_footer(TR::instructions__swipe_up.into(), None) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .map(|msg| { - matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) - }); + .map(|msg| matches!(msg, FrameMsg::Button(FlowMsg::Info)).then_some(FlowMsg::Info)); let content_menu = Frame::left_aligned( TString::empty(), @@ -117,8 +114,7 @@ impl ConfirmFirmwareUpdate { .with_cancel_button() .with_swipe(SwipeDirection::Right, SwipeSettings::default()) .map(|msg| { - matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Cancelled)) - .then_some(FlowMsg::Cancelled) + matches!(msg, FrameMsg::Button(FlowMsg::Cancelled)).then_some(FlowMsg::Cancelled) }); let content_confirm = Frame::left_aligned( diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs index 87cd2546d7..f8ff95535c 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_set_new_pin.rs @@ -19,10 +19,7 @@ use crate::{ }; use super::super::{ - component::{ - CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, VerticalMenu, - VerticalMenuChoiceMsg, - }, + component::{Frame, FrameMsg, PromptMsg, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg}, theme, }; @@ -83,8 +80,9 @@ impl SetNewPin { .with_footer(TR::instructions__swipe_up.into(), None) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .map(|msg| { - matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) + .map(|msg| match msg { + FrameMsg::Button(bm) => Some(bm), + _ => None, }); let content_menu = Frame::left_aligned( @@ -95,7 +93,7 @@ impl SetNewPin { .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), FrameMsg::Button(_) => None, }); @@ -116,7 +114,7 @@ impl SetNewPin { .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(bm) => Some(bm), _ => None, }); @@ -130,7 +128,7 @@ impl SetNewPin { .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs index fac9d9e6cb..2e4f4b2be6 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs @@ -21,8 +21,7 @@ use crate::{ use super::super::{ component::{ - CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, - VerticalMenuChoiceMsg, + Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -184,7 +183,7 @@ impl ContinueRecoveryBeforeShares { .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }) .repeated_button_request(ButtonRequest::new( @@ -202,7 +201,7 @@ impl ContinueRecoveryBeforeShares { .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs index 7033341e3c..89a4ba9363 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/get_address.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/get_address.rs @@ -20,8 +20,8 @@ use crate::{ use super::super::{ component::{ - AddressDetails, CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, - StatusScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, + AddressDetails, Frame, FrameMsg, PromptMsg, PromptScreen, StatusScreen, SwipeContent, + VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -217,7 +217,7 @@ impl GetAddress { .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs index 87d404d647..e0f548e56b 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/prompt_backup.rs @@ -19,8 +19,7 @@ use crate::{ use super::super::{ component::{ - CancelInfoConfirmMsg, Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, - VerticalMenuChoiceMsg, + Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -83,8 +82,9 @@ impl PromptBackup { .with_footer(TR::instructions__swipe_up.into(), None) .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Left, SwipeSettings::default()) - .map(|msg| { - matches!(msg, FrameMsg::Button(CancelInfoConfirmMsg::Info)).then_some(FlowMsg::Info) + .map(|msg| match msg { + FrameMsg::Button(bm) => Some(bm), + _ => None, }); let content_menu = Frame::left_aligned( @@ -95,7 +95,7 @@ impl PromptBackup { .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), FrameMsg::Button(_) => None, }); @@ -119,7 +119,7 @@ impl PromptBackup { .with_swipe(SwipeDirection::Up, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); @@ -133,7 +133,7 @@ impl PromptBackup { .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs index 4b5a48d122..ceb791e555 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/request_number.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/request_number.rs @@ -18,8 +18,8 @@ use core::sync::atomic::{AtomicU16, Ordering}; use super::super::{ component::{ - CancelInfoConfirmMsg, Frame, FrameMsg, NumberInputDialog, NumberInputDialogMsg, - SwipeContent, UpdatableMoreInfo, VerticalMenu, VerticalMenuChoiceMsg, + Frame, FrameMsg, NumberInputDialog, NumberInputDialogMsg, SwipeContent, UpdatableMoreInfo, + VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -114,7 +114,7 @@ impl RequestNumber { .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), FrameMsg::Button(_) => None, }); @@ -123,7 +123,7 @@ impl RequestNumber { .with_cancel_button() .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Button(CancelInfoConfirmMsg::Cancelled) => Some(FlowMsg::Cancelled), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), _ => None, }); diff --git a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs index d069e032f5..f0b6c6b33f 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/set_brightness.rs @@ -7,9 +7,9 @@ use crate::{ translations::TR, trezorhal::display, ui::{ - component::{base::ComponentExt, swipe_detect::SwipeSettings, SwipeDirection}, + component::{base::ComponentExt, swipe_detect::SwipeSettings, FlowMsg, SwipeDirection}, flow::{ - base::{DecisionBuilder as _, FlowMsg, StateChange}, + base::{DecisionBuilder as _, StateChange}, FlowState, SwipeFlow, }, layout::obj::LayoutObj, diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 89c2ff0a3b..13f2a4eb2f 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -2,8 +2,7 @@ use core::{cmp::Ordering, convert::TryInto}; use super::{ component::{ - AddressDetails, Bip39Input, Button, CancelConfirmMsg, CancelInfoConfirmMsg, - CoinJoinProgress, FidoConfirm, FidoMsg, Frame, FrameMsg, Homescreen, HomescreenMsg, + AddressDetails, Bip39Input, CoinJoinProgress, Frame, FrameMsg, Homescreen, HomescreenMsg, Lockscreen, MnemonicInput, MnemonicKeyboard, MnemonicKeyboardMsg, PinKeyboard, PinKeyboardMsg, Progress, PromptScreen, SelectWordCount, SelectWordCountMsg, Slip39Input, StatusScreen, SwipeUpScreen, SwipeUpScreenMsg, VerticalMenu, VerticalMenuChoiceMsg, @@ -56,18 +55,6 @@ use crate::{ }, }; -impl TryFrom<CancelInfoConfirmMsg> for Obj { - type Error = Error; - - fn try_from(value: CancelInfoConfirmMsg) -> Result<Self, Self::Error> { - match value { - CancelInfoConfirmMsg::Cancelled => Ok(CANCELLED.as_obj()), - CancelInfoConfirmMsg::Info => Ok(INFO.as_obj()), - CancelInfoConfirmMsg::Confirmed => Ok(CONFIRMED.as_obj()), - } - } -} - impl TryFrom<SelectWordCountMsg> for Obj { type Error = Error; From 7db1529533599c20e52060f3900afb9870c2b21c Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Mon, 26 Aug 2024 17:58:29 +0200 Subject: [PATCH 577/626] refactor(core/ui): alternative multipage footer --- core/embed/rust/src/ui/flow/page.rs | 4 + .../component/choose_credential.rs | 101 +++++ .../src/ui/model_mercury/component/footer.rs | 345 +++++++++++------- .../src/ui/model_mercury/component/frame.rs | 28 +- .../src/ui/model_mercury/component/mod.rs | 4 + .../ui/model_mercury/component/share_words.rs | 7 +- .../model_mercury/component/swipe_content.rs | 3 +- .../model_mercury/component/vertical_menu.rs | 4 +- .../src/ui/model_mercury/flow/confirm_fido.rs | 32 +- core/embed/rust/src/ui/shape/render.rs | 7 + .../webauthn/list_resident_credentials.py | 1 + 11 files changed, 376 insertions(+), 160 deletions(-) create mode 100644 core/embed/rust/src/ui/model_mercury/component/choose_credential.rs diff --git a/core/embed/rust/src/ui/flow/page.rs b/core/embed/rust/src/ui/flow/page.rs index 247a0399b5..b5138699c6 100644 --- a/core/embed/rust/src/ui/flow/page.rs +++ b/core/embed/rust/src/ui/flow/page.rs @@ -35,6 +35,10 @@ impl<T: Component + Paginate> SwipePage<T> { current: 0, } } + + pub fn inner(&self) -> &T { + &self.inner + } } impl<T: Component + Paginate> Component for SwipePage<T> { diff --git a/core/embed/rust/src/ui/model_mercury/component/choose_credential.rs b/core/embed/rust/src/ui/model_mercury/component/choose_credential.rs new file mode 100644 index 0000000000..43cc6b4bf3 --- /dev/null +++ b/core/embed/rust/src/ui/model_mercury/component/choose_credential.rs @@ -0,0 +1,101 @@ +use crate::{ + strutil::TString, + translations::TR, + ui::{ + component::{swipe_detect::SwipeSettings, Component, SwipeDirection}, + flow::{Swipable, SwipePage}, + }, +}; + +use super::{ + Frame, FrameMsg, InternallySwipable as _, PagedVerticalMenu, SwipeContent, + VerticalMenuChoiceMsg, +}; + +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ConfirmFido { + Intro, + ChooseCredential, + Details, + Tap, + Menu, +} + +/// Wrapper that updates `Footer` content whenever page is changed. +pub struct ChooseCredential<F: Fn(usize) -> TString<'static>>( + Frame<SwipeContent<SwipePage<PagedVerticalMenu<F>>>>, +); + +impl<F: Fn(usize) -> TString<'static>> ChooseCredential<F> { + pub fn new(label_fn: F, num_accounts: usize) -> Self { + let content_choose_credential = Frame::left_aligned( + TR::fido__title_select_credential.into(), + SwipeContent::new(SwipePage::vertical(PagedVerticalMenu::new( + num_accounts, + label_fn, + ))), + ) + .with_subtitle(TR::fido__title_for_authentication.into()) + .with_menu_button() + .with_footer_page_hint( + TR::fido__more_credentials.into(), + TR::buttons__go_back.into(), + TR::instructions__swipe_up.into(), + TR::instructions__swipe_down.into(), + ) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .with_vertical_pages(); + + Self(content_choose_credential) + } +} + +impl<F: Fn(usize) -> TString<'static>> Component for ChooseCredential<F> { + type Msg = FrameMsg<VerticalMenuChoiceMsg>; + + fn place(&mut self, bounds: crate::ui::geometry::Rect) -> crate::ui::geometry::Rect { + self.0.place(bounds) + } + + fn event( + &mut self, + ctx: &mut crate::ui::component::EventCtx, + event: crate::ui::component::Event, + ) -> Option<Self::Msg> { + let msg = self.0.event(ctx, event); + let current_page = self.0.inner().inner().inner().current_page(); + + self.0.update_footer_counter( + ctx, + current_page, + Some(self.0.inner().inner().inner().num_pages()), + ); + msg + } + + fn paint(&mut self) { + self.0.paint() + } + + fn render<'s>(&'s self, target: &mut impl crate::ui::shape::Renderer<'s>) { + self.0.render(target) + } +} + +impl<F: Fn(usize) -> TString<'static>> Swipable for ChooseCredential<F> { + fn get_swipe_config(&self) -> crate::ui::component::swipe_detect::SwipeConfig { + self.0.get_swipe_config() + } + + fn get_internal_page_count(&self) -> usize { + self.0.get_internal_page_count() + } +} + +#[cfg(feature = "ui_debug")] +impl<F: Fn(usize) -> TString<'static>> crate::trace::Trace for ChooseCredential<F> { + fn trace(&self, t: &mut dyn crate::trace::Tracer) { + self.0.trace(t) + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/footer.rs b/core/embed/rust/src/ui/model_mercury/component/footer.rs index 7ee6e2a08a..fd5836027a 100644 --- a/core/embed/rust/src/ui/model_mercury/component/footer.rs +++ b/core/embed/rust/src/ui/model_mercury/component/footer.rs @@ -22,8 +22,7 @@ use crate::{ #[derive(Clone)] pub struct Footer<'a> { area: Rect, - instruction: TString<'a>, - content: Option<FooterContent<'a>>, + content: FooterContent<'a>, swipe_allow_up: bool, swipe_allow_down: bool, progress: i16, @@ -32,8 +31,10 @@ pub struct Footer<'a> { #[derive(Clone)] enum FooterContent<'a> { - Description(TString<'a>), + Instruction(TString<'a>), + InstructionDescription(TString<'a>, TString<'a>), PageCounter(PageCounter), + PageHint(PageHint), } impl<'a> Footer<'a> { @@ -45,14 +46,10 @@ impl<'a> Footer<'a> { const STYLE_INSTRUCTION: &'static TextStyle = &theme::TEXT_SUB_GREY; const STYLE_DESCRIPTION: &'static TextStyle = &theme::TEXT_SUB_GREY_LIGHT; - pub fn new<T: Into<TString<'a>>>( - instruction: T, - description: Option<TString<'static>>, - ) -> Self { + fn from_content(content: FooterContent<'a>) -> Self { Self { area: Rect::zero(), - instruction: instruction.into(), - content: description.map(FooterContent::Description), + content, swipe_allow_down: false, swipe_allow_up: false, progress: 0, @@ -60,38 +57,79 @@ impl<'a> Footer<'a> { } } - pub fn with_page_counter(self, max_pages: u8) -> Self { - Self { - content: Some(FooterContent::PageCounter(PageCounter::new(max_pages))), - ..self - } + pub fn new<T: Into<TString<'a>>>( + instruction: T, + description: Option<TString<'static>>, + ) -> Self { + let instruction = instruction.into(); + Self::from_content( + description + .map(|d| FooterContent::InstructionDescription(instruction, d)) + .unwrap_or(FooterContent::Instruction(instruction)), + ) } - pub fn update_instruction<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { - self.instruction = s.into(); - ctx.request_paint(); + pub fn with_page_counter(max_pages: u8, instruction: TString<'static>) -> Self { + Self::from_content(FooterContent::PageCounter(PageCounter::new( + max_pages, + instruction, + ))) } - pub fn update_description<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { - if let Some(ref mut content) = self.content { - if let Some(text) = content.as_description_mut() { - *text = s.into(); - ctx.request_paint(); - } else { + pub fn with_page_hint( + description: TString<'static>, + description_last: TString<'static>, + instruction: TString<'static>, + instruction_last: TString<'static>, + ) -> Self { + Self::from_content(FooterContent::PageHint(PageHint { + description, + description_last, + instruction, + instruction_last, + page_curr: 0, + page_num: 1, + })) + } + + pub fn update_instruction<T: Into<TString<'static>>>(&mut self, ctx: &mut EventCtx, s: T) { + match &mut self.content { + FooterContent::Instruction(i) => *i = s.into(), + FooterContent::InstructionDescription(i, _d) => *i = s.into(), + FooterContent::PageCounter(page_counter) => page_counter.instruction = s.into(), + _ => { #[cfg(feature = "ui_debug")] - panic!("footer does not have description") + panic!("not supported") } } + ctx.request_paint(); + } + + pub fn update_description<T: Into<TString<'a>>>(&mut self, ctx: &mut EventCtx, s: T) { + if let FooterContent::InstructionDescription(_i, d) = &mut self.content { + *d = s.into(); + ctx.request_paint(); + } else { + #[cfg(feature = "ui_debug")] + panic!("footer does not have description") + } } - pub fn update_page_counter(&mut self, ctx: &mut EventCtx, n: u8) { - if let Some(ref mut content) = self.content { - if let Some(counter) = content.as_page_counter_mut() { - counter.update_current_page(n); + pub fn update_page_counter(&mut self, ctx: &mut EventCtx, current: usize, max: Option<usize>) { + match &mut self.content { + FooterContent::PageCounter(counter) => { + counter.update_current_page(current); self.swipe_allow_down = counter.is_first_page(); self.swipe_allow_up = counter.is_last_page(); ctx.request_paint(); - } else { + } + FooterContent::PageHint(page_hint) => { + page_hint.update_current_page(current, max); + self.swipe_allow_down = page_hint.is_first_page(); + self.swipe_allow_up = page_hint.is_last_page(); + ctx.request_paint(); + } + _ => { #[cfg(feature = "ui_debug")] panic!("footer does not have counter") } @@ -99,11 +137,7 @@ impl<'a> Footer<'a> { } pub fn height(&self) -> i16 { - if self.content.is_some() { - Footer::HEIGHT_DEFAULT - } else { - Footer::HEIGHT_SIMPLE - } + self.content.height() } pub fn with_swipe(self, swipe_direction: SwipeDirection) -> Self { @@ -125,15 +159,7 @@ impl<'a> Component for Footer<'a> { type Msg = Never; fn place(&mut self, bounds: Rect) -> Rect { - let h = bounds.height(); - assert!(h == Footer::HEIGHT_SIMPLE || h == Footer::HEIGHT_DEFAULT); - if let Some(content) = &mut self.content { - if let Some(counter) = content.as_page_counter_mut() { - if h == Footer::HEIGHT_DEFAULT { - counter.place(bounds.split_top(Footer::HEIGHT_SIMPLE).0); - } - } - } + assert!(bounds.height() == self.content.height()); self.area = bounds; self.area } @@ -189,49 +215,7 @@ impl<'a> Component for Footer<'a> { }; target.with_origin(offset, &|target| { - // show description/counter only if there is space for it - if self.area.height() == Footer::HEIGHT_DEFAULT { - if let Some(content) = &self.content { - match content { - FooterContent::Description(text) => { - let area_description = self.area.split_top(Footer::HEIGHT_SIMPLE).0; - let text_description_font_descent = Footer::STYLE_DESCRIPTION - .text_font - .visible_text_height_ex("Ay") - .1; - let text_description_baseline = area_description.bottom_center() - - Offset::y(text_description_font_descent); - - text.map(|t| { - Text::new(text_description_baseline, t) - .with_font(Footer::STYLE_DESCRIPTION.text_font) - .with_fg(Footer::STYLE_DESCRIPTION.text_color) - .with_align(Alignment::Center) - .render(target); - }); - } - FooterContent::PageCounter(counter) => { - counter.render(target); - } - } - } - } - - let area_instruction = self.area.split_bottom(Footer::HEIGHT_SIMPLE).1; - let text_instruction_font_descent = Footer::STYLE_INSTRUCTION - .text_font - .visible_text_height_ex("Ay") - .1; - let text_instruction_baseline = - area_instruction.bottom_center() - Offset::y(text_instruction_font_descent); - self.instruction.map(|t| { - Text::new(text_instruction_baseline, t) - .with_font(Footer::STYLE_INSTRUCTION.text_font) - .with_fg(Footer::STYLE_INSTRUCTION.text_color) - .with_align(Alignment::Center) - .render(target); - }); - + self.content.render(self.area, target); shape::Bar::new(self.area) .with_alpha(mask) .with_fg(Color::black()) @@ -245,89 +229,138 @@ impl<'a> Component for Footer<'a> { impl crate::trace::Trace for Footer<'_> { fn trace(&self, t: &mut dyn crate::trace::Tracer) { t.component("Footer"); - if let Some(content) = &self.content { - match content { - FooterContent::Description(text) => t.string("description", *text), - FooterContent::PageCounter(counter) => counter.trace(t), + match &self.content { + FooterContent::Instruction(i) => { + t.string("instruction", *i); + } + FooterContent::InstructionDescription(i, d) => { + t.string("description", *d); + t.string("instruction", *i); + } + FooterContent::PageCounter(counter) => counter.trace(t), + FooterContent::PageHint(page_hint) => { + t.string("description", page_hint.description()); + t.string("instruction", page_hint.instruction()); } } - t.string("instruction", self.instruction); } } impl<'a> FooterContent<'a> { - pub fn as_description_mut(&mut self) -> Option<&mut TString<'a>> { - match self { - FooterContent::Description(ref mut text) => Some(text), - _ => None, + fn height(&self) -> i16 { + if matches!(self, FooterContent::Instruction(_)) { + Footer::HEIGHT_SIMPLE + } else { + Footer::HEIGHT_DEFAULT } } - pub fn as_page_counter_mut(&mut self) -> Option<&mut PageCounter> { + fn render<'s>(&'s self, area: Rect, target: &mut impl Renderer<'s>) + where + 's: 'a, + { match self { - FooterContent::PageCounter(ref mut counter) => Some(counter), - _ => None, + FooterContent::Instruction(instruction) => { + Self::render_instruction(target, area, instruction); + } + FooterContent::InstructionDescription(instruction, description) => { + Self::render_description(target, area, description); + Self::render_instruction(target, area, instruction); + } + FooterContent::PageCounter(page_counter) => page_counter.render(target, area), + FooterContent::PageHint(page_hint) => { + Self::render_description(target, area, &page_hint.description()); + Self::render_instruction(target, area, &page_hint.instruction()); + } } } + + fn render_description<'s>( + target: &mut impl Renderer<'s>, + area: Rect, + description: &TString<'a>, + ) { + let area_description = area.split_top(Footer::HEIGHT_SIMPLE).0; + let text_description_font_descent = Footer::STYLE_DESCRIPTION + .text_font + .visible_text_height_ex("Ay") + .1; + let text_description_baseline = + area_description.bottom_center() - Offset::y(text_description_font_descent); + + description.map(|t| { + Text::new(text_description_baseline, t) + .with_font(Footer::STYLE_DESCRIPTION.text_font) + .with_fg(Footer::STYLE_DESCRIPTION.text_color) + .with_align(Alignment::Center) + .render(target) + }); + } + + fn render_instruction<'s>( + target: &mut impl Renderer<'s>, + area: Rect, + instruction: &TString<'a>, + ) { + let area_instruction = area.split_bottom(Footer::HEIGHT_SIMPLE).1; + let text_instruction_font_descent = Footer::STYLE_INSTRUCTION + .text_font + .visible_text_height_ex("Ay") + .1; + let text_instruction_baseline = + area_instruction.bottom_center() - Offset::y(text_instruction_font_descent); + instruction.map(|t| { + Text::new(text_instruction_baseline, t) + .with_font(Footer::STYLE_INSTRUCTION.text_font) + .with_fg(Footer::STYLE_INSTRUCTION.text_color) + .with_align(Alignment::Center) + .render(target) + }); + } } /// Helper component used within Footer instead of description for page count /// indication, rendered e.g. as: '1 / 20'. #[derive(Clone)] struct PageCounter { - area: Rect, + pub instruction: TString<'static>, font: Font, page_curr: u8, page_max: u8, } impl PageCounter { - fn new(page_max: u8) -> Self { + fn new(page_max: u8, instruction: TString<'static>) -> Self { Self { - area: Rect::zero(), - page_curr: 1, + instruction, + page_curr: 0, page_max, font: Font::SUB, } } - fn update_current_page(&mut self, new_value: u8) { - self.page_curr = new_value.clamp(1, self.page_max); + fn update_current_page(&mut self, new_value: usize) { + self.page_curr = (new_value as u8).clamp(0, self.page_max.saturating_sub(1)); } fn is_first_page(&self) -> bool { - self.page_curr == 1 + self.page_curr == 0 } fn is_last_page(&self) -> bool { - self.page_curr == self.page_max + self.page_curr + 1 == self.page_max } } -impl Component for PageCounter { - type Msg = Never; - - fn place(&mut self, bounds: Rect) -> Rect { - self.area = bounds; - self.area - } - - fn event(&mut self, _ctx: &mut EventCtx, _event: Event) -> Option<Self::Msg> { - None - } - - fn paint(&mut self) { - todo!("remove when ui-t3t1 done") - } - - fn render<'s>(&'s self, target: &mut impl Renderer<'s>) { - let color = if self.page_curr == self.page_max { +impl PageCounter { + fn render<'s>(&'s self, target: &mut impl Renderer<'s>, area: Rect) { + let color = if self.is_last_page() { theme::GREEN_LIGHT } else { theme::GREY_LIGHT }; - let string_curr = uformat!("{}", self.page_curr); + let string_curr = uformat!("{}", self.page_curr + 1); let string_max = uformat!("{}", self.page_max); // center the whole counter "x / yz" @@ -337,8 +370,9 @@ impl Component for PageCounter { let width_num_max = self.font.text_width(&string_max); let width_total = width_num_curr + width_foreslash + width_num_max + 2 * offset_x.x; - let center_x = self.area.center().x; - let counter_y = self.font.vert_center(self.area.y0, self.area.y1, "0"); + let counter_area = area.split_top(Footer::HEIGHT_SIMPLE).0; + let center_x = counter_area.center().x; + let counter_y = self.font.vert_center(counter_area.y0, counter_area.y1, "0"); let counter_start_x = center_x - width_total / 2; let counter_end_x = center_x + width_total / 2; let base_num_curr = Point::new(counter_start_x, counter_y); @@ -359,6 +393,8 @@ impl Component for PageCounter { .with_fg(color) .with_font(self.font) .render(target); + + FooterContent::render_instruction(target, area, &self.instruction); } } @@ -370,3 +406,58 @@ impl crate::trace::Trace for PageCounter { t.int("page max", self.page_max.into()); } } + +#[derive(Clone)] +struct PageHint { + pub description: TString<'static>, + pub description_last: TString<'static>, + pub instruction: TString<'static>, + pub instruction_last: TString<'static>, + pub page_curr: u8, + pub page_num: u8, +} + +impl PageHint { + fn update_current_page(&mut self, current: usize, max: Option<usize>) { + self.page_curr = (current as u8).clamp(0, self.page_num.saturating_sub(1)); + if let Some(max) = max { + self.page_num = max as u8; + } + } + + fn update_max_page(&mut self, max: usize) { + self.page_num = max as u8; + } + + fn is_single_page(&self) -> bool { + self.page_num <= 1 + } + + fn is_first_page(&self) -> bool { + self.page_curr == 0 + } + + fn is_last_page(&self) -> bool { + self.page_curr + 1 == self.page_num + } + + fn description(&self) -> TString<'static> { + if self.is_single_page() { + TString::empty() + } else if self.is_last_page() { + self.description_last + } else { + self.description + } + } + + fn instruction(&self) -> TString<'static> { + if self.is_single_page() { + TString::empty() + } else if self.is_last_page() { + self.instruction_last + } else { + self.instruction + } + } +} diff --git a/core/embed/rust/src/ui/model_mercury/component/frame.rs b/core/embed/rust/src/ui/model_mercury/component/frame.rs index 1a70134da6..410c04b94b 100644 --- a/core/embed/rust/src/ui/model_mercury/component/frame.rs +++ b/core/embed/rust/src/ui/model_mercury/component/frame.rs @@ -196,7 +196,24 @@ where #[inline(never)] pub fn with_footer_counter(mut self, instruction: TString<'static>, max_value: u8) -> Self { - self.footer = Some(Footer::new(instruction, None).with_page_counter(max_value)); + self.footer = Some(Footer::with_page_counter(max_value, instruction)); + self + } + + #[inline(never)] + pub fn with_footer_page_hint( + mut self, + description: TString<'static>, + description_last: TString<'static>, + instruction: TString<'static>, + instruction_last: TString<'static>, + ) -> Self { + self.footer = Some(Footer::with_page_hint( + description, + description_last, + instruction, + instruction_last, + )); self } @@ -231,9 +248,14 @@ where res } - pub fn update_footer_counter(&mut self, ctx: &mut EventCtx, new_val: u8) { + pub fn update_footer_counter( + &mut self, + ctx: &mut EventCtx, + current: usize, + max: Option<usize>, + ) { if let Some(footer) = &mut self.footer { - footer.update_page_counter(ctx, new_val); + footer.update_page_counter(ctx, current, max); } } diff --git a/core/embed/rust/src/ui/model_mercury/component/mod.rs b/core/embed/rust/src/ui/model_mercury/component/mod.rs index 113ab70d77..48f3a35131 100644 --- a/core/embed/rust/src/ui/model_mercury/component/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/component/mod.rs @@ -4,6 +4,8 @@ mod address_details; mod binary_selection; pub mod bl_confirm; mod button; +#[cfg(feature = "universal_fw")] +mod choose_credential; #[cfg(feature = "translations")] mod coinjoin_progress; mod fido; @@ -46,6 +48,8 @@ pub use address_details::AddressDetails; #[cfg(feature = "ui_overlay")] pub use binary_selection::{BinarySelection, BinarySelectionMsg}; pub use button::{Button, ButtonContent, ButtonMsg, ButtonStyle, ButtonStyleSheet, IconText}; +#[cfg(feature = "universal_fw")] +pub use choose_credential::ChooseCredential; #[cfg(feature = "translations")] pub use coinjoin_progress::CoinJoinProgress; pub use error::ErrorScreen; diff --git a/core/embed/rust/src/ui/model_mercury/component/share_words.rs b/core/embed/rust/src/ui/model_mercury/component/share_words.rs index 396200fae6..46562c79bf 100644 --- a/core/embed/rust/src/ui/model_mercury/component/share_words.rs +++ b/core/embed/rust/src/ui/model_mercury/component/share_words.rs @@ -84,9 +84,9 @@ impl<'a> Component for ShareWords<'a> { } fn event(&mut self, ctx: &mut EventCtx, event: Event) -> Option<Self::Msg> { - let page_index = self.frame.inner().inner().page_index as u8; + let page_index = self.frame.inner().inner().page_index; if let Some(repeated_indices) = &self.repeated_indices { - if repeated_indices.contains(&page_index) { + if repeated_indices.contains(&(page_index as u8)) { let updated_subtitle = TString::from_translation(TR::reset__the_word_is_repeated); self.frame .update_subtitle(ctx, updated_subtitle, Some(theme::TEXT_SUB_GREEN_LIME)); @@ -95,7 +95,8 @@ impl<'a> Component for ShareWords<'a> { .update_subtitle(ctx, self.subtitle, Some(theme::TEXT_SUB_GREY)); } } - self.frame.update_footer_counter(ctx, page_index + 1); + self.frame + .update_footer_counter(ctx, page_index as usize, None); self.frame.event(ctx, event) } diff --git a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs index fb42a6c37d..8e484f084d 100644 --- a/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs +++ b/core/embed/rust/src/ui/model_mercury/component/swipe_content.rs @@ -7,8 +7,7 @@ use crate::{ event::SwipeEvent, geometry::{Offset, Rect}, lerp::Lerp, - shape, - shape::Renderer, + shape::{self, Renderer}, util::animation_disabled, }, }; diff --git a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs index bb7744c538..11c3ae18c2 100644 --- a/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs +++ b/core/embed/rust/src/ui/model_mercury/component/vertical_menu.rs @@ -1,6 +1,6 @@ use heapless::Vec; -use super::theme; +use super::{theme, InternallySwipable}; use crate::{ strutil::TString, time::{Duration, Stopwatch}, @@ -266,7 +266,7 @@ impl Component for VerticalMenu { let opacities = [item1_opacity, item2_opacity, item3_opacity]; - target.with_origin(offset, &|target| { + target.with_translate(offset, &|target| { // render buttons separated by thin bars for (i, button) in (&self.buttons).into_iter().take(self.n_items).enumerate() { button.render(target); diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs index a13bb16184..3961c4114d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_fido.rs @@ -11,16 +11,16 @@ use crate::{ }, flow::{ base::{DecisionBuilder as _, StateChange}, - FlowMsg, FlowState, SwipeFlow, SwipePage, + FlowMsg, FlowState, SwipeFlow, }, layout::obj::LayoutObj, - model_mercury::component::{FidoCredential, SwipeContent}, }, }; use super::super::{ component::{ - Frame, FrameMsg, PagedVerticalMenu, PromptScreen, VerticalMenu, VerticalMenuChoiceMsg, + ChooseCredential, FidoCredential, Frame, FrameMsg, PromptMsg, PromptScreen, SwipeContent, + VerticalMenu, VerticalMenuChoiceMsg, }, theme, }; @@ -49,6 +49,7 @@ impl FlowState for ConfirmFido { match (self, direction) { (Self::Intro, SwipeDirection::Left) => Self::Menu.swipe(direction), (Self::Intro, SwipeDirection::Up) => Self::ChooseCredential.swipe(direction), + (Self::ChooseCredential, SwipeDirection::Down) => Self::Intro.swipe(direction), (Self::Details, SwipeDirection::Up) => Self::Tap.swipe(direction), (Self::Tap, SwipeDirection::Down) => Self::Details.swipe(direction), _ => self.do_nothing(), @@ -122,26 +123,11 @@ impl ConfirmFido { .try_into() .unwrap_or_else(|_| TString::from_str("-")) }; - let content_choose_credential = Frame::left_aligned( - TR::fido__title_select_credential.into(), - SwipeContent::new(SwipePage::vertical(PagedVerticalMenu::new( - num_accounts, - label_fn, - ))), - ) - .with_subtitle(TR::fido__title_for_authentication.into()) - .with_menu_button() - .with_footer( - TR::instructions__swipe_up.into(), - (num_accounts > 2).then_some(TR::fido__more_credentials.into()), - ) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .with_vertical_pages() - .map(|msg| match msg { - FrameMsg::Button(_) => Some(FlowMsg::Info), - FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), - }); + let content_choose_credential = + ChooseCredential::new(label_fn, num_accounts).map(|msg| match msg { + FrameMsg::Button(_) => Some(FlowMsg::Info), + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + }); let get_account = move || { let current = CRED_SELECTED.load(Ordering::Relaxed); diff --git a/core/embed/rust/src/ui/shape/render.rs b/core/embed/rust/src/ui/shape/render.rs index 9a59a996a0..2caaa382ea 100644 --- a/core/embed/rust/src/ui/shape/render.rs +++ b/core/embed/rust/src/ui/shape/render.rs @@ -51,6 +51,13 @@ pub trait Renderer<'a> { inner(self); self.set_viewport(original); } + + fn with_translate(&mut self, offset: Offset, inner: &dyn Fn(&mut Self)) { + let original = self.viewport(); + self.set_viewport(self.viewport().translate(offset)); + inner(self); + self.set_viewport(original); + } } // ========================================================================== diff --git a/core/src/apps/webauthn/list_resident_credentials.py b/core/src/apps/webauthn/list_resident_credentials.py index 0c5e92dbe7..1151cfc708 100644 --- a/core/src/apps/webauthn/list_resident_credentials.py +++ b/core/src/apps/webauthn/list_resident_credentials.py @@ -18,6 +18,7 @@ async def list_resident_credentials( TR.fido__title_list_credentials, description=TR.fido__export_credentials, verb=TR.buttons__export, + prompt_screen=True, ) creds = [ WebAuthnCredential( From b8c27d5fd6ae4223463bfc2a852cf18797511ba0 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 11 Apr 2024 09:35:13 +0200 Subject: [PATCH 578/626] feat(core/bootloader): only allow confirm-less firmware installation for full-trust images --- core/embed/bootloader/.changelog.d/3709.changed | 1 + core/embed/bootloader/bootui.c | 7 +++++-- core/embed/bootloader/bootui.h | 3 ++- core/embed/bootloader/messages.c | 15 +++++++++++---- core/embed/rust/rust_ui_bootloader.h | 2 +- core/embed/rust/src/ui/api/bootloader_c.rs | 2 ++ .../rust/src/ui/model_mercury/bootloader/mod.rs | 5 ++++- core/embed/rust/src/ui/model_tr/bootloader/mod.rs | 5 ++++- core/embed/rust/src/ui/model_tt/bootloader/mod.rs | 5 ++++- core/embed/rust/src/ui/ui_features.rs | 1 + 10 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 core/embed/bootloader/.changelog.d/3709.changed diff --git a/core/embed/bootloader/.changelog.d/3709.changed b/core/embed/bootloader/.changelog.d/3709.changed new file mode 100644 index 0000000000..1fdc1564d5 --- /dev/null +++ b/core/embed/bootloader/.changelog.d/3709.changed @@ -0,0 +1 @@ +Require confirmation when installing non-full trust firmware image on empty device diff --git a/core/embed/bootloader/bootui.c b/core/embed/bootloader/bootui.c index b1d446aec4..4c9a32ebf5 100644 --- a/core/embed/bootloader/bootui.c +++ b/core/embed/bootloader/bootui.c @@ -249,14 +249,17 @@ uint32_t ui_screen_menu(secbool firmware_present) { uint32_t ui_screen_install_confirm(const vendor_header *const vhdr, const image_header *const hdr, secbool should_keep_seed, - secbool is_newvendor, int version_cmp) { + secbool is_newvendor, secbool is_newinstall, + int version_cmp) { uint8_t fingerprint[32]; char ver_str[64]; get_image_fingerprint(hdr, fingerprint); format_ver("%d.%d.%d", hdr->version, ver_str, sizeof(ver_str)); return screen_install_confirm(vhdr->vstr, vhdr->vstr_len, ver_str, fingerprint, should_keep_seed == sectrue, - is_newvendor == sectrue, version_cmp); + + is_newvendor == sectrue, + is_newinstall == sectrue, version_cmp); } void ui_screen_install_start() { diff --git a/core/embed/bootloader/bootui.h b/core/embed/bootloader/bootui.h index e7415b9504..4b29f01532 100644 --- a/core/embed/bootloader/bootui.h +++ b/core/embed/bootloader/bootui.h @@ -62,7 +62,8 @@ uint32_t ui_screen_menu(secbool firmware_present); uint32_t ui_screen_install_confirm(const vendor_header* const vhdr, const image_header* const hdr, secbool shold_keep_seed, - secbool is_newvendor, int version_cmp); + secbool is_newvendor, secbool is_newinstall, + int version_cmp); void ui_screen_install_start(); void ui_screen_install_progress_erase(int pos, int len); void ui_screen_install_progress_upload(int pos); diff --git a/core/embed/bootloader/messages.c b/core/embed/bootloader/messages.c index 9e9f92af23..58fdce13b5 100644 --- a/core/embed/bootloader/messages.c +++ b/core/embed/bootloader/messages.c @@ -673,13 +673,20 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, #endif uint32_t response = INPUT_CANCEL; - if (sectrue == is_new || sectrue == is_ilu) { + if (((vhdr.vtrust & VTRUST_NO_WARNING) == VTRUST_NO_WARNING) && + (sectrue == is_new || sectrue == is_ilu)) { // new installation or interaction less updated - auto confirm + // only allowed for full-trust images response = INPUT_CONFIRM; } else { - int version_cmp = version_compare(hdr.version, current_hdr->version); - response = ui_screen_install_confirm(&vhdr, &hdr, should_keep_seed, - is_newvendor, version_cmp); + if (sectrue != is_new) { + int version_cmp = version_compare(hdr.version, current_hdr->version); + response = ui_screen_install_confirm( + &vhdr, &hdr, should_keep_seed, is_newvendor, is_new, version_cmp); + } else { + response = ui_screen_install_confirm(&vhdr, &hdr, sectrue, + is_newvendor, is_new, 0); + } } if (INPUT_CANCEL == response) { diff --git a/core/embed/rust/rust_ui_bootloader.h b/core/embed/rust/rust_ui_bootloader.h index 8f0149585c..cdddb96a51 100644 --- a/core/embed/rust/rust_ui_bootloader.h +++ b/core/embed/rust/rust_ui_bootloader.h @@ -4,7 +4,7 @@ uint32_t screen_install_confirm(const char* vendor_str, uint8_t vendor_str_len, const char* version_str, const uint8_t* fingerprint, bool should_keep_seed, bool is_newvendor, - int version_cmp); + bool is_newinstall, int version_cmp); uint32_t screen_wipe_confirm(void); void screen_install_progress(int16_t progress, bool initialize, bool initial_setup); diff --git a/core/embed/rust/src/ui/api/bootloader_c.rs b/core/embed/rust/src/ui/api/bootloader_c.rs index a6d6b44393..30bb2524b5 100644 --- a/core/embed/rust/src/ui/api/bootloader_c.rs +++ b/core/embed/rust/src/ui/api/bootloader_c.rs @@ -40,6 +40,7 @@ extern "C" fn screen_install_confirm( fingerprint: *const cty::uint8_t, should_keep_seed: bool, is_newvendor: bool, + is_newinstall: bool, version_cmp: cty::c_int, ) -> u32 { let text = unwrap!(unsafe { from_c_array(vendor_str, vendor_str_len as usize) }); @@ -58,6 +59,7 @@ extern "C" fn screen_install_confirm( fingerprint_str, should_keep_seed, is_newvendor, + is_newinstall, version_cmp, ) } diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 14d0c897d3..5f849615a0 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -233,6 +233,7 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { fingerprint: &str, should_keep_seed: bool, is_newvendor: bool, + is_newinstall: bool, version_cmp: i32, ) -> u32 { let mut version_str: BootloaderString = String::new(); @@ -241,7 +242,9 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { unwrap!(version_str.push_str("\nby ")); unwrap!(version_str.push_str(vendor)); - let title_str = if is_newvendor { + let title_str = if is_newinstall { + "INSTALL FIRMWARE" + } else if is_newvendor { "CHANGE FW\nVENDOR" } else if version_cmp > 0 { "UPDATE FIRMWARE" diff --git a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs b/core/embed/rust/src/ui/model_tr/bootloader/mod.rs index fc5fa225fa..57e6bb96f8 100644 --- a/core/embed/rust/src/ui/model_tr/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tr/bootloader/mod.rs @@ -209,6 +209,7 @@ impl UIFeaturesBootloader for ModelTRFeatures { fingerprint: &str, should_keep_seed: bool, is_newvendor: bool, + is_newinstall: bool, version_cmp: i32, ) -> u32 { let mut version_str: BootloaderString = String::new(); @@ -217,7 +218,9 @@ impl UIFeaturesBootloader for ModelTRFeatures { unwrap!(version_str.push_str("\nby ")); unwrap!(version_str.push_str(vendor)); - let title_str = if is_newvendor { + let title_str = if is_newinstall { + "INSTALL FIRMWARE" + } else if is_newvendor { "CHANGE FW VENDOR" } else if version_cmp > 0 { "UPDATE FIRMWARE" diff --git a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs index 35a7d499dc..484fd5a7c0 100644 --- a/core/embed/rust/src/ui/model_tt/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_tt/bootloader/mod.rs @@ -224,6 +224,7 @@ impl UIFeaturesBootloader for ModelTTFeatures { fingerprint: &str, should_keep_seed: bool, is_newvendor: bool, + is_newinstall: bool, version_cmp: i32, ) -> u32 { let mut version_str: BootloaderString = String::new(); @@ -232,7 +233,9 @@ impl UIFeaturesBootloader for ModelTTFeatures { unwrap!(version_str.push_str("\nby ")); unwrap!(version_str.push_str(vendor)); - let title_str = if is_newvendor { + let title_str = if is_newinstall { + "INSTALL FIRMWARE" + } else if is_newvendor { "CHANGE FW\nVENDOR" } else if version_cmp > 0 { "UPDATE FIRMWARE" diff --git a/core/embed/rust/src/ui/ui_features.rs b/core/embed/rust/src/ui/ui_features.rs index 41e507ff54..a7f6c68f1c 100644 --- a/core/embed/rust/src/ui/ui_features.rs +++ b/core/embed/rust/src/ui/ui_features.rs @@ -51,6 +51,7 @@ pub trait UIFeaturesBootloader { fingerprint: &str, should_keep_seed: bool, is_newvendor: bool, + is_newinstall: bool, version_cmp: i32, ) -> u32; From ee6410acddcee6ac3f3bd2148943db36837877a1 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 29 Aug 2024 13:23:26 +0200 Subject: [PATCH 579/626] fix(core/bootloader): fix repeated firmware upload [no changelog] --- core/embed/bootloader/messages.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/embed/bootloader/messages.c b/core/embed/bootloader/messages.c index 58fdce13b5..7cee213aba 100644 --- a/core/embed/bootloader/messages.c +++ b/core/embed/bootloader/messages.c @@ -577,10 +577,11 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, memcpy(&hdr, received_hdr, sizeof(hdr)); size_t headers_end = IMAGE_HEADER_SIZE + vhdr.hdrlen; - headers_offset = IMAGE_CODE_ALIGN(IMAGE_HEADER_SIZE + vhdr.hdrlen); + size_t tmp_headers_offset = + IMAGE_CODE_ALIGN(IMAGE_HEADER_SIZE + vhdr.hdrlen); // check padding between headers and the code - for (size_t i = headers_end; i < headers_offset; i++) { + for (size_t i = headers_end; i < tmp_headers_offset; i++) { if (CHUNK_BUFFER_PTR[i] != 0) { MSG_SEND_INIT(Failure); MSG_SEND_ASSIGN_VALUE(code, FailureType_Failure_ProcessError); @@ -705,6 +706,7 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, NULL); } + headers_offset = IMAGE_CODE_ALIGN(IMAGE_HEADER_SIZE + vhdr.hdrlen); read_offset = IMAGE_INIT_CHUNK_SIZE; // request the rest of the first chunk From 491647085f12173409b2ea117a36e22296a17c4f Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 29 Aug 2024 13:40:21 +0200 Subject: [PATCH 580/626] fix(core/bootloader): fix vendor image with new rendering [no changelog] --- core/embed/bootloader/bootui.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/core/embed/bootloader/bootui.c b/core/embed/bootloader/bootui.c index 4c9a32ebf5..ab18a52f01 100644 --- a/core/embed/bootloader/bootui.c +++ b/core/embed/bootloader/bootui.c @@ -60,6 +60,8 @@ #define BOOT_WAIT_Y_TOP (DISPLAY_RESY - BOOT_WAIT_HEIGHT) #endif +#define TOIF_LENGTH(ptr) ((*(uint32_t *)((ptr) + 8)) + 12) + // common shared functions static void format_ver(const char *format, uint32_t version, char *buffer, @@ -99,8 +101,8 @@ static void ui_screen_boot_old(const vendor_header *const vhdr, int image_top = show_string ? 30 : (DISPLAY_RESY - 120) / 2; // check whether vendor image is 120x120 if (memcmp(vimg, "TOIF\x78\x00\x78\x00", 8) == 0) { - uint32_t datalen = *(uint32_t *)(vimg + 8); - display_image((DISPLAY_RESX - 120) / 2, image_top, vimg, datalen + 12); + uint32_t datalen = TOIF_LENGTH(vimg); + display_image((DISPLAY_RESX - 120) / 2, image_top, vimg, datalen); } if (show_string) { @@ -115,8 +117,8 @@ static void ui_screen_boot_old(const vendor_header *const vhdr, #else // check whether vendor image is 24x24 if (memcmp(vimg, "TOIG\x18\x00\x18\x00", 8) == 0) { - uint32_t datalen = *(uint32_t *)(vimg + 8); - display_icon((DISPLAY_RESX - 22) / 2, 0, vimg, datalen + 12, COLOR_BL_BG, + uint32_t datalen = TOIF_LENGTH(vimg); + display_icon((DISPLAY_RESX - 22) / 2, 0, vimg, datalen, COLOR_BL_BG, boot_background); } @@ -207,7 +209,7 @@ void ui_screen_boot(const vendor_header *const vhdr, const char *vendor_str = show_string ? vhdr->vstr : NULL; const size_t vendor_str_len = show_string ? vhdr->vstr_len : 0; bool red_screen = ((vhdr->vtrust & VTRUST_NO_RED) == 0); - uint32_t vimg_len = *(uint32_t *)(vhdr->vimg + 8); + uint32_t vimg_len = TOIF_LENGTH(vhdr->vimg); screen_boot(red_screen, vendor_str, vendor_str_len, hdr->version, vhdr->vimg, vimg_len, wait); From 1f20b2984fe62727e1056e78cc2b266957b7c1d3 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 10:15:13 +0200 Subject: [PATCH 581/626] feat(common/cointool): use support.json as a source of the list of supported models --- common/tools/coin_info.py | 35 ++++++-------------------- common/tools/cointool.py | 1 + common/tools/support.py | 52 ++++++++++++++++++--------------------- 3 files changed, 33 insertions(+), 55 deletions(-) diff --git a/common/tools/coin_info.py b/common/tools/coin_info.py index 128a1bacbf..58b3dcc812 100755 --- a/common/tools/coin_info.py +++ b/common/tools/coin_info.py @@ -26,32 +26,13 @@ DEFS_DIR = ROOT / "defs" -class SupportItemBool(TypedDict): - supported: dict[str, bool] - unsupported: dict[str, bool] - - class SupportItemVersion(TypedDict): supported: dict[str, str] unsupported: dict[str, str] -class SupportData(TypedDict): - connect: SupportItemBool - suite: SupportItemBool - t1b1: SupportItemVersion - t2t1: SupportItemVersion - t2b1: SupportItemVersion - - -class SupportInfoItem(TypedDict): - connect: bool - suite: bool - t1b1: Literal[False] | str - t2t1: Literal[False] | str - t2b1: Literal[False] | str - - +SupportData = Dict[str, SupportItemVersion] +SupportInfoItem = Dict[str, Literal[False] | str] SupportInfo = Dict[str, SupportInfoItem] @@ -449,8 +430,6 @@ def _load_fido_apps() -> FidoApps: # ====== support info ====== RELEASES_URL = "https://data.trezor.io/firmware/{}/releases.json" -MISSING_SUPPORT_MEANS_NO = ("connect", "suite") -VERSIONED_SUPPORT_INFO = ("T1B1", "T2T1", "T2B1", "T3T1", "T3B1") def get_support_data() -> SupportData: @@ -458,14 +437,18 @@ def get_support_data() -> SupportData: return load_json("support.json") +def get_models() -> list[str]: + """Get all models from `support.json`.""" + return list(get_support_data().keys()) + + def latest_releases() -> dict[str, Any]: """Get latest released firmware versions for all models""" if not requests: raise RuntimeError("requests library is required for getting release info") latest: dict[str, Any] = {} - for model in VERSIONED_SUPPORT_INFO: - # TODO: support new UPPERCASE model names in RELEASES_URL + for model in get_models(): url_model = model.lower() # need to be e.g. t1b1 for now releases = requests.get(RELEASES_URL.format(url_model)).json() latest[model] = max(tuple(r["version"]) for r in releases) @@ -492,8 +475,6 @@ def support_info_single(support_data: SupportData, coin: Coin) -> SupportInfoIte support_value: Any = False elif key in values["supported"]: support_value = values["supported"][key] - elif device in MISSING_SUPPORT_MEANS_NO: - support_value = False else: support_value = None support_info_item[device] = support_value diff --git a/common/tools/cointool.py b/common/tools/cointool.py index 9e0eb90269..9dc99f32dd 100755 --- a/common/tools/cointool.py +++ b/common/tools/cointool.py @@ -160,6 +160,7 @@ def render_file( ROOT=ROOT, **coins, **MAKO_FILTERS, + ALL_MODELS=coin_info.get_models(), ) dst.write_text(str(result)) src_stat = src.stat() diff --git a/common/tools/support.py b/common/tools/support.py index 01605f0c48..33628b8eae 100755 --- a/common/tools/support.py +++ b/common/tools/support.py @@ -11,6 +11,7 @@ import coin_info SUPPORT_INFO = coin_info.get_support_data() +MODELS = coin_info.get_models() VERSION_RE = re.compile(r"\d+.\d+.\d+") @@ -64,7 +65,7 @@ def set_unsupported(device, key, value): def print_support(coin): - def support_value(where, key, missing_means_no=False): + def support_value(where, key): if "supported" in where and key in where["supported"]: val = where["supported"][key] if val is True: @@ -76,8 +77,6 @@ def support_value(where, key, missing_means_no=False): elif "unsupported" in where and key in where["unsupported"]: val = where["unsupported"][key] return f"NO (reason: {val})" - elif missing_means_no: - return "NO" else: return "support info missing" @@ -86,8 +85,7 @@ def support_value(where, key, missing_means_no=False): if coin.get("duplicate"): print(" * DUPLICATE SYMBOL") for dev, where in SUPPORT_INFO.items(): - missing_means_no = dev in coin_info.MISSING_SUPPORT_MEANS_NO - print(" *", dev, ":", support_value(where, key, missing_means_no)) + print(" *", dev, ":", support_value(where, key)) # ====== validation functions ====== # @@ -111,12 +109,7 @@ def _check_value_version_soon(value): else: for key, value in supported.items(): try: - if device in coin_info.VERSIONED_SUPPORT_INFO: - _check_value_version_soon(value) - else: - if value is not True: - raise ValueError(f"only allowed is True, but found {value}") - + _check_value_version_soon(value) if key in unsupported: raise ValueError(f"{key} is both supported and unsupported") @@ -135,7 +128,7 @@ def _check_value_version_soon(value): def find_unsupported_coins(coins_dict): result = {} - for device in coin_info.VERSIONED_SUPPORT_INFO: + for device in MODELS: supported, unsupported = support_dicts(device) support_set = set(supported.keys()) support_set.update(unsupported.keys()) @@ -253,10 +246,8 @@ def release( key: val for key, val in (release.split("=") for release in releases) } for key in user_releases_dict: - if key not in coin_info.VERSIONED_SUPPORT_INFO: - raise click.ClickException( - f"Unknown device: {key} - allowed are: {coin_info.VERSIONED_SUPPORT_INFO}" - ) + if key not in MODELS: + raise click.ClickException(f"Unknown device: {key} - allowed are: {MODELS}") def bump_version(version_tuple: tuple[int]) -> str: version_list = list(version_tuple) @@ -267,7 +258,7 @@ def bump_version(version_tuple: tuple[int]) -> str: # Take version either from user or guess it from latest releases info device_release_version: dict[str, str] = {} - for device in coin_info.VERSIONED_SUPPORT_INFO: + for device in MODELS: if device in user_releases_dict: device_release_version[device] = user_releases_dict[device] else: @@ -355,15 +346,18 @@ def set_support_value(key, entries, reason): """Set a support info variable. Examples: - support.py set coin:BTC T1B1=1.10.5 T2T1=2.4.7 suite=yes connect=no - support.py set coin:LTC T1B1=yes connect= + support.py set coin:BTC T1B1=1.10.5 T2T1=2.4.7 T2B1=no - Setting a variable to "yes", "true" or "1" sets support to true. - Setting a variable to "no", "false" or "0" sets support to false. - (or null, in case of T1B1/T2T1) - Setting variable to empty ("T1B1=") will set to null, or clear the entry. Setting a variable to a particular version string (e.g., "2.4.7") will set that - particular version. + particular version as the earliest supported. + + Setting a variable to "yes", "true" or "1" sets support to the upcoming release, + as fetched via `coin_info.latest_releases()`. + + Setting a variable to "no", "false" or "0" sets support to false. You will need to + provide a reason for unsupporting, either via the `-r` option, or interactively. + + Setting variable to empty ("T1B1=") will set to null, or clear the entry. """ defs, _ = coin_info.coin_info_with_duplicates() coins = defs.as_dict() @@ -372,6 +366,11 @@ def set_support_value(key, entries, reason): click.echo("Use 'support.py show' to search for the right one.") sys.exit(1) + latest_releases = coin_info.latest_releases() + next_releases = { + k: (maj, min, pat + 1) for k, (maj, min, pat) in latest_releases.items() + } + for entry in entries: try: device, value = entry.split("=", maxsplit=1) @@ -383,11 +382,8 @@ def set_support_value(key, entries, reason): raise click.ClickException(f"unknown device: {device}") if value in ("yes", "true", "1"): - set_supported(device, key, True) + set_supported(device, key, next_releases[device]) elif value in ("no", "false", "0"): - if device in coin_info.MISSING_SUPPORT_MEANS_NO: - click.echo(f"Setting explicitly unsupported for {device}.") - click.echo(f"Perhaps you meant removing support, i.e., '{device}=' ?") if not reason: reason = click.prompt(f"Enter reason for not supporting on {device}:") set_unsupported(device, key, reason) From f240a2d8fb7a693cb3226c946c2f979aa4416bda Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 10:16:41 +0200 Subject: [PATCH 582/626] docs(common): update info about support.json --- common/defs/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/defs/README.md b/common/defs/README.md index 8790f2c702..a57de51193 100644 --- a/common/defs/README.md +++ b/common/defs/README.md @@ -80,10 +80,10 @@ added to the dataset. # Support Information -We keep track of support status of each built-in coin over our devices. That is -`T1B1` for Trezor One, `T2T1` for Trezor T, `T2B1` for Trezor Safe 3, `T3T1` for Trezor Safe 5, `connect` for [Connect](https://github.com/trezor/connect) -and `suite` for [Trezor Suite](https://suite.trezor.io/). In further description, the word "device" -applies to Connect and Suite as well. +We keep track of support status of each built-in coin over our devices. That is `T1B1` +for Trezor One, `T2T1` for Trezor T, `T2B1` and `T3B1` for Trezor Safe 3 (both models +should have identical entries, except for minimum versions which are higher on `T3B1`), +`T3T1` for Trezor Safe 5. This information is stored in [`support.json`](support.json). External contributors should not touch this file unless asked to. From bcd837ae263f0ddfffad6c42e6f224996a00ed44 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 10:25:56 +0200 Subject: [PATCH 583/626] chore(core): generate coininfo for T3B1 this also includes T1B1 in the generated python files, but we don't care because T1B1 will never be included in a built firmware --- core/src/apps/common/coininfo.py | 2909 ++++++++++++++++++++++- core/src/apps/common/coininfo.py.mako | 6 +- core/src/apps/ethereum/networks.py | 78 +- core/src/apps/ethereum/networks.py.mako | 2 +- core/src/apps/ethereum/tokens.py | 300 ++- core/src/apps/ethereum/tokens.py.mako | 2 +- 6 files changed, 3271 insertions(+), 26 deletions(-) diff --git a/core/src/apps/common/coininfo.py b/core/src/apps/common/coininfo.py index 0809349ad1..5b92ca6635 100644 --- a/core/src/apps/common/coininfo.py +++ b/core/src/apps/common/coininfo.py @@ -94,7 +94,7 @@ def __eq__(self, other: Any) -> bool: # fmt: off def by_name(name: str) -> CoinInfo: - if utils.INTERNAL_MODEL == "T2B1": + if utils.INTERNAL_MODEL == "T1B1": if name == "Bitcoin": return CoinInfo( name, # coin_name @@ -299,6 +299,64 @@ def by_name(name: str) -> CoinInfo: False, # overwintered None, # confidential_assets ) + if name == "Bgold": + return CoinInfo( + name, # coin_name + "BTG", # coin_shortcut + 8, # decimals + 38, # address_type + 23, # address_type_p2sh + 380000000, # maxfee_kb + "Bitcoin Gold Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "btg", # bech32_prefix + None, # cashaddr_prefix + 156, # slip44 + True, # segwit + False, # taproot + 79, # fork_id + True, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bgold Testnet": + return CoinInfo( + name, # coin_name + "TBTG", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 500000, # maxfee_kb + "Bitcoin Gold Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tbtg", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + 79, # fork_id + True, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) if name == "Bprivate": return CoinInfo( name, # coin_name @@ -415,6 +473,151 @@ def by_name(name: str) -> CoinInfo: False, # overwintered None, # confidential_assets ) + if name == "Dash": + return CoinInfo( + name, # coin_name + "DASH", # coin_shortcut + 8, # decimals + 76, # address_type + 16, # address_type_p2sh + 45000000, # maxfee_kb + "DarkCoin Signed Message:\n", # signed_message_header + 0x02fe52cc, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 5, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Dash Testnet": + return CoinInfo( + name, # coin_name + "tDASH", # coin_shortcut + 8, # decimals + 140, # address_type + 19, # address_type_p2sh + 100000, # maxfee_kb + "DarkCoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Decred": + return CoinInfo( + name, # coin_name + "DCR", # coin_shortcut + 8, # decimals + 1855, # address_type + 1818, # address_type_p2sh + 220000000, # maxfee_kb + "Decred Signed Message:\n", # signed_message_header + 0x02fda926, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 42, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + True, # decred + False, # negative_fee + 'secp256k1-decred', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Decred Testnet": + return CoinInfo( + name, # coin_name + "TDCR", # coin_shortcut + 8, # decimals + 3873, # address_type + 3836, # address_type_p2sh + 10000000, # maxfee_kb + "Decred Signed Message:\n", # signed_message_header + 0x043587d1, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + True, # decred + False, # negative_fee + 'secp256k1-decred', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "DigiByte": + return CoinInfo( + name, # coin_name + "DGB", # coin_shortcut + 8, # decimals + 30, # address_type + 63, # address_type_p2sh + 130000000000, # maxfee_kb + "DigiByte Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "dgb", # bech32_prefix + None, # cashaddr_prefix + 20, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) if name == "Dogecoin": return CoinInfo( name, # coin_name @@ -821,6 +1024,35 @@ def by_name(name: str) -> CoinInfo: False, # overwintered None, # confidential_assets ) + if name == "Namecoin": + return CoinInfo( + name, # coin_name + "NMC", # coin_shortcut + 8, # decimals + 52, # address_type + 5, # address_type_p2sh + 8700000000, # maxfee_kb + "Namecoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 7, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) if name == "Peercoin": return CoinInfo( name, # coin_name @@ -1256,23 +1488,23 @@ def by_name(name: str) -> CoinInfo: False, # overwintered None, # confidential_assets ) - if name == "Viacoin": + if name == "Vertcoin": return CoinInfo( name, # coin_name - "VIA", # coin_shortcut + "VTC", # coin_shortcut 8, # decimals 71, # address_type - 33, # address_type_p2sh - 14000000000, # maxfee_kb - "Viacoin Signed Message:\n", # signed_message_header + 5, # address_type_p2sh + 13000000000, # maxfee_kb + "Vertcoin Signed Message:\n", # signed_message_header 0x0488b21e, # xpub_magic 0x049d7cb2, # xpub_magic_segwit_p2sh 0x04b24746, # xpub_magic_segwit_native 0x0488b21e, # xpub_magic_multisig_segwit_p2sh 0x0488b21e, # xpub_magic_multisig_segwit_native - "via", # bech32_prefix + "vtc", # bech32_prefix None, # cashaddr_prefix - 14, # slip44 + 28, # slip44 True, # segwit False, # taproot None, # fork_id @@ -1285,16 +1517,45 @@ def by_name(name: str) -> CoinInfo: False, # overwintered None, # confidential_assets ) - if name == "ZCore": + if name == "Viacoin": return CoinInfo( name, # coin_name - "ZCR", # coin_shortcut + "VIA", # coin_shortcut 8, # decimals - 142, # address_type - 145, # address_type_p2sh - 170000000000, # maxfee_kb - "DarkNet Signed Message:\n", # signed_message_header - 0x04b24746, # xpub_magic + 71, # address_type + 33, # address_type_p2sh + 14000000000, # maxfee_kb + "Viacoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "via", # bech32_prefix + None, # cashaddr_prefix + 14, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "ZCore": + return CoinInfo( + name, # coin_name + "ZCR", # coin_shortcut + 8, # decimals + 142, # address_type + 145, # address_type_p2sh + 170000000000, # maxfee_kb + "DarkNet Signed Message:\n", # signed_message_header + 0x04b24746, # xpub_magic None, # xpub_magic_segwit_p2sh None, # xpub_magic_segwit_native None, # xpub_magic_multisig_segwit_p2sh @@ -1402,7 +1663,7 @@ def by_name(name: str) -> CoinInfo: None, # confidential_assets ) raise ValueError # Unknown coin name - if utils.INTERNAL_MODEL == "T3T1": + if utils.INTERNAL_MODEL == "T2B1": if name == "Bitcoin": return CoinInfo( name, # coin_name @@ -4279,4 +4540,2620 @@ def by_name(name: str) -> CoinInfo: None, # confidential_assets ) raise ValueError # Unknown coin name + if utils.INTERNAL_MODEL == "T3B1": + if name == "Bitcoin": + return CoinInfo( + name, # coin_name + "BTC", # coin_shortcut + 8, # decimals + 0, # address_type + 5, # address_type_p2sh + 2000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0295b43f, # xpub_magic_multisig_segwit_p2sh + 0x02aa7ed3, # xpub_magic_multisig_segwit_native + "bc", # bech32_prefix + None, # cashaddr_prefix + 0, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Regtest": + return CoinInfo( + name, # coin_name + "REGTEST", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x024289ef, # xpub_magic_multisig_segwit_p2sh + 0x02575483, # xpub_magic_multisig_segwit_native + "bcrt", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Testnet": + return CoinInfo( + name, # coin_name + "TEST", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x024289ef, # xpub_magic_multisig_segwit_p2sh + 0x02575483, # xpub_magic_multisig_segwit_native + "tb", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if not utils.BITCOIN_ONLY: + if name == "Actinium": + return CoinInfo( + name, # coin_name + "ACM", # coin_shortcut + 8, # decimals + 53, # address_type + 55, # address_type_p2sh + 320000000000, # maxfee_kb + "Actinium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "acm", # bech32_prefix + None, # cashaddr_prefix + 228, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Axe": + return CoinInfo( + name, # coin_name + "AXE", # coin_shortcut + 8, # decimals + 55, # address_type + 16, # address_type_p2sh + 21000000000, # maxfee_kb + "DarkCoin Signed Message:\n", # signed_message_header + 0x02fe52cc, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 4242, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bcash": + return CoinInfo( + name, # coin_name + "BCH", # coin_shortcut + 8, # decimals + 0, # address_type + 5, # address_type_p2sh + 14000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + "bitcoincash", # cashaddr_prefix + 145, # slip44 + False, # segwit + False, # taproot + 0, # fork_id + True, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bcash Testnet": + return CoinInfo( + name, # coin_name + "TBCH", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + "bchtest", # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + 0, # fork_id + True, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bprivate": + return CoinInfo( + name, # coin_name + "BTCP", # coin_shortcut + 8, # decimals + 4901, # address_type + 5039, # address_type_p2sh + 32000000000, # maxfee_kb + "BitcoinPrivate Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 183, # slip44 + False, # segwit + False, # taproot + 42, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bitcore": + return CoinInfo( + name, # coin_name + "BTX", # coin_shortcut + 8, # decimals + 3, # address_type + 125, # address_type_p2sh + 14000000000, # maxfee_kb + "BitCore Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "btx", # bech32_prefix + None, # cashaddr_prefix + 160, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "CPUchain": + return CoinInfo( + name, # coin_name + "CPU", # coin_shortcut + 8, # decimals + 28, # address_type + 30, # address_type_p2sh + 8700000000000, # maxfee_kb + "CPUchain Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "cpu", # bech32_prefix + None, # cashaddr_prefix + 363, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Crown": + return CoinInfo( + name, # coin_name + "CRW", # coin_shortcut + 8, # decimals + 95495, # address_type + 95473, # address_type_p2sh + 52000000000, # maxfee_kb + "Crown Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 72, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Dogecoin": + return CoinInfo( + name, # coin_name + "DOGE", # coin_shortcut + 8, # decimals + 30, # address_type + 22, # address_type_p2sh + 1200000000000, # maxfee_kb + "Dogecoin Signed Message:\n", # signed_message_header + 0x02facafd, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 3, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Elements": + return CoinInfo( + name, # coin_name + "ELEMENTS", # coin_shortcut + 8, # decimals + 235, # address_type + 75, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "ert", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + {'address_prefix': 4, 'blech32_prefix': 'el'}, # confidential_assets + ) + if name == "Feathercoin": + return CoinInfo( + name, # coin_name + "FTC", # coin_shortcut + 8, # decimals + 14, # address_type + 5, # address_type_p2sh + 390000000000, # maxfee_kb + "Feathercoin Signed Message:\n", # signed_message_header + 0x0488bc26, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488bc26, # xpub_magic_multisig_segwit_p2sh + 0x0488bc26, # xpub_magic_multisig_segwit_native + "fc", # bech32_prefix + None, # cashaddr_prefix + 8, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Firo": + return CoinInfo( + name, # coin_name + "FIRO", # coin_shortcut + 8, # decimals + 82, # address_type + 7, # address_type_p2sh + 640000000, # maxfee_kb + "Zcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 136, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Firo Testnet": + return CoinInfo( + name, # coin_name + "tFIRO", # coin_shortcut + 8, # decimals + 65, # address_type + 178, # address_type_p2sh + 1000000, # maxfee_kb + "Zcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Florincoin": + return CoinInfo( + name, # coin_name + "FLO", # coin_shortcut + 8, # decimals + 35, # address_type + 94, # address_type_p2sh + 78000000000, # maxfee_kb + "Florincoin Signed Message:\n", # signed_message_header + 0x00174921, # xpub_magic + 0x01b26ef6, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x00174921, # xpub_magic_multisig_segwit_p2sh + 0x00174921, # xpub_magic_multisig_segwit_native + "flo", # bech32_prefix + None, # cashaddr_prefix + 216, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Fujicoin": + return CoinInfo( + name, # coin_name + "FJC", # coin_shortcut + 8, # decimals + 36, # address_type + 16, # address_type_p2sh + 35000000000000, # maxfee_kb + "FujiCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0295b43f, # xpub_magic_multisig_segwit_p2sh + 0x02aa7ed3, # xpub_magic_multisig_segwit_native + "fc", # bech32_prefix + None, # cashaddr_prefix + 75, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Groestlcoin": + return CoinInfo( + name, # coin_name + "GRS", # coin_shortcut + 8, # decimals + 36, # address_type + 5, # address_type_p2sh + 16000000000, # maxfee_kb + "GroestlCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "grs", # bech32_prefix + None, # cashaddr_prefix + 17, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-groestl', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Groestlcoin Testnet": + return CoinInfo( + name, # coin_name + "tGRS", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 100000, # maxfee_kb + "GroestlCoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tgrs", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-groestl', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Komodo": + return CoinInfo( + name, # coin_name + "KMD", # coin_shortcut + 8, # decimals + 60, # address_type + 85, # address_type_p2sh + 4800000000, # maxfee_kb + "Komodo Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 141, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + True, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Koto": + return CoinInfo( + name, # coin_name + "KOTO", # coin_shortcut + 8, # decimals + 6198, # address_type + 6203, # address_type_p2sh + 1000000, # maxfee_kb + "Koto Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 510, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Litecoin": + return CoinInfo( + name, # coin_name + "LTC", # coin_shortcut + 8, # decimals + 48, # address_type + 50, # address_type_p2sh + 67000000, # maxfee_kb + "Litecoin Signed Message:\n", # signed_message_header + 0x019da462, # xpub_magic + 0x01b26ef6, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x019da462, # xpub_magic_multisig_segwit_p2sh + 0x019da462, # xpub_magic_multisig_segwit_native + "ltc", # bech32_prefix + None, # cashaddr_prefix + 2, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Litecoin Testnet": + return CoinInfo( + name, # coin_name + "tLTC", # coin_shortcut + 8, # decimals + 111, # address_type + 58, # address_type_p2sh + 40000000, # maxfee_kb + "Litecoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tltc", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Monacoin": + return CoinInfo( + name, # coin_name + "MONA", # coin_shortcut + 8, # decimals + 50, # address_type + 55, # address_type_p2sh + 2100000000, # maxfee_kb + "Monacoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "mona", # bech32_prefix + None, # cashaddr_prefix + 22, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Peercoin": + return CoinInfo( + name, # coin_name + "PPC", # coin_shortcut + 6, # decimals + 55, # address_type + 117, # address_type_p2sh + 13000000000, # maxfee_kb + "Peercoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "pc", # bech32_prefix + None, # cashaddr_prefix + 6, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Peercoin Testnet": + return CoinInfo( + name, # coin_name + "tPPC", # coin_shortcut + 6, # decimals + 111, # address_type + 196, # address_type_p2sh + 2000000, # maxfee_kb + "Peercoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tpc", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Primecoin": + return CoinInfo( + name, # coin_name + "XPM", # coin_shortcut + 8, # decimals + 23, # address_type + 83, # address_type_p2sh + 89000000000, # maxfee_kb + "Primecoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 24, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Qtum": + return CoinInfo( + name, # coin_name + "QTUM", # coin_shortcut + 8, # decimals + 58, # address_type + 50, # address_type_p2sh + 1000000000, # maxfee_kb + "Qtum Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "qc", # bech32_prefix + None, # cashaddr_prefix + 2301, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Qtum Testnet": + return CoinInfo( + name, # coin_name + "tQTUM", # coin_shortcut + 8, # decimals + 120, # address_type + 110, # address_type_p2sh + 40000000, # maxfee_kb + "Qtum Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tq", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ravencoin": + return CoinInfo( + name, # coin_name + "RVN", # coin_shortcut + 8, # decimals + 60, # address_type + 122, # address_type_p2sh + 170000000000, # maxfee_kb + "Raven Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 175, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ravencoin Testnet": + return CoinInfo( + name, # coin_name + "tRVN", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 170000000000, # maxfee_kb + "Raven Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ritocoin": + return CoinInfo( + name, # coin_name + "RITO", # coin_shortcut + 8, # decimals + 25, # address_type + 105, # address_type_p2sh + 39000000000000, # maxfee_kb + "Rito Signed Message:\n", # signed_message_header + 0x0534e7ca, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 19169, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "SmartCash": + return CoinInfo( + name, # coin_name + "SMART", # coin_shortcut + 8, # decimals + 63, # address_type + 18, # address_type_p2sh + 780000000000, # maxfee_kb + "SmartCash Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 224, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-smart', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "SmartCash Testnet": + return CoinInfo( + name, # coin_name + "tSMART", # coin_shortcut + 8, # decimals + 65, # address_type + 21, # address_type_p2sh + 1000000, # maxfee_kb + "SmartCash Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-smart', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Stakenet": + return CoinInfo( + name, # coin_name + "XSN", # coin_shortcut + 8, # decimals + 76, # address_type + 16, # address_type_p2sh + 11000000000, # maxfee_kb + "DarkCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "xc", # bech32_prefix + None, # cashaddr_prefix + 199, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Syscoin": + return CoinInfo( + name, # coin_name + "SYS", # coin_shortcut + 8, # decimals + 63, # address_type + 5, # address_type_p2sh + 42000000000, # maxfee_kb + "Syscoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "sys", # bech32_prefix + None, # cashaddr_prefix + 57, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Unobtanium": + return CoinInfo( + name, # coin_name + "UNO", # coin_shortcut + 8, # decimals + 130, # address_type + 30, # address_type_p2sh + 53000000, # maxfee_kb + "Unobtanium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 92, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "VIPSTARCOIN": + return CoinInfo( + name, # coin_name + "VIPS", # coin_shortcut + 8, # decimals + 70, # address_type + 50, # address_type_p2sh + 140000000000000, # maxfee_kb + "VIPSTARCOIN Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "vips", # bech32_prefix + None, # cashaddr_prefix + 1919, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Verge": + return CoinInfo( + name, # coin_name + "XVG", # coin_shortcut + 6, # decimals + 30, # address_type + 33, # address_type_p2sh + 550000000000, # maxfee_kb + "Name: Dogecoin Dark\n", # signed_message_header + 0x022d2533, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 77, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Viacoin": + return CoinInfo( + name, # coin_name + "VIA", # coin_shortcut + 8, # decimals + 71, # address_type + 33, # address_type_p2sh + 14000000000, # maxfee_kb + "Viacoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "via", # bech32_prefix + None, # cashaddr_prefix + 14, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "ZCore": + return CoinInfo( + name, # coin_name + "ZCR", # coin_shortcut + 8, # decimals + 142, # address_type + 145, # address_type_p2sh + 170000000000, # maxfee_kb + "DarkNet Signed Message:\n", # signed_message_header + 0x04b24746, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 428, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Zcash": + return CoinInfo( + name, # coin_name + "ZEC", # coin_shortcut + 8, # decimals + 7352, # address_type + 7357, # address_type_p2sh + 51000000, # maxfee_kb + "Zcash Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 133, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Zcash Testnet": + return CoinInfo( + name, # coin_name + "TAZ", # coin_shortcut + 8, # decimals + 7461, # address_type + 7354, # address_type_p2sh + 10000000, # maxfee_kb + "Zcash Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Brhodium": + return CoinInfo( + name, # coin_name + "XRC", # coin_shortcut + 8, # decimals + 61, # address_type + 123, # address_type_p2sh + 1000000000, # maxfee_kb + "BitCoin Rhodium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 10291, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + raise ValueError # Unknown coin name + if utils.INTERNAL_MODEL == "T3T1": + if name == "Bitcoin": + return CoinInfo( + name, # coin_name + "BTC", # coin_shortcut + 8, # decimals + 0, # address_type + 5, # address_type_p2sh + 2000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0295b43f, # xpub_magic_multisig_segwit_p2sh + 0x02aa7ed3, # xpub_magic_multisig_segwit_native + "bc", # bech32_prefix + None, # cashaddr_prefix + 0, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Regtest": + return CoinInfo( + name, # coin_name + "REGTEST", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x024289ef, # xpub_magic_multisig_segwit_p2sh + 0x02575483, # xpub_magic_multisig_segwit_native + "bcrt", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Testnet": + return CoinInfo( + name, # coin_name + "TEST", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x024289ef, # xpub_magic_multisig_segwit_p2sh + 0x02575483, # xpub_magic_multisig_segwit_native + "tb", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if not utils.BITCOIN_ONLY: + if name == "Actinium": + return CoinInfo( + name, # coin_name + "ACM", # coin_shortcut + 8, # decimals + 53, # address_type + 55, # address_type_p2sh + 320000000000, # maxfee_kb + "Actinium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "acm", # bech32_prefix + None, # cashaddr_prefix + 228, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Axe": + return CoinInfo( + name, # coin_name + "AXE", # coin_shortcut + 8, # decimals + 55, # address_type + 16, # address_type_p2sh + 21000000000, # maxfee_kb + "DarkCoin Signed Message:\n", # signed_message_header + 0x02fe52cc, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 4242, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bcash": + return CoinInfo( + name, # coin_name + "BCH", # coin_shortcut + 8, # decimals + 0, # address_type + 5, # address_type_p2sh + 14000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + "bitcoincash", # cashaddr_prefix + 145, # slip44 + False, # segwit + False, # taproot + 0, # fork_id + True, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bcash Testnet": + return CoinInfo( + name, # coin_name + "TBCH", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + "bchtest", # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + 0, # fork_id + True, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bprivate": + return CoinInfo( + name, # coin_name + "BTCP", # coin_shortcut + 8, # decimals + 4901, # address_type + 5039, # address_type_p2sh + 32000000000, # maxfee_kb + "BitcoinPrivate Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 183, # slip44 + False, # segwit + False, # taproot + 42, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Bitcore": + return CoinInfo( + name, # coin_name + "BTX", # coin_shortcut + 8, # decimals + 3, # address_type + 125, # address_type_p2sh + 14000000000, # maxfee_kb + "BitCore Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "btx", # bech32_prefix + None, # cashaddr_prefix + 160, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "CPUchain": + return CoinInfo( + name, # coin_name + "CPU", # coin_shortcut + 8, # decimals + 28, # address_type + 30, # address_type_p2sh + 8700000000000, # maxfee_kb + "CPUchain Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "cpu", # bech32_prefix + None, # cashaddr_prefix + 363, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Crown": + return CoinInfo( + name, # coin_name + "CRW", # coin_shortcut + 8, # decimals + 95495, # address_type + 95473, # address_type_p2sh + 52000000000, # maxfee_kb + "Crown Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 72, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Dogecoin": + return CoinInfo( + name, # coin_name + "DOGE", # coin_shortcut + 8, # decimals + 30, # address_type + 22, # address_type_p2sh + 1200000000000, # maxfee_kb + "Dogecoin Signed Message:\n", # signed_message_header + 0x02facafd, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 3, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Elements": + return CoinInfo( + name, # coin_name + "ELEMENTS", # coin_shortcut + 8, # decimals + 235, # address_type + 75, # address_type_p2sh + 10000000, # maxfee_kb + "Bitcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "ert", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + {'address_prefix': 4, 'blech32_prefix': 'el'}, # confidential_assets + ) + if name == "Feathercoin": + return CoinInfo( + name, # coin_name + "FTC", # coin_shortcut + 8, # decimals + 14, # address_type + 5, # address_type_p2sh + 390000000000, # maxfee_kb + "Feathercoin Signed Message:\n", # signed_message_header + 0x0488bc26, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488bc26, # xpub_magic_multisig_segwit_p2sh + 0x0488bc26, # xpub_magic_multisig_segwit_native + "fc", # bech32_prefix + None, # cashaddr_prefix + 8, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Firo": + return CoinInfo( + name, # coin_name + "FIRO", # coin_shortcut + 8, # decimals + 82, # address_type + 7, # address_type_p2sh + 640000000, # maxfee_kb + "Zcoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 136, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Firo Testnet": + return CoinInfo( + name, # coin_name + "tFIRO", # coin_shortcut + 8, # decimals + 65, # address_type + 178, # address_type_p2sh + 1000000, # maxfee_kb + "Zcoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Florincoin": + return CoinInfo( + name, # coin_name + "FLO", # coin_shortcut + 8, # decimals + 35, # address_type + 94, # address_type_p2sh + 78000000000, # maxfee_kb + "Florincoin Signed Message:\n", # signed_message_header + 0x00174921, # xpub_magic + 0x01b26ef6, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x00174921, # xpub_magic_multisig_segwit_p2sh + 0x00174921, # xpub_magic_multisig_segwit_native + "flo", # bech32_prefix + None, # cashaddr_prefix + 216, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Fujicoin": + return CoinInfo( + name, # coin_name + "FJC", # coin_shortcut + 8, # decimals + 36, # address_type + 16, # address_type_p2sh + 35000000000000, # maxfee_kb + "FujiCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0295b43f, # xpub_magic_multisig_segwit_p2sh + 0x02aa7ed3, # xpub_magic_multisig_segwit_native + "fc", # bech32_prefix + None, # cashaddr_prefix + 75, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Groestlcoin": + return CoinInfo( + name, # coin_name + "GRS", # coin_shortcut + 8, # decimals + 36, # address_type + 5, # address_type_p2sh + 16000000000, # maxfee_kb + "GroestlCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "grs", # bech32_prefix + None, # cashaddr_prefix + 17, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-groestl', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Groestlcoin Testnet": + return CoinInfo( + name, # coin_name + "tGRS", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 100000, # maxfee_kb + "GroestlCoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tgrs", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + True, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-groestl', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Komodo": + return CoinInfo( + name, # coin_name + "KMD", # coin_shortcut + 8, # decimals + 60, # address_type + 85, # address_type_p2sh + 4800000000, # maxfee_kb + "Komodo Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 141, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + True, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Koto": + return CoinInfo( + name, # coin_name + "KOTO", # coin_shortcut + 8, # decimals + 6198, # address_type + 6203, # address_type_p2sh + 1000000, # maxfee_kb + "Koto Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 510, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Litecoin": + return CoinInfo( + name, # coin_name + "LTC", # coin_shortcut + 8, # decimals + 48, # address_type + 50, # address_type_p2sh + 67000000, # maxfee_kb + "Litecoin Signed Message:\n", # signed_message_header + 0x019da462, # xpub_magic + 0x01b26ef6, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x019da462, # xpub_magic_multisig_segwit_p2sh + 0x019da462, # xpub_magic_multisig_segwit_native + "ltc", # bech32_prefix + None, # cashaddr_prefix + 2, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Litecoin Testnet": + return CoinInfo( + name, # coin_name + "tLTC", # coin_shortcut + 8, # decimals + 111, # address_type + 58, # address_type_p2sh + 40000000, # maxfee_kb + "Litecoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tltc", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Monacoin": + return CoinInfo( + name, # coin_name + "MONA", # coin_shortcut + 8, # decimals + 50, # address_type + 55, # address_type_p2sh + 2100000000, # maxfee_kb + "Monacoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "mona", # bech32_prefix + None, # cashaddr_prefix + 22, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Peercoin": + return CoinInfo( + name, # coin_name + "PPC", # coin_shortcut + 6, # decimals + 55, # address_type + 117, # address_type_p2sh + 13000000000, # maxfee_kb + "Peercoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "pc", # bech32_prefix + None, # cashaddr_prefix + 6, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Peercoin Testnet": + return CoinInfo( + name, # coin_name + "tPPC", # coin_shortcut + 6, # decimals + 111, # address_type + 196, # address_type_p2sh + 2000000, # maxfee_kb + "Peercoin Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tpc", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Primecoin": + return CoinInfo( + name, # coin_name + "XPM", # coin_shortcut + 8, # decimals + 23, # address_type + 83, # address_type_p2sh + 89000000000, # maxfee_kb + "Primecoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 24, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Qtum": + return CoinInfo( + name, # coin_name + "QTUM", # coin_shortcut + 8, # decimals + 58, # address_type + 50, # address_type_p2sh + 1000000000, # maxfee_kb + "Qtum Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "qc", # bech32_prefix + None, # cashaddr_prefix + 2301, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Qtum Testnet": + return CoinInfo( + name, # coin_name + "tQTUM", # coin_shortcut + 8, # decimals + 120, # address_type + 110, # address_type_p2sh + 40000000, # maxfee_kb + "Qtum Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + 0x044a5262, # xpub_magic_segwit_p2sh + 0x045f1cf6, # xpub_magic_segwit_native + 0x043587cf, # xpub_magic_multisig_segwit_p2sh + 0x043587cf, # xpub_magic_multisig_segwit_native + "tq", # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ravencoin": + return CoinInfo( + name, # coin_name + "RVN", # coin_shortcut + 8, # decimals + 60, # address_type + 122, # address_type_p2sh + 170000000000, # maxfee_kb + "Raven Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 175, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ravencoin Testnet": + return CoinInfo( + name, # coin_name + "tRVN", # coin_shortcut + 8, # decimals + 111, # address_type + 196, # address_type_p2sh + 170000000000, # maxfee_kb + "Raven Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Ritocoin": + return CoinInfo( + name, # coin_name + "RITO", # coin_shortcut + 8, # decimals + 25, # address_type + 105, # address_type_p2sh + 39000000000000, # maxfee_kb + "Rito Signed Message:\n", # signed_message_header + 0x0534e7ca, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 19169, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "SmartCash": + return CoinInfo( + name, # coin_name + "SMART", # coin_shortcut + 8, # decimals + 63, # address_type + 18, # address_type_p2sh + 780000000000, # maxfee_kb + "SmartCash Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 224, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-smart', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "SmartCash Testnet": + return CoinInfo( + name, # coin_name + "tSMART", # coin_shortcut + 8, # decimals + 65, # address_type + 21, # address_type_p2sh + 1000000, # maxfee_kb + "SmartCash Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1-smart', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Stakenet": + return CoinInfo( + name, # coin_name + "XSN", # coin_shortcut + 8, # decimals + 76, # address_type + 16, # address_type_p2sh + 11000000000, # maxfee_kb + "DarkCoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "xc", # bech32_prefix + None, # cashaddr_prefix + 199, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Syscoin": + return CoinInfo( + name, # coin_name + "SYS", # coin_shortcut + 8, # decimals + 63, # address_type + 5, # address_type_p2sh + 42000000000, # maxfee_kb + "Syscoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "sys", # bech32_prefix + None, # cashaddr_prefix + 57, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Unobtanium": + return CoinInfo( + name, # coin_name + "UNO", # coin_shortcut + 8, # decimals + 130, # address_type + 30, # address_type_p2sh + 53000000, # maxfee_kb + "Unobtanium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 92, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "VIPSTARCOIN": + return CoinInfo( + name, # coin_name + "VIPS", # coin_shortcut + 8, # decimals + 70, # address_type + 50, # address_type_p2sh + 140000000000000, # maxfee_kb + "VIPSTARCOIN Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "vips", # bech32_prefix + None, # cashaddr_prefix + 1919, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Verge": + return CoinInfo( + name, # coin_name + "XVG", # coin_shortcut + 6, # decimals + 30, # address_type + 33, # address_type_p2sh + 550000000000, # maxfee_kb + "Name: Dogecoin Dark\n", # signed_message_header + 0x022d2533, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 77, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + True, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Viacoin": + return CoinInfo( + name, # coin_name + "VIA", # coin_shortcut + 8, # decimals + 71, # address_type + 33, # address_type_p2sh + 14000000000, # maxfee_kb + "Viacoin Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + 0x049d7cb2, # xpub_magic_segwit_p2sh + 0x04b24746, # xpub_magic_segwit_native + 0x0488b21e, # xpub_magic_multisig_segwit_p2sh + 0x0488b21e, # xpub_magic_multisig_segwit_native + "via", # bech32_prefix + None, # cashaddr_prefix + 14, # slip44 + True, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "ZCore": + return CoinInfo( + name, # coin_name + "ZCR", # coin_shortcut + 8, # decimals + 142, # address_type + 145, # address_type_p2sh + 170000000000, # maxfee_kb + "DarkNet Signed Message:\n", # signed_message_header + 0x04b24746, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 428, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + if name == "Zcash": + return CoinInfo( + name, # coin_name + "ZEC", # coin_shortcut + 8, # decimals + 7352, # address_type + 7357, # address_type_p2sh + 51000000, # maxfee_kb + "Zcash Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 133, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Zcash Testnet": + return CoinInfo( + name, # coin_name + "TAZ", # coin_shortcut + 8, # decimals + 7461, # address_type + 7354, # address_type_p2sh + 10000000, # maxfee_kb + "Zcash Signed Message:\n", # signed_message_header + 0x043587cf, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 1, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + True, # extra_data + False, # timestamp + True, # overwintered + None, # confidential_assets + ) + if name == "Brhodium": + return CoinInfo( + name, # coin_name + "XRC", # coin_shortcut + 8, # decimals + 61, # address_type + 123, # address_type_p2sh + 1000000000, # maxfee_kb + "BitCoin Rhodium Signed Message:\n", # signed_message_header + 0x0488b21e, # xpub_magic + None, # xpub_magic_segwit_p2sh + None, # xpub_magic_segwit_native + None, # xpub_magic_multisig_segwit_p2sh + None, # xpub_magic_multisig_segwit_native + None, # bech32_prefix + None, # cashaddr_prefix + 10291, # slip44 + False, # segwit + False, # taproot + None, # fork_id + False, # force_bip143 + False, # decred + False, # negative_fee + 'secp256k1', # curve_name + False, # extra_data + False, # timestamp + False, # overwintered + None, # confidential_assets + ) + raise ValueError # Unknown coin name raise ValueError # Unknown model diff --git a/core/src/apps/common/coininfo.py.mako b/core/src/apps/common/coininfo.py.mako index 23dc0efd91..783e159289 100644 --- a/core/src/apps/common/coininfo.py.mako +++ b/core/src/apps/common/coininfo.py.mako @@ -134,17 +134,15 @@ ATTRIBUTES = ( ("confidential_assets", optional_dict), ) -models = ["T2B1", "T3T1", "T2T1"] - btc_names = ["Bitcoin", "Testnet", "Regtest"] coins = {} -for model in models: +for model in ALL_MODELS: coins.setdefault('btc', {})[model] = [c for c in supported_on(model, bitcoin) if c.name in btc_names] coins.setdefault('alt', {})[model] = [c for c in supported_on(model, bitcoin) if c.name not in btc_names] %>\ def by_name(name: str) -> CoinInfo: -% for model in models: +% for model in ALL_MODELS: if utils.INTERNAL_MODEL == "${model}": % for coin in coins['btc'][model]: if name == ${black_repr(coin["coin_name"])}: diff --git a/core/src/apps/ethereum/networks.py b/core/src/apps/ethereum/networks.py index 39f57e9a06..0b94bed5d1 100644 --- a/core/src/apps/ethereum/networks.py +++ b/core/src/apps/ethereum/networks.py @@ -59,7 +59,7 @@ def by_slip44(slip44: int) -> EthereumNetworkInfo: # fmt: off def _networks_iterator() -> Iterator[NetworkInfoTuple]: - if utils.INTERNAL_MODEL == "T2B1": + if utils.INTERNAL_MODEL == "T1B1": yield ( 1, # chain_id 60, # slip44 @@ -96,7 +96,7 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: "tSEP", # symbol "Sepolia", # name ) - if utils.INTERNAL_MODEL == "T3T1": + if utils.INTERNAL_MODEL == "T2B1": yield ( 1, # chain_id 60, # slip44 @@ -170,3 +170,77 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: "tSEP", # symbol "Sepolia", # name ) + if utils.INTERNAL_MODEL == "T3B1": + yield ( + 1, # chain_id + 60, # slip44 + "ETH", # symbol + "Ethereum", # name + ) + yield ( + 56, # chain_id + 714, # slip44 + "BNB", # symbol + "BNB Smart Chain", # name + ) + yield ( + 61, # chain_id + 61, # slip44 + "ETC", # symbol + "Ethereum Classic", # name + ) + yield ( + 137, # chain_id + 966, # slip44 + "MATIC", # symbol + "Polygon", # name + ) + yield ( + 17000, # chain_id + 1, # slip44 + "tHOL", # symbol + "Holesky", # name + ) + yield ( + 11155111, # chain_id + 1, # slip44 + "tSEP", # symbol + "Sepolia", # name + ) + if utils.INTERNAL_MODEL == "T3T1": + yield ( + 1, # chain_id + 60, # slip44 + "ETH", # symbol + "Ethereum", # name + ) + yield ( + 56, # chain_id + 714, # slip44 + "BNB", # symbol + "BNB Smart Chain", # name + ) + yield ( + 61, # chain_id + 61, # slip44 + "ETC", # symbol + "Ethereum Classic", # name + ) + yield ( + 137, # chain_id + 966, # slip44 + "MATIC", # symbol + "Polygon", # name + ) + yield ( + 17000, # chain_id + 1, # slip44 + "tHOL", # symbol + "Holesky", # name + ) + yield ( + 11155111, # chain_id + 1, # slip44 + "tSEP", # symbol + "Sepolia", # name + ) diff --git a/core/src/apps/ethereum/networks.py.mako b/core/src/apps/ethereum/networks.py.mako index 62dee5d61f..0ac8bfab9f 100644 --- a/core/src/apps/ethereum/networks.py.mako +++ b/core/src/apps/ethereum/networks.py.mako @@ -59,7 +59,7 @@ def by_slip44(slip44: int) -> EthereumNetworkInfo: # fmt: off def _networks_iterator() -> Iterator[NetworkInfoTuple]: -% for model in ["T2B1", "T3T1", "T2T1"]: +% for model in ALL_MODELS: if utils.INTERNAL_MODEL == "${model}": % for n in sorted(supported_on(model, eth), key=lambda network: (int(network.chain_id), network.name)): yield ( diff --git a/core/src/apps/ethereum/tokens.py b/core/src/apps/ethereum/tokens.py index 186eeb2a9c..2c63c21526 100644 --- a/core/src/apps/ethereum/tokens.py +++ b/core/src/apps/ethereum/tokens.py @@ -42,7 +42,7 @@ def token_by_chain_address(chain_id: int, address: bytes) -> EthereumTokenInfo | def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]: - if utils.INTERNAL_MODEL == "T2B1": + if utils.INTERNAL_MODEL == "T1B1": if chain_id == 1: # eth yield ( # address, symbol, decimals, name b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9", @@ -190,7 +190,7 @@ def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]: 18, "Wrapped AVAX", ) - if utils.INTERNAL_MODEL == "T3T1": + if utils.INTERNAL_MODEL == "T2B1": if chain_id == 1: # eth yield ( # address, symbol, decimals, name b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9", @@ -486,3 +486,299 @@ def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]: 18, "Wrapped AVAX", ) + if utils.INTERNAL_MODEL == "T3B1": + if chain_id == 1: # eth + yield ( # address, symbol, decimals, name + b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9", + "AAVE", + 18, + "Aave", + ) + yield ( # address, symbol, decimals, name + b"\x4d\x22\x44\x52\x80\x1a\xce\xd8\xb2\xf0\xae\xbe\x15\x53\x79\xbb\x5d\x59\x43\x81", + "APE", + 18, + "ApeCoin", + ) + yield ( # address, symbol, decimals, name + b"\xbb\x0e\x17\xef\x65\xf8\x2a\xb0\x18\xd8\xed\xd7\x76\xe8\xdd\x94\x03\x27\xb2\x8b", + "AXS", + 18, + "Axie Infinity", + ) + yield ( # address, symbol, decimals, name + b"\x4f\xab\xb1\x45\xd6\x46\x52\xa9\x48\xd7\x25\x33\x02\x3f\x6e\x7a\x62\x3c\x7c\x53", + "BUSD", + 18, + "Binance USD", + ) + yield ( # address, symbol, decimals, name + b"\x35\x06\x42\x4f\x91\xfd\x33\x08\x44\x66\xf4\x02\xd5\xd9\x7f\x05\xf8\xe3\xb4\xaf", + "CHZ", + 18, + "Chiliz", + ) + yield ( # address, symbol, decimals, name + b"\xa0\xb7\x3e\x1f\xf0\xb8\x09\x14\xab\x6f\xe0\x44\x4e\x65\x84\x8c\x4c\x34\x45\x0b", + "CRO", + 8, + "Cronos", + ) + yield ( # address, symbol, decimals, name + b"\x6b\x17\x54\x74\xe8\x90\x94\xc4\x4d\xa9\x8b\x95\x4e\xed\xea\xc4\x95\x27\x1d\x0f", + "DAI", + 18, + "Dai", + ) + yield ( # address, symbol, decimals, name + b"\x85\x3d\x95\x5a\xce\xf8\x22\xdb\x05\x8e\xb8\x50\x59\x11\xed\x77\xf1\x75\xb9\x9e", + "FRAX", + 18, + "Frax", + ) + yield ( # address, symbol, decimals, name + b"\x2a\xf5\xd2\xad\x76\x74\x11\x91\xd1\x5d\xfe\x7b\xf6\xac\x92\xd4\xbd\x91\x2c\xa3", + "LEO", + 18, + "LEO Token", + ) + yield ( # address, symbol, decimals, name + b"\x51\x49\x10\x77\x1a\xf9\xca\x65\x6a\xf8\x40\xdf\xf8\x3e\x82\x64\xec\xf9\x86\xca", + "LINK", + 18, + "Chainlink", + ) + yield ( # address, symbol, decimals, name + b"\x0f\x5d\x2f\xb2\x9f\xb7\xd3\xcf\xee\x44\x4a\x20\x02\x98\xf4\x68\x90\x8c\xc9\x42", + "MANA", + 18, + "Decentraland", + ) + yield ( # address, symbol, decimals, name + b"\x7d\x1a\xfa\x7b\x71\x8f\xb8\x93\xdb\x30\xa3\xab\xc0\xcf\xc6\x08\xaa\xcf\xeb\xb0", + "MATIC", + 18, + "Polygon", + ) + yield ( # address, symbol, decimals, name + b"\x75\x23\x1f\x58\xb4\x32\x40\xc9\x71\x8d\xd5\x8b\x49\x67\xc5\x11\x43\x42\xa8\x6c", + "OKB", + 18, + "OKB", + ) + yield ( # address, symbol, decimals, name + b"\x4a\x22\x0e\x60\x96\xb2\x5e\xad\xb8\x83\x58\xcb\x44\x06\x8a\x32\x48\x25\x46\x75", + "QNT", + 18, + "Quant", + ) + yield ( # address, symbol, decimals, name + b"\x38\x45\xba\xda\xde\x8e\x6d\xff\x04\x98\x20\x68\x0d\x1f\x14\xbd\x39\x03\xa5\xd0", + "SAND", + 18, + "The Sandbox", + ) + yield ( # address, symbol, decimals, name + b"\x95\xad\x61\xb0\xa1\x50\xd7\x92\x19\xdc\xf6\x4e\x1e\x6c\xc0\x1f\x0b\x64\xc4\xce", + "SHIB", + 18, + "Shiba Inu", + ) + yield ( # address, symbol, decimals, name + b"\xae\x7a\xb9\x65\x20\xde\x3a\x18\xe5\xe1\x11\xb5\xea\xab\x09\x53\x12\xd7\xfe\x84", + "STETH", + 18, + "Lido Staked Ether", + ) + yield ( # address, symbol, decimals, name + b"\x1f\x98\x40\xa8\x5d\x5a\xf5\xbf\x1d\x17\x62\xf9\x25\xbd\xad\xdc\x42\x01\xf9\x84", + "UNI", + 18, + "Uniswap", + ) + yield ( # address, symbol, decimals, name + b"\xa0\xb8\x69\x91\xc6\x21\x8b\x36\xc1\xd1\x9d\x4a\x2e\x9e\xb0\xce\x36\x06\xeb\x48", + "USDC", + 6, + "USD Coin", + ) + yield ( # address, symbol, decimals, name + b"\xda\xc1\x7f\x95\x8d\x2e\xe5\x23\xa2\x20\x62\x06\x99\x45\x97\xc1\x3d\x83\x1e\xc7", + "USDT", + 6, + "Tether", + ) + yield ( # address, symbol, decimals, name + b"\x22\x60\xfa\xc5\xe5\x54\x2a\x77\x3a\xa4\x4f\xbc\xfe\xdf\x7c\x19\x3b\xc2\xc5\x99", + "WBTC", + 8, + "Wrapped Bitcoin", + ) + yield ( # address, symbol, decimals, name + b"\xa2\xcd\x3d\x43\xc7\x75\x97\x8a\x96\xbd\xbf\x12\xd7\x33\xd5\xa1\xed\x94\xfb\x18", + "XCN", + 18, + "Chain", + ) + if chain_id == 56: # bnb + yield ( # address, symbol, decimals, name + b"\x0e\xb3\xa7\x05\xfc\x54\x72\x50\x37\xcc\x9e\x00\x8b\xde\xde\x69\x7f\x62\xf3\x35", + "ATOM", + 18, + "Cosmos Hub", + ) + if chain_id == 137: # matic + yield ( # address, symbol, decimals, name + b"\x2c\x89\xbb\xc9\x2b\xd8\x6f\x80\x75\xd1\xde\xcc\x58\xc7\xf4\xe0\x10\x7f\x28\x6b", + "WAVAX", + 18, + "Wrapped AVAX", + ) + if utils.INTERNAL_MODEL == "T3T1": + if chain_id == 1: # eth + yield ( # address, symbol, decimals, name + b"\x7f\xc6\x65\x00\xc8\x4a\x76\xad\x7e\x9c\x93\x43\x7b\xfc\x5a\xc3\x3e\x2d\xda\xe9", + "AAVE", + 18, + "Aave", + ) + yield ( # address, symbol, decimals, name + b"\x4d\x22\x44\x52\x80\x1a\xce\xd8\xb2\xf0\xae\xbe\x15\x53\x79\xbb\x5d\x59\x43\x81", + "APE", + 18, + "ApeCoin", + ) + yield ( # address, symbol, decimals, name + b"\xbb\x0e\x17\xef\x65\xf8\x2a\xb0\x18\xd8\xed\xd7\x76\xe8\xdd\x94\x03\x27\xb2\x8b", + "AXS", + 18, + "Axie Infinity", + ) + yield ( # address, symbol, decimals, name + b"\x4f\xab\xb1\x45\xd6\x46\x52\xa9\x48\xd7\x25\x33\x02\x3f\x6e\x7a\x62\x3c\x7c\x53", + "BUSD", + 18, + "Binance USD", + ) + yield ( # address, symbol, decimals, name + b"\x35\x06\x42\x4f\x91\xfd\x33\x08\x44\x66\xf4\x02\xd5\xd9\x7f\x05\xf8\xe3\xb4\xaf", + "CHZ", + 18, + "Chiliz", + ) + yield ( # address, symbol, decimals, name + b"\xa0\xb7\x3e\x1f\xf0\xb8\x09\x14\xab\x6f\xe0\x44\x4e\x65\x84\x8c\x4c\x34\x45\x0b", + "CRO", + 8, + "Cronos", + ) + yield ( # address, symbol, decimals, name + b"\x6b\x17\x54\x74\xe8\x90\x94\xc4\x4d\xa9\x8b\x95\x4e\xed\xea\xc4\x95\x27\x1d\x0f", + "DAI", + 18, + "Dai", + ) + yield ( # address, symbol, decimals, name + b"\x85\x3d\x95\x5a\xce\xf8\x22\xdb\x05\x8e\xb8\x50\x59\x11\xed\x77\xf1\x75\xb9\x9e", + "FRAX", + 18, + "Frax", + ) + yield ( # address, symbol, decimals, name + b"\x2a\xf5\xd2\xad\x76\x74\x11\x91\xd1\x5d\xfe\x7b\xf6\xac\x92\xd4\xbd\x91\x2c\xa3", + "LEO", + 18, + "LEO Token", + ) + yield ( # address, symbol, decimals, name + b"\x51\x49\x10\x77\x1a\xf9\xca\x65\x6a\xf8\x40\xdf\xf8\x3e\x82\x64\xec\xf9\x86\xca", + "LINK", + 18, + "Chainlink", + ) + yield ( # address, symbol, decimals, name + b"\x0f\x5d\x2f\xb2\x9f\xb7\xd3\xcf\xee\x44\x4a\x20\x02\x98\xf4\x68\x90\x8c\xc9\x42", + "MANA", + 18, + "Decentraland", + ) + yield ( # address, symbol, decimals, name + b"\x7d\x1a\xfa\x7b\x71\x8f\xb8\x93\xdb\x30\xa3\xab\xc0\xcf\xc6\x08\xaa\xcf\xeb\xb0", + "MATIC", + 18, + "Polygon", + ) + yield ( # address, symbol, decimals, name + b"\x75\x23\x1f\x58\xb4\x32\x40\xc9\x71\x8d\xd5\x8b\x49\x67\xc5\x11\x43\x42\xa8\x6c", + "OKB", + 18, + "OKB", + ) + yield ( # address, symbol, decimals, name + b"\x4a\x22\x0e\x60\x96\xb2\x5e\xad\xb8\x83\x58\xcb\x44\x06\x8a\x32\x48\x25\x46\x75", + "QNT", + 18, + "Quant", + ) + yield ( # address, symbol, decimals, name + b"\x38\x45\xba\xda\xde\x8e\x6d\xff\x04\x98\x20\x68\x0d\x1f\x14\xbd\x39\x03\xa5\xd0", + "SAND", + 18, + "The Sandbox", + ) + yield ( # address, symbol, decimals, name + b"\x95\xad\x61\xb0\xa1\x50\xd7\x92\x19\xdc\xf6\x4e\x1e\x6c\xc0\x1f\x0b\x64\xc4\xce", + "SHIB", + 18, + "Shiba Inu", + ) + yield ( # address, symbol, decimals, name + b"\xae\x7a\xb9\x65\x20\xde\x3a\x18\xe5\xe1\x11\xb5\xea\xab\x09\x53\x12\xd7\xfe\x84", + "STETH", + 18, + "Lido Staked Ether", + ) + yield ( # address, symbol, decimals, name + b"\x1f\x98\x40\xa8\x5d\x5a\xf5\xbf\x1d\x17\x62\xf9\x25\xbd\xad\xdc\x42\x01\xf9\x84", + "UNI", + 18, + "Uniswap", + ) + yield ( # address, symbol, decimals, name + b"\xa0\xb8\x69\x91\xc6\x21\x8b\x36\xc1\xd1\x9d\x4a\x2e\x9e\xb0\xce\x36\x06\xeb\x48", + "USDC", + 6, + "USD Coin", + ) + yield ( # address, symbol, decimals, name + b"\xda\xc1\x7f\x95\x8d\x2e\xe5\x23\xa2\x20\x62\x06\x99\x45\x97\xc1\x3d\x83\x1e\xc7", + "USDT", + 6, + "Tether", + ) + yield ( # address, symbol, decimals, name + b"\x22\x60\xfa\xc5\xe5\x54\x2a\x77\x3a\xa4\x4f\xbc\xfe\xdf\x7c\x19\x3b\xc2\xc5\x99", + "WBTC", + 8, + "Wrapped Bitcoin", + ) + yield ( # address, symbol, decimals, name + b"\xa2\xcd\x3d\x43\xc7\x75\x97\x8a\x96\xbd\xbf\x12\xd7\x33\xd5\xa1\xed\x94\xfb\x18", + "XCN", + 18, + "Chain", + ) + if chain_id == 56: # bnb + yield ( # address, symbol, decimals, name + b"\x0e\xb3\xa7\x05\xfc\x54\x72\x50\x37\xcc\x9e\x00\x8b\xde\xde\x69\x7f\x62\xf3\x35", + "ATOM", + 18, + "Cosmos Hub", + ) + if chain_id == 137: # matic + yield ( # address, symbol, decimals, name + b"\x2c\x89\xbb\xc9\x2b\xd8\x6f\x80\x75\xd1\xde\xcc\x58\xc7\xf4\xe0\x10\x7f\x28\x6b", + "WAVAX", + 18, + "Wrapped AVAX", + ) diff --git a/core/src/apps/ethereum/tokens.py.mako b/core/src/apps/ethereum/tokens.py.mako index b116bc6928..3193e9c127 100644 --- a/core/src/apps/ethereum/tokens.py.mako +++ b/core/src/apps/ethereum/tokens.py.mako @@ -51,7 +51,7 @@ def token_by_chain_address(chain_id: int, address: bytes) -> EthereumTokenInfo | def _token_iterator(chain_id: int) -> Iterator[tuple[bytes, str, int, str]]: -% for model in ["T2B1", "T3T1", "T2T1"]: +% for model in ALL_MODELS: if utils.INTERNAL_MODEL == "${model}": % for token_chain_id, tokens in group_tokens(supported_on(model, erc20)).items(): if chain_id == ${token_chain_id}: # ${tokens[0].chain} From 234c065aae1f4d9d2a92b15024d182f7fb0a33e1 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 10:26:13 +0200 Subject: [PATCH 584/626] chore(core): support T3B1 for translation blobs --- core/translations/cli.py | 10 ++++++++-- core/translations/cs.json | 2 +- core/translations/de.json | 2 +- core/translations/es.json | 2 +- core/translations/fr.json | 2 +- core/translations/signatures.json | 6 +++--- tests/translations.py | 6 +++++- 7 files changed, 20 insertions(+), 10 deletions(-) diff --git a/core/translations/cli.py b/core/translations/cli.py index 067aabb074..20cf7c756b 100644 --- a/core/translations/cli.py +++ b/core/translations/cli.py @@ -16,7 +16,7 @@ HERE = Path(__file__).parent.resolve() LOG = logging.getLogger(__name__) -ALL_MODELS = {models.T2B1, models.T2T1, models.T3T1} +ALL_MODELS = {models.T2B1, models.T2T1, models.T3T1, models.T3B1} PRIVATE_KEYS_DEV = [byte * 32 for byte in (b"\xdd", b"\xde", b"\xdf")] @@ -125,7 +125,13 @@ def _lang_path(self, lang: str) -> Path: return self.path / f"{lang}.json" def load_lang(self, lang: str) -> translations.JsonDef: - return json.loads(self._lang_path(lang).read_text()) + json_def = json.loads(self._lang_path(lang).read_text()) + # special-case for T2B1 and T3B1, so that we keep the info in one place instead + # of duplicating it in two entries, risking a desync + if (fonts_safe3 := json_def.get("fonts", {}).get("##Safe3")) is not None: + json_def["fonts"]["T2B1"] = fonts_safe3 + json_def["fonts"]["T3B1"] = fonts_safe3 + return json_def def save_lang(self, lang: str, data: translations.JsonDef) -> None: self._lang_path(lang).write_text( diff --git a/core/translations/cs.json b/core/translations/cs.json index cd55d69be5..279180ecd5 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -1,6 +1,6 @@ { "fonts": { - "T2B1": { + "##Safe3": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_cs.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_cs.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_cs.json", diff --git a/core/translations/de.json b/core/translations/de.json index c7f969c4bd..bb1b01fbd4 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -1,6 +1,6 @@ { "fonts": { - "T2B1": { + "##Safe3": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_de.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_de.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_de.json", diff --git a/core/translations/es.json b/core/translations/es.json index 9d1ee3db39..fc153845dd 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -1,6 +1,6 @@ { "fonts": { - "T2B1": { + "##Safe3": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_es.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_es.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_es.json", diff --git a/core/translations/fr.json b/core/translations/fr.json index b2626ed361..66bf1dcf5c 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -1,6 +1,6 @@ { "fonts": { - "T2B1": { + "##Safe3": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_fr.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_fr.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_fr.json", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 8461a14be6..bb7706ac47 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "0682f8041f5d002800da51d3c3a36351d326b89ddf8fff6c3e70cd1943f3e064", - "datetime": "2024-08-29T14:44:39.968325", - "commit": "c5e520fd1e34182fb19044baa190dbc81fcf5cad" + "merkle_root": "23cd34c69ea6414849d484a7a9cf990f245d4522371fbdad909807d2bd8efe17", + "datetime": "2024-09-03T08:33:15.680225", + "commit": "4002c934c0dff69ded4247bee4c92bc6642dc0ac" }, "history": [ { diff --git a/tests/translations.py b/tests/translations.py index 48e0ca9a38..b411162ae6 100644 --- a/tests/translations.py +++ b/tests/translations.py @@ -70,7 +70,11 @@ def set_language(client: Client, lang: str): def get_lang_json(lang: str) -> translations.JsonDef: assert lang in LANGUAGES - return json.loads((TRANSLATIONS / f"{lang}.json").read_text()) + lang_json = json.loads((TRANSLATIONS / f"{lang}.json").read_text()) + if (fonts_safe3 := lang_json.get("fonts", {}).get("##Safe3")) is not None: + lang_json["fonts"]["T2B1"] = fonts_safe3 + lang_json["fonts"]["T3B1"] = fonts_safe3 + return lang_json def _get_all_language_data() -> list[dict[str, str]]: From cc9e74772b6f1829763616909e6b32e2990a0787 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 3 Sep 2024 12:01:04 +0200 Subject: [PATCH 585/626] chore(common): rename MATIC to POL, following a network upgrade --- common/defs/ethereum/networks.json | 2 +- common/defs/support.json | 10 +++++----- core/.changelog.d/4151.changed | 1 + core/src/apps/ethereum/networks.py | 10 +++++----- 4 files changed, 12 insertions(+), 11 deletions(-) create mode 100644 core/.changelog.d/4151.changed diff --git a/common/defs/ethereum/networks.json b/common/defs/ethereum/networks.json index 19e82558fb..f2e00975ea 100644 --- a/common/defs/ethereum/networks.json +++ b/common/defs/ethereum/networks.json @@ -48,7 +48,7 @@ "coingecko_id": "polygon-pos", "is_testnet": false, "name": "Polygon", - "shortcut": "MATIC", + "shortcut": "POL", "slip44": 966 } ] diff --git a/common/defs/support.json b/common/defs/support.json index 01dc0a60ef..24cb96813f 100644 --- a/common/defs/support.json +++ b/common/defs/support.json @@ -82,7 +82,7 @@ "eth:BNB:56": "1.9.4", "eth:ETC:61": "1.6.2", "eth:ETH:1": "1.6.2", - "eth:MATIC:137": "1.9.4", + "eth:POL:137": "1.9.4", "eth:tSEP:11155111": "1.11.3", "eth:tHOL:17000": "1.11.3", "misc:MAID": "1.7.2", @@ -187,7 +187,7 @@ "eth:BNB:56": "2.6.1", "eth:ETC:61": "2.6.1", "eth:ETH:1": "2.6.1", - "eth:MATIC:137": "2.6.1", + "eth:POL:137": "2.6.1", "eth:tSEP:11155111": "2.6.4", "eth:tHOL:17000": "2.6.4", "misc:ADA": "2.6.1", @@ -310,7 +310,7 @@ "eth:BNB:56": "2.3.5", "eth:ETC:61": "2.0.7", "eth:ETH:1": "2.0.7", - "eth:MATIC:137": "2.3.5", + "eth:POL:137": "2.3.5", "eth:tSEP:11155111": "2.5.4", "eth:tHOL:17000": "2.5.4", "misc:ADA": "2.0.8", @@ -415,7 +415,7 @@ "eth:BNB:56": "2.8.1", "eth:ETC:61": "2.8.1", "eth:ETH:1": "2.8.1", - "eth:MATIC:137": "2.8.1", + "eth:POL:137": "2.8.1", "eth:tSEP:11155111": "2.8.1", "eth:tHOL:17000": "2.8.1", "misc:ADA": "2.8.1", @@ -529,7 +529,7 @@ "eth:BNB:56": "2.6.1", "eth:ETC:61": "2.6.1", "eth:ETH:1": "2.6.1", - "eth:MATIC:137": "2.6.1", + "eth:POL:137": "2.6.1", "eth:tSEP:11155111": "2.6.1", "eth:tHOL:17000": "2.6.1", "misc:ADA": "2.6.1", diff --git a/core/.changelog.d/4151.changed b/core/.changelog.d/4151.changed new file mode 100644 index 0000000000..bad7fbfb38 --- /dev/null +++ b/core/.changelog.d/4151.changed @@ -0,0 +1 @@ +Renamed MATIC to POL, following a network upgrade. diff --git a/core/src/apps/ethereum/networks.py b/core/src/apps/ethereum/networks.py index 0b94bed5d1..8035b582e8 100644 --- a/core/src/apps/ethereum/networks.py +++ b/core/src/apps/ethereum/networks.py @@ -81,7 +81,7 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: yield ( 137, # chain_id 966, # slip44 - "MATIC", # symbol + "POL", # symbol "Polygon", # name ) yield ( @@ -118,7 +118,7 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: yield ( 137, # chain_id 966, # slip44 - "MATIC", # symbol + "POL", # symbol "Polygon", # name ) yield ( @@ -155,7 +155,7 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: yield ( 137, # chain_id 966, # slip44 - "MATIC", # symbol + "POL", # symbol "Polygon", # name ) yield ( @@ -192,7 +192,7 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: yield ( 137, # chain_id 966, # slip44 - "MATIC", # symbol + "POL", # symbol "Polygon", # name ) yield ( @@ -229,7 +229,7 @@ def _networks_iterator() -> Iterator[NetworkInfoTuple]: yield ( 137, # chain_id 966, # slip44 - "MATIC", # symbol + "POL", # symbol "Polygon", # name ) yield ( From d334b920732b7269618e2269df1cf31d15ef22e0 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 27 Aug 2024 09:43:17 +0200 Subject: [PATCH 586/626] feat(core): add bootloader unlocking functionality to U5 optiga models --- .../bootloader/.changelog.d/4133.changed | 1 + core/embed/bootloader/main.c | 2 +- core/embed/bootloader/messages.c | 8 +++--- .../src/ui/model_mercury/bootloader/mod.rs | 25 +++++++++++++++++-- .../src/ui/model_mercury/component/error.rs | 4 +-- core/embed/trezorhal/secret.h | 6 +++++ core/embed/trezorhal/stm32f4/secret.c | 6 +++++ core/embed/trezorhal/stm32u5/secret.c | 14 +++++++++-- 8 files changed, 55 insertions(+), 11 deletions(-) create mode 100644 core/embed/bootloader/.changelog.d/4133.changed diff --git a/core/embed/bootloader/.changelog.d/4133.changed b/core/embed/bootloader/.changelog.d/4133.changed new file mode 100644 index 0000000000..cc3f2171f8 --- /dev/null +++ b/core/embed/bootloader/.changelog.d/4133.changed @@ -0,0 +1 @@ +[T3B1, T3T1] Added bootloader unlock mechanism to U5 models diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index fbba58170e..07adabd46d 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -220,7 +220,7 @@ static usb_result_t bootloader_usb_loop(const vendor_header *const vhdr, case MessageType_MessageType_GetFeatures: process_msg_GetFeatures(USB_IFACE_NUM, msg_size, buf, vhdr, hdr); break; -#if defined USE_OPTIGA && !defined STM32U5 +#if defined USE_OPTIGA case MessageType_MessageType_UnlockBootloader: response = ui_screen_unlock_bootloader_confirm(); if (INPUT_CANCEL == response) { diff --git a/core/embed/bootloader/messages.c b/core/embed/bootloader/messages.c index 7cee213aba..568cafdb26 100644 --- a/core/embed/bootloader/messages.c +++ b/core/embed/bootloader/messages.c @@ -662,8 +662,8 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, is_ilu = sectrue; } -#if defined USE_OPTIGA && !defined STM32U5 - if (sectrue != secret_wiped() && +#if defined USE_OPTIGA + if (secfalse != secret_optiga_present() && ((vhdr.vtrust & VTRUST_SECRET_MASK) != VTRUST_SECRET_ALLOW)) { MSG_SEND_INIT(Failure); MSG_SEND_ASSIGN_VALUE(code, FailureType_Failure_ProcessError); @@ -868,10 +868,10 @@ void process_msg_unknown(uint8_t iface_num, uint32_t msg_size, uint8_t *buf) { MSG_SEND(Failure); } -#if defined USE_OPTIGA && !defined STM32U5 +#if defined USE_OPTIGA void process_msg_UnlockBootloader(uint8_t iface_num, uint32_t msg_size, uint8_t *buf) { - secret_erase(); + secret_optiga_erase(); MSG_SEND_INIT(Success); MSG_SEND(Success); } diff --git a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs index 5f849615a0..70d886400c 100644 --- a/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs +++ b/core/embed/rust/src/ui/model_mercury/bootloader/mod.rs @@ -315,11 +315,32 @@ impl UIFeaturesBootloader for ModelMercuryFeatures { } fn screen_unlock_bootloader_confirm() -> u32 { - unimplemented!(); + let title = + Label::left_aligned("UNLOCK BOOTLOADER".into(), TEXT_BOLD).vertically_centered(); + let msg = Label::centered("This action cannot be undone!".into(), TEXT_NORMAL); + + let right = Button::with_text("UNLOCK".into()) + .styled(button_confirm()) + .with_text_align(Alignment::Center); + let left = Button::with_text("CANCEL".into()) + .styled(button_bld()) + .with_text_align(Alignment::Center); + + let mut frame = Confirm::new(BLD_BG, left, right, ConfirmTitle::Text(title), msg); + + run(&mut frame) } fn screen_unlock_bootloader_success() { - unimplemented!(); + let mut frame = ResultScreen::new( + &RESULT_FW_INSTALL, + Icon::new(CHECK40), + "Bootloader unlocked".into(), + Label::centered(RECONNECT_MESSAGE.into(), RESULT_FW_INSTALL.title_style()) + .vertically_centered(), + true, + ); + show(&mut frame, true); } fn screen_menu(firmware_present: secbool) -> u32 { diff --git a/core/embed/rust/src/ui/model_mercury/component/error.rs b/core/embed/rust/src/ui/model_mercury/component/error.rs index c6280ae355..9df9741851 100644 --- a/core/embed/rust/src/ui/model_mercury/component/error.rs +++ b/core/embed/rust/src/ui/model_mercury/component/error.rs @@ -17,7 +17,7 @@ use super::{ const ICON_TOP: i16 = 23; const TITLE_AREA_START: i16 = 70; -const MESSAGE_AREA_START: i16 = 116; +const MESSAGE_AREA_START: i16 = 90; #[cfg(feature = "bootloader")] const STYLE: &ResultStyle = &crate::ui::model_mercury::theme::bootloader::RESULT_WIPE; @@ -34,7 +34,7 @@ pub struct ErrorScreen<'a> { impl<'a> ErrorScreen<'a> { pub fn new(title: TString<'a>, message: TString<'a>, footer: TString<'a>) -> Self { let title = Label::centered(title, STYLE.title_style()); - let message = Label::centered(message, STYLE.message_style()); + let message = Label::centered(message, STYLE.message_style()).vertically_centered(); let footer = ResultFooter::new( Label::centered(footer, STYLE.title_style()).vertically_centered(), STYLE, diff --git a/core/embed/trezorhal/secret.h b/core/embed/trezorhal/secret.h index e22ff9ad71..f8fa453da0 100644 --- a/core/embed/trezorhal/secret.h +++ b/core/embed/trezorhal/secret.h @@ -52,6 +52,12 @@ secbool secret_optiga_set(const uint8_t secret[SECRET_OPTIGA_KEY_LEN]); // was made unavailable by calling secret_optiga_hide secbool secret_optiga_get(uint8_t dest[SECRET_OPTIGA_KEY_LEN]); +// Checks if the optiga pairing secret is present in the secret storage +secbool secret_optiga_present(void); + +// Erases optiga pairing secret from the secret storage +void secret_optiga_erase(void); + // Regenerates the BHK and writes it to the secret storage void secret_bhk_regenerate(void); diff --git a/core/embed/trezorhal/stm32f4/secret.c b/core/embed/trezorhal/stm32f4/secret.c index e6c5cef2b4..45abb31e98 100644 --- a/core/embed/trezorhal/stm32f4/secret.c +++ b/core/embed/trezorhal/stm32f4/secret.c @@ -98,6 +98,12 @@ secbool secret_optiga_get(uint8_t dest[SECRET_OPTIGA_KEY_LEN]) { return secret_read(dest, SECRET_OPTIGA_KEY_OFFSET, SECRET_OPTIGA_KEY_LEN); } +secbool secret_optiga_present(void) { + return (sectrue != secret_wiped()) * sectrue; +} + +void secret_optiga_erase(void) { secret_erase(); } + void secret_prepare_fw(secbool allow_run_with_secret, secbool _trust_all) { #ifdef USE_OPTIGA if (sectrue != allow_run_with_secret && sectrue != secret_wiped()) { diff --git a/core/embed/trezorhal/stm32u5/secret.c b/core/embed/trezorhal/stm32u5/secret.c index bfa107a965..3700c5e914 100644 --- a/core/embed/trezorhal/stm32u5/secret.c +++ b/core/embed/trezorhal/stm32u5/secret.c @@ -102,7 +102,9 @@ static secbool secret_present(uint32_t offset, uint32_t len) { int secret_empty_bytes = 0; for (int i = 0; i < len; i++) { - if (secret[i] == 0xFF) { + // 0xFF being the default value of the flash memory (before any write) + // 0x00 being the value of the flash memory after manual erase + if (secret[i] == 0xFF || secret[i] == 0x00) { secret_empty_bytes++; } } @@ -164,7 +166,7 @@ void secret_bhk_regenerate(void) { // This functions only works when software has access to the secret storage, // i.e. in bootloader. Access to secret storage is restricted by calling // secret_hide. -static secbool secret_optiga_present(void) { +secbool secret_optiga_present(void) { return secret_present(SECRET_OPTIGA_KEY_OFFSET, SECRET_OPTIGA_KEY_LEN); } @@ -235,6 +237,11 @@ static void secret_optiga_uncache(void) { } #endif +void secret_optiga_erase(void) { + uint8_t value[SECRET_OPTIGA_KEY_LEN] = {0}; + secret_write(value, SECRET_OPTIGA_KEY_OFFSET, SECRET_OPTIGA_KEY_LEN); +} + void secret_erase(void) { ensure(flash_area_erase(&SECRET_AREA, NULL), "secret erase"); } @@ -263,6 +270,9 @@ void secret_prepare_fw(secbool allow_run_with_secret, secbool trust_all) { secret_disable_access(); } } else { + if (secfalse != secret_optiga_present()) { + show_install_restricted_screen(); + } secret_disable_access(); } #else From c1864a2a91ec72908ffb3e63f1c0b910b2d991a5 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 27 Aug 2024 12:36:35 +0200 Subject: [PATCH 587/626] refactor(core): enclose monotonic counter to platform specific module [no changelog] --- core/SConscript.bootloader_emu | 1 + core/embed/boardloader/main.c | 47 ++------- core/embed/bootloader/main.c | 23 +---- core/embed/models/layout_common.h | 1 + core/embed/trezorhal/monoctr.h | 39 ++++++++ core/embed/trezorhal/secret.h | 1 + core/embed/trezorhal/stm32f4/monoctr.c | 119 +++++++++++++++++++++++ core/embed/trezorhal/stm32u5/monoctr.c | 111 +++++++++++++++++++++ core/embed/trezorhal/unix/monoctr.c | 109 +++++++++++++++++++++ core/site_scons/models/stm32f4_common.py | 1 + core/site_scons/models/stm32u5_common.py | 1 + 11 files changed, 395 insertions(+), 58 deletions(-) create mode 100644 core/embed/trezorhal/monoctr.h create mode 100644 core/embed/trezorhal/stm32f4/monoctr.c create mode 100644 core/embed/trezorhal/stm32u5/monoctr.c create mode 100644 core/embed/trezorhal/unix/monoctr.c diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 789185f24f..009415fcf8 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -149,6 +149,7 @@ SOURCE_TREZORHAL = [ 'embed/trezorhal/unix/fault_handlers.c', 'embed/trezorhal/unix/flash.c', 'embed/trezorhal/unix/flash_otp.c', + 'embed/trezorhal/unix/monoctr.c', 'embed/trezorhal/unix/random_delays.c', 'embed/trezorhal/unix/rng.c', 'embed/trezorhal/unix/secret.c', diff --git a/core/embed/boardloader/main.c b/core/embed/boardloader/main.c index 321297d4d0..6444fff90d 100644 --- a/core/embed/boardloader/main.c +++ b/core/embed/boardloader/main.c @@ -54,6 +54,7 @@ #include "lowlevel.h" #include "model.h" +#include "monoctr.h" #include "version.h" #include "memzero.h" @@ -76,45 +77,17 @@ static const uint8_t * const BOARDLOADER_KEYS[] = { #endif }; -#ifdef STM32U5 -uint8_t get_bootloader_min_version(void) { - const uint8_t *counter_addr = - flash_area_get_address(&SECRET_AREA, SECRET_MONOTONIC_COUNTER_OFFSET, - SECRET_MONOTONIC_COUNTER_LEN); - - ensure((counter_addr != NULL) * sectrue, "counter_addr is NULL"); - - int counter = 0; - - for (int i = 0; i < SECRET_MONOTONIC_COUNTER_LEN / 16; i++) { - secbool not_cleared = sectrue; - for (int j = 0; j < 16; j++) { - if (counter_addr[i * 16 + j] != 0xFF) { - not_cleared = secfalse; - break; - } - } - - if (not_cleared != sectrue) { - counter++; - } else { - break; - } - } - - return counter; +static uint8_t get_bootloader_min_version(void) { + uint8_t version = 0; + ensure(monoctr_read(MONOCTR_BOOTLOADER_VERSION, &version), "monoctr read"); + return version; } -void write_bootloader_min_version(uint8_t version) { +static void write_bootloader_min_version(uint8_t version) { if (version > get_bootloader_min_version()) { - for (int i = 0; i < version; i++) { - uint32_t data[4] = {0}; - secret_write((uint8_t *)data, SECRET_MONOTONIC_COUNTER_OFFSET + i * 16, - 16); - } + ensure(monoctr_write(MONOCTR_BOOTLOADER_VERSION, version), "monoctr write"); } } -#endif struct BoardCapabilities capabilities __attribute__((section(".capabilities_section"))) = { @@ -197,11 +170,9 @@ static uint32_t check_sdcard(void) { } } -#ifdef STM32U5 if (hdr->monotonic < get_bootloader_min_version()) { return 0; } -#endif return hdr->codelen; } @@ -310,7 +281,6 @@ int main(void) { #if defined USE_SD_CARD sdcard_init(); -#ifdef STM32U5 // If the bootloader is being updated from SD card, we need to preserve the // monotonic counter from the old bootloader. This is in case that the old // bootloader did not have the chance yet to write its monotonic counter to @@ -327,7 +297,6 @@ int main(void) { check_image_contents(old_hdr, IMAGE_HEADER_SIZE, &BOOTLOADER_AREA))) { write_bootloader_min_version(old_hdr->monotonic); } -#endif if (check_sdcard()) { return copy_sdcard() == sectrue ? 0 : 3; @@ -348,14 +317,12 @@ int main(void) { ensure(check_image_contents(hdr, IMAGE_HEADER_SIZE, &BOOTLOADER_AREA), "invalid bootloader hash"); -#ifdef STM32U5 uint8_t bld_min_version = get_bootloader_min_version(); ensure((hdr->monotonic >= bld_min_version) * sectrue, "BOOTLOADER DOWNGRADED"); // Write the bootloader version to the secret area. // This includes the version of bootloader potentially updated from SD card. write_bootloader_min_version(hdr->monotonic); -#endif ensure_compatible_settings(); diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 07adabd46d..4ec85145e8 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -69,6 +69,7 @@ #include "bootui.h" #include "messages.h" +#include "monoctr.h" #include "rust_ui.h" #include "unit_variant.h" @@ -265,24 +266,10 @@ static secbool check_vendor_header_lock(const vendor_header *const vhdr) { #if PRODUCTION && !defined STM32U5 static void check_bootloader_version(void) { - uint8_t bits[FLASH_OTP_BLOCK_SIZE]; - for (int i = 0; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { - if (i < VERSION_MONOTONIC) { - bits[i / 8] &= ~(1 << (7 - (i % 8))); - } else { - bits[i / 8] |= (1 << (7 - (i % 8))); - } - } - ensure(flash_otp_write(FLASH_OTP_BLOCK_BOOTLOADER_VERSION, 0, bits, - FLASH_OTP_BLOCK_SIZE), - NULL); - - uint8_t bits2[FLASH_OTP_BLOCK_SIZE]; - ensure(flash_otp_read(FLASH_OTP_BLOCK_BOOTLOADER_VERSION, 0, bits2, - FLASH_OTP_BLOCK_SIZE), - NULL); - - ensure(sectrue * (0 == memcmp(bits, bits2, FLASH_OTP_BLOCK_SIZE)), + ensure(monoctr_write(MONOCTR_BOOTLOADER_VERSION, VERSION_MONOTONIC), NULL); + uint8_t val = 0; + ensure(monoctr_read(MONOCTR_BOOTLOADER_VERSION, &val), NULL); + ensure(sectrue * (val == VERSION_MONOTONIC), "Bootloader downgrade protection"); } diff --git a/core/embed/models/layout_common.h b/core/embed/models/layout_common.h index e95f868bf0..318bf5abd4 100644 --- a/core/embed/models/layout_common.h +++ b/core/embed/models/layout_common.h @@ -9,6 +9,7 @@ #define FLASH_OTP_BLOCK_VENDOR_HEADER_LOCK 2 #define FLASH_OTP_BLOCK_RANDOMNESS 3 #define FLASH_OTP_BLOCK_DEVICE_VARIANT 4 +#define FLASH_OTP_BLOCK_FIRMWARE_VERSION 5 #define STORAGE_AREAS_COUNT (2) diff --git a/core/embed/trezorhal/monoctr.h b/core/embed/trezorhal/monoctr.h new file mode 100644 index 0000000000..0d5e2bcfd1 --- /dev/null +++ b/core/embed/trezorhal/monoctr.h @@ -0,0 +1,39 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TREZORHAL_MONOCTR +#define TREZORHAL_MONOCTR + +// Monoctr module provides monotonic counter functionality + +#define MONOCTR_MAX_VALUE 63 + +#include <stdint.h> +#include "secbool.h" + +typedef enum { + MONOCTR_BOOTLOADER_VERSION = 0, + MONOCTR_FIRMWARE_VERSION = 1, +} monoctr_type_t; + +secbool monoctr_write(monoctr_type_t type, uint8_t value); + +secbool monoctr_read(monoctr_type_t type, uint8_t* value); + +#endif diff --git a/core/embed/trezorhal/secret.h b/core/embed/trezorhal/secret.h index f8fa453da0..99d5d120db 100644 --- a/core/embed/trezorhal/secret.h +++ b/core/embed/trezorhal/secret.h @@ -9,6 +9,7 @@ #define SECRET_MONOTONIC_COUNTER_OFFSET 48 #define SECRET_MONOTONIC_COUNTER_LEN 1024 +#define SECRET_MONOTONIC_COUNTER2_OFFSET (SECRET_MONOTONIC_COUNTER_LEN + 48) #define SECRET_BHK_OFFSET (1024 * 8) #define SECRET_BHK_LEN 32 diff --git a/core/embed/trezorhal/stm32f4/monoctr.c b/core/embed/trezorhal/stm32f4/monoctr.c new file mode 100644 index 0000000000..a30e13d907 --- /dev/null +++ b/core/embed/trezorhal/stm32f4/monoctr.c @@ -0,0 +1,119 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "monoctr.h" +#include "flash_otp.h" +#include "model.h" +#include "string.h" + +#if PRODUCTION +static int get_otp_block(monoctr_type_t type) { + switch (type) { + case MONOCTR_BOOTLOADER_VERSION: + return FLASH_OTP_BLOCK_BOOTLOADER_VERSION; + case MONOCTR_FIRMWARE_VERSION: + return FLASH_OTP_BLOCK_FIRMWARE_VERSION; + default: + return -1; + } +} +#endif + +secbool monoctr_write(monoctr_type_t type, uint8_t value) { +#if PRODUCTION + if (value > MONOCTR_MAX_VALUE) { + return secfalse; + } + + uint8_t bits[FLASH_OTP_BLOCK_SIZE]; + for (int i = 0; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { + if (i < value) { + bits[i / 8] &= ~(1 << (7 - (i % 8))); + } else { + bits[i / 8] |= (1 << (7 - (i % 8))); + } + } + + int block = get_otp_block(type); + + if (block < 0) { + return secfalse; + } + + ensure(flash_otp_write(block, 0, bits, FLASH_OTP_BLOCK_SIZE), NULL); + +#endif + return sectrue; +} + +secbool monoctr_read(monoctr_type_t type, uint8_t* value) { +#if PRODUCTION + uint8_t bits[FLASH_OTP_BLOCK_SIZE]; + + int block = get_otp_block(type); + + if (block < 0) { + return secfalse; + } + + ensure(flash_otp_read(block, 0, bits, FLASH_OTP_BLOCK_SIZE), NULL); + + int result = 0; + + int i; + + // Iterate through each bit position in the bit field + for (i = 0; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { + // Calculate the byte and bit index within the byte + int byteIndex = i / 8; + int bitIndex = 7 - (i % 8); + + // Check if the current bit is 0 + if ((bits[byteIndex] & (1 << bitIndex)) == 0) { + // If the bit is 0, increment the value + result++; + } else { + // Stop when we find the first 1 bit + break; + } + } + + for (; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { + // Calculate the byte and bit index within the byte + int byteIndex = i / 8; + int bitIndex = 7 - (i % 8); + if ((bits[byteIndex] & (1 << bitIndex)) == 0) { + // If the bit is 0, return false - the monotonic counter is not valid + return secfalse; + } + } + + if (value != NULL) { + *value = result; + } else { + return secfalse; + } +#else + + *value = 0; + +#endif + + return sectrue; +} diff --git a/core/embed/trezorhal/stm32u5/monoctr.c b/core/embed/trezorhal/stm32u5/monoctr.c new file mode 100644 index 0000000000..e9db4eb273 --- /dev/null +++ b/core/embed/trezorhal/stm32u5/monoctr.c @@ -0,0 +1,111 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "monoctr.h" +#include "flash_area.h" +#include "model.h" +#include "secret.h" + +static int32_t get_offset(monoctr_type_t type) { + switch (type) { + case MONOCTR_BOOTLOADER_VERSION: + return SECRET_MONOTONIC_COUNTER_OFFSET; + case MONOCTR_FIRMWARE_VERSION: + return SECRET_MONOTONIC_COUNTER2_OFFSET; + default: + return -1; + } +} + +secbool monoctr_write(monoctr_type_t type, uint8_t value) { + if (value > MONOCTR_MAX_VALUE) { + return secfalse; + } + + int32_t offset = get_offset(type); + + if (offset < 0) { + return secfalse; + } + + for (int i = 0; i < value; i++) { + uint32_t data[4] = {0}; + secret_write((uint8_t *)data, offset + i * 16, 16); + } + + return sectrue; +} + +secbool monoctr_read(monoctr_type_t type, uint8_t *value) { + int32_t offset = get_offset(type); + + if (offset < 0) { + return secfalse; + } + + const uint8_t *counter_addr = flash_area_get_address( + &SECRET_AREA, offset, SECRET_MONOTONIC_COUNTER_LEN); + + if (counter_addr == NULL) { + return secfalse; + } + + int counter = 0; + + int i = 0; + + for (i = 0; i < SECRET_MONOTONIC_COUNTER_LEN / 16; i++) { + secbool not_cleared = sectrue; + for (int j = 0; j < 16; j++) { + if (counter_addr[i * 16 + j] != 0xFF) { + not_cleared = secfalse; + break; + } + } + + if (not_cleared != sectrue) { + counter++; + } else { + break; + } + } + + for (; i < SECRET_MONOTONIC_COUNTER_LEN / 16; i++) { + secbool not_cleared = sectrue; + for (int j = 0; j < 16; j++) { + if (counter_addr[i * 16 + j] != 0xFF) { + not_cleared = secfalse; + break; + } + } + + if (not_cleared != sectrue) { + // monotonic counter is not valid + return secfalse; + } + } + + if (value != NULL) { + *value = counter; + } else { + return secfalse; + } + + return sectrue; +} diff --git a/core/embed/trezorhal/unix/monoctr.c b/core/embed/trezorhal/unix/monoctr.c new file mode 100644 index 0000000000..e1ddf7a358 --- /dev/null +++ b/core/embed/trezorhal/unix/monoctr.c @@ -0,0 +1,109 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "monoctr.h" +#include "flash_otp.h" +#include "model.h" +#include "string.h" + +static int get_otp_block(monoctr_type_t type) { + switch (type) { + case MONOCTR_BOOTLOADER_VERSION: + return FLASH_OTP_BLOCK_BOOTLOADER_VERSION; + case MONOCTR_FIRMWARE_VERSION: + return FLASH_OTP_BLOCK_FIRMWARE_VERSION; + default: + return -1; + } +} + +secbool monoctr_write(monoctr_type_t type, uint8_t value) { + if (value > MONOCTR_MAX_VALUE) { + return secfalse; + } + + uint8_t bits[FLASH_OTP_BLOCK_SIZE]; + for (int i = 0; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { + if (i < value) { + bits[i / 8] &= ~(1 << (7 - (i % 8))); + } else { + bits[i / 8] |= (1 << (7 - (i % 8))); + } + } + + int block = get_otp_block(type); + + if (block < 0) { + return secfalse; + } + + ensure(flash_otp_write(block, 0, bits, FLASH_OTP_BLOCK_SIZE), NULL); + + return sectrue; +} + +secbool monoctr_read(monoctr_type_t type, uint8_t* value) { + uint8_t bits[FLASH_OTP_BLOCK_SIZE]; + + int block = get_otp_block(type); + + if (block < 0) { + return secfalse; + } + + ensure(flash_otp_read(block, 0, bits, FLASH_OTP_BLOCK_SIZE), NULL); + + int result = 0; + + int i; + + // Iterate through each bit position in the bit field + for (i = 0; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { + // Calculate the byte and bit index within the byte + int byteIndex = i / 8; + int bitIndex = 7 - (i % 8); + + // Check if the current bit is 0 + if ((bits[byteIndex] & (1 << bitIndex)) == 0) { + // If the bit is 0, increment the value + result++; + } else { + // Stop when we find the first 1 bit + break; + } + } + + for (; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { + // Calculate the byte and bit index within the byte + int byteIndex = i / 8; + int bitIndex = 7 - (i % 8); + if ((bits[byteIndex] & (1 << bitIndex)) == 0) { + // If the bit is 0, return false - the monotonic counter is not valid + return secfalse; + } + } + + if (value != NULL) { + *value = result; + } else { + return secfalse; + } + + return sectrue; +} diff --git a/core/site_scons/models/stm32f4_common.py b/core/site_scons/models/stm32f4_common.py index 86032a51c1..3a53387f73 100644 --- a/core/site_scons/models/stm32f4_common.py +++ b/core/site_scons/models/stm32f4_common.py @@ -47,6 +47,7 @@ def stm32f4_common_files(env, defines, sources, paths): "embed/trezorhal/stm32f4/flash.c", "embed/trezorhal/stm32f4/flash_otp.c", "embed/trezorhal/stm32f4/lowlevel.c", + "embed/trezorhal/stm32f4/monoctr.c", "embed/trezorhal/stm32f4/mpu.c", "embed/trezorhal/stm32f4/platform.c", "embed/trezorhal/stm32f4/secret.c", diff --git a/core/site_scons/models/stm32u5_common.py b/core/site_scons/models/stm32u5_common.py index 2bbd7b31bb..ff08f108c7 100644 --- a/core/site_scons/models/stm32u5_common.py +++ b/core/site_scons/models/stm32u5_common.py @@ -57,6 +57,7 @@ def stm32u5_common_files(env, defines, sources, paths): "embed/trezorhal/stm32u5/flash_otp.c", "embed/trezorhal/stm32u5/lowlevel.c", "embed/trezorhal/stm32u5/hash_processor.c", + "embed/trezorhal/stm32u5/monoctr.c", "embed/trezorhal/stm32u5/mpu.c", "embed/trezorhal/stm32u5/platform.c", "embed/trezorhal/stm32u5/secret.c", From 395a4af9bec56879b5205726e5f4ab3b56b17fe5 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 27 Aug 2024 12:59:31 +0200 Subject: [PATCH 588/626] refactor(core): extract monotonic version to model specific headers [no changelog] --- core/embed/bootloader/header.S | 2 +- core/embed/bootloader/main.c | 6 ++++-- core/embed/bootloader/version.h | 10 ++++------ core/embed/bootloader_ci/header.S | 2 +- core/embed/bootloader_ci/version.h | 6 ++++-- core/embed/firmware/header.S | 2 +- core/embed/firmware/version.h | 6 ++++-- core/embed/models/D001/versions.h | 3 +++ core/embed/models/D002/versions.h | 3 +++ core/embed/models/T1B1/versions.h | 3 +++ core/embed/models/T2B1/versions.h | 3 +++ core/embed/models/T2T1/versions.h | 3 +++ core/embed/models/T3B1/versions.h | 3 +++ core/embed/models/T3T1/versions.h | 3 +++ core/embed/models/model_version.h | 22 ++++++++++++++++++++++ core/embed/prodtest/header.S | 2 +- core/embed/prodtest/version.h | 6 ++++-- core/embed/reflash/header.S | 2 +- core/embed/reflash/version.h | 6 ++++-- 19 files changed, 72 insertions(+), 21 deletions(-) create mode 100644 core/embed/models/D001/versions.h create mode 100644 core/embed/models/D002/versions.h create mode 100644 core/embed/models/T1B1/versions.h create mode 100644 core/embed/models/T2B1/versions.h create mode 100644 core/embed/models/T2T1/versions.h create mode 100644 core/embed/models/T3B1/versions.h create mode 100644 core/embed/models/T3T1/versions.h create mode 100644 core/embed/models/model_version.h diff --git a/core/embed/bootloader/header.S b/core/embed/bootloader/header.S index 9014961835..8945f4cd29 100644 --- a/core/embed/bootloader/header.S +++ b/core/embed/bootloader/header.S @@ -26,7 +26,7 @@ g_header: .byte FIX_VERSION_BUILD // fix_vbuild .word HW_MODEL // type of the designated hardware .byte HW_REVISION // revision of the designated hardware - .byte VERSION_MONOTONIC // monotonic version of the binary + .byte BOOTLOADER_MONOTONIC_VERSION // monotonic version of the binary . = . + 2 // reserved . = . + 512 // hash1 ... hash16 . = . + 415 // reserved diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 4ec85145e8..23d0ee9133 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -266,10 +266,12 @@ static secbool check_vendor_header_lock(const vendor_header *const vhdr) { #if PRODUCTION && !defined STM32U5 static void check_bootloader_version(void) { - ensure(monoctr_write(MONOCTR_BOOTLOADER_VERSION, VERSION_MONOTONIC), NULL); + ensure( + monoctr_write(MONOCTR_BOOTLOADER_VERSION, BOOTLOADER_MONOTONIC_VERSION), + NULL); uint8_t val = 0; ensure(monoctr_read(MONOCTR_BOOTLOADER_VERSION, &val), NULL); - ensure(sectrue * (val == VERSION_MONOTONIC), + ensure(sectrue * (val == BOOTLOADER_MONOTONIC_VERSION), "Bootloader downgrade protection"); } diff --git a/core/embed/bootloader/version.h b/core/embed/bootloader/version.h index bfb51809ea..9d26d7379c 100644 --- a/core/embed/bootloader/version.h +++ b/core/embed/bootloader/version.h @@ -1,3 +1,7 @@ +#pragma once + +#include "model_version.h" + #define VERSION_MAJOR 2 #define VERSION_MINOR 1 #define VERSION_PATCH 8 @@ -10,9 +14,3 @@ #define FIX_VERSION_MINOR 0 #define FIX_VERSION_PATCH 0 #define FIX_VERSION_BUILD 0 - -#ifdef TREZOR_MODEL_R -#define VERSION_MONOTONIC 2 -#else -#define VERSION_MONOTONIC 1 -#endif diff --git a/core/embed/bootloader_ci/header.S b/core/embed/bootloader_ci/header.S index bb386ef7fd..8945f4cd29 100644 --- a/core/embed/bootloader_ci/header.S +++ b/core/embed/bootloader_ci/header.S @@ -26,7 +26,7 @@ g_header: .byte FIX_VERSION_BUILD // fix_vbuild .word HW_MODEL // type of the designated hardware .byte HW_REVISION // revision of the designated hardware - .byte VERSION_MONOTONIC // monotonic version + .byte BOOTLOADER_MONOTONIC_VERSION // monotonic version of the binary . = . + 2 // reserved . = . + 512 // hash1 ... hash16 . = . + 415 // reserved diff --git a/core/embed/bootloader_ci/version.h b/core/embed/bootloader_ci/version.h index 05d8755e76..d1193c9435 100644 --- a/core/embed/bootloader_ci/version.h +++ b/core/embed/bootloader_ci/version.h @@ -1,3 +1,7 @@ +#pragma once + +#include "model_version.h" + #define VERSION_MAJOR 2 #define VERSION_MINOR 0 #define VERSION_PATCH 4 @@ -10,5 +14,3 @@ #define FIX_VERSION_MINOR 0 #define FIX_VERSION_PATCH 0 #define FIX_VERSION_BUILD 0 - -#define VERSION_MONOTONIC 1 diff --git a/core/embed/firmware/header.S b/core/embed/firmware/header.S index 3531e23955..f2f201cec8 100644 --- a/core/embed/firmware/header.S +++ b/core/embed/firmware/header.S @@ -29,7 +29,7 @@ g_header: .byte FIX_VERSION_BUILD // fix_vbuild .word HW_MODEL // type of the designated hardware .byte HW_REVISION // revision of the designated hardware - .byte VERSION_MONOTONIC // monotonic version of the binary + .byte FIRMWARE_MONOTONIC_VERSION // monotonic version of the binary . = . + 2 // reserved . = . + 512 // hash1 ... hash16 diff --git a/core/embed/firmware/version.h b/core/embed/firmware/version.h index b1b21300ce..566ba077af 100644 --- a/core/embed/firmware/version.h +++ b/core/embed/firmware/version.h @@ -1,3 +1,7 @@ +#pragma once + +#include "model_version.h" + #define VERSION_MAJOR 2 #define VERSION_MINOR 8 #define VERSION_PATCH 2 @@ -7,5 +11,3 @@ #define FIX_VERSION_MINOR 8 #define FIX_VERSION_PATCH 0 #define FIX_VERSION_BUILD 0 - -#define VERSION_MONOTONIC 1 diff --git a/core/embed/models/D001/versions.h b/core/embed/models/D001/versions.h new file mode 100644 index 0000000000..42408b3df8 --- /dev/null +++ b/core/embed/models/D001/versions.h @@ -0,0 +1,3 @@ + +#define BOOTLOADER_MONOTONIC_VERSION 1 +#define FIRMWARE_MONOTONIC_VERSION 1 diff --git a/core/embed/models/D002/versions.h b/core/embed/models/D002/versions.h new file mode 100644 index 0000000000..42408b3df8 --- /dev/null +++ b/core/embed/models/D002/versions.h @@ -0,0 +1,3 @@ + +#define BOOTLOADER_MONOTONIC_VERSION 1 +#define FIRMWARE_MONOTONIC_VERSION 1 diff --git a/core/embed/models/T1B1/versions.h b/core/embed/models/T1B1/versions.h new file mode 100644 index 0000000000..42408b3df8 --- /dev/null +++ b/core/embed/models/T1B1/versions.h @@ -0,0 +1,3 @@ + +#define BOOTLOADER_MONOTONIC_VERSION 1 +#define FIRMWARE_MONOTONIC_VERSION 1 diff --git a/core/embed/models/T2B1/versions.h b/core/embed/models/T2B1/versions.h new file mode 100644 index 0000000000..5ccdcb89ec --- /dev/null +++ b/core/embed/models/T2B1/versions.h @@ -0,0 +1,3 @@ + +#define BOOTLOADER_MONOTONIC_VERSION 2 +#define FIRMWARE_MONOTONIC_VERSION 1 diff --git a/core/embed/models/T2T1/versions.h b/core/embed/models/T2T1/versions.h new file mode 100644 index 0000000000..42408b3df8 --- /dev/null +++ b/core/embed/models/T2T1/versions.h @@ -0,0 +1,3 @@ + +#define BOOTLOADER_MONOTONIC_VERSION 1 +#define FIRMWARE_MONOTONIC_VERSION 1 diff --git a/core/embed/models/T3B1/versions.h b/core/embed/models/T3B1/versions.h new file mode 100644 index 0000000000..42408b3df8 --- /dev/null +++ b/core/embed/models/T3B1/versions.h @@ -0,0 +1,3 @@ + +#define BOOTLOADER_MONOTONIC_VERSION 1 +#define FIRMWARE_MONOTONIC_VERSION 1 diff --git a/core/embed/models/T3T1/versions.h b/core/embed/models/T3T1/versions.h new file mode 100644 index 0000000000..42408b3df8 --- /dev/null +++ b/core/embed/models/T3T1/versions.h @@ -0,0 +1,3 @@ + +#define BOOTLOADER_MONOTONIC_VERSION 1 +#define FIRMWARE_MONOTONIC_VERSION 1 diff --git a/core/embed/models/model_version.h b/core/embed/models/model_version.h new file mode 100644 index 0000000000..71b5b65f7b --- /dev/null +++ b/core/embed/models/model_version.h @@ -0,0 +1,22 @@ +#ifndef MODELS_MODEL_H_ +#define MODELS_MODEL_H_ + +#if defined TREZOR_MODEL_1 +#include "T1B1/versions.h" +#elif defined TREZOR_MODEL_T +#include "T2T1/versions.h" +#elif defined TREZOR_MODEL_R +#include "T2B1/versions.h" +#elif defined TREZOR_MODEL_T3T1 +#include "T3T1/versions.h" +#elif defined TREZOR_MODEL_T3B1 +#include "T3B1/versions.h" +#elif defined TREZOR_MODEL_DISC1 +#include "D001/versions.h" +#elif defined TREZOR_MODEL_DISC2 +#include "D002/versions.h" +#else +#error Unknown Trezor model +#endif + +#endif diff --git a/core/embed/prodtest/header.S b/core/embed/prodtest/header.S index ce84552baa..2c101aa43c 100644 --- a/core/embed/prodtest/header.S +++ b/core/embed/prodtest/header.S @@ -26,7 +26,7 @@ g_header: .byte FIX_VERSION_BUILD // fix_vbuild .word HW_MODEL // type of the designated hardware .byte HW_REVISION // revision of the designated hardware - .byte VERSION_MONOTONIC // monotonic version of the binary + .byte FIRMWARE_MONOTONIC_VERSION // monotonic version of the binary . = . + 2 // reserved . = . + 512 // hash1 ... hash16 . = . + 415 // reserved diff --git a/core/embed/prodtest/version.h b/core/embed/prodtest/version.h index 00f00ff0d8..de0fc71ec1 100644 --- a/core/embed/prodtest/version.h +++ b/core/embed/prodtest/version.h @@ -1,3 +1,7 @@ +#pragma once + +#include "model_version.h" + #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 9 @@ -7,5 +11,3 @@ #define FIX_VERSION_MINOR 2 #define FIX_VERSION_PATCH 0 #define FIX_VERSION_BUILD 0 - -#define VERSION_MONOTONIC 1 diff --git a/core/embed/reflash/header.S b/core/embed/reflash/header.S index ce84552baa..2c101aa43c 100644 --- a/core/embed/reflash/header.S +++ b/core/embed/reflash/header.S @@ -26,7 +26,7 @@ g_header: .byte FIX_VERSION_BUILD // fix_vbuild .word HW_MODEL // type of the designated hardware .byte HW_REVISION // revision of the designated hardware - .byte VERSION_MONOTONIC // monotonic version of the binary + .byte FIRMWARE_MONOTONIC_VERSION // monotonic version of the binary . = . + 2 // reserved . = . + 512 // hash1 ... hash16 . = . + 415 // reserved diff --git a/core/embed/reflash/version.h b/core/embed/reflash/version.h index 2279c0cc06..07bd5a3a10 100644 --- a/core/embed/reflash/version.h +++ b/core/embed/reflash/version.h @@ -1,3 +1,7 @@ +#pragma once + +#include "model_version.h" + #define VERSION_MAJOR 0 #define VERSION_MINOR 1 #define VERSION_PATCH 0 @@ -7,5 +11,3 @@ #define FIX_VERSION_MINOR 1 #define FIX_VERSION_PATCH 0 #define FIX_VERSION_BUILD 0 - -#define VERSION_MONOTONIC 1 From b685820fb35360ec139ac45878a7a3c75d425c52 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 27 Aug 2024 15:25:58 +0200 Subject: [PATCH 589/626] feat(core): implement firmware downgrade protection --- core/SConscript.bootloader | 1 + core/SConscript.bootloader_emu | 1 + core/embed/bootloader/.changelog.d/4133.added | 1 + core/embed/bootloader/main.c | 39 +++++++-------- core/embed/bootloader/messages.c | 13 +++++ core/embed/bootloader/messages.h | 1 + core/embed/bootloader/version_check.c | 48 +++++++++++++++++++ core/embed/bootloader/version_check.h | 40 ++++++++++++++++ core/embed/trezorhal/monoctr.h | 4 ++ core/embed/trezorhal/stm32f4/monoctr.c | 26 +++++++--- core/embed/trezorhal/stm32u5/monoctr.c | 14 ++++++ core/embed/trezorhal/unix/monoctr.c | 26 +++++++--- 12 files changed, 183 insertions(+), 31 deletions(-) create mode 100644 core/embed/bootloader/.changelog.d/4133.added create mode 100644 core/embed/bootloader/version_check.c create mode 100644 core/embed/bootloader/version_check.h diff --git a/core/SConscript.bootloader b/core/SConscript.bootloader index dd0060af83..e5226cd313 100644 --- a/core/SConscript.bootloader +++ b/core/SConscript.bootloader @@ -168,6 +168,7 @@ SOURCE_BOOTLOADER = [ 'embed/bootloader/main.c', 'embed/bootloader/messages.c', 'embed/bootloader/protob/messages.pb.c', + 'embed/bootloader/version_check.c', ] diff --git a/core/SConscript.bootloader_emu b/core/SConscript.bootloader_emu index 009415fcf8..9d0627cbcc 100644 --- a/core/SConscript.bootloader_emu +++ b/core/SConscript.bootloader_emu @@ -140,6 +140,7 @@ SOURCE_BOOTLOADER = [ 'embed/bootloader/main.c', 'embed/bootloader/messages.c', 'embed/bootloader/emulator.c', + 'embed/bootloader/version_check.c', 'embed/bootloader/protob/messages.pb.c', ] diff --git a/core/embed/bootloader/.changelog.d/4133.added b/core/embed/bootloader/.changelog.d/4133.added new file mode 100644 index 0000000000..b808dcad60 --- /dev/null +++ b/core/embed/bootloader/.changelog.d/4133.added @@ -0,0 +1 @@ +Added firmware downgrade protection diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index 23d0ee9133..d93ec0cf4a 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -72,6 +72,7 @@ #include "monoctr.h" #include "rust_ui.h" #include "unit_variant.h" +#include "version_check.h" #ifdef TREZOR_EMULATOR #include "emulator.h" @@ -261,22 +262,6 @@ static secbool check_vendor_header_lock(const vendor_header *const vhdr) { return sectrue * (0 == memcmp(lock, hash, 32)); } -// protection against bootloader downgrade - -#if PRODUCTION && !defined STM32U5 - -static void check_bootloader_version(void) { - ensure( - monoctr_write(MONOCTR_BOOTLOADER_VERSION, BOOTLOADER_MONOTONIC_VERSION), - NULL); - uint8_t val = 0; - ensure(monoctr_read(MONOCTR_BOOTLOADER_VERSION, &val), NULL); - ensure(sectrue * (val == BOOTLOADER_MONOTONIC_VERSION), - "Bootloader downgrade protection"); -} - -#endif - void failed_jump_to_firmware(void) { error_shutdown("(glitch)"); } void real_jump_to_firmware(void) { @@ -304,6 +289,10 @@ void real_jump_to_firmware(void) { ensure(check_image_header_sig(hdr, vhdr.vsig_m, vhdr.vsig_n, vhdr.vpub), "Firmware is corrupted"); + ensure(check_firmware_min_version(hdr->version), + "Firmware downgrade protection"); + ensure_firmware_min_version(hdr->version); + ensure(check_image_contents(hdr, IMAGE_HEADER_SIZE + vhdr.hdrlen, &FIRMWARE_AREA), "Firmware is corrupted"); @@ -422,6 +411,8 @@ int bootloader_main(void) { volatile secbool vhdr_lock_ok = secfalse; volatile secbool img_hdr_ok = secfalse; volatile secbool model_ok = secfalse; + volatile secbool signatures_ok = secfalse; + volatile secbool version_ok = secfalse; volatile secbool header_present = secfalse; volatile secbool firmware_present = secfalse; volatile secbool firmware_present_backup = secfalse; @@ -448,12 +439,22 @@ int bootloader_main(void) { if (sectrue == img_hdr_ok) { model_ok = check_image_model(hdr); } + if (sectrue == model_ok) { - header_present = + signatures_ok = check_image_header_sig(hdr, vhdr.vsig_m, vhdr.vsig_n, vhdr.vpub); } + if (sectrue == signatures_ok) { + version_ok = check_firmware_min_version(hdr->monotonic); + } + + if (sectrue == version_ok) { + header_present = version_ok; + } + if (sectrue == header_present) { + ensure_firmware_min_version(hdr->monotonic); firmware_present = check_image_contents( hdr, IMAGE_HEADER_SIZE + vhdr.hdrlen, &FIRMWARE_AREA); firmware_present_backup = firmware_present; @@ -477,12 +478,12 @@ int bootloader_main(void) { #if PRODUCTION && !defined STM32U5 // for STM32U5, this check is moved to boardloader - check_bootloader_version(); + ensure_bootloader_min_version(); #endif switch (bootargs_get_command()) { case BOOT_COMMAND_STOP_AND_WAIT: - // firmare requested to stay in bootloader + // firmware requested to stay in bootloader stay_in_bootloader = sectrue; break; case BOOT_COMMAND_INSTALL_UPGRADE: diff --git a/core/embed/bootloader/messages.c b/core/embed/bootloader/messages.c index 568cafdb26..5006afb856 100644 --- a/core/embed/bootloader/messages.c +++ b/core/embed/bootloader/messages.c @@ -37,6 +37,7 @@ #include "bootui.h" #include "messages.h" #include "rust_ui.h" +#include "version_check.h" #include "memzero.h" #include "model.h" @@ -472,6 +473,10 @@ static void detect_installation(const vendor_header *current_vhdr, *is_new = sectrue; return; } + if (sectrue != check_firmware_min_version(current_hdr->monotonic)) { + *is_new = sectrue; + return; + } if (sectrue != check_image_header_sig(current_hdr, current_vhdr->vsig_m, current_vhdr->vsig_n, current_vhdr->vpub)) { @@ -574,6 +579,14 @@ int process_msg_FirmwareUpload(uint8_t iface_num, uint32_t msg_size, return UPLOAD_ERR_INVALID_IMAGE_HEADER_SIG; } + if (sectrue != check_firmware_min_version(received_hdr->monotonic)) { + MSG_SEND_INIT(Failure); + MSG_SEND_ASSIGN_VALUE(code, FailureType_Failure_ProcessError); + MSG_SEND_ASSIGN_STRING(message, "Cannot downgrade to this version"); + MSG_SEND(Failure); + return UPLOAD_ERR_INVALID_IMAGE_HEADER_VERSION; + } + memcpy(&hdr, received_hdr, sizeof(hdr)); size_t headers_end = IMAGE_HEADER_SIZE + vhdr.hdrlen; diff --git a/core/embed/bootloader/messages.h b/core/embed/bootloader/messages.h index d1ff9a2f08..ad8e3f4211 100644 --- a/core/embed/bootloader/messages.h +++ b/core/embed/bootloader/messages.h @@ -39,6 +39,7 @@ enum { UPLOAD_ERR_INVALID_IMAGE_HEADER = -4, UPLOAD_ERR_INVALID_IMAGE_MODEL = -5, UPLOAD_ERR_INVALID_IMAGE_HEADER_SIG = -6, + UPLOAD_ERR_INVALID_IMAGE_HEADER_VERSION = -16, UPLOAD_ERR_USER_ABORT = -7, UPLOAD_ERR_FIRMWARE_TOO_BIG = -8, UPLOAD_ERR_INVALID_CHUNK_HASH = -9, diff --git a/core/embed/bootloader/version_check.c b/core/embed/bootloader/version_check.c new file mode 100644 index 0000000000..ae7d225154 --- /dev/null +++ b/core/embed/bootloader/version_check.c @@ -0,0 +1,48 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <string.h> + +#include "version_check.h" + +#include "error_handling.h" +#include "model_version.h" +#include "monoctr.h" + +void ensure_bootloader_min_version(void) { + monoctr_write(MONOCTR_BOOTLOADER_VERSION, BOOTLOADER_MONOTONIC_VERSION); + uint8_t val = 0; + ensure(monoctr_read(MONOCTR_BOOTLOADER_VERSION, &val), NULL); + ensure(sectrue * (val == BOOTLOADER_MONOTONIC_VERSION), + "Bootloader downgrade protection"); +} + +secbool check_firmware_min_version(uint8_t check_version) { + uint8_t min_version = 0; + ensure(monoctr_read(MONOCTR_FIRMWARE_VERSION, &min_version), "monoctr read"); + + return (check_version >= min_version) * sectrue; +} + +void ensure_firmware_min_version(uint8_t version) { + monoctr_write(MONOCTR_FIRMWARE_VERSION, version); + uint8_t val = 0; + ensure(monoctr_read(MONOCTR_FIRMWARE_VERSION, &val), NULL); + ensure(sectrue * (val == version), "Firmware downgrade protection"); +} diff --git a/core/embed/bootloader/version_check.h b/core/embed/bootloader/version_check.h new file mode 100644 index 0000000000..a7011808b5 --- /dev/null +++ b/core/embed/bootloader/version_check.h @@ -0,0 +1,40 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <stdint.h> +#include "secbool.h" + +// Protection against bootloader downgrade + +// Ensures bootloader version is stored in monotonic counter +// If the version cannot be written, the function will shutdown the device +void ensure_bootloader_min_version(void); + +// Protection against firmware downgrade + +// This functions checks if the firmware version is at least the minimum +// required version, returns sectrue if check_version is higher or equal to the +// stored version +secbool check_firmware_min_version(uint8_t check_version); + +// Ensures firmware version is stored in monotonic counter +// If the version cannot be written, the function will shutdown the device +void ensure_firmware_min_version(uint8_t version); diff --git a/core/embed/trezorhal/monoctr.h b/core/embed/trezorhal/monoctr.h index 0d5e2bcfd1..296b573dbf 100644 --- a/core/embed/trezorhal/monoctr.h +++ b/core/embed/trezorhal/monoctr.h @@ -32,8 +32,12 @@ typedef enum { MONOCTR_FIRMWARE_VERSION = 1, } monoctr_type_t; +// Write a new value to the monotonic counter +// Returns sectrue on success, when value is lower than the current value +// the write fails and returns secfalse secbool monoctr_write(monoctr_type_t type, uint8_t value); +// Read the current value of the monotonic counter secbool monoctr_read(monoctr_type_t type, uint8_t* value); #endif diff --git a/core/embed/trezorhal/stm32f4/monoctr.c b/core/embed/trezorhal/stm32f4/monoctr.c index a30e13d907..70b58faa9d 100644 --- a/core/embed/trezorhal/stm32f4/monoctr.c +++ b/core/embed/trezorhal/stm32f4/monoctr.c @@ -41,6 +41,26 @@ secbool monoctr_write(monoctr_type_t type, uint8_t value) { return secfalse; } + int block = get_otp_block(type); + + if (block < 0) { + return secfalse; + } + + uint8_t current_value = 0; + + if (sectrue != monoctr_read(type, ¤t_value)) { + return secfalse; + } + + if (value < current_value) { + return secfalse; + } + + if (value == current_value) { + return sectrue; + } + uint8_t bits[FLASH_OTP_BLOCK_SIZE]; for (int i = 0; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { if (i < value) { @@ -50,12 +70,6 @@ secbool monoctr_write(monoctr_type_t type, uint8_t value) { } } - int block = get_otp_block(type); - - if (block < 0) { - return secfalse; - } - ensure(flash_otp_write(block, 0, bits, FLASH_OTP_BLOCK_SIZE), NULL); #endif diff --git a/core/embed/trezorhal/stm32u5/monoctr.c b/core/embed/trezorhal/stm32u5/monoctr.c index e9db4eb273..6504371fa2 100644 --- a/core/embed/trezorhal/stm32u5/monoctr.c +++ b/core/embed/trezorhal/stm32u5/monoctr.c @@ -44,6 +44,20 @@ secbool monoctr_write(monoctr_type_t type, uint8_t value) { return secfalse; } + uint8_t current_value = 0; + + if (sectrue != monoctr_read(type, ¤t_value)) { + return secfalse; + } + + if (value < current_value) { + return secfalse; + } + + if (value == current_value) { + return sectrue; + } + for (int i = 0; i < value; i++) { uint32_t data[4] = {0}; secret_write((uint8_t *)data, offset + i * 16, 16); diff --git a/core/embed/trezorhal/unix/monoctr.c b/core/embed/trezorhal/unix/monoctr.c index e1ddf7a358..a8a140db60 100644 --- a/core/embed/trezorhal/unix/monoctr.c +++ b/core/embed/trezorhal/unix/monoctr.c @@ -38,6 +38,26 @@ secbool monoctr_write(monoctr_type_t type, uint8_t value) { return secfalse; } + int block = get_otp_block(type); + + if (block < 0) { + return secfalse; + } + + uint8_t current_value = 0; + + if (sectrue != monoctr_read(type, ¤t_value)) { + return secfalse; + } + + if (value < current_value) { + return secfalse; + } + + if (value == current_value) { + return sectrue; + } + uint8_t bits[FLASH_OTP_BLOCK_SIZE]; for (int i = 0; i < FLASH_OTP_BLOCK_SIZE * 8; i++) { if (i < value) { @@ -47,12 +67,6 @@ secbool monoctr_write(monoctr_type_t type, uint8_t value) { } } - int block = get_otp_block(type); - - if (block < 0) { - return secfalse; - } - ensure(flash_otp_write(block, 0, bits, FLASH_OTP_BLOCK_SIZE), NULL); return sectrue; From 708b0274f5c9ad90144774681862a82411b5c2ec Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Tue, 27 Aug 2024 16:48:12 +0200 Subject: [PATCH 590/626] chore(core): bump monotonic versions [no changelog] --- core/embed/models/T2B1/versions.h | 4 ++-- core/embed/models/T2T1/versions.h | 4 ++-- core/embed/models/T3B1/versions.h | 2 +- core/embed/models/T3T1/versions.h | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/embed/models/T2B1/versions.h b/core/embed/models/T2B1/versions.h index 5ccdcb89ec..6329ad6138 100644 --- a/core/embed/models/T2B1/versions.h +++ b/core/embed/models/T2B1/versions.h @@ -1,3 +1,3 @@ -#define BOOTLOADER_MONOTONIC_VERSION 2 -#define FIRMWARE_MONOTONIC_VERSION 1 +#define BOOTLOADER_MONOTONIC_VERSION 3 +#define FIRMWARE_MONOTONIC_VERSION 2 diff --git a/core/embed/models/T2T1/versions.h b/core/embed/models/T2T1/versions.h index 42408b3df8..546ca6a16b 100644 --- a/core/embed/models/T2T1/versions.h +++ b/core/embed/models/T2T1/versions.h @@ -1,3 +1,3 @@ -#define BOOTLOADER_MONOTONIC_VERSION 1 -#define FIRMWARE_MONOTONIC_VERSION 1 +#define BOOTLOADER_MONOTONIC_VERSION 2 +#define FIRMWARE_MONOTONIC_VERSION 2 diff --git a/core/embed/models/T3B1/versions.h b/core/embed/models/T3B1/versions.h index 42408b3df8..5ccdcb89ec 100644 --- a/core/embed/models/T3B1/versions.h +++ b/core/embed/models/T3B1/versions.h @@ -1,3 +1,3 @@ -#define BOOTLOADER_MONOTONIC_VERSION 1 +#define BOOTLOADER_MONOTONIC_VERSION 2 #define FIRMWARE_MONOTONIC_VERSION 1 diff --git a/core/embed/models/T3T1/versions.h b/core/embed/models/T3T1/versions.h index 42408b3df8..546ca6a16b 100644 --- a/core/embed/models/T3T1/versions.h +++ b/core/embed/models/T3T1/versions.h @@ -1,3 +1,3 @@ -#define BOOTLOADER_MONOTONIC_VERSION 1 -#define FIRMWARE_MONOTONIC_VERSION 1 +#define BOOTLOADER_MONOTONIC_VERSION 2 +#define FIRMWARE_MONOTONIC_VERSION 2 From c5f9fadbd1bd1202ec77491be91fb51154502dee Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Mon, 26 Aug 2024 17:10:04 +0200 Subject: [PATCH 591/626] fix(core/mercury): show remaining shares This commit enables showing "Remaining shares" from the context menu during recovery process. This is only shown during super-shamir. --- core/.changelog.d/4142.fixed | 1 + .../model_mercury/flow/continue_recovery.rs | 306 ++++++++++++------ .../embed/rust/src/ui/model_mercury/layout.rs | 33 +- core/mocks/generated/trezorui2.pyi | 9 +- .../management/recovery_device/homescreen.py | 30 +- .../apps/management/recovery_device/layout.py | 18 +- .../src/trezor/ui/layouts/mercury/recovery.py | 48 ++- core/src/trezor/ui/layouts/tr/recovery.py | 7 +- core/src/trezor/ui/layouts/tt/recovery.py | 38 ++- .../test_recovery_slip39_advanced.py | 1 - tests/input_flows_helpers.py | 13 +- tests/ui_tests/fixtures.json | 10 + 12 files changed, 314 insertions(+), 200 deletions(-) create mode 100644 core/.changelog.d/4142.fixed diff --git a/core/.changelog.d/4142.fixed b/core/.changelog.d/4142.fixed new file mode 100644 index 0000000000..47a0ffd1f7 --- /dev/null +++ b/core/.changelog.d/4142.fixed @@ -0,0 +1 @@ +[T3T1] Added missing info about remaining shares in super-shamir recovery. diff --git a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs index 2e4f4b2be6..6e6b8c5bf8 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/continue_recovery.rs @@ -1,6 +1,6 @@ use crate::{ error, - micropython::{map::Map, obj::Obj, qstr::Qstr, util}, + micropython::{iter::IterBuf, map::Map, obj::Obj, qstr::Qstr, util}, strutil::TString, translations::TR, ui::{ @@ -8,12 +8,14 @@ use crate::{ component::{ button_request::ButtonRequestExt, swipe_detect::SwipeSettings, - text::paragraphs::{Paragraph, ParagraphSource, ParagraphVecShort, Paragraphs, VecExt}, + text::paragraphs::{ + Paragraph, ParagraphSource, ParagraphVecLong, ParagraphVecShort, VecExt, + }, ComponentExt, SwipeDirection, }, flow::{ base::{DecisionBuilder as _, StateChange}, - FlowMsg, FlowState, SwipeFlow, + FlowMsg, FlowState, SwipeFlow, SwipePage, }, layout::{obj::LayoutObj, util::RecoveryType}, }, @@ -40,6 +42,15 @@ pub enum ContinueRecoveryBetweenShares { CancelConfirm, } +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum ContinueRecoveryBetweenSharesAdvanced { + Main, + Menu, + CancelIntro, + CancelConfirm, + RemainingShares, +} + impl FlowState for ContinueRecoveryBeforeShares { #[inline] fn index(&'static self) -> usize { @@ -96,56 +107,99 @@ impl FlowState for ContinueRecoveryBetweenShares { } } +impl FlowState for ContinueRecoveryBetweenSharesAdvanced { + #[inline] + fn index(&'static self) -> usize { + *self as usize + } + + fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { + match (self, direction) { + (Self::Main, SwipeDirection::Left) => Self::Menu.swipe(direction), + (Self::Menu, SwipeDirection::Right) => Self::Main.swipe(direction), + (Self::Main, SwipeDirection::Up) => self.return_msg(FlowMsg::Confirmed), + (Self::CancelIntro, SwipeDirection::Up) => Self::CancelConfirm.swipe(direction), + (Self::CancelIntro, SwipeDirection::Right) => Self::Menu.swipe(direction), + (Self::CancelConfirm, SwipeDirection::Down) => Self::CancelIntro.swipe(direction), + (Self::RemainingShares, SwipeDirection::Right) => Self::Menu.swipe(direction), + _ => self.do_nothing(), + } + } + + fn handle_event(&'static self, msg: FlowMsg) -> StateChange { + match (self, msg) { + (Self::Main, FlowMsg::Info) => Self::Menu.transit(), + (Self::Menu, FlowMsg::Choice(0)) => Self::RemainingShares.transit(), + (Self::Menu, FlowMsg::Choice(1)) => Self::CancelIntro.swipe_left(), + (Self::Menu, FlowMsg::Cancelled) => Self::Main.swipe_right(), + (Self::CancelIntro, FlowMsg::Cancelled) => Self::Menu.transit(), + (Self::CancelConfirm, FlowMsg::Cancelled) => Self::CancelIntro.swipe_right(), + (Self::CancelConfirm, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Cancelled), + (Self::RemainingShares, FlowMsg::Cancelled) => Self::Menu.transit(), + _ => self.do_nothing(), + } + } +} + #[allow(clippy::not_unsafe_ptr_arg_deref)] pub extern "C" fn new_continue_recovery(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - unsafe { - util::try_with_args_and_kwargs(n_args, args, kwargs, ContinueRecoveryBeforeShares::new_obj) - } + unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, new_obj) } } -impl ContinueRecoveryBeforeShares { - fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { - let first_screen: bool = kwargs.get(Qstr::MP_QSTR_first_screen)?.try_into()?; - let recovery_type: RecoveryType = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; - let text: TString = kwargs.get(Qstr::MP_QSTR_text)?.try_into()?; // #shares entered - let subtext: Option<TString> = kwargs.get(Qstr::MP_QSTR_subtext)?.try_into_option()?; // #shares remaining - - let (title, cancel_btn, cancel_title, cancel_intro) = match recovery_type { - RecoveryType::Normal => ( - TR::recovery__title, - TR::recovery__title_cancel_recovery, - TR::recovery__title_cancel_recovery, - TR::recovery__wanna_cancel_recovery, - ), - _ => ( - TR::recovery__title_dry_run, - TR::recovery__cancel_dry_run, - TR::recovery__title_cancel_dry_run, - TR::recovery__wanna_cancel_dry_run, - ), - }; - - let mut pars = ParagraphVecShort::new(); - let footer_instruction; - let footer_description; - if first_screen { - pars.add(Paragraph::new( - &theme::TEXT_MAIN_GREY_EXTRA_LIGHT, - TR::recovery__enter_each_word, - )); - footer_instruction = TR::instructions__swipe_up.into(); - footer_description = None; - } else { - pars.add(Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, text)); - if let Some(sub) = subtext { - pars.add(Paragraph::new(&theme::TEXT_SUB_GREY, sub)); - } - footer_instruction = TR::instructions__swipe_up.into(); - footer_description = Some(TR::instructions__enter_next_share.into()); +fn new_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { + let first_screen: bool = kwargs.get(Qstr::MP_QSTR_first_screen)?.try_into()?; + let recovery_type: RecoveryType = kwargs.get(Qstr::MP_QSTR_recovery_type)?.try_into()?; + let text: TString = kwargs.get(Qstr::MP_QSTR_text)?.try_into()?; // #shares entered + let subtext: Option<TString> = kwargs.get(Qstr::MP_QSTR_subtext)?.try_into_option()?; // #shares remaining + let pages: Option<Obj> = kwargs.get(Qstr::MP_QSTR_pages)?.try_into_option()?; // info about remaining shares + + let mut pars_show_shares = ParagraphVecLong::new(); + if let Some(pages) = pages { + let pages_iterable: Obj = pages; + for page in IterBuf::new().try_iterate(pages_iterable)? { + let [title, description]: [TString; 2] = util::iter_into_array(page)?; + pars_show_shares + .add(Paragraph::new(&theme::TEXT_SUB_GREY, title)) + .add(Paragraph::new(&theme::TEXT_MONO_GREY_LIGHT, description).break_after()); } + } + + let (title, cancel_btn, cancel_title, cancel_intro) = match recovery_type { + RecoveryType::Normal => ( + TR::recovery__title, + TR::recovery__title_cancel_recovery, + TR::recovery__title_cancel_recovery, + TR::recovery__wanna_cancel_recovery, + ), + _ => ( + TR::recovery__title_dry_run, + TR::recovery__cancel_dry_run, + TR::recovery__title_cancel_dry_run, + TR::recovery__wanna_cancel_dry_run, + ), + }; - let paragraphs_main = Paragraphs::new(pars); - let content_main = Frame::left_aligned(title.into(), SwipeContent::new(paragraphs_main)) + let mut pars_main = ParagraphVecShort::new(); + let footer_instruction; + let footer_description; + if first_screen { + pars_main.add(Paragraph::new( + &theme::TEXT_MAIN_GREY_EXTRA_LIGHT, + TR::recovery__enter_each_word, + )); + footer_instruction = TR::instructions__swipe_up.into(); + footer_description = None; + } else { + pars_main.add(Paragraph::new(&theme::TEXT_MAIN_GREY_EXTRA_LIGHT, text)); + if let Some(sub) = subtext { + pars_main.add(Paragraph::new(&theme::TEXT_SUB_GREY, sub)); + } + footer_instruction = TR::instructions__swipe_up.into(); + footer_description = Some(TR::instructions__enter_next_share.into()); + } + + let content_main = + Frame::left_aligned(title.into(), SwipeContent::new(pars_main.into_paragraphs())) .with_subtitle(TR::words__instructions.into()) .with_menu_button() .with_footer(footer_instruction, footer_description) @@ -155,8 +209,47 @@ impl ContinueRecoveryBeforeShares { .repeated_button_request(ButtonRequest::new( ButtonRequestCode::RecoveryHomepage, "recovery".into(), + )) + .with_pages(|_| 1); + + let paragraphs_cancel = ParagraphVecShort::from_iter([ + Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, cancel_intro).with_bottom_padding(17), + Paragraph::new(&theme::TEXT_WARNING, TR::recovery__progress_will_be_lost), + ]) + .into_paragraphs(); + let content_cancel_intro = + Frame::left_aligned(cancel_title.into(), SwipeContent::new(paragraphs_cancel)) + .with_cancel_button() + .with_footer( + TR::instructions__swipe_up.into(), + Some(TR::words__continue_anyway.into()), + ) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }) + .repeated_button_request(ButtonRequest::new( + ButtonRequestCode::ProtectCall, + "abort_recovery".into(), )); + let content_cancel_confirm = Frame::left_aligned( + cancel_title.into(), + SwipeContent::new(PromptScreen::new_tap_to_cancel()), + ) + .with_cancel_button() + .with_footer(TR::instructions__tap_to_confirm.into(), None) + .with_swipe(SwipeDirection::Down, SwipeSettings::default()) + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), + FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), + _ => None, + }); + + let res = if first_screen { let content_menu = Frame::left_aligned( TString::empty(), VerticalMenu::empty().danger(theme::ICON_CANCEL, cancel_btn.into()), @@ -168,60 +261,81 @@ impl ContinueRecoveryBeforeShares { FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - let paragraphs_cancel = ParagraphVecShort::from_iter([ - Paragraph::new(&theme::TEXT_MAIN_GREY_LIGHT, cancel_intro).with_bottom_padding(17), - Paragraph::new(&theme::TEXT_WARNING, TR::recovery__progress_will_be_lost), - ]) - .into_paragraphs(); - let content_cancel_intro = - Frame::left_aligned(cancel_title.into(), SwipeContent::new(paragraphs_cancel)) - .with_cancel_button() - .with_footer( - TR::instructions__swipe_up.into(), - Some(TR::words__continue_anyway.into()), + SwipeFlow::new(&ContinueRecoveryBeforeShares::Main)? + .with_page(&ContinueRecoveryBeforeShares::Main, content_main)? + .with_page(&ContinueRecoveryBeforeShares::Menu, content_menu)? + } else if pars_show_shares.is_empty() { + let content_menu = Frame::left_aligned( + TString::empty(), + VerticalMenu::empty().danger(theme::ICON_CANCEL, cancel_btn.into()), + ) + .with_cancel_button() + .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) + .map(|msg| match msg { + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), + }); + + SwipeFlow::new(&ContinueRecoveryBetweenShares::Main)? + .with_page(&ContinueRecoveryBetweenShares::Main, content_main)? + .with_page(&ContinueRecoveryBetweenShares::Menu, content_menu)? + .with_page( + &ContinueRecoveryBetweenShares::CancelIntro, + content_cancel_intro, + )? + .with_page( + &ContinueRecoveryBetweenShares::CancelConfirm, + content_cancel_confirm, + )? + } else { + let content_menu = Frame::left_aligned( + TString::empty(), + VerticalMenu::empty() + .item( + theme::ICON_CHEVRON_RIGHT, + TR::recovery__title_remaining_shares.into(), ) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()) - .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) - .map(|msg| match msg { - FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), - _ => None, - }) - .repeated_button_request(ButtonRequest::new( - ButtonRequestCode::ProtectCall, - "abort_recovery".into(), - )); - - let content_cancel_confirm = Frame::left_aligned( - cancel_title.into(), - SwipeContent::new(PromptScreen::new_tap_to_cancel()), + .danger(theme::ICON_CANCEL, cancel_btn.into()), ) .with_cancel_button() - .with_footer(TR::instructions__tap_to_confirm.into(), None) - .with_swipe(SwipeDirection::Down, SwipeSettings::default()) .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(|msg| match msg { - FrameMsg::Content(PromptMsg::Confirmed) => Some(FlowMsg::Confirmed), - FrameMsg::Button(FlowMsg::Cancelled) => Some(FlowMsg::Cancelled), - _ => None, + FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => Some(FlowMsg::Choice(i)), + FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - let res = if first_screen { - SwipeFlow::new(&ContinueRecoveryBeforeShares::Main)? - .with_page(&ContinueRecoveryBeforeShares::Main, content_main)? - .with_page(&ContinueRecoveryBeforeShares::Menu, content_menu)? - } else { - SwipeFlow::new(&ContinueRecoveryBetweenShares::Main)? - .with_page(&ContinueRecoveryBetweenShares::Main, content_main)? - .with_page(&ContinueRecoveryBetweenShares::Menu, content_menu)? - .with_page( - &ContinueRecoveryBetweenShares::CancelIntro, - content_cancel_intro, - )? - .with_page( - &ContinueRecoveryBetweenShares::CancelConfirm, - content_cancel_confirm, - )? - }; - Ok(LayoutObj::new(res)?.into()) - } + let n_remaining_shares = pars_show_shares.len(); + let content_remaining_shares = Frame::left_aligned( + TR::recovery__title_remaining_shares.into(), + SwipeContent::new(SwipePage::vertical(pars_show_shares.into_paragraphs())), + ) + .with_cancel_button() + // .with_footer(TR::instructions__swipe_up.into(), None) + .with_swipe(SwipeDirection::Up, SwipeSettings::default()) + .with_swipe(SwipeDirection::Left, SwipeSettings::default()) + .with_vertical_pages() + .map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Cancelled)) + .repeated_button_request(ButtonRequest::new( + ButtonRequestCode::Other, + "show_shares".into(), + )) + .with_pages(move |_| n_remaining_shares); + + SwipeFlow::new(&ContinueRecoveryBetweenSharesAdvanced::Main)? + .with_page(&ContinueRecoveryBetweenSharesAdvanced::Main, content_main)? + .with_page(&ContinueRecoveryBetweenSharesAdvanced::Menu, content_menu)? + .with_page( + &ContinueRecoveryBetweenSharesAdvanced::CancelIntro, + content_cancel_intro, + )? + .with_page( + &ContinueRecoveryBetweenSharesAdvanced::CancelConfirm, + content_cancel_confirm, + )? + .with_page( + &ContinueRecoveryBetweenSharesAdvanced::RemainingShares, + content_remaining_shares, + )? + }; + Ok(LayoutObj::new(res)?.into()) } diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 13f2a4eb2f..57375acb51 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1013,31 +1013,6 @@ extern "C" fn new_show_group_share_success( unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } } -extern "C" fn new_show_remaining_shares(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { - let block = move |_args: &[Obj], kwargs: &Map| { - let pages_iterable: Obj = kwargs.get(Qstr::MP_QSTR_pages)?; - - let mut paragraphs = ParagraphVecLong::new(); - for page in IterBuf::new().try_iterate(pages_iterable)? { - let [title, description]: [TString; 2] = util::iter_into_array(page)?; - paragraphs - .add(Paragraph::new(&theme::TEXT_DEMIBOLD, title)) - .add(Paragraph::new(&theme::TEXT_NORMAL, description).break_after()); - } - - let obj = LayoutObj::new(SwipeUpScreen::new( - Frame::left_aligned( - TR::recovery__title_remaining_shares.into(), - SwipeContent::new(paragraphs.into_paragraphs()), - ) - .with_footer(TR::instructions__swipe_up.into(), None) - .with_swipe(SwipeDirection::Up, SwipeSettings::default()), - ))?; - Ok(obj.into()) - }; - unsafe { util::try_with_args_and_kwargs(n_args, args, kwargs, block) } -} - extern "C" fn new_show_progress(n_args: usize, args: *const Obj, kwargs: *mut Map) -> Obj { let block = move |_args: &[Obj], kwargs: &Map| { let description: TString = kwargs.get(Qstr::MP_QSTR_description)?.try_into()?; @@ -1594,6 +1569,7 @@ pub static mp_module_trezorui2: Module = obj_module! { /// recovery_type: RecoveryType, /// text: str, /// subtext: str | None = None, + /// pages: Iterable[tuple[str, str]] | None = None, /// ) -> LayoutObj[UiResult]: /// """Device recovery homescreen.""" Qstr::MP_QSTR_flow_continue_recovery => obj_fn_kw!(0, flow::continue_recovery::new_continue_recovery).as_obj(), @@ -1613,13 +1589,6 @@ pub static mp_module_trezorui2: Module = obj_module! { /// """Shown after successfully finishing a group.""" Qstr::MP_QSTR_show_group_share_success => obj_fn_kw!(0, new_show_group_share_success).as_obj(), - /// def show_remaining_shares( - /// *, - /// pages: Iterable[tuple[str, str]], - /// ) -> LayoutObj[UiResult]: - /// """Shows SLIP39 state after info button is pressed on `confirm_recovery`.""" - Qstr::MP_QSTR_show_remaining_shares => obj_fn_kw!(0, new_show_remaining_shares).as_obj(), - /// def show_progress( /// *, /// title: str, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index 8f5b25ba45..f3b8ea88c1 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -452,6 +452,7 @@ def flow_continue_recovery( recovery_type: RecoveryType, text: str, subtext: str | None = None, + pages: Iterable[tuple[str, str]] | None = None, ) -> LayoutObj[UiResult]: """Device recovery homescreen.""" @@ -473,14 +474,6 @@ def show_group_share_success( """Shown after successfully finishing a group.""" -# rust/src/ui/model_mercury/layout.rs -def show_remaining_shares( - *, - pages: Iterable[tuple[str, str]], -) -> LayoutObj[UiResult]: - """Shows SLIP39 state after info button is pressed on `confirm_recovery`.""" - - # rust/src/ui/model_mercury/layout.rs def show_progress( *, diff --git a/core/src/apps/management/recovery_device/homescreen.py b/core/src/apps/management/recovery_device/homescreen.py index 375e4704ac..f78bd38e7f 100644 --- a/core/src/apps/management/recovery_device/homescreen.py +++ b/core/src/apps/management/recovery_device/homescreen.py @@ -13,6 +13,8 @@ if TYPE_CHECKING: from trezor.enums import BackupType, RecoveryType + from .layout import RemainingSharesInfo + async def recovery_homescreen() -> None: from trezor import workflow @@ -297,7 +299,7 @@ async def _request_share_next_screen() -> None: await layout.homescreen_dialog( TR.buttons__enter, TR.recovery__more_shares_needed, - info_func=_show_remaining_groups_and_shares, + remaining_shares_info=_get_remaining_groups_and_shares(), ) else: still_needed_shares = remaining[0] @@ -315,21 +317,21 @@ async def _request_share_next_screen() -> None: await layout.homescreen_dialog(TR.buttons__enter_share, entered, needed) -async def _show_remaining_groups_and_shares() -> None: +def _get_remaining_groups_and_shares() -> "RemainingSharesInfo": """ - Show info dialog for Slip39 Advanced - what shares are to be entered. + Prepare data for Slip39 Advanced - what shares are to be entered. """ from trezor.crypto import slip39 shares_remaining = storage_recovery.fetch_slip39_remaining_shares() - # should be stored at this point - assert shares_remaining + assert shares_remaining # should be stored at this point groups = set() first_entered_index = -1 for i, group_count in enumerate(shares_remaining): if group_count < slip39.MAX_SHARE_COUNT: first_entered_index = i + break share = None for index, remaining in enumerate(shares_remaining): @@ -337,15 +339,15 @@ async def _show_remaining_groups_and_shares() -> None: m = storage_recovery_shares.fetch_group(index)[0] if not share: share = slip39.decode_mnemonic(m) - identifier = m.split(" ")[0:3] - groups.add((remaining, tuple(identifier))) + identifier = tuple(m.split(" ")[0:3]) + groups.add(identifier) elif remaining == slip39.MAX_SHARE_COUNT: # no shares yet - identifier = storage_recovery_shares.fetch_group(first_entered_index)[ - 0 - ].split(" ")[0:2] - groups.add((remaining, tuple(identifier))) + identifier = tuple( + storage_recovery_shares.fetch_group(first_entered_index)[0].split(" ")[ + 0:2 + ] + ) + groups.add(identifier) assert share # share needs to be set - return await layout.show_remaining_shares( - groups, shares_remaining, share.group_threshold - ) + return groups, shares_remaining, share.group_threshold diff --git a/core/src/apps/management/recovery_device/layout.py b/core/src/apps/management/recovery_device/layout.py index d602b98a8e..db2f0a5880 100644 --- a/core/src/apps/management/recovery_device/layout.py +++ b/core/src/apps/management/recovery_device/layout.py @@ -6,16 +6,19 @@ request_word_count, show_group_share_success, show_recovery_warning, - show_remaining_shares, ) from apps.common import backup_types if TYPE_CHECKING: - from typing import Callable - from trezor.enums import BackupType + # RemainingSharesInfo represents the data structure for remaining shares in SLIP-39 recovery: + # - Set of tuples, each containing 2 or 3 words identifying a group + # - List of remaining share counts for each group + # - Group threshold (minimum number of groups required) + RemainingSharesInfo = tuple[set[tuple[str, ...]], list[int], int] + async def request_mnemonic( word_count: int, backup_type: BackupType | None @@ -123,8 +126,8 @@ async def homescreen_dialog( button_label: str, text: str, subtext: str | None = None, - info_func: Callable | None = None, show_info: bool = False, + remaining_shares_info: "RemainingSharesInfo | None" = None, ) -> None: import storage.recovery as storage_recovery from trezor.ui.layouts.recovery import continue_recovery @@ -133,6 +136,11 @@ async def homescreen_dialog( recovery_type = storage_recovery.get_type() if not await continue_recovery( - button_label, text, subtext, info_func, recovery_type, show_info + button_label, + text, + subtext, + recovery_type, + show_info, + remaining_shares_info, ): raise RecoveryAborted diff --git a/core/src/trezor/ui/layouts/mercury/recovery.py b/core/src/trezor/ui/layouts/mercury/recovery.py index 1399d01ad7..c765744202 100644 --- a/core/src/trezor/ui/layouts/mercury/recovery.py +++ b/core/src/trezor/ui/layouts/mercury/recovery.py @@ -1,4 +1,4 @@ -from typing import Callable, Iterable +from typing import TYPE_CHECKING import trezorui2 from trezor import TR @@ -11,6 +11,9 @@ CANCELLED = trezorui2.CANCELLED # global_import_cache INFO = trezorui2.INFO # global_import_cache +if TYPE_CHECKING: + from apps.management.recovery_device.layout import RemainingSharesInfo + async def request_word_count(recovery_type: RecoveryType) -> int: selector = RustLayout(trezorui2.select_word_count(recovery_type=recovery_type)) @@ -40,16 +43,18 @@ async def request_word( return word -async def show_remaining_shares( - groups: Iterable[tuple[int, tuple[str, ...]]], # remaining + list 3 words - shares_remaining: list[int], - group_threshold: int, -) -> None: +def format_remaining_shares_info( + remaining_shares_info: "RemainingSharesInfo", +) -> list[tuple[str, str]]: from trezor import strings from trezor.crypto.slip39 import MAX_SHARE_COUNT + groups, shares_remaining, group_threshold = remaining_shares_info + pages: list[tuple[str, str]] = [] - for remaining, group in groups: + completed_groups = shares_remaining.count(0) + + for group, remaining in zip(groups, shares_remaining): if 0 < remaining < MAX_SHARE_COUNT: title = strings.format_plural( TR.recovery__x_more_items_starting_template_plural, @@ -58,10 +63,8 @@ async def show_remaining_shares( ) words = "\n".join(group) pages.append((title, words)) - elif ( - remaining == MAX_SHARE_COUNT and shares_remaining.count(0) < group_threshold - ): - groups_remaining = group_threshold - shares_remaining.count(0) + elif remaining == MAX_SHARE_COUNT and completed_groups < group_threshold: + groups_remaining = group_threshold - completed_groups title = strings.format_plural( TR.recovery__x_more_items_starting_template_plural, groups_remaining, @@ -70,13 +73,7 @@ async def show_remaining_shares( words = "\n".join(group) pages.append((title, words)) - await raise_if_not_confirmed( - interact( - RustLayout(trezorui2.show_remaining_shares(pages=pages)), - "show_shares", - ButtonRequestType.Other, - ) - ) + return pages async def show_group_share_success(share_index: int, group_index: int) -> None: @@ -102,26 +99,25 @@ async def continue_recovery( button_label: str, # unused on mercury text: str, subtext: str | None, - info_func: Callable | None, # TODO: see below recovery_type: RecoveryType, show_info: bool = False, + remaining_shares_info: "RemainingSharesInfo | None" = None, ) -> bool: - # TODO: info_func should be changed to return data to be shown (and not show - # them) so that individual models can implement showing logic on their own. - # T3T1 should move the data to `flow_continue_recovery` and hide them - # in the context menu - # NOTE: show_info can be understood as first screen before any shares # NOTE: button request sent from the flow - homepage = RustLayout( + result = await RustLayout( trezorui2.flow_continue_recovery( first_screen=show_info, recovery_type=recovery_type, text=text, subtext=subtext, + pages=( + format_remaining_shares_info(remaining_shares_info) + if remaining_shares_info + else None + ), ) ) - result = await homepage return result is CONFIRMED diff --git a/core/src/trezor/ui/layouts/tr/recovery.py b/core/src/trezor/ui/layouts/tr/recovery.py index 41ceae2215..df1064e19c 100644 --- a/core/src/trezor/ui/layouts/tr/recovery.py +++ b/core/src/trezor/ui/layouts/tr/recovery.py @@ -1,4 +1,4 @@ -from typing import Callable, Iterable +from typing import TYPE_CHECKING, Iterable import trezorui2 from trezor import TR @@ -7,6 +7,9 @@ from ..common import interact from . import RustLayout, raise_if_not_confirmed, show_warning +if TYPE_CHECKING: + from apps.management.recovery_device.layout import RemainingSharesInfo + async def request_word_count(recovery_type: RecoveryType) -> int: count = await interact( @@ -97,9 +100,9 @@ async def continue_recovery( button_label: str, text: str, subtext: str | None, - info_func: Callable | None, recovery_type: RecoveryType, show_info: bool = False, + remaining_shares_info: "RemainingSharesInfo | None" = None, # unused on TR ) -> bool: # TODO: implement info_func? # There is very limited space on the screen diff --git a/core/src/trezor/ui/layouts/tt/recovery.py b/core/src/trezor/ui/layouts/tt/recovery.py index 9163987c81..379eeb1f80 100644 --- a/core/src/trezor/ui/layouts/tt/recovery.py +++ b/core/src/trezor/ui/layouts/tt/recovery.py @@ -1,4 +1,4 @@ -from typing import Callable, Iterable +from typing import TYPE_CHECKING, Callable import trezorui2 from trezor import TR @@ -10,6 +10,9 @@ CONFIRMED = trezorui2.CONFIRMED # global_import_cache INFO = trezorui2.INFO # global_import_cache +if TYPE_CHECKING: + from apps.management.recovery_device.layout import RemainingSharesInfo + async def _homepage_with_info( dialog: RustLayout, @@ -54,7 +57,7 @@ async def request_word( async def show_remaining_shares( - groups: Iterable[tuple[int, tuple[str, ...]]], # remaining + list 3 words + groups: set[tuple[str, ...]], shares_remaining: list[int], group_threshold: int, ) -> None: @@ -62,7 +65,9 @@ async def show_remaining_shares( from trezor.crypto.slip39 import MAX_SHARE_COUNT pages: list[tuple[str, str]] = [] - for remaining, group in groups: + completed_groups = shares_remaining.count(0) + + for group, remaining in zip(groups, shares_remaining): if 0 < remaining < MAX_SHARE_COUNT: title = strings.format_plural( TR.recovery__x_more_items_starting_template_plural, @@ -71,10 +76,8 @@ async def show_remaining_shares( ) words = "\n".join(group) pages.append((title, words)) - elif ( - remaining == MAX_SHARE_COUNT and shares_remaining.count(0) < group_threshold - ): - groups_remaining = group_threshold - shares_remaining.count(0) + elif remaining == MAX_SHARE_COUNT and completed_groups < group_threshold: + groups_remaining = group_threshold - completed_groups title = strings.format_plural( TR.recovery__x_more_items_starting_template_plural, groups_remaining, @@ -139,9 +142,9 @@ async def continue_recovery( button_label: str, text: str, subtext: str | None, - info_func: Callable | None, recovery_type: RecoveryType, show_info: bool = False, + remaining_shares_info: "RemainingSharesInfo | None" = None, ) -> bool: from trezor.wire import ActionCancelled @@ -160,19 +163,26 @@ async def continue_recovery( description=description, button=button_label, recovery_type=recovery_type, - info_button=info_func is not None, + info_button=remaining_shares_info is not None, ) ) await button_request("recovery", ButtonRequestType.RecoveryHomepage) - result = ( - await homepage - if info_func is None - else await _homepage_with_info(homepage, info_func) - ) + if remaining_shares_info is None: + result = await homepage + else: + groups, shares_remaining, group_threshold = remaining_shares_info + result = await _homepage_with_info( + homepage, + lambda: show_remaining_shares( + groups, shares_remaining, group_threshold + ), + ) + if result is CONFIRMED: return True + try: await _confirm_abort(recovery_type != RecoveryType.NormalRecovery) except ActionCancelled: diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py index 9d5bed0026..8aaa4eb746 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py @@ -73,7 +73,6 @@ def test_secret(client: Client, shares: list[str], secret: str): _test_secret(client, shares, secret) -@pytest.mark.skip_t3t1(reason="currently broken on T3T1") @pytest.mark.parametrize("shares, secret", VECTORS) @pytest.mark.setup_client(uninitialized=True) def test_secret_click_info_button(client: Client, shares: list[str], secret: str): diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 7abe27fcfa..38e06fefb7 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -304,7 +304,7 @@ def input_all_slip39_shares( if self.client.model is models.T2T1: yield from self.tt_click_info() elif self.client.model is models.T3T1: - self.mercury_click_info() + yield from self.mercury_click_info() yield from self.success_more_shares_needed() def tt_click_info( @@ -316,10 +316,19 @@ def tt_click_info( self.debug.swipe_up() self.debug.press_yes() - def mercury_click_info(self): + def mercury_click_info(self) -> BRGeneratorType: + # Starting on the homepage, handle the repeated button request + br = yield + assert br.name == "recovery" + assert br.code == B.RecoveryHomepage + # Moving through the menu into the show_shares screen self.debug.click(buttons.CORNER_BUTTON, wait=True) self.debug.synchronize_at("VerticalMenu") self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + br = yield + assert br.name == "show_shares" + assert br.code == B.Other + # Getting back to the homepage self.debug.click(buttons.CORNER_BUTTON, wait=True) self.debug.click(buttons.CORNER_BUTTON, wait=True) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 5efa0f1f33..f6b5947564 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -16511,6 +16511,8 @@ "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "f207194fc64f068391f521c2069ef1fcf55c581c1c241c49c620f9462557fcf1", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "ad415d9e066ae572abc1e81df83758f1eb884aa75d33464ad5cf393edd17c2ac", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e8a1825029d6cd6fccf2d9433df5153cc7494c00350c0cab09300fc05bff8a87", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "987214495bb12d72ef099fcf6a5e3e671eda37ed5905e552256c300a7934d919", +"T3T1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "2a1e35ba924989ed4d0aa87b9ddfd61ff91084d142bb517a255c517e82f8463f", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "06b9b90d151e8eb32f824b25c379e38dccd2732592a9d54cbe963b75b88cef24", "T3T1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "908dfde70e1269935c7add3c2edaea223724fc78bc8e030e5aeb08dd4fd0ec9f", "T3T1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "65a86c715390ceca75c9eb2f56a54bf85e2b915489bc080ca45f15a69c5dc55d", @@ -17853,6 +17855,8 @@ "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "d585bf013c0c6526bd9dc17f33bb21c0de19e2d5e653159d5821921f32da2705", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "03437b32a72c828dbb6365be52090ca3bdabdc969cd8e238b88b8fff868b0417", "T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "aca43fcd50b60741f3dda0e06adb01d74c41cf92853368759c476e6fe55326a9", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a8b0d2f295238aa40db569320fd715a017f98244887d3366d0a9b7a4ac5460cd", +"T3T1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "379fc0b4041a4085e2cb41dfd922c1dcddaca4a08da9afe6e72dd0fce01137e4", "T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "af836476467f13d07ca7689fef5e9703e85f0ec489c0f3528b5fa9ccc9531041", "T3T1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "f238d4b9f4f6d13fb082a2b048a7aed6a3f25281ce637d973f3a3cdfedbb5909", "T3T1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "2fc4b3a3ab644a339238a7291a162b1e1fbed9714cae4de49b7e1e10814af2bf", @@ -19195,6 +19199,8 @@ "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "fb29b0dcf08f0ac969197d48ab9547850846959d09ac215aa5a831b2432e3d3b", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "e7748f6864c05f4a81677d0c70baf12c16eb3463f1f6f1f6caf99b89752318ca", "T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "f26e7ad1434f037331503f436e82780c7f3e4c9d6389b064680f1098d82fb2fc", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "6b1dab1a11ae8853e1dbfbdea8362843f9b31b069824f6484d6e8cb00eeaa1f0", +"T3T1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b9a12d0387b2f74769366176b53fe405e557f4af329fb4dcd3b2eecccf8ad07a", "T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "ff9fd97ab6ca805596bba50ff532a5decded71da4888456d6bc4f6aa6992cc4a", "T3T1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "49149d6d43bbf9fd59f92685569e541fc01a8765e60580518a9b75063bad89ba", "T3T1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "a23cd874215a2944ef6282f9e396715d3f629b9afa3da0dd534049ce6cc323cd", @@ -20537,6 +20543,8 @@ "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "bfcc90188c0e704f2b2ee4afd7c616e116493bf0f9ef08aeb006c8eae23e3130", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "c86b3f84b601aa162ebfa59e49f7a83ece8b3d03f780ca6cffba01e257f9e631", "T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "739e3359b4c0d22da0ce39c1949d36e50942fa6855941c19bb5ef8a33b10e63a", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "d8b4392d7b9c05436504d714e5b5be17229afe0020db212d5bad30618570ae52", +"T3T1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e223d9a2b11fb83b76dc6266c285d9a853db04fbeeecd5d794206042a06159e6", "T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "95dc3c3561517b60adb1c2021ea23b9ec11e6b63851e11b4586fbf1762bea32b", "T3T1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "83bbf55f0a13974b9f7832554aa3019ae16d56555f017ecb5130c7594637e775", "T3T1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e046d946894f3308666456016642ae88826ddcfb4253e7d90f29e410b3dc14fe", @@ -21879,6 +21887,8 @@ "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "c2a537f28eac80fcf674c4f2c1f00c82dd618b06d5b030ad86cf5a7f54178c27", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fc949c187da623bf33b5bfdb034d9933d3edd0551b4355f70c6347420989939d", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e8a0a40d53e0f359d1b4178bbf14d7a372f4f56918819fdd9ed5806d515e1b7a", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "804b8a27ecdde765cf636c8358f30cb51d1cbfa9020c2ed1690bb881d9e6d649", +"T3T1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "0eee15f6168a094643bd299c9d7a9d5e5942340ee46a27556b0efb081110ab73", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "3c43ed6e7e58eabe8b7db49124c2ec0202fcfc3f50cb15449e24ffeb716c090d", "T3T1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "08306b13088a2fcca5beaeb6b97c4071a149b399fb607b82e1c57352d4ba78e0", "T3T1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "7eca9e95d1798c4762fd052d976eb080374b7e8cf96ce1fc01b7f9ad25717bcf", From ba8f0ea4bc2eca63d8768a4a82a330c5c49bfe50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Fri, 30 Aug 2024 16:12:38 +0200 Subject: [PATCH 592/626] feat(core): use new ETH send flow also for staking --- core/.changelog.d/noissue.fixed | 1 + core/embed/rust/librust_qstr.h | 1 + .../ui/model_mercury/flow/confirm_output.rs | 149 +++++++++++------- .../rust/src/ui/model_mercury/flow/util.rs | 10 ++ .../embed/rust/src/ui/model_mercury/layout.rs | 6 +- core/mocks/generated/trezorui2.pyi | 6 +- .../src/trezor/ui/layouts/mercury/__init__.py | 66 ++++---- 7 files changed, 150 insertions(+), 89 deletions(-) create mode 100644 core/.changelog.d/noissue.fixed diff --git a/core/.changelog.d/noissue.fixed b/core/.changelog.d/noissue.fixed new file mode 100644 index 0000000000..26a97edf5b --- /dev/null +++ b/core/.changelog.d/noissue.fixed @@ -0,0 +1 @@ +[T3T1] Improved ETH staking flow. diff --git a/core/embed/rust/librust_qstr.h b/core/embed/rust/librust_qstr.h index a06861a1e7..6daa251c29 100644 --- a/core/embed/rust/librust_qstr.h +++ b/core/embed/rust/librust_qstr.h @@ -327,6 +327,7 @@ static void _librust_qstrs(void) { MP_QSTR_max_feerate; MP_QSTR_max_len; MP_QSTR_max_rounds; + MP_QSTR_message; MP_QSTR_min_count; MP_QSTR_misc__decrypt_value; MP_QSTR_misc__encrypt_value; diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index 6724f63903..645562428d 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -31,7 +31,8 @@ use super::{ const MENU_ITEM_CANCEL: usize = 0; const MENU_ITEM_FEE_INFO: usize = 1; -const MENU_ITEM_ACCOUNT_INFO: usize = 2; +const MENU_ITEM_ADDRESS_INFO: usize = 2; +const MENU_ITEM_ACCOUNT_INFO: usize = 3; #[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmOutput { @@ -117,9 +118,10 @@ impl FlowState for ConfirmOutputWithAmount { #[derive(Copy, Clone, PartialEq, Eq)] pub enum ConfirmOutputWithSummary { - Address, - AddressMenu, - AddressMenuCancel, + Main, + MainMenu, + MainMenuCancel, + AddressInfo, Summary, SummaryMenu, SummaryMenuCancel, @@ -138,12 +140,13 @@ impl FlowState for ConfirmOutputWithSummary { fn handle_swipe(&'static self, direction: SwipeDirection) -> StateChange { match (self, direction) { - (Self::Address, SwipeDirection::Left) => Self::AddressMenu.swipe(direction), - (Self::Address, SwipeDirection::Up) => Self::Summary.swipe(direction), - (Self::AccountInfo, SwipeDirection::Right) => Self::AddressMenu.swipe(direction), + (Self::Main, SwipeDirection::Left) => Self::MainMenu.swipe(direction), + (Self::Main, SwipeDirection::Up) => Self::Summary.swipe(direction), + (Self::AddressInfo, SwipeDirection::Right) => Self::MainMenu.swipe(direction), + (Self::AccountInfo, SwipeDirection::Right) => Self::MainMenu.swipe(direction), (Self::Summary, SwipeDirection::Left) => Self::SummaryMenu.swipe(direction), (Self::Summary, SwipeDirection::Up) => Self::Hold.swipe(direction), - (Self::Summary, SwipeDirection::Down) => Self::Address.swipe(direction), + (Self::Summary, SwipeDirection::Down) => Self::Main.swipe(direction), (Self::FeeInfo, SwipeDirection::Right) => Self::SummaryMenu.swipe(direction), (Self::Hold, SwipeDirection::Left) => Self::HoldMenu.swipe(direction), (Self::Hold, SwipeDirection::Down) => Self::Summary.swipe(direction), @@ -153,11 +156,12 @@ impl FlowState for ConfirmOutputWithSummary { fn handle_event(&'static self, msg: FlowMsg) -> StateChange { match (self, msg) { - (Self::Address, FlowMsg::Info) => Self::AddressMenu.transit(), - (Self::AddressMenu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => { - Self::AddressMenuCancel.swipe_left() + (Self::Main, FlowMsg::Info) => Self::MainMenu.transit(), + (Self::MainMenu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => { + Self::MainMenuCancel.swipe_left() } - (Self::AddressMenuCancel, FlowMsg::Cancelled) => Self::AddressMenu.swipe_right(), + (Self::MainMenuCancel, FlowMsg::Cancelled) => Self::MainMenu.swipe_right(), + (Self::AddressInfo, FlowMsg::Info) => Self::MainMenu.transit(), (Self::Summary, FlowMsg::Info) => Self::SummaryMenu.transit(), (Self::SummaryMenu, FlowMsg::Choice(MENU_ITEM_CANCEL)) => { Self::SummaryMenuCancel.swipe_left() @@ -169,18 +173,21 @@ impl FlowState for ConfirmOutputWithSummary { } (Self::HoldMenuCancel, FlowMsg::Cancelled) => Self::HoldMenu.swipe_right(), (Self::SummaryMenu, FlowMsg::Choice(MENU_ITEM_FEE_INFO)) => Self::FeeInfo.swipe_left(), - (Self::AddressMenu, FlowMsg::Choice(MENU_ITEM_ACCOUNT_INFO)) => { + (Self::MainMenu, FlowMsg::Choice(MENU_ITEM_ADDRESS_INFO)) => { + Self::AddressInfo.swipe_left() + } + (Self::MainMenu, FlowMsg::Choice(MENU_ITEM_ACCOUNT_INFO)) => { Self::AccountInfo.swipe_left() } - (Self::AddressMenu, FlowMsg::Cancelled) => Self::Address.swipe_right(), + (Self::MainMenu, FlowMsg::Cancelled) => Self::Main.swipe_right(), (Self::SummaryMenu, FlowMsg::Cancelled) => Self::Summary.swipe_right(), (Self::FeeInfo, FlowMsg::Cancelled) => Self::SummaryMenu.swipe_right(), (Self::HoldMenu, FlowMsg::Cancelled) => Self::Hold.swipe_right(), ( - Self::AddressMenuCancel | Self::SummaryMenuCancel | Self::HoldMenuCancel, + Self::MainMenuCancel | Self::SummaryMenuCancel | Self::HoldMenuCancel, FlowMsg::Confirmed, ) => self.return_msg(FlowMsg::Cancelled), - (Self::Address, FlowMsg::Cancelled) => Self::AddressMenu.transit(), + (Self::Main, FlowMsg::Cancelled) => Self::MainMenu.transit(), (Self::Summary, FlowMsg::Cancelled) => Self::SummaryMenu.transit(), (Self::Hold, FlowMsg::Cancelled) => Self::HoldMenu.transit(), (Self::Hold, FlowMsg::Confirmed) => self.return_msg(FlowMsg::Confirmed), @@ -213,6 +220,7 @@ pub extern "C" fn new_confirm_output(n_args: usize, args: *const Obj, kwargs: *m fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Error> { let title: Option<TString> = kwargs.get(Qstr::MP_QSTR_title)?.try_into_option()?; + let subtitle: Option<TString> = kwargs.get(Qstr::MP_QSTR_subtitle)?.try_into_option()?; let account: Option<TString> = kwargs.get(Qstr::MP_QSTR_account)?.try_into_option()?; let account_path: Option<TString> = @@ -221,12 +229,16 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err let br_name: TString = kwargs.get(Qstr::MP_QSTR_br_name)?.try_into()?; let br_code: u16 = kwargs.get(Qstr::MP_QSTR_br_code)?.try_into()?; - let address: Obj = kwargs.get(Qstr::MP_QSTR_address)?; + let message: Obj = kwargs.get(Qstr::MP_QSTR_message)?; let amount: Option<Obj> = kwargs.get(Qstr::MP_QSTR_amount)?.try_into_option()?; let chunkify: bool = kwargs.get_or(Qstr::MP_QSTR_chunkify, false)?; let text_mono: bool = kwargs.get_or(Qstr::MP_QSTR_text_mono, true)?; + let address: Option<Obj> = kwargs.get(Qstr::MP_QSTR_address)?.try_into_option()?; + let address_title: Option<TString> = + kwargs.get(Qstr::MP_QSTR_address_title)?.try_into_option()?; + let summary_items: Obj = kwargs.get(Qstr::MP_QSTR_summary_items)?; let fee_items: Obj = kwargs.get(Qstr::MP_QSTR_fee_items)?; @@ -241,9 +253,9 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err let cancel_text: Option<TString> = kwargs.get(Qstr::MP_QSTR_cancel_text)?.try_into_option()?; - // Address - let content_address = ConfirmBlobParams::new(TR::words__address.into(), address, None) - .with_subtitle(title) + // Main + let main_content = ConfirmBlobParams::new(title.unwrap_or(TString::empty()), message, None) + .with_subtitle(subtitle) .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) .with_chunkify(chunkify) @@ -251,55 +263,59 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err .into_layout()? .one_button_request(ButtonRequest::from_num(br_code, br_name)); - // AddressMenu - let mut address_menu = VerticalMenu::empty(); - let mut address_menu_items = Vec::<usize, 2>::new(); + // MainMenu + let mut main_menu = VerticalMenu::empty(); + let mut main_menu_items = Vec::<usize, 3>::new(); + if address.is_some() { + main_menu = main_menu.item( + theme::ICON_CHEVRON_RIGHT, + address_title.unwrap_or(TR::words__address.into()), + ); + unwrap!(main_menu_items.push(MENU_ITEM_ADDRESS_INFO)); + } if account.is_some() && account_path.is_some() { - address_menu = address_menu.item( + main_menu = main_menu.item( theme::ICON_CHEVRON_RIGHT, TR::address_details__account_info.into(), ); - unwrap!(address_menu_items.push(MENU_ITEM_ACCOUNT_INFO)); + unwrap!(main_menu_items.push(MENU_ITEM_ACCOUNT_INFO)); } - address_menu = address_menu.danger( + main_menu = main_menu.danger( theme::ICON_CANCEL, cancel_text.unwrap_or(TR::send__cancel_sign.into()), ); - unwrap!(address_menu_items.push(MENU_ITEM_CANCEL)); - let content_address_menu = Frame::left_aligned(TString::empty(), address_menu) + unwrap!(main_menu_items.push(MENU_ITEM_CANCEL)); + let content_main_menu = Frame::left_aligned(TString::empty(), main_menu) .with_cancel_button() .with_swipe(SwipeDirection::Right, SwipeSettings::immediate()) .map(move |msg| match msg { FrameMsg::Content(VerticalMenuChoiceMsg::Selected(i)) => { - let selected_item = address_menu_items[i]; + let selected_item = main_menu_items[i]; Some(FlowMsg::Choice(selected_item)) } FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); // AccountInfo - let ad = AddressDetails::new(TR::send__send_from.into(), account, account_path)?; - let content_account = ad.map(|_| Some(FlowMsg::Cancelled)); + let ac = AddressDetails::new(TR::send__send_from.into(), account, account_path)?; + let account_content = ac.map(|_| Some(FlowMsg::Cancelled)); let res = if amount.is_some() { - let content_amount = ConfirmBlobParams::new( - TR::words__amount.into(), - amount.unwrap_or(Obj::const_none()), - None, - ) - .with_subtitle(title) - .with_menu_button() - .with_footer(TR::instructions__swipe_up.into(), None) - .with_text_mono(text_mono) - .with_swipe_down() - .into_layout()? - .one_button_request(ButtonRequest::from_num(br_code, br_name)); + let content_amount = + ConfirmBlobParams::new(TR::words__amount.into(), amount.unwrap(), None) + .with_subtitle(subtitle) + .with_menu_button() + .with_footer(TR::instructions__swipe_up.into(), None) + .with_text_mono(text_mono) + .with_swipe_down() + .into_layout()? + .one_button_request(ButtonRequest::from_num(br_code, br_name)); SwipeFlow::new(&ConfirmOutputWithAmount::Address)? - .with_page(&ConfirmOutputWithAmount::Address, content_address)? + .with_page(&ConfirmOutputWithAmount::Address, main_content)? .with_page(&ConfirmOutputWithAmount::Amount, content_amount)? - .with_page(&ConfirmOutputWithAmount::Menu, content_address_menu)? - .with_page(&ConfirmOutputWithAmount::AccountInfo, content_account)? + .with_page(&ConfirmOutputWithAmount::Menu, content_main_menu)? + .with_page(&ConfirmOutputWithAmount::AccountInfo, account_content)? .with_page(&ConfirmOutputWithAmount::CancelTap, get_cancel_page())? } else if summary_items != Obj::const_none() { // Summary @@ -389,14 +405,31 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err FrameMsg::Button(_) => Some(FlowMsg::Cancelled), }); - SwipeFlow::new(&ConfirmOutputWithSummary::Address)? - .with_page(&ConfirmOutputWithSummary::Address, content_address)? - .with_page(&ConfirmOutputWithSummary::AddressMenu, content_address_menu)? - .with_page( - &ConfirmOutputWithSummary::AddressMenuCancel, - get_cancel_page(), - )? - .with_page(&ConfirmOutputWithSummary::Summary, content_summary)? + let mut flow = SwipeFlow::new(&ConfirmOutputWithSummary::Main)? + .with_page(&ConfirmOutputWithSummary::Main, main_content)? + .with_page(&ConfirmOutputWithSummary::MainMenu, content_main_menu)? + .with_page(&ConfirmOutputWithSummary::MainMenuCancel, get_cancel_page())?; + if address.is_some() { + let address_content = ConfirmBlobParams::new( + address_title.unwrap_or(TR::words__address.into()), + address.unwrap(), + None, + ) + .with_cancel_button() + .with_chunkify(true) + .with_text_mono(true) + .into_layout()?; + flow = flow.with_page(&ConfirmOutputWithSummary::AddressInfo, address_content)?; + } else { + // dummy page - this will never be shown since there is no menu item pointing to + // it, but the page has to exist in the flow + flow = flow.with_page( + &ConfirmOutputWithSummary::AddressInfo, + Frame::left_aligned(TString::empty(), VerticalMenu::empty()) + .map(|_| Some(FlowMsg::Cancelled)), + )?; + } + flow.with_page(&ConfirmOutputWithSummary::Summary, content_summary)? .with_page(&ConfirmOutputWithSummary::SummaryMenu, content_summary_menu)? .with_page( &ConfirmOutputWithSummary::SummaryMenuCancel, @@ -406,12 +439,12 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err .with_page(&ConfirmOutputWithSummary::Hold, content_hold)? .with_page(&ConfirmOutputWithSummary::HoldMenu, content_hold_menu)? .with_page(&ConfirmOutputWithSummary::HoldMenuCancel, get_cancel_page())? - .with_page(&ConfirmOutputWithSummary::AccountInfo, content_account)? + .with_page(&ConfirmOutputWithSummary::AccountInfo, account_content)? } else { SwipeFlow::new(&ConfirmOutput::Address)? - .with_page(&ConfirmOutput::Address, content_address)? - .with_page(&ConfirmOutput::Menu, content_address_menu)? - .with_page(&ConfirmOutput::AccountInfo, content_account)? + .with_page(&ConfirmOutput::Address, main_content)? + .with_page(&ConfirmOutput::Menu, content_main_menu)? + .with_page(&ConfirmOutput::AccountInfo, account_content)? .with_page(&ConfirmOutput::CancelTap, get_cancel_page())? }; diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/model_mercury/flow/util.rs index 0cf9e5d979..c8a6518087 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/util.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/util.rs @@ -30,6 +30,7 @@ pub struct ConfirmBlobParams { description: Option<TString<'static>>, extra: Option<TString<'static>>, menu_button: bool, + cancel_button: bool, chunkify: bool, text_mono: bool, swipe_down: bool, @@ -50,6 +51,7 @@ impl ConfirmBlobParams { description, extra: None, menu_button: false, + cancel_button: false, chunkify: false, text_mono: true, swipe_down: false, @@ -71,6 +73,11 @@ impl ConfirmBlobParams { self } + pub const fn with_cancel_button(mut self) -> Self { + self.cancel_button = true; + self + } + pub const fn with_swipe_down(mut self) -> Self { self.swipe_down = true; self @@ -128,6 +135,9 @@ impl ConfirmBlobParams { if self.menu_button { frame = frame.with_menu_button(); } + if self.cancel_button { + frame = frame.with_cancel_button(); + } if let Some(instruction) = self.footer_instruction { frame = frame.with_footer(instruction, self.footer_description); frame = frame.with_swipe(SwipeDirection::Left, SwipeSettings::default()); diff --git a/core/embed/rust/src/ui/model_mercury/layout.rs b/core/embed/rust/src/ui/model_mercury/layout.rs index 57375acb51..7f02f41dca 100644 --- a/core/embed/rust/src/ui/model_mercury/layout.rs +++ b/core/embed/rust/src/ui/model_mercury/layout.rs @@ -1678,13 +1678,17 @@ pub static mp_module_trezorui2: Module = obj_module! { /// def flow_confirm_output( /// *, /// title: str | None, - /// address: str, + /// subtitle: str | None, + /// message: str, /// amount: str | None, /// chunkify: bool, + /// text_mono: bool, /// account: str | None, /// account_path: str | None, /// br_code: ButtonRequestType, /// br_name: str, + /// address: str | None, + /// address_title: str | None, /// summary_items: Iterable[tuple[str, str]] | None = None, /// fee_items: Iterable[tuple[str, str]] | None = None, /// summary_title: str | None = None, diff --git a/core/mocks/generated/trezorui2.pyi b/core/mocks/generated/trezorui2.pyi index f3b8ea88c1..d83b7d20a3 100644 --- a/core/mocks/generated/trezorui2.pyi +++ b/core/mocks/generated/trezorui2.pyi @@ -573,13 +573,17 @@ def flow_warning_hi_prio( def flow_confirm_output( *, title: str | None, - address: str, + subtitle: str | None, + message: str, amount: str | None, chunkify: bool, + text_mono: bool, account: str | None, account_path: str | None, br_code: ButtonRequestType, br_name: str, + address: str | None, + address_title: str | None, summary_items: Iterable[tuple[str, str]] | None = None, fee_items: Iterable[tuple[str, str]] | None = None, summary_title: str | None = None, diff --git a/core/src/trezor/ui/layouts/mercury/__init__.py b/core/src/trezor/ui/layouts/mercury/__init__.py index 182b70b4a1..3a8385e2f0 100644 --- a/core/src/trezor/ui/layouts/mercury/__init__.py +++ b/core/src/trezor/ui/layouts/mercury/__init__.py @@ -649,12 +649,16 @@ async def confirm_output( await raise_if_not_confirmed( RustLayout( trezorui2.flow_confirm_output( - title=title, - address=address, + title=TR.words__address, + subtitle=title, + message=address, amount=amount, chunkify=chunkify, + text_mono=True, account=source_account, account_path=source_account_path, + address=None, + address_title=None, br_code=br_code, br_name="confirm_output", summary_items=None, @@ -1032,12 +1036,16 @@ async def confirm_ethereum_tx( await raise_if_not_confirmed( RustLayout( trezorui2.flow_confirm_output( - title=TR.words__recipient, - address=recipient, + title=TR.words__address, + subtitle=TR.words__recipient, + message=recipient, amount=None, chunkify=chunkify, + text_mono=True, account=None, account_path=None, + address=None, + address_title=None, br_code=ButtonRequestType.Other, br_name="confirm_output", summary_items=( @@ -1066,36 +1074,36 @@ async def confirm_ethereum_staking_tx( br_name: str = "confirm_ethereum_staking_tx", br_code: ButtonRequestType = ButtonRequestType.SignTx, ) -> None: - - # intro - await confirm_value( - title, - intro_question, - "", - br_name, - br_code, - verb=verb, - value_text_mono=False, - info_items=(("", address),), - info_title=address_title, - chunkify_info=chunkify, - ) - - # confirmation if verb == TR.ethereum__staking_claim: - items = ((TR.send__maximum_fee, maximum_fee),) + summary_items = ((TR.send__maximum_fee, maximum_fee),) else: - items = ( + summary_items = ( (TR.words__amount, total_amount), (TR.send__maximum_fee, maximum_fee), ) - await _confirm_summary( - items=items, - title=title, - info_title=TR.confirm_total__title_fee, - info_items=info_items, - br_name=br_name, - br_code=br_code, + await raise_if_not_confirmed( + RustLayout( + trezorui2.flow_confirm_output( + title=verb, + subtitle=None, + message=intro_question, + amount=None, + chunkify=False, + text_mono=False, + account=None, + account_path=None, + br_code=br_code, + br_name=br_name, + address=address, + address_title=address_title, + summary_items=summary_items, + fee_items=info_items, + summary_title=verb, + summary_br_name="confirm_total", + summary_br_code=ButtonRequestType.SignTx, + cancel_text=TR.buttons__cancel, # cancel staking + ) + ) ) def confirm_solana_tx( From 3de7256103561398223d4bfc5bf2d8cc84a205cf Mon Sep 17 00:00:00 2001 From: obrusvit <vit.obrusnik@gmail.com> Date: Tue, 3 Sep 2024 15:07:51 +0200 Subject: [PATCH 593/626] chore(core/mercury): fix UI test for everstake [no changelog] --- tests/device_tests/ethereum/test_signtx.py | 1 - tests/input_flows_helpers.py | 51 ++++++++++++++++++++-- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/tests/device_tests/ethereum/test_signtx.py b/tests/device_tests/ethereum/test_signtx.py index 196d6b5bfa..6ae85d5dd1 100644 --- a/tests/device_tests/ethereum/test_signtx.py +++ b/tests/device_tests/ethereum/test_signtx.py @@ -459,7 +459,6 @@ def _sign_tx_call(): _sign_tx_call() -@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") @pytest.mark.skip_t1b1("T1 does not support Everstake") @parametrize_using_common_fixtures("ethereum/sign_tx_staking.json") @pytest.mark.parametrize("chunkify", (True, False)) diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 38e06fefb7..f955b923d6 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -499,7 +499,9 @@ def confirm_tx_staking( self, info: bool = False, ) -> BRGeneratorType: - yield + br = yield + assert br.code == B.SignTx + assert br.name == "confirm_ethereum_staking_tx" TR.assert_equals_multiple( self.debug.wait_layout().title(), [ @@ -516,7 +518,7 @@ def confirm_tx_staking( "ethereum__staking_claim_intro", ], ) - if self.client.model in (models.T2T1, models.T3T1): + if self.client.model in (models.T2T1, ): # confirm intro if info: self.debug.click(buttons.CORNER_BUTTON, wait=True) @@ -532,7 +534,7 @@ def confirm_tx_staking( yield # confirm summary - if info and self.client.model != models.T3T1: + if info: self.debug.press_info(wait=True) TR.assert_in( self.debug.wait_layout().text_content(), "ethereum__gas_limit" @@ -545,7 +547,46 @@ def confirm_tx_staking( yield self.debug.press_yes() - else: + elif self.client.model in (models.T3T1,): + # confirm intro + if info: + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.synchronize_at("VerticalMenu") + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + TR.assert_equals_multiple( + self.debug.wait_layout().title(), + [ + "ethereum__staking_stake_address", + "ethereum__staking_claim_address", + ], + ) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + + self.debug.swipe_up() + br = yield + assert br.code == B.SignTx + assert br.name == "confirm_total" + + # confirm summary + if info: + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.synchronize_at("VerticalMenu") + self.debug.click(buttons.VERTICAL_MENU[0], wait=True) + TR.assert_in( + self.debug.wait_layout().text_content(), "ethereum__gas_limit" + ) + TR.assert_in( + self.debug.wait_layout().text_content(), "ethereum__gas_price" + ) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.click(buttons.CORNER_BUTTON, wait=True) + self.debug.swipe_up() + # br = yield # FIXME: no BR on sign transaction + + self.debug.press_yes() + + elif self.client.model in (models.T2B1, models.T3B1, ): # confirm intro if info: self.debug.press_right(wait=True) @@ -576,3 +617,5 @@ def confirm_tx_staking( yield self.debug.press_yes() + else: + raise ValueError("Unknown model!") From 423f1597941d5354b2f941e04ad5e27003431067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Tue, 3 Sep 2024 16:56:18 +0200 Subject: [PATCH 594/626] chore(core): update fixtures and fix style --- tests/input_flows_helpers.py | 7 +++-- tests/ui_tests/fixtures.json | 60 ++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index f955b923d6..7838ff0cb0 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -518,7 +518,7 @@ def confirm_tx_staking( "ethereum__staking_claim_intro", ], ) - if self.client.model in (models.T2T1, ): + if self.client.model in (models.T2T1,): # confirm intro if info: self.debug.click(buttons.CORNER_BUTTON, wait=True) @@ -586,7 +586,10 @@ def confirm_tx_staking( self.debug.press_yes() - elif self.client.model in (models.T2B1, models.T3B1, ): + elif self.client.model in ( + models.T2B1, + models.T3B1, + ): # confirm intro if info: self.debug.press_right(wait=True) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index f6b5947564..7da64735e6 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -16449,6 +16449,18 @@ "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "6ce1d66af3f9e857b66dd057a60f5f5bcba6e7a0a241a08855d109a2fc440ac7", "T3T1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "6ce1d66af3f9e857b66dd057a60f5f5bcba6e7a0a241a08855d109a2fc440ac7", "T3T1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "6a43a117d79ced98980f2c3d63b8cf7c580326f8df601be465627f1131a8606d", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "de5a3f76a0c9bc879f9046285a050a36738d369ce2fc01e13733838795fe574b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "534d5a30dda303900259c190868d8143af063282e35e685e71788e92d0937e38", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "d00a990e3511885aeea98d5ff004da4b59614faea1bdfb3efab445f431c282b4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "4a36106048823d8f95f2ed06d988ae2c5d61ca2132f5f3b198eda08671d399ca", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "c0c90a36e3be72160ef50ed2355fa022fdcb2735c381f22512ebb5b4d9290a2f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "35f51f28bc80f3517e6ce4fea2a4763833a828aa0f970a4766ee619f48e332e8", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "de5a3f76a0c9bc879f9046285a050a36738d369ce2fc01e13733838795fe574b", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "534d5a30dda303900259c190868d8143af063282e35e685e71788e92d0937e38", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "d00a990e3511885aeea98d5ff004da4b59614faea1bdfb3efab445f431c282b4", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4a36106048823d8f95f2ed06d988ae2c5d61ca2132f5f3b198eda08671d399ca", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "c0c90a36e3be72160ef50ed2355fa022fdcb2735c381f22512ebb5b4d9290a2f", +"T3T1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "35f51f28bc80f3517e6ce4fea2a4763833a828aa0f970a4766ee619f48e332e8", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", "T3T1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "db145237dd6797d9dd5204b63976d890465fa96aa121b5a84032f6d62955b6d1", @@ -17793,6 +17805,18 @@ "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "fe02b97c28cec0b8f6c03cd93fe6219b3b732390bb98badf5a6f35a82cb997ef", "T3T1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "fe02b97c28cec0b8f6c03cd93fe6219b3b732390bb98badf5a6f35a82cb997ef", "T3T1_de_ethereum-test_signtx.py::test_signtx_fee_info": "17a4d8511d786f95410c1cfe55ab6df1c54edd581637839380d504a9a943192e", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "f27b041783cc79a22c11ed668a003c906f1065aa76d8f16b30472d04409a154a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "c33ae42431c166ca0cece0f9e22caacd96dde3afa5fef705aebafc649e92ce5b", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "f69d79f138e87dcde788d6fe50362e14c4954431f940dc9ac958c4caeceead93", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "d8a29f667f4e48fffe17f13cd698b19b855ce97c60d1e22628136fe08d55c44f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "9e70a5e0158171f5f74fdcf801684dff0aea6d0f97076046b0f18af209d3325d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "c6a47a4a4899ae0cb796692e3d0570440daceab947a0442ea2f62fa5e5a6fa74", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "f27b041783cc79a22c11ed668a003c906f1065aa76d8f16b30472d04409a154a", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "c33ae42431c166ca0cece0f9e22caacd96dde3afa5fef705aebafc649e92ce5b", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "f69d79f138e87dcde788d6fe50362e14c4954431f940dc9ac958c4caeceead93", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "d8a29f667f4e48fffe17f13cd698b19b855ce97c60d1e22628136fe08d55c44f", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "9e70a5e0158171f5f74fdcf801684dff0aea6d0f97076046b0f18af209d3325d", +"T3T1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "c6a47a4a4899ae0cb796692e3d0570440daceab947a0442ea2f62fa5e5a6fa74", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", "T3T1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "adfe275fcc2caed0137079330cbc85aaccecf9e5fdc0404238db121212124edf", @@ -19137,6 +19161,18 @@ "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "dd2790ac7fa5c240b051e85342d6368d0deac5a5cf8c7c8c4af1c09e3cf7182f", "T3T1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "dd2790ac7fa5c240b051e85342d6368d0deac5a5cf8c7c8c4af1c09e3cf7182f", "T3T1_en_ethereum-test_signtx.py::test_signtx_fee_info": "b85b87c6946ad2074272ae7156fd6a5bfec4db17f12290c8b88d1bde1b551565", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "c9ea54681f77d78b130719dec5be110ae0268f499466cc4656e96aa090c7f057", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "ef7330fe5b7ef7d9bef858d63bd78401ffacb39ee2b07134f74c25ca0ac057e2", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "ee0a79a53b01e068bfee5ecc98597d4c6504b241ddff2eed22fadd0c4690913f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "28a8ede2baa9b729d626e128451452e335e3161dbc651867c9ed70a2192d4944", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "e5b6b99c47e6f5bf2d0dda1c317db61858ca42f5ab67ef268379770bc01ccc86", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "47ab2304a91cfbf820996c7514b5cc25d2f5fa317c294f6f7d60914836a1e25f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "c9ea54681f77d78b130719dec5be110ae0268f499466cc4656e96aa090c7f057", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "ef7330fe5b7ef7d9bef858d63bd78401ffacb39ee2b07134f74c25ca0ac057e2", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "ee0a79a53b01e068bfee5ecc98597d4c6504b241ddff2eed22fadd0c4690913f", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "28a8ede2baa9b729d626e128451452e335e3161dbc651867c9ed70a2192d4944", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "e5b6b99c47e6f5bf2d0dda1c317db61858ca42f5ab67ef268379770bc01ccc86", +"T3T1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "47ab2304a91cfbf820996c7514b5cc25d2f5fa317c294f6f7d60914836a1e25f", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", "T3T1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "886a329a63547ee0f07547685dfc1c8677587c3471fe1bcba81c6a9363659185", @@ -20481,6 +20517,18 @@ "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "8f70757da8d2e04371c54ce284f59c7d1212eb3f4a9e035b1afa09dea6dda976", "T3T1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "8f70757da8d2e04371c54ce284f59c7d1212eb3f4a9e035b1afa09dea6dda976", "T3T1_es_ethereum-test_signtx.py::test_signtx_fee_info": "2fb56492bae54739eb8af2259ea05fff90397dc4ca16ed0ab859566a97c5ec48", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "82e98ccae78a78f96e67e7ba2d137036375d97c2e3644c4ecbc63941cbef8adc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "69aa565c1f41969831a03a37075ff02a16333357a956aabdf0771af9be070fdd", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "45430e948c1725caf0769bb44bc338d1ecb4258d8a88a85e9849131674be08d9", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "601545c5963df3c325a2d72510d0ceb1e9c05cd753b802c9e44fb7735ca1bbe1", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "aaaacd4652ba80623098ea6606d5d284c3c8eb13938919339c25db8a120568de", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "7dfc04f0d6289822e0ae017dd517df67f2cedc26d7a7dfca0f952b1a7489896f", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "82e98ccae78a78f96e67e7ba2d137036375d97c2e3644c4ecbc63941cbef8adc", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "69aa565c1f41969831a03a37075ff02a16333357a956aabdf0771af9be070fdd", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "45430e948c1725caf0769bb44bc338d1ecb4258d8a88a85e9849131674be08d9", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "601545c5963df3c325a2d72510d0ceb1e9c05cd753b802c9e44fb7735ca1bbe1", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "aaaacd4652ba80623098ea6606d5d284c3c8eb13938919339c25db8a120568de", +"T3T1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "7dfc04f0d6289822e0ae017dd517df67f2cedc26d7a7dfca0f952b1a7489896f", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", "T3T1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "9e2b64f79ece46f82e116b01abc0a03d1edf7bb2deb53a5216e6665f97ac2840", @@ -21825,6 +21873,18 @@ "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "19b948f557ebf500d80540e5b86a03f2be9dfa8e6a30686e4c3efa89689b78e1", "T3T1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "19b948f557ebf500d80540e5b86a03f2be9dfa8e6a30686e4c3efa89689b78e1", "T3T1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "7f9aece317e149abd566d9028ad68752eb8226e2775d1655c3e60ef5a6980a63", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "faabf370b82af0a2f632716077c32a46e1c307b2daf3ae812c1f6fc1e2077845", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e84b2a35327660d4a054aea04edf89c0a949714a11dc9c2ce80765366ff7ff88", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "1bac8774a8961b42e03dcc6a44140751b4788c94e4edd196269ca60c8d495f49", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "a2fe6f20640f425dd26276d79135c9964efe426b9f2d054f4c0124b2468801e0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "d551310247673206f3b372b9c669716ea8435fe6f23d900527d0086842a1a5d3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "9f2d47695f80731856f5c7e7395dc48affc7f2a0a98c41af93a06c4d9d8af5da", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "faabf370b82af0a2f632716077c32a46e1c307b2daf3ae812c1f6fc1e2077845", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e84b2a35327660d4a054aea04edf89c0a949714a11dc9c2ce80765366ff7ff88", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "1bac8774a8961b42e03dcc6a44140751b4788c94e4edd196269ca60c8d495f49", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "a2fe6f20640f425dd26276d79135c9964efe426b9f2d054f4c0124b2468801e0", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "d551310247673206f3b372b9c669716ea8435fe6f23d900527d0086842a1a5d3", +"T3T1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "9f2d47695f80731856f5c7e7395dc48affc7f2a0a98c41af93a06c4d9d8af5da", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", "T3T1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "84bc5711f80dff8ebb527d9204da271acc3ce29e17caacec880253ff12a418c2", From 777ad11becfa9d2c2bebb21b1aa1f0c6125cd766 Mon Sep 17 00:00:00 2001 From: Martin Milata <martin@martinmilata.cz> Date: Sun, 21 Jul 2024 20:54:23 +0200 Subject: [PATCH 595/626] feat(core/translations): add it, pt Partially added TR. --- .github/workflows/core.yml | 2 +- core/.changelog.d/4047.added | 1 + .../fonts/font_pixeloperatormono_regular_8.c | 2 + .../lib/fonts/font_robotomono_medium_21.c | 2 + .../lib/fonts/font_robotomono_medium_21.h | 2 + .../lib/fonts/font_ttsatoshi_demibold_42.c | 2 + .../lib/fonts/font_ttsatoshi_demibold_42.h | 2 + core/embed/lib/fonts/font_unifont_bold_16.h | 2 + .../embed/lib/fonts/font_unifont_regular_16.c | 2 + .../embed/lib/fonts/font_unifont_regular_16.h | 2 + core/tools/codegen/foreign_chars.py | 53 + core/tools/codegen/gen_font.py | 3 + core/tools/translations/helpers.py | 2 +- core/translations/cli.py | 33 + core/translations/cs.json | 2 +- .../fonts/font_pixeloperator_bold_8_it.json | 9 + .../fonts/font_pixeloperator_bold_8_pt.json | 21 + .../fonts/font_pixeloperator_bold_8_tr.json | 14 + .../font_pixeloperator_bold_8_upper_it.json | 9 + .../font_pixeloperator_bold_8_upper_pt.json | 21 + .../font_pixeloperator_bold_8_upper_tr.json | 14 + .../font_pixeloperator_regular_8_it.json | 9 + .../font_pixeloperator_regular_8_pt.json | 21 + .../font_pixeloperator_regular_8_tr.json | 14 + ...font_pixeloperator_regular_8_upper_it.json | 9 + ...font_pixeloperator_regular_8_upper_pt.json | 21 + ...font_pixeloperator_regular_8_upper_tr.json | 14 + .../font_pixeloperatormono_regular_8_it.json | 9 + .../font_pixeloperatormono_regular_8_pt.json | 21 + .../font_pixeloperatormono_regular_8_tr.json | 14 + .../fonts/font_roboto_bold_20_it.json | 9 + .../fonts/font_roboto_bold_20_pt.json | 21 + .../fonts/font_roboto_bold_20_tr.json | 14 + .../fonts/font_roboto_regular_20_it.json | 9 + .../fonts/font_roboto_regular_20_pt.json | 21 + .../fonts/font_roboto_regular_20_tr.json | 14 + .../fonts/font_robotomono_medium_20_it.json | 9 + .../fonts/font_robotomono_medium_20_pt.json | 21 + .../fonts/font_robotomono_medium_20_tr.json | 14 + .../fonts/font_robotomono_medium_21_it.json | 9 + .../fonts/font_robotomono_medium_21_pt.json | 21 + .../fonts/font_robotomono_medium_21_tr.json | 14 + .../fonts/font_tthoves_bold_17_upper_it.json | 9 + .../fonts/font_tthoves_bold_17_upper_pt.json | 21 + .../fonts/font_tthoves_bold_17_upper_tr.json | 14 + .../fonts/font_tthoves_demibold_21_it.json | 9 + .../fonts/font_tthoves_demibold_21_pt.json | 21 + .../fonts/font_tthoves_demibold_21_tr.json | 14 + .../fonts/font_tthoves_regular_21_it.json | 9 + .../fonts/font_tthoves_regular_21_pt.json | 21 + .../fonts/font_tthoves_regular_21_tr.json | 14 + .../fonts/font_ttsatoshi_demibold_18_it.json | 9 + .../fonts/font_ttsatoshi_demibold_18_pt.json | 21 + .../fonts/font_ttsatoshi_demibold_18_tr.json | 14 + .../fonts/font_ttsatoshi_demibold_21_it.json | 9 + .../fonts/font_ttsatoshi_demibold_21_pt.json | 21 + .../fonts/font_ttsatoshi_demibold_21_tr.json | 14 + .../fonts/font_ttsatoshi_demibold_42_it.json | 9 + .../fonts/font_ttsatoshi_demibold_42_pt.json | 21 + .../fonts/font_ttsatoshi_demibold_42_tr.json | 14 + .../fonts/font_unifont_bold_16_it.json | 9 + .../fonts/font_unifont_bold_16_pt.json | 21 + .../fonts/font_unifont_bold_16_tr.json | 14 + .../fonts/font_unifont_regular_16_it.json | 9 + .../fonts/font_unifont_regular_16_pt.json | 21 + .../fonts/font_unifont_regular_16_tr.json | 14 + core/translations/it.json | 915 ++ core/translations/pt.json | 915 ++ core/translations/signatures.json | 6 +- core/translations/tr.json | 915 ++ tests/github.py | 2 +- tests/ui_tests/common.py | 2 - tests/ui_tests/fixtures.json | 12993 +++++++++++++++- 73 files changed, 16593 insertions(+), 15 deletions(-) create mode 100644 core/.changelog.d/4047.added create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_it.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_pt.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_tr.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_upper_it.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_upper_pt.json create mode 100644 core/translations/fonts/font_pixeloperator_bold_8_upper_tr.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_it.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_pt.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_tr.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_upper_it.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_upper_pt.json create mode 100644 core/translations/fonts/font_pixeloperator_regular_8_upper_tr.json create mode 100644 core/translations/fonts/font_pixeloperatormono_regular_8_it.json create mode 100644 core/translations/fonts/font_pixeloperatormono_regular_8_pt.json create mode 100644 core/translations/fonts/font_pixeloperatormono_regular_8_tr.json create mode 100644 core/translations/fonts/font_roboto_bold_20_it.json create mode 100644 core/translations/fonts/font_roboto_bold_20_pt.json create mode 100644 core/translations/fonts/font_roboto_bold_20_tr.json create mode 100644 core/translations/fonts/font_roboto_regular_20_it.json create mode 100644 core/translations/fonts/font_roboto_regular_20_pt.json create mode 100644 core/translations/fonts/font_roboto_regular_20_tr.json create mode 100644 core/translations/fonts/font_robotomono_medium_20_it.json create mode 100644 core/translations/fonts/font_robotomono_medium_20_pt.json create mode 100644 core/translations/fonts/font_robotomono_medium_20_tr.json create mode 100644 core/translations/fonts/font_robotomono_medium_21_it.json create mode 100644 core/translations/fonts/font_robotomono_medium_21_pt.json create mode 100644 core/translations/fonts/font_robotomono_medium_21_tr.json create mode 100644 core/translations/fonts/font_tthoves_bold_17_upper_it.json create mode 100644 core/translations/fonts/font_tthoves_bold_17_upper_pt.json create mode 100644 core/translations/fonts/font_tthoves_bold_17_upper_tr.json create mode 100644 core/translations/fonts/font_tthoves_demibold_21_it.json create mode 100644 core/translations/fonts/font_tthoves_demibold_21_pt.json create mode 100644 core/translations/fonts/font_tthoves_demibold_21_tr.json create mode 100644 core/translations/fonts/font_tthoves_regular_21_it.json create mode 100644 core/translations/fonts/font_tthoves_regular_21_pt.json create mode 100644 core/translations/fonts/font_tthoves_regular_21_tr.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_18_it.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_18_pt.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_18_tr.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_21_it.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_21_pt.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_21_tr.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_42_it.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_42_pt.json create mode 100644 core/translations/fonts/font_ttsatoshi_demibold_42_tr.json create mode 100644 core/translations/fonts/font_unifont_bold_16_it.json create mode 100644 core/translations/fonts/font_unifont_bold_16_pt.json create mode 100644 core/translations/fonts/font_unifont_bold_16_tr.json create mode 100644 core/translations/fonts/font_unifont_regular_16_it.json create mode 100644 core/translations/fonts/font_unifont_regular_16_pt.json create mode 100644 core/translations/fonts/font_unifont_regular_16_tr.json create mode 100644 core/translations/it.json create mode 100644 core/translations/pt.json create mode 100644 core/translations/tr.json diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 184d289450..0ae4645f98 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -36,7 +36,7 @@ jobs: - id: set_vars name: Set variables run: | - echo test_lang=${{ github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'translations') && '[\"en\", \"cs\", \"fr\", \"de\", \"es\"]' || '[\"en\"]' }} >> $GITHUB_OUTPUT + echo test_lang=${{ github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'translations') && '[\"en\", \"cs\", \"fr\", \"de\", \"es\", \"it\", \"pt\"]' || '[\"en\"]' }} >> $GITHUB_OUTPUT echo asan=${{ github.event_name == 'schedule' && '[\"noasan\", \"asan\"]' || '[\"noasan\"]' }} >> $GITHUB_OUTPUT cat $GITHUB_OUTPUT diff --git a/core/.changelog.d/4047.added b/core/.changelog.d/4047.added new file mode 100644 index 0000000000..a2d3047eb4 --- /dev/null +++ b/core/.changelog.d/4047.added @@ -0,0 +1 @@ +Initial support for Italian and Portugese translations. diff --git a/core/embed/lib/fonts/font_pixeloperatormono_regular_8.c b/core/embed/lib/fonts/font_pixeloperatormono_regular_8.c index 79baa6a09a..0f8ea4e9cd 100644 --- a/core/embed/lib/fonts/font_pixeloperatormono_regular_8.c +++ b/core/embed/lib/fonts/font_pixeloperatormono_regular_8.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> // clang-format off diff --git a/core/embed/lib/fonts/font_robotomono_medium_21.c b/core/embed/lib/fonts/font_robotomono_medium_21.c index bdb5b81efb..50077e6ebd 100644 --- a/core/embed/lib/fonts/font_robotomono_medium_21.c +++ b/core/embed/lib/fonts/font_robotomono_medium_21.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> // clang-format off diff --git a/core/embed/lib/fonts/font_robotomono_medium_21.h b/core/embed/lib/fonts/font_robotomono_medium_21.h index 2ae5de2b27..224fb3762a 100644 --- a/core/embed/lib/fonts/font_robotomono_medium_21.h +++ b/core/embed/lib/fonts/font_robotomono_medium_21.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> #if TREZOR_FONT_BPP != 4 diff --git a/core/embed/lib/fonts/font_ttsatoshi_demibold_42.c b/core/embed/lib/fonts/font_ttsatoshi_demibold_42.c index 99a6be3fdf..20bc5b8f8f 100644 --- a/core/embed/lib/fonts/font_ttsatoshi_demibold_42.c +++ b/core/embed/lib/fonts/font_ttsatoshi_demibold_42.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> // clang-format off diff --git a/core/embed/lib/fonts/font_ttsatoshi_demibold_42.h b/core/embed/lib/fonts/font_ttsatoshi_demibold_42.h index b69ede553e..6b737171e2 100644 --- a/core/embed/lib/fonts/font_ttsatoshi_demibold_42.h +++ b/core/embed/lib/fonts/font_ttsatoshi_demibold_42.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> #if TREZOR_FONT_BPP != 4 diff --git a/core/embed/lib/fonts/font_unifont_bold_16.h b/core/embed/lib/fonts/font_unifont_bold_16.h index c28e0048d6..976e13c18d 100644 --- a/core/embed/lib/fonts/font_unifont_bold_16.h +++ b/core/embed/lib/fonts/font_unifont_bold_16.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> #if TREZOR_FONT_BPP != 1 diff --git a/core/embed/lib/fonts/font_unifont_regular_16.c b/core/embed/lib/fonts/font_unifont_regular_16.c index 8ef83037cb..ecb7539457 100644 --- a/core/embed/lib/fonts/font_unifont_regular_16.c +++ b/core/embed/lib/fonts/font_unifont_regular_16.c @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> // clang-format off diff --git a/core/embed/lib/fonts/font_unifont_regular_16.h b/core/embed/lib/fonts/font_unifont_regular_16.h index f9a1ec2c1c..108b384d9a 100644 --- a/core/embed/lib/fonts/font_unifont_regular_16.h +++ b/core/embed/lib/fonts/font_unifont_regular_16.h @@ -1,3 +1,5 @@ +// This file is generated by core/tools/codegen/gen_font.py + #include <stdint.h> #if TREZOR_FONT_BPP != 1 diff --git a/core/tools/codegen/foreign_chars.py b/core/tools/codegen/foreign_chars.py index 344c5683dc..f331b714a9 100644 --- a/core/tools/codegen/foreign_chars.py +++ b/core/tools/codegen/foreign_chars.py @@ -97,9 +97,62 @@ "ü", ) +italian_chars = ( + "À", + "à", + "è", + "é", + "ì", + "ò", + "ù", +) + + +portugese_chars = ( + "º", + "Á", + "Ã", + "Ç", + "Í", + "Ó", + "Õ", + "Ú", + "à", + "á", + "ã", + "ç", + "é", + "ê", + "í", + "ó", + "ô", + "õ", + "ú", +) + + +turkish_chars = ( + "Ç", + "Ö", + "Ü", + "ç", + "ö", + "ü", + "Ğ", + "ğ", + "İ", + "ı", + "Ş", + "ş", +) + + all_languages = { "cs": czech_chars, "fr": french_chars, "es": spanish_chars, "de": german_chars, + "it": italian_chars, + "pt": portugese_chars, + "tr": turkish_chars, } diff --git a/core/tools/codegen/gen_font.py b/core/tools/codegen/gen_font.py index 0c3660008b..bd86912d83 100755 --- a/core/tools/codegen/gen_font.py +++ b/core/tools/codegen/gen_font.py @@ -41,11 +41,14 @@ def _normalize(s: str) -> str: "Ä", "À", "Â", + "Ã", "Æ", "Î", "Ï", + "Ì", "î", "ï", + "ì", "ÿ", "Ý", "Ÿ", diff --git a/core/tools/translations/helpers.py b/core/tools/translations/helpers.py index f54109506e..e2ad419218 100644 --- a/core/tools/translations/helpers.py +++ b/core/tools/translations/helpers.py @@ -6,5 +6,5 @@ TRANSLATIONS_DIR = CORE / "translations" ENGLISH_LANG = "en" -FOREIGN_LANGUAGES = ["cs", "de", "es", "fr"] +FOREIGN_LANGUAGES = ["cs", "de", "es", "fr", "it", "pt", "tr"] ALL_LANGUAGES = [ENGLISH_LANG] + FOREIGN_LANGUAGES diff --git a/core/translations/cli.py b/core/translations/cli.py index 20cf7c756b..8053f1ed98 100644 --- a/core/translations/cli.py +++ b/core/translations/cli.py @@ -394,5 +394,38 @@ def merge(update_json: t.Tuple[t.TextIO, ...]) -> None: click.echo(f"Updated {lang}") +@cli.command() +@click.argument("lang_file", type=click.File("r"), nargs=1) +def characters(lang_file: t.TextIO) -> None: + """Extract all non-ASCII characters.""" + all_chars = set(lang_file.read()) + chars = filter(lambda c: ord(c) > 127, all_chars) + print("(") + for c in sorted(chars): + print(f" \"{c}\",") + print(")") + + +@cli.command() +@click.argument("lang_file", type=click.Path(), nargs=1) +def lowercase(lang_file: Path) -> None: + """Convert strings to lowercase.""" + with open(lang_file, "r") as fh: + data = json.load(fh) + new_translations = {} + + def f(s: str) -> str: + if not all(map(lambda c: c.isupper() or not c.isalpha(), s)): + return s + else: + return s[0] + s[1:].lower() + + for k, v in data['translations'].items(): + new_translations[k] = f(v) + + data["translations"] = new_translations + with open(lang_file, "w") as fh: + json.dump(data, fh, indent=2, ensure_ascii=False) + if __name__ == "__main__": cli() diff --git a/core/translations/cs.json b/core/translations/cs.json index 279180ecd5..678f641679 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -138,7 +138,7 @@ "buttons__info": "Informace", "buttons__install": "Nainstalovat", "buttons__more_info": "Další informace", - "buttons__ok_i_understand": "OK, ROZUMÍM", + "buttons__ok_i_understand": "OK, rozumím", "buttons__purchase": "Koupit", "buttons__quit": "Ukončit", "buttons__restart": "Restartovat", diff --git a/core/translations/fonts/font_pixeloperator_bold_8_it.json b/core/translations/fonts/font_pixeloperator_bold_8_it.json new file mode 100644 index 0000000000..5a4473db23 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_it.json @@ -0,0 +1,9 @@ +{ + "À": "060707000760c7b3cffcc0", + "à": "060707000760c7837f37c0", + "è": "060707000760c7b3ff0780", + "é": "060707000718c7b3ff0780", + "ì": "0307050007cc36d8", + "ò": "060707000760c7b3cf3780", + "ù": "060707000760ccf3cf3780" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_pt.json b/core/translations/fonts/font_pixeloperator_bold_8_pt.json new file mode 100644 index 0000000000..c7eacc90c3 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_pt.json @@ -0,0 +1,21 @@ +{ + "o": "06050700057b3cf378", + "Á": "060707000718c7b3cffcc0", + "Ã": "070707000777b9e66cdfb300", + "Ç": "06080700077b3c30cde19c00", + "Í": "0307050107786db0", + "Ó": "060707000718c7b3cf3780", + "Õ": "070707000777b9e66cd99e00", + "Ú": "060707000718ccf3cf3780", + "à": "060707000760c7837f37c0", + "á": "060707000718c7837f37c0", + "ã": "070707000777b9e067d99f00", + "ç": "06080700077b3c3378c19c00", + "é": "060707000718c7b3ff0780", + "ê": "0707070007fd0de66fd81e00", + "í": "0307050107786db0", + "ó": "060707000718c7b3cf3780", + "ô": "0707070007fd0de66cd99e00", + "õ": "070707000777b9e66cd99e00", + "ú": "060707000718ccf3cf3780" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_tr.json b/core/translations/fonts/font_pixeloperator_bold_8_tr.json new file mode 100644 index 0000000000..4ec93ae988 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "06080700077b3c30cde19c00", + "Ö": "0607070007cc07b3cf3780", + "Ü": "0607070007cc0cf3cf3780", + "ç": "06080700077b3c3378c19c00", + "ö": "0607070007cc07b3cf3780", + "ü": "0607070007cc0cf3cf3780", + "Ğ": "0507080107fc6318c7e0", + "ğ": "0507080107fc6318c7e0", + "İ": "0507080107fc6318c7e0", + "ı": "0205050105ffc0", + "Ş": "0507080107fc6318c7e0", + "ş": "0507080107fc6318c7e0" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_upper_it.json b/core/translations/fonts/font_pixeloperator_bold_8_upper_it.json new file mode 100644 index 0000000000..b2785242d0 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_upper_it.json @@ -0,0 +1,9 @@ +{ + "À": "060707000760c7b3cffcc0", + "à": "060707000760c7b3cffcc0", + "è": "060707000760cff0f30fc0", + "é": "060707000718cff0f30fc0", + "ì": "0307050007cc36d8", + "ò": "060707000760c7b3cf3780", + "ù": "060707000760ccf3cf3780" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_upper_pt.json b/core/translations/fonts/font_pixeloperator_bold_8_upper_pt.json new file mode 100644 index 0000000000..0de15ed88f --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_upper_pt.json @@ -0,0 +1,21 @@ +{ + "o": "06070700077b3cf3cf3780", + "Á": "060707000718c7b3cffcc0", + "Ã": "070707000777b9e66cdfb300", + "Ç": "06080700077b3c30cde19c00", + "Í": "0307050107786db0", + "Ó": "060707000718c7b3cf3780", + "Õ": "070707000777b9e66cd99e00", + "Ú": "060707000718ccf3cf3780", + "à": "060707000760c7b3cffcc0", + "á": "060707000718c7b3cffcc0", + "ã": "070707000777b9e66cdfb300", + "ç": "06080700077b3c30cde19c00", + "é": "060707000718cff0f30fc0", + "ê": "06070700077b3ff0f30fc0", + "í": "0307050107786db0", + "ó": "060707000718c7b3cf3780", + "ô": "0707070007fd0de66cd99e00", + "õ": "070707000777b9e66cd99e00", + "ú": "060707000718ccf3cf3780" +} diff --git a/core/translations/fonts/font_pixeloperator_bold_8_upper_tr.json b/core/translations/fonts/font_pixeloperator_bold_8_upper_tr.json new file mode 100644 index 0000000000..492548df5f --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_bold_8_upper_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "06080700077b3c30cde19c00", + "Ö": "0607070007cc07b3cf3780", + "Ü": "0607070007cc0cf3cf3780", + "ç": "06080700077b3c30cde19c00", + "ö": "0607070007cc07b3cf3780", + "ü": "0607070007cc0cf3cf3780", + "Ğ": "0507080107fc6318c7e0", + "ğ": "0507080107fc6318c7e0", + "İ": "0507080107fc6318c7e0", + "ı": "0207050107fffc", + "Ş": "0507080107fc6318c7e0", + "ş": "0507080107fc6318c7e0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_it.json b/core/translations/fonts/font_pixeloperator_regular_8_it.json new file mode 100644 index 0000000000..c9b63af1bd --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_it.json @@ -0,0 +1,9 @@ +{ + "À": "0507060007411d18fe20", + "à": "0507060007411c17c5e0", + "è": "0507060007411d1fc1c0", + "é": "0507060007111d1fc1c0", + "ì": "02070400079154", + "ò": "0507060007411d18c5c0", + "ù": "0507060007412318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_pt.json b/core/translations/fonts/font_pixeloperator_regular_8_pt.json new file mode 100644 index 0000000000..3e6250d548 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_pt.json @@ -0,0 +1,21 @@ +{ + "o": "050506000574631700", + "Á": "0507060007111d18fe20", + "Ã": "06070600076667228be880", + "Ç": "0508060007746108b84c00", + "Í": "020704010762a8", + "Ó": "0507060007111d18c5c0", + "Õ": "06070600076667228a2700", + "Ú": "0507060007112318c5c0", + "à": "0507060007411c17c5e0", + "á": "0507060007111c17c5e0", + "ã": "06070600076667027a2780", + "ç": "0508060007746117104c00", + "é": "0507060007111d1fc1c0", + "ê": "0507060007229d1fc1c0", + "í": "020704010762a8", + "ó": "0507060007111d18c5c0", + "ô": "0507060007229d18c5c0", + "õ": "06070600076667228a2700", + "ú": "0507060007112318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_tr.json b/core/translations/fonts/font_pixeloperator_regular_8_tr.json new file mode 100644 index 0000000000..e3636e13d7 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0508060007746108b84c00", + "Ö": "0507060007501d18c5c0", + "Ü": "0507060007502318c5c0", + "ç": "0508060007746117104c00", + "ö": "0507060007501d18c5c0", + "ü": "0507060007502318c5c0", + "Ğ": "0507080107fc6318c7e0", + "ğ": "0507080107fc6318c7e0", + "İ": "0507080107fc6318c7e0", + "ı": "0105040105f8", + "Ş": "0507080107fc6318c7e0", + "ş": "0507080107fc6318c7e0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_upper_it.json b/core/translations/fonts/font_pixeloperator_regular_8_upper_it.json new file mode 100644 index 0000000000..05df4564ee --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_upper_it.json @@ -0,0 +1,9 @@ +{ + "À": "0507060007411d18fe20", + "à": "0507060007411d18fe20", + "è": "0507060007413f0e43e0", + "é": "0507060007113f0e43e0", + "ì": "02070400079154", + "ò": "0507060007411d18c5c0", + "ù": "0507060007412318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_upper_pt.json b/core/translations/fonts/font_pixeloperator_regular_8_upper_pt.json new file mode 100644 index 0000000000..2527cc82e5 --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_upper_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0507060007746318c5c0", + "Á": "0507060007111d18fe20", + "Ã": "06070600076667228be880", + "Ç": "0508060007746108b84c00", + "Í": "020704010762a8", + "Ó": "0507060007111d18c5c0", + "Õ": "06070600076667228a2700", + "Ú": "0507060007112318c5c0", + "à": "0507060007411d18fe20", + "á": "0507060007111d18fe20", + "ã": "06070600076667228be880", + "ç": "0508060007746108b84c00", + "é": "0507060007113f0e43e0", + "ê": "050706000722bf0e43e0", + "í": "020704010762a8", + "ó": "0507060007111d18c5c0", + "ô": "0507060007229d18c5c0", + "õ": "06070600076667228a2700", + "ú": "0507060007112318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperator_regular_8_upper_tr.json b/core/translations/fonts/font_pixeloperator_regular_8_upper_tr.json new file mode 100644 index 0000000000..3102918a5f --- /dev/null +++ b/core/translations/fonts/font_pixeloperator_regular_8_upper_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0508060007746108b84c00", + "Ö": "0507060007501d18c5c0", + "Ü": "0507060007502318c5c0", + "ç": "0508060007746108b84c00", + "ö": "0507060007501d18c5c0", + "ü": "0507060007502318c5c0", + "Ğ": "0507080107fc6318c7e0", + "ğ": "0507080107fc6318c7e0", + "İ": "0507080107fc6318c7e0", + "ı": "0107040107fe", + "Ş": "0507080107fc6318c7e0", + "ş": "0507080107fc6318c7e0" +} diff --git a/core/translations/fonts/font_pixeloperatormono_regular_8_it.json b/core/translations/fonts/font_pixeloperatormono_regular_8_it.json new file mode 100644 index 0000000000..0c564efcff --- /dev/null +++ b/core/translations/fonts/font_pixeloperatormono_regular_8_it.json @@ -0,0 +1,9 @@ +{ + "À": "0507070007411d18fe20", + "à": "0507070007411c17c5e0", + "è": "0507070007411d1fc1c0", + "é": "0507070007111d1fc1c0", + "ì": "050707000741384213e0", + "ò": "0507070007411d18c5c0", + "ù": "0507070007412318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperatormono_regular_8_pt.json b/core/translations/fonts/font_pixeloperatormono_regular_8_pt.json new file mode 100644 index 0000000000..09536e707c --- /dev/null +++ b/core/translations/fonts/font_pixeloperatormono_regular_8_pt.json @@ -0,0 +1,21 @@ +{ + "o": "050507000574631700", + "Á": "0507070007111d18fe20", + "Ã": "06070700076667228be880", + "Ç": "0508070007746108b84c00", + "Í": "0507070007113e4213e0", + "Ó": "0507070007111d18c5c0", + "Õ": "06070700076667228a2700", + "Ú": "0507070007112318c5c0", + "à": "0507070007411c17c5e0", + "á": "0507070007111c17c5e0", + "ã": "06070700076667027a2780", + "ç": "0508070007746117104c00", + "é": "0507070007111d1fc1c0", + "ê": "0507070007229d1fc1c0", + "í": "050707000711384213e0", + "ó": "0507070007111d18c5c0", + "ô": "0507070007229d18c5c0", + "õ": "06070700076667228a2700", + "ú": "0507070007112318c5c0" +} diff --git a/core/translations/fonts/font_pixeloperatormono_regular_8_tr.json b/core/translations/fonts/font_pixeloperatormono_regular_8_tr.json new file mode 100644 index 0000000000..07cc2d96fe --- /dev/null +++ b/core/translations/fonts/font_pixeloperatormono_regular_8_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0508070007746108b84c00", + "Ö": "0507070007501d18c5c0", + "Ü": "0507070007502318c5c0", + "ç": "0508070007746117104c00", + "ö": "0507070007501d18c5c0", + "ü": "0507070007502318c5c0", + "Ğ": "0507070007fc6318c7e0", + "ğ": "0507070007fc6318c7e0", + "İ": "0507070007fc6318c7e0", + "ı": "0505070005e1084f80", + "Ş": "0507070007fc6318c7e0", + "ş": "0507070007fc6318c7e0" +} diff --git a/core/translations/fonts/font_roboto_bold_20_it.json b/core/translations/fonts/font_roboto_bold_20_it.json new file mode 100644 index 0000000000..fc7eb589a2 --- /dev/null +++ b/core/translations/fonts/font_roboto_bold_20_it.json @@ -0,0 +1,9 @@ +{ + "À": "0e120d00120060ff080000000000f83f000000000090df000000000000000000000000d0ff0400000000f3ff0a00000000f9ff1f00000000fefe6f00000050fff6cf000000b0ffa1ff020000f1cf50ff080000f76f00ff0e0000fd1f00fa4f0030ffffffffbf0090ffffffffff01f0ff6666b6ff07f5bf000040ff0dfc5f000000fe3f", + "à": "0b0f0b000f00fb2f00000000d0cf0000000010fe07000000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "è": "0b0f0b000f00fc2f00000000d1bf0000000020fe0600000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "é": "0b0f0b000f000080ff08000000f49f00000000d80a00000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "ì": "060f06000ff68f0080ff0300f90c00000000fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f", + "ò": "0b0f0b000f00f86f0000000090ff0100000000fb0b00000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "ù": "0a0f0b010f90ff05000000fa1e000000b0af00000000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f" +} diff --git a/core/translations/fonts/font_roboto_bold_20_pt.json b/core/translations/fonts/font_roboto_bold_20_pt.json new file mode 100644 index 0000000000..be393c3b0b --- /dev/null +++ b/core/translations/fonts/font_roboto_bold_20_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0b0b0b000b0081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "Á": "0e120d0012000000e2df0100000000fc2e0000000030eb030000000000000000000000d0ff0400000000f3ff0a00000000f9ff1f00000000fefe6f00000050fff6cf000000b0ffa1ff020000f1cf50ff080000f76f00ff0e0000fd1f00fa4f0030ffffffffbf0090ffffffffff01f0ff6666b6ff07f5bf000040ff0dfc5f000000fe3f", + "Ã": "0e120d00120000b805c404000080ffeffe020000c00dd56e0000000000000000000000d0ff0400000000f3ff0a00000000f9ff1f00000000fefe6f00000050fff6cf000000b0ffa1ff020000f1cf50ff080000f76f00ff0e0000fd1f00fa4f0030ffffffffbf0090ffffffffff01f0ff6666b6ff07f5bf000040ff0dfc5f000000fe3f", + "Ç": "0d130d000e0020d8ff6c000000f4ffffff0c0010ffbf87fdaf0090ff0800e0ff01e0ff010090ff05f0df0000000000f2df0000000000f2df0000000000f1df0000000000e0ff000080ff0590ff0700e0ff0220ffaf77fdbf0000f5ffffff1c000020e9ff7c0000000060df010000000050fe0d0000000000f41f0000000030fd0d0000000040ae020000", + "Í": "061206011200fd2ea0ff03b24e00000000f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00f86f00", + "Ó": "0d120e0012000000d1ef0200000000fb3f0000000020eb040000000000000000000010d7ef6c000000e3ffffff1c0000fecf87fdbf0080ff0a00d0ff04d0ff020050ff0af0ff000010ff0df2df000000ff0ef2df000000ff0ef0ff000020ff0dd0ff020060ff0a80ff0a00d0ff0510fecf77fdcf0000e3ffffff1c000010d7ef6c0000", + "Õ": "0d120e00120000b706d206000060ffeffe040000a01fc48f0000000000000000000010d7ef6c000000e3ffffff1c0000fecf87fdbf0080ff0a00d0ff04d0ff020050ff0af0ff000010ff0df2df000000ff0ef2df000000ff0ef0ff000020ff0dd0ff020060ff0a80ff0a00d0ff0510fecf77fdcf0000e3ffffff1c000010d7ef6c0000", + "Ú": "0c120d0112000040ff0b000000e1cf00000000c61d0000000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "à": "0b0f0b000f00fb2f00000000d0cf0000000010fe07000000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "á": "0b0f0b000f000070ff09000000f3af00000000d80b000000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "ã": "0b0f0b000f00a229900c0000fefffd0c00308f81df020000000000000000b4fe8d010070ffffff0d00f0ef23f96f00000000f39f0000c6feffaf0090ffbefbaf00f2cf00f3af00f48f00f3af00f3df43fdaf00c0ffffffbf0000e8cfe3ef00", + "ç": "0a100a000b0091fe9e0120feffff1eb0ff59fa9ff1cf00e0dff48f001022f57f000000f48f000000f1cf00b0bdb0ff59f99f20feffff1e0091fe9e010000fb09000000f99f00000090df000000f69f000000e80800", + "é": "0b0f0b000f000080ff08000000f49f00000000d80a00000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "ê": "0b0f0b000f0030fe0b000000f5cfdf020020eb05da08000000000000000070fdae020000fcffff3f0090ff59f7df00f0cf0090ff02f3ffffffff04f4ffeeeeee04f3bf00000000f0ff02001700a0ff6ea5bf0010fcffff8f000070fdbf0400", + "í": "060f05010f20ff1dd0ef01b42e00000000fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00fb2f00", + "ó": "0b0f0b000f000030ff0c000000e1df01000000c51d00000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "ô": "0b0f0b000f0010fb2e000000d2cfff050000d909e61b000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "õ": "0b0f0b000f00914a602c0000fbfffd1f0000ce60ee05000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "ú": "0a0f0b010f0000f3cf000010fe0d000050dc01000000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f" +} diff --git a/core/translations/fonts/font_roboto_bold_20_tr.json b/core/translations/fonts/font_roboto_bold_20_tr.json new file mode 100644 index 0000000000..a9f68707f3 --- /dev/null +++ b/core/translations/fonts/font_roboto_bold_20_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0d130d000e0020d8ff6c000000f4ffffff0c0010ffbf87fdaf0090ff0800e0ff01e0ff010090ff05f0df0000000000f2df0000000000f2df0000000000f1df0000000000e0ff000080ff0590ff0700e0ff0220ffaf77fdbf0000f5ffffff1c000020e9ff7c0000000060df010000000050fe0d0000000000f41f0000000030fd0d0000000040ae020000", + "Ö": "0d120e00120010260063000000b0cf00ff080000708f00fb0400000000000000000010d7ef6c000000e3ffffff1c0000fecf87fdbf0080ff0a00d0ff04d0ff020050ff0af0ff000010ff0df2df000000ff0ef2df000000ff0ef0ff000020ff0dd0ff020060ff0a80ff0a00d0ff0510fecf77fdcf0000e3ffffff1c000010d7ef6c0000", + "Ü": "0c120d011200640050040010ff06f52f0000ec03e21d00000000000000fd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000fe0ffd1f0000ff0ffa6f0040ff0df4ff69e8ff0780ffffffaf0000b4febe0500", + "ç": "0a100a000b0091fe9e0120feffff1eb0ff59fa9ff1cf00e0dff48f001022f57f000000f48f000000f1cf00b0bdb0ff59f99f20feffff1e0091fe9e010000fb09000000f99f00000090df000000f69f000000e80800", + "ö": "0b0f0b000f00630050050000ff08f44f0000fb04d11d000000000000000081fdae030010fdffff4f00a0ff5bf8ef00f1df0090ff06f49f0040ff09f57f0030ff0af49f0040ff09f1df0090ff06b0ff5bf8ef0010fdffff4f000081fdae0300", + "ü": "0a0f0b010f3006005500f17f40ff03c04e20de010000000000ff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2fff0d00fb2ffe0e00fb2ffc9f84ff2ff5ffffff2f60fd7df82f", + "Ğ": "0d120e001200708f00fe01000020ffcabf00000000c3ef190000000000000000000010d8ff8d010000e3ffffff2e0010febf66fcdf0070ff0a00c0ff03d0ff020050cc05f0ff0000000000f0ef0000000000f1ef00f1ffff08f0ff00f1ffff08d0ff032072ff0870ff0b0060ff0810fecf67d8ff0800e3ffffffef030010c7ffbe0600", + "ğ": "0b130b000f00fe02f50b0000f8adfe05000070fd5d000000000000000000b3ff7bff0520ffffffff05b0ff5bf8ff05f1ef0080ff05f49f0080ff05f58f0080ff05f49f0080ff05f1ef0080ff05b0ff5bf7ff0520ffffffff0500b2ff9aff04000200b0ff0220af44f9df0060ffffff3f0000b4fe9d0100", + "İ": "04120601129108f74fe31d0000f86ff86ff86ff86ff86ff86ff86ff86ff86ff86ff86ff86ff86ff86f", + "ı": "040b05010bfb2ffb2ffb2ffb2ffb2ffb2ffb2ffb2ffb2ffb2ffb2f", + "Ş": "0c130c000e0060ecef3a0010fdffffff0690ff6d95ff2fd0ff0200f87fc0ff0600311350ffcf16000000f7ffff3b000020e9ffff06000000b4ff2f72470000f97ff2df0000f78fc0ff6c75ff5f10fdffffff0a0060ebef5b000000c08f00000000a0ff0800000000fa0c00000070ff08000000908d0000", + "ş": "0a100a000b00b4fe7c0070ffffff0cf0df12fa5ff1bf006236c0ff9d050010fbffef060020b7ff3f932900f58ff3bf01f86f90ffffff0d00c5ff7d010000ff05000000fb5f000000d09f000000f95f000000dc0600" +} diff --git a/core/translations/fonts/font_roboto_regular_20_it.json b/core/translations/fonts/font_roboto_regular_20_it.json new file mode 100644 index 0000000000..d3894f7307 --- /dev/null +++ b/core/translations/fonts/font_roboto_regular_20_it.json @@ -0,0 +1,9 @@ +{ + "À": "0d120d00120020fe020000000000f30c0000000000504d000000000000000000000000708f0000000000d0ef0000000000f4fd0500000000faf20b00000010bfa01f000000605f407f000000d00f00de000000f30a00f9040000f90400f30a0000ffffffff1f0050cf8888b86f00c02f000020cf00f20c000000fb03f806000000f509", + "à": "09100b011010fd03000000f21e000000405d00000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "è": "0a100b001000f21e00000040cf00000000d60300000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "é": "0a100b0010000010fe030000b04f000000d20600000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "ì": "0510060010f31e0050bf0000d70300000000000000f70500f70500f70500f70500f70500f70500f70500f70500f70500f70500f705", + "ò": "0b100b001000e12f0000000030df0000000000d50400000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "ù": "09100b011020ee01000000f40c000000603d000000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a" +} diff --git a/core/translations/fonts/font_roboto_regular_20_pt.json b/core/translations/fonts/font_roboto_regular_20_pt.json new file mode 100644 index 0000000000..567a9e6a1e --- /dev/null +++ b/core/translations/fonts/font_roboto_regular_20_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0b0b0b000b0070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "Á": "0d120d0012000000d03f0000000000fa0500000000207d000000000000000000000000708f0000000000d0ef0000000000f4fd0500000000faf20b00000010bfa01f000000605f407f000000d00f00de000000f30a00f9040000f90400f30a0000ffffffff1f0050cf8888b86f00c02f000020cf00f20c000000fb03f806000000f509", + "Ã": "0d120d0012000053007200000060ff7ddb000000c008e73d0000000000000000000000708f0000000000d0ef0000000000f4fd0500000000faf20b00000010bfa01f000000605f407f000000d00f00de000000f30a00f9040000f90400f30a0000ffffffff1f0050cf8888b86f00c02f000020cf00f20c000000fb03f806000000f509", + "Ç": "0c120d010e0070fdcf060020fd9ceabf00c06f0000fb06f50a0000f20dfa040000a00cfc0100000000fd0000000000fd0000000000fc0200000000fa040000900bf50b0000f10dd05f0000fa0620fe8ceaaf000081fdcf06000000f10800000000619e00000000209d00000000e41a0000", + "Í": "051205011200fc05807f00c10900000000f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00f30a00", + "Ó": "0c120e0112000000f90800000050af00000000a00b00000000000000000070fdce050010fdadeaaf00b07f0000fa08f40c0000e00ff9040000805ffb020000507ffd000000409ffd000000409ffb010000507ff9040000805ff40b0000e00fb07f0000fa0810fdadeabf000070fdce0600", + "Õ": "0c120e011200101500270000f2ff882f0000c741fd07000000000000000070fdce050010fdadeaaf00b07f0000fa08f40c0000e00ff9040000805ffb020000507ffd000000409ffd000000409ffb010000507ff9040000805ff40b0000e00fb07f0000fa0810fdadeabf000070fdce0600", + "Ú": "0b120d0112000010fe03000000b04f00000000d3060000000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "à": "09100b011010fd03000000f21e000000405d00000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "á": "09100b01100000c05f000000f8070000109c00000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "ã": "09100b0110005200810040ff7eea00a00ae64e000000000000000000000020e9df0800f29fb7bf00e80300f903000000f60620d9ffff06f38e45f806fb0200f606ee0000f606fc0320fe06f5affafe0750fc8ef40a", + "ç": "0a0f0a000b0080fd9e0100fc8cfb1d708f00608fd00f0000acf00c000000f10b000000f00c000000d00f000068708f00508f00fc8bfa0d0080fd8e000000e803000000932f000000602f000000db0600", + "é": "0a100b0010000010fe030000b04f000000d20600000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "ê": "0a100b00100000f8080000808f9f0000d207d603000000000000000000000060fd9e0100fa8bfb0d607f00707fc00e0000bff0ffffffdff17d777767f00d000000d02f00000070bf00003a00fc8de84f0070fdbe03", + "í": "051005011010fe02c04f00d30500000000000000f70500f70500f70500f70500f70500f70500f70500f70500f70500f70500f70500", + "ó": "0b100b0010000000fd04000000906f00000000c10800000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "ô": "0b100b00100000f70a000000708faf000000c108d504000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "õ": "0b100b001000300510070000f5efb70e00009b70ee04000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "ú": "09100b01100000d13f000000fb050000206d000000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a" +} diff --git a/core/translations/fonts/font_roboto_regular_20_tr.json b/core/translations/fonts/font_roboto_regular_20_tr.json new file mode 100644 index 0000000000..018ffbf379 --- /dev/null +++ b/core/translations/fonts/font_roboto_regular_20_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0c120d010e0070fdcf060020fd9ceabf00c06f0000fb06f50a0000f20dfa040000a00cfc0100000000fd0000000000fd0000000000fc0200000000fa040000900bf50b0000f10dd05f0000fa0620fe8ceaaf000081fdcf06000000f10800000000619e00000000209d00000000e41a0000", + "Ö": "0c120e011200000000000000f10bd00e0000e10ad00d000000000000000070fdce050010fdadeaaf00b07f0000fa08f40c0000e00ff9040000805ffb020000507ffd000000409ffd000000409ffb010000507ff9040000805ff40b0000e00fb07f0000fa0810fdadeabf000070fdce0600", + "Ü": "0b120d011200000000000000f705f4080000f604f30800000000000000fa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30afa030000f30af9040000f40af7060000f608f22e0010fe0270ff9afa7f0000b4febe0300", + "ç": "0a0f0a000b0080fd9e0100fc8cfb1d708f00608fd00f0000acf00c000000f10b000000f00c000000d00f000068708f00508f00fc8bfa0d0080fd8e000000e803000000932f000000602f000000db0600", + "ö": "0b100b001000000000000000f506f2090000f506e209000000000000000000000000000070fdae020000fb8cfa3e00609f0030df00c01f0000fa03f00d0000f606f10b0000f507f00d0000f606d01f0000fa03609f0030df0000fb7cf93e000070fdae0200", + "ü": "09100b01100000000000605f308f00605f308f0000000000000000000000fa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20afa0200f20af90300f20af70700f90af1afc9ff0a30fcbff30a", + "Ğ": "0c120e011200f402f0060000e03af902000030fc4d00000000000000000081fdcf070020fe9cdacf00d06f0000fa08f50a0000f00ef90400004005fc0200000000fc0100ffff2ffc010088d82ffb020000b02ff8050000b02ff30c0000b02fb08f0000e22f10fc9db8ff070060ecdf3a00", + "ğ": "0a130b000f00f600f20400f239eb000040fd3c00000000000000a1fe3cdd00fd8cfbdf809f0060dfd01f0000dff00d0000dff00c0000dff00d0000dfd01f0000df709f0060df00fd8cfbdf00a1fe3cdf00000010cf101a00807f30ef89fb0d00a2fe8e00", + "İ": "03120501120000f309e2090000f30af30af30af30af30af30af30af30af30af30af30af30af30af30a", + "ı": "030b05010bf705f705f705f705f705f705f705f705f705f705f705", + "Ş": "0c120c000e0070fdcf070000fc9dd9df01809f0000f809b02f0000f00fa06f0000400530ff2900000000d3ff8d02000000a4fe9f0000000040fd0950030000f10ff10d0000d01fb07f0000f30e10fd9db9ff040070fcdf29000000903e0000000040fa0100000010f701000000c05d0000", + "ş": "0a0f0a000b00a2fe6c0020ff89fd09904f00d01fa03f00201440ff49000000b3ffaf01000040fa0d700500a04fe02f00a03f50ef89fb0c00b3fe7d000000f306000000716f000000307f000000e60900" +} diff --git a/core/translations/fonts/font_robotomono_medium_20_it.json b/core/translations/fonts/font_robotomono_medium_20_it.json new file mode 100644 index 0000000000..81d0171452 --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_20_it.json @@ -0,0 +1,9 @@ +{ + "À": "0c120c00120060370000000050ef0100000000f60a00000000601700000000f16f00000000f6cf00000000fcff01000010fffc06000060bff70b0000b07ff20f0000f12fd05f0000f60d90af0000fb4b84ff0010ffffffff0460ffbbbbfe0ab0af0000f60ef06f0000f24ff51f0000d09f", + "à": "0a100c010f107702000000f90c000000907f000000003300000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "è": "0a100c010f107702000000f80c000000907f000000003300000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "é": "0a100c010f00002077010000d07f000000f9070000002300000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "ì": "0a0f0c010f007406000000e15f00000020ee010000003101009099990500f0ffff0a006066fd0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a00f0ffffffcff0ffffffdf", + "ò": "0a100c010f107703000000f70d000000808f000000003300000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "ù": "0a100c010f107703000000f70d000000808f000000003300009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000" +} diff --git a/core/translations/fonts/font_robotomono_medium_20_pt.json b/core/translations/fonts/font_robotomono_medium_20_pt.json new file mode 100644 index 0000000000..6714431fe7 --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_20_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0a0c0c010b0082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "Á": "0c120c0012000000712700000000fa0a00000050af00000000501700000000f16f00000000f6cf00000000fcff01000010fffc06000060bff70b0000b07ff20f0000f12fd05f0000f60d90af0000fb4b84ff0010ffffffff0460ffbbbbfe0ab0af0000f60ef06f0000f24ff51f0000d09f", + "Ã": "0c120c00120050bc047a0000f1eeff5f0000a2009505000000300300000000f16f00000000f6cf00000000fcff01000010fffc06000060bff70b0000b07ff20f0000f12fd05f0000f60d90af0000fb4b84ff0010ffffffff0460ffbbbbfe0ab0af0000f60ef06f0000f24ff51f0000d09f", + "Ç": "0c140c000f00006246000000b1ffff3e0000fc9fd8ff0260ff0200fd0ac09f0000f60ef06f00004104f14f00000000f14f00000000f14f00000000f14f00000000f06f00006206b0af0000f70e40ff0420fe0800facffcdf010080ffff1a000000e04f0000000060fe0200000000fc03000000f0bf0000000050030000", + "Í": "0a120c011200004067000000f24f000000fc04003043573303f3ffffff3fb2cbffbc2b0030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff0200f2ffffff2ff3ffffff3f", + "Ó": "0c140c0013000000712700000000fc09000000709f000000003003000000006326000000b1ffff1b0000fcaffacf0060ff0230ff05c09f0000fa0bf05f0000f60ff14f0000f41ff14f0000f41ff14f0000f41ff14f0000f40ff06f0000f70fb0bf0000fb0a40ff0560ff0400fadffd9f000080ffef0700000020020000", + "Õ": "0c140c00130060ac036b0000f2eeff3f0000930096040000000000000000006326000000b1ffff1b0000fcaffacf0060ff0230ff05c09f0000fa0bf05f0000f60ff14f0000f41ff14f0000f41ff14f0000f41ff14f0000f40ff06f0000f70fb0bf0000fb0a40ff0560ff0400fadffd9f000080ffef0700000020020000", + "Ú": "0a130c01120000007703000090bf000000f40b003202322023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "à": "0a100c010f107702000000f90c000000907f000000003300000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "á": "0a100c010f00002077010000d07f000000f9070000002300000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "ã": "0a100c010f00d729d10440dfffff01400871390000000000000094bb280090ffffff05f46f21fb0f730600f23f004076f74f70ffffff4ff56f01f14ffa0a00f14ffa0c00f84ff4dfebff5f60feefe58f0020020000", + "ç": "0a100c010b0081bb390030ffffff06e1cf23f92ff70f00d07ffa0a002013fb09000000fb09000000f80d005048f35f00e25f90ffbcff0c00f7ff9f000000fd05000000d63f000000a05f000000fd0c000000340000", + "é": "0a100c010f00002077010000d07f000000f9070000002300000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "ê": "0a100c010f0030cc020000f4dd3e0020ac11cb0200000000000070bb390030feffff07e0cf23f83ff61f00b09ffb4c4494dffcffffffdffc7c777767f90d000000f38f00301b80ffbefc6f00d6ffdf050000310100", + "í": "0a0f0c010f0000007505000050ef020000e12e0000003101009099990500f0ffff0a006066fd0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a00f0ffffffcff0ffffffdf", + "ó": "0a100c010f00002077010000c08f000000f7080000003300000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "ô": "0a100c010f0020cc020000e3dd4f0010bc11ca0200000000000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "õ": "0a100c010f00d63ac00530efffff02300960490000000000000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "ú": "0a100c010f00002077010000c08f000000f7080000003300009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000" +} diff --git a/core/translations/fonts/font_robotomono_medium_20_tr.json b/core/translations/fonts/font_robotomono_medium_20_tr.json new file mode 100644 index 0000000000..9248ad4d7d --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_20_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0c140c000f00006246000000b1ffff3e0000fc9fd8ff0260ff0200fd0ac09f0000f60ef06f00004104f14f00000000f14f00000000f14f00000000f14f00000000f06f00006206b0af0000f70e40ff0420fe0800facffcdf010080ffff1a000000e04f0000000060fe0200000000fc03000000f0bf0000000050030000", + "Ö": "0c140c001300700430070000f60fe07f0000b108702c0000000000000000006326000000b1ffff1b0000fcaffacf0060ff0230ff05c09f0000fa0bf05f0000f60ff14f0000f41ff14f0000f41ff14f0000f41ff14f0000f40ff06f0000f70fb0bf0000fb0a40ff0560ff0400fadffd9f000080ffef0700000020020000", + "Ü": "0a130c0112005600720130ff02fb0900aa00c5043202002023fb090090bffb090090bffb090090bffb0a0090bffb0a0090bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bffb0a00a0bff90c00d09ff45f00f54fb0ffdcff0b00f9ff8f000000220000", + "ç": "0a100c010b0081bb390030ffffff06e1cf23f92ff70f00d07ffa0a002013fb09000000fb09000000f80d005048f35f00e25f90ffbcff0c00f7ff9f000000fd05000000d63f000000a05f000000fd0c000000340000", + "ö": "0a100c010f003700730060ff00ff06207b00b80200000000000082bb280050ffffff05f2bf33fb2ff90d00d09ffd080080cffe060070effe070070dffb0b00b0bff54f00f45fb0ffccff0b00f9ff9f000000220000", + "ü": "0a100c010f003700730060ff00ff06207b00b80200000000009308007059f60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff60e00c09ff50f00c09ff34f00f39fd0ffccef9f20fcff969f0020030000", + "Ğ": "0b140c001300200200120000b01f706f000040fffd0d0000008269000000006246000000a0ffff4e0000fbafd8ff0250ff0300fd0ab0af0000f70ef06f00000000f14f00000000f14f00323302f14f00feff0ff04f00a9fc0fe07f0000f50fa0cf0000f50f30ff0700f80f00f8dfecff0b0060feff6d00000020130000", + "ğ": "0a150c0110001200210020af00fd0000faed7f000050890400000000000000a3ac534960ffffef8ff2cf33fa8ff71f00d08ffb0a00d08ffc0900d08ffb0900d08ff90d00d08ff46f00f38fb0ffccff8f00faffd98f001013e07f700700f63fe0efdbff0a20faff7e000000120000", + "İ": "0a120c011200104800000080ff00000040ae00003033333303f3ffffff3fb2cbffbc2b0030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff02000030ff0200f2ffffff2ff3ffffff3f", + "ı": "0a0b0c010b9099990500f0ffff0a006066fd0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a000000fb0a00f0ffffffcff0ffffffdf", + "Ş": "0c140c000f00005246000000c2ffff6e0000fe9ec8ff0660ff0200fa0e90cf0000e32e60ff0300000000fe9f03000000c2ffef07000000a4ffdf0100000060ff0b40140000f51fe08f0000f23f90ff0300f90f10fddfebff070080feff5d000000a08f0000000040fb0700000000f708000000a0ef0200000030040000", + "ş": "0a100c010b0082bb4a0060ffffff0bf18f01f56ff31f007059e0cf26000030fdffaf020030c8ff3f520300d1aff71e00b0afd1ef99fc3f10faffcf040010ef04000000e61f000000d12f000000ff09000000250000" +} diff --git a/core/translations/fonts/font_robotomono_medium_21_it.json b/core/translations/fonts/font_robotomono_medium_21_it.json new file mode 100644 index 0000000000..c8d6c745c0 --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_21_it.json @@ -0,0 +1,9 @@ +{ + "À": "0d140d0014002022000000000070ff020000000000f80c0000000000702a000000000000000000000000b0af0000000000f1ff0000000000f6ff0500000000fbff0a00000010fff70f00000060eff04f000000b09fb09f000000f14f60ef000000f50f10ff040000fb8e88ff090000ffffffff0e0050ff9999fa3f00a0df0000e08f00f08f0000a0df00f53f000050ff02", + "à": "0b110d011000220100000000fa0d00000000b08f00000000009900000000104402000010fbffdf0400d0ffaafe3f00f53f00e19f00100100b0bf000083bbeccf00a0ffcefccf00f55f00b0cf00f90d00b0cf00f92f00f5cf00f3ffecffdf0040fdff89ff01002003000000", + "è": "0b110d011000220100000000fa0d00000000b08f0000000000a900000000004303000000e5ffef050060ffbefe5f00f1af00a0ef00f71f0020ff03fa9e9999ff05fbffffffff06fb3d33333301f82f00000000f1df02109b0050ffdffddf0000c4ffff0900000031020000", + "é": "0b110d0110000000220200000060ff03000000f13f00000000a603000000004303000000e5ffef050060ffbefe5f00f1af00a0ef00f71f0020ff03fa9e9999ff05fbffffffff06fb3d33333301f82f00000000f1df02109b0050ffdffddf0000c4ffff0900000031020000", + "ì": "0a100d0210102200000020fe07000000f32f000000406a00001111110000ffffff0000feffff00000070ff00000070ff00000070ff00000070ff00000070ff00000070ff00000070ff0100ffffffff6fffffffff6f", + "ò": "0b110d011000220100000000f91e00000000a09f0000000000a801000000004302000000f8ffdf0300a0ffbdfe3f00f48f00d1df00f90e0050ff03fc0a0010ff06fd090000ff06fc0a0010ff06f90e0050ff02f39f00d1cf0080ffceff3f0000e6ffcf0300000032010000", + "ù": "0b110d011000220100000000f91e00000000a0af0000000000a8010000100100001100f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f43f0060ff01f19f00d2ff01a0ffdeefff0110fbff3aff01001013000000" +} diff --git a/core/translations/fonts/font_robotomono_medium_21_pt.json b/core/translations/fonts/font_robotomono_medium_21_pt.json new file mode 100644 index 0000000000..dc81fc939a --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_21_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0b0d0d010c00004302000000f8ffdf0300a0ffbdfe3f00f48f00d1df00f90e0050ff03fc0a0010ff06fd090000ff06fc0a0010ff06f90e0050ff02f39f00d1cf0080ffceff3f0000e6ffcf0300000032010000", + "Á": "0d140d001400000020220000000000f26f0000000000fc0600000000306a000000000000000000000000b0af0000000000f1ff0000000000f6ff0500000000fbff0a00000010fff70f00000060eff04f000000b09fb09f000000f14f60ef000000f50f10ff040000fb8e88ff090000ffffffff0e0050ff9999fa3f00a0df0000e08f00f08f0000a0df00f53f000050ff02", + "Ã": "0d140d00140010870292000000b0ffbfee000000f137f94e000000000000000000000000000000000000b0af0000000000f1ff0000000000f6ff0500000000fbff0a00000010fff70f00000060eff04f000000b09fb09f000000f14f60ef000000f50f10ff040000fb8e88ff090000ffffffff0e0050ff9999fa3f00a0df0000e08f00f08f0000a0df00f53f000050ff02", + "Ç": "0c150d00100000100200000040fcff4c0000f6fffeff0520ff1a10fc0e80ef0000f25fd0af0000b07cf07f00000000f06f00000000f16f00000000f06f00000000f07f00000000d09f0000805990ef0000f16f20ff0900fb1f00f7effdff050060feff4d000000b08f0000000050fc0800000000f60a00000090ff0400000060270000", + "Í": "0a140d01140000002201000090df010000f41d000000a801000000000000f1ffffffaff1ffffffbf1011ff18110000ff08000000ff08000000ff08000000ff08000000ff08000000ff08000000ff08000000ff08000000ff08000000ff0800f1ffffffbff1ffffffbf", + "Ó": "0c150d0014000000202200000000f35f00000000fd05000000405a00000000100100000050fdff190000f6ffffdf0120ff1b50ff0a80ef0000f72fd0af0000f16ff07f0000e09ff06f0000d0aff16f0000d0aff06f0000d0aff07f0000e09fd09f0000f06f90ef0000f62f20ff0a30fe0b00f7fffeef010060feff1b00000020020000", + "Õ": "0c150d001400107801830000d0ffbfde0000f236fa3e000000000000000000100100000050fdff190000f6ffffdf0120ff1b50ff0a80ef0000f72fd0af0000f16ff07f0000e09ff06f0000d0aff16f0000d0aff06f0000d0aff07f0000e09fd09f0000f06f90ef0000f62f20ff0a30fe0b00f7fffeef010060feff1b00000020020000", + "Ú": "0b140d0113000000210200000020ff07000000b07f00000000a3060000f90b0020ff03fa0c0030ff03fa0c0030ff03fa0c0030ff03fa0c0030ff03fa0c0030ff03fa0d0030ff04fa0d0030ff04fa0d0030ff04fa0d0030ff04fa0d0040ff03f71f0070ff01f2af00e2bf0080ffdeff2f0000e7ffbf0200000032010000", + "à": "0b110d011000220100000000fa0d00000000b08f00000000009900000000104402000010fbffdf0400d0ffaafe3f00f53f00e19f00100100b0bf000083bbeccf00a0ffcefccf00f55f00b0cf00f90d00b0cf00f92f00f5cf00f3ffecffdf0040fdff89ff01002003000000", + "á": "0b110d0110000000220200000060ff03000000f13f00000000a603000000104402000010fbffdf0400d0ffaafe3f00f53f00e19f00100100b0bf000083bbeccf00a0ffcefccf00f55f00b0cf00f90d00b0cf00f92f00f5cf00f3ffecffdf0040fdff89ff01002003000000", + "ã": "0b110d011000821750070010fefffb0b00504fb4df020000000000000000104402000010fbffdf0400d0ffaafe3f00f53f00e19f00100100b0bf000083bbeccf00a0ffcefccf00f55f00b0cf00f90d00b0cf00f92f00f5cf00f3ffecffdf0040fdff89ff01002003000000", + "ç": "0b110d010c00004303000000e6ffef050070ffbdfe5f00f29f00c0df00f71f0040ee00fa0d00000000fa0c00000000fa0d00000000f61f0030aa00f1af00b0df0060ffceff4f0000e5ffcf03000000f90900000000b59f0000000050cf00000000f85f0000000075030000", + "é": "0b110d0110000000220200000060ff03000000f13f00000000a603000000004303000000e5ffef050060ffbefe5f00f1af00a0ef00f71f0020ff03fa9e9999ff05fbffffffff06fb3d33333301f82f00000000f1df02109b0050ffdffddf0000c4ffff0900000031020000", + "ê": "0b110d011000008602000000a0ff3e000000fb27fd050000230031020000004303000000e5ffef050060ffbefe5f00f1af00a0ef00f71f0020ff03fa9e9999ff05fbffffffff06fb3d33333301f82f00000000f1df02109b0050ffdffddf0000c4ffff0900000031020000", + "í": "0a100d021000001022010000c0bf000000f70b0000009900001111110000ffffff0000feffff00000070ff00000070ff00000070ff00000070ff00000070ff00000070ff00000070ff0100ffffffff6fffffffff6f", + "ó": "0b110d0110000000220200000040ff04000000e14f00000000a504000000004302000000f8ffdf0300a0ffbdfe3f00f48f00d1df00f90e0050ff03fc0a0010ff06fd090000ff06fc0a0010ff06f90e0050ff02f39f00d1cf0080ffceff3f0000e6ffcf0300000032010000", + "ô": "0b110d01100000860300000090ff4f000000fa18fc060000230030020000004302000000f8ffdf0300a0ffbdfe3f00f48f00d1df00f90e0050ff03fc0a0010ff06fd090000ff06fc0a0010ff06f90e0050ff02f39f00d1cf0080ffceff3f0000e6ffcf0300000032010000", + "õ": "0b110d011000811740070000fdffeb0c00305fa4df030000000000000000004302000000f8ffdf0300a0ffbdfe3f00f48f00d1df00f90e0050ff03fc0a0010ff06fd090000ff06fc0a0010ff06f90e0050ff02f39f00d1cf0080ffceff3f0000e6ffcf0300000032010000", + "ú": "0b110d0110000000220200000040ff04000000e14f00000000a5040000100100001100f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f43f0060ff01f19f00d2ff01a0ffdeefff0110fbff3aff01001013000000" +} diff --git a/core/translations/fonts/font_robotomono_medium_21_tr.json b/core/translations/fonts/font_robotomono_medium_21_tr.json new file mode 100644 index 0000000000..8d0425e18b --- /dev/null +++ b/core/translations/fonts/font_robotomono_medium_21_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0c150d00100000100200000040fcff4c0000f6fffeff0520ff1a10fc0e80ef0000f25fd0af0000b07cf07f00000000f06f00000000f16f00000000f06f00000000f07f00000000d09f0000805990ef0000f16f20ff0900fb1f00f7effdff050060feff4d000000b08f0000000050fc0800000000f60a00000090ff0400000060270000", + "Ö": "0c150d001400200100020000f22f70df0000f22f60cf000010010002000000100100000050fdff190000f6ffffdf0120ff1b50ff0a80ef0000f72fd0af0000f16ff07f0000e09ff06f0000d0aff16f0000d0aff06f0000d0aff07f0000e09fd09f0000f06f90ef0000f62f20ff0a30fe0b00f7fffeef010060feff1b00000020020000", + "Ü": "0b150d011400210020010000ff04f40f0000fe04f40e00001000100100000000000000f90b0020ff03fa0c0030ff03fa0c0030ff03fa0c0030ff03fa0c0030ff03fa0c0030ff03fa0d0030ff04fa0d0030ff04fa0d0030ff04fa0d0030ff04fa0d0040ff03f71f0070ff01f2af00e2bf0080ffdeff2f0000e7ffbf0200000032010000", + "ç": "0b110d010c00004303000000e6ffef050070ffbdfe5f00f29f00c0df00f71f0040ee00fa0d00000000fa0c00000000fa0d00000000f61f0030aa00f1af00b0df0060ffceff4f0000e5ffcf03000000f90900000000b59f0000000050cf00000000f85f0000000075030000", + "ö": "0b110d011000120020000030ff01f70c0030ff01f70c0000110020000000004302000000f8ffdf0300a0ffbdfe3f00f48f00d1df00f90e0050ff03fc0a0010ff06fd090000ff06fc0a0010ff06f90e0050ff02f39f00d1cf0080ffceff3f0000e6ffcf0300000032010000", + "ü": "0b110d011000120020000030ff01f70c0020ff01f70c00001100200000100100001100f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f52f0060ff01f43f0060ff01f19f00d2ff01a0ffdeefff0110fbff3aff01001013000000", + "Ğ": "0c140d001300803d00cc000050dfa69f000000d6ff09000000000200000040fcff4c0000f5fffeff0610ff1c10fc1f80ff0100f25fc0bf00007037f08f00000000f07f00000000f17f00858848f07f00f9ff8ff07f0063f68fd0af0000e08f80ff0100e08f10ff1b00f38f00f6ffedff3f0040fdff9f01000010230000", + "ğ": "0b150d011010ad00d5060000fc79fe020000a1ff4c000000000000000000103400110000faff7eff00a0ffbeffff00f3af00c0ff00f81f0060ff00fa0c0060ff00fb0b0060ff00fa0c0060ff00f81f0060ff00f2af00d1ff0090ffdfffff0000f8ff9cff0000002280ff00400800e1bf00e0dfa9fe3f0030fcffdf0400002055030000", + "İ": "0a140d011400002200000030ff03000040ff040000003300000000000000f1ffffffaff1ffffffbf1011ff18110000ff08000000ff08000000ff08000000ff08000000ff08000000ff08000000ff08000000ff08000000ff08000000ff0800f1ffffffbff1ffffffbf", + "ı": "0a0c0d020c1111110000ffffff0000feffff00000070ff00000070ff00000070ff00000070ff00000070ff00000070ff00000070ff0100ffffffff6fffffffff6f", + "Ş": "0b150d011000002001000000c5ffdf060080ffefff9f00f3af0190ff04f70f0000fe0af71f00006405f3cf0200000070ffcf16000000d5ffff0800000094ffbf0000000090ff0687040000fd0bfd0b0000fc0cf77f0050ff08b0ffdffedf0100d6ffff19000000f61c0000000093df0000000010ff00000000f49f0000000083040000", + "ş": "0b110d010c00004303000000f9ffff0800a0ff9afb9f00f16f0080ff01f17f00103300a0ff8c15000000e7ffff1a00000073fbdf0073060050ff03f54f0050ff02c0ffacfcbf0000e8ffef08000000fc0700000000d66f00000000808f00000000fb3f0000000077010000" +} diff --git a/core/translations/fonts/font_tthoves_bold_17_upper_it.json b/core/translations/fonts/font_tthoves_bold_17_upper_it.json new file mode 100644 index 0000000000..6d34db34c3 --- /dev/null +++ b/core/translations/fonts/font_tthoves_bold_17_upper_it.json @@ -0,0 +1,9 @@ +{ + "À": "0d100d0010000076040000000000f51f000000000070bf000000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "à": "0d100d0010000076040000000000f51f000000000070bf000000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "è": "09100a0110406700000010fe05000000f31e00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "é": "09100a011000007217000000fc09000060cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "ì": "0510060010721700b0af0000fd0400000000fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e", + "ò": "0d100d0010003077000000000000fc090000000000e13f000000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "ù": "0b100c011000750500000000f33f0000000050df000000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000" +} diff --git a/core/translations/fonts/font_tthoves_bold_17_upper_pt.json b/core/translations/fonts/font_tthoves_bold_17_upper_pt.json new file mode 100644 index 0000000000..fe4a45c74d --- /dev/null +++ b/core/translations/fonts/font_tthoves_bold_17_upper_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0d0c0d000c0020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "Á": "0d100d001000000040670000000000f24f0000000000fb070000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "Ã": "0d100d0010000081167800000000fbff9f000000008972070000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "Ç": "0c100c000c0020c9df290000f5ffffef0320ffdfebff0ec0ff0700f87ff0cf00008079f37f00000000f47f00000000f1af00006067d0ff0400f59f50ffafa7ff2f00f8ffffff040050fcff4c000000b01f0000000080cf0000000071fe00000000f26d0000", + "Í": "051005011000770370df00f22e00000000fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00", + "Ó": "0d100d001000000070270000000000f90c0000000030ef010000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "Õ": "0d100d0010000071322900000010fedf1f000000505fd9040000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "Ú": "0b100c01100000306700000000e16f00000000fa080000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "à": "0d100d0010000076040000000000f51f000000000070bf000000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "á": "0d100d001000000040670000000000f24f0000000000fb070000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "ã": "0d100d0010000081167800000000fbff9f000000008972070000000000000000000000f3ff1f00000000f8ff6f00000000fdffbf00000030ffa8ff01000080ff53ff060000e0ef00ff0c0000f39f00fb1f0000f9ffffff6f0000feffffffcf0030ff6b66c6ff0190ff050070ff07e0ff000020ff0c", + "ç": "0c100c000c0020c9df290000f5ffffef0320ffdfebff0ec0ff0700f87ff0cf00008079f37f00000000f47f00000000f1af00006067d0ff0400f59f50ffafa7ff2f00f8ffffff040050fcff4c000000b01f0000000080cf0000000071fe00000000f26d0000", + "é": "09100a011000007217000000fc09000060cf00000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "ê": "09100a0110007037000000faff030070bff41e000000000000fcffffff05fcffffff05fc7f777702fc0e000000fc0e000000fcffffff00fcffffff00fc6f666600fc0e000000fc7f777702fcffffff05fcffffff05", + "í": "051005011000770370df00f22e00000000fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00fc0e00", + "ó": "0d100d001000000070270000000000f90c0000000030ef010000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "ô": "0d100d0010000060570000000000f7ff0500000040dfe33f0000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "õ": "0d100d0010000071322900000010fedf1f000000505fd9040000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "ú": "0b100c01100000306700000000e16f00000000fa080000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000" +} diff --git a/core/translations/fonts/font_tthoves_bold_17_upper_tr.json b/core/translations/fonts/font_tthoves_bold_17_upper_tr.json new file mode 100644 index 0000000000..4e88bde25d --- /dev/null +++ b/core/translations/fonts/font_tthoves_bold_17_upper_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0c100c000c0020c9df290000f5ffffef0320ffdfebff0ec0ff0700f87ff0cf00008079f37f00000000f47f00000000f1af00006067d0ff0400f59f50ffafa7ff2f00f8ffffff040050fcff4c000000b01f0000000080cf0000000071fe00000000f26d0000", + "Ö": "0d100d0010000011100100000050dff03f00000050dff03f0000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "Ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "ç": "0c100c000c0020c9df290000f5ffffef0320ffdfebff0ec0ff0700f87ff0cf00008079f37f00000000f47f00000000f1af00006067d0ff0400f59f50ffafa7ff2f00f8ffffff040050fcff4c000000b01f0000000080cf0000000071fe00000000f26d0000", + "ö": "0d100d0010000011100100000050dff03f00000050dff03f0000000000000000000020c9cf19000000f5ffffef040020ffdfdbff1f00c0ff0700f8af00f0bf0000d0ff00f37f000090ff02f37f000090ff02f0bf0000d0ff00c0ff0600f8af0020ffdfdaff1f0000f5ffffef04000020d9cf190000", + "ü": "0b100c011000110011000000fa48ef000000fa48ef0000000000000000fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0c0090ff01fe0d0090ff01fc0e00b0ff00fa6f00f3df00f4ffbcff7f0090ffffff0c0000b4ee7c0000", + "Ğ": "0c100d00100020375007000020fffb0e000000d5cf03000000000000000010c9df190000f5ffffef0220ffdfebff1eb0ff0800f98ff0cf00005045f28f00000000f47f00f5fffff1af00d5fdffd0ff0400f4ff30ffcfcaffff00f6ffffefff0020d9df28ff", + "ğ": "0c100d00100020375007000020fffb0e000000d5cf03000000000000000010c9df190000f5ffffef0220ffdfebff1eb0ff0800f98ff0cf00005045f28f00000000f47f00f5fffff1af00d5fdffd0ff0400f4ff30ffcfcaffff00f6ffffefff0020d9df28ff", + "İ": "03100501101001f80af80a0000fc0efc0efc0efc0efc0efc0efc0efc0efc0efc0efc0efc0e", + "ı": "030c05010cfc0efc0efc0efc0efc0efc0efc0efc0efc0efc0efc0efc0e", + "Ş": "0b100b000c00b4fe9d010060ffffff2f00f0ff79fbcf00f39f00c0ff00f1ef25001100a0ffffbf050000d7ffff8f00000041f8ff00d54d00a0ff02f3df35e5ff00a0ffffff8f0000d7ffdf06000000fb0200000000e70d00000000e71f00000010df070000", + "ş": "0b100b000c00b4fe9d010060ffffff2f00f0ff79fbcf00f39f00c0ff00f1ef25001100a0ffffbf050000d7ffff8f00000041f8ff00d54d00a0ff02f3df35e5ff00a0ffffff8f0000d7ffdf06000000fb0200000000e70d00000000e71f00000010df070000" +} diff --git a/core/translations/fonts/font_tthoves_demibold_21_it.json b/core/translations/fonts/font_tthoves_demibold_21_it.json new file mode 100644 index 0000000000..7449773250 --- /dev/null +++ b/core/translations/fonts/font_tthoves_demibold_21_it.json @@ -0,0 +1,9 @@ +{ + "À": "0f140e001400005204000000000000fc1f000000000000c0bf00000000000000880100000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff9fff0700000050ff2aff0c000000a0ff05fd2f000000f1ff00f88f000000f6af00f3df000000fb5f00e0ff030010ff9f88d8ff080060ffffffffff0e00c0ffffffffff4f00f2ef000000f79f00f79f000000f1ef00fd3f000000b0ff04", + "à": "0b100c001000000000000000f54f0000000080ef0000000000fb0900000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "è": "0c100c001000000000000000e29f0000000030ff0300000000f60d00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "é": "0c100c0010000000000000000000f36f00000000fd0900000080bf00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "ì": "0510060010410600f66f0070ff0200850500000000fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f", + "ò": "0c100d001000000000000000d1bf0000000020ff0500000000f41e00000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ù": "0b100d011000000000000000fc0c00000000e17f0000000030ff020000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03" +} diff --git a/core/translations/fonts/font_tthoves_demibold_21_pt.json b/core/translations/fonts/font_tthoves_demibold_21_pt.json new file mode 100644 index 0000000000..11f3ce82a4 --- /dev/null +++ b/core/translations/fonts/font_tthoves_demibold_21_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0c0b0d000b0030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "Á": "0f140e0014000000004104000000000030ef020000000000e14f000000000000850500000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff9fff0700000050ff2aff0c000000a0ff05fd2f000000f1ff00f88f000000f6af00f3df000000fb5f00e0ff030010ff9f88d8ff080060ffffffffff0e00c0ffffffffff4f00f2ef000000f79f00f79f000000f1ef00fd3f000000b0ff04", + "Ã": "0f140e001400001000000000000000fcaefd0b00000020ffbbff050000000000001000000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff9fff0700000050ff2aff0c000000a0ff05fd2f000000f1ff00f88f000000f6af00f3df000000fb5f00e0ff030010ff9f88d8ff080060ffffffffff0e00c0ffffffffff4f00f2ef000000f79f00f79f000000f1ef00fd3f000000b0ff04", + "Ç": "0f140f000f000070ecdf1800000030fdffffef040000f3ffbfebff3f0000fd9f0000f8df0060ff0a0000a0ff05c0ff010000106604f0df000000000000f0bf000000000000e0cf000000000000c0ff00000000220180ff06000070ff0710ff4f0000f3ff0100f7ff6a95ff7f000080ffffffff09000000b4ffff6e0000000000f32b000000000000f63d00000000000020ef000000000000fbbf0000000000009606000000", + "Í": "061406011400202400f80c50df01702800000000f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00", + "Ó": "1014100014000000000000000000000000f55f000000000010fe070000000000a0af0000000000000000000000000070fcdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f7ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa2fc0ff01000000fe0f70ff09000060ff0a00fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000080fcdf180000", + "Õ": "1013100013000050ce558f00000000f1ffff4f00000000c416b70500000000000000000000000070fcdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f7ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa2fc0ff01000000fe0f70ff09000060ff0a00fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000080fcdf180000", + "Ú": "0d140f011400000000000000000000e1af0000000000f90c0000000040ef01000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "à": "0b100c001000000000000000f54f0000000080ef0000000000fb0900000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "á": "0b100c0010000000000000000000fa1e00000040ff03000000e05f00000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "ã": "0b0f0c000f0090aea33f0000f6feff0e0000c822a902000000000000000070fcad020000fcffff4f0070ff39e5ef0050770060ff0300b4feffff0460ffffffff04f0ef0260ff04f18f0090ff04f0ef24f7ff0480ffffefff0400c6ef19ff04", + "ç": "0c100c000b0030dacf070000f7ffffdf0130ff9fb7ff0ac0ff0300fb1ff0af00001001f27f00000000f09f00000000d0ef0000e82e60ff4c62ff0d00fcffffff030080ffff3c000000d02f00000000f17f0000000000fc03000000f6ff0100000093270000", + "é": "0c100c0010000000000000000000f36f00000000fd0900000080bf00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "ê": "0c0f0c000f0000f6bf00000030fffc090000e25fe17f000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f83ff0efccccfd7ff1ffffffff7ff09f00000000b0ef0100530530ff5d94ff0c00f6ffffdf020030dacf0800", + "í": "061005011000300500fd07a0af00810700000000fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00", + "ó": "0c100d0010000000000000000000f28f00000000fc0b00000060df00000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ô": "0c0f0d000f0000f4df00000020fffc0b0000e17fd08f000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "õ": "0c0f0d000f0030dc27cf0000e0efff7f0000c109b607000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ú": "0b100d0110000000000000000020ff08000000c0bf00000000f60d0000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03" +} diff --git a/core/translations/fonts/font_tthoves_demibold_21_tr.json b/core/translations/fonts/font_tthoves_demibold_21_tr.json new file mode 100644 index 0000000000..8e06feb258 --- /dev/null +++ b/core/translations/fonts/font_tthoves_demibold_21_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0f140f000f000070ecdf1800000030fdffffef040000f3ffbfebff3f0000fd9f0000f8df0060ff0a0000a0ff05c0ff010000106604f0df000000000000f0bf000000000000e0cf000000000000c0ff00000000220180ff06000070ff0710ff4f0000f3ff0100f7ff6a95ff7f000080ffffffff09000000b4ffff6e0000000000f32b000000000000f63d00000000000020ef000000000000fbbf0000000000009606000000", + "Ö": "10131000130000f15ff23f00000000f15ff23f000000006026611600000000000000000000000070fcdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f7ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa2fc0ff01000000fe0f70ff09000060ff0a00fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000080fcdf180000", + "Ü": "0d130f01130090cfb0bf00000090cfb0bf00000040564046000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff0a000030dadf4a0000", + "ç": "0c100c000b0030dacf070000f7ffffdf0130ff9fb7ff0ac0ff0300fb1ff0af00001001f27f00000000f09f00000000d0ef0000e82e60ff4c62ff0d00fcffffff030080ffff3c000000d02f00000000f17f0000000000fc03000000f6ff0100000093270000", + "ö": "0c0f0d000f00d08ff06f0000d08ff06f000050366026000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ü": "0b0f0d010f00fd08ff060000fd08ff0600006503660200000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffefff0300c6df47ff03", + "Ğ": "0f1410001400000000000000000000f41de33f00000000d0ffff0d0000000020ebae0100000000000000000000000070fcbe1800000030fdffffef050000f3ffbeebff4f0000fd8f0000f8ef0070ff090000b0ff06c0ff000000003302f0df000000000000f0bf0000f9ffff0cf0df0000f9ffff0cc0ff01001121ff0c70ff09000070ff0c00fd8f0000f6ff0c00f3ffbeebffff0c0030fdffffdff90c000070fcce07f50c", + "ğ": "0c140d001000000000000000d05fa1af000070ffff4f000000d7df05000000000000000070fcbef45f00fbffffff5f70ff6dc6ff5fe0ef0000fc5ff18f0000f65ff18f0000f65fe0df0000fc5f70ff6db6ff5f00fcffffff5f0070fc9ef55f00000000f54fa0dd0100fa1f60ff6da5ff0c00faffffef020060eccf0800", + "İ": "04140601140002f32ff32f30030000f64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64f", + "ı": "030b05010bfa0ffa0ffa0ffa0ffa0ffa0ffa0ffa0ffa0ffa0ffa0f", + "Ş": "0d140d000f0040dbdf5b000000faffffff0b0060ffafb9ff8f00c0ff0200f2ef00e0df000080dd01c0ff060000000060ffff9c16000000f8ffffff1a000010a6fcffcf0000000000e5ff038148000060ff05f1cf000080ff03b0ff6c43f8df0020feffffff3e0000a1ffff8c01000000903f0000000000c0ef020000000000f80800000000f1ff05000000009048000000", + "ş": "0a100b000b00c5ee6c0090ffffff0bf2cf34f95ff56f007047f1ff8b150050feffff0a0030a7fe8f511500e0cff2af01f3bf90ffffff4f00c7ffbf030000de00000010fd09000000c02f000060ff0e000040790200" +} diff --git a/core/translations/fonts/font_tthoves_regular_21_it.json b/core/translations/fonts/font_tthoves_regular_21_it.json new file mode 100644 index 0000000000..f2ff5da13b --- /dev/null +++ b/core/translations/fonts/font_tthoves_regular_21_it.json @@ -0,0 +1,9 @@ +{ + "À": "0e130e00130010dd000000000000f2080000000000503f00000000000000000000000090ff0400000000f0fe0a00000000f5b50f00000000fb505f000000109f00bf000000703f00f9010000d00d00f3070000f30700d00d0000f90100703f0000ee8888a89f0050ffffffffff00b00f000000f505f10a000000f00bf704000000a01fed00000000507f", + "à": "090f0b010f30af00000000f604000000901e0000000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "è": "0b0f0c000f00e10c00000000307f0000000000f60200000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "é": "0b0f0c000f000000f40800000010be00000000a00d00000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "ì": "0510060010f80400b00e00109d0000000000000000f80000f80000f80000f80000f80000f80000f80000f80000f80000f80000f800", + "ò": "0b0f0c000f00d00e00000000209e0000000000f40400000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "ù": "0a100c011000fc01000000e10b000000306f000000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f" +} diff --git a/core/translations/fonts/font_tthoves_regular_21_pt.json b/core/translations/fonts/font_tthoves_regular_21_pt.json new file mode 100644 index 0000000000..e0d3539a69 --- /dev/null +++ b/core/translations/fonts/font_tthoves_regular_21_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0b0b0c000b0050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "Á": "0e130e0013000000408f0000000000d00b0000000000d901000000000000000000000090ff0400000000f0fe0a00000000f5b50f00000000fb505f000000109f00bf000000703f00f9010000d00d00f3070000f30700d00d0000f90100703f0000ee8888a89f0050ffffffffff00b00f000000f505f10a000000f00bf704000000a01fed00000000507f", + "Ã": "0e130e00130000e94bf5010000404fe87f00000010020001000000000000000000000090ff0400000000f0fe0a00000000f5b50f00000000fb505f000000109f00bf000000703f00f9010000d00d00f3070000f30700d00d0000f90100703f0000ee8888a89f0050ffffffffff00b00f000000f505f10a000000f00bf704000000a01fed00000000507f", + "Ç": "0e130f010f0000c7ef8c010000d3efabfc5f0020ff050030fd05c02f000000e10ef607000000605efb010000000000ed000000000000ce000000000000ec000000000000f9010000000000f607000000705fd02f000000e10e40ef050030fd0500e3ef9afc6f000010c7ff8c01000000005e000000000000e8040000000000c1090000000060bf020000", + "Í": "051305011300f904307f00d00a00000000f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500f50500", + "Ó": "0f1310011300000010ce000000000000a01e000000000000f50300000000000000000000000000c7ff8d01000000d3efabfd4e000020ff050040fe0500c02f000000e10e00f607000000508f00fb0100000000de00ed0000000000fb00ce0000000000f901ed0000000000fb00fb0100000000de00f607000000508f00c02f000000e10e0030ef050030fe050000d3efaafd4e00000000c7ff8d010000", + "Õ": "0f131001130000e56cf205000000007fd6bf000000000002000100000000000000000000000000c7ff8d01000000d3efabfd4e000020ff050040fe0500c02f000000e10e00f607000000508f00fb0100000000de00ed0000000000fb00ce0000000000f901ed0000000000fb00fb0100000000de00f607000000508f00c02f000000e10e0030ef050030fe050000d3efaafd4e00000000c7ff8d010000", + "Ú": "0d130e0113000000d01e0000000000f80300000000205f00000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "à": "090f0b010f30af00000000f604000000901e0000000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "á": "090f0b010f0000804f000000f307000000bd0000000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "ã": "090f0b010f10eb29d900804dfa4f001001000000000000000000d8df0800c0bfb8cf00f60500f705630000f008005377f70ac1ffffff0afa1600f00aae0000f20acd0000fb0af68dd9fe0a50fc9ec10a", + "ç": "0b0f0b000b0050ebbe030000f99de95f00509f0000fb01d00d00009203f00900000000f20700000000f00900000000d00d0000b203509f0000fb0100fa9de95f000060fcbf03000000f10400000000813e00000000107d00000000f71b0000", + "é": "0b0f0c000f000000f40800000010be00000000a00d00000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "ê": "0b0f0c000f0000f71e000000406fcc000000e209e209000000000000000040ebad020000f89de94f00409f0010ed00c00d0000f406f0080000f008f1ffffffff0af07b77777704d00b00000000606f0000fc0100fa8ce96f000050ebbe0400", + "í": "051005011000ec02704f00f20600000000000000f80000f80000f80000f80000f80000f80000f80000f80000f80000f80000f80000", + "ó": "0b0f0c000f000000f30900000000cd00000000801e00000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "ô": "0b0f0c000f0000f52f000000308fdb010000e10bd10b000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "õ": "0b0f0c000f0080be442f0000f384fe08000020001000000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "ú": "0a100c0110000020bf000000c01d000000f6020000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f" +} diff --git a/core/translations/fonts/font_tthoves_regular_21_tr.json b/core/translations/fonts/font_tthoves_regular_21_tr.json new file mode 100644 index 0000000000..bca9b809db --- /dev/null +++ b/core/translations/fonts/font_tthoves_regular_21_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0e130f010f0000c7ef8c010000d3efabfc5f0020ff050030fd05c02f000000e10ef607000000605efb010000000000ed000000000000ce000000000000ec000000000000f9010000000000f607000000705fd02f000000e10e40ef050030fd0500e3ef9afc6f000010c7ff8c01000000005e000000000000e8040000000000c1090000000060bf020000", + "Ö": "0f131001130000c801ac0000000000fa01cf000000000000000000000000000000000000000000c7ff8d01000000d3efabfd4e000020ff050040fe0500c02f000000e10e00f607000000508f00fb0100000000de00ed0000000000fb00ce0000000000f901ed0000000000fb00fb0100000000de00f607000000508f00c02f000000e10e0030ef050030fe050000d3efaafd4e00000000c7ff8d010000", + "Ü": "0d130e011300603ca00c000000704fc00f00000000000000000000000000000000f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f802000000fa00f703000000ec00f406000000be00f10d0000607f0060af0100f50d0000f9bed9df03000040dacf080000", + "ç": "0b0f0b000b0050ebbe030000f99de95f00509f0000fb01d00d00009203f00900000000f20700000000f00900000000d00d0000b203509f0000fb0100fa9de95f000060fcbf03000000f10400000000813e00000000107d00000000f71b0000", + "ö": "0b0f0c000f00a00bc2070000d00ef209000000000000000000000000000050ebad020000f99de95f00509f0010fc01c00d0000f208f0090000d00bf2070000b00df0090000d00bd00d0000f208509f0010fc0100f98de95f000050ebae0200", + "ü": "0a0f0c010f00fb10bf0000c9008c0000000000000000000000f80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff80000107ff50300407ff20c00d17f70df98ee7f00c5df197f", + "Ğ": "0e131001130000bc11bc00000000c2ff1c000000000011000000000000000000000000c7ee8c010000d2efabfd5f0020ff060040fe05b03f000000e10ef509000000404bfa010000000000ed000000000000ce000030777757de000060ffffaffb0000000010aff70600000050afd01f000000e1af30ef040030fdaf00d4dfaafd4ead0000c8ef7c00ab", + "ğ": "0b130c000f00a02db10d000010fbcf02000000100100000000000000000050fb8eb00b00f98dfada0b508f0020fe0bd00d0000f50bf0080000f00bf1070000e00be00b0000f20b805f0000fc0b00fc8be9fd0b0070fc9dd00b00000000e00a700a0000f108606f0000fa0300fb8cd89f000060ecce0500", + "İ": "0313050113c405f50700000000f505f505f505f505f505f505f505f505f505f505f505f505f505f505f505", + "ı": "030b05010bf800f800f800f800f800f800f800f800f800f800f800", + "Ş": "0c130d000f0040ebcf290000f9bec9ff0650af0000d23f901f0000308fb00f00000057707f0000000000fd8c2500000080fdff9e0100000063fb1e00000000509f7005000000ced00d000000bf709f0000907f00fabea9fe0b0050fbef5b000000800c0000000050ac0000000000f600000000f06d0000", + "ş": "090f0a000b00d7df2a00a0bf98fe02f10900f10af109003003c0af36000010f9ff8e00000052fa08410100d00df30800d00cb0bf88fd0600d7ff5c0000005f00000000e803000000d108000060bf0200" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_18_it.json b/core/translations/fonts/font_ttsatoshi_demibold_18_it.json new file mode 100644 index 0000000000..d339c7915e --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_18_it.json @@ -0,0 +1,9 @@ +{ + "À": "0d110c00110070cf000000000000fa0700000000009009000000000000000000000000faff0100000000ffff0700000050fffd0c000000b0cff52f000000f17ff07f000000f62fb0df000000fc0c60ff020010ff0710ff080070ffffffff0d00c0ffffffff3f00f28f2222f38f00f71f0000b0ef00fd0c000050ff03", + "à": "090e0a000e009804000000f30e000000509f0000000000000000b4ee2a0040ffefff01b0bf00fd09201200f80c10d9ffff0cc0ffbcfd0cf23f00f80cf33f10fe0cd0fffdff0c20eabef40c", + "è": "0a0e0b000e009506000000d13f00000020df000000000000000091fd6c0010feffff0ab0cf01f35ff03f0090aff3ffffffdff28f888878f04f00000090df02f46f10fdffff0b0090fd7c00", + "é": "0a0e0b000e00001099010000908f000000f40b0000000000000091fd6c0010feffff0ab0cf01f35ff03f0090aff3ffffffdff28f888878f04f00000090df02f46f10fdffff0b0090fd7c00", + "ì": "050e06000ef60d00907f0000980000000000fd0600fd0600fd0600fd0600fd0600fd0600fd0600fd0600fd0600fd06", + "ò": "0b0e0b000e00940700000000c04f0000000010ee0100000000000000000090fd7c000010feffff0c00a0ef25f77f00f05f0080df00f30f0040ff00f30f0040ff00f05f0080df00a0ef14f67f0010feffff0c000091fd7c0000", + "ù": "090e0b010e40ef01000000f60a000000701900000000000000fd0600f909fd0600f909fd0600f909fd0600f909fd0600f909fd0600fa09fc0800fc09f95f71ff09f1ffffff0920fb8ef809" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_18_pt.json b/core/translations/fonts/font_ttsatoshi_demibold_18_pt.json new file mode 100644 index 0000000000..9cafa95ce5 --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_18_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0b0a0b000a0090fd7c000010feffff0c00a0ef25f77f00f05f0080df00f30f0040ff00f30f0040ff00f05f0080df00a0ef14f67f0010feffff0c000091fd7c0000", + "Á": "0d110c0011000000f41d0000000010fe02000000004049000000000000000000000000faff0100000000ffff0700000050fffd0c000000b0cff52f000000f17ff07f000000f62fb0df000000fc0c60ff020010ff0710ff080070ffffffff0d00c0ffffffff3f00f28f2222f38f00f71f0000b0ef00fd0c000050ff03", + "Ã": "0d110c00110020ed662f000000a0ffff0c000000300330000000000000000000000000faff0100000000ffff0700000050fffd0c000000b0cff52f000000f17ff07f000000f62fb0df000000fc0c60ff020010ff0710ff080070ffffffff0d00c0ffffffff3f00f28f2222f38f00f71f0000b0ef00fd0c000050ff03", + "Ç": "0d110d000d0000b7ee5a000000c2ffffff0a0000fd9f55fb9f0070ff040080ff02d09f000000aa05f05f0000000000f22f0000000000f04f0000000000e07f000000a90580ff010060ff0300fe5e11f7af0000d2ffffff1b000010d7ff7c00000000205f000000000030dc020000000030f7070000000090bf020000", + "Í": "051105011110fe04a06f00910700000000fa0a00fa0a00fa0a00fa0a00fa0a00fa0a00fa0a00fa0a00fa0a00fa0a00fa0a00fa0a00fa0a00", + "Ó": "0e110e001100000040890000000000e13f0000000000fa050000000000000000000000b7ee5a000000c2ffffff1b0000fd9f65fabf0070ff030060ff05d09f000000fb0af04f000000f70df22f000000f50ff04f000000f70dd09f000000fb0a70ff030050ff0500fd9f55fabf0000c2ffffff1b000000b7ee6b0000", + "Õ": "0e110e0011000020013300000000f8efdf00000000afc44e0000000000000000000000b7ee5a000000c2ffffff1b0000fd9f65fabf0070ff030060ff05d09f000000fb0af04f000000f70df22f000000f50ff04f000000f70dd09f000000fb0a70ff030050ff0500fd9f55fabf0000c2ffffff1b000000b7ee6b0000", + "Ú": "0b110d0111000020ff02000000c04f0000000093060000000000000000fb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bf90b0000fc08f73f0030ff06e1ff47f7ef0040ffffff4f0000a2fd9d0100", + "à": "090e0a000e009804000000f30e000000509f0000000000000000b4ee2a0040ffefff01b0bf00fd09201200f80c10d9ffff0cc0ffbcfd0cf23f00f80cf33f10fe0cd0fffdff0c20eabef40c", + "á": "090e0a000e00004089000000e13f000000fa0500000000000000b4ee2a0040ffefff01b0bf00fd09201200f80c10d9ffff0cc0ffbcfd0cf23f00f80cf33f10fe0cd0fffdff0c20eabef40c", + "ã": "090e0a000e002001330000f8efdf0000afc44e00000000000000b4ee2a0040ffefff01b0bf00fd09201200f80c10d9ffff0cc0ffbcfd0cf23f00f80cf33f10fe0cd0fffdff0c20eabef40c", + "ç": "0a0e0a000a0090fd7c0010feffff0aa0ef25f64ff05f00706af30f000000f30f000000f04f00706aa0ef04f55f20feffff0b0091ff8e000000ea00000000d609000000c50f000000df0700", + "é": "0a0e0b000e00001099010000908f000000f40b0000000000000091fd6c0010feffff0ab0cf01f35ff03f0090aff3ffffffdff28f888878f04f00000090df02f46f10fdffff0b0090fd7c00", + "ê": "0a0e0b000e00009805000090af3f0000f608ee0100000000000091fd6c0010feffff0ab0cf01f35ff03f0090aff3ffffffdff28f888878f04f00000090df02f46f10fdffff0b0090fd7c00", + "í": "050e05010e40ef01e03f00940400000000fd0600fd0600fd0600fd0600fd0600fd0600fd0600fd0600fd0600fd0600", + "ó": "0b0e0b000e000000990200000080af00000000f30c00000000000000000090fd7c000010feffff0c00a0ef25f77f00f05f0080df00f30f0040ff00f30f0040ff00f05f0080df00a0ef14f67f0010feffff0c000091fd7c0000", + "ô": "0b0e0b000e0000980600000080af5f000000f509fd02000000000000000090fd7c000010feffff0c00a0ef25f77f00f05f0080df00f30f0040ff00f30f0040ff00f05f0080df00a0ef14f67f0010feffff0c000091fd7c0000", + "õ": "0b0e0b000e00000231010000e2efff050000f892ae00000000000000000090fd7c000010feffff0c00a0ef25f77f00f05f0080df00f30f0040ff00f30f0040ff00f05f0080df00a0ef14f67f0010feffff0c000091fd7c0000", + "ú": "090e0b010e0000f22f000000fc050000206900000000000000fd0600f909fd0600f909fd0600f909fd0600f909fd0600f909fd0600fa09fc0800fc09f95f71ff09f1ffffff0920fb8ef809" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_18_tr.json b/core/translations/fonts/font_ttsatoshi_demibold_18_tr.json new file mode 100644 index 0000000000..a39a223039 --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_18_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0d110d000d0000b7ee5a000000c2ffffff0a0000fd9f55fb9f0070ff040080ff02d09f000000aa05f05f0000000000f22f0000000000f04f0000000000e07f000000a90580ff010060ff0300fe5e11f7af0000d2ffffff1b000010d7ff7c00000000205f000000000030dc020000000030f7070000000090bf020000", + "Ö": "0e110e0011000000000000000000fc749f00000000fc749f0000000000000000000000b7ee5a000000c2ffffff1b0000fd9f65fabf0070ff030060ff05d09f000000fb0af04f000000f70df22f000000f50ff04f000000f70dd09f000000fb0a70ff030050ff0500fd9f55fabf0000c2ffffff1b000000b7ee6b0000", + "Ü": "0b110d011100f30dfe020000f30dfe0200001001110000000000000000fb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bfb090000fa0bf90b0000fc08f73f0030ff06e1ff47f7ef0040ffffff4f0000a2fd9d0100", + "ç": "0a0e0a000a0090fd7c0010feffff0aa0ef25f64ff05f00706af30f000000f30f000000f04f00706aa0ef04f55f20feffff0b0091ff8e000000ea00000000d609000000c50f000000df0700", + "ö": "0b0d0b000d00f40cff010000f40cff01000010001100000090fd7c000010feffff0c00a0ef25f77f00f05f0080df00f30f0040ff00f30f0040ff00f05f0080df00a0ef14f67f0010feffff0c000091fd7c0000", + "ü": "090d0b010d40cff01f0040cff01f000001100100fd0600f909fd0600f909fd0600f909fd0600f909fd0600f909fd0600fa09fc0800fc09f95f71ff09f1ffffff0920fb8ef809", + "Ğ": "0d110e0011000079106900000000fbca6f00000000b1ef080000000000000000000000b7ee5b000000c2ffffff0b0000fd9f55fb9f0070ff040090ff03d09f0000008804f04f0000000000f22f00a0cccc08f04f00c0ffff0ad08f000000fc0a80ff030050ff0a00fd9f55faff0a00c2fffffffb0a0000b7ee4bf20a", + "ğ": "0a120b000e009304940200f19efe010040fd4d00000000000000b3ee79bf30ffffffbfd0cf02f7bff13f00c0bff30f0090bff12f00b0bfd0cf02f7bf40ffffffbf00b3ee99bf00000090afa05b00c08fb0ef02f64f20feffff0b00a1fe7c00", + "İ": "0311050111f709f70910000000fa0afa0afa0afa0afa0afa0afa0afa0afa0afa0afa0afa0afa0a", + "ı": "030a05010afd06fd06fd06fd06fd06fd06fd06fd06fd06fd06", + "Ş": "0b110b000d0091fdbd030030ffffff6f00c0df35d5ff01f05f0010ff04f08f00002201a0ffad37000010faffff4e00001075fbff0200000020ff07f41f0000fc08f1cf0361ff0550ffffffcf0000a3fecf07000000f50300000000c41c00000000945f00000000ec0a0000", + "ş": "090e09000a10d9cf0700e1fffeaf00f51f40ff02f55f010000d1ffef290000b7fdef01310220ff05f53f30ff05d0ffffef0110e9ff2b0000900f00000020ab00000050fb020000f08e0000" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_21_it.json b/core/translations/fonts/font_ttsatoshi_demibold_21_it.json new file mode 100644 index 0000000000..55d1756a5f --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_21_it.json @@ -0,0 +1,9 @@ +{ + "À": "0f140e001400000000000000000000fd0b000000000000e26f00000000000040ff0100000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff7eff0700000050ff19ff0c000000a0ff03fc2f000000f1ef00f68f000000f68f00f1df000000fb3f00b0ff030010ffffffffff080060ffffffffff0e00c0ff898888fc4f00f2df000000f59f00f78f000000f1ef00fd3f000000b0ff04", + "à": "0b100c001000000000000000f54f0000000080ef0000000000fb0900000000000000000070fcad020000fcffff4f0070ff39e5ef0030440060ff0300b4feffff0460ffffffff04e0ef0260ff04f19f0090ff04f0ef24f7ff0480ffffffff0400c6ef29ff04", + "è": "0c100c001000000000000000e29f0000000030ff0300000000f60d00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f63ff0efccccfc7ff1ffffffff8ff09f00000000b0ef0100750730ff5d94ff0c00f6ffffdf010030dacf0800", + "é": "0c100c0010000000000000000000f36f00000000fd0900000080bf00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f63ff0efccccfc7ff1ffffffff8ff09f00000000b0ef0100750730ff5d94ff0c00f6ffffdf010030dacf0800", + "ì": "0510060010000000f82f00a0cf0000fc0600000000fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f", + "ò": "0c100d001000000000000000d1bf0000000020ff0500000000f41e00000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ù": "0b100d011000000000000000fc0c00000000e17f0000000030ff020000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffffff0300c6df47ff03" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_21_pt.json b/core/translations/fonts/font_ttsatoshi_demibold_21_pt.json new file mode 100644 index 0000000000..e67ef569ad --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_21_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0c0b0d000b0030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "Á": "0f140e0014000000000000000000000020ff070000000000c0af000000000000f70c00000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff7eff0700000050ff19ff0c000000a0ff03fc2f000000f1ef00f68f000000f68f00f1df000000fb3f00b0ff030010ffffffffff080060ffffffffff0e00c0ff898888fc4f00f2df000000f59f00f78f000000f1ef00fd3f000000b0ff04", + "Ã": "0f140e001400000000000000000000e5aefd0b00000000fffeff060000001069405800000000000000000000000000e0ff6f0000000000f4ffcf0000000000faffff0100000000ff7eff0700000050ff19ff0c000000a0ff03fc2f000000f1ef00f68f000000f68f00f1df000000fb3f00b0ff030010ffffffffff080060ffffffffff0e00c0ff898888fc4f00f2df000000f59f00f78f000000f1ef00fd3f000000b0ff04", + "Ç": "0f140f000f000070ecdf1800000030fdffffef040000f3ffbfebff3f0000fd9f0000f8df0060ff0a0000a0ff05c0ff010000106604f0df000000000000f0bf000000000000e0cf000000000000c0ff00000010550380ff06000080ff0600fe3e0000f3ef0000f5ff6a96ff5f000040ffffffff0500000072fdef3a0000000000f209000000000000f65e00000000000020ef000000000000fbbf0000000000009606000000", + "Í": "061406011400000000f73f20ff05c08f00000000f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00f64f00", + "Ó": "1014100014000000000000000000000000f55f000000000010fe070000000000a0af0000000000000000000000000070ecdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f6ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa1fc0ff01000000fe0e70ff09000060ff0900fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000070fcdf180000", + "Õ": "1013100013000070ce558f00000000f2efff4f000000009305950400000000000000000000000070ecdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f6ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa1fc0ff01000000fe0e70ff09000060ff0900fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000070fcdf180000", + "Ú": "0d140f011400000000000000000000e1af0000000000f90c0000000040ef01000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff09000030dadf4a0000", + "à": "0b100c001000000000000000f54f0000000080ef0000000000fb0900000000000000000070fcad020000fcffff4f0070ff39e5ef0030440060ff0300b4feffff0460ffffffff04e0ef0260ff04f19f0090ff04f0ef24f7ff0480ffffffff0400c6ef29ff04", + "á": "0b100c0010000000000000000000fa1e00000040ff03000000e05f00000000000000000070fcad020000fcffff4f0070ff39e5ef0030440060ff0300b4feffff0460ffffffff04e0ef0260ff04f19f0090ff04f0ef24f7ff0480ffffffff0400c6ef29ff04", + "ã": "0b0f0c000f00a0aea33f0000f7feff0e000096118702000000000000000070fcad020000fcffff4f0070ff39e5ef0030440060ff0300b4feffff0460ffffffff04e0ef0260ff04f19f0090ff04f0ef24f7ff0480ffffffff0400c6ef29ff04", + "ç": "0c100c000b0030dacf070000f7ffffdf0130ff9fb7ff0ac0ff0300fb1ff0af00002002f17f00000000f09f00000000d0ef0000e82e50ff4c62ff0c00f9ffffff030050fbef2a000000d00e00000000f19f0000000000fc03000000f6ff0100000093270000", + "é": "0c100c0010000000000000000000f36f00000000fd0900000080bf00000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f63ff0efccccfc7ff1ffffffff8ff09f00000000b0ef0100750730ff5d94ff0c00f6ffffdf010030dacf0800", + "ê": "0c100c00100000000000000000f6cf00000040dff8090000e23fd07f000000000000000030dacf070000f8ffffdf0140ff5c84ff0bd0ef0000f63ff0efccccfc7ff1ffffffff8ff09f00000000b0ef0100750730ff5d94ff0c00f6ffffdf010030dacf0800", + "í": "061005011000000000fc0c70ef01f23f00000000fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00fa0f00", + "ó": "0c100d0010000000000000000000f28f00000000fc0b00000060df00000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ô": "0c100d00100000000000000000f4df00000020eff70b0000e15fc08f000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "õ": "0c0f0d000f0040dd27cf0000e0efff7f000091078406000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ú": "0b100d0110000000000000000020ff08000000c0bf00000000f60d0000000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffffff0300c6df47ff03" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_21_tr.json b/core/translations/fonts/font_ttsatoshi_demibold_21_tr.json new file mode 100644 index 0000000000..58012a28f1 --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_21_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0f140f000f000070ecdf1800000030fdffffef040000f3ffbfebff3f0000fd9f0000f8df0060ff0a0000a0ff05c0ff010000106604f0df000000000000f0bf000000000000e0cf000000000000c0ff00000010550380ff06000080ff0600fe3e0000f3ef0000f5ff6a96ff5f000040ffffffff0500000072fdef3a0000000000f209000000000000f65e00000000000020ef000000000000fbbf0000000000009606000000", + "Ö": "10131000130000f15ff23f00000000f15ff23f000000006026611600000000000000000000000070ecdf1800000030fdffffef050000f3ffbeebff6f0000fd8f0000f6ef0170ff09000070ff09c0ff01000000fe0ef0df00000000fa1ff0bf00000000f83ff0df00000000fa1fc0ff01000000fe0e70ff09000060ff0900fd8f0000f6ef0100f3ffbeebff6f000030fdffffef0500000070fcdf180000", + "Ü": "0d130f01130090cfb0bf00000090cfb0bf00000040564046000000000000000000f82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af82f000010ff0af83f000010ff0af64f000030ff08f39f000080ff05e0ff0600f5ff0160ffdfcaff7f0000f8ffffff09000030dadf4a0000", + "ç": "0c100c000b0030dacf070000f7ffffdf0130ff9fb7ff0ac0ff0300fb1ff0af00002002f17f00000000f09f00000000d0ef0000e82e50ff4c62ff0c00f9ffffff030050fbef2a000000d00e00000000f19f0000000000fc03000000f6ff0100000093270000", + "ö": "0c0f0d000f00d08ff06f0000d08ff06f000050366026000000000000000030dacf080000f7ffffdf0230ff9fc7ff0cc0ff0300f95ff0af0000f18ff27f0000e0bff0af0000f18fc0ff0200f95f40ff9fb7ff0c00f7ffffdf020030dacf0800", + "ü": "0b0f0d010f00fd08ff060000fd08ff0600006503660200000000000000fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03fa0f0060ff03f90f0070ff03f75f00b0ff03f3ff79fcff0390ffffffff0300c6df47ff03", + "Ğ": "0f1410001400000000000000000000f41de23f00000000d0ffff0d0000000020ebae0100000000000000000000000070fcbe1800000030fdffffef050000f3ffbeebff4f0000fd8f0000f8ef0170ff090000a0ff06c0ff000000002201f0df000000000000f0bf0000f9ffff0cf0df0000f9ffff0cc0ff01001121ff0c70ff09000070ff0c00fd8f0000f6ff0c00f3ffbeebffff0c0030fdffffdff90c000070fcce07f50c", + "ğ": "0c140d001000000000000000d05f91af000070ffff4f000000d7df05000000000000000060fc9ef25f00fbffffff5f70ff6dc6ff5fe0ef0000fc5ff18f0000f65ff18f0000f65fe0df0000fc5f70ff6db6ff5f00fcffffff5f0070fc9ef65f00000000f54fa0dd0100fa1f60ff6da5ff0c00faffffef020060eccf0800", + "İ": "0413060113f32ff32f61160000f64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64ff64f", + "ı": "030b05010bfa0ffa0ffa0ffa0ffa0ffa0ffa0ffa0ffa0ffa0ffa0f", + "Ş": "0d140d000f0040dbdf5b000000faffffff0b0060ffafb9ff8f00c0ff0200f2ef00e0df000080dd01c0ff060000000050ffff9c16000000f7ffffff1a00000084eaffbf0000000000e4ff028148000060ff05f0cf000080ff03a0ff6c43f8ef0000fcffffff4f000060fbff9d01000000803f0000000000c0cf010000000000f80800000000f1ff05000000009048000000", + "ş": "0a100b000b00c5ee6c0090ffffff0bf2cf34f96ff56f007047f1ff8b260050feffff0a0030a7fe8f511500e0cff2af01f3bf90ffffff4f00c6ffbe030000de00000010fd08000000c02f000060ff0e000040790200" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_42_it.json b/core/translations/fonts/font_ttsatoshi_demibold_42_it.json new file mode 100644 index 0000000000..fed502434a --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_42_it.json @@ -0,0 +1,9 @@ +{ + "À": "1d261d002600000040ffff2f000000000000000000000000f6ffcf00000000000000000000000090ffff06000000000000000000000000fbff2f000000000000000000000000d1ffbf00000000000000000000000020ffff060000000000000000000000001011010000000000000000000000000000000000000000000000000000000000000000000000000000000000faffffff0a00000000000000000010ffffffff0f00000000000000000060ffffffff5f000000000000000000c0ffffffffbf000000000000000000f2ffffffffff010000000000000000f7ffffffffff070000000000000000fdfffff5ffff0d0000000000000030ffffafb0ffff2f0000000000000090ffff4f50ffff8f00000000000000e0ffff0f00ffffef00000000000000f4ffff0a00faffff04000000000000faffff0400f5ffff0a000000000000ffffef0000f0ffff0f000000000060ffff9f0000a0ffff5f0000000000c0ffff4f000040ffffbf0000000000f1ffff0e000000feffff0100000000f7ffff09000000f9ffff0700000000fdffff04000000f4ffff0c00000030ffffffffffffffffffff2f00000080ffffffffffffffffffff8f000000e0ffffffffffffffffffffef000000f4ffffffffffffffffffffff040000faffffffffffffffffffffff0a0000ffffff020000000000f2ffff0f0050ffffcf000000000000c0ffff5f00b0ffff6f00000000000060ffffbf00f1ffff0f00000000000010ffffff01f7ffff0a00000000000000faffff07fdffff0400000000000000f4ffff0c", + "à": "142017011f0030ffff3f00000000000000f5ffdf0000000000000080ffff0700000000000000fbff2f00000000000000d0ffcf0000000000000020feff0700000000000000101101000000000000000000000000000000000000000000000000000093edef8c0300000000a1ffffffffbf02000030ffffffffffff3e0000e1ffffffffffffef0100faffff6c64fcffff0900ffff9f0000b0ffff0f40ffff0f000020ffff5f10222202000000fdff7f00000000000000fbff9f000060dafeffffffff9f0060ffffffffffffff9f00f9ffffffffffffff9f50ffffffffffffffff9fd0ffff8f020000faff9ff2ffff05000000fcff9ff4ffff00000000ffff9ff4ffff00000070ffff9ff2ffff060000f4ffff9fe0ffff9f34a6ffffff9f50ffffffffffffffff9f00fafffffffffffbff9f0070ffffffff6ff0ff9f000081ecdf7b00000000", + "è": "172019011f0000f8ffcf000000000000000000b0ffff07000000000000000000fdff2f000000000000000000e2ffcf00000000000000000040ffff07000000000000000000f6ff2f000000000000000000101101000000000000000000000000000000000000000000000000000000000000000030c8fece3800000000000030fcffffffff3b0000000000f7ffffffffffff0500000070ffffffffffffff5f000000f4ffffdf79d9ffffff020000fdffff060000f6ffff0b0060ffff5f00000060ffff3f00b0ffff0a00000000fcff8f00f0ffff0400000000f6ffdf00f2ffff8988888888faffff00f4ffffffffffffffffffff00f4ffffffffffffffffffff00f3ffffffffffffffffffff00f2ffff010000000000000000e0ffff050000000000000000a0ffff0b000000000000000050ffff7f00000040ffff4f0000fdffff080000f5ffff0d0000f3ffffdf79c8ffffff04000070ffffffffffffff8f00000000f6ffffffffffff080000000030fcffffffff4d00000000000030c8fede4900000000", + "é": "172019011f000000000000f1ffff050000000000000000fbff7f000000000000000050ffff0a0000000000000000e1ffcf000000000000000000faff1e000000000000000050ffff030000000000000000101111000000000000000000000000000000000000000000000000000000000000000030c8fece3800000000000030fcffffffff3b0000000000f7ffffffffffff0500000070ffffffffffffff5f000000f4ffffdf79d9ffffff020000fdffff060000f6ffff0b0060ffff5f00000060ffff3f00b0ffff0a00000000fcff8f00f0ffff0400000000f6ffdf00f2ffff8988888888faffff00f4ffffffffffffffffffff00f4ffffffffffffffffffff00f3ffffffffffffffffffff00f2ffff010000000000000000e0ffff050000000000000000a0ffff0b000000000000000050ffff7f00000040ffff4f0000fdffff080000f5ffff0d0000f3ffffdf79c8ffffff04000070ffffffffffffff8f00000000f6ffffffffffff080000000030fcffffffff4d00000000000030c8fede4900000000", + "ì": "0a1e0d001ef7ffdf0000a0ffff080000fcff3f0000e1ffdf000030ffff080000f5ff2f0000101101000000000000000000000000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff0000f4ffff", + "ò": "172019011f0000f5ffef01000000000000000080ffff0a000000000000000000faff5f000000000000000000d0ffef01000000000000000010feff0a000000000000000000f3ff4f000000000000000000101101000000000000000000000000000000000000000000000000000000000000000030c8fede4900000000000030fcffffffff5d0000000000f7ffffffffffff0900000070ffffffffffffffaf000000f4ffffffefffffffff070000fdffff5e0140fcffff1f0050ffffcf010000a0ffff8f00b0ffff2f00000000feffef00f0ffff0800000000f5ffff02f2ffff0300000000f1ffff05f3ffff0100000000e0ffff06f4ffff0000000000c0ffff07f3ffff0100000000e0ffff06f2ffff0300000000f0ffff05f0ffff0800000000f5ffff02b0ffff1f00000000fdffef0050ffffcf01000090ffff8f0000fdffff5e0130fcffff1f0000f4ffffffefffffffff07000070ffffffffffffffaf00000000f7ffffffffffff090000000030fcffffffff5d00000000000040c8fede4900000000", + "ù": "151f19021e0020ffff4f0000000000000000f5ffdf000000000000000070ffff080000000000000000faff3f0000000000000000c0ffdf000000000000000010feff0800000000000000001011010000000000000000000000000000000000000000000000000000f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000d0ffff07f3ffff02000000f0ffff07f2ffff06000000f4ffff07f0ffff1e000000fdffff07a0ffffef0500d3ffffff0730fffffffffdffffffff0700faffffffffffffffff0700d0ffffffffffdeffff070000faffffffbf71ffff07000030d9ffac0300000000" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_42_pt.json b/core/translations/fonts/font_ttsatoshi_demibold_42_pt.json new file mode 100644 index 0000000000..9200feb9ca --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_42_pt.json @@ -0,0 +1,21 @@ +{ + "o": "171719011600000030c8fede4900000000000030fcffffffff5d0000000000f7ffffffffffff0900000070ffffffffffffffaf000000f4ffffffefffffffff070000fdffff5e0140fcffff1f0050ffffcf010000a0ffff8f00b0ffff2f00000000feffef00f0ffff0800000000f5ffff02f2ffff0300000000f1ffff05f3ffff0100000000e0ffff06f4ffff0000000000c0ffff07f3ffff0100000000e0ffff06f2ffff0300000000f0ffff05f0ffff0800000000f5ffff02b0ffff1f00000000fdffef0050ffffcf01000090ffff8f0000fdffff5e0130fcffff1f0000f4ffffffefffffffff07000070ffffffffffffffaf00000000f7ffffffffffff090000000030fcffffffff5d00000000000040c8fede4900000000", + "Á": "1d261d00260000000000000000feff6f000000000000000000000090ffff090000000000000000000000f4ffcf000000000000000000000000fdff1d000000000000000000000090ffff020000000000000000000000f3ff4f0000000000000000000000001011010000000000000000000000000000000000000000000000000000000000000000000000000000000000faffffff0a00000000000000000010ffffffff0f00000000000000000060ffffffff5f000000000000000000c0ffffffffbf000000000000000000f2ffffffffff010000000000000000f7ffffffffff070000000000000000fdfffff5ffff0d0000000000000030ffffafb0ffff2f0000000000000090ffff4f50ffff8f00000000000000e0ffff0f00ffffef00000000000000f4ffff0a00faffff04000000000000faffff0400f5ffff0a000000000000ffffef0000f0ffff0f000000000060ffff9f0000a0ffff5f0000000000c0ffff4f000040ffffbf0000000000f1ffff0e000000feffff0100000000f7ffff09000000f9ffff0700000000fdffff04000000f4ffff0c00000030ffffffffffffffffffff2f00000080ffffffffffffffffffff8f000000e0ffffffffffffffffffffef000000f4ffffffffffffffffffffff040000faffffffffffffffffffffff0a0000ffffff020000000000f2ffff0f0050ffffcf000000000000c0ffff5f00b0ffff6f00000000000060ffffbf00f1ffff0f00000000000010ffffff01f7ffff0a00000000000000faffff07fdffff0400000000000000f4ffff0c", + "Ã": "1d261d00260000000000100200003323000000000000000050feff1870ff8f0000000000000000f6ffffffffff5f0000000000000000feffffffffff1e0000000000000030ffaf61ffffff050000000000000060ff3f00a1ee3b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000faffffff0a00000000000000000010ffffffff0f00000000000000000060ffffffff5f000000000000000000c0ffffffffbf000000000000000000f2ffffffffff010000000000000000f7ffffffffff070000000000000000fdfffff5ffff0d0000000000000030ffffafb0ffff2f0000000000000090ffff4f50ffff8f00000000000000e0ffff0f00ffffef00000000000000f4ffff0a00faffff04000000000000faffff0400f5ffff0a000000000000ffffef0000f0ffff0f000000000060ffff9f0000a0ffff5f0000000000c0ffff4f000040ffffbf0000000000f1ffff0e000000feffff0100000000f7ffff09000000f9ffff0700000000fdffff04000000f4ffff0c00000030ffffffffffffffffffff2f00000080ffffffffffffffffffff8f000000e0ffffffffffffffffffffef000000f4ffffffffffffffffffffff040000faffffffffffffffffffffff0a0000ffffff020000000000f2ffff0f0050ffffcf000000000000c0ffff5f00b0ffff6f00000000000060ffffbf00f1ffff0f00000000000010ffffff01f7ffff0a00000000000000faffff07fdffff0400000000000000f4ffff0c", + "Ç": "1d281f011e000000000072dbfecd49000000000000000000d4ffffffffff7e00000000000000b1ffffffffffffff3d000000000030feffffffffffffffff0400000000f3ffffffffffffffffff3f00000010fdffffff7b45a6ffffffef010000b0ffffff19000000a1ffffff0a0000f3ffff5f0000000000f6ffff3f0000fbffff06000000000080ffffaf0020ffffbf00000000000000fdffff0060ffff4f00000000000000b5bbbb03b0ffff0e0000000000000000000000e0ffff0a0000000000000000000000f0ffff070000000000000000000000f1ffff060000000000000000000000f1ffff050000000000000000000000f0ffff070000000000000000000000e0ffff090000000000000000000000c0ffff0d000000000000000000000080ffff2f00000000000000b5bbbb0330ffff9f00000000000000fdffff0100fdffff03000000000060ffffbf0000f5ffff2e0000000000f3ffff4f0000c0ffffef0500000060ffffff0c000020ffffffcf260051fcffffff02000000f5ffffffffffffffffff6f0000000050ffffffffffffffffff070000000000d3ffffffffffffff6f00000000000000e8ffffffffffaf020000000000000000a6feffef8b0100000000000000000000f3ff06000000000000000000000000f9ff00000000000000000000000000fcff3c000000000000000000000000a7fdff04000000000000000000000000f0ff0b000000000000000000000000f4ff0e0000000000000000000060ffffff0b0000000000000000000060ffffff030000000000000000000060ffff3b000000000000000000000010220100000000000000", + "Í": "0b260c03260000f9ffcf000030ffff1e0000d0ffff030000f8ff5f000030ffff080000d0ffaf000000101101000000000000000000000000000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000fdff9f000000", + "Ó": "1e282001270000000000000000f4ffff020000000000000000000000feff4f000000000000000000000090ffff070000000000000000000000f3ff9f000000000000000000000000fdff0c000000000000000000000080ffef010000000000000000000000101101000000000000000000000000000000000000000000000000000000000000000000000000000000000072dbfecd49000000000000000000c4ffffffffff7e00000000000000b1ffffffffffffff4d000000000020fdffffffffffffffff0500000000e2ffffffffffffffffff6f00000000fdffffff7b4596feffffff030000a0ffffff1a00000070ffffff0e0000f2ffff7f0000000000e3ffff7f0000faffff08000000000030ffffef0010ffffdf00000000000000f8ffff0650ffff5f00000000000000f1ffff0ba0ffff0f00000000000000a0ffff0fd0ffff0b0000000000000060ffff2ff0ffff070000000000000020ffff4ff0ffff060000000000000010ffff5ff1ffff050000000000000000ffff6ff0ffff060000000000000010ffff5ff0ffff070000000000000020ffff4fd0ffff0b0000000000000050ffff2fa0ffff0e0000000000000090ffff0f60ffff5f00000000000000f1ffff0b10ffffcf00000000000000f7ffff0600faffff07000000000030ffffef0000f2ffff6f0000000000e2ffff7f0000a0ffffff1a00000060ffffff0e000000fdffffff6b4596feffffff03000000e2ffffffffffffffffff6f0000000020fdffffffffffffffff060000000000b1ffffffffffffff4d00000000000000c4ffffffffff7e00000000000000000072dbfecd490000000000", + "Õ": "1e282001270000000000001200003133010000000000000000f9ff4d00f8ff0300000000000000b0ffffffacffff0000000000000000f4ffffffffffaf0000000000000000f8ff9dfdffff2e0000000000000000fbff0050fc9d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072dbfecd49000000000000000000c4ffffffffff7e00000000000000b1ffffffffffffff4d000000000020fdffffffffffffffff0500000000e2ffffffffffffffffff6f00000000fdffffff7b4596feffffff030000a0ffffff1a00000070ffffff0e0000f2ffff7f0000000000e3ffff7f0000faffff08000000000030ffffef0010ffffdf00000000000000f8ffff0650ffff5f00000000000000f1ffff0ba0ffff0f00000000000000a0ffff0fd0ffff0b0000000000000060ffff2ff0ffff070000000000000020ffff4ff0ffff060000000000000010ffff5ff1ffff050000000000000000ffff6ff0ffff060000000000000010ffff5ff0ffff070000000000000020ffff4fd0ffff0b0000000000000050ffff2fa0ffff0e0000000000000090ffff0f60ffff5f00000000000000f1ffff0b10ffffcf00000000000000f7ffff0600faffff07000000000030ffffef0000f2ffff6f0000000000e2ffff7f0000a0ffffff1a00000060ffffff0e000000fdffffff6b4596feffffff03000000e2ffffffffffffffffff6f0000000020fdffffffffffffffff060000000000b1ffffffffffffff4d00000000000000c4ffffffffff7e00000000000000000072dbfecd490000000000", + "Ú": "1a271e022600000000000000f8ffcf00000000000000000030ffff1e000000000000000000d0ffff03000000000000000000f8ff5f00000000000000000020ffff08000000000000000000c0ffbf0000000000000000000010110100000000000000000000000000000000000000000000000000000000000000f0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff07000000000030ffff3fe0ffff0a000000000060ffff2fc0ffff0e0000000000b0ffff0f80ffff8f0000000000f5ffff0b30ffffff0300000010feffff0700fcffff7f000000e4ffffff0100f5ffffff7c44b6ffffff8f0000a0ffffffffffffffffff0d000000fcffffffffffffffef02000000a0ffffffffffffff1c0000000000d5ffffffffff6e0000000000000083dcffce4900000000", + "à": "142017011f0030ffff3f00000000000000f5ffdf0000000000000080ffff0700000000000000fbff2f00000000000000d0ffcf0000000000000020feff0700000000000000101101000000000000000000000000000000000000000000000000000093edef8c0300000000a1ffffffffbf02000030ffffffffffff3e0000e1ffffffffffffef0100faffff6c64fcffff0900ffff9f0000b0ffff0f40ffff0f000020ffff5f10222202000000fdff7f00000000000000fbff9f000060dafeffffffff9f0060ffffffffffffff9f00f9ffffffffffffff9f50ffffffffffffffff9fd0ffff8f020000faff9ff2ffff05000000fcff9ff4ffff00000000ffff9ff4ffff00000070ffff9ff2ffff060000f4ffff9fe0ffff9f34a6ffffff9f50ffffffffffffffff9f00fafffffffffffbff9f0070ffffffff6ff0ff9f000081ecdf7b00000000", + "á": "142017011f000000000000fdff7f00000000000080ffff0a000000000000f3ffcf00000000000000fdff1e00000000000080ffff03000000000000f3ff5f00000000000000101101000000000000000000000000000000000000000000000000000093edef8c0300000000a1ffffffffbf02000030ffffffffffff3e0000e1ffffffffffffef0100faffff6c64fcffff0900ffff9f0000b0ffff0f40ffff0f000020ffff5f10222202000000fdff7f00000000000000fbff9f000060dafeffffffff9f0060ffffffffffffff9f00f9ffffffffffffff9f50ffffffffffffffff9fd0ffff8f020000faff9ff2ffff05000000fcff9ff4ffff00000000ffff9ff4ffff00000070ffff9ff2ffff060000f4ffff9fe0ffff9f34a6ffffff9f50ffffffffffffffff9f00fafffffffffffbff9f0070ffffffff6ff0ff9f000081ecdf7b00000000", + "ã": "142017011f00000010020000332300000040feff0720ff9f000000f5ffffefeaff6f000000fdffffffffff1f000020ffffbaffffff06000050ff6f00a2ee4b000000000000000000000000000000000000000000000000000000000000000000000093edef8c0300000000a1ffffffffbf02000030ffffffffffff3e0000e1ffffffffffffef0100faffff6c64fcffff0900ffff9f0000b0ffff0f40ffff0f000020ffff5f10222202000000fdff7f00000000000000fbff9f000060dafeffffffff9f0060ffffffffffffff9f00f9ffffffffffffff9f50ffffffffffffffff9fd0ffff8f020000faff9ff2ffff05000000fcff9ff4ffff00000000ffff9ff4ffff00000070ffff9ff2ffff060000f4ffff9fe0ffff9f34a6ffffff9f50ffffffffffffffff9f00fafffffffffffbff9f0070ffffffff6ff0ff9f000081ecdf7b00000000", + "ç": "162018011600000030c8fede49000000000040fcffffffff4d00000000f7ffffffffffff07000080ffffffffffffff6f0000f5ffffffefffffffff0200feffff4d0130fbffff0b70ffffaf00000080ffff1fc0ffff0e00000000fdff7ff1ffff0600000000101101f3ffff0200000000000000f4ffff0000000000000000f4ffff0000000000000000f3ffff0300000000000000f1ffff0700000000646646c0ffff1f00000000feff5f70ffffcf010000b0ffff1f10ffffff7e0352fdffff0800f7ffffffffffffffef0000b0ffffffffffffff4f000000fbffffffffffff0500000060ffffffffff3d000000000060fbffff5b0000000000000090ff1f0000000000000000f1ff0a0000000000000000f2ff9f010000000000000030c4ff0d000000000000000040ff5f0000000000000000a0ff8f00000000000000fcffff5f00000000000000fcffff0c00000000000000fcff8e010000000000000021020000000000", + "é": "172019011f000000000000f1ffff050000000000000000fbff7f000000000000000050ffff0a0000000000000000e1ffcf000000000000000000faff1e000000000000000050ffff030000000000000000101111000000000000000000000000000000000000000000000000000000000000000030c8fece3800000000000030fcffffffff3b0000000000f7ffffffffffff0500000070ffffffffffffff5f000000f4ffffdf79d9ffffff020000fdffff060000f6ffff0b0060ffff5f00000060ffff3f00b0ffff0a00000000fcff8f00f0ffff0400000000f6ffdf00f2ffff8988888888faffff00f4ffffffffffffffffffff00f4ffffffffffffffffffff00f3ffffffffffffffffffff00f2ffff010000000000000000e0ffff050000000000000000a0ffff0b000000000000000050ffff7f00000040ffff4f0000fdffff080000f5ffff0d0000f3ffffdf79c8ffffff04000070ffffffffffffff8f00000000f6ffffffffffff080000000030fcffffffff4d00000000000030c8fede4900000000", + "ê": "172019011f00000000f5ffff020000000000000030ffffff1d00000000000000e1ffffffbf00000000000000fcff5effff090000000000a0ffff03f6ff6f0000000000f7ff5f0090ffff04000000001111010000111101000000000000000000000000000000000000000000000000000000000030c8fece3800000000000030fcffffffff3b0000000000f7ffffffffffff0500000070ffffffffffffff5f000000f4ffffdf79d9ffffff020000fdffff060000f6ffff0b0060ffff5f00000060ffff3f00b0ffff0a00000000fcff8f00f0ffff0400000000f6ffdf00f2ffff8988888888faffff00f4ffffffffffffffffffff00f4ffffffffffffffffffff00f3ffffffffffffffffffff00f2ffff010000000000000000e0ffff050000000000000000a0ffff0b000000000000000050ffff7f00000040ffff4f0000fdffff080000f5ffff0d0000f3ffffdf79c8ffffff04000070ffffffffffffff8f00000000f6ffffffffffff080000000030fcffffffff4d00000000000030c8fede4900000000", + "í": "0b1e0b021e0000f3ffff030000fdff5f000080ffff080000f2ffaf000000fcff0d000070ffef010000101101000000000000000000000000000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000f4ffff000000", + "ó": "172019011f000000000000d0ffff080000000000000000f7ffbf000000000000000020ffff0d0000000000000000c0ffef020000000000000000f7ff3f000000000000000020ffff060000000000000000001111000000000000000000000000000000000000000000000000000000000000000030c8fede4900000000000030fcffffffff5d0000000000f7ffffffffffff0900000070ffffffffffffffaf000000f4ffffffefffffffff070000fdffff5e0140fcffff1f0050ffffcf010000a0ffff8f00b0ffff2f00000000feffef00f0ffff0800000000f5ffff02f2ffff0300000000f1ffff05f3ffff0100000000e0ffff06f4ffff0000000000c0ffff07f3ffff0100000000e0ffff06f2ffff0300000000f0ffff05f0ffff0800000000f5ffff02b0ffff1f00000000fdffef0050ffffcf01000090ffff8f0000fdffff5e0130fcffff1f0000f4ffffffefffffffff07000070ffffffffffffffaf00000000f7ffffffffffff090000000030fcffffffff5d00000000000040c8fede4900000000", + "ô": "172019011f00000000f2ffff050000000000000010fdffff3f00000000000000c0ffffffef01000000000000f9ff5ffeff0c000000000060ffff05f3ffaf0000000000f4ff8f0060ffff07000000001111010000111101000000000000000000000000000000000000000000000000000000000030c8fede4900000000000030fcffffffff5d0000000000f7ffffffffffff0900000070ffffffffffffffaf000000f4ffffffefffffffff070000fdffff5e0140fcffff1f0050ffffcf010000a0ffff8f00b0ffff2f00000000feffef00f0ffff0800000000f5ffff02f2ffff0300000000f1ffff05f3ffff0100000000e0ffff06f4ffff0000000000c0ffff07f3ffff0100000000e0ffff06f2ffff0300000000f0ffff05f0ffff0800000000f5ffff02b0ffff1f00000000fdffef0050ffffcf01000090ffff8f0000fdffff5e0130fcffff1f0000f4ffffffefffffffff07000070ffffffffffffffaf00000000f7ffffffffffff090000000030fcffffffff5d00000000000040c8fede4900000000", + "õ": "172019011f000000003100003033020000000000e4ff8f00f1ff090000000040ffffffaefeff0700000000d0ffffffffffff0200000000f1ffaffbffff7f0000000000f4ff0720e9be0400000000000000000000000000000000000000000000000000000000000000000000000000000000000030c8fede4900000000000030fcffffffff5d0000000000f7ffffffffffff0900000070ffffffffffffffaf000000f4ffffffefffffffff070000fdffff5e0140fcffff1f0050ffffcf010000a0ffff8f00b0ffff2f00000000feffef00f0ffff0800000000f5ffff02f2ffff0300000000f1ffff05f3ffff0100000000e0ffff06f4ffff0000000000c0ffff07f3ffff0100000000e0ffff06f2ffff0300000000f0ffff05f0ffff0800000000f5ffff02b0ffff1f00000000fdffef0050ffffcf01000090ffff8f0000fdffff5e0130fcffff1f0000f4ffffffefffffffff07000070ffffffffffffffaf00000000f7ffffffffffff090000000030fcffffffff5d00000000000040c8fede4900000000", + "ú": "151f19021e000000000000fdff8f0000000000000070ffff0b00000000000000f2ffdf0000000000000000fcff2e0000000000000070ffff0300000000000000f2ff6f00000000000000001011010000000000000000000000000000000000000000000000000000f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000d0ffff07f3ffff02000000f0ffff07f2ffff06000000f4ffff07f0ffff1e000000fdffff07a0ffffef0500d3ffffff0730fffffffffdffffffff0700faffffffffffffffff0700d0ffffffffffdeffff070000faffffffbf71ffff07000030d9ffac0300000000" +} diff --git a/core/translations/fonts/font_ttsatoshi_demibold_42_tr.json b/core/translations/fonts/font_ttsatoshi_demibold_42_tr.json new file mode 100644 index 0000000000..50d026c91b --- /dev/null +++ b/core/translations/fonts/font_ttsatoshi_demibold_42_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "1d281f011e000000000072dbfecd49000000000000000000d4ffffffffff7e00000000000000b1ffffffffffffff3d000000000030feffffffffffffffff0400000000f3ffffffffffffffffff3f00000010fdffffff7b45a6ffffffef010000b0ffffff19000000a1ffffff0a0000f3ffff5f0000000000f6ffff3f0000fbffff06000000000080ffffaf0020ffffbf00000000000000fdffff0060ffff4f00000000000000b5bbbb03b0ffff0e0000000000000000000000e0ffff0a0000000000000000000000f0ffff070000000000000000000000f1ffff060000000000000000000000f1ffff050000000000000000000000f0ffff070000000000000000000000e0ffff090000000000000000000000c0ffff0d000000000000000000000080ffff2f00000000000000b5bbbb0330ffff9f00000000000000fdffff0100fdffff03000000000060ffffbf0000f5ffff2e0000000000f3ffff4f0000c0ffffef0500000060ffffff0c000020ffffffcf260051fcffffff02000000f5ffffffffffffffffff6f0000000050ffffffffffffffffff070000000000d3ffffffffffffff6f00000000000000e8ffffffffffaf020000000000000000a6feffef8b0100000000000000000000f3ff06000000000000000000000000f9ff00000000000000000000000000fcff3c000000000000000000000000a7fdff04000000000000000000000000f0ff0b000000000000000000000000f4ff0e0000000000000000000060ffffff0b0000000000000000000060ffffff030000000000000000000060ffff3b000000000000000000000010220100000000000000", + "Ö": "1e2720012600000000f2ffaf00f5ff7f0000000000000000f2ffaf00f5ff7f0000000000000000f2ffaf00f5ff7f0000000000000000f2ffaf00f5ff7f0000000000000000d1dd9d00d4dd6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072dbfecd49000000000000000000c4ffffffffff7e00000000000000b1ffffffffffffff4d000000000020fdffffffffffffffff0500000000e2ffffffffffffffffff6f00000000fdffffff7b4596feffffff030000a0ffffff1a00000070ffffff0e0000f2ffff7f0000000000e3ffff7f0000faffff08000000000030ffffef0010ffffdf00000000000000f8ffff0650ffff5f00000000000000f1ffff0ba0ffff0f00000000000000a0ffff0fd0ffff0b0000000000000060ffff2ff0ffff070000000000000020ffff4ff0ffff060000000000000010ffff5ff1ffff050000000000000000ffff6ff0ffff060000000000000010ffff5ff0ffff070000000000000020ffff4fd0ffff0b0000000000000050ffff2fa0ffff0e0000000000000090ffff0f60ffff5f00000000000000f1ffff0b10ffffcf00000000000000f7ffff0600faffff07000000000030ffffef0000f2ffff6f0000000000e2ffff7f0000a0ffffff1a00000060ffffff0e000000fdffffff6b4596feffffff03000000e2ffffffffffffffffff6f0000000020fdffffffffffffffff060000000000b1ffffffffffffff4d00000000000000c4ffffffffff7e00000000000000000072dbfecd490000000000", + "Ü": "1a261e0225000000f2ffaf00f6ff6f000000000000f2ffaf00f6ff6f000000000000f2ffaf00f6ff6f000000000000f2ffaf00f6ff6f000000000000d2dd8d00d5dd5d000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff06000000000020ffff4ff0ffff07000000000030ffff3fe0ffff0a000000000060ffff2fc0ffff0e0000000000b0ffff0f80ffff8f0000000000f5ffff0b30ffffff0300000010feffff0700fcffff7f000000e4ffffff0100f5ffffff7c44b6ffffff8f0000a0ffffffffffffffffff0d000000fcffffffffffffffef02000000a0ffffffffffffff1c0000000000d5ffffffffff6e0000000000000083dcffce4900000000", + "ç": "162018011600000030c8fede49000000000040fcffffffff4d00000000f7ffffffffffff07000080ffffffffffffff6f0000f5ffffffefffffffff0200feffff4d0130fbffff0b70ffffaf00000080ffff1fc0ffff0e00000000fdff7ff1ffff0600000000101101f3ffff0200000000000000f4ffff0000000000000000f4ffff0000000000000000f3ffff0300000000000000f1ffff0700000000646646c0ffff1f00000000feff5f70ffffcf010000b0ffff1f10ffffff7e0352fdffff0800f7ffffffffffffffef0000b0ffffffffffffff4f000000fbffffffffffff0500000060ffffffffff3d000000000060fbffff5b0000000000000090ff1f0000000000000000f1ff0a0000000000000000f2ff9f010000000000000030c4ff0d000000000000000040ff5f0000000000000000a0ff8f00000000000000fcffff5f00000000000000fcffff0c00000000000000fcff8e010000000000000021020000000000", + "ö": "171f19011e0000b0ffff01e0ffef0000000000b0ffff01e0ffef0000000000b0ffff01e0ffef0000000000b0ffff01e0ffef000000000090dddd01c0ddcd00000000000000000000000000000000000000000000000000000000000000000000000000000000000030c8fede4900000000000030fcffffffff5d0000000000f7ffffffffffff0900000070ffffffffffffffaf000000f4ffffffefffffffff070000fdffff5e0140fcffff1f0050ffffcf010000a0ffff8f00b0ffff2f00000000feffef00f0ffff0800000000f5ffff02f2ffff0300000000f1ffff05f3ffff0100000000e0ffff06f4ffff0000000000c0ffff07f3ffff0100000000e0ffff06f2ffff0300000000f0ffff05f0ffff0800000000f5ffff02b0ffff1f00000000fdffef0050ffffcf01000090ffff8f0000fdffff5e0130fcffff1f0000f4ffffffefffffffff07000070ffffffffffffffaf00000000f7ffffffffffff090000000030fcffffffff5d00000000000040c8fede4900000000", + "ü": "151f19021e0000fbff1f00feff0e00000000fbff1f00feff0e00000000fbff1f00feff0e00000000fbff1f00feff0e00000000d9dd1d00dcdd0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000c0ffff07f4ffff00000000d0ffff07f3ffff02000000f0ffff07f2ffff06000000f4ffff07f0ffff1e000000fdffff07a0ffffef0500d3ffffff0730fffffffffdffffffff0700faffffffffffffffff0700d0ffffffffffdeffff070000faffffffbf71ffff07000030d9ffac0300000000", + "Ğ": "1d2820012700000000faff060070ff8f0000000000000000f6ff0d00c0ff5f0000000000000000f2ffdf14f9ff1f000000000000000080ffffffffff06000000000000000000faffffff9f0000000000000000000030dbffad030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072dbfecd49000000000000000000c4ffffffffff6e00000000000000b1ffffffffffffff2d000000000020fdffffffffffffffff0400000000e2ffffffffffffffffff3f00000000fdffffff7b55a7ffffffef01000090ffffff1a000000a2ffffff0a0000f2ffff7f0000000000f8ffff3f0000faffff080000000000a0ffffaf0010ffffdf00000000000010feffff0050ffff6f00000000000000c6cccc0390ffff0f0000000000000000000000d0ffff0b0000000000000000000000f0ffff080000000000000000000000f0ffff060000000022222222222201f1ffff0500000030ffffffffffff09f0ffff0600000030ffffffffffff09f0ffff0700000030ffffffffffff09e0ffff0a00000030ffffffffffff09a0ffff0e00000000000000e0ffff0960ffff4f00000000000000f3ffff0910ffffcf00000000000000f9ffff0900fbffff07000000000030ffffff0900f3ffff6f0000000000e3ffffff0900a0ffffff1900000070ffffffff090000fdffffff6b4496feffffffff090000f2ffffffffffffffffffffff09000020feffffffffffffff9fffff09000000b1ffffffffffffff07fdff0900000000c4ffffffffff3c00faff09000000000072dbfece380000000000", + "ğ": "162819011f0000c0ff4f0000f9ff0600000090ffbf0000feff0200000040ffff3ca1ffef0000000000faffffffff4f0000000000b1ffffffff07000000000000b5fedf2900000000000000000000000000000000000000000000000000000000000000000000000000000083ecdf5a000000000000a1ffffffff3df0ffaf0030fefffffffffff5ffaf00e1ffffffffffffffffaf00fcffffffbcfeffffffaf40ffffff070030feffffafb0ffff4f000000e0ffffaff0ffff0a00000040ffffaff2ffff0300000000feffaff4ffff0100000000fbffaff4ffff0000000000faffaff3ffff0200000000fcffaff1ffff0500000000ffffafd0ffff0d00000080ffffaf90ffff9f000000f4ffffaf10ffffff5d1294ffffffaf00f8ffffffffffffffffaf00b0ffffffffffffffffaf0000faffffffffdffbffaf000050fdffffff19f9ffaf0000002087791500f9ffaf0000000000000000f9ffaf0000000000000000fcff9f90eeee0d00000010ffff7f60ffff6f000000a0ffff2f10ffffff070010faffff0d00f8ffffefacfcffffff0500d0ffffffffffffffaf000010fdffffffffffff0a00000080ffffffffff6e000000000061dbfede59000000", + "İ": "06250c0325f6ff6ff6ff6ff6ff6ff6ff6fd5dd5d000000000000000000fdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9ffdff9f", + "ı": "06150b0215f4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4fffff4ffff", + "Ş": "18291b011e00000040c9feef9c15000000000060feffffffffff1900000010fcffffffffffffef030000c0ffffffffffffffff2f0000f9ffffffffffffffffdf0020ffffff6d1341e7ffffff0680ffff9f00000000faffff0cc0ffff0e00000000d0ffff1fd0ffff0a0000000060ffff3fd0ffff0a0000000020dddd4da0ffff0e000000000000000080ffffcf030000000000000020ffffffdf6903000000000000f9ffffffffff9c1500000000d1ffffffffffffff4c00000000faffffffffffffff1b00000040e9ffffffffffffdf010000000063c9feffffffff0a00000000000010a6ffffff2f0000000000000000d3ffff7f000000000000000020ffffafc6cccc000000000000fcffbff6ffff030000000000fcffbff3ffff0b0000000010ffffafe0ffffaf00000000b0ffff6f70ffffff8e241073feffff1f00fdffffffffffffffffff0900f2ffffffffffffffffdf000020fdffffffffffffff1c00000080ffffffffffff8f000000000050daffffdf6a0100000000000000feaf00000000000000000060ff4f00000000000000000070ffdf0600000000000000003086ff7f00000000000000000000faff00000000000000000020feff0200000000000000f2ffffff0000000000000000f2ffff6f0000000000000000f2ffdf0500000000000000002022000000000000", + "ş": "1321150116000071dbffce280000000090ffffffffff1a000010fdffffffffffef0200b0ffffffffffffff1d00f4ffff8f45c6ffff9f00f9ffef020000f7ffff00fbff9f000000e0ffff03faffbf00000000111100f7ffff4b010000000000f2ffffffef9b1500000060ffffffffffff4c000000e6ffffffffffff0a000010c8ffffffffff8f0000000041c8ffffffff02000000000030faffff06000000000000c0ffff09eaee5e00000080ffff0af7ffdf000000c0ffff08f2ffff6e0241fbffff0480ffffffffffffffcf0000fbffffffffffff2e000080ffffffffffaf0100000081fcffff9d030000000000a0ff0e00000000000000f1ff0800000000000000f3ff8e0000000000000082faff0b0000000000000070ff3f00000000000000a1ff6f000000000000fdffff4f000000000000fdffff0b000000000000fdff7e0000000000000022020000000000" +} diff --git a/core/translations/fonts/font_unifont_bold_16_it.json b/core/translations/fonts/font_unifont_bold_16_it.json new file mode 100644 index 0000000000..bdd990a362 --- /dev/null +++ b/core/translations/fonts/font_unifont_bold_16_it.json @@ -0,0 +1,9 @@ +{ + "À": "0000080000", + "à": "0000080000", + "è": "0000080000", + "é": "0000080000", + "ì": "0000080000", + "ò": "0000080000", + "ù": "0000080000" +} diff --git a/core/translations/fonts/font_unifont_bold_16_pt.json b/core/translations/fonts/font_unifont_bold_16_pt.json new file mode 100644 index 0000000000..0f4d4d983d --- /dev/null +++ b/core/translations/fonts/font_unifont_bold_16_pt.json @@ -0,0 +1,21 @@ +{ + "o": "0608070008fa38e38e38fe00", + "Á": "0000080000", + "Ã": "0000080000", + "Ç": "0000080000", + "Í": "0000080000", + "Ó": "0000080000", + "Õ": "0000080000", + "Ú": "0000080000", + "à": "0000080000", + "á": "0000080000", + "ã": "0000080000", + "ç": "0000080000", + "é": "0000080000", + "ê": "0000080000", + "í": "0000080000", + "ó": "0000080000", + "ô": "0000080000", + "õ": "0000080000", + "ú": "0000080000" +} diff --git a/core/translations/fonts/font_unifont_bold_16_tr.json b/core/translations/fonts/font_unifont_bold_16_tr.json new file mode 100644 index 0000000000..548c24de2b --- /dev/null +++ b/core/translations/fonts/font_unifont_bold_16_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "0000080000", + "Ö": "0000080000", + "Ü": "0000080000", + "ç": "0000080000", + "ö": "0000080000", + "ü": "0000080000", + "Ğ": "0000080000", + "ğ": "0000080000", + "İ": "0000080000", + "ı": "0000080000", + "Ş": "0000080000", + "ş": "0000080000" +} diff --git a/core/translations/fonts/font_unifont_regular_16_it.json b/core/translations/fonts/font_unifont_regular_16_it.json new file mode 100644 index 0000000000..f52d5a9a23 --- /dev/null +++ b/core/translations/fonts/font_unifont_regular_16_it.json @@ -0,0 +1,9 @@ +{ + "À": "060e07000e6060003124a187f8618610", + "à": "060c07000c6060007a105f8618dd00", + "è": "060c07000c6060007a187f82085e00", + "é": "060c07000c1980007a187f82085e00", + "ì": "050c07010cc1800610842109f0", + "ò": "060c07000c6060007a186186185e00", + "ù": "060c07000c6060008618618618dd00" +} diff --git a/core/translations/fonts/font_unifont_regular_16_pt.json b/core/translations/fonts/font_unifont_regular_16_pt.json new file mode 100644 index 0000000000..8038084341 --- /dev/null +++ b/core/translations/fonts/font_unifont_regular_16_pt.json @@ -0,0 +1,21 @@ +{ + "o": "06080700087a186186185e00", + "Á": "060e07000e1980003124a187f8618610", + "Ã": "060e07000e6660003124a187f8618610", + "Ç": "060c07000a7a186082082185e11800", + "Í": "050e07010e36000f90842108427c", + "Ó": "060e07000e1980007a186186186185e0", + "Õ": "060e07000e6660007a186186186185e0", + "Ú": "060e07000e19800086186186186185e0", + "à": "060c07000c6060007a105f8618dd00", + "á": "060c07000c1980007a105f8618dd00", + "ã": "060c07000c6660007a105f8618dd00", + "ç": "060a0700087a182082085e1180", + "é": "060c07000c1980007a187f82085e00", + "ê": "060c07000c3120007a187f82085e00", + "í": "050c07010c36000610842109f0", + "ó": "060c07000c1980007a186186185e00", + "ô": "060c07000c3120007a186186185e00", + "õ": "060c07000c6660007a186186185e00", + "ú": "060c07000c1980008618618618dd00" +} diff --git a/core/translations/fonts/font_unifont_regular_16_tr.json b/core/translations/fonts/font_unifont_regular_16_tr.json new file mode 100644 index 0000000000..539c5ca809 --- /dev/null +++ b/core/translations/fonts/font_unifont_regular_16_tr.json @@ -0,0 +1,14 @@ +{ + "Ç": "060c07000a7a186082082185e11800", + "Ö": "060e07000e4920007a186186186185e0", + "Ü": "060e07000e49200086186186186185e0", + "ç": "060a0700087a182082085e1180", + "ö": "060c07000c4920007a186186185e00", + "ü": "060c07000c4920008618618618dd00", + "Ğ": "060e07000e8617807a18608278618dd0", + "ğ": "060f07000d86178005d8a289c41e861780", + "İ": "050e07010e21000f90842108427c", + "ı": "0508070108610842109f00", + "Ş": "060c07000a7a186060606185e11800", + "ş": "060a0700087a181818185e1180" +} diff --git a/core/translations/it.json b/core/translations/it.json new file mode 100644 index 0000000000..2eb6c7b7c8 --- /dev/null +++ b/core/translations/it.json @@ -0,0 +1,915 @@ +{ + "fonts": { + "T2B1": { + "1_FONT_NORMAL": "font_pixeloperator_regular_8_it.json", + "2_FONT_BOLD": "font_pixeloperator_bold_8_it.json", + "3_FONT_MONO": "font_pixeloperatormono_regular_8_it.json", + "4_FONT_BIG": "font_unifont_regular_16_it.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_it.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_it.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_it.json", + "8_FONT_SUB": null + }, + "T2T1": { + "1_FONT_NORMAL": "font_tthoves_regular_21_it.json", + "2_FONT_BOLD": null, + "3_FONT_MONO": "font_robotomono_medium_20_it.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_it.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_it.json", + "8_FONT_SUB": null + }, + "T3T1": { + "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_it.json", + "2_FONT_BOLD": "font_ttsatoshi_demibold_21_it.json", + "3_FONT_MONO": "font_robotomono_medium_21_it.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_it.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": null, + "8_FONT_SUB": "font_ttsatoshi_demibold_18_it.json" + } + }, + "header": { + "language": "it-IT", + "version": "2.8.2" + }, + "translations": { + "addr_mismatch__contact_support_at": "Contatta l'Assistenza di Trezor all'indirizzo", + "addr_mismatch__key_mismatch": "Chiave non corrisp.?", + "addr_mismatch__mismatch": "Indirizzo non corrisp.?", + "addr_mismatch__support_url": "trezor.io/support", + "addr_mismatch__wrong_derivation_path": "Percorso deriv. errato per conto selezion.", + "addr_mismatch__xpub_mismatch": "XPUB non corrisp.?", + "address__public_key": "Chiave pubblica", + "address__title_cosigner": "Cofirmatario", + "address__title_receive_address": "Indirizzo ricez.", + "address__title_yours": "I tuoi", + "address_details__derivation_path": "Percorso derivazione:", + "address_details__title_receive_address": "Indirizzo ricez.", + "address_details__title_receiving_to": "Ricezione a", + "authenticate__confirm_template": "Consentire al computer di confermare che il {0} è autentico?", + "authenticate__header": "Autentica dispositivo", + "auto_lock__change_template": "Eseguire blocco aut. di Trezor dopo {0} di inattività?", + "auto_lock__title": "Ritardo blocco aut.", + "backup__can_back_up_anytime": "Back-up di Trezor poss. una volta, in qualsiasi momento.", + "backup__it_should_be_backed_up": "Esegui subito back-up nuovo wallet.", + "backup__it_should_be_backed_up_now": "Esegui il back-up ora!", + "backup__new_wallet_created": "Nuovo wallet creato.\n", + "backup__new_wallet_successfully_created": "Creazione wallet completata.", + "backup__recover_anytime": "Usa back-up per recuperare wallet in qualsiasi momento.", + "backup__title_backup_wallet": "Back-up del wallet", + "backup__title_skip": "Ignora back-up", + "backup__want_to_skip": "Vuoi ignorare il back-up?", + "binance__buy": "Acquista", + "binance__confirm_cancel": "Conferma annull.", + "binance__confirm_input": "Conferma input", + "binance__confirm_order": "Conferma ordine", + "binance__confirm_output": "Conferma output", + "binance__order_id": "ID ordine:", + "binance__pair": "Coppia:", + "binance__price": "Prezzo:", + "binance__quantity": "Quantità:", + "binance__sell": "Vendi", + "binance__sender_address": "Indirizzo mittente:", + "binance__side": "Lato:", + "bitcoin__commitment_data": "Dati su impegni:", + "bitcoin__confirm_locktime": "Conferma tempo blocco", + "bitcoin__create_proof_of_ownership": "Vuoi creare una prova di proprietà?", + "bitcoin__high_mining_fee_template": "Comm. per il mining\n{0}\npiù alta del previsto.", + "bitcoin__locktime_no_effect": "Tempo blocco imp. ma senza effetti.", + "bitcoin__locktime_set_to": "Tempo blocco imp. su:", + "bitcoin__locktime_set_to_blockheight": "Tempo blocco imp. su alt. blocco:", + "bitcoin__lot_of_change_outputs": "Molte modifiche output.", + "bitcoin__multiple_accounts": "Più conti", + "bitcoin__new_fee_rate": "Nuovo tasso comm.:", + "bitcoin__simple_send_of": "Invio semplice di", + "bitcoin__ticket_amount": "Importo ticket:", + "bitcoin__title_confirm_details": "Conferma dettagli", + "bitcoin__title_finalize_transaction": "Finalizza transazione", + "bitcoin__title_high_mining_fee": "Comm. mining alta", + "bitcoin__title_meld_transaction": "Transazioni meld", + "bitcoin__title_modify_amount": "Modifica importo", + "bitcoin__title_payjoin": "Payjoin", + "bitcoin__title_proof_of_ownership": "Prova di proprietà", + "bitcoin__title_purchase_ticket": "Acquista ticket", + "bitcoin__title_update_transaction": "Aggiorna trans.", + "bitcoin__unknown_path": "Percorso sconosciuto", + "bitcoin__unknown_transaction": "Trans. sconosciuta", + "bitcoin__unusually_high_fee": "Comm. insolitamente elevata.", + "bitcoin__unverified_external_inputs": "La transazione contiene input esterni non verificati.", + "bitcoin__valid_signature": "La firma è valida.", + "bitcoin__voting_rights": "Diritti di voto a:", + "brightness__title": "Imposta luminosità", + "buttons__abort": "Interrompi", + "buttons__access": "Accedi", + "buttons__again": "Di nuovo", + "buttons__allow": "Consenti", + "buttons__back": "Indietro", + "buttons__back_up": "Back-up", + "buttons__cancel": "Annulla", + "buttons__change": "Modifica", + "buttons__check": "Controlla", + "buttons__check_again": "Ricontrolla", + "buttons__close": "Chiudi", + "buttons__confirm": "Conferma", + "buttons__continue": "Continua", + "buttons__details": "Dettagli", + "buttons__enable": "Abilita", + "buttons__enter": "Invio", + "buttons__enter_share": "Immetti azione", + "buttons__export": "Esporta", + "buttons__format": "Formato", + "buttons__go_back": "Indietro", + "buttons__hold_to_confirm": "Premi per conf.", + "buttons__info": "Info", + "buttons__install": "Installa", + "buttons__more_info": "Altre info", + "buttons__ok_i_understand": "Ok", + "buttons__purchase": "Acquisto", + "buttons__quit": "Esci", + "buttons__restart": "Riavvia", + "buttons__retry": "Riprova", + "buttons__select": "Seleziona", + "buttons__set": "Imposta", + "buttons__show_all": "Mostra tutto", + "buttons__show_details": "Mostra dett.", + "buttons__show_words": "Mostra parole", + "buttons__skip": "Ignora", + "buttons__try_again": "Riprova", + "buttons__turn_off": "Disattiva", + "buttons__turn_on": "Attiva", + "cardano__addr_base": "Base", + "cardano__addr_enterprise": "Enterprise", + "cardano__addr_legacy": "Legacy", + "cardano__addr_pointer": "Puntatore", + "cardano__addr_reward": "Ricompensa", + "cardano__address_no_staking": "ind. - nessuna ricomp. per lo staking.", + "cardano__always_abstain": "Astieniti sempre", + "cardano__always_no_confidence": "Sempre senza attendibilità", + "cardano__amount_burned_decimals_unknown": "Quantità bruciata (decimali sconosciuti):", + "cardano__amount_minted_decimals_unknown": "Quantità coniata (decimali sconosciuti):", + "cardano__amount_sent_decimals_unknown": "Quantità inviata (decimali sconosciuti):", + "cardano__anonymous_pool": "Il pool non contiene metadati (pool anonimo)", + "cardano__asset_fingerprint": "Impronta asset:", + "cardano__auxiliary_data_hash": "Hash dati ausiliari:", + "cardano__block": "Blocco", + "cardano__catalyst": "Catalizzatore", + "cardano__certificate": "Certificato", + "cardano__change_output": "Modifica output", + "cardano__check_all_items": "Controlla tutti gli elementi.", + "cardano__choose_level_of_details": "Scegli livello di dettagli:", + "cardano__collateral_input_id": "ID input collaterale:", + "cardano__collateral_input_index": "Indice di input collaterale:", + "cardano__collateral_output_contains_tokens": "L'output rendim. del collaterale contiene token.", + "cardano__collateral_return": "Rendim. del collaterale", + "cardano__confirm": "Conferma:", + "cardano__confirm_signing_stake_pool": "Conferma registrazione pool di staking come proprietario.", + "cardano__confirm_transaction": "Conferma transazione", + "cardano__confirming_a_multisig_transaction": "Conferma di una transazione multifirma.", + "cardano__confirming_a_plutus_transaction": "Conferma di una transazione Plutus.", + "cardano__confirming_pool_registration": "Conferma registrazione pool come proprietario.", + "cardano__confirming_transction": "Conferma di una transazione.", + "cardano__cost": "Costo", + "cardano__credential_mismatch": "Credenziali non corrispondenti a quelle di pagamento.", + "cardano__datum_hash": "Hash datum:", + "cardano__delegating_to": "Delega a:", + "cardano__delegating_to_key_hash": "Delega a hash chiave:", + "cardano__delegating_to_script": "Delega a script:", + "cardano__deposit": "Deposito:", + "cardano__for_account_and_index_template": "per il conto {0} e l'indice {1}:", + "cardano__for_account_template": "per il conto {0}:", + "cardano__for_key_hash": "per l'hash chiave:", + "cardano__for_script": "per lo script:", + "cardano__inline_datum": "Datum inline", + "cardano__input_id": "ID input:", + "cardano__input_index": "Indice input:", + "cardano__intro_text_change": "Il seguente indirizzo è un indirizzo modificato. Il suo", + "cardano__intro_text_owned_by_device": "Il seguente indirizzo appartiene a questo disp. Il suo", + "cardano__intro_text_registration_payment": "L'indirizzo di pagam. registr. chiave di voto appartiene al dispositivo. Il suo", + "cardano__key_hash": "hash chiave", + "cardano__margin": "Margine", + "cardano__multisig_path": "percorso multifirma", + "cardano__nested_scripts_template": "Contiene {0} script nidificati.", + "cardano__network": "Rete:", + "cardano__no_output_tx": "Nessun output per la transaz. Impossibile verificare la rete.", + "cardano__nonce": "Nonce:", + "cardano__other": "altro", + "cardano__path": "percorso", + "cardano__pledge": "Pledge", + "cardano__pointer": "puntatore", + "cardano__policy_id": "ID criteri:", + "cardano__pool_metadata_hash": "Hash metadati pool:", + "cardano__pool_metadata_url": "URL metadati pool:", + "cardano__pool_owner": "Proprietario pool:", + "cardano__pool_reward_account": "Conto ricomp. pool:", + "cardano__reference_input_id": "ID input di riferim.:", + "cardano__reference_input_index": "Indice dell'input di riferim.:", + "cardano__reference_script": "Script di riferim.", + "cardano__required_signer": "Firmatario obbligatorio", + "cardano__reward": "ricompensa", + "cardano__reward_address": "L'indirizzo è un ind. di ricompensa.", + "cardano__reward_eligibility_warning": "Avviso: l'indirizzo non è un ind. di pagam. e non è idoneo per le ricompense.", + "cardano__rewards_go_to": "Ricomp. assegnate a:", + "cardano__script": "script", + "cardano__script_all": "Tutti", + "cardano__script_any": "Qualsiasi", + "cardano__script_data_hash": "Hash dati script:", + "cardano__script_hash": "Hash script:", + "cardano__script_invalid_before": "Non valido prima", + "cardano__script_invalid_hereafter": "Non valido dopo", + "cardano__script_key": "Chiave", + "cardano__script_n_of_k": "N di K", + "cardano__script_reward": "ricomp. script", + "cardano__sending": "Invio in corso", + "cardano__show_simple": "Mostra semplice", + "cardano__sign_tx_path_template": "Firma transazione con {0}:", + "cardano__stake_delegation": "Delega di staking", + "cardano__stake_deregistration": "Deregistraz. chiave di staking", + "cardano__stake_pool_registration": "Registraz. pool di staking", + "cardano__stake_pool_registration_pool_id": "Registraz. pool di staking\nID pool:", + "cardano__stake_registration": "Registraz. chiave di staking", + "cardano__staking_key_for_account": "Chiave di staking per conto", + "cardano__to_pool": "al pool:", + "cardano__token_minting_path": "percorso coniaz. token", + "cardano__total_collateral": "Totale collaterale:", + "cardano__transaction": "Transazione", + "cardano__transaction_contains_minting_or_burning": "La transaz. prevede la coniaz. o l'eliminaz. permanente di token.", + "cardano__transaction_contains_script_address_no_datum": "L'output della transaz. seguente contiene un indirizzo script, ma non contiene un datum.", + "cardano__transaction_fee": "Comm. di transazione:", + "cardano__transaction_id": "ID transazione:", + "cardano__transaction_no_collateral_input": "La transaz. non contiene input di collaterale. Impossibile eseguire lo script Plutus.", + "cardano__transaction_no_script_data_hash": "La transaz. non contiene hash di dati script. Impossibile eseguire lo script Plutus.", + "cardano__transaction_output_contains_tokens": "L'output della seguente transazione contiene token.", + "cardano__ttl": "TTL:", + "cardano__unknown_collateral_amount": "Importo del collaterale sconosciuto.", + "cardano__unusual_path": "Percorso insolito.", + "cardano__valid_since": "Valido da:", + "cardano__verify_script": "Verifica script", + "cardano__vote_delegation": "Vota delega", + "cardano__vote_key_registration": "Registraz. chiave di voto (CIP-36)", + "cardano__vote_public_key": "Chiave pubb. di voto:", + "cardano__voting_purpose": "Scopo del voto:", + "cardano__warning": "Avviso", + "cardano__weight": "Peso:", + "cardano__withdrawal_for_address_template": "Conferma ritiro per ind.{0}:", + "cardano__x_of_y_signatures_template": "Richiede {0} firme su {1}.", + "coinjoin__access_account": "Vuoi accedere al conto coinjoin?", + "coinjoin__do_not_disconnect": "Non scollegare Trezor!", + "coinjoin__max_mining_fee": "Comm. max per mining", + "coinjoin__max_rounds": "Round max", + "coinjoin__title": "Autorizza coinjoin", + "coinjoin__title_do_not_disconnect": "Non scollegare trezor!", + "coinjoin__title_progress": "Coinjoin in corso", + "coinjoin__waiting_for_others": "In attesa di altri", + "confirm_total__fee_rate": "Tasso di comm.:", + "confirm_total__sending_from_account": "Invio da conto:", + "confirm_total__title_fee": "Info su comm.", + "confirm_total__title_sending_from": "Invio da", + "debug__loading_seed": "Caricam. frase Seed", + "debug__loading_seed_not_recommended": "Caric. frase Seed privata non consigliato.", + "device_name__change_template": "Modificare nome dispositivo in {0}?", + "device_name__title": "Nome dispositivo", + "entropy__send": "Vuoi inviare l'entropia?", + "entropy__title": "Entropia interna", + "entropy__title_confirm": "Conferma entropia", + "eos__about_to_sign_template": "Stai per firmare {0}.", + "eos__action_name": "Nome azione:", + "eos__arbitrary_data": "Dati arbitrari", + "eos__buy_ram": "Acquista RAM", + "eos__bytes": "Byte:", + "eos__cancel_vote": "Annulla voto", + "eos__checksum": "Checksum:", + "eos__code": "Codice:", + "eos__contract": "Contratto:", + "eos__cpu": "CPU:", + "eos__creator": "Creatore:", + "eos__delegate": "Delegato", + "eos__delete_auth": "Elimina auten.", + "eos__from": "Da:", + "eos__link_auth": "Collega auten.", + "eos__memo": "Promemoria", + "eos__name": "Nome:", + "eos__net": "Netto:", + "eos__new_account": "Nuovo conto", + "eos__owner": "Titolare:", + "eos__parent": "Parent:", + "eos__payer": "Pagatore:", + "eos__permission": "Autorizzazione:", + "eos__proxy": "Delega:", + "eos__receiver": "Destinatario:", + "eos__refund": "Rimborso", + "eos__requirement": "Requisito:", + "eos__sell_ram": "Vendi RAM", + "eos__sender": "Mittente:", + "eos__sign_transaction": "Firma transazione", + "eos__threshold": "Soglia:", + "eos__to": "A:", + "eos__transfer": "Trasferimento:", + "eos__type": "Tipo:", + "eos__undelegate": "Annulla delega", + "eos__unlink_auth": "Scollega auten.", + "eos__update_auth": "Aggiorna auten.", + "eos__vote_for_producers": "Voto per produttori", + "eos__vote_for_proxy": "Voto per delega", + "eos__voter": "Votante:", + "ethereum__amount_sent": "Importo inviato:", + "ethereum__contract": "Contratto:", + "ethereum__data_size_template": "Dimensioni: {0} byte", + "ethereum__gas_limit": "Limite gas:", + "ethereum__gas_price": "Prezzo gas:", + "ethereum__max_gas_price": "Prezzo max gas:", + "ethereum__name_and_version": "Nome e versione", + "ethereum__new_contract": "nuovo contratto?", + "ethereum__no_message_field": "Nessun campo mess.", + "ethereum__priority_fee": "Commiss. di priorità:", + "ethereum__show_full_array": "Mostra matrice compl.", + "ethereum__show_full_domain": "Mostra dominio compl.", + "ethereum__show_full_message": "Mostra mess. compl.", + "ethereum__show_full_struct": "Mostra strutt. compl.", + "ethereum__sign_eip712": "Vuoi firmare i dati EIP-712?", + "ethereum__staking_claim": "Richiedi", + "ethereum__staking_claim_address": "Indirizzo richiesta", + "ethereum__staking_claim_intro": "Richiedere ETH da Everstake?", + "ethereum__staking_stake": "Staking", + "ethereum__staking_stake_address": "Indirizzo staking", + "ethereum__staking_stake_intro": "Staking di ETH su Everstake?", + "ethereum__staking_unstake": "Unstaking", + "ethereum__staking_unstake_intro": "Unstaking di ETH da Everstake?", + "ethereum__title_confirm_data": "Conferma dati", + "ethereum__title_confirm_domain": "Conferma dom.", + "ethereum__title_confirm_message": "Conferma mess.", + "ethereum__title_confirm_struct": "Conferma strutt.", + "ethereum__title_confirm_typed_data": "Conf. dati digitati", + "ethereum__title_signing_address": "Indirizzo di firma", + "ethereum__units_template": "{0} unità", + "ethereum__unknown_token": "Token sconosciuto", + "ethereum__valid_signature": "La firma è valida.", + "experimental_mode__enable": "Abilitare funzion. sperimentali?", + "experimental_mode__only_for_dev": "Solo per sviluppo e test beta!", + "experimental_mode__title": "Mod. sperimentale", + "fido__already_registered": "Già registrato", + "fido__device_already_registered": "Il dispositivo è già registrato con questa applicazione.", + "fido__device_already_registered_with_template": "Il dispositivo è già registrato con {0}.", + "fido__device_not_registered": "Il dispositivo non è registrato con questa applicazione.", + "fido__does_not_belong": "Le credenziali che tenti di importare\nnon appartengono ad autenticatore.", + "fido__erase_credentials": "canc. tutte credenz.?", + "fido__export_credentials": "Esportare info sulle credenziali memorizzate sul dispositivo?", + "fido__not_registered": "Non registrato", + "fido__not_registered_with_template": "Il dispositivo non è registrato con\n{0}.", + "fido__please_enable_pin_protection": "Abilita la protezione con PIN.", + "fido__title_authenticate": "Autenticaz. FIDO2", + "fido__title_import_credential": "Importa credenziali", + "fido__title_list_credentials": "Elenca credenz.", + "fido__title_register": "Registr. FIDO2", + "fido__title_remove_credential": "Rimuovi credenz.", + "fido__title_reset": "Ripristino FIDO2", + "fido__title_u2f_auth": "Autenticaz. U2F", + "fido__title_u2f_register": "Registr. U2F", + "fido__title_verify_user": "Verif. utente FIDO2", + "fido__unable_to_verify_user": "Impossibile verificare utente.", + "fido__wanna_erase_credentials": "Cancellare tutte le credenziali?", + "firmware_update__title": "Aggiorna firmware", + "firmware_update__title_fingerprint": "Impronta FW", + "homescreen__click_to_connect": "Clicca per connettere", + "homescreen__click_to_unlock": "Clicca per sbloccare", + "homescreen__set_default": "Modificare lo sfondo sull'immagine predefinita?", + "homescreen__settings_subtitle": "Impostazioni", + "homescreen__settings_title": "Homescreen", + "homescreen__title_backup_failed": "Back-up non riuscito", + "homescreen__title_backup_needed": "Back-up necessario", + "homescreen__title_coinjoin_authorized": "Coinjoin autorizz.", + "homescreen__title_experimental_mode": "Mod. sperimentale", + "homescreen__title_no_usb_connection": "Nessuna conn. usb", + "homescreen__title_pin_not_set": "PIN non imp.", + "homescreen__title_seedless": "Seedless", + "homescreen__title_set": "Modif. homescreen?", + "inputs__back": "INDIETRO", + "inputs__cancel": "ANNULLA", + "inputs__delete": "ELIMINA", + "inputs__enter": "INVIO", + "inputs__previous": "PRECEDENTE", + "inputs__return": "INDIETRO", + "inputs__show": "MOSTRA", + "inputs__space": "SPAZIO", + "instructions__exit_tutorial": "Esci dal tutorial", + "joint__title": "Transaz. congiunta", + "joint__to_the_total_amount": "Fino all'importo totale:", + "joint__you_are_contributing": "Stai contribuendo con:", + "language__change_to_template": "Cambia lingua in {0}?", + "language__changed": "Modifica lingua completata", + "language__progress": "Modif. lingua in corso", + "language__title": "Impostazioni lingua", + "lockscreen__tap_to_connect": "Tocca per connettere", + "lockscreen__tap_to_unlock": "Tocca per sbloccare", + "lockscreen__title_locked": "Bloccato", + "lockscreen__title_not_connected": "Non connesso", + "misc__decrypt_value": "Decrittogr. valore", + "misc__encrypt_value": "Crittogr. valore", + "misc__title_suite_labeling": "Etichett. suite", + "modify_amount__decrease_amount": "Riduci importo di:", + "modify_amount__increase_amount": "Aumenta importo di:", + "modify_amount__new_amount": "Nuovo importo:", + "modify_amount__title": "Modifica importo", + "modify_fee__decrease_fee": "Riduci comm. di:", + "modify_fee__fee_rate": "Tasso di comm.:", + "modify_fee__increase_fee": "Aumenta comm. di:", + "modify_fee__new_transaction_fee": "Nuova comm. di trans.:", + "modify_fee__no_change": "Commissione invariata.\n", + "modify_fee__title": "Modifica comm.", + "modify_fee__transaction_fee": "Comm. di transazione:", + "monero__confirm_export": "Conferma esport.", + "monero__confirm_ki_sync": "Conferma sinc ki", + "monero__confirm_refresh": "Conferma aggiorn.", + "monero__confirm_unlock_time": "Conf. tempo sblocco", + "monero__hashing_inputs": "Input hash", + "monero__payment_id": "ID pagamento", + "monero__postprocessing": "Post-elaborazione...", + "monero__processing": "Elaborazione...", + "monero__processing_inputs": "Elaborazione input", + "monero__processing_outputs": "Elaborazione output", + "monero__signing": "Firma...", + "monero__signing_inputs": "Input di firma", + "monero__unlock_time_set_template": "Tempo di sblocco per transazione impostato su {0}", + "monero__wanna_export_tx_der": "Vuoi esportare tx_der\nper tx_proof?", + "monero__wanna_export_tx_key": "Vuoi esportare tx_key?", + "monero__wanna_export_watchkey": "Vuoi esportare le credenziali di sola lettura?", + "monero__wanna_start_refresh": "Vuoi iniziare\nl'aggiornamento?", + "monero__wanna_sync_key_images": "Iniziare a sincronizzare\nimmagini chiave?", + "nem__absolute": "assoluto", + "nem__activate": "Attiva", + "nem__add": "Aggiungi", + "nem__confirm_action": "Conferma azione", + "nem__confirm_address": "Conferma indirizzo", + "nem__confirm_creation_fee": "Conferma comm. creazione", + "nem__confirm_mosaic": "Conferma mosaico", + "nem__confirm_multisig_fee": "Conferma comm. multifirma", + "nem__confirm_namespace": "Conferma spazio nomi", + "nem__confirm_payload": "Conferma payload", + "nem__confirm_properties": "Conferma proprietà", + "nem__confirm_rental_fee": "Conferma comm. noleggio", + "nem__confirm_transfer_of": "Conferma trasfer. di", + "nem__convert_account_to_multisig": "Convertire conto in multifirma?", + "nem__cosign_transaction_for": "Conferma transaz. per", + "nem__cosignatory": " cofirmatario", + "nem__create_mosaic": "Crea mosaico", + "nem__create_namespace": "Crea spazio nomi", + "nem__deactivate": "Disattiva", + "nem__decrease": "Riduci", + "nem__description": "Descrizione:", + "nem__divisibility_and_levy_cannot_be_shown": "Impossibile mostrare divisib. e contributo per mosaici sconosciuti", + "nem__encrypted": "Crittografato:", + "nem__final_confirm": "Conferma finale", + "nem__immutable": "non modificabile", + "nem__increase": "Aumenta", + "nem__initial_supply": "Offerta iniziale:", + "nem__initiate_transaction_for": "Avvia transaz. per", + "nem__levy_divisibility": "Divisib. contributo:", + "nem__levy_fee": "Comm. contributo:", + "nem__levy_fee_of": "Conferma comm. contrib. mosaico di", + "nem__levy_mosaic": "Mosaico contrib.:", + "nem__levy_namespace": "Spazio nome contrib.:", + "nem__levy_recipient": "Destin. contributo:", + "nem__levy_type": "Tipo di contributo:", + "nem__modify_supply_for": "Modifica offerta per", + "nem__modify_the_number_of_cosignatories_by": "Modifica numero cofirmatari di ", + "nem__mutable": "modificabile", + "nem__of": "di", + "nem__percentile": "percentile", + "nem__raw_units_template": "{0} unità non elab.", + "nem__remote_harvesting": " harvesting remoto?", + "nem__remove": "Rimuovi", + "nem__set_minimum_cosignatories_to": "Imposta numero min cofirmatari su ", + "nem__sign_tx_fee_template": "Firmare transazione\ne pagare {0}\ncome comm. di rete?", + "nem__supply_change": "Modifica offerta", + "nem__supply_units_template": "Offerta {0} per {1} unità intere?", + "nem__transferable": "Trasferibile?", + "nem__under_namespace": "sotto spazio nome", + "nem__unencrypted": "Non crittografato:", + "nem__unknown_mosaic": "Mosaico sconosciuto!", + "passphrase__access_hidden_wallet": "Accedere wallet nasc.?", + "passphrase__always_on_device": "Immettere sempre la passphrase sul dispositivo?", + "passphrase__from_host_not_shown": "La passphrase fornita dall'host verrà utilizzata ma non visualizzata a causa delle impost. del disp.", + "passphrase__hidden_wallet": "Wallet nascosto", + "passphrase__hide": "Nascondere passphrase fornita da host?", + "passphrase__next_screen_will_show_passphrase": "La passphrase sarà visualizz. nella scherm. succ.", + "passphrase__please_enter": "Immetti la passphrase.", + "passphrase__revoke_on_device": "Revocare la passphrase nell'impost. del dispositivo?", + "passphrase__title_confirm": "Conf. passphrase", + "passphrase__title_enter": "Immetti passphrase", + "passphrase__title_hide": "Nascondi passphrase", + "passphrase__title_settings": "Impost. passphrase", + "passphrase__title_source": "Origine passphrase", + "passphrase__turn_off": "Disattivare protez. con passphrase?", + "passphrase__turn_on": "Attivare protez. con passphrase?", + "pin__change": "Modificare PIN?", + "pin__changed": "PIN modificato.", + "pin__cursor_will_change": "La posizione del cursore cambia tra le voci per maggiore sicurezza.", + "pin__diff_from_wipe_code": "Il nuovo PIN deve essere diverso dal codice di eliminaz.", + "pin__disabled": "Protez. con PIN\ndisattivata.", + "pin__enabled": "Protez. con PIN\nattivata.", + "pin__enter": "Immetti PIN", + "pin__enter_new": "Immetti nuovo PIN", + "pin__entered_not_valid": "Il PIN immesso non è valido.", + "pin__info": "PIN necessario per accedere al dispositivo.", + "pin__invalid_pin": "PIN non valido", + "pin__last_attempt": "Ultimo tentativo", + "pin__mismatch": "I PIN immessi non corrispondono.", + "pin__pin_mismatch": "PIN non corrispondente", + "pin__please_check_again": "Ricontrolla.", + "pin__reenter_new": "Reimmetti nuovo PIN", + "pin__reenter_to_confirm": "Reimmettere PIN per confermare.", + "pin__should_be_long": "Lunghezza PIN 4-50 cifre.", + "pin__title_check_pin": "Controlla PIN", + "pin__title_settings": "Impostazioni PIN", + "pin__title_wrong_pin": "PIN errato", + "pin__tries_left": "tentativi rimasti", + "pin__turn_off": "Disattivare la protezione con PIN?", + "pin__turn_on": "Attivare la protez. con PIN?", + "pin__wrong_pin": "PIN errato", + "plurals__contains_x_keys": "chiave|chiavi", + "plurals__lock_after_x_hours": "ora|ore", + "plurals__lock_after_x_milliseconds": "millisecondo|millisecondi", + "plurals__lock_after_x_minutes": "minuto|minuti", + "plurals__lock_after_x_seconds": "secondo|secondi", + "plurals__sign_x_actions": "azione|azioni", + "plurals__transaction_of_x_operations": "operazione|operazioni", + "plurals__x_groups_needed": "gruppo|gruppi", + "plurals__x_shares_needed": "azione|azioni", + "progress__authenticity_check": "Controllo autenticità...", + "progress__done": "Fatto", + "progress__loading_transaction": "Caricam. transazione...", + "progress__locking_device": "Blocco dispositivo...", + "progress__one_second_left": "1 sec alla fine", + "progress__please_wait": "Attendi", + "progress__refreshing": "Aggiornamento...", + "progress__signing_transaction": "Firma transazione...", + "progress__syncing": "Sincronizz...", + "progress__x_seconds_left_template": "{0} sec alla fine", + "reboot_to_bootloader__just_a_moment": "Attendi...", + "reboot_to_bootloader__restart": "Trezor verrà riavviato in mod. bootloader.", + "reboot_to_bootloader__title": "Vai a bootloader", + "reboot_to_bootloader__version_by_template": "Versione firmware {0}\nda {1}", + "recovery__cancel_dry_run": "Annulla controllo back-up", + "recovery__check_dry_run": "Controllare il back-up?", + "recovery__cursor_will_change": "La posizione del cursore cambia tra le voci per maggiore sicurezza.", + "recovery__dry_run_bip39_valid_match": "Frase Seed di recupero valida e corrispondente a quella del disp.", + "recovery__dry_run_bip39_valid_mismatch": "Frase Seed di recupero valida ma non corrispondente a quella del disp.", + "recovery__dry_run_slip39_valid_match": "Azioni rec. valide e corrisp. a quelle nel dispositivo.", + "recovery__dry_run_slip39_valid_mismatch": "Azioni rec. valide ma non corrisp. a quelle nel dispositivo.", + "recovery__enter_any_share": "Immetti quals. azione", + "recovery__enter_backup": "Immetti back-up.", + "recovery__enter_different_share": "Immetti un'azione diversa.", + "recovery__enter_share_from_diff_group": "Immetti azione di gruppo diverso.", + "recovery__group_num_template": "Gruppo {0}", + "recovery__group_threshold_reached": "Soglia gruppo raggiunta.", + "recovery__invalid_seed_entered": "Frase Seed di recupero non valida.", + "recovery__invalid_share_entered": "Azione di recupero non valida.", + "recovery__more_shares_needed": "Altre azioni necessarie", + "recovery__num_of_words": "Selezionare numero di parole nel back-up.", + "recovery__only_first_n_letters": "Dovrai selezionare solo le prime 2-4 lettere di ogni parola.", + "recovery__progress_will_be_lost": "Tutti i progressi andranno persi.", + "recovery__select_num_of_words": "Selezionare numero di parole nel back-up.", + "recovery__share_already_entered": "Azione già immessa", + "recovery__share_from_another_shamir": "Hai immesso un'azione da un altro back-up di Shamir.", + "recovery__share_num_template": "Azione {0}", + "recovery__title": "Recup. wallet", + "recovery__title_cancel_dry_run": "Ann. contr. backup", + "recovery__title_cancel_recovery": "Annulla recupero", + "recovery__title_dry_run": "Contr. back-up", + "recovery__title_recover": "Recup. wallet", + "recovery__title_remaining_shares": "Azioni rimanenti", + "recovery__title_unlock_repeated_backup": "Back-up multi-condivisione", + "recovery__type_word_x_of_y_template": "Digita parola {0} di {1}", + "recovery__wallet_recovered": "Wallet recuperato correttamente", + "recovery__wanna_cancel_dry_run": "Vuoi annullare il controllo del back-up?", + "recovery__wanna_cancel_recovery": "Vuoi annullare la procedura di recupero?", + "recovery__word_count_template": "({0} parole)", + "recovery__word_x_of_y_template": "Parola {0} di {1}", + "recovery__x_more_items_starting_template_plural": "Altri {count} {plural} in avvio", + "recovery__x_more_shares_needed_template_plural": "Altri {count} {plural} richiesti.", + "recovery__x_of_y_entered_template": "{0} di {1} azioni immesse OK.", + "recovery__you_have_entered": "Hai immesso", + "reset__advanced_group_threshold_info": "La soglia di gruppo specifica numero gruppi necessari per recuperare il wallet.", + "reset__all_x_of_y_template": "tutte e {0} di {1} az.", + "reset__any_x_of_y_template": "qualsiasi {0} di {1} az.", + "reset__button_create": "Crea wallet", + "reset__button_recover": "Recup. wallet", + "reset__by_continuing": "Proseguendo, accetti i Termini e condizioni di Trezor.", + "reset__check_backup_title": "Contr. back-up", + "reset__check_group_share_title_template": "Contr. g{0} - az. {1}", + "reset__check_seed_title": "Contr. frase seed", + "reset__check_share_title_template": "Contr. azione n.{0}", + "reset__continue_with_next_share": "Continua con azione success.", + "reset__continue_with_share_template": "Continua con azione n.{0}.", + "reset__create_x_of_y_multi_share_backup_template": "Creare {0} back-up multi-condivisione su {1}?", + "reset__finished_verifying_group_template": "Hai completato la verifica azioni di recupero per il gruppo {0}.", + "reset__finished_verifying_seed": "Hai completato la verifica frase Seed di recupero.", + "reset__finished_verifying_shares": "Hai completato la verifica azioni di recupero.", + "reset__group_description": "Un gruppo è costituito da azioni di recupero.", + "reset__group_info": "Ogni gruppo ha un dato numero di azioni e una soglia specifica. Nei passaggi successivi, imposterai il numero di azioni e le soglie.", + "reset__group_share_checked_successfully_template": "Gruppo {0} - Contr. az. {1} completato.", + "reset__group_share_title_template": "Gruppo {0} - az. {1}", + "reset__more_info_at": "Altre info a", + "reset__need_all_share_template": "Per recup. necess. tutte e {0} le azioni.", + "reset__need_any_share_template": "Per recup. necess. {0} qualsiasi delle az.", + "reset__needed_to_form_a_group": "necess. per formare un gruppo. ", + "reset__needed_to_recover_your_wallet": "necess. per recuperare il wallet. ", + "reset__never_make_digital_copy": "Non creare mai copia digitale del back-up e non caricarlo online.", + "reset__num_of_share_holders_template": "Ciascuna di {0} persone o sedi deterrà un'azione.", + "reset__num_of_shares_advanced_info_template": "Ogni azione di recup. contiene una sequenza di {0} parole. Ora devi scegliere il n. limite di azioni necessarie per formare il Gruppo {1}.", + "reset__num_of_shares_basic_info_template": "Ogni azione di recup. contiene una sequenza di {0} parole. Ora devi scegliere il n. di azioni necessarie per recuperare il wallet.", + "reset__num_shares_for_group_template": "Numero azioni necessarie per formare il Gruppo {0}.", + "reset__number_of_shares_info": "= numero tot, elenchi di parole univoche per back-up del wallet.", + "reset__one_share": "1 azione", + "reset__only_one_share_will_be_created": "Verrà creata una sola azione.", + "reset__recovery_seed_title": "Frase seed di rec.", + "reset__recovery_share_title_template": "Azione di rec. n.{0}", + "reset__repeat_for_all_shares": "Ripeti per tutte le condivisioni.", + "reset__required_number_of_groups": "Il numero di gruppi necessario per recupero.", + "reset__select_correct_word": "Seleziona parola corretta per ogni posizione.", + "reset__select_word_template": "Selez. {0} parola", + "reset__select_word_x_of_y_template": "Sel. {0} parole di {1}:", + "reset__set_it_to_count_template": "Imposta su {0} e sarà necessario ", + "reset__share_checked_successfully_template": "Controllo azione rec. n.{0} completato.", + "reset__share_words_title": "Back-up standard", + "reset__slip39_checklist_num_groups": "Numero di gruppi", + "reset__slip39_checklist_num_groups_x_template": "Numero di gruppi: {0}", + "reset__slip39_checklist_num_shares": "Numero di azioni", + "reset__slip39_checklist_set_num_groups": "Imposta numero gruppi", + "reset__slip39_checklist_set_num_shares": "Imposta numero azioni", + "reset__slip39_checklist_set_sizes": "Imposta dimens. e soglie", + "reset__slip39_checklist_set_sizes_longer": "Imposta dimens. e soglia per ogni gruppo", + "reset__slip39_checklist_set_threshold": "Imposta soglia", + "reset__slip39_checklist_title": "Checklist back-up", + "reset__slip39_checklist_write_down": "Annota e controlla tutte le azioni", + "reset__slip39_checklist_write_down_recovery": "Annota e controlla tutte azioni recup.", + "reset__the_threshold_sets_the_number_of_shares": "La soglia imposta il numero di azioni ", + "reset__threshold_info": "= numero min elenchi parole univoche utilizzati per recupero.", + "reset__title_backup_is_done": "Backup eseguito", + "reset__title_create_wallet": "Crea wallet", + "reset__title_create_wallet_shamir": "Crea wallet (shamir)", + "reset__title_group_threshold": "Soglia di gruppo", + "reset__title_number_of_groups": "Numero di gruppi", + "reset__title_number_of_shares": "Numero di azioni", + "reset__title_set_group_threshold": "Imp. soglia gruppo", + "reset__title_set_number_of_groups": "Imp. numero di gruppi", + "reset__title_set_number_of_shares": "Imp. numero di azioni", + "reset__title_set_threshold": "Imposta soglia", + "reset__title_shamir_backup": "Back-up multi-condivisione", + "reset__to_form_group_template": "per formare Gruppo {0}.", + "reset__tos_link": "trezor.io/tos", + "reset__total_number_of_shares_in_group_template": "Imposta numero totale azioni nel Gruppo {0}.", + "reset__use_your_backup": "Usa il back-up quando devi recuperare il wallet.", + "reset__words_may_repeat": "Le parole possono ripetersi.", + "reset__write_down_words_template": "Annota tutte le {0} parole nell'ordine.", + "reset__wrong_word_selected": "Selezionata parola errata.", + "reset__you_need_one_share": "1 azione necessaria per recupero.", + "reset__your_backup_is_done": "Back-up eseguito.", + "ripple__confirm_tag": "Conferma tag", + "ripple__destination_tag_template": "Tag di destin.:\n{0}", + "rotation__change_template": "Modificare rotazione del dispositivo verso {0}?", + "rotation__east": "est", + "rotation__north": "nord", + "rotation__south": "sud", + "rotation__title_change": "Cambia rotaz.", + "rotation__west": "ovest", + "safety_checks__approve_unsafe_always": "Trezor consentirà di approvare azioni potenzialmente non sicure.", + "safety_checks__approve_unsafe_temporary": "Trezor consentirà temporan. di approvare azioni potenzialmente non sicure.", + "safety_checks__enforce_strict": "Implementare controlli di sicur. rigorosi (opzione consigliata)?", + "safety_checks__title": "Contr. sicurezza", + "safety_checks__title_safety_override": "Override sicur.", + "sd_card__all_data_will_be_lost": "Tutti i dati su scheda SD andranno persi.", + "sd_card__card_required": "Scheda SD necessaria.", + "sd_card__disable": "Vuoi rimuovere la protezione della scheda SD dal dispositivo?", + "sd_card__disabled": "La protezione SD è stata disabilitata correttamente.", + "sd_card__enable": "Garantire la sicurezza del dispositivo con protezione scheda SD?", + "sd_card__enabled": "La protezione SD è stata abilitata correttamente.", + "sd_card__error": "Errore scheda SD", + "sd_card__format_card": "Formatta scheda SD", + "sd_card__insert_correct_card": "Inserisci la scheda SD corretta per questo dispositivo.", + "sd_card__please_insert": "Inserisci la scheda SD.", + "sd_card__please_unplug_and_insert": "Scollega il dispositivo e inserisci la scheda SD.", + "sd_card__problem_accessing": "Problema durante l'accesso alla scheda SD.", + "sd_card__refresh": "Vuoi sostituire il segreto della scheda SD in uso con uno appena generato?", + "sd_card__refreshed": "La protezione SD è stata aggiornata correttamente.", + "sd_card__restart": "Riavviare Trezor in modalità bootloader?", + "sd_card__title": "Protez. scheda SD", + "sd_card__title_problem": "Problema scheda SD", + "sd_card__unknown_filesystem": "File system sconosciuto.", + "sd_card__unplug_and_insert_correct": "Scollega il dispositivo e inserisci la scheda SD corretta.", + "sd_card__use_different_card": "Utilizza un'altra scheda o formatta la scheda SD nel file system FAT32.", + "sd_card__wanna_format": "Vuoi formattare la scheda SD?", + "sd_card__wrong_sd_card": "Scheda SD errata.", + "send__address_path": "percorso dell'indirizzo", + "send__confirm_sending": "Invio importo", + "send__from_multiple_accounts": "Invio da più conti.", + "send__including_fee": "Commissione incl.:", + "send__maximum_fee": "Commissione massima:", + "send__receiving_to_multisig": "Ricezione a un indirizzo multifirma.", + "send__title_confirm_sending": "Conferma invio", + "send__title_joint_transaction": "Transaz. congiunta", + "send__title_receiving_to": "Ricezione a", + "send__title_sending": "Invio", + "send__title_sending_amount": "Invio importo", + "send__title_sending_to": "Invio a", + "send__to_the_total_amount": "Fino all'importo totale:", + "send__total_amount": "Importo totale:", + "send__transaction_id": "ID transazione:", + "send__you_are_contributing": "Stai contribuendo con:", + "share_words__words_in_order": " parole nell'ordine.", + "share_words__wrote_down_all": "Ho annotato tutto ", + "sign_message__bytes_template": "{0} byte", + "sign_message__confirm_address": "Indirizzo di firma", + "sign_message__confirm_message": "Conferma mess.", + "sign_message__message_size": "Dimensioni messaggio:", + "sign_message__verify_address": "Verifica indirizzo", + "solana__account_index": "Indice conto", + "solana__associated_token_account": "Conto token associato", + "solana__confirm_multisig": "Conferma multifirma", + "solana__expected_fee": "Commissione prevista", + "solana__instruction_accounts_template": "L'istruzione contiene {0} conti e la dimensione dei relativi dati è di {1} byte.", + "solana__instruction_data": "Dati istruzione", + "solana__instruction_is_multisig": "La seguente istruzione è di tipo multifirma.", + "solana__is_provided_via_lookup_table_template": "{0} viene fornito tramite una tabella di ricerca.", + "solana__lookup_table_address": "Indirizzo tabella di ricerca", + "solana__multiple_signers": "Più firmatari", + "solana__token_address": "Indirizzo token", + "solana__transaction_contains_unknown_instructions": "La transazione contiene istruzioni sconosciute.", + "solana__transaction_requires_x_signers_template": "Poiché la transazione richiede {0} firmatari, la commissione è più elevata.", + "stellar__account_merge": "Unione conti", + "stellar__account_thresholds": "Soglie conti", + "stellar__add_signer": "Aggiungi firmatario", + "stellar__add_trust": "Aggiungi attendibilità", + "stellar__all_will_be_sent_to": "Tutti gli XLM verranno inviati a:", + "stellar__allow_trust": "Consenti attendibilità", + "stellar__asset": "Asset", + "stellar__balance_id": "ID saldo", + "stellar__bump_sequence": "Sequenza di sostituzione", + "stellar__buying": "Acquisto di:", + "stellar__claim_claimable_balance": "Richiedi saldo esigibile", + "stellar__clear_data": "Cancella dati", + "stellar__clear_flags": "Cancella flag", + "stellar__confirm_issuer": "Conferma emittente", + "stellar__confirm_memo": "Conferma promemoria", + "stellar__confirm_network": "Conferma rete", + "stellar__confirm_operation": "Conferma operazione", + "stellar__confirm_stellar": "Conferma Stellar", + "stellar__confirm_timebounds": "Conferma scadenze", + "stellar__create_account": "Crea conto", + "stellar__debited_amount": "Importo addebitato", + "stellar__delete": "Elimina", + "stellar__delete_passive_offer": "Elimina offerta passiva", + "stellar__delete_trust": "Elimina attendibilità", + "stellar__destination": "Destinazione:", + "stellar__exchanges_require_memo": "Importante: molti exchange richiedono un promemoria al momento del deposito", + "stellar__final_confirm": "Conferma finale", + "stellar__hash": "Hash:", + "stellar__high": "Alto:", + "stellar__home_domain": "Dominio principale", + "stellar__inflation": "Inflazione", + "stellar__initial_balance": "Saldo iniziale", + "stellar__initialize_signing_with": "Inizializza la firma con", + "stellar__issuer_template": "{0} emittente:", + "stellar__key": "Chiave:", + "stellar__limit": "Limite:", + "stellar__low": "Basso:", + "stellar__master_weight": "Peso master:", + "stellar__medium": "Medio:", + "stellar__new_offer": "Nuova offerta", + "stellar__new_passive_offer": "Nuova offerta passiva", + "stellar__no_memo_set": "Nessun promemoria impostato.", + "stellar__no_restriction": "[nessuna restrizione]", + "stellar__on_network_template": "La transazione è su {0}", + "stellar__path_pay": "Percorso Paga", + "stellar__path_pay_at_least": "Percorso Paga almeno", + "stellar__pay": "Paga:", + "stellar__pay_at_most": "Paga al massimo:", + "stellar__preauth_transaction": "Transazione pre-autenticazione:", + "stellar__price_per_template": "Prezzo per {0}:", + "stellar__private_network": "rete privata", + "stellar__remove_signer": "Rimuovi firmatario", + "stellar__revoke_trust": "Revoca fiducia", + "stellar__selling": "Vendita di:", + "stellar__set_data": "Imposta dati", + "stellar__set_flags": "Imposta flag", + "stellar__set_sequence_to_template": "Impostare la sequenza su {0}?", + "stellar__sign_tx_count_template": "Firma questa transazione costituita da {0}", + "stellar__sign_tx_fee_template": "e paga {0}\na pagamento?", + "stellar__source_account": "Conto di origine:", + "stellar__testnet_network": "rete testnet", + "stellar__trusted_account": "Conto affidabile", + "stellar__update": "Aggiorna", + "stellar__valid_from": "Valido da (UTC)", + "stellar__valid_to": "Valido fino a (UTC)", + "stellar__value_sha256": "Valore (SHA-256):", + "stellar__wanna_clean_value_key_template": "Cancellare la chiave di valore {0}?", + "stellar__your_account": " il tuo conto", + "storage_msg__processing": "Elaborazione", + "storage_msg__starting": "Avvio", + "storage_msg__verifying_pin": "Verifica PIN", + "storage_msg__wrong_pin": "PIN errato", + "tezos__baker_address": "Indirizzo Baker:", + "tezos__balance": "Saldo:", + "tezos__ballot": "Votazione:", + "tezos__confirm_delegation": "Conferma delega", + "tezos__confirm_origination": "Conferma origine", + "tezos__delegator": "Delegante:", + "tezos__proposal": "Proposta", + "tezos__register_delegate": "Registra delegato", + "tezos__remove_delegation": "Rimuovi delega", + "tezos__submit_ballot": "Invia voto", + "tezos__submit_proposal": "Invia proposta", + "tezos__submit_proposals": "Invia proposte", + "tutorial__did_you_know": "Lo sapevi?", + "tutorial__first_wallet": "Trezor Model One, creato nel 2013,\nè stato il primo wallet hardware al mondo.", + "tutorial__get_started": "Inizia!", + "tutorial__lets_begin": "Scopri come utilizzare e navigare facilmente in questo dispositivo.", + "tutorial__menu": "Trova azioni e opzioni specifiche del contesto nel menu.", + "tutorial__middle_click": "Premi contemporaneamente il tasto sinistro e destro\nper confermare.", + "tutorial__press_and_hold": "Tieni premuto il tasto destro per\napprovare operazioni importanti.", + "tutorial__ready_to_use": "Puoi iniziare a\nutilizzare Trezor.", + "tutorial__ready_to_use_safe5": "Preparati a utilizzare il tuo dispositivo!", + "tutorial__restart_tutorial": "Riavvia il tutorial", + "tutorial__scroll_down": "Tasto dx per scorrere giù e leggere tutto il cont. se testo non può essere visual. su una scherm.\n\rTasto sx per scorrere su.", + "tutorial__sure_you_want_skip": "Vuoi davvero\nsaltare il tutorial?", + "tutorial__swipe_up_and_down": "Scorri verso l'alto e il basso\nper spostarti tra le schermate.", + "tutorial__title_easy_navigation": "Navigazione semplificata", + "tutorial__title_handy_menu": "Menu intuitivo", + "tutorial__title_hello": "Ciao", + "tutorial__title_hold": "Tieni premuto per confermare le azioni importanti", + "tutorial__title_lets_begin": "Iniziamo", + "tutorial__title_screen_scroll": "Scorri schermo", + "tutorial__title_skip": "Salta tutorial", + "tutorial__title_tutorial_complete": "Tutorial compl.", + "tutorial__title_well_done": "Complimenti!", + "tutorial__use_trezor": "Per usare Trezor,\nclicca tasti dx e sx.\n\rContinua con tasto dx.", + "tutorial__welcome_press_right": "Ti diamo il benvenuto in Trezor. Premi il tasto destro per continuare.", + "u2f__get": "Increm. e recup. contatore U2F?", + "u2f__set_template": "Impostare il contatore U2F su {0}?", + "u2f__title_get": "Ottieni cont. U2F", + "u2f__title_set": "Imposta cont. U2F", + "wipe__info": "Tutti i dati verranno cancellati.", + "wipe__title": "Elimina dati disp.", + "wipe__want_to_wipe": "Vuoi eliminare i dati dal dispositivo?\n", + "wipe_code__change": "Modificare il codice di eliminazione?", + "wipe_code__changed": "Codice di eliminazione modificato.", + "wipe_code__diff_from_pin": "Il codice di eliminazione deve essere diverso dal PIN.", + "wipe_code__disabled": "Codice di eliminazione disabilitato.", + "wipe_code__enabled": "Codice di eliminazione abilitato.", + "wipe_code__enter_new": "Nuovo cod. elim.", + "wipe_code__info": "Codice elim. utilizzabile per canc. tutti. dati da disp.", + "wipe_code__invalid": "Codice elim. non valido", + "wipe_code__mismatch": "Codici elim. inseriti non corrispondono.", + "wipe_code__reenter": "Reimmetti codice elim.", + "wipe_code__reenter_to_confirm": "Reimmetti codice elim. per confermare.", + "wipe_code__title_check": "Contr. codice elim.", + "wipe_code__title_invalid": "Codice elim. non valido", + "wipe_code__title_settings": "Imp. codice elim.", + "wipe_code__turn_off": "Disattivare protez. con codice elim.?", + "wipe_code__turn_on": "Attivare protez. con codice elim.?", + "wipe_code__wipe_code_mismatch": "Codice elim. non corr.", + "word_count__title": "Numero di parole", + "words__account": "Conto", + "words__account_colon": "Conto:", + "words__address": "Indirizzo", + "words__amount": "Importo", + "words__are_you_sure": "Vuoi continuare?", + "words__array_of": "Matrice di", + "words__blockhash": "Blockhash", + "words__buying": "Acquisto", + "words__confirm": "Conferma", + "words__confirm_fee": "Conferma commissione", + "words__contains": "Contiene", + "words__continue_anyway": "Continuare comunque?", + "words__continue_with": "Continua con", + "words__error": "Errore", + "words__fee": "Commissione", + "words__from": "da", + "words__keep_it_safe": "Tienilo al sicuro!", + "words__know_what_your_doing": "Continua solo se sai cosa stai facendo!", + "words__my_trezor": "Il mio Trezor", + "words__no": "No", + "words__outputs": "output", + "words__please_check_again": "Ricontrolla", + "words__please_try_again": "Riprova", + "words__really_wanna": "Vuoi", + "words__recipient": "Destinatario", + "words__sign": "Firma", + "words__signer": "Firmatario", + "words__title_check": "Controlla", + "words__title_group": "Gruppo", + "words__title_information": "Informazioni", + "words__title_remember": "Ricorda", + "words__title_share": "Azione", + "words__title_shares": "Azioni", + "words__title_success": "Operazione riuscita", + "words__title_summary": "Riepilogo", + "words__title_threshold": "Soglia", + "words__unknown": "Sconosciuto", + "words__warning": "Avviso", + "words__writable": "Scrivibile", + "words__yes": "Sì" + } +} diff --git a/core/translations/pt.json b/core/translations/pt.json new file mode 100644 index 0000000000..4b32f0a4cd --- /dev/null +++ b/core/translations/pt.json @@ -0,0 +1,915 @@ +{ + "fonts": { + "T2B1": { + "1_FONT_NORMAL": "font_pixeloperator_regular_8_pt.json", + "2_FONT_BOLD": "font_pixeloperator_bold_8_pt.json", + "3_FONT_MONO": "font_pixeloperatormono_regular_8_pt.json", + "4_FONT_BIG": "font_unifont_regular_16_pt.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_pt.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_pt.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_pt.json", + "8_FONT_SUB": null + }, + "T2T1": { + "1_FONT_NORMAL": "font_tthoves_regular_21_pt.json", + "2_FONT_BOLD": null, + "3_FONT_MONO": "font_robotomono_medium_20_pt.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_pt.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_pt.json", + "8_FONT_SUB": null + }, + "T3T1": { + "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_pt.json", + "2_FONT_BOLD": "font_ttsatoshi_demibold_21_pt.json", + "3_FONT_MONO": "font_robotomono_medium_21_pt.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_pt.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": null, + "8_FONT_SUB": "font_ttsatoshi_demibold_18_pt.json" + } + }, + "header": { + "language": "pt-BR", + "version": "2.8.2" + }, + "translations": { + "addr_mismatch__contact_support_at": "Entre em contato com o suporte Trezor em", + "addr_mismatch__key_mismatch": "Chave não coincide?", + "addr_mismatch__mismatch": "Endereço não coincide?", + "addr_mismatch__support_url": "trezor.io/suporte", + "addr_mismatch__wrong_derivation_path": "Caminho de derivação incorreto para a conta.", + "addr_mismatch__xpub_mismatch": "XPUB não coincide?", + "address__public_key": "Chave pública", + "address__title_cosigner": "Cosigner", + "address__title_receive_address": "End. de recebimento", + "address__title_yours": "Seu", + "address_details__derivation_path": "Caminho de derivação:", + "address_details__title_receive_address": "End. de recebimento", + "address_details__title_receiving_to": "Recebendo para", + "authenticate__confirm_template": "Permitir ao computador confirmar se {0} é original?", + "authenticate__header": "Autenticar dispositivo", + "auto_lock__change_template": "Bloquear o Tezor após {0} de inatividade?", + "auto_lock__title": "Atraso do bloqueio", + "backup__can_back_up_anytime": "Você pode fazer um backup do Trezor por vez.", + "backup__it_should_be_backed_up": "Você deve fazer backup da nova carteira agora.", + "backup__it_should_be_backed_up_now": "O backup deve ser feito agora!", + "backup__new_wallet_created": "Nova carteira criada.\n", + "backup__new_wallet_successfully_created": "Nova carteira criada com sucesso.", + "backup__recover_anytime": "Use o backup para recuperar a carteira a qualquer momento.", + "backup__title_backup_wallet": "Backup da carteira", + "backup__title_skip": "Pular backup", + "backup__want_to_skip": "Deseja ignorar o backup?", + "binance__buy": "Comprar", + "binance__confirm_cancel": "Confirmar cancelamento", + "binance__confirm_input": "Confirmar entrada", + "binance__confirm_order": "Confirmar pedido", + "binance__confirm_output": "Confirmar saída", + "binance__order_id": "ID do pedido:", + "binance__pair": "Par:", + "binance__price": "Preço:", + "binance__quantity": "Quantidade:", + "binance__sell": "Vender", + "binance__sender_address": "Endereço do remetente:", + "binance__side": "Lado:", + "bitcoin__commitment_data": "Dados de compromisso:", + "bitcoin__confirm_locktime": "Confirmar temp. bloq.", + "bitcoin__create_proof_of_ownership": "Deseja criar uma prova de propriedade?", + "bitcoin__high_mining_fee_template": "Taxa de mineração\n{0}\nmuito alta.", + "bitcoin__locktime_no_effect": "Temp. bloq. definido sem efeito.", + "bitcoin__locktime_set_to": "Temp. bloq. definido:", + "bitcoin__locktime_set_to_blockheight": "Temp. bloq. definido para blockheight:", + "bitcoin__lot_of_change_outputs": "Muitas alterações-saídas.", + "bitcoin__multiple_accounts": "Múltiplas contas", + "bitcoin__new_fee_rate": "Nova taxa:", + "bitcoin__simple_send_of": "Envio simples de", + "bitcoin__ticket_amount": "Quantidade de Ticket:", + "bitcoin__title_confirm_details": "Confirmar detalhes", + "bitcoin__title_finalize_transaction": "Finalizar a transação", + "bitcoin__title_high_mining_fee": "Alta taxa mineração", + "bitcoin__title_meld_transaction": "Transações de meld", + "bitcoin__title_modify_amount": "Modificar quantia", + "bitcoin__title_payjoin": "Payjoin", + "bitcoin__title_proof_of_ownership": "Prov. propriedade", + "bitcoin__title_purchase_ticket": "Comprar ticket", + "bitcoin__title_update_transaction": "Atualiz. transação", + "bitcoin__unknown_path": "caminho desconhecido", + "bitcoin__unknown_transaction": "Trans. desconhecida", + "bitcoin__unusually_high_fee": "Taxa excepcionalmente alta.", + "bitcoin__unverified_external_inputs": "A transação contém entradas externas não verificadas.", + "bitcoin__valid_signature": "A assinatura é válida.", + "bitcoin__voting_rights": "Direitos de voto para:", + "brightness__title": "Ajustar brilho", + "buttons__abort": "Abortar", + "buttons__access": "Acessar", + "buttons__again": "Novamente", + "buttons__allow": "Permitir", + "buttons__back": "Voltar", + "buttons__back_up": "Fazer backup", + "buttons__cancel": "Cancelar", + "buttons__change": "Alterar", + "buttons__check": "Verificar", + "buttons__check_again": "Verific. de novo", + "buttons__close": "Fechar", + "buttons__confirm": "Confirmar", + "buttons__continue": "Continuar", + "buttons__details": "Detalhes", + "buttons__enable": "Ativar", + "buttons__enter": "Inserir", + "buttons__enter_share": "Inserir cota", + "buttons__export": "Exportar", + "buttons__format": "Formatar", + "buttons__go_back": "Voltar", + "buttons__hold_to_confirm": "Confirme", + "buttons__info": "Informações", + "buttons__install": "Instalar", + "buttons__more_info": "Mais info", + "buttons__ok_i_understand": "Ok, eu entendo", + "buttons__purchase": "Comprar", + "buttons__quit": "Sair", + "buttons__restart": "Reiniciar", + "buttons__retry": "Tentar de novo", + "buttons__select": "Selecionar", + "buttons__set": "Definir", + "buttons__show_all": "Exibir tudo", + "buttons__show_details": "Exibir detalhes", + "buttons__show_words": "Exibir palavras", + "buttons__skip": "Pular", + "buttons__try_again": "Tentar de novo", + "buttons__turn_off": "Desligar", + "buttons__turn_on": "Ligar", + "cardano__addr_base": "Base", + "cardano__addr_enterprise": "Empresa", + "cardano__addr_legacy": "Legacy", + "cardano__addr_pointer": "Pointer", + "cardano__addr_reward": "Endereço de", + "cardano__address_no_staking": "recompensa - sem recompensas de stake.", + "cardano__always_abstain": "Sempre ausente", + "cardano__always_no_confidence": "Sempre sem confiança", + "cardano__amount_burned_decimals_unknown": "Quantia queimada (casas decimais desconhecidas):", + "cardano__amount_minted_decimals_unknown": "Quantia cunhada (casas decimais desconhecidas):", + "cardano__amount_sent_decimals_unknown": "Quantia enviada (casas decimais desconhecidas):", + "cardano__anonymous_pool": "O pool não tem metadados (pool anônimo)", + "cardano__asset_fingerprint": "Impressão digital do ativo:", + "cardano__auxiliary_data_hash": "Hash de dados auxiliar:", + "cardano__block": "Bloco", + "cardano__catalyst": "Catalisador", + "cardano__certificate": "Certificado", + "cardano__change_output": "Alterar saída", + "cardano__check_all_items": "Verifique todos os itens cuidadosamente.", + "cardano__choose_level_of_details": "Escolha o nível de detalhes:", + "cardano__collateral_input_id": "ID de entrada do colateral:", + "cardano__collateral_input_index": "Índice de entrada do colateral:", + "cardano__collateral_output_contains_tokens": "A saída de retorno do colateral contém tokens.", + "cardano__collateral_return": "Retorno do colateral", + "cardano__confirm": "Confirme:", + "cardano__confirm_signing_stake_pool": "Confirme a assinatura do stake pool como proprietário.", + "cardano__confirm_transaction": "Confirmar transação", + "cardano__confirming_a_multisig_transaction": "Confirmar uma transação multisig.", + "cardano__confirming_a_plutus_transaction": "Confirmar uma transação Plutus.", + "cardano__confirming_pool_registration": "Confirmar o registro do pool como proprietário.", + "cardano__confirming_transction": "Confirmar uma transação.", + "cardano__cost": "Custo", + "cardano__credential_mismatch": "A credencial não coincide com a credencial de pagamento.", + "cardano__datum_hash": "Hash datum:", + "cardano__delegating_to": "Delegando para:", + "cardano__delegating_to_key_hash": "Delegando para chave hash:", + "cardano__delegating_to_script": "Delegando ao script:", + "cardano__deposit": "Depósito:", + "cardano__for_account_and_index_template": "para a conta {0} e o índice {1}:", + "cardano__for_account_template": "para a conta {0}:", + "cardano__for_key_hash": "para a hash de chave:", + "cardano__for_script": "para o script:", + "cardano__inline_datum": "Datum em linha", + "cardano__input_id": "ID de entrada:", + "cardano__input_index": "Índice de entrada:", + "cardano__intro_text_change": "O endereço a seguir é um endereço de alteração. Seu", + "cardano__intro_text_owned_by_device": "O endereço a seguir pertence a este dispositivo. Seu", + "cardano__intro_text_registration_payment": "O endereço de pagamento do registro da chave de voto pertence a este dispositivo. Seu", + "cardano__key_hash": "hash de chave", + "cardano__margin": "Margem", + "cardano__multisig_path": "caminho de múltiplas assinaturas", + "cardano__nested_scripts_template": "Contém {0} scripts aninhados.", + "cardano__network": "Rede:", + "cardano__no_output_tx": "A transação não tem saídas, a rede não pode ser verificada.", + "cardano__nonce": "Nonce:", + "cardano__other": "outros", + "cardano__path": "caminho", + "cardano__pledge": "Pledge", + "cardano__pointer": "pointer", + "cardano__policy_id": "ID da política:", + "cardano__pool_metadata_hash": "Hash de metadados do pool:", + "cardano__pool_metadata_url": "URL de metadados do pool:", + "cardano__pool_owner": "Proprietário do pool:", + "cardano__pool_reward_account": "Conta de recompensa do pool:", + "cardano__reference_input_id": "ID de entrada de referência:", + "cardano__reference_input_index": "Índice de entrada de referência:", + "cardano__reference_script": "Script de referência", + "cardano__required_signer": "Signatário obrigatório", + "cardano__reward": "recompensa", + "cardano__reward_address": "O endereço é um endereço de recompensa.", + "cardano__reward_eligibility_warning": "Aviso: O endereço não é um endereço de pagamento, ele não é elegível para recompensas.", + "cardano__rewards_go_to": "As recompensas vão para:", + "cardano__script": "script", + "cardano__script_all": "Todos", + "cardano__script_any": "Qualquer", + "cardano__script_data_hash": "Hash de dados do script:", + "cardano__script_hash": "Hash do script:", + "cardano__script_invalid_before": "Inválido antes", + "cardano__script_invalid_hereafter": "Inválido daqui em diante", + "cardano__script_key": "Chave", + "cardano__script_n_of_k": "N de K", + "cardano__script_reward": "recompensa por script", + "cardano__sending": "Envio", + "cardano__show_simple": "Exibir simples", + "cardano__sign_tx_path_template": "Assinar transação com {0}:", + "cardano__stake_delegation": "Delegação de stake", + "cardano__stake_deregistration": "Cancelamento do registro da chave de stake", + "cardano__stake_pool_registration": "Registro de Stakepool", + "cardano__stake_pool_registration_pool_id": "Registro do stake pool\nID do pool:", + "cardano__stake_registration": "Registro da chave de stake", + "cardano__staking_key_for_account": "Chave de stake da conta", + "cardano__to_pool": "para o pool:", + "cardano__token_minting_path": "caminho de cunhagem de token", + "cardano__total_collateral": "Colateral total:", + "cardano__transaction": "Transação", + "cardano__transaction_contains_minting_or_burning": "A transação contém a cunhagem ou queima de tokens.", + "cardano__transaction_contains_script_address_no_datum": "A saída da transação a seguir contém um endereço de script, mas não contém um datum.", + "cardano__transaction_fee": "Taxa de transação:", + "cardano__transaction_id": "ID da transação:", + "cardano__transaction_no_collateral_input": "A transação não contém entradas de colaterais. O script Plutus não poderá ser executado.", + "cardano__transaction_no_script_data_hash": "A transação não contém hash de dados do script. O script Plutus não poderá ser executado.", + "cardano__transaction_output_contains_tokens": "A saída da transação a seguir contém tokens.", + "cardano__ttl": "TTL:", + "cardano__unknown_collateral_amount": "Quantia de colateral desconhecida.", + "cardano__unusual_path": "O caminho é incomum.", + "cardano__valid_since": "Válido desde:", + "cardano__verify_script": "Verificar script", + "cardano__vote_delegation": "Delegação de voto", + "cardano__vote_key_registration": "Registro da chave de voto (CIP-36)", + "cardano__vote_public_key": "Chave pública de voto:", + "cardano__voting_purpose": "Objetivo da votação:", + "cardano__warning": "Aviso", + "cardano__weight": "Peso:", + "cardano__withdrawal_for_address_template": "Confirmar retirada para endereço de {0}:", + "cardano__x_of_y_signatures_template": "Requer {0} de {1} assinaturas.", + "coinjoin__access_account": "Acessar sua conta do coinjoin?", + "coinjoin__do_not_disconnect": "Não desconecte o seu Trezor!", + "coinjoin__max_mining_fee": "Taxa máx. mineração", + "coinjoin__max_rounds": "Máx. de rodadas", + "coinjoin__title": "Autorizar coinjoin", + "coinjoin__title_do_not_disconnect": "Não desconecte o seu trezor!", + "coinjoin__title_progress": "Coinjoin em andam.", + "coinjoin__waiting_for_others": "Esperando por outros", + "confirm_total__fee_rate": "Taxa:", + "confirm_total__sending_from_account": "Enviando da conta:", + "confirm_total__title_fee": "Info sobre taxas", + "confirm_total__title_sending_from": "Envio de", + "debug__loading_seed": "Carreg. frase-semente", + "debug__loading_seed_not_recommended": "Carreg. frase-semente privada não recomend.", + "device_name__change_template": "Alterar nome do dispositivo para {0}?", + "device_name__title": "Nome do dispositivo", + "entropy__send": "Deseja mesmo enviar entropia?", + "entropy__title": "Entropia interna", + "entropy__title_confirm": "Confirmar entropia", + "eos__about_to_sign_template": "Você está prestes a assinar {0}.", + "eos__action_name": "Nome da ação:", + "eos__arbitrary_data": "Dados arbitrários", + "eos__buy_ram": "Comprar RAM", + "eos__bytes": "Bytes:", + "eos__cancel_vote": "Cancelar voto", + "eos__checksum": "Checksum:", + "eos__code": "Código:", + "eos__contract": "Contrato:", + "eos__cpu": "CPU:", + "eos__creator": "Criador:", + "eos__delegate": "Delegar", + "eos__delete_auth": "Excluir autorização", + "eos__from": "De:", + "eos__link_auth": "Vincular autorização", + "eos__memo": "Memo/etiqueta", + "eos__name": "Nome:", + "eos__net": "Net:", + "eos__new_account": "Nova conta", + "eos__owner": "Proprietário:", + "eos__parent": "Primário:", + "eos__payer": "Pagador:", + "eos__permission": "Permissão:", + "eos__proxy": "Proxy:", + "eos__receiver": "Recebedor:", + "eos__refund": "Requerimento para", + "eos__requirement": "reembolso:", + "eos__sell_ram": "Vender RAM", + "eos__sender": "Remetente:", + "eos__sign_transaction": "Assinar transação", + "eos__threshold": "Limite:", + "eos__to": "Para:", + "eos__transfer": "Transferência:", + "eos__type": "Tipo:", + "eos__undelegate": "Remover delegante", + "eos__unlink_auth": "Desvincular autorização", + "eos__update_auth": "Atualizar autorização", + "eos__vote_for_producers": "Votar para produtores", + "eos__vote_for_proxy": "Votar para proxy", + "eos__voter": "Eleitor:", + "ethereum__amount_sent": "Quantia enviada:", + "ethereum__contract": "Contrato:", + "ethereum__data_size_template": "Tamanho: {0} bytes", + "ethereum__gas_limit": "Limite de gás:", + "ethereum__gas_price": "Preço do gás:", + "ethereum__max_gas_price": "Preço máximo do gás:", + "ethereum__name_and_version": "Nome e versão", + "ethereum__new_contract": "novo contrato?", + "ethereum__no_message_field": "Sem campo mens.", + "ethereum__priority_fee": "Taxa de prioridade:", + "ethereum__show_full_array": "Exibir array completo", + "ethereum__show_full_domain": "Exibir domínio completo", + "ethereum__show_full_message": "Exibir mensagem", + "ethereum__show_full_struct": "Exibir estrutura", + "ethereum__sign_eip712": "Deseja assinar dados digitados do EIP-712?", + "ethereum__staking_claim": "Resgatar", + "ethereum__staking_claim_address": "Endereço de resgate", + "ethereum__staking_claim_intro": "Resgatar ETH do Everstake?", + "ethereum__staking_stake": "Stake", + "ethereum__staking_stake_address": "Endereço de stake", + "ethereum__staking_stake_intro": "Fazer stake de ETH no Everstake?", + "ethereum__staking_unstake": "Tirar do stake", + "ethereum__staking_unstake_intro": "Tirar ETH do stake no Everstake?", + "ethereum__title_confirm_data": "Confirmar dados", + "ethereum__title_confirm_domain": "Confirmar domínio", + "ethereum__title_confirm_message": "Confirmar mensagem", + "ethereum__title_confirm_struct": "Conf. estrutura", + "ethereum__title_confirm_typed_data": "Conf. dados", + "ethereum__title_signing_address": "End. assinatura", + "ethereum__units_template": "{0} unidades", + "ethereum__unknown_token": "Token desconhecido", + "ethereum__valid_signature": "A assinatura é válida.", + "experimental_mode__enable": "Ativar recursos experimentais?", + "experimental_mode__only_for_dev": "Apenas para desenv. e testes beta!", + "experimental_mode__title": "Modo experimental", + "fido__already_registered": "Já registrado", + "fido__device_already_registered": "Este dispositivo já está registrado com este aplicativo.", + "fido__device_already_registered_with_template": "Este dispositivo já está registrado no {0}.", + "fido__device_not_registered": "Este dispositivo não está registrado com este aplicativo.", + "fido__does_not_belong": "A credencial que você está tentando importar\nnão pertence a este autenticador.", + "fido__erase_credentials": "apagar credenciais?", + "fido__export_credentials": "Exportar informações sobre as credenciais armazenadas neste dispositivo?", + "fido__not_registered": "Não registrado", + "fido__not_registered_with_template": "Este dispositivo não está registrado no\n{0}.", + "fido__please_enable_pin_protection": "Ative a proteção por PIN.", + "fido__title_authenticate": "Autent. com FIDO2", + "fido__title_import_credential": "Importar credencial", + "fido__title_list_credentials": "Listar credenciais", + "fido__title_register": "Registrar FIDO2 ", + "fido__title_remove_credential": "Remover credencial", + "fido__title_reset": "Redefinir FIDO2", + "fido__title_u2f_auth": "Autent. com U2F", + "fido__title_u2f_register": "Registrar U2F", + "fido__title_verify_user": "Verif. usuário FIDO2", + "fido__unable_to_verify_user": "Não foi possível verificar o usuário.", + "fido__wanna_erase_credentials": "Deseja mesmo apagar todas as credenciais?", + "firmware_update__title": "Atualizar firmware", + "firmware_update__title_fingerprint": "Impres. digital FW", + "homescreen__click_to_connect": "Clique para conectar", + "homescreen__click_to_unlock": "Clique para desbloq.", + "homescreen__set_default": "Alterar papel de parede para a imagem padrão?", + "homescreen__settings_subtitle": "Configurações", + "homescreen__settings_title": "Tela inicial", + "homescreen__title_backup_failed": "Falha no backup", + "homescreen__title_backup_needed": "Backup necessário", + "homescreen__title_coinjoin_authorized": "Coinjoin autorizado", + "homescreen__title_experimental_mode": "Modo experimental", + "homescreen__title_no_usb_connection": "Não há conexão usb", + "homescreen__title_pin_not_set": "PIN não definido", + "homescreen__title_seedless": "Sem frase-semente", + "homescreen__title_set": "Alterar tela inic.?", + "inputs__back": "VOLTAR", + "inputs__cancel": "CANCELAR", + "inputs__delete": "EXCLUIR", + "inputs__enter": "INSERIR", + "inputs__previous": "ANTERIOR", + "inputs__return": "RETONAR", + "inputs__show": "EXIBIR", + "inputs__space": "ESPAÇO", + "instructions__exit_tutorial": "Sair do tutorial", + "joint__title": "Transação conjunta", + "joint__to_the_total_amount": "Até a quantia total:", + "joint__you_are_contributing": "Você está contribuindo:", + "language__change_to_template": "Alterar idioma para {0}?", + "language__changed": "Idioma alterado com sucesso", + "language__progress": "Alteração de idioma", + "language__title": "Config. de idioma", + "lockscreen__tap_to_connect": "Toque para conectar", + "lockscreen__tap_to_unlock": "Toque para desbloquear", + "lockscreen__title_locked": "Bloqueado", + "lockscreen__title_not_connected": "Não conectado", + "misc__decrypt_value": "Descript. quantia", + "misc__encrypt_value": "Criptografar quantia", + "misc__title_suite_labeling": "Rotulagem da suite", + "modify_amount__decrease_amount": "Diminuir a quantia em:", + "modify_amount__increase_amount": "Aumentar a quantia em:", + "modify_amount__new_amount": "Nova quantia:", + "modify_amount__title": "Modificar quantia", + "modify_fee__decrease_fee": "Diminuir taxa por:", + "modify_fee__fee_rate": "Taxa:", + "modify_fee__increase_fee": "Aumentar taxa por:", + "modify_fee__new_transaction_fee": "Nova taxa trans.:", + "modify_fee__no_change": "Taxa não alterada.\n", + "modify_fee__title": "Modificar taxa", + "modify_fee__transaction_fee": "Taxa de transação:", + "monero__confirm_export": "Confirmar exportação", + "monero__confirm_ki_sync": "Confirmar ki sync", + "monero__confirm_refresh": "Confirmar atualização", + "monero__confirm_unlock_time": "Confirmar temp desbloq.", + "monero__hashing_inputs": "Entradas de hash", + "monero__payment_id": "ID de pagamento", + "monero__postprocessing": "Pós-processamento...", + "monero__processing": "Processando...", + "monero__processing_inputs": "Processando entradas", + "monero__processing_outputs": "Processando saídas", + "monero__signing": "Assinando...", + "monero__signing_inputs": "Assinando entradas", + "monero__unlock_time_set_template": "O tempo de desbloqueio para esta transação foi definido para {0}", + "monero__wanna_export_tx_der": "Deseja mesmo exportar tx_der\npara tx_proof?", + "monero__wanna_export_tx_key": "Deseja mesmo exportar tx_key?", + "monero__wanna_export_watchkey": "Deseja mesmo exportar credenciais em modo somente exibição?", + "monero__wanna_start_refresh": "Deseja mesmo\niniciar atualização?", + "monero__wanna_sync_key_images": "Deseja mesmo\nsincronizar imagens-chave?", + "nem__absolute": "absoluto", + "nem__activate": "Ativar", + "nem__add": "Adicionar", + "nem__confirm_action": "Confirmar ação", + "nem__confirm_address": "Confirmar endereço", + "nem__confirm_creation_fee": "Confirmar taxa de criação", + "nem__confirm_mosaic": "Confirmar mosaico", + "nem__confirm_multisig_fee": "Confirmar taxa multisig", + "nem__confirm_namespace": "Confirmar namespace", + "nem__confirm_payload": "Confirmar carga útil", + "nem__confirm_properties": "Confirmar propriedades", + "nem__confirm_rental_fee": "Confirmar taxa de aluguel", + "nem__confirm_transfer_of": "Confirmar transferência de", + "nem__convert_account_to_multisig": "Converter conta para conta multisig?", + "nem__cosign_transaction_for": "Coassinar transação para", + "nem__cosignatory": " cossignatário", + "nem__create_mosaic": "Criar mosaico", + "nem__create_namespace": "Criar namespace", + "nem__deactivate": "Desativar", + "nem__decrease": "Diminuir", + "nem__description": "Descrição:", + "nem__divisibility_and_levy_cannot_be_shown": "A divisibilidade e a taxa não podem ser mostradas para mosaicos desconhecidos", + "nem__encrypted": "Criptografado:", + "nem__final_confirm": "Confirmação final", + "nem__immutable": "imutável", + "nem__increase": "Aumentar", + "nem__initial_supply": "Oferta inicial:", + "nem__initiate_transaction_for": "Iniciar transação para", + "nem__levy_divisibility": "Visibilidade da taxa:", + "nem__levy_fee": "Taxa:", + "nem__levy_fee_of": "Confirmar taxa do mosaico de", + "nem__levy_mosaic": "Mosaico da taxa:", + "nem__levy_namespace": "Namespace da taxa:", + "nem__levy_recipient": "Destinatário da taxa:", + "nem__levy_type": "Tipo da taxa:", + "nem__modify_supply_for": "Modificar a oferta para", + "nem__modify_the_number_of_cosignatories_by": "Modificar o número de cossignatários por ", + "nem__mutable": "quantia mutável", + "nem__of": "de", + "nem__percentile": "percentual", + "nem__raw_units_template": "{0} de unidades brutas", + "nem__remote_harvesting": " colheita remota?", + "nem__remove": "Remover", + "nem__set_minimum_cosignatories_to": "Definir cossignatários mínimos para ", + "nem__sign_tx_fee_template": "Assinar esta transação\ne pagar {0}\npela taxa de rede?", + "nem__supply_change": "Mudança de oferta", + "nem__supply_units_template": "Oferta de {0} por {1} unidades inteiras?", + "nem__transferable": "Transferível?", + "nem__under_namespace": "em namespace", + "nem__unencrypted": "Não criptografado:", + "nem__unknown_mosaic": "Mosaico desconhecido!", + "passphrase__access_hidden_wallet": "Acessar cart. oculta?", + "passphrase__always_on_device": "Deseja mesmo inserir a frase secreta todas as vezes no dispositivo?", + "passphrase__from_host_not_shown": "A frase secreta fornecida será usada, mas não exibida devido às config. do dispositivo.", + "passphrase__hidden_wallet": "Carteira oculta", + "passphrase__hide": "Ocultar a frase secreta fornecida pelo host?", + "passphrase__next_screen_will_show_passphrase": "A próxima tela mostrará a frase secreta.", + "passphrase__please_enter": "Digite sua frase secreta.", + "passphrase__revoke_on_device": "Deseja revogar frase secreta na config. do dispositivo?", + "passphrase__title_confirm": "Conf. frase secreta", + "passphrase__title_enter": "Digit. frase secreta", + "passphrase__title_hide": "Oc. frase secreta", + "passphrase__title_settings": "Conf. frase secreta", + "passphrase__title_source": "Orig. frase secreta", + "passphrase__turn_off": "Desligar a proteção por frase secreta?", + "passphrase__turn_on": "Ligar a proteção por frase secreta?", + "pin__change": "Alterar PIN?", + "pin__changed": "PIN alterado.", + "pin__cursor_will_change": "A posição do cursor mudará entre as entradas para maior segurança.", + "pin__diff_from_wipe_code": "O novo PIN deve ser diferente do seu código de limpeza.", + "pin__disabled": "Proteção por PIN\ndesligada.", + "pin__enabled": "Proteção por PIN\nligada.", + "pin__enter": "Digite o PIN", + "pin__enter_new": "Insira o novo PIN", + "pin__entered_not_valid": "O PIN inserido não é válido.", + "pin__info": "O PIN será necessário para acessar este dispositivo.", + "pin__invalid_pin": "PIN inválido", + "pin__last_attempt": "Última tentativa", + "pin__mismatch": "Os PINs inseridos não coincidem!", + "pin__pin_mismatch": "O PIN não coincide", + "pin__please_check_again": "Verifique novamente.", + "pin__reenter_new": "Reinsira o novo PIN", + "pin__reenter_to_confirm": "Reinsira o PIN para confirmar.", + "pin__should_be_long": "O PIN deve ter 4-50 dígitos.", + "pin__title_check_pin": "Verificar PIN", + "pin__title_settings": "Config. PIN", + "pin__title_wrong_pin": "PIN incorreto", + "pin__tries_left": "tentativas restantes", + "pin__turn_off": "Deseja desligar a proteção por PIN?", + "pin__turn_on": "Ligar proteção por PIN?", + "pin__wrong_pin": "PIN incorreto", + "plurals__contains_x_keys": "tecla|teclas", + "plurals__lock_after_x_hours": "hora|horas", + "plurals__lock_after_x_milliseconds": "milissegundo|milissegundos", + "plurals__lock_after_x_minutes": "minuto|minutos", + "plurals__lock_after_x_seconds": "segundo|segundos", + "plurals__sign_x_actions": "ação|ações", + "plurals__transaction_of_x_operations": "operação|operações", + "plurals__x_groups_needed": "grupo|grupos", + "plurals__x_shares_needed": "cota|cotas", + "progress__authenticity_check": "Verif. autenticidade...", + "progress__done": "Concluído", + "progress__loading_transaction": "Carreg. transação...", + "progress__locking_device": "Bloqueando disp...", + "progress__one_second_left": "1 segundo restante", + "progress__please_wait": "Aguarde", + "progress__refreshing": "Atualizando...", + "progress__signing_transaction": "Assinando transação...", + "progress__syncing": "Sincronizando...", + "progress__x_seconds_left_template": "{0} segundos restantes", + "reboot_to_bootloader__just_a_moment": "Um momento...", + "reboot_to_bootloader__restart": "O Trezor será reiniciado no modo bootloader.", + "reboot_to_bootloader__title": "Vá para bootloader", + "reboot_to_bootloader__version_by_template": "Versão firmware {0}\npor {1}", + "recovery__cancel_dry_run": "Cancelar verificação do backup", + "recovery__check_dry_run": "Verificar seu backup?", + "recovery__cursor_will_change": "A posição do cursor mudará entre as entradas para maior segurança.", + "recovery__dry_run_bip39_valid_match": "A semente mnemônica inserida é válida e coincide com a que está no dispositivo.", + "recovery__dry_run_bip39_valid_mismatch": "A semente mnemônica inserida é válida, mas não coincide com a que está no dispositivo.", + "recovery__dry_run_slip39_valid_match": "As recovery shares inseridas são válidas e coincidem com as do dispositivo.", + "recovery__dry_run_slip39_valid_mismatch": "As recovery shares inseridas são válidas, mas não coincidem com as do dispositivo.", + "recovery__enter_any_share": "Insira qualquer cota", + "recovery__enter_backup": "Insira seu backup.", + "recovery__enter_different_share": "Insira uma cota diferente.", + "recovery__enter_share_from_diff_group": "Insira uma cota de um grupo diferente.", + "recovery__group_num_template": "Grupo {0}", + "recovery__group_threshold_reached": "Limite de grupo atingido.", + "recovery__invalid_seed_entered": "A semente mnemônica inserida é inválida.", + "recovery__invalid_share_entered": "A recovery share inserida é inválida.", + "recovery__more_shares_needed": "Mais cotas necessárias", + "recovery__num_of_words": "Selecione núm. palavras do backup.", + "recovery__only_first_n_letters": "Você só precisará selecionar as primeiras 2-4 letras de cada palavra.", + "recovery__progress_will_be_lost": "Todo o progresso será perdido.", + "recovery__select_num_of_words": "Selecione núm. palavras do backup.", + "recovery__share_already_entered": "Cota já inserida", + "recovery__share_from_another_shamir": "Você inseriu uma ação de outro backup Shamir.", + "recovery__share_num_template": "Cota {0}", + "recovery__title": "Recuperar carteira", + "recovery__title_cancel_dry_run": "Canc. verif. backup", + "recovery__title_cancel_recovery": "Canc. recuperação", + "recovery__title_dry_run": "Verif. backup", + "recovery__title_recover": "Recuperar carteira", + "recovery__title_remaining_shares": "Cotas restantes", + "recovery__title_unlock_repeated_backup": "Backup de multi-cotas", + "recovery__type_word_x_of_y_template": "Digite {0} de {1}", + "recovery__wallet_recovered": "Carteira recuperada com sucesso", + "recovery__wanna_cancel_dry_run": "Deseja cancelar a verificação do backup?", + "recovery__wanna_cancel_recovery": "Deseja cancelar o processo de recuperação?", + "recovery__word_count_template": "({0} palavras)", + "recovery__word_x_of_y_template": "Palavra {0} de {1}", + "recovery__x_more_items_starting_template_plural": "{count} mais {plural} início", + "recovery__x_more_shares_needed_template_plural": "{count} mais {plural} necessário.", + "recovery__x_of_y_entered_template": "{0} de {1} cotas inseridas com sucesso.", + "recovery__you_have_entered": "Você inseriu", + "reset__advanced_group_threshold_info": "O limite especifica o número de grupos para recuperar sua carteira.", + "reset__all_x_of_y_template": "todas {0} de {1} cotas", + "reset__any_x_of_y_template": "{0} de {1} cotas", + "reset__button_create": "Criar carteira", + "reset__button_recover": "Recup. carteira", + "reset__by_continuing": "Ao continuar, você concorda com T&C da Trezor Company.", + "reset__check_backup_title": "Verif. backup", + "reset__check_group_share_title_template": "Ver. g{0} - share {1}", + "reset__check_seed_title": "Ver. frase-semente", + "reset__check_share_title_template": "VER. COTA Nº{0}", + "reset__continue_with_next_share": "Continuar com a próxima cota.", + "reset__continue_with_share_template": "Continuar com a cota nº{0}.", + "reset__create_x_of_y_multi_share_backup_template": "Você quer criar um {0} de backup de multi-cotas {1}?", + "reset__finished_verifying_group_template": "Você terminou de verificar suas recovery shares para o grupo {0}.", + "reset__finished_verifying_seed": "Você terminou de verificar sua frase-semente de recuperação.", + "reset__finished_verifying_shares": "Você concluiu a verificação de suas recovery shares.", + "reset__group_description": "Um grupo é composto por recovery shares.", + "reset__group_info": "Cada grupo tem um número definido de cotas e seu próprio limite. Nas próximas etapas, você definirá os números de cotas e os limites.", + "reset__group_share_checked_successfully_template": "Grupo {0} - cota {1} verificada.", + "reset__group_share_title_template": "GRUPO {0} - cota {1}", + "reset__more_info_at": "Mais informações em", + "reset__need_all_share_template": "Para recuperação, você precisa das {0} cotas.", + "reset__need_any_share_template": "Para recuperação, você precisa de {0} cotas.", + "reset__needed_to_form_a_group": "para formar um grupo. ", + "reset__needed_to_recover_your_wallet": "para recuperar sua carteira. ", + "reset__never_make_digital_copy": "Nunca faça uma cópia digital do backup ou carregue-a on-line!", + "reset__num_of_share_holders_template": "{0} pessoas ou locais terão uma cota cada.", + "reset__num_of_shares_advanced_info_template": "Cada recovery share contém {0} palavras. Escolha o núm. limite de cota para formação do Grupo {1}.", + "reset__num_of_shares_basic_info_template": "Cada recovery share contém {0} palavras. Escolha quantas cotas são necessárias para recuperar sua carteira.", + "reset__num_shares_for_group_template": "O núm. de cotas para formação do Grupo {0}.", + "reset__number_of_shares_info": "= nº de listas de palavras únicas usadas no backup.", + "reset__one_share": "1 cota", + "reset__only_one_share_will_be_created": "Somente uma cota será criada.", + "reset__recovery_seed_title": "Frase-semente rec.", + "reset__recovery_share_title_template": "Nº rec. share {0}", + "reset__repeat_for_all_shares": "Repita para todas as cotas.", + "reset__required_number_of_groups": "O número necessário de grupos para recuperação.", + "reset__select_correct_word": "Selecione a palavra correta para cada posição.", + "reset__select_word_template": "Selec. palavra {0}", + "reset__select_word_x_of_y_template": "Selec. {0} de {1}:", + "reset__set_it_to_count_template": "Defina-a para {0} e você precisará ", + "reset__share_checked_successfully_template": "Nº Recovery share {0} verificada.", + "reset__share_words_title": "Backup padrão", + "reset__slip39_checklist_num_groups": "Número de grupos", + "reset__slip39_checklist_num_groups_x_template": "Número de grupos: {0}", + "reset__slip39_checklist_num_shares": "Número de cotas", + "reset__slip39_checklist_set_num_groups": "Definir nº de grupos", + "reset__slip39_checklist_set_num_shares": "Definir nº de cotas", + "reset__slip39_checklist_set_sizes": "Definir tamanhos e limites", + "reset__slip39_checklist_set_sizes_longer": "Definir tamanho e limite para cada grupo", + "reset__slip39_checklist_set_threshold": "Definir limite", + "reset__slip39_checklist_title": "Lista ver. backup", + "reset__slip39_checklist_write_down": "Anote e verifique todas as cotas", + "reset__slip39_checklist_write_down_recovery": "Anote e verifique todas as recovery shares", + "reset__the_threshold_sets_the_number_of_shares": "O limite define o número de cotas ", + "reset__threshold_info": "= nº mín. listas de palavras únicas usadas para recup. carteira.", + "reset__title_backup_is_done": "Backup concluído", + "reset__title_create_wallet": "Criar carteira", + "reset__title_create_wallet_shamir": "Criar carteira (shamir wallet)", + "reset__title_group_threshold": "Limite do grupo", + "reset__title_number_of_groups": "Número de grupos", + "reset__title_number_of_shares": "Número de cotas", + "reset__title_set_group_threshold": "Def. limite do grupo", + "reset__title_set_number_of_groups": "Definir número de grupos", + "reset__title_set_number_of_shares": "Definir número de cotas", + "reset__title_set_threshold": "Definir limite", + "reset__title_shamir_backup": "Backup de multi-cotas", + "reset__to_form_group_template": "para formar um Grupo {0}.", + "reset__tos_link": "trezor.io/tos", + "reset__total_number_of_shares_in_group_template": "Defina o número total de cotas no Grupo {0}.", + "reset__use_your_backup": "Use seu backup quando precisar recuperar sua carteira.", + "reset__words_may_repeat": "As palavras podem repetir.", + "reset__write_down_words_template": "Escreva todas as {0} palavras em ordem.", + "reset__wrong_word_selected": "Palavra errada selecionada!", + "reset__you_need_one_share": "Para recuperação, você precisa de 1 cota.", + "reset__your_backup_is_done": "Backup concluído.", + "ripple__confirm_tag": "Confirmar etiqueta", + "ripple__destination_tag_template": "Etiqueta de destino:\n{0}", + "rotation__change_template": "Deseja alterar a rotação do dispositivo para {0}?", + "rotation__east": "leste", + "rotation__north": "norte", + "rotation__south": "sul", + "rotation__title_change": "Alterar rotação", + "rotation__west": "oeste", + "safety_checks__approve_unsafe_always": "O Trezor permitirá aprovação de cotas não seguras.", + "safety_checks__approve_unsafe_temporary": "O Trezor permitirá temporariamente aprovação de cotas não seguras.", + "safety_checks__enforce_strict": "Deseja mesmo aplicar verificações de segurança rigorosas (recomendado)?", + "safety_checks__title": "Verific. segurança", + "safety_checks__title_safety_override": "Sobrep. segurança", + "sd_card__all_data_will_be_lost": "Todos os dados no cartão SD serão perdidos.", + "sd_card__card_required": "Cartão SD necessário.", + "sd_card__disable": "Deseja mesmo remover a proteção do cartão SD do seu dispositivo?", + "sd_card__disabled": "Você desativou a proteção do SD com sucesso.", + "sd_card__enable": "Deseja mesmo proteger seu dispositivo com proteção de cartão SD?", + "sd_card__enabled": "Você ativou a proteção SD com sucesso.", + "sd_card__error": "Erro no cartão SD", + "sd_card__format_card": "Formatar cartão SD", + "sd_card__insert_correct_card": "Insira o cartão SD correto para este dispositivo.", + "sd_card__please_insert": "Insira seu cartão SD.", + "sd_card__please_unplug_and_insert": "Desconecte o dispositivo e insira seu cartão SD.", + "sd_card__problem_accessing": "Ocorreu um problema ao acessar o cartão SD.", + "sd_card__refresh": "Deseja mesmo substituir o segredo do cartão SD atual por um novo gerado?", + "sd_card__refreshed": "Você atualizou a proteção SD com sucesso.", + "sd_card__restart": "Deseja reiniciar o Trezor no modo bootloader?", + "sd_card__title": "Prot. cartão SD", + "sd_card__title_problem": "Prob. cartão SD", + "sd_card__unknown_filesystem": "Sistema de arquivos desconhecido.", + "sd_card__unplug_and_insert_correct": "Desconecte o dispositivo e insira o cartão SD correto.", + "sd_card__use_different_card": "Use outro ou formate o cartão SD para sistema de arquivos FAT32.", + "sd_card__wanna_format": "Deseja mesmo formatar o cartão SD?", + "sd_card__wrong_sd_card": "Cartão SD incorreto.", + "send__address_path": "caminho do endereço", + "send__confirm_sending": "Quantia de envio", + "send__from_multiple_accounts": "Envio de múltiplas contas.", + "send__including_fee": "Incluindo taxa:", + "send__maximum_fee": "Taxa máxima:", + "send__receiving_to_multisig": "Recebendo para um endereço multisig.", + "send__title_confirm_sending": "Confirmar envio", + "send__title_joint_transaction": "Transação conjunta", + "send__title_receiving_to": "Recebendo para", + "send__title_sending": "Envio", + "send__title_sending_amount": "Quantia de envio", + "send__title_sending_to": "Enviando para", + "send__to_the_total_amount": "Até a quantia total:", + "send__total_amount": "Quantia total:", + "send__transaction_id": "ID da transação:", + "send__you_are_contributing": "Você está contribuindo:", + "share_words__words_in_order": " palavras em ordem.", + "share_words__wrote_down_all": "Eu anotei tudo ", + "sign_message__bytes_template": "{0} bytes", + "sign_message__confirm_address": "End. assinatura", + "sign_message__confirm_message": "Confirmar mensagem", + "sign_message__message_size": "Tam. mensagem:", + "sign_message__verify_address": "Verificar endereço", + "solana__account_index": "Índice da conta", + "solana__associated_token_account": "Conta de token associada", + "solana__confirm_multisig": "Confirmar multisig", + "solana__expected_fee": "Taxa esperada", + "solana__instruction_accounts_template": "A instrução contém {0} contas e seus dados têm {1} bytes.", + "solana__instruction_data": "Dados de instrução", + "solana__instruction_is_multisig": "A instrução a seguir é uma instrução multisig.", + "solana__is_provided_via_lookup_table_template": "{0} é fornecido por meio de uma tabela de referência.", + "solana__lookup_table_address": "Pesquisar endereço da tabela de referência", + "solana__multiple_signers": "Múltiplos signatários", + "solana__token_address": "Endereço de token", + "solana__transaction_contains_unknown_instructions": "A transação contém instruções desconhecidas.", + "solana__transaction_requires_x_signers_template": "A transação exige {0} signatários, o que aumenta a taxa.", + "stellar__account_merge": "Fusão de contas", + "stellar__account_thresholds": "Limites da conta", + "stellar__add_signer": "Adicionar signatário", + "stellar__add_trust": "Adicionar confiança", + "stellar__all_will_be_sent_to": "Todos os XLM serão enviados para:", + "stellar__allow_trust": "Permitir confiança", + "stellar__asset": "Ativo", + "stellar__balance_id": "ID do saldo", + "stellar__bump_sequence": "Sequência de resposta", + "stellar__buying": "Compra:", + "stellar__claim_claimable_balance": "Resgatar saldo resgatável", + "stellar__clear_data": "Limpar dados", + "stellar__clear_flags": "Limpar sinalizadores", + "stellar__confirm_issuer": "Confirmar emissor", + "stellar__confirm_memo": "Confirmar memo/etiqueta", + "stellar__confirm_network": "Confirmar rede", + "stellar__confirm_operation": "Confirmar operação", + "stellar__confirm_stellar": "Confirmar Stellar", + "stellar__confirm_timebounds": "Confirmar limites de tempo", + "stellar__create_account": "Criar conta", + "stellar__debited_amount": "Quantia debitada", + "stellar__delete": "Excluir", + "stellar__delete_passive_offer": "Excluir oferta passiva", + "stellar__delete_trust": "Excluir confiança", + "stellar__destination": "Destino:", + "stellar__exchanges_require_memo": "Importante: Muitas exchanges exigem um(a) memo/etiqueta ao depositar", + "stellar__final_confirm": "Confirmação final", + "stellar__hash": "Hash:", + "stellar__high": "Alta:", + "stellar__home_domain": "Domínio inicial", + "stellar__inflation": "Inflação", + "stellar__initial_balance": "Saldo inicial", + "stellar__initialize_signing_with": "Inicialize a assinatura com", + "stellar__issuer_template": "emissor {0}:", + "stellar__key": "Chave:", + "stellar__limit": "Limite:", + "stellar__low": "Baixa:", + "stellar__master_weight": "Peso principal:", + "stellar__medium": "Média:", + "stellar__new_offer": "Nova oferta", + "stellar__new_passive_offer": "Nova oferta passiva", + "stellar__no_memo_set": "Nenhum(a) memo/etiqueta definido(a)!", + "stellar__no_restriction": "[sem restrição]", + "stellar__on_network_template": "A transação está em {0}", + "stellar__path_pay": "Pagamento por caminho", + "stellar__path_pay_at_least": "Pagamento por caminho pelo menos", + "stellar__pay": "Pagamento:", + "stellar__pay_at_most": "Pagar no máximo:", + "stellar__preauth_transaction": "Transação de pré-autorização:", + "stellar__price_per_template": "Preço por {0}:", + "stellar__private_network": "rede privada", + "stellar__remove_signer": "Remover signatário", + "stellar__revoke_trust": "Revogar confiança", + "stellar__selling": "Venda:", + "stellar__set_data": "Definir dados", + "stellar__set_flags": "Definir sinalizadores", + "stellar__set_sequence_to_template": "Definir sequência para {0}?", + "stellar__sign_tx_count_template": "Assinar esta transação composta de {0}", + "stellar__sign_tx_fee_template": "e pagar {0}\nde taxa?", + "stellar__source_account": "Conta de origem:", + "stellar__testnet_network": "rede testnet", + "stellar__trusted_account": "Conta confiável", + "stellar__update": "Atualizar", + "stellar__valid_from": "Válido de (UTC)", + "stellar__valid_to": "Válido até (UTC)", + "stellar__value_sha256": "Valor (SHA-256):", + "stellar__wanna_clean_value_key_template": "Deseja limpar a chave de valor {0}?", + "stellar__your_account": " sua conta", + "storage_msg__processing": "Processando", + "storage_msg__starting": "Iniciando", + "storage_msg__verifying_pin": "Verificando PIN", + "storage_msg__wrong_pin": "PIN incorreto", + "tezos__baker_address": "Endereço Baker:", + "tezos__balance": "Saldo:", + "tezos__ballot": "Votação:", + "tezos__confirm_delegation": "Confirmar delegação", + "tezos__confirm_origination": "Confirmar origem", + "tezos__delegator": "Delegante:", + "tezos__proposal": "Proposta", + "tezos__register_delegate": "Registrar delegante", + "tezos__remove_delegation": "Remover delegante", + "tezos__submit_ballot": "Enviar voto", + "tezos__submit_proposal": "Enviar proposta", + "tezos__submit_proposals": "Enviar propostas", + "tutorial__did_you_know": "Você sabia?", + "tutorial__first_wallet": "A Trezor Model One, criado em 2013,\nfoi a primeira carteira de hardware do mundo.", + "tutorial__get_started": "Vamos começar!", + "tutorial__lets_begin": "Saiba como usar e navegar neste dispositivo com facilidade.", + "tutorial__menu": "Encontre ações e opções específicas de contexto no menu.", + "tutorial__middle_click": "Pressione ambos os botões esquerdo e direito ao mesmo tempo\nhora de confirmar.", + "tutorial__press_and_hold": "Mantenha pressionado o botão direito para\naprovar operações importantes.", + "tutorial__ready_to_use": "Seu Tezor já está pronto\npara ser usado.", + "tutorial__ready_to_use_safe5": "Você está pronto para começar a usar o dispositivo!", + "tutorial__restart_tutorial": "Reiniciar tutorial", + "tutorial__scroll_down": "Pressione lado direito para rolar o texto quando não couber na tela.\n\rPressione o botão esquerdo para rolar para cima.", + "tutorial__sure_you_want_skip": "Deseja\npular o tutorial?", + "tutorial__swipe_up_and_down": "Deslize para cima e para baixo\npara se movimentar pelas telas.", + "tutorial__title_easy_navigation": "Fácil navegação", + "tutorial__title_handy_menu": "Menu prático", + "tutorial__title_hello": "Olá", + "tutorial__title_hold": "Mantenha pressionado para confirmar ações importantes", + "tutorial__title_lets_begin": "Vamos começar", + "tutorial__title_screen_scroll": "Rolar tela", + "tutorial__title_skip": "Pular tutorial", + "tutorial__title_tutorial_complete": "Tutorial concluído", + "tutorial__title_well_done": "Muito bem!", + "tutorial__use_trezor": "Use o Trezor, clicando\nnos botões esquerdo e direito.\n\rContinue com o direito.", + "tutorial__welcome_press_right": "Bem-vindo(a) ao Tezor. Pressione o lado direito para continuar.", + "u2f__get": "Aumentar e recuperar o contador U2F?", + "u2f__set_template": "Def. contador U2F para {0}?", + "u2f__title_get": "Obter contador U2F", + "u2f__title_set": "Def contador U2F", + "wipe__info": "Todos os dados serão apagados.", + "wipe__title": "Limpar dispositivo", + "wipe__want_to_wipe": "Deseja mesmo limpar o dispositivo?\n", + "wipe_code__change": "Alterar código de limpeza?", + "wipe_code__changed": "O código de limpeza foi alterado.", + "wipe_code__diff_from_pin": "O código de limpeza deve ser diferente do seu PIN.", + "wipe_code__disabled": "Código de limpeza desativado.", + "wipe_code__enabled": "Código de limpeza ativado.", + "wipe_code__enter_new": "Inserir novo cód. limp.", + "wipe_code__info": "O cód. limpeza pode apagar todos os dados deste dispositivo.", + "wipe_code__invalid": "Cód. limpeza inválido", + "wipe_code__mismatch": "Cód. limpeza não coincidem.", + "wipe_code__reenter": "Reins. cód. limpeza", + "wipe_code__reenter_to_confirm": "Reins. cód. limpeza para confirmar.", + "wipe_code__title_check": "Verif. cód. limpeza", + "wipe_code__title_invalid": "Código de limpeza inválido", + "wipe_code__title_settings": "Config. cód. limpeza", + "wipe_code__turn_off": "Desativar a proteção do código de limpeza?", + "wipe_code__turn_on": "Ativar a proteção do código de limpeza?", + "wipe_code__wipe_code_mismatch": "Cód. limp. não coincide", + "word_count__title": "Número de palavras", + "words__account": "Conta", + "words__account_colon": "Conta:", + "words__address": "Endereço", + "words__amount": "Quantia", + "words__are_you_sure": "Tem certeza?", + "words__array_of": "Matriz de", + "words__blockhash": "Blockhash", + "words__buying": "Compra", + "words__confirm": "Confirmar", + "words__confirm_fee": "Confirmar taxa", + "words__contains": "Contém", + "words__continue_anyway": "Continuar?", + "words__continue_with": "Continuar com", + "words__error": "Erro", + "words__fee": "Taxa", + "words__from": "de", + "words__keep_it_safe": "Mantenha-se em segurança!", + "words__know_what_your_doing": "Prossiga somente se você souber o que está fazendo!", + "words__my_trezor": "Meu Tezor", + "words__no": "Sem", + "words__outputs": "saídas", + "words__please_check_again": "Verifique novamente", + "words__please_try_again": "Tente novamente", + "words__really_wanna": "Deseja mesmo", + "words__recipient": "Destinatário", + "words__sign": "Assinar", + "words__signer": "Signatário", + "words__title_check": "Verificar", + "words__title_group": "Grupo", + "words__title_information": "Informações", + "words__title_remember": "Lembre-se", + "words__title_share": "Cota", + "words__title_shares": "Cotas", + "words__title_success": "Sucesso", + "words__title_summary": "Resumo", + "words__title_threshold": "Limite", + "words__unknown": "Desconhecido", + "words__warning": "Aviso", + "words__writable": "Gravável", + "words__yes": "Sim" + } +} diff --git a/core/translations/signatures.json b/core/translations/signatures.json index bb7706ac47..6b3df05946 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "23cd34c69ea6414849d484a7a9cf990f245d4522371fbdad909807d2bd8efe17", - "datetime": "2024-09-03T08:33:15.680225", - "commit": "4002c934c0dff69ded4247bee4c92bc6642dc0ac" + "merkle_root": "4553280c7d6f5a19fd2bd47ced62fbf70606394781d473355aa61ac0e1e42338", + "datetime": "2024-09-03T16:11:12.734773", + "commit": "423f1597941d5354b2f941e04ad5e27003431067" }, "history": [ { diff --git a/core/translations/tr.json b/core/translations/tr.json new file mode 100644 index 0000000000..3df45b2f54 --- /dev/null +++ b/core/translations/tr.json @@ -0,0 +1,915 @@ +{ + "fonts": { + "T2B1": { + "1_FONT_NORMAL": "font_pixeloperator_regular_8_tr.json", + "2_FONT_BOLD": "font_pixeloperator_bold_8_tr.json", + "3_FONT_MONO": "font_pixeloperatormono_regular_8_tr.json", + "4_FONT_BIG": "font_unifont_regular_16_tr.json", + "5_FONT_DEMIBOLD": "font_unifont_bold_16_tr.json", + "6_FONT_NORMAL_UPPER": "font_pixeloperator_regular_8_upper_tr.json", + "7_FONT_BOLD_UPPER": "font_pixeloperator_bold_8_upper_tr.json", + "8_FONT_SUB": null + }, + "T2T1": { + "1_FONT_NORMAL": "font_tthoves_regular_21_tr.json", + "2_FONT_BOLD": null, + "3_FONT_MONO": "font_robotomono_medium_20_tr.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_tthoves_demibold_21_tr.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": "font_tthoves_bold_17_upper_tr.json", + "8_FONT_SUB": null + }, + "T3T1": { + "1_FONT_NORMAL": "font_ttsatoshi_demibold_21_tr.json", + "2_FONT_BOLD": "font_ttsatoshi_demibold_21_tr.json", + "3_FONT_MONO": "font_robotomono_medium_21_tr.json", + "4_FONT_BIG": null, + "5_FONT_DEMIBOLD": "font_ttsatoshi_demibold_21_tr.json", + "6_FONT_NORMAL_UPPER": null, + "7_FONT_BOLD_UPPER": null, + "8_FONT_SUB": "font_ttsatoshi_demibold_18_tr.json" + } + }, + "header": { + "language": "tr-TR", + "version": "2.8.2" + }, + "translations": { + "addr_mismatch__contact_support_at": "Lütfen Trezor support ile iletişime geçin:", + "addr_mismatch__key_mismatch": "Anahtar uyumsuz mu?", + "addr_mismatch__mismatch": "Adres uyumsuz mu?", + "addr_mismatch__support_url": "trezor.io/support", + "addr_mismatch__wrong_derivation_path": "Seçilen hesap için türetme yolu yanlış.", + "addr_mismatch__xpub_mismatch": "XPUB uyumsuz mu?", + "address__public_key": "Genel anahtar", + "address__title_cosigner": "Müşterek i̇mzalayan", + "address__title_receive_address": "Alma adresi̇", + "address__title_yours": "Si̇zi̇nki̇", + "address_details__derivation_path": "Türetme yolu:", + "address_details__title_receive_address": "Alma adresi̇", + "address_details__title_receiving_to": "Alici", + "authenticate__confirm_template": "Bağlı bilgisayarın {0} doğrulamasına izin verilsin mi?", + "authenticate__header": "Cihaz kimliğini doğrula", + "auto_lock__change_template": "{0} hareketsiz kalınca Trezor'unuz otomatik kilitlensin mi?", + "auto_lock__title": "Oto-ki̇li̇t süresi̇", + "backup__can_back_up_anytime": "Trezor'unuzu istediğiniz zaman bir kez yedekleyebilirsiniz.", + "backup__it_should_be_backed_up": "Yeni cüzdanınızı şimdi yedeklemelisiniz.", + "backup__it_should_be_backed_up_now": "Şimdi yedeklenmeli!", + "backup__new_wallet_created": "Yeni cüzdan oluşturuldu.\n", + "backup__new_wallet_successfully_created": "Yeni cüzdan başarıyla oluşturuldu.", + "backup__recover_anytime": "Cüzdanı kurtarmak için yedeklemenizi kullanabilirsiniz.", + "backup__title_backup_wallet": "Cüzdani yedekle", + "backup__title_skip": "Yedeklemeyi̇ atla", + "backup__want_to_skip": "Yedeklemeyi atlamak istediğinizden emin misiniz?", + "binance__buy": "Al", + "binance__confirm_cancel": "İptal işlemini onayla", + "binance__confirm_input": "Girdiyi onayla", + "binance__confirm_order": "Emri onayla", + "binance__confirm_output": "Çıktıyı onayla", + "binance__order_id": "Emir kimliği:", + "binance__pair": "Çift:", + "binance__price": "Fiyat:", + "binance__quantity": "Miktar:", + "binance__sell": "Sat", + "binance__sender_address": "Gönderen adresi:", + "binance__side": "Taraf:", + "bitcoin__commitment_data": "Taahhüt verileri:", + "bitcoin__confirm_locktime": "Kilit süresini onayla", + "bitcoin__create_proof_of_ownership": "Sahiplik kanıtı oluşt. istiyor musunuz?", + "bitcoin__high_mining_fee_template": "Madencilik ücreti\n{0}\naşırı yüksek.", + "bitcoin__locktime_no_effect": "Kilit süresi ayarlandı ancak hiçbir etkisi yok.", + "bitcoin__locktime_set_to": "Kilit süresi ayarı:", + "bitcoin__locktime_set_to_blockheight": "Kilit süresi blok yüksekliğine ayarlı:", + "bitcoin__lot_of_change_outputs": "Çok fazla çıktı değişikliği var.", + "bitcoin__multiple_accounts": "Birden fazla hesap", + "bitcoin__new_fee_rate": "Yeni ücret oranı:", + "bitcoin__simple_send_of": "Kolay gönderim", + "bitcoin__ticket_amount": "Bilet tutarı:", + "bitcoin__title_confirm_details": "Ayrintilari onayla", + "bitcoin__title_finalize_transaction": "İşlemi̇ sonlandir", + "bitcoin__title_high_mining_fee": "Yüksek madnclk ücrt", + "bitcoin__title_meld_transaction": "Meld i̇şlemleri̇", + "bitcoin__title_modify_amount": "Tutari deği̇şti̇r", + "bitcoin__title_payjoin": "Payjoin", + "bitcoin__title_proof_of_ownership": "Sahi̇pli̇k kaniti", + "bitcoin__title_purchase_ticket": "Bi̇let satin al", + "bitcoin__title_update_transaction": "İşlemi̇ güncelle", + "bitcoin__unknown_path": "Bilinmeyen yol", + "bitcoin__unknown_transaction": "Bilinmeyen işlem", + "bitcoin__unusually_high_fee": "Aşırı derecede yüksek ücret.", + "bitcoin__unverified_external_inputs": "İşlem doğrulanmamış harici girdiler içeriyor.", + "bitcoin__valid_signature": "İmza geçerlidir.", + "bitcoin__voting_rights": "Şunlar için oy hakkı:", + "brightness__title": "Parlaklığı ayarla", + "buttons__abort": "Durdur", + "buttons__access": "Eri̇ş", + "buttons__again": "Tekrar", + "buttons__allow": "İzi̇n ver", + "buttons__back": "Geri̇", + "buttons__back_up": "Yedekle", + "buttons__cancel": "İptal et", + "buttons__change": "Deği̇şti̇r", + "buttons__check": "Kontrol et", + "buttons__check_again": "Tekrar kntrl et", + "buttons__close": "Kapat", + "buttons__confirm": "Onayla", + "buttons__continue": "Devam", + "buttons__details": "Ayrintilar", + "buttons__enable": "Etki̇nleşti̇r", + "buttons__enter": "Gi̇r", + "buttons__enter_share": "Paylaşim gi̇r", + "buttons__export": "Dişa aktar", + "buttons__format": "Bi̇çi̇m", + "buttons__go_back": "Geri̇ gi̇t", + "buttons__hold_to_confirm": "Onay i̇çi̇n b.tut", + "buttons__info": "Bi̇lgi̇", + "buttons__install": "Yükle", + "buttons__more_info": "Daha faz. bi̇lgi̇", + "buttons__ok_i_understand": "Tamam, anladim", + "buttons__purchase": "Satin al", + "buttons__quit": "Çik", + "buttons__restart": "Yeni̇den başlat", + "buttons__retry": "Yeni̇den dene", + "buttons__select": "Seç", + "buttons__set": "Ayarla", + "buttons__show_all": "Tümünü göster", + "buttons__show_details": "Ayrntlri göster", + "buttons__show_words": "Keli̇me. göster", + "buttons__skip": "Atla", + "buttons__try_again": "Tekrar dene", + "buttons__turn_off": "Kapat", + "buttons__turn_on": "Aç", + "cardano__addr_base": "Baz", + "cardano__addr_enterprise": "İşletme", + "cardano__addr_legacy": "Eski", + "cardano__addr_pointer": "İşaretçi", + "cardano__addr_reward": "Ödül", + "cardano__address_no_staking": "adres - stake etme ödülü yok.", + "cardano__always_abstain": "Her zaman Çekimser", + "cardano__always_no_confidence": "Her zaman Güvensizlik", + "cardano__amount_burned_decimals_unknown": "Yakılan tutar (ondalık sayılar bilinmiyor):", + "cardano__amount_minted_decimals_unknown": "Basılan tutar (ondalık sayılar bilinmiyor):", + "cardano__amount_sent_decimals_unknown": "Gönderilen tutar (ondalık sayılar bilinmiyor):", + "cardano__anonymous_pool": "Havuzda meta veri yok (anonim havuz)", + "cardano__asset_fingerprint": "Varlık parmak izi:", + "cardano__auxiliary_data_hash": "Yardımcı veri karması:", + "cardano__block": "Blok", + "cardano__catalyst": "Katalizör", + "cardano__certificate": "Sertifika", + "cardano__change_output": "Çıktıyı değiştir", + "cardano__check_all_items": "Tüm öğeleri dikkatlice kontrol edin.", + "cardano__choose_level_of_details": "Ayrıntı seviyesini seçin:", + "cardano__collateral_input_id": "Teminat girdi kimliği:", + "cardano__collateral_input_index": "Teminat girdi dizini:", + "cardano__collateral_output_contains_tokens": "Teminat iadesi çıktısı tokenlar içeriyor.", + "cardano__collateral_return": "Teminat iadesi", + "cardano__confirm": "Onayla:", + "cardano__confirm_signing_stake_pool": "Sahip olarak stake havuzu kaydını imzaladığınızı onaylayın.", + "cardano__confirm_transaction": "İşlemi onayla", + "cardano__confirming_a_multisig_transaction": "Çoklu imza işlemini onaylama.", + "cardano__confirming_a_plutus_transaction": "Bir Plutus işlemini onaylama.", + "cardano__confirming_pool_registration": "Sahip olarak havuz kaydını onaylama.", + "cardano__confirming_transction": "Bir işlemi onaylama.", + "cardano__cost": "Maliyet", + "cardano__credential_mismatch": "Kimlik bilgileri, ödeme kimlik bilgileriyle uyumlu değil.", + "cardano__datum_hash": "Veri karması:", + "cardano__delegating_to": "Yetkilendirilen:", + "cardano__delegating_to_key_hash": "Anahtar karmasına delege etme:", + "cardano__delegating_to_script": "Komut dosyasına delege etme:", + "cardano__deposit": "Depozito:", + "cardano__for_account_and_index_template": "{0} hesabı ve {1} dizini için:", + "cardano__for_account_template": "{0} hesabı için:", + "cardano__for_key_hash": "anahtar karması için:", + "cardano__for_script": "komut dosyası için:", + "cardano__inline_datum": "Satır içi veri", + "cardano__input_id": "Girdi kimliği:", + "cardano__input_index": "Girdi dizini:", + "cardano__intro_text_change": "Aşağıdaki adres bir değişiklik adresidir. Onun", + "cardano__intro_text_owned_by_device": "Aşağıdaki adres bu cihaza aittir. Onun", + "cardano__intro_text_registration_payment": "Oy anahtarı kayıt ödeme adresi bu cihaza aittir. Onun", + "cardano__key_hash": "anahtar karması", + "cardano__margin": "Marj", + "cardano__multisig_path": "çoklu imza yolu", + "cardano__nested_scripts_template": "{0} iç içe komut dosyaları içeriyor.", + "cardano__network": "Ağ:", + "cardano__no_output_tx": "İşlemde çıktı yok, ağ doğrulanamaz.", + "cardano__nonce": "Tek seferlik:", + "cardano__other": "diğer", + "cardano__path": "yol", + "cardano__pledge": "Rehin", + "cardano__pointer": "işaretçi", + "cardano__policy_id": "Politika kimliği:", + "cardano__pool_metadata_hash": "Havuz meta veri karması:", + "cardano__pool_metadata_url": "Havuz meta veri url'si:", + "cardano__pool_owner": "Havuz sahibi:", + "cardano__pool_reward_account": "Havuz ödül hesabı:", + "cardano__reference_input_id": "Referans girdi kimliği:", + "cardano__reference_input_index": "Referans girdi dizini:", + "cardano__reference_script": "Referans komut dosyası", + "cardano__required_signer": "İmzalayan gerekli", + "cardano__reward": "ödül", + "cardano__reward_address": "Adres bir ödül adresidir.", + "cardano__reward_eligibility_warning": "Uyarı: Bu adres bir ödeme adresi değildir, ödüller için uygun değildir.", + "cardano__rewards_go_to": "Ödüller şu adrese gider:", + "cardano__script": "komut dosyası", + "cardano__script_all": "Tümü", + "cardano__script_any": "Herhangi biri", + "cardano__script_data_hash": "Komut dosyası veri karması:", + "cardano__script_hash": "Komut dosyası karması:", + "cardano__script_invalid_before": "Şundan önce geçersiz:", + "cardano__script_invalid_hereafter": "Bundan sonra geçersiz", + "cardano__script_key": "Anahtar", + "cardano__script_n_of_k": "K'nın N'si", + "cardano__script_reward": "komut dosyası ödülü", + "cardano__sending": "Gönderim", + "cardano__show_simple": "Basit Göster", + "cardano__sign_tx_path_template": "İşlemi {0} ile imzala:", + "cardano__stake_delegation": "Stake yetkilendirmesi", + "cardano__stake_deregistration": "Stake anahtarı kaydını silme", + "cardano__stake_pool_registration": "Stake havuzu kaydı", + "cardano__stake_pool_registration_pool_id": "Stake havuzu kaydı\nHavuz kimliği:", + "cardano__stake_registration": "Stake anahtarı kaydı", + "cardano__staking_key_for_account": "Hesap için stake anahtarı", + "cardano__to_pool": "havuza:", + "cardano__token_minting_path": "token basma yolu", + "cardano__total_collateral": "Toplam teminat:", + "cardano__transaction": "İşlem", + "cardano__transaction_contains_minting_or_burning": "İşlem, tokenların basılmasını veya yakılmasını içeriyor.", + "cardano__transaction_contains_script_address_no_datum": "Aşağıdaki işlem çıktısı bir komut dosyası adresi içeriyor ancak herhangi bir veri içermiyor.", + "cardano__transaction_fee": "İşlem ücreti:", + "cardano__transaction_id": "İşlem kimliği:", + "cardano__transaction_no_collateral_input": "İşlem hiçbir teminat girdisi içermiyor. Plutus komut dosyası çalıştırılamayacak.", + "cardano__transaction_no_script_data_hash": "İşlem hiçbir komut dosyası veri karması içermiyor. Plutus komut dosyası çalıştırılamayacak.", + "cardano__transaction_output_contains_tokens": "Aşağıdaki işlem çıktısı tokenlar içeriyor.", + "cardano__ttl": "TTL:", + "cardano__unknown_collateral_amount": "Bilinmeyen teminat tutarı.", + "cardano__unusual_path": "Yol olağan dışı.", + "cardano__valid_since": "Şu tarihten beri geçerli:", + "cardano__verify_script": "Komut dosyasını doğrula", + "cardano__vote_delegation": "Oy delegasyonu", + "cardano__vote_key_registration": "Oylama anahtarı kaydı (CIP-36)", + "cardano__vote_public_key": "Genel anahtarı oyla:", + "cardano__voting_purpose": "Oylama amacı:", + "cardano__warning": "Uyarı", + "cardano__weight": "Ağırlık:", + "cardano__withdrawal_for_address_template": "{0} adresi için para çekme işlemini onaylayın:", + "cardano__x_of_y_signatures_template": "{1} üzerinden {0} imza gerektirir.", + "coinjoin__access_account": "Coinjoin hesabınıza erişmek mi istiyorsunuz?", + "coinjoin__do_not_disconnect": "Trezor bağlantısını kesmeyin!", + "coinjoin__max_mining_fee": "Maks. madencilik ücreti", + "coinjoin__max_rounds": "Maks. tur", + "coinjoin__title": "Coinjoin'e i̇zi̇n ver", + "coinjoin__title_do_not_disconnect": "Trezor bağlantisini kesmeyi̇n!", + "coinjoin__title_progress": "Coinjoin sürüyor", + "coinjoin__waiting_for_others": "Diğerleri bekleniyor", + "confirm_total__fee_rate": "Ücret oranı:", + "confirm_total__sending_from_account": "Gönderen hesap:", + "confirm_total__title_fee": "Ücret bi̇lgi̇leri̇", + "confirm_total__title_sending_from": "Gönderen", + "debug__loading_seed": "Tohum yükleme", + "debug__loading_seed_not_recommended": "Özel tohum yüklenmesi önerilmez.", + "device_name__change_template": "Cihaz adı {0} olarak değiştirilsin mi?", + "device_name__title": "Ci̇haz adi", + "entropy__send": "Entropi göndermek istiyor musunuz?", + "entropy__title": "İç entropi̇", + "entropy__title_confirm": "Entropi̇yi̇ onayla", + "eos__about_to_sign_template": "{0} imzalamak üzeresiniz.", + "eos__action_name": "Eylem Adı:", + "eos__arbitrary_data": "Keyfi veri", + "eos__buy_ram": "RAM satın al", + "eos__bytes": "Bayt:", + "eos__cancel_vote": "Oylamayı iptal et", + "eos__checksum": "Sağlama toplamı:", + "eos__code": "Kod:", + "eos__contract": "Sözleşme:", + "eos__cpu": "CPU:", + "eos__creator": "Oluşturan:", + "eos__delegate": "Yetkilendir", + "eos__delete_auth": "Kimlik Doğrulamayı Sil", + "eos__from": "Kimden:", + "eos__link_auth": "Bağlantı Kimlik Doğrulaması", + "eos__memo": "Bilgi Notu", + "eos__name": "Ad:", + "eos__net": "Net:", + "eos__new_account": "Yeni hesap", + "eos__owner": "Sahip:", + "eos__parent": "Ana şirket:", + "eos__payer": "Ödeyen:", + "eos__permission": "İzin:", + "eos__proxy": "Vekil:", + "eos__receiver": "Alıcı:", + "eos__refund": "Para iadesi", + "eos__requirement": "Gereklilik:", + "eos__sell_ram": "RAM sat", + "eos__sender": "Gönderen:", + "eos__sign_transaction": "İşlemi imzala", + "eos__threshold": "Eşik:", + "eos__to": "Kime:", + "eos__transfer": "Transfer:", + "eos__type": "Tür:", + "eos__undelegate": "Yetkilendirmeyi Kaldır", + "eos__unlink_auth": "Kimlik Doğrulama Bağlantısını Kaldır", + "eos__update_auth": "Kimlik Doğrulamayı Güncelle", + "eos__vote_for_producers": "Üreticiler için oy ver", + "eos__vote_for_proxy": "Vekil için oy ver", + "eos__voter": "Oy veren:", + "ethereum__amount_sent": "Gönderilen tutar:", + "ethereum__contract": "Sözleşme:", + "ethereum__data_size_template": "Boyut: {0} bayt", + "ethereum__gas_limit": "Gaz sınırı:", + "ethereum__gas_price": "Gaz fiyatı:", + "ethereum__max_gas_price": "Maksimum gaz fiyatı:", + "ethereum__name_and_version": "Ad ve sürüm", + "ethereum__new_contract": "yeni sözleşme mi?", + "ethereum__no_message_field": "Mesaj alanı yok", + "ethereum__priority_fee": "Öncelik ücreti:", + "ethereum__show_full_array": "Tüm diziyi göster", + "ethereum__show_full_domain": "Tüm e. alanını göster", + "ethereum__show_full_message": "Tüm mesajı göster", + "ethereum__show_full_struct": "Tüm yapıyı göster", + "ethereum__sign_eip712": "EIP-712 yazılan veriler imzalansın mı?", + "ethereum__staking_claim": "Talep et", + "ethereum__staking_claim_address": "Talep adresi̇", + "ethereum__staking_claim_intro": "Everstake'ten ETH talep edilsin mi?", + "ethereum__staking_stake": "Stake et", + "ethereum__staking_stake_address": "Stake adresi̇", + "ethereum__staking_stake_intro": "Everstake'te ETH stake edilsin mi?", + "ethereum__staking_unstake": "Unstake et", + "ethereum__staking_unstake_intro": "Everstake'ten ETH unstake edilsin mi?", + "ethereum__title_confirm_data": "Veri̇leri̇ onayla", + "ethereum__title_confirm_domain": "Etki̇ alanini onayla", + "ethereum__title_confirm_message": "Mesaji onayla", + "ethereum__title_confirm_struct": "Yapiyi onayla", + "ethereum__title_confirm_typed_data": "Yzln veri̇yi̇ onayla", + "ethereum__title_signing_address": "İmza adresi̇", + "ethereum__units_template": "{0} birim", + "ethereum__unknown_token": "Bilinmeyen token", + "ethereum__valid_signature": "İmza geçerlidir.", + "experimental_mode__enable": "Deneysel özellikler etkinleştirilsin mi?", + "experimental_mode__only_for_dev": "Yalnızca geliştirme ve beta testleri için!", + "experimental_mode__title": "Deneysel mod", + "fido__already_registered": "Zaten kayıtlı", + "fido__device_already_registered": "Bu cihaz zaten bu uygulamaya kayıtlı.", + "fido__device_already_registered_with_template": "Bu cihaz zaten şuna kayıtlı: {0}.", + "fido__device_not_registered": "Bu cihaz bu uygulamaya kayıtlı değil.", + "fido__does_not_belong": "İçe aktarmaya çlştğnz kimlik bilgileri\nbu k. doğrulayıcıya ait değil.", + "fido__erase_credentials": "tüm bilgi silinsin mi?", + "fido__export_credentials": "Bu cihazda depolanan kimlik bilgileri dışa aktarılsın mı?", + "fido__not_registered": "Kayıtlı değil", + "fido__not_registered_with_template": "Bu cihaz şuna kayıtlı değil:\n{0}.", + "fido__please_enable_pin_protection": "Lütfen PIN korumasını etkinleştirin.", + "fido__title_authenticate": "FIDO2 k. doğrulama", + "fido__title_import_credential": "Bi̇lgi̇yi̇ i̇çe aktar", + "fido__title_list_credentials": "Bi̇lgi̇leri̇ li̇stele", + "fido__title_register": "FIDO2 kaydi", + "fido__title_remove_credential": "Bi̇lgi̇leri̇ kaldir", + "fido__title_reset": "FIDO2 sifirlama", + "fido__title_u2f_auth": "U2F k. doğrulama", + "fido__title_u2f_register": "U2F kaydi", + "fido__title_verify_user": "FIDO2 kul.doğrula", + "fido__unable_to_verify_user": "Kullanıcı doğrulanamıyor.", + "fido__wanna_erase_credentials": "Tüm bilgileri silmek istiyor musunuz?", + "firmware_update__title": "Belleni̇mi̇ güncelle", + "firmware_update__title_fingerprint": "Fw parmak i̇zi̇", + "homescreen__click_to_connect": "Bağlanmak için tıkla", + "homescreen__click_to_unlock": "Kilidi açmak için tıkla", + "homescreen__set_default": "Duvar kağıdı varsayılan görüntü olarak değiştirilsin mi?", + "homescreen__settings_subtitle": "Ayarlar", + "homescreen__settings_title": "Ana ekran", + "homescreen__title_backup_failed": "Yedekleme başarisiz", + "homescreen__title_backup_needed": "Yedekleme gerekli̇", + "homescreen__title_coinjoin_authorized": "Coinjoin'e i̇zn vrld", + "homescreen__title_experimental_mode": "Deneysel mod", + "homescreen__title_no_usb_connection": "Usb bağlantisi yok", + "homescreen__title_pin_not_set": "PIN ayarlanmadi", + "homescreen__title_seedless": "Tohumsuz", + "homescreen__title_set": "Ana ekrn değşsn mi̇?", + "inputs__back": "GERİ", + "inputs__cancel": "İPTAL ET", + "inputs__delete": "SİL", + "inputs__enter": "GİR", + "inputs__previous": "ÖNCEKİ", + "inputs__return": "GERİ DÖN", + "inputs__show": "GÖSTER", + "inputs__space": "YER", + "instructions__exit_tutorial": "Eğitimden çık", + "joint__title": "Ortak i̇şlem", + "joint__to_the_total_amount": "Toplam tutara:", + "joint__you_are_contributing": "Sağladığınız katkı:", + "language__change_to_template": "Dil {0} olarak değiştirilsin mi?", + "language__changed": "Dil başarıyla değiştirildi", + "language__progress": "Dil değiştirme", + "language__title": "Di̇l ayarlari", + "lockscreen__tap_to_connect": "Bağlanmak için dokun", + "lockscreen__tap_to_unlock": "Kilidi açmak için dokun", + "lockscreen__title_locked": "Ki̇li̇tli̇", + "lockscreen__title_not_connected": "Bağli deği̇l", + "misc__decrypt_value": "Değerin şifresini çöz", + "misc__encrypt_value": "Değeri şifrele", + "misc__title_suite_labeling": "Suite eti̇ketleme", + "modify_amount__decrease_amount": "Tutarı şu kadar azalt:", + "modify_amount__increase_amount": "Tutarı şu kadar artır:", + "modify_amount__new_amount": "Yeni tutar:", + "modify_amount__title": "Tutari deği̇şti̇r", + "modify_fee__decrease_fee": "Ücreti şu kadar azalt:", + "modify_fee__fee_rate": "Ücret oranı:", + "modify_fee__increase_fee": "Ücreti şu kadar artır:", + "modify_fee__new_transaction_fee": "Yeni işlem ücreti:", + "modify_fee__no_change": "Ücret değişmedi.\n", + "modify_fee__title": "Ücreti̇ deği̇şti̇r", + "modify_fee__transaction_fee": "İşlem ücreti:", + "monero__confirm_export": "Dışa aktarmayı onayla", + "monero__confirm_ki_sync": "Anahtar görüntüleri senkronizasyonunu onayla", + "monero__confirm_refresh": "Yenilemeyi onayla", + "monero__confirm_unlock_time": "Kilit açma süresini onayla", + "monero__hashing_inputs": "Girdileri karma hale getirme", + "monero__payment_id": "Ödeme kimliği", + "monero__postprocessing": "İşleme sonrası süreç gerçekleştiriliyor...", + "monero__processing": "İşleniyor...", + "monero__processing_inputs": "Girdileri işleme", + "monero__processing_outputs": "Çıktıları işleme", + "monero__signing": "İmzalanıyor...", + "monero__signing_inputs": "Girdileri imzalama", + "monero__unlock_time_set_template": "Bu işlem için kilit açma süresi şu şekilde ayarlandı: {0}", + "monero__wanna_export_tx_der": "tx_proof için tx_der'i gerçekten dışa aktarmak\nistiyor musunuz?", + "monero__wanna_export_tx_key": "tx_key'i gerçekten dışa aktarmak istiyor musunuz?", + "monero__wanna_export_watchkey": "Salt izlenebilir kimlik bilgilerini gerçekten dışa aktarmak istiyor musunuz?", + "monero__wanna_start_refresh": "Yenilemeyi başlatmak\nistiyor musunuz?", + "monero__wanna_sync_key_images": "Anahtar görüntülerini senkr.\netmek istiyor musunuz?", + "nem__absolute": "mutlak", + "nem__activate": "Etkinleştir", + "nem__add": "Ekle", + "nem__confirm_action": "Eylemi onayla", + "nem__confirm_address": "Adresi onayla", + "nem__confirm_creation_fee": "Oluşturma ücretini onayla", + "nem__confirm_mosaic": "Mozaiği onayla", + "nem__confirm_multisig_fee": "Çoklu imza ücretini onayla", + "nem__confirm_namespace": "Ad alanını onayla", + "nem__confirm_payload": "Ödemeyi onayla", + "nem__confirm_properties": "Özellikleri onayla", + "nem__confirm_rental_fee": "Kiralama ücretini onayla", + "nem__confirm_transfer_of": "Şunun transferini onayla:", + "nem__convert_account_to_multisig": "Hesap, çoklu imza hesabına dönüştürülsün mü?", + "nem__cosign_transaction_for": "Şunun için işlemi müşterek imzala:", + "nem__cosignatory": " müşterek imzalayan", + "nem__create_mosaic": "Mozaik oluştur", + "nem__create_namespace": "Ad alanı oluştur", + "nem__deactivate": "Devre dışı bırak", + "nem__decrease": "Azalt", + "nem__description": "Açıklama:", + "nem__divisibility_and_levy_cannot_be_shown": "Bilinmeyen mozaikler için bölünebilirlik ve harç gösterilemez", + "nem__encrypted": "Şifrelenmiş:", + "nem__final_confirm": "Son onay", + "nem__immutable": "değiştirilemez", + "nem__increase": "Artır", + "nem__initial_supply": "İlk arz:", + "nem__initiate_transaction_for": "Şunun için işlem başlat:", + "nem__levy_divisibility": "Harç bölünebilirliği:", + "nem__levy_fee": "Harç ücreti:", + "nem__levy_fee_of": "Şu mozaik harç ücretini onayla:", + "nem__levy_mosaic": "Harç mozaiği:", + "nem__levy_namespace": "Harç ad alanı:", + "nem__levy_recipient": "Harç alıcısı:", + "nem__levy_type": "Harç türü:", + "nem__modify_supply_for": "Şunun için arzı değiştir:", + "nem__modify_the_number_of_cosignatories_by": "Müşterek imzalayan sayısını şu şekilde değiştir: ", + "nem__mutable": "değiştirilebilir", + "nem__of": "/", + "nem__percentile": "yüzdelik dilim", + "nem__raw_units_template": "{0} ham birim", + "nem__remote_harvesting": " uzaktan hasat edilsin mi?", + "nem__remove": "Kaldır", + "nem__set_minimum_cosignatories_to": "Minimum müşterek imzalayan sayısını şu şekilde ayarla: ", + "nem__sign_tx_fee_template": "Bu işlem imzalansın\nve ağ ücreti için {0}\nödensin mi?", + "nem__supply_change": "Arz değişikliği", + "nem__supply_units_template": "{0} arzı {1} tam birime göre olsun mu?", + "nem__transferable": "Transfer edilebilir mi?", + "nem__under_namespace": "ad alanı altında", + "nem__unencrypted": "Şifrelenmemiş:", + "nem__unknown_mosaic": "Bilinmeyen mozaik!", + "passphrase__access_hidden_wallet": "G.cüzdana erişilsin mi?", + "passphrase__always_on_device": "Cihazda gerçekten her zaman parola girmek istiyor musunuz?", + "passphrase__from_host_not_shown": "Ana bilgisayarın sağladığı parola kullanılacak ancak cihaz ayarı nedeniyle görünmeyecek.", + "passphrase__hidden_wallet": "Gizli cüzdan", + "passphrase__hide": "Ana bilgisayardan gelen parola gizlensin mi?", + "passphrase__next_screen_will_show_passphrase": "Sonraki ekranda parola gösterilecektir.", + "passphrase__please_enter": "Lütfen parolanızı girin.", + "passphrase__revoke_on_device": "Cihaz ayarındaki parolayı iptal etmek istiyor musunuz?", + "passphrase__title_confirm": "Parolayi onayla", + "passphrase__title_enter": "Parola gi̇r", + "passphrase__title_hide": "Parolayi gi̇zle", + "passphrase__title_settings": "Parola ayarlari", + "passphrase__title_source": "Parola kaynaği", + "passphrase__turn_off": "Parola koruması kapatılsın mı?", + "passphrase__turn_on": "Parola koruması açılsın mı?", + "pin__change": "PIN kodu değiştirilsin mi?", + "pin__changed": "PIN kodu değiştirildi.", + "pin__cursor_will_change": "Gelişmiş güvenlik için girişler arasında imlecin konumu değişecektir.", + "pin__diff_from_wipe_code": "Yeni PIN kodu, silme kodunuzdan farklı olmalıdır.", + "pin__disabled": "PIN kodu koruması\nkapatıldı.", + "pin__enabled": "PIN kodu koruması\naçıldı.", + "pin__enter": "PIN kodu girin", + "pin__enter_new": "Yeni PIN kodu girin", + "pin__entered_not_valid": "Girmiş olduğunuz PIN kodu geçerli değil.", + "pin__info": "Bu cihaza erişmek için PIN kodu gerekir.", + "pin__invalid_pin": "Geçersiz PIN kodu", + "pin__last_attempt": "Son deneme", + "pin__mismatch": "Girilen PIN kodları uyumlu değil!", + "pin__pin_mismatch": "PIN kodu uyumsuzluğu", + "pin__please_check_again": "Lütfen tekrar kontrol edin.", + "pin__reenter_new": "Yeni PIN'i tekrar girin", + "pin__reenter_to_confirm": "Onaylamak için lütfen PIN kodunu tekrar girin.", + "pin__should_be_long": "PIN kodu 4-50 hane uzunluğunda olmalıdır.", + "pin__title_check_pin": "PIN'i̇ kontrol edi̇n", + "pin__title_settings": "PIN kodu ayarlari", + "pin__title_wrong_pin": "Yanliş PIN kodu", + "pin__tries_left": "deneme kaldı", + "pin__turn_off": "PIN korumayı kapatmak istediğinizden emin misiniz?", + "pin__turn_on": "PIN kodu koruması açılsın mı?", + "pin__wrong_pin": "Yanlış PIN kodu", + "plurals__contains_x_keys": "anahtar|anahtarlar", + "plurals__lock_after_x_hours": "saat|saatler", + "plurals__lock_after_x_milliseconds": "milisaniye|milisaniyeler", + "plurals__lock_after_x_minutes": "dakika|dakikalar", + "plurals__lock_after_x_seconds": "saniye|saniyeler", + "plurals__sign_x_actions": "eylem|eylemler", + "plurals__transaction_of_x_operations": "işlem|işlemler", + "plurals__x_groups_needed": "grup|gruplar", + "plurals__x_shares_needed": "paylaşım|paylaşımlar", + "progress__authenticity_check": "Doğ. kntrl ediliyor...", + "progress__done": "Bitti", + "progress__loading_transaction": "İşlem yükleniyor...", + "progress__locking_device": "Cihaz kilitleniyor...", + "progress__one_second_left": "1 saniye kaldı", + "progress__please_wait": "Lütfen bekleyi̇n", + "progress__refreshing": "Yenileniyor...", + "progress__signing_transaction": "İşlem imzalanıyor...", + "progress__syncing": "Senkronize ediliyor...", + "progress__x_seconds_left_template": "{0} saniye kaldı", + "reboot_to_bootloader__just_a_moment": "Bir dakika...", + "reboot_to_bootloader__restart": "Trezor önyükleyici modunda yeniden başlatılacak.", + "reboot_to_bootloader__title": "Önyükleyi̇ci̇ye gi̇t", + "reboot_to_bootloader__version_by_template": "Bellenim sürümü {0}\nşu şekilde: {1}", + "recovery__cancel_dry_run": "Yedekleme kontrolünü iptal et", + "recovery__check_dry_run": "Yedeklemeniz kontrol edilsin mi?", + "recovery__cursor_will_change": "Gelişmiş güvenlik için girişler arasında imlecin konumu değişecektir.", + "recovery__dry_run_bip39_valid_match": "Girilen kurtarma tohumu geçerli ve cihazdakiyle uyumlu.", + "recovery__dry_run_bip39_valid_mismatch": "Girilen kurtarma tohumu geçerli ancak cihazdakiyle uyumlu değil.", + "recovery__dry_run_slip39_valid_match": "Girilen kurtarma paylaşımları geçerli ve cihazda mevcut olanlarla uyumlu.", + "recovery__dry_run_slip39_valid_mismatch": "Girilen kurtarma paylaşımları geçerli ancak cihazda mevcut olanla uyumlu değil.", + "recovery__enter_any_share": "Herhangi bir paylaşım girin", + "recovery__enter_backup": "Yedeklemenizi girin.", + "recovery__enter_different_share": "Lütfen farklı bir paylaşım girin.", + "recovery__enter_share_from_diff_group": "Farklı bir gruptan paylaşım girin.", + "recovery__group_num_template": "{0} Grubu", + "recovery__group_threshold_reached": "Grup eşiğine ulaşıldı.", + "recovery__invalid_seed_entered": "Geçersiz kurtarma tohumu girildi.", + "recovery__invalid_share_entered": "Geçersiz kurtarma paylaşımı girildi.", + "recovery__more_shares_needed": "Daha fazla paylaşım gerekli", + "recovery__num_of_words": "Yedeklemenizdeki kelime sayısını seçin.", + "recovery__only_first_n_letters": "Her kelimenin ilk 2-4 harfini seçmeniz yeterlidir.", + "recovery__progress_will_be_lost": "Tüm ilerleme kaybolacaktır.", + "recovery__select_num_of_words": "Yedeklemenizdeki kelime sayısını seçin.", + "recovery__share_already_entered": "Paylaşım zaten girildi", + "recovery__share_from_another_shamir": "Başka bir Shamir Backup'tan bir paylaşım girdiniz.", + "recovery__share_num_template": "{0} Paylaşımı", + "recovery__title": "Cüzdani kurtar", + "recovery__title_cancel_dry_run": "Yedek. knt. i̇ptal et", + "recovery__title_cancel_recovery": "Kurtarmayi i̇ptal et", + "recovery__title_dry_run": "Yedekleme kontrolü", + "recovery__title_recover": "Cüzdani kurtar", + "recovery__title_remaining_shares": "Kalan paylaşimlar", + "recovery__title_unlock_repeated_backup": "Çok Paylaşımlı yedekleme", + "recovery__type_word_x_of_y_template": "{0}/{1} kelime yazın", + "recovery__wallet_recovered": "Cüzdan başarıyla kurtarıldı", + "recovery__wanna_cancel_dry_run": "Yedekleme kont. iptal etmek istediğinizden emin misiniz?", + "recovery__wanna_cancel_recovery": "Kurtarma işlemini iptal etmek istediğinizden emin misiniz?", + "recovery__word_count_template": "({0} kelime)", + "recovery__word_x_of_y_template": "{0}/{1} keli̇me", + "recovery__x_more_items_starting_template_plural": "{count} daha fazla {plural} başlatılıyor", + "recovery__x_more_shares_needed_template_plural": "{count} daha fazla {plural} gerekli.", + "recovery__x_of_y_entered_template": "{0}/{1} paylaşım başarıyla girildi.", + "recovery__you_have_entered": "Şunu girdiniz:", + "reset__advanced_group_threshold_info": "Grup eşiği, cüzdanı kurtarmak için gereken grup sayısını belirtir.", + "reset__all_x_of_y_template": "Tüm {0}/{1} paylaşım", + "reset__any_x_of_y_template": "Bir {0}/{1} paylaşım", + "reset__button_create": "Cüzdan oluştur", + "reset__button_recover": "Cüzdani kurtar", + "reset__by_continuing": "Devam ederek Trezor Comp. şart ve koşulunu kabul etmiş olursunuz.", + "reset__check_backup_title": "Yedek. kontrol et", + "reset__check_group_share_title_template": "{0}g - {1} p kntrl et", + "reset__check_seed_title": "Tohumu kontrol et", + "reset__check_share_title_template": "#{0} pay. kntrl et", + "reset__continue_with_next_share": "Sonraki paylaşım ile devam edin.", + "reset__continue_with_share_template": "{0} numaralı paylaşım ile devam edin.", + "reset__create_x_of_y_multi_share_backup_template": "{0} / {1} çok paylaşımlı bir yedekleme mi oluşturmak istiyorsunuz?", + "reset__finished_verifying_group_template": "{0} grubu için kurtarma pay. doğrulamayı tamamladınız.", + "reset__finished_verifying_seed": "Kurtarma tohumunuzu doğrulamayı tamamladınız.", + "reset__finished_verifying_shares": "Kurtarma paylaşımlarınızı doğrulamayı tamamladınız.", + "reset__group_description": "Bir grup, kurtarma pay.dan oluşur.", + "reset__group_info": "Her grubun belirli sayıda paylaşımı ve kendi eşiği vardır. Sonraki adımlarda paylaşım sayılarını ve eşikleri ayarlayacaksınız.", + "reset__group_share_checked_successfully_template": "{0} Gr. - {1} Pay. başarıyla kntrl edildi.", + "reset__group_share_title_template": "{0} gr - {1} pay.", + "reset__more_info_at": "Daha fazla bilgi:", + "reset__need_all_share_template": "Kurtarma için {0} pay. tümü gerekiyor.", + "reset__need_any_share_template": "Kurtarma için {0} pay. biri gerekiyor.", + "reset__needed_to_form_a_group": "bir grup oluşturmak için gerekli. ", + "reset__needed_to_recover_your_wallet": "cüzdanınızı kurtarmak için gerekli. ", + "reset__never_make_digital_copy": "Asla yedeklemenizin dijital bir kopyasını oluşturmayın veya çevrimiçi yüklemeyin!", + "reset__num_of_share_holders_template": "{0} kişi ya da konumun her birinde bir paylaşım olacaktır.", + "reset__num_of_shares_advanced_info_template": "Her kurtarma paylaşımı {0} kelimelik bir dizidir. Sonra, {1} Grubunu oluşturmak için gereken eşik paylaşım sayısını seçeceksiniz.", + "reset__num_of_shares_basic_info_template": "Her kurtarma paylaşımı {0} kelimelik bir dizidir. Sonra, cüzdanı kurtarmak için kaç pay. gerektiğini seçeceksiniz.", + "reset__num_shares_for_group_template": "{0} Grubunu oluşturmak için gerekli paylaşım sayısı.", + "reset__number_of_shares_info": "= cüzdan yedek. için kull. toplam benzersiz kelime list. sayısı.", + "reset__one_share": "1 paylaşım", + "reset__only_one_share_will_be_created": "Yalnızca bir paylaşım oluşturulacaktır.", + "reset__recovery_seed_title": "Kurtarma tohumu", + "reset__recovery_share_title_template": "#{0} kurtarma pay.", + "reset__repeat_for_all_shares": "Tüm paylaşımlar için tekrarlayın.", + "reset__required_number_of_groups": "Kurtarma için gerekli grup sayısı.", + "reset__select_correct_word": "Her pozisyon için doğru kelimeyi seçin.", + "reset__select_word_template": "{0} keli̇me seç", + "reset__select_word_x_of_y_template": "{0}/{1} kelime seçin:", + "reset__set_it_to_count_template": "{0} olarak ayarlayın; ihtiyacınız olacak ", + "reset__share_checked_successfully_template": "#{0} kurtarma pay. başarıyla kntrl edildi.", + "reset__share_words_title": "Standart yedekleme", + "reset__slip39_checklist_num_groups": "Grup sayısı", + "reset__slip39_checklist_num_groups_x_template": "Grup sayısı: {0}", + "reset__slip39_checklist_num_shares": "Paylaşım sayısı", + "reset__slip39_checklist_set_num_groups": "Grup sayısını ayarla", + "reset__slip39_checklist_set_num_shares": "Pay. sayısını ayarla", + "reset__slip39_checklist_set_sizes": "Boyut ve eşikleri ayarla", + "reset__slip39_checklist_set_sizes_longer": "Her grup için boyut ve eşik ayarla", + "reset__slip39_checklist_set_threshold": "Eşik ayarla", + "reset__slip39_checklist_title": "Yedek. kntrl li̇st.", + "reset__slip39_checklist_write_down": "Tüm paylaşımları yazın ve kontrol edin", + "reset__slip39_checklist_write_down_recovery": "Tüm kurtarma pay. yazın ve kontrol edin", + "reset__the_threshold_sets_the_number_of_shares": "Eşik, paylaşım sayısını ayarlar ", + "reset__threshold_info": "= kurtarma için kull. min. benzersiz kelime listesi sayısı.", + "reset__title_backup_is_done": "Yedek. tamamlandi", + "reset__title_create_wallet": "Cüzdan oluştur", + "reset__title_create_wallet_shamir": "Cüzdan oluştur (shamir)", + "reset__title_group_threshold": "Grup eşi̇ği̇", + "reset__title_number_of_groups": "Grup sayisi", + "reset__title_number_of_shares": "Paylaşim sayisi", + "reset__title_set_group_threshold": "Grup eşi̇ği̇ ayarla", + "reset__title_set_number_of_groups": "Grup sayisini ayarla", + "reset__title_set_number_of_shares": "Paylaşim sayisini ayarla", + "reset__title_set_threshold": "Eşi̇k ayarla", + "reset__title_shamir_backup": "Çok Paylaşımlı yedekleme", + "reset__to_form_group_template": "{0} Grubunu oluşturmak için.", + "reset__tos_link": "trezor.io/tos", + "reset__total_number_of_shares_in_group_template": "{0} Gr.daki toplam pay. sayısını ayarlayın.", + "reset__use_your_backup": "Cüzdanı kurtarmanız gerektiğinde yedeklemenizi kullanın.", + "reset__words_may_repeat": "Kelimeler tekrar edebilir.", + "reset__write_down_words_template": "Tüm {0} kelimelerini sırayla yazın.", + "reset__wrong_word_selected": "Yanlış kelime seçildi!", + "reset__you_need_one_share": "Kurtarma için size 1 paylaşım gerekiyor.", + "reset__your_backup_is_done": "Yedekleme tamamlandı.", + "ripple__confirm_tag": "Etiketi onayla", + "ripple__destination_tag_template": "Hedef etiket:\n{0}", + "rotation__change_template": "Cihaz rotasyonunu {0} olarak değiştirmek istiyor musunuz?", + "rotation__east": "doğu", + "rotation__north": "kuzey", + "rotation__south": "güney", + "rotation__title_change": "Rotasyonu deği̇şti̇r", + "rotation__west": "batı", + "safety_checks__approve_unsafe_always": "Trezor, güvenli olmayabilecek bazı eylemleri onaylamanıza izin verecektir.", + "safety_checks__approve_unsafe_temporary": "Trezor, güvenli olmayabilecek bazı eylemleri onaylamanıza geçici izin verecektir.", + "safety_checks__enforce_strict": "Gerçekten sıkı güvenlik kontrolleri uygulamak istiyor musunuz (önerilir)?", + "safety_checks__title": "Güvenli̇k kontrolü", + "safety_checks__title_safety_override": "Güvenli̇k i̇ptali̇", + "sd_card__all_data_will_be_lost": "SD karttaki tüm veriler kaybolacak.", + "sd_card__card_required": "SD kart gerekli.", + "sd_card__disable": "SD kart korumasını cihazınızdan gerçekten kaldırmak istiyor musunuz?", + "sd_card__disabled": "SD korumasını başarıyla devre dışı bıraktınız.", + "sd_card__enable": "Cihazınızı gerçekten SD kart koruması ile korumak istiyor musunuz?", + "sd_card__enabled": "SD korumasını başarıyla etkinleştirdiniz.", + "sd_card__error": "SD kart hatası", + "sd_card__format_card": "SD kartı biçimlendir", + "sd_card__insert_correct_card": "Lütfen bu cihaz için doğru SD kartı takın.", + "sd_card__please_insert": "Lütfen SD kartınızı takın.", + "sd_card__please_unplug_and_insert": "Lütfen cihazın fişini çekin ve SD kartınızı takın.", + "sd_card__problem_accessing": "SD karta erişirken bir sorun oluştu.", + "sd_card__refresh": "Mevcut SD kart parolasını yeni oluşt. parola ile değiştirmek istiyor musunuz?", + "sd_card__refreshed": "SD korumasını başarıyla yenilediniz.", + "sd_card__restart": "Trezor'u önyükleyici modunda yeniden baş. istiyor musunuz?", + "sd_card__title": "Sd kart korumasi", + "sd_card__title_problem": "Sd kart sorunu", + "sd_card__unknown_filesystem": "Bilinmeyen dosya sistemi.", + "sd_card__unplug_and_insert_correct": "Lütfen cihazın fişini çekin ve doğru SD kartı takın.", + "sd_card__use_different_card": "Farklı bir kart kullanın veya SD kartı FAT32 dosya sistemine biçimlendirin.", + "sd_card__wanna_format": "SD kartı gerçekten biçimlendirmek istiyor musunuz?", + "sd_card__wrong_sd_card": "Yanlış SD kart.", + "send__address_path": "adres yolu", + "send__confirm_sending": "Gönderi̇m tutari", + "send__from_multiple_accounts": "Birden fazla hesaptan gönderme.", + "send__including_fee": "Ücret dahil:", + "send__maximum_fee": "Maksimum ücret:", + "send__receiving_to_multisig": "Çoklu imza adresine alma.", + "send__title_confirm_sending": "Gönderi̇mi̇ onayla", + "send__title_joint_transaction": "Ortak i̇şlem", + "send__title_receiving_to": "Alici", + "send__title_sending": "Gönderi̇m", + "send__title_sending_amount": "Gönderi̇m tutari", + "send__title_sending_to": "Gönderi̇len", + "send__to_the_total_amount": "Toplam tutara:", + "send__total_amount": "Toplam tutar:", + "send__transaction_id": "İşlem kimliği:", + "send__you_are_contributing": "Sağladığınız katkı:", + "share_words__words_in_order": " kelimelerini sırayla yazdım.", + "share_words__wrote_down_all": "Tüm ", + "sign_message__bytes_template": "{0} Bayt", + "sign_message__confirm_address": "İmza adresi̇", + "sign_message__confirm_message": "Mesaji onayla", + "sign_message__message_size": "Mesaj boyutu:", + "sign_message__verify_address": "Adresi̇ doğrula", + "solana__account_index": "Hesap dizini", + "solana__associated_token_account": "İlişkili token hesabı", + "solana__confirm_multisig": "Çoklu imzayı doğrula", + "solana__expected_fee": "Tahmini ücret", + "solana__instruction_accounts_template": "Talimat, {0} hesap içerir ve verileri {1} bayt uzunluğundadır.", + "solana__instruction_data": "Talimat verileri", + "solana__instruction_is_multisig": "Aşağıdaki talimat, çoklu imza talimatıdır.", + "solana__is_provided_via_lookup_table_template": "{0}, bir arama tablosu aracılığıyla sağlanır.", + "solana__lookup_table_address": "Arama tablosu adresi", + "solana__multiple_signers": "Birden fazla imzalayan", + "solana__token_address": "Token adresi", + "solana__transaction_contains_unknown_instructions": "İşlem bilinmeyen talimatlar içeriyor.", + "solana__transaction_requires_x_signers_template": "İşlem için {0} imzalayan gerekiyor ve bu da ücreti artırıyor.", + "stellar__account_merge": "Hesap Birleştirme", + "stellar__account_thresholds": "Hesap Eşikleri", + "stellar__add_signer": "İmzalayan Ekle", + "stellar__add_trust": "Tröst ekle", + "stellar__all_will_be_sent_to": "Tüm XLM şuraya gönderilecektir:", + "stellar__allow_trust": "Tröste izin ver", + "stellar__asset": "Varlık", + "stellar__balance_id": "Bakiye kimliği", + "stellar__bump_sequence": "Çarpma Sırası", + "stellar__buying": "Alış:", + "stellar__claim_claimable_balance": "Talep Edilebilir Bakiye Talep Et", + "stellar__clear_data": "Verileri temizle", + "stellar__clear_flags": "İşaretleri temizle", + "stellar__confirm_issuer": "İhraççıyı Onayla", + "stellar__confirm_memo": "Bilgi notunu onayla", + "stellar__confirm_network": "Ağı onayla", + "stellar__confirm_operation": "İşlemi onayla", + "stellar__confirm_stellar": "Stellar'ı onayla", + "stellar__confirm_timebounds": "Zaman sınırlarını onayla", + "stellar__create_account": "Hesap Oluştur", + "stellar__debited_amount": "Borçlandırılan tutar", + "stellar__delete": "Sil", + "stellar__delete_passive_offer": "Pasif Teklifi Sil", + "stellar__delete_trust": "Tröstü sil", + "stellar__destination": "Hedef:", + "stellar__exchanges_require_memo": "Önemli: Çoğu takas işleminde para yatırırken bilgi notu gerekir", + "stellar__final_confirm": "Son onay", + "stellar__hash": "Karma:", + "stellar__high": "Yüksek:", + "stellar__home_domain": "Ana Sayfa Etki Alanı", + "stellar__inflation": "Enflasyon", + "stellar__initial_balance": "İlk Bakiye", + "stellar__initialize_signing_with": "İmzalamayı şu şekilde başlat:", + "stellar__issuer_template": "{0} ihraççı:", + "stellar__key": "Anahtar:", + "stellar__limit": "Sınır:", + "stellar__low": "Düşük:", + "stellar__master_weight": "Ana Ağırlık:", + "stellar__medium": "Orta:", + "stellar__new_offer": "Yeni Teklif", + "stellar__new_passive_offer": "Yeni Pasif Teklif", + "stellar__no_memo_set": "Bilgi notu ayarlanmadı!", + "stellar__no_restriction": "[kısıtlama yok]", + "stellar__on_network_template": "İşlem yeri: {0}", + "stellar__path_pay": "Yol Ödemesi", + "stellar__path_pay_at_least": "Yol Ödemesi (en az)", + "stellar__pay": "Ödeme:", + "stellar__pay_at_most": "En fazla ödeme:", + "stellar__preauth_transaction": "Kimlik doğrulama öncesi işlem:", + "stellar__price_per_template": "Her bir {0} için fiyat:", + "stellar__private_network": "özel ağ", + "stellar__remove_signer": "İmzalayanı Kaldır", + "stellar__revoke_trust": "Tröstü iptal et", + "stellar__selling": "Satış:", + "stellar__set_data": "Verileri ayarla", + "stellar__set_flags": "İşaretleri ayarla", + "stellar__set_sequence_to_template": "Sıra {0} olarak ayarlansın mı?", + "stellar__sign_tx_count_template": "{0}'dan oluşan bu işlem imzalansın ", + "stellar__sign_tx_fee_template": "ve ücret için {0}\nödensin mi?", + "stellar__source_account": "Kaynak hesap:", + "stellar__testnet_network": "testnet ağı", + "stellar__trusted_account": "Güvenilir Hesap", + "stellar__update": "Güncelle", + "stellar__valid_from": "Geçerlilik başlangıç tarihi (UTC)", + "stellar__valid_to": "Geçerlilik bitiş tarihi (UTC)", + "stellar__value_sha256": "Değer (SHA-256):", + "stellar__wanna_clean_value_key_template": "{0} değer anahtarını temizlemek istiyor musunuz?", + "stellar__your_account": " hesabınız", + "storage_msg__processing": "İşleme", + "storage_msg__starting": "Başlatma", + "storage_msg__verifying_pin": "PIN kodu doğrulama", + "storage_msg__wrong_pin": "Yanliş PIN kodu", + "tezos__baker_address": "Fırıncı adresi:", + "tezos__balance": "Bakiye:", + "tezos__ballot": "Oylama:", + "tezos__confirm_delegation": "Yetkilendirmeyi onayla", + "tezos__confirm_origination": "Kaynağı onayla", + "tezos__delegator": "Yetkilendiren:", + "tezos__proposal": "Teklif", + "tezos__register_delegate": "Yetkilendirmeyi kaydet", + "tezos__remove_delegation": "Yetkilendirmeyi kaldır", + "tezos__submit_ballot": "Oylamayı gönder", + "tezos__submit_proposal": "Teklifi gönder", + "tezos__submit_proposals": "Teklifleri gönder", + "tutorial__did_you_know": "Biliyor muydunuz?", + "tutorial__first_wallet": "2013'te üretilen Trezor Model One,\ndünyanın ilk donanım cüzdanıydı.", + "tutorial__get_started": "Başlayın!", + "tutorial__lets_begin": "Bu cihazın nasıl kullanılacağını ve cihazda kolaylıkla nasıl gezinileceğini öğrenin.", + "tutorial__menu": "Menüde içeriğe özgü eylemleri ve seçenekleri bulun.", + "tutorial__middle_click": "Onaylamak için sol ve sağ düğmelere\naynı anda basın.", + "tutorial__press_and_hold": "Önemli işlemleri onaylamak için\nsağ düğmeyi basılı tutun.", + "tutorial__ready_to_use": "Trezor'u kullanmaya\nhazırsınız.", + "tutorial__ready_to_use_safe5": "Cihazınızı kullanmaya başlamak için hazırsınız!", + "tutorial__restart_tutorial": "Eğitimi yeniden başlat", + "tutorial__scroll_down": "Metin bir ekrana sığmadığında tüm içeriği okumak için sağa basarak aşağı kaydırın.\n\rYukarı kaydırmak için sola basın.", + "tutorial__sure_you_want_skip": "Eğitimi atlamak\nistediğinizden emin misiniz?", + "tutorial__swipe_up_and_down": "Ekranlar arasında hareket etmek için\nyukarı ve aşağı kaydırın.", + "tutorial__title_easy_navigation": "Kolay gezinme", + "tutorial__title_handy_menu": "Kullanışlı menü", + "tutorial__title_hello": "Merhaba", + "tutorial__title_hold": "Önemli eylemleri onaylamak için basılı tutun", + "tutorial__title_lets_begin": "Haydi başlayalım", + "tutorial__title_screen_scroll": "Ekran kaydirma", + "tutorial__title_skip": "Eği̇ti̇mi̇ atla", + "tutorial__title_tutorial_complete": "Eği̇ti̇m tamamlandi", + "tutorial__title_well_done": "Tebrikler!", + "tutorial__use_trezor": "Sol ve sağ düğmelere\ntıklayarak Trezor'u kullanın.\n\rSağa devam edin.", + "tutorial__welcome_press_right": "Trezor'a hoş geldiniz. Devam etmek için sağa basın.", + "u2f__get": "U2F sayacı artırılsın ve geri alınsın mı?", + "u2f__set_template": "U2F sayacı {0} olarak ayarlansın mı?", + "u2f__title_get": "U2F sayacini al", + "u2f__title_set": "U2F sayacini ayarla", + "wipe__info": "Tüm veriler silinecektir.", + "wipe__title": "Ci̇hazi si̇l", + "wipe__want_to_wipe": "Cihazı gerçekten silmek istiyor musunuz?\n", + "wipe_code__change": "Silme kodu değiştirilsin mi?", + "wipe_code__changed": "Silme kodu değiştirildi.", + "wipe_code__diff_from_pin": "Silme kodu, PIN kodunuzdan farklı olmalıdır.", + "wipe_code__disabled": "Silme kodu devre dışı.", + "wipe_code__enabled": "Silme kodu etkin.", + "wipe_code__enter_new": "Yeni silme kodu girin", + "wipe_code__info": "Silme kodu, cihazdaki tüm verileri silmek için kullanılabilir.", + "wipe_code__invalid": "Geçersiz silme kodu", + "wipe_code__mismatch": "Girdiğiniz silme kodları uyumlu değil.", + "wipe_code__reenter": "Silme kod. yeniden girin", + "wipe_code__reenter_to_confirm": "Onaylamak için silme kodunu yeniden girin.", + "wipe_code__title_check": "Si̇lme kod. kntrl et", + "wipe_code__title_invalid": "Geçersi̇z si̇lme kodu", + "wipe_code__title_settings": "Kod ayarlarini si̇l", + "wipe_code__turn_off": "Silme kodu koruması kapatılsın mı?", + "wipe_code__turn_on": "Silme kodu koruması açılsın mı?", + "wipe_code__wipe_code_mismatch": "Silme kod. uyumsuzluğu", + "word_count__title": "Keli̇me sayisi", + "words__account": "Hesap", + "words__account_colon": "Hesap:", + "words__address": "Adres", + "words__amount": "Tutar", + "words__are_you_sure": "Emin misiniz?", + "words__array_of": "Şunun dizisi:", + "words__blockhash": "Blok karması", + "words__buying": "Alış", + "words__confirm": "Onayla", + "words__confirm_fee": "Ücreti onayla", + "words__contains": "Şunu içerir:", + "words__continue_anyway": "Yine de devam mı?", + "words__continue_with": "Şununla devam et:", + "words__error": "Hata", + "words__fee": "Ücret", + "words__from": "çıkış noktası", + "words__keep_it_safe": "Güvende tutun!", + "words__know_what_your_doing": "Yalnızca ne yaptığınızı biliyorsanız devam edin!", + "words__my_trezor": "Trezor'um", + "words__no": "Hayır", + "words__outputs": "çıktılar", + "words__please_check_again": "Lütfen tekrar kontrol edin", + "words__please_try_again": "Lütfen tekrar deneyin", + "words__really_wanna": "Şunu istiyor musunuz:", + "words__recipient": "Alıcı", + "words__sign": "İmzala", + "words__signer": "İmzalayan", + "words__title_check": "Kontrol et", + "words__title_group": "Grup", + "words__title_information": "Bi̇lgi̇", + "words__title_remember": "Unutmayin", + "words__title_share": "Paylaşim", + "words__title_shares": "Paylaşimlar", + "words__title_success": "Başari", + "words__title_summary": "Özet", + "words__title_threshold": "Eşi̇k", + "words__unknown": "Bilinmeyen", + "words__warning": "Uyarı", + "words__writable": "Yazılabilir", + "words__yes": "Evet" + } +} diff --git a/tests/github.py b/tests/github.py index 359c374323..e8ea517a22 100644 --- a/tests/github.py +++ b/tests/github.py @@ -19,7 +19,7 @@ FIXTURES_TEMPLATE = "https://data.trezor.io/dev/firmware/ui_report/{run}/{model}-{lang}-{job}/fixtures.results.json" MODELS = ["T2T1", "T2B1", "T3T1"] -LANGUAGES = ["en", "cs", "de", "es", "fr"] +LANGUAGES = ["en", "cs", "de", "es", "fr", "it", "pt", "tr"] JOBS = ["core_device_test", "core_click_test", "core_persistence_test"] diff --git a/tests/ui_tests/common.py b/tests/ui_tests/common.py index 48130060bc..c18a326879 100644 --- a/tests/ui_tests/common.py +++ b/tests/ui_tests/common.py @@ -19,8 +19,6 @@ from trezorlib.debuglink import TrezorClientDebugLink as Client -LANGUAGES = ["cs", "de", "en", "es", "fr"] - UI_TESTS_DIR = Path(__file__).resolve().parent SCREENS_DIR = UI_TESTS_DIR / "screens" IMAGES_DIR = SCREENS_DIR / "all_images" diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 7da64735e6..db18e5f28c 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -951,7 +951,144 @@ "T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a7b5c10b578002d764a7a97bbe1559d2c1284f0e043800aed7836fdba8c5dbf4", "T2B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", "T2B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", -"T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" +"T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1", +"T2B1_it_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "1258bbf50d05fcdcf2a3ffe52be4f419a158fb16de722cd56b8ab010b4d516c9", +"T2B1_it_test_autolock.py::test_autolock_does_not_interrupt_signing": "81717a8487255057ae82ae1273945b237067a3e6bd21d1da625156227cd61566", +"T2B1_it_test_autolock.py::test_autolock_interrupts_passphrase": "8ee9249ce808d93fbceb1ff3d08ec5d6fbc070b1ad6dbda27e1bf6552549ae58", +"T2B1_it_test_autolock.py::test_autolock_interrupts_signing": "77d6ed1561e26678ff7d20eda28005e287f545c99f943d39ebbef6647b08cf9a", +"T2B1_it_test_autolock.py::test_autolock_passphrase_keyboard": "8761d38bd493b7c2ca5af5498751c19c3f6b89572aa221fe07cf4649886235ed", +"T2B1_it_test_autolock.py::test_dryrun_enter_word_slowly": "dbfcc66909bebeefa2f1237237ae7a807ce92dc20aa28c9dba78882c3736412b", +"T2B1_it_test_autolock.py::test_dryrun_locks_at_number_of_words": "6de5485974ef9a0a1908fbd4aae6368f7dc0e5aafd09550167e88d3b73df527b", +"T2B1_it_test_autolock.py::test_dryrun_locks_at_word_entry": "d3b24d776496669313282999e0cb0b8c8f2bcf146aa71b5ea36f9c60fdf5d6e0", +"T2B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "564d800396942ae9d2824118673e7a0cb66575847d0cf7534634eb355b5d2cb7", +"T2B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d648d4b3f03ce923143e6b730a15117f62425a9497783811aadf2c7f7abeb1d3", +"T2B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10122b7427165836d0a22107c77e4a8219372553253c8b06dfe0b85308be2fbd", +"T2B1_it_test_lock.py::test_hold_to_lock": "5ec2d63064685a037f2e1c8440c256d9d45673723b06e69a929e4bb5774905e5", +"T2B1_it_test_passphrase_tr.py::test_cancel": "4fee267d1cd79670786aa51f921a4dcab10c8565fbe7d430eb6bdcdfc3ef3f46", +"T2B1_it_test_passphrase_tr.py::test_passphrase_delete": "69f00bcb21d6225ed80c7777ae2119c36d9e220ccf8cf3fab1fafea2a021a44b", +"T2B1_it_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "a3e56441c08aaa274c52d2f09503747dd16ede22566a4430096707dbc7d977da", +"T2B1_it_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "93e5b3ab30a01a73116b564a90c9716aca25a5d72a0e74be522f5e2e6513ba5c", +"T2B1_it_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "5df074fd6421879f9e0547032caa269abdaef2fc76e2438c0626643791d703dc", +"T2B1_it_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6c708f37642bec0361372ba644af624567bf24d480d0d664c63b44392b6450e3", +"T2B1_it_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "58ed2def937a33c8b9e6d54c80522d03bb098a1d9eee6224d448abff3b162f43", +"T2B1_it_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ae65c8fd4d7adc5eea3592fc5b84d24377d589b22891f6bbd95f35fabdf3ccee", +"T2B1_it_test_passphrase_tr.py::test_passphrase_loop_all_characters": "952e6677bc508abb1fa839ed9f4fc583c19a254ef75f1f9838369e120494e7a8", +"T2B1_it_test_pin.py::test_pin_change": "fa6890fb169b20f4143e72a0f38a33af581e05f7a02748ae2b03aba349f3dd22", +"T2B1_it_test_pin.py::test_pin_delete_hold": "73bbfecc3a4153811107b70841c966ce51c2fffa68269f349de4cd5e5266c39f", +"T2B1_it_test_pin.py::test_pin_empty_cannot_send": "270954e306ae9f97271acf2942e788e2e54f7f108a57228224ce4afecc890346", +"T2B1_it_test_pin.py::test_pin_incorrect": "8c574d6ec3afd6ae7fb858bad86aae6f3d3c0ee18c6b0a52042433c551d200b9", +"T2B1_it_test_pin.py::test_pin_long": "45fd25b94d8d0e5d7191f59e1760a8a520a91915728fc04ad22bda0e0ed6de50", +"T2B1_it_test_pin.py::test_pin_long_delete": "9e92871e7a8b1b204f1823ba3d8d09df7a6ed041e0b24ed0459ce0074f294f15", +"T2B1_it_test_pin.py::test_pin_longer_than_max": "d7b309e3333a71489c1a015632e335829b6b05be82bba5755e8b9bc8ec85783e", +"T2B1_it_test_pin.py::test_pin_same_as_wipe_code": "5eb8328727b98d5ba84c0f995a40b3321069625185e5ed1754ce0ed852b96023", +"T2B1_it_test_pin.py::test_pin_setup": "5de37f8e72b5150922fc442ecb2c370a9584b05ea49a302e8033a0c77a051eec", +"T2B1_it_test_pin.py::test_pin_setup_mismatch": "32f0b79df89f2e18e81968d2c515f753e8ee32b3f802b97838fc3ecd82136659", +"T2B1_it_test_pin.py::test_pin_short": "d47f6f36db62163b5f45d29e428c5c2de3964fda4aff13040d5f8a929dcf6c9d", +"T2B1_it_test_pin.py::test_wipe_code_same_as_pin": "0a6063e1107a8d9a0cc65f29e644c2a8d00a471aaa44113d65184646c4192729", +"T2B1_it_test_pin.py::test_wipe_code_setup": "cc9ddd35942a02e98e5764ad98afcac5d4befa232faa2ccbdb858d1008ab3588", +"T2B1_it_test_recovery.py::test_recovery_bip39": "1ac40a664a8ba0e47c6ff006cdfd63c8c8aa79542810f77a47365f4ba35cfdd9", +"T2B1_it_test_recovery.py::test_recovery_bip39_previous_word": "6c6855a6af3eff07a7bb24141565adefabccdaa4e27801a75e6365023d3ece74", +"T2B1_it_test_recovery.py::test_recovery_slip39_basic": "278712410995f99fff315a46f008cbea514538301479097055f16d826592b77d", +"T2B1_it_test_repeated_backup.py::test_repeated_backup": "b526088dab629f2e56699490e8a02302c2426b9da6d81a2658bdc6511bd64aae", +"T2B1_it_test_reset_bip39.py::test_reset_bip39": "c5ea650d15d4ad804f10e9faae627988e8f950d2443ae94bae8b867df9d06b67", +"T2B1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "354a02883fb7d351bd5acd36b74dd9f89b500d3749ae19fc2aedc0ddc5c2b0dc", +"T2B1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f63f5d9e85ad3b46a4f30a1e3458a0d83dd024fe4107cf3017c7292b53b70754", +"T2B1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "8546496120d8e57d12d23dbcc183ade8243a0449be172024b2fe341cdcb9a574", +"T2B1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "62fbaac68776f2877c4e3c14104f989ad39ef3563759b23ed318c96de2544fb1", +"T2B1_it_test_tutorial.py::test_tutorial_again_and_skip": "67014b0978c8075882de0d059fab97c67ade01399d94c1eb85a9356035e5243b", +"T2B1_it_test_tutorial.py::test_tutorial_finish": "4ea6ee6cb8186c35903d4c6865eab979d6dd4aad06389ee2c005b44fb368c16b", +"T2B1_it_test_tutorial.py::test_tutorial_skip": "667b028896d3530a109118f5ac329e80f1a7480ea8068804f09f746077464c60", +"T2B1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "173fba1548afa2be06cab71b75721d888277144f47cccffcf9ae5178d137920a", +"T2B1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "d7d565a030c97caa2dfa281d25afa90bc5b663fa6e57c279e8662bbe9782d7d4", +"T2B1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "95267e5fc4bcb60e97f3038fe621f390d6237e8e83586f26ce9d922359c664c3", +"T2B1_pt_test_autolock.py::test_autolock_interrupts_signing": "5809e31e16b3f1b789abd2347757d0e0cee30cbf1587e4902d15e58303b423be", +"T2B1_pt_test_autolock.py::test_autolock_passphrase_keyboard": "7062b187bb7cc9bc4c5fc8cb93a829249a5c184247123859a3149e2eb80f957c", +"T2B1_pt_test_autolock.py::test_dryrun_enter_word_slowly": "badf9736a4fe00398e927186333cc310e3f50e539ecbb2ffb7d333076769ff12", +"T2B1_pt_test_autolock.py::test_dryrun_locks_at_number_of_words": "6faaada7541dc44561566b0b9be89b565495f7a73afa1fa3c328da957234f5f1", +"T2B1_pt_test_autolock.py::test_dryrun_locks_at_word_entry": "64b81ae5b3b789452376301d829c1e0c18a2864eff91311c344df7cd0757f639", +"T2B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1a76268541a5ab52311ad043515d80e6992f2b8c701f692a3c0dc67792784db0", +"T2B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "929ec884cce60bb71c1b1a8ec00f6e0b8544447dd4f59f71b3fd66aa6384d647", +"T2B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "20c69206a561c9bd6a2bc5e6bd1670e5f13b577d0a2a805f7a44f1a8928cee7d", +"T2B1_pt_test_lock.py::test_hold_to_lock": "bf782aaa653f86b7dfb0ede05201059f0c5b94534dc28881d8deb01493f442d2", +"T2B1_pt_test_passphrase_tr.py::test_cancel": "91ae9bb439541bd5ed68cc56c66d96e9c6adb0a9d32c4d633ad7a93de46a2a39", +"T2B1_pt_test_passphrase_tr.py::test_passphrase_delete": "35656cd7f65c7d25f07525ce728060ada4e6059e323ba8971980dde1bf4b9904", +"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "c3b1959dbfc19f449bd468961d8545ed0b0b78a6d2fbc97e2d4836fdd6c60940", +"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "1e7cb0a9e383fa03a10ca5f8008c77c0130a2cbc95a669ba228d51643e1bd593", +"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "285ed5ed1076c6208752ea156de50a17503635febb17777043b8d150619c7038", +"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "53afefb9adb376bb3802a94dd91d65ec9679281b854cf7e4ed4383201ef95f65", +"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "7347726963e15336a209486b1f333743b6235141c58d72ce9fcdc99d012d16d3", +"T2B1_pt_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "7151b220f29025a359d9a7e05e79ddddf54b2c0061336a51e5cfd4b55fbcc047", +"T2B1_pt_test_passphrase_tr.py::test_passphrase_loop_all_characters": "c3672b63a8c09a8330164f5d90e37093f2cd58c19753568411832ef3ccd72f05", +"T2B1_pt_test_pin.py::test_pin_change": "7071fc2bfa3f5558854c2c03fc76e407e24432e0ef9e34c128841ff1b36ccb12", +"T2B1_pt_test_pin.py::test_pin_delete_hold": "e80cc3609110f6c54fe92592cd3646f62a115d9c706e39c3dffb6f87fbf61588", +"T2B1_pt_test_pin.py::test_pin_empty_cannot_send": "cdd720f84e25d3571eb860ea06cdedeb9aad2f7420452fd45e6621047a8b7f74", +"T2B1_pt_test_pin.py::test_pin_incorrect": "8522e8fe0f4c298a8e0e7fac04ef23c92d1989200577f7d0d64ae324e7882b0e", +"T2B1_pt_test_pin.py::test_pin_long": "ca9b85a5af8399241543e2cbefe8f58680dd857748db3316a61c250aece37265", +"T2B1_pt_test_pin.py::test_pin_long_delete": "d215b87697475431e1a5a33c10fc962a627ad9e26deb0c33b4300387b3986d0c", +"T2B1_pt_test_pin.py::test_pin_longer_than_max": "cc2185e768c08136ee3a49a6c33e2f25beb3752942d3b79b5c81587434c19e0a", +"T2B1_pt_test_pin.py::test_pin_same_as_wipe_code": "ec65ec7e34b95bf6c2cd592049b2aa9f2d8eb381c07d4df6e86e018e83d49a5b", +"T2B1_pt_test_pin.py::test_pin_setup": "7f515b883a4b0a12257bd20294c376de9b21ca87d2fbec6721c24734e24f885f", +"T2B1_pt_test_pin.py::test_pin_setup_mismatch": "ae15a62c6612ed4d81706057ff1c333360b98d40859f611fa73cf4a669829e5e", +"T2B1_pt_test_pin.py::test_pin_short": "f0ae4aa601c20e847319607aaec16cea9b65c4262727bcf524f362d0e93a92e1", +"T2B1_pt_test_pin.py::test_wipe_code_same_as_pin": "8ded8b2bea9af6f02061c5e5d408d01255763c636cfb3b02c8fb351bfc0dd6cb", +"T2B1_pt_test_pin.py::test_wipe_code_setup": "191fd1d4df6cd7a15fac984a2f94ed93f0e943edef72ee5a01f9cbd3af5f9c99", +"T2B1_pt_test_recovery.py::test_recovery_bip39": "1953e84e9949b89e9e04e607384c93c8901f4603204a506c8634d4cc630eafef", +"T2B1_pt_test_recovery.py::test_recovery_bip39_previous_word": "04b78b5d699e1e0b1cae89768a53bfd423c58195ec816ef327ed91c623095cb9", +"T2B1_pt_test_recovery.py::test_recovery_slip39_basic": "d89954a1e77f372b9bd649c37b1161ceeb5683fb49f51ec325d53b5e81b4a097", +"T2B1_pt_test_repeated_backup.py::test_repeated_backup": "263378bf81ab7efa10c174b5891b3b64fa5e2077041ff93e67a65f9280b3a24d", +"T2B1_pt_test_reset_bip39.py::test_reset_bip39": "d42be18eed7dba8728fd74b16ac41f935d6cefeaeef8b16e572b58cd8c9d2b45", +"T2B1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d66e97ee4ae232603421d64049184a869a69efcd154a47d5b909217955bc6554", +"T2B1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4eb70ad57b648594ae9361950c32b30b1d3396cb3c8843d8adc3fa8a3363efd4", +"T2B1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4d73a5ef284d9dccf3099ce86be219536dd1331fa53870ecf70ca1916e3c3140", +"T2B1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c405ff248c3000259977ce67a06dd9f33f178eb66575ec8bd1915c33b093f9e1", +"T2B1_pt_test_tutorial.py::test_tutorial_again_and_skip": "dcdc6ee2dcc2c6e2029468903fb756d75c6aaa40753a8737061affa1ac8d6368", +"T2B1_pt_test_tutorial.py::test_tutorial_finish": "a82c6370e0d7c8319acfe74a2e37aaf1f133f964dcb082740e31fcc6f4696363", +"T2B1_pt_test_tutorial.py::test_tutorial_skip": "5ee678f5cbc020ca47cb90ea913257c2b11bf996c3fc55eac5416703d93f5d8c", +"T2B1_tr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "9e4275d737baa7590bab54ed43f5f74db22cede3a07e47eed72dafeefb3e3b82", +"T2B1_tr_test_autolock.py::test_autolock_does_not_interrupt_signing": "1fac19fec25c7bf249fda3e73a6ae662b13dacf765327c33c63bbb4dc5bf6042", +"T2B1_tr_test_autolock.py::test_autolock_interrupts_passphrase": "e77c173368b5831031ba1cd04747e311365cdebc05a871a02de0e0f4269986a5", +"T2B1_tr_test_autolock.py::test_autolock_interrupts_signing": "484c17fca334e8488bd74debcf82701d6676a773b89008d5f9e80987c62774db", +"T2B1_tr_test_autolock.py::test_autolock_passphrase_keyboard": "7f1cb7658ae93c94dbd76072e6bdad3ac56f4bdc14b2983f214817727e0ac21d", +"T2B1_tr_test_autolock.py::test_dryrun_enter_word_slowly": "ec74a7e17952fda293494839cf6e2c1efd8df0ca9dbdd53baf75a80dca7db13a", +"T2B1_tr_test_autolock.py::test_dryrun_locks_at_number_of_words": "b04a313162ad737a2fb3298c7ba251168c74908e0e00a26722ee58b6590bdc63", +"T2B1_tr_test_autolock.py::test_dryrun_locks_at_word_entry": "5bb321aa93fd6bdd140f5b1bbb5205349419ac86f5b229e93e8b03d4c82dfc59", +"T2B1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "26b6fc6d992b9fe9e528dcb9e782b5a8bc035add5cf61b1884e96ef1075d9c0b", +"T2B1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1a31533ff3f9bccefbd7d68d121eef58301e2175e9e1548f0e01d4a6a840991d", +"T2B1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "dc46ea3e290390364f46aaf9f484c7c67d558114bec77d1fd95c9452fa217a2c", +"T2B1_tr_test_lock.py::test_hold_to_lock": "69fa14a3e990d19c0e1f4ce56122982b5a076de0270e584a7501b5a461879688", +"T2B1_tr_test_passphrase_tr.py::test_cancel": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", +"T2B1_tr_test_passphrase_tr.py::test_passphrase_delete": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", +"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "ebf43ad15288a72818ce05153f7a12e84598b434bc3ed58a35992edbee866ab2", +"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", +"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", +"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", +"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", +"T2B1_tr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", +"T2B1_tr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "d056a3ea289b2734c559149a2e1c7aef4dbe06336cd6b18f807cb143e7d509f1", +"T2B1_tr_test_pin.py::test_pin_change": "b4f5d4fcd267ae4f2557ebd8151c506bc29d66fa6fb2d7855880d3c254a10f78", +"T2B1_tr_test_pin.py::test_pin_delete_hold": "56be29f2726213213cd0b88321c723607ecc2b3cd78e3d8f19839f1e66c6c435", +"T2B1_tr_test_pin.py::test_pin_empty_cannot_send": "39581f459d72da01cb8ac85ed9637aa35d926da477846453ec7e8d0196753a6e", +"T2B1_tr_test_pin.py::test_pin_incorrect": "11580252771ae7d67f9a3ffe0fed6bf45e12b6c330657789fc2187b365967f10", +"T2B1_tr_test_pin.py::test_pin_long": "5a63418b2ac43f70ac8b020a8359d0101fa597b08efbe095c0b52bd85095fd61", +"T2B1_tr_test_pin.py::test_pin_long_delete": "5a63418b2ac43f70ac8b020a8359d0101fa597b08efbe095c0b52bd85095fd61", +"T2B1_tr_test_pin.py::test_pin_longer_than_max": "0d475a9497b2b8f4bc0c0a52ba90016ba362e4803d24833f1d6340f8130bb726", +"T2B1_tr_test_pin.py::test_pin_same_as_wipe_code": "f1e55d26459424663f8ade46eb84f01beb0087f5c0044a24f219f56c7fda6d36", +"T2B1_tr_test_pin.py::test_pin_setup": "042f53278424a0e5b5833049e50cd86e1f18e6e87bb80720817a32fd5c815bef", +"T2B1_tr_test_pin.py::test_pin_setup_mismatch": "feebdd4be5408bf1fa832b101a90d0b608c7e7b2dd29e9f7f008310cea8613de", +"T2B1_tr_test_pin.py::test_pin_short": "56be29f2726213213cd0b88321c723607ecc2b3cd78e3d8f19839f1e66c6c435", +"T2B1_tr_test_pin.py::test_wipe_code_same_as_pin": "b4f5d4fcd267ae4f2557ebd8151c506bc29d66fa6fb2d7855880d3c254a10f78", +"T2B1_tr_test_pin.py::test_wipe_code_setup": "b4f5d4fcd267ae4f2557ebd8151c506bc29d66fa6fb2d7855880d3c254a10f78", +"T2B1_tr_test_recovery.py::test_recovery_bip39": "228f7dab7d9e9dcd0599f14cca736042827a375cc34cb2680471dca80f324d9b", +"T2B1_tr_test_recovery.py::test_recovery_slip39_basic": "5a2dab2daea441aa627ad99e85102501521e0ecb8c8e94f71365deae0e156bc5", +"T2B1_tr_test_repeated_backup.py::test_repeated_backup": "4666016558123ad3e9b95f5b1598f392d929867db646ce8714b79d4531b7ca18", +"T2B1_tr_test_reset_bip39.py::test_reset_bip39": "9b44bf1208451297f046dc3ba06cc044242f20cbbe617b312ac79255cf174d3f", +"T2B1_tr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e36d425ef7420d0a79a2ed37b0f5c5c7f99b52a3eb5ac24880ced92c7e8608b3", +"T2B1_tr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c446fb2dbb489346faf5b028a84192b274714a1229baac221790eee8fa4d5151", +"T2B1_tr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b405b42323046968f3e6fa650e4ca1ac5bb05c7eadd32c55cb18caf7df781dab", +"T2B1_tr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d56f0ec6a747dfd7d88989141c4eeca49344ec7197179c292bb50ec511db6378", +"T2B1_tr_test_tutorial.py::test_tutorial_again_and_skip": "ed36b4718a40edcc386e733e4ecf2e5850c91bb83f0c1c36a6c1fe87d564050d", +"T2B1_tr_test_tutorial.py::test_tutorial_finish": "0a056ad32d74f4834ab7687a8b8ebb8c0a0277ddc8c9b62203781fa400cf3ed2", +"T2B1_tr_test_tutorial.py::test_tutorial_skip": "f1606326fc53b27b71a405041f2a073d9a6d5889331ab43b8204bb760b881f07" }, "device_tests": { "T2B1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "19c5eb360c23b1a362db3813421f0772b28ef90f65fe0ddc9ae8c7831bd2cb0a", @@ -2189,6 +2326,9 @@ "T2B1_cs_test_language.py::test_full_language_change[en]": "1a14371860d2d9e3cda9c4b8a3ca3a1b9f45e2beb0eb1c26bfcc20c22c7cd25b", "T2B1_cs_test_language.py::test_full_language_change[es]": "1db03f150dd5b88c7912d6afe88d7869ca6ab407e58c59535de56440aa9c05c6", "T2B1_cs_test_language.py::test_full_language_change[fr]": "0263ccab0d6aefd19896c2d96a7f6f9a8871257392fcacc0c8fee6212ec340bf", +"T2B1_cs_test_language.py::test_full_language_change[it]": "2e10f851ff06de5a8f2a137b37b395f37704ec3355a1ac2cd475f3a5a7221b14", +"T2B1_cs_test_language.py::test_full_language_change[pt]": "e2d2543dea292d46e68b212434d5cc3d4d0f72a82354256c005c5ed98c2b7cab", +"T2B1_cs_test_language.py::test_full_language_change[tr]": "e94e9220c5bbc93e4478f452355468f126b626e6ca3be686fbab0ae550a18495", "T2B1_cs_test_language.py::test_header_trailing_data": "abbf6b257e8db657a83cc80f0fea86a46fadec4aafb7fbc3bf8a50123cd73635", "T2B1_cs_test_language.py::test_language_is_removed_after_wipe": "940a6c3ce9d5d7a2193c0218ec44597e5e098d4a15693ade14a7fffb080f5aec", "T2B1_cs_test_language.py::test_reject_update": "a5bc2e6015b97e3cfe40b400b8139f2e9890d391bca3f934497b05b3308618ed", @@ -3553,6 +3693,9 @@ "T2B1_de_test_language.py::test_full_language_change[en]": "a35bc4501de8bae861d757421e17440a21f7d4f3ce1a56bfadabe9e5b467e4a2", "T2B1_de_test_language.py::test_full_language_change[es]": "2fd72d78dd1d1176ac6aecdfd3ea790aa2aafac0d705b406d44c0e9c9545002c", "T2B1_de_test_language.py::test_full_language_change[fr]": "fda57886e4c371f3219a29dd54b01de43e96bbb94a6fcc7d6c9e1bd1e7e30ace", +"T2B1_de_test_language.py::test_full_language_change[it]": "56f7b7084574bd9788d73ff3cba6089eee7234aa93c3140d25239f1f324ffad8", +"T2B1_de_test_language.py::test_full_language_change[pt]": "f379680255757223d437f23ffffed7ecf13296aef4eacb5fc22b03544352ccb1", +"T2B1_de_test_language.py::test_full_language_change[tr]": "0ec841906d2d597428e38d71d2dc4d9cd91fb504bb1f705e9673683cf2d24043", "T2B1_de_test_language.py::test_header_trailing_data": "8d546f37251d84f6493b199cb84219d818def9318c908e3fb7feaba788862028", "T2B1_de_test_language.py::test_language_is_removed_after_wipe": "146552979024b0aebe9b11475131d71c0e6ac909d2b8e322af848401e0cfa316", "T2B1_de_test_language.py::test_reject_update": "c030eaa1b84ee548a68f0e20ad74201cbbeea1f09095dfafe0465020f3215a7a", @@ -4917,6 +5060,9 @@ "T2B1_en_test_language.py::test_full_language_change[en]": "a9c383b584d24c5aa9623b7955fe3e45dcf6016dbc0327a7ce9176ecb0e4d5d3", "T2B1_en_test_language.py::test_full_language_change[es]": "94ead6f9d0f308f60ffd135c9bbd5012a30f05b4f44fdb22286ae259bef9e205", "T2B1_en_test_language.py::test_full_language_change[fr]": "2f3a0e8541cc7b96dc983d4de2149e4e2b230b43e1971153ec6bc82e7dadafb8", +"T2B1_en_test_language.py::test_full_language_change[it]": "70c9aed14d8c1fe7edce6845896eaa011d64b559aaff4e3cee23d4851c15ac7f", +"T2B1_en_test_language.py::test_full_language_change[pt]": "9b0ea7f11a9bd06518b0ebf855190ce5af3246f948925a9cce5491f05c749f5d", +"T2B1_en_test_language.py::test_full_language_change[tr]": "a030f3ca4fc62db73260e896eb0d6ad536fb74d015b39f310f9b6f11dd300445", "T2B1_en_test_language.py::test_header_trailing_data": "b0f85bab7d392d0dc605b67a47ddab802d355f71c6038b44b243990e1f73430d", "T2B1_en_test_language.py::test_language_is_removed_after_wipe": "e0c233271abb84b2ff487e3e2d8f4f111453cc7315af6e8c4d376dab8a9f0310", "T2B1_en_test_language.py::test_reject_update": "949fb112e684d3fb8a204a8ce15a202ebe9613bd3a453408138b3e54bb42e99a", @@ -6281,6 +6427,9 @@ "T2B1_es_test_language.py::test_full_language_change[en]": "5684c4f7e6ca01d85d83549d892ecc4fc0277b46dd7294d0d7ef436a2f4bbf6d", "T2B1_es_test_language.py::test_full_language_change[es]": "51aee9f7f7e76839471274c909bcdd2c117e3fe6d9ca634ef71f1209dcb2271a", "T2B1_es_test_language.py::test_full_language_change[fr]": "0f7df785e611deec165dcce914efbabb497cba640795c8b90f396c223af7f3f0", +"T2B1_es_test_language.py::test_full_language_change[it]": "61f9a29f08ed708a8dd712eb8990c6a09e30bed0b2dd55f364bee8ed15f96a1c", +"T2B1_es_test_language.py::test_full_language_change[pt]": "f670d7810fed8c300c505299514aff7d45181d4ec2665d50801edbc4623b824e", +"T2B1_es_test_language.py::test_full_language_change[tr]": "cfbca47badabff06cadc4c4352d48a71d669e2b6182d3f2825067dedf230b4ae", "T2B1_es_test_language.py::test_header_trailing_data": "112c52b046074513671e25a0c27fb8e1e52c94d403be29e68890afbaeb7b5fda", "T2B1_es_test_language.py::test_language_is_removed_after_wipe": "02719a4556b8fd9f6f59e0f9bb0fad899c5faa42700e76c464d51282f6e441ae", "T2B1_es_test_language.py::test_reject_update": "72b5cc4bb1d3a1024ef5348356565e711392fc379afee08a9d4275b7d627c213", @@ -7645,6 +7794,9 @@ "T2B1_fr_test_language.py::test_full_language_change[en]": "5c8ccc0eb1be8baebf3d2cd0a60b022728933ac4180f27a0caa73a5b9fb0f642", "T2B1_fr_test_language.py::test_full_language_change[es]": "e27434b09eef1556fe6fa0b050fb2b43eed6b4f37d622b7831a5fcbcde3f72bd", "T2B1_fr_test_language.py::test_full_language_change[fr]": "7fae72778d7111b0d7746ce3fdfdae724415f651b2c3e195da55dc3cf6e24f8e", +"T2B1_fr_test_language.py::test_full_language_change[it]": "63b04dbb814f36ba7255debf464a6038d6772575ac027d670b3389848cad20e8", +"T2B1_fr_test_language.py::test_full_language_change[pt]": "826d588d512a1a96846274c4d9139e9d2aed769d58117fd40ae8c05558f93dd3", +"T2B1_fr_test_language.py::test_full_language_change[tr]": "3a286516bad290973bf33c6caf35072342d98d33f6357e924befaece9410ee33", "T2B1_fr_test_language.py::test_header_trailing_data": "30a19ba738d7bd2b5309351740a5102da462e73c6ec923a0ae92dc385c1c6f9e", "T2B1_fr_test_language.py::test_language_is_removed_after_wipe": "2e4b88e512c805e6a90bbfc53ea207bfef270849ed05b43c4d4c4350634a3f5b", "T2B1_fr_test_language.py::test_reject_update": "4c1d851a4f7ca6075e71d096a4b124b31f8ff280d609cc2495ded9750f057b51", @@ -7773,7 +7925,4108 @@ "T2B1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "58d1eb4736d91116baffe5154f7325385df8df4c28cb6de617156d2d6b595e5b", "T2B1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "ddde2a66279aa6cf32676a4eb1602cbd93ab757cb3478b6141e6f7c76857cbe5", "T2B1_fr_zcash-test_sign_tx.py::test_unified_address": "bb62c591f6b5bd553148ef2f9d7d0308a95425d6df2addbbd8af0703ad9eb251", -"T2B1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20" +"T2B1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T2B1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7159345355dca093a7f826d1ea8d35f2581fd7c8544be4f57ec03ea1862b5ab1", +"T2B1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "a1c29e18b0722dcbeccd97ca828a9ff488f98809349a78336c62664ccaf00399", +"T2B1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "80c02b22124cdace3062d1488c2719e7f0f7736991b08464ea122064be4633d5", +"T2B1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "54db22ae816d08421321b87024a3b84307e6199f6f3b81de54ae3c08b0bfe1de", +"T2B1_it_binance-test_get_public_key.py::test_binance_get_public_key": "2be3d16c20f6cc680c16d739d67f0735d301a29a5f8580525237a3267d1a2ebd", +"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "c729c65f14987712071f90c84ff2a09323a5a3990a76c2a8249d0dd44713a87d", +"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "2d1301f2cd8fc129003b737bc8486a2f94b9c327ea289706c86a3f9e07352481", +"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "5197a4b85ab20f890cbd6e87459dc5580365361dc4cd6998190a193412e353bf", +"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "c729c65f14987712071f90c84ff2a09323a5a3990a76c2a8249d0dd44713a87d", +"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "2d1301f2cd8fc129003b737bc8486a2f94b9c327ea289706c86a3f9e07352481", +"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "5197a4b85ab20f890cbd6e87459dc5580365361dc4cd6998190a193412e353bf", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3db11fe58c6397eb1c4d71e480264a1902b90edebb6e4b16d826ea4d72aa095e", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_get_address": "da64411448dde2ab671cbd93035e8f9e2aa66237cdcbe4fe259ad6ada25ad4a9", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "9f090728854f87c843c159a1a14902f4f064e254da2958e5cb3027ff987c3ea1", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "65ad9ee63f388c099c2fe461e0d9ca241df39320ff0cec01507424e60a0ac942", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "eb46042e9507b7a2c089633e97d4d7b9e3534f718def4ba72f1930ba51ee39ea", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "eb46042e9507b7a2c089633e97d4d7b9e3534f718def4ba72f1930ba51ee39ea", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "332d914bf14f0b18ba3282995ab7d7e9588b9b576d659222f04ad51da904eb9f", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "c99b2bf40a38fa676e8362f5c3ae84c5ac30079f115420677a3408d01151e6a5", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "bc8e4ee4ac685c43949b2dcdc8464c848f28f1cb92921f1153ddd3a318de1d2e", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "b02384360d3e055353fcbaf1e7f70a67265d04264f49878f7fd3e2d8630ffdb7", +"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "b02384360d3e055353fcbaf1e7f70a67265d04264f49878f7fd3e2d8630ffdb7", +"T2B1_it_bitcoin-test_bcash.py::test_attack_change_input": "17a88a4f103d3e8ea9bb5b8c8578cb4b7838d0f62672185b27762603fa14f195", +"T2B1_it_bitcoin-test_bcash.py::test_send_bch_change": "a20b63377ffa1de5948abd867934bb4127f9c8ded37ce8a66effc89c5fa5e047", +"T2B1_it_bitcoin-test_bcash.py::test_send_bch_external_presigned": "5d9cb6226f67eea2eb632e784955082401faaf4b69c86f6402f2e1a59a9bdcd1", +"T2B1_it_bitcoin-test_bcash.py::test_send_bch_multisig_change": "43c13da6d55361b533caf715b2d0f1bc7fe5d8b87e00ca760546b9abeba7002d", +"T2B1_it_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "ce38ef812c58730f6cb7639c87952e6e212cf74d4b00ebb2695ed6b640debc0f", +"T2B1_it_bitcoin-test_bcash.py::test_send_bch_nochange": "b89b72f26f519b07309a3119edba7967fc79f46f6135bef0c07794d485494fa9", +"T2B1_it_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8871e04dd7dcf20686abdefd3045043ac2ee1842cf50c3da3403ae66a2386f71", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "d4d3e2578fedfb3cc0ebdd6d63cdac136987c3f3b0f71760d66b66ca35944546", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "34d8db03c4268998c4ae66ff778704ef6e125d3dbae40dd73f5b5fc99e453ff0", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "633f1b9273b757d3962c744f9b1e2b4bd43e8303e723cb5ea56e9489ad4a773f", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "9c576ba2e007b6fae7941e27804d2688d3dddff838ab286270f73d5e0a57e2b6", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0ab1596738d15b7caa84e457cdba1129cf84ac7ac0550f510df56dcaa106a491", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "dd5e15ee28209a2b7cd1621115de54e7e224347dc41270680565c1313b57a945", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "65a3d4663adc7195a48acd2a3469c6a537785f3c3ef412e3c19b4d3881b917ff", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "21ca467b0f1ccb6b40a577d89e60391d2db47838de1ec5c747fe31876c3cc3ab", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "09f9576b8301e7b96cd131a29db160c5c7ffa90f78c35897e7e22b731f17aac7", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "79fcabf9ddc8fd20970ef548b191f94293b9c030130ac4a9678c4328f74a82f2", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "a3ae7785964a9b13d805d0941578a52b28b71cfa6c5e3f67f7e60ebdeec87245", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "04517faa53fe790a51d353991ce87df1d0cb6dac2a8e5873425fac0abe99a0dc", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a36d72d7d5c7bc3e0babbba4dd22f911baa3ac80e3d89819e632a6917fe2f45f", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "0cb16e5ab29693e3bb3ca702a65500e290c666db5f1c159905cfe599c056dbfc", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "d355e231396857bba1d425cbdf5e93b659787ab97cda763cc6a05a728dc9cc98", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "4422e5fe1c0aabfc3be0a5adf5986b353c8f46ce63ec43af3c447d119cf89a9d", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "d4d3e2578fedfb3cc0ebdd6d63cdac136987c3f3b0f71760d66b66ca35944546", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "34d8db03c4268998c4ae66ff778704ef6e125d3dbae40dd73f5b5fc99e453ff0", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "633f1b9273b757d3962c744f9b1e2b4bd43e8303e723cb5ea56e9489ad4a773f", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "9c576ba2e007b6fae7941e27804d2688d3dddff838ab286270f73d5e0a57e2b6", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "0ab1596738d15b7caa84e457cdba1129cf84ac7ac0550f510df56dcaa106a491", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "dd5e15ee28209a2b7cd1621115de54e7e224347dc41270680565c1313b57a945", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "65a3d4663adc7195a48acd2a3469c6a537785f3c3ef412e3c19b4d3881b917ff", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "21ca467b0f1ccb6b40a577d89e60391d2db47838de1ec5c747fe31876c3cc3ab", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "09f9576b8301e7b96cd131a29db160c5c7ffa90f78c35897e7e22b731f17aac7", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "79fcabf9ddc8fd20970ef548b191f94293b9c030130ac4a9678c4328f74a82f2", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "a3ae7785964a9b13d805d0941578a52b28b71cfa6c5e3f67f7e60ebdeec87245", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "04517faa53fe790a51d353991ce87df1d0cb6dac2a8e5873425fac0abe99a0dc", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a36d72d7d5c7bc3e0babbba4dd22f911baa3ac80e3d89819e632a6917fe2f45f", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "0cb16e5ab29693e3bb3ca702a65500e290c666db5f1c159905cfe599c056dbfc", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d355e231396857bba1d425cbdf5e93b659787ab97cda763cc6a05a728dc9cc98", +"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4422e5fe1c0aabfc3be0a5adf5986b353c8f46ce63ec43af3c447d119cf89a9d", +"T2B1_it_bitcoin-test_firo.py::test_spend_lelantus": "28e9fb58fba2ac5cee9dd8a54222d7ec59d088525cee7ab301f0c31686b63db8", +"T2B1_it_bitcoin-test_fujicoin.py::test_send_p2tr": "4fb14994b5e3ca3e2364fb44ff3dce45a8bc95febd19143d987e687272195092", +"T2B1_it_bitcoin-test_getaddress.py::test_address_mac": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_altcoin_address_mac": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_bch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_bch_multisig": "2c727dba1f822fd7b919aa89d1fde2c4d2cb64d722c8367f0cc08f038e9be33d", +"T2B1_it_bitcoin-test_getaddress.py::test_btc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_crw": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_elements": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_grs": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_invalid_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_ltc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_multisig": "de60ef0573a93776971604071f31e4a9b7003b32bf4d40c0f4ae0cef34772e39", +"T2B1_it_bitcoin-test_getaddress.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_multisig_missing[True]": "519afdd01177996ccd9571f5dcc5072a2b9fb0e79e9d8d1c9f15bbae21bec869", +"T2B1_it_bitcoin-test_getaddress.py::test_public_ckd": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_tbtc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_tgrs": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress.py::test_unknown_path": "415a8d8667d1f8baef97e5a5e0ca870fd1b407e2dee1c54d165c82d3cb35789f", +"T2B1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit": "2cb31a20aa4aac1a3567275057569a4ff8e01718c8152af08ca7b10b428dba6c", +"T2B1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "6723b3b9665bf15e2f67cf29f9a6cad5cd1d9bfadb184fa5284513bc0dafa71a", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "3afc5beb4eef92a339e3243bbfee315ddc04e1013f374e781ac419005329818b", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "9cd7cd37a181dcf2cdd86e9f673ee07fc44f7b6f022c489b3b74e5b21c71a6bc", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "bb6a5f7ab3b909037d0d74e99eeb4bfcc5d1bee3dd2f012752cefa1aea7c1a70", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6370e508cafe3ae4c5b00fd22f9d4b776667f1fcd9d971c0a2adf2cde8d4b631", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "0359b588f4bdcc9cdd98fafb30f8a3dd79606d8ab540ac2650148456c06f1892", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "d1eaa7701aa81d422e44657b98f8808f1499f2fe44365e370b6f4c4d4cb734cb", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "9716c3dd7d74a8b434f3339ff8eac36133d475058438410a49bfa8981b09cf2c", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "c030828cf418abc10da897ab1bea37eaf25ab0acefe32349a17b87a6f149b9fb", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "196a015c6d75a802133edf22b800e2765c14e7bf1a8301748a0b066b5e46e83e", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "204ad587f6d1f8f66dd92d9fc6f1334e5dea188b70baa50cb5f11412538663b9", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "00d641e17a9387c5b72de97f1fe3fa8ded329ad5302a915396e18bbaed8ba97b", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "1ebf546f7685347c8041c86d6216a638f988da1546db69bfbca9b1935b9d6111", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "3754da1f1b55a4e969bd6798ed7dd9bcc8f78444c80b42813d17184e539a331a", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "7ae043a0cf3d1dec08c75e9834cf18914ac888c026a5f38d3f5bf1221af2d33f", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f208d5ba7f51d23e107c2af9d183e0917d8b756c3e2f8736bde9f32e8ef7d1c3", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "a80535a2accd432cbdc3e68cc0f5414787e53efb9f9f68fbc23e9f2a51973b7d", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "accf1cebe815446f009a3120013ed2cb067734823985938ad762d7e2e5e0b1f6", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "573c0139cc16319c606a45dc931b156dc7dcafd52645e81a3d59043d63ece923", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "bafe9d80e9759383a0cc7351cf0666376ec4022481234addf35ed69c3e67eeb6", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_15": "59b8b5fbde701e0c544e2ee90e249f91b20c29033d53bfccae1b240fafbbeb83", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_3": "60903487f9e05d42a44e849b2c6ad0cc170191b9432c1925ad802c41c49a830d", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "aa3a84343bed7f3199ed77c70520a3e1a6dedaa6119cdb5a30e2bdf60aa8c4a6", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "aa3a84343bed7f3199ed77c70520a3e1a6dedaa6119cdb5a30e2bdf60aa8c4a6", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "33e4481617d3ed3b173b264e5f300415f25826d48acdc5d9bcc13652653cdf37", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "9588d1ebde0ffa11e9174c4cd9c398524a1e67a7e2bd7d3079f1bd7f28044e06", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "53f0d82d0292d2a43780f22e228478b21734f53ca4d2459a26ec4540df8ba20c", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "809b4b5fe87e597a8e0bd5d891656f52b52f175eb786f450da3fb3405dc06d74", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "e968d8f7ca4ad9367360891201bd5d74e178efb5fd11519ad802b34871e175b5", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "d2c11cde30186f11929a5ad06169e1efb56863b2c47ef322d1abc31d1a1d4f1d", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "9913027902ecb92cfd81e5e6eaba3433c4d33bf2d3c5bee95b01d67b1f40f429", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "c05f2346861e78de90767e42c1eea189ad1ac8f585a238f5c5bbbbf874ca786c", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d11caa3a8689244571294b57afc40a21ef0a8bd59817cd79e837c31dd90626bd", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "addc0c41a4ff232a8684337d9ef25995aa45afec8b4a1c867906027ed8c72508", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6bfdd1573cc883763f9f5fece4ad15a36875de6e3113014cd094d6ff22a1933e", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "473bb60f59956579d50ef0e79ac3527895d9e091274a1804a1e42d4ecd767d07", +"T2B1_it_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "69d7e0613dd7027c0382f659c67a7e0fb689b3ab4d9b8d5ca979a334756cb5ce", +"T2B1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3fb6bb4e7ea5a6331afa2fea204cff9ca5af7ccbdca528efff81a9fe50e8bd80", +"T2B1_it_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "6e2ea50212e839aff52153eeb5262a84e2df817c557f4b07738eb1d403bae0bc", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ca99eff8a90bd1a3daeec890dd8431ef5bafc1f2e5b67c8755f8e45c892263e4", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "fa2331a1411b8cd490da0835e341831389bee589715e2bb39271fbce7b629d9a", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "f38c3c62a1dc692d14fc835fbc54768efe44a03ce87ef1138be3b3cf0f59a04f", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "35eebcf06e63231fec0f7b50395719a7f9230183b90c178e68bf3ba336efd10d", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "97a872b1c37de136d374405b05db7b26c0474a461649f4fa7d416cba20e3dde3", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "d10e770a46af74686c00bd746eef4cde76b30ca4c5d120ec13ed3fb18a193083", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "cdd18c5e622e92341cb69909a6c7a373fd0f6d65c9caa7edb09b928b2d82b8c1", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", +"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "0cb3306db325ea1d04d9caf1b81b62ddece4a8b88ed72b97868808ac7c43ed0f", +"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey.py::test_slip25_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_grs.py::test_legacy": "db9e2e1235e20d6e64ff3ed0d78c9a5137cc467f8ecca9fe0d629cec2211842d", +"T2B1_it_bitcoin-test_grs.py::test_legacy_change": "0ca672b182d0c0036db6b8072f984320a519817901ad4e2ada7dfa8aba0611f1", +"T2B1_it_bitcoin-test_grs.py::test_send_p2tr": "8191c18218f360df7585feb72556223136bd9e6e1135b4a855e1a246bb4e5793", +"T2B1_it_bitcoin-test_grs.py::test_send_segwit_native": "dbbf1c392e6d2687edb782a5d7090d141992636e58503637bdf0f560a082b727", +"T2B1_it_bitcoin-test_grs.py::test_send_segwit_native_change": "717f2f32c0d523bc38cfc11f23b56251ce7b5c3946804c4cead7b115c6a88732", +"T2B1_it_bitcoin-test_grs.py::test_send_segwit_p2sh": "22e0328d2f52c166850ccdd00e0d3f414e01cfb8f379918b35b9ee1a25ff1b72", +"T2B1_it_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1c31851510868cab9ec3f3722290c4ac66d7e52bfde0c7a830af36cdea92cfb8", +"T2B1_it_bitcoin-test_komodo.py::test_one_one_fee_sapling": "0c32a082b7467917ed464dc037807a8e40fb33456c2efbf456bd6db28d95492d", +"T2B1_it_bitcoin-test_komodo.py::test_one_one_rewards_claim": "df848f13ea93327deedb09e9b4025c3989ea55d38816ac4faebd0d9cd061a464", +"T2B1_it_bitcoin-test_multisig.py::test_15_of_15": "425436af2bd7f84dc3255204e196318c1b01f9988321b88b52581d068507c740", +"T2B1_it_bitcoin-test_multisig.py::test_2_of_3[False]": "8ae8b1ff829fdabe77ac0aec856b9fe48e74c930e900536b75f476f74d55157d", +"T2B1_it_bitcoin-test_multisig.py::test_2_of_3[True]": "b3c04212212f3cb861e41a30e73639b5433d3b76380a6a401c3e4e55ac95fd95", +"T2B1_it_bitcoin-test_multisig.py::test_attack_change_input": "124202ba14ec37225a6eef68eaf8f718d7ca26b861e48c7864b263e8541c8922", +"T2B1_it_bitcoin-test_multisig.py::test_missing_pubkey": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_multisig_change.py::test_external_external": "ff1350c99b21121b3263987e67ea71a0a827dc8fe5efc3ad706f99958bd8fbca", +"T2B1_it_bitcoin-test_multisig_change.py::test_external_internal": "e683993d37e0d79486568f6dab6f7e25492fb29f6ee127d001007ac2d1665d0a", +"T2B1_it_bitcoin-test_multisig_change.py::test_internal_external": "2662ac5a1aad81e9954b45a59adf4b3ee4398b853f37817b02e9a98d84109e46", +"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "c16192b85e15cc993b625e91440ddc28e1194cc8c08eaa183328cefff9646162", +"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "8f62acfd2bb1e72d5c6efa5af5b2bcdeb629ad3e484141756a234b99327e7eb4", +"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_external_external": "475577f09d12437ab5f489af6b2b08b3eb5e66d2acea61341447e4265e7f917d", +"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "fc6ddbbf0d81d7540079c39a2d1379caf4aff994fe37acb23ab047c19b3e940e", +"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a5a4d2f30a61ae4187bb093f338ea8248ef719314769427a614147133c4a51db", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "380bf30489d4d9adae11be33b0f77a243a5ccdad807e51be1e958fd393c20252", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "64ad0a066a0a200524d36e14476d3322b5926f105d436ed68d2993089161af64", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "43f3033c01fabe5741c259688a495c2faa11e0b8ee2677c8c7bdc755b7429793", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "dd2b29f112c47c7046ceeda0d54878803d9bb0da292cb2f95edc5d85055c17c1", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "48f7b297becd8ce010aa3d3d3e6e3e8504ae7ed3fa5db60a68bb33081ce94396", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "280e1a695d04b607aa97ba667c49f426174340e24f73bc72b3be731ae137acca", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "35b463d4febb6454e3e0bc60c43b416c983be65b44909cfcccbf20f338336b3a", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "e9ad5b40ad9d30dc1f932961a462ec0c604966bbbdc0daeb819367088fe9460c", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "a465eea61611391136ab3bb36c979d74e690ec0e89960b6b3aacff2c1de8a24d", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "fc86d79e4497d688a60aeb64b81991080353e0f07f006c306ce3e87e75b4aa0e", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "9d9512c59562c295189c8c70da59c22662d0564963d8ddddab640617b65499e9", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f62cfb8b1e3d3249041139428a8b8727e2ab0d2c8b05cd1a608a095d7162caff", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "36a1e6a1c44529a08c05e2c94f73675b6f026ea4909b3d16d649dda70e39ee00", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "084c8c1abf026f34e0e60b14bcd0ae5c4e005ed53496070310945c6d90271ed1", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "deb2361ce62ca292a25b7b1b67d062230094c9a57e74813f85d170904a5f018c", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "2bbe915a280cc69e4a03f5011f916cb7f3f713ec8ac050bdde81fb2ef39de370", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "7f6b8ad903a79b3014e321e6187a372254b727cf87e02dc739712a6c8ac6df57", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "810238dd43447242c8ffcf68c4d2e0599698b72b20309b956e1499f173297b69", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "62fd2d9c92abdb0a4d038f98c4de98d806f947cc784e5820ff93744b1fcb259e", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f62ffd7b3af4b3f109298ee73f1d9532a5999e02cc2be160835ac87379a755d6", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "6dcd52850084dd3f4d1b72a536e7601512bc11f5a3ec65818895fdb7f5ad4110", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "59290decb7cf31ed0e8bfd27bd75cf6747e60726816fa4f9b3ad5c672be2084c", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "c7e2318149f25d7e198504ed36a560486586602a1c87b165d0a6d42549e4e342", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "985b031171535dfa2e0275ca00abf32adbdea56e0a0b7cf2a02abd8ae7815f44", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9c16d2284eca33795f3b9de72a44937e1ccdfe83d95f1f24a2bae01cd489e61a", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "d4b9a0701ed821961f57e0bc808d77d90366323c1fe5870d728338e10c8a81ec", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "38e47eba07544d9b9300487380e6552998dd534538ce4cf41aa245e08b330352", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "9c6951d678d9d75ab026a9af2eee3cdfd4702afa39b9de5e144e149045624edb", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "133b59026ca3f5e397bd04351ff8c0c93d5f42afd3c32ba6780d2c02663cf7eb", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "b548ab25bc81c705cc811940ac67d30b0eacb1c2c48ca5ef51877ec5ff6891c3", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d36b3fe271649b7b80ac5b38f136c8309746da8b38bc9829350a5419884fc9a8", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "8f5bcd9bfcf52f5fd7c7d57ebc9e987f7a05b20014f2a3c45f7b6d5e01d0a3ed", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "37a967e5ab15116199ebf69fa69a31588be7175d4e1ab5da2ac6e036a8f88ed7", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "38de8b0ce1f89b360f5fb66383ea7a095ebb68defd3678620f5090bcd222b87b", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ec71ad65e0f4fa0f92c23f1bdda9f6873909c70157a613f43bd68a371bb99edf", +"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "9df86742bba4951d6d02e4fbfa172080f659a1969e765fbdbe6602a3daedebed", +"T2B1_it_bitcoin-test_op_return.py::test_nonzero_opreturn": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_op_return.py::test_opreturn": "d56c96901d4c5164fbc92e7b69d2b854c2a08ca196d7fd7259ed3994f89484ba", +"T2B1_it_bitcoin-test_op_return.py::test_opreturn_address": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_peercoin.py::test_timestamp_included": "d2965a8b16f94f971b6e787889ae0846dbeb8722816d62e323f66fc0c4cf53cf", +"T2B1_it_bitcoin-test_peercoin.py::test_timestamp_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c59ad64f4a86eeabcb7d956165829e6c0c59377ded8cb7cfb6ab5df0a6642bc4", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "02f314d8829d4c876a4cd877d546f6074b19af4e2d9add23e17b1fb8d97fe440", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "02f314d8829d4c876a4cd877d546f6074b19af4e2d9add23e17b1fb8d97fe440", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[bcash]": "f5ccc25e694e2061433f48828ea37dc0fb012d043b6b25460140e0a25b451cc9", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "12832bbedf4be7778a64244d93ef2f7975827ff951a8f08a5a665b0f40171633", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "ee3fcb4cd94e40c156dfefe23eb6fa3c04246bd6ed14a76494766b787c5dae6b", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d74dec3b17e0c341edccc94109eb763654e41f6d3f2ac7a3b02391686c6e977a", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "77b42ef9e12c95e9b03284905287c3da2d62103bc53094a44fec04bb757178a1", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "9df993c6f8a6b409bd8ca4a136503d061ae6c38afa0123fbee44059d180aae57", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "9df993c6f8a6b409bd8ca4a136503d061ae6c38afa0123fbee44059d180aae57", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d04f6bf08fbb4c43695a4bb31ee03b5b5222de67a413c49f3692b5b0ddb264bd", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "bc8c70cef271c651a24deb2f5478b0410c9f8df7c60d6355648f1ed5b0ce178e", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "2442069515a51832b05cd5a7f2a092278ae3b0afb0fbf75f64a44cdfba4bed78", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "2442069515a51832b05cd5a7f2a092278ae3b0afb0fbf75f64a44cdfba4bed78", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "18b6507132e222e8601918a3b65cdef3774f46e77d4a577d5feffc945176b702", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "2c71f28d43971c927fd50758712abde8192de197cfa80dd8e91672cfa5bbc089", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "95666595c11a9e13177d4c2898749fc1f5bd767a4fd5c48dbda58ece631ad656", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "95666595c11a9e13177d4c2898749fc1f5bd767a4fd5c48dbda58ece631ad656", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "f89a3b3bf3fc1b8587181e1bd21fd9cc3bd30722c2cdb76ecb997d68bb2f82bf", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "132b68265558c0171169b5609c8295eed33f71c956b8b3e8ed61d74ff092589e", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "f24851ba952b8a5eb3ab2393e822329bc7e4b020eb10dfbf8f54caa90fa508d3", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "e34e5c1ce30befb4ac33adfe62e62e1d904fa5bb14bc3612a64da7600a60928f", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "081441aec2c10bc7f744811a0786b09ef9222fe21283883c458c97c76324af79", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "2093352e93963c396a52b84dc9f7b5f3147f0448f252f3306be80adaf1d90229", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6924c5558f43c2c3d52fd9b257292c27e1be2f742a3c6f7d9eb071174c2d69a4", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "25bf1e20d5aad26d1256a0f96d62cd905df85bf3edf98948c0a1e16ae95b40fd", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "30e4560f71856acf522d102d6f1b270463fd7d733e173722e462bbd63a1114e2", +"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_path_warning": "3c3bb89fd797e8f8295010d80a14298a3489437d3acc8148e78d8b612e917910", +"T2B1_it_bitcoin-test_signtx.py::test_attack_change_input_address": "d0361c30be4fb398b093098b24c80ad4754cc2d30f90b47cf544297d540f855a", +"T2B1_it_bitcoin-test_signtx.py::test_attack_change_outputs": "a3f3398ded2a0b42421df121c1a005a472192c4d9007efacdc3266f8d1c0391b", +"T2B1_it_bitcoin-test_signtx.py::test_attack_modify_change_address": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", +"T2B1_it_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", +"T2B1_it_bitcoin-test_signtx.py::test_fee_high_hardfail": "f14a68a2d9e569e4397debf94a4807105584af3a48a08a5fed3a1ce1d7c53765", +"T2B1_it_bitcoin-test_signtx.py::test_fee_high_warning": "fa3795db29a50c979802bb1c826c7abca7fc98d1665d15e3ec45f20658a0e7ed", +"T2B1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx.py::test_information": "46a5765917fe824886a75e7dca1878f26726956010a2d7112671acfeaf1b3461", +"T2B1_it_bitcoin-test_signtx.py::test_information_cancel": "159de6a4f89b9527b9137876d87b97563570a6a56e7da3d2830ca472fda5b521", +"T2B1_it_bitcoin-test_signtx.py::test_information_mixed": "9c72b7745cf437b1e6a9f0176f2c4ee28eb6c54192a77039dffbaf450acbaa46", +"T2B1_it_bitcoin-test_signtx.py::test_information_replacement": "c9cc42af742e7f5914e65f15b2d9cdf804efa6f32509c554d92345b52966c591", +"T2B1_it_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0085a00e3971059e97468b142d577caa2061983d5264cdcd1c130814ada36436", +"T2B1_it_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "a6509b47163f5bb9eca197b0c79a285a87c9afaf27759f52c7d25543cb0fe20a", +"T2B1_it_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "29601c9f22f3a3b8d97922309ad41de3e2a07eae601b8231d6557a067af0ba1e", +"T2B1_it_bitcoin-test_signtx.py::test_lock_time_blockheight": "ec4417f90771d99fc129c079110f003dce9bb0a2c8742a19735cf36f98fa77b2", +"T2B1_it_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "eefd9af859f50eead88917ea36dd7cbb2a2efea919b76d734318855e19ec2434", +"T2B1_it_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "90a9b8f90c594ba2dbb96fe67f3e31319b104df6b621dded5c2ad66e86e34b72", +"T2B1_it_bitcoin-test_signtx.py::test_lots_of_change": "27c3abcdbdde675192c704f7fafae800e19a1c70a815f7b8bc6ec2ece94f7081", +"T2B1_it_bitcoin-test_signtx.py::test_lots_of_inputs": "4bc23ece6ca9677e62b4b8819f4c4ac8142b62309fe80ea4e3f15625927d00f2", +"T2B1_it_bitcoin-test_signtx.py::test_lots_of_outputs": "1fbc49d64eb08901380d9832670274da878ce1ca689456562e478957a43fb22a", +"T2B1_it_bitcoin-test_signtx.py::test_not_enough_funds": "823f1cbd64daa850c2c9f2b7021fd33305b01f8c5927fd581cc75b3903f52d04", +"T2B1_it_bitcoin-test_signtx.py::test_not_enough_vouts": "675d1bce63b3dbc1a0863107b5f42cb063ae330982c49abbce5206900639a007", +"T2B1_it_bitcoin-test_signtx.py::test_one_one_fee": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", +"T2B1_it_bitcoin-test_signtx.py::test_one_three_fee[False]": "22a96dda23bc9c8e9630ad90b5efe8fc8fc36a542415b9326d136139a91ecd4d", +"T2B1_it_bitcoin-test_signtx.py::test_one_three_fee[True]": "49c545405397618daec179e4f4ee024e57232421cd8518b0a946415a477e07a9", +"T2B1_it_bitcoin-test_signtx.py::test_one_two_fee": "5d0f35066f1fde740b35b111f220beeb1f37066421af4b521ac147730632e498", +"T2B1_it_bitcoin-test_signtx.py::test_p2sh": "d894665a8513d01605a089dbee9fba39bb272f24c275546302fcfeb31c96c471", +"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T2B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_signtx.py::test_spend_coinbase": "f7b9d6bfc11cc774a9bced59f400ae7ae82d5676ce9ca05eab928051cc4eb531", +"T2B1_it_bitcoin-test_signtx.py::test_testnet_big_amount": "2a82db8b383efb32ba4925d1b19df4af9aee4a1458f2763e7f1853c2e2e71747", +"T2B1_it_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "14ad621ea487c455e0d54dca853c69b1e102504d6bc77dd45983fc5470c0349e", +"T2B1_it_bitcoin-test_signtx.py::test_testnet_one_two_fee": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", +"T2B1_it_bitcoin-test_signtx.py::test_two_changes": "b34a2d33f43c7ed2ea265fd9b81436fe74f6ec092e37090079be4e17069f638b", +"T2B1_it_bitcoin-test_signtx.py::test_two_two": "3de3fcc3204da7e6e82ced3ffc5e92db0b46528d3bba83e0267290ee5d3338ff", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "6554348c4981d13fac0f8fe298e27f450ed6e6868f444dc1f88e3a36d71e5941", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "e8873bf4dab7f3268bb7dbe765bc7985d8e6f4e6397f62436f4405eb23892b98", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4a3a1d3330df7d4b9e7d6a33c0e4df8f4f41a902ea44ed0518d3a20882463951", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "9a3de66999f87a1450ca249eec6c2b17fc834d77756ffb452a7408543defb150", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "8f278a5e8731b8c764bb256411c0c9a8d2c8d0cc74728431666ced1251f7e6ed", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "7a4c8391569d0059eb2189708a8554b5e8abd191861e9e784343667990d310c8", +"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c61446747d532306bc6620a99d8a01b26d13488d5f1eef3180bdae9d930b6391", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "2535561093924661658a34a4d4b49c3d74d4f0914bb01eeb10e242ae05fe5f2e", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "eb0efc6022edfbcb56cf1b9b66ae8316a340f056ee60b53a1989a8ef7ea822be", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "fbaa39c2d08d0bf47df15376d543274083112d48e06c7be0012e3ca77ac9b3ba", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "aed842b45d6829792ccee7541c7fae3021902b14cacb295808eccb220a383a8a", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "db08d22abe962bbf68c6928153bb5b6ed2290c04fa75599994624f50c383f106", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7403731b5832f620edbe70a2f9ded7846c7cd94102d6806d048f6d31cd19d421", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "4361a3fcee304dcbb8bc08373c9edfe4d8495abf81c804b16b228138e6e1b207", +"T2B1_it_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "d54b392aa7e33dc2e99b7efa6ce8545a80d413b630f90ce0e11d4af65a05dda4", +"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "a501c771ac00da2fe1465f21ddcc3b6a15f1a179570c41f598b2337d7a218ad5", +"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "17fad08735b958772756b089a974c3e6ac7767594c69069eed6b3959d127e556", +"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "3c7e45b801d97216f669459f9985f8ac8366eb41b69b3bedc6c171cbca1c0c9a", +"T2B1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "33955b8a6ab5930e79c4cd2bae7447bc384655d4e7d49132c48332d2425c960e", +"T2B1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "0c8a2fdc23b4c9a5a74bd556a132deab61c0b1494c3a049b1b7ff9924304ea66", +"T2B1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "33955b8a6ab5930e79c4cd2bae7447bc384655d4e7d49132c48332d2425c960e", +"T2B1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "873f5f83efa48a62418aad34d1316916ffa96b02ee4557858a051cd58e0b051e", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "e1aefec2620f1495f57e768d0ec58f866df74ca2ad9a64b690d3ea8aeb0c25af", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "f6d73b1b02dfc53551f77fc243ba2a9f5379cebfc4c351c9c6dee7c77de3364f", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3a750dc75d6043f013f6a4bd0618f9b8aec0b09ff75793aff11876e143fa2a85", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "85dedd079b69963794df29ffb5b3ada28801cf51a14992a897548b82e2d64a15", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "1e53981d929cccdfe6f69b4f02fa82956166dcdd32778b1fb86c0da90546b0de", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "69c3803a1d796e02c2b69c6f82a997b88f4ea2368d2cdbb2e70cd03e168a2a19", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1f0abecefb90d7168fac5ad38708a5cc939874bf1aa8c6aec96d07bdbd98eb88", +"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request_details": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", +"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "369c295242ea2c234e9b442b231fa8b2e6562717dab9b23ed262ddf8ab1b254e", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "70bdae1f1a9d0de9a4634d0d2f96956852e980645d88cb80d6464b212b85eadd", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "af80b0ae66855dbe9753be96888a41650f91f9603289f35aa0239d85497e44b2", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "af80b0ae66855dbe9753be96888a41650f91f9603289f35aa0239d85497e44b2", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "18c8c6146a4886193f800996b7693955079ed5e5653e04ddac155ed466f3068f", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "100bce975f5b9032c3eaaf673635ff6cc0df3cb64c42cc77a5ea1ee0604cba4a", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "066af8b0d879cd48ac8fb9fd20270983268a1747efce971305092b489135a627", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "18c8c6146a4886193f800996b7693955079ed5e5653e04ddac155ed466f3068f", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "fa389db78b6bdbfb9a47adb3f3d0f553aced6ce95aaba574dc199ad72c38b88c", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "064147476d221a8ff7ba6b03b15703df0d1f01daad151b95ba8ef455ad2ba48a", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", +"T2B1_it_bitcoin-test_signtx_replacement.py::test_tx_meld": "ef47c0b0079993f7950cba435e113d3405a8b8e347e4eb843b463f269f5f1e54", +"T2B1_it_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "346d8ca5be04846a184075730cb006a98110edea76461cc08f4ea226b0de3fd2", +"T2B1_it_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "7502632272c4ee16fae2f68ea1d2f5f73e8da06a4353ab97ae2805bc34a20852", +"T2B1_it_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "8566652ec8b6718492aca2ff6dbdf59abf2feb3c6452e75d27c91679e4bb223a", +"T2B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "7a5f1ff01982ea528e7347f5cb129668a0ebc08c1cb84878d675be2073677d7b", +"T2B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "42aee2247e037ea394af8934464560e2a83f96e48fe1d60d0e40b7648bd9fdc9", +"T2B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "a5414086daf68ec150867d566821ca32c5865d45c5185a4055c7fb5cf9fd44e3", +"T2B1_it_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "070619932d34157a49cb5a77c561d2b784d4df3a1ce912a0d2539c5eaa69e1e3", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "afc56b880a2e8786b1b31c3edb3e62d94852a2d45f133606903fcf5df8f4a1a9", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_both": "624213f02fc57e8fc47fc9ef44ca71bf4d2523ac289525384c79d8a39999685f", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "3bf1caa05ec95a5abeac3061f2648e98f433fe01bd8ee7ad468236e3a7d44109", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "199db22fc2889422c4f7b9ae280eb9c7432c7d7e958d38e8ec648b7a39239f44", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c0fb73c71ed69ec2c24f16678d5a4cd439f62e868e4dbd7b2aa5593fd3cdfee8", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e02baae5c295dbd1baf3fb4f773b9d0ac1b83cc9181c23a2a6851b92ea5e4b53", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_native": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "6516c0df2a7c59bdbb5658ad3cdbc4bb9e3ea71f9311bd5361c24212cb5b96d6", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "78fd641b13c8f04cad0c88083e36fa3479b354d5d84e42c5c2c5c38278718f3d", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "97e85964dc0cf2ee8b747f01b536e3eba12ade8abafdf68fe654ffb51850ad6d", +"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "eb30dbd7091b0fc869851e09ded09ee8c688d1ad39e10387753350de6c6e8e77", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_attack_script_type": "65017ef2dc92d4f7a98a8e0afb290c5a4157e835471f91fcedca4aa3ab2fc798", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_mixed": "3c4f5acf115cd3b48dbf2c221184b229c71e8ea2e558ab07fedd3ce2ff3ed730", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "4dd844c60b66479a2db753c4b9ac4a01a890cbcdcfb94a442a3d67675e5f7b5a", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "96e3d27601690295493129dba764f43b0183e3c435d6e9004e375d3110a8cc3b", +"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "8f0814d6ce52b64bf9334023d76f83626fd2799bea798645e0f7ab7081a45e57", +"T2B1_it_bitcoin-test_verifymessage.py::test_message_grs": "a8f090bd76d3ac84169b3ffb9ee1b2a2a92cfa9e36a81bdf2a57d92b2e9c997b", +"T2B1_it_bitcoin-test_verifymessage.py::test_message_long": "d34c0dcb699e153649e91afa1edf96af90204b658d798463b07e1fcb0842f4e7", +"T2B1_it_bitcoin-test_verifymessage.py::test_message_testnet": "092e2b56f635257975e6de0b796702b96e4330d7907aa2b56a1b5937938a3e67", +"T2B1_it_bitcoin-test_verifymessage.py::test_message_verify": "af9543a9db7916a181ed573d04d54037ddd42dc5b6195bce43192490f03c34d8", +"T2B1_it_bitcoin-test_verifymessage.py::test_message_verify_bcash": "fcd8299036e5fb270545889c98192969aeeade6c8baa53ce53663409cdcfa2dd", +"T2B1_it_bitcoin-test_verifymessage.py::test_verify_bitcoind": "0d0f9fb76a54b18eff899df2c7a462bc844524ad9d1a1c841478f649bd191b0f", +"T2B1_it_bitcoin-test_verifymessage.py::test_verify_utf": "8ca50fcd731505c3a4831780e21ec6ce2c85ff737110cc3d88a02126cc37a104", +"T2B1_it_bitcoin-test_verifymessage_segwit.py::test_message_long": "7963a7fce69c334eb352ec650926c4ae4a6358ff490f40734ef094a4bd815431", +"T2B1_it_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "347581439c94f72243a885c906a5c174a7b0ef52f8d26582076043938a93c952", +"T2B1_it_bitcoin-test_verifymessage_segwit.py::test_message_verify": "073e4558fa8c9ac64daa760a67205be91b26516374538b6dbbaa84abc470624c", +"T2B1_it_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "0314b19fb67fd8ba1064433cde477812356d11374e43cef31c9b852391dc09da", +"T2B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "a0c399ffdf1a0522347d1701b0b87ab259136137ea370b3c224a7dd50b8bf78c", +"T2B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "b391b2ca9d433de2ad477923d6d603a2353a3e509f581923182ef231f8c5ae5a", +"T2B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ca94334881357b60cc0250fb2e5160f3d50f12ef8dca735af61326e40d9e8d28", +"T2B1_it_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "a92b5659964c113ff56593649720f42caca4700287e4bcff36c390a7d4554496", +"T2B1_it_bitcoin-test_zcash.py::test_external_presigned": "b42a33e6f91b6ff21325896a3174f10a96570224f207630f0a5554d2faab5395", +"T2B1_it_bitcoin-test_zcash.py::test_one_one_fee_sapling": "0a6dc5577d2f4bb3944ca28c35dfbfcc44b31ce8f818da14a5ed5c4fee9ee48e", +"T2B1_it_bitcoin-test_zcash.py::test_spend_old_versions": "8e6c67d422b13d46ff76f9bc17cfe5e48b23e7978c24c407561f53ef86ccefc6", +"T2B1_it_bitcoin-test_zcash.py::test_v3_not_supported": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_bitcoin-test_zcash.py::test_version_group_id_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "3d075137afa8947b28d9c977464a243bc60e1e525b9810822259c19bdcbae5a2", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "3df221bca0f29d7de86970c12326e5787d0f4b27a6f4c0b24ff396137f27c5db", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "eed2c4baa037ae390dbb8ca409ca289fddab0ee8c722ca03c7dfd8547270bd22", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "a5d0db04ce53a5fea31e8853956389009efccd6c35e9692279f86d489d73d0d4", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "b3f9a481437dd6645feda64cc94e3c02b9d0498304a8dc0fe70a118da8c5b8d6", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "9ee43f2610929b1569dd164b138e9d00087b536e7bebe17cfffc6498a1a3af7f", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "df3e35579cf82c2179a1f78833df0914c2105bb9d7d78056bf3a9c352a1047d8", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "5f70879e174c14ae9fac8094f4b1e621cb9d38d59c0cef26e4d4bb8f20c407f5", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "e4fb7620e3209caf8d98a9d7f2d6e4ed598fb213c70e731e7d3d356ca43bd31b", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ed9b0f3f061804c5a6c994b465ef459c64a77f05477656a39e4495932094c318", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "8a903eed7f04b773d1d9f3981697eeac5e7b840ec6aa0420f3a299839eed1e2b", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "cde330984c2565445604da01e965bf13832c685060b2de7d537879ccda4c9b88", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "860e0595da464abc80f0a16ba827eb0c6401ae93903b5283a6535f40676dd423", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "6870b948c94c4c0cc231a88ef2dffdbd79db15fee20e9dc97944dd40aeae81ae", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c9e0ed5f4c0927a1d27624f43b2dfac7ef03f69893edbbadf96e210364a62337", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "edd2766ef7e7d6babc112fa713960928b22551ef6ad1037d989ba125871865e3", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2b4eea2b9e375b372bff191d097c4efb52eb7267846efc8c84eeeee1874f7bd5", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "1f05dd488944c0b613ee28ab9dac7c7aa85b5a16375fcbe05130a3963f67803b", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "669caf3f06c3806dda85a292ca9288af19547aa261468fb23134a3e98691fa13", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9d035eb72de1baacfe5659946d4b5fe425bc395f985798c0fb4f748be598680a", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "13c3ec9681259a61544b8dc04c1603f5709196e29c8315958dff4637f8292953", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "ceb645504ec7193ca8219c66504019c82c86115ad4fb523af149abc64772dbfc", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "109bdf97b45542559547da753f4ebe6ae497661fd486d7108cd3bd8bf2d82ec4", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "6ab5130a6baac397e97290c5767e662dd3eed4d5a2833ab80b17dd228f2b0757", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d216373e6b2ca62ce2188e0e35fa29e05e6dfd04da5a261929551284dc5f716c", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "950eaed231950f4073fc2fdaf9e01b953c7c9a965a507f403be50432bfdf625d", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "14000bd49e8d6f8f9ff9d27f4ef58a778d6a83ed5e08a2c3635895f5afc8487e", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "f6bc7c64049bc4ecb808b55722590ea96f92915b7f21b4c0a7a0381475330f7c", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "af00754ff02931673adac2841b591c7011a0293754a4c54eb819df399ebc3d86", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "04bd2e2855afe83dba3fe9bb2d2fced34e695ca5a410a6e4c369066cf5b2dc54", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "15a1bbb732ddf9cad80d5a93147e205b126fab1c6e976c865f5a6f2acefb268a", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8e41da7b0411932b26a45ec2610874547913d7117e3ce6b48f64c960a68c1aff", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "9ebfb310b8644fd90cca7f281ba29738d31ab208f59e4b4527f61bea36f39c48", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "8b0bd1bcb9bfc80eec3b58461149ee25d30b30964d17ad882de830a523192ccb", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "f552fbd31ad4ca6863c8b99037bc1eb678e1b08c44670d5e888a36e8d53c733e", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "657a5b403ac02b2ff299fb32f03245ec59847fdeff039e00f5aa8471e941ad8d", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "834a39937c017ba0b31fa108f84c2d814c9bba1b29ae8219ed34bc4b7cef65bd", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "defcf407599eea7877b7442ded37fff87d8840ae45fd3fa67e9150d23df12a7e", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "be46088998d314a827810272b7594f84c26c0128902eefb22297dddf7838668c", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "d00608809bc8710101f5c9d953382a6783e5528852e06beaea59d6449bd607e3", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "983c74e220b10fb869769d2dfde5cb6198772f158402802920507ad86b770b85", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "799efb8578c822fa20674db0a91559fe49810837d40c8140633172dacc687e2c", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "eb0e949151d0e3aa672e46ac520f05931504c2fc824b3f36917eae85e7ab978f", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "62469a08939e828267868021b2863ed223f8dfb308915876e0989eab89940a26", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ce7269722d39e636e78ba6f82816405424b4e50b65c4019bce197e3ce9c998e1", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "b5366cd73ab103fc9614680df3f620e413cdbecc888e10f818c51e636e10ec37", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "cf8395a72c63ad8ce79c4ded4b9303c7958d9d3d98fcb26569f3299073c8f65d", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "642fbcdc469491e5bd7b8d5558c0429f6cce5c3f1056d253fceaf71206e01249", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "e32e0f4be6712b8dfe780f122217d62d8b4071b9531503554f460aa5bafd5161", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "31c9586dee292e7300c8d3790b5170153aba2c57168de9743b40ed0e3971a029", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "7b2b7b4d080c4bf79072f718766600a0130d5aba9b756f23e1f5d902178d8284", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "820f76dd5c5ab2213e3646d799145960c9d594be7c4e207de65297ec1a805c1a", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "e94c4220ce54e30338b03b467d39bdd583d864562e01300d8fa7c1dfa15bd649", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "68aae8cd9943ae824b4a47f203f253562b36fbc8e14ec34fec3c6547de775075", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "65bcdcb966b30274db010a35a2fd34638268b38e8f33a5297642695d6e48a552", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "65958e81763d19f60b5c5b17ea4d0d37deb286f0940ed120f18acec48dbc72a5", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "6ff7eecc144d79cead5c5d6f056b899fe38e86c2060bea94e128af8d6acc4e60", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "655ea48420ec89985b6084617806047114a7006ea4ac1fb3ff9d1d80dc65e764", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "4e84b8531c34c0b3117c0e8c93003438f82a73e2da8731f241f089640f416075", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "5956dd74a3fd0ad7d182249946b65831299cb2977c079a24f4cce28efa371bfc", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "9d092ca64369b9f550bbb86a7096172a6827b799faed6ab411d319fd2231caea", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "72b61edc84ab5270704f93cd41660636c4aac55c2559009ac5f71b4e1aff60d2", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "45a59a0232c0eb0ddcab3a7d043a4a64e9836d0f7b7dac1086bfbfcd5d4dc81b", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "dc40fc251848bc9651e77418237155fc03af7accaa72409bbdb460d965c17611", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "8dcd4f9ec7b4776e651c986f6b5abb04491add533bf3ac6e096b5fe8b5026fcd", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "8af461297d33d2c90cfbaf154edbfa2508146d13c96c97b0c487f9b2e4666552", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "942e68a2f33db5fa3442cbe1f291f419694af811b1c90e8f5c170edc286ec03a", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c36e60e2bb8a7d3714a891391239c46363b22407db2e4fe218b7d4dd0435a33e", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "2ef5c4e9bdae63114b24a50ec1c2c0a26c1642099e8bc7842c0b8b67855fc296", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "072be2e05d56a61f322803d6a9be87d8b8bc2c2a9b1d61ed3f1ea4f7e19f4d47", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "64ddf8aa816eb3be38670c9659a6e1fbf87a7d3326d2eca782465f9399741fc7", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "b4066308151972084e7e1ad7195384d49f08d54b28fcae4baea5c5409a83d0b6", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "7a9df795fed04cad8d0b441974b3fbd1b34e6e62ecfd4efe9516196656c8578d", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0637870a65aac95724b71ed4b50fbcab7f5e725cc1804981a3f4c4b1332500a3", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "8ff79b96a6af99bf5b4a1dade81d48272db82ab83bd352b0150d30ae345d020b", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a6229444c9998e6d0535bdded396801a5cbe9ee40b8228935f765ada7ff8b85c", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "8adc2a8635947a191f22c18aadca53b077147ea12fca64c5852fb974407bc9d9", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "982c6ccec807949bd6efc036534227f750a1ae8748a78543237c87c0790a503e", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "551e694b044ee6bc0b5c5a3d80056414906cb3f54508bded09efee70f3be8eff", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8faf039db77bd93964d7a6d1cf5b5e9afbbacbadaa9ff53ba85f3ab9c6b6ef2e", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "0d2530d340a9b3e77a2ef35896eb8ab337bf412a0ec021c72386143fc5f7d794", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "35cabffe4c4f46d0f3b6d365eee19919ba3ecb8eff78700fea00b3803dec69fb", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bd5806361aa4a164ddac8d58e1f5dbef652c66b2281803e24f3a02a257cab748", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "488a2614784e8f1ca427788e790853f19512758f12faba3bcdcf96685a742a23", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "b4b65aa1ffa4a2c697f6707bf2425151215ebd0c06fd1ff14db34ee294ec0520", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "939c4e271b5be19870db669a5bb015790e7d6da0b34891ab427b677c95aea436", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "d1910e7e5feaa47cc22ca734f58c20a89eca8a365d79d4adc22c29a05742a9b6", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "a8040d22b0e9e6ab306314893938416e458f35bf3c7a5b71213e30e996e9382e", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a0b82ed70c2a2f6b6087e4c9b08c3cb39e57ddcd0bac36c8d7d17f239c74f82d", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8422090c6319347be7a1545710fc314755a77c9ebb45e3338dde0066ec8145e1", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8eaf76cd6b5c841eb28e043309cce9874b99b651858edf2f71f35427f3fc73bf", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "5ab8c4cf99ed343eff0879aef1e24f8d57eed80ec94595d2a4ccc3707e17671a", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d9b3d3eb98aaee12b8a39c42349103991c66101c3399a8a1e73cfa3913b5af8e", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "be1679f7b8fdfbd1e9a0f98880b4b3c05c042fe73edf7c919dec1c36185c559c", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "831fa292d5c745210c294d1998e4dd144431728290a7db1fde7090939a59bf0d", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "0a3db36b260fedb18b1ec5ddd7ddc3477c0466f7d1b6f24b99a7c1edb8d1cce7", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "950613f2197366143bc726246494d5cdb2aeff2683f6e9f954fce4e1269a503d", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "88a5899024f35be35f97616507d6684d423efe7303ed73ac101d8802cbc73cf9", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "cfbf26f76cdb3ab76a38c9ca788c96c1059ca38790533f59a6f87729589a22c2", +"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "31805200b5e1782870df3f30b4a26347929e98aae1b24a66615f31f82ee51c6a", +"T2B1_it_cardano-test_derivations.py::test_bad_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_cardano-test_derivations.py::test_ledger_available_always": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "b5368c42555c24e216aab6d5c1426929378587ebbdf9e38c7636b70f578c88cd", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b03fd0bd2aa422480a5ae63332c886b16267456e66e53731d10f60ffc1d74a29", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "b3bf23a2dd30d124f99104a173c4fcb2fb4a3c9fd6a49f51cb946fc98d6830b4", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "20195affcf0a36da88caf7309933ea2f49463057b3fd04a70267f78b3d0600ee", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7e2f936cf950ac0521e1b3fbaa03d8a6560440572e5410cf2dc366f727dd0ab8", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4520043bccfa61c35a63644e0c970cdc3e9da55e175953d6d91cf93e5f50e7cc", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "0eb21a5f7143ead7cca6150d763c80c619dd3fc95ce042f72cdfcfc132a79d2f", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "70453cb84f09b03c3a294b48b9e655fb0ad4b8a234d7347b9ad175c317580af4", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "668c670e9da5a956704d0aaf03dd4cfc6a7e9aab762962a149a37581bd6cebc1", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "12120fbc082fbc31e05f555e807b60fb053462a17088eea55b655b3da7866dbf", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "374e0bcc435857689325774b472de59d47053f6ae422ba817a4fbbdbc508ee58", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "93f506d943eed5baa8bb00b93515392e42954936f901ffe71b849ad1a8979e96", +"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "a458dd72e380ff6bea72475dfc7b8b3117b134bb8a35f06fd10e49433cd29b22", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "1bf9b854bad36293abe17ee2792fa53da5c38a62ae5eb7c9f6eec7023bb747cf", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "217974feabda91fa5161f0d377a827acd81f724ddb4b1e08f1d7dbde01523df4", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "2db0528bfe1fcabd884e77c1f85a5128621735859141e82d4af53815e89de90a", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b2b3dc46b52aba4066efbd1d9ae0a6b02e46cf855f203fa10076bbb219f1ef22", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "23c2e30a3eb75a7bcd611102aa72e0cada846c9f923f6ecf212317f593838139", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e232804fedf1717ec0317490114cc92ef4ca762af55dabdbe1bca0902ee8f107", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "8c63a43d4c12d16b5990b5b4d60d28541a7c8d7246d34b0286aec50f7d8d0314", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "4a8b7646d477f5871ff112b9fe52bb66e24faf2eaea1be2750693d3015c8ae04", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "18ad65482e180415d09826b576217869432deaa24f0055aebcd2f88a56c74807", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "404c329f1b7cf3fdf8122ddd1b3b7e5ae5ce6d661e74d07fd1ac6d8393f219f7", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "c1516bd3b51bea62a7aaaf1dba3c32091917ea6762808ac48835a8571c9fa5c4", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9504af25ca33c557b0f9d55f03f9e76ad56d6d78fdbd4803833ba85253467c27", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9504af25ca33c557b0f9d55f03f9e76ad56d6d78fdbd4803833ba85253467c27", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "78959cc8aedbce6d693167f385cceaf4b63bd401f4d9eef6ce67028fe4bf1b11", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "ef7b8ec43d5495883b183dc710b2bd66395e37301d0e6f1eac7eaea548e5a8a8", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "acc4b39439077db5188b0f8944da0a73320a3f6416648b8ac6a00c888426f339", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "a8e872a8932301da750913a9106373900f567c3199f545abc69129d3f5816bea", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0113e83b65d590c97cd166a98ec5a5922cb67a2f1c34fa395611f119d2796165", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "93a7333fa05ad02acbe4a33e509df0cc26e0fcd4045dd213683ea68f9ba0c6fb", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1f7ebbb5b61e8a4b25b4abc85df9852543ad5b82ac10467943199b070a648ccd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "69d711ab49d424a7fa86c423d45127b82af835167254cea2aa72236008ef1bf5", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0113e83b65d590c97cd166a98ec5a5922cb67a2f1c34fa395611f119d2796165", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "a90c889316c9273beab4f8f03fece2fd5b78a08ba44d3610acfee494954fbe96", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "a69838e706131dcebab3dc5787a147db4c15b0df29729a859a0486a8c5501ea6", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "7731f3e068a5806d88db336e0c6b26a05a5acbe58da368d7cf092606229d6d26", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "9ac46f47093f336c43a7c8a18dde4a81ca1dcb48940ec486b20cc265a360c552", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "847d2c9231053940a9f75f6678c5e860115b573b3d46f13522c25524468ea3e2", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "072a8d11090ad108c7084eb3df4e69900f910b5375577941c3d210f3d86bba70", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "60252e87d908f002d70e6cf76f402eb475c2b8560ea8392242d72273fb1ac031", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f2ecb8d491d018736eaa98d05a7e92e5612a5b02f87ee7d435a6f4578e5579b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6c886517ec6ae61d1726cb26f517aee1be786cbf86f320df95a88d7e0134ef84", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "8e8723ebab24fb3fc51bc4a627dc30896e82e1471c2cbcd393c95d51fd1006d1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "b0951f87851b4743c36451b7f93798edac96670ab24a1be62aa6d1e885545f51", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "65ec29660b40c0fbd5368cdf7062f39c4af22c0bb1d6a0d4527427847c30eb75", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cf692e7136d1738aa4d98ddf0b731e1d10e0fd602569c8715b3a8f72284aabef", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "73747c5829ef87f1d876689ce118ca59ebadfdd8b2ccad9d848a5f47e294d16d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "48dad40ff5dccd294e0ca235eb21cfe5ee97d1b202f4f31f5cd4fa80d6a59b42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c9b9c0b1fd7322ee291209c14e977907a59996b13f18b7bc9a8e16807335f40e", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "09911f3eb7a9e599d20f7cc7ba49f93d4543e5fbd4d6d7583c75c85f47fb5b6a", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "c93e3698fd4fce62c328e2496439a39a3acd9a7c6499003cc62c520f05c2c2d8", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "31249a488386fddf78c6ad278e068bf1061a949083687a1cd1993b90366548a8", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "626430a9504e3f7f8884d6c1c8426870dc4d9c924c586f64114bcd8599ecd752", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "b14a94b5c1d3abc042792dcd514ecbd4ef922b2c5b3e4f411a8e000a3d50d41a", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "8692f63e1f63c0946b141e9f04b13695b4bd77c9664a866ae7504b14ecb861b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8265b4f824d446180b43bc9ea2619fc3199f13a94912c4b49a78e44dffdb8576", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "eb8eae59a531ff6c20a1d255d2dc19d62b4070e3c571452d1f408999ae3de457", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "0e16de51fdea32db68090b3983c5f436693bf922f8c439c1acaad6b375e131ee", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "dc31dfc28fd29e2211d41455a39745d77c3a6681e49e5e46be6b329e208606ec", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "44497721dc3434a6c498630648bce494d86175ad8f0d7a1264d86128dcfa3227", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f6018424e47c181e8b046d6c6e16c948fdd0bcb616acb08d2906f6f1eae875b3", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "dedb32b67882438f8abb3f169ed15482071ec3060465a74651547e147344828d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "9f836c53920417dbfc5ab01348acc363bc4d946e3a5ed335fde8aa597117d396", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "c57b0c37f11d933eafe7e631b4a00719eef0c4b6cdf42475f36dcc715f1f1ba8", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "291522d580a78e417c5f0610661b34c077523a8ca1687cfe0374e3ecf0157be4", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "593e5e7fbdcd09cb646525efa9e43c47fda39d6d40f91aec154e2c0558503c13", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "10a8fb8de209501c1019179e10185dd9a796e63baa119342a146ecaab9e43fcd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "60634638bede633efcb1619b644c264a91b3db2ed87f727ff22816f4b09bce0e", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fc9f1da7500793095c99be9918b9715a4be0c6cfa566ce8a3fd9c5555349e784", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "5fdce7b40388c33725b882b33afee6731a23d7b49fec48b06c0f4f75f5a58d67", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "0eae4e2d3bffd15875b9a389155e04bce64f5072e1c05f2939641575971dc2f0", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "3175dc7b372ef28e85f512c72a6fe9ddca233ffdcba5546746912afc3400bb0e", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "f2e3ce81db515681c8d0514fe35d850390111d04cfedcdb51376f96255d439b6", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e98a0cb464dc5b82786d7ad92e7853659ff8fd9950cf275fadaf4074ab239cf3", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "db839b55fa21c55c3c91cf456c30993489628211e4a909d3319b458f0fd0562f", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "93a70c24394668c65dae30749417c558b4874cf703d938aabc6c9c5fd2e113cf", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "edd0fc128a8b574bb32cd071e153861dc2e5b2841c7bd50be3193b3f833aa855", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "8d97c93506bba57c5beffd92690394a4c5abb399fa1aabcc6826b62a7ca35b0a", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fb2c3d4ab3d3f4993e06452daf6bc2daacbe874190ed77c328bbdb75aac39097", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "8d1f5f81bbc26f56f80878f951188afc24ea51cb29f4cdf9255d621d6a3442ef", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b433a3befed128e4ebdeadb15ad55e6ca3a5d3b620eb3fa3b7a01be7883b9622", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6b52774c1b82ca04fe143b358ab9b0f0ee1be10709e7f2ad78b2cb150830497e", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "73f2e5c7095f580b5dd51216825e67ddbe704ad4d04f66cff73a8c50f1f89cb1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "c0e5c649ece862ab15458fb8fd32d34a0d8dfa97708fdbb9113deb65cb681f2e", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8bc69203afc6c4a14bb1d757e89a38c6b3511bacaa8a4d36915714c1413d0941", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8bc69203afc6c4a14bb1d757e89a38c6b3511bacaa8a4d36915714c1413d0941", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "d72b219ad102e8b7c2d31b3152bd69f9166725b59e194dc5a5c88bf2089a1b94", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "41d895ea061754c20568eca8a6da0ec7e72772bbc54fe9dadf8613e61e41a1b6", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "41d895ea061754c20568eca8a6da0ec7e72772bbc54fe9dadf8613e61e41a1b6", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "ce82e5f70557e5f4d4036b1aef10f5e7e568b856191ac7368d6ae9a6978cb710", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d1ec6144be6b475cf3491a0544c5c40210d4986b19583c0a0b86c5445a2fe394", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "d1002ebbd30e2c6297004ff77b0dbdde08569b020b927f94cb23e04f8d65d74a", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "cd23478971f7cdd68d6d02c2cc864f3da8d402cadff222c25b0f8a0840ef99b2", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "57770632b1d0eaa7356641533c57b30f1c4d67fc07a5c85ac635b76774db5221", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "403dd3b067b7eedda5777c94f9d594ba1b49e512cbbd87d95b24aa748178576a", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "837becf0d17d8d978531c608c6f9d17b4780b56b10cf3ff1cea7ffcbf08f8af4", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9419b68f9d1e649a72c3661632f191827ade32c7c633ab5442d67d0a11c8107b", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "930322d89e7d2d14529af811ce2d71dc08aaf41239b0244df4384ebae444b4ac", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "1bf9b854bad36293abe17ee2792fa53da5c38a62ae5eb7c9f6eec7023bb747cf", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "8c63a43d4c12d16b5990b5b4d60d28541a7c8d7246d34b0286aec50f7d8d0314", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dd5a4e77e15a522e870b0413b4bb5afb2f4416efd908ee35d40addcb35afb9a3", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "9b98ba23bbb432c39bf023588321b12447446b4921fe0be62ff1607c385c7d1e", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2d1fad54dea4d8b161e2bd97615d223798514f6c57b44e429b5ca63b497db447", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "e2e6fa68909d10e29570dd8bcf61c0569c98a149c38b91f364ec17baa3bdd391", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "14884d9309f30f5f9f2e0a829d753a8d3205225550cc37b5737c4f74e5bdf351", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "847a802592047899163d672017ce192a2b046f14a5dfe829ddeea4e957fbb52e", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "b8f8bd56d899fb57bc65ad32285c1690c20051110b172c43a7ce2a019425f37f", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "14884d9309f30f5f9f2e0a829d753a8d3205225550cc37b5737c4f74e5bdf351", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "acdf5d4be7786aae5c624aad5b776ea1335ed86c8d8c62c840fc19ecdf4a3acf", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "b933bce96518d7f49108df2591d5b42b4bf2b33bc5f95c50776c1c05964867cc", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "87cc01da1ebdc85dafac07754fbf7948c5b9e181ebd6d85b4f31ce210e3e157b", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "11cfa09d8aa070e9addd2a8bd82613371b5b43d42d4b441440f5cca0e4acc008", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "d9d6fb17f4d451d88b64a28e677634374d848c942e7e53b2e0d78195e08282ca", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "a5d8b677be986683782e00aa72c60b4b152cc386a5a5a634a77edecbcc230047", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "967319241d3e6db125b150ee3664cbaad848aeb4338a9440c1250652faf13ab5", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "c60d179c63978c7212e3e52407fe20a12dd013fe5d2e506d44de3b6c0b06145e", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "914883456238dab872a9f996a5a18e56d7a22b08438c2b2dc7b71146cb2b1da6", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "22d9cfc103c7dd6643d17f6df030fe9b5aa1e62cc757302f6253e22e4f5732da", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "a15c7238185f22ff769d64a6f8e7ef58fa4715d8ac034705052f3eea39493a39", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8a51caa894081641b9672f38d1e4274575418a066f26e052fdc254ae2420f073", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "568e0b208781113b8a81754857bcea1b612702a307ccb1dfbc177a054baac37a", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fc953307b501e210d22dd677718f29ade27ab1c2f9d2995fddc6f621530ba188", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "9ba5b25cc7add2ff067c19a04879207048a4900e7db7db573ab946ffd1996cc7", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "aa272cbf2ecccf3fa5390b6b5993dac5944924bfb8f0b99309c195a8a4a3f8e5", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "78ce5c36e483892ab96c40891db91e6949c97b6c0bc3187beef234814634532d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "956b9aa4a956cf3fff964c44a8ca63c3fd5b3aa94809fb32c01c5019b88e031a", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "f31211bed6c10d0cb2136063d49f85758628c739327aa0ad770444fd724e6712", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "db66f1a60316b26d6c2d77b454c2eaa8df62bc919964f78dc801aa05debe4c45", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "8fcc67c5d02c0db6648dfdeb6a9c61c9f63660ae76918b9e13880c897790882d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "758d3a842b7d87bb6788e422e5096ab5680bd5dd3b6766ddbfdcb3439dd80deb", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1337da4000f92c34403be9ed725f3bd1c0abce88adc30fe83839caa8363fb11d", +"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "3a0c9959343cb1ca044d97f661b28f2b5d01a382094b4cb94ea338f3799ba1b0", +"T2B1_it_ethereum-test_definitions.py::test_builtin": "8388133ad35a921a33432552241ed578248d29dfe86030a4fd140da52c787f18", +"T2B1_it_ethereum-test_definitions.py::test_builtin_token": "b49ce3a5e8b99adc9955659f08ff1cfb377c7bdc0e715aa958937c041a2c23bb", +"T2B1_it_ethereum-test_definitions.py::test_chain_id_allowed": "cd9d08c2cfc800bec278c03c598be65556ae95e2c608766a6079213282149abe", +"T2B1_it_ethereum-test_definitions.py::test_chain_id_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0d5df11623ad85684c5b6d81065021788a3139c39682f121026cfd6d1e3facce", +"T2B1_it_ethereum-test_definitions.py::test_external_chain_token_ok": "12931eba3dcf199f44f65f690a3e998e13d5fcc8f34a8f038176d9d4a4608212", +"T2B1_it_ethereum-test_definitions.py::test_external_chain_without_token": "0fc6896b7ed9c645e5171536ff37e6283342ebba591e3c5265a86a7b15e6ec0a", +"T2B1_it_ethereum-test_definitions.py::test_external_token": "d4099d53e528386377762eb328243d9044ac421e93facf1fbdbb5bec52665ba6", +"T2B1_it_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5c12b32dac104797c2bef399a972903a5ead961da4b20344cbb9db347bb93102", +"T2B1_it_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "ab3e1cc8b16085e3d47e2f744b95cd56e5628831536b6c9478633cad8b30449a", +"T2B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "2a14a7f60a399ac07f8adea003e4cb152f55abb67964da58acd8f96711d9cb86", +"T2B1_it_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "5088074461370abf9bd4db107638670a283f83cec6b8ddf405cb28c374fa99d7", +"T2B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_slip44_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions.py::test_slip44_external": "d826dc8f03479de89f085f48f63542675b0eac0e2435cfeafe42a986a492a201", +"T2B1_it_ethereum-test_definitions.py::test_slip44_external_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_bad_prefix": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_bad_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_bad_type": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_malformed_protobuf": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_mangled_payload": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_mangled_signature": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_missing_signature": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_not_enough_signatures": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_outdated": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_short_message": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_trailing_garbage": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_definitions_bad.py::test_trimmed_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress[ETC]": "f45b14283aa74ba93f4cfe1df82aaa5bbfee0a47a0fb634267597741a53a3e2a", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "e735b027cca54dedcc9cdf63fc787a59ebf57d0fb555e6387b1fa3ea38e71606", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "131489ae4971766ac15efab79c2d865d4e599736eb6a7c2a1d0dd4bdd16def1f", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "cc759834d0f1572f8ca289d661d6f2f2d102bdb9abaf88f237ee3908f10c8464", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3039ff0e815cd17191fd6178b5fd628fbbadd7b066cbab89063ded0377f3ac6f", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "64fab50e5eae4a32feecb8e70baaaf135013ab5100ef67aba3cf756740f74084", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "1776f5aee5703f33ca2fbec3975b1c93d3c3ef73e67aa4d471f023823b0c8bac", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0395c6bcef1bf6f47ce5155b25d7f9b4c770ed35c884c0f9aa87646a8cba3fe0", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "a5102322eea7c649039c3ade89d79ccc2f0ffcb904ad97d2385c70b26def4af2", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f5723b17aa67cb5eaa9ebac594fa5437349e0379d2997bfe50e080681032379c", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0edd6ba3dead4f21a5afa420779fb083567c54c8f685fe7c26ddfc54370160a5", +"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "50b4efc0b8fb2a8e7a33e7680a27a432d5bf18aba1b0cbfc73d35d1972967d3d", +"T2B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_getpublickey.py::test_slip25_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "caeecf9453378c866cf7e37fc7c21c618654b0069451b1dc87473e3941fe7425", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "27baa347f77b38d8c002e5cf613793664fd345718d3be4053525404168295302", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "360a34985ca8cb7cd2dc273dd8ae1a2a6687e2a4cb4d7671528ea61b698ca1cc", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "90d61a0cee222fbbccd533fc08a8f7631e5b97d610237c27c6001f0566dbaed2", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "eb62ac609193de2b48ee54d457de1fdc87de82cce872ff97352d1e1ba3639160", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "482ae1f7210bfd3db5fe7fb5de438ef8de153fd8ffb25bf34e71e6ba10bc24dc", +"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "e79b1b5f8bb34ba6319eb62f04ce87b1696ae1c4832b225baafc56042287726c", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "0ab7498102145709b4bdef03404f2adcf330641465439f8d1b2487c409b10d60", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "2e7c65dcec45427aedf9ea8751844a768c9f0d815ad47e50c8907f580210df1b", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "0f8c166735ada0b1f888bc6a4a2d52b1ebdd3694c0bd0d102723e5e7e2961826", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5b897a47955a94fde28c7d6639999e4c8d4f11133e5ed1baf5041e1ad7dc0abe", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "64798dc96ffb6407729e568fd51f0b2b5d432ce360d5c4df1cb949428acf6908", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "fc15db2d0e6911568a2c4061ff551e2059ce5a26dad67b23fac72a158181f23c", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "8d53dcec1600993e76e462d4c48d62218148df15f75d7bf2d297f983ffdddb26", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "92fa13130b2b9a2f06fdb75dedc1cff1babe26de0874154bcbf84c84dcda378a", +"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "3cd5e47f18d83f1bf786aa914d587dd22c29245d10a4399c9b33a6082ee8feb1", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "2a36e6ab951c4bc4b79803efde458bdcb1cddf04d0d355f4908411c86be4f4cb", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "741cf59801aa9d44a52b90610fad5398122f1bc65af0f43176f760b8fe4971e4", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "6283ff6580c67b958c738a6708471134409fc2934600142ea2588750eccb62a1", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "b33c4809157e145d2a344154d556edafa56bfa8b26e412d044c943a1541b85f2", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "fa2e4f45c3486cb3582e062e0d840c4ca6f37d7aba29d2147fd281a6b5a85c24", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "77390290aa5019c6ecef19710bc2c8d975c81d659a778c9e0c8affc1dd39fe54", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "1f6de003d62ddff73bd4330f97dccfd0d712e959c43b72ab16b277805feeac2e", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "799f94dd60f42d56060805374d9a6d948e7e288bad16043990dde248c2613e10", +"T2B1_it_ethereum-test_sign_verify_message.py::test_verify_invalid": "2a36e6ab951c4bc4b79803efde458bdcb1cddf04d0d355f4908411c86be4f4cb", +"T2B1_it_ethereum-test_signtx.py::test_data_streaming": "84e38c0239f5da36b22204d4e751193eb9a784aa64095fca8262c9b7fa90bbb2", +"T2B1_it_ethereum-test_signtx.py::test_sanity_checks": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_signtx.py::test_sanity_checks_eip1559": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-ETC]": "9f20c6c824bd678cd0226bf9474174faf9a9ce05eef95249665386b716d507c7", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "f9a1a525f47267260d283602a6a3a1bf19d5b67ce4a7c038506991c4f5a3c0bc", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f9b8ab3c9fe840a791769dac0e88d152d27453f6218d8dd968ae807bc35c80d4", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "f9a1a525f47267260d283602a6a3a1bf19d5b67ce4a7c038506991c4f5a3c0bc", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Palm]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Pirl]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-data_1]": "8f510879040b2f2a483a059787797171498f01a47c98df493b26e9a51891f0ac", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "9a7aaf53ecc0952642c185abcd22782464fe87a9a836abd950a2c625735cbf32", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "176f3b1161a2bd6d1e68b81599524e4dcb4ab696c498d26411afb92c19c40876", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-newcontract]": "03a5e386d865774560d2144d51dbe59acd442f7ea3e8b1a305b1026147b8a388", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "82eed184a42ef797e7dd1a1e9661c787e22a130aa79d8c229252ecfbe15ab9d4", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "1c554c9f99d1e32ecd717e83368e5f44e226188e8f7872bbed27387ce1181444", +"T2B1_it_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9fd4a3baa973eb47b9b6899edc4635073a993c92d870e420ede75274c425ddc2", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-ETC]": "8ce6c35de214f6ba66f23f018b62b338a42fb9f7b888212817cd1ecbcd9dd5da", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6503c64f98def7a3899c351cf9388c87f9010b5c5adef3067e23970f4316c358", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7e1fe7857056163eb72e7933d010b46cdecfbf2be3e82546b4dcf596edb512ea", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6503c64f98def7a3899c351cf9388c87f9010b5c5adef3067e23970f4316c358", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Palm]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Pirl]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-data_1]": "2e6218c2703ab9469e5a2e13a13c766c77c99bdff5ebeaaa83606f7bbfc97e47", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "cba5c9e6269efde79a5a737baa1ec159378a9d2923eb982efc80aa2788fa1f4e", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "00aae668a5582416b5ff9ebca190138af00862808b23ef220ce55d0218008abd", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-newcontract]": "03a5e386d865774560d2144d51dbe59acd442f7ea3e8b1a305b1026147b8a388", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ad0e60da0e6ca7fb56b87862bc948dd6d9c9cf6bd0784a277a1544409ff8c7b4", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "858fc718b3672badc84016bb6dccbea602d3555a98fa636a90624953b9776d7f", +"T2B1_it_ethereum-test_signtx.py::test_signtx[True-wanchain]": "e1e30864ccc2f9390d4b1088454d817cdc2730fa4c00400e90136a002b4f25e7", +"T2B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "0ce850d7e437c29c01835cd0e99b663aab967c3065dae3673fa2c6f8286ce997", +"T2B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "997a0506b611b7e10dc1c4ce79a7650882876d69afe8d7f7c6162c44f7a29e19", +"T2B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "298cfe50ebcdc45d30efd1c7823af1ca1aad961be44b576b9081166a0b5a9a6f", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "afe5f627324bfa074f7e7456baec07d5c6f8c0d8da38391a6c64e9ccff3d69cc", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2d5e01f168591a78eb35a60b80b0b01548faa0543c0e61f2ff559f079d9a95eb", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "73f8cf28191d77d02504f2664214ec962419182aad5697ac02b91a8e08b06376", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "6e5768074e20ffc8a07eefafd217954a46f7bc56ef1a588bceaafba237ebddcf", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b111382e71122b2cd3474031e519333b7b3f36e8cc12c0082ad6b65825c8ae63", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "b4e72e035a147d1ce7311fa2551b6ab77e125995d5fca8d9b78bdedd749192e9", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "afe5f627324bfa074f7e7456baec07d5c6f8c0d8da38391a6c64e9ccff3d69cc", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "057407c8c7b8342ec3167e081e5b6cd2d2a46d508e35127bd9091ea7f38e6b7f", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "08d8cfc8adda2da71e145483127bff99944ff30efc329ff1052b2b10379f2b25", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "ea0599847230f63ee7ba010d93db2751b9dbc38e3764e119c60a21eef250a6dd", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "6ded152dc69622ec63ba01a3d64085c32f742d0a3a6232e37d67cccba0d26351", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "ae23ce969d72d4eb500dd31c52f0c99549c770d4be8088269235fa862d214d48", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "c19d87f36d336cf6957181df5b001ece52966e59df35e11cd4fc0f8a43980071", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "057407c8c7b8342ec3167e081e5b6cd2d2a46d508e35127bd9091ea7f38e6b7f", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "6fad02a140f701720ef30af0fd6e3c38080112ef2040b7f0132da66850ee9129", +"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "6fad02a140f701720ef30af0fd6e3c38080112ef2040b7f0132da66850ee9129", +"T2B1_it_ethereum-test_signtx.py::test_signtx_fee_info": "1d51e5c3bd3e7836f26b33b1d540e516210386ecf4660bc9fb59cedf29344eb6", +"T2B1_it_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "fed15f0df9cf97c864b0f3c3a76c7315035eb3720f6a741b4b24f98da368ad4b", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "1a6bc6fcff340babcb0dda99cddbf9df402314570086006044b5a00c702fbe25", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e0715e2ec9b3aa62040fb4c893e7445f3b539a461692d3404198476084253454", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "b0c8edda4b92d2e8c00c079da56608c0cfabc9019bcc9d7eb268aaeb649e00b1", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "18049e6f3555baa253aef65018eeee792e620d94df1c6be95eed962595aba695", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "4e663a338fde3275b5554918cae8cd360e4c397c89e088f246a9e0b946a177eb", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "6120ae31959f1c2f4f54a314a30924128791fc96edaffb22022ec676b3f8eaa8", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "bae0064e631e7d0a70018869f0fd20b0a6dc13ae1b15e3ec642b75181a7d11cc", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e3c67d812c837448735b80de38a1e55d813da99e5b71567d4b594bc960fc5f93", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "bab3ab00d2a9c84bf51a8dda46a423614d2adf9e4aacc5af011a617a97466531", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "77862e4f49d5ef8f82045291a0c8f37dfb6f32db8f074a341bebbb35d7dfd96c", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "957e5f3e974027de4818d03a0a8e0a15ffaff2da0842e3d2f333941b6d58e23e", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "8fb20dda4496b03f84c4b90c982e6e951f3e9de3df309049f29d01ca1339a6e5", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "74f002930633add52e2fa4929a022bde441af7feb3b03f7fa08346257824f2e0", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "74f002930633add52e2fa4929a022bde441af7feb3b03f7fa08346257824f2e0", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "7889ff8359f7e209ba2ad86d1e720483eec058e35df51e11bb977dbfcf26f065", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "7889ff8359f7e209ba2ad86d1e720483eec058e35df51e11bb977dbfcf26f065", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "104aa67b97fa35ec738852ced5dfb3ba3a34d8bf353d015126aa13237a43c4f9", +"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "104aa67b97fa35ec738852ced5dfb3ba3a34d8bf353d015126aa13237a43c4f9", +"T2B1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt": "bbe7cc560cc04b00da4d7c3cd75c289c871fdcbe6934be5e067733bf1df23e21", +"T2B1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt": "774994ae44218123e8fcb71b867701676033288f2c7427d63508d60a24968896", +"T2B1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_misc-test_msg_getecdhsessionkey.py::test_ecdh": "38124b24ea8acd74a155f11492298b31f2859b8f646379d06bb1bdcb3566f9f8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[128]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[129]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[16]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[17]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[1]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[20]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[21]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[256]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[257]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[32]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[33]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[3]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[4]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[512]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[513]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[5]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[64]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[65]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[8]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_getentropy.py::test_entropy[9]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T2B1_it_misc-test_msg_signidentity.py::test_sign": "3c2be19346a767994a01fde6bf675e88961a9f5b172444b429f9d813f53069d2", +"T2B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "813dbb1bf97828110daa366152339774f8243554563c25fbc8d5ed7375415c2c", +"T2B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "1c25d110fc4564f8068df6ecb981908eac822c57d5e8b69ac08c6dcc76066b7f", +"T2B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "40d94fc44cf57f2e8b5c8d865430cec7475ca061e47c666e59f281ec9550e9a3", +"T2B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "23fcef31c60a9dd74ea07c221fe05ed4fb0d861e3533f9611be17239712ce9e5", +"T2B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "d3898b1b8c76003e61fca1f9945532844f40bbdaf230cec6120d11080bb996e6", +"T2B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "ce3df71a3196e4ea436bbcd3409019ccbf54e7c0a69ffc4f2eafec31af64ebfb", +"T2B1_it_monero-test_getwatchkey.py::test_monero_getwatchkey": "66a2ebee743bbc0e5f7ee3c3a903f446b7316ee6ccfe424643d3908fb5598076", +"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2d25d0e33d5db3039926b4f42564ed4017f506ec15d8dec7c9deb90e07f8a5ae", +"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d0181ce67631c53739ff7d0ba38af4883cef9de5885904750ee5d41323ab6b42", +"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee5af54db577078b52ab9ac6e1d63e12109865dc4ee3d56b22c538f294dc57d7", +"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T2B1_it_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1809f7fddf022da5c48c4ce14fee7eff04a14ab82562f3e69c05fbcc85adf4e8", +"T2B1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a5a0eef5eb597977bb3daab748c985fe8f1f0343abb122f3991cfd160a3744e3", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "39c02b11f23111b3b0b9747db392ba0be0abb78279a53cc6a56bd278204f8cc5", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e6a311a6f7c3e53cfc4fdfa966bfb1ebc60cc8b57119c4e71bc8406fdbaa8b85", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "bfddc5f4af8e8b63cf4b9b52bf439e34d8ff73a87ad67a28c8001974f1fa2cab", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e673ccb9332a8a3b1b481782cd707c2fc00419eb3dd727013dbbdd4706d38c07", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "01a9d82276f3ef869b4825d574f94f7fe5a6dd8ccd72a4930d7501e129d0b6ea", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5c36ce549e5d44b549f34d7f7fd755bc4de2259a0973e0849889f5fd9db05703", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0f893ad7ec7d7cc9eb74fb01e05f49823ec1638dabfa4476d93adac43a659db1", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5c36ce549e5d44b549f34d7f7fd755bc4de2259a0973e0849889f5fd9db05703", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "0f893ad7ec7d7cc9eb74fb01e05f49823ec1638dabfa4476d93adac43a659db1", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8d722b2113a3088935710473164e404d6767c60e500db9f83b1d743615068b78", +"T2B1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "2b998548eb9022892044075d586ab73341250df9bbde8d4ec75de6f2a8097b41", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8faf0077291123e7593913add2c9fc845ea161ba8350b6d29d4279833ca93a18", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort": "39c02b11f23111b3b0b9747db392ba0be0abb78279a53cc6a56bd278204f8cc5", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "0efe3aed805697262e1d193c025210c39ebb4063846671382e77855046e543fb", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8b095a8a2776c0d7443de68b7a730775cd7201bcc0e953e3c2a2940d47add19c", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "54ef768cde564a4ecf773c187a3d5b4e92bcf6517f793dc7155e731e9dc20c71", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d73349331d3b43cb20205a86b24436b6312cf78e0b69a174cdf1502dc6196319", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a690bca8df6aeeab7438a5009f9a90bde7c7d601eaa2938cf4bfdfb9dec5d830", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "406e61893b10ad664269d0cf84e6c3e7847c26c55e4c6a187b95d980e5b131c1", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f16f5b3aa7cfd75b1c152907e411df627367d4a7546ce6c1d2f712feff2419dd", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "d8595e4461b5b05b5add0dfc7bbb0b1d115585adc9dad348fbf895f5882f38c2", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "65a9da9c24e9dbf2b3f24550dbe40434efa1710d96c210b6af13e9f6d74469b2", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "82b725004a181e172abbabb89fa000bc178e2e347c8f06b2c99de5d532a16799", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8b6c509d82d5d18b0306d772a41d139469df4da616ddf21bf0b0d73734058917", +"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "42be69d08de15e1c32e84016fe1d9bb2eb1846cd3e39b0ad14c595e53f4ea5a5", +"T2B1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "aa2561ebc6ae1c440bb666b187f2043c05c76361bd89a162fbc25ccfef752ded", +"T2B1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "35348cc68c2ed72967ba99bb9586f41bf3b555a3009c7a4ab4d171bc863769d3", +"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "b55c6827353f419b1c57db1f6ae21721e6c6b078d024fe79eee7daa34dc334a8", +"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "35e37151923451a7e92d5a8c427de7b3ca66a2f9760670fc4646338bb56325f3", +"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2bc220e6400f990bd6bc4a52b218f078c60bb512de8ab2fd08d129eb21909c89", +"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "276272efd2a3e62ff1f1add20c4b3dc80abbe452c53a235c089a9661f04bd893", +"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9043ab91c5b8bde7851b0054db1ae5f7cf99cba1516a1f8890db4bdd55fe3a52", +"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a690924628577ec441361ec70b0b2177b1200be6848575394e9aef017944e628", +"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "adbec66b5c4557b1e076fb6a29287e6cb19c91cc65da4fbede5d77c7d042a3ce", +"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c71f526645bababa8d4e8c043c8795cc3679821208f28526397b38159a4c556a", +"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "776068360c96fe8f29c27bbcaac2b2b47abb2245ee00925af7cd549051e8df36", +"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f947dfadaa07d2fc27732db2baa257356aa22246d9a8770b5dfd18cf57c2d3bd", +"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f9f377d5f4edb60a0e28475769ca738d9870b8349d49cc225923087f633a6a3d", +"T2B1_it_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "29aecf4d5afc15bdf3924322542babd67677b0878b33c947957544bb9ed50701", +"T2B1_it_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "68538958214815677066afc4f877ec609bfbd808a62a754876387558ec742eb4", +"T2B1_it_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "821347cd3c3f49de4941704eb73b00bf5c2a6ec4a3bb97dd807e9507a924e44d", +"T2B1_it_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f6cd543e87cac04bb97c78ce4ce33800f1e8ae515e52f5397dd77885121938f3", +"T2B1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5e97e214e32a14cbeb064e3d0d14831e53a4b6745109c3eef982ac29222ddd39", +"T2B1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8ca5adf4a5e79077bf229c2b3c483c4ff0a76726b6bb8fe3198e6a1772f45762", +"T2B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "b64465968b57ca2acd7f53700c4caad0cad196a3493164ea036188e56e447620", +"T2B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ec8fa3f6821bdf49f2da76f4c845fccf0d539bc43a1f6ff3a302ac1889435e7b", +"T2B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "14b3c12d2b4b2fc36e72710480280627ebd729c50e991665130c8055639bd10e", +"T2B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e76f2410b7795ae76c45ab716e2c4c52b1ddca51d72b6c1fe9e2106a79d28fec", +"T2B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "881cd6e2326bcd6d4358b7fe9d36d182bd1de6ee720fd947078d37458bbcc834", +"T2B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "7463d6359a997adc5cdb65a527c6de7a5169e955c52012a45a8ccd550f43f4da", +"T2B1_it_ripple-test_get_address.py::test_ripple_get_address_other": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b960c7b6e05f64804e2704fdc903b76f35bcd368253c0490ba7281592fb3f660", +"T2B1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "0ace5d536027e71926bc86c0e3ebd6ddcaa95750ff066d172d88ff8f909894e7", +"T2B1_it_solana-test_address.py::test_solana_get_address[parameters0-result0]": "88265572ac4438fda26ff8c6431f16f99f85026d5c7f6eed41ad094b61d0fece", +"T2B1_it_solana-test_address.py::test_solana_get_address[parameters1-result1]": "97b741f769aa677fe25a96c5eb5eddf7b7aaa1286e41ea869062f5314be4861e", +"T2B1_it_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4611b11d70d39d1fa4320a2e8de1c84cdedb94bd7ff50a76b2062a700c8d8af9", +"T2B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "9e2afd26651708e73152235378106fb9e2d393cae29165d1805b5feb4f0b6da8", +"T2B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8898f8f797f2c38413b1c279e6a5e70e1eec526cd00cb1f0a991cd44d94be5c5", +"T2B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "c9e5f1caf89f0351174d53bca4ee1f3dde4fe849774c7377c49a0c2329ed9f5b", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e1ceda2fce49b8ddb1f2251be880f8408e52da71faeed9a76acf18917f04fda5", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "560f85d51103ad5ab2d1cf0ef606a35da8e4455d99453b481887ef073a6b52b1", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d5186584f23bcfad4d396155f79e9c5d31b79f9e7450d6dc01be8ba7336099f3", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "8ffc138187edf2cecab6a971598b9a2e426bd1bb343c3632b3d3ed087240d802", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8aa7d2e1d68a44c6eb3127b61c5cb9ad93d66cbb97950c0a4a7edbafb696d325", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "55f983c925e037fd6e0ad7111e945b01c5ba6c71aea521fe6a6472261fb2a72f", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d9c2ee50dd935afbf4b03f98e64012fe65c5f24e5bd598b416e6cc56a9251b7a", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "17359d443efeff5446507f7f4e512bf0e2aadcd9e706be1ea3da5e3bfa6896b5", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "427877bfb97b97c20e67703fe93ea5bf3983c0edc16f2b7adacb531e518d1226", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "567bdc33bd18f0bb640529bdb73e6951815dbc47b4140bb3c49fb50356bf20bb", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d169510b42851a2224d5145943e580db78278bb64b77573da3234e972453db87", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "5f9ee63011542448d469bcfc23b2a76f0ef1b16fdc12fc32aba0c53d0eb8bb03", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "fcdbf2654202bb82c04c5067babe72dc13932a8b0bf2071b8f2249acdd765576", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "e38a651605e29de9dffa8a77577575ea4aa7df05890fe6d6cf35ed1e7ccc5ad6", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "1b8985fa396fbf953c5de934d3f93bc772af96d1109c770e89e1a6e5ce7b113a", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "2bd8f064ad2fe303d6235e924572d147eff7dadd8ac1a7b5097b1736e43e7967", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5ecab906b8d64cf018f1582d46b53a41e7a39c33fe2f24d155abfae37004b596", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "84b35b22f081a7fdf8c5d4a739b360ac38cfae7d3043118e243cf2b72d593454", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "2b3a66717c1b1fcaa0d31a6c5a8c918a2022d55a7ef94d48cdd324000c8bd140", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09c1d2e1f66e9741bea9351f2178c675de66aad1c799ff0fbc41aee204847964", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "07c1233fe792cdaa12707eaf79b65b2cc173dfe7aa25a716111d612e0689276b", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "abefca8c2e25fbd67b9d025a4b5abb69bbf440e499657d922409861ae23ee5f2", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "9fdcf301d35505324a30cf59e547b022f903f5cbff889982147bd602a484c12b", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "90b2d7094a9afb2d791df358432743a1f85b6630b422384ab009584acea4589a", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "44ef6afd4b90029c5279e138a9cf5d60f3887387c1c073dcd5ced5532676eee2", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "bcfddd5e11591748f766fae0390d8318ccedfe63d5d85e4404371879f9505858", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "2bc300ca0a8e1aba1accdd5d5012837661444ee73bab3960b747a1ad94e8091f", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "63eed1ab64cba7cfa85d98c57073138cdea1d0c7225d6241b97d02bc218c1ee7", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "bd68df7e5c8606f38d9ba5b9730e228d2513a2d7c858b281b00d6152e56e72fd", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "3352be97b393e858331df70619dd86141644851ca507bb21264f10f7e58f2823", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "40a12af7dcef0923848dc1a915d7767331ebb124a6ec271a87d48634f2ec4788", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "f6bd370c9c37653e8f098e712c385f8eb43b0b76deb4887147067585766f984f", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "17712eb9253aa8fe02954c24035e39a675149e5af8f595937b9cdbe10342d160", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "b55e60c8942dea463053bd854083da63adda8ed06d35b71a0236de96d7e69e16", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "b55e60c8942dea463053bd854083da63adda8ed06d35b71a0236de96d7e69e16", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "6fca8ad408ca6faa32a0da5358e5fc938b95b53b623b5dc584f01130bc953935", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "5122e547d5753da2beabdc54d377bfc0c77a7839714872012d8116068f5996c4", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "c1e1c44fb27b1f505ce1a30c0eccd5a74f2fceab3dc1f1397fbb7e45b0b4a99f", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "3ec8d300e2f40e8a9ab637ea59175ec493f63c1c9ff3fc0ad88b114daf9cc57c", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "2430ace39bd6903555c67f6bceaa6249edff4b9522a92accf4f0db757e48191f", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "428ff7d2d4f5987f90a5973484c8803f73d2b6e3b98a99a237721980ccb7021c", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "268907e6a9b3b3c9ad0c0a2d222787e5935b26b0d2726e6bb231fd29415d1084", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "912a2a9d72c257a7e75e4b6169f571419f68afc98e124cda13751d1e4704d14f", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "b5c89be1cc39f9b6627a72c6e9a172bc0691ca1d1eed7211a44494a03da68b5c", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "3a9fae05eb1dcbc8d914986766b68d0a252d4da914ad00f15a2080ad85b4605a", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "bb68d15daf84bb59adb520e273e764c7377e1477c6688dabf8c146bf56e0d899", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f0a1423d3afd19e6f8164f4192d423e071af39118541f3f52ee84e8a426d21a9", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "8423a81930aeb502a9649240ad2b4e271dd2baf39ca91735d8c16bc155bb77ea", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "9f8495a3fcfc59c126c386146b736715253366ea0241e34e6dca4c77b705e5e4", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[split]": "95222b1302df43710aba8559bd306ccd2f333ecd6093b355d5ccba849a23d028", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "38e788673ba05bc275ae1128ce97b36c2d33f2accdcb43b6b846f3808a30e1ac", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "4e2d7de1381f1eb26a1d83fffae5a60771a56a1c80aa795a5bfcc2155017cd25", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "88dd42e3768ee84f09e5ae74681333d87c7c5ef14cf2b0ff9dcc7db959f4854a", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "1f8b29160ce60cc5ad750f45acd12bd4239360678cab54eb0f4cbc0c64f55f46", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "953b5e95c35a4d82e8ba7d283dd35e71bee7c0f16ce3bddcb9b038dc23d3e0a4", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "566a496cadaaf3fbeb3b0de23b61242549f72d8d2d7df00513d199b9c673958d", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "e9560dc511d83d4088cdac82a4d18528f1e3746fa0a675c517951ccabd437149", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "02a3ad799ceacda49b2247be7b814ebc5fd32ce213201ca88e3aa47cabe160c1", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "918f508836eade8986a2ba88f4bc9f7568c2fd8429961dd384a3f3b20264cf88", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "94ef08635b838f1f2e9497003727c7266b012a041deb54f3829ebb742a022d25", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "19f8f0d0886d58bea7d9b29d15e51d0f95c6451175dc5d419e943e7fdbdb3602", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "61422ffa23f722cb60f997b9353080365650909a4df4f82e500b6ba062c5d850", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "aa9e0542bd643aa0fc4ad2d8c63c0551fef22775e46efc22d9fff6ba022426b4", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "7441d848723f279dffd04376e202b5e5a96f511f322478b68903b616ceded649", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "71786aa370a8e67c7ea221e3c4a780b60eef93e97f92a60e4503b7cac8f2d236", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "635e22da8845ae1651065cb4efb08530279f0a2a64765eb40830e48b388b89b4", +"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "1784dccc7fa6d9fd61a525bba7139098fc8e0bd523060836228b4486e9af9e82", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7787c313992849cf6beee4953afd20213105aaaf636d8cb9b5ab5d941f1cab7b", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters1-result1]": "58fdbc1aa71fd5a0d97e01b00f0c59bbc1f7734dd7bf4e8afdff7f22c10fb951", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters2-result2]": "337f16416c3380e0fc8e931e75539475ffa63e52252d94083dd1ab426fe8d3f2", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters3-result3]": "84a230ea5f70db738da7c5b706ff5635d2421500b0274a21929f3aeb616f5780", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters4-result4]": "25165e77e433a685e86bf6d82b1667b0258c47a98fa989441d30c9f297b2a0d1", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters5-result5]": "6ca043d24c1b31326c05c3c68330c1e9730dcabe9ee1fa7ca4007aa8a2758cb2", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters6-result6]": "56cc2de06970d7f5d1908711ec9ad6cc0e964d6f5d126f77a0ccb5d519b74073", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters7-result7]": "cac08381e7be754d94b1ea1f60c306baff406b354b5d6a70325541e383434110", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters8-result8]": "a62c85fae2bc134a2687aeb3e019b1bd55c01d7337ad1826d3f6be888b89d21a", +"T2B1_it_stellar-test_stellar.py::test_get_address[parameters9-result9]": "7c2cf7b1d4359c58a3710b49a12242a2c494a29b6010ece24163672e60df511e", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "af04ea81ab5dfc5a6e96bac4ccefd587192e12afed1386a221af5e28460d080c", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0444f7fcd5d3b984fadd9f5f01d2b90bf4fb3517b872421a67ce9eb87969f91d", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5dfab4ef9703c2c5afe696f93a728a398a216cdaaf866843948d0732dac7a2aa", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "31dc86871136d08da2da6c45adee8143a4091a71215d2dbcf54c1aaaa43a4557", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ee5db2d0b7fa43605a1f3dd8b9257136cce5979a9aef03d93c6365394c53d1d2", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "3ff7887140dcb51b662e5a7734bebc8a4c25bc965937a94d89e01b1258f91251", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "fcc0d607d9cb847696355778d221000d7ef9b1f42c21b43dfca8d4725cf51cb5", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "6d70533651cd6859f0e02057d627d5d62345e5815f31ee596123278ed5db16bc", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "e330799c26574678688ab61d056fe3ad84a488f1db03b091f9553658ae898688", +"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c2cc894334cbf026669e72cff2ae6611b828a3c8851e7857188223d2d9fe5ebd", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "cf8c648f1245f0e9ede65078374619681d54b508fbf9a7532541f852ba1c131e", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9293c00c18ccb125fc0d12060dc7467dd9b37440708a3d650ad4d6c43b916c3e", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "ca618e31a3fe57aa9bde74a07cf83192266923517a4deac722ee98a7044bd940", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "844b16cf6b433592f51fe5d73e00784c0e1e1848852bbe9d42304700efeb9c64", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "7d18f33d82cf891a933166d9f0630c52ed5d238dd55cf9ade2c2557a8b2b344c", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "481fc9f67538df0b9082f614f56cca34cf8755e0462361aa768b982d20855315", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fe78a36263716003fa214f7849273888e6b29617587cf907e6b60bbe88fa90e9", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "59206078a879a2a95316704a4c6af31b9c3788923b6c9549db1ea2521bea99fe", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "4b243281049ea32b50edb1aef63acff40ea3d0e9ef87df62e0598d11acb47ecd", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "48d5ad24fe65a3a8047f3e84ebee171e0b1c073f8c4ad712ca7b9a9a46c038f2", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "5bbc98c719fa9bbce05460982b6ea62078d6ef91ea5249c7e4adc55e72fa4215", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "51a9ca5d69bad27710d47a9f396ebb4c8c12408e2c9a997c94090dfa997ba899", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "ee41420b0d7e36b8a75f913dd64321b271f5a4838fd0e919b1985b04e648846e", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "01dd90de9d24132591721663c7c1ac3b309a3c83990aab67d99ac396107877cc", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "dc70f5313ceeb59c2e8abebc79db9b5b23d8e5755ed321fb51000f5a65288eee", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "3aefaeb53a6c3f8c0718170c98be179497d17fc9f1827005702b01eb03256f63", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "7fad4ad197a2d2f1cbe57c55fd0e097f13ca923e249175d2c23536f8d2dab366", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "5306ac73645eba102a440630e2802ac0aaa30cdab37e5b2361d642c5934c8265", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d84beed3bf387ab8818e1a594716227294c9be40453ae05e7ce08a1a11d68b42", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "4dd89a7e03f243206f8f24a31c1c05bd91f171d3d188851c868b899c32ecdb87", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[memo_hash]": "63d16f2d84352581561413071955e4a869b199764f676878612485065458f04d", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[memo_id]": "fa9ea66a169d7e8036ecdec74ce60a438a70627aced8579ad695d3390d06dae8", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[memo_return]": "3c909b073cdbc1a9d9a097fdc3c45be76a4150b9ffa858a0a886aebef98e1fa9", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[memo_text]": "792b4a296975dffa2c4ae73ea275887f4e31bb677509cceab66be4d8bbb0c06d", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "d3f394b2f2a9c25e6062c454658c618216e22fa2f92c1d85d227496864bab863", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "0d5bcf329ca913e62ef10b2614114ee38a3da7e5126282bb54634424b8c9eed5", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "0a46c93eb5cb5ffc54dd1d73c44217d5126bd30a78dbf48e5946d723e01f4ea5", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "3a79068c0c548486b25f10c365ebb90a60352aac94b764b1f7c3f17c09639eba", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "68f5ae3d14a12da0ed285bc596b99ed9660d56f28f2f7af7f1dbd2553f5645bd", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "7fad4ad197a2d2f1cbe57c55fd0e097f13ca923e249175d2c23536f8d2dab366", +"T2B1_it_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "bab6285983c663e3c580465e3de58d4f79097b92ffe309be71d4f2f8e7cc0f03", +"T2B1_it_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", +"T2B1_it_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", +"T2B1_it_test_authenticate_device.py::test_authenticate_device[]": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", +"T2B1_it_test_authenticate_device.py::test_authenticate_device[hello world]": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay": "1620a525ef11ada590262bcef44104dcd4ea544f84b0f9b2f8b07154a175a142", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "db8190f29206fc8f6d8b07d3c7022353aa659c442d20896b5e6ed4b4293737df", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6a602ca64a43c58dab6ca6d48d77e18af3ff2fc59fd645383ade25e8728c3af1", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "06f9b3668d479cc9dabcd0bda63c9aca2e164b1caf8267dad7cef020f457883a", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a027cf0a08a704f6f16bbec08179403a02a5236071ab11884a57a146364689ac", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "feeef6b114e9c68d5182049afbaccfd0d8506331105de5e390cbc564a92465c7", +"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "95f3f70c3c4d0aefe286636a60ada3ac121fc4a8b17c311d12306cca513b79d8", +"T2B1_it_test_autolock.py::test_autolock_cancels_ui": "fb63db25ce407643f04e78c73f871efb32a84fc0a1483edde83a186168ff809f", +"T2B1_it_test_autolock.py::test_autolock_default_value": "40893c04a7da0734bbcec231edc1b4ae604fd190ae9faeda29874bf1e6bb60b4", +"T2B1_it_test_autolock.py::test_autolock_ignores_getaddress": "aa2017c703150e346b347f759b62bf3702b77a07e7b251dc61558cc4d6743d53", +"T2B1_it_test_autolock.py::test_autolock_ignores_initialize": "aa2017c703150e346b347f759b62bf3702b77a07e7b251dc61558cc4d6743d53", +"T2B1_it_test_basic.py::test_capabilities": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_basic.py::test_device_id_different": "28148dd7829fb9d1cddc8a9da01f97925bf8c5e6d06b6b6c671b1aa0c1b53c9a", +"T2B1_it_test_basic.py::test_device_id_same": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_basic.py::test_features": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_basic.py::test_ping": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_busy_state.py::test_busy_expiry": "a43baa6dbc63e89d9a216ce7a48304497a22efdbb9a4f6428f235714ba32b808", +"T2B1_it_test_busy_state.py::test_busy_state": "2951b93f6ef4d7d5974caec932308e364bac56d52827e8245ef11de6e6c33a49", +"T2B1_it_test_cancel.py::test_cancel_message_via_cancel[message0]": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", +"T2B1_it_test_cancel.py::test_cancel_message_via_cancel[message1]": "6dae86c3d25fdc77e95789757750e41b183ccfbe4e2fe00908232fb98d806a8a", +"T2B1_it_test_cancel.py::test_cancel_message_via_initialize[message0]": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", +"T2B1_it_test_cancel.py::test_cancel_message_via_initialize[message1]": "6dae86c3d25fdc77e95789757750e41b183ccfbe4e2fe00908232fb98d806a8a", +"T2B1_it_test_cancel.py::test_cancel_on_paginated": "f27aad54a38eb7716fece2c7b94971ba5788ad9449cffada356beabf4707394c", +"T2B1_it_test_debuglink.py::test_softlock_instability": "7ca44316b13797bc9d41ab67cfe41c899ddee63edaffa5d07fe0938a6e1e5619", +"T2B1_it_test_firmware_hash.py::test_firmware_hash_emu": "1af7ba0f0782c919cf0db301a5c4862d972e633afca7d849598c55c751e25950", +"T2B1_it_test_firmware_hash.py::test_firmware_hash_hw": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_language.py::test_error_invalid_data_hash": "bd807f7a50dbb3423cb4a6da1d51d4cb9cc9583d89f69b93e7fe0264e9be7f08", +"T2B1_it_test_language.py::test_error_invalid_data_length": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T2B1_it_test_language.py::test_error_invalid_header_magic": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T2B1_it_test_language.py::test_error_invalid_signature": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T2B1_it_test_language.py::test_error_too_long": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T2B1_it_test_language.py::test_error_version_mismatch": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T2B1_it_test_language.py::test_full_language_change[cs]": "f3870ddfd0efd0caabd429071eba98cafccf732a589a07eeace9b6502734ae4c", +"T2B1_it_test_language.py::test_full_language_change[de]": "b7fcd89dbf59c84218e81bd692ab76807e90f792712ed533ba0e22023af9c84e", +"T2B1_it_test_language.py::test_full_language_change[en]": "0d9c6c92b769fa46ae13bcc27e7e16a0293dbeabc12592f83a9075fe42064608", +"T2B1_it_test_language.py::test_full_language_change[es]": "354c9147029bcdba3621505220099b3a3e241b0405a570e161a4feea4f2e34e6", +"T2B1_it_test_language.py::test_full_language_change[fr]": "0f3cbf48f86b94c8edef935208e41429bbc5ff61770055118c1ae22d757e5502", +"T2B1_it_test_language.py::test_full_language_change[it]": "2ddf360b587607cf6643b6f72f90673399b698bcaf6907991faab36d39d74aff", +"T2B1_it_test_language.py::test_full_language_change[pt]": "4d5b708d18a151d6315fd0a000e2a0c18fe27fa12755bacf4de492ece76703cc", +"T2B1_it_test_language.py::test_full_language_change[tr]": "e5c0a15460798b46901d481bd467c0c1e05849b329268d46bb81d1218fc3e96a", +"T2B1_it_test_language.py::test_header_trailing_data": "09fcfff480555398ed8aec63ad3141a7e6dda37d935addd1e0fb3ffb647df1a9", +"T2B1_it_test_language.py::test_language_is_removed_after_wipe": "faf54ae3f5f800baae23df593b9d81a22351b6ed249c4e34b81ff15b2158a9b0", +"T2B1_it_test_language.py::test_reject_update": "96b815d4cac271041385c7cd155c1e52b60c145081119e6d6d01ba9559434ea6", +"T2B1_it_test_language.py::test_silent_first_install[False-False]": "2bc164388b73b2e6d010d602e123e660fa77ab4d21057e66a0e6ec0b369e99b7", +"T2B1_it_test_language.py::test_silent_first_install[None-False]": "2bc164388b73b2e6d010d602e123e660fa77ab4d21057e66a0e6ec0b369e99b7", +"T2B1_it_test_language.py::test_silent_first_install[True-True]": "4ac422ac6c2ef729ebc07dccb6294906d28ae9d0a3b9b146549d30169b462e7e", +"T2B1_it_test_language.py::test_switch_from_english[None]": "5947cce7634a715b9ad2cbb3fff2ba68cb8d3c5dd32723ea5225e5312b0dda34", +"T2B1_it_test_language.py::test_switch_from_english[True]": "5947cce7634a715b9ad2cbb3fff2ba68cb8d3c5dd32723ea5225e5312b0dda34", +"T2B1_it_test_language.py::test_switch_from_english_not_silent": "3e6c18d955fcdd914b4dd6756f962778657e9a51ac7ece3026ac65c7ebf1340d", +"T2B1_it_test_language.py::test_switch_language": "994a8889d07eb83c306644683dac47572f015704c111a8651149053bb4958897", +"T2B1_it_test_language.py::test_translations_renders_on_screen": "26f48e282f474c09323352755aa9fb60c585fc1b2b9806acb17775764065f718", +"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "8ec01f844fb632a6fb7522979c686a640c07a5353bb6b3a645cbde525411d4d8", +"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "96f381b0ee8e95fdba09e1948af3e8bc6889e28c5315db9bbda2e820bd2ae093", +"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "0fdf47f34f04c39d5f7a676a61d35ea0a99e7753045a78933c790c9d161ae804", +"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_msg_applysettings.py::test_apply_settings": "cccbb502b46e5d7e68de74efe0f8049ee4766d04d49d92591a4dee433395632a", +"T2B1_it_test_msg_applysettings.py::test_apply_settings_passphrase": "f2cc69b44d51e653dd7c9c206dfd775b34833e78e3ee51b99498fd3871639fd5", +"T2B1_it_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "89c7c427c7b15de0a353c94c871beef3caa60baabb16b574b6e180d6e43c4113", +"T2B1_it_test_msg_applysettings.py::test_apply_settings_rotation": "26d6550901310635764f2eef7d007200fbaeb9227c8befb0cdca5e080ab8e510", +"T2B1_it_test_msg_applysettings.py::test_experimental_features": "e1c48dd8bb5f7f19d3be94d1fc15dd76e9a1c12af66c5f4b3a2169e4f14f9f88", +"T2B1_it_test_msg_applysettings.py::test_label_too_long": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_msg_applysettings.py::test_safety_checks": "c447f15875f222ff12893689339feec30c2d83ab152354c04fd99be51b40d450", +"T2B1_it_test_msg_backup_device.py::test_backup_bip39": "ede5f53eb1fde58f07c4098e0b96763af96e9b3302e7205f49db24d279cd5218", +"T2B1_it_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e9988de3ef593ac1963fe914f70c13906aabc19d6299c0016d49caf78314afc3", +"T2B1_it_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "332e112345178e4a903faf08ea07e8be3029f11abf5f7e982413c5451a580f32", +"T2B1_it_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e9988de3ef593ac1963fe914f70c13906aabc19d6299c0016d49caf78314afc3", +"T2B1_it_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2d283a8f0a92f2e44f2580b963f826ea79476e61aa15b6c1ab810b6d9f202529", +"T2B1_it_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8510af6777550c685a9341fc0f9f1f1ea3d066594fcaf85f267f1fec5d3effc5", +"T2B1_it_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "8a704628795af23512414f9ceac567c4cf466abba2c311696a0585dd5eff1083", +"T2B1_it_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "eaa6a63f5a72f4c701a7d6e80edab2d86026fdec13a9328cc9591bc90fffff7f", +"T2B1_it_test_msg_backup_device.py::test_interrupt_backup_fails": "255d93ba49c767ae8a2c8dd00f30d10f608363743b28372aad5f9d41d01a9991", +"T2B1_it_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", +"T2B1_it_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "14772eb203fa1b537e56d3c604307d2d6b4a085988e89df3ce43a6de05b4c292", +"T2B1_it_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e59c861496561220277aa8dfad12d041e52f0d57326e7440c470d27fccb98705", +"T2B1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "3bcb71795f8941a819bfdcf88960e6d48b8517a297930db3e0cca6abc94abff0", +"T2B1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "066d38b857662ad230ff48c6150d11a702e8b43583a88747dc8914d27b828ce4", +"T2B1_it_test_msg_changepin_t2.py::test_change_failed": "12b9b6e9788ad9a38a664e3ecd1d4c3798b029ffb8decc23bbaf5dac18cdbf21", +"T2B1_it_test_msg_changepin_t2.py::test_change_invalid_current": "4566ec9383ca58ae15cc243c94d9112339c969363d8893c054c90654c62aa5d0", +"T2B1_it_test_msg_changepin_t2.py::test_change_pin": "6b5d47d9f5f91381459c8acea02b4fbf017f8f1ae8599c714cb0fea1fd37ed4b", +"T2B1_it_test_msg_changepin_t2.py::test_remove_pin": "867c038818b0eb2b7715200342fb6c9b4696e1df1cf6b0ef1c38a7c6a9eb8cdf", +"T2B1_it_test_msg_changepin_t2.py::test_set_failed": "636ab41389b8c0ab77dcd841b5d772424b8563b8fd41bb03f46ae3b74ccaebe4", +"T2B1_it_test_msg_changepin_t2.py::test_set_pin": "8916fd50eec39190ba1136d8a88a14f67f53d96ccb5241cb1597e2965892a7f8", +"T2B1_it_test_msg_loaddevice.py::test_load_device_1": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", +"T2B1_it_test_msg_loaddevice.py::test_load_device_2": "7f3e10bccc07970416b3198b6ab0409f678c32070a8028e35ceff51f30267ed9", +"T2B1_it_test_msg_loaddevice.py::test_load_device_slip39_advanced": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", +"T2B1_it_test_msg_loaddevice.py::test_load_device_slip39_basic": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", +"T2B1_it_test_msg_loaddevice.py::test_load_device_utf": "38beabbb411d83676ea7fb415edacf5373115dc8611fab88fd297611a05c00e4", +"T2B1_it_test_msg_ping.py::test_ping": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", +"T2B1_it_test_msg_wipedevice.py::test_autolock_not_retained": "db662f1c2efc3aa108f79d03412c5f2f571254058d181cb1de1223b52485cd0f", +"T2B1_it_test_msg_wipedevice.py::test_wipe_device": "28148dd7829fb9d1cddc8a9da01f97925bf8c5e6d06b6b6c671b1aa0c1b53c9a", +"T2B1_it_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3d58a61e52062926fff5708cb4f106e10357b38e8d2d60f723ad765600f92272", +"T2B1_it_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3d58a61e52062926fff5708cb4f106e10357b38e8d2d60f723ad765600f92272", +"T2B1_it_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", +"T2B1_it_test_passphrase_slip39_basic.py::test_2of5_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", +"T2B1_it_test_passphrase_slip39_basic.py::test_3of6_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", +"T2B1_it_test_pin.py::test_correct_pin": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T2B1_it_test_pin.py::test_exponential_backoff_t2": "9403b96a25a6bb91edabe9348e2ef008439a871cad918563e49b09c06818b2e1", +"T2B1_it_test_pin.py::test_incorrect_pin_t2": "238fcf8c10411bc03b1036538fca473df070daabf29f253af12fdd058753f2ae", +"T2B1_it_test_pin.py::test_no_protection": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_protection_levels.py::test_apply_settings": "987178acbe3ee23cc515ec3f4f400f4fb45f46736e9e30ed4caf3c8574f5efa2", +"T2B1_it_test_protection_levels.py::test_change_pin_t2": "86aa1e9017c224b0a9047f1f5e34317cb5f648a5f8fbbe73f371363553718435", +"T2B1_it_test_protection_levels.py::test_get_address": "50fd69b07068ce124a1e49b9247a1f447c67c4ae8fbd80f09aaa49d25139ad1d", +"T2B1_it_test_protection_levels.py::test_get_entropy": "8c4d6ec3bd1fe2eddc4cc57c9b99773998662811d6d51c007e89879a2b3045d4", +"T2B1_it_test_protection_levels.py::test_get_public_key": "50fd69b07068ce124a1e49b9247a1f447c67c4ae8fbd80f09aaa49d25139ad1d", +"T2B1_it_test_protection_levels.py::test_initialize": "bf2470fa918e8632ba457298eea347b3885b1fd2b42c99f4f41db1b8fafef32f", +"T2B1_it_test_protection_levels.py::test_passphrase_cached": "b17b00e462b6a02e4c42dd229c17a6a35925e806b9f7289ebdcd8fbf1d64961a", +"T2B1_it_test_protection_levels.py::test_passphrase_reporting[False]": "59a82cd7ec5edfd68ee5a3957014f8c006ecd7e0c303549a6b5abe92a25e1c2e", +"T2B1_it_test_protection_levels.py::test_passphrase_reporting[True]": "6774de46569a5a0ab6b7708d79927b41b017e1b42b17c069ec38be014ead184e", +"T2B1_it_test_protection_levels.py::test_ping": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", +"T2B1_it_test_protection_levels.py::test_sign_message": "279e75aaa3a4d7e054ce467001a07f7d23fefd29c7daba89de6473516ad668e1", +"T2B1_it_test_protection_levels.py::test_signtx": "edb7689d63cac4bf2be34f53c71bd857346d2bac7f190c80c901ffd3ec5ee938", +"T2B1_it_test_protection_levels.py::test_unlocked": "b8952b2cdd4094bce773530ce6de9becf3c65fe57f585bdcc552268417e92800", +"T2B1_it_test_protection_levels.py::test_verify_message_t2": "a420437b1676caf57f92c624c68a4834c76e8952d049bbad5d5f47057c9a7547", +"T2B1_it_test_protection_levels.py::test_wipe_device": "405ae74680f3a50811085ad0eaef962047e78ecb47c7391a4090285fcc0fd5ad", +"T2B1_it_test_repeated_backup.py::test_repeated_backup": "5afdaf9df261bbbcb36aed231180a6d88686ac327503b02f8e236e140157a064", +"T2B1_it_test_repeated_backup.py::test_repeated_backup_cancel": "acfce90d9e19f9c029b617592608422f762ce9fcc62f732b35484939a3a2fba2", +"T2B1_it_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "5ab1ddb85653bd72442bce97283d8a3af41de758de7bb107b2341dc3992036a1", +"T2B1_it_test_repeated_backup.py::test_repeated_backup_upgrade_single": "021fbfa7672632f7c84bb5a8e6ee1be8daeed842be2484ce55a052c35d4a1ea6", +"T2B1_it_test_session.py::test_cannot_resume_ended_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_session.py::test_clear_session": "072582faea8fd594ed2d2592c99a395a499b64dee8d2646a600c2053a4f48a0c", +"T2B1_it_test_session.py::test_derive_cardano_empty_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_session.py::test_derive_cardano_running_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_session.py::test_end_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_session.py::test_end_session_only_current": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_session.py::test_session_recycling": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", +"T2B1_it_test_session_id_and_passphrase.py::test_cardano_passphrase": "9bc407cf9c5c80cf5f252f10f42d8dd077a62880d43399bd05f10eac8a584a7a", +"T2B1_it_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "887a43198847d55adcd4400cec6a8699bb3fcee5b7df47a8ad56790841770e41", +"T2B1_it_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6784ff420bf411799d516072392ad915be93afbf090218bace8081cc4f717d57", +"T2B1_it_test_session_id_and_passphrase.py::test_multiple_passphrases": "9b3bded72a61c6bb7274c2af89383150b8071b196be1ab5b8e7e73eb25ee683f", +"T2B1_it_test_session_id_and_passphrase.py::test_multiple_sessions": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "8ea756961ca2b1f993b9b0f5b4a7cac13d918be6a0866a9345c18eb5cfd93bf0", +"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_length": "b33cb0cfd7c1080efaa0161ed871dacc13ebae87c3712d3fb50a1261b4e703f1", +"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_missing": "b17b00e462b6a02e4c42dd229c17a6a35925e806b9f7289ebdcd8fbf1d64961a", +"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_on_device": "a1bcb7017dddcd16b6aab5ef7e07f1890f189fe04e1fd2f325c9b1b029b64930", +"T2B1_it_test_session_id_and_passphrase.py::test_session_enable_passphrase": "e9dcbe61b87c365d27423fa0432cc30ba2d2f997376ed3d17ea355f67aed2569", +"T2B1_it_test_session_id_and_passphrase.py::test_session_with_passphrase": "5cb9b9e0aa76dcc950ac70ad4f990e61a9f769c2a28d0474e1b615d02a87ae3b", +"T2B1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2837d2ef936932e393fa0e06102757ba5a61bd32967c60871412ef645557587c", +"T2B1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "55acf45370f9a2e9774ee133fe31af9ef4cb2ea37fe0d4cadd1900966b6dfe57", +"T2B1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "19772979cd4e114835a71e7b0c3402230a3170b0d56773ea63c145e8c921d62c", +"T2B1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "1b37766efe40499b17b1012c3e8ed9e19454b3ca765084f187e3f7a151a6759b", +"T2B1_it_tezos-test_getpublickey.py::test_tezos_get_public_key": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "a9d4f3780df68937d7fb3e3546a0132dd6d6fa9e8bfa4b667e4983fdae66c5b9", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "6fcd5ec7fa380d38aca8151c43531c39fcf7f61ecbbd9348ad917d154fdd05e7", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "774cd22e4efe79ba13f8ef1afb8dfa2341fe45a4112bb16f108615286ea13872", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "94bac677a2d3ff555f506d14b5980dc06662356bbde611809ca985635c9df5b5", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "0eb309cee6fe2699c8d0d7dd4e680be631f316e3c367aa535b1f3fe3f51e5315", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "41817b010224564ba477988fdebaddcc925aaa7580c23a7762f41445e115a093", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d04d3cea77dde3f232f5de0807aa8f2e411c4242954fecaf63ca0f4fc51fb703", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "f9a37072c655ca09052828575773b8883792a8f11465ca4ed124d250311b5a47", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "0e6896a3a24c00f2f79bbea670c813a95bdd89791da08bc9b567e863ef87f8bd", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "63e5f1f47e407a9f3b049e8a1860332bf59ccfb92f07c59c5607b1294123fa27", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "eca3d65297c9e11fb3d2855297807b13148dfc53573d8b34fa585ad0e76a603a", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "d18edaf84ad19444044113db0496d3b29dea29ecb2efaeade9a25625d5b44355", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "25e4dbe4a1c1479f488d5c949c46255af92dcf074b86814cdfa379c1c0371951", +"T2B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "c8d4dfa67b3acdf69cf0cf5ee0e7dde8679af85f63d92bc7cf524e5c2e25fc43", +"T2B1_it_webauthn-test_msg_webauthn.py::test_add_remove": "d23d22bc0caaf6bbf41de9e97bcd9a02a4c9e79b18f10e9489b8c0187faffe85", +"T2B1_it_webauthn-test_u2f_counter.py::test_u2f_counter": "824b7127d293a5159443b473b04f9c4a1ac569ebf1a28de1dbf6fc6582610943", +"T2B1_it_zcash-test_sign_tx.py::test_external_presigned": "b42a33e6f91b6ff21325896a3174f10a96570224f207630f0a5554d2faab5395", +"T2B1_it_zcash-test_sign_tx.py::test_one_two": "e0ea84894c4cb9432cbc430acec4efbe128ef2ac781796b190b02456d06e0cec", +"T2B1_it_zcash-test_sign_tx.py::test_refuse_replacement_tx": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T2B1_it_zcash-test_sign_tx.py::test_send_to_multisig": "eee6da7ad8a81c8061e7b6250000977766f333e2ada8df0572e02c8688b77c1c", +"T2B1_it_zcash-test_sign_tx.py::test_spend_multisig": "5b18c8eb6fe7201715c0627cef79a218c776e553e42686a9b87d3d733a05ac56", +"T2B1_it_zcash-test_sign_tx.py::test_spend_v4_input": "c04724d95cd5b23703d1dc7e2030bb7f4bd1ea028b2961841f4736106377e68e", +"T2B1_it_zcash-test_sign_tx.py::test_spend_v5_input": "f644a93601da9e8c03c8dd25ce3f963005bc63286d0d52ee3a23a761b12b863a", +"T2B1_it_zcash-test_sign_tx.py::test_unified_address": "53e20400c8fb839ccb28e4d74ae77eb89292bbea3ac7534c1339db19b01939de", +"T2B1_it_zcash-test_sign_tx.py::test_version_group_id_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T2B1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "3935473a30a4122bbfdb6abdacb1c742e57413ee36f192c77bfcf5679c7c4036", +"T2B1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "073e785a513b6b24c58f10224cdb844f405f028a2e6d68011283d979ced3a82d", +"T2B1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f1c0ea9306c0a008d785718181889c01d7ac9b48394614d3e3e4fb11c2bea008", +"T2B1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "20df3137e058c9a7407f568a8516c79965fef1ca8bc8adaabd8812a311c10b09", +"T2B1_pt_binance-test_get_public_key.py::test_binance_get_public_key": "7c5ec0b56007bb7703cef920754199378aed389a06b7843123e87c58826347ce", +"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "0330bff94e19af4b503a2abadcc6405adfafb4ae6e98a9faf42a7a3ffda8c9fa", +"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "898ffbd863b893ebc95f36435c088f5e4663ad15a316b7b77dbbc8dfbe638135", +"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fb4d1ddf33527075717b8b77141392da4258655068ea235640554df2f63b653a", +"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "0330bff94e19af4b503a2abadcc6405adfafb4ae6e98a9faf42a7a3ffda8c9fa", +"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "898ffbd863b893ebc95f36435c088f5e4663ad15a316b7b77dbbc8dfbe638135", +"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fb4d1ddf33527075717b8b77141392da4258655068ea235640554df2f63b653a", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "0c97dc250a805277b45b40e9aa8202963043ee5d72622692cecfd701fb9629e6", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_get_address": "a8f2793a33fc00c7e9abfe5e49e97beb99045b55aee5e1bd937e97c5c409aa1a", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "bbdfcc775abba66f5a7362c06e34a04cf1821f99fb30ea9d36ccbeb5de049df8", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "0e9a453ce48e2c7ef93f60bac29a0ccaca94d2d4910fc184cbac6a8d6bb85290", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "52c25b83d93fb27c7c082ec383a7d6b73a8c05c5f113cfaaccc374ce3e13b3bd", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "52c25b83d93fb27c7c082ec383a7d6b73a8c05c5f113cfaaccc374ce3e13b3bd", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0a9cd1f9dba86ff0611689a747a994a7c37839aace0f7d981365648c65c16de9", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "4ed06c6f999111c6ce2b2123c9124e9fe61f71f65a4bfb7bd95e7249ee7d98bb", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0ae6544425abef3253ef406725a308f654f7c69b492b8e282e2e372bf77a5635", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "040427131b00f539b99674d35850e984a5fd524b03491be28a0bb97b77ebc17d", +"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "040427131b00f539b99674d35850e984a5fd524b03491be28a0bb97b77ebc17d", +"T2B1_pt_bitcoin-test_bcash.py::test_attack_change_input": "afdbacedb329d4856f7e03fb96dace8fcf32f028af8125e8a943c4c879775efe", +"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_change": "7bb3876df1177ea18a44854b26edafa5d1aaca7270bf844e5bfc56e3d58c81c6", +"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_external_presigned": "8d2a2b953145df525de202e46755beacd03c02ab0aaa857a87ca9c275409293e", +"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_change": "9c6b5da8085411ff3c1ad86dcea8c8281e6f76ed165d96edf8fa9b6a746ef0ae", +"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "59b88a16e7b13b363bfb6af442b6b48c16d768057e8c1d94dfd6f04ca15ff2ee", +"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_nochange": "93fadb1a8db77c06b9565b24a87ebb64e2705101d9671b5bb3528176e0da9a34", +"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_oldaddr": "482cd6066283a89ffd22fea9c76879d064249b5fd95a1b63f1f3d608ccc423c5", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "df593ce85f905611f7d60835c283a5882b54d53055c24d71768404cab740b1fe", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "6f0e3344ed6184df14aeb69bd08fcfe5a72fe03225d62d8f65fa6619644ad709", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d02ec6bf02e51df060f2cb7aa020d00dbbb091262a74b9623e8c18c83f85d036", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "cb496ccd6b0f2b6ecb91eadb370c758d9783da01e7e5383cc2bf0d978a31dbd7", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "2abaf209e38b74c84b97c3ffa84018b981cae6c21676967eacaf94f2b1c34215", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "bb59f0f062072787d51cce53021b2c633080bdd06b0cd78a264f8e284385f363", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "2c1812588891af1a5df96a672a0f1f07c4586206e58885d8b03443a65c50a535", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "b95376f9ab66ee682a637f1249ad442062d01f22a10d75b5e87db1de1c036f0d", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "40fe7742a46216b43ddf5a0150334c8486eb4cb467173d121ca4096f923eaf09", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9146d2fbb17c022cb6229503ee7e0997438b32e2e5d7ca2014be50b00bb5760e", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c2fb89961efdfb11bf08698d8868929017f79ecce3a2a85b19f537217e20bd3f", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "803f8860368d17c7791731d1eff2554c6088c5da7381a9e0587cf5187baa0993", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b1307b159816fe71d98ecb5726a28783136b262d6225522c478d0fde4704dabb", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "56c817d8fb3bdf846247142d1437066f9d36b10ab1482d61a85a39dfcf43d9ab", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "ab1b0d058fa80584de481d7e5fd6619362ca49552ae87714fef98caecd060a3a", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "18aa38b86f9096300464e5b3aeb68fdc611a95871c30250f484adfb9c91a29da", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "df593ce85f905611f7d60835c283a5882b54d53055c24d71768404cab740b1fe", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "6f0e3344ed6184df14aeb69bd08fcfe5a72fe03225d62d8f65fa6619644ad709", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d02ec6bf02e51df060f2cb7aa020d00dbbb091262a74b9623e8c18c83f85d036", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "cb496ccd6b0f2b6ecb91eadb370c758d9783da01e7e5383cc2bf0d978a31dbd7", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "2abaf209e38b74c84b97c3ffa84018b981cae6c21676967eacaf94f2b1c34215", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "bb59f0f062072787d51cce53021b2c633080bdd06b0cd78a264f8e284385f363", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "2c1812588891af1a5df96a672a0f1f07c4586206e58885d8b03443a65c50a535", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "b95376f9ab66ee682a637f1249ad442062d01f22a10d75b5e87db1de1c036f0d", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "40fe7742a46216b43ddf5a0150334c8486eb4cb467173d121ca4096f923eaf09", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9146d2fbb17c022cb6229503ee7e0997438b32e2e5d7ca2014be50b00bb5760e", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "c2fb89961efdfb11bf08698d8868929017f79ecce3a2a85b19f537217e20bd3f", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "803f8860368d17c7791731d1eff2554c6088c5da7381a9e0587cf5187baa0993", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "b1307b159816fe71d98ecb5726a28783136b262d6225522c478d0fde4704dabb", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "56c817d8fb3bdf846247142d1437066f9d36b10ab1482d61a85a39dfcf43d9ab", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "ab1b0d058fa80584de481d7e5fd6619362ca49552ae87714fef98caecd060a3a", +"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "18aa38b86f9096300464e5b3aeb68fdc611a95871c30250f484adfb9c91a29da", +"T2B1_pt_bitcoin-test_firo.py::test_spend_lelantus": "2d4dbfd0820ceb2abccb1792b92495206398ebff7eceb67a6a1c15c49397489d", +"T2B1_pt_bitcoin-test_fujicoin.py::test_send_p2tr": "6be9ea395962e47c42622e870f7e7d745287104c66c200a8a5309f968e809636", +"T2B1_pt_bitcoin-test_getaddress.py::test_address_mac": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_altcoin_address_mac": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_bch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_bch_multisig": "eb16ed286e1e53873568c0e99c4500c55c63479f50dd44519e441679eb2b4c59", +"T2B1_pt_bitcoin-test_getaddress.py::test_btc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_crw": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_elements": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_grs": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_invalid_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_ltc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_multisig": "e9a2ff79073e1af139bc8537a14ce1be00e911ed0963f02f29ddcdad5bac5065", +"T2B1_pt_bitcoin-test_getaddress.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_multisig_missing[True]": "d5a1a13aff417cdd643eb2d593b7c7065bfc89515f6f03b092a55a29984f6d8d", +"T2B1_pt_bitcoin-test_getaddress.py::test_public_ckd": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_tbtc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_tgrs": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress.py::test_unknown_path": "b31cd47c101d29514c7e585bb7a29a4c0fd6bb8f19f81d7d42ad8c882791e1bd", +"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6f799769ba10abf7d9a1aef5f957f54878665cd5253f9d69c95cfaa86f06af6a", +"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "d12f1fabae2ab62fa2bcee0aab909eb83e5e78da68950cc9a0035a59c6810c8b", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "0997a221d1a4395d5e6118ad7e3d33762ebd9d3da2552131102f4711d2f9cb47", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "480311aa0b450638ed4b87a84d49c5c7e532144dee3e0ccb2c16cd2937f0f199", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "f6d2e461111e7f8fa64273dd31d728afd4038f00b8f87efbd733043ae5d743ae", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "985004054f9e99cb7c15a0076a4de0e90186392c012a6aacb306a9d4961604d0", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "4aedb3cff16f5d4a9ae16e69e3c193f5746baf2c5999e08b198b87478035f06e", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "d94f9dd343d5f1a89cb8c2e48c4d1e8d1100f8968409cd287eea6fd5f5b6ced8", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "2d001712c09bdc058c372ec35aae9a793a1a53d079630f34857088b9c64bf66f", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "1baffc48db7dfb7d31b42e19f7fd0b13819f5ccad2a8ea5ad4d0ba8547a51060", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "ecad20a1a2418066bf722f02ef25c4cc3578f7fea8456eb38cddef555fbc7dbb", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "1a6fe5f4c87b7585b9b9887ddbf56d6e0737e3d2284bf0d24faba6a459384a53", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "6f4b7f477f2daa48d0c3a7d8c7771e912180bef918be81016736a8f6f88c9d8d", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "c64a24a114ef01d5da5b37656959225560c1cc8f48697389af4f5150c00cc24d", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "0808748b7480946e9d3d541ebdd2bc4e618223e8aebbe3fbf0b2a58dc12b4986", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a9e84788206da325a3bba2c7d27f6d3e75dbc93fa81fed05f31bc08538db0742", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "016e8cd42c9307b616d155d3ff063de22710c29bb2f5a908c99b83d774687051", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "32c3f48070c4c7997c28f6c914fc11487032235afa50aa8715ed514b1e8b19b0", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "1e68b8892bda9c64964b940d437a698e792c84fe5ea9a0e722390babc11b54d8", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "5988bed4204a0ca224699b93b2fb958b8287ee47143ee1bc0111665fc5b59d8f", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "efe4a77e0680dec578f0cdbc3e2bd199452391495ae7a9e098e0d32c880dcfa2", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_15": "53a937807d399037ae79de67b77817518423f8b76db5c36c0f2ba939798aeea7", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1b59dd844714691948f43018e7d439ae3b97c1b7d488329b0ca5f6f1b94d96c1", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d68824fc528ad954b5e70a979e8c973ebb5b726502ebf27117c4b5086f6e707f", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d68824fc528ad954b5e70a979e8c973ebb5b726502ebf27117c4b5086f6e707f", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "fcb2f84461600f607434fd39b66f06f49f89e718c8c3a53483b47279bc9a3bb6", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "4c74a456f0195f1cad1ebc1f681f2b7df5b2adc5a431893adffd20c979a115dc", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c18f9d08399ab23c9c062249f35702f9da3161e8e123e623cb5a4ecf3928a801", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "889088ec604c849931e1bf364733c82b6dce6a77bcac437f9991b64b7a8f0967", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "d53a2d2b6f6d201e79ec8540573b94886780459af9a5aced319504881a993fd6", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "7a01ecb8232085f8bd4edf913f33949b4c3054cf2b9291f9252dda13d0bb837b", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "e3c0af36821932e05db51014c0e2ad512f2f3489c2d231c96a3db5cb359663f1", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "87cfa0e4d4fc0777402f5644ea6b3a7abe117d2b4c18ed26ea08a97bd7a59846", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d7606c2273162fcf4151e15296858e618369038dcd4b141d074a26b52deea2af", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0baae1151165fdc92295c4ac0753661dc945f54c700cf9388a8a49540dc19d7a", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "583a7f54d36c97b1e8d80ba06d4a32c613ff98d786cbbbf7d2dd07b95c254035", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "7adf3603b3acf962ca93ec953777e5d68b76535cca06c8d157aeb95c37f0c07b", +"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b3af5e0326b2b8533812d0ae8d4460d10a8142402a4d3f9c1685f590234b53f6", +"T2B1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "561ee40dda42949d16b8a2241aca3a6b6450c6d59302704fb0d5f3959da746e0", +"T2B1_pt_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "18859108b5ba46db83e5bb314a2f3311503c2ed65f8636ed30035bbf3cb1f2b9", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ce4b33ccb0bba3205940e8d30cc07528db16ac69f95ace40e28c66b857fba57f", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "91fb421b48401ddcc654af0ffcf1dba9c9107533340d254cc4f724a402f3440a", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "64f36acdd35274a84dd215711f70b6bc5c139bc353f601bf86011aba3f072fc6", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "6bfbf55db9f97922227cb037cb601416f7638e8ddeef1d929cebfaa699c21ed8", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "46cb33493daca5de067e1f6896bd239fd5a9da65280be317f2a3aaf3c818cf0c", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "1b66998818ba77683b6e4c3a8cf0aaabe0111287e4a77c2406a10cfa25fd8df1", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "d4dff961c6e5a7f95688d0716b30ad83363e8d6004e22b88b836fabcb83b776d", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", +"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fb25f768d365b68dac90d20b9d1266546733c2f03664dfb1af33d4bba8efd691", +"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey.py::test_slip25_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_grs.py::test_legacy": "3d40df4ef3469225fe59d80fbb0bfd13e6716ae461fe6e987d98f9fc1a1affcb", +"T2B1_pt_bitcoin-test_grs.py::test_legacy_change": "8cdc2b20f5612b958e9c5b20906d271eb38ebd24524d049e84e03a594d464e80", +"T2B1_pt_bitcoin-test_grs.py::test_send_p2tr": "1371cfd505dc215dded6ff55c3e202fd9f34536e0b000e2e55687995b1ab1a03", +"T2B1_pt_bitcoin-test_grs.py::test_send_segwit_native": "c0c1bdf00d682166ca190ea7765a6db72787627967da98bba49f82e9ef766607", +"T2B1_pt_bitcoin-test_grs.py::test_send_segwit_native_change": "f2377e8bb2aa8617f45ac45cee2880c4e7a4c9fb64ba1c9ad80ac4f243a1189c", +"T2B1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh": "c2a6ebba6ea99d3589740f93c830e81350373a215ab31628d78e4195f8bca6a8", +"T2B1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "c865fc3a0b53bd761107eacd8a22038f936a37a00c6ef9204a591899ffa4e1e0", +"T2B1_pt_bitcoin-test_komodo.py::test_one_one_fee_sapling": "32bc4dc82aa8e8eff19171f34d14d9b8af65d239265cabf51a09bbbd305e5ac6", +"T2B1_pt_bitcoin-test_komodo.py::test_one_one_rewards_claim": "70cafdfd9494e4bf827553a73561646ccdc711776b40aa3fda923317a6b60422", +"T2B1_pt_bitcoin-test_multisig.py::test_15_of_15": "2b2de9c6212402f4729769b5cca651133eedd51a6ad81604768869c366746562", +"T2B1_pt_bitcoin-test_multisig.py::test_2_of_3[False]": "e6f974bcd263fd75554a3874afc75502a30f37f24c29b8c179b342124b56ad2e", +"T2B1_pt_bitcoin-test_multisig.py::test_2_of_3[True]": "6ca6e12166f8c1ac6ac516af261860f5fa8205356caab4205450e8848ae7cdc8", +"T2B1_pt_bitcoin-test_multisig.py::test_attack_change_input": "bc5415246696142b850ee35e1ad81a313a848038c279f9b2aba1fe8edeb785d7", +"T2B1_pt_bitcoin-test_multisig.py::test_missing_pubkey": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_multisig_change.py::test_external_external": "409d7682d9762f3c4c349ac24531ad65c9585f04b485d5392e91e78494fa3b28", +"T2B1_pt_bitcoin-test_multisig_change.py::test_external_internal": "0895887087fba9925ebb8b41e71559d6b56d51bf1fe4aee02c4be6f4de539fd7", +"T2B1_pt_bitcoin-test_multisig_change.py::test_internal_external": "648c61c7ef45b2d0fbbeaca4a28724699a73e750f979b9730d6bf13ac7dc5b3f", +"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "5b43737722aba2ca2c9fe930c1cf3683bc8d48c89520f6d0677a782866e12b4d", +"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7a6f24334acff5fd02426b0ea31c316652e6750cff285b833f5aff53fa34a5d6", +"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_external_external": "27ec34ba67ebfe3e744af8d5466d34fc3a5eb42fafa0f97ff2bffeb1f90f5388", +"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "f0e5c708bb41d8a944af2f6983b4a1ffe13dea810f81d5a99d837e90f0303671", +"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "6d350222a57da2473062b6404888be141195b4fa96f7ad86215c2406e0f31f77", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8e0417d4a0e42e57ef8f35004358402cb157b1450f3d685587c4acffefbf8501", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "d0b762d34956662f825b0254611e39c60d488855e9f392f54b1d828c481b601a", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "dec8c89ea199a4a4df43566cce72128161c8c3834a670eeee5f216cc0ed927b8", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "428a0635ff0277a8aea13261d59ba9a093439b4d2a4754193dc70667ee8a234c", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "caed87d1dbda6d7344ee71f7f96df6032f58d813bb307378243dd4a87cfee50f", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "fcb137d590e1cbcf29236620aced3b05e17af9863b1e4280920416b0af6913b5", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "af915edfdde340cedab212e246f1f8fa63ff4f5e84d4bc296a6f848fa59920cb", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "b2e40c7a90e878d9b0d1550fac01b440a978971816e76f811759878ad6e35164", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "cbdd7adfec30773dcac196ef5c5e7e861c8b8982964c9c4e6ab938a316dd4b36", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "ad460cdaee0fa51a831b8ababb1161ddd136b63d7400427d9edd3cf3954b772c", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "7bb098afaffc07322457de22c66a11e036b958ed5201387e33d4c48818eb1fb2", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0882f19edc37dbb80b2547e982ac71dd16ee7c4ebe3addf0a0d4f15ce2b04350", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "8d7dc19261f6f76313dd0b3fc08c368b57bab212fe6a2deda5df09f4ece8af83", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "951138b42ddf27f68111c49c601c613f5a4d29befabc4e9270af744d9f517c92", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "fb5db51ec50318388626e8e2e9114102049fd91ffceb7ec0e2e504bb0b310577", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "df7a9c8ac6e26ecbabd5ecd39e4dde4da2c87462cc7aa1d841da40b62dac6f95", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "fb89021df12d4477f501714ed02e160bcfa651c71a4b22aae1c39c025ee498da", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "1ab744f25c1c83ef0913cf88b34be2079fa51c90e802ba36ea9d7c20908fcb06", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "a92381eb8066b149c2ffe05368b89afab498a21833ff3d0f1ed45dd939bac93d", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "84644e9c64b5171d0d4275c35edfbb61797c583334e38323b1c3616b44b73882", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "72224befe8befaf4bb9a77f471954dcde444e42040af7887bf1b056e3a8d2744", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "6dfd8719aea175ad7ba4b78f903a6a7d00b35704a81b4fadcf694b6168295ef1", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "5f076f4b5041d90b1cb9f420bd60fd9a7650b6da2b40b8117ddb49aee35f095b", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "7893eb29a5fe45b26b8d37ddcf4acf1442e2eecfa67d065e5b460af350de4be1", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6a405a1f5fc2fc9baa21fa2eb3ad6e6d799ed9d0c346057bddb2b014a66a27b4", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "27cb13d2853cd2fcf7d326ba29033e18c4ac16c2a213f280f4e91187da4ff26d", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "80d960cfbf87ec058a22878c8a932aaaa47ef99a24bf21d657f17cddf922aa73", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3f941a9e0b90004f4dbf32281c81e374172abfac050cd880f8390c5944c33ad2", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "12241ed55b7e5f0c92508382266801cd00f5a85056c2447c9a1820b799f4b3c3", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "6af61ce60676964349c44e5e19276e1f87900cb6a913152c2f97f938376baf3f", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "c8c3d9929d3a062a0eb12321e1a49cc288c8937919e054b39cd3c8930400a3bc", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "cadbb52ce1b499743e8307301f4ac298865cf0635f722cd3609521ebdac5449a", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c8892902350f2134d5de4b236f50afb55516c57b6c46c76a3c2d725f2a038742", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "578607c1ebfe30b954b072248fa9261f8283200a5c4b5f1d4b566c1775c054a6", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "98312a6f52b8bdb973c10b1ae61a2583be8ba19728d1e73eaafab26d6c797b1c", +"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "06b525811ce35c74b88728673f2c9211c0d6d04d24891516d6dd6960a5c14d34", +"T2B1_pt_bitcoin-test_op_return.py::test_nonzero_opreturn": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_op_return.py::test_opreturn": "32148b4a1a424a4f615c9983523f7d1b615e74003766905903e7ff3327928107", +"T2B1_pt_bitcoin-test_op_return.py::test_opreturn_address": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_peercoin.py::test_timestamp_included": "9e85d56e6cd5eb57096242ba9779bc9eec4bf4fafff0a7d7720998edd58a93ab", +"T2B1_pt_bitcoin-test_peercoin.py::test_timestamp_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "5c6af00c1b383d5c45d6f5a4068ad4bc1cc0771e0e3b7a139ae225e7399394fc", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "1aca588fc005096ed8f8552368a166f5d4cf886d098778df9e49d7f136b1a9e7", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "1aca588fc005096ed8f8552368a166f5d4cf886d098778df9e49d7f136b1a9e7", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[bcash]": "22cf9ab09d4ce05c4f0694c6d3666ec45fc722bd7d14fc7920677ac3ffaa6b9a", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "2aaeaf857fab465a6bfd704f0d2d86f94e3bda0bd213e583c66f32bfb867b571", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "dccc5330764423f1a4a507b7ed27fd76e0a4821a14b7e9e0dbc562b4bc18e492", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "21c24deefadebfc7abcb0a396bf58b167d2b82898346b700e2d066fa2b7b080d", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "68fd86301d29147f4c38df2ec0375584d67a96e340281ec028151af7d2c7e113", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "05c6cae6c2f01acfa39126e978f3f6ed4eb090c433006753dcce31da7e40ae01", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "05c6cae6c2f01acfa39126e978f3f6ed4eb090c433006753dcce31da7e40ae01", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ea63f8a3a7d558c0af993e9fde718ba907627de6fac6e2af610380ca56b253e2", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "1ccf293e63f3730ffa713d7fab7fd81dba1c959d7a3d65e6d41b7f65070266a3", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "67b4d34596285e2d2d2b39c515ade60fd2e12944b6effee5a02c9082f9e07942", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "67b4d34596285e2d2d2b39c515ade60fd2e12944b6effee5a02c9082f9e07942", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "8aa7f4841eedddedaacedb3ac34592eae9ad4fe719ff24b2314fdeb08170a2ed", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a8aa6cee98d28f406682cef738dff8228acca14f50c09d2c4b2a570c49f97c6d", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "b5ffcc9cf60273af5332494aac8e9c87b134509499f8dd03677f5ce6311f8807", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "b5ffcc9cf60273af5332494aac8e9c87b134509499f8dd03677f5ce6311f8807", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "5c14feff11628ee59f29fa17c5efd91833c43d6477739fa425f907a7e2c0b69a", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "ee806dba06fdb6f80d18adc611cbaa98b5038f8dfb5d6da1de8309dc20bdf570", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "857a19ad1965abe4e6b3993dd698fd8a65708ef63df4a6e943ea8e599c996548", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8088b8cd4b11a33f125e587bca3fbeb1391e92129f49a93325b6a70e4d96103b", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "07fc10ecee988fb21daa2a6cb127dcd1da231d21d83e91c5318d0f2a5c55e85a", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "358c7bec8f55556cee3ebffb274171aa84cd33140d1bbd19085a991aefea6d5e", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "e646f8b2133c654731ed5c1f6c9b4022874b6997dc0deaf5925c14bf5004224d", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "440fe6e6dfa1bd58e6bcb05a2a6a11de78671bb5b3e9974265a209f98c7fe24c", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c7827f3df0a70afda0e1cd170c3512a83ba581c9e249cc5382a6aa6ccc16cfad", +"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_path_warning": "b361660ac8ffd50d33d178f095e26816e46449e3f69793a3cdeefc6af20a6c3b", +"T2B1_pt_bitcoin-test_signtx.py::test_attack_change_input_address": "cae13523bdcdab47fd35e3ad6fdbdff42609c741cf7ab989bee84e5ecfeed213", +"T2B1_pt_bitcoin-test_signtx.py::test_attack_change_outputs": "7133ddaa4e95252209dee822d8dfcdab149469ad47ff997ed741608ccaf47f1b", +"T2B1_pt_bitcoin-test_signtx.py::test_attack_modify_change_address": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", +"T2B1_pt_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", +"T2B1_pt_bitcoin-test_signtx.py::test_fee_high_hardfail": "741d377109a491e9d0164ff4dbba243715fee3716b267eb4d807ad92b8cdcf04", +"T2B1_pt_bitcoin-test_signtx.py::test_fee_high_warning": "69f3a77a5d83d3939a37837d1f26009ef82a727259cb15360bf2028801523270", +"T2B1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx.py::test_information": "1ef358a831c64a37f26b2ab801badf667c47abfe98d97618422244992318f874", +"T2B1_pt_bitcoin-test_signtx.py::test_information_cancel": "8bc3ab92904669dfb97083622592cc425f42f4d34ec2e6b0daa15719ec670d81", +"T2B1_pt_bitcoin-test_signtx.py::test_information_mixed": "642936c0c5dbabadd2570aba8d4d50b13f86d9a2cb15a21832bc34217a56a496", +"T2B1_pt_bitcoin-test_signtx.py::test_information_replacement": "6838cad9b2dd40192d35f635b7cd76b405b4398e013a2e47cb4db43606496159", +"T2B1_pt_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "25acda93263db0c84b6262f864914baf1af659709c7c66d775c3235c115177b3", +"T2B1_pt_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8bccc746c54f95cf56358d823056a01bc01c23e39ca488bf3c94cab4ffa6a07e", +"T2B1_pt_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "9712552f3b4db2b94170f47bc259dc723f66baf97f4dd47035bc4a54d2c622dd", +"T2B1_pt_bitcoin-test_signtx.py::test_lock_time_blockheight": "3742d4c87cc5534bd93aefb662997a7654658f3bc7c16a2c5e4547d60d6bdd1c", +"T2B1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "4a975268dd1713505706a8de0dc64c5141a09f47b325304c353f46e4169a18ea", +"T2B1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "89bdbb30ab72267cb9987097a27e1939c777fcfa0184f7c05a0de5ab5722281b", +"T2B1_pt_bitcoin-test_signtx.py::test_lots_of_change": "007750b3a0a6e92eff7fd522a8ab01ebb0c4a39f859b8de202ddf16a5e19148b", +"T2B1_pt_bitcoin-test_signtx.py::test_lots_of_inputs": "694332ed56821a7121f3f40e671ecaec181e3eae35dd686a1d3989e3cf17a85a", +"T2B1_pt_bitcoin-test_signtx.py::test_lots_of_outputs": "acf635b3ce818469a9b1243e72530d53e9d9c20ede74cd45a846356b716a0b32", +"T2B1_pt_bitcoin-test_signtx.py::test_not_enough_funds": "aad51c690dd3ff84ad8d710d08529b257651c43c2957ead610fe27bdef45bc55", +"T2B1_pt_bitcoin-test_signtx.py::test_not_enough_vouts": "dea93a8a6323b35c303ae6c77d7c75d67fa005ea667d71a9d37e7d5d08b3af06", +"T2B1_pt_bitcoin-test_signtx.py::test_one_one_fee": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", +"T2B1_pt_bitcoin-test_signtx.py::test_one_three_fee[False]": "4090d93136cbebf53736d4e69135ff1c73e4149688235d109b74e6c6962e9abe", +"T2B1_pt_bitcoin-test_signtx.py::test_one_three_fee[True]": "e8836bc076ebf6609c902c80ecb8468e0d83b3a1db59c2e26156018ae6972f80", +"T2B1_pt_bitcoin-test_signtx.py::test_one_two_fee": "b053e2eba2b7a3e8f51019446e16436f731689eefe63806140ce8f806800382d", +"T2B1_pt_bitcoin-test_signtx.py::test_p2sh": "bf0664a89b33d8bbb2f8982af8358e3a2e145b568ae9a025cbc454d22e2916e7", +"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T2B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_signtx.py::test_spend_coinbase": "448ce4b1b8ca8f3014e9482b09353a4926d6a0f7ca3bbd6c0a43e8c34948f53b", +"T2B1_pt_bitcoin-test_signtx.py::test_testnet_big_amount": "0cce1794d350ecad65feeb95fba4f9f3f7d8aafa1ca32bc8a112d5b506d72441", +"T2B1_pt_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1bdfe9417d6eee51c288f7bbf06a3d42378c7cf989a76a7d7d8e568465829ed8", +"T2B1_pt_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", +"T2B1_pt_bitcoin-test_signtx.py::test_two_changes": "3c8de4e132765fd1f3cbd56c4b078dbc4a6be8e98c63f1ce7098321d7aaf87f4", +"T2B1_pt_bitcoin-test_signtx.py::test_two_two": "f608e7ce6acb3b54905ba467b57371e410a75e59592f2ae31f0da1fa56a2ec81", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "57cbe912e9c1d20cb61432cae409851a5a03fe67698c530b8fcbefe4b2a5902f", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "56beb196e989ff48e4bb664bf42f20b6340d799df3cad457fc5e1995b1596253", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "ebb29b8efec06134cb28ed6c7653301c97744e9278808a4baf2a22542c4edf03", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "2bfc3592de14d68f7be49d107a57e494c9f21b7c1ad4badc87b8cea0631e7930", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "158bb4e6fdffd71074f87193459f5b36c936875258cbc97d41b41bf735178539", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "d4d0ddca70e1620f398a46dc8f616748161972586310c028c887de67a9decf31", +"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "79606fff871c3ec7ddb01ee8b02aaf5ca3f1e399ee651fb9d694d9cf83dd88ef", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "b60a38e30ce6a162eb5948dc7bc479461677acb96a040b390ade4c8e54761dc3", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "faf3027b8acedecca493ab1ad9be701ce843c6155ac2b48824e8c45c24364c77", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "b0cbf6ce07ae924c0043fdeaf8a7e8811deb2c19fc9eb126df66de1f3b9550b7", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "8d544071dd0aff5cace3ee52a076dda3f4f3dc5bbfd5223476c2436940ee66b6", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "05b081aa69246c30966eb0d6fc6a2ced955936fdc3ca0214c8053e6bdf91c69b", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "a953cc5825d8c042d000fda59b0595b6dcd92d902400e5a0b7c618b058918e7c", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "bc08af6ca3da9873d684db863bf8046efdc5f40ec911f9e23914c691ee58a7df", +"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "13530a7f6d37fc91b50b3842d7784d26bffa7c1ab54e0b179234034810196c89", +"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "07fecdcc98cf5e4b76860186f4a85a9cbd8f6523546562d03e05f728895128bb", +"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "ec6b07c65e33935b71d596d74aa7177c1b2b5e66125695817987045b83ca8aa9", +"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "82b14adb8637740fe4309583013bc1efce373e6234e9334653997b84c88e7f3a", +"T2B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "74f877874a89852d8d6922550f1298a7ec4d3a476aa9db00f13c9e61d7130fef", +"T2B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "ae072db7693515a25d1f00ef2595ed778ba7853c74686432d749fa2eab5728b0", +"T2B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "74f877874a89852d8d6922550f1298a7ec4d3a476aa9db00f13c9e61d7130fef", +"T2B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ff2c0f7092ea0ea438ee793cb6f3c25fb4a3711ec86b18e0f07a952b39c466ca", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "5947469ed37f0d64474e217092d9a54955311e911971caff6efd77bc1dc73f2f", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "59ffb3f97e5cc2c1d46af7b63a1c40ace7be43540d48e92a53e7c96e52bca50c", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ce8bbcdcec3bf39663b89dddb7cad99103c3afd7e8cc4f2a9796dce3c49161cf", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "016f4d5468c81b127ff63e20505711424943439dd997809aa419e3ab511b335b", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "684d406867025a47fef09e15d2f73a2e1bf603e2a9aca1bf2592462bf7a509ac", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "d04b3e8845c7adf9822a6d66fdf8e00321421663f457811d37800d1d76e5a962", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "3396480807b91457e47304c8b5450aed31771cc2da2c2519a0644a37ecbbde9d", +"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request_details": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", +"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "1af2f08ed7651ae2b580c4b912532bc974086897980b3634bb39de1c622a88ad", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "902e098caac2d73e6c8516549d2fb26ce2c471a4b98f72a7b1886474a0772656", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "5b17a1076f669ab5ac14403440753b2c7428d25b9d21c3d540da6cbff9c5427a", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "5b17a1076f669ab5ac14403440753b2c7428d25b9d21c3d540da6cbff9c5427a", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "7a102502ac4c81057c470175d72f656e8fff1d95a06a18fb40c4d82d22c18ab0", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5bd835f91be0b1a135cb253983a908a789fd5d1ca3bad1292ae8b9b9aae240fc", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "4ced177d00057bdeba9d847aff796f5c72d9aa789262c116a3a9ee7d16b05276", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7a102502ac4c81057c470175d72f656e8fff1d95a06a18fb40c4d82d22c18ab0", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "bb5a14afa32512cc6ec833eab5cb44d4fc13bd7caa6490d25469fb5ba47b1aaf", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "35fdfda7338dcca034406cbe9b7819ebacf223d1ebc9234603e566d44cbe5a7b", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", +"T2B1_pt_bitcoin-test_signtx_replacement.py::test_tx_meld": "478a385b044b693b9490db2744bcdbd68787982b31ef40eaf7f890103594ad4c", +"T2B1_pt_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7dd7ed545413565a43efac561723f0e9587706a84cefaccbc49da7ba8d5a3d6a", +"T2B1_pt_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "4c84bd1cf328f379344030e91ffc565df2e2814ac36f437a3a3f1247789d0d1a", +"T2B1_pt_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "e5762f2ed2619e3c0743a3faabc2c740cbf1d4534dcf22f5445056839c75d306", +"T2B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c6efbbbfd9b3d4e0ebcdccb50a8c6a099c034cc58ac4682fc77a6d7db334c78f", +"T2B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "7126c84e351a2ab5a783f0b5d4f1fed69ba476ea87d2e88c6b882492591001d5", +"T2B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "87a81bfefeeb82eaa9885f544a9e80b59f625c9630f1cb83416c2a011630a28a", +"T2B1_pt_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "54effe54b94288ab1b2005cd60434de3460d3f258e11f42da7755587cd9ee826", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4063e82e78563c83dd3ebeab2cac83635883dc23b1f85cffabb24c2017b2402a", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_both": "e272a728194528f842c216185632c2a728e0bc8cca7ed404ca854b748ba60285", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "d13c54438cc71ce844b0a366d376471bba39ed0904050583d2c3da87a272215f", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "e75baf7503ea75b8662cccb9b3d20aa01c4850ae5cbb50ab64f2b9f173a53019", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a152ffeadaa02a9ee86f85a98d56e80c65f0f67a3c8fcad94300befeb73b3627", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "941f0db7fcbf12561d50f9e3faa85639d6316f8dedc6f37856364ee8fbace079", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d9641db03f4e9527a1c68365adb1b6294b9f8e397df4fc0303cb2047fe281d55", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5e9acbf1b9033cfd08beefb5027359b95b12bd0583112f33a78166bfbab82bf4", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "2b3d96d08b34b6e42372e9e215cf3140d3946deb3e1f60611f9112f5525c9556", +"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "42d3f9753ce2b3b06fafe89c864dc4d92f019d7d29f0d1af12f1ff0459a1debe", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_attack_script_type": "700b9e8c2c150fd8289482716f5beebe8357b06ffc53e29ce990caf11770a09e", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_mixed": "5d56eedf8d78fa57f9a802addcae2bef77db040423e7ee3784a0440113373855", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "8bf216f4661e22abbb69cb92117605bc7268643c29bfff2065808b1bb879825c", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "377d014483771250f25e361d75c2f29c7f1badaad46810c64db4c1c5222c360e", +"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b99743b95070418745af5563003cce38dc75f739c4d44ebddf8ab969bf327f06", +"T2B1_pt_bitcoin-test_verifymessage.py::test_message_grs": "f5618215034a9eea04c017511bf8267d6289ba7eae37b6cdd4193949d12f9632", +"T2B1_pt_bitcoin-test_verifymessage.py::test_message_long": "2697030b5f0c6d3cc7f4f9c0bccdd526e41c42b7ff1f689899b09350fc39e5fe", +"T2B1_pt_bitcoin-test_verifymessage.py::test_message_testnet": "7e04d4ccb09aeadf361c79d0be39b903abfbc894e6a7c3822eb94a022315551b", +"T2B1_pt_bitcoin-test_verifymessage.py::test_message_verify": "e5d8c367d3c5e85d4b5391fc4a78d84fb07bad7147c348f6ed1d82882ae55326", +"T2B1_pt_bitcoin-test_verifymessage.py::test_message_verify_bcash": "340d3d9542e6076fab14530ceee8070b580f73e5e3aca4109905ec2168eccbf0", +"T2B1_pt_bitcoin-test_verifymessage.py::test_verify_bitcoind": "1e44f945e8b166b8366dc6345e94e51a1812f37bc9e6311a648fbd94f9db3344", +"T2B1_pt_bitcoin-test_verifymessage.py::test_verify_utf": "cbe648aa79b848f2b0e65fc560b5e5b54257a5aeb39b04afa681eaf45b40a2e5", +"T2B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_long": "05f7610e6411b71d76acf04adba3ca4b58aa941297dd246c47860b4eebfba428", +"T2B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "791a9117903f261bc9de53f305d59ab871bf75f02acf8562eff69b856bd83900", +"T2B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_verify": "ccd272f62fc997f3746738c97e7b3d8e68c2f12efc726fe4363fb6d923954d43", +"T2B1_pt_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "8ff99ace0e07ccf5eb63a0a2e5b8f833ee15ccc59ae8985d8de673c4f227d6a3", +"T2B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "2656ebd7cd63635bcd7201716da6168cd4050e9cffad5de01dfd5e2c2a624f0f", +"T2B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "46b64e13b71aa327a98ac77b3f52e3f700198f91839fe221777c65537569ebb0", +"T2B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "9be31bc401ab094eb1b70f88b373a376f86fb9087b9f5c88f101d5c19837dc10", +"T2B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f4d73269ca451b045751794d34742a6c1e6ff7aa7c7990c8422e30d30621ae43", +"T2B1_pt_bitcoin-test_zcash.py::test_external_presigned": "99341a5d930925f7c16aec2c0f39eb32a3041f17c23cf5966928e1f28c534653", +"T2B1_pt_bitcoin-test_zcash.py::test_one_one_fee_sapling": "2ae3538ad723addab1b26e54911340e1908ae806a950ce844407391a9e0a80b9", +"T2B1_pt_bitcoin-test_zcash.py::test_spend_old_versions": "6ed47a22b8da9069904e65c010e196ad21f7f781d1ef75ed6edc9cc302ccf2be", +"T2B1_pt_bitcoin-test_zcash.py::test_v3_not_supported": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_bitcoin-test_zcash.py::test_version_group_id_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "47a0e3398bc442bda07c6f67e4f2c667a5fc65a998ca71260fc5a4455beadd92", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "c14c95c42c9055baf829f33dbb8c158e0b403626c0b817585df5c95552f0c04c", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "935aaa5304dacf9114e1ea358203721ad874a657bd9befaa76fbec922c616b49", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "26ad1a315a8b8e9c002280cf1310bf7c60d055b93ac77a1be77d512b5ed8976d", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8521779a0c507f3910ff93dfba52d1fac447c06305d9aaf131c4a1cc29593724", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "f51fa7950f917bd8e6fb8ac1b8671bda5e9e5b16c55e3a5e0ec0a5d0d6b4f1c9", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c34ee2a8fdb0ef66ce963b8049c0ec756541ca54b4d0ce258ae1283acd030e93", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "34b8fc6c139ebba92a60234a02cecf6d318bbbd47bde659ff8eb1d39384128f3", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "ca0b6d70c591ac46ecd118dbd423ced0d67d3a856b43d0807e556787fccba070", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "7a561124da4b8e963edcfb0080c56efab488540aa6bd41fbe74b4729faacb42d", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "01081ac4f3447b25bb5792fa7aca0e4983ecfb934c19df697a30325dcc39a8a1", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "d5eb5d591db1bf42df73990efaa75aa5e62779f1d13c939348759614c0502063", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "3698600b91fcf5e841303fa83342e4078648b9d6ca85bbc1c22d5e177bd19144", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "9f7456a1e9591e32ce96019b7304411292b104f2f07fd3a239abb8323c40f185", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ffd5ef061e917380e2eb4313948a3871b52717306447c75e3e8eb50598c9cb59", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "10ae8ae6f8b1bab9e3666aa82ea7c632a40da4636073301d0ad57e3b0b8386c5", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "c0dc75e43c9fc69ba50a4d65234872d11a73f08bace36defaa8f2e9800c29776", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "71f849a568a255fbcda4805521d6f05fa1f7af8a913371c78fdc54e0dbffb65d", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "afc249b91f2d7c98b961cac87435da86752c67d4e00df91145a46d77430d86a7", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "636d0889064aa87464a55318de5f0b792acf4a0b666a54aa3fbe6e0470bb7604", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "213fe5af9951d852e9cf470d2cc56860f7c687d813f1dcd440763b0f1748a312", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b4223effb44cd5575e3d1f8da6bf1af369ab069768be6fe3272e5f294fec6116", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1bbb1c519946e2d4c89b74ad118b303b85d496b04a8a711a4120fe3c3e0092be", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "4a045f2e966a7db7a66059ff3e4c1bb3b2ffad214afad75a40fd4068a6bca163", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "6658af3c4a9704e33467c3c19c085adf9670698edd7762d02618c498b63b82cc", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3dec6d8398b3662779ee7af167e9c2dc043fb7da64826300028faf929c99e209", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "078c0e37534983658dd8cbad6840cf295f15c1916b601c992f3b581baf990361", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "adb08ba1befb259661eedfc9550ac6b80a03042ee4fcae1262ce6e9265289b0e", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "5ec5391b2028560515d2e94fa411fe9a502d18b91dbd7d8a85526d0915bf5b00", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "e55d6217f2dee5fe25de85a569f986782713165a7e21059904870bb0ff3b3fee", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "1d1f14c94c10b490faf2324e9088d92dd9ff8fcc9086ea459745bf92a8f3b9d4", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "c6103b094f5d83709d431f0a1822e021656dfab32e9b79806915f5168491358b", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "abcae029e87fe7c11cc6b6e6a2c4db14979cd4b7b06bf420d3fcd9786f0f9ac1", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "6a6303e1041e0f4a6aa706156df69e7bc1313c73130e96b774c82569b1bb0dc1", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "413f03b2ee5c1f3068614b1c6af4cb89d01956118f784e22798cfd73c2448151", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "12830c9317f0e7f4c9f7f27602b3cd65efb119ab915b7144d5d9c41d30651f9d", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "854db3f5807707099c775e582865fa0b9e0e80b373ff1bafaaeb94446b227b74", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "83e6057b65c736d0fa6b1fc80a6f7d313f29742c0533ba348397a1f233758b6a", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4c960c3ca950a6763a87ccad3306f11db088303a889900370f0858fcd804e6db", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "b0f949cb282bcbf194e1db4ea50d0e710c732b583e8b57c9bbb6083a27b18810", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "dc1cb75c5089c9c05ecf1bfdeae1656c0cc22342321637d7e2d69eb4896fa305", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c7ef04887e64b390b75ff1ff74339f86571ff59b0c6b4fb17669fcf6535f73b9", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "2c965cf7958cc99d32c5eaac2f42b91a7e918b850c2dc2bbd44afc586140cc7f", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "3f063a5386948ddaa7579bf8c818f6ce0986836954d2a573fe5617f014c4c5c3", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "2d4e34e32e8531f30630850ff252f25f5640939f454746eeae7b314a6b14799f", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "55a9b96d24d2def72f2fea7b31848cb1af5bd232dd894546827bac7fc13aa5ee", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "4e324e27708c39f62009937d27ba83bd555421bdff5b0fc168b63d152228ae3c", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "09e33cea9554c0cc1e7ecd41654a4c078223b5e077e77673de977d84d3c2b544", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "31b2da2096eb2427cdd31b338cc49d4109bcd6e8c8a90de3adff917661d2cc15", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "1d613052c765e85a48d9e32038e5cf3d557c9eb76e166b077c22e912e47577df", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "68fa6879ce0ed9e93d60521d8e480ed6b23b1bbcfa049ae54513231240ad2a09", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ea5f735af4c040f8b685ce92788eb8a7f6941505ac433e230c8f525176066e9a", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "2ccec6d1e6e134a482f67cf95e78ac35b20e3d645ab1c2bae621138bb3f1c580", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "97e736471009b4724609c203cb19c03943c90aeeb8caec0a2e3843a0b9847ee8", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "eb66d4eaf1e8080333ac29f49e553f1dd13f04396f334d57e491a56ce18ae31a", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "4cd976cf6aff700ed943c52365e1134729b17f2e8de9301ad2beba5d6d7c3ae1", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "0fe302168baf51f2febb25f08e6ce01109ad7b8247df3c5e206c148a6993309c", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "a797dc62c188496d8b15dcaf6f4fe42f695774f49eaa576d4f617e9e124d911c", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "7ccb93504f6268a695cc3d226aad7de6c19d194a411ffbb26c61a7369bea4d48", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "bce29c10f629e9c775afdd8cb20fe20f1bf253eb5bf595aa805daea0b6a80cf4", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b6be32e337585ec8a7116e95dcf148f5ad434ea6b225d17a6a675766516aa9bc", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "fc75f2aeaed0d6d849f5f86ed035269ccbd680213c48cbadd01c912874102ee6", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "bc531e7021c84e7c94a8de07674df96ac8d3ed541e94579af999853e65b91ea8", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "4606d8cc2927e65a9401fd508f0f115d3f6c66bb9795ec610b8eb02512dcce30", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "c8849521fc07e9f7d8f4e9ea5fe4a5b6c077d7f1d5e0f2070bbe623e2e72ff7d", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "a04ad3a574798ed19e45dfbff416e78447e0a9a11c4ac86f3f1f895e00c953e1", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a13139e480abe217402ff197c5c32032f755ff271f952751e3e937a9c949c6fa", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "aa4523d1090a9191d183693b730e820db024a940ee54ed251c3905ae404a7c47", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "0f73a575cce8c4c60f3bbec8bf213e739a83fda0327de7c6379490fdd2629790", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "41954e328596c7b5b987e8246c1ac43612fd4da34682f3a1f64e6f90ff842231", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "142b5b830dcca4fe1716b1d25480b1c9fae20adf4aecc9060dead61ba45e179b", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "36be051508ab69370d9c30e3449f704d01627f6176a164a7ce23ae36a46fb45c", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "ccbc488a176010cadf53e818905f47e694ad6c416de5cdb407d506b3e11628f5", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "e98eb8d2a4f158d00cebdbd6dc71a82b27c8b098f6a195f5d6b90c9e6c0e2132", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "e7ddc1e34cfba9f9efbac4971b696254f7d5395b8edaa7ed84d75941d8894a2e", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "20c2eff8a92d3330c3a16e0c3b970cbc9d6a0b941e2b2fe98fdbcf30244bf475", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "d9dd3bc28f52552eceb1f38e70e9c1159badfa41da607332f9f31403c002d951", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "999d329bea6533003fb930f19b0370a727814b3c8a30175f96e23bc00b5e6012", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b21c2f39fa094ae2b24470b28cd03b89365a944c975cc12c2996d2e206e3dfe6", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "170a958cdf05531293b6ad368625ba8438dea17f7023df2bc4daceee7efccaba", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "af84ddb181962b4fdf19f105449ed085558504a349ac4884d4d700248c252620", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "b967542da82cebac1ed73715ab1be29dbe36274a1281f40a27a7fc35250c2f78", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "e8627cfd6adbd60a96ec9a625e5db9e16b317ec728949b84e77ac9967433e6fe", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "5c40b9d2642c80d67b73a3b768e16bd3ca94341793ae7b035106977f264d7f20", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7857f601bde4aafe36f27a31603179d8f31dbd709b80b67e9a2fff8f6941f64d", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "18ab4af623385575786fc557f7582c39324034a3a0ad6ad8ebd7c5ffb82a7e8c", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "2961cc09272c9ffb95a1d58d575b9a099f9f200a062bbe8fb8e654f7bdb72f69", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "867801f543944c6410cf99ebc5b9407d63f1614553cb2f582004b92956dc210e", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9e97697547d3fd39255d61e1d8297e91bedb0df211f692fc69035bde091d7412", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a4240f73247bd9f5b86f57a7c497ac079f296c884148d776033c7fa824ebec93", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f6754477b982f6b136f7395d92982bb6ef7c9d476cfa5e85589a72e8bf32e0b2", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1e318c7fa392a6a0afd093e0338ad79783b5e2fe7acf7f2af32668b2f0a5b2cf", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "da1d6829e7c390d1c5b084f071e92945dc0e3e605f70f25dc649947b90eeb9a6", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4faa00c94d98435c2f0dd90ea6368eca7600005e73a8cd9c05002b805db87acd", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8c52fa888fb24efe75498b88d95c3eb026773b17f7737462734b55ebe0cee33b", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "829df5219958e1a8ec5e000801ec301b97419fd0da771b37c987c4a602b9a789", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "83e43c3e672c45dba62f7b5e3ef72b761726667cf19ef32bcb40af74fba55a1b", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7afe1a1bcd9ebcc8a95407d29ada3a0d32344cd7c69fb8a8eddcdc07437d4c36", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "fa5f2629504c0fd9123ca74f1fc4250334c318e79f1d10f94e96d9e9c6144de4", +"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e80537516f365ce4fd95f19d67e4f49b0af7fc48d984f15b9a7ae185d4384501", +"T2B1_pt_cardano-test_derivations.py::test_bad_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_cardano-test_derivations.py::test_ledger_available_always": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "e3a868a8af14ac275a63027422483ab0d13e831339ad451f19d824993f2693cb", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "c0597e6a64342f2fc752e14dfa12d70f0d37f35d74e3f62f38aa66f0caf1df46", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "adfa921358f3a364bb8f87f62e8a992fa1526cd9f3e9a70a1800ac0bb21392d1", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "1ebc594ebebaebff152b5cde41ec031a757424b1e3e2880b1e8f38798d56d0f2", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "872cf0625a9d6bc588f93665f8e32278522cc5744ca7a82bbb4a1c02f1aeaff2", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "38fec143d6008db6faff3b12d253e02431d04ec54e5216da02defe69570564b0", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "fabeec370bab8bcbc1d863cbf0641801be83477ef4e213eebc772c70fcee1577", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "d25914ba55a96438465b420188b98e6032f06d5c6dc79162237e8c5d4108b2ca", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "420742c16bb3036d1282470e9363b3ca08be41a9203dc1b05aa01ad2a8839a42", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "70ade6173f1f8fde21601d42ebe9f4b4b8ca735330de7e32dc388bbf1ec4d5f0", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "c51a609e1083f5a0f263535f68fe326bc34d32d96fa7dbf8fc0a26b129d0a143", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "823d4e898e86a276bba5a5643806dd975164b8e61f1e69c7ad2139fad856707b", +"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ddca4e8f8fa95414ef92958f2ea86def925fbfc6502125a3e9cca6f72545cf3c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "b2a31e76bc86edd927322e54f2df7fb655bd083a12166dc3cbe2348e0748ce9f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "1ae2023a2e567a001d054937bf21a34d9475d09dcb873418414e50c69a87592e", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "10c24fb1a54198ea1151a56646b9bc805ac780ecaf3877eb6d06d796a64e0bf6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "d3db9f6287a12ae5d471945f93a11ccce5e7697dd202c914f3931ff726efd3e6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "8ac4be8bbccdcc7d7fba1bd62701435ca558c3a087d32702d11cd62e9018e9de", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "d627fa7a37e986d1ec5e875de04f0a133a4fa937d15ccd3acf7c324e132b2a81", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6c9996a7a5cbd49f879425915d8edd15b922847cf387b126bc2706744d4599cc", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "350b137564a4c6f1c1d4b8b2e648694302e023973b6900aefa20b9c1162ee599", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "315bee57776a36d3f47f202bbcfe28081e29dc6a13ba7c1ef869110c8eb60a9d", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "c92b3f66f8b8a30d1699f2e1276c58959054131259fd673d4d59b33628cdffbc", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "38560b5f0c38d50ce894d6bc3a2c9040dace7fce61bcddfd719bb33eb9db3bb4", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "d4f40a08f7f2c9ae234fb2525e267c7809024d3344e6c6f95644e97555cf8990", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "d4f40a08f7f2c9ae234fb2525e267c7809024d3344e6c6f95644e97555cf8990", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e32f6421784b0dca880a47c46c1d7be47c2d333a1b38779f074123b175103bf6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "70ddb02c428c2f7c90d2c37f73fe1431943b542c2ed3f4e08cd15ca51607527a", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6a8329f2afe11d0792c083b019afc800bdf6c95a8bab8a366b7eecebc61d779d", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "404db4b0de79da008b2bf25071cb2c6c196da985dd0b2506b8035162376db599", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "2c723e8fcd3247bf11f0e22163bde5c35132ccb9e1e60e59b77175d8991a9dcc", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "13f5c6a7308e1dd63752f89e49c8f4bbb6cea29a334c22dae42d5c5de8a4c563", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "839b0fe1e655714e797e56fb4c595c4443bf8b777c4486545b5ed548be391ae9", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "148666773e7bd470f560489b0e9aecf6800c07e66f9f15b4d2142ee097439d16", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "2c723e8fcd3247bf11f0e22163bde5c35132ccb9e1e60e59b77175d8991a9dcc", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "75b033cc37ade2fbf2c849ac7c46245e19ba82a0e8da1443a6286e94e7f828fb", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "1a68fd64e6df3688e089607767ff1b206ed67e1e2fca79414e6b54c95f26193b", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d5d6dfc3e810d887d3eb281affc83d5040681d65f72a9e4dcb55a672956beafb", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "d74bc00847c3ab2f81bef0d06a660d77cd7a0ff55e28e72273f33670c1393a73", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "7d7df722eaf654a1059f78e3c0ea81c9fc844ced34e7106c697f5bcedc4c0170", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "67610063551ce5455ff33f9add79d6c160c8eff64f7d3ba5598bcf31ad25b181", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "3a87f512504aabf82f99bdcccda069ef7249ad28b6a2efbb4e1c0244b1a77c36", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b9144ab39c41eb558320439df1acd6463dfecd7b0d1065bc6aeaeff56804c82c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "952280e104a79643857fe5f17b9dadd3a12e182303b7d2e67aad2b220b670585", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e264ed1b68873b6f6bd79655f3012ee5e5cbbda9b4e5553f5a27f3b55911a2e5", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "73227d7886e2af1b8d0a3db3e2636ee4a8c98cefc6b94ede189fcc614820267f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "bd5bdb947fd18a3e6f2144b816426d4bb5bd5e61cccd9beb2bc7a45c65e42b06", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cd0b242d1feba35ce905cd20584084a7cde3e28b26461b5d829abe6f3b7f5f53", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "c088d3d110f938e8ae07956ed8f5568a154b2eb0a5cbc951e568937be0a382b2", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "5be9d878f7e8c61a297c3d76e37487773b70d555460ee8ed36451bed5b469df8", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "9dc0c3f7c592382e090e31e74eec1ca429979cf5e1c4821af447856c7d336b75", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "8b88b66c588b521ae50c84ba06b4f3e087f8e0e309c9f72a991071b0266b8e48", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "f6334fa109d79b0621afbde1df182defb36731fddaf57c18fdb01751d9178c96", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4d5ce6cfa2b5bf32b35ffd255dceb4a94e13b5a536bc96cc21c5c2da578052b1", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "59d476fa4eade5e44d48bdf902811f06693d401cec50c45397d17076173fa82d", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "ec16ff0c7672000be69bd4db6eb44af016b4074dcd156dfad5b433bc644de2f4", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "76f6a7a9f00ac6bffc74604e3d5864f3bea6e71583f638ac1cfd2dc668ad278b", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "45cf11fbbecfa41cdc6e1027296da7f567533df3927898c4474c1318873f3013", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "94fa27f411879326e22cbbd09997a2a1887f3ffd34deb0728a4665792274c794", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "199a9cf2ffff6a3cef5baa09537286ee692fbdb472f67a7b00dbb6c809291133", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "3cfb028d33d1b6709e17eec837b1b89b4909891ec9a75c9f0dae8a35f60f3dad", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "8411deaf2d5135d86f62bf49544163f75029c9be28f2c1334ee8bc50e40da713", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "a90638885800e7c37c1c99b3f0c51dc6e05505cae7e4d8133aa953dda730c4a8", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2c905bb54607f417243993cbbe619929feeb989b4a6ea097e563f3b220b0bfd6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "bf84415f943b34cf41da91913506a03bdd6a557284de5cf6e38e685fb28522d1", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "285cddfcf9600e276b0747dc054a3e2eb904a577ebef137ed58a1cc4a22e56d6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "15f09560b4407b99aade373d0814d3b52400ee820016cc6e712ed8243b21aac7", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b186bfab5d895c29f9373c4bb3b22bf5579a0801a074fa344e2625821106115c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2138995788982190735d29519ce8512a0b93b8b1d0d22b0c93e2226e7b70e3bd", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "f3be64527acb5cbc408429838cfe77e66454ae0c11d7385fa50fd3d490f67264", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "798ce79279334fc521811b65b90d24df047fec557e71b1ecc93b60fe1c3b4ad3", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "364cba01e963917fe73b82b4b611d41bd2265c94caf55ad7bdcb37d4eaa7a7eb", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e1e1309861fd1f1fc8e5f4b5a16234abb58aefc590ba3f49ae1461993a9b72c9", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "0f2a377b8d8e47e74175904067ed719dde54ba38c9ea65dfe035173ec903e720", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "0bd8ba7b9bdd3c250ab77868e62154a36c4b757da4750e878e751fd603321668", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0d7d670b7f6b6d64ec826dfcdd61931d7605c96dfa0b404509355ae7f4692bcc", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "9561a0fb91a20e9202f671fc0f763078326423318aa4cda055f6c4c8ac0a17c5", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f3e1af69c7c6ce3184505e117ca327e3dd55bcf78fc5a0d808b10c977eecdb91", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "0189f175aff67c7dacd8503d5b725f9ad7b6bc77c43d6a99961ff0be9b0feabf", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "c9107c294912cda84487991c5d4c21c0f84a5d626f163a53f5f9f7f2db98066b", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fa9bfdcd61310f66575cf9333c52f0840c44c9822bc35c30200faf9ccea70a6c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "0cb7e1f73ac2d6e8dffcd6820059e15b79beb9f0b46be047f1e5e67f98ef8a57", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "16fc050f2f942847809f0769dde87591794b3c87dba81d6b38f21a1f200a793e", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "cb2623795c3a84d646c69f382215a9ff4477a60532253e947c2c75053c02b030", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "515f281cb21036b1bcb7c406624960c9982d8834320c1d8720571208becced89", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "f3b1b109c395904eeb1f7a6832f212262d6f00ed42b2138bd7c85eb49fd23e18", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b04632b7dfef0228ce3fa2fb03d06c305bb99ee91751c99346f22f687a2d1a59", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b04632b7dfef0228ce3fa2fb03d06c305bb99ee91751c99346f22f687a2d1a59", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "161c4e5898cac2afd48a5b83a36c757424f71571e195791072b8d1c7594cb660", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "c9d50b3e30f51f3c4fb2563f3511ae577fba676d99607a126d46102d76fae90a", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "c9d50b3e30f51f3c4fb2563f3511ae577fba676d99607a126d46102d76fae90a", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "20adbb71db74c46a3112039fcbea446a6db23719de09ad269dd5eba74bdaaf10", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b3301c1cc9a820d7fd1c10144dae9bf57b3a6502d270f6adb1097e9a0e6ce212", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "844c4783f852f6c08dc994b8457fc948a815139b13e3af620e0263b55de79355", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "410b474bbf2559cc81e03c08355d3715d5f6c1e2dedfb647ae5ecdb6e52b369a", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "4d750a75f6b8511cb75b9556ad3eb8b490e6d8f635a6af706e41df36fc8fa733", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "1b30bf17a6e989abec26225038eabd70ccaa4029339e7bbd0148ac1cc2bc6484", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "7b69749fd3cc23dc74a9e196a2105caffad3997daa668dc0043fb6a09d7e3b81", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9e5d87d5e911c98f4ffd5c65d180ea361a75d30125d2c9ea6a17be22b1d50174", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "282368766acfbe35c7116b299fc07ec912207c61d6b7c0cb905e423fcf3887c4", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "b2a31e76bc86edd927322e54f2df7fb655bd083a12166dc3cbe2348e0748ce9f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6c9996a7a5cbd49f879425915d8edd15b922847cf387b126bc2706744d4599cc", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "2233528c96f7a00b3bd480fd5f5ce8d3592b8c5ac8f792074f4b33db3ab15bf7", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "7d9df27cac6de4be256ec54479f744219dd2a15b85d8570a12ce2ed1bbf7e79c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cdaaaef4d2262a80dfb2f35fd21a8ab75e4253bc15583c6bca0f318dc86e6181", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "73d16dd96fcf795d151726e0b801a1f2ae2732367e9f993664b01bfd42024929", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b27df3456a053635a8da76b61b615839cc88a84706bfc63f24c5423f92bd4c40", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "089375570e455153244b06285e1f358ad91a4eadac351501970ff730f03aa17f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "57d11ee1b1834424b1c4a06d0645e55aedbe5e3b6ff05a13b4220c73dd8edd96", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b27df3456a053635a8da76b61b615839cc88a84706bfc63f24c5423f92bd4c40", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "f65fe70de441efacc9ac21622ff693673d67c76c7773c3cf363da2dd6c79c92f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "e638a21109e889b489858753db4ab7b41c64ca770b1a1a1073b6b78158cb011c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "2904927f1870aff8a01380c7a56119aba293eeb3ff0974c00d35aaa0894100c6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "af8c6cff756ebe299f112031c6534aaea46a824a1516ea5bbfaef7d7b5539ca6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "bdf99819d7704e5cf76e356970c60cf145a2ea0d2d37e86fda27a2e32abb1159", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "c97b22a4d2a2b9a6ee69378ec08a5738300a8369cf3e82df5dc4f4625e737341", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0c184f20fc48d22da4a9b31e4ac6797bf85e9104aa59b08281e26e46e3a69950", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "fa19717442086d19b5f38783962024698c0a082283d8b83bdb224858bddacaa6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "db1ace299e0c9ad8df1110506ead268e0738712879df593dd56421c915659798", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "2a41e6bf765959e3290bd8d78713a945df5c629776d0eb8191a01c6cdd14a62f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "105fa54ebd4e98e63dc0047f6a65a3a1e169ab6be4b8295a1d241fca96e8713f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4cb2710e05d4dd5c676ae4ec5206b825e2f877e7c96a7aaa6c0c036ee0ed2f0a", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "4471230e2feac22103ea186960bd8c6e907cc31ddae56bc19c3cbcf64e5bf87f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "bbc3f0bc40a7537be59f8f571b6e9bec4e28876bd541ee69ee876afbc6b1505f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "9750f06d3b7372d056aaf7e6b3744ccbd83f1234f65656c0a8d23b1674f44b09", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "2612f2015a2a1417b8269637582473a51c6a2eb7a684745837c3e2464a0aa528", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "11f7c3b4ca0a203ec61b5a2bd95e9c44a7d5295190d3a4f7b568f11c44b74f7d", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "f1c2a04abc92835e9d0252d64fe76ae9c7a71b4649a16202c449365e67f37bef", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "4d84a51e4546590ea60c38db4a2ea9df5019429cae809ba39e4364eb9f45c449", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "f2972f62a13c4f4509c4ccfe06e24775e5731aaa67fc309de05c65d94424c2c6", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "e4c6d143fdc798cae8a7a33e240794b22bd74cfe0fa1add0f27ff15ecbd1c015", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "a2459d6fa5961220c5252f71292fc1510cf839471628fc6a9b06c371b7e2ecc3", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "f9b643c3331966c8b43eba6ebb1e33f30fecd2bf39def5b52569f18ac1c725dd", +"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "bb72e508055868e1d82e16e6a94c54ee56550606ad7f84018b7ccf697b8a18a7", +"T2B1_pt_ethereum-test_definitions.py::test_builtin": "9dc543d32e58c06e43945c19a9953f4ea8147dfeab590e3255f47c49f2c67233", +"T2B1_pt_ethereum-test_definitions.py::test_builtin_token": "d3840db585b959c5a7f219007bec307196908aa7538250ef260339f39ae1bbb7", +"T2B1_pt_ethereum-test_definitions.py::test_chain_id_allowed": "285173b297da8b755203407ef281bad94ed9202c80fcc08a99ade22a8f8a5c0f", +"T2B1_pt_ethereum-test_definitions.py::test_chain_id_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_external_chain_token_mismatch": "47fb1e067f4da97538df0124be2b1d25fcee4745ee6fca1adca025ca58418db8", +"T2B1_pt_ethereum-test_definitions.py::test_external_chain_token_ok": "7be7eb0f90d24649504fe875354b7b0608e35acb61395dfa492750f79e2d48b6", +"T2B1_pt_ethereum-test_definitions.py::test_external_chain_without_token": "8a7ec90e4976077c3912639092ccc9c58dff3e92cda8b2cf8f588a04ad6b40e8", +"T2B1_pt_ethereum-test_definitions.py::test_external_token": "417474d769d781db556d30535ec26991ddb365a79bf34cd9486fe407ef4aa1cd", +"T2B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "f48f226a19d83b66ead9b7b36950a4805200601cdba06538bd5fd7efb66467c9", +"T2B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "1c6ba0582b41c88c4b7e7a4bb668018487d96674b0e2cf2c1b5e6cbe3c0894b3", +"T2B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d84c8ae00de95617ab6213ee3c7b919d2ed7bbf8e717d89c5a43fd62f7077f3c", +"T2B1_pt_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "3573c57c84c20a769b996c9644232ad3c62f691469aacc5c7934d55bf802c2d3", +"T2B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_slip44_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions.py::test_slip44_external": "3358fe1d23ac6e1b31d4f705ba303e21157e27c24066b00fd1aae302189e0858", +"T2B1_pt_ethereum-test_definitions.py::test_slip44_external_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_bad_prefix": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_bad_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_bad_type": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_malformed_protobuf": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_mangled_payload": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_mangled_signature": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_missing_signature": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_not_enough_signatures": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_outdated": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_short_message": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_trailing_garbage": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_definitions_bad.py::test_trimmed_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[ETC]": "f0da609aadf98b500efdbd99132e73a17c3f30f9bd3b8b2614509c0b589970f9", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "619f476b3523daca3bebc2f971b104306a5a1d56d851675d307454f1099e027b", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "7c6d9f9168b0c742b3bbdc57a8dcde335107b12e81e4b132f38c0058ea4353c6", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "284c43d95cbae59037a78f3cd449a7eda6b76cba30e0c08651fcf02af2e30971", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "4bca422a74267d8e72f07cfaca00acf1529700acce4fa442fa83d9709432ff54", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "abe0547feb668f3a811d82cbf182972e2ceb86a7095346b3874f1ed6d86a1f3c", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "b1b636f2777ae188bcd00691a15d3b33f790c1416fd7d5e6e3bdccb2cb70cd60", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2bb17b0b361532b32bfe3167fc98a3bff4b3ff64467d15ad200cf535e72d0b2a", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "9ffd92555d3a79561e653f25fb70fdb90cb4dcec6c14953e55c7ef4bb7bcc39a", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a3ae284e5569abe8df87f74461c155dc3598db45e4746371e016b2c4bb0f1b5f", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "838a4790d8d2bb4b4291753b687551d5c2ed078cf17a1b21d621e3d4afe53e12", +"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "98c405a62d1f3bc0899c10f18424b6a2bb08a32be939f6c9db488d44d8bc4db5", +"T2B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_getpublickey.py::test_slip25_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "c0a13788e45c70644427298b5229ff14c0a39f775e8221451e6e8a226a18d289", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "16912e24e584f7d36d61d69d405e7c9498ad5223e6e5fba477f1255a3a222c68", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "ce66e943fd479f06a2ff57a0124a87d3140cd7bacd7a826ee497865b4b81a5ff", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0d8079f3f6c5aefd3f7fdfcff6b3e585232d92326bdce12a173c80d548c98f48", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "1f16dd4baee48788c5f5e7a6771693987c5ef124049b5b5c470d035370f59c01", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "199803403725e3d42fea11c832c04e7c54022520ca718eed3909b827f22f6ca4", +"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "2966c67a07916681d54f8e24fa922d3c14294c0896f3f9b175495f6948062b41", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "6345271ca56c53fbd28d2da0821a2971773a83a7d3ff263934aa43974c14f193", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "d3875378ddf8d0f98786dc107e3a8b51d1fa9887659a32c910ec434251754f6f", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "f5084cc403a9b828ce4ab3a8c75193277b3bbf4a595623075fa7bec3ae12be7d", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "6cda11b57da366fa1ce02ceb75d95897f97d4232b538a33b8e93e21f3fd9c21d", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "aede5d0c7e2e6856d8c84bc459ce011b3b6c5485ac8dfe309c6ba447ef8a51ed", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "2094ee30e71c79dfd9b1da35f8263376e910a7bea4002aafd53c94191df56564", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "842248bc8452d6a2aea90103926df89532f6833b3f3c6e66f78ccfe3a7bacbb5", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e5a1e976356fc59d8d917f7998e7fe242756cb2dc85e9a723fca62a7597e07cd", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "2e44ee0eeb345dfcee11ba6e1daf6310aae89c1260f0874d29c02ca7332379c9", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "73ee3b7b44549061ef9320f4f428f0062afbf9f9c304a05914f975c40af46010", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "0c8df60419b3284386228476f62d7891f85cd9447b6689ebfa6669add8bd134b", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "990cbd9aa0ca72d36c8d75e3a5c90a5a113c97a0af9c9f7afe76221140a23add", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "bbf1c49504737e7a44f7d4496573e9934e1d8a9cba1a053b0150947e4df5b452", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "6c227b2a5130e57e1aa4dfe9154c0957ec24b3fe5fe174f696502948dc983fbf", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "bed60149b24ee17ed846d7dda3a697f7be29274c8a7eff295c044029426c80b1", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6fc8035de44cf4b0d760e5464ee9309faf1eeed4c54ee58a16921d9f377cd8de", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "38e8dd2485b021b4f92bddc0290043dff37d837bab3f80600468cd06baefa9c0", +"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify_invalid": "73ee3b7b44549061ef9320f4f428f0062afbf9f9c304a05914f975c40af46010", +"T2B1_pt_ethereum-test_signtx.py::test_data_streaming": "de410d2d139d8e8f368031070d8faf8955e9e7270b2029f33f6210e58f8c56d7", +"T2B1_pt_ethereum-test_signtx.py::test_sanity_checks": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_signtx.py::test_sanity_checks_eip1559": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-ETC]": "2f67e05f346a2bd2f58b37afdcf06e63cf3ed188ab0ab3b7e603c65233560eaf", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "47871c6773f2c30bbe87a4b5602d146792dbbd6f84ff1cac94f39b1249061dc4", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "94bad2c330cb3bf46cd14867b05798e96f941856e7f819c6a7b78eb2d13e9398", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "47871c6773f2c30bbe87a4b5602d146792dbbd6f84ff1cac94f39b1249061dc4", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Palm]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Pirl]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-data_1]": "79eb935c1707a3d8e5c6c4fd3d9efdf35b6f3d067d82799a719d137b65e824a9", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "68305dd83a6b5232b2bdba56bf713974d4f8e2004b2a42aa0582c8930d76f99e", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4af15e2a401b9101509ec92b72acbec76730d877e85188ff3beb0efde58ffbb3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c74c621f47fd8723e1c941efd2c6fe1edf576768399be5a970ae6be02b9df208", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "82dec518fccda016deee276683e0f36eab2f286e65ddef09202316ee74f9a6f8", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "08246f4ef8ed0b23646595d5c1d6add57fda9aa97b7a6a735ace725eec4fe245", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-wanchain]": "410a2184b0441ef2b5b28adc3eb4f95054a032cc0c2fedf365f3988ccd4fa974", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-ETC]": "8517860f5181ccbeccc1f287729a21891c6a19820755df0b142e9dda9843321e", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "a9ed256695283c59330a6b8ab43687a80a892ce3314385df5bd33ef57dec9743", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "51320a13a7b69b725dedb8a54f3732b087541329bad65b1484f4a0670c1394a2", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "a9ed256695283c59330a6b8ab43687a80a892ce3314385df5bd33ef57dec9743", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Palm]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-data_1]": "ceee115aa7f350b0891cd4f6fc1d5e6906661dc2970182287cf0c923983ecb7c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "0920fe185cd8ea3d08ceeb594beb2754dd4d86eee2eb428699db20e7c69ff724", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "42a01e779c20c8a41d1db846267bc8302c61a5fa6efd5fd3b545cdfa69d2bc82", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c74c621f47fd8723e1c941efd2c6fe1edf576768399be5a970ae6be02b9df208", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fe6e70aa96d82dbc817c4c53dd68613ebff29822b092327ec21a4a19b9b7f0ef", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4f51a9dfeba3c61e2113efbffda8434309034452fd6de4ce672bc6fb2340b0a9", +"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b682676c1041c63a8f1a83c1602866aed7e3473c4020145f6d34cd9fe2c621b6", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8e946aca9ff623651652b21ca660bf8a036410a14f601b8d8d60ad482bdabdd4", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "31e265481f5fbefe2dab4df70c7b2a05eee976a90394a6e0528b45cf7c400986", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "6161f1fdc8ad3291510c4036a4d4ab1d4f22cc6131fdc8b3825fe08b7e0001e0", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f3e3ca14db653abec3dbfbde1285a54872f7d14eee2644ed32448c9eb22b19c3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "a733a070d697518c17660d20bfd093c380477b1bb6d61f96c2fe80d794578bc4", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "a97c624c44a0601e2001cc636c61b58573c8109d0f2dd6d36f10bd5d2b32d68e", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "119597b262934b8d305462beb7f1187878681c89aef21a4e31a4f16ffdc6d306", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "08682c91caef72d57b5d3ab4f4d06e87e1e20a5110e3fed8fbf090629d45f8ea", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "afd8e80d92726330601d206a361f90946e26edf38705135a1ddec34086875064", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f3e3ca14db653abec3dbfbde1285a54872f7d14eee2644ed32448c9eb22b19c3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b1c1964eaf297c3afa292555faf33b6bc4c85317c5a4f76df9665d739ab806b7", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "162c8313aa828faeded0644e3bbc10692d8c75891847d0176c38bb5e90a25a25", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "9db949970935fe2e6092fed7a4cf86c5cfa1772a379e58db233b5f963895edbd", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "5b59ef674da0cd341d9fe8dda64641159df7de97b68733c629799f66addb1711", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "f8c50deb390b552cb23e5261d39514110cd2a50d6c1f681b9be6cdbff26e1a46", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8a40264a85338092ddba71c33fef3e620d1b545ad89dd2fd4fd8693d9c89b039", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b1c1964eaf297c3afa292555faf33b6bc4c85317c5a4f76df9665d739ab806b7", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "53f1e323e607bac017f53457bca25a8865dfaea820e7ebcd8a58f9342e2897be", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "53f1e323e607bac017f53457bca25a8865dfaea820e7ebcd8a58f9342e2897be", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_fee_info": "e38fc7ce0ff7010649e78a6270edcb3f981bed7ebdfe16991802a37dae8cfb81", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "a0ca42b6ed7c27a3463c69f9b8c6dc64bd3e6d7d7e6e80860328d9f76f43f0fc", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ec1f83988979335b32dc06a7ff386d1768f47258af16e6148021546cf7a913e1", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "41768158a73af894dff0917daa29c031f43a4222c3c7fc2bd5b50b4134e1260e", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "202a367c3dc0d96e981965c1eff2f18f639fb426c1caf52b2f084ef7edeb3e50", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "ec5e25a5a093e658bfa7b500aafe077498105387853dab9fddbcfdbc11f19323", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "dece8008a38df51ffaf6a54c489cece621333e0e7a44c759ee30d9cccbc44c3c", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "1e6f2d9b72a099718441e8e3200d11914772117b03ac08b426b32e1f329b30b5", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "78449d9ccf04b4533898e91a5dcd8e5240d1ed48d0311a424bdba4b4a326d006", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "a3d15b8fb6b33f02e549f49b597ff1b87abba698a4584553b79c2e774ad83c8f", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "1444aa138dab572f9e64401fed9c0e35dcb913db4d9b97f8da841262b542ce3e", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "d3f22485de684807d4ab1c868fa268266294848dda568a369abc7f344f14ec67", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8cda5b1e6a4690f7dc7254ce6b1b328e47435a1ad24a4ea9647add71fd25f4a2", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "2bc94aa280285bb2bf183f54e25b5b3f63cbcca1594f64f98bc2c0f761c3b471", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "dbbef2b6231d2c7c9b5ced8d9eccbcf877f584c8f40d30b4617848ab80384f02", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "dbbef2b6231d2c7c9b5ced8d9eccbcf877f584c8f40d30b4617848ab80384f02", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "42e34c9d45841e6a6eac428e02a3eda25da1df95b0f7e726ce9571230331e3c3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "42e34c9d45841e6a6eac428e02a3eda25da1df95b0f7e726ce9571230331e3c3", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "065f6b2a179493f49bb1fd096bea2a8bb152eaa56442437d63ddba1354c9ecf9", +"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "065f6b2a179493f49bb1fd096bea2a8bb152eaa56442437d63ddba1354c9ecf9", +"T2B1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a7dcca56ff219e82eb110751f7207540c4436a98f0467940a380669f5b7c7d88", +"T2B1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f17be4bb3becb1a7021a7afca9fef195cf88de7c0f34b51a75f0827bcd4d6581", +"T2B1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_misc-test_msg_getecdhsessionkey.py::test_ecdh": "87d306756ed8f7c371c650998da6df46fa9d789ca90d09b82f4e4fe1962cc7d1", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[128]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[129]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[16]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[17]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[1]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[20]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[21]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[256]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[257]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[32]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[33]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[3]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[4]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[512]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[513]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[5]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[64]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[65]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[8]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[9]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T2B1_pt_misc-test_msg_signidentity.py::test_sign": "9db9a7bb337c8bcbdd1346a840e382892fe9a6d23da1415d5ff3b6bdbc071b2e", +"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "0a76c58a43902c8acaf9a2462682377e86efbc889735a34f0b9aa0566dd8ceec", +"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c3414071b1aeddae163f8a8673c3ebc4dcbde0917505e0552c84f1d5255e2200", +"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "c08e885441ce7c057bd6ce51ac28eb4fc74cd061157fe3b9ff2d8087d06ca139", +"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "8d06b0ab953d8d0fbb314a3cfae3d21624799e1f7a2d55e5969892c3280275a2", +"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "24ef615f296c2d033020b3292e6ba179396ad30f7c6ccefa8d15d03bb7ec55bd", +"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "303082868f3852e0f973092e109c07525b19e741f623bfb4ff3e454024383d4a", +"T2B1_pt_monero-test_getwatchkey.py::test_monero_getwatchkey": "3e55c6cb886f3608e4ef0412efd9c715bf4e3ff0781a1ab5854e3c92dab584bf", +"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "6cf47de788ff592cd1afcdb9c217189dc003d05f249988fa62cf1276fccf4c0e", +"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8186f3d6fb8709835e0275d7a584b0d98b12085565616fd6197c0eb0e3e762c1", +"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1f20cb33e8d769636ed00c8fb43c663151e468ece4b47fb4c6131a3c990d2712", +"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T2B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "68a243b10efda6190dad64b16518edbafa348d8881f8948aba9a8409b56e3706", +"T2B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d629a61a2e2cce499e0c155114171aaacf18af130786ebabe9df960ad939ddb0", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "823951ec4944aa639f1cf9b8c78d6750824f7e63e43d5074bd8374e49f17473b", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0d79f779320d811b2cf59560b867013b76ec1b59d01e56b186e68255f0d39981", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ae27a75560e2965274e388bf96d48fff20db4182156cd745f2f7e04aa30c9672", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "80b47438a4e466f064523a2826d117b9abcf54d69c93b5e3f358a3acf9239b3e", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "8ef9779a36a944a84e5c93f1a87b87aeef32b2773d7bf3f779082705746b0770", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2729e35f4d9947fd8ec02a17a50532224ac2310f3a2d50cb72c6a96f4de95e16", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "a6ce76c218f919507b263591d6d60c20816df25e5d9e57c57c08ca545ccb8bd4", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "2729e35f4d9947fd8ec02a17a50532224ac2310f3a2d50cb72c6a96f4de95e16", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "a6ce76c218f919507b263591d6d60c20816df25e5d9e57c57c08ca545ccb8bd4", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "1873e1ca69c1d8b182ef0dc48445bcd60659e8bc1499f0526a61d1620a1853f8", +"T2B1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "557f4fd4719a9df44fc0da405af5e114e05c3ed437d31488890fa6f4f42aa472", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "7765c5243e35f3f48986203a0c68477ced2cde9966c7fc05b7ea395c3d70c438", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort": "823951ec4944aa639f1cf9b8c78d6750824f7e63e43d5074bd8374e49f17473b", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "1399b9480ca8a9520b649c4f0401e963a36f5242e78a3c4e7ff50b207f8fa703", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "277628a09878d4d29944ba0ce396f6b24bb5b83b0123db7d34daa7168467d23a", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "8e3bb8da31b928262faa4054b7047d6502b5711dd9486b2d0cc6c5c170d0d1f5", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "01da3fb0e00ee0ba50bdfa95cc3140ae69bd29a783685730265b651e752d3069", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5c7bad2174220a8d77d5004344a6ff2eb5bc01573a8e2522d7a7177c4c65dc59", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c164d3691cf5eebc123844751b89da1971cee0ed90089f2035258a002cd94f22", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "63c04532e004636df317f4980927981d76ac9bdaf0667e4d9fa56e8f969c7b60", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "09bf56bf4f2272c7770e724962b605b011675bbc229d521ed2f5f202b586143a", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9d7416669ba394ed9e5dc4fe52f03802f342c8b974f3406071926fd25575b2ab", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c281f7958e2f42c0284651ae86ae29213803e864c981f2346f844b13b45160da", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6160844d44608e2ac7837779cce8aa7dcdcdb00b98da0317f3783d93845ac228", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5265a332b6cd7245fcf742df93cbf5c0d9b3182f2ad24338dbedcf59d60d2e0d", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8e1038e455568b342b8e2a03219d2549831555490a271c0c804272d0034f4de2", +"T2B1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "20121d7ce7e78faf26f489b3a868fa3361bc27b731954c9ab96b98ba238d60c2", +"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2459be644d838faa7157d20aaa88bf376ddd4189a47d343227b0909ca53f7854", +"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "69927bf3ad6fa036b482f144f9738f1a746d9ccb8338f5bc09fb8199ad58f5c1", +"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "645430e36ff79c99c1889f176896a9a6abf9a72b6ce8efe0c95fd89aca8334cd", +"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "c793384c77c9716eedab26ed0b23d0a36b6a6288191bb9bd4a7b831a005d5a56", +"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d6a7f646263f1c2ce4a725861683a90e6db1d31933c13cdebf14b605be6bc44a", +"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d6012c289626344e7ce2a4f46f1d8987ff63f43903de8df0170ba110757cc681", +"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3ad33cb257388ddf0d544696b2cac2489b892098739bc493e50e607f4595e00f", +"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "26ff9331165091206919f5c3fe37310489121f46ffa62d0b2683a546de3046a9", +"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b2bdf1ecce3d3f27bc62f14f20690ad47f3a3c41046284f5a1aad4be42430c90", +"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5345e7acf8d1358da77601e26fad42908b418c1179cbcdb5fdc9bdbfca66e41b", +"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "60f775cd3f0af4f315bba2a036ad350e95d99d12a6f15a97505c3bcc03724d4c", +"T2B1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "ccdc2fc507e40a1dd10961bd588d3b3a25295ef65491cbad69c4b13955735f0b", +"T2B1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "80dbdd0a3a28a438560b6200fff5872268eda28c68352b4123cced0f0038ee0d", +"T2B1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8b135aae698ea6c8476bb72644ba255a9cb9382324be80ad6d496743fa1287ef", +"T2B1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "aaa78e37b29827f033a0ac2476e73e813d1f6eb33cf8d80d75bb6b1f8398cb8d", +"T2B1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d9afcce02aa1f27149cacd0998bf3d1a20bfca13289d74373467ac64207fe91c", +"T2B1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e6c95dffae5589522fc26ebecb5f89df2cf039a859e3adc4502cfb11fb75f42c", +"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "9a07209055d9b285e6e51ac417adac3a1befdc7bfb282b70cf9696afa605d6e3", +"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "f941e3776506da963228974b5e15ed8ded5ed0b2178c3ca5dccf7e27c89c0267", +"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3ad41f14cee69fc85f07949b9c9623657f33bf205c875bcce209028e2cb612f1", +"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "3094fe8c9f26e880a64f5bfd03ceb84860c24e947341bab2aef472f9f364a577", +"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "33c01fe67b0695867faaa580c9fb9bf7b3591c6d83bbdebf4d091c67ba2550bc", +"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ec50b2f93b451fe4b9f77ec849afb8af8e10969654b0c5d3585d62623a00e4dc", +"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address_other": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "933f5da2ef320ba339700440dcbaf01c4d7b254278dc926dd8c889d60e26dc25", +"T2B1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "592397e7f3161cab5c7ccf85a2aeb4f70369dfce9534fa7d938915ed1dafd1cb", +"T2B1_pt_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8375e4b402b5fc431fc37d42b4ce605fa43e27388033eda9e1ebeb412ba4f925", +"T2B1_pt_solana-test_address.py::test_solana_get_address[parameters1-result1]": "f40d6d7d69dfc395e53aabee305032a87e7d11d013e43248552369ddff5cc6f8", +"T2B1_pt_solana-test_address.py::test_solana_get_address[parameters2-result2]": "afc204b8331c7207c2fd999af069596f6ce419135090c9caf43a63642bfe3662", +"T2B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "58c68855d5b0b65aac0c030e830ceab4ef5091d6fae953236da7efcfe55a92ea", +"T2B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "b1c1e5481c8111686128d23191d6e92c9288fe179499ee0ce597d652e93aa0ab", +"T2B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "abcf3e3884360b66fbf8efbbafa70041c1421e7658c238e602dc3e5fa952b43d", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "917ca824ec70a3f162ccd145f552adee1865da399d64786041183a369746a1f6", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "9a1d50b97dcf5982a91e38d79f19b494c75b28da92dfd1466ac84a273c9c665c", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "090e05f8b75410a62169cbc4e44cde2596b33144416f27b13060c4e2d7f94fe8", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "6f9a071b8d32fde07c061b4693a00c8d1f708c2cbfb56b72626c418439695b37", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "450f5caff18802a475d2b4268729d12b6c4f30773a71ec6b97eab442cca4103e", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b6eee5658d3c75c3ea1d6028827ca1da1748dc5821ddd763bb3f965235001a14", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "86861f9cef8596efa0ef7c52b53a1b187f478deb68b0a29ede72f30bd33e8926", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "88bd16ea1b8b3dfd17e5a41bac7e6c700d7fd839182da016c72208acbca16e51", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e2ecc7e199180ceacb4c47be256e45bc182b3d694865c82dfa6871ce726b384e", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "b5dd07a4dfd24859c859a86735e7deaf4c41a6ec617132d6af9eef7d65eacc78", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "1caea51a6f868f234435052c43acedf6fe248aa83642e8e67657985b4946ae5d", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "bf15077db854283fdc941adc329cffba2ddae6b8408c8cd365e66917ad306480", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "31aa430f793519c8e620029c6ea408c3f67f90b5b1ea71e96f8dcba179b04bbb", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "fbbb727ef1ec1d516a3217c3b88c936b9e6d8b080b25c8cd5391b57dbaaec2c8", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2251f88877568fb19b12a105007dc553d00f1c139a4bf8d0d4f9bf1326c98b06", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "3b282d92e6c94b66c6d36764741784bfa67699690f7db728587d2c29ed69946c", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "8a9fe94cf43c2fa1aa2fa8eb0e8c6b270bf8c66b16543a8fb02ffc4eb48a0485", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "024337b5c37d3e3fc0d5b92d6ba0b1cf78e05087bf37499c217b26531df8640b", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "cc35caa5417eec3be69a6de90b599604b3d815693ac7d13237ce9504be2bfa3f", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "66b2c32258ada6d46e069c789b0d66aaae015b033b543ad4ed50f167ab4c8a0e", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "8670794d2dc5f9327b9b3f3d4de2d9701ca10b4fe33b5b88e745fb7d6c308062", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "1de10f0228323220b9f673ad43a6149c20dc0e25ebdcf74ffa7d4d9f1bbc1ed5", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "9562fab909b7d9ea49ee5040e23421f673754f1db11b6a03d240ac90d8edb530", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "29bc18a6c61c4cfd30833609ab25e6686fbf09ec6a758abc34cca768f8bab237", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7cce1cb9fcb75b16551059568833ded2cf6afd19468bde03ca89003b568eb6f6", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "77319cc592f9e13ed71bd787242cec93c3c8207f498bc90d8a3f999722dcc5df", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "85875cc87930d402423cd6edf3bac971b27d1de83375f0fbd4c4a4b3e9f425eb", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "40e6064e2382888660887d320a8b11f1fe1bfed7de1f3f62ef3d2069df5dcf05", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "088b4ffe32ac605f6122fc04fbfda7a4cda7725dfa1a10b13ead6c6fadc7406d", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6a3a8037692ac1c2a5ec97b3b59751efca03d2036f1e96f4d69222b09dc48127", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "43e6d359608a20996c8cd228b8095e7fc89fbc6eb9baceddf998789043a9dc99", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "94711b22f8960cbb14fb3ade2ba90696e6735943d7a28e76fb21b49bd81a7b42", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "11b9424ba0726adee544146fcee3c040605169f4b221b3438f020fe3f62c3885", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "91954e46c15b179af446e12363ff9dded761d6e93e338f94a405ed6cc483a557", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "91954e46c15b179af446e12363ff9dded761d6e93e338f94a405ed6cc483a557", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "ea44f5d1397ecc2990c1ef48b4f8657aad2755c3dc33b544ab92167095aaaf9e", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "54871ffc5fa5899d9cb700182835a4a4d8c64766c584e3813063fd7314424e58", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "395269282cc1e08eabcfbe23995d0c5811b00bb08b6a2d42b5fb67f8e73ee708", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "34b72864881e1cee1099e5bf8671853d03747450022be72d46d1ffcc533ecf4e", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "b806e64ff5a23a7617028ea0559ce894084cba543985756c9e1ccead14a221cd", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "05206e05097567c9ae718ac1d5a7fabc4d03af37cd1af2988495651846225a73", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "08cf2420e3e5c8c2dee2762f99de097e8f28efb8f80c405e8e8a45a47855cd2c", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "30f977c994ef82ad78e6dd2f92725d3fed37ee0a6d24f89fcc52fcd947f4f86f", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "439e6ab0ef13292c3288e8a1cac9b08a8756e30d17ea1a330eaaed5b68e24faf", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "e384ca9ccfbbec07f685d41a481484f8842b896d637036bfcdf81fe87c748185", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b1d683fb7dc8a08fc560adeeb5175df77bcbc4add5dc8fd09de8fe2550e5d7f3", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d66b85a0258ddac63eb90c88b2e93b17b323aaf9df622cfa7c2a9cbc21f74ec0", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "581cc34f2a32bd731cd06f5af7df2a5239e01cd499ed5cc537ac1ef660e464d2", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ccfc79cbb555108fc21dbe1c1e57161f4b451731cc6d247f1b559df2afb4a108", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[split]": "70ec04970f01fb3e6e150ef195adbde9e71d2fb088f6399a44f6187db6b242cb", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "34e23510c3e876b8b779de9bef14a4c2d43e94a046cb815fdc0ee5d7a9b34983", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6f31d749dcbf40a0f795b4c9ba4bfc33d57101a1a25aa9eddc25ed7632082f89", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "b556f09028cf77115ea425bf74e96e8c8446e1977f1bdf57d4836e178b1a041c", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "80ad78176e6e5496dc46216a8a34895c8b2d172a7e15d01440aa7d2749d88757", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "deb1b77316f550bac7c4f11c991b92c2c42dc8fb3c1ff8fe95d150fece5ab4bd", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "c1b8e115c0acb57b4819e5639d2afef7229c7fa407b76a1983cfb3145ad77949", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "a46aa9f17af3041e775a8afc1fbd60b6fc08afa4408b054312e86bff00f443ab", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "f073a2c2f96a5950769a64cd22f98febca63a6149c6dafc9dea13be28b2c8b41", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "1c7ed565afbba843d338e06cbcce470d40f2034403859b22b931bf3ef0dc2fc9", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "86b096a832a8d083b9754c5c93ad91ebbc6fbe69ed14a640cca862f18adcd093", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8ed84d529380b58436efdfe06f64617173c3ec6f99c85839f109abcb44ef1945", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2f7b45277cca84351d70e6c11ee867523e6df437417b527af30ba729a3b3fed2", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "c111eba8baedfa1d46cc4693645141e9b01bc18c3e338fbf5e0d0911cddecd69", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "e696b40dc9e1de72e84ee137c679e235e26af537ea73bb963303460080d1b172", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "0c7f17bbfea0cce432cfb519c0def24c461de96340c910e46d903cf82be86018", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "e42db2d28710773ba7075730de64087425255babc504412b094ee59ca4eca2b1", +"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "c55baca013cbbf87a114e88652ff75cefd6068c3de2a65083c4782d3b13646ad", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters0-result0]": "609864b38d00c2d93f605c8ca73c8d6a2e0bc2b2445083e9f00193a3234eff44", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters1-result1]": "6bb7ee992c23a23e1dbc5cc5568c08529132558d34e4cbc55e1ecd835c61d351", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters2-result2]": "bb429e9b63e9fb0c0a1a2e82f0eb7055a602334c32507c9aef15408ee6b4120e", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters3-result3]": "058cf4f1d1d3351c5e15b87f72f6b745420c6952116906a2dad46c421f9eb5fd", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters4-result4]": "21fc6cf8d06c727176ff654210b7fbacc3355c2959c5eb907904bda0789c71a3", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters5-result5]": "09dee197110590161bfba85025c330079e90673d9ff583cf75ba9de2325b3c6a", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters6-result6]": "c815d5518cfcf5da24c0ba47d5992aa72c03e787d04b73289682c5f6ad759abb", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4f52f9a614b1c5dc7a7294de58d01bf916d6ba3ec206847c5dfe5496ecebcd88", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters8-result8]": "5f8a30313b4f31bbfe69ae67b3fec349f6731ab61d42e5cf70a31f6c69f4a8ac", +"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d3404e93c59052c031cff287da48a268b9b1d814ce8f42b6594bbb9f3625be6e", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "469ea58e29eb9af0c74ae312117d9e3dd192872a2fdba1907c50da3f6b7ce91b", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "709d7e35b86408f5125545743795befe55ee2e4c4cb34aa69d988127b63eb04a", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "567cde6d1889fcdbacd25d609c2685cedb4e3785a0c8e2ab7462e962a2ab731c", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "4b267876c9aa32cd68e5f5841eea28a1e76622f2bef3ea628ad29da4e30d82f3", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "da3ffa919ff851542bd0e2fb9cc32c5d4098036220c7690f7292ede317b87997", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5813e6cffbecdb2474a55956139c1ac4b2df0e6d22240fe818eb7662530bd154", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "0751692c22a181b898fa283a2b9b014e5b6293a37bfa4a5b7c23beba54b82016", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "08bb76c59f57f4aa655d3e1799b42fb524b54c446f658b8fa616e15820ccb76a", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3fbb4db9a6ff1f9639e89dc2a682c540efe25a4b4a2ba73d580c1abc54eb6507", +"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "1586a738146d35343bd6c8b682064ce65d16a210824b5aad365aa988d3509229", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "761ea9b7572952f2e850e3164508e6aa222d17f0fa08bb2ab893eb975d50fd96", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "fdcee3cad1de28336f03bc0a65536c1285425c9fa6a706b1e9fa5fcd47feea5e", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d614e0406e0e3b604fe503096007f2ad8a96d3e28bbc56e6caae7562ebcabd35", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "44c17d204f9d4cca69d368d9eabea2edf2aa8cc5d2a3a9b93e5c39424d3082f8", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "686098743a1f17d77b074ad89da99a590ba0d39aac3340f91ff6092ebcd387e8", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b9260b8f76c71af0efb456fddcff7ff9060e9053590f3d9535bde17607ccbc56", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "af0d9cd2249be88b54cf2e6fd7c84f468fc1d812f828287df572297ab5436c02", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "d86c27240f991d601bf85d44bd9a533f0ded69f49101649bbb5efc7b27c910a5", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6461a635272ae5a931894a20ede00da796674b23e584629870104a3f0f3395e9", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ed400b47c749676789c49d1d2759901a0ddbe3b673c385aea97c1539fe0a208", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6233158b9a0118671ebe205153c2462df79d932f0a284ad6bc9c33a52636f754", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "09bf18b6e230b8f71c998adde617060c55eeb4c0327c17e34fa25b73d4169a4a", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "835e90eea34e92220ca46bf124e3c38fe80978595ac93aa80bb670bb397bd42f", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "953e787c09adbfc382300025b84e3f4e7ca7a8abc7dfcbbc1208241f03c56ac7", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "06d9ca5c8238ea6a0b6b7292bf51d5a26060216830803e5d27a327640d7ce5bd", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "3b332667051bf0698fd1b0dbfa3a81295e891459e571ee1e4a3d1e33faf7cfa7", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "db7b3173e740fdaac4b705f151208fafdc738c722470aa70d442ff84793e69a1", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "00bec3f2ff77763fe9f993ff2e05c317a3dca91b0c21fc989915b948fdabaf1e", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "f74aaae5e16574016ec7a5c89e9e45745b6535a364f22101beb49952cc2dd895", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "3a2f658933cc6024981aaee957a4241a0172250618166e58386322944de677e8", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[memo_hash]": "5d90db496990f77059be0658845fe21b8af0425d5a5a6bcf9c67410ea6b63f7c", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[memo_id]": "f9aa7b5280688d20568a95fcd1e07442f68917632010da381b1a9e93c983af07", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[memo_return]": "5202912307e660af7def351b938204e010646ba42a55a6f113eea124ea56d48f", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[memo_text]": "97b687d16eb0efa1da48a741e95b179a5429087dedaeb4fa3334dec76262aa74", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "50f7ea61488eea43001249798cb5f2680abfd948c4202e73ae948422d7b45353", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "063054c8e5092fd459284eb0c92d2b40f7c5eb7f8811477da1785d51557cca1b", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "0e0e27a24c6136767cd20ceefd20073becc97b1dcca81292205405a895cb1148", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "d21f912a2019025e05039f53da75d08e8703384bafd3ba25b705f472a2bfd1a5", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "db758027428d2d53ff8393069fc40f2c70b0aa172bc990ffd344e0ea1d778922", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "db7b3173e740fdaac4b705f151208fafdc738c722470aa70d442ff84793e69a1", +"T2B1_pt_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ad079f6cf5ccabd0462cc684c2d2f2cac2d96c52ce5a296820b5e68fcc0ca67e", +"T2B1_pt_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", +"T2B1_pt_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", +"T2B1_pt_test_authenticate_device.py::test_authenticate_device[]": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", +"T2B1_pt_test_authenticate_device.py::test_authenticate_device[hello world]": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay": "e8730a5b6c60fc68486a3d8a963b98b2fc40e2216d4f5f7afdac985f6030df4a", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0a2f527d57f6ec2e36a0d106c4c3bc02eebc66f3c94370dd582ca4cff3a5cd1f", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "71942329a9781a8bfd70e891b46c0ec52ad9c4fab6b53523f789806ff5100509", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "374122206b9a8660972aee4f9a2f1b860ed7ab24c1222af2d74302f225838bee", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "90549dd3a613f2750cdc3bb6bd12c7c17e0b6c64b04a221ddea2259c2f4ecf8c", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d6db080c545d842aae12c5e480754135ba5d666aac04a8c72b4abf680e2a3728", +"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8b55c117211b18a1b13e47537a48ca4e8b83cd53d1e272d68dfe596f4f2c993b", +"T2B1_pt_test_autolock.py::test_autolock_cancels_ui": "fc6909960588b469b4cf5960f2dfbc91e074e1d03672616837741103b53cc62c", +"T2B1_pt_test_autolock.py::test_autolock_default_value": "b13c3e9f738f65569f7bc7bf31abf82c19a6a27b4f2ea330df280cc66d22035b", +"T2B1_pt_test_autolock.py::test_autolock_ignores_getaddress": "b17c9a46a825916c6693de47bdb7c95202d38ff5eeef6d1e38fa0bc481ae69b5", +"T2B1_pt_test_autolock.py::test_autolock_ignores_initialize": "b17c9a46a825916c6693de47bdb7c95202d38ff5eeef6d1e38fa0bc481ae69b5", +"T2B1_pt_test_basic.py::test_capabilities": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_basic.py::test_device_id_different": "b38f74fa7c0d446aad690b7da5aa0b6a3631886ed7cfd27dc1a1fd25013f400f", +"T2B1_pt_test_basic.py::test_device_id_same": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_basic.py::test_features": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_basic.py::test_ping": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_busy_state.py::test_busy_expiry": "931eb833565b33ead52967976744fbec60103860fa28cd8e235e129dc89d5466", +"T2B1_pt_test_busy_state.py::test_busy_state": "9ea240c028c13691c29c0c7bfc12718af63e00085e909de85bd8ed22ec0bd833", +"T2B1_pt_test_cancel.py::test_cancel_message_via_cancel[message0]": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", +"T2B1_pt_test_cancel.py::test_cancel_message_via_cancel[message1]": "3dd2bdfaf2e6acb9e5e4dc4c8497664979b294e77b0541f51aeecc27c19b8e84", +"T2B1_pt_test_cancel.py::test_cancel_message_via_initialize[message0]": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", +"T2B1_pt_test_cancel.py::test_cancel_message_via_initialize[message1]": "3dd2bdfaf2e6acb9e5e4dc4c8497664979b294e77b0541f51aeecc27c19b8e84", +"T2B1_pt_test_cancel.py::test_cancel_on_paginated": "64ca157fd3477b42f2588fc17204c8793bee274a29404b4cef12d0a07bbcd780", +"T2B1_pt_test_debuglink.py::test_softlock_instability": "72686c47fb5843acee7347ab1c92337b69393bc2fc1ee5d63be16651ea6dda26", +"T2B1_pt_test_firmware_hash.py::test_firmware_hash_emu": "4c5b7a1b55fd9cc5e30c21aa5b5b603de6d8a63f05216cde4fa61c984f8c9be7", +"T2B1_pt_test_firmware_hash.py::test_firmware_hash_hw": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_language.py::test_error_invalid_data_hash": "210bf76eff7ec32d6cc2cd2fd651656d8f92e70c03a522f6fa83aa50680fb67a", +"T2B1_pt_test_language.py::test_error_invalid_data_length": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T2B1_pt_test_language.py::test_error_invalid_header_magic": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T2B1_pt_test_language.py::test_error_invalid_signature": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T2B1_pt_test_language.py::test_error_too_long": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T2B1_pt_test_language.py::test_error_version_mismatch": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T2B1_pt_test_language.py::test_full_language_change[cs]": "cd06e85ffe4e3d3b99e8648d6e56f8f4bf818d19feadab712760891c07561ed2", +"T2B1_pt_test_language.py::test_full_language_change[de]": "4684e9ad4f7c390ca4c1281b7a35fb3754f5ea05bd4e61e44672169e09e6a40f", +"T2B1_pt_test_language.py::test_full_language_change[en]": "343e0263b182a8ad9a7c8afa02691ece986c3f10c57b7fbb2022b8b7333b7942", +"T2B1_pt_test_language.py::test_full_language_change[es]": "cb411bc6bd2a32e93b8f3f7b4bbeb64929affffb4e4321b5f32d240eda94b5e9", +"T2B1_pt_test_language.py::test_full_language_change[fr]": "866357fdfaf4212c94726b03a7edbaece64439ef0bcee6d76d721dd76f51b4a9", +"T2B1_pt_test_language.py::test_full_language_change[it]": "c5c4f50fcaed73c9a4844771364225d70f0f3a5a6df966969f5fea9279a0e293", +"T2B1_pt_test_language.py::test_full_language_change[pt]": "303967db180a4286a90d39c42516c38d1a28bd2c3480d4c22064e477197f8027", +"T2B1_pt_test_language.py::test_full_language_change[tr]": "d46db9bb2e7cbd60ac208f77937b918edccd295274559267c6db58cb953f3b4d", +"T2B1_pt_test_language.py::test_header_trailing_data": "93f41f7199b6934f54529eb008119be5e4abf40eb3007770c39057d36e6b9992", +"T2B1_pt_test_language.py::test_language_is_removed_after_wipe": "0ff0db7c6043b28e3891a7a3768cfe4ea437410af73ca5379ab013200a57845d", +"T2B1_pt_test_language.py::test_reject_update": "80c672bea6b6b3cd5284592cec013cb55344aec2c037a7fe5bd364895232ad87", +"T2B1_pt_test_language.py::test_silent_first_install[False-False]": "9f183b36d5cb3b7250392c41efdcc0880a179b1376a71c8c7a28b7d05691dedc", +"T2B1_pt_test_language.py::test_silent_first_install[None-False]": "9f183b36d5cb3b7250392c41efdcc0880a179b1376a71c8c7a28b7d05691dedc", +"T2B1_pt_test_language.py::test_silent_first_install[True-True]": "7b19f0b448f6673f36f74934932823f9d6e6e69297c732e141cba19f3fdaab41", +"T2B1_pt_test_language.py::test_switch_from_english[None]": "eb200c481edd0e997eace8b83d28ebe1dd3174a16d9f1e1e1d6caf2df7d08655", +"T2B1_pt_test_language.py::test_switch_from_english[True]": "eb200c481edd0e997eace8b83d28ebe1dd3174a16d9f1e1e1d6caf2df7d08655", +"T2B1_pt_test_language.py::test_switch_from_english_not_silent": "583e51cfbb948cf8199be2e14637331c8d1d2cd868fd7db6683be7d39a169c50", +"T2B1_pt_test_language.py::test_switch_language": "3170c5aa1c90e877eaef1b1f67ef609f76d7834bb3ebca8db17db442ac101434", +"T2B1_pt_test_language.py::test_translations_renders_on_screen": "b9a2277470a2d95c288ece88f2799f1f4357ce159a959c6cd865be1ab55219a2", +"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "387b7e9f5237840597f48363e41ff490e78f3a4d14b14bcafe8f9b7fdc3fce8d", +"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "3ce656a9f9451c655c4f1de8551674f9ca443872eaab83eaebe29384ec57d1e1", +"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "d776ef7ae2743574a1fa11fecf5a5caca6f3397bb6f7537c40cfc74187f59399", +"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_msg_applysettings.py::test_apply_settings": "f4a2117bb169937694b0afb83fa495cff59a9bb21ea447a2049b2c7bd8ba2edb", +"T2B1_pt_test_msg_applysettings.py::test_apply_settings_passphrase": "709fac3b928d46690068899259fce3ecce3abc493b9edf447a22edf951e6c615", +"T2B1_pt_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4165f9b2c561e70a98e6edc9f589ab323275658d47d973a90a5d89abb6b49492", +"T2B1_pt_test_msg_applysettings.py::test_apply_settings_rotation": "ca2939b669a03218006fe3b76686223ba1190d47bc46d976a443bc8e6831d521", +"T2B1_pt_test_msg_applysettings.py::test_experimental_features": "1bd50bbf587d78a1ad3d1b560058cdff9621bb0db857b218b9f7242883899848", +"T2B1_pt_test_msg_applysettings.py::test_label_too_long": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_msg_applysettings.py::test_safety_checks": "057d25c869b70eed773da1617221452122d2281a2485266be63d381f4afba07b", +"T2B1_pt_test_msg_backup_device.py::test_backup_bip39": "37e315f11c171cf2928fd7587e697201f9eb0045515ab1f4e03abb76e681202b", +"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2c6492c555f510c18367661a5424fb02de37aa88d8bcbb2adffb27044331a207", +"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "563f9ee6a5502d8ced7bd10da32543d8d2b6e6a9cab7fb465690fb0729d7752e", +"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2c6492c555f510c18367661a5424fb02de37aa88d8bcbb2adffb27044331a207", +"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "989b0f287872ca685a6c3009322f324e4f41997b8e7c91392137dd190805c1f0", +"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c87b112567f0d2c758105d566e3ed0ce4720aa4e8f312083af6dc1bffbb823af", +"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "bc2c044f694a7d532f21b3aa921f07a077728bd61c6daebf0c468fd434fef04b", +"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f6b819e88f1b017ec13968ee3905dd49635c54fdc29199a0ca92e0dda4ed9f89", +"T2B1_pt_test_msg_backup_device.py::test_interrupt_backup_fails": "7b2a4aac97b65d73c14bb83e26f886f43c9271387534d3f516fa872e8adf376f", +"T2B1_pt_test_msg_backup_device.py::test_no_backup_fails": "72e7667cacd2f868801b489ee0a8cdc5302ee990acfefd7aa3a5898821bb37ae", +"T2B1_pt_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "4cb9df7adb666073f4623bb9f4c65cb490db46c0c856765cadaf1dc1bc65f915", +"T2B1_pt_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "d69c32df2697c5ecfe6b73d6a3b4444811458aca1d40ca20c57cffcb876444a8", +"T2B1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "90730a883e0b6ff6b53c82920ed8ea2103521f76ebbbfdfb4cb45feb77b80861", +"T2B1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b6484f93bc1a07f91e7fc393d959b82e36458764b4a8d2c66bc37dca58d07438", +"T2B1_pt_test_msg_changepin_t2.py::test_change_failed": "360b1b445c839659ace48dff994c2f92c2d23b5fd442ba66f9542f88a40c0133", +"T2B1_pt_test_msg_changepin_t2.py::test_change_invalid_current": "7cc24fc5831ec4720179db3ae43f598ed0cec1a49ee012e3efb38ca81b523eeb", +"T2B1_pt_test_msg_changepin_t2.py::test_change_pin": "0276e6e3156bdb56b547fd02168c7291f3ad20552c3d8a05a72f07676fcaeff1", +"T2B1_pt_test_msg_changepin_t2.py::test_remove_pin": "d43258a1fcc538f4e00a3881dda12bd74afde997dbbcad00d599fad61a4a79d6", +"T2B1_pt_test_msg_changepin_t2.py::test_set_failed": "2bebd183b5dd254f0e7506c9d6adfb1f0351767d40f9aee0b8e787f5d6c00584", +"T2B1_pt_test_msg_changepin_t2.py::test_set_pin": "9ad100dd8c3b7931a27b40285087df65c8965f0bfdb89ff4786fdf9db8454ba0", +"T2B1_pt_test_msg_loaddevice.py::test_load_device_1": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", +"T2B1_pt_test_msg_loaddevice.py::test_load_device_2": "d85c788c4a3302ff54916e3526809f48f484d594be04da46efccd003bc040b1d", +"T2B1_pt_test_msg_loaddevice.py::test_load_device_slip39_advanced": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", +"T2B1_pt_test_msg_loaddevice.py::test_load_device_slip39_basic": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", +"T2B1_pt_test_msg_loaddevice.py::test_load_device_utf": "b3a5a47dd2b2b349ade5da34fbc7fda2f449e9a2ce8762d21153ea2d39bc284b", +"T2B1_pt_test_msg_ping.py::test_ping": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", +"T2B1_pt_test_msg_wipedevice.py::test_autolock_not_retained": "10825caa38e2f320f2bd89a7a18784558125f2fc4df585cf7d7ffac87cd0a321", +"T2B1_pt_test_msg_wipedevice.py::test_wipe_device": "b38f74fa7c0d446aad690b7da5aa0b6a3631886ed7cfd27dc1a1fd25013f400f", +"T2B1_pt_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f41aa3b21d0a3726ef3412a8b41993d8de7b48bb8ab18f04f9ade50220188f5e", +"T2B1_pt_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f41aa3b21d0a3726ef3412a8b41993d8de7b48bb8ab18f04f9ade50220188f5e", +"T2B1_pt_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", +"T2B1_pt_test_passphrase_slip39_basic.py::test_2of5_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", +"T2B1_pt_test_passphrase_slip39_basic.py::test_3of6_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", +"T2B1_pt_test_pin.py::test_correct_pin": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T2B1_pt_test_pin.py::test_exponential_backoff_t2": "b0c2b8e6aaa035bc86dbc6d8b6d2ffa1a09a8b313092cfec8c5b75a720c67e08", +"T2B1_pt_test_pin.py::test_incorrect_pin_t2": "1d783b22acda3c7e84a9ee6dc0011f2de8b4e277cb7cc61e1a8bd5c411bb6767", +"T2B1_pt_test_pin.py::test_no_protection": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_protection_levels.py::test_apply_settings": "5e287f538fc0ad2301ff5fa854b2f61c5502c00888ac318353b00336248180a2", +"T2B1_pt_test_protection_levels.py::test_change_pin_t2": "edb8128db5a8fcfd91f364c22fde748b8d4d80fa82d48f5ec8bdf1b41fa434b8", +"T2B1_pt_test_protection_levels.py::test_get_address": "e8fec8b7acaa4d95975bf7e40ea82aaa197a0130956dbafe81b9758a055bb2ff", +"T2B1_pt_test_protection_levels.py::test_get_entropy": "17bc0fe7be82f8dacfdae1cc2d1a90ce0873bcaef9da44b608a3f165813a40f7", +"T2B1_pt_test_protection_levels.py::test_get_public_key": "e8fec8b7acaa4d95975bf7e40ea82aaa197a0130956dbafe81b9758a055bb2ff", +"T2B1_pt_test_protection_levels.py::test_initialize": "5357802cf9a5776d29611d91911c552137fc1ddac9abda1760433a3853d4c43e", +"T2B1_pt_test_protection_levels.py::test_passphrase_cached": "9ecff1215ff6d032818de1b1fddb72cd5295415b9e353d004d0c57dce38a8456", +"T2B1_pt_test_protection_levels.py::test_passphrase_reporting[False]": "628fa33c0628038e9bf17cb9f9c74982f3e149e16b772026e9dc7f94d62ee103", +"T2B1_pt_test_protection_levels.py::test_passphrase_reporting[True]": "5b608af0d8b9ca61206203fb2e273b6143a2054326390cb1dcdd8ca076b27a5d", +"T2B1_pt_test_protection_levels.py::test_ping": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", +"T2B1_pt_test_protection_levels.py::test_sign_message": "c37698e12400928a9a5d13aec7503f310688226adf63a32f008308b2551e33c5", +"T2B1_pt_test_protection_levels.py::test_signtx": "5cbcaf1d401bfc00393f4eb3c25c671d5a3b2168ac9c3fe1ce6f0f956c1dfe4b", +"T2B1_pt_test_protection_levels.py::test_unlocked": "f545f1ae5c4ea4b10440263558af40c205b576eb08d45785c4b2a65afb0dd284", +"T2B1_pt_test_protection_levels.py::test_verify_message_t2": "e1994ac3e25a9705d51a8e00fe07801ee38de58a7cfd223133bd33137abd17d5", +"T2B1_pt_test_protection_levels.py::test_wipe_device": "791c4334a6b565ee3dd654e53043ac7968e4a01303a13e308b9f6302b8175ccf", +"T2B1_pt_test_repeated_backup.py::test_repeated_backup": "7546777c5454e4227346e5329d8b864af1010fb082db33cb6e6706ae66f0c19a", +"T2B1_pt_test_repeated_backup.py::test_repeated_backup_cancel": "c7b82ef771de5388d7efb6b5110a2c7fddc5d6ba2962cdf60b826799815ed95f", +"T2B1_pt_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f5e2e90f537414cef65bf68112d73e913fec7a9f35b7b43405a51dd700295ddc", +"T2B1_pt_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b8efcd573c8c805347daca77ee8e00acc9fe9b313f62acd68b422853422c9e33", +"T2B1_pt_test_session.py::test_cannot_resume_ended_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_session.py::test_clear_session": "ba97a0d9a13bd7e1ae589e483465fcfe9804a4ea4e2b6379b4b801e5d67dc6c9", +"T2B1_pt_test_session.py::test_derive_cardano_empty_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_session.py::test_derive_cardano_running_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_session.py::test_end_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_session.py::test_end_session_only_current": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_session.py::test_session_recycling": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", +"T2B1_pt_test_session_id_and_passphrase.py::test_cardano_passphrase": "373984ca846e93c4dc2410598b3bb096253374f8931b6642677bf828a2ad0d04", +"T2B1_pt_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b62cd95b53e210403be59ee760732f69abd158a1b5a91b909380ff534d3b8bce", +"T2B1_pt_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "a9cf2f9c0797ac708f07a12b8fee8a9a3ebfe5229417bd774514251b9e2eebbb", +"T2B1_pt_test_session_id_and_passphrase.py::test_multiple_passphrases": "13096c4c72f63e2cb4acc5bb588d635c637dc328779f9e99b39aadede2dc3cb4", +"T2B1_pt_test_session_id_and_passphrase.py::test_multiple_sessions": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "240442a32716af5ecc7c3088b63790c2e5616226f4ddd8be1572a49aff151f3a", +"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_length": "e800c3268be100f5542371e919a6ae23d01e6d960b5e865f4a3d1d3b0fc6feaf", +"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_missing": "9ecff1215ff6d032818de1b1fddb72cd5295415b9e353d004d0c57dce38a8456", +"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_on_device": "36d2aa7c224b3aefd61048024f02ae0b4caf12c46580ce61570b9445503964c7", +"T2B1_pt_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0b0524eba8530f5d4e490fbf8fa1fc632e5d68407489fbb6bdd8be7d49d51eb1", +"T2B1_pt_test_session_id_and_passphrase.py::test_session_with_passphrase": "729cfd6983877ba5e279ad048a515f3b5f56a74eee4514eeaade9461e8ea4dda", +"T2B1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2c6fd1ecbc7bc8483858ef82ab0b9114896c97d713247559612c018e9c0e0e42", +"T2B1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4935e8e3ba9b80bdf2b4ff8de736baa6de935fe3e05ae36b0521e72861459348", +"T2B1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "2e6b5eb4346f9580e93453787fb93a057d7a138c0fb35958bc32fded388aa496", +"T2B1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "d71fb9cf3e6f06a5d8960c79d5ebfd6e05f90877afe4b1d4717a587d74694b79", +"T2B1_pt_tezos-test_getpublickey.py::test_tezos_get_public_key": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3d27dccabef12219a0f3d1dd9acf5e04934d9cfa7b469889b1349fb27ff8ea2e", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "28200480bf658e35d466db7e83fb7aca72bc4655a476e92a70522c0cc5ec2674", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "557c1a9c34678a1c162c81bc6f8eca06417378bb665bbaa9c3bc2b957ad96402", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "db8d0b0ce60d01355ba06903402cb39fb6cf595397c71d3f91a8b578ada9e978", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "0671992818fddc551ec3b42d5b22fc20765695ddd7c13c6aa2d8b8109e7c66ab", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "d1efb10fd1b980bd36746e1f5ffe002809b96332e80007ddf148c167e9c2e2d2", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "229814bc6e047a2f781d0a7bb217da23a43f106c21e36c6452cf9a8e52a0f1a3", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fc0fb2024058497d7de828eb7c8f2bb103282563179729af5483ad4508cbf775", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "dc6dab8d59cf12956c94c7edd9f3f46f13b881ed7969a83fd7acd27c36962c52", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "d7a92deaff261b12352839565b6690d83a15be2a3d8ed752f824ab8144617cc6", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "f3fad9b2f37f0f6ba5b3af7fec18971d5478a7a4caacd04885567cbe8151eafe", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "e31273d9efeaa6adf4308a92516cd19b0bb2445db7624e652f79c8dd6f561640", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "20e16cee590bd84547f37551b91fe8473d195109f549e98f9ce251af18a1a147", +"T2B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "4460f2774c0913b6914eb9fe116b8b9d4bdf7dd1bf1d528d2575c27c0bf4b197", +"T2B1_pt_webauthn-test_msg_webauthn.py::test_add_remove": "c93f2c6760f6c895d5b3639fa45de182b81a01515e2ea6082e70246bdd84451f", +"T2B1_pt_webauthn-test_u2f_counter.py::test_u2f_counter": "53ee4d5cd62f72072884280c8e048ce5cae5f8371e70fbd4f83ddafd9fce602e", +"T2B1_pt_zcash-test_sign_tx.py::test_external_presigned": "99341a5d930925f7c16aec2c0f39eb32a3041f17c23cf5966928e1f28c534653", +"T2B1_pt_zcash-test_sign_tx.py::test_one_two": "ad470fd56cf213faf06f274fb7d34af70c09d2b60cce2407a0b4ad7ac6e28b45", +"T2B1_pt_zcash-test_sign_tx.py::test_refuse_replacement_tx": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T2B1_pt_zcash-test_sign_tx.py::test_send_to_multisig": "01cb324f68640d2c3f96e6c3335f7e834c99b8e02eff49fb28c441e9f393444e", +"T2B1_pt_zcash-test_sign_tx.py::test_spend_multisig": "0b7bad29cb267c3a7de4e5c0b7dacaad6ca9ceb3b6de0591320834e32a8851ce", +"T2B1_pt_zcash-test_sign_tx.py::test_spend_v4_input": "dd200fb7cf077566f94a1e65ed3d756cf76fe024fae850594aad30b4a43b1edf", +"T2B1_pt_zcash-test_sign_tx.py::test_spend_v5_input": "ee38f2289bdd02d02daf746894ccbb3958093014a5893160dd1bdd956298c8ed", +"T2B1_pt_zcash-test_sign_tx.py::test_unified_address": "913748030caccdbf601489c18d5ec280d9b76940e6192659668bca9676ec4074", +"T2B1_pt_zcash-test_sign_tx.py::test_version_group_id_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T2B1_tr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "d9124e6a0824a8c7719b770573b9afb252533e1f165b8df0de62a4840d449ec0", +"T2B1_tr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "e61038e81a5d328743b75d22bed7c9d5e519bc6a28beb025d7750dfdf798a46d", +"T2B1_tr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "703f91c0a24491ce16329e1e86dbb055d61056b36fabb96d7ef9c34940c8f26e", +"T2B1_tr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9bf83783e58b1f3fade692cc389649b7b6bf2828359af61c0cbdfe39b03efdea", +"T2B1_tr_binance-test_get_public_key.py::test_binance_get_public_key": "8f64492c412f81d44f2a6b122a01c9fe577d7537043a3fdfb0aa5024b5a46c30", +"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9e96cbe0a9bcc03db077e5eaa996b7ba7bbc90ea5b8011040dedfc1629fc1573", +"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "f2d13175927a046b849bc94b9426e257324656961aa1730d4e8f134708897f25", +"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "486fdfa757b9302447c08c3a4e22843e745dd2e1c84fddac7b65f0333536c113", +"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "9e96cbe0a9bcc03db077e5eaa996b7ba7bbc90ea5b8011040dedfc1629fc1573", +"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "f2d13175927a046b849bc94b9426e257324656961aa1730d4e8f134708897f25", +"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "486fdfa757b9302447c08c3a4e22843e745dd2e1c84fddac7b65f0333536c113", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "5d625b26429d6d98670aaccdb3b9a708d3dcecaedd790cb27192e30b950513cd", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_get_address": "9b73deb663e2377bc6183ea86af26ff562d2a7afbeab64a12d62aaf3069e7b4f", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "6ac2f23a4206b33f5918ba8d497e4e1ae93185f4427ef0aaf4b83256111d0b66", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3f5e952df97ca48b1e7ccfcb5cdfb5dcace14d28df781b0769af69c9b862f7bd", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "cd37563ab69de57bd1f6762b2e43526791b1485c3af6d151db8408a96bd47ec9", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "cd37563ab69de57bd1f6762b2e43526791b1485c3af6d151db8408a96bd47ec9", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "dfcb44d317478f7412e1f2c41a9daef348ffa16bd240b2602d3c08d8d9860b81", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f3d60d3c0c61005b67e4a921eb0867fe9b8715061c75555c9fdc5d0e361aae9e", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ff63d90d47eb85ec8cabe67f923b82c63d36705bb0a6a41caa461f55ea1d0c5d", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4a0f614cb7d13654598f10f6d68f930d02193b35db6072895f81a3d1ca0b641e", +"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4a0f614cb7d13654598f10f6d68f930d02193b35db6072895f81a3d1ca0b641e", +"T2B1_tr_bitcoin-test_bcash.py::test_attack_change_input": "2ead8cbee3741fda44cac554ddc8aa849cfe9afe2bf2a7107c84d1c4bf201bec", +"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_change": "d742471aa4702d014396c0a69de2def3f96b513a0fb2e890a19153d9ebd65412", +"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bfbe70a9a4a0c617cd59e3bb59ae1e74dbbb83e513d4487aac5a92399d9ad938", +"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "54a8ce331afafc4f9d84f3f946f0e418e366cb5060c45d26af0e0d059e7a0c4e", +"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f75c6defc0bf0a7be37ffc48c8f5b3686b63a90ac7f12b1eb0c7c464e391b710", +"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_nochange": "930af06990d641bf9e10fe242e802e851500e0a50cbfdead17fca87677dfc9c0", +"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "ffe21a1d735a59db356fbf565086833fec9a76d4b9df6d1b6332db142344c07e", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "8e4905831cde727c4befde8ba0ecc92530fc0c871eeef09791a70f108f4dcfe6", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "c291be48e5109f5122846d0cf241afb1c867b867502919792bcfb520afa54bbf", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "76b01bbe381575b1b610a94bebfd8c5e8b2baf9cfb1db798a9f22a2d085b4507", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "28f03c014c8b17f38cb4ec08f0d87d0e8e49011acb2b57d5b87bdbda5e997305", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "7eb321b84722f58610dacc5bb3558e22047efdc6feb6d8a4fda7816e20e8ea11", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0f3ea0b30436d46c5b1b4e5a5b1357750cbd764cd5d029698038cf7cc3a96c5a", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "72fbc5c876712df1ceeb87593e7dc0f439d8daecb28ddf566aabd0a7e790db32", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0a6f05f0854c6bddfaaa7e7e212b0e37414b375545eeca09bcc73bea4b22a898", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "edc799c6d64e63cf0168095bdbce804336b4148d761f3062c62106dff97959ab", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "fcc184720521d4a6ae88fe87080540237eecd764b65c5acd915b03454dee73a7", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b956f194343ff151d4e9cc762c4ce257957ebd6dbf1f8aed0912209ef30cc52e", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9b105654218d7f0d48bf0a1ed2c622023946109c54d41b158fee5c3a6ce43351", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "4662e05beab3dd6aeb5ee49e1b1dd8a45b7febe640aa609a74a9f7ba399d0ae4", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "6c83545d2f7cc2980a4311f2c71ac85d3becb741c0aa2e55a84580355c1666af", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "97d5d326d116f6632a76a0617fedeeb23f2de4f092a10a5608822f119be6cb8e", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6da095d9cbbd57180723410474c394ed4f57b26c75bcfc3eb3a81d6a7a31eb77", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "946ec62f20ef97d97a48f38212bfa7018e413d9cc2cf18bdcc71a59af626e891", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "5ed1b6d5d6476c3862cec3a06cf8439bd8731e754286aa1d03eff4f15e57f4e7", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "8e4905831cde727c4befde8ba0ecc92530fc0c871eeef09791a70f108f4dcfe6", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "c291be48e5109f5122846d0cf241afb1c867b867502919792bcfb520afa54bbf", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "76b01bbe381575b1b610a94bebfd8c5e8b2baf9cfb1db798a9f22a2d085b4507", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "28f03c014c8b17f38cb4ec08f0d87d0e8e49011acb2b57d5b87bdbda5e997305", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "7eb321b84722f58610dacc5bb3558e22047efdc6feb6d8a4fda7816e20e8ea11", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "0f3ea0b30436d46c5b1b4e5a5b1357750cbd764cd5d029698038cf7cc3a96c5a", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "72fbc5c876712df1ceeb87593e7dc0f439d8daecb28ddf566aabd0a7e790db32", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "0a6f05f0854c6bddfaaa7e7e212b0e37414b375545eeca09bcc73bea4b22a898", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "edc799c6d64e63cf0168095bdbce804336b4148d761f3062c62106dff97959ab", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "fcc184720521d4a6ae88fe87080540237eecd764b65c5acd915b03454dee73a7", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b956f194343ff151d4e9cc762c4ce257957ebd6dbf1f8aed0912209ef30cc52e", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9b105654218d7f0d48bf0a1ed2c622023946109c54d41b158fee5c3a6ce43351", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "4662e05beab3dd6aeb5ee49e1b1dd8a45b7febe640aa609a74a9f7ba399d0ae4", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "6c83545d2f7cc2980a4311f2c71ac85d3becb741c0aa2e55a84580355c1666af", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "97d5d326d116f6632a76a0617fedeeb23f2de4f092a10a5608822f119be6cb8e", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6da095d9cbbd57180723410474c394ed4f57b26c75bcfc3eb3a81d6a7a31eb77", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "946ec62f20ef97d97a48f38212bfa7018e413d9cc2cf18bdcc71a59af626e891", +"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "5ed1b6d5d6476c3862cec3a06cf8439bd8731e754286aa1d03eff4f15e57f4e7", +"T2B1_tr_bitcoin-test_firo.py::test_spend_lelantus": "4b47ab8b0b4aaee75bcc78e30d9ae01bb1d4016ceec7da195802f867c27b0a21", +"T2B1_tr_bitcoin-test_fujicoin.py::test_send_p2tr": "e4050ef6b28efa37eaa3424496bbabf99f77435ef02ddaa60eabdbca7dc4f84e", +"T2B1_tr_bitcoin-test_getaddress.py::test_address_mac": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_bch": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_bch_multisig": "77f5128752deb7a505ed43af2afe610fd9b3e88177f1f9a251ceef89922adfee", +"T2B1_tr_bitcoin-test_getaddress.py::test_btc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_crw": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_elements": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_grs": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_invalid_path": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_ltc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_multisig": "16b85d823d3cff4b53eea9559ec66035a706037271722e016560588c69b66de3", +"T2B1_tr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "d562a23ba2e5efb967dd1c3329946ef6a431c1690b9ada594d3c2d8a33731a0b", +"T2B1_tr_bitcoin-test_getaddress.py::test_public_ckd": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_tbtc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_tgrs": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress.py::test_unknown_path": "0c83f7285f62d340a58ca83f1a1d659df4bd6141d8573faa9486a47fe700f8e9", +"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "27aadc956cd66fc053eeb3e9a6a8f4a828c6901b487f1b00fe38420a31fa5eeb", +"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "5d8f87e358e8377bfb2e9b2205329b046c948b6a937497f9dd69f5eb229bef6b", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "2b11e7da96190c040aea71b69f15c798f67247f50bc06afe15766fad62a47b8e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "8b94277e472364fa21a2224e0ea2eed100935cd178877c4bfa57cbb10419e3d9", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "c001f456754535fa97c39816700221c483a377fbf13022db62f7acdc05bf5178", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "5ef55b17824c84e68368a40fcd7c0d488698ff8a6c7d61d9c1f52bb7fd2a8a8d", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "0dd4929771cd31a694e9282a1d4c3fb4e573aac193f07e15c46b4637d4fa8224", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "cc771816a9a55a185ef559cbf63ba2b6b34ca6788d0c107941211fbb9b7ffaab", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "0897ca57ce827280025ef54b6f00963c72e053f6142982f0a422427b9d816a2a", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "99bcaaba33cf55e3ea863ac43ff3f07a40f28eb7861e50e64a95729d480c45e0", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "3af138246b66518a05c274fcf156b0e5ae2eb5e83fb9e46eee5628900bc4eaea", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "4cd8e14898335ea51f6c2233e8c11477eb3df27f03a9a807fc2678022e1b5e24", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "70d05c23969fab1fea733b1acb91a763e35c6d1693aa19d72d4f845c0188f8a8", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "adccded2ec9a25d524d4949421c51b77ca39d48eca9fc7243a0ddd65c3f5f8a0", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "9e3175948618bd985f99e3222f88dccc25737c692b582fe254c62e9946759e02", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a47f0a93b32dd9baa89fb0dc29f977f9d4706817012c13c846661250eaba01c7", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "b30a7a1e632dd3569cd68419c02919219564abf536086e194b11fa39eec640b1", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "edfb527e78a98894264dcfd11afa46af88c74c8d5936722769d2f8122edb4455", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "979ec137f0b9a69273e6e48eade0a2f842fa21fd5db3319916cda1977ccae429", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "86ed6aea32182a5b018d1ea2c66a0afbcc2a147e2cdb5a88005e6ada618acf59", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8b83b98e3305b29dcf4b3bbfd5b6c1f2cbb63ac5ba83312b3c8e60b3ea78a578", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "0b120a50db850a17ec7e25869dc52ad9af8f89189718f823c721a7535fa8fb39", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "499e8999d76c879f91facdde081519e3ca791abd3c872eda3d8655aa608c2758", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "0efbf29c6f55d6e12b4692658b2eb9df4174f1b80c50f8b9b85d545ef259c908", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "0efbf29c6f55d6e12b4692658b2eb9df4174f1b80c50f8b9b85d545ef259c908", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "bed0d0d0142bafdd74814123187977ffdea89a237d4c15ae2c0e077f959d9b47", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "bd6f9c3993746fab04b096f859174723f51f26ced4ea3e4ebcce28e73ce98ef8", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1980fe4dbaa9cd4da23a4fad62d30805b79282777ef5e5977698575b7bb937b5", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "ab39300fe21c3b5c40218634841d24875dd9152bc8b46bde60460e78b6343cec", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c1ed5d2b1e015b05c8080ab4133e38e17814472e07187664921a2ae5e3db5657", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "0c669198e07bc63387f7e555f2b4c58a9aa1d4ea57bfaf35ce99b63befb34329", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "d82261c914932109bd2bf8bb95ffc2f6791c3c467e8a5ee275958fe11daf369f", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "e60116edfef6acd410825752970fa6109e8a9ec4ce6a302addc227607eee0d14", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "5f2c7470b89f742e88afa08fbb5169318ef20d26e01ae7a569ca148fe392d91c", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "3aabafc4147456b17a874ee66d35edb4c342f9ce1a096cd5b0667e3d03450cc8", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "3c6495c255fa2fff2f884ae9aa5f3de4bd3c5592e21853f575a6fa98959abda9", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "410be2b31301da6c8ade4f0b48504071eb9029aaf02a9dc5f069660722aeafbf", +"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "30fd41f5fa43c873876c6adea7f969d6a7c814698978b38e4d1a0a812419c8c8", +"T2B1_tr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "584d4e17608759ff6bdd29366c1a8de458eaa8bbc27492c6b0a0481e2f988567", +"T2B1_tr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "c291be48e5109f5122846d0cf241afb1c867b867502919792bcfb520afa54bbf", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "a29095ac35623c9425ca2f41d7b84506a6153d39ccf325ae3990cc875c1775e9", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "3fd347bb00dccab41068a4091b30b03e58a97fa0556011becf631561fbcc67e8", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ad0baf92244bfad5807bdb358cb1af90a4b744e71f76774d6645f290b6c784d9", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0efb5bba2aa4bc5d7412df5432cefe723760db6d6c4dfa9ddb334a404e12a92f", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "771f76fd5bd68095969b48ef79bc33e64fec7ccff3786145058f0b448a71e9fb", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "18aeaa500e53564318f82aa7edf0d9ca278384dc2bd16bd57b51fe5c222aafb8", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "2435349aa45f005eedf936b2872bbd1dce13f189cd616ba541bf7d853ba599b4", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "518751cf6183e291b0566587b9ac136b5f9cf15f8ac109c587c3762414b55925", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b956f194343ff151d4e9cc762c4ce257957ebd6dbf1f8aed0912209ef30cc52e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "58a1822c8c429aec01f077597913f8a52002d2a9646bc36740d66fb3d20ec0b3", +"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey.py::test_slip25_path": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_grs.py::test_legacy": "816b3815a2dfe4c9009866f26a43b45f5ae2f7a4ce85976ebf1abed4171b72bc", +"T2B1_tr_bitcoin-test_grs.py::test_legacy_change": "23406855368d9d551774bffafe4b51bfedd83637da2a31abe6337814bff0bbea", +"T2B1_tr_bitcoin-test_grs.py::test_send_p2tr": "b05c4745e3fde4e7b33a0183dbfe102a213e3bf8d94cdd1f3031f58e7762b28c", +"T2B1_tr_bitcoin-test_grs.py::test_send_segwit_native": "0c66999cf707d75d713df361e1b6f847b1b00d49c5a719c4c7cfb090fbd5ee63", +"T2B1_tr_bitcoin-test_grs.py::test_send_segwit_native_change": "31138bf6dadb4cc2a999e897b00e4a78a2f967c309eb3a8c29f737989a12b967", +"T2B1_tr_bitcoin-test_grs.py::test_send_segwit_p2sh": "19dec6d31910f6ad3b54002d0b1464ad29ce0fcb75189563b25f4c10798c2e59", +"T2B1_tr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "d57abee2b29b4ca7c3f92de9bf287e5a4e2a0a3199f27c562785e7705aa47a75", +"T2B1_tr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c1ffb83a29781997000646d521b61b7d617c439e6b40eaa8dfd34ad813c103b2", +"T2B1_tr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f5d156ed186cbb9386ce0e1d92753a796c8538199adefcf6c17a537ce8383773", +"T2B1_tr_bitcoin-test_multisig.py::test_15_of_15": "f3ef3d70bb185d4692f688a49e942edf704ccba9a1fff1f1be546d39a1fcb9cb", +"T2B1_tr_bitcoin-test_multisig.py::test_2_of_3[False]": "c3741890599a17ed8d391f8e78d17111373b9308fbefafa9f11da72ce871b34d", +"T2B1_tr_bitcoin-test_multisig.py::test_2_of_3[True]": "dcf4b007c09948fb44f7c88644724b3c8eac67cf75494696488588175551bb33", +"T2B1_tr_bitcoin-test_multisig.py::test_attack_change_input": "82bb97bd8c4fffaee50fcfb2592f5473a05e71bc86ddeec608f20bf0db8bc21f", +"T2B1_tr_bitcoin-test_multisig.py::test_missing_pubkey": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_multisig_change.py::test_external_external": "1e2b7a6e0db95511d0bae6b0a0fce70b20ef60dbe80cee40cbee8ede61fc8d8d", +"T2B1_tr_bitcoin-test_multisig_change.py::test_external_internal": "bb969fe7f52c6061d386cde203f77db1a299c0a5311992b404c614cc3914622c", +"T2B1_tr_bitcoin-test_multisig_change.py::test_internal_external": "4a83c6099c032ed91f00e9c058c8115287ec367f5fc44cd8a08200fad464604c", +"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "bbb7cc92ba2339d55fd123ab976b4eb29b8657fc35180a7b359bf604c0797323", +"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "36f6dc6662774b5cabc4a962ceb58e6fdd49b689639c6d9b0bc0d57c9ac1c857", +"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_external_external": "d08dfebebdefe694c03926beb6037c6b70cb4fb924cf24e59fea6f6f3fa2a003", +"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "20047a962b0acf222cc275e74af76a52441703f833ab23e9b1e4125b45e5c4a5", +"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "231dfb84f53f674fbe787bd4217d6eac1546295262a0a9bf614931c45ff69743", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "32e39add282ed3099ff1c4500ab050bde5aa80d7b18309199a00bd45622f0320", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "bea29829591477a0fbf93f26f738a1945538dfbcad6232ca5fae8f79113a07a9", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "c9047c54f83f286d8197273442559e0e51c777d2082b870630dced94a92a82e3", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "819d4972f4f2a0fd9081f1008fa1ebbd2131e1d8dcae34d4815ad402b54dd514", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e587c34dae3c4e65f412f6e80091f79786e6fd35521877ea8f36decfdc157fa6", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "4e9973ed1a31546e6cb931622a7cb7c1f383672ffa084d5707ba04e411687be7", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "7e5aebdfc84913972becec5088d0833d0074414739dfc18b408dbc7ca5b05529", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "624bc9ddb50bb380231f4cbf4b5f80a0ea5d74c720b7030fcf998614438870f4", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d4efb6512a63275611f7e119220cab8afdb5bae347ba3229a5fbf6230c7b5cc3", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "bef386157e53002bb119b40f2f7bdd85a19ed09539f0a24c9c43ac073ea7075c", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "0f7884be27b9f03c5020169138b2721e49a540910288bab0cb2ac82423119f46", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "da42fa1d6daf289f8a116c92234917c6fb1f33118cc2711660913e3eeeb5fb1b", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c132dacede2e303c77fdc45aa029162996967adfd20d514c27cb734a771c8e73", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c0f6794f762e96692cf0b8ee2f518c8cb0b47521f8fa71d41e6dd0fddd438db6", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "6ef292f93878f90e5d1ce0cd3009910d2a2b278d1888aa89bc72d171823bb0be", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "42bc8f59e07658119be2cbe702f0349643860341c3b669df75c871fce58436c1", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "00b2b5514b4b46189cfa2a38d122cbf4d1d8ab9905082132dbdd2f2926032ee4", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "74bcca2a6beab14269a2384eac75f4ba611ef416e5baefcb78cecc0400f84de6", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "82eede0b0b121400dde13fa979c507c30348afb616bf6ee8684e395b87139bb5", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "fc3e9e0df0acd0c27b607b6a6f7997bb516f4f3466966197ed82a2d1aaf69512", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "078c47b49a290042399f42c7d06a18f9bb107de6621ea422bc8aa3ab663690a4", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "3906c06d67d5dd05eab38e4b30b6bdef6d015aa0f35b0b782c17b198c7031203", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "7178678c6bd453ea093b800bdbb2c5726a7af19124453c722afc9715cc80c986", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "c760df72b98734ad85bb74f43e9ee9a0a9ba2903c569f58fac9db19fff1b97a7", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "985c9b4cfcbf65ea9ca88ac36b038b3aae57465488412402cd0132100ed32dfe", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "b050d8863f9cf0ebc4398a7d1d440f7d6f565ee2aab2d0b9db9e4a7446ddff01", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "fcf72a9899e231d8f14851c5fbc33872711c24ca0c2636baf71a0d502e1d3bfc", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "2fd192196768b961a49ea859008eac5fa492242ad74e36641f40b85acee51a3f", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "a86bd5cf018314517860305d98819e2ca67e94f65609f30f7cebbc103d64dad9", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7b2805d8a3d3d281de23085eb7d2ecf33f940edb5d94e552df0043edb59680a4", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f6079f076e616bd4974160ddea5abe0108b6bbc30eff396db9b31a124be94232", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "1a8892ee84164595f04e977c6b25c8c302c093fc01e42dd17f4957c01c1d74fe", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ed705812bd0fd018b050f01b8006c48d93e16141d98bf1f356ce3261c9ad890a", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "625ce80951f2c2478d53887388c2dce19c3aa0769a1383460de75dd1450fcb43", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "666e64244552ee22c8028b2fda197a2b309beaf5d2398834cd13aca41fc108f9", +"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b3da624b6014215c8d81946ca6b6fe1cd24a0cff15544372368eb4a6e395558d", +"T2B1_tr_bitcoin-test_op_return.py::test_nonzero_opreturn": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_op_return.py::test_opreturn": "55f7a9719888a8ccc85188e0b02fa2df440de033088c4d5fa6f420241fc6eb53", +"T2B1_tr_bitcoin-test_op_return.py::test_opreturn_address": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_peercoin.py::test_timestamp_included": "5b2ab96a9bfdd2bb998f1acbd26e363de84b1f3f0ee4f2ea61cfd22eb46a3bd4", +"T2B1_tr_bitcoin-test_peercoin.py::test_timestamp_missing": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "982311b0775e2d4855ef19cbf808e0b6933945aa8797ff89734a6fab5c8a9754", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "2b0f753ec583ad68f4f2f1419574d1d6b1432cabef716700e4b42d3572702f6c", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "2b0f753ec583ad68f4f2f1419574d1d6b1432cabef716700e4b42d3572702f6c", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "b10f67c916d10da49c736ebffeb25e359bcad254a4a943e8df0c3773be50da36", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "3298d2403087f8fb2a89daa959495e519da9ddc9d3abbff3124baf69473a94a1", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "76517a45add7afe64dfe35165c86375d5495e0aff55931fd89a18bd4921ab6ee", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "4bd87003860ebfc78f10c4ac2d2b53a7c0cb03a2dd47c2c48d4ac704dabb23f0", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "0fe86b0ac7f79aee8aa964f8181b4e081caa14cfce44293fa11dc12f827239d5", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "615453230d07c5f22e8d91d840d907521817b90818a144560b9bf5c633ff4ca7", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "615453230d07c5f22e8d91d840d907521817b90818a144560b9bf5c633ff4ca7", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "35e6472d26d5680ef47a52985ae2d66fb5cb869edcdf6a47c43384fe973ff6ab", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6edf1a05689da44752d3125fce8bdc9731349a5f4e5e2bebf9e758ff2621b32c", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "df1318c6ee82fa4ee8967d8eeeb1d2232b0a39de818620faf7199b6b24d8de2e", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "df1318c6ee82fa4ee8967d8eeeb1d2232b0a39de818620faf7199b6b24d8de2e", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "e454e553f812d7c5b5e292980347ee21541cfb3ee1943494e1afa7e0d6f6224c", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "80317d375a080b0d4945f8c12b1e120e966d22cb7a8535df20f4302e1d53e448", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "1856b7b5ee9d346cfb81fe0034fd0aaabfb4164c5f0acc5e4eea679243bc7975", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "1856b7b5ee9d346cfb81fe0034fd0aaabfb4164c5f0acc5e4eea679243bc7975", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "9b5d7eaf652d8c10189f7fcd4ed9222c7e08d3aaee65bbc95464a722bb259f1d", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "42dfa6d537e73b4db322f43b18ac1e0a9ff992fb02ba1b99f333a8c08c110965", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "a75814509619fd5cdc71fbe63d92f63e15407c9fc1299de12eb47d4ada63b9ac", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "11f3d97b2b94e2703d279700c41d9af8442ecf57b368897e45eaf2e556a5f23a", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "1996ae66e28c591a922151669013b92102fc9dac9ae4c43a93312514961fca79", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "4b8c55464074034c49b478ce97926b20dd179ca9aec51bd25de9e8cd7edfb52d", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "02a2a0c94c906c1e7bbd22f7f7596f7bdce8321a79ad199fdd5dab36dfe3a1e0", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "06ce37ee48765c5244118a6b4ba5ffee15eb42778edc399906596eca098390e7", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "b23c7ef2d1bf42c02219ef1f79254301fbc6bc9944ce1d0affa644fce7bbe3ec", +"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "82a18abb27afb9b787e99b8aa0dd8211c8ac67db6137d733e7d86964d9e98cb2", +"T2B1_tr_bitcoin-test_signtx.py::test_attack_change_input_address": "e6cafeaa6b27483a9e802bc80b7a417ab40ecf0e77dafdb7ab43e4edf8d9fa2f", +"T2B1_tr_bitcoin-test_signtx.py::test_attack_change_outputs": "728c48f685813535a021cca1df63a57bd68e3a605a75b7157c8bafeb9bd4a798", +"T2B1_tr_bitcoin-test_signtx.py::test_attack_modify_change_address": "6b9d590f1224f85de7470cbdbcabb38b0262079ec71503f039823a810393d9e9", +"T2B1_tr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "6b9d590f1224f85de7470cbdbcabb38b0262079ec71503f039823a810393d9e9", +"T2B1_tr_bitcoin-test_signtx.py::test_fee_high_hardfail": "fb41473d8fffe785efca4130b0aefc37c0476f5147c09cb185d0b1fd034317f5", +"T2B1_tr_bitcoin-test_signtx.py::test_fee_high_warning": "c3ae1fc12140ad8d153a80494e635b2b1905e6f97849367bb2ee25af5843f8f3", +"T2B1_tr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx.py::test_information": "3689869f9eba4868da039d77220208a0ea52185ab5706a1361f4c108b2035c8a", +"T2B1_tr_bitcoin-test_signtx.py::test_information_cancel": "314f21b79bd3b2287bbdbbb08c56e8cd47f01ec9de4a2ff744e3593b9524ab20", +"T2B1_tr_bitcoin-test_signtx.py::test_information_mixed": "e88551d8db47fa64a359974fdab3514c2f600605d599051f4f052d9c4b2afc78", +"T2B1_tr_bitcoin-test_signtx.py::test_information_replacement": "2b4790f40abf8aa4b9651c6171f675b5d1301011250340df9afe38ae1eb47a7d", +"T2B1_tr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "09d887437e8e14c1a1da002df2b88e45e87c3eccd41963c42fb6189488d6e4c1", +"T2B1_tr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6efaa2fc620211929dc44e6a76f35bb570356d4bd730de3b5697073afdfc1e02", +"T2B1_tr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "43a6a75078e1e69e5d43b4b7fd309821cc16fdc032f6813cbbe8d3214168d1af", +"T2B1_tr_bitcoin-test_signtx.py::test_lock_time_blockheight": "fcb03ec24bcf3d98a9bc931eed7251cafaf4479b8d651fde8421f807264ae2a0", +"T2B1_tr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5afc676d13e9f0c24e4be93511f6de26fec906d101660033e314d9785ac3a2e0", +"T2B1_tr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "220e087ca5a9224aee5641bea6c840ef9bb241648fb7331408a8642c03e9b14d", +"T2B1_tr_bitcoin-test_signtx.py::test_lots_of_change": "2f28be99239ba323955785c3c6ad1c03857a9dcf4605ae6a3aba61047bb899a1", +"T2B1_tr_bitcoin-test_signtx.py::test_lots_of_inputs": "4d5881dfc8240a268fd1611bd54f7d6c561b001eeb29d937527a90aaacd6fd50", +"T2B1_tr_bitcoin-test_signtx.py::test_lots_of_outputs": "cbc9bac26fba92d845ae5c8f3230826ce19e3e17b0995653c94db38ce1d65a1d", +"T2B1_tr_bitcoin-test_signtx.py::test_not_enough_funds": "66fc92d4b4685e1b6a3a980a46a78775f54bc02062b0f9ee92a54c280a43f5c2", +"T2B1_tr_bitcoin-test_signtx.py::test_not_enough_vouts": "aaede4a6407809971fd3df51ad6e6ec537b685e73077bf7500f9772f36145607", +"T2B1_tr_bitcoin-test_signtx.py::test_one_one_fee": "ad76f6d7b1a68146567d782651c1c5609d5bd92533397b7cd581cd24a06372e9", +"T2B1_tr_bitcoin-test_signtx.py::test_one_three_fee[False]": "13db7c095a4ca7ab8a7172d29a69a42d96b0710a1d68c82cc35a6efae58372b6", +"T2B1_tr_bitcoin-test_signtx.py::test_one_three_fee[True]": "332ee3233c0c074c7db3ca33f8ecedb8463f468a35253071ec68d00847917337", +"T2B1_tr_bitcoin-test_signtx.py::test_one_two_fee": "f1fbb12948d04844ce490b570dd9555b14070c018a94a434d1dcc549ce453476", +"T2B1_tr_bitcoin-test_signtx.py::test_p2sh": "5eb5499ed1a3024cf3f5d014bface1f341b259712fdd7915937cb3f4476c4ed0", +"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", +"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", +"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", +"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", +"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", +"T2B1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_signtx.py::test_spend_coinbase": "022d09fd013ae95fa80cb298930baf71c0992b03a094a3abc04cae047b2c1a39", +"T2B1_tr_bitcoin-test_signtx.py::test_testnet_big_amount": "c887b8852baba3cc6da1681503a723207afef8e683f2db14896e9406356b2f64", +"T2B1_tr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "47bca8b36ae4d7059328e725c0bbfbd6e2de1d76a921028692e2e19b295e9020", +"T2B1_tr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "6b9d590f1224f85de7470cbdbcabb38b0262079ec71503f039823a810393d9e9", +"T2B1_tr_bitcoin-test_signtx.py::test_two_changes": "df84c1a7f8cd4e51c4883bffdeaa3d3838da03da24c0835ec1b53ba553a9a36d", +"T2B1_tr_bitcoin-test_signtx.py::test_two_two": "a7139a55e83dc66dbd6542a2b2a24275163e52f42a895e47e6735913b19943e9", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "ad76f6d7b1a68146567d782651c1c5609d5bd92533397b7cd581cd24a06372e9", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "2406f5c6cdb574761e56abd4964004f76371711add77a0c404adf4d6ec0e37d5", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "f0b61bcf3f5d62fefa3ac9aaa238afb6906da6273c3ac2adb714cb2e357e4d0c", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "3b46c18f8e7b7d9815e711ba4e11d8ab683f59dbf04fd1cb38eb664bf0b96945", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "ad76f6d7b1a68146567d782651c1c5609d5bd92533397b7cd581cd24a06372e9", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ed078a38ade61a8eb56e2b6b57fe47eac496d9021cf6e0a1aaa4b4ed612efb8c", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b76497848b53bb1c0da4b1be65e4d8d8a27f081b99c6f149f5abd53ede4b376a", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "9175b4b2ef7316706bc615a83989876420c4a2323a9ef0a4027298ffe6152c0e", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "72783ca2a6ce171c72d7f100968178c731cd033eed302a2e0dc2c0cdeeaef57a", +"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ed078a38ade61a8eb56e2b6b57fe47eac496d9021cf6e0a1aaa4b4ed612efb8c", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2b67a7e7feeafa63b837d0f0e2def6cae66243629cc0b118ee10cdb62fedb256", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "34d7e034a0ce3b4ace9ae52d61868d5282bf4c9e2805e6a147a890cf33d9bee1", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "676636d490af14508c11968ac6ccaa21def0a29f0db7d7702abd7b041886f009", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bafd963c7af51a7c593cc539292cd764eed2490bc2e783b72ad69e6e175ffcc9", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "bdc0480a7825a37c22921f5b1fcd11a90b68da84f989c6eb69861ae1d4c4bfcb", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4f96e0ebfd23a298796bbd9a59a04adf54d7f383e4670099681ee18b27f2d0ae", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "af80a504a3b4b57f836857630e86104b3dc1bda550eca507267b0952cf3e0e4a", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "9af0e173bacfb3cb36c3b715ae7feb10d469e0dd694ba4b2caa7220aff57fb39", +"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "6ec700f1411bbea2ee1601c892c4bf59b9e3b759d3122909ad489e950b1aeee7", +"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c7af6c76fab906d6f1924c0e7486029d11d125b31ab48fbf0f7396214464e074", +"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "c01d311b24bb14ad3e94c03b8113c05786a679e9af048b5cba6e05c9a166234c", +"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "a4d8e9e204f0be2b27660538dcba75d2e240a886b7b51ecbf6e7a73fc0452ce0", +"T2B1_tr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "f2330adaf74ad4e3ea0880ec52068c752f5291b6481e3ac6038edec0cf36b672", +"T2B1_tr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "f75d805167b820b4fa59628df5e651d11ee2077a9935e1829d5f40ae249d7e05", +"T2B1_tr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "f2330adaf74ad4e3ea0880ec52068c752f5291b6481e3ac6038edec0cf36b672", +"T2B1_tr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "246dd9d18de78dec0634ab9b9764eee946ced437e8329764e47702bf5ae5536b", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "e5dc73cf67662170a5ade0645f1bcf204fb14d440515e4984ba373458ef09bbd", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "76869799fb9ed89426992f404b099d5d5b525372c8347ee804b9ec7ff650aa7f", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d469350a0b3495415809c900f4d00c03c387e047de5eba6ff11087e05eb37ed5", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "924436a0b00752c55cacf5de7b0f9493ec29d10f3f04dd98b0bd5cebbf127aac", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "bfd121df83749be340744f65819e7e17c45f20e0aa2ec1f1604d1873b390b224", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "52dd7e17cb2f36508c48653389f424e5da45e1384afe0b64fda99c349873e8cc", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "20a6e67b4e0547b38b4bab81a858c18ec9bd589ffa1e16acbd18cfa4f450934b", +"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "80b0d710675bc9005e42f1d2c42105526312ce0482cca2488641c51cb7c837ee", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "80b0d710675bc9005e42f1d2c42105526312ce0482cca2488641c51cb7c837ee", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "80b0d710675bc9005e42f1d2c42105526312ce0482cca2488641c51cb7c837ee", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "80b0d710675bc9005e42f1d2c42105526312ce0482cca2488641c51cb7c837ee", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "fbdeef2f4599d9e616062b1892786d72b19f94f2971169913d72f054555ca8b5", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "fbdeef2f4599d9e616062b1892786d72b19f94f2971169913d72f054555ca8b5", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "fbdeef2f4599d9e616062b1892786d72b19f94f2971169913d72f054555ca8b5", +"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "fbdeef2f4599d9e616062b1892786d72b19f94f2971169913d72f054555ca8b5", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "a25a1ba549d340344344be7b0e8efe6e13d927a9ff750f6d6b98f38a6a0579bb", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "f60f3e6ef92d925628af6902e755c27e20f61a5a66e4553b1a1cb3d80aebfd17", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "902e48079af8bea9bc73fa5adc1c138f88ac7c68af5e1457febe55f7d6da336b", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "902e48079af8bea9bc73fa5adc1c138f88ac7c68af5e1457febe55f7d6da336b", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "1aaeecfed031b445e19d05c508016c8fcb781fb9390381fe0fe784b9ea76bbab", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "8ae6130094b3c1b40fddb8b4e7e29050498135efe341cef824d64e8642fca4da", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "f63417530790298ac40ab8e0b17f14c981d0f68182a4cce9912e775ce74bd995", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "1aaeecfed031b445e19d05c508016c8fcb781fb9390381fe0fe784b9ea76bbab", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "afabe7b2620561340be4878fb34da40019bcb40bf0ed720993247546f4001f19", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "7ef426ca71bf949c0ae2b98e8429c40aaadac101d604fca74c49945bb0d6a588", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "7ef426ca71bf949c0ae2b98e8429c40aaadac101d604fca74c49945bb0d6a588", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "7ef426ca71bf949c0ae2b98e8429c40aaadac101d604fca74c49945bb0d6a588", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "902d659420dac55c0cddc15be023fe60ff8bbb1a01aa144ad87f37724b0925db", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "7ef426ca71bf949c0ae2b98e8429c40aaadac101d604fca74c49945bb0d6a588", +"T2B1_tr_bitcoin-test_signtx_replacement.py::test_tx_meld": "b6d17cb513a4c7fc88bd70a5fdc99fb0dc8c272312494df8bb80f2c0cab5bf4a", +"T2B1_tr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "bc0d658f2674fd353ffb94e71bb368cc5f1041961444c09dd71c5cba609c9733", +"T2B1_tr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "28052aa697116715c5d46b19875021a7f1cccce4f3cefa12d79948a9f1833508", +"T2B1_tr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "2f84ae0a5dbc256b2355c25b2255bcc3b72b90b4cb0375f6c4edcf262bb6c8be", +"T2B1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ab764b4234086283d649db36fbfad9e2f0c33ba4169ef294889c4d1420bd6f68", +"T2B1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "d2b4517e6034417e765235462633727496196f611f24a5deb53bf932b46f917c", +"T2B1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2080918a9b3124e4bc0f74b98a11d4d892e1cde7eb475680260c8b78affccd16", +"T2B1_tr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "fe4deb9248029a839af85f1605ff2d963a01d06a501d155d2e2e2486ec7e1add", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "287f86029f62057829b6d54a76835c8269a2d678c00f113b8f77b6bcbd30d201", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_both": "371368c80d10eb01daa2f06b727f52504fa7e99ab989776ea70c729ffcf33b02", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "50a28fd725cb49a02a056758193b31f873122618c03af4e67fdfb897e8ef47c5", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "ba5550f1a3e9fb7a10a6fe7c4e7be5bddc57d85fa40fc099a8e2850b1186a700", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "692a00734c238690fc209fe858365b8cbea5df68bbf53d98e06e72cbe3c507de", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e206fe030ddb544d2ee7f9036cb2164190b215df8c4379b20d6b21b183ca26a0", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_native": "ed078a38ade61a8eb56e2b6b57fe47eac496d9021cf6e0a1aaa4b4ed612efb8c", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d6561a85392307da9da57b90cbab0c176f3266d00167e99fc490029c9b8ccd98", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "dceb3287cdfc83ff869e4c21aeb945e098241a573d7adb3ec24bedf28dc1da6a", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "7da08771cb8a9b1d2afa27834d1f55cf908dee4d5a804b85cfb96fa3493a5fe0", +"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "676edbcee1443ca92f0213dd17fd170c2e7ff155831d566cf30bd8c3a3e78b53", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "38cc423f41979e072740333456866af7f8e863bdc5e88af184f75fe9444b1556", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_mixed": "1094b1b5681a9495d28d3910f8d747339c39265e70ea5657c1831703e96ba829", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "c554c745e9c4453ae2df45f1cea6b8d6d91210103ba688b9bef7509bbc7b6f66", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "8e422d509c1c6ed9799979a54500b80e705dbe03e24099ee796c6e3f42fbf53c", +"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "f8c9ccc6a16ddb2cb2d6f4909b7ac04ee9ad9701297765bfa15a1dcb826e9d14", +"T2B1_tr_bitcoin-test_verifymessage.py::test_message_grs": "e26bdb28f20055834c6b64d03407714534927dbebca6b132432164c1065c37bb", +"T2B1_tr_bitcoin-test_verifymessage.py::test_message_long": "428179e0a0e5c14a4d5b5f29ef63d928747382985165033f4d0535506e54e7d5", +"T2B1_tr_bitcoin-test_verifymessage.py::test_message_testnet": "c977a03211a79b822f458137056020484f4c772cbc9782bf70c12d605b39ceea", +"T2B1_tr_bitcoin-test_verifymessage.py::test_message_verify": "7cc6273658c41152a3d0ce974e87243fb0a7eb452e3ad581b42fabafea3d2344", +"T2B1_tr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "5216f5a875bd627b1c9cb84bc63ea9f80fc3f98b275fb1b0d8a0f7cc6a69c147", +"T2B1_tr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "a2db0e2eac7e530550df465b385b995b33f7fbc4cc999c8c155b8bb5085c53fa", +"T2B1_tr_bitcoin-test_verifymessage.py::test_verify_utf": "b998ae6a63fa23294d7629e3eb87b253196cf8a1a9e9f0230592c91620cc6374", +"T2B1_tr_bitcoin-test_verifymessage_segwit.py::test_message_long": "71ede99aa8d230cd80081a21a57c355cdfbe9cc24a8a28abcf621ec2147ceee6", +"T2B1_tr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "0033f74d2ab0b926611a317c0f1da4dedaffaae1ce923005b419c7dfc8b132be", +"T2B1_tr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "9ffe1b29adf73cce57f078dd86bbb6a86675cb12ca029d2b48ced4f7e37adb44", +"T2B1_tr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "5f23ac00c3215995950587f780cd2141b7d99f5ffe87780622feda2678a06509", +"T2B1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "57c125c29b7599c282ec72f2f476668668a91b4f67df809cee50c2e6cd9e9558", +"T2B1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d46dd71dc13a52cd9f66fb5121d44a6d86b67896c5fee939b1e7a64bfe33e5d8", +"T2B1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "484a7c6c1d30ff00f389eeb8fe2f6372f2b6018b54dbabd7a9d26bef475ba589", +"T2B1_tr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "bfdbfc2ebe6ea60751f0b173149d61eac497211a94fc419fc1c0140b04dfc5d2", +"T2B1_tr_bitcoin-test_zcash.py::test_external_presigned": "9dd3734d4a624f47e843b685a072ce8583db1da8aa38d71eb4c5e4fd545b2833", +"T2B1_tr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c87e3aa4c4a4d403507017d2ea768bb5b80b39c731b727d7f77980d2eac6d900", +"T2B1_tr_bitcoin-test_zcash.py::test_spend_old_versions": "29e6c324918cab19fc6a32d6eddd150e6a1dbfb3a5384189619bf53419903b4c", +"T2B1_tr_bitcoin-test_zcash.py::test_v3_not_supported": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_bitcoin-test_zcash.py::test_version_group_id_missing": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "17f44a8bf09b4a21dc67cb4b7b350f842cc94b56e166bde636e567562980345f", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "2d025fb8f1df8bf17e949d966bb60ced34bd70371979e677cb1ea0e6deb69927", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "2caadc7981c1b688da7a6e6b775562b9c96e6cd174fbac37d57815e9e999e019", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "ae39d5965bac1d727d80b7d56780c06935bb67c6d14f5136b79818ce4ec63aa3", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "991a309ae9bfec75a0c76ec483ed0d64598a1cb0ec08abf404cc439e9df7acc0", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "09b813b8d2cc6896c22b795d1473b17fdca49bd77d6229abb86e2108507427a9", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "850fbb0a5049ad859664162b796becf4c6ee247915a793589c9836579f1e22fe", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "eaaf7b7250a8941f7d459a22f7fec72be920b00dfbcede100508eca33097206a", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "def75e8ed15f5e529926ced34cd7de6a57db7094c40cabdcfe6c7a5860babe34", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6844730f56f2f6400593bee6b090bc9676444f002e2a531b65407b52e1d7fd4c", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "97420bd01edec5aa7d11d7d85bec770afc9c9fd168f3cd2c0ccd1df38fc386e6", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "97f0862adde365150755c55883ea80e873fb1acadf300ddda71d281c1bff0374", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "83cb0d3b60d26756f4619a2ca98e00931d9375d8d931b73db9682b0c7c543c1c", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2f9e226a31f5d60920c0af0b3f1a1aea457391b2bf23f7278cf47229a5d4876c", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "96134c33109ab369b22ff433bcd7ea69166c1dcf23c10d2994e2b73b6e26a6a8", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "4106d46c56547a8992ba0af82850581fa600ea4ba9c4b8a5c61db2c1f2d150ee", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "39adea2b67733d3359bda308cb0fc7f36a248ff1c417bfa43978b858d50eec15", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "06793ce627df549c6b9078df27192690e0bfdd675f102f865c4622a7a58ae8b8", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "1c08a75ea57d02d523211a39be674330183f2fefbcc96cecb6c913deaf915cc3", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "aa754880cbe7e41216fca1b0263bba3167efda49c800514b65e52b5a034eb36b", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "b7fa949daa349db49be7492c25162fb6f7d1716d7584ff78980596f179a41049", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "689f59a4f36ec152cb55ccd83399f00894457463b9c76561de696c37f66bb167", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "52322aa560a6357533e6c117c1310bdf5e4cf5e2f9cf89e79d441f84f1b8a260", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "fcfd727a23d19f28afae4496ae24a00096bbe1e822225e328458d176e64d35bd", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "54a9af90b8bb69a9d2a3e8c36e3442aec43bdcd45eca93b6013f4f3592c024d7", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "09bbe5d2641464cf9d6b4562abe5aa1f1a5a47bd330d2e13911092921503b6ed", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "6d62129e2e1ae9ac727c60287cbec52f95abf8e87f1e1abb99d0c9d0527fc8d2", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "23f12aae7eaf86d38487fbbd3d3d3ebb614def95d869cb96946d68e8668aaaf4", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ffc3b15ca008f490d4a5eb96cb2b815f89a5cc64b2d1e02bfce014b88ae8b447", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "4336763ac627abd637764d3cf1565e1f7561824848ca89c7ad28266a2e694733", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cf6a1b560539bf53d30547d55badd56d905849f0859c2b6f9a1ddef18da3b4e2", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "62019cbd737b86b028d489ecf723696e4ef729b3721c7f6327fb59440c60099a", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "983d13604ed75333f522feeb76767281e807859ff72255d558147c7e361781da", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "522cc820c161c2f0a217256c6945fc4ba1af496da78f0a92175c06ccdb09687e", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "19120967a176cce52c5b852b653c834ea7a6686b471538d8d5ad1bc3bfb517aa", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "caf966a082cd7023bc31a4c1df7d092bc2d56ba5b975c2dfe707c41fa2150c92", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d14de0c1c9d417880cfff82386e7c46afdde4fd843ba9108519b74961ab4889e", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "325fd876a972e479261f576688616c6f4228e85fead9e88bef31acfc44e61f4a", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "aef3057b9456e5c893757a8ba3368402e17e3208019688733b1c748da799d42a", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "fdbe8f8c01a18701181db16c19175357efa820d98847fd41d9ccefa1c2267deb", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "0cc81df477fccb4b8881694be85bdf84a66cbb5473746c2f4ca4889e60557519", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "b8c0cf04a81c14f8a335df4d098c61d5dd509633da329a1d79154f4058613f5c", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "dd09568f75dbc08d96ea18b30ce65a199bc3ddead3c6f2edc7dbea0a97127dea", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "bbc7707038bc2b8be1cd0dab3e61e5534252dbb273c1a1e26caef975a37e832c", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "a72c504422a4193afd892e56e8f1ddbfca9dc5783512b08639c84861d3b8a3b0", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "44476eddcd575aac7aa55117ba6411efaa460c13b7727aad1a7f2c22a83bb879", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "63b70de3d65c2a6528a828ceea9730ee6261a2772e84260665998f1c3cc72f82", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "2a5b6faf04a516b3c9575909825435566f72ed64ab5a70d92e8531304d356362", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d993643f928b59025ca51af7f5cc3ef6eb72b66474be3122c89b6aa9e0306a34", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "8ccd6ac9cea27ccd767cc00086e174e3ae56f9d0bad12e1d668237543ed8274d", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "60b8711a03f594d436880d93f3a6256648992eca91d2c0587ffbc9217c4d9195", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "e187728cec200148df9cb1dc9afca615b9fe3ee50b235fb1a8db82fb8191060e", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "dab2dcf2a04a6a97624cb930373419b4509358f1565b7053fd937e9c70eac74d", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8d549feaf4779ed274cd997ef52f73fe9fe8a0ebedec3ee812547feb40deef44", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "6676781603785610e426a18b198cba36126dd4e7cf0d94b986a0d29035b72b6c", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "871c9cc431f22eac68f2e2ab03e06377f996e55515c358ae5ac6300056d99965", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "b0c10ca8ef7d6482a2dec37996826df31bb88bc8eb094923e788d2c626a4b5ee", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "3aefaf6a9bcd6b9a983254a09fe5832731b741f8536bc9b3c1d36a6c92f350bf", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "039f39349ca197641c7d5b5599f499daff91449806315431dc8211ce45e4a2ce", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "79fb0de1b99bff6a75798b7b83376545ca2bdd0a5901771202095b137441e099", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "fcf1de37b53db7d1b106c097675189d4c4cf5c63f0702db63533699eedbd0f1b", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "86fec857ed0e30e99d50189afa277ed95e84d13d619896a5facbc69002e1fdfe", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "a624e4d36677e00e131be20a931010ce72fa1d9c7567f3530498cc905f46a97a", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2a0e350c772d463dff9e7c5b8134e40bf6c47bddcc35997c4fb9e7b46804fe48", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "1017fab8c91ebd59e6db4666bfdf88d500d3c8e42eb9051d64a6dc51859d6958", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "e962a020ac2f693a316fa826cbb96a3608c05368e63fb422b6a6b5b11fc16e99", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a3021c3696728c91117d8b6acd6b20617ef1221fbbd6363d2f66748fb5940324", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c8faccb750ffac9ceae792b6dd97b1de7304138c3b0a815c730d0bfb568144f1", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "6819310eba9d9d8a09d0d1324e738f87d68e9d14b2931cf3ab01c5424bd989d5", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "33ab2ed579145b3de05ff43a196adadb11cae8506dee6118eba7224d9f31b2aa", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "bdb87b1f3c6f2fa08d2200546b8082f4128836fa4f1b1d348d4bb0835486be7d", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "42bab05e30a99f0a53be14d66105569d2b047fba37254185185a04cf7376cf06", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4d99117edf4dc50a0869b181c395f7dabbd1c1931be97a8dfaaf14a1d7459f58", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "bb188d64114ccae520b832d333a4e393b7406f353db60c16c89f4468c801b958", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "9964557537a1fb85241014bc1fa8f135ffa5025e9a408285bd2bfeb6b7696b05", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "7a5bd94dbd1c93701761925411d419c29966545d6d38d8c58580a4c1822084da", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "2c5910bc96b418538a5308b12ac865b916e12277fc16fb0243edddd928824422", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d2c85bb8f81e21393c1c35e80809ab71237f6f4613ff581b5cff25e30ed57b09", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c80fb83125e1e27b533f0966ff2578bb9fc981bf12097fa8911212675d6e3d64", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "457461c8c519f51fd37e187441c94cc142235f1b47fe281dac42b21ad176cc36", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "78a6f648057f9446b115b455e1c29957b2c22b6d50c6521c48ad05081d9b0077", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "35f62dca00f812f243d3c08472888006a19ab634f47b52eeb2129da7791a881a", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "279de8e1978c1fa45906d14d0a3b85bfd8fc89ab766ec0879f145c50be187b95", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "d78ca856456178c23ec06835ddbc81b4ca99360b5e284fcb85cb0af0136f39e4", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "66addee8acffda01efce60b7f520a28113fa6a59fa69e6ce6f6f80a9f379cb29", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "fb2103550697a1f12d88386af2235768ea77037d7752ff2f944be28866b4340f", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "b0cea5a479cb3b10c812f8f82a3ff31279207344ccb751312557cf87a2ef3862", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6a3a20d29c221bb66fff8cd87df57900c44ac57494e410415212808e30f22420", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "105a34ee0913cd101ba3190734f07be0c2c5ddfbe0e99beee336ee80ffe03f6b", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "3268f322c3cd75c554eed776815ea7354ec01e757e03deb660db37700c35bfc5", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "ea941fd10e62243f798c99f37b4f0fc8ca3ab6d28665062dbf060ed57e7582a0", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "8d937852830fcd13990bd807a688e0073745def5adbb95c8561ed800f9e248a7", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "65a6d1edf3220384b69ef6f0f854113f888b4140750e026ae98211bea8a59064", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "83fbc228552c0c43bb4401873d6daed6c6f880ebcec487c4dabcfb7e5d44a451", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "d7bbf60c859feed696a6842ff9d4ac2e49765894051f24bd1925d4cec1e7cf29", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "64c0b571ec77e37ae8aec2bb290f3eb5545be5ab5509b68b418d6e58a013a7c5", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "f16594f53862573d733757e844b1b79dda8fa59b8d7ac6bdefeb46b01a3a4f27", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "ec97ece3fd30f5f46c7d840b9b4b20d4ec0b56844058fa2555ccdc4c2b6c1d12", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "4eeea1c97725f2521619c1296b4321a42a42a9d871b9fd6a2935f7af34dc986b", +"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "da7f332c8ea1603ae83b2fddd1e07dd266e2f1401123eebd612ef0f596e8c9b7", +"T2B1_tr_cardano-test_derivations.py::test_bad_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_cardano-test_derivations.py::test_ledger_available_always": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "98e65f4167b7f452f9d9bd8ec7cd8c5a98abadde68b7f3ac4de3727952d0dcb5", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "f286718f832dd9941b1a27b2863279917bd4e39d5753c61200b340a251d66ccf", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "9038d0471b82620572d2d10a5789e09382ea40e47be04bd2da6c006fe203b89d", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "4ccda2d8b89d22c738998337214fb71f4f3ff5e86690a51b31c386d539d9ce26", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "33a3d84223f118a2492b0bd48a6a9228082105b5c39fa8fc0524afd542de3d9c", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "17e06af857ca2077f9c9fb463f754ec5a50ee7e270215e59727d2c2249cdec08", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "b69d4c2437971c18158d05b31439074e600b2ad8ff1d218632ed5e26aebad026", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8cb6eff36c84e235a4940f88d45cea6e88c19d89c6042d3f174ea22735040711", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "629275465d908f880ed024caaba00c67d25a5ee609f53be90bdbf5ca1290512c", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "2ef1c64ab1ac8e33a79682f0a5549569b01e28417810771ee952dbcc06fb9fd0", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "a0f187d15d401d9996e3ed829267250164448adb41519c211ed3ade30a1043ab", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "ae9c010fff352459b580d008712293980ab8d4bb5628d1c10ca9e9a2dc0fe459", +"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "55b8dc39586274b56605e770c44b55778b41588c9974f5ecf0a98e531c60f963", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "dbb0379953b20df4b9b3fc117ff0a58f703274d1ac7908037e1891477b22130e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "327557437b233a962eb7f3946b352567570918737f1ef61c0b1108490c6fbdbf", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "aadedee367b854c3c59c9352dbae81d67739e761dfb81c5b88dc15b78185ee6f", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "bb78dc7efd302c813fddd91feee43e4511d6ae950be1e2fb7a9bc2b1e15b3043", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9bbc07d57b609274143223522ed9a3ea6566a25ed3aa440dc7a2909cb33b5ebe", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "b91db1a60c136dc1c0bb63ed03847b60fa11e4e97f53f1f2ad0087df779412bf", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "8e9e56a732eb4025a3eff9710aefb37961d7a98d5916a4c1d54942b2f4aa1b14", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d59a153b7fdbad220218d2d04089c162d0103099b8cea9ef3f505c1dea941b36", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "aa110e1483f6dbe57befde3eb55eb7b9019126d6117eb207be7e54ffd5f1d060", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "eca2d10530ca962568000f25dbbe682c9c33521f274a1657b0f7091f62a45087", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "10d98e323ae67defb2b48d57fc595d541410487936e20aa11efd9eca46465a8c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "587a731c04b7431129114b8f89a06650a968fabd28e4eb0a49ce2510a08461e1", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "587a731c04b7431129114b8f89a06650a968fabd28e4eb0a49ce2510a08461e1", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "681e1275849f82bfbd6c2a5c96962876ed9d771a54539eecdce65495bdb8ff1b", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "a3cf86549a36211edf75cb3ef10f11e70b01104653480e5005fce714fccc3d4d", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6f22eef276fbee26f0766bc59fe159073d0459301cd1437de37041b2dd93f8ca", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "4e916cb00a620594ed97e27f3c257a0bde59f479de400dfff0d28b26f57f1986", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "9ff3716a1905fe216e919a0d01e408b8fb6ff952eef83510d88f8fcbf514db0c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "dd11c66421e8bd58db5ac52afb0f38cc35b0adf91f877a714d004bf8b3635020", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "d7945f69bd643e6537f738219c85b71153f886ea3945e4cbb4b7f85efe60c157", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "adff652c677c676cfc018e9f61f08e43ea8b4c0edef5ad3148eed55b4f28d78e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "cc98e16a476eac8dcc3e164cc5313f0299daad29ea66988f79583cf0efdd6e97", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "9ff3716a1905fe216e919a0d01e408b8fb6ff952eef83510d88f8fcbf514db0c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "dd11c66421e8bd58db5ac52afb0f38cc35b0adf91f877a714d004bf8b3635020", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "65fa81ebe3d4b8657ca149e4758f2d73da5ec751ff7e77871e8acaedadeb7f7c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "b6562b88826969d36ef6bd3b52255b395b35e963c2c3c6faed1e87dc167f87b7", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "2d454d8879c1d73a741c223cbd98cf59193a29dd6edcd8917a10af22e2e5fc55", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "1bfc8aab509d76bfb16c53c84749f42a5adc1a318b986b973bb1a8a20d052f63", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "35fe0a17f554b2f25bbeda019ff412c33fd82600d171e04952cbc3e7f25b2172", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "87d16ad19b1a1012234bee3b9407cc1c690fbbac1314c58189e9e72c1364378c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "e65e1aae0193d53aaa9766b1985520c093889dea0967b4d265494a11b1e21c74", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "9022da9a02c8a34aef8a459214dbb961918f27985744a34c7db7ab992e8d2fd8", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "5480b8f56946959bd37000351992530db6734e6ed5022dcade741a530d43df50", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "b446be5772595e9ccab165efd4688bd0df9a21d88a94484fde9ed62470a09453", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "cb3985268e013692604b4f658a45bc6b99596fd5b29579b980f95122aabd8ec0", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "a7088e8127c531a935027c532af197ab0d2ea43c79f5fd284cb85b790043eadb", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "1e002c7f45ce65723a6a9fee11219d14cebb496cc6696998519c6da257bc26e0", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "99ce0f1e6b92966dc5c2c2b5af1572f37e66f02b4c7e4e575759ef5026946d49", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "3d3665e6bad49e956dd700a7d5e0951b5cb7255c43f03da5d4aa035b4ed7fd94", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2620262a567bc2b9958f5bebd252fec38d1e0c666261c69c9d0f98b8cc3bb997", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "a2df0359e2dc8bcb46e9e239835546d79ff3b1edbc91b6fc968725ce45be062c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "82cde8f1dd7decceab6e1974e96f7a41603ce6be57e40cfe7c7809975c09c6a4", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7f6f5eda16b68879da0b3328c28c2012c8d36a36a23b42b0ffd26074a69ada4b", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "a32cee2d00e1649c4b5daff8fcde7ef96786e1ed5e51059e0ac9e0552fc6d668", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "bb3fcab35a8914ae8b5a0ab58c4aef3096bf5fc3518167dfbe5ece2e1cd49270", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "632ccb903534eac7f109d209c403553f79e4a5b566b363c371d96a153a5bdd99", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "16ef6de29f574de520f85642e0848c5751beae370c5fc042185895f210ec286a", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c2d3a9cb5e1695b6d67a390be4da1e47a3928d33514b4c1fc5385baadc5bcd8e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "5066a87425d1d22a1fcbbc226c4f08ff5594c0ec61600ab078a824960508a7be", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "2b2128f0d905fba5c5625603e31ae12340d5f53c407d411eefc6f31bbaf5cb7c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "285731615d9a63b19bdf569c2eb6660e82b454e4f75aacc2c1ec24a97b0a22ff", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "5cf19beae05beedc949fd504762f451ecf6aa8a72b2f2157a420fe96a23a3b65", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "4c0f02a229f763a1c984fce856da0445694b8ce9aba7374861951a22a22faea8", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e3b0eb65314c1ec041e63c9003b76460bad91f6dbab561d0aef022ea31dd1166", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "33a3255ae23326cc8434db838883db2350f483f0d7c062c1a9b0bed9c7dc318b", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "49c5115503e7fe48f2dd9c16a7eb56b9fa79cd22ec46114ab0f6b9a8a4ad715d", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "1773b014cc69763d115bc3e135bb59daca144ce20bcda5436df9039d2f259b08", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "3bc25ea94550553ca6bfb0eb46f3cfe3643bb9086717af18b47fc3ab1359d2db", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "49ddd19dd505dc6803a4b64d03b10030e4bf78240939b2832e18101ba2609e98", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "f4bde62b320edc22e134199e1a7aa82bc4d71ce37da36951da7bb48efb8c28d4", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "03cc684ee7aba60279ee9ec46c012fd24d515e2f43ef65bea62f50d9e44b9ebb", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b42614b4fe37f044886ff5abd99e0ca4d5481126fcda52f7f22af4f8299de507", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "05f1383560161e1965519783ae499a231c7c9fd780ceab51ad66ed3cf65c2ea7", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "759e44827c9ef479cbbd95d3e28e081e5fff65c7e0310b79e68d804ccf586d2b", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "eaf3937c7429e172c5f517d011c7c1fdacc2f08d46e5a714d47b7dc0e4750531", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "e3fa76e48e956a0d967a44224e179e24ad8674a92d5994b8030e01548a70a5c3", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "cb6b087c479f23f928e7d7ad5159395294e84eb822b2f57f9b878fb2d6157035", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "eb73ba9dfd84d2a219b245fd10f9acc899e91afd8115ee89bf9fbaa87ac67b82", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "6b4e0d62dd0775e427c724be414cae636c332d31294bc9e642f843f1cede541c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d531e921582275e4265e5e7e5424abebbb3431adb68f0b2b6156fca3aabdac94", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "ed94ad57be995be256c39969af9d537c53d421b4252802306501e496ddbb14d2", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "25e98ce808225ee5a669d15b68032abe7445a6bbad6b859997a3484dc8a991db", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "3e1963a6ddc240f21b9d5ff2f2c421b41e5245242a9c6dad7696bd0f33cd987d", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e8bde4c2a9538980d6ec558b59e8640b9f3db05cf8d9b7e734c3c5cdc3ffb13f", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "6f371a295079ffac3ee9c226082c1eebb7767b510e373b52d70b161aa8121082", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "1a4883d908325b5a83983269c1663fa72a24ee0dc45bc24ebd5512412bda1470", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "1a4883d908325b5a83983269c1663fa72a24ee0dc45bc24ebd5512412bda1470", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "497317c40a978a6de28d8aee57b0826070877098544cc893d682bfbd8d85b21b", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "16d622cd893239e49fdb24db9b92e600a4170b68f680074bea38c0080344d8c5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "16d622cd893239e49fdb24db9b92e600a4170b68f680074bea38c0080344d8c5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "2c0f44de34a8d364b952599ee1d07cfb511f8b6c4dd42d133513229351a4244e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "ce79a48ff1729768f8ecddc02e013c4ea930d8c4dd28b7ad0c1f86e5917972d9", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "03b4cb555ddc3638c9eeece7bce5d06598f5d29acb2c4269bf9463269105ffd9", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "c7bd33a8e8c002585ba93634a26fa6911813671509692d80edb2e2a9d9576a54", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f338df01e914d33f820c6c6cc92c6d1b1009616053a77a04b4eba1b7836e606b", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3adb0f42c130dc1aad33ea81e69531c55c606cd9b1744c0501c6aeee75a618d1", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "7882d6ee814dc24ab8d3a1f4200d4c675fdba87122779c247dfecc86d18cd887", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ba605e90353910346b78582dc6ac594ed566cb2b2e7fcf414e8bd45f2de71fbd", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "fafe0a1f729b504dee467db16ef31c947d9b8f99a023f850abd308efb03982aa", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "dbb0379953b20df4b9b3fc117ff0a58f703274d1ac7908037e1891477b22130e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "8e9e56a732eb4025a3eff9710aefb37961d7a98d5916a4c1d54942b2f4aa1b14", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "3a6a248a2928d5bb29d4378c9943d6540d0bef77b45f5119c851005820be7b9e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "296fb204895ef892cc6c7665c60b5e39b7e919c9a19c2c6e063f5631ccef6d3e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "296fb204895ef892cc6c7665c60b5e39b7e919c9a19c2c6e063f5631ccef6d3e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "0a5d494df0183fbc7867663d3d9a1b6ae05c57e49bfa91c2eb040a4b4705d31c", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "a4d0909854845ae044b5426941e3b622e2552c7792e20ab721e95c4562c843c5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "3f34e1dcde5b68ce030f5425d8e958c8a1f28644f14a2705cf9d9a0d6c068683", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "5e88c7cba8350db998a5f4c7b5f84810a58033c3cefa82fbf447efc086375b4d", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "f8f5fa91d39bf869ff9ddbb478b327a313623c988b41021652811577450d63e9", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "178ae12f37f61b713f4f21fa0e592e251fe25beb77d8619f715893264b75c741", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "6bcd043a073f5ff5db58ffbc86fd1cf49689754e5daf8e62cd5e2c38cfb13dc2", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "6bcd043a073f5ff5db58ffbc86fd1cf49689754e5daf8e62cd5e2c38cfb13dc2", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "6bcd043a073f5ff5db58ffbc86fd1cf49689754e5daf8e62cd5e2c38cfb13dc2", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "6bcd043a073f5ff5db58ffbc86fd1cf49689754e5daf8e62cd5e2c38cfb13dc2", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "5e88c7cba8350db998a5f4c7b5f84810a58033c3cefa82fbf447efc086375b4d", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "8d0d8cdd35af3295800256422009a462a12d9dedaadfa2b4c0effe8314c560a2", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "bfaced4877ff465da7d4a3e750306d4eb1a5d4adf90f9e26851ee07ce9597c09", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "088f7e7374c3392a3bf22e0eaa45ff5acbb7f851362bc72a8b7bc414ef5a58e8", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "9257c718d6c8c2e11b597c84e6b7ca16bde410daa32ff6a5cd3357b91be4f994", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "7d5650b02b02d40f6f8960cc31c1924e7bb7b5490811907ba9ef356c09baa508", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "0dad35bf0ae2df276d74d7df29ee3c5469e05e99fb7d2acc86f7beed2bbc2861", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "92abf492932858849d82e1aea303786d3a82109479450e3d93e4256cb6897680", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "0ed9fbf7b7544128c45f55c82c3d69ca17a77bd3c93d0e7571934a408db1858f", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "bfbdf0cd20191783196c0e7fa4be4d38d97831c968f8d3af38f6ba8b500dce17", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "7e9f23911d9c05359970e3f6811a98ccb323ac704a77ddf11daf936884c64d90", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "0c514fd41b5852280e39a5ef7622e22d52eae543821cca81ef6cbc67c3fd51cc", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "296fb204895ef892cc6c7665c60b5e39b7e919c9a19c2c6e063f5631ccef6d3e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "b4211a3b3a34e16fe7c5a74d13b79ba3dbf0da56fe43a8a44c7df69413accad5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "ea09b676de741578adfa644689fc7ed3019de0f96c31811ed3fe03f0c68f886a", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "d5064ec6b55220302226acf0cf21b7057409ec08a9eae592f15a99d65fb05257", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "200546684be997ca1ccf7c0e9a090885a8c39320deb6aa82ff9fc39654d954a0", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "01c5a4634bbfbdc5329053ab5bae6cdffe1477ec624357efee0a697aafe243d9", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "7b1465dbfc9718dd15517ea60167af1a7ff3afa33ce300fc04fefc7ef9c20a77", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "a7d0886cdd77f302ffb5f7e929b7e315ef45a8955ce72a79c9e4877e28a51a7e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c6caf460370ec001d02bea7dafacce11bf8f462adf3d84189523646a20a458e7", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "dd11c66421e8bd58db5ac52afb0f38cc35b0adf91f877a714d004bf8b3635020", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "69d4f5c42c761b986869f434b593155e19fdc9f97f81ada0baa2272f69b9d28e", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "29235df092866e02888dac3de3b97f6fcefa92d6501507b9154fb11ab3cca439", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6f83388a8ca8273897b80824719eeb2e188a84535d75852c394b1aa2f2272723", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "de5145b917b2e37d88611a50f22b54aa0724557a4573272506fae49bf9282d88", +"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d33270d95bf227424a538e8ab555ae624c0f04801760dae2d4e647c1465c8d17", +"T2B1_tr_ethereum-test_definitions.py::test_builtin": "20a829ebb04d24d67186fe9a272580083edfe0c988d106d94050e46359136942", +"T2B1_tr_ethereum-test_definitions.py::test_builtin_token": "b8178b0411c92d94dbe9d01031958bb50a85ee7a6d585db2f325884836db1285", +"T2B1_tr_ethereum-test_definitions.py::test_chain_id_allowed": "c4cf05da10b089f50a100e470dfa33dcedc7cb65561182866594677554c4b676", +"T2B1_tr_ethereum-test_definitions.py::test_chain_id_mismatch": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "49192d762d8dfa61af91e60097296322cb6ad94937df35fc299fa9dce951a979", +"T2B1_tr_ethereum-test_definitions.py::test_external_chain_token_ok": "05db28b7ce99e9fdbc04658a3c1fe0e7f6a0b0d6c38c5d83e890f9f3d8cd447a", +"T2B1_tr_ethereum-test_definitions.py::test_external_chain_without_token": "1cf32b253b046e498f08282c5f2bd6206e542e0fe022894d0dbe15b02b2ce487", +"T2B1_tr_ethereum-test_definitions.py::test_external_token": "1f33b0a5a23e1d93592f2b781416348f574b09ae3ad3fa5f3e554d36fd5e50b3", +"T2B1_tr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "4177ac366e8e176353b0b7734775b86e7ba2cf96dd336763005540075c927ff1", +"T2B1_tr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "8e8a1ed4e0287e985e9e7310897696f6fe49911ace506e11eef4da314c310c63", +"T2B1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "0ba57273264165c2ad85987e2ccbbbb24bd912311f7ff3086c3a25b9328ccb6b", +"T2B1_tr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "0e900c254865f55dd335455c24fb3b800f31bebe2db4cfe660729cf894ec270b", +"T2B1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_slip44_disallowed": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions.py::test_slip44_external": "fb4470bd081a123f50719115e85392943b4486e1cef8f01f74184844aa1637b7", +"T2B1_tr_ethereum-test_definitions.py::test_slip44_external_disallowed": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_bad_prefix": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_bad_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_bad_type": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_mangled_payload": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_mangled_signature": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_missing_signature": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_outdated": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_short_message": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_trailing_garbage": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_definitions_bad.py::test_trimmed_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[ETC]": "55060b8044c8c031724f16d0cf7ca21e9c7527e9b83e7ebc6821baaddedfe680", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "0da34489456d35b6b708ce6f84f35a4c41ad8a58fa914770499545bd8b2d2809", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "d5c624ceb5e5a2e1ce8c906ac2070d2c331182a5473c45c3bd153c6597b9a799", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "6b8dbf4787fbce076d531f06078e87b616a20a4ee6005dcb4175c1d83977fda9", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "98e6ebf25fbcb96c1f2c9fb94f7be90b40e5d4d06e6073660cc9749e3475203b", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "9d6fa6b803dd7cabc58dc674ca04bca458426fde48d1255fc2a19381b878c31d", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "7a70284a90a6a00505684dd53e82f27c5f399a6a63b809a6a91d7e394ac75132", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "438cc432e0d387f991089acc49c001b7a4ccf2e3f076b4611d117d129daa0071", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "f810fa5191550b548141fe7446d1fafccad8df1ee751195ce54c64ff631b6643", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "55de47d838fcfcc2b9ce6172bc16346ab1ebc7ae9b3aaa073442093bfc5ab202", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d494dd8da3189c094df59e04d4f003db4593f177fbe0d5584e6615cad047a847", +"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "3fedd778afdfe4ad3589f9c43b6d7a1aefb97b7ec30cbafd2dc24d6b4bc42479", +"T2B1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_getpublickey.py::test_slip25_disallowed": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "6ff21b17cc3f67ada2e4e9bf4b5d9445de2f0546057ee09de91eb9dd19d9d5ac", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "17c833d68030d1f593f4046c8bc4c0bba3636a8446e640feb2c40f141751528a", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "da3509e75325408e0d4510371a12910fc836193c474016b13ee660918f9fa3ad", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "ecde9b154768fc9cda74922d62b3ac3b595f8d2ecd48c7be7c0edf5331de4ce5", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "7d94029e9281eef1e6a76a7eb615feefc82567febc61e7118599431cc3aa67b5", +"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "9afe6c37854545d21cc5992d18b91bc2f424831c06aec928a950e99fc1fd2e81", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "623c1afb940b324fde4b7351115af18754c2fac551c7dbd3017ce8e710c052c3", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3d7923b186095df54a074c6b36db878dccd6a76d0adfff2a39df66a758d938bb", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "ebc7ca3d397e109e90c1947aa8e502bea1d1b2e6d7840be71646368738ce83fb", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "1207ad0052e69cb782293221b1680d8d4531a0e172ac656a449364d66f17bdea", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "cb10db9c29771cd177227b42ebcb31c6b6761d6c87397a8ab9b106c561ee2234", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6a460a4a23b19d57a53c2f8c04cbff774f0507858693571be470b3a3462c041c", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "26c98a10fb7cca1bda193b7723c5ed66e320c6624b7e42ac799d4b94b29f8a88", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "64c34e77a09192e0aa8000779c1e76f245abe3bf524303baefaef15c976180d1", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "9a66bf511f28e197382616f989d209581af163993ce0d071343c4570a0170002", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "666cf57e7b2ff7cd280a544e208ebbb05b82b5628a7cb1954718fe297afd7e86", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "a60dee48070328a34d07bb51204c2ad5d69f93d43845a0f73a4d1756aeb082ee", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "4b2d0ed92e67a20c624ba2f34c521bbc8933eec648194c922dcc95f42c3210bf", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "d035c65fde35170acdb8aa977d5a02fa86cc57d23009bf7bdae548e7e928dc9d", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "1dc9fef07f7ad946e2b6eb109e34f0b8a9dc57c6c7727f7e3efc160f2ee39c74", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "55ba90ba95e248c5181a9b4e9b7222c80bab7bb078ea3f4de65d95c5ba2f8f80", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "7a9fe11da46df36a7c851c66f8a11b071095386bdefeb6ec9fffb4c14beb342e", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "c158f1ed4cfdd867e59bbbac7de0fa4f1cd6769d27a8a0d5b3a7ae30ec78b025", +"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify_invalid": "666cf57e7b2ff7cd280a544e208ebbb05b82b5628a7cb1954718fe297afd7e86", +"T2B1_tr_ethereum-test_signtx.py::test_data_streaming": "b448f356eb7f6a592ac3e8c27b492373a36dab90bd1ab7eb51ea312f41200503", +"T2B1_tr_ethereum-test_signtx.py::test_sanity_checks": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-ETC]": "5225eb211d705fc846f54974e64bd0dae303a27a59da24e8a010e9d60c940540", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7ace8f646256f54e0a57061f84427026189f851386b58406735120e8ecc1caa2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "0bb239ee3d02af5d62e00172c771c17830acaee7e4e62ea96c312d7ca9fa7bf0", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7ace8f646256f54e0a57061f84427026189f851386b58406735120e8ecc1caa2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Palm]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-data_1]": "d638e3dc089f342d79fa21e7ca657597f02a1d2eae77f56b4e816ded17e1c818", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "1f7d9c67dfd603031a41666d1a71c15522979e5131ad4e3eb6bc80a67c7b8fae", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "64c2f88e05eca13520cf974eeaaa8ccdd54d76fefc7bdc1c3f7469fd5330947f", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "19b435cb9726e06dc2a7b6ce1bb6196406d4a9fee79d2b256e9e0ecb4f991fac", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "468021700d33719e25a81819a8779bdbe7c8486b29e27d6968e9d6e17fe27031", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "7b18685fa5c9afe16fc97a4837e6a0f752f04d57412547d321152dc3ad4efc25", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b27249ccb5ee4835816773949a4da1fb9d8e5e4ccd19450361f11ba841a54457", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-ETC]": "9eb6486ed082c8a39ec8720513fd61ad010d8cb63481943b38e2e48f629a8963", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6ad36de1ca52bdfca0602b62f054c95a30f5357fc34921eca58198298780153d", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "212a280f4a4b5d70f5e0af325d3d12492f40ef843ee63e3bd7ce03b5b7847cfc", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6ad36de1ca52bdfca0602b62f054c95a30f5357fc34921eca58198298780153d", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Palm]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-data_1]": "813051794c9b455377f3ec91ccd9db2e01841e004cd512ea4be3894965d00f24", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "04cb5dcce85664dd745152561bbfd5083849cd57796f6e2da6106f026650c397", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "5632395aade6ef811feb73bb4d4a93403a6fd24f7a72431d158666b72820326b", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "19b435cb9726e06dc2a7b6ce1bb6196406d4a9fee79d2b256e9e0ecb4f991fac", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ce46ba8668e1897ae8290ff4a4bd448e2e7fa1dd0ffde5e1254027fde02867e8", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "46cb539c2f1b563d68d45ef9e0e4b6313673eba8a6dcd19586fda0997224d43c", +"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "22b065b312e7f31b844089443ed6f4f93e8cf65538d00132225ee8a4778e3edf", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "35c678cee9a831d34aa78f54999ee96fcddefd29b9ad294e03b2760b244337a5", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "cc1635c0fe4133b3936b263ae906602f2060a14876decc0723b16fcfbadcea4f", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0e0112089fa909fc7d646c52d9340bc017ae0d94560b32302bc731b87f55501b", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "e42f81a08144ad82b42d1c7f4840a7765536882b1accdf2d904715d84abf0535", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "dacf20f37457ca5f367fb5af31225b0a01f210fd7ba6a76782168e8822c88a97", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ce7ce008529b2ea99ce7804dddc6701cafab52e47967e0022949e02b637ca0a0", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4ee6ae6e852682d984bbedb7eb024556ea5c1865ae9f2bbfb572f8390fcce062", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "afb4c84822b9a401e8206be7c2921390b1251ed185eb090541b3ebfc6707b7ea", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "0d775352e11e4212e36c2768a2b63402f5eb6ab35d718076913fd1e43f42ebaa", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "e42f81a08144ad82b42d1c7f4840a7765536882b1accdf2d904715d84abf0535", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f85edaeeba476588169ee6457f05dd33b7f7a531932cb9f5c0a2734a058e3d4e", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "0130ef121a2ab9d60b52ee08a840d77628d77e11d4be6cc0830987444af7f589", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "a64dd14fb645ea763223ee789f63106d37bd980d94e5c202f161c9feeb64ac93", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "0b9178f6628461524bc7afa24c3e446480575641d7e1e4a9608dedea3c264e5d", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "06fd4297bb8ac26162e93bebc6dab7d18801bb1a3f5423b8379dd2bebdd813e5", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "3ecd49d12964db5dcfe96338f9e76a0871959d5a2393f5c3f037891cefbaae19", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f85edaeeba476588169ee6457f05dd33b7f7a531932cb9f5c0a2734a058e3d4e", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "590aa7d206f21603fa4cbfd261dfcb11c91ef1f14d5d88adc879c6ed9b271c3e", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "590aa7d206f21603fa4cbfd261dfcb11c91ef1f14d5d88adc879c6ed9b271c3e", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_fee_info": "10c69d203bf248b461c5fcb138f115c31c848b2f9c6537d9fe297ccb342ff7ba", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "24b2977d9c0b79b9c7e0339a67ad9357bd2bee904bf7fdd34c8789de5a1c94f8", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "b0c50a11a9b323670993046b8173d478cb7e3fb2ff775307d2e9336d55bba12a", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "ce78adca62eef72cb44ca66e7af5f28974d3853625232da1e36fc16f2323342e", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "4fcce2fb47ef08dd9404f6202cef8b54c035722dec818a9e66be78a794ee6fd8", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "253a90aba5eead369f6ac250919c0d4bd996cf044343009753d1fe2eddafa841", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "52d093b88c1cca9b59afb756d517bc4f421004915cbdb20d138e16cb1ba109fe", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "c3b1aa7dc48740c690938ff18f6d91ba7fb1bd05002d006ab409216efa55b858", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "21cc18af85e15b270007603d3edb318e7ea854fa7969715f594ab0d3bc985838", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "3f130775195dc850f6bb17cbb95fe34476f0a2bf9167f3655717cf7eb89e5655", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "09a133d6a8b716991a44ea2ce7418102bd53955cb8f6c66f32f6fd7e8a45aeeb", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "65f41601b09f47d79f66659f7b3a75dffec301e79afedb46a715dfef865dc5db", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "2425598ab6e7a05254f4eb09e092951d6c1d9a79b5d21435aab4f5f66b47e4be", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "23da937161fde75dfb2cf2975660816a5131374ef521604acdfabc4592dc02a8", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "b767d9bfe52313ec503c92ee3925cc2d94ec6d59e1479f5f8cd7185abb503c54", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "b767d9bfe52313ec503c92ee3925cc2d94ec6d59e1479f5f8cd7185abb503c54", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "226efded3e80f59f12360ad601632197a1ae824cf3ba988659e42aef749d09a0", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "226efded3e80f59f12360ad601632197a1ae824cf3ba988659e42aef749d09a0", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "87a544f280a4bb4865061d9645059e916871821e8822f30e015c34037a38c0db", +"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "87a544f280a4bb4865061d9645059e916871821e8822f30e015c34037a38c0db", +"T2B1_tr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e65c5e8388ba3bf5c3abe018ac4a965bf22a9594a0248b265b5641768155ac10", +"T2B1_tr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "6a5ff821b9c7ecb737148c5397ad08d6107b2731f3f7e6bbd5a54c8a0122539c", +"T2B1_tr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "e93503652886ac9a4155d4b79031dea10ff14f9a076e135c13d567d330d79f03", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[128]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[129]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[16]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[17]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[1]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[20]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[21]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[256]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[257]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[32]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[33]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[3]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[4]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[512]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[513]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[5]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[64]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[65]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[8]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[9]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", +"T2B1_tr_misc-test_msg_signidentity.py::test_sign": "ca885455ae060a6e61473fee6b796019a22ef5f7ef5434742232cdd7789745f3", +"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "790476521ef49e0633b8cb3a63936496080b6b038106cb48c64f15984c3bc455", +"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "3fa96865ef4488aae87fc18102edb17172ddffe27766e58e4aba9eed8278a52e", +"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "dc9b8d441fd24742f4a65eff0333e531b20318ad44d8ae9a89a7d35280e2c7b8", +"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "404d2f7cc018e7baaac62263e2f7b8f170aac441eecdf796eaa11b8891cc66c1", +"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "6e437dd63dbbd9dccce7fd061073fb9ca79d8a8d03198446d2a91d13ddc155d9", +"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "73ff88e453c8796599093a17ee693377a2a0a00f46bbba32788a603e34a4be14", +"T2B1_tr_monero-test_getwatchkey.py::test_monero_getwatchkey": "f567f9be12ee42d595f395dc43a0857df2e172929edf00f22c9f918b5ca3bd5a", +"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "5b49cfeaf80a8bb823f215760844666a39f9c690c7025d94f3cf55b3e74211e8", +"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6c8a7469cb50018a9a3bb507b415ca3c5a5520d7a8c098c1c5cc5609be2808e9", +"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1b52b880e6bfe28c3a617348d7a5d5b4b58c45f6030dc1769e01bf0b22f15559", +"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T2B1_tr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "93be94b8427ca38fd838fc36b82a507ea5f638c1963774d923ab6cadaa7402c6", +"T2B1_tr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "7e2f5a377b01011c829fd043eaf04e30896f56dd4f0f9edc190d8ca3b003599b", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b0ad22dab14120db9e91057f640bac9d69f6886c439c34d21b68a58ff622b76f", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "ea8c92010bfec7e8602b7750020f82e2b372f8ca86f32889d7e001b37c093943", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d6b37abce90c98390ce5e79a27531dbb99d8f9c2b896a47c35a82de5fc92269d", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "9f061d9ce324daeeedb2f6f07c46571e7368935ce279dc0c7749c9dbb44c854e", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b105b922ea2ff0dc309be1388205bd8158a5e18c2edbb96d49ffe75e6d35e2b7", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "447fda3026fa3431883e2a28ef144611bb9adfbc183f84d4b30cd09533f1c4f1", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "42cecf825da0fac2dd60dd936b5c8c8c9d540237dcae1cf6766940f69e5d5362", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "447fda3026fa3431883e2a28ef144611bb9adfbc183f84d4b30cd09533f1c4f1", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "42cecf825da0fac2dd60dd936b5c8c8c9d540237dcae1cf6766940f69e5d5362", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "cdc9735005ed9e5230b8a1398164552e239737a2d58452f7686717f47da5566d", +"T2B1_tr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "405973bd59af206763f3d8b72a3e20e1bb5dc9c29d7dea52c81b28ac55065f0a", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e7d3a49b63fabf975a09f9df8fc0e51280fb66cca9e4478b12c99c7f3b8dc287", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b0ad22dab14120db9e91057f640bac9d69f6886c439c34d21b68a58ff622b76f", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "53f80315031702b9fa4a19b6796e04f0ff4ef7105280f0dd38ad8be62b411b23", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0a6a82d8be3674120f3e897aba44b0fa8814de2fbc34f9c76e69e1c4cfe5cf91", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "42c88f4deedfcd3466f4ad617d5bbb3f8d9e0f7d3e531b3a028b00794cc1e453", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "e5563100d4bde66ba472fe4e6a21837d20a4f08baa1459074bf89b713b0868c2", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "112ac19de51229a3e950ab3bedb8a6a7d813774d87b9a488528f8c382c4e540a", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ef7c2ddf26822e918afd34998819c4a304f2ebdf129ab149afe4fafbef753b81", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8ef10c74f06322927478a50bf8244a878f555b52b9762569f5d81ffdccca772e", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7a51a0b8417aa7703bb02c21ad728b1ea44d140b8ac02857099c0e03f34aae66", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ee7146c570b5935605dc31534ffb844321865178b76156fea2ffcb4eb182d8b1", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3cc60373ebbf6e7334d524f813f51cfda397f2ce820fe1ce1e3e4f8841607eb5", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6badd02845c7a6e657844b473b2f9f831ee805c2033cdaf4927f9bda88fa6183", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5a2d48bea091a9ccafb05f0c945e38be6d9d9edc0e7c15dce550643a39bbbf83", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "40ce3abeecbd99e7997fa1f75b81fe332d6a259783cfbc228b9833c2a336616f", +"T2B1_tr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "25810be1872b2f8cc8489b2beddda9817e9a91aa2db7917139fd66a599c01132", +"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "74e3f8f05670824616e9173445daa0a1f075e6bf0928c8ce74d898085165d957", +"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "2af27a0fdf02a89e272afa0e944161c1f25ab4fc36040428e41be12e1129d6ba", +"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "280a535afad402f5178a1a03125dbba54ad5252a66a51862cd1a22a57101b33c", +"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "435288c5e1e6ce65e3f1b78a47cd5a9fd8c6136c2ac582ff7fe7d7f9f24eb415", +"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7dd37f11b819d878136b868c87678c54cab7a2818f1bc62aa92d21bdd9e84742", +"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2adbe4f9e03ab72cc549a60324f20c8372c1cbd22d105b76ecbf81de40c496e9", +"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c89cfc60550861b523267c374b81451f3632c25d5cb5e7247b8dfb3e964eacc5", +"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "52fbec35e6e73f73556f80a0a8676efaa27399af3bdedebaafbf1ea3813803d0", +"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "fc7220b8057771892a8e973f1f3ae74bd4e20d69002cbb38866de481834412f5", +"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "8d09f3adaeecc9c9b9dda4862528c1053630e70089e3cf7b26c4bb2fecd4202d", +"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ec83dfde012fe9c656238856d1311e3bb0ca4680baaaa47595fc660d568b9d56", +"T2B1_tr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "09c293ccb3116e466848bb7a7c795f3a3bcffa3ca340105e9e5d626d798847d4", +"T2B1_tr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5f114232bd20de96bf0511e20e9696c4c42a2a90547416a7e7e1bdf68c5d8bba", +"T2B1_tr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "43d2872b0c3f08f8a1ab04f65ffc0bead91f8cd80849073b792aaea8f45c1f54", +"T2B1_tr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2549d9ce6031945629a6ffc9e5b8c70100741cfa5c206894356c81221519571d", +"T2B1_tr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6f13d9f38938c9b7cf57bc4e75a0630486738ed292ca41a2179037eeb9fbdab7", +"T2B1_tr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1fd5e2d72c8116387882aa91bca14526afd3551027e28580722a233fb743eef4", +"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "64163df2af106056c3be0a70a64e5bc0d948e7d71fadab34fbd08159edde6a30", +"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "9aab6a6a3e831f828e07297b8de65957f03262f071c3eee78c0ec17dc41a78af", +"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9b4d8cfde49d4f82865241a604c71f3171cd9ef173e38e149958a15b9e7d010d", +"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "b6f892fb376f5314f0433415e26251407ac49b355cd918e19e75499daea3b4a6", +"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "88841eaaf4ec22b0e891d98822c88d275274ffc32efcf80f831f5087febc2187", +"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "4f7a49a872cd80a2adc571346db5b5e3dff95798ada302fd9fb754eea5f60748", +"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address_other": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "7f1f50a580d63ab5bc65c39154d23eb3c7c45f515dfa58596d60ed417fc6e6b1", +"T2B1_tr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "01c89247d55a41e230de0ceb38fa5679e20e9fee244d4d53573d60a949816f41", +"T2B1_tr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bf9284761c6eebf9bff5c965d8851110be8e8def9b2c9fdf87be11faf9a2e36a", +"T2B1_tr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "6304acae9bf729deec1614e0fd4b74c3a307aba36c36a87192ac84b2abbcba63", +"T2B1_tr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "22add2db0ff80c533e6256c20486a6cde3d41b6802d732d5def16c999969b309", +"T2B1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "97c5928960442900c8beb26934eddcf5e9994e7b4a35d38deb0ad42a5653e423", +"T2B1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "1813586df87d5d7b0494525ab7e02ee12c7819cb2a124d052378d6140365f98b", +"T2B1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "493a352b8f9bb90a7b4d330fdbda0ad58686889f28e93bb27358604d44670d99", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "6508a7bb5e9eebbd8989bfe0cce4b415235a1263b79f5f26e2d026b1b9689a3c", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "f9b5f739094fe5b0a5d1228507619fd042bb4c709463ddfabf147b511f6f819c", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "a6dd8b7990aa630fdd62950121494fb077bdd01212fbc27605c7cdfd472770b2", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "82881e4252e6bc94f153d0481630b0a60cecc0efbdfd8fca0bd333f948eec74f", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "b0cf6b7e1bb90f85f97cfea3e4b11f72c5d7a22cc3584cd1e96052bb78afbc3f", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "cd3a5ba742edd7ab36469b6f7e88e98e4ec53a95b2d90c3e8f6354b323198922", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5c43ffdcc53c701da6d25051d63b613be0a156350eaae1124c2729426e28ded0", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "72b3a889e317e614ed23614b54f070146d7627a2ae28447f437570d74df70d53", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "f6e5ad3a68d7c4f8ed6c292ebb881679ae44724c4b7eef150f59a8d80e445669", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8a3f65137ebbd970e153572e3da26e8a3a3f93c44a673cfebff3bc687cce2d84", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "5382122b2959fa36dd4afd2461e51fbdba0ae7096080413d80351c94179f8812", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "aeca778f3d95b60b15b22f0827f20c53e3ca0fb8c26abe1d579ae0ce36b01b96", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "d15de0020688c6910736db84ee21282418f76f96da3b89c367d99c96d130c2b1", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "91982f455c7ae4028e509287040161ca537fc362abac98c1d836aa04ba24f469", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "bd760733c69268faca1d7c4e77c5ef131410895f3b5f7f12fccd9e3a91d84a39", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "98032bab57e1add79c9b57fd6b4c0be5ddf4a8690c55e450ed927e7ee23278b2", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "7bbb5f4cc70b8e2ead8c1e88978e7e567c69960b4744ce7254d25b622273c385", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "625a7d9ecce0406b88187727d2741c461273c8c30fd950c1acacf96155a10ca2", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "de48549662bb6c3258a6604b71e38c5c7aab485d7ea67827908ed8ef0717fc90", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "68b36198ea177caa7bcdb8a54f863017cea4e853fc98d8ed6bb8c74eaa6a4b25", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "78605b5427c0cd16ee0dd7ad40f7569b448ae142c1154b40d5024d67b49a1c53", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "78605b5427c0cd16ee0dd7ad40f7569b448ae142c1154b40d5024d67b49a1c53", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "78605b5427c0cd16ee0dd7ad40f7569b448ae142c1154b40d5024d67b49a1c53", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "f7192ffc02565867bd2e5e9b5eb5d9e17270e27ad9539e24941dc900bfa671c7", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "d564cab44e29c2ab3e0603aeea182aa2aaa389aa72132a62b99cad6add3a8155", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "05981e070f9c774f766132c779f12f2f56f600249f4ad05c01dff3b626fb94b3", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "5dfb65ad23088c35c11e7cb1bc370169c9259565aa29a76f2d035ae77fbd0891", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "4d19c80d3ef930f61dc0b7585e32df27e649dda922e0d8a5f037b44d3fd9b258", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "8df59f2f821528a6dbe8f8f817d367371231f16248a5ad248aa5c20bad3c8a52", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "b2be43a17c3b2d866c7377dc3e4f4150c661f3ee4307ecbdd919c42fc030678c", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "68be99a998639d2aa6d26b27f1b45eef3b6269bf1156d59665cbbb076f02ac92", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "70ff5b2773ba111a362267da29d4b850b620682e8f09c3909bec05672d1f389c", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6c716e1834b5cc96abc24b063baa0775bf85a15446b3191bb1d9ba036be2ff3c", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "4d533baa05234506614c9bf49b35638bc6e34938dfeb759513a59f2ba67d902c", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "3fb349205c2073127f3ef95a22a1b4c5397698ce0bae26c9590f0c9fe873f2ce", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "12ef76677f1eacd00291ea9d54dfa0b7fc45465dde54fda11bb49e5a4948ed36", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "36555dd4be7afded752e68d3bf9735b1c901b40d242e5f5ddfb24716c9049fa0", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "36555dd4be7afded752e68d3bf9735b1c901b40d242e5f5ddfb24716c9049fa0", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "a6275dd41b185dc1e0842896b4a1ce38fcd717df0c5a745f6aaf6e77a3650dc3", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "7f16eff03c9fbdcce6b6275e968ceffbcaad21623e2c578adc2a6f32bc61d312", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "2b83619b8e885676513ced2a30cb925365cf3ca497361853075fed901410c885", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "e08b98e387b8ed337c89df857e5e148095f686abf7a714ae48d3f09a54ae8706", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "c480bd919fd5f2e71d1b9bcc98592571fd28b478d547c34f786d2e69a0bc17b1", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "0c477b865d1f70dfa3ea7354cda9dd5939071ba6279055b82eb3e728c884d3a7", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "55ce141730daf916b1327b7626a40d5e3aa0b95a8ead9f0f4e9317fa2fc5dcec", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "dbbcb21cbfff744edc225a7005512af00740ea7ce3d41f457acb0ecf4285e501", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "f6998af785b30f8a6f52396d16f1f1ee7171b23988b9037d7d14a77010395e11", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "ff2cf3bcc0dbbba567f029e4759c128b0a8c2a60d677fef35a15c521673564df", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "804818f8a22f7a65c661fe3fcec3e0032f6e0989a3441c80245d000de79120cc", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "768bc8c20c6116a29e9a8d0b36a6137fde17a1b18661395befe4d5c738512463", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "f403cd8914c4c06eb7b6d87906d8b56d061bdf14074339cb30a20af18d93a471", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "3dedf72a565fa72c57a5bbbbad7b4e8330ec3b34479259532ebb8b8120b177e6", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "91059bde202bec807f1bbecdfa6b44b200e553686d1f7f5365d79fc188e2f5fc", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "dbcacfce00f4f15e475ae21626c1d01251cce57c6ddf5cef572dbc1d0bba4e35", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "bebcb990c17555669f0049826fe93a4ff889d9a4781424f3446a1e84eae3e487", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "6ca69db7cd3e8749e809b5fba5bf9474d051b131d5e5b57bec37d75afec2b440", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "bed4af0863955f31bce9fbab987eef93d9c03332138b3b392feafbe3062c2acb", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "08292427d3758da69f3891d4afa0976f5e07722192b0ee7e1f6166fb6dce0d18", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "07b69e8299d7c0e1490b62037d130d4c41338b08676fbf8d405fba8301d8abe6", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0dce244e39987d20a121797e74f4f737a474b88d308a5eaafd08e218a2178e64", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "162d5db12129a99ad07dd09da8137a1710077a69a3ac328de9dbb38df6eac893", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "464bbd3cc7501f324d874f62239a82d43308090bfcff956b3e910b7554177b34", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "f8232b1f8d6f43a84e523af1bd62bb60eaa338bf45a7eada284275a5c4971af1", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "7b1d1737c67dd8ed0333af6b0cda0e0c16e13a04c0edd452b5cba716a26f93c9", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "9b40cad014196aedba81b4008da2f7afa0fc18f22aac8c26d8a9e86d36ebaafc", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "4fafb4792d72c43e9a73a4e2d684bc882946c3040533f3840f8368a051060b0b", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "136295b98f75714b6bea949d71a5b0a4ee5ee6bba8bcb06edaef68614373a50a", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "4c36ab4e25d8651badf6080a8a8313711d3b184f3537f4724638032eb094c23f", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7b380a233e994fcf8020a7d6294edd1e939c7e3795af0a70a87f29328dc76ce4", +"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "6d947601d7a55dd4c0ba63574029ec0219dc7e233a365ed63d92f05614564094", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f35e09beb7fc6a6567a13d7a45f9d1425e5d242433a65ebf0bf5de2b3d912e1b", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "6a5586dd7dd94ecb5df4fb800dd3c0d19ff16dba3e8b3d5b2742cbe5b1212079", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "158b86bb2bac3b5552bef7d013593038fa4083ccef55c691cbac5288a63237db", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "63af7b6b9e558e102061f2acf5be2b400a792fda446b4adf65334a2ca2f4c0f5", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "75b30aa320158a2980499741a19ac5c34c23b8edbde4b0e11e66998819c8c6af", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "d4819c4f1a6149f93bf225256dd68f70dab2506a4c1c5830970d60a23a8efeba", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "be1afc1b299a142bae98a48dbc905873597a11ff6a985027ad2fcf98c615df38", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "fa003dae2988dac6cc28307655cb0b2afd16f422106a6254ce261c26968ae088", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "4dc1cea58abf5a580b30ad19d064c1ed7f23f0b1b938417b824a1b217a9e91c3", +"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "1ff8fe0be1c5b46a168bb2cca14dc6849c0cab887986957c9350e3308e6338d7", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3ce756b1b4a515628558cdc3b416d5c44fbfc44305692893b624c8fb3c3f79a0", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "46127cd3c6897d75bc292ba106ed65f1d1f3b1e31415eb1ab63275bc7c28bb05", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1ea94bedaf8df70fbdd03e4e011a5de3f969945bf2e0f146e56b5880e7558197", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "583530ae7155b5fe8717e38e3d170b839622899f99e79198644dcb3df960e6b1", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "7c92a543c751ecd0de6210c12d22f28d7942c973cdbc344eff72fd9a9aed7d23", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "8deb7cdc4af3b8d6155ddf2f592dc7685f7b74a5be1230a2d76ab1e0c5360ddc", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "b25db779d3d6466250f5832d4174f72ec4018a4b924d1e113a21edbf1b92172c", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "fc7efaac9b4acd134f8c3a320448bee2429a44b6a96df3c162a802604a04da24", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "1922ad49808cc081601120b72cc3fc8b9d35dee756c566c170a654e612f677b8", +"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "12fce21c37e88b350688b237803e02689969c05c20f6792b53dceab61d8f4acc", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "217c7d48b2ba88cafd39622d326f455ff8362e070a85981ca4e828f4a79a8f84", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a5467deb9dddd84a836804915ef369762452494945595be40a9330140cc54e01", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "9a7ce0b25c2b1cbb414e25b50a31f6e0f1be88ec5275ea70f2c9e1ddd4162b15", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a8e79045398659a14b99700d8922a31633b858164f358aaa64063b78ca3ae44b", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "704cdec1ee729f84a3126641cf4442f822262e977bbfed187a632afb131343e6", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "e8278e14060f8284dafd32a1bc04cb9fc17cc5c7a5b5829a9654121d47fedd7c", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b526e3b1d1d649cfd60e8504371fd722000f40d9251697e266aef47261e610ea", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "6e9e9e01e27d3a8f78f7bf5d5a2f93af0e5cf4d28773f7725566ff78b0eb8dfb", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6db3c67aea27014ac2d9d9701ab95c28e774caa25fb5b7263b51f61f1dbb40db", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "4dac2332e61f7f9cc45ad05450a77ecf9c6f38213220f4be143c5fc686568adc", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "f4e77aae74309cb3bf35bd887ec5243b0e2204ade35aa4da4dbe8aee2da9552d", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "a6e9a6e0e6a204f4ef5358e639ed823d3e4060ee4601cd0f47cedb4aac429f72", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "864d693d5e72abf2f1d1104c7c83289150e415fc2af5501690674442daac3de9", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "23ecb628d127fcd13716042c02d0be447fdd58b42112703c8e9573f1c47fcfaa", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "70d8c885b1011e9e1b69834c849e1223a2cc7559454557df6b498c919458ff92", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "b6807b0674b2ebd61f18b843004b90ad70668d723206bdc033cb348192c3397a", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4070dd7719a01990a00d5f33f62b5977213a6fe485238116843f866bed450dbb", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0a43219f42c2eae66c06d18c18e42ea56204078f179b875e8de69fadc0616532", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "c59e66b8e1ce29afce57084dc55804ea9803859807aaf89e1cf8b607643a08c2", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "cd98a76adfbeed130dcd70cb071ed0b214b6da8461ab59239b74532b1bd86986", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "857c1321455858c773b432034f87ce13c35ecee9f0bac8af60b58aab37d45d75", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[memo_id]": "0540a9803b64e082d642f2e8c1c47ea9d04d1f257e6686be12770ea3cb0b0228", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[memo_return]": "7364ccfba319609379ee6f67dffb03e97408f65bf9d8fc3d111807e521012f80", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[memo_text]": "c15b8db3728431f9ed6d688be6b910727a418899b82611934a1285068df34a9b", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "e16848cf317031f83b3c733b2734b2e66ef8541dee79230bc777c5b90cb83301", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "e9db01d5f9d1fc15daac58c503fb6dff91f6ac5730b86c1f45bf2c2db2543056", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "7143d130078cfcc352eb34b27a7cc0bbe364b98467870a44d7c00a5f75f9ff06", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8aab0d2fcd0c7f0fd178fb2dadc07f23a64ba3e586309d42358fa848664a765d", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2964a0300a51be7382be8d7e768246e949dd258c3143377491d5fba08da57894", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4070dd7719a01990a00d5f33f62b5977213a6fe485238116843f866bed450dbb", +"T2B1_tr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "0ab971b69c18f468a372bd37ca7b8999eabdb52c4925bf2edd94b24c09853429", +"T2B1_tr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "e7c34919ad20d6fa934bb9034715fa17ead43af8b8595518ee55e2263c2121e6", +"T2B1_tr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "e7c34919ad20d6fa934bb9034715fa17ead43af8b8595518ee55e2263c2121e6", +"T2B1_tr_test_authenticate_device.py::test_authenticate_device[]": "e7c34919ad20d6fa934bb9034715fa17ead43af8b8595518ee55e2263c2121e6", +"T2B1_tr_test_authenticate_device.py::test_authenticate_device[hello world]": "e7c34919ad20d6fa934bb9034715fa17ead43af8b8595518ee55e2263c2121e6", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay": "a85772327044d99e09857f64ccd8a05c654ef2386873146db1c84b0f25ae3351", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c8caa4c91209cc7410066bd23aa39cc597a28dd5416f5ddf59d00b50929cc459", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "f894af8033f4639e4102e80ccedd13a3bb9ad5de80483eca765d82040bd48d99", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5ae465914fe3b94e5204ca07744cdff5ea1af4d707f747c6ee2a9b073975a996", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "0256d89560833c3463d477704910f5ba880223b388dea26f5ee59abbd9790e95", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "f646e11747a4d700560689831ecf33cb2fb35c61ddb7334937c7395fc80eceb1", +"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "507c64c05cfbc7a448010d8e61070e4d5892f1257b7a488dd9daf8bf3ababbac", +"T2B1_tr_test_autolock.py::test_autolock_cancels_ui": "e90db2d46b7143c08d22204cc26cf41fab9b1f30d6b195cea1582d336212b7eb", +"T2B1_tr_test_autolock.py::test_autolock_default_value": "1c30ad8dde57d328472bb37cf44bad403d1eaa773029d9fefff0086d1391b953", +"T2B1_tr_test_autolock.py::test_autolock_ignores_getaddress": "0d299c0edee1434e61d19430f9feb429c956cba483c340b210918e7d8fcd2f47", +"T2B1_tr_test_autolock.py::test_autolock_ignores_initialize": "0d299c0edee1434e61d19430f9feb429c956cba483c340b210918e7d8fcd2f47", +"T2B1_tr_test_basic.py::test_capabilities": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_basic.py::test_device_id_different": "84775d1063b9a9970dc386e621975486dfd7685b7df5bff185ad66fee2783945", +"T2B1_tr_test_basic.py::test_device_id_same": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_basic.py::test_features": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_basic.py::test_ping": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_busy_state.py::test_busy_expiry": "521a2f93e33c49afecdf10c609326c3bca29038b189a4f07448c52ef28bf800d", +"T2B1_tr_test_busy_state.py::test_busy_state": "7cf57a90a3429c4d2631444e23d1ca17247cfe4142b5271fca8d57762d58d411", +"T2B1_tr_test_cancel.py::test_cancel_message_via_cancel[message0]": "b449b4b3cc1d8a197dfca1d8ea81c83e7f15890e0474c4a65b497a60a5e93cf3", +"T2B1_tr_test_cancel.py::test_cancel_message_via_cancel[message1]": "3eafebe69db849319f6bd5c520e1b1ad49af184e04204a9e4972ad085f4aa9bc", +"T2B1_tr_test_cancel.py::test_cancel_message_via_initialize[message0]": "b449b4b3cc1d8a197dfca1d8ea81c83e7f15890e0474c4a65b497a60a5e93cf3", +"T2B1_tr_test_cancel.py::test_cancel_message_via_initialize[message1]": "3eafebe69db849319f6bd5c520e1b1ad49af184e04204a9e4972ad085f4aa9bc", +"T2B1_tr_test_cancel.py::test_cancel_on_paginated": "d1406b148563e6af45efb0357c80b81691db9277f6af9055edf24dab08f499bc", +"T2B1_tr_test_debuglink.py::test_softlock_instability": "3e89d94bbfab10772516fa98bb827368d340babaa6646f32d9de14b13f84cc58", +"T2B1_tr_test_firmware_hash.py::test_firmware_hash_emu": "7332dfacc222fbd9b96135a6e633211dbd5691a3515b754208354e20ddb4dfaf", +"T2B1_tr_test_firmware_hash.py::test_firmware_hash_hw": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_language.py::test_error_invalid_data_hash": "cce984dc7260ee0f7fde4d0591200e127d0f23d5e79346e86a44a38e1d224049", +"T2B1_tr_test_language.py::test_error_invalid_data_length": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", +"T2B1_tr_test_language.py::test_error_invalid_header_magic": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", +"T2B1_tr_test_language.py::test_error_invalid_signature": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", +"T2B1_tr_test_language.py::test_error_too_long": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", +"T2B1_tr_test_language.py::test_error_version_mismatch": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", +"T2B1_tr_test_language.py::test_full_language_change[cs]": "428cfcf173fe77a1e5910bf537d5f36893231eb7d6e974518fc502a0945bc2dc", +"T2B1_tr_test_language.py::test_full_language_change[de]": "51970efa0e799423dc65fa6cedcd7e9fa27621308d99ff5543e22c8aa6f98813", +"T2B1_tr_test_language.py::test_full_language_change[en]": "44b7da1f2d6ec233b1ec1d08fa21125a424786c878e40d1d5d71c9213af3333f", +"T2B1_tr_test_language.py::test_full_language_change[es]": "dc39c4b94579430cc2a772df1a2326f5395bc223676c68e7e33e8da5beb4e604", +"T2B1_tr_test_language.py::test_full_language_change[fr]": "1dbe50d0d3406ccd12b2d4f6588c7c28dedbf2da16bcf91d8d5df03806cbf883", +"T2B1_tr_test_language.py::test_full_language_change[it]": "48e7308643116efaf123f24c840e390c07a7f629542d0513f53cb867cfa423ea", +"T2B1_tr_test_language.py::test_full_language_change[pt]": "42dddaadcad85a94668dda4f9e3fe88d92b861979cd5f526864c72d9c7b71827", +"T2B1_tr_test_language.py::test_full_language_change[tr]": "be233ed7c9cfe40aba1da63b1790c4e08697ea5f8fa29a2f99df1b1f7e6dbb31", +"T2B1_tr_test_language.py::test_header_trailing_data": "542cd62ebcd84099416bae5a2df2e47fdeb480f5bd096e9162db9cf2dfc1eaf8", +"T2B1_tr_test_language.py::test_language_is_removed_after_wipe": "cc46b3f9c4e590bed069f56b124b7db6250a166d5b2dc4ec5fa73e83a31b2dfb", +"T2B1_tr_test_language.py::test_reject_update": "b3f58dd2c5c0ba3ce35310e389cc72d3857a92b6159f78915e2522c54dac13de", +"T2B1_tr_test_language.py::test_silent_first_install[False-False]": "1d5b83a25e1a851f65aba8ee880d10c4c470dcb15f779afb91405e2230017481", +"T2B1_tr_test_language.py::test_silent_first_install[None-False]": "1d5b83a25e1a851f65aba8ee880d10c4c470dcb15f779afb91405e2230017481", +"T2B1_tr_test_language.py::test_silent_first_install[True-True]": "19d8108a8a34db97a1581b2f1f23573d14cbf06729b45afdc7c55f0faa9d5392", +"T2B1_tr_test_language.py::test_switch_from_english[None]": "204a5ba4b209a1de896ad95f418ea91286d55a595d6bc80ef3a22ede7ade88d0", +"T2B1_tr_test_language.py::test_switch_from_english[True]": "204a5ba4b209a1de896ad95f418ea91286d55a595d6bc80ef3a22ede7ade88d0", +"T2B1_tr_test_language.py::test_switch_from_english_not_silent": "2e8fa52cf38696bf0f25c640cdc4013ba8f17c783a561f916b2e6aaed62ff4b1", +"T2B1_tr_test_language.py::test_switch_language": "55961e116911d2be277d6543558711a9d0a6a1f63601772b2ae566f136be0c5c", +"T2B1_tr_test_language.py::test_translations_renders_on_screen": "2fb69bca08c166e108dffda99e76a97824b02a0e98d477f8e9a6f117cc811d95", +"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "d342cf317f834fbbf462d6a62ca2af1f760a907c2cf61a19f3782ff4365c145b", +"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "0029246aa97b6872b7c9efa45b389d6b0d5b4dba0d1ff67638af404af2d236d8", +"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "4cb7419f2a3644961f665ec9744da5fb6d88d7dbc64341991aa78bd0d49d89d2", +"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_msg_applysettings.py::test_apply_settings": "afa6a39c67b4afb3a9e669338efd542cd954abe4ea70f77ff06dc887f4a3fa6b", +"T2B1_tr_test_msg_applysettings.py::test_apply_settings_passphrase": "0cbf80290d4fd259264e45cefeb91a80a41b2506738d0dd17071e4a5999d9980", +"T2B1_tr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "2a62659f2b29f87ccdb02de0cce43814b7e66735ced346b9635e0260764c2e3b", +"T2B1_tr_test_msg_applysettings.py::test_apply_settings_rotation": "c5b2043090c188f70ef61b01d99974cb36a0a5feb55eceae8a82c8e976c4ea84", +"T2B1_tr_test_msg_applysettings.py::test_experimental_features": "609549cc598b0bc262bb9d7e34b5cec1fb689e44066f62db3647e2c5dc3eae83", +"T2B1_tr_test_msg_applysettings.py::test_label_too_long": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_msg_applysettings.py::test_safety_checks": "10689f6cfebb4c816db4b88de0b30c8c1481346020486df8ea07c0082168ebe4", +"T2B1_tr_test_msg_backup_device.py::test_backup_bip39": "7ef9df73a41bab52d8735e245d047b7bebef53eced4e85763855b4d9147639cd", +"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a791fad9a38c1b9f336fcba4e751a545bd59a63e223d0e33ea502341a4fdc07d", +"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "06a2ab6b60f3233606c85135271cbe5c03a441c73069854d3d55f3899acba66c", +"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "a791fad9a38c1b9f336fcba4e751a545bd59a63e223d0e33ea502341a4fdc07d", +"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "bde089e48ef6799d07dae084c2645e1eb2ba8e84492b77b9e56299c730fd186e", +"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "752c221c8e076ea0bb165dc065db2d533a7901f300254941aa30004c786f3563", +"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "3fe52976de31ff0234a086c3a9db7d9dc8f9a31caca63bce0a042f398935f4b1", +"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d4e60ba35f0ab09bf06d773aa3f5da4723505631df19ea711f3b77cf74e02cbe", +"T2B1_tr_test_msg_backup_device.py::test_interrupt_backup_fails": "eb5d7aa269e6b288677d293c74d6695bab4bdee5d37e33efa9d8464d99fe6031", +"T2B1_tr_test_msg_backup_device.py::test_no_backup_fails": "bed97526bb5a33dc624d2780526a9cdb891b962b3ff1f03dc85c3016a8fdbf16", +"T2B1_tr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "af14272becc0ff4c1de0c70f182bfb895ef587bba352e393a848c96f7ca87687", +"T2B1_tr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1255125f9898b271f162e2e138b6e8c3c7dedc282c8332505a43c538a71a7173", +"T2B1_tr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1de7fb9b2407045d5731fef2c9486d255e2ebbe136bbfbc764741e10aaae2868", +"T2B1_tr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "920134cc16e0349008299861f20819a4ade616fa9e0b23a5f77ea3481bd9570b", +"T2B1_tr_test_msg_changepin_t2.py::test_change_failed": "f23d0b9ce7411ad01ac8cd2bcc9989ad089921d2f6a75a2de325aaeb44e94a11", +"T2B1_tr_test_msg_changepin_t2.py::test_change_invalid_current": "9f79104e141ae995994774d517f7e714709575333bc099bb42f813c393ae3d0b", +"T2B1_tr_test_msg_changepin_t2.py::test_change_pin": "6e078592e899f99a6aae574269a8feb106e2a68af3fb4dc60425cefe00f7654a", +"T2B1_tr_test_msg_changepin_t2.py::test_remove_pin": "a93c833cfeed2683bae9923d3d2b7c9a7b6c96045bf6c846e7d4fef1f6c62546", +"T2B1_tr_test_msg_changepin_t2.py::test_set_failed": "1082d1ef9ba61c70ed33ab803f304ed6ab611a2c13f32a726467efa36b7c8e8e", +"T2B1_tr_test_msg_changepin_t2.py::test_set_pin": "8634361849955261842b8a14f6af0dc132f293db4e9805d5f3b3397f8a317c3a", +"T2B1_tr_test_msg_loaddevice.py::test_load_device_1": "76a7d3ffeebd0d1db1908918db66e7f1c9f8ea1c0ab7144c8f07d8aaa760c77f", +"T2B1_tr_test_msg_loaddevice.py::test_load_device_2": "ed757fddcdbd2f7ec9bb0c31fcfff0d11e3dc95bbab738b1f6dcdaacf59403a2", +"T2B1_tr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "76a7d3ffeebd0d1db1908918db66e7f1c9f8ea1c0ab7144c8f07d8aaa760c77f", +"T2B1_tr_test_msg_loaddevice.py::test_load_device_slip39_basic": "76a7d3ffeebd0d1db1908918db66e7f1c9f8ea1c0ab7144c8f07d8aaa760c77f", +"T2B1_tr_test_msg_loaddevice.py::test_load_device_utf": "fdfbff172fedb62b1e87754c4aa13a59b062b49fa776c1a45f9b3dc3bc041fb8", +"T2B1_tr_test_msg_ping.py::test_ping": "b449b4b3cc1d8a197dfca1d8ea81c83e7f15890e0474c4a65b497a60a5e93cf3", +"T2B1_tr_test_msg_wipedevice.py::test_autolock_not_retained": "2fa08cc3cbaea6d7c22e08407867c13ff9f7f448aa3ba4503f11fd7c36c813fc", +"T2B1_tr_test_msg_wipedevice.py::test_wipe_device": "84775d1063b9a9970dc386e621975486dfd7685b7df5bff185ad66fee2783945", +"T2B1_tr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "96a902559de61977f0c3f3479afd5e2feb9a26e1ecc51c3a8d5dd78b1aea2e2b", +"T2B1_tr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "96a902559de61977f0c3f3479afd5e2feb9a26e1ecc51c3a8d5dd78b1aea2e2b", +"T2B1_tr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "0b59d06556166b4cc4f21e432f99aa96407b6a2fcea49a8e2e8d816dec5e76a1", +"T2B1_tr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "0b59d06556166b4cc4f21e432f99aa96407b6a2fcea49a8e2e8d816dec5e76a1", +"T2B1_tr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "0b59d06556166b4cc4f21e432f99aa96407b6a2fcea49a8e2e8d816dec5e76a1", +"T2B1_tr_test_pin.py::test_correct_pin": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", +"T2B1_tr_test_pin.py::test_exponential_backoff_t2": "051d1158123de369cb4ae24235377ca9469210778dafbfb88ddc198f3f62cf1d", +"T2B1_tr_test_pin.py::test_incorrect_pin_t2": "eb9cfa1528c5eea8cb1619c921df77c006d9265dca23a35467da968d72fd55b9", +"T2B1_tr_test_pin.py::test_no_protection": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_protection_levels.py::test_apply_settings": "23514479bab732c6b99418f004c74eb6716fc281ec13e2814a6ae82d1377b5e8", +"T2B1_tr_test_protection_levels.py::test_change_pin_t2": "51e2fd40059d1af6cda28c366d2ab45c7cd401a7d01ce21776f7541d7e34df95", +"T2B1_tr_test_protection_levels.py::test_get_address": "13f29acf7d6334c6ee24b7e4ff2e33cb2a393893de9242b7c6bef616e9a581bb", +"T2B1_tr_test_protection_levels.py::test_get_entropy": "22f5d9d12b6f4d15dfd817c6099b9e451f5c157db5746665239cca322a200f0d", +"T2B1_tr_test_protection_levels.py::test_get_public_key": "13f29acf7d6334c6ee24b7e4ff2e33cb2a393893de9242b7c6bef616e9a581bb", +"T2B1_tr_test_protection_levels.py::test_initialize": "d4d7e159fab5a57abd84f3bc02a7683d3683265015472cf749600e36df758cac", +"T2B1_tr_test_protection_levels.py::test_passphrase_cached": "7bddc2a4e8b47043a1b4329ac91ca84678abbace18e1d11594ee31795c7e6d84", +"T2B1_tr_test_protection_levels.py::test_passphrase_reporting[False]": "064145ef0f78f69e8963dc01e7e5a70492d58e7b265cb4cffe01d7451e982551", +"T2B1_tr_test_protection_levels.py::test_passphrase_reporting[True]": "86c383874f4ac87a01fbd569fe7d670c6be52d80ef2520ec3df0dc48a7e9a97d", +"T2B1_tr_test_protection_levels.py::test_ping": "b449b4b3cc1d8a197dfca1d8ea81c83e7f15890e0474c4a65b497a60a5e93cf3", +"T2B1_tr_test_protection_levels.py::test_sign_message": "0e2167f12321c303db92ae56b061c11d4d49e17e1fecef363409821e0500e37a", +"T2B1_tr_test_protection_levels.py::test_signtx": "fda61c15e98e30670ed4165123ffdea248aeadc91625cb5ee813b83219e0cfd5", +"T2B1_tr_test_protection_levels.py::test_unlocked": "dda51d0e32bbcfde3a18820eb4db64b39c2d14d191ee71a666d0c2afb043a28b", +"T2B1_tr_test_protection_levels.py::test_verify_message_t2": "7dfcff899a60209e20789aa794e9c378fb700f1a7447bdd86aa79b963908f741", +"T2B1_tr_test_protection_levels.py::test_wipe_device": "c602b567152cd18c703cc4393e6a6e98293e8bd613280a3bb5b363706185e70f", +"T2B1_tr_test_repeated_backup.py::test_repeated_backup": "1a95675b4501d9fea9be3d6a4b80c138c9b3a7fd19f1343b5a1355d0f83a3f99", +"T2B1_tr_test_repeated_backup.py::test_repeated_backup_cancel": "383510fca53348945021d73c4e5092ba9d2e2971f33c9743b5bc1b056149b15b", +"T2B1_tr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a6ac7af48a76cfacd20d2c120f87a045b4dcca22dfe00e1840022aa923d739c5", +"T2B1_tr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "22669c05ce5f3e9eb96bb4552fcdcc461cad0816c531b7f846e13f5c3da739dd", +"T2B1_tr_test_session.py::test_cannot_resume_ended_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_session.py::test_clear_session": "d3fb01e5c8d463d75704a18b54d22c4a0350e587d16db383b7fb1e0425c7c9f4", +"T2B1_tr_test_session.py::test_derive_cardano_empty_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_session.py::test_derive_cardano_running_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_session.py::test_end_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_session.py::test_end_session_only_current": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_session.py::test_session_recycling": "0b59d06556166b4cc4f21e432f99aa96407b6a2fcea49a8e2e8d816dec5e76a1", +"T2B1_tr_test_session_id_and_passphrase.py::test_cardano_passphrase": "038a9222a0d39951ff5c56edc7f23ddd3857fbdd6f7eafe47bf53fb981b62189", +"T2B1_tr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "17b417a1888955609a2f4239a93c681776c73aef6aaf65f0f4e6b13a226b834d", +"T2B1_tr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "2f07f19bb7c5e1dd2ea358d33faa6a055aed7f420542b1b141248702c34d9fea", +"T2B1_tr_test_session_id_and_passphrase.py::test_multiple_passphrases": "933ba8de213cdf3d8f3f0b39b0ba49e739c76526becfdd09537e1832b62be7d8", +"T2B1_tr_test_session_id_and_passphrase.py::test_multiple_sessions": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", +"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "ce6762cada10cb0ea348355a0cdad69899b9940fb4d4f510a02e4feeca25bb66", +"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_length": "dc37787adca66cc65c88a64ae8d821b516139b9bd4a9fb40e1be02046453620c", +"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_missing": "7bddc2a4e8b47043a1b4329ac91ca84678abbace18e1d11594ee31795c7e6d84", +"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_on_device": "f8bac873b4c4ace39b4b9cdc43dc48914420586fb4155d51da799f7951984a27", +"T2B1_tr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "82c2c4d1d7e69b241cb2e7c49b1db5662522b89d126a0c1445d9935042f426ac", +"T2B1_tr_test_session_id_and_passphrase.py::test_session_with_passphrase": "cfd831c1eea8efd933eb56312c03857a3086d5064417db72ee2e6bd0ba03aed4", +"T2B1_tr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a89a494c43ffec8829f9a341d201b2391326241a16ad363b52c03a2d0fb68ac9", +"T2B1_tr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "a474c3a9e86aa3343129ee7a7bbc57e4158cadd9c942215bb8112452c159e771", +"T2B1_tr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "26f7f172b7c42707a56c3c51d32cc4981c5427c034474b83457b767a9d94a124", +"T2B1_tr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "036952da3295ab063f41c1ff1fe9532f114d4be63c3344839087f55ac15778e5", +"T2B1_tr_tezos-test_getpublickey.py::test_tezos_get_public_key": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "c6003015b7cba3a9e45f23049a365404367eb65e15017d3f56c6699b947b4ff8", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "4ccdbf32d333eb276132ea46d64da764df1c91bbcde1cf82221eb2791235f51d", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "031cf8f7f250f1c5bc40fed2789cb312697ac6461766aca0bab9aa2cb943e803", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ca2548087dd2abb99768826d0340bf6d0072d222d6161c0b5eff80ef5bf4dd83", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "c1871e2c9e9c69fae385d83f34e8bb7f74500420f6ef1af437c75873ee309618", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "48bd483cad10693ea1f8acc8c1dbef0de377c425fde8f020d76e8ad8b8af6aac", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d2394c8b6f7bdc047aed1f31fb08fb907be91c1e6c2322023d182c9b6f8b7925", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "5437a4fc4520e737804961a796ecbb2da880c33a418ac6bd405a9c34ba9842d1", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "d0d11d6667bd0983850eae4ff0192cc2c19634c73f739647cf3170f5bfac8b34", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "d4703b2361b2df333d313773c89695183952e8738656c303d36059ee3d120cf8", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "abd847907fc65444580f42455085f2b36e9ffc01a0d24bccaae06797968b2b42", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5d1333c3503f2c272cb466f85824bc526e5a9f14bff28c7eb2afd38026ce661c", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e914e785516b3ae16993548b0c60d5d4c07757a882459006880bf5ab85126d28", +"T2B1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "5a98f4746b443b4b1b60d6fe35140b7c4c1e1cf147cb04c2f52426dce5707452", +"T2B1_tr_webauthn-test_msg_webauthn.py::test_add_remove": "a800eae89845c29af393d96b0abaad4480e6a2a56f0d5f6c4e8aaee0af92c564", +"T2B1_tr_webauthn-test_u2f_counter.py::test_u2f_counter": "a8eb305eac38c367f6be1afa6f85c0c0f37320450b8b028d0f33bc5bacd325f4", +"T2B1_tr_zcash-test_sign_tx.py::test_external_presigned": "9dd3734d4a624f47e843b685a072ce8583db1da8aa38d71eb4c5e4fd545b2833", +"T2B1_tr_zcash-test_sign_tx.py::test_one_two": "e2c0f29c8e13e91abe4842f931c6620771bf6e0f87294e45fe8e13bddb4798ef", +"T2B1_tr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", +"T2B1_tr_zcash-test_sign_tx.py::test_send_to_multisig": "1126ccf6dcea6fa0adc6c6ae189459a2f4e61bcd858f40c0b7b8b5502f4b0a2f", +"T2B1_tr_zcash-test_sign_tx.py::test_spend_multisig": "daedfda4ffba79bbec250801ec5d9ec896dad4713506278948f3a4ca4be1de00", +"T2B1_tr_zcash-test_sign_tx.py::test_spend_v4_input": "8737726a4e3a77f9455844ae133be1d5c007f86bce239fc0065e7de8b54b70de", +"T2B1_tr_zcash-test_sign_tx.py::test_spend_v5_input": "e4ffd70ea2e1dc97a2692ba39e215165c30e7d53b54e190048715c1883551814", +"T2B1_tr_zcash-test_sign_tx.py::test_unified_address": "386961b5d7192e85802ebd944086f6006a2bb921ee9a25a70d458c50b99a7359", +"T2B1_tr_zcash-test_sign_tx.py::test_version_group_id_missing": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e" } }, "T2T1": { @@ -8022,7 +12275,154 @@ "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c2cbedf1d60c5945d8c2500010137e8d29ccfc40f9be7a860f6c9d6d0933bc70", "T2T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "ad49d9bb88c4b720471ee7c7d01c93f1000fac1d9c1c4395bd543dcea9f83e4a", "T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "d03406ccc95081d4ac7843698627db11ec4af989c04a9424307a3c0eccd735f8", -"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "cd94c1115ac461e3da699fabaa6bfba3a77e21591b52882aa2dea0deef1de58b" +"T2T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "cd94c1115ac461e3da699fabaa6bfba3a77e21591b52882aa2dea0deef1de58b", +"T2T1_it_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e36418c1025f9b02fe2fd3ae3e0961aed626bea603a6d0d1b93502b1d50ae477", +"T2T1_it_test_autolock.py::test_autolock_does_not_interrupt_signing": "28ee39d239b5ab5cc346bbfdaec4f0ca684fa598bcc0bc682d1fd8dca8182eb5", +"T2T1_it_test_autolock.py::test_autolock_interrupts_passphrase": "81cb59a2af328e36cb13bce504a6eaeed420c5ff7a7561982aeb2b2551221420", +"T2T1_it_test_autolock.py::test_autolock_interrupts_signing": "45780bf9f20f67d4720a3b6e9e888ea11ee7dc6ada4e9b2de1cc39b841d5784e", +"T2T1_it_test_autolock.py::test_autolock_passphrase_keyboard": "3dc893c45df3c553d20b667ede3fa0eb4e3c4915a1f0176c3f68ede4db76034e", +"T2T1_it_test_autolock.py::test_dryrun_enter_word_slowly": "bbf2209bae1369eacedeade0664aabb1304f5feaef5f9ae9cb343146fc46c2a0", +"T2T1_it_test_autolock.py::test_dryrun_locks_at_number_of_words": "07ea7038c1eb5a1712e3bf0e0df4333ffa020731c170d73874df19782cce8c93", +"T2T1_it_test_autolock.py::test_dryrun_locks_at_word_entry": "735433365860d48a0ea2bf7ba5ad5cb841ed478118300c8cc2f8d3e962f6c95a", +"T2T1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "7cefb64e535662aa7013d16d8ff601d4fe2d2d4129287bc00bc14d01c26e6d8e", +"T2T1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "22f2de35b8801d791861d3eef23decc876c06c10d650354f2d18f112e6901376", +"T2T1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3d3219e4ac9633dfe080908cf7e9729a0ccfaaa6b352666cfd60b97f12ee82b1", +"T2T1_it_test_lock.py::test_hold_to_lock": "c91b3e9944fac300be3b6a6149aa31286ffc57d0524c98628c39c0524c044534", +"T2T1_it_test_passphrase_tt.py::test_cycle_through_last_character": "f2e17722410a007045fc3f5e828ef68107f046aa24114edaceedd05b452774c1", +"T2T1_it_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "e245496940605229c62de88d8eca0a571c38f992b3dec907c0e26ceef3c1c3d9", +"T2T1_it_test_passphrase_tt.py::test_passphrase_delete": "3b913232863ae77537210b3ad4e6bbb53eca611c2c514b56fcfb1ef6c388a279", +"T2T1_it_test_passphrase_tt.py::test_passphrase_delete_all": "326411ec8407e325feb756aa6c7a7a02f854092dec1e0bc1ff44902c3a862b03", +"T2T1_it_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "2010048b13a69e27ed600d0fc26019d3be4f9bcfc1a830c278166b1a1e21055c", +"T2T1_it_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "ab897c058406cc6ba17d468902e673610949f1accead774fb03fdbe498c33ff4", +"T2T1_it_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "80132c8a852c5b6c6a41967b69d6740745ad844d6ce63fd8f978b2a4016fc125", +"T2T1_it_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "3101d5fc35ad49a171a09ce7c1a03c500db9ebb32097a24c9b0315095bdfc2ce", +"T2T1_it_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "a3f858b2aea4632c3c6268d736c158329e7cb2d0891c68c155b4c0d46ba90e55", +"T2T1_it_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "803605ed9ed0e6446b67fe9e4717228ca1f42fe81a7448e8b35f6bafbcbb63c2", +"T2T1_it_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "a3f858b2aea4632c3c6268d736c158329e7cb2d0891c68c155b4c0d46ba90e55", +"T2T1_it_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "604493b1c560864bf219938ede8ea2d90564d01ba9c0645a2341317be3c1d5fd", +"T2T1_it_test_passphrase_tt.py::test_passphrase_loop_all_characters": "7d6eb78e5539904e66409edfd74bae88d2183426018335ae1c98f7b8c9be6694", +"T2T1_it_test_passphrase_tt.py::test_passphrase_prompt_disappears": "64f3a7368bdfcf5c4150a7cbb8a094df759b51c144b3db7e33640842ad16629b", +"T2T1_it_test_pin.py::test_pin_cancel": "e9e19a3b0fc7e5a255056edb0173f9ed3508f46c45e27dd830c24724d22305dd", +"T2T1_it_test_pin.py::test_pin_change": "fa190fadf5b87ec799f7424a6605a240b2884e8422fbe5b973cb1ae89acdc173", +"T2T1_it_test_pin.py::test_pin_delete_hold": "9a07419f6c01fb511c4b04674e788bcb6e4ce10949f908a3e479c156cd1040f9", +"T2T1_it_test_pin.py::test_pin_empty_cannot_send": "8ea1fd6a1de4ccbf1b7dcda29d87b91c1d5ec0a13600ad5c8b939f1856afea37", +"T2T1_it_test_pin.py::test_pin_incorrect": "90b2749b7e815b7e48627e1b28552233ad1f7541a168f8e6b000b8b8cff82c08", +"T2T1_it_test_pin.py::test_pin_long": "980fac504efea86cd566e9bb885ab45027d0a3a3a1a88d754cbb17bf3a7c6a89", +"T2T1_it_test_pin.py::test_pin_long_delete": "5877e8c1042d926e5032319e3e02f46a7f9c0bee14bf6a907497ce1afbad3620", +"T2T1_it_test_pin.py::test_pin_longer_than_max": "7f38fc93f4def1fea04bdd8979f56e571004d783cdeda39d6839cc6ba8301a9b", +"T2T1_it_test_pin.py::test_pin_same_as_wipe_code": "492c8aa12458259a3f66a9e137d9e48f58acd5ad9bbd53acfa6f121f8ba6c3eb", +"T2T1_it_test_pin.py::test_pin_setup": "82d6d0668a414246ad82a502fcb2b2033df3a85e517a317c932e31afaff2e7cb", +"T2T1_it_test_pin.py::test_pin_setup_mismatch": "0d2339e1445ead618799699f74a4add900bc83f8bdd52c038471bbf753430048", +"T2T1_it_test_pin.py::test_pin_short": "8ea1fd6a1de4ccbf1b7dcda29d87b91c1d5ec0a13600ad5c8b939f1856afea37", +"T2T1_it_test_pin.py::test_wipe_code_same_as_pin": "72697518d94cbba92cbd80af6be3ef5ea40f89a6823b849e07177b8f2b2ac259", +"T2T1_it_test_pin.py::test_wipe_code_setup": "3dafe047f7e55b8a23c272c140c2dafe9907047697e7db80d931721d7c4ad53d", +"T2T1_it_test_recovery.py::test_recovery_bip39": "51fb8c4e910b7e983fffcb6ca951e6576d520dd16de09b24d92585611838139a", +"T2T1_it_test_recovery.py::test_recovery_bip39_previous_word": "0357e967a923d9f530e9469720fdf8d18f8424fa4940b69d0266ff96d513ad06", +"T2T1_it_test_recovery.py::test_recovery_slip39_basic": "9cb6d332a72c0b854eb835aec8c6a10cd3349a8ddda9dc48213330b9b91bfad3", +"T2T1_it_test_repeated_backup.py::test_repeated_backup": "2462a96d5e824717d778cb1ba38c9f6377bef352eb501da7fb8f65de77e8f85c", +"T2T1_it_test_reset_bip39.py::test_reset_bip39": "1fd5271ef4b302f0adc10091cf7ac8356dfff931a440978215d926dda22c85bb", +"T2T1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "fd6eb81457251807ccde70ec916a96df5d5ebe2cf54763a7114f0c878d333db5", +"T2T1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d810061203668064bea5031eace86ca0f2f4dc080e848a8c1e455e179f47233b", +"T2T1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eadf3acb7682613eb4eb32171281b5dbb7d317c328918fd92335dc28c8c2b865", +"T2T1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "cc7a1ba3a9f650cd862ab402d7483fff5785e415c537bffa74562dc0bf3d1fd4", +"T2T1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "9c9638745b069adf8371a0ed1a724768878cf44a14232c2e0898cb051b0d75ba", +"T2T1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "e30c246d42be56746f751de9528317a89ecaf7c62374fa54c2513af4c1ce3962", +"T2T1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "2ccc6abdd8745ef35f8cc8b8e561fd53cdb0a61f64940729155c4dcfdc92057e", +"T2T1_pt_test_autolock.py::test_autolock_interrupts_signing": "2639ca95fcf89964484aa204842a275476da8a55c67c735150ca5688c16801e3", +"T2T1_pt_test_autolock.py::test_autolock_passphrase_keyboard": "a5dda2848329802abd60f48509a83065d383e16ab152b70b9ae0a0ee6f882bfe", +"T2T1_pt_test_autolock.py::test_dryrun_enter_word_slowly": "01c897656063439d5819bc71f0828221b1dab4d2aff11cb5e7ba407a673b9a6d", +"T2T1_pt_test_autolock.py::test_dryrun_locks_at_number_of_words": "77a88947455138a328272b7bfac8a8ea519120a1b25e3249b52830c9b2237d1b", +"T2T1_pt_test_autolock.py::test_dryrun_locks_at_word_entry": "1d6e55f433bf153bf4a061dc47400caaa1e3af131137d0967b9829cf5e80a964", +"T2T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "04441aa8ec1dff0775b9263f8080ea2a6de347bfe725297e61ede72ad354cb8e", +"T2T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "5dee73b9e855dc2c8f6ad422ac4c45e5b9668700fd6fc6f203066f418a714b5e", +"T2T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "5790634a3dda3554b04ea7eedbac8c4b0a48a799c48eceadf37a312e4ec7bee6", +"T2T1_pt_test_lock.py::test_hold_to_lock": "929c8a96edff20d9f56201030ecd99b4db6cb738eb265a3d7796765d670c70f1", +"T2T1_pt_test_passphrase_tt.py::test_cycle_through_last_character": "401595e194adde1fe74497b02a149be8056b4edc3c91aa7b581503a9017a1404", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "f478e6eebcc34507ad22712c6d6e52805fccb734d4be7501791f6dde260d36ff", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_delete": "618ea5eb84557dd038451c30b9859afb3d70b9338f51c6addce89eeef7f0e4da", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_delete_all": "3f407a3db33ee829612be741560fb17d2f2d6922a41982c98071dd9005f45b86", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "3a369c4918b44fa24a79a453c9b481a94f6e1f439407f322ee46b98374f0b9df", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "b2a5c011069a1f84e26be9d104a0ce516b25abb4ff7a70b65eb5c574b0dbb046", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "9cda3658c347e733f1e88803f751348a3cabde043b41692719ebb33c8358f835", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "34c3a4af12eee85fb513c12b9436ed7e60849b488ee1f403634d8ef6ecc3e310", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "fb91f43b4d222d2d2f616495565912f4ba5d51ba0c7703d0cac6302e2a9b00f4", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "326ee637eacb82fe9536474cd0255e91e347cdefa59c81222b0d82e57ab1ed81", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "fb91f43b4d222d2d2f616495565912f4ba5d51ba0c7703d0cac6302e2a9b00f4", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "9899dab7dd7718fc144cfd0532031d6f421ad21a592570be94616df6984330f4", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_loop_all_characters": "83327d95385e5c1ce7a2c7d50ece8dad66a2878d0dc40c43bab4570bce2f6214", +"T2T1_pt_test_passphrase_tt.py::test_passphrase_prompt_disappears": "86ded7588a1e4751eb3c65bdd8fe3e585101b5bac393ddb3ccfd8b6848f48d2a", +"T2T1_pt_test_pin.py::test_pin_cancel": "12ca725042c9b23e63c7ef35c6fa22c873a6c327cf61180e4c70b4e9580f55e4", +"T2T1_pt_test_pin.py::test_pin_change": "5726ceb88087e0912ce35fcb8992e9d185f908eaab271a89f895910b74a9a35f", +"T2T1_pt_test_pin.py::test_pin_delete_hold": "33ec64a50bbb9f2bb71318963f39c53ffbddfe85f0a1c81852c99cf9f331ffb6", +"T2T1_pt_test_pin.py::test_pin_empty_cannot_send": "12df7b7d24638d17e878be384f21eb3d4833d52af449f91745fdeb8716b2ea51", +"T2T1_pt_test_pin.py::test_pin_incorrect": "b9d0c5c55e3b380843d59ab00a7a3568de8348351160c3b87bd7430f48ffeff7", +"T2T1_pt_test_pin.py::test_pin_long": "a734a3899c2919b21f46e29684df99f2c1f3845daa1ad45924f8cc9238e19a5b", +"T2T1_pt_test_pin.py::test_pin_long_delete": "acaef6413603e043ab2ca47fb6fae7a5baf05e1bf3b41db75b12a3b7142b3c90", +"T2T1_pt_test_pin.py::test_pin_longer_than_max": "5db94c39bc652367259ee43e02fabce308909ae2b664a587a9beafa190731d88", +"T2T1_pt_test_pin.py::test_pin_same_as_wipe_code": "5a9b3687ea967c8589c83c95307193e3dce2479942739b76ee6cd42757b0dcaa", +"T2T1_pt_test_pin.py::test_pin_setup": "1c887cd92e528e25526d27c5eb3449207cbf43807431b57a6d5ee31f66c5ff27", +"T2T1_pt_test_pin.py::test_pin_setup_mismatch": "9196c27fac4adb524814420d5e4650c1eb8bf79cc0c37202d691bf25d3d01312", +"T2T1_pt_test_pin.py::test_pin_short": "12df7b7d24638d17e878be384f21eb3d4833d52af449f91745fdeb8716b2ea51", +"T2T1_pt_test_pin.py::test_wipe_code_same_as_pin": "7b02fd6f03c14321c2b66732a3546d0355211e63dab99637d49cb59c6eb99f87", +"T2T1_pt_test_pin.py::test_wipe_code_setup": "7f57d8d206af4711e32874851e9ea36a2af8d091f9600517ae64410eb8d1ed2c", +"T2T1_pt_test_recovery.py::test_recovery_bip39": "6ccba4bb889f14e9b1a1cbf72a468901549fa5eaac1a247d95d52276d945dafa", +"T2T1_pt_test_recovery.py::test_recovery_bip39_previous_word": "5b99ab1c5283da4f58a29f856f8e3da3a23dd9653cc20455934a7cb81ce761a4", +"T2T1_pt_test_recovery.py::test_recovery_slip39_basic": "c0234fd918d371e201f752320c4e14e4734f55b624ff4c584b92356293eb658e", +"T2T1_pt_test_repeated_backup.py::test_repeated_backup": "4260a278552eb89f2a82460f9c037148a112c00da01f7359e9eba9e764438f68", +"T2T1_pt_test_reset_bip39.py::test_reset_bip39": "d57e05dba6c2e1427e5865cfafcd630a53726bd130bc42949d895d2069630d8c", +"T2T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2fe186944277eba4c4d58e08676bbfc8fdf7b2e70fdeaadc634a28962bbf5632", +"T2T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a05f3a260cf356463b3e42bfb61653e2daa12f7a23e69030dd10a9c829031fef", +"T2T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "6c176c6dbe90d47d6d15a4e8754d67f5338dbdf8918e4b73594933799ec60405", +"T2T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "b04d52db5df763cb613a7059e85dfff7a94230ef5cecdff97b6d15c3e1a8640a", +"T2T1_tr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "9d648334cfe8862ee6572f01e0a0b0a48b253e69d3d954b0287cb843c9692553", +"T2T1_tr_test_autolock.py::test_autolock_does_not_interrupt_signing": "f503b3c7f4f94c7bb9fc281afbfcf31af5703d8f14e7088ab4373c9bb4f0f957", +"T2T1_tr_test_autolock.py::test_autolock_interrupts_passphrase": "1c9fafcedcd031fbb6de391333fee9b7d9716992004ae2b246cc203b173533f4", +"T2T1_tr_test_autolock.py::test_autolock_interrupts_signing": "6b7a8d23cadc1d88fd91ecdb751dafc061fa6183256f85c249f4d412118e35fd", +"T2T1_tr_test_autolock.py::test_autolock_passphrase_keyboard": "5e8424dd03c430c72b5f1411f43c5d24f406432dab7b014a654d981b59f8168c", +"T2T1_tr_test_autolock.py::test_dryrun_enter_word_slowly": "2eb2da5fa24c3a078f795ed78e90c241f4f06e017205573bc2054d4f30218b64", +"T2T1_tr_test_autolock.py::test_dryrun_locks_at_number_of_words": "e56107101cb86f4719f24d02a6665a8e31ded083077a659c4ea4eb3155dfbcaa", +"T2T1_tr_test_autolock.py::test_dryrun_locks_at_word_entry": "2521d58d8b4bff625ece8454a9d309363f422ef13bbd23bf881065b98ed3846d", +"T2T1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "b6116521cd1d4c1f8e7481b5118b153b6ed7dd443734d0989b27393241aba4d3", +"T2T1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d13c693f4c43b0025625f446484b48d6d4f828c9775999e4485d585e4afc2e46", +"T2T1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "94b8eab3c6815b134aba391e2bf539a58d4c011de8e7fc5cf9443778923b7714", +"T2T1_tr_test_lock.py::test_hold_to_lock": "7653f257a6cf2bf0c67301c847713b733994bc2db9eb5fab9315f5bb214489eb", +"T2T1_tr_test_passphrase_tt.py::test_cycle_through_last_character": "46821f9fd41babe3178b2aeb9be8b7919e45c8406c8eda41ffd8eaf99dde11ea", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_click_same_button_many_times": "a52960222c38c52fe9ba7da6a19be8926d7c9338d189e151768646554c630cd0", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_delete": "1ee17dd5a91ad571ba95705cb600f67f8c933fd63b51e3ab3a3481bdaa822458", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_delete_all": "7228c6b14220356be598464e1cf28cec503960059d31b06f845acd1312475997", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_dollar_sign_deletion": "dd4c716a484ec5c2b99d6c96fe4b5927afde1c32db743398fbfeba442e0b2981", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-78765865": "25ffafa07b9bcbc397f2a31f608e97db6e8637a031c31e5a5f65be8e25e4747d", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "95f58d06726d68fb8c5d2e20bb4bafd3b2f46ef93629b86e9a1842180f4a54e1", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "7c0df4ee01b38c2778f4c04583c781c6cf0ebe7f108abe4ff10dec18ccb12bc2", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-1cc97541": "2d002f1d55f52b9edbe5007292bd7888e39635ea5a91c0a6ea48d585031395e0", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadadadada-ca475dad": "cbd30e030b81b1877f2a7b25521123441db46b98e7c055e77510792be8cf4ed6", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_input_over_50_chars": "2d002f1d55f52b9edbe5007292bd7888e39635ea5a91c0a6ea48d585031395e0", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_long_spaces_deletion": "654f63657184ead3be7c8690e44b83034db9d970395c4c2a4955b8c069d6948c", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_loop_all_characters": "2c9d68f426448db213658eab6a78a167fe6bddb89ddebd309ff82ed68a2cbf2c", +"T2T1_tr_test_passphrase_tt.py::test_passphrase_prompt_disappears": "5f40ee9ff2b27cb9cdf08fc5e1b511f6e9db4cb9a1f299b142cbff977654ca9f", +"T2T1_tr_test_pin.py::test_pin_cancel": "e731b92ee81751f28db669092055dd8fa453066136c140df22666937a7a2aab8", +"T2T1_tr_test_pin.py::test_pin_change": "2845d217d0e0b986bb6efbd25665cbcd22a59b4fb5daea35ce7b8d8d39ffdc22", +"T2T1_tr_test_pin.py::test_pin_delete_hold": "7be81196a67cef698361828d3863c61b23f9c57d0102915411ab8b0e350652ae", +"T2T1_tr_test_pin.py::test_pin_empty_cannot_send": "571291602fead75790ee75119b285acb4a02fe4c5a7ffe7279b4d09d74bda317", +"T2T1_tr_test_pin.py::test_pin_incorrect": "801e482b6dafa676b005458bf397cca3425bfea237efa162aeeb4c27bdca8bc7", +"T2T1_tr_test_pin.py::test_pin_long": "ed0ac2dacf3c56e8035858322b9bb044de5c77f75252d42fc061bf9e3f0370ee", +"T2T1_tr_test_pin.py::test_pin_long_delete": "ec13890dcfc1f8c8101551fade7979c6e283422b9c8899daaf0200637014d05f", +"T2T1_tr_test_pin.py::test_pin_longer_than_max": "91b4de53b5bf49eb33abde359efcf13a01c2762e18f85fded06796b0aba25e81", +"T2T1_tr_test_pin.py::test_pin_same_as_wipe_code": "917a643d29eafad9727ae629a60fe17dbbccd729715802d6e5d53a50d2297b67", +"T2T1_tr_test_pin.py::test_pin_setup": "a7b54ed62032f27af9b3a3c729d1d829f7994c3c7e06c83f4867afa056d0e931", +"T2T1_tr_test_pin.py::test_pin_setup_mismatch": "eb32bec34b463397cb56cb639f75e9c6a777ee3b7646f5c1796206a6bb46adaf", +"T2T1_tr_test_pin.py::test_pin_short": "571291602fead75790ee75119b285acb4a02fe4c5a7ffe7279b4d09d74bda317", +"T2T1_tr_test_pin.py::test_wipe_code_same_as_pin": "851d682329b534f2c78dd59c0b67206f3910ad6dec5c3cf6562e5034ddc427ac", +"T2T1_tr_test_pin.py::test_wipe_code_setup": "98cb9191f251fedcae4ba8ce5d6029011e46a23a3a4bdbd1ae806923ca6ccab2", +"T2T1_tr_test_recovery.py::test_recovery_bip39": "280c82acf499234c03897bb5e851a8c6ed27447aa117abff157738af5b7c6be1", +"T2T1_tr_test_recovery.py::test_recovery_bip39_previous_word": "dc5c865ac6f1b701c93f5e9ec65038aaca3887ddd8ba9deb9b3ac8914e0082a8", +"T2T1_tr_test_recovery.py::test_recovery_slip39_basic": "3c2b01aaaa4752264649f33d34753a720d4a7c47ee4f12f9814de7e7702c801e", +"T2T1_tr_test_repeated_backup.py::test_repeated_backup": "4f2e505a0beebabda6480b1a399bb1ab8d88a9762d70ba830073f1e0ec58cad8", +"T2T1_tr_test_reset_bip39.py::test_reset_bip39": "3ed77107e86f51ed68923d2aa725a28fcbb0698172e925c9a44f13204144e92e", +"T2T1_tr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "053bc513a579cdfb4242d2b94ecf1f8bd63b2ecbf784df65a1aa6653521e57b4", +"T2T1_tr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a024bd49d3f58f891971345e78814089aed3474d0b2ae019717c8843d94f1a55", +"T2T1_tr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "28d7e19ddc88cbba4d3127dcaeccf5593d0a4831451140a00ec0b72ce188ad6e", +"T2T1_tr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "921d0e7be045c9045c328ea7c628be53355e15016cc5131ddeed6f271dd2d1fc" }, "device_tests": { "T2T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "f2e9c06d7f83ea3b0d961e75f63cf40608f33f371b1fe870412478831ad15942", @@ -9336,6 +13736,9 @@ "T2T1_cs_test_language.py::test_full_language_change[en]": "8a9e7f32e0c4123efbb4dde7a3bc62d9177ed4d0aadfbbaa114e64dee3d852d4", "T2T1_cs_test_language.py::test_full_language_change[es]": "a2ece6cef08534144aebea549c2f7b7dafad44200155f7bef4c6cd9085b25690", "T2T1_cs_test_language.py::test_full_language_change[fr]": "4b5d2ef1c9bcbafd1705576a34d0538dd25e5719c8ffa156ebccc2d04a2d15c7", +"T2T1_cs_test_language.py::test_full_language_change[it]": "c50c83202934b61e5e8c065f2330e41b3f364a72f64a162fd7a1b332c2d83f76", +"T2T1_cs_test_language.py::test_full_language_change[pt]": "bb3fcf5e7e925f135fb7bc245a2a15e703719db8497e8e83f97d2e40af53a286", +"T2T1_cs_test_language.py::test_full_language_change[tr]": "d8a39104334ddb25bd4432ca92682eaa5a08f2ea93f45877c2a07e3600956390", "T2T1_cs_test_language.py::test_header_trailing_data": "bd0f5504c03601f1c48fd8f44177e13c5b64b96ee1d7faaf463a9d42605f9c22", "T2T1_cs_test_language.py::test_language_is_removed_after_wipe": "3a0b7d6c772d90280ee9c77ee54a3849c630c952e9e430ddbd4710844d427908", "T2T1_cs_test_language.py::test_reject_update": "a04a7ec8f30e9ddee0975d46fda0a10f22c0e1e513283cc6045c00a52f8a3fab", @@ -10780,6 +15183,9 @@ "T2T1_de_test_language.py::test_full_language_change[en]": "bdf46f4dbac8af74ae3eeba6b34dedfbe6501e250a948e0700b2b8c467b62d0b", "T2T1_de_test_language.py::test_full_language_change[es]": "03aaaf27f1f4949434241bf81687a88d42e449019d6de857c0307562746ae20a", "T2T1_de_test_language.py::test_full_language_change[fr]": "9df1b2edcab533231f6bc5440563a1d3114d0b8f2515dda53192ad7d19f835c8", +"T2T1_de_test_language.py::test_full_language_change[it]": "4c283fbb82214c4f7e6cfb5ec97ee5482e061302f59e0c7d8f9c941903952bdd", +"T2T1_de_test_language.py::test_full_language_change[pt]": "f7f6f287d3b94163dbfcfda9f2d797917c8fd5bf5554c7a08a9f6189361dfc89", +"T2T1_de_test_language.py::test_full_language_change[tr]": "36d1a5ecd712052f26716c58928ab593ff17ba576d1ecf453fab99f41fce3958", "T2T1_de_test_language.py::test_header_trailing_data": "116c567c75abd93070cb47853ac07210b0e0f4d97b5940ada58ef365a6cc5749", "T2T1_de_test_language.py::test_language_is_removed_after_wipe": "4483f33548b40ce487e1c9d0efc3e6a94d17af78db7253d075635bec22a481ba", "T2T1_de_test_language.py::test_reject_update": "2326ff9cef030570cc9a4766f3f481850bd20602337c20b807555011f3d60874", @@ -12224,6 +16630,9 @@ "T2T1_en_test_language.py::test_full_language_change[en]": "5f6cec419aad5e5658f6fda45c2cd40fa4581823e7f9f0c4199970cd179bfd4e", "T2T1_en_test_language.py::test_full_language_change[es]": "6c3c6983dedaf60e8818c0acdff7f1ba83ff9106333d834b8bed02d910bf5b1f", "T2T1_en_test_language.py::test_full_language_change[fr]": "7e1f16d84163fa6b8a8acce859f5c5e97ded578c28f75629e4f9bd587cd051a8", +"T2T1_en_test_language.py::test_full_language_change[it]": "a4339395206dcf60a7887347f901f26c30299e8b75c96bf7d962a65596ec9f97", +"T2T1_en_test_language.py::test_full_language_change[pt]": "f6e2a81ebce150ed8ddd57fba3fe8bdda2ddde95aef5b02af873b374b8f0ed25", +"T2T1_en_test_language.py::test_full_language_change[tr]": "63799cc75146895cea5795456cfc6c53cf35f28a47ab7f685d26c248c42ae80f", "T2T1_en_test_language.py::test_header_trailing_data": "bf322715e91f7fb147f11c187d88813f6cea81f520030a9c71ac7fdba1b39f6a", "T2T1_en_test_language.py::test_language_is_removed_after_wipe": "3934ba66f069e0514faedeb36a08bc5f5b3931263018ddc8cc046e535a6564f5", "T2T1_en_test_language.py::test_reject_update": "78b8f16e00c5d653a7d5c0929d21ae8ae1c76798fe28f0eb6edee8e2ee8b0202", @@ -13686,6 +18095,9 @@ "T2T1_es_test_language.py::test_full_language_change[en]": "cb67a2e2dfe9144a9c9099501951fca5cf7df2d034556b6a99598311da342e5e", "T2T1_es_test_language.py::test_full_language_change[es]": "376683a130d6ac67a2c79b8ff3d43249fd60c3927322bcb7280a070a3aaf4cff", "T2T1_es_test_language.py::test_full_language_change[fr]": "b6ac036a7eddacbdb0066ce4589324242935f01c9af9523df89b32d3bb34af28", +"T2T1_es_test_language.py::test_full_language_change[it]": "7cabd6e226152d20b4a9489d9b435d991a5a9caa7c0d5bbf01d4ff77a840f654", +"T2T1_es_test_language.py::test_full_language_change[pt]": "afe813dd9763570a64c43374a9626acda23eb658fd17f88861d6144babd18c7b", +"T2T1_es_test_language.py::test_full_language_change[tr]": "343f6d2667fa35285efdd072674c0f2611b54bd5e31a47435cf49c3844b49861", "T2T1_es_test_language.py::test_header_trailing_data": "3a92b8f6d81355e4e1dae92a1811aec9a8d1e95df0e01ca5a21eb8395f46aa67", "T2T1_es_test_language.py::test_language_is_removed_after_wipe": "4109a07ce000d2041917a9e22d44f698d236214c9bd99eaf4da6a8be7b4291c9", "T2T1_es_test_language.py::test_reject_update": "af4fcd9735b37dce8a96d113629cb38e9f977dca094517de8140f3195f899f27", @@ -15130,6 +19542,9 @@ "T2T1_fr_test_language.py::test_full_language_change[en]": "69396b93a7625119c7d975958f76bad9fc3c7205886399dd140e9b349a772a70", "T2T1_fr_test_language.py::test_full_language_change[es]": "106369f4edd63c8d8f944dd2db6efd2db564eecd3fe5d32d498e84335e52f831", "T2T1_fr_test_language.py::test_full_language_change[fr]": "f412523214b630e19025608a766a49f4ab164e665807b4352ce181d6e1187aa4", +"T2T1_fr_test_language.py::test_full_language_change[it]": "56105b631b3351d9670aeb44c08be7351b112901e00aac0c8b103d2b72bf1e66", +"T2T1_fr_test_language.py::test_full_language_change[pt]": "fcadde9088d09f8abfdb3132f3e935cd021f3bae146b6fc79825f6a8b43fc0b3", +"T2T1_fr_test_language.py::test_full_language_change[tr]": "04ec75cda8b16fd6b9521ddd7362786869bbc13761149f39e89b6008f391f4f1", "T2T1_fr_test_language.py::test_header_trailing_data": "5eb574eceda92ba29ad18a78a5cb2b4916a654d4eb4540ba954904d50158a9be", "T2T1_fr_test_language.py::test_language_is_removed_after_wipe": "5894b4d4725cfac0fab38e052f42ae42a56e7981d6944d46b9d06010501267bb", "T2T1_fr_test_language.py::test_reject_update": "320fbdd3d6be3e1b16f9a4852e9f27f344ad61056e35467628e48ae960581e98", @@ -15262,7 +19677,4348 @@ "T2T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "b778429d3e6e732969589aba64524b38f95d8f44a3de665442860d9e2ad31047", "T2T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "465bc58ced3603bbbda63153438a924e752ae79303beeecfaced89aeffa2d147", "T2T1_fr_zcash-test_sign_tx.py::test_unified_address": "a35c54fcef2686b3846c4d56d082091fc3c172d88853e2307bc473f37ea67a33", -"T2T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94" +"T2T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "5c03427cb7e315cb2f1e036c2edb2cc7c527ac80783c331fda0749bf306bcd94", +"T2T1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "6c0edfd6363745e119c2abdec363e76c06a033cdf6754bb792949e836e1333d4", +"T2T1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "7809e0c69d041f7cd34b19dbeebf63986668370da18e22306405df95c3309135", +"T2T1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "2abc4c6191b399984b8994ba1f15c4ddf70b8e353111584e9ba36a530071a627", +"T2T1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "5f299e21342854ca193d47702484303c79ee2587fa017489b05d456a7b717dfd", +"T2T1_it_binance-test_get_public_key.py::test_binance_get_public_key": "960dd97e039a9660f9001a8c34abaf24294e77c7c5954942c18f48474f8f80c4", +"T2T1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "965f3e10745218db34d864fc22dc1f704890e937362aa0ac680d9457cd6f6d44", +"T2T1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "5b0a8a72fc446b93c31057f913f9e6383d285ee97fab484a0bc4b3f25a118a41", +"T2T1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "975ac1bd54f86b67763234b5e07d53eb1381974fda4a6ec3435dce5b6530afc5", +"T2T1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "965f3e10745218db34d864fc22dc1f704890e937362aa0ac680d9457cd6f6d44", +"T2T1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "5b0a8a72fc446b93c31057f913f9e6383d285ee97fab484a0bc4b3f25a118a41", +"T2T1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "975ac1bd54f86b67763234b5e07d53eb1381974fda4a6ec3435dce5b6530afc5", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "6760d6bae28ff71d8a8b45e8931864ac53d4fa33a96063d7825b2d0ab2f96ad3", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_get_address": "85fdf45d698a713e6188c32437f233cea219064cbb2cacc232139d66e0cdaeb6", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "3bd513ac54b12cadda4e22f12e40d332765025fd7fcb0fdecf8eb7ac367ebb6c", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "c5f0ceb2564546dfadca00f4981f6a6ad3a6efd1b53e7affb5a877c562e99c5e", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "9fcb080e9d14871c1379fadd60e4bd8bff4c3c4a683b52bff07c547816e6278b", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "9fcb080e9d14871c1379fadd60e4bd8bff4c3c4a683b52bff07c547816e6278b", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "e969335eef3fe0c7194717d46fe7998f77e216cb3090b5ce7216536828bb17d7", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "9a905cd1e4ec3d5646c51d9b13f89eaad3109e477e47559f411edb5ce95b0bf1", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "8cc911b65c7698b6a625b254dc38f6f4ca69ca2d926e2a1523d767684586d76f", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "b9445be0a529b8eb57db898d82df903050844e3100493a383fb43264f5a607f4", +"T2T1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "b9445be0a529b8eb57db898d82df903050844e3100493a383fb43264f5a607f4", +"T2T1_it_bitcoin-test_bcash.py::test_attack_change_input": "a1e80155d15d27b7fcd282f69d8b064f87e29555614f548d04695506ebb9ab59", +"T2T1_it_bitcoin-test_bcash.py::test_send_bch_change": "a1e80155d15d27b7fcd282f69d8b064f87e29555614f548d04695506ebb9ab59", +"T2T1_it_bitcoin-test_bcash.py::test_send_bch_external_presigned": "9321d4e2812481e32c00c62e59efae086432ddad8315797a2aa83ae5d28a8c6b", +"T2T1_it_bitcoin-test_bcash.py::test_send_bch_multisig_change": "f8a22f3cac96082f19f21beec8218a4c50a7d9083d76883d99c0a9da00c76c8e", +"T2T1_it_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "42495d1e0e33c99debee8783edc569a74b97e163560708eb3804480f23993e87", +"T2T1_it_bitcoin-test_bcash.py::test_send_bch_nochange": "529ab9b759e8e960718cbb1dd62dde531e14febea74302e558544028752fcd00", +"T2T1_it_bitcoin-test_bcash.py::test_send_bch_oldaddr": "81a5f3966cf04d5bf828eee4ade13cb6880f67aea3b0bd9f2f8d23c69655add9", +"T2T1_it_bitcoin-test_bgold.py::test_attack_change_input": "518141d54931dbcd5615ddf83b473078823ae373a14db434cee825660501a55e", +"T2T1_it_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "518141d54931dbcd5615ddf83b473078823ae373a14db434cee825660501a55e", +"T2T1_it_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "48b4870a31a6ac83a548ba5aee8582bc74e44beaf5eb6836ea33d7da5d992ed7", +"T2T1_it_bitcoin-test_bgold.py::test_send_btg_external_presigned": "400a41cc4596c9f4018bd65dad5f1809c86e8d0ce7c15edc08c227ee7d400cd3", +"T2T1_it_bitcoin-test_bgold.py::test_send_btg_multisig_change": "6c722be7918263fd017b455fbb45fe8c9fcdb19df9acf180736efc5f76b8617d", +"T2T1_it_bitcoin-test_bgold.py::test_send_mixed_inputs": "6cf44ec5d9fd652cc8f968f6f1c06e1404ad52f75739d1781bbe99ae813974b9", +"T2T1_it_bitcoin-test_bgold.py::test_send_multisig_1": "596ca86b46e49cba2732c72afab44c0efdacebe6d537932180f8c6eaa93545fd", +"T2T1_it_bitcoin-test_bgold.py::test_send_p2sh": "1792fa4a5a5dbacdf148ff7a5afcc53327798efc0215f99c67902174b1550966", +"T2T1_it_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "3cca02177affa4fa107ff6cbc56cd2db8002f4c20e6c4babc68daba301cb3fde", +"T2T1_it_bitcoin-test_dash.py::test_send_dash": "36ed0ce7c2a2287e61a1038cd299d0eb43607ad53da5dbaf7693d4142dab3c16", +"T2T1_it_bitcoin-test_dash.py::test_send_dash_dip2_input": "80449a8d464fbd697af181d4af7dec835d2069dea9d4a8593cf1f0c79e8be654", +"T2T1_it_bitcoin-test_decred.py::test_decred_multisig_change": "63681ff5157f47ff261044c39833da23101039f9e948612834c8eec3268c4e54", +"T2T1_it_bitcoin-test_decred.py::test_purchase_ticket_decred": "89ab7055a337ce8cdc2ac8034339fbff0adb9f116dd7acbf8a77307c7b70da35", +"T2T1_it_bitcoin-test_decred.py::test_send_decred": "26dd82b77f75422f189dcb70423de58da27c6ca5a102a71542665da3385610e4", +"T2T1_it_bitcoin-test_decred.py::test_send_decred_change": "4c0a5dcc0836d0a18cac31f252e7736ff330dd5b01da75a07280bab23ffa1441", +"T2T1_it_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "ea193462e3bbfd500d3e5de1af672fb28cbef1b8012adf1d804e9048ab98b05d", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "58eafb1f104a2bdfd1cfc3e1ed1c9045a462acaf402560b06b830cb584a2f556", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "522818bd704b9b28c54d0e6e7a28765b501a391a5dbab28e284d4f7227b43e91", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "6284437216d82456d9db3d3f982dd7b7cd20f054a9b6f6e125e74560ed077512", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "6422782caf7e2398ce08df519121bd77047c0338cf33340a0d626530d17b2007", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "52ffc62ef8b00ee0afa1bb24917c4f78ffa90269866f85e249b5fe6d6c58a2a5", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "fb2aa3680be75cf2c6a0e19bac1029174b24f1aab07fa0d4f50bfdb176e3a771", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "2cda4518fab70b367ec938db71d3c1125070fc21c7aea859eb779d84a2ce2616", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "358ddb728669fd62673fb1039d7c27530b84cf102f1ab4b3082b8f5ee795220b", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "aa8e5856c0299b398c10743fcc09694aa125d757af393ec12fe37c7f99663b9b", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "43d3ab2763fc77f61d1c7c2e5166b1d9e69ceabf28a3e954054f74813f636f68", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b44fc5580770bff555620660a8e1c2d29e92b1cade72d37ed03bc5b8b4d5af97", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "4013238c1320a165b49fa0d5e22b094a1122607414228e7ae5193513d201785e", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c497b63cf81d61dc9cd31f9983968f2a5ec37e2e041bb8f7a02f16ee36eb6c62", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "8fd35de1bb249060274a100ccfa51b410f7f35d1b91fda90b0fb3ba9387f328b", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "d3f6f66db8184e64c8e774bd4aab3ac2035cf95703fb4c85c5d392e0f664bc7a", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "97627f63cc500fc13933f0935b61783749d1dc688143e473ed09b22988cceed7", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "747607b628205be2a4b69c4012a26a6964896408961f86f0ca8cbf75d9ca4a79", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "16db6dec85eeb1653011d17045c606eb5643b44338b9a7c4793bd901f4c7fd7e", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "58eafb1f104a2bdfd1cfc3e1ed1c9045a462acaf402560b06b830cb584a2f556", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "522818bd704b9b28c54d0e6e7a28765b501a391a5dbab28e284d4f7227b43e91", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "6284437216d82456d9db3d3f982dd7b7cd20f054a9b6f6e125e74560ed077512", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "6422782caf7e2398ce08df519121bd77047c0338cf33340a0d626530d17b2007", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "52ffc62ef8b00ee0afa1bb24917c4f78ffa90269866f85e249b5fe6d6c58a2a5", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "fb2aa3680be75cf2c6a0e19bac1029174b24f1aab07fa0d4f50bfdb176e3a771", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "2cda4518fab70b367ec938db71d3c1125070fc21c7aea859eb779d84a2ce2616", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "358ddb728669fd62673fb1039d7c27530b84cf102f1ab4b3082b8f5ee795220b", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "aa8e5856c0299b398c10743fcc09694aa125d757af393ec12fe37c7f99663b9b", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "43d3ab2763fc77f61d1c7c2e5166b1d9e69ceabf28a3e954054f74813f636f68", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b44fc5580770bff555620660a8e1c2d29e92b1cade72d37ed03bc5b8b4d5af97", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "4013238c1320a165b49fa0d5e22b094a1122607414228e7ae5193513d201785e", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "c497b63cf81d61dc9cd31f9983968f2a5ec37e2e041bb8f7a02f16ee36eb6c62", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "8fd35de1bb249060274a100ccfa51b410f7f35d1b91fda90b0fb3ba9387f328b", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "d3f6f66db8184e64c8e774bd4aab3ac2035cf95703fb4c85c5d392e0f664bc7a", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "97627f63cc500fc13933f0935b61783749d1dc688143e473ed09b22988cceed7", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "747607b628205be2a4b69c4012a26a6964896408961f86f0ca8cbf75d9ca4a79", +"T2T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "16db6dec85eeb1653011d17045c606eb5643b44338b9a7c4793bd901f4c7fd7e", +"T2T1_it_bitcoin-test_firo.py::test_spend_lelantus": "dfbca8c68329e889dc770f650fa8eb6e3df1eb2d427693417eabd3a624f639a4", +"T2T1_it_bitcoin-test_fujicoin.py::test_send_p2tr": "db0ba5135ae8d8ae2aa7a12b89cf6c80086706ee1e69b76b897fb3b3c95941f9", +"T2T1_it_bitcoin-test_getaddress.py::test_address_mac": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_altcoin_address_mac": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_bch": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_bch_multisig": "10cecbf16fb75dc0f16c2cce9ff7dd2edda4f07c00ec5158f95c553152c18a24", +"T2T1_it_bitcoin-test_getaddress.py::test_btc": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_crw": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_elements": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_grs": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_invalid_path": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_ltc": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_multisig": "6602d4fdbef7ff4c04a95b99cc29c7f43b791903d48d465877b7054a3e6cfc3e", +"T2T1_it_bitcoin-test_getaddress.py::test_multisig_missing[False]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_multisig_missing[True]": "7ec7791c9d2f8f9710a686ecb5a70ecc40258ac8cbb66d16dfea2d4f4390520d", +"T2T1_it_bitcoin-test_getaddress.py::test_public_ckd": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_tbtc": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_tgrs": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress.py::test_unknown_path": "65da8bca65d08c68e9bcbad6c7c8b2761a9dac139cf822a357e81f7ef16fbb60", +"T2T1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit": "f630a4f0c13bb6b3abe0e504c6091a0955dd369f634e8f22382f27b1dbfabb39", +"T2T1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "446d7af66d902c3a4a5609bcd7b1830fbd1557a3edacb9ebb4591db3b9bcdaf3", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "9f017cd53944709f191f4f006611883ad18793c188f196048f4a0c37d71534b6", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "42b38d9e14df3dac33173637e9d14005e4448c26e6103c0b59ef1d197c9b4ae9", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "57d4263a7a10131f048deb274220ae4a21a546ede9d9924e5dc7df8de637e278", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "a30b4b238f404cc7e9b58d4b7600242e63ad0512b274fe1f30564c4cdd6010e6", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "a939915e34f9ce14045b399659e6682e44bde54fe0a5295c3676ae93e231d8b8", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "9b6173cb2c54842449d9371e97a064aea2cc2539226732ffad8ee4328de15f2d", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "198f4aee631d6acd963f006ab4514d6782c046e1a3c5f9714badcbb786272e5a", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "a41f68eff4dec3a54816bd375b416bc1b6e5ea687cd35743e35152101ee32f56", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "8689cdd6f2eea13366b54e15575789b09a938eb75f9a60a42971263f0e57f7b0", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "1392b2e97d7497d526a5359e12065a160db3ab443555e38d5c37e5df23d722f5", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "fc9558794dc05f448bd454d51eb0df9c6b3ea8c9c1273105fdcdbc47e8746dce", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "bec157ed79eed5d7b198f403d37c7a7ecb66f6fe5ef79008b7b1099d7f0be824", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "7e0675bcefffa3a12d0342988c21ff0edb014eb4c63d82d8e8e587637434cff6", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "f174fdaf44bcfb40fb6369364f9c4e98838f6e9a1a93afd81ed9ce478547f0de", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f8316490aa49e95136a3f87a0257ad973e2a12434882f130fa0dd04078d0c209", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "864d87edf304ef193d6470ebf59a34c13e51cf418682790139ef24d629b6f87d", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "f84540769e009ac523ee41131b2a47d1ea9001bf5b0ad16b5b73fcf31a9cdcc3", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "1347bd1220a81155dd80410b13998897b3b42e5aed0341f69292c96f28ba433f", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "73782c82e51d3ae72b5afa432ca7d022e24a6a9c27eb07cc96fd4b29b9eeb176", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_15": "7ee110ddf59055cd201ae898bda090b6dc24712b200689ce8049f8324d375c82", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_3": "4d5fc82379b23d2e38aee90b97c285608682c1209a378b0e8a4a0ccd9f3aa191", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d019ecfd8bc4caac1f721862f90225f64bedf3183b039aed38fbe8515362a077", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d019ecfd8bc4caac1f721862f90225f64bedf3183b039aed38fbe8515362a077", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "5b544c987dd9dbe0497047a05b41898d35eb3e1b31473c56555b7f2a22ba0ab7", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "6095b03b2da9552ecc087dd887cf236733335c238bf0451338b75dea98d67fda", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "212d525d63c972dbff56ec17ed08eaa9e7a9177bca5e2d129c6453995abd950e", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "8d48e98aff87fd9b1771e5cd24f556b8cd5a1ece4d3d7b6804d29d689826c460", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "00653c6a94004fc3d15a1265729d4910f54e48b285f7a44573cf0cc41839bfff", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "83e552d7ff7fbdc17d00733c18a26f249752781e97bcf2e1b1d50f68d1b2c4cc", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "71a1d6955795afa8ca4192061e5af06a1bd0c41b2d078d7819dc2d42ab7d1fc6", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "48181f9538fd5af9c6ae8d2e9d1da69e44691a5674dc844b2cc2f89bc0e1e733", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "b0105031a2346848564edee7e1f5c64198b667592d018b1d7dd0f5d35dd0c0c9", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "55c00916f2f12e63ef79e57bf4a20ce701519cec237d3f0b00f536f51f87603d", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "f650eaaafdec66ae46ac1b7e6d560f8db8a786abc3e0ef213dc7b03c824a20e2", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "e62cafb90cfd94b71e0144a85637ff49e997c315f79365dda1b3aadef69f5b89", +"T2T1_it_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "a8fdcb488412c816a7969f58c77e722f878c5961b73c36fda8acd7bd573be97b", +"T2T1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "baffb45dcdfc96a05de466db267a393d9634bb05f5ee0e8e8e116f706b079df2", +"T2T1_it_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "522818bd704b9b28c54d0e6e7a28765b501a391a5dbab28e284d4f7227b43e91", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "bd4dee6348612b567d414f064d63e470705c4f3280ff8ed97fcfb8385efe7e60", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "033c1ce74f70628815fea5a7af33a2b5cae1871837678f807da67e8c35c40023", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "30425b588bb2cd0164efc9b4ba27863b9138a42d82ef0e1c25f3c1dca3d998ff", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "27c8015c146498c2b921315b594fb52c546360244cd0446969d8d8d92fed2263", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "bce3c65fae50fa01347564bffa86d36ffccd1cae740aea8d4045d11fc466ca37", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "3da415ce0dd9c6d8612e18e02c568aa9af1afba40110e379c3941b438e0d966d", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "02141777596b8f73c3a3a732242408ea8b405c0828d530e77b5f1c265977225c", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "aad4b37aa97df58acfdc6615cfdcaaaf27349a20751b13035b3db383b282bf24", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b44fc5580770bff555620660a8e1c2d29e92b1cade72d37ed03bc5b8b4d5af97", +"T2T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "1922dedcca303c65d5b154c4da1b9dcc208e45ed050eb2a74eff9335df0df9c6", +"T2T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey.py::test_slip25_path": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_grs.py::test_legacy": "94e943ecc7d42c3a395388947e2f55e161a05edb43a080f95db58e4bb0770c5f", +"T2T1_it_bitcoin-test_grs.py::test_legacy_change": "3cc0a940b743f312b9e2ce5e6db682c9db49ebb062714dd78eaf909a44e8771e", +"T2T1_it_bitcoin-test_grs.py::test_send_p2tr": "6187d0566a383307b7b017847a6be609c8e0778b5ba96e0a408dc98c521d731b", +"T2T1_it_bitcoin-test_grs.py::test_send_segwit_native": "8b23687b00b267ff42f03fbda5bd40b68ddc7bd3319cfdde7be54a7cc3418973", +"T2T1_it_bitcoin-test_grs.py::test_send_segwit_native_change": "1ae851601188b01cea1fe519f8c1de8cb676ca8841a0dc3fb0e2f829cc6d0b26", +"T2T1_it_bitcoin-test_grs.py::test_send_segwit_p2sh": "c9032c441612b49b933e133d4b5f5a3f8ffbff08cdc72c58f5f9b73d24440934", +"T2T1_it_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "5277a06e6a7db4fd231f17ee30160705086da3aa732a09df322d8f5cfb57704d", +"T2T1_it_bitcoin-test_komodo.py::test_one_one_fee_sapling": "4f4712a7cb40cf2595a83e565a5326c690329ac65af3ded63d418549d007b733", +"T2T1_it_bitcoin-test_komodo.py::test_one_one_rewards_claim": "64d7331d956be5eb08ed8d8869cf6c829b7af2e1cc8307ddee94894379b5d50e", +"T2T1_it_bitcoin-test_multisig.py::test_15_of_15": "026eb984e56ed5b8ed8ce6b120a59bb7f778786cef72cca778d7424b731f2852", +"T2T1_it_bitcoin-test_multisig.py::test_2_of_3[False]": "c8455fd0e603682c457911ec743916f5c8f4bd231b6b3989a0d645cc456376a1", +"T2T1_it_bitcoin-test_multisig.py::test_2_of_3[True]": "7dd2bc6e413f70fb7cd7ce2396652b197f4759c8a35524e82d6c8f66be43dd22", +"T2T1_it_bitcoin-test_multisig.py::test_attack_change_input": "53538f73cab017ebffdf6b280fb698276937c1373d8424e443d54e652fedc944", +"T2T1_it_bitcoin-test_multisig.py::test_missing_pubkey": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_multisig_change.py::test_external_external": "1b0c3e81afd2078960ec127746a39887f45e7ba65b4281682d76f184ebf41bb9", +"T2T1_it_bitcoin-test_multisig_change.py::test_external_internal": "5aa921747ca82d4886e9c01206b382e579f656389ad59ba1cf061a5d17f2c02c", +"T2T1_it_bitcoin-test_multisig_change.py::test_internal_external": "5fd05360774503704befe8c7fa1210939169479c41723ae90191c0e2137ccb39", +"T2T1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "b6104ad7521ef88b4592faa341fbf23e904894d5f5dbbe7f5ece6c8709b473f6", +"T2T1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "3ea94270a330e8f9ce6ff877106aa519c920e3a83df734284fcfeade85b3349c", +"T2T1_it_bitcoin-test_multisig_change.py::test_multisig_external_external": "2f70bd129545ec90adfdde1bfd194f3fd7c6a75cdf5d5bce67d25a753879a763", +"T2T1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "b5d9044fb35486b766171053d8cac5b43f6fbc05bd1a689354a8fa57b3ef253d", +"T2T1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "742b2df95ae39be83aa90d10b7847a209a9e6e74a0f7cb10e9bfe23e186740b9", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "73e51e0380722114f681cd8696c6169c14f416a4073c1e45b8204a7a000ead50", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "a593c8bdcd6aa3d2d6701d09d4a3f5625eb50cfaf353d092b5918dd9b0fb66c5", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "ff6a7a742911e027f9299196de5ad988fc34ed4877ca3de6523fdad67a999635", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "0e9c82895c7c02a73b61aae0fc7154284c36a335f49fc53d62455b132f8b417b", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "bedbb6ba7fafa134422ac34d5cc071d8032b49ad4f8f0de64fefda6097e6aa57", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "14304b4864c9b05dd882522abce5761043d6a87af489e77faa222f6aadc6154c", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "034626013e73f9d37a118794304ac4e9d0588d6d13c09c66d8447e4d11ed9636", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "b1a01d23b2cf05cf75a2791fda8d506927d99f87685ec60eb2662c6afd11245c", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "a1beb4c44a38aa72aa30f0ce8dfc611e561c0dfe2160289ea2814b31023ed4e7", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "c03d57cd28c75a1fa78341943e05ff6082d0ced11e1da5df58a46e000b16bd7a", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1778aa629484a88a903f8c71fda2cdb963a6b5a2766b4d7b6ed55ac638993ced", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "d7f223fd89a42e3bc74ec73b170f88bcde8d4c688271b98604aa9f54808b21fc", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "6d01559fbc21a27e05e642a7c7c36183ee80156b03e70374dd76e1f6db36e929", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "9401be51ca0e5c8dc96fc5eebaadf0b1cc1d21ee77700c5c151595677f6b4d4b", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "3b7e9d788cb8012a3ffa34cedc1cbc97415ed80ba41f9a43c8b675aebb578f8e", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9256552fc6d04ad06ac83d160ee2acef98a89d15ba5d614d1be421d93bf568b3", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "fe02395c99a66e923ab57d5fc9bc8898c8fc80b42c15042ebf969270d36790f8", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "c7f2e7c1da20ddeadaecaafc6248a918d7319d1b0a766d66300656fe99129943", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "98f1b0574c565f516a0789947f8e132c4c8492277ba006b0c8d080092bb7f0ae", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "8fbf9fa4dcf72c39fffb28d790f7f6c8dddd27e7b01f7abab6c1be7ea906a0c1", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "09db9ecbdd934eb16caf1841acc1ed7f5e29ebdb84b27958976f1c1a8f2b8b27", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "c7bc1747c59b955be267c75a487870a0bf9fe6cd76e5aaa836989f193d00748a", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "94ffb01e6a27db60249f437f22bc5fa585a84e2fee688ad60124eb651d864d23", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "981b6f2d3cb9115dea73ba912658eb92a9e628727ca07e880586a5bdedc92f3a", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "b340aaae5cf08554ecf78019060327bc1cc07d31b72dbdb195f8c6cb75c55101", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "0b7fdc3521f7c3c41d599d838d3f7c6e201054b2589a94b3f357e940f4b4d699", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "0600964d9c4206b82d508b21d0ecbe94d0df16560e7a1518af0db84af32e05a6", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "b40573da0c13a4cadf06387c0da52d5a129205a6706e34529b8a649a8c3119df", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "970803f1c7937cbdec528d5906a138823fa5ef7cfeb62dbca64f536f6ed3de3f", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "cb50f440598dbd8724695a3dba7cdba4be994878df5d5ac4c7ed1dee3fc381ef", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "0870db6e9b43be4e3d5674c946c05f201029b22ab3eb982cb0cb4a1d15e6b318", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "1bb1305c5b347f60b78949ecad66f82152202898b7fa937f0db84f5dc6cdd05a", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "cb50f440598dbd8724695a3dba7cdba4be994878df5d5ac4c7ed1dee3fc381ef", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "cb50f440598dbd8724695a3dba7cdba4be994878df5d5ac4c7ed1dee3fc381ef", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "cb50f440598dbd8724695a3dba7cdba4be994878df5d5ac4c7ed1dee3fc381ef", +"T2T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "09896d7e81e31abd36a0b7b16c8ff6a9f1923189c34627eaa28ae382d87000d3", +"T2T1_it_bitcoin-test_op_return.py::test_nonzero_opreturn": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_op_return.py::test_opreturn": "a8f8e64ae199e1d7f9aa3fc9de8727ac4a066445d9f36aef735f6e61dccb4e18", +"T2T1_it_bitcoin-test_op_return.py::test_opreturn_address": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_peercoin.py::test_timestamp_included": "529a7a742a53d4eb09771706b321391a2e00c259c0dff5132e927def9f5eda27", +"T2T1_it_bitcoin-test_peercoin.py::test_timestamp_missing": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "929b7803ed554a0df77e9e623012db7dddbefd5f8824a0cb872d2acecdcb8b8c", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "358c6c45de37c2a1ce44b956ffcd32828e3a67d7d891f89b819f632bcaabb701", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "358c6c45de37c2a1ce44b956ffcd32828e3a67d7d891f89b819f632bcaabb701", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[bcash]": "8e53e62f8f8caff09b6c704e9cef04f6aa64f8c9d75dc9120992c0a9fef8b0b4", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "eb7252297e7e92ac08aae91d71bbd77a7a1a85a9aa40f510ac143b6bc2360bbc", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[decred]": "2575888a37d6b222de8bcc76d2cb8c2deddc750e215fb343b7b870d809d8cd6f", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "36680f48c55aca4880b0aafd0494a07e438371f924215f7e70f7e585953ba994", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "8165fb5347c678bbaf3bedca6eafa121c5c012dc82c02f97e21623c4e5838dee", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "37f7aa254f5b4ab0a774c5125eee32d95836c7238ce2261842df9cad70b5b839", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "a2b9606c87585fbd22356f27d0f055f32941f34d336c7807661d5297663f48f5", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "d0db4f7a8fb96c8138625c1e965702fae7a0d5dd43cf8522b86bb886eb25deaf", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "d0db4f7a8fb96c8138625c1e965702fae7a0d5dd43cf8522b86bb886eb25deaf", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "aed930e27ad1e8e33303063b2ccad35f3c9c5de968cc0addb22757351ec1b7c4", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "0d87f4628a3d27e8d9f45eaff6fe9a0dbaf466f63375693a012f1dcd30ee2cb6", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "7dad9e50c34377f68aed4f0e6b04993b9df4d399604f18711675af0ca93a2d26", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "7dad9e50c34377f68aed4f0e6b04993b9df4d399604f18711675af0ca93a2d26", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "08360c8a2db99a342d382f4a4f4e50b22d8c5c7e4b677691b69317e4f78d902b", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "553c1ab84c41b899052f2d80c6752d2c3b11048f88c60eee62d7daa881290426", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "5edad9e4fdbf3138b7d2e6456a73ff4b272fc14d37b4b9fdc0e05c9128cdfb88", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "5edad9e4fdbf3138b7d2e6456a73ff4b272fc14d37b4b9fdc0e05c9128cdfb88", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "1679c1431d4934dcf31d59e776145146ad99b806973e3446acc2928644bfc4f6", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "2e9435c0b0c97bd3bb3762ee7b9c075905dcfc2ba206a9e897b71a56f3c5b205", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "7474754064071eaf1ae6c49271febacfcf3544250b6922e0235edb1b6a807c4c", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "7474754064071eaf1ae6c49271febacfcf3544250b6922e0235edb1b6a807c4c", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "14f8c38e3909558e80186422de086d86eb3d2709d41b068eba6635ba96f96cc3", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "0137aa2424fc9144125c04008f791e11ff17ef8d73edfb70c2373b4cbffb92c5", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "0532929c415ea18f93d0579005244b4038056ac5cdc7e3bcda62ba67c7334a54", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "b55d481a840e7de122ba9a0f2bca343e8667867710141fc33c9a03c910493c01", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "3c9786aab80bf02d4d0831d8e2d7ef939d7048e79650fb82b800bd552193535b", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "3fc89fb8e0ce078728aebd1cf7af7fc9b3cc6fa90d14883421304924c6a18891", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "e709d7bd33258c445ef9e2a4adaf81ef4fc516ce425d672ce64edfdc098da6ef", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "9b7908002832f5a6767e601fa49ef20a578043afa51591e2db26ff8d339307f5", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "9b7908002832f5a6767e601fa49ef20a578043afa51591e2db26ff8d339307f5", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "5add762e2bb8695244d7addc7c858b5eab525b56310abed5cb47349eafc0e88c", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "37bc5e7f9963682e633c53fb418880932bc18173a0ba0a91797d1cc06a60c084", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "9ac3b1409cdd6372739a94405a8843f8a7324546f4f15d1154077156745969ec", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "9ac3b1409cdd6372739a94405a8843f8a7324546f4f15d1154077156745969ec", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "b40a68085527ae062a18bbf8255a9570e9fed5083f66946dcb7015b8423c4742", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "bcb5502cd623e195cbc041be62aa04a17d91813158dc14f9133341565ecf0ef8", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "a79cfa411981dc2b5d46b079fb6d1137c456a46094b6ab010ed470994ab2216a", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "a79cfa411981dc2b5d46b079fb6d1137c456a46094b6ab010ed470994ab2216a", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "89e42f0492d53483c78992256151254effed5c8f67cc6e632b1d82a1b65d0bc3", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "8ce8303424d62f4d80ce3a57807b1cfac9effa8a8c1c4bab9c681ba978b44752", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "891773cfbc5b780e4e68ebd5fd9db8db889d7b864bd49dad599d25529645193f", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "e00349c1a41c350278b78c270903736d2e18d139d5fa9cdf2a3e4fc6385e7c7f", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8bc4d1c86c7ed251b632c6bcea89a46d4b91ecbe6354469e9a4768d13d463c13", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "28425b741119ed2dce22983b9346ee2323e7625f147b18d0019baa4689a7f8d0", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "15bc1a91824086cba909d810e85d8571bbeb855529c4e527934861c8466e4a31", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "fd89c1f636dcc617b09e00cd128425ab78404591be9bc7d4c6bbd5164d838c5a", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "8d4f2a815819d0656a64ababf31cb8679357246f21ae7415f5aa0bdc913402de", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "42078380431e311cdb27c2a28faa5961594c7564cc3c4bf02e7923dc559b1b84", +"T2T1_it_bitcoin-test_signmessage.py::test_signmessage_path_warning": "9108933703d16b3a5ba0e0279215593756963a871be996bf7da1cb0e25611045", +"T2T1_it_bitcoin-test_signtx.py::test_attack_change_input_address": "a7085836f08c37e537c31c8e642d45de063196d15798905b4d796dfb4e0d4c7a", +"T2T1_it_bitcoin-test_signtx.py::test_attack_change_outputs": "98bb957342ea5bb456caa0a11c54f01a21b0add98e54f196d7a2bf01c97e2202", +"T2T1_it_bitcoin-test_signtx.py::test_attack_modify_change_address": "12bc0c53152e3f6a498528f6a78f7d4a989ffa986fc172408c635db41b09149f", +"T2T1_it_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "12bc0c53152e3f6a498528f6a78f7d4a989ffa986fc172408c635db41b09149f", +"T2T1_it_bitcoin-test_signtx.py::test_fee_high_hardfail": "efdd4ebb6f4ce2b97031f082a5a1d847efc59149d959528524624e8a216c923a", +"T2T1_it_bitcoin-test_signtx.py::test_fee_high_warning": "8bc05c3fdecfafdcd3bc70cc08f9273075ef77d8df35182c2221ec330fcc5bea", +"T2T1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx.py::test_information": "a4f48fae45a0e91e3883c35809f56c597081b6543a60d6eece67df614810b9d4", +"T2T1_it_bitcoin-test_signtx.py::test_information_cancel": "e148c6d71fba0842bf05c96504e0a386b073f211ed05984e244a95d02dd6d565", +"T2T1_it_bitcoin-test_signtx.py::test_information_mixed": "aa4bc0d5ecccfda698768d1777f4ddf3c7bf2dbdb33d5564d79c205a0c6e02fc", +"T2T1_it_bitcoin-test_signtx.py::test_information_replacement": "7bd6a11ec811e850af6b484e78d302ffea86831c58fdd63655e49ede61da1979", +"T2T1_it_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "ed5fd77ba67a97f29626957136a3f5c8d5ee4f192f213b6b1237e0918b588523", +"T2T1_it_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6899f494e081ba7fc9b44c4856daffdfbe3603622a74d404e2eb4883a19c2143", +"T2T1_it_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "701a3be4a6b483dc1d3db7f7dc81526b35ec0944acadf236523f5349f3d08e0d", +"T2T1_it_bitcoin-test_signtx.py::test_lock_time_blockheight": "6899f494e081ba7fc9b44c4856daffdfbe3603622a74d404e2eb4883a19c2143", +"T2T1_it_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "701a3be4a6b483dc1d3db7f7dc81526b35ec0944acadf236523f5349f3d08e0d", +"T2T1_it_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "055ed84ccd92e218dd50158c59476c7ddb217f105baf4873f5260e2dbf0de252", +"T2T1_it_bitcoin-test_signtx.py::test_lots_of_change": "13a44423ae4fe2d471ac63bdfa75fb3a788bb1a9b979941d4e9178bb4319aeb2", +"T2T1_it_bitcoin-test_signtx.py::test_lots_of_inputs": "f20ac7abee9440970dda50312f828000f451bf3596bce629b87e37da3ff5fa0e", +"T2T1_it_bitcoin-test_signtx.py::test_lots_of_outputs": "125000d3fc0dffb85c65c41657a1de3e86ad27e94a529b2e5ed91759d067d9dc", +"T2T1_it_bitcoin-test_signtx.py::test_not_enough_funds": "12d66eb9aafcb9c65e49b008fba39cad9dfe91d43693df9beb571b6e3096c9b1", +"T2T1_it_bitcoin-test_signtx.py::test_not_enough_vouts": "b8cf4bde2ffad125ecc020307906000299c44309c256ab8b2e2533a024345e03", +"T2T1_it_bitcoin-test_signtx.py::test_one_one_fee": "f03e6fc70cacdc9f19fa95bf348572c152413113d33285c90b82b446e90fd036", +"T2T1_it_bitcoin-test_signtx.py::test_one_three_fee[False]": "de77fe855b7f66fe6feca2530cf460b9abbd638847adcf6327fd5c245d777899", +"T2T1_it_bitcoin-test_signtx.py::test_one_three_fee[True]": "49e805e0e85ae76d813dea30522d16029420007ccfa6f24eb07a06ada1a9542c", +"T2T1_it_bitcoin-test_signtx.py::test_one_two_fee": "0ea3e0bbf51b315a67c74aab004ce2d7d6d7c46bd67ffb2bab08a7ccb05612af", +"T2T1_it_bitcoin-test_signtx.py::test_p2sh": "df680b1092c0d2a875e13f6a24d356d3c597644d6606bb8b34f2b08775aa6316", +"T2T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "93dc79841b8bb0ca7a76ecca5816012b543ba27e43e72bb4dd20d784742ab52e", +"T2T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "93dc79841b8bb0ca7a76ecca5816012b543ba27e43e72bb4dd20d784742ab52e", +"T2T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "93dc79841b8bb0ca7a76ecca5816012b543ba27e43e72bb4dd20d784742ab52e", +"T2T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "93dc79841b8bb0ca7a76ecca5816012b543ba27e43e72bb4dd20d784742ab52e", +"T2T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "93dc79841b8bb0ca7a76ecca5816012b543ba27e43e72bb4dd20d784742ab52e", +"T2T1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_signtx.py::test_spend_coinbase": "d01936f50da495f8113f24f619e531134e1b948d771538a6aade75207e4ccfe3", +"T2T1_it_bitcoin-test_signtx.py::test_testnet_big_amount": "da36dda2a7c5dce3b1064bc89df5117f69d800b67b4a100e8ed4607d63b3249d", +"T2T1_it_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "e13906180403a373eadf67609626d5ec06786cef5dcf4d77c9bfc3828fc39b6e", +"T2T1_it_bitcoin-test_signtx.py::test_testnet_one_two_fee": "12bc0c53152e3f6a498528f6a78f7d4a989ffa986fc172408c635db41b09149f", +"T2T1_it_bitcoin-test_signtx.py::test_two_changes": "3288c32455ce8154d07891e018d9a7b29deaf07cd00bd6d01c9a4eedcf55098f", +"T2T1_it_bitcoin-test_signtx.py::test_two_two": "0ff49fba768949078504717f8bcbbba37170087ad9c321ce30c40c85e00a366a", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "f03e6fc70cacdc9f19fa95bf348572c152413113d33285c90b82b446e90fd036", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "f9036798a17ecf40f376374de5cff0e37d84dbffb883033aa092198a3723e2c9", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "b1e9e6630fcc8107adb694c5f00af6675f4e9c425205f9dbede926180af2a4f4", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "126d6d6937cb520043e095dac4e942994827aba40f2759fbb2d17a6d413ccb42", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "f03e6fc70cacdc9f19fa95bf348572c152413113d33285c90b82b446e90fd036", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ecabbeb050fafb15db0ed71ab4ea8490e0da897dd0032df465e86f903b836659", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "66e7c7dee7e1a38376c7ac78acfc903efbd450d6a00a36ce0352ab51cab04398", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "a42cb7b0c9b682a7ff769f5357024609031fd49dc2d5da4d1dfac0601d982dfe", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "4f6740ab3f66ce8be8e0f30843c95f86f900634c3f1202110b4ad9f09319ad20", +"T2T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ecabbeb050fafb15db0ed71ab4ea8490e0da897dd0032df465e86f903b836659", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "e0975fc776a0ca514a7bbe457a8e4ac403646dd870c54cfb4d88aab39bb92ee2", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "f266294fccec6793eb00350a5d37274e2853b588d2766213ff193f0a0fad7ce7", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1aa475a62a7fab137e48e3ee54ad2759e891479c0180aae1b74848f87cc861be", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "a4d2e33a2ae7d0a1395ff7b2fc2b842b00a8d176075ed47410caa9e8056d30f6", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "499cbf5bfee2c7e57edcb962b3d6141a7bb7e6004e2979e99fff06176086a8bb", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "09058c7b9258e639433c63d3423223848dac15689ae83a6d26cf99a13e5ddc91", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "d031c42369e231081f3ad899b61e5c2c73cd1e7c3aa53659f329b67d660e5899", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "62dc386c205726e9443e683a1ee6c696a1226591fba7817a3fd6ddb8a728863c", +"T2T1_it_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "756147a5498284f1589f6c1993fbb80b315838f2913781763b441a884104ff6d", +"T2T1_it_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "879f2cf19e4544292487b2059bb5050c3ed5c2ae3a7151520e8a3f092c5319e5", +"T2T1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "23315534922cfef463d775deecdbe7d7d8bebbcfa2be4be594334734a160ffb9", +"T2T1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "f0f10cdba4f81e23f4335987fbb570a8037e62530a4f726b8dfcd5da9e688baa", +"T2T1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "d38bbb4b9e7e4ce38d7c2f2ddfb80b168d871652b05bdc10e1e5a332e4f5c4fe", +"T2T1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "98c2475561b23080033ad6d99938ca691ea8435e052a37edddef4e336b76bcc3", +"T2T1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "d38bbb4b9e7e4ce38d7c2f2ddfb80b168d871652b05bdc10e1e5a332e4f5c4fe", +"T2T1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "98c2475561b23080033ad6d99938ca691ea8435e052a37edddef4e336b76bcc3", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c7a75e1b210d1657810eeb13a3800bf8303beec69dbaaa5682bfaa0e8761aaf2", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "a8e3335d91dbbf11e2fec748d849097600083e01c066138703424ee0ec61e73e", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "47afd9fc3408228bbc8500f3dda51f95744da591c8a58d83c8822e558785072b", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "cdc26aea73e1d4265919d2e346e4bfe78e2073fd2f03c20ca8149e15435de052", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "10a6e6c9e23efbad320ab5708bfec558c552280d13681439ef3f9742a9e92272", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "4bb36149c7d929fa2c33c14244396308d25deecbe70224be56f060fda2fc8b7e", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "6b6eb94a6a4095a44168306ed8e916971cdb732a27298695453b102849c8aad8", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "ec9ba7231f85264fe5cc341a0d15abef1b3100e3f2408772cdadbb8f44b69790", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "79e5ceeb4e3faf592f277166b9a41835e31baecca49f1646879cff833dc84bb5", +"T2T1_it_bitcoin-test_signtx_payreq.py::test_payment_request_details": "1a995edca1ac2c93698a7bc42b150d62a5e22598986d6d2122ff753e09f9d015", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "a70d89405b1c1dd920e3887807c066a504cf65d740dfcb472d6124551a875d4f", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "a70d89405b1c1dd920e3887807c066a504cf65d740dfcb472d6124551a875d4f", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "a70d89405b1c1dd920e3887807c066a504cf65d740dfcb472d6124551a875d4f", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a70d89405b1c1dd920e3887807c066a504cf65d740dfcb472d6124551a875d4f", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "c4570c2e0733491c4449371e4947bea4fbf4dad7475bbf8a6fa5476e07e3d692", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "c4570c2e0733491c4449371e4947bea4fbf4dad7475bbf8a6fa5476e07e3d692", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "c4570c2e0733491c4449371e4947bea4fbf4dad7475bbf8a6fa5476e07e3d692", +"T2T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c4570c2e0733491c4449371e4947bea4fbf4dad7475bbf8a6fa5476e07e3d692", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "0885f5b717d5b0d820309a34c648fbcc79a403365ae4f9376dfd8e9a78ab76e5", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "267bfa3f88ee29517b1ed72a197f980e4ddf9b04e14664bc43fa6b0334847cab", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "c3258423fc6deb6fb8726b898e2c79ccfbdff443c044f431b6ff848691ab2a23", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "c3258423fc6deb6fb8726b898e2c79ccfbdff443c044f431b6ff848691ab2a23", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "9c9a0d013d9d13364a8099c20c34a0f96030346591e0444fb38083a19b65c96a", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "a593c7cede35b52f9219148145f044a8f7a8261a38be412da6fe8d5913c9e404", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "71d1bdb06cd602243e94ad1fd230dc1f1746c9f2591968744e37a6ea67963463", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "9c9a0d013d9d13364a8099c20c34a0f96030346591e0444fb38083a19b65c96a", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "47b49f21228c9eb01e7c968090032af02de153f3ed8d3c9a7d50f56158a372dd", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "f73fda0c5fbc288fb4f2299de4c017bebdf40eed4bc9b7c48134cba3a3a46f5c", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "f73fda0c5fbc288fb4f2299de4c017bebdf40eed4bc9b7c48134cba3a3a46f5c", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "f73fda0c5fbc288fb4f2299de4c017bebdf40eed4bc9b7c48134cba3a3a46f5c", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "5ebef1120185112ba5ef74dd0b1dfc57577f429d39e0d68bca80f4d22d676a00", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "f73fda0c5fbc288fb4f2299de4c017bebdf40eed4bc9b7c48134cba3a3a46f5c", +"T2T1_it_bitcoin-test_signtx_replacement.py::test_tx_meld": "1d9386a9f5a81ba86d87c600de7dbec41354185a3c102305505cf39785879ad4", +"T2T1_it_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "6eb732a1ab02d6a2dabc3befe73f864f7902b95091ffac3486a8165df2901757", +"T2T1_it_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "465b75c56f7eb04e020bfe826ec9b465205d6c82617775719da076910e0716ca", +"T2T1_it_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5b548d1b576a4f60c1f0b03bc252b6d14896e82fe0df3e332d7cf30db45fcf53", +"T2T1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "368e8747911ea6daac9bbb550c1cd19eaa17bd84fdab9de756e005df939525be", +"T2T1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "3e827f97d8159a25a954af2733bd6d7d5057816930d54786d2195f2dd6b09260", +"T2T1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "51626b88767d0b929f12122c522ffc3f42e1c20a85f57931a8fbf3c4eac92718", +"T2T1_it_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "fc59d99f6450d86119b499d78f5a75a0132a8906f2bf8a7dcd232ce66f774795", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "75146b34804bfe7a351843ca92644694b274d3a7ff6f2d830bd0eaf8b485ffc3", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_both": "57ed15bba887821a2ded2007b49e7ecee1dea2eb547946250f9b6b1afc479db8", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "07f74eecb39a2d9c24e17f12bb1aabd0c8e5223827e81fb3800cee4312f025e1", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "24a4b79e624134b4dd0eefef1cf253e52e86e5318c02074266589bde73072770", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "2d37c41e4daf4720ea0fe4e5fb36d52f465df350287f7260093faf7474a83931", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "b1afa952ffab1ee515666c66a2878da2ebd0f21550bbc212b1ed7554b9ec05c4", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_native": "ecabbeb050fafb15db0ed71ab4ea8490e0da897dd0032df465e86f903b836659", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "5c5ac5610118ceaf11ecd6524c95bc3920eb7eee3fa33d87059f550b354372d3", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "054726acc4af68d78d4e5521a05630d4768944602b18294333ed6fe6d408aca1", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "8d4aafc6597f7a25687feeac8e0de78549768b5443c5f660e7b107d948912865", +"T2T1_it_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "0ad1d0a1ec1d211eef7441daff5f3589ac7236ead9b5dcfcfb9ddc8ec00e1eac", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_attack_script_type": "86e08382a8fc6f5ae58c40c1015c31c78a3f4530971d2a2e1a82432c2ebe086a", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_send_mixed": "65391244501abc65267f9386906bf4ffd5fbc4719fa393bbebe5cc78c37332c0", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "291089ae1c680510b3f4c0b0399b060abc4fdd975616ecf27dc199d8e071d08b", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "08c435ab868d43383d3af9e92353536a9aaf7cffc5b8714e5e8b4924774d202e", +"T2T1_it_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "e84f48ee551d5065a64c27c8af01617dd84709c9a4aeae655daa937dfa33935b", +"T2T1_it_bitcoin-test_verifymessage.py::test_message_grs": "58e185d2fffddb0548e827265e7cb86fd130973d70c85ca3fb2e62f35ffec867", +"T2T1_it_bitcoin-test_verifymessage.py::test_message_long": "be57ccbd6d9807745f38c40bce6612a49bcf1ea009aff5f089650490893c818d", +"T2T1_it_bitcoin-test_verifymessage.py::test_message_testnet": "acd27be0d182389f43c6219ca24d573bcb59a05f5a4496f215cf1919564466b4", +"T2T1_it_bitcoin-test_verifymessage.py::test_message_verify": "4a2fdeb54a21b5f83b74d8193685097450a4eee1ca9d87370d2f910af2ca5859", +"T2T1_it_bitcoin-test_verifymessage.py::test_message_verify_bcash": "0542134027b2f487c24ea1ffd905189e569c5598fcbf3b660d14dc42ae85843d", +"T2T1_it_bitcoin-test_verifymessage.py::test_verify_bitcoind": "c2aa5ba7ce646ebcbd3012301f8e5d0c77b2abd930736a5723c6d6a6c0e41e10", +"T2T1_it_bitcoin-test_verifymessage.py::test_verify_utf": "8e017ac1349b5e8c46a1b867b14add8926d4893ada254b08ba62d614978ec222", +"T2T1_it_bitcoin-test_verifymessage_segwit.py::test_message_long": "94d8d25ea2f83546da2a2d9a469cc1c40edb2e23c503693fe103915611ce984f", +"T2T1_it_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "87db483f81d565cd0f66ce6896679ddd9c4a6b0b1f6a7bb8df8ba5f513c52579", +"T2T1_it_bitcoin-test_verifymessage_segwit.py::test_message_verify": "b104b9a3f92e3b54413ddeecbb40ecd233a3fddd79fb34343a2a41c98e88245d", +"T2T1_it_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "098d53c92533affa0de7804889c22865823bed4625cb15eb45bc0a5d9b60f44c", +"T2T1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "6fea7ac5edde3c3d8861bc230d97095b2f6dd85112c484b06a4fa7533c1eb90c", +"T2T1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "72ae81a3fad2d0f28b83c8779ee6d407d86b9f3a188699eb81e806a3a02b363c", +"T2T1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "b51e0e421516ca3c9015a03921b5d7b0bb003a140ce6dfc38f6a0e282cb34e2e", +"T2T1_it_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d44d7d4f895c3ec997dc075f3414c9609537c40198aa70144cdf12e26892d3e8", +"T2T1_it_bitcoin-test_zcash.py::test_external_presigned": "523873240eecba128ba48dc1d1319c94932664eab7e96f542c73f33dd7595770", +"T2T1_it_bitcoin-test_zcash.py::test_one_one_fee_sapling": "d45e50e4c1692938c1b21a99843cfa57a6c3514ed174cdd70700883f6fe21fbd", +"T2T1_it_bitcoin-test_zcash.py::test_spend_old_versions": "7ef98173fdfb7ec92e7f07b132cdd71a494633eee049961dfb8832d320bda6e9", +"T2T1_it_bitcoin-test_zcash.py::test_v3_not_supported": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_bitcoin-test_zcash.py::test_version_group_id_missing": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "4f0e25f8b9befc631bfa9019b10b856ad4630fb5a1c090f91cd8300eb3e7ee32", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "bbfc83d3cf452d2e01250ae59a3ff0cc8c9b8d75599fe4c15d0f1a2c7947de89", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "11a8494df464f567b9ee87d189e3f92072f10bfe89fcc409ffa9bbfa49b45012", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "87dfec7bcb0c1c888774c7326e83641c4c29852e4a91f3f72db0207476c7322e", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "28bd150baf418c496c716a5816b68992353130327dc40a6289e414a99e66cfb4", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "fabf74fab9700653d7e040bd8442e521d0145d98d601fc60ee7048cc4472ebda", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c57599f3452a91a43368c68b62ec6b412ac59bc5c81276cecc98a7cd0aef18f4", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "d546cb6876bd061997b09f61ccd4d1d939cce377caee550bc31d8b93534ed580", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "7f28d7f4ce9b578d19ce18bf5cfb543a4b5d1faab463eb1bd47182d35b925558", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "a5ef5cfc4f714a1ff2f2cda8ebea0622a6661d83ff78da256c371e615038fad1", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "3344ddb226004dbf348ff90f2c9a9b1ba396012f6fc5e64b28cd28ea5a6a5943", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "0297600c8ec5f8fe47ba9c7aef0f0783ef7d5cad277fbaa0539392d39214393b", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "f1098f9494ba3202804b42cadc638c8287a15a32e3c92a48269b58b99caf66c2", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "3feade07e3490054b8b06e45ca7457b97fe79d309fd3fb77020b647e7e309c50", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "68cba84c064f1d7710c17669a58429e9a4bc999228d5876d1ac5a416479d0261", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "12cb2419e966cd6569dc571fd6aaf80771591b940bac9ef6de548d6331e8b6e4", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "dd0757d6d665a1eac2eb10ef6761f41682e595073214dbaef212f0a18837ee00", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "088d559c4ce69e602a2286427304d4e56e5af8c9261f50e2043c54d42284ac54", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f7a72151d2fb332e31923dfadcc86dc66bf6e333728e52d9026fc347df294093", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "a605a23b43063b298b0da61114a94e599413a95d297d79cbd63e270254e62899", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "23e1205e2d0b0d93167a90816a5bc7039aa7ba6893556737b0f29258acc2d26d", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "2cb8324b841390ed97de40b3058992c4d14dc342d74785d4a52f12d9eeee2549", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "01eea15b0492e87a882542760967adc3d840ae893e357ce73641dc0f6cc2f4ba", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "d9f935a8140dc6509ce6a1b5873617e30a7a2c7cef3a3fa7ecd9df7c65b5f57d", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "3433bd747476f3fe6027d49516229eee4a3ae195cbe1af3d0623920db3286d59", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "ac43d6ed579594f528d03d9b0ec1c6b9b9d74238e57d1db81fc0c22edfd18292", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "3892668d952e37a757c2a7fbc2eba3e0ecba1b0e40f8f52527490c012b668ce9", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "690d6ad9bb517f5ff391ffb1dc7219957d081e0eb731424df4d07b73c24b12d9", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "1b7a9858203af57c8c5d4c8ad24624998c6e1e5418c22b7b2a5bde1de66b1f8e", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "61e3559b4ada88de990f6512fb0cbd75f7b1fda5a63b9f4b84aa1bf3222b9a28", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "b2f11d6ccc4c79fbd2975b25f81665c4c659801d64f6497c6286a4790bfb89e4", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "d32e6a8d9fe8e21627f213ebc56d4a8e9cb9cd201384a8e84f31184795ec98db", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "908cf161203652be8220f5695fd1cf251c1c2bf73feb0866dab6e2779c651964", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "061efef93777fbc0071abebf0f1d12047132482651c926935e7a6e16e5f477ee", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "a8a7d020e957c953c14477db5678518caa096fa7d3bbf6f4e7112ad7ab64d9be", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "66187564f48c497b448e5be289ad02a80d9e82fcc938546b11a30d52903abf1c", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "7fdb2cb0a18768fd949e7e6bb51bb613e8f180969606a2357e5cefd47216db26", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "113d1edc3adf5746bc3cd8c415ea85e09506982c8db6ad03a2fac805c3e56b9c", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "ebdb3e668d24ee40c03b57feeb829a4d75cb1ca62ae77e5ad9f5e3062437c3b3", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "8ad4d629b8ae721f0dd06426dc1696b13c7898cf4469d8f557a05ecb4aa19a5c", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "2148aa5f0fddc5178ee59c39d45958cf12b2d623d92345173ce74878be8340da", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3769a33c857b8041387a127e763c3f1a077d3b9cce32d65c2c46c6a0187afc78", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "0f62d76000e29ffbea76c7118eadca9b7488c4dc638f71320346027a6d7201c4", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "93d61c85a1347225ebcd946f643ff193e2e2ccfe4ff6829467cf2bd4e9089e42", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "5b18948acfcc798f4d8d8322157887f86ce4855dcaffa6d2b427c81bd27f5b5c", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "3f8e835a84099751bdfe0e99e5cdcbce4eb7f447889b2437aa704a10f84c9d33", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "232b7eda6f7d437d41cbb5c940d03fe482fb0843b9a22128e6135394e000b85a", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "dc4be4957b26704c64b8ad3eefc46f19fdd2f7e20bf49704f22513a4d1ace75c", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "e95c36c3f0d36326dff904b701ff87406f459a8ec8a2ce331e6a8b1d7c99133e", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "3e02480ddbcb68fa6468f369adf7204b176439a0d90e1a93f22401ab425ccd76", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "96fb5f8aada9b25256ca09d1afe1f47e41b913fac9c54a85cc4774eb63f81296", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "5c7427513d99bb4c990c692a50c8f66ca044346a2cf3bc84f9171cfe95d6818c", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "1cb903ae56fe2e0a617722b0138c729f481d7d77d557c37f542c1671bf44053d", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "de9677c65a4fb19e4e0a49d807bacf9ab01cf4686ca856e8b38656b15d87a083", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "e0d4ddae31e430cfb4e2c40d3f3de2449582eb15f6ab122450c76b93c680a5f2", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "af385a1d1daf9f81ba646ab16d4ecb04eb36d54d160578ab6c70cbbf318201e5", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "bab24f1c9e724ebd018c1e2cc6cea4c9d24295a478645738bf6ba17db0051a15", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "c7feb93bee87ce4676846c1031fc77782c74d8e34d5ded63b6311bc55ee0a11d", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "2236ff04833918e8acd19e798f94443c339cea0914eed9511c79efd6e4ff9f37", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "9f49ddb12de6ca8cbf929a07f3c67731fffea6d2364341d9ace7f4a0f64c432a", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "fedb778e8eaa8961b388ae09827dc28c77f0b72fd0ed15f479b9aaeca0c3b43d", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "9e1eef52466a80df28b58f38adc8f4035156f0a6cf65594a3d31e32cde1eecb5", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "c840dd275ad3bfcbfd7a8ec00db79058fb294728987510ba1cf0be14d7940389", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2deaacada6783ad9e32f1e8b4c841d5ffff49646b08fd875dccadb0175bc396d", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "affc5436930d5dac2c354aafb7ef72fde0a0508aa43c7c3a5ec54cab1a239a74", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "674b698edf96b4519e0a14f85ac655241818e48c77a3dc0c3f0de25b65bb21a6", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "c410d0e11c9e4130a9baa19c637393f901e05f45196bfdfe9e406aa5d39317d6", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "4256614dd72ff233c6a53799a78ce97a36af5bdc30bc8b2fefa85863faf71792", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "369b875e4c745367de0c5b2e06a3988e55d2407a9959fbe74193b7e1650dd1b0", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "e90e8cb874d7a53604b77082bdc16306963f04ac6b8f74f20847b45fb4c7e7c5", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "70ce0d0523321b40934814aaa3f6c78f021198c64a8d55a959ec427830ef1580", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "c7c5f6989f439383d20680b8b1125fd130417ef2b1619b6fdc3e74c208fce94e", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "84ddd46b8d1a10f7848bbfb21fc1a07c456b22e5ccd6bad01d1cbe8b2f62b8a8", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ccadc65814f7a3207b84fc457514e29847d4872b2fa4163bc7f9019103daaf85", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "c949f7470dd9bc42de0eacc9d736df8b3f68213b7601853974498f29b9ef93f1", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ead25c7e08454aea71db3734a0dbeb695ce907c0155e48efa91dd19967ad189a", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "ccc73f6a770c6d88f3c14c4aa1f1dfe36a1258955f444362bb1ffef0e21bf2b7", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "72b0bfb7e39a75fc8b846b172116c0808a61f137969375dadd8baeadd8637676", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b892d2ee35f78fa8c128aad14743d1a51bdef327467b339a969059785287ec1e", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "7e130e350f7460893a21d5f2b7e3a1b6c323d2abc54b81712eb56aed5a435e69", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "9bfe7f09a9815ccb0583aec552c774802a31b5c127af73a087bd1005eafef96b", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "259db87142e07d96aaf64655a3a40a79aaa64e86b1009b437b004c73a705fba9", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "2702bd1049ed6bda162abb8de203e913ad13b145b35996124415112dc2f9d47f", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "6e4026c5fbd1c342b71e29c32312f6ca43293293840ffd60ccaccb5cb6c93551", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "2c0e224419e3c19d077768272de33abe2c7355c2ea90df95612b0e7412ae34c4", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "8a01167d81c12641726e7f11e4e52bd30e5f873976ca761638ff0dc63e118cc1", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "b0bf0062c55d4564db485302d982c9c7f4adb61e660468dbbca4708eb2db0525", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1c2acf4a9a6af7ffd17a10fc859b497becd7a1c2bec24de18860f723ed42de4d", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "f7b9947a69152cdc50de01eda85c8e6aa44a58873e3e3d1a39055443fb213c95", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "52df56eb2541135ef60fea247303a45f6e2aa62cf890853116a510c5102993f3", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8401b225585894b92083bd2b0d7f0653ab18159790698b461a9c5818f2338fd5", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "4137b205e60ec3de6dd1cc30c01c4ab26c68ca54220982cbbcae6f0adf1b7042", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "2506af0c7a5f796fadf03be8b925960c85e27706db938cd145790a6b8234afaf", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "8517a820c6f769ecfe610b9a39121a6393630fed8a7a69b6e59e44a166799204", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "d3989b07c5ec297c7f5d528ed9f4cf7605fc2bd119402bd213c362af6e4e457a", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "b6b04c901777eab3d9d7521b74b59cdf27c59e542f65e554a67e44d978518f8b", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "e1e32292c266261c66bc7145c00d513374d85419b3c51beecf2517f7799194f1", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "330711b42e860057d1350589b95cec77a7390efa1aa883d6c080f268f9185866", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "68785d62c744ec20aa9f7d9110d2e303d83ef50494c1923c98ae4a654c1e33da", +"T2T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "dfd5ade9e944ea159ea3207373225a9acfa1293c3602a9ca4b36294dba819a70", +"T2T1_it_cardano-test_derivations.py::test_bad_session": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_cardano-test_derivations.py::test_ledger_available_always": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "f2ba12f4ed2a0a902a9d9a3acdb163d06bed39d1cac55be8038b8003ed076363", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "a263ed0fb5ec13a3b52eb7587aff6f67e72bba0ae8651f6e1a71a9bd93ae9a0e", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "02f370eb0ad9d35363c14e9bb6adbee10551f6f51224adda8ace396f2cf673f5", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "751c3e7be02350a8929b2d9e3d437e3183cae4a6ba59d44edfec49d2da9c2972", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "afa16033dd10c5e05fa25fdd2dd223a6aa3588beb5406880c91f149de04eb0ca", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "f19772dae6906e605008a03caead7714358c54544f596249a176a8b998a14246", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "4d116737bd5fd5b03e4c0368df2fed6fedb24a893082123fb668a835004fb7be", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "7129e8d1c1146abe88d50496d4fa3e53749219f509ada01ad5800f0877658ab1", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "de7b4996a0431b6e52bd5e53b7885e12226c2f7dbea4fbd2c01703f26b5623e2", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "9d00bba559e446a09261c61138062dac2250928f61df863b4eaf701ea9c88a13", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "2682588bb15f7a13f09f50639c848bd053090a28cf6a9978b42fd61147255a58", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "33883414a4b7222a5432261f7ace7a93fafe2bb4802bf6bfbf8ef7e23a23d3d0", +"T2T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "af13d552c3bd52e6fe6b9d6b1a8dc44087c2337508a6a29d40b1d36a338c3a8d", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "f4b3529a426e4c6f8f5751fd029bdf2b7ab299d7a88650f6e5f1370c8d1c8ad9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "e8da1412d376e5b27e87601ee69605aa00d9034a1b72757b3bb54e82c1a9343b", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "00ddf40bac66c0352c26d4bc2ebbba7b27392ac841ab950af00c544e309d0fd2", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ae1aa50504a738a7ab397cc80117e711d16c69a7e716c21e3bd939ff16bd9a59", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ae1aa50504a738a7ab397cc80117e711d16c69a7e716c21e3bd939ff16bd9a59", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "99575c250b61d15d9cc6f1094a38538016de7dc6cd884cbda19a1d0a068bb373", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "90b720d85f07ad8701ee017aab601cd144d88bd11a4ee3431a941e84b022fc67", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "c76a06e572b940a17ed8ed0f39614dca381a80c0a874118e3a0919c0b43c56d3", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "88bc40ef2aedc5209ff6f2a7f7a87ea5248c7548d9033f7b1871da4747ff705c", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d031df3115891d5d431768a1e4178a6ec681b131111623ba0d2443e218902144", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "c6c989cf73546c82a7e78c8b48792df872bdb30a481bbffe91908546bbe5d80a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "1fa0968cd91fb978d65cbfe7e6aea18c6f7edc7220e165b3b0891178158068af", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "20fad7f1c4858d309179f0560d0b432198b181b889ac83716a1677e4cc59e1df", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "f5e2f55cab9adb2a43930ca5e11b40d1d7956093b2da8bd55101c1f3d6fe7343", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "f5e2f55cab9adb2a43930ca5e11b40d1d7956093b2da8bd55101c1f3d6fe7343", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "442e1cd23fe13a4adfbf5d570ce8114307f95ca06dd35ab6cab263b7c776654b", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "c96597b47ce57408bac03d9ebfc4679145e815e6504a307413b856f2369cbea5", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a3efe464d404d9c58f9a5367c49a16d568bf85a4993b6686020f69f2f4c9ce1f", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "46f6a8e6b7dcc66ea2d88cc327675c6e1e383403ddb61e75d4fb67a6e0e1b4a8", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "06182d0363e2abb9e42cfb33d8af1f294a70c9637923cee9fa6bca9769bf3706", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "4a4f92994680be7f4b89b297d2435fd05b40d8bd76e0e0ebdf0b329ed32be270", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "85876b401d72120b18a175cb15b50f4901953762af32f7797c656c2edfb95dbb", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "778f68799cdca0e775d17ebe0af4d43f6d882103dd122e97fb4a4633b75617ab", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "ae1aa50504a738a7ab397cc80117e711d16c69a7e716c21e3bd939ff16bd9a59", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "dfc3e97f49f34d4d487cbf06d271b019d9b6512e3fd1d2463bc647e03c3ace4a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "46f6a8e6b7dcc66ea2d88cc327675c6e1e383403ddb61e75d4fb67a6e0e1b4a8", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "16f84b6342bdd8140a51d09e4ced9bbfb397edd7ef81d6ee63e06fe1f0b9fd06", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "4a4f92994680be7f4b89b297d2435fd05b40d8bd76e0e0ebdf0b329ed32be270", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "85876b401d72120b18a175cb15b50f4901953762af32f7797c656c2edfb95dbb", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3d97f0137615f3c7a16713dabcf9a5592a0bfc68fbd959fdf7e98b6d8c88f508", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "46f6a8e6b7dcc66ea2d88cc327675c6e1e383403ddb61e75d4fb67a6e0e1b4a8", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "b759d358fd3ec654c2a10e41709a81246f6b8dc85ff890a74d1683ffc2e8d279", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "9afd9a3c451579b33bb47d0df3d947dcbf734888594bcaf22a9325397c1d160e", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "fb6233b9dd5ef3eb2219919752fc287575c41623ac1487ca0b47c25472eb8105", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "a80fd3cb76e80ae5afddb18960d7c83da970070873412dc4572c0781747e37ea", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "1e0a25a0eccfe2eca38a65a539150fbb290158d4f0969bb520c2f1b37078226a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "cf8e723adde3ea2b7ec23387e6c81f5bae0fc5452bdcec52f8c49e6f035a0151", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "9b909963111bd2bbb7cf21a43d78b3deb28f824f3decb4f0ab5b3893c8169336", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "676b671adf375a9d64ae3cb5d15fa767e6815a5e2467fea5a74641e2bc76b23a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "6da62192cdaca8aafc06485be09a86c8b74f6429bc834f69acf0a6bd87033a5d", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "c2fd086087a1d9eb6d7a14aeba9ee23d157d7d4ed46d5de5e8c35fc757c8a835", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "75587d044d208c7adc9e595f233295053a4ad3060a65a6421a6cd85552556cc7", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "3bc29d5655066ddf62611739f72447424f26cbf9986464f196fc6261017882e9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "4c4403a7f655143c69422cea5d95068732bd94d8dc285c58bc728b84e0984913", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "ae810ca623bc5be67205046a2a45f2b96183658661f60901a1539654f28d0cf6", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "863296e4ae50dad69703fc5696ba92737cd77f95d95f9d58d5b51aafb5872bdb", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f80dbf3dde9eacd2aa353f6dc3775ecbb6320d1fe56bd75cf2907746707a3c93", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "10d175c0f245c99860f7ad5950ba754fd66125da5627337ba1ebb1b0aada0f05", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "5c9c82e172093f602ff72f77b8f2a1c4681082546917b58df8491b3d75cebdd8", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "ca159d4f746b77737ceda99d93289452a496fbd4fd0cafc5c24ae3566524a5e9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "8d923cfc5d5eb2af5f40843918a08ca7f24c2cae955ddaa6a15e3e69f2922478", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "f9b342da75ee8521761e1e0e20c752cf9aeb11229865d1f45677e39941c89517", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "c1e8ce45307fe57442a976a05fbee0073082d3e3afbca041a66b377938ba2dbf", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "cdee1b24db1a512ed99dbcbe09993af12b6e7624ec4de9db2fcdcafc8c9016f9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "cdee1b24db1a512ed99dbcbe09993af12b6e7624ec4de9db2fcdcafc8c9016f9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "81ce887bfa1c6ced794701cce1bfdee3dc2fd8f80960639acbe100e950f86702", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "70e13d48d5c5d587300926cb1b62aac511d3b1ca41f3e93dedca194c2108136a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "4fb43c129519ce4e12647ca14de1e73d60ba42a2ab149d40f94661c383d40343", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "1e1453b415bbb1d8bc23c47b9fc42d7dbccf16f76d4d47aa0c3636c15c20cf06", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f5a7c1e5a1d1ef7c34167d7bb0c4a334a325b3ce13471859939ece2e89416cbb", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "5946893ccbf288b5e3028789dba7e2f67dcf4b66f87b18f7962b09a29884665c", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "627b33ef3717aa40942798de54cf247090ef85c6165f06c5f1afad7b2e34ae6b", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "821b31e7b48b6429ad234c400b1b491e029c5071da1af0cfafac5ea099d94cba", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "46f6a8e6b7dcc66ea2d88cc327675c6e1e383403ddb61e75d4fb67a6e0e1b4a8", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "a2b9de20f05fce66669350aeadc23bd9af41f2b527affa3307d412bf702848c7", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "27b630ccd0bd9c439380b2e4a01fda8cfd7fa771199ad51b6534470b450423b1", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "3ad98e98b9082b7dfb9a8f22ce4ba1604a295e424c92dcf21c5e38e876d72aeb", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "9a2ebcda2ba43044384a7acd0775c9757fe13a77a0ccbaa9036d85857e22a52a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a15dec16cbbb981c64389ad25ad8b17a61b232cdbcb9e2a7adf3a0b4182124ff", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "2fc2d789eb3b384770332e1be9ae663e0f75f5e2f1031bc3393e6db410aed2f5", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "cd2489670be212f04ba1f20c2bab71df32fcd3000936c13c4210ff22b81e934c", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "23e4b7300eb4a8ee099fb2ec98da1ddf24ca04d15eaf3b6701c56148244ae484", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "1c6ebf31b2e70eae5f22735004e7f94c1ad646ee234e03b5e8d2de5e1ec62b88", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "b0d6760a58ed91e1dda847d2a79761cc8bcd6e37632d7f830b22298aebc69b67", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "e2629eedd19ad3462716f41d020f5a65e4062eed2f47e4bbd704d859fac1e89c", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "46f6a8e6b7dcc66ea2d88cc327675c6e1e383403ddb61e75d4fb67a6e0e1b4a8", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "c39a3c4b2f6628f1052c2f1d7dbc8f6f226bdc71c5678947e042bb4547db21e0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "8efecec3913fdbeff39edb6f502c05117700f061bfe5ad0b66bffe3c52523c81", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "d931e28a9eb58bd29941ff6e25c2629123c576495222a952c9d222727ac59e0c", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "541881fb2504688d7015a8244a405041a54f6216f1245691d04ed3959a3ae016", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "28bfcf6f800cf622d545275c3ee8de13324f5f9ca3adc3fe0035d0a4e0813f19", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "28bddbe43c7fc597711f98a61e52cb66c66be8c584a1aa9f3f7d2756e5aee6a3", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "82345e0ce3d78915ed583d2865bab1f980c6114382d204a7aef84e532eced9ad", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "c334b12474acbcf7250207dd2320a7bb04ab948ed91e41326447c062afae56b6", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8799db0752af4716c41633e3f7ef317c6c9a6b9723b1660b2f75e5ca2157ecbc", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "3b7d74aebbf084f37c69f95d28998c32d2a0039778a4c20364e59ae8194ee941", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "3b7d74aebbf084f37c69f95d28998c32d2a0039778a4c20364e59ae8194ee941", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c1f9708fe132fa6ce0d74c1e5dafc52bd92b887f9eb5fe32483938b1d86441af", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6bf6a0e52e50db8d788900d4543d51094ffe896e906b5bd59f96ab6eea003f9e", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6bf6a0e52e50db8d788900d4543d51094ffe896e906b5bd59f96ab6eea003f9e", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "03d3f62e04363416b44ab63c784f50346a6857a072ae862348755c0762991b84", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "702fd0989fdb5f61e599caf31cf1639513a54a1834be7b04b41b66c964ce7ab1", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "4fe0c6858301d8c3c3527554dc86ce188f9fe46bf310638127cc9712b60322b1", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "59ae6fe10ac51e3f791a825643722525ea1eec03efbef70567df79a9e198adfc", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "96daa404ee8f7a4743144b6f60c1f9f455d81b41ab4d518240deece0b1ff7a2f", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "24406267c7ae2db579f7a8d7d564503d3727d119b31ae17dfd7cb8ccc68cda24", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "ae1aa50504a738a7ab397cc80117e711d16c69a7e716c21e3bd939ff16bd9a59", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "ae1aa50504a738a7ab397cc80117e711d16c69a7e716c21e3bd939ff16bd9a59", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "de3969c951a2ed235ffd1839f0123e3e716abd3130b4988e65a86dbd2c490e3d", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "8ccee3428018e492ebc35729e5fe3d53e5cbced2f582c04e2367c144bc31728a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "b7ebbd066bb3e27e4a59ebfcb9ffe995ba1c8026d7819fef682aed3047a04eb4", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "f4b3529a426e4c6f8f5751fd029bdf2b7ab299d7a88650f6e5f1370c8d1c8ad9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "88bc40ef2aedc5209ff6f2a7f7a87ea5248c7548d9033f7b1871da4747ff705c", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "220592357651d81a66fd71f2ce93d7188af2699e966e04c38d71fe3a1715d6c2", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "1002805ee85f96c2d5a92a77a36c51c08d25e23e7449adb5220947ab48e13701", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "1002805ee85f96c2d5a92a77a36c51c08d25e23e7449adb5220947ab48e13701", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "ffd5e91003364b75c38eb02f7f5eb4be82f4fd1e7dc4e69f30b70bdedc189f56", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "de8dfbb07b121f32f00eefe57f792c868c3f281ee75688d420eacc500a4c0a21", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "faaa5746cbd89d22def7595278bf8235f4d46f85f2af978d4a13f46b3d1f8b6a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "46f6a8e6b7dcc66ea2d88cc327675c6e1e383403ddb61e75d4fb67a6e0e1b4a8", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "ffd5e91003364b75c38eb02f7f5eb4be82f4fd1e7dc4e69f30b70bdedc189f56", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "ffd5e91003364b75c38eb02f7f5eb4be82f4fd1e7dc4e69f30b70bdedc189f56", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "3eb35d615544641bb78916909fc1d492dd5a4ad37b28a76e46f3e4705c2353a2", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "779475e1f139c0a6ca42dd32b9d9d78e7c6ca35f6f609cf8703a910435d1cd1b", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "fa0ee7d446d1d3d1c686c94d381841dfd3fde8c4cba777073480de62127d9e20", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "959b67672e1f4e71a2addfc7a49ffb35f52cb6f0cf0fec5144f8222e53a8d72b", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "f908754f70721fdda848ea08bd832c8e9a86e6e84bae7e89aee386e187aef778", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "f0f4748165b5e673d18f1cb7a8668eee740d23e65316338d1de7ee852361ad73", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "f0f4748165b5e673d18f1cb7a8668eee740d23e65316338d1de7ee852361ad73", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "f0f4748165b5e673d18f1cb7a8668eee740d23e65316338d1de7ee852361ad73", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "f0f4748165b5e673d18f1cb7a8668eee740d23e65316338d1de7ee852361ad73", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "f0f4748165b5e673d18f1cb7a8668eee740d23e65316338d1de7ee852361ad73", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "f0f4748165b5e673d18f1cb7a8668eee740d23e65316338d1de7ee852361ad73", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "f908754f70721fdda848ea08bd832c8e9a86e6e84bae7e89aee386e187aef778", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "f908754f70721fdda848ea08bd832c8e9a86e6e84bae7e89aee386e187aef778", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "f908754f70721fdda848ea08bd832c8e9a86e6e84bae7e89aee386e187aef778", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "779475e1f139c0a6ca42dd32b9d9d78e7c6ca35f6f609cf8703a910435d1cd1b", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "2803cbc7ba4fbeedaf524f13fc19bcf7aeb3aa3159d44f39d37ad9465b2a4d5a", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "10895df5510d890407c126932b685dad89e3dcbd25670c62fec245075f48fa16", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "31ed6b1cf8a42eff284946e802afc879dbcda24cdc38acc84830c8cf1b7a1c44", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "5793aaf367dae03078da721d56ee41797e7f1a72146cc0945522838a29d496a6", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "5f8ddcd8f555035d9fac370647c350433624d8a386000ddd982fe487c65a77f7", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "e91bad87dc72b7e6844b2deabf9e01d5f64a40e6618721784ff995217faf4260", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "bb2dc4e57c01a52f8f5b9a8b45a1422675dcac3be7a4763f7cd7b5455732a54e", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "ffd5e91003364b75c38eb02f7f5eb4be82f4fd1e7dc4e69f30b70bdedc189f56", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "ffd5e91003364b75c38eb02f7f5eb4be82f4fd1e7dc4e69f30b70bdedc189f56", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "dcaf004d06139147e3cc96f92c1ee7ec4fe13c337badc8dfd1a6fa128d86ebfb", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "a6e1bab989b482b5e4a80cc5d0f8c51e6737d3fa38d7ced833c4a120828f3132", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "01d49873fae02193a6b838347991504146998c766223b9635c3a5d9c604637b0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "509c8c597861308bb83ad238bc23b6bd90fe40a18f13fd63f8dedb980b6d5688", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "1002805ee85f96c2d5a92a77a36c51c08d25e23e7449adb5220947ab48e13701", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "cdee1b24db1a512ed99dbcbe09993af12b6e7624ec4de9db2fcdcafc8c9016f9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "cdee1b24db1a512ed99dbcbe09993af12b6e7624ec4de9db2fcdcafc8c9016f9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "7df6d72c64082ee0453f1f3670b6d0416de51ebb6b2c0f0fbd12de9cce661866", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "cdee1b24db1a512ed99dbcbe09993af12b6e7624ec4de9db2fcdcafc8c9016f9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "ffd5e91003364b75c38eb02f7f5eb4be82f4fd1e7dc4e69f30b70bdedc189f56", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "ffd5e91003364b75c38eb02f7f5eb4be82f4fd1e7dc4e69f30b70bdedc189f56", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "23de3084469cbb8bafcf780479486174af476ec8f1e85ec44974b077e43c44e9", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "dc6dd3314339ff74c0dc25d926c98efd10ca1ce24aa31eb05859dad757b8d5e4", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "42cf909cea963dbca888dd2f1ed70583de8d3d18662aa70b6e955b7ddfd68241", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "304df5d49a817a9baec90d03197f635d98fd58ac26e76e650e2da4e11e2716b3", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "d5ddbea859d7bb78185d5108665b4c944aa454aaf194cafbcff53a3828991a11", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "f0f4748165b5e673d18f1cb7a8668eee740d23e65316338d1de7ee852361ad73", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "caecce60ef18272173ae52ffe92fc447f773e60c776bc6872f9db84d84122766", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "e1b3f0bfa1f637c3f1b192185eacb09913a1b52ec43ee1988fdc4005c950a8e6", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "25e985f1985419de4afce54f8afabfd77c0e4a295ba35ac73bb9a7abd406b9d0", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "cfde64c647309e922a378e7ba62af092e53eaa2641980926a3a93671cf3ed085", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "74276a876bb0e666d1224f5cec94721efa24d4ad77cc8d389e87d0781baa2d7d", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "153dd5281d5ffaf46886b6f53d1099196acfd373616d27f7ecce4f9d77cb7c9e", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "91c4a469a893176a3f5cb20ce4d7ebf38081ffe55fa580c00275de0e87a38ee8", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "68a3c3e2df3249bb7c485ad1bcde36deed8bff52bdee0023c00ba16690619b72", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "c16338ae6b7eb221936f4cf3eb8a1fd48913cbd35c0d1ab42576bf0899d792ac", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "dde474cd4128525dbc09bed7bee8bdb1d800814ea273760df5cff4e426a56a1b", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "329e84df598bd1adecbe61f2baf259c8fc951b205348998052580dc8252588fe", +"T2T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "687aca60fbde9c2eed381b79ac97de979de9d9fb245958a9ea31e137fbbd8b2e", +"T2T1_it_eos-test_get_public_key.py::test_eos_get_public_key": "b4ed9ac3f6d196018bff311b7d9af7679096e45aac721ba7e7f52890793971f5", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_buyram": "3b271c1549cb9303f0d253f307c47686c0143e1d0bffc022a913616f6d871265", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_buyrambytes": "a793a9b2fcce6c40f2f18cb2772a71eb377d0f1cfdf7deb74faa277c07ca6c4f", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_delegate": "139864416c1fe6ce6d5323e3f5d0355d12e034e4ed770cc728e05450aeca1bb4", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_deleteauth": "3dac4495866292e3d811210e3fcb7010da1a6aaf9c757bcb6001ac5a9c489203", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_linkauth": "d90cf948a80f2fdb64dafc56400205eb1d591ac58e5c80ac6b5971f03f74aed1", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_newaccount": "509028223b6e3677a468c10bf99ba561e3730dad1e461ae5d5b603678255af83", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_refund": "4befcae27bb30ba29365978d858bd6a799871759cce5e2952cb0e591a664b5a4", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_sellram": "643b14a0bde1676d23a1f1d0b2fb3222645a7295d0f598c0969d5439c6017b0d", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_setcontract": "faced3e71859828cf85a2b946670df942de598c20c05a212423a1f707cf673cc", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "ee2b45fd35dd7fafb4cdf09f2903f3b5390e1b46b9c7a6d58f05e150e22aa962", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "ee2b45fd35dd7fafb4cdf09f2903f3b5390e1b46b9c7a6d58f05e150e22aa962", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_undelegate": "399298eaa1f39923e5aa4fa0238784d55d2abd8ed1bbbe74515e33895756512d", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_unknown": "4c87f42bf7ef1603456ddad17480fa14237fd4cd26098d22725874e9b94a4dcc", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_unlinkauth": "936eda50027af21574ae6f6424f26b793aa97151648057fbf30bc4219021b738", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_updateauth": "08eed2a79e91aef98f6d12ca94bc0c813a49f3ede9ee011255666f82d25a5618", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_vote": "f779b94b6ef77bc1cfd7d21028ed0ca4c0e3119fc28e3484dabafa68d8a028cb", +"T2T1_it_eos-test_signtx.py::test_eos_signtx_vote_proxy": "1f7ed52fcf39d82083095ee593e364d0e60d472ec5cff809597c843ae12e2de5", +"T2T1_it_ethereum-test_definitions.py::test_builtin": "5d702525e8c06e16b42d2788ad061950d68a771fc2d4dcfa4802e1fa6420bfbc", +"T2T1_it_ethereum-test_definitions.py::test_builtin_token": "128f16ee993efafa34998f1e90ac4f94664dbb318f0f1bd6fa669aba302075d3", +"T2T1_it_ethereum-test_definitions.py::test_chain_id_allowed": "5132eea0b8b9111b4cfb0ef850614af1931e6a7a6fe839dbef737fa37f6e2e63", +"T2T1_it_ethereum-test_definitions.py::test_chain_id_mismatch": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_external_chain_token_mismatch": "6cb8103fd765e7949f8570b044abee6767cd44a66c08ac183d445ca43670e4e4", +"T2T1_it_ethereum-test_definitions.py::test_external_chain_token_ok": "54bdef918aaa736719a313cca68ea4742719797cba9effafbdf42251a3476749", +"T2T1_it_ethereum-test_definitions.py::test_external_chain_without_token": "f8e64eb5edd70f817250890f8acc04426d0d9d2fbb62e680c772872938db3afc", +"T2T1_it_ethereum-test_definitions.py::test_external_token": "d533a846659eee87d977947a0d33350fb3770f7f2aed5c8b70cdb5c951ff7ca0", +"T2T1_it_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "91b79865e8064c95eb6ef3458238e6d4f3f384a1107b0cc5687a0ff5822190e7", +"T2T1_it_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "9c8c66bacd8f3c8bba9568a975b955700852a1df1416681b55db2c973bf10e81", +"T2T1_it_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "9629508dd064fecd47b2c17169c74e2dc84d187e915e3d6ca923d9cd307456f7", +"T2T1_it_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "4504dea277b4becee1c3d505d1088cabc6efff0e313da5e49b8ad53ed0312cc9", +"T2T1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_slip44_disallowed": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions.py::test_slip44_external": "95f83bc9a6955d235221c5c1d12a8bbc263295b8fd99ffd7011696390190c2e5", +"T2T1_it_ethereum-test_definitions.py::test_slip44_external_disallowed": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_bad_prefix": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_bad_proof": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_bad_type": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_malformed_protobuf": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_mangled_payload": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_mangled_signature": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_missing_signature": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_not_enough_signatures": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_outdated": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_short_message": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_trailing_garbage": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_definitions_bad.py::test_trimmed_proof": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress[ETC]": "7ffdbdad798c435ebe16d88941468826d1587e7145a43d42943d6c7d1e5931db", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "25ab6ca226aeb1ff31833cf90eab6644fa06ad9c4a2ce989873eb72bb19c2d3e", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "823acda3564fabaaa59585c6b5bca63568efe1f09413c8852990ff828ae74208", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "17c5edf9a9fefa752d251a5c0a7d18389b0f64132344dc59291739c536e1a6ae", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "8ea5d4912dc3bd9746040e131ab1e1062c9c1552215740db23112de869a59f1d", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "ca17d424e5f6ee67e4473c514f0203eef1fc005a898de6ccaad6d75986de278b", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "cc86f0e00388f5e9ee269097e72464a0c7dbe988c5819bfd1ff8ba669cce2b72", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "e0bf75c0136a4b1d0bfb411fff2ad1d5534197c09e89947a3f5610b6d4a0e117", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "a3ae1a9bcc351542ba513d9be20a543c2ae269e774d363b8c769fba11ddcadf5", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "751bf7e66d8140247aad1249c5ec277205bab6f9b02c940706789caf8c647197", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "481c525fc5037ef0dd24acd6039ad7da32520e2ddffc237007d559427740b1ad", +"T2T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9614de305deebffce2c5a0593ae68640948a42007eb5b1950de20c4943cefd10", +"T2T1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_getpublickey.py::test_slip25_disallowed": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "7d31ab529713518261eae13deaca380d758050613121caec2c7356e1304927ca", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "801905a26b79412e7a257420c99a5054dc8ba71cb64547b2f93874cd3beaa235", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "8d4eadb44ff5e6bc7c3cd0c8da38bf92669b470db9a73349daa2fa197b8dbb11", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "b56b25a2d46c6608a48d42988cc00e4ec0aa32c495939986cb0ada8da0988d58", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "15738bb63ce36b1eea78173c22ec92a12a82e730875220bc660a1837bd86de47", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "21131c723dcdf8769c7a5473c882b0b9e8bdd9cc29248a03fa00d52598b5c352", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "8d4eadb44ff5e6bc7c3cd0c8da38bf92669b470db9a73349daa2fa197b8dbb11", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "8d4eadb44ff5e6bc7c3cd0c8da38bf92669b470db9a73349daa2fa197b8dbb11", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "8d4eadb44ff5e6bc7c3cd0c8da38bf92669b470db9a73349daa2fa197b8dbb11", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "d301b4170f63e4d763f970d3ac2c90ecf878a10358d7dbd4618df8dee2204b94", +"T2T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "7aa9fcfcf62a2946a2ee72009fa97f376e0d39760d550038d2d9af656db3d227", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "83a1ae04199cc7c2a1337d7ec072a3a2766fbb93665451e24d6e08c71726f7a0", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "6c45ab7e355c9aa7f712068d143fd2267dd7d15fbb051b3679ce556155887390", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "c828d7494886a60139c4c1c9a046f7630d2dcfb2a6f400dddb4784e699fba998", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "2910cccf3d076fc896256ad633c12a9f9813d700134132982a2df81c037c3180", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "cc23cf35ffbff90c3663dc7b11a79af39f525d30e9dda9514407be49f0e5131e", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "bce906403e7e788d44979b0be0ff51618a933ea3dddf69d22f17e614ccfa23dc", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "883e965201f5323389fdafa709790fc3d4eea152b4f391499bfbbfd9024010f0", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "9d7ff2ec3d06d399fc01d0f2f2a63c8fe84a9f0331faef9b33dd80496c39d3aa", +"T2T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e69f5a8926ae7b93d996e9211e9303c8c72e9752a3522e71d75bd71c9ec9bd17", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "4fa8aa143ab413783c5891ddef5844b884c034b9aa10a13e69799e84f3bf8dd7", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "e5bcd1dc01907060e60748d22fa6746fe6b9b2a4e3345859e0d75962df0bb263", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "0349e7572e5d94c7ce1269c8ef7c5c58f684c09b4e604b4201440d9a14b8e1c8", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "87155dfda5530f38c79dca87bc17feee850e0e7a257693b65a71bbd2cd41b292", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "277e708173251e9916b1e231fc10eccb8107e2b92eef09a184b70480f1f549ac", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "19167a3719aaf727baa21f03c5a9d2f4e25ead02b6e59374a6482aad4a13e0da", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6b5e0bf4211712f49a1ba4f26c39dd695473c83d774a43748a6a7e99ab203602", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "b33f0069b18b1f738cf8079dd673b8da1fa9e78331ffb016561fa84fb9758a9c", +"T2T1_it_ethereum-test_sign_verify_message.py::test_verify_invalid": "4fa8aa143ab413783c5891ddef5844b884c034b9aa10a13e69799e84f3bf8dd7", +"T2T1_it_ethereum-test_signtx.py::test_data_streaming": "d84417862445be85c9eb08de51ea99fc396dd686c27b266e07d48d35073618f6", +"T2T1_it_ethereum-test_signtx.py::test_sanity_checks": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_signtx.py::test_sanity_checks_eip1559": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "7fd1741c4d4e94bbb03f5c53d7c3267b81982e23eb4968327e3c2c0f762121e3", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-ETC]": "3243a26de8899fa5f5b5956163cabf474e70d2955eef227508d4245c9576aee6", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "2f785f35ecf06199ac0de516c1bd6e81c7079c90cee03393029e28591669d053", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "10eb87dc34c40fe3321a24b9bdd239ad298c26b3d2dc87ab0c0a8dfa667e2473", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "2f785f35ecf06199ac0de516c1bd6e81c7079c90cee03393029e28591669d053", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-Palm]": "7fd1741c4d4e94bbb03f5c53d7c3267b81982e23eb4968327e3c2c0f762121e3", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-Pirl]": "7fd1741c4d4e94bbb03f5c53d7c3267b81982e23eb4968327e3c2c0f762121e3", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "7fd1741c4d4e94bbb03f5c53d7c3267b81982e23eb4968327e3c2c0f762121e3", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "7fd1741c4d4e94bbb03f5c53d7c3267b81982e23eb4968327e3c2c0f762121e3", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-data_1]": "7a2ac6bc32c40e6585be5f666096fbede658dbb645ecb93c42d6f8a315c8bbee", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "6b5fe5f66b794342d29da773df062e5d9d4dd84f2d75b09bc669d274cd4ef9c4", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "9adfa74c668b6097e5ecf5f49a99ee546ce43fc5b23c81cf7d5eab5661a379a5", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "7fd1741c4d4e94bbb03f5c53d7c3267b81982e23eb4968327e3c2c0f762121e3", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "7fd1741c4d4e94bbb03f5c53d7c3267b81982e23eb4968327e3c2c0f762121e3", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "7fd1741c4d4e94bbb03f5c53d7c3267b81982e23eb4968327e3c2c0f762121e3", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-newcontract]": "de12eb040dcf9910821566280346aa03aa50de02ecaf38439f33eb2ce02fcef6", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "e3eb84ad60c97541a1e6ba67fff529e6ef12a0a56ee987b266713fdb012bb7c6", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "dff318393153e4a44cfe7bc11fc0ed93efa49f6838ac2ad4662cb1a7dd161add", +"T2T1_it_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3daef70e3fe638e5b56c6264f452605667cc95f92e2a264a08edf8b305b03cf8", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "dab32415eae6bb449c84619c997f0e76a2304644fb74f8bd8a95b21e9d02bae0", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-ETC]": "ba9e2b6f7adcd790a416189c8c19af74d24ff7c1067fb12ee458ef44faa6e21f", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "66e496847be8ea008524e56e46e37be51d668e9b3b6c7663ed6f7e96d27572b2", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "21180bfd05a8b84a5d651386db07c1cdffd7ab8f5cc9bed3c3d6071cf34fbe9a", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "66e496847be8ea008524e56e46e37be51d668e9b3b6c7663ed6f7e96d27572b2", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-Palm]": "dab32415eae6bb449c84619c997f0e76a2304644fb74f8bd8a95b21e9d02bae0", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-Pirl]": "dab32415eae6bb449c84619c997f0e76a2304644fb74f8bd8a95b21e9d02bae0", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "dab32415eae6bb449c84619c997f0e76a2304644fb74f8bd8a95b21e9d02bae0", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "dab32415eae6bb449c84619c997f0e76a2304644fb74f8bd8a95b21e9d02bae0", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-data_1]": "17c9b158060fd6844aef7916394b59c365311315c172beacfe5cecb9475c68ff", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "94c07bec043c9e7c3e311b53d6a02736f5cdbd205a6d61c82e8d44282579c998", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "da91b5da910863962d86016a4c96849c38e9966218f94573ee4c261f42a8c88e", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "dab32415eae6bb449c84619c997f0e76a2304644fb74f8bd8a95b21e9d02bae0", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "dab32415eae6bb449c84619c997f0e76a2304644fb74f8bd8a95b21e9d02bae0", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "dab32415eae6bb449c84619c997f0e76a2304644fb74f8bd8a95b21e9d02bae0", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-newcontract]": "de12eb040dcf9910821566280346aa03aa50de02ecaf38439f33eb2ce02fcef6", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "d3ce1689655ae772ebf6a3bc420fc960e44dd07ac7a35edcedb766e95e90252b", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "fe96eabc4e7cfffa10cd626ab7985696792673bc310c8dabf3a68318ad0a8ee4", +"T2T1_it_ethereum-test_signtx.py::test_signtx[True-wanchain]": "bf6454aa443b07a5d451ffcc7daa77b23f7da2a3bb7fd3a3c1f4c07b58fca25e", +"T2T1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "2ddd07f0c845ca151aee54399697958e6fc7aa89e86273150977e48aec039516", +"T2T1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "596f60620ac6c72e0cd63e442e1bbe3dbee823edd0083abb78dcc8162757def9", +"T2T1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "bf4cae6aa127474b100e60727b1bb97bee3f9748b66dc190c32830abefe9a774", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "e3eb84ad60c97541a1e6ba67fff529e6ef12a0a56ee987b266713fdb012bb7c6", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7a2ac6bc32c40e6585be5f666096fbede658dbb645ecb93c42d6f8a315c8bbee", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "757dbd6f530c2b0068040942a5d1df58f15f481d49c46c7be3dbfb4f192ca14b", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "9adfa74c668b6097e5ecf5f49a99ee546ce43fc5b23c81cf7d5eab5661a379a5", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "a03d8c5393b5f6fb0e3090e34bb423aeb4dfc15396f6f627bd8de80fd0a98fef", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "8d0326c9790a94f66674df38f7f93f62bf921bc844a65b8eb0b9e020da23d001", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "e3eb84ad60c97541a1e6ba67fff529e6ef12a0a56ee987b266713fdb012bb7c6", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "d3ce1689655ae772ebf6a3bc420fc960e44dd07ac7a35edcedb766e95e90252b", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "17c9b158060fd6844aef7916394b59c365311315c172beacfe5cecb9475c68ff", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "461b9d8ec6c3cba24ec1b6a3e094f88ba2de72ac7ef0114e62d12c0d1e2b5299", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "da91b5da910863962d86016a4c96849c38e9966218f94573ee4c261f42a8c88e", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "b8a22cc7b3f87e9767a1136b338c639d552aa99e93e22704519e621c547052f4", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "124417c3c89de4ed655ead25d43e2ea34f386d0f7b5dcc9a6ee20069db7042b4", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "d3ce1689655ae772ebf6a3bc420fc960e44dd07ac7a35edcedb766e95e90252b", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "e019e2e0113451e91315ee6047a72ab05fd497a24b04757b3bca295316f13e88", +"T2T1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "e019e2e0113451e91315ee6047a72ab05fd497a24b04757b3bca295316f13e88", +"T2T1_it_ethereum-test_signtx.py::test_signtx_fee_info": "e8a19ad371dc787d5290731071bdb7fe079a7489e2b023bf012c4d8a88e86540", +"T2T1_it_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "e19cd16031eeeeb56b8cb4e4d6ecd54925ef7d3137cb1684d0d0425e4b89c3b3", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "fb3dd319d7b011a73a50d738481602776542867f7948d93021254a25b74e7ff0", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "f1033108052e2f62c61ec890c689bdef8a46dafc31754032f66dbb7d9d741a6e", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "1d9cf120c5a051190dbbcfee40dec18ac27633d99aae79e6bbd7ff6e761fc9ee", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "644461017aa103ed97a8ec2b13b69086cccbf0f9606cf7735b36745ba58c5f1c", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "a84193da98ee407675021a6d22bad903076f5229a54fdc73f32397be3617e2be", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "90d4de0b5fa341c8f5ef91773e0e85bacdeeb4a0052464bf2d49457c8019691d", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "eeccecc5ad874b2d703a2632c9d471496b8cc36b356267f96ec54798b51c6568", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "8be2f14c942da72327a99275032ba76d97f2af40e1d1d497c614f3961a94b7b1", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "e0e7ef8f5be2d3aa0df2badd553f9d94638e5e4dec08e9afd11c5cdeb1b42a0f", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "c756e2d332665e0a412cd78bc7def0aa41031284d3af0cd68fb0099f60f61ee6", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "425d04f93757af87515a5c250f76b5d95d00b7a1b1d58d78b58f31fb96f56fa8", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "e8baad3101bab5090b4fe547830a77cf91aae10fd8a20481ecc8e4b236b593db", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "977ebe497e0a53cdb50cfe15a636eff67543d7d4e04b2ed71a288996895cf962", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "977ebe497e0a53cdb50cfe15a636eff67543d7d4e04b2ed71a288996895cf962", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "689ba71da8a38f280953bebb23d67063b26d35b35dcc4597df05e8f68ee9754c", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "689ba71da8a38f280953bebb23d67063b26d35b35dcc4597df05e8f68ee9754c", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "61280f57e89b5af24fffa58d9d351fc2fd1eaf4fe7bcf5df9c9b512ecc8d46d8", +"T2T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "61280f57e89b5af24fffa58d9d351fc2fd1eaf4fe7bcf5df9c9b512ecc8d46d8", +"T2T1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt": "3c90c3259a184680121b9ae4cf490a543ee4e98ae1fcb777634c3d0d676037b0", +"T2T1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt": "992dba4e2bf6f6585b78a6fa182ea92a77da7869150e9fa102044fc181017fd7", +"T2T1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_misc-test_msg_getecdhsessionkey.py::test_ecdh": "2cf5d7876a53cd88c2a97ed74e3f31a8ab3de5180667f8dc4aea1d07587743d4", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[128]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[129]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[16]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[17]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[1]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[20]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[21]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[256]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[257]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[32]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[33]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[3]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[4]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[512]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[513]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[5]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[64]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[65]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[8]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[9]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_signidentity.py::test_sign": "155602bf1d1710ac1ad4fd567cf52fbeb16952564a45e37af9d82f105a65b743", +"T2T1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "313580b1c8bc6dfea10403f34917f22a66cce8cbc0729dbd3ce8fdc958f04cd6", +"T2T1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "609df25ea9cbddd6a4d5f6d9a94d46d915dd0d9e0d2c52c64491c278f0ec5dd6", +"T2T1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "5951f583ecda277d5111d4cde092122b4ed3fadff6c61afbb07b6316ca5a5a10", +"T2T1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "80a0710858b1e03fb2b7fe936d040a1d7f013d5b5d322c12ec5e800ac38d7c4b", +"T2T1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "a6225d9ee087e8e454c8ee90ab8568a701bc5221c17cd31511320144617c3278", +"T2T1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "ce2f6827530f7300b2d69b809706308e657d130bd264a6867116c85607c32797", +"T2T1_it_monero-test_getwatchkey.py::test_monero_getwatchkey": "e5a377670e308939fdb9ab98e628d9e9843d51b0176cf9b6031e94a254ac478a", +"T2T1_it_nem-test_getaddress.py::test_nem_getaddress[False]": "7b6832a8cb1198ddfcea1c4c665209666a6fa374b29a2726402633a64ea27fcd", +"T2T1_it_nem-test_getaddress.py::test_nem_getaddress[True]": "ae4cd9f844ed819d6418f7057520ee25431f75c89de963b3adaba40bd74be496", +"T2T1_it_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "6ea6dbdf195500eb01ea7765e1721e57a7ba8359c80809ee7fddfd4628d93c0b", +"T2T1_it_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "fba8b9cb17bb0e292dd2892794dc2e05c7ad1bce6c072096077e662ea5f29b9a", +"T2T1_it_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "e40b1ea97aeb2171038e631f82418e4980995b379e3f75b368d8e4781a8d64b9", +"T2T1_it_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "206411eaac5e81619933f506bc127abbfe5dbb074070a5aa66c56dfde19c3bfa", +"T2T1_it_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "6ef24be0fe47582550ffa5fc050cb7af5b9e277bc432c39c638b22696e174af8", +"T2T1_it_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "49e716d0dadbcd92b5241392d7589da91e810398062a8c405dcc71f5b2cb4fe2", +"T2T1_it_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "4e980329257591ffe8d2dde47325a54a2b079e3c4371045353ca4b8eab78a998", +"T2T1_it_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "c8571fa904dbfbd2d1ea5d521893c7a772399c721d16d812fe5e9a5998cfac55", +"T2T1_it_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "c3a0d6c3b3698e264ecf01ebedf6c451639db76b71bbdf19b3d2eb98050ce82f", +"T2T1_it_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "02a02cfc1c42f36ce4e1147586b3cb48278c0619a650308bb684a6a2ccccfcb3", +"T2T1_it_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "1d2e86dbca5ab62b74ba85655d43c968c9a487bccef248ef2c7ba99988941034", +"T2T1_it_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "bc58f094b568d96789ef6256dffea2ee2e22e4d1e274b8ec702f2c17cbbae80d", +"T2T1_it_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "9b4447acb8ab29b20945a9fbcf900b3a6be32c7892fff9673737830626eeadad", +"T2T1_it_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "0d3b086c546d30978743d0ef9ef463f634c93070bf5042ac4433cb74b0128683", +"T2T1_it_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "1500e2f6587c81d3251cc2037bc1682c8dcd7713188037be015927b2d8efeb04", +"T2T1_it_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "0d9ce51a9dd47637072537e7785efe65631b448ff494ccfd7d8f060b958c242d", +"T2T1_it_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "5ba4039c43aac3cb63634362642e15d4e76275b3dd4ec76593f5c7f61647f28a", +"T2T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "37fff254c440cb11da209ed1b1fc045a1a39bcc67630f627edb331e81f7b749c", +"T2T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "421f193ea70e0ed8191490158bce0089d7d34487589715ee26fa5649a9932599", +"T2T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "8213175dabfa67f5d5a6a274008336c09d8354620a4b34997c7f6cc1bf00bd91", +"T2T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"T2T1_it_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "6e430d98686ddc572b2578ac350c8cf516fbd0e6948ac1d7cec696ec9410506a", +"T2T1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "2d3eb4561f0a2d03b00c97ca02b1fb5c75ffb33e75830cf60f9385645039d579", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "ef63aad4d1aee03010c5a6643bf1143e37688d346ac59e8277aaf11138d7f716", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "a771724953980fe9f811d7274d30c2c7d28a8b53111ec5dd43ae8c3a0cbb3180", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "113b710f965909db1afa240a81cf343db4569bf145d860d194075454c992657a", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "201dff4c12b22be87158fb6ead4a60cf3693d7da5f2baad640eec2ff7985f9dd", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "66a9d8975ee63e3abf0ac348f1404769e123b9b226a631e472a2f2cefe8612f9", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "640d099f68fe59801d57e75ff98649abf4d04882ddb24d09aa11de2c2c3d5548", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "d35a2f40297d1ed3b8928cf247456ab2af7870ae74568e8a2529495f64f37ba6", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "86b1db38a1a1cf4317a62f3445ce5518744b7b64d100753f39944cc41bc459ab", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "68a73cd6be390d3e41ca70380756bb26c5116af69fd83ff88a8a9fade85a6fbf", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a59cad428fe0a3b1028287d03d45849626462757e3a5ea4b85f6e610ac32d4cc", +"T2T1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "a43bbbd9243e458cba33bbedb58d517ca23951d054e90b77e8db88eb987b8af7", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "0f485a7e50cdb363ddc3209c4dcca46645bbb2d4a74196e422b94bd619f94dde", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort": "ef63aad4d1aee03010c5a6643bf1143e37688d346ac59e8277aaf11138d7f716", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "8747ffe517a37ab7e2a021886163adbc3562a3d705722b4bc5d2576ef62c1aec", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "461ac780bf3a1bba4078653c906a863ce6ef2e0559d62c7a9d5db1d42f83cc09", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "c50966b614a0feed97dd0855d2c033c588b0e046887a4cb0aaddbb039258f0f0", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "c092b0ec3c652887580bef65c023140494b52b20ed8916a1a2e1b75e9ad56d54", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "2214524f03d97ab04a98798e79af195dc76de42e653c7defe9d7eeef5e2d39d2", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "e8ffc75a5b605ffc97b031d9e572e1ea99ca1229d7d060477b8a8fb0366dae71", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "57ec7a37b9a693ed412e4d1347c63af1ceea9eac91947611fa12ef3b6998aa20", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "c3222e0dbfafa0b0dc24212d9727dcd34a46c07b2ff216e0fbdedb587428df83", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "85de6dc74addf22d3a0320b0633d1316f0ed9da2eee5a48d2dbad08e41e0c42f", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "bb0ab6c71f1cc7f78b44f155e0be60e2866327b78791746f7caf34d2740f3bcd", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5a864a2797d7779b5ee266150517324eb296a9343fcec4ed1861022fb50ea7a8", +"T2T1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "24f831376f90ecc2e7b49175dff6c8e4f0cc169e701f7f6965bdc3d4b5f2b9df", +"T2T1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "825f1b78e4597d11fbeb26ceb9ecf2ca0b07e5b0e0cc46ac517c2dc5c71f9e2e", +"T2T1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "571b87cada2ddf42bbc453cf508bcd94f1c073dd1ac13374f3458d43bd3bd928", +"T2T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "f6756d4a3171703e895767e82353667ca3952bf37f767d53029e11def48a6055", +"T2T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "90a53b9868776dae8dc2c74d6f1e0afef96f5e1ded910240ad99387ed64a3520", +"T2T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "a81f7d178ea040bd3486cda03bf996862882307df90d7b70ec16c10f6d97b1b9", +"T2T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "8e1faede839dd07b28ce3306176db06fd0d423ad85437694e278eb600e636c1e", +"T2T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "51018b221d52337ed0483587d32b13a96790f7bd8b0ff4529ddc591767220596", +"T2T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "233b3c1a43566806904f60eddbe9a0a5294f3b324c44d17fb122f39aa8365238", +"T2T1_it_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "d495e15455d7ad5739d2846966e1e4b08273e0136838bee3db482cb6a8e231bf", +"T2T1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c936b92f7bea592d0663f500107a02e8acfaffe179d3ddc71e19ad186733cb98", +"T2T1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "bf22e40bd8f09478bb634390d3d2d0af58200862339088ebe189cc6a680c2859", +"T2T1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "af55f0eb922b1ae423d90c9a40430252c24cc88e4b5e4c35c761b8474699e1e8", +"T2T1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "817c0359aa12d84162d1fdc89c89e05165973bfb74261e7dda2739e93d3f4b32", +"T2T1_it_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "eeb6e0316e7e89c9402f743b7ba1dc8342a1f2f1356f2f599f597ccfcceafd61", +"T2T1_it_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "4a26d809cc794d654a18113279449ff86481eb5fc24de601e8f314782e62bc71", +"T2T1_it_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "1a45fe99d969af9ab2c4874826d939df5c7c920831c01ed619c521a94e1634af", +"T2T1_it_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7e945771407308a7381920bbe7a71a9dd4649cf274821bbdf1a1c53c2560421d", +"T2T1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "a3ead3c6ae0c4019a355d7d0eb310533b76657cfb8267f6aa699927f476edb8e", +"T2T1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f450bf41deaca837fca1257af8e1d9bd37bab7fb81074f37167f299f6ec2df06", +"T2T1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "4cec1b43c55730537c499910b8378348e74069f50dbdd3fa9dbdc3d8d876aa86", +"T2T1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "e400df0229289f1d4d97732c94495280755e763e6b96e2689cd31c8538c2bf5e", +"T2T1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "472556b416bba7d5c0c175cf9d6ee39865e35a47348962af4a082aa3737bf4d7", +"T2T1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e69c184d9383eca2ccaed5c93ce93de0c1a6d032fc8b9a785a23e0c79061b96f", +"T2T1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "4ebdc66c6cbd4039ff83093f688a52aa7266e626a7fcb4d6b0313a3f9ff5b444", +"T2T1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "f846877206897ce5215cdecca4d33324647f6c5bc4b6736d39ca94a5456b8b5f", +"T2T1_it_ripple-test_get_address.py::test_ripple_get_address_other": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "2ed1d34f18034edb5e886db16396f46ff4cdf555f591898ebb550c152f5e1f7d", +"T2T1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "d9ead4e7dfab571829a0c6e84b4933b344c11955f68a4b08b5c94e8df42d9fcd", +"T2T1_it_solana-test_address.py::test_solana_get_address[parameters0-result0]": "609ce85ba2f852de8e9384bab5af6adfe00ae4e8f84eda7ca4292466c5339903", +"T2T1_it_solana-test_address.py::test_solana_get_address[parameters1-result1]": "7a87ac54e99ec2ce01735e11751dbf399a56adb994c489e24e4aa91abfdb3d30", +"T2T1_it_solana-test_address.py::test_solana_get_address[parameters2-result2]": "f9001eac796e2f3840a94298f8b3451a84299fd5b0ce6f6e30d1608cf5531ed5", +"T2T1_it_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "ff83cac323b4901afdc20f0c8ea2a1fee1d6d6c5975648d293b214af45debee8", +"T2T1_it_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "a0b1924e718ee79858bfba7fab5a99ea6cb52a44a8f83616b186e70f8f84559f", +"T2T1_it_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "e3986e60cc75e2b97c851516e31fdb40f3acbe484526e2f14e4c34328731ab6c", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "8efbeff27a37c18f01563d37b5494382b75c2f11f2d2cb7bf5d089e3469a8662", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "daee28bd010aa80545275a61cd534756869de10214f939be70114ea9d7195e92", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "4b55cde906813d4828b5bbe0ebc0920c831f28dc0e8ad3094ba9d87db2dea1a9", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "e20a760625e20557df6f79d268def69aa4c5b0aa8f8e822ffc8882d6cbb4305d", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "9557b5def3f4ddb17aff496eeefcd22387bcfbcb69f3ae3158699d0ed14e5c9d", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "ba4d93319d3010b2dfb7fc30ccf6f0063748cebf4fd6634e8077180591524f9f", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "c9a0aebfac75516d1873914517b736aa165153a0faa8456e3e19173ab4a026b1", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "40d4d74e9c77fbac2c295b90787500326889c853f30c3bd5fd8f8707eface631", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "0f8591138a405803a2a13d974955ac828b93475410595d0f7360511b39dc6bd4", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "e00e86030adc1e295d63fff58cb3bfccffc93986fea9ef791396d581fc623ed4", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "5a43182c03b1cee293522cb6d71c60d3df183b8e04516c4c36c49877f5fafaa5", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "7beae790a33e71597cee897a91154cbce1852c2617e285196517f2e1f44507db", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "65ba5c35c68124a3bef157f0e35577fd42f6c97748b156509edf4550537fefbb", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "73d8a4ee52d17e58ba09a7255bc8ef518678d507c03f4445cb36ed7177a929ef", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "bdd4a2f5192e568efd236e4388e989746a555b438a60187bad836c2cb2b970ed", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "88af344df5a57a23b19a9af693541f5d6c7458ad33118b1c100933603543b91d", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "eb3fef1fbb672272d5699ef9212ef4a8f56ee5946e171b7bf3c9dd44c8af67d5", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "35e90d7458cc9ceeeec9b0430d1efe9197785a652c9d54b880670cb0fb56b2cc", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "218d22fe3db7b91842dadb5cc1dc535b186f0165f72e9ce847c577b25bdae19b", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "ffcfb6f339aced80132fa4950999822f8f22fdc1d23b4b617fd2ccdff77cd343", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "c30d4da64d0e80717b3679d8a828fc9741e16c2c4415388d57550a8cba2fb7ee", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "810e36aa6215928d88ef7d60d1f4dad815eca9b6c5f8af45297683397459581a", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "c30d4da64d0e80717b3679d8a828fc9741e16c2c4415388d57550a8cba2fb7ee", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "1b0546162b5dce152f7e3d8a2c8dbb1f54a058eeaae747446e567204b5f7dd91", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3c7d780a76e81a2cc002e735f88b386b1595f2c7bd36e577d4fed8af06ca9ee4", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "632863a4ea997e2e63018745cdf9ab4a29264023300a6c18cb2c3d7f62aa7bed", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "557408cc81687760a455b49542b77ff5dbecea7260891574847728bc0bbf9535", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "47053f7d4616a1d4d772d402aa674fe929e0d8642d1567c92b90325cdf48b4a4", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "6d6e155a65253f1c6d93761850a559a7bc65a93afdc98498ccbea982545abfa5", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "63ea4219f9941a5f53c27100f08d46c11356a773d37a9d7877d914cd20b9f4fb", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "0bdf3dfdfc7aa7419cf970c18b64ca1df5294f45fc9ad6fc1101f2769625034d", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "4b5947c505460c43f868e27b1d7ad4b7f3a214925d556dd39d90712c5edc4915", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "4a1127c731d632c126af4c2438e976a7f8879b2c700d58cddcc1f2b4338d5e7f", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "a60f6cc54fe27fa91e29ba0468b9c807052a10f014e92354c1e5ccc12a8eaddb", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "690fe04eba8cd1091265438a2541986df957986b81ac6f0d0011c1630865bf9c", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "c054063a637aa1e95b78567c590e2b10d7cca314f23b97324fc344017cb741dc", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "28dbf46d7eb06a8728ab61243a428f06860ad139f0f91a96ae7cdb375b1767a2", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "7dd217aacf6378406d90b546d2292a54a44a941a9d7e7c1d2b8ccc6ee5229515", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "4302759df064cf7348e690bc930c68a6bfaa39f9895a5171743c8dbdc5967517", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "6daf991922bc861fa222e0a91e4b21cfe04b4e16fba3283e717d5521e3cfc7c5", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "486d15391b2bab5cd8131b552455a2d1d760b3df9ceedbf12a6ea3320251ece5", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "315e22959539dec71f26511189f1a5a9bfdc75960d1f074cf03a73f4d714a352", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "b234a2757dbcaa22eb64697a994901c258239e31f0a985fbd6bcd3844c3ed550", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "225179364275d2e4bf7d7d300f0f266a2a9dd25a185c49a528e3335d1481f906", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "d8b8eb4396dea46745d1775b387dd62d6fa11e8b84fd6fd512e9143a92a80479", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "5516b2a7463d616fa517a9570d7373271ed81bf72e8d845a906f4e1320fa4fe1", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "093a753a1084a8c70cca960bd1ddcc365fe1079a345f3dd12f0d9ca13e9a2e37", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "474373f639524679b6e2dd53d259b93193bf5229b057880845bd1e36d73950e5", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "f7813b05bcfaa650a63a853f5143e75a4af0ed2e33c29fe042410a3fe5372ee0", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "b58071e58c031905d05628ecf521d024516a4bc5fae54e5dd32e347f3a81486d", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "1374a47c8db406179272dd2381d746ab14c16570ffad142ab256611106b07a14", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "047fde921583014c823d6077126b6cd66b7f016bb44b59b152a5c68c9eb7b6a9", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[split]": "1d54dd54e000822e406f581914292ec606ed6c836ff3b28f3d79092e37f8c554", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "f48717d8fff748bad16d6ab21ecc8485b229a406fee45c24393d3e128d94909f", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "9d26320de8993670b261fca661f5b0b07bbc1c4c691ad8e70714255e47bbd463", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "c9f63100da16356de46d12f9c4f750fa388af7dcfbc5837eed77b66ba0a86236", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "76abc6eef7474f0b50cb83be22c7fc11be4a5dabc1b4b5991e59b1fffeb2e6c8", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "86b83a9613a54771df40506d1463c979bc2254bc779c230463d54fc293ddbe41", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "eb817a48c5557fc6ecc4be5386f4d53ccf062fd0cc562a6a7f5e05a0e489f2d9", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9aa5758e2e5b6624205cfcb2c7b011957e4d693830cc801090b45bf557b1b442", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "632863a4ea997e2e63018745cdf9ab4a29264023300a6c18cb2c3d7f62aa7bed", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "841b101d76c55d455b9d08d1bb01e54e65847a22b475a6abee1fe74c8f103621", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "cb4e93f483d0240e3b851d64abece143b1af96160e6fe5c8aab46b88499ac3cc", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8d848d16ec90397c4816f93351f25703615b85fd6af5050f0b83565497879513", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "b1810995d81e82493f35ae35fccd8e34a2d3cd9a2257435d64d5e18cc04a6b77", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "60ad36df85d97a66878c106e25b5359f4c9b14a0f03069efff07a741e1c75d1f", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "82c9fd59face4773b199bce0ad33f07023858ccdcdb2c04d778a591145f3f0c5", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "d23965c0fda4c5888a972936f7819f89d6ea345954cefe3be71a58c17aa5b6ee", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "d2fa575ae018cd3b31ba2dd128df47df3720a9824c6ec0758b9cc872c980cebe", +"T2T1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "1d69057310029d4e04af9c9f08d7ae6ea963432dff585f9f121d100c2c4babc3", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters0-result0]": "8901062f5bf273ecc710661e0d901bdd158826dd024e228c5a68a53c5de376c1", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters1-result1]": "72fd058cf537b168de3f08aa51951120e407050ac7644d7ffa384687943b1808", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters2-result2]": "7a4c0bdc95f7ef1ee9b3d9296c6f493c203cf52c8781f1ff159b16b87bcee087", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters3-result3]": "1a239f3e9c1f1ba187ecb43e4e4a43e94de0a5930cf0c7c078def92a8a829c06", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters4-result4]": "c48cf643e15985369f30638a484d74ac94fd401c398d3c32e70ba7dfeaea8406", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters5-result5]": "6d8e33676848a3c8109586d36a5af75f311ae561e6473d15f9082692a1c6c721", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters6-result6]": "826fdf78dde412f258ca3debb5d3b222fcf0bae95df44d79b911aaa9513c2c6f", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters7-result7]": "5c4821d9c4c15e2dbb34d4edf99abda925b443ceb6f9e11a5a34e63067af210c", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters8-result8]": "0214f75436de402f0eabdf5d753ae5535b593fc9cb48f8d8b7e66200d901836d", +"T2T1_it_stellar-test_stellar.py::test_get_address[parameters9-result9]": "1c90b8d8196d54dcce7ff84bc63e807175915873a087cec02654c9ce1a8ac5bf", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "149e9364079460f906f1355b1e5fc4457d254f0c35743fbdd9f992165dfda902", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "7cd7f663b7e8b7bd896fcdd08682d9f8310a9ddae5379f89bf764ef5281c51d9", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a0804a37272b3335fe6c652d55d49a83f3334d769bad7dee9a6fb44eecffeb4c", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "1fc54fbcd081a32827b1065433c2f6c0426d65ca7e3199dd2c5982f18334192a", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "b25c787c801d451eb5d835e04e8d13d72d53a2aeb514048b06d9616acd14e262", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "4e3618c9b8726d14f54350621df14f06febd8db2d68935ca26a9f658d8de8402", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "4ccbcc5fa1e7136f41b09202718eb90b7c7c34c590bb08280fbcdf226ad2e824", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "862aae0dbe53f08662378c6b034220a170a04730ae0fbf8405251e670ba38f0a", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "a1b9d273163bf45336ebec8092f257e3bbdd0ef32f2c45627f78d3f9f04d1810", +"T2T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "084f2ccd88b342b1252b12e0723d76d05431e3e3ff5b83fefd59ffa30b212b8e", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "40b850162bd0c4693a27b2f76e9d4c77abe99ec769b3acfbc9af9e6576071d1d", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "c6ff3e99516dbc1cbd5cf2960136c67ebc513e82acad8c3de47b39c24b186e0e", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "bf1710de837067bb1dd6527616ed9645b73b01b2bd726d5ed9b8737f794f0cba", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "e633ad1e7fe7ed78a05e43bb3e99e55b67ab5fe25de08b5683834f6c0a559966", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "a86124c3feb90573449cb511fcc4fcf15ceaa3ee59a7db345a957b9970857db7", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "f857baf2ce927ec4606c01d4091ca6bc2fc3fb280594ca1541deb1162ee7e0b4", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "d8079cdbc9b24d8af9a1cc75af725c092504f1b33eafb26a6b5b3d9d4d58ddb0", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "7d61c014b9de9f8498695887ea0a3e49b4952b3f55642930aad56ba894dd20f7", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "bd0cead6b0d0c5151003b6ffc6399ae02d0e41fa668be6bdd7c4a3be829b1816", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "f8fad92cf7fc17a7bda81b45667490d93fa3552dc8bdbf847ed29ad820c47e60", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "1be96c79bb9eb015a9608a1cc292f16f6bbe4e3fda8caef61b75492157aaf0f0", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "ddf3852c8dea713c828eb8997173244fc661e54e14653129012da4a366f19cec", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "68c31f7bae75648173c8d158edcfb37b2141f7ec498083ffa3c0a6cc94b3d99d", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "d8f26bd1dd5131fe68e39590f86cd15c15413995f5435b817d7c7b4d7bb33372", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "eb861adec6d74c7ae4e2b0982761ea431eed0c35e58d74afa008965b0a58dace", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "b368c099938573be6eb5cdb7cf2f1eae7b371a4ba076f113735cb7c6126cb60d", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "5cba19b8133af30c5d10feec4a30bed85e8603ac9323f29be5049de42fe4cec8", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "62b5d90e8597a20034c2c43075cd631be00865dd4db3b7e1c944ef71667290c1", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "87259e211bd19c59e736cd127ebd833eaf4bc76ccfc50d4f28b28cdc7f4a936c", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "e1d460b053acc688a812e6d5e25ad25cff9cfe066c7d3f1d8264f0fe89e5eadf", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[memo_hash]": "3728dce28a874a8c3b6135b4c87cffc54374182a657165917c35aa1d8cc4c0b2", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[memo_id]": "b0cc53dabb4414d8f77ccab2eb483af37e7b57e01b3f53cf95ea2e2e5d6f6fae", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[memo_return]": "1eb06b8a310d99a5bd9863a5532d0187b7efc27b01f8fadbda68d6fdedd4af5d", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[memo_text]": "5537c2bba3f23883504cc18b707da67e604d70efeccfed2335974f76836e32e1", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "fa50e2682a00d88b919d98c8a577319f4aae365d8ab697882792c9f8b19bf806", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "3fe721073041ca1cef5ba56890748ce37b4e900024cda4691158129c8b22e80d", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "78f8b382127bb376b96e95a5d41cad87a5c71b7561612b76f2861815acd38423", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "bc6e80d3ea2f9572161ac4114d58cdbfd9b4e3c125ad420a94324d1c9dc5433a", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "bbf91922d0a1149bfb28b1f0100df0e72e0983ea217a0e72eb031e8671341c6f", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "5cba19b8133af30c5d10feec4a30bed85e8603ac9323f29be5049de42fe4cec8", +"T2T1_it_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "81f5ac64bdad7f8a8b5f0970af61545e32efa5b9168b5f14fc20ea0433fdff2b", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay": "b830b792d9598183e0c081ecb60d3ecb1adb0cf94763da6827ea49d014286218", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "8a870e6e055abf440665afee3e7c85ca03355a8a67e9ca996d6ffff87f07afde", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "3d983f943dc644d0497f1898e914df3928d381ca00033c734295db4ff1fc1919", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "fb98fade7738a6cec1d6843615ca3665abefc2c03a95e87c4b0ed4d1d4313285", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "1380b8e1f973fd85310b304f7eda0b5531638205c0afbfa14e08df6ba410fbb9", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "6e413776c9db1938009281ea430993e239b57f4c0876fc8ae7448687d9e1abd4", +"T2T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "d3c3bc64afa1e136e11fc001f143b09e60137b0aa14254a1476d009020e67697", +"T2T1_it_test_autolock.py::test_autolock_cancels_ui": "f90637b8dc13386996bfd767af1e01fa296744230a290a7b1ab5f9cf82621b4b", +"T2T1_it_test_autolock.py::test_autolock_default_value": "f9cb548575390cd36e10bf4597de50464a47330551289799c012ab47715567c5", +"T2T1_it_test_autolock.py::test_autolock_ignores_getaddress": "68e9d4f7a8b26a22a8a82472683139f4a3a2d101b9e0b49ae6385e02a0287aa7", +"T2T1_it_test_autolock.py::test_autolock_ignores_initialize": "68e9d4f7a8b26a22a8a82472683139f4a3a2d101b9e0b49ae6385e02a0287aa7", +"T2T1_it_test_basic.py::test_capabilities": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_basic.py::test_device_id_different": "8be4a93643d2eaab9563c45a19be637b5e81151c6abaacb75010d2d0f1ab1945", +"T2T1_it_test_basic.py::test_device_id_same": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_basic.py::test_features": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_basic.py::test_ping": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_busy_state.py::test_busy_expiry": "ffee748fc717177580a2203310c84c8eddadcf71df556e2ae33124aeefe95111", +"T2T1_it_test_busy_state.py::test_busy_state": "842a7572bf748317e1d2189db7d1206649cc6b9fcafa8cc5af2454c87b533ce1", +"T2T1_it_test_cancel.py::test_cancel_message_via_cancel[message0]": "7f4e46f27feb731302a0a3532d603d3a4fc23afaffe0521175e4d1ec4ce20d67", +"T2T1_it_test_cancel.py::test_cancel_message_via_cancel[message1]": "972940b267c5bc71e1c46c777be64a64998e7959c3f020c85997224f103e7247", +"T2T1_it_test_cancel.py::test_cancel_message_via_initialize[message0]": "7f4e46f27feb731302a0a3532d603d3a4fc23afaffe0521175e4d1ec4ce20d67", +"T2T1_it_test_cancel.py::test_cancel_message_via_initialize[message1]": "972940b267c5bc71e1c46c777be64a64998e7959c3f020c85997224f103e7247", +"T2T1_it_test_cancel.py::test_cancel_on_paginated": "535a40aa1d2c4d2b6e61821e94fa64b66d01ba427d936fb34db756bb4112bd19", +"T2T1_it_test_debuglink.py::test_softlock_instability": "00a8e5cef4cce66ee43084439dd7404ed38a7b8419cdd600c8414eaa6444f99a", +"T2T1_it_test_firmware_hash.py::test_firmware_hash_emu": "1f90a70f83678ce1e261432b1b547029b1db8d457acacaa842b22e3b6670e057", +"T2T1_it_test_firmware_hash.py::test_firmware_hash_hw": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_language.py::test_error_invalid_data_hash": "de56fb0fbe9313f54b5a6b6fedfa02661232bc387a54ba6819a4099ae8ba79b1", +"T2T1_it_test_language.py::test_error_invalid_data_length": "b577c695583341bc05fc7806096c58440b9bc991cf4aa09b009548f8f8a0aac4", +"T2T1_it_test_language.py::test_error_invalid_header_magic": "b577c695583341bc05fc7806096c58440b9bc991cf4aa09b009548f8f8a0aac4", +"T2T1_it_test_language.py::test_error_invalid_signature": "b577c695583341bc05fc7806096c58440b9bc991cf4aa09b009548f8f8a0aac4", +"T2T1_it_test_language.py::test_error_too_long": "b577c695583341bc05fc7806096c58440b9bc991cf4aa09b009548f8f8a0aac4", +"T2T1_it_test_language.py::test_error_version_mismatch": "b577c695583341bc05fc7806096c58440b9bc991cf4aa09b009548f8f8a0aac4", +"T2T1_it_test_language.py::test_full_language_change[cs]": "5d9aeaab02fd7b45aab098603002403a952240ae4c06138a0c90f3888f72a3b0", +"T2T1_it_test_language.py::test_full_language_change[de]": "492f7011edd8d7c93100fd9fc1e3189c657665a5709338db7e1e7cfc406a62df", +"T2T1_it_test_language.py::test_full_language_change[en]": "33fbfa0b241c2e4db89201fb22d76ac96a2f02cd781a691691aa107fcb7e787e", +"T2T1_it_test_language.py::test_full_language_change[es]": "f258ce5156eee1af4562768e91b45966e6953fba7c24e8d39dfe9bb47d0af151", +"T2T1_it_test_language.py::test_full_language_change[fr]": "888e25a3d5d47fa4fcece66d5214dfd81418c265b74029f5800b732ec4f2fd9f", +"T2T1_it_test_language.py::test_full_language_change[it]": "dff7db46c6930e41a469a2cc0260a8b7d1c7645fc4fed3d4e1865482726b2336", +"T2T1_it_test_language.py::test_full_language_change[pt]": "3a5139bc16046495f635947663673e3377c10eb336faa7df103d16d9ca506863", +"T2T1_it_test_language.py::test_full_language_change[tr]": "bfa6f59af1cb9e176d3a803a08f87fb622faec649ae0fac60be12c9f75243284", +"T2T1_it_test_language.py::test_header_trailing_data": "41c980139d927ee18a58752b7a5eaf9760b28bf41fdab5adaf0cd55d983e3f99", +"T2T1_it_test_language.py::test_language_is_removed_after_wipe": "0f26d3c7da66b81a443cb924bc8b900d92fc4b144d36657f032cf263257ed1cb", +"T2T1_it_test_language.py::test_reject_update": "2f819baaf86f765b91dc6447a981a4e1fe35068b9c634ad9b4b6f01e1c17843f", +"T2T1_it_test_language.py::test_silent_first_install[False-False]": "4941957f17cb5c484fb5d0c7e5586adb7ec444e0abdb67cdcabcd08d1ee43781", +"T2T1_it_test_language.py::test_silent_first_install[None-False]": "4941957f17cb5c484fb5d0c7e5586adb7ec444e0abdb67cdcabcd08d1ee43781", +"T2T1_it_test_language.py::test_silent_first_install[True-True]": "6efc8cd9dcf7431e1a668558fb968ba7671040bc847c47a60471f1fc2d342757", +"T2T1_it_test_language.py::test_switch_from_english[None]": "0eab603f20be479f8a78d6616e98ab9969de20ca2602e9443d5de845aa8087a5", +"T2T1_it_test_language.py::test_switch_from_english[True]": "0eab603f20be479f8a78d6616e98ab9969de20ca2602e9443d5de845aa8087a5", +"T2T1_it_test_language.py::test_switch_from_english_not_silent": "ac0d0c1133c1e3fd6567502fbdab821a3f9a63605c9a5782641b4e79c1b184bf", +"T2T1_it_test_language.py::test_switch_language": "e83324cffa23ae22eb7b30be7a8634b8bd7326221956155b4717a314b9ca4439", +"T2T1_it_test_language.py::test_translations_renders_on_screen": "f59809e41a4fb0db4094f3220ad41b77294de383b98a1a927cc38ae6873fff46", +"T2T1_it_test_msg_applysettings.py::test_apply_homescreen_jpeg": "851a2efc37821af6ef5d62f68a34766fa29bfd7f6754e2f5c6840f354b095b3e", +"T2T1_it_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_msg_applysettings.py::test_apply_homescreen_toif": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_msg_applysettings.py::test_apply_settings": "329f143d4270dc3152882e4e51f16eb87a4afa66ea9d0148e3bfee5be5ed5248", +"T2T1_it_test_msg_applysettings.py::test_apply_settings_passphrase": "ef5bd9ebd31047ebd3461f457b74ef41f055cddcd9d1b417800fd9f83ec524e3", +"T2T1_it_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e47e6fe80661583a1cffb96b3287d44293c69127d25ed646187144b44633d2bd", +"T2T1_it_test_msg_applysettings.py::test_apply_settings_rotation": "b239bfee5a934789a249c07e50bce43965888dc03b1d2da813ff92068450a371", +"T2T1_it_test_msg_applysettings.py::test_experimental_features": "2b2636b3a446b29c4afdb923c5e6817bde2fd1edcde525ba8e03b0c6e52eb080", +"T2T1_it_test_msg_applysettings.py::test_label_too_long": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_msg_applysettings.py::test_safety_checks": "f409462347f070fb645e88a20a205cd2e5c169c0f2411f98dc8038c022f782bb", +"T2T1_it_test_msg_backup_device.py::test_backup_bip39": "39e950ead67f3adadd955e3b6ed827cb8457ceacecf4fc1da396d97d402a64f4", +"T2T1_it_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "dbccd84efc7cb3e4b5f248fab52e0192990a89d58572ba7b972379ed24b0f602", +"T2T1_it_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "c37e5445c41d97c467204774a886f439887895bad3bcf7b41f87ba596699f0ca", +"T2T1_it_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "f76f1dcfc82f7336891424632451ae765b31dc6172aed4320e4c5b1f4791922e", +"T2T1_it_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "188764498237c6243db6ae6c85100f8c5b6c1ce2887a4a3a9527d0b329828896", +"T2T1_it_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "758a7c4e9aa18f03bce7a05db25971fa9172634e2a2cd2d0253fb119501ae53a", +"T2T1_it_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "49373e8d29882ace67ced2fa5b8158c87967712387a3ba0c0f7df727d8d3d987", +"T2T1_it_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "9e5163c067ef9b2b03078a87b7e048dce9f50e03dfc79474d93b786a8928147d", +"T2T1_it_test_msg_backup_device.py::test_interrupt_backup_fails": "9fa5d8c572096fe916c4fcc266a2548c6634854e15ec4e97b5c4380571773655", +"T2T1_it_test_msg_backup_device.py::test_no_backup_fails": "fada9d38ec099b3c6a4fd8bf994bb1f3431e40085128b4e0cd9deb8344dec53e", +"T2T1_it_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "b1d0db96b4c1e7b106ff7864ffcd7db06ac2b81f49d729d082b680ecaee2bdfc", +"T2T1_it_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "70b3e72670278b6b24cc2ee3c11211aa8ac0bfb6bfdd39081e3ae1964a7badc5", +"T2T1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "443cd65a9160b000835e5603befad175bf2e3718f57126595126b401bdd66b93", +"T2T1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "7c30d5388a39145d1dc8f4c9f69bc803ff7ff7fa1c2c38e35be58441ab217b41", +"T2T1_it_test_msg_changepin_t2.py::test_change_failed": "3decb157c60259b1287d151d05d3c153b33c5fc48e47264840ab2cdce9a3a4b5", +"T2T1_it_test_msg_changepin_t2.py::test_change_invalid_current": "70ef6040527f2945af5825fb20d094983acd15a7240af0356c9f32247b469ec3", +"T2T1_it_test_msg_changepin_t2.py::test_change_pin": "22daaa259853620d59189272f6279ec27b9fe20037451fdd00490b768bf4c5ff", +"T2T1_it_test_msg_changepin_t2.py::test_remove_pin": "80d958dc94c6df6e3edbcf7fe82cfbdf139a85c28a824c781540baa73907b005", +"T2T1_it_test_msg_changepin_t2.py::test_set_failed": "550a94f24bdd1a6f7032d6944c1bd2050d11964a29696a3d7be52d14a9ca353c", +"T2T1_it_test_msg_changepin_t2.py::test_set_pin": "0d061d23311389bdf6ad3741b841e69aeb6f2398a5a44c3a875082bb2f488626", +"T2T1_it_test_msg_loaddevice.py::test_load_device_1": "f6d45da999eebf5f8da7c6ed3da0e409ecfc31c358da29e208eb7518d877fc90", +"T2T1_it_test_msg_loaddevice.py::test_load_device_2": "ba92565e9eff441bb5e952c0c118ecb693dc7ca5e45b4ed08ae1df6d4548b1b5", +"T2T1_it_test_msg_loaddevice.py::test_load_device_slip39_advanced": "f6d45da999eebf5f8da7c6ed3da0e409ecfc31c358da29e208eb7518d877fc90", +"T2T1_it_test_msg_loaddevice.py::test_load_device_slip39_basic": "f6d45da999eebf5f8da7c6ed3da0e409ecfc31c358da29e208eb7518d877fc90", +"T2T1_it_test_msg_loaddevice.py::test_load_device_utf": "bd2b6c7ade5f52f674a7facc1bfcfb337d354f27080d5425c7858ea06b9610a4", +"T2T1_it_test_msg_ping.py::test_ping": "7f4e46f27feb731302a0a3532d603d3a4fc23afaffe0521175e4d1ec4ce20d67", +"T2T1_it_test_msg_sd_protect.py::test_enable_disable": "b4a25622d06e70775bae92e28d7337470e0ed343343933cfa5e418e48893b4ef", +"T2T1_it_test_msg_sd_protect.py::test_refresh": "99540aed612f673696a808c4d70c62b4bbe5d16efab04bd404193272af0933b6", +"T2T1_it_test_msg_sd_protect.py::test_wipe": "ed83806794d15d8d8f0e12101b4898f8ebb5fa60e87e4f05c99b2f965ad615ec", +"T2T1_it_test_msg_wipedevice.py::test_autolock_not_retained": "1693ea56efe7a52e3855ebd05c4fee5573fc74be98725fbdc0b866e31b22bfcf", +"T2T1_it_test_msg_wipedevice.py::test_wipe_device": "8be4a93643d2eaab9563c45a19be637b5e81151c6abaacb75010d2d0f1ab1945", +"T2T1_it_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "ba3fd25aef6d06ab3869ace9bee5ebabf7e376d47e4ef948f135fd4dc1ac0a8a", +"T2T1_it_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "ba3fd25aef6d06ab3869ace9bee5ebabf7e376d47e4ef948f135fd4dc1ac0a8a", +"T2T1_it_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "ce7580fc85271ca9ffb6f13e2a4f38b823a3fd6f748c646d7e57d19a3afd0774", +"T2T1_it_test_passphrase_slip39_basic.py::test_2of5_passphrase": "ce7580fc85271ca9ffb6f13e2a4f38b823a3fd6f748c646d7e57d19a3afd0774", +"T2T1_it_test_passphrase_slip39_basic.py::test_3of6_passphrase": "ce7580fc85271ca9ffb6f13e2a4f38b823a3fd6f748c646d7e57d19a3afd0774", +"T2T1_it_test_pin.py::test_correct_pin": "80c354fe2164ffe1b58ee499957cfbe2b82fe44272cd15144f7bad2ab3294e6a", +"T2T1_it_test_pin.py::test_exponential_backoff_t2": "2aff6895b8ff0fb7833c3843b8839f700816930664360d642f0aa7244e25f815", +"T2T1_it_test_pin.py::test_incorrect_pin_t2": "d22d86d3f2c533c8513476962175c5470b00d4519c6284ab049a2fefabd66faf", +"T2T1_it_test_pin.py::test_no_protection": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_protection_levels.py::test_apply_settings": "0b6109ee02f4db48e25cecb6da5e2f86c1da993be836f71c096aea5266f81254", +"T2T1_it_test_protection_levels.py::test_change_pin_t2": "73e9cdad7f9c01578c105c2817126c6235418e22fc783e721b6743987394b8c4", +"T2T1_it_test_protection_levels.py::test_get_address": "5da61e180f09b0bb9fa88133539725885ff6e6bd5c33935edb596e11960596d6", +"T2T1_it_test_protection_levels.py::test_get_entropy": "016fa6412c90c300361a533734e1b323cd05ee21d0a204752cfe8d3ca5318b43", +"T2T1_it_test_protection_levels.py::test_get_public_key": "5da61e180f09b0bb9fa88133539725885ff6e6bd5c33935edb596e11960596d6", +"T2T1_it_test_protection_levels.py::test_initialize": "524507acd8eb3914a60ca20fcdfb20569e80976e4c52134ef88283acc1f6ba42", +"T2T1_it_test_protection_levels.py::test_passphrase_cached": "85915db8cc4995d48b6836dabde7642e29600c86be1996fb4736dc5580f8b7cf", +"T2T1_it_test_protection_levels.py::test_passphrase_reporting[False]": "85c9f41d392736a7c956c03399c989870aa164d1a3ab9cec8df3adcdd6ba7fa4", +"T2T1_it_test_protection_levels.py::test_passphrase_reporting[True]": "b1294bb9ceed27acfdf5a5d3a9f56a3c7ee6e9b131cbadd6de774a41c7590cc7", +"T2T1_it_test_protection_levels.py::test_ping": "7f4e46f27feb731302a0a3532d603d3a4fc23afaffe0521175e4d1ec4ce20d67", +"T2T1_it_test_protection_levels.py::test_sign_message": "23d53ef74d980fcf8036edd386a7c4b5c77061db4a6733fad02719ca324846f0", +"T2T1_it_test_protection_levels.py::test_signtx": "99dc1ec69e8ce14947232d588e796c6d39c4dcab6060670dbbc397a369b31376", +"T2T1_it_test_protection_levels.py::test_unlocked": "194f8b3584cdabccb2642d64492b395921adaa455d1b4d58abbdc6afdb9fbc2c", +"T2T1_it_test_protection_levels.py::test_verify_message_t2": "b46ae897bebe6b69c872d3faee154b480f7a1f21d2cdfc59d1c4e0e9ccd0a0c8", +"T2T1_it_test_protection_levels.py::test_wipe_device": "869e064060e5fbb6e4fa2746a45f7e07097e11521e32c9a84468be6ca35bf0f6", +"T2T1_it_test_repeated_backup.py::test_repeated_backup": "f23852ffed1cba7000f3401f2bad2085a0bc9720951fa9c5394f14bd10b58c10", +"T2T1_it_test_repeated_backup.py::test_repeated_backup_cancel": "c39b010c3408822d436cb0512f697746874c5649905de45cf4dce97dbb9b4dee", +"T2T1_it_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8c5e3cdcc5cb89f08bdeda1a5fe7cd514e54e30fe80358a0e3b4767443ba975f", +"T2T1_it_test_repeated_backup.py::test_repeated_backup_upgrade_single": "3daccb0051d30c74bb97d7eeb6c26b199366b76dad23062ae2c654690b39323e", +"T2T1_it_test_sdcard.py::test_sd_format": "185ee6a989090c5992a15f89bc91aeed001884c0b2195502b3e7c3aadd70b5b4", +"T2T1_it_test_sdcard.py::test_sd_no_format": "e3f658eaece07202ab8312d6c9ec988c45c62121c9f4140f2498a5c6d5004e2f", +"T2T1_it_test_sdcard.py::test_sd_protect_unlock": "a9db21deac564d0806781afc8a648685a309ddd1702bc272fa2b051ee970371d", +"T2T1_it_test_session.py::test_cannot_resume_ended_session": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_session.py::test_clear_session": "d171606270cdf68abd9f1e48452b34c7ab656b23f48f103b8d8a1b1fa9044685", +"T2T1_it_test_session.py::test_derive_cardano_empty_session": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_session.py::test_derive_cardano_running_session": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_session.py::test_end_session": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_session.py::test_end_session_only_current": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_session.py::test_session_recycling": "ce7580fc85271ca9ffb6f13e2a4f38b823a3fd6f748c646d7e57d19a3afd0774", +"T2T1_it_test_session_id_and_passphrase.py::test_cardano_passphrase": "ee42ad5a96398ffea86a54493d8f21c044a24e31dbe22c377deae174c3d794e2", +"T2T1_it_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "e051c5f3b29eaf35117cbe5b3b0997cfa6baf4d8ad26287f1ca361f37358588f", +"T2T1_it_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "b4e4d06144a006c66d26c25303451fc0fb3391a204d795a6620f8a86005757f2", +"T2T1_it_test_session_id_and_passphrase.py::test_multiple_passphrases": "3421de3a030055d0c60c1aef53567dc19306ccb49c3552003706104d8311a75a", +"T2T1_it_test_session_id_and_passphrase.py::test_multiple_sessions": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "8acd5edc2ccf042b4cbea7600bf8b92be1bc717b911d23fc01eb9f8446641a2d", +"T2T1_it_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "f22ba17266be982be2bca705f9c55e0f21c3187b1d98ac2c71f2b3d278a99ed2", +"T2T1_it_test_session_id_and_passphrase.py::test_passphrase_length": "4eb6c6651df4f0dbda13baa06b78a4d89a368235bb36ecf8212cc4892ffb44a2", +"T2T1_it_test_session_id_and_passphrase.py::test_passphrase_missing": "85915db8cc4995d48b6836dabde7642e29600c86be1996fb4736dc5580f8b7cf", +"T2T1_it_test_session_id_and_passphrase.py::test_passphrase_on_device": "0776180888f9b8f8fdf5330192f8970a52e094e44bbe3f3e5404b9cb352b5377", +"T2T1_it_test_session_id_and_passphrase.py::test_session_enable_passphrase": "78f165f1c0bb8749c172e134d9aaad89beee186f25de213d0dd9c6b0893c462d", +"T2T1_it_test_session_id_and_passphrase.py::test_session_with_passphrase": "e6980861cbf2f660c4e0dcd6f3128e56c2466f8d6377959a9d2b4ea7363e6bb5", +"T2T1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "9a67ea4e52dbbbcc05f90143c903a52957f43315f987d3e8beb03185115c04b3", +"T2T1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "061758f204cb983746c5745c746247085c5288fb81402d66d39575848e438ef6", +"T2T1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "cdd18acee317219d36037200b4de206a9f7305e4302a245bf9f687804aa5b9f8", +"T2T1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "5f0b80985e06bfdcfa10b72f4d00ae257f541c8f37d72a300fe6968f12e67ebb", +"T2T1_it_tezos-test_getpublickey.py::test_tezos_get_public_key": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "0afb3c591ce3dba2c69d77318844dd63be3c2cb3e588c8d478f31602f50efb18", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "92f74deb96b32f8b246467ccfce077bcd64c4953bd3679056c42ccda87a17e52", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "4497e42cef9d521c3a2c28493d2539ff4fbf3e9dad3e72e018f8c69a3bc58120", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "bb9c68ccf97239478c479724a83462c57c6e0c991443d1329824ce7fa90837fe", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "ab3a75e74c55453f3b18d6e93aeaf25aacf4baa251c74edd03a5401a4690b9ac", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "7e882efc72404579b4d5ffc3ca95e9024965535a9bd1ceb1bb515f22569d1294", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "f92d3b417f895001d2718a0ab9a17e9064a5f2aaea354879578c459a523c2fbf", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "ff2109a60c36f3041105a409bc891f02a2104e09ddca7cece5a47395ff00e716", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "7a385413a460c8c0992a4d3bd5ec9c6718d080dbd1a52604b151aeac671da19c", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "f8c17ebdc8f241e24dd535f4f5760076c00110d627ad29d7d27ad88d1dcd51a8", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "b1596df1da25def1ec01d4f5cac30426c0fb4c0ee7e109e7ab19b0f90c5a93d0", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "29694a1af85a1403d14fd5f427f01ed164671361546a879de5d8f1c0cd546e53", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "6cbb7d90b5c97e5704c1c1d1057bf4839daeb665798fadd89f482490c249ffe9", +"T2T1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "98d54e000a6baf46511334cfeb7d78de6da937de7e834ccfa198a25b8aac01ba", +"T2T1_it_webauthn-test_msg_webauthn.py::test_add_remove": "aef8a08ccbb317162c13dc4e45edc7d9f2ebb8680e2a5d45623ce7d93caf78eb", +"T2T1_it_webauthn-test_u2f_counter.py::test_u2f_counter": "63da43865b4d7095a87704ce40f0d098966390ac5f40421d110dd65247a569b9", +"T2T1_it_zcash-test_sign_tx.py::test_external_presigned": "523873240eecba128ba48dc1d1319c94932664eab7e96f542c73f33dd7595770", +"T2T1_it_zcash-test_sign_tx.py::test_one_two": "ce0d4f5fca8ad7001d57dcebd3a688888bac4219a224f3f84d1f4816244ea85a", +"T2T1_it_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c5dd1ef813d68c6a743d2732b7fdd999d874662a0bd480eb74407e934fd68131", +"T2T1_it_zcash-test_sign_tx.py::test_send_to_multisig": "95f0ab67cea3d6164c21b0e718133dde9598d063babe531c7c707bcff7547326", +"T2T1_it_zcash-test_sign_tx.py::test_spend_multisig": "faeda44120cc8d4b6a4ae19fbd31c449cf4a8cd6f7305290c249704cba925411", +"T2T1_it_zcash-test_sign_tx.py::test_spend_v4_input": "7b5bd584bcdcd9065bd27ca82e3f4ed6064acad626840e68c10f4ef24366aa12", +"T2T1_it_zcash-test_sign_tx.py::test_spend_v5_input": "26e2325787ad6ac638e7d2e2de816f83918427accd86e22aae644ef12207e41a", +"T2T1_it_zcash-test_sign_tx.py::test_unified_address": "e809b929a34ef0e115407c01eecb062529b16401eb03346ab891aa3724b9101e", +"T2T1_it_zcash-test_sign_tx.py::test_version_group_id_missing": "1f9f3b4cb98166cddd9bda7114ec5e35e896810ffe2453454447869188421eb2", +"T2T1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "84e547d978cb57771a5d0af744514350d5978615a159ab01fdd12de4840351d5", +"T2T1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "86c56dd16c41e3ebb1b1a9e7311c9c694c175b639497e902a8f786b951705ffc", +"T2T1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "548aced033d17dcc50eeeacbf85f4ca36ebc0b67bb35a7b4828e703710072703", +"T2T1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "3a8ea95b9866c2a49719e8a67ff6b655923dd9d16e07019cc0ddb996b3795a9f", +"T2T1_pt_binance-test_get_public_key.py::test_binance_get_public_key": "0b430112924cb9ec307c2cf9b5b89d588cd047913fcd11d6b94cb9609a6f3df8", +"T2T1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "f242be6a6e224d88d28f1c9221d384f0684a5119e668082f1f1f5a04d05ee01c", +"T2T1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e0e6bc3cd49db631e9f225ca6f757bead7e61ea59200cd0932950cc62afd69f2", +"T2T1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "7d1804518a10086c80be3391d10bf8e65b96d4a532fa0b3c4eee5682176be4c1", +"T2T1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "f242be6a6e224d88d28f1c9221d384f0684a5119e668082f1f1f5a04d05ee01c", +"T2T1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e0e6bc3cd49db631e9f225ca6f757bead7e61ea59200cd0932950cc62afd69f2", +"T2T1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "7d1804518a10086c80be3391d10bf8e65b96d4a532fa0b3c4eee5682176be4c1", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "0b60bf9f37b244ad37e7b007f7bb2c9b3dce1c24d81b3cd04995384b0a3c59d6", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_get_address": "f33436463747895e9f0386a49f497c6c042598b6b681b07a6394968254c4a759", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "e29dab5a7732d0d9f6a95293609fe2939a89013b55ec1c276db1215716bca4cb", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "273a82d37d653950c18642e3dffb4794f53e73a35f31ffe28160f7437b1470d7", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "d1715c3e7e383765de37da13e7446798aaa40f115fc17ec1eefd6665583ab024", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "d1715c3e7e383765de37da13e7446798aaa40f115fc17ec1eefd6665583ab024", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "85f422c6b8040fcd000e16ffe34a4e94c98408e8b4346739ff3ab8737bf8e530", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "8b40c459f284f3deee377bd4f9a35a9ee127fc2ce848432ef8bc545d975b5897", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "5988e05ebe95902c79ee723510e369a2f471b72e23ec34567326484c44d4bafa", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "e502116a6ac346cf9f2077f48a2ffa31e15f982dece8a514192c854a97899990", +"T2T1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "e502116a6ac346cf9f2077f48a2ffa31e15f982dece8a514192c854a97899990", +"T2T1_pt_bitcoin-test_bcash.py::test_attack_change_input": "158affede78bf024e189f717153e425692968e21b3a5576fcdc2d59950524516", +"T2T1_pt_bitcoin-test_bcash.py::test_send_bch_change": "158affede78bf024e189f717153e425692968e21b3a5576fcdc2d59950524516", +"T2T1_pt_bitcoin-test_bcash.py::test_send_bch_external_presigned": "814c4438fc4e4f7b48f3d77e05aa444528224fe6ec9004429fc8c05c2b6b33f9", +"T2T1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_change": "749793e688eb49283eec47670503c240b95ab3f41f385d1cbe059860edd6d695", +"T2T1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f27ced749e0550a2a48b3d7979211292a75b65a5d582fc51ed77700adfc252a6", +"T2T1_pt_bitcoin-test_bcash.py::test_send_bch_nochange": "44e42a70810dda2c10ed48b3af260e38a17ab1c2528ab6e093f71fea53e265c6", +"T2T1_pt_bitcoin-test_bcash.py::test_send_bch_oldaddr": "3e512f7beb8eb002c3b214aa463a3042c69b1a8164b4dfae4334cb427440ca8c", +"T2T1_pt_bitcoin-test_bgold.py::test_attack_change_input": "4fc895da1449eff9a6e9a1c0f864c5b607f91dfc4a6d664979c14a4f271eded5", +"T2T1_pt_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "4fc895da1449eff9a6e9a1c0f864c5b607f91dfc4a6d664979c14a4f271eded5", +"T2T1_pt_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "11245e18defe17eca598e189387fab6bae100859e41ad0b811153f44dc36522f", +"T2T1_pt_bitcoin-test_bgold.py::test_send_btg_external_presigned": "11c6fb009da6e55a1662d23b80d606b86cda84c00b93a792ede570ad2b715651", +"T2T1_pt_bitcoin-test_bgold.py::test_send_btg_multisig_change": "601a0ba997a994c8adecbf5560bd6b1bec216d5d965c82a605969bdbad831de2", +"T2T1_pt_bitcoin-test_bgold.py::test_send_mixed_inputs": "7c97f5630e319284e58e300682baf336390455836b97a21f928613816e125714", +"T2T1_pt_bitcoin-test_bgold.py::test_send_multisig_1": "2964592b42cbe4e7de9cf76f54a4839bd1c04262e7c0241e150c01f49c926d59", +"T2T1_pt_bitcoin-test_bgold.py::test_send_p2sh": "aabb2b16c868dfdc5251cb156bb6534ef97982f2c9e3ef58e408bee8a68e7859", +"T2T1_pt_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "900fee1d7fed4969e19be4d913d20f94a1bb1347b018aa05cd097eb62684432f", +"T2T1_pt_bitcoin-test_dash.py::test_send_dash": "cf5db19e30119b6690efee445ff683a35ac4e1259922ff0bb0fa9d8702b802ff", +"T2T1_pt_bitcoin-test_dash.py::test_send_dash_dip2_input": "ad180651700e889c89a8a1d22ea47e60ea5e6e7ae7dc32b5274456b51fe9d7db", +"T2T1_pt_bitcoin-test_decred.py::test_decred_multisig_change": "1a90520dbbd307b17053fb56747d7cb43ea5b09f580cc2fd64aaacdf3a7610a5", +"T2T1_pt_bitcoin-test_decred.py::test_purchase_ticket_decred": "76d03607faa1e9ae83491316af5bdaab3a2ff16eba383ae03bbd270c4408b85c", +"T2T1_pt_bitcoin-test_decred.py::test_send_decred": "c37b4e5f03514357bd8f199a813406d3f8962d56b3946d2e50254fa9eed1ced4", +"T2T1_pt_bitcoin-test_decred.py::test_send_decred_change": "02cb24de76a6bf94cb2f4f68b8dea520d1d68d2e57d7a65fafde7a9ce6b89d2c", +"T2T1_pt_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "a2ce814bbc71b700c2e6931d0f802eaddc2fa0ad1d85b152ce8a6ced3f168b3d", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "1cb71a6e914f30df8b680e439f0e7fcb15c409a38f172a815e363fa21d540a92", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "acf07333df003e087b48142b9241e75994e35c392af6a305da143e23f458e96e", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "04f7043e0f21cc7478f16f55d0a13c3df0726dc90322e4ad67f522fdeece22bb", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "3bc601f3b693a21a3a187712f6d88bc0e319e9bfda3c057c34efa2c0800c6e4b", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "3a7b5296de55d603418d55efdeb8391783d8b67f12123183b1237283fcbd8119", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "6e0949025c80e9031ca048c5e5730f0c33264d466751c665872048d060db7c68", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "e1fe72f03d9e59accccb648dc8c92dce1b5d1fe420e7fb73b4f011d58e83ad60", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "d8584776661f8302fac2b71f89c5932fbcff63bb40f81536c1d8acf8b143762b", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "75e765b5bda4e68d801ceccb1a4dc9229e77275da41e8470a14cc796ba1a6a73", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "42d6617f54e00262e85aabea6d84e3eaf3100d61ced334b2c45314b7f581496e", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "33986bbe5309bc272403de10790591b60e957baf51a349dcbc988f17873f1297", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "f758077208c59769804900262d278eabe162ebcbd2e273388ad9324b40f1311b", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "f7e9bacc04f6b236880a9c16dd19c0909aaaed703213696c6f2e6bcf02df2d45", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f5df01a279cb9a0b4fb6b883da7dc03f64d35824cbccf2eda94fbb68573d958e", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "069fbe9cff51ff7227e9f1ef967afbd7b75c23afd4bb6af22bb75122722e2b1f", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "1c94151674a16f6e9556334f531ed3b24d663e40220e78bfd01b6e40fa43cee9", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "af95f5ce924069c9d0c6ed57337373604eb9db2120baa495d97f0a4fbc821998", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "afcc05d3fa86934038378ae38a0af8805748cb5203335798e533bd53700c3c58", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "1cb71a6e914f30df8b680e439f0e7fcb15c409a38f172a815e363fa21d540a92", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "acf07333df003e087b48142b9241e75994e35c392af6a305da143e23f458e96e", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "04f7043e0f21cc7478f16f55d0a13c3df0726dc90322e4ad67f522fdeece22bb", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "3bc601f3b693a21a3a187712f6d88bc0e319e9bfda3c057c34efa2c0800c6e4b", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "3a7b5296de55d603418d55efdeb8391783d8b67f12123183b1237283fcbd8119", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "6e0949025c80e9031ca048c5e5730f0c33264d466751c665872048d060db7c68", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "e1fe72f03d9e59accccb648dc8c92dce1b5d1fe420e7fb73b4f011d58e83ad60", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "d8584776661f8302fac2b71f89c5932fbcff63bb40f81536c1d8acf8b143762b", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "75e765b5bda4e68d801ceccb1a4dc9229e77275da41e8470a14cc796ba1a6a73", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "42d6617f54e00262e85aabea6d84e3eaf3100d61ced334b2c45314b7f581496e", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "33986bbe5309bc272403de10790591b60e957baf51a349dcbc988f17873f1297", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "f758077208c59769804900262d278eabe162ebcbd2e273388ad9324b40f1311b", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "f7e9bacc04f6b236880a9c16dd19c0909aaaed703213696c6f2e6bcf02df2d45", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f5df01a279cb9a0b4fb6b883da7dc03f64d35824cbccf2eda94fbb68573d958e", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "069fbe9cff51ff7227e9f1ef967afbd7b75c23afd4bb6af22bb75122722e2b1f", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "1c94151674a16f6e9556334f531ed3b24d663e40220e78bfd01b6e40fa43cee9", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "af95f5ce924069c9d0c6ed57337373604eb9db2120baa495d97f0a4fbc821998", +"T2T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "afcc05d3fa86934038378ae38a0af8805748cb5203335798e533bd53700c3c58", +"T2T1_pt_bitcoin-test_firo.py::test_spend_lelantus": "854982478ecda188403563816148179871fdb1ec4f915833b77657a7f05a9a9f", +"T2T1_pt_bitcoin-test_fujicoin.py::test_send_p2tr": "ec9b3d0d5c2227da58e1d23d628dc86ad6cbbd5f260e8d5459130283ee1345e5", +"T2T1_pt_bitcoin-test_getaddress.py::test_address_mac": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_altcoin_address_mac": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_bch": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_bch_multisig": "8fe061476340f5deb3a2aa8efcf3f46827f8cc5115702ef0dfc99e8b923f0836", +"T2T1_pt_bitcoin-test_getaddress.py::test_btc": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_crw": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_elements": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_grs": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_invalid_path": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_ltc": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_multisig": "41eb87feec78ebd388705e9bfa0c34f060b120766c64948646229a3db1adc992", +"T2T1_pt_bitcoin-test_getaddress.py::test_multisig_missing[False]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_multisig_missing[True]": "7e9ad874fea3012278d2adb35c3684f3cf405587b556f1dadad3c8f0e010e69b", +"T2T1_pt_bitcoin-test_getaddress.py::test_public_ckd": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_tbtc": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_tgrs": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress.py::test_unknown_path": "730129a9db26240f4a3436ddce92dbb07fdf08f050fb5496598cda1f5a55c1a1", +"T2T1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit": "422b297603de038b4c2bdd5dfbb5625720aa7b6d303e203e31a11f3c8e9aad80", +"T2T1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "24360975eb5efb02bfda06fa18856a5c90f9f3ce84edc3aa2372c2a6cf79ae91", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "06246e3812fd4c8dae6b1cd0b2c5c6893a7f34032c031bc6fd39eb6146f82220", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "aeb26cafd01c80a4499e8646c33b668f8a1023d1c08531179f8dbb386e56d31f", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "013bd4a3f6c8e2c73845f9e9c6f2bdc037be2586be634dfa14b411a0500ab315", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "876e5f6a6e512399d3bcebbd34dd3d000d17ee0ac05ef2b39b925911c8ca6e89", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "3e43022169dc662dde77c60c512c150440276a085eff104e991e71a15969554f", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "0f452d4d5e7ac6dc412dc229ba33aa353313e96c48dc7ac9cb80e50d3bf5d90d", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "5df4b295e56ba996bd7050639fb81d8d79002faec9b468435c63351784739549", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "3f0e1a7f9c3c3c57184ea53edccf6eebf875668f6bf1e3d8be49c957baf4c03f", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "b8e65b88834a96d8d2f523ab946c8c0c79eb69bae5b46578b8b1c49a5eb0ac6d", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "6975f0c2ab33c70a9dc02e01ae491b45957a96947271b12b5562af328565c256", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "28dcafb879939db72412f38ac414a75c7544f9fddbebdeea4b9fc7d8f4d956cc", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "3073a59dd9ce623135df13d38b4ba5777ecd40fee7bcc86be0b2513ecb9ba38b", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "f7d0595361653d622024dc76590ae9a7476c860fa594961441e071c491459188", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "989ed34b319f6bbc5a487f66c8ef2f46b12062a7421c04e450426490e97d9ffb", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "8728dbd5bc90338c7ffe78668ecd6e85f4ba957e52d1dca9a66aee64204d35e9", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "b98284f43dd7592d5e147af9bdbb456558ad489f18e4a2e6f001e80a45ab91b7", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "ce36432ae88c25fd06661ba09b3b395d6baa7f29592813d349456e6682c35ee6", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "505c852299e4c0a378a374954247a3e32d8dc6c702f6b15c303c4eee5f9e319f", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "81135c4e0fa74de3200e5e04cad27d95f08df59168b619ecd422df33e4838abb", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_15": "d4ed50575e95839a8397685ebfa67170400d4af6df9cc118e6610bfeee84e273", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_3": "704fe7ebf75419aea8923be4aa113b8ece30a186b707105bf28e38aa8ee39691", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "2abcb24354e45b69a7c6f9165545c05fe526b7436911cd1af3e5ef16e69c0f0c", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "2abcb24354e45b69a7c6f9165545c05fe526b7436911cd1af3e5ef16e69c0f0c", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "6099f10148a4967dfd7f49d5e63350590d68090388207259b93da0e68b555255", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "a226a5862640f02f4e65ee199f0fe2a4883c613161c6487173b590827e3efe8a", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1e8558ce3b6db190b50e6657b6cbb70d4c682db15a6d1fcc961991af980e6ec4", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "aab65b0c966938a9e0b5c5bd925b7aedd63917ee69f3b87d335fdb6783eb462d", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c51dccd8d4093795267ce9cfdabde84e5a7e5a291f8c30fc8eef30eff0af51b3", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "646d327329e6cc896e64638f5c5af5580c3ebfb0ac2e50d96c2731ecc2fac2ca", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "d8966e5ddb9c3c13b02f224277960e22a48de8ebd9bbad9c1b25fb4af49dccf0", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "81f044283588a078d83bd9dfca10fd6f6be25dd8d121e504d5653c6ee58cf464", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "afa3c90d5f96d8b3035edfea83f5de1451aa6cb5e871e8652d96f42cd67f625b", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "4f6f780c8f6a2573261731ddfcb61b9b5a7f7ee149e1f72944a67d427fba4159", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "b8b7b47250f8f0fe60060594ba239164f6270be9b0cb6ea79ae511660f98c1fe", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "2da95867b1ff411f3cb588d90667bae2c6353a5068a5adfe684eb10c9a0fe256", +"T2T1_pt_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "007f58e2c824205f819d35057b33b0ccf172ca40c992a96590c7e496ccbedd15", +"T2T1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "527b96a6a80c65c4184fcda8e3f661543dea952bd55696bdeae341ff24199ae4", +"T2T1_pt_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "acf07333df003e087b48142b9241e75994e35c392af6a305da143e23f458e96e", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "e968bf083b0329d835ae0dbc795c9c347f5d6adb1824f75b6f39f71f1ecf4466", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "0d6741a0319b9f3915517265e49e05dbe69b721342cabb916f8a64211b64eb4b", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "f8e41147e08213eb2586483b8e5619649e74d5772e7835e76f05add9954b459e", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "14c1e3db58806095a4e61820b196a2160facf34c6ec0fd077c2d251ebdfc7050", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "9a281db217a5f4d7d355c412f8f36ce78fc6de9d844444a0d6fe9e006e211919", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "fed27ca944e13a19e906611f31a95a63baf0babec06af79d0106bf15d1602f60", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ba33dc49750c2be3a38c6bebcb35e8bbd105a6940f527021b078e6306b98cd82", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "1469ec7c0675f444ce9db4682fae65e4197c33aecef4fed6dae94b6ba6f9e8dd", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "33986bbe5309bc272403de10790591b60e957baf51a349dcbc988f17873f1297", +"T2T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "f1579ee26871e39bb9d2bd9a95c6707ce5047830f21c332ddbf3ceb40cce352f", +"T2T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey.py::test_slip25_path": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_grs.py::test_legacy": "68cab3e9b738cd671cfe257c48a57fbb670791d437476fb776d0aa2bdb4dfdc6", +"T2T1_pt_bitcoin-test_grs.py::test_legacy_change": "e52fa0860cca0952fee3a3428701bb5e7ee6c221db8bd1f57c904c0f949755f6", +"T2T1_pt_bitcoin-test_grs.py::test_send_p2tr": "09fd05d424ec794586ae1cb89a5273b0ebc0c38145d11f3a8fd1fdf94079206d", +"T2T1_pt_bitcoin-test_grs.py::test_send_segwit_native": "761571e08aed0f323a15791484d06bde9d1cb82767cedfe94946fb70a8cd00ef", +"T2T1_pt_bitcoin-test_grs.py::test_send_segwit_native_change": "14660b1bd48462d85187219dc0423b5080c27445794a6546ddb6f18641caf1da", +"T2T1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh": "7601d0f3be607351f949396803bea1900d2caa44508931dc6fb66df8e53bc936", +"T2T1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "630e7ae9142e748c142bdee14e6da366c9b46969d3a1e22f15fa1596d680eef6", +"T2T1_pt_bitcoin-test_komodo.py::test_one_one_fee_sapling": "feaaa71c70da4a1e99c3a711ff7a44b40e237519e80b16128cc91916238f5de3", +"T2T1_pt_bitcoin-test_komodo.py::test_one_one_rewards_claim": "3f0b6784c012aff753c12cf638a8673cc27af06d90c6717e653e31e42074938c", +"T2T1_pt_bitcoin-test_multisig.py::test_15_of_15": "579e7cc869db7d368e3975fe00713eeba28ec720a3e562fa7ba85d68142e193e", +"T2T1_pt_bitcoin-test_multisig.py::test_2_of_3[False]": "4a4459ad40133a675e0ce841ed859a24a8c104ffba5d7f0fd2cfdb8bfa467d02", +"T2T1_pt_bitcoin-test_multisig.py::test_2_of_3[True]": "b7f16f8b41f5e26ef6ea6bd5ff5a1f1a9898d9c3ba75aa5afa2c4d376cc9b8d7", +"T2T1_pt_bitcoin-test_multisig.py::test_attack_change_input": "7ed4714df9bfc12f6d27ece701828316d0836b1a0a55efc7584238a15fedd2a2", +"T2T1_pt_bitcoin-test_multisig.py::test_missing_pubkey": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_multisig_change.py::test_external_external": "70e70c35be18ab3d550d5c9c4273c9caad57b6a1299442232b476e69194656a3", +"T2T1_pt_bitcoin-test_multisig_change.py::test_external_internal": "9de2120badae7e794404e513d16643aa312371ce019897deb15c8b66720d804f", +"T2T1_pt_bitcoin-test_multisig_change.py::test_internal_external": "76fd507090e925b359f1e68bcb2520058b7ca3c3eba7f06ef525d50add50aaa2", +"T2T1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "cfbe1b571a01c72b087322e2787bc2a4c1134d9ee955b762954db8b30864d56b", +"T2T1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "740db2983fdea3e4ed8d8f9e359c0d81b94598fbcf7d2a2c90465301ca0431e6", +"T2T1_pt_bitcoin-test_multisig_change.py::test_multisig_external_external": "e9e005e8f458885355a7f8df2a4a8b4bb675c1e230665cf4343212dedc6692f5", +"T2T1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "20b9a0767e681482aa31d509250b97b29720cd683daeffa011aaf176ac58b143", +"T2T1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "de0c4053792e8099d6b6026175a5c35edb3ff84a5217ca7ff73f3d9060b13983", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "d22fa2a646d73f7d12e4a435dc9d271a72bb0f74841e85c8480f69096f103a9e", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "3bc519e1f373542ab89c7809b8282f9300b0c945f8b63ebf90c86aa61a079423", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "48f4104ebfded2413659a27dc5d2fb26787e0f3f8c35c3cc3a3c7756db949011", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "747605a327e039db2b7c798c0be56ac3bcfd88198e053f2bd98a76fa0998aafc", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "03e9d482a1561d702edc99bbadb599c78d9151f6f25eab0467fabccd8e7f80a7", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "d9a1fe3006a49ec90221206069c94839e6eb9f1c2b3bbffc620c87613a5a95cc", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "630c397ae997529bff05113474958eb8f918aac3a4e50ad1f6b6905287c44c2f", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "9cbbf62bafbfd0c806688901e02933e133b6bf6445fe876a84d44a56a3877a6e", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "b7bbd92842eab1856b9454b4f4a4cded5107ed7c165694f8cc53a5902c0f4f62", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "2418701c9c91349d60cf5f1139b8cc365b43c1b7128cfe6993d67636521b5a6a", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "1bd744dfbf5e92c0fe2a031430b14808e5f35cf840f84d74d0ab90557e7660c9", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "5ca0ad41cf310b52efcad7159b2dfc2f6ce097822b592b91e91acefe7bff2d62", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "4f0baa812521398d749af832b305a014ea7422ea5583fbe8a2bc3ffb34b0cf25", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "870b857080bbf2cb5ee3932085743811a1580b16c71eec6da906a1afa1c8608c", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "1b377b441d788bfd51f6b73d69cd73387c2eae19270764cbf619e516f014f740", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "9651de6e30feeb15658471f5dbf2ff6936bd5b6baaeee9ab278c3fbdd0a8dc3a", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "a9dd294f7ab138ecf932b6703697fb9e640537821be14384cabaab0b199725de", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "cc45bf7d0182c4843a481eb294c3fd3814158540c0cccd68dfdcad32234a5408", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "2625fe6b5ef5d611efca5eb486fe9ea87cb66606bd89e14cfbaa7baa724741da", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "c81be32de300d8e002e5c0030b48c9e51107d146744c6cdce2d395bb6132cd17", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "49225135e6f6a07cb09462c7be8432f21e93294c6aa2573bf920acf5c4eae389", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "c97d3b351a116a313db4c4887a814c38bcf68b0fb7f4b6e7a68a5d20e6396d5b", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "c37668ed14b2615201b309d89a2d210ab1103185ce77d24d1338140fcf147f2c", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "536e4c1ce09139c89755107ae925ba9ac0da2848298ba7f8e77343b54fd2d7b0", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "dbfc1e599625a4a87b89ed65c212be3127f9749d1aca32ae0bec031757a2b521", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "5817893b5b77039299b0250d433ee5df615f9bc257b856e0fad58ee2ebd81dfc", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "5e2c032c68ba88b47e40bc702ad8efed3b688361356171b6e8762a0a70b3b44f", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "5c859c98e4771459f9d789e0ea0fc003b2b076ec0e20fb8166e1536e00b9527e", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "b083b2b6f3ba9669aa3ce2dd9ef277b2e1344da691997983363df0fae2fc1d32", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "d69acc896ea3eaa332be2eaffca9109833583aabb110b154b025d3167af4b087", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "a7b21ab3da030d7c5281bcbed020badde04fc738f67e496437392d08d78470ea", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "265d78a15d3b4d9d3e43f2795915607b48ea2f31309d9bd2891e9af2cc8d6d08", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d69acc896ea3eaa332be2eaffca9109833583aabb110b154b025d3167af4b087", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d69acc896ea3eaa332be2eaffca9109833583aabb110b154b025d3167af4b087", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "d69acc896ea3eaa332be2eaffca9109833583aabb110b154b025d3167af4b087", +"T2T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "8a3b389abf6d885d7a354bd042a0c55ce17b144d7b3744074d9784f254e8607b", +"T2T1_pt_bitcoin-test_op_return.py::test_nonzero_opreturn": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_op_return.py::test_opreturn": "cc3f7c9bccdd7a8b17cca80ff5bb02345a5e4b14c7cd4737405f9bce56eb41ea", +"T2T1_pt_bitcoin-test_op_return.py::test_opreturn_address": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_peercoin.py::test_timestamp_included": "280927c918d9391c839bc0abb082ccd65908590846371d105542cf5c6988b9f8", +"T2T1_pt_bitcoin-test_peercoin.py::test_timestamp_missing": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "1cc0be99868229d3b70b4e0531c928963769efd3438142bfb0b62a209f26ec90", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "ee123b7ac68de728d462272cbddfbce206a51ead1c97ecdc10f44e6f5ba1df40", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "ee123b7ac68de728d462272cbddfbce206a51ead1c97ecdc10f44e6f5ba1df40", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[bcash]": "ccf32c73e659e0f626c1c8165692d4dbeb1bb5faca6d3ec6a350571ec90ff778", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "6c3be97868e8b0d58eb5e425704428967cb2e094522139b29ff2c99f3479ac3e", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[decred]": "a5188094e4438581050f41aeb2abfa305f9dea13897c37f59a975f582a13ad08", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "0745ee64f5de9478456f521c1d3d01cccdf2f3639acd089b9bd6910f7fe6f888", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "68fd0edd9313972c8ad24afb8fd396821585f49028eb4cbc94894a832521435d", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "b4c47e4260a28aca95b7aba820026e2e885da802ac0069824e3b77db6f867af9", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "a93afa53d73564b37444f3bd5b6c4ca170dfbd4bfa009f346b7f906fe3045ade", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "2578646e7408e1983b6a77013274e7e2e7ef9a85f4b54f731a6b52dfbbb0fec1", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "2578646e7408e1983b6a77013274e7e2e7ef9a85f4b54f731a6b52dfbbb0fec1", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "e40383186ad9eb344b9eb62b8fc1de0278326288136be89229267db0b5321f40", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "72d05f59a24e3a439939e34e350245c644d4b05e0679ae9aabb7695076ccb560", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "d0c62a4652604a578baf60646b6c3f0d89aaf7b06664a9f2ea499aae4093537a", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "d0c62a4652604a578baf60646b6c3f0d89aaf7b06664a9f2ea499aae4093537a", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "4a188723774ed721ef17cf3ea7b6041f6d608ab6cd44b5f1a7aaca99c942e31f", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "aeb16eae51735a4a7f598be7e97e091d5166dd3403182957ba4e379f047056fb", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "1e84f4902b333cf6d4ae65c3d9680e69c9a3df66f5ed72f65fab885fd8bc7e90", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "1e84f4902b333cf6d4ae65c3d9680e69c9a3df66f5ed72f65fab885fd8bc7e90", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "72b18fc4a84bbd74baf3a5b1f281734d01de6e6a867a931fd264d88ba5160ee3", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "df3a1bb2876de4a33bdc6ce9a8e3b63aec9e5447cacd3ac40ef7342e6a4be096", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "0fab9f1bca955d16a3012d2c00c265ba2e2828d0e65d8bf13a15bac98c5cc110", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "0fab9f1bca955d16a3012d2c00c265ba2e2828d0e65d8bf13a15bac98c5cc110", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "46d2539b3859de8c0593336e9b2b9c6c6526359e689190589a82cef249d74c2d", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "cfec00959f0644c3e6b64234f9179976df91072451e3e56191d30c6926823b1c", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "14db84b5cc3b521288e58800a5bd41431d63813a929adab918a8d709872da481", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "f4a9c42bb9c9f9478819a2e5a46f268c4dbbee572d7c703f3051dc8aacdc6518", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "51bc57ee87855efacd7d770ac2ee5d266a767832704946f8970687fe5e442b90", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "292a6a232df213c21da560612d12ba461001644da448943c4ededf78ffb8a9d4", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "43233f2e54971e2081719f1547d9c04c9534cb9aac16c0fdc6a516425646e574", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "1af9e16e43cf0eaf4c5317737232b7e596d8e6d724dd51daf13d51e435609c68", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "1af9e16e43cf0eaf4c5317737232b7e596d8e6d724dd51daf13d51e435609c68", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "8e3d1365f80bb70a0be1b1c4b59e36fb7d883ba6145efecfaf1c62cfbbe2e39d", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "e0ba1754ef0b1fad8ee705d7ecdfed2a37a48df31e5b4e0a2889a93c1af744d6", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "c6efe7e0faf9937dd663243d55a81a4f09aed9d322c3cb8d543847f01cd204cc", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "c6efe7e0faf9937dd663243d55a81a4f09aed9d322c3cb8d543847f01cd204cc", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "88cde9d7bcd001dd33b2d358080e1029ea7bd57c970c8229b8b9235d757352ed", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "722878fea8e43ee1c76800262e050f98de5fa7a644b4faf7aea785f724622e95", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "5cd625133e90f083ebc229ebefd2061b796773806aad6d487c1a5f31073076ad", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "5cd625133e90f083ebc229ebefd2061b796773806aad6d487c1a5f31073076ad", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "a8ee245cb607421120268f4d91ecdba9d46aaeb1058e5430ba7b6ea82edc1883", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "b58fb7678f5cf57743c16e73d78a57537d0adc52b3741f314b57d8cf836f84b4", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "9721ee555db5ae3692023bc19ca2666ce04d2f8605a37897dbb9fd0b5f4dd1d9", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "1036e613cf1d5be3401ea95d5c0704f5b102f27bd170ac64668e8b4265f2166f", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "953160f203b683f882d523a3a520913d9a7bdba8dbef079771fcd15878cb8b3b", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "d5794bd5cbf6c6939a47dc639e6d6f9da94ba79d3cdf0e8b201bbde84aae882c", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "cf1c8831a2ae6e69e4fb971f6add9133c6e1f3e95347353d21c8aa6a11f22b24", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "1d456d2ccb1bb60d7e810a1addb0b817d494b7c94ccac02380e2cd28dfeed6e4", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "a4663b76d8f34a2cc4ec15ae06722c5b0f7bd19b6af4c144ec01c87117db2d34", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "9de3a180a97cbc96515d9a3ebff15858a29c767761521135f894ca65cbff307d", +"T2T1_pt_bitcoin-test_signmessage.py::test_signmessage_path_warning": "fa2047cae12be31f7e0b0a598252a4d43c5bab659fc3738f049920ba0f45137f", +"T2T1_pt_bitcoin-test_signtx.py::test_attack_change_input_address": "638c8791ea81382759f82888d7cd8a77301a03b396e3c28dd966311f38a100b1", +"T2T1_pt_bitcoin-test_signtx.py::test_attack_change_outputs": "bd6b4999cc4b1df27aae80e8a3f97af2b035e6a7614dbbb945776816521adacc", +"T2T1_pt_bitcoin-test_signtx.py::test_attack_modify_change_address": "918667ac88e14b5eed54e3e9bdfb2af0517e4c20a01f61dac6a784ff6197fd51", +"T2T1_pt_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "918667ac88e14b5eed54e3e9bdfb2af0517e4c20a01f61dac6a784ff6197fd51", +"T2T1_pt_bitcoin-test_signtx.py::test_fee_high_hardfail": "d1da9da4ce6cb6117395fb18731c0966905f39cc14b27d81feb4d6a36a7ba639", +"T2T1_pt_bitcoin-test_signtx.py::test_fee_high_warning": "84c2824213d6f8e1c2625d253a934084867d594ebb98c554eb7f2d215b785776", +"T2T1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx.py::test_information": "4cb89451807d39566e4f8fdffc67ae4b04ad28477c4d17350e297db1343649d9", +"T2T1_pt_bitcoin-test_signtx.py::test_information_cancel": "805bce3e091da07daee78d15171e8204df9d5fcacca8d8bfa953b05780e29be7", +"T2T1_pt_bitcoin-test_signtx.py::test_information_mixed": "56f3deaa3ab3d73ce4ea554cffa1cdb58c2516489aa114889f3f49d201463bdd", +"T2T1_pt_bitcoin-test_signtx.py::test_information_replacement": "01686338a3e79b8e8bc762ef108b5428037406c36703d99779caca1c3361959c", +"T2T1_pt_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "5aae437f264803a0e0c5680fc22b8f6a14d2e8c3d4897179a660d92fa6efbaa0", +"T2T1_pt_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "bccaaf06d48344629113374492ef363f73398f763ae5f73e6285221138840a3d", +"T2T1_pt_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "239ac8448f56d9eaf447b67432a448b657219072d77b9a03d8e294ef2073c3ce", +"T2T1_pt_bitcoin-test_signtx.py::test_lock_time_blockheight": "bccaaf06d48344629113374492ef363f73398f763ae5f73e6285221138840a3d", +"T2T1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "239ac8448f56d9eaf447b67432a448b657219072d77b9a03d8e294ef2073c3ce", +"T2T1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "0b5bf18eff91b18467d024a9cd0f857a84ec3f650043a3defbb951491e87597c", +"T2T1_pt_bitcoin-test_signtx.py::test_lots_of_change": "30fdbe71fa95d805c2880b9022eccd8313b2ec8174ff23a52ff66a459af4bc96", +"T2T1_pt_bitcoin-test_signtx.py::test_lots_of_inputs": "5d5b8734e16ffd76d74749362c86b15461ed6c2dfbce7ed20f9bccec008e8509", +"T2T1_pt_bitcoin-test_signtx.py::test_lots_of_outputs": "572b5f5c587d1c4e935fc8228c8d5235b1473c077d5ee87e22132596eadf7dc2", +"T2T1_pt_bitcoin-test_signtx.py::test_not_enough_funds": "3e81d58adfc2d7e4a1296cb783971e72e0bcc69f66d0adf79aa0f460d815d3ab", +"T2T1_pt_bitcoin-test_signtx.py::test_not_enough_vouts": "dd8f96955d716e2731a274f2a9d0df7b686d59a1816df991ba50bd5169128267", +"T2T1_pt_bitcoin-test_signtx.py::test_one_one_fee": "13e6b46197e64d9b2be7eb199c6a812864e3f86492ffe20b6185c21f95d576c3", +"T2T1_pt_bitcoin-test_signtx.py::test_one_three_fee[False]": "0c947eff62836c9288e080cf0794530214de4f11e891534cee2619a5474b47e7", +"T2T1_pt_bitcoin-test_signtx.py::test_one_three_fee[True]": "558556805f278350b270adc3471abad498c0d2de9cfd30210f1a52ed29556fde", +"T2T1_pt_bitcoin-test_signtx.py::test_one_two_fee": "ebb5e7fd00c85e30374fc8d82e87d13a17a0b41e673409c856716e38eabd4e45", +"T2T1_pt_bitcoin-test_signtx.py::test_p2sh": "417849ed0f292793ad61aa70c8bc6682b0451e40e045725f90bba201ce0c3cd7", +"T2T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "ae72940fceb9a49381f2d83ea7ffe05918887d260f52fc2e35047e246873547d", +"T2T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "ae72940fceb9a49381f2d83ea7ffe05918887d260f52fc2e35047e246873547d", +"T2T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "ae72940fceb9a49381f2d83ea7ffe05918887d260f52fc2e35047e246873547d", +"T2T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "ae72940fceb9a49381f2d83ea7ffe05918887d260f52fc2e35047e246873547d", +"T2T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "ae72940fceb9a49381f2d83ea7ffe05918887d260f52fc2e35047e246873547d", +"T2T1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_signtx.py::test_spend_coinbase": "f2532a69f865e8bcbf8864515a5a4d43736f078181b2183cf418d8d1e5360f8a", +"T2T1_pt_bitcoin-test_signtx.py::test_testnet_big_amount": "08833f4bfbd19fc86889f5bce0c0d1a7232547a7aad67fe4e0249ea3f5a301a6", +"T2T1_pt_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "177e21ca84110ffeef927d0003666d21fadacffa208f9541695434ac1c6e6424", +"T2T1_pt_bitcoin-test_signtx.py::test_testnet_one_two_fee": "918667ac88e14b5eed54e3e9bdfb2af0517e4c20a01f61dac6a784ff6197fd51", +"T2T1_pt_bitcoin-test_signtx.py::test_two_changes": "7ad3f608c1267a9a277ededd4a257c8c401213ce8329e800f5e1cfae7bce1021", +"T2T1_pt_bitcoin-test_signtx.py::test_two_two": "8c593aad6dcd7bbeceb622c41ef1e0c12da347be27aea9fdc7f9b2133c3b7764", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "13e6b46197e64d9b2be7eb199c6a812864e3f86492ffe20b6185c21f95d576c3", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "ee09ed7c48ae75b06a8273929e3d8eb8ad42254af416f303fb3752f0023c13bf", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "7d0f84f2d2c69d7ea12667c17cdf866104356104362a9b041e807cdca361e48a", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "edff928ec3b1b8aed10841663e0302e688855e859484a95910138ccce0b46e9e", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "13e6b46197e64d9b2be7eb199c6a812864e3f86492ffe20b6185c21f95d576c3", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b03b8d4dbd1996fd1f31421d46ecc914c33486717082911d073eb79e70535d98", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "2ac55c624104420674d869711d13ee7a615763add22d8501be0a3e5ccdd8edb2", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "b14135477a0529aa80b2ad44cf62b9daabd5b2a03ba72d65c2132cc5f40921c1", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "5ae89dbda89530d15b560eec85d15fbb256b2bd44396f38ccf10fc8c69a1b8ef", +"T2T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b03b8d4dbd1996fd1f31421d46ecc914c33486717082911d073eb79e70535d98", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2dcbbda06c43c1c325c0914e031f2c1b58f295c49b704cf0ddc816a5054b003a", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "08cb075df5f3eb82277b8760f9b6eaf36a831fc6a7cd1c0bfec497fbe51f0035", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "735bf1e31232410ac9415c57bea82562c512388fbab0984df733872a70218d9a", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "4f12b3584be2589ce04ef55c84da4720749bf7226edf22f194c78f60b82c5aa7", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "1644a538ce0dfe2b77cc2e301321156631a8d5f5404584bc492dccf39864c1b3", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "bfdd7a1916963d46839b2ced9db23dd0eead766427bb036a652f85a795583f28", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f8b3609949030efd40a83bd354db4ac1e908e537487506c63554d6a3338c1cf2", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "15d03ec2a594cd534de258f6288a41ec8192676ce34e5491e718163b97c9e67c", +"T2T1_pt_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "985b52d2eef110a3e29e7a1b547d967f33ffdcc9a02c2020a99a0e9190697d14", +"T2T1_pt_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "eeb0a872bedb54d78ab3fcc636e2bcc6d624bb0845a604bdfbbe68c83c1a914c", +"T2T1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "c55af58604f97ac277111bef44fa4cc13f6274cff3f7235dbcbd795acf6d5310", +"T2T1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "f6352f3357e6b19a17156aeab9d0d981214135204220485bd4e8f25f888e246a", +"T2T1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "84e1e6f97a2921883ba2fcc6a9a4a94d88837d939c788d3886f88f97018bb816", +"T2T1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "a593c75e6564ef731168710bed35c156eb2daa8123f6af8f15602d5b9583bde2", +"T2T1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "84e1e6f97a2921883ba2fcc6a9a4a94d88837d939c788d3886f88f97018bb816", +"T2T1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "a593c75e6564ef731168710bed35c156eb2daa8123f6af8f15602d5b9583bde2", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ab50c06147baa7189dbebacf4431c73b9ee98592bcd7d375d8fd7997123c7d30", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "c1654d1e065f746afd7899585ef996c4ca4e42ea3151cb3f06b20c36ccf68317", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "c483d58616770bef7ee623ad355669af3605c2bd665af59119929b28a0974398", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "2eeff7c53ae4bdc2c9d2251011c2b31e265f7b70f0c3237735f4dcc6ca9f7c3c", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "a726129945d2cef4738389633c99b5a94bafcbb18ac9a3b6d4cbfd8b985318bf", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "1b92ac9c5b73a7b1be4efd6162f7a6ec054c80c40e563223c97c33aba612d3c4", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "aae556c3a738cd2ac08ebfccdabe1e57f859085200143a4da35da78efda52644", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "ad2d75ca1ba771f0cc7e4211b0f5faca14d35619b6e0f99f135df8e22d2256a8", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "cfac060a163504ff07129c141e8335c4f37788198cc6f71531166e5c376d32a8", +"T2T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request_details": "191d09497db2dd9633a73a81453836fca4cc82942002cb1e38bd1451ebbe1c85", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "6911ce08c913d336a293f85260948000de62181aea68f0c34e42f65a3cb577e8", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "6911ce08c913d336a293f85260948000de62181aea68f0c34e42f65a3cb577e8", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "6911ce08c913d336a293f85260948000de62181aea68f0c34e42f65a3cb577e8", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "6911ce08c913d336a293f85260948000de62181aea68f0c34e42f65a3cb577e8", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "594ac7fc09c88204002250805fd26f954352919184e19ea5438aeccb0b8c7d46", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "594ac7fc09c88204002250805fd26f954352919184e19ea5438aeccb0b8c7d46", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "594ac7fc09c88204002250805fd26f954352919184e19ea5438aeccb0b8c7d46", +"T2T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "594ac7fc09c88204002250805fd26f954352919184e19ea5438aeccb0b8c7d46", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "7a351a26e6c59cb9cf1534e652f3f38cf54aaf33916442107a2a3bd3581adde2", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "a156381ffef476a1187992a01777d9730959cc23b6c42ba4195f2ad3fdb1e0bc", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "fc50fcd9ba4aa25514b9a84834f9f8929ac59bf5801580b77cb03a3e80b50ec7", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "fc50fcd9ba4aa25514b9a84834f9f8929ac59bf5801580b77cb03a3e80b50ec7", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "54980f25d5092276e639f3483fe84fc87909f6f7f3d3ce26a88885772f91d162", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "854388f5192a497834495b608cd7c81c0502f59fae09993aeed029c26826207a", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "aeb47c6cd5d1a200332e70bbb6dfc0ffac88da6784e4e861961408e9dfddbfba", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "54980f25d5092276e639f3483fe84fc87909f6f7f3d3ce26a88885772f91d162", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "a8c214d5666f3714aa2fe80a01cbb422be231069267ff76fe342c9831dadceb7", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "9b80cd7e842f46d4bbf2b0b70fdfc0efcbd140ecdf3226c26bfded797fbf30ed", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "9b80cd7e842f46d4bbf2b0b70fdfc0efcbd140ecdf3226c26bfded797fbf30ed", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "9b80cd7e842f46d4bbf2b0b70fdfc0efcbd140ecdf3226c26bfded797fbf30ed", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "18d871f8dc2e740bf3223f494c75013b186b4e8214fa58cda49420e558d9f0f5", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "9b80cd7e842f46d4bbf2b0b70fdfc0efcbd140ecdf3226c26bfded797fbf30ed", +"T2T1_pt_bitcoin-test_signtx_replacement.py::test_tx_meld": "e8d1cd641d32b82aa5865993949dc46b24ec3e79bca58f4fc91e50f3711c97fc", +"T2T1_pt_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "55eb72b89b08d221de6459414bcc59d51fb1d9a6de9f838f8a134e2086066b2e", +"T2T1_pt_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "dcde45ff3b28755bb36861439059fbae6628d8c64dc8e04bb5ee23094400abf0", +"T2T1_pt_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "d6d157f6a3bdc53955dd59b468e6f0514f79b31f4bc185db28db994b6f2d68ee", +"T2T1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ac629e2f25479b1f8e460d719210b0da5b8f5694eb2fb5c1818c81b7bb287e5b", +"T2T1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "fa977b4c06b4233414432c94995d8163e1c976928162c62cfac4dedb0d060eae", +"T2T1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "785d7e5c506807b5707a4038e452156a3fe16c19085d4701d93e0a1b09e79f21", +"T2T1_pt_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "c9cf7a73029c5ff0bbe7cf679cf1d88d7e5b31caa45b9bb366c28a80de174afb", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "854a76f9df6ee91bf04f1dee5ac8dc66878daa205a11a0f245787bc942610a6e", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_both": "76066851f2fb4a2992e02cb2a3230dc020c96abedc529c2575b568bf3935bcee", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "359296fdeddd98d1dc718ede914ddd65043dcd0413f7bf76a8bb0b3c5780e676", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "d229c47ed156db65b9867a109ca62a94a045c587de75c58bbc03a29991b4e1a7", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "5d36f05c699d5ee355c376a06c0223cba1ccf3568ea4e6b3a019927b486d08bd", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "d4e660643d775c62e4afd239e8bb808f4dcda88ec14a0f2799df803d568d9520", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native": "b03b8d4dbd1996fd1f31421d46ecc914c33486717082911d073eb79e70535d98", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "40d50518fa82e577fdd6dc68ec1632f0e26926da928aaa7242eb076d5e066673", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5ce33121707ea85bb994df5c420d30a7879edf462d017a5815aeabb9b50e930b", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "963109618c8086205919be4b0adde4321fd0becf5421356ae917f3a3b8cc9da5", +"T2T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "45600ca92dd4cf0ad59974c75b1417c9697cd6f91a29b8dbb83a72c9237f535c", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_attack_script_type": "5a27be9ab31629bfb375a8117ca8cf73cb060c4c40ab87df92b94545f68b3a2b", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_send_mixed": "261daf41e4aad56c1c3c125b32057c02c9d367b3973743542494489157f5c46e", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "36d2de2f52060b877b62ec66fbdf1e639e8606aa6ebd95b5e8549bd138dac083", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "f5eb316a5d16962523ee2fcddcc52fddeffd7a42b3c7ef23c6ebce0fa1e71fd8", +"T2T1_pt_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "572d793668219784db5da4613e3702b5ad82398eb7a96202a37feda17a06e56a", +"T2T1_pt_bitcoin-test_verifymessage.py::test_message_grs": "0d1fa1362e3ced7f921e1911ef221a79d5d0d694fb9ccf30c8021474aa3df10a", +"T2T1_pt_bitcoin-test_verifymessage.py::test_message_long": "6d4b7fbefeff23a804773cdef478851d6b17cbb912dfd2b59bf68267337e8ef3", +"T2T1_pt_bitcoin-test_verifymessage.py::test_message_testnet": "d7ae556e7666ef6fece80ada0649a3692a0f5472721382514050e5ac1372385e", +"T2T1_pt_bitcoin-test_verifymessage.py::test_message_verify": "2986cc9e61791c2b986cfa1f05b4b77eef90234890ec15a303a766c76661328a", +"T2T1_pt_bitcoin-test_verifymessage.py::test_message_verify_bcash": "10a01cb2918f572ad2d27bf6217b4bc6cf10f3eee2b81ad0ce06662525eef9dd", +"T2T1_pt_bitcoin-test_verifymessage.py::test_verify_bitcoind": "12f10ddc9bca3df6d44a3a0894a1727e60cd704439cf4b22564ce04f7c759645", +"T2T1_pt_bitcoin-test_verifymessage.py::test_verify_utf": "08b2f729ec6460f9bea1567e7d07a4ae71fdc6d44f54a6b680c8daafc546b185", +"T2T1_pt_bitcoin-test_verifymessage_segwit.py::test_message_long": "540ccb6529d12a43e4b7fb13e02c4fdb40af0c0a41e9ba8991bceae9184eed13", +"T2T1_pt_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "e7b5474151f6c3057622269780a2dc9bce7f28d982c51dfd9f4e6433bd33ba83", +"T2T1_pt_bitcoin-test_verifymessage_segwit.py::test_message_verify": "e8cb9a6ce07520e275670b4da66aafbf0d2b21ab690c6a4597c4faaa7589b29c", +"T2T1_pt_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "aa4127fa8907450e1c650e204c6f785cfe9d2fa269c3723b278679b72839f4be", +"T2T1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "a9bd43370f308649f31fa77de893118acbb87a92316e70633fda7dffba4b5029", +"T2T1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "24f0669dd46a80dd23bc0d283e64d7d7e70ace5109cc5ae7dad78010014e8bdc", +"T2T1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "36b02541bb41809f63e4685123e6778733e0a0ef40f6a6507e70c7551bf80df4", +"T2T1_pt_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "774638d3a86df06bfbfe46498ed00506708979cfd8526039cc9ffb14a3458272", +"T2T1_pt_bitcoin-test_zcash.py::test_external_presigned": "67dbad43bf4f831d60b3480dbe73dad0aaf89b8def6366c3fd862b0244fbd7c7", +"T2T1_pt_bitcoin-test_zcash.py::test_one_one_fee_sapling": "56f0b523bbfe2fd2826a9a366c4941563b03c426d5e44805003c6a0c47f6c924", +"T2T1_pt_bitcoin-test_zcash.py::test_spend_old_versions": "1954142251c7a91afb409896b835fca0de9ab11082ce3456df8c00816433199a", +"T2T1_pt_bitcoin-test_zcash.py::test_v3_not_supported": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_bitcoin-test_zcash.py::test_version_group_id_missing": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "392073a806e4637c907b7150325eae0ebbd8aca84edbdb782e1992a69cf5b278", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "62649e911101ebd6034566e4a927e1c0a4c7881afdd34e525aaca3e4840d6d47", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "1d3db659a05a476a3362bf5288e38abb4a12c03e962bb8b7abe1dff6aef67d5a", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "11fa776f755ac3dd8691ab8cd010cbfa65dc3d747ebb9f6ad6923b3654ec0f33", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "5afaf2012b59b9e56a0e8db7dd3140593a04f31baab9acd3ffb37f8b2cbdc49f", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "54983d00736a0cd4ca2901aad35e4a3df943197ba9c2640f9ddc61ec4e1e21ee", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "308cbbeb6ab27f4112ce8024119212f3830b8cedb37cebfdddb8e411eeb7def9", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "b7ca4d87ec0b44e4d71c46aca4af3d8c61be1b53518e9bb431390294474362f2", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "7895fc1ec65e4a7584840949c214c9dcacbf5af58dc653635969c7e12194f74d", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "9557fd8fe047735760133b592f7dd4b52881e7be80f19b859b655b7be97929a8", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "38f36a2ac185b120bc5017b7eab0213c13e3bf35c3facc5737bb85444b8bf829", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "659ec210deb7cac628bb52fbc0f926b5a2c393b6114da07f2df93345ae72ed36", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "bc22b65fc907d0309d9f01299be14ad70654258f024f22c10ce5ff1cc046f594", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "6ae8fa47acbf347ac983dc7c0a840d4a9218bb975ae33d0bebac3879f6233bb6", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "1cd5011d7b393c66a01a20fb1d7ceece661bf472f81a65399eb7aadc78f39eeb", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "9160595427c62554a6810dd9b093a016b7bd85ac8c84f0f790e092763665b4b5", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "fd77af2460bd9e68eb3b940de5b9c6180b101c1924ae3cb08fe2cdbd660c7e8f", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "8783c239aaf4b6b494c0becf259098a1861bdb21c45c36b8d403c7dc1ed08a46", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "44ae8ca5eab8cb895eafb083d0e43a94f092376eeef467f97527f1829a314693", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "b7cde091b8d62e67b2aaaaa7c627007aeddf51b7cc9629a1693dda50abcc0c71", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "e40c4d8fb9b32f434fc5fa98d887e0ce9df8ecfc76240e5686d47bd2d57945cf", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "5797f29bc60b12aada0f9e058e2e98db5a88aeac602f367bde9dbb964eb06ae4", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "b059cd30eccc714291bd020f077519f3bc7300c1e3362651005bca125117b210", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "76b746ae81efdceb482ac21ddb0e55f752599c203470f8e577138ee6a2cf8f98", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "fa17f4411e8966869d6ce91b3f682566330b1a93901f8b590e34cd8b8dd9b4b7", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "35a19c6fe061fc7f4cb550059a67ebca3f0ff93e087d3cc957ccdee96212afe3", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "55311dda5c2166637ab8033a7680cca7e00196f5eb246b322f6634502f26bebc", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "bf4ab43a1fea5c5a56638f5e0881a07e50f6943819b78e540de0e77686a24660", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "3c74f0dedade8e3a93fda3b2877fe70ed6f95281f9e8a0e3158dad1ba0a0cfba", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "a4af2e9b07bb092c2d16b747ee3b6e5f063c019de211baba9532585413737d94", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "087bf1716e0249bd815d1034583f1a7ed5f40128e7ef62f4307f8745ca76dc05", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "9c8931064546726d86085d3fea6ae7addb23334ada749352e5790f6cd700253d", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "44bbe6b5ba5a3b33ca6835774cc238687b3bc91cdfce853b4c91413e88a10ffe", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e9337da4711bba6cdbf73b4c989c8ec8597c5934af3bb41869c29ffaaf1925a6", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3e69b37b525d125924077369e53af18c7bf7ea08e0d07322b958086f68f01027", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "ea22ff4b125538e6f1b133c3f33974ec45497b0226f6aa7d1e584e2abafad69c", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "45485a3de168ffad23d9fa305d0988c8dc291104521e5727fba1f4413707a4a5", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "5025cef2705955ebb2259ffa4b5112778d03707bb85be0d143e798fa62b8c6ad", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3ccb5886150bcd8f066d65c9fa84c9cd1b71f519832e60444bdea2705f9ee258", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4ec4e7349374a957dab03b7bd9f9c4fb1434b7bb2b1468258a8a6cc120152ecc", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "eb3d172c88eb9f7f6fafc0575f877647554a6f6fff704e973f5f2c5e63ba5027", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "1131d9de20ee68d4d0075d48529961a12b9b7e003987855128957506f8b37eb5", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "eaf81e88b1e0e1f721cbb33d80631041d5c2b345bcf4e48fce9f74e2fe5eeeaa", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "2ce4b77d7bc864e9b0eb6000b49ca7a50a41b226e4f57eaade67ad146b7b52bd", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "058515eac2cd8d79578c4cabe7b87bbff694cd3c34a59ebdc5a9ab5a67c6d7ec", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "16d211d7c03fc3daf24cf2831ec7c55fba6943d2859c3d167ef5a2b400318fde", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "231d84fa30d32b36aed489ad4b1626e7609b8754d09faa7ea164abf502dc79bf", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "4213db02c77be47d473d7c81dca4e5a58896672e6303b8baffbb5b7480b89ba4", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "a0862178a0213c8877e9e482d9df0d44bfed962737f82a7d5012dada7d4ed4ee", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "7fa3c5fd91e4da0b0f4a684ea39187c208106cbeb122327450c45ec5402ca9c6", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "d4f816fd46d2daddec67f82c6b29786d8a60cebf99bdfab1d8046e7aebb075a7", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "445923b0f062936ecad4eb898604d907e908dfb9141edc50ed8607f5508262fa", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "4030f5feba6a7ebca4f55fa1566e59cd90551129be52fa33d27d5538bb983dc0", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "5b759b99bdc204945a85b13e1a2facdcd03e11e507b8458870deac8d59b1a729", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "5765a83f296d692e421a6cbe36770d4f52314c646da4c1dbc34c4e64246c8a91", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "1b5d49e717c5d0592e822802788cc16c62c3944e64362ee47fe447d23c799195", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "32e8b6fcd2ff5e3181f3ae8b4baffa4105d16392a8a0946d357011ead48a6cc2", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "52e484acb388ff8b4973167f7395f566af4c9a60e3b296a1e402e06346fabb39", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "ff597a8ea6915c6c5a954aafe09879018138c14a2e0a82b256988c83df64847e", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "8f45d7b86b160d06d40fe675672eeeea8a205b1980b023c5a4368e5a7764844c", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "81fa4235034ccb9e46d9e85fb5cb0f9e48f12f0ae04d7ba1262af75f4c3e4fcf", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "976ec81e1d058ba9263c9bc1c54541449d7b6e13372446ab5dde14c0cb795613", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "e0b70ec4cd8d00ce54babdcdaa117bdc98a742a89c2024bbe7a7f083ea44a994", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "a13854276745dca57d7ce0fd964513d7940c8a94e3fc893eccebb3e0818884f1", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "823afeb6fdbb283193a7123ae4135e3dfac43854994a8d429113c0bb6e9a3f22", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "dcf02710468ef0cd64ad4b5b9ff73fb4f77a1f5ae3d8704ca10de8f0777f90fe", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "ef62ca263aa525e11b8c2be945288fb4a2eb80b50a867bcddc0ac4cf80d667c8", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "773063d7674ffe3816214611fcfacb8066ee35bd2cc1a7a1af12cc26e43e51e1", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "af69e621c7d0edc2558b65146b9598a799a308b8e643543a5f61455473e5cb3e", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "862e892868cd5f3b844f38285fbf78c80b0811154020af89e2c977cff773b793", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "7b05691622e6014641e90f32a7ee0f9bbd736be0417a72eba38c57ae598f216c", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "738f9003572772cc0b8424127bdd91da76a2048f63c216d784b589e201e69fb6", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "b6b27213d5ff7d7537959c9c699032b038ec55dc210bf1fc60d3c79f5bbb2b3d", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "76b7619fcc2aa042f5799d88d72924b6baa915497bbeb942a3fad35bd7f78c8a", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "1dfb3452a60e3e527b67494466500c358ff07520b614201c29f3d5e2bf6656a0", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "8f1062ea9adaf3aafef0116c5234fd21f2a4abf2a135013d44d51e35ee0cfc69", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "b7126f55ed7e92826c1f1dccaf99359a9b80b55bf641bb60c05dc7e9d88e7c72", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "5cd27849c9421cdd0c0a68487c6abd2b58b2b496a35ba623d6c8b4e2c9466d17", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "2b6d31bebd6a3baf9470d5f04375afaf0b3434c7639b53f0b7247dab421c8e65", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "a7b3925c579c018424cdd5be2e8cd2800f956f5837c62623e546b4174527a4fc", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "555c06aa5417faa9f338ce35b84226b40a684bd1eddeb5f7cf0a9b9af799316e", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "413c049481cedbf0cbc97a30983f397a889861c0bcd66cae895e4180889c8946", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "83964f82074d3cbb9569205315054bd7bd92dfc64de2018e4270ff5c4d0d5683", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "83bf91d2be2dcab8801e0db2045a4e2a2aa09291abdeae482bb30f8029014c2d", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "96348a43d9c920f66c628a0e6f7756346ed4ba2a8d7926e43424e94008cf403e", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "866fcc1c28fac27c6b968ac313aa5a7c3e392c1ac4219b48de1cf267bd170e3f", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "2ab429b6824522a9799faef1866aa7114c9e46e168c906ec5cebaf62e727b1c0", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "ef0aa7c5fdcc39a4c05c450371c85c507700ee455e05836de0b812a32680704b", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "451bc949dbddbe97229f0804e0c9d4e4a96bfbbe5f82eaa2da0157e4221d4038", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a1d3f6f6368844fa9804a82872afe5b5acc49d66c47483236bb133d8281d23f2", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "35b7252f2e31402f39214a1e906c3968937db420f7706a412a389994431d05b5", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "dcd9990dcefacefb319e45a4151e0869580d0e0f1a85b3a87a3b53dcd218015b", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "948e52be9fff2ca5434e2ed5485c60a5702210ea43ef64d04ee120ee850fb820", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "b2cfe672fa95ea63864627d6a3bca1d39c824aa5fbefcf84c1b045c38e216eb6", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "48c4ecc9158e159eb497e8891821d407d0df08e4f8ec96cd5676fb24941dbdaf", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "390567a98c5fb8ffd05207c7a7c0e3f851bda20df2ac0ffc364a7e52f1f817c1", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a911b9bf957e6e15999641fe6c36eed694e97759f07f307975ade2e068908500", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "b988845ec96c2af3b3c4ce916b0f4dab51cad1c5d7666384f1cd34d978a90b75", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "30fbb9e89c4e92a660139ac8013411da9fe87751d5180615274807711adcafe4", +"T2T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "dc035ec2e2de65ee89d8c281b145b3c02016d5908b74164dfb2aa4446fba9c1a", +"T2T1_pt_cardano-test_derivations.py::test_bad_session": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_cardano-test_derivations.py::test_ledger_available_always": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "57e228b117e26e2b1174192c5ee57893ba32a7076320ec19557161280b2ca363", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "292f713062d030488d565e5c3f3bd914201972d60584d18170fc8462d90125ba", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "738faa6ba0d003e9f33adad900d29c6d86cb01d7621367874590d4150891ab6c", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "3e031e29160f84acf5666ae729e660310a721528c245349607e01289350e3f8c", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "a40d0e6d47b2e3393053a24115cac90bd43972e84c24c9f73f06ca4e8280d669", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "66008e075b531ca5c2165d95a01fbd5a228d5c5a1f53061bd0192fa35c2dedee", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "769d28482d4e5345f1f256e95286fa08d2b2b4b771a8fd1a4b810448514fd0dd", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8fd509c0849220c4d5916962d07290bc022093fa4f952865948ab4beb7c90c3f", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "b4ddf2fe5abd8473f76e0b863adf6be22de634ee224eaefb028e8b99e71cc3b0", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "b6b14217c168a274984c1ae303f0fc3170419e6185f1e159cf6fb647d232c89b", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "77b6d1e2e455bdbb83e88f17d1ed2e1c0f0541053c405bc1cd8f3bfcaba9e6cd", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "e57960d3622cf62f1a7f2b1b0bcbe4bbeddd4a5fe245224ece69e0eb51a98bc2", +"T2T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "eaeb5e66911605d3a36258acdb542117161c98637f0855ba5e188167b4c1e8e6", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "1ff5ee4ad29c262c383f34712446b75c4bad502e603f12dcd0817a2dee20dea6", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "dc2535cda635bb7e3d8da7275edb8305eab55f4e4d940338e8c3437fc8a31de8", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "997ddcd23d5dd25287134fe61e2c97694bd3cc09877afb31153945bfa04b31a7", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "634b255b0a321845748ab842c67309e3944399feda3c6a791d27a213e524df4f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "634b255b0a321845748ab842c67309e3944399feda3c6a791d27a213e524df4f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "3f97d558c0e8225061c0e470b54db17ea4b879cf9ed544e9f48d76a074e18569", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "236759566d91351f14e89dd3dc1744ad419e883ceffcee50fbe1c8c48484ebc4", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "41d6bd5da2238af682b5992df1b29aa5346451b6dbdde7b702b75a3765e41dd0", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "38a88cf6667c58fbd9eb2a008c7c2252affdb0cf6452d92e1658c5b7bcb2ccb0", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "5ef6f2890d80ff1cc4c3eee91091acb6dd7f4e0d159b1e510b9ec5ed813ec688", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "69abb960bb500d0b83fac34d4f1bfb1a2ebe3c67147e2cef8d1a55c1528a387d", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "68a25fe171a90c5acfda886bbd6a5a9abbdb55fe2cdde89327fe8fb1c9d9fc67", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "bef94166222bd42300a044f75d0319d8b4fab7e4e5fb088c966b5961a46a1451", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "c4ba46775f6e82fc08f7e504ea8a777c1f029c4a1df0e5299f1fd7b73569b058", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "c4ba46775f6e82fc08f7e504ea8a777c1f029c4a1df0e5299f1fd7b73569b058", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "d82e005ee3f9dea84784d9505ea38e59fd0f936ff9c1866d1cc172bd6ba5daec", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "6602e2dbb0283b8165bd59365b46bc6183a54987c251ab3cf1b02cc784d96c54", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "26c25d4614801e70f14490a225425e623c8373864be2f8ac8eb97fdafeb8cb40", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "36e8c0e8de0a242d998d7543a9eb751b3574aa702ddd4a131d73ab848149ac0c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "bd8c7da7e2cf1978aa828cfe96db5a963d3e11a68d79922ed9791c39c3b78a6f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "103ba442daa6661c617585b1bbf15959751fa795d23223b38f69c7680206b03b", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "650a146e69ef6879ebc1268c80ed995fcb8fe60e0ee4062566008f91a93f9386", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "61e6bddcf132989f9ab100abd5e1b8d445343cc4dd503715ac89851a36719793", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "634b255b0a321845748ab842c67309e3944399feda3c6a791d27a213e524df4f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "b21b78fbdcd0f57c60d93758c49895a3926092822483a6933732c545fde71c4c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "36e8c0e8de0a242d998d7543a9eb751b3574aa702ddd4a131d73ab848149ac0c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "c2e9dd8c3c56a5e083404ab6394356f656f8e97a9525f42c40e0018db964421b", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "103ba442daa6661c617585b1bbf15959751fa795d23223b38f69c7680206b03b", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "650a146e69ef6879ebc1268c80ed995fcb8fe60e0ee4062566008f91a93f9386", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "9d8c22515b6a02063131a68c8f1dc026063d40950ee90a6466ec74e2d40d3387", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "36e8c0e8de0a242d998d7543a9eb751b3574aa702ddd4a131d73ab848149ac0c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "8baee8b375a678e956e90e947f27f14ebe7fbc2555c93bfc473c4574bfea8ae0", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "70ae46ec44716870d7d20b864ce629e823da8b623aff48d9bb754792d4d7bb25", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "3a2dea152b0a1a2b7fa8862897b11389d70d691f7d0526595211ef38119ae50c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "f8960b90052fe03f012d5f63c5179799b6360609beece70c13a1428930f082b1", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6832b4ef46b4fcb58fa5385450d85c6ca817567088c8542315d08689756b4ac4", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "40ad9f100e33277bc263579b6c95f86ccb2560d5494a0ae0031193b1e7ae1d42", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b58e047b34012070edddba17105f886389cec103edcda4af0e912491a85a9836", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "24c56d22d3d5438aefa9c62d67d4a5cc9ad5bb942c814bfa6aaa0a2fd5abe025", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "08e185a5e27095ce7214231b1f6d0a457119877b6a0033ed6efe585b7220006b", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "203edb36c10f163becd55f30ef167683a0aa75a0eed479111a6b5521b7593ecf", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "eca1bfa7be86012c7acd9ad5bffc8c6bf90c4aa184cc9e5821c090db1cd5dac7", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "01af7e507497523f31289dc4a1d78c6b7c6528178520570fad73e8f7a17a1269", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "13d2e460449acb07524a2454969b8ffaca8ae5d725df95fbb79cd06d200e13c8", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "f47e3bcde4c8d474b33400e784e25d836e84ba972e17d2450419871e2df3c7a3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "f9bf709b9ed3a031472d93b78c8762f30f4db7f52aaa0e195d6e6f2f35fe02cb", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "fcafebef3b2a728524f80ec85b45548eb5ab46e505fd74667d11c14d669a0b04", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "0e0ea3c7e1b1c07a5e71377fdd76b6bfc3511320b2fd9cd20433f14c9462df04", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "f818452b34e04dfc6ef7f0e341e5d6be8e288d74a0a6fbddfd0134a2f46f98b6", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "a42519e09b9d74d5946ae19c8108cce81ba6acb4fe5483e22a49bfecfd839595", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "61ba80dc97d9e424d3ce04bde540bf01cb4a0cfec53ee8957afbce0c4d8b84bc", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "409d5f884cc5f6c8d370b04da7bc9dfd02f0c12c2ba7b77d35db8a0caf8c5c11", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "09dcdf5968c3cc97eb60ddc1b830dbcaa6db5e61b551aa319348aaa8434100f2", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "b209d8556cd4f54f08a12c7e1da5a8c708de4caac1a84b1eb09cd2113c041738", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "b209d8556cd4f54f08a12c7e1da5a8c708de4caac1a84b1eb09cd2113c041738", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6f6ca48767d8151d35ebbee27a45994b4d71fd05c7ec6c39c0a90817e8e242f6", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "d7fb77a85dc58b541c43b96738f548928b356fb88101a87267ba1ca15d2dbda6", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "17d408b9b8f89224ec2819df677d15dfbd0fb01dfe5d9bc18326482e0aa11a1d", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "ca0fe3c4b741814b72a115699cc190bf65480ccc90357de549720da08d7053ad", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "957f6d8d2e6c4b3d1e6fb5cb447502bd89e4d6db9a3b94fee9bf13cf3f92320e", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2a40d00f3f6cbc99fc157f22ddab6e0e54370dcd6aec4746f9f8d4673699fd90", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "ff010a54ed539614bdee7f5ffd104a66acf839cfc72c9ae4d9b336f087713ee0", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "ff546116191664d935114cbb9bafebe1e45547c976761073f9f78111c3679640", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "36e8c0e8de0a242d998d7543a9eb751b3574aa702ddd4a131d73ab848149ac0c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "3ce6e45c9a222d6329d8a36ce7e0e24d2b9632844d2132cde2e85148a07b3afd", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "d3a6286e549185c1ba0205d6d6034dec33f0b6febc10dbee8a1cb28b089a227f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1a4a5d702c4b96b337be744f8add52030520d7de1e6916e50c1e58723c9fdcad", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "0d7ca4e81f3b9e084f764dadd99d58fc03e0d8847cb4566959dfa741f97caab5", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a4b99d19bf618f8eeceaee2358adc392513905edcd7a0cb575dc346cd3524c70", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "81cecdad6594b2e3982e4b6643424bdd3c87a202a8420deb7bc73eeff156d68b", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "71d82af4749a194753ceb889b1d3f123476e7dca16fb92a987b9a4ce1415fa18", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "0a0e161975a92c0731570ddb9aaf9bae62fa00f8432bc8bb11a8df3a3d8f157e", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "ccfe258891a88e1614b2fd4951d1146cfc03d00b6c9fcd28a422cad9650ecd43", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "83f9aaa4c95343f270023279da7c48ba8ccb6a679a993aeda44b183a6017c1bd", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "f2dccb0583d8dea6e618530ece529ede480d377aa1476173e6014937fc268bc8", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "36e8c0e8de0a242d998d7543a9eb751b3574aa702ddd4a131d73ab848149ac0c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "bd6efd93b98d23fb526ebdcafac2ed3da85d82e246c8f3b5363c09c7a32cb1d3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "59859cad5131995cf7246df75829aad54d5b199cd28a36528025713715b1c6bb", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "5c2da0da2189cd28a1619372d3a9908a4679805895e86e570eb629549793ff0d", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "4a764d0c0cc8938c17e0f9f8b5237bc78e509d4a68ff94720bedc735286f356c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "bc5fa4767c8f9e521dfb0f389984437cd298e099a7526d5d293f2fed3deb260f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "3deb20f737c4147891d2288b45286bd87e5e650b434a299656112440ed9839ea", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "76003c76aabf60c252ae314c80fa90ca490a87c58a71a49ee8d4742c7b7d386b", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e2265ebbeac8422404aa4f3ef27fbdc3c3004fdb0e3f958be157a2a3dbbc31de", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "0eb730b3c916985dbf4f65dc616137cc401d2b29b69c6f16207df7950d41559f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "21c547e1b48e80e24cbe791703c0e71d5253509583a0135d6b82ac1e05c7fbcd", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "21c547e1b48e80e24cbe791703c0e71d5253509583a0135d6b82ac1e05c7fbcd", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "47ed12680e18b63d9a9107d50fd33e6ff03ced9208575dd129ffa2ad1520f5b1", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "6b58c351cc55e127b81afbf2375c5295796b76383488424c166ffd28d2001840", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "6b58c351cc55e127b81afbf2375c5295796b76383488424c166ffd28d2001840", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "583dcb2722cc9f23c3eed1eb09900c8ef7556afba828106ddda70ed2caf1ba0e", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "c4764baae949c621d071791d6ca33e4849085457ec51704e3b508f6a388cf682", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "ee523f8ca202438dc4e617b615be65d99a8e953bea5b0ed19f3d9e3deae2800a", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "8e3188d37b51b6f15249c8c55a050bb5823061640c6d5f7c7bb96346f40c93dd", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "a170937ffac002b480f9f9e6cf2fc7a57d15e02d99afd8f853f70f917b382c34", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "658677bd97d7d059257f63ab36ddc3d03d53eed9cb4094c6c134383ea86689a3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "634b255b0a321845748ab842c67309e3944399feda3c6a791d27a213e524df4f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "634b255b0a321845748ab842c67309e3944399feda3c6a791d27a213e524df4f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "ca322e8559df5660462c7191f7842d9076a81f7c54560d80ca0af39ce0ebfc24", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "bbbf3802019729180a5bd97f6cb876c2e44f99674fc45442922199b363e46733", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "4dad05addcbc2eeee4fa3b7d064aed563ff4774b9c2f28dfd25121192e8fd4dc", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "1ff5ee4ad29c262c383f34712446b75c4bad502e603f12dcd0817a2dee20dea6", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "38a88cf6667c58fbd9eb2a008c7c2252affdb0cf6452d92e1658c5b7bcb2ccb0", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "686a46ef045f82f1f4326e992e430546f8335fd97309c7e9ae332d4b6fc19498", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "38e3960cbcbbedb07c1fd7aa39460defdb7ea20a3b021003c6e63cb5442f843e", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "38e3960cbcbbedb07c1fd7aa39460defdb7ea20a3b021003c6e63cb5442f843e", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "3d1a6f05e581278d9928f038b6550b1cf8a9c1a2bc2358bee63347f0fcddf8ec", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "c97139152dbbe026c46fcd14d52eab8fb95308dc73f9c53fe6b314ec4ac4bc27", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8823eca0b7090ddde67d9d5854e76811256a5ca49b29b9136a8692a5c13bc4e9", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "36e8c0e8de0a242d998d7543a9eb751b3574aa702ddd4a131d73ab848149ac0c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "3d1a6f05e581278d9928f038b6550b1cf8a9c1a2bc2358bee63347f0fcddf8ec", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "3d1a6f05e581278d9928f038b6550b1cf8a9c1a2bc2358bee63347f0fcddf8ec", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "9d1e7c321ba5a62fcb471270f98c6e27a03f952bd56d73524b15d41162d6dfff", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "bbba52c8ce9e02400b514993ce814a53c57dd34c532c0f8eb009e3153cff8dea", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "d22e3bcae1dff911f23b0ab113dcde132c19e2484d4c6640f712012d99f88efe", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "df0e53d5655615b8de3350a394e658cbf940054bea7338b6f0e574680e6f81e6", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "0b412938e94e24247c0e74f73e761fcb1b787cc90f5c0a9a9f479d0cb720c862", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "56ef639c5edf7acf0476508a59c0292c2ffe462777d078d5024a8a553ccb4168", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "56ef639c5edf7acf0476508a59c0292c2ffe462777d078d5024a8a553ccb4168", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "56ef639c5edf7acf0476508a59c0292c2ffe462777d078d5024a8a553ccb4168", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "56ef639c5edf7acf0476508a59c0292c2ffe462777d078d5024a8a553ccb4168", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "56ef639c5edf7acf0476508a59c0292c2ffe462777d078d5024a8a553ccb4168", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "56ef639c5edf7acf0476508a59c0292c2ffe462777d078d5024a8a553ccb4168", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "0b412938e94e24247c0e74f73e761fcb1b787cc90f5c0a9a9f479d0cb720c862", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "0b412938e94e24247c0e74f73e761fcb1b787cc90f5c0a9a9f479d0cb720c862", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "0b412938e94e24247c0e74f73e761fcb1b787cc90f5c0a9a9f479d0cb720c862", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "bbba52c8ce9e02400b514993ce814a53c57dd34c532c0f8eb009e3153cff8dea", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "e0de0f669dd8d650f7a11cbd6a331de84b7b14c295189a5e5ca2ac9e4bd9c8de", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "57ed0a641fbfd4cebf284e2652da0a3e80adafdd4de5bc5980b3a09e3dd41b53", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "adafe05efa2012228294fdc1a06bff5d21f1dcb053701b832c7237cce0169f13", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "ffa83a8de3b1eae12bb593f935047a4dfaab6047073f17ba731297e737a536a2", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "3ce9a439a604d7a39a980ecb0e47e8ede0554fee190fd8bda73da3e0fe1b5c22", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "ee4fd6e06a2019476eaab6f4f457ed2de257352c1b5ce240e93f3b6a155b8967", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "abd7bd976ba8e2569b995e94337c9e9191bdff0a9e04d0bc8bd35343d71eb108", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "3d1a6f05e581278d9928f038b6550b1cf8a9c1a2bc2358bee63347f0fcddf8ec", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "3d1a6f05e581278d9928f038b6550b1cf8a9c1a2bc2358bee63347f0fcddf8ec", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "9b9b9af368ea9bedf99ee1ec33a7426c75f7c0eb1f0f6245a548d45c1e5f69ae", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "e0a64e77681e6575dab63ba456f0bbf585e01cf06b9b823ff0d1db384d0c252b", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "2b6a888b751b7bcad49720e8d5edaae6a4939e23defb05b4fba4b482c0ee2000", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "6b70949d98e89edb1b857ef775e503b83cd6e52e2f7b3362791fc2dc7bd53f1c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "38e3960cbcbbedb07c1fd7aa39460defdb7ea20a3b021003c6e63cb5442f843e", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "b209d8556cd4f54f08a12c7e1da5a8c708de4caac1a84b1eb09cd2113c041738", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "b209d8556cd4f54f08a12c7e1da5a8c708de4caac1a84b1eb09cd2113c041738", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "db12bc5d6e95de218723858bfb1d297d71453933ebb075cbbcd0097d65e414d6", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "b209d8556cd4f54f08a12c7e1da5a8c708de4caac1a84b1eb09cd2113c041738", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "3d1a6f05e581278d9928f038b6550b1cf8a9c1a2bc2358bee63347f0fcddf8ec", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "3d1a6f05e581278d9928f038b6550b1cf8a9c1a2bc2358bee63347f0fcddf8ec", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "622cd5948942bdffe8881c118e54dddb84622f2febcd1b45e82fa91183c85984", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "4e087c98a009f97e1aebe58dc217c6466a48d68c366c7173e2a747f7dcfb64b1", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "617132bc3dbd4872c767ca1fd559e57b7833823bb034dd66f9c76fdb79202c59", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "fb6d0d16d5b5123796369c1f105a15fb3a80bb693c0a27645abf6e31d8e2f494", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "7e1f8baee678fe8345cb20491b0e9b831c4ae9ab48cc3e411fa466ee58c4321f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "56ef639c5edf7acf0476508a59c0292c2ffe462777d078d5024a8a553ccb4168", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "56db6cac6e4bf748d5d6188d2b27a2c02a6df7a387d9e037b304f1830b95a4b3", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "6a3f3c5e14ad53500f18ed6abd57341f2d9ae2d85d92b29a80c3f890c0c8a919", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "ad6c22a1790da6cedebe1fb8c750737df44eee4b6b2bf75b013f7a44cc09789f", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "0e7b936cc12deedc38f2b912f0218442975e22623e4b6f0fe8c5d82839e6abea", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "6b678004c99affd14ac84976faf54e5488c6eb1b4c89dd2c340f92539bcdf2c4", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "956497bb0df6372c029a4dcdf2fcc434b4ef1346db9a52b91fb1053c14152e97", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "21edcc02c4a5658ea1969ff0bfb2e26bf0cfbc232f4ed289c218197e55df2545", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "0a2ed6721ce4f2c1eb31078f0d3c05ee386ba7d4d2933340a6c82c30e2dbaa43", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "e37bfdd81d2273204f36c3153856984c488769e4a431adde634c7eacc0fe6f3c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "8175fbc06a95ddfb015c875b92eb661b03c893c6fdb97b5b86e05d1412049a4c", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "fc0e067501e856f26e629cb4e1d7b02a9560eef57e9bd5bcab85ea99842fcaad", +"T2T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d29c486db0372e12c770c0e0bdc53c9ab1106b08be1caa6189b69dac9314ac22", +"T2T1_pt_eos-test_get_public_key.py::test_eos_get_public_key": "7a735d1d24585cfae4991da362a973590687b0a666c1ad2cf2a9e1803b610509", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_buyram": "3ae3c4ac644886a37441f7d75f862b2c352de9e7d1fdb4864962ec29efbe9ea8", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_buyrambytes": "07824cc2c3e7f1296388c23b219faf3861e9e7e3501ccf8c7dcb59eba8be0bad", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_delegate": "0cf13b7fb80936baae6237dc5504263f97427eac8c142556674ccc7e9562e931", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_deleteauth": "c2610ae2f837f783a548c33cfcf3c6106d16dee00be936a941353d0f1f001020", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_linkauth": "5547262a557ddb9b1701ef79feba8b9f0018655a6c8c47a7a8e81f9de679a46b", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_newaccount": "ea5aafecdaddc30518edc037f46738e20f47e05a5688869ace248637e2cbe96c", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_refund": "69c755b02b939b2790b6ede9c0c896d5f8423d7206bc3f411ca818b83ab7b1a1", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_sellram": "814f57b31d6a82ec170d27117cd8d6dde6ba535180fcd08a8c03e27f7bdf8c64", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_setcontract": "c8bc7aa2254d8b9db6656ba25a0f81c7692399557ba83bcfb0c4e8769f541aec", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "e74ef3f87055aa2b0e7318a8c56f396d135e97109017ea333478c6366a0e69cd", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "e74ef3f87055aa2b0e7318a8c56f396d135e97109017ea333478c6366a0e69cd", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_undelegate": "b01799128e5c4cadac9d5385a1dfeca7c65642966e7692f140481aaded16356e", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_unknown": "aa8d8e98e9c2981610b4ce8b632bfaaebbbeb8d17dfb37aff4ecc282a6c16a39", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_unlinkauth": "958aa3d5f6792878b4bb752b4a0f8a3098e60e6da005c301709f2a9b327c7f8d", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_updateauth": "a352b2839d0ab38885e9ff665f31d7ee0c6a8fbdd43925947cb09b824734aea9", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_vote": "0e5036a23656bcb449c9663e697f84a89e1154c6427caaeae513b35f3cfbc5a7", +"T2T1_pt_eos-test_signtx.py::test_eos_signtx_vote_proxy": "53e30b29d3f1dce17a4dfc8c32e4e28ec81143b50292eb6f90f9a76a3f22cdac", +"T2T1_pt_ethereum-test_definitions.py::test_builtin": "e1a5ff4be5e7d82ab839aa7d648c9abf290d49cbac5c2f9984efa2518aa81ad3", +"T2T1_pt_ethereum-test_definitions.py::test_builtin_token": "6f1a085c9aec4a006610c515983effbb181c075459fdad356dd40dee0b922989", +"T2T1_pt_ethereum-test_definitions.py::test_chain_id_allowed": "80c86fac499726d2c324e2566f5032dbca352673049fe17632ff305df39f5477", +"T2T1_pt_ethereum-test_definitions.py::test_chain_id_mismatch": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_external_chain_token_mismatch": "9194bc385a54e81b235584395ff89db5b725986c4c24a2359a96cb5aa5fd6ad8", +"T2T1_pt_ethereum-test_definitions.py::test_external_chain_token_ok": "8684a8d6b2b8b0872cce4a2dbf14a3318bcfc2f1cea273dc86e3fe7c364013de", +"T2T1_pt_ethereum-test_definitions.py::test_external_chain_without_token": "a903a98d703cd0bb9c578225e3f42b278d187163c54c6779df0a5f0e8cfe3d77", +"T2T1_pt_ethereum-test_definitions.py::test_external_token": "e0a7125ef79b143781d47372b78086f25099344d04e72f95da61b1dadbd0d290", +"T2T1_pt_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "81c612bd2a8ff6c279e579b491d731a36379cfb54c806b1413e98387ff7466d4", +"T2T1_pt_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "33346cbb072d3b04b85de8cb332d646f2eddafc165ed988fbc0694de0696d3c5", +"T2T1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "90c01564a90f1d8fc1f6147aea97962665c39629bebd6212e025f083039d162e", +"T2T1_pt_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "63020ccbf4f6ca2b3a0a8bb29140b1a33551ea4152bda75d45c160f749d4240d", +"T2T1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_slip44_disallowed": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions.py::test_slip44_external": "217cfe69e70d8058450e5e80ce20e84afddc22ecdad278a51d3a8b39d22bf301", +"T2T1_pt_ethereum-test_definitions.py::test_slip44_external_disallowed": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_bad_prefix": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_bad_proof": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_bad_type": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_malformed_protobuf": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_mangled_payload": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_mangled_signature": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_missing_signature": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_not_enough_signatures": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_outdated": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_short_message": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_trailing_garbage": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_definitions_bad.py::test_trimmed_proof": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress[ETC]": "8d94599c5ac9df5cda474087c9b7c6e3048d26b6de162beb3f82b05a618c95c4", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "7e6c3eb70e264854008b57fc2c8e5993b4161fc8906ea9ab0283049eb886c923", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "609c5870069b801abce94a543bb4cf016a8792e112fee1398f3da86ae06765df", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "ea5366161f53f2b64178ce387fedbbfef4ed637afec6a82669e7838f176b5f48", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "544a09cf9fabdde1560b935e24413d40d79252d29277934da3c87fe4c9df8a28", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "0a64332f38e4f7ae11ea4158fcc9a822066015401ea3a2a264c8951a607e19ab", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "727c70f5510b07c17c12f037bbb19003af6cc6fd76925ff33bb31391800212a1", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "077ef46fc303efdaa183cef97eaa33135e367eb8a2522ea1b783633f6f5cf78f", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "4ce97539d1a422fd3ea063cc909814c90c4596a44283407c168e130944cb3676", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "9a6306c4e4985c839fabfea62333fa7c00a730c77d7c262b03c67d0d6ed18cfb", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "b5725853e6635372c2d52ee3431992c410f9ba2d2910f3a4216782eeeacf84cc", +"T2T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "26ceadde1cdd2678f97a0475150b09701d66cf66e405b8cd0626568b89335501", +"T2T1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_getpublickey.py::test_slip25_disallowed": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "56abca64084809831ad5f55c5c0b6767cece871026169173dce6eb0568c6877e", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "94ba8cc6cec5652b61929342b279ffb139be86bf8261cc0050f59b637334cac5", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "8511926fa27f904bfacd6e09f259e6cc074289a3ecbe0ae8713bdf4f0f350468", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "e6d8fa9247ab181161306b1565c1404139602a8e4e0b7b9382dd7af2b5490832", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "65e77580aa5e353d4a063c831c295adf5935a1672d89a2434ce520ca4d30b110", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "2a9aca2ff11164388f3009a8ad730a8a98ffb6ecd803c6d85621b4672f5abd1d", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "8511926fa27f904bfacd6e09f259e6cc074289a3ecbe0ae8713bdf4f0f350468", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "8511926fa27f904bfacd6e09f259e6cc074289a3ecbe0ae8713bdf4f0f350468", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "8511926fa27f904bfacd6e09f259e6cc074289a3ecbe0ae8713bdf4f0f350468", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "532afa939b7039947403670ae38f2043c82571871ed401232d5f1730d8c66784", +"T2T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "12c691f24e7d78cc11c35dda9a153e952d530d72659642a213ffe8ec6d7c23be", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "ab610acb44c3fc10653f1f399e8a855b4a41c4eecd60e44d2ef5135af1e0a520", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "e05421f871db096945fa101e367113bc30304bb28444f74de9fcba2e4b91343e", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "3c0ec69322c1bac8ec5b2d9f1b95613d170505b4a907b0a74a1c85261a1b0de3", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "36aaf014acb86a4d5172c8694792e430d8220c2e6f89127046ddfa928daddb37", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "4d3dd29b71ee2bf1c8cf74141926bd20cbce36edae24f5172a713dde68e4072f", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "ff998f6484b4e5cbec1dfb7fae4d8e2afc1b3442a129b2b86bb2dd4951db020e", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "e0d9e6211e8abf13ccb0f2333e58097cf65738f9f178f6e861eac6d8a6c48d59", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "9bb632d14d9142d316e315f81b5ed67c9b5d702835ddd62a6089a373c7ff34ec", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "562c386415a77e82e72b8ef6cc4d118bf7423e06b19cc66d1b71d8ef20589b6c", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "b2c9e6cc6e524363d02c758e338ea52fdb3ad7b61be44d42d77f7ac6452dbd77", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "ea7f5d42cf75b3a0d9ad522acedd3f06c91eeecb4d4d15e761d122f486234382", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "8ae1e1ed83bf9e28cd68aa2573721d5c378949cf237044656c41275d61b72cdb", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "44e8761c9e7e4e7486462f89ff04c512a48063b103fd2def26e2f63cc200fc90", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "6818402cafbd7099418be9071929315094becca47058e7c5ebbec76653750530", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "9a218b530c4afdd7435bb33efad0437d7be5f62c83dd987f999f3d4da8276595", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "a4e08b8a6fdde76cac8df52776978a26bf97c82524f1640a0ae64242f9db230f", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "4548f7d8957665b5f6b22cb06fe743f1ee7b605a3976be88364c1f513124bd42", +"T2T1_pt_ethereum-test_sign_verify_message.py::test_verify_invalid": "b2c9e6cc6e524363d02c758e338ea52fdb3ad7b61be44d42d77f7ac6452dbd77", +"T2T1_pt_ethereum-test_signtx.py::test_data_streaming": "e5dcba792dcc958dded85c32c7a6d519df4e0f73588fd22b5bb9932d7f945471", +"T2T1_pt_ethereum-test_signtx.py::test_sanity_checks": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_signtx.py::test_sanity_checks_eip1559": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "7343369baab98de21c1bf0e8e128ad58a6931b0ce4842a20200027e6778de25b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-ETC]": "2ef21244669085131f34eb31fc9faac9ab992d7c62c4c939b34b7b49f5731eac", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "1663af61f850708d8b9f99c4870a249cef7704753ed42a53ec5a86b50180606d", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "e12c8f9d13718f3f772109a18222596d4097f586e5b1b000ca42effd9d4db045", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "1663af61f850708d8b9f99c4870a249cef7704753ed42a53ec5a86b50180606d", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-Palm]": "7343369baab98de21c1bf0e8e128ad58a6931b0ce4842a20200027e6778de25b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-Pirl]": "7343369baab98de21c1bf0e8e128ad58a6931b0ce4842a20200027e6778de25b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "7343369baab98de21c1bf0e8e128ad58a6931b0ce4842a20200027e6778de25b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "7343369baab98de21c1bf0e8e128ad58a6931b0ce4842a20200027e6778de25b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-data_1]": "74cfef1ff081723a9f68f8fff6d0cdc124eb148585dbcc8876cb95ea68075527", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "6a960e305e9da0a9402e7a8d8717bf3e61cb28c93219c12fa1bb054352a997b6", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "fa11559c03ae91ab317f888e160b49347a8cd08875dd0e53cb6a17d37376b60f", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "7343369baab98de21c1bf0e8e128ad58a6931b0ce4842a20200027e6778de25b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "7343369baab98de21c1bf0e8e128ad58a6931b0ce4842a20200027e6778de25b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "7343369baab98de21c1bf0e8e128ad58a6931b0ce4842a20200027e6778de25b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c2c96e1ee02fa2f157bc541a371b25662e1055ec53b6b59b8b00a69f261f0a55", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "508b45589016b606cb3e506299c90570688bed82ea779ecfe0b29e8e3e277a7c", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "f248010491ceaaa5527a786a9d56fb40473f8753685f59ef230fb50abfe30802", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[False-wanchain]": "41b85937907bcc578687d66d0d2410e31f7e4333994a49226f2e0831a199c6f2", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9e1301ef256972ad115ff59ddb62908430994f74575fea1e7f1ed49703db5161", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-ETC]": "70cf6f9904275216e6c8a59de9ea4caf84a95d03f97a9014be75be82d626d4d5", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "45838ecd5a20217c3482676fa067510a26d69b6e8ae71444f4c997ccf6241364", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "d25b45bded089a245d4fec0d22ef2aab4cec3809dbf7da7292df8f7b33ffa269", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "45838ecd5a20217c3482676fa067510a26d69b6e8ae71444f4c997ccf6241364", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-Palm]": "9e1301ef256972ad115ff59ddb62908430994f74575fea1e7f1ed49703db5161", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9e1301ef256972ad115ff59ddb62908430994f74575fea1e7f1ed49703db5161", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9e1301ef256972ad115ff59ddb62908430994f74575fea1e7f1ed49703db5161", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9e1301ef256972ad115ff59ddb62908430994f74575fea1e7f1ed49703db5161", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-data_1]": "f4c40a9e0e2aba757c0e0b3fed053760d81be5c2edcd0153bbef341b416b2b61", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "5931f4daf74dfcc3f43bcd15ee404ad30d0fbb02afe1cab4bce66a563cfef78c", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "c1da8fcd7998f0214a599b000e541df47d153d0a8c0c8d7522c892f407a5c132", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9e1301ef256972ad115ff59ddb62908430994f74575fea1e7f1ed49703db5161", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9e1301ef256972ad115ff59ddb62908430994f74575fea1e7f1ed49703db5161", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9e1301ef256972ad115ff59ddb62908430994f74575fea1e7f1ed49703db5161", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c2c96e1ee02fa2f157bc541a371b25662e1055ec53b6b59b8b00a69f261f0a55", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e0198e528837395b3ccf9d598f72d67f3d1ea8d2bbb2252840161a20298b52ab", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "9f6cb54df89b163c19eb1c30865ad47522c5ab5939831af0b9388018f142b958", +"T2T1_pt_ethereum-test_signtx.py::test_signtx[True-wanchain]": "bdac2d30254bb967a9028ecc2c8e8ad4304bbfe96cb3c2302fa39d6bc9f60bac", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "83025ea14957b6009a077b08f2dde96a09aa1fec2c1710332dd876eb10b7ea1a", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "3c926a6ac789ab97c45435ada42c797951345967b649b2944aa8c388786bc4bb", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "901cb25653d9452d8e0810595d7bdaeb68da60c2dcd73d5ad5c7aef22cac4410", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "508b45589016b606cb3e506299c90570688bed82ea779ecfe0b29e8e3e277a7c", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "74cfef1ff081723a9f68f8fff6d0cdc124eb148585dbcc8876cb95ea68075527", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2699db06bb195552c4fc54517d137d25b9e11b6b8b6306592c1d17248fb6445a", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "fa11559c03ae91ab317f888e160b49347a8cd08875dd0e53cb6a17d37376b60f", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "cbb5d7ceee9c315453a7832721283751f7f671ef3b8d983404a03aa3962fed58", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "1e59daf26f185aa5274ee611789e47489683f3410ecbfec9389cd35d149f3e82", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "508b45589016b606cb3e506299c90570688bed82ea779ecfe0b29e8e3e277a7c", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "e0198e528837395b3ccf9d598f72d67f3d1ea8d2bbb2252840161a20298b52ab", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "f4c40a9e0e2aba757c0e0b3fed053760d81be5c2edcd0153bbef341b416b2b61", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "cd44eaf7e6ed60eb962478244c62eed7a42ea671784bfbec36f3f50891aed932", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "c1da8fcd7998f0214a599b000e541df47d153d0a8c0c8d7522c892f407a5c132", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "29c2c374e3a2ac07219e8999887aecdbfb0835e2e857320d0d269181491c7e32", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "15f8dc180de78eae3d2aad93aa25968b3c736f8d2e9fca56b337edcdad8dcf20", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "e0198e528837395b3ccf9d598f72d67f3d1ea8d2bbb2252840161a20298b52ab", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "4c9ba6d76177b783861c3c50f1ebce0daedc87913dc9e940e8fe1802259ae90d", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "4c9ba6d76177b783861c3c50f1ebce0daedc87913dc9e940e8fe1802259ae90d", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_fee_info": "dd769efc4c0d588ec3ca32c25b04251afe49f9b60cbe12708f5b2bdfba13ff8d", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "bd83e93ce1578bbf881496bb73f62d898f4c8abb9cc5d7b4617cb78a2d9da3ab", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "fd619c7f8966943d77aba3f27ae100c71f6786d43dff2bb74d7e170980eb86c1", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "62a88eeb6a2b84f181e4ee6dbcf8c76adc65272c542fe0d4bb05abd18a9a417e", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "54db44caea0c390154530fbd887cea6784efea1c8fbc681fd5436a56f9483869", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "aeeddcb9cfde6c5d7044f747b0f21994133f0c16e8a3602808f4c81617e423db", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "8728d5d82913fb4d0f083b283a7946257e5f8abec5f4feda25c2575f87562c7c", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "eb2cf3232e1907e5a849711bb006452222bfe77db9129587952fd84a2c8d573b", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "b022a70765503e789e9e7d04e2a3ced5b91c19bc19af30b907a2dac773000421", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "6a23205cc997ef5c3f831f815b884a0853300b89a225fdb129d7577e9ce9ac01", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "cdeb5a33590be4430c7fb8b74ce9950e2a619eb5acebee847f73c9a2676160a1", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e01384172bc8abc37ea08f2b244458b52caf5e6804c1eaa8e9b9aef2ec5ba9f0", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "0226b2c5f77903831a026edf195c44faa9e93d97b5f6a91a72835c404bd07d91", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "fd8fbb8aa1eff41b547602a6d4337ec7786bd51e9a370d5666a07fae2c0864f6", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "2f42a67ffab381e055ef11740cd3b0ddc51223cebef1e876bc2d1f12f2608f8c", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "2f42a67ffab381e055ef11740cd3b0ddc51223cebef1e876bc2d1f12f2608f8c", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "95f1fe41cbb3c10faaecafb3973c0a8424a8ee5518cf33dde13566d51c7cd925", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "95f1fe41cbb3c10faaecafb3973c0a8424a8ee5518cf33dde13566d51c7cd925", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "6e332114f1167259b8a68ed123171b8b3376824c01b553dbcb546bf110dfda71", +"T2T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "6e332114f1167259b8a68ed123171b8b3376824c01b553dbcb546bf110dfda71", +"T2T1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt": "22e55e96f2e7e9918ca63206783f272a94c5b3c83acd53db93b07e5fd87280db", +"T2T1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt": "5b2458b141c75ff168f63a016a53c340a91efca3ecffad5be1893f47d9014645", +"T2T1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_misc-test_msg_getecdhsessionkey.py::test_ecdh": "b6a6b6ce943713351fbfd7617558211876ec9f0738e94ef64737341eab4004f8", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[128]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[129]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[16]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[17]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[1]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[20]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[21]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[256]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[257]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[32]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[33]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[3]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[4]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[512]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[513]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[5]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[64]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[65]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[8]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[9]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_signidentity.py::test_sign": "2fab2f919eac85d38bf8d0efc8cfd511a513285b3cbdf618661cb8a688aa19fc", +"T2T1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "d30a49d80c8342a584968b6412e26a95899c9388f8e4d476c9699c74cda18023", +"T2T1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "469ccd028371d1cafc14f72e8906c8d0db0d8078b9462abb2482f2835f352c53", +"T2T1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "fb57230451bda768725f02b64bdaa763461851339924eae3e542f4a8eac21f06", +"T2T1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "3f2bc91ebb94a93e65cb73f61547e232dafbf25b9bc29f3ebea4bd2f2f1c5e6f", +"T2T1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "35e7b6c2c29e9071fe6758e4f01b2e7ef1398670802d7726791d6acea60bef18", +"T2T1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "c84caf32d3bafc05270251a896536c61e277585deb13b361bcfc0fe093b9ca58", +"T2T1_pt_monero-test_getwatchkey.py::test_monero_getwatchkey": "cb13ee92ed748f8abcfe8fdd0cdee755df277496c10b5f71e9879a0001cdf1ab", +"T2T1_pt_nem-test_getaddress.py::test_nem_getaddress[False]": "1696494219e0e8f311decfe8408c1efc63a5bbfae19cd0ecd873990304738f64", +"T2T1_pt_nem-test_getaddress.py::test_nem_getaddress[True]": "775650034adb3cf180bb92ffca4989ea8fe4e448002fcbf617001915de405171", +"T2T1_pt_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "fcd867e549e3b29ebd3a25c9930a4c0d25a3a541b3eb9a194bea028a8e6ab522", +"T2T1_pt_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "b75b2977f6d8e7cd3fbc752fd528cfc04f79ed872e530d66b69fd45f640875d4", +"T2T1_pt_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "e4a2d3435eee5aaca7c65565372e1e53c7c5a520d7ba242352b30363f96a153d", +"T2T1_pt_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "cf228df7a761892b07e9285719a20a3dc0eacb89fb91cd46255773f6d3d237dd", +"T2T1_pt_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "8336b7e5e6cf7460b59322aa567f392213d4684ed84a2a1c2b6eb7f672f92c95", +"T2T1_pt_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "ed60b89d971d467340efddb5dedbac04fb08f3a477afa4d7cbc16e579d27244b", +"T2T1_pt_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "5622b5752c842176c1f0d3d06252df2507a5bd2704180e0dfa942fe2092b5ac6", +"T2T1_pt_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "cb03883702ee5eeb7cd94f4e36e82f4b162324c244289ffc96f40b75e4e69dd2", +"T2T1_pt_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "1b5655db74532a182df5f8b5dacf220fde776febc4d83e5bad334b980909be67", +"T2T1_pt_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "6ce4664e4e2cb4a85a984215023582f65e3d8497406d119ecb4ce711297e6e3f", +"T2T1_pt_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "6cd09234693c175cb707f2897a3cbeee68ca5ee9b79197e981b8962deb364653", +"T2T1_pt_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "c0ed88fde712eb8c78f844b6bd3e0ad725f921d5be0b87b91754a460cca54ea3", +"T2T1_pt_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "aa0c43010fbd3c04b6a7f98d4e11b70a5333548d187022cad935611fc5fb17b0", +"T2T1_pt_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "0398443e7bf70dbdc96e9d34c591872405d58756047aa44d91ed469735c64f24", +"T2T1_pt_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "9fa1e0e62e6824d445e2d89be52c53483b0f22e3eabd50fdf1f4ad7569910af2", +"T2T1_pt_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "eca0b6235108d053f4bf5bb5ebfa6bc55d23659f38be5ec3affcb56e8525bb90", +"T2T1_pt_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "8e9c89f4d74169e74c4b2675838702c2cfdd19db745332832a96ac3cf0d113b6", +"T2T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "44bf4f9a13e9bf391c5ee86768df5858f4c6838958dd977d262005d09f19195c", +"T2T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "528e099c6fc72a5b2ffaef258efa2bf0adf63678f25a975a9511457c7e0a1559", +"T2T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "e319cc2783e135c0d39e30d51d9374020fbc92b067c1ef1cf845834cc9b740fe", +"T2T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"T2T1_pt_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "2e9143530ab065831af63a0adc06cb7898a67d62dbb330ceef6117d52949856c", +"T2T1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "9b7f0e4117a7ccbd8984fa92ea412bbe099338e84379996b01d90fbe97ead538", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "a60e84b724014a10ac621e9608166247f1786301a091779835536ab4b9cadec0", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "1f613bd16479ff1a3816b5b944ef628a825a0989845de1dff89ba763002b2b2e", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "36ac731976a0d4c2dfa143055330d7465525f036287645f40c3cd4fb3b5e1344", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "25cd6aeab7f7fc794721807d7fe5ea4274becfb5e1bd0340195d19f14c3b69ec", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "adbc1be437664cf726bfc255714409aaa77e0f18739e93e8d1a900ad8fec3626", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "ca37c07ae62971e27bbb9f67fc5879da5b90612e612acbb6b6178d649a1fc63c", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "a43e63a74c071a4881276ce3da45c907dd55fa50d1a9dd954a1baedf981abb1c", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "93cb9555213179ee9810685bd586aa57608e83385334093b3cb317008f7c926e", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "d9c24daf997c88f8fbfee34bc365b303fc4a2f7e8552401224f3d634ab53e82a", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "40c56743becb307f8422c79ebf78ac7abb5ed17ccefc1af69439704f8b33605b", +"T2T1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "4897ba36f13499e7bb2ab2f7fa7309fc15cd359e5838834b2ad74c7f3e2314ee", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "dd887ab6ef57ef92a7d0d33bb519ebf145adc7773cdc738a486a26f6d67041b9", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort": "a60e84b724014a10ac621e9608166247f1786301a091779835536ab4b9cadec0", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "5f52e2ab18a58a6a197f4f06c25f4d087ab62e063ee5417433b67b263cbd2b18", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "c4a9ebfce69425f8681b56df8c4fab4293592421958c9d86a50f54d3c1b3ea5d", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "9a7b1ab03fabdc2a3cb014ec3f9a90eae30e5dd23b2424b4d9783047a9b51b05", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "c1d6bbc57a043b94977244d716c25b1d398c3adba51bac35d7b55782e011ca49", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "e1e0b42920ebddff34a60d0443b58686e8b50546182a2da38d747e8133faac5e", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "be83e675bfd40d266cf24984786bd9f10279158a9b11747b00f026410dda67b9", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "93d6fb30565eb787674ed37109b6b90bdcd2f578432515ced8325d65554c3239", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "261bf3321304661cc98b6ec799b1b6982b29cecd0cc20201205b4253ce630748", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "3e0dd841fd77cec20313ee3eeab4b24890ca9ce5d1e4ad4b007e345d5d69c5fe", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f21cdf50c5dcdd63b713986913034f51c47f30f70ec5c826dbb775295e06996c", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "b2c8fa3d76680a57d14c0b50990989385c91049bde4e6b7ea97b941c64492e52", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "f29d29bec197beea23086cfddcebef7cc2048a740f30586f3f27a10e426fe130", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "27ba1232958fa936a21edef43cd7a045244ec214e8dbbcb0451b0b82ed0cee21", +"T2T1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "17d44c355a2be777aa56a6c94cd42cedd079749e055e382c2d3aaddc1d088cda", +"T2T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "31737e731cf690a655798dbf18a395ecd102f15a3417efe00a2c79503453fc0a", +"T2T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "f8043938014144183e580ea991b49f0420a6ace5ba9b29cf7dfd9ab7154c95f5", +"T2T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "ac52e7cb4168a0a6d6b679f5a9427d897d14ed031ac368ae8a478ad6a059f738", +"T2T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "41d4c4fa2b9ff4abc0ea7d6588b08d8d9f18e4ee0288346026c8a05152fdbfea", +"T2T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9e6f3cdfbc7476302f065c8143dc9ea8839fb9042eaaa4fb4c3bfb640032b429", +"T2T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "ae3c22bffe35de849c363e7a052140f71d8ff7b94f5fd31c4db9e678ad034a3d", +"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "55893a4a47f1739033ddbfe08051c24e830445cba87e2e9f9c4861711e4b482f", +"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "f1c7656401b1ce94f3fa49a9aa217da61b02f19fe688e19d07d6e1c6ec8345bf", +"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "44589224368d7e17aafe96a4d0c51bb8fa7ebcf59dc6791f9ae0ca1f9866e4d6", +"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5a4836e8abe34afa86df497a074ca5f67df39fe07eea64d0fcc52651fe0b4e92", +"T2T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "d12f9cab6649125aa08704ec5d4f81d3f8242b7f1df5b85189f58d5d20d8b55b", +"T2T1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "71f12655ac23afb1643a35cf24c40de39dd96812e755279f21d56d47ee3f3527", +"T2T1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "f7189324c47a2db93deab7d6adc9c5b43b84dd2702284b155187fc512181742c", +"T2T1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "f6227d86134020e77126500496cf12c206849fb6e8684ed6b3ee6f13366b15d0", +"T2T1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "4cd5dc48efdd640f8bc8b81a2cdfdabc80efb2a5f1a709239444be448e5c4535", +"T2T1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "dc4ea2b26c11e6794a55bfaa215d57dcfe7dc6f7159b53e525468d8f6da208bd", +"T2T1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "a18b458f15cddf544249e89804c3e1f395f346ab8fedf89fae3e108c91e96069", +"T2T1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "517a65afea1f62446106dc3a30705a5ab3520cf1620c7bf8e359a98429fb7723", +"T2T1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c6858a9b779e0d80f53cc977eef1ee404719adc2028f6478182bbf8e45fdca28", +"T2T1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2e3091bb318ccde7784d60d5b19a1d90cafa024a3d953f8d797d8de17db62e70", +"T2T1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "b30caff2c7d5bd349032f6984d7cceed7a7711df215c783a8319bfa20aa0dc3c", +"T2T1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "d6c29d331ad07d84e07bed60d5d74fc877e585f1ffb1bcf4a13c086e6d04531f", +"T2T1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "c11fcf7ace2096423eab4398066f052c2710c532f3c77150f014d1a8bf1c6bae", +"T2T1_pt_ripple-test_get_address.py::test_ripple_get_address_other": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "c114bc033609fb2d08b973f9a83a459b7ad694f976c8461cc37643877e2a16f8", +"T2T1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "3841ab5b1666a4cdf29edbcc3766658ca35214c89326e7d28bbf5749c841403a", +"T2T1_pt_solana-test_address.py::test_solana_get_address[parameters0-result0]": "382f0603272ddd4199b05cb862e3851587921c07d5f9be45c62f9cb7e2475f09", +"T2T1_pt_solana-test_address.py::test_solana_get_address[parameters1-result1]": "a3829b8e36173d6caf24de8349d803464bca7df3ecd3313d4bf7c81673fa6a08", +"T2T1_pt_solana-test_address.py::test_solana_get_address[parameters2-result2]": "0d511c4bca6c1dce6c51f75e64419f819d4bca3aeee849e6bfb817163422dacb", +"T2T1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "275befead7dc6229e003d072d6bfb3eaec18078da26d1fa15ec287e186be1d09", +"T2T1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "22c6fae06b3a853dd0166f522e54e15389d6f710e6f699363d3e22ce9ce7aabe", +"T2T1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "2c59b2c76b440511b99efc3bf418e899c4d6a39ff8c5a02921d7b432ba94f742", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "2b006a8e9380be6a2c313e4b3f67475686136cbe187cb17845e747f5c4b68ab4", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "ef5c83a2d1814a1c28cf564058d68c7c2d49329d69ed0ee0c00ed7d8fce7afc2", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "9b1862302cf1a9d9781e1cf28d5db26b01754d605895b4c112015ce2c42d0bed", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "89675ac6d2718348f2d7dc4777e6c9d5480266d0db3eb5120ee3029ef70c402f", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0e31273a0ac4a3797a0c52c21ab9e3a4acf286c228e82b6190f5cafa48b3f126", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "dfb92fc37f9e4e53c3297b6cc60ba7c12cd1449b0cb0d407f2f8fe2dcf23dc2f", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "851200237e263b0b64898d59b50059186e8c6f569a7f20d0b82bef45581467da", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "0d2d5452e175525bdce9604d5bfdbb0945e6f411b2da85312352b0f6e44e602a", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "f3b65b587d0599a523d7e35933dff28917ceb9245f6899e38625fe482b471769", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "230cbe2116a43220edd6bccaa1186f2946892007d417184af6e86b2ff9df3b22", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "5ea8c5f6247609c57795ac08a62f933fe06b0c8be510d86f068edcf10b6b9b3b", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "5b3b830ddcc1c22964c6ef4fc3c8eefc4949e083e1126780404f7bea722adc20", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "0c0685d63705f9d9d3408fc5999f01c9a70b71895d911952c897bc82f2865e99", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "f7e354037efb0bc5125a09c0a90ce4edec95dfacaede08080536f81649b0c949", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "5056b5d71da6fd6b84a203de5fb814a62b57e1d7029618d438149864ff2e66b5", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "07316404eb109cc0b0608bb022a25908898af3f4a5658c396a77890b29f729c0", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "f82c6e98b2b8e7e9677175edc7cae93469675418a8162a9c6f91843c5ec98c6f", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2c3f2ac3abb3dea78a1e903af949845725336e48bec9fc7b646222c5aca9455f", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "c058a7ba002bdaf4c618906a1a928cf8307e90b947907eaf4741c59a5c944950", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "358bfe967b147647c23d2320a642053d409b644ce62ee9ac906624b6b6afb3ee", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "40d490699f7c18c04ee5b8e1cf35cc8130158bfbe488fa2c6a918d9fc0e3a6c1", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a0c86128d6f3384059c5f0488a200f2ce8319ccef7db188a1ce1e3f13c65d1a9", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "40d490699f7c18c04ee5b8e1cf35cc8130158bfbe488fa2c6a918d9fc0e3a6c1", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "19f8150f86b4789578a1f4e6a08de18ef3dc003edf3ace1330c3e24cac6ac6d5", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "ae8973973e0164920a45ad291a9eda58785fd1f849267d16c0163dd36eb2c9a9", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "954e54793a11125ab00bba54e4f0d02e229d8ff42e5324bdf6ac2be18a0c1847", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "e4fb4c314ec5e276b2e5ba4a74d77ce16bdd41c3058763da3279b301902d61cf", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7f4fdae046309d0b2001127a705352abc2a4f5ddd57d497fe99ac7384ca7cb79", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "8fbce8ff5fbe0dc2fc607320bc0db8efb6501dfbafaeb083425e7ab68d782ab3", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "ce4bb34db93ea182485b7b8965ffa5128fbd590c157a86d60608ba66c1119368", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "dbd38acb4c2bfefc4b931836891004542943268bbb1eeebe5ebad877766e51ec", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "db23f0b7c5a79d61c45001473ea3bbf9aed5b6417299769dda87112e84fc1f4f", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "0839fd73210fafc3729c2d92aa88c013e2ecb633dc7371ca6da10db5f6523686", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "71ce2a6f25e2c5709d6b2ce90eff795af23a160708411dafe84336dd82c82110", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "8c94f8ee7942f09bf0ec0d5aad0b1a4fb1e561e9496645d56fac2da0acd13851", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "82508b3eb55309d90c40be441373f6c05dc243d5bca37deb47a895b9359bfab1", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "99ed9a2f174bd2f6b88415628c5eebd5324ca403894644239d4fa4fc575a7049", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "e9c6726b6041286feea66d23c62bf6128c90d0e19c28d7f5f17d30c97ae300dd", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "48c3ff9d8c50b6e8812b36be9b714b2f09ce1a31ee6413ba74960460f19d8d4f", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "061ba2529097234a836e1830997406f125216e4d9ca9538227dc4c274d26263a", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "805b9a1c06b8594bb92000b7b286182b039bc32be0cabd078f1f5976943a84f2", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "24a39989bd01e143b44e77265f4cf04b9590b8231b6908aac1b8647b1bab1d71", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "5593e36999e9f12b96501bd7b582261ea80158a91fd393fa1e61deb57f35f0f4", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "dcc45b633336d4b32123077b369a0ffa46c6795defc677e5d6d37f63d47ef3a8", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "83e48f1f9dc1893220af4888e3ff7c3bde33e4905495b04c9fffb6cd4f26d228", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "205135a79a1d285bc12b6b768a828eda1892506381f7e2b2f18db913e9064876", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "5d4c335882dad4e4bc5849510d3163aa9bd40fb1de0f877e8c5feca713e9868c", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "92a41257ab9c07eb601236df30d36d139fb65737277c780461f1eb98a8e426e5", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "28949b692e465180f33b97d3642ca730b354719928c895d1a7c0b77bd280b376", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "9ee38158ea89ad22b9f20d08d6ff8807fa0738ac478a3a6f5e29289327e3ba53", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "9941961e08695a0f8c04ed3fc74e49c4f28cc464d98f8306f837ef0cedd84788", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "6900d0fdfa63c0c2fa529ca7c53013b2ddee4f53665b8566a0f39366a0978ebc", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[split]": "0c139520c12f4c4c0b8fa1492943d6a30ab7bba8930a96e03e4c40685dc483f3", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "cc529fa6bf01f9b2e6335d4d288e5c5b52adffb643eea56d89409873b1395683", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "16617fb377c57f40a7c219c3e1a56a3b8728da609d4965f01d9a95803e9a9208", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "54cd4ba86a31ca1681b31d4bc5f166f5423c2b7036eefde7254af98dc06c8390", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "d7e8b657e128814bf335d0f11e1b31e5880674b988c0dfa8dd8ca056889934ef", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "4915d117fb3688672a68022788f0cfb5bc5b96035a2c35784bcc9e8492982bb7", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "19f740f5f8396e1d228691dec596cd5ae7fea45d1f163084ded6138224833a57", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "2669a63ca5f337639cc44ec5c64173665af1ce5ac8baee9528b7d47852e9bb15", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "954e54793a11125ab00bba54e4f0d02e229d8ff42e5324bdf6ac2be18a0c1847", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "62a05ba5b8484778a1e460ecd9b795183dc4815d722f5ef77b454305a5964d00", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "a5a8b85d7ad569851aa41ac1e8b36a3d9845e98890a0cf3fb8d31639bbd83f8f", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "f33ef1f0849533f5b9f99ede1b69aafba1e692982dcd40981be479c97d0db76c", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "b491c21387ee9b59505cadb4a385504559de7da4b6673914a298e38f28b87faf", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "8fd29c46d6a8eac3679f03a5d7e3150498eb966cb9368c7c0533cdfa21447d30", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "37ae0e77706c4cc8c33962d1ca7381a265178bbeb9e1cf751d27d7b9335ea4e2", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "f730826363a50348d95210c88485294e22db885e0ecb251cc2a21d450da2e0bc", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "107ab1674f4aca692d14d1f1f6d96f384be6336e645a3ccc6d7c3e58f399fd77", +"T2T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d2cd2a2ba61126dac56a83e26a4b3093a1ca377cb7d79a1a319858e5c046e0de", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters0-result0]": "934175f7b4df5700a7532265b9a3a244a69bbb6e796ba26e4394b004f99b43c3", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters1-result1]": "a2b8900ca81e8a6ca9744d82500aefd2d076a99a6ec75edabce7af51545d1a1e", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters2-result2]": "93dea7452c513f3c2daac26a357daa189a5e00507d92cd32fc52b3e82ae4229b", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters3-result3]": "716ca4417721ef2c1470f4fedb6f2d65199701622bb1e7c0b0446314fc6e8aaf", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters4-result4]": "e7470e78cc005848ca4726dbd8d1fe90a96076aa22b1d75e3c034fc03241c428", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters5-result5]": "bbf41fa426f1e35686b455d862d0e6e0320561ddb1f4654f87b7ee8cf440b8ee", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters6-result6]": "0eb54d91117325e441590346b3b54866849634eb9748230fe9b093a06ba74bb7", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters7-result7]": "d9a0ece700dcd0ced62e200cba041fe231d7548523cf006b17e81bcbeaacdc78", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters8-result8]": "3105106a8f1ac6c8498c65139105dcf24da386cb6b7bf9ebbe2ea9e4287a58b1", +"T2T1_pt_stellar-test_stellar.py::test_get_address[parameters9-result9]": "009835b721190c0ac60bb9ee1e5f4b96a43ad16c5ce96bb8e07afa28a9b6e069", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "cdee3103be181f06547acf877bf8166d83e3afc64293550b8bb0f447f636eb64", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "c1d755859056470d12360dde40567c4ef7b5062a3dd21cf6513fc3fba3f305d6", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "b6038af70a02212c6684fe0150a0a52f07fab7d9dd95e9a75351adf9e06e74e2", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "e8ffc0a33e0475b06fd74021d4e971327d074adb48f65a377c8139a5cb52ff54", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3909e5bbb3a940942828a1c43b575230b43c4e96cdb4da0a0a954e3c325316db", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "934274527764324e8c79b9ba0e9d04ecc51333d1354716a2d96b6f5df884243c", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "b0ad7a309e13ea9afcf7b7914183ca5b2dd64bf019a52eb4bd15fbfe7ed10f03", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "669c60dafc79173603627a746ead4fe1c4af9d13e037113ee6e665bbab7e74fb", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "fb7b3976871745c9e9a0c79f90bd4810b128ddce1e87bb6c74236b3d790b11e9", +"T2T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c8650a190c809017a39a040eb9e7633df67231b98ea4aa305294f4a9dfcc6353", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "6646a96711791bdb203f2129ebc58d435a2d7e0ae6a23b3690d181bcb32dfdfa", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "90c93047152838295f5047b06f0d5649b7a5598a2b1b6f5b3f55d57463afee29", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "935bc2881109f1972ea88e43cdf1b9aa9490f5ae7c84ac6206895df9e54602b3", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "02a041bcedc08f484107ba2bdf7fd3e2740a16c61904e40c249a07a5de3ae186", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "140670155a529e7008faa750eccae2d5588ca131c708ddda4fac95f86d1b07e6", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "418474cb7eb82d5d30f8caec4da33e8845e2b8b489f6b1069739fd3cb7b17990", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "5277e80a4d62012ba128cc8ddf0b284ec0af534ae20739934c9fb4102ed8b73d", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "30c8fcc5b9d3f27d812fd7f029b7739ea69d730e0c20c2b98b686b7608c3bb4d", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "cc78f3fee511e5323290cd865a58af921ceb5c1ed469465f9e77e26282a19dab", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bccdab2fbdae70b643f102d6782b42967fecb0eb139610b2ba5cb651f0acd60d", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "d5f2d7c527bcc47e0131cf69741d351ca9efe12cbdf8cfd353868168060a8217", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "a7698af347f288514476823a60f797994bb38fa9e72e1dec06c3224ed195a1ee", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "c473f76896d45cb2c075ddea4ed0ec1d91acdc8619f57b96fd0bfec8a2233271", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "4ac3c9bd4cd2ed1c8ed204bd131ac19cbc8b6a8ba96bcb2ef640f65364e48a56", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "41668c6fd991d8f5245bbbc18907fd259b90c94190547b01a6fea94b35f61a88", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "e34dd511926d731e82d5fc6a5149ad09a71d2622cca2ae264e06aab04772d1ae", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "612a27b4ff16a0be9c41ae3d0eb1a616822b21cd2ccd7663dcff7ba3b4af5dd2", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "5d4f9722dbf644cd4cfa411fee13ebea97ea10ef74daf7984cb2ef6a5037927d", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "7a49937de758d30a35725970e3858e67efafac4389c3f06b31dcbea18a6e5b0f", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "18f92ff99f43f9e8d6a7dfcdd703d9d4e4b1522a61c89fbd555b513b6776f6a5", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[memo_hash]": "0170750d8524d0a1fa8fb3d3c977e9460a691d5b35d350686dc109b0642e240e", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[memo_id]": "aa03c9c07d978bbafc75009e0796ac4769c9d167cd25ef5fe07764604ed1d440", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[memo_return]": "c0391c68022d6f2cd83d432c969a1f9d837d0b719fb1cb9caa01b40abb14ed28", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[memo_text]": "935dddc3781f8d101fce10b40014e8d0ebceefd9dc6b44f80dfda1771403fe5f", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "6318de903f538d1f6fcb27f992809f0bc5c4c101fa13d7bc3f1802fd320b647b", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "6582d20d83c5549c27a30506d44fc2e50e2c187fcc10893efef33d3340eb71d4", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "8b1a186306095a88be10dcafa6e36bdcc098503b9eeec8e387c2caf07d80cdd2", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "4a3c934a6d6f951a5b0c4898495152bd5f2de65f408a3a155a0838c9ddefdea8", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "20779f9ee929acf8ce2c072d20ba7eb4749da8395872fb4816ee20b668481398", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "612a27b4ff16a0be9c41ae3d0eb1a616822b21cd2ccd7663dcff7ba3b4af5dd2", +"T2T1_pt_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ba6dfb7ad2641c81e9e19fdb81abfdea1a7900c893b3400dbef32f40d558cedf", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay": "3d4f8bcc2fdc05f90566b3682f50b886d9e80148bc5c3b2b5bb40c2d4fc1007d", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "9ad3cc161d50cfb12ab71d83b15f6742108a8649f0b2be9e338b725895969f70", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "a953f98708ab59a23966832366e8f57e308a930e3ade2e84eabea4b75bd87133", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "0d7afb60a7d8397b20c0a7577f6dd9bb2a79c0e4a74264cddc4b42306089091c", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "4ef581210ed97ff635cb9fb4a2374501de34a8dbe2f7e8631970371d2c66f048", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "23974ec7ae311ca87e5a0f04ea28956945e989b886a4c048584561cdb875999a", +"T2T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "d7b07928725b23789812892997b6321c0bc22a7d94c0809ffe064ee69d3cf215", +"T2T1_pt_test_autolock.py::test_autolock_cancels_ui": "1bc67dfe225521842aac3db9d8381c5631a307dc6be843f0d3122e0f552b9a5c", +"T2T1_pt_test_autolock.py::test_autolock_default_value": "0df19ad3170610d5351e9900b3accc65878f78e52d02ff11fab815e7cc98f201", +"T2T1_pt_test_autolock.py::test_autolock_ignores_getaddress": "7c2e73affb8a846964f8505989787d1ea0fca99add3ecebc29dfee2ae864793b", +"T2T1_pt_test_autolock.py::test_autolock_ignores_initialize": "7c2e73affb8a846964f8505989787d1ea0fca99add3ecebc29dfee2ae864793b", +"T2T1_pt_test_basic.py::test_capabilities": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_basic.py::test_device_id_different": "40f161ea5e3c9458597ec4c55e8e66aa3f3b8df78e566e3ca54a1c9fa15f974d", +"T2T1_pt_test_basic.py::test_device_id_same": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_basic.py::test_features": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_basic.py::test_ping": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_busy_state.py::test_busy_expiry": "9edbddeb4206a77439e798f298d90f1d5d764865a2695bdc735eed54b8fdfe53", +"T2T1_pt_test_busy_state.py::test_busy_state": "f39f679c6fc89c2db6e4816b7032818932739c83c3ffda11b35fca3075325a4c", +"T2T1_pt_test_cancel.py::test_cancel_message_via_cancel[message0]": "4a5b06d19f1584210fd4ec6f72dec302144d96f8db45649b9fff1b65def4fe1b", +"T2T1_pt_test_cancel.py::test_cancel_message_via_cancel[message1]": "199555ac3f136ae37a49d9171be0a07d3063caaa65a203e0053376b5623c0ad5", +"T2T1_pt_test_cancel.py::test_cancel_message_via_initialize[message0]": "4a5b06d19f1584210fd4ec6f72dec302144d96f8db45649b9fff1b65def4fe1b", +"T2T1_pt_test_cancel.py::test_cancel_message_via_initialize[message1]": "199555ac3f136ae37a49d9171be0a07d3063caaa65a203e0053376b5623c0ad5", +"T2T1_pt_test_cancel.py::test_cancel_on_paginated": "98dd8506ea1d3170177d35b8e254d7a9f7246913e8be7a0b5f85e8d8543882c0", +"T2T1_pt_test_debuglink.py::test_softlock_instability": "66b9a598bc33936fec590249c59f1a33cccd97b028b2acf4b4853c3013c425c0", +"T2T1_pt_test_firmware_hash.py::test_firmware_hash_emu": "394b93c97b6ff96be6e2316a250f1fae097f9f5f7161d49c1ad11c77c7c03ed3", +"T2T1_pt_test_firmware_hash.py::test_firmware_hash_hw": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_language.py::test_error_invalid_data_hash": "4e5f5958978ad3607b254d5d2eba4f894c4dc446c38b5b2d7d4ccc8718fcbdfe", +"T2T1_pt_test_language.py::test_error_invalid_data_length": "43824504ed922d38ab0e9a66fa1f89135b9f27dbd43ec4177e3dbbd1d682fc75", +"T2T1_pt_test_language.py::test_error_invalid_header_magic": "43824504ed922d38ab0e9a66fa1f89135b9f27dbd43ec4177e3dbbd1d682fc75", +"T2T1_pt_test_language.py::test_error_invalid_signature": "43824504ed922d38ab0e9a66fa1f89135b9f27dbd43ec4177e3dbbd1d682fc75", +"T2T1_pt_test_language.py::test_error_too_long": "43824504ed922d38ab0e9a66fa1f89135b9f27dbd43ec4177e3dbbd1d682fc75", +"T2T1_pt_test_language.py::test_error_version_mismatch": "43824504ed922d38ab0e9a66fa1f89135b9f27dbd43ec4177e3dbbd1d682fc75", +"T2T1_pt_test_language.py::test_full_language_change[cs]": "d4ac45452964b49e2d25ea7ac6901a05dae4b9c3cc7bc87a4c79c33d5a2d5de5", +"T2T1_pt_test_language.py::test_full_language_change[de]": "c87fd2dfe6d1334943f9fd540e3668650aff632de93ce43508f6285d36ed6c61", +"T2T1_pt_test_language.py::test_full_language_change[en]": "84c2b2c1bb47bfe3fc002a98f573058a5d30a0d0f70cbae8035058e5bf48d20e", +"T2T1_pt_test_language.py::test_full_language_change[es]": "ae7ca384ff9ca4928b41bd5782748712f60dd96aacd0bff93c19bbcd5eafd71e", +"T2T1_pt_test_language.py::test_full_language_change[fr]": "71abcf5dc8753c88b5730e06acba8a244a0f8895c9e0579cdf7cd16c79d7f1dd", +"T2T1_pt_test_language.py::test_full_language_change[it]": "0bab975827d5556021ccf5512a0e58c7763aec8148e85ffcc2e7f96f4240b532", +"T2T1_pt_test_language.py::test_full_language_change[pt]": "7d2a4e025693cd15dae8ced4f41bf45d22a2be3b24bc7298954b12077da8c67c", +"T2T1_pt_test_language.py::test_full_language_change[tr]": "a08e8f0780465dcc0c2c29b031e74385016e4b79ee3530469cca037e0fba75eb", +"T2T1_pt_test_language.py::test_header_trailing_data": "dd307414580838dc6fe95b2b06fdd3c44715e4bd15d295a4da29b8602eba988b", +"T2T1_pt_test_language.py::test_language_is_removed_after_wipe": "9b392e9fd62ea17352cb651513404cdf8fb5823983fd801076ec7060382dfdfe", +"T2T1_pt_test_language.py::test_reject_update": "d9a7d6679bd13701748099307097692d4436598c1b612f8ae6ef1c93a0b71c06", +"T2T1_pt_test_language.py::test_silent_first_install[False-False]": "89ab01b9188adc9e5e491cd9e3f250e993cecfcb2fbad4b88eac1d5a41e3aedf", +"T2T1_pt_test_language.py::test_silent_first_install[None-False]": "89ab01b9188adc9e5e491cd9e3f250e993cecfcb2fbad4b88eac1d5a41e3aedf", +"T2T1_pt_test_language.py::test_silent_first_install[True-True]": "c9da61a59d63c1c6b9711a287f4e355dc672bfc52ef9274e4b01ea3b59f6b2cf", +"T2T1_pt_test_language.py::test_switch_from_english[None]": "d8cbfe67f0a702d7b727291c338bf72bc7e6e5977e449d3bb3a4dd5c02358ff5", +"T2T1_pt_test_language.py::test_switch_from_english[True]": "d8cbfe67f0a702d7b727291c338bf72bc7e6e5977e449d3bb3a4dd5c02358ff5", +"T2T1_pt_test_language.py::test_switch_from_english_not_silent": "805f0106a21c882f873a091b42a4f319053907388fcfd2315cb36af01a533c26", +"T2T1_pt_test_language.py::test_switch_language": "980c7bed43b4f32cecb282943bc618ec390506bcb054a3af29d6a50f655882f5", +"T2T1_pt_test_language.py::test_translations_renders_on_screen": "99c786c7b5dc7104a2c231b7eb6714bcf9668627406d80df6a597439afdcae98", +"T2T1_pt_test_msg_applysettings.py::test_apply_homescreen_jpeg": "a8843e9ce24c82c7f281cbf38b3b49efe7e50e34095b82540cc4aaf1a45c248c", +"T2T1_pt_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_msg_applysettings.py::test_apply_homescreen_toif": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_msg_applysettings.py::test_apply_settings": "b2d343fc17854944e587c3d4927824ad61ee84a8bfba075f8322d2c4761be7f8", +"T2T1_pt_test_msg_applysettings.py::test_apply_settings_passphrase": "c909d1fab24f12383885d4e306bd6eadd0f5c2f1ac46d4c0cf94770ae304dd2b", +"T2T1_pt_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "26b3370fb41d85e63221762c29c128530dfe518b9f71ac135f61b26db85d07fb", +"T2T1_pt_test_msg_applysettings.py::test_apply_settings_rotation": "4c5536bd988a75027e05aeea65776a060c16e7ecc8e2b2ec3b945ef385200d39", +"T2T1_pt_test_msg_applysettings.py::test_experimental_features": "25e89cdd34c4042d873ecbdf80a71ecefd9400e6a1ffb37c36b4ef12ac491572", +"T2T1_pt_test_msg_applysettings.py::test_label_too_long": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_msg_applysettings.py::test_safety_checks": "b3ac4ee6333805ed8475a0fe624f00798081fde7a7fe02c65bb2a479097429bb", +"T2T1_pt_test_msg_backup_device.py::test_backup_bip39": "ae29c41f4266b7bea407ce4628306e5c4f803ef8f6e14d8412b2a6404b217cf2", +"T2T1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "c32a02f72a4f7225d277ef8776a58a4ae1e43d43bc6a819faf45f561c8ad1d56", +"T2T1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "55ae0fd5be05a85d9c10b0d32657200a8624bf240b059217eecfd59e8e2eb439", +"T2T1_pt_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "4549c8d4fccb2b593a41222736bb9ae22e4338f8d59dc105f5499f00170256fc", +"T2T1_pt_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2c8bd3ada5ac9327360374057702da96535af415f7b0378f77067bc584e44ab6", +"T2T1_pt_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "f9dade69e0142d122b5bec327e95d1bbd7bc2f850551111179eabbef352e7711", +"T2T1_pt_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "2b6934a16c38f96ec27d1569c12e752155ffde0b7d6ad5f17c2c1ecc0ef6e768", +"T2T1_pt_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "08d6cd2533f6e21b923baf728cdcef53d25ca70e9083a5772cb9f880854d8294", +"T2T1_pt_test_msg_backup_device.py::test_interrupt_backup_fails": "255946300e0c2ef3dd38d45bc4d92a0d9cb685514ffb920bc68aa3bc15c0f691", +"T2T1_pt_test_msg_backup_device.py::test_no_backup_fails": "613c6199ddab44b3cf8ebaa67581bddad2453155b48f43d463f025a8fa1e6268", +"T2T1_pt_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "97292ad72f14e69d8c69056add86f8fc2c949fd587ca61cc9d35679e6e3cd026", +"T2T1_pt_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "46657842c2d25eb89b85d7cab3e48a2acb79f8da4095126ecbfb7e899ecb6fa0", +"T2T1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "69c24cc1d89010ea6845e4d8f4db2b625ac6667d1e02bc130c12dcdf53478c84", +"T2T1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "a1d1f46c33a6f39dfdd50fbe24f2945766c70760a9dcbb94e2ae8d52f567aa23", +"T2T1_pt_test_msg_changepin_t2.py::test_change_failed": "9c8bf36f6c0cad279f659c4b6c67ba16a2cafa5b03f110ab23d751d621975730", +"T2T1_pt_test_msg_changepin_t2.py::test_change_invalid_current": "971200a44d4cb5d945865d3126c62c96b78e6d47b1c93de3175499b1b75a838a", +"T2T1_pt_test_msg_changepin_t2.py::test_change_pin": "c416159fb909e2503ed6899fc27624dc5b140d119e2e1df16f85fe63fede4e34", +"T2T1_pt_test_msg_changepin_t2.py::test_remove_pin": "7c3fade6fcf59af2fb0d802b5293907dc6b487e96ea4814d9867c2f369f57a40", +"T2T1_pt_test_msg_changepin_t2.py::test_set_failed": "abce58da2b6e0a5672233af282fcd501a1f509b2fc21c75948d0c1a832f66866", +"T2T1_pt_test_msg_changepin_t2.py::test_set_pin": "cc6c5534e3f95d5611248cb8ce2de2ed0aef2fd9d1efcc31716993f1c1a8dcc2", +"T2T1_pt_test_msg_loaddevice.py::test_load_device_1": "0fe81796aacf06f592044e3a8027646f57340bf5182af38ba03afa087d8f05ed", +"T2T1_pt_test_msg_loaddevice.py::test_load_device_2": "d83d8430a83a19206c4600cf7187dc821b1dbddcba975121453427b4889165ab", +"T2T1_pt_test_msg_loaddevice.py::test_load_device_slip39_advanced": "0fe81796aacf06f592044e3a8027646f57340bf5182af38ba03afa087d8f05ed", +"T2T1_pt_test_msg_loaddevice.py::test_load_device_slip39_basic": "0fe81796aacf06f592044e3a8027646f57340bf5182af38ba03afa087d8f05ed", +"T2T1_pt_test_msg_loaddevice.py::test_load_device_utf": "b90dedd47f9bb3a6a92c5a88d28b15506c6c17f899d4a5a2877d8f3c67f00d9c", +"T2T1_pt_test_msg_ping.py::test_ping": "4a5b06d19f1584210fd4ec6f72dec302144d96f8db45649b9fff1b65def4fe1b", +"T2T1_pt_test_msg_sd_protect.py::test_enable_disable": "f267ee4e6a2d8b215833e6c56a9dbe0ff0990cb4b0951d5997a702f1b9fadeee", +"T2T1_pt_test_msg_sd_protect.py::test_refresh": "8a73196172c0ad73980376376b3dd1973adcb1f74ba2676c8a0682e439105310", +"T2T1_pt_test_msg_sd_protect.py::test_wipe": "2d21fb82b4e4d658dbb50cd66da42f5f7fb0bf9760769166985140eb370b4c4e", +"T2T1_pt_test_msg_wipedevice.py::test_autolock_not_retained": "ef06a4d1cd679ca4d3803c79d41f851682c86a592311a21ccade465e01cd3713", +"T2T1_pt_test_msg_wipedevice.py::test_wipe_device": "40f161ea5e3c9458597ec4c55e8e66aa3f3b8df78e566e3ca54a1c9fa15f974d", +"T2T1_pt_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "90d7f91837f20ccce299e75b17af4579dee55bd51e86f47e3dda3baa02c348e9", +"T2T1_pt_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "90d7f91837f20ccce299e75b17af4579dee55bd51e86f47e3dda3baa02c348e9", +"T2T1_pt_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "91a54746917b12c3f233017dced20275f120c49baea862fe99adc0e96fb210d4", +"T2T1_pt_test_passphrase_slip39_basic.py::test_2of5_passphrase": "91a54746917b12c3f233017dced20275f120c49baea862fe99adc0e96fb210d4", +"T2T1_pt_test_passphrase_slip39_basic.py::test_3of6_passphrase": "91a54746917b12c3f233017dced20275f120c49baea862fe99adc0e96fb210d4", +"T2T1_pt_test_pin.py::test_correct_pin": "2076121c584753eba9c29779cebd31e138cd8570b6870a25e80488854226c319", +"T2T1_pt_test_pin.py::test_exponential_backoff_t2": "47e3be79195442b3ef6e1b587b2d157cc2a25b4a5cc775ea2da67304ab4fd587", +"T2T1_pt_test_pin.py::test_incorrect_pin_t2": "bc686c9c5de9d84c8808d904683f408ac42c59181e2e58afaf8e5c70f1a8f44a", +"T2T1_pt_test_pin.py::test_no_protection": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_protection_levels.py::test_apply_settings": "ea76bc117749920bc21a6640163a2a1a4f766183a3b25af57a1ad27918828882", +"T2T1_pt_test_protection_levels.py::test_change_pin_t2": "fcb16b9a88cc1a36d61ef5cb91fa52ba1a486a2c59fc5d8decbb2f3a2620cd8b", +"T2T1_pt_test_protection_levels.py::test_get_address": "22ac6da4b28c91f687112d4af1689443297cf2165c8b91e5c3c242adfb0b865f", +"T2T1_pt_test_protection_levels.py::test_get_entropy": "18a13b89095b3c8fac70c808928f4e6bb7e87c9e47293ba5bb146e0cc3a38d7f", +"T2T1_pt_test_protection_levels.py::test_get_public_key": "22ac6da4b28c91f687112d4af1689443297cf2165c8b91e5c3c242adfb0b865f", +"T2T1_pt_test_protection_levels.py::test_initialize": "5f79addd2c185c5b7a243b9a8d184b0b8afe01b9a084bed1e656ba9be1dfa51b", +"T2T1_pt_test_protection_levels.py::test_passphrase_cached": "0b85ff0a0a74ef610c90483f50d66c84cea457175961b7f28565dd77ad3cef09", +"T2T1_pt_test_protection_levels.py::test_passphrase_reporting[False]": "eb2d99d0e2ad48238bbb150d96069fced1f755b336b3785942e2e301627e4982", +"T2T1_pt_test_protection_levels.py::test_passphrase_reporting[True]": "fbaa93ecd0b7388af9caccde40c33454310002fc96e5989a0c1b766047a2530a", +"T2T1_pt_test_protection_levels.py::test_ping": "4a5b06d19f1584210fd4ec6f72dec302144d96f8db45649b9fff1b65def4fe1b", +"T2T1_pt_test_protection_levels.py::test_sign_message": "04206e17bfb78036aeef3f640183429781ef131fcb06a53a7a5b4216666d84d2", +"T2T1_pt_test_protection_levels.py::test_signtx": "72bdfe4e2c6342278ba92867b3716115011cfc78875872cd79e8a772d2369593", +"T2T1_pt_test_protection_levels.py::test_unlocked": "f759e061244ee0e6adccf6a5bc0e74bc2847c217453941d38fa4336f4b9b4cff", +"T2T1_pt_test_protection_levels.py::test_verify_message_t2": "f8e4595aeedba34867d2554b91c7c624e481d3934fc1390cccf2a0740b071480", +"T2T1_pt_test_protection_levels.py::test_wipe_device": "9f68e9eb1d0507ded2f9957f2c279b8c5de74ca8d6ac7074926f74d3742cfedc", +"T2T1_pt_test_repeated_backup.py::test_repeated_backup": "4bf22dc1d735eb5afc55fdea0b57e6564de255a5d4907adc91140cf01bdee250", +"T2T1_pt_test_repeated_backup.py::test_repeated_backup_cancel": "bb6e269f72eb57b10e3c066701b68503027d15ea663c0b1250b6473092823a13", +"T2T1_pt_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1d6eb05fe7639188519610fcc913ebb4e7e6eb050eab8d81ef8a11dd96f056ad", +"T2T1_pt_test_repeated_backup.py::test_repeated_backup_upgrade_single": "55da993947a7c4d576570083cf40486eb68a964beba52c9535afaff7573157c5", +"T2T1_pt_test_sdcard.py::test_sd_format": "98d8c86328c9b26f6a5b8f2509812e1778e86075a7970f2f4e4598de29764d8d", +"T2T1_pt_test_sdcard.py::test_sd_no_format": "f8c447cfe883aa949f1a12e6ba753e7419f9a4251caa0ba40ff3e7d7bd2245e4", +"T2T1_pt_test_sdcard.py::test_sd_protect_unlock": "504d4914c3d410450ff0ee73b059aae4b235b7b7851ae50a7a1c8dbdbe0b4a27", +"T2T1_pt_test_session.py::test_cannot_resume_ended_session": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_session.py::test_clear_session": "8b8878edc6f2006ffa326259db79989265e2002bd0b071018b813bba6d98cc42", +"T2T1_pt_test_session.py::test_derive_cardano_empty_session": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_session.py::test_derive_cardano_running_session": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_session.py::test_end_session": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_session.py::test_end_session_only_current": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_session.py::test_session_recycling": "91a54746917b12c3f233017dced20275f120c49baea862fe99adc0e96fb210d4", +"T2T1_pt_test_session_id_and_passphrase.py::test_cardano_passphrase": "03b2fe788212d7055b86de728c9b6ff4bc4df2e7d79a6e060dcd19ca545e8216", +"T2T1_pt_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "c652657c4ccb42f8c81c4153dc5d43476f9919a0908fa015c3b1091bfd37dfb7", +"T2T1_pt_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "0b68707c602dcd538af6d1a10832c85ffb332936f71396552975666fa6d95fa5", +"T2T1_pt_test_session_id_and_passphrase.py::test_multiple_passphrases": "bd0a9f0868482eee3937b2b76f359da59161840b80556173548c3017920cc974", +"T2T1_pt_test_session_id_and_passphrase.py::test_multiple_sessions": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b3f51a949357802e6cd8c24f3deedee6c8ed7faa048a62ee38d29350d56147f2", +"T2T1_pt_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "c7aad89b3acd80ae58f5f11a09981bbd7666c9933e829fee2522c5e88cda61c4", +"T2T1_pt_test_session_id_and_passphrase.py::test_passphrase_length": "c7e7d6d9f97c7b8c00c049101152bc48cbd7ac81b51aa3d73d7e48b65d40dec8", +"T2T1_pt_test_session_id_and_passphrase.py::test_passphrase_missing": "0b85ff0a0a74ef610c90483f50d66c84cea457175961b7f28565dd77ad3cef09", +"T2T1_pt_test_session_id_and_passphrase.py::test_passphrase_on_device": "7e28cd8e15ad0e66cc953c4ddc7617954e387443b47283f68d37e49307feaa63", +"T2T1_pt_test_session_id_and_passphrase.py::test_session_enable_passphrase": "1506030cc68eae1faf100b9038cf2e9dfbda742cda2c47c560c7b370efe70e0d", +"T2T1_pt_test_session_id_and_passphrase.py::test_session_with_passphrase": "e89cf64d8640bdf532bcb640925aac30b08fa50ddff4ed580f4a63dead3ce783", +"T2T1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "cd65d7d1621347d09a28c5ecbfd31c228f986aa2034f2ec7e7a46a6a39645242", +"T2T1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "8899022409e59062a08c5363cd07bd8fe1c61ef693ebd437fa3f238ddde5e310", +"T2T1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "87b4f495b20956d8974d1260df04e7bb4c286dded86eeecdfc53d78c1dd4610f", +"T2T1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "8dece13bf1fe24b9a212e3d36319b9e9c313bdc54b591b3a1118bb60ea7ef449", +"T2T1_pt_tezos-test_getpublickey.py::test_tezos_get_public_key": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "c7956d9d6bfb74acc68a2db9c8e78d4f2f4f837dc49b776409dab7ee84845bd4", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "d3767ad5d37cac3452ad0222d9c250a0ffae530e8b30e38b3cfc20bcf4e4c7be", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "99c68a3f24ddf40a0c3120b2522cb2df31ac5484c25a6c939a9fc4966ef89e00", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "c4fdf9f6192695d50541d6614cc5d53a8225108a1a6f3df0716d99ecfff4f413", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "98c289caa89166cf2992f40d51559ce50383ffae4d86f768b918037b422cf347", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "351939c6ea35fb1c832d5cac3045944227bf4a2b3f05f6b5fb8922201bc69aa6", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "81c36bdd282c79261368ed0a98e28b4c0be256b53633e2cf4c061794989c2bf4", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6e106294b22d4b3f98532be915a49d787f4f3d9b176c896e297f08eccc6c1617", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "827812fa73c795e1bed435810f19741b85f2d9d863ac6ac1e4cd22c778641036", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "2e305dc3aaf9b139708a693225979801a1399fe7e8748ec6ee94916389872fcf", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "c540a56216e418310cf392a36d09a81479bf6d87a30859e97a2e65cfac02b2ef", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "a677093a589a20e956dc1852381daa48f142b896469fe692097ac104ef2b9b2b", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "aebf748fdb635abaddaf298cec8ed0c45f2c575ec8b12d180b7542b179d0f94f", +"T2T1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b31f00fc6b366620c9a8ee9d211334273a736772dc80bbffda11905f62ac7acb", +"T2T1_pt_webauthn-test_msg_webauthn.py::test_add_remove": "c76efc71d5092385e9484500dae411bba237fe88b0e9042ae72ed4fd23d4b637", +"T2T1_pt_webauthn-test_u2f_counter.py::test_u2f_counter": "fbba30c2367d2fa1aa9548d856bcbf744d70feeee90254692955a8cd88619501", +"T2T1_pt_zcash-test_sign_tx.py::test_external_presigned": "67dbad43bf4f831d60b3480dbe73dad0aaf89b8def6366c3fd862b0244fbd7c7", +"T2T1_pt_zcash-test_sign_tx.py::test_one_two": "3c468e25ba01bee6f1abbc2b13c8b3ecdef2306f00cf029d086f621e7ae7b575", +"T2T1_pt_zcash-test_sign_tx.py::test_refuse_replacement_tx": "28e4a5e66ef24944a046e051b6dc627d64c8c87bbec24c2166c0b2c6106723c5", +"T2T1_pt_zcash-test_sign_tx.py::test_send_to_multisig": "c53104b70655777e294cd076bdeaeb1a1c8d6168a52f40119ff3653ad050f8ff", +"T2T1_pt_zcash-test_sign_tx.py::test_spend_multisig": "825cd02f467e6f8d1cde7b69098dfd676794f5f2d6598077fc15f985576d7b90", +"T2T1_pt_zcash-test_sign_tx.py::test_spend_v4_input": "e4629b8a724ea869e71f479ba2cf45e92e5ecca83513d76a54a44314409c045a", +"T2T1_pt_zcash-test_sign_tx.py::test_spend_v5_input": "463dc9222218a3cdb60517d0798e7683082109f3a017adff7ca046eb47c8e583", +"T2T1_pt_zcash-test_sign_tx.py::test_unified_address": "b2871463178cc1bf1b04a85a5d7b30c8a69c609ff4b431a3630fe9acc828a332", +"T2T1_pt_zcash-test_sign_tx.py::test_version_group_id_missing": "cfdd2ccc152d7e4f264ada3660cb3d993ef832b5e56ab3d9ba39788201fa6903", +"T2T1_tr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "4621a47c5167d7c3316726554f07dc7076c4a278efc53ea1cef6160b88ef6f13", +"T2T1_tr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "60e567743bca53922b5488ff4c68b643fd5be39999eda7304b227f27ec5bf878", +"T2T1_tr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "e0f241777c538114016c7d84f56c3bd4edc04b0992a7fe0f01b63a0e0febcb9b", +"T2T1_tr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "c52ea514f72540e1415cdcfb6603fea7dfc1046cb1f02cc0d48930d0dd635f5b", +"T2T1_tr_binance-test_get_public_key.py::test_binance_get_public_key": "10cd1adaf23a52678c264046b9097f7f32f56a42f077c7bc49f6b10cbea4dcab", +"T2T1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "3ca1603a8d1c1535cccab1ed81a6bae1f0271b0241fe2c84f8e6578ae35e3cd6", +"T2T1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "e42c8cd00e001f0f7ba99be249f9e6964cc30457eadc009c050b0ae60e0a20f8", +"T2T1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "18ce692ff8b259c8de0f3cfaae2c493f8fe7beeb1eea00f235ca5989016d1c62", +"T2T1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "3ca1603a8d1c1535cccab1ed81a6bae1f0271b0241fe2c84f8e6578ae35e3cd6", +"T2T1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "e42c8cd00e001f0f7ba99be249f9e6964cc30457eadc009c050b0ae60e0a20f8", +"T2T1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "18ce692ff8b259c8de0f3cfaae2c493f8fe7beeb1eea00f235ca5989016d1c62", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "35d71126b6c1634062bf602e50fbcb3deb449b76cc5505906f045a69f400edf5", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ef09b9b69daefa5f0e35f962a54693b7cb1998d9ae4e994f22cae8824d5b9b0c", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "2a5bc53607498c130aa20b2bf7df38b8648160d3ee4f6b6573d6ee12b5eb0835", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3b64658b530b7862b90119645de08d9fd0a347e46507456af10f45efb5ec539a", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "9fbd278d046b10823a4cd2e4eb07d520b0d443c5f0ea4c07d5f26ee939581a91", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "9fbd278d046b10823a4cd2e4eb07d520b0d443c5f0ea4c07d5f26ee939581a91", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0aaeea366060af64c25450800e9d26bdfe1a65efa8ceba6fca9ef897a71bbcf0", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "e774bd5fdd43238d19991ec1fcfab1b254674ff596461ce29a0a291c0fee84ba", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "61c5952e0680d61285f17ec0d4cca73831522cf3c9faee491a752633bff5c4f3", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "fba65bd61212a6c0beb65979128144366bacedf17b5d330a2cbaf772bebf2284", +"T2T1_tr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "fba65bd61212a6c0beb65979128144366bacedf17b5d330a2cbaf772bebf2284", +"T2T1_tr_bitcoin-test_bcash.py::test_attack_change_input": "561cf7880083e6e1228f91423ee7eab20162bd6134934c9c7450546d92978689", +"T2T1_tr_bitcoin-test_bcash.py::test_send_bch_change": "561cf7880083e6e1228f91423ee7eab20162bd6134934c9c7450546d92978689", +"T2T1_tr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "0bc4c0ee7ea48b69c77803d5f291f4c6a20d09a4a245e64e31a9c77a0332f1ff", +"T2T1_tr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "231283c1eb8639b1904465b1b822bc6d2e1a872bf4d80741dd9bcc61570bf897", +"T2T1_tr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "1fd2cdc94fb892d8698cde28c8beaa7cddb7c9eaee989c08a928215ffdb57340", +"T2T1_tr_bitcoin-test_bcash.py::test_send_bch_nochange": "5f451951c813845d1ca236f29800b9cacf7f11d0e805e1ecec1d7325f7e4952e", +"T2T1_tr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "ab8f856a5570cdd7abcfed79a6424fab01badb81f18744267abffc4bf626977e", +"T2T1_tr_bitcoin-test_bgold.py::test_attack_change_input": "d36e8eee9db46e1520d4429b503c25b33587b45471da7f1c188cf6b32e22cc18", +"T2T1_tr_bitcoin-test_bgold.py::test_send_bitcoin_gold_change": "d36e8eee9db46e1520d4429b503c25b33587b45471da7f1c188cf6b32e22cc18", +"T2T1_tr_bitcoin-test_bgold.py::test_send_bitcoin_gold_nochange": "65a1e06224813912cebfc6c6559c67f51a8af10b8873d24ba67cd82bee8f0d6f", +"T2T1_tr_bitcoin-test_bgold.py::test_send_btg_external_presigned": "ef724edaa1885485332169e052c5639c45010de35c04ed18542e27ec912b67f6", +"T2T1_tr_bitcoin-test_bgold.py::test_send_btg_multisig_change": "7f7c596f03856552f89350865cecd9b9cb59953ad59a46e4933841a4f200623a", +"T2T1_tr_bitcoin-test_bgold.py::test_send_mixed_inputs": "4435dbb7b9f5ac67a853b81ff25f25e07e42122578bf5bec9ca91756f6567bb0", +"T2T1_tr_bitcoin-test_bgold.py::test_send_multisig_1": "b301c4947a51b08d67bbdd34fe4a1f22c829e51e9f3faaed28d8fcbbcc15c136", +"T2T1_tr_bitcoin-test_bgold.py::test_send_p2sh": "eca5431dfbd39761d346d9c084b3226a059ecd910bef8ca5cebee86eddb94d24", +"T2T1_tr_bitcoin-test_bgold.py::test_send_p2sh_witness_change": "925354048d06db25329c528a4a287189ac94978aa61068fc92c32cb5fbc87022", +"T2T1_tr_bitcoin-test_dash.py::test_send_dash": "1f8a0c3b570faf7d8a9d0a542b4d15d059e8c98ad2f913b385fa77f0615fc084", +"T2T1_tr_bitcoin-test_dash.py::test_send_dash_dip2_input": "5e15ad9f46c4022e9fb1eac9b87e22760459a5b688bb23de677d69eb59b06388", +"T2T1_tr_bitcoin-test_decred.py::test_decred_multisig_change": "108fbf6d73b3f21b3e298c6869825a5647206dda01f125c412dfd23ef534e4a9", +"T2T1_tr_bitcoin-test_decred.py::test_purchase_ticket_decred": "1ab702c4a992d28ca2d1eddbcaad1ed12fa137c249c8116c5d88d10d30f0821e", +"T2T1_tr_bitcoin-test_decred.py::test_send_decred": "61c0c5968072b6ed6b91d85776da7477de10201059fc47344df534a115af58cf", +"T2T1_tr_bitcoin-test_decred.py::test_send_decred_change": "5d081f9cbc2e921d0c72905b171425cab757c5c6e6079019fdb34ebf87b32718", +"T2T1_tr_bitcoin-test_decred.py::test_spend_from_stake_generation_and_revocation_decred": "a418558ecc47a2c9e2970155ac134dac0f0ab61a4bc105c1e0bac097b9011d1c", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "a363741229fbcaeb7b4cf497603498421395aa42cfa5924128ae3cc02624cf8c", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "715b0bec03b6389c2c9ebbffa93f337ff4eddc0c9791d7e958a649c5b2b38dc5", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "de25dcafcc34b19408c400da9407a557499680dbca852d0ae363b5dabd1eb35c", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "678f8486b6c4314b7dcfec904358dd9e7b2319ab8209d76576b593e648ac1e1d", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "5a4985228f18c8425b5942e616c7b96ab10c7f772260f41ac24e15850183b653", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "c6f7b4cd9db0a31bcf95c30c2d9fd70daab5a3782d15c9503cb6439ed2cbd41d", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "dc1269a76678bb7089f3169fff82ba3149e6a83f5a4c11cf069b88275cd7ea7b", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e8528484492ac99a7625effa942fd945e5f61beaafe768ebc7641a7a3e3094df", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "30608deb7d965471df4d006f5bd0f90f94fecb5038329763e88f7ab19bfa24c2", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "81a0b82634180c135eb799d12ec9458b3c8667410dc805ac1f90f33f5dc2faec", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "1fdc4d37927c07a947553ad7e88d1b215e54864f56a8f44ec9e2bbf91fa7f574", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "b595d30080dbd28b970bd52fa6d3b82e24a9ad5208bf3aa477fb095ba34bfe98", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0d207ae466a2d55134214b00758427a2dd7281fa34a1c19655f69e996ea86a65", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "b7a3789b926cdd4d2081a594e116279d785cfb1fae6cd1dc988d86be4d27757b", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "f930c5d9b65a5c312284f73e4013bb16262c874a2abf4389668f4ccee4695bb6", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "869e2bd4fa3045ad191256f743f54ddea31099dba763a3c1be3136630f98bccf", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "cf8d01481b75d8af4899b49181119ca0123988ac7a1d76ff3b5a4fbf2e7921eb", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "7f7f93e06b72a26402ccfd080d0de6d20f85538009f06fb1d77c9bf41e467654", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "a363741229fbcaeb7b4cf497603498421395aa42cfa5924128ae3cc02624cf8c", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "715b0bec03b6389c2c9ebbffa93f337ff4eddc0c9791d7e958a649c5b2b38dc5", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "de25dcafcc34b19408c400da9407a557499680dbca852d0ae363b5dabd1eb35c", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "678f8486b6c4314b7dcfec904358dd9e7b2319ab8209d76576b593e648ac1e1d", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "5a4985228f18c8425b5942e616c7b96ab10c7f772260f41ac24e15850183b653", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "c6f7b4cd9db0a31bcf95c30c2d9fd70daab5a3782d15c9503cb6439ed2cbd41d", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "dc1269a76678bb7089f3169fff82ba3149e6a83f5a4c11cf069b88275cd7ea7b", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e8528484492ac99a7625effa942fd945e5f61beaafe768ebc7641a7a3e3094df", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "30608deb7d965471df4d006f5bd0f90f94fecb5038329763e88f7ab19bfa24c2", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "81a0b82634180c135eb799d12ec9458b3c8667410dc805ac1f90f33f5dc2faec", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "1fdc4d37927c07a947553ad7e88d1b215e54864f56a8f44ec9e2bbf91fa7f574", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "b595d30080dbd28b970bd52fa6d3b82e24a9ad5208bf3aa477fb095ba34bfe98", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0d207ae466a2d55134214b00758427a2dd7281fa34a1c19655f69e996ea86a65", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "b7a3789b926cdd4d2081a594e116279d785cfb1fae6cd1dc988d86be4d27757b", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "f930c5d9b65a5c312284f73e4013bb16262c874a2abf4389668f4ccee4695bb6", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "869e2bd4fa3045ad191256f743f54ddea31099dba763a3c1be3136630f98bccf", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "cf8d01481b75d8af4899b49181119ca0123988ac7a1d76ff3b5a4fbf2e7921eb", +"T2T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "7f7f93e06b72a26402ccfd080d0de6d20f85538009f06fb1d77c9bf41e467654", +"T2T1_tr_bitcoin-test_firo.py::test_spend_lelantus": "5c564d9bb9226153d4ff80840a6253a01398beda3c6a375734eee3533802d376", +"T2T1_tr_bitcoin-test_fujicoin.py::test_send_p2tr": "462b02bc0a898b53fbe8efc0bf5f9e94155a1e8387dd3c3d3713c7012c4a3ba0", +"T2T1_tr_bitcoin-test_getaddress.py::test_address_mac": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_bch": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_bch_multisig": "ce4cd37e2183b628d8f2fa58884741560dc151cfc2dddcd8d15806e3b9ce8db3", +"T2T1_tr_bitcoin-test_getaddress.py::test_btc": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_crw": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_elements": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_grs": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_invalid_path": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_ltc": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_multisig": "af7da666bbbef154f04ab3534272cd38c3ec3a85b2de21bc98c156adc4a6b328", +"T2T1_tr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "8dac09cc23fc457e178512970992c96e88963c598c6a0cad7e1adc5502b24049", +"T2T1_tr_bitcoin-test_getaddress.py::test_public_ckd": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_tbtc": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_tgrs": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress.py::test_unknown_path": "09b0eb37659a9432f4ff87ddebd89c548bb0d509ddc761e5f036d40d791c854b", +"T2T1_tr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "d542fc92fc5cc07b8a919a48d3cad90d1936e08ddfdcf0bc9507f6373a543fd6", +"T2T1_tr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "300591bbd7d6952acc7ea0e326cb12a17ff8081df17ddaa7a78b6b2804c2e9fc", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d8e98c52a857dcf59750045e524a4f0d0209d528d7fbadb674f4e4b7617bfebe", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "d876d29875920cb72a2708d6e0dbf4b18c8a8d2e2797a564b8a43e7f213c6c01", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "0535732cecb02c632fce23d7e9d97841108058234dd49fe2f3be206066a457ae", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "e4fc69f07bc64e7bad22a69478bebda224352e0b5850224f61cc6ca695f79f38", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "0dc73a1ea86cc4f35b1f35b46c7122c98d044d80162566f99b209c7e091880c5", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "309d69e61d7d392f3eab12273f2848df0d63260756aeeab6cb238244181fb35b", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "b878840b01acec453310d394779fc394e7dc396a2ebd3af894b9c8df7b055c14", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "81fc012e6f146da648e7f26c372cf8516d11a7c8213f43d702b336a420c68eeb", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "9de03b7e949f4b688659f068879fd6ac6e037ade3f4b853f50504bca19da1347", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "701409544ed540a6494d234f7264260939567554bb862843ad1167e754a5a159", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "37c2a8823ac1ffd47d1f4d45f45d68a1a87bc31a6f0fe9f44e859527ae6c449f", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ec838e5e3331dbfa52ad1070a50616ecb2cb7826f8dc00e345c6e8434ef10166", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6eeaf0a884f6957c9523de26b8922eca69d185a98715d48b510221ae69fc86c8", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "578e707d91e8c908e7997e0495032e18369935f75b0a7791608436d510fc1a52", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "2031e942008c7beaf1898d842ae64a2481236818af517cafae33d9da91754f92", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ce6301eda8630791fd2744dc3339e2da68dd1facd7466d965296fe4eb786dd32", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "1743eba9da7d311f83e07e5811ae2f64e1f89551a64563e51ebc54a723df757a", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "be006f7c3cabfe7728ca6df6cc0774e081ff12096558bfb50304e3190d286f7f", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "cda344d656df5e4b8e88835bb6da8d850e2b86bd6c1c777d9a2d78bc2ba647eb", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "2013d1df764fac9bc396dd42eb6937e82bd542bfb53e5b35c5145f1b740a4bb0", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "84524afc09fdfee413ba72506aa52e37e71ac48df5fcb24304d03d43cce4e94e", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "31b9766cd564f96dbefcc7d466f81832e9a96883c3c913d2e13b900c8e06d98c", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "31b9766cd564f96dbefcc7d466f81832e9a96883c3c913d2e13b900c8e06d98c", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "d2b7b963377b4a714a239916370c776817f5e26f7faa538b0268a12ecb363944", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "3b6fe5a1c0142e8250040dbbcb489d81561bbf3e038ffc5c85a55fc712505353", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "b3a1b35315d7005991e215fa03fd718f6b2463ac716438609149d20074810c48", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "c080418d692d707c919a715ed487d6d10ca1592203f6d465232bfa9e7396185c", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "4af3066da6359963f7dafa69f8903fce818ddbdf1eefd09f6031a7f66d0c7a29", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "74baa1c495595d4e40b3aece75a1cf95fe5ed2849157aa488442686e4215f47c", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "a080865afe2c989f41cc36e2e3b0794528e2a9dcadb55f7644557aa866576d9a", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "ebb8f5559e66987eb837309fa1a0577dfe5458bc7aaa022a06d295bc37621b53", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "92a173393649d4375a4147b770548701b1448b9586eb99fba0594aa668da4f2c", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "85c96dbce61289358fa531cfa9148fd1559d7c5da95e6fed29711da4f2d52a86", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "0527f270be1ec8857c7399f18695121c7c3fbc3f8161b55f9f53bb773ba597d5", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "a6b7b4549b759df040d7555f3e00d03516d07a2e69d1de4d393b9c4e1b3c63ab", +"T2T1_tr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b2564128a0746bd5b036a60aa66bdb571dd9a25e8779c60e03b1b667565ed6bc", +"T2T1_tr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "7dc12051ab9e76e0f728ae6371eac0eb70b0fbf87ff8c84b615f70bf25f2bd09", +"T2T1_tr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "715b0bec03b6389c2c9ebbffa93f337ff4eddc0c9791d7e958a649c5b2b38dc5", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "1d20d9eeef6fe5df288ec3b156b6951d6264fa5b675d70ad2626159316c1365e", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "921ccdaa644215702d4b462c49aff9f19e7e21f12429a84718359abc7ae8e81d", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "0aa0d3eb42d5e26c4f1fbb2d64bdcfd09d2b4551ade8d929d573b810197cc62d", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "3394bd87506a0c3df9f3ff68e311de022e39514224211d76927ca9494e847287", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "eeba882c2f3f9bc4b01012c8a07acc5945c8f04813b48c7d8aa6728391bcf053", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "1ac76c635e182357a249abcbb8dd5b176afbc4d61551bcdac66131c7206e0ec8", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "7fde560fb7653af8fb608689e934aef6740583688d06723ce46fd3b1d764cf1b", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "08e7cc3a93c77770b6bfb7070492f2d5f0674d37300387c8cfc0685704515f03", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "1fdc4d37927c07a947553ad7e88d1b215e54864f56a8f44ec9e2bbf91fa7f574", +"T2T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "4fdfff33c948ddf44e9661bc5004e7ccbd82ff3bd49d2bc77b9cede884d1fca0", +"T2T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey.py::test_slip25_path": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_grs.py::test_legacy": "bf5814c084b05e6e7de58e47689cd284eae3bcb583a151886ea1c16c8e8cb335", +"T2T1_tr_bitcoin-test_grs.py::test_legacy_change": "86a35a09b6017815890e8fb0fd233bf55bfbf205436235bb8de2271c9c9b317e", +"T2T1_tr_bitcoin-test_grs.py::test_send_p2tr": "851afecbce5a96b6f959bbbf9e0c8fe4a85e9d8229584a9461a616b82b4f374a", +"T2T1_tr_bitcoin-test_grs.py::test_send_segwit_native": "2bc21a661d0bb1b454d6b67090178e125ab7bd52cc795c8aff770fd0e2d1a199", +"T2T1_tr_bitcoin-test_grs.py::test_send_segwit_native_change": "ff5347aea51075e1010ae76c760821a8e06d867f595cf001b73de6ca437d8862", +"T2T1_tr_bitcoin-test_grs.py::test_send_segwit_p2sh": "e160601f6c604af1fc68d6226017f90e09aef16511565884d8f21bd7b735716b", +"T2T1_tr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "f18db46e68e815db631744ce9fdc5906589825679aaa9c7903d5aff0dbc37ee2", +"T2T1_tr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "eda70ba56023a17cf98fca14f681aac8342145e15ac742fe81f68d83d78913f6", +"T2T1_tr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "675d508ea7591850c1566d3cd329e0ff8bd930c02f60b786eafa77b55d702c6e", +"T2T1_tr_bitcoin-test_multisig.py::test_15_of_15": "e3a33829ac140ae9328030809bbcbfc843d76498b327fa8ed79f4beb8a287d3a", +"T2T1_tr_bitcoin-test_multisig.py::test_2_of_3[False]": "7622873c0a841db71f7b0801da4a52fe3178714076aaa0d6883f561a784bb8cf", +"T2T1_tr_bitcoin-test_multisig.py::test_2_of_3[True]": "09be20b78dec5db4a51c91daf522a964cf9f7744efc66192b43db2c83e003dfb", +"T2T1_tr_bitcoin-test_multisig.py::test_attack_change_input": "65c0e57797b01c0fa0672cb74a05e2faa77349aec5d9619fe2d04a26c693ea65", +"T2T1_tr_bitcoin-test_multisig.py::test_missing_pubkey": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_multisig_change.py::test_external_external": "3c142afc2580da824e86bbbadb88a76d23e540ad85a3a5d684d0fede5052a3b1", +"T2T1_tr_bitcoin-test_multisig_change.py::test_external_internal": "03ca768389165aae553abe700c4240a776a61a53a0131547ae14d6e69df6d3e0", +"T2T1_tr_bitcoin-test_multisig_change.py::test_internal_external": "2711ca7277a33843edfa06d15b0ab096526a629c8830756ca2a9cb75cc074014", +"T2T1_tr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "a0ac639cae41acae1432a10ca4c30f8b968b2d7a36e6c943caeb0ec6f0a6c0c2", +"T2T1_tr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "6896e967e54d48d5419808ab80c942ec468bedd78d410ec501a73b55971a8f79", +"T2T1_tr_bitcoin-test_multisig_change.py::test_multisig_external_external": "9d56fdda3df9e24e18d8130e894db08c024f01000c74d1bc8289723492e4219b", +"T2T1_tr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "b5dd1d0ea2f7cabf0bc8470cf6014052d90c3e02c9aa37001c3aeeb32747c542", +"T2T1_tr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "92a4c1301af7eabd4d488fbaad615e9bd27a7af313bfc312989def3794526cfe", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "178f2809380e9dc4500e2eae04304ffda531c7c6732fd9854d5c9a96bee145a5", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "8b5e69123697f0a1ddeee67f737066d8385bf6d92ce7c5a33f3c9e3389886c7e", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1e7c0aea2747d4a47226be1653a9fe99ea225ada9de3bb7dae858e5e82956789", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "c09a03f0c69ba92c928488e317f4b44bfa7400f1acd6f5bdf2d0f58943573661", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "6cd251d25b52d894aec326c55775167b9847729dabd59b7502d8a8ce4a6e7323", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "4568967964a7ff4b509e13c577508a2a41c2a65bdccb9d89dbec9cbe40fd096e", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "e85676e5a9dc749bdf19fc75781699dd34353d2e1b3880b72ca8dd80e137ee81", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "91ca773f2a0fb73c2cad81174ffc274c7e3d0a219becb86a276627b18a8d44ad", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "b32e22369663f454d690a258d6bb44f988edb6edd715ef6f16627d0b017e0bec", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "44aaeb711e8c65f14c23fda8ddca9c3a69e522e9daa38ded596491413404eb84", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "970733f6873a1826befb185f0a735f4497ff4123d985934a891ae6190f0a7d7b", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "81ff81a4ef77f36397df7915dd7e96a997746923fe7559d504cfd1ff700dd176", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "f11e4134f875f6f29f67c6676272f4b866ad0b47bb5d0c57cdc098b8d9481eb6", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "924991d6eb1cdfc862e216fff245dd612b97be8cba64c2d32180fec1a16c881b", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "7eec372b6b2af0e81dd20c4cb38423a3f936bdebff66b7ff92414818b162a0df", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "18b8a335fe259552ffdfd85bd4c1d4424e3d3401db3064ec63b6dca5d53dad6b", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "5e05e396b3603f8f86cad50be87dd84c9bce3421e915305c4609683b35a8fcb5", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "f36195fc2b4bac88d6bd622c6e08d6c0996f5ddd20d7adcf9ccc80e7bdf32047", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "870a73600ca2282b9d9876ca1e4a4210c74ce4aaa0f5a374b65f8007ed0f3b8b", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "2f371c19951d7e5b540b44a59ed1b46da33524ee03a69ebf5704e73fb3d2d33e", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "e49557b2feb74382b7e6549c68d3ed716cfc2418572a1c322aa9ebfe3dfe3dd9", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "cd3c0818e9569cd0f67f3ce40e01e0075d2e988bac08aa532cb56d1b6b01eb41", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "808d77ffc81de1dd160f13f414f21eb8a0700e865653b65742da9b0a10507b72", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1cae19a67ce0c5d5b323d5b26c6667372bd515b28cbe073c2092b3b50b47d017", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "b4602dd3d2e3201181312c4c09679f820bb9847afcbf65a7348978723403d971", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "b79d9fd705d67460b970d98d288a01b6199ba5f2f7c0938c88f487b9e7a8c929", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "71b0ef6882bc2584f625bc4c562adedd64ed856a981a9e3aee71efc62c06845f", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3a8db7a9181669a959074367e042f5f7e05131f1d85d82970b82802f33e3d3ef", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "e601809c3bc99be62cdc4734c5845302d0ed5348c7fd941d9999734fdad27e71", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "b4fe7ae1d678b963c7822643ef4a2f7f408e3847d8d4f6e5a325b669362bb9f0", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "92167bde192c0dfdd094a78e28de471cfb4f34c87ce47d49463e509afe7f33a5", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "11ef1b4c73971f99cab2d2812e5aeb316a995f01589a81cdf7982a0b00602903", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "b4fe7ae1d678b963c7822643ef4a2f7f408e3847d8d4f6e5a325b669362bb9f0", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "b4fe7ae1d678b963c7822643ef4a2f7f408e3847d8d4f6e5a325b669362bb9f0", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "b4fe7ae1d678b963c7822643ef4a2f7f408e3847d8d4f6e5a325b669362bb9f0", +"T2T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "2afcfdbdcf3fbab610e6c2bdd8ef2b5b69557e3934afda69f0046b27d861855d", +"T2T1_tr_bitcoin-test_op_return.py::test_nonzero_opreturn": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_op_return.py::test_opreturn": "9199f4fe3dbf0688bbaa2cf89c3aaca373ca6ce2976bed93817e1577a4c73c8d", +"T2T1_tr_bitcoin-test_op_return.py::test_opreturn_address": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_peercoin.py::test_timestamp_included": "8328da8edf24b5763aeeb37762507179b60980687023174860c3c2ce0a9faccb", +"T2T1_tr_bitcoin-test_peercoin.py::test_timestamp_missing": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "ca29095e065d6dcce564935acdd4fb48c4343ac4adf5f534c4b50fe4fee62eb5", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "b069d2025019fb3da029000bedc50a05572248838b97c4e061f3533252fa0078", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "b069d2025019fb3da029000bedc50a05572248838b97c4e061f3533252fa0078", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "9cc20bbf8bb78840fd71e43e408aea9771922275248a1c8000350e8860d5d5eb", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[decred-empty]": "384988ea9c3ab6718821b278ac14424576fa2ed1738fe1bce86fe4eea21bc033", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[decred]": "851ec4e46d0c4377ff016bc48ea7429856ade6f2480678c38d4b87eb117d4632", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "632211a11154ae933bd3eaadfe292dae8433d6318e5b2e133bf1a96e6a00ee8e", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "f90722e4b858335520080002eb93a64790fa8c878e106a9c7a6137fbb3853f90", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "3fe1c1343cfdcc6163f90eb000c48f1b1339fed6313fbb29f2cd2c1c5bd88482", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d88d278960c316d5c362983f008f02f21edca711cf9cfac3888840a1a6d4df39", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "29b0bb5c221b7fce78e798c19fccfa91dd3a92a60934c38d28eee53d0e03fc8c", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "29b0bb5c221b7fce78e798c19fccfa91dd3a92a60934c38d28eee53d0e03fc8c", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "6993378ebcab45c79ba14331bca6b5c50f96043891d945023b8a5713cc0675c6", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "381c815de3e39cc1433b901e20c515cbae3d4cd937e0a3765412af6d02e61178", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "c1392ad28201dcc5341a76ce1038c93fdbb87d3b44b428c42d3404f55f4820cd", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "c1392ad28201dcc5341a76ce1038c93fdbb87d3b44b428c42d3404f55f4820cd", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "a3faec2d1a1cf4765db769491465fb15175a9ed1709e9ef78e6434f1624a18e5", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "28f1814ebaaf1d0c27bb60089818d950522f29bcd383b325484d6a7f259dcfbc", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "efce5186b0f3ed1fa5c5c1da962b7a1f18e5ca9952a63bdb64951f1fc91a1ace", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "efce5186b0f3ed1fa5c5c1da962b7a1f18e5ca9952a63bdb64951f1fc91a1ace", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "862a33c9b1f2d8cfbd8cd931e9ee1c44de9ef73d29c49af08d2427978d1d43c0", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "f602aee176ebaf9637842c0a167446384caf2d8cb44d6088893ee4acb56fef3e", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[NFC message]": "1b02b5afa91a4b3e92d653264db4d071758ceabd6f52825be5bdc911a5aa4b02", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[NFKD message]": "1b02b5afa91a4b3e92d653264db4d071758ceabd6f52825be5bdc911a5aa4b02", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[bcash]": "ed1851aac2dd758474cd8b32e5ec647d4c1653b2c97d77e29810e9b2810882d6", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[decred-empty]": "0f165122ccfecbe231c342cdacc50669cf254ee2a0603ccb1a14b2bbc4512ca7", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[decred]": "ad87c0a1e42a690d9d7ae2a29794bc991096fd25b6d613662f5e585674ebeb05", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[grs-p2pkh]": "edb3ec40a110436d45dbc77531db96281b08ef91e63b65cd9717a55f31433f97", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-native]": "5238c3bd82e1771ab510bb799dc81fe0d662aa9e0a1ce8f1fa2954d40ade3121", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[grs-segwit-p2sh]": "3c234e09d5d1f56ba4d02e10d3e950152d6665a58a2de39382b565b0ab86b048", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh long message]": "3b6206171765c05ffa1ffa20d8792729a1e7c98dfc0b97607b220e96aedbf24b", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh0]": "9b845c49c1533239ce827304df863d4f483ed14668b55b066bb68689762972b0", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh1]": "9b845c49c1533239ce827304df863d4f483ed14668b55b066bb68689762972b0", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[p2pkh2]": "2c122310be2be3ee3703465cc89745ecec7fd231001bf833c05061a5581b0eff", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native long message]": "aa2d62f4c846941fe062e45529787477dc966f14aa75a8c307d37f0847babcda", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native0]": "839f7274968782698f2fab32be8abf19a370a7998f9b79fd67265bd2919e8b81", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native1]": "839f7274968782698f2fab32be8abf19a370a7998f9b79fd67265bd2919e8b81", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-native2]": "e551b0063c2d7294c328a5ac4a11dae3f992165cd7da535268fcfc9fa2a378d5", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh long message]": "dba8b388457351912ee7a09e3e7e57c9369e4629507cd6abd6ebc3a6b92ae582", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh0]": "9020de975b78647b413285bb1293153e94f3e1e467b56c5a345d1bffce54ce53", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh1]": "9020de975b78647b413285bb1293153e94f3e1e467b56c5a345d1bffce54ce53", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[segwit-p2sh2]": "296b76ed2c1947678309fe64c085262de658eb28fd2c61d3be691486c32f66c4", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_info[t1 firmware path]": "712b68a5e76699e8c27f10dc5f1e903b21faea43da25abf2167d925881abe4f6", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "fc48e3e35131c4d0d7674dee1af1367d7a45bf002cace2570ed8249391d5ea9c", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "c098aa3420bffa0b74aaa4246f6afb0aeb734148aea8e429de6bca2ab4292b2d", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "690d8698478c34b8ac5e0e1da3b870d3f38d8d56e411b2c00e65f231de8c0568", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "d7c11cdc1a0a1d2c45303288828fe635b8ffd73da8c6bf1130f14302432b4b40", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "937b4c411ff251f9d479a093206c5c4a6ef43f19be1fce358085dd7f5ddd8bf3", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "08afc8ec41a349f3f82c3116b3fbe238c20539c07de678d287aa69152ec2b340", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "6da60909fa5306fde0006699e60830b35e193b60bd24da3cbaefa2fec7a22b97", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination_trailing_newline": "18d22d24754a3fda57280886358b92f60aca0fec2c180db5ac1f96fa8f6f046b", +"T2T1_tr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "187b0c2365f3cb1819a0cb90c50d0bb76acb37271657a50c7fc394cedfc89b92", +"T2T1_tr_bitcoin-test_signtx.py::test_attack_change_input_address": "1e21d94fe99b638a19de17c020e212370e206e7f53d26bd94701a74a8dfa3aed", +"T2T1_tr_bitcoin-test_signtx.py::test_attack_change_outputs": "aaefe01c3c34fcc40520c82c4073998f7a44dc072de3a44e005c71a2ea0c69e0", +"T2T1_tr_bitcoin-test_signtx.py::test_attack_modify_change_address": "646643eee18d0036b91423e1e7344830e344e5368cc2f142227b18b93dabc920", +"T2T1_tr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "646643eee18d0036b91423e1e7344830e344e5368cc2f142227b18b93dabc920", +"T2T1_tr_bitcoin-test_signtx.py::test_fee_high_hardfail": "2573ed68b5bbd60e24bd934b54806c47c2ef7968fb71bd99aab1304934c78032", +"T2T1_tr_bitcoin-test_signtx.py::test_fee_high_warning": "8036d1382e575c1e6d5d869b9a87f3298f9305e81057aab379992fca65ef7987", +"T2T1_tr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx.py::test_information": "f5f64d7120525df9890d3ab6232b3726f04a1fb739e142db721eb1667e2f4984", +"T2T1_tr_bitcoin-test_signtx.py::test_information_cancel": "5dc7376ff17cd4e5ac3f4cdb125769d753931a4da7549d45a996d1bdb8c359ed", +"T2T1_tr_bitcoin-test_signtx.py::test_information_mixed": "50d92e0303114ec8956694ab8f80275321a78be1b72aefdf22c60ab40f1b1ec1", +"T2T1_tr_bitcoin-test_signtx.py::test_information_replacement": "a4a72e1500e6af1023c04c151463457e44c1ef1c76547dab2fb07d7a977a2297", +"T2T1_tr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "41f91aad9d0aee8a1a8e9634a7fd464f90da7b91026d20c64110c4fe7260f4f9", +"T2T1_tr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "64d94711faa789d1334cbbbb4390de454e722f6ab9411d18644272b2ae58ff26", +"T2T1_tr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "6141c9f1ed339c73683c49dedc139efff6e6339bf1f2e926d490cbeec7da612c", +"T2T1_tr_bitcoin-test_signtx.py::test_lock_time_blockheight": "64d94711faa789d1334cbbbb4390de454e722f6ab9411d18644272b2ae58ff26", +"T2T1_tr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "6141c9f1ed339c73683c49dedc139efff6e6339bf1f2e926d490cbeec7da612c", +"T2T1_tr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "f6a1090091660460a7e6627a42477d7fea169b3c876c73424378bf5469b54c98", +"T2T1_tr_bitcoin-test_signtx.py::test_lots_of_change": "0ad4496b8363527dcd372ca0fa37d19a11e706488f09f76bbbf04fa8d7b82b18", +"T2T1_tr_bitcoin-test_signtx.py::test_lots_of_inputs": "774320a644e90abf218f12c01c955f1efe40ba9ebc85b87e77eb8b9a4c0dd49c", +"T2T1_tr_bitcoin-test_signtx.py::test_lots_of_outputs": "0f47b714f718d39cc79ae5fefe5b33cdc896fba0267d349f6f35ed4182966a27", +"T2T1_tr_bitcoin-test_signtx.py::test_not_enough_funds": "a9bd99695b33bf510fb0d300f5e4d4b44d1a876d50b1fb51be559e8311d4dc66", +"T2T1_tr_bitcoin-test_signtx.py::test_not_enough_vouts": "cf7f10c7916901a3b252a9757108aeaf808627c4bd6d563736bd611a724bc5bc", +"T2T1_tr_bitcoin-test_signtx.py::test_one_one_fee": "5d0c6d1579136b3f7caeb0f03a761dd7bbc01422b1100e3c9151c0e5ad0d53f2", +"T2T1_tr_bitcoin-test_signtx.py::test_one_three_fee[False]": "0196d511b87c981d424c11c7466868b3551285f51e792e5c86caf9ec6b266d02", +"T2T1_tr_bitcoin-test_signtx.py::test_one_three_fee[True]": "87a9119e7d0dd011dd65b6b30dcea0a5f8f24c178f7181660761482f006e8207", +"T2T1_tr_bitcoin-test_signtx.py::test_one_two_fee": "d337f0aee73ac365a8311627fba300776a207e9d32b562c2df5cdbd66fee0955", +"T2T1_tr_bitcoin-test_signtx.py::test_p2sh": "ff29110c4669fa6658522cf581be5de38e7582fe62bdbb38c692aa45ebbf03b5", +"T2T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "89372972f3cd000ec3f1c6c717a1f9090d46aef1ead6e8a71207207a806791a6", +"T2T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "89372972f3cd000ec3f1c6c717a1f9090d46aef1ead6e8a71207207a806791a6", +"T2T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "89372972f3cd000ec3f1c6c717a1f9090d46aef1ead6e8a71207207a806791a6", +"T2T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "89372972f3cd000ec3f1c6c717a1f9090d46aef1ead6e8a71207207a806791a6", +"T2T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "89372972f3cd000ec3f1c6c717a1f9090d46aef1ead6e8a71207207a806791a6", +"T2T1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_signtx.py::test_spend_coinbase": "c6c8f396c0b576b2bd03de7e24c6da4f76da51f35783d27458c3ee82634428a4", +"T2T1_tr_bitcoin-test_signtx.py::test_testnet_big_amount": "ae772ef2cd9ab5a955cb8ed2a5b1f53ae64c6a258e6d3b353bb60d733202be88", +"T2T1_tr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "f424d7476a76e95183cd260c157beff2290ee67529066019330ab88595ee2c0f", +"T2T1_tr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "646643eee18d0036b91423e1e7344830e344e5368cc2f142227b18b93dabc920", +"T2T1_tr_bitcoin-test_signtx.py::test_two_changes": "87cde2d7c8474f406524155c90707e0de7d3eae9b2b833b0debab30e213c7f6b", +"T2T1_tr_bitcoin-test_signtx.py::test_two_two": "2bee83a81ce050a7055e4839143c09cad87ad0e1d47a455be524f6c1996f5e13", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "5d0c6d1579136b3f7caeb0f03a761dd7bbc01422b1100e3c9151c0e5ad0d53f2", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "f7c3e4764eaeddd10d19404a050f5e1da9993e6c0b59df721c4cd5769bdad5b6", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "ba3214fe507253a70a2a86ca4ca94fed4dfedd1daa39759463a13287627c7e85", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "f62e300711a71853feb4c362d9232e2fa291cca54d6994260901af81b347af1f", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "5d0c6d1579136b3f7caeb0f03a761dd7bbc01422b1100e3c9151c0e5ad0d53f2", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "bd123414a44dbc16c1ef028c7c2cc22cd20a4826444b7d14baebc2b410c5e1f3", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "26e304bfe38994074585302392904979839b59d33d8f133e10d4f4f20c598b5b", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "2f10dac33c6c6837d8a82ba62e40fd6b07c8a3181d516279549094e11f011c69", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "dc77f7683a76e60aa056e1038d689e52da40bd97173686ce1a3ba6e7e9960134", +"T2T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "bd123414a44dbc16c1ef028c7c2cc22cd20a4826444b7d14baebc2b410c5e1f3", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "e1ad22422c8c13c777dc8ee60f6ec17cdf5d6fe1892029310f0831f93e394366", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "a47bccac3c290506394c94276fc620987b25a35a722e3cca5c7c00e4da80200c", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "35c9b1b70633e1119adef0ad0f6a8f7a72d9b8d945c56cf23e7dedff43c6b3bc", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "18c0299299c9f70d23f30095990e1f74e538a6c05ef1c418eb7f8a545050ce2f", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "b201457ec0f8cfdbfe3ac20a15a34d8ff128905290c38e28ff5ee91aad3a4119", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "f756590f82ada327b2971e92b72d1e273c7ef8b1594f61404653b3645028a00a", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "9a95471ebb4c0a0ab4814670281baeb4f2cffe5eb2735a13cc615ef5a580ed4b", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "efd1ae46b66ce1420351b555858ded9b9f07aab944ea33a854d84e7e95ddb682", +"T2T1_tr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "676241afb325dd77c7656a1b5b4959d584d234399c90af31192137b4806afc3d", +"T2T1_tr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "879f07bd40c6dd90acb8761c76b0bf61caffaf2359a450b3c0a94218ece674dd", +"T2T1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "70f1027bb823d379e150fccdd8ffb1a808b1c7a0008ea75acef9f79e547f2174", +"T2T1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "4d8485af286ef516dac00fb3757b69ca5c80412a33ade9162c44a82445301f63", +"T2T1_tr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "850e34e4f7da6528ae2f16b628b8fd5825f1f9976a1c32582371925970c0a6d9", +"T2T1_tr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "a03a7e499f86d854d177b0d2a241144afa7d5df0d1603390338ed6dd4ebe6171", +"T2T1_tr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "850e34e4f7da6528ae2f16b628b8fd5825f1f9976a1c32582371925970c0a6d9", +"T2T1_tr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "a03a7e499f86d854d177b0d2a241144afa7d5df0d1603390338ed6dd4ebe6171", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "cb784f0516efe9815272f42cc70cfd3fbfe3c4f92f628c7f1352da7eefd11a72", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_purchase": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "e7430d3aecd94089bdaead3f041f6761f82e963c4069154a36bc37474b340a4b", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3df2576dd2ac81e8f46baf54a6bc564f182153a0b84d594779fe4d93ce74ad34", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4a71f0df746fb56288457b1a5f823f99dcf8ae9518829d317e6c4dfb2f52f6f0", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "3d4a2e86586ce41e69473df436ec17d44df439644840ae0e09a6dcdbca09ba74", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out0]": "16b05e06e9cb1c714fd61591f84e93c54421ab3016d9127fae6a7b9c883742e7", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "3c6568149e06b008d6d5335a5856d384a4040d188b31c6aadf04fb98e6d449cf", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out1]": "732eeeed610c35785916386dcb7f60e975643db597419f456534601e17ea9ad7", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "9a482fc0640fd1bd49d92d4ea3ea06f06eefde317c04b029ef2814248618dd9f", +"T2T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6f9330075a793629dac2c1688fbc7db9b02c5c65d57466c81a8e11ba0cbd40bf", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "06c4a04d357fa47224a735db508048faa3b9d2ee01eae1366c49657701c46d63", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "06c4a04d357fa47224a735db508048faa3b9d2ee01eae1366c49657701c46d63", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "06c4a04d357fa47224a735db508048faa3b9d2ee01eae1366c49657701c46d63", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "06c4a04d357fa47224a735db508048faa3b9d2ee01eae1366c49657701c46d63", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "1d2723ea782e9fea9c119baddb26d2f44614640e4cead5d77f9f31272bd8b1c3", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "1d2723ea782e9fea9c119baddb26d2f44614640e4cead5d77f9f31272bd8b1c3", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "1d2723ea782e9fea9c119baddb26d2f44614640e4cead5d77f9f31272bd8b1c3", +"T2T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1d2723ea782e9fea9c119baddb26d2f44614640e4cead5d77f9f31272bd8b1c3", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "bba62469bc96f8ab5d0b1d61b6cbe2380b5d81cebaeec5423333aa4af0b56fb5", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "e7bac46a4ff2b52cb1b7319469542800b9d4334a3fcc4de2a9e028c850297c1d", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "c402aa0951a3eb61f7c7975db93197b431bbe460f84f90048affa657c902b7c8", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "c402aa0951a3eb61f7c7975db93197b431bbe460f84f90048affa657c902b7c8", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "8cda7b636b779d3e833e318b591712d7f63355fe36788262abcaf154d783f4fa", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "3278c61fbf133f59951250cd2478972920479adb2f32e258468224add8bf1bba", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "8a9da79f4202298e2c89ac79c798db4f91b187a492dbff46f1edb0e8e045f782", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "8cda7b636b779d3e833e318b591712d7f63355fe36788262abcaf154d783f4fa", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "d7f22c3e99dcb54319cdd4aed1192a29aa4a7bf5710f07ddd87b63ea40e96e79", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "aed49b0e4582a9a358540cc773d30d8ed45f1f0d6d176e43b63308b1ce36635f", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "aed49b0e4582a9a358540cc773d30d8ed45f1f0d6d176e43b63308b1ce36635f", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "aed49b0e4582a9a358540cc773d30d8ed45f1f0d6d176e43b63308b1ce36635f", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "bd2df2082de07f378c2b85ad452f8a61f55f5c0cba9e149e937c47b861e08ca4", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "aed49b0e4582a9a358540cc773d30d8ed45f1f0d6d176e43b63308b1ce36635f", +"T2T1_tr_bitcoin-test_signtx_replacement.py::test_tx_meld": "b4e19996a2e514816f42e06f3013d6a039f31428e40c9793ff65f4e585c17efe", +"T2T1_tr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "2343d2211ae36788a6786d7b826f6113f375910a26a747541a864e714a554fc1", +"T2T1_tr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b61c89817cd8cce74e2c193714ac8a6135985bdaa1ea0749d1c29832b60b2dca", +"T2T1_tr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "1ff4f10b489914d412e43018fdcce7f73007fe73c2848b848fc03112ca6bf5f4", +"T2T1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "7c6fe048bfa727fa2a46e7c4460aa61b0911fefe0ea4a8f0bc9b804f8e97e39a", +"T2T1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "4389670ce20b28438f222fa763f6c3d1dc4d83074c4eb4068be23efdf37bf5ae", +"T2T1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "7c620b9c65dc49e4707a02faa3d869fa7b304e1288a877f8069f3bef203eeeb1", +"T2T1_tr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "65206e510725f2d70fe269d9a69e0a436781075d1707211ce0609649f24b42ec", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "1e53fbeefae0e4e350958354c5ea22e661bda1d73e34f5b4fc739d8395a88b8d", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_both": "166337b013f7bddc9fdc58619c73c21906e5e36170880e97ad14063e0427f4c6", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "9596d601d584ddaa311f969acc0c86b0a468544f1f3eb9cfb1b16135b35b638c", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "0aee0f2ef6e9d2ab0c686504a3c1e8056824497ef85f990cd84c2bd5cb93a9b7", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "2853e879c1a53ed56556ae081d6d6663b3c15bb3d6280191e4c15ea477dcf3e3", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "c2f29dafc7104c35acf7ea9af08890df2f4d22fde991f9a18bb7471c3434c819", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_native": "bd123414a44dbc16c1ef028c7c2cc22cd20a4826444b7d14baebc2b410c5e1f3", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "7aee4866ac46567268d391de7fdf06ab2eaba1525b94f9e9bc59d5e989995225", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "bb66089276cc99ae90de298fd5c20ac738205872637a254f41679f328439d8f6", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "61d1d8d7eb59c4fa365f635d3b0ef5d7617c85666ef5a435a7186eec0b5d05f0", +"T2T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "abda71db2a67d3c4fdb493978e7b778fac3656136997d0ea2bc1a8ad72bb3f74", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "19572476bbc9bb8d9eb1e8daef2a73cc1d7f011997c663644cb280547b19bb23", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_send_mixed": "6ac5d24574e97bedbc5b604be5c63d926c9d06dbb77a7cb0f80727dc506fb910", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "44511fe2aca601aed010448571a4dcda24e42bcf6b0d8579e73306284cccb829", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "382f13645b9dbc61d51d03f017a6d9dc0478cd6c5c2ae1411927621be8b779da", +"T2T1_tr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "5faf47e7c4383c53919f5c99e8e7806c4a23b24b4851ac46909156ceb05a10fa", +"T2T1_tr_bitcoin-test_verifymessage.py::test_message_grs": "f42f01ab42a5986f1d3bd5016294e097acccceb1b6f0dad3695e9292a704e350", +"T2T1_tr_bitcoin-test_verifymessage.py::test_message_long": "8f40e7b85b227fda68c892ff935e89ad24479c0f3a4262749ada5b9755c6be01", +"T2T1_tr_bitcoin-test_verifymessage.py::test_message_testnet": "ad3d0e50ad939298bedb80d7b441b7ded9c6ba8fdcf1fa49247f1a2c5e0e10ca", +"T2T1_tr_bitcoin-test_verifymessage.py::test_message_verify": "0911edca1c48176c0b30fa36ec32f81f1e70524ae10d1e707a04758ac638ea0e", +"T2T1_tr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "e52ddabeb1bf257e610e9854c12c32b5c21a38ac1a340897e882a5daeec75428", +"T2T1_tr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "3953c90f2aba39eed41d4b26b8c2ece7799ae231853ca21aeac6aa1a9497e3de", +"T2T1_tr_bitcoin-test_verifymessage.py::test_verify_utf": "0c4cdf7b3710a1b0cf695f6b1f5f83583314b8ff8d5d437023158c4acfc40796", +"T2T1_tr_bitcoin-test_verifymessage_segwit.py::test_message_long": "0014fd1d33dcf9d554baa962f48a2313b64b59ef6906a8ed807880ac28fd4f45", +"T2T1_tr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "9b2d2042de345e73d55954becfdc5b59bbd4cc4587a21677c1817182d7fe20b9", +"T2T1_tr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "29c9dc56dfaa2c8c3ba6f935465fc623af1dcca845829f4478a926832c17710c", +"T2T1_tr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "c4299113fcc33e6076b98f536eb55212c220e3ccaf964d45540042ac7b746ac2", +"T2T1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "9030c76116d9818c12a81174f64f726625d410e8ff68adfb787abdbe443d01b0", +"T2T1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "9e05c227da3ecf8cb9312076774318dee463b9e78561af70384a37a5f8aa5b4c", +"T2T1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "398d50fb2202d4ccd7c9c196839263800e21f07f6068d079509d2a5576fccf84", +"T2T1_tr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "afc6dc83f0ea2916f21aba5dd9330cbbffb286e734d03ad0849dacebd95cddc5", +"T2T1_tr_bitcoin-test_zcash.py::test_external_presigned": "673826703628c8fc2dc61e97a1aa20136e866505b405107032f9095ac86cf767", +"T2T1_tr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "cb7329abc7a8317ac0762a9fbd4c91cf18fe97adceaf6fb73c3fa455bfc22d68", +"T2T1_tr_bitcoin-test_zcash.py::test_spend_old_versions": "9a140d51398b59ce6f2b94a68ddace957a8f5e3f5c8f14cbf4a310bbd1c782d6", +"T2T1_tr_bitcoin-test_zcash.py::test_v3_not_supported": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_bitcoin-test_zcash.py::test_version_group_id_missing": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a20864fef55bfb8e9570fec83d4401039cb419f57223c6b04dfb54e754535d81", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a0dcabcf3a0233b00b21758c193f67a97dacad4131e3222dcd3808601f186274", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "29aeeac879bf5701507917074149cab00bc43f99f1e580c777e6b2e282206a8f", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "888c1e455768d85552bc1a98ee2f4651ec74ecaf8704c6866f50cbe65e56db24", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "2e8d52c7f367b1f424e8d549c7225ce0ef05d8489b143e383b84e361c43c2a61", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "4a2a2f496eaf6bdd1fec56c6aa847db3b7fcad2227079455241be2341bbe1a52", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5d4f564304d2c2ebd1bfed1b4b5165c4a0af14cfb8a3eab5b04f5953dd2d7d29", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "9fa74efc8248eec6f766cc04c1bf91806a5b6972294e30dccac00c79fbb03a8d", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "fa155b909a01d67b40cff9adfa4e5f8e35c2a0d5a9b36c2c1111b25244801cb4", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "9c7e171562fef38dd01e429ba23300b4b56c78e65b8906101d5ca8947287847c", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "3506e2f78dc2cb4fbd390bfe665a95b3b05289fbfac698f439a590415e0e138b", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "8bc85373c50a920027b46c00ed0b5e14c45433dff0c33ba0e6fb59bd09f759d3", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "38884059a4ec39281088834d355dafa81b2a760ab8b9977a360c4a527438a1ab", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "f4f2b2d3c00d85b2aadcd88419dae25c8b4e58a99aa6c6f61d208fb93a30d6ff", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "49102d231c34a2bbadf82e31a513a3a28a304ceab9deaf5d1b6d7f7c6480abc7", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "7eda7efcccce635ae473480c39cce9c174da5673fa41efd5e376f2ed36355de2", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "4ac1b6cc2b70c2af65a1636d487b0938083c10a83cf28c87ae5b8638e75f8656", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "f3a7d75f8efce8869719e229d79fff1888961c230d9d3fafec870af6aceb5c4a", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f97f321f64f7d85a3e78c6024b5261fab981789817161842e2920a5c12f8c71e", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "255491829505ef17ce5a5d4b261aa5dc6de8c29aaa3a94eb5ff142b77cc06f81", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "04f263a90d31608c6c0dc52850f6f3ac5eb82ca2450dd6411f736628f03884cb", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "fcfe69c1862ca213c27a0351b843806773ec741231d9949b3aa9280904bdeae4", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d7b902abc8b17deba9d03b38240d246f4ec4b6a37e8a18cefe79ff3859a68ae6", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "4f9327bc046144476347263eb7999be05bb4026fa80dc69c47f46ec29acb9dc4", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "6fd32b9afbc25abc034be6bca09432797d98ce4e51f08953d35c2957ad5e3162", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "cfcecb09a7b88b9c5ae8e893d4964679f107df1ac5f94b60d61f7e1f26256d83", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "8fcb6513d466621134308b278e86102b1db3791c813a7e46c16bedf6e8d1eec1", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "3c440905dee307e54f77284cd1c316a42075182a63483729da014bb3fe989292", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "190da9790ec03fa52470b4720195356721ca28168208456f85cbbfcb588a504d", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "bfc009b507fd54b3828c7c449c199f3d0b46e301de25b4b2a69c9fda5bc4e7a2", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "61c529a0d021c0215abf2dd0aa7cfa8e42ac04a99e56858493ebab1b7baeac94", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "66fc5a40c373189621318a12ea76204c4c95858d62a5569d5f58eb2ae73b7567", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "cc02b6fe50845efe0f5340424055a5b4c0aaa7cb39a679640f5efd6e73315b71", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e3f50d0399dfac7e39664db689c9df6ffa4bbbeacbb23689e464bca9e66cdaef", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "0eb4801ff273f69378520f90ef6449a3f12012215f96ab25cb2b14e51c5f4914", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "1703ead911b79558cfc94c7801598a9784f23b1b7fcb52196343074ce44b8663", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "7d8f6d0ad60f41386eff656ec237123a6f032a6058b709943d078af2bec0f8f7", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "c7210c471c49728082e1eb181f87bf84747ad30aad0df786112b672795f880f0", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "5b7ad5006677c8d663264e8670d0511a816441d91975cd6216fc8db417646f08", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "7743589b4b6401ea7855b7daa07089c3c90671194713ed3e5ee4585020db39fd", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "48f37edd6ff83a7a0de5689809556012eb9d5b642d46242bb1bd595ce5b9f1dc", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "3c9165c40eff5f153baf4267df504e38fbd755b617e8af1e0f7d5899dab44ca1", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "f0e071b55f871cab5725ca3d52fe7134f14ae4e8f2b7ffef7fd18389b48bb78a", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "094a21acdfd1027c1abad1f3aecce260f7ab41d01f2b43ab4d9b6a81d508c75f", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "21a1b8c7b7b6d667457fd77c79f2845be1a0c8eba7e8e0846062945a9ecde999", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "585e4cd0d519d7839469d855f504dd15cd91827ff313a565b8918e43a4597071", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "630dc4585512acdbeb56437b6aa07eff1d9547cd3e54d928296e4458e0b58aec", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "987ddd90b88723b11a5e0ae8efa9dab82115fa5e9e12819aa20cde155aee087e", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "834a094a314573df239518010eede8b2f548cecb1b26f62c2204c3d7afee050a", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "931cc3fc2ca40b655798e8af8170c094ade58b4c504d2a4d2b4890cf72c16eee", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "947d279bc49006a6af2cd061a1fc244b5965acec63c0e2a313c550547915e10e", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "f193a6382d9e70cfe0d0dc954d29ec484b2df27a718d39adbbd1e8f3cc6433b0", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "154294fb5b12d8f0e11ffcf4677e1f526f922a878cfae5efc8f4aaaa2f11bf06", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "bccaef243f2b0f46346c8b6a061ee0a24686ccc6edc662daede4e6a43d280b60", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "571d14475c1fc7bf94dfabecdbdc6fd8be26d77316fa67fafe0c0a0caac6de0e", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "0adebf6601c4569c1a19ea7ef69b4438a638dc99dc7d55043028f138ee3d4630", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "65a915873d4913654dd5315f754c9092b7ce8cd31633b2dcad1566996a2bba0c", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "ec1bf5cade6373eabb993aefc0cd861c8a0772f8b7c7ca8f38b891523764e272", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "0fb8c585f09fe02579ad85dfd2f746a6bc6a4e364bca4379e055f530da4f0cc4", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "a34ee9b5717eb2a7752221e66054d3f08b6135416aaee4e576567b0ac5affa74", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "3cfa829d0432049a072ab36b756c0ef7e4df5b36942dfbb86974b49a8b582c96", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "8645f3ffaf55c5d66f1a006c8b0cd01cce458485ff2cd16951fcec16a20353bb", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "0db8ce125a0ff99f158b84ac8683060173508a19dc851d19c25f691790c5c0fb", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "10fa43342e5a160f8dc66797984007d0618a932432143b60f597ab63c03a70f4", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "f3dec731e96aa30624e02cf68a1c525ed7802bb7a6168564a9962c9e90e2a753", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ad1bcf5ee4748705fa1b7e5fb23ef9ba44e647cb648ef1052e49000073fcb006", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "0b01488f3bd8fc86d047b1d8c6e48113503a3720afc2882032619b8be62973ab", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "303064039150c5a802e466cb6f8f16f8889953f4bba192aeb2eb225dd4c375e7", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "8bc8790a9a2482c8bd6d44b9b90cb90f5a242337eab96684f576cce14b78e340", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "75da96f5aafa4eceee45a79353670feb1d08813e865f4f552886d47d4c01c8c6", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "24803c67fb1412c2fa0aed0a03e8f4f50b166c270229d578f55f1c57332aaafe", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "c1abef44b036416f402bf5ebbb9034028a29f94bd9c31c7eb8a86a02153d1228", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "e3a447ba7342e470f23c2ec70f9a20d08607c00abb8c5c2d7844ea4955638885", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "079b04ab6df449c289d859bc1fb6e43c92f9d59da7de47fdc709368fe98e8234", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "bfdacb9c479cd426c752bfa2950f39fc2df0a51eedd5997e416f35d8f4ae6c1c", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "78b48cad9fba26a15361df219bdea32556cea5ef4577322cc46cd49db808b36d", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "7b5e854b2a946b9214f18e2bb7594c63ebe1e4710162575ef6842fccefd5bed2", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "5b0afb32f1ace943ca6e40501c2598ce0e5aa70e2760fcc29a415dc30eb18842", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c85ebff0e305ea5bd56c0c8775148f6506fe82839865bd6e59ea0ebbeb545083", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "e793701393a2fdb8e55f2a3d79c98bd8853cc8876e475c7aee65edae149944d8", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "5f9a4792db10c2e0f67d9f50b9f04feec0ea5c341490386411bc14bc7c823cab", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "3de130f299ed4f03faab73ee019c032478a0062675a065c259ec8642302de514", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "3ce7634029822f181ecd70dbf73dc22014c2f21a266765acbbbc05f818f1633c", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "f96868ad37976291e6b1e75d7aff61c42c2ee469df16a171a5465f880c0e8852", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "acf94e24bdbedd6a917fbe423304ab0a5a486447c7445e5022982f7ad597af9a", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "8086973f21d7d8c11598a828cc0ef4b9d6749b000862bb8a3bf46f2dc795524f", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "148d1f9a698f85cbdcfd7e2635778a29b9631db9394aca8932212ac272250e76", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "1856a823fdd74bc2d3a26970ac706790b4281471880f8b829846516fb5425c8e", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a55ce681bbb0e0d1fc549531cc4d9201581010498259e287a6ae9946df4197f0", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f453416cc5d551c27eef35373078c4c0554f63b8e775b05970bb9c0dc5bc3267", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "0643c8e1dae3ce35bff91986bdae95b62f785333c8a9426e2e009c4ac56fe6cd", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1ca5d4aae8c11d118b63c36a8ce31a86a0518572470f08664f3146476118275a", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d15c8e9f2b7ae631b7739e1d310cbadb14ececb036a61d88caf621dbbc893c47", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "7e9c3faad49c552edf1d2a6c0119d5d74b97dacd10d281015c00b34f62dbe9bd", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "41e7d7fc21b59a29ce7f4000df4f9179c707eea07969d2dd2883f4844d5caf27", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "065e5b6818537778e539ad4beea16db3b3b4aac2bd94272f0771504267f5e899", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "119eceb44f693274dfce53a68e1de054fbc4685d053db715271640cf6616fb4c", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "41a47f66849ce18790894abe48294bdf4b43566f76b5732eb529c947d683d3ba", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "dcb37a58c71d30db703d857227c28cc87849ec14aa551c6290d4f78fb668cb22", +"T2T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "9806c7bc5739a443d545fb6dc518b30de72488ac7e122114cf545cf653899c15", +"T2T1_tr_cardano-test_derivations.py::test_bad_session": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_cardano-test_derivations.py::test_ledger_available_always": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "5b8e99573530fe5824bc30b322374008a28bbca99e76eff1419842f7c2be1dec", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "bfb267d1eb6e62d13e8c013bd44dfc9ca8b378a313327b644f81fc9cf6dfc181", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "b3aa313ad497f803cf2638fcfe03f3799e88ef72bb7716c49df1ee8f02074edb", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "44c0ff8d51b44fb136084cfca84214faf25ad3db0f1ecd5d4fb6a6e0d033eabe", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "e251c2ee98f11172c8a82557dea006fd996f5ddcdab26a1a4d60018f3798f5a3", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e743c84b7dca12dc4387569da2f9533473ba46be05b89998cc97388fa7902697", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "c66480cc00c36464415b2721087b05db81b9b93bb0dada00065e36f9ffdb2986", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "c2c0b9655be78a48f98f991886d9c63365c8d18bf377fb16a23db3d2db5bcfbc", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "fc7335b89fab2de48d79e6ac42982208b625557a1beebffa54c05fc847248aee", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "9f6d5fce7ae9724efb187b77819326c8d21392d28ad4342902d6a4c48fd091cc", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "91f80aeb5bdc23b293e610ae76c3b59e4abdf381f2fd8178d161bdb84ada89db", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "e607e6ae268b969f3756c40e3f5dd0d51159515bae8d9ad056ab6fc5fe81fef6", +"T2T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "66c8f224b63347c2d714336a43cf1b79fd119d7acb524867e08d69031ea7618d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "24336a3ab52de708e1dca8484a521382235a122fc9c51ccb0bb20b95a86c1122", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "40d46573d7a51e88d4569c71864596b450e3dcac81d4717cf8bc8154ac304f4f", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "48e21775cdf2b278b0c3c5edb190e6e13e5bb5fea3caf496d0aab444b428aaf1", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "8aca725b4f5c9a9d826e168b52a515be83d138abd1977b595351501c06eb812b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "8aca725b4f5c9a9d826e168b52a515be83d138abd1977b595351501c06eb812b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b95042226ad605d42a3dee6e8e8eb5b1822a7487b240972b1b7253b2ad54ec12", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "edc83652086b133027fecdf479cacba89a0113202fe5f63f70dd9a1ae55fdf82", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "ca2af6dace613883ca8d95b464d48fefd526ca238887b9ccffd00a158119d087", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "95a757d6503c2b59e94681e8f8235cb3928577bf30be74d7307d44d12523faff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6d9577b91e3f45ea0774c9cb8a4ab634854484e77925264de3fd2bfec472c9d1", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "918c7fe5ea6d96457d411ae66f38bba5be61683802d2da29628da9771def8834", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "17ec99b53e300a9cc303b8c17892ece93805939a4b6122368e558d4b38a295a2", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "6e617641d0582352d8825320d6de442b3afcf257285d404567fd7a35c05d8145", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "2e3772400f018f8156089d62def189201ad0d2981efa541a8a5ae9ab59fa8ec0", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "2e3772400f018f8156089d62def189201ad0d2981efa541a8a5ae9ab59fa8ec0", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "99a1adca7bb40ae66081ed9bcdbd0951176378606daeafd716e72d238f92b590", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "9ebcae63713045aef4039138873517bb4a584af49ee7d44f3cc0291b8938cbd5", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "988b9690f1c2cb84153a5c0ffb0c7d31b07321cc96a3f0e59827f7066e458555", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "188a99f30d3c6b2c6ef9b18ab3d45d1ca48e0bbdfb2c411998d85664f4a2a5fe", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "bf216c1b2da5255c5c7c3d2d8e60ce22f7c8eebe608397c3b803b867ac150ecc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "e71c394456c41c360a0456751719b3f3450cffdbd9d57b5169f0f1e27099a609", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "964fd1fdcc9498d28e3c85a545de5a8a2e37decf8704d6d198fd1c5dee50c7d6", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "e3410bb6dff7b40917388fb6997039447db9ddc32a9ac4be2115e62035aa23d5", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "8aca725b4f5c9a9d826e168b52a515be83d138abd1977b595351501c06eb812b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "dac87bcb463c3f1c4310451ad7412f008dbb78df9c1c91f4361085523246dbe5", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "188a99f30d3c6b2c6ef9b18ab3d45d1ca48e0bbdfb2c411998d85664f4a2a5fe", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "38bd8dc9ce73e8b136301948c1d31db14b57c10b0d378eb608a20e3b7c9deedb", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "e71c394456c41c360a0456751719b3f3450cffdbd9d57b5169f0f1e27099a609", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "964fd1fdcc9498d28e3c85a545de5a8a2e37decf8704d6d198fd1c5dee50c7d6", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "4c332332712befda57f839007f3fb6b01061c6639a1732a83f060f16dffac4c9", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "188a99f30d3c6b2c6ef9b18ab3d45d1ca48e0bbdfb2c411998d85664f4a2a5fe", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "d7ceede1af76dca40b9e79487bc5401023f2e0410760e818c3d82ff3daf418f2", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "9d5e334d3674e3a4602cea8f8fe8ee2cc62c9bf4f2428ce8f5146fa2684d45a5", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "2edd830dc6d0565abef069a37b5c22d9b2fce2d89b78c2e9eedb11f8792ead57", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "a47b7d7e83f699489ee64ed36ccc35d4be8306fee8392b91a53d5c86edb0bc1d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "955b902754aa2304fe17a8d452a399371c18af6511793aa6a773c5b8df84a18d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "a33d790fb167c125b97989b84925865542f2947409e86242186d3491cc85a91f", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "dd099f42a189dccd286c036709b007391d0e92a4713b001205e8ee4acab1005c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6d435b2b2e44679acc68fee1a929f027c1b554ef6bfa58f6d9c78d529e0ce740", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "991c7d8eb80046e2b223202fbb8fed3200c69ebf14b2ec378ca4e6f9d880c19f", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "8a9a5ceb48fb7ae4a62547cde78aa529f85ee41b5f3d51d124b44dee7f1760b0", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "f8609f3ded96ea55a82b7a097cfc05220dda22cbd73d82e13bdecc958c858eb5", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "bc6cb852f01340387fe29f6ae5a4b818818aeae1b39c540c6daa96b45d944fb7", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "3ea53f3d041fa98b1050420a38860660669ec4a994aad1be717b9665fe157705", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "56941523e949cccfa0c55282133f258e875aedc34f81f9535a1d6027a58c8613", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "d879e3de69c609d0b41abbcfbf8f198477c2e9da551ba43ab73a3b70da773aa8", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "ab4d4bbcd499cd558667e30a7744ba7b721183d7f10f1417c1e9031d94a9e029", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "07e323ee413d8e39b5ed099c2f23030eb75183b019aaa0e4feaa7b82d67a29ed", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "03ac857037c62c0a709919fdff31b0f9929d2a1977fa2ac8cbb636e7f1c35d67", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "4f33ac72d17812d5a25d63b546a5706d65e0c4b0c4ddc99e9685eb516128ed8a", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "199258781764c3190070329a41b421f7cfe683eaf1a2a1ce1cb14bec6f50b172", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "ab0f671956498cd64770c19369e7a30fe496c52bc9814f2b5b6baeac190fa207", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f184f5127352dcbccd277f5cc7d826400930931451f9b1f44d6d0c1c60448c5b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "2ca47767115329674748e65eeceee942c0576a2fe12cb51d28b4f4dd7d78f993", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "2ca47767115329674748e65eeceee942c0576a2fe12cb51d28b4f4dd7d78f993", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "03a42f979055e7acdb8259363ef36c2725ce583d6c97fa67d09bb150de04fad0", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "711bee764d7d2b5c157fdadc01c1dd0b6ea9e559afe65e4c3c8b8655eac17667", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5f206585e458898de21567ed79b876bc005d0fae273225166359f5ec68978bb8", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "2beaa1968fbb131cf11a7f441f1461ee7d31745926f1a805eb32cdb1b444d1bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "07db3756828f8b45ec2ab7bf596d2c5ea4233c86e1c74625d735d30f72f18fd7", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "3df472f2b3ad28567f6dcf7942f9049db7ed35b9d642aa031806ba01a1f7963c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "5e8883d971934d2bfce06d4673bc69e8d78d266c6d71f0c471e520dcde18db6b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "342bc0fd33d8ffe766980f11ae14177f0396e67a7765d29b774ba736abd4a6f8", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "188a99f30d3c6b2c6ef9b18ab3d45d1ca48e0bbdfb2c411998d85664f4a2a5fe", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "e2670ecfff5e454e5d75f0ff864ce8687a5a8bf06dab816e26f7c466a63a36ba", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "e440e29bc62bd7ed4a5a7af2a6c905a6ff9e8ede32cf983bd8b68c6788330117", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a0d4bc98cfa24fc28ab099cd60c3a4b2609de854a3f47a95735895bba3e42d1e", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "d5a5ad2ea5fadd11a2f83a8d2458303d2e1a70b0100fa9338da9e9ce0512692b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "4d27f6b7f78d6f7af5b8e983fb81c3fe51537e44b4a02def98f2184e814b8b10", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "110aa6308accf9bc3ded859f2f826afbabd17e99fddcb562be4e326b7496388a", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "eaa663ff605e09f22b18a01d3589d45491e017436dda8a9aca24d7756c386a33", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "2af03a2197dc3e7eb67fde925b7061232e59e50a565d6d83424209894e22a904", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "e1fa84e5814f41b5442333e79ea2f4abe0a28d26ff5f4bc455d9535ac64da049", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "f72e510877896c4a546267dff845c6df9c16167dcc6d8cf155002860710ea678", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "cc210ee33cc4a2e141d2ccb1fddd4e2d0dd3bd14c32bbc5c239b3438f670d185", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "188a99f30d3c6b2c6ef9b18ab3d45d1ca48e0bbdfb2c411998d85664f4a2a5fe", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "c87b7dab5e91eab6562accb17924136176d60e5fd75065cc879650368679b65d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "aaa9d7dca4c9f8d549e79d323b1f6f513d1b942267474340523baab99b8b8947", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "b729d9371ba035faf05fe085454e67c1b5fe8e0ed626f14a9592fcb918689bef", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "f8246b581d88914b753fe18f06e182fb381b347452edfc5199dc496ebb72b37e", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "e0e022dd69060d41305fe305cc3835e7d4a9c7b9300bc3dc56c0af9057bae1e0", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "d66ef3254c4ed73654faa219e4aa7179cf17d92cb169a709faf69967e0396457", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "ca42b4ee4ab760cc2689d09eb4f3e341a62a9582e8384f34708054b9721d6b30", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "d154176177c7160a7c97021c33555bf759c84af23e03d5bcea47d4e90f3565ac", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "3344a8efbde99c1b91619c34fc99ea87591369006909473311c22d19fa024df2", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "1bf91e08a128a075708d7a3150a62a0b367ee4f8fb40bc9237d7cfafe412c4da", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "1bf91e08a128a075708d7a3150a62a0b367ee4f8fb40bc9237d7cfafe412c4da", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "13bc3593dd045d5d602ef0bb07ac6572209701419c81ef7ced59555d186f969f", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "be8c63294dc4c2c1a3259766feb8781fd799dc3e151f1b689d1132acc3455d7c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "be8c63294dc4c2c1a3259766feb8781fd799dc3e151f1b689d1132acc3455d7c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "3e884dffad34d3b0df397a668889cf5e9a72ce1664c45feac67f0e743f9693ee", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "f5b5e05d259396dbf15e101579400fcdfefc144d899af1aa5a2c5ac20c395923", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "f1981bca78abfc41c48391f9847e7776d9735edc5b353851c86dacd4164f8b72", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "aa524ee125680dfcadb64cf6654a38e599f5966f7900e145ed571cd8b1c3c7bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "10f11dccc55962b1ebc11d88b3743387e7d83e1ed233bcbded2a588860992753", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "b9cecee7aaf9e449b2f112f53ef94a04ac90185482c6dc92ae19e33f7036ff02", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "8aca725b4f5c9a9d826e168b52a515be83d138abd1977b595351501c06eb812b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "8aca725b4f5c9a9d826e168b52a515be83d138abd1977b595351501c06eb812b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "6632bd2100932984548e5bf54f89b0828e17727b6beccbe1ad30611476d345f5", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "bbb00ca718247b3c0f035559526197f692df06a9297984224666be1baf9099a1", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "edbb29ce2fffe069be9b43e40bd5ad4a5b7a07a3fa5f0e8744e5fad81d57b311", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "24336a3ab52de708e1dca8484a521382235a122fc9c51ccb0bb20b95a86c1122", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "95a757d6503c2b59e94681e8f8235cb3928577bf30be74d7307d44d12523faff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "89c54b86030ce4f71cdc5820b219c135830192bf33d5995a89a42e2fad2b618c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "a3cc5bc6e6cc52fd28c5b94c6a231610dc7907d153d74eb79b2f92f16d78932a", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "a3cc5bc6e6cc52fd28c5b94c6a231610dc7907d153d74eb79b2f92f16d78932a", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "549aeeb37c835dbf3ecb0ddc6c2e0b024ce7093ca67806bff19a13b3e45e288d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "235d7866148a12cde8a59641b67104b798a58d2c85250365644e2301f7692c14", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "ed04ef983911409b8c0aa9c1dec7c97e87b63437313813dd1d968949237bf692", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "188a99f30d3c6b2c6ef9b18ab3d45d1ca48e0bbdfb2c411998d85664f4a2a5fe", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "549aeeb37c835dbf3ecb0ddc6c2e0b024ce7093ca67806bff19a13b3e45e288d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "549aeeb37c835dbf3ecb0ddc6c2e0b024ce7093ca67806bff19a13b3e45e288d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "704e600decd9a46f83983160b3769cb244c30b48225830c791c081dee272fed6", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "c563b8a3b989701161821fbaf6fe5b2d40a58ff0517a706bc2cf77925f67d625", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "1186dd60889fc6d307aaf554f8b0147f6ceef660da75219cf02887221fd47a62", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "924a10a374938aeb87fb3fabeb8600bdd1b0b8c6bca721b0ddedb8ab0e847fee", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "0a028b1901e69a35a3e65fb1df1be1bf714020033f5cd284ada9aab66fb10ff6", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "c3fa64bd168b3e4e77d3de994d84d2bed86fb39f15f484e4c45189256aea6674", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "c3fa64bd168b3e4e77d3de994d84d2bed86fb39f15f484e4c45189256aea6674", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "c3fa64bd168b3e4e77d3de994d84d2bed86fb39f15f484e4c45189256aea6674", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "c3fa64bd168b3e4e77d3de994d84d2bed86fb39f15f484e4c45189256aea6674", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "c3fa64bd168b3e4e77d3de994d84d2bed86fb39f15f484e4c45189256aea6674", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "c3fa64bd168b3e4e77d3de994d84d2bed86fb39f15f484e4c45189256aea6674", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "0a028b1901e69a35a3e65fb1df1be1bf714020033f5cd284ada9aab66fb10ff6", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "0a028b1901e69a35a3e65fb1df1be1bf714020033f5cd284ada9aab66fb10ff6", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "0a028b1901e69a35a3e65fb1df1be1bf714020033f5cd284ada9aab66fb10ff6", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "c563b8a3b989701161821fbaf6fe5b2d40a58ff0517a706bc2cf77925f67d625", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "8db3bb65fbc9873bcf7591515549d2ee3f1aa6e9f3de94ee16d2adfcc7a91f82", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "96e6446bcde072c55dc4d18fa020c6646ea6cc964714fe7621e7d556f0ca34fb", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "d7e2e73287253c665e0c2c029290ff8069cee0717deea0990c3f5e9a6b3b2958", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "a0f8bba93e3f54d4bbae0329db6c56fe814aa7f2ab12776bf594ee2fc441ed4b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "6c025288ab4561900d8cb13b736c20def0c95d6ed84aae729b94cd7766b78b92", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "57e8d80a884490f01e665f3980aede91a76d1ddb04c5b8fb74adbac27cdb35be", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a97d52d66d5b77e3069b848c0673f4ca58c378d6e1d5df2d6b85e680559e1654", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "549aeeb37c835dbf3ecb0ddc6c2e0b024ce7093ca67806bff19a13b3e45e288d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "549aeeb37c835dbf3ecb0ddc6c2e0b024ce7093ca67806bff19a13b3e45e288d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "6e3b36c64e486e33dfc6e937d75e5981580a7601560e0afb84e3904613be5144", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "0f4089a46d90a102495a8d8a09917a6077dbd7b628083635f06399495fd54c7b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "5d560439ae0f316e62d81a8c73d34de975506fc881a7f4bc63cc70d31780d6a9", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "b603a2ea4744d220265bee3f6d755ce89cd676130241649c3b09f45f1cad5c71", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "a3cc5bc6e6cc52fd28c5b94c6a231610dc7907d153d74eb79b2f92f16d78932a", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "2ca47767115329674748e65eeceee942c0576a2fe12cb51d28b4f4dd7d78f993", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "2ca47767115329674748e65eeceee942c0576a2fe12cb51d28b4f4dd7d78f993", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "76a09e2f9a34928a9494361d8b72f8d8524da1822384807081f9fd9b125e1f54", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "2ca47767115329674748e65eeceee942c0576a2fe12cb51d28b4f4dd7d78f993", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "549aeeb37c835dbf3ecb0ddc6c2e0b024ce7093ca67806bff19a13b3e45e288d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "549aeeb37c835dbf3ecb0ddc6c2e0b024ce7093ca67806bff19a13b3e45e288d", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "ca411906abbe59244932f8a87c362860a0594f92480cca0d4469ea4f5d4889a7", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1b0dbcda113b8dcb2f7f26ae9c6989ca00f9901b1490c091597fd35c8439a415", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "b70d78bdd1a1064b6f216488bb406df962d1521190ae1b362f094ae6de8918ff", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "f99052195ddde456293041d5deb262ecb4575c0121a734a3de8ae99f5ccea065", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "4a9d4b064ef31aad93b23e54daf22855d131974da7a3e16f4cd127fd46d1b697", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c3fa64bd168b3e4e77d3de994d84d2bed86fb39f15f484e4c45189256aea6674", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "11d2e6574359b9ca4f99b9756aecbe21a32830f395cd21ae627041c6fb79477c", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "706139f089d2928b1e05d725c32732aa963ec973397343d17c1458778e68e625", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "63fe5aea495f661333dacb15746ecfc40f7bb996160e5fb50f4f73a6546ef2bc", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "74d47bf2981a52ee1ec90806ca3f5f68f3188a112f074866994076c557e1c92a", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "5e65cb3de3ae11f8a0aca4b0878e0cfceb646a86c747e20df182157d0eedb3cb", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "3b0749bd71af846eebdb8bc9c87aff49cd40d3f072b6b0ded7887e869d35bab0", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "8a663d4ae2257742acb47c5a65d67011ea8283e93c81ce351f22d38b4c58a4dd", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "46db8ba2bd6c771da33c2625971c0aa5d15b6545dd40a80bb2ccd7013ef1756f", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "a76b66c0a902ba8ebbb62bc20b207060c8c4682337b80c6a5e43ce1e854f9006", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "83333217e49a99058020dd1cf3b404a1bb4d6b819abb61a4a37b82e69e1c5c4b", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "d5ac3c7705efd213efbd32778f8275f4b537129ca22cdb5c00dc81d6f2aa6703", +"T2T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "7dcbf3a08246283b5e043ddf74db3488de70684f99b9b1c17b203aa536d9acaf", +"T2T1_tr_eos-test_get_public_key.py::test_eos_get_public_key": "bfbaf6835d236fb3a56508d80750678c8daa77bd31bdd6f4e56630fb5035de93", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_buyram": "88edb1ddcbb0e0e9bc8668641f6782dc92b31f8b04b22a2e7045fe9fc3cb96f7", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_buyrambytes": "adfc76072f49bd1ed3f30970f2eb1a35af397d08eb725491ae39e7f1bee22a3f", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_delegate": "467d612d07b344be2cb655b22286b2409421a11463283ac86e27ee2824e090de", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_deleteauth": "342c7519d516c1a3685a3102f0aeee5b44e0c0d0765897c30810fb2d6f19e53f", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_linkauth": "33c73d289d101a18baffa035d9bc71dae271da4647504fb59974f9869682e56c", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_newaccount": "fa6880b6768a873eaf1f9c0e6c7e3d13f09909b3608be415f5b2482a5d0d88b4", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_refund": "a8c1a67903072ec74b921a31fa636d96bc0e98c7ce51ecc45954126725b01696", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_sellram": "8c13f0c67b8e02695e6a0f7fb0f3c9bb76d300f900f26f3585c09bf3ba83fbe5", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_setcontract": "9b23616e946e5d68f95dbb868441714c3c8bd9fbfe7edbcd30b47646131bb445", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_transfer_token[False]": "be9b0501c58360958ce448a77b0b596da8b78a7f074a2e5d7c1b7b32279188cb", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_transfer_token[True]": "be9b0501c58360958ce448a77b0b596da8b78a7f074a2e5d7c1b7b32279188cb", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_undelegate": "65d046daa1efff18a12e67a744e144d47a9da99d24acedc2b9fb4faa7caf9dc2", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_unknown": "d2d835dd994610dd9848bfa3d4d04aa311d0a2f489c52104e8de2048043debb2", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_unlinkauth": "4bdec7eb7d368d8270d20d60d7db1bf7ada99314b6eee14ff93aadd16204b080", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_updateauth": "a0d923710af2107dec8a92f54a05da8fe8e7f71e3489c076ab2209cc12d38674", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_vote": "cefe8f412f45f03e0e8f2d80d2df055de43f99929c9a9ffca01cafeec2e37d3a", +"T2T1_tr_eos-test_signtx.py::test_eos_signtx_vote_proxy": "356bbde5497f5276cd8f401d5d3a34b445d6f8b4a7439f17c9fce575240c07d6", +"T2T1_tr_ethereum-test_definitions.py::test_builtin": "160950f7401c3596ea1214dfaa95eac862b8ed9395177af5d57bc9bef3b89e16", +"T2T1_tr_ethereum-test_definitions.py::test_builtin_token": "ce3781e58e5acb37221f5a16e7bc188eef7eb89103954325ede5d38035deab46", +"T2T1_tr_ethereum-test_definitions.py::test_chain_id_allowed": "e1b19e61b2fec523beacd7fe971176564458a6a8483ddcce3f5d55c4fa6895a3", +"T2T1_tr_ethereum-test_definitions.py::test_chain_id_mismatch": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "ad2c51136daea1ab906c8820bb6e865eb1b4fe9dadc89a85624dce6b315e82f1", +"T2T1_tr_ethereum-test_definitions.py::test_external_chain_token_ok": "c5602199a7ed4982d444f530a712e1e41c3318706e0d36c73816620590842159", +"T2T1_tr_ethereum-test_definitions.py::test_external_chain_without_token": "81242a2a290714481e278296fb94785f7d3835f9634e21bc5b5adedb87041af2", +"T2T1_tr_ethereum-test_definitions.py::test_external_token": "e0f24ad138531b6b37f375b60ad61dd783b5442132aaf048eb8eebf424a69efc", +"T2T1_tr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5fde91733e09ed13f52198f548be66278569624d5219e2e66e67a09a10fadcd2", +"T2T1_tr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "7ec588e76d0630dffc6d7d4c8690cb236be20b3d2cf408ee2e8b95123cc128ee", +"T2T1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "45a53206f7418aa6b7e7c1af593b863ee48647c92aa8aaa01c743645c1f59d39", +"T2T1_tr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "9b2287a48312a236070f3a513c5416d2e221a3dbcfd99174f3ff354ad71075b4", +"T2T1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_slip44_disallowed": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions.py::test_slip44_external": "128d102fb5da35cad5d28ba9caf26050ec3f2e9dd036b2da2db145200601ee9c", +"T2T1_tr_ethereum-test_definitions.py::test_slip44_external_disallowed": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_bad_prefix": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_bad_proof": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_bad_type": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_mangled_payload": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_mangled_signature": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_missing_signature": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_outdated": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_short_message": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_trailing_garbage": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_definitions_bad.py::test_trimmed_proof": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress[ETC]": "ed6274c7c0f6959631902eda4634def895e8e36d7f5bd7d5c12f54862c1fc8c0", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "961e8bd243b5ed06190e4cbfa5d167c37486b5b69d61bc2ba7d7ab2199165026", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "6c593d9916b364a2f186248bf2eff47ebefdad85624f7541a97d980e05899736", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "9aa13720de1d0244223952f6643558d1de98276ae0bea13c4a6886db4225408c", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "5998d9a3deb07f2b7e43b27f8ef055a906a1eb21f20d5a399431d8662743c070", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "f8081428c48df7082447e37e3dd339c2cba4cc7aa0a60f76c8a85ef8e92516fa", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "3789a5be2197a24130d56b342265527ba6f2f4f950ebb1a7e857c3b83795592f", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "5bba4a8397142ad969516b9030d7980a937129d2085bf6902077e45206c988b0", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "93030aa3b32588c8baea355bb09f22d5d5581f0b07c973a9d2afc21434af02de", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "522b408845e46cedb6d38aa3e6038c251446b8006d5910a8af68612b9d305c6c", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "fd8bc783f6c79b05a73818be841ad62fc56aea3d3a54f278a60b5131a18666d4", +"T2T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "d00178ecfb1db466424c29726c1becef49baa4106d91431c3d40eb2af48c1438", +"T2T1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_getpublickey.py::test_slip25_disallowed": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "1078983c7d9c3b5d9a8193b727479c67f1cb4df677e361c58f3d811272d5f42d", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "a5a2668f28002b9e6cfd17189c24e93338647a0420ce854708547959ae320c71", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "775dc480858683a2fb571015b9b71b49e86dfe2f5547666f184ee83b81a1f5ad", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "c10e7dd83d2a6582f83e5f81c232e79fae5b5de494f3da40ea6fb6c1d2b9763c", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "e6a63333102014cfa03cc7201a25bbba7a5a75692d5c4c9e6ffb7d39774605ce", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "6ed5e656f7c545cbe2261326f90cab7827855f98d4e0547a15250de93d56aa46", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "775dc480858683a2fb571015b9b71b49e86dfe2f5547666f184ee83b81a1f5ad", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "775dc480858683a2fb571015b9b71b49e86dfe2f5547666f184ee83b81a1f5ad", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "775dc480858683a2fb571015b9b71b49e86dfe2f5547666f184ee83b81a1f5ad", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "3f7757200f7e69d35150751fab8ce13be1ec5ad34160be3f7f79272854e53750", +"T2T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "61dd8e8708e741fe2ce25b43fbd0a61c1a55c86e03164f9d7d517b4bb0617063", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "aef2676eed86f86fddac0aca920e27e7489af7b5c0214286cb05e93012563c3c", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "439c697473e8c2a6c498cb66591610699a7e464d604994dc603c6b6ac51bbe6d", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "4a12ab359bdff9c88961be7c803ccc5d524d6bd2b59ed59ee788f4d22bd50cf9", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "ae6d1ab9362a594229edd1107bb41e34b34ae40304f35a745c7b960310744da5", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "11842b30a8c53a1f970359ebec8f0943585b4375df669b22c203a60432c35673", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "c060ace2155bc24e6a81b00cebc1bca853de51da4e591509975c1b65e4fade3d", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1b6c0c9aa613bd773b634c4f2f48ea265b52057b8fd47e06363197ae67b44d60", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e593b47f712587a504d35a112c1a3cce3297a344a8ace8225d3be0069c2e2ef2", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "be1135bc45b299523036e808983b053a885db43bb96a83c6dc5023d8580ca8f6", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "bbbf583704be9de0182b8a1f811ad1b8b373f3bb0358c2ba4a75b65609ceda0b", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "4564621d654c359227b54915edc57a19cc433242ad423ed504924c48655f4802", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "768c4f9c495b9ab46920ebfed4e1c23e018695b9bab3a81c2f6a3b0de0efc947", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "92c393928c54cb46ba289035b01ca802cafffe84302c45952bc6798f77b730b1", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "bff846b9909bcf4026585809c15d8768fe3b62abdbbf859a5a236a747f03dcea", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "a29238acfbdcce004c233c551beb0bcde12f0201b71191af52402139cc476f08", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "50b9bfd2fa5c768f95aafbb793177161b6cb886c15b5134b6d56df0a4287d61c", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "8f99f02d4d7f6a94c6acc8cfa8307f7400faafd9ede235116b1af875c35aebe0", +"T2T1_tr_ethereum-test_sign_verify_message.py::test_verify_invalid": "bbbf583704be9de0182b8a1f811ad1b8b373f3bb0358c2ba4a75b65609ceda0b", +"T2T1_tr_ethereum-test_signtx.py::test_data_streaming": "455f50da58804ce64d67dd562e9e77abe9eb3bdbaad8206862284562c007a5df", +"T2T1_tr_ethereum-test_signtx.py::test_sanity_checks": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "bb69529fdcb2efcb65d4c1970a93f527de340639b34e3308131a8e34dba4a32f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-ETC]": "285604d7c2c4695c5ad97fb98e0218372129ff62964376b4a497fdde8054dab1", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "655e635d5ca1fe86552424ed3d53441d4cd36593fda416be9d07da9f5c4554e8", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "a4eb9d4f437a6c26283063db99b50934790a042ce6a9d8881fc0acda135fb498", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "655e635d5ca1fe86552424ed3d53441d4cd36593fda416be9d07da9f5c4554e8", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-Palm]": "bb69529fdcb2efcb65d4c1970a93f527de340639b34e3308131a8e34dba4a32f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "bb69529fdcb2efcb65d4c1970a93f527de340639b34e3308131a8e34dba4a32f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "bb69529fdcb2efcb65d4c1970a93f527de340639b34e3308131a8e34dba4a32f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "bb69529fdcb2efcb65d4c1970a93f527de340639b34e3308131a8e34dba4a32f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-data_1]": "f6abc81d96d9da8b434cab9994e94b0d883c0dd841e0029856e587800bcfab0b", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "afa498804f2d6dcdc80ed65f3f783ec9f729031ae923da97ecb59220ccf53d86", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "84fb2bcf87797f92e41a593696c599df59ba02482cab6f8388c85fb51b969da9", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "bb69529fdcb2efcb65d4c1970a93f527de340639b34e3308131a8e34dba4a32f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "bb69529fdcb2efcb65d4c1970a93f527de340639b34e3308131a8e34dba4a32f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "bb69529fdcb2efcb65d4c1970a93f527de340639b34e3308131a8e34dba4a32f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "b0ddc72f733e1087a6babb5449e2ae386acc2f07d41d78b2b4662f80c6ef9f7b", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "bf7464dcc8c8a538f9b9ca44a678e91194201caffe2be7e298303603504c2f52", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "f4c5a9d6d1db54ebaeadd03e6fb624a8f6df2cd65b1c7f5617543e02ccf8d65c", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b85a0f070ce24baea97caea403c1c8ff68187a9bdd606b6cb0a781103443be6d", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8503f731645d132eb3ffddf2a5c732ec1dadf40f7ce02635feb1f109105e0c29", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-ETC]": "94a53a4ce5895328333a6c73c13dc547cd79ae3fc36e8ee4ae5b9c8f712cd0b0", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "5e0f1369aba6b66bc4c1c44d62aa19a8bb24d2ccaf70ee1d2c88f5a2676890c8", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "01c3a1dd428d84556d6314175899404badc1dd1edcf601538cf6ac5e6d72810e", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "5e0f1369aba6b66bc4c1c44d62aa19a8bb24d2ccaf70ee1d2c88f5a2676890c8", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-Palm]": "8503f731645d132eb3ffddf2a5c732ec1dadf40f7ce02635feb1f109105e0c29", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8503f731645d132eb3ffddf2a5c732ec1dadf40f7ce02635feb1f109105e0c29", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8503f731645d132eb3ffddf2a5c732ec1dadf40f7ce02635feb1f109105e0c29", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8503f731645d132eb3ffddf2a5c732ec1dadf40f7ce02635feb1f109105e0c29", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-data_1]": "2d9bcd9bef542b921a6c0c5b32b0484fa2e119bb624ccdce65aba7683db718de", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "e2049d55a8daf1348f31a7867aed207f8e0919615f57078d9074543b391043da", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "11e07bf2b7185045d0d196e0516c1144f85e63c82c7b7c2591a34cc9ffb49cd5", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8503f731645d132eb3ffddf2a5c732ec1dadf40f7ce02635feb1f109105e0c29", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8503f731645d132eb3ffddf2a5c732ec1dadf40f7ce02635feb1f109105e0c29", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8503f731645d132eb3ffddf2a5c732ec1dadf40f7ce02635feb1f109105e0c29", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "b0ddc72f733e1087a6babb5449e2ae386acc2f07d41d78b2b4662f80c6ef9f7b", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "5c3a084ab8774c70c231d9512bf21ab41fa1ed83dbde4b47db4ad2ea2c2579c5", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4ad645d490c48dada990385a8ce6c4851975ceb19fdd8f3c6f6c62155a99d4e5", +"T2T1_tr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "16530173fb0531a7bb8e5b9137f38757f9ea64e1a1fc00fd2d38804e51b08e3b", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "12b85c52ff5e456deb7eea65ac5118fcb843aa91cd4e1f0813858afc46d82cb7", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "75aeacf94afca3920e14b05a45a1660e25af92b933cb7704c0fad98b8d44c34e", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "b0bc64d167e6119713ee5938b9cd276f90550d5aebfe4208309428fe83350bb9", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "bf7464dcc8c8a538f9b9ca44a678e91194201caffe2be7e298303603504c2f52", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "f6abc81d96d9da8b434cab9994e94b0d883c0dd841e0029856e587800bcfab0b", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "4de3b22e05d9249f46bbb7e7ae28b1666f09b62ab8ad35625ec724e4f426d1a3", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "84fb2bcf87797f92e41a593696c599df59ba02482cab6f8388c85fb51b969da9", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "93a439be93f84619d788bc6b5af8ad8eb0fb565d41d5118a92e7ca1c70821eda", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "8a7a341e729841d65a927db9c8d59205f88726bd7b3fb00160670ac6d856b61f", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "bf7464dcc8c8a538f9b9ca44a678e91194201caffe2be7e298303603504c2f52", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "5c3a084ab8774c70c231d9512bf21ab41fa1ed83dbde4b47db4ad2ea2c2579c5", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "2d9bcd9bef542b921a6c0c5b32b0484fa2e119bb624ccdce65aba7683db718de", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "d0c876a934a975fac6b1a994ab5e29afefab35f9c94504d30c65b6d79b0007e7", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "11e07bf2b7185045d0d196e0516c1144f85e63c82c7b7c2591a34cc9ffb49cd5", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "46018acb1541f0375efb6e0012edcdb18523619c666383dbb3809b02259092a5", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "4ee906895cb41a5b8cb0015448685a76348831979e40e0baf88a865d1830f501", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "5c3a084ab8774c70c231d9512bf21ab41fa1ed83dbde4b47db4ad2ea2c2579c5", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "61ed19b16ee02ea1833c729bc9c187f6b1e6a48bf03a59b0f0fa7b75e46a1b79", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "61ed19b16ee02ea1833c729bc9c187f6b1e6a48bf03a59b0f0fa7b75e46a1b79", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_fee_info": "e38d07ecd779c5a95407d2e855699843fff8f21e91cca6e7d87b4b6419ed13a1", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "ccaa3bec859ce340b76d7b5143d8b4a421f7072557a74809bffe7de366b711ea", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "6e3a3d4a2bed21e7ff490de839e1552b7bf6efaa0cd4e13347af033dfc7207fa", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "35482ad949c431a33c624666e08d591905a690a7332467e16a6e2a71df75f029", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "8024e2be40f327f2c1f32b5d2a9453195bea95ee6166e9080d046c27fe79f49a", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "312040934463be0aaa55c97fa6ecb848c2900634948d74aedfbee01fca445cb1", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "2e6e83018b488cdb9d9940a174ee57a38de7d537035be29daa8804ef0b3c8107", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "799ec72eacd79f6360c85c2c9471cb39ac4ebff2bdc47f173cb4a88e26bdbf38", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "19d130650ddcfc8aea5c724d606ffe70e20d9b6cd14380e5c7778129834a1bb2", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "c36c757f353e7bf604bd66b195f184694de13077b5a6fb4e09da9da06b710313", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "68e33888fcb311e5294f47b8e55022f5aaf1820059da65052b19c7472938e0ea", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "88a5885c6228e6a9c7de2ce95e78ae89612a4383b6e2e82aae8a7fdcc459f4da", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "f8c7f03af991512e9926fc70bcfdd354d34dfc50e98ba9b2b69a5c578eff800d", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "b4553d5c1b79c7b7c86bd9599dceae66f1b0b66868d54cfd019e156616800764", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "e84e183945d7c3897b7b6f391dae09b8a0ad667b05505250b55da1b4ad8ad08b", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "e84e183945d7c3897b7b6f391dae09b8a0ad667b05505250b55da1b4ad8ad08b", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "748d50bf341d1a0b6979de5986a2ec0816af0d675975aa31e9c09d733c260d78", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "748d50bf341d1a0b6979de5986a2ec0816af0d675975aa31e9c09d733c260d78", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "75d88da66e07c6da3f7bfb1dd521bdafd55ffc9e6aeaf7781c29f0dbad4757d4", +"T2T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "75d88da66e07c6da3f7bfb1dd521bdafd55ffc9e6aeaf7781c29f0dbad4757d4", +"T2T1_tr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "3c59621e13280e0e854ce006d2be2fb9630d42839cb49cb08c636ede2489e454", +"T2T1_tr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "32899aa417b955408dd2a998bb68d8ead7893e0d4690f44bef9800aa0a8a58c2", +"T2T1_tr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "084c44a68252aed731575464f6987c59fe58656acd6896d26a24612d0117f1bd", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[128]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[129]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[16]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[17]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[1]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[20]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[21]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[256]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[257]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[32]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[33]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[3]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[4]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[512]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[513]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[5]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[64]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[65]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[8]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[9]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_signidentity.py::test_sign": "c9f325268bd9b0538152f0184b442f7781c12c22ec08fb63e98031fc94983129", +"T2T1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "6005498816085691a4234bf6abb3ad17261a8794c1c557cb03de03a1935ffada", +"T2T1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "f14904912ddcce24eb05d462f31ffeffc92a5a6327aa45d2db6acc81d1d177f4", +"T2T1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "43e42cde922c6a77482e077426d6a7554bd4ab01739fde5e33590668e0eafa1a", +"T2T1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "06bc7f9a4dea9a83223d548663f82ab9d8d974dbf56c346954964aa3251095d9", +"T2T1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "13512dd9adf357f018189959624fe171ff68f61e36ea8f647325255f05582a7d", +"T2T1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "70e18f81a476f43369835f1dd6900ee8f145433839a3cb9baaf4d7fd7830f058", +"T2T1_tr_monero-test_getwatchkey.py::test_monero_getwatchkey": "6e185c10b5f989682c3c29940f92530c0c990f61f82da0ad62a0a1f4c7cafdbf", +"T2T1_tr_nem-test_getaddress.py::test_nem_getaddress[False]": "61d3a65ec2d7a266e47b389e79705dd6df6b7b0d764bd2d3b2c4ecd1c5ec14c6", +"T2T1_tr_nem-test_getaddress.py::test_nem_getaddress[True]": "fb0dbd69bea67fa29171fb4d1f55dabb6b1eccea1012fe2c727efb65a1cb93f6", +"T2T1_tr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation": "433453aa3fb1bccd37e8465727c195242bda48e3a895f1574fee8b732b3bf8d7", +"T2T1_tr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_levy": "7795947d43dcc3223214a6355a4d3a222e2de892b730632dd7e7b90db46d12b5", +"T2T1_tr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_creation_properties": "b685a62857a03f3b974c71000a3277c61484847d1519ffe52fd2e1e68fd1fff9", +"T2T1_tr_nem-test_signtx_mosaics.py::test_nem_signtx_mosaic_supply_change": "d374a88f1ac08aa5494d9640618bd2e687941fcc150a4525bd10b2878a6fee92", +"T2T1_tr_nem-test_signtx_multisig.py::test_nem_signtx_aggregate_modification": "331670b6072b88909abf154b837211d5368366e31c3f4c2d953dbceffbe24958", +"T2T1_tr_nem-test_signtx_multisig.py::test_nem_signtx_multisig": "ebb97c21f104853fd9540a3b5b374d7be5c3c510657d707c9f6b3062f7346686", +"T2T1_tr_nem-test_signtx_multisig.py::test_nem_signtx_multisig_signer": "142e5708a14bb3edcfd4f46ef1e877214d515c11205d14332f8d12bf12628f0e", +"T2T1_tr_nem-test_signtx_others.py::test_nem_signtx_importance_transfer": "42ece5bc48bdbf2258176931500bbae79586b4209f6829797f257c484ee281a9", +"T2T1_tr_nem-test_signtx_others.py::test_nem_signtx_provision_namespace": "8967296f193a4086cf7b35e7b337d4c0ebc0a293d60d07ad0b639315bca4b82d", +"T2T1_tr_nem-test_signtx_transfers.py::test_nem_signtx_encrypted_payload": "e116f99b851a3bbd26a3300527f2189e8e9afa2f758296e75b3d123d5049f231", +"T2T1_tr_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic": "b61933c2d4d453312aee327582f9d3ec84465ee53a0eab17ccc52185de9d0ad6", +"T2T1_tr_nem-test_signtx_transfers.py::test_nem_signtx_known_mosaic_with_levy": "47a57cc81c0ce5862bb5c1ca997e667ddb9cb7b882ff7019424cea2843d055a6", +"T2T1_tr_nem-test_signtx_transfers.py::test_nem_signtx_multiple_mosaics": "fbb164b9ffabd3f47db3689d70a815251d1cb2a47c832ff37008e2b5cfd190cc", +"T2T1_tr_nem-test_signtx_transfers.py::test_nem_signtx_simple[False]": "e01372300cc9dd36f5f24deb0fae3187d44f3eba1f99056cf2eb4f1455d0765e", +"T2T1_tr_nem-test_signtx_transfers.py::test_nem_signtx_simple[True]": "8f9da330ebc39a8822485a81d90e8c72ce6ea6638ee322ce9a5b37102ce7337d", +"T2T1_tr_nem-test_signtx_transfers.py::test_nem_signtx_unknown_mosaic": "79d1641fa24ab0b56ddc8db326d7f41664dd81d7a9f8c05b605dcf3e919a6c43", +"T2T1_tr_nem-test_signtx_transfers.py::test_nem_signtx_xem_as_mosaic": "6e3fa996412f9e50c6f68bb8f79be6d89bb929233be8d969e5dd0995dee90e6c", +"T2T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "537f9390713eef5cf30c74b2dc54912ce2f8a409a01ea44f4bea4151b69eb482", +"T2T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "82c5447ccbf56d66b5a8bdb368e37861a9663b01efb8ffb193022fe6cb56e1eb", +"T2T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "cc2ee353ecd391ce481709256dca2eb741984ad6cdab5952a065e8d11875df5b", +"T2T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "001377ce61dcd189e6a9d17e20dcd71130e951dc3314b40ff26f816bd9355bdd", +"T2T1_tr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "93c77f22d7c2f4c65c86db44877b4a95f2ca7cbc40e7a2a712d2e753100d8331", +"T2T1_tr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "7ec84d7cbceb46f81649eee01372531f1a9d834a4cf7b7a6b33c920b6f5a746a", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "f9385c9434e876995a009a09354d390f8158e53b7b364cfae23318e6045186be", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "085cd49258706ae063eeefb6134b0b7071953b513a19633a75d169d066ee511f", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "b17e25e1230bd0c8e130d11ad2301372d3edab94e7abd98653adacd9074e62f1", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "040d7e0dc5be2cc08e320775f067a328b68c673c726da4023462476ef24831d3", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "16820b160cb5761ec2026b62fb86f7cb28ba1b16f50240f05d368d76c70cb55c", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "937b3a27d15b988dc7b92528314c19c13005574862f92739c758db7cc5b2dc0f", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "3854be11b7c5a92bbb3512fe8d7313d893a3d2199dc52875f6dcf43c081e45d3", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "15589a772af70addd19a7c90b9e2aa7d8db9f03aace55d5ea13407763dcab3d5", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "3758800877db13a7a0e911244f11d77eefeb68dc8a03ff4e4cda4a3e797befdf", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "096145e96984541fc17bc027f062c4cd86a02d778d9f829a9eb5e1c697b5a67e", +"T2T1_tr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "5c98b5a589793b80f6beffb4e824c197f97e9547c0a5a3e98a7ffd16c194ab6f", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "d2e76d2d7d3b7c69e813e9247706c1bd3d7b3735bfb64bbd6bb18f02b5938c3d", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "f9385c9434e876995a009a09354d390f8158e53b7b364cfae23318e6045186be", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "b268e9b8b91d67ba4ace59167fbb027932d20aa9bf962863b5f29a071912c75a", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "2eb94c69c3379c1cfd440d0eaf24ac7f2fb0cead5abae048329ab184af4dbe2b", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "67faf75fa62a9b92aa483025efcdcc747446a4b8614d2171154af553c818352f", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "582505e545c8db1a1220a9dbe83244bd4ba849ac5038e15f1643cf1fdd0efd75", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "39b5dc0389d6cac9fdb14cc6597f952e67ebd8d1b60ffbf68fe0fbf616c79812", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "cbfca69c0528407aa5b09a2b43deaffaf1177a486b2b27520500e2271c0c53ab", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "519a15d7109fe57f20fcb2d1d9aea8c430352ada23a5a37011b9298f5fa53d33", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "0169ffde3a643108fba3d8187a0b0cd3e9889fb5b0d04e1ecf77d4cb80365846", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "c89579264d1507ffbfb8f6e325eb7ece527c234cd6c2ca6a2a9016191efde902", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3721814c1aae8902a75d81af1bc327271c3e434b1fc16345eb44a078b0e84b7e", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "baba7007d4098ef2cd87d084bf896794a95f69b5bc8c575d882a7949d759fd07", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "fe00742078f873d4138b1bc5f8b79ee1be20afc2d916aa377a32161424e8c40f", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "303f30622962467a7cfe82ae8fa831cf10c4fc55f1680f0b9f42a3081ae0fbcf", +"T2T1_tr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "304b5ff5ab551dcd8cbfc1e56ecf50e68dbd16ed91559a3be641ebbe0c7d0cc2", +"T2T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "bb4804632f99d23f259e1cec1d51ff831026b8ece2ab59c4c47cc77a000ee9ca", +"T2T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "177c8262789d65b53f66cc5c3db3222cae2c9a77a176ce545df2c3d100326e66", +"T2T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "f6bad643e2cd463fa15f79046f9a395921cdf79483e6395fe8c40c185fe636e2", +"T2T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "c8093490509fb40b424981dd21f38d53208573eb8416a19f1e18a0edea380d45", +"T2T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "763a18879331a513ef95495c943c4208d8c8695da8a6901e65dbcea28ade853b", +"T2T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "c93ef3119d7ef3716dcea7a555c891297323973a9c437e5510a2d4069835a551", +"T2T1_tr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "0ccb9080b1b0eb0376d3e7f9673338529b3e8303d133a744967f4dd9b88327bc", +"T2T1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "d77562bd7c730b9ce505e739111c14401dfbfa32e089ad62fd6f0c815b875d0b", +"T2T1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "4c62b7bb5f494f5f348e54ce5ac1a54ef7f58861edca485b6f63dbbe3d54832f", +"T2T1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "1016f83818dc2ea326453d5777819db4ab3bbb85e8add3c0992eec2f7f80681b", +"T2T1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "8dfb21412cc95bc9c6bf1dcd8f30f37bc3f14bdfdc2d47cd44d86ca53c2048d5", +"T2T1_tr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "53862550f8f5c498517004a133174bcb7742a74a2320632563ebdeaf1fcd7ee8", +"T2T1_tr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "8e1f221a5916efb114b0fd89f93dd61d06b0c3a59c14c9832d80d4dfc51108eb", +"T2T1_tr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "97ecad8977fd9776ed293c5f9a5964e58935fd182f29bd8b366b08638d271a2a", +"T2T1_tr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "78dc5e18a4316367e195442eff74f22f2d46195886dd1423612f28c59f96a739", +"T2T1_tr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "b286d05e21d584dc84e060ed74bcd6f9fb92793bcbe55d5c6c907488d64eb87f", +"T2T1_tr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "037191c280912f986f908209c54f527618492607fdea5dfbbc82f3c70a2c1dc5", +"T2T1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "4d9b8b02113f0198de60ba1a6c72954e85123a4168881fed301ce7da23c2f888", +"T2T1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "271b7d74ddbfa978e01f84fb09629dc07e3ba5edcb0c3e63524294e867883141", +"T2T1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "5295ed27c2723ad5112d40a2d7649c59dd0f41985ba64fd36e7082fea4051f83", +"T2T1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "73164b746a5d0528e92089c755dff5733acd4d60ed9450eea206f7576c24e526", +"T2T1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "1389e8dc890d9b208451c32dcbd95ccb4079b55714f213f8fa09fc08f5f0232e", +"T2T1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "b5574156fb62ea9b3b6dd59902719502e3e0f3ad02bd63539ede6ec814cfd423", +"T2T1_tr_ripple-test_get_address.py::test_ripple_get_address_other": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "bbf4b68ee8308572f2708dfb09e9c2765e596adbfd67de239fe3e48dca603090", +"T2T1_tr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "c505ba13d99116c5a4ee2ab05a1c35f60559c28fb09d3261aec347589655160c", +"T2T1_tr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8fbcd6c25145d0312f5929012f0f2833bb1c7dda5ce7e9cdb9b85672986d92eb", +"T2T1_tr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "651e3cef3ae38c84e7d3d5d8e66df66d543f6b329fc233f0f492a2538c4ce83c", +"T2T1_tr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "b23c008c587227f08851ae376fd185b3f51eca252c61b74e2f580ca2ebc27168", +"T2T1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "ef5ded24376c6457ef8e1ed04b471fd459482e21f8502bb945b4317fba11de22", +"T2T1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8bed62da35b0cd32f16b871783e762bf073f79a0ca56610fdeb4a4d8a179b13f", +"T2T1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "78b10ae64450506a93f03edf694f1756984b5959cff5fc4b48bc62f5b0115f90", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "955e45663f092912942d390fb17d595afeeb6f2999619f2a9aa68219644d8728", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "2c0fc8975585c06c0fed666e23cf16eaece25d1c3babb70386417903fab17693", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "52aa5f4d7f6491de451456952ac1b69db70ff324d3ab6736f07704197799614d", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "b06545515943c531cb4335d2d0c6d2bcf69aa14b3a4216c0fe42a1a10cc53a53", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0fb097f6769b5d5f8482287f2ff993f5d937393333a2662c69bb0e96e78761c6", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "58bafe188e7f1feba207c06b0cfdd2ed3f2e9aac57929e4d404b1426eba0feef", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "6b203d02fee530b849f68d0df65af70d6841af74e037186431d586e1c515e0d2", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "65b380c701ce51416d167404dfa8264e4caa8a97db86a38740f428a192264c6b", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "b46b26e6c842ca5573a08dae4999b71d87dd657be7554cd73687ff1c15aba494", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "93aa229fd2ec6876500ca87566e514173798978b70a70e8dbd4dbb6b5dde349e", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d0a5f4c5a911cf456c776d68703de9dbba43f0be9b9bee5b858ce54260811462", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "cba51fd175c35486e0408467d180f06d810365e9cb67b573833261b5b3b89364", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "0981645e24d80a154e01c22c18b9988e2c43b77eb5819dbab7a4c13b65b1af52", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "9fb2a8c4e3be40b0dcdcb7cc8c1ed2352cc1642490c5c25bf56593a15b1f2813", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "f8cd8d74f3cac5948c3fa2ff65d3d774dc22f04f068e053bb60c35ad12512328", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6d6ba2dd6c2acd932383772064988aa2d238e52973e35a45c627515baac86dc5", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "becca49675bc67b83851cbd151453b0594c706799a94485ec1ee0c8514892bc9", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "21de49d950b14a1a9015fae985363c557c88c34131aed8f4b909a28e718d0edf", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d7b5c89570e6e35175e1ace97648cdf6ec000dcad4190ffbd1d8c1d1313162af", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "43c64889f61c06ce74d7c9d942e962ad2ba6db93e41a812e3da81ec05d538d12", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "e2ce4a2d5fdc85cbe1905aa1cd1ac1d9e088b757060aa4050443771438ae1d8a", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a5e325d8ca3cdf35a1477a3be4a5c1656d98ed6b872c8380c007475a2de7e64a", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "e2ce4a2d5fdc85cbe1905aa1cd1ac1d9e088b757060aa4050443771438ae1d8a", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "ae1c2d808f347e4dc9bd17e544437bab2fcc36ade4c335a5ee8e009b868bd507", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "1bbb826c5ee9606a6e21ef0f7d97fb152f53c3cfbdf6138ccda1a6c79a8d9e25", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "1d29ba32dc3de4deee02009d59106317e1df6fdab2ab00afebbffb5bbf80b4d0", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f20e4368764a647e535f70d3d7cf0065ff2226b03330a76ce0e650381666d4d8", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "d9963a1037b498fc65147d1d0d22f6930c425892aa14fcef73d799d7a420f5ac", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "8c190add18fbb425737b04bdaaa0b76f9fea529ee9eebc33608599572bd7ae96", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "31cfe2f70eac4f2efdf5af713c795b3fc661ef28ee0324367ed2e34e7cf5a42c", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "194ef185dae318891707fcb58bc0d8cc4d80ff7303d72f0384c43aa7950d0398", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "1591db209637fdb7fe0f723c85b4f8755b5cccf9a13b72ac8f9ef174dc6d7ef1", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "c28128f087bf8bb915e37d38d4279d6da0d5cf29a56e938679ed2db29bf443e4", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "01252a337f8aa606291990103870dc92820669dae0f1286513ac3ac1b1d9f7b6", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "f508b13c8d11e552794223ed12eac535170e11fc496bcdae9a6a1ab22812c96b", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "f6dfd545c62a0676c8dc73a5936f0761cf269a24bff2ff7a1b7f0605509df3d5", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "4e02107eb500a14e43dcc0fd519eed13c174e6e3cd7095980ff12db55c73ae6e", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "418baba1259383b4253ef1b61937fe261c30a62c8f780d0b9cb40c0f08f78912", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "1d9ce4b20e1b81029f1884854d076a2c692a6c81f888a7b3624d11eaf3cf5b34", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "a7228c04791d8f37e87b2255a439b28edb309bfbe98010ba88069cc00bd6801c", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "417ede589a26635239f5ae6dc468398d1abafc376731b924f6f6fa854d2a8215", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "e7f7b1a1d29cc1118e42bacd9536a8727a8b7043d35afa7de9145a2f69269b68", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "65b8bd34d4a55c939e46c0b91832232ec3b9a04a5edf76c165a5197fbe8cefa5", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "164592921cab2e32d0065b8212fe41fb45742756589eaa62cbac1652a7998dc0", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "4aeb9a4e8553e4e42116a906a73c502bf9cfb8fec2009eb3b38e6b83a34ed959", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "e15f6a557803724ccbd6c4dcc7f957484a87acf3261ad15ef6b197d8bb89d9e9", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8115e51186f8b837eca96c046bb3cbce729eddfb6ef75760f0fbbbf16f1b8012", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "4d3406ca8c328868c883f017d44eb1e4285746b89f0dcc928540eb8a159446df", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "24d25bb95f8c440eb785598ece1ff564b588922b4a426e60da4524161d5dbd01", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "681b31759960b73b71682d1ad59efd18fb25bb96c928ff2b5ab04998bb5d58ff", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "ab81ac26dd187ffc9c91d473b09d7f8c4a033a901efb7ded8f91e0d32df62f61", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "e10c67539a9833be9e10b0e51079ebccdc6031e016a1efdbb524c90b956a4eb3", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "e971775b86cb26dd6a4a281bc06300fc5167ff753604f0dced504913f9149d15", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "7b9a937d958f63b515ce0648992116b8d9a36387a7d9543817df888737b7a48f", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "51156dc4d9272563ae2f6be9c5a8ef062ffac35894e1f308eca1e1f467ce7195", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "4f3a06b63a20c795b100953348479b3975adfe4a1746a1c04bb5dc1f604fa908", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "eaa0e6a8997dd34919b0a2e481ca78a345d00978f6d82c2f5f8f2e061907e362", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "1652fdfb4e3b5b6d83038837efc0e8571aa32ec28c0628c62029491733ec7f9b", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "d72b26d770d35d57e55530426749d2cc8a5fcb39c9f80d6c00c9d9c8bb2a45fc", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "7249944f54f49b4afa4f019478d57fc79ccbaf345bf69df387890f2bed6ad71f", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "1d29ba32dc3de4deee02009d59106317e1df6fdab2ab00afebbffb5bbf80b4d0", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "54f07877d548b481295797131cb749a91e96f82ebbaf48e546ffa157239a8aab", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "b895cbbd5438f94d764c3ba40fc76b29989422b9e358237b68ff1ee11b10576a", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "883a2bcc03448a46e50c42ebdbdb6a26a767b4b8386f6b46dd7ef4fe5581d535", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "710504a432b527e092c164d720d668c8680e324f0ba4e116f4957a7468c8e54e", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f22625e9c7850e04059b58245d29915b85cc7aebfc73d4bb4b6701c5ff2749f8", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "42f905702d07d45dcf657cddd4dfff1c456d8152c47d3f42c1fd20e4c5570b04", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "93bd7e0abf30990f8c0e112dbb92fc7e00575ef9eff2c03bf6374758a008275d", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "38bae2348e399da034cd696df6dac7f9c2ba386e4294a0ccca238c3e78c97d93", +"T2T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "60e40588d05a7a661f4ade9a79ca75c3ca09253f0cc4059b7146ee369cd0c45f", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "c93a848fd832c1a608375343d4b82bf01ef39c809048721947cc7b47f3d39369", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "51c9bf12d749b6f3ab579018f6cf18cc46bb62b0360af197a3e0eac864d2c040", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "9eb40cd6e52fc7d2d222097911c70556f95916d6a6e540f6b871878f8e3cd116", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "40177317fd34239b23e92db3ab64d859544d0e5a0317bac719d81d5ff49710da", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "3c4c49149aae5d2cd4939108ace5040a85c79b3948c1913fe7c2cd7c9962c5be", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "aaf6bf2cd494fbedb1978b78817d57156950592d7c1338dfc09daa90d1bbb38b", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "b025670f3d20ee35eee60da8d45a78d63525bfe808423a8622c0ad4d262a67e7", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "771f1bf2f589a81ee77a6f1676ccfe5e860d190b5d28cf61988925bc6c6e2fbf", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "efd33eae12608c5744bd20a60abfc4300c93eb81b43a7afc01f5ad99c46ae688", +"T2T1_tr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "786d3d1328a6c0f7955a5a225c8c20ac7ca40819d1cd958582b6f922c1b7dfc9", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "c2671e6c0d053898e2e15fa37de2d0f0e4f97f90e6a1d476c75cefd9cc77f96b", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "537f709e55b8dd8bfcf80b3f75bcea565a95a04a3d7ad8cd959c26411562bd87", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "c6cb8a3d0ba7302f66dee4331412385dd8e1528d96c5fbd58404715c51765b4c", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "0c52f85cca0c3f5d7fef013bad86b7b0ee9609a9cbaaa6a48fd68557300f2d50", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "afbdb6ab3407599748a56149e37c605433d76993990bea55e36d3051d10ac646", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "426e6ca02f820f8ed948c1118bf2aa0c4efe2170a752d82f8d3afed2582901c2", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "09334749b96d34ecd364254002fa4690e9c1df9e54899bb2e294d3ccc3b8a90b", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "6a6ccca62d5f6430dc9cc9a85900ac34ed742259bffc6e358a67373f9d5ec9a6", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "286c6f697e89d1406808444141018406a0ddfe6588cbda8d417958c08bad9e06", +"T2T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "b7f46e04b24e0bad1b86b4b0f449f1d1f6c8399545422cedcbe56f30530b9757", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "c6654e393144c6cba3eb626732ac72416591fc2a6873b915efb1c3dcf109e127", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "34af4c6229de25e8b283264ff493e4ffdc4fdb0973235cd0e18facd40b9509d6", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "4c38f4ed412f0f52f1f0e904ad57700c855d411c8dd75a4db9d8923773e5ef34", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "e55ab2aa519176001cd05894d6bf0b49558bc3dbc13682356a0410b2541e938b", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "54876064a805b1365d28b7de53e8cbb66d3b616d7b60e42bee1e0a2352b3a09f", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "4835d2ac59c5190fc635f1c55db9847244c5d9cb37c0cf85a538910174ddb83e", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "f09863aaf8d7a44795ab3984629a8a35f40b1b6e9096b75ceff0b7f424cc0b62", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "308ae336e71e87e711a3fcd5a24d050e5cd2e507a0396b8ac4ea56bb80bbaf18", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "42848f196c90bb2241c2c4ea3157da2daa44e328a9d8835883d76aaac2cb5b6b", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "f70cadc815963f0e799b4db2407fe3f2340c0f952562d67f320474d070b107f6", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "0efd92ec373e84a8d165f970251ecd4250ef743b24216789883fb92cee1f1af4", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "048a2b322867392e5b076199c2b04687c840e3a4c10f60e86e96a047ef69280f", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "853631c5300d546c53656a4e91c2cb0c2df15d6227755789b52fce6d3e2829fa", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "4f0fffba88e4d05f25b2e2488f573765ceb3a5f361476a1a1139ad7d07553977", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "425eeecf6d01f053fd4728961cb1fd172e16ed27bec33f1c2872051c85dbcbd9", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "d1226b69c2e31dafee79b38faeb1691fec75952a749fbca1c5505f6e92d21ddb", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "618dc9f8a4a15318363ad9a5d7be39096c425cb5ac07f69acd541296d5438890", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "be909e3b5e503c99c05b7cdd16b39c79413c841a97a52ed56ae1906e46d8b54a", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "48c7d75ebf594907c10e5b8ac19072d730c193b5378ab8114f732b24bbdd98dc", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "0481ee65fae0887ee88abb87e8ccc162cbc48638e18eae3d7717a6f6db6d5047", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "1d14931c4968122dfde48292f6672c8ca55de40ddfdf8c5726848f07cc428713", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[memo_id]": "9808030b17bba032173d415edfe895b9781eb1aca198ed15304c83ab5e51dc5f", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[memo_return]": "0c4dbdd6876e7cecf1bdc937a095728061ce201535fda5126ecd141d331f62f8", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[memo_text]": "3c930205dae8345b0164ea392e3f46ab8561597b4bcfbdf39b8b129d0ea09d2b", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "c5341a06bf0d84fb1b52da447839dc1973768bf6968257a58ee597f033c39a45", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "ebb2b224558044cb747deafbbbbf9e14cbc3b010007c382b1bdf24d0ab2462a0", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "ce823d9019a93fd0a987e1a46a68474036d40f86cc9d39fb42122007bc57724f", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "65792358e7298d447cf90db921ced05c00220856f8896cdd3ab6db56a3128739", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "5b1cdbc1fb4c8169602ce42d06fbcb83966a21683b03234554c7a85d0ff81ac0", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "618dc9f8a4a15318363ad9a5d7be39096c425cb5ac07f69acd541296d5438890", +"T2T1_tr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "40a265673a289b302f30bae7330ad44c8fb21c0e8fb523fa32efc2562b960adf", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay": "d10e9c9247fe8577f19d18d4960a2a9489ffb2b38148474dd571bf654c6f74c3", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "4ba22c0334b4f46fe10a92a3ffea10f60465278e4257d7490160bba7d5827d16", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "a82e1969d17d77073992d3e53994f9a71f8b0d0bae9c639e6d610c7823ffe07f", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "910c6123e30fc7dd567e56b50302d24b99b8fc4195f763d715ae12dd69c7a73c", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "ca0d4bec0f62e502fa1144fced669d26db86647d6decdb7bfd53a1e04dd3bbc2", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "aa536b7f2e08062158513aea91585452dc3b87740d7faa1b15ccad00eb69cbfe", +"T2T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "98bd96280b10312a928e96c709dae02af71d80d920f851409db7dff868848f59", +"T2T1_tr_test_autolock.py::test_autolock_cancels_ui": "5b674d76bbae2458e1e48c732dcd5731df721a82537ba01c32b2fbfd8358a373", +"T2T1_tr_test_autolock.py::test_autolock_default_value": "50accfd5e4b19eeb99f623b81f8c9b2b39787a3eebdafcda6dd75d41c14c9991", +"T2T1_tr_test_autolock.py::test_autolock_ignores_getaddress": "db8a67e873a506059271b7666f5c1c174114a14dde1dd4a9ffe01dc9b992a62e", +"T2T1_tr_test_autolock.py::test_autolock_ignores_initialize": "db8a67e873a506059271b7666f5c1c174114a14dde1dd4a9ffe01dc9b992a62e", +"T2T1_tr_test_basic.py::test_capabilities": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_basic.py::test_device_id_different": "a98e952ff86a062e3cb544e1dc2e4f4b86fb050225eb18b7b24faf91f9f57afc", +"T2T1_tr_test_basic.py::test_device_id_same": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_basic.py::test_features": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_basic.py::test_ping": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_busy_state.py::test_busy_expiry": "c2613ec080eac174657e7d7c102309f1d2b5bcca350447999304dc56a4598a5c", +"T2T1_tr_test_busy_state.py::test_busy_state": "4a1358a5c4cc9c27ad9ceab1b14dc6466f2bcec61c7cc8f9415828029669bf00", +"T2T1_tr_test_cancel.py::test_cancel_message_via_cancel[message0]": "37d490028b3f94361f3fd4809577be9afa7f4e8064a78bb37a4f6b12f8c627a9", +"T2T1_tr_test_cancel.py::test_cancel_message_via_cancel[message1]": "af79e1b66750b494211558a1a07073bd7dcf190b1a0c249860b856a8d5cad965", +"T2T1_tr_test_cancel.py::test_cancel_message_via_initialize[message0]": "37d490028b3f94361f3fd4809577be9afa7f4e8064a78bb37a4f6b12f8c627a9", +"T2T1_tr_test_cancel.py::test_cancel_message_via_initialize[message1]": "af79e1b66750b494211558a1a07073bd7dcf190b1a0c249860b856a8d5cad965", +"T2T1_tr_test_cancel.py::test_cancel_on_paginated": "77f2d81b9477786d9e461fcd6ce62829ca49356b3ad23150ffff1528ea0a56fa", +"T2T1_tr_test_debuglink.py::test_softlock_instability": "3a178afa75f8a575f9747b8b67087177242c853c4c46b00b7a7afe62a2d70c14", +"T2T1_tr_test_firmware_hash.py::test_firmware_hash_emu": "6430c870953ba8e7677ae3a7c99bb3d1795967253a5cb4be467059d04f2be904", +"T2T1_tr_test_firmware_hash.py::test_firmware_hash_hw": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_language.py::test_error_invalid_data_hash": "fc83646b1f2515a81fbba629782270ae1e69c239009dbcb7faa94ea6133c9a16", +"T2T1_tr_test_language.py::test_error_invalid_data_length": "d3ed5c9dd7c97f54182838cda67644823e5f697ca448050e7171201f01b4ed53", +"T2T1_tr_test_language.py::test_error_invalid_header_magic": "d3ed5c9dd7c97f54182838cda67644823e5f697ca448050e7171201f01b4ed53", +"T2T1_tr_test_language.py::test_error_invalid_signature": "d3ed5c9dd7c97f54182838cda67644823e5f697ca448050e7171201f01b4ed53", +"T2T1_tr_test_language.py::test_error_too_long": "d3ed5c9dd7c97f54182838cda67644823e5f697ca448050e7171201f01b4ed53", +"T2T1_tr_test_language.py::test_error_version_mismatch": "d3ed5c9dd7c97f54182838cda67644823e5f697ca448050e7171201f01b4ed53", +"T2T1_tr_test_language.py::test_full_language_change[cs]": "9a14428fecbfe6ce6b5df016fb82c18ebfa8eb63b0cb145b4a6799f92dd17230", +"T2T1_tr_test_language.py::test_full_language_change[de]": "562e5d1f2770e008adf1b9710b6fa6ab87fffb59f6af9d868c290132dad5700b", +"T2T1_tr_test_language.py::test_full_language_change[en]": "7033f52709c397a51e89c850baa20719fb27a19c2a784a20f9e36176d6059231", +"T2T1_tr_test_language.py::test_full_language_change[es]": "07b33e69d31fcd6082e1c6eab9d3792baeec3732c4bcb41a3636c6a483e73dd4", +"T2T1_tr_test_language.py::test_full_language_change[fr]": "d8b66876691c49f543bbf2abdb544a90ba7c4c1eb3770caed7dc1893f6310e0e", +"T2T1_tr_test_language.py::test_full_language_change[it]": "925af947f440d44e3a809db8a40b9ae84630e7b3b3e549a9e4c0a802ed593039", +"T2T1_tr_test_language.py::test_full_language_change[pt]": "cd2b68700af0df124a887a103c3b99c4ad39b37e85dccf996ad6100e7ccccf3e", +"T2T1_tr_test_language.py::test_full_language_change[tr]": "6a52cf46de389a881d67e38a21e0a98e13a9c9a2f89e0243b196e45823241533", +"T2T1_tr_test_language.py::test_header_trailing_data": "c5045eef82564e2b8cfb29d41950d96b1b2f2e5c375ed683b6625f0bbe17922d", +"T2T1_tr_test_language.py::test_language_is_removed_after_wipe": "273928a8e43fe75cbcf75b9f7cdc5d1721081c1700c14cb65bdf263d917f52c5", +"T2T1_tr_test_language.py::test_reject_update": "5e75f8f31e5d43f819881600b881b62134c5008d938a69a3cea775820ef22707", +"T2T1_tr_test_language.py::test_silent_first_install[False-False]": "9ba629964c7d8ff550eb78764c4b6183939e9b6b84745776ba09d09e9e1ec9c5", +"T2T1_tr_test_language.py::test_silent_first_install[None-False]": "9ba629964c7d8ff550eb78764c4b6183939e9b6b84745776ba09d09e9e1ec9c5", +"T2T1_tr_test_language.py::test_silent_first_install[True-True]": "7c242df9f57a5e2a2f577a736e183cfd934befb42e574ff067014e1684636c6c", +"T2T1_tr_test_language.py::test_switch_from_english[None]": "4b698ca6792f30e7605a13d3e7d363ec29e38056df41b8fe1ff79c24492856ed", +"T2T1_tr_test_language.py::test_switch_from_english[True]": "4b698ca6792f30e7605a13d3e7d363ec29e38056df41b8fe1ff79c24492856ed", +"T2T1_tr_test_language.py::test_switch_from_english_not_silent": "237bbd4c48221777ba423fbe43feaac9af1c1291f85539b371d0481627c7aed4", +"T2T1_tr_test_language.py::test_switch_language": "690da414e8a032e8e0fefe80284ac3d071a3c94da90f9581054b837a3c5a2a2e", +"T2T1_tr_test_language.py::test_translations_renders_on_screen": "0d46ce2dba5b990dcdd2bd2f405cf4d0704405fccc74c27358519713d97f4a13", +"T2T1_tr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "c8e83a6bd5b229ec2b9ad721c4e7201046c061421ac3dfacd7ad1e5120ba8d33", +"T2T1_tr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_msg_applysettings.py::test_apply_homescreen_toif": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_msg_applysettings.py::test_apply_settings": "5f7fad321bd76cb257e46a97524b12598c9da25a2ba1051d9983f4323ae3e077", +"T2T1_tr_test_msg_applysettings.py::test_apply_settings_passphrase": "095b7bbc8517b6651e9c92fa0cd9c0b107801e80db8887b52fb605d003214c30", +"T2T1_tr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "3a07a138b756cd5dba75920bdc20bcdd9a8f78ed9797cb99f79989e3aebc5608", +"T2T1_tr_test_msg_applysettings.py::test_apply_settings_rotation": "79fc59dcf0e97d1f5d40555bd750500f3e873dcdfad4e163220ac882d82cc646", +"T2T1_tr_test_msg_applysettings.py::test_experimental_features": "392f0e57bdd229740b0a88dca6bd5e545f3350a0b57a411d5cbb55a46f358750", +"T2T1_tr_test_msg_applysettings.py::test_label_too_long": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_msg_applysettings.py::test_safety_checks": "9048c35f0b59ec8e80fbf9781fb97a9fa3596dd68157d32d4779ca6a960412e9", +"T2T1_tr_test_msg_backup_device.py::test_backup_bip39": "fd324997571468ee93899457143dec0e32c23993d577997bacf7a55ee39d7c4b", +"T2T1_tr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "9769600de7f78e4fcf5f606c545e43bd78742da8cc07b3ff89a63fedecd831ab", +"T2T1_tr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "ced560a343f91508a7d9fc53a60be3e9cafe1bef5ad4ebbad7641fe9d8a25bb3", +"T2T1_tr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ac0174363932b7022defebaf7d2cf00678e40335bea52ba394398f45acafbaaf", +"T2T1_tr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2f488f554c33ec2063cde44833a6714ce8b3ffb7c30e14de272d68c7785b6bcd", +"T2T1_tr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "7ab288ed9fedb088889ebbb1fdd7ad6b22c1d0df5cd81334e2606839a2b19c1e", +"T2T1_tr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "b8aacae84371167c89f1dbbb7970418baa32498d0de110b2be8dfa1f7e1ba3d7", +"T2T1_tr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "91eccf5eecd9340af81ff00e56c296771212055ea227b1f62d544e4ec9ec686b", +"T2T1_tr_test_msg_backup_device.py::test_interrupt_backup_fails": "3b16d5c9d893c64f3a3c2cb53e62af5ed73c4b3bd59f12bb6dddc66d7b361a92", +"T2T1_tr_test_msg_backup_device.py::test_no_backup_fails": "5cf46f6da79fe066b804f15540ef7d7e2dfc5f61589726c61106a8d328f6b0dd", +"T2T1_tr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "4722b5882465c5fd2061e5bced0b08186aefc272c9d1b0f5ce23c2bfca5f05db", +"T2T1_tr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "7b39b9a55a5d561ec9f3c37229d646c92d955b20eff83b71691fd1017c4e96ef", +"T2T1_tr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "df57659c5a99465121fa381cae61e321ad708bbfcb492fc083756130a543262c", +"T2T1_tr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "f6f0bf95e659872e577ed17529b5019301a4e14e11f6d3f5a522c8859b091719", +"T2T1_tr_test_msg_changepin_t2.py::test_change_failed": "2e03699877db08bfca2dcf435d9e821a69ddcc506d92fd04d84859275318c2fb", +"T2T1_tr_test_msg_changepin_t2.py::test_change_invalid_current": "3f58b99d481839daebdea95dc05ddf193e41aedef3db5a6824ce1e5cb8526d57", +"T2T1_tr_test_msg_changepin_t2.py::test_change_pin": "288f9ac9a560bbda9b77303e4c9b87f88e2714c863e040bbd7d4f81872aede5f", +"T2T1_tr_test_msg_changepin_t2.py::test_remove_pin": "2178d72175e66ff300697663b4010ee0eaff43eb35659432eba5cb79bcd7d0ed", +"T2T1_tr_test_msg_changepin_t2.py::test_set_failed": "4c59285ae7306e9724eff2dcdbf48f781593393f925ff8fc68fec8cb0901cbed", +"T2T1_tr_test_msg_changepin_t2.py::test_set_pin": "f1c393b87902c6ff7f5453c5bba78329c41f0c528947d3b676c6e05ea62ec563", +"T2T1_tr_test_msg_loaddevice.py::test_load_device_1": "d6ea0cc0046559bac160f8a6a0e9f47175dd4ffb50296bf266534d1748327b12", +"T2T1_tr_test_msg_loaddevice.py::test_load_device_2": "5cccfb7dc6c1771e562933da374e37a7dea9b3b275f0c69a9a5d83bc6f5090bf", +"T2T1_tr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "d6ea0cc0046559bac160f8a6a0e9f47175dd4ffb50296bf266534d1748327b12", +"T2T1_tr_test_msg_loaddevice.py::test_load_device_slip39_basic": "d6ea0cc0046559bac160f8a6a0e9f47175dd4ffb50296bf266534d1748327b12", +"T2T1_tr_test_msg_loaddevice.py::test_load_device_utf": "4ed699d7755611508d891a2411d2ef13511579dc2cca7578c77812fbeb779518", +"T2T1_tr_test_msg_ping.py::test_ping": "37d490028b3f94361f3fd4809577be9afa7f4e8064a78bb37a4f6b12f8c627a9", +"T2T1_tr_test_msg_sd_protect.py::test_enable_disable": "892746dba8170ccc88b9cd7f54a196fe1c73d117ac6a702cba90406077b826f3", +"T2T1_tr_test_msg_sd_protect.py::test_refresh": "780d8c6d1f63bd1b33c030b896a643c86c87e811239a39ca6a7f8a2940bf7a04", +"T2T1_tr_test_msg_sd_protect.py::test_wipe": "3bb435c3c97d587c0b1d86f9cee0ccdbf19f981278a504cdcd260ba58d01095f", +"T2T1_tr_test_msg_wipedevice.py::test_autolock_not_retained": "0a74897de58c0ca6262519d12434621cfca38268d2b8d645494144949c9aa2ea", +"T2T1_tr_test_msg_wipedevice.py::test_wipe_device": "a98e952ff86a062e3cb544e1dc2e4f4b86fb050225eb18b7b24faf91f9f57afc", +"T2T1_tr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "7281f473e70fdd2b485b27ff71beb54cf038e8fc482259124f5e73c996036d5d", +"T2T1_tr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "7281f473e70fdd2b485b27ff71beb54cf038e8fc482259124f5e73c996036d5d", +"T2T1_tr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "eb483ae9e02c8062052c4838399d955d95015d7dbb7bd2e78d983ec7fb5bb9c8", +"T2T1_tr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "eb483ae9e02c8062052c4838399d955d95015d7dbb7bd2e78d983ec7fb5bb9c8", +"T2T1_tr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "eb483ae9e02c8062052c4838399d955d95015d7dbb7bd2e78d983ec7fb5bb9c8", +"T2T1_tr_test_pin.py::test_correct_pin": "3bcf6949e2bd016d45d597cdeeecad697592a796617e1be9b96021d868189c50", +"T2T1_tr_test_pin.py::test_exponential_backoff_t2": "fd717d55a6356ad66c458db421173277ee139d168f131c6812d816a7a36e4f75", +"T2T1_tr_test_pin.py::test_incorrect_pin_t2": "4fd6ff863850779f4ebf2f3f4d26612b2f1d7c9b6bfdb0f1e334343ac365ca21", +"T2T1_tr_test_pin.py::test_no_protection": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_protection_levels.py::test_apply_settings": "b8a212ff61e2988eb761253f1517bd59c050ae62016dcb7686b3cefc963c2232", +"T2T1_tr_test_protection_levels.py::test_change_pin_t2": "a07f12864c4c8c18212e99ae057f9de0506c210f61f667ed1ca02d91780beb8f", +"T2T1_tr_test_protection_levels.py::test_get_address": "adc60f23720b0bce072dc67da94697ed5b5dfbaf0323af74cfc239ceba971f4a", +"T2T1_tr_test_protection_levels.py::test_get_entropy": "21109d0caf06458a5754a0e86dec2f2c9c0c8827affeb82548fb7bde117f6417", +"T2T1_tr_test_protection_levels.py::test_get_public_key": "adc60f23720b0bce072dc67da94697ed5b5dfbaf0323af74cfc239ceba971f4a", +"T2T1_tr_test_protection_levels.py::test_initialize": "a8aa0101925d7477fcdd354d965fc5716a8728a48fc7f7bd9d9890ed488b6837", +"T2T1_tr_test_protection_levels.py::test_passphrase_cached": "1b999bafd0a113930e51ac5b778bc4889f3be175229cde34ae7ec2946d281e53", +"T2T1_tr_test_protection_levels.py::test_passphrase_reporting[False]": "1f1fcd2f50d138eb55af1b5342edeee06eb522269a8983362bae76e3d2ae02c1", +"T2T1_tr_test_protection_levels.py::test_passphrase_reporting[True]": "bb484cdf86867117081f8e68ad82532ff9f299824757fc950f8d1c904ef182f0", +"T2T1_tr_test_protection_levels.py::test_ping": "37d490028b3f94361f3fd4809577be9afa7f4e8064a78bb37a4f6b12f8c627a9", +"T2T1_tr_test_protection_levels.py::test_sign_message": "c1d45d14395b26f919ce00a678434b9f21ba5a920f51ab99a73b101085d9a51a", +"T2T1_tr_test_protection_levels.py::test_signtx": "8bd4a1dc9373a2642904b6e701f5a3a6e99994738bc2ac83ba80953124f525e3", +"T2T1_tr_test_protection_levels.py::test_unlocked": "451707197e67daae6511df250f62af22f615d8e83902f2ac32d6779cb928ec84", +"T2T1_tr_test_protection_levels.py::test_verify_message_t2": "5e7a28708dd1ba08bc5aa9a28b7ef3c05b6aa59c0e86078320851aeb1f91aa42", +"T2T1_tr_test_protection_levels.py::test_wipe_device": "1569bd41bd94cd70af77008c267aee3a1173a137d48c52efbaaac00776382e9b", +"T2T1_tr_test_repeated_backup.py::test_repeated_backup": "9b3c152fc26d6854567523c52fdc6bc6363fb8235f3f87e2a1e9a81389ad9208", +"T2T1_tr_test_repeated_backup.py::test_repeated_backup_cancel": "e71b5fce526bec32ce0d80927956f00f54e72c915f32ac711fe6ca0f3a6f7940", +"T2T1_tr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "588d31bdbc840ec50570518a526ae2ea0e37c8e30b36a9ecb0846197cca8ff09", +"T2T1_tr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "d2322ca68de022bb02bc4ed6210c32062b74fdf8e5d87c4f789e641c634c9a21", +"T2T1_tr_test_sdcard.py::test_sd_format": "8dc580849e35807f78012d2f4980f2024c8ae0137277da05b18e6c9b6b71371e", +"T2T1_tr_test_sdcard.py::test_sd_no_format": "1540e4cc049662efbbdad47057021773e23761f6cb403c1745ed8d5e406f7a81", +"T2T1_tr_test_sdcard.py::test_sd_protect_unlock": "1804db4c322a997d43f1192c886aa1af0a94e72ff7dd9a080d7ebc527a5a2bf7", +"T2T1_tr_test_session.py::test_cannot_resume_ended_session": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_session.py::test_clear_session": "07e24a10322e4af956e1dff45c7ff0ed7302b3b6c5c293d0fae4adffe0bbd74b", +"T2T1_tr_test_session.py::test_derive_cardano_empty_session": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_session.py::test_derive_cardano_running_session": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_session.py::test_end_session": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_session.py::test_end_session_only_current": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_session.py::test_session_recycling": "eb483ae9e02c8062052c4838399d955d95015d7dbb7bd2e78d983ec7fb5bb9c8", +"T2T1_tr_test_session_id_and_passphrase.py::test_cardano_passphrase": "b0515a7a382e62eee075169f501723622295d5e6c37fb9e55ec591e52d323613", +"T2T1_tr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "97a2c0251b53828ac75f3c806d63a21a99a250aa23075a714ce74a09cb5e9a4a", +"T2T1_tr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "4252597976403d52cb3a70479a9f49942b1b02cc7b1822125c98ca0db74c77fe", +"T2T1_tr_test_session_id_and_passphrase.py::test_multiple_passphrases": "09f584f31bc83c35262220428e924850cfe0599edd5c7eabd14e34da7dd100da", +"T2T1_tr_test_session_id_and_passphrase.py::test_multiple_sessions": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "d98b9bc2e0be3536d4281469d100e028d34853c548b4877f63283aa1bd6c01e1", +"T2T1_tr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "9081dad84275d51b47dda1813e98e319dc57eeff68befcd3a3c1f021ca0ca4f4", +"T2T1_tr_test_session_id_and_passphrase.py::test_passphrase_length": "444ce5097fbc74fd7e8f7fab99480eb9f1641356b124b9fb712b649c96f96935", +"T2T1_tr_test_session_id_and_passphrase.py::test_passphrase_missing": "1b999bafd0a113930e51ac5b778bc4889f3be175229cde34ae7ec2946d281e53", +"T2T1_tr_test_session_id_and_passphrase.py::test_passphrase_on_device": "87bdcda2ba80c2f10ba65a187fb2ec57c0362b2cbb5b6c009806e4ff1b168297", +"T2T1_tr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "8a9c8802f88967692da2b5af08158b2c609fe3bfdaf1ea524557e479557e85db", +"T2T1_tr_test_session_id_and_passphrase.py::test_session_with_passphrase": "5eec708409cc2846e8f6ec8271b27403e9928f9791d9bab16160e4dd9f57dcca", +"T2T1_tr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "6f86e4b6c7e0b748dce10bd189d13f041eb0944ae0f68ef56fd8ce5e0c54c437", +"T2T1_tr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "89458117c6756b827bcfbdacf2feca8e5634afdaa57959520c52eaeeff22c4a6", +"T2T1_tr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "5a7f062580c57d0f79201ae0152bcba7a3eda3ffbbc59f675c2ea08c52f38100", +"T2T1_tr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "b4337c5f88d738d2afd63dd806ed06a57c06d8f03bae441da38d25f990423671", +"T2T1_tr_tezos-test_getpublickey.py::test_tezos_get_public_key": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "14f35e9ee23717dd0cff81bdd1e61cb663d44ea753f7aad7afd137c9b0c27005", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "1fe2e44a0c2a6db461cdfb7d006088bc21938c6621127e49992cf6db4053faa7", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "0e0ef2be94b835327fdcd08d589be5ff04691e973ae678ce1318265ebd981829", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "95d92a4252917ec33fa5fe500fea409b499b474f2a2bfcf8f9dc461218baef99", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "4cf1fbfca74936d384b940288aadb852327c31a73bfb5b3c4435282e8c0fbbad", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "71c68c2a901bb9afa4f79b63171eead54d082346605d96e6308c264d749f9b14", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "eb208a13e0e3e25b8e0ac634f4890b26763693824c72d81747b63e0f8fc756a6", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "6131c6d4f3e7e85a0259a86cfbba3fc755dc132815a10baf2b61460a6baaaa2c", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "4558d56349ee2d0c3d2d9761ea54828dfde929e8d846dcd37a7c70ff2209a0df", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "b086e1a65f818b91be536a8331fb1e2ae7f9662a0685c0492f10bc5c9e29bc4b", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "176ab125397424324e06bc9f7e3c0c0dfb4f9e14bc7d972949b6deecbdcfffde", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "2be09612b2d6457aededf3c5767f8c816b4a5870869c8d02c995eb0898eafc9c", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "16a15507836f6a504f2f7d53199792680102414010ff8f246b8d8273f9832f50", +"T2T1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "c8ecd2f2d804579d304035cfbc1b88f73d937b2a180445483212e5d542d7b580", +"T2T1_tr_webauthn-test_msg_webauthn.py::test_add_remove": "b20210860c710533774cf4b340805aef849c7d8eaa64dd89e4a6dc858dac7db9", +"T2T1_tr_webauthn-test_u2f_counter.py::test_u2f_counter": "21bf5c6026839b9cea23180eced91e14df3ee35ccba16eae4381dc2ca85e7556", +"T2T1_tr_zcash-test_sign_tx.py::test_external_presigned": "673826703628c8fc2dc61e97a1aa20136e866505b405107032f9095ac86cf767", +"T2T1_tr_zcash-test_sign_tx.py::test_one_two": "a709a4f95b47e97901966d67250e1547304e8c75190ebb3d93d7ef5873c4fd1b", +"T2T1_tr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "0ce55f3b7146920f90f232b0e213f6e48e8b0f7d40ff6dfd8001cd4e6370c348", +"T2T1_tr_zcash-test_sign_tx.py::test_send_to_multisig": "d79289271249474af9cf23e5eecdce8297e22cb9faf46edbb2494f378861a322", +"T2T1_tr_zcash-test_sign_tx.py::test_spend_multisig": "da07d7b056dd9daf071ab994e974909cd20091e5fa86842dfbfcbf10ece6ceb4", +"T2T1_tr_zcash-test_sign_tx.py::test_spend_v4_input": "beed5af2068942f2e43807023813fe4da7abee44aedcdd98df964f4339575ca0", +"T2T1_tr_zcash-test_sign_tx.py::test_spend_v5_input": "8dfb6ef1382ec59654fa728865112eabe5347c6924467c7c7f4de9db12534343", +"T2T1_tr_zcash-test_sign_tx.py::test_unified_address": "2cb9299779c3e48586bd2ac85a656d3cf14906c6c023d6ff5f126c87a194eb72", +"T2T1_tr_zcash-test_sign_tx.py::test_version_group_id_missing": "6c04880874688cc58a969135a15469627c1a3aa66c66b6ddfa3b9ca924af9dc2" }, "persistence_tests": { "T2T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "fccf8053ec21b98472ca7f4573bfe5d11a7ee5d45565e94015d126a526804d18", @@ -15521,7 +24277,154 @@ "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "046b4d4f6c9ca3491a9bdcecd25ae80d4ecc41c189dc9640331ffeb5dab40030", "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6e81831b32542ba19822375c2c7c780de6130136f77f39f4022ee43be6bbbc59", "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "fc6cda5bdac795155c67cafbf523b4dbb4fc553fd10f7d90403e19c6dd9005ce", -"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "13826b2a715342d5df2c4665442ffeab1b08808a56bd3a40bd786a60d9223fe5" +"T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "13826b2a715342d5df2c4665442ffeab1b08808a56bd3a40bd786a60d9223fe5", +"T3T1_it_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d18c25f32430e56bc7a6fccb936447d85a4725d7c97a705d85bf73d04b31f2e5", +"T3T1_it_test_autolock.py::test_autolock_does_not_interrupt_signing": "bfa0741608e148a31555dd1257138c3d5abf38fc5f5a68d705df257acef49b79", +"T3T1_it_test_autolock.py::test_autolock_interrupts_passphrase": "77c07d0aab830ca4305fe8b98bd6db5207506322e9f2cf195a0a14677edc5de7", +"T3T1_it_test_autolock.py::test_autolock_interrupts_signing": "786572d92648094a5f92b41f5668abb3b462d47f9e450bcead36a8e961e9b5be", +"T3T1_it_test_autolock.py::test_autolock_passphrase_keyboard": "abe0b536ad034c6c8acdcf2e455081ae5d76e5de9662227914005dc8d11f571f", +"T3T1_it_test_autolock.py::test_dryrun_enter_word_slowly": "065060e5db5e7f88cde36e92c3edf8cee32ff0f22f42ce4e478c8659a110fe05", +"T3T1_it_test_autolock.py::test_dryrun_locks_at_number_of_words": "12581bfd0c55831e9ff1bcc624d802332439775ebd8b55a92ea5b37420ce441d", +"T3T1_it_test_autolock.py::test_dryrun_locks_at_word_entry": "a5210c58dd9e9602aaea2385ea4653ec44f0f31c9b7ead1a461a09ad6d9599ed", +"T3T1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "867da6a771aae1d58d193b56d6e9604955968e89ceddbd1075de005477ce68fa", +"T3T1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "2b9915cfa9b3ea7baa117316a306855050ecdfc2798afeda6c7be6dd5191c074", +"T3T1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "42858fedddd9d6a6649c5114ec2f5fa790666c9e2867197a9731e9a7ccd2745e", +"T3T1_it_test_lock.py::test_hold_to_lock": "16428436e95c69504ced0ed5f3b37d8dc98fa5ce04108c5f389392cf5daff43e", +"T3T1_it_test_passphrase_mercury.py::test_cycle_through_last_character": "6da8a50c533c19667c6bdbbfa24d43d012f48ac8865e995cb8da49edebb6cdb3", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "b9d9136df3b86bfe0532dda25fa049f69fadc546d13ec9afc3f6d42f15c6fb99", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_delete": "57ba03544723d44bbbfe16a5b85a5f2ac607702f9e5c66b0d34f9bf1e87d3cf4", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_delete_all": "a960e9e96e2e81b5e6df480cba61994fd476f901553a0464f7f756291192289f", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "fd87560f24c7e66fe26bc3766a7dfd132c9cea36b06e64340fe24164eafe6fad", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "fe3d6f12f0fbdad2041945599f992baccbe1028aef23ef0a6bc1b281894d2270", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "668cfb9682daf0d248a3f9bfecd0021e1d581ddf012f7d362d138423f28e41bb", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "eb8f15ebb6039674f4698fc9d6af1091e64fdb261c809ec3b515ad1b38fe1075", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "4bdf897eae33fe740a2c100ec773603a1eee992d306a249050eab8b1b9976058", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "8f0411df5d44396b5a2c4d5b31fb5bfbe77325fdb8d3022af162b32946754d1f", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "4bdf897eae33fe740a2c100ec773603a1eee992d306a249050eab8b1b9976058", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "897815642335bb134ac60f75ae527d4464f93fd2aeb792d1faa0ea1519e9d593", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f65e4abd294cac9eb6ed9f856ae8811f33521745428730ca3e76b2ea8cf46bcb", +"T3T1_it_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "3a3f13aefb66f49cbfe5dca297afeb530312e94e6910649b45944030cb597418", +"T3T1_it_test_pin.py::test_pin_cancel": "38529206b672e425f09fa5e7e03c8830d521d7a14d53347c7dfa9c0e5086b7c4", +"T3T1_it_test_pin.py::test_pin_change": "59c87e9200f9ca8c893ed5757efb725a55ffbc4f8122cb793d4d751a295ed51e", +"T3T1_it_test_pin.py::test_pin_delete_hold": "443c7137171f1e51cab1109ace08c2654eb64e3abf7a98c8858b7007032b953f", +"T3T1_it_test_pin.py::test_pin_empty_cannot_send": "c1d6ae003a4fb99925ed8e9aead1bce310526a36615765a660d1c03110fa77a6", +"T3T1_it_test_pin.py::test_pin_incorrect": "9423f88c63abcb2151e6dcac77a7ad1d1f5f73a5783c0e63ee01e3502778f699", +"T3T1_it_test_pin.py::test_pin_long": "68b4d722f852f8eb110ede7ab6352ecd4fca2da9cec04f4d7e58d8174d80774c", +"T3T1_it_test_pin.py::test_pin_long_delete": "e699f17820e268bfb129366d085f8039232afc4678c3b205b9fcb0521676c02c", +"T3T1_it_test_pin.py::test_pin_longer_than_max": "b47d1f5ef00bead025c28a3487fe082cd2c3f7a6544e05c13889975b43219cf8", +"T3T1_it_test_pin.py::test_pin_same_as_wipe_code": "c4ea9cc8b9e9f7d67a38e8c790c944a7f8dd2d58e7c74595e82bac97d6af2d01", +"T3T1_it_test_pin.py::test_pin_setup": "2966e563f3c12a4552e045bc62f2ce7e6f3a7984c3b22bc285cf419c72fcbcb5", +"T3T1_it_test_pin.py::test_pin_setup_mismatch": "43b2957b9f4e3ed951b9c11db9f70e93915f21e336138c2280b1b30d3cdb2d74", +"T3T1_it_test_pin.py::test_pin_short": "c1d6ae003a4fb99925ed8e9aead1bce310526a36615765a660d1c03110fa77a6", +"T3T1_it_test_pin.py::test_wipe_code_same_as_pin": "1b0f3adffefe3c309cc0b83c943eb46a18db988cde15baf2fbd472cd9808ff4f", +"T3T1_it_test_pin.py::test_wipe_code_setup": "c47f6d58619531165549c3a5fc44e0ac438706a0d2c4d0a540e154a8b83ff27a", +"T3T1_it_test_recovery.py::test_recovery_bip39": "abc3db3506d2d3a2f4baef3e8136a1cc1abdd202818d9f0da7eb7126b6a7d5f1", +"T3T1_it_test_recovery.py::test_recovery_bip39_previous_word": "600a07598d4d3e72a604d90834326a017205fcf25dd2deaa73b4d01e517ce4f3", +"T3T1_it_test_recovery.py::test_recovery_slip39_basic": "d6a0aca508bf9afbfc8b033937ce63fd1c0d4fe8e1dc7cc53b5dcd48cb1f9961", +"T3T1_it_test_repeated_backup.py::test_repeated_backup": "3f856b47e5b7237a61cea0b6eb486a448ae69a209afed538ecc70d10f8ac5904", +"T3T1_it_test_reset_bip39.py::test_reset_bip39": "29111060b55a2e98795c9a3d8ecb38c71a68f31abcf68971dd3f06d7616bd1e9", +"T3T1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "c285a003a1dfe636b3b3b13cbb8e02ab878b7fda4c8d86d00d3a4420389ee90f", +"T3T1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8646353cb9764450b2b25bf0068c4a47072f8d712dcaf9e6baa7754528bb76c5", +"T3T1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3acd2d89f1a54ac3bb0afcf3fc17ed89bd0c6fe95194d2da473c30aaeab683a1", +"T3T1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e4704647437a3dffa8b9bc64a0076e806f782cc9e46b8dfc9a446aba827e3f32", +"T3T1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ff9d586c801d4f0f0794eefb98b40825eac9d4bd32af28810b2e765ad17965c8", +"T3T1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "aa529249c6c7d21d827169d0df3c51c5b01fb7a60d838098769a94a2c5eb1e1d", +"T3T1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "0824e53377fcf503fadd9dbb2c7ced09a90fd6b59609223702a38e5498e170c4", +"T3T1_pt_test_autolock.py::test_autolock_interrupts_signing": "2822aeb662432594dbbfbe8b57d15be54e2fba5c6b86ace3c7366558ffaa8f27", +"T3T1_pt_test_autolock.py::test_autolock_passphrase_keyboard": "ba113ae39617d24b690f6c742f45c6fdceb5a1264fa5523e8872f281a9d76694", +"T3T1_pt_test_autolock.py::test_dryrun_enter_word_slowly": "b0c55de52c10439ebb318096eeea4415f9683fa94f9f8d4bf7632739c9e5fb33", +"T3T1_pt_test_autolock.py::test_dryrun_locks_at_number_of_words": "787b4082bbe11517c7776d61d9691fca43028dcf4416844c594509f547691d15", +"T3T1_pt_test_autolock.py::test_dryrun_locks_at_word_entry": "93b9b00ba8439d1d46e8701687b31b02f51f626867320e557524cb09d093de0f", +"T3T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2d2029661c80cda77c7fb9f4e8bfb85f7304e8d15b4d2a16ff227165428ac046", +"T3T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "6611a87200dd51f2d95ddb3af63245879b974e0bd036392a4fcaf568af6e12a0", +"T3T1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "da871f1bb4512a4cd8dc5964983a6273e0c2392ab64a3e26385c57b5b2df412d", +"T3T1_pt_test_lock.py::test_hold_to_lock": "0922986dc9ae662743a09b2af4597550eb7cd0527f92441117e6a78cf4ffe7d5", +"T3T1_pt_test_passphrase_mercury.py::test_cycle_through_last_character": "e5ec09c7dae766cfc9953f531aca2afbf3c0aeab0666240f9a6b101de4b17123", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "4ed58db5c0a58b5d76178c173455a1c53df6447e711b955fff4aec6128268749", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_delete": "59246408a5070fe7f0f8bbb96c2d35559e1d5a6b23d0a17ec9ff494c3d1a21ea", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_delete_all": "2396d49237d4d7c84bf7559c7eed2078f895f6c84f3da009cc97d0c6bbdad8e8", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "8c692d92f037c21794f74c39d4386fa782f0080808a42b9e93b84e6a8617fb20", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "d5640e72ca9525b92ce48fe41eb97dbc8b4f1a5a6accac7bc2655f56df92d17f", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "2751cf31144240bec2c3881dcf875e7bbf39735c9da903d87af8f29b3f27d9fa", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "e2145a1b6d971eb5eed60438e460671aa197909197bf920c19d302c8f8da72c8", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "843f660d166bd50f356eaeaee934885d3fe52bce152e04439d08307948ff8e2a", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "4b0e53e9cc4f720ee377faf534bf98a4b9223617d67b4fef4f6e08f55685455c", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "843f660d166bd50f356eaeaee934885d3fe52bce152e04439d08307948ff8e2a", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "12446b9cccb92a5d6429636a7db0e75e0fd7e038726f8bf67770244836a72a8d", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "f9c2c789298c48c9761f096411a0262b0e50f7bd79ab3cdd276ee43a1acefc39", +"T3T1_pt_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "aa754f0ca4d77c211f16e1d37ed9513905cb8d14e1d72437c2720a598a271627", +"T3T1_pt_test_pin.py::test_pin_cancel": "f3918ee8cc31e0585998fcb95a5d2ba6385f4aa5a9d7fb683ed6c5838dc1a6b6", +"T3T1_pt_test_pin.py::test_pin_change": "f9bc9f36a072581d6032de49835e1391c5c97af421382284fc619035337e1367", +"T3T1_pt_test_pin.py::test_pin_delete_hold": "0ce8cca83cbaa0142f879406228cc6bf70df830ac1059fe5d4e9325b295c710a", +"T3T1_pt_test_pin.py::test_pin_empty_cannot_send": "60ed82ee1fdac84d306bca81dfe9d7f4157921d714496adf7f281f478f3fa956", +"T3T1_pt_test_pin.py::test_pin_incorrect": "59e83e00f6d00c4b27244105b8e4dae4b873abfff7783c90c1cce2e217845af3", +"T3T1_pt_test_pin.py::test_pin_long": "3fe3453af668062050b97711fa2b11f9504b65d8015773813b14df5e263be7d6", +"T3T1_pt_test_pin.py::test_pin_long_delete": "ff2b87901306dfb5f08862cdab603323deb431c284e238f9c3128f67a859657d", +"T3T1_pt_test_pin.py::test_pin_longer_than_max": "726310af6d0bc9f49bb1e4696e82dc0ffc91abbd5b7c1763e02b0e06b4732b1b", +"T3T1_pt_test_pin.py::test_pin_same_as_wipe_code": "c8d6f6c6b06bda40e52cc5431c9a406334f2a9d05b990d28094387e48ea354ce", +"T3T1_pt_test_pin.py::test_pin_setup": "8d5770067c3efdc26d6a3a2d7a4344623dea487a2e555e97390e865d9b97262e", +"T3T1_pt_test_pin.py::test_pin_setup_mismatch": "96603b322a3af0e64eec4d2a7d89fe2b21404514c30486240447d527665c97a5", +"T3T1_pt_test_pin.py::test_pin_short": "60ed82ee1fdac84d306bca81dfe9d7f4157921d714496adf7f281f478f3fa956", +"T3T1_pt_test_pin.py::test_wipe_code_same_as_pin": "0b9d506ca13d1a178d216bdc3ee4537ce8c1470c98f7e973ac265d68768e0694", +"T3T1_pt_test_pin.py::test_wipe_code_setup": "5682c5357c84cbb602912ee4275a21021692c47f51ef879d194c691744a04473", +"T3T1_pt_test_recovery.py::test_recovery_bip39": "0d13cc3966faf3558eeec648e46cb01a2be672919b7b669e0f64c5eacf650fb2", +"T3T1_pt_test_recovery.py::test_recovery_bip39_previous_word": "926188904090074bb2d686f2d63f1fede1a0e781b30e1cabe3a9c218ae634724", +"T3T1_pt_test_recovery.py::test_recovery_slip39_basic": "b67c82c9541ef90bbb14bd37b5301164ed905dc58fdf6182c30d6929b91a14ea", +"T3T1_pt_test_repeated_backup.py::test_repeated_backup": "ac4fea60bc428d8564ebd2e136756429d9c19e210cb79678db803d95465c87e8", +"T3T1_pt_test_reset_bip39.py::test_reset_bip39": "ef18f5b52cb8efee9a0eb4b2edc110c903dddab9829a06fa31622d6e09e347c7", +"T3T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "2782c0db6e469c065af22e719f7608f017f184464dec82f60da2747692dc6387", +"T3T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "42839a274d0e2e7421ccf45e0fb9ad4eb05c8e63dc031620b84cfe280f40d897", +"T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b2f68b8139abaf9eaf6cdf74c979a60dac00a4e44694e3a373bf6a3cfa4dc093", +"T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "49055a822df2fe965d57256d37a3022d9ba87459b23f04465bf5812e78ff4b54", +"T3T1_tr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "87462ee818e29ef09f0adefedb30fc91df5e6e43da42b1ce2d256a1891657675", +"T3T1_tr_test_autolock.py::test_autolock_does_not_interrupt_signing": "d7bd5440ee1681a0fdbf92a09d762d7e0f02549f9f399ab5602eed73092d8edd", +"T3T1_tr_test_autolock.py::test_autolock_interrupts_passphrase": "83df014bbbd8bbd7c1563384ea7b1a9d4009282ee658bedf98b9338107442de0", +"T3T1_tr_test_autolock.py::test_autolock_interrupts_signing": "d98666b5bab9fddb5489de9e276867f776467bff191d3821b93cf09bd4d084a4", +"T3T1_tr_test_autolock.py::test_autolock_passphrase_keyboard": "e1a0ae2845137737eaa3ea63d3f5d35b05c1a970e5a3d6fbdde416ceab2faa7c", +"T3T1_tr_test_autolock.py::test_dryrun_enter_word_slowly": "75b6961a68b52cd9043c1a1aa0cabb7e03eaefb37d6c1709d850d5011abaeb0a", +"T3T1_tr_test_autolock.py::test_dryrun_locks_at_number_of_words": "a17baa757753524b33cfdb4a2a2b130b164222c54f8495a21de7c82ca8fe621d", +"T3T1_tr_test_autolock.py::test_dryrun_locks_at_word_entry": "9ea3f27441875232c1cd08a26f9023ea89eb8a0d280f118b1c61110792046053", +"T3T1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "06ad9903045163117ce6819303c372df5681ee0131ffb512fda6e08b00b3e60b", +"T3T1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "98be80754137e9e3cf94dc17da1fed25fc5ef26d862c10d45b9b9732614cb2cd", +"T3T1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "76f95dfb584ff51c8f2fd2243750e9253f9570a2bcfd524d9ee9943e4e563fb8", +"T3T1_tr_test_lock.py::test_hold_to_lock": "723aba0dfaf4b267881a8ad776db22b7f09c3f4ed6586220316f733ab8d3b513", +"T3T1_tr_test_passphrase_mercury.py::test_cycle_through_last_character": "5a3a2f0cebf7a721e3a721e1c513559a7e5b739e5a0eacec9fb5e23948e2b2b7", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_click_same_button_many_times": "723e42fa8f8a87bd4faafb2f255c783c9bd64f808cd40de0410146d7b46f77bb", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_delete": "13e76ea592462bf5e1cdd269e3ef09955c6f00a409583c71115d9650d9303fac", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_delete_all": "9ec0b6b4b2cc1c35df86c972f9806ee2cede15004753686c84dda6abff9aa428", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_dollar_sign_deletion": "9feb64afaf460c77464a879f6e328503670df87f7b4e96933b5304f52ac4ff34", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxU-acbd258c": "f74a76b15a1b69fa3ae76aa55cd8836d2e1b8121e5c96e1bc79a213e80edd9c9", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6499d8881e25168a44c49edb6b641d301505713489cd16f30f7f8779a5af068e", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "ae052d73b2c6db740aa30cb3ed5d99eea019a0145e3e5ed59590ea54fd0b1ad1", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-3ed67c4d": "68b81b9d9dae6459e19301f9f7ed386e85bd1d212f777516cace6ae4b96ea992", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_input[dadadadadadadadadadadadadadadadadadadadad-cd990400": "d4892a464b552628199e15e984f96742c0fab448b53f266ffaf39d9f56caf2c8", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_input_over_50_chars": "68b81b9d9dae6459e19301f9f7ed386e85bd1d212f777516cace6ae4b96ea992", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_long_spaces_deletion": "eadf5ceb01779dd4ccdffc5a2a2ed587a7d2430a5dbfdcc459bb20c464f946f2", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_loop_all_characters": "7fef7233e9b67da6a073d321ea8d721925e0f9fa5f2c297e3d15adb878f57c4a", +"T3T1_tr_test_passphrase_mercury.py::test_passphrase_prompt_disappears": "420c847eed3cb1d64775b9108d5158bd5e803b339b502efe6643d0b81e5d9d93", +"T3T1_tr_test_pin.py::test_pin_cancel": "c39961108925f7bc7fc088e621de42cf359d18957d0bca5b03bb755f15211361", +"T3T1_tr_test_pin.py::test_pin_change": "ee1ec90a4feeadebdb77cfc6d7fd59f876b13f3f7bb6a6f54ccd754effbd15e2", +"T3T1_tr_test_pin.py::test_pin_delete_hold": "238d0256a8b1ad83dc1b58de2c0b59c324d1ee435696c169e16c628624be7114", +"T3T1_tr_test_pin.py::test_pin_empty_cannot_send": "fdceeb43cc41189f02a981702403fbdccdb719708fc92a084b8fb3cbc8c7b7ea", +"T3T1_tr_test_pin.py::test_pin_incorrect": "da2c5cebd0d955643cbc9d9236f6f8476c733242b055b63e61240ddc58e501c6", +"T3T1_tr_test_pin.py::test_pin_long": "50418a7d0b52542c03d11db08dd13d31897d40b848d2f33695264502a7c672a1", +"T3T1_tr_test_pin.py::test_pin_long_delete": "3fee0b3270f0abef0bd25f2401df94711a95dfc5748beda944a346c6832e6fbd", +"T3T1_tr_test_pin.py::test_pin_longer_than_max": "09cbe5e2851d4d8744953a6a9b744d3819c07cf49d317985471aac3e472397d1", +"T3T1_tr_test_pin.py::test_pin_same_as_wipe_code": "30c4859083f9e28f0377bd72dc3237540e9cb7a081c89956790836243f665c88", +"T3T1_tr_test_pin.py::test_pin_setup": "f41cb59b00a7f34a28931fdd7fa91e1c910fe30cc67b10548e83a6f7618b146a", +"T3T1_tr_test_pin.py::test_pin_setup_mismatch": "49069872a3e5b332ee328cce643d7408e032efc04ae23fd9071b1e6e475f8dc5", +"T3T1_tr_test_pin.py::test_pin_short": "fdceeb43cc41189f02a981702403fbdccdb719708fc92a084b8fb3cbc8c7b7ea", +"T3T1_tr_test_pin.py::test_wipe_code_same_as_pin": "f6753d4064d5c32df17c2a0cc8b99df8c954c5f989f079158eb2e87a928dd8c7", +"T3T1_tr_test_pin.py::test_wipe_code_setup": "82318719673115aae5dc697d50191dd389263e8f217a7372f603a1a759c4c658", +"T3T1_tr_test_recovery.py::test_recovery_bip39": "c59111317587b0f95c1b34d4ee6a00bcc9a895f62aef1a847963efedf51790d6", +"T3T1_tr_test_recovery.py::test_recovery_bip39_previous_word": "d79312cfec414eb41df3a889c4e7bfd75b096863d638c3bfceb34b4f17bea6ac", +"T3T1_tr_test_recovery.py::test_recovery_slip39_basic": "a00c325dc95386e3bf1549ebe7a007f9a67f8533d1b0a79c1f71b2eb639bc97f", +"T3T1_tr_test_repeated_backup.py::test_repeated_backup": "612eb904580a346cfb47ab5cce00c910c3b79812d65eeb2cf6d44cc19822d391", +"T3T1_tr_test_reset_bip39.py::test_reset_bip39": "5d5aa843c17ab173930ba9e2bf3612e24ab4b758f594e3ce204651b880689854", +"T3T1_tr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "730141e64ee94a241a616fa6aae8ac0a5252bf670cda66091c1d89870589e21d", +"T3T1_tr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "59b621e40835bd28d7ff6d5cd6efd87455f274b189ad8d86d792e98c8c2fb588", +"T3T1_tr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "5a3c033fbc97fa3a13eba35e6db34ef7b5c65ba4cc270da9e9108911ab1bfefa", +"T3T1_tr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "4e90f02404a4c511744d0b3d7809922ea8ae5794b7de3dffd2fdf815d594493b" }, "device_tests": { "T3T1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "5cfc60601705372057cdc48cb73a2bfa596c586fe3214e20bb68ac6859c54537", @@ -16744,6 +25647,9 @@ "T3T1_cs_test_language.py::test_full_language_change[en]": "4b1aeefab331751cfb8753090dfd7363bd3f20a16bbed2fc49a2f081a5f8b00b", "T3T1_cs_test_language.py::test_full_language_change[es]": "25bbf75e0ad5738b469ecbcbc30b34646239123cc981dc2c379c97a24a94d4c2", "T3T1_cs_test_language.py::test_full_language_change[fr]": "a691d94910ad5ea6d9822fb574967f52a1204ebec8c97e807ba25d84e6356c7f", +"T3T1_cs_test_language.py::test_full_language_change[it]": "aa688bf06f438fd11e581a4178147d6d1477099dce8874c7759a40ac895b42e0", +"T3T1_cs_test_language.py::test_full_language_change[pt]": "6a26cbd605d22734181a71c5f3fdb16cf5029787f41efb6ad13f939311cc3eeb", +"T3T1_cs_test_language.py::test_full_language_change[tr]": "f1a82af45ae5524c5e7bd9972ef2aa44adbdb71ec47d59ed6172d798ea2affb7", "T3T1_cs_test_language.py::test_header_trailing_data": "8c38db37b0b231be397129a41cc848c451a35ab96a77a57ab64a0b7ec4faad80", "T3T1_cs_test_language.py::test_language_is_removed_after_wipe": "c29fe59421cb6507c929da41e6c9bc4b6fbd6506bf3e13f2ddbeb928cbfac572", "T3T1_cs_test_language.py::test_reject_update": "a1c4ead3b29a3af99b640a408b119a6239bd17bb4751cd66dffe87f8dde34678", @@ -18100,6 +27006,9 @@ "T3T1_de_test_language.py::test_full_language_change[en]": "8e59c77356e1e2f3d23a7af28698e46d71b1bebbb50c45285f637b64e9f2217b", "T3T1_de_test_language.py::test_full_language_change[es]": "5556cfc0950148b83822027738a36e64ac102129a4a959e8e720233d7bbb7c49", "T3T1_de_test_language.py::test_full_language_change[fr]": "c4265b9265c62d1710df0d1af1e60ab229b41c257f356d745bf539c0858a3999", +"T3T1_de_test_language.py::test_full_language_change[it]": "88cda349db96c383df013566c4da22ce8a933c5054077e4a05637af514c990cd", +"T3T1_de_test_language.py::test_full_language_change[pt]": "e231bc68f2d4a3f079ed9acbdeee2df5664bfd315552e82530ccc102f092f9d8", +"T3T1_de_test_language.py::test_full_language_change[tr]": "51ef22ed013de96147bd1cfc10f8d3159091cfc4232cd2f7e31acdf07c5df99b", "T3T1_de_test_language.py::test_header_trailing_data": "d7788f6e37d0ef173c95ffb078417330927be945c456bd6a2e9a8cc10de28a67", "T3T1_de_test_language.py::test_language_is_removed_after_wipe": "ab0f8145426c264f5fa02b94ff26ed6ec13bc20473827249a137a61d7c18ea6e", "T3T1_de_test_language.py::test_reject_update": "65556888ba29b4405a8dbcff52f9ee24dbc80b7feb3a8c2de4a46dbe2438b140", @@ -19456,6 +28365,9 @@ "T3T1_en_test_language.py::test_full_language_change[en]": "f304aa8bf425d6cfdf8bc90822675834827432f6a1c56389f63385e2fea93462", "T3T1_en_test_language.py::test_full_language_change[es]": "5855f72f43ee720566f41735013293b5a54bd3d3fcde4c60ac5c2ad1bcb15b7b", "T3T1_en_test_language.py::test_full_language_change[fr]": "d5fabec7bd440dbbe8176718aff2fd529204482965fcc25aeabd1c8aa113d253", +"T3T1_en_test_language.py::test_full_language_change[it]": "bbbb4c3b8635ddc2c8c6085c01b158ef7a970cecbbd3e51aae15d940f4789998", +"T3T1_en_test_language.py::test_full_language_change[pt]": "548d90ce066a6505457e4fa65d82ff41b5f10157e96113be86cadd31199220fd", +"T3T1_en_test_language.py::test_full_language_change[tr]": "07086b6a7605f0aed2d5e6802a033a15d66ab0fe88ee92588ac2cea4158d9829", "T3T1_en_test_language.py::test_header_trailing_data": "e4bce5be5cf7aad820ca85d7173f57c63f3f7f0793f25c926ce5715cf6b4973c", "T3T1_en_test_language.py::test_language_is_removed_after_wipe": "ad1df5753dd4d6974eefa15d7548b5fc53c9eeb4347ed6da72c60c6aa9fb98b5", "T3T1_en_test_language.py::test_reject_update": "3edfb420e30cc58fd7e3c26a18b12f2d82544bd0bd6e604f47db6a6ad5748126", @@ -20812,6 +29724,9 @@ "T3T1_es_test_language.py::test_full_language_change[en]": "b2b708af678c06966e60e9c5f346dda7a9eff2d4715bc826b63c06ba0b8405b4", "T3T1_es_test_language.py::test_full_language_change[es]": "80b5c1c8095147dcd5282771d5c96f6585626244b582c3c190585b6e901ff5b7", "T3T1_es_test_language.py::test_full_language_change[fr]": "e83094cc509722cf186af135882de0ddfbc95e92f21af4e6059794e373777dab", +"T3T1_es_test_language.py::test_full_language_change[it]": "32ff3169164af026a2988fff2073d47d4c2c2d9eef7203d4e01a58c7275484c0", +"T3T1_es_test_language.py::test_full_language_change[pt]": "076bea549e394d75dc42090e9f8230809716522553359db953192880b6946416", +"T3T1_es_test_language.py::test_full_language_change[tr]": "6d7e8033492b3f0a2f0dbb76daac0899c6fc83817bc40b87c8403a909d9de311", "T3T1_es_test_language.py::test_header_trailing_data": "948e19006129d0d31f69a9c066b603371c01b24b48bc2c0fddc86d491b6ea6a7", "T3T1_es_test_language.py::test_language_is_removed_after_wipe": "d19648b8023faf67bc4e78dbfba2f27f41d7f1e4851f86946f9921ba13a2137e", "T3T1_es_test_language.py::test_reject_update": "bdd2276e7724143a3dc541e67577875a89f500514b395d05e9afbe48b0fe7a78", @@ -22168,6 +31083,9 @@ "T3T1_fr_test_language.py::test_full_language_change[en]": "36d4482bee0ec3ebf5579ac502b62da0ca3092a27a7ecde1aa1124b1179e73cd", "T3T1_fr_test_language.py::test_full_language_change[es]": "4558f0f37968b6763cbbf5dfe07a6ab9fcdd7e57858fbf92f695e0feaa8f3a61", "T3T1_fr_test_language.py::test_full_language_change[fr]": "1b0d6e5cda85e92ed7eec50f5a8244073521a5a5b828323532464b4c66b19053", +"T3T1_fr_test_language.py::test_full_language_change[it]": "30512b12cd9179ff809234a733c4885ced55afe1a406b511e37d8534d2f54104", +"T3T1_fr_test_language.py::test_full_language_change[pt]": "23195e5b4fa8a361baee2618db406a0fe820d31f596a0f39d95a1410d275d4ed", +"T3T1_fr_test_language.py::test_full_language_change[tr]": "d075c1923c109e1550f2667f051891a29f3a640c761580a1cd10ccdb9b494531", "T3T1_fr_test_language.py::test_header_trailing_data": "061f6862d78fd52315aab73dddff08a75eea72d9417757577d15a4d26fdc8822", "T3T1_fr_test_language.py::test_language_is_removed_after_wipe": "378c062164a46157038e529241e73b3defbd6365a11e9d107bb97e87be023377", "T3T1_fr_test_language.py::test_reject_update": "cedbae2346f339c02d59b5a5abae5d4bf8102f2f90406a9255d3c793d698bd41", @@ -22303,7 +31221,4070 @@ "T3T1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "4a5c9ffd2e1d90daa5d18362c38ab4ca174aa40b4d855844fb69725b628d83dc", "T3T1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "5fbbb26b8a1bcf9c7bd0d2f7290a53208fc08b22378dd50e1691376a393827e0", "T3T1_fr_zcash-test_sign_tx.py::test_unified_address": "ea0924db23d498f9e0496df986094f22c8005180708defd17fba5cb0715ca07d", -"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258" +"T3T1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "6844430088a65e658ba478d88a3627156d42aaedb444e272757496c676593258", +"T3T1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "6f6115c433c75931fcd70bb8d447647624056e3cd1a08c488fe2f31a5c7c06cf", +"T3T1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "8654a0713935b112c04d9b7b20a25db009f9f92e5e1d49712de18ad96d41626a", +"T3T1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "c8bc336f7ca9d49700d444a00a7d90962580ab0562e2ebf001fdecb373da1efa", +"T3T1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "5e7e65386e1a4584f2cff1282a70386b649d35879bfbc2cebfbd1fce33730d4f", +"T3T1_it_binance-test_get_public_key.py::test_binance_get_public_key": "fb50de48032470a47718499b1eddb924f6814ed19bc8af329fe64021d9c214f1", +"T3T1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "3f38d8e6523ec63cca17e2090c442b3e79e5b797d29455e6713c5699fa7e11a4", +"T3T1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "61e951d9099d78e3e89162eaa9a2b49928492625b437586e98596a71cab0589c", +"T3T1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "219649aa682fe0b319945e7f2657d7ecf2105b17dce2dc4ae2daf3e4f952730f", +"T3T1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "3f38d8e6523ec63cca17e2090c442b3e79e5b797d29455e6713c5699fa7e11a4", +"T3T1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "61e951d9099d78e3e89162eaa9a2b49928492625b437586e98596a71cab0589c", +"T3T1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "219649aa682fe0b319945e7f2657d7ecf2105b17dce2dc4ae2daf3e4f952730f", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "79e38116e0582cf033d26109137740f6a79c4425ac9e5dd908f3016bc24f8e0e", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_get_address": "eac43ecb04182bbc60d369a18801a69000e9f764460fc5452298a2d2b6ec47b7", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "5ce3f26e0b2d9dc48bb15628adda5e5e60181eb676092c06d62b741e5e899701", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "e7a00cc8c6c671c1959a1772db1604fd62f4f6b85bb2c4edbf1de3af4bd60524", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "4c3e2948a070391e16a9ee83793ca5a24a239c37bffe6865c1283d34532f371b", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "4c3e2948a070391e16a9ee83793ca5a24a239c37bffe6865c1283d34532f371b", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "da763989dc97755871fb78ddb9a1316f250072394f36f2ea5c814f62d15bbac2", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f46133a48e48cefaff260042caa0078eb32a7e7436f7150e83ca7a4217edc595", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0d305450aedde784fc1ad25792d67050e06cfbd486c1b427202398dd112fa8a9", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "219ec9bf13a122325f130228f684bcecfd3371b73ed77c4c64c7d0c2917ab1f5", +"T3T1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "219ec9bf13a122325f130228f684bcecfd3371b73ed77c4c64c7d0c2917ab1f5", +"T3T1_it_bitcoin-test_bcash.py::test_attack_change_input": "0d4fd57112ff2fb1ea8bbbb8fe2e0420360f46e76036c7d9ced25bd88b5237be", +"T3T1_it_bitcoin-test_bcash.py::test_send_bch_change": "0d4fd57112ff2fb1ea8bbbb8fe2e0420360f46e76036c7d9ced25bd88b5237be", +"T3T1_it_bitcoin-test_bcash.py::test_send_bch_external_presigned": "6aedc668f51c411ae58aed3362c6072ee8548c143ae110a8219e5eaac11209e8", +"T3T1_it_bitcoin-test_bcash.py::test_send_bch_multisig_change": "fd74ab8edf96fe73adf6376add252dd23563856dab036f6c6f21609cd37092f4", +"T3T1_it_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "72af718d73883a8f266b8f919f68fdbb64e7634a7552c4f3e2964ae074542760", +"T3T1_it_bitcoin-test_bcash.py::test_send_bch_nochange": "f6b8ccc33ffcd0252250fbd02b63431b6202e521f3c8ecbb600fca4a20218ed0", +"T3T1_it_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b4611d0d0b14dc86d918e5338433f917e35bbbc9f235dad573f777cd705524cf", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "1aa000e82704283b0a27d8584aa2e6714be2b16d031e44fdffeccb197c552ebe", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "826b954964c0978d752baba2e678418fd91d16bbaae4148eb612dd6e2f4bcb0d", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f1f18c25e40269792f6365a6a6ba52cdcfb82b9c40f660273b6acd7c9dd81e9e", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "ee2ed852610653e62f55bb7b59ffee0492d40693820a23cdbc26ba92055f374d", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "3ceee5857579d254b9e529f6254539f8daa762c9487cbdd776676ca69b6718ee", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "fcb6ae76b2880c620ccd5c49160ddb52a0328b66988723d50928d5bbefb72b5b", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "3e33a45e493dc2f3113ddfa8758be1f748397187d1bfa26be33aa4753e33855e", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "3dd06419622c2de39f470d058783a95748cda541ef13e15acadaefe96ecdbdfe", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "d4b82651a817be4dca7c3b1c1f34a3798b66705d414db07a30309d8011e60f0b", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "6f08ff3c568e38e6e71688c57a0c3c4c0cd9be7177500cb257de34d4cb7981e5", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "529c7dc167035d81973583b13c5aeeb1b20c9c0fc1c1c4a18b9d397cc90eb95e", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "c2b0032cbf3e012c37065dc6eee7cf0bc41e1d49405335a4701340db1ebf61f5", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "f24286fea25b5f641c06852ca56ed794f1b492215bf002bdfd8082ad8d026362", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "73381fccf1957d2fe35a1202102f558c99bfc117f1cadd20eda7e331cde6279b", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "dfe4843a67c9681581c8b2adee3472cf7d58ce0fd3b112565b57ef63323ac8eb", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "4bc1243408f82cd75a769253e4c219e547e2a42c52e27fcfd57e117754429e58", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "0979c8ef8fd6bfef2b0a7b83b4e1f8e310bfb97c0feefb26e5798b845c08d161", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "5d8bb96e81c415b22006d4506991df625f3ccd00c2a224c523a9fded89289917", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "1aa000e82704283b0a27d8584aa2e6714be2b16d031e44fdffeccb197c552ebe", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "826b954964c0978d752baba2e678418fd91d16bbaae4148eb612dd6e2f4bcb0d", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f1f18c25e40269792f6365a6a6ba52cdcfb82b9c40f660273b6acd7c9dd81e9e", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "ee2ed852610653e62f55bb7b59ffee0492d40693820a23cdbc26ba92055f374d", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "3ceee5857579d254b9e529f6254539f8daa762c9487cbdd776676ca69b6718ee", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "fcb6ae76b2880c620ccd5c49160ddb52a0328b66988723d50928d5bbefb72b5b", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "3e33a45e493dc2f3113ddfa8758be1f748397187d1bfa26be33aa4753e33855e", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "3dd06419622c2de39f470d058783a95748cda541ef13e15acadaefe96ecdbdfe", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "d4b82651a817be4dca7c3b1c1f34a3798b66705d414db07a30309d8011e60f0b", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "6f08ff3c568e38e6e71688c57a0c3c4c0cd9be7177500cb257de34d4cb7981e5", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "529c7dc167035d81973583b13c5aeeb1b20c9c0fc1c1c4a18b9d397cc90eb95e", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "c2b0032cbf3e012c37065dc6eee7cf0bc41e1d49405335a4701340db1ebf61f5", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "f24286fea25b5f641c06852ca56ed794f1b492215bf002bdfd8082ad8d026362", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "73381fccf1957d2fe35a1202102f558c99bfc117f1cadd20eda7e331cde6279b", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "dfe4843a67c9681581c8b2adee3472cf7d58ce0fd3b112565b57ef63323ac8eb", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "4bc1243408f82cd75a769253e4c219e547e2a42c52e27fcfd57e117754429e58", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "0979c8ef8fd6bfef2b0a7b83b4e1f8e310bfb97c0feefb26e5798b845c08d161", +"T3T1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "5d8bb96e81c415b22006d4506991df625f3ccd00c2a224c523a9fded89289917", +"T3T1_it_bitcoin-test_firo.py::test_spend_lelantus": "92a06bd55b0bc36fed18387d5e22bd613f0939bd83adadccdc0669f6286f0c46", +"T3T1_it_bitcoin-test_fujicoin.py::test_send_p2tr": "f80e0874ea358b2c8c1befd24da0e959974e4921256e57a4f96f44ced25a292d", +"T3T1_it_bitcoin-test_getaddress.py::test_address_mac": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_altcoin_address_mac": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_bch": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_bch_multisig": "9c1b81b015d523b4268474a7b2bbfac16c7c75ef13de3fcb30af760f5d4ff802", +"T3T1_it_bitcoin-test_getaddress.py::test_btc": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_crw": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_elements": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_grs": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_invalid_path": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_ltc": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_multisig": "055982b9a14e0a48ec3170afe7555c5fbe8d3e2ef6a4c06b4f1d5b23d4341e27", +"T3T1_it_bitcoin-test_getaddress.py::test_multisig_missing[False]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_multisig_missing[True]": "927ee172dde9cd305b15e3718f250e4bf7a3110c3de89c6ea64ebe9bd892b94d", +"T3T1_it_bitcoin-test_getaddress.py::test_public_ckd": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_tbtc": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_tgrs": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress.py::test_unknown_path": "2cc2bf64b3ed30e43deb994ed1dba587b6849498083b6943167f56f62b4a2c5b", +"T3T1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit": "778c13c8cb28b818903675a1efb8948d8c0eb63b5d1c42adde48187a1397f16a", +"T3T1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "b4182152662434d505b9112230b14e22e9c949da8195ecc8518f10d36c988a98", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "025101479f7f512ebd2475769c4c8987495795bc33f76df0a260ccc1a15bd104", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "208668f6b8955ec20092c2b73710cbbd735ace7f93ece16ecca2d6fad8b9d745", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "de95031083b8ca065db39ca9646d1600ada6cf811382e9abb63dddd287dc9a2a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "95df54dadd490b623d81221a524d27a73b1e7dd7c2ab1b76706adb74e0bda063", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "73aa7ef1d96679204a3ff0a46c8473f13467c26fd6ae1a37baa5454409bf156a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "379026b6960736cac83746a03113b30bbc077d7deddc0f2e2cb7d8e359ce5f24", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "38c896ad8759df5b79c3a41d2e082e6aab74013700ba18e6b5e2e2924efadf42", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "a1184d7cf3b80aa35f74d43e454d256d53e23b9ed2bbb990ec8bb46d58d045b3", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "5a30e94e19c79d5bc1e770041bc0afdc6e1a40e6bbe092d6c1cf20db8f45f605", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "2bdabd82ebc27a0778c87a8ea5db1a861ce8af3fda8e98501ae3ab30529caf2f", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "cc1456c35e31325f0fd379399d1ff86a88ded0505419ec4ed03e681348167aa6", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "cd34e9aa373a0a75447dcfafc2b0797e491560e183c45b9bbbfec556d165314a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6b6bd0b5caf7d3ece4db057a335fbf7cbb829798b2bab3b0b2de96c739ff5472", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "21957f293605473bd7c4ebe4549a849e9a6c444e65e1c89f7f99862002bedd31", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "027c3dd0d3348a1dc0ca857c2d266a11b37b71623899255e802b04d90762d7b7", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "d833fad4b49c8ae05d61be76d7de3258cb57a96c9d43c0be63a03d3dcd51333e", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "96c86684cbc2a9ae7da38b40f8827b7a7ebbdb38879aaa0994ecdb7b5825a6b7", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "a967e97ce8122fd5625893fb0d3f3e01a174ceed53c0f3e326adf6fb633eb1cc", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "bf0db5b311ed5ffa93ecb012578b9aa06fe1465eaf5598411dfe513789f6f359", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_15": "33ce8830860907954d43fe64f5f946630661ec1cc9947c1337e4fb5e54287fe6", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_3": "f0a8f39834f6eb40332ae0ce80667b43f38943fff2b6897f34f6dea86b4e107a", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "779282da6f728c32f6742798cce1f5546f0f6814a21ce83e5e213841f349b600", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "779282da6f728c32f6742798cce1f5546f0f6814a21ce83e5e213841f349b600", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "8a5c1fe5c364e8a6e99d74d8a301883e0da232d4c63c45d0a0a394f71b19f6c1", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "b55475e47e8d24ed1ec09aa95d85e92c906b9f0d1ecdac8f35e328a31b58b96b", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "fd7371894b96e0e9f7726bc6496605011682b011591f17ed0d1543befa31d548", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "c3f7d2b95a6f63c7cebb082f7559396686ff34f82c96f6750028a830cd38daca", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "01884f61d6be1871ada493191a72168aa773f4fb340461b61aca678798d991b7", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "66a559d4d1a691e177f62a315a77dd6d3bb624c40134ec9d40bfdfc8d31c4714", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "e5dfe1cd6c43b20f75aa4a4bb2b0b65e11226cde24c420fdcd7c9426428b5c6e", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "45222d1fb6bf45040411e31d74a70a8ad60ffe6326f1852d2bad632e6b30ecb6", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "247ff4553f3115970c287428aa7b4e6424d4556cc88e51a42b2ff723a71986f2", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "d7681acccb169206016adccb6d7b7fa8a552fba190232bd81c647c523f158dec", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "ab3be5e258bfc29b9b0842c3f7f4337d5a41a75e39b2728ca07b4339227da1d4", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "ed8ed1fff230ebe6b263295d4ce41ddde70ebae026555c4991ccf0adb2016cee", +"T3T1_it_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "9c46b156f26c7607d26161a4c468223390999539279fdd89d0d88d254547c9ed", +"T3T1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "d3dadbbbbec160b9474d249223c9e8883ee894080e228d4f59ddb0f333fbd358", +"T3T1_it_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "826b954964c0978d752baba2e678418fd91d16bbaae4148eb612dd6e2f4bcb0d", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "4b1f24799b0659644e9dd47ae2120575e052f016aa635bd5000893e54f1f8dac", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "bae41e7f4dc071994d4311f782ae2783b742e413fcb382504a7c4d758e9628da", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "04eac1dd09b6bc666803e920a73d1553cc74bea0a38a8991b1b54092beadef37", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0a30a1e2beeaee6cded4851aa46b2ccfb5baf6b4e2cf5be8c9f9f3af5c00cad2", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "aa5852ab5d22f6856a11561879d60942e839bbe0ef4a2a44a0d0e8b93e1ad10a", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "964100004093f8045f984f6936c1c4cc6010fdb2b880ebd7cd44a1bc66edeaef", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "4914fbe62e7edbdbda68443a118f4397036556b93075a035a50a0f8165cae1a9", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "40bd4d8af226b89804214d0e1ac3c5b93fd25a7416a42c8786cfaee48330d975", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "529c7dc167035d81973583b13c5aeeb1b20c9c0fc1c1c4a18b9d397cc90eb95e", +"T3T1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "2ff465773574887247cfe4f7fe7d3e3a567d17d1efc109cd7ce5d74740bed257", +"T3T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey.py::test_slip25_path": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_grs.py::test_legacy": "4afe2e90fe71782d38c5c7b9093f2cbe719debd65605b960c4a96dcd906e7523", +"T3T1_it_bitcoin-test_grs.py::test_legacy_change": "9e985a40b00c224b63ec89238a7a0ea2d6335aa51fa7c680bf5e3634025b2572", +"T3T1_it_bitcoin-test_grs.py::test_send_p2tr": "730c18fa5603424c19d35f496d169d54691526c44452cde2f9931f267a500abb", +"T3T1_it_bitcoin-test_grs.py::test_send_segwit_native": "e78095ad9d4497b27470cafd559d39b01fc6a9003a6b184e5db0269537579467", +"T3T1_it_bitcoin-test_grs.py::test_send_segwit_native_change": "8409d479f83bfed2e7fb4ffec1cf24d718039eec396540fc8e0ae92dd223780a", +"T3T1_it_bitcoin-test_grs.py::test_send_segwit_p2sh": "028ef9cf6177564491be35c43029119718212285d82f73a013cf0098cc96f551", +"T3T1_it_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "d174090ead55105c9d2f54b92ba42f1bf7e9edb7d0fc1b55c253f62eb718c408", +"T3T1_it_bitcoin-test_komodo.py::test_one_one_fee_sapling": "fb47a05e8d065e09383ccbd4092dc8661a0dabe6b7364383b1f9a3e9c236ba30", +"T3T1_it_bitcoin-test_komodo.py::test_one_one_rewards_claim": "c3b0fda59816244c6d219ee631fe6a5523bd32d134591df7a259ead6430f471e", +"T3T1_it_bitcoin-test_multisig.py::test_15_of_15": "229d2c2bbb886be88ad6ed1002664496a0d43fb05a6c5707795e17a76962fc8f", +"T3T1_it_bitcoin-test_multisig.py::test_2_of_3[False]": "cb6b736196410e56683972ed4544264981cb6da9bad39e73f2d232fc9cb8038f", +"T3T1_it_bitcoin-test_multisig.py::test_2_of_3[True]": "23326ba2aa574b0ea77e9a7d9d069c24d136f365f81cda725aa26490c3ba4e54", +"T3T1_it_bitcoin-test_multisig.py::test_attack_change_input": "f243bf12bce3fa18d602028af9b3f15856d5a33f43f220c0c6ebe8764602c2da", +"T3T1_it_bitcoin-test_multisig.py::test_missing_pubkey": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_multisig_change.py::test_external_external": "2b2ac07a397dcb270275bf35703c50b1d437b48dce2d1b450928599e3d669eeb", +"T3T1_it_bitcoin-test_multisig_change.py::test_external_internal": "ede663dcd46704a31314bc0279bb428a3a29ad0422bb8a159d1610c918007e9b", +"T3T1_it_bitcoin-test_multisig_change.py::test_internal_external": "d085c14299d868c1aa1cf040662136b5d4465180905c7b24fca95435e27496ae", +"T3T1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "6cc9d00d94a7d7f7d9ae182422db5d194384b3e19e4a6a3b0a0e6fc0cf41b51b", +"T3T1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "d886c3dc82dc83b42a054030467561e3dabaccd24c2271008e8029122aedc853", +"T3T1_it_bitcoin-test_multisig_change.py::test_multisig_external_external": "13c3e8dc246f5f57a25402b6e6275e1e7de42ed8812414110b425d9bcc3d1fd2", +"T3T1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "86f613307f0fc599a97d099e8679b3b4f89f8f7f6179cdd944f5e92efac52750", +"T3T1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "143f359a2f6459f4735a84a2de5430d0339649262ba182a311c3ddda5876ecd5", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8fa89eb0f054bc7c32338282c2b6fadd99bbafbcf8a48a0a0377ac4f9a0c595b", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "878c55d82308c037be338a84e4f8fa3cdabf853062592dbf71cb43c68b03cfb1", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "fe1aca16915bacaeb398c842402c6b7b22da692763d21ab3061e2048f0d876a7", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "ed4a7ebb19529ae73e88975f11e86cc53c072ca33e35566fab21837fa6413211", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "26dc29cf87a189a2ac528a3f42001ad99451cfecf41c15e6b9e1842bc7e2aa17", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "f0ec35154d1926feeae585472439032fcdc86dd94146853ef62c3d17cffd3182", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "d4ee723d21e19e1f8020d039e95205dfdce0ba703fee9507b706c2acab7ee54e", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "ada6b6aa71315418c313d926eb6bbcfa80caaa3ce28e3e9b9901857020baf550", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "2b2ea0f698c800e90afbeac74deec8392aeae5843cf85c2ddfe542e4925db664", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "7bdb87a60faeac1f50c1b59f9a9c72036d9db278ff9d49e6e469e85966f7d6b3", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "e7905f2ed520aa6ea7a728d9f1e43c36d63a32253ffb22644c0ed7304e93a326", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "54e60fe3e8fe6cfd6dea9deea47ee2ebd2842e965b0cf13a6f5aceb96ac63e98", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "77fa7d7a7501a0ae62780012fa287b385451d70099ef186c093c769e3e657a33", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "bb5f646473b0d257a0afa3f8ca59827ff195bb9ca0dd1c26a4944254ab352492", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a5f7ca679760bda5623f4ff86abf0b251694a8928f78d33272f12c1ec9c9d482", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "219508a438aa65df67d36c675a98c5c5e6a332ae27cb3510167eb2cfd2814232", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "18938a7757315f2f25a32a9fcc0cdbb84cf636800461ab10a53febc9ac6c2fd8", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "f194da2d0677c75d7347e26d0a23c29858b14f28cadc5bb693d4069327d32e15", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "db07340d40886f828fa51a6b99788d59b126fb7ee6f147270f1cb1533a3438d8", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "4fd899a95ea4701776a7664a415defad0d0b1e668c95ff18a60f87e0cd857f86", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "f2d9b6207cae566c6d06b629431d2f481368d4e8d9502d31c74169e08f99bd33", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "23b77b9e58fe558ff140fa9b8d0ceac86d4ee18de29267054384be60dac79290", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "f5ed0af13d23769da7bcc111db2adffb5b249a65833a76e41b1df3f8e2aed08f", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "0e5cd8802df26abc03755c074a9cf52bd2d1f3c282bf66e056d986be6a094407", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "124457e88d71da4e7fac981898a35a98f71a8f22c5309a7d8ee56e81b8867eab", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "eed1fe581d32d210ff457ff5ea395baffa3a874cd61eafefab3acdfbf1f1b8e5", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c8a3d94e2abc965d137f8f15baf02e27bad5b567ce5971359ee366ef652ce372", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "e04f515a4186364ae9c380854344ae01bac10d096bba788f3aa3b66b68cdade2", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "49a15becb7b3bccb48d4abbe2b127deafcb65f363595fc214b0c1218f2a14e84", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "e82ba19aed364c305d4ecaaa6bc6e22ad089103873c85c34e926b9fbdee41a5f", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d1d31117adc44d319874ade69cebe417eacfaaf8368fc55cb924546da2f53065", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "29e8884876c5b852ba4405605b5e1d9fff981f4f8eef6261f22ad68728828f0c", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "e82ba19aed364c305d4ecaaa6bc6e22ad089103873c85c34e926b9fbdee41a5f", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "e82ba19aed364c305d4ecaaa6bc6e22ad089103873c85c34e926b9fbdee41a5f", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "e82ba19aed364c305d4ecaaa6bc6e22ad089103873c85c34e926b9fbdee41a5f", +"T3T1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "76efb851d7136b89cb98301c1aa1a3f332041e8710eccdc5f262f7dc06f629c0", +"T3T1_it_bitcoin-test_op_return.py::test_nonzero_opreturn": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_op_return.py::test_opreturn": "128bd19508088f29768e86f5addde4bf950b7bc09e8d26daa0ff85f2974d0f87", +"T3T1_it_bitcoin-test_op_return.py::test_opreturn_address": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_peercoin.py::test_timestamp_included": "ae54f66b40fa6117b9a32eb68076ce846998dd26897a6456520bd66c09e8b37d", +"T3T1_it_bitcoin-test_peercoin.py::test_timestamp_missing": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "7a61c03a5080abddcecf0c4509969ec9112bf25c48efe4ce9e56621d86bf61a9", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "d692c4b3562623f24377f44ecf066b6c5e32f9f0b0180b9ea02bdfcec53fa4b0", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "d692c4b3562623f24377f44ecf066b6c5e32f9f0b0180b9ea02bdfcec53fa4b0", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[bcash]": "b8c4546835ef2f670845b7322f52bfcf52f23d74969ed90c062650a1e0a92b09", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "ebfbd41149b42021f2393b4bc6a97d0f5bd78dec52451ac968bfb61ada7df978", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "272efc195567ad5cc3325a9302ce93fdb1413641804bc83289bd9de62fc91017", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "5c3f2d4250c1587777c2f31abe65b177b1f96addd05e2ce5ecb14509c35ddb46", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "967dfb21a49ff6023cb34c664a7bc959b3c021c513ac66eed68c8e9fc13771bc", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "75603740fd295f40735c7acdd7955fee1577eba8602ed9b96048c23d0aaca510", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "75603740fd295f40735c7acdd7955fee1577eba8602ed9b96048c23d0aaca510", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "5ac7365fed5d9e83e07ebef424650598e6502fcf7ca12c5dd464002c44c63057", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "73ccae37165b76430012d650de078874232b9d24326d8526ee187bfac8a91bf0", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "8650da557eac74a84bdfa176bd19b2a5d1643cdba96e45e90e931ff9c10739cc", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "8650da557eac74a84bdfa176bd19b2a5d1643cdba96e45e90e931ff9c10739cc", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "2945fcfd61be76efd949aec1e5662ab60587aebd6d90a6f259dbce06290b6dea", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "202b0682546c5d00d963a5a5d489a63a186eccc2a1a35a2aefa129b0ebad4f6c", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "cb35d7abfff6b92d8a19efb4fe21cc771044e7377dc8f0ba1b6440b7fa3a6aed", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "cb35d7abfff6b92d8a19efb4fe21cc771044e7377dc8f0ba1b6440b7fa3a6aed", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "b6314d173767c3484921fdf89046c7b5c9361d7094a6f7474602a74ce4709530", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "aa472e57ccccfb93f3fc5558044c6378c2ec6ecf08d0c9dc22bc18573c101b74", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "d81ca371ed82ad872b6c6c0cfe051c59b57c087f0cca64276a2ad8dca601f416", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "35accd071593263c5a061213a3975f2f2339781697f196c8ecf252f0a97fca37", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "3f2eeb13306a01e973d1d1f2c0a713f777e4ad7466ceff1f962fdbcbe82ba271", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "a1ca2661e7f494b25336eaf153be382a8dfc9357e0e8e6cf643d315bf176f9e8", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "bc35545774b270a2b9a4d11da7a62c7b9b092054a8ddcdb48259bc337327a384", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "93f18cbbbb924fd1f7927365f65cfbd303d6ad6d7050527ab213ac604fed9921", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "16af59f9ee771c54365d1d6974491b6cd1e6c1cc234b35603f2d72a99a6154d5", +"T3T1_it_bitcoin-test_signmessage.py::test_signmessage_path_warning": "8210650b809fdad910a75df3cbe17f2bb9004d830ff8d2c8b17970f80dc38219", +"T3T1_it_bitcoin-test_signtx.py::test_attack_change_input_address": "02c5ef7357cf2c50e9d3d941d4414b83900a512d0f833d7aec5fb1d27d2a7f26", +"T3T1_it_bitcoin-test_signtx.py::test_attack_change_outputs": "6e1b6542fc2a4c8cffc7fcf379f03bb91f2526458313ff7724a0873b014fe93b", +"T3T1_it_bitcoin-test_signtx.py::test_attack_modify_change_address": "e0a0e1d7f813fa2e7e1755ed578dab735f278a63502057e00f99448edddb1b05", +"T3T1_it_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "e0a0e1d7f813fa2e7e1755ed578dab735f278a63502057e00f99448edddb1b05", +"T3T1_it_bitcoin-test_signtx.py::test_fee_high_hardfail": "cadd78164b9f49f7680dd3050f3735e7aeb77a76cc993ea0c88ac2de65265e40", +"T3T1_it_bitcoin-test_signtx.py::test_fee_high_warning": "68d0cfd2886b9dc8cea42d4a9b2747bdf5885c48fdd933b5f79a64a5a9a5ab47", +"T3T1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx.py::test_information": "5db5cc4ff38da0058062d8ee3404184148b15a2c1cf5d1ff6ec4ec04bb63ac0b", +"T3T1_it_bitcoin-test_signtx.py::test_information_cancel": "c3a31605538d32a17a2f545724ccf629797ad97e0fc65f494676eb854b442bfc", +"T3T1_it_bitcoin-test_signtx.py::test_information_mixed": "11ada6464b55414ba81c4d9971de8b6f8dc71a702d39e68d6ef616b4349a5c78", +"T3T1_it_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7d2d7b5d42342d2d3cdc25e63b4f68528054a66ab0c606211647596ea361ca86", +"T3T1_it_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "f253d0606a0b40e0a271e3a060fd7f9dc83281efc093c600b6f46ebacbad3943", +"T3T1_it_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f0cfcf73bee0f1ec0d7fb08723e063a012fbae2ab73606c1797547ec2572471c", +"T3T1_it_bitcoin-test_signtx.py::test_lock_time_blockheight": "f253d0606a0b40e0a271e3a060fd7f9dc83281efc093c600b6f46ebacbad3943", +"T3T1_it_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "f0cfcf73bee0f1ec0d7fb08723e063a012fbae2ab73606c1797547ec2572471c", +"T3T1_it_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "69843d79847901570749ef1413952b3c214b94df47400bb14d5640ba4c6bfb0a", +"T3T1_it_bitcoin-test_signtx.py::test_lots_of_change": "9f9fc33b958bada33a55b7c5971daa48c94a262d2a4aacd764a4da80d8ef4d20", +"T3T1_it_bitcoin-test_signtx.py::test_lots_of_inputs": "7dc12cf3eb72ffe3ea6dce6081aa5055000cd1b82fa95abf07eff9c4a03b732e", +"T3T1_it_bitcoin-test_signtx.py::test_lots_of_outputs": "495f1dcc02eae1c9f947e92270b5328838fd8d90cd1e0866a18ee6a70871f817", +"T3T1_it_bitcoin-test_signtx.py::test_not_enough_funds": "b5717f8619625e05c592a1e6fd1b8101c54c4a26c85b8acd296f082f46a07113", +"T3T1_it_bitcoin-test_signtx.py::test_not_enough_vouts": "8b1ae3276b68d02fcc18d4ec7c5039d3e30ca3b3f52a2beb879144a2f79ef91b", +"T3T1_it_bitcoin-test_signtx.py::test_one_one_fee": "60d2d160c9b672eff59145017f9d3d8c5971814cef8c30dc85cbed2b36452f44", +"T3T1_it_bitcoin-test_signtx.py::test_one_three_fee[False]": "ae8b0e278b7b42852232ee3399f315598eb8ec4a0996a5bfd10af853dce75c2a", +"T3T1_it_bitcoin-test_signtx.py::test_one_three_fee[True]": "780f36cbef95969177f81f2d0234c5cb855380358354d612c5863042b60b0ac0", +"T3T1_it_bitcoin-test_signtx.py::test_one_two_fee": "2434fbc50401b6c83d9880140125ebbe1d68dfe52aca4f58984230515d2705b4", +"T3T1_it_bitcoin-test_signtx.py::test_p2sh": "38b3edaacd31da5098f5138d055c6b765fcc224d0482b7eb8ff1c8800513f236", +"T3T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "ec1fc335fb161018f8fa0b7e082f831b197d3d9d18ccbf3042de708e06cf8bbc", +"T3T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "ec1fc335fb161018f8fa0b7e082f831b197d3d9d18ccbf3042de708e06cf8bbc", +"T3T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "ec1fc335fb161018f8fa0b7e082f831b197d3d9d18ccbf3042de708e06cf8bbc", +"T3T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "ec1fc335fb161018f8fa0b7e082f831b197d3d9d18ccbf3042de708e06cf8bbc", +"T3T1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "ec1fc335fb161018f8fa0b7e082f831b197d3d9d18ccbf3042de708e06cf8bbc", +"T3T1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_signtx.py::test_spend_coinbase": "9c46adf4950798867ccb72c101d9b654817fc924f57dcb0eb97d55177521c0b0", +"T3T1_it_bitcoin-test_signtx.py::test_testnet_big_amount": "ca2bf3774dcad963b1636d34bd26204f3ad3e34f66ab5e26ec9e44c330a9bfd1", +"T3T1_it_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "ae9ad8ff14fa90d86a058cc30f06bbd97490c192fbf81f7b37f2800876689f68", +"T3T1_it_bitcoin-test_signtx.py::test_testnet_one_two_fee": "e0a0e1d7f813fa2e7e1755ed578dab735f278a63502057e00f99448edddb1b05", +"T3T1_it_bitcoin-test_signtx.py::test_two_changes": "616921135c0e58ff7a0edfa0c50dbcf877c3fa316186f80a0a541fbc79373826", +"T3T1_it_bitcoin-test_signtx.py::test_two_two": "18f817463147179ab44c1cc6b900bb22ba55ccfc41179a20a344508fabdd29e1", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "60d2d160c9b672eff59145017f9d3d8c5971814cef8c30dc85cbed2b36452f44", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "75c8a9ec798415019afc69ace6e2b1171322cc35a953e788876575e24db9d648", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "48dc34fee5fae4b203c75c9c1766fc9207a385038652dac659fb1927f1ad4dde", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "0a7fd4d378d95d3f147d378e64080bf28d920e32d68746a535529d1a9ed91e53", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "60d2d160c9b672eff59145017f9d3d8c5971814cef8c30dc85cbed2b36452f44", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "75d6b99c54e0be85652ece94083fcecd7563789595670d05247d19204d1ac9a9", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "02dd8ae6d60ccb7e5b397ea530b2b2acd7467f3fa6d70a90c798318e5751737b", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "53ff7dee4afb4b4913a5bf9b34932bee17962175f3ed5878d56fc5458156f215", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "ad85c68db5d7f30143fef2b8af47dc42ff94d10e9f239416f795b75d75974978", +"T3T1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "75d6b99c54e0be85652ece94083fcecd7563789595670d05247d19204d1ac9a9", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "4ee3c982311ddb92f3e38afba86909c82bdee6b5f034a31bf5a500f01b174a62", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "a55777017629d1528e31347e3910efc31d52ae05e25c1bbdeed938c03ee5dbe2", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "3ef0d70fc5161d5221ad5e0916179e10d97b346d69efeaeec37cd545b2a55a19", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "cfd75170d22b3a7ca42a6aa67e14b6d9a5949a03a30edb0ec467566009c9d82d", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "3ce879da1f368cc5af64f761f8cfc8d6cf76005cf35b11463e2ee6855bd11015", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b11b4a67538aa8e82656555e19f640a23ffbea95732279e124dae2ff8bdc5c7e", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "2c2184eb0b699f31feef9e98f37edf610ff31f06d19c131fe4944eaa2188d382", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "f9dc1ad75c52ae7afe09c287b62ee6146783fb369121c1e01d08e532fc62e949", +"T3T1_it_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "244e59b073f362e576597cffa91715b9d5c6150c896f46aac862e3c6afbf93a5", +"T3T1_it_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "1a864da3fa7de7ac7366b125827f5fb94b43c97bb3a5962261e15eb6f1abb375", +"T3T1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "a3a564b3e1890b8e5eaece28275c67f9ffc74154b84b3b4af10de1c68bd31ab9", +"T3T1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "d6b3367c8b58ad5bcdf95b2ba15c9a65505607c9f4d88a0febfb92a90941d4ce", +"T3T1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "6d9c563346326c831412b9981fe6008d4dd9cdc1dfaf2725d9e9764f64e1fc2e", +"T3T1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "a245e8ba94abf0e0bc592a77982f8a170d784f81cfea54c54cd3c9461af9d220", +"T3T1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "6d9c563346326c831412b9981fe6008d4dd9cdc1dfaf2725d9e9764f64e1fc2e", +"T3T1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "a245e8ba94abf0e0bc592a77982f8a170d784f81cfea54c54cd3c9461af9d220", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "ce884efa26322dfe1005acbe6ad69008ca087ae2f331ed89a828506c4200ab64", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "a39b04c2138823c5b2cf0f6e57b4c32d71872c64f7b7f3485bf40c1573f8fba7", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "4e6d9e04766fbb784e23c2b2da16b18cc7f2b58909ead58e7988bebe28e610db", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "b405509046dcd090c3fa27680168ea5c176a526ed7366a18eb787e52e15de777", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "e6b9909dd18b81586a3d00fb8160eaecfe407161e62e0e57e8ce7cbf1f0606f6", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "b58bc9515fdc58ee943da9b883fcabef82c331ce0014f454c2446d165f283eef", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "79975a63ff453cb902b4d366cb63149e9f7a7eba40a621bb9789e1b673d378a7", +"T3T1_it_bitcoin-test_signtx_payreq.py::test_payment_request_details": "6a89073bca427baa7258f7f40830154ad8cbbb504e08f532b3956553b9444e8a", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "40d14db560b7e0dc2f099336f1151b7f97c1a83dcffb2dca625061538eebcca3", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "40d14db560b7e0dc2f099336f1151b7f97c1a83dcffb2dca625061538eebcca3", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "40d14db560b7e0dc2f099336f1151b7f97c1a83dcffb2dca625061538eebcca3", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "40d14db560b7e0dc2f099336f1151b7f97c1a83dcffb2dca625061538eebcca3", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "d95e28514236c1146d11b5f13df9889559763d791d2d37bf8f8f5cdff5fbce64", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "d95e28514236c1146d11b5f13df9889559763d791d2d37bf8f8f5cdff5fbce64", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "d95e28514236c1146d11b5f13df9889559763d791d2d37bf8f8f5cdff5fbce64", +"T3T1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d95e28514236c1146d11b5f13df9889559763d791d2d37bf8f8f5cdff5fbce64", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "521593f7348ce05ba60bd01cbd1f17ebc56db8bf61f342e77b85a941b689f49a", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "6caf153aca085532cbfef0a4ec6de4622fd07eaa37feca0ac43422d5ae1645e5", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "27d6de06b1e30c46bf1d049be03b4f43d79a062dc3e0d151a60918c8c181ec63", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "27d6de06b1e30c46bf1d049be03b4f43d79a062dc3e0d151a60918c8c181ec63", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "1f1f96e6dc0210903d6507f0e516d02648e24a22169d72bb6b3a4b82be192ade", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "630f671286835d801bb4a2486125590ed917581e71cc6f9f22ba471051421212", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "5b6811e453fc6d4e7fd07bd1289ab696388db1dbe7d01b4915254f5f78bdaf4d", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "1f1f96e6dc0210903d6507f0e516d02648e24a22169d72bb6b3a4b82be192ade", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "7bcf071183f5cb3d0b318e8f00c54c3a5a4979713f57634998f3b83978a175c2", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "04fa1f2115268d0904e5849382a71ed95cbb9765b1a93355379fe47263a21412", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "04fa1f2115268d0904e5849382a71ed95cbb9765b1a93355379fe47263a21412", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "04fa1f2115268d0904e5849382a71ed95cbb9765b1a93355379fe47263a21412", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "867ceb2d4713c2d1727049953d3aec126089729fd23c53ce56439ef0c1f706a6", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "04fa1f2115268d0904e5849382a71ed95cbb9765b1a93355379fe47263a21412", +"T3T1_it_bitcoin-test_signtx_replacement.py::test_tx_meld": "5d5c937b3fb9eaefa0b262634a592d60df9cd506335680f17cf2fd1466e74f08", +"T3T1_it_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "469e65d59dd8b44977f3c9a8b7fc97531cd70f129a15d18ad2b385cd23f4c527", +"T3T1_it_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "a3b73d38c61511887fb9b1b7cb0f46c5458e28c8f6584372182e74a08aef033a", +"T3T1_it_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "bbdada1b42820134404b275f7398c6d3cfeb07a092d887daf7005fa42d95dc8d", +"T3T1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c98258c0de76592ce1369a214d8161b17e7ab3463a76ea47c3224d38ba6a643a", +"T3T1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "af2fe896c3c89a46d965dabc1d6561823a7566bf5c47f134fde628c9b74e7c93", +"T3T1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "b92b42eb19bfca01c48d919b0324b077294bd247831d86211bbdea0a2509c6f8", +"T3T1_it_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "357d2c1406f06cdc4f46b6f69670ebd1c9792f15456031811470c85c68f3df05", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "c9b0eefda222ef877ea45b8005838caa67d3918bc58cf69f10dc0ab1fbe640fe", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_both": "1439aa01cc70c59cfb567c23e89dd38fd8320c029f3acab9fe480affa818228d", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "3a311454c2f9c887673091239cb0b1c5320ea9deb18e33532341b6dc917b7608", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "add25e4b87ae03b021f403b31d9f4d64403aedbc02ee39f427f0c1263ad956de", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6aed2a752795b0042f56bb3012a3e8de6313da117b8960a89985695171e34666", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "abc17129028eaa3940a6e6fbb67f46587153ac5717612849884e12b8c69f983e", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_native": "75d6b99c54e0be85652ece94083fcecd7563789595670d05247d19204d1ac9a9", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "9b7e6de4d63f32ce6e56842a13e569eaaa24cd7c5c43e04b0dfbbe1c6d11e27d", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "025915d46a5f52ac806e2a1bed0206529b0abb3f8fe818e147d11ef2c2b6c611", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "8c608c6de97bccaf828f1f369f1e40986d4613007d918f4cf8695478a79250af", +"T3T1_it_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "1cc1a4454923bb4960eb15393178d8531d9b5c4577c2692e849e7f26ce480e47", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_attack_script_type": "96ffc43b374287a0f1aaf8adb66407f84fb5bf1ab4ab96775da005aee9d27168", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_send_mixed": "883bdedaf5cd772b81d545044ab1e631e56b015e0a1d878e8048b739e4b335da", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7c71071c861ac718d52239d5bd08bd16bb184429367b89bedc056c769de3b662", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "053151a479b3044ad3b4ed0360830cacdb8f9bc0fa98aa1f19caf6fbe37b5bca", +"T3T1_it_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "52420673e6f42d7e40feecbc34026501a53419b3fa8079bf2b20db3078409976", +"T3T1_it_bitcoin-test_verifymessage.py::test_message_grs": "c5c0dca776cabd6901f02cf8be67d2ba118e3bbf192925f2df357b5e090965db", +"T3T1_it_bitcoin-test_verifymessage.py::test_message_long": "1b6df7eb49710b0db0a5048f8a45900b20b6ee08beb3f1c33542566d8c6e0222", +"T3T1_it_bitcoin-test_verifymessage.py::test_message_testnet": "13530b6059cbe372754000d9ae655df78364789dde0b2b47543aa69094c2c3d6", +"T3T1_it_bitcoin-test_verifymessage.py::test_message_verify": "4be163c2aa32496a3b8a9328d4d819e07c4cc7f687991baf036b0643e20fe48b", +"T3T1_it_bitcoin-test_verifymessage.py::test_message_verify_bcash": "db1f5d57c3e12eeda610d60eb9221bd6ee8692428f2144556729603244a77f4b", +"T3T1_it_bitcoin-test_verifymessage.py::test_verify_bitcoind": "6c02f01e3f9ca59242ac86d782308f894c01a447c6c9569c7645e294898338cb", +"T3T1_it_bitcoin-test_verifymessage.py::test_verify_utf": "3c92daa4735ddb6d9d5d5f2f25e1a5dc109e1ce377f8bf077628ef7ead963302", +"T3T1_it_bitcoin-test_verifymessage_segwit.py::test_message_long": "33383d98d051dce975778b136cab623bef81070c9251c60564b4f88038b8dc1b", +"T3T1_it_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "52e176746e105def15962db29da6669110e156b934338b3d578826ccf69dfdc1", +"T3T1_it_bitcoin-test_verifymessage_segwit.py::test_message_verify": "d54cc42b27cca757711d7af38c7bbfb662435554ca2aeab29e667208f6d783a3", +"T3T1_it_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "3c53058a9f23754a052efd254647f2d29fcda0072ff6710b58cf3ceb8f2457ff", +"T3T1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "34f31a43823ae58d8d2a31fd784a3b94bffbc464ed08d9d2704040c424ad5636", +"T3T1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "3a0dd42166379df84e0f1acacb576dc510810b272a2e008d76e0f22332d8b0c9", +"T3T1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "bbbe03de87e3d26ca2c638f3822c66d5aff06358852a85942260b4b22889aa81", +"T3T1_it_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "14165785c51e449445e789bfe40a564a823f9f46df2eab991ad65c900f582a9d", +"T3T1_it_bitcoin-test_zcash.py::test_external_presigned": "26dd626e3af7cc09f061375511f76d87f684f1eed766286fb9b8a9dc9baedc0f", +"T3T1_it_bitcoin-test_zcash.py::test_one_one_fee_sapling": "399fa5c8a14149774f2f35f42aed82ff09425deb78679afa27bc1102e0dbbf8f", +"T3T1_it_bitcoin-test_zcash.py::test_spend_old_versions": "8f211149066d0f3c6e509f098f247887b8ffb2eaab5bef034ec4cfe0f1b3644d", +"T3T1_it_bitcoin-test_zcash.py::test_v3_not_supported": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_bitcoin-test_zcash.py::test_version_group_id_missing": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "68b35f11b3ab94a1e811380dfa92fb53105446edd9c7f048008511b7ce8a0017", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "c059545b071b94568aee808d931afedd067b442aabe0a0804fe19bb07220c330", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "a54ea31a9613eaff31fa516239b63f45739addd900d6d3d5621d9a6c75ec84a4", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "274f9e0f8899b68369a1d5ac2559d0c41a899b4be6f855b22a4efab7999e519a", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "e7f80c21095b95a406d80a8d4f90e55ece1099f1a1a457d6446b4f92480aeca2", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "3510d8bd226dd4753592738aef76cee79c656e1394425b2f84e781479f2f52ac", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "4902eb4a1c63c75fef8a8dd25d6f6cf73ff65012bfbf262d566153313e5df9df", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "22675c752afe79e70023ef9f741b1cc3e818a5efb4e353de4c2fdf86e50223a6", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "64686610ac412f052e9dfa2f70d3b981fc8b8a75d24b9ee31176d30f64def1f6", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "0cf32077905fe6c091ef3236dfb178290f4a311b6a57584d17d4925c804c5f5a", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "06fededdeb91d5e8d65f0e58840f9b3370c58d79f0e5c3d82cdf0b99b259de4f", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "70e00c8edcf9f8df55724e9773ba54efcf3f43b51172b1767c8beafad9c8e628", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "b237002a987d7c6318a630d7c43cf8d42b93e329e2fedd8fb7641ef6145e1205", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "06561296172271aa052007e23992808c933017577a6a85bee787a1ecf5ec2ae7", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "6bb4009046e56b92512ebfc6fcd135f951a046baae346db46b3cd36e47feb215", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "596e7f0d2a4d00c62d1194a9f966b1c8bbec2ffed3973119c1e1a315d6982bc2", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "bd34ebafb0d696d9a11712248516d307d2ae0fb6855d59bbb3bdb6e547ca3ad7", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "31018ee01ec7e86d34acfc0fcf8b3b744c78a10b18bb824264f088fd98f94f00", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "fe1bfe29319c308af316e9c2792ddeeee1254e83f89b0ca407c0be6f3464fdc5", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "ef13fdfbde8e415891b346fd1a7a68c5c18b5b64aba8300f88ade63f7eb022d6", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "2021a93d80545ccbba4d19f738bf1df48f2d9e53e7b51277ba42731845ccc646", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "16352a53493f3d622ed118d38a1318dd026de4e7df470795290ca60355117dd4", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "abad282dea65aabbeeecc9c35b87893e96025c4aa72279a0fc7913341ff45c56", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "f26587dabe16f88465c45ffd18b27c2d31c0a9a4c7777d4d7b0a810c4c656d0e", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "982417cf29c2ddbb35354a13cc53236e1fef46350f06b64e9d267e0fe1213808", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "26f235b0b118b45c2d4dd11543cc1ea13add8e22d43486a9605e71e9e828d4ba", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "67f162ae279693236a8fbf8a84e7db790eb5100d4953143c70e3458c6978800f", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "1cdc4eb25ae3b1d070fdb9558399c3e93a8ef5a8deb6c8131e02b8041ebd2365", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "54c93648627fa529f40539102cf1e5eee120d0aebd8ac78d5672047ce1c1f4b8", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "dbb0792770291ecfe782ad3ff01f637a8f8b62f088df5e2bf713cf999a9dc164", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "f18b4284dfa3f13e8bd01cf35e59e8ba57261f8c7dfd56c4e318626651be0329", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "1d6875e141aaecf6b69923b9474b0eb30a24411f41c890e5089f88fcafa0c782", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0adc8521c2cdd4d8ff6f3c5a6346b3005a31ddae9b81aa034812a191daa3fb00", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "e28dfc51148ff06de2dd132a5bd370e6e94ea7435ad8e64fd61c9d529b07bbb2", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "baca4ad7e131b0ddc1d282ad39fe6a20fb31f0447cae18afeab63477af3ae780", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "909c182952add0193a9562107317403d90915b077e9a8926456747c0263972d3", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "87ac5f74b4976ec310b653e5d0e5718c93ac544b32f0db21b7e5f8b5a9c38418", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "85ab27d4e6fa2a04cebb71d5af18171322370eb06b5e9a9c70c747e378e3e860", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "3075e4b7568fe3ccf0d147549dae58661d1c6776725430065ddce98598df553e", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "eb86239fe48b1912a27cbcad9f3b0165e13d4a3dd3b65db2c77438facfd674c9", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "4acc68139f91fb0d014de31f4d6b15f44048226b6236ef44e81b3b80bab9705f", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "2673e0028e28a0d0482a36ed4e0318381c0171c67671325a2cc5e64b9139de9c", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "ce1ed559250a64aba4dcc30a4a2ec145e4710397c42290743b0afeda3cfce9c6", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "4fab11269f9cece59079881398a4ca3a64d5c76d3f331b34af660d4853325dd8", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "0cea38599f467ed79edae0ae10055220ab12ff95d0f88141bfdaf54a1340412c", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "ca3b23d148745c6b5b3613ce29276d21bad1543b0dd62fb8bd338f9d05b29884", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "37c8427b7df04b91f1578fb399df62f07ecf01231a54665a3e30d8ab596dca28", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "385366471a1ab8ef852af295e1e1e349707efc673bc9e9c711dbf33d94515184", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "44638dc3197b7ea6f8a5ddb8452798d6297d6a514dde732050dd931a26fe3ff1", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "d93efb5de113847cf660888d54e2783079d5020c892f1f2edd69b9db422f794b", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "17b1081b3fc65cbe51a0e29ba3453d3fc8d0a9ae1592a309e5632f9d98bce311", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "919bb80a5542c9844f88999d1d4f97adf47bb47dc310c439a0efdf9616b9b9a3", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "4ef7dece24066264b8cf303c4fbe07c147cc6107a793272e0ae3a441bfd8216a", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8153b559ec9d2f0d92687a63da5584f6028c6c74c91bc04a0b0852a5c2eafb51", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "fa2c922c4da7cc480d37cf22b28026c9e1eae3159e9f0e52f9473635ac262455", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "536402bd5939a898205e95bf56f0000cd5bbf0e9d31ec453b360db642d04b6ca", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "9f3c5814e930918fd2c1a3b70f161cde687cb76231d557f38dd97293a1f446e4", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "8f9dadeee75c0210f85b0d0094fc907bf192b64c0b6290e7811933e0a2f93416", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "bd19bdaf4bfb103263181d97f0d3480be6ad1b9e86bdde23ff1178c817ff5419", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "79ea4b1d7cdf8973205ff15736f1aca795a8ea9db38e130573532ca2c5a1aab3", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "9cfe383917d5757827ae681477dac9d2fd083fc946f97759168a8ed8e7986574", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "de929775faf62b9eb479f5bed29e882f47dcc5bf23c605bb167fcbf2e6a3319e", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "192d9a7d207356bddf6e93762880edb83d74e8ab09296b22aac8d49f0347df0e", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2f5740612c4b609738098e45f633f4d4fb1a60f2a4f159aeb5ba296c45b3355b", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "977a0b7038c812b1fee248e3ba48c99086b7dd74aab0f029ea1537a47275d45e", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "1edef8d94aacae82e37cb41eaad3144096e3f225b4814d7bbe8c446467e612fe", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "e752b295a27385f24c3c702d5c6499f87a0a4a7c8ad3852ab1624e6d3c9b5864", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "a0c8309f11fbb0176b81e9e9c9cffa6c934444b097c417c3478d528fca23dd69", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "4d846e621c62aa30aabd12ff4bf209e9e1cef062f8690a28a4836a10ae24f888", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "f529afee03bc23d1e3282c8536ccf6f14b8c69922ca1acd0935a959336abb427", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "ec4de2db44f144a7e91e569e4ce8939bf6bf2de50b5b3813233c2d831efccbc4", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "d18f9dc807eae40ac65ea8027a8ae15af971e813caae13fb131e278694b2f6b2", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "f4ea5c84162274f544240fdcfea0f4d2c7a3e22f03af3ac5562f7565bc295458", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "76e723a329a794222219e1791f1193095a0bf72dfc87f332683d4bb4273ad0bc", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "b5a45998920ee0b9d96bff45333f69207dd27abc1d544c56508539ade2fbfc99", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "25e72971817b577eea96e68546a43945b353e9726ba5dd0d5a4913d2aa5c287a", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "fc75f2a80fc0166c62b67d155756673eaaf1bd1e29d300a7061ccfe9a8f39098", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "7e3193fa8df79aad368e1fb46b5f88b1ea70a399ca871a53ba5bb1f6ed45a1be", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "ff15d7d154f1eac4e0edc0c381743d2aa3ab49956ff5c48195602a9b2be0d937", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "f1bda72f0ab8589c2c19fd2bc1e783fff54f6c28fe165e8c4688870577dfd023", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "083c31b172a837b24b580448fcc5f1c406dd1d80587a89dd753a220fb18e8356", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "5baaa1841c65f8cfcc73335eb590e6ad5bd586d4c30ca73cd19902739ed50558", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "4c31cc3bb0393a62ee233e8c89912e98794e709878da1492315b2ec6b8b8319f", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "29d17a6c3ae0fe1d74eecb124e55a26bc5e695d81607b5cac08fd0a72a6b6a6c", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "3bf8fd3e433c574e48fcb8156693c517c357c8bc66c553c7c09d5e7366469200", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "be01eba5539a3ae3ed0d9641a74850e51d02b79dd9a6e4da6490a07dbb607c22", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "59b0641bd3561041993a8f2265c983700f5a8ddf735b585abd1d5caf52918031", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "862ec048fdf49aec6505a7e2c6eec4d77dcba4dc4457cf753c1296e2d8cd9230", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a0bc4d921557b5fe83c39e92ec66c0e7ff22ec2dad45e5bd48abfb3cf44308c1", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "1f67254b9f843b3b2e43d8e4a5ef339578800701899e1182b9b40349b280bb62", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "a418ec28a230e30e7ec6fe439194a0d7b834d3dab92f05bee0b3bb81041eca26", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "57a8c82afa962708bdb3975eac089218d998be2d0b8902c3be7e23df6995df78", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "17627ec03bf3c68c3fd44841ab9fccdea835cfef4158e138cc680bc84e273eb5", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "d46c3c884475c105da44baa0103529cfab38a11af521763862dce4c775596691", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "114e8b3c8962ca95c988b797680c2ed81155b9d6c86e6f8752e57192b1a578f1", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "3be04fd526f0edbd29f6b9fcaa7ec944211e01776498133ab66d904853ac710e", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c93e440806276be45de4c207505900aa37a7b40c0228bd36894c1af41eae7190", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "3fd0b02ffac651de3ec4643c2fd058b88ba03d8550e00e405533c7d3db1fed99", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "2fde4ae163b239eb1b9b48c36fdc2ee299f56734f2878e258548bbf526798cfb", +"T3T1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "fe5485af1d1726cc280e827d217ae413135185a8d2b42b506dc98513513dda06", +"T3T1_it_cardano-test_derivations.py::test_bad_session": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_cardano-test_derivations.py::test_ledger_available_always": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "cc23c7531bccd88bbac94f228e1eb01d82b6be57ba92c35e7d259a59ef4fe65f", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "6c46179414110cf1b75c0b0a89b343bcf4d613acab05396ce9d0bab194061d63", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d096d7c3f897ea6af2881e450c63df968e0c295685f3ec30cc61dd7fe31c39f5", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "530119bebe45927dc22298b53eb4f423e4cef29af029539ad8a3f55f055fdf99", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "62d1b39d08694750085c3bbc561a402e5c6b4e5ee69b7e3a37ad3e616c2cd10b", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "7eb747bb382d1691474e03444dea52b099bea5eb6deef3797efdbc58f5825e00", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "4dcb775e383a3fa38561bca0717bd9b5931fb95c5e6cc568355dc74d587d4e9f", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "187f0cda9923e3580caaae5540fa75720a1c83ffad391f5359634467f5d11410", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "09a3cbfae9347a9bab72451bc9e8c182f3ae500fe42cf5b478fd4e2d619d6754", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "62c9af28f0d599669b239e4cbc027606839dc6f07f71195e6d3b4f0b5d0dc5a9", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "13c82bd0aa915c329d0abf7758add1039e74869f36e7a2c660ca98abe3dd4877", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "b89a11f9a671821f629c8b26bc9d6594829afa4797d436393d2e8051c551f73e", +"T3T1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "24d2c2f6930dd33c4a7491f7d83fdb81bb5e8b5442774cf7768813edd1401ebb", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "307898342e560d40eae1778cb7e85cf07218a3b1348eba155bbbc3c207aca8fd", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6404410f6b24cbad263894a358651730a2d94573e854aea15c58c2239eb24591", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "445d04e38b0309b272f18636ef948f7b564306f5d3dcc8107d9d45b4899bef4e", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "6794c8c4bdfdec1229bad0bb14d647fdfe22dbba4d907d63bdc5d570f11c1b60", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "6794c8c4bdfdec1229bad0bb14d647fdfe22dbba4d907d63bdc5d570f11c1b60", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "f384b8b8bf95ad0003f567653fd07c9a5714b61a5858206e420a51e9904faaef", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "d0e6c9a4b0b0c491a9fb24462e44f95b82a653866530fa490c49b4fd2e045d02", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "cdd2f1bc001f9d552e0c04ba1faef54be09efe6250b124254121535d4cb1a505", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "dee624c3617b6f9778b9055a6dd2b4e157a3c52e9428476cc84812db64c4c4a2", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6ac73700f8a083c7fa1fb260687121a1aa44640149ec067e5cd4c226d50c384d", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "e36580da14bba0a7aeba327d14ec09f10f8eb51ecce3b16f0d6442d436ef2928", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "a916e997d2b73796a129059083a5d407253aa3a1fa2d3d0860b9feecd281382c", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "5a200cfd5daada208d94271f5bb67de20937747698f43a1a1adb4f6d312123a0", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "28bb0b4210dcd0e9c5a2d86e5ddcef4f884a996a5561eab9f8719ba018e87cf4", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "28bb0b4210dcd0e9c5a2d86e5ddcef4f884a996a5561eab9f8719ba018e87cf4", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "9cae1e6289b40da1bd52a096a04ef316c4959804b398e3832c4bf2c3ffab6039", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "0f65106e68e7cb9f792f79d67af4aebd6750f7a51060a41deaaa4aaa0a2ff47f", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "416c2045ec041798fa2877933421fee9decdfa1a668416f620aa6c9da5458b21", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "5c517f5c6e5ff2cee9eae712a05257add05d9e923c1c0e19cabe73c1de476b52", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "e3de4ae9dca3e6b6d7cd4c2ab07a3f5db54a442f0d466af2ff2d09c10ba3fa37", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "696ee6eaaab8db91b3062dc522928ebecbc2b59c51dc700c10bebd91efbeb14d", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "27a8c73bbaa9f6a859a870a86713ff3a94e36ef5d7b6dee26061dd4f482ab5bc", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "302398bc9c8dce8d7f146be830c13eb7cc518d66ff273158e4c395ab3e7d13fb", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "6794c8c4bdfdec1229bad0bb14d647fdfe22dbba4d907d63bdc5d570f11c1b60", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "a2e493127d3ade63dbfea92e3830b71c1115c5de8ec8963443b7eea4197e815e", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "5c517f5c6e5ff2cee9eae712a05257add05d9e923c1c0e19cabe73c1de476b52", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "699d3e501c5d3701aad4a056523e514cf8bab02b62f0b4c86b21526802aba2ba", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "696ee6eaaab8db91b3062dc522928ebecbc2b59c51dc700c10bebd91efbeb14d", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "27a8c73bbaa9f6a859a870a86713ff3a94e36ef5d7b6dee26061dd4f482ab5bc", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "3264f9dc8146abc5e7625d6641b78f778d4e4b6068296efe5a9102150ee79fd4", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "5c517f5c6e5ff2cee9eae712a05257add05d9e923c1c0e19cabe73c1de476b52", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "ef306003f7dbd14997f296bc127177d4a01823acd1223f2894ecce491d0d622e", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "1ea1e0e01b9980c136201ec4a27bf68d206070f835eddaece67aaa776ba923ad", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "32f47ce44f0f78e56766410fdc2dc1495b04bd731d043150bfee7ed2c6c5c411", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "dee6b5cec4736c7898eb93620e9fe5db0ee6c6844c79d98ae991d6c123008346", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "4ea0afddb0ade23bcf2c93b4908f0c8d33dd76baf3a7c87c14d5c95d4120954a", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "b050b6463e97570e08a0cf83e8302e976e3465661fb51709431eec558c353f17", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "26a15582efb15dd900789b03161f3dcbd7d2e6395851e71ed0c3e4d8dc7e96ab", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "422f8d34190c911dc9d6814284dab4dbeff97c4d2682be869bdcd34f5ab408fa", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "8f5bb6bcc973abcd12ff18370abe28e20796e5a7c84d3c0f13e0cfd0ebde8a08", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "7853ed700fc9d7f62890bf2354ca853cb4f8fe50d6a2af2765c2ed86c43b22ed", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "0e117fd03981c87927e2ef96858e70c1ad8563c184727fa1bb077f3c645eca76", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "fde95a12de07b2dc474588ce55ec9927ecdee692ae9c192167920d33e172bc81", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "059d197b0c2ac67fa944406715472128d744c732dc3ea2b58cd48edf5ce0baf8", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "6066c4bd6f8563e20bbcd014e689352a353a331b09275822010c129233199b1c", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2953ffbb33ccc437462fd99f2d237722cc58ed539dca8ba16a6c67c9505ec820", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "d88ad0943808d69672664a34dbeac6cdfc878e0eac75cd43fb15db7d4ac68d2a", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "f5547fe6a3ccb3dbcbaf4886907a2b92f1dbe531f3eaac28c5f103dc8519c421", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "329a142d1e32c2facaf11b597b1f35e6407cd1261b65e00b5049babc1d02912d", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "385fff4a376462b79e2af3d3f6365032b8e4e36fbc9c7688428e866b95b1786d", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "e28a17e219953ede48d7b604b7fdf87db66cb4fe9a93bab20e045970ca160ab8", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "55127be496b9320c9a0b4ecb8a54222a4acf1d2126e467a6152a0c41843ca04b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "ba506b110b81d84b8d7f12ff0fae4d918f10abf380c68c11a2196abec98536df", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "da8ea4ac9e166c34be174d646847ae24cb45c1889c3362414b5492e720e90959", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "da8ea4ac9e166c34be174d646847ae24cb45c1889c3362414b5492e720e90959", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "03df858edb6013d646866dbb172f614c0ae51857a22ab17c20aaa6b71e3da425", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "990856fec109b58c02f36bf487ab4d9ee5124124df67f05c0393870272f7b001", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "9fc7c7f8da2142caa89650885db802918384cd9b948ec37d50a135e467736f1e", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "80cc88c653e1b2caeba8bf2c4e5b6566b774059d68f03cb1c8b43f4909f9005e", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "272c84b15aa96f8df0f71a8725d7261c2ca8124c299d66e2faba9fd1ea67581d", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "4bc37a3be899f31e6bd6ad84cba44cd8c59e33d8b4eda38c8033fa9e66349b71", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "ddb54dcced7d80fcd5a903a5d499c0c938edd886e836ae3744a5d54b556eb0db", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "939e5abe9c9e6874d7740bf258f46282f4a291900adb072a598a68707fef8cb7", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "5c517f5c6e5ff2cee9eae712a05257add05d9e923c1c0e19cabe73c1de476b52", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "ee1eec60fb88d8b5bb080be933ae206204ef5707b0c522268ab83f2053f184e8", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "01e82c0112ab0a18f447a20380e96b7da515240f1f91280acd842c79f9489799", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2145c5fb3c12835fd3b25fdc27e43aab3f131c6f44107a1b7dac083120eb0d29", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "0ff93aadb7c57dd2bd3dfd3b3dacc760a8fd6901f3e95bfb68a279b07899e2f8", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "291d68abb7ab708a412b6c02e50228c9eefb1aa8fe43cbca459039d0d8a77a53", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "c74eb0f0d37529f0ceffe6b9e6e1c653d02e25d6771e12e0d25a979af5b86fe2", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "51df398c9e20f94e7a81e237dc828863ff49f21305bc8cb41f753a3605d6e9b6", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "9e8c517e83d700455ece351c23ddabcb9273a49599e57410e78cb1737e6a7532", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2e095d4219d065b33b1e546fdb5fbd8e0c16330a3a6a4144068fb53c9dd19df0", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "aa5e63e65b350a3a886f1d335bc6e2c462d5f6342d716f04f0766dcbda1aeed9", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "771861ab05ac33d25ce963ce3ccd70bd8638b2f79793b5af557b2f59db461b97", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "5c517f5c6e5ff2cee9eae712a05257add05d9e923c1c0e19cabe73c1de476b52", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "8b5f051f7b420b419ef5b2c0d9bd79fae3b4e181149dc6c1dc0845ce04955e3d", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "db5451456b5317666ca62a48bfad60c3e9323e210e4fc8dbedbcde9511903297", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "619c64221ec3ab239468a16c33cedf19159b12c43287e3f80711d46b6ef3bfc1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "a0b39d2459562eb9d31c84917a5ca075168ff0463f38bfe28280f3d233d13942", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "d43a52ec2fae72acfe43bc73f23afb512647af4941c8b6be785912e8f370c0be", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "5daee5ccf712d8fccab2572d5d9b5b91168a584fd6127a556547ea945b17aa62", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9262aea45b1b68b3c698a6564f627eaae8a72c0f9799004d3129db2aaca43998", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "8fa1297cd203109de81d8afed47a3046b242910c7dcc02e518cbcd9e3b22058c", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "900fe71269435f47f44b1c1491e3c72be8bbb31cc8c223c0c8b3e21e2687e6d5", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "9b8d656852af158bd347f0e3f9d98542110374fad20c3529883ff6d03b3ad46b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "9b8d656852af158bd347f0e3f9d98542110374fad20c3529883ff6d03b3ad46b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c1518a6a54298ec4c4be613aae51fec0c01b977911f13889b8548cb6e302328e", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e3af39715681d9ab2a560aff1674988acad489b108e3ef47712a2d22c53b05c", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e3af39715681d9ab2a560aff1674988acad489b108e3ef47712a2d22c53b05c", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "3fc4a5a103bd37915c2f336e9d6c4c600e82e141de1f316ae913dce32862ff60", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "a53c216c16f85b5d511093ed79e4369bdd8d9e6cd13650ce04ccdc58ba79aa9f", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "3f4052c1c37a2f660acb5de24d546c599dd10e588ac7a2c3273f3298f0694349", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "a5c18a86f599ef6d3a83aedb80c008aa167c1ba548ed9e70f564395de6849f5b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "0781bc386da3378d4220494b6979f3b7aecacd8b5d8b83f74054900d1c85bded", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "735ce0afae9b01c59f7012eaf04aa372ca97784fe3523469f43a01a6190febf8", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "6794c8c4bdfdec1229bad0bb14d647fdfe22dbba4d907d63bdc5d570f11c1b60", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "6794c8c4bdfdec1229bad0bb14d647fdfe22dbba4d907d63bdc5d570f11c1b60", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "df8bfb51451d9457c3da3034f5bd039090f4e97a035cbae5fa50ab5e7cbdce62", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9a5ab207df1bb06d5e0f623d55ee6710cd472500518f8ed289c14388b518967b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "01e001be685576f67382b854ff660c7a928086819e537c67364479f19781903b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "307898342e560d40eae1778cb7e85cf07218a3b1348eba155bbbc3c207aca8fd", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "dee624c3617b6f9778b9055a6dd2b4e157a3c52e9428476cc84812db64c4c4a2", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "f58fa9570f3feaa8f635ffd72eac20f55ddb3573c0b8eb6fc483e7fc4c54f1f5", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "2a399978d8b5e3f783f3132ba89625c7cb27ef467c6550323eb09dcbc7e16844", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "2a399978d8b5e3f783f3132ba89625c7cb27ef467c6550323eb09dcbc7e16844", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "83ffb92e08f8ddeb44b66f0bdfff42f8a7efca70b05973ad8a5d232aba574df7", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "317d35456ce93d4b273234a8196c0bf725e7d036e3d9fa0f3d2a0f3cd0b01e7c", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "c65450d3726ce84f891ef9a5be8ca9366ee65a3a7208d8fd8f608f53719654ef", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "5c517f5c6e5ff2cee9eae712a05257add05d9e923c1c0e19cabe73c1de476b52", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "83ffb92e08f8ddeb44b66f0bdfff42f8a7efca70b05973ad8a5d232aba574df7", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "83ffb92e08f8ddeb44b66f0bdfff42f8a7efca70b05973ad8a5d232aba574df7", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "0159bfa3a2c0a1f36457e183273d3176fee2b20ffded353c0d695b001b119015", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "4a121cc7765ee23c30e247dfe2da801683dcccbcec1fa7a832f0eea9f61a8bd0", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "118c2a4fceda0fe0556bf8ee7fae1d3e8f49295c43921e695412d9b2d12b486b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "e4498243ee165158d1355266a499eb7b0b43c38cdf6d7a79aa5ca4b9147f9b04", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "b0195cd93397d847b6b36b32dff14c52b1e5f2d7ff9f8d3f60814ecb76b818b3", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e46a7a651741737c61ca33390f74cab57bb876dd018de37408dbda4ee459483b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e46a7a651741737c61ca33390f74cab57bb876dd018de37408dbda4ee459483b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e46a7a651741737c61ca33390f74cab57bb876dd018de37408dbda4ee459483b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e46a7a651741737c61ca33390f74cab57bb876dd018de37408dbda4ee459483b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e46a7a651741737c61ca33390f74cab57bb876dd018de37408dbda4ee459483b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e46a7a651741737c61ca33390f74cab57bb876dd018de37408dbda4ee459483b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "b0195cd93397d847b6b36b32dff14c52b1e5f2d7ff9f8d3f60814ecb76b818b3", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "b0195cd93397d847b6b36b32dff14c52b1e5f2d7ff9f8d3f60814ecb76b818b3", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "b0195cd93397d847b6b36b32dff14c52b1e5f2d7ff9f8d3f60814ecb76b818b3", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "4a121cc7765ee23c30e247dfe2da801683dcccbcec1fa7a832f0eea9f61a8bd0", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "af7b9d918a799d9d96d48a2a3d06408e57561c84bde3a39f673f8694d83ce3a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "3d438123a25266c6f2757c10bb4246e0e3935e2c40f064cddc0a0c94ee909b77", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "d7e9d50297d31dcd454a81613918a0584f066c79030a4fc5807e64d2f01ac1b0", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "e84ef12eceab314a9234cc38d5c38dd53818b5b099927de795c1440549b90e05", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "646620f9cf657f2efd49ada5d6e75748de16c4869e515cd88c9d160096229676", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "cbc72dccc2c07a3bfbf78ef9ec31af17214d3403fc7157883a9b610c3ef60956", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "4e37e90ca868c365214d9885d53124a8bdfea62c211c38912ddaf8a6f07dca82", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "83ffb92e08f8ddeb44b66f0bdfff42f8a7efca70b05973ad8a5d232aba574df7", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "83ffb92e08f8ddeb44b66f0bdfff42f8a7efca70b05973ad8a5d232aba574df7", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "cc7bdefdf327a934033a9cf2e51fc9d667a5ddf4aaf4a7f99e877bbe4c2b05a4", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "4d41e05181c56638bd8898b123454d0f1e89e83acaae7316cb38418139a76270", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "b27308cf4a0d011fce30e4515e1b0401f467e294278a7487b950f10101969b32", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "2a0d71b2fa4c2f0d166366a830c18228875e7408013779a686032a40a53236da", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "2a399978d8b5e3f783f3132ba89625c7cb27ef467c6550323eb09dcbc7e16844", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "da8ea4ac9e166c34be174d646847ae24cb45c1889c3362414b5492e720e90959", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "da8ea4ac9e166c34be174d646847ae24cb45c1889c3362414b5492e720e90959", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "c8689a359dde39d7517ef0a1020c6b893e0ccf78594499a824e9e0d81a6f9704", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "da8ea4ac9e166c34be174d646847ae24cb45c1889c3362414b5492e720e90959", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "83ffb92e08f8ddeb44b66f0bdfff42f8a7efca70b05973ad8a5d232aba574df7", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "83ffb92e08f8ddeb44b66f0bdfff42f8a7efca70b05973ad8a5d232aba574df7", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "0470bb3d87934be6413a3a90ae2ed07460ca9fe96d0c77c4c4497c12f41fd539", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "1361d10c9d507e237d1b1919d48334e7bfd9d462a5c3aefb8a40b0d537ef8b46", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "f0ed22dfd2fe75c3a2a72024eb6b915a0b805fe2634f841f49134f7d7fe39c74", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "95af6eeb71179d57b34562d0f154fc48b06d24c4d2ed7024d871d71ee8a90d05", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "761a2568f3b6884ce33b10686a7b157b38bd1b437651741195fbdcef6a9419a1", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e46a7a651741737c61ca33390f74cab57bb876dd018de37408dbda4ee459483b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "148dce067818b6b8f541eff5bd0d5b89bc6c3b6065deb698f1e9dbcdc3b12450", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "d529ada1aed32a69b127f041d4803ca084b18e44d43a05a38d0f9e8b12ebfe9b", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "f9ce19e0381105cee8cf75bbd13cfc26013529c376d9ae72da3de54f227e0695", +"T3T1_it_ethereum-test_definitions.py::test_builtin": "1cf6cd89593274265cf1a8ca892ea0f2d5cd633964434a868bb46bf1dd268a87", +"T3T1_it_ethereum-test_definitions.py::test_builtin_token": "1d5553fb3e58b19849cdd92898fdbf54a5d72b3c616a5fc25680aacdcba40d2e", +"T3T1_it_ethereum-test_definitions.py::test_chain_id_allowed": "7e79e33a6ff848ff20587475185e929b270b575557d7a719ae1d13598674ebf7", +"T3T1_it_ethereum-test_definitions.py::test_chain_id_mismatch": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0cef2183d7bd45105903a70591e7a2b917f794721fcb0a1046074621deadea31", +"T3T1_it_ethereum-test_definitions.py::test_external_chain_token_ok": "f0ec56d7045d0ef2ccdaf4110a6ba97ff94016fee94a00c5018b6b58d0be2b3c", +"T3T1_it_ethereum-test_definitions.py::test_external_chain_without_token": "6a7152a7ee9fe2c96c4f2a1782760db84f3b3f82d80c5fc01b760cfa3899150e", +"T3T1_it_ethereum-test_definitions.py::test_external_token": "caec9f00dc10a80cf2282af4f16ab88b15a3ccd523c7a65c89df8fb48690d4a8", +"T3T1_it_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "b4a4bb8bdf774ddbfc6c7538083f43c48306e225210ef498b6b4c371fc16de80", +"T3T1_it_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "4395d81ec0112901817508a5235720b7b970200bbeac8034cd4d7d8252ddb89a", +"T3T1_it_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d33d3b0d9479c8e4dbc5fb00848c5cf2d62b6f8b0d2a6ddb642fdd54e0c02081", +"T3T1_it_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "f7190036a79c36637ebcf19b33db37888de538e94599f0f8101e77e7a4722b43", +"T3T1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_slip44_disallowed": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions.py::test_slip44_external": "fd4e05b0d1cf9b0f614d42cc8e55cd655d0d307162a4fb684826be47d574bd51", +"T3T1_it_ethereum-test_definitions.py::test_slip44_external_disallowed": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_bad_prefix": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_bad_proof": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_bad_type": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_malformed_protobuf": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_mangled_payload": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_mangled_signature": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_missing_signature": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_not_enough_signatures": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_outdated": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_short_message": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_trailing_garbage": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_definitions_bad.py::test_trimmed_proof": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress[ETC]": "fc0045a2031f915b202ac67edeb0766f214b3b714d788b7d9ef09448e798e7b3", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "2c4a32d5023bd8d1f5b14458de209f98d81ce30bfbef6ed2934211bb85b2bb69", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "d89b56a94d7cac17b50a91ecc6fc85ac8d29d231aa59fb1ae37f492e37b56441", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "34ec5a40661fa0fe49ec5d6ddf4cd7ef4e5eb0131eeb1ebff9e32a87c1abfd0b", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "466e568d02b4ad04c2a9c67a90a19fb2773f3c522df8a90cc86f31c5ea9782e6", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "fcde16976403c77bb1fb391fb70596d3d58c2fdc41ea6a70dd049b6e8e0ff808", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "2127a8565637728d8637fe0b13f034750983f2a5687bb269edd284d757a2e743", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "1045219edf03a375776e6e17730ebb1c21ca9323f0ee7b2f961b4a1cacbd3ebb", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "bdb596a6207efa56c3b3c9be43f259d72ad201d29af8bdd8cd327a43bc4d01ec", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "edd1a383a4ccb8292d0214a598551df45661a6722ecef579abb694e9e6d529f5", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "b7e9379bf60263dde9006f781cbc32d19aa51e769db1c50f7c38f1fe99d1d96c", +"T3T1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "f63c16c4f0c0b0d38f697e6f5aab4f8a9fac187836ebf5c5395bef16d5b32cfa", +"T3T1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_getpublickey.py::test_slip25_disallowed": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "096a756120de0408b4c730c46956c2c76aded02cb65cf55f10c96d4bad16ad23", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "947387f9b47349f96382d24024fa85a9ae9d90c54f0ab0ae051ba8060e40342f", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "863e9641ce2a0454c4db3eaa06ff729c04c52780447ff3f68722e63cf14ee6db", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "e1f6a9cab84be829f216de76406af7c58bec3b9cbd5212d71dc82b484b408132", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "5133e15d7eaccc79db45046532d11c2d1f98843594214f20a68be4d2fe7518a1", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a8c90469ddced85af5d2e1e27799426d505c71ea9493696638b85ca6bd5d9ab9", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "863e9641ce2a0454c4db3eaa06ff729c04c52780447ff3f68722e63cf14ee6db", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "863e9641ce2a0454c4db3eaa06ff729c04c52780447ff3f68722e63cf14ee6db", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "863e9641ce2a0454c4db3eaa06ff729c04c52780447ff3f68722e63cf14ee6db", +"T3T1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "61f44689c8b181f0e1ef4022244a2ead8652fdf91590c3362eff3d35c1be09fd", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "735a8e6235dadc1f52c68c6b81649e278677fca25f4813413d1b3bcf3bb22995", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "892fb5d8f2dfcf95ba1bcfa65c24cc65e08e38d3dbdbb7f31da1c80175c8a175", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "dc9df1452f35d18661d7d90f202508547a4d47a328a8395bbb312aa5b18669f1", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "3b59c36ddd947eba38b6ca9fb01a6cc8c1e8d99592cf66cbe17bdc0db27ae62c", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "1481f58613e8c281f6ba8e8a1f269e863fcd1e6f71583a910f620ac99e1ad6be", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "8fb089f2c75f93cbbfd4e7a879c2c1ca379f5929d10d4a1332c54ac66f98719b", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "85bffadbe4dd28c4b96235cc932fb492d0b72079fd5de730f0b3ff339391c171", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "44b496ce30bfd83c086dc96fc951fa7d844fa5bea754e27b286179f362738641", +"T3T1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "a107c475de489e208c992e5975d67a1bfab9f10e80269bca5db6e11033d4b7d6", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "57ca52d6daedc8bb50327d61723f6c14ea7f7b1d2100803fbab37e3fd5b71755", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "096142eba4ccf677bd27e6acd47daf55ed01e0dc36d69a113835323ac4a4141b", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "73616a0e173804a1d972fa5c308d18ea50abf22c8edd68307d9e46c181a72f88", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "877dcc696c2c885c1035801f603d80d10b851aeb5b431f6067410a09e9c61772", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "bacf9a440eddd51eba61fb5b59648399eb6e38e3d154042424014cd7437d2a2c", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "1220882bbddddb792b65cff6f2ae2e73886d0587cd3a5cf719cfc60e0eedfa16", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "594bcdb6638b705851a384faa5e86c15770fc0160e1f53fa2d34ad558e0bf62f", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "63932328240507f50034811b0a3d76b90c309ff74a3c7097b167fee16671a3f2", +"T3T1_it_ethereum-test_sign_verify_message.py::test_verify_invalid": "57ca52d6daedc8bb50327d61723f6c14ea7f7b1d2100803fbab37e3fd5b71755", +"T3T1_it_ethereum-test_signtx.py::test_data_streaming": "2453cb2313db0e92f6e08eae4c07b7e0db606e24bd7c6e08e9ab23b9556d69cb", +"T3T1_it_ethereum-test_signtx.py::test_sanity_checks": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_signtx.py::test_sanity_checks_eip1559": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "4c9be9db8ba7e9b742cca248762befd92a22803c631221d25701d3d6f57b806f", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-ETC]": "4f1cc393836fb58416ac82efa17a6f23280b553e0bd7ef94e0493732dc2b5d2c", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "c0c658fcc2bee805972e55314fa15fe07023803451b62224b59ab54ec6219cc8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c211beeebbf3fdb911c966e3d8aa260ea6962587677ecd4c097660af092f6fed", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "c0c658fcc2bee805972e55314fa15fe07023803451b62224b59ab54ec6219cc8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-Palm]": "4c9be9db8ba7e9b742cca248762befd92a22803c631221d25701d3d6f57b806f", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-Pirl]": "4c9be9db8ba7e9b742cca248762befd92a22803c631221d25701d3d6f57b806f", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "4c9be9db8ba7e9b742cca248762befd92a22803c631221d25701d3d6f57b806f", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "4c9be9db8ba7e9b742cca248762befd92a22803c631221d25701d3d6f57b806f", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-data_1]": "e5ad088947ff194153f2e0c9c0b135dcc96a977ab01b35fe7c26099c3973a1b9", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "bbe83ec52ab0e5ea8d74b4a5f21c7ba41806315f7de5235fa6ea96d8043609d1", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "27afe9c71cfd03e2914566d546d4f67a51ff5417537c01886372239e885ca0fd", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "4c9be9db8ba7e9b742cca248762befd92a22803c631221d25701d3d6f57b806f", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "4c9be9db8ba7e9b742cca248762befd92a22803c631221d25701d3d6f57b806f", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "4c9be9db8ba7e9b742cca248762befd92a22803c631221d25701d3d6f57b806f", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-newcontract]": "25283f6daacbd6216aceb83ebb930281586c2f02cf2b79f89f7a7b5b76148a72", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "1049f8618c726fca6bce4260fdc82849619d55ee6788661e7a9cdbd2586a248b", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "896f413dd300bb05a4acf32ecdc75b65e61966d6d3fd65037d81782d1f0a26dc", +"T3T1_it_ethereum-test_signtx.py::test_signtx[False-wanchain]": "4e58720e4694145f1a8f3780bb3db0fe7641ae3afd6117ce1539f88ef364978e", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "f4a59c7223038986b15d1b3fb8dfc794a51eb5d0ad592c72afff3236668a81a8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-ETC]": "e5230923c3b85c553db8691ce9194c0b70222197be98abca4ee0c149b95bade1", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9c683426422f2ea269de5f64140a7a94c47b79922721a6c609ff9206bdce25e4", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "803a6a63e4e4bee14c1384bb1ff6a44896f2e07cecf9380c74c0658b77c39103", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9c683426422f2ea269de5f64140a7a94c47b79922721a6c609ff9206bdce25e4", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-Palm]": "f4a59c7223038986b15d1b3fb8dfc794a51eb5d0ad592c72afff3236668a81a8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-Pirl]": "f4a59c7223038986b15d1b3fb8dfc794a51eb5d0ad592c72afff3236668a81a8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "f4a59c7223038986b15d1b3fb8dfc794a51eb5d0ad592c72afff3236668a81a8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "f4a59c7223038986b15d1b3fb8dfc794a51eb5d0ad592c72afff3236668a81a8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-data_1]": "9bfbc7dcf651efff97d777e508eeb87c6e25d6569e4f920b54a8b13dd66bf62b", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "87df2e6aad86898d85f0cb5130340c368bc80ee090fd93e80ec9efc44b2d9976", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "98cba2b6bab4aa857b15208f562442f3cd99c414e679cbb8491ebf3cff89ad08", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "f4a59c7223038986b15d1b3fb8dfc794a51eb5d0ad592c72afff3236668a81a8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "f4a59c7223038986b15d1b3fb8dfc794a51eb5d0ad592c72afff3236668a81a8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "f4a59c7223038986b15d1b3fb8dfc794a51eb5d0ad592c72afff3236668a81a8", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-newcontract]": "25283f6daacbd6216aceb83ebb930281586c2f02cf2b79f89f7a7b5b76148a72", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "c6555926f94126516ddb99591a7480b9e4d86d629a1a15694f807e4e92cc1c82", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "adf7a1d92c098bba3a1d776b229c866c006c30f83b1817eefbb631088851d4e0", +"T3T1_it_ethereum-test_signtx.py::test_signtx[True-wanchain]": "1045b0500031b89b78fb9a4fa767d7ad66b2c4dad7464c4af8682aa4fc15d8bb", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "1049f8618c726fca6bce4260fdc82849619d55ee6788661e7a9cdbd2586a248b", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "e5ad088947ff194153f2e0c9c0b135dcc96a977ab01b35fe7c26099c3973a1b9", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "eccec351d176bd7d9310e137debd90a5afe5d62aa55d6e5d8a232a50fce38e6e", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "27afe9c71cfd03e2914566d546d4f67a51ff5417537c01886372239e885ca0fd", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "72dd5cd3f41d737bca0a5036b5f3b2abc58960bfcfa1229ec3ab8943e2de310c", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "60f3537230c73285bdd1f78b682e30428c4286b758bbaf37734e75a8c92a496e", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "1049f8618c726fca6bce4260fdc82849619d55ee6788661e7a9cdbd2586a248b", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "c6555926f94126516ddb99591a7480b9e4d86d629a1a15694f807e4e92cc1c82", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "9bfbc7dcf651efff97d777e508eeb87c6e25d6569e4f920b54a8b13dd66bf62b", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "62fcfc18f6e26e26a8c91dd05f86d48978afb8cd864bada6f4615df0decafab9", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "98cba2b6bab4aa857b15208f562442f3cd99c414e679cbb8491ebf3cff89ad08", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "4a34d54c4aeaa354cac7af7ab2627f7962270ee651d27e1ec1b3cca9fd073cea", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "90e2a9b7edcef90f3263906e10f9a84ecdabd612a3fd98638c1b82a21ab7907e", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "c6555926f94126516ddb99591a7480b9e4d86d629a1a15694f807e4e92cc1c82", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "04455f65e82c6e362e3b16f4403a057a2bf2cddcafcde80c2637474de8bbbb36", +"T3T1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "04455f65e82c6e362e3b16f4403a057a2bf2cddcafcde80c2637474de8bbbb36", +"T3T1_it_ethereum-test_signtx.py::test_signtx_fee_info": "7bcef60b667c058f246121deae24a78b2ecef4be1f424f2ca52689b91e0bd3d6", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "2688dfcb3bc7275709700825490524d779d9c90d626ecf8efdab52b8df431c3d", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "31e99766af316f3f802433007ee972225038be89ec8d8f93004515ddf9fb54ed", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "dfa667f7c02ba255abd8765fdcd7cb1151f1203a876419d3eef3bdab0c928a95", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "019b3f9a8008a6ed72fbac8269eafc1ca07b1ffc6c1827a3ba2e56b79e49b3fc", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "1fb90c8cba304529520e8f96a55579a02e7f12df9074816b5594fc74bc832c46", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "4fa54f273e1b48a7f8ce377504bded31d7d00971f13dfb6828de2b3c6278bfb8", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "2688dfcb3bc7275709700825490524d779d9c90d626ecf8efdab52b8df431c3d", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "31e99766af316f3f802433007ee972225038be89ec8d8f93004515ddf9fb54ed", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "dfa667f7c02ba255abd8765fdcd7cb1151f1203a876419d3eef3bdab0c928a95", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "019b3f9a8008a6ed72fbac8269eafc1ca07b1ffc6c1827a3ba2e56b79e49b3fc", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "1fb90c8cba304529520e8f96a55579a02e7f12df9074816b5594fc74bc832c46", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "4fa54f273e1b48a7f8ce377504bded31d7d00971f13dfb6828de2b3c6278bfb8", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "d04fca6360f41d7780647687eb6568ef4800e4a10eabd56bf19add53815d4c06", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "d04fca6360f41d7780647687eb6568ef4800e4a10eabd56bf19add53815d4c06", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "f2b4163bbb040c57ed29b07ad5827a283655a982737e705514d976bb7c4f869e", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "f2b4163bbb040c57ed29b07ad5827a283655a982737e705514d976bb7c4f869e", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "52aaab5687286c5374b3b2c3639153dc1fc7e2d554eb27d823e38fe29db7c562", +"T3T1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "52aaab5687286c5374b3b2c3639153dc1fc7e2d554eb27d823e38fe29db7c562", +"T3T1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt": "7d026e595ce31510f7c9b70fa3bf7cde4f6d186ff88e41e590a3763cdff46d3c", +"T3T1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt": "92b588b4de178e82ed4d3da09b5db97fc8bce9b091fced0423f1a6c9882e0954", +"T3T1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_misc-test_msg_getecdhsessionkey.py::test_ecdh": "3c1ee2752c28e082a66f9308e4ade090fd499c315ea8bcbc5641a5def1d04760", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[128]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[129]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[16]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[17]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[1]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[20]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[21]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[256]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[257]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[32]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[33]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[3]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[4]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[512]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[513]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[5]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[64]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[65]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[8]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[9]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_signidentity.py::test_sign": "fd09466260a16820915a1b2ff8ebd37a5dbeb482605ab96ad618c934dc65aa3b", +"T3T1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "b27dcf50ca8abea5ddbb936051be6fc38b6decb01a07348beef21cff8f1d582f", +"T3T1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "39d5787585fbb65adade7974df64fe88aefcfbfe42db09a31660389eb4558561", +"T3T1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d74be94ed0a4108da7c91462c9f8eb81ceb5200a8800912a4e8ac48d175d9a10", +"T3T1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "b899d11f2daa51fdfae2b3f440bfc2782c537e4d812ebef5d25a0a208b725bb1", +"T3T1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "d95cdd97f3e6f320de40cc1dada958b4191af943cb173bcd40481d9757ebb885", +"T3T1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "0310a47b010052bfd1358588b468754753f8123efc2a6a99a31ddecb10a768d2", +"T3T1_it_monero-test_getwatchkey.py::test_monero_getwatchkey": "f946c67b06f8758372c7b231ca129476c6e55a449658c6936522c756caf0bc26", +"T3T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "bba2217cb79814d99c893d229c234dc9fe6f382d30f6aa2b61110d32e8084246", +"T3T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "3216377bd08e2b4a7ca7812b60dd64592f619434e102daec99519e2f42066d2b", +"T3T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee13b049b7937aeb3a74e9b02877c115aeb7d02fd2f13788f973459b8a01e3ba", +"T3T1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_it_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "dd8db4d9baca5adf4702fc9d34540619ff4cdb3f2c41e277173497038d08a39a", +"T3T1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d984024c6e44a33b2442281d4fd075b01f3ef279311b0ea78da2e40b9cb3d64a", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "98d01ab6647a07f957faf165834369ad600162ed8e34e7e0efebeba277edb934", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "d0057ce53f54686af9a2d38c586ec2a853c7ed002ca697eef02989b19f49133c", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "61cedacff52b0f918f57d8b849582def9916eac55ba38d56d6a9c88dd7dfd2e6", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "a6b6d47bcb16c5f0d3064ce553978da630164111d5d9f7cbb2f571f093c910da", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "778d9f748e15330dd9bb615d6e8a6eafcdfcd682cc84908b733f62a5dbfb465f", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "eb5cb2d4f3666c8b8af278ce00053d8a79359065a552f4386be40146fd709b4a", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "82fabeead175f9097c20fc4172abbc13ad1a80f2925e69baa589451e1e87f303", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3670abe4bed7b874e3663cb625afb745c2849191b0b6204720b964a0a90e7026", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "0a63fdb608d41c47cec7a9f29e7732ccc8a87eff207c53ada072805537d6e45d", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "c9a1620c6ee3e34ab4195e75d2e1b4111bc79302a511417ab446681c86936d55", +"T3T1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "b9d614907f38d70836fef808b10c1d37cb44493b3d313fea1155411a9a3ed4c3", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "4cb98da3b2d25f6f3a97cb5cf3a44188fdc86e8e254d0af60cb020d80a87548e", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort": "98d01ab6647a07f957faf165834369ad600162ed8e34e7e0efebeba277edb934", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "a540e378b1abe284397f5b0893e8a5e8443ffdbacdffbe03a6078e6a35548eeb", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "79e783df5eaf5484de9d3153b20779abc995628d606aa8f5d9c32e89a0e2b251", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "64ecb1c7c373d8d1fd5e95ab8ae83219fb138da3ad210438876ffcbf0a0ce2ad", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "41862f9672aa5c76ca4dd3992a452e0bd6d23118bbd7773a5a48a6b4903fe600", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "8c058f1890565b00a9c5928e8b6438e453ef0552192fba3696a054e6201009d8", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "9bc0fee3501c7f8aef6f4dad84cff52983dd5b375f6e24c3659969c849937456", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "debef54bb2705a3ad6ad12e5499cf22d171a1ab04f063a53a2691939cf0a32b2", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a6046c130a532ad1ee2e9979c54fe9066b273039d78e03ea1215b09c8f7af7d3", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "8261f60c4f82b385d1c5c4908d6d6641e299d460eb904c5787a7300367d39b2e", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "309d0ec918a2efabcae83b4fbb7f2ad9e08b0ce28385134cd5b07cc447edd3b3", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8f078369f29d21ab500c31abc9d7cc10de9d7858732c31268ebd21d852a8cfda", +"T3T1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "18df349eacc2dc9efa585a1235943a6097722a9dc673fe95df5ce1d086e86faf", +"T3T1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6143f409cdae26209df144f342db8edad1862dc4e743eccba33ef4ae5997f2cc", +"T3T1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "98f18db983fe8edeac84ea2a86b9f2765976005fd9e54190be5867d90b3eb78a", +"T3T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "67d3df48c06cde39d5afd094986bd78f069307be3cbc2e91590a82256d9c4eaf", +"T3T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "2ca3a0f0fc1f142a512e3e6468e3ee09bd88bba02b2f32a0cb896fb02c83a88c", +"T3T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "09859dbd9f08833b1efc1b4ac9cf16b9a6f5e5db67fc899c60076cd489fc045c", +"T3T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "21497945e423f88a7a0cb4a2d69082f5f11dd730ca087d70506d843b13ce425f", +"T3T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "558b145c2542c32f4e9e0d1bb28e8ca4b82fd737b90ea7210602a15d0ec0a655", +"T3T1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "77a4f3f6047db28f4bffb6ab689bd36ccc6ae3ff3e0dc1cccb9bc0784ea82a36", +"T3T1_it_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "ee941589303e940993df067dd0009bd62455fa27eb26f3eccc3c6d7e17d49396", +"T3T1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "fefd88ea83a2c04c21ee7e76fe561de8188cc6dce8b4debf72dc3a9f1bf2de47", +"T3T1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "439a688a36237d1440a76152189f2957d766a84e90b9302eee92120e0fcb3023", +"T3T1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "c48b08a13007cc8448d5e25ca2a102d00d4cd82bcdda83e9813574e61d3f6844", +"T3T1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "d6968d7440724fa52e298621166edd13e5e7eccad2b40bcaa36184aafe0dfcfb", +"T3T1_it_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "b1f2cd74a8dcc9bf33d001598d45ac20b97bd35a4a2c9593f644b3c0f021be26", +"T3T1_it_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "295de9ce9f03f57814eda6a039609e92d3f4acc6e889158642a78cacd109110e", +"T3T1_it_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "b07057062fc9d866648517094f16a6889ba79427954552d6dbaeb374da8ae63c", +"T3T1_it_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "7dffbca330f78fc0f641421de8198223e151316c95f311b9ac56ef151dcf0977", +"T3T1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "7c00813acd94d0cd246a8927f45d1c224ae67e2a43288d04c0718cd3ab2b833e", +"T3T1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "70dd81e8ff3ac4db4184ce0e769bf6f8c133d281ebe24d1bf1031ea3dfe4dc67", +"T3T1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "a26657fa31cbea28a4f646299d57a52815731b640966762be6d1a74574d2cb9e", +"T3T1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2938e85dde0c8de9890169a373c9e4b454577c6d0aa4bbb0988828219b5a2765", +"T3T1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "e671deb023700e278fb0d21c32820ce1a3cb3d5b25ec5bf5998ac2e3ace2e1d2", +"T3T1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "9e3c7e406a56b2e21fe22682ae6c3a3d03f88f828994a59dea24e209e3598539", +"T3T1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "b4ea9a74934873e6e5911d9179d56c35c1509d835193178cc8fe31babc296d2e", +"T3T1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ddf48ca706b4f2b1fde632f26f0f84e8b4db5e28b63955f6fd458e3949d406ea", +"T3T1_it_ripple-test_get_address.py::test_ripple_get_address_other": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "a8ddd9e6898b6ab1c4b671ef694d58c98ee082bcce00380b168f503bb1ce35ae", +"T3T1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "25d6f50fca0a984ac0ea88eb1702c45c0b6446463449f2649cc1346b3966f91f", +"T3T1_it_solana-test_address.py::test_solana_get_address[parameters0-result0]": "a4446983161092c5dba56c56b3b3cf73806e28de56c3ce83499ff0c67743594f", +"T3T1_it_solana-test_address.py::test_solana_get_address[parameters1-result1]": "e5d6408a7e3c57026d8d104b541a6e3e7d05bc178459573f3f1532b70b5602f3", +"T3T1_it_solana-test_address.py::test_solana_get_address[parameters2-result2]": "d1407107067dda018a1aef2d96ca08926940b92ff74d7692f633a55f389a6e86", +"T3T1_it_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e5dec9f155fcdc25c474d5921826884f9f8128075639fc016e092d5da6a4b150", +"T3T1_it_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "5a31319549a3cf451a182b2ae42a1d2ef54c81c13edb7d23beb2f6e0c0f057f5", +"T3T1_it_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "852d51f99dcac5a313467bf88f312570e7a29ec28e33c3da5112d99fb230921e", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "2176feda25ada2eb35fd5474f656f896c42db33815aac4d260db80ee3de17230", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "0665ff9a6847193d8d496b3412a2c1c76823cecd16994f5cc49728df5752a51f", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "98ec250b1f0fec94754fd0a4ccc05458a36c0af1999ebae70b8bed765c7c3968", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "6acc4c79391712e0089387c728d34ce90b6b5c98a887d928abcac6db7e8a17df", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a9b0d8070cd5a12d35cc792c571223a291503246948d240b8c5ca4d4c7e897dc", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b246ffcdbd2ccaac5c44fcc9b9e101cbcdc92fb498a41422b6733d8212f4a324", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "01439af824e07c1331dbc6df44f0d5604d37e36300f436b3cbf771921d7d9d22", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "388cede24a4d488b0cacd695bc1bac3b4fd905e2e3492a255f05a78409a3b6c8", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a49776f0b9a72390406d979d2a2f07a9f2704b7856d0d6f2d7672885d2343dfa", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "101ddc18f2b2787777d4cf610a407f99f26e264385dcd3359d620d515ec8c2b5", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "2faf159b7fd8d41bfc6cd7be053cd46a597534ec643edfdb3cbef269cfa6f250", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "fb8cca1c6ad31595cbfcf4a7cda2b88278c01284f33ff1b6c462ca8bda69aebc", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "1467faa51aeb685a4120a0820ee1ca4c299232507e45619b57fc870f4d5e8c4a", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "286dc11527f9966693a02b28146f86b01d5e5dab276cf8ec011f2452fa26972d", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "6f06d5ce729934710a70d4d66dbfbc5e7a7f279f39357816edbc3a18aede3a16", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "ffe760fe6251c962f2d00f59091837f56d7870493a4a44f16e2239cab0f9ca27", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "633b392acc498cd1b4c42f537482c998a84c6bcccd16e8685d3267b369d1d2f3", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "7f96c606a040ce48da0f8b775869bcca09fcc40a42167b6bc9db738736bb9071", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "b8977e0a782cf8a1045af3c05dc1b4d5246b184bcc66b6e16fbe1ec183b670f6", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "22eb790b4927c040c8a150d3768865fb6076b05523916971b79d001d9c0f54ba", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f30829032e0d7958989051628094a57aa425fd0f935428ea39b74773ab240459", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f30829032e0d7958989051628094a57aa425fd0f935428ea39b74773ab240459", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "f30829032e0d7958989051628094a57aa425fd0f935428ea39b74773ab240459", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d8433ef1399054fa7aba7b55f8f49e31f5cb079d4b20e6098df1fb03277b7b49", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8ba731f917ab5e302e554d5ddaf94a476aea194cc7025e7fe3087e285b2e083b", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "cfa394a4813dccc34593afe2d6e6d6d65f94dec5089abfdf5355871c0c958fc9", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "10771c8ac1db274c03057405120ea0a353be43ab5d2baff5820fedc1774e284f", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "15884f2e296879957aac4b28605e68ddc364644550ce7bf54634022af3006061", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "1778b17de6e59cca86a4a9f46bb371dbac211f5905c06484556e33d444b90c69", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "ef4745cdf5c0cb241d08a345d0710271e873ca69c4220f5f1c52587b4c14936b", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "b6149bd3b6d5d049d386ede4cdcc962522187904da62922273c089f3455ee69c", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "3b38f8ee9bf05a24a9b1694bc08e679faf71dd0bc35d8344cdf2f59d80389814", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "8ddd9c703f99f0b7eaa28dcf11956e7d8063a478e8465bc19c1f8da27df6005c", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "3f876cf3094503fad087e87a312af3bc10e34ae4d71a7ad37cfa8a4a812d47b5", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "72e68833303a28eb80c6107cc0786bf4760030dc4da628bdd1ce64e60f0f6b8f", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "e7e1e801b352ba752dc27614aa93a33a662b337a336f3e725e6fa7f67e17f0b7", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "6582e56114ee3a5ba6ab01f7e0684e0e6f021b2556585a4b9411d5ee27790a78", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "6582e56114ee3a5ba6ab01f7e0684e0e6f021b2556585a4b9411d5ee27790a78", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "844c495520bfe72a18d57dfa73168a15b199ccfc8dc978cbd8e49d9b8954b5b3", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "9f7739ab7e0f2cc1ecefcbafc1c45ee2d43c49b8cbfda32ceebbda9abbd5ff64", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "3207db0c19da3f947fa089fa264dfbde205f937af80ed4946d8f7a0c908f224f", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "9c5f7cdc057a0bd825afc488887e6bde159e35e05c26c785f52862375778c506", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e0b602ffd727cd490e10f383785c17aa3285a85b5cfb0a23f072f87795c3ac79", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "7dd43416cad5a5cd82c52aa8f2e710b2081c72352a3eff3f8db6b446b3869662", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "e9eefcaf43a3abb643a99a066cf3b05c0e4b014e6f468d50629ddc3e25612777", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "2028e88a923d8c5c9fae62bf0de9d79cc7e619e0d3509884bf6c6f790a1408cb", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "2a6e9e67913c214052af1f8f3074556ffbc139cf7e8756a15d493b44d7b7d4f5", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "402053945fd9f130b07200e1a518f93ed48d12e86d3cbbcaf487788ced73f278", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "32b2d9e2fcd8a13d00b232377e4b427d8ed46985930b089cdc5c5982436fcca8", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "5fd60a3746bec66009ae86a33309f230217978785dd3b946b046ecadc5fe232c", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "50c6550a9f789c10c9f1464243d89c87b76b8acf062236cb5c10db267c914550", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "0215a4ef33e9efea8bc3a5bc36e74276d019c71c4795539361f86fd4865fbc9d", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[split]": "42ff9b3248e27ce4bd402c6fe9f1a63bf9e3a157996fb86a95a885019d97469a", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "350e20bd0515ecae30cfc3a5caa76e40abffd8e639f79ebe6d80d630b088b372", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "af75119273408d0a870c6419ab7788c810a5e03dae3b7a28e7b6ab5646dec748", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "17aa4e248017e5cf0552a930af34e272d562fd739886728d1d597866dd526ee6", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "db4d6fd014c3b385326e8a5640378ce9b6f24f28c2d5a083f220e2bd4464437c", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "936be049f5389e58e071656ef524d5cf32f1fb56ff85b47a0cf9fc40cc57cfc1", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "10a9c9ea1923bd9e5b5ea1d18d6867e9869029e7eec6c0527b6234700f511f62", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "9e59de53f3661175296d0d819ebf686303beee262e95b3c3fbbeb081ac569a18", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "cfa394a4813dccc34593afe2d6e6d6d65f94dec5089abfdf5355871c0c958fc9", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "6d8a80a598fd870e9d2809ccc273cd260aacfb3f39dbd8fae2ef444e0cc0503a", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "4a2cbeec790956db443de4635439c45214ef6fdf5486447ddb185706f52a9534", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "a854e63107761eb32f1661d227e71576721a6366f9c3752ccc50ec698db3038f", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "55143b963687c3ef86d84296474a42237e730441bf04977ba715bf5fd0bbdca4", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "03292e01f1a52d1dfe28288b62cc6843a7e9492051d9f6e8eaa8977f4eecdf41", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "fbd4a47a31d8fe2bf36a48f2de084238201c0014e12b2cffac0e33c8ec6f4692", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "cf93f6621954fcbfbdb34a1d939e95cde2de592455c37aaac1bf1b8f14ce9cf8", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "d637a168ed15bd926ba734f3e88a8bc17a554c4937e2b638a648ee684ed6d435", +"T3T1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "885b71ff1ba52b5208be50e5cd5b47ffdada3f6075e7c37b0c04a93fa200df3d", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters0-result0]": "a071f8878ad078c1d8ff6ff73b166d542753a5630467cee8525b97fe7cc625d6", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters1-result1]": "ad2b98e8947728d29d165bc534acaec590ecadf0efbc2957bde409e1d3fd1602", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters2-result2]": "d177be90c05ab33e2f2b8ab4190501dab70be8f181d37801da21720a9d804226", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters3-result3]": "35ff90c94e198469dcd22fec63ad1c6ba3b1c51f9252adb43d228a763ec2e880", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ea45016a79fc8addae7554528cc6f1542899a433c27c2aeb12ad2669c30e2d4a", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters5-result5]": "ddabb231eb68a0afa16cbb77d3544b1036318686a3f8b92493bf68e0158b8ff6", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters6-result6]": "b91334a96b9bbb17df58141e650c3d53f72091f3bd217e00cca96ce03c1708cc", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters7-result7]": "eec17b8de28c038cd915ff83c4c3d36a98cab561ff8f561e403ce429d1820945", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters8-result8]": "245ae504d37a376259cd706c11563fc8def7d539d687d6e1e3b34ff2f5448425", +"T3T1_it_stellar-test_stellar.py::test_get_address[parameters9-result9]": "5e826217909e4aa5d9ccdcff60d99760c0a49514d58f2c62618f4e96d35ae7bb", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "349aa14d0f268dfffccf3a0039522059431f78ef3b56bccb4c9bf7f3a490a347", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "b60262c4da6214f84da858627f22333ea970ae3eee27d2f19856e9351914b9f7", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "f584d5a071e4392c814d2564af0a912cdc8caf6183c21d446405fcf11985a89d", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "16033dcbf2c64006b1d1a99b18bbea37066a63b538db1e67ca46b73ae34f8d23", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "864d753adb7a70641d7084bdcef84b2a6ef73706967f38c644f8d0a66f214cb4", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "ad3e5605a1202bd0af4891a0eeae68415af7fdbc0ae100968a9e506c3b6f3a54", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "4f86b892c90f90007519ffaff71b1d2150339e01df47e334c84d4a8585f78bd6", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "cb868f80e6d084b3aaaa7e20bcc4a97c40a7e117e92db03799ac192950a32ca5", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "8d68666e3cecaa91f135b1b1419e4654bcdc8b1d8a92b5273f9b97fb76cfc81f", +"T3T1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "a0c2e1c89d7a73b5e476f23df08ae621e29cd6364da1aff1c3b6d1ba9aeea049", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "0096a13dda9cca7db0fc8e0ac304713d0d69072bde57a6f27c9bdb6e7f7e0a02", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8a9f97613be8ac57f98b5c00788449ab3ffad617070074f5201e989b20d95fc0", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d749c83564194b46ad1298f42af958b505ddb46509006f9ecc5c3561d7632884", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "f729a3acb935debe91db613a03927f97a6a9f7179238136dc88098383cbeec55", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "9e1bd38390f5ab6e7dd4b95f2ea869c4c9ab2aef408230eb4b14411dc9de90d2", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "848139f7ca24a00d631bbfaa95593d2c1277f1d31b0f4d8e254b4ec147178d16", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "369c8a6602ab0338c59d90a4d65ed49d3c2ac8dfe3a815864f1bcffd45126ee0", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "299c4a18e2641860459d65940a4aea6f37152a42366c0b610b912f925d0b63c6", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "8b656a012e34f97899f49405cbdf4f33e0cb03e87d0d949c3a073aed0156fc65", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "12152a0332f1934842dc52868242b788222fdfb7faf9b214b18de4cf7da6353f", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "9d61df0f71323ce88ab650ed4e3347a7ee79f800e846775960c0c314e6650222", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "042c586932cf287004a1eda2404e0a9fb50118c0f2842fbe9f07dd223182666b", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "4ee1754f293b0d5c0473231a14fa3f6c71530b652e314b57e7b3302eb331bd51", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "b6c6529daff8e641271661de42085fad305f67f1249fa180538a6b306842c5b8", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "f5f2f04effc34716476e02ebca878a5e6b0abcd7b8976fdc03051ddd47c51f53", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "cb0aecc676019dad6ac482e7d289c4df30810072d63b9bbf499cf0dc4b37786c", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "03d4fb8fdaee62eca399e02ab023cdb46559e1436355a225461a006f5f55a3d9", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "cf1baf0d043a44685238e70577af559a6796ae9b970cbd4fc2bb3885be0fa4d4", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "fad327b706c2e7846772d4cf6018b857aab9ad0db46145586d62ece9546932fb", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "9c95375c57027c9c7afee125c651418df027303124d9a56823ddeda6b981247d", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[memo_hash]": "5faea890da34ac74fe4be454bae8e11fca338fd2b502511229f5a1fe8852fff9", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[memo_id]": "af57290f0d2320a07d5bfc34a6c2b9d8608449e9eb7e1bf3ed1f6ad7a31e3750", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[memo_return]": "97f6af2d40f443aa806d2e4c7d7410b3cf22b8c7dccc77f452ee6f4cd19b325e", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[memo_text]": "823fb8edc55eed20e893310d959475a58d91333c8705af2878ad836e15616a1a", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "9f7d039db639a3c674d39ef7677f75dcbeaecf9e640c73e880458c2d83261d83", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "1bdf7a33d7581c6afee603ee4b1fa9bec94f82cf3600d5248d70f26bce7dd680", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "645b2da4fd0cfe800a83e08d568625eb2deba7965050eed9fc1e31eb11cec28d", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "d7a089e639649ce255d029b515ecff309ca04a4902614bd2d0179181460d5e4c", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "c13bc4cb121b1dfae46712ad4d58484799a6363e40a8ef0c1f0931a5e799d126", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "03d4fb8fdaee62eca399e02ab023cdb46559e1436355a225461a006f5f55a3d9", +"T3T1_it_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "9d9bb346ad83d1ea41c5fbaac2c755616a07c0e8465694c267edbfc7277e1380", +"T3T1_it_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "4a30f0ac548289e2f5f4c7a1dfffe96b9c8457585a507b1cf806367f2f03798f", +"T3T1_it_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "4a30f0ac548289e2f5f4c7a1dfffe96b9c8457585a507b1cf806367f2f03798f", +"T3T1_it_test_authenticate_device.py::test_authenticate_device[]": "4a30f0ac548289e2f5f4c7a1dfffe96b9c8457585a507b1cf806367f2f03798f", +"T3T1_it_test_authenticate_device.py::test_authenticate_device[hello world]": "4a30f0ac548289e2f5f4c7a1dfffe96b9c8457585a507b1cf806367f2f03798f", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay": "f9a94586e0f575cdaad23604ae9480fe671183d2f43f4e4d67f3dc4cd0a20818", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "042ff4f295058cf1bee4312b26fba551ddbce9afccb305ce4ef9d793301c13f4", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "59c244f8bf37694f2119f61f7659b1fb1cc407ab6f812e4e01ee15660462a255", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "0d4ef2f809b5c28e857bda0d8a96150cd78ea5013e6d0d87bb489217ff373a58", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "e766d2bfb125d92534f3aa795c6d9dbf28d16b8fa456c1da46467596efac6cac", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "221495be92327d91f229f8e80395319c422695fe1d0982b4fd535e0ed194060c", +"T3T1_it_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "62995f38c3bd7a31fab77364fa1e100a9fd3e727e956f619ccb02ea55708355d", +"T3T1_it_test_autolock.py::test_autolock_cancels_ui": "1167d035d12d3d706d28b898f6229dbd8e8990f8b84dc208be68899f4138d7d0", +"T3T1_it_test_autolock.py::test_autolock_default_value": "d38df53c5d787487b796e5bd0f5df23ec4210d1a02e724a38648606159d68655", +"T3T1_it_test_autolock.py::test_autolock_ignores_getaddress": "9ada13a6d31e903e1d4b4e0e887db9965d2e510375c213e06ea8ddb1174f5077", +"T3T1_it_test_autolock.py::test_autolock_ignores_initialize": "9ada13a6d31e903e1d4b4e0e887db9965d2e510375c213e06ea8ddb1174f5077", +"T3T1_it_test_basic.py::test_capabilities": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_basic.py::test_device_id_different": "e9994afd6420928fa1944b60eb53795605df052597a3cf95939759cb8aebdf16", +"T3T1_it_test_basic.py::test_device_id_same": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_basic.py::test_features": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_basic.py::test_ping": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_busy_state.py::test_busy_expiry": "3384125fc3c8b9c2e7c40564bf5e1ee6833d7bb9a3f6d4e7523e7c7e4cf7e67d", +"T3T1_it_test_busy_state.py::test_busy_state": "74e481655b334f52c37e6badd31f70ac28f4760ffacf37626d090e5b0c26f490", +"T3T1_it_test_cancel.py::test_cancel_message_via_cancel[message0]": "ac422ae50300f08b80a66a5e2279c5146209aa6932029ddcdcb7221e92aa8ce9", +"T3T1_it_test_cancel.py::test_cancel_message_via_cancel[message1]": "7012a087aa576e9a568a7fe8b8c597a982f213dae3134699a97b8e5405c56519", +"T3T1_it_test_cancel.py::test_cancel_message_via_initialize[message0]": "ac422ae50300f08b80a66a5e2279c5146209aa6932029ddcdcb7221e92aa8ce9", +"T3T1_it_test_cancel.py::test_cancel_message_via_initialize[message1]": "7012a087aa576e9a568a7fe8b8c597a982f213dae3134699a97b8e5405c56519", +"T3T1_it_test_cancel.py::test_cancel_on_paginated": "6a9c660a4128fb943b28d073516618d6a7df0d7ceb6a69c4c007f814d04d2e38", +"T3T1_it_test_debuglink.py::test_softlock_instability": "00fd9cb8119e4195a51c4e257372e7a265d797579d9d71f710782a96eebfcfbe", +"T3T1_it_test_firmware_hash.py::test_firmware_hash_emu": "e71bbd74687027807c39b6bcf7c9e5403e1c33137b05b9efa2b1e61ed14278a4", +"T3T1_it_test_firmware_hash.py::test_firmware_hash_hw": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_language.py::test_error_invalid_data_hash": "39f0e80f2c2af5b0a8a3fcb1258f5f5dedf6e1e655b7e97ffaf27f07ae11d1a9", +"T3T1_it_test_language.py::test_error_invalid_data_length": "b426ee43b5ee2c58f5a5287249912cfd2799129c7dd86727b9415e920ca64d68", +"T3T1_it_test_language.py::test_error_invalid_header_magic": "b426ee43b5ee2c58f5a5287249912cfd2799129c7dd86727b9415e920ca64d68", +"T3T1_it_test_language.py::test_error_invalid_signature": "b426ee43b5ee2c58f5a5287249912cfd2799129c7dd86727b9415e920ca64d68", +"T3T1_it_test_language.py::test_error_too_long": "b426ee43b5ee2c58f5a5287249912cfd2799129c7dd86727b9415e920ca64d68", +"T3T1_it_test_language.py::test_error_version_mismatch": "b426ee43b5ee2c58f5a5287249912cfd2799129c7dd86727b9415e920ca64d68", +"T3T1_it_test_language.py::test_full_language_change[cs]": "fa236b048007c231280fe83420a62014dfa22adb7e2a86e98faa9da89fa42d5c", +"T3T1_it_test_language.py::test_full_language_change[de]": "b91b0b33dcc8c9e2cf15eaf70d397821564039d47ed9c4e351f90d1d6f710ccd", +"T3T1_it_test_language.py::test_full_language_change[en]": "a906a277149304695fcb6fc661f97ae10f796bf34324337772524232989f2472", +"T3T1_it_test_language.py::test_full_language_change[es]": "e67dd81195d37fd942846596a79efea30024fde82aa77aae776837c08700a783", +"T3T1_it_test_language.py::test_full_language_change[fr]": "9b85ff9ce3c751f3b2b55a7bfb9b7423b6015b150957d2f01ddaa131dd24129b", +"T3T1_it_test_language.py::test_full_language_change[it]": "3f2fe6e319fa2c1d48e9bc64cb1439a188ca6907c1b17b29c3b3aa89fee146d8", +"T3T1_it_test_language.py::test_full_language_change[pt]": "1c9f2b584f70b60599262d228cc21006a733fc1c483470fcbc43c1b7bf9a265a", +"T3T1_it_test_language.py::test_full_language_change[tr]": "7f73962190160ad7a06cd5a101aebccb9dd243290b160269af3d70ee61c47d9d", +"T3T1_it_test_language.py::test_header_trailing_data": "ace949d1e67bd69e53360bde698df513a20bc7e3b64e42d5fe6e46df5ad702df", +"T3T1_it_test_language.py::test_language_is_removed_after_wipe": "58978858631a817b1616bcd855e48c4623482d65f01d8ee2ae0424c46a5f7140", +"T3T1_it_test_language.py::test_reject_update": "e8b3936d33a3a4dd60140ac41a40ada9636ce946f452dfdaeb49a74ed4f67ca5", +"T3T1_it_test_language.py::test_silent_first_install[False-False]": "63ebb2952b073124d3afa1b34269035530209da8214b7fdef7c7fc993ef814d6", +"T3T1_it_test_language.py::test_silent_first_install[None-False]": "63ebb2952b073124d3afa1b34269035530209da8214b7fdef7c7fc993ef814d6", +"T3T1_it_test_language.py::test_silent_first_install[True-True]": "a8dc7fcd19997366543a81efd9177a5d94604ac4a17f631fa54512ec86070a3d", +"T3T1_it_test_language.py::test_switch_from_english[None]": "0e140207e924b06ac41955c8dca4812585f5a61bfb8eacc071878a6c19abc0ee", +"T3T1_it_test_language.py::test_switch_from_english[True]": "0e140207e924b06ac41955c8dca4812585f5a61bfb8eacc071878a6c19abc0ee", +"T3T1_it_test_language.py::test_switch_from_english_not_silent": "53987fc372d99be4460003659437dbeaa2f4356cd15896b7c4812f0cb81f8f25", +"T3T1_it_test_language.py::test_switch_language": "4f43b94a2532d862208c2b89eccce77447da0db649ba0fad7ea9958799cc2440", +"T3T1_it_test_language.py::test_translations_renders_on_screen": "4e485e77cbd3e8f48eca25e233801651e07af4ec1ba59fa0da5132c5d8e6c398", +"T3T1_it_test_msg_applysettings.py::test_apply_homescreen_jpeg": "4d86130a10c1ab63dcc05cf9b6de495819dd6dac2bf58b44294669b3f2365c44", +"T3T1_it_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_msg_applysettings.py::test_apply_homescreen_toif": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_msg_applysettings.py::test_apply_settings": "bcadceb75171b330230b046e8068faa290b8ab1fb975bde6e35bbc9ac6292f25", +"T3T1_it_test_msg_applysettings.py::test_apply_settings_passphrase": "0d0880bc7f165e272a8d5f8f3e29b7b619fc28f5611cc33ef41e4a362221b53f", +"T3T1_it_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c5079c28422d520f4d7e201b75aa0f40efcf932c4853e4467a9463967f00e287", +"T3T1_it_test_msg_applysettings.py::test_apply_settings_rotation": "9441219fed97b239e5cdd4cdb9ee88d9697b1b739c92554193ad29f9ab3f76b7", +"T3T1_it_test_msg_applysettings.py::test_experimental_features": "6b7d1dadb80d954fb2d387031b6c9df6dc85a34deb50efe8acb6d331d62e311d", +"T3T1_it_test_msg_applysettings.py::test_label_too_long": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_msg_applysettings.py::test_safety_checks": "b4308829597f054e0f5d56d7f0e53e748e868be4922b83d1b59ad4e6e505112c", +"T3T1_it_test_msg_backup_device.py::test_backup_bip39": "03ab693242bb61fa9151dc19c9bf771d1271a701338ccde06477454096948bb4", +"T3T1_it_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "96743f61c9970525a0f0ff13486a7e2c3373484e46c2856d6b7946484a68c146", +"T3T1_it_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e2466d203392f4b2b33a78b49588069fb7c18cdeeb8d8a69d1dc7bef4a43c2d3", +"T3T1_it_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "487f84571f4c2749a545655fe12114e749dc44bbe1d2763710a6be47fc8ee1e9", +"T3T1_it_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "f8b7ab2aac326702931c6c6a0802b235044793d4861080c970407c1f254e3701", +"T3T1_it_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "db6a5ed75345f7e4e4e32a89f65c9f37d12cb3c04b11b8e3ac3d9d49f5b1cbce", +"T3T1_it_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "19d49ee71118aa66cd64a7822bf96074ecd142c11935ea286714c09cb4b7e123", +"T3T1_it_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "2203b76990ad62e50dbe7f8bd83f0be34d341416731f614214d1d8c35fbbcbdc", +"T3T1_it_test_msg_backup_device.py::test_interrupt_backup_fails": "9fba9ab5046aa3341273b51e89daa268c9770add56f1bc6bea7426695b38d1da", +"T3T1_it_test_msg_backup_device.py::test_no_backup_fails": "0f627c7252e7e3517a74008a431f83dde710750b7b43914183de5685b4a7ce4b", +"T3T1_it_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "70e9b19610d5b7ad666d214ce6b904e3262da023143f9e747aba715890e81966", +"T3T1_it_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "499a50a34d47a7a947884df1fc6f1d67b72fc92d71a77c79db1585bc39171a37", +"T3T1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "eba8d04c8589f742027fd47392efcfebe6d9f442173e2a15d318aa53a14c91e4", +"T3T1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "989317f7b489f0cde119a906803705fbd554e9e4cc945572264d87d38c0ddb40", +"T3T1_it_test_msg_changepin_t2.py::test_change_failed": "11c5b0c95733d8ab8204138a1ae9a80d6904f50a033e232bde13202ad9a1b9f5", +"T3T1_it_test_msg_changepin_t2.py::test_change_invalid_current": "fae533bda9b41f5719da96171bbfdbb94a8f8a2eee1f803b372344624c93bc0d", +"T3T1_it_test_msg_changepin_t2.py::test_change_pin": "ed08310d26688181ff21a09a9e3e61cb682b43fe126df5d72e002d3f5e3e8144", +"T3T1_it_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "34bfb2ff33b690aebf54ef258866e3940020fc9a43e6fa1bb20c484f9de751d6", +"T3T1_it_test_msg_changepin_t2.py::test_remove_pin": "86b994939194698163a11bd09672a0b54f42d9f6da9579a71296cbbb940a9059", +"T3T1_it_test_msg_changepin_t2.py::test_set_failed": "8ec258153519c7bf44f2e428124b4db72133a47b65153406b5a04154cb441563", +"T3T1_it_test_msg_changepin_t2.py::test_set_pin": "713aa367aedb33aed16f31c788387fae0b30279c3579c2dc838d1d1ccc0a16ae", +"T3T1_it_test_msg_loaddevice.py::test_load_device_1": "ed7faef57db9408608a8f93a06d8253cefcff3b161823f85cf8297a5de175dcf", +"T3T1_it_test_msg_loaddevice.py::test_load_device_2": "f2234d5e9f58049346f4cd46c7fb614dad6cb00a5d8d10f6aeb9929e2bc38bf9", +"T3T1_it_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ed7faef57db9408608a8f93a06d8253cefcff3b161823f85cf8297a5de175dcf", +"T3T1_it_test_msg_loaddevice.py::test_load_device_slip39_basic": "ed7faef57db9408608a8f93a06d8253cefcff3b161823f85cf8297a5de175dcf", +"T3T1_it_test_msg_loaddevice.py::test_load_device_utf": "694545a3ecc87d7787c2c296b41e6940f459e3c5a204f999471eaf73241198dd", +"T3T1_it_test_msg_ping.py::test_ping": "ac422ae50300f08b80a66a5e2279c5146209aa6932029ddcdcb7221e92aa8ce9", +"T3T1_it_test_msg_sd_protect.py::test_enable_disable": "b16e6cc27a187011857b6c8ca1ce93cf186e898a24dffb8988958da3da757c1e", +"T3T1_it_test_msg_sd_protect.py::test_refresh": "f1b401da8438ba784783292e43bb234687bd2cfce6afb2dfd8bb5ec74cc744c2", +"T3T1_it_test_msg_sd_protect.py::test_wipe": "b44819c1dc4aeb76825edaf70e62ab80f1b262d2130d289ee2fcbf91f87c8614", +"T3T1_it_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "286c0b85099b6aa3fbc0b33e72a60f76c568cf03827f446394547effe541a9bc", +"T3T1_it_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "0bbcf7e0e4add08db8df78794a1c0d878c39f3d7102e7373dae25298d2ea41f1", +"T3T1_it_test_msg_wipedevice.py::test_autolock_not_retained": "a1be4fd200b66348c74f2b103aa7e949d42578ace922b9faef31aeaf6e7b0583", +"T3T1_it_test_msg_wipedevice.py::test_wipe_device": "e9994afd6420928fa1944b60eb53795605df052597a3cf95939759cb8aebdf16", +"T3T1_it_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6cd366d66d7a8782c614a252eeedfce7e9b5db22237543e6ea45126225887202", +"T3T1_it_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "6cd366d66d7a8782c614a252eeedfce7e9b5db22237543e6ea45126225887202", +"T3T1_it_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "58f2c5a3cb30c9b7b8c29daa7cb2f52cd992fd1b5cf685825a04fd30d3f23901", +"T3T1_it_test_passphrase_slip39_basic.py::test_2of5_passphrase": "58f2c5a3cb30c9b7b8c29daa7cb2f52cd992fd1b5cf685825a04fd30d3f23901", +"T3T1_it_test_passphrase_slip39_basic.py::test_3of6_passphrase": "58f2c5a3cb30c9b7b8c29daa7cb2f52cd992fd1b5cf685825a04fd30d3f23901", +"T3T1_it_test_pin.py::test_correct_pin": "de6b51adaf43ad83ab2251a09639861634ec7a485049047c8391861c1ce5b064", +"T3T1_it_test_pin.py::test_exponential_backoff_t2": "4fd6de6f16666159762a215dbccee8d1c4bf8ff28a2bfed383bbd214153635a7", +"T3T1_it_test_pin.py::test_incorrect_pin_t2": "6e84e7530624d27f6b2a287eb14b8f5d4638447caa0dcc1c8a618d2ce3d72e64", +"T3T1_it_test_pin.py::test_no_protection": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_protection_levels.py::test_apply_settings": "19ae1e07aa8ad013ddb2077775126c7ba2dbe80354c39f69f95b3d00db31abb7", +"T3T1_it_test_protection_levels.py::test_change_pin_t2": "7295d706623ef5c7fea2e5dfefced55f58f27eb2e1fab2022f031504298a0060", +"T3T1_it_test_protection_levels.py::test_get_address": "723078ee91fb447676fcc2d2350445f46be05dbb83125d95e6b8185c9127e4b2", +"T3T1_it_test_protection_levels.py::test_get_entropy": "a76e192a36f64ac92a982c7821bf0930245eb4a9ff5bb93d2d89e5dd6fb47048", +"T3T1_it_test_protection_levels.py::test_get_public_key": "723078ee91fb447676fcc2d2350445f46be05dbb83125d95e6b8185c9127e4b2", +"T3T1_it_test_protection_levels.py::test_initialize": "721f0d655a6794f5f829281f409b90af6750479eddb0f16bc1d20c77cd788e50", +"T3T1_it_test_protection_levels.py::test_passphrase_cached": "0975e32c51f258e0a063f90bd4280fcbbcc9f9a947b66dff70201aa5f43a451e", +"T3T1_it_test_protection_levels.py::test_passphrase_reporting[False]": "2d7c57c7b8763ba1d5e1f9c74dda0bdad51b1b3b187f16755fc7d4c5a10b9003", +"T3T1_it_test_protection_levels.py::test_passphrase_reporting[True]": "80967e4286d00c7f97121196053b68f76f7f56c52d06cbfd2b6bb9f30feb7d10", +"T3T1_it_test_protection_levels.py::test_ping": "ac422ae50300f08b80a66a5e2279c5146209aa6932029ddcdcb7221e92aa8ce9", +"T3T1_it_test_protection_levels.py::test_sign_message": "1459f97d1231af6738b9d11501fd81c1ecaaa46269a06b7160702a946111e11d", +"T3T1_it_test_protection_levels.py::test_signtx": "4f7d6b9eaa7f5cd0bd58c2d6d349aab1009c4df3e9617cb59cbfac3a6a030d4b", +"T3T1_it_test_protection_levels.py::test_unlocked": "2be88e8945ccdd77233fa9828d78532ddb9fe60d280f229e3c359f362f077f55", +"T3T1_it_test_protection_levels.py::test_verify_message_t2": "1f206b0486d97322ed941c5b388ccd6d7c162092114a018f2cab1a74e651cf79", +"T3T1_it_test_protection_levels.py::test_wipe_device": "ab32d2fb023ccd2ba0bde28c866228755804dd23af3d070456bd4a55aec7e2fd", +"T3T1_it_test_repeated_backup.py::test_repeated_backup": "04d06faa7192066878c18baa750d462dec650c883f24304868b81bc78b27394e", +"T3T1_it_test_repeated_backup.py::test_repeated_backup_cancel": "3738979fe313dc5398f6031dc6397ba8b24191fa00d0dd459527384ff5bf6f5e", +"T3T1_it_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "c9dbef7a89ce8a96d508a71356eedcf73dfd03698dc45663a8437b46504dd5d2", +"T3T1_it_test_repeated_backup.py::test_repeated_backup_upgrade_single": "4b3bcc6b9ae3f33c5fc0f0ad99a35d9a40617c588063732f8dda75fe339faf14", +"T3T1_it_test_sdcard.py::test_sd_format": "29a292d5e44214eca3b28ff6d6f7f2a8f33c2464454d012087acd8948eaf2500", +"T3T1_it_test_sdcard.py::test_sd_no_format": "30cf44692aa534534fe14f7712bd7bb667413b54e20263f42a6fc2ff68dd25f7", +"T3T1_it_test_sdcard.py::test_sd_protect_unlock": "6f0ab3277350e29e65f16799cc859f6e4d75c1c2fa59b623397267f863a0b6ac", +"T3T1_it_test_session.py::test_cannot_resume_ended_session": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_session.py::test_clear_session": "b670002b27aba8fa44cdc889d071a12b11c518a931e158418a82b1739a0cb751", +"T3T1_it_test_session.py::test_derive_cardano_empty_session": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_session.py::test_derive_cardano_running_session": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_session.py::test_end_session": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_session.py::test_end_session_only_current": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_session.py::test_session_recycling": "58f2c5a3cb30c9b7b8c29daa7cb2f52cd992fd1b5cf685825a04fd30d3f23901", +"T3T1_it_test_session_id_and_passphrase.py::test_cardano_passphrase": "9d074dc3787b75ca6527d5829705bfa376e9046de81de412bba3098a90f46967", +"T3T1_it_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b705c8f0d11176dd01d2ab524c76135f69ff5a1453c9a7f93a222cf803c7fa10", +"T3T1_it_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "00ab5ec77527f5b5470f6899a2f0a2b98eda678d30887878ea7190387d0ef176", +"T3T1_it_test_session_id_and_passphrase.py::test_multiple_passphrases": "8ebe30a534ba70e57a07a3d02126ee1abe3e68d903ce64010a6fd46076e90aaf", +"T3T1_it_test_session_id_and_passphrase.py::test_multiple_sessions": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "4013b5fa38440219ece4897b7497b7b5bb6c7d3431f7e133b543aeaad0eee2be", +"T3T1_it_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "eae9b40403272f1f7e1a9c6f462f0cedd751bfa06428229e23cfe55f4f04c948", +"T3T1_it_test_session_id_and_passphrase.py::test_passphrase_length": "c07854006434982cbd18570c5e1adcb359fb705452eedef9f16965f50784bd4d", +"T3T1_it_test_session_id_and_passphrase.py::test_passphrase_missing": "0975e32c51f258e0a063f90bd4280fcbbcc9f9a947b66dff70201aa5f43a451e", +"T3T1_it_test_session_id_and_passphrase.py::test_passphrase_on_device": "717602aa21b2103477ec98b9826699e6a2a991bea087e6e6f8b1a5c224677d31", +"T3T1_it_test_session_id_and_passphrase.py::test_session_enable_passphrase": "c06258daa740c907001646cc8c70cecc41a54fb9dafd8a0ed45e0386ae6a8ced", +"T3T1_it_test_session_id_and_passphrase.py::test_session_with_passphrase": "20186fa222e3badbc6e050206ee01177577d72e8e3bc22295e22e9b5bbeca947", +"T3T1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ad462cd6be9b1c9a8f9a8ef891ff991ce48b242b50ac84c49007c813203624e3", +"T3T1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "8172edfe4367c2c3a56afbeb3ff0127cedd43f96a5397090c6bd10924ccc501d", +"T3T1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a83a4204d3dfd67ac12a0e9d112e975695dee60bba95fa33cb3af7e753989d7c", +"T3T1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "d8838804c134ba2f0beabf6f817bb689bbbf1ad143e19d9005aaa859661d16b6", +"T3T1_it_tezos-test_getpublickey.py::test_tezos_get_public_key": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "079fbf41bb41abe690c91fbb888e9866d76f0b451f852a27890c4b0fa4fe7112", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "23a35eebe52af5870dafa4ca961705365bc5f462decbecf172d75063a13c94b9", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "8681f4f6d7c26f0bfd9502979d1c7f4ddf977c2046b9473f6525860c4e47c6eb", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "e15e43c43fe58a42b1ff7216d44d470eec0af6d00dc99684ab5df1ee590bebfb", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "61054af62db2eb404ecdce84d79821667b33e8db14be058cf374c189960b5674", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "46509f7b62ff4e1ece732814307eee623edc66a14c12c29cd01da13bff9d941e", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "10c13d1d5d87a9cd02c533069015a8c44c50cebd2f7fa83b3b05cc58f161a94e", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "d839082073075f4525825ba6caac487757b80f3bb3cb2009b6d2a1458d2a146c", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "847d3e23568a94a7f3007d13cc7319afb6f3233bda8655be1d5656949c68db22", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "910d6b02b3e52495e1dbd9ad9d9a159a44db37cf9fc9c9804b6cfd5b65a9cff4", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "7d7661dbbd2b0a374a4691967303b525cc5fed665328e88e1e0c94294a2f3c27", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "dba288ad75c31a7555833ef3e9eaa53fffcb5467daec4ba7c5652238b8a6b862", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "dce26f1457f0e9245f551cc942bade11265ab1aaf7964dd6e6e27bcd60ae773b", +"T3T1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "ffc7d4e6725a061c2ad012759da453a092b5e17f8b3c62e3fa80663d1e2b0120", +"T3T1_it_webauthn-test_msg_webauthn.py::test_add_remove": "9dc2b308878ae4a8f9555d937e82510747935b1422d8a5320dad27a892475667", +"T3T1_it_webauthn-test_u2f_counter.py::test_u2f_counter": "543a37fd7dadc242b2cd4b622bd37c8f491e1fde269743e70e8f9e773f224ceb", +"T3T1_it_zcash-test_sign_tx.py::test_external_presigned": "26dd626e3af7cc09f061375511f76d87f684f1eed766286fb9b8a9dc9baedc0f", +"T3T1_it_zcash-test_sign_tx.py::test_one_two": "c803e35bfe426217a31c6af4f8e6ec23c0f9add32b6ba4ee9d184be8e5c2b227", +"T3T1_it_zcash-test_sign_tx.py::test_refuse_replacement_tx": "653514173e8b394e1fbd997a820305e146064f27e49684378edabaa1dea58bed", +"T3T1_it_zcash-test_sign_tx.py::test_send_to_multisig": "e93fcdc0252a5fe049403ef9eccc75cbe16f211577c74af3f358c0250d83f228", +"T3T1_it_zcash-test_sign_tx.py::test_spend_multisig": "19946e8e46ec40faf1aff7b9e2d8d568ce82b1ba8c64719eef7c11792df67722", +"T3T1_it_zcash-test_sign_tx.py::test_spend_v4_input": "ce8cbbdc874d8b765d6cad30a8f03a55db63adbc163ab3b617f62b43107ab5f7", +"T3T1_it_zcash-test_sign_tx.py::test_spend_v5_input": "2a1fa8ff9cd2c908a42e375f2ed1a7c294871b3e292699c1c0c9ed7dff7bb15c", +"T3T1_it_zcash-test_sign_tx.py::test_unified_address": "6fab50d7dbf5c17ada14e996a3fd79bb5e569849c23825270241b754ae2afcb4", +"T3T1_it_zcash-test_sign_tx.py::test_version_group_id_missing": "62cda15ce04565c13bf7c95f15fc90129295404be5a9997e3a200ee9cb2b6b1a", +"T3T1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "a786e4bf22887db83410df59e9ac6df2b4bae5417f2396847048b227c18acdc8", +"T3T1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "34e95231e23e3e3e968d70d65afbc6d6f90b26685ae93834d6b172e8da4bb8ec", +"T3T1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "357e7a0122ab5155d2a2eada36dd143667d27b6682d737e4bf7e5a3cc2b8aacd", +"T3T1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "0b04612e37fb5b5004b723d68e470b4744f6dbb673397648305cfc7e43dd0cd8", +"T3T1_pt_binance-test_get_public_key.py::test_binance_get_public_key": "77c54780c81e0766b45bcfabcaac261b2d2a52d177cb77d76b03cfdc28ee8428", +"T3T1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "b96ed941efd13086d222d6648e6b9cdebd61903e7958647cbd704370bd7e3efc", +"T3T1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "fb35cbb142e7b40bbedfaa090b04e44a94c50ba6676e0a76ea5ca4f4e3aad3c7", +"T3T1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "227c69badea22017adb5e35ec2220fc02fafffbb2a48029ed606be825774b0d1", +"T3T1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "b96ed941efd13086d222d6648e6b9cdebd61903e7958647cbd704370bd7e3efc", +"T3T1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "fb35cbb142e7b40bbedfaa090b04e44a94c50ba6676e0a76ea5ca4f4e3aad3c7", +"T3T1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "227c69badea22017adb5e35ec2220fc02fafffbb2a48029ed606be825774b0d1", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "187f87341f3bfc55d4eccfdf33418a2168447f95d3a0b8453eca1db836e5a5fb", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_get_address": "56eb45f98ac2c1c88ddbd3be3453e9abcd4beb8edf973262d2cc3ea7b48f8d36", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "827718071ff531b74517e6dd6d6dc2c46e8f38bca6c09d729bac23dd2cf02d0c", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "1888cec15fe2f79f32a803741736858e8dc309cda4a81f9319a90e8ba3013ff9", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "f23fe9c84611f740390895aafb788c9986acd60b56aa6910a57c11040b362f44", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "f23fe9c84611f740390895aafb788c9986acd60b56aa6910a57c11040b362f44", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "ff53afc6f4f741015dba10d19a7df316bc045c59e96f6d8e726d1c7c7bd4716d", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f5f45534328aa9cadd52287a9a8f9653f6e6420bc0a9898daa1bfa3b9ab6ceb1", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "176ed65f313554e7bf39b1cdd3a2168dd509497b26709a1e001d51b994efb075", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "694f13caa6a17caceaee610fc1bdc45cd82af46704d61174bedc85d0e1cd5fc4", +"T3T1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "694f13caa6a17caceaee610fc1bdc45cd82af46704d61174bedc85d0e1cd5fc4", +"T3T1_pt_bitcoin-test_bcash.py::test_attack_change_input": "7b7978301b1f966f9c2a5cf3f7f624bfe408b360225c15b2b4f2ad338aa1dc3b", +"T3T1_pt_bitcoin-test_bcash.py::test_send_bch_change": "7b7978301b1f966f9c2a5cf3f7f624bfe408b360225c15b2b4f2ad338aa1dc3b", +"T3T1_pt_bitcoin-test_bcash.py::test_send_bch_external_presigned": "f408b3a4e7c949fbdd7bc994671fa4565fcd8241d4e28de5e79fdb611acf7614", +"T3T1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_change": "19871ed3de309766a50dcff7ba7775b42bb866544bfe76d61282485e4a1dcceb", +"T3T1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "daac6aeb5b922aad9fb68488879be6e0a993a1e18a2224e02e14033c2d35c9fc", +"T3T1_pt_bitcoin-test_bcash.py::test_send_bch_nochange": "eb674557af4268d27f2a19e9886225f9ffb94467b7aeb796ae1cbb4af06066b8", +"T3T1_pt_bitcoin-test_bcash.py::test_send_bch_oldaddr": "cedda65cda2f56fa03859b99fb495eaec71ca55ffbeaa6ddb54752d7e3940569", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "2d489dc6337a2cb7819b82e908f65618b09636582b07986192052eb876e71a17", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "a74dd558e255162a9b999db8d1cb6b1d8f75754ebd4396f5860c8d02abab297e", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "ecd05b1f5a66f54d45b21049eb1bdf2b91b2e708d35b17cc56a27837ee726295", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "7c0ee9a94467d6eeb12c7dcb4e2a52eae29d79b6a61341ae23e1ee410157518b", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "fb449a7f99be323ce8ae57fc1ca1c0e1f1ad881839d6ed67d1a6f2f43ffd3b30", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "39ba08503c5d28fd649978737b6f9ca5b1f7f1046ca1c9c809d4272ab6b59d77", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "504a0ea98c6e07cd008c753b40976866abf06dd66e647cf1db52ff4c2fa95de4", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "49c9f99d7b9b36fce7c9eed572ab64f8762761a39fe9c5b872ce1e08cd3d0fc0", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "0c445e4edb5748ad7f8a969a93f933eccc959a4c0d3faf69d743e12326552fd8", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "75c57b8499e4b973a1fe5e78c3be8887e4e7b8bb324bd595ced61b49fa106430", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "d6f4835848728d801fb842769a444ad6b223c10d9fc07f2c7cb4a8de09cfa20f", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "90cd2ae9c68af4bfd1f68e2bd101b77051c44ec059c6aeb1beaab897ba91dc2b", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c358531eee2152b9dab40ecd19c8eb2dbe37a913f882d48e97a68100fe20d48e", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "5fd1f0a0bbe8e01c7bf8fc76562537aca983d5ff6a83cd23fa335c9dba74cff5", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "85d29a818a6dd6bafd3b7d609606a1a4a71633bdea36879ee0946b2da0a9a0d1", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "90ac0199d4233853aa56d7b12fbc95d50c6a1266e04f5a7d7dbe6c0f3b213d20", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "514a6a416b87cfcfc531aec0461784fee0578c4dcfe524810abfabd0cfe4eb95", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "347688ab5de7832fc596ccac74b8611ad57ed54be396cbdd5e019cb2a1471afd", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "2d489dc6337a2cb7819b82e908f65618b09636582b07986192052eb876e71a17", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "a74dd558e255162a9b999db8d1cb6b1d8f75754ebd4396f5860c8d02abab297e", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "ecd05b1f5a66f54d45b21049eb1bdf2b91b2e708d35b17cc56a27837ee726295", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "7c0ee9a94467d6eeb12c7dcb4e2a52eae29d79b6a61341ae23e1ee410157518b", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "fb449a7f99be323ce8ae57fc1ca1c0e1f1ad881839d6ed67d1a6f2f43ffd3b30", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "39ba08503c5d28fd649978737b6f9ca5b1f7f1046ca1c9c809d4272ab6b59d77", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "504a0ea98c6e07cd008c753b40976866abf06dd66e647cf1db52ff4c2fa95de4", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "49c9f99d7b9b36fce7c9eed572ab64f8762761a39fe9c5b872ce1e08cd3d0fc0", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "0c445e4edb5748ad7f8a969a93f933eccc959a4c0d3faf69d743e12326552fd8", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "75c57b8499e4b973a1fe5e78c3be8887e4e7b8bb324bd595ced61b49fa106430", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "d6f4835848728d801fb842769a444ad6b223c10d9fc07f2c7cb4a8de09cfa20f", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "90cd2ae9c68af4bfd1f68e2bd101b77051c44ec059c6aeb1beaab897ba91dc2b", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "c358531eee2152b9dab40ecd19c8eb2dbe37a913f882d48e97a68100fe20d48e", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "5fd1f0a0bbe8e01c7bf8fc76562537aca983d5ff6a83cd23fa335c9dba74cff5", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "85d29a818a6dd6bafd3b7d609606a1a4a71633bdea36879ee0946b2da0a9a0d1", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "90ac0199d4233853aa56d7b12fbc95d50c6a1266e04f5a7d7dbe6c0f3b213d20", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "514a6a416b87cfcfc531aec0461784fee0578c4dcfe524810abfabd0cfe4eb95", +"T3T1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "347688ab5de7832fc596ccac74b8611ad57ed54be396cbdd5e019cb2a1471afd", +"T3T1_pt_bitcoin-test_firo.py::test_spend_lelantus": "82513abef770aeceda15f86f805a305409b27ca5bbc40ec3e8b92d9031bf3b68", +"T3T1_pt_bitcoin-test_fujicoin.py::test_send_p2tr": "65add3075fbfe1bdf907c4c5f925bb54e66c4ce8f3159da0c27612c1a37f5422", +"T3T1_pt_bitcoin-test_getaddress.py::test_address_mac": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_altcoin_address_mac": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_bch": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_bch_multisig": "e47a461cfd92584924cde90f76a0abc77eddf471a0e0fd6577e850af65270445", +"T3T1_pt_bitcoin-test_getaddress.py::test_btc": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_crw": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_elements": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_grs": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_invalid_path": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_ltc": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_multisig": "8c676c5c67edaf0282953075d8d651fc966531ee917cbc4fb8cb2d9203b888bb", +"T3T1_pt_bitcoin-test_getaddress.py::test_multisig_missing[False]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_multisig_missing[True]": "5d74a012d0355917ee7ef96071e4d0e6a8dfc37875aa6fca6b61e6c5c9c6b8a5", +"T3T1_pt_bitcoin-test_getaddress.py::test_public_ckd": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_tbtc": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_tgrs": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress.py::test_unknown_path": "d54f67c7f932c50f52fc3afd9eb56cc5b916d6df28d16d1f814c0a7a35c3dcfc", +"T3T1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit": "e5bc489602bfc474608d5ba984a75c1c3e2530325d61bf2bcdd1bf31a677634d", +"T3T1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "96cbba4561bb1670350d40b2c4450640ce8ad1c00d97c7202f16c6e7ee5a4b2e", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "659a9d71c54f8d57625e53f43a44e886a15139503cf4b298ace8ee31a68e9e8f", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "842047ed12ab6f36df2d4236d9416690aefb61a6a48a66d726aeb8bd11a89347", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "4cc6405403b772d405457ccf45deb4c960fa8d524b848dee0ea4319525691ca1", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "5963595e838a52778589b7379c8d44188b2a774695bcb0bb8e125ca5a4ce1600", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "f894499f54cca0ddb6f6f17f7b24d39499147ab36d01efe185acfe051a42cd8a", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "d71e7de935abb88ab37985e93cada90d00c9ced86d4cbc1ea82f9b13c340f74f", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "ebdd7d02cbdb3ab093755f7c9630d31abda4af422e60f241b75d8bbbad89188b", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "3402992accf70453a377fd4a271f0b96bb1c2fc69f5a4349f6796afade2f045e", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "f1767cfd747fbea76f9bf8113b5aa0f93630627fbb4061562d38968437d732cd", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "147b9136bcfee6d562cfd541502c378b1d2bc9f3282ee434f5a66febb68abecc", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a217c4aba7c0a76314454afab5a476114fdd0f497cae7afb77bb8331d341fd82", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "b6fa1f4b79276db9dc7c4dffc0a1b8697c88f86b16da849d91ecb70c0f2fd062", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "c2656870f399f1a0eadb80a5b54f761421e45d6bee121b8ccaff9dc900f3a7d5", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "33f1746f6d4b659b00c244a9a53f0a0eb7bc0ef190317385aedc36d726562bc7", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "170c7459d73e0c41a459f8e747495cf7725321ffab4e532403e041d0388f5698", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "3b1ba294e7627ceb9b093c5e940cc974d586d0fcfd948a4be6ca086d01be01bd", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "4215318c1c09cc1935775c5282f66c6223c8229833780d1bf9153d89c4c1de9a", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "2db963d33cee0a03ee59bcc8fe12567ef1e262bfe4a18780f4b09ab1f86facc9", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "21288e51e7e10f9be5c6ee977b500bcfd69314fd686b9dee8012f32de3463df5", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_15": "32ef45b4cf7a78ddcf0ec270d0ec680d86633558579c015f37f6e004bc0e2ad9", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_3": "c7cc6231e34729e72b039b712c94f47871374de35d5ab91c911fb3a4bd6b8f8f", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "55119f8d5c3ff3f84b73eb45487430548bda3a08adf0835611c51ef3da3800f3", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "55119f8d5c3ff3f84b73eb45487430548bda3a08adf0835611c51ef3da3800f3", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "7d91504db16f03116c9f8c666209e627cd14c2049e03f031d94ef59d54c29a64", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "520252af376032d06de8f7e430ddcab2aa978755ef7841a95634757d5a490af7", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "eb6c059c01d074257e311f26cbcf765167a2ad4783599fda3a7350781f4961ff", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "0698f48837444a0598827bad284cbe9de9af885de675e38e10eaca09ab46402e", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "f4931a05fd4af29e54c7d96558597636841618b5d50e0b7ff0894d0b42503b10", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "12161f3162e7657a47d8e163247ac579b699f57f7022a2acd7c3997fb5e1085e", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "b647b438456b041e00219faa4685539cadc718a80303656f84dc6a31df72720a", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "0b116bf6180fc0e0019d2ec521975a5668221d444fe46dc9f13d51cd8687f881", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "6bbf06b2671a01d5cb5601b5d4bde88857c6fbc846de2a6964c33e573d8de56e", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "b0dcfb1a600395d11ff95e9206439afbb08cc44a92ef3ad6330a187eed6c0d6a", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "60e3512f1e7c4a7e85863fdf4a0f60a76c7498695e5b66b21a9ce6e2de29f710", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "8ed17d2b6149e8219762bf18b18aa486ebd828f1e4b5e290982272c6c5834ec4", +"T3T1_pt_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "bfd433fb920479a56cbb0696b8137930760bcff899b2c66393ddc25981452c10", +"T3T1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "08b0156e55ddb87b43b9e313e32bec8d8d13854dcb4620ee52754f229d8c7a5b", +"T3T1_pt_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "a74dd558e255162a9b999db8d1cb6b1d8f75754ebd4396f5860c8d02abab297e", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "87d76803a86bb3b4e747ae165524104bf15420a48fb2af99acc6788d07e5e9c7", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "1f6920766c7b391e63c68c363c58b3ca17f1862c721ee0881f1dd7eefc051d5d", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "f517247b53618784eea8b3bafe5cf1804398ae201a5bc20a5c0d33d1ad444aea", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "73d4f7c2e003ae33c641a12cf79d536c3c42e2232c94090f522a220b559183f5", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "d948037cac09b0244afca46f4b25fa516adea2ddf363a3b855d10495011da648", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "1731992d2826d1b1fe6db3638c005f0d899065babeabf697f44c79b19214650e", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "79d589be39e1a3004ff549fe4b734a388a1a35847c34d2e2dbafa2a9d29bc990", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "8505c5553f6cb21625f7a65eb5fd6b9ea385b2e1dc7581e5efcea14f4a8be6b7", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "d6f4835848728d801fb842769a444ad6b223c10d9fc07f2c7cb4a8de09cfa20f", +"T3T1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "a1fa91df59718290e32bfce407fa74d1ae770ff44eff52750a3f215b5cdeea41", +"T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey.py::test_slip25_path": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_grs.py::test_legacy": "4d0bd3e115ba7b6f11a3184edf65f0800287b425a2eb40d11b8ad2a78cf51e0e", +"T3T1_pt_bitcoin-test_grs.py::test_legacy_change": "4282639415e07ef2444834351cd6f28c7315895c5fbd0974fa1ca03977e6dd1a", +"T3T1_pt_bitcoin-test_grs.py::test_send_p2tr": "a8bbfed285ca0b8cf62405dac440372d4808952ba417e5374c76feae6509c65f", +"T3T1_pt_bitcoin-test_grs.py::test_send_segwit_native": "ee746204bae2c2b3eaed7312b3f19e0c8ce8b7cdededb1d33c61deeffab65093", +"T3T1_pt_bitcoin-test_grs.py::test_send_segwit_native_change": "9642206750a0ef643ec0c966ef74e3895ab7033a3b3234888cdb915ce78b6599", +"T3T1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh": "8d64be8d8a8736f6a89616a334fb32b9f8017935064e76dfa0d0acd1ff595fd9", +"T3T1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "05a8ca4656c5429fca0d8b0a95dd61f0a4f841f46325057090d07aa854d4a8a0", +"T3T1_pt_bitcoin-test_komodo.py::test_one_one_fee_sapling": "dc94120d3333b35c8eee17e3b1676f9b9b18b605d752fd5ea4c34ea17a6b4944", +"T3T1_pt_bitcoin-test_komodo.py::test_one_one_rewards_claim": "1852aa21bd73fbfb61b863d8578b680fd31e3561e8997f03731aedd6ea69d735", +"T3T1_pt_bitcoin-test_multisig.py::test_15_of_15": "10f8b285cb8c5f97bee22fff7776a371799b83ebf656f2906f414ef7d0c95462", +"T3T1_pt_bitcoin-test_multisig.py::test_2_of_3[False]": "044adf6864ef8600be0185d91a832d6df8122820be570620f03c83751bab5973", +"T3T1_pt_bitcoin-test_multisig.py::test_2_of_3[True]": "ed4aea231fd60e39395f0de479612718e41cfb96b2e9e53b779e9ac45cfd8493", +"T3T1_pt_bitcoin-test_multisig.py::test_attack_change_input": "55f75c47da7e4d847bcf66b120f0a3d7ea82b1a777e4b6ae2f286d14589221e8", +"T3T1_pt_bitcoin-test_multisig.py::test_missing_pubkey": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_multisig_change.py::test_external_external": "23ee2473021ff109959511a6a45947d1ccc57bca39588e877d0e23afcee63db1", +"T3T1_pt_bitcoin-test_multisig_change.py::test_external_internal": "9856b1c1b2c470331dd10d5865f1cacfa7b9952f84954a1d466d82dc2b0db352", +"T3T1_pt_bitcoin-test_multisig_change.py::test_internal_external": "1f1d7e7d2f244514dd85b1a67a3111fd08bed13ef90ee6366a37573c56531560", +"T3T1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "9711e94f920864846bcf3f22ceac376232ab38464ee720bd9efc1b4ed7f087f7", +"T3T1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "0bcbce70813e9839e1a3956a97cc9c3697fdc95f9fbb75dccd65c5d1ba57bd88", +"T3T1_pt_bitcoin-test_multisig_change.py::test_multisig_external_external": "383316c3c86df07638ed28b70c5a788354505c358aabc981bbb2e7057f78b3d1", +"T3T1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "9984d42edcbb8f62ae663503420eca53f2d459d06a79847f8a4e3cbc755e5a44", +"T3T1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "5ab2ce55aa1fd57773eac3f70ce5aab8727b4901164c96401d909dbf0228232d", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "4d7a381f9c1a23f26279b719a5892787d84e4cf127b72cbe5e798f610dc481b5", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "44975556f96fef66ab5e783f04947b05c2ff5c4045fa6805ef93ab9633f69cd7", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "0aa6fe30837715a37fe053aea9885f806075aa0ab6ac200f745262304fae131d", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "1176a6bfe3a063433f3b34b78b835943038eb1a0bd3c304a938cef122ec37325", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "87d270004010da553fdfef8117689ccdfbd13ff69c9192dde829266a5316dd4a", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "6cf5d1d7a92e8d2c40172905981e2be7963699e460eaacc81c36d85b910d5535", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "ef10172a65afeafda4250015c4a45715c33267786a76775641a800184a2b5fa6", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "2e748adbc6365ebce10b2a81873ceb4471d1a0329591d74055dbc9ff64db9bcf", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "796233276d2440689008f3e931a348cbb647dea96472d5085356708a8f60e57a", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "59b087a037498816d53a25f6b1d714787bdb8d7c0d2f027914ed9a8f94c5888f", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "92490c11a0f3c81952ec801ab4215de99cc0524a07267667410ffbfd13b7b1a3", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "69a83b0918eca3558ef6b0a5821f636796774b08a1189d17cd013deb28ef55a1", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "2f1a822f3fe38bc51371719138f04ea66bd826dc50eafeafcdfe538a5f6f4dc3", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "b74be379184d9c86ffd67d81d9fcf05d03581b2cbd2136aede3bec77e23f56d6", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "643683e89143678f2c41b64e44ca561c97aefc3b3ebdd68d368d39dcf84ce867", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a443a52abceb23b4d7a1787ab1917f0ad719cfdb3c534fe83779ebf56e0eacec", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "520b722faa5de5045520b76062d8f7390c0eec759b90c83b36f0fefcee726048", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9d8e7d0de12846ea52d71d10683e1c26a4b3fa1f77078c3b3c50ea12fbcc8ca4", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "b5b682eeab1caefea27a5a79c71ed64e248f87fae406512d2780c9214868ba05", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "8dd091eda189e3516aedebb54b6eb937cc4201057f5f32ed5d35529af078e0bf", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "af9f351bf946e72d49505bcd49a082702fcb5be5453e2ccbdf6bbb23b3b07c72", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "a7b2d4b839631b38fd34167089f9d4af4e681335951daf9728794ccf78ad13b8", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "66ed152ac7bfaa84481ba84bbdb262201cbeb74d027cb40e41a919d03dc751a9", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1c5abfd4b6a992e33064697fe2f00480cdbeb5a2838cba7b5912ac0344cedb74", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "038c4199a08d7c29569448e5b3fef5cbb557cbb9deb9393d176ed784e9fc5294", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "830236da90d338c706b156e0579a7137d750e188e7bed785be62935991da95a7", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "ef5c6ebb61cb42cafb56e028ca55e4c57a83d925b7a6ae9601bd1fa5b0e0f843", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "b0c00f6cca6b909da4aa1a2804f4b7791beabb94a5b070e573ea82d5f2a8ff8c", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "3416aec2b40658ea4263f83d889e87e7f30470edaa17ce46717bbcbd87e03ca6", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "54ada9cc5b4aebea88082abed3f8a790838b1720fca17530a1ca01fc2450f8dc", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "aa67f311970176cb10940a77f8c5aabc1542ca84a678c764d125de215fd69cfc", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "6869eb37d49879ee3d207c2d713bb8a25a059e158bfe43a6c288b2432778104c", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "54ada9cc5b4aebea88082abed3f8a790838b1720fca17530a1ca01fc2450f8dc", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "54ada9cc5b4aebea88082abed3f8a790838b1720fca17530a1ca01fc2450f8dc", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "54ada9cc5b4aebea88082abed3f8a790838b1720fca17530a1ca01fc2450f8dc", +"T3T1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "169a358f21845886eccf0f1953623ca84c080d2bdc485426cc25ba295aa79b84", +"T3T1_pt_bitcoin-test_op_return.py::test_nonzero_opreturn": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_op_return.py::test_opreturn": "a36f6a5d3d8a0f91c4a9e150b318c9f3d8cca4178b0d7e0d5c8a2fa772ae91a0", +"T3T1_pt_bitcoin-test_op_return.py::test_opreturn_address": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_peercoin.py::test_timestamp_included": "7ba7bdc2a8c0125c1f6f6521edb48e44123c2286d594fec0712f5798466b416e", +"T3T1_pt_bitcoin-test_peercoin.py::test_timestamp_missing": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "56b2225a80dce323839df36fc05f761bfac2cca910e1897ffbcacbae320ba2a5", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "83dcabb803390a22a42b0e51ce98148d2703c092e1ad925d85ba3c8ed2dfdf08", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "83dcabb803390a22a42b0e51ce98148d2703c092e1ad925d85ba3c8ed2dfdf08", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[bcash]": "64293eebf929854428e45ecf45794a36a89f9af497098e138c2ebb6d47c0985b", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "fcd366e4abb690063f469214a91d54087a93c1a5a0bf6ed3b23c16ace2b82491", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "22e11570f444f02800a423c1658de31175ce087486e0a56578fe76d99253c77b", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "4031cf29584777f050cd0cbf2955eb1ed9bde191ab9478d741c9e49fd74130a2", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "3e919c30b0ccfa4beb91899f8e94c1be646f42e1c24ca588e2c97cfca3755889", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "7e373c12f20b64c193e00abf0622438b34a806bb545747ed59580ed0890b19dd", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "7e373c12f20b64c193e00abf0622438b34a806bb545747ed59580ed0890b19dd", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d3bc580b9fc6645c8cd989623743ebed0e68555777df3cf3508e7b16f46f9f07", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "1c49eb37df0bd026d036582abae458b1096a0ee3ca14387c803d440ad3eb696a", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "41deb4fa699cc57e125ffbfd12ed55553d4cb86570c531eabc5d65b6ac79b928", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "41deb4fa699cc57e125ffbfd12ed55553d4cb86570c531eabc5d65b6ac79b928", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "4c763c0aa9a10f9e0c7cb609c24453ac3b2d4a4c55f54b70ce1680111b6eeb64", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "80b0905c8173b3628af3ba8d0b9d42aa4f1a89d820343ac2ee6f9f69834705a9", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "a0fdf99373bdad533b694182ccb3fa9766e7ceb8aacad8ef657c331f48d5800c", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a0fdf99373bdad533b694182ccb3fa9766e7ceb8aacad8ef657c331f48d5800c", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "510e6d988e014b07d697358c891190d0415c8002f906dda2f38c7bd60c56c2ff", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "0cd049b72b291b2bedebc067ecf487071688050c9fd9103b3685bb48d3cce905", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "92f36294e815ff36a615ddb35ecf631cb523b1a7c3c6dbbaef441b36b1564a3d", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "2bc8d0a57dae300e6721f920e09f2db0e869dcf280b0e27f0e3bfd161b2b6a3f", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "0ae58155e2e8911dc109afcd494ca89732485d4596b11c71d7dc089135b40f78", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "6d86f19ab9b67e395df1c2d7eaf30ae914af19fcd7541a56a3736160acbd67bb", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "163c4a962f27d1649e72f7f3e1a441cbc16d7b4cd5e378a9e269887edd6cb2c9", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "6cbfa80abfb77a44c4792db4bcb5972c39a5048526f87eb3e34a44863ecad8fc", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "44448b1ddd03df20941b58a6797613e10e7b77a0a9bceb0294ba4cdbf10017be", +"T3T1_pt_bitcoin-test_signmessage.py::test_signmessage_path_warning": "d34a8266ef729b59c7a2e6c6553089c70e14a39b50db8eece5d9128a44b73de4", +"T3T1_pt_bitcoin-test_signtx.py::test_attack_change_input_address": "198f531798732e47e5c7ff79e4d92686ed9c2bb3ac3d752d555208d1a6ae9a14", +"T3T1_pt_bitcoin-test_signtx.py::test_attack_change_outputs": "edef90b6bb17311ff3cb95edbd6f2ea90484cdd5026fa50edac4161ea7f4e009", +"T3T1_pt_bitcoin-test_signtx.py::test_attack_modify_change_address": "f0b31d10e4a4039e43a6bba802004831114c12942d7a716ad222bc63868285bf", +"T3T1_pt_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "f0b31d10e4a4039e43a6bba802004831114c12942d7a716ad222bc63868285bf", +"T3T1_pt_bitcoin-test_signtx.py::test_fee_high_hardfail": "f73134b28060d7e1e2e0ce76ac95b17ba21fa5e52ef946214eec1b08028b2291", +"T3T1_pt_bitcoin-test_signtx.py::test_fee_high_warning": "7a98e89bcd9717df182ef242643578aff21a5df014bdcc8c6736efaf99ad16e6", +"T3T1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx.py::test_information": "981a456ccc995ca1386e730653d792888e35c06f190647385f071ec0ebc7fd01", +"T3T1_pt_bitcoin-test_signtx.py::test_information_cancel": "b356defbbeab4fe6e1767770c5b35eddc6ecbcb2151923337b59db68e7c553fb", +"T3T1_pt_bitcoin-test_signtx.py::test_information_mixed": "8127e094a589dbbab3a6fb47cc58541e5061d3330612ca56f70f60ce4ad099e2", +"T3T1_pt_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "b065d45a55cff06404f02a141abca0d945ffc33840ccdce5324a7e4d39e8e2e5", +"T3T1_pt_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "29833187944f0b9e6710707c104833be7de3dd4cc7f46caba185fbe9a57575ee", +"T3T1_pt_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "20cf5b86b5df8e25b4091fe4cdb911f031b4eb2ecd870deb9cb031f5e147d48d", +"T3T1_pt_bitcoin-test_signtx.py::test_lock_time_blockheight": "29833187944f0b9e6710707c104833be7de3dd4cc7f46caba185fbe9a57575ee", +"T3T1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "20cf5b86b5df8e25b4091fe4cdb911f031b4eb2ecd870deb9cb031f5e147d48d", +"T3T1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "3a6b7d4efc10806c50dcd921e31b5e1e1969ff0184727c5bccf68793fe7d52c3", +"T3T1_pt_bitcoin-test_signtx.py::test_lots_of_change": "f94e8173ac1a33d80c893694a788f888546e0680a847806cbbbb27312dc2ce84", +"T3T1_pt_bitcoin-test_signtx.py::test_lots_of_inputs": "c74ee8000223f91c6b0c75e33cd642e891e39f70d519e43f023b953c0046c425", +"T3T1_pt_bitcoin-test_signtx.py::test_lots_of_outputs": "4e1f9efeab0d7747e489f7a11a7f6eb6d7126110df78451aa056a44b900d9328", +"T3T1_pt_bitcoin-test_signtx.py::test_not_enough_funds": "028bce5c44e6cb4bf6bf45c8459cbfc303de62ff6d20134641faad00a60b43e8", +"T3T1_pt_bitcoin-test_signtx.py::test_not_enough_vouts": "c58b23ec137cba9971bf34be276783f1ec3aaeb11e695d8a7f52544e6327ced3", +"T3T1_pt_bitcoin-test_signtx.py::test_one_one_fee": "ad16bbaff93bd2c59ea0294ff9d1cb97dc018892a4d7fd46787b0260814ce5eb", +"T3T1_pt_bitcoin-test_signtx.py::test_one_three_fee[False]": "f7e581cb3fc04308f1c06422bc463d742e900ef6175afc68bc770b603feac7d8", +"T3T1_pt_bitcoin-test_signtx.py::test_one_three_fee[True]": "93c2c02a351c101dcfdf636a66cdf04e30e0d1b8d86d0de6c748818a4c15d4a5", +"T3T1_pt_bitcoin-test_signtx.py::test_one_two_fee": "6b9aee4733ac66d9a41dba3369d6fedc87c0794e0298c070fe2c3898318ff211", +"T3T1_pt_bitcoin-test_signtx.py::test_p2sh": "704cf1ee4197dc23082123f6d4fa6c5a60e27f4762be774b9b675e8df8e5dfc3", +"T3T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "af81ee1828e8202aaabd823019fb9a343b28d8ca772b4dbd8538d166d2e36199", +"T3T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "af81ee1828e8202aaabd823019fb9a343b28d8ca772b4dbd8538d166d2e36199", +"T3T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "af81ee1828e8202aaabd823019fb9a343b28d8ca772b4dbd8538d166d2e36199", +"T3T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "af81ee1828e8202aaabd823019fb9a343b28d8ca772b4dbd8538d166d2e36199", +"T3T1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "af81ee1828e8202aaabd823019fb9a343b28d8ca772b4dbd8538d166d2e36199", +"T3T1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_signtx.py::test_spend_coinbase": "ff94075f6cd35f6dfc55cf4b945ac56de4c63ed6b706614f26fc32e60d9e58ed", +"T3T1_pt_bitcoin-test_signtx.py::test_testnet_big_amount": "fc537ff0ab3838d2bd67e1d000f2c8761afcfbee695eefc50e8bcf706b105dbe", +"T3T1_pt_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1516bfce896417a20db96ce5afbe9be778dcff7e93054e448b4c193b4a9c8573", +"T3T1_pt_bitcoin-test_signtx.py::test_testnet_one_two_fee": "f0b31d10e4a4039e43a6bba802004831114c12942d7a716ad222bc63868285bf", +"T3T1_pt_bitcoin-test_signtx.py::test_two_changes": "01b2fc09f33d0074816c4f84412f30d1a785d1f7a73fbd918a17e99ebc8db056", +"T3T1_pt_bitcoin-test_signtx.py::test_two_two": "955823b5c1a74aca8734ec145d970eff7a0b23eb40a0dc9692dbd2f5ba38873a", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "ad16bbaff93bd2c59ea0294ff9d1cb97dc018892a4d7fd46787b0260814ce5eb", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "87dbeb43f6f32e5c67c3d105d0a8d34de6d21bff57de37fb11bcdc012d0a4f53", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "6e3096dab6b7ba55d127b884a58f8620fda53af5ff98e5a836c0a68b053b0b0d", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "9845946967605893ef58a3ac652874df89c14af36d3b250a4a178bc3969eadb4", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "ad16bbaff93bd2c59ea0294ff9d1cb97dc018892a4d7fd46787b0260814ce5eb", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "dfe0baf7da8686585fddc621f7cd0e3328a26721fa696f863d6feb496acb3092", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "1e718a59fbccac649c019473c73fa8cd14f3095fe66db1cec77ca095eced8052", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "968ce0cb6e238d4c3b64ce33d5861e267e1e2729059f9ebb404b757812816448", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "cb43b5e0a9e30f462e3ec78ddf101b6cc8f16407c5a18751eb6ee7b2f7e78a73", +"T3T1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "dfe0baf7da8686585fddc621f7cd0e3328a26721fa696f863d6feb496acb3092", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "ce8855da0e932150e7ea5e51eef2e9afe86d876b75384605162a4ab7dd6f4f3e", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "9c8a19611616e810f078e3177e85916fa35c21004f5200e3a55d87ca34e75b2c", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "c7c7db9507614aeaddb6a7d3b0c9f603e275075af39066cdbaafcd2e84bd217e", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "28691b0e3a114d9c5049850bebd84fa0594ac9eee15ec977bec6d02dce9b88e3", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "33e3afc43f0ce9671b94aad86e5c51f37e0391e065f9f3d8a33a2aa968c646ad", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "a0abf2b8767f3170e24e7469e1c511e5f9519cd573cce2fd8ad2d37ecc4a2830", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f2a71e51735b369dd986d0e98b3894accb9dc5f56c3ed9bbbfb0634f6b0eed1c", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "2b769d20397139b34fe702050d2396bf51835dfb94afa393fcd6ec23d0b95b15", +"T3T1_pt_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "711a48046f1c7d1524dfa160277fae3862ec0d25fe6507f57b3b19ed56fee15e", +"T3T1_pt_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "36301695f4d7da3b35b614b18462536e7d9e2db8956a345b23d06f9008fea2bd", +"T3T1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7db3a1b9edbce727d77f867504a9b04aca56a8aa227410bf858ebfc39fbd1d98", +"T3T1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "bad9fdc8d4d39dc6470377cfb48291b30beb650289eb657b948fa7a506423261", +"T3T1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "3aa7473ec778cff60f5359574c25ae1df0f42bd4c98063f03abb9e3bc31ce296", +"T3T1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "637a07700557c2188c7bc6dad5b7747fcda3851143abc9e19ad251f0cf4f7f84", +"T3T1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "3aa7473ec778cff60f5359574c25ae1df0f42bd4c98063f03abb9e3bc31ce296", +"T3T1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "637a07700557c2188c7bc6dad5b7747fcda3851143abc9e19ad251f0cf4f7f84", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "95b5dc2f6e96b8f01ab27cfa246e16b65f0ada922d20ee6e0d54b4e17fac0aa4", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "06e4095236f5672f1cc8b0083b586f1849cc4b27f1ea2b1297c9bced322b8098", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d527cf80368ddb4796da8eb468192b582257f235f5d8a1f9dc2476cfa3bda07e", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "031fa9f130d310479c4a76135027ef2295bfb4388b250f2ebb8e3abea658fc66", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "02979d943759633ae3a348b4e0f334cb6c6112d4bc71422ee87bc5dcb069cb03", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "cc6688307f12b98cc8b1a869cf91894666def4f3af36b3bb26eeb07a8be376e0", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "d494d081bd0ec86c874876995d0606096d52c48f24659456d668879f0ba57ccf", +"T3T1_pt_bitcoin-test_signtx_payreq.py::test_payment_request_details": "f0e89d683b376136193f456af1417041ec2973011ceeca6cde21c5444d8cf37c", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "aba57feae27c74d18da59d1ddf605db6410902df11a34fb1fb6509818583e982", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "aba57feae27c74d18da59d1ddf605db6410902df11a34fb1fb6509818583e982", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "aba57feae27c74d18da59d1ddf605db6410902df11a34fb1fb6509818583e982", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "aba57feae27c74d18da59d1ddf605db6410902df11a34fb1fb6509818583e982", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "21b2cae22d99c37116ed95eef53ff28803390658cdd3bd6f4561572b98c4a418", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "21b2cae22d99c37116ed95eef53ff28803390658cdd3bd6f4561572b98c4a418", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "21b2cae22d99c37116ed95eef53ff28803390658cdd3bd6f4561572b98c4a418", +"T3T1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "21b2cae22d99c37116ed95eef53ff28803390658cdd3bd6f4561572b98c4a418", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "ffe380c51a88532ce0df31675a19d5c71324b4b97c636f9d739a80892c25d101", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "84386632f059e774199eeab717835b0605aadc23d97e9b3b5a6f5907e64c1bf5", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "fa97c7e7c2a9133f40f73e14be5016d222a793a6c975ec573f7bd1db4d3d5c6c", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "fa97c7e7c2a9133f40f73e14be5016d222a793a6c975ec573f7bd1db4d3d5c6c", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "d7729988252053cceda44fadcc94654d4093eacf9acbb1d395667fdd5e7990f5", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "eb3aa106f2056438d1e62dec50151bef8d004cf711e36c0ec54cef4ca91b12ba", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "a73fd47a4c65977edee53813933a1c16532a23305dc174a2da6a698f77c0815d", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "d7729988252053cceda44fadcc94654d4093eacf9acbb1d395667fdd5e7990f5", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "5ff574da7db21100ab8975b5417c55fc21f93991c26b00cc4883c96c1bf9afef", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "f1c3b36fc2eba4c9111e1021b4d5b1670847d55fa16c7009812507c537f6d209", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "f1c3b36fc2eba4c9111e1021b4d5b1670847d55fa16c7009812507c537f6d209", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "f1c3b36fc2eba4c9111e1021b4d5b1670847d55fa16c7009812507c537f6d209", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "3887899dcf68ff3c1e23acf4d3464f9044d35628e5b14310b2d5c8ba53f6e86f", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "f1c3b36fc2eba4c9111e1021b4d5b1670847d55fa16c7009812507c537f6d209", +"T3T1_pt_bitcoin-test_signtx_replacement.py::test_tx_meld": "808f28d40c99b5fcf15f88af62fd6873ed554f3dfeb7adf7f41edcb1a87c5e3d", +"T3T1_pt_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "5dc641b01ed7058db91838b3c0d32eb433cd03c1cc39b013c50883723d85b9ab", +"T3T1_pt_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "c5c313a5e712923e542391e54be54602dc19226dab21ef9539e3cf46af36b17b", +"T3T1_pt_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "cb5b7f8789a3333869624b3bfb650530cf90394fff1877f27aa4b0171bd11be6", +"T3T1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "09e2079726e4ca101d7f0b998ed75e3943d9fe1cff75dc1140c0730164233165", +"T3T1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "0f424f4115c379abf23d59828e5646168a30a088161084e575f04f8ea1c7d691", +"T3T1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "e5d7bacd61151fc4661dd0b809ea6f6871263486f12d48f517ef07497732d0da", +"T3T1_pt_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5c99bc3762af7642a7a73dc682f3f56e9becd439657bb5955927e7f54f1212ef", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "01e3a6b79cf56dd4531987852cf63e49b08a894d965ea548a526ecd4ebdca30b", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_both": "47e57e4430bd03f2840b377d15e554231fc91a770785f02db30a7a62cdd7b406", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "6dcf199af2b08bde6901d054992d578c198eae98a8dcf9e4754bd0a9e8a74477", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "4fad544428ec0480c6f4eca59248c967329174ad6bae44f27e8c1a928440e010", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "0ed32cb6efb5b696e35625499d569d2c96cdc16f24da7bc9e13fa968f3d5879d", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "da365124beda34301ef1fe58419a3adab38c6ab2caf64508a7620e2a456f94f7", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native": "dfe0baf7da8686585fddc621f7cd0e3328a26721fa696f863d6feb496acb3092", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "e5cf542be3f416a9842a3aa633f6659042d132aee67473975887d0b4e37c466b", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "0597a7b24a35358606f6c4fc6a787906cb9ea1b9055c1bbf902a825e41713dad", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "e560382a9109f032e6911e6d06ef76b58eb83182a41da625a78e69fa296b5138", +"T3T1_pt_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "15496793e4e6d11154217bf0b54d1b0ee2a030315dd28bdfe00a25a65ad2df58", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_attack_script_type": "fdc5f2794c69f60aad12ff18b1fda2a8210a17c0012adc811b42b1a44e8b7d94", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_send_mixed": "a410ffedb2605ad9a58f7fc17e836f82e956a701e647e8ed93fd1a3ace86dfff", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "f8d0826177981337b1d60da4e1308643660b16a5a507b64e38422fa7b1a69749", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "ebf45df9347eccc8b2dfb7a651ca9d309ffc23e75a90884b7968566f368b7a52", +"T3T1_pt_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "ea7572fe8ccfc84b2ca67690825dc8ec5e14d421113caf3ddc6359e39b522231", +"T3T1_pt_bitcoin-test_verifymessage.py::test_message_grs": "8c6416d6fc749f1327d03de6862ec04e98712b9a8d08c8dfd49ec82335a5b1fc", +"T3T1_pt_bitcoin-test_verifymessage.py::test_message_long": "35ddf7f6d5b7f7cff48b6bcbd0256f4e5384183083d368a6ea008749f01f6285", +"T3T1_pt_bitcoin-test_verifymessage.py::test_message_testnet": "81f95bf64bdae12dc635887dd57b44fcc13ac0e44dc7a6244a6f8d2cdac99b09", +"T3T1_pt_bitcoin-test_verifymessage.py::test_message_verify": "76627f792dbb8555aace14552e50b41e834abd97f47c67653a888fa6ba2ad9a5", +"T3T1_pt_bitcoin-test_verifymessage.py::test_message_verify_bcash": "78fde8f9d327405176e0fbaf2f588c62887f3241b6b2f74c0162de21239ed281", +"T3T1_pt_bitcoin-test_verifymessage.py::test_verify_bitcoind": "d75e5ac8267d4fff2f207fb3375a5e0180247b2ebdd45b0223578bc6aec5fea2", +"T3T1_pt_bitcoin-test_verifymessage.py::test_verify_utf": "bd60b12332214b6b856ea0a3cb67f68a2dcb831493d48f0d779e2465cb900fed", +"T3T1_pt_bitcoin-test_verifymessage_segwit.py::test_message_long": "d4bff34ec4de00fe148df66f9717f4940c65aa7f8daa345b9cc9b585a0d192b7", +"T3T1_pt_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "114f78ba460adac46dea372ac60ff0e234a9e4d6ea9e98ad59dc052ddfe84c5d", +"T3T1_pt_bitcoin-test_verifymessage_segwit.py::test_message_verify": "07a1a6e84ca281ecbb0d8f49971bd88435f2c17e22449ebe961e0bca2922408f", +"T3T1_pt_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "f0814d6470d229aa922e34a8731c126da345d5dcb34e224e0108a12b07c51e71", +"T3T1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "1156b791eb35c66361e7f35beceebd9a7146399096795f923f31c78807305d5f", +"T3T1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "2faf794672c647a155128ca9615e56053334af2f7d5508c717c630fa08c4dea5", +"T3T1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "281f396ce683ea5c724c0def7bc36b18ac1d7dd952d89a6c383f6f1d1637bbe0", +"T3T1_pt_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "b8fa293d9494ee0673874f6ec0f2bc9b052f82330ef1255ab49f3f05bbfbd932", +"T3T1_pt_bitcoin-test_zcash.py::test_external_presigned": "714fb1cae5c1178cb1cf319f80035463e439d2fbd211cc0d3fcc762f29dbb178", +"T3T1_pt_bitcoin-test_zcash.py::test_one_one_fee_sapling": "dd2d93e11e3f99edd20bc7e0ea7a39b9339406577601b5bb0701e913ca410f43", +"T3T1_pt_bitcoin-test_zcash.py::test_spend_old_versions": "8d481ed9e2a02fdde9f1a686fa5764589a6ffd1d77a468782cfe4c12ff564a7a", +"T3T1_pt_bitcoin-test_zcash.py::test_v3_not_supported": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_bitcoin-test_zcash.py::test_version_group_id_missing": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "b599ec2d7e40d7e0c7c24a2f3cfdd5f1b8582a8e8d14885a45c820412e189bb9", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "cb43613b22818dc1157fc7f8702999055467e6c93cf986f2ecb6efdff512997a", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "536b52318bb593023916f0ba0fb038a6f70d016b87ef6335b64ad57b3f3be900", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "f086ddebfff5949048a93679fe855639780edd363749821abf7214a9ceecba18", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "7e5682327912d06b666ad1e7a792bd48f02d1d5920b37bbadad48bc8a6aecff5", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "22fc3ee3f335e8eb293dca7a137625d42ba2c2aaa1748edf2414810b74bfc8bb", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "200d5deeeb46e7d4cd47efa42cbfd96a49ade2442dd7542404318243a5359c1f", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "395d5caaac7c0700a12b4c9248a796966835af948f763109e875e208151b426e", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "f8727087b03ec8f902414074e32e9fad6be5c4ed11098f1cc926bfa642a43593", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "3056c9eeba5bea23ff6d951836c8429859ae5090d44a79d399ea69450e26c209", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "605a564e8ce69a460628b92ecfc0b92b19ba8175c90602a55c7115c01d2d8cfc", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "289f45968bec824016e778e3ff08c89507e37d4ce15f4061aed46370192278c0", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "2d66bc83cfbeb18e1ad11d28d3784bdd9c920dd3c6ea18a51018873ef477e66d", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "ca2e813dc218693a8de02e440f3044bf0d5adb925b3cbc32a1d2d7bc1b240921", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "d27740e194f6845ae38e8168f6075420552082994fc286e4d6f4566e4058f3fa", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "99dd285abcb80ababbdc1f364b2ae3757468ecbba6cd3c73a76648b5bc5d16d3", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "d99e767244db84be7feee8ccaabca9671796c9744a80a08d71cf61d622895a06", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "d449395d94173a28f8c2e7fd7a69e2abab0487a37bcb8f847cdb18e4b7086d1d", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "23b6808e7132932447d1959c7d24ba1f10dcd358f8d761577bd0f72a4806568e", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "a37746c65b16d36fd8ebfee4a9f4289fa015769d57b8d7f9a3fbae1dfaf94e02", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "bbee2d5dd6afcde0073513a4033d00efce7be7b6c04eaa37da77abebf10308fc", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "50dcd57981e21b7512ca50822b3ebefc8daa756b3600066ec0867b13ee12a51c", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1d1abdf49bee8427c7563f504a0e924e57be4f43a303856a2c71b66095c81b54", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "d571366b67802c3c4cdb9cc70eb558e6bab3a6662de1567ddb4888f5eda8ae77", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "9d85ebcd9c2926ada5d785b3f954def02d84559e474ac8da1f2b09a75d294a95", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "734b5e64eedc8ee3f0279c672feb8b5fc57707156a86eb9e948db5e9d0742896", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "95c76951cc98bcce524839a9a0ac850f4d9d73bf2d165eab85c84698f9890044", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "94f7dd3a4fa5dc77bcb58f85b05503fac2f76ba65fbd6ba9b59dca8ba9c66a4b", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "351e9652bdce45bf7d65f8b4a3ff98c5304f8bdb54d68cf0e52019499090ed84", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "968ec5c93e6c737af00fc3fe06f4076f5de41515f8cbf187e5625dcc132c83d8", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "47fb72881a857089f618e7d31efb021f89af78ada2c7f21e45d230f9f5e492b5", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "50856a6e201752a0062df61d62f4a09c0f38bd8f0d677781afa3603eb3d4f4a6", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "c593cd07843026fdbdd6e06f27361d3043389b25e165649886e3cc4aefe3b0f8", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "5a6e6894d3f7ca1b80f46edaea8237efa2e818678a6f98f2fa85ee0fa081e027", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "8653d095cba7f041ecddbbbde2ecb689ffc8831a5f58e7e6e8035fd01eb81454", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "cbfd00c644b16849183dbcd086a3d03cf70132124bba47f015ef7625bc5727e7", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "7ddb7571e2648ec6ba9fdaf0775a407f9eef666dd884620ce7e986702ad62ce0", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "c3ba821a444c5393446fb5b32a62a7290599846648925fb88977f2e9ba029c46", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "1592ad267482266b60e7fcdf5499077719d1dcfee36d580d05ff311605d0c431", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "4cb2227b4ba648c361dd17d4bbf598f595b3f99122bbc9b7a52d42846976d3f3", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "0ec32a8d071af1b11d0e3224514571c5c085f3e1d47a883db3f8cadca290ab78", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "f695a43f59dab7f9c9064938e8023da76ff62361c9ebdb7994cf9665196f8c0d", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "7f32f4ca94c0716629b62ed689cf117b780064dcf614f58b9684434246b3a21d", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "80ac6bac7aa0ea63d8ddff5fcd126778d39947e05fdd28fa8118d1cf9fab18ec", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "543a8010f775d3255efec26fba30b5dc2031fd76f092baa3f46757f601fea9ae", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "0f0d13c99257f6b8ba635a3c05a1e886c181bb9d548f23969a55970c7a12c757", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "c36f749b30bcfd67028967d000701ee14bdbd48ebf5980dcc2854afe5ef79768", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "01429c162a965f8c2fcef2f02c4277289d4d466ba8cf4e0087824d6ffa8af4b5", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "267ec656351006fc08f00c86ce9efc69deb160046fa552e28b236f5ad38364cc", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6dea55d2bbbc657cd41e6b377dd61fdbdf42a8e219241f59880dc5cca33fb29a", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "3deec0e532a5ada8c013815b880c247213050aafc8e0e397dc48ff0854cd93a9", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "138fee40347394554d723126b2280f9e720c6f003c7a99718305da8413fe7c8f", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "fda0c656c6031b404380abd64f98671660cd6594bf10845228af966298226b78", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "4a5e06cc8cfcab593482eb0cb7a389c95292b65fd4c9fe57e4805d3e0e6545f9", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "93313eb1c0990a89ecf8cb8702eafa5859085387e46bbad50422ff39fac6ac67", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "66c3c085d072282a63fd46b643460fb90f2f75942b1ab2bcb6c643d07b8183f3", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "15c7c2987656b851845a37224403560ab8def90aaf47391cdfad0c3bd07aaa24", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "90c76ef9dda3cb0487ca38dcc0e116006c0620134bdf10eb62cc6a61ecc3e769", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "9059ea37a38a8afaaefa237ad77072657be5025cac1c18ff1839f01a88cb93b4", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "6a2143adf91ff35fa48342ae3f9c1c2991e59a47f15c2664c68e2f37fdc35004", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "dec433eb9ca227c959455b1cb3b30e87bcd97f0b47cb36f6bbd5abfc904bdb4e", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "ea211ed194c74841059b134865aaffcf3793284de1eaa94626c2a2eb0df54312", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "24977553798e881ccf8a2a6b0118526e8194cc0eb5c2649d77eba08f9a0369f0", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "9b376bba5c84ab1a239fbbddd8fffd87876f8ac13affb1df3f2a90a1cd7c3fe0", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "4f092967766be12d494aed4378f36dffa69c84ac2f920568f229677e93973fd3", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "7f0ef25b251133325e4ce4ad1181ed230a8d2e77af8129107eb7b56ab4327a5e", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "6a5c7553b6bf2ee6dee85d8b1bf9225687c870ad012a1f324322f5c7f42b5fb7", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "e32a7746d07af0c9a105f3c3de5cd01b4d6f9581248cef1556432c14a93f674a", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "8b72fd20124a747d69f214f9a1c8b0b4907cf0eb0b7b0752f079976fd0a8c097", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "6b1a3d3da3a64a6317f491305a4179293c4b55331c935abda8870eeec3e2877c", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e84de0336b3826d4de7686550f8062726a6765f611e8f39be3b4dd44e1f71b51", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "da5f06ed541c1bce427b8272f683f4721f8d7ca12a918df11c3612eea4c97e01", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "7239378a3335f932de0ca0cbf10431a58525b21dd59e2f2b20a1bc593d989360", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "9184256508d3300a59b6bac4ec45229ab3b099ebcab8f94eeea6b83e54d4ff6b", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "bea83948a9034eab761ef6d9e0b8085669e476d854f3e11073ddfe5429550d4a", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "e9943d8feca2aa5175e57b0ec16a31acbd6217c313d4fa489efbfea2cd8b3577", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "2e636ff6feddc4d667c0d508f638a8a1e60c63fff493e2bc862d63bf084a1329", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "659e4646452fe2390b81629a36304331ab52a0d256549327abed27431a57b75a", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "f34201138b0ff88824ca10777e3e602266aaeeae05912be48d708988905342c7", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1491285325a4fdfba9eb4f49dbaccb020c7cbf8f3245e1dcee85b8f64c7c289f", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "d376c2cca437cbfe0a40d8feb31940531615c9a77546fb8d166398114bbc4cd7", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2b247ddbea70cccc6d0f3fd553bb72022e19e05777c4bbdec07cabc791f8815b", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "041a837922c33e1be4adc7518c321cdbda155f15f2b97db568141060d507099f", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "86aeca7d7b43aef4c6f7c0eac3bea0cddc74187152af05355219bdeada6b6e1a", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "12f82f164f65762805ffbcf2e700a905c8f838befbd7a3437675be2a5f15c62b", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "3fa87b09e97c176b28aa1692790414cd3a376ef88706f462072a3a62169bf483", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9d6cd40776beeaf350c0a9f4dce7b0fe6aae49009c5d8a219985605e2b533c48", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "81af0c4aa84c8895e0751e8a4da5bfb3a5784de64143eef26ba9928387daf845", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "3dc85b5beb4b61c1c8dd8e2116f5465f81cd27363d1bfa41d87c6600b155b511", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "ee5ef616118177a79b361762f61801bb0d0610901e86d18555e459b87437c261", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "aa1b7859abdfe402b70bc983514401c50279c0ab6d79bfe3d73b24a58d2b0f86", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "697114df7b7be3fc7bbd21888a2ed40317ffbcf0b8554c0bd376cffefab2b1a6", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "3e1ab204804e665b79ea45926d0dbe363c89de455b9bb521922e55a6bcfad87a", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "68cd679bc8ba6da23d2b08bf398df1dda55739a0774ceaf60f0c4eb937d131be", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "3bb0377bc8684d896be201aff253e5adef7d4f2a9c38f132346648961768aa41", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e8d4d0cfd617df9def0fbf5cc7b7e22854f04af94d6b6e44c007afbec981fcaa", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "a4c02ebb40c074bc6c31fbd195a54429b441bec42c2233dadbc741bccf7e8359", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "0ce4cfcbdbebb34cbec2d438a0b031bfd9bd74b0974f4e44066568506393fb6d", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "9e80f7cbccf155e056e2877bae93ed9c6581080f617d19627d9017c9a10e3e03", +"T3T1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "047ca52fb9400284f76de79d7425783605009614586866b45c6efb180e69de9c", +"T3T1_pt_cardano-test_derivations.py::test_bad_session": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_cardano-test_derivations.py::test_ledger_available_always": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "b6d985d64e9b4880a7880adc6b3afa1d6ddc2cbdabb1586869f23c34415feff4", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "542c2a9109e3f776795b7d192490f29e9b44f3a1791ee109c575320a93729c42", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "7fa8b0f8a8a5f7b7908a0951d17be16fdcf9b55cddee4265a343eb46594520d6", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "0897ca2745a0f4ea0e0603e9c173180f902761d2177408122de9548ab6660210", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "fc458aea597c605a86b48d2181246e4b2fe205f7f1dbb45b194cd8064ff36ff1", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "a01f7f1ff17a322258fc8c9db6f50705902dfc90d3ce9ffe811db28f50399424", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "c6d354bc598f1e04bf3eb60a32a5074097da3002e625ef9c8e826ee7ddf1d3b2", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "0c6cfb86e98a9e5f1d636fbb0d8561427559195e3db944f2537de9f0c787f2dd", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "17d0364f83c8802d5fbe49c6997e094db6622f54534b618ceaeb9c0f5c2e0f02", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "0d7bf0f5e3cfaceb0b1c8e9cc54a8665739bb13d9140b39bc2aef3f7e30d9437", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "7346a9e4cbb587013983d885da00565d5533edcf3faec20f7e4c0a1f271930bf", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "c1700087c05a1c5a1af6bb4fc0d414c07c5ccbed82b45aa914ace21fec054c36", +"T3T1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "85bb851458afbfc7b0683abd68e3f9ea7f1ec060a6d9b6831bf6511b652829e1", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "5341e60ee48fe92a290c13906ecc1f1b4af043d8287c3a4500b363e157c8d741", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "73b064e869117678b8182749ea463ad19e303f603aeadbbdf41ace570381550f", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "6e9737c1861dcfee6b7071f5eb080ed1e819db836c30f04837b4d519906a69a4", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "ebb76a03c9d3492ece8808b5b16c147bcf20ef85cf7a174f924d43a50424b8e6", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "ebb76a03c9d3492ece8808b5b16c147bcf20ef85cf7a174f924d43a50424b8e6", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "fb723eb4424025dccc522992ebf96977424a5c95be528b821dd4b403f4509e96", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "6670d281f96a194efdbca6eaaa7e86eb6693365a99bdb6dcb00ddffd6958b571", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "12085c3979fc7a76299361bd18b278b841c2248c37b073169a8bdd756d7afdd0", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "3535c1a35de414d13c1d319493058e13a3725d66ec6e4b303f20d06f6c1b550a", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "454e4206e6721b45339cd5f54fe1b96512fcb7c5442aa76dd236010c2c9a6478", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "0ef7732b186c632af4a982b097e7d9947580bc9129696879f42a60be1aca953d", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "461b96cdf4fad9e2cb5faad3c6c1bc5ab7bf0b75ecd0525df82543bb85e3f3f7", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "20d2479f11babcfdd6208b96140e5767427bb6fce4faa75c963df91c35bfb001", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "e99b1939a3c8b4334c48bd7d05cb7b3ff83d75a24110c58195929ab1336f9bc9", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "e99b1939a3c8b4334c48bd7d05cb7b3ff83d75a24110c58195929ab1336f9bc9", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "d6be80f3a5a301125d878eaf31c65f9df539eb1a6896a275125fbb7efbfce6fa", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "a8c66f675cbed4c5e1aafd3914594d10092c0d467c6718d137c3e24c3b739689", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "48de96bd96493bbd41cea7b9f04326195cec19528304147a0677027f65c6c7a2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "b369a80aab549fe085dd0cd5c06faae4d9167723fedf983b4dd7e80c4eca0839", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "15228e074831b90b0ac257cb52994d59a35624f9f4023fbb2f98cdb30dd459e8", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "e0787ea7aabe958f8e2305c79962035910514b33de4e972567ba24cb707e3c1b", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "95323c715bef3abeef8cae92aeab25bb5fa1433729e968ab23da9555f0d12739", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "9341668179d4e01614c3cf5fb30282e43ab484af2a008fc0a1b7e0039e56eda2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "ebb76a03c9d3492ece8808b5b16c147bcf20ef85cf7a174f924d43a50424b8e6", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "df57ef68dbc45ab909c5ad3aabf8e3820749446538c1c7f9ce045768659dbcfa", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "b369a80aab549fe085dd0cd5c06faae4d9167723fedf983b4dd7e80c4eca0839", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "f47782e3c50567f069fdf7d657d9a2b779648760bf088240cd4bfbe8db5cabb3", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "e0787ea7aabe958f8e2305c79962035910514b33de4e972567ba24cb707e3c1b", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "95323c715bef3abeef8cae92aeab25bb5fa1433729e968ab23da9555f0d12739", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "035c7db2edbd8bd1c5cdf7d1babe57e789c77d2ffe9ce9c33abeb0a09deeabea", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "b369a80aab549fe085dd0cd5c06faae4d9167723fedf983b4dd7e80c4eca0839", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "48f3c31c1284b5ff10103686f9842ef093effb792e782f3a47916ebdbae91622", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "de05bf517a0f413674a7f84e39b3c3fcff73de89b3fa4f7815e6e44c069b563a", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "c4813e85b8365a94f73986abfdceeb6c7cfb3c0cf3eed8368d7d5b1eb5ed9d8d", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "0665d1efa5ccd278c532c3b2c6a8477afb5a4a2ff8292fefe38d47f27627466c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "435eedb757340577e80ded1345ae4f28493b02f5a056d6188d39f79733f340f5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "2831bcf7f080957e51a6cb322fb7ac5c4f22d2e1eaaa971ce34e01158eb78757", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "7a15676e667ef85330dcd46e303d4d1cb5b013a06e4d26d725b617bb8814d83c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "4df1ae253a143ddc5ec712fa648fa79a3a6612beb1f4ce86048ce7978af4fb30", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "2fa8bdcf40f81ea861e1ef6e1831ef3194c652c1f6e1260cc755d38d7e9c53c9", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "76c762d3352b4fa723f876acab52215fa1dd859fbf019e96113e55475eaa9356", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "12ff041bca93d93e11e4092e398fbdcabcfcac121a9461e3b82c63b2f974b67e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "7d141e4973f4b8a6f175807389c020c0813740d013b29b44962ad9f21e1aa596", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "f76450f6f67a8736837621251ce13523dc42370c28b62853658ff23507ca8fe9", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "41a00b14b6f817170c81e3739a28bf96422faf3a29f1bc9121c2df3a35ae5b9a", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2d830a07a80e1a2b19844aae78173193019480cb3d1b18e62e50194c32593ec9", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "f8aaaa040d078f4ad49ed850ef7959f48438e6216d711d71c3b33b7ab3383a07", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "a0221bddc8f0fb2270fe8bd444a0ec66d581451d6830212e8f369c030069a70e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "11a59b92e95ae50785acf77fc1b2e29117271ce7ba70d3aa7e24b530e857fbe2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "50fb382773b824b91ddfb45637001a418eedabb2cda4423641d5b8c3ca8ebd0d", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "dc85189ec0049197a39fa3141e986d3bcd5c493aa4a344b6d24940b155ecb36b", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "35ff93fefd82e0405961710474a4070105036bfc08ea8ee3496b749a403911e4", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "a75a5badc72522bd2cb57024abf09ccb35be39ab0cc12963b1b418fa8742e9ad", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "1df6c910da398b9f7218e21f902a6b0acad11dcd79613498165b82229be829c4", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "1df6c910da398b9f7218e21f902a6b0acad11dcd79613498165b82229be829c4", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "aeb623de730b134c2e61ab51435e29ac86d5865a9ff9e496b92b16a9cccc7bf0", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "2d38fa35902cb18e3a25999230973ca00e039391663885e730f5e6da6c99b4ce", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "02427d03693f4939edf29ca643bd75ca4f894fddc05ef7315f3e93c9e78b4d57", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "d85eba29f0d4dc64781e261bd5d52bc593bed9f491652606fe822ff79d3cfed6", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "ea2b518306844a2e3b4ea825f34c39c9b0766c9d84795e4c08036fae30d0ed56", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "4d1ae4e55d83a557f73c3cdaa0a0d6d5f425610f7c6992277ed98c96464c9dc8", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "8356142b3d7e2ef3b5c68b823008b19dfe78439821a6f0913f2c9210f36482c7", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "9a48926b15a97b7b4c81f8650d494947a9b86c40759328b816f9d7319335fa9c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "b369a80aab549fe085dd0cd5c06faae4d9167723fedf983b4dd7e80c4eca0839", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "d5a912a18040701ea5ceef27c300b6da0a797d88b329bcdd292638348ca77a95", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "6dab46255729e38d735f351819d5e432cdc51fd35a1d59b5e444e24cfeb75a38", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "7e0c3bbe9c64f9ea2c16e859a264e51e592b4e6e3c62841be45a60dbaa42df46", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "1a14f5f24d4501eacdb139257f172ecf3e0743b59d17f0137075e366d2cfa1b1", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "b8c953a4b61676e52d7bcb93e1933a23183155b4645dda8df293f32f38e09b44", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "f8c112b3e70fd4882f4d328cfdbb2796ceed4252f6c18ac126b148b7a992a0ba", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "95f2c4de98fd89b6d61c2f1b0f178d9e6b5da260bf547ce345ea0087a442b710", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "0d9152e09058c1f9d01a58a95b15a04acc9f30e91e47d849c016c5f57561f046", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "7e3568c5b174258f09e6e2e98de5eaaaf5a2819b4213c8c060e84c24ddaddd67", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "254d107d9b9fc120d1dbe9e80660f18b8fd77f3f44fa19229351fd7525888a0f", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "b732a398db2043d46a1ffbd046d1c8b77f83b96f61d41b95af30715cf29b65c7", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "b369a80aab549fe085dd0cd5c06faae4d9167723fedf983b4dd7e80c4eca0839", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7ef76cf3331d8f790d7d7abcc7530f29a0bccdc5320a5651b96b28352fc28eac", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "43db2674cd5a752168131413d22446d0fdfbca0dc12be974caf5345c320339bf", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "011863a6bfdfd2e252b2788ce6edad301f3ee9839d109c15ee6c703949241213", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "265f1154f6590271a6f659c960577fbf481c03660ecccbdcea0791ba5a3224b4", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "0698da3ddbbd484fbb2ab7c745eee867af7844a858d2f34d888915e96da819df", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "a12110e850b69202f61128b2969614bde2db5fc99767eac8ac1c2e3a6f6602e0", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "22b9cc4506b51dff0d65958a2462e310a730ae34a275e46c80fe6405a4d4fd34", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "6e6159be30099f34c5b202acfdb53e0135d58bc7699c5d73f81541598eb8b1b6", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "7625df71d6a082f4432695510bcfca266dea1d1e257193832025658204c9bb48", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "7d10e961686bd8790c405edd67d8fccebd0886af2d25ad02ea448ae09e4ccb86", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "7d10e961686bd8790c405edd67d8fccebd0886af2d25ad02ea448ae09e4ccb86", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "b482170d46463ec1f08527c1d321a035733c172ce558fbbf8bc82b846cc868ab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "1e7825bd674f317f06d820dc7b6faadf2d540ea75e395a3152b52e14969f04e9", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "1e7825bd674f317f06d820dc7b6faadf2d540ea75e395a3152b52e14969f04e9", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "2e1dac84325a83537654671dc12c4e0df8ef715e3409a46be845d448df6f1d77", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "2a39e1b78845d08b5b001c11a41e3754ef59f10df8cbd5d100f6c9b8798d33e1", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "1b8c1a4725a76bfe77a69f6d68c0663292f1200aeb14b9e71910511f23deb5ac", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "018700a9da1d8277f1ade9cbf37c8e70b9923c17872c782cd42dedc9e47f0aac", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "c923cc5969c5421ba52849329b570d922cae2eafbc874b2fcac4143a26a1104f", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "bc1d95e7ffa6625f4351eaace8466c74f8f38437b0f98672193661b6f7aa79e3", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "ebb76a03c9d3492ece8808b5b16c147bcf20ef85cf7a174f924d43a50424b8e6", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "ebb76a03c9d3492ece8808b5b16c147bcf20ef85cf7a174f924d43a50424b8e6", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "d44c2132f8597d27a46a5e481b2367bc36b2fa33567a59eba2f11972ed1996ce", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "f5e37964361d684db91ae1d0c10dbff76fd8e055984c7fc4f0915bb35ad5c2ec", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "48cb783b3346195cd00e5bda019b23ca721145d71cd2f6c132328d5390e1f26e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "5341e60ee48fe92a290c13906ecc1f1b4af043d8287c3a4500b363e157c8d741", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "3535c1a35de414d13c1d319493058e13a3725d66ec6e4b303f20d06f6c1b550a", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "98eebc8c3becb5be9bd3e059725dd82b17685ca3aa07ca0538d30664e1e0dc8c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "60cfb62d0f1d35ca8b524c7656e5327c1ae6713ae67ebf9fe805ff1b305d218a", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "60cfb62d0f1d35ca8b524c7656e5327c1ae6713ae67ebf9fe805ff1b305d218a", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "44508705237d8782cfda53e0536f8ea463ecb572e9a2fecfb0eab38d9b0c5cd2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "29d34aaf71f48df392285a16d9af8f11b5d2be4b78e06f2125eb7485e92eb97c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8dafcd5e0c1528dc5aa92a760b64d4e391e53ba0b4b8df5c5878c1a970117733", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "b369a80aab549fe085dd0cd5c06faae4d9167723fedf983b4dd7e80c4eca0839", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "44508705237d8782cfda53e0536f8ea463ecb572e9a2fecfb0eab38d9b0c5cd2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "44508705237d8782cfda53e0536f8ea463ecb572e9a2fecfb0eab38d9b0c5cd2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "d0eae08f40b12ed9dbffc18573939d841d9d32c9065395e8c27b7048c1a9fa45", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "f0d20b4f28d8e28d6cb5bb3a2be464dec603053ee0bad0d0fbfa9f96c27a745b", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "0a92387b85556fa62fcfe9c03f779aacbcba96ec702bc340041e656a11ea732b", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "7856afec3cae1264fd3bb092785820970939a11859bc801770aa2d2e2b6e76c3", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "8bcc4d8a43a2b63db4a14917b8395ff4bcf61a2044c16d34c7b6ebd55eaf708c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "712c3c1158780922f7e05e559d7e687859dda59740bb8c429380edf63b488e50", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "712c3c1158780922f7e05e559d7e687859dda59740bb8c429380edf63b488e50", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "712c3c1158780922f7e05e559d7e687859dda59740bb8c429380edf63b488e50", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "712c3c1158780922f7e05e559d7e687859dda59740bb8c429380edf63b488e50", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "712c3c1158780922f7e05e559d7e687859dda59740bb8c429380edf63b488e50", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "712c3c1158780922f7e05e559d7e687859dda59740bb8c429380edf63b488e50", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "8bcc4d8a43a2b63db4a14917b8395ff4bcf61a2044c16d34c7b6ebd55eaf708c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "8bcc4d8a43a2b63db4a14917b8395ff4bcf61a2044c16d34c7b6ebd55eaf708c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "8bcc4d8a43a2b63db4a14917b8395ff4bcf61a2044c16d34c7b6ebd55eaf708c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "f0d20b4f28d8e28d6cb5bb3a2be464dec603053ee0bad0d0fbfa9f96c27a745b", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "1e34a8fd9327ea8d1cc33a87ab40fdeceed3457ad043a9454dfc657fe81817ea", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "61ec551b9394cb872e4765523190fbc8aff8fcd112e134abc1c7d0528eb9cbb9", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "f9928178b4bbebf634183863854bd0fd873bc2338fbd7fa80c415346b6de6b21", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "4f387e259449a32c2056936abce1ef16052578fb76c1d4bb39cbd16d93c4bea7", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "39412679c2e25ed554bf2d83869e90e1c0220eccba9be3804db7b1bd7c7135f8", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "83c18ac0bd85fb9278cbb38d055546569b8e835f32b7aa5167127be465312902", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "f02b9666b0d6d8a8490b525f49b0c7ccb4547d9b5bd37dd5e7af3d80a7e9e1ad", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "44508705237d8782cfda53e0536f8ea463ecb572e9a2fecfb0eab38d9b0c5cd2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "44508705237d8782cfda53e0536f8ea463ecb572e9a2fecfb0eab38d9b0c5cd2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "d23bbdbcd14b7422dced18b563c970fc226c44e474980bd0ffdfe3f28a4fb23c", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "bca29cd5cb510226ebd683d49a2a9298e53690e4875e6c5794fbeb9f72b9e165", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "8aeee3f8243c9e62c4063b48759f7d1e1a25edf0f660dc2b694012c086700e2f", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "06f7efb950356cb61e88dbaed7294a2a7748afa984d5e32d6025f27d2e2cc6aa", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "60cfb62d0f1d35ca8b524c7656e5327c1ae6713ae67ebf9fe805ff1b305d218a", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "1df6c910da398b9f7218e21f902a6b0acad11dcd79613498165b82229be829c4", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "1df6c910da398b9f7218e21f902a6b0acad11dcd79613498165b82229be829c4", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "56eccd893200e574fcbba9f7eb5bcf8fb825dec690fe22bc8138e08fdf987c90", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "1df6c910da398b9f7218e21f902a6b0acad11dcd79613498165b82229be829c4", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "44508705237d8782cfda53e0536f8ea463ecb572e9a2fecfb0eab38d9b0c5cd2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "44508705237d8782cfda53e0536f8ea463ecb572e9a2fecfb0eab38d9b0c5cd2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "87c43de391414ff7d919e6717156240b6c1c2d96fddb5f82f04d083b1012912f", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fbb5500cc931423d3cd332e237afbd3ef333fedfa574987a573dede5e543d635", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6cd265af7c39c2351d62b30d03fe4b3863736ca0b359517488b2fbcd1e17c2c5", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "ecdfb9829e93a6a5fbc6702161e313769614d70559ca709eb9d502cb377d977a", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "9073a12003bc0e60e0af295c20116b4f4465f908e91f436e5a186600c8a42eab", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "712c3c1158780922f7e05e559d7e687859dda59740bb8c429380edf63b488e50", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "aaa5c0eeebc104ddb14b8e7bb4703488e440f16bbbd28413369d9e5cef2e634e", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "d10dfa750e039821d8eeb6dfa4c8767f141847aedfe304c1feada0561de774f2", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "e5a480089463ad37d8e43f0c085b685225f70e7738355a6593d838e0afb5d037", +"T3T1_pt_ethereum-test_definitions.py::test_builtin": "93ed23bf9cd758b11fb7cbfd996751b03ab251442188be8c233fd73526139715", +"T3T1_pt_ethereum-test_definitions.py::test_builtin_token": "de890595c26f2b448f2408443e885c4ff3be46a3b9959d78c97abfce80be5b91", +"T3T1_pt_ethereum-test_definitions.py::test_chain_id_allowed": "11dfe0dfbe395dc8127b76374b18957098750e0c513ae29ba11c3fb5f4337823", +"T3T1_pt_ethereum-test_definitions.py::test_chain_id_mismatch": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_external_chain_token_mismatch": "f9d6fc9f44d1b171281ea04e5c7f41d07aeab269832ff591c7d83456b753c76c", +"T3T1_pt_ethereum-test_definitions.py::test_external_chain_token_ok": "5fc0fb6a1a2079a9997c57f5ba45c9c48e0e2395a1793f170531de25822731d9", +"T3T1_pt_ethereum-test_definitions.py::test_external_chain_without_token": "df642881977827c0e9e5ace878e51cd6f89635cb4ea43db18edb80dba171f396", +"T3T1_pt_ethereum-test_definitions.py::test_external_token": "5f851b92a49c780e63264c06bafe440d40851b010cfaf7e0efd9e893e5be9a9b", +"T3T1_pt_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "0728f93e8149fe8bdd046ef2800f51ba2a040db8ac42d0950ef7979bb3deebdf", +"T3T1_pt_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "dd549f53d8ff95d4650042755b9985d2897faa7426e5edf9b577b6cc72a95119", +"T3T1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "04acf25ddbd232f1dc2a37a62e0b6c8e719de1199bf6619f15643d8c939c7d77", +"T3T1_pt_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "55d484a4bfb13d6c5dbaf73f8bd0fa2a868bc2599600407bba2daf63b446e9a1", +"T3T1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_slip44_disallowed": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions.py::test_slip44_external": "09351f901667c79182707077cda83ebffa87fd13f2091f95ac9f905ebf0ada14", +"T3T1_pt_ethereum-test_definitions.py::test_slip44_external_disallowed": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_bad_prefix": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_bad_proof": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_bad_type": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_malformed_protobuf": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_mangled_payload": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_mangled_signature": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_missing_signature": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_not_enough_signatures": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_outdated": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_short_message": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_trailing_garbage": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_definitions_bad.py::test_trimmed_proof": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress[ETC]": "4536b27fb831c4134c5abe33a46bab1558a0fc945a3305367d4ddd26496000c6", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "8118a87419264a5ba2ae96cabb887a5a39f9ede842e9a2b9844cf8b5cb63104e", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "1102a250421bea4bde14559f79f0704f304829c274c0b92291c171af732b383c", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "922441950ff183ac967fde36af1dc68c6ca01f46c1c2edfbd1bdca529f457ff9", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3768bc4d6c74c52952bd4a13cd7704eb4e5aab3d18bac3bfc396cc824c130ffd", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "cdda69d46a55f00fedd89c5d3b7c9c1db239c31961737d2f6cc46453b8ec9108", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "8e4d51e51cd8431b442a08a4ae6b526b07933a140ecd38eb8789b800c3035ae3", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "dee870b5ccdf6f4603b2a453dd23a70e725c9fd370ff35b3edde43409ca914af", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "f734756060a25a384ff518f5450de5008b4fe1dec7c6843a13d868505a799a45", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "50401d021b1f0514dfea273a07df1489d9b1bf71a3c0a12ee0843f0880700114", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "54f1d88a634f17e527e0f2d71bbdf22860ac236e1cabd83fe7e9391595854e6d", +"T3T1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "527324d67e85fcb427023563f968616c3c0c497379947f7dbd94edbd39d643a3", +"T3T1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_getpublickey.py::test_slip25_disallowed": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "df748bb07879ce8d1ecc091c283528fd24cf5095a0fb2a1eddbe07e6af2c58b9", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "a91246c5bd6360483596e5f31fbe6d2b3d25e79e6647a10e3f2b96618bb11c65", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "32e1acba6db366e3e3c4b3d0ff8eef2aa523494102271f1000332f0e82bd8a78", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "811a927bb7f6c7f3a072200e79b6e0e0627e0e2256ffe0f2fcbf117e2ef6562d", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "32ee0254dbdba72810ae5b81b15d23dad9822ff4e4b84f08d6ee1d30f0ef9e51", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "5ce7b633bc44b7238d40f4acab25155042769795be12b51c9b945ab2929713eb", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "32e1acba6db366e3e3c4b3d0ff8eef2aa523494102271f1000332f0e82bd8a78", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "32e1acba6db366e3e3c4b3d0ff8eef2aa523494102271f1000332f0e82bd8a78", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "32e1acba6db366e3e3c4b3d0ff8eef2aa523494102271f1000332f0e82bd8a78", +"T3T1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "eb60871ff5e899acdbf7439e9462c74419d68a4f96c4b134e105d065a746eaf2", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "6c008172533d6247a0dbd436a67c3456363e67370b51be72e37a8dc46b0fcab4", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b53ced1516d4f8ec2a10e68e075078c7ad7af29674c659ca6f90c8504c01d1b2", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "76723f6341ed08824f7e1cd922a274c7a40a84afc51e64368dd1766955ca10c5", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "a928f6238eedbd34007ecf7216901799b3e966e095c9b1a390c9c7473a4cc54b", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "aa996ac9eb56117c4c4c4c7bb5568d1da34412157a0627ef6bfd4950ffec9be9", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "3c424b153bb6d68115989518fc86ff9388289b913998ce793805786d7ec17e09", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "07aad595eb331cb4fdf41d7f5963d11c17623e47173220457499f78feeb0b302", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "26b22f6caf0dec4780794927bcb4fc93b3129bdca1b4daabd06015626f91b93a", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "a606d02c13b9008e7591a5b42742e0538e56360c7109e08361da7fb83aa446ca", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "eb9b37035a0735074553b271a869d0d2fff4f61ef75b591915ec0322ef053536", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "67bcbe45ae8259184c5f2047a08db09f214a1fa49cd69c42654091d2d7f483e3", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "7b38ec32cdb41b627009387943e38f11acc7e01d801afbb106d2944c6f031af4", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "66bf1e0d342c09bab3846c88dde8f82ea676b5ddc1d337dfb4fd925070a7bf9e", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "e96f2a58c383d9714be8ea382287d8db26014e3e3d7b24fe781df84cb13586af", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "a338a2b762e8d3a242f3b492e2ee7f4c00f3bbee8f5658d4e3238d42cd135d7b", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "d53e2d661605fd5b65d4a334c99d788eb7d512de61d3c839fbab83151829f202", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "1e475e378351e5a18bf7c8dc95ee0867e5158d99394d12feb113fea03609495a", +"T3T1_pt_ethereum-test_sign_verify_message.py::test_verify_invalid": "eb9b37035a0735074553b271a869d0d2fff4f61ef75b591915ec0322ef053536", +"T3T1_pt_ethereum-test_signtx.py::test_data_streaming": "69c9f4c7c3a680bd2f5178b238b1a9c856a6e1efcbef39ab781f4b9d0356cc4b", +"T3T1_pt_ethereum-test_signtx.py::test_sanity_checks": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_signtx.py::test_sanity_checks_eip1559": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "29be63f45293ecc791da7a060d1b57e127a1317775779ff133ee9775c5273700", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-ETC]": "c16ede20b286dd03d0862e787af42411da84c93923ef6e2c94dfcabcc7cc32a4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "a87822f308f956c74b587070fbcabe24babbf6c7bf44947ae9aef4a3ef4ca634", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "1fae5b83bda72107946983e64d5cfc08b83a88896938c3724ac242fc03e70f3b", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "a87822f308f956c74b587070fbcabe24babbf6c7bf44947ae9aef4a3ef4ca634", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-Palm]": "29be63f45293ecc791da7a060d1b57e127a1317775779ff133ee9775c5273700", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-Pirl]": "29be63f45293ecc791da7a060d1b57e127a1317775779ff133ee9775c5273700", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "29be63f45293ecc791da7a060d1b57e127a1317775779ff133ee9775c5273700", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "29be63f45293ecc791da7a060d1b57e127a1317775779ff133ee9775c5273700", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-data_1]": "1cb814d0bc8322639b15febb4b4f41b36db87a54dd55416ed87816124c445744", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "33902ee140abb3abc780680595709eba4988377943b3c64be485708fae9a5f33", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "70d06e3707bc5f8e64ecba668de80ad0b02cd2d59777c4d5eff93fc837b86574", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "29be63f45293ecc791da7a060d1b57e127a1317775779ff133ee9775c5273700", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "29be63f45293ecc791da7a060d1b57e127a1317775779ff133ee9775c5273700", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "29be63f45293ecc791da7a060d1b57e127a1317775779ff133ee9775c5273700", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "26ea5570245527eee186b46e890048c613f451fbd6bd4452ea3218ecbb2defc4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "3eb4e9da9894fe0269d2d0586f6950d2e94be3552f0b0deaed0cb13b32241fe4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "7916aefd807c5e7d0f99d1a9ad3aa82df23bf15fd86e4eec9f711deea2610e2c", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[False-wanchain]": "84d7d60855e0bff2e056cbb2b8e4bb376fc2ab44264dbbabe0c44195645d07de", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "5388761cd0eb53450b2a726dc39b7754e0c6b78171ddc4e26a4f7834dbdd4f61", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-ETC]": "6dead0a7e615fc64e206d84dbfa326b4ec0aaff1d9a4aa06d52e2500971d14b0", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "c309f7aedf3a8d13643398335f824b3e41436317336ff0e7f5f7ab00d850b0c1", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "edac26828c24040d28d5745e188cf9c7b0e29b1d95c574a9dd544a3eaea09078", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "c309f7aedf3a8d13643398335f824b3e41436317336ff0e7f5f7ab00d850b0c1", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-Palm]": "5388761cd0eb53450b2a726dc39b7754e0c6b78171ddc4e26a4f7834dbdd4f61", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-Pirl]": "5388761cd0eb53450b2a726dc39b7754e0c6b78171ddc4e26a4f7834dbdd4f61", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "5388761cd0eb53450b2a726dc39b7754e0c6b78171ddc4e26a4f7834dbdd4f61", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "5388761cd0eb53450b2a726dc39b7754e0c6b78171ddc4e26a4f7834dbdd4f61", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-data_1]": "f98419ffb557f01fc4dcca54081e6e2530958c004dc926b0add333859bf37540", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "dafb5df8c0484ae2b4e17ccdd28abcba104fcb53ff8786f39440e778d9ae9882", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "8d5f7ec3969c89d537137d2763e3d72d1b345991576dc4fb28e70cdc92bb01c9", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "5388761cd0eb53450b2a726dc39b7754e0c6b78171ddc4e26a4f7834dbdd4f61", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "5388761cd0eb53450b2a726dc39b7754e0c6b78171ddc4e26a4f7834dbdd4f61", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "5388761cd0eb53450b2a726dc39b7754e0c6b78171ddc4e26a4f7834dbdd4f61", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "26ea5570245527eee186b46e890048c613f451fbd6bd4452ea3218ecbb2defc4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "61654e678ccfb050e2ff295f06bd3672baed27a2f541ece076dd7cb601a135a4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "ee89b487955d538e2e9a43cf59ace23a4c6adbc69046c2a92ab38ad47fc783c2", +"T3T1_pt_ethereum-test_signtx.py::test_signtx[True-wanchain]": "72d667d57b818aec326e1eade998be1d6ba91f9f1c979ef7038bfe0de62d889a", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "3eb4e9da9894fe0269d2d0586f6950d2e94be3552f0b0deaed0cb13b32241fe4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "1cb814d0bc8322639b15febb4b4f41b36db87a54dd55416ed87816124c445744", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "a25197110695cfd344ca17e47e362f8e150081f68e60a0c5c0bb1284a87096ed", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "70d06e3707bc5f8e64ecba668de80ad0b02cd2d59777c4d5eff93fc837b86574", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "eb1dbdf9bfd517f41eea8fca9813933b4225f6dc2634f5a77ab9be6ecacf1d4e", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "5ff321827625be9de6a0fe91de95e817b92d02bbab8c764a5e371cc873b2aacc", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "3eb4e9da9894fe0269d2d0586f6950d2e94be3552f0b0deaed0cb13b32241fe4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "61654e678ccfb050e2ff295f06bd3672baed27a2f541ece076dd7cb601a135a4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "f98419ffb557f01fc4dcca54081e6e2530958c004dc926b0add333859bf37540", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "97f8e825b8557119079448d70766d73d768baf93646788ed6028155655cf2117", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "8d5f7ec3969c89d537137d2763e3d72d1b345991576dc4fb28e70cdc92bb01c9", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "92948165994157054acf03f904016d8b5ef0377c70ed1ee541ddf7ae1ef64f98", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "f86f6417d8af2dcfe3cc8b220b06611810dd29d0ba0252e72e29a41cfb9df0a7", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "61654e678ccfb050e2ff295f06bd3672baed27a2f541ece076dd7cb601a135a4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "b06e4b38014e26e07636569fa11e736cf439c345088249a8255b17e6f8ca99c8", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "b06e4b38014e26e07636569fa11e736cf439c345088249a8255b17e6f8ca99c8", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_fee_info": "fbe7b97531a1a06ff335360839d5c7ffc46adca1234a8d51f51185dbbf1c73c9", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "974ebc89d8530de01d5fd04008a1b78edcf9b36fa3e0adf1781e5e3b7708a350", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "ff4cf1a7a89f9c089cde3ab625da301c1af8e998fe21922d6e83a124961b4c05", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "47577146740a912be17d43ba16df22987d9457b02964212d7ca5ed168dbe68d4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "da7072ef2fe4466c575d776e7836c0da67b10fc095d744a53d12cb509c93ddc9", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "50c9e0699cfe14710ad51aad303b1eea326e09c8f4c8f27366083bed7397607d", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "faa65dbc95970debaf3c3e3e82c286aa127541da8ff021b43bd9d19bdf6809e9", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "974ebc89d8530de01d5fd04008a1b78edcf9b36fa3e0adf1781e5e3b7708a350", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "ff4cf1a7a89f9c089cde3ab625da301c1af8e998fe21922d6e83a124961b4c05", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "47577146740a912be17d43ba16df22987d9457b02964212d7ca5ed168dbe68d4", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "da7072ef2fe4466c575d776e7836c0da67b10fc095d744a53d12cb509c93ddc9", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "50c9e0699cfe14710ad51aad303b1eea326e09c8f4c8f27366083bed7397607d", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "faa65dbc95970debaf3c3e3e82c286aa127541da8ff021b43bd9d19bdf6809e9", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "2307634b2e3fd64ed59ae8aa7265b12b8ebe613a2ee9757d07821fd43954c22f", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "2307634b2e3fd64ed59ae8aa7265b12b8ebe613a2ee9757d07821fd43954c22f", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "fb6a748309ddf3a5d76690d1454c2ceff8ffe703c1c8bfac7f1395aa46b5c16e", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "fb6a748309ddf3a5d76690d1454c2ceff8ffe703c1c8bfac7f1395aa46b5c16e", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "10c4c692f88aae81f356c63151119582c3d9330881f7831efb4f4209c2c22018", +"T3T1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "10c4c692f88aae81f356c63151119582c3d9330881f7831efb4f4209c2c22018", +"T3T1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt": "01577d69992097250da88c837792543101158e671fe460d2944d0f31ff47e84a", +"T3T1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt": "5ca2e21bf461bf16010f30cdb305422b045d1558685cebc809ee8b04d8705475", +"T3T1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_misc-test_msg_getecdhsessionkey.py::test_ecdh": "ecdcd51397aa8ddf30d591cd0f1894ae031934a0bbc28130035c4ef19ab92ff3", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[128]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[129]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[16]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[17]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[1]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[20]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[21]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[256]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[257]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[32]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[33]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[3]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[4]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[512]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[513]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[5]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[64]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[65]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[8]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[9]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_signidentity.py::test_sign": "ce5c66d466e80d5ca1b6a63fd4c27233473065f597b46e7a1169bae4bdee2435", +"T3T1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "7b1351d1e5024a14f95fd209bbf7e2e15665d17f9dee0d503e464cc03dc1fad2", +"T3T1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "63a8913cb8b0c65e11b7956eaa8f0cd5172a9091e3f15860f9f30122d29389a0", +"T3T1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "e7e2fb4393263790c332b4fba91365866275c8a9c34a43dd9bac87c41204527b", +"T3T1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "a21a44625a891e59bee04e208fd3532547e0f5924183440036640393187bc290", +"T3T1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "884cb0f4b7761fddbc20ad414735409a2bf34121ff7d23e6f455f0c11b9dbb8f", +"T3T1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "bd635ec76868e76344491f04392bb1937b296d772d5f5c2c782a25574695615b", +"T3T1_pt_monero-test_getwatchkey.py::test_monero_getwatchkey": "3ae85a0550a16003815ec938a2e7ec3dbc981cdad47fc27d2912a29d66193fb5", +"T3T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "eeb5a1bd9d1ce03008ea0eea16e0a482b0a9ce32153ed93723a9686674fde0b3", +"T3T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "db8d7dd5863544cb6b1ab8f6522e367b3e9c30f5a3b471ad4ee9567c10f5d9ae", +"T3T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "27a639ca4f36d1eccc547d5083b48dc288bc690499387e632f8eeb59a76adebd", +"T3T1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_pt_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "11695d9558609863cb0f0d013d5281bb3d2fc9adf7394e702ad8fc492a3b5ed6", +"T3T1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a953c6699a75506582bd667caf4d22c2cdbda06fb76f05ec05958239ab2348de", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c56a99597812da647d0d19b3661c41986b2dd7bad468efde08995b74d3ec399e", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "5ba998a1746d6e650c051be14469388ad39399324d65910610433cd53db3b897", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "1e3806a2607baa341068ed455cd50aad6aecc33601885aa2c11178e0414a012b", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "ed15638aa6e324181a37e0ec2ec5b31c4dfeb1b926ceb0c1225048fbb81a4b42", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "a214ad790a1e16d9cca4637678c57479e3d88cd75ef7e04433628dd77c4b3132", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "cccd1da03a7bc17af8c4cf47f76b36b70c9e8378478464f397616fa726f5835b", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "88281d62551233bcb18fd7f3f634fe9ea7ec86bff9124b7474daa191ba65618c", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "a1b313acdfbaa7f11116d966d382f099038e1abbae4c4d9f5adb460f7a5127c2", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "51cd92fb1fd9e16e0f20d909f55c9dc4707776ddfff8614d9375411e375b1267", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "69a829ec4883af360f9fcf46d507dccd1fdb38cfd93612f9033ce3814a338f4c", +"T3T1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "b56fcb93d67b45cc8de51a31d45ef2c49caf87a98247b2c832342ae89b4613f5", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "cf07de9c662e9d09230f66a5009444bb59177765eb6be4f57dddb7b788ed8b4f", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c56a99597812da647d0d19b3661c41986b2dd7bad468efde08995b74d3ec399e", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "833a068f5f0a1d8fff4ee9bfbda87050d292716522c9f695944f0e32a538d342", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "b9240f68c18f0d1c50e4a2fdbd7a10851abbfa2c891faa74084de5f9a0a93155", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "747968e348a7ef4aa6e645a8b5aa3c9027d43cf5b71e689bc373ce9492129630", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b5abfb9e2c24e56971d230861b18c9cf9b85e6a3c379d334b03f844dc6ceec0c", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "45195b62b1006777731134823f8e155d66fd38154b0319132b5f41417103a876", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "3d9905258f9364bee0934bde65fb450b314869af28b042dda8dfe36ce50506f0", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "6ae69cda58bc0ca54a5d0c2faedc6709f646333b4bbbb6827a3d7ce21dbfc812", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "8545e3b2382978f87a71d72a630b738794997bab7909ed9e4b1f74549152cb6d", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9412f44411285eceec5e91849758eeee26b09991d478d570dc51005cc42743b4", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "6465a1d4e29ce078057daa55b19526b2d7a816f049e2efa2a1dac901f7e8ea0f", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "086e5cfea7dd5fc0af292bf6fddaea762afa799415fff118cd3ece2fff2b4676", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "ff5245a019482b82653b375ce727e3038277cedcffb312034ecec143dce640c5", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d88ea95931f6cec3c33fd8a30d4cf17463c0be4e7c11ef1b33d7259f00618131", +"T3T1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "22dd094ee2c9c70db43269fab854a12f23b410acde2f05709141a710c9475c23", +"T3T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fcfeb30268f0655ad81b9f76bcf715bb88cfc50e9195961bef6ca83f00b6a3b6", +"T3T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "4424da3747864fa0428179238bc8c36fb4e6108f14b3aac732818dfb06279b17", +"T3T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "d09862042ea62635db73f9bf316075031c49f4c01859910bdc04fd1e43871c85", +"T3T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "6ba674eec6f6afab6a8c3c548801d187759b44e9c1da0f543be614c86057fb6b", +"T3T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9a3f4f2cedbafb843fa01a72e1e099c601393ecbe3d10b33d12dd4c613e68eef", +"T3T1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "1a53c17662d89231730217cb67c599cd957dc6c572ba8501f289764bab8eb620", +"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3cd6436afa3f2654bcc539431916fc47448b053dbda0971669ff3d6d6e54e2a7", +"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6709b28dd4b1830edec674c40e02ea42d3f8f045b84fbc423551c0aa2552b90f", +"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "88ecec4057860daa2bc3ed1d46b2147521b26ede912dce31f9c34c4ae8f38710", +"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "42670a44af3a4ee28927c0f1445d66b28dddfca885644cfe9ab0545004d43351", +"T3T1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "845c6111dc1dd62beab04f490fc8ac9372eeaa80a08f67853bf681a93aa67fba", +"T3T1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "a45d4b866d435cf352b6616eac5b4494953bbf62e6526e0caac7deea2961711a", +"T3T1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "66da919c9dd319f747707a242892127f72b65f6651933d5c25cc716f7f5b707d", +"T3T1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "e8879c7c2dd8956b43c3126141bff7d3ff13f4474d0e92cf17b7949a12489811", +"T3T1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "fabc181763ea139a9aa1060318a62a7cbb1fc2c0a3cfd5147ee3ac6e259391ac", +"T3T1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "0cac3c153652e58e2ecff409df887aafb06dba43c7af28d8b9c0fda253ab0f4a", +"T3T1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e4622e070cd6f4abf9279b68e8be28f89085cf12c2a5217cb4eb22d6737d18ca", +"T3T1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "92d963f359934112462434ac271d29df389f134bcb660da6087ef1f3acdc7dc0", +"T3T1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "c9a2e6d297784f867ff40ac0c325f7ac7103442e30463e1114f7541070e0b21c", +"T3T1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "4713d382e0631c008e2f18148de44aa4e46003d304afe7a08d66c975ecfe2459", +"T3T1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "f8d55b5309f8a926b0966cba16a64f66aecd99106eb7ac176c5a152ceef48733", +"T3T1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "dcf18af72f68e902301bb71d5347e001166cb67cbcc27a400b65172eb16f7b52", +"T3T1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "b1468a373fbf812aca9fd98030caf7f1ab0ae519f0597accb7f8722a0c0cd219", +"T3T1_pt_ripple-test_get_address.py::test_ripple_get_address_other": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "6f310180d4b7bf61a285a31ed9e53470690fcf352176d270df8f11839d2be613", +"T3T1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "bf259cf506303f5827ad7bd29eb9f44d0c83e68c3dbf643e531286b5b505aec3", +"T3T1_pt_solana-test_address.py::test_solana_get_address[parameters0-result0]": "52e54c5ffa411a1fadd1d94ab0240fb014e17f76e17a9f337c0bba2e9a8b6881", +"T3T1_pt_solana-test_address.py::test_solana_get_address[parameters1-result1]": "0c827b90b5cf63862dfe83791a409b331fb84e05e0c842327892006780690b82", +"T3T1_pt_solana-test_address.py::test_solana_get_address[parameters2-result2]": "3a2bfebcf57ed611b893f62805c987684458697278da71a591269c563c724fd5", +"T3T1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "5bee14ff698216b1d044ca6a42009a0c942bcf7c8593f85cb7714b766cfb292d", +"T3T1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "06a2d719fac09dda654646dc7a5f3c241b4505fadcc12ea10d97cf9751e79fc6", +"T3T1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "85b3b34e3407f8a211ccd4ebd7831d54c6b4ff06301b8c4ca694674f2352f116", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "b6d372e70447d733094ad9caccfad7c25e3dc6a2539811b1b530dbeab3ca3cff", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "5eea19177e4137bea4562de709019d2e39b5aec26d512c4e8acfea9ce8ac16f9", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "2ac52f7db597ed663766b44a758a53da448915d02c3fc19882e2d8bed93d5526", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "80ec847a54bb46ce18bf10dcdf0298bbbd125b031d801470b6a04805c65eeaec", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "074f7fd2ba0a958443af12d830c234956aeb3d99daf592819d4834cbd51086b6", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "448b343b08215890a9cd6b14be03a8ddc8d95edf5d11686bba45c1ebdffae7e5", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "f3056d77e15527e54871cd27b3bb9e9125417bf01483ecaff8023e3e4519ba08", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "3825c141816eca7b79156e1a704158eb89ddfe049cf7f22c7272037099f04533", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "33af2324433d971f56a3776790d2ccd550a5b0e58767c2898fa67e1490fc4766", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "910250f4b59be8913eb94b1656da96bbb7a8dab282b5297049e9ae5331785bf0", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "90d51cd3e47f5c7dd2a79f2c72ef83c76100adfb4515372b920742ac17794316", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "24a3d2df5a6cc63a946d6e3f73c3c213517ff9eb2621ec7d8bb2350a06ab368a", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "a9bfc4e3769f77f51712dc55cfa9bad5a0f9f8cd92c18db9f77440674451a4c5", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b10eab8f8783133e1ccdd2d71f992eeea3590c953143877062a3a871e418d5dc", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "8a0b8c1ba5ecca676dfa32c1f4e9199ce3c03ec0a5f868bd0d92b0f6965820af", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "6fdde1ab88d8eee381d51f580dade6203da8c9041aa88ecfb44e87b4f1e277f7", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "e4f8d692ef1ad2c497ccaa4c18789556b82dfe834502e4761af2b29e1ad342b8", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9a34fc54c6da9dea5242a562364149841f627273c9f57bbc9bea6ee352a57e2d", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "18c428135eb262dccaa322ffa198b6f912dcf2d194edf51c702aba00115dd2f5", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "49b2d4dc0f725fe99e47b68b6cee64ac74d090e2c6bd1c9a4bb8b8d23fcc7d86", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "f66a5c80676d2cd519d6bcbeb5eccc4699252b2b63bf1611186d7a2943b7b8cb", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "f66a5c80676d2cd519d6bcbeb5eccc4699252b2b63bf1611186d7a2943b7b8cb", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "f66a5c80676d2cd519d6bcbeb5eccc4699252b2b63bf1611186d7a2943b7b8cb", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "3a7c3df5efb8833a1344a62666ed7081c4dd8a333e8acd1a62ecbb62678548dd", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "98ce08ffdfd57288c81d1d8c4576478b8161939d3e785462e0b3b45a81b013b5", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e85b9c3e0feb0db207b3c7612f2c753333adb0159d7f889132497d4e98ed066b", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "98b4a67258281dd5354b44b5f160bb7852b95bc77b235d77f4ab2c0196f7bdf6", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7ec70c042eff320dfc075ee01e1711601137e0e0716c35a54bad8a554aa2bc68", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "30e70b281f723d342302e9443c4e0bfd26fe9473552ad80ed377c7fbf15c058a", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "7de8349ae7fef7adaf7ed091d243f0a267bb85cc7a3b128803ba8df4d0a4f5a2", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "52301e5e94d8166c6930039b950f67198c27b63e9bf193e9c0a99b0e10cb167c", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "c8d33ddf77dfd655b5757f3a8e9a42b072dcb0b7c1832a1e6dde50ed8d9ae394", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "d74b69eef51010d0fd324d6da80f86e9d07e1563f029f934a768dcac8339453c", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "8053a2544d6d7434ffdf95ef58dec2d138c2d8d0b50f4641a2f6f7f7f0cc61b0", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "46a309318a321a54acddb376a67eb15ec61f76ad35b19908770db9b5f6a1f7ef", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "c1de2ef2b5f3b0b6ca8d4f2934c854772679776083ab08a94b4cca6b5164970d", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "41ba6c71631ee93b2aaa3e5e0d70133f3f491e51ac9c1dfc826e0be77059426d", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "41ba6c71631ee93b2aaa3e5e0d70133f3f491e51ac9c1dfc826e0be77059426d", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "e8ab36801805b75a6f5d72affb72863cd13e3fb41fe53640145dac1c3d3b5ef4", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "303c6e5523aeae302fe9321f409d7102da952ad88d9413e9bf56ebde58543582", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "b1155846da86254b9b5a9f7607d28e8a9d052e0e8086509d9f0afafce5853eca", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "aadeccfd0155e70863413cf3b5d4533bc207f840c6396cbf1e317e08ba1b54c7", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "f1d25f973de0921012b7ec15e42edbe744c14d14172736469b87c818a56e1d90", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "58b8b4d9df1d00f8646c22afc1e0d1fea016fe2ef29da9bbbb31e1d61eb397b1", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "5aad0d611cb32d4e5e65eeead298f79c58c6f6d05cb973d93d4f7d4dc27f2700", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "a15e7cd39c9b9d0be60ec657880982c8fbbb53f0c6a63e9aee60ed902cab7d19", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "d26c82f94796b3c95c4ab2baaf88756a57d28e4b1f67f10a80fee5274a5be8d8", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "e71f9d670d47ad75ad65f301a13d5f7a76d904c8a6de541f5370d7e9a41826f2", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "561136f1626f2a2baeb6813011b241ca2fd9786e22683f7fde7f2c2b63af1d1c", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "38847e1dfb50d67bb5b793d2010c9b3360c184ad098b8b1023b413af1d5f759c", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "11f0a6105f3300689a3d050009d78b7dedff88c3e2ad32dcef74804d04d31682", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a9500b997331855d0a64e97a55e90970ed732e83de01e2519bf378c7dfe0bb54", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[split]": "92ce41ffd4c38f6ea455f3d58ddb2ff75dd21ea3f95f49f03bb806c5678464d4", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "568ba7482b71d0a57bf113c460a0e366186f96c80bcbaaaee910490a126a1f11", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "8ff85bf88eb719a002a703cb764e0b66628eb23370cd3bf5b8286cff440b6532", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "971cab99cca8f4a81ea81eba26d987633088b3a7a47e79a8e155b00d7225ed2c", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "57a25fc6d4a5b949fe2931414c9787d6382a8535aa4adb08e7df085ee0b684be", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "1463dd2ff20e4ec07c8b202b79e2c1a22953b15508c46c844648c7fb2dd18460", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "9bb8a5a1a997d95d12ce30267fb5dec12f331fb30eefee5108d6825fa82dd7ec", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "1cbb89145b3ed8b8876f8c07ce96006b672ef20f6ba680d08cfc2d50c70d7752", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "e85b9c3e0feb0db207b3c7612f2c753333adb0159d7f889132497d4e98ed066b", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "7c368984fcbd9f73a95a60479c6b212d648431ed12184855d7d10a58209699eb", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "ca193f98256b9697839ceb09c59c74f9dcc6876d0fb80e78d24ded2094730f7c", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0165c98bb3d03c94903d205a23f28b84c5cafc37a24e03b4a05a16ffe4d9fa15", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "46f8814ca1a1708b2e58f92463531f62d36be9eb24700fbc73252983bb86d44f", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "45b57fbb01739f2fec53642a7dce28c15a6054981de08aae3fa74906cb5521ee", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "c77abae8d9aad25664b3af55349335f750414928152610e917891caff6cd8c3b", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c673afea9ac3f066b8ad11c02dcc1e5989d9424d7214deca274ff7fa406885e0", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "dc14e71d66adbcb6985223b2edfe32c1358d247206b419661c6f02a9d253e438", +"T3T1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "712d0bd63fbfe91611e4316aad6b8260ab1b3c8cda6fc4a3956f7e9c3678e759", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters0-result0]": "fd37addb58248a9901d2929c30d62a4df190f36efe9d246859a03c80ddb0949e", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters1-result1]": "921a8e27fda965b602c2054926030b1c5602559855ec95b0b27901177e8ea5b3", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters2-result2]": "5701964cf0f921fb20241d4433278be71806d14729cf52ae7e71d3d5f38928cb", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters3-result3]": "275de207610d621c43b3e5c57affbaa6616e376058fb267e5c4504e3f99a4173", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters4-result4]": "d72735451d240b6ba396bfd8c5475875a3b9f36e85b44b52d6f37defde73ee47", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters5-result5]": "ff638345cdbaad0a9a0c7c98c1b44427c78fc39727447fdfea0017e4104c0489", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters6-result6]": "062912706966369b973ff5004b66eaa6ecca128a66a86cd4388e7c7ebda9384f", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4a245ff56704713a7a67a3d742199b4d0c6c0d991874bc41ff16bd31cb299711", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters8-result8]": "8c51fd924c2c9ad895462414a22ceaeb69684b80329169e0a1822ac93c215783", +"T3T1_pt_stellar-test_stellar.py::test_get_address[parameters9-result9]": "bf364eb7883b7cc16c930b66b9b75fa1ee011f466fccf843eb6a86175cfcc3b8", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3b6e65f1895dc68fa9e50177c40cf855b6798db5ddd0060a3e1ba13c7af80d74", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "5ed2e0d508d09f4a29084544eb4bede9cc871db37e3a0e5f2d4c0d4f6d2801fb", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "b9bc14b4f3c1b91789c040790e062319fd827971a597569c50d6820f69fd67b6", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "a2bb673a7d90d85acb1d37b939480aae643a4b05620ab4f5e492195fcc39a990", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "74e79f76a849d60c867bb0ae7cc36e8781033ed6656d295749eb8b9fa413c2a0", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "27e1e84aa8b9afcd05868ea82fa584442fc1361413cc7229c2e875d0ab124f66", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "da4b679a69b2da147d13e900c05eda3f6a632410095985b564be2f05b04eb81d", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "7da1547ad4e831d986490df213208926a335013eb33f7328af2e394e28b33575", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "864549b6ccb00cb6128cf8669b1186c3f1e0117ccbb05fa3817048ce19b55354", +"T3T1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "5b52e82416437963911c6c3df704c8efcc07e0865165b7e01f6fababe1a7b2ac", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "82de53ab0497c0d1a3c6e88b0c2e0ea58cbda2d36e7a35fe98624d07aa21833b", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "6d0f6cbe236a09dc5013a744b3e38dfb4969d38e7d4a5bea42e936546ed92c64", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "32f2eeadfbd13aa3c60c588babfa57e36e787e21d2fefaf04d260e752bd92f15", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "6b45835b1d63bd5b5f4e64d8bf9e4933a174ba41631354067a36b3bab352fbef", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "527a0455ec664c36937b308119ce2835fa0b7b15ed7aa3f573798e3f001f14a7", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "ac448e04e069fd82383c58233b772b3b7fb963a6a3d195f225239284ee87b125", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "4e48d2fd692b05c1c5f572efa2b5f2f08e4455a2034810e1ae7fa7b6808f6e66", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "ef3ddb02752be16cbf18b1d89b5b4e353318a1c4b4d1b6020aaa535494637c04", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "bb5d3f1a89a76e22d90865e0052a187fe272decae81a5aa3393f6ecbdbc722f0", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "df12d998e59734fb8859bd232b2fff6ea6cbeca3a02967e7bf98919c85f52e27", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "dd8e93862e288d206bbeb7ed19925ea65d4e3ee25949d5e992e889ffedd0c4a2", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "cde2ade0e32412c20f829730f6deab50eb8527a9ed8adaeb4aa7cb86de36b8ef", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "4eae73e1159504f0e8f447a13ae8e82854ddaf4e3b7c34c56ffa754540b5a696", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "aa40da16331f8b4edae196686fb106305e59bcd0f924ea5af51a99b7a7c11a27", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "2701d09aea38d049d9d686879fa698442f811c163b13b948a0d80d528f154076", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "7255c7767a47ceffecf520f2e2894da926d4d443277e6f7996d7b2596000dad3", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "b4d7bd25b4d501b837a6692aa7c57ff6551287d7e60a367f81b97166a69d40a5", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "eafc24d1fd6b301cce0ecc94d7f6c0d81906bdab4f6dc210c7a390841ee75ca6", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "9d0a828e50c0c0fe5443478de9f29abdeb16a7583bb39c9f68085257926e37f2", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "0066c29518c93ee90730df86969f6c2c57d5b1e0491c7e0b7f2993390f4f85ac", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[memo_hash]": "14e66fe7b730e9dc496c0ce25160ca12bbb8bb1042b436e60b49bda51e775dbe", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[memo_id]": "e42e97b3ea933277f5eca9470e63f0aae6a453101d0b07780f0d2680cf9df50b", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[memo_return]": "fc77b69fd75be959906ef56c15a636e91d6d9927778116ac0a9fac165c44d95e", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[memo_text]": "395f9a5c0aa06265e2cac3c39531a104f5734a57976df4fc305e4b27439e265c", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "54b29d280a837a98d14223f7152bea047017f702bedcce10149471d6c49e53c1", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "dcc6cfba34e62ca43e6efbfceb693f897a97508e967507a6298bf6474e62127e", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "e3804b8c87ce57ada4be05764377c0b7a7e4f3fded66e476a06f56026b0d5c94", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "64189129bf7c8cc08e1c3d728245197b34531fbc84a55067266ac09501887a04", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "84f8eadb393c261605276550c824157fba24c97576374ba2c9286a77854ca557", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "b4d7bd25b4d501b837a6692aa7c57ff6551287d7e60a367f81b97166a69d40a5", +"T3T1_pt_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "d0be0c742f6305191674a012e24880ffb71d1088c81784b13af2f6fc4a9aa417", +"T3T1_pt_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "f0bfde4719cfb10a15f447df027f51bd338df017adb969acd55c1d281ea63d23", +"T3T1_pt_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "f0bfde4719cfb10a15f447df027f51bd338df017adb969acd55c1d281ea63d23", +"T3T1_pt_test_authenticate_device.py::test_authenticate_device[]": "f0bfde4719cfb10a15f447df027f51bd338df017adb969acd55c1d281ea63d23", +"T3T1_pt_test_authenticate_device.py::test_authenticate_device[hello world]": "f0bfde4719cfb10a15f447df027f51bd338df017adb969acd55c1d281ea63d23", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay": "c95550f00dd7490f667faca0712cb03d07a9b1b03efaf276ff60e6d66d772dfa", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "db6ee0420fff336ace68218ce470cdb3cde36368f5b291e811b447419c6ebcd2", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "b299007d70febc7a0cfde67127fd7717090d8f83e33aa4a8a40f5c98fae99fb4", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "48bf9b3838a7d7629948f1d90161f8469dd88024170a578b0cc5bcc256d21ed8", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "764025089d0dcc2fe9884019fe2983445b6519e262d155a6036aed73186de39b", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "1933b49f96eca513b775e3678914b1c8b2d55bb9dee580bbd1cba95b00bcbeec", +"T3T1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "7d55299a387724258fca494045ffc4a2f61fba6e97e3368ad62bb98a10fe6a2d", +"T3T1_pt_test_autolock.py::test_autolock_cancels_ui": "6094da49d122d7e1253a8cb02aebdfa35d5ba2d972c1dbfbde43f0ea43c459cf", +"T3T1_pt_test_autolock.py::test_autolock_default_value": "17e195cc8d4b21e85e13451129db610a4d75fb9daebffdf7cc19fb735658c6c0", +"T3T1_pt_test_autolock.py::test_autolock_ignores_getaddress": "8654067f17925437512d087538462e2cd0770fc743b25e69b362bc92b2b3f63a", +"T3T1_pt_test_autolock.py::test_autolock_ignores_initialize": "8654067f17925437512d087538462e2cd0770fc743b25e69b362bc92b2b3f63a", +"T3T1_pt_test_basic.py::test_capabilities": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_basic.py::test_device_id_different": "9ad2278757f1695899d1c1232b84092fe07990e341e2fadfdbc0c64d19f8b607", +"T3T1_pt_test_basic.py::test_device_id_same": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_basic.py::test_features": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_basic.py::test_ping": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_busy_state.py::test_busy_expiry": "bf85e4f70ccb946fb49dd1f5d92c9d61157384a5dc6315abc5dc21b93be39760", +"T3T1_pt_test_busy_state.py::test_busy_state": "8fb50df9c6b7ab0d7e6b77c3c305ab2c00cb40d31f8d378b799cfb010141fc04", +"T3T1_pt_test_cancel.py::test_cancel_message_via_cancel[message0]": "775b95f3c3903653432d220002a0db31a76d98f76c7c482cf72436f13a01f0bd", +"T3T1_pt_test_cancel.py::test_cancel_message_via_cancel[message1]": "879491d0ed54375b48cd058ab8407b80d900c47f59693533c6c909ac7e4fe95f", +"T3T1_pt_test_cancel.py::test_cancel_message_via_initialize[message0]": "775b95f3c3903653432d220002a0db31a76d98f76c7c482cf72436f13a01f0bd", +"T3T1_pt_test_cancel.py::test_cancel_message_via_initialize[message1]": "879491d0ed54375b48cd058ab8407b80d900c47f59693533c6c909ac7e4fe95f", +"T3T1_pt_test_cancel.py::test_cancel_on_paginated": "c70a3d4c1700977175d076069e5d28fb995bf832b0e258f63699f036e516605f", +"T3T1_pt_test_debuglink.py::test_softlock_instability": "20fef4f0ac16a81e48f9dc97ccf052078f375a098f04432ca453e5ad06700dc1", +"T3T1_pt_test_firmware_hash.py::test_firmware_hash_emu": "61d96654482057bcc08d947607416e5e922f2fee1c42fde2b195b30279ca22b0", +"T3T1_pt_test_firmware_hash.py::test_firmware_hash_hw": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_language.py::test_error_invalid_data_hash": "1b5d4930b4a33b22b9f7d7d6029e7cbc350089078581e83e174fa37896c4c62b", +"T3T1_pt_test_language.py::test_error_invalid_data_length": "671528137de993e77b1cbef5b9ea0e9c83ebde568057e5ebee4b869a6338f3ea", +"T3T1_pt_test_language.py::test_error_invalid_header_magic": "671528137de993e77b1cbef5b9ea0e9c83ebde568057e5ebee4b869a6338f3ea", +"T3T1_pt_test_language.py::test_error_invalid_signature": "671528137de993e77b1cbef5b9ea0e9c83ebde568057e5ebee4b869a6338f3ea", +"T3T1_pt_test_language.py::test_error_too_long": "671528137de993e77b1cbef5b9ea0e9c83ebde568057e5ebee4b869a6338f3ea", +"T3T1_pt_test_language.py::test_error_version_mismatch": "671528137de993e77b1cbef5b9ea0e9c83ebde568057e5ebee4b869a6338f3ea", +"T3T1_pt_test_language.py::test_full_language_change[cs]": "96b1f8611d7e59f70d4cec1eb10e7b9ce096a07189d0482264db9dd4a6c75e52", +"T3T1_pt_test_language.py::test_full_language_change[de]": "cc9b69b7d1617199ef20f7348ecfc8f1bd8182c54b0ac2a4c03ef08a9b6811f9", +"T3T1_pt_test_language.py::test_full_language_change[en]": "3082d4f0a8402fba278abbe4392a0ed6cf4def04630e1de9cc215a41c082d921", +"T3T1_pt_test_language.py::test_full_language_change[es]": "03e3fc5f2737605167e2e2e1ac9ec0d55175db4c16ea9c25e155610ab13f6e7a", +"T3T1_pt_test_language.py::test_full_language_change[fr]": "a88d4ae84aded6111b5e8b614629f41387f4fb25d1b013a357a106567eebfe5a", +"T3T1_pt_test_language.py::test_full_language_change[it]": "73e17b50ae1a4aca79bed0f61e620be3fda95bc95f27218b92ed35af8833491e", +"T3T1_pt_test_language.py::test_full_language_change[pt]": "bf150110c28c18acca80f991f7bd244aeafcc3a248df61665e571d6f2a125a96", +"T3T1_pt_test_language.py::test_full_language_change[tr]": "f61635e95805cd3a5ee8b5a16fc188d2b4a09bb3e0d018271a9b1e1b3e2d0ddc", +"T3T1_pt_test_language.py::test_header_trailing_data": "416e9fb7416dcaab033b2cf747a18caab9c86ab4e141c77b7e6a6702b872baeb", +"T3T1_pt_test_language.py::test_language_is_removed_after_wipe": "213568f63c9a9c279bbe182eb21f4cac3774680c91ef502be13e7ebe052ed469", +"T3T1_pt_test_language.py::test_reject_update": "290da10eb319091204f66d7599bbeceef15d03514bb7f66e6f9777279c273861", +"T3T1_pt_test_language.py::test_silent_first_install[False-False]": "0484f56a249e57343aa4d743d0cb0b492adfc69920c663be8f609a19259b53f9", +"T3T1_pt_test_language.py::test_silent_first_install[None-False]": "0484f56a249e57343aa4d743d0cb0b492adfc69920c663be8f609a19259b53f9", +"T3T1_pt_test_language.py::test_silent_first_install[True-True]": "b0c530495aabd24908ddceaf482248c9643dedc9e5263293ece43cae6fc8a54f", +"T3T1_pt_test_language.py::test_switch_from_english[None]": "7a6c35b301584a16cce5e78d33723abc567aea9c2b5c05044ad2317d7fa56d42", +"T3T1_pt_test_language.py::test_switch_from_english[True]": "7a6c35b301584a16cce5e78d33723abc567aea9c2b5c05044ad2317d7fa56d42", +"T3T1_pt_test_language.py::test_switch_from_english_not_silent": "b8ffcd64b901b3f454e5a8fe798790d1f5ab351caa64164f83d2447dea618e85", +"T3T1_pt_test_language.py::test_switch_language": "70d3b60195bd08517b3b2e11db2394127c780b9a8b99b60f80e2f72582ec7c7b", +"T3T1_pt_test_language.py::test_translations_renders_on_screen": "d3de51e035ce7c7373415cfe28d1d2232951ea45b57923497d47519007d5e2ce", +"T3T1_pt_test_msg_applysettings.py::test_apply_homescreen_jpeg": "5cdba3cd01dbc5bedcd85541e5f96d3461a70189a7023104915278a5621cc09d", +"T3T1_pt_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_msg_applysettings.py::test_apply_homescreen_toif": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_msg_applysettings.py::test_apply_settings": "10c27d4d571a6de2d4d8cc7adc000eb8bebe25ecb845d02769d805687d55fb6b", +"T3T1_pt_test_msg_applysettings.py::test_apply_settings_passphrase": "f2b6a3adc863706490298d4634c829ff98eb5e8574c55b4767e7733f2c21f274", +"T3T1_pt_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "a8642eeadbd6552a17c7f71dd2ab39cbcaa0b6647078b5990957d1ac8dd190a2", +"T3T1_pt_test_msg_applysettings.py::test_apply_settings_rotation": "16bc56d637f56151f6c04303d0d02c129900e320c3b41fc96a10c803b434a117", +"T3T1_pt_test_msg_applysettings.py::test_experimental_features": "793f3ebd7cbaf196ce8248345ae85125d8b4f22ad3ea29bce66ad8ca5a126c51", +"T3T1_pt_test_msg_applysettings.py::test_label_too_long": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_msg_applysettings.py::test_safety_checks": "5657f3faf53dbacce9329936222f6c2ac9806b0fc6ce53a15e3754e4b2ad52a2", +"T3T1_pt_test_msg_backup_device.py::test_backup_bip39": "6fd75c56c9cbc3b0de12ef4ce012b533013edca0be00857c578d7b5281812fcc", +"T3T1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "d19a3743026e315b3671475ff58a26c4cf38f51a7dfaaa9b58f621a9021315e1", +"T3T1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "aa4808982df3848ce76916b89f9c688dea452ddd56f41686aa435fc3acbc16ef", +"T3T1_pt_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "507577e334f9ef03bab133c4ade82f7380aef68a9e4a242290ccc5ace5e53ae3", +"T3T1_pt_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "b62ee47d2e884902c750654d55004c69bc13279c98b0347fb1c0b0de13d4c65c", +"T3T1_pt_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "5024d7c371ef9b76df652c3f3738795959ba74e5eaf163a99e6712640328dd95", +"T3T1_pt_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "e59bb781c6a70686761948095c0c2d8bfde7b16680dc4641634017b15ccff448", +"T3T1_pt_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "3a1c7c09b5307fd0209eefb36dac94ec8574c5c4fa96871bebdffb31ac1e4bcc", +"T3T1_pt_test_msg_backup_device.py::test_interrupt_backup_fails": "d3f1b54e1f873d69fa59a6ed0640417135dcf45e0566feac6c9ca671dd706d9d", +"T3T1_pt_test_msg_backup_device.py::test_no_backup_fails": "23821338c9fc81392daf75d04d04a5c4a6da74905e0a5748625a3c46ed2f1d73", +"T3T1_pt_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "9bb11be1eddf325d47992416b0b1182b89ff6baf03c6435753838dcad8fa179d", +"T3T1_pt_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "d26290a07ea18e3b021fac2a496775db71fe4830c8142f940e85a7ace88d49c6", +"T3T1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "8b99cd304b6244dba94a0a01d668f69f38fdd78b67efd6edaac449f956b503f9", +"T3T1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "210442af5d100aa2b5475a16a088bcb7ebac5967b0472a34e2fd04031de3327b", +"T3T1_pt_test_msg_changepin_t2.py::test_change_failed": "a9ad37d6d06760e1004f7bd1fea6a59e89411cf8c778ce77087138ad34bc3f17", +"T3T1_pt_test_msg_changepin_t2.py::test_change_invalid_current": "b20dc23fefbd7a0239318ce078cc19f73e586fbc6027fcdc23f157883a951810", +"T3T1_pt_test_msg_changepin_t2.py::test_change_pin": "a246de101af19d59571d2e0898f596d0587dd539adc9d44cb7d1604405f39c76", +"T3T1_pt_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "374c30048d6be5bfb89a0c0d793109882f2809c58db76d8111f9a52ff5011382", +"T3T1_pt_test_msg_changepin_t2.py::test_remove_pin": "0f8b3fd62fc0c3fea2ae4a49d87bffa1f35603ed903e2c6cb974c49cc45b92a3", +"T3T1_pt_test_msg_changepin_t2.py::test_set_failed": "197eba8b7161ede13e8ed44342acd0de67502fce520a2bf926d2f5988930b896", +"T3T1_pt_test_msg_changepin_t2.py::test_set_pin": "fb33e87fe780d575e1c44a388ab196c93f36222bfd0d1792afdd1748c7aeb335", +"T3T1_pt_test_msg_loaddevice.py::test_load_device_1": "c6255fd2e0a61d290b3817fa8a1b439a35852986b572ed77ad0a1f2ec309f809", +"T3T1_pt_test_msg_loaddevice.py::test_load_device_2": "f65efe4b51b2368a33db7f592f31e0450a43bd24b638364eaf29610fbd278c25", +"T3T1_pt_test_msg_loaddevice.py::test_load_device_slip39_advanced": "c6255fd2e0a61d290b3817fa8a1b439a35852986b572ed77ad0a1f2ec309f809", +"T3T1_pt_test_msg_loaddevice.py::test_load_device_slip39_basic": "c6255fd2e0a61d290b3817fa8a1b439a35852986b572ed77ad0a1f2ec309f809", +"T3T1_pt_test_msg_loaddevice.py::test_load_device_utf": "260e38a8a600bfeb81a3540b2d1b4dcaf9d40c1c181517a2f8ed59ae29a6fe8b", +"T3T1_pt_test_msg_ping.py::test_ping": "775b95f3c3903653432d220002a0db31a76d98f76c7c482cf72436f13a01f0bd", +"T3T1_pt_test_msg_sd_protect.py::test_enable_disable": "5461dc61f4dd03219667eba7a45d471299646e83d502e6ed67f5f24cd9d94500", +"T3T1_pt_test_msg_sd_protect.py::test_refresh": "da1357a4d08d6b9350d74f47e474c52768bd7ed550bc0f6e3768321ecef62998", +"T3T1_pt_test_msg_sd_protect.py::test_wipe": "1782156274562e3abd9cef658dc484019b254a6d136d974c45c3421f78ad8f56", +"T3T1_pt_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "4196d33a0b968e7d2b518e8a1fe2af5c400b27cc6b73ea7419c9f4e6b97b8534", +"T3T1_pt_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "1b6b13e2bbbb1f2dcc45e0aaa86973e811393eb1d30c55f6d8cad4786ab6f35e", +"T3T1_pt_test_msg_wipedevice.py::test_autolock_not_retained": "10f7f1ef3ecafe6fa16fc7f8ad0053a4b310c3c28fa089682e8b3e3222e63e7d", +"T3T1_pt_test_msg_wipedevice.py::test_wipe_device": "9ad2278757f1695899d1c1232b84092fe07990e341e2fadfdbc0c64d19f8b607", +"T3T1_pt_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "7919fa0b77004350aab32aae37e23d9eae661ba009cc2da2ecfe9251bfb5cb92", +"T3T1_pt_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "7919fa0b77004350aab32aae37e23d9eae661ba009cc2da2ecfe9251bfb5cb92", +"T3T1_pt_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "e14ff2cad21402a4a601f726988d665a9b1d6d3cbbb028ae8d1274fec00f9e11", +"T3T1_pt_test_passphrase_slip39_basic.py::test_2of5_passphrase": "e14ff2cad21402a4a601f726988d665a9b1d6d3cbbb028ae8d1274fec00f9e11", +"T3T1_pt_test_passphrase_slip39_basic.py::test_3of6_passphrase": "e14ff2cad21402a4a601f726988d665a9b1d6d3cbbb028ae8d1274fec00f9e11", +"T3T1_pt_test_pin.py::test_correct_pin": "e9d6c9a5eeb71ab8bef0ac62e36c90b72a2a37b164208c47148dac1f1ba5325c", +"T3T1_pt_test_pin.py::test_exponential_backoff_t2": "7c1242be82ba7eb1b46fbd3d089eab70dc00a65346a87fb6194dc60c6dbc4438", +"T3T1_pt_test_pin.py::test_incorrect_pin_t2": "c4eaa9f837064bccb0d9b547d2db67b7e67f15fe811a7bde33fd42fa74df8046", +"T3T1_pt_test_pin.py::test_no_protection": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_protection_levels.py::test_apply_settings": "a76d32b056df06462db7744192117440bae139ddfed1c591d8f925a99e090f58", +"T3T1_pt_test_protection_levels.py::test_change_pin_t2": "e14f820ee85afd50e99fa5705273db18f4c32026fcf614815dcfb0c4356807a2", +"T3T1_pt_test_protection_levels.py::test_get_address": "e4bdba485b89008518360c1c9016a252cde7ffc56a2c519f91170c9fbd94f16d", +"T3T1_pt_test_protection_levels.py::test_get_entropy": "5bfd7f052f5133ba1445ffe9f6e776ad6e0160ad01a636c28a29590e3e2147a1", +"T3T1_pt_test_protection_levels.py::test_get_public_key": "e4bdba485b89008518360c1c9016a252cde7ffc56a2c519f91170c9fbd94f16d", +"T3T1_pt_test_protection_levels.py::test_initialize": "b848c8aa081e1ad565637f5d26ac084936a9a54fb605e50d307788647d642821", +"T3T1_pt_test_protection_levels.py::test_passphrase_cached": "a5f996d89414b0d36086f08e0ad5a393a358e4b06d653f43ed9ff2a93edf25a6", +"T3T1_pt_test_protection_levels.py::test_passphrase_reporting[False]": "c197b15e45340f9407a7eed2cd0061f6db7498d8d69bfec1115ff3709c07168e", +"T3T1_pt_test_protection_levels.py::test_passphrase_reporting[True]": "f3b82fb4554a6b02899b280ba54ff6d40ca053af854fea37bafa8331f72199cd", +"T3T1_pt_test_protection_levels.py::test_ping": "775b95f3c3903653432d220002a0db31a76d98f76c7c482cf72436f13a01f0bd", +"T3T1_pt_test_protection_levels.py::test_sign_message": "62b10fc86c444c154970e23e2ed39cd46c7cec8ccfb42fba8b9a026cd0463888", +"T3T1_pt_test_protection_levels.py::test_signtx": "fffeab290bfe46b1150a337cb34d99b9fbb85ff1dedc57f6fbec9d4c0366b597", +"T3T1_pt_test_protection_levels.py::test_unlocked": "caa44f27d829aad818b1ab947f8f8662175a47f096c1af32c7b92e0075f75d79", +"T3T1_pt_test_protection_levels.py::test_verify_message_t2": "1aeb573fdda7260c440f78e554d9dd0d565398942489db84d79d4e7b197278c3", +"T3T1_pt_test_protection_levels.py::test_wipe_device": "88fdf3eaba8b956864ecd38a948a60833921659f37fdd462c774be464c507d0f", +"T3T1_pt_test_repeated_backup.py::test_repeated_backup": "b37b0634feb544b4bbce88e64d2e6df82318516d30b23f6384f8b18400cc5f43", +"T3T1_pt_test_repeated_backup.py::test_repeated_backup_cancel": "998276bacc55728fc102ad178b98aaeb96aee854cddd858fbd8e5a28fb172174", +"T3T1_pt_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "00fb2b4962e9c48bb053b2b9b5cc15c25cceeeadc1d06e4b5a1183dee2d16664", +"T3T1_pt_test_repeated_backup.py::test_repeated_backup_upgrade_single": "c6e876a3145c513be2036f48c1a8fa839d2a51f2886012c18aad4a79db04d01b", +"T3T1_pt_test_sdcard.py::test_sd_format": "33a731f6b893e3388e118095d2acb34979386f2d236365be1da90c81509e4495", +"T3T1_pt_test_sdcard.py::test_sd_no_format": "55b2bcf201a55edb38e4bffa5e2bc0b97ff3766417c0c6260d0238dcb2bd4f64", +"T3T1_pt_test_sdcard.py::test_sd_protect_unlock": "618a7222f4baf6adb9c967d1f85a1024c9cd6d5c79d5f9ac9ec790c77e33f922", +"T3T1_pt_test_session.py::test_cannot_resume_ended_session": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_session.py::test_clear_session": "08d6bc861b68744679e31d5d0abc041f95396cf9814fe0c5fba514e8908c5750", +"T3T1_pt_test_session.py::test_derive_cardano_empty_session": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_session.py::test_derive_cardano_running_session": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_session.py::test_end_session": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_session.py::test_end_session_only_current": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_session.py::test_session_recycling": "e14ff2cad21402a4a601f726988d665a9b1d6d3cbbb028ae8d1274fec00f9e11", +"T3T1_pt_test_session_id_and_passphrase.py::test_cardano_passphrase": "ac72e26e129ac32189a6d51c6ea0e6ae4b587f0e1794fdb75860c9d223092974", +"T3T1_pt_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "9f33df039a32e13f8fb38c22d6a4aff05f95ebd00419c4116bfe5020df95831b", +"T3T1_pt_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6e5443272d865af8f928236cfbd4998207bd0d3474ac7587c8123d5438f48625", +"T3T1_pt_test_session_id_and_passphrase.py::test_multiple_passphrases": "98564a832f3e20ba81349137a44bc328211e1f96c6ae02facfbe3d126e4785e0", +"T3T1_pt_test_session_id_and_passphrase.py::test_multiple_sessions": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "a31f83fbfe8b45f848ffa9542f48a0f8ccb71d88acc10a3bbc30ee8097cbb365", +"T3T1_pt_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "1387ba59bc128d71f34659337b9188024d95af5b989715fd42fbd87876af9ba1", +"T3T1_pt_test_session_id_and_passphrase.py::test_passphrase_length": "c97e31047f4e6a50517a67338d2b013345bbd87868aa919bd2bd2e1ae415cdf9", +"T3T1_pt_test_session_id_and_passphrase.py::test_passphrase_missing": "a5f996d89414b0d36086f08e0ad5a393a358e4b06d653f43ed9ff2a93edf25a6", +"T3T1_pt_test_session_id_and_passphrase.py::test_passphrase_on_device": "d5f6694c8be9b5405b32520cfbf70623cc47cfbf612d8f89e7c85ba290013783", +"T3T1_pt_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0511280ca6dcc36d6f16d544809a5ba2bb065404492cf74633f91169e7c05768", +"T3T1_pt_test_session_id_and_passphrase.py::test_session_with_passphrase": "3cc7e7b9402566aab0ef2fe5b1a78c7065b47fda81ebc6c291461e104f8a7824", +"T3T1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "abb68f57fc895d493908109580096589384e99d2cd5908c9d30cd5f2c86e99af", +"T3T1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "5e6bc9013f8f19041e3c00f38e09f7d899092e2a2e0d2999fc7fd4aa88231a5a", +"T3T1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "4c663300334da63b1be6767ec0622aefe7f9a95ebb798d856967777770e32da2", +"T3T1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "3dfa1a3349bdc8d77c13308b621a15ea1438a1337ba38352079efb5f6df74d8c", +"T3T1_pt_tezos-test_getpublickey.py::test_tezos_get_public_key": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "629cd538e17713a6c728028c42e89dd691b971326759359d22a92441c81ad0d5", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "ce70603f736c86261dbf2064016c20ff7682b7ce6310a6ecefec4c0f4b5b0232", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "c5f2e01205425c7c50c65994068eb46c9ef8350bc7ad2748c7dc7d6b6bf1eaaa", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "dc76bda90faa3f37c172f0ef2d4a5b7043ff339e6dffb9f44fe358e312b76740", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "200360617d4adc09cdefdd14ecbc4a7d1bfd13a18004d83a0943bac8ce145b04", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "54eb30032a0128eb3a490c53b6d6c5bdc0f5e067a11bc171afa55cd585e71071", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a2d75e3c22b01ec35248cdb52a168754c8d32197e547d11318852561d2acb367", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "67783b93b4c3b30c09d220337572caad47067fd2079fb35a5280558e6f84a663", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "3b16c61b3f02837aba9bdff53c9a572c08ecf16635e82bfc335d3f0f5faf6bc7", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "aebddbd4920a5a7868dbb8d7fb106db8e4f450526c9124d829d4cfec848212e7", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e1a682ecadf3b6e95ce52c30c0e00e973c4df64dba13f54714d52ae9e0b3f595", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "664de896e355bdfa39dd1300a42204106c3dc78b53490815e7bb2504b8951b3c", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e5dce067904432efcb3f5ae3abde746e12a61ae6d2f4439a686f376d99119275", +"T3T1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "cf63db5cf5dc76647300bf65bd25b86453d86fcc34b0765824049ba3f3a3bf1b", +"T3T1_pt_webauthn-test_msg_webauthn.py::test_add_remove": "cc086fefc35855df590df48ad2fec94ee40fda57c639be38cc6715101507a619", +"T3T1_pt_webauthn-test_u2f_counter.py::test_u2f_counter": "471e4a15b732d3c4a836cbfa3e996c12ae8e8940dafb2f6907a99f4d7bba8ebf", +"T3T1_pt_zcash-test_sign_tx.py::test_external_presigned": "714fb1cae5c1178cb1cf319f80035463e439d2fbd211cc0d3fcc762f29dbb178", +"T3T1_pt_zcash-test_sign_tx.py::test_one_two": "04c7fdb6ba3d2b9dbaa92d29b491aa91711b89bcba410c2b5b53bfaf952520b4", +"T3T1_pt_zcash-test_sign_tx.py::test_refuse_replacement_tx": "1f526047338eb060fae8f4155a741a4aa853f8438b3b63164c6f195c639656cd", +"T3T1_pt_zcash-test_sign_tx.py::test_send_to_multisig": "595f89383bade471d6e6528b4d58a241503e352e734211f6526b1978329989cb", +"T3T1_pt_zcash-test_sign_tx.py::test_spend_multisig": "3cce2117324c94c27989e89db188bd0313b93942692dc6524ff641475c008016", +"T3T1_pt_zcash-test_sign_tx.py::test_spend_v4_input": "abe53ec022a5d907a25fbd7725d76a78eae0c31663576ec797af085e9e2f3958", +"T3T1_pt_zcash-test_sign_tx.py::test_spend_v5_input": "a262f9c338be8d1f2d7a42d8d6c9b51485d71b3001879c78b13ee0b22c84da72", +"T3T1_pt_zcash-test_sign_tx.py::test_unified_address": "0056f9614ad70d1c3eb779d373b7d14f5cc57d3b0da548645efbaee0d5a500a7", +"T3T1_pt_zcash-test_sign_tx.py::test_version_group_id_missing": "708b1d45065e8456dc4d87f675b4014305d7e197b88b33485c30c10523577104", +"T3T1_tr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "1186082c28bfc24d8f2ebf50266aeaba06d1be26a54ae9cda106c40d8c954a58", +"T3T1_tr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "672f0f78f3408a3d1e8bdf65bf542bfac85e215e0ec40c9780ea97dfbe9f74f3", +"T3T1_tr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "b298371eea92503d1032172bdc7bff262af52f74cd33fd9d8c08da798a86428b", +"T3T1_tr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "d2910ba0eebfe2749c4a20a76c7d0209a50c9039abf99971fb0b6e05e7e9a5ee", +"T3T1_tr_binance-test_get_public_key.py::test_binance_get_public_key": "811103bdb6d2f23b468b64acda29ed2f55c6bc8e277ed746db27970d713297ce", +"T3T1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "d6baed9c953f9ab5692c435fed152a4f7d6828eed5e9623abde0bb01f5c40e21", +"T3T1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "968af216c95c5c9f1ebd015a977439090464cba59c8506a7e313f25cf68e072b", +"T3T1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "eeb0ba85c5e36543007d927451ad861657e6bc5aec2139b6499d852312019735", +"T3T1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "d6baed9c953f9ab5692c435fed152a4f7d6828eed5e9623abde0bb01f5c40e21", +"T3T1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "968af216c95c5c9f1ebd015a977439090464cba59c8506a7e313f25cf68e072b", +"T3T1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "eeb0ba85c5e36543007d927451ad861657e6bc5aec2139b6499d852312019735", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "f3c467ce414be25e25cf39ffe8e5bf02338bad8ea9b527a7904a80247872e82e", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_get_address": "365e470e9f5c9c19726ecfbdc0f554507d45455942842d45af9648dbe1d444de", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "df74c5b2e45322c0bd43c796b600eb058383f47d503a33db5e0121fc9b61e3b3", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5f7031cb0b5ea586b1bd9578e05ceea1948a2f1fc412258d494bb7f34f99cd1f", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "3543a8c4eb1f78a33db661e7d40e30ddda85002a2772335ca226c994ed97499d", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "3543a8c4eb1f78a33db661e7d40e30ddda85002a2772335ca226c994ed97499d", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "93d766212d86bb87d51d963743302434ea7768942b52fedb945b80029b0893d4", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f366e0719843bdf8f16ec63fb647e6ccac559b9f147a4090f9dc7d35eb4df0da", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "f1a79c829b7b226a226712d5058eacfc72e5cfe1c534805500f851089f5992e2", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "c85bceced06bb038c31c185d1e6f048e570bd5cfc7efebe552f84b4f8ca98e8f", +"T3T1_tr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "c85bceced06bb038c31c185d1e6f048e570bd5cfc7efebe552f84b4f8ca98e8f", +"T3T1_tr_bitcoin-test_bcash.py::test_attack_change_input": "589d96e57ae495a563ad79a6d85e815585f6801875c8201edd8cc381b52df3e4", +"T3T1_tr_bitcoin-test_bcash.py::test_send_bch_change": "589d96e57ae495a563ad79a6d85e815585f6801875c8201edd8cc381b52df3e4", +"T3T1_tr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "474710cfeae9ead4a3c28d75cb3f7feb0601e4d682cad9b0e59f6e175fc04dbd", +"T3T1_tr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "babd93766c0edc1a773c738feaf8b8d6236072c233be3058ec195bab1c044e86", +"T3T1_tr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "048d9b9e19d282d55c54e96adc7911088f6b838a1b2863251cd06e21a14f4407", +"T3T1_tr_bitcoin-test_bcash.py::test_send_bch_nochange": "99cb3530abbcbafb6e4658a1482545818f879420f2fc4b098e7452d2eb219ed1", +"T3T1_tr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "2115cf23a4616792b2c0386aa37c691141c2d96be71ed80633c839a50fcc0caa", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "ba4a6f87005c2a85f3e3dbb492df75b5b0573c5b931753ebdce99d690a2ace3c", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "97cfcfd82c714f6450eded1671351c28cd223409a865f2f23f11e8dce67b360e", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "386144a90faead0512edf0c729b9f2ebc25d421b0543da10144bfc3bb13c7441", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "342c53d33fd1f700ee2a5950ccec923264b2b58654bfb398c3556ba354b04920", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "18e225596f0bc70c2665dffc837a06684f42cd554dd14b3e737d4f4e13f3bb16", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d3662d52c75630352e68febabea30de64f42431d3b6a611b7e33ec6916e144b0", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "bc4afc2b918ea205c560b60739ddbfbd19a9a77c8ccf8afb85e0cf977ea05f88", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "c80cedcce4734175922a848a02445815a86d5a796ca88422b67d1b054cc90615", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c93f6d69bcbfe5c921a056e7b566fc9cfe3704b49f038330569e7343ae314789", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "6ddfc313470d5491575ee9aa630c5f861549af4f02dbf695261e82a44a638a7d", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "db30893a9f6cb980708af5d8ee52b75ac1bd55d0c5ebca10944a7bf1254fb13f", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "0ed9593073b90dfefe845228abef5d6fe81ac9884c1d14a0d7ecf512490684e3", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0d437064e79d88ac6d39e361a8e71b206ce165faf073379659210a69c2c5a1c7", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "f4007f23cc668bcd93d3cc13fc29b77ec183470fe6c2621700b7911571476ec0", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ff4d470b71c84d7d9d21202eabe6d4e8ad244f432fceae27d3ee624042658cfb", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "74b20363db56553ee5a5b0e0d3a7bb427cf0a532276533bef0bb148de567c937", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "22642b8603204459da863b689a40e24b14b00b5403ebed8c38acd39215338826", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "bfe4e9fb94ea159866e8579fe34d8ca009d25818937112443b89f8830ea75489", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "ba4a6f87005c2a85f3e3dbb492df75b5b0573c5b931753ebdce99d690a2ace3c", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "97cfcfd82c714f6450eded1671351c28cd223409a865f2f23f11e8dce67b360e", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "386144a90faead0512edf0c729b9f2ebc25d421b0543da10144bfc3bb13c7441", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "342c53d33fd1f700ee2a5950ccec923264b2b58654bfb398c3556ba354b04920", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "18e225596f0bc70c2665dffc837a06684f42cd554dd14b3e737d4f4e13f3bb16", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d3662d52c75630352e68febabea30de64f42431d3b6a611b7e33ec6916e144b0", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "bc4afc2b918ea205c560b60739ddbfbd19a9a77c8ccf8afb85e0cf977ea05f88", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "c80cedcce4734175922a848a02445815a86d5a796ca88422b67d1b054cc90615", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c93f6d69bcbfe5c921a056e7b566fc9cfe3704b49f038330569e7343ae314789", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "6ddfc313470d5491575ee9aa630c5f861549af4f02dbf695261e82a44a638a7d", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "db30893a9f6cb980708af5d8ee52b75ac1bd55d0c5ebca10944a7bf1254fb13f", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "0ed9593073b90dfefe845228abef5d6fe81ac9884c1d14a0d7ecf512490684e3", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0d437064e79d88ac6d39e361a8e71b206ce165faf073379659210a69c2c5a1c7", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "f4007f23cc668bcd93d3cc13fc29b77ec183470fe6c2621700b7911571476ec0", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ff4d470b71c84d7d9d21202eabe6d4e8ad244f432fceae27d3ee624042658cfb", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "74b20363db56553ee5a5b0e0d3a7bb427cf0a532276533bef0bb148de567c937", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "22642b8603204459da863b689a40e24b14b00b5403ebed8c38acd39215338826", +"T3T1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "bfe4e9fb94ea159866e8579fe34d8ca009d25818937112443b89f8830ea75489", +"T3T1_tr_bitcoin-test_firo.py::test_spend_lelantus": "c015c835136c41945ebf995f98541ece68de3f0ae2a81fe884278c09344235d9", +"T3T1_tr_bitcoin-test_fujicoin.py::test_send_p2tr": "911e813349001beba6671f15540716db21fc7c9ceda497233db63dd8f55c76e8", +"T3T1_tr_bitcoin-test_getaddress.py::test_address_mac": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_bch": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_bch_multisig": "3109d24b8170f458b7d2ce4b77c2dbd923aa1b9dd806d0a0aae2fd30e80db9c1", +"T3T1_tr_bitcoin-test_getaddress.py::test_btc": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_crw": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_elements": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_grs": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_invalid_path": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_ltc": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_multisig": "5c36e6bbb2e5d6bfdb6c54e6f7d31cbac973d25b24fb79a5b1a8153b7a515270", +"T3T1_tr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "e78c7a448dde071435d77780b77a3ea161fa6a073344ed09814693cc47e2d3d9", +"T3T1_tr_bitcoin-test_getaddress.py::test_public_ckd": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_tbtc": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_tgrs": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress.py::test_unknown_path": "8d5ae69ae5ebcae0d3b5430553161fbc7134832a4e9bb00f4f573f3f394f2cd3", +"T3T1_tr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "4bf76b23b0459c11327f2059ef7da4d667b9115836dced3fec4715ad525cfcc5", +"T3T1_tr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "1518d43df05e372c3412c95e5d3a6d03077ae4281e1a073d05a59559701582d1", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "7b464e0f71dacab7f1a218960c1ddb7b8315cd7f442c3c807b8374e7ae9227dd", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "f1b4f4e297e5102d53735fb1aa2d9615f4cb089c62fd8622865dea646a0c25f0", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "2c4553cd693b1b788d6da43ac439cdf197d140ffe5db69d42bd9def25683129a", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "7b98cc87cc15107220f7af1ebfb0060c66290a490cbc463a3ee8a229b3886802", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "8f74f84a91743fdc657df8568ddb3a19f948dd3e77e68467858f6150562b19b4", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "61fbb3481fab4cc6c08d4e824b4e089b40de30e8e022b821a24612e0f796d512", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "8c08071b170b4ecdd63ef076ec3a8c82aa7c21f070f70727ef509404e36787c4", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "8df141d2dd0bf67736299a5b6b6ec1ec3921e3b9c81dc15d4478bc83df770e60", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "5fa6aa6305475b40808b8c3e56a4bae1ab2cc19e515e4f03cd07812b71ac2d04", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "30edf32304ac1ef5e5ecbce0668ddbeb3689b8b47bb76343eccbde9c1f5cf110", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "0b3bfc4336f3b039242c0c588bda1aec5ea69b5d77ad8975f3f4cc9c278cfe43", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "b878f5ea8fc6fcb614ba44e21596dbfc5d88801599abc257ec28127ef7da763b", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "154b8245be7d64644ccd0b023a263c52403abd10f92e325f60f2f6d41c988ce8", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "b9490a9b967098276d3b0d313d8458361c77d9f56dfb546d181661ba9f02c0dc", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "19f4aa663672ab73bc19c7ca79cb6da8a55331b69110fbe370dd3bcd90cdd230", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "1b295ee9e240b9f1721897ffb3f781e9cd2537c86a74f2234c61e832dcd1d631", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "ae2d65c3cb248c2df544bd2f68272b4b067f2db267a3ef3db459ae9957efb2b3", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "e15a3ac60f2d34f7f6fc07a2b81176db6a5bc540288d5de20a5ba209cdc0d9b3", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "4aac8297d0f677ae9635683fd8c34866b6f2f072ab6e059640c4e97b5332e4cb", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "e8eb8655f8da825c36f3dc1b71fbb14065c32c40676743a60030592deb3c6fc0", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "2f8bfd39a64cbb845d404c0822f3145d494d3cb550d7bde7aa705445e267a60c", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "59ebd918b64c7434ade8621354b17d7c14a5752bc6848311d1d62f8cc672c699", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "59ebd918b64c7434ade8621354b17d7c14a5752bc6848311d1d62f8cc672c699", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "aaca2a7d6b4e03f0f5644d657bfaa44813b09efecf3f619bab213d6d6335f6bc", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "ef400a1a6200f835cc02494edf9890d30a69ece2d415308bbbca1fc3c87b14ba", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "02ab9b00869b7b07a14d6cae4402be32800fb00f971f98e4cca646c7e3fbc22f", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "5a56697c0cd8150813c815f43a1beb9a33f5a15710ec1b3fbbcb46841369a4d9", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "7ac2661914a644988d49ab596aaf697326a2c1e7d35193a2234f5c89487842a6", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ae3b4907f8e2f9ccb5296590a4820c26164508ff8d5c3ebcb79dcdb04a006678", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "9e155cfe57500d2941214868a358f22d1f9265adefd4b55847916c4b91cb6397", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "0053abe5dbb93b417e7265cfc1a4fa17e2be09c6a2ade441365eb79bcb044757", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "bbf8d2968bd87b22abf584d6b373c2b71b87050f80506ff9bbe05c104f74bdc4", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "5d72be100c94e42300fa556b259c33421e6b4e853f4a2d35a131a784b97f191f", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "e2f3396587f819021a6e8589e52f3204d2a36200072d42f611cc44691ca966ba", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "7654a204861064cec5178b484c5378fae918b156939ec593ba60b1449759ce94", +"T3T1_tr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "744ce1f2cb3ca489b9adfbcb21f53ef6a7380bd137eae06a441550d0c4290013", +"T3T1_tr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "75783a34a2ad4e1ed667622f6a9d886b196a33251eb33fd4173f260e96c5fe57", +"T3T1_tr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "97cfcfd82c714f6450eded1671351c28cd223409a865f2f23f11e8dce67b360e", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "7514364508611a3334850ae6eb8fce331ed872aa2cd6eb50298085bf7236c37f", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "58d82b39fa9ebcbd33491a962b06584a72030e3f8692544a5919cdf49456f064", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "b40c9daa778dc54af7d816e2b9507d1a510f058f19cf16655da5d5861c0bdc03", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "393bc183cea9f5f4e076c65df6035422ba0a50ed4e0f0d39eb3d2c3a6f18909c", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3bcdae82b9a5f01e31a5a451c8dbaf01e7ae6dddb09c681b8844e430bdc0ae67", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "440c34322bbddc8364b03e04565d18eb0f86c6a66125b70a7e334dc1e267a3b5", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ded1da9ec21e72a4e350741c7b97891cb4a351cfb1fc5ba088d791d1815b2730", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "ea4b30e77e889cdb559090dc6364ed39f252d5e0dd6f0d6c49759cb8554d8ac8", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "db30893a9f6cb980708af5d8ee52b75ac1bd55d0c5ebca10944a7bf1254fb13f", +"T3T1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "c2eb4142f4e0cba9dcc3a38f2dbc8da548df8ffbd119cd1607dbbce1236b312b", +"T3T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey.py::test_slip25_path": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_grs.py::test_legacy": "43df8bac8d14391c46df680180e6fd39b444b8318e4ba1aa9cf91b15e12a2cd6", +"T3T1_tr_bitcoin-test_grs.py::test_legacy_change": "2364488f339a1171480b2766e950364091799df438062e4271e9dc6ad928c30e", +"T3T1_tr_bitcoin-test_grs.py::test_send_p2tr": "c34c6d673c708b8d6f99a69d00ce96cf45aab791ce9670bbb651ee367674b252", +"T3T1_tr_bitcoin-test_grs.py::test_send_segwit_native": "09d71bbfbe9273d83ace1aa6977cfbd6f196295f8581ec61723b7acc591dda08", +"T3T1_tr_bitcoin-test_grs.py::test_send_segwit_native_change": "6a5c446294fbce4f44ba3953b2327e90fb7dcd01e7a36b1e7e0a463369caa0ae", +"T3T1_tr_bitcoin-test_grs.py::test_send_segwit_p2sh": "b09ca9534a9cbf08b885a330063242b5564a5b973735381b3befeff14295138d", +"T3T1_tr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "fc087360b0d92add0f28ceb04489c3db1f44dc313f615824b06d42ef22094e41", +"T3T1_tr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "12a0a081c41bfb74f767ea9bc7cb505c5057869b3f0607a9f8c665affa0d6b06", +"T3T1_tr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "ab8b8b99934b78fc5c605a178f39d775f2dd4940cd34cf204a865c10a5df9ad9", +"T3T1_tr_bitcoin-test_multisig.py::test_15_of_15": "0630fd686a15629167c066dacefed1f3cec26857b60bbf2acae113b5cd861d75", +"T3T1_tr_bitcoin-test_multisig.py::test_2_of_3[False]": "a41661e069e6e4e37666220df448ef1301aaf0700a08f4825956cc8acfe4d468", +"T3T1_tr_bitcoin-test_multisig.py::test_2_of_3[True]": "ad128f577af561489ef9c13556c09f47526417aca11432859ffb75e09206d5fd", +"T3T1_tr_bitcoin-test_multisig.py::test_attack_change_input": "9816ae04700bccd75ad0fcc6c02e7d10dba4c90d11ac555db4c9460ab4e37fed", +"T3T1_tr_bitcoin-test_multisig.py::test_missing_pubkey": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_multisig_change.py::test_external_external": "423e8f02c3a0f643f263271b73e926af79d9c0606ef5c4017b9066fbe8883890", +"T3T1_tr_bitcoin-test_multisig_change.py::test_external_internal": "099dfc68eedc859a6a872a085f01f49396438a55b099e851769e9915ee78356a", +"T3T1_tr_bitcoin-test_multisig_change.py::test_internal_external": "0da571fd269cb0dd16135dca997739dc00728c3d4cd717c6abb7f28d6ceb5d38", +"T3T1_tr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "809635870e7e72cc33ce061f595273947e308215996aa58d2826e571ca8af1f9", +"T3T1_tr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "8d16e417a3acda0160a276c2b7ec8d7eec36d808d36b3f97ae6dc2faeeaa2294", +"T3T1_tr_bitcoin-test_multisig_change.py::test_multisig_external_external": "77a1a01c593084d2367e9355e017210ab1ec61157b1a49492b8ce46e0d5cccf6", +"T3T1_tr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "ca6b4652c661c2c2b07abea0c34fd02b2bed152f9ca8089b2285733cbca6de0b", +"T3T1_tr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "fe8c83ec13548f98d1c3df25dec7377d7a7b7dedb78a33085e95cd8c378e2384", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "a6e065c942ecec55df1aca55d44fceca445b5a137447d047198a0207c33eaf14", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "369aef33e47636a167dd20c29a76a0ff1b0022e7764a6e48175f0df4a42698e2", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "d2c205c395c9098749bf3fd264738483a2f81ce2b8ed74f9191cf6ad3a0ff4ed", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "f0171ccd02f273b29dd490503ef5b7240d41cceae249e279064480cda919991e", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "696fe7f539e588b32aa21b6b80d39c9f7b96daf234343c9b2155b379f0731a40", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "45acef95ba8846b2a526eb75f2978705dc5db6f00e4c2f5493ce6712f010a0ae", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "1399e51c81766f878da03ef0bdbee40dfde580468891a7ce4595e1cfe70fbf29", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "60d359a10620b93e9968298686920cbdf4338019217b7e228b18e01a626501aa", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "a5d1ff0b5fb31a98f75ec7bdf79f53413ad2608037abfc536c66ae82a187cdb8", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "dd0f55b5fce7e3549a67a58d8af32ec826facd379183949d949dff315e2f217c", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "ac886832f401452a2a95504c06a8fb3ed5f6ea7f1f9f358b1b11820a26323aaa", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "c06694e53df778a06a9173fdff8c976986877695de9e5b0857476136ca38828f", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "9b24d3a22833345cb52b4fbf6a4aa559636753fc9aa27b594359e8325b35dcaf", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c5716023a5f8c6523f82a6d5edb2d9aa2010fde7b2fa9df3896e0a73895cda3b", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "6a1ca79e7cf9fe008744bb8a3a0d0aed42ee3bcc64373b6f168c3b753636b22f", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "0b646802ba697fdf4b7f1132041b03694cc7026c1c1ea3856e4d59f216a6bcf1", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "87286a82f1c99cc23e55df61c75b9760a31d7acdce9ac59a44401d88a5b9fcac", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "af0bbf68bfe629a1415a7abdd4a3f8a7503c8ccd765e50f09106149eafd1dd8f", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "838544d69707ded65f4e8269ce06ceeffec2e0edbd9947e460072382d434667c", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "279fd9c9bed641ec4dfca4f06f8e411a4188f3fb0183350ecc568a9c1a790aa4", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "0f4e149235353a741ca0489c4aaa7c5c168ad25cb2a034ce8a098437a25cbaea", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "25754a1411ae54b0bbfc58a6954bdc714980b23ab499d3d5f9b8a3e52b39143c", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "9fa58dd421c6a4abc9c443e01a4cf3380fb213a175887e1c75f3ed155b02d671", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ae49499e0a4a83dc80a15bc5d911268f5bd37c70e6a0d17de29ad8e2d88d55b1", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "3c0dd9fce5b0e92df6e6695ef2926b89011c7a627d4b0fca2324f69988884b2b", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "66fefe2add8a51b437e6b52b9a57252f747c42f82025edc72671b78445811746", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "27010245804acd2d59f4d251709ff7810b9816139e9022cf8844ca9bd2d85c0a", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "354c059ed9c715796d9221ba3088e6d0ff9cc253b302dc117ff7deb3bf6a48be", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "131034702f4f712b2ab4bacc0b928e89017dfb3944eba74a20ad3c94af7b3a57", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "f416d2ef3b37269585dfae2ddf3972ce1175dfd49baff8ba559a0be37628cedc", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "e3d85842e5d3282956604d81ed87e85e8d6b0de2d2b4f404b48947c8653416c9", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "2dcbea2ba5bfacef2e5cc40c1cad577620355a10911bb35372aba3bd9a249406", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "f416d2ef3b37269585dfae2ddf3972ce1175dfd49baff8ba559a0be37628cedc", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "f416d2ef3b37269585dfae2ddf3972ce1175dfd49baff8ba559a0be37628cedc", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "f416d2ef3b37269585dfae2ddf3972ce1175dfd49baff8ba559a0be37628cedc", +"T3T1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "d22e109924a1f9cbe096894f01c18ec82cd42abed90cbc6d62c4c01bb80cc710", +"T3T1_tr_bitcoin-test_op_return.py::test_nonzero_opreturn": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_op_return.py::test_opreturn": "981e196c7bc80e0fb1daab05b6186ceb903a17cd4ba960d9cdf954fb84c56668", +"T3T1_tr_bitcoin-test_op_return.py::test_opreturn_address": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_peercoin.py::test_timestamp_included": "ecd6212446fbbd3329466022ea27af58bf98890ca97bc7cae314505e698c8c27", +"T3T1_tr_bitcoin-test_peercoin.py::test_timestamp_missing": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4126e77d06a27d8d202425f449b6929156b77205ffc87991fffa7c312484ef31", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "042366f066ec0b040915ecdffb84cd67afa5343e334cfbe126186aa2554a9431", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "042366f066ec0b040915ecdffb84cd67afa5343e334cfbe126186aa2554a9431", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "d9ae48f774fc43270a320c479e092c3344feed02b9d69442c9cfe4b97b6737a8", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "446734163025d68f966aea3ce58b28b3d190520a8f2cddc60173424b5759835e", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "b8791e8bdf9c1490b5119755e0f52c07fc89c7f170e1e0af978c190f60c9b44d", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "ca516c9809f17d1b151a6568e827c4395729bcffbb1024c2bfe7451398233fd0", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d0fb54e69b203f837a7d00e577c5f4ccb424c9678da69aa9e0d3af3e314a6490", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "9f7f15eb11a04f05bd2c97456ca7967790a00b1849a2002bd2179d2f2fc1a841", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "9f7f15eb11a04f05bd2c97456ca7967790a00b1849a2002bd2179d2f2fc1a841", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "b48d81e633a5eb80414988b884d128e692d7793e5f09f7e51f377f97bb05c853", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "394bf6d7ed689d0fa4ac3080af60d0cc1cee17f604f7aa56bfea69d14365108c", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "d5120bc23786328c8c9f588c0c31d0045081bec4a99f003ae61e1a0cafadca96", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "d5120bc23786328c8c9f588c0c31d0045081bec4a99f003ae61e1a0cafadca96", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "9444fa3ac5d19e3c9568e06e4b6ad3e7ab3a5c5afb766c80ed6f30da9bd0d5b7", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "8e8640b94fee71041550da4546866b355febf87ab495159484f45ac0789dc80c", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "01ea7adc07f92172b3dae752b88333378c1cd72dc452683fe7772504260d61ee", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "01ea7adc07f92172b3dae752b88333378c1cd72dc452683fe7772504260d61ee", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "45155bbe0c3a1b0c7ef9c8670d8ca37c3ce91fad6f39204ed5d685ff6d3162ec", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "8a9b6338cd2817593ad4760ac6de0aaf9cc58cd2a4c219d4aa43762dff302bd1", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "0eee7ccc33cc229ee75e18da82af2a6c679f12022114fe57c4f5903fefbf22bc", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "68737460d8e1ae734ceaf70640665410aaff16ff7dd58b9f049e65c60b75e976", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "397d73586e4ba226bd83e2bf962fe4801326e1e75c90b5f346f988899f7fb6b5", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c9ada6b821c0c222ead826877fb02b084c2604ac41526e58603aee60b3982e6b", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "0471347b47cca6a2164b4003bf1cac3d46115016d2344e96f2651ed5a5e58fad", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "a633c750a30222e056546f06ba962068b6c26b3b3a225b709c7cdd06773c659a", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "0cdc62e89b97dcfded21608a049c019d6c857f727b518d5e903d30b81af3e23a", +"T3T1_tr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "dedd947e3c1abe996d0384cb79fdc08acb9173090abb091b003a860e7ee09643", +"T3T1_tr_bitcoin-test_signtx.py::test_attack_change_input_address": "086f9d8d03c1be9716a240cf19603a58a5c2c7412d6498fdd087752f271f08dd", +"T3T1_tr_bitcoin-test_signtx.py::test_attack_change_outputs": "791ec882c04c38fb4b326ea95739940e0b1e8b271a02659b02bb55df14a271ee", +"T3T1_tr_bitcoin-test_signtx.py::test_attack_modify_change_address": "b0bc3b5e9744d3d107544b38b2bfc1f36c1f90b1d8b67e89f7003a0b205c7eb9", +"T3T1_tr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "b0bc3b5e9744d3d107544b38b2bfc1f36c1f90b1d8b67e89f7003a0b205c7eb9", +"T3T1_tr_bitcoin-test_signtx.py::test_fee_high_hardfail": "ac743761616fbd63a92bc6b9554a9c2071c507460d3bff4467b7a2882aae61c2", +"T3T1_tr_bitcoin-test_signtx.py::test_fee_high_warning": "332cd8d77557e211aa9d47de33d909ec995e566169be909fc4311e00b956c19d", +"T3T1_tr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx.py::test_information": "f218aeafea56787a250cd8d315525ff908845b4ccd62d0947ca39df84b111925", +"T3T1_tr_bitcoin-test_signtx.py::test_information_cancel": "39cdf911102ee7f1c29971ac54a8a43b72b41b88310b82ed81f607366a5ec73a", +"T3T1_tr_bitcoin-test_signtx.py::test_information_mixed": "cbfa26fe5aef1ca02b3b4799f3c387d11b5a3d6938e4dcb2a9abcecf998e7781", +"T3T1_tr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "33f468595f1a668cd8a4beaf3f147554186c4e008ca295029a3eccc3a5a466f7", +"T3T1_tr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "f71a253143eb396ffcc701209491f30c26cffbb38e5be596ff0a146e616e226a", +"T3T1_tr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "7b67db3ff1384adf688a45f04b5c8eff76759c46bae9dbbde6e014da40d0fdc4", +"T3T1_tr_bitcoin-test_signtx.py::test_lock_time_blockheight": "f71a253143eb396ffcc701209491f30c26cffbb38e5be596ff0a146e616e226a", +"T3T1_tr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "7b67db3ff1384adf688a45f04b5c8eff76759c46bae9dbbde6e014da40d0fdc4", +"T3T1_tr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "5280e3dda55541c5cd8bbda5493c771e2bc90417d4110deb26f3f12c1b898443", +"T3T1_tr_bitcoin-test_signtx.py::test_lots_of_change": "6d238da60a1cdb741e4cd79250e31051fded0d49529d67af5b85ebb712d57e51", +"T3T1_tr_bitcoin-test_signtx.py::test_lots_of_inputs": "5800adeaec42cdef0c3fdd87b4f850d5aa4f2ec729316badaebe5cab470f238c", +"T3T1_tr_bitcoin-test_signtx.py::test_lots_of_outputs": "ebff6a68e300af09fd73631484ff495e97d7ed2e13911c8c0eaa12576fea0287", +"T3T1_tr_bitcoin-test_signtx.py::test_not_enough_funds": "25b967ed88b461f70c98027401c6d0c493cd6e93a96d92a2281074f3533a9e86", +"T3T1_tr_bitcoin-test_signtx.py::test_not_enough_vouts": "6ab1e04cf58589835e7da6665aee8c9e57a5714fb2279a27e88510177381e769", +"T3T1_tr_bitcoin-test_signtx.py::test_one_one_fee": "88861556ffcf91f7ed1c996e0878bd1fef9b50fa57dedfb59caf24aed6de09c0", +"T3T1_tr_bitcoin-test_signtx.py::test_one_three_fee[False]": "1de848d361b54e155447dc2f7dd955696d37175daaed48da98e39140b22b9655", +"T3T1_tr_bitcoin-test_signtx.py::test_one_three_fee[True]": "901648dff347c2bf04dc27fc9aed3304aa161f18fe2f02deb11514947b67729b", +"T3T1_tr_bitcoin-test_signtx.py::test_one_two_fee": "4ab774c692a91e478d5f9faf8ac5b1b4102902ae7776fb7a76cec10974040591", +"T3T1_tr_bitcoin-test_signtx.py::test_p2sh": "f03d3b5ee12c95c5b9005778c1492a3583a4efd62a6659bfc182907da8da4785", +"T3T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "da3d420ad1d9c238cbf847ab6f12110b4298bfe1019a2d6cb793214f04e461c1", +"T3T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "da3d420ad1d9c238cbf847ab6f12110b4298bfe1019a2d6cb793214f04e461c1", +"T3T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "da3d420ad1d9c238cbf847ab6f12110b4298bfe1019a2d6cb793214f04e461c1", +"T3T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "da3d420ad1d9c238cbf847ab6f12110b4298bfe1019a2d6cb793214f04e461c1", +"T3T1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "da3d420ad1d9c238cbf847ab6f12110b4298bfe1019a2d6cb793214f04e461c1", +"T3T1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_signtx.py::test_spend_coinbase": "a060e8ccea57f708659d3af4926dca989752025b9178f3c0248fc993fb273035", +"T3T1_tr_bitcoin-test_signtx.py::test_testnet_big_amount": "0fd075bd8811116434da196187bcd88902c4865f16877b43c7244b389b6058cc", +"T3T1_tr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "4c9274a0cd9718966a75e71a33c90d604968db7147bcb4155d75be9f0ac0d8f2", +"T3T1_tr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "b0bc3b5e9744d3d107544b38b2bfc1f36c1f90b1d8b67e89f7003a0b205c7eb9", +"T3T1_tr_bitcoin-test_signtx.py::test_two_changes": "3b42d65965068894cff3f21e4c63fab20c8c6ca5ce258c5e8eac55ef7aab0af4", +"T3T1_tr_bitcoin-test_signtx.py::test_two_two": "9f829de14bd5601dfc21337117523886e03ad345517747d6b8c9e39e76c8a2fd", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "88861556ffcf91f7ed1c996e0878bd1fef9b50fa57dedfb59caf24aed6de09c0", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "824c9c5812cf506621dd97c0a3ebd4495ee7aa4b755e6e4958369c6c40c490d2", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "40e12236106bfd2193164e783f793a45c15f34e72954e75c16322237ab6fd724", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "1c45a115cfb40fb4420b1c36cba5b219dbcdcb8205810fc8c0a25421531c03b0", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "88861556ffcf91f7ed1c996e0878bd1fef9b50fa57dedfb59caf24aed6de09c0", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "67f5c00bc15f8f03ae0009cf59e1f69b9b38e869a4613894ee6a8a1c3e0cc079", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "5d04fce5b11a6d7b8b69015d62f77e281323eb131ff2ef95c0463564616cd97c", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "69201c8e06d4cfae3c918209377b8a25bdc68d86ce7262ae6918b09f8017a1b0", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "c67a8c7165b60b12557a4d0e516df2477cef1b09a472c2d44cb38a2d8790cc1b", +"T3T1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "67f5c00bc15f8f03ae0009cf59e1f69b9b38e869a4613894ee6a8a1c3e0cc079", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "4565346ba51eae04d8052b5329d45633c2c2b85a7af0eaf5a5053c291c9e835e", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "adc4a58d792f12ba721d3e8b5468b4a31f6bab31466a3275f9e487aa706d279d", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "078edc5d5495fbaed3bf36a6e4ce0427e4a301b3d064f427d931ffffb852b14e", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bb9de5a902fcd0d56eaf308fc8dae723d607eff121bd8262941220ba600bb296", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "827563b51105326f8a42821348c0fe70fe07824afcf5dd9ed9219d1454436571", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "e53a25ccf82a0a9c098310643d437043d6495137a3e9544a99e2fee80b6813ed", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "61c9af9e91e0c1569e9f1285027c163b6fa6c9677cc86dfad81b2145b8161d58", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "63a0b74f0f5819a8ceb3edfebe9edda9ff061d3d2bcc79c8e682c8dd52bbfaf0", +"T3T1_tr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "03221120ae22be8c6a7b82aa8c146afb84d0fd767f490eb491f1d0378a8c0d06", +"T3T1_tr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "d1a413b51dfe29c43759c088a40e7181368bf12208c5fc89d72d78a2c30f9bfa", +"T3T1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "a090828928457f1b064927f0247e7acf08bcd44c05012b7faf9b15953a64eaf7", +"T3T1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "44156845079f0542b2c18ed1145cbffa4aa97a732dc5cbc393282e507a5887fa", +"T3T1_tr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "93daa564cdd6922556ac5c50d70fa3d7610f5ac82d2a0a436fa99ceff233a719", +"T3T1_tr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "0be83145af813755cbe66f6eee66d0b819e379127d835ef4bd5578cd316540a8", +"T3T1_tr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "93daa564cdd6922556ac5c50d70fa3d7610f5ac82d2a0a436fa99ceff233a719", +"T3T1_tr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "0be83145af813755cbe66f6eee66d0b819e379127d835ef4bd5578cd316540a8", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "9dd3b13748fff2ca0750881ebf9ced2df2e6f8ed2283cc369f84b918404ede4f", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "3896b9211a4c783144e379dbfed63c47017f49aa69c077903ecbe269e27945f8", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "71a2f53b2817262a4cbd55851d92fcaf805647237e38648f3643c325fe908689", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "4905821189e6159a1780b2fd5683b8f394098c668a889cc89808b8da1dfe6551", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "5a378113b7c93d456606c383017c3f10750b4636967f3e8375247279e87c5037", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "bbb0920c984e8ee4ca7c1c6944e750a2fc3d21957b876ea33813084f56d9a75b", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "cf690e449952a6591f7209dc405a5cde2c954397feac12c1a963fa038f348cef", +"T3T1_tr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "63adf376be65356014827f5d75dcd64ad459d1d522d37ef6994d727c3348d1c0", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "e039c156c09437ba746557e87cd7e9e7d3c7c8149343bf99f3a1eef2195eddac", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "e039c156c09437ba746557e87cd7e9e7d3c7c8149343bf99f3a1eef2195eddac", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "e039c156c09437ba746557e87cd7e9e7d3c7c8149343bf99f3a1eef2195eddac", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e039c156c09437ba746557e87cd7e9e7d3c7c8149343bf99f3a1eef2195eddac", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "c31fcd76895f9dc3d37820360723f20b5119431b7c1914759786df7d14060b14", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "c31fcd76895f9dc3d37820360723f20b5119431b7c1914759786df7d14060b14", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "c31fcd76895f9dc3d37820360723f20b5119431b7c1914759786df7d14060b14", +"T3T1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c31fcd76895f9dc3d37820360723f20b5119431b7c1914759786df7d14060b14", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "975bd5b3eff6ef6a627ba60cad64e2f12aa6ac65cef7a2ffbe134e163c67ed5d", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "d9f1c59a97893b9ee475e3f81e7f713b32c80e0aa387496f6548af802f875aff", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "c50c3ed99abea87dfb7debada2cadd4faa30ef2208e2a6b52faf8444576598f7", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "c50c3ed99abea87dfb7debada2cadd4faa30ef2208e2a6b52faf8444576598f7", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "7131695c4cd45a070b0596b1fe06f8ba2251777f0eeeb621aacaee47e2929ca8", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "ee9b8de76302720e63f790f794a703b849f85af49740a70322b7fabe0b64a1f4", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "3f2bae110121bc4f6d392f7564d158057c80d84604e8457bdfcb3fd05de1991e", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7131695c4cd45a070b0596b1fe06f8ba2251777f0eeeb621aacaee47e2929ca8", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "f55f9ac07e62237b3cc4cf16807c338976f1916194e3f625c0c935fd78b06ca1", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "1c584b83e429cbcf30f4c4c48aa8b4442fdaca11d3a51fc0ce12d5eeeeaa17a3", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "1c584b83e429cbcf30f4c4c48aa8b4442fdaca11d3a51fc0ce12d5eeeeaa17a3", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "1c584b83e429cbcf30f4c4c48aa8b4442fdaca11d3a51fc0ce12d5eeeeaa17a3", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "2c53c86eebb8cb5c99ef941595c9834f157e44fb39ab6200ba84ff3e2e0771d5", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "1c584b83e429cbcf30f4c4c48aa8b4442fdaca11d3a51fc0ce12d5eeeeaa17a3", +"T3T1_tr_bitcoin-test_signtx_replacement.py::test_tx_meld": "13d802660f4eee73a32e409374cf2efef83aa506a079b55b39b9aa2862cc7db2", +"T3T1_tr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "f40192bf9f8d2d48f116ef30c974835b724bd37487ebb8defdc041f27d029688", +"T3T1_tr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "3d109e27aeed11f96561a422bd320d3c485b372be1de3b6400d1a9d19da4e563", +"T3T1_tr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "f635f67bafacce3dd9e95f881818839b0edd0e5c15a9b75a83f6eec27cd4b8dd", +"T3T1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "6549f55135d01f5b0c2faa50f38a21bf0cc87432c9eefd3c012ae9cbef3620fa", +"T3T1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "db25ebdf098c0d19020c48205901140992a7130d00aa756acf3a566945e4acb1", +"T3T1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "fd85b8f440b34663ad552fec36f459d936fdf6527f21c11468e97dc963719575", +"T3T1_tr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "71b4d34d798b6cccdc170cc27466eeb26074d53574eb59192811bf9522e2cdac", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "213cd4e7933b3ad2e0fb99505f8d0a8055f54caf9268d9bd16dafb720fb51bd7", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_both": "d21a3a11d007275f41c69bcd8d04bf596a2806eba220fdf7e17b1c7c44b38ff2", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "e73cef8e3379726b42b228fe4a2ab590ec61b9983f1825f29437a6d3595a079b", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "737416b8ce7e5bf2e4220de13dc783e0a90fca90da19eb0bc45f7d5b057a4bed", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "e7c45275f066e38230574f3d240735e1ae448195c9b22bae35d41cc24503746e", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "54b87537d3d7679a8002e9f60f9295d1ab1490409fbd753f0f205d2134af8ce1", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_native": "67f5c00bc15f8f03ae0009cf59e1f69b9b38e869a4613894ee6a8a1c3e0cc079", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "808eccec493b027f4b326ff84eaaad26fdb6d46870b1162d313f2a5c49a7f242", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "9dff24c22b546cdaeeb69cd1be9ec3b7657a84623fa5e36496d06419e5b37c4e", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "1f188b140e6fd198bde0d77a8490e6e1241dd4e8d0439bdfea66feba83bca7f9", +"T3T1_tr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "be596bdfcc6b61bece006f4599938b6841681ea09b19e2946b8872339fec77ac", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "1c573f06d64383b20500e542d61c8e00d608d4020fe1b17d3e1806d8c9f45705", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_send_mixed": "d43f6c111e16cd4d54d96370139c6be0f2faf5878ec57eb5a7e2fcafd12a5611", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "5ec186619662438c2afcb2b4a2e30e5073f5feec247e38b0a68b1f332260b369", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "b7efb8994e339b1b86f7a22917e5a5879fcdac5510696d9afe3eaa9c0fcc0eb3", +"T3T1_tr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b1509fe0b0b5d759867684df47504642fecfe4b525c98a2451847d98643428c1", +"T3T1_tr_bitcoin-test_verifymessage.py::test_message_grs": "d67529c7ccd5a64a2cb29ff6a60b4b35ca0ce0f9fcbd02d26ea71c52654cdb4f", +"T3T1_tr_bitcoin-test_verifymessage.py::test_message_long": "6e285d44dceade028286e76f5bca112cf7b05b4da5412211f0fc375a10143d59", +"T3T1_tr_bitcoin-test_verifymessage.py::test_message_testnet": "c5169f18b2fac63eba429c38f378c4d1ef436c2a69dd9f5f5144f84370b199c2", +"T3T1_tr_bitcoin-test_verifymessage.py::test_message_verify": "55a2b953bf0a46528fc35f05999555a64726707f31663547849abbedbf9d3e84", +"T3T1_tr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "e59ea9792a7cc9d7dc65f168f091c98ffeb279e5f827bbec96f9425b07522897", +"T3T1_tr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "b3600a1ae5946676a76ef047d995a2cf772b2c503148c2c26a53c4e7f4a8aeb3", +"T3T1_tr_bitcoin-test_verifymessage.py::test_verify_utf": "015fc49e30c969212bdddfc960d963b39818a3ce08752dc76f75ea385b64daa8", +"T3T1_tr_bitcoin-test_verifymessage_segwit.py::test_message_long": "7b81e9e747050f9ea586b8a8d41e8e2c11764afbdfe86d506bff5127e0e923de", +"T3T1_tr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "317322731e80bc329c99a9cf6ef65a75bf9dde70a281522be24229828cccfa31", +"T3T1_tr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "b2978cc249914724b1f9f1e3e90089bca1ad578b2c82aaee84cddec11ff24700", +"T3T1_tr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "a269406cd483ea04af7269f0ead42de9117d0054873ceecc6266c307419b7abf", +"T3T1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "8c001a7c59d7a083bf5c92766e0b45b66d51662614972421f93f37ed9429bbdb", +"T3T1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "1ab72efeb8aabeb09ac8c75b184f220c2df9952f68d29d948a60423c948d6bc6", +"T3T1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "c54999ea2cec5066f01f1e94f9191c9863d7244bea8141f4912630f058d51ce9", +"T3T1_tr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "2f456f7299036179417afdb4d5092bf488e9584523f7e13870a286b91017e7f9", +"T3T1_tr_bitcoin-test_zcash.py::test_external_presigned": "f8d8099c09fc3f1e975cd776598a55761635c0c0c4de0fbbb15772484df8cc91", +"T3T1_tr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "dcf1b61f6affa7117753f24a069f211db2e4f07284f9da1fe78e0344ab884b6a", +"T3T1_tr_bitcoin-test_zcash.py::test_spend_old_versions": "04835fe905b1f10ebe0d98f5e11203e6bfc04160a222b4eeea45b46f568dd9f7", +"T3T1_tr_bitcoin-test_zcash.py::test_v3_not_supported": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_bitcoin-test_zcash.py::test_version_group_id_missing": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "bdd44463f930fdaee1f6426984c34fb76adb562f00a65111d4674d5766d37b93", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "514a8b28e529ed73b35c3836cc570bafe6e5be0779a5b7d9e4e88a8a16d98cd4", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "ffebecbf47d78ff943a1010e7da157041a6031e5c754f325a62412e8c4958d09", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "f8cac9f99232756a55b35f7d7bd087881891c811c19eef212f8b9a7b334e02bd", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "6d85d047889bc97d73479fd4e980ff0b83468a7632145edc35b423b0dd339f9f", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "cef903bbe626f36dfb278788b5fc9da9b835c37291688a2ec715c34df08a0046", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "71aeefaac952e757155298f6319a99c03173281f43f37e81755b2dae65595c66", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "b53ebde68736017085b3f6a7144b8560042bc996b4d5f3309c38b8d2414d3620", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "aaf1ba31c6c4573a44503a6113351fc14becbe6fed0113f1c0eec511c036fe3a", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "d5b5afd6203db3143d9980d86ec2e572cca159bd7589fdf86bf428a9b540d6b0", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "cf0a58b0d4dd87cc98797b92b3b45d59755c25dbdd6b02818ce52e1f65e2d70a", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "e835b692ad4e30ec70214e37cb0bee49bf7f6cce4af1b2c35121a6e6e35f3c5c", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "08a52c4670150522232af338ce20692b384c687cf4ea355ae0c150832ce02509", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "46eb1ffe79c3ad3779b33300f8cb4de1e62cf3cd2c73cb54e786956eb516d0d4", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "20594b419850f061b6a1b3b1219c2a2103a37d6c56da0b274e820eca213e67af", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "aac58d4035edd55f0273589fdb6951f64e3d956b3a2158fca477ac3c7812634e", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "97eaa84359fff77e3f67e36941d1f4ad509f830faa777e89a156d4cc7eb57216", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "5967ca2dd00588521c18e6b62ab4234516bd262d4cc8bc3a5b64272d6c7239bf", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f7623b85e7405dc15973ea38788dbdbfa145e84a942b772f731d92765ba84146", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "d9ab12bde61f607345066d4c9cc582d18cbc7fe9b48af4f7add274b83a90367c", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "4bc7d4147445ce5da7bc69f2d0dae1b5848e3ace70737283861025de0050da41", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "98a758d4f06d9bf9d91dc2f00fe69f05743d333803b740db6a5aa422f8b9d3af", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "3e92f5320a425db1a472de1efd09e1e5442dc5aeb6f141be5db58d03a0df5297", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "3d01a196d7d86502bbaebb652a1498e3279d9ebc9b3f09b74105fa6a4d8982bf", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "4289db6751ce628291dfa439108aae22599a00c0c524026256aa1f8573cae721", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "8d4f2a412300b2c1f95a604965d173e04fc9e979d488b95a5ccb1eba33c64e70", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "836481707412407156be0dac4c33bb33d9641f9ef98c250eda6df2f81140d488", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "90dc9eaa964df6239c26a4e54257ebf675c0e153a7129911125d20f9754f741f", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a501670ab97535cb7b868059d5ce406b37916412b2f333df8b8c29f6e44a25b5", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "7e6d92492575ff18ff84654b6e5114c1a3c0b7aff39e1e14fb21e2d055e6bab2", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "ae546b70c94c71035f6527eafe1ab8fbafe7e2560dacd409d164497b2b678968", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "ab929d971145a4f34366d86477a6a62ab9d56d30aea8c9553413defedc9ca33f", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "0fd744eb3328e961d1e075df28d310801ff8900525d4a751625bc9dcc2e9a9e4", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "ef98328915a6fc25f89a1faaac8c1825902f79307cf0c71b372fbdc9b1dfef68", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "c6cbec6dc414498db10cf8258a5e7a5bf68074dfb0d2c0914c733ffcc54fe118", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "09f36728a3d0a46c78f23c7da883366b91c4e4480e9deb89ad9d476050c1e615", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "19d1cc3e5419a38f87a361fb1d69760db7e41c106180750dc6d781ea1a6ea7fa", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "83c4043543f3e0550bffad34721922963855425c9233e0df618f9afb860aaf44", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "085e33e4eac5e7adf34b7e100f07c076742ce54f4de25e549b091045f4b3301a", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "f4f5bfc4cdcb0db90e5442cfc2b8c1c21cf1ced1f66f202e2aee31bb43d74c16", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "f94ff1e4bb4369b44c0c1e9915b712946af5d37f3102eb665b76f57e43c54c73", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "9407dcc20946e50e8be05595ebf8b11dfccff82f6c98966acaa32bad887727e0", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "af4aed98af46b89a09d04a3444b823da260f62662dc6b74e83abb7ea97bfe724", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "303bb976b668d738567a749bccef865bb39daa6042c9e9fdc48af89ef33c056b", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "533c389c9d48748db12cab572efd26d94c3578edd20b1ade5fab5bc2f0152538", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "c5d0659293df1cabb980c7fac89886dfe7888ba85fceaeed87dc306bfa4a6e3f", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "ac977f080fda68bc73d4f675337560201b996f1b78a0b878ff8d2870b8b421b2", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "58ae9c48cf2b6831566290406296b0cac33230e4c98954ea23071fff8677f3c8", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "e371c51ac82ea80380309194c4528ea6a3a834256ee2e67c10d5dfaff4f35b92", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "43f72b7c92dd9e23a64844f4d71d3f7afd036420d02dfd85ea3e602e41c24733", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "b1d8969c12499fcd82aca828ee77f1271fb693a33be7057add4acd9e1a5fbcff", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ac8ca7912eac403eae19bf97742b795a783448d482764f3cc388b999ab085d2b", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "003155c711ec2b53075572598ed284fd473630759a280588b04781109d33d5fd", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "f8ef8a5d212084fa21c2f07f23c961fa9171cad9de14f9c1395f1585271c51e3", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "c5527f4a43da890df389618e7c09a7b39f8918ed37feb0aff4da0fe344b25cc6", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "e4a9c2e70cc1e309ee1d507045b549c47a36ee5934cd835e31f99e93d234e179", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "b6fc8f668e2ff56a2e62eacca6c335be55cae38130526ea8b1ecbd87636386a4", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "0e6480265baf43954343dbeb914631de985696189370d166137403c3b760495b", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "613c330e8880daef681d2403be8b354ff339f4cfb499693f43c5880ce2342600", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "c953324f8412f848c0fd0d66d86e59391184bbcc555f1c7e8660cbbe83c6ca91", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "5ffabd49fceb1cae15a7848e6b6df9c0578d5c48a80752665689bfd1ac413afe", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "d0500f49c7060998f37831b37ee8a4b2c13e0c8c59253ba71bb6e76cede9f905", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "33328b06af2306ea83d1c5171f6eeba3f88e71030da895e10f56b4c7919f5a61", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "216205203940566d638406b650a6fbc470c88acdb08508c77b46879d8593bc88", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "3c6ef47379adc14127d3c53094fd3e303f36866af72632e3adfbc78d3f718bd3", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "d67965542dbd11eb676285882a741049b358166b23fe63cc1e97faf3324f68fe", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a2ed087968b356b884e348efe323e038c023e9ab8423021532f4ca5b8b46073e", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "952870c0b142e6010ba88b94180b6da34d82e6e94abfa1ae5298f9edc94351cf", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "96ef7b217452763e5f541b754aae92483f5be6ce619a883775546dcd6e753512", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "b8dd00e33c7ad7eb17577ce609f3849c825a7dd7d4db2324d1ef384e24d1e99a", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "ea4ed278a3d51dac8598d86bd6314df433ed27cd7ff02e173e3f7bd82278f81f", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "1f0fdb0f45aacb25b901629a1ccd5819e129c6a1ae4a79bc87c7605684e7b2d0", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4673d0da60e67c59c67ef946ad308358d724f9eb198d224fb1a72a799331879d", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "e5b1890a7281796729b1cdf833099057a0eac35efef45f2074b086a00b6f41d3", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "437523a051dc543fc4f4672934fc2048108556a8495b4ccca49588237343e5b8", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "147105db77feab20baca32242c6caa962109c77ca0a9a48cfdd312570c664330", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "b7a215fe6bf702aa9e41d5cdb769ec674320871e65af38d731ba8da6e12db2a3", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "9442bbb787e775f1a40dce1a686fd31f740098fd74e1aa6576ff588d0eef851b", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c3e80a88bf6cae97984d231a509f6c208940c453b7530d0186ebc49ef204f790", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "33eff4dce1c71a63cb56aa1f11f2a99a754d46e5a19a252a28b396ca2ef3f3bf", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a32095d8c7c7bb2952fe5e95dbe52adfb42fac9c4498d59f5e2811935416866a", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "0340bb786e9b03720ef300c706702e38ae9752c093ad1a257be82cb6f47ec8df", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "01ffc17c4cfcb54fc9fa7a032bf203cf1ef4cf92a3b1ee3060bf7affc5b231b7", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "31389d40b508e2e48f3a03f3356de273e1c58dabf5bde5528c9817174c3dcb6a", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "a6c0a5852f361699e71adec60b6641595976df5df4c79d96f60af25d1fddeab4", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "19a1d50ba304e0e1f226fc768627ebe6718eb4c53735ab747e9b2571ca0d26a9", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "f5cacca326247bbe84a58d390d565e7fc61ce490ecfc4cf26f154fd7901617dd", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "ebfd500b745997fdbf8171aae99608fc4798d8fe8047d0041c5645a176759cb4", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "08483b8e26f4c4a70f1db62bd420fe36e42398d9919b9b89eca99b14432c81ca", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a7dd56850d08bfdc96aae8f29967d115efab56b66842a474208f01f272a0f788", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "97e5e0f8453be35d7da828aeca6cd26fdc32116941be24ce304e3341ccfae03f", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "bf6dc89bb3e402a6966daf4e576c059042d9dfaf82477f3dc7a61a55d71975f8", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "03fc5e58d74ad99d2b1860ea4c082b669d8e3f1c0011dfe3eb776df654edd4d0", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "134d95ee4549595219132b1ce1d01018fd712f4a7992d0ffd3f65b3e9d3989f8", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "418219c6907e0ff5692c672baa37e82516b4baff73ac1a4deba54c6d5a63dbc6", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "d35cfb619f9d5303ff9954e49ac15d765e551037326fd9b5cef964f79ae55e3c", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c32b1c6752794089dd1fca4e1ded9c743a3611e0ea1858487bb1cc4b366a982c", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "669d9a7279fbbec030db48eef8138902faaa10ddaab9888797d7662a2c4c95c2", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "bcd69e22c5ad2b2faa67d70bc202dd02ea9b29d626841e038461ea8c29c155bb", +"T3T1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "25ea16474547712d05229299ca39101e14dc662264405d79a81d0a078189cca9", +"T3T1_tr_cardano-test_derivations.py::test_bad_session": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_cardano-test_derivations.py::test_ledger_available_always": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "a5b3a5809eb0df23ad267877e045846617ae1ea741df2b7ef481c67483d83f7d", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "64bea71e8e2b2953c827c646061823b7d5894687077a7ccb8b47e6640942bb2b", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "5cb2249f98f148a98e41ad04debe830069e4993b679b9e15e452fc0bc974d3f0", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "b1e6f1603bcca019a513a474a7414c9c53d9597f4c70f0d1c5ce5374981d97a4", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "17789ce37ffb2a636b34253918fb77472a63b8263868f488d1fa77d127708316", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "afb7b859be7ac332943ba395d920b5dc11a718b413bdf088e61cfe27b7bccf13", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "8ce9d68f8833415abdc88acfdadcc72e16f1ef28db5474e58d49de0aec51aa9d", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "ae7c108eac3bff35f8af3e2fe4694644d54ed16c2ad5e8a7b7791abc19600d9e", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "79b55eb97935c5b2d99844b5ca72e1d9a2b31ed6fa082d092827d7a63e2934b2", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "058a9a02583983db168ee45081f31f7b0f1687de2c0a09405e2a4fb24b869cae", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "4263ed18375ea4c1a2b63ccf701b5fef1eccec6b66de132e2e3eed7da75cda9f", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "200cdd5bb0f4f0ff3846600a68fc438e9c7325e087b6cf9bcb1ff084a2ef6498", +"T3T1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "f8e30749b83e5513a674a9863da45b8760c2920a9f311e8322ba972be5875bd0", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "abfa80d588ec6de8f72edbedec62aab3a8bfc4ad7908f2a168b55f655ae13bdd", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "10db71e5df058ab98262f411b105fe932b3a6bbb5fa3d32d908e762cbb61e0c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "63bf56d830e9eeee36f04a42eba4965c24f4ebf4abfb6255f35de60a67c456d0", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "5beb7229ca71fcadb84cd456c6e5feb350674d288cbd3af83ad6a60932c6d99b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "5beb7229ca71fcadb84cd456c6e5feb350674d288cbd3af83ad6a60932c6d99b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "d1213170219aeeb62f4d6dc4a12a9785e977023c3a77a3e50332ff034aa1de4d", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "af25206d61e2728c8d520187f064f7df2d497296ee6fa4e0a7e4583eead7c2c2", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "bf5348758b466b7f4fc6a004fb938ebc5fd2dbb32c147e6f2b745b007616b51c", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "7613ca7507d027ca73368ebf3626849be0627abc326533f6be97bd78dbaab381", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6525a0e644fea3a3ccc28181030aa3990e6f53f85f5cd7d397598adda5264262", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "3e5ce4bec524977630ec7cb97f9a6fea1e069550ee74117f3de3ee428f3845a6", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "b019e48f0c900941433d2b4697abf29c9ca8563396510e4b7b5c5a567ab06c11", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "002ed675be1d6fa5ae71d0ac72dc069e4a8767dfb23bf5a5e497faaf9848ca35", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "7aca3b2be8ae1d86679dd1cad09cd85ce2ef6881db7a97cf8329b74147d31505", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "7aca3b2be8ae1d86679dd1cad09cd85ce2ef6881db7a97cf8329b74147d31505", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "f6884c8827d2c2997f7f81c8ab3b58431a6ccb48e280e3927039fd55c6ac007c", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "b52563c5efe9a287f49507948ef85220db648d46649b07c2a6305b050df2d4e4", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "2189bb3f11b1ea9dff981b4327c47be13ab4748efc18fc5f05c29bc839ac285d", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "5f0474f3fd516db999b2362981bb465dbc9eabc036f0e660c9e74004353f2b57", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "bce67e96d12d8c7bf76319493b5d5fbbdf3c27b211a2d37af3898d701bdd10ec", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "27a82e261e0fa2cd880ee0017d12fa93d66652c65512e623ec2f303823a692b2", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "ee973a44c61a6528da25e1b7612d1a23d73686393bc2f2079923d1f46ae1be01", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "3e1e8395a8becc4c72a6d40baa0c8bf64e25f712e06ce3238b3bd3733da75260", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "5beb7229ca71fcadb84cd456c6e5feb350674d288cbd3af83ad6a60932c6d99b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "9d13ad4cf41b8c6177b220fb8712f5940c7dc351a0bd5dd192f2930cb84d9e34", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "5f0474f3fd516db999b2362981bb465dbc9eabc036f0e660c9e74004353f2b57", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "b0e3b2a1b99b5990760a715eff563413fbf2943fee3431147deb98d68d098ef0", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "27a82e261e0fa2cd880ee0017d12fa93d66652c65512e623ec2f303823a692b2", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "ee973a44c61a6528da25e1b7612d1a23d73686393bc2f2079923d1f46ae1be01", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "75cf7c00afa249029105c53f9392223996924992107bac174fd9719630fb938a", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "5f0474f3fd516db999b2362981bb465dbc9eabc036f0e660c9e74004353f2b57", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "bac134ed1bd92c59f75fefaad3f4ee3deb85585de5d436c9debb2c6baab1b32b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "678790bbba8a5b15c8878f1fca59446eab59a11be26d8dcc1f649a4130b73975", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "7d6f0706a70f2270e474053d51aa81bd248f28988f96410225f9d08c0f627a26", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "9f1ac7e944387d1c2c554961b60fe9ec03b36f9ee7c68dd2cde0c7d9a34b6278", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "dac0b0239280a26ad3a2074af28b5290df32bfc15258bb47761178b9249bcebf", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "77ef6997a89d7bfa65939ccb6de958137067bd9ed40a7e87e6372ae7e82260ab", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "067ca87bc844a9fc51a18c97f8458672ae364063f4fdd1d2470247faf1a57cc3", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "538924db7b46dd2516ca4528777efa7f4fe50e0b6797db08fd0e59f93861854c", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "8f61fbebff1b3061fee5aa760c11e00b3ed612f8972ed9d2de13d1fa612e1e48", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "956504267f854e1270c36c55d5815f46b0d9ff0a4dd68aa1fa4b6fc9062b757e", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "2536d2185881cd77278823ef14841af013712d88c88b6a8086070379bb26936d", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "26715581e644724646b623578638f32f2da023d8e7c7ad6e65a25a6fae03b61a", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "bfe1632ee14a4d863f34bc3961697fd7358204b961a6e49ea40f3fb42d789eb3", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "0554f509fb742b4db2e828047fa6f73c83ef162648a766fb6346306e821e01e0", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "8175da51df5ec3d9888d4596ac12a569e5f1e43d9b5ce7d5eda2c6c38b1d4bc0", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "94f99d312854593c7cbfd6ed9dd8a350deb903d7da66c00e0fa4508d5b06147a", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "55c5ce6cbc4dba6a4ac075398cf5c5641a9b96139587be3bc2c28fc0a906d1e3", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "0a8c0ff4c31e9441e093458205a5b625c7906d94afc15090a4d2753d6ec44309", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "0e32669014d4cb2f4d5a1dabab4c0fcd0e99860823a4ca64a7b3604b554d9eeb", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "f9a08016984d4145f5eec5358fa33d0ea59273afccdfd0710a7b98a37f8521cb", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "0469941a3b5950264d4ee2342422c39cd153816435385e951ab89e8533b493a9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "4305e35e78f77afbe7b7233a2c4440c9a2633c66ac732c03905d47dac0d31cc2", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a20aa09bf8b6af62fe0e013dc4fbcbbe285266c99d407d3f1f12f35a375f25ee", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a20aa09bf8b6af62fe0e013dc4fbcbbe285266c99d407d3f1f12f35a375f25ee", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c4801d48dcfebd4d22fcddbb944e2e013fa17df34510de5471dcd775c52e14c0", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "18628e57fc533ae74c1033f5778ce167a35f192f5869219d878716eafa2664b9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "a56a2cc3768ab4a7ab82b88b9c04a64a63a1bad44dada74fc7e46a807ed69cfb", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "de013f012f1942a13c347bed2949206145f458c51d6f999703d9a977cd9d5fdc", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "5d1a9ba5360e75f2662152ffbc3667ad1bbd35138d0bf318fe4235ac5d878014", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "389ab716f5b5cb2f9b72d3dcd317bceb73b1c9e260d644777dd5bd9ef67b27fa", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "deae77dcb350123045c2088c7c69a9fdf00c3b16b6272ae4d938a3d85f468b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f4245c933def472dc00e6b8bd496039342c9da48eef0cbe5466ef2e35d5a4542", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "5f0474f3fd516db999b2362981bb465dbc9eabc036f0e660c9e74004353f2b57", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "635b5d7a03a6b0d820c79148a71668a36789a36808eab1bf2f8aaa8d772c4657", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "e664f545ab0b3b19172e43d5afad26d7775c9a5396439c27c581607df66c2efd", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "49f61aacc67046586a0205cae35760fee7a0732cc6f5ff6ed27bb717dd2a3b0f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "e02ea13ddc49b9279a6dfbba84e083d3c18df85d81f17d083b94025073fc860f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "aa66e7b9bf7103f96f0fffdac30f1e22913cfef6d3a2749b2fddaec669dd27e8", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "44eee5dc0d3e04112d1eddf6eb376536c61701dd0ee1e68632d39507393b4944", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "eda8a1969cb4d7486f1030659651d3a2abdb3de5e9f53ac498c90ca7d6c03157", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "8d821cd46b4f08460c8d71fc02e48d444ffa0c1997bb5da8a7db5213874f69ca", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "02c8c8703dbf3397142d3bcbb6f27b708120445e89476ecdd2365745bd5fd168", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "bfd3eff188ab32fe26fe47b3d17ddd38a0fb66e276c5a608d1442253ebe14e5c", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "50536463408e5d5bcd3d35cabdb4650bb5caf30ed2d37b1cd09b7ab6854147ed", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "5f0474f3fd516db999b2362981bb465dbc9eabc036f0e660c9e74004353f2b57", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "31502716a23f33e4e7e2a9b550841321833bf97609362614ac3ddc110144fef3", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "cb524457bb82f4fd6ec6ac3a53d9c60df87c18dc32bc2bc02cdddfa1c60c2243", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "a841ca147cb987a08c543544cffc55e189f50470b018406f4182943844bd76f4", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "5f0975a51c1df69d9dbb36e4fec547698d69841ebe9805b8c3308e147270c913", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4861db9910d497c3cfaa3f40bdb110dba166b52767ee4815e9514592f1340794", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4a4f8e7aa87de396892ba5db5216d19ef95a77611c628aa18eba7a5c65d93e63", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "8dc0604bc9c22d0c1fa5a0d9942f12f2ee6fde9773e1ac433da198c78443674b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "9c4baa1e5104313f3d034d2fdcb18f69905ef2158065ff9fd6d02c1fd5b45bb0", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "78eafe6c96ffcde5b290ba7dc8a704a9c9754d16979626b62fffa467c7ff4a57", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5764ac158742f0d6af77528d725ccf87407df4b08b376a33b45177de91c8b24d", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5764ac158742f0d6af77528d725ccf87407df4b08b376a33b45177de91c8b24d", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "e094601a7b9b0b2632de6ed9f8c2ecbb4429559bdb7ef0eea9eaafbb455f7dc0", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "b4a93ba3939db747879d52e5960b206b68c5d805952ca80eeab46416d1ad1100", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "b4a93ba3939db747879d52e5960b206b68c5d805952ca80eeab46416d1ad1100", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "53f6e2c7bd5f229d0db33ab5fbab9d55f69658bcbe0dd32f6dc8bdb78dd24c21", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "104aeca532df3b12c634805a63c43a0876c3c2738331ff90a2365aa8cb4efac3", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "72148ae1b33acf001e813883101c4a3692718524c49544cb70c8d4329754a80c", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "bd3cf923a162a3f055cf8dd1ce70c352d215a7f851090f4e3a867785200bc195", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "b61db8ddc8fe3aa6b54018be1fb29791ed3f20f533972593c8605415bc17c0de", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "cf4feab750ddf00beee8b5490aa209116205b42f799c042b18d9b8258a55d1d5", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "5beb7229ca71fcadb84cd456c6e5feb350674d288cbd3af83ad6a60932c6d99b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "5beb7229ca71fcadb84cd456c6e5feb350674d288cbd3af83ad6a60932c6d99b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "d723b4cebf51bdf75eff4d7f9c99ad777f981175c9575eba79cd679f380847df", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "e6b161d54e9576f91856df737678c6b77b489a06f24f947f6d31abb5f42bc46c", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "cf0fcbd016175eb7296fe470a158743b6232c881c70d74eac35da8eab6d6a34d", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "abfa80d588ec6de8f72edbedec62aab3a8bfc4ad7908f2a168b55f655ae13bdd", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "7613ca7507d027ca73368ebf3626849be0627abc326533f6be97bd78dbaab381", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "82678dd7fc62c64d6a0ddab49bbd0b9129a192776d15f6c1f57140c4e4a75d93", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "eb619e14925e06c14e648ede8580e1a37f00165e1ff95cc51bc2610c15069e9b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "eb619e14925e06c14e648ede8580e1a37f00165e1ff95cc51bc2610c15069e9b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "64eed5800ec8672d2e7267157cc16ac242d8c295064dd781659501ad2edb332f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "850c2f4179d7629be54167482b6b23bf246d5d39622b2c7293869fa43d600b9d", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "57adafc86f474d4b62b3fa3a9984f9226b13aad68336d85f365aa0228761c281", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "5f0474f3fd516db999b2362981bb465dbc9eabc036f0e660c9e74004353f2b57", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "64eed5800ec8672d2e7267157cc16ac242d8c295064dd781659501ad2edb332f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "64eed5800ec8672d2e7267157cc16ac242d8c295064dd781659501ad2edb332f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "e64b95a7cff1b13a0e7fa4ba4c8c54cb2bad0f854bd7c69139a45f236ce11d12", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "bb0bf00abfd4f4da0f0f681e98c575d6cac14b1fbe14991740ba44ee549cafe8", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "c08dee07ca5097e8e46129387a4eb667db30ca6bb5cd678e2ec47a574350097c", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "c59285b14f1580a161e4f5ca80f453c34ad9aa2a54533d9eac6ee352e0423fdd", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "5699923416e7ad9692f45503b2ad05e201f04fb57249a03bbd3323d080d21e58", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "cb929b69b051339cb40f07fa90bae94679335cdc392ad6b7d81f8251d0094814", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "cb929b69b051339cb40f07fa90bae94679335cdc392ad6b7d81f8251d0094814", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "cb929b69b051339cb40f07fa90bae94679335cdc392ad6b7d81f8251d0094814", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "cb929b69b051339cb40f07fa90bae94679335cdc392ad6b7d81f8251d0094814", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "cb929b69b051339cb40f07fa90bae94679335cdc392ad6b7d81f8251d0094814", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "cb929b69b051339cb40f07fa90bae94679335cdc392ad6b7d81f8251d0094814", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "5699923416e7ad9692f45503b2ad05e201f04fb57249a03bbd3323d080d21e58", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "5699923416e7ad9692f45503b2ad05e201f04fb57249a03bbd3323d080d21e58", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "5699923416e7ad9692f45503b2ad05e201f04fb57249a03bbd3323d080d21e58", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "bb0bf00abfd4f4da0f0f681e98c575d6cac14b1fbe14991740ba44ee549cafe8", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "0adfd1ebadfbb699d99ef2b838b32e4ab3c9bab3ca40c0d04b89b292d910d58f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "929b2977a00b16a51e4021f99800517996b66bf9b7362031b6ffd13b7b7bc5b5", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "773b37fea8caf768f7e12394ae850fa9a91a9c8ebf43b72f6b5366cefd58c852", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "1fb290f0cd43a828e7d593ed90abf6100f0638f7aecbdbbe9f3b3e9e8f2c7395", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "458ae94a320516d3826e1c94cf77bf254b330e528a16fe882a3233e2288999ca", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "8450cc8551c512725c8627ba3e384fae539c3abce9f8e341bed7c3efa51fa5bf", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "cce262b1f33775b043ad9e97b3f92bc143b43ab859df07db4cacc25b590971be", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "64eed5800ec8672d2e7267157cc16ac242d8c295064dd781659501ad2edb332f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "64eed5800ec8672d2e7267157cc16ac242d8c295064dd781659501ad2edb332f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "d712c454f5bced73dcf74d810d6aad18c2334af55257ed52f3f86f638d3f7265", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "61707037ef3260d66e33af9ac46deb42549cc58a9925c13cb85a49ff6524e498", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "9431ffd7ec24a4f39ff6d6def6ec9a5d9ea50592c0c8c7dfe9b81ec6ed833288", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "38ae8dee329b07dc6841f2cbe8721247425035509fff792fc8cd79b8cb0065c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "eb619e14925e06c14e648ede8580e1a37f00165e1ff95cc51bc2610c15069e9b", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a20aa09bf8b6af62fe0e013dc4fbcbbe285266c99d407d3f1f12f35a375f25ee", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a20aa09bf8b6af62fe0e013dc4fbcbbe285266c99d407d3f1f12f35a375f25ee", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "16132096504749a05fdec8a6eae57be70cbde05f31b3cc601e376836e770a6f7", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a20aa09bf8b6af62fe0e013dc4fbcbbe285266c99d407d3f1f12f35a375f25ee", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "64eed5800ec8672d2e7267157cc16ac242d8c295064dd781659501ad2edb332f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "64eed5800ec8672d2e7267157cc16ac242d8c295064dd781659501ad2edb332f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "8bc03ada1ea987708d503699fa20c748729f5b1d4dba80a92405238d48fddf5f", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "ba404d7f4cca51c2638b5d8b5419ea8a2a6f32244f4c59f2b12318464c7dbe57", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "6f2f64a60f5e604d9afb3b1f4ea91c2479d98affd4f1f0887d71408d20473412", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "8d849c9c6173a7692459b56f4078a2515c0275408adaca07bcb1affb55885450", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "6b31edc9002f61b62f92924c178af86d6464f4f5efba095ff25e2f829f39b558", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "cb929b69b051339cb40f07fa90bae94679335cdc392ad6b7d81f8251d0094814", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "fb9991ae13a08adbe947bf0780daa338133ecb93335db0a79c9715ec49735b94", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "560689056eab1e25f594fe907d50bb07f1eff47f97a215e6b6c37546251a722e", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "1db347fb8a4b3d7d941acffac992981ab25257d1bade4eff6246e302c45d97c9", +"T3T1_tr_ethereum-test_definitions.py::test_builtin": "ea0a7fd87a6c4c713ff4c9ece8022a9151125440a422549325a1323c53bad038", +"T3T1_tr_ethereum-test_definitions.py::test_builtin_token": "8cf3ffa1412349adb25951f32981f040b6a7957998c01e7f2cef37cb9a3ad3d1", +"T3T1_tr_ethereum-test_definitions.py::test_chain_id_allowed": "297e80927273a0219c0bb6ae9f98d9716659c0d5bd93dfda35a1df747b226f35", +"T3T1_tr_ethereum-test_definitions.py::test_chain_id_mismatch": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "49f8aa9335996de6fb0dc75aa17a4c0e25286e9ffa6341c2c445f073f39c6b0a", +"T3T1_tr_ethereum-test_definitions.py::test_external_chain_token_ok": "8dde1702d9abcbd471840274aee7e804641e32647be702cc0accbbf8e0e1ba74", +"T3T1_tr_ethereum-test_definitions.py::test_external_chain_without_token": "10459683ffd90b98f1c75eab0c73cf3f5e11783f91eb5e7c49042d5b4b4c9d6b", +"T3T1_tr_ethereum-test_definitions.py::test_external_token": "9cd505e58e78080ce26bb8c91229302e2f3baa7ce3eefdd5b32543d8ae5575b8", +"T3T1_tr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "adb572f5d591e91e33120f5d40bc76e90235acc5e270444fd53b8e84ce1a48ac", +"T3T1_tr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "18abedc63858982c3665630ed64fc56cec871bdbeac56dc6c66edfd2d16ac66b", +"T3T1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d4472d9c75e30ef33e595ea6682dbf676c3712803bab7c500fa13ccd4d0b03cb", +"T3T1_tr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b5eab2088d31bc30b8a52ba7c1346ea620dcc76140ffb3df6286a852c57ff9f2", +"T3T1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_slip44_disallowed": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions.py::test_slip44_external": "5f48f1e0986d938836c7692da81632a8a2f4726e7a6f02e8f48ab16b1e1ad760", +"T3T1_tr_ethereum-test_definitions.py::test_slip44_external_disallowed": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_bad_prefix": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_bad_proof": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_bad_type": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_mangled_payload": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_mangled_signature": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_missing_signature": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_outdated": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_short_message": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_trailing_garbage": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_definitions_bad.py::test_trimmed_proof": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress[ETC]": "23a4739efda6de29492109ad4cacd5b2fb38e2386b5563573ad735254ad7c41f", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "c7f2902e8f0bdcb4850445a1a20d495e4fe75d051f6f102e1f5db448d793c11c", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "2a118beee01ac03dec091f95d5c505f3402eba3395e4bf0fddf54c4e3acd4352", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "877ef60da781b3e487bc2fbabea6f834fcf022cb27e19f4b40000aeb5da9295e", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "0e7705c7699c9c946f37606b62ddba3880d78ad68f3585ad2db2a11bf654563d", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "debb0afe7e5c7bd89ef8c2e75262100698991984e93c6acc69020d9ecf349d6d", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "41890296d4c373be22a40414219304265ba681586ed9cfe89e57e859e48aa3aa", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "209a0d52fba68151f5ee3dd52be7f636b581ddc1025d7182737b3025c79aaed2", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "78313cc1e77409fdc7176f437bb4c08457d6cdcef2731ffd3136717ccc829c12", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "bd60b0d9fc2b2d61490e58bead3680fb20c24429d08437e724d777df32adbc39", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "83140d3fd18530b95c940fadd4cc1b8520a66fb60ed1055571e813c387a7ff7b", +"T3T1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "b0c12153feb0b6947692260017230681616c9140fa8ee33acb1a0d75268521ba", +"T3T1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_getpublickey.py::test_slip25_disallowed": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "2b23c30db19c6cafa0e993c4912d73dccc8785b540a1290d430dcbdbf675372a", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "117d4cc457036eb6489904fbc12dff34ea6062210da48586306e874d529de16f", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "e01278dd96205b080d62577c71e3d408217277c867cdd51b04c0ace957534fbe", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "fddec011b5f08d744b22a6e49fe423cbb72d45b0410b842976a03680101f72d3", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "4db70e687b68c59dc1abe4d504bf2317b63b67285780aa3b8486b6b9b6f70db0", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "f0ebbc3e024c10e316369a8ff772e97a152e8477c0f388e63806e17d38a6853c", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "e01278dd96205b080d62577c71e3d408217277c867cdd51b04c0ace957534fbe", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "e01278dd96205b080d62577c71e3d408217277c867cdd51b04c0ace957534fbe", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "e01278dd96205b080d62577c71e3d408217277c867cdd51b04c0ace957534fbe", +"T3T1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "810ed78a88c113f9ce60a53d4f9c557a52b9b0d326db5fe6820c9bf546d4ea66", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "54e0639ba5a43b2126ed33cd3e2fe1e2fd43d28c12f5ffaab8df0aa4ff791683", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "b9dd0003b99c878ed2201f82d1e45ec8c87840aed578a7dde25c97248ba13d11", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "9a01bf530548a611ee2c4ab08451b96fd5a2aae45c87d2e6f4305f4e7edfbfcd", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "ecd990d238f4cfe9c0909822a7069dd9df84c00e90050fe2b6f1a6c22953aa63", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "4415f8262ea0bcbcddffae4807d0b8944e7eeed24edc602dfd542ead3441983d", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "c70ae6680719371c22102de809d243569a3fa69c547a4058127c206ff9eca360", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "493019cb15643cf0fdf79065cef88dd402fdfb90148065babeecc20fb699e530", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5ad985c3348c739f91753e39ce7410a08591eaf01679c63172c6c2a9171bc281", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "3f37619afac711e9e2417895517a7529792cb3dbe9a925430a02e8709f877464", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "740bf5ff5979b8ad62ce08d957ddc7ead9d6726e1b1241e2002d0d99d20c72bb", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "afc2b47aad60de1cd4e02a71b5bee8123decb855605e2e55b1788f72fe91a27a", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "274973e5fc2029d1582273e0777a374a7069b3d7cbd5bdee2b868dbf1f92cc2d", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "5d55f70e71a61b5afc4cc0bb8d313b63df5e1b5bbcd6c0ae17903d97ba25efe6", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "1a041dc1d20afcb9591c6e4e2783d5051d273966b8f38184ade08b1b6b63c9e1", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "0e65c41ea898f63e2c2c70e94c613c912e77a2e926e714f4c07af930f511a57b", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "2b9693b81d1575338ae19c04def1456e86471d7d2219b577c78fbe58bce9a90e", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "2b77f1602a311310bad45a700ae539177defc32b8f507eb277af4362aa841220", +"T3T1_tr_ethereum-test_sign_verify_message.py::test_verify_invalid": "740bf5ff5979b8ad62ce08d957ddc7ead9d6726e1b1241e2002d0d99d20c72bb", +"T3T1_tr_ethereum-test_signtx.py::test_data_streaming": "0005038733ee0e2f4640ad979d417e27a2145b6229419b8e16bfab6eb819487f", +"T3T1_tr_ethereum-test_signtx.py::test_sanity_checks": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "6fb409ec178cbdeb91bac909d7e06b2d1356aa4ed308c86b3464d96d1b83f66f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-ETC]": "a911d0c5f0150554c9f57f87d5e108e1f486cea9fe13e5c8e5c22b281ec12db8", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "0f69c0a8cefad1220dc381acbbd3648cf419befe23cda457bf94bfc37aa7f4ca", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f9daf5c378ee71e228e20d032bb958e331ae9d828e42ff2e31d5bb4dd1c04f4d", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "0f69c0a8cefad1220dc381acbbd3648cf419befe23cda457bf94bfc37aa7f4ca", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-Palm]": "6fb409ec178cbdeb91bac909d7e06b2d1356aa4ed308c86b3464d96d1b83f66f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "6fb409ec178cbdeb91bac909d7e06b2d1356aa4ed308c86b3464d96d1b83f66f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "6fb409ec178cbdeb91bac909d7e06b2d1356aa4ed308c86b3464d96d1b83f66f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "6fb409ec178cbdeb91bac909d7e06b2d1356aa4ed308c86b3464d96d1b83f66f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-data_1]": "0eabed64feb7de5b16bec8dbdfd1e3451c0e5f3f72024ee10d5841cd45dae7bb", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "b4d65fec7a4b0409e83ed3c7f57a9ed75f37b0d7ce92428f599db554b162a5dc", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "7d95cc460764283b0c71948d922a0c7e2cef2f26d77beb748358fe7508845751", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "6fb409ec178cbdeb91bac909d7e06b2d1356aa4ed308c86b3464d96d1b83f66f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "6fb409ec178cbdeb91bac909d7e06b2d1356aa4ed308c86b3464d96d1b83f66f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "6fb409ec178cbdeb91bac909d7e06b2d1356aa4ed308c86b3464d96d1b83f66f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "41a9fc26e95346bd9889606b761d1431dd8373400dad194037072bb680129aca", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "259d45e88ecc075da5faa162426cafbf1b96d3958b47e11d81ba73681287bf27", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "2ad49031181e386f9f8133bf18a1f87acad986acf32ae39144d02a78fc351d20", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "ad31a630651ac2a690102761f82b93ca86b08593a03a8dc0e07b908df825e113", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "bf734bc5bb8d993fafce5451d787a5970a70cecee06469d32953112fc704649c", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-ETC]": "ddc1ca743b35759661f5c8e102d5b71b653a4f7b27f7435ed491277917c2bf74", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "36d874762368d61a2d6272a76b1f31603f3bb1bb5bd83b879ad9c6f7d6f61c27", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "73100c0084e910b0975a8983aa6227069bf61228e7f4e8459cdbc2e63507e72a", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "36d874762368d61a2d6272a76b1f31603f3bb1bb5bd83b879ad9c6f7d6f61c27", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-Palm]": "bf734bc5bb8d993fafce5451d787a5970a70cecee06469d32953112fc704649c", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "bf734bc5bb8d993fafce5451d787a5970a70cecee06469d32953112fc704649c", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "bf734bc5bb8d993fafce5451d787a5970a70cecee06469d32953112fc704649c", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "bf734bc5bb8d993fafce5451d787a5970a70cecee06469d32953112fc704649c", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-data_1]": "081c6267b32c8ecce29574bf6b0ef6fa3c65f92b8c854fdc267b4c3bda9b5c78", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "0c26f2c1c5b32a72db93e84a1f4dda2c12e0d76f471240a430d2a1d8b52973de", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "5fae8d7eb8f31e2a614dfb9255e3060356749dca781d428e4b57b69c1e15843e", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "bf734bc5bb8d993fafce5451d787a5970a70cecee06469d32953112fc704649c", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "bf734bc5bb8d993fafce5451d787a5970a70cecee06469d32953112fc704649c", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "bf734bc5bb8d993fafce5451d787a5970a70cecee06469d32953112fc704649c", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "41a9fc26e95346bd9889606b761d1431dd8373400dad194037072bb680129aca", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "83d2ecf9cf03aa641c7484aefe83cf10db3803226cc4ef621bdc65387956f987", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "a0ff98341a9f108966dfee6a2f66d8e8a5c2223dbf3970f59ebbdd9cec07d26e", +"T3T1_tr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "24b3a8b8b2899d3e9c11cd68317c33bc5fd8604162f86439ecbecd2deb96912f", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "259d45e88ecc075da5faa162426cafbf1b96d3958b47e11d81ba73681287bf27", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "0eabed64feb7de5b16bec8dbdfd1e3451c0e5f3f72024ee10d5841cd45dae7bb", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "93720dd2010b009b74eefb6ceaa4522ba89153fb08dc2421b8865fc6abb1a171", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "7d95cc460764283b0c71948d922a0c7e2cef2f26d77beb748358fe7508845751", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "31277273ea4490d011ca12513e3e527f8f034c710dc7c784ef341c39cd50d923", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "62c6e69769bc3e674535b0c132b7f555d2d5f450d52569cb69c66a4254a997df", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "259d45e88ecc075da5faa162426cafbf1b96d3958b47e11d81ba73681287bf27", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "83d2ecf9cf03aa641c7484aefe83cf10db3803226cc4ef621bdc65387956f987", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "081c6267b32c8ecce29574bf6b0ef6fa3c65f92b8c854fdc267b4c3bda9b5c78", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "9ad5631f0f224daf3820993f5430a6c53b9eac0c35879d60e326849aef0e14d0", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "5fae8d7eb8f31e2a614dfb9255e3060356749dca781d428e4b57b69c1e15843e", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7fb350fb3ad94c8d556f3d1036db3f38211a67de4fa62bc54a9b4d42ac1afe68", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "dad8c8662f80cdb17f283e047110dccf47ecc28c8ee31e7df815e5116a447933", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "83d2ecf9cf03aa641c7484aefe83cf10db3803226cc4ef621bdc65387956f987", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "a456eea47643606fdb526db3223c265e30589cfc3d8d3b21f1e04562fab35ec5", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "a456eea47643606fdb526db3223c265e30589cfc3d8d3b21f1e04562fab35ec5", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_fee_info": "4c7aecf03874e996fc20e1c68eb97c61eb3be6833fc3cc24f7e43df7608b5b34", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "db8991dd23ac3a433173ae6aad220f51dcc20f73e4ad500599f5d9068088c343", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "db8991dd23ac3a433173ae6aad220f51dcc20f73e4ad500599f5d9068088c343", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "cba8e0588be87d631efb098c2c13830dcccfe66e0f09f7db2e5b2b2039f74285", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "cba8e0588be87d631efb098c2c13830dcccfe66e0f09f7db2e5b2b2039f74285", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "960189ea05cb3d9f52f8b0ff78aa0f160bdc2f58583815419aff14e6d479f283", +"T3T1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "960189ea05cb3d9f52f8b0ff78aa0f160bdc2f58583815419aff14e6d479f283", +"T3T1_tr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "ec1d7a7cdf13c7091dc99db713aae0cbbd3392b9b0adcecad0702daadf7ac154", +"T3T1_tr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "fc5f9009a8ef0d45174ee94b7158aae8dd2b263c06304acd76b94e46608eebab", +"T3T1_tr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "0fd0eb0df9ba7ef7410ed04fbb6600b527c2ca535c8717a7444c74bbd7b3c41d", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[128]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[129]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[16]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[17]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[1]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[20]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[21]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[256]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[257]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[32]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[33]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[3]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[4]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[512]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[513]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[5]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[64]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[65]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[8]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[9]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_signidentity.py::test_sign": "9d34e98c31f6a803bffa410b95f0e68be2038a1d14507d7ee8d0e732badaffbd", +"T3T1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "8d607f8d554d251a20d66aee2b87fccdb8328bc24a7e659390ea4073d1e479f1", +"T3T1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "4cc6b9e864e9717edd3315563dc4a933e5e492600fe3a2c550513bcdf82e1b7d", +"T3T1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "707023efe1fc9b5eb931d7d4282d8634c5f2fa31c505307df538c9afc6bc68c3", +"T3T1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "ef1d21ac643a301d707a7d2003e623475d04d07e206cd48db25d75da46bd81c9", +"T3T1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "d2bb6572bcaabc684032805e4e6cb824a93058a224ad2e39ea5992657d34d1e3", +"T3T1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "c036e8fed14be6154808b0480bba5ad9452e0059510f3f309c59af0aaa5bef6f", +"T3T1_tr_monero-test_getwatchkey.py::test_monero_getwatchkey": "05f9c2dc2ff448fe75d580eece8db927c430d7df4a0831678c1901e95b44a4f8", +"T3T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "f7e30ed31985b94e3524a850c86401a2f9286de2c362305e223a4fb0d23e7b96", +"T3T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "a0f4b57f57cec681452d415e3260312cb2db798d837f67b6a2ca2cbb3a05fb46", +"T3T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "5036961e0de91fa81d2adaf7366b6b6d0fa35b616897a82bdebb409276b61362", +"T3T1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "1a5d5ef3d81710c7a0a113514ac287b37d6ab66f284bfe34353dddf634714ea5", +"T3T1_tr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "600df3f4c22a8b3ae8d52f88b3e456df16397cf274e8b6f17d303cb0dae11ca9", +"T3T1_tr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "dc961b8eba1aedc7dace13b4c1431313153e8601ad4bc345194a7b4c0e46b202", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "04de1b950d0dd63053dddaec49ad2b18031371f86259e40584fc128394dfac8c", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "5a32226f12071553a9a6777093bcc6efbe3daf81d35a256e44404fc733a89915", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "aacd96fad5f15bb23f8e123af355a6be2fee3db701e8a47972913bdc6051a410", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "303283b446117ec75231741aea20a2e6e4ddac20972e61fbab6c33ecb83ff6cd", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "cf88ab24fd370dab36dd0dfdcbbe9346a50ab73b2d3e710a56ce2e48f34f84de", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fcfbf2de8fb1e26e7cddb5ad2fc3fafa3cfc94179076098f85ce78de8b8f4b8d", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "64c0ffb775049f5ab9a5bb232402e919c9726238611db9596f27260a79ae7138", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a3bde177eeb96add70e3a987f6004e396f5494900804165f1e4778ed78a2413e", +"T3T1_tr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "8384dd173b7334e043f85142657e5d42520b2aac81357c919a614f4b29d59fcd", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "a97a479a3d1ae15c213610a3e64979bfd41154fbe050e9530f9eb202653942f1", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "04de1b950d0dd63053dddaec49ad2b18031371f86259e40584fc128394dfac8c", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "5717f29f717e71e88c03d2cab6e2aecfc267356092ea7f7232ad8808687ea127", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0dfe4fd937c7d9aff27018f2867005489c07bd67e96eab33157bd3e0dfddcb28", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "3812fd73182789fecf46d613e157ce430cee4898e835b63cda8b40e1e211152b", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "1b7ec7f7fcad1511a1ed1652ff000d3c411cf8e21c2f6f2452b0308e465f7b3f", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "d037c4a1042ab0d6fe30abcecba0d711e102ad50187f3c1300c8f22e06808adf", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "8c7da7e699e5998fe8611b1d3055b4f95616b2f4c6234f1ffd54812a855949a6", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "a878c469548f4dd9aa6e7e1cfd51064511449762f65fa7cf8c3af5d57f70c8fb", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a8658d8b88c1749df654b7c807e7810c66e58206c29d74b35e490b4147aa744a", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "47f5553512b74aa542770d4ab59e97f7e13bd86fa186332a4ad05e7e7b2b77d1", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f57e76a3bfb0a31a6474d7ab7eedd538b46b74c44359f34c4fe47470dbbbe456", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "a489b43daa06a3c578badd12bd579fcb04eb7107e41ffb210134806965cd120d", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "3f0a62fbc827bee4d553f31867bcf38b0e881b5bc341aa2f1c0f7e308dca4085", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "422623679c6decd346b4c748c7fb984ee8415c213d5ed891a562600b4177e946", +"T3T1_tr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "de02d9661dbd02118e93b5a4096502f1862e5dab6a9e8e7f33f3e9092185d98c", +"T3T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "181b5d50320bab0867737c837cf5a286e058eff2d0404145bddf3fd0fd11df17", +"T3T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "1474758223e85341b2c84503d54459df3fd73e7e8f91ae22d4b93fd3733eea02", +"T3T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "76f873ca5b1bdb8da77d3c36719e21e73ecee3deb557c515a16771ec312dd578", +"T3T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "ffbca6197b47984f2524dbc8ce675fe61c700fb41c889237554a697d94d51615", +"T3T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "56ba35bedf69168203f31fe753239e5cc7975888aa327f33d49b11a4bf9d9c1b", +"T3T1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d94ae74909e5101988f8028320264cfacef1a044f3d59aa78a446f4b9fa0d69c", +"T3T1_tr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "99f5a9fd0bf6297bccf198866eac340346a6e230ac8813e2992ec14a40e58733", +"T3T1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "5afe16e1e5c8d90d2d795434e780a81cc1a882c82ca4945b46039d748ce51bff", +"T3T1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "f7bce0004c84d4724ee487d06a8ee71fbed54b77eb8731e740bc36f09bb7c380", +"T3T1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "e6a97430be0895c50e9ae97254cd88ec46638715661b2c194840d75972e90ca9", +"T3T1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "2eceb97fcbbd07ee8ce3812259df057a333f9596264bd86cd8e9781d30b6093b", +"T3T1_tr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "5f64cbe72c519250587798e4497210c4567d495b75d3955f2a1c773c84b4e8aa", +"T3T1_tr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "705a9cfeb3d5febafda5fb27bf0e06b8dc0a319b735fd4734fb3e2aad487becf", +"T3T1_tr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5708a719cdfcd0f2ae4aaae7433db293c39355744b3ca7d9a3056d1468d74187", +"T3T1_tr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "8c6a77d2af7cf77856f184e14be64ba4db109cd304d7e6bc4cb71e23dafb0dc1", +"T3T1_tr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "83c666009b60470a40d9f5b26556d39dcefc4831e209b356b96e57451f0e729d", +"T3T1_tr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "f2d551f70ca46c38ee4cf103c56ec2d9a94b44a1fc96384cefb41317e295124a", +"T3T1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "a67a3a76642baf48b0ee0d21448ac5eb72b4785554dc73e6a099096b1f28472e", +"T3T1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "4dca8b45b3c435bfdd2b8075df8c7eda43799bcc4a061c6d2560a3ff8459017e", +"T3T1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "d98454b4e1e9ded999042dab9d15be79da9a3dba71c90ecac05cbd432944f436", +"T3T1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "f55231a6c0b14d2b201ace54f660cd1a1f151889f4afc53630366abbfd7bdfee", +"T3T1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "c6a0cb702646c11c02683bd6e811dbfe48e1daa01813ce8d6dbf4130a1ee4fe8", +"T3T1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "2b6c3801ba590e8b58d43f4daa0f437a988ca8cb9b4521af7997e7a785b3efd8", +"T3T1_tr_ripple-test_get_address.py::test_ripple_get_address_other": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "316833e68950970709012b2706c56a1a81e8aa2e7f08ae24f455026dfaef30a6", +"T3T1_tr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "886c8e4b547d648ea566a2bc83d7c774c9ebe939e85f2d29106a9fefc45f0616", +"T3T1_tr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "868963f878fba67eb1c2046e917b290d203cd85a56d55a94cfd57715f94fbe8f", +"T3T1_tr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "efe76541e4d8abe2a58bfc52cbbddfd6ba0cc70d1dace786ecd0661bd2e7a0c8", +"T3T1_tr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "bcfa3ec207db97e4078505a7e08c0378a28bbfbf189f83962f3ef29c2ea7574e", +"T3T1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "8290f7fb15116a09f50d1c903aecb97eb46e3ffdda5e41affee87e8fe2366a48", +"T3T1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "e7d3a2d48064a4d9e44d8610540536c3a2f415a5135d83c330899f350a94eb8b", +"T3T1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "f3386bba69ecd124ae65d61958f52c4e1bea2f5d42e0c2b21ede113511c8cfc2", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "79a3cf391d8b0b2354bedfe2a7d66967f3bfa7729fd7b95d34e8d88dfa2583d4", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "05b669f06ce6f278177ea733c9c71c14f75fd22c1dc2b51a09b6c4a67f7e03d7", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "ac584c5a12ac52bfd1cda4137f00f444f15ce1c3e7ff34896aae9c05c576f758", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "9f8929e954813680138300a487c71e281a3e2cdb0d03d22ccb9a0584dc747b66", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a88c207ec09ca1a22ad5a4676631639c92bbf925e76ee64f3111a05bb80fe4ad", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "0c0d71538e89201bc1542661abe322008f8d6c54667edfdaf47f3236e8d52034", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5fc2d7102f496a1a97c86b5e3b76617994a65d263482a6db2298f1dc277d0347", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "d95bf4da36af40f134fbb027d19027f21d42cf8de68e39ad77932db6a3aa1c36", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "aca4e7ebca8da0f336cd384808137f806f3249e91410a804df825548257aca8f", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "2c53995b047d086f93db42f3e08d86a05773fbc5938166e2334aba2405810140", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "6b1eab9898288262d4fa71741f18fe705e35504d1d78a6f5cdd190b8fc73bd3a", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "13818ddfbcf77277318a0d5d875c8056f539642dd6181a4b08b7b6e50228b225", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "b2afc82e226c0dba0596dac1dc717667840f74e4a197fa86f88a884aade854b4", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "6469b64f7a102740de18c4dbb9d4497edf7a4c8c562b8e638843de06daa8bfd8", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "27434cdb1b22b340982f4fea4c97fb50556403a4c6838a787bd165b65eece6ea", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "2bfd81d8a5b40aa43fcc7d60f93df8889c39afd5fa3c65e64dec69e218bf4cdd", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5553289b821931d89afb7fc9dff26b032ebefb9c43fe9fc74dc53596363b3051", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "bec92c61230a26c5f2d606710c4366eccc836af3ea6c0d45724125b63b94c230", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "e4f2742685a17f249b462e9318955b089d2d94f174ebfb8d0385eb645c8b030f", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "9303d64013b6e615f81c34201922afaf71933a22ea6bf9f9683f8f794f15d18f", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "5550dc3ce42814c367aa6b81c386ae8c35e9c6bc15d93809912c41db20329884", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "5550dc3ce42814c367aa6b81c386ae8c35e9c6bc15d93809912c41db20329884", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "5550dc3ce42814c367aa6b81c386ae8c35e9c6bc15d93809912c41db20329884", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "af9374a1076bf734f088eb448732001b6c00eb172c0c1fa24b90c9594ea83478", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "0b358d5784812c1789cdf13fa1ee65bb857380e8f6ecb8272f4cc6a0b1620996", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "090dd5eef2be1dcf9da7a39b86ccc86d051106f63f1e1654f714f4f086ed5cc0", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "8f7638c71ed9899241de225852abad461f4d9d11c7cb05d59804edb2086671d9", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "afc9fdb502eb195c124fe7095177295e84f0b041a3b3c5382951904843a1dd72", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "e0cf130c533cb6046c717d7c073d292a9858c1f07046f8208983f76fe4e0c10a", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "9c5d71b6f9768c91c80ba02797cdd44ad24575272b34fa88c14de263c0b85804", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "13212b8262a9035578c5774c3b9269ae8a426832608977fe022b04b11c91f31e", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "a891ab38aaa6aafda690da293a75511665c88d6c55e9caf937b0a16a19f1efd1", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "f7b4e587ce358c03026353179cd660b5a8cbda691385a32d1397d197c46b5659", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "afebe9955168691a31733edeced431960a83d3ece2bfac1dc31875840f78973b", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "aa1d61db3bd3bdf6b032ef9e41af921add35cc5cebb40267e87d5e88b3bb6ceb", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "a37303ef1b394fd164488279593e6485a5a6e72df14c88d1033a550d77bc1141", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "0ba04b406a527889763838f70a7bee5a6bd0369208dfedf5fad904cc941802d0", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "0ba04b406a527889763838f70a7bee5a6bd0369208dfedf5fad904cc941802d0", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "cd21eeb77f0ef19c3c3b20954d48f77076918d984622a47ebba8133694f915d6", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "5ea6934b3e66781400fb6596f16edb612cb5250d4e0a3a9f6566c7491cbbe167", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "85814367a42fbb446bb89f837f36d6215c4c7acc8f4cb236b8b852132655e514", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "cb0fc4770dd70ed0f5cd4e5855e58d76cc4bdf795e13fd5118ce90d79d03a88e", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "ccc9ad4a37e941c8660327580c3f7cc235e14b690028f0d26c1d2f57c45f76bc", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "8abeaef8e7bccc4fa5be4e0f5a1f6a9e864b8f3eac72d5c2e7247f76341d7903", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "1b90da5e7f5dde927822ec58636fc7ae85655a63c759802ed78168b1cf24452f", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "615829d4a0e8fdcc9fa15c1ac3cfbb84c35814020336ab0a11158c37ff02f87c", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "a300cf1a78150738b1c4c0bdf44807c3e2adacc53df7600fc46d6061d78dfcbb", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7bccfb178bde2a08c5b64e7947344b6bbb5a93c52e115b453b9ab916e32f2ebf", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "2fbafd599d8ddd75e2ec78fc91238179ad9a90df0fcc9f9d87fceac3e743bd26", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "0379acc37ce4e85343bf9d1a07363474d37988b5dea80120b53314869ea3f378", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "2d5c9e220ddee55d2a56ffead2dbe65738aba2c03dc79cdee0a47cd4b7c096b6", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "36f048ef5feff042a800804a5fe43c87be8bd190c63ebd82e325050a08caaff7", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "d3d69d0269bb45e892f649b04dc342080780644badf16bf411195266eab3ab30", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "f9ac3194430b870b6ea9bec87f421e5d0c257d64e47c9270ed3e95413ffdbbc8", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6a3351e6cebb2f9ca18449ba323069f459fc16a6c67b7fecb77f97a0d8193623", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "f06978d6186fa50eafac60d4f277bd33a3098bcddfb72f3bf33e75767a4ecd9b", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "420df7790fa054044346dea5a64a0ed444a4582b706cfdf7dabdb00c94681980", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "01b0b615109a6bb30c0fca203f74856d6725c0728628467a087216dde28d7db2", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "b4598db83af5b373fc45033f56e3f4a6c599f1d38280392545f51f784728834a", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "42d6ed8b71b7fe9346b9cd7a62716439f8db660e9a332f25da20b886f6fd421d", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "090dd5eef2be1dcf9da7a39b86ccc86d051106f63f1e1654f714f4f086ed5cc0", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4c7e4fb810316ff888ff96cf20cb25d3e2c68af7c910e14839497f6b9e8a3f29", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "0cb43468a782d03fe588861f37ecadeee13548af0f04da17b2b36a862bc4ea23", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "196ac65bc3b8681d760386e31b5c717ca0d290da472405e7305764ad25fa6aab", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "e2c740fbcb616efef64802153434e5c806bba14fba906ec3484217abc5ab76bb", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "b9a4e1aaa6e67df6cecfdd3ba95069bad8660cd21bbf0f1b24c36fc1b10a8d91", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "7608d111f7a9ddd12967a653fe54097fff85aa173142ebe1fbaa75e2935fedc9", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "72fd68078c54e39aa39dfd00ee56fec666ac5139b3df0347cdfdee48d4ffb7fc", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7edc64c8ddeeb2fca1e6dc18ad787f9abcbfe038a1d541b567c9e2ac32ea63c6", +"T3T1_tr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "6104f3f53eea15992d75b02b715f758f33b8862f8ee61fabadabea96c279469c", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7ab23c5f043ab2293d22c288dc268ea3383ea2dcecf51d6fb042a31086ba0f26", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "5ee6f619f8539f2b37b27fa6a1221e088e5ed83f46fafbf04ffdb7e05f5bd351", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "771e517ef3a3781a6b7c9ef7c20af2a245a1862a5c30e7a4280ce1550d69cd74", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "019a1c69ca54457857dcfa0a25c620122470cbe60c1c6aeb4025122bbb182822", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "6d6430ed56144b83665c18c00bc7638064da23a9b56f251e9c5b91742eb754a8", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "a58a2c0c373d04e2009c096a87f17d02e21a4ee3b2566d6db315d75e0182771c", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "1159538cc2c8f996a8e8a38844245f6507e7904857ce7ec20046c17d18cc1fbf", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "3719678507c255e78c9edbc59328d05c380a6a0055f2dd2fbd82ccf3b392aa7b", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "fd32a05d7bdb5ddab3cf69e755ed632bb18fb371fc6abd0293de2cf64df8493d", +"T3T1_tr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "107ca488ff6524bab833009a7d2b3f889836ddaf49c8bd2b9120bfde622f1e3b", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "a84b5b4174e58fd06621eaaace0d40184bfd05a331d12480b47644541a2b26b1", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "67c202e47b9d5da7289ac237d66cbe01e2c963c61ec327ad79c7a0951cdee9f2", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "c40fd5fa869dfc2764cd0640e3122e854feeb5cab76f46d91b998bada20682a0", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "3608e275ea0b61e0cce3d23513914df8820feaf2d60bdcf676dc655b23dff796", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "279ffaa02cee387c1338cece89594307fe93d3a110052c18030f0bb93ff00830", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "2481a69a323c6ff80850f719ece9bb72e8f3a22444030e8ec68eb44744d7774c", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "1c0c401ffdd164b9b8aa3949c1025f71ff9d54168573c38cbc7f216c3ebe2d45", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "2f6fe4aae236838250c1457813f963ec6389584bd293902f5dcb4ae29132d3ca", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "edf4d10d3f95d9d7d163281c508d6c4f337769393161565e208baff6f4b6bcea", +"T3T1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c29393b6b02effd847263a9485be7b6506e20ccc4123b66f4aa9a340bb708a0e", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "dde624cb0af4b3e81364f01d1821f9719b64871479bbfc1a7f68c5cd7befa25d", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9a52c437bac0540d2ad3835e35a9a99687fe5f004ab6d887949e4e8293ae39a7", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d4f5d490c49d272a82b21cca81945434f3a7e97583d5ca17d2e4ea3658ce102f", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "cfbc9c400fab2ae7575078e14528d7b412a62c944c30e99c9fb8467e2e950d91", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "e1833ab8d78f94e56306c38d98e303f1b21d3904af453983aa4cb1cd076985c8", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "8663d25795bc07c5dac980dc02ad87e32823c5161d7e128ee58973daed3d9994", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "1c59a0bdad69b30fdcbd185a58427389785228518fde06bf508c542808ba53ab", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "525045ad3878280655b81235b6a1f60c1be39a54c8c796012fcd2aa4d05f185c", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "64ac0d5956323f60bfa620e889d7554f3bad9ded345e8130ed7736531b9b2cb9", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "6542dea5bb1bd54c59e0f257f19f9343a58c96762ad3d5941357d38fc0a27bc1", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "06bf0c4771aac29881a04030416c2f257fac68f0a3b537c7b3abda1d021bbf17", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "3174e5957b06c870c5fab4de10c69131b65b9356c836b6dfdce9c1b744911897", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "c3349c77e52c2a5003c6b6703b4f8153f12ae8b8b2233b34ae2a9cbb6db32fd1", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "2faa353819d31d855068e87888548c70247ac70a184ceaac63a95f8432271e7d", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "afc3cea7bcdcf791721fd0b6e0cc6009024cad741d43e467a67d6a7cc7a81e1e", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "ae751aafc536fcd748f8f793d64a0c3b11a810353e35abac67241daac6d9bb83", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "472259f15d6e1f4216a247ec6dd87040b1a875155ca227ec062e608edff63729", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "62a1ca32bb510387a95f5878805323bbf5f5daaea1a502f7e699d7e4b6d22c59", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "c612b85d1238ac2719c65804f29675e9139891596c37d52f62213c856d9dc862", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "87a28033148073ffec48795366ae577976582be559b7baf8309234269ddbadd3", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8ba8131819aff03b84840b1fe131da1c32a7cee5b38df7e3e20419cc91c3cdbb", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[memo_id]": "6813a4fb7b610f2a31a2fb3ce1317d6cbe2f7e0c4a58952a2b1608b1f18fb581", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[memo_return]": "e1c6adaed09365abe6e11dd87aa2d23e25f82b7f1d7582dc47d0a70f208627c8", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[memo_text]": "8dbc6ca636edde7b9eca11f860609cf077f1fdf13fb175f00bc3c1b4893247ba", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "49ac790bbff5161104724f90a52dcf037fe883744fd05f1d2327af2a49e0690f", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "0ce2ddd8b02bc5e83c867929f4ee860092a7efe26d53b1c44df19f256969007f", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "554ac20968d30699709de79cf41ec9a064a569933bbb83452fe55bf5139b208d", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "021f2d55810d0659c4f8442505f0f3aab7b2a133d47a90579a6be4e6b6ba2f78", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "a18f820ebdf9e48a18aa18df52c9a5a1a6e203a092d344b2b78e9428e52783db", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "472259f15d6e1f4216a247ec6dd87040b1a875155ca227ec062e608edff63729", +"T3T1_tr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "5bf6d48dc05af1a1aa5167a1378d6ddea3c45d05c255ec20cf0d5de839329c53", +"T3T1_tr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "43dd22997c2094fa0309858b02c856437e2cd1bdb88a7f7fccd1f3e38d6a0b7e", +"T3T1_tr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "43dd22997c2094fa0309858b02c856437e2cd1bdb88a7f7fccd1f3e38d6a0b7e", +"T3T1_tr_test_authenticate_device.py::test_authenticate_device[]": "43dd22997c2094fa0309858b02c856437e2cd1bdb88a7f7fccd1f3e38d6a0b7e", +"T3T1_tr_test_authenticate_device.py::test_authenticate_device[hello world]": "43dd22997c2094fa0309858b02c856437e2cd1bdb88a7f7fccd1f3e38d6a0b7e", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay": "5fd8306078ef3e6a90a107de08cb0f71cc48cf568324886a5b3f5fb7bfe2a4ca", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "2546c74ac7cb072f1c029666c944b8a23a53c01bc36836b4a25fa21b205a3101", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d479417ec5dd0bb247f703ec00180c882fce3d565d2030a8ee74a5cfc1c406dd", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "1b399d269f88a9cb4c1aacfeb713e502a3e1ad52e0613c6e477f969d8f1a377c", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "c9d6be93bc1f34ff983e2539808ad4d6a5d82773d79cbbc80e5c9b8ec8e28ab6", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "78c903e3647b24e22dfa87e76b52189b20e1abfefe535fd6960d4b7b550f2113", +"T3T1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8a4894b7a24770969da1e78654ec67cf705d01fd13e45ebe3ca4a1338ae8e5e3", +"T3T1_tr_test_autolock.py::test_autolock_cancels_ui": "5da53c171cf1922fce23d0ca83572f9512c526c267a2173f1f38f16bd0299e38", +"T3T1_tr_test_autolock.py::test_autolock_default_value": "e6b9b3e11dd555bb319a62e5ab3d41b280889325243a4a8ff6ee63afc53d1adb", +"T3T1_tr_test_autolock.py::test_autolock_ignores_getaddress": "4a094bd793815fca3c7d547cd85f2b3f1162c12d9c3f26468471f101b8584060", +"T3T1_tr_test_autolock.py::test_autolock_ignores_initialize": "4a094bd793815fca3c7d547cd85f2b3f1162c12d9c3f26468471f101b8584060", +"T3T1_tr_test_basic.py::test_capabilities": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_basic.py::test_device_id_different": "87246b0b9fa7abdee4a7fb72989ff0de9fcc216c5f0167b0c430e5252ff0e74c", +"T3T1_tr_test_basic.py::test_device_id_same": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_basic.py::test_features": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_basic.py::test_ping": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_busy_state.py::test_busy_expiry": "299833033110578cff70624a1c17d866e4a881cce76c6a3339d7dfd94557966a", +"T3T1_tr_test_busy_state.py::test_busy_state": "6967a986e7ff981db49ed8369e236852344114e8ec0954251d83ea24e6ab7791", +"T3T1_tr_test_cancel.py::test_cancel_message_via_cancel[message0]": "8933590264a188841e5c833214dbfe42954e5ee680d0281ab411b3c60d0c7ece", +"T3T1_tr_test_cancel.py::test_cancel_message_via_cancel[message1]": "c9304d32ff78a2c2ef408b617b9798caee4511628b8c720b2fc67c7b87acc244", +"T3T1_tr_test_cancel.py::test_cancel_message_via_initialize[message0]": "8933590264a188841e5c833214dbfe42954e5ee680d0281ab411b3c60d0c7ece", +"T3T1_tr_test_cancel.py::test_cancel_message_via_initialize[message1]": "c9304d32ff78a2c2ef408b617b9798caee4511628b8c720b2fc67c7b87acc244", +"T3T1_tr_test_cancel.py::test_cancel_on_paginated": "a72041adfd693051e755aa31dfeffa1882622639a09c035e8bd856869a1c6bfe", +"T3T1_tr_test_debuglink.py::test_softlock_instability": "d4bfd18c037fcd7a0f9f81d9561f1e0d648153407868b4c153708088d572a368", +"T3T1_tr_test_firmware_hash.py::test_firmware_hash_emu": "83a274e7e834e5c48e1760e11c30e8240c434e0d14fffe633fef6dc3f063a0c9", +"T3T1_tr_test_firmware_hash.py::test_firmware_hash_hw": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_language.py::test_error_invalid_data_hash": "e0141f359979df2004f5af8220174788dafc5b7bdefc2ba753aa388496a88595", +"T3T1_tr_test_language.py::test_error_invalid_data_length": "cade6cfd58958ee24acdc865da6afbd698a2152a99f8f49b522a88f1f6ff9ad3", +"T3T1_tr_test_language.py::test_error_invalid_header_magic": "cade6cfd58958ee24acdc865da6afbd698a2152a99f8f49b522a88f1f6ff9ad3", +"T3T1_tr_test_language.py::test_error_invalid_signature": "cade6cfd58958ee24acdc865da6afbd698a2152a99f8f49b522a88f1f6ff9ad3", +"T3T1_tr_test_language.py::test_error_too_long": "cade6cfd58958ee24acdc865da6afbd698a2152a99f8f49b522a88f1f6ff9ad3", +"T3T1_tr_test_language.py::test_error_version_mismatch": "cade6cfd58958ee24acdc865da6afbd698a2152a99f8f49b522a88f1f6ff9ad3", +"T3T1_tr_test_language.py::test_full_language_change[cs]": "5c03c66d4f13c63012f65aeb0c3b32906058eef72b50d5b7916695cb55e52b98", +"T3T1_tr_test_language.py::test_full_language_change[de]": "f009bc89255412be2677b0a8838cdf8516b9539ebda878170d31e7a53a861c45", +"T3T1_tr_test_language.py::test_full_language_change[en]": "2f9df90af8d03a4ee6de1e1027cf85d5ecf22c6620ac478350912b5d42d9215c", +"T3T1_tr_test_language.py::test_full_language_change[es]": "c42d8a0230ac5ea7b39ca96bef9f189a37b6ec4805cbcc57f76c7139c41e40b7", +"T3T1_tr_test_language.py::test_full_language_change[fr]": "dcde12a6fc582fbbb1343216280320839e9a597e25aba2e25db31dbce7842488", +"T3T1_tr_test_language.py::test_full_language_change[it]": "e46e114b920fc025f6d11627666fea66e666077ff89f93a7e9bee938e09f06ec", +"T3T1_tr_test_language.py::test_full_language_change[pt]": "2621f0d889e67c835b76b751f60a428b7d20a8d0a816ae639568f7ce83a38b6f", +"T3T1_tr_test_language.py::test_full_language_change[tr]": "04b7f6f89cc406b4bfc624fea1f3ca8d71d9d7f6641d7ce533dbe6ab8e490dc8", +"T3T1_tr_test_language.py::test_header_trailing_data": "8e486a42bc5bca448edda236a1ad83b4df7542e6403ebb0167754374cc89d3a3", +"T3T1_tr_test_language.py::test_language_is_removed_after_wipe": "ede754019532e1f65e9428a96e6b2da51a809e9bc53ad8e8118c5d956cfb770d", +"T3T1_tr_test_language.py::test_reject_update": "cffebb1e4640575af8733356e5b337ed944c877036062a61feb94e6abc1b5778", +"T3T1_tr_test_language.py::test_silent_first_install[False-False]": "0d8f0166ad16996f6de42cd496e7552621682d8440d4f434da81e9fa880f809c", +"T3T1_tr_test_language.py::test_silent_first_install[None-False]": "0d8f0166ad16996f6de42cd496e7552621682d8440d4f434da81e9fa880f809c", +"T3T1_tr_test_language.py::test_silent_first_install[True-True]": "a5d709cf5050b9fb415d6dfe4a54cd5caf3768f584c4e3f76b34041cbaadfea5", +"T3T1_tr_test_language.py::test_switch_from_english[None]": "bad766b84f61eba1f4387d4a77159dbfdb119b144bc7468555e5f68f1bf5a144", +"T3T1_tr_test_language.py::test_switch_from_english[True]": "bad766b84f61eba1f4387d4a77159dbfdb119b144bc7468555e5f68f1bf5a144", +"T3T1_tr_test_language.py::test_switch_from_english_not_silent": "61e3f8c6cb38e8a2953320bc00953da25f830421f95b6308882acb14a1c237dc", +"T3T1_tr_test_language.py::test_switch_language": "de598b5ad75de84e1169d0d98afc134d3d6e1464be1de1bdd4635b77334f6af8", +"T3T1_tr_test_language.py::test_translations_renders_on_screen": "af4681f78d393b7df656b3ac32c620fb0a0c14e30d7f3c85fd107921759ddba0", +"T3T1_tr_test_msg_applysettings.py::test_apply_homescreen_jpeg": "d1556cb335a73a3b4595e76ee14cad0205cb83a74343f51ba4ca857b02f4a2ea", +"T3T1_tr_test_msg_applysettings.py::test_apply_homescreen_jpeg_progressive": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_msg_applysettings.py::test_apply_homescreen_jpeg_wrong_size": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_msg_applysettings.py::test_apply_homescreen_toif": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_msg_applysettings.py::test_apply_settings": "19a7ac3e07c1d5beb269b4192cacb9c9131eec9ea5f9a903c69b512af0816bdc", +"T3T1_tr_test_msg_applysettings.py::test_apply_settings_passphrase": "9c63717e57800b9aa1c59e622808a8784ee2aa4e6490d4a77d291e44df49a2e2", +"T3T1_tr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "28ba6869b5cbe0ba41c62dbe988a68ac32f3e7c1129bd331bcbcdc397dfce59a", +"T3T1_tr_test_msg_applysettings.py::test_apply_settings_rotation": "8b41c7d7cc7a056a51851bfc85925266941a754358b3da973382a6a79b1143a2", +"T3T1_tr_test_msg_applysettings.py::test_experimental_features": "2bb5fda8f48a4e2c9e4318a3c674d86ed0af2d379f9617769ed98866716a5f28", +"T3T1_tr_test_msg_applysettings.py::test_label_too_long": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_msg_applysettings.py::test_safety_checks": "3e773c71b56a375085921d1b190ac68f90ba21d855a80ff3410648c2f439cb00", +"T3T1_tr_test_msg_backup_device.py::test_backup_bip39": "5e7d7cb20ecaed2c6037fcd02468346462e77747f406bd661238eb8fda015a16", +"T3T1_tr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "c0cbb6b974b23dbb5249cfb19cabe39e600967357155884b9211a32c7590e8f5", +"T3T1_tr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "6a14df3faa8161f76904450196cd93c283255b8ec4c12122412a73f14aed7832", +"T3T1_tr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "7de3f8b26d211ba9546fb4fa6233fe5e7a3993eec0368446fa38a5df3abd9c9c", +"T3T1_tr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "4c3f6fef03ca84e60cf72c1752fac5969df16eb53b0a1cd8f1aa4d865efe8698", +"T3T1_tr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "4e337486034c2d1a5023587c64499e2ecffcc2be2571667e5dc4559e8acd7a83", +"T3T1_tr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "be81da13e83d6c5be4c32ac3d0033c8708a3e19196918ee29625b57e4c104098", +"T3T1_tr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "e4392906cb414b32843f07e5a42e92388cf3caf4175f773a03f07354042090ef", +"T3T1_tr_test_msg_backup_device.py::test_interrupt_backup_fails": "566cc7496278397d288d8e81675962b61a79979a31b5eb610d0bf5d17d8de145", +"T3T1_tr_test_msg_backup_device.py::test_no_backup_fails": "f4c9248217fd2adf594f3591643431662604fb66be2dca336a715d3ea555df88", +"T3T1_tr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "1530432bebdcfdb76b6dcb0cc7b11b26dc9a9f585a00f851fea83db8bf2de487", +"T3T1_tr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "3538a726d0b0c30a63c2a6bbe74657aceb5bfbe18a2d140cb355229b7a2d4863", +"T3T1_tr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5d85cba7b61927d60581ec9739eb6e110452737d8234576a8e07390732ba30b3", +"T3T1_tr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "a93bd77e3620cd7fd4a23d1f0a20d85ddaf1db9de96bea5779bb954be26e60e1", +"T3T1_tr_test_msg_changepin_t2.py::test_change_failed": "982311c8f775fdb983323bb0b7a24f0b082563b1bacefcbbeeb547f68a5b2116", +"T3T1_tr_test_msg_changepin_t2.py::test_change_invalid_current": "38dda5c25c757e8ce34696c43dfb2d420c6d112be495b2ec4c8c6b7be4d22e46", +"T3T1_tr_test_msg_changepin_t2.py::test_change_pin": "46904c4869673021808c2c6f8b9a167788290ce8e9b4b5a94080347f8aa96aee", +"T3T1_tr_test_msg_changepin_t2.py::test_pin_menu_cancel_setup": "85ebcaadbee2ed15b24ad6ec9c03416bca9cd678d006fb391cccc4cc38b7e62c", +"T3T1_tr_test_msg_changepin_t2.py::test_remove_pin": "154ac11659f209b79f0b0e82e9fea2f0663a3bb6dfe6975afe491cb35543ff7d", +"T3T1_tr_test_msg_changepin_t2.py::test_set_failed": "e6ef16bc1931369b4af5cf49dca76b4c9c481c53a1924af0647987649a5f4d0c", +"T3T1_tr_test_msg_changepin_t2.py::test_set_pin": "71830ce1e0080667283bdcd1e67505e4ed1277ad9e6a6c15d60eb73279cc0652", +"T3T1_tr_test_msg_loaddevice.py::test_load_device_1": "e3b5803f6b1913951000b8116ab3c23698637764bd60799903e4caf893324911", +"T3T1_tr_test_msg_loaddevice.py::test_load_device_2": "3bb5231aaf36998a3b89b4d7cbb2b0a21bc7bd9fb86b21c4142131d18223ef78", +"T3T1_tr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "e3b5803f6b1913951000b8116ab3c23698637764bd60799903e4caf893324911", +"T3T1_tr_test_msg_loaddevice.py::test_load_device_slip39_basic": "e3b5803f6b1913951000b8116ab3c23698637764bd60799903e4caf893324911", +"T3T1_tr_test_msg_loaddevice.py::test_load_device_utf": "839ff772afe392d571016b593f026a953840584326307b8f761dd189e9be04af", +"T3T1_tr_test_msg_ping.py::test_ping": "8933590264a188841e5c833214dbfe42954e5ee680d0281ab411b3c60d0c7ece", +"T3T1_tr_test_msg_sd_protect.py::test_enable_disable": "f8e09a0aa3dadd89b42137f58fd933a3e44689c0121cd1d936a7a176cebe4a8f", +"T3T1_tr_test_msg_sd_protect.py::test_refresh": "4f7c70c9a26db338a34f9284afb42d924f7ce15d01b9c9ac3d10fa9ec670d150", +"T3T1_tr_test_msg_sd_protect.py::test_wipe": "9875a5e52c5c45ba2a3eb1d765d69e10fb421086a6745361148c84f09546ed51", +"T3T1_tr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "2f68ba83e0f85007d92c1fe36cad26b27018cdb391afeb9abe24c67bc8662e89", +"T3T1_tr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "10190cb04c9250b33937daadab4b930bc81d5157b12c562b123d56d9bef8e34c", +"T3T1_tr_test_msg_wipedevice.py::test_autolock_not_retained": "38a906657cff74b1ec20c6635b68af4146c73cdbd0aa6a39a1f8361d01cbdb9d", +"T3T1_tr_test_msg_wipedevice.py::test_wipe_device": "87246b0b9fa7abdee4a7fb72989ff0de9fcc216c5f0167b0c430e5252ff0e74c", +"T3T1_tr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "5d271b9554579c386fd2eff4237922bc09425853b44a8d6aba59da3e90f9b754", +"T3T1_tr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "5d271b9554579c386fd2eff4237922bc09425853b44a8d6aba59da3e90f9b754", +"T3T1_tr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "5b59d1429fe3807a9690b01a7f6736592a698bc1b14c70003d78db0c9b3eea83", +"T3T1_tr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "5b59d1429fe3807a9690b01a7f6736592a698bc1b14c70003d78db0c9b3eea83", +"T3T1_tr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "5b59d1429fe3807a9690b01a7f6736592a698bc1b14c70003d78db0c9b3eea83", +"T3T1_tr_test_pin.py::test_correct_pin": "2c92595af982aa7c46252885c588461b42aa64e979a73fe8283fbc30b71be907", +"T3T1_tr_test_pin.py::test_exponential_backoff_t2": "39dbb95549bcdcfd96615749a4d069692b5bd96cd9a89538e7fa58e0a127bc10", +"T3T1_tr_test_pin.py::test_incorrect_pin_t2": "b02b243bef3587ee0383084563f086d3a1e80ae1a94deb2c05e9b4d0eff7213a", +"T3T1_tr_test_pin.py::test_no_protection": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_protection_levels.py::test_apply_settings": "d2029229c8b2098fb4f016a3e9189b08dced9b4e167bbfdb03ba49e9c9136910", +"T3T1_tr_test_protection_levels.py::test_change_pin_t2": "af56634d086279e2e8c15d7799ab6de684579a1793f4ff700c7116b0ed23a366", +"T3T1_tr_test_protection_levels.py::test_get_address": "986b5b9bb08386719823bbfd05032434a87d55802e7c29b157587cd8f0e53797", +"T3T1_tr_test_protection_levels.py::test_get_entropy": "7a4cb8d4a5cc862079dcee5a2baccd7901b7fcce646e176b86a921d7032045e2", +"T3T1_tr_test_protection_levels.py::test_get_public_key": "986b5b9bb08386719823bbfd05032434a87d55802e7c29b157587cd8f0e53797", +"T3T1_tr_test_protection_levels.py::test_initialize": "83ceb97b8f9b764c987d374a6cdfac3bb180983b2ffcfd29feeda57a33ae4b28", +"T3T1_tr_test_protection_levels.py::test_passphrase_cached": "a7475e63cd66a873cf290118a47fa977f68be4cc678a18102c1376c392735556", +"T3T1_tr_test_protection_levels.py::test_passphrase_reporting[False]": "c1ad0509af077da94b64c1217aaa89def4c8addb773058b6f4b19c8521f9625a", +"T3T1_tr_test_protection_levels.py::test_passphrase_reporting[True]": "29c49c37e0a97e965b281bbb4ac4e95da05d315ea0f0acb554d59cf2229b3ac4", +"T3T1_tr_test_protection_levels.py::test_ping": "8933590264a188841e5c833214dbfe42954e5ee680d0281ab411b3c60d0c7ece", +"T3T1_tr_test_protection_levels.py::test_sign_message": "19b198728d30cb61fc4fa729dbd4a5003b8fa8a0e3657e1e8b8a4e8a41d1f971", +"T3T1_tr_test_protection_levels.py::test_signtx": "a27da2ac9d4fd5cd00070f87195c0ff1470e02954c4fbffb66863cdc2a22dd69", +"T3T1_tr_test_protection_levels.py::test_unlocked": "2a10580be7bdd96097c410bcd999bbf249544eab30d9f5a0b4e2c2b38c3e7036", +"T3T1_tr_test_protection_levels.py::test_verify_message_t2": "47bfbeaf2aebba9e90b427cfd04353767a14b583da13e7fddd8601ec05030c95", +"T3T1_tr_test_protection_levels.py::test_wipe_device": "ac77b583b7a74882bf0871283ee73a955deb4b5a53114ad515aff8a2e1237ead", +"T3T1_tr_test_repeated_backup.py::test_repeated_backup": "7a8a0c0d276bb33b60e4c13dd15793120b0e70af254628b12f2794d99da6c871", +"T3T1_tr_test_repeated_backup.py::test_repeated_backup_cancel": "033ba812ca2130cde9798ac65f36ed1e58849d68885b31c89c27fc0518e3b834", +"T3T1_tr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "837fb1f653e78c6a5015174fd02ac2ce80b06396cf60a047d3c76588039f4f56", +"T3T1_tr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "74a71972491136a22e6f89f85b8720f51691c35c55e1cd32bbcca9c955463f25", +"T3T1_tr_test_sdcard.py::test_sd_format": "2a0620c38e58eef139c9be6eb0769cb531c2120fb318b10276d690980f78596b", +"T3T1_tr_test_sdcard.py::test_sd_no_format": "b954e243e8af4985e618f9c01c7b9515911618bbbcdd8b6ae1f32ad84816d585", +"T3T1_tr_test_sdcard.py::test_sd_protect_unlock": "142bcd9b09e9b141ea045d5f8e2166bd090e549e082d6b188df47e693fee1907", +"T3T1_tr_test_session.py::test_cannot_resume_ended_session": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_session.py::test_clear_session": "a05c20ccdf829e39526e480e222b38dd60c1865d68556f4eda6b66f394a08cc8", +"T3T1_tr_test_session.py::test_derive_cardano_empty_session": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_session.py::test_derive_cardano_running_session": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_session.py::test_end_session": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_session.py::test_end_session_only_current": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_session.py::test_session_recycling": "5b59d1429fe3807a9690b01a7f6736592a698bc1b14c70003d78db0c9b3eea83", +"T3T1_tr_test_session_id_and_passphrase.py::test_cardano_passphrase": "868a56211da08a5520e4b059d6dd8a3622262b9fa639851bd8317ace4996e2f6", +"T3T1_tr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "3daeb068d91a41e33ced3476d45a778d6b8dcc1498c98dc00d2368292bd555f4", +"T3T1_tr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "8e7d1f3ee41e08d89e2aef3088b97dd6367d072bc2bdb774757b9acbc24fd580", +"T3T1_tr_test_session_id_and_passphrase.py::test_multiple_passphrases": "bdc548c2f997891bee3922dd68b9c03cdc8711b2de7eec80e4a2561c504c4877", +"T3T1_tr_test_session_id_and_passphrase.py::test_multiple_sessions": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "ebc09370eea06c94e12d75032abec327c79b3c1567ff1ce90c176dc60550bbb5", +"T3T1_tr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "c620bc12854634b2d072b6953415c1ffe890c0d7e460494c80b982f73690e0c7", +"T3T1_tr_test_session_id_and_passphrase.py::test_passphrase_length": "d67fef40c02a0a8c63e385b839a04df17823af66a2baa5d1666f1093f91ff2cb", +"T3T1_tr_test_session_id_and_passphrase.py::test_passphrase_missing": "a7475e63cd66a873cf290118a47fa977f68be4cc678a18102c1376c392735556", +"T3T1_tr_test_session_id_and_passphrase.py::test_passphrase_on_device": "76f5a07b88bc0328e28e089ea0974f10023da3ef6765bff7313ad7a75e9a2076", +"T3T1_tr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "dc7e19c13159ca1fce84b2bb0d866016f8176db8f237eda391adc54f764a6280", +"T3T1_tr_test_session_id_and_passphrase.py::test_session_with_passphrase": "61d2700733ea47ebac4923bea5e77fe6a810cedcbcb5bf7af6398bb5d46f1ee4", +"T3T1_tr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "f4d749f84e843ca8b44ad0e1655310c6878d8895a3350c25b22955bc2acbee70", +"T3T1_tr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "3d2cda422782ee92c25d153f83f61355c1c3a52327cfa6730e531847528c92d8", +"T3T1_tr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "95d93b479d7c30f56601a7507bd3d2ae7e969d57d0e2e5e2eb2915bfa437ce3e", +"T3T1_tr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f2413c0cd1d2e659501b1d31d5318ca77cc3306d79ab11e12f374d2bd129dc44", +"T3T1_tr_tezos-test_getpublickey.py::test_tezos_get_public_key": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "f9ab8db1d51c680f320f69de3a641159c059fdbf2aecf991f6dd94936753a388", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "bb242c18fcad3e310688f482858eefd7a31b8e659e834d1d4773bd1c92490ab2", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "fd3580768a923ccae192e6289e1014a9e8f2f740fd93851202d1a1e770aa38be", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "b691f81aa7320d60312e2906565321ac605c59bc3da8d083aef0f0c269344c78", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "300f0a1f3878123cb3aaf9bd62b7854f9c7b373f9061f0e8d40e43ab06f60f62", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "6e66d589e1f9d82f326368b7c0724de95b46bc62f0cce767b92432a04da0b8db", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "03a6dc95cd9ef3087ff79069c18de10aadebe7b0f8e7680779e6f66e88b51b9f", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "2a1d8c57696723514091b6a1329d6d3750a972be5bb0733122df1fdc9c768328", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "c7c7c15a95e02ac4065db2b27f37c42ce13508083d680c4b8242dc0d63d91532", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "6a1bbc5df594195cc64cb361e0762b4f44e728aa213e4cc246e72ff482852798", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "9ce607a86d6466b82e74306d5a972f16d6fc99f9bb871af617d830fd71c1ae18", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "0de45c454ebbf7d7d12c1c774a7cf86ce0ddad56fcd50989ad69636a870dd3e9", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "fd5eac64376f22763f049a8a349cdd3047e82d7a485d5fb4ee19758d1c05d920", +"T3T1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "b52af68891aafba54f235de722d222f320b0d3cc7ff3d805a32fc44ddbe0bd14", +"T3T1_tr_webauthn-test_msg_webauthn.py::test_add_remove": "79428cb263a468c4ae4b43b1c035e14615de6a5cc9909312936da4d0202d3e9d", +"T3T1_tr_webauthn-test_u2f_counter.py::test_u2f_counter": "49dea1125ad6957d32ffcaf7dbcc60c86470629e2adeab8da78025bc1e4a0782", +"T3T1_tr_zcash-test_sign_tx.py::test_external_presigned": "f8d8099c09fc3f1e975cd776598a55761635c0c0c4de0fbbb15772484df8cc91", +"T3T1_tr_zcash-test_sign_tx.py::test_one_two": "63421046fc47f8465d85ac5d86000c9fb44a6042c81eefb29b9a5cd9c66800d2", +"T3T1_tr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "7c80f3abda6024cc9f28027ad304e407eb7d37c9aaae42c06d4592580686a725", +"T3T1_tr_zcash-test_sign_tx.py::test_send_to_multisig": "cde7c141f5477790da307918d15f3db0ce934881d4b374fc8f64bd7533d5f269", +"T3T1_tr_zcash-test_sign_tx.py::test_spend_multisig": "c0c0692ccb28990d18f8d43514cff5327b8d7b19f769a9af1d82b19fe4e86317", +"T3T1_tr_zcash-test_sign_tx.py::test_spend_v4_input": "1a7cc21442a6aaa3340d4430b0fe6da7cf88bb4e30e45663254cc0c02518a832", +"T3T1_tr_zcash-test_sign_tx.py::test_spend_v5_input": "4aad82c7b9561d4cc31bc4b196a56daabd0fbf4685c46c72e83cb3ccb579d254", +"T3T1_tr_zcash-test_sign_tx.py::test_unified_address": "f196f320dba42a425bdeb8ee20518362f819be52e2020183f5bbb8925c54164c", +"T3T1_tr_zcash-test_sign_tx.py::test_version_group_id_missing": "6b82252f3fd4940c34489b66034f95f7754adfa9db46145c717e4c4d222f1915" }, "persistence_tests": { "T3T1_en_test_safety_checks.py::test_safety_checks_level_after_reboot[SafetyCheckLevel.PromptAlways--081810a6": "801da41901bb49a7cc2b0212964c060e3488e14af0ab7fdb27f10631111bcc84", From d1da8aa9e3c909341437e426bbf8a14b9b3438bd Mon Sep 17 00:00:00 2001 From: vdovhanych <dovhanych@me.com> Date: Thu, 5 Sep 2024 16:11:02 +0200 Subject: [PATCH 596/626] ci: fix trezor-common sync action --- .github/workflows/bot-common-sync.yml | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/bot-common-sync.yml b/.github/workflows/bot-common-sync.yml index 4bed1dcd75..3197c7113f 100644 --- a/.github/workflows/bot-common-sync.yml +++ b/.github/workflows/bot-common-sync.yml @@ -3,6 +3,7 @@ name: "[Bot] sync to trezor-common repository" on: schedule: - cron: "0 0 * * *" + workflow_dispatch: permissions: contents: read @@ -10,15 +11,32 @@ permissions: jobs: sync-common: runs-on: ubuntu-latest + env: + GITHUB_BOT_USERNAME: ${{ secrets.TREZOR_BOT_USERNAME }} + GITHUB_BOT_TOKEN: ${{ secrets.GH_BOT_TOKEN }} + GITHUB_BOT_EMAIL: ${{ secrets.TREZOR_BOT_EMAIL }} steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 + + - name: Copy git-filter and script to temporary directory + run: | + cp ./ci/common_sync/git-filter-repo/git-filter-repo ${{runner.temp}}/common_repo_sync.sh + cp ./ci/common_sync/git-filter-repo/git-filter-repo ${{runner.temp}}/git-filter-repo + + - name: Add git-filter-repo to PATH + run: | + echo "Adding git-filter-repo to PATH" + echo '${{ runner.temp }}/ci/common_sync/git-filter-repo' >> $GITHUB_PATH + + - name: Configure git user + run: | + git config --global user.name $GITHUB_BOT_USERNAME + git config --global user.email $GITHUB_BOT_EMAIL + - name: Sync trezor-common repository - env: - GITHUB_BOT_USERNAME: ${{ secrets.TREZOR_BOT_USERNAME }} - GITHUB_BOT_TOKEN: ${{ secrets.GH_BOT_TOKEN }} run: | echo "Synchronizing common with the trezor-common repository" - ./ci/common_sync/common_repo_sync.sh + .${{ runner.temp }}/common_repo_sync.sh From d2a2ac21787c80a2e1d9414e663e04e2e4a90ef2 Mon Sep 17 00:00:00 2001 From: JoeGruff <joegruffins@gmail.com> Date: Fri, 23 Dec 2022 16:38:57 +0900 Subject: [PATCH 597/626] decred: Add input_derive_script. Decred shares code with bitcoin and a recent change broke signing stake based inputs. Add decred specific script construction and fix tests. --- core/.changelog.d/4161.fixed | 1 + core/src/apps/bitcoin/scripts_decred.py | 79 ++++++++++++++++++- core/src/apps/bitcoin/sign_tx/decred.py | 22 +++++- tests/device_tests/bitcoin/test_decred.py | 32 ++++---- ...c507f6a1531861dede2ab134e5c0b5dfe8c8.json} | 2 +- ...38148df176e9be1dde704ce866361149e254.json} | 2 +- 6 files changed, 114 insertions(+), 24 deletions(-) create mode 100644 core/.changelog.d/4161.fixed rename tests/txcache/decred_testnet/{51bc9c71f10a81eef3caedb5333062eb4b1f70998adf02916fe98fdc04c572e8.json => 1f00fc54530d7c4877f5032e91b6c507f6a1531861dede2ab134e5c0b5dfe8c8.json} (88%) rename tests/txcache/decred_testnet/{f8e2f2b4eab772f6e3743cba92db341f64b84d9c16ae375c7690fbf0bf02fc7b.json => 8b6890c10a3764fe6f378bc5b7e438148df176e9be1dde704ce866361149e254.json} (93%) diff --git a/core/.changelog.d/4161.fixed b/core/.changelog.d/4161.fixed new file mode 100644 index 0000000000..4fc79ac044 --- /dev/null +++ b/core/.changelog.d/4161.fixed @@ -0,0 +1 @@ +[T2T1] Fix spending decred stake outputs. diff --git a/core/src/apps/bitcoin/scripts_decred.py b/core/src/apps/bitcoin/scripts_decred.py index cc3f136017..d8671d580f 100644 --- a/core/src/apps/bitcoin/scripts_decred.py +++ b/core/src/apps/bitcoin/scripts_decred.py @@ -1,8 +1,10 @@ +from micropython import const from typing import TYPE_CHECKING from trezor import utils from trezor.crypto import base58 from trezor.crypto.base58 import blake256d_32 +from trezor.enums import DecredStakingSpendType from trezor.wire import DataError from . import scripts @@ -13,6 +15,14 @@ ) from .writers import write_compact_size +# These are decred specific opcodes related to staking. +_OP_SSTX = const(0xBA) +_OP_SSGEN = const(0xBB) +_OP_SSRTX = const(0xBC) +_OP_SSTXCHANGE = const(0xBD) + +_STAKE_TREE = const(1) + if TYPE_CHECKING: from trezor.enums import InputScriptType from trezor.messages import MultisigRedeemScriptType @@ -98,7 +108,7 @@ def output_script_sstxsubmissionpkh(addr: str) -> bytearray: raise DataError("Invalid address") w = utils.empty_bytearray(26) - w.append(0xBA) # OP_SSTX + w.append(_OP_SSTX) scripts.write_output_script_p2pkh(w, raw_address[2:]) return w @@ -111,7 +121,7 @@ def output_script_sstxchange(addr: str) -> bytearray: raise DataError("Invalid address") w = utils.empty_bytearray(26) - w.append(0xBD) # OP_SSTXCHANGE + w.append(_OP_SSTXCHANGE) scripts.write_output_script_p2pkh(w, raw_address[2:]) return w @@ -120,7 +130,7 @@ def output_script_sstxchange(addr: str) -> bytearray: def write_output_script_ssrtx_prefixed(w: Writer, pkh: bytes) -> None: utils.ensure(len(pkh) == 20) write_compact_size(w, 26) - w.append(0xBC) # OP_SSRTX + w.append(_OP_SSRTX) scripts.write_output_script_p2pkh(w, pkh) @@ -128,7 +138,7 @@ def write_output_script_ssrtx_prefixed(w: Writer, pkh: bytes) -> None: def write_output_script_ssgen_prefixed(w: Writer, pkh: bytes) -> None: utils.ensure(len(pkh) == 20) write_compact_size(w, 26) - w.append(0xBB) # OP_SSGEN + w.append(_OP_SSGEN) scripts.write_output_script_p2pkh(w, pkh) @@ -141,3 +151,64 @@ def sstxcommitment_pkh(pkh: bytes, amount: int) -> bytes: write_uint64_le(w, amount) write_bytes_fixed(w, b"\x00\x58", 2) # standard fee limits return w + + +def output_script_p2pkh(pubkeyhash: bytes) -> bytearray: + s = utils.empty_bytearray(25) + scripts.write_output_script_p2pkh(s, pubkeyhash) + return s + + +def output_script_p2sh(scripthash: bytes) -> bytearray: + # A9 14 <scripthash> 87 + utils.ensure(len(scripthash) == 20) + s = bytearray(23) + s[0] = 0xA9 # OP_HASH_160 + s[1] = 0x14 # pushing 20 bytes + s[2:22] = scripthash + s[22] = 0x87 # OP_EQUAL + return s + + +def output_derive_script( + tree: int | None, stakeType: int | None, addr: str, coin: CoinInfo +) -> bytes: + from trezor.crypto import base58 + + from apps.common import address_type + + try: + raw_address = base58.decode_check(addr, blake256d_32) + except ValueError: + raise DataError("Invalid address") + + isStakeOutput = False + if tree is not None: + if stakeType is not None: + if tree == _STAKE_TREE: + isStakeOutput = True + + if isStakeOutput: + assert stakeType is not None + if stakeType == DecredStakingSpendType.SSGen: + script = utils.empty_bytearray(26) + script.append(_OP_SSGEN) + scripts.write_output_script_p2pkh(script, raw_address[2:]) + return script + elif stakeType == DecredStakingSpendType.SSRTX: + script = utils.empty_bytearray(26) + script.append(_OP_SSRTX) + scripts.write_output_script_p2pkh(script, raw_address[2:]) + return script + + elif address_type.check(coin.address_type, raw_address): + # p2pkh + pubkeyhash = address_type.strip(coin.address_type, raw_address) + script = output_script_p2pkh(pubkeyhash) + return script + elif address_type.check(coin.address_type_p2sh, raw_address): + scripthash = address_type.strip(coin.address_type_p2sh, raw_address) + script = output_script_p2sh(scripthash) + return script + + raise DataError("Invalid address type") diff --git a/core/src/apps/bitcoin/sign_tx/decred.py b/core/src/apps/bitcoin/sign_tx/decred.py index 6c842f38ba..39b99380ab 100644 --- a/core/src/apps/bitcoin/sign_tx/decred.py +++ b/core/src/apps/bitcoin/sign_tx/decred.py @@ -9,8 +9,8 @@ from apps.bitcoin.sign_tx.tx_weight import TxWeightCalculator from apps.common.writers import write_compact_size -from .. import scripts_decred, writers -from ..common import ecdsa_hash_pubkey +from .. import addresses, scripts_decred, writers +from ..common import ecdsa_hash_pubkey, input_is_external from ..writers import write_uint32 from . import helpers from .approvers import BasicApprover @@ -423,3 +423,21 @@ def write_tx_input_witness( pubkey, signature, ) + + # scriptPubKey derivation + # === + + def input_derive_script( + self, txi: TxInput, node: bip32.HDNode | None = None + ) -> bytes: + if input_is_external(txi): + assert txi.script_pubkey is not None # checked in _sanitize_tx_input + return txi.script_pubkey + + if node is None: + node = self.keychain.derive(txi.address_n) + + address = addresses.get_address(txi.script_type, self.coin, node, txi.multisig) + return scripts_decred.output_derive_script( + txi.decred_tree, txi.decred_staking_spend, address, self.coin + ) diff --git a/tests/device_tests/bitcoin/test_decred.py b/tests/device_tests/bitcoin/test_decred.py index fe4a6ec6c2..82a0f29b28 100644 --- a/tests/device_tests/bitcoin/test_decred.py +++ b/tests/device_tests/bitcoin/test_decred.py @@ -43,11 +43,11 @@ FAKE_TXHASH_48f5b8 = bytes.fromhex( "48f5b85f8b1cf796d0d07388ced491f154e2d26b0615529d2d6ba9c170542df3" ) -FAKE_TXHASH_f8e2f2 = bytes.fromhex( - "f8e2f2b4eab772f6e3743cba92db341f64b84d9c16ae375c7690fbf0bf02fc7b" +FAKE_TXHASH_8b6890 = bytes.fromhex( + "8b6890c10a3764fe6f378bc5b7e438148df176e9be1dde704ce866361149e254" ) -FAKE_TXHASH_51bc9c = bytes.fromhex( - "51bc9c71f10a81eef3caedb5333062eb4b1f70998adf02916fe98fdc04c572e8" +FAKE_TXHASH_1f00fc = bytes.fromhex( + "1f00fc54530d7c4877f5032e91b6c507f6a1531861dede2ab134e5c0b5dfe8c8" ) pytestmark = [ @@ -174,7 +174,7 @@ def test_spend_from_stake_generation_and_revocation_decred(client: Client): inp1 = messages.TxInputType( address_n=parse_path("m/44h/1h/0h/0/0"), - prev_hash=FAKE_TXHASH_f8e2f2, + prev_hash=FAKE_TXHASH_8b6890, prev_index=2, amount=200_000_000, script_type=messages.InputScriptType.SPENDADDRESS, @@ -184,7 +184,7 @@ def test_spend_from_stake_generation_and_revocation_decred(client: Client): inp2 = messages.TxInputType( address_n=parse_path("m/44h/1h/0h/0/0"), - prev_hash=FAKE_TXHASH_51bc9c, + prev_hash=FAKE_TXHASH_1f00fc, prev_index=0, amount=200_000_000, script_type=messages.InputScriptType.SPENDADDRESS, @@ -208,16 +208,16 @@ def test_spend_from_stake_generation_and_revocation_decred(client: Client): (is_core(client), messages.ButtonRequest(code=B.ConfirmOutput)), messages.ButtonRequest(code=B.SignTx), request_input(0), - request_meta(FAKE_TXHASH_f8e2f2), - request_input(0, FAKE_TXHASH_f8e2f2), - request_input(1, FAKE_TXHASH_f8e2f2), - request_output(0, FAKE_TXHASH_f8e2f2), - request_output(1, FAKE_TXHASH_f8e2f2), - request_output(2, FAKE_TXHASH_f8e2f2), + request_meta(FAKE_TXHASH_8b6890), + request_input(0, FAKE_TXHASH_8b6890), + request_input(1, FAKE_TXHASH_8b6890), + request_output(0, FAKE_TXHASH_8b6890), + request_output(1, FAKE_TXHASH_8b6890), + request_output(2, FAKE_TXHASH_8b6890), request_input(1), - request_meta(FAKE_TXHASH_51bc9c), - request_input(0, FAKE_TXHASH_51bc9c), - request_output(0, FAKE_TXHASH_51bc9c), + request_meta(FAKE_TXHASH_1f00fc), + request_input(0, FAKE_TXHASH_1f00fc), + request_output(0, FAKE_TXHASH_1f00fc), request_input(0), request_input(1), request_finished(), @@ -229,7 +229,7 @@ def test_spend_from_stake_generation_and_revocation_decred(client: Client): assert ( serialized_tx.hex() - == "01000000027bfc02bff0fb90765c37ae169c4db8641f34db92ba3c74e3f672b7eab4f2e2f80200000001ffffffffe872c504dc8fe96f9102df8a99701f4beb623033b5edcaf3ee810af1719cbc510000000001ffffffff0160fdd5170000000000001976a914819d291a2f7fbf770e784bfd78b5ce92c58e95ea88ac00000000000000000200c2eb0b0000000000000000ffffffff6b483045022100f74f652a073bdaf2197ede47b4df0d90609bbfd0dc8a94199d36ebb1429de09b022040366292a8812135ec7572a94eb6e969fa1fa97a52c03f08a337f20bc4fb71de0121030e669acac1f280d1ddf441cd2ba5e97417bf2689e4bbec86df4f831bf9f7ffd000c2eb0b0000000000000000ffffffff6b483045022100ca385c05a008239c038e107989bbc30eec1ecd5a66e4973265eb21df034c77a9022070c3dceb24b39cb6e9f8c973572b955b37a4754e9caa704cdd37113c46e2b2970121030e669acac1f280d1ddf441cd2ba5e97417bf2689e4bbec86df4f831bf9f7ffd0" + == "010000000254e249113666e84c70de1dbee976f18d1438e4b7c58b376ffe64370ac190688b0200000001ffffffffc8e8dfb5c0e534b12adede611853a1f607c5b6912e03f577487c0d5354fc001f0000000001ffffffff0160fdd5170000000000001976a914819d291a2f7fbf770e784bfd78b5ce92c58e95ea88ac00000000000000000200c2eb0b0000000000000000ffffffff6b483045022100bdcb877c97d72db74eca06fefa21a7f7b00afcd5d916fce2155ed7df1ca5546102201e1f9efd7d652b449474c2c70171bfc4535544927bed62021f7334447d1ea4740121030e669acac1f280d1ddf441cd2ba5e97417bf2689e4bbec86df4f831bf9f7ffd000c2eb0b0000000000000000ffffffff6a473044022030c5743c442bd696d19dcf73d54e95526e726de965c2e2b4b9fd70248eaae21d02201305a3bcc2bb0e33122277763990e3b48f317d61264a68d190fb8acfc004cc640121030e669acac1f280d1ddf441cd2ba5e97417bf2689e4bbec86df4f831bf9f7ffd0" ) diff --git a/tests/txcache/decred_testnet/51bc9c71f10a81eef3caedb5333062eb4b1f70998adf02916fe98fdc04c572e8.json b/tests/txcache/decred_testnet/1f00fc54530d7c4877f5032e91b6c507f6a1531861dede2ab134e5c0b5dfe8c8.json similarity index 88% rename from tests/txcache/decred_testnet/51bc9c71f10a81eef3caedb5333062eb4b1f70998adf02916fe98fdc04c572e8.json rename to tests/txcache/decred_testnet/1f00fc54530d7c4877f5032e91b6c507f6a1531861dede2ab134e5c0b5dfe8c8.json index 65653df49e..76606bf906 100644 --- a/tests/txcache/decred_testnet/51bc9c71f10a81eef3caedb5333062eb4b1f70998adf02916fe98fdc04c572e8.json +++ b/tests/txcache/decred_testnet/1f00fc54530d7c4877f5032e91b6c507f6a1531861dede2ab134e5c0b5dfe8c8.json @@ -3,7 +3,7 @@ { "amount": 200000000, "decred_script_version": 0, - "script_pubkey": "76a914dc1a98d791735eb9a8715a2a219c23680edcedad88ac", + "script_pubkey": "bc76a914dc1a98d791735eb9a8715a2a219c23680edcedad88ac", "decred_tree": 1 } ], diff --git a/tests/txcache/decred_testnet/f8e2f2b4eab772f6e3743cba92db341f64b84d9c16ae375c7690fbf0bf02fc7b.json b/tests/txcache/decred_testnet/8b6890c10a3764fe6f378bc5b7e438148df176e9be1dde704ce866361149e254.json similarity index 93% rename from tests/txcache/decred_testnet/f8e2f2b4eab772f6e3743cba92db341f64b84d9c16ae375c7690fbf0bf02fc7b.json rename to tests/txcache/decred_testnet/8b6890c10a3764fe6f378bc5b7e438148df176e9be1dde704ce866361149e254.json index 25961397d8..a7ae77e5e0 100644 --- a/tests/txcache/decred_testnet/f8e2f2b4eab772f6e3743cba92db341f64b84d9c16ae375c7690fbf0bf02fc7b.json +++ b/tests/txcache/decred_testnet/8b6890c10a3764fe6f378bc5b7e438148df176e9be1dde704ce866361149e254.json @@ -13,7 +13,7 @@ { "amount": 200000000, "decred_script_version": 0, - "script_pubkey": "76a914dc1a98d791735eb9a8715a2a219c23680edcedad88ac" + "script_pubkey": "bb76a914dc1a98d791735eb9a8715a2a219c23680edcedad88ac" } ], "expiry": 0, From f3b78e9c7a513ba392a7fc6bc4f896dd734ca903 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 5 Sep 2024 16:12:32 +0200 Subject: [PATCH 598/626] fix(core/bootloader): fix firmware downgrade protection [no changelog] --- core/embed/bootloader/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/embed/bootloader/main.c b/core/embed/bootloader/main.c index d93ec0cf4a..136bd28c71 100644 --- a/core/embed/bootloader/main.c +++ b/core/embed/bootloader/main.c @@ -289,9 +289,9 @@ void real_jump_to_firmware(void) { ensure(check_image_header_sig(hdr, vhdr.vsig_m, vhdr.vsig_n, vhdr.vpub), "Firmware is corrupted"); - ensure(check_firmware_min_version(hdr->version), + ensure(check_firmware_min_version(hdr->monotonic), "Firmware downgrade protection"); - ensure_firmware_min_version(hdr->version); + ensure_firmware_min_version(hdr->monotonic); ensure(check_image_contents(hdr, IMAGE_HEADER_SIZE + vhdr.hdrlen, &FIRMWARE_AREA), From 422b376ebd2da9ce733e955061540fc5ae391e8f Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 5 Sep 2024 16:28:54 +0200 Subject: [PATCH 599/626] fix(core/bootloader): reporting bootloader lock state on U5 [no changelog] --- core/embed/trezorhal/stm32u5/secret.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/embed/trezorhal/stm32u5/secret.c b/core/embed/trezorhal/stm32u5/secret.c index 3700c5e914..b2f49b7a7b 100644 --- a/core/embed/trezorhal/stm32u5/secret.c +++ b/core/embed/trezorhal/stm32u5/secret.c @@ -37,10 +37,16 @@ secbool secret_ensure_initialized(void) { } secbool secret_bootloader_locked(void) { -#ifdef FIRMWARE - return (TAMP->BKP8R != 0) * sectrue; +#if defined BOOTLOADER || defined BOARDLOADER + return secret_optiga_present(); #else - return sectrue; + const volatile uint32_t *reg1 = &TAMP->BKP8R; + for (int i = 0; i < 8; i++) { + if (reg1[i] != 0) { + return sectrue; + } + } + return secfalse; #endif } From be9255ae048c3578c4922409eea69e904bafe84e Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 5 Sep 2024 16:28:28 +0200 Subject: [PATCH 600/626] fix(core/bootloader): fix unlocking bootloader granting HDP access on U5 [no changelog] --- core/embed/trezorhal/secret.h | 3 ++ core/embed/trezorhal/stm32f4/secret.c | 2 ++ core/embed/trezorhal/stm32u5/secret.c | 52 +++++++++++++++++++++------ 3 files changed, 47 insertions(+), 10 deletions(-) diff --git a/core/embed/trezorhal/secret.h b/core/embed/trezorhal/secret.h index 99d5d120db..8c85ac9e5a 100644 --- a/core/embed/trezorhal/secret.h +++ b/core/embed/trezorhal/secret.h @@ -56,6 +56,9 @@ secbool secret_optiga_get(uint8_t dest[SECRET_OPTIGA_KEY_LEN]); // Checks if the optiga pairing secret is present in the secret storage secbool secret_optiga_present(void); +// Checks if the optiga pairing secret can be written to the secret storage +secbool secret_optiga_writable(void); + // Erases optiga pairing secret from the secret storage void secret_optiga_erase(void); diff --git a/core/embed/trezorhal/stm32f4/secret.c b/core/embed/trezorhal/stm32f4/secret.c index 45abb31e98..72a3aefc01 100644 --- a/core/embed/trezorhal/stm32f4/secret.c +++ b/core/embed/trezorhal/stm32f4/secret.c @@ -102,6 +102,8 @@ secbool secret_optiga_present(void) { return (sectrue != secret_wiped()) * sectrue; } +secbool secret_optiga_writable(void) { return secret_wiped(); } + void secret_optiga_erase(void) { secret_erase(); } void secret_prepare_fw(secbool allow_run_with_secret, secbool _trust_all) { diff --git a/core/embed/trezorhal/stm32u5/secret.c b/core/embed/trezorhal/stm32u5/secret.c index b2f49b7a7b..d148f0a54d 100644 --- a/core/embed/trezorhal/stm32u5/secret.c +++ b/core/embed/trezorhal/stm32u5/secret.c @@ -176,6 +176,29 @@ secbool secret_optiga_present(void) { return secret_present(SECRET_OPTIGA_KEY_OFFSET, SECRET_OPTIGA_KEY_LEN); } +secbool secret_optiga_writable(void) { + const uint32_t offset = SECRET_OPTIGA_KEY_OFFSET; + const uint32_t len = SECRET_OPTIGA_KEY_LEN; + + const uint8_t *const secret = + (uint8_t *)flash_area_get_address(&SECRET_AREA, offset, len); + + if (secret == NULL) { + return secfalse; + } + + int secret_empty_bytes = 0; + + for (int i = 0; i < len; i++) { + // 0xFF being the default value of the flash memory (before any write) + // 0x00 being the value of the flash memory after manual erase + if (secret[i] == 0xFF) { + secret_empty_bytes++; + } + } + return sectrue * (secret_empty_bytes == len); +} + // Backs up the optiga pairing secret from the secret storage to the backup // register static void secret_optiga_cache(void) { @@ -270,16 +293,25 @@ void secret_prepare_fw(secbool allow_run_with_secret, secbool trust_all) { secret_bhk_lock(); #ifdef USE_OPTIGA secret_optiga_uncache(); - if (sectrue == allow_run_with_secret) { - if (secfalse != secret_optiga_present()) { - secret_optiga_cache(); - secret_disable_access(); - } - } else { - if (secfalse != secret_optiga_present()) { - show_install_restricted_screen(); - } - secret_disable_access(); + secbool optiga_secret_present = secret_optiga_present(); + secbool optiga_secret_writable = secret_optiga_writable(); + if (sectrue == trust_all && sectrue == allow_run_with_secret && + sectrue == optiga_secret_writable && secfalse == optiga_secret_present) { + // Secret is not present and the secret sector is writable. + // This means the U5 chip is unprovisioned. + // Allow trusted firmware (prodtest presumably) to access the secret sector, + // early return here. + return; + } + if (sectrue == allow_run_with_secret && sectrue == optiga_secret_present) { + // Firmware is trusted and the Optiga secret is present, make it available. + secret_optiga_cache(); + } + // Disable access unconditionally. + secret_disable_access(); + if (sectrue != trust_all && sectrue == optiga_secret_present) { + // Untrusted firmware, locked bootloader. Show the restricted screen. + show_install_restricted_screen(); } #else secret_disable_access(); From 5eb68975d9029f7768113c3536b8b9c5839d71c9 Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Thu, 5 Sep 2024 16:18:46 +0200 Subject: [PATCH 601/626] fix(core/prodtest): fix prodtest run with unlocked bootloader [no changelog] --- core/embed/prodtest/optiga_prodtest.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/embed/prodtest/optiga_prodtest.c b/core/embed/prodtest/optiga_prodtest.c index 616a0d4465..bdcdb9f77a 100644 --- a/core/embed/prodtest/optiga_prodtest.c +++ b/core/embed/prodtest/optiga_prodtest.c @@ -143,6 +143,12 @@ void pair_optiga(void) { uint8_t secret[SECRET_OPTIGA_KEY_LEN] = {0}; if (secret_optiga_get(secret) != sectrue) { + if (secret_optiga_writable() != sectrue) { + // optiga pairing secret is unwritable, so fail + optiga_pairing_state = OPTIGA_PAIRING_ERR_WRITE_FLASH; + return; + } + // Generate the pairing secret. if (OPTIGA_SUCCESS != optiga_get_random(secret, sizeof(secret))) { optiga_pairing_state = OPTIGA_PAIRING_ERR_RNG; From 656a86b8a0c501be380c3db8e3560039701f832c Mon Sep 17 00:00:00 2001 From: tychovrahe <brunam@seznam.cz> Date: Sat, 7 Sep 2024 07:46:43 +0200 Subject: [PATCH 602/626] chore(core): generate bootloader and prodtest changelogs [no changelog] --- core/embed/bootloader/.changelog.d/3709.changed | 1 - core/embed/bootloader/.changelog.d/4081.changed | 1 - core/embed/bootloader/.changelog.d/4133.added | 1 - core/embed/bootloader/.changelog.d/4133.changed | 1 - core/embed/bootloader/.changelog.d/4140.fixed | 1 - core/embed/bootloader/CHANGELOG.md | 17 +++++++++++++++++ core/embed/prodtest/.changelog.d/3752.added | 1 - core/embed/prodtest/.changelog.d/4064.added | 1 - core/embed/prodtest/.changelog.d/4140.changed | 1 - core/embed/prodtest/CHANGELOG.md | 12 ++++++++++++ 10 files changed, 29 insertions(+), 8 deletions(-) delete mode 100644 core/embed/bootloader/.changelog.d/3709.changed delete mode 100644 core/embed/bootloader/.changelog.d/4081.changed delete mode 100644 core/embed/bootloader/.changelog.d/4133.added delete mode 100644 core/embed/bootloader/.changelog.d/4133.changed delete mode 100644 core/embed/bootloader/.changelog.d/4140.fixed delete mode 100644 core/embed/prodtest/.changelog.d/3752.added delete mode 100644 core/embed/prodtest/.changelog.d/4064.added delete mode 100644 core/embed/prodtest/.changelog.d/4140.changed diff --git a/core/embed/bootloader/.changelog.d/3709.changed b/core/embed/bootloader/.changelog.d/3709.changed deleted file mode 100644 index 1fdc1564d5..0000000000 --- a/core/embed/bootloader/.changelog.d/3709.changed +++ /dev/null @@ -1 +0,0 @@ -Require confirmation when installing non-full trust firmware image on empty device diff --git a/core/embed/bootloader/.changelog.d/4081.changed b/core/embed/bootloader/.changelog.d/4081.changed deleted file mode 100644 index d461de838b..0000000000 --- a/core/embed/bootloader/.changelog.d/4081.changed +++ /dev/null @@ -1 +0,0 @@ -Fix incorrect error message when installing firmware for different model. diff --git a/core/embed/bootloader/.changelog.d/4133.added b/core/embed/bootloader/.changelog.d/4133.added deleted file mode 100644 index b808dcad60..0000000000 --- a/core/embed/bootloader/.changelog.d/4133.added +++ /dev/null @@ -1 +0,0 @@ -Added firmware downgrade protection diff --git a/core/embed/bootloader/.changelog.d/4133.changed b/core/embed/bootloader/.changelog.d/4133.changed deleted file mode 100644 index cc3f2171f8..0000000000 --- a/core/embed/bootloader/.changelog.d/4133.changed +++ /dev/null @@ -1 +0,0 @@ -[T3B1, T3T1] Added bootloader unlock mechanism to U5 models diff --git a/core/embed/bootloader/.changelog.d/4140.fixed b/core/embed/bootloader/.changelog.d/4140.fixed deleted file mode 100644 index 8f13291fe6..0000000000 --- a/core/embed/bootloader/.changelog.d/4140.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3B1] UI adjustments: fix icon on warning screen, replace empty logo with full during boot diff --git a/core/embed/bootloader/CHANGELOG.md b/core/embed/bootloader/CHANGELOG.md index c612059126..1377537ce5 100644 --- a/core/embed/bootloader/CHANGELOG.md +++ b/core/embed/bootloader/CHANGELOG.md @@ -4,6 +4,19 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## 2.1.8 [September 2024] + +### Added +- Added firmware downgrade protection [#4133] + +### Changed +- Require confirmation when installing non-full trust firmware image on empty device [#3709] +- Fix incorrect error message when installing firmware for different model. [#4081] +- [T3B1, T3T1] Added bootloader unlock mechanism to U5 models [#4133] + +### Fixed +- [T3B1] UI adjustments: fix icon on warning screen, replace empty logo with full during boot [#4140] + ## 2.1.7 [July 2024] ### Added @@ -144,5 +157,9 @@ Internal only release for Model R prototypes. [#3303]: https://github.com/trezor/trezor-firmware/pull/3303 [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3429]: https://github.com/trezor/trezor-firmware/pull/3429 +[#3709]: https://github.com/trezor/trezor-firmware/pull/3709 [#3711]: https://github.com/trezor/trezor-firmware/pull/3711 [#3770]: https://github.com/trezor/trezor-firmware/pull/3770 +[#4081]: https://github.com/trezor/trezor-firmware/pull/4081 +[#4133]: https://github.com/trezor/trezor-firmware/pull/4133 +[#4140]: https://github.com/trezor/trezor-firmware/pull/4140 diff --git a/core/embed/prodtest/.changelog.d/3752.added b/core/embed/prodtest/.changelog.d/3752.added deleted file mode 100644 index 76748afb30..0000000000 --- a/core/embed/prodtest/.changelog.d/3752.added +++ /dev/null @@ -1 +0,0 @@ -Added commands to read bootloader and boardloader versions diff --git a/core/embed/prodtest/.changelog.d/4064.added b/core/embed/prodtest/.changelog.d/4064.added deleted file mode 100644 index 316a6e42e2..0000000000 --- a/core/embed/prodtest/.changelog.d/4064.added +++ /dev/null @@ -1 +0,0 @@ -Added TOUCH_CUSTOM and TOUCH_IDLE commands diff --git a/core/embed/prodtest/.changelog.d/4140.changed b/core/embed/prodtest/.changelog.d/4140.changed deleted file mode 100644 index 490a422bb7..0000000000 --- a/core/embed/prodtest/.changelog.d/4140.changed +++ /dev/null @@ -1 +0,0 @@ -[T3B1] Changed welcome screen to show full white display diff --git a/core/embed/prodtest/CHANGELOG.md b/core/embed/prodtest/CHANGELOG.md index 3b5815e1b6..b294095379 100644 --- a/core/embed/prodtest/CHANGELOG.md +++ b/core/embed/prodtest/CHANGELOG.md @@ -1,4 +1,13 @@ +## 0.2.9 [7th September 2024] + +### Added +- Added commands to read bootloader and boardloader versions [#3752] +- Added TOUCH_CUSTOM and TOUCH_IDLE commands [#4064] + +### Changed +- [T3B1] Changed welcome screen to show full white display [#4140] + ## 0.2.8 [19th July 2024] ### Added @@ -61,7 +70,10 @@ [#3325]: https://github.com/trezor/trezor-firmware/pull/3325 [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 +[#3752]: https://github.com/trezor/trezor-firmware/pull/3752 [#3769]: https://github.com/trezor/trezor-firmware/pull/3769 [#3770]: https://github.com/trezor/trezor-firmware/pull/3770 [#3900]: https://github.com/trezor/trezor-firmware/pull/3900 [#3932]: https://github.com/trezor/trezor-firmware/pull/3932 +[#4064]: https://github.com/trezor/trezor-firmware/pull/4064 +[#4140]: https://github.com/trezor/trezor-firmware/pull/4140 From 62b56df573a714f02279fd80cff0696e9c146591 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Fri, 6 Sep 2024 11:00:29 +0200 Subject: [PATCH 603/626] fix(core/translations): update pt/tr/it translations with universal safe3 fonts --- core/translations/it.json | 2 +- core/translations/pt.json | 2 +- core/translations/signatures.json | 6 +++--- core/translations/tr.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/translations/it.json b/core/translations/it.json index 2eb6c7b7c8..80e653549b 100644 --- a/core/translations/it.json +++ b/core/translations/it.json @@ -1,6 +1,6 @@ { "fonts": { - "T2B1": { + "##Safe3": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_it.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_it.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_it.json", diff --git a/core/translations/pt.json b/core/translations/pt.json index 4b32f0a4cd..501a92fca3 100644 --- a/core/translations/pt.json +++ b/core/translations/pt.json @@ -1,6 +1,6 @@ { "fonts": { - "T2B1": { + "##Safe3": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_pt.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_pt.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_pt.json", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index 6b3df05946..2bfa19f092 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "4553280c7d6f5a19fd2bd47ced62fbf70606394781d473355aa61ac0e1e42338", - "datetime": "2024-09-03T16:11:12.734773", - "commit": "423f1597941d5354b2f941e04ad5e27003431067" + "merkle_root": "8be4e819a1acbb7f131a0fd4e2573a977f94a41fe8a02ea4d3f47fd21f565a41", + "datetime": "2024-09-06T08:59:57.672431", + "commit": "d2a2ac21787c80a2e1d9414e663e04e2e4a90ef2" }, "history": [ { diff --git a/core/translations/tr.json b/core/translations/tr.json index 3df45b2f54..ab3cf39552 100644 --- a/core/translations/tr.json +++ b/core/translations/tr.json @@ -1,6 +1,6 @@ { "fonts": { - "T2B1": { + "##Safe3": { "1_FONT_NORMAL": "font_pixeloperator_regular_8_tr.json", "2_FONT_BOLD": "font_pixeloperator_bold_8_tr.json", "3_FONT_MONO": "font_pixeloperatormono_regular_8_tr.json", From 37d8649d5d167708db02ccd1a404da5aa48ad846 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 10:29:49 +0200 Subject: [PATCH 604/626] tests: flip T2B1 pipelines to T3B1 --- .github/workflows/core.yml | 50 +- tests/ui_tests/fixtures.json | 18372 +++++++++++++-------------------- 2 files changed, 7086 insertions(+), 11336 deletions(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 0ae4645f98..d5b16c5b07 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -21,7 +21,7 @@ env: |core UI changes|device test|click test|persistence test| |---------------|-----------|----------|----------------| |T2T1 Model T |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/status.png" width="24" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_device_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_click_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2T1-en-core_persistence_test/master_diff.html))|| - |T2B1 Safe 3 |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_device_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T2B1-en-core_click_test/master_diff.html)) |[2724](https://github.com/trezor/trezor-firmware/issues/2724) || + |T3B1 Safe 3 |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_device_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_device_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_device_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_device_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_device_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_click_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_click_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_click_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_click_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3B1-en-core_click_test/master_diff.html)) |[2724](https://github.com/trezor/trezor-firmware/issues/2724) || |T3T1 |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_device_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_click_test/master_diff.html)) |<img src="https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/status.png" width="20px" height="20px" /> [test](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/differing_screens.html)) [main](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/master_index.html)([screens](https://data.trezor.io/dev/firmware/ui_report/${{ github.run_id }}/T3T1-en-core_persistence_test/master_diff.html))|| |All |<img src="https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/status.png" width="20px" height="20px" /> [main](https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/index.html)([screens](https://data.trezor.io/dev/firmware/master_diff/${{ github.run_id }}/master_diff.html)) || @@ -46,7 +46,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] coins: [universal, btconly] type: ${{ fromJSON(github.event_name == 'schedule' && '["normal", "debuglink", "production"]' || '["normal", "debuglink"]') }} include: @@ -54,7 +54,7 @@ jobs: coins: universal type: normal env: - TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model == 'D001' && 'DISC1' || matrix.model }} + TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'D001' && 'DISC1' || matrix.model }} BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }} PRODUCTION: ${{ matrix.type == 'production' && '1' || '0' }} @@ -95,7 +95,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] coins: [universal, btconly] # type: [normal, debuglink] type: [debuglink] @@ -104,7 +104,7 @@ jobs: - type: normal asan: asan env: - TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model }} + TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model }} BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }} ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} @@ -134,7 +134,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] coins: [universal] type: [debuglink] asan: [noasan] @@ -142,7 +142,7 @@ jobs: - type: normal asan: asan env: - TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model }} + TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model }} BITCOIN_ONLY: ${{ matrix.coins == 'universal' && '0' || '1' }} PYOPT: ${{ matrix.type == 'debuglink' && '0' || '1' }} ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} @@ -171,10 +171,10 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] asan: ${{ fromJSON(needs.param.outputs.asan) }} env: - TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model }} + TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model }} ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} LSAN_OPTIONS: "suppressions=../../asan_suppressions.txt" steps: @@ -194,10 +194,10 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] asan: ${{ fromJSON(needs.param.outputs.asan) }} env: - TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model }} + TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model }} ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} RUSTC_BOOTSTRAP: ${{ matrix.asan == 'asan' && '1' || '0' }} RUSTFLAGS: ${{ matrix.asan == 'asan' && '-Z sanitizer=address' || '' }} @@ -218,7 +218,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1] + model: [T2T1, T3B1] steps: - uses: actions/checkout@v4 with: @@ -244,13 +244,13 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] coins: [universal, btconly] asan: ${{ fromJSON(needs.param.outputs.asan) }} lang: ${{ fromJSON(needs.param.outputs.test_lang) }} env: TREZOR_PROFILING: ${{ matrix.asan == 'noasan' && '1' || '0' }} - TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model == 'T2B1' && 'R' || matrix.model }} + TREZOR_MODEL: ${{ matrix.model == 'T2T1' && 'T' || matrix.model }} TREZOR_PYTEST_SKIP_ALTCOINS: ${{ matrix.coins == 'btconly' && '1' || '0' }} ADDRESS_SANITIZER: ${{ matrix.asan == 'asan' && '1' || '0' }} PYTEST_TIMEOUT: ${{ matrix.asan == 'asan' && 600 || 400 }} @@ -303,7 +303,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] asan: ${{ fromJSON(needs.param.outputs.asan) }} lang: ${{ fromJSON(needs.param.outputs.test_lang) }} env: @@ -356,7 +356,7 @@ jobs: strategy: fail-fast: false matrix: - # FIXME: T2B1 https://github.com/trezor/trezor-firmware/issues/2724 + # FIXME: T3B1 https://github.com/trezor/trezor-firmware/issues/2724 # FIXME: T3T1 https://github.com/trezor/trezor-firmware/issues/3595 model: [T2T1] asan: ${{ fromJSON(needs.param.outputs.asan) }} @@ -388,7 +388,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T3T1] # TODO T2B1 https://github.com/trezor/trezor-firmware/issues/2724 + model: [T2T1, T3T1] # TODO T3B1 https://github.com/trezor/trezor-firmware/issues/2724 asan: ${{ fromJSON(needs.param.outputs.asan) }} env: TREZOR_PROFILING: ${{ matrix.asan == 'noasan' && '1' || '0' }} @@ -430,7 +430,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] steps: - uses: actions/checkout@v4 with: @@ -488,7 +488,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1] # FIXME: checker.py lacks awareness of T3T1 flash layout + model: [T2T1] # FIXME: checker.py lacks awareness of U5 flash layout steps: - uses: actions/checkout@v4 with: @@ -539,7 +539,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] asan: ${{ fromJSON(needs.param.outputs.asan) }} env: TREZOR_PROFILING: ${{ matrix.asan == 'noasan' && '1' || '0' }} @@ -584,7 +584,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] + model: [T2T1, T3B1, T3T1] asan: ${{ fromJSON(needs.param.outputs.asan) }} env: TREZOR_PROFILING: ${{ matrix.asan == 'noasan' && '1' || '0' }} @@ -624,7 +624,7 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T3T1] # XXX T2B1 https://github.com/trezor/trezor-firmware/issues/2724 + model: [T2T1, T3T1] # XXX T3B1 https://github.com/trezor/trezor-firmware/issues/2724 asan: ${{ fromJSON(needs.param.outputs.asan) }} env: TREZOR_PROFILING: ${{ matrix.asan == 'noasan' && '1' || '0' }} @@ -667,11 +667,11 @@ jobs: strategy: fail-fast: false matrix: - model: [T2T1, T2B1, T3T1] - # T2B1 fails due to https://github.com/trezor/trezor-firmware/issues/3280 + model: [T2T1, T3B1, T3T1] + # T3B1 fails due to https://github.com/trezor/trezor-firmware/issues/3280 # remove after single global layout is implemented (or bug above fixed): exclude: - - model: T2B1 + - model: T3B1 env: COVERAGE_THRESHOLD: ${{ matrix.model == 'T2T1' && 78 || 77 }} steps: diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index db18e5f28c..137c393f3f 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -718,11317 +718,6 @@ "T1B1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } }, -"T2B1": { -"click_tests": { -"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3cc51c2ae3675ac1de3b3c51dac604a2d5ec70bbe20fd38a3eff97a799dfa4f2", -"T2B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "ecf3758995aae8caeb60ff9c1f105d580dfda1a37c6f9a3e853cdb2b7a7e5db7", -"T2B1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "55d1f4cf9ef7fea24367c78078f21ddc18b6a19936f8f373bb7108ea3178d16d", -"T2B1_cs_test_autolock.py::test_autolock_interrupts_signing": "a8bdfb3d51a11ab664a07750e2fb3113e47a2999bea33b2e78520e6101d1b7e7", -"T2B1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "1308e046673fdb00f5e17bb9ad1196a6308164beaf9dee990b2f8e23fc396d47", -"T2B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "63034c365c6e31eb26dffb36718ee15d16dfba85e1f01db72ca5e31ba80a534f", -"T2B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "ac99b9bf44f1c61aa954870fb6fb00c7ec04977371bcd88c4fdc01067f1c999a", -"T2B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "698276d28e195186d2cf784092fbff166bf45d9f8948836aaa83206d09f0d031", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "76aa0315f4c793bb0d93c16f5f18f786fab93b3cbca008549dc3eb9e98416c3d", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3ea1cb7dc64126eea599d5c7a66335abd561421edbc1f53e59294e01c8052026", -"T2B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2e12708cddad2034e56595399c58e92ce4ffc1daf884e23962d97a9879953370", -"T2B1_cs_test_lock.py::test_hold_to_lock": "4ba92841c09e4f36382bd96a4e5dbf2e16154fab75603a1d5b1b3eb94776d375", -"T2B1_cs_test_passphrase_tr.py::test_cancel": "3f02823f2de1e46c30dadc9aef8d1c1fe2cdd2ecff0d1ec9aeb770793ff482f2", -"T2B1_cs_test_passphrase_tr.py::test_passphrase_delete": "1e464363ef619f450d2c0c9f82d5336e666ee3ded7107ce1079267dd75a3cdb3", -"T2B1_cs_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "476649816e1e9dfb2c34133c89cc4ee9832ed69adcb47899b2fced844071e6be", -"T2B1_cs_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "6b304a7c00d1cb4103d6246e8b8590187ed1b451a588472fa2ab61bfef8c46c7", -"T2B1_cs_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "209b74dd3e70b53a5229915d01d32a56ed64d04087aa9910c113e10e40e011f0", -"T2B1_cs_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "a7be0f512587b40bb0969eef93ae5a8c021772476b70618e9b4c33fe996db87f", -"T2B1_cs_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "26ccf5e617ca7014c7801c10c3b4be2e011457a6969109f709824494123ab98a", -"T2B1_cs_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ba468e87e835f86f67e382ad4175d3f95de2b45207b141f7226ec983d4fbc36e", -"T2B1_cs_test_passphrase_tr.py::test_passphrase_loop_all_characters": "42717296ddc466af7f2ff36d3ff80345f0e7dcaa8950d2daccd2402ada07a33b", -"T2B1_cs_test_pin.py::test_pin_change": "b17cf4b44383e2bda31c2b379a4e38209a404809ed9f6feee3676fcc80832189", -"T2B1_cs_test_pin.py::test_pin_delete_hold": "752db47bdc86f89d572f9a86a178cc3fc00dfda860efa13e89bb56643d443782", -"T2B1_cs_test_pin.py::test_pin_empty_cannot_send": "42249d50ce6f58235dfbcf6e5af3c111a97e95b3c6c4b6c250a93624f65b22a5", -"T2B1_cs_test_pin.py::test_pin_incorrect": "a9887ff8263c98d026468d72cc6ab648eee66792e57b2f41643e5439dc044885", -"T2B1_cs_test_pin.py::test_pin_long": "2df6df5c992f859647e4fbf271232094c4f159eeab9cfcfada6f7733eb70161e", -"T2B1_cs_test_pin.py::test_pin_long_delete": "9a1d32b0e29f1e0006d840869231e6fd482ee9980882d14129a8885cd022e689", -"T2B1_cs_test_pin.py::test_pin_longer_than_max": "6a3bba51ee757d5ed3746a45d0db38768a203869add89273d416b3eba243f9b7", -"T2B1_cs_test_pin.py::test_pin_same_as_wipe_code": "a068497c9207f28f11bfe972b60c5369d95ee9f02c0ff491b7ad79c9718c17e3", -"T2B1_cs_test_pin.py::test_pin_setup": "6e5eff703b54167cd2b9b99736132e7f4bdce1c6524d3d8309ef7e10a174e9e2", -"T2B1_cs_test_pin.py::test_pin_setup_mismatch": "41da639b7b8d8446b7b4e18df7f4d9a065e4ca418fa82cdb907db4326bc1e10e", -"T2B1_cs_test_pin.py::test_pin_short": "f6b05b67f20b78a075b7d27026b09f2ef78fcd8ac966703e39ee14e9beb555e2", -"T2B1_cs_test_pin.py::test_wipe_code_same_as_pin": "92af8352447fd6b8458e5975cdb63335f62e1912fce4c25d7dccfbd98953a48a", -"T2B1_cs_test_pin.py::test_wipe_code_setup": "8c09fdd26b153186f86baee7946e3f8d22ebcc15db271f3b4e2b3413c6834c82", -"T2B1_cs_test_recovery.py::test_recovery_bip39": "986b3645dbaaebc733e0aaf2c129b986a4cc573248e6a7ba7096d03d364b92cc", -"T2B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "76c051617b6212b5f53f676c29d55fd0852218edaff74017cda4ff3e791082cd", -"T2B1_cs_test_recovery.py::test_recovery_slip39_basic": "f4b42fd8aa1d0c1d06f52a903a26c244039c4f2c3aa3d577266d0a9acfbfbaf8", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "e2624137c4885a5a5dbda6ea4cca36c5025e03313854029c183dd41229e6dc5e", -"T2B1_cs_test_reset_bip39.py::test_reset_bip39": "fa1f66ecb995b4152fd0cc4e4670cfc0f2b5a6c632a2645d1f3d01c05f7a037e", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0ca14e255f36cb736fcb3d90024fb2c00e346313dcac2d9e20c379368e60d4a9", -"T2B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2157c3b2777af219ee4cf1358a15b6aa0a9a1bf629d4bff0586d2848344a2baa", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c480270210f7216a338c7934f1244b22d4e6e1ae305aece94141903fe428cac6", -"T2B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "ff66d1724b4d0bb82237738eb9067659d37dcbed67014964c7343c02dd2656f4", -"T2B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", -"T2B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", -"T2B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", -"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "483339fcd69cd704c80b53cd42f88cca6478e43f385d5a4cb5250be0edc0b8fd", -"T2B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "3a0639ab2042edfcb8103aff433239126503131baa8d72c944da7cef1b652b5d", -"T2B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "f7cc39dea78abe89a2885757c9b4d4ebc1205e966c5529ea0a64ec3f0f60c7f6", -"T2B1_de_test_autolock.py::test_autolock_interrupts_signing": "cf74abddc80e79e9c767e4a174bb779a5bcbdc4b62ceca15faec195d0ccbbd1f", -"T2B1_de_test_autolock.py::test_autolock_passphrase_keyboard": "cfa2d0d9dc0174bbba428cb050f41c0d6f4a7b233afb8341c6d1faecdbfec595", -"T2B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "b47ae2c4b958c59efa38c95d522f35336d3a92b4367ef573e48e383a74c79ed0", -"T2B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "394081ce1c4d5c0dbd0be7156ad4a4355569a415b758df07975dde0efb4c58d2", -"T2B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "bf725054e49d7ccc9dca652da708919db52e6bdca067f8df926088b3b96a5eb8", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "65dcd24d383e7e5294ba7fc342ba701abc64a24553380705611f91e3c221826b", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9e4b62eaa45084c4d025fd3691e100128715fec2ed1d46c22462e6d25249154f", -"T2B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9e7aa87ff8c67cf36e65e1e69e0e60cdf8cb0a9e70b5bd1952f843564efcfccc", -"T2B1_de_test_lock.py::test_hold_to_lock": "268661e352d6ab4c9cfd83b48985b8ad2e108841af94d5479c079befc8892310", -"T2B1_de_test_passphrase_tr.py::test_cancel": "260dfca06b933d88120da15c6a981c9e2bf136a1bb148cbaf0244a85c80c6767", -"T2B1_de_test_passphrase_tr.py::test_passphrase_delete": "18f04b5c66ea5d1ede7e616f03e1a937dc57a0a2bc55bdf8c9d1aa917194e6ed", -"T2B1_de_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "3309fe04be297d037c64a21c595ec13401222bbd788981310181fd673bc1462d", -"T2B1_de_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "ff802bd56b6b2e2aecbb1412cd579b0c2cca02941ad53bc1d0c21b5f9b4cd410", -"T2B1_de_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "3de7ba9d64392a217c95623f3513ac6b337afa317d4e12926cc14d9186160c7e", -"T2B1_de_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "8deb7b6272483c747af0aed2da92337ea0fc00d51a54db21fb7a65cf8ba8de2c", -"T2B1_de_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "821733b59c68a2705621d6283e9acc4039ac95052e4512416010ea4346598528", -"T2B1_de_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "7bdcd7779e686289b7acb1d5bc7f9f46c3a08c141542ea284e748ecf896b4241", -"T2B1_de_test_passphrase_tr.py::test_passphrase_loop_all_characters": "8574b98ef9d743e6aec18c0cc2444b3270fc6312d1c4d29b0838bda6781efd7b", -"T2B1_de_test_pin.py::test_pin_change": "ea169c14dfd249f9144bdf6c875f733500913a8b26cda91464bc86b545ba5b82", -"T2B1_de_test_pin.py::test_pin_delete_hold": "19a240eb3b4d75888c9b0ebcb16f8d6d515c8bf2a76671c37788416d70f00af8", -"T2B1_de_test_pin.py::test_pin_empty_cannot_send": "1055b82dfd991b47a48564ad6bdba1056eca8d645d54e0f93aca1c0d307cb336", -"T2B1_de_test_pin.py::test_pin_incorrect": "d4ce25f32ee8d9899ddf43fc7ba8bdd9f7c06c5a5ae4b588993d10dae93df078", -"T2B1_de_test_pin.py::test_pin_long": "97be8093bfedf27bfe7eb2c1abd3661bea06ce956446c7eab66c7e8be3df4ffa", -"T2B1_de_test_pin.py::test_pin_long_delete": "c1b0b819897287f23033b66fff41786ae294535f3e3fe438784f2ecfc9b82551", -"T2B1_de_test_pin.py::test_pin_longer_than_max": "855f6feccbe75dcc71326fdeb7db6f09bcdff234953a79606b7ffe4bb9b24ff8", -"T2B1_de_test_pin.py::test_pin_same_as_wipe_code": "aca419f2542c2c510b554b3284fc8d9f0d52588a9f0575f122c60449834ce0d5", -"T2B1_de_test_pin.py::test_pin_setup": "72e3837ce5ced75a5e9927d3589bf8e6a8b96ed4a4ab8975e9359a02d27d2dc3", -"T2B1_de_test_pin.py::test_pin_setup_mismatch": "d8186819e4483ebf85bf929420432d72f41b44c7900ef7b7319763e0f1b72ca5", -"T2B1_de_test_pin.py::test_pin_short": "cceda151768e650f49062a49813a7e0e254ec931354fb3e8b3e36be9fe62a424", -"T2B1_de_test_pin.py::test_wipe_code_same_as_pin": "b52818b4acf041851d2af4ab81c9a7fa26395509222ff0042d8e75df0facb76b", -"T2B1_de_test_pin.py::test_wipe_code_setup": "c4402fc6080e363308e83b2b36cf767894015c5f1cc5a91f00e02c87025d4549", -"T2B1_de_test_recovery.py::test_recovery_bip39": "658711dfc1780e026b9ce4057dbdf04fb969ee84bf5f35bf172c93a59133e7d7", -"T2B1_de_test_recovery.py::test_recovery_bip39_previous_word": "ceae77d5d1da1916c1072cd2c2e18dccfe5e97c9b05225dd1f09dcb0617b1bde", -"T2B1_de_test_recovery.py::test_recovery_slip39_basic": "e3dbc1a321425e9051712967d00f7b685d571b066f0b4d88c6face859b8044d6", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "350148ddc405a699fc8e0a89f1554838796177cb77436e9e808422175e350cf2", -"T2B1_de_test_reset_bip39.py::test_reset_bip39": "75c87592c3a77f3bd9df77e415cb8e7652ea686789968d4090254f7f53a90e61", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "699f62c2f6477b0fe504ace63132269cf07c1a0687a005e22b2719830fa57d72", -"T2B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f48eebda84373ac7ae9a9f047cd12aeb8daae65c239f6434b72df378f44c501b", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "88e8149efb5be48322c5ad7bce7eb4c82c254956138e4b21a4871274382b685a", -"T2B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "73b2168de18913e4870276c48ad498439209038b1a8b4735cc5e3a8f8f557e9b", -"T2B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", -"T2B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", -"T2B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", -"T2B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", -"T2B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", -"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "4663e6da2cd2cc2d452ac934daaf772ba2474b266e45d7d883438cb024320c9f", -"T2B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "9f971d47fa9eaf661fa8b305c8c4caa4a1fb3d53963c937fd43805b700f26b36", -"T2B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "1f2a49eae6f33a9657f690b900a0b38ad18462a08f4802ded57883933b9e4c0c", -"T2B1_en_test_autolock.py::test_autolock_interrupts_signing": "739085b5c8ec1a73efd402a25d0428898c915f5d4f308817d3416f2885373e8a", -"T2B1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d1fe11cc14cc86f5c595b75c573064dfcd86529afcd285e072a30a1fe70ed5ec", -"T2B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "41b4181985ec5f6f6ffcbbe5fc87dc9379195c930f1dcfc36c90417849da2ce9", -"T2B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "1040f9629da34d736f5024f89984121fb9f5bf4078f8bdda00250bc8799593f3", -"T2B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "4e5a76517080d02e958b5cc96692821b562aaa1602916398883dca5a28587c26", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2c51a1ddd6a8ff0f4dac3728197a4197f03e1e8dddb6da5064cbcf5829783ce3", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "2539ad8381af75241c31377c01b468fe356189e25129904f3ec292d259e2bf19", -"T2B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "423fec1d0e41ecf5960862a7dff40ce4a14e1ccf335467618d625e265c2bd9f4", -"T2B1_en_test_lock.py::test_hold_to_lock": "50a53db86e43df6339ea6d168170c763917f0af933aa661798e7da3ed45f279c", -"T2B1_en_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", -"T2B1_en_test_passphrase_tr.py::test_passphrase_delete": "28468562292a54f2d8cc954129c6b1859c267bc5a9b94f9b406352e71a4c8036", -"T2B1_en_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "8d6c2c13039c420ba1430f990053a30bb0358a4a9d17b46a6a250d577f7643f8", -"T2B1_en_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "e0aa81693c8b40ee12a8ff41f66cad491fe8e5a220bb0a915c18ed7b2e8d323c", -"T2B1_en_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "9d1762d0db3b5699507b068ec81cb1ed3e265c6ce7a7a2e6d7a878f0471f32b8", -"T2B1_en_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "7ac52d0d0de8d7cd35200ec9a2b2738e8e4e9ba87435caefbdbff3776749b83a", -"T2B1_en_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "8bd1754cf1967a6570339e29224d61f45e919cb23d7296e3beb6876dde84b289", -"T2B1_en_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "502828e28edd8147781b1714cae83eea6f71a9820c30446d7e38eeb3a43617c9", -"T2B1_en_test_passphrase_tr.py::test_passphrase_loop_all_characters": "e06ec53edbd9c3d8927e141e8a8e2af521641d0064a20b7953ad15f1a1d48f52", -"T2B1_en_test_pin.py::test_pin_change": "0c143673c0bed9f1f4883f358e0de939a3317efa38619db165d3b7a5e72eacdd", -"T2B1_en_test_pin.py::test_pin_delete_hold": "99c71fe476cf51eff058d2da13f8ba4c192b3396e16440bb766a4a223d4efa93", -"T2B1_en_test_pin.py::test_pin_empty_cannot_send": "7e4ca6b3b7a0606368fd962b93292810f1541696c74fe4dd65f6be42ecaf6f97", -"T2B1_en_test_pin.py::test_pin_incorrect": "9be56566afd2526e29c586935a60937340a03889b4fe1b7b16f1f043a582b444", -"T2B1_en_test_pin.py::test_pin_long": "6c03dc8960d7ad5774ff05b673b3e035a523fa6b44d25c485efffa48f51b0721", -"T2B1_en_test_pin.py::test_pin_long_delete": "9e027284472ab8b160dc3b402b782a4e9c144eb38b5f2574fcf90f3d3aa3e304", -"T2B1_en_test_pin.py::test_pin_longer_than_max": "0d91f6242abba4f553b3acec610e1709cfb9963ec04ef020d8ae6478bfe8374c", -"T2B1_en_test_pin.py::test_pin_same_as_wipe_code": "5bf07232bcf50268524a6f53b03f79c53c98c26828064d3928f7b3c803f05d89", -"T2B1_en_test_pin.py::test_pin_setup": "8c74ca25ab0f2c2dff4113f0959cbf3da931f6aae28b695a81795acfa4105d8f", -"T2B1_en_test_pin.py::test_pin_setup_mismatch": "a7d0d19e7ba5e7a7cbfcb92c38f0f3eb75c0e19eb12fc953185a3564b20aacb1", -"T2B1_en_test_pin.py::test_pin_short": "22cc63b7cd88f752d2d7c9c7d9d047c7bcc316c2e5ca26e509fdc672399a3b03", -"T2B1_en_test_pin.py::test_wipe_code_same_as_pin": "b93b5cf115fb93ddbffae67b7612f0b377210f73b026fbd785d148cc6aee0c99", -"T2B1_en_test_pin.py::test_wipe_code_setup": "93c7dd574acc8ea37519dfaad999adecb6fa8dca5c1b92a1194772e4feb48907", -"T2B1_en_test_recovery.py::test_recovery_bip39": "96b513e7c2044b4ee00a922e5e3d746c9008f116881ba328fbfecfb479835b10", -"T2B1_en_test_recovery.py::test_recovery_bip39_previous_word": "e4e8a7fbcb779d36491d08ae03cc7105b5f956ff2679f2621db427a7a3056cbf", -"T2B1_en_test_recovery.py::test_recovery_slip39_basic": "0156d5bb87a8a38deac15a51d100ddfb3ed0bec3c5d683fa54862f391e43a7a1", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "d507d5785935faf4b2798b5540cc57c668554bb7543463240e289fcd0b7b77e3", -"T2B1_en_test_reset_bip39.py::test_reset_bip39": "2ed2a2957c618130654925f9b6c3ef0ef4c9281dd5fd96b0c3859da8a0b759e5", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ff7a9903ed4c88f8b784de9eee6aca82a6604e7750f035de91f6c8e0f9e64cfd", -"T2B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9a9d78e8f7730dad9dae7dce628239a1e983a7770afb313b2d0edf78c4255c1c", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0328573b94357d23c515418983bb27538533fbdaf051971950148542c315ffca", -"T2B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "07953f5961b6af1759eb9afb41e11c8f95ea1a873cf531c4741199973543c3b2", -"T2B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", -"T2B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", -"T2B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", -"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e0cd08f8c6b1e8164e13a1d5ae58af9f0b560e7f49aba175058bc5ecd9ed0e0", -"T2B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "5167423df1a611f5608228d783445fcb6ef7e71e51e893ae11d352c35cd72a6e", -"T2B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "65aa98bb42b5db52b6e074eae8e15862377029429e72f2c5da960df5bb03fb99", -"T2B1_es_test_autolock.py::test_autolock_interrupts_signing": "b1c6590cf608778d41b1e9f424c8c0c9011731b7e70a07c09efd1c91818b7a4b", -"T2B1_es_test_autolock.py::test_autolock_passphrase_keyboard": "2e56a7d24d0c0cc341cf9b1c817443ecd61c84e86a8ae867d788f6b80c186d9b", -"T2B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "52a1db73b3489e5d4980785a15ba920f03498ec551e151f8436b6aa94c605c7c", -"T2B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "9d001647fd3ae02ee9aef7f4730a09663e591c1b6663b5a8d0982e486be9188e", -"T2B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "8a5cf50832754ef0709ca607d4adb4f31bd6f52eb592c09956cfa5ebf8fadd42", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "70d87ff0242c1ed9bbd5889e4996c1b3b1882dee9a286eac12c338f54f71b4e6", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f2b099dd9ce6327caecb52bf69024816d6fd498a006405668985050f1199a06e", -"T2B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3386b23c0b2fb42be7651867ecde812fac70b84d691ac33079075435e2d5aa54", -"T2B1_es_test_lock.py::test_hold_to_lock": "e96bc5c43a4187163b152470c8296d101503d0b3c34eebfe5c0729fb3bdc005b", -"T2B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", -"T2B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", -"T2B1_es_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "5c05aaeb8a37df6fbd119fc87b9cdd92638111279c93ffa8ab402e921208c1c1", -"T2B1_es_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "6cdccbd2ae59c5aaa3041ad57aa52d4d88000eda0bbc7cd42515a16c0145c056", -"T2B1_es_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "57588b83b5696466ad738d143e1ec4fac3132fc328c24f1255b2e5f0c91f9a44", -"T2B1_es_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "62cdc318a722913422a7aa190746521ed2c18b3ed79aa5854457178a51e293cd", -"T2B1_es_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "dbb4db4ceda8eb660bdc5bacc611649753f2b273ea76f72f1694282cc853415d", -"T2B1_es_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "07e07da20ee6fe6cb2c96e47db180a821356ef62af8bee79493421eaf2c076d0", -"T2B1_es_test_passphrase_tr.py::test_passphrase_loop_all_characters": "a7f2464aae4002550a0a9a9ffad46e483ff860572091d4478f157e6be3cf078a", -"T2B1_es_test_pin.py::test_pin_change": "98dfc27c23d8b137dd3b748228b735d0d56c72bbb0f736abdd239e5be67ad248", -"T2B1_es_test_pin.py::test_pin_delete_hold": "6997e7f48d2e8e4830301f41f8802a1b56cddfc34e5d11fffda2e6e3a477a3e2", -"T2B1_es_test_pin.py::test_pin_empty_cannot_send": "26241a6f16528f1dcf9b780f9901caea311ce447faa0ab99b5747e0935345393", -"T2B1_es_test_pin.py::test_pin_incorrect": "9227d4ed996e88045c106bb3702812834af64fca5c046dbcaf4070dcb8856877", -"T2B1_es_test_pin.py::test_pin_long": "2afeb465bbf349e4e7904738aaecdf2d5291a34c2971cc81c84d823615763e51", -"T2B1_es_test_pin.py::test_pin_long_delete": "1ccc6e604453b7e236981282f640d91a18ee91e63b381add3993381da9ad283e", -"T2B1_es_test_pin.py::test_pin_longer_than_max": "624317909758289d8ae75165cf537435a71ed78eea5a258dd550b0a87085ae2f", -"T2B1_es_test_pin.py::test_pin_same_as_wipe_code": "66360cdb1dfa2ed08a6692a15917aae1f823ff0935bc1308b2abca2085dcd117", -"T2B1_es_test_pin.py::test_pin_setup": "98212cdf26228839d65b5ee58ffbcaa2ea675e1f5b906d85b7e4fcd78ae901ce", -"T2B1_es_test_pin.py::test_pin_setup_mismatch": "5c2706aa9ac8a9a0f6175353d67b1750ba6a329ccb3acf6b2cbfc86c96db5d47", -"T2B1_es_test_pin.py::test_pin_short": "034dd5e5a98738e68b4a9aaf15afe6782af162a3db3bd83e5e8e1f5ce31a4838", -"T2B1_es_test_pin.py::test_wipe_code_same_as_pin": "6ab2a83fd754bfed8f7cc32add065da96923d1fbb630e1a5e8c7dfbf1c9e00d2", -"T2B1_es_test_pin.py::test_wipe_code_setup": "74b9c5d1188444c7b27716765532b98a10e350afd42b20eea00b559b1968ac4f", -"T2B1_es_test_recovery.py::test_recovery_bip39": "d6428d52286874bd35e8b5581bae4dee184d4b2563f7065064c637d2f3e18426", -"T2B1_es_test_recovery.py::test_recovery_bip39_previous_word": "b6f0df37e7f59b65a78641ed2d464238fe408709c7d6d8e29c268f61b443dbca", -"T2B1_es_test_recovery.py::test_recovery_slip39_basic": "1878e6255b3eb3797fcf568e62ae415b021fc046ca59071906aae50c214039d3", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "44445f4dc5b91dd3f073a1f7b17c1d8bd2c7ddc7d949849ba83b53413e0d80b6", -"T2B1_es_test_reset_bip39.py::test_reset_bip39": "8731fd3a8c11ae495533954daed17869c20ebbd8894fca2ab60df65d5d527451", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "faa00c96fe873ca23bced4e1eda899d18d3e1a7838351bdd0f913a961f03c8dd", -"T2B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8d4d9fab34aae28efbb9064c7f6e238d9dda67281f4d605e559142bda39b21d6", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4240927d1677d77d86ce0eb9ca8234d69daddcb8e80771cebb4038889929595a", -"T2B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f17542ebeaf778c6f9033fcf2dc41f54b20c76b33e786b1d46e5cd17fe5141fe", -"T2B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", -"T2B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", -"T2B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "dc8334ed53feb63bcecacf6c24c1bd49260dda7ad96e378d0152ad17941291b8", -"T2B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "11dfbf27699cef2965dc33c1b2658a2eff7490297e627284850da90b012a512e", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "94dca4ffa2d6a0a8facbfad3c5806df597b3987a9fb8d4946c47a530b641445e", -"T2B1_fr_test_autolock.py::test_autolock_interrupts_signing": "482cc15955ca4f2500808c8ffd583e679296775fecee69fe2286684bebb6d555", -"T2B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "32c706544b2aa930335f4edbc80a9bc9620c9e8b04f7f18076d04c8ba5a281c3", -"T2B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "1d5b521490effaf74d08a5fd29868e65d9377fdf9c5a13c323092d90609df18c", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "04d245ae8fc92872a0bc710dd8231b479617e7cf9cd1c3c9543c6a149ca84278", -"T2B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "44a3372ae24a53ac14d3371f684d092aa0d6600874d3fc3c7c8f2a78dec6ecec", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2a1ca30ccbc3df5b568cf118152a8ef4c3af49fb23392ab624aeaafa0f0ce932", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4db4fd3c72e4233585a6c3fad5ab98d19fbdfd4ecf3fb00484fcf0a4ad690c91", -"T2B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f0853ef27588def2ea3b4143f2cab8d095e3cbc6bb3034e67948f90fa304480d", -"T2B1_fr_test_lock.py::test_hold_to_lock": "777f7b227d219ead82a76f086fc589b9d0d37ab0fadefdc59d42c750e3dabaf0", -"T2B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", -"T2B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", -"T2B1_fr_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "9c4f6394ed4c0933978b7179586103b2de51607242410c2a369bdfca8deb7094", -"T2B1_fr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "235d1650cfd6d152e708b84b988a977faee62378e32124857ebd92926a878b73", -"T2B1_fr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "d632f61e49e562e4f7ffcedaeead384501e756c8e45fd53389fb9df752014924", -"T2B1_fr_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "aa178f45a2e51e372c979e6e0b46f40aa4ba3131b25889247cd61dd5afd9885a", -"T2B1_fr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "61c6497db6c69de9338547c8184bdbcd1cb452ad1f36ab37f4516a90473441fd", -"T2B1_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "8da058fa6f29f5327cffe6239655cddf530719f0dcecb3cded5554f0f317a9c7", -"T2B1_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "9f70b92d9ccdbdf713e473f25e12f0a81684b1070483f6e4efa14dc2f30612de", -"T2B1_fr_test_pin.py::test_pin_change": "8fae22f4e962b43d8aaa780083c83fccdae3075d859f8a6d7bee8730d03d0e22", -"T2B1_fr_test_pin.py::test_pin_delete_hold": "6c414c97465845619bbd44a1b1e8e0ff9ab880af2f59c5076422cb57ad1b620b", -"T2B1_fr_test_pin.py::test_pin_empty_cannot_send": "9221e38beb9670a2545a13aa0c9967efe959f0866c1e5663795bb9f86c08c162", -"T2B1_fr_test_pin.py::test_pin_incorrect": "c0df4cd148d9f932cb99352e3cb881a788ce3303f1b97eb2bd6af085e1274dc4", -"T2B1_fr_test_pin.py::test_pin_long": "7c4dccb4bc2dbf259b05e3e17127389fcee171f5397d14c496cb251ddda77bf1", -"T2B1_fr_test_pin.py::test_pin_long_delete": "f1a1e3b110186d57e69f6d4cadad2cf3b1c41876203321833aee8ab280ec18d5", -"T2B1_fr_test_pin.py::test_pin_longer_than_max": "c2e4426269eb067bf712f3bf1d50195b5337c5ab443487b3526953d5990c5e84", -"T2B1_fr_test_pin.py::test_pin_same_as_wipe_code": "ab26611dcc6266d74a28a09c124f506c99e669d5daf4fc1b0ead8b1658cbaf12", -"T2B1_fr_test_pin.py::test_pin_setup": "03d7383eb6bfdbfd2fae666f2dba55a0e06b801460dab855a2939b7896434b10", -"T2B1_fr_test_pin.py::test_pin_setup_mismatch": "2355be5932873459592cbfed1950b07cf03a88aee418b8d8645476953450de8b", -"T2B1_fr_test_pin.py::test_pin_short": "86ab5946d9410f3733a8f906bd2b6d59893450a23c2bdbbc8a94fb459469d005", -"T2B1_fr_test_pin.py::test_wipe_code_same_as_pin": "669dfa6cedab691eba86d223aedbfe0c522b5d27fc60f073f79c3e08df7f4ff9", -"T2B1_fr_test_pin.py::test_wipe_code_setup": "03d8e92fde43596248e69df7a0eb8880e3e9397125cf3d54940260a966121213", -"T2B1_fr_test_recovery.py::test_recovery_bip39": "a5170bb705000dda24f7e9106298c829c3cb389b4b5f5307e4d3bd4789417f3f", -"T2B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "d996fac24e730456a2c860f22b60f5d469476066d39741171f0b1fdb91e3b168", -"T2B1_fr_test_recovery.py::test_recovery_slip39_basic": "82af3fea0b8bb00eb27e8c7f001fb1acdf211a2a4908ee681a4245fb80f333b1", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "e6b8b0c99b90b4f436d58c3fc29ec772c51e7bfc9bd43bb3e328d7d1f0c44c65", -"T2B1_fr_test_reset_bip39.py::test_reset_bip39": "d52b12d3857e40aa36df40447bcc65c07e9aa11eb33a172d265df8149b0868dc", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3eda1d5af4e53c8982e06dcb9c84b5e3f3bc6aea4b4e3f90db189fc3d464155d", -"T2B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f96d564a0550ec845f78de7d90b48728b142daa2071d6dc9fdb06edef0c8b219", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eb88caad1d08915a450dfd81ac7b798aa140547bd5ced825541abb121ab851a4", -"T2B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a7b5c10b578002d764a7a97bbe1559d2c1284f0e043800aed7836fdba8c5dbf4", -"T2B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", -"T2B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", -"T2B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1", -"T2B1_it_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "1258bbf50d05fcdcf2a3ffe52be4f419a158fb16de722cd56b8ab010b4d516c9", -"T2B1_it_test_autolock.py::test_autolock_does_not_interrupt_signing": "81717a8487255057ae82ae1273945b237067a3e6bd21d1da625156227cd61566", -"T2B1_it_test_autolock.py::test_autolock_interrupts_passphrase": "8ee9249ce808d93fbceb1ff3d08ec5d6fbc070b1ad6dbda27e1bf6552549ae58", -"T2B1_it_test_autolock.py::test_autolock_interrupts_signing": "77d6ed1561e26678ff7d20eda28005e287f545c99f943d39ebbef6647b08cf9a", -"T2B1_it_test_autolock.py::test_autolock_passphrase_keyboard": "8761d38bd493b7c2ca5af5498751c19c3f6b89572aa221fe07cf4649886235ed", -"T2B1_it_test_autolock.py::test_dryrun_enter_word_slowly": "dbfcc66909bebeefa2f1237237ae7a807ce92dc20aa28c9dba78882c3736412b", -"T2B1_it_test_autolock.py::test_dryrun_locks_at_number_of_words": "6de5485974ef9a0a1908fbd4aae6368f7dc0e5aafd09550167e88d3b73df527b", -"T2B1_it_test_autolock.py::test_dryrun_locks_at_word_entry": "d3b24d776496669313282999e0cb0b8c8f2bcf146aa71b5ea36f9c60fdf5d6e0", -"T2B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "564d800396942ae9d2824118673e7a0cb66575847d0cf7534634eb355b5d2cb7", -"T2B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d648d4b3f03ce923143e6b730a15117f62425a9497783811aadf2c7f7abeb1d3", -"T2B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10122b7427165836d0a22107c77e4a8219372553253c8b06dfe0b85308be2fbd", -"T2B1_it_test_lock.py::test_hold_to_lock": "5ec2d63064685a037f2e1c8440c256d9d45673723b06e69a929e4bb5774905e5", -"T2B1_it_test_passphrase_tr.py::test_cancel": "4fee267d1cd79670786aa51f921a4dcab10c8565fbe7d430eb6bdcdfc3ef3f46", -"T2B1_it_test_passphrase_tr.py::test_passphrase_delete": "69f00bcb21d6225ed80c7777ae2119c36d9e220ccf8cf3fab1fafea2a021a44b", -"T2B1_it_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "a3e56441c08aaa274c52d2f09503747dd16ede22566a4430096707dbc7d977da", -"T2B1_it_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "93e5b3ab30a01a73116b564a90c9716aca25a5d72a0e74be522f5e2e6513ba5c", -"T2B1_it_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "5df074fd6421879f9e0547032caa269abdaef2fc76e2438c0626643791d703dc", -"T2B1_it_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6c708f37642bec0361372ba644af624567bf24d480d0d664c63b44392b6450e3", -"T2B1_it_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "58ed2def937a33c8b9e6d54c80522d03bb098a1d9eee6224d448abff3b162f43", -"T2B1_it_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ae65c8fd4d7adc5eea3592fc5b84d24377d589b22891f6bbd95f35fabdf3ccee", -"T2B1_it_test_passphrase_tr.py::test_passphrase_loop_all_characters": "952e6677bc508abb1fa839ed9f4fc583c19a254ef75f1f9838369e120494e7a8", -"T2B1_it_test_pin.py::test_pin_change": "fa6890fb169b20f4143e72a0f38a33af581e05f7a02748ae2b03aba349f3dd22", -"T2B1_it_test_pin.py::test_pin_delete_hold": "73bbfecc3a4153811107b70841c966ce51c2fffa68269f349de4cd5e5266c39f", -"T2B1_it_test_pin.py::test_pin_empty_cannot_send": "270954e306ae9f97271acf2942e788e2e54f7f108a57228224ce4afecc890346", -"T2B1_it_test_pin.py::test_pin_incorrect": "8c574d6ec3afd6ae7fb858bad86aae6f3d3c0ee18c6b0a52042433c551d200b9", -"T2B1_it_test_pin.py::test_pin_long": "45fd25b94d8d0e5d7191f59e1760a8a520a91915728fc04ad22bda0e0ed6de50", -"T2B1_it_test_pin.py::test_pin_long_delete": "9e92871e7a8b1b204f1823ba3d8d09df7a6ed041e0b24ed0459ce0074f294f15", -"T2B1_it_test_pin.py::test_pin_longer_than_max": "d7b309e3333a71489c1a015632e335829b6b05be82bba5755e8b9bc8ec85783e", -"T2B1_it_test_pin.py::test_pin_same_as_wipe_code": "5eb8328727b98d5ba84c0f995a40b3321069625185e5ed1754ce0ed852b96023", -"T2B1_it_test_pin.py::test_pin_setup": "5de37f8e72b5150922fc442ecb2c370a9584b05ea49a302e8033a0c77a051eec", -"T2B1_it_test_pin.py::test_pin_setup_mismatch": "32f0b79df89f2e18e81968d2c515f753e8ee32b3f802b97838fc3ecd82136659", -"T2B1_it_test_pin.py::test_pin_short": "d47f6f36db62163b5f45d29e428c5c2de3964fda4aff13040d5f8a929dcf6c9d", -"T2B1_it_test_pin.py::test_wipe_code_same_as_pin": "0a6063e1107a8d9a0cc65f29e644c2a8d00a471aaa44113d65184646c4192729", -"T2B1_it_test_pin.py::test_wipe_code_setup": "cc9ddd35942a02e98e5764ad98afcac5d4befa232faa2ccbdb858d1008ab3588", -"T2B1_it_test_recovery.py::test_recovery_bip39": "1ac40a664a8ba0e47c6ff006cdfd63c8c8aa79542810f77a47365f4ba35cfdd9", -"T2B1_it_test_recovery.py::test_recovery_bip39_previous_word": "6c6855a6af3eff07a7bb24141565adefabccdaa4e27801a75e6365023d3ece74", -"T2B1_it_test_recovery.py::test_recovery_slip39_basic": "278712410995f99fff315a46f008cbea514538301479097055f16d826592b77d", -"T2B1_it_test_repeated_backup.py::test_repeated_backup": "b526088dab629f2e56699490e8a02302c2426b9da6d81a2658bdc6511bd64aae", -"T2B1_it_test_reset_bip39.py::test_reset_bip39": "c5ea650d15d4ad804f10e9faae627988e8f950d2443ae94bae8b867df9d06b67", -"T2B1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "354a02883fb7d351bd5acd36b74dd9f89b500d3749ae19fc2aedc0ddc5c2b0dc", -"T2B1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f63f5d9e85ad3b46a4f30a1e3458a0d83dd024fe4107cf3017c7292b53b70754", -"T2B1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "8546496120d8e57d12d23dbcc183ade8243a0449be172024b2fe341cdcb9a574", -"T2B1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "62fbaac68776f2877c4e3c14104f989ad39ef3563759b23ed318c96de2544fb1", -"T2B1_it_test_tutorial.py::test_tutorial_again_and_skip": "67014b0978c8075882de0d059fab97c67ade01399d94c1eb85a9356035e5243b", -"T2B1_it_test_tutorial.py::test_tutorial_finish": "4ea6ee6cb8186c35903d4c6865eab979d6dd4aad06389ee2c005b44fb368c16b", -"T2B1_it_test_tutorial.py::test_tutorial_skip": "667b028896d3530a109118f5ac329e80f1a7480ea8068804f09f746077464c60", -"T2B1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "173fba1548afa2be06cab71b75721d888277144f47cccffcf9ae5178d137920a", -"T2B1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "d7d565a030c97caa2dfa281d25afa90bc5b663fa6e57c279e8662bbe9782d7d4", -"T2B1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "95267e5fc4bcb60e97f3038fe621f390d6237e8e83586f26ce9d922359c664c3", -"T2B1_pt_test_autolock.py::test_autolock_interrupts_signing": "5809e31e16b3f1b789abd2347757d0e0cee30cbf1587e4902d15e58303b423be", -"T2B1_pt_test_autolock.py::test_autolock_passphrase_keyboard": "7062b187bb7cc9bc4c5fc8cb93a829249a5c184247123859a3149e2eb80f957c", -"T2B1_pt_test_autolock.py::test_dryrun_enter_word_slowly": "badf9736a4fe00398e927186333cc310e3f50e539ecbb2ffb7d333076769ff12", -"T2B1_pt_test_autolock.py::test_dryrun_locks_at_number_of_words": "6faaada7541dc44561566b0b9be89b565495f7a73afa1fa3c328da957234f5f1", -"T2B1_pt_test_autolock.py::test_dryrun_locks_at_word_entry": "64b81ae5b3b789452376301d829c1e0c18a2864eff91311c344df7cd0757f639", -"T2B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1a76268541a5ab52311ad043515d80e6992f2b8c701f692a3c0dc67792784db0", -"T2B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "929ec884cce60bb71c1b1a8ec00f6e0b8544447dd4f59f71b3fd66aa6384d647", -"T2B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "20c69206a561c9bd6a2bc5e6bd1670e5f13b577d0a2a805f7a44f1a8928cee7d", -"T2B1_pt_test_lock.py::test_hold_to_lock": "bf782aaa653f86b7dfb0ede05201059f0c5b94534dc28881d8deb01493f442d2", -"T2B1_pt_test_passphrase_tr.py::test_cancel": "91ae9bb439541bd5ed68cc56c66d96e9c6adb0a9d32c4d633ad7a93de46a2a39", -"T2B1_pt_test_passphrase_tr.py::test_passphrase_delete": "35656cd7f65c7d25f07525ce728060ada4e6059e323ba8971980dde1bf4b9904", -"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "c3b1959dbfc19f449bd468961d8545ed0b0b78a6d2fbc97e2d4836fdd6c60940", -"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "1e7cb0a9e383fa03a10ca5f8008c77c0130a2cbc95a669ba228d51643e1bd593", -"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "285ed5ed1076c6208752ea156de50a17503635febb17777043b8d150619c7038", -"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "53afefb9adb376bb3802a94dd91d65ec9679281b854cf7e4ed4383201ef95f65", -"T2B1_pt_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "7347726963e15336a209486b1f333743b6235141c58d72ce9fcdc99d012d16d3", -"T2B1_pt_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "7151b220f29025a359d9a7e05e79ddddf54b2c0061336a51e5cfd4b55fbcc047", -"T2B1_pt_test_passphrase_tr.py::test_passphrase_loop_all_characters": "c3672b63a8c09a8330164f5d90e37093f2cd58c19753568411832ef3ccd72f05", -"T2B1_pt_test_pin.py::test_pin_change": "7071fc2bfa3f5558854c2c03fc76e407e24432e0ef9e34c128841ff1b36ccb12", -"T2B1_pt_test_pin.py::test_pin_delete_hold": "e80cc3609110f6c54fe92592cd3646f62a115d9c706e39c3dffb6f87fbf61588", -"T2B1_pt_test_pin.py::test_pin_empty_cannot_send": "cdd720f84e25d3571eb860ea06cdedeb9aad2f7420452fd45e6621047a8b7f74", -"T2B1_pt_test_pin.py::test_pin_incorrect": "8522e8fe0f4c298a8e0e7fac04ef23c92d1989200577f7d0d64ae324e7882b0e", -"T2B1_pt_test_pin.py::test_pin_long": "ca9b85a5af8399241543e2cbefe8f58680dd857748db3316a61c250aece37265", -"T2B1_pt_test_pin.py::test_pin_long_delete": "d215b87697475431e1a5a33c10fc962a627ad9e26deb0c33b4300387b3986d0c", -"T2B1_pt_test_pin.py::test_pin_longer_than_max": "cc2185e768c08136ee3a49a6c33e2f25beb3752942d3b79b5c81587434c19e0a", -"T2B1_pt_test_pin.py::test_pin_same_as_wipe_code": "ec65ec7e34b95bf6c2cd592049b2aa9f2d8eb381c07d4df6e86e018e83d49a5b", -"T2B1_pt_test_pin.py::test_pin_setup": "7f515b883a4b0a12257bd20294c376de9b21ca87d2fbec6721c24734e24f885f", -"T2B1_pt_test_pin.py::test_pin_setup_mismatch": "ae15a62c6612ed4d81706057ff1c333360b98d40859f611fa73cf4a669829e5e", -"T2B1_pt_test_pin.py::test_pin_short": "f0ae4aa601c20e847319607aaec16cea9b65c4262727bcf524f362d0e93a92e1", -"T2B1_pt_test_pin.py::test_wipe_code_same_as_pin": "8ded8b2bea9af6f02061c5e5d408d01255763c636cfb3b02c8fb351bfc0dd6cb", -"T2B1_pt_test_pin.py::test_wipe_code_setup": "191fd1d4df6cd7a15fac984a2f94ed93f0e943edef72ee5a01f9cbd3af5f9c99", -"T2B1_pt_test_recovery.py::test_recovery_bip39": "1953e84e9949b89e9e04e607384c93c8901f4603204a506c8634d4cc630eafef", -"T2B1_pt_test_recovery.py::test_recovery_bip39_previous_word": "04b78b5d699e1e0b1cae89768a53bfd423c58195ec816ef327ed91c623095cb9", -"T2B1_pt_test_recovery.py::test_recovery_slip39_basic": "d89954a1e77f372b9bd649c37b1161ceeb5683fb49f51ec325d53b5e81b4a097", -"T2B1_pt_test_repeated_backup.py::test_repeated_backup": "263378bf81ab7efa10c174b5891b3b64fa5e2077041ff93e67a65f9280b3a24d", -"T2B1_pt_test_reset_bip39.py::test_reset_bip39": "d42be18eed7dba8728fd74b16ac41f935d6cefeaeef8b16e572b58cd8c9d2b45", -"T2B1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d66e97ee4ae232603421d64049184a869a69efcd154a47d5b909217955bc6554", -"T2B1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4eb70ad57b648594ae9361950c32b30b1d3396cb3c8843d8adc3fa8a3363efd4", -"T2B1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4d73a5ef284d9dccf3099ce86be219536dd1331fa53870ecf70ca1916e3c3140", -"T2B1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c405ff248c3000259977ce67a06dd9f33f178eb66575ec8bd1915c33b093f9e1", -"T2B1_pt_test_tutorial.py::test_tutorial_again_and_skip": "dcdc6ee2dcc2c6e2029468903fb756d75c6aaa40753a8737061affa1ac8d6368", -"T2B1_pt_test_tutorial.py::test_tutorial_finish": "a82c6370e0d7c8319acfe74a2e37aaf1f133f964dcb082740e31fcc6f4696363", -"T2B1_pt_test_tutorial.py::test_tutorial_skip": "5ee678f5cbc020ca47cb90ea913257c2b11bf996c3fc55eac5416703d93f5d8c", -"T2B1_tr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "9e4275d737baa7590bab54ed43f5f74db22cede3a07e47eed72dafeefb3e3b82", -"T2B1_tr_test_autolock.py::test_autolock_does_not_interrupt_signing": "1fac19fec25c7bf249fda3e73a6ae662b13dacf765327c33c63bbb4dc5bf6042", -"T2B1_tr_test_autolock.py::test_autolock_interrupts_passphrase": "e77c173368b5831031ba1cd04747e311365cdebc05a871a02de0e0f4269986a5", -"T2B1_tr_test_autolock.py::test_autolock_interrupts_signing": "484c17fca334e8488bd74debcf82701d6676a773b89008d5f9e80987c62774db", -"T2B1_tr_test_autolock.py::test_autolock_passphrase_keyboard": "7f1cb7658ae93c94dbd76072e6bdad3ac56f4bdc14b2983f214817727e0ac21d", -"T2B1_tr_test_autolock.py::test_dryrun_enter_word_slowly": "ec74a7e17952fda293494839cf6e2c1efd8df0ca9dbdd53baf75a80dca7db13a", -"T2B1_tr_test_autolock.py::test_dryrun_locks_at_number_of_words": "b04a313162ad737a2fb3298c7ba251168c74908e0e00a26722ee58b6590bdc63", -"T2B1_tr_test_autolock.py::test_dryrun_locks_at_word_entry": "5bb321aa93fd6bdd140f5b1bbb5205349419ac86f5b229e93e8b03d4c82dfc59", -"T2B1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "26b6fc6d992b9fe9e528dcb9e782b5a8bc035add5cf61b1884e96ef1075d9c0b", -"T2B1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "1a31533ff3f9bccefbd7d68d121eef58301e2175e9e1548f0e01d4a6a840991d", -"T2B1_tr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "dc46ea3e290390364f46aaf9f484c7c67d558114bec77d1fd95c9452fa217a2c", -"T2B1_tr_test_lock.py::test_hold_to_lock": "69fa14a3e990d19c0e1f4ce56122982b5a076de0270e584a7501b5a461879688", -"T2B1_tr_test_passphrase_tr.py::test_cancel": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", -"T2B1_tr_test_passphrase_tr.py::test_passphrase_delete": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", -"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "ebf43ad15288a72818ce05153f7a12e84598b434bc3ed58a35992edbee866ab2", -"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", -"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", -"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", -"T2B1_tr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", -"T2B1_tr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "30d2c78dee736dd6074522facca6a6b3491f4529940786df43b8e39fbac1bca8", -"T2B1_tr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "d056a3ea289b2734c559149a2e1c7aef4dbe06336cd6b18f807cb143e7d509f1", -"T2B1_tr_test_pin.py::test_pin_change": "b4f5d4fcd267ae4f2557ebd8151c506bc29d66fa6fb2d7855880d3c254a10f78", -"T2B1_tr_test_pin.py::test_pin_delete_hold": "56be29f2726213213cd0b88321c723607ecc2b3cd78e3d8f19839f1e66c6c435", -"T2B1_tr_test_pin.py::test_pin_empty_cannot_send": "39581f459d72da01cb8ac85ed9637aa35d926da477846453ec7e8d0196753a6e", -"T2B1_tr_test_pin.py::test_pin_incorrect": "11580252771ae7d67f9a3ffe0fed6bf45e12b6c330657789fc2187b365967f10", -"T2B1_tr_test_pin.py::test_pin_long": "5a63418b2ac43f70ac8b020a8359d0101fa597b08efbe095c0b52bd85095fd61", -"T2B1_tr_test_pin.py::test_pin_long_delete": "5a63418b2ac43f70ac8b020a8359d0101fa597b08efbe095c0b52bd85095fd61", -"T2B1_tr_test_pin.py::test_pin_longer_than_max": "0d475a9497b2b8f4bc0c0a52ba90016ba362e4803d24833f1d6340f8130bb726", -"T2B1_tr_test_pin.py::test_pin_same_as_wipe_code": "f1e55d26459424663f8ade46eb84f01beb0087f5c0044a24f219f56c7fda6d36", -"T2B1_tr_test_pin.py::test_pin_setup": "042f53278424a0e5b5833049e50cd86e1f18e6e87bb80720817a32fd5c815bef", -"T2B1_tr_test_pin.py::test_pin_setup_mismatch": "feebdd4be5408bf1fa832b101a90d0b608c7e7b2dd29e9f7f008310cea8613de", -"T2B1_tr_test_pin.py::test_pin_short": "56be29f2726213213cd0b88321c723607ecc2b3cd78e3d8f19839f1e66c6c435", -"T2B1_tr_test_pin.py::test_wipe_code_same_as_pin": "b4f5d4fcd267ae4f2557ebd8151c506bc29d66fa6fb2d7855880d3c254a10f78", -"T2B1_tr_test_pin.py::test_wipe_code_setup": "b4f5d4fcd267ae4f2557ebd8151c506bc29d66fa6fb2d7855880d3c254a10f78", -"T2B1_tr_test_recovery.py::test_recovery_bip39": "228f7dab7d9e9dcd0599f14cca736042827a375cc34cb2680471dca80f324d9b", -"T2B1_tr_test_recovery.py::test_recovery_slip39_basic": "5a2dab2daea441aa627ad99e85102501521e0ecb8c8e94f71365deae0e156bc5", -"T2B1_tr_test_repeated_backup.py::test_repeated_backup": "4666016558123ad3e9b95f5b1598f392d929867db646ce8714b79d4531b7ca18", -"T2B1_tr_test_reset_bip39.py::test_reset_bip39": "9b44bf1208451297f046dc3ba06cc044242f20cbbe617b312ac79255cf174d3f", -"T2B1_tr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "e36d425ef7420d0a79a2ed37b0f5c5c7f99b52a3eb5ac24880ced92c7e8608b3", -"T2B1_tr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c446fb2dbb489346faf5b028a84192b274714a1229baac221790eee8fa4d5151", -"T2B1_tr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b405b42323046968f3e6fa650e4ca1ac5bb05c7eadd32c55cb18caf7df781dab", -"T2B1_tr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "d56f0ec6a747dfd7d88989141c4eeca49344ec7197179c292bb50ec511db6378", -"T2B1_tr_test_tutorial.py::test_tutorial_again_and_skip": "ed36b4718a40edcc386e733e4ecf2e5850c91bb83f0c1c36a6c1fe87d564050d", -"T2B1_tr_test_tutorial.py::test_tutorial_finish": "0a056ad32d74f4834ab7687a8b8ebb8c0a0277ddc8c9b62203781fa400cf3ed2", -"T2B1_tr_test_tutorial.py::test_tutorial_skip": "f1606326fc53b27b71a405041f2a073d9a6d5889331ab43b8204bb760b881f07" -}, -"device_tests": { -"T2B1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "19c5eb360c23b1a362db3813421f0772b28ef90f65fe0ddc9ae8c7831bd2cb0a", -"T2B1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "396a3731cf3218fd70052769be16e36be424e3accc0c6352d962eb56e67ca1b2", -"T2B1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "977be292c8a15e593ee283a90b3af438e3a45bdea7566e43fb81bbf7a03cede0", -"T2B1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "0e0f5c16c05a0628df9783ede1ec04e7bf06c6aa10575f00c19822bb7f1fa4ca", -"T2B1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "a1f27ad27988e4347a04268b8ce673b8f2c13ba0060970df789a0285b806b745", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2d0818c80d9e082527782ffd5c5a0e16f01cc52be4dd3c1f21a75d0d7451cf7c", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "81bdc339580bfae6802d35bb370710aa2b114c80125352b19fb2f881ec969c95", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "525e7779c1d0462c166aa74513678c707d6c37c3235047a97625c3f03bfc0f8c", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2d0818c80d9e082527782ffd5c5a0e16f01cc52be4dd3c1f21a75d0d7451cf7c", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "81bdc339580bfae6802d35bb370710aa2b114c80125352b19fb2f881ec969c95", -"T2B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "525e7779c1d0462c166aa74513678c707d6c37c3235047a97625c3f03bfc0f8c", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ed5c1960389f48032dd6f27d6683ca78c5e79a4a295500e4b83a5a368d0e406d", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6ccfdf12ec748ecf1717eeadf42e392e3636bd5c567b45fe7f6ca48db41bda43", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "32b25b6de46f3ebc29be9841dc162b61c561d314a97e683b26a0bd84d391625a", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6731877dffb2f660016695b8880961d9f8f72cb783fd111bcaf53c573cfc2201", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "a7b53fccaec53782baf8074efa5230139c3802f16d1d4a9bbdffe918ce634df6", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "a7b53fccaec53782baf8074efa5230139c3802f16d1d4a9bbdffe918ce634df6", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "c8ff767346e56aadabcdce445535211dc94ecec88149cf1048d8439393161288", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5ac9b722e18622fb08e3c872641938705df8c04db2d0f4a455ab0195028ece1a", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "d4128698d292c124c0c222fc1919e662f0ec9a07f3cb6eb6920002a927193090", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "2adcb6f0ebc02c938e71c079e66b7445cad1843d5c58f755fc7bf97c2cb88451", -"T2B1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "2adcb6f0ebc02c938e71c079e66b7445cad1843d5c58f755fc7bf97c2cb88451", -"T2B1_cs_bitcoin-test_bcash.py::test_attack_change_input": "2911ebb4ca66c500fae919354476ac74b96ab5aa3066232f51ec8c7c24b4724f", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_change": "f2aeb15c67b76383f25444842da6bd4d2b42e6e74fba481c8493b3778fa0a553", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "8d04d1807c64f3f37ba84a83b12a7da52d1ee25d5528eccec104171417236a4e", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "af1f6cf3c0f18ec6b057e1ac516972a29dca77865d2cec86151e5137461357b8", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "5e76c0b4db4cf7d79082ae13fff69338ede0cda3baed736a9e1a5fe36342eaf4", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "3b4415f68f0f42cafd5b84bb30250b53f49b1ed2f4a70fa8f77f5e5f01663b4a", -"T2B1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "9c30168009a527244092954d76950b3dbeb67298c4cabd6e22d522d2aa8d3de9", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "1934842b0ca1f4924871ac18a07592c33fb4fae3648ced2d6c3412260b7fbfd5", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "d8ed600417c4cf1a116dff76ad7eb6d2b897495f89670ed392719ebf3272e102", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "dcf61e5c49b8a8d5b1128a18ed61434830f608661b975e0be2e01592dc606775", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "1961c3f6734749c71a2e01e473575e82bb6351981323e934cfcb08cfba736522", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "65b6ea7163986bda25616f7ac9ff9aeb830bfd40c9736617c095294f1c8b9be8", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d8a75be360d4fe829ecebaaaeffcbf5cd288a721d86819c2e9322aca8b9a524c", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "98f05a2acd03ae6272634c14dca86dbba7c2db3fe52970e3cd223d3436a31d3f", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "f7df97a934b41f9b70d88849e9e3675bfc52a74572c6220bcec8a4573a75df92", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "e73659a9600d6e3e03af070e4b27c8e781d0a29cd5f37783e2a62eaf028e18fb", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "3acffc691b1001ec077fc76a44628943f2eaf9bba58513ae105cdb0995ff0b03", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "172d8773719cfed27d63f4497980e2da5a60c897cc3747f525324a57805e7e10", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "d2bd7a902a7eb920a58b86bbd47a88235a02d987e31155f6745323c8306f1ea1", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2f2e89f2522a6094588cffc3dd9a9cf49bf9ecbe1a117b04aba8ef62c31f6749", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "70ae34bdf709c2c9e96a6172a8f7258cbb7a7d421ce2861e2defcdfb936a95d4", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ca9420b59c5d2cf39b23eed02fbc366123ca025ce5f2e45f18150590a92dbfee", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5e799795408a06b51386c46337dc058c6b70f9854dae55f4ce9205b5b3a0e87c", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "8870e5239dfeb2db088e915cc7eaf3f3c6f27ef9a837935c74cc9559055d87d2", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "55f01f92ee4148f5bbc3af43ce39b90cd36708610f8843886decaad31c7c00f4", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "1934842b0ca1f4924871ac18a07592c33fb4fae3648ced2d6c3412260b7fbfd5", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "d8ed600417c4cf1a116dff76ad7eb6d2b897495f89670ed392719ebf3272e102", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "dcf61e5c49b8a8d5b1128a18ed61434830f608661b975e0be2e01592dc606775", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "1961c3f6734749c71a2e01e473575e82bb6351981323e934cfcb08cfba736522", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "65b6ea7163986bda25616f7ac9ff9aeb830bfd40c9736617c095294f1c8b9be8", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d8a75be360d4fe829ecebaaaeffcbf5cd288a721d86819c2e9322aca8b9a524c", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "98f05a2acd03ae6272634c14dca86dbba7c2db3fe52970e3cd223d3436a31d3f", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "f7df97a934b41f9b70d88849e9e3675bfc52a74572c6220bcec8a4573a75df92", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "e73659a9600d6e3e03af070e4b27c8e781d0a29cd5f37783e2a62eaf028e18fb", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "3acffc691b1001ec077fc76a44628943f2eaf9bba58513ae105cdb0995ff0b03", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "172d8773719cfed27d63f4497980e2da5a60c897cc3747f525324a57805e7e10", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "d2bd7a902a7eb920a58b86bbd47a88235a02d987e31155f6745323c8306f1ea1", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2f2e89f2522a6094588cffc3dd9a9cf49bf9ecbe1a117b04aba8ef62c31f6749", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "70ae34bdf709c2c9e96a6172a8f7258cbb7a7d421ce2861e2defcdfb936a95d4", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ca9420b59c5d2cf39b23eed02fbc366123ca025ce5f2e45f18150590a92dbfee", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5e799795408a06b51386c46337dc058c6b70f9854dae55f4ce9205b5b3a0e87c", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "8870e5239dfeb2db088e915cc7eaf3f3c6f27ef9a837935c74cc9559055d87d2", -"T2B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "55f01f92ee4148f5bbc3af43ce39b90cd36708610f8843886decaad31c7c00f4", -"T2B1_cs_bitcoin-test_firo.py::test_spend_lelantus": "1c623955f453c9eb1f33c8da37a2fb33d157a909df32cf2711f331a087aed0a9", -"T2B1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "b32128c52d3ba8c1445746cbfc2575582fede5e63aa3f4b11bbe07d53742e218", -"T2B1_cs_bitcoin-test_getaddress.py::test_address_mac": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_bch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "b8d2703e4365eadbe2a906450fb2d7a21f73777bdc92f5fcd2c357816e10aac4", -"T2B1_cs_bitcoin-test_getaddress.py::test_btc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_crw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_elements": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_grs": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_invalid_path": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_ltc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_multisig": "67a5a7017687f58c8b72b87812fd185bbe68c7b62435d6d90ed812c0cb9e6851", -"T2B1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "240dca1253fb9ee33ce68c4a08a6bf62338159f46f5fd0612a918ab012c81db8", -"T2B1_cs_bitcoin-test_getaddress.py::test_public_ckd": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_tbtc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_tgrs": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress.py::test_unknown_path": "89e70de91ae7a1bfe7e66e40b32c2bb0ee73417f6a9c31df77676f1719523103", -"T2B1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "5d31c4c302fd49fd7acb13fafc9dbbd09f8b41312b1a735430ecccc4e7d46c10", -"T2B1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "671a70ade41e3aa06b32abdbfd3f2ab8a1e88ee2ae18fc34b8babdad82a60ab3", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "ab4cb73f6a8b2bb0c7335f16efbade7d6fcf919e76ff653050fb0459673be3a3", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "03ba3970944ae27ae2fabb44b697a5164283c9b7bdcda4ee8c0f0de60df8cc39", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "e965d919ac10d6e3bd48993cf72eb353b369113d33baf86cdde6db0f8c1374e8", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "b121d934d4e7a94970908e850121a9c67409edd97942920a7c3cd48c206f77e7", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "111f4169937745a9cf01fa5469f002b807d5fb07b52f6fa85304a1d9411f54a5", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "811752bdd298ad757da61af4096dcaa7f01d6c5287725ec1334df13a0bc4812b", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "2efe3c696527b57d66621ef2ef92bf49406a5fa5958782a95ca56a45414e6d3c", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "ae6f1d550004101590ca5c5e5d0352cc4a291adce85400431f3681e02a4544ca", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4cc470dc4e233108d6d239d561bd89c36280b3434a8d8bfc478e21db317d3aae", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "f660f1e4003b2f798394100d0998860bb5b16aeb56f7fa9132da313651449e27", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a77af125676569096e11f43374d92c9d09e9dd4905d3cb9b2368ec3175341b11", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "212fa1b1129484d985e399b7a9c695283070279541ffb6fdd8b9d2f9eb6e9876", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e4cf73fa1de057b3c6f26ce221d2df2feda26461631579949995d7f3ee5341ac", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "34daddb0980d2e6e077130c3cb4f8df64b1f053a43084c98407779f671ec3807", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "8c40c7ad47e8d8651be2aae2c5e5d034303a59ee02a2e67de9f93a576fa2be6d", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "863e77ebc0dc215f5759d4baab788d954bea188da9c48df658136326b8da78ba", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a80a313bd904775904ebf7efa0bc4053687f1a9d42d04323f4a198fe04ea1ad8", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "75dc1898bb22418ce382706e454dfe135ec071197b9ace91032f8a6d27abf1a8", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "5511db50e30177b37fa1529f993f54062f087672c4bffb17f7620e1045dc23f9", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "d8146b33e412805dbc7babf9bd8dda1afa060e6e64f700b998dd81f0117e02bf", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "cd47343515173247414271395e688db7f59d6d16bf9384bf25f0c1bc2bb72438", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "6e31f2a710b25ae677b84454dfb0c12816c4e514b4a39ee3d45e17439ab83f9f", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "6e31f2a710b25ae677b84454dfb0c12816c4e514b4a39ee3d45e17439ab83f9f", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "8671612925256d7b43c0cac88f53fb1c9ae3867d0dcb046e90f5ca79f5067d72", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "78154477cd531d9780a72c813de228931e9d6d2ad6a4fdc791c45c1d692c36c6", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "7e7c13df153005d214f19299ae997fc29388158d5f85d4f97a21c66d79654880", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fa2c16444adc33bf48ac17dffa9f225e3ff92e7b5caa812a304ca7a2345ee910", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "104a2573a3fbba0126af537fee4da98523d0929e859bae6dbf1bad464e303113", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "00ac5e9b64d0f31d5b50c8f37ef41671ff7d76fe814318602ecbc3b429be1772", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "796617d377689bce979b1bf083034fb731ab8ad0390232f34c523856fd1eaca0", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "2d0bf7d228d2b29e678c354641c15237755790ebb4b1eb9228311844a106bbd1", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "597343e6c7468beffdceb1482853f3de1b8f9263c06779834bec2c940bdab8c5", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "5ece774512e51b9b8b6e2509c94444938daf28684d8e69b9ad749935cd1a5565", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "23e27708fdb477ad250484e5b73bfaa795a99e540bfaa9fd036549aa0d5a22af", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "154d09ac8a86b45af90cc0e82d37e4dbe90e2eee6a227bb0f398ea51c9a9cdbe", -"T2B1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "762389514333447c3f25a187bd9a3a7c0d257886950a76f0d23277a35c3258af", -"T2B1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "fe43c78862cb7af9f56c1856567f3f91cec8f01c9ad7b2c05cac66874eed55e3", -"T2B1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "d8ed600417c4cf1a116dff76ad7eb6d2b897495f89670ed392719ebf3272e102", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "c07009d0992e84d787d9daeb207a2cb907d855e39aba88d61efbfb5bdd031a50", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "734bb2ec8061f557ab62202552d8252d03504f1c4c47340d602151c4958b18e1", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "85ef93ea8819f7b4ef38d1168b0580ceb992807ccc8ffc20d3ff7fe41f0187de", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "32584b91207a7c1a40c3f514f3fcef0b5c1db5b7ddea132d8b9d15a03e5bb981", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "7b3e5072bf75e2e92198bc8699ec12bf439e45538c229f6ef8ac25be90439437", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "481fedbaa83a76effdbd7753abb388a4f8426f031886109600bfad6b418375d5", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "566c79dbf610d8011e819909c9011fbc3306de0c7da6cf0d5029091159abb130", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "17442c6db5498748756c7e42710b58b2198d6d67bfd460211a78632149aa9af5", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "172d8773719cfed27d63f4497980e2da5a60c897cc3747f525324a57805e7e10", -"T2B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fe3a9aed880dee348cd5aafa9791deff986153a95d3f58cb7062f81050e98df3", -"T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_grs.py::test_legacy": "4fa5b3f97b08a0e56b917ed92b30be67ba6b6fd9970fe1697309230a3a2f736a", -"T2B1_cs_bitcoin-test_grs.py::test_legacy_change": "5a381b8c951ba7fd2dc6074a62ffb445a389d3caeb0de8e389e3a2943da8e4de", -"T2B1_cs_bitcoin-test_grs.py::test_send_p2tr": "f3e04de3a8bd801d4e4001cbd079fa92437f3e8718a9302bd68eb10f6f86ddd0", -"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_native": "f75b6cd7c0f0a7c17caf852dd4cede262dcaa333fe73aed44c7da87a04fe6776", -"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "e403a1853ad951dd8da5936a5b515e284779d277c8e3bb640bced4cd5f845b78", -"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "1e7230d208662bc24107d924655164dafc8b93ec53400f3df5c3855207db1f7e", -"T2B1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "c50feb36eed00bb26ddadce6408ea0dbd3cb2cf4696b9efc3af314edec45e8c9", -"T2B1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "9c982836ff4e50f275b8440f07bb85febb867b21d83b2440a8c12e080d1c9866", -"T2B1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f76f0b3b9f59368a7f66b07ce2ece25ca833f57d408b446c006ef352ee73c9c1", -"T2B1_cs_bitcoin-test_multisig.py::test_15_of_15": "d7a33dca58ff78b2d5b949bb8aed4493766b3960587b41560b5e54aba22041a0", -"T2B1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "9ba8b7e8b757cecae8d45b29252470cb1b93a5f6b89063a2d8f4e476b81461f1", -"T2B1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e50acc704d7f8bacfddb9f8b086f2ea3fa990df7dbefe9b59454957789b875a4", -"T2B1_cs_bitcoin-test_multisig.py::test_attack_change_input": "df93202c28aafb26510333d14811a506ed80020273236920d0b20ea336cfcbc9", -"T2B1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_multisig_change.py::test_external_external": "5a10a94e93233e2d10abafd429896364602a4c7e78f8fcd33c506cbd11800fcf", -"T2B1_cs_bitcoin-test_multisig_change.py::test_external_internal": "8501ad0a8b5edac4b408532f36e743e88349bccd12199132b157aa2c16ac5520", -"T2B1_cs_bitcoin-test_multisig_change.py::test_internal_external": "fd703d741f3d0bd1388c6d6e2e7afd721ce0b00ab98384f7da384e8fbabd1bb3", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "3094107820be5a7e562b860a7b6507105aa8ce2556837816e3e452655f56a4dd", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "0aeab0506f7ac68e793c183902ba288e1df1da6883c11531ab8b3dad4ddd779f", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "9620dece0b0b1a18d9c89fe42e3f4f1709d061fde52e1190082ba65b8e08b034", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "3093ee11beffc996e8d6f58ea3e11629e45ce9f7f2f00a1fb14bc93057e89c7a", -"T2B1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "9882c519c46233bc22e939009d9f6f78a7fc9c7362c7c38ce385d49f213314a5", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3554e6f58551f63e271e3ce0bee56f09b5a52f96fbb9d35d2d116382ea245ea6", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "e3db8f9a3df030c72c8eff363fdcfe4d6313f6392533474933d36c0486723ecc", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f69ca9b77243e5d274c5cf0e3c5cb54f12e89e194d6d1b2e0f4ad1c9d9889689", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "b4c134c61c2b6b09e5244ddb93886f1dfd83b4ed6afad78c5e1595672e7e62d0", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "0d77fff3a02a1cb4231944db2b5412b130ebb972886e8016bad789b60a871e2e", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "5987ca160864845e5de561daab111e6ff4f9a1d27dfdabbd94346bd3052e8e61", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "55195c8dd47c16b9d70a8ef402d9177d9ee5354481f8a96977eba35abca94884", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "ae474705569a73d0b0856d992215b3a943c1803e03c12d7416601c57a03b6917", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d4c4983d1093cf49f5887e20ccbd10b1b1df48360c3b8dd4aed0f2cdfe178739", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "9ffe37e49f7744beab0de642a8cc38792725bb5848c6cb3ae0cd59188d83f3c1", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "ac88de11f34c2e57fe571d98086295d68d8b3b860312904e0aedc7bf89782de8", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "b8d9dfc711649d8a51714281bee4e1e74b48e8815d417af6ec50402dc36e4b74", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "84bbff9478fa89c11b52f1fddb7bb8bd8e639628b5f8bcc3790c76de752f8d4e", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "d64e6bc57c4f394ce45ee675e0f60a08a9bf6066eae0675416cf50e2af565abc", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a17ad8ae8269c577c61ab4e95b122859dc8bac707a826e57aebd45c31aa10ea9", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f97a60ed772ea00b6b4cf915e11ed53d6bf50d85f49356de35fbdfcc4cefc471", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "176a231a405706ce4293a095aa295237a2a100ba4e6f135334cd3c26ec3326e2", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "693d4686ea9e815fe4759516670825f7a668dcb927f2b5900f054d1c76bf861e", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "16fd66ed3231870e69aef37381374df52233d873c344b2d22f95a6a380e766f7", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "519b50e707d8e1cc967fc87fde3d9bd826fbed7d48f9c096a5cfcb463d3d9b82", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "94a60c6656d560a6aa07ff006fcfe9b7fdab060e99872d1ca2c716aaf74101b1", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "459523a308cea50e3e70f53497c82f4a02b438cfcac0902af69df3989f5ce567", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "40e60aefa567ed07354f6f3ac3bce533aa7c0f1339b2ffbc9b15ab66cfe56d71", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "292202e39884aecf19b4c25699049089e621eb3b04a2c6b1ab4dcfb58c3f9485", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "51640f42fa76af559ab972ffbef9febed38984b620c6584c23addd0a547867cb", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4a4a1eef7ce4b7280f91a9fea1342af95d9a5c805de4cd65b56473efc9da54d5", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7c6443bc08f37745273cb4e379ec2b918a15e9e9855d2ac2c75609414abc0e97", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6c93f24ee58e5c3e1746a118c413337c856d1951d6743b7eaf2449e6a41a6744", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "d08dc7c5d005d7b53777e448650c698d84514e25b0e891be2d4395d19c8ce5e5", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "f825724bc288694b0ad33e93c357d44c7a423965151252e6fc41acc8869e45e0", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "fce49b5f4d1b6f334f25bbdea70a279d8e010be0c70f50288107aa3c77793fa6", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "3b42bcc8dbef738afd3b8be9ae0b405e6c59d0181307978ca645cfdf4ed32ef7", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c64a164e33cbe7630615f55e69aa04893eff47e5b06c8152a31b25d096fce966", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "5caf9c08a20ba5677c42dfb3c7c049d4eec61a0f86318e9423bc9f98ddb5b0b5", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c77784ba12beb3fba0b2e7a6f8f39701c1cc191c00863ebc3a65bd2314cfa995", -"T2B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "dd9adbe2bd5d391f06753c8918046679cbe604e2c9c7cb3f26d063e8fc995964", -"T2B1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_op_return.py::test_opreturn": "072dcdb01000c37da7d7c3b6956d8c1d3ab89b56ff14eca118c5e7fe9fef88f3", -"T2B1_cs_bitcoin-test_op_return.py::test_opreturn_address": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "9ffbdfa73a564a8592b4d0d27c1b9efeabae35904f416ca1878007a5fde97b4d", -"T2B1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4c1e9617ef54f43665e4e692db2d98dce8bc59eb3da6c02ea4134a29d622e817", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "9e8577a427871308945674e929874583a784d790906e2822775ab750e59cecd2", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "9e8577a427871308945674e929874583a784d790906e2822775ab750e59cecd2", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "224480d32b1f17749e2cc44626a3fc0adcd895de35974e903664cbbfd5bdd70f", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "129e52e75c2a414ec550466fdf3d8c875ec9d2ecab5bb7e03336debc22fa2ec6", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "6284e614518b1f90155c6bc07b901782d24ca3c74ecb02ec3b870aab21878602", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "95533fcc54fa7463030f97eaa98dac1bbb38dbfc39415feaaf133c25ba6e2e7f", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "759c725b77139684f42a6ca4376e75edabfdbbb108c584deb0126485a73045f3", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "790ef14a903b948b14da05a1191787308b218f63929e21fcebdc702a74d7b9b1", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "790ef14a903b948b14da05a1191787308b218f63929e21fcebdc702a74d7b9b1", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "b972cbbbd05e4db5ff2cb49879d39168920b11b05d18f09d6b535341ec87411a", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "f3a978105b3a0e2d643b4d7b2f0b71c4f703d8a89b5f911de9b16fe91c2aa531", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "b5bef126226f69a2d93746983f92d1c93b3d72c5adf0a03b2c16e3c16f9bd0c4", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "b5bef126226f69a2d93746983f92d1c93b3d72c5adf0a03b2c16e3c16f9bd0c4", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "cf70dd1767736b3665c18c1854bf4d62cf26fc7a6ff3876b276606dd3daa56b2", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "7f7f20cc3dad44966fed1faf850ecedefda8ea27144e42c75dabb650deff0125", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "a5fd990c19849911f3b6ed598677b73d65be385d343a24a02f3641dcc349d30d", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a5fd990c19849911f3b6ed598677b73d65be385d343a24a02f3641dcc349d30d", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "eb02d5dd706a0b0f8049d203ce79ef08a46937a798304fc031a7a82f18c9f2bd", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "66641567b5523842444cb105bdfb223ed16436357f41c9f1cb997cbc6c5b6fc9", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "6a1ec357aaa93cd93ca660b000e0829db6cfc848127a0891250f8853726c09f6", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "d266a7c7fcecbf2d51a997e4462b0a5426ceaac0a286b0491a6c1c3395d4d057", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "6d437a046f12202ae80b9fc8ba7d6777efc6d9655e50d173d422f052e343f787", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "cf746367aec2048479850b89ca31683c994285dcc91016d272326c19fd840c59", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "2cea5fb373b2b75df2c41df5e6e361fc95df30dd5bbe72be2475515ca004c3d8", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e63a41dcd660b716f78daddc1cb99d83ddcdc43485f62dbc1dbfd3aeb83b5c2f", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "3e65aebc940b15f5702fab0011c53445b0798415155973521b61d26f83561c1c", -"T2B1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "1e18a81de3f8c992e1c8d997eb46bfba98b3a9204e53be092e70ca55117116ac", -"T2B1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "7ffff5af7b550c504964d8e2a1b53c4a5491a3125024a15fe1bc123c52067790", -"T2B1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "e91af534fe70e98e63b24052fdc0fc9c01b085d8ceb87f5de810633cacbb445d", -"T2B1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", -"T2B1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", -"T2B1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "7964e96cb80fc928af9f41f3e6557bdb15e1b53db01865f1b64dea9d019cbb22", -"T2B1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "4b1d8e34efeea733bdde45e3b8bfff3feee4b81dbadfc41d9406a505005d518e", -"T2B1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx.py::test_information": "bf125ffc822d9490bd34c08c380889f4c5c908fe61cc8615146ed1cf7bd4e2d0", -"T2B1_cs_bitcoin-test_signtx.py::test_information_cancel": "89b9146058f74931740d3f552f0a917f42e853bcb691cadab840fd8258bb0d18", -"T2B1_cs_bitcoin-test_signtx.py::test_information_mixed": "da6236cfa0afd4a1840ad02c16a7ccf4513cadbb9b1e4c38757870cc80fca007", -"T2B1_cs_bitcoin-test_signtx.py::test_information_replacement": "42479908865e1c5b2614897504cedce7d304f376ffd282dc467da523c0867149", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d6a75e04c760c4c152efdd51ce3966ad165d965ab19884e2e15424b11b69001b", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "124db25618a700f7ee18430800eb42a7a4b8f9e7483beff5fade0792d96b8726", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "616d02ea98d09b13cc5e22bc2747e48e485a64d22476a3f26da46cf98430dcee", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "3913314e52d52a65d30df7d758027034735c6a825cec367461ad68dbb28364ef", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "a7c37bc271580219f7c191aab0674e0762a550641d9f0eaa7e078b71871a569d", -"T2B1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d5c0e61c4bcce1765d79087e84c11e781ec295dd586d9d37746711c1412b99a6", -"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_change": "9146e8ea1e9acbd16608849bfeff1cb5a755124de5cdbfbe4a5f160d8a0a31ec", -"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "02948bee099010001320727585870eaf5c4d98b2d55204383cc610374a8934fb", -"T2B1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "a42a6c28b9fb1412b571e21c2c9dbf5d0bc013f11a5af856d32812bd4042e039", -"T2B1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "5b6acf8b07712f67c9ce239828285141b54b93efebd79769d20253e0e41ec7ca", -"T2B1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "909ed888bbe621a32827f5bab577762624d216ccfa7fe1d74e4b3303c4c64271", -"T2B1_cs_bitcoin-test_signtx.py::test_one_one_fee": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", -"T2B1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "0b99f7ed5fee70209ed187c291b11089d8a9b7168e7bddc5f8bcce0bb1e29aa2", -"T2B1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "83d944a442258be2a0687e21c47a7a57d17958ef05a3a790fde013bd8d1e51d4", -"T2B1_cs_bitcoin-test_signtx.py::test_one_two_fee": "6eb5492d827cbf9fd1fdf588cf2727bde8be0ee9abee5c6307604c954d93e476", -"T2B1_cs_bitcoin-test_signtx.py::test_p2sh": "abdc7d973ae84b57f671cff62629106b8ea08bab7b1e47eb7b9b7fcee9d43bce", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", -"T2B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", -"T2B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "4fbca0a9dddf0a2d8a8c66ad67024c5dc5c1d9ac25776f9b917360382526f0f9", -"T2B1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "ed8945ddafd022679b632551c04620f5d138160dd74ebefaed98c54a82424e3e", -"T2B1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "db58e0f14752bec728ca009b97af39c73410178fb0fce42fb5a79a06c1efdabd", -"T2B1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", -"T2B1_cs_bitcoin-test_signtx.py::test_two_changes": "2a0bfe211e57be92528ed46ecfc6bfd57a9d5875547aca3c285f073dc4cfc77b", -"T2B1_cs_bitcoin-test_signtx.py::test_two_two": "d2bdc5f7bc37b0e50bf47680d8ceb0db456bb5a2c2df0861d5c993b1d6ba8776", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4873023f73f1137e702613b43e7a202f05069bcd0fa1408e2468908753f74163", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "542f74046f41ed7ad49d4e6b2171180368b0c7883052428c6ad45082a7ebbf9f", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "90f9ea9b51ffb016394657c02cd4c45c59687df2caf8746971329d76233be584", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a4de79a37c82e58c510358234fa9f27d158123fed6bdbe796fc3c120d8453853", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "9c2a9e3b134bcea40f97703e95f294dac1c7a4ffaa33592ba393fa21892a9a37", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "98da775e8accf6cbac5952c52a2076ead05d99df9d5c30434ab7a1c309edf002", -"T2B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "589116665f82b0f65203280268126b7193a705a410ed32a32e4d32a618bd81da", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "066b01722ee7fd6dcf344fbc820271499b8ad47ac84755cafa2b56772c55a6d3", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "387421037010f31900988ee90efcdca0959757f4dec2c9b28bc951e3e5b8d624", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "a984482f63e7c217d36a2268f7796dd2c6a9a421ea3455e44f4d57c2c4515761", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "9fe1ae4d1cf43ebf50413a7d4813f9f99f71282fa3becc9f058d537df4fc2c42", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "3194eeb7a2fdf595220d4af6b38b29090624a96f0dbc78fa46ca9fd3216d8160", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "e636fcadda827ba6943dbfb0f8b4e81bfa532d413a54016d93d70f5207abd3bc", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "48c5cdb3a252c530e1d7baae689a2b194eab531a4b3c82e713c05f139e427c55", -"T2B1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "3de28a4db4fdf084e26c29dd618203d3a02629a5b9f97d8f52d48f824fd9d1eb", -"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "253a1df445bb171c634c82311f876ba37a27fe4c82f73dd740f7a14416a26803", -"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "18a1ef8e5075e77c2ad9f91f585603fb94fbd0bb6cbdc81718e22ada773d6351", -"T2B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "6850851bd9253d19f24c728570cb062dd3c326a175f79f0af3571bd7b5672b11", -"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "9e480a7e0ce03e5ccab45dd83e8061ae81605c203384c2a89fb9e765fbed6415", -"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4060d61e348e74b2e0c2a6832610461bada446af2157aa32cd7bdc9d5475ab72", -"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "9e480a7e0ce03e5ccab45dd83e8061ae81605c203384c2a89fb9e765fbed6415", -"T2B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "f9cbcca83a0470cf98ef846b12ffc51b8920907b532014482c2a193a642cea6c", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7e9240a8b35c8e7fadc6cef28e5ffe88df141830071a9b72bda606a1660f751f", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "816a58a63e88a2e4fb981c75af1a03274cbd02dbeff50f72ec91f877ba48570c", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5e8baf802b302c6e7f698b5579a44e0ce81704cabe0f3ee150ba1c63508e5368", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "df3dcb8a602b5d9bfb76973249601f570e170fa5870dba4ef09a05d1f7ca3797", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "96a00c0c1cc69e5e87c5dc581e8a551334def513ae8288bb34bb8fc7bd3e8082", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "284469aa6f2a9a3e97a0deb58e9f6a2c5d13f6030d2599f54f2bd70eca860e6a", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "ef486f62fc674b1a867191260f7da26a0b00c99f8ec9e4d2924ae48202b7f277", -"T2B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", -"T2B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "ff269397d9769d04956bc12d3bdbb7af80f13be6a55e3a5e08dd014a803b5f8f", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "fae7650e242aa33fdbe37a2b34d836e87502a31e4d3becc2c43f189a9125d546", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "8388984d66070c6c330fa084cdba4d7e9c027340b85e7ff4c6cca966747dd92c", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "8388984d66070c6c330fa084cdba4d7e9c027340b85e7ff4c6cca966747dd92c", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "5535eb199f83326b0c7026e509baf832cb25f6d3c8481fdb613299f43a013103", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "9a364e83ba512909925ba9438f10c2cbb9fda1c4e2a35f3917cf6e6e6918ea31", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "27e70830932c2eca153eeb35efe7517994174b82d6358327ca387e49902a6e1d", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "5535eb199f83326b0c7026e509baf832cb25f6d3c8481fdb613299f43a013103", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "cbc51be9627b3012a3358b3cd2c88f214a1512b204da2ebcd6937697d3a8df0c", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "37739bc1c44ef50cc573d2cf9a034d719d0522ca272bea2c86fe86a965d6973f", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", -"T2B1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "7b2284f3d8b60e09a14b5eda32f86d2f9d8ce4c12b83d787830d4ea91aebe361", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "ca88cfdaacf0c82b4f4df943fc482273819dd6b078d443cde4a18120916c4214", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b2e4b99df51a413e4bac3b433254ff9b045d3e2225d13abdff42c54d0c573ac6", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "bc2cc24541cd225a4f9bbee039395947874c6c5d31430d6c71066cf5b4b20614", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f0607a71b16b6cb2e3dda61be0d5ff5d771359962c70192f909ebecb24b37280", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "e062ca3ad7b78a76973dd705e1469823b6ffffde6ce8b7bf8e7e5e4b45a49c84", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "994694c07d0c8a0a80fb26fbd0298c495afd2cf265b5a0b503b225513ffc38e6", -"T2B1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "722446a2b816812aa2631bad02c927144a432d9e0906bb1c8aeeb7f72f8fe6fd", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "82e7a6632f79020fef15d3fb18cad60c1f0207957a8e026fb2624781fcdd9295", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "e59c5b0be35bc2f15303f21761c650bac2c5d287be5215d243f474ad935dcd82", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "2df26fe1aabcef123b11a4324f4c51514cf5024788c6b0ea01db5091ac5748fd", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "455b58f65370afde13ffa41775cd7ff9e606686831c4e4965f6a91132fd1c091", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6084e9fab28225a35390bd05173fad2cdfe433185e25a6b1e1db85f2207be5fc", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "8a6578ba83c33933707e4d8e1a8345e181dc71848d301730265d0fa92cd527bf", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "29d416748008c45c8f254f7d7e2774cdb690bea4b5a2ebcd177ab17db3c2cf3b", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "3f34b75108c90ef73d4d8b67f3216aef8bbff04cc30b7653e2bf33bd8ffa08cc", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "1bae892aad7de07d4ef982a5a7b8aaa30582d98c137950e4b23b945e7a807895", -"T2B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "cccdf162022b35ad09f75a612dbac40034f412be0874b9e152aea513ec805b8b", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "e76c5b225cd667ab556c619e5f4d9ce08c1b31bfcc6918be0f6293118e0e01d7", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "dff4bd40649d61cf46dbfaba002c17d648c4460eed44147a37ef7025375c991d", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "b31b3684486ac38a036a9e5ebc73187be1b36955507e3276a6021303370259a6", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "734b4329d810877751641525b1223601af96e8442ad78dbe1327563f33a57054", -"T2B1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2c7f6a6fc4a11b15716dfb96e47bb199cef0261ad50da817c3c5cf2196c2480b", -"T2B1_cs_bitcoin-test_verifymessage.py::test_message_grs": "4a497c9778ff4810a774fff938e970079d47e754f34058611450f2a1027e8281", -"T2B1_cs_bitcoin-test_verifymessage.py::test_message_long": "b6ddc32b3bd6e8caaa25db0d3277cdc34a6dd83e21168d2bfd735d686b7113b9", -"T2B1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "97bf56e0223d53d8de6a5bc245bf2ead661267173d3b03680184c3c4d7540d5e", -"T2B1_cs_bitcoin-test_verifymessage.py::test_message_verify": "f5f1a0e6506282cad4c6ef9918708ef7dc2b4632b757e373f779d7fbc3e78e82", -"T2B1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "abd119ac86413fe7d1ee18a1df8011ee6bc31607ede9bac58150347c39366724", -"T2B1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "97f8bf5607245bb8bdee5215f772aa6a8f7d71cf23bb3329803083bcf7c71b21", -"T2B1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "cc6e862f46632732b9e4daf4100c34859645ef58b4d86cbdba07e62b7f70a032", -"T2B1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "fc57a4254ab0f54ba27a3e829aaa2e72481bd4cfd23204f3e2628be8af67fab6", -"T2B1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "0b260bff738165f2443050501b21bb151fcff647b9a8242548b2e84e608e9459", -"T2B1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "713d83a2f1218fd189519c5190264bd418ca9c3b26263f5f849521e6126063dc", -"T2B1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "70a3165226e138626115aa5cdf0e79422f7b89e8fd44629d3cf88e48a276d94d", -"T2B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "99a2b9d858b1aafe93147163c0f29433385fc061a1b3d49088be39a7b0fbad47", -"T2B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d70bca3f6147c0b036d97686d72754320613e1c0e95a41ab36612ebc9327310d", -"T2B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "4e58fdfc8c3f8da09b2ca0cb3e6112862c3089ba34a642bf151f7553f06c67d5", -"T2B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "ab4e52e3c3ad508fd817ba92ce22a6bbe9494778d4d1e27b5f7aae02379f660b", -"T2B1_cs_bitcoin-test_zcash.py::test_external_presigned": "7768da68844736c7b938b0da0f64386ce9b0b42f865e353c6ab9378ccce2e7e2", -"T2B1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "4cbe4458f0706cd1df438b0d1be712e1aca5e9036cedebbc4ff5e8f0e818f034", -"T2B1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "37ec7de2bc995aa94b0673b3d2f0b1b36395190f5d6f31030b2099d2d5eb1bca", -"T2B1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "4d1acd5378f816bcf49eb369ced78e6495166c941a01dd6672d7d68b622211bc", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a00de161680e7eda77d86fc07a297e9d0dd0809bd1ac6cc96fb7965de0477be4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "dc6face6162f1201aba766971f30c281bd0622a8d697d5546511563214445c74", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "d3f7962173885725ccb18b26782408cddb325fb3b5606ee85281320d5fdbb539", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3af24f6278a06b0a5191c16ae4b805925dcea49218504ba29eb579367e107493", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "ace740f801c317ed8b8b637fcea8f4778e4e25bd3c9ec663d8d57af5987f7a24", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "0fabc6c5a486b02123c639607d3a5a9e6782569e5a4d9f90821695c5b13598d3", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6388aedc70d6dc9916681c57f1a714cd96f8d9fa6a7cee9d1c93d86f1e49af9", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "571374f06f51bad35e07ace2580f3c4a50f94a55594e5abacba83ba17457f393", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "a5512d704e151b6a79b7b20cca2edaf744779180d7e9aea38bdeecdcff8dca47", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "ae934a26cadb13f31f3c8a3b1ddc16454a2fd6d469f67bb11d87e7da6f8aefe0", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c3e4f3d773049621a6ea14819d83d842c4810d68ad22227148e12ce2c6bbd3f7", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "c6c704c9262392cde65f7f1329a709a6cb5548097a599c17c8c3da4d5ff8b972", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7d75e5cb34cfb1d4758433882b051019ba0d50debde3d03047cbee8cb5254370", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "43a694b731f7e6687b970ee8df61f35ffde9d3080c54a3f8e9b713f16e4806eb", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "229aa02deac632b2c9c77b19c4f944dba48f410b49e4a5f863a9aa297286207d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "1c3bdc90996b6c2371223eae8a832223177c4c1ba5738012469e8de58d47e86a", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "30514b8d1519533d5cb4572b0475ed835f93a460c0008da6d16b6b335b392d42", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "4c03de0cc756a784017a99ccd86f13ad56a1c0426b44f3094531550bfc708ed6", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "5b887064b8732c6923e2b4ceb45ab2720cd7eb6ddbf36434309e971963272b45", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "0b83e09710d637a41d6c3ea3ea68cf8cacc13ff8362c88f447f0dc7caee3c501", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "5acf62b8d783aedbfa0c94264bc7fe95c6e12f8b9d55000420187510ad90204d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "0a8453c2401a9d8f1082088c69c9859eb94744860c232cc80e0374bb2ea9b774", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "a99b9afad6bdb208f0a89f82ddee18bb5ae37c049731d974daa9e5714a897395", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d6ecee4500516fe91b97f8ee9ada50cb532aa665ecd80027c6c964e0c40fb0f8", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "c65c40047fc71cf044ca80a127058d1aace561f49c705343ac4152d77195a211", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "e4ec0de8395b3e398259ad47151b8c2cd2aa1acf01a345fde8c4abf78eb0e262", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "9c1fe3a9a2d44d1ce9a0b156be51ef66846be4fd7390c8a4540c2341f02c0130", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a1d2f9b2427946e98350821736d3cd49afa9d8cfc6bbaf632d8b77821451c1b4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "e6b9aff0e41da0f91b8b23dce4e511c1a74fe6bef21bd39d880d51ebf85c5fd0", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "39e82214845b8f628efb6e7ec4c634233d853d97cfe68e9384014b3b9dad5d6e", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "3621933e7f29f00a493a55d991c58b95d26b2628647b7e7ea71efa3005b3199b", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "a333baf4f494eb22488b7eb84ae39919dff4089c5ff1169533d2f6b7769608a0", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "47495c240370b515daedeb7a3cfbe361c062f31d2d6f361007c141644e16d821", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "52a69c45e65e55c5c5e9819777be230e472b08bb0dca4e2bc54eee26093edfec", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "fea28a98cc7e1359bfd04812b30c7091cff9c5fa050e285a8af82792e016437b", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "e8ac719998ee269aab4da221f65ee7bfe6f25b9cf9c38bbe0fb72c83cc2d4207", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "52aa58da3d58fd3513cf1ededaa2d871f5de0ac5d5ecd5d1c0ea2883008f62b8", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "1f5aa626c3958cce8b7c1427297c0482280746f61a8fb33f1bc1067b430052be", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "a3e451c835ba41a01d12ad1c1ef1973917dbdeeec5c491686f147bedf3cdcee1", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "856a0317ac158d6b8a888a62f3d1c53a7e80ab08b5cafa698426fdf7a66433eb", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c9f5decc9ff9f70fd92ec2e9d9e6f289a41e5942659e6563e084cc3301b363ff", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "94c334ed4c2c11eb8ae67ff7170df31dcda9e88a08147762d196bb4bd12c0def", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "74463c930615bd733b2dfad9d166ea0438399b5cb5d1c1b9969f0835de844883", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "e1bc982f39f6b432a803ba15211a082e264c85b3be5ffad483750726581c8b43", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "3b457e5820065398bcf1987e4e5a93e87a3dc701100b8d1e02ce17f3745bb960", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "61b3b82ae6f8b169064ffa94bd258f6d08fcc4415dd2500bc44ec3b1316af6d4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "84933b8742603f5e31430c442de2ecde79d36c5a6cf214518f4977e80de45aec", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "33b9d92b2d96a640b969076776da40d546c5feb7ba364b795d582d028be185f5", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6a3c95b4b73d8ecf0b7f55f901947d6643f550abf7d2332db4d6e6fe2ea060d3", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "5e0eb1d8f5fa5bbc22dd2ba3256988e539a6e1354a2a13372ffcdbf7ad097752", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "2042b06230b2d0bd4bae80fd18516474cfdb6cbfce602da14f3ce693bd73c59a", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "b814fb6c6258d7598e88ebd0b997e4f52644a04f1f7d386364bc48200947052a", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "500a53997f82772ca58803c50122776046bf1162d1b816e1af357dff714f1363", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "195c988e06673a8be848797d63014a3ad4170aa65c2a95fe76b216776454231a", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "42db6637b48afb0651add301df1d71b03b3c41c1f83fc615b6eabf128d321a7d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "c39f1f93575f96ce7078f2c7ce0f282c60c035a5214e9b544dee6bdf41d6ac62", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "028739fad461e0dcc104da8e74b1cce944195d4b6e1f281234171cf0fcb02b30", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "44aabfa3c0da70570b3af6868a65d518e00979b86f8f109b4e5dfa1ecbd30388", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "50d60ceaec2308584177f1ce2865a6297ef0029b66497150ae3b3ea8431ff703", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "3a180b562fb01ff3039ce6849e4f3250b1ccdc00296bff7f3bfc44c1e61ebcee", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "6da568572d6d34922cf9b2301f6e12057ec7f709ae135a1bdf39842e95680aae", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "1ebac0346de54a3873e92e5afab50cb1d52b6a797a47f471b970184028ae1bae", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "006ab8fe24d36f772c1cf1070c3218dcd4e6084a36b24543d9c93f2d9345d842", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "45a169074332d0f514da1f0ce7a69c2680c9460f33684e1d7c656493828dfb1d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ee397982b3d6a2f356139229f623a4c4fcc40600ebebfba918ab6ad683d2cbc4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a5e6def7afc1f95c7449a1a82ad8c67a89f59d766a36402a7b48e7ad70df6a1c", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "395f04e3d269dc633251591e52ea6e2cb137610139c765aeb608bb7184874c2d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "40f47b46c4db9359e9d45d7ecaca1f65f300b3ccea994abd90da149fbe159dc4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a731b9ef293b165f7104ea4e8f542bd782919bbb56740b64dd6ebe0e9d3bcf4d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "378a94b26950da6fffa24a9fb3393438399aa299d354c0a84ba8c7495e59a098", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6d31ac702ea33397b9f81f2e6ffeedc12741cdcbfeda731602efb969027a7b40", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "c619216fc67e492e28dfcc5e65c8fd1ef3d5ef3a042a144f3aa92b96618a45b4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d152853ef5883210aaa1124342871881b3955d18e4b835f00246cec1360abaa9", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "badb5e83bf523f4cc32fd3b82e573bfd8284cb43c84e1cc293fe5a2b8373ffc2", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a6253fd49486e6a48c12553894c75d07b4c7b95b7483bd76e84f06db22eaae71", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "73377c51e8c40c19f34d31697118fcc36d2c0dc208cc6dee11ff3cc16abce4fa", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "8d49694238b3af808f2be19c570e2bd3abbf994279c30c21bc8bbd9dd568dbf4", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "10f76ea34aee3fe045425c58817a2f5617beba0bd3da1e68821bbe04cb1cd877", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1a5300890369bf9e7522c16fa4f8c21f66bcc12e048e5b1689bf1dbcc75c6491", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a69f79abfe622808220953a58d8ca9821da814f8e0c23b81705e6a4cfaa45701", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e8137bb502883a0360be574b6410ccd53a4c1e6cb2de9aed18f2fb5734b72f4a", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "03143f8443aafd51db8cc765fd1d3d2fd02e3b51634ec8009f316fbd3e9e499a", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "86a0b73c3dbcc251c76fda5f98dad33c9f0e05828e7adfb34d1e5a6c49861485", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "6edb938b465c739daa2421118f976aecfbf11b380f2f52b39b10a929700c6c6d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "bd6f505457936e139ea796f162d39933873dc3423b20a352c8ce9f5688e50156", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8da4944c2e0f03c11cb802d9c2cf05176a7786a9d6d6ae840b56d4ba305355a6", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "556a89efc9c79968f881bd6908fc5e0b0c2d0215797456c6da0b98a36cf50c09", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "4e2ed5900672180e7130b16e9d14ef873ae5380152170b41495d92aeb700064a", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "61bb24a28056a5c6a1c8507e30e759eb4b97963a666ba9775d32b715883f9d32", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "9525d327a0f944fef8842884010ec1fd963c11cb5a2ca63e830734e4c2f8fcc7", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "70be71c3a4627ffca00ffc80a7b144cda15ca58a755156c8b38fda92a1ea2f6f", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "2dcd5dfe1e3010bd8fe6bd25f3eaed4d2d1d919b06ff26acf97e8fe72d9e752d", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "01de3548ad5680d34bbd1d5de3d0c9ceca28b50d06003b95f2ca53875a49bc5e", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "dc35cb62e501f18f3f4fe8cbbe9c9f7a093bfd86466791d5af5b39c2eb68d66b", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "698d1e855c9033808d6cdb529669b8d271ade54c13b705872989b53fbc5e0f5b", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c587feb46550d8870c0de9611638b05b1cf4bf5b1522065b7a9e2450f3baee89", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "4f1e5bb2d146f2797232c5a91b95964224c0a360bb67d8cf2a2a8680a9f17dc2", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "15f0277406dfec45910e6d463bd86a9fa0dd1a15d6a30146a3889e034068e838", -"T2B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "3b44c20c4f83774b61589d2d019358ebb5ff90edc968401dc348f9efa54fa5ce", -"T2B1_cs_cardano-test_derivations.py::test_bad_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_cardano-test_derivations.py::test_ledger_available_always": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "48614ade29d43a321832c72828a4b7f5ad8135b3dbdd9e1cbed948475f77a960", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "cc07efb4947b149a63b3abbcf6cefd9a99a2a6de445f9bb7a2077b6a7b61f635", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d71492bcba8caede3af5f6432f5a55f2ab0d9c317045027618cc58bd545db29c", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "0845ff6da4f59c54e2196b10d5051e363eb23c439e98a0286f92efb7d883bb08", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "9fdc11df1fdc279640f408b8a7724567c15da2225f968d0c5f2e570f68fe5d03", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "d08556f10ea0f5ef599dcf760e47ac14ea68af8bdacfc2bae4aeaaf40ccf2e5c", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "d556a82641b3ebda820980af18530031ebbb6ff1f93babfd40ae072af256f2f4", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "e673370efe3f9dc64631201e59c665f787009a64550867c1543f6046251d42ce", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "afee8f386ca679e3152d9de6998d9464a06a7a3756e2f475d296338bf4b5a906", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "c0bcded5cb1ee4a3c7ad7c063cec0bdf95bcc931ffe16c7d552494045d7780e8", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "5cee21708d542f88906697d7b36177a58b48b0e7e0234344328fd04b5807c2ed", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "23d5b2c9f0a4dc34502cdedc296c005085a27eba74f46570954045af96cddd6c", -"T2B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "32bbec0f7656d26734363df7b037abfd0986e3b726085c30d09fc7bacfb468bf", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "814be6fc1275882215049275f65d41b5205add189c3abbb7eef70a7a5bcae108", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "be2037dad31a09bb6267ab970edd0a745336297995905f48e3505ed8be1669e1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "8c8df348c2fa583dfbc7a199508f1b86ac47de4097206c78f8534b9aa12ab878", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "124e2b4001aab448e0dda087c2b65291d2ef75c1974f0ed5ebe7f2ed21dbfebd", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "dd655eeb058e1d0cb19292a534183c66c8f0a9768d3b7b8c82a31372cba1abdf", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "99fdcad64292363d221724a8ad9044f3ad50186b7de68009fd275236ee30ba5a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "58993ecd340f0060b36148d168c1c8ae68e817019f2cf8ef955221bac5bfaa37", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c870f29b382033121705b20d6dbd2d9aa74615ff125acf1c7bef95c7d88d0115", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "bc3440736f31df066ce217626a9c11af00f0ee8b3a2e9aed8571d598ea5baced", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "00c48370a66d94a854808c15d73c66b026acf10794538ea73284261c179a01ac", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "1713fc3f35208c51224e37c4a8fe2f31b42500abed2ff4a767a7608c0fcbdc42", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "84ed8cb06e7db1702deca60fdb9050f48daccb8f77ba1a113008e72282b70125", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "84ed8cb06e7db1702deca60fdb9050f48daccb8f77ba1a113008e72282b70125", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "f9cbe2f06dcf161d2bf2d864dbc6ca046b9c78e1a2a3a9c30a6006bc73edef09", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "11b62a9de0b162373d67b498bb881625a47633fd2af6e9f22a4ac06042a0a0d2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f677be583facd1e34379532dfe39e9809634c811d01cfe306dd3082852a8497f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c6750b0b28a5191b32ad6f682b43026c4fca49b22f15ce7a7e1c332e08e7d921", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "b788252e632e286f1e0eb9f25f440bdad7bff822b5fe7eb2c2a0acf257cdd0d4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "d78b94ed08744ce63e4a9f117b7847713ec174b0acfa7866f935e4ac432817db", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "145cb271549259a3fdcff01f7ec4318a1d02290d6762c00668629a8b0a4ecf51", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "82080c3f901043e88429c129576f503e612e0aea0b191c43dea42aafa65ef43b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "b788252e632e286f1e0eb9f25f440bdad7bff822b5fe7eb2c2a0acf257cdd0d4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "b958b6c5a233fcfa2a04693351aba5b5a643a2e5a9f8be15fd7cdfec73f89c33", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "15ec44a6b327f6d36e39417526017e5d64b93946f161c125be57cce6d3dcdead", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "cbba55975ad9a7e7b3b0d2e3d582bb28d5df3aee92d8c5fec1ffcd0ef9941339", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "76d5790496f4b2dc7d5283445447a056587532345d6fb658148512a08aeabbc2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "3c3cf960e2aca8536d31c3cd45fa42783bea09d4946793124fc1fcf780e40301", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "a0390a272ab11bf8241b43c19074769a7cfc6c41bd10b0cbd3f593a99556646c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "224fc8414f4760eb59da49a5647e75d2d5e174a6cecac1f075d02c8ad42122b8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "bc98ba363b53d130e648b8060d5d2bc173e0cd49e559e3b3ce515898d5af69e9", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "27fb99a0ad9f4a379875d2b334a284d041283989604dc214d9a1782e0a4b10bc", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "211ecac73ac2ce69a50534e17630620a39871a8cd99016232b955d3792f79462", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "f37b8265a2e7a75bfb09a03ae41ad2a8c4b2c296e6098d3e09a8109151b208d8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "fc206f1788340d163aebd7938cbad28d59c7db641dfebe055e45f4645e2fd007", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2d73a42a1d51f1e37a47c9d00b068b6b1391f0d984ccd74243c2cf2493f424da", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab1eb75c7c3cc748301e3bbd7969f324f770ed711246eb974a3d23d15de8726", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "30bf85a73810868f5c97ed5ed277c67e94cf720de03cb6e596fedfce4cf24195", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "12e8ad78ae39bd192e43403aa835988c248cb37ef2d80ccc0b132cb2a8b04395", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "22ced1e261e563427d6f447bf4d0e58783fe6133d6d0a5ef7626f3c5944027c5", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "df8c258eb7dae8851a588d99c67ec72739560b2f89a254ef02ef50c59c7827d9", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a1b370b3e33592fecd93bc7d997dc428f343bfa256d9474bbd6546a55f5e2593", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "27d8b898bedf722f46bc802e45e3632347969588862d91976223b5ee7ac5d34f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "955dc242e93db3e95246016279fff706abb4675a37f1a0213f1765028f52ced2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "686eb7fbf0a4f28006c92b3057b62b8eb9de68b410ced91c6e7628bf4a125750", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8f6fe813d33f511f95833f2f9c6c3fd8b54e5564324db59ed2e459131b61d5ba", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6fb7d90bd064291bf03a8bc3321f1d9af7d3cf6cdea2f4c7995c3e187772fa46", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "ce285291c4fe4bc85b21e0ec897ce906ef334c59d4ecf10a39027696bf145ffe", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "0dd1a5ab171ec590f2c9b8212ae25c14b7c874f86bbe229d3429e4ac57c4775a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "fd1fd070eeb933a691e4fdb734fc5524ca78dc53c730a78d9c3fc29d99600f32", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "322431a19d7ae10b608051f4353100e6a98ca3dce11c063e99e0331e8bc8e824", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0bf62d60cfba212bf3d4169a828c862a07d34c2ceb0e0da5d8ee8d84ba6dd8b6", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e25d7d71648d638c1c311e92c3da446d125492248dce5f45da83c8e88bbc4652", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "cf4819c0bf37509b64c587e6e69d938ceaf717c01f7b1384461bfd7c8a81be5c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "1c6f0967dae46487234a54a139e8be1685d12eab471afa16f6134c61a8dd4fbf", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "00e920a0adf7507576ccf1cf946da0e45f1ccc06e329bd0fc98c5fade1938ec1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1f128db52b7463d7d2b0db5eeb98c703ce70b297256d9fe5d403ad883f8c7912", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "d026fd1e2c8ca9c80492a55764d9296e7689e47c6ad6ffb474669b54ab40bb3d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7351417f44da89666c19b7ef8e6781c78b131a69c72292fd7ce289045f8e2ee9", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "f06053998dabb6b56d371b0dcfc72bd0ff2860bb5b4b9188ace88b66f6a386e4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "f5cf02092762cace7339182b4e1c8348b30afa2a3f598fb03004e0e1e1c7cf4b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "ceb1e2bcc35650084e46dee05b9777442e23cdbadcc0dbb2b59ce4cb24195727", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c0bb7886007e30fbf2285f550a6db60276e8c2d8daa6ff64b5476c1db24e92c4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ed02281e38cf7946af72fec2acf95358bdb48335823268e6b150fb79d1707239", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "cdb5fc9d1fdad77cc7cddb939cd456f68ea9a852d1aa0644fec414fb93004893", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "477caf4eb070fffc0740a578b55ae756909c0ca947abdca6934366661474517a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "edcd19b971a6dd738fa844318dfbd7e522da0c17f687eb8f85307a688f09cd45", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "19d6e0961446efe014b0842cff44cdcd65c289eef425254b73fa152c467c6eed", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3f92e2805da77ff85093fdeb037f0beb8edfbc5f57b280f849aa61070bfba874", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "32a1cf701c8c7f17deaf52e575fca1509b07e3579c81c714a173f7bffe3f4ee4", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "3fc9ff7a259b18fba6e6314b03ac4c291a2c010979b87c83a46bec0fdd33ad15", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "da54d529e08559a3c21b5ed2292994daefd64cfb36b30bc332a43cb453a91452", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "fb8bdacbfe3dd97bc7cedadd985f6b50148543d99d75acc6b979f4b6819c4170", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "3fd92bf5f7db193a3d5257baf09c36106534c20d54d50480f89dcf6f4ca880b2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5a19145c8f7f7d1dbdc34bcbaf6951b38f1949fced93af853e7370cd2487089f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5a19145c8f7f7d1dbdc34bcbaf6951b38f1949fced93af853e7370cd2487089f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "968c85fc0bd3628bf4f28a07c7ba57f94efdb6d578df28ab6f9249c5974d525e", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "530f2962f1b30c96b1748a78b35d07239b3c99c701efbc11bd3fea94621c2c5f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "578c5ea24271de38b734fb5e68e6233f9ccc9c658b87bf6701fe3ed86209cc0d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "78509dd5a1194be1c3ffd3ba12c103025fb794e951baf80c08737354f3a5e48b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "fe918bcf02427364a43ff3e0d4be11419ac433509abdd5e31810a32b70d7e408", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "950153b041776bb32a7e49afe35985e501fd7952fd701d43d90adf7bec855656", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3a0373b3d0a3de2973dc8eef0feacf23bcc17752174a27cb14325f785845b95a", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "dcdab1f7ebd3985ffbc13132f9e791bf20ec2fa88a5d12441a85240d15c40962", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "f84db7101212a927cc700e24c2d2b0a71db5f80679f465c0293af8a18b00f130", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "3e43bd4e5b39c7fb8bd592ac06dc6057c0457ea6ed244a2e1009ba7e85e1a27d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "814be6fc1275882215049275f65d41b5205add189c3abbb7eef70a7a5bcae108", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "58993ecd340f0060b36148d168c1c8ae68e817019f2cf8ef955221bac5bfaa37", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "ac098ce52f717f2a7b8a8c2073a7443851a01f0289784f274394ed6ce98d66a0", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "acce4e5d7eaac353bdfd30cacdd5a32759ca0fc48638bd9e6fe88d1d740a648b", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cfd1bb6ed828b68ae6842b623935cc290cf95e6bdb0ee09838597a5f3b23146f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "4c730bed2201c1844e0f5134041230cab6743011df59118512b2d5fcb44e6f90", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "bc46ecdc57b4a8e547d111ba18a5eba600fa53e04fa4cdec54f328ad9a35cfb7", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "6b48b7fcb481f4d6a025197fb8e112b2f2491621dd7f9c47568d7033e5f11d49", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "516f6bf357fb515391abc4aaaa652db2850e3d9bf12acbf593589ed9a8cec316", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "bc46ecdc57b4a8e547d111ba18a5eba600fa53e04fa4cdec54f328ad9a35cfb7", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "02b6c671768f92c511f9d924e87fc2cb80caf8f32d672db44aff8735d31deab0", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "bbc5d386f0ec9eb9a18a8612f20c73639b51329ad0eef0023f142597e895e01f", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "dc9043956a32cf1b141f3c85be985b9518c3f82591f2fa63e3d55c9a7ce32815", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "a1d2e6e582b2041a9e886652e1d435f97e5476b0a53a28ef27517ebb320896c3", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "9b0a8ec675dd67bf545ef12abf1fbde55dfdc577ad2f3764cc8f042f0025a878", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "bcbeb1a5f0b009c5b336906931216ee44e32135b7a29cf893855608fa5784280", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "625c917c328cf70fc8669adc8f8654db7d1da36e3a89a82a0a7441e540f3e0e8", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "d1c9784695c859a03871ba45161ba95ccbbc22a8a4e51d0accdc45ed3e370d98", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "1497779a282d9c3c4ca8bebd6cf6c0212889d7f6abe2b5b0b628f146541693bd", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "04bc7ad64d6eb0acebb787ea8dd04894a90e0b87221feb1bb7c60692e3941667", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1c6634811d177e8f37fa766828dc401364c490763a6727c63c223fefbf7b0503", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "0ff2ea19940f5066258c781814ead30c1fb6257b7eeda92e9b66034789b5bae5", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "01be3556d21ee46ceacda3ccb394f2fd3fc8b8700ceba35716e690f67d13a94d", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fa93004fe8ffd7a2a0d5a4df8a8ff0f07dabb732e9bf8faa4fa3cc6b3486f475", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6d495e433dadb35968f3d6ea95dd5ef7bb2ff4e1fb5b775c0803aaff650c17ea", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4b2ae61575d0f153779d490a0416b9d0f77e5cc056b67377c679b6e8d1e4c135", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "1d4ac3bb9797f47c118c3106f6e1b219bc727930cb3b305b27b57941ef5e2bf1", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "1c1f01b2f945580c4a3de9569e34b8411d812f8a17e0a659182863d5ef9965fc", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "088dfa4015188a9915e5d688bb344edfde98fc7306c84bc62491cedbc459b0f6", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "d7d74ca27e3013d0ade665f1f899022b69d1c6710d888de6942256a27725b3f9", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "c9f15064fb08c809b318ebfa3bd56918942694f8f0eaf77344da7010fd3a74a9", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "35c883e4291d70ff5641f96e280ec503e1d18f7fc629a4f5af56731d324d6a3c", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "102e900340fea35a43c9352ed784cb279b54eeb7a6de3e5e1e0afbe315ab6756", -"T2B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "e6169ba9c54e9a05443a9ae953795c5bd4d35915c55aef311ede9d7b405093a8", -"T2B1_cs_ethereum-test_definitions.py::test_builtin": "3a7ec3506208a4ccc5a84a336a3b3e5b06f7ce3f9a7e36de6c05cf3599e83739", -"T2B1_cs_ethereum-test_definitions.py::test_builtin_token": "f7ca2782e9f99a86ca6fcbae0751adc5a99ddda27554a4661521711c864fff1a", -"T2B1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "96c71169792ab82d98a5dbcfa46a4654acebcd640ceaf5d6c9df056d4b362232", -"T2B1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aaea18a317bac5eff0c8a3610830ed833ce14ffdf39d71a66a8cfb7fdab73f18", -"T2B1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "b78ffc60df92b39efa76a98c7cf431f46f8e4ff72b0e5f5edaf02237d789a08a", -"T2B1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "e6cd59d888de715267dfc9f8185c49f5785a362fa21129540ba4f8b4b5dc277f", -"T2B1_cs_ethereum-test_definitions.py::test_external_token": "28f91fee40d9ecbd9e5b746ac9f17ad74cabf8f28d62649edba1cd584d3173c9", -"T2B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "8198df7be54a494d3e101ef512a9b9732958a7475c5775826e7af68e03d4939c", -"T2B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "53e08d57c0ecbf652932c78d0e838f08ca1285cadeff34043dda2bd4f69444c4", -"T2B1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "2a8cc2de174b96ddbd3c92672db96ed9ecd889adfb51321cc42a72491082e28d", -"T2B1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "18db98eae718f1fd15c3a7b6a1376ae2b5f02c7062ec2cb8215eb6aa7108ac6f", -"T2B1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions.py::test_slip44_external": "2cfe6a12843602f13141ad99fc37460bc3e02e9517ad02ef9c835308a737d6b3", -"T2B1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_bad_type": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_outdated": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_short_message": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "642c50a256eec34e76516ee1e933c98948056c65e67ad506f2614d624a560aaa", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "71a72752cdb60e37b689c877a05e24205893d30283523e940df0e623411c19d3", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "3f7dcbfb63fb617805ca30af487289010b970797c05a1e3af2d047e34d16ea8b", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "b25fe387a891623fb5a44d46c03a3f559ecda7339e40650bb7e8ffcbf426178e", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d2b660ac5957012c64415ae7c756f53bee533dc1b52f3e1f1bb147a8b1e1c680", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "1a8f477b7432ddbce91d1520522ac5d7c931c584a8708aa12225cfe579608a21", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "52efb8eea890ac4c3a1be9cb9f1f69fd0faf05da342f710a3ed38766c5614f6a", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7172058b818be5b672de93875c340ce02a4c8b62af35eaf4fa1b8cc6aa3f6ac4", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "a60e9838f95c17f92f6a39e17741a8de8b7c3df4b256b4590ffbacc9787bd4da", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e250a6403b941e53f8114cb74eba0158960605ab5b436f37b470d817fdf1d26d", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "27403410978a6a39607d4303be8c56bc41407a344adfaf03e694e4c2e634e87c", -"T2B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "dc8d9c2f125341ea8b770fbe9d4fe1a214b6c666f8845e92015d073b026afe54", -"T2B1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "529f49f205e1b3f0022a8db86ee0c1d1ab58114b9d0bdc8db5e0db69c77f7f55", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "02da0b692aef0e03dbf456fc2358275213485400c30617e71860efd59213b8cd", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "27b67d4c4769a67b64fbb89a350c83e6dabe214d1181228cf5c722ac55f63098", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "82cfed3e6d027621042263caada8e79e451565ef0b2f196a1136300a3bed957d", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "03c3daed16bb73c2c7f23ce589bd660d474a79cd61b84835d0f0f4b657a2c7cd", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a262d2a97ae7e0aa03c3a25851cde50253e2403a567312d7664e5b4d6f93cfce", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "27b67d4c4769a67b64fbb89a350c83e6dabe214d1181228cf5c722ac55f63098", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "27b67d4c4769a67b64fbb89a350c83e6dabe214d1181228cf5c722ac55f63098", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "27b67d4c4769a67b64fbb89a350c83e6dabe214d1181228cf5c722ac55f63098", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "f16ff02a52a73e4037294361b285d1f1f21c562ecb2f0423ffd766e150bac4d0", -"T2B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "c5ff15d4724d00429d5e5f2829253c7844bb74579d581005b6cc6d2cedc9cb32", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "f185cf0c047e67808ff5ec052c58b52415c98fd77bfda30568100b8093b27792", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "4241277dfa4c34aefd14261cce9a4c7f5e37cc69aecaec369c136ebda1a552ee", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "2ce072677c3ed85ae152ee1f3b9439bc4cb93df5962ee29e6da94df586bafa41", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5ed1a11e1f3208ff27b3465757643807d6f8dc5b318c559fca336427196d31d7", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "dda41659eac5295b817faaa354a14760d588dd55845a754c1a143fec084c3131", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "08b62ceec69d4984fb8c15949cdb4de4d0623225a994f9233c1841d60b92eb25", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "ac97a39b1476be39e59fd644b0851819d7dc75ca21041db0a75bba88d3cff3d3", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "115accc5151e46d066c2fdc82de40864b5e27bb873efeef247f69d3b150f8f95", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ca64630fe7d90e16fc224c9d0b5902c62afe9be58ae563fbe477cfff174638a3", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "c4bfcd1908331d857a89e1206fd74ae093e349830cf592a287e406bae2a71f4d", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "3515d516c69b0ce6ce5c85af73e4f2dd60a5e6347b41dd6d119cc5cef42658f1", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "5bf43adc334e1bb0438c47ef96db7f82520093ab13f429f040599a6199f97835", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "cf89e800bb8dccd82547e3673645664fbc2116cc3709dddef10d10096b969fb7", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "7fb0dfa942957a6e6f3dbf7485c3b055cbf6d5ebfb7a43b32fb8b33c6c77ae56", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "5c16f228b4438995e15be12d3795a9da6928941be2ec95205ed919aa0bad3ce6", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "05b925efa210073cf41f6ad1e0d857235db5cc903d93d62870e8634699c2e949", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "65bddf4190edbfecbefccbc884faa1c21da472c46bb950ad5c4291464d568cb5", -"T2B1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "c4bfcd1908331d857a89e1206fd74ae093e349830cf592a287e406bae2a71f4d", -"T2B1_cs_ethereum-test_signtx.py::test_data_streaming": "bffb80b4a37ac8970377f8bf33ae4512990cf89ff4182dc856daa2e54f6161d0", -"T2B1_cs_ethereum-test_signtx.py::test_sanity_checks": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "f68f65f24744cdad2fe61fe07db261d120d09e3c08c080fa1d8dfc35e33f9a55", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7a19dec8ca3e0d7b63b4d89e25f87cb7c0759ba57929a53523829ac5f7908fe3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c29bc9316322d5955f5399d136667ed0c6073ae05492e8875692c75e2fa9fa92", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7a19dec8ca3e0d7b63b4d89e25f87cb7c0759ba57929a53523829ac5f7908fe3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "7d735b66b9b733594b277339bbe09be1bac72a45ef57e15f1e57b123a8401fd8", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "bcb0def3b00826be42839eae9353752b074460e4ea7ccd1f5edb04d1131b0542", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "d1f325ca2e584c05e8661536be838dc84939d32e65c0c08f155ab187a0e327eb", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "da8d8cd60509a3a2c4227a020721e5ffb962e8a869055fa7b24830e4339ffecc", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d38dc3e25408285b797a8365f14fccb7f79f28f742bb18e6d373c78e40116e82", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "f8c1356273c4f3b4bd5be87bbf74935aacc2c4de5cc62ce35c79834b7de8c301", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "a884c9e86ae496f2ff89262c3fabf24113f8ed759bc2d5f4db538cef1388e390", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "71f542d52a7e8273e7f5db77ad5ec09db594823519a155f1aa14231031066533", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "1f35d44082179825cbc9d020563ee3ab4f162950a4e282e57dbad976655f7fbe", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "41f7c0d1aa1315b2f76e4bd21cfdbefdba5ca638151e56d14c2fb011fc743b0e", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1f35d44082179825cbc9d020563ee3ab4f162950a4e282e57dbad976655f7fbe", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "60f3db675f134312d0185ee768f8019ccbc34c894368d109d7f5bbed200aafae", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "323e048b93a07a91277b5b6fa9d642c8eb5efbb4d3427d9bce0f0d7e4fa3a05e", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "9d37e9878d384d77aaa0bc345cc60cb0045ab0161fde22f20ed2355e9c1d69f8", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "da8d8cd60509a3a2c4227a020721e5ffb962e8a869055fa7b24830e4339ffecc", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "53e64f6a4d3a2e0b15899d6bfaa857e448c24ca71c33a62a04dad8006af89c5a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "131c2baa663dc4089aee8c85b71ab85153ce9172aa70fea78dfb5ee4f14d1dea", -"T2B1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "75d90fc0cfc18b2cd25162d00b946a48be611664b87501e104daf72a9619e7a3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "10bc01af49681731143dec47687cc8426e4d684b83151de5072a1bdc34eafd25", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c0a7353f39afb0bc45e040bfe85ffadd1f59179c1fa183beef657b105ad6fcd4", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "b5b7cf0fb6853a835e716b7a5e7c9a8b64fa9c926c4897836c663cc34dbce64c", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "cf1bc9cb6679479908769b5a73460fb208c3c38fb1bc834318d08d6e62b5ed35", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7203207d398285a05e5fb86cbfe8cc369c6171b24ff9c78faf7328c7fa2e7b62", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2ae1cb6297e0a25352f230ec237654e8599b764aceb2be61324030c685c5bb97", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "aa7313cc60983bc75e518d6a00e893f48e1131f795620568e02e405fffeb96ca", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e1bd2aec3996ab65fa4d11e4439d1e7eb5702b5baa5ae50708cc65879a686bc3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "6ea757e19ebc1103655170dacfc13854873eaa7fd4065cde587da3abd5a0546a", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "cf1bc9cb6679479908769b5a73460fb208c3c38fb1bc834318d08d6e62b5ed35", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "89844b3c22dd00b61928f0fe4f07d71e2977830a95fe576a35866ae09127b05e", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "d07e3720584745adb2f784c15725b29393e7238c95660318f00a946abdab8fbb", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "eb21e6b9728934efe2c2f9de96e29788d9cebb4d559067c22e4072fa1cef54a8", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "9a59afbaf4c7fdb908edb362089043295b1f58d26a571599ed4ed2db0b2a99e3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1ad6a996cd8d7069b28cb61771efbbe26634ab38439300e110f2c1d744735d61", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "daa1202981db31c00a091736bf7de6a5a4e3947bffe3127c242f401819fb296c", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "89844b3c22dd00b61928f0fe4f07d71e2977830a95fe576a35866ae09127b05e", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "7095cfc2848969821dac2934bf52231039f46caebcbf5b9a69c3044ad7390dcd", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "7095cfc2848969821dac2934bf52231039f46caebcbf5b9a69c3044ad7390dcd", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "b5dd318de60f5945f3fbc4e900530dd4899a72361323b1cbf57209e42fe66f63", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "181aaa3b397527f11866489ce05c9d084fac600ad7e53fe02a3552e57436505b", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4ba4c7fe165c4d02e910e7529bc4ca61de71a04370a9b545ff3b8a6f1a61a622", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "266b17669864cdbd75e89d6500bd316553660561512ef46fd95ced55fcb30eb4", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "d4a077f2622c7b209d9fb6ed0d06ac02ca7275c3906a0a8ffc5f5d72cf8eb380", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "d71b58334be06578438d0de2edd39543d15e9f4260b1bb0008f74f9b44694ffc", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "ad261c896f1156bb8539b331369feb371177940772b7e15ac4b521f49577be34", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "40ea5e051259d69d3e5f99711b91db3d6b5b16d9c5e5426f72012293214363c3", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "e0e13de243fa9647a3ab9702adb01c1e4b96fa39246da00d6c22e3348b00c6f5", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e13889b6af7d12b08bc40cb7bdc101066a8c32bd0cfbd94d9ad69d7381991fe9", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "5174923e32973121e0229c44cd2aaa1a5ae3c1a3daafa68cae325297bb55e220", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4b2489245e628d5e6aa5c185b5dfc97541413c7f7c2bc9e2ecbd4c5d9d0cb979", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8392d302a6d412125b6c5c68367c9e312ee1ddaea2508a039848584c8c9515c4", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "4a1a76cd8782166bbf421152f55bac6c141ba8b6a991e244a0c70c03791189a1", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "e14dc398b92277a93a19e2541f994c72022bc1e634346c7bd27d921f8271dec7", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "e14dc398b92277a93a19e2541f994c72022bc1e634346c7bd27d921f8271dec7", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "69d92b51b7dcfb3f983d31daf33fa98630a3882bbf3229b5eb9a940dcfc16e40", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "69d92b51b7dcfb3f983d31daf33fa98630a3882bbf3229b5eb9a940dcfc16e40", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", -"T2B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", -"T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "07025404857730711a32d685fe43f7917d462dcfbad445ff8e6835d81f4eb7db", -"T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "9efdfe86a04909c34a78c6a4596fe91af78b1ca98b2d35ff529df31aa31cbfe5", -"T2B1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "4f06c7256e004b48042f29bdabb45a09ec6a814c96a5006f3a0e80fe6e20a2cf", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T2B1_cs_misc-test_msg_signidentity.py::test_sign": "dea51e62bd3d2da816a025922bf2a0d54d54e65edca7f96ab302267a4194d210", -"T2B1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "40279469a04944d3c97d96e90928be6d8016767bc9c91c7fb235d090649772ba", -"T2B1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "646b6279147210c9d472bef315adbb42474a38be0b3f86960222f599c7d4b63a", -"T2B1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "a7b6ee29899bad671527846f1b1befcc2437e53236bbc6a73ed7a11264fa24b7", -"T2B1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1f77ccfdec43bdf6b0d6af46976c52ef3aab8784f956480261d267dea0e3a03e", -"T2B1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "9a2fde70987b1c7bf331c6271f050639c8b8c281c1c2cecb4ebb94b4c9f23add", -"T2B1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "752241144d1bd89169d8f16a71ff107a20d1443dfaa2d8eef08004066b040d60", -"T2B1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "6e378e70b28cfe034b8575d44b05184b2e00d88f46556304d895cc31a127a711", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2381a75219196da5c6c71da8aef12fd68a7f110ba044aae1ae35ceef3caec33f", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b8897b0c63b9ae25f40b58957dca7a83b838812d7c885afa51a8792c94e4777e", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "8672922b3e7ba801a5e583f353804c990d4cdacfa2ba01ae0df5f6ba62805c84", -"T2B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e2c49875a7118e15979f0f7eac813c22c14b44553abd9c1f01f3de94ce750752", -"T2B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "74611857a640921cbb05741a852f573dd4e0353754328e8e376e93d660fbac90", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b52e7a0a8af4788f135c177f73ff767c8abc517862372696f110fac26c0edac6", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0a89c9861dc4c11dfd0e79cb92126333ea98c97af53ab36d5f8e6538c05d3246", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9c15e612b5cb9ead49d532e46b071d336081695936bafae9a3f641abe0d6c4f9", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dbe0157eabd191b9cb6dbc0d641f1125f98438fe2b172e7c6927b0d0cb355988", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1605dd01345ef3e62bb20827383f3274e98cae0e50b8b1594027f6250f6af588", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fb4c99d04ec350261c7fed1d940f24dcecc5e2ab7cd641810cc35406880a5fe1", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6915b7b67c0eb13858ad731dc14ffca41e7af843b71253300589b82ad7997293", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "fb4c99d04ec350261c7fed1d940f24dcecc5e2ab7cd641810cc35406880a5fe1", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6915b7b67c0eb13858ad731dc14ffca41e7af843b71253300589b82ad7997293", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "62fdd5f078f34b963cae3acda6b724d977a0de5aa3983449b8380431fd7f879c", -"T2B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c3ab79ad41399637b6a82872952f840d656752b82fa1863080e5ef6df90c47b7", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "dc0dfe0e394b5afe43b7fea94856e7dc324e687d0901a4cd229b652f45521d4b", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b52e7a0a8af4788f135c177f73ff767c8abc517862372696f110fac26c0edac6", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "7bcf2d382e165d0a9aa2683db1b6106851d572c590fcd7b022e5db99db937433", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f9619044cb62669198a6f2843be1b94fb0be88f025dc0443590bb86fc4121d38", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "99245bbe920df25798b36262b33292c70d35f912c8186417611babe8940d87d5", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fa9c4b9d32656420392dedf6701881aee8745af80478dc412767d220ca563e12", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c5bec2198c420dd3d77c6e7278f190c0931edf50ed64ddb55c3bd6ffcc8a89ba", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b71bbf49a6a58ca45cd798384a7bca4ea12591d2d0d116568304d037f514065d", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8cbe146bf43da75c2fe737f0dcf838aabda71def5cb497ab63f0a7bd7c8f619e", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fcaf55e99c14572b38ff55431d0d15c509e326bdb5589413ba85c0fde0c701b0", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9a27aa5ed1d0e48c2e959ba2e2457a7f39a7568614d19b760d4c320f93bbcf89", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "47238908e206e817e3afafab78808fb66f30c4f445a6fdedbab5b15132ea9cbe", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3255c16dc281362a0278eb3a3e1d019ff165e728d22deceac9b7ef32a07d6586", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "104f0582f119012d8a6bd4c0e94cb6e33a384961cf1ba420c524b59706111dde", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d39334278212eb34bffa27e813eebccab8908a207f263e6022028b30aa87e8fb", -"T2B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f5c22f27ac4763b9b297f4bb38d6696f31a4afec5be882b161df0a31a81a328f", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8e3d881fee9ac46718dc23704e752d7c4b8e54b407bf5ed5b59e0d6cb34175cc", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "e6c2d0308e60f9f6e513acf588f1115422d2c16148a3211092e6cf4f725324ae", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "77a671dea4a9cf946ad46bd4e7a01ce4103e77e6e02ffd7328255e95981d0cde", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "35766a17e9be0c8ed841ae35427224cd26bb922784933fdeecfb42bb85393acf", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d52930a2db4d38ea38cfdad683abf5376881261e08b3824ea9bfb0c714a972f6", -"T2B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f0c0740e17a4fd05df84a7eec1678225c21e1bb0c3cabca7a2ceeb98792eb8be", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dad50802915de6f0c59b24ec5d9b111c1094674fdb80f26847683d333e13a20f", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "01007597009a130457cdc28bde5af309c0caf57867524cd48f6a41954c292c57", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c5af512bca98a5b29240db3bed0150fb4335174a0308c64c951c083a76b81897", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6537e500a30132b156ca44ba634551075801fb7d16ea4c76a861dc979300a0e7", -"T2B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e8b1dd1ab01b58f5706f704311f12692b4093961032aa3d1bd4e9ddaa14b406c", -"T2B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "25f56d53555c7055b1dbf580ac5ea4179fc40efc08ccda4d773bf99023d3e4bb", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fb4150a9ef686dd18767d2a12a4140a7bec10510519789fd010d1b6c5ac8e244", -"T2B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5a1c92174a8ce88f2a73c5ede6209873673ab4bcfdcadd7398d6d8e92a844d55", -"T2B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "76b0638ea2096dbf61c965024164b9951e8f1d2de6890846998b1c87b39f3c0d", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3da40d4f2b11ba1fef85a1995197b8c3f342340b859b06c5c1c0b0676282df8f", -"T2B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "86ed2ada8962ebe2d11ed69786dc17b1eb281e3796c41283f028f3d5340cdfa2", -"T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8ccf16649aeac16d0845fd44fee2a1dbd2b223d367966ed15878478da43e5b92", -"T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d737f4992a9b77b6f1e942ec780ac06eebc1d222622ab93071c90e7c0092d6ed", -"T2B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c0cbbe91fed1a92fd632ddc86618f0e30ef58d16e931990cc0735b47362ddc08", -"T2B1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "97baf57180b6b9af37581031ba8644d934a409afb43ccf264284cd39b16ed643", -"T2B1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "3ab50c86b937a4ebfef586353f08b860d4fadbd91561633212729a6f780faf0b", -"T2B1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "9539f7ed5f9c59a1fb0a4432d18ab8a4c7f638c4c98a8d4b7202a658d5a67268", -"T2B1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "64f8b1dd06f3625578407bb0762ec1d884d239fa41add8e2c8c4e729e1427461", -"T2B1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "efce1b2bc97194ecfb360e626e1b67c31973452f157fc6c9108ab4e1de64a401", -"T2B1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "2da058ddac1a68c2b3dd0d83f7985ec8677e2069cdd0993ee5e6717f91838499", -"T2B1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c9581f1b317852be23082db74737c615bc9826a552ccd15fdb58d2e3253a894c", -"T2B1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "df62ff08c08567c7da909b819a816601e3bb813786d695a6413c38c906c85050", -"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e34121c97f8202b5be9705bfe3225d5a2bc8a8d49949d06f6565b1e4ba2ce0c5", -"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "a4e117b3af0905b34431c15284430942a657e7e25abf203a4a430ff2286eec74", -"T2B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "ad8bd78721f3f8ac8fb07651749b2b6488551d94a5a8f578207d447e5884b065", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "715f8f9479d74e2bf0b930a989a40304178fef818123d68ddbae197a1a710a2a", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "dcbba03df6cc2f5579d2f9b2709194a9d590135d7ecaa370d882b1aa0091f074", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "a8f075efce3dd9c0d5a69446a6b8b5e952dbd52e4ac554d47da31fe8c91745cc", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "7fe1a74aecbac68a30893f3b8335fedf2f86feefb86bd4dd49669ba7dcde56aa", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a0cd5a8ca5896b925e054fa2d5b5bcb8bfcdce67606c36cd5c54ec7a6b03f6b3", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "c477236977bc543ed26c62190c9dbe5c2e897059aac7d1c349cde02f867387b4", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "8320d46c869c56c2db39a1f65ee9164212c4e66092bf93a74ab4a173060d67ca", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b3d8d0bdbd4e3f5d9f9f21aab2334ec9460ab6ec55b22d8a745c3cea45999a0e", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "039b3b2426f42eae1effbe2181378c9aeef2ba11602f561a3f093d1e51b3ac19", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "88003847de789157fce6c28e01748948393196abd17da622b67639594d97f27f", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "22b75e8b4f96f98a3480f7de46161a5bc127b6b5b0d3480ca7664e792ac18522", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "2ad64911c2069660647a2c3541599849607c022c17cbed32661f0d0d399de572", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c3fccd0819b630b6aa8c194213100a22670709f5c83837bcad5d747bf31abb20", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "745692b0b395852f2cb42f71123bd69583b7df2c6467118226377986d51860e5", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "a738a89c2e2682bf238a9eb9747302029f69dd22718d71ab6348b0fd7aeaa016", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "394618f2dd97eef04851dccb226593a84e6bdcf51ccc84ea2dd6d53d3262bef8", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5e615ea8bfc188769724e3ca5c7d2b323984f7fb05b86349da777d2e9f42644b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9059399d5dd57efd8d41c429d4fa866b5f995c2ec96eb18ad955457139a9f9fc", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "666cfb2eb916466c1d0d872ac2f33d357335770d778ddae845d43393acc5498f", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "2621af1195f873ff604b461dabc06dbb7f48c1f7212011e981b85dd119ec4ec6", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "11ecc14553f25f9b1e80e579c8d9c0972295c0f99036e6e310d4ca60a5f4cdd3", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3d458f3cc78dc934666a9680fb0f27a45595a1ce5981e1ed3ad47d0abf05aeeb", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "b85d69dad89314c84b9f5719c9e6a5bdecf07b7bd81ac530c9969f3b007fa9d4", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "a03c46c355915b7da5778543f13a712257278664a5e9ff3f6ee9255a97da5db4", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "9d0fa88c83a048a8952cabac17e4e22051c6a023a4a223fee1b3f48e1be05766", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "20e1cccfd3833238dd5b9556b3690a9e076fd995a577462b3b07df0db886bac9", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "069ddf002a36141c34b1548d73114ba546deb3c1c5a77c0e22b2478578579b98", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "871a82c5d2cbc6b3f2ca5d349993d456ad2acedd4fbb436544adc5fa4a0450ae", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "9d10c7936588ab9da686b92626f4d4dbee6194d4ad35eecb430884ff9b03ef6b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5c216805e286ee7aee41e4aa616e9d4a2dd174ffd04bc4069a99578e0a027071", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "a39d9d81c1a31b737fc822ae3691c38c85a52d3f076e66beacbc004ae332acc7", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "f58c3ae5cb619aea102f3dc3c394ea2408e1580d4e60f6a0f8fffb5f88c04dae", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "922fb1e30f86c91605cd621f301bd21f7cc290a2ed9f775ec656bfd6cdaf096e", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "0f44bc536de01dcce51a61d8ad4e61123c3418cc7b170695f6c184fe694844d1", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "0f44bc536de01dcce51a61d8ad4e61123c3418cc7b170695f6c184fe694844d1", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "b1cce932c47c8e7d83cbe473d5db6332934dff6bc3ff513fd3ea695ac6787be3", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "2ce183b44781a95e47283b90fe5d44db4b78c2e18efd77298ca7c51d3f817a13", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f8ffa9b9d46eec2c867759b4cc91757f92657be07425135463c64865d2e9811b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "d5741b2d59bf8ee395d33ca802b474976a00a3bf71a7f97085d3c171dcb77f2b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "19eb9e18a6db621d873cd814375a612f1f6e65e5a2228195a41c5c5404dde098", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "cf89c97b9916bdbd4dcc7dcae65fc4f8f1bb6325a20ca585b7a7cd2ca23386ac", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9a3f3d0b0dcff8f3162afd6502f4c538e1f593acb9a078ca4858e22d90d944a1", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "fadf078b110eb4b26ab766fd77662588243cc13e0b05bdc787f257dc3db4e9e3", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8ad4ba42fd6870b890a0bed845773cb135019156bf4d8ec455cc0c12250a882b", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "cc0b421c70aac37dea8227d51e9993e4a99b5ff27ad5d333af579f7d732d96a2", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "f089c068485ceaa4b4be0b1e6ec80d04bad3f365b450b63f2543e831cd696966", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "b7c00de6a515cef26397b9bac2e2e82c3d39c1c1f9ae1ce7f47134b11f663fec", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "89c601bf1ec67fa6fa50198bb78ffd534cd26a4b3b39958deecdb307466e438c", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ab59d340da7b1916e04f12585d433cee1083c9d1d744b5a99530899e86c411e7", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "60078d2d07b5db51f5766f3b183af061771de5319af712259ac14edf93ed47d7", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "729049db358482875dd713439d6e3580fa3e6c7ef36ba5a6554df2af705a722a", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d98dd224ee7814aaa29ef8dac203ee9a0958c98fe51a5c5137b09e9cff01a505", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "dca4bc8f3076b33315c0d22d1d22a059ed9cc5a1c8575c6f21172c1087f40130", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "b86f7491829284e459d53b08b2a8c817f92bcdb94c77ab56b679a3c43818cdc6", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "022c26e7b6f6bd02091dc50c2f507e5d87853b9165448dc4737f73c9545032c2", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "8cf352183715cc4ad8b7e49320af313f089f550bb5a9ffda45e421d162fac86c", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0d8fc275be4ba5dde7612efa97880681fe2d232ef255b2487da561f7dc5cd21e", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "ac1e2ba7820e36c0d94e69cbec4d92a564a7d188b291c5c7bfc3daea63189a16", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "2a36b6aa97d2e3b71264c1a86aaa59e72c70234a1e5bdee15990007129ad5ab7", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "6a28dc4d917d366ed5a2e2e1d47ddd410635555df23a036aa56d75cf6ad371a3", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "efcb77ca69a70d06326166e6aa6482e30e8c5c0895bc392bb96ec977af31e969", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "0779e28284ff65300a696998ef3dae0861aa330b18d93a980e11fb2f02866c3e", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0b7ba58da02d670754b1905a0857a41f876e26055453c11392fb518c72c020ed", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "9a856f11122c7521c3f54bd133356e845c137cb6cbc40e9e0032713a0ae4ad0c", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "289d6fdf0cc59942bce7472ae4363c66524bd24c6a6ce986a47a1842a9e1d355", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f1116d57bd86f5a940a7f676347b3e4393a6e49de110fc088d79841a05ffba24", -"T2B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "accb9527c4d42d2fde7e2e10753b4bcfd06a5bc3c1b633c0d62aa37659463b69", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "0678aaccceb3a173d3c6be93343330415837599f41641cf7f290b9e36acd9a32", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "4efa2a045f7ce12d485feee9e1cda38205c6733ff8aa3ae574e26ec689141901", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "5525810f1a0155e0f6ea5fa36130d80c60c0b3f2a18bfed022f7cf5f93951da6", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "c566a82b11a35c0da18c2f1cde69a595c268cf8bafd9937cbaa277450d915b97", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "3a1a4ffb942047365f256ebbace86e850a81d261ce1448879fb0f2bc67ed4c29", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "9ece8448dd110b72e0adca465359075498f5cd3e79531e86fe31eb1e8b46d9bb", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a864ed32fb724f2fb2cfccac9107d11e214b933db138bb22a606d598dddeb591", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "bff1cffa0d4b57a43398a964e84c31486aa86f8ec66bbd3224cb24c78d379c5f", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "6ac5e0e17dc11c4c97bf320040a2bbde8a0b309f47dc6c9e905461017ceb8ff7", -"T2B1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "35caeec34a315c23f230dcb8d47bce6f8a6ea541f2185466b4690ccc170057aa", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "fd82c2f9f04d48abc030e6b988626ab0a8905ee04d00aea40e71172ef1777fb9", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "112b84564cc7556dc9d4bf028dc68dc5d800e3e6e2f2caf60b839f694ccdf86a", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "3b68e363bbeb285d0c6d225744497d518a21f147ccd0095d46d56d75abb5cd53", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "41ec36d10c7656d9e60da4fb5acd39db31f130b47972453e389755a75296f8a4", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3358ab4b36fd549603adf9063d3c5cee8b4487214bbef60d35c9e95a4033e97c", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "aad8038fb7f43df51b969e423911959ac9ef4867dba5b2007b6fbbdd96f8a6a3", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "b71a6a21dc31f4c35b7946b8f2774801a84bd767b71a3645e78b738e6a3f3b79", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "532fcacecdded3f68c3003fe68181a164be5a36dda8f6eeef81e7c76bd33d37f", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "18331c9865465ccf660f8d0d593fa137487012cfb353c03a9abae9cf2247d272", -"T2B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "550bccb039f05130debf9e63cd9d22d265fb8a7668b73a49fcbfa7678ecd9be9", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "de899b25701b7cdb70c7054a8fbf3fe9068dded677ad4b9e04be570cfcd74386", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "45ce48b3da95e081158171fb4258cfca7d395e92af96f181645e3f8ed35546c7", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "282c58a6cabb5e08553e59990272914a5740e0c3f0a245181eff60a0356bf46f", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a3b877cd6bed7ba4f017b4bc80cedc3c740dae716da157a145b68e2db75e6be2", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "644c1afe167f2a81a6db31ea35b5d332e10bdc914def29b07e1f6908924b2cf9", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "ed067da09daee7bdf717943790e998cc0a4ac24a5defd2d4a8f35c14ebc9af94", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c1922ffdef4aad899f5c949f3ee96ab998861074a7b01f4f829413156f6a3334", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "74ec91d4894c49788894459c1110fcd894f11f5a53b84920666ab44f75ec2cae", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "70f09df2f3b21af3d76f987f6d5926a51397747e76a11d474c34f5f6133d1367", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ed56e5a0f44bc00cb0d21dbbc5a3be0c5421e90c4197d7c3a7e607a75c74059", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "123ef411fc9497c1add2114f9f5f8e12f7924c210791568d9872d8e9ee83233e", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "ae8a2592c376adf75dc45277773dd3c484c958d7b1d918f898365e7b1f701e9c", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "05ae1cb198171497c917753b558ebb968cf893a1b2877d567d90b498f94b870a", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "706e19edb517e7d72ab885072999e5bef137d94751207c26de0ce600153a3cd2", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "f84a32ce57fc7fbc92073fcaed043942230ab46c33d5854a4e826d4b4a2ea66f", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "4fe3f72abf5915da195f440c09a7a39c18d26c8e7c2f2de39c45f328b7ffbd27", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "c4a2484679d44908d2a62359633543b8043d001ef2eda40aa468d40293c7315d", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0544d60b4e5041f3c7478d288218287a69b01fb9c036a4daf06f8253c59f16d1", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "77fbf7bbfb9ff9df249a2fd5454992e749646f9c149f63cb86c85737b4337cb0", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "60005435aed1e081cd1991ad697ed1d8462f3509163b35159d59e748031ff6b4", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8c0f8c85286bffa9623752eefbdef4a925bc620d0db75dbe3a13e5d691d323bb", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "f872905d7e7c07c6184c612107ab5d1401c264a0ed64db470dfcd1d2a29f5b2a", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "ba9104699f5c586a63e1c550251e72d605d2e519ff093e832e466fa02d7149fa", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "f97157fe42f0f0b36d622444085a07911bd1553f02f58dfd2658069df6c361b2", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "aac91c7521bdcaa38520da811768b59c0b559ef7d4ecd82aae311d2ed513760f", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "a1f95ffb31c57b10965b3a19e5c28b1942718a218dc820fbdc7356821c92c0d7", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "71b013533f03bf41ef8cd29a0a3cf186ae2b5657720f34bbc0c16afb15acf4fe", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6c17b1480f7a3a3b01baa76a389f9ab6ae16a28d6a78371f740ecabd5002327b", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9d27c50bd99283fd50d2b4ae8a08f04c0adfb54859c67ce3de3dee5380fa9ca2", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "c4a2484679d44908d2a62359633543b8043d001ef2eda40aa468d40293c7315d", -"T2B1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "b85b55a292c31978bec9de1e0f129f5b0965b1cba16fbd5988ed5783c764a393", -"T2B1_cs_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", -"T2B1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", -"T2B1_cs_test_authenticate_device.py::test_authenticate_device[]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", -"T2B1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay": "53c8968222b2b86276c27469683da262e3a60aa62be93d97722e743da459b401", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f2e301c9917e609ee3eed584ceab8cfd58ae3bfb5eeb008f0400ba8f09ae094d", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "215d3904f266386e4066ce790960f6d8f1ce16e7c652c2a9e3b1e98161e3d17f", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "65c707ea4a5d6d66ecaa214aefbde8af56cf475a7fc37169e5e55e1aac332d7c", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "c3d099095e5cf79a90bef36f4f9de8f9da03f6780f04bdf8693444f639c6685f", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d8baf46c5bdf6fb0f910e52bbd8786c0cfab9ad55e50f56e558308e34a66e31d", -"T2B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0864179bd15a723f6341e8d1add7573d3ab6b230a96f5b7a4da314df4a0bdc94", -"T2B1_cs_test_autolock.py::test_autolock_cancels_ui": "2841868a1a3cae2a8751fff55a0f93bd715c9e4d8b54213eca5b7edb8a4bc0ff", -"T2B1_cs_test_autolock.py::test_autolock_default_value": "70b3d4196b010c58155a44ab1ced24a8a8bcb0b9b60f9b859f8166a8b2d341d7", -"T2B1_cs_test_autolock.py::test_autolock_ignores_getaddress": "c0372af2a803b51dd1a0d9c325528a72834afeadd53a3a213c3612d61e5357de", -"T2B1_cs_test_autolock.py::test_autolock_ignores_initialize": "c0372af2a803b51dd1a0d9c325528a72834afeadd53a3a213c3612d61e5357de", -"T2B1_cs_test_basic.py::test_capabilities": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_basic.py::test_device_id_different": "f85b71f80fd1ba51eb9071035afe352e4ee38c8917f0a46ca0fc2f617befead4", -"T2B1_cs_test_basic.py::test_device_id_same": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_basic.py::test_features": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_basic.py::test_ping": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_busy_state.py::test_busy_expiry": "3ada1eb6b81ca1cba6132b590848152d4f95741a58e0175443a634043b6b95b4", -"T2B1_cs_test_busy_state.py::test_busy_state": "f15b79aff8e3ad4cb2ed1068928100d66c0ab8017251aeb30a7a980d50976cf3", -"T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", -"T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", -"T2B1_cs_test_cancel.py::test_cancel_on_paginated": "0561a2e23122e7ca49c00bd4f28c193f03126f8ee99292cb163ce48da8c1ce74", -"T2B1_cs_test_debuglink.py::test_softlock_instability": "cb2824dc80776b7461e16f3e482cb8f032780ed948c8659c23fe3ae0316e5aab", -"T2B1_cs_test_firmware_hash.py::test_firmware_hash_emu": "f7e29f0aa9167d32f7ae0f5475c29c0f0fd39ba665c8e4cf4638ff07447b3c25", -"T2B1_cs_test_firmware_hash.py::test_firmware_hash_hw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_language.py::test_error_invalid_data_hash": "19a433acf4351dbce77ae09e1e7ca459fff8644639e6c8f8e809e87cab219ec2", -"T2B1_cs_test_language.py::test_error_invalid_data_length": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", -"T2B1_cs_test_language.py::test_error_invalid_header_magic": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", -"T2B1_cs_test_language.py::test_error_invalid_signature": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", -"T2B1_cs_test_language.py::test_error_too_long": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", -"T2B1_cs_test_language.py::test_error_version_mismatch": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", -"T2B1_cs_test_language.py::test_full_language_change[cs]": "2ec09180130d164d4738135e72f0950c761f3e02cc8fcbd952b5c999e4152c63", -"T2B1_cs_test_language.py::test_full_language_change[de]": "d53713d193ea657160d320befdf25431c4a9e6358fd43d9b814c8b7367009e01", -"T2B1_cs_test_language.py::test_full_language_change[en]": "1a14371860d2d9e3cda9c4b8a3ca3a1b9f45e2beb0eb1c26bfcc20c22c7cd25b", -"T2B1_cs_test_language.py::test_full_language_change[es]": "1db03f150dd5b88c7912d6afe88d7869ca6ab407e58c59535de56440aa9c05c6", -"T2B1_cs_test_language.py::test_full_language_change[fr]": "0263ccab0d6aefd19896c2d96a7f6f9a8871257392fcacc0c8fee6212ec340bf", -"T2B1_cs_test_language.py::test_full_language_change[it]": "2e10f851ff06de5a8f2a137b37b395f37704ec3355a1ac2cd475f3a5a7221b14", -"T2B1_cs_test_language.py::test_full_language_change[pt]": "e2d2543dea292d46e68b212434d5cc3d4d0f72a82354256c005c5ed98c2b7cab", -"T2B1_cs_test_language.py::test_full_language_change[tr]": "e94e9220c5bbc93e4478f452355468f126b626e6ca3be686fbab0ae550a18495", -"T2B1_cs_test_language.py::test_header_trailing_data": "abbf6b257e8db657a83cc80f0fea86a46fadec4aafb7fbc3bf8a50123cd73635", -"T2B1_cs_test_language.py::test_language_is_removed_after_wipe": "940a6c3ce9d5d7a2193c0218ec44597e5e098d4a15693ade14a7fffb080f5aec", -"T2B1_cs_test_language.py::test_reject_update": "a5bc2e6015b97e3cfe40b400b8139f2e9890d391bca3f934497b05b3308618ed", -"T2B1_cs_test_language.py::test_silent_first_install[False-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", -"T2B1_cs_test_language.py::test_silent_first_install[None-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", -"T2B1_cs_test_language.py::test_silent_first_install[True-True]": "71c0650f147776644f127eab23e37b893f805d80941661c8dc5b3ed91a683d35", -"T2B1_cs_test_language.py::test_switch_from_english[None]": "16cc547992592bd2d0e4a43c9b36e1ba66abf0881a1a1cfa760bb8df06ba2716", -"T2B1_cs_test_language.py::test_switch_from_english[True]": "16cc547992592bd2d0e4a43c9b36e1ba66abf0881a1a1cfa760bb8df06ba2716", -"T2B1_cs_test_language.py::test_switch_from_english_not_silent": "fb2e18e513a44a58cd1e31fa563c3c9783d5ec0a692ffb0b6635b833e13d76d5", -"T2B1_cs_test_language.py::test_switch_language": "0c2bc505e2a70aa7f544d15a20c2cbec91ae70da6cc48fe6947ffa4de9bcebda", -"T2B1_cs_test_language.py::test_translations_renders_on_screen": "fd543359e3be7f3e65c8e1129df243572305b0a458997343524d7f79a553fe74", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "5de6420852be690f72776fee0efe5fffa2ae0580b08dfb858c7db6a13df741d1", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "5d53a9c7c519d48e92721bb2424a939e7f245ccca17e42518e7f02fb5032ece8", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "4cb5fb5f00faec18c34436b4d97ac7199bc10d619c772cc97bbdaa9aa84e69b7", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings": "cba3e09f927e938060b69c4b85cd27cd2521c70c57a48abac8bd4ca99b79bf80", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "6793e70a977dc5dcd8bd3064b2bb6045a236a87245940a9c9e2ae4e87324b2c1", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0f1467141822cf93346a757aa1d3e0f71ea2ac68ff318c5b6b91bbb80e74464a", -"T2B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "fbe18469cd2dcc63a18ac3737d48360dc789996c427f0a67eab4e68e6e7cd983", -"T2B1_cs_test_msg_applysettings.py::test_experimental_features": "b2caba93756d3b5ae12f75174a7657c38bc6ec9435bfe74934d05b91ffcf16da", -"T2B1_cs_test_msg_applysettings.py::test_label_too_long": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_msg_applysettings.py::test_safety_checks": "c663fd32d9d6e18a0685cd69382e433f480c82933d5a84a3a53d8dee0d1d8f80", -"T2B1_cs_test_msg_backup_device.py::test_backup_bip39": "51ca4acfa41ee2b628f44379bf763d0cb349b97a268c39de1b3422d366dba05d", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3043098b4a0502e8970f0672f3bac8285cb5ff501f1462a0212c924739e77554", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "51a14b22367d3971f8528aef44fd0561e71ea2e31e2706eb48dabe15279863c2", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "95115ba157f4bc100649ad6f32cd23a1c202685b57050df21f9880fe3f17ffec", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "45958fd14a15ead3e7bc065f619b9c7e6bf7ccce6b8877dc1fe78ef76c0645ba", -"T2B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "9bdf9f49f613a7cc622ff29045f1506622b11bb958bfc7d662e138054b95cd18", -"T2B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", -"T2B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "2d1ae52522952895deb80c526f031419d6f7b68b2ddbfe40c892bcb71660677d", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "904dd45fd64f9ff4d9e67a9669e0922f5a4cb5b60fed32f43ee5db8cfc7bcf0d", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1d56ba8d29b61fc3d41c197093da2fb465d1f0ff87622df2ceb599420f8cb78f", -"T2B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2c4c77fee16511b342ac372a3a04b182bcc7562ce79d41121475d082e464197d", -"T2B1_cs_test_msg_changepin_t2.py::test_change_failed": "b5e30116159560cbfc483bb0ea1f510b389220c9b7bd58cce1d00122e9123fb2", -"T2B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "74a4810f4378e57c0f5f84d1e794d89615351d2b55fb82c4f52e5f3ba1531bb8", -"T2B1_cs_test_msg_changepin_t2.py::test_change_pin": "9914d86b4674af0859beb58c0746e753301677f0c6bca9fee9f01cba12b8634f", -"T2B1_cs_test_msg_changepin_t2.py::test_remove_pin": "86c309b34815e37cdb9733d53d985d3615891c13b4b8da18ebc34c1a696953b3", -"T2B1_cs_test_msg_changepin_t2.py::test_set_failed": "77677a25860127358ec60b8ddb191b1a6adb3f88461434c34b36db34eb33139b", -"T2B1_cs_test_msg_changepin_t2.py::test_set_pin": "6c176b215c367b36f8f3c6b8f8fa9f0b8ef602e7f1b6b1cf5aa3313f8f45c38c", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_1": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_2": "ef0a0942c208e7f752da466dd5aa8015efd50aec4e230c0fcedea7997ade1992", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", -"T2B1_cs_test_msg_loaddevice.py::test_load_device_utf": "042e9f78a793631eb68047230ea8cf82a047623585291cb2107c46e754ec9bc3", -"T2B1_cs_test_msg_ping.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "e103300a4329bada7713e61b73afa224f89e1cc936a76e27cf973928e2e742d6", -"T2B1_cs_test_msg_wipedevice.py::test_wipe_device": "f85b71f80fd1ba51eb9071035afe352e4ee38c8917f0a46ca0fc2f617befead4", -"T2B1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", -"T2B1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", -"T2B1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", -"T2B1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", -"T2B1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", -"T2B1_cs_test_pin.py::test_correct_pin": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", -"T2B1_cs_test_pin.py::test_exponential_backoff_t2": "680de5ae0221d6a30e6a185aacef57263c4bada89af2ab3bb651f460cbf3ee4f", -"T2B1_cs_test_pin.py::test_incorrect_pin_t2": "5967cdb6f83cac5ffe16d194375f540a5dbf3c5e1695ced906a61821a48e2619", -"T2B1_cs_test_pin.py::test_no_protection": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_protection_levels.py::test_apply_settings": "a5ebd3ca45cb18e0179a75880c842cc3b5957bc344cf630c33166f0d68bc50dc", -"T2B1_cs_test_protection_levels.py::test_change_pin_t2": "3d77956471e8d14c8ee0b0a74dc856e2085fa73f5140279ca62c49d1ef9e8481", -"T2B1_cs_test_protection_levels.py::test_get_address": "0247c433b44c61a9b1eacb1ce644d757d3e7c7b0248a130d17976824f0e951b1", -"T2B1_cs_test_protection_levels.py::test_get_entropy": "06690d3ffb20b0469dc077204a750c2928be9ce998401a536ada41f007049b01", -"T2B1_cs_test_protection_levels.py::test_get_public_key": "0247c433b44c61a9b1eacb1ce644d757d3e7c7b0248a130d17976824f0e951b1", -"T2B1_cs_test_protection_levels.py::test_initialize": "f8a8df62d5f2d38ae5942c2bc6a01e77d86459f08d353b0db8bde1d9e676445c", -"T2B1_cs_test_protection_levels.py::test_passphrase_cached": "0ca4df8cfc49be43d21350e06d1bbb218736cb534c6f18a4c93a157686197339", -"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "0b27f57f2e1ccf62fde379a908d5cf1f96f19a59b609de1eaea883d330a180d9", -"T2B1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "f1bd9c4b41adbb1c4706d6231e536a79aeaad65d250ff41d85dbbf3fda0b8269", -"T2B1_cs_test_protection_levels.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", -"T2B1_cs_test_protection_levels.py::test_sign_message": "395f8a98914cdafe94779f872dd849dcc1a89f7f49201a8505f4f149b41fa7be", -"T2B1_cs_test_protection_levels.py::test_signtx": "3ea5c68838b2c1968e883082e821b30cb48cb3492335ead107648afcdc8d4328", -"T2B1_cs_test_protection_levels.py::test_unlocked": "5d5cc20901d361b4957aea0e4c44a630db7ab8d7de0dfac4bc9058ecf26b6fee", -"T2B1_cs_test_protection_levels.py::test_verify_message_t2": "5139e2170feab7f553d3128ac0e03582c4d1417c6752408d1637595ae3bcc81f", -"T2B1_cs_test_protection_levels.py::test_wipe_device": "a22ffe67f254e33437a3465b85546622ac1c01430eb598065f0fca6e8d4fa530", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup": "a0b6efe247c1aa3540b496c44a781f766b962bd0c6ff5da1d6dab212be510458", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "7660e1cff4bbb8e82c9f622b7e97fec8d4cfca69fbcc3991588071add5f43d7b", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "be5676d3668901a2b9db08845bbc3e3c81b7c5cd3f04818444c78bd6d70b315a", -"T2B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1c091fef79888c1c4b7f03c7497c9a12d1267b0725a06eb5274466b0fe64877f", -"T2B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_clear_session": "dd3da407a5324351fa6cf3a7e52b234671d47202c07867cc8fd00fefa9ed33be", -"T2B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_derive_cardano_running_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_end_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_end_session_only_current": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session.py::test_session_recycling": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", -"T2B1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "974602473b247873b94d3f8f34471206405e049570191aeb07d33286cac477bf", -"T2B1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74cc7c6cb730a7b633234583d8de84f4f353aef73d3e0d36b1a869567a461d6e", -"T2B1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "69eccc914475d642529a2788512e758a458f20870e4c0fd3d969126b1219cc0f", -"T2B1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "a3257a98227e4262eab4c805d162ceeb4f1f5799fc0f9820381c4c5e6f144303", -"T2B1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", -"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "c58f460ce8f2e5d1e454a466052163e368ed12876f1f4a3b98e354923a2a3c72", -"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "8242f513a4794628ae7b16e9705ec62150aee4c0aa16f879058b220242d88f70", -"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "0ca4df8cfc49be43d21350e06d1bbb218736cb534c6f18a4c93a157686197339", -"T2B1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "dea5ef0a066a90ef7984c6c052563439ddf71aaf68043bb9420dd645d6fd38d5", -"T2B1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "adc0bf5aecc438d0ae6dc2cbda39f909619cde13ffa4a03df3e2fa067f78d740", -"T2B1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "950fc623e5dfd8b1bd05ae782bf98736f8c492424b202e5e20ba2dd10f7252c7", -"T2B1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "5ac9b24f6a63a7ce8e93f05d23a9f1d57ab622ecc077b7810ad9ac1527045068", -"T2B1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d14067c76d8475a1f91f5915bb941158933c5fd8321e166eaef67a94a13d05e9", -"T2B1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "005755afb62ef3a7f81b807ac3fc6bbe705cfa647e353abdc117193397a2b7ca", -"T2B1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f5b8cbaffb2633e934732ae4f395e8e00785bc01895b051fdfa428c20ac69e11", -"T2B1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "a130896e2d615269ab3b3ffb620f665778ba06e379b032bbebaf9d1608940bc1", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "412383e152dce7c1610e7001163df398018fc6a60f1defaf8dcee447fa64403b", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "89af2d60b20e9f202ca313b3c127e5d9724ab8b0321c0e856e7b878fcf3111c4", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "800ff92736cb75042e8e01377bb28dd8db2284ddde8b8dd511835017394b262e", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "386908bfdddaa1a915db58a2f0cbcb0bc36d5082a133323f41fbcb3d67a8a2c0", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "7b99de05b05709e34d9c77d05fe9874dbe154d215a67352240e926c14d3777f4", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "6a0975462798c214097edf86885ba65763da9aae835c73caaaa02e72f99e1fa6", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "20d8ac005999cc3ab4e83fb1d76f22ed2f11fa1425de042e0d585856177a76f3", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "33f1b1c154c5d05e401ee54f9a177982508cd11a1c2d80227eee9382ebbd08ec", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "30b658f3ce4933d33f6a9509f8b8014a3fba931a43c66228258e0fdc74abd28e", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "3c30f6c96771c10cc4e41f3470c8ec1474520b476a385e208f3091c5cb3bbcd4", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5bd119121f055bd21ae44e92f0566fc1f21246c93c91476bca4ce1420e6858a8", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "974b8b99a9c8d5fa118010df29a27e262a855372a580e026c685f7ed983e936d", -"T2B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "54c292192a21ef302d036abb8fa69bf2974e7ebc17b90cb11c5d4f22c7d33a8b", -"T2B1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "b540eded02d2b6c94ded415dc1e40323d6420007eddcc4102d161ec0ad7d0cf7", -"T2B1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "6436e811b1391d0fd55f4b50a0f6bd8be3e3bbecfeee71df073ba8f2f22653e5", -"T2B1_cs_zcash-test_sign_tx.py::test_external_presigned": "7768da68844736c7b938b0da0f64386ce9b0b42f865e353c6ab9378ccce2e7e2", -"T2B1_cs_zcash-test_sign_tx.py::test_one_two": "f3e7769be4155a1e540dbfe99ac3e41dd1bdc65cb1f722238a8139643084d73d", -"T2B1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", -"T2B1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "e04fb9970e8468bbbdd0d7a4288a7379ff0d4763184d60841a97c27f5c08cb81", -"T2B1_cs_zcash-test_sign_tx.py::test_spend_multisig": "6d901b38a328228e56025e386c9157cec224f9b4c48bf5e87331e2ba91e181fd", -"T2B1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "6c0ca5b901e81f13e88f5f85f6373d71f9d2c5dae49310300a27dd3ce8893802", -"T2B1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "749e4ee822002e5b05aa61e9c8caeeaa7832c6bea7759be2dc40d6e16b46f93d", -"T2B1_cs_zcash-test_sign_tx.py::test_unified_address": "73b0495558bd8d51ebdf421531115169d03854fdf61aebecae6ee5a8d675873d", -"T2B1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", -"T2B1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "6b678ee29ced030601f9edeb5153b3ac60ec115f9642ab90b9a9cda0814fd7c2", -"T2B1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b279b002d9d052800e17b572a5351a6f537399610b33a1332ecfa013573b4812", -"T2B1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "22f0722491d6b72a186d7364543eeaa82e37ee1112a8a3f0ea2e0348d944723c", -"T2B1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7a921731c83f4452bb3fea00a0d2a1c073317d95656de9cb6dfd6bd5529cbb6d", -"T2B1_de_binance-test_get_public_key.py::test_binance_get_public_key": "affdddb1440fae9bc4682200b0441705da9c745c3d7e555dbbaf34c203243609", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "f0b4a97e43c0bb74655aa1cf6eb710d827a7f8d39f2ab86218ba32ea09d48fcd", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8b1efe5b7f0a5eb1770b839f4500a6a4b4485f24a1905c0c12125b406f1bcd9d", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "b6a188c3d0a601311980dc76fadaaf495b8f4e777393f7f159fc901601fd6d4e", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "f0b4a97e43c0bb74655aa1cf6eb710d827a7f8d39f2ab86218ba32ea09d48fcd", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "8b1efe5b7f0a5eb1770b839f4500a6a4b4485f24a1905c0c12125b406f1bcd9d", -"T2B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "b6a188c3d0a601311980dc76fadaaf495b8f4e777393f7f159fc901601fd6d4e", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "6515097ade04a1dfa0a913e105866d9e2d4750b32d48be71953c8842c25a6260", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "f05be5e263e97d8ec91dc113e8289fda07acabb87acc7d5159a6ea53d74e7671", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7d7657a854dcf7e21c0ecbb08087edca6f2eac142d526ff0c86ac3343c5072b7", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3cc3122f8ebe8d3d19b709ff4524425d9cde56e79478a52419ba7a7b6ba06de7", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "42e6a3904ed7e3e9ff98e923ac3e6513f7f2de16f642145c8b137eea239a64ce", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "42e6a3904ed7e3e9ff98e923ac3e6513f7f2de16f642145c8b137eea239a64ce", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a944e4159fa05caf2445f7745bf02e9135ac786a5638760104e47460b6a09f85", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "e7d320723a1aff20c75df42104a5dcba078c81c6476c86d456be847f95f5038e", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "e37748e9115109a9f39caa335f0dd201dd21cdf43b174625399dc55355bb28ec", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "a9d7c9cda1427257fd737ecf3761941fe8a8149e0495c4ea0885149305ef8adc", -"T2B1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "a9d7c9cda1427257fd737ecf3761941fe8a8149e0495c4ea0885149305ef8adc", -"T2B1_de_bitcoin-test_bcash.py::test_attack_change_input": "95f6030355f72ec5f7d42a5bc82abf8f5b0f4f97d734239751589603a13da066", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_change": "b8c546f2049f905f23f7c4f23bb90187f15093a52951e10b292714404b7f46a5", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bd5373a49deac614f556972783155e1b51cbdffd8d8ed96914321877eda5e438", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e3d736b3cb94f866f6f5b42c1018e4819057304eb584938a0feda266c9d79c9c", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "504d16f0a0deec470a75d5ad1f26825a1836dc37c645718541c5193879e92ada", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "26cc326bfbfa51ec9877f4d891629f3eb828c2cc5005de4dfcee55ca69ce4ca2", -"T2B1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "2821a13709078b73309c8b2d0d3759d28a891dd37931bff29c0ddeac72f5e147", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "0cdddd68b21be7de1a64cb4af29634369914009a3fd637c2d35c7db0cf3c1772", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "db34366d09df207e692f84de1fa4ab208d4838fac2d7b23f128836e261301ee4", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "ab141a1bcd2d44c7e59b468e6f35191e89c9666c6f3f49e120dbdb5f5692ea5b", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "2979708de50ae386cadee38ad1bdcb178c2ca2bf1efa65c866d2447a9f564296", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6ca7dd1851e3bab224fa5a04f55825a95a812cc53578bcf6fb4d6a710ec51fab", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "8c20317fdf5091a6e3ab25ab828b8e7bd8f15223829dd1fe24f14837f7784c84", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "0fd3f4d8cf5499fc67c37188f039853a8842b568d858ee1436eaeed9bee5c863", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "8b25345b3a646001135e7e42e404bfcce650bc56f72ec3feee0e6a3fb7932e63", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "0f3e4711cb81f4d9047484299ae14529b554ca0ec05ee24f69b09425595651b1", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "be7b742c03a0e331634ddd321e358d1f01ddff356273989852d113655d640419", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "9279bff4c956cdf2797cf9cede9466628cf0bdd4c1131f4e927584ccdd325196", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "a26d0d4b87340544e888b892f9315c4921414cad35575850fbe1468c58ff7c0f", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "a2434dca3486fe2f0fd712e7bdf539847881f9fa5e8af7dcca44b7843a0f4e63", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "510fd3eb410035179a91ec4032ed9b08b4cfbf5665acbfa4e753aa3234af048c", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ba9b8dae7c2318b4e10bf9c4a052d3a570715ac1d719add80da030dc9f8b9faa", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "98f9eca93f0defb2060d34bdb2a0443396df7777634112c022361e18e622762d", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "65359b1a632a01a6b1f4a10f2b1da8f6fdfc6b47ef53b1d73fc323265a7f830c", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "6618068129cf6814f7d3f1550128f24a42b05e0a097a89694f905222015f3e8b", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "0cdddd68b21be7de1a64cb4af29634369914009a3fd637c2d35c7db0cf3c1772", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "db34366d09df207e692f84de1fa4ab208d4838fac2d7b23f128836e261301ee4", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "ab141a1bcd2d44c7e59b468e6f35191e89c9666c6f3f49e120dbdb5f5692ea5b", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "2979708de50ae386cadee38ad1bdcb178c2ca2bf1efa65c866d2447a9f564296", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "6ca7dd1851e3bab224fa5a04f55825a95a812cc53578bcf6fb4d6a710ec51fab", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "8c20317fdf5091a6e3ab25ab828b8e7bd8f15223829dd1fe24f14837f7784c84", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "0fd3f4d8cf5499fc67c37188f039853a8842b568d858ee1436eaeed9bee5c863", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "8b25345b3a646001135e7e42e404bfcce650bc56f72ec3feee0e6a3fb7932e63", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "0f3e4711cb81f4d9047484299ae14529b554ca0ec05ee24f69b09425595651b1", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "be7b742c03a0e331634ddd321e358d1f01ddff356273989852d113655d640419", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "9279bff4c956cdf2797cf9cede9466628cf0bdd4c1131f4e927584ccdd325196", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "a26d0d4b87340544e888b892f9315c4921414cad35575850fbe1468c58ff7c0f", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "a2434dca3486fe2f0fd712e7bdf539847881f9fa5e8af7dcca44b7843a0f4e63", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "510fd3eb410035179a91ec4032ed9b08b4cfbf5665acbfa4e753aa3234af048c", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ba9b8dae7c2318b4e10bf9c4a052d3a570715ac1d719add80da030dc9f8b9faa", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "98f9eca93f0defb2060d34bdb2a0443396df7777634112c022361e18e622762d", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "65359b1a632a01a6b1f4a10f2b1da8f6fdfc6b47ef53b1d73fc323265a7f830c", -"T2B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "6618068129cf6814f7d3f1550128f24a42b05e0a097a89694f905222015f3e8b", -"T2B1_de_bitcoin-test_firo.py::test_spend_lelantus": "adeea9b82cecc0daa980973df2501629a4331435ebbd279d40cd2b4a5be88ce2", -"T2B1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "c44b103ff040bd6949ca3d71d5200850d167b25cb8b3640304d7dfdc71933940", -"T2B1_de_bitcoin-test_getaddress.py::test_address_mac": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_bch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_bch_multisig": "1ada18c18024204192c913c536ffe251a4cc34079c588984cea88e49dffd1485", -"T2B1_de_bitcoin-test_getaddress.py::test_btc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_crw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_elements": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_grs": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_invalid_path": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_ltc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_multisig": "eebc1771298cde4590f108743bfb2f354c8b41cc0b068131b450492cd172b6cd", -"T2B1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9bb0c6f30f2bf7b7d927309520b7badab7ee067c586e78afa6fd47e2b3a9c57d", -"T2B1_de_bitcoin-test_getaddress.py::test_public_ckd": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_tbtc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_tgrs": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress.py::test_unknown_path": "54e6d1fe68239f408ab30834d4a4117b008fe9d1dac923e6b9b1520fa0555aa6", -"T2B1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "bcd9d0aacca0d4c3313d11ece750663716d1262b534ddd337c1140e8c6d6f953", -"T2B1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "03e9e7fc8267db5a49b6d905acc6818ec3e032cc25d42712a7287ccc72f6d185", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "14555dc2ca10d1c5bfc922f5429645be9600e5b03c303555406655944f8441a5", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "28c6d4f6d5c66df3201b05a303ec5ab80cd1d45fed009ec2b6fec98078b7d382", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "db24b2ceac67bfb2d5b9d85a2de2e69194a9115ace590f3d4edc5bfa156edd93", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "49eab4ea767a39c6197d6447590c43615e6d01cf052ce02edfc9456b3bab11e6", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ad775108cf09d0910054850217690985275e39564d06e07fcc5a3eddbabba0b7", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "bca5f5cb9e8878379508decd7184c7e5a7de9afaf6b5b8e24237501e05127839", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "3ad9827d5723fe798481aa9c30bfb7c0cde09f996969f469ff2835b4865241d2", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "4893aa26257ac281bb00f7afc51dfea50b4de124f549aacc8a4bd6fc2beb9889", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "a24f3ea4ad95e01baee50da3e9c85e38c59b383e2d672f57103266573969709e", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "39bec8c10cdba1555483ce43bbe209f5b512b9640d8540eff4983148b59ff8f8", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "60127f4937adda3714d9ca2c1933e581563ea0089207f001f867e69347c1c3fe", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "33b36cc3a38685f1cfa9ca66c39713b80f410519e369603b219f6c6782eef487", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "5ce60228df5ca9340ed2fd1a222ce4b9cb344f0852e264a231b907528d7e4754", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "235d0aaf3556ce63e9eb85d7a34b81fc9b44c3bb1aeb73571b5d1c0d56dbc2e7", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "ca8f4dda3d359214b585cb975346e6f284a83a22422be74ce114df9ce770dd38", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "867e80f9c6297258abc0259f2122e6c4b27e2ab9b6a8e7d279c3a681aefd18ae", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "deae1c57da04fff64c8415c3e22e631673197d3a30cff82666583c69b7c904ef", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "37a86b9562c1995a6330aa993f3777e00bb6dda36c238ca36d50912fb38baccc", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "4671f5d7621177c75b80d313c00753290a384b442ad149cf7bf1f2c784d05fcd", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "afc3a30d968a00d38e64438a4a70fc33d8a713ad1765a22b4027513a2247ac0e", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "3d89334415b693d478c2c7cbaa6c659781b73868e39ac9c8b1e9034c23566628", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "6fc6d2c8f8b291c5b1a09db39ab50774624d22eda07a572dea2225cc8cd57d55", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "6fc6d2c8f8b291c5b1a09db39ab50774624d22eda07a572dea2225cc8cd57d55", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "3272a58aae4ef76145de4f7292567fe597ca252fee28d5ff35b28a1dae1ebb63", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "f1682ba15faa9517403f9ade646a42a9564c751c592a5a1145dedff24cb650c8", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "011f392fa0744bf1c66407d3e67d22d7b9f53e05980efc5eab3780d96395c7d2", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e15bf6090210bbd6f156190b9f6587ed5ea328c230e9b05236dc7573c8ed5a92", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "cba0bc656061de3738de56b15b7c74b8fdac969ec42b6d42b1dc07cd7370815d", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "eebc00c67b5e41387de0a116b192ba6a6fa2c3d2579598875d3ff846dfdbbd52", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "1efc42a77a023b08a2157bee463d125bf23f4dc451f144aa88139ea075948eaf", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "572ae44446cdaee9595b22354cccce6b37380efce7d787dd8f2caabe8801ceed", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "11687c19d60f489642fd8f5ca460c42bb8327f3e4f592ef6909be5413f44dc68", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "44008d4893426ff7d3d48edd782db6dbd6ebafbb259723576fcf8b8d84e79feb", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "654ad54adcdd12f33072f882da9a7528ca2f7fc98554814480cdd3b8c9550567", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "1ba2f8eb5e9e197337d969a10b5f63cfd7129304234e369e15eacfcdfa5ac506", -"T2B1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "fae19edb72c94ca9752cfbd5be123dc806b419d094b33e5a1ed62ac9cdffa6ac", -"T2B1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "bc4847d0b25e1b36c274bb838416d0b9db7506e3854f0327020dffe89d770964", -"T2B1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "db34366d09df207e692f84de1fa4ab208d4838fac2d7b23f128836e261301ee4", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "9c2a9ac21fc0e2f37d9491b0d50ee53eece8d53350ae44b70dc530b25c963613", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "23049f3da67137882534089e1b911258b6a2abd73c283f6d4ed0cd8163edb660", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "9c7624d562c9aa16363ef6a0e1c81b370e240ee087417e79a4c0dd98c12a2b80", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "bd98dccc3df20eafb959ccddb99541e942b13673d51c3e5dc9cfdf9c53245261", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3f3a5af634477d2fbb9d3e38fc675a04e7217820fc2dec28ac4b7ede2e3c967e", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "8a2976c132b634bf9c0318430aba900d12609cdb7c29b52c3d2a5b540bf729c0", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "707f4b07d4766e3d7b7ddd1cbc3dfb4101c2a4101e7d50ea6245b3f6ad1a09d5", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "49f0a6ccc943317585c3fc3064a53327622186614b90c7e1517c8352ba53548c", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "9279bff4c956cdf2797cf9cede9466628cf0bdd4c1131f4e927584ccdd325196", -"T2B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "1101fe4fa22ab769ba99561e3bea912c055a6a45cc945a75d54cfcbee3a21ae5", -"T2B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey.py::test_slip25_path": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_grs.py::test_legacy": "7f2f6ae3f7e9529fe4d6805bbf765f45633865c8d2136b871706adf3e9324612", -"T2B1_de_bitcoin-test_grs.py::test_legacy_change": "cb86c1cfa78f87df5064c8239bf87592d19152e5a360a77faf6f59193c0b1529", -"T2B1_de_bitcoin-test_grs.py::test_send_p2tr": "f403d453ff07f74bfe79f15336f14432e32d049580db4e083ee0115e49357d15", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native": "ab412c282ae9849a693f82caa350edbded1c36f9402daecb268587ba84fd4b2d", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "96d1477878e0af9f57f8161b311bad375f2af7017dafa32cf992721c72cff4ae", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "a029b042887628476f816a534a264377c24ad0747c299d18aab69d2f648e73fd", -"T2B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "39e33a270f3d714d1d221df52e8d5a12b47fd2984a433d0abf8d7595311f5983", -"T2B1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8b425123058d3ceb1dfef9ca527351a89723dce66e4cfc4ff53cd5514a01a0fb", -"T2B1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7fb36fe675907a09ba9225f83a4dcfd4acdccb2702559955633ee0a9de955c22", -"T2B1_de_bitcoin-test_multisig.py::test_15_of_15": "5f594ac78c050f062fbe1217f92b8fd56fcdb4971bec37d14e9a5c3253c9eb3d", -"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "c0f757dc1153b6a5bbd1a40c46de4c6f4471e791072e199f0c13e4afb663bc45", -"T2B1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "c9c782f2f1fe57e8a2d19c7711725896edc9b0582764ffe1ee018e40f0b5309d", -"T2B1_de_bitcoin-test_multisig.py::test_attack_change_input": "a554bed414c9aca89b9556e1c021219700c3231ef52160297dc783bdedfffdd8", -"T2B1_de_bitcoin-test_multisig.py::test_missing_pubkey": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_multisig_change.py::test_external_external": "2c718c589032558a63bc199880f0cefed441acc4513f320e3a4524b6cbb36a93", -"T2B1_de_bitcoin-test_multisig_change.py::test_external_internal": "c2e599b35a239ffda4f2e63eb467034201fa759507892bbc991f2a5d7a0b40e9", -"T2B1_de_bitcoin-test_multisig_change.py::test_internal_external": "e65fb18b3bc4b6f9ce5986997c8d5bd65878cc388a13c4973621e1e10693c4f4", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "322968121157865cda09b5af09d1556eb631b7e08eacfc16f9e2350f97144f1e", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "68e5a45e979a0b68be4c595d9bcf04a54ee23e8d3f563cfcc64972f54a0651b5", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "b749e4a68293b3dae44bf1105e0ff74701a02bb8d2d2fb5aacc78b1103ad3eac", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "ab9fe282fd835ce42bfed7b374207ee5f2f3ca9cfc79610d11e4bf559032a907", -"T2B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "599cc9ef6d2e3ded313a770709c3da3779c9d598aca2efad6e7848549ca9c60a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9ba1f92c611098ad9f5ebf6d372bdb6ef279342d0466251d89ca73c99c3e407b", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "8d3273ff8db1dd138019a2b2597bc49aca9e2165ba0f56fb20062281cd5c8d14", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "a43329c45f85590778e2b0ba952cf3100c142ca988f230a2fffa9f277b242995", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "8bded7af390a71bfb91e7b9cd193e0111b5f5dbb83b094e9818b9ed4c6c4e9cd", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "cfa938fd344d6b3fd3ed189eea3941380229bea2fde543f1737624a34321f501", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "c41181b188b1906d9af7f23d2ffdfda01ff2519158417c51ce9520e07a9163f9", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "d267ce0b6cda1e3c72d34a1d3c200d80fb147798d1aca5e16732b3271a463f53", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "554f89c7e1c700245a339e976373f61f4937f4b1358b58c3514b9e86c5058e32", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "13e805364911e210a38df401087b4d5c41b8fc1fc0a6eab48502168d4ab43c27", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e562edf0f431aab4adc28d4a48d9627b4a301ac3d6fce4e31015e9fe351c5232", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "e75e31835a15565baa156b172ed5b55c05b365a969b63f43f95fa0beb0904922", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "5046643d8d3c827200216126974b6dfc8f48a9f95640208f51cba57b7d0934c0", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "0ac1dceb2dbcbfa72ed75f4462ff07d8aade41f0d902a5820d9291e845445b31", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "6b275ea970bba95742ab971c8e2647cdaccf85914ba5b4dcbd88fb4d3b91654f", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "d094fcbf06cd0a6a8d6cb647a197a02596cc184f77a3c81b97f09a0068e79d83", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "d0bb9f8003ffbc6091cbf91c14fe2c60cf274e02976804117409d69f1a0de3c7", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "137dfc0bc8046a63cf844f7f44339673e3d3d98ed0aeb16a6e6ca0341619b64a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "4f2424a9d0beb78ea9507610a936a5750fc18a79363f1ed76944b41aa79ca0b9", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "436eeb1edfffd22b3042f8075ee13d78a9bf333cdeb96f2abd2c594967f55a5e", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "de780403620c3d3ada367d78a0c943a6668d2e16d77466dff5fdf8e2e946c04a", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "d84d849b75fe52347f3800f3c105c22a3823a8841eeed51f3cac18c6739120b4", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "970cc4e093dd2bc909dcfb69543fdb4ee64d847ecd5855b70a7acc8431f856b9", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "6ebb1de72fad46818f37a30624179ac0689d50b3727a3579e9ef833b11209485", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ef598d4253703b7e7eb9fd9b244f0f88b0c05b6693c806f5a94be38bbd875f7d", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "81d01218752afb42910775d903e260a6f9abc19378b8afd4c90d6fae1204c41d", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "173267f69fb36674c972fde0318e2c4312aab182bad2c5d4030654ab52841663", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "d15f1a07b7edf100bee97da12d4ee765633864427796ffa2cb570ab81f220991", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "9a746bdb575f59e49e3aae0c576095d21bbca55bb5f98366834c6dbe2a9bee05", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "46d05dc98c3d2a9853ad47fd96565119578cc93ec47ba0bb24f3500eab636d47", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "d09f9a22d21d01fb9493ce81f45849147ebbe111aa0260a8dd96e70dc5d8f4e9", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "2678cb264c4a57de351680f7d33d38437058db87f2a06d188c8391ca17ee27a5", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "eecbb3b996abbaaf0296c31505080c9a8db1ee4a0da7031f324e564f0d5ef9d1", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d8e42558c27ee7bc44d1a27228daa1d90cb17b964aec6f4d9096cc4356133700", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d4b711e5fee2182f15367619eecc06c3e38450eea3a84e65a6308333452163bb", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ccb7b2cb8ffbc6fb0f15ca461351b4d41611e53c6d2c6a24ee0675cfc5df5f9d", -"T2B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b27cfafdb16886c2178ddfa5537bf0a80bdca7cf9956401861adf7a329fc8757", -"T2B1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_op_return.py::test_opreturn": "edcf163019b3b1ede3b9f0fc6a5da47729e3eedb2b58de2deb6815b7e6942672", -"T2B1_de_bitcoin-test_op_return.py::test_opreturn_address": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_included": "230fd79318963f765b6af20289b93a58506e5fef36682da2040c3656745a2f0c", -"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "dbe811a1adf3490b666455e170e1af41b8c926f460f6f1e5ddaa5e69e48aaa94", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "5a8f5b9d0f5aca531730e95c00c08b3593960ad4216583cc7ca7515d59adf2d7", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "5a8f5b9d0f5aca531730e95c00c08b3593960ad4216583cc7ca7515d59adf2d7", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "81bc5d94472fb241a82e2fd5a60b02502bc93cf177e33e9a78bc3c8bb529137f", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "25d71c0be4c5b0999ef3de54076001efd4b5138ec87e47f6b3ea73fddd323c4a", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "a1de270b9ee1750dd19b7b901e171b513baf39b698b3e7bd514b68734e4b52ba", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "29f531c428e05991417341d4a9305c81fb0b027e7cbdf33be23dac04782f8cc2", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "30fa1c09c4c69cd0d2f9671c91829c8ff62cb0e948ee8110069391be2e47cd91", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "953bd7c23e3826482489121a1a6ff161cf5acf89a2a2f791da235d1b93b14690", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "953bd7c23e3826482489121a1a6ff161cf5acf89a2a2f791da235d1b93b14690", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "5402ac0cf54849d4744aa08e62f38d550b68aba5442dc29cf9d00c603ed11aef", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "59ff24742e7b837a37dbb8e0b9f0df342e5715a9578986e6aff88f6782dc23b4", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "86662ade02ed182153f62205b8c7638477ac1b7358f5c5857a4bb8c14767696f", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "86662ade02ed182153f62205b8c7638477ac1b7358f5c5857a4bb8c14767696f", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "f05d8ec5ab9ff884329e23440e9fddc7fa0ce1464745cfd9938a25f22bf6ff27", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "5aa77f71f210239365ed0f2e5a587230b746877e88d679982e6d898c68c3f0bd", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "c2041ca55cf1bcf9e49e28cd0250b9722a4c043035a247c7a32ab7d6e7ef9081", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "c2041ca55cf1bcf9e49e28cd0250b9722a4c043035a247c7a32ab7d6e7ef9081", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "49b34418c4ea579e50700f22a5e79dd511a6d2592e54cf9a254b20a55ee7f62f", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "800f218b1d10f9cebcfc667bef8439be6d31450f4c2726b53c8f2a87b012f326", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "92d0d871af78b74b13563dc630a8b41c4c73655e0482b2bdff56f334188a9f8b", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8334e0fdf9916c6b7944ed151b0b6759f8d72b134e17022e75aa9766c7e06fc8", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8d9250962030d1ce18997d4665c4d2ece5b9ee414ca704711501b28e1d34b765", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c75979c5981df9245d1878fa312013dcd5612b53c930228c0a5c5acf891ea486", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "0318cae4067cd4a3faedd36972ecb9efa3b9c4784c29347b920828d27081e026", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "16063995c0ecf37f1004070936fdb7532ad51543510e9be0d1c8f3e7bf8ef346", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "50ee60f31032745dc76c50fd67bb531ae152016e16832316888f1c5760a068d1", -"T2B1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "9bb95d579f8288c66eda148050a2cf54bb0fe43642d25387a4d72ca6d15ef95c", -"T2B1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "000deaaf598808ca85fe879e3be192727bf6e62e58e052e6bac04bc496c774a0", -"T2B1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "3615115817fdbd018f787f65718c3ab98f3edf9d46b7ed30b122ea109bc090df", -"T2B1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", -"T2B1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", -"T2B1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "6e729dc9be3b81b213d6dad563187d132021dc7a040a58b092eeb63084110d7c", -"T2B1_de_bitcoin-test_signtx.py::test_fee_high_warning": "85359b14d9ec5d8696550bc797dc9d0f259a04e6026724f3f58e004a916b50d3", -"T2B1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx.py::test_information": "72c468f4dd06e26000fe24c2186fe709d2c4a86b7257bdfb0d54a312ee8f5f5e", -"T2B1_de_bitcoin-test_signtx.py::test_information_cancel": "24e30bcd2788a364189f128e57b90c4c0d66be774ae743dbcde1bb7c55199ffc", -"T2B1_de_bitcoin-test_signtx.py::test_information_mixed": "188aace321422140aa500558fcbade1a6a3e9781e5d81044951aa9eceb3d0de1", -"T2B1_de_bitcoin-test_signtx.py::test_information_replacement": "dc8ef4c5e4cf2b7aa990c798b276b489cef0efc4d120256bcc90bc463d76e2d7", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7c53ae00277f68ab68fbea3d0a1a4cacb14f03c48c0c3dd00a8f5ad1005c5de2", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "46795e50e184d1c76ac4279d04fd3ae8f2f169bfec05c7364bc1f3f8f9f72a64", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "9d9bfbef5c7ad5f159ade9416edb2d7e866047f94590f63f7e8922257def4d62", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "a00bb6a5a13338eee12f54b57d14dc6d3f496d78aae37e104d97bb599c897fc3", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5816a0fa4d0a1b4f0d2a3471f2e87787cb2b847eabf313996754cd3efbedc168", -"T2B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d983e4958186ff437d4c7c33cabd3410d3632d53a5faedbe17f08382013e731c", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_change": "11b80a45a507801dc64826bba471d831def4b2c29e468442eda5c644a6918104", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "a16aaca68d7d3af423192df6f52c9521f32c677fc624a886014a589e3e7b2516", -"T2B1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "11f306ed994b3058553f0acec9cf3aaf384ba6496ef36252f759f133dedcb44f", -"T2B1_de_bitcoin-test_signtx.py::test_not_enough_funds": "2727f1b20af9256eb9b6ce1d10ea62728a5a9d6b8c292f544d61bc91a41f87d8", -"T2B1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "685bac936703f7df1bd55c4b32763eedd2f77f4b930e920c6ac99922ae73011a", -"T2B1_de_bitcoin-test_signtx.py::test_one_one_fee": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", -"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "c20248f6f986623cfef7340564e62157c47afa6b3e3d5c8a867ebf54be8cf0a4", -"T2B1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "0dcae4991efbff6fb9953ca87ce00ae587e003689f499f84fd4dd9d1f131d3fb", -"T2B1_de_bitcoin-test_signtx.py::test_one_two_fee": "81cb7b220c2ea7291e15a4ed711ee0536b1f5df6a4c35fe72b560eb9bc7c0ba3", -"T2B1_de_bitcoin-test_signtx.py::test_p2sh": "b607e39d58456671d3ebc5fe830e17c901aa77fe4c2aa9e3761c19c469c7aaae", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", -"T2B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", -"T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx.py::test_spend_coinbase": "9bc8f5bc8ef947f02f98127a87244e1499fb92ed6df5418f00c15d0e2fe28560", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "040164683c69c721b5e98053be41f8a24e2d26e3195f936896f8dac8a40a2cc9", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "bd72aa1004c5ce431dc96bd667fdf211694187e3a4e65f985dc53613432a5d12", -"T2B1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", -"T2B1_de_bitcoin-test_signtx.py::test_two_changes": "c3c89bbe716ddce1a52e1e442f6da66b7ea7655e0e18e4bf2a27bbbcfe43a3ef", -"T2B1_de_bitcoin-test_signtx.py::test_two_two": "9cb8e8e4a2ac358e76146b9d309a94c494bea9e3ccc0b1a51aeffe66ed1013a4", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "17f53d9b30494f599b5e3a64c0e6e67724360093b719f76ee69ecc9c25f901f8", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9d94ca4052e1d34617e941b3731619570bd21e8773a2624929a9e785292a2c9c", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "8e28be5b97f6c05047d5b44f2701439da1542e2d9a93c33385404ca025b0cce8", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b9593da6b2d9fb2b0a87b4f9a70f99e09aca68ee4e254b6918fff37f5123a7bd", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "26c6e1b2cee63ce391fe822137059b2b09ac9e25b18ddc23ff315f7d6100365d", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "a072a264ea132ae1c801c5b70edd8958e58362949572c049ba0dc2cf917dd8e5", -"T2B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d96a42e2a703adf8df4d16a0bee8736a18bd9caafb0812807a1342bc0e9b7f6e", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "9d3d6f74efe1d8e9ee80e5c0121dee99f59cc17d76ba19f6e47a050d8f8aef06", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f70e993f45372a6cdfce34a8ba47565b7bad0379119978201f548a36d4446a34", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "63c725bdba12fc6cb6a75bd04edd830bf0f044a5ebdcb8fb2dfd6b1afa6b04c1", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "cbb249c8d930b390160dfab9a4f59622a100ac5bf5df44b48b9e81f825dd872d", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "62234a950e76e794a766e1088c25116a0c8d808f8d33f43f26607c17cd998d1a", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7a14ea7b566e186f626e80776b499fe14e4089ae26fd7fd6025b243a7057dd12", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c7e225b7e25f2d028019d385bc36f190399d86d3635006e4e5e6b5e243a53b7f", -"T2B1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c8a3ee310e9afef86c4887c768e6e92273307a3f8fa6d45a459977a4e0b08044", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "62ace675378d9c932bca90764e601d06139a657ebf2bbf0ba4e167640db1e0ee", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "449e4bc9f703d13502e7fd91d753b7366af162ed7ae5626b0f8f366caf166de0", -"T2B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "7ef18f4fe1f5c5f4a16bbc9b1781840a9da5c4881d6b7d3da1e7ccc9c9d23a31", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "24344bda508587abbdd96dcc10322433d5af1b3a3585647456ca4d614fe0718b", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4c14c059ea15ce8243bf0a4a27d7d758173966830529f60bd1eeb8a4b0cf39ca", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "24344bda508587abbdd96dcc10322433d5af1b3a3585647456ca4d614fe0718b", -"T2B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "1455a9f8b8d2b27b4dc2d2297c9bb0b7746b6e92207dec1e8553f0c5889de9c8", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "fbedfb818206d67d1b621ac924d1bf72994b48192cbe52bee4f6b8bf0b596fe8", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9e92ed8da57f14b16b322f5a0683036daaeef0f4c0eeb54b1201fe784eb2b3c1", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "61c78e731e69d72cf3c03f378a311981d606734a0021d8bf5ae4c6ad5ff0f0d6", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "f9923fc110cc72ff72905a51c06da6cfafe7ca486b2d44852570e39435727cea", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "987ac842d791532d69a40c05b7c8bf40b0ecdb92e7aec699ceea3bd7ac70624e", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "1cb22a4125d3a5c228c15ce1ccf5b4bfaf592b9c853e0ee266f9faa9a0a261ce", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "86ba6041ffd4b447c7642446e4a77039eebd9b8868e5a88eeab43f56d69f2767", -"T2B1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", -"T2B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "7d3656dce2f18eeb700ebd96852258b214971e2809283a35c30a06e1195463a1", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "4e0097f71f457b700158d57a04075a4534d657cc8584988e01a7ed0dbd64ef47", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "a930f2aadfd537ccea7b1c167cc36a64a2b7890d90e5f2dd7e64907213c74741", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "a930f2aadfd537ccea7b1c167cc36a64a2b7890d90e5f2dd7e64907213c74741", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "c945b406cc260a46333fd5d30264de83b52c3cd3adf5b36c9730529878e8542d", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "9f33332f39c3bde22e7190cd7a7f79a962566c3e8c9ec0ba27de79bffc7aa959", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "9f70bef2767cbf1de3102ea212ee4e6c09ba6cf86b397a7a8948a2e3485dde26", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "c945b406cc260a46333fd5d30264de83b52c3cd3adf5b36c9730529878e8542d", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "3fb283b3dbeef1ec7832e2e16998b5d0b78e40ac9dec808450caf0ad2612a05a", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "14b4e1cc7f8c5abf3e87049dc5188d62f226574912e100c82546a31853185b55", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", -"T2B1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "56154aa7779489200f8486d2dec258db0a6fe10fc75e18404d341e1c98d06824", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "a31b005a9abfe1c758d6846a2cf8fa9d3c7e4283da62d548d743eb7816ae3952", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "55525cb4f608163140e5d0935ee526a3e37ce99713178d84ece9610e351d490e", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5bb943081f18aad2a3af9f51da63df8434fbf86d072deffd94524a8a54b72e8d", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "240f5e7a87054de7908ea874b296fab76614d53143a07528485ec8bd21844a1a", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "c3564849e861cc11d1e7a7ce5426d490707051e1b9c215b5caca7caad1035441", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "f29bade035606dece3c0493fbbe3240d25c820862efe239a785c248a53d38ab8", -"T2B1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "150c8940b351409df45af26ad1e7c0fec4e3a0c38f04262e6582640c95681f0b", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "a5c8b15005c49a5d392dfaae3feac602029b78922c22ae92d894e3968657c419", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "72ee5a50a69c1ade795502fe0d0da343a56967ee2b4eeb5c8add4e880c792045", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "630353a90073337570089caf8d0a3a332f98aafcd109abe674416f0d3b1dc288", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "c32d3baaab3605e4ffc5162f7dc3a049ea0ad9352718fcd116f6b5da0aba0251", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f26d57a4642e71114bb6ccf712314e5b6abbd20c13f91dd5195c0fecf798e710", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "14c3284982aa4a17dfe634931e5c7f12bd79ab45b817b12c9f125b5133120e4c", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "df9805100286597f7e6f0ac63b9aa3d0b7d03803d54f0d7e53c4260be767f836", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "65f459017bf523e2e072f04d4f885f77a77e03b7710e228d80ad3b89662703ca", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "58501c6ba4af9663cb7c0a2fa34fa983893c3f82c3634af029c1a0986e68378a", -"T2B1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "ebb6dd9b0ce1a22234c61e9e15c5a1876cafc4e948f7637aca644ad5a8932bbe", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "3714a20c30a414b7dfd5f1bfd1134821267c5011919db27ebfa3dd2f3b5e6ea9", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "7fc274044e02d655ddc14c3584ec5bc991af2317bb7257b2d01a9a3890ecbad7", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7f09d857dbb13690f2195d6d1526284b3e12219f3628c44625ddfeb189a9d493", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "1a929023ba5ef4593cbc4db8329d707203f8c29f7b5f6bcd97d37d5e8221e5e7", -"T2B1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "7e9399fe119cfa0246244552e5751af64e4e0bb5624a40c5ba3206f6808c7731", -"T2B1_de_bitcoin-test_verifymessage.py::test_message_grs": "079405991d4a41c64e747d241c53cd877b9a713bac0f830639b628b47a2bac45", -"T2B1_de_bitcoin-test_verifymessage.py::test_message_long": "3f23a4abbfeac518c46d3bf984c639e483ea6cfb22184bef1617abbc3c29a7a5", -"T2B1_de_bitcoin-test_verifymessage.py::test_message_testnet": "9d8904b8bf95cd9d66d8beafece1fd54d8dc6e6d7d91178c99bc35e6202bb39e", -"T2B1_de_bitcoin-test_verifymessage.py::test_message_verify": "c7e0e90ecfb58cdc9e98f0781cc7303bc04f78765dfece92aa4fcdd83c97f7b6", -"T2B1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "ae8ee76c20cc12cf477eb73f1b1a089be09373763474a99f7e2ee93024de6cee", -"T2B1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "f685b8ed49d6fce061696ec5ecdfe07c3fd7a30e9d169a628075e30ddefbffec", -"T2B1_de_bitcoin-test_verifymessage.py::test_verify_utf": "496ae1e55b640b1846256f5373cb2b1e4265cbb5cc4588078fe17d2318bf05c0", -"T2B1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "e490b6d0a7859d07f18a1a5239d57bef6d5c2dedf01dea80098a4dd09f5174c5", -"T2B1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "257fc4b478d087ed2728e41f095683751c7e56ba0072a546ec1418ba3d495085", -"T2B1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "91bd30d54fc8fa9194e20dbcce58267560ca0cf0bbeedb3d7b6f29e5ce75c927", -"T2B1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "8ea784f11b001a6ae02c0ffa6fac85f025a293992f58de0aa9de17ed00f7174f", -"T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "418215f919a4287d1318fef4d3264e0c8685cf4ef8122106ce6553c505a70232", -"T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "5175846c7d4468e575faf30992e9b5fa5f5aa18dcb3d23fe3f949ad4a135c743", -"T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ce8762d01111784f27a0d1b4caa5e19fbd663a56cc34fc5494b4a2b6c2a5cbdf", -"T2B1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "db3c784afdf12012fd50d3a39e765dce8345a71e4b03d470e4923c8b1ce9eab6", -"T2B1_de_bitcoin-test_zcash.py::test_external_presigned": "b10849bd341489f6b484ed89b82139b2e753df1538854c466e7f67e4b46aaee0", -"T2B1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "730297d022acaed2b7cd9df0e7e3521a997333738e4696e76329d24a5dd08480", -"T2B1_de_bitcoin-test_zcash.py::test_spend_old_versions": "7d5d76c0fed4407bf01af1590c8db1a9b89e602b531ab70930f9e4bc5e7d271e", -"T2B1_de_bitcoin-test_zcash.py::test_v3_not_supported": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a55b6e7850f78227ebfc4ade739cd3c501e63d12216486e577222cc79214eb01", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "db9185058a8e73e67b6f7a6bfac4f4368db5ab4a60dca08d866ca7c8a8e575a8", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "f7716b74381d8ec784bc19277c00a98ab8476b90714696696f1c032cc51c7861", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "d37d474da3480be24f20ec9bcfda46b1626846503ad7c266c7eceb7ff1b339a6", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "9055dd7b306ae80775a340422d5e680f1ff02e7735d43cf61cde108c8bbf0bbd", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "88d93c582d8232afd07c5436faf33f31c1d8f9d112d96a98734e1f250a7a1223", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "49b33a3d3777cb8221fa8de4bf1e0ddaa2eec943a4caf050a9d23aa9a49f9a47", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da56777cb68977ed9ea25e6e6ab1725b5d8cbc38d199222df1f76cca982e42b2", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "75b6a3c7218af0adebc874259a465aad62cca10499e1b3dec9a72c970fd31d7d", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "5848457f8481adebb6ae1a93c57fb5ca14ddbd3dbf8198ff9e860c4ba11e5190", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "5e185c70afec0bf0c53bf26a8801340b2ed29cbf64ccb29f59f9d33464e74569", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "bf44583bbbcccfb436a4ad42e09d069456c499391a5b8eed8b11322f7949584b", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e75f5720615e33697125ff5956e8248a2ab7b97fde6818c039843095fc4bdd42", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "decacb1b5c7ef61dc9d445689fe74ce970177cbf5ff05e33ffae3d3fa2959508", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "556b3f23e4fe2dae0e77bf452ae8b7e80666caca2316f6dc1d5387fbd84735b9", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "a2efaba5c00f860f5bbba8c545c3fa1ed01feb31057d913d1fbab5b60a711438", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "e5ef1e9f7cf5cf392fae0cca4c479d7e458ef031295a290c523836504a76b946", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "2bf539ceeb5ed1c721dccf6d74537942b517ce21db6ccfd05fd151013634f1af", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f3ef8ff5b8e6ea05b0a9ef956d0ea26f6144fe4d0d5768a7b993a1a84e8d5287", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9dc9f1ee44d67f52b750bc88c647c6eb6ac095a7344c8cc7aaf78f0d8aedd362", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f32144eddd2b6eecaca057080b3eadd800be083deb02c871210fa963be94d9eb", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "3851dde657ebe31a27828e531718b04a6cd44d6c6dbd38ccbad4a73a78098b9c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8003df79cc5f8daefceba64c410db5fcf7c05c716461940dad4ced5d67f7f0d4", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "d35f1c670e08bd4c9585ad1dabe7733eba334bff6082b59701f266a1da36cbad", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "507c82f516ef15368479a0fb673b74be59f1bd896b3ab2090784a7cd31e0cae0", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "024c67af65eb7b788896414b21dc76692d008c10815b7dc62e021ff479e56d78", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "7c8807b244693f51cce06a350ddf1d903e0585656de542f4bdbac630bb8970c0", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "97e15f089060550a3602a21757f4aed728ef08cc4770abbf4f0ef8171e47ef6d", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "260a7a717f3fe3a7a83ef9f40ea950029c65c88143781978a3aafdd5064be424", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "5d2be5077edb89a5fea22133e9378d093a93277c9d6324f6106902487cbc3676", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "ac04a8ec6e61d130d5536c1137c3760d96b681b6aefbb7e324412c58dd189629", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "77427e1e241fdbfd27cefb04ea0cbd95d12fc4533780b388d885263d9098762a", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "dd6950bd93eb46f64d726e482b302187ee19fce77a7bdd2eed340f747f892e0d", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "cb118e86c33cce55370695713420331232ce8d6ee7fb07f3331872909440e9ef", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "8cab5b28da3dd109f5658ee8a9cad62bbb6c4fe0e2498e09c0457f33fa2761d7", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "e0fc33477358ecd4562343c15608a6ae4ce586018d10b6efe1d71e8003896a9b", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a0621c9655289043412538c04cafad9659f3d3877da64d064826dde49cdfdc05", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3140c515f1fdd091b93154ad75c9aae0ec3bf7ffae02be6988a8505a02cf97d8", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "198ff808cea21766233fa9bb0011f0813d8653b6b5a9a1d3ffb535babad5bab6", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "df752dd573e0d3cf4d7a507c41e6806bfa14e479b637360cfbe7c3b8c8374511", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "21f978512f65465183eef22d984e21becc6612e35df61048590be2b2a7e30f02", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "b4903a6252627146cdc74ae0e09e0f8be618cdf6d96cfc8018b3f4e339880b8c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "9c5dfaab73c812fce85232cef9c369885e68374bb21b03f1fa0cbb262b87c3c5", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "94c9e48cf7c1bb45dc4d0b0cde486b10abcd51648861eea0274b66c1a443ce9c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "e8f3d8b9d900f13bcfc99e7513381a793c2b15dc77d00f45abcb9c860de87493", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "2631ee630cc14b7df240a715d8087a66694e3e3dd0850a6a2584d89e70a89676", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "da36b10f7e23b075dfd714a0422834ab14190393891cda85f3e88271b2c7fe63", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "834878afb0df1c4e7442e5f675407dcb5b98c8a23eea1cf9a28512dddf4b3b1a", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "981fb5f68dee0109a032fd56af329bc937041f350f4b46c4ff3855ca17431150", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "4fbebd4f60f43729b46cc2a0416ae8381c5c53e3b0d0e2829a724db585fce95b", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "6bd6c1684e25e371cccd5255f37d6ecf5fadbbb66113f1f17661ae2cb890ca2e", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ffe2b1d9e809c212f76c5f78f12357133c7784f0fc8f3b95149d73e3fb155eb2", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "53d3f458a81657d7ccec81eac7a02759259f0396fa61268f962b224e19dad7c2", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "ad80974eb2753f6b2d0b2ec43d3d142ae8c18a3f8a3f1d7c465dfc0bb29c1194", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cc1658265a1700de40bc47ee2d2d08fcf97c13565b5e2f28e81decaa44bd94e7", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ebc04944a90023a242defd400a338ee602673631d140ba6b81201c9cf3dea0bd", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "9ede64518ab5fa026a7607d273867bc22af43d89014526a3acd4387e440a9d97", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "62f0718ec04f80526fa3199c4c18e779a77dcc8896abc3264cd896e44f9859f4", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "8378ac03173778226fe576bbd5e30fdabfe0b91a17b42fad881aee21d538fed3", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "2a8e61c451ef0575a7dcadfb5912557dcc1c079371eb0ab6c5cb4ff87f9f9aec", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "223ac056f114581005252340d7b3995f4abcfe673b10f931a6208d7e1a13fe0e", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "dc63eeea0e8629363085989c571abe63a033d414e42cc6b84099b3775a355b8c", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "1c5dd6086e3dc97863eae7698ea297c541c03b14eb06f5dd28b1b9dd9f779225", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "05ce713dea63631a5d16b3e090693784ef014c84a8b66117baf5b038a585594a", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "fdbba2de841f24cf10d276e2e39f8a75ae057021a2a4592b6c1599cd5497e3df", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "c0b645d8df800a89406ae1ea89ab170cb739678b06c9130edaf5b1376cf53374", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2dd94098fd8aa0d49019b98749aa71286a4800a5a35008cfdc8838da7f9d9d92", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "30da0cf81507d20244062d06bbd66831fefef3537456206c49916967eb184910", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "567956197357d1007235cca895fdf44d809d4040e84e31c86d148ab3abe18816", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "8ca9d3f6477663ef6fff087265c4ac22bfc685d8a2d912a8f1643cc10575e0f4", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "7bb8ced6b002b0fd9a990b027eb9c1f5183380cc36359a8a584577d8cfcb6708", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6e8b3bd738f3c0efad30970442442ec38599660c141baabfcea149e029a6ec13", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "956d8d3a3197eff4b506ed685f712c00a176fd6fc7cdb4970b9c8e044de1ae8b", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d7927839a8c6543837e2c573feb0760a139af0e30031eee2958e1fecb45e039f", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "cd06b142382abc1f27645976192e81c13ec4cfaf74885309161320af0f335a8d", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ac83f473fd6f61e3a10f73bf7536bf3fcd71b76c031d7c5b4ebb180ebdafc976", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "3845a640f1008f796cb06a4327046fc826e63eecef2a836d31b607f6f77afb07", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d3253cc61bba8c6d077f848004ef47068486fc28bd66c97a57c18f56859bb6a3", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "ecbd3a9eae199cf7cb4eeb4cefe97f2d637be91329aadd20557cc937d96924c5", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "43c77594f91a793d60e524a0a6d69f2872b2a42f267cfbd274e965db35203684", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "e870d0c0cf5d56e3cce973c0319fb7f48b6b95d7fc4402d80e64e58dc3017636", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "aa6b933b44210daf1277b34bf3b545c8dbb3f010b1dfe38d3a41402b192ab284", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "0ff26a5b8e3d2792641387617c76275e6b54f232eaa45193b2fe99077c442dae", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "8abe04cc70c705a7e53c154e70efc431e28d2d193009f01d20b1b549f3e78d27", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7b37ab10b94d9d3c5944b549919646bdd70c1584244f99f52fe7622e220aede8", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "a0d1c639a0af9d5a5f4d97c3af2378c1cedf0ba950456a941a9dcef785e95dee", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9c77f6ef939581a6e0ecf521b920127da495ba1be6ff0fa345cfd8f2a5c3f089", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "143147c69b90a3bb11122e32487542c4640d850b8e5f73bddaa56b7bada625a9", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "18d9ee4efd73d95e03ba3111fa7d86ce2cd73ef1a76764c43603d7c13700dd7b", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f3ffc4a632f3b5ebce7708cc3bbdbaebfd5291086ff61d9bfc7bff406373b046", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "63adea0570f2aceeb33b8167a3ce50399084698ce9b003241fe3755d9dd3ec26", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "12b22dc47c4f1d41b877154073aa5810e085ed7cc412a5f06c4b66c794ed13cb", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "fefa0a79d2263680c44c39627ee51abbed6a5a948bfc52efe86ea6545381e105", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "650aa7880bb3e646a4af70f48b98051f802e9186654ac16cf4e74d2f211362af", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "6f6ea6325e11668f3d66066ebd6a9eb281988daccdc58e39aafa899ac3d69a52", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4183deef534c63d86586c1cd1d385b23486b74b05c05252949b1c5720125a93e", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "cc3f5e08f3614f45ba58f626b7c3d14cae50ca816224191ff732209c6289416e", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "81a6f194bc4bd26793ba8377069b9ed5566edeb2b2f1157629caf381e85dba72", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "27fd355aba4c87c1a57c0c9f2b48049c1a5bc1d126f8c38a658f06c604081fa4", -"T2B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "61f88bd6967903d3147a72e9fc824b0c396f3b187c8bcb61d878efe565a25481", -"T2B1_de_cardano-test_derivations.py::test_bad_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_cardano-test_derivations.py::test_ledger_available_always": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "47cac621e1449ebf14fffd03cf1e3e02545594df112ebc6e8674f90c98c6d4b0", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0412105001bbd6e643ade3567afdd62dc8dd4c7c2ea13bf409dc4b9a5e4482b0", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4912a92e27f66923117250bde4e1a0ffec4621a33af07cd5a3117cffff9e29ae", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "b1cf09f2c945a94ab46e5140a1711f68fde94ccc38b5a90f0d0c37c5a0aa34d4", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "15673e49bb339a6b0103c19c3cbb562fad8d80cc97992a37b2288f6578ca2574", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "3ca60b73770ae4deb947aea74c4566f11adfc2f650fb94267fe80431eca41409", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "dca6b2b09dd19095130f9873d60ff4773f015fae81b4ec5e025e2522503e7e37", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "526d044be5409d67cae44faa499df69cc36b53e366deda4666b66a118efc5255", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "ab8586d47f1fcfa07e50edf2be939f5da85971add78fdbd4514db09bc25d040f", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "a8df688458a24c366f3253b1f02effb134956a216698b489adf1825e068e5112", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "d44e4421a89e225c8be930f26e495c12844ea06c88063aae4265d3382061fd13", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cde6c3f473d9ee85ba4e0e73ba39c4a0d6b27d441c7fea56ce22df2c61067a84", -"T2B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "7357c78e8516fd29bcd999cec5b307ae78734b239f07ba31531f67aeac99a20c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "f94292c44e520436a40b295633746a9b3936a98e5a25629c9d71f84c7ab556ac", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "876dc5c6a1b2c434bb180f87be8de89a251f23618da482ebceee98de31be9605", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "271c851ca533c6ada40cdcc2c34e2189cfca78dd1d19e824fd06c8cec0b6e793", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "945f3226a9fd56ce04740f710e9dd69185f100db63e0adbea22440e518b72364", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c6436a7c6956c21bcdc5f981e2a5f0904b692e87be314880ad599f9e796e66ef", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "2fd0168a9c616997bf454ff78f34ba19e977696073ea9832a0fc1571f10a8e31", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "43d6ee6ed24961dfa604f0102738d873a2d59eaa39c6fea511010f03d4d2ace1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "5dbfd14efcafc190f06ddd5461db1f89b5e1cdce040d879b4c899ca9aa7a68c2", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "6d32d611be5e7f1a13172ff98db391680bbe19f5e588c14ffed2d2b8bcf14e56", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "946bc1851692115ab940647d2e1f92599440836cf20cdd4bf6f6beafe9b6c87a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "cbe2b85ab717e87af4b8f37d1b141b85ba6cde34790a5c3af7443d9f337d8cf4", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "023488fa9cd2495dab22f5482f0aa406cee9ca7310a11ac49c873545a922395a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "023488fa9cd2495dab22f5482f0aa406cee9ca7310a11ac49c873545a922395a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "dc7d1e514967bae748c5521dc1e07b9d556919862fb9987b1b426c203502cf32", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e6098fb33cd40969d7a69669924bfad2304124a834cf4dd6b0df30f7e36d727c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a717d4d92b7fcf481b6b0a6b73b1e6b814e4e5a37861b21e646b25b6f3964145", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "4caf0f2cd36edb32d3ef29562c17798005d717a3d83c9882a322e16337d96003", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0036f9a9273d0d17fbdb9fe56ecdbd4a74ec3b7e4950fd1e1a455ec8e8378fa6", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "2117531d61e165e1fcf4353ceac9e61c501e68618eaf741f2baab5b0837bf13d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "4605a7048ae25daa9902e6361871182a26e38dee5de560809828809edbb7ac26", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "696a72d6fcc6a888c1061527f235d837ce82f76460a385ac18e08a86598c47ef", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0036f9a9273d0d17fbdb9fe56ecdbd4a74ec3b7e4950fd1e1a455ec8e8378fa6", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cfbdd9f87bfd5d9e7847ad98415e026d1061f2db984692926b19dc5741595056", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "9928d08cf4aa91f5490dcbdc431d6b2d2f3b88dee5df01997a6dd188f1091ff8", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "42b86d4b1fba41037a6a7e15ba4a41e4ee1ef240ae3661bc9d763304987f392a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "25032ca0dd01421253c35804f93e2eaf87e939e491f1cb31c2e617b44f965a2a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1eaafe60662617f609c25272b0e17a05593aa4024340c9dc49da7e5f2effa840", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "104314fbb659433cc6c8a4e2e0f2019a008df566a0030665df9759a7473a82c9", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "b1903e24c4e44c48b86dea0fd4dbe2b79e25e497c1e6be7df4df3ddd2320f8de", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "e01a12a30181e7df890595504e8aa8b417976da7fb479e24a16f6c64343d11dc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "c9b781b91eba62d0eea25d1eb7b62d1340c82c0e55775b444d8a9357f845eccb", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "691d5868897691d2572ccc20a3956d3ca5d990c2b806f8f14c62baf16b41355e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "4538ed84977b90319321d1478baaa240d1bdf60300ebea65e1a112bf352b3af1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "5eef8431a96a65eed409e5e31dc31717a3faca68bd2a46622a6387235bf1073e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "95ea8204bdbbb193f1807b8770f45b447c377d1dc5e2fcb0b46f5c643534fdce", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "b18ebca699ffc0c7139bb1bba2f3c0bd725b19e28717cda2e5fafa028e78ec6b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "a803318a9fa4dd95fa536abd53e8cf164b8267e4d7613c43feb5743a84c3aa26", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "085c8281b8e6a7a05ce9680f68e045bb03c1610ba5fdfcdb2d2c63828af8bb43", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2a40352a5c1d826b4b6ed5371d2fa87f53e6fd86d9415ada7770b47c687af216", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "ef43eac6c2477746c2a659d14e8115245a8e07ba267b9e5ba37f729585145be2", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "76d3675877aca68a92885fddac9863100792069adaa4030842f9837d552190da", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "46f47b660deef9361c8550326f00abd3f30a12fe4558b09587016eebe0440e54", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "7ea9d238318c095ac9ffa198d8e2d5554d91f85b12a84a9d3191f2e40ce36969", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "2014596dcadcfb27199028183dded55a4c71bdbec0d81af00bfdb6f7e05846cf", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "4b86e893f6e05de25855621ad768b9ab6d1255387c836dfc2de79cbfb87ac7f1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "4285dc29975205fbbd786f0f577c3fa06b2dc498dc096ca61db8932c21b79915", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "37c44fe9cc5daafc3c19e69dad687ad77924ff5c2337a314259acb2b81d7afef", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "a4f029287528b9bf24ecca5aeb3d709581792883681839ccf883f9f191150c17", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "83e7943c837980e236949e1c3823c1d0b63971cb6a1f521fddd0405aee4a18f2", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "fde224416a6992de7a6147e45d85158317611bb29a0b970b193ac22fddc8cca4", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2c49ad7c947b84d93152704308af013a63ef19efdd094d1eb31f908df5eb32e0", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "c3b75948f1fb881fa299cfe86018a71f0743168001736625eaf5005305460dfb", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "8941cca5e7afc6651623390c94eaaa86bfb90e802ce706c4f59eb67de37e61ad", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "485b75baee329b0a1e752af25a3ce02a88e11cbb251749f8eba10ca2978ed334", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b3b428b5a8ae7934f37d9a3972f3c0c0b55ca182ec5410be0f33751ef854da82", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "9f43f19d83e1f9ed3a7072305dc3eeba8c4f8146d8b5ca859d7f08390807a2c2", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c97e226163159fe09019d9eaf88687b0ee94dab1eb325024d0fde64bd5351c4c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "60a9d9ac4ebb9f6e0057e2ad2e34f61c0f09e8e38ee178c34458e0f28d6a1720", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0f7fbbfb16cb77cae760072b23ddab0b1799c2b6fbf3df1e85a3a5a710de18db", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a677a31ef5db9daaa73ca755a4b69f374565529101266afd199f2cc1f8784c78", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "ed0c82a62d6dcebeba185d8dbe78ced56d43e389b1f94be56b36253a845d10ee", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "1ae03d74e2b34e2a4a9d162162bd7e943303a596b749445f904a9bf20e034cf0", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "d0b20a72e6fa2034f4f17e9c7027e71c4009d9a883bae8cdb239c282e242ebb5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "1aae66d84744d99f4e28b50dd33401ef18537aeebed098fc08d0b12ac7289630", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7dd23e53757333064984ac2354624e41e9d07f17eb90e18f07f8b91718679d50", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ac8f6736cf2dedf2cd6125525a4bc7a72a4b3a07528d52ac82021819da900ce6", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "847626414548beb2c73bf702e0238b40ebd9577cbe6f161bfce15ab6a5e393d8", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "52645db2138b15ec5eb6bdd813b81fbee4c9ce2ffa4a023bf4162ffae5239d13", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4da2689d5ac33ab6ee4a60a70b75f07b5c0be98cd6362d4a8fcc2830e5e5a4da", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4f83cc5158e035cb1b611bd19eb09d7296832846eb0cdde6a6b57c2c6d208d19", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "503072788c5bd3a575809acb3cc26e7488d20a3f9d2e6a445bd440cde433ffe1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "789c20eee409a0634eac71baae437f474e8c7cd1b1454fd5707b90750e121ff1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "a7f414281706a3593b1fedc3947d0a3af3b0065776bc9e94db2397ffa828bc5c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "ac2c59f04e97a0a3cb01a4560503d5d45594a1d55facb5506a891f44fec4d529", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "ac2c59f04e97a0a3cb01a4560503d5d45594a1d55facb5506a891f44fec4d529", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c92b7ad08baa6c60c94ae28fb5e709e43b10300dc7d31c2ee629d80f9150b08f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "0c9be01ee21b6588c03bc1fb8a74053d653faebbb3c4a1fddc14603d80cf7ad4", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b779c995dfe4e0a140e1f5bdc8cbb66bbab3e31affe680016208728f48216515", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "96f92a6e46ae74f69fad69e83cadf0f115007aeb76825d6da37bf78b7f3e0c9a", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "cc08e4c2f1ddc5dd5598b755f7d06b5ef10e9fd61bb5b66870f821a8db2fb9eb", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "98a7c56184392352ff6a286cd75be24ce5f4222cdf40620074c5ba6170b50247", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3f207042c59125255aeab0834a7d41d0c605f17be1b39a0ba4a4e6f2cabec47d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "bc641080a0e509784bbbbf81fdeec9be67295f71a5c24f4d96c6e93bee003b4c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9dac354127d04ed43ef19209a9b3f8ffe5179e5d949b673449457766009c2966", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "ffe21eb8f726c7baf3e65cfc7266aa0941d07d6630cdbb01f52266d2aa5d9319", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "f94292c44e520436a40b295633746a9b3936a98e5a25629c9d71f84c7ab556ac", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "43d6ee6ed24961dfa604f0102738d873a2d59eaa39c6fea511010f03d4d2ace1", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "c4b5bba8f0cad7ea0a4fe5909f655ac2c3481958ff5052fad124d83c46eccee2", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "ebeea67e7ff22aecbba5622ab5bf640fe7474afd7bd8aedc72aa8f4fb732e255", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e830882567c10161997548cac777e02511316a2986f213b7ad7d2d9512e2fbc6", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "647d956421908a457e29a641fd2e718b3a587c80f891913ebb5cdd17c7a35f0f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "3e05c1a3f1b9b6b56205a6e7283b66291045642961a1917b2f3d423690273436", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "77bb38a45b3d1819821d00215a745fcb163fbabdd027a731605e21e413978d49", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "6e99cb4e939b684724e63077ede331fd0c17be04839581e7de628c757ec9a775", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "3e05c1a3f1b9b6b56205a6e7283b66291045642961a1917b2f3d423690273436", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d97348a9f6d2c920fde06cc2e688dd65a799aa4d680026467525e4bd8f238d13", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "07f2a02d438df8d5c2adace78928dd5f60e6a9b5d049046d33f7c0af688e4307", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "836a7d09c2b128ca18f96e7daef85bada5c903aed8b5f7549cc0bcebe1e6a83c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "7f7df52d14ef9fd1081a9491305068ed0a6a81448f43d37740ce54fb77a48b6c", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "d72c6a43ded19bd59bc85761c8ae21fe50972f4887253aba3c14321992ae7889", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "a1fab66c62ed2d9ff6fe9cd627a7ebd5cdc8bf398a663d9c9de6ac1478c29124", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "86af58942e1b2d6b4364ea35cae23030a9f6631cb6a1d135e285d6eb188202f0", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "cd745fe91aa49ea7ce07d76f1a257195bbdef660c7086b5eeeb0fb3c3739b4c7", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "2af2747edc216b022244d5d5997c742a4f449e0373423b331d39f4e65238e617", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a71d4f62106e87104a5e66542d492c9c2c928be67171c80f264a3878792d32f8", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1902ed43f92423434538868511a021f50c7ec4809b4afca56db501eea9c222ba", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "66fdccb6664b5909d98767802b35e6edf0032f3672019584fbe49da8e8d73609", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a5891b34be4ebde96d4e8a61693e24c01e66c25a9bc65898c486ffe4ab03a319", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "d6613815f4a0f89ba4322094e86e1b4a2a0ef64fe24c63ed3e103f942553254d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c1602964914416a7ae5a12792e48562fc4b02f813c38bd698766305d5c18084d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "fe3734d93dabd44c27334085b551eeb496efbd168e82a3fa7e8fb0dad43e0322", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "c3653af3915094c6b6fcca2370df7e0ebaf7df820c8a65b9c1c9e6d450c718d7", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "5353220c99147dd4574599bd41b27af93f9aed04ec80b57c5fdf16966d4d45a2", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "62a01d84691efa84719b008b55f2d13995c296d952fe0560efb5a8931a43baf3", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "63054643058196dea6265a610639e72f7bc22d239de62774f66f597cf3979197", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "1dfe41b09e0dc74dd8e9d31e7c635b1ec4420fb039de5bf340c022f79ab94601", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "c4008d450c5c2cac1844db5f092d0bae80a0b90f1d9304353197535589e2b692", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "b9d69a4cb33d0d8d458404b4ff869d530b6a9d9860d74faa18ba4ff523cba77d", -"T2B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "c64a1eabf34d79466c52bb5e7792995716dfc426402029cf54ee34bcd6526732", -"T2B1_de_ethereum-test_definitions.py::test_builtin": "63c1e6e59ccce62fc1fe86236c096c01d57af2a179b0c765a4efca5a94096c65", -"T2B1_de_ethereum-test_definitions.py::test_builtin_token": "055e1068571b64e57e7da15225504b41fa11638e74fe5d2f135a497dd36e378d", -"T2B1_de_ethereum-test_definitions.py::test_chain_id_allowed": "c32570499e812a1b47aaac857779fc5fa90279643847236c3db947d7bcd44cf3", -"T2B1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "63c77625f7eb7e50c78bb5572c5bf7fe7c1dc960deb34e108820e81036497f41", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "b1ad70e4a32a8e93ab51cdd7ca695c9b6269cf31b524c12db51f092744b37196", -"T2B1_de_ethereum-test_definitions.py::test_external_chain_without_token": "68d7337ef7531ed0f3479e811407f1f69371f8bac5845bb68146272d44318a91", -"T2B1_de_ethereum-test_definitions.py::test_external_token": "f1e7bcd4e3c4cf8176cfc04300356e208bec22d922edb86b1d6a64272546da81", -"T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ec1cb04940385206c4005cdb541bb79519341da1066ea83686053a199795b06a", -"T2B1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "bdc811f599caf12b51e515e0cec9165d5b9fdbf35a8408f53a5eb1e75379ee00", -"T2B1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "a4b139055ac45e8f642a947e09623f34bfd144d4ff996782a688a69b91044016", -"T2B1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "34ab817426b1a7815de6071eda224ba16c1b459cf40c4ddd1c29d07f4a0b95c9", -"T2B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_slip44_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions.py::test_slip44_external": "703f27d12069d385c506bc9ce069c1620b99759926bb63103ed36eabdeabaae5", -"T2B1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_bad_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_bad_type": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_missing_signature": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_outdated": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_short_message": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "887c3597b0a2cd49937181f2521a0b8bf3f7bff9fe12b0f58174abc6848f7ebc", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d5ca680177b0623b46e2e639c9cd53c24ca28b51e3fe0b7a94494d3b7062f2e1", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "5fb38353017fe6bb8b65b8e58ea959ad645e3c8106a52993dd725c07a35344ab", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "7df72fda613a98b6e2fc52e65dedd2d58b5545da3b5e51b262fc0a9a911f07c1", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3c3253ebf50d40eeea49c48c96e2452ccd8af230f59cebb23859f431515b2f5f", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "4554d9ffc3bbd834be2343ff02d6d4bc67ee9bbd04ac283a2f8863f53a61b585", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "cf132fa0c1e122cb7f25a8a6e7fcbe108427711232a27cdeae72c0f4292609b3", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "03eef65a9fbf11540f53e2520f3ff1f4fafe29ac5dba6f6ba41d8b0cdf1003ba", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "eb81bb4554b863bc656e23cb629ae22df0046b9457e1058c5f0d053c510cdec0", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f25f49d498407d5b3e71c3e14b40dc0e06c4f3a77ba0a1ffd9ac2ff717120189", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "5155c70110e819082e8e4d48afc50e70b1c15e690d433576a84dfe8c6a08a802", -"T2B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9df410d64a8ed999547d9c0f2d5b22dcd586aafda1ea3b8539600b7ace0bafee", -"T2B1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "af0ded0d903678e379b68870b50869711a256d3da36389b0b68e505c6ed70ce6", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "b975a183823dcb4f78aa6a43d7da87baf7e66b8a013fe08e0210a813af251fb7", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "d625c8d5d401692723bef469c1c7e41fc6d39169a0d867906a8ae0136da51e90", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f7d5e6aebbf2909b5635ea71d8f6ff33f6aa4134521aeec3aa9fc7fc52df0105", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8e166dfd79d501cd8025bf37c078e944948c00277016e640be6599f5663925f8", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e62d0ad874983386a951b659221f82aef873cc3f576fb4b11a69841585d7865a", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "d625c8d5d401692723bef469c1c7e41fc6d39169a0d867906a8ae0136da51e90", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "d625c8d5d401692723bef469c1c7e41fc6d39169a0d867906a8ae0136da51e90", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "d625c8d5d401692723bef469c1c7e41fc6d39169a0d867906a8ae0136da51e90", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5c5b5c219b69f7e97d7349f5007b0ba71a3a303befe2d1ed7042fd8c791fff3b", -"T2B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "ff222baac1ac666b8b77a5d774e4a5262731465f0fa31afad0324ac10202f689", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5dc79641896b71cbd11290b423c4e38190e46966cd4362b5ffba886fd3c30697", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "8d7d4717df3a6a76c4e5fa11122f8a3ca2b78722a46317e074bde9529468db64", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "57a141ed21347c420b1cdedda7b765ab62def6a668f040773a2dfe9c7a437994", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "89c9a9f6a319606ec3ed3da4fed034db22c150146883642c02c96d15ec8ec393", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ebd08a3794c1befd01328a9060ce703676ba4fcd6db3142aaf226edf75217c66", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "127bcb28245e7e1bb92c33f922dceda042a5340840eff01c76d1135476bc3fe5", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "47a2c606e5ce987f951220bf4de3472222c1f5d0202a25d13abb65f439387f4c", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "6c40c7e609e814f6b6dc42f9e1fc51afca8abe82e016c83d0f00cb3250d5cfad", -"T2B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "697d7c2f21edd48c8bceb23a5307d1a43708a467c8dd7fea054c7ea0db8ad6b0", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "6dc8fb1223b369913eaeb92d34fd2fb45baff029cde06e71e5823d5819ea9b75", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "355f047c929422bac38d9954d904b38dbbbdf0b6d673b88ec795e9f8f2231459", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "9763874d9f6244ccb9060575d2668f2d05e16bbd1502bba49fc44ae0ece758b7", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "5850bd194567d9a0242ee8cdabc91cfb602ef503e9fdc8d8a0e5de1b5c27713e", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "9641e0219225df426f8641d7c15d07f1c8bf07efe426bf38df20fcea81319cd4", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "71ddb159d5e81c81cf10038aad83b0c1add739bce65697914fc4e339768420a7", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6b58c573450e9c2b451910185871901dd1d6c6a4463e1ef68459e398a2ded184", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "f2ed1a6bd10ad8559bc9db96fb841584447c31e8f1579bc447ac28021a828dc0", -"T2B1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "6dc8fb1223b369913eaeb92d34fd2fb45baff029cde06e71e5823d5819ea9b75", -"T2B1_de_ethereum-test_signtx.py::test_data_streaming": "1e3539ac7f626bc8bad3099cdb1ec443e6fe76ff34ed903f96e3ca07eefc12a3", -"T2B1_de_ethereum-test_signtx.py::test_sanity_checks": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "20a1eaaf8f27fc5e4bf854a0c2f136b12d97f1c6abe3b686ee39cbe60a61e8c9", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "53a3aca737c843cdbef9e3eda6f6b09d468162cbe3b1846af23c7b4be7a60046", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "92a9a0a8bd6d214ebb3d5b44e4b05e9fa6f6e0fe97817d5023e20e67b475dfc2", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "53a3aca737c843cdbef9e3eda6f6b09d468162cbe3b1846af23c7b4be7a60046", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "f4fb7992803186f5a687afb0ddaea574abe8ad8abfb37554769d21a46d3d759d", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "e91e152edf4f794129f216c0c4115e23a6d078fc67f877bda44787a9d45ff9a7", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4d7717de3d88fc07f484289f1cbaa5698613ca93aeef10f594d0c533c11aee6d", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "28bf07a0b1fc4b098dcdfe51cfc0f0073696b02d191ef170b975a2ae708ac2ce", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "b42296983510e53fbf1deb2898303ac39044aeb3d9b64ba8e6ec5c3880329bdb", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "dfb669d3dcb2c6cebd8c7af4cdd5279a8ff5ebf9e85f5adce794a787292917d6", -"T2B1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9c56b8427e056b9e16f52c730c3eb78dfc1c0b2de3d55142fcbd0cc3602a619a", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "5303e46d0902d376b26d225f98aca8f0ebfbd17cab2a706a089de54a627b916b", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "7d516ed2cfa85e25cf239f7304e521a20acac7d7a897a1f440ff8f0680179d5d", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "43cd9e8631ab0fba28974e4bf021b2e43ff86786df239c6fcfbd5b26a4ffc574", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "7d516ed2cfa85e25cf239f7304e521a20acac7d7a897a1f440ff8f0680179d5d", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "c655d608604a2ae2f7d3583688830bab10a99335d1e2c0b87c6b9a1568c4d7a6", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "712c2c4081e6da86fd499c80ded1eef57cd7298bd15faa15d86ef1d9bd11fc9d", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "626a69d87ad0759ccecd71acda96f264a2af114334a28d56167867b0062a4a3c", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "28bf07a0b1fc4b098dcdfe51cfc0f0073696b02d191ef170b975a2ae708ac2ce", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "cb8fae3788f7822476c1a7c735f07e6d89e7a2024ee91cffcf71a8db9301a325", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6da2e9e996eb520d61bab528bfde56942050f157ee02bc70cf4eb91e81823324", -"T2B1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "df787a2cb0eca960a87783f24c2c8e66d32f2eb2b3c56f1eb2c33c38166e00da", -"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "2163d99d3e0446d1cc951a0ac433eac709197f4cbdc9f1aaf0b3071582b99bdb", -"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "781664db14e071968be75bdbbaf75d5b5ac891a714ea463e8203f2ee6de864f0", -"T2B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2e7e6be5450280282aeaf3aa092a65f78f8b199962ae564bdabb2e53c2a1d3f2", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "bc65d96ff63e82f5e49c4130996fe969a920f7f7eccf2780c787b22f2c1e0055", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "8368fce4ea62f70fe0b8c0bb83ac428f0e06da00580201fb472efef369adaede", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2a45fab53b4ac367f71afc7cfe5d9690d84e092edac79bec871cf3f2a1d93868", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "0891ea128901e2f10d91e077d393daae5989f2bdc3dc97dda7eb8c5a50ba2062", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "8791cddafa4adb12d5eb67231a9bd356cc33af116d864d76db15b07a51801b94", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "c454e49bc2da978322685e845f887eac7739035172fa9f5947423fc93835247c", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "bc65d96ff63e82f5e49c4130996fe969a920f7f7eccf2780c787b22f2c1e0055", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "68168b8ca03503e32ad94d4c2b6af185bbb1148692e57212eac0f387f2c47a30", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "5e0d2ff8e7d3fceac2aec5dc0fa58189f6837ccdc4b38f24370911e521d997e7", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "fa0adad426b459335d810ec1889f3949d925baa049c61e51190f064e85e01c5e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "27399e0a0ae6b1bce7c902867204728f1434d08e27dc0121f791c049307231b4", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7dfc1b9f0dc51020785572e76b745302f85f2fb495f4ba39981d0b0af786ed00", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "472024ebc644c172c801824cd3d1da3bf884e219d44cf90a8f95e19e3263f3e0", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "68168b8ca03503e32ad94d4c2b6af185bbb1148692e57212eac0f387f2c47a30", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "4c153a9c26fb4cb91c59ad3c45025e544c9ae1c48a631e5fd09a54793ae5cabb", -"T2B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "4c153a9c26fb4cb91c59ad3c45025e544c9ae1c48a631e5fd09a54793ae5cabb", -"T2B1_de_ethereum-test_signtx.py::test_signtx_fee_info": "7555d75e0afea2fd72369f481964d3ee8ac6b02f9055bcef66447a667afba156", -"T2B1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "de0303f303b80539a70056d5bdb5edcdc041d3f15d306a24ab15e1790e2aa25e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "dad64798f100baceff24557aff8ba5e76cfb83ed292e047aadc1457212a7d543", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e9ca75bbe4c552e336f673531d51ed8691dc0003a628a8bcb5eaca3ab053eb4a", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "ee25956cd5947f1ac34b72439078665cb89aff9e9750565679888fbf489d3e81", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3538cab3f6fc88a3a5f2c09e0a3406365ca839fc2013b323bcd5474c7034e4a0", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "04030db3465df74f33d5580fd7e008cafb8adb96984aeb2f5b13f06dad15e483", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "646f1eb2aa176c31e0a7a4890449da51a9ab4b048c00458d0ea169ceb72b8e02", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "eef1c32d69be4771c42e13a8c8ac150879841883482ab477a33a27578ed6b95e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "50762a5365428da2987e595d1425693700f5195599d28a18c920f747a6db602e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "098945029bad82144a7fbc57cadc98b1985b7349f5d7cbc065cf67e6423e1be8", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "1ec2c761bff4c9c0aba9c0274d2f3b871ed6f0a0eb213298746ce82c24cbc73f", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "9c1831944bbe0b0fcc6e5c52354123c323d573985138654faac39345286f8882", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "a0ba3e8a346198e341ab9c75415211e57bca2093b71986ec65947054981f10f8", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "7d9e1dc760774637a803816e1485edc1ace1801df6d88174b506808fbbc94cb6", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "7d9e1dc760774637a803816e1485edc1ace1801df6d88174b506808fbbc94cb6", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "8e7aecf04dc7c5df0ccf1851b67a10540505a0c7e211d36cab4516c003b258c0", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "8e7aecf04dc7c5df0ccf1851b67a10540505a0c7e211d36cab4516c003b258c0", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", -"T2B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", -"T2B1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "80f26d847f817759a03dab25b427fc18d71f077e63bab70888f82e7ee287d801", -"T2B1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "20041259f3b47fa3e429be139b92a0d2b11c8e075289715341744dd919d011ce", -"T2B1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "f31e0fc2be5d30c21276d4770c11141dbe3eac0b3db225d0df74a62755ee670e", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[128]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[129]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[16]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[17]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[1]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[20]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[21]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[256]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[257]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[32]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[33]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[3]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[4]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[512]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[513]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[5]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[64]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[65]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[8]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_getentropy.py::test_entropy[9]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T2B1_de_misc-test_msg_signidentity.py::test_sign": "af82790f30fc9ba49c299cffb55ed8d4bb44fb518c7ef43e809737fd93b34eda", -"T2B1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "882321821420e4fc091157b8d7b5421d7c82bdec473175a66b139bf201bfc383", -"T2B1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "4d46e3b6c2b79f606149c91160deb12e78cfe5672fdceaec72105efec83e2943", -"T2B1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "24ede7634b5341f8aa33737206e9bc9ce934e05992c7806dcdc9ecb9077dfee3", -"T2B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "b758fc4fc71eccf2ddebc5271960ca3ec202db8f967ca4202fce497050973763", -"T2B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "d6dec70132774f1c4c974115cbeaefe89c4396fc7f9851b3412fe67295acbe24", -"T2B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "a89c0eefac55211b6ab03d0c1f12bb628a9a14061c328d1134a7187dcea570bd", -"T2B1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "6100e4b473d1bd1b86ab6bd39387d4ff86c446844b8c554f3a12ebc8f5ae43a4", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "92043343dcf28c950425653f20c71b8c9cb9d762a75562be468deb187b01f3ea", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5f83323305b74986e281b12554992b56db91e32bf902a59eedc344b6ef6169cd", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ac046074538509280086267cca0b7b4ee1555e6eb299e0ea1baf24990d75985b", -"T2B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "778458adb43a21a3c48f57134d6ed47d6ea52704d73baab0c8fb8f35235d7f2f", -"T2B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bf08e17df613e761aa7d4e5f0ed3957167a22746392a830f8ba740fab1e17a0a", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c40d392b79520a91b10a8cc50ecd7f44d89f855436b7c55a17227f4289420b8e", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "257bc02e5a923528fea2dd3b95897bbfaedcc27a1b535a3409914b813aa80d31", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d84f008377ae383afe86b4858b9ebd19796a85ce039da960b54d7370eb52d004", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d126b61e55f3c4fc8c900dc4503c0206c5513e9940ce9cb083542e8c76fe2387", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7d531b9197df19026728eb0064b3395f1e4c24ad993e97438aed31bac859ea6f", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3d0dcff356f3408434527fc3b51993c80070a6d735cdf8cb53a6ba85b0b22c97", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e300bd53cef49d094f1af99ce8a81fc59cebbf5d6f85731a5ff500b17f0ba8ee", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3d0dcff356f3408434527fc3b51993c80070a6d735cdf8cb53a6ba85b0b22c97", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e300bd53cef49d094f1af99ce8a81fc59cebbf5d6f85731a5ff500b17f0ba8ee", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "bf96b94f26c0fc399941e7523dd5cb533b813e1795bea695c090ba66c4e1ba10", -"T2B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "e577a4feacfa10f0b994ea7e215bf0bf292f52951837350060d829864da2127d", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9f9b88d887a1ac36b239f2cf902449c381d3cbcafaba6565a5d9c813caf96fe6", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c40d392b79520a91b10a8cc50ecd7f44d89f855436b7c55a17227f4289420b8e", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "7ed46540113c3c3dc183cce4a2b8564a1f7ec4807aeb428402957a423ff09476", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "24d8e26d2f91b56f6c8629513c417cdc018371aa5a8b6e467d68fb37c5eb91df", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "0bf5ccc67667bf33e0b2e3d224fd9ed692274b707b866e7945e7029cdc6d5a6a", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b75e26bd68b3bd22ff66d52fe0bbf463d8c32a6caf5b61a3b83d34f45d234b6f", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "54ac93693560f02b6c3bfdec10fdc4d7c5d95cb288f4dbff6112331d156f6268", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2620f83ca64916920e4ef8c5fff42c9fcee4c75437c1dcc6ea61ac04b40c8441", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "0a4dd371e17c9229d6810f1135943f5f7b180aeef1e27a807d79970254d6d7ac", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a15bdefaa80abe1a6bcbd4def8a8d226e7b1d7b55760d63ce4c118c1b575ac54", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "63d2b777871b20b93b769eb351aef7f90603de03b9755763379a6b3c3675df72", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f75ebc8573f12189a4cf31e3ed48b68557be4e015292ed6ba982786d571b029b", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "748a574fdd48f7c82332dfcd4fd02fa426cf9c51a79ee4349c484bec571b1b64", -"T2B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "088b0d447c785d0ff38f87e4ea51dc0d78e9eee9b06abe45b0fc3bfe3d988c45", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a9007522ef016ac22e32aa6f1ffca588909e6d9be5e388cf63837dd83afbca37", -"T2B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fcc9ebcaf8fe994276f9f3775fa21edd9931f296db50ccc023aa8bf5f3a64144", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "3129105763168b401b28feda3831a4b0272b653929c2cb9d044568a131df5e24", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c8b34b277a423da55b46dadbb0f8e8a62135223f198bb4e739c9e62f1b56dde0", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "44fb0dcdcadf28eb3bb71243f46e22fa25892208949b3e6305a8426c76631fde", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "28f835261969f4466aad2121c94ae5cbd8ef328ee32505b8a1c200765a08d89b", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f05968cf2b602a3d230acb7340c65016fd37a4420ed46b4c03743405794416a0", -"T2B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "78977bfddab2b271e60161993f071f31a317bb59a62ecd4b7a9b295923eaa107", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9ecd4c00fc84e6fe6617cef2aa0d258ae1c332133b1df33df7a1f6feea30e465", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "06d6a6cace3c49d8a621b949cbb3369911a9b600957f5daab68330f6cce50332", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b017a195135d9863a2a7eab808bc3101aee726653e936a55ff39d94b583b8fe3", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75e232300b41d02788bfe7942637a66519b7e67f00129eaa35af5585d4021247", -"T2B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3e2513cd2012fab7ae8e420f128d761f0db892126a5868f83ebf2fbe0c968710", -"T2B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "37cbee54132b02bb1db42c5606b6df9c7f76983abcc4ac19ca00d3ebc9ffa958", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9342e12335ace2245c604b120efa7c877266fc772321396f4c8323ce3a630464", -"T2B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "fffafa78a91b68662033414ba65af44cd0c89331de499a6aae573f66563a4a01", -"T2B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b7fd13b541939181bd5b17e778757d48731655da4b24ca45f0f58d32367059b9", -"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6b21f788e2a2ea8d47cd8d53fc3bbce62ed6c91a2caebe1e97f7dde30d8868c6", -"T2B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8f0149a7ffbbf64b5a93f3878599bfca30082cdc2991bf73bcf89f5e12f08d8e", -"T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ae44a9e4ed76fe84dcf93d1d2cd7773ab322e0516f6019180fe96a44196244e0", -"T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2df63bd0ddb47544520de33b69f3000d0a1396fb419e874482953507cf10bc97", -"T2B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6f125524d4131b42c889eb584f891a3d1e2ea94f5b609eaeb58846a39d92c12d", -"T2B1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "33d34d47f764937882e570ee830f063c5b112d99aeee5217e78413d2d5af6af2", -"T2B1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "f0cd93fda6a834ef862be937bfdd675c53606d52ec84bcd856ec984e2825ba75", -"T2B1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "17cf8f3a471a4799edc55b52bb6fbef1fc5c4060c2086bbbe154c118a73a5b26", -"T2B1_de_ripple-test_get_address.py::test_ripple_get_address_other": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "e836e23537b3ec2d785a3e0192171e5d3af954f33aa1fbff538207d8caa9b4d7", -"T2B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "f4e06e3717a3e24e39f3f8903f74268281e26f5f7fb3ef197a5735707f8f7847", -"T2B1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "2486947fafac44b8d5304c99adf94e179c39a74e9c4f308e640e35a2648acb9a", -"T2B1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "87bdfc1e42ff1b2717f5b46d1d0df46fd1808da6c54e2db11f3fab88932ad131", -"T2B1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "72449b70ec9e084a54e98fd5420570f428dee4d77fb191e808e197eef93ca1f3", -"T2B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "cae875b3eedcfc4ebc3ab2d664e59679ca64f39cd1873ba13a002fa71bf9fafc", -"T2B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "150af04e4a7102f855113c6f90bbf5b34cd2f5cf570db82294da2ce56a8b93a2", -"T2B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "5419b62b8dbe08e2811b8382caf58ce7f60f6c1552e5b0c7f6ec416be48c324e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "48cfbed8dd10586329eb1293b75aff087e78872e33d498564a54a1fc076f2b08", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "87a3d9af90ccc8fa9ba6453e31502dbd731e697b043739f5357f296de3532f74", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e6c9c75256abc207deda85b7b8526b17f2cf9d4aa5464aa02aeb4f8254da759d", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "331d62890752110406f60c48a6b88646ad8ae7f9585db5e9365c70e13c5bcede", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "dcd25d34cd38d7911f5962caa7fea4ce0bc2f1e57b97587fe60aaf85333ec831", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "6b754b660e1852c125e895543b52eeb2cdbe9334b3e8e54a0d7cf974e226ab3c", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "4406094fb63d1ea4538aff1293e7bc05540ccc540dd63fba3ad8bdc4ce8126c2", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "8b489b56884c6014102686b993006b76f225856772a2de94c63d758e1336935f", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "82d526cf1d7f07129aea29a1fe238089ee82b0450daa9abdf1c671adea872dfa", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d5586328a54beee1528dae3a93e257c31b21d891d8ab3a6d70692c88b9444f80", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4f90676876ae144b3ce706c1e65b3587cbb5afcb97d6c08f83e537b657d99c79", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "2eaf64e0cc9e2b4547a1aeffcd6cb4e267923ca1e84250401df1e6790e83788c", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "876034b2454f74177c2739a3e611654f96066b54a85673194ed3ef51ae9871dc", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b4de8f33ba20c973f80c6d8097efa5ad5159478d81c527e1177feec26692339d", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "3dfe8738bf5d6eedd99bb8f1142ef54bba4e2c6d5745ef3ce0fb80be760e095e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "0aba5ee11a6c8e33ba1ed9b648dff515aad9702a7594c38c18a3c5aa9667aef3", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "1344f05900de326c3ce74b9e4787b560da7b608fea31e4e7ff25d2e123e4d09f", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "91f5026f5949f7e1fba68ab276e8eeea21a1f112a13b58327418f846ff3cdfe0", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "b7821c845595d25e6bc71aae0e0233f9adc77076028c856f1565bd7962c653f8", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "0634846aae8bb2c503344f80d2710f6ee32be69327b95e93d997fc78d4c950a4", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "30f5c0df47fed9608f5c3784efcf7b68fe19359eac3044509c469bcaa58da0ff", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3904a6cacba69f761b456660a9cd2a1f15edffaef8578b7cf6e17bc3ea2868d8", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e9b4ffca708583d29780a8bd82d5e37b6bd0d19492f21e4c9a0cd605526bf637", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f33ce0d30c82fa4479f093dd4e7c7f4dd27efd5acbdbe81a341625b9c261e735", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "34a37ecbbe0df684eb3f373fffc461eb2f6b3955034ec51deb527959663ed4d5", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "4d058d4aad99ea76c8e475b3a74283523f35aa574d936002d2fecfb952ae7e6e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "104afabad759ad416c6b15b51a0307403ce4d3796aed3af03de4a6bced226f99", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "e75940b8cb0d8ca6b1b2a36b4377a3b386edcab2fc871d351ef3f55b11e72568", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "021cf83fff7c2a70d42b410b6eea28a495ae602a4a2c5a94b28c41096e416b4b", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e1699d093c7055d4ed8dc564bfa600058e377f77871732bbbf34b48cb14343bd", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "6a4c83df7ec5c8c09bde8499a80b97a5b7e6c0ca5855240cfca3362180eed57d", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e5c8aba521ee8f3ab8fd3238de5c575397bae11753a5b3c3b01e6b61ef1fe1b0", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "36dfe28828163ab7a80ddfa74f229b4c6eb228c33e5c1fb129007a1d5a849461", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "541fde8923f34b69bc11a07c3eae62280fd36adc4dc0af8665b2f00d066ce8c8", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "541fde8923f34b69bc11a07c3eae62280fd36adc4dc0af8665b2f00d066ce8c8", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "a69fa6dd1909fb463aa9fb9ff7b27d1c932b77cca683e7f4c52daaa6d6afc77d", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "65ae34921600c14345adae61a8557c61f7971a11374fbd94f9df7766296ad222", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "893662b8686fa062f7aaf7ea9d35dc15a131028a8175bb16e9dd9424c8db3504", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "bf48604005a62544958b72eb43853574fe59997ce986a6908761039be664bd0d", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e98fc8e321eb59977537fd8a47f5b8ee7b9d6b04632d5c5def0e4383f8d09c77", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "8567984d7aeb5e3c2813ebc9a56ce678db79de03e01da913db405b5a9f208116", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "92be9469b5c7cd30d4523db41643c571e6afae6e5955803d3cf0c57009fc007f", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "1548b0f6373a6f1f9fbeedff281f6e177ed978b85425ddc2cf4490880a893d2f", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "6e7a95dd25ec3e9737457a71fd79eefbcc5c778e3df5ab834344d39f92ccc61f", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7c23a8d3b5a89257f2a152134bb14def24e01b3b25975953732c9b2eed4c2965", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "893149b212533197a56e158347d72a0d2284c2f9fd982690e9e435dd28a10783", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "548ce30ea791ed7de0b1364171f4deec489abddfe1532c82ef92ea4f4b7ebd32", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "6751c8e93e0c28d283059534c5c4f787dc541549976c415b321da259edeebe3d", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "0b2a9b80b07c920b2ba9cf09a9fa762fbfff7b6a9b39fe89dd5d825c72d2e6ad", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "5ed5852ed5eabeaceea50d91010aecbd11fa8a0dcbdda899e6465bc75c749581", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8adbf515470b56a21c1ab3e05b7957db7313ada30793051519e747924588281e", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "aa295d8e8f1081ee8cf870cfe8e5b9c1d3ac9deddf51d85a4712ebd46dfc8aac", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "e08211c988f83c25ea71770effb12bb4595b0e42c4813e375618515a61633844", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "e39b0ccaa1c791b8ee9879d436e6f34227b895d2af8795e25641f0190f399560", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "9ff4ded2dc444ad088b29597d197ce6eceb2ad9e5ed1fff025b3a072318258b4", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "a2904f146acf163a7546cca71abce5f3b7127f6c408fcb2ad6ed3d5b075fd129", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "aa9e3242c18378a5b9499157027a7577cbfb732df049cd8666e36be51dd6a859", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "02aa09334478c0e32a66ced39d306d3ba70b6a40ba6f4bbbf2f9f397c7ca50e2", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "689692a6c37f029267f6c37cd1ddfc51a5c9f16d00e2101898ff6057349e0910", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "c0d5fa5f9771c9dace04bac4e5ebd64a48a38bdeb57092837fb1a90445362d80", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "9bee6bfbc42ffed546d7386efb68c3e6a4f75efcf0cf44d898a4f345abaead3c", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "23a1a1c334d20ab2aea311dc8b6cf0eeca6486f30ff7ed0ac8faeadd61d67f57", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0ee25ba525378c6101e5b1822a181e66c37455dd23e553b0cc7d238d64246736", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "64a15c761ef280fb4b7934ea4cd2ed38a2f93fb7f90d95069033692f87df133d", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c1a00acf6f1ff4503e47818f6367e65b785f9e2bfa55d6bfd40464699787c9e6", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "4e4372d9b85029026a9a639748091dac58ff4a95765a725fc4a6b3dd72149a87", -"T2B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "7eba82dc4ccc704791d52210f9a5e0cd70890072076450ac6a6d1a1654886ea6", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "10f4f69103e9eaa539f5bda4edcc6d5452ea8a3fd8681fca2e3f8ea32d7f02ed", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "004e6ea19fd6a15af90c6e3c621ac3c07c2b1353288f0f1e8abdef20fdde0a2d", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "5f0cb78ea428260930c5899fb144bc8fc2a848413f3a69be2e4921412f604247", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "51ea93fde655edd4041514bf89d6e073ce356ffa2a0425e8c2f141926e2b15d0", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1d8fe04ab3a268ded48f48b358c8c7cc1732d325e166a2c39d26d75daaea578f", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "42a522655253d0bb699e6268919be26cf584988c29d99c71de54bfd7f1956a2c", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "7c8c2bdf23c864e16b831daa9468f74e33b969e35f0335c5f9e3530cdc3fc67b", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "a5e5bafcccebbc2caf010459c59fdc55182678afa3702fbaf53269d776a661d7", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "468cced3abd3247d06e6557bd654ed6447412f084ba30c5a3331ea43deee5572", -"T2B1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "0697c8535141814c6c99e822b80dc8d6ba5e42a7d402d9e207652f1d08f3419f", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "f171f27c305fcc9406320bf0c2cc9949ef5457349c7f1675fe0ef1b3294e0bb1", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "d6e0fc24dbfe5057bef09711a454e7f624c32f6c5b370ca727d9098447493ff4", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "d422aac0a49b41f11cb26509d8eb9552105d9e4cccc5aa09945d6468f7fda2ff", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "38b18e337f4d86c0aadee99ddff47b617d205d3777d2552769f07eedd8283c0e", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "57ecd845eeef7bb54e79d62228107a42af79b22d5e6c723edbca4d9c006dc494", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e0cb13abab8fae9f275a1d5caa3f3976eb45652205ab04bf7b5abd92616ea5cf", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "6ffc2ace4501a6df6fbb08dcc3d24ea5f93657d373795c88dd5c0daafb7d2f04", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "836c9c5508424e54a96a2435be71742151555d83ed0a0712bd72d6604460a586", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "e1ff3474c55826fa526852c3d2930d9664e544dc4c303064a5a265f837dab21f", -"T2B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "d6bdf14b7bf4249bf8ec5295ba456de010376fefabdd3ff2ef2af09ddabaf915", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "3bf35c40d97d043ac346ec4f1af6b5d5e86333a9dfc7fdcd8fd5594a6127eefc", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "308d54884f637fb163c6d495db88c9e094ce95b3ca9b85d98960afb499098601", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d584f77d7b19d4210f032493e1063286608eff050b31677e7535c5894c9a1913", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "bfbc8c1ba4259d5564aa4eab7fc719d94da8a6f6bff49faa9cfe6f0716d9e9a3", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "4d9958f05ac7f7e5c591c6d7ed54f46760c4f67d957ad7aad33e1206fe7cf900", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "090b53af94e8c7e9f6ff650e9c765b76fc04a11abc11b843853ecc992401ebbe", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "08a338962a97e969369ed4260cdddb644950ba215f23ee5e6ef41620363c15c0", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "7c1fa8c604386e5caf2cdb31e9ca433b3b9ac94ccb4631dc9387e1ffffe88091", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c4eeee93e80f323241c92ad5c078d1f2542fb8358627a243686e81dc41680bac", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "124d2db2f307428f5ea8cd3893ad639a41071d8acbfb1df3af0e3de0657158b1", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "fb1653df81a0591a7b5d0bb45f9c0f7694f7f4b5e2ff4a66b03600d371ac6b69", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "cf4417d89a0a5036b36e6fb711403b80a05e4116d2e0f3c90eefbcd7038457af", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f9019cdba4e5a0dc816b2b0965b048ff9c71e2d39ef52683fa9b566f4afce48a", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "058a44a0cbfd0a5162cf95c9b08d2271f633b867709f43bbe948ee9f448e9002", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "80617ee4730290c18e1f41e926638c5f9bd417e7ddcdf46765f291912bdef033", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "1a3335d10fe7cf2f3e8b08f539d2b1f07a72775bfc3b015ac8f391cbf07e2006", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "1345806e51e1a28079169477c041a12e58b24ca1a870cdb84fce58a02354c3da", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "1cf718b75c8decf83d4dbe2c92ad8ad80053932862d128f42ddb59110cde00e6", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "89849dab2d97e8862fb0727e5193dd01249227a2e484812a44fe6c44c381712f", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d6b2253ed95dfc593f383450f12581e60e55fe98c12fd873e9400f2ce17fa178", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "edf40f1f27c4d1ff429da8d980b05e44fa5d0690a9d81dd3270fc139e1165c0d", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "a6059f00148e44c78494a5ca94a903edcd479d648d697cc73a9f640623ae12c1", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "c843c0fb0979c127648310552faba9819884274e5ee3d830572bd14897b1d49e", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "f6b8b37f3b616e8ad6a8c869cd70f645e6f362992ea171eb305696dfa8767336", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "01333e6640104da2df813a6682c1ca4d12d0c9106bf4fc1d0bc613b7c589a50f", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "e6a15129af2beae1bf0f1428ab5da0417fc7ba0710725d1589b25cf6880d2d0a", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "dc4bcce9ac14c70700b5998834342e887d194959eef294828bd9faa6a4f904fe", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6a54d587b8b9c8780857819d6e0fc82af74b9b45273cc03dc16c349b871d235b", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "c446139cc7ebf56da02f258f6a27663c111bd5e56f54b7d3d7d2c85470a9b5b2", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "1345806e51e1a28079169477c041a12e58b24ca1a870cdb84fce58a02354c3da", -"T2B1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "c9a8cb0c921699bd90637950c710193a1a4b4abd0a415a9c91980b641f91abab", -"T2B1_de_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", -"T2B1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", -"T2B1_de_test_authenticate_device.py::test_authenticate_device[]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", -"T2B1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay": "e0903b72b35c9fbaa0994d58b86d9fbe4c13e4dc6628db58494331a46a1d72a5", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1102df6f016319b9c9ecbf9d8856ee0269423a8f54a56c0ede512bcb815fd8f6", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "13fdefac289c62c385085703f4473b40b8ec5e50db5205adba45e84983766887", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "e34b70fe4c16e1affc1f268c711485a82924549d0e4f2add4b2dcf6ad7c9f510", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "e8fdc105047f9172f00358716043f9c8ee84f76c38225fc03a0ef30f97669019", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5935009344accade82607da278e4b56b3eb90700daafdb246651c352299de900", -"T2B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "3c247d31e68273c89eb75b66d5cb1f36ed709351d0fdac78510e37b22a499f4a", -"T2B1_de_test_autolock.py::test_autolock_cancels_ui": "9988d59b0537a7d3e82ed5d21f6d7eb275269302b25fd77d91b76487e6c295bc", -"T2B1_de_test_autolock.py::test_autolock_default_value": "6f5662431a503ae159798404a8eb1dd6b43c7f2b474230ddced92adf1dd43c66", -"T2B1_de_test_autolock.py::test_autolock_ignores_getaddress": "4450caf3dce3cdf32e6e0972b3c3489139c08861f0f22ce90c5dab57bc386dab", -"T2B1_de_test_autolock.py::test_autolock_ignores_initialize": "4450caf3dce3cdf32e6e0972b3c3489139c08861f0f22ce90c5dab57bc386dab", -"T2B1_de_test_basic.py::test_capabilities": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_basic.py::test_device_id_different": "83b61032ca87fecd27e115b4938301f42bd347eaac440be5490beecd6242ba8c", -"T2B1_de_test_basic.py::test_device_id_same": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_basic.py::test_features": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_basic.py::test_ping": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_busy_state.py::test_busy_expiry": "f060bd0cb42bced5d02923279994ebadb2d6bfdac236f2bf62fb204b1f6f67c7", -"T2B1_de_test_busy_state.py::test_busy_state": "9d79673fa4eb9be4fc865a0e81fa0601811f2b38f6e110fbb99aae1c6ab4c3e0", -"T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", -"T2B1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", -"T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", -"T2B1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", -"T2B1_de_test_cancel.py::test_cancel_on_paginated": "22e5ca5da1248baddd00fad0a3c14072719cf8db8046dedb6f67239ea019bd6b", -"T2B1_de_test_debuglink.py::test_softlock_instability": "f29d70f6632cf45b43f3cad58de6c42d381f90fe47303bfc9b9d39cd8c7ac603", -"T2B1_de_test_firmware_hash.py::test_firmware_hash_emu": "b64812ac9c7f3d3f34118ae559f44c9727e02409211003966ea5475b026225d8", -"T2B1_de_test_firmware_hash.py::test_firmware_hash_hw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_language.py::test_error_invalid_data_hash": "001546a6d7d6fd797f5d358a85afbb653ab3dba0ee15650b38981149460e33ad", -"T2B1_de_test_language.py::test_error_invalid_data_length": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", -"T2B1_de_test_language.py::test_error_invalid_header_magic": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", -"T2B1_de_test_language.py::test_error_invalid_signature": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", -"T2B1_de_test_language.py::test_error_too_long": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", -"T2B1_de_test_language.py::test_error_version_mismatch": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", -"T2B1_de_test_language.py::test_full_language_change[cs]": "589c12e07e0d2053ff943f143b7f49e813933d6da88cbd728bed6f8bd4cb245b", -"T2B1_de_test_language.py::test_full_language_change[de]": "a916293d096cff0f5476d3f3a5c8041332e190cd18f93aec196bc90cb8c519c9", -"T2B1_de_test_language.py::test_full_language_change[en]": "a35bc4501de8bae861d757421e17440a21f7d4f3ce1a56bfadabe9e5b467e4a2", -"T2B1_de_test_language.py::test_full_language_change[es]": "2fd72d78dd1d1176ac6aecdfd3ea790aa2aafac0d705b406d44c0e9c9545002c", -"T2B1_de_test_language.py::test_full_language_change[fr]": "fda57886e4c371f3219a29dd54b01de43e96bbb94a6fcc7d6c9e1bd1e7e30ace", -"T2B1_de_test_language.py::test_full_language_change[it]": "56f7b7084574bd9788d73ff3cba6089eee7234aa93c3140d25239f1f324ffad8", -"T2B1_de_test_language.py::test_full_language_change[pt]": "f379680255757223d437f23ffffed7ecf13296aef4eacb5fc22b03544352ccb1", -"T2B1_de_test_language.py::test_full_language_change[tr]": "0ec841906d2d597428e38d71d2dc4d9cd91fb504bb1f705e9673683cf2d24043", -"T2B1_de_test_language.py::test_header_trailing_data": "8d546f37251d84f6493b199cb84219d818def9318c908e3fb7feaba788862028", -"T2B1_de_test_language.py::test_language_is_removed_after_wipe": "146552979024b0aebe9b11475131d71c0e6ac909d2b8e322af848401e0cfa316", -"T2B1_de_test_language.py::test_reject_update": "c030eaa1b84ee548a68f0e20ad74201cbbeea1f09095dfafe0465020f3215a7a", -"T2B1_de_test_language.py::test_silent_first_install[False-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", -"T2B1_de_test_language.py::test_silent_first_install[None-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", -"T2B1_de_test_language.py::test_silent_first_install[True-True]": "664ea85c6f6a7e7a43f2c5e717686608ad7e9cd0804cc89b34d58efa8fd7820d", -"T2B1_de_test_language.py::test_switch_from_english[None]": "442ba53d3e897508f37a63a5347c3bbe535e3f7dbb75fcab480c58e743f580c9", -"T2B1_de_test_language.py::test_switch_from_english[True]": "442ba53d3e897508f37a63a5347c3bbe535e3f7dbb75fcab480c58e743f580c9", -"T2B1_de_test_language.py::test_switch_from_english_not_silent": "734df403a42da192b49b0bfc990db9f4b84e118c0b678da7e159e6a0c2a86896", -"T2B1_de_test_language.py::test_switch_language": "e922d8763c8d4c700a92727e4bdf3b7ad962d1980512c38e66e1aad8979b116d", -"T2B1_de_test_language.py::test_translations_renders_on_screen": "76682d785587a89e97813092dd09f407f8cbc8c11845f84d7b891fc25d21ad0e", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "231c46ba707961f3b9efccfec83f073542e342b3c15ab5014b826a1659bec0f7", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "6a6b3f99a0e1871cb01e38fa2bdaa81c93344abb3a7d1878a5ab40c50777fc1e", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5d88ca231c16a760f9db2005d7cdb24ed282ff7377026a947e023523654b2971", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_msg_applysettings.py::test_apply_settings": "65bd24b50922a21b7f00b92b7909fc52597d3ee17fbbe7971e2c8e0a2969dc9a", -"T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "4274bdb4acbbbcac76b90270fb1652d4a60e617ba165b98bb301b8f75e19c919", -"T2B1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e55071aed329923cf60c90370319a7024f24b3ebc209a1270bc9e6ba19195505", -"T2B1_de_test_msg_applysettings.py::test_apply_settings_rotation": "4d17a2d5c4b7585ba5e8ab4acf617d74faeb715d5faade775c23894f211bd17a", -"T2B1_de_test_msg_applysettings.py::test_experimental_features": "a3e2bb32fd4344219f3917a058f240489b0fa21a3795112c208dd01a549a3e76", -"T2B1_de_test_msg_applysettings.py::test_label_too_long": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_msg_applysettings.py::test_safety_checks": "91668616d03dbdbb3400a647bb89ecd1195b3fb5d8999c6229ee91b934ab53d5", -"T2B1_de_test_msg_backup_device.py::test_backup_bip39": "e1bbf95c340e6262b00c14a485006470a14f282a7fb487cd8d40489296c37884", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "10873bbdce772d13646d99fb3967a9f5e09beea972649e1ae03a807b349a55f8", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "df347660c07be4db80d435494de3e8ad14c1c27803f989e69e9b855411ffa96a", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "feb1fdd06e5ec80a6841d869807490f6e4985e744f29d215c6e9b071c0bafcb4", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "5283145460004dc83b60cebc7faf355e72a602de0538eee70d502441c1beacd3", -"T2B1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "331e67d7e99409f48516a400926c853cc47369951d0f489af36a4566d1651e45", -"T2B1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c925fcea96ab652c5cba68ecf4c6cfeb069da7eed29037211d72301b0e34fbb0", -"T2B1_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "29c78026d1760c76b4015d8b125780f78818756b70acb7ef43419908dd188570", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "10d97ce1dd72142822b63218a3aa4eacd3b16bba3809f0eda4234fb95bcbcc2b", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5ed7a9edbef7af20347d0d89bfd78e877c19e28c59a0460d61c9a30b4efe2eca", -"T2B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "369c41027c08a31faa0fcca716520be2c20998140d31800998f49e523438c76a", -"T2B1_de_test_msg_changepin_t2.py::test_change_failed": "4388b4b2b2fb0a621d268f62a23965f85e285b0d85567a3fb893c6f2ec73b681", -"T2B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "b5f316a2623619368cd0005ddfc8b19da7c1dbeb70b7bedae0d76d5a08baa0c3", -"T2B1_de_test_msg_changepin_t2.py::test_change_pin": "635bdb26120f8d3407e4dbd4cea4fa051852a74e87dea45508359fab310d5195", -"T2B1_de_test_msg_changepin_t2.py::test_remove_pin": "81bf69c4cd4b91c82fa6c77de83f93fe9cfcf60abfb094c08f52c2afb2f4f8ec", -"T2B1_de_test_msg_changepin_t2.py::test_set_failed": "7a66af5eaf3ad7fa6a77a65a7962c81da50ac048320681727b9a9ae397b7d9bd", -"T2B1_de_test_msg_changepin_t2.py::test_set_pin": "88015bc1ec48ca150fc3a04858e1c14f4c8665e8035641b18fec9aa0370e5eef", -"T2B1_de_test_msg_loaddevice.py::test_load_device_1": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_2": "f0d18157b9bd2f128e7b07cee70a199a40c178fc0b2f2bb943de4fd31d1890f2", -"T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", -"T2B1_de_test_msg_loaddevice.py::test_load_device_utf": "a3fd3415145fdce244950f162ce09d89aea8b64754ff9b7881f794f2772e4239", -"T2B1_de_test_msg_ping.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", -"T2B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "b892f54b08ed97cbe0e572d4a9adfb979a61ada492278987a93c3917c5282609", -"T2B1_de_test_msg_wipedevice.py::test_wipe_device": "83b61032ca87fecd27e115b4938301f42bd347eaac440be5490beecd6242ba8c", -"T2B1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", -"T2B1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", -"T2B1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", -"T2B1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", -"T2B1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", -"T2B1_de_test_pin.py::test_correct_pin": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", -"T2B1_de_test_pin.py::test_exponential_backoff_t2": "f4ccf6b551635808fad033136f25118d322d87628c47e33456fb63cdfd397ac4", -"T2B1_de_test_pin.py::test_incorrect_pin_t2": "08b8b915db87fb4c0d7b2e2687d67c90257ab5e8aada6165af2bbda52023c065", -"T2B1_de_test_pin.py::test_no_protection": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_protection_levels.py::test_apply_settings": "9ae0261981e6dd35140eaea5a10b603e3852f52f997b3d539046adf5629aceaf", -"T2B1_de_test_protection_levels.py::test_change_pin_t2": "968d69e5d4d3b7e2de44c61d1bf436a1a6261de4b4a3058ce90803baec3fe702", -"T2B1_de_test_protection_levels.py::test_get_address": "117b63c5b3406c99f1a50ca45ee58367ed39f663ecba5e742cd84ba1bd12d574", -"T2B1_de_test_protection_levels.py::test_get_entropy": "65c3baa1d91e695ebb67eebe5931c36b751ae14799d3ed343ecda57ff1373b92", -"T2B1_de_test_protection_levels.py::test_get_public_key": "117b63c5b3406c99f1a50ca45ee58367ed39f663ecba5e742cd84ba1bd12d574", -"T2B1_de_test_protection_levels.py::test_initialize": "72fc50e73e66647d38d60f1d44990f7ab2748faf5ccada4704ca84ff8b928c2e", -"T2B1_de_test_protection_levels.py::test_passphrase_cached": "d2467c07fd34ffad1ff6c5887af6ed74bde2ac95953e290c1ca1a7bcf22abfc8", -"T2B1_de_test_protection_levels.py::test_passphrase_reporting[False]": "e83fc2d7c868e1e2b6a01b1bffe12e78014b9b6557b95322fc389a3d05bd9d04", -"T2B1_de_test_protection_levels.py::test_passphrase_reporting[True]": "13edb97ece24ad1df6a4cf3cc0ba20af8cd88b2c85345149598621390f0014b6", -"T2B1_de_test_protection_levels.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", -"T2B1_de_test_protection_levels.py::test_sign_message": "ad9a5932f14553099eefb81efb2174607aa800a1f0a7da5c25ccd9d7cc3bf6db", -"T2B1_de_test_protection_levels.py::test_signtx": "4109e4b91b6a09d58029f1c4d6baed24d25fa7d1a35f9195f39af1fe172e7cf8", -"T2B1_de_test_protection_levels.py::test_unlocked": "c37426e06d6301c72c1f2110ea040b92ca1eb5190055696d14be2730fea13013", -"T2B1_de_test_protection_levels.py::test_verify_message_t2": "ed21d6e6e9faf5746a845dd7e506b0f8cb1a854bf279adf0c8e1f0101cbf3554", -"T2B1_de_test_protection_levels.py::test_wipe_device": "a9a44ce394801cbd06c6f4394fc0fb2e32bbcee9e165168f475c7317987d926f", -"T2B1_de_test_repeated_backup.py::test_repeated_backup": "71c4da86452ebb39b78d71c91bf370d940952685274e11f1fd7eacc1f03dc2ef", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "0dbed525a45f2acea9dfafaa309846e6dc71ac4a0513a670b0ac8ca08b21604c", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "87ec74e08e032076e43531238118e7eed8a24102dd8193825afd5e47c16a1949", -"T2B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "38f9dfddd8852ca784f0327efae83b1d0bbfbe19d933838ef020c3880116fb68", -"T2B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session.py::test_clear_session": "3063aa83a1e4c5de6b8e69367809eb1f05863068856dcceeec4ad9410b5c798f", -"T2B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session.py::test_derive_cardano_running_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session.py::test_end_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session.py::test_end_session_only_current": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session.py::test_session_recycling": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", -"T2B1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "3da12ad56524a450bce0eedcd4c5387b6e518c521ea78d1e2a3b4c51ebbdac46", -"T2B1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "308ff38eb0982d7fb99e74e353f7ec9ab82a1f4b44dc84cc426a1fbed45512b2", -"T2B1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "c6afe93e023bbb9f10823b2150ed8f1d96fcc4b455472ec7f90a7e7ca42d9ae5", -"T2B1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "8a86f8d317c391c0e4fddda4e532e8f80119c771f0364a4d02f4b48c2c76d25e", -"T2B1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", -"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "2ee243f95e209d59849bd1022ea5f30beafe27428e7f6651db59dbb7e494033b", -"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_length": "49ae473de78ff7ce67c124c94837d487d0a9b9f2116e91bce995bc11ddb94cb3", -"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "d2467c07fd34ffad1ff6c5887af6ed74bde2ac95953e290c1ca1a7bcf22abfc8", -"T2B1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "2a99e458b0ca7da4c247c6236927b6a97132e444ac60004b3393ec7eaf46fffa", -"T2B1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "67f7ced2940aa158b7d9c8e3034a49f48de3de75234350063157610a61073fbe", -"T2B1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "ac99232a08c165355831817fec3cabb650bd1c75b19eb78126d79aad472e753d", -"T2B1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a771ad2ebdf7697d001e910440d136847a627fc654ae5871207a18aace65138e", -"T2B1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "db0f4842937574e363039fe84ec33be248cdab6ef72680f19584f552c60b2086", -"T2B1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "c3a91ff3222329e3f84283692ba0453969b24243fee5ed4c2bf93170fb6d66cd", -"T2B1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "9bf1088d861d3ad90ee92f771bc41912341c099c36b35428ef6fa3f7c77dfd98", -"T2B1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "0be3c3194bbc0365f9294d8a29717ea2b07d663dfd78e148700686421ecda3fd", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "679fc9103a446e14f5966f22961e22e3ee8ae23a2fcdec87e7a85b2a0f15cbde", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "37b8b2b01fd8b11e2058206d3630c90f01fb634ad3bf3da3d334a7d716ec442a", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "994df55fe266bb73337ad51c333bc29907549691646cb5f7be571580384cc1c7", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "b7c9f9608fa6719d9c28c80da4ece8c747a25300a174e5ecbb2e1c0ff69d003b", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "5b520cf82fd6d54bf4462e0a5ddb2c1b6561ccd394669dcbe26ce2ee5933d10e", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a8367b53742425165f0b2c25f0ad411d6fb0a5a17621881206bc9e2ba1434ced", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "51c47cca49a4b3d403d500ce6bc2085fcf001e649e7b72831780417b83d3aa62", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e8bbc64f602f34d73a65dcc8db33a801340276e087f694cad794f6f2c400a459", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "4ad474b86c8e3c9cc590948661fc939779a26dca594262ec6b172537e7de6d91", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e473fe43f87d09e01f2409e698d64af82ddc6a35f422baa2ac6711d6be524e29", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5d1a50d706b6845196fc81f59bec2c950d618cbe722458239c97d1ef0ad87b0c", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "12c52ed63a6c1533c5d9e7a1e49f9da9c9a6d970aa93eb8f35f09eb05f746194", -"T2B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "152c3682a46c5262d24eb7369a7b5c8f930628bb74641778b6c5311f8e6ca51c", -"T2B1_de_webauthn-test_msg_webauthn.py::test_add_remove": "ed9db521f9bb579c35ed8df8421ed84df45121649d99ea04b071da0fd76ea57d", -"T2B1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "8f269d9d7ae6eb993d01a74df141d055e67682d2bd8683ab3aaf3310f0302985", -"T2B1_de_zcash-test_sign_tx.py::test_external_presigned": "b10849bd341489f6b484ed89b82139b2e753df1538854c466e7f67e4b46aaee0", -"T2B1_de_zcash-test_sign_tx.py::test_one_two": "0736bf7b7d2798c27ce04cf26c1d625dffe6a9e757c0daa2b8d50e289d69cb30", -"T2B1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", -"T2B1_de_zcash-test_sign_tx.py::test_send_to_multisig": "57384f2fbbcadb48cea35775b4002fc3bdfa5084937d53a5e7c55e4a4340345d", -"T2B1_de_zcash-test_sign_tx.py::test_spend_multisig": "83496737c3d1295ba4dc60c7d24c62830c6a772725d0b18bd51ed5748f69cb0a", -"T2B1_de_zcash-test_sign_tx.py::test_spend_v4_input": "3a8f455f7d766013e0d9152dce744c82c414ed8b18a1add1db7a438b74e628c5", -"T2B1_de_zcash-test_sign_tx.py::test_spend_v5_input": "cec6e9a45ebf4f5e9443cbe3cfac68fc2375dc37cd0cd7d4c4184c3cd21bf4e5", -"T2B1_de_zcash-test_sign_tx.py::test_unified_address": "7d61cb431c163433fafbfa88e8432a1396fd9e2390ebe2b7bcd2be71db62cff1", -"T2B1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", -"T2B1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "e76ef483e6b929ff74ab0425708a86264ba8d6b58f3e6f669e3c8d794d02b580", -"T2B1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "56868c4176799e51ced92154e6d1525565b68b062d91ef52503def0c6c8fba06", -"T2B1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "3aab3fa9eb585ad46b386a84a64c090bc9b2f50009a6f183bdda44372991581a", -"T2B1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "4cdc17355b3ff7669f89aaab116083a82bb6842ddaeb78f857992d13ec62bc0d", -"T2B1_en_binance-test_get_public_key.py::test_binance_get_public_key": "9bf1d886be14c98ee77e174a7398e7fe635ccf17e4e9a37256084c681e704682", -"T2B1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4988d60439f13d93f622ab590b12abb7b306e9dff297e34d5ecce08f62af3599", -"T2B1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "b1a1d84ae743a0d0a9db95042097cff8878f2fbd2ef66ba7196dd70ad3c43856", -"T2B1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "df56a6c7396a9f9f41c58f9c4d8abe49d7c8c85abaf0ae546c4086669a9f77c4", -"T2B1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "4988d60439f13d93f622ab590b12abb7b306e9dff297e34d5ecce08f62af3599", -"T2B1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "b1a1d84ae743a0d0a9db95042097cff8878f2fbd2ef66ba7196dd70ad3c43856", -"T2B1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "df56a6c7396a9f9f41c58f9c4d8abe49d7c8c85abaf0ae546c4086669a9f77c4", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "96f583f815e053d2ed5763d7841b2572c112476fb9d1131a1516e2e8d3f8ec20", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "a96bebc82d5aff9c6a8583ddb354e6427689a3be4fddf082c3cd0e8722e54d46", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "4c2bba305bab30de2fcff0cec5ab1192f2e4d826d86f91f7172dfa624f5f3139", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5f70b535406a6254113ed2a5f780ba98b8205abf6425eb7038d22395953aa560", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5ba615e3331c3ed67e41a569862c4adb02f324d0e8d406fa89eaa12625ad0d13", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5ba615e3331c3ed67e41a569862c4adb02f324d0e8d406fa89eaa12625ad0d13", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4f275de439c812363140d3839ebddd9243e2bb34d80d02a487361148b2bbab71", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "64fb8501fd5c522084222d12a008938b44051131452af9efa5d354246a43a3b0", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a005bb59161fccac967b138bb4113b8e46163b45869b51d526d5ac004aa86d5b", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", -"T2B1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", -"T2B1_en_bitcoin-test_bcash.py::test_attack_change_input": "60d7c6b95cf7fd47bd19e9a34a4b9ac1c3c9e06ecbbc82a1f4c162cfe62e707c", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_change": "25b9c86a8da8e4ce984b4e51e8595d9dff82441f63e148cb6263b5e81a605b49", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d71ca13edae80607527a670d8ea4f34b0d119a1a96de74e01e8ddaa0973603c9", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ccc768820a5ee76880567675af759c16eeb4790f59f64b680d895728bc7280a9", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "ca779e53833a7eea19bba69009b8bc1fe82cdf392834e98569abb3ed9c74fdba", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1237a09178ae3d403d995cc6b83d2da7db49da97cb9735d5bee7f305adf390ca", -"T2B1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b3f95c6fd8c659a9235f66c11644718ad0dbeedd78a880a20a3c197b81797b94", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "558aa84a9129920eabf7101b013d0d1fb56c89c66873f3dcfe19ec22472b22ba", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "0ffab62bd4c51d042e77c23f5569b9b9a46d9aae102f55edf20d7894dc75b17d", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "243487cd2ecbd125566ed60959c3a50f04290ee225838e5373d2a42d03d5fb5e", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "bad6123462cf0f8c9d938ca92ac9841b53221e5152f27bc92959e870d4108f1e", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "c66f3f30c1a6c809fb8c99a9773c9a9ebea29207c4383f8507db751ba59eb11f", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "ab012153490f26746ff9a1b5388f2418bf7c9d98b127217babbeab339245d8f7", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "2c460c0e3885c6d9e68db3175117ce4db5c8331034894caab942d19a3061805e", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "40c7a7071d082bdab14e7e3a018dc07754b1e24fd9e8857daf445d343a581403", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "442a787c067f35af606eb27a2a585a15272bb920af01070f408a402603572b39", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "d53ebc2f1c866b3d5920b13d9ac909fc81d4ca943a0625801b5dc533f2fe6ef5", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "de19ce37833a9244920ec8d932ac88f12e4bbc7c2d41e882fb5d39639b28c7c2", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b42ab862d2d45bb9e0509fc4ba4d68405acde83fda935c5dafd44d9e48cb29d3", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "0f5cea13c694bcfc74dec9d857984d989b31a8bf0f215199f1db7a5a0e452f4f", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "558aa84a9129920eabf7101b013d0d1fb56c89c66873f3dcfe19ec22472b22ba", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "0ffab62bd4c51d042e77c23f5569b9b9a46d9aae102f55edf20d7894dc75b17d", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "243487cd2ecbd125566ed60959c3a50f04290ee225838e5373d2a42d03d5fb5e", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "bad6123462cf0f8c9d938ca92ac9841b53221e5152f27bc92959e870d4108f1e", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "c66f3f30c1a6c809fb8c99a9773c9a9ebea29207c4383f8507db751ba59eb11f", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "ab012153490f26746ff9a1b5388f2418bf7c9d98b127217babbeab339245d8f7", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "2c460c0e3885c6d9e68db3175117ce4db5c8331034894caab942d19a3061805e", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "40c7a7071d082bdab14e7e3a018dc07754b1e24fd9e8857daf445d343a581403", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "442a787c067f35af606eb27a2a585a15272bb920af01070f408a402603572b39", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "d53ebc2f1c866b3d5920b13d9ac909fc81d4ca943a0625801b5dc533f2fe6ef5", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "de19ce37833a9244920ec8d932ac88f12e4bbc7c2d41e882fb5d39639b28c7c2", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "b42ab862d2d45bb9e0509fc4ba4d68405acde83fda935c5dafd44d9e48cb29d3", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6", -"T2B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "0f5cea13c694bcfc74dec9d857984d989b31a8bf0f215199f1db7a5a0e452f4f", -"T2B1_en_bitcoin-test_firo.py::test_spend_lelantus": "711c7ccd1ed628ea0b6a4cadf39eb1f6f15cd1081c93aadc391d5eabe5a36f6b", -"T2B1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "bc34cb343be7d62885f00c4c8f1fbe1696ebe8e53dab53c2fcbd97f5d623738a", -"T2B1_en_bitcoin-test_getaddress.py::test_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_bch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_bch_multisig": "63dcebacc9acde58a8e518ca08d4d0508da685a468bc6f7ecaaea33317862477", -"T2B1_en_bitcoin-test_getaddress.py::test_btc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_crw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_elements": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_grs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_invalid_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_ltc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_multisig": "b1a235a0cd5e9991b64714a6850412c475c46ddefbcae0391662f7d4fb934814", -"T2B1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f4a9b7935b7d870f13eceb6efa481095adfb4b5e9dd43d7cf2670415210c9319", -"T2B1_en_bitcoin-test_getaddress.py::test_public_ckd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_tbtc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_tgrs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress.py::test_unknown_path": "098834a3b9efbf31fee211314340eb4a8f351e8ba757ec0a3f313c49543612bb", -"T2B1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6a437ce45f2ce4d13dd98328cfc66d3b6b119bd637f01148a723408b4f17b523", -"T2B1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fba5a970d47d0936174e79904c3e72ddcbbd18c6d650230643a138ee495f47a2", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "3c4a8b78580d73d17407543fbec8e292ef2afb39b155bfe4f46eefdff69c54b9", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "809388e68dd951e39d7ceacfbbfa9370b97a5a73232a79f992462830f053c9d7", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "23d1e5bd1b244e9c3a32c09b81f5cf3f71f2577fef9df2d8388c4b1ab50f5ee7", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "4a48d7445484becd3cfabb6ecb131398a447774693c828250fc2e4fa04cea84c", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "f7f3a5a31d942c688be33b2690986345a4de39997f500bc32b37b79bc2c73d8e", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "0fae5bbb6de5c70226671451794a34519ed85c9d95c147e55f1cef837f955c40", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "bb3b0ac405d04ee024109e20ab1d6434d2374024d7c2623af0acf01bc3a5c1c7", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "208159f7a0160f31ae17d76d6b78b1a4a1ab71bb0fd5f6c2b7e72e52262d90eb", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4d7e17c51200b3008af7c3f6973216c675f265ad0911608eb3feb9028c0e75e2", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "a24ac9679cf76594293d642f012ff8e335264ff4b15ad4540f410e23ffb91923", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "9c1d356d0e9a3b58deb0d88d6427404cb16d01ed7821cec8824cc92d3fb357b3", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "d2732d2163b87bbc2e9b729357ef7b4fa51848150d199c710dbee2a9bcac1314", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4603a37b79fb2c4c099d7af5f954f8b7f2583629a3606c0d952510c0a00a5fc9", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "194532560487437bd1d2557c802fcdc333511d4c5a7c628e9b9e95b3c84b6d8e", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "4be98705f6930b2a3c25e9bc5ea57d938a7b9f0ce8b7cf63379818e0bb38de89", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "4835648bc84d3ac179a28d5e32d7ede1c7979172f24da352fcdaec2b7baf1a35", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "31a69b3216cbc1e2ac24cd4e184f25302da9e8a1ad80801eb2a4f7db0419fc76", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "abb9fa03da8b03ef8a42e78e1b0324c8ee18227851c6bd3e5a68bd8d31943c30", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "ce472f42e18622512756287ab9d178394a8c0372c606e6e76f676b11091fd219", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "55bf33145015400aea10a2ebcc0286daf6f73a55e92d62564efc15dc0eff7708", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "029c68db26f669576fc9c564abe61cff868a3889842bf7bb7a9c73dd67bc9d53", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1b303ed139f35c2b28a23e9d040be0cc699b5bd4392d07cba3955451ad613b62", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1b303ed139f35c2b28a23e9d040be0cc699b5bd4392d07cba3955451ad613b62", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "4dd343a31ee80d8689de676164290060a5f9ba2b9ab43f7058e7422e30e91f5d", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "19116316cc26dfdb2d47fd614a410680dcbe84c5af205a3a828aabcecebb4d98", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "33b0980d12a96568052d5589eb6eb9c1eb0c9229ffcfea2e95a9ef1b64dff927", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e9448a165c19b4136eb6b0b1b0d2194b0f2320d1b88d22a8e91946e8bb1c8348", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "aaed75a3003868548ea0b0355521b5001e272091308fbb0144142898bb97dde0", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ac3fbdd417423379e1d724194883d1f20c248e60414f0ab0bdb47989356be499", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "362f3638e6904bb9cb28eb65a5c465ac305f1be563b2f075b44a45fa9fa8f210", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "2c3b3644c443b1d033166eff431a33fe515eee902fc2adc1901a51f6c6b7ac90", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "2f80534a10ac31b2b06414400f61d3af4ebf13e61376b24af38f2ebb60ae2385", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "a6f59c6faacdce78ce447ec89cbdea2bbca4e7246f59060cd9ad6c8daa1340c8", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "db6aa742fbd45f96f1d563995a1d89be7ea5326479091161d115d203bd87c335", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "2a14899628c9a8b37be13c36d0f3a82bc4d6e7746a80b641708ce028dc14d195", -"T2B1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "0f0c521b22014f32e8c4cd78a80d00272db4e363e67e64ca5fd6c277292449da", -"T2B1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "0ac142dc76b4931d0eb1db2afcf7162898a3ea35f09efc03e43563a087cb061c", -"T2B1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "495e3c575f858c7ffc761cecdc2b20dc9de2bbce32c17a69ce1c6f035e0999dd", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "14f83efdd6dd301e7b48a62d7edb938f7bef1c5f36288fd54a22a9977c58696d", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d25e23bb006abfdbc898f28991e070472432a7b50404f7f1245b48c173582a97", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "fb38a10813c7585396485c9dc1501e1d6905106eea6e437a8211b5bf6cec3299", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "70b491ae0a54462413384ea727aaf1bbd7ae72a9bb02d3712d38b4f50c91662d", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "39bfa8a2587445be5d0728d713d3a74bc473e75c93e61e2b19ce5012fab86eff", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a0e3114e5b2cc30be76d4cb07ba670a5371f769804e42bb240070476252c590b", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "d7616dce87db26760c484911c1b82eece67835a504e3eefc98dcad4ba8500aff", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", -"T2B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "b339fb7515ce902e6f9b0371363b751207db9b93c3eb7fbb4696c1451b211975", -"T2B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey.py::test_slip25_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_grs.py::test_legacy": "9e628d7d05f8343667985b281e77157602bf0793de690a7c71dbe2841c95a631", -"T2B1_en_bitcoin-test_grs.py::test_legacy_change": "fe6bfbfb610cbcedf779de69717eb6f1236055f9f3e8565222a9d5c09b1d52fa", -"T2B1_en_bitcoin-test_grs.py::test_send_p2tr": "bc2aaf6e10fc2faf4782c091249115633f9f2fcb4f741ab2aa4f61304c98724b", -"T2B1_en_bitcoin-test_grs.py::test_send_segwit_native": "4be744cb0bcc261764704d445a59c2c0ac579af8d019a951cf75df4b2aa13e37", -"T2B1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "abf631040549f6ef8695584b4071849af5fc7c931a77df785f7314df0d4525d5", -"T2B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "28dbc699c6c140e952e908b8708c1863fd6887c4d9ce37a706a576430c4bb463", -"T2B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1bf98959c43fde71a4a56f75eaac10772e22c563ae39a8ee31884cf6e0212936", -"T2B1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "1ee81415775f86e0d86d2013a27747f9c8ecf458f3440c958616fa4f30d2cb2f", -"T2B1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "2782a2a609b3221bbd257fa1b2a1c63250c859d977c773998167c133731b72f8", -"T2B1_en_bitcoin-test_multisig.py::test_15_of_15": "b13b38413381a038573978d7cded9f6797bbec83a96350af72b1ee547b6ba2f7", -"T2B1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "0d4fceca067d4d3f7e8e257826c216f0eca59ea012a688be9e00cede8c81c4d9", -"T2B1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "9b25feff7a8b56444567497c260242aa453196fd16574cd6908425864c864ff0", -"T2B1_en_bitcoin-test_multisig.py::test_attack_change_input": "407a65466c63e8f8d33baa69f9ed12da7798bc1b9569691cd1cc153594e2a183", -"T2B1_en_bitcoin-test_multisig.py::test_missing_pubkey": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_multisig_change.py::test_external_external": "dfb5b1754351506d965fa6155b5c3979d9d3892bee05f4ab6b74141c9421310b", -"T2B1_en_bitcoin-test_multisig_change.py::test_external_internal": "f7120966d2ad4bc7d2770734f7e03949ac4cc217872c4d4b5ce174e1e774630b", -"T2B1_en_bitcoin-test_multisig_change.py::test_internal_external": "09eee59d2128333e5c5513900c2fc5f951c6ac0fd01e7eca1ef85ca737622abb", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "42ff1c411d728ce67bfc99114a0470990ecfab1b15b96a70ba6c0912e3ecbaea", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "ee0ec7ece2ce0e6309d601412d744d73aea972e64d1abd42eb776c082fe1c654", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "9952b428ad515e312f7aa1e139fa30dfd446332f558b68dc28c62584bb86f14a", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d9ff4a38b53436d655a8ddb65e4f7635ce88659424d9613947bfce96e5cd3d41", -"T2B1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "788d640afdbc15a5b72fa7a49229c4a51d8e5bf1add2119880a83450267a5eb7", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3f96244768b52da1808a6d47e4b4f5759ec59ec07041b9a7c37ee3d277382539", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "7bb78992b4d49c39e4f7379cc417a647096d5bd46ac1273ceeaae0c1de14d805", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1cc94552fe8aca4039e349e720667c09e336ec03ee8d2c38c9ad0a4dd4aece55", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "bddccff18f8769d0e002971053e29d195a263b51f13dd865088e3fc7a932b522", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d3dafe1f2ef8007378c3dd3a63f6d818083f2d1d2fc4b44657a8ad3bc55c8c98", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "84fd5ea3f166df9cf42466f09c7a3824e3eb0edca3191f4ac43f834262c0a1d7", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "240eb325f7a0b984d31f41389ad7ebc103693b0b104189a0945fef9acf7400ae", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "32d689482d115154b9eafbc19666d57ea82af580b45565bb6c54eae149827016", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c25fd4cb97026303068c39dd3191618aba44ea4d65ceafbb99fdf730c6c91d07", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "2a6cc82571f79eded2cc9371ba4ff4afbb0b8980e363ebe30000dba672c6837e", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "0c8912320a3005107d7c9d59587eaf1c17effecab07d8f3aeb66f2cc2231fba3", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "80a10fdcdf16656c352740c4344bad2bd62c85f0b5c616ad7748713159b289c9", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "dfc6fdca2940af52f1ed90599d9bf7849aa4381d9cc95f18bbb8103446ff3893", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e066234500fab50fc44d873d97bb06349e43a54fd3702236a5f0b5fe39984ecd", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "546723a6256cfce3d08fd532db94df2a58e00d0bfa3252194432e198fa657264", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "4b6e004f60ab63bfe4cea91a9a5e7a35d1ba36769c4f2472f8121d57018bbcbc", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "b506da5f1c161f68f67aea59f54b998de72f7b53ee4abb7a521e85406cc8be5a", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "cd2250986be372aded714e34dbe3374afe521c036ea165654e5c43b6aed37fac", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "bb4cec99112ae7ffed8cd776f127c97a945602536c94044504e9d18c1d9604f0", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1d7c1670b324dac7f0c8c81f80aff72eef7c15c84d51a93c5e4d5d64ccb0912b", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "c95bb7567e849d6f7f3a2727aa96e66f881a042f15e1a012816735186042a2ff", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7d18bc469cc81017aa6ce0609afe49344158ec01734c5cc58638d8300589763f", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "264b37c100c13dad663f56192c196189283cd55109eec26e60255b06d15bbab3", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "3e0281d5671b48403f008df28bf23ac88032f81ba3ecff707a2de60fc46a2b56", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "4a87faf1b36cd0393652d1b7558afffc31241c79d4f2bb95ebd6e03d40c407e2", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "74eb29fad2b533226d734a9a9cb63d6da2d0ead3053c0dfecc3ae6dc48232046", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "f0e7784986c3360c5f96684e26ac41d6098bbe5379ad8849bb8a767e48bcf54c", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3715419c40f1e58f6f0209daa8773d3bcbcde5a6183aaacc4f88f9b1c6d521fe", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "d21c892d82711bc565026bc5de2efd0764eb1f595b47e29554e7f970b5170f6d", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "c7b296acfd5dad1d4d48e724d0ae5bf06d5d656e6f9943234e6803745d1d9f91", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "84666e2e64f0a5f8e64989404114d992b7db958c647b514a848e1235f110bf18", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "3ccd6f8f8b56bd524365bdf73fea1978ddfa20b1e38ec79b598546e2643ebd7a", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "1204e9c58645bb6999163f409cf151bf1b3051e96460157c525de2a0966e32e2", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "a5429736fcc6ca68bb56759b79e5a873259ccd7a714e12a467a33d55165df352", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "3c2306e1a0ff9055de93e1906161473142d2d0fb2a11c05c6aa50000b45f09d0", -"T2B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "bfee7588a1d97517f06a4e81d4732bdd04c34402f6135d5899c33104c2636cff", -"T2B1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_op_return.py::test_opreturn": "ebfbc38aeeda098320ee62863bd17ff540d8d7bbc7bb1feac9f61b923a97a9b9", -"T2B1_en_bitcoin-test_op_return.py::test_opreturn_address": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_peercoin.py::test_timestamp_included": "3321b69598953f1fd11e4bd340fed18c6e11e7541a5f4143640d7965f7213ac8", -"T2B1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c62db31d936c385120737329a84ff9fe59267beefa9f6e00feb1e0606454feaf", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4d6cd4001e91a85c9df6ab9d93068155e10085ca731f3f4eefbc282d0ff99ca2", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "5d1caafd5dda452e382882d1853b11d1f6695e04396ca59dae988a50f2963e4e", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "96c241b53e3cf6f8b3764e7914e6587d85e4870fc9c85436feb232b4586c5b1e", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "22705cef573f51e33f95c928db7cf6333086bf03d5559de524a26d732e9af281", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d2fda0e4f7b5485450e3036193f2a3f997819de8e0905077794138983f57c45e", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "00ccc63d037a62edb3ca567c16d8a6b27737af171803c4cc8d6c4d97479b8358", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "00ccc63d037a62edb3ca567c16d8a6b27737af171803c4cc8d6c4d97479b8358", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ae5da170ce1af9e87783c7ac8e55395d2a7eb7d442dae7ac3798a118f94e7680", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "067be29db90cf6f30d9b7642cb10aee02d5d200ef1a97517594f92e1a2dc4583", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "fadda387e14553f065171c8457fe86f642d35704669256ea30d245edb2c59283", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "fadda387e14553f065171c8457fe86f642d35704669256ea30d245edb2c59283", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "9a004646f50ab4afa80ece3b2a1f2c3a5d0c3b3d1a8ec70ed9b4497055b99a7e", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "c527245de51677f631ed1204d61c4add3cd28a1c78bb5a27825fb2656d65ea55", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "98dac05a444553eb733f4ebb76a83d5310f35f1d57f7613909671d02cb62bbd4", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "e1c8b0b2a0feff6256cd985cdf7abbcb68c0d76ebc1141758c5821c4bc5bde69", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "26c8a33c010252699c4ff999f7b5b1bd8f80657e865699875d3e082563d6bd11", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "0bdc267ba9c39cf60775db8c92d2834dd71e24fa964f85358a94a73de0c1f853", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "205b54e1971cc5ad481a3ea9a3f89c8d408aef858dff573d5e17b2745428b283", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "327e7017eaceb28e91d80a82c11ba854bac79401572f96dee6fb91c68e4b57b5", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "bc05b41e02877f5ec3117222c50b330a21560ff49791824029964bb51a56b2b2", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "fba47cd35892ac7c9a460fc12afb785f59613eb388d13cb660f335d2150bbeb2", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ef86018f0b266f2968275f843dfbaccc4aba05facf0c92ff432ef2f1d6fb18c2", -"T2B1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "73d55c948994957a7af2aeb2927657fe39b1f1f5db35075b246512a4cc695242", -"T2B1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "4a6cc434f3b34b1873ae65e584d28a32719b968b08a0fa118b5c44d56013e232", -"T2B1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "1ad627b76ff80e5c239efc7e9573998c84d9e0bc078eca5d599ab470afb5ed77", -"T2B1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", -"T2B1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", -"T2B1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "c90bcc09994ac08f91313f586b1f6abc9c85e4095473e29fe38884a94d756a87", -"T2B1_en_bitcoin-test_signtx.py::test_fee_high_warning": "9e034c289bf43d29cb02f7c00657fc1ecffdce89e95ee21b6df4feae79ee8ff3", -"T2B1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx.py::test_information": "9a422a813f7c67ab09feb2e57d6ad3f2f593c90542f180f102ca35a20854d34f", -"T2B1_en_bitcoin-test_signtx.py::test_information_cancel": "717dcdb751baa4d40424b26b3e415a486ca0d515a4066b84e0f34c3cb139cae8", -"T2B1_en_bitcoin-test_signtx.py::test_information_mixed": "023808399de27f5ea3484c6fce6557f45aed44219453e7c503e28369acf8ecb1", -"T2B1_en_bitcoin-test_signtx.py::test_information_replacement": "9521c2e4bf4c09cb010cc811014d21f92359e4d4d14d4f510a30f34e40973cb1", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "fe0a2a515fc4e1397cd3539f4113975348a5c0236d7a7ca3a455af7019bf7f93", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "9f514e06a9c0b68ba1237b1b2c79680aaac37bcc7ed81259a8367e2a488812bd", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "de5a8a22439e8b63f12088fb766126c5822adba276ec5741c273115d8f230c5f", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "a184091a70fedb8f1ef063df2155ca63f1694f85e135513e21d07f1a43c3e178", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d35c4bd90f36e2a4a9018a8d11a3f146dc566e48ced294ce37bd68ed6f70e1ff", -"T2B1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "fc870a46c971dd752958d3fe4fd127325af21b58f6c6a67a4cc45ab4e0e79e23", -"T2B1_en_bitcoin-test_signtx.py::test_lots_of_change": "614aa861733ab58b5c3b2486d1b06122876600bef1750baf4e17728210b11945", -"T2B1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "dba35a756b4072d89cdd7f709cb2fb907d39524abc1a740edacc94aea6730112", -"T2B1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "2324937e046144b7aec7048abf344f60530e73fafef8904c058ebacc1815c95d", -"T2B1_en_bitcoin-test_signtx.py::test_not_enough_funds": "26d52056f4225156037623a75c24342da3a4449e000e3d3a6374ddbce67d248e", -"T2B1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "710471660bb0197968c7c0f4e9c0c440cfb7180418ab59285b1fd8e868f14a48", -"T2B1_en_bitcoin-test_signtx.py::test_one_one_fee": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", -"T2B1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "2931ec5af9ae76fca217ae0a3ca3876ce005a7ca97c293e2c123b6a20e85ffb8", -"T2B1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "a7c36e7d9f78d6d3013088a5d3a7b45606f3c6a8559184a4e21e33a3ca6fc7bf", -"T2B1_en_bitcoin-test_signtx.py::test_one_two_fee": "9ae2d30345a0fd77ded67ce9e0eaad31df430d7004f328e367f292c936e0194b", -"T2B1_en_bitcoin-test_signtx.py::test_p2sh": "fdfbc617bb8ce99e4a3915261cbe37dab4885f992d625129f6d4b4e43630eabc", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", -"T2B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", -"T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_signtx.py::test_spend_coinbase": "7104203f2314660be25e38d3afc1397903ba5f75f2821a643d0d37b63dd42cf2", -"T2B1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "17c0938f0ec1c083c1de19f22c17dcd2e66a17e0f15a91443e9ac7590aa93356", -"T2B1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "fd287a9f28cb6f7805dc142397e97db43f01ef6c0e89d5d2b74e8eb262329cf7", -"T2B1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", -"T2B1_en_bitcoin-test_signtx.py::test_two_changes": "30a6eea8a7c8a0a12fb8e641fdf42933ea0d7d2a53c0e47e4432285173da9678", -"T2B1_en_bitcoin-test_signtx.py::test_two_two": "d1f5507be95e50211863e394a2562f226f27c81186456f29652d3ab47e2bc070", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b1bccbf8c9406da9268f8c32f9a58dedb4100c5ef77c8317a672d8e0cfd1c5db", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "45b82390c212a1703f538d14d8d3a2632e2c672080f1443fc4eab06b3f129f18", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4e5c9b0358d92655979ba18170bdd673e15407dcb3c075b55ba0ec665889e512", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "70abfc46abba14f0e06c1b197970ac0d8a03e12ca27a5294803b0ed773e163b1", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "8faebb59e93420021615b71bef6f25cfd1a58adc54440a40e3a5a5227d5e5a1a", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e0f9ecea7df742fbcc63b94b2f2981e00b0e649c1a01f26ea2672512fa36aaa8", -"T2B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fa651a3d73795053b95513f8e1384d79f696e46db71f20ec9af75e91f4f3a9f7", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "10517bdbe7e530082ada2e0246fe11bce0dfdc741ff71b5ce0b1bb33d4d4bcae", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1688871690cdf4df4f98d88cde523672923369f86f3bbc92faaae0bd5132c0ad", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "0f6b1ab9e3a80d96d4645a902edad4a83f384c774b78f4aa7fdb9c8598b15540", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "a891039e5dd65829aa8554277ca4e31f5a042e8dff282124864754b8895efacf", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c028e8e71c6ef7da9857f3696f383d339b6ec72d2cb71df49fffb0f56df71b66", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f95c5fe6cbad5ec7838ebb416cff4b77ca7f458d5dea033223e7dc6623802839", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "3e83b98315dfbfbd6c9d8fdefb86b9aa7e0537f1c869f76b64e7b70df09c258d", -"T2B1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "647905b99af69da785bae3b1edea3a59413ebfcf13a7e04b8f87b4d90bdce074", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "6eff2150f2f0fbcf3ce544396c81f5c8bdade9e4747203f712f6f67aece95c2b", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "87fe458201367fc41d3c0338f8c4e77187abaadd211490b59445b89d275f94e9", -"T2B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "3a186db5b25aabdaaed720a458ccfaba3b5d9ca718264f4bffab8116b8d1ed20", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "b74e61f40268e74a969aac293fe5e88f59b08c9800f64f792707aa45a346c661", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9cbba7dd4785d5db8beaeca7737566518b2a300292bffa94e46c3408f726aff1", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "b74e61f40268e74a969aac293fe5e88f59b08c9800f64f792707aa45a346c661", -"T2B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ad98e655cc06794f61469ab68e2a984141cd7c2bf69cf29623d178ed94e6b58f", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c072f90fecb07a693c09038a26d44eadae88854df02e0537aa99f946d641af83", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "249e65809ac735eec03907514834fa347df6fa2f44d63dfc09cc89defd85885e", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "44832d3bb1cc0a85743c73da1de20d97e35758bdeb346eca0d62ecefbd811ff2", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c1102ded23cd53b8c983962c052dca8cdaaff88982a2c2dc1c2d7c2841eaf9f0", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "cb85c264e20703fa89c6e592a8d1c884995d306a1be60c12173cfc41c9264faf", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "9ac715eb3c3027f9a5455812e2c2798830c618e1604f9e90c5c0c8f0f96c3dee", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "b5f892e61f507ef6b2947876d9b77af6c161359297c92744d5f208416696670b", -"T2B1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", -"T2B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "2143dc83a562569771091087d89d164a2f6218ba7e0fa8e2adbb5f802a305ead", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "bd1c6ebb4d702ad4172f710e0760acebcd8b657b176ab09d694fc793eaaff849", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "10a40e65979497c3133baaadcef00665c7c224b03babe623a2b56dacf936d8d3", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "10a40e65979497c3133baaadcef00665c7c224b03babe623a2b56dacf936d8d3", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "ad5b171dc879b4c19c6fd16cefd75e677bebd5ad4f2a95670d7a71c6a83f2614", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "73a423e458b85de0702f28ae7809bdd03b7507bdf5726e539df0d5e9c0eb0cfa", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "60947b5820e78cec105c9f2d7f2cb18d080e6f9ab4e786655eda6adeafbf5b92", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "ad5b171dc879b4c19c6fd16cefd75e677bebd5ad4f2a95670d7a71c6a83f2614", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "3d655937ab909053a65198be3b9728822c8a732efb1fcb8da3e1db897cb894ab", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8bfba86abe6ddf1ebdb50310bb124f3b3906dacf7c5ea57f06f75c1570a9665d", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", -"T2B1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "c175ec0da3d56c9be3a81a818ecc37c1422037d99083779b28608f12ff035529", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "2c5fde3de954e7da0d19a669256c38482a1325cfd8f9cc933565c63ece53a383", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "65f5cb6472d3a984ce48351fd64e8755976d0b565682c802f7aa6c48d4815939", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5acf5a8140256c5ac032c7d979c12f209f6348db06ff21f94b41851043a229e9", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f1efd6f85cdbe1137729bba1da137d8cf55ece9ca2bcfedadd3048b49fac9f7d", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "25803b02caf67d1a2a73c67c2d4c6520f1573b40ad5162270a6f89d021c8b2b0", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "be55d96d08c2c5d8096dca4a51821505490a82511dbf8a4a51c0cdc9449663e5", -"T2B1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "05e2fe9203a2d65a99b8cee6df4b14dd9b9983e2e7941d3be6483148cbd8064c", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0f086715760b3972fb8debe9faa16f61742fc82363847792359012f15c981a76", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "7e0d9076ab86bc04c6c31525d3635596f633e23e5f20a2e441c54477b6512045", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "b52b7151d0664b58646407b0ab693c4df0c8b80ce02000410b835550915451c2", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "6d7a607066384eebc8c3c7855f6ef8116447b85f1b87035ea0d827dfabaaa320", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "cf2bd2cfb9689fe351500236685ccff4195cbbf2036c8506c4efb6bc2223dddb", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "5ff74643c61544d5076abeaa2c4fb391e430bcb99f0e8975151c5228d7c39fb0", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "374bc22a6e14f72dff321a99218987e027c37cb001fcfac39011c56aae1876d4", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "280a1634f531c441e2ba9c67ce762f37d0e0dea4ae47149a944182791b81af35", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "f41b63dfc0b63e17bc3975fae538eec37bdf079c629e8be468a2a4167a39cf57", -"T2B1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "2a96c6b64f465394d5c8952915a5e484e089822dbbb8c467b449341a134d99c8", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0da93bd80a79b76261daceb0beb21a98753825b514a76004b926f6c89b6dd624", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "5d586d436be4b7ae8590b0c010845629e902e0225d411caa01fdd1875ef33c7a", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "b74e50e73f2b83584e49371d10dfee5943bb25cdf98d4c3735034fd082f825b4", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "6dad20992d92c4609cfd97bfad6d47a755b531cce0e7cba50f014a95cffdb597", -"T2B1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4ccf5f85cd263c97c797103acd207abcfc34fad9c3b9c91b9c7e9ba706005d81", -"T2B1_en_bitcoin-test_verifymessage.py::test_message_grs": "d300a6a3902b82cd6cb64d8ac6936bcaa187d429439b1fcd986512b71b5eef56", -"T2B1_en_bitcoin-test_verifymessage.py::test_message_long": "a4cf297dcd18edd16ac83a09e688ef0e0b6e049e7b40d17276a373b67e45ec9e", -"T2B1_en_bitcoin-test_verifymessage.py::test_message_testnet": "ad8d02f9ee21ca37bccad9954c696226b9b0912640d41a48e14ef7ea8c12df5f", -"T2B1_en_bitcoin-test_verifymessage.py::test_message_verify": "54c0daf2885f2f3d5693503cb88ab07332ca1cd80b46930f942366d6e0fe63bc", -"T2B1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "4dc5452a0e7ddb626a18fc43a3d8a8596bb919fccb1e955d5bfd0cd7344b8f8d", -"T2B1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "140bc4a2c8be416a038b0f16d9f7cce10839c6efa33a5cd436fa76246c4da5b8", -"T2B1_en_bitcoin-test_verifymessage.py::test_verify_utf": "7dfbaac3a12e196d28b4e828fe15be33da618d546ecb45439ad2f9a7191feca8", -"T2B1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "4debe719007c3bf6b024d5cf6bf59577862e1e34d7725257bcfb48dbbd1a4c91", -"T2B1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "aa396aeae8eba6cf46db5f302798b552b084bf42536ff0528151a63fe887ecd8", -"T2B1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "fff54589926dc1eb840f1a3b9de82d2a2a178add2c95b532cb8b6cada3498cb5", -"T2B1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "1ad37a04a4c25aaf7f54037f1c6bf92fa9e97e17a095c7d71ba4eadcfb103a21", -"T2B1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "19c06cfbfcc58622c9fbbe14b56bee7a8a5d7ed094dc0aa4d85dd58309eac6c5", -"T2B1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "cf9f0fee72a2c1822250f938ba980a358abf67894a193cfaf9e7ab39e746405f", -"T2B1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "314a767de1949e7ec83868654cdf8f3940624ab95db558e932bddea52518dafc", -"T2B1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d2b1c66934dab005f46883e0b4b60bb0d107f5ead5968c4b58ee9b5db41b6a85", -"T2B1_en_bitcoin-test_zcash.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", -"T2B1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3c584107e8bf3eded84319552b046ed43ee1cf65bb1f9b16084b834a95396e65", -"T2B1_en_bitcoin-test_zcash.py::test_spend_old_versions": "4e39f54bcdbfe1bf8d33b590d5132bc05cb64f4c4078543800243d1dfb15674b", -"T2B1_en_bitcoin-test_zcash.py::test_v3_not_supported": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "545061dc27940209d764ef8e128ab4ebf0c2d6bb87f5dadbd37931b895c1f1c7", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "4da4fc73f5a07547a3a272e6dd798e06f62127a5a9eed653178e2d5a6205f8c8", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "810e5d7133ec687da04d9363725fc4a6050c268be4d08d6cfa46fcdfb454c001", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "726bcf34af11d0a58da2a25294dd67673f684c39bf76cc9f0608b78930398ea4", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "c2dcbcfc84d26bc814f31d1006e7d40791570b082c4489d7a8838179ce5592bc", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c12eaf454ac811420dec797d1a507cfc7ff627fbc0eb12078020bea2e27725ee", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "99a84f3ba0a8f99f0c551ab5783a7c342841af89ba78d1510213ccabc71c052a", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "bdbfc17421790c0092fa44f0526c10806fb2851614f0d6b5e6402249ccc02b04", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "9448e09cb83042fcff9906e3ba478d243bc87a38b06df5138ce21b0e5291cd7a", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "5674bf02496995d198ee16b62bd5cbf425acf325f3dfdc8b3f9b0a7161089974", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "f202b5c6459ceaf39a562fb764d6fb8fc14faa99b80277a6f21c8c8f7b396e87", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "bc6a7a850c37fa9fd459af73e6b2eb9e5269ee2929e768a92008eb1c2ece2692", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a3d7d66dd984fcfe90be786bbec02d49346095f4fca7bc00b0c6b4ba9dac08fe", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "1e646757df11621dde64d521e36ede8f46e783811bf448e3379105019306f8fc", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "e4ab556c30d6ef3e0143476dc6a7b56750cee248a8d4d498cb529691677ae938", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "650c563e13e1fe80a2dc7caf1ed96ff28a143859ce5e6552d93251d312439772", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "99225fcdd71c7fb724b6ac9353c73460bf043d3605bd333b5b7a57179eb04e43", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "f5d93fd937cef667ea10ad652103606777aba71472e0cbb0f0c36604bd267a5b", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "987a869193c84b691a537636ea4d9e2f7797920344ed1d7889a1d534995caf7f", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8b77d03a8ebb38313df52fb791d02fa174497988cca8a38aee12a276b9e2f40a", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7bb21789875b919daef14e909f9dd67feca9fde052b8d2103a27d5cf84f65864", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "622eab71b22f78a7ecfead248c142f3fc16d670f53ad1cac129f099e40320e19", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "61b1b3cd8414f575908f060a0b503c7f6382bdc5283832a06c8402c450fa5cee", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "573aee9f27cbf862c4cc27697621d66b3ae24885a05f4b0cf5d290fce4fc9619", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "720326fc357758dcb45aadb5d47a8a76b2d79247aec4481b9967632108dc04c2", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "36cdd72ee5475fd78226efdfbee0298ecb535319255c39e0a96032a16d63ffa6", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "d81a53e3565b5790d9d7c95941934a81b68ca5875efc9db9aa2b307da6fe3fcc", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8ec89bdd02b8bd005df85f2600cd5fdfb6116714543a4cdc0537f8d649d2c28f", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "751052fed23351e20a26dcaf4d5b7d01e8c7fef1b00cde233944f2576c83f428", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "59ad2289ef1f669edec8b7a8a8f2db696be9769f94a81dd9f669926319337447", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3d36f787b6565bac89ac5592dd2dc1b2a0c7dc59ffd57cf06a73ab2206743b08", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8c8474ef42dcc5807d18598f2671ca394241841cd0f0ebd1cbe996dc8f8ae2a5", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2c90dc19c83cb160d17d2cd38821e6d5f75b2a9fe02a755a368823bd39782f4d", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4ab5d7c86398a5a61a8bd378f234999f147fa12c3f555d2cf090da869eb2777b", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7c0cec097064eca5ff9373b88bff58fa67775069fdc16fb4a8eba71f4f6444a5", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "0f3e255262332d8cc7c46bace39bb1dec26ce6b8704f422e8b7c554ddba3869e", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "6b3af4d685fec5823b8743e92c75d338beaa0446eb0d3b3b721c5b6ce6fcc1a0", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b708156fc244629863fd57b46bb00d357f37296ad5995c069d6cab4de77fd031", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b62aef52cd009e5ba3324ceeb3913972315ac86d0fd4510c814308e6ecbefc42", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "aa5615f52ae1a8f4c613e73e87dd4aec5539e21232f6752b5fcf17525931e8be", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a1e7128e23a8e8613a83c5ab86671a3b97f025a03609cc9bb35987f425151fc8", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "6693459df79b809151670e3de8b5f656e25248fbf2bbbdb2bd25449883517c28", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "46e5b9f8609dcc957ab5f2874374907a8c95746d36672ab3ac967a5956a64c21", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "33de2fd9072fd80691ad68e7f40e9e19d3b3e6e0d065750d985ed39d1e355324", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "20d33357921dc63afe299f4dd430f1f410a1750ee421496e511d87efa9db9bea", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "8334ea02738d240ffdb8fe3fd00181c97c3c00c9d1d22613cfef1daa66632529", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d768bc3fa7e19fc2c7ed3d4d0811484d23cb13a651c135b0a6fcdf03ba90a818", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "284dcb51422dada54ca2b0d5e68a80cb61ce66f4f782f9b71d53e97dbae428de", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "203de3e09bfd8e02815fbec2d2c9a32098bbeb22eb09ebffa22cedc3f1434e34", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "dcbb352ebfcf7364c5444d701d3e352a563d6bf84ce533b497280ba3a5793d94", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "63154a5aea226f4c70aeb4b28abdc71d6bb1a10d7eaafb3652e4a9579defe9c7", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "472e1cf5b66c21766eb1527b99b57f054da82a261f14e534f7f9bfb1df6f4eb6", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c24c903146c41e2f193d28c2250880946c0f052aa659d82d3d9ac2969fe8992b", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "024bbb54cda195e931f9f7a40d90c2cf4461a25f5b5d90ba13d4954210120e9d", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "43d673ce17770d64fa1612e3bd0d69a55262a84b15659a9b676cc1f293254f24", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "70b83cbd0b0703709b9199b61311bca59231e4cb90c046448937bd8150690d42", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "5795fa3b7d80088919d0bc0ed5658643bb1890b9485bbafcbf7ea9d3333cf896", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "fb75b1696625fc39e8948ed7848dbd24b11d6877c3613836f315848d3ac38ffe", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "9d5fb653fa20706d481bae70e1031933bed19f3ea7bd44625f2f508cbe1a81e9", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "30f0f80146d1a81e6ebbb2861e01464a2e87859aae1bcb4643063cd35fe7e827", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "24d56e209abb5470fdf8c0469b4e2b38a58b60fb701570bba697213955f81450", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "589a7ccce1847077201219a61c007106e8fea26d08fcb53c453ae75500f81f1f", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "187a50c8cb1ae5a0d807429d4c0d6826a2881950054d6424144bf270ab357cca", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "fddd38f2a5c0effe216f0600a318b1ef52730dea57636659fcbfdba3251c144e", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "9cd98033c1421c03f95c13685c068cb283379d8fddbe471c08cb7fcb91d0b1e1", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "373525f97b036959fccec948b425dee2839b50f3a0be67b6ced9cdecb67cbf19", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "60d982d450fa6545ff619b70aa4b380ca01760b1d5616264262d58a235f7661c", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "bc61b006827d71069f6996b56e549c92e7d6893424bf870a3ca06593500f20ac", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ee19e643f5413b5ecc1c342b1f36e61ce42818ad466df9b380ff0f8b51803132", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "65c4b2d4ef234173b7ff5ed5f00f65c89f9753ac46be3dfd870344124e94e37e", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4f9d5909a0fe423e69ba11eccf91416e4bf4aabf01ab4fec471a69766505d4e2", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "21ef4a3bc7ca7b0ba88c422a3afbdb64f3f8d629491a3f5f06c7d752e44f9eea", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "9b77590d58e509ab74e2ba86524f73329572c5eb0195be9e93f6e29e0667f529", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d5abbf0109420642c7203a29c083b045af55e333f4f922b8fb099a840151bb42", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "38425ccf3b5dbdb2fbca4b6d7f416cda91668f6afc4aabd8b32172d51b47e85d", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "58e5de56b1ebdc0b3b46ea44ea7442b3b5d778895c6f6916b942ee85c4071e87", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "75557e2a695e294e1afd4c3c9e5117f4d38749bf459cf8be85434cb6647f4991", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d23e589f172ebf44062f303da14cca030e70003b58f6456e399c407bb5ae84a1", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "da94713fc26459581a376bbe988eef7b1f1cd99244768460bdde50ee451c21fd", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "9ce997bf95b89d0a9715f204420980b125e426136dfad6e04faf5d0f994faede", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "41364122ea9e9e2d173707d82d02348a85abb382647f2b9f7a1e273c6dd13c50", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c75a822330f569d8afdfe02ad1e421171303c8d9fb3e9856bb93494a999030f6", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "81aef06c2f3331d7758db1601592c3ada3018132ed6792c1126d62a78166cfb1", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1cafa09e0c7a7c73997a37f3a221eccc61f157a68a941e10d9b9ea273edce6c2", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "a1f6d5c8d8604e811c4b8ddcc43d7d19d039c24aa2494489064d0ea3dd46c47c", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5c868a0786c0d7f73e6bc3264eb465ffaff1f327643ba3754214b2e8f0fe459d", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "49766385de678f60d32c2d2917a9a56932a32def07f96f5a198ece0eb2c603e1", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "c768c5a9d0ea4e0d7158048e59468edd7b23d621479294b586fbd966af9c6c2f", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2037381a71effd407e166945821543ae05d7e45dd5b422676a1d05b4475aaa3a", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "837fb2bcee435c8d5d053ee6833bd013d8f71e892fa12c8ea855b92629a0fde8", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "5cd974a14046ff919bf49dd62a036876f6a699c5ab6d332ef43ab353747c8486", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "cfa5ce72e18e3efb4d46dd07d477df0f34f200ba44b23034370b491c69856b75", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "633aed5ee504ab81f2cc9567dd76b70e9ce0a9affe903306e7347e33766144a3", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4e9fb93472cb3f70a9e5a64b146810aab506d93bc87b2dee6ef5c7713df21f86", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "599851b3275abcd3ee0632c8be9ea22b29e37e5b7f9ae8a8d06aa9ee02dc035d", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ee04ba3be9446590227e4870b18f0284411eb147b4d06cb6b5a3ec8401d5b8b2", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "6140a548f045edc09e51e9136c15e846cc4765d8d399d5b202678f7d2c69c221", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "299ca1f0f9cb043f849ebcb7f3ffaf2f829a021ab0f84138f6150686d993ea24", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "d324826024120eafda88dc4a1e1d0eb9005687e16508f9331f0f13423d221dc2", -"T2B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "589495fa423d26cf300a175b88c898fe5fdc6cd7074c22a0b56da72df6782b2a", -"T2B1_en_cardano-test_derivations.py::test_bad_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_cardano-test_derivations.py::test_ledger_available_always": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1a654d1ff506132e8b20d139c3ec6ea56ff39d7300f863ea8bca98a787ddeb0f", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "2a6a42f18730a656decf4d852f9b100d844c1a6b231eca08197436056143e1ec", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "8495fc9361d9df48abc927cb42185098078b8671a36990394be414b1ebfcfd49", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "44ca58f09b7d8ffdd18b18d58989493fcad5faf26d9d0ba556e4389ee4754fcc", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "78846f84fe3afb44e735751ad3a406c90c9462479d1deb6cec92db0a1b1be9df", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e20ffbb9b4666bd5349b036b357136c54362fb649b2a943165ec5471041a3ab5", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "713a7c1e1d98c594c4a991200a41607f20a02404c659a3e5533fb0bf7a44c734", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "7be273443954d5db80203d7f954fa7699625f43924a4ce51b5a749c03555281a", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "b7cdc3bb0c906a5999fb61f11fb4a2efbb77efa23912e9087f99a927bd75b9b3", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "4bd138a6a7964f50b592138512f7cc4673a7b8582ec51882e4aaecd742c7d807", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "abcb8f2afc65255be5f3569075c5cec635020344cd98b08fe653bb4fc1ffef49", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "a4133c6716f2b34049a3303c0058dba3dc09c518746ef5b4a7ed88ecdb628693", -"T2B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9facb40a3379b37d6611a35cc8412339a0f8a5f6c2343c9fd7feb353a6de8877", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "70609e795063e20a23b96e4d5ce2f982f4a2697c0fb4d3917b6cd0b8fac3a0cf", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "54742ab60446cc643bf358bb7d86a100c7176a69694f384f3f0a7f8cd995b5b8", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "a08ee7770d89b92b0f50f39e84e88201c0f3cb80a8fc87f4044b2eceab143e63", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0cb94d9efcadd912d882950bae55f27cef090d5392001299acf5c32a8bf0bc32", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "19f6de0c915cd19c968fe831abce1dbf827b1b5505618f1d0e79820cbcae2099", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "8673fd2ae6fb4a1e910d252c31ea12694b9cc7a6a6b7db108d2c36a3e91aca91", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "e2327cdfd247746d7529e9eefb43c35e9f9553131bf40fd0cbff344facd0d5f1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0ebb4685b4085b2096328bc2296dac4397c9cdd79dfb924a9cabd40e9b2d1807", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b73d0e5eb5b8d5648b5d943418f8b438114ba9466363510f37106d5b32180534", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6e7adbddb0bb40713a5298e7585c694a4e3a7af0cdb0b859bd2c1ef4b5044b1f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6e7adbddb0bb40713a5298e7585c694a4e3a7af0cdb0b859bd2c1ef4b5044b1f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "efbe2a8f406da6d6bbb0b2c3c96702a9ec4bdd093ea9bba4d7ed140d044b86df", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "d10cb96de4731be84eda48505a683164ef85c4c40a8eaccdf46b55cdd871a81f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "36df44933e068aea2c5c8dc3c9527ab0fd95473aeb1bbe8050457a8cf1c90940", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f32cf8b415da538144aa52ab21b5a2bffdb31c4d5156e598e32bc81e1f58224d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "3b284571c891b0de12bcd391120b54fa521ac747896551f6ddb0a187a11c9e54", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "158a82a2b0151263f31b223e8f2f1c30925c407d9fdd1b81c196f75115209063", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "3abeb63a980d0cee07df2cf01eace14359e3774fb1db16bc414f1fb50ad1d81c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "581ce2a17557cffe22ea84a304afc8636623c82f28ff53a27349b93cdb5029f0", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "3b284571c891b0de12bcd391120b54fa521ac747896551f6ddb0a187a11c9e54", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "ba3ffd638b5a6e3e50df2f8ee355af062a983e33f853dc13b04bed2c510531f5", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "41c18f927371a044ae76aae10b401e613f013b5e85b998a6490a8e3e59df32a5", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d7b99c72e1a96412d24271e6634248e069ee04b1f6cbf248a06b6ea20a043548", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "aee6ef9d97377e327f2adf6bede652c95c747444e8645189a1fcc0fb7e42d926", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "36d9f530f00f637401518df39cf59bcf54d31f7cc85c1f5e0627e99345c46e43", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6300e6db5cd6beea15ec87125c6baa0587af93c1bfef2424b0d58d5b67f50c84", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "152a9779fbcb5ccca0ce231f6c2584c7f9e55232944184f5341a4a0121e6fffa", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b9340f62162a6e610142974c650d0073d7fdadce514a76f4104663c37742476f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "003060a5f25b31b42ea1aafc3f8c8eb511a564ee1e645dd01048fe7586d226ef", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0ac6dabb1fcb6888db49464d4fdaa15d6231341ac4957352bdacb941f70f8512", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "1b192388b76c8da26faa1318376b08f11c47029792adaa7cf3601fc15a6a8d6e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "f8589db625d88f5270c08d842b18ca9ab924da92dc634f95f733b66059f7d3ee", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "488cf1a6b968b5b77a7c2cee0ac407b5f05e05af6858c678c0d56c0def0780ea", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "475f1731c788eb6a55a2383ec8c4fbb23b44d182c7672ff06814bcb3c8403078", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "0877fef8cc21b0e3201857118f2c21abcfea34c918531dcdbd91c1e4ba1708f7", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "7eba45854fc36bdeb8045c2c527fe9d1123506b8afef85bbe8fe2fd1c2cb1bbd", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "3bfffad2815e4e5c22854d23739314a56510fa155bef476ad808d3832f6ce196", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "b42ca62736e83f6c3b38765124673c720fe6e8906022d5846b375878ade5c230", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b327f5e1aa4db47111979c49a7dd991b8227cca836954f7555f46508de16fcd6", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d61f6a0c349c7532475f9b2f13cb18aa39b560543a35074637dae4d15026566c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "646f1150e79be8fa7285c1e520813a4880de0618ad379e0c3dcd0ea9a73afbc9", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "93be7fb1b1bb7cec0336a470bad734afaa6a14e2ca1e15026e764a4129693105", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8951c970e90eac93fcff5b4cf950c178d4156a4c1c7a756516e18c31f651759e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "f8a5f1201d07ed98cb03febffb0a30a2e61eb6ea1540cd25fd7135101927d4e9", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f1ed37aa52e934088876f70ae7a0fc2470540ef43e6dfc79778a2c7d64c84bdb", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5c081587a0c42ed299c6d47a4956ee6c3171bfd76dc10472f2dcb8dd3ddaf2f0", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "4a48c7508a2998f2fe3591fd9d03e91e41fb104be4908428df8ececa41fc2906", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "2634395c2ca09e13f13b5f1887409d44fd905bb0efd7b2617851b3f98318fda3", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "7bb2e7a23b9348fd9e9c5e63664978010fe960b8f7aeba606c4c59e0239e5e19", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "1eb96cb67a4beadb37ff189587c76a79d7554e6b6f5c6efc0f4822f0b1ae958f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f11108652b0c097c9c48631ccb99a73e87f0d8d43df5a7774769e1609aedc59d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "327f7f3cf53e41b81e64121e7be441b36e4bed7bc8261f967a4644b8da0e228e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "87f57313dd6ee584520df7be84d7dfff8479bba0281562e6d455ace92585379d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "59076df42e6a73608e096301379e92bf0f330ffca0ee47ae38b836e75f624f53", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "b2515ad0d97aead646e466792d2f24b528f8a12ac65312b934bec642e1ae5622", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "bc34bd53f2f1dae3c391e5a5a12866c0cae82129c78bf084bce68418aafacae6", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0b84064d8397c8331112024747ac07c1ee98ce4f6611427e66c890be0cd4762c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a85e958372dbedd375a60ebe5c20a80bcf7b97a1c9a30ba30ee95d7f6552fe1c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b1fa0c12a653e42a5bf09bd86f13605704cd1bfe25eb86b9849e316f96ccea5f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "fa52a33cd2201fc5f9f21973cd54f3a4591ff6bb280c4c5e6a886a6025fa73db", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0bd7b51b49f660893e8778f47a987c9810771c5a945d5e924a5e240749f41e9b", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "6b4e60be5469a834cb90e7c9cdbf7734728c4f693a4912c30052ccea631569a4", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "02c9e2f58df10d287f445451bc604d7e7f9e3aee4d4a71600bc1c9c8f71565f6", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4d1765a5884c859931f9f9563ef18c96dea375ec9e9f35b57ef90e310a4854f9", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "44f0f50aa3d3e1598fcae4bc0025d82766e1192849606880f6b6162099513eef", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "2ba78cccaccc3324f3a481031a6964887274e7fac83659dd0aaaf2eca5b49e20", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "f8fb1f2783f1d7641e36c1b34a34e37358131756708fd70682e050b6165eec3a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bffb18ac0999fbb15efbcd92c092f64a8e511789749ade41625e1f65edc37061", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9faa1cfdec3253eabf3657e2038920e5e0af05087edd6fdb67dc380f6310275c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "eb9cfcd19b673900eb5324eae0a8ca49de353466f47ba5b78c46002c0a2f2fee", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4a43a109ecfd7d300a07b271a01f09d7b7da5a3efa75c8d5a4c8b704a41493cc", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d611c4247d38c0e9a1fac28c0eeee9cff1ae3ce2addee508e021b6fe9627288c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d611c4247d38c0e9a1fac28c0eeee9cff1ae3ce2addee508e021b6fe9627288c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "e49a1b40da9c56628024752c7e5fea310c1de65e60e6bbd6c9c0d8a8e571f983", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "d6cd63b6cbe9b5d7c584e9b8416ba7ecb7ae42e885a939887dd653c60eb89378", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "90c69ce801d1261d2173d02b208c28a1f92baa337e0c0ed1358beb86c24ef217", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "39e5ac438b6881de1f311ba060077b509a47b73153af2b6c15409a1c74ad811f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9a770db81a1f5489d29d0d1f9aa417dc58bb1b1fa18bbadd3e03c243cba2f9ab", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "9756af9492954b810a627f03321aa132aab70f4313e04884657430f4e3757101", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "9cdbdf8b1fe632a413b176916577dcfbe937a6193e3c1262e320417a8aecb69d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "9318e6bdbdf1b9c24ebdae7f004b158639154bcbc42d977b87492230f7a13a1f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ccb7505c95712524eb2ddc1d1d54226fbb63fc174f46c6dbc7737583f1119d52", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "730cf9afc451516b1bdd0bd84bed67b18ea920f6af85abda2f5e67520fed6322", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "86e32da3dd8da1139997d01d9d039378174c9cc4d1b9b5ea9cb50f1d156d3e1d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f2b65af0bc53f38ee2d629de8ab03929fdfe5ab7d1b6af612a6e7a4f164266bc", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "aac64804f6ee9bc2a7daecc48e2c7981cdd14a2534ca4c4de02dce3bdc17344a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "d6ce2b7a6887d7e5a6a51e37094ba9d02dfdb8c5a55ed3af80943445a1b73a43", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8684f9d1478084d37050ad5212102e99691fbc9f439c6f40d69bbdd90d6d729d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4c015c747ac2fb01b4f72aac826f395d1f3635346186922c990702b2e72fdee4", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "3df066c28afc13f43328bae6d51e52747041e676f32f424044c525a179a7dffd", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8684f9d1478084d37050ad5212102e99691fbc9f439c6f40d69bbdd90d6d729d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "0bd171a05bd92033531b77b65f01cb82a43613f5418c695c8b47bf046fcbdf31", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "41822be60f1ef3a19c8e146cb96f5da8960186ac1ae43e520a86dc7bf8da4d7d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "98e41212e5e2595f2b0350ee24e160f24d340adaea13e685d1b2f1998caeac02", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "f640afd3c8f96de52e7abf43f9c107ecddc8ec73728d2b33d00a7f4da82f41da", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "073f7f1edb67a2b86a6a6412dca9c0baa4e9ae6351d1ebb490dd04f3a826319d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "cc8549afa850b8037fe442e3410bb75cca7d619890bc5c7192cc32fd324c412e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "2e2d19c70f2ab9f6a441a267150c382a3fab1787cffdc68c963a2fdc7a6796cc", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "4c23766c45202ed6f22af0e24fb711fb6fa177fbcbc98ac5e7262316ab433964", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "69a9704afbf44b5cb52c0eb074d6baab7365d8de38b2b06fc8a0ad4d8c6a5bb7", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "af530c1edb6a2cb39d0a826e949d013dc0a39046597c23678aec893fb84146ff", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8010eb573c5f7586f35800a931650692c34c54efe1b42a76ce21c2e636aed227", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8be8996586177cad6a828fa119561de9dc920e615f6cd23dcdc75f4c51b01a2a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "87b6df5678284908853b2b64028dc23cc1a752c72c7289673b870ebd717270e7", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "c258b0638761364d68110fbee1c64585fe98ac50241c334e576b02a0cfdb2ffa", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0d34932f31042d019dbc55e56e29c861d516b7467da4aabf74a130f917031b10", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "f9034319e5bfab7de839c0d31db566383e92f03400c473b66ef3063ce8a7fff9", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "f05b522706867ccc4d4581925106e0fec1f9c1cc6abe406e761faf6c1957845f", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "ba30d62eed7c326002762e8af70c1faf50603e21192b7cdddda665b5250446da", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c49115b603b977683c21d3b24f04f8394a172a53ee524fe2521b78ea1f510e61", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "58cd99d32df5de73d45a1a5ef32cede77619c03335d8063005896335938916b8", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "a49d073355d70bc9cac0decc447e727dde03ea51ac432dcd6c152f887a016ab3", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "ac7c656cfb484aaf9596dae64402e15d4f76d92ca6377ffa534307829b1835ce", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "3d4190a337eacb84f9d1af9b738dc151dcb5e98a42cfce16a3fc3f7b96e022b7", -"T2B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "af91468fe2519576e6352729dbc49d495746e12305f898f993159871420f0db0", -"T2B1_en_ethereum-test_definitions.py::test_builtin": "d4d1e4bb44a8e2ea4ae4c553ba358ce7ed05384a23c51044d98241e8ef453fff", -"T2B1_en_ethereum-test_definitions.py::test_builtin_token": "0b21ba1d76f7f3c2be2e6dc7f8dbd3fa2f2a4d3cea7a40184c50ceee4d4fb4f8", -"T2B1_en_ethereum-test_definitions.py::test_chain_id_allowed": "aa817b5395d9b976efe83f8bce5e475ef841c9521e5884c0f53b20d1257bb405", -"T2B1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "a13c4c52d514bf838726f7ebbcef6c9632ae820190eacda3c4672376c7efacab", -"T2B1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "b358529b5e7021c590368427fe7a16a5b9fe7f46eca0eb0e8c24551d0bdadab2", -"T2B1_en_ethereum-test_definitions.py::test_external_chain_without_token": "4e7e7725d7d93fb615d487154b58c3209266afd530343d9484ccc14ec1253531", -"T2B1_en_ethereum-test_definitions.py::test_external_token": "e3c871ab09e1fee3a54426177e0d20163edafaf34d667b113590af1c4155eea9", -"T2B1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "33ea9e56a5a7d40e4fa8229225781d521984ef2a4d77460d98c99b81acb2dd08", -"T2B1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a1bb2de5c72df145f463f02344854a2e9164db148d1b836fa8e6b3d751556fcc", -"T2B1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "6b2b697032c704f82893405792572106cb20fe664d876904870973dd1d324992", -"T2B1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b5854b35ff2192047be0eb7ad867a1e07a2b4d7da4cfbc1e4966d81714571698", -"T2B1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_slip44_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions.py::test_slip44_external": "5bd9bfde35e6a8fd664c5c9eff0414be7ef01642a571659fee1966750ca4deaf", -"T2B1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_bad_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_bad_type": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_missing_signature": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_outdated": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_short_message": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "811dc2b45a93c4ee24b821b302fe56d9091c00bd7ed2e8aa3d897a3b7e8e37cd", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "31a141e0c77e58a3b4f03eb638ad1610e909652fd80a8b828672101861427578", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "cabd4b0ab3147ba837b9ffd985c1818adb682ae23f5539384b3deb28ee12a0a5", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "0c5676ea02482c8efec70f854a4f3df588981d8856074595c1600dfe00c2cde9", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a748cc5bc5c15f9e11a1bd827089c25bec0f2326011c7425af5ebcf237d6ee7c", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "09f7b0723f16b99c91fab314631b98b12d67a75ef58de91db61c2b4d3a4289b8", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "e6b1a15d440d1bd73f634260ce93bcafbbdec1813ebc90cd5d7f7c79c2350ad8", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "201e023adfd09262087f362b4fb42af85483b96b683e2c7d713dcf6fe52af69e", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "2acd0e023697de3285526b28a52e970838e49fad9ebf56aea5937c662600d0d4", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "7ded58de8863dfaa44d472cec969abb9bad0905174dda171c32125ed9a2cca8e", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f95d9e56c7aed4cf4e54702f488753cf41f7899b4b4493202ab29363e36fe5ff", -"T2B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9335cb0261c56f6312bb3f64185f6ca9f91316be6477305820c04ad3c0cc6a8e", -"T2B1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "faced4a7d5372b3039bceb0ee5a76bcae0741fd9f1fb70e3ab9240c1e79fe0ca", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "db06170b97d4f2c112122b15d93096078b252ffba8f4a2df093b172fd0c9048f", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "9ed1a553e7b7c76ceb7d65200e24415873986806557e7056cdd2a460b9a7a59c", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8a548b807e4e6358fd9494e033f7627aeb32caa7174e14d277ca97819f2a988c", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "eb5a9b110ad0d8522381cebe05961703e1f4d338f1692b4fd9a43568a6dd14f6", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "6a1754a26c5625829c1d225d29f72ba3857cfcdc03d6aae435e4f48de1a77267", -"T2B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "5c84fb8b2828b3f0740a8dea83b3f3ef80f08c4c79701e588d69a2e3667e26a0", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "df5e11d8d0a46cf915ce206363ac114f4f7e02017868bb48249ee5806ff05928", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "bb90a9f7475069832ab6ab2863e0df56996351a92b8caaa4aef17c96cd07f56f", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "4caeb1c742141b0b20b53b073ba96c8e18ed5551d8baeb8a9fb219db02d39b75", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "92cf6d7654afa3fceef5eff0957431c5eab35018f9c08b923aa432363de62654", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "25555dbc9c683e6a37a12615b2b92b6b25568b2ea37279428c97ab191d91891e", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "b641b21c5902c40820e648ee53391bb55b5b8ed97bbf415528d3957ec633d09f", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "a0e09cc749b96597dcf5a8a692ca4c5e08f5431d383ff47f45523dae302af3fb", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5042e9de4251048ffafa45052f3c511c4c8791701e230707b1428a676e0e8ffc", -"T2B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "138b0c81648eb191a3044b692ae6bc46ea9c49dcf1424b61ddcbc50b5e5abc95", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "6907d0e5e2121774bc38b233c9d8f8849b429d420ce16960f86faf7af0e7dd3b", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "879567c25dbf359e8325711b4c81cfd3017ebe275c6f5f10799b13f53513c661", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "aa9d1cefdc50956833cd55ed2962e83b5d406e6819233a05c703cf297e518731", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "c615ad915d517dbcfdeb00fa5aeb0a49bb4e46293ad2469b4c658bc1f297a15b", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "9360e0a6ae9fa17843a61af2b384aa49f2f463ea98b87eb3cb49dd71829b9508", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "13d1772f9773e33e579bfdb015861b918ef873e69cd5d13ea86901501e1b17d0", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "a853f7bb2e397c727d57023ea1a1606b59473b6e10cfe0a8c45447bc20a3eddd", -"T2B1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", -"T2B1_en_ethereum-test_signtx.py::test_data_streaming": "6d38b0e1201b640a925cf60ca1c7c6b98503ba36ec6038ed409eda81c86392c3", -"T2B1_en_ethereum-test_signtx.py::test_sanity_checks": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "c77f2f1488c37f2c97ff0db9e25b6f7bd44b9c6b4fba2ae224352d87987b1142", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "23184ecbdfc938c3dc53e135b9fba21b8425e23a7e45bb260b5df19b48d24524", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5183de5ad256d830f94f0278da3c8c1a47058f9ea3dde9714bbf15c5bd65c68d", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "23184ecbdfc938c3dc53e135b9fba21b8425e23a7e45bb260b5df19b48d24524", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "5c7a9a61fdeefc03fa200516624cc793c4cdcb5b9741a8b6db91d74e8de78ff4", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "61b0f44fcf2b5a0fa3fa99a3f1387d0c1e37902b38fdf9deb35339c2254526ea", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1a5d15cfdf17f4aa204b85a431e035a64e8693bf6b1eb7671c3845f53e50c2ec", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "966c4de17b9cd3a16f72801ac80edc49cb5ee7111a0e305c0fac4b329dab1cbb", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f47c5ba45c7d41aff766df1d3e2f3a67a01c661007102e3686ce49daaf6e6c8b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "a6344aa0ee5fa54de993de7b770796531a26d7928917231bbef1b9bd846de2f6", -"T2B1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "becd1cf72cbbf78b1b73e7075b9f2e775587a1b48df32ff9413d92de1d57dc10", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "376c518549cdc2d429e5e1cb727d3dfb98c34453dc9c37779f5f3514ed54de87", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ff053d1856c67af52a039982a112f25c50f5a8900fff73a79a74e115080ede01", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "eaa26093b309d0f9d58327de6df76107e0fe96ff3aefe6fd1e761f74ce02b027", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ff053d1856c67af52a039982a112f25c50f5a8900fff73a79a74e115080ede01", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "6c1aac437606774c1b3ccb4d39f65f64029552a9bf60ddad9e9127e4a9f69c21", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "017d8dfc879072b952d478ca2ad07b517ae87931d4d9ba6a794af3501f19a907", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "02ff2867751453fce44248926b66f0b86120127b0d8bd7bfbdaa5138c348271b", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "966c4de17b9cd3a16f72801ac80edc49cb5ee7111a0e305c0fac4b329dab1cbb", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "542b5da607b0b9de781c2d2b44ebf531024ea9a6d69ab88bb600915952251aaa", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "7205121561dc02edc919030228c9ee2351efcf2e272575cc1d032f23b9747d5f", -"T2B1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d0cc4a6be5dab8a57e932b669e4bafa3f9911500f222bbec81b84066183eef6d", -"T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "1825d4be360362111e38db28a788b2250b1a420037e87ad0c1a25d193a462f4e", -"T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "bb93c331ddef290deec4079509bf93a6826162a01a46c2ef1dc07227239a3977", -"T2B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "eb6e718ab30bf5327ca9105e5621adc003660f3d97fefc269464addb683a381c", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "fc801083241509eb6e3bfef1bfd1adc5cd69fd56a24cec7e2ddc2b21aad01be5", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "15485f333a892f2faff89fc37a9335cf81dac4f68ae24253078551de090e2522", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d8ac36251ba70ccf678854e71b6466f3c31d557d9ea0a3484344278a4aad898e", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "75636257b46e9fdbf53d5e7000b5acd8d0d49d0cdaf1d7af84c4cf60305dcef3", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b7a696ad0d6503b4ef3a77a5275651535a80b3fb926cba10bf3e97fef6ef9881", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "78fcb413b5cb7b8a7dea17e14c7adeb497abfb8ee30be1b3ee93056f3107aaec", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "fc801083241509eb6e3bfef1bfd1adc5cd69fd56a24cec7e2ddc2b21aad01be5", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f74a78c4567593bc4fb9c41f0b44580f5e5dc1861b6ee88550edf69f277a99f5", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "3f0d9d42b37363c1ac64dca606f537ced82bf2796c49abf4b64d0ca523296587", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "87c8076cf658f90ab06706ddd3e0250140aca9a773e8f6c7599fc1c981f26a20", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "299f367180088797a7391fee745f525d6ec009de18124644f029b96be4ff5189", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a1d406be62f545b408ab70f10c5893660a223e642db085c3d933132c868b416f", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "ee4043f63c7373c9dffe9a2020e06d8ebf96e5c0cec71638c1f7b29fe0a3449e", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f74a78c4567593bc4fb9c41f0b44580f5e5dc1861b6ee88550edf69f277a99f5", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "0244cfbf5e697e1891c114f25d233abf1c23e9bc6152f37cf156acfab4775b44", -"T2B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "0244cfbf5e697e1891c114f25d233abf1c23e9bc6152f37cf156acfab4775b44", -"T2B1_en_ethereum-test_signtx.py::test_signtx_fee_info": "d339f7b8bfce09138bb235fa130eeaf3c25b6c7fc288c979dcf25c419f48608d", -"T2B1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "263993daffe2a77a46a17d5b598aca84de52ba0e051e4cb5de5c524a48192ed3", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4836f64a30541ed506819660048de7b3d6f056744627326b638dfde4fc22ec7e", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "77074e90e59da95d4785668cae3681082a904b03a24d7a003673bc5964c93065", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "a365a8a494506752f32ac8d40951e8eef7d469b6181052d9435b43d44c7d6247", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "2db75af86e1e409f70e34e9b382faef2b626157d60017b9c0b65e4e68c2c7f40", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "71d76409dd01b76a80dda5043c9c62d04c22d0787ffea2c7a50f3dfeb49dacb7", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "256035e499a39dfe573985622d26603d1b49af3f2f22a9083aa11a94f2d37d8f", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "3875d39d3cfdb57a8e3e064569494c6cc5c7a518216f1d62eb2a660cf6aa4f5b", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "eed7427d857da9265ac64fcdc100710132d042c757992affa5c0ed2f70448832", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "2b1a90d7c0d17ec065949a69283968747e41fdce2da7e0e4206f05c9b78db117", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fa9720d4590bc1f8225e65b3684cd7e7dbabb0dec8fbdc0bf6b1b7838e673301", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "2e080079afd4018103aaa3cfb41b1895fc735241f7d7404fe10efb270a4cae71", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "5d88497e2ed730dcb70fecad095bcee9c63bca5964c6f213b18a621edb7c0429", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "c6abb73e85fdb2317f22f612b5e8fe30bb93ff6b751071e91b0cf22de24f6de2", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "c6abb73e85fdb2317f22f612b5e8fe30bb93ff6b751071e91b0cf22de24f6de2", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "af1dc7cc49b1e75d7c1b06767503e31a9f5fee4f4d0b426edf98818b4caf449a", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "af1dc7cc49b1e75d7c1b06767503e31a9f5fee4f4d0b426edf98818b4caf449a", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", -"T2B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", -"T2B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "cffd4985f48bb8c64baede4ce18ae1a69dbd02bca4664ab23a146d5031ffad87", -"T2B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "468ff13a1c14b5a9fed5b58f0f1473448828acb96638045a29c6fed73e140d91", -"T2B1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "442f7f4ac90325dc91d1c8283513307737ba6698be78e8fdb05d025fdafd7be0", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[128]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[129]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[16]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[17]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[1]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[20]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[21]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[256]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[257]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[32]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[33]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[3]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[4]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[512]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[513]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[5]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[64]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[65]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[8]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_getentropy.py::test_entropy[9]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T2B1_en_misc-test_msg_signidentity.py::test_sign": "4ea3ff06287458ae5c08e118e489c0b432316521fbfa47ff587d748761f9c6c2", -"T2B1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "b4cb31f200b840788ed20a2dd3716262a4f90871c3ef82bc4c376efe14deaa5f", -"T2B1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "57c6ba50b97463b0345f91ebb7150df2e2bad4c3cf4d2665ba113520adc59abc", -"T2B1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d1238437828c2a306e66d1a6996cf86576426c77c7678e1c93746cdaa8b30149", -"T2B1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1f17ac968a8ecec85e30820316567c20ef84cced1368a03990c8cff953304318", -"T2B1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3fdbe671be03512f7d0df9f2f71c3f6a317579d8905437a9b1cfca877686e9ff", -"T2B1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "63f2b59a565a402738e0a240a0d3405d3581aa2dfac0b51a4e90fb329cc1751c", -"T2B1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "e0a4795c4167750f9b3a79ca5c8c5af31857a0aab102d1eb8f7722f6643656b9", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "4b80c4d49c18129ba59b3e8927d56440f624571f501ff478e4a4ada6fa27b3e6", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "11fe0e3365499994c3fd51d8478f0a2feee90daf5a449b5b0e664e99cff3174c", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "440a3ee20ecbcf54751182bb7094793bbab3d96df594b32908ddb312cb42c8bf", -"T2B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ebf4e6c074fb6662b822059dcb6c12c6cd9ef63ef75f4ae8b7aa70329e92f9bf", -"T2B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e39ad28c9f2ef69d14aaab827d06766a9ff4b71d6705a6e698e682ae6e515b3e", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e0844d255947779308662723f63f5e43d3670058c4bc4b923b63becf1eeda3db", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "b19eafae4aa68855bff9ea279f12b36773478e540af4b1718c4cee4b80880c53", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e1629f73fca6bf4faeb0f175e5c072f272b20159c3c00453c98ef7f978e57843", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dba6d6ff9b3be8173c92abfbf113ca1d5d34f4ba79431113042152e4b1d737a7", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7df18bda73519748157740b9cd0a614f27137573eefe9c4ff13f691bccfee4c9", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3bbf584dd24c429baa84103759d2f4e3fd1ebab4a991610c98bddd4f78849238", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b7290130812d89e3315c954d30e7b44713d28a7b11eb9ff4b8ee37f5bad06e01", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3bbf584dd24c429baa84103759d2f4e3fd1ebab4a991610c98bddd4f78849238", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b7290130812d89e3315c954d30e7b44713d28a7b11eb9ff4b8ee37f5bad06e01", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a1cba042d63d7cecba3c001d15ad8d22dd0cae0d859c396fb3eed465925f914b", -"T2B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "5bab31d37f412874570b376d49ed23869f9ebc16dc46840be63a4efb8de960fc", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "77f8fcb1d2eac768969de855dbf2c49097c353224be8ddf531b412f641922730", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e0844d255947779308662723f63f5e43d3670058c4bc4b923b63becf1eeda3db", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "c273f53065fc57fb06a3276d824e72490f67c3d272a5df1b8eb9c063abf4ffa3", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "43dc93150091f8158a0f09444bc7cbdab6ebb5a42975544f3de5ca60213dc065", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "45b5eb820d6ea5682a0627335840d6c7be41f45787ad3f1ed5fb13868b5f7c6d", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3267f5d7334570b22a5113b911a0bd118a44281dd1a30b1fad6ba87060a82431", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "30b012a6849df2c407121e5e8d8582c3ddb85e2a9b4e592821d7cb2c3103e4c0", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7181e6aa3191da7eae35232dcac6f6d20c5814311f70eee496aacc73b37c9681", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2086f55ad3a0819542dd1f9bbeae57bca92d9e6729e4d62fc52b4c7cf65d5a4c", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9b91282d3bfe74458762264acc9dc3e1e76fdb1d9a815932cac2c550eb5a7785", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "bdc9467bf7c51c17b035e0c885caf0a8fa14de0f1adab169c325391ce62ad398", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "92e96e9ac08681f19324fb53438670c92a3a22530c45c680848d9e07b284fb9d", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "399d17dd98d78d3f09a0ca202664d0b671870f3c96c39623ec15da1be7db171d", -"T2B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0b67fb6cefbf9588d21cb03e131c19897b9895903f6e1426f83ed1f8b445f8a4", -"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "3f7888a399358b24c7db8b30f090b9139f82a4f3a570c6f4f936d9d04c829721", -"T2B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "d489ecf703b8ca54ab957eb845413d72d4ccb023d73dc6b453b462c97ccc8b32", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a0784036e9daba27985ec8c6e03b94c64470398676f07d9451ea0a62a39fa448", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "29ec1912b45e476cb21763ac9373dae2210c1164f59431a2ad648495fbeefeb5", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "32eb349771a9f5c8fd63674391c8d46bde5079e5dc3638db4a2620302e3f7b18", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "2bc645f778f0ebcfcb72abee52a53b2d83b9c0c16d7dd7b0fef63e195562b3f1", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "78cdb520f48d6beb61e88e0d8cb4d0920250cc85bda2eb3cef0c3e4c37eaef9f", -"T2B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b9f625fb5e5271ab60d6086fa3f1b994fb01ebe76f7be7555328d490b719c280", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "061927456f5d16fcaa71d68793f7440d16f9f208d430a62f83e8388b69ab7dd7", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8efd6bdb4186a209c8ee6b3989d19b8cbab00de69faabd82785fafdb519cb178", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "1b882977322631d60dda1d7500a3cc070d0e0b1c407db1533d676a93dc20d9cc", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "89d8d57c57933248ba2a8d4ce0c83fb80043d05d83cf5ad58ba4adafe536ca15", -"T2B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "10c8a8c9e19f6171ec14cddd9f93731a79a75cd8649a87fdb700cf7e57f7a285", -"T2B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "787c9dd005bc2a80e79f777e5c0397d57f0eca685c1cf5bed44d4800c82a7fe7", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7307234c817ddc4815b705f3128a9c7d5793b437546a2718af8b6ff30bb5a33a", -"T2B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ce17027142be256ec78f921242e67cba054b10e452e01192d6556c92cf628d44", -"T2B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9cac3f9a21c6ebf519eb12358bd0b4f051c5a85fc65371e755b55e4d0d9a6474", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "44104e27f278734e9e276ee4b8fa27adc63016da91af6be11dab14a84f0042f9", -"T2B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "74a3c42e2ce8f25ad1c7e81f37a3477cf1d376802f19273260e09f4b64cbe99f", -"T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", -"T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", -"T2B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", -"T2B1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "df45787237e9e838e30287160c03af6b529360c7fcc097c433bba7e0edd569a5", -"T2B1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "9b52a92bdf30cea5dfc1bf0e9414bb1eca41a8a63d4b5f37cddac76089456235", -"T2B1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "328a7774a1d35b851403b19a9bc592a59a1c61567b9b0624dcf65f9f02f744bd", -"T2B1_en_ripple-test_get_address.py::test_ripple_get_address_other": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cc89bef106ef0794d608ae0f6d7a3c33fd205c9d07e3b37e25a7a83b42624be1", -"T2B1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "7b01010692207e7f1b9db3ab371e79904ed97f7be7e6e000ff1ca7a705b4e7f8", -"T2B1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "c9ecb1dd7770a1d68e92bbbcf7e146fd787494b36cb06ba1647e43bc24b23ed2", -"T2B1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "fcf8d157b2e1deee981b6ddf538b3924ca8753ca8c410c4812815c267853af75", -"T2B1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "22c066ca6b9035225ff9154b434f69d8a78d0e7e03e910d9f65965b9a36283bc", -"T2B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a2f72fbad37e8c90b3f3d337ed43d63aaa3ad273c8dad43f8f35672c3e3588ad", -"T2B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "0c426916a0a9066339fcd4aecfdac95d68080ed4625026a31d32630d8480a5d3", -"T2B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "0c990ee79c73a98cd670c3d5a3601221d320b749b70b138ffe23e9a44589d97e", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "fa3e17b0b68fd72f901e87b6744dec75174feefb421a47a75bdbcea1c763dd76", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "932a2101e27f7df7eb0de2cfa69a540e6036c34dc74d8515a6e0cbc7ee526fe0", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "333a85aeb8f4c10db10e2184b01bce9bffc76262974e2385a3213fb9db4a1e5d", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "de05e35f5a1ba2a5e0f49504221c0764d628a64d3af6a7539bbcb0f8f7f68b91", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0c249933815a2a135fc257c49eb27312dfb21b67856600374e3f259fc69b3a29", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b448e9673c0f6a044c4ba91aff726b59659c2fc3c51285c96d33e66450e5d7e0", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "780c3245e93f2b857d9f07b667a65461bca1eeb2b896344543da1ac86dac428b", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "3e8fc5fb075ae126d5f790a9d03f99bf7a3a0b333c086c4a4c23323a6f61f6de", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a18e26dacd17cd77cc0de16d66e3d5fc4e5cec73bff1bd1bc5f0ad3cb299a1c5", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "86c3b4226bd2de6c0d69ef1e35281de7e25a9957690251f9338f46735035b22f", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "8ac4578eaefd0e44ab559ccb439f5985f10e719a80d017cf0b7f87bed5c7ddc2", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "fafec7950b00549c02d9ce694269b639174bd0f5807c34901930797878cdfd25", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "45c5731ad31a7be98a82e7c34f8fd1a3e8a76337e0ba9ef94d0f537e39fb7cbb", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "193d0d5b2c04a1d840324df6a042d6e362dcc27dafc6765bec60358df104511c", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "7157319ba61c5a4d442220cffd36e68ae72936729ab58b725cee930c97dc4a47", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "eaa87e564e95a97ef90b642ab1d9e838983dc92d27cf81897b5ecf278c64da17", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "402279d3adabf342209a3e91893abe6e5fe2685383a3289c32eb9fa70d2e02c1", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2f3c5b1f39b4bb89dfdeabcb79a4a344eb4ca070a6865c2f7c28432b2a59d4c9", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d18553ed17c6955868380b11fe986f4afae56c7718b0c3d12fbab4def3a25738", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "bf9b7337e54782a31bdcf8c2af02644d112a9d9d714afa23acd311ee6f499c5c", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4e3cde6fa0e98176d0f0c1164f0046351d250c29e3d8991caf6e3c262990d8ac", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3674cdad06900e8531247101f80aa78c18eace46235b775d0b05c6d98c79b5a8", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "68eb9f66aef4c78cfbe8bb39b8152971ef39c8ffd0d3182580cfde63a1a60387", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "b7e52d46ec240c5d819ac8a9fe5bbfee7f5c2394bf6da97cf7072f03e732f540", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "63bc5863ca23c3f9a945be771a9f40bfd3e8ae87bd85a4abbb048c15f439e7eb", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b74a2a44f96da8fdc4ff00f06abbc15d765aa829f3e998bf518edd5f08d72a96", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4ee78c7dc15cf3581e93004b8eaca23417d9ed1ef5765456c061ce813421a441", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "626008749bba5d33e97d48a37d7ec70d89d90cf4618dde97f372e34a74984c62", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "5d3fff98fb036a3547b6c284dce35b029c8b343401374834b1a6f6fb81baeb37", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "59e93c9a1a0ee42ee6ca263a0a8e14d3a15602d50c3c0720b0bc498021dbb6d6", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "e013477a84b6b80a54870e6368785a7e08c23949d42ecfa5ec4c37d6b79278c0", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "3d7a9c91c98615d6a94d61727103a01d63c598639cd53dcda8521e8f6d0706ba", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "bbe5d292542064df519dc757e4ff43b760876500cd0d82cc5342f03422492b76", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "65c4fad22c7411742260a4baa3e1886afa310343e3c1c4aa09dd140dc8dc8931", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "65c4fad22c7411742260a4baa3e1886afa310343e3c1c4aa09dd140dc8dc8931", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "bfe7e58e072bf984975a73019af6344a8064a10b8b1f95f338231653dc212025", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "90fb93975f2d4289d0d13dd5412f87cebae62f97ab11ce48f9436995e7be5d31", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f683a18eda7d4489f48e64b4e54fc4ebd2cd26ab363b256bf1e8e2b5b7c0e664", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "7ced536f85c604810ea4ebefce41e2ed247cc99ae919d838d97897b2f30f44e9", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "905a91d39f919805c1fc3d7d31dadea861900f5fa9ff262a34ae67f743779a60", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3974167d03e0884b1d4510319dd84ff0de0386554426c0f6070da62d79c591b2", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "6e1a9c2a05df5b7d63467f2a887470ec2d0967f2b52c3ffb5fccc1237bb97cc3", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7333f9f51ba7c84367a8af8be5c7725fd2ca914704d59bdd2486648653fa00cc", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "272024f567f6802604cb79a8ea35c9762a40fa9d250d5ca467611ca408cb06cf", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "1c00f3411c4748304409c03ca8a13e8816742f013f8a29be765fbb4d5bbd6bcb", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b377d0a3eac1ca7e4d0f530418cd8a43e222095ab7d0ed99413e34368884e4c4", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8bfb106171deee9925deb098ca0d771ae2f8e34ed3bc50e857f9524820f6a00c", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c8aa13529eb28f864ffec81bbabcd5cf21e31dd79d99fa0e193ddadf14527133", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a7edb50fb2638950704d2cd1fa4fff9e56bc0f3774eb40989d700299861ff2df", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "7c33e2ae4b7672f620ef0d6845c25ee9761fb41c2d20776ac0c7a0eb4bace55b", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "96900f5f1871a25cdb8aa0dc2bad509eef780a98a61e48074a89967218da6f22", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "523d6efbcd9982369622c22689be6a372eab0fe24a9a31f8eea63ba171e580e0", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "6b9135c25781ad82340a3e85a16094944151c9dd619a04fd9fc127fa92e6623a", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "163287fb813dbad9c4638af9af7dc1835c9ffacd44cff4c30c1bf3e41dfb2a9c", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "2ed3a07f31c8fa5028400ba91e722c4bef7969099c3f77d725738545b9f5a2af", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "09e501884f2a977a778f9241bbee3d3b1527c7bfad7659454841d0e3787a6cdd", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "98cf6b34098cb30a6462c122450a4c15e1bb80fd6e7c2a53df426f1ac72a1004", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "aa34789bdc46246c5fc6753b3ae81faf86d7349ad4226147f026f6bca75dfa5c", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "8a12f4204a9ef0e6f725c46ce79adc9041edc6e2c45bcf779a253df5ec8279f8", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "db3539588ffa90933d2703d819afdff8e4b0270304d7181dd461af99d93f3431", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "331218a4b4cf09a4b6dad28bdbcea0b326dd1c8f3064fad99ae3834491b05f04", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "0da365c718bb57cd72ca9e5d1dda459edc5e48c456808ce75ecc82b85ff608e1", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "087c041d718e48e52919740b1c8dda391ac720c005cd66b43a2c28e8a75a07df", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d9d588a058f8a867702679caec302b3b0d28c74f39dedd1520e734b9f14460d2", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c32b2b91b052edb7e1fac746319ea5ef661f0e6ba69a59650f03bd27d8511316", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "3003a43b3deb679b61dc84960ef585f392591913a01054bb43f883c29a97d202", -"T2B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d343818c5ad8b91f3a4c6dccedff98de9b3a5c90a0ff40e9ddbad50522848d3f", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "525c3dc0530220043088724517981cc71932753a6eb3a84e420e007a8a2a12fa", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "39f52231954401d77a679d00cc9e087fc773ffdcc09a2e346077eb8658fc2f00", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "41756d94190e4022ce3d7bd9fe3975f7cc63cf809d2e73c7a210121041fede9c", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ef5a02abcb966e4a1f1f4b54b9540053ba9ec3a9d4ead01fcfa800e8c62f3931", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "94242a939cf5a6d0a3b2f9eb9c8e5253314f061d488d777bb334727416ec5da9", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "0c43d440d5bedb093138fc8883c0883d65c955ebb17f14f06895b14afcc7415a", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "cce2953e654ed94aeac603ca1bbc2dae40012f537d50298178b704fbec292795", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "6c60d3f003f9a7203b8d219b618dc3ec4a2b94d9bf3662028734e30376244799", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "12726f0c084791d92f195bbcec3761dfe19fac3dfb1cdff9ffd1f2b89df5feaf", -"T2B1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "914fb776985eb4ba398b27087ca33b894c5971d98323cc3460b3987d3e0cc40b", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3c93204d2d46d8b056a975e314522f790b16aaf60293becdeb80221fa344c85e", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "34b0a87b00da5d82441d741102952dd032e30a528248cb9aae34e172dbf8b633", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a21c025e4f654d74842ea9a683ebff8dc559160a635a9d035a0ade6a4f7a4d33", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f294ce3bd568077c319571d1c46b6aa568bfbace5b034efb5a69ba89e25a47c8", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3d8732b3370eac774a32025e94230c7a15ae269bc329c7530c61350691165887", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "f3f1a365442b60ae6d7b77779884ce9ed638617dc2322d69e2ae02bd5a691704", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a2cd2ea0c9f73e6569c01f390bb2f2b836fe7bbd4da00372f89587d9ba6e5a81", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4f7df86bff1b036ecf0d8f087b855d37f17b143353740f041ec660495a4bad45", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "aa6fcb823d51bc75fdb175a7529f861b499c7f455e72657fa7c1283037ce6406", -"T2B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3922d9cb650ce64e2ead7720d1217e98755b1a742d505fb6da9afe531f38ea46", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "00419212c5cb1b9c31dcacec46fb472be08019fa82baa6a978942a478c8b5cd0", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "72c6d04563f1d7a6f840c2cdded67f94e50405b1603144e364a66e56812f1f6b", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "09fe7367d16b35311fcfcb070c3b76bdef3c8a7fb85713af9f64ee908498ea0c", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "ce42cc79760f9d8f07ba2a70841a86272f51d99811b40187182b31a23c4b07d7", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "5e3c7fa84f906cd97ceccd40166f24017352488c3d71d3a784fc025423b002c5", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a1aac4f91cacca5ec354eaf40f0fa524683135c7412b586e6c4ed4e22f53bd93", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c69daca444b493b23dd9b9682a03e5b9f993a7d2276c2285f61629231b43bf15", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "89d398b2bc331f1bfeb85386dfbe020cc61a1c906ae196e73d73de2838839fe3", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d6877955f02711d8da08d8f3de6f85079c0740b88fdd525d93cba00e50912a11", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bc268b30439540da1f037ea83f438c18b7db766729f9fbb5c590257da8efbb46", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "83ebc1a4e3922f720cf422ca6e7c3749bf203e151d463b803f26d3554f0b29bf", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "9776a07190c35e202da74c5a661068550b58325dc7779b51a9e9434f03417310", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "17a890bcf0742d462b8634673833a6658b1b873bd4d242eab6a2cb08f6116f41", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "00aa221b9a976c7f4859c61ed5fa58ecd4afd770e56deefc9a8a5ae1dbc98770", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "6089998b3e02e6461a14163b6aa61adee5e6551c6e7e2ecd3989fd1587a63d50", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "70462417b0e6f5de235b78a4f50f9283f5824160f7db397832019ae8aaa4731d", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "95b61e5185139d5ee5a0f652f390e0c2a605921f1e14e33fad21c0b1915aee69", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "abaf8235cab797a27eb25ffa0abb21ef8bc7dccc7770561cfd12e7b5441489de", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0f0af9968dc57c90d8cfed3c6278b89b5dbddf67724d3756696fc702ae8dbff7", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "633dd1e8b2b694e6a237c3ba2f17f5e48b43d46b9daf5cb421a4434fc5fad468", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "93c0f0fb8f009d53ca3291158581e4afd8438e4fe5bbe130a18819ff88c181e1", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "2f05323dd62a5afafefcf444bc78b80cf62f999babdd12c12582b8d2f60e4fba", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "f7b3554efdbbf476956608cdb2b149757f3f87d05a8076857feba132c54de662", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "903ef9c3ff8fb09a9f10be1eefd55ae74a250d2101344b01040ebb32c392512c", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "5284ca685a720a8d5cf7fea05924057571a657a97696541f984016cf75139ccc", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "a4b0d9a35cf8abdd278b47cc26ad90ee5ffaad067f1845f6911411c5888acd61", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "f871bd95a6cae6ba83acc351e2bc23c0d32bddb1a46702456500e956371a10b3", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "09d4e09b215153b3da47dd8c4c54a42cc8beae6e2f469717005ed2d63a59ab76", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "48a6baba52ec2e50051c7c9c9d7d153f5c747d3c41c4b5b2eec5257238ab84bc", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "95b61e5185139d5ee5a0f652f390e0c2a605921f1e14e33fad21c0b1915aee69", -"T2B1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "faeca4dee012ac4e6c4ca07b1661a210972bbcc6d2759e1ad11aca5b5b2b3d2e", -"T2B1_en_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"T2B1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"T2B1_en_test_authenticate_device.py::test_authenticate_device[]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"T2B1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay": "c01e9f80e38f4ea59a1728998228c16db2a6a0cbafb5611faceac79c11096e2d", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "173088c6b06b1d100a25cdbf367e8428eb2bff09d6bc31d322b4f88a851f0980", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "c38edd6c9d73d7df1bccc7912d992cf487013d632ee36cdc77dfff528cdd87c3", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "f62192e0b67b20e7a40113b9825dd2505e9657cca3b7b17a1b629f5d5280dd56", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "e3917dddaf58f990417501fea03a5fa4e84923477468f917a0e94f536fd4683b", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "55a92aaebe26687b202170e278f9fcc3370621a71285ec6934a2a8d73778b0c5", -"T2B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a753542b62e6de6f2f1771376f76c8687fbe1ddfcadb46af961eb94e560a6b4d", -"T2B1_en_test_autolock.py::test_autolock_cancels_ui": "0b49d16c09192bf232a92fc8017b0b490f29868a376d3e9336dd1d87e4e57f20", -"T2B1_en_test_autolock.py::test_autolock_default_value": "d820e3109ff5593c4c3bf1cdc04644ec5748da2e05d073298cc344d4ae10095b", -"T2B1_en_test_autolock.py::test_autolock_ignores_getaddress": "3a3f89eb30da49f947ed43ff716e1dbdd209ea0dfd324883b048c4432b09fdf1", -"T2B1_en_test_autolock.py::test_autolock_ignores_initialize": "3a3f89eb30da49f947ed43ff716e1dbdd209ea0dfd324883b048c4432b09fdf1", -"T2B1_en_test_basic.py::test_capabilities": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_basic.py::test_device_id_different": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", -"T2B1_en_test_basic.py::test_device_id_same": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_basic.py::test_features": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_basic.py::test_ping": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_busy_state.py::test_busy_expiry": "0cff54da20c3c70d5b5de75a45fc265b29683fe322ad498f947656118691eeca", -"T2B1_en_test_busy_state.py::test_busy_state": "2fbbd138da64bd6e0e3788b22e7cedff8c6f10b76dcdf6aa089d1f8f0caa19a9", -"T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", -"T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", -"T2B1_en_test_cancel.py::test_cancel_on_paginated": "3091ac71ff4b66b9f0182122cf29539eb424609570cf4c8ee720f8eab5ca3b83", -"T2B1_en_test_debuglink.py::test_softlock_instability": "9d918b55629ee90e760f62b1b8b0a972ec7a76858f2221531325193719a9a235", -"T2B1_en_test_firmware_hash.py::test_firmware_hash_emu": "07a18c9e52c1a1d865fbe57960ebdafaf1f32a3d426af991469680000cbbe0f4", -"T2B1_en_test_firmware_hash.py::test_firmware_hash_hw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_language.py::test_error_invalid_data_hash": "0cb01b8002472dff316d6eb3ba901dffb762d88fdf61e5ef8642ca7772d3e71c", -"T2B1_en_test_language.py::test_error_invalid_data_length": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_language.py::test_error_invalid_header_magic": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_language.py::test_error_invalid_signature": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_language.py::test_error_too_long": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_language.py::test_error_version_mismatch": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_language.py::test_full_language_change[cs]": "5d3e1222ac4ed3afc376923c5d1e78f0faaddbb00de766ff14b85bf5068d5d20", -"T2B1_en_test_language.py::test_full_language_change[de]": "a4b4a4eb3ac5332f7628eb5b82f93c28c30af4297fbf462167637e4d72300073", -"T2B1_en_test_language.py::test_full_language_change[en]": "a9c383b584d24c5aa9623b7955fe3e45dcf6016dbc0327a7ce9176ecb0e4d5d3", -"T2B1_en_test_language.py::test_full_language_change[es]": "94ead6f9d0f308f60ffd135c9bbd5012a30f05b4f44fdb22286ae259bef9e205", -"T2B1_en_test_language.py::test_full_language_change[fr]": "2f3a0e8541cc7b96dc983d4de2149e4e2b230b43e1971153ec6bc82e7dadafb8", -"T2B1_en_test_language.py::test_full_language_change[it]": "70c9aed14d8c1fe7edce6845896eaa011d64b559aaff4e3cee23d4851c15ac7f", -"T2B1_en_test_language.py::test_full_language_change[pt]": "9b0ea7f11a9bd06518b0ebf855190ce5af3246f948925a9cce5491f05c749f5d", -"T2B1_en_test_language.py::test_full_language_change[tr]": "a030f3ca4fc62db73260e896eb0d6ad536fb74d015b39f310f9b6f11dd300445", -"T2B1_en_test_language.py::test_header_trailing_data": "b0f85bab7d392d0dc605b67a47ddab802d355f71c6038b44b243990e1f73430d", -"T2B1_en_test_language.py::test_language_is_removed_after_wipe": "e0c233271abb84b2ff487e3e2d8f4f111453cc7315af6e8c4d376dab8a9f0310", -"T2B1_en_test_language.py::test_reject_update": "949fb112e684d3fb8a204a8ce15a202ebe9613bd3a453408138b3e54bb42e99a", -"T2B1_en_test_language.py::test_silent_first_install[False-False]": "8b4ff15060372f2e8f4a59a8c97bd4afd77b3d57d5268000654d57e676dd7523", -"T2B1_en_test_language.py::test_silent_first_install[None-False]": "8b4ff15060372f2e8f4a59a8c97bd4afd77b3d57d5268000654d57e676dd7523", -"T2B1_en_test_language.py::test_silent_first_install[True-True]": "5654350dea70a8214c28f6046b2bc729fb1dd46b6fa1fb2f8841737deabe6a21", -"T2B1_en_test_language.py::test_switch_from_english[None]": "b678ce93d4acfbae9791447880082e747710595dfcd3b5bf748151f145c03377", -"T2B1_en_test_language.py::test_switch_from_english[True]": "b678ce93d4acfbae9791447880082e747710595dfcd3b5bf748151f145c03377", -"T2B1_en_test_language.py::test_switch_from_english_not_silent": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_language.py::test_switch_language": "b74085538e1bb7f0217ba5880c41542938ce41ded7e2499b1807c0aaf51d6fc7", -"T2B1_en_test_language.py::test_translations_renders_on_screen": "47922d94fd02016582810dea2286605d73f71ae325532daa72d55dc94ba7bb31", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "6e8c260e0032be944a2a02caaf3cced43bd2105d501db3a311fdbfbb5e3d6952", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "ab604d0dc62719f65a329e0cd834b076d84b8e6911445d51d4cd77d1cd4f0740", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "6629641be9c219175d87a006358d20c8a68e05324c5b8b047ea8fbe884a0c7a4", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_msg_applysettings.py::test_apply_settings": "e3b7aa4669dd38084a1b4942741e1cee4feb574f9638e56e9c6e2a0a0bbd5174", -"T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "a82a4ab4ca8d905ae55f12474230a72d3a2c6b495af64e659ec6093342b93e29", -"T2B1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e595040cd60ac0e5a31a768dcbdb517c5a8ca28e02707ccc35be95a0e516ac95", -"T2B1_en_test_msg_applysettings.py::test_apply_settings_rotation": "360ab2993d6610006f922c54c79ddbc0a5a4d8cadc5333c634db5bce4df6a4ba", -"T2B1_en_test_msg_applysettings.py::test_experimental_features": "cb18c97c7dcf8d6f839d207efe7c13a2448b1463e3b325d7be3c865630f93c58", -"T2B1_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", -"T2B1_en_test_msg_backup_device.py::test_backup_bip39": "2c19ff45c8c02dadc065f360af23af8d357dedc066711cdc30c846cfc07a7d4d", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e60ca26d789e9f749bbacf913bdae3b2941fa735abdb4450560d58945d62aa1e", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5584e1ccd6e80a8796d856374b10ce94f1a113cafc002e125fec4edf32a3a533", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d04c60fed9e5d42df72ff9a25a42353b2eb02490f7f03d8bb3822c453c2b6cf8", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ac501c19e3901a16577946fd165ed6cad15f46e0172ae3d95866b558e151288d", -"T2B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "81d5804eb846dd513b42b684ca6477841a673e81dd8a30dabf8c55affea216ca", -"T2B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", -"T2B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ad9871bad4a93df7cbf27bffd1709e539a3408c1b5e3c5bf458e9946a6b43ad0", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e7dbd89723a50e0b5ac4810ab681044f6ae3cf6c203beb346281bd5d8677dff7", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", -"T2B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c5643d2e2f77e32df0d695fa892514bf4f49efe4092314bf3236bfe3f0fcd701", -"T2B1_en_test_msg_changepin_t2.py::test_change_failed": "fa4dfa139d8647362ed0d604a459c338a8a21423660b0f42a086c784cbe98a15", -"T2B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "ac9d4575a3d8b3f04b01c7bc25f7215472e127ed9c0a87cfdab322b69333678c", -"T2B1_en_test_msg_changepin_t2.py::test_change_pin": "25a65cd0be2af30dcbd0b227b939d9a559e7e779b60adcb16a50aff1490ec87e", -"T2B1_en_test_msg_changepin_t2.py::test_remove_pin": "f5dfd810553a41108ec3379e1a7dd74b5e8ef23e0302f8b95cc99fd5152d8009", -"T2B1_en_test_msg_changepin_t2.py::test_set_failed": "200c1497e33124deadccd5b84e68616d6d27d03a3613a00055ef733604a12d9d", -"T2B1_en_test_msg_changepin_t2.py::test_set_pin": "27391983afcf9aa42602b4bf955b4121130ec16ccf4503a078378f4cde4425fd", -"T2B1_en_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_2": "cea57802e624373fefb1084a361ef997bae138e7e062159ef9bae0e8cfb536ff", -"T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", -"T2B1_en_test_msg_loaddevice.py::test_load_device_utf": "0623bc723e20f4690524a8dad3b7f2c0cf04e45b2e0202788e75758ef4a2156c", -"T2B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b90e8e9393e604b4f83d718aada5e0f93bb460af49652b20ce7733b3a2a00ccc", -"T2B1_en_test_msg_wipedevice.py::test_wipe_device": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", -"T2B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc", -"T2B1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc", -"T2B1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", -"T2B1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", -"T2B1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", -"T2B1_en_test_pin.py::test_correct_pin": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", -"T2B1_en_test_pin.py::test_exponential_backoff_t2": "8272d37539ec7f2cb0f5f830ed8587bf22795e776422b657231017909547d8d9", -"T2B1_en_test_pin.py::test_incorrect_pin_t2": "118048abb1aa461c0bdc2224ba21c9bd6ea400926181baf3cf40928d2d4af29a", -"T2B1_en_test_pin.py::test_no_protection": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_protection_levels.py::test_apply_settings": "3dbee4c40d0015291e517929fed12a171419fca4abb4171be2d26d7971dbcec0", -"T2B1_en_test_protection_levels.py::test_change_pin_t2": "ad655f57c18315e9435937e2ff7032e4126485ccc86ba9b04c9a97ab0bf67505", -"T2B1_en_test_protection_levels.py::test_get_address": "f2e6d0a99075e8bce6214a65666ba8fa075bd70b3cdf35339fc5aedeaa433512", -"T2B1_en_test_protection_levels.py::test_get_entropy": "3703bf4507267a8853962b0aecb9f850e7dfec0e3c63e2766108c31a3b2612d8", -"T2B1_en_test_protection_levels.py::test_get_public_key": "f2e6d0a99075e8bce6214a65666ba8fa075bd70b3cdf35339fc5aedeaa433512", -"T2B1_en_test_protection_levels.py::test_initialize": "6fd28fae1513ab90c8d51ca862a6efb462238bed30725db4feb4b439d021470d", -"T2B1_en_test_protection_levels.py::test_passphrase_cached": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", -"T2B1_en_test_protection_levels.py::test_passphrase_reporting[False]": "55c41ef798d2ed288edafb144e84ddaf57186064cc4bd4b7e49b9b0a5c7b5f0a", -"T2B1_en_test_protection_levels.py::test_passphrase_reporting[True]": "1d09713ec651cd6ef919e50f12c7014b7089277e32830ae22ce237fd94e47b61", -"T2B1_en_test_protection_levels.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T2B1_en_test_protection_levels.py::test_sign_message": "130f246044184e687c73c3257c865edc89e93fd333cb278926305af63c51ac94", -"T2B1_en_test_protection_levels.py::test_signtx": "68ba6f88f32111c0e5517f325041f8763ae8ca6a92953e96eb2a68a578c82737", -"T2B1_en_test_protection_levels.py::test_unlocked": "95cba1775050d4d6bf7dc3417eb05f814147d930667feda07f65c22e0c528499", -"T2B1_en_test_protection_levels.py::test_verify_message_t2": "4f225a4839c5d31e527c34a4af320e6ac1cb611ede3018bc0effe14eb43a72b5", -"T2B1_en_test_protection_levels.py::test_wipe_device": "ea9872538ce4f61462eeac4880f9635eebc2bf9220c54ec3e210b773cda55440", -"T2B1_en_test_repeated_backup.py::test_repeated_backup": "feee62e02f5679f28fa928382122fdc2814d7941f101d7841243dce0cdf178ae", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "da5218f7195e6e1cab7b95a2a2465e60978bd4d1140e7f8d3d7b814b44c04043", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1bbda0ea8a6bc5bf77f77682d35ec8f0d125eb5e7217d7eb527b5f04db5f6b5a", -"T2B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f3ecf16e519cd36d585486f388166361fcf5040802ce64da5895cd55c4bb7a35", -"T2B1_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_clear_session": "779c42d2d2c288f8486356395b9bc204fa0ff773f723c6caf4066126e38e531f", -"T2B1_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_derive_cardano_running_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_end_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_end_session_only_current": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session.py::test_session_recycling": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", -"T2B1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "042fef8250681b1ac2a1f14a7389a85644638c3df0e5a126ea91f1a24f73f44c", -"T2B1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "803ccce1d6845345b00396db28711cf2555833203700a58bf5c7ad872ff27705", -"T2B1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "3e2c53f842dbe4a85e9cb4d0ce0d59a17ccb22be53a87acf17bb030eb0ffe511", -"T2B1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "27f3bf94dec5abcfb2ec423a5871158610bae51a08d801f180fefe0c8972fd2e", -"T2B1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "299e864a48f7bc8a498d726c5f39ceab44df54dd79eb927acc9fc49937fc53c1", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_length": "7cb565e1cca10e69500e48079a37bd88dcf6e3931d7511a049b38feee95ceb3f", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", -"T2B1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b06cbb14d16de83f6cdd311f75119bc3efd6cf312b6889318e261bfc3d4f1d2c", -"T2B1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a944ccd981528c3e95018e2915d4fd5c44a990b2ceb64ff2c8d630fc7e918ea2", -"T2B1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "79704e684ec43e8eaee6604f7986684e69c95935fc44064e566993da3e1edff5", -"T2B1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "718364f43811e6e8366675fb29661438a924f5bd59a51a7c253a2297f902ce29", -"T2B1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9208f4ca66bc8a7be9ce0f7661cab2d6f102500a0fe5214f6c2042a452b45299", -"T2B1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "53928e3a3f32d480e096b063c6700636fa6612421dc3b9708db25e4b4c7f136c", -"T2B1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "30a75b8ca64781e76af502045a34c2b08a8bbb96509b6de2991ea6b88faa1dad", -"T2B1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "bb6277c10508c66434b78c00900f69241924a8af5363416003edc338b3588ed7", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "6d6707c052afa001dd326f7c2a75f8fdf1a792e79dc3dde0ecd22feff60b6794", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "9118737aaebe86980f3f318413b2b4f8c9321b1ac157579dd2ac8b7622fefb07", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "a7e4e8c2224855e3da7a46260e7881e67745215d44a0b5d26e791156c53871b7", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "801b375b822b625a9da05c6ea900895503f580009258583ac3ca7246ac10825c", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3cde303c584e2c57e8c2d2d3aa12f2e1b2600ec633e600e5ab7be88c16e8146c", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "956a22f55c45b1fc571f316152c7fb5c54c3bc2fe12ed5b95d94b19861a3c867", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "2e9b25761ae67de02e6ecfbd335cc914137e1592e55c00dc07d66e0433187392", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "2d4ca4d5951086bffa7d6ee400529da8a463483d01067f42731a3c6b0d838377", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "7fe4eae75a497f6f58f6f6fd9c157d2446ef0b2e75414aa3d50dfe70092bd7fc", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "3dccc92989c6a6bbc5a408d07cecba4093613b800a2d2e0c08ddcef549ec6f1f", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "457f062e77fff8d87bd37c77ddbc719b2847cb1bef46799428966b64eb074ed9", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "bd2eff5baa329dc24bf87365ebc4c6d21b685e353bfa41391d2be5712e86dc36", -"T2B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "0af1c9667adef5ae37caa6476445931b89d9beba83b5758230908482c49cf5b2", -"T2B1_en_webauthn-test_msg_webauthn.py::test_add_remove": "d8385fdba14ee5d71f75145ccd6574a736d2e3c3915acd15597cc40618b14c94", -"T2B1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "097bbc8fb0ed96383c110ee6430e1d168d837ec110ba04d29179bb0789cdc3d6", -"T2B1_en_zcash-test_sign_tx.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", -"T2B1_en_zcash-test_sign_tx.py::test_one_two": "67e8bb08d9007687d92dc308aba649e89a63b91ed0cf4427da44c22a6e9df265", -"T2B1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", -"T2B1_en_zcash-test_sign_tx.py::test_send_to_multisig": "38f719702e87035ad522f2c4c4d943c525e0c494a2765486d97735b87a081ea9", -"T2B1_en_zcash-test_sign_tx.py::test_spend_multisig": "68b7d0ec9e8a9c6b06ac535f5470661d104e01d59e474106e5c6548fc63e112b", -"T2B1_en_zcash-test_sign_tx.py::test_spend_v4_input": "ae5ecd07621463289b5c3e7a4cf2c8333ce3f2715317a001489a20b8d2f113b2", -"T2B1_en_zcash-test_sign_tx.py::test_spend_v5_input": "57c047310f07daa52f1ba348720db1617ece5081a79f857f97620d4826e66f39", -"T2B1_en_zcash-test_sign_tx.py::test_unified_address": "19374b4d584e40c11b64cec8e481f014e647aa4fd8cd51495261a79d2560cf12", -"T2B1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", -"T2B1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "cb5054566695d06a78fa853889160e1c3ec9791a8a196df629f741796766ccb0", -"T2B1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "5c48d7bc39446e8e95aaba3a12bef3bd6adcf3ef68bc03213e411290b6216db3", -"T2B1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "77c92cb466ced8659d1033da0fb876c0dd8f4dfa826160f9077a7ca728ed4fef", -"T2B1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "0877a1818fbe901149223fcc9f6477e221a4e75670ec0ae88587dc08ccf098e9", -"T2B1_es_binance-test_get_public_key.py::test_binance_get_public_key": "5e0fffd73cdd2553018bd0f80eeda990f9845ac0ebcf17a530255beceab45a8a", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "5c9d4a277a91bac643c6141cba71d51f26f4262bcea654fa5b20d2dd1f38805c", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "687c2d33e1eada9442d129d31121d8e6c7525a2bcdbe2fbc4ee96a5d627e95e7", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "908da5010ff89991c3fe45954749e23010437bdd6b5a48b42264226185d8d292", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "5c9d4a277a91bac643c6141cba71d51f26f4262bcea654fa5b20d2dd1f38805c", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "687c2d33e1eada9442d129d31121d8e6c7525a2bcdbe2fbc4ee96a5d627e95e7", -"T2B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "908da5010ff89991c3fe45954749e23010437bdd6b5a48b42264226185d8d292", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "a1bb58cd3f498dd61978c53b3d0009f89291d6db236f4491e706953921ecb04a", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "610b680fc768e0ea25d782a3158d904ab55880e347a159460bc520bfdf71770b", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "fce796742f8bdb5d18d9189395a558dcd41a89e8e4e0cf9b425894afc085a7a2", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ab9079b221552a78d899b2ccd2e4a951597781ed31621c8e813d0b7bb2138e09", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "83d5fd843fce37eb4b06f996d4bf0a3f241b32fe013e070b70918e6f429161d7", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "83d5fd843fce37eb4b06f996d4bf0a3f241b32fe013e070b70918e6f429161d7", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "e5d55ce428d5bf75d421252597ded559b6038a3dd325e64814fe56839fd5087c", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "21dbc28353e0e5cc571d5bac605cec888a6e99b78482a1c7a95056db2f3be6a2", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "c46f223715b7919e84b8c20ac59a0b670e7507bbbf30f1c4123dfec3b805f9f3", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "838ec403f6c8fcb727602c60ffa2837fd215e172c23e89afd27c480bde849f30", -"T2B1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "838ec403f6c8fcb727602c60ffa2837fd215e172c23e89afd27c480bde849f30", -"T2B1_es_bitcoin-test_bcash.py::test_attack_change_input": "e78145e315012c867be09ff8c763dc61242786dd14ed4561663e9ab6f00582bd", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_change": "c6fd41e2d25aa0dac8df8d59dd011694d4b059fff381989a7739601a54d2b8e1", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bdf35e6aa6d320fa70f7c7d249e3ee707c4619c32eed946e13b4c9f4a605f9b7", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c92473a8f0d5c46c87f1e3f52cc23a8fb8726bce427fbf09915be774737ca721", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "27737ab4940559d6cf129c9f9736c584e78b0dc6a85b36a371370ddc292a55d5", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "69fad2e4fd135e3396628edf3542e96b4fd53c823bb4e4ef6034c752ca895879", -"T2B1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6df157bd4cdb6fd7b9c082bfdbad18a89ffd90336b741396eaabd8877fe1f92e", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "6094bbd7e893dd2a34efa8509dc9a22339f420ae3bfbde0965f046984542d509", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "0929323712285fd3011523c441d25e420bc3946c76759f806464b03b90fa56d6", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f7e1cc4f49f3b1ec35e2deabeeb8fcbbc12cfff31e677a4bb1d5597f1cb89f43", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "553edbfa09b12acd0c872b749aa7a652d9deffdf2625d6dc7df7aaca7f32e9a8", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "f821d740dd9885f436d951b49c543ec38cb44989cfeaed60aedd51875fd07126", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d7a9d3650107c3fe96806981973e4a73daea0614803b240be148b8195ae51d0e", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "5664641b97ccd7c9d69488bb5a646808e89b9988afdf0b46db1f1ff9a5047ab3", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e1001a828d9c7091844db020394a0856d0da54eec5cdb17963b230c6086568a7", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "b0508c252cbb32e0abdc798151e9a0c24ed7820314b7366e1f71f53a38e313dc", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "d477bd0321936267cfb49035031e18676512b00ec52ce8a54340c96d02d724cd", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "c301515b8e7eed5b5097aa2289e0e2184db71b6515f36694fcf6ca3d3fc506e2", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "84131498dd456bec5026ec98d34a03ff73fb7b4c91882c2e662d31b1b6ccaf7c", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "297d15f58d5f97a0a2830478401721297cf0de16edde1ef9898030af96bc78a0", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "35d0591bfafead4b84cf6591b4d49be134b6b5e9d8b6f9dced9028e22191e292", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "e7493622bb27b9f7dfe66428a00e499e1c3b2c706e4560add255cb1fbeffc247", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "e8217210fa95119ff9ec02d8fb78a829f40d1bd166a5db73744834ccc216b5c2", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "d0e00e013c38325ed9970b4431fbdd48cac8ccbdae57acc376dd3cfe78d52368", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "a472e956ba95b4efefd27f2bafd6a5d5bffa56ca010706c3281003634c925405", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "6094bbd7e893dd2a34efa8509dc9a22339f420ae3bfbde0965f046984542d509", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "0929323712285fd3011523c441d25e420bc3946c76759f806464b03b90fa56d6", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f7e1cc4f49f3b1ec35e2deabeeb8fcbbc12cfff31e677a4bb1d5597f1cb89f43", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "553edbfa09b12acd0c872b749aa7a652d9deffdf2625d6dc7df7aaca7f32e9a8", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "f821d740dd9885f436d951b49c543ec38cb44989cfeaed60aedd51875fd07126", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d7a9d3650107c3fe96806981973e4a73daea0614803b240be148b8195ae51d0e", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "5664641b97ccd7c9d69488bb5a646808e89b9988afdf0b46db1f1ff9a5047ab3", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e1001a828d9c7091844db020394a0856d0da54eec5cdb17963b230c6086568a7", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "b0508c252cbb32e0abdc798151e9a0c24ed7820314b7366e1f71f53a38e313dc", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "d477bd0321936267cfb49035031e18676512b00ec52ce8a54340c96d02d724cd", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "c301515b8e7eed5b5097aa2289e0e2184db71b6515f36694fcf6ca3d3fc506e2", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "84131498dd456bec5026ec98d34a03ff73fb7b4c91882c2e662d31b1b6ccaf7c", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "297d15f58d5f97a0a2830478401721297cf0de16edde1ef9898030af96bc78a0", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "35d0591bfafead4b84cf6591b4d49be134b6b5e9d8b6f9dced9028e22191e292", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "e7493622bb27b9f7dfe66428a00e499e1c3b2c706e4560add255cb1fbeffc247", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e8217210fa95119ff9ec02d8fb78a829f40d1bd166a5db73744834ccc216b5c2", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d0e00e013c38325ed9970b4431fbdd48cac8ccbdae57acc376dd3cfe78d52368", -"T2B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "a472e956ba95b4efefd27f2bafd6a5d5bffa56ca010706c3281003634c925405", -"T2B1_es_bitcoin-test_firo.py::test_spend_lelantus": "dcfc847a62ef5111f2f91069ffbd6a53b26e39019bf3c15d1254eea94dfa3a30", -"T2B1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "34015cf0db5a4e0f434efe5fd4f26675933fe25a21bf755ee1867f9638aee37f", -"T2B1_es_bitcoin-test_getaddress.py::test_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_bch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_bch_multisig": "a9c2a2999f7ea99eb06961fa6b1d84ed65dc43cc8a48a2cc5baabdfb7efc5f97", -"T2B1_es_bitcoin-test_getaddress.py::test_btc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_crw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_elements": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_grs": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_invalid_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_ltc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_multisig": "e4ccc3954dd47a047b534099b85a0d96a90f8e412f5b14dfdb5e3eaedf9da68f", -"T2B1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "e8754753c40568313b9f8d41ab993ba8c2dfc734f221fe9e84d09995ec1884fd", -"T2B1_es_bitcoin-test_getaddress.py::test_public_ckd": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_tbtc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_tgrs": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress.py::test_unknown_path": "3d7112434826c915705233e9e2ec10b3ee3d9fba166a46fca2f6176d7b76383b", -"T2B1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "839b9a755a2f37827f7fbd9691e99b4fbd2945f8837c0c1b7c756cc19832306d", -"T2B1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "bcc2a3ca7e2fce257f7592f1dbb45555c4832a1ecc221e3ee77ff74264bfd7bb", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d6a4f470d0077528bc2c77f4e82e53682857272f3d470fac55d77e3481dd2647", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a49abbf100b1c711c9a95431f05d1da8e897b0ef63c23a7e731ad248426fba2c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "0989c21ae10960e1ef732e5df768cd47f9c7788f9e6de28df2fe11a74a10a7c5", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "7fb15431f18f7f8975718aa59c73d2379e0da3cbe5877b81c16e0a34d7498013", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "fe3f9af758268652f4ebf76e538c7bbd6276101f5f2ba02a9371dab9f0098400", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "b647573ff276bfb8cd4dfa75317ce944452cd10fc04e7ee11002fbc83146e6a0", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "83a995dd5c9c9188c1a0da8a64a323d3d1b475847ab708ee94e23c9413cf0f6d", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "c5ddce05c45f220471881608252a1dba778b00579c7f41aea6cb0e223d7fcd13", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "d64621f1df7f7b1738c25bd8ee96aae3aed287d90da4e9f8e596c0eae3db1af5", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "a75bb498d44a2a981f4954f26c60f0d19adf3451eadd516347027bc26207d64b", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a2bd7333b9072e911a257f49fbe942964af1537aa809e2d79306d9e6029a3953", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ee23e08f3a534c1696cb28592caedc93b4f3a4f02786880c9348c223e87f90ab", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6580bbee7220ffc7031534c652695e4cc577b8a540f6c31449c9c6e89ce93c93", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "5545b4edac0b7c660dd470778012bd52bb99eecd8e9eeae24ab93d4f1deda734", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "59413c1c15b496606be775aa65434d6ce427b596061c4865b5c7f536153f193e", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "8793c6941d6f7309fbfee56634184926bc26845d472b36bd655a70d81185e390", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "18ec20882980d77781793c4bbb31697f8a336e1eaf119864d5c636eab07f2784", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "021b0d4199d247bbd1a1f33c3e74051eacbddeb8ec33104a5c72de93a4149c7e", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "d8c4bdd457480e9f517883c135a6f8e7324e6c4d1ba756762aa22c9223acee29", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "c9ee3f63ee0006eb7ae2c051e2bd9606a900506b91cf5508b362181dc7bdd425", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "4039d34db4be3b629b1552add822f6eabf379aa8974c68725412a4626cd6019d", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "17411e319a72be0fe4b2154353f6343c57c2d0ce7a4d38bf14ff19d42f0af6eb", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "17411e319a72be0fe4b2154353f6343c57c2d0ce7a4d38bf14ff19d42f0af6eb", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "982fba8854f3561e472ee4fc4c2ce114b2cb9310e5e29ceec60b193bfbc79c19", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "8e782706608fb062b635c4daaea308182e79275d900261a73cb5f8d7e823822b", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "dd17633206a2ae4ef9b68bd14830180c2dececc23887d711e10afba8ef665957", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "20da309c91662c63ffa21b6ec22178e7bd9d58eaa7fc9953c8a72c65809abf6f", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "ebbd51b92c8623d8a987fa5845ffdd21dfb6061709b5e3dfb2f6b8a7b8bd93aa", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c211e1f589bbf44917f780207e1dca8d4a25d4586c3e0a85e3c06d6d5008528b", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "acfc35968929bd8ed898bb93da05da4a830442ca76b5c4baf69eeb5034f3af54", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "7bcc7409274412e9b91c12bde9aba25c551de0f54b0e3290a2b649f485848354", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "b795ab0bfafd75d085bb6d2623f1e23e410c33a17ee6f0ccd5ff073757d21857", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "f0a2afe8303e6c3bf27fa2500ce79aed3a73e786a165e19613bf5519c29384a4", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "3594065903d61025ced837a373f037a10eb7dbb61440a794f7fddcb3886f2b62", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "996d0ad839003fae7d6a0655b6d30e829fb7545d7b0690516c7edb71cd1b82a9", -"T2B1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "3b214cd6f08488f1d01c91c41f4ca9786f0f4b00819f9022e589a93dbfc9482f", -"T2B1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8e7e8bf2dd4d7e3bea290c2f5a09527c867b45d4179b256b2ba3dc83b21ce8af", -"T2B1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "0929323712285fd3011523c441d25e420bc3946c76759f806464b03b90fa56d6", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b05f596c947eec1002b109fadd996ca50043c41fd1ec263164b32fff341752bd", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "f8b1534375e9ca30b54324067010ab869f9fe31931fffaa16873b18ca4567da9", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "4100a1fa21e50cee0d022837d6dafd7de6b3264043236635f742b82e005c23a8", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0d0c5a89dc907bc0bea8becad5ca32a0e0434c6fce806726da35f83f3c69abde", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "341ded61ee4354fb9ad845c55d856081be1e16a28c37d480b2c12e4e78cc7d06", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "4b51355ea2ef7880bacf9239a176934f7dcf03e1bda4a22f9e71150a6278a8c3", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "c6f8d53217cd4ad0043b3c4f0e56b80ffa8ce7d41d46b701777663bfb1686f98", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "20054db346bd8963c883a85352c5431bf1abc955d2d64304b0bfdca526611dd8", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "c301515b8e7eed5b5097aa2289e0e2184db71b6515f36694fcf6ca3d3fc506e2", -"T2B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "3db877c667f1c279fce3fd3c59674911b9a6990352e1b11c5bc1f5a4c1e519c3", -"T2B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey.py::test_slip25_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_grs.py::test_legacy": "2a751c8bdd1a1c19f85f76ea379c71429fcac3dd0a02337b0406f98a9b64ea81", -"T2B1_es_bitcoin-test_grs.py::test_legacy_change": "60de25f5357604cd1bf0b237f29bb9b36b65ff08377e03f678a0a6fc6e9d7e8d", -"T2B1_es_bitcoin-test_grs.py::test_send_p2tr": "1c3c3c50538db94fb2a051877a72718efeae94a188ffec87e69647a8e2ed9da8", -"T2B1_es_bitcoin-test_grs.py::test_send_segwit_native": "bf3d8fac2d092df7b618591bdadca28950a7014269ffd7aaf324493edbfb9533", -"T2B1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "e4b52b23313691a032319329e01d35e14ec4f64db971c4a3892cedb68cfc99df", -"T2B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "7dd1e6d1fcbf0e5d1e76f3b482d89018f1bb9237f77e078b68e88907298824c3", -"T2B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "3e6e3fc55388c3ddcb2a2a4ae57bbb8bb310535c6c4fc64b58b2004206652b33", -"T2B1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "43c2c6e81731ab619a63002cf7a9acae5a002a8f55f3b150a9526c00a327e773", -"T2B1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "8fd9ac89fd824f04759bf07a90e6c2b97535aab66891ee4d138efa40546640de", -"T2B1_es_bitcoin-test_multisig.py::test_15_of_15": "ceccbd33506f1fe517cc5209b0c30eda494e0588f46dca334a8c2654eba3d24c", -"T2B1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "49dfe4061e888f93e9958ad94db64923b436b9c263347c5ba50757aaab5d7cb7", -"T2B1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "cb00d537a5cf5ef59896c0c0d5e08fc76ced4d11da11bc2206acc03f92fede5b", -"T2B1_es_bitcoin-test_multisig.py::test_attack_change_input": "858b0c31fe6e78c4d7048ce427e4c49fc7b3d08a8dc559c84e35f27de2a3477a", -"T2B1_es_bitcoin-test_multisig.py::test_missing_pubkey": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_multisig_change.py::test_external_external": "3ad40f4a958880d5cc9c4df065c3ed662ebeb3f7a0a72aefc59bfbdd66e58e0e", -"T2B1_es_bitcoin-test_multisig_change.py::test_external_internal": "abad31bf895e1723696dbf4bfb4f9508e46aa00bb83f37058bea162b80dc1165", -"T2B1_es_bitcoin-test_multisig_change.py::test_internal_external": "bfdc3c4f84e690e031edb745c09dd3b51e78b88e350eb7dc1e356a35d7aac65e", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "a918ec5eae4850a34279d26c0ec798ee2f70ce15e391beae25b3e1014d6ae3ec", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c8511a3b162c6d720a25efff303071fda9aefb027a1a4bc14eb44dc42e844f43", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "293dcb46db1b66886e278066128ebd0549d605972adacfa6446a2c499e05d354", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "832353ee58b994e21124428e0ab5f9c8b45ecec352a48505976325cf2d7c7c90", -"T2B1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "05b8e464dcca41c0fe9ee69519236509532d56e90cc8e5cf4380784f4f7f8a98", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "fcb54adfc10ece04a9238b1cbafd5e94578af7359a1772bdabf4099cfd9f6da6", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "34f9bf81eb96a865997524c685f55d5f4c540c967d1da999f4a5dc7620cb9f4a", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "163d3c418710f15924ae83162bb16a159d1691b431c9c5ae33cf2a0431a2a835", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "d6d3baf0f1c8051a91004c6823969b9e1b184f4feb2fa5a2c25b7eb543524076", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "031fe8e8e83406e07f18bc801aa6e2ee710fbfea5f3293cef590b66aea7b3cbb", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "1b990105426c14bf4365e724d9993ba6cf79c6bd75426a3c575f7bb3398f6101", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "c0e34611726d4dd4f9cf25ba6bc5e2e7ab2c50d9874adfe18881b777c9126923", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "ecf12fd33c711493a7320a7c4a76da42279d406bec20b45b6753263b6ae517e4", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "42c224196cb707a62effe0fd55de67fdfededa396ad6573772f75987c65f75f7", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "5c064bf14ca98a09413765ff2466d279445d282f93e3bb57917fcf263d1dad86", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "cf6d63a2f6ae29515951dffd509a1d5d40ad765620a31865743f9fd648da6a0d", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "b8cc9f0081a7ebf1255dee2e12e62747e94772dc45d4fec877d87d78ff661000", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "09fd6703925ed5fe1b987591b4c3518ae7430a7d434537146f515965caa4f196", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "d0c39d54a2214cadd43df01154b242932db1548d67f49b6ffce3b0aa1fb6065c", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "f033b8ccc38811cfb1c0199387d47db55a8647404bcbd9a9df44c082f0f63648", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a94f69aeadd2b75935d396a3ce267c89f73b1d975847585825d435942925907c", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "46dbe8a4546c26085dde1495d2392b9929ed521f5313aafd5e6cd35a7dc57838", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "4619a0eec7484acd5f0055c6abba7faabf59e8e7296ad003015c0b03337c9d83", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "8bd1187f2f77414f625b3a1c9c5cee2f44f53406674d040f06fc0455fd2d120d", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "ff43ad5cc0819bcd365f069599a3c2c7208210ca5109c14bad1feb6a72dcab78", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "31db18543a0b5f8d70ed0511c7a3ff28d337590a0d83210c5c033e2cbf16599f", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b3ce35a320948ac240fb1c6a1265dc3ff8aeded37952ea19e01f2e9dc6e5d40b", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "e8fabc62ac646951d5039333fe5ed9fb58f4da9f9395fce5f26612db84ee0333", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6870f16622ea0f622672b3ae0cc59aeee1bc8b292de5d3fd021979868b02b258", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "596a3935e27943d9c4773699a759c5f49353541f63034aef291dc135c2c107a4", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4e5874476aab31535cadb1d49c48e4c7cefb07d08ccec9dcf9b93d7bbfe21e12", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "23a3198bebe3f2dd7d25d9e0558c1831d4030475216b637666e02de7e2eaae5c", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "896ff4ff77a47616ca09a847e2b206919255f08403eb65a313cd8069d8c63df4", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "7baabbda4c7451f5d6ee372dddd3042645bcc995d0eab8284a98ef792c95ec6d", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "cb13c08f23f4e17a29b4b3df3195236275fbdd722e4e1281a98d8e44a3da8164", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "6fe828c6b03cc612a2a602ec747132deb48df7b47301351d3dea799375746b03", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "7b6c2cad904a36cc883099f4131328387d81500db5a7ffa125022dfdba5d6485", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "3e98aa3e7c1e07b10345e80ac275f2d55081bd4ef10aa19cc303dc73991a0ff7", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "11558b143163ee03a7af859666a41e468c84533274976c2d360986805f584ce4", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "3054c3b605affbf09382e220e1767c0c248f085863d0aeec6894a85708e2be37", -"T2B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ca386a9267fef4789eb989dbcbd02179a07fc9b8edeee2159c566e27c4ffeeac", -"T2B1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_op_return.py::test_opreturn": "192c74ccc1ea311f84b6b02405e15030251a18423509dc90ca2ac635caae2545", -"T2B1_es_bitcoin-test_op_return.py::test_opreturn_address": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_peercoin.py::test_timestamp_included": "a5db7330af1adb9d16a2cc7707b3bfda181149eec3a6a9b5b23ac92be74d5b28", -"T2B1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "040e65801890966d0bc89d67d78509e9e3ffff713fe2424ea28131fd3c3915c4", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "53bffb4f448daff3a268ada50a05b5f9f6ba967f0e77f6bc32489695edf311ea", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "53bffb4f448daff3a268ada50a05b5f9f6ba967f0e77f6bc32489695edf311ea", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4fb0c12387c5da4afbf4f384b5c5e3b3dad738fb4cccea8eb6b1ce7dfc695b28", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "fd6e88d5e16132dc62b85f570be7204b3143518fdd9e69372b249c942c5f70e0", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "ecae7e270fe6feb72e593486774e6eb09c2fdad0a9baa400222a940dfaee26ab", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d21462248f9b812d7405ae071280b8ea47231d7f6e5230913adaf029a828f04a", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "a19f078816996f97c19c27a06b978ca843faa88d4d70d542c117176fbfd4146c", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "2730b4eb3cd28361c0b14b6645644dc269c446de0d63305b3de9452bacde6b2f", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "2730b4eb3cd28361c0b14b6645644dc269c446de0d63305b3de9452bacde6b2f", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "b589242186908e4bdf35424fca66697ed19abd1e6724c360990636a9be340e5b", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "dcba485df8db15430602e9a453a6da309be983be2226e07c087e624eb903462a", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "9e171af07643e64efc67a4204315befce902c7c3ade3c662257b7402eb9abbab", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "9e171af07643e64efc67a4204315befce902c7c3ade3c662257b7402eb9abbab", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "11a023f240b5ff6338d9c65b2984b891496c0738de4e2b30c129eb05705622f0", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "55d4987a86ed27ccfc37376b739aa55e27d7731041b070914f3ed36fdd3c5282", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "2ac632b05a0b249a112c97f3908e58a3902f1627aa678ed22ee444f0de577844", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "2ac632b05a0b249a112c97f3908e58a3902f1627aa678ed22ee444f0de577844", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "7308a5db6eed0a4c7c4aa312ffe655f7106bdb151bd546cca4bcdd6c1ffa938d", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "6a463cb0b3c869f54806451501ed4b51d2a6fc0b2056af3f756e44043005fee6", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "d7705bb82c0d801b8a245de6a10c82042a47868fd42e416c83454f2230fe6f63", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "dd2a4e6215f9ada53fc938b062e5d185a14c4e49fd59a854db53f22f193f0a83", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "62998885190a38c2182c30e464d78390214fef0c55ccc763acbc513a73d7793d", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "43d794498da5b9b81bca3d11653680d4f1d1920f21120fdcad5b041c022f1d89", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "2e5a833b3854def17bae9fa748a00803e812bf805b2ad8b46c1c505364055981", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "a1b84f31d4c2b157abf6772c27e80513630ccc865f0c781517de3ec8e4ec508c", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "74fe66ea2a2f56c9747456101373b3eba91351c38e5c61f2679e581375e50cd5", -"T2B1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "a753898a470cc483a1428e20268ff5e0835c0f44cf799838a6e788eaf79118cf", -"T2B1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "9f24e6b556ac97df532d98b1c70142d3bf24ba89f5240eb6f47157d7a183d31d", -"T2B1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "0985d0b9ff1e6bc80b17df2d28bfd8931653ebb1d94761a4e80818bcbe5a1a2a", -"T2B1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", -"T2B1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", -"T2B1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "213a380d6c7d24f9dc9b6b06ecc06ada13fc6a78b2edf5529d300f1e9ce916a4", -"T2B1_es_bitcoin-test_signtx.py::test_fee_high_warning": "bc2965f5b007eb07afa06c91a161967aa8da59363efee8c1e14f796f9254f7bb", -"T2B1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx.py::test_information": "3dba5798f7d727fd2ea253408ffb945eee0c66a58e450fe39d33be2c240fc5b0", -"T2B1_es_bitcoin-test_signtx.py::test_information_cancel": "75db9890954294a9be0f48c5d87aa370c9cc09349efcd306a1b5ffe02e90f904", -"T2B1_es_bitcoin-test_signtx.py::test_information_mixed": "b1171388b3b0d41239bb64659c67142ace0fda0c35738d963843340a12b55fcb", -"T2B1_es_bitcoin-test_signtx.py::test_information_replacement": "ff56a2236ca5d8ec886d0099f230bc8307e9b8f18695c28dd8570d4e18bbdb24", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d82773ce960c2f6a343ca3a0908ac34d5db5374aa4fda7dd00551f654ed99cfc", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "767e4cd5a7d263c12a32ff3f943655a74d5bd4d4cf7f9a7a59a6b2a10e062170", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f52a229f39c10ac74673c77a5b3c3d1429dd2ca5e8dc0c3c8dd315bb090e1a8e", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7f916278695301f6a2a8f24ccc13f76c082497ccfe6d39131f10b5d01080ccc9", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "34e49294153891f3b2173f6376ec25ed126be4370ceef5c25a2ad0af71caf38e", -"T2B1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bfba9736c226ad919ea981587c4464cd2f9b90f98619f717c99e0fbd6473f9bf", -"T2B1_es_bitcoin-test_signtx.py::test_lots_of_change": "197e9046f31a4afb742885bc5d5c9b8d440b328612f90d5f4470ab39e0ad8942", -"T2B1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "098205640055457ab00f3693d59d9d23535ac26ebf050cefb4027b21b53af8ef", -"T2B1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "046c9bf43e036a70acb8b36a68f2f9aae4a2ecd1af1357732bbdeb7480c2c7bf", -"T2B1_es_bitcoin-test_signtx.py::test_not_enough_funds": "840d6312c3cd3b88481e62f99d0908ae0cb235de5f59838c6dfa18831ce894ef", -"T2B1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "8a881fe6198f5dec72d2a828b6239841096f00d8163744729e33f0247b441598", -"T2B1_es_bitcoin-test_signtx.py::test_one_one_fee": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", -"T2B1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "62d01d966021462a475a77e8d9054ee79505a23bc11df983abc562d2ca5a1ea0", -"T2B1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "6e0f5400483d16d11b342d5b17d70a510c8d269818e26ff4e8ed9b12ca3f8047", -"T2B1_es_bitcoin-test_signtx.py::test_one_two_fee": "09ffa51d05b995931f05557536e7db57852e44e76a38f57c4403518609c654be", -"T2B1_es_bitcoin-test_signtx.py::test_p2sh": "4ec87eaa5f541c901f53950de27c9a125bed82cab927ebf180545d6cb0b4247e", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", -"T2B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", -"T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_signtx.py::test_spend_coinbase": "5716ccbd9e59a09c8ef0e6b29f2b587670f1cfd82653b37a9e3ece245f95b8f8", -"T2B1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "8b3b72d10891dbb5abb341a58cddaea5a04cc2869dbc03dcbbb5820ea84e20e1", -"T2B1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "c329263235b7e15109ff72643756389953a1a2cceee4a3cf902cacf63c92b0c0", -"T2B1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", -"T2B1_es_bitcoin-test_signtx.py::test_two_changes": "c251bb4994c321e1d9155afe03a1b364fdb583b4ca5491d548558a187dec9b6e", -"T2B1_es_bitcoin-test_signtx.py::test_two_two": "c64ad880019b87b878cd65f9f99fb3a25c4e4c54a062a4671c3c58a805816f5e", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4f8f6960764bf8b91f1769f29d52f4a7a65a1ac374b873777ed2bdfff104dd22", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "fda8de57703587de89d8cd6aa1cf97c9b7d20db251cb1997cf51435134d66f95", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "0ae3a986a875b0cf90a69b7a0108b6d8822df7bef23b0d26287aeee571110c7e", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "eef448b8ede9de6a58c9531abcabce5bf481f31b93ced57b93a770d1839a31b4", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "2890ba0616deb26c994aa316e25897422f93600f53345d3a34bb6aadc128881f", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1cffec601f29f83b5b11fed7984eeb16369b07e01f06aea334f3efdb27d4e24d", -"T2B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "3a7488bf1e81ec6a72d7cf693c2d56849ba48f888948806d63019412dcdddb81", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "adc653de9b25713b357d07b599aba9acf542bb5ad7132e4695cee3b7c05f273a", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "60883f7b36090abea7cc13220ece54c319a9235f0ba7a8d5cd424491e144fe6a", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "8344c6e3ad81970ee8c8772163ac407b798c331c43b8fb374099028191a9ecbd", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "33fd9edf194e5c5649711b7b26bdf4bb9c67b2669bdad172f0b2718ba38e7472", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b83ef8b909473d1c5bf4d4c6cee8b1895b7d8441fa0401f6046951abea47bdf1", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ed1e67c17013c3ea366c5586b4eeaef26acdf9760b9515eace42b439490a69d3", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "627a26a1a0b34fb846c2c71c46d219df1141e811f9c73a13dd8b6750e8ff67bf", -"T2B1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "1ff5ce3bfada2d4db22234c11482832fa84ace9a7549e0124ce66a407ec96b18", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "523c107ee5a0fedbb575b07aacbea72f55e258732339e56fb2bfa2f454d27eea", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7a09f35c67d71bd4b61e0476c2b4d665cce0c60adfddeb6debf533190ee88d33", -"T2B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "241f7ca7ea049800f133d29744dfebe2f148c8c5a03998463cc54722169fe24b", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "266f480a6c6d984e8819285aaf39a07792b140da0a3349af2741eded594e89f8", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "0ef77e77eb7b76f6c6c0ad20980dcdfe3bc1e661f624a4380cc338d32c8cbd68", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "266f480a6c6d984e8819285aaf39a07792b140da0a3349af2741eded594e89f8", -"T2B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c383cf1816fd02001c1c70062c04b21529990ed628e3e477a36316b983467014", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "649943388f4e78369d850f96a7a87ebacacb9b62ef78d6bb85b700593413d49e", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "90954ee12f793e78b5950e176d8c46927c408dc37259d669f1b3114c6f98837f", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "60e8c525440bec73ab51c4185d7c58fe51ded659de3e512b6810e80dcbb65d44", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "91f22c7bf05f235576777e7d02cf5dcfe64798882d178eacba1975df8d129cd6", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "67c45fd34e8151d2e85962a703efa6f88b378e9071b2fac767b1f64c425869e3", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "256896d58b0dc8efa4f0301d4294db5a57a4a4095091ce644ee300b8b3a03cc9", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "75632bd70891842cc69b86d459a55e24c950dca67370bd1f0cbed10ac7bfee68", -"T2B1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", -"T2B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "7e25be6c882438b63a5353d7ff781aec10f75b906e3f53e66f1810ece8a6e1f3", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "8e78859c13eaf18a28f10d15da6e8f2efe84747796d605f614ab646cf1a2140d", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "bb9bde24225cf6370d6a4b3be6d29bb256dc96b332d338bf61f7e0aae7a03e66", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "bb9bde24225cf6370d6a4b3be6d29bb256dc96b332d338bf61f7e0aae7a03e66", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "6391281d9ad1331c52080045442b33768cac7267e4db478dc455df022a088165", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5718c6ffdf8da52efd6fa890361cbc9039ce778a95b1b97a31412c117ca5279c", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "06322f40081386aeddc8ef94900065c8282684161b125d356f1465ce80c4ca66", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "6391281d9ad1331c52080045442b33768cac7267e4db478dc455df022a088165", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "97972a79a3e7f6eda2940b588622a04d01dbc306a5adf1e9e334054da2411f2b", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "a998245e3ecc9f6c20e93e3cb6202b470a6e10f30a588ccea6a3ff9255c6aa42", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", -"T2B1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "a369b25651895e8ef28ede6aef94b14b06f9545b91bc815d8caece7bb203d108", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9df9b841bea74dfd936242f7675b6b6cd19b0e0ae6297edbed61273e3b9639e8", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "2c48130e1967fd20a19604b87e5d0c733218dea48d0854ee55537aba278dcaa6", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "8c6bcaa8a4686c685229e6d73a4b1de0377ff20243eb296073818b20cda22f8a", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "20f09cebad0d3ef8baf1494bdf5d75296646df3100ef616b2533761223f466e6", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "8788709e3edae4898ce2885eb48e881e567f824dcb6063e85d8862015b4bce38", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c38d34fbed333a74b9656cf95f9830920317b19fdba15be15c3f2c817304d4ca", -"T2B1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5f60f15e2c1aebfbe2153a75e44d7b7997a0e7b6ffb4cb8e0c96381fb56ba3d1", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "cc9701b2fb38c31dc099e2d475de8d8c3017efd63b237c35ccd77710386a9663", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "f667f7baf3b3a090233a3930972d1ffd8714508aa18d0b9a3443b94031ff9fb6", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "bb05a43f4d7924087ec2c821a1a421a35ba68436285a8bd3641d48c56ff375f3", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "6ae139f16ad3ba23310688e31768cd5b81b11f2b8c0c5e7c74ca4da300299617", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "de388efed2b3ec9d446916fc864011c3435581556013c7ad65d565b93d3ee5cd", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f372af7c77b1f33b0bd34b98e381ec11c15ad97a50f5989c67898b7e0aa70ed9", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "43804572e0cf67df501ec31757bd7eb54f0ffd214936fb19bed8dcd6a7a5a0c3", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2e8194848ea604e0aab37c42c3c9d7e677319305b55062cc43fe1ce0744714a4", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "44d98cad0a0b96df5285bdb6eaf0eb99743214d49a56680b7a4171423eae1a75", -"T2B1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "e19566c81a3804f312729b6f104987ecc082ac51f6fbdee620cdb8668755c1b0", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "dc278d7676e911fab37b6323214e040de6fb269c9e3069b2bddff1f6bac59147", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "200e785d7ac587d80c62b2a64c0ee28f043358e0ef5126e8b49dc1651a8385ad", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a0dc5b8aa213f6da2f5a3ba9cea3a6cab68a241971123e8683e1e881609eda3b", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "f54672507b5cdeda78dd95eade8755d39da3b3be2de4828479aeb433582dcd10", -"T2B1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "38f06807680af3b37ec07a107b0a8bccec97cdc7319c54acb57c4cf6d5a3466f", -"T2B1_es_bitcoin-test_verifymessage.py::test_message_grs": "55b478f3d03bd535263fa8417f288747f3a6424c640ae0254c89ffba97580445", -"T2B1_es_bitcoin-test_verifymessage.py::test_message_long": "c58eddce3049d31a002c4ec05e51dcb346301ceebcacb47c26fd09fac494f76f", -"T2B1_es_bitcoin-test_verifymessage.py::test_message_testnet": "42f5ce98047e30224101d564c1c3a91c26576732241853b8ab887d3eca1a5f64", -"T2B1_es_bitcoin-test_verifymessage.py::test_message_verify": "03421b0b087d56584f53cc8ef4e650015f608b0c2ef96cebfbd66389354df03e", -"T2B1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "ac6dccea51ae537ce607066e90509549b1ba1f5951fc28f9f65698779f8b19a2", -"T2B1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "bc9c3ed9e36f17f206dcd16fae13f8f25f62fd5de2ee118cd02a962f25b06f72", -"T2B1_es_bitcoin-test_verifymessage.py::test_verify_utf": "0098c99b78ee9910f94ffe10405302f57278664936b7ff598429a2de8d2365bd", -"T2B1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "379dd3235371f31f83d053fd2ba353028d48d3605c8454f22c1844b830c850bd", -"T2B1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "cfff24cdcf76db9552962d951fa2dafb24c8ef3da579b7a2681b4dd2d6108536", -"T2B1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "8a62460d65b2ea445252f4f637d80f8ee7ee4d975406467d000c492eabc2a1b8", -"T2B1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "0bce55ef0a0e9044b6d9cb776321e002392f21999c9db57cc314488a31fd9d87", -"T2B1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "6dd6286f6ce0fc8a5b3ef47709b3d056ae11ea5962364f236b6c73f3a702e9cc", -"T2B1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "515e908322f8a7661881fa0c4651515a5ccc173fc83afdc2445a8e3e9e358545", -"T2B1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "b110749cc1619819925d2c6405c2ea53a09d376531c3223adbaccb924f698335", -"T2B1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "2e4c1e46676493cd6dbd364547270f459f826bff783d58b833ef85a94f069a26", -"T2B1_es_bitcoin-test_zcash.py::test_external_presigned": "4fe18488dbdaca245cfe30868f7c163595fbeb2321268fd404afc42fb3a819bd", -"T2B1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "018739d0a19e0546047842f3edf25535cd344310115e4206bc7611da63c57045", -"T2B1_es_bitcoin-test_zcash.py::test_spend_old_versions": "e00969d2cb1ea6a3ab6b52f81a91d1ae15fe36b817fa1409d39262e4f3c48bf0", -"T2B1_es_bitcoin-test_zcash.py::test_v3_not_supported": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "2f84886a57abc74f2547c192fce1a26df8ce04e39cca79e285cc9567204afcff", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "16c065d16565fde055a184890a6d909e5de45c5ca94db73bd4b1457687e09500", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "aaa7d1a31458fe9d85f8bc049743bc922027a4680436c3a38ea7881dc9f34b41", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5346a1c0d340ed9d7eaabb74416e88ae8af605ed2ab80468781698199636907f", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fd46152a21d698be2f7cac447433c462a6e55b5063a2543c0cacccf5ca4b47ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "bbddc0eaa465108d4cbca7d4d0d4609933c685d6af056ae9365b3aca64cb680a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "a8b4ef99324dfb37ef61c512469e508f66d1cff97b7bd0c6ba96c43ba688e65a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6c4bd02c5ae7f1901e07206a3d921e03476890e68253748e7a919e882985793", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "38de876a57f3ba9d3e9facab308ff4b28a52f231fcb47bd2f07994bce812d454", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "487bc1c567d4ecc260979e8abe46c22a27588147437901c85e24d98f2c3fbd8b", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "c1c361caf5ee320eedc9dbc8649f7ce7f51d558dac39fdbf0077918aa2bfa454", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "1153ac6af7b2bba5ba8b2e0d5a2748a4f5f4dc5015bb4b1e352b2c703706e016", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "1164ea0d1ef4b99dbd7571d0c4891e1145f8590b0dfe08cf4f33262884061e19", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "20d327e80ad55f70f0109deb5e3d4154a9e4dd09f54ec6666aa8432b623d9303", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "70b97c300a73075d651f46e5415c2e8076df417d02058ff078b41123ce653641", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "d5fd5486efea795cbdbf0d8d9e97ff8ba17951c62c7172a2830b2c68a22deeb0", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "558c116f658f8b9afea10d2c5f56068b3859d0947988813a9e756dd4276ff24c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "cb2a54d7ce20b3962f3a783c85e6053623b08ee1e507266fef0c98ddbc9cb5a4", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "2aaf8aad691a1c2c2ffb77771057edbe4dc4b2d7bf8037ef68f2c1654e8a5b01", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "bd1594ab91c33791df0f2f4a42c7d5a8b4b85dede9b91de6bc608c2fd1421ecb", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7b788e2f6449e60e6289fe550560f5b176ae48d4d161f37c11819679855883d5", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "d8b4f47ea8eebff20c19bb6f905929ac099df6665b23df00eed5fbb6074351f0", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d75545d8736519d6c2c10050dd638ad8f6b19c09164542bcaa7a639b8c7ca7ed", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "d10d60abd2c73ba5ca7d9d6aac89605bf4aa1f478e684afde0c1b70b4677456d", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "56105e3899f71ebaf772590e26048845a84e35446980390ac072efc6a431ad4a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3ed4240459623efe07795cf76017650acbd6d53c990877e8e7a3c67f3e503e78", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "66a2f05663cbda9f6fb23ac8804fcaa391d7d853d960e0cbc7d4739ce7e1d1fb", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "62fbd38ae271f5a76af52ac6c5b5a2cc4051798bcbde0677506b9e9dcdd8a032", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "6683795dc2e24631be49a83a21523f52bfdecb81eb947e7beced6a8a4290d45e", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "287d9371e6eb8aea05a8cad6669e7d2c3224bb42585b89d9d631e81334f82ffc", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "f01a3222310cf4b1204da198ac06dfc84ebdf70d16f9f186715b3b34966b4320", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "64d78229af97f9f41896d47ade2cf6d1f44d74d0c9b5bcdd2157a8a87507366c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "95abcfd5705ae0ee55dd59cddc3e8e9ed0ffb36e94bc1af759600f8622ef1934", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "743db1209a8100a03c68b9efaacb104b9b6a1650b4c49cb0c74b00cf6c3a05a8", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "968bb7cbd0d1bf085944b816b79956dcc38a12a5330c543336bafb3574508e90", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b3db521ea0173e39f3b93c8e49ff2223ea5ba3535e927ec7ce8b2999897e67f0", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "c1eabea776d65dc0f258acd00fa08db76a04c07f6ae0e7f32498a0b7680a1665", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "a96fdebe84cb13743dacf052975664905de871c68f8cc3d06136e56e09ea7fb6", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "425e05d70ab7181beb21af5c08617e9724808baf17e294b3319a39e012e760b9", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "3be8d9a67474a8cef48fdc35318f5843ee909831bea914f244c094ae1fe6cc32", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "cf959b359e3d546419e2693cad049fa151a9a007ce181bf18de36d7444f99aba", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "df2767c1c3c054ecee8e4c4efefee8c975bc9a8e2b3104b530d3d5a8b89d3192", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "5823edbe8eebbeefe3a01c108aa54c634422f8d9338bf0a6f8fa295d3aa3cea7", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "a2171feee8e00f1fa781561c32eb6c560fca457fb49571f67ed3adb38b90997b", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "49eac4f1e01f8c4d3ffc70e3929793a9a4bedfddcd1f96c1e5bca2048df3a2ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "a69b3d8df2de193b1b8dc57446f5e2871e708cc8fb3e1971deffd20a18499e6b", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "128996429c958aee8169602ea44c84dca9eaa1f73d07603c8615449e5a1794ed", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "63228f42518d18790cf9976f712ce3c22b50d86d9b7539132b6d5ce8e2ec949c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ad01d89ceaf01a75f93b206ff0ff30671c032c3fc1310ee84c56d9d4d0e79571", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bc6db05b88c37cc1e86447f181fc0503dcf782bfe52d258a039716c35cd6d7d8", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "8d4ca0d986871a9ef2ec62b05b7d1c8eec4310d254ad131e4ec2eb704b61e73a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "c4a23dcde7091a5a523f8403933ea0e2eaa030f1997987aeb80a0e706342a38c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "01c766e398945165669a3c0a678ce54c6c72c064ce9b28237d40d6e8aab5ecb5", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "a047b5e0d055fd27bb1aa48dbbbb74522466720c603f944aed848a1bdbc4c81f", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "13a572dd62932d2ab16b3735b15db6d8d7c198a77d8120526084e5bd8ae7ba97", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "77282abe499d8fc3da49c2d590fe5c1495df8bd2936fe78803ca588f08ab964c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "cd555eb7f0e24bec4d8d61d3044683ca87c0df5f810de8b60c5916aa9cf9eefa", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "f8f775e180ea9b573da38f29e0b0643f708b804660ac8c51c9aa43ee1510b62a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "c20bd76a95f608f062d5bccaff7a8e8f5b3acfa260b31ca01cb77081d008804a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "8df1f63072fe2aa0488b27fa93bf7ed1e006813f92e8a144cbe999ca70c7714b", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "ff42a49aeba489b0dc7e164a987f4d230dc335e327adf7112d4e0e1a8d624fa6", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "bdf358c19d193ef9e167970efa920f88b2f7029dc6e924e6621dd604618549ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "c4d3806334e0f2526dd2c373d8034165124ef228b0c784bdc3536c9d09e63963", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "afe3f15f7bf13d0ec3ce70d8a2de4432b0c8581ae612ba23951794beb5bab91e", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "24049397a9488fd8bcb09e37206cb0683d466cd986c6ca9cda0c1c555bd3972f", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "a7f5aa1601355ebb4d3ffad0920d0316fd57a8a719de1e83ee3be809386b10e7", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "18891be9a0620ce6b3c543bc3f44d4086a2e6567acca8f3c32eb6731a845f2b9", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "fdfdad16a52a67e0ee6df6289d1feef6595e4fcb86ba76917a23dc36a0f9deae", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "5d626c01d18dc3aed35ead0bac3c752efa92f6a4d66f55adcbeb8d610290ef8f", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "58750eb3b091800a8a0e749d5f33ce657d9efad3b130022f0503895ae63366fa", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "8614c5b5c579d712eab13c0fda03919796698f73706ba07a06df16a3d90b5635", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "cdc063cc825b5f3922543ec02d37324599d6ca9ec362ca72e02bc2b5424422ce", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "f9ab8f18d1f217e588e0d68f18df359aea9afe82dd3f77c79d3746661b85b3e5", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ef715afac35227b1d860be377efad158ce68ec175ac3873ec5573c82a01d2a65", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "6364dcb96857bb8ca4da148aa19b7a41848e3927769b14ed44cfa1eb3aeb26ed", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "6d3e3a1e4cada403f3f40e00f0b922002a47552dc9340d4731429e336594d734", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f2256fa6dfa61cc47ea711c6ef24d46fabb9e13732daa79aac892f2bfaf30ba4", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d70ad565f392c6cebfa057f53a0513996262c5edce00ee5bc99dcb5ccd6d309f", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "3d54890a6f22a6b4149a3d925220040b1d93496b77e61d15b8a4d4acd035b4c6", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "395df4e7657c8ef24de4ebc3c3df537b7f01cd3778bfdd00890a24ec4bd27a07", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f913b9d236337ec8f17dbc4f0f2bd07a3c8158d08048d70a55f0cc120524970c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2e40f2a04609287c8683867df59dff285e24f0c126c970d46929e238a72a66ea", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "53bccf1655146bacfb6ac2032c9ee763b0ec04ba5ac8997e3b1ecaa0bbf8851e", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "7bb3f15f2ec4746c7af281d843079fbcf07fa1cbf2e85a1271df359efc17e88e", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "be052c213d9055ebd81d2bbdc370e6d7cede98eccda0d3a54c93d7df74ef1b90", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "c87e498fa8a3a3dffdef28b5524aab55f2c85cf9f9e1abcbaa77cab8668c6474", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1d2847c685a686c010e046dc7ae2fff108260deb9ee7443d139a79a372ce98d7", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "3df98e23ce08153962829a451a64b16e546c1426d046e6da7137caeecb78cacb", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "569dd0b842a403b3f19305b5ea89ef246905981ea1894a4a5b6bcc1196c9b5f2", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "97642a4047ab93703ec14bd402f833f9a3c8cd10ecd5089098c5a91b4b36a71a", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "eee4fa1ab0a0e0bae1f3fa3d97c25562f8507bc6a7b358d36618134de0bb358d", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "7d6323949bf6bb8cdc3706622ad9b7c340a0a8109f5cbaaf66d0d6f78788f00b", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "fedacaeb8cbcd847208bbccd159f90fb1c298bd57f931ab2e4c9ebc3c6dc6eee", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5b5f2181c8cd524dbeb2856f0f1f2db023dea92899529e21baecbd2978521018", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "10ec8bce4299e22215e651b2f14a07a204142f54552bfc9af9b620b4c4337e1c", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4d7943e77902f6b06aee9e20f5d08f8d447ec7088b9adace9b7b1c907021da57", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "868bdce2855b04f2ae220cca6fe77dbffa0e3d964a9ec4485ce8406a7aee4c19", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fce2b3a1b8e89930a8b444346a6ac5efdb64607fb09efd5f0f334dbbbae0e6c5", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "f2bbdedf9ead3062ca3edc299e5299ca7d9d78f399740949e623ba29c67c2898", -"T2B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "0932da70ad79733a7d7435bb9e201dae08aadaea7b265e39499e887fdb5c8be2", -"T2B1_es_cardano-test_derivations.py::test_bad_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_cardano-test_derivations.py::test_ledger_available_always": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "aa47440bafdc1501d85443b321db2070dbaee088f8192145b0eff318f96653f5", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0fe8f666b0c5a499c04322299fc9e223a1aff9b9818df8749a4f8c48ac84e884", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "c0c63616ab3bb6e0ef44cef2eec337b46ebc9f3a2cbb1e0f4ea736a58f2edacf", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "507f10341d98dc0d1f37e7dfd6424d5c08dd36f10858ca378a10ff9f4550d141", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "8232665a384894c8aa6bdda4b3a2995489374e958e96f023b8b3db0c7140e757", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "b8e134278d91377c6a0b4485e152d2eeb5487c4cec560968302af35139285a1c", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "e0f0151e214cb372ae865ec048adc8a975cf3763191d56a1ffb51cf791dd7e02", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "07a28e4d6a492ba8e85441fe6f7bde27893d8cc2c30a1241c492988794df34c7", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "373418858d89fc52006072eae9d589ec93f18bfa1147d2a7a84411c9db5e8f43", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "8cb9f8e8f31a25efe41d438559e06c7e0c7961485bb3f8046819df1debe9564f", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "756f830c19e46e426c9dc0ea1f9b08ea6f928646af6f3c56d04a9e94fbb93be4", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "486f1c9416328651700ba1dd3096dc7424e8a05300a681194086044e13b1b5f5", -"T2B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "b3920827bef507ac8ad13b4ec58e4e8e927791e222c4f42579602798e0d09644", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b5902937268fc3aa0b0244ecdb97b125cd2d3e59bba955ff0c5a7f016e76f8", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6f3b6169e3fc48f40b46bf83cf21287b5f839e21fb9e874c4ab32c9c84aa723d", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "e41b2012bcc3742c88416de993aa2e1132734016daf498f54d5b88c21aca8662", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "2c54600663f0b05562cf38a96a63627ea437441290bf84cfc73829b31c6eb518", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9fc31eefe29fa7f64e846119691ae0db8c2894e1e14c551ed7098dfb6c9499e2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "22c34c1e55257a07214d8877992945d142a696f8d712c090e0bf6751cf9a78ab", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "49fd2aaef8dbe41d3bf1ceb351b8e0984fbfa0d5a710f0ba0ab49a66fa9deefd", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6c668ff6eb84d7d1e45cdab0bad6d2db349cac5f548676add1f61b9342bf3292", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "e58adc2fa6484f4c26b793c71f5ab63379dadd3699ac3098cd4149d6223913f7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "7afde85f8480e2b05d32cb66f01b0e46051b9182cfa3402edaa3c7cae95cb400", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "592c1c9efb423aae9c7cbd24a85974bf70f95bd47faecee606a072f0d226e001", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "454af005ff5da7e3f72c84c15a5888b167a96efeff2782e6ac65e71561cc74bb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "454af005ff5da7e3f72c84c15a5888b167a96efeff2782e6ac65e71561cc74bb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "c3932107b36ca87c7e9eeb93e3688345d2298248905ec8feee8702a7f2535433", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "8834621260788fb86af96d525779a878c5a8b7a3a21a4737b2f5ba1e0143bd4d", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "e813ddaf5e47c6ace2eaebe707ad95027590ad519fd2e2cf9edebe419a751cdd", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "616e38be65ee8cbfd1a6f2ed012dcadcca04eb32039e95cb40fd351cf5f5967e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "c36a6a1fa9b9f50b2f544f44e04b9edf80acd0ef92c8d684fc8e8994e8c19acd", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "2ed6e8f03fc72aaaf636a55676425111f0b940490f1f7c1ba1bd0269b1238020", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "235dc53f2e1f4db3b0446b7d32174ae6de1e4e0adc9542606716b48d198b67d1", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "0154d12fcadd7a57317bd3c0f307e993232f56e571a6318b895768098ec3d448", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "247445b8f7d98a3177ca7eee824b13c67c6eb4b9d98749656c1fd97fc7bc5a13", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "c36a6a1fa9b9f50b2f544f44e04b9edf80acd0ef92c8d684fc8e8994e8c19acd", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "2ed6e8f03fc72aaaf636a55676425111f0b940490f1f7c1ba1bd0269b1238020", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "54f9771ad8f05e29ec4fbb55ec6ba9d6bfbd21c861c866f6b71e4579350a79ae", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "3f084045c00d5bac93ed3246fd3642d20046158562ebd3926cf402f611593218", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b672e35054e05a0231831a8bef870483b561e7a24e094c074ac0cc8905f6b1a7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "4e03269c876471994b1276c39d5e317ebe89f8a46228b37c94749305be8721fc", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "978157919f44e997b0f07bad3e9acb6dabc3ef224cdcb5e0e8442b60deb88349", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "346764f6698e4019f77927d598ba2bffebef7d084663bcd42984719e91761391", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "486aea496ffd13f11a08a2ab87b94b0bfc5f48930435b921c8e418b31b744594", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "3953e067f41feb6b1826621b0f0c0c3b457723b1e9ebf0934807be8c82161c82", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6600a1fda4e5dd224ab7bb7eaa6cd977c7ef2a9042aa45d2abc6c8c56a1274b1", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e880a5884a20a4d38b057f211fdcef9345dafe5c67cf972046f5bd1b3579ddc6", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "8f0ca78de95cd1e2901102450ef6ff0bd9b2b832591a84a6e925d1b9c9ea6ddd", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e4a19e68970bbc97f18604f2334aedfbd61bc844da3f43f5a0d234e7fca6b129", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5cdf0d039cdece483d13618e075580b5016e712bbfdc6a834aef67cdb550d21f", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "46624c0f71176cbd346ddae51d1b747d44e25bf753f04ace9139660bfa0c9024", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dbe4341aa6aa90ed924405436438860815c25d9f99c7404e375db595164b6932", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "13fdf548bd6bf37717a3dfffe64216f7f6b17eb02e4850658411edff525fc2e2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "66735fd89b7769e8fc94629f441c0786bc821ae7773ea9f0aaaa6f3b3328d303", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "3a1ee9faab273f914c7a6176cd9dbe05154632550ff6062f0331a286d5ab284b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "1b03411e7a18c7fa6066ad7cfe446a8d524a6799a365cd24396d975f2e4d53fb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "1b23ef54c18dd42497d4565a274db83ab25b361703582c981ae2cad462ab6da5", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "fc4b7e57179540205b2aa2243f2736dafa5c6a144f24588d0db0374d512c9d04", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "780dc151ae3124fac75d56e593b12c6d0e39c857b68c19a6065cdf3ce93eb216", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f2af062bec638cc21fb45f2949f8c65d8315061a9a5eb48ce4508caee199fa97", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "308b822c16737af30accce9876b3cbcea8f4d851d9f6c07836eb2c4fb5dcedd6", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e39f722fd6f6a23e2d0b95e50e07cc3cf9ab591769733d5f14d32bfe77f91bf2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "883ea7bd5d54f4f50ed5c0dd65ab1f93d94be7369ba1a8d943af03e8b8def16e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "0d5dc5696576466219fac3acc4e3d406aa1c6c62b2155db9d7f80461d95ffd34", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "a3b3771229e0eff18058932016aa971b8a85b4a4910ca3f2e9c13b37cff20b02", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "886491fa3862ee345f7e5998778c0c037b91d1a11db470919e6a4ad714f2b85f", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "9d05c3a3434ff3698f8485d28601bfc65e4a541b5be50e4428abcd2d47659b8f", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "ac2e4b774a5542b1ba7a219154e3cf1c677417fedf95ff93e0cf4add584dccb1", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "53f37d349369558344a94be3a20c7ea82b5394d52008eba28c55c070dbe97061", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "dee15424375ecb6e5a86cb34e92604c1b9e394340dd2b05a408e0d80e5912501", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a74b6abf42627aabfebb4847d1210def39cddda933a2b9516d7221f047e5e65e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "85d4fd114e7ec656d60bfadd75a244acbca0386a3d49587b2ce85b98b5130e54", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "c71ca04cf884c0958b5b26659df368298befafee5faa92754b66d878a53a97d5", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "af03f4e6ba4a68e994fec97691ea567958e61d501726147dfb9804a0e1b5de22", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6feea77d35a0d3dfc122ccdb2dc7e5d480dac0c69f9da529862ffcf64b368d6b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5ca2ca9569a03f92f8454625fa2a515facdd54d1ca6b9e09430021eb9518467a", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c5c2c0df91051bff949d55ba87780bb7b122e70ca87d9646dbeb523a2fba0083", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "84ce774f4972446fac86ba4b62fd16892496919e7fb6dd502d3cb98801153e11", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "1172aa79eef2f959c5aeaf3bbbea1182ca4b515763c9f8dc89f4dc36acb8dfe3", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a41ac286ffef907e5fc2f444fd4a9d032674f8c462d2c863d710e8e932946963", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "a4b06ea9fce28a99c2a231ed5c43f902a07094098a6f625fa79cd11b772dc366", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "5014374ab60b266a3d95bc15503a28673b3497d4d4d0ad157e5712ba0a689c04", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "acbc680ff844947de32b91a5cdbdbf3f71c67dc747b72e2ff6bffb642e77135c", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "a172a00d0a45b5049e06281fe44ce4cfdff5acfbbf8c69b21e530a1ded36c35e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e4adf36468a3279c471737311baaf5e415aa6584784140a2ee05d261e4fd68a", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "5b58023ca8c689fa8291dccebb52a93b8bf255e2215ac0f1ac1505f3dc3827f5", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "5f5d461d57ecf98710a8da853c4cbff081c0b29c170f04d654e1c2fb8ff31a47", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "2e97aacc124814a57494ac76660961132007e9075a7a0b1d6bcab191bd6a2945", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5d9573e068247df02487b7626ed1c84ea27b811c5b700dc327357b3ea422c322", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5d9573e068247df02487b7626ed1c84ea27b811c5b700dc327357b3ea422c322", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c11dd00da5f0cf32e89b24721e750a9be89476bca3f792eb695e31fa51a6e4c6", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a45a1560080a482659ec963b03b67a71f677130ab67058c8e1fde22dddc0e50a", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "f94625526898bf90e035a10f4032f45e37ac6df32cfc860b531c63216ada33fd", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "4a1ba64f86f0228d096e920a1e42ac64f73604ec2d85badf0bd5387a5111a3aa", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9bc55eaa1c4c90807e4d970b0d215e34bff9d7a624905d114610d7265a685f91", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "00b1464af16c385ef6003be9ebe267c92ee3458f3e3379834d4e8b6c54c951ec", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "66f44746fc5c7424708e9954c32c7ccb055b0aa3807b4361f9cd1577e02b8cb7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "ef33c70d26a64bc6331a37b25297c9dcf5b3b477627b0dfbb22055cd83d831d9", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "d67624eb1e311cf17f6a24cce7cf05792ddfd1aa9d31a9e214dbba2cb20cbb8b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "a50cb0c2a4ab935d13fce7a266e91ae5dedaa4cb89a9879a0327016b5931d2c9", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "a2b5902937268fc3aa0b0244ecdb97b125cd2d3e59bba955ff0c5a7f016e76f8", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "49fd2aaef8dbe41d3bf1ceb351b8e0984fbfa0d5a710f0ba0ab49a66fa9deefd", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "32862bc18381086743795acc950856fd9d6933aa4786598ae576f8560800b5ea", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "66a35899e82f9fdf8bdb8cf4b28261e2ccd2a1b9bba435211dba7f2bd1de045c", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8e84c2f3e246eb043df4ea45bb2fabbfe7f2c5d5c596fef3525d6189d3c1756e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "63f6fd5a88afdc494a15ed3c76bbb1a84f2c15c4227259a4ba4588f95e765ea8", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b0bf36453745c323c83594c003e981b86edebd619d3c515812d6769304cd351e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "e9424334d97b2c5e270fc3508fd9f2ae2c42514dd795b29abcf940ab7ed8bc2b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "832852fb58be0ffd6da266da2efa37378cdeb12a7a1f12116678b90abc930ae3", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "46d7cefd27d23d86765d8c7f3fdbb0f2df091c9f7e1ee24a7ac37da42d0f990e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "46d7cefd27d23d86765d8c7f3fdbb0f2df091c9f7e1ee24a7ac37da42d0f990e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "46d7cefd27d23d86765d8c7f3fdbb0f2df091c9f7e1ee24a7ac37da42d0f990e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "46d7cefd27d23d86765d8c7f3fdbb0f2df091c9f7e1ee24a7ac37da42d0f990e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b0bf36453745c323c83594c003e981b86edebd619d3c515812d6769304cd351e", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "9fff7614306857709d1828fe47b3c32bdb8956527ab7011d1110a35af64cd5f2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a3e5f2df5f9ea1ce94be441a542cf04ab8f81e933e0daf47b404dd6c3f7c3a77", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "f483e4fa1d3046e547f7bdde9f1c716d341fa2020d329d533cecdcc6ffb190c1", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "28c2d48dc5280b3a186255210475b4c52e1d10497de253d59a03a8a2823e2935", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "138684585f821a5cb75ac66c633e6cead076929b4df0b2a77eb077d8b75c7f2f", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "1fa92920259bad51b7d0366481207fe87910340fad0b902e2bd92143699ddba9", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a8cc09c1f5b998e1e05a6ab206c5c9fe5ec6f9f3ef91a2f7751af91fe91dd748", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "0575395ed6e48637e80a6f8d6a1490eedf803d98b7a2dc7e44c104e6d90b5180", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "1bf81e05b3529ae7b5d5a193612b01c0fb9cf5b233a519c3ab59e3b5f3346a85", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c2a3308626c03ac402af80dda8c639c853922314e02bc4fb63a02715bbd62ad7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "62bec4a45d5dc7b73edf169ec96ece712b06d17227719097a7c67846daf41a53", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "71c0572327222374a73457e3053faa2f9f552250b6e2a999ab422df825e0e38d", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "5e26e5806c82d607c0b7b7c3a873ba4613c8c1440b5a34f75730c2898c957ebf", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "86a4c29a89a2306675a2c0165b12dff0d16f61af9aeb92dd2c0e3db3f0f7879b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "eefd34a144bc465e69d93743eae213dbe02124e2e0ff44ccd1cc46c4e9b8de49", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "9f0c0d825a5ea71051f2937aebb3db1307fd7ecdcf3412bb5b17505531b6e402", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "392814e4af02d27d149c907b90698517fc9df94d455f459c3a8ee69e69e001b9", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d8a6beaf9417ba99e6124001f5949cdf1b939a725b1d31fcedf7f6d3284c87d6", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "5f51a559bdf08408d2c8fc21d83a259c5eb03649c799a4da322fca385d74f9f5", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "2ed6e8f03fc72aaaf636a55676425111f0b940490f1f7c1ba1bd0269b1238020", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "841dfb9b8e9b12710457ceeefb84a263bd4ae7fe0c0706cf4e5b56f4b0b43321", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "e7c1998e4dc2ac8821fbed2db7201ee320499665332a2790a121f554acb94b3b", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "031116b0fe8d45eec69c00a50a87b8e9e3ec09d3f0585c15bba0c9b78f13903c", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "8703a3c6ce02fb8d95108cadb68da422a4a52591ad31d287056c7d50ca9854f7", -"T2B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "ff3b9de391ae6630efbe7ac55ba0883c18b5612cd30787dab80a3de74fd41064", -"T2B1_es_ethereum-test_definitions.py::test_builtin": "4153da8853ef861b4fc5c15df23e59832f00705a39cb7007e2b398d80914fb74", -"T2B1_es_ethereum-test_definitions.py::test_builtin_token": "f71fc5655fbac48182aa90f4c0deffd60354b565982fb6308b0f9d0519937865", -"T2B1_es_ethereum-test_definitions.py::test_chain_id_allowed": "4ff1e6dab8242ba1af8492eff308d734969cdc009d56b5a2b2938a3b7ecba4bb", -"T2B1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "a9c87453ada9ccec585ac37508304be5b53d7b14bf8c7055f32080623d6a1d97", -"T2B1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "2b4b19d6d391afd06c7917966fa383a22d8e2b49d0791fb5d842047a8b92c0aa", -"T2B1_es_ethereum-test_definitions.py::test_external_chain_without_token": "38425cff464db8c5c6d464b404b39b6e93720922e5aeca36a004bb026914ee05", -"T2B1_es_ethereum-test_definitions.py::test_external_token": "fc04857cc345dfe74d8c19707d230e9a9a68cf4ed3eee9ad0a76d00b498ea8b9", -"T2B1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "1042286073953cdd1dd2e4dab190192242ad2d27bfd5df98cf5b3dd159e77e72", -"T2B1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "ffd335a925ce8e31a43fdcaf8c9e34c493cbc8bfc7b4d25a6067a62054e5fd28", -"T2B1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "530c7345a55510271fe795bd671f186eb00a2665ba366ead6bc38dccdcde94b4", -"T2B1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "34972eb5727030e4af6015a889ffefe5a5211922b584fccd267c5fe20ce560f3", -"T2B1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_slip44_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions.py::test_slip44_external": "4138d34d94db5263a79d34522bafdbe38b8270e987b077b90f218c38db85b0ad", -"T2B1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_bad_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_bad_type": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_missing_signature": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_outdated": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_short_message": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "975890dc89ec08a96a2e19593a3f514bfee0896c3c1693e6b5e870d7e0b8566f", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "dc3e5c89c6c760196ee528d56cb0cdfc7e2c794d39f3c5056006664c3caf7953", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b1f62e2dc843e9179b8d23e8283d91e8d0a9acf983c0db7c04250f4cac82a89f", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c460ff31e7767f5778e8483063196dd742496d56e5dcd8c1da3a98498e68fa78", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "87d0d7d1d1f3971e02d5351029a80aaa2cb91a0ea129635d8f52f15ddd97d5a1", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "17842a8c0c3cb6b1a5ea2f9e09f048febcaa519ace1886c132d425e54aba08a4", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "748b23d21d548badfc6f5898a4bddcb071ec197c22f49db60495b61aae2b63fb", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "60ec8a7099a590b1aea5701ec6905e51f1f552a3dd0c6193387c7379b6a5b2c0", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "e48afe87108f77f89ea69bdd200969fe3b04f862f94fc090c1905bd8611f6790", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "71463a38edf1cb818e86f23dace5927ca273693c15f5b83889e2fbcdbf7fe929", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a62a463681a7964cee709230399cc19bff81215f69c5e4eaee4a6aa4722ae1d1", -"T2B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "6377392d294ceab0e81d8d9624c12391a08d1392fe7213b74e97a9e006f7ab15", -"T2B1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "86b9f0aa789dedb457260b17992d8362628356584f803b379932d77ef3d26b5d", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "fbb5e82c097b90b7ff1aa26a39fd60343218f93e3812bc6b2b24ce9c944263b2", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "6ba59a6020b5b668d8dfe1ded4339a6858668453c2b44aa44efcacf8542d7284", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "9a5b52af551398fd46eeae762bbf47e301ad49224c194dacea7f01562d4a7fc8", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "187b8ac9c88e07df2ae5f4baadcb0df2a78bfa459c4a544bd577c26af696e99d", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "5befaf8c68fc5b8e98704526f900f15f20ae5d45155aa42c200448a6329b9ff5", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "6ba59a6020b5b668d8dfe1ded4339a6858668453c2b44aa44efcacf8542d7284", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "6ba59a6020b5b668d8dfe1ded4339a6858668453c2b44aa44efcacf8542d7284", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "6ba59a6020b5b668d8dfe1ded4339a6858668453c2b44aa44efcacf8542d7284", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "1d12572de2bf65d0ce274dba3d8e2d4bc8101aea15f25ec3dc31756de1c25a62", -"T2B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "1f3727a7e9b5a6d72671145e09a8b65b4f1c6c5fb37bff122f70a7cfcd7f2057", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "95ca270079b4aee175a3dc0e8168aba40a840914da8642bb02897c6479ec008b", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "0abcdb85fc9d4072b33e4ba9be02e36475b3be89ae2c0583022dc9b4273eb22d", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "4bdb30edf77b9f3856d44b992821799bb18c3bcb0e5ddcc36686a4cd8cd92803", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "23ca869cf1f7c91262ce007abf0605befc913eb5d2fa50f81608dc2a0b8d00c7", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "91c79d4f5164a1b33b9e5d5a36faf6b0960f1ce3e9d6f3e4d7caa8221191612f", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "b96ec6bc8e195f03870afc219ea671738488426c6194e9f0e284633753060532", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "aadda87931f6fd26196c7d0106c55a1aa5ad5d4b1a79f47bba840d8888fd647b", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "2d4b09f93c99e61c3a29af39bc94d87077f9da0805da5e8878c421ccdcf542fc", -"T2B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e265a413901166b15e0fd32af78efd7a48aeb1930c151ffe61fc6020ed9d3bcc", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "ad7b8354a0345669f28bc14fd0e1801002a6d13076a815b7a7c835766e071f93", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "8c2165d65b451cb3e8055b27be71d9a60e3d2601dd47fda2cf4b8047c1537053", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "d183335faf2231cc5308143a706930bb87f8469c86ad7696e4cd854fb4dc6204", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "e8292aa274dd63158882a38e52b0a4fd2fd10124fae137f350441179226c148a", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "32e8696875102c60b3fe18d316d770541b59b543d812cd61886512cc2c9c7035", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "d80b45ea849e616f37c7255a6d5c0a61df3817852ed040ce662f007532d80d33", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "28c1a0c3351a003c370fa284b26df457d7c971b0bc66c7c15f169b34e86e6fdf", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "d2b3d8dc8887f746023726eaa913f106caa769be57975588209725f85b256d79", -"T2B1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "ad7b8354a0345669f28bc14fd0e1801002a6d13076a815b7a7c835766e071f93", -"T2B1_es_ethereum-test_signtx.py::test_data_streaming": "7235b778cf1080fe29c155b6e467093ab483dbd02842a6472bb323bf27aa997a", -"T2B1_es_ethereum-test_signtx.py::test_sanity_checks": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "b6d06f12d037f6f2535234c26b51ca34498f708662ea3cb80a12ea489eb8a680", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "90d125097b25f6c485f610a71575d17f93de39480360b0b0cb3b0b2cf3f868c5", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f7c76f0b48465f02518bc9b303857494b3a6a11393fb8d50d6d2857be73ac935", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "90d125097b25f6c485f610a71575d17f93de39480360b0b0cb3b0b2cf3f868c5", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "5bf76005b87bc0f508fe21453d1c05f4176bb1a0bbdbd1dfe84189c897c58ded", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "44e0850776e3fb812ee7b5a803ce47919dd5dd5047a1d35444ed03c3e0aa2bf4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "dcaf4bf83094d704c40530062bef5b3dbfb6bbe6e6f6e4c84e86875484be4457", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "e2deabbe2bddda3dd8eef13b87e1856f5ea42abb92690d19812efc52cb4b47af", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "cdc481e14cac678e2fc022e36a2c08e1c76343eefd882fe002126ddc9470edeb", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "96fafed28e93e54b0c63e25e257753aa638c94e468479a20638dee9e91bc9eb2", -"T2B1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3a19ae20f06543378aee8422579ea23e3a5c095b898ea43fd4d5971c77af7bea", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "766faf3dcedabc56a3efe3f6c069f3541b610a5b41a5bcccebefe632d464a829", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "35f2cc536ee7b000ce3d7ca074185dfada3fd47d44d7d5e22fa48156fb67913f", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "571a8558d7913022f32de79dd1e210a1475f8071c16f7903374e7c1b983b169f", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "35f2cc536ee7b000ce3d7ca074185dfada3fd47d44d7d5e22fa48156fb67913f", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "404935ea33061384c838ce800777e1b8d7043577098fe9e8e620858ba9f5f16d", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "613d509c1c022bed422bf3b098c4bcfbcea22121eb5e5f189a598af15c4300a0", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "275cf3bb5a3fee99238dd9cada576a2c58c0eed183e378312158b6aaf7ffe050", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "e2deabbe2bddda3dd8eef13b87e1856f5ea42abb92690d19812efc52cb4b47af", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "0af85f5066b7787ba7ca0dda59eea89db8498e6881751082a45090239e5d11f7", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4017bff7433b4a754937a72ad1e6da5377646488fb0856102958c8cead4c5cc5", -"T2B1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "91bdcf37c543c5b28d39bd7e738753d95a009d10e4c139edffd4a0754fa8910c", -"T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c28e5d8a8e09fc03df8b18b69f2bf14d18a6c149d7623152ee9f42f4b13930f9", -"T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "b7b8f41a1ab0f510d831e915d65baa335e79283dc6e6b5b20bda2bcc10a20a77", -"T2B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "105b8517372cc279c279f895aededb6ea8819db59c65b1539c657821df5dd162", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f6c963383e8c672f07dd2002a109fca95b7530d17fff6ff83aa6476b7bb9940a", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7e93a620dc6f06ccfdbdf219822a2680621490b332f1e2ee2d6736f4b87fe4ac", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d43544b7ce0bd6869c83eefc7f6c42f987744f6777f5e87d44fbc0af801fc992", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "004138d422e6ab32338bf5c2449c3c45ebc42d3156efd79250191b6b65bacc48", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "ab587791ba4439e72b4f2dd2a07f9063d86d66e9826711f586569c5ff0d29ad8", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "75275f75d74a1ce3ec34136afb008b87c5f323659677380167fa154816617a78", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f6c963383e8c672f07dd2002a109fca95b7530d17fff6ff83aa6476b7bb9940a", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b6e8bc56ce4932e5e9aba7cf3a037ad0ef91cd376b1de5f021c01b4488db88fc", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "80a4a21b8d570ebb56b85c219e480f62b4631cc020e2809c4c3ebe3d44502725", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "6a63ece1a6db406ccb65f7a682a816e947603165f3e239711bc05eeed61e392f", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "1c64dca032fd0c9b4cd0866dac4a030af2aff3df48e29328ffa43c222f49b358", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a68185f99d9673cf11c531a6befa370e59bab84422398cbd135fd00218e976dd", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "7d23f33fc8520a4a0badfa00e8d71c0544d57269e03901de96aefe9635d46593", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b6e8bc56ce4932e5e9aba7cf3a037ad0ef91cd376b1de5f021c01b4488db88fc", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "13a62087b6e56fe52200f43d01141063140643672ec98bd6c6a004b66a6d2f4c", -"T2B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "13a62087b6e56fe52200f43d01141063140643672ec98bd6c6a004b66a6d2f4c", -"T2B1_es_ethereum-test_signtx.py::test_signtx_fee_info": "a6df3fc5c5fecf9e52c8686fb09d4971eb98938bebe090af18a0697d532a22f6", -"T2B1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "0f01cf0a6dae94d6a11639b1017f1f473efb79cf520eb52c987e40ba096eb787", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "22651039a4b38ae9b724e4d54c51971a8241dc276c1bb1ad24b8118775db94bc", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "6395e9531a9e727729bbb88f099d87da15f1968bb87499de9ba48f2bc9dcc7dc", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "23293d8079350673838d2fab22e49128c8f8b6a22271b6ae9baf039a321e6650", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "274c0ad39b4a6bc7f7f3fabfe20902f768dc55e4e61985d4865cd61a3688f14a", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "04fcb249c1d130d45a4d0d577ed18cedf89da6a647b56464603125e9b430c533", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "6d3f701eec75e32624118ce302cd42baab6db63cadd185a4155b3951823065ab", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "89a1db77f9df8cb9f89d015a045f0f3737b56a0895e200d886d60f46d426097a", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e1c090d419927869082fd328e9ecc7c0c26292c2fbbfa446a6a5c1a45a142dab", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c46c3f64c12af3ba6005530e8a32f5a476d70101b54990d34364ae47cf22cb94", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "051123d519c1c3d7c40263970b7a78fc7c2d26d0d0644062945ebdad856805f1", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "099eeabc81337f36e1959dd1d1f6f3a8905dd154fb4d20373f2645aabb9bbe9f", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "0c9ce57fb6c80289ed439f205554eb21cfc21ba9b16e353254125137ca4727f3", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "857c6fd3fb40814f936d4cb0afba9dee3700dc059186e92e1d6c26effbc3becd", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "857c6fd3fb40814f936d4cb0afba9dee3700dc059186e92e1d6c26effbc3becd", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "d0b024c3cbda0c8ee003278de069360b1cfc3da3b2f572c30d68ce162fdfee6f", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "d0b024c3cbda0c8ee003278de069360b1cfc3da3b2f572c30d68ce162fdfee6f", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", -"T2B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", -"T2B1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "990a89cefba1c6dbced84be89a5b46e682caaa3ad823c0e90e9fb965121763bf", -"T2B1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ed5d2107fee8450d75172f551c66c005fe885a1aa8b52b70257167c568488d14", -"T2B1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "48318b523bb3774f1c3e57a01ee22f78e4a1afd97e69f93747cabfbd0a8b62b2", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[128]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[129]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[16]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[17]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[1]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[20]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[21]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[256]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[257]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[32]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[33]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[3]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[4]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[512]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[513]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[5]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[64]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[65]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[8]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_getentropy.py::test_entropy[9]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T2B1_es_misc-test_msg_signidentity.py::test_sign": "4e3116bcb279e3f5a6484a2ba5f2981ae649dc12f587f1d6b6d481287735550c", -"T2B1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "9960c0f86dedee1ee5fe867f5bfdd4ccf50d9600d9104a442a5689480c600271", -"T2B1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "368e3cc71f3f909ec53b77e3b32d90432c40647b4868f085de8751fe61c15300", -"T2B1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "df5a474ef7ea1508ef9bdb44a11e333251bc0c3b3b465cbba66c0220ec982bfa", -"T2B1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "4f047df6d760d7b432c22690a02db69a5c1b2f0a459e14634d12ce9db0ec246e", -"T2B1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3abcc19b3c824aa2c72c629e79c213651dbfd2cd0318279396ad9013f0730c62", -"T2B1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "61ef093fb824829ee0f4ed05f85762a123a690000b30bedd1899b7ba758990d3", -"T2B1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "1955ad618316c8ce791ac131e8bec69e6c694fd2092e0016f8599e96c3bda735", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9fe4bdf8116b4c5614cc01adffac6ea9306bc39835424f8aacc076e2cf55abc0", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "41514bec9d83b7ad2f6f483fda9bcc7774625fd4c63fc102b34c406e5e563947", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee51472087a7505cbd467e05ab54abbaf0d3dc30c0636542b5ffc9e005737f63", -"T2B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "edc6df65fbc5ef8abf7a400394c15d811aef497e0d5c0f8ce36011609d437374", -"T2B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "955260e3de339891efa314f917d1d054155fc7f45a997d0323cfd241ebe2c437", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3e903c575b88b4b2f5b43e9869ddd45f21b12473d9838f6543c50ae641f67c6b", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "70082b4f66aaa3e781dfc54730f3acec4a5ce5d4741985263238b978772c50a9", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "646915efee9a3953c839a24e5e75c18559cdee0cc8eeab9cec394fb63960eccd", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5377f0c9ee9c7847991dd6f116074d900ea5955a6a034989fce241af070b244a", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "9c4f68d86731a5e8f4d6172f5e8cfa50a47f7ada2ab5be8d700b865bf88e2288", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f0e6163f54058a9dbb5162feef74a9aae570b72afad38437350a97951c639ba9", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e0c0aee58b01981062d12394f3fdec5ed8634c9fef6b73097b7f3838b8e1ffff", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f0e6163f54058a9dbb5162feef74a9aae570b72afad38437350a97951c639ba9", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e0c0aee58b01981062d12394f3fdec5ed8634c9fef6b73097b7f3838b8e1ffff", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "ba46e51fe577f6d0fbc1dbc049114a67f7bd392a5608b79491fc516d1b8b00d5", -"T2B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c30299b2541560e7eb65d5806b4ce8debd811bdf899c734ead0b88072d36693d", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f98e90623e44fbb8d8e5c211c5ecde355045392735a6b724648f2a5c879feace", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3e903c575b88b4b2f5b43e9869ddd45f21b12473d9838f6543c50ae641f67c6b", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "15327a6cc7f93a39fe1f2bb2ef366e63abbfb84ef1e784f84ba8fe12638dec4f", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "d7a09aea890dd9b88c9198708b65e60405f4ea04edaf67a7a0c335a0b8be7a69", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2ee23ce7f9a759675389df3aaa67e3a631a6c779c4e385cb6f10e393ff4d1791", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "bbcb5fe78657625c1c1c5e5301ad62e4ef69a7a5d9d4dd9c061fbd8a5cfafdce", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "89e2c56ef721da18893cebee175de162f50c2a9090847c72390bc374620e2c13", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "bc473ff53de0c39878a95e2110eb1cb0fc0f57789b03c943263d45f166647c1e", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "9671522b9d875910817d77d54a3017a200b08805bfa0de6f0e187ed2527caaf8", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e99ef732b7156f0921c57f05806071421a7b3fac27970983909d00c28b3dfa6e", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "82539dc7241bc09cbb0813c6539d9f9f2dc9e539ff3a88660bcb47b9d06dd3eb", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "623ad6739f1f1e77dec4da28855a00bf2673087f23a54ff67a228882bdaaebe5", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "4b3c61844568d95e5a4644fbf53a6add27f93fcc4fe87e7e68acf5006dbb0b52", -"T2B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "80ce3e926a7548682286da0751b78d86ca11e994430bd5f0b7eb5edb0ee45ef6", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "77a1cc209bfabc294b7d6e4adfd9f9608434fe02c1ecbe8c5f42038b9b8773e2", -"T2B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "711f5d79c5bc54df8c0e5b7ccd2ce6dc074e5b32fbf0f8dd373ff1bc2cc7d047", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "334222975daec47316ba1cac9c03b0411aeeedc6c392b158762ae13147e2524e", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "19025ebceae96c5a4c24539ce804b2786787fadf33544196721b2f4290563af9", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "218fe18f3d3b23c72666e9b88fc0465adcbd374451a1393840e4002f806cd26f", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "b16ebf479d085e2b6f4f1e8399c73b8bad5cf1643b3c4f61b410076daf530ac1", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "59f6186989d118d5cd272fc3c4832c9c857a59606efeaeac4f98a735d511cea0", -"T2B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "80221956c507ddc31f2df586ce8895bd6a2613fc703ec18ec790001024a52215", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "766d59d9a5f4a38a71dc0306c423b71d53d33379f35cc5480ccfd7ccf0a7f8bd", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "3e0a31545ebe0804d48d8a86b15666c427e467ed1083dd22a775f93f13d8556d", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "eb3d1c0d8ba5376e897389a03029338594d5b338576550ae2e9b61121ff4fdea", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "22e066960263cf8df7c639ced82b53cf24a67c0d78c9f27b299975c8df7ce30f", -"T2B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "82791fd125ef07d442d303fcb762dd48d9287520574e3f478eba44ae9c55dca5", -"T2B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d80529a3e79b0c0e340c84653d34d2f6b403b313be9b6015c0bcd3f2313b73b4", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2f27db5c24e695bd72e2870cfc9c59906473abd99839233c31e8634487db1b1c", -"T2B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5a1da728d01c0261a70c08f11289e4f3c3a4b2444b1d2d2ad4457ed02713ec6c", -"T2B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "831de13d1086e017fad2280a900794c5e23e07c75af80fc9ba5729c60b3dd0e2", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "164ea79eb9015725ce1480684f87a9fa3491107d6bf9378b23c8e11557ca414e", -"T2B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2622c3820bcb1be306f1f19d99e181770ee8f95071e9b31f30a045e60402e6c2", -"T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "78f919438ef71fa5fc80c7ef7f9d3eda33473aec868c69691995bb7532105360", -"T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6582438e0b80f97108f7f2cd7caf92721afe2fba6bc31513280d840d3c0bb522", -"T2B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2eb70fa9f5f3acc615ee2594ca083e48e273c0406f18500690982f2b1b5d7dc1", -"T2B1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "661212e221771c660cd067038fc425f66bdc52a207cb2558bbfa46fdb572e1b1", -"T2B1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "0478ba58e224b1f6f2c5bb5299eb9b0285bb3ccc613d1398f5b1f42aad760162", -"T2B1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "178e0fd7ffb8905d1c1a5a4e3bf43ebfb24791ecfd3e3e27c8d71b875bf7de8e", -"T2B1_es_ripple-test_get_address.py::test_ripple_get_address_other": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "fd43d977ce8ef003998a5ac2abe8085702d93f5b0645098b5ba51d71e2ea2af8", -"T2B1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "05e71f0d6a92993bdf28703543a0a9f7bab0cfc06b8078819f219593dc625a99", -"T2B1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "858c1e506f686832aeda399d9fc36dc360d838b25cee0dd052d2199ef950ef6a", -"T2B1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b7f9d90f85323943b633fe5a0bc6fa4f5647a6732d46210a4b5cc463db7d817d", -"T2B1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "41c3221fadf0edc0325eee8437285060408f3ef3e20ac9ef97f11ba01e61b83a", -"T2B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "4681930724497efe7061901ded595422f81144c4c5147a76ade8c9a12ccf860d", -"T2B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "c3f4a1c3bac678b548fbde5e03ca47bc8d7439602147590133214e3ef2cf30f0", -"T2B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b5b85a396735bf8d7075634e7ffe6efa2d8fc33e4bbd496c102f9b54e9b72eab", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "2bdd92aaaa11de39429dfe93138bd34f5996ffdbc6cc985f3cb824b68b53cd89", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "2e99ca78fd951621a959cf213ef42787cbcb4af114de5ac24c39a87c5ef9a434", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "42dada7b4074994fb7b9e76e4cd3e26fa57c3fbeae828a27c03e770443eee174", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "d3d4674adfb2acaec990b26b2b92e2f7e54f254934ce97c3d04ac92c22aa0144", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c6b775c91858d73919a95a33bd66bb31bc181c79b18dbd2fea0782dfa09607fc", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "8e2e4b013be3d585cdc250dcc51ba002c8916ef70ed0c0dc024f0344042fa9cd", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "604c2572557b690cb3f45f1062abb06525294f9a38b91592c23923fc7e556140", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "a3c2d172d8925157fa012347dede6f61635ec6d09db2487f0518235173a35f16", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "bf21c02f38f434ce1e836a1bf0c0c78b02ccb115e216897672f9dbe8a7714876", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "39a016f35f54595a996bfb99798c11417061810af18054ff3e47b6edabfb57ef", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4980dc0ad3714f003ed48d3d010f878d5807b4965411e6db49fd0c055a1f0484", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e656ba8bd076c68ca82c3bb5297c3afbc30028115bcdaa9bcf00e3363da978a3", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "b144fd9548fdcdfd18480c96532391e11c2c4c94d9905125f0ca2489dec0c915", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "1cf0e1c91f0fbd71e79d83404f7dc854c7775fbf2f185bc611442588066540cd", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b183ef908b323c6ba23d9e97e7df798207c1c9c19c6a57ed3bcf9b3b9c8dc4df", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "79fe12f846b5c1d212733efcb64f2237f065dd4bdecfea3438f957090cccaf83", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "753b2a696eea3de06515d5f553f77fc2682becb244da028d0c9e1a83fc18cd35", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "3e2c0d7aace88a4eca63dca58967e05f7c82b91cb94adecf3f26a8b0691f4aa5", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d92e9c2de08fee6eb9ba6269cab49ef063fbb0e4b19f4ffdc34b69aa01cdaa60", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "fe19c47b07a691f82f58391724cb6fb527bf6264e4de2b71280cb74e85b127df", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d421af164e4badd4945073b402f52c179644514e8ce50c76d66d2e7929655acf", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "f0cd96c3a2cbc2faf4848715ca52ce8b02f4c5b98391829797eb31ed169d6189", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "2fd13d5b04d6dc3b956b8b8877cc70e7b4780a55c6c3c3a6d6cec60059f3412c", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "24e72eecb73fae4a6bb7f2c36fce44ff0421ac38b5578cd959365110fc003cc7", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "1b888a9c491ecd7fc84e84fef290862c7d8ed47a6a6986ab84bf4a4544be19e5", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "d94a153c0f1bc995ef92c81ad873f656e0862608442f510d0b30058e9dfd65d0", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "1199dfe91eb0b28a36a4b3d2945485a658f4f343afed3de4eafe3e4bbaef34bc", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a27e10e06f6b07209120350a86ec6173c734c6143cf4d83c17eb7c2b4fbb2410", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "fd96b5b65841a316f204771478ba0884a023a1c5e46e87dbac1a6e77a002c21e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6e4fe45f6f1ac44318380ec49cf35284d546082be2ad5c95da1e60b75793fb8e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "5be688a627b35771723a93029aebf27c0ba5bf772a1bb7f16464e32fb3204f98", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "ee8370017827c93e5bfb9cb0d453672c152b5066c83b2882c8dff44c4c33d225", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "e6bc49707529b561a875465d5a14e29c089377065011328cbd409caa2e138d49", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "58c4f7601060e353dccea1bf3c29f450613a58ea89ea860d591b13cdbaafc19e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "58c4f7601060e353dccea1bf3c29f450613a58ea89ea860d591b13cdbaafc19e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "d2ebbf10dc2b6568526d4e2cf6088986c6acc1ca7aac1dca83ce2cc93e2ba400", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "ecc4526f2158fb5df2e0cce7982bb5dc090330ae118b5be6997ea7e6f7bd08ee", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "6b3be4f71aedf03ec25627ade281b918d0fd1fc41c52d0a7eb0d02b845538132", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "ea6cb96ee026b225e883630234a6b9215270900a8a41a88d0111d1c5e97616c1", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e9aceed798845646987c2041f826ec4f8bda9c4b6e100559751e13d907554bc1", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "5f792e2008baafbe193c3c1f9bbf718f3d5fe0a6fb8d5f3aa0303367d80dae17", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "7a93f016c14482d7c2d2a21cab4f78fb76ac824fb8bf49503e59859d315688cf", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7b76fafc54704348af3a61e4bdfe8759408f211f1d7e2ad40c53ac77e4086a8c", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "98b421bb9c14371b7ba590d911ba2c6417c66b14df60617c6107d78ff7257262", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "9dd38e27b3f183b012cdc3754da2dc6086e63ac3cc95d6146d0f7a65c331b35e", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "f3af311f1e104b6a35b32cfa28e6ed99d46ffd02ae91e076575519a9159e3886", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "7e371d410a569a4de72f198d14c328b7ab3163ac3c87a0d5ecbe8e71e9fe0f89", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a3945abb775dc9699c4383a527ef33a936ecfa137b4e5de29a29907da8eeb466", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "79655355d6ff799816c99995449a45ffc5bf2d1e246928467b09cd7b43e39b86", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "5d7dfa1e313c31e8a4a37b8bfb1787ea104e088b1a4a4ede8fad7144d09ff5f9", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "e02c8838eec265a2c2d7bbf0bb91302c637753f118b9bad6e933d717f8fcf5e0", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "be725a7211eb840e11aff231c75bc01e48d531e6092c53e407e4a5b57eecb58a", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "be69d69b025f5977105f449f50b2d953b1be376510495151c203aaa084f4dd3f", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "172666b6da84f6aa8dba6d43659104103184fac581101d452ecb2194f5ab2352", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "7c32345e2a8f6eea26f6fd76df8fa4466a7a44f65b089dcb8f18cf6241344533", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "1adb6d6f0969d7a848f72f52251340cd52e17d7761dc1a080e66f0940a5b792b", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "a5f84ad6681ec3b2c5d0bbe35385a710143f7ea4bf662438f7f69c5b1aa7b957", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "423634df0f046398c224f5c001416a1e3f4fe3d28a85d5f7a997424b206cfbb6", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "485b503f5b47173d2757b543d5714b9b7ac7add515ee2db5ac13c47c395ae4f2", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "6167e32e0b81a06cceee177bfaefea8725b46a0251d7038eb27f8dad5fc0eb63", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0acd6b77d91bbf38dc4046c8466ee8a711df4703b65f65704030c432166334c7", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d648876a69346f9f84c838438b3cd42a2c24d61d6ba9219cf9043131b707343a", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f3369332c876d91804f904b5af2cecbec3cc4a54bc95acbbf46a7ff8885188ad", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "07843ccb2942ce121ec07a2865e13506bd8c80da985dbf10f1aa0440bb8a1f31", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "896e7aecee73e6fc3c20a8c34e0d58ef311836f5d422afd8b19883f4f79dab3c", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "87e03293ee89bc460fc3b3d4677497ce2259e9337f2b505763aff5f5f0a8373f", -"T2B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "f995b36f7681c03ed3a57bcefe3116c808e33467a38efe3d4c3191c259ec836c", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "6229e1ce79d2ccfff5920e6e52719717f9d44919884346d1a3e45baf8607ff59", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "5b87afc8d277f0c8a1d211661fd67d2a3b7921c819d1d31bbd20f01ac4b2eacb", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "3afe9705f70b5ae474e033b6bf629664b72fae23620640b8ddcbd7fc66f0654a", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "4e01db4d7114150a9e533ce2332481e9f9de73e2820323182605867498ea1566", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "3807f527266bbb111c7ba04a4f9837183be6096e1b64e97cb46c9e3df9f40a99", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "85c23ff3ad33ee8b8a938e6e2ce1b558c7d979e8bdd3ff7bbbe955c6b813bf26", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "55539e4c7dac6041739066365bbf96cf96608a3e1a2ad37d35bde0a07311e963", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "fd85b4d902cd2413dfaf1728f2170b93c4f04b29e53f3d226efadd1bc6afd5d2", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "0563c25989bd70abdcc4d1e679ad41d305e5c0f14e2b0cd660671a7275b98553", -"T2B1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "f5ca96b78662855291864cb77ed9d48f0d3a02aed777a103c4b2dadcd0f45878", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "e947faf50cb6a306b25ebd76804e1bfa9d4b6c3054b1837955f3b5080d2f38ff", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "c01dec9868e2e4736fe1384cf4a7de83e33d345fe7cf2fd9bbdae93d2994f1f7", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "b6affb7be876ad1691b8ffefc27b1590aea04566cac5ea69dbb5609b3cde3215", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "b9fd3b9854d4a78cf7c15886cef318203698cd787d4b16bbf11f33891b2466dd", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "0bb7e0f7e39d9d1fedc0a57793203b9f98e115b7796f568d728dd2b5fbc3a7b7", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "92b13d1ebd533750ab17823374ac40ff06896c391514c03f97fd7714fbb6a33a", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "60d20df929a5ef978e8e11ffaa69f5b4cfecc9666e443f89585c6c8853702f13", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "97ef393a2d6393cb02b58e33ad2313d98d549f6c4c94e5f22cbe3fc40699f653", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9639f8af5aa3e82ab9eab79f664faffbcb488c983ec1ef9622963af314bb0fba", -"T2B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "1e2afe38adb80b7eaeea3b52c42ee17a9c1b4f3bfe6d92e7a55e450933055643", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "63dd3e74c4186051a9fcd89981728665918e8e1adae8c5d66de03e21aeeab0ef", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "47c972b9dae51b600051b3f764882a7ce117653ba99a0698809da5cb34e50cd0", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "76233c85dc50ff7b50ea818600c8915096787e16b606a6aaeaf89892a814e45b", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "3f388c50a0165fab37012dc01708dbe4389a1508ab79d1332e54e7b82c1457a8", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "781006ced7850e2c21972e0aadf019faf601dc48da616cb71b64fe6e5d960bf1", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "73841dfe4f3875ef310dda362eaaaf638ca21cfaecd3e3a089c6cb97c8c757cb", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "9c19b25005dfa620481b69914bce2a41aaa3de812cd77b50b795eb203487f6ab", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "04d1a10047e219340f167d36db8dc0cfc52cda185e8e912e78bac9b4faae695c", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "ed7d515430defec0b2fdd71b17b29d4aa1ab4979d2b408401fcbe0a0bd2faf68", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "78ecda7d39df7cf7de648752da86ec5feb363c4275812090db75b29b80284b59", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "22cb9850f5850801823daca79a16237c275a335499b6d3baf8e8fb0b081fe341", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "08c055914ca983cdd8a3a953f6c7b2365bbf3db721e93db10b0fa93133f404c1", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "63f360e5b629cfdc579cf1a33bdaf4fd77269b78763a388d543850462714356e", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "0367933a418fdf27ce2fc85c49f909e01f6395475b6059e3c7c703339015ea83", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "0b0e9be03e4cd0143b82d74a1744b8242949772727ffe2b5f7c01f8476677950", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f84e493f2c317f713f00b1965d9da76094bfa91b8c8344b4d23496af4dd1b2f8", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "2c6589a8d2b9b5eb1de1dc97c00e4da3eca114eb8579c869a436a887712cf421", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "d4e1e1a7e5c88189024c8d6d8759220de5bbe655a82b83c65993ecb38a63e278", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "7331a115aa45a912c8f0ef5d7df1dec77a1d26d0b7b441a29eda3d3fd7064892", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "c5b06a88c6a3cf5d74faf8ed937242a8306d111e3b1890b3fec67c2852fa1a88", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "867e771d921575c44de61bc55f86c1fcc9b405538fa1e5ad32c434d82936d676", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "77e41ab537f6769fa4d54cf3e0b18e897a17773bcd7e41eace6de0e20243b246", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "d447e53351e211f2e6800657d40e9b94f7d84e528e051f6f79eb3d0f60c04349", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "aaa552180489b0453837579a4b6d4370c465118246fd100504c162901330fec5", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "5bf63e3811f069485165c81b2808916f4dd620719988c95d7a77514cab745d9d", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "7cfbb1e7163a84168d919e9e18da9e5621ba250fd64aab40755be0e81e44c25b", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "200b4e8b79d79f886ff19fbc5053c4262443dbe87a44716ada3a31a22de41b16", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "5fcf6387cc5d7f318d90ae0603846502e8baeb8d0681d5633e42a87218f0caed", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "ff8f847ec207300f9a7a7da134e1f06fbf25e3d044ae58e55e2f2b4ddc81705e", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "2c6589a8d2b9b5eb1de1dc97c00e4da3eca114eb8579c869a436a887712cf421", -"T2B1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "c0435fa03ab36f300fd7e7b2dbe417f3b76cd475337e94ef0c36809222c5a39e", -"T2B1_es_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", -"T2B1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", -"T2B1_es_test_authenticate_device.py::test_authenticate_device[]": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", -"T2B1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay": "3da524733e52572694837621a0f19c11d0f1eb8507ad5c66ddd2442e592c0a6e", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "3e2055de31f53e9aa1ce43bdfb8d2b6f2d1d4b6fa83d940b27b59cc1aa405878", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "e3c160bf62f0bf5c0fdef3b465dce667040bd87b1b7b09d9d850f22496e60ddb", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5ade50e1e84c609db8ec4e908094628b2ff917130a64a43388d0f5fe4a686ea9", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "28dfe89e9410bff59c6601f0953c641f22c456d778a96ff6cda217068ba21280", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8cea3faa7881bbf309976a6cd66a2429ae701fcadb4cf0ba1993c5fe0b38c628", -"T2B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "806791395276a2e0c94de8d0e677723e167d8cb13d7c105cce7c0e3a98d544a8", -"T2B1_es_test_autolock.py::test_autolock_cancels_ui": "fd8d2bcdd54b02879f3f1898b614491e7a21febc56741e0389d2fb43ad1e4ab1", -"T2B1_es_test_autolock.py::test_autolock_default_value": "6692f118159692173a8cc0edbb0e858a02b354d87642b63ba8d861d52626c8dc", -"T2B1_es_test_autolock.py::test_autolock_ignores_getaddress": "c06c2c58cb2a50cc38f749b1747654b6ae6581bc3a7bd74e32446c145562ebd1", -"T2B1_es_test_autolock.py::test_autolock_ignores_initialize": "c06c2c58cb2a50cc38f749b1747654b6ae6581bc3a7bd74e32446c145562ebd1", -"T2B1_es_test_basic.py::test_capabilities": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_basic.py::test_device_id_different": "946157d3de0e8da4e891538057f266fb3da9caf5fee193b268f4c1c629663e3f", -"T2B1_es_test_basic.py::test_device_id_same": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_basic.py::test_features": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_basic.py::test_ping": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_busy_state.py::test_busy_expiry": "58cb29e1bf047aa272323fecaa59a913a20d158c7e0f15df8fad1dd29365bc13", -"T2B1_es_test_busy_state.py::test_busy_state": "ec773b9a1f3b1b37c36a8ebab541467389864751116020c83d93fcdaae6ad883", -"T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", -"T2B1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", -"T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", -"T2B1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", -"T2B1_es_test_cancel.py::test_cancel_on_paginated": "805b975be8d70b88749f35aeabb809759dfbb81b031c2a0f67d6645b825d09cc", -"T2B1_es_test_debuglink.py::test_softlock_instability": "3bf79e2984e21a59b663008802f7896b65fb4ad45ec452776af7600b5202408e", -"T2B1_es_test_firmware_hash.py::test_firmware_hash_emu": "9d58ce887cde18e51f4df0c52ac8697481866bf4ee27260207925ce6c8e148bf", -"T2B1_es_test_firmware_hash.py::test_firmware_hash_hw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_language.py::test_error_invalid_data_hash": "1e4a266ea51d55976cf4a1f8655e58629092b617c9d36e0603a5081961130564", -"T2B1_es_test_language.py::test_error_invalid_data_length": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", -"T2B1_es_test_language.py::test_error_invalid_header_magic": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", -"T2B1_es_test_language.py::test_error_invalid_signature": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", -"T2B1_es_test_language.py::test_error_too_long": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", -"T2B1_es_test_language.py::test_error_version_mismatch": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", -"T2B1_es_test_language.py::test_full_language_change[cs]": "4d49f8000c083a5c0fb8e3c174508555c7cb25620b4c1a587cd6b1cfffc6ed92", -"T2B1_es_test_language.py::test_full_language_change[de]": "60784a1347f5f1662826f2c6363e5b78c5266b56b37f9a6cb74c7a7a938d38ef", -"T2B1_es_test_language.py::test_full_language_change[en]": "5684c4f7e6ca01d85d83549d892ecc4fc0277b46dd7294d0d7ef436a2f4bbf6d", -"T2B1_es_test_language.py::test_full_language_change[es]": "51aee9f7f7e76839471274c909bcdd2c117e3fe6d9ca634ef71f1209dcb2271a", -"T2B1_es_test_language.py::test_full_language_change[fr]": "0f7df785e611deec165dcce914efbabb497cba640795c8b90f396c223af7f3f0", -"T2B1_es_test_language.py::test_full_language_change[it]": "61f9a29f08ed708a8dd712eb8990c6a09e30bed0b2dd55f364bee8ed15f96a1c", -"T2B1_es_test_language.py::test_full_language_change[pt]": "f670d7810fed8c300c505299514aff7d45181d4ec2665d50801edbc4623b824e", -"T2B1_es_test_language.py::test_full_language_change[tr]": "cfbca47badabff06cadc4c4352d48a71d669e2b6182d3f2825067dedf230b4ae", -"T2B1_es_test_language.py::test_header_trailing_data": "112c52b046074513671e25a0c27fb8e1e52c94d403be29e68890afbaeb7b5fda", -"T2B1_es_test_language.py::test_language_is_removed_after_wipe": "02719a4556b8fd9f6f59e0f9bb0fad899c5faa42700e76c464d51282f6e441ae", -"T2B1_es_test_language.py::test_reject_update": "72b5cc4bb1d3a1024ef5348356565e711392fc379afee08a9d4275b7d627c213", -"T2B1_es_test_language.py::test_silent_first_install[False-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", -"T2B1_es_test_language.py::test_silent_first_install[None-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", -"T2B1_es_test_language.py::test_silent_first_install[True-True]": "b1c220aba9dbaad8d8090eee4c8a212e0826aaf702db3cb38d02936a5e3451fb", -"T2B1_es_test_language.py::test_switch_from_english[None]": "46b0adf33e230920b8111c3e5ad21236da534b6bd44a83cef77a0819684a1d94", -"T2B1_es_test_language.py::test_switch_from_english[True]": "46b0adf33e230920b8111c3e5ad21236da534b6bd44a83cef77a0819684a1d94", -"T2B1_es_test_language.py::test_switch_from_english_not_silent": "a9b0e47be4dac0a6e99582439a6225527e8e365b7e74cca03892675853b1a152", -"T2B1_es_test_language.py::test_switch_language": "26c80e43afd26df2a04f55e21c44c36cf8bbb9c4f5ee3012ee7a4a5f8e2313c7", -"T2B1_es_test_language.py::test_translations_renders_on_screen": "7f3f39ddad3967195db73c2609822dced686f8fc8efe77c72c5606b840b17231", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "8c5dde884bfa43f6864395efb2bda262bcbbbaa45954ef161606c8291cad1c02", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "6f7b308b737e74cd621d9b61c603e951d53137747594963ec8ff1f5cf9c51dd3", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "9a453e964eeeb279c1f11855a380a1b44399e2726f8f29aedb7ab44fc4878950", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_msg_applysettings.py::test_apply_settings": "c3d2c02c606622db744fcac1d3b4406fc7bc3e76fba9d2a865c569ba3adb8a8b", -"T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "c6e94451b965156345f769253593f902192e8cb4cda4d0ac4cff086fb147fd26", -"T2B1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "130cdc99035708d25d7bfde37f8cfef972acf0e1ad4628db33b5f7f981d8090c", -"T2B1_es_test_msg_applysettings.py::test_apply_settings_rotation": "aea3c583db2a5e68a4316c32eb56e2b0512e774a080e395674053927ca8da70f", -"T2B1_es_test_msg_applysettings.py::test_experimental_features": "aa31d90198a43eab4ddf58bff349d11920a8e840335dc9389e5cd98aac76a279", -"T2B1_es_test_msg_applysettings.py::test_label_too_long": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_msg_applysettings.py::test_safety_checks": "4ef5ad04d866dd8c00c09551e1eb84f0742fd5d4d2ae4605d3612d764d6c4a12", -"T2B1_es_test_msg_backup_device.py::test_backup_bip39": "a003931f1bfd3b614a8d1a6a6ad44cf02651b27531a0a16ce30569181941708e", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "de884ea4964ab98564ac23f17890bbf2015cbc303fc65b2e97a587a7d84c15da", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "3bc32d4fc08149dd81134cba2ee698ddb9819cf971beb8fd84b6e7fc75b5cb94", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "ce176b9e57372e3b338004a6123e2ed8bea4126f92ad7cd5b04f31d2558b22a3", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7b6e80e9e5c05fc78176016a2f661673d0467de14c2f1f05017a9d35ace4e48d", -"T2B1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6c500423247daf99b0be5964a3b9a8508429eadf315a049228ba7822a448a162", -"T2B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", -"T2B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "685a78596477a49013be94ac8dcd0f8e9b3c500fe201a5eacef08581fc614866", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "237438f415979801f1dcac7ce52a27a52d90cd7355bc1e58447882f8673a873a", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "22ae79c8dc2b0d32a5d9bacddd9be52b6bf8ce8216aa69360270e746e5d7a2a3", -"T2B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4c59545a23e2b5bb60c023959ce5502ab5a836d74a5c6ad7cad0e5a4ec7a8de4", -"T2B1_es_test_msg_changepin_t2.py::test_change_failed": "e3479bc6b4bfcad447fcf8496b136f5c77febf0f418bf033464d466297d69c99", -"T2B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "c09a4bd14b1738b7ae6604008b9ea40e8e0624e4b29e6370bf08078aa6a26b28", -"T2B1_es_test_msg_changepin_t2.py::test_change_pin": "d826dbdc7417874ddcb576180c92999ee03d252486bb4b3932971c5c5667bcf1", -"T2B1_es_test_msg_changepin_t2.py::test_remove_pin": "504fce072be30ef005d70e50d12bdefb0a82b3004124719e4392418ceab71bce", -"T2B1_es_test_msg_changepin_t2.py::test_set_failed": "e4019ce947c756c2ffb3753b86b1e2603e8d2a1e2b9ac9c08bb87758f4ac9ca9", -"T2B1_es_test_msg_changepin_t2.py::test_set_pin": "cc2c759736892de34bdec1289feb6d7c7f84633cf6d37d8514f3ea5d587eca8e", -"T2B1_es_test_msg_loaddevice.py::test_load_device_1": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_2": "ee1f058c4a786b56554acddcd0a6206bcde2eb5fe879867a71cb3dff2a8fbdfa", -"T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", -"T2B1_es_test_msg_loaddevice.py::test_load_device_utf": "511d36d501993568f70ecadb51afe81b6745135833c9b8e3c48ed3f6adeea3ea", -"T2B1_es_test_msg_ping.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", -"T2B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a956a09d0bc2b0133b6f1264bee739cfad1801793c7675e3d187fdb655dc842b", -"T2B1_es_test_msg_wipedevice.py::test_wipe_device": "946157d3de0e8da4e891538057f266fb3da9caf5fee193b268f4c1c629663e3f", -"T2B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "1e9227b2113b70db1b65daeb5f9cb869fad9625698ed59d54bc8f0f806368dd0", -"T2B1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "1e9227b2113b70db1b65daeb5f9cb869fad9625698ed59d54bc8f0f806368dd0", -"T2B1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", -"T2B1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", -"T2B1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", -"T2B1_es_test_pin.py::test_correct_pin": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", -"T2B1_es_test_pin.py::test_exponential_backoff_t2": "146a49a4c7ddfdd99e9a7972d9806cb03aa4cd15a9d708f006f191514842883c", -"T2B1_es_test_pin.py::test_incorrect_pin_t2": "d4249533e46ad5a24dd3d008b14351b6e15e63ae34fc7473ab943218d905a004", -"T2B1_es_test_pin.py::test_no_protection": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_protection_levels.py::test_apply_settings": "7bc04dc9f10694204f2303ce01caf6cc06bb3f9666824bc7e7d32e347c0ab1cf", -"T2B1_es_test_protection_levels.py::test_change_pin_t2": "da0d9740b75864b2e5f328616cda6280deceb676d1fa3b8b5e15c94981506015", -"T2B1_es_test_protection_levels.py::test_get_address": "9b595e7ea3d6d4e3d3ea56d83403bdf15a60af72ef968885633a3ba2a0401c10", -"T2B1_es_test_protection_levels.py::test_get_entropy": "dabc6589cfa52e3d9a74aff2b08bf1875e1d93b2254a55e1a7de0f767e52ed9f", -"T2B1_es_test_protection_levels.py::test_get_public_key": "9b595e7ea3d6d4e3d3ea56d83403bdf15a60af72ef968885633a3ba2a0401c10", -"T2B1_es_test_protection_levels.py::test_initialize": "f1ea7380541fdba5ec180c96b12656b1e9f9c3fadfdfcecd0084ea6fc3634c9d", -"T2B1_es_test_protection_levels.py::test_passphrase_cached": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", -"T2B1_es_test_protection_levels.py::test_passphrase_reporting[False]": "1e8c190fef6cbadf3af6fb8a9ef5470b92627c804ecd20f9e548179d83d4cc6f", -"T2B1_es_test_protection_levels.py::test_passphrase_reporting[True]": "02f3f8e151c1ce340686bffa881d95797be857b3ffe5e45c9e731af97e2a3b25", -"T2B1_es_test_protection_levels.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", -"T2B1_es_test_protection_levels.py::test_sign_message": "893bf219f36a32bb3867253fe267bce28c2112ac0da84ec17f2ffc3cedaacf07", -"T2B1_es_test_protection_levels.py::test_signtx": "d1edc5e96fbd91ac872be680ac7fb13db7d548e48c7b34d8969d0c01187e94ab", -"T2B1_es_test_protection_levels.py::test_unlocked": "85cbf192ba305b14f491ebad97b6fe0b63990d473d520a8035efa5089ced1921", -"T2B1_es_test_protection_levels.py::test_verify_message_t2": "5a4bdaee180485d9e08ee5fdb0f5d5317e3d0df6601e1b5f30561f957b9a50eb", -"T2B1_es_test_protection_levels.py::test_wipe_device": "a11c4318f3eca399c953ef595ac7fc81b5e4aee4845765a9f103796d8bb74926", -"T2B1_es_test_repeated_backup.py::test_repeated_backup": "9b0ebafe8e17c11dbb24bdf95dc230f6ef9c5be29e178f93e8d5061b460db046", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "ec41b85ade2fba738b810b1b3a35e812fdd645f9266c3fcb7191ef803ca02ea8", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8a8ed93312503227b580368870d575b47af570cba5b1e3a71d63c9f6e7e91bee", -"T2B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8b3b91c5f21c4814398ea5b0f16be2fd35a57036730c17a441b18241dbfd114c", -"T2B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_clear_session": "6fbffc0958c6514ea65c5ce81ecf2cdc5f2ac8965aa68d8584d5ab30a93d7b82", -"T2B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_derive_cardano_running_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_end_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_end_session_only_current": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session.py::test_session_recycling": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", -"T2B1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "711bbec8cf8ff31af51d7831b7bf85f22ad72ce50555abd75c6e172bf97248db", -"T2B1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b8d5bb849a4096ded014148ccc83c60baa15eeb9176f9cb50e83e1da41a21823", -"T2B1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "ae3df3f4c5ed0ef47ce0faa573bf8a506c69489861c0f8ebff76229a591d9158", -"T2B1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "71b23840c2679f7a4eb549ae74ebc6c4c0c7d4f21e01f05fcacadf8e88671782", -"T2B1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "0efd88f75c5537a52205aeb1ff7b4a6ab299f4e3e83036acd79f1b627d5355e0", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_length": "c79b68682fe3ad6fe7a0074dc4ad41c9f872b1ed675525cce53bc311b7d7e813", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", -"T2B1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "2d5316868d556bce7e2bf9d8740e63b929fef99d00090488bbef05096ef86a63", -"T2B1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "7da3455fc1898ad7313faf986afa41e8683459137a02ed65459c4e2859477a90", -"T2B1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "e5732810f2ccd293e1b79d915687f5e894f5d955e6db00a1411b95bddbc7bd02", -"T2B1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fb794c49205b78c579f8529e1cb2824316a8cae5ece46987acf8d4d56644e5b8", -"T2B1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "505524149ea8a55b806fe691e8a74e41619ae0afd1d02cd1058d5d47bf20bed6", -"T2B1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "6b71c7831c8b9750ec569694d677a7004625b7d899de8c85ff41822c459cc5be", -"T2B1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "c4a205e93ff396c0adca645477f7e904279b31ff7365db977cdc5d9900496d1e", -"T2B1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "5428b78230e3728909ef5627fcd2ee20a4c803f4cc48ffd83a39023e54851c26", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "381e2edd7c0b21abd60220745c5d58dab922c94bbf6f8663829615b718057512", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "82b05ac35266825444f9917c2b78705fa57e22b2906872a86961de0beeeeee0d", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "880c1d5bc3db42d7974e2b526ee38453fc9b1a1fb23922cd81b89a66c5cf9858", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "4a31a8438c19f6cfb2164381b3c77246bd8ba3e2d0f0904557cdd34da48ae128", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3c90f513ac2487b18afb24e766e790445520e911f1d518f1b1e6948da10922a3", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "931922598fb0fadfd89fd7c70bf41208a100de3c923270290ec9c0f9b941a8c4", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "62ac15287681ab838a6a2505d158b6f07714b421607ac5197e8e1f30b8c701c8", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "105c6f134d8ec38c5b68de67968548378650ffbfde2c1bca3715b59b8d8e3216", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "40d5c426fdc29f472e497c19dfb4d04a5e73a04c48976f0db03699d34f58aaab", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "375f2cead31d30cb051220208dcc2f21d234719d46e247293eed98db149cc791", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "f028ab852a5db62cb3a9a062e536c2e0568313b8f8961fcb4f3811baad819884", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "6a8ea0b317e4f2631c6369239faf2b82d4c30103b8c5ebfd57f6cde0c9297552", -"T2B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e4921beb410076667282830cc79cf71cec4ec561b4195f28d92e867e3e430635", -"T2B1_es_webauthn-test_msg_webauthn.py::test_add_remove": "f052c533daf866855b3db4a08d9ef69205ab0350434d494fe01038bdd891cb0a", -"T2B1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "ca1e329050d4db1a09cbc672a98a66fff98f5ff16857e0c747d8eb2073635c39", -"T2B1_es_zcash-test_sign_tx.py::test_external_presigned": "4fe18488dbdaca245cfe30868f7c163595fbeb2321268fd404afc42fb3a819bd", -"T2B1_es_zcash-test_sign_tx.py::test_one_two": "709f33a0e074d3923aa1c7942ffd49606f246dc044a3269deed9b7ca54051680", -"T2B1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", -"T2B1_es_zcash-test_sign_tx.py::test_send_to_multisig": "687f587e84dea7c578cdfd7fa3767d25bf2326214742285bb514e7a4ff74bbc8", -"T2B1_es_zcash-test_sign_tx.py::test_spend_multisig": "32b08ab1d99fae1a6e65796476ff231da26a2d050f48be0f26f19c899b450fe4", -"T2B1_es_zcash-test_sign_tx.py::test_spend_v4_input": "bec708b8c0b57c1cf5b3b0d0750831011fcd4320f7050ce12bf858b9f96d065a", -"T2B1_es_zcash-test_sign_tx.py::test_spend_v5_input": "b1918230ee7f9652ca622534ffa872cf63139783d963599143235937eb33a350", -"T2B1_es_zcash-test_sign_tx.py::test_unified_address": "cf31c207d517e393c0bdb5b1f7686af2ec350ced608b6393f96c414c54b86e87", -"T2B1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", -"T2B1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "a9c82870e7ef5ae38184c83c526aef7954c9956313203e7d09657f1f7ee3720c", -"T2B1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "89292a81a0a4380eb2b7af21c0bee0a53fdd3b86d20c58f73382ec58dd495fbb", -"T2B1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "21dce3ae58a0b4383d4b295e452ed2282167d39155dd5a828db5bfa432d42047", -"T2B1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "71c351ca201522a74e1f7199ac7cbf99542f646774dcd031099db50b8fd50743", -"T2B1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "6e22d97a5b4bd8e789a204aaa16f494596e0d8511ec824adc7c4f9b9fe5e87e7", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "0c49bc55d035c05b21e470cb4b3ab0182e10166e21b8a2e8d21f774792b5f395", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8f730c973185c77623019a5fa8254658d262e56d200a2192ea73eba08e5f23a3", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "57c47b1573b0c2558047784e8988c2ff7f2c643b14989a24b1f6963eff77ad40", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "0c49bc55d035c05b21e470cb4b3ab0182e10166e21b8a2e8d21f774792b5f395", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "8f730c973185c77623019a5fa8254658d262e56d200a2192ea73eba08e5f23a3", -"T2B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "57c47b1573b0c2558047784e8988c2ff7f2c643b14989a24b1f6963eff77ad40", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "d465726f6007b636e5a48c3b0b14c3612eb97b5c51e13f5f1e08bf1c693e22f9", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ef13f3c0105c9888fdf2d973dc28f71658d5ddbf0b3c1f05f26b8870e74786fd", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "8facfdf6bc9b56f2723a820d1130cb2e15399787f8a2081eb1b7a80ba0180d40", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "a2f6531846847c9e3f81a936cc6c391b30b794f0397adc9055defda4a0c93662", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ea754b5c25d79068110289a3a88d020d71f1485ca0cb346e07602ebd040e84aa", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ea754b5c25d79068110289a3a88d020d71f1485ca0cb346e07602ebd040e84aa", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "bc3f138901692e6e14ac1857f526b8e3c738653f7f2c7d19639132ea1984023f", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "6c68537a122fa4de1ca6b6a6ddfc307fedb668d3f961b4604878e6dc87d89c4c", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ab1e06c5e72e7ebf9296e3c161c3655f2037c33ad89f33f9702f6577125a295f", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "e33a0c559414aa9b679279e34590f95c34aed86f54988876bd2f61d0fe4235ef", -"T2B1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "e33a0c559414aa9b679279e34590f95c34aed86f54988876bd2f61d0fe4235ef", -"T2B1_fr_bitcoin-test_bcash.py::test_attack_change_input": "c16f02d4a2ae162e45e7f23b39267e24a0d94f96e2e6ba767c8a9381fc030418", -"T2B1_fr_bitcoin-test_bcash.py::test_send_bch_change": "081e9b411b50e447072df21c0eb05376f88b139e98d69e39edf12ff4a66d073e", -"T2B1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bc051497504136f0291c1ed7357856e63c111a7f17fad5333f53613c1dbe1061", -"T2B1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ca4412cdf98b89ceb6bee99b8630c5c1d41eec7440e74cf667ff8ac116e2226e", -"T2B1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "46f361c439c4e1a0ac52e4f23f4b0ee8fb3ab4d090491dcb9b6500541f4d9ea0", -"T2B1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "1707572d5a6234c69b5f9e1dfb57afee100f6bed8313c564b97625a09a1dd57b", -"T2B1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "c39d497d498688c78b1cd2346a6e4995ba8073e5bcb3e5f388ebf2845890ae50", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "119255f7f60642b4f7c76b16a77ab9859bd2826ebd32d28814bfdf6b3bd1acf0", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "19f5fbf6b88f3170e9609e41ada5ccca1e0bf046b5617a2503faf4b47fcbe024", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "649a6ed8ae4ec3ac6bc725af02962ae625d513943039e13628e1db66a4c3598e", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "401be189c0ae379442064db1c42d01c110174a8c90961f1031870529ec05b539", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "d43ba26c9b7f925dcfb0dee40aab055cd5a68fd2d971a1fa63cf66aa21753630", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "5fd14ef6f459fd25855e7e726f6ffac053d14576f2e70bd22b3f2691138c7024", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "54cbd29f28c12dbd93e540dc07412ebb5df788d97cc36efee917f1dcde0c01ce", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "329505dd45030077a8212b73beaab09202d512612425d3000dd7bf90f66c32a2", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c618fe0ef5ce66c4dc78d50bf17243e89d8a0eab73ab8436f031c2af56f443a9", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "bf97bdf06d5beeefd9b255b1a1e1e71906f1f3663063cb60056be75d0df7e8b2", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "3e3c0fd8907729698959d5b5286442f934a5a3ea07f0c564a91913f6cbae9b15", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "fddf4382f66b861a2b7cd3c0d6f2a46b26f6c7f92f144f2974f8dda6c5ac315d", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0146cc443e48d3b76f132a1af5dcfdce4c185ecb34d93eaf4c1423189a0db5ce", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "ce304e73fb684c5a79400eb18217d01fdad6ba23f147e462ddb4181c4286f61a", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "27e6fcb6ed7ac293e3fb87645caf19bd9bc2207e8ff49b1fb60f106e461852dd", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5894160fcb65fd174d3181b231591110040dac6240b4934381dbf44b56352f4a", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "27987ccac177fc89a7e7d73a0f7ad4f6f1eb539fc210998c35230737e9bbaa5b", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "6d604164bd065c46cd2fc3a1260ecf5c7efa32071efdb06ddb5adf994c56f49f", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "119255f7f60642b4f7c76b16a77ab9859bd2826ebd32d28814bfdf6b3bd1acf0", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "19f5fbf6b88f3170e9609e41ada5ccca1e0bf046b5617a2503faf4b47fcbe024", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "649a6ed8ae4ec3ac6bc725af02962ae625d513943039e13628e1db66a4c3598e", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "401be189c0ae379442064db1c42d01c110174a8c90961f1031870529ec05b539", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "d43ba26c9b7f925dcfb0dee40aab055cd5a68fd2d971a1fa63cf66aa21753630", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "5fd14ef6f459fd25855e7e726f6ffac053d14576f2e70bd22b3f2691138c7024", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "54cbd29f28c12dbd93e540dc07412ebb5df788d97cc36efee917f1dcde0c01ce", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "329505dd45030077a8212b73beaab09202d512612425d3000dd7bf90f66c32a2", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c618fe0ef5ce66c4dc78d50bf17243e89d8a0eab73ab8436f031c2af56f443a9", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "bf97bdf06d5beeefd9b255b1a1e1e71906f1f3663063cb60056be75d0df7e8b2", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "3e3c0fd8907729698959d5b5286442f934a5a3ea07f0c564a91913f6cbae9b15", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "fddf4382f66b861a2b7cd3c0d6f2a46b26f6c7f92f144f2974f8dda6c5ac315d", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0146cc443e48d3b76f132a1af5dcfdce4c185ecb34d93eaf4c1423189a0db5ce", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "ce304e73fb684c5a79400eb18217d01fdad6ba23f147e462ddb4181c4286f61a", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "27e6fcb6ed7ac293e3fb87645caf19bd9bc2207e8ff49b1fb60f106e461852dd", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5894160fcb65fd174d3181b231591110040dac6240b4934381dbf44b56352f4a", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "27987ccac177fc89a7e7d73a0f7ad4f6f1eb539fc210998c35230737e9bbaa5b", -"T2B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "6d604164bd065c46cd2fc3a1260ecf5c7efa32071efdb06ddb5adf994c56f49f", -"T2B1_fr_bitcoin-test_firo.py::test_spend_lelantus": "5bff336d78c095ee111a7fa28dba425b60d4a016cef167ce3822325cbdb728bb", -"T2B1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "bbb2f6fd660cd52fbbd5211226f84167758210d0724cd6c5ac8c35197ee5c429", -"T2B1_fr_bitcoin-test_getaddress.py::test_address_mac": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_bch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "5eb28208a34b28532e9b5cf10177af727bfd18c30d02eb2d916c76a98519c5d5", -"T2B1_fr_bitcoin-test_getaddress.py::test_btc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_crw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_elements": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_grs": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_invalid_path": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_ltc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_multisig": "533a067f937f69a4bc82c2a9c250e6e219ac02e7944a8dbd604e7d96d229374b", -"T2B1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "32adaf10f115bf28f6abe7a0c9520e93cf79fc09dface4c19afecd7c0b0f2f4e", -"T2B1_fr_bitcoin-test_getaddress.py::test_public_ckd": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_tbtc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_tgrs": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress.py::test_unknown_path": "6585d46183cf61d63a52ddb7df8a1697aea7c507268415b257cd9fb00c58ddbe", -"T2B1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "1c927715cb2c642912c673ca7d74c3f878125a736bcb8dbb30fd59d491e2800e", -"T2B1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "5a4cc80f4bcad7b2312d85d71c5bb62c8896d39bd1d6ea2324e44bb35e33d61a", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "c1d7bd2a6313dc4d8158bfadf261861a8e246ec15a0ad700c387afe43880be40", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "933f061e977a3da38294baf3026fa3055cfd27470e525f535ea541cef8ef6388", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "09f3e8f9fdb65947e8d31b35b74dc1e35d0b4d31c7a1ec51f38f19dfb34f0e78", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "225ab6e841d39809ad210222b45223c1fbd8a4d137b3da20384bd0f86d1ac6c9", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "41c861ce046c92cbf5b1d6712fe9ecbc9394bfe7d55cd44bb030af4b2229ecd2", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "f8b8325a8c4dea0603a0b14dec40a32e83992f753aac3f28fb8907619eadfaae", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "1ca0b0f432573a501e297e2dd28908e7eda373551036c6a5cfdc7373c9dadc55", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "b7575e86a3a87592e9c162d2170e8a3db164e113c67cb0b1e7e3422af8ad7897", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "f922234633a01443046bdcc7fd45a18a705794e8423e5a6aaf3d03e51787efa0", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "59549a3890e4fab0688369434413c4498aafe4620ef3c9a7403abb766539de01", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "7565c03cea6608f11f532bf13e461c58e2a7a45031c5bda1551b23bfdec824e4", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "7646fe0bee79c926b82939736389ba4fe17b4c33ae313cc319054cb94e9dcf0f", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "69fa275598d4f1a60cabeee51acf24aa84b72357efd17e3334f60ccc26462816", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "d46398f011962ef58a13d2ebe175a7b31868c9e2b6ecad7c33318eddf4effcc2", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f7e3edbab630e98a73fbbcc266cd271c9cd935d18a7ca70a17987cc0ec9eb359", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ffde4cab099380af1f4668d485ca0917fcc0d805b3f2d17cb99e784a23b0c82a", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "70fd1b9fbddbbea31659ea5f6d7f8353c5cbcfd624d7dd5872858df08a88d2a2", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "09c45b7e27b2b1be279d96f20ca49de3b413e57c8ff45f23bd07f126120a4c7a", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "0aebc668a6373314d183905b60f265d95c455b03996c47a109045315196902bf", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "c19839a6fc59409b5eea68833528bd8b534fbd5f5555a934f5a0eb920dcd2fe8", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "90b2115d532404d5e112390e45d5f1bbc83591faea3a38df874ed197f929475b", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "e1b228f76cda714318d1cc094689a82c7536c68f3df7a9304ac11659679aea81", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "e1b228f76cda714318d1cc094689a82c7536c68f3df7a9304ac11659679aea81", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "173965f9dc366768bbb1b872941d0718ef428564fb2a19ffad9bf80806fc7cc2", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fbab9a8675c6fa476ed7503d5acf469e46a8d64387fbffe1ab0950ee1d7c098d", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "cb81eabbd761257c4b11eba444eec26687fe321987f826346c9e8d53ecdcf185", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fa5b7137eeffb743bed1ce7cab4f54c6cfe967b5aa07610b49dbfec63adeaec4", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "3146c0ea2360ad96dd37632481e99f96dc6013dd68ec7142dd63e38f96948a8d", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "925b7abc2d7292439e90227a3fd39eec3438bd062a3a9fd5281c866ba77a8c5d", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "c58ca4732915138ec37ba16010015d5492484145fcbc8a17bced91faa293dff5", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "3d8251ff82d14b69158762079a74f7cab9f938f26326d3fe4d795460bf4c864c", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "fc6f5e308699c9028eec9a02d7ea008be435a186ad600bdcd066a7ca14144a94", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "3b993f7d6179fedc227944b774dbff998e24beda05a27bd3b4b74f37627d703a", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9e8226205a782516cfad62d9b03b0c7aa78f99f1d63556c30be70fccc2c8f716", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "3b57f90426a40087be7186e632f443e4215f13c24f7f8dfa7ff2c26a5ea0c735", -"T2B1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "f1ff7466aa337a03c52066fb83fb0445bc0325eea23a957e9ccb20f942314d8b", -"T2B1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "809b0cf9e3b88f6fef2f8a05b20a3ccf7e47e1298f463d7e4003c0038723a4e4", -"T2B1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "19f5fbf6b88f3170e9609e41ada5ccca1e0bf046b5617a2503faf4b47fcbe024", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "2ab2011650e01c0828a18cc5da2123dc6d7c271ab8028f2162de84499f310f52", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "6273a694621d13a36ff3e1cf77ce2709df27c0f3a4c5379f75c9e282da4d1ebe", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "279ff2abb327a07dd5274d1a87f9558a6aff257a315dc5c4e1d42be93f7c522b", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "c39854bf909e36ac3112bd50ffc8ea04e672814f6cd0973258a797d630b3021d", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "2034a09f3cf49ea6387d7ff213d918b5795ddff1d41ecc1cf6b7af7301f76a76", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "0082bb2937f36b6f04fe0b024904868ade1ffdd53d9883ea6c2ca2b7a2561f1e", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ab9d83e534a2d614af8429bf31d2506179e39cf95546153af3e3eceb753ec51b", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "68a7054a154df138eac1000906fb6a2993c285dd52162485a10cfc7153aaedb8", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3e3c0fd8907729698959d5b5286442f934a5a3ea07f0c564a91913f6cbae9b15", -"T2B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "a1c862369ba4a7ce8f9182062986bd007455da3a273289addc5d32eb2dcc193a", -"T2B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_grs.py::test_legacy": "25c5831771dd52d8d58d9e0a48df5da626bf5dc27f2c2a57f08466c6d2957880", -"T2B1_fr_bitcoin-test_grs.py::test_legacy_change": "a84b409f32e2fa73b1bc2ec218cbc162341e8ab084aee40fd374d01ddc8cce9e", -"T2B1_fr_bitcoin-test_grs.py::test_send_p2tr": "64c5a61fbfe4e5641417abc2eb39664fac15e671513cf55d364c3619972451fa", -"T2B1_fr_bitcoin-test_grs.py::test_send_segwit_native": "398a6995ad1fd98485e803491672e72341cc3d332b77722fd9a40590dd74f578", -"T2B1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "ce236bc31133c4c2e3aba4507d1926ce695faf8d0fd2fd1c1ed3b67992e8988a", -"T2B1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "688cd85849ec2b4a53bd25b29a62f8037a8af640d3db55cd91c5e0b0543b93a1", -"T2B1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1d445d723977544e89fab37a74193afdf9c3a98f132045f8e2bf4e6117af3bd4", -"T2B1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b538109ac41b552bcf137eb1af33578c5d481a212763b0ff1e55053300e63257", -"T2B1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "1b3290c393d296833a336a0956eb3f8daa0865ef842f66b383ef04c91c669cd9", -"T2B1_fr_bitcoin-test_multisig.py::test_15_of_15": "50f18aff2066872291af9b60025022c743aa718aa24888dc551773fea808e9b0", -"T2B1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "d5de110b06dff47bc52b30ab865ba9124999cc2440919b3e09aa829ad4ec7ca8", -"T2B1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "db843f7fc2ba1e1fa3a00bd87525d9956dd299b85199ec08cd3551ce86f0c0e0", -"T2B1_fr_bitcoin-test_multisig.py::test_attack_change_input": "0cd344ecd18c2aa5ae1b2739102440a621949d926ada7d0ee75ae430b30d29b7", -"T2B1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_multisig_change.py::test_external_external": "3567bc9c8c8e77d10b8417a49ef8b16814509e66a887c748fe284833b753527f", -"T2B1_fr_bitcoin-test_multisig_change.py::test_external_internal": "513f69583dcf1436a8f7ad5a1fc1fe134e7b988ceb51016b9ff885971bef68b9", -"T2B1_fr_bitcoin-test_multisig_change.py::test_internal_external": "fbfc03c57662dab181fea854bd76ae6ddfce3d17667c439ac4e70c4b32f5c208", -"T2B1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "3b6945b6cef7a17eb93db3ab0a06123c66f6f3f7f1efce06dfc25996b41b4fb5", -"T2B1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "51c5d0b42d4386869fb9980f6dc55a2a6c4f19b205f8979342e6a082325f64c8", -"T2B1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "ab539024de45f870e92452bd7d28ee107169e6a841c5b636ff87aeea47cbb731", -"T2B1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "33893ad8e5493f7c4b51bc78f5429dc6ec1d32bfce49e5fb6e10db32a72b2373", -"T2B1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "334f4cb154e8a0c3635c2cc8df971e84a97ccea6cd262ee082030ff8e77e3562", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9d1be7abd05badec5b27483b3dd61587eca7028cf18b787b993f139f762b1a33", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "a160863d1772c45283094b1b9330a9c8a55956970fd59bf624d6bd4373ef1003", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "56dd4e417fa6a88ee16379aab932b9fe056af8a47ad8857dea10f8a01cc1ab2f", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "687f85ab1ce3c2c5a1685cf44454d0844c67300517ef88168898956d15a95a86", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "82c6cfd5c72cbd74660e1d4b31350c7f93e98afebe13917191b6d7b6c4e9beb5", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "6616dfad23dac1adc0a47b92c79c244e5668108f429fe45a8aa53f90f51606a3", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "8e53e80b4f944da588b280cd3b71074ca46dfdf2f8c2c46b5613748519efef11", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "79c6a48d05e25ee1c0fd6ee73a4f1c53408fac96289db536276128a2e8ea609e", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d45838675caada0c043c9cfef14e77138d09134f8a6637b28238ed2aa1468621", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "a0766df652809682491473892ff2db8623631e553d2b1eaf10a0fadea06b660d", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "252d3de776067f60284b05e5d400d986c254e5d65018f7987612dbdf60332e3f", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "df60c29d18bf74f3a7ea7e9091130e42567c74671eb90d77cb5ad50a02bb3657", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "be98bbe03d490c97fe5a85af1a0788f49fc3ca34057a9740b5ee43fa251679e1", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "5b031e7ad8fe91e1d3763f208597b07d6bb88a4a791ab4002f99ed57b0698035", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "5ac0598862a02d6b912c27e0bd65b147be8900eeb8e1e11e0cb0f106e0384439", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "c04d50b71fab71994e107109b3a2c7337d230dc0a538a939b31cdfc1c317931c", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "190b406accff3a66ee5330290dd170891aec1cc23f802263a49cfd7735bfbd64", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9e3ef6e7e2eefbbaa77cc0f808e02820df9be86ebac2c365cf6267400616e8a4", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "b4bbe23da5d2d84596d57d73723d23cca589a7c02ab604fa44b2049328c219f5", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "4ad8015049a4c878283b3502e867480d0ee6b08359dd5053549cd7d1086bf641", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "05a42ac5c8d1cc3d8d4b0db38ac36acfba502fb2ba273b4538a7888a69fe2130", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "94654486c5cb97c24981be10960578bcedd4da216dcf71d652631b1184d050de", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "18751193860f6cfbbd1956477ab8cfa388c36d37eeccd23b7feebd975457278d", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1813aa86ba247c792b95b669369784262576d5407c77348f553c8804fda573f0", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "fb3c7db16fe3cb661d12961ed63d81446a2a498c5405805afc94450a55c1090f", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "fd7caf4e7f17f029126d95103894f514322541e843d4db5dd4677afc909ab1b8", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c36e8682d9f31c92b61f38d7afbef7b8bad55e05744a87230966e9b50338a90e", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "daa62d476dc095e77f0d566762b51954d4fbc06fb2b94e5d859bd791f9848bc2", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "baa398f045650e4d6dd7b6515bc7f16f3dd3b9fe8c5eba54f5154cc293a1dc77", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4544cb7b64d05ffe3b3c32b47e5caefe79694e5d97a345d77cdc2f1efdce7073", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "2e813ad3d6d9ac9a93db95735ed891d898e15beb6f09495079d14c4ca708f0d6", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "afcd36de08e142cb6f8ad8d508fcc3c68da038a436392f5481df903cd5ef65c7", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ccc83fe601401d1f09714fd80908bfad53ab0f8b50f62d8fd83ba5c26873f162", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4d50c8e5cf3cab9f523b3b09d8211c0e12c2c0596efe45a3a6d543240aa42d88", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "56f9d74b436926b7f057fd138f80feff7e373c18c6141cc9ecdc19a0046579f4", -"T2B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "0013acddf9345518a5a2a223417d79323c0e0f71ad18d4099a237dbd329f7f4c", -"T2B1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_op_return.py::test_opreturn": "c3d60677d7aa4b967e012f74820025d9f63e03ef46de7abca1fc186cd9babe11", -"T2B1_fr_bitcoin-test_op_return.py::test_opreturn_address": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "641d1f7cec132483b96d945fe7eec72a8b048c2f54c1d9364f26d11c1d8e45c7", -"T2B1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "55cf183477b3cbfd6f046999b11ea4dfd297af35d52fa1e3ac8479c07f0f4697", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "42fe1db0bd18aa3fa10c06c160593131ea2915f8df7ee5a851dcb08202c4a6e8", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "42fe1db0bd18aa3fa10c06c160593131ea2915f8df7ee5a851dcb08202c4a6e8", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dc35d5bce920222832eb18621e5612cc5d0cb4c3e76ac10cc04325e23603163", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "f9b03dc650ef3ed84700d487887d63d4a933c1f8e9d8bf3da5865473eeb9adbe", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "9ec78ee19b9a9be27bb42a34ab2c30f91dd58537884327a957ef1f2411f93da0", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "498188f371565c37296b1f5a3ff3cac6ffe88713c9d6ce1a43bfe038e5367d5d", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "c0f800ee6692d2460065a40cf48d5e06a669e9a56cce136743b9a519d6d03dac", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "fa268c0e978de23f68e1619b2453a2091bf4c069009585cac9c2cdc16198aac9", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "fa268c0e978de23f68e1619b2453a2091bf4c069009585cac9c2cdc16198aac9", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ccfe193624c2f922b2a7816499f2d0729d9188db11ef23db0b2b7cc886765cfe", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "a220cde24f78b87dc108a1995ed40b2a51d99e418a98fb352ae312314d075a6e", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "bd9dd56c2ae2a5ad8d387c25fc56ae53e9f8165d4bf2e2ed7f1a60b3b9f37b28", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "bd9dd56c2ae2a5ad8d387c25fc56ae53e9f8165d4bf2e2ed7f1a60b3b9f37b28", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "e286db43e13991d33074456061d792627e74d8e24188a0e49dcfe1abee29cc94", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "5b4b0455c76293f48634d7d101652334f4f80a81f23b71bbfa0df2a97b5e7069", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "6f8f8946fc6c38261177480c00a1369f1343dbc2745a0ed6ddbabc37f6794b02", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "6f8f8946fc6c38261177480c00a1369f1343dbc2745a0ed6ddbabc37f6794b02", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "05405ce086110a14193cb92cb054214394ebd5025c88acc3e76e9ebab12f9803", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "de43a61d0f6a444056e8d766041f331fc5e2d67faca999d3abec06385cb2d932", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "c83ed354cc1d1ead6c43ea0c1af078545a8e3fe3a872696bef10e719154e5862", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "4e3cd9af85cfc6a633d54d482e6ad66b072ce7bb2a70f5958063307c94b21ff9", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "ab1f2a705e9a7eb9774555ec52d71117203dc9f34ba9fd2202b244a1bf696623", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "1272191fc819cb5024bee158c552d323eaf8871355c1f7319fbafc0f2405d1ce", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "5b1e6158abf213c56d0966fce3cf93a34dd999e1b19356d5b0785f8c889bc196", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "6e1fee75b60f7ef87db5d1eb825de35933ff8cf95a08b016ad5d8396d8ab6770", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "879a80464aa1b54a9fedf9d9b88645e0edb4d6472007753cf360ac6efea8e81c", -"T2B1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "9684e506d9f459b153794637d46d31b46f5fdc5131d8fab8120160ae647c357b", -"T2B1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "a63183867d2c0bc7ce8d88cb8a70f91b0e6f4b644ed256d08d4445a28f645560", -"T2B1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "d1f84f8048ebfe3e0f6e718dccf4483a7d30e6133be7bbc97b16019853e36256", -"T2B1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", -"T2B1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", -"T2B1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "a2e258a68df1090954a4bfefcbe3842b9ba68a335312862dd04bb9ef5e128c89", -"T2B1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "129cb9e232a567735e733b457306901e7335f8a4e2f37c46f766bc3cf2f4df4b", -"T2B1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx.py::test_information": "4425c963cf13d2b4171dc5abe8e481421cc7dd4e4361413ab8fa1c928988dd6e", -"T2B1_fr_bitcoin-test_signtx.py::test_information_cancel": "7789b5fd3f4ebfc8f4a558ffe5cec9d8c1db0e5766175db2c811fc1c951d1c5c", -"T2B1_fr_bitcoin-test_signtx.py::test_information_mixed": "a6d4af1386d42948d559e31e8543b2a4843a3d346aca2cc7eaa43b0a6feaacae", -"T2B1_fr_bitcoin-test_signtx.py::test_information_replacement": "f1ab90318e20f64bacf21e903f5d845e6fe2806d9b643201b96a0905edc2722e", -"T2B1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "1f1f5859147667c31fd4588aac55f67499c4b919fdb00198ee4b8bb11dd35e59", -"T2B1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1af2d7966d2a611b5a33bb35cbef0fc474009e4f5080171f008a0e3c5b06e9d0", -"T2B1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "3f52fcc5d043b548da4ff6e933462042c8276d5fc312aafadc379284fce36c77", -"T2B1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "666ef328c6fa58f1f3749b206ff638aeb0f68599e46bf14fc9182f9fed4fa36b", -"T2B1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "1d17fd06b444902301ec2b45bbc2d6ec03e63e6ba0f2ebc398bd1405b4f73cf2", -"T2B1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "c9026b0b2504f42b9f1dba444aa3c8cdc0d1499ae731c5a3f8c9573a911212d8", -"T2B1_fr_bitcoin-test_signtx.py::test_lots_of_change": "02feb00512573e35aa6c0515f7a97083a832c36b09e297eae5503242ea84dece", -"T2B1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "37335f9684caa9346ca34f7c45704dbbbaa1f8af0c818f63dda62bb9ce322547", -"T2B1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "692bcb7f41a2c41a80d62af8c02ed44e3f7b99de9e1d00ae435f46cbf91f6700", -"T2B1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "602895f0d3328dea7337d01a728aab462104c5672b2f1a7215d85f9dd21d00c3", -"T2B1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "d6c83a38659f5fb26cbdac10ecbc80255dc6c2edb52b6107ba1f9e73d0f1cd43", -"T2B1_fr_bitcoin-test_signtx.py::test_one_one_fee": "49c28681340981781dae630a4916cc30553804f2b595ee3b1fe9f35c18a00454", -"T2B1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "acbe9d8647df06f78248c85b30763255f2ffd21d7467e8f880dc0c5127bd6ff7", -"T2B1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "52659588016614b30cfc4975500403efa782a1ac85fb0294aedfd35cf535d41d", -"T2B1_fr_bitcoin-test_signtx.py::test_one_two_fee": "b54ac3f5bacb02a669abe3b23a4b8989492999c2c8724bb0d309b50bcbd2e267", -"T2B1_fr_bitcoin-test_signtx.py::test_p2sh": "f5665847b3d5e61b18ca2b8d2e0b3ddf7e0ec983833e0794070bbbc3786c00da", -"T2B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", -"T2B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", -"T2B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", -"T2B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", -"T2B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", -"T2B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "0d130ba66ccb009be7600c875938f74ccd9efec046b15a9b0e6298890394fc74", -"T2B1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "ea34e6dc0e5d2fb82a1ebc5b91948f7fe0494874b1eccb900ebfb6db581eace3", -"T2B1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "5e7e97c61bee5f04a0f8ee65f9f789aab73dfe518a49ce6cac7769d0592083bc", -"T2B1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", -"T2B1_fr_bitcoin-test_signtx.py::test_two_changes": "0a7b93ae4c6f3833a205474231d430fb7d7f00a7c2ea946d657fbe99167fe115", -"T2B1_fr_bitcoin-test_signtx.py::test_two_two": "a4b980219ad39f792aa596ca00feb363294e8d178077c6d7fbf6e0f4841ae9be", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "49c28681340981781dae630a4916cc30553804f2b595ee3b1fe9f35c18a00454", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "fc99198a675245578d79f22a3450e4ef5a9dcee607b75c4334736ebd9bb02fb1", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "32291b829b4a48c49de3707f1f4b24d2f60a5abee0b6f9da4fa74fc4992b50c3", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "735b5668bb4a19c0ef5a4ac6f56156aaf70ecc8a17f93db91a9b1c0621ae9ee5", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "49c28681340981781dae630a4916cc30553804f2b595ee3b1fe9f35c18a00454", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8b40da413e981cf2f38c21cd93c53d24f049d7abe8a7c67610d903636fa15bc0", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "206627d9a9e1154be87ed2e5050b881a51027da52f93d47c5f6bdc2b0161b99b", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "f4704fba0adbb980b311833ab63bf9b00f9200b660d73dec275ae5e97886f9a8", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "b96e1730ab3510aa20ae27458b563e5f0fa32bba1b39ac40a7bc08c4f685d0eb", -"T2B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8b40da413e981cf2f38c21cd93c53d24f049d7abe8a7c67610d903636fa15bc0", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "308f67efe059017095eb8bb0d76101297e7c76761027a4fad5b3b8af2f6f1717", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "b9204eb93310d5fd0696813a6020adc66ecc1c682452bf624a3a44bce1d90795", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "ec6cd6d81f98ea8ffd79ce9ef5dfcd2187bb1beabd54a0d9a1b0325f05bb3aa0", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "f5d8053c8747c77aee89aada9fae957a7f1a1af80c78106b4a010db2d3903c63", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "2afeec8aba0da63e1ed0c69d6c79a3bbd47804f59b972233212c71c925602d6d", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "13631edc64fa125a0ace65e71a08e8fbf6a2b6eaf1293ab510943d957b63431e", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "48c99481a00d460e98294f8fb418d9956b8e40bc2247bc85cf1fb6183e3d2ba9", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "e5221650e40dc88dfc52d30eaf4b44520afc29608b83e986bcfa246531f0430e", -"T2B1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "ec55c7a21f2fe8e04726dc699a11c34f29ce203a0e0b580749a005ee3394cf2a", -"T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c8be255333c49fc92ad6f9543635a09435c9be8d57152b9c28bec6f1a72635df", -"T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "d9a3acfb6cec3ba5068b75cbdec65853cbacf82bf45d2c4eff0d7d2191fa3dce", -"T2B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "a68d31f7fb79b7b751c053e2f09b50d80b8086b1b705fe7203f38762dd3c02f6", -"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "2e83c5391f2c3e2852b4653a1976a67ba105d2b25ebf285270381332cd1a5bf3", -"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9000e945ef344eb29edf1c1238bfb263f7467d637474a2955e08e4e3a9c671eb", -"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "2e83c5391f2c3e2852b4653a1976a67ba105d2b25ebf285270381332cd1a5bf3", -"T2B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "98f58bb2676c8d245fab40a70e1b01529c36fafd6ad8d764780e47498f7b0e3f", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a6a32245adfc684ee2a95cf22a35406100b4920e81793322d95711dfef9bbcfd", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ebdfe951fbcca236eceda840f2ede42faab476170d56d135b824eb6c38833f4f", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "11d71730656946e534ab006c5748e1604f588a4bfa045723a24f9357d8bd6c02", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "1fa29da0597c1a0ae4ca63f667edd67465697ddbcb005db946e9e790d7fe72fa", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "6c3855c6695490323b5790e2b6716f84b9aca3a8564adee3e26c6ae0fda37ecb", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "e731b582a4ef69f838a25efa56997f38114e68debda464f2d9ad20546d3e5eb0", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "76715c0296e7a479d616ca3a0da0f84aa7b85635218ad36e5cca284325b93376", -"T2B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", -"T2B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "68042cd78a01ece9f3e91a0988e954d9a5a0f9e080ce5a0688f60c31ef6777fc", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "47471a017db9c29dcf3739f620c7447fc6a2f4c2e29d6e2017fa5d98d96959ff", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "8923e8da21474dd751747674a1f5728c1295ab90e9c61c0a4ed83271b8478f0d", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "8923e8da21474dd751747674a1f5728c1295ab90e9c61c0a4ed83271b8478f0d", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "63bb3a24729684da7e9cfcc28b96e880928d24a6a7a3cda9e431c35f778b1d79", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "958e655304c1954c66c8f0f89a0aa282e81edb933b650c11e865ef6c9987aff1", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "4b450b2fcaf83cf16afb0a910c4a179ec42e4dee84f3965b038a0d2c52139f2e", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "63bb3a24729684da7e9cfcc28b96e880928d24a6a7a3cda9e431c35f778b1d79", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "25ff3293edef3ecc71586dfc0442d4967a580c63d5b2283ec0513aa08adb90b3", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "84c448e547e61ed4cc095d22186773a2051bdb54a51d233a4ba002f6d86465af", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", -"T2B1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "740c7734a0ea42378e98400e202cb4fefd56d2340b624df539c1394134d8f0d7", -"T2B1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "201da7b3a1e244f817da173ab2774f4a65199c5134e34f8ce5582b8346bca6a0", -"T2B1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "d8980c1edc3c6de2bb0b7f25402364a9ea0c89e0c7a1c30f09a809ed601f2e7a", -"T2B1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "601c5f80e66cf2b627052c94f03d97e5a82e9a3da6f6948c3387835fe8feef76", -"T2B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ac38703e1b0f7585fdffd86a993031c540117f1695f4d5d445ceb1b8e86c74aa", -"T2B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "d27fa6ff71c983955f6b34e9fcd2196f471938fd62c41caf99d8d06fc5badb2e", -"T2B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "642c5ce0552779659c781140e1f16c48b87a674224660ecff7bb4ab836f9b4f7", -"T2B1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5f85a8450ce4554546d252609fd9acef8854650f446daa214ddc509c94d4c877", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "7a5e099a5a45a69cc7f5db73895b802239e86da3eba642e4358674ba3ce66414", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "cdf2047ac1962e93faab1e3e5f40173a7b816d6a57095eca20f3a44cfb5b939e", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "f1a609b6370c1e048c842cba3c119d698261e6a6e139ad778ec50c8b91761f75", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "1f5219431526b12cede1c2e40ee541f69a47b85302e117be0da2cf6a109beb47", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "986e59dfbb4e136199bf152d11e9206cfd589dbec6e57abdaf0f49a154cc0cce", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e84aa55e6903eb94f47e86221a5088e532d3f8ba6db861879b5e754f950cc59f", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "8b40da413e981cf2f38c21cd93c53d24f049d7abe8a7c67610d903636fa15bc0", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "75da8a98ed15b08b387400be0e6fb6de6c543219e69920889eec9625b96a4549", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "0a13802d1e75dc0d5e214b538aecc5afe86225822e0965a09ca59adb7fe6f033", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "07fe597d023287b21b46c0851312ae3792e31bd4297053744e7da3719146d394", -"T2B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a27a9cb01fd49837bed5e63b60b1d78140468e5f3d403b624dea8f09aaef7aee", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "17b4923be8a3f7c67738ae88bdb5111b67f1fafc55d034b38f73e1da43f18a02", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "8ac0b902bf5a4402c2d8d85507171ba2c68b1c91f683d55675eebf4d1beb8922", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6648ea1328f71a4183d9edcb3a1bc43eb7a617d0d8cdc5c02148c20a71921bf6", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "64689abd15ecbb721181e87a4f68cfbfd603d115afaa7d7308c60de3d9227443", -"T2B1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c6a7658cbacd03ac07df7ac54c9884b4abfbd08beb6cec1dc34c185e289cceb7", -"T2B1_fr_bitcoin-test_verifymessage.py::test_message_grs": "b2bc1d7c2bec6930266e7220bd243cd70d4f69131908c4ce64c974d2c9976176", -"T2B1_fr_bitcoin-test_verifymessage.py::test_message_long": "d143f4e524bbd0a8e554f16852327db914804ac4c1d31aa7fbd14d2975a65e5a", -"T2B1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "5fa2a1d5f1ad7fdad0027d0bda2cc0c9f809c007366c8f63e38c96016cb3efa8", -"T2B1_fr_bitcoin-test_verifymessage.py::test_message_verify": "28fc388eed8ba22f39e1873863d192b786d233983aca6e4dda5a6bb8a97ceaf0", -"T2B1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "9e886b4ccbcda617dd6f13c14fbdbb56f7253e175f7007e9a4a20e200623ac79", -"T2B1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "7767ac9271f984fa81e8caf133c67391bcc62f10bd5b4ac317758778a7f25ec0", -"T2B1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "8532a163e0ef088e287ce7e09ec1512ec2b465d09657c02fccdff067261852cb", -"T2B1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "2b2eb98f97b24cd7038dfa11f7ed96b7b23dab6ae9b31964aed5a38042c84a9b", -"T2B1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "c0c23d080b2fb89a57a2d83e99e9c2c03eb9636a7fc9fa6f30df2eae197d9df7", -"T2B1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "8bdd812c26e30b2e9225b5f9b15ede4a08885cb226e53bffd84ab7c29dc1b77a", -"T2B1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "2252f9d9780c338bbdfdc17c33b7b80f382108c72828a6a2f80b25af271572ae", -"T2B1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "0be6d9fcfca5ce6c6583c2a99cd56eaaff842931c0e4555f119936e00f7a5fda", -"T2B1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "a14adc8ec645ab3173e0c60f6b3e522621c9e4e9ce707f24bd9795879ffc46a5", -"T2B1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "add1c6e33feb84b92eae25b27a804c69927e785c99899accf68a3c35085d98e2", -"T2B1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "31dd6c76e2473cfe88199d3d8f000c053035e33b90635c6d4158645d72687185", -"T2B1_fr_bitcoin-test_zcash.py::test_external_presigned": "1107376b8d9221aa0f441b9ff5beb17f1245df1f8f35207bdead0f8e8eeab4d2", -"T2B1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "95076c73def1559443cff3ccb598bbee03cb2af8b024a59ae4aaa1c517cc9588", -"T2B1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "70181f66ee0af03afd62cbbdd16a5f3edb2b39186f7713aec42fb2037f372999", -"T2B1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "da60bd3d00b5b0c3ea41834ee55e5707639ac375e3ff48c3a0c458ab0ee14ba0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "4d960c8fb25ca7faea888ac18aaccded7ef9cca5bac31f55ec80433827af3228", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9afd57dda298198f84af1f927c2001ac654a9b510b1f3e6394bc9632a6e73358", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "91e57cbcbe0090b502a9a4c6b92bf3d78e7c679a62417cbba4175cb4d18850e4", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fabd30e3c20680bb8afd2fea71db37c87cf08ae7d5b55e5813f89e2767aee7e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "befa69419b5f2c6a1fb0d81838fa0a783c216cd5bfabfa71d6849ec887e5e201", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5517cc37ac1da6f0ffcdeaafc2cf88f9590f8e5de370be8b219535e01c08135b", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "04d50f562f60113c3803ba3c0d99ecb79c3fcea1ec8a1067b9b3ecb54ebb9652", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "f89db0a766f253ab425751742af0ecfa814a3a264f254ed2db86f32b3ff4c37b", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ff0b70b6e69e6b5422e8afee397566cdc92ae583171532fc25b5ff359b2bb4a8", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "414b10b27ef60e4a36f628c325887d86907194283d8251e8458eb438cfa5b729", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "831d74fcce3d0ea82823568b088b81ca90659029decc7e231411e1aa54404f1b", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "11247373b0b43d3a972b04a3981ef3be2a31f775b98ef1af082fe6b6b37ddea6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d8b38404e8446360bae3c74bdf35bdc6e3af5fdbe4b2a0bcefd5640b0d07c2a2", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ed5566fc3941012bf1e0377008646de4ce41055172587365931c71c6933848ee", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "8ef9fcc796a11c9d569af552cf013e00b31c623e4d0f9371bbbe1e0944bd736f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "f302210253d20e8f61d6825c3e0eedebfffb5e968284f31a3ab4a679ec70498b", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "22548aebb8a83b1584aa80bd3b107caf3a3b1facc5a7f97eb937aeddaaaedee3", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "86e849139da4f4848bb48e6ca2ef7c3bf6aad9b57f5d5e28ba50ae07a1a56e8e", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "e83f13963727c04eafc9ff6738f72611511862488d94179f7e00ad4e2d3f8d99", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5aeef4aafd2814106b846ad9a8be3d438b9831fddae6f4d0fae5dfb89ee06d50", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "5399da3145594675c9b700b95dcf25db217ff1da868b4901f7425c91415b571d", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "0361137998c82328b15ac5328e19da1c3dfb1baf648fbe64dbeb6a9814628c24", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "3108aea589454bbe9ad655d770838081e521151b68ee94e2c6b57179a22768b0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "b57a3823df63daa6f16e48e6921c07400038b6f58bee5f03c76dbbf06628535c", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "bc41d3e857b9d49dcf6937015f37af59e45f94d58071de57e6c83398706b2bf9", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b908c24f4806e326b30308531b70a867559ae5c95dec7472d9bcaadae37a7d4f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5b308c10f59bafd4e1aebde0a837aabd49efb790a6df51fe87fbb563c2a9c6ac", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "450cbcc103d725fe9f2a7b126ce1b52c1c8ca82497be8d189dafd85b1f7388c2", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "9061014c02729725262bdf15512764d0b821d828e00ac0d4068a4324237bac09", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "fd5798bb727baf025c3d2fae5ba4f8cda13b24b8c94b717713e5681bc1f5d7c4", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7c93b8c052a8ae17f0dd0222745b8f9658575568d45967db960f69b5d476976a", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ef724f9f59bb56a619928ea07d1dd2a64c2b0080553f1934b1a7afdcaf728a28", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4f9b061285820e0ccfad3c00636576fee92fa7ac88f3ebe12ceb4ee51c3162ef", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3c60baa9caea69387e92169e4b5d51b75c418719383aa82c0d4bf14464b51b35", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "5fd802f7689488b34577429cb6d8c1d099e034dc675d2a10e2f1a450088766e1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "efbe5e3e4ef1cb2de392295d649f3da88801b98621b70a7d0ab224020ea80779", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "d49551188556bd49a853596faaf11ecae2cb253c2610a40225ebaee3329bba1f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "31437cabfe69d7e998e103b993975ba4c980ad1536859c23c1c6254d2d065a8e", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "365f4c7ba0ce27fbe3b42e336b5f7af1edfe1de16b0f2e964d59a406e4140ad5", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "ee9fdd2effefcb92df1ac90a07706282b8f1fdbef3bb006c8c49af730e0db204", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "ac09fb4484c38b164a54664137a278a2f978cfddd5df977ee0d147d385dcb66f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "00e92c80230b40fce9277554206a2685036248a1f15462ad016acd77df805fbe", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9d14745f5b58f3438c24ec3b3cc6ced879f4bd7eed9cecd32c768faba58a48d1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "37598626b1ce9caa0318626a252678bb2683fad0e965cdcd30646cff4d288276", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5b8b526f693f2e16fe900675772980f9e915fd77fe32c4eb92e8304f54215e22", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d17b4176399dd83dedff60ef2bba3a083b7633f7e3863074bcbbf8b47d14b0df", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "e0e37e8e61e5c4dc2a9099fc8dbcd0a63f3128fbe103da76b4b788be0599bce6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "20d68143d4d30f3bfcbcc1814cc3a7cf63e96088df630cfe3d6d1ebcaad17826", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "ffc722eb1b2b24f083be3878af89ee6146d7ed993d6acc4095dc49adf7db77ab", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "43a27a72933fcf9efb9da5fea6755e7198acad1fa6792aadeaae0e87379ae5c3", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "814df293396068bc5453131de5caad606cd3ebf44b138b761ad35a69f2b13b9f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "feadc55fbb695d34ebce91cc13f8824cc8920f08bcb77d4e147b8e55d68c11ac", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3ed15cd47a83c41793204c557e8240015cba1b0d7df4c23559c0f59c97b1f4ec", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "522a40b6564cbf9bbf6049180793ec64d4b65b428a9fbf281bb219c450fd3f83", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "1dbc87a072eb794151c7465cdbec3d9fcd899023ee35c91c33e05435c1486121", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "5dde7071b299cedc37425b9c39e795dd07fc135f0d6efabf1a49f2d3ef2a9766", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "77c1f2df2ff8ef8b4388884816e5e01ccd7be51faa7799e82e18f4cfd1855b58", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "728e801d838291fc2514bd0427645b7b91e321892cb7cda3b857d1160d00bf37", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "1355c59afc0962a6bc1550e230e66239bbebe7cfb5e5563f1b4495c50484827c", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "5ce1ed6a69c65c7276491736a974cd03023dc908667a8f6d3ac310b241ad1633", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "b75828a131f43788a3f5ab9c5ef2cbbe2586a226a0bfa02480c1fe71a6a9049c", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4d3d12674172ccdfdb2419535909184ef53f4b7f77a11d3e349d263a33d2a561", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "b0207d4db8460a8ea695f1d9dd75d175e4fe885336e79cbaf6ad048c0a219da0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "67f3bc469dd8f02772a406ec610e4b2c6d29cb921a4e2f9f38e2c19e83814872", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "6c28a96e663a9fd3d602e4ec3f3bd97955c4478b2e2cc3acb9338abf948e11b9", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "83fff233cb907b10a98dc727ed1ceb20f9c10d0e7e00bbd79df859c07c920a4f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "38391394385823279acd41a2f66190d401c93a85fce34330c5d79d75ced94944", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ebe247b36644b4a7c0bd6fa66a531d2cc96ac0ad719ada0a2030846ad45dc3e0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "3659c94775d6dc949878f3883b5776806e00560d7d57f45b89e9747f848ae7e3", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e7b3061da9e24a7ec753c54e5c9601d41c4929cd67cd6aff68b811cf43ad28cc", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6e5b759ad9061127768f9f7c842193dced1917604b8e785a7dc78deda52fa658", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "9d72d5b2e595306ca8fe645fad63f38ee1ed4811228460ae772caeebf5a0c76a", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "b8a3906c386e2d370abcd72be87f14ed5546bec5426dffa2de0dbc3799184d7e", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2ed4dfeac9e12e918f34ff162aa80fac5500b586ee0039be26c116fcf8b0cc01", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b5a49a5dc4c0c803f37ae1f67cab2ba8fa7a34eac87681a94fd0e7253a51da85", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "908c68dc386bdf7c461a62814a49b979b084fa70c03f56168cb7928bca564e13", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d7b97e01dae0f67213d38112995fe9bceec0dcd59149c230dd4ef474e4378ad0", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "7359d240dbf2c948bf6aad7c8da47faac37da96e4b5f1c732779ec4cf4e3a2e7", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "355bb0d93181fc3f652fc9e22c6b22045e66e2088f278134b50dd6528407dee3", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "45029eeb0767519845e6c496ba8163e941e7b4b2cdf93e7d8a592b1839263fd6", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1cc8bf559fb76b417915aa19b9f865eb00bffbceadfc083bdfc1cbcf951a8c1f", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "894c43b0641ad5bd0b544a4a128b3906779a3acc05684008e71b6c313eb2617d", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "fa90193914c5c4e91fed16d959eb6ddff98b921016d287cea06d6de9f6969218", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e52cd1465934ba6aab8d9b445a3544b2926974685c062e15c7e92e7e8f3f806a", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "d4fb370502d7a578a93fed4bd9fd0539d28a8392db9cc63bd6a6e4704302f004", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "40716d9d67d36916809e39e1ab2db6ae30bd7f6bc45db0855300378f20efac92", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "85bc2d30eb7e8be15ede2d307eff2c73fcfd8b604efb1f3bf3b2dce63cc6f867", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "14d516f1222aafde692f24beefeeaf63cfaee3849e9e9ea3269aec9ef7cdf389", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b8de4f3503e1d4d9ad10b5f202df9c4f3d52503332a28525676e3c6b96c382a1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "272959dad8840175f3371a91aee3d259d46a90467ff5c957f430a19b5c0ba652", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1b1279595b4bb098858164855066a05fc4c6421bef3a5851613a4baaec6094a2", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "696ee5d8f72c02b4d3df8634957a823d2e1565d8b0bf4537baafd5d2e1811a09", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "bd5065d7c60bcbb3ed571988d4dc1175a0b05e1a2cd8639900910b8bd045af07", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "217a273734abd13c44a2ea5a12597c19672eb40a0db4fb7d08ecdf25d76a24ae", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e7f61e1b120e5cd847e9e09d26b8b73fd766d5c46727befa765db6fc359ca506", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "1a4175279f92ca62a8cda374d89056be2bf48be7c6c01ab576ce1743bec653ec", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7f6e7fea771a184d84b5f758bf14e415a171cd0483d6d6da494b810f2b3c00ad", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "87073f9ec4fd9eac1154cadf596174d19cf8719e9d6c33ee01c56d7d78956be1", -"T2B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "d57fe7fe2091046891dfcc553ccf5fbc6036bf28954ad78c5b314b3e0e588859", -"T2B1_fr_cardano-test_derivations.py::test_bad_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_cardano-test_derivations.py::test_ledger_available_always": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1c209832b465087beca17525151f11877628f6ad951a2b1018c75fe03221981b", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "495dc5bbd7729433ebb34c94f02e9e9b58dc47da44eaaab512ba85b147253f06", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "bf758f1ca316d3320b0e946756aa097a18f08fe3851bfac87a490490b5741b8a", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "fb8d23b42d3cd4993f4d560edbbbc611f90a2e7b0846fada438182bccbad3c36", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "9a2afdba4f6fcd55e95b62326a3c20456fabb27a7b766a04c108e0bfe5c4fd07", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "78582b8d980e022736eee1ddf3f4dcf5ed6118cd8dfd924905a47c353dfa3da6", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "b38068d2ecf9407c3b8e8ae8ee2cad11474a68909641f2ff20d920bbd2ce9310", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "4c7d9079afaa79fff40970ede6b900924a4495ba022066db166b45648cd43173", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "073274174b477581f26c3ce4a520979ad3730b7f8e98c3e142cd97b534a00ab7", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "bd8ee71e8acd10d06e4fd60243b35decf6d461fa4a3f6838b28872242ef29d33", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "986acdf3317186bb6c381309c5fe95f90ea077bf31195e16d9fe8df64d2f28bb", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "aab0920405e83e3b78ad0b3a27ce2708a885c76122234b6c2c6d8dce5c46da92", -"T2B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "2298c4289751e1933928cf603a54e0db8ef10d090f75c4a97511aa7d10e8d488", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "708c33c2414a72a00aaf049f9d1691aebcfc13bd5ea5e9ed414cf341d5e7767f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9f645c724245630a63a9f40505bb4a1f634aa47ad3a2c5cbef6021ff3e8440c5", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "de63b72b74963cd35ef63c5cf971e82c893ed65cd5caf50d886f572a2de5f396", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cd6fade271d76080a3ca7b0cc3af812d5408a36893cab08df289a5bd24f405a5", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0d9f55a90637f95eb89ca4ba07d0c2cd0f8bc8d0c25bf5549c4d37e25d509fb6", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3098e0a9503604bcb09e83a476bf01ca98eaaddf2e5afc23438611e98466c9cf", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "23e83f83e51db2a6b95c02e30fd3cb2b04f0861c2b089a8047ddaa361fcbaf3c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "3fb5b9378be7692930193fe64b810efffedd267f8203b3f0b13d0d267c97a75f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "4a59ca765b059ad70c54b3ee3bbdc5993723d1abc2be97c45d20281419dada8c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "de38aaa1ea07db5a708fb2f33eb3194301e31b578500727028b36fff06cd21d1", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9af7b6d2dcae37ed053f724c0f44e426b8a17104fb10210a87cbaee923d3d396", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9097d1619f5db2f523cff608f84369c30fa70689c260678ddcb8c8a972f5ea58", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9097d1619f5db2f523cff608f84369c30fa70689c260678ddcb8c8a972f5ea58", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "70cb0df0a8044964f9663607dabd06c094dc3345310808dbbe8d43744a78bd34", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e3a489cfdb3c2d47683e387391211e066c801203930d90b11e0189b441fa65e6", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f7cf2a82e0a6d11700a8bdea4e28d59a59ca5b1345d82c69e01e7d48b968bb78", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "2b792310bf63728ed9d02f57d3de260c133163d281a0bfe12a3c3412d96122d4", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "d63c10952532cbfac9be8b7de90ce7ef4654fd87b3453b26ffbf5c262e4a91cb", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "f8abdf71502693ba90ae905e1123f16425b92c3c583ecf92b557c0f5fb3e9585", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "cf0e5160a878d9ad9caee23d70ed9c06bebf04be95b43592acdea8e0bc527b2e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "bc59fde26aaa7464239f003b00f22eb7f028f8ec896c1dd2a6b86f05cae6d413", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "e188a0134df3a327c1306630c84877dffd654836c1416739df42d1fe6e3271d5", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "d63c10952532cbfac9be8b7de90ce7ef4654fd87b3453b26ffbf5c262e4a91cb", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "f8abdf71502693ba90ae905e1123f16425b92c3c583ecf92b557c0f5fb3e9585", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "c9d112df0b28f322654732e03ff32c0c34d6eed0e4a4157eb91d79224230cb35", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "692adffb7a41827180251b3199e540c11d4504b3fe75cee9ae9e8820a56a912e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8865ffe50e594810655f6b52e77456c6631c5c5dd138740eafc3f7b009d4f98e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "ed008f28a1603e2fa52d19dd89c6fc491eeeca6ddddf6100059db311c43492d5", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "19568487e21985f72282e5f824367ec0f3ac3da9acd8b6723c8d5b57dd002cc0", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "fd7ef7451fd8df04f34b1e59d6cd04b4ebeec48b4e2c75cfeec835c39f43f211", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9336dd1264c6c75dc726925b1e0633c7050ba699a37afa1c3396c07c6cd93cb6", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f11869a54e5f22b58575533879d7a22f4e5bd62440268a4c724df08d6094660f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "888f3aa3c58713a55e1835e723e6ba69a9f7c1c55a18947ff178d2f5098d6d86", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0504fb74f0dd3df126cac3815cda4b810562821d828a1d537c279bd4cf9b907d", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e6a8d8065f4b22dd984b376653d50766e634d04c1162d448be3cb14c275b5787", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "96ca4d20358c0507bb50b23c1e0b641b57053b9d9a3dd4b50795ae9aa4ad0735", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "986171cae541717edf6697c74847b8a043e91ab44bbe513f981eca087765b597", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "0bcb295d4b3de072a40dc2525231fb0fbe2ec95029d620981b25d75ed88b9f35", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "03c9251821db82ce98a8d008d5b55133b07b8f8859a8ccbb6e1822391214658a", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4c3c0039040214ab600ca56c3e4e52cca9d4e9f16b8f28d3cd90fe2f157a2b74", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "710d29a244d6828e22427eb74cf084bfc3c1ac01eb92d22c2fbd7b5078b67c85", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "6a49129478832969ce1d7edfd2d2a45662a86da3c86d5ae8b80a9a711da41491", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7150f86c7a7743ef80aa77e506badf0c38848a77ed62963db98136a0a8279978", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "58358a17d933f3e11d64b212feb7df1e4f9396f6ea0c980f6212e682b7b2bf5f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "9b122dc0dd1f98ff8cc4d5c3ffb318870d587bb6e700694aabae8edabd4665cf", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "74796d3f289c087ede5749937c3d52ffb68b37906d8eddbde1b82be69d3d55e6", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "97864616a257c0e021cf4091b0b7835a50fb9f4a97608b0196bc30a4e2a82f45", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "41b8e44e39a01d1ef5a507cb8a3e58236a23e6501da28641e7add90f0ddd9680", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e9626116f5cd45f54f3d7fd2149893a8374579693b955a5b6d5962ddc76c3faf", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5801b49a0848ecfbaeb0cbcfec1f72cef497223319fe69a4b33ce9aa4f19442b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "56ccfa40a9d207c386920ccdc6fdd5d9bb688035fd3e62b9c2b0c79d64f7eb46", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "72fa20e879fb05bb7b6830d72dba2ac57f9473fb7588167c7a1afa071d3537fb", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "9bf99bd1f843e132b2ac6cf92c379c5ac62b079a513e54413f01dcd251ffa5e6", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "f2df0a2896975471bc902ee93cee5dad817ab345da586f0430d21f4ef6a28d70", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "55483afb5ea9382407226905f0820f1621fd5e6f93a33159335aee05fd993cad", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "0eef7b292bb56c2cdbc3110a83b19d1d305b14b65f8218d68479ebf1eabeb01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "fdebffd5d6707805c0f53484460b0c5c320f45cd697ca1ad802491287e94c820", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "5778c3d27b71d780eac684f0766710c77f6d2ef033ac5edfcd6d9fd10f656849", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "07906e020c17c07fe80b81257acfde89838b831ac449b3875dcaf4808d82cee2", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "49df6bbfe2a333aa99fc836fdc42520a10bbcf527ab618ddf30b6ef22f40c968", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "86eb89febd533cdedcd1fb9ae8df7774ad941482196c94247636fbc750187055", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b3e99807f7bc5e407518b67156f33409d6a0b97323cbc68de6b061039a008c16", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5006caae3772336e8113e4e80ab29151ce6e2f1d2338e9b2f1dfc9700538caf6", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2a7b896c6c7a1fefc59a5d5fde8cc691605c537e0dcbb11712f3f6a20e0f23bf", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "4f558f035715587b1fb72a9485632b33fbcf429b5869c5b72d8996e99a1472c9", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "8f6e740cfd6049ade118a36c531064f3ea7eb48a4445c47ef4ffdfcac385502d", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0b6d36f11550f0f8b59ccee39600c937fe4b8d47c43684ccabed75580bd543ff", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "60dbdd92aa9d03d231214be4c4445f4fbb18e8d00031d14ebe36905f29432924", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "a6799e0f1d29f5e25036c388c1578f86e178e484753a79ed7c783a963bccd5bf", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "182968481fb25c934a0ceeb39f5725ca42cf2eb7d0e529fc4924aa4bbdb73f4b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "29237f9e1a6f19a9648c58833e1a8b117496e7b766e9b821daf385c39dcc4ea9", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b8365a7c21df14fbcc42fa79aadf8d2c6981bb2ae679c87816ce97c718354293", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "59fae57ca493a6d4c8f365058710ac475d4a02faed1817895d6942b2480075b7", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "6fa7f8c42e5507af7d6c9a4a5b985c95da4b281e9c4313ec5f8c9da8f7a5d053", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8801ce4beb518ad84cc0944ec3cc10497d478c14b2f279c0ad35d9e792cef19a", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "2525f87f414ff825719dad3beed9cbbd20ebff9b8f9284df12ab86294c88c39b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "2525f87f414ff825719dad3beed9cbbd20ebff9b8f9284df12ab86294c88c39b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "deb80a2e72daf3f9383243267c0bfbbe011950fcc5514206802900a146a87fb0", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "efcfdc814c8e642767a7e1282788bd8a6212a6f95f69d1d934fcb2b852f698cb", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d405a91e1a8c47f27d9f8563ed7c96d9f63c0d929990a5f1118c0fc38efc6349", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "2696ba3c2a25e26747f8a3e217d29f402d9dfc94766c7d5dd66f2f44b97145bf", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "63e9794c01d74bc8b37e48cac733b2092d54e5466c756d5c85d9730d12251286", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "9d1c9dc9a84bdf8899ae8cf5578ba880f82bfd4946cd83f338c8338e4aeddc12", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6da6552bb0c3b9bb303bc7a1a0629a62b3ab1d3b66c98ccd9d1215c9e1ac77e3", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8ac877376d04479a0331bcf3f595c8b404cf00e164fcc42b6d1e645954062b6f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6725b3f2bfe809cb28321657d18e8f5e19b094469d2558cc182f9ea778b4abde", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "4e772bbaeedfaf3bb73c4e273d86b7b1cd8348a63982c8e407c7a51abca38157", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "708c33c2414a72a00aaf049f9d1691aebcfc13bd5ea5e9ed414cf341d5e7767f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "23e83f83e51db2a6b95c02e30fd3cb2b04f0861c2b089a8047ddaa361fcbaf3c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8933053e3342b3dfb6da3f377b74dddd506a27c45ce30371b2539fcc5cf634ff", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "0a81390b73dd165496000feaab177dac9e2e68c0a195529f01fb5c18889c0c9d", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cf83e69ace9513e972ced479183b829cbe4dd3f77f8c8362cb2908aa54cfe1b4", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "1c2000976aa6f1c062810064827a28975cb660c408ea63fff3e6653589b3f19f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "85414eafe74f8cff5b2939db8524ab30b32471e4dfc53c0275fafd9a0df733d7", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "32ed75d0d1917f805f7e66fa1f35d2c4ac8bcfae254d46f257658a7c77c6155d", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "c2a035ff7fc73176e927379415f9c9245a6d23dcf887db7471406e9c919a45aa", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "65e12e2781392e5bf162bea51010643f3b9dc166cbd6946297d9fcc0d6877f73", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "65e12e2781392e5bf162bea51010643f3b9dc166cbd6946297d9fcc0d6877f73", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "65e12e2781392e5bf162bea51010643f3b9dc166cbd6946297d9fcc0d6877f73", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "65e12e2781392e5bf162bea51010643f3b9dc166cbd6946297d9fcc0d6877f73", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "85414eafe74f8cff5b2939db8524ab30b32471e4dfc53c0275fafd9a0df733d7", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "ea3ad9b4d5f7c88a63abc54496d6621d0abf4a0eb297f2440b06e5a491982aac", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "82e7c05bef7c1a0a9e1443ae2117727c4aa6c5dd1aff36d51f8ae613b67e6a1d", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "d3249e457e2081845ee8e5c6886e4e9d8bc5f36b0fa87da2be4ed022773178f1", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "7d0aa60a3a6d77480ad0891e35a29a866588d5e26c7559e34464a3cf534c4aee", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8f994375d2d39b845e7e65b6beb4c5ec612744d7af88d2ef834a64242f4b9e66", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "1001244c10b53646132ab241fcec0fc40eae0c119f71b646701d4ef8a24fa7c9", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "9c50e5b04d134fd7032e18761b89de5059fe55e1963fb14700c25bc750ed9831", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "46e5de7e510489ae28c97fb74dda6bf2d8a98e109544ad8f7fb041ddf68f9743", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "59593e20808363c5dc5bde4def7396d6c945deb7a744009c3ca491d81e334fe1", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c81afcd4d9aa13b148dd5d9932eda20afe8864d2a1f4f5c82de27ce95fb3cda8", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1528960f135e5dce6b387588fc5594a1e34da6911b93d80b5ddd062784b585f9", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "506d9b08751b32bc462e15be4d8aa37119a08e6ecb1797107e888e0ab8b603f3", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "990a6d9944e818695bcf00beabc8f40601b80957ff5649f23176681bb732c2b2", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "5ef3a75f6fe9eb26ed70fca66bdb679c7344bcc097914e10e48d41733f17d54f", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "fedc6fbd3c02597d42ef0e0d147230402c34198b382c895ad1b8f770272c47dd", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "a8346cc5a6bb518886160f5bb6055cb168490c7a4582e42f64490cccb8a0cdf0", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "8f8cd77291a42e1e1c5337b4e953d7d44b417f377c97c5e8a23b8af496069435", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "934b26a612529356532b3b2bc682400c99b60adca45600e19fb2512ed5f655e9", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "956936514f745a5aea047e2f351df4329dd9e4e56b76e5d5aac517f916ee06b3", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "f8abdf71502693ba90ae905e1123f16425b92c3c583ecf92b557c0f5fb3e9585", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "c82fcbd3d4d6b02a6e238e4daaf5470bc6dd267e2686ede63c7ca7fd4a3e6ebb", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "8fef06fb8601e986a08c041ebdf7eac2ec613dd69dd40775ba3fb7664843aa5d", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "199e50efdae788798b4a54d94cb12b42f3024371c11568aa6193979acf4acb49", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "615783b5758e8353b75a4745a8c41407ac063748007f602e74a5128f273d1fee", -"T2B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "f92dbaa1f71e28eb096eccb84a0b7c7699c01d2607e5f94377b42fefda70f0e0", -"T2B1_fr_ethereum-test_definitions.py::test_builtin": "76f2ffda8a77516765e1336a71c05dd263e9f7becdd63b76228526aeb34ed3b2", -"T2B1_fr_ethereum-test_definitions.py::test_builtin_token": "dcdab7e0d0206ba6e678e6d6e0951ca0470ab7f5050f192d040590f149a8db64", -"T2B1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "1cdf0e7363eae672598985302bde15c54e82f1df3a4c26c58424d6c1722bee37", -"T2B1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "2965027e18aa1304694947e5aad539d16b96d1f2c62acf23bd1e228ba84684f7", -"T2B1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "b89d8e2bcd9af9dd34af12c66d59acf57381f1b9588921c436c928ca9077dd03", -"T2B1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "b25c7b49ef0c2f5273a77d949def2fdf4a12cdea5e68d256b1db291265a65af6", -"T2B1_fr_ethereum-test_definitions.py::test_external_token": "69099e34e590c49e193ac3eecb1acf68118887cc09eb2f23a1a8e4175e6313a5", -"T2B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ee57b2b7fc3dc5b45b26f78ae2f7b0cb02eefc5427d2bf2989ff06af2b56ba92", -"T2B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "24bcba655d8dfa0d06fa7bdf925eaffa02afa23d340307d6ae4d701bdfe8ea0e", -"T2B1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "08f1800e62763e24d77c8044a06c06f785d261ceb74e44aaf5c6830715242e09", -"T2B1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "eec955a7a9ea5026cc4bda4bb572aec09aed12f0740b1e15b6ad03de7a84b327", -"T2B1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions.py::test_slip44_external": "a231ec44d8f7fdd009bf89c07a24971b552ceb36daa696c0b8f19f0d03e2c322", -"T2B1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_bad_type": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_outdated": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_short_message": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "d5ade8688dd9e665b1d4734a72334c2cb0581ffb814f8f5b71d0fb0bf9b0cbf4", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "a14080c5c5db691eda49c0e0cb8415d5c4903e336c19f6d69298008f6457c452", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "7043e2188619f1fe28df261f92e48a715439c051d155fcdd6247d7cb799e648d", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "14b9c282be3a23a09af504e79346ed1be5febe5be8d72fc562041f8dc9eb8c38", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "44d5a8250e2ca666beebb3a444ca933bac6199332b2e673666f310d0f3906a4a", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "c540aef735807d1fa83b17bddc3f662b8e9ade2082c9ad6b9fb374bcc778c295", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "f94b5318e50d14a4359df5dd8c752a456a0c390e280d04b5676e75438da7f717", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "d2c880bf8d0acc6f457c7faefb60ca0b5dcb1a988f67cce0d9ece40a5adfdf7f", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "2324be07b65b3a6f11fd0eb179e243b15cf32325d19363b32d97af1529d3e5d8", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a8585f6820628e571ba654c560214c4c84b1e8459cb205df8d021d43a414f67b", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a8506be687a9d81483af4f9fabc67488a4972688682475798f760c134639d511", -"T2B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "41a186a146ddd6010cf2b02f071067aee18935718f9972aae75f15c4e74e6941", -"T2B1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "c129bc3628c0726474adb9e54bd43dd0963e478e0541ca20538b3f31739c1176", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "1ead546e87e589c59f7b956072a3f96f80b1050417ecf855fc9b74df9a7e68e1", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c184d2a4841a08220d6b7e9cee25b32e1df476123947a88724ce25347d7a3d2a", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "6c5ade01a15105c6f10451b05fb5baaf9313f08d9e703dc09b9b4ff3ef166e09", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "7509b7f3bd666792311d6c9305bfbf14614c5d06e43bfc05d0e701f6a353b0a8", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "cf4903806c43429dd6ed29e19d9e321094a27ec4b192a9d99db789424ee4c01e", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c184d2a4841a08220d6b7e9cee25b32e1df476123947a88724ce25347d7a3d2a", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c184d2a4841a08220d6b7e9cee25b32e1df476123947a88724ce25347d7a3d2a", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c184d2a4841a08220d6b7e9cee25b32e1df476123947a88724ce25347d7a3d2a", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "7189afcafeace38e746430150fc7594b1f320441720ac6aa5f15961e078cc2f0", -"T2B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "4ec9405bfb1ecc260b385eb6fa2a610042c0e584e47f58368b9ff172bbf07f17", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "b8f6be3715ec7d74b14e2b067c1e9657ab02ce9417610357ac384807203d5e74", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "e4d00c26a9277315464fd8392a43e919c992933bcf08e80e1bd9220e10262150", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "58c357cf078f3448155a85b5b6e9db21e907f11481f6c12f9342274781b1d0a5", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "328ad362afdf727874c79c71dbc7c4dbfff341a221c157328d668293f503afff", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "04edd1585c853771096d7f3d0990e64f2f0e76d34bc7744d733d2410ea5e277d", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "4113e7429346aad974204fb916efe622cf02fa4c7fe827c2fc94c6cfb32c0f72", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1deda3029a0dd475823aaa444cde0e51651524a0460b94da12a6ce69e0275911", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "d8cf757c1684a083ae65d3fdb20783ea284941607ce0a0e4257b47f5f2734a96", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0df4cc8840d76ae3493a8119333b3cf6864256d79f91008d2e613375c44550f2", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "57a5ddd2466b4f13d542a4db8cafe8e39c2ccc37e160cb17a056a9742b0327b0", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "38f994368f16fef24e785533a6eae5595104750bda25e02693924b54467408dd", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "60ea1a4d752c8599ce7b6b188fb37b765f07f6e86bdc849a5bf63fa1cbccf76d", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "26e62625550c80bf73c53991908f4485070ef3a5a377c010e8f3fab356fe1e22", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "8bb29f89ae36802b5f1a3f72dc8715cd00d696ef59e24cfb15b82b2e068cf31c", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "3990739294385e6cbb7788c9a9bc26f9cab1b73b6a7a68a6e74366070d3a05f7", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9840890d191598b71847d8322e21460fec86ba1971f7e9ce3fc8777eaab53d07", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "609b97dcecc8dd28d29c7a8cea8c6bb5dd3a59c5eec22fd07cb1e3105baa8590", -"T2B1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "57a5ddd2466b4f13d542a4db8cafe8e39c2ccc37e160cb17a056a9742b0327b0", -"T2B1_fr_ethereum-test_signtx.py::test_data_streaming": "12095bebba8f418474053cba6828ece5dd5c67999993a58e0e5ba6e90cf8f34f", -"T2B1_fr_ethereum-test_signtx.py::test_sanity_checks": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "dfc10f76c07cefcda9e9529954bb3dcdd688d083127a5d74e0bfb8693ce1c4ae", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7fd3bde10c03d5b814ab211154230c58f18260cd92708a5a1100ae43b519b303", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c8011ee8db5d1ef3676ce1488328697aadbadac05e03c99e3caa3a87ce7567f5", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7fd3bde10c03d5b814ab211154230c58f18260cd92708a5a1100ae43b519b303", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "2af7a0c0cf008db7926240ede75225f4d6ae3cdcd013a7ba0d7c0d4ae0c70c00", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "0889e150f08b6f8ac5305c3b29443cddcdac348ecac10a9f0bba116845936591", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "e91849840818e3beb3b48d75325c7b8b05a24cfe8f36936fba04a36af2743e96", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "9faccb9f59f6b3487b1e93a31ef8dbf512ef1ba7ac158f5adad5fb8702387f94", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "69cf014a6e16497ac12e2865270aa353d82588b365b17728cc7d5ab038a4612f", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "11509e5ffc96dcb765a087303b5ed1a9bc2b11d77d32cb8a5fc318f6205ae16c", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "71cd1de3efd6c9d6aa0ce1d04674a192c04b393d3d2f19b53fd314c04927176c", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "6e22b5d8007d56b47a7bdb72ebb38f4d343791d7da4ee399cc25213e113de7ab", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9b2c88fad6a10221c22a7053ddb4db8fc600aabe13abbb67a3744cfb337205cb", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "8b7f5f448207a7d33e6256702ee3be20554d4a49628e14432308fe40c29bad20", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9b2c88fad6a10221c22a7053ddb4db8fc600aabe13abbb67a3744cfb337205cb", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "0b36eaa4ffa4e98e2e05128376357b868ed6581230cd2d00a65f0939ac6013c7", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b694ba3fd36df8450866d17a933b396aeae890e8c598a5798ed9bdcc5c218779", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "6fdc6c49ec1fbc5b2900ad3906f21052949520c3f6f0cff4952f93a465954a01", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "9faccb9f59f6b3487b1e93a31ef8dbf512ef1ba7ac158f5adad5fb8702387f94", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e710d78ef753aa06ad82fb35149498faa376c16503259d8c896f8245f0b4709c", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "675404d11f81f39fc7fb80e0c3139146f1ad61b865c8c82bbecbb079edd97b4a", -"T2B1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "cded0125dc65cac3aae4e14e1be2a79049d13b41a4b896665a383ba961138124", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "d4a464f652fb63d5173862ad76b744aa8cb569a13290e9d7b72739e9a2314c81", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "61154a1e35fa83cc1f708bcb12dc379a211c285a95fa295cc3bb414d8c5d36fc", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "e26b91ebe863f2700d8e30b2b8d09ad8f7126345df934dc249ac671cb4e9f0eb", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "8274c010621e0516f5f3d36d3cc2962b2bbdb8a8edffd008708364b8e999a71a", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "385ee3fc0f17f3d1402c6668c7d149172880c4bc95b886bdd2a20c687944bf8b", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d3ff987835a0244afbc0f10c8d2ba942edb6377260bfbd71bf8feafdf429f8b3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "76fbd9dcda6617b8497b6f1457f2dac099a0165022d912d24470d5390fc499dc", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "52f046aabcf01ab1b7be293db6ebe615bdd47e7771160ea25d3ed4726fd027d8", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "89391ebe8294be5e2f793c9edb7caf75b3d67124c44a21a12a25f5b3e496f93c", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "8274c010621e0516f5f3d36d3cc2962b2bbdb8a8edffd008708364b8e999a71a", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f155e1dfd39ad9a9d4493823b9de051d00193800d45c767f2ec7f99e92d08896", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "d04fbc673d8d56bce18ae3bc2dda9a12139fbcc8f6a182a770fc2ee4f29b7219", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "3a9aaf70920719eba57e64394fd666c81e7d9e2e36d0e9179c2469b5d033f370", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f2a6218ceaebec8f49e44ac351b3e64b96ad6fa18b18d2d385cbc8e5c36e83ca", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e8034ea5dcb3e1aad116ad6914d4438dc163ed633d7f0336613c5d513d2ded62", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "88ac3123ccd3b66a5f7a18f8941081d256306c468630920e88ed74750c529340", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f155e1dfd39ad9a9d4493823b9de051d00193800d45c767f2ec7f99e92d08896", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "c7bfafcb594e4e09de7054e57aec8ca7e04ba2fa22059deaeaa3ac32e70e2463", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "c7bfafcb594e4e09de7054e57aec8ca7e04ba2fa22059deaeaa3ac32e70e2463", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "3a50e2ddc45443e77064ce2ad2116d24ad36a8b28507043b5b2c9c727149f843", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "5ca603753b660d215e0236fd3ff23fba342d55c8c01f4c67993a40d6089f3d23", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "db11071e6237f85e956461e990d75ed7e4ef902c19855be97a973139a20eb753", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e5ae6eec57f4c3466d13d0a891ad6b53a6ce57cece8fe9cc239f8cbd2f0797a4", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "5a041c003bd3565ad5050f6c612614c96f37bbe3671cd632eaa64b5fdf232b00", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c643140e0cb70747e977dea4b072e9ef2898d427b2f6919d693912a0f8205fc9", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "f6f368291f9c1f93439b935c1a37c32df8b3fb2b4c2e76138fedb53d753b4050", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "08c1911590dbc8285500fa013cc1132adb09bbd1efa2e123298f6df93ad5a653", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "a7a75f4b69a39d0b8586c8abb9a86bba71d0b14b6f6e100f60be689a864c6b7b", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "a5c7ea0a018955f04d444ce487871760cc7d41cd5e56986acfb4db77df8b271e", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "389b0a4f7b86a2d2c357e108f46e9b1557349a2341c0d21b7ea034db1923d21b", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e456afcf2ba3f69128033e53a4cd16e670c28595f99db81b050fefc7a235c1c6", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "75103786a5e2d57be567f33207333f6b4e66892919fcc09dcdf4db147a2b42c8", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "ad356a0bc82c8f13f55c005beb976c2c98c1ce9c58c914fa7420b2580a4b18f4", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "2858a8028bdbc9fe79dd3a31f58da6b9551a252aee6b1c1c4afc0f0d45bb6db1", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "2858a8028bdbc9fe79dd3a31f58da6b9551a252aee6b1c1c4afc0f0d45bb6db1", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "9ba051868e441353bf67235851578a885eb1f2db8ad68fe5f3fe9cb19e34359c", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "9ba051868e441353bf67235851578a885eb1f2db8ad68fe5f3fe9cb19e34359c", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "bc78ce96b59859194ad342ab9f9efc14471725b93c81457a083bf8aa8ce42951", -"T2B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "bc78ce96b59859194ad342ab9f9efc14471725b93c81457a083bf8aa8ce42951", -"T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b88a77fd08f3bb3bff5dc70f960878ed65bdd46dc34f11865bce617e7aaaed28", -"T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "d7b2b7f911d0b1ebcd95275ccd1ecf1e7b8e53080d5fa70c01a8840dc23b1237", -"T2B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "34bd71ca5ca2076fbf971a5a4586046b6cd84f508a21a55cf219a5a36f009d9c", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T2B1_fr_misc-test_msg_signidentity.py::test_sign": "fe2b41028c67bc122057c2f65b3ce28df7b21bf7ac3b6b10b10ca7343a7d4b54", -"T2B1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "855c4fdf540542228ef83b5efedd917757a9e7efbfe1f09ff9c7be1bb4c9d0c2", -"T2B1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "6b467ad2fc747496e47786c5cdccb172613d414bd095c312fddfd7bbfba4d9aa", -"T2B1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "c53ef10c9e43ef312f17fd9914cd8b7e47461f39bb34b5b744025f8c8813b9b4", -"T2B1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "60d8dcd86b3d6933b11cefcd57b61cb454a9eeccd73b968e5c76ac90eb098104", -"T2B1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "f3d05bf21c668bef2e2a13cc0953fd4bf7d4bc0439149097e44be0074341865d", -"T2B1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "54f755908561147b4d85a4c1d823c132fd1a30bdfa7403f581fe27eb4930dc04", -"T2B1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "6f16605547fc2d4b61a5475c7627bee09523539f2fa6a9d7f3a93ee79885f59e", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d235221e6f98862c7374b04f1a15e56fe82095fe1bd47fde46bb152e24400ab8", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "fd1448134f4aa2ffe282d0bfe36aadbd68c5b6e62cbdd471912417272b64ccb3", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "785795fc4510a099a4cb3e5b4e77e2ce12556b562662184d1a17351edb789c54", -"T2B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "5abe0e4f89ec1f51a00c9f79968b14faf5fd8547e8e00947a51c3a91df3dfec9", -"T2B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fba5a250a20d28d65bc87806922e4cf05e4233bd3f197508c861b2b2aa3526f1", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2fb44ed4e343855cc22c1b442cf76537b50403fb589bcc6295d4beec4f8e1114", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "aa9dc4c9cfe54afaed6cbc26bd7ab5a581bf4ab7eab106623e1d99057b164936", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4488460ff030d1526a95abcf0edbfc1b438f51ec54d737140760a03f25ba960e", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e3161276dde6c72e9d94ef376ff494a27eeb26b310f62afb088f820b3f677f1d", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3cb35542ab6c61844abc3d45adb8e445147f907eb436f28d91b2c18e7aafb7da", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b87be9ca092bbf6b30836b35fdccfb1defbf339078a3e45f16565416b2e4659c", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3cb35542ab6c61844abc3d45adb8e445147f907eb436f28d91b2c18e7aafb7da", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b87be9ca092bbf6b30836b35fdccfb1defbf339078a3e45f16565416b2e4659c", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "25e220570c703d66e40dd48e73393ae1012cb4c10aecbc1e85e1b786dc10d163", -"T2B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "1dfc877b17e4d6c38f695aad714056a468af0014f63c1a1a85a959be92873fc6", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "43cc7aebc4571980a454880235f448f4c4d6a03ee57b4fb23bea006541bf2b50", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "ad2d869ece8d5df4da38321fd90105b571e4a9b04f2985c2b5722cc78c768b95", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "95d6ebdd3cf99ee2a4826b9eaaae1cad6496c628123278146ce6de839ceb6391", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e8065e252cf2b9b2927068fc2838bedfb6c41d765b6c544cdc56b6832dbd38b0", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cba3c45c899c9022b7d70bf1756cf643d50f86407107b535c0f055342495b1c6", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f5d4a08383e9bfb909a4449d368d047608a24839ff24afc4117210aa125d51ab", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a75a56586931aff16c23f0fd3434ace334dce68bc96233337209c6ae0acc0d67", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "34db00ab469704c8edd3167bb826548c2c4c2456bef2c90f202c31fe743196fd", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "51fe3d66fbeae88cb9f6b88f6b90667d8fbd18bda4af1009f09eb17c0b7a0ab4", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "24fb0084ed4c9c1885ee1d9e2cd45c37494778e369f2b6a8880c5568b6016a5b", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "8edd602f1b61f90416828d95bd50cb09e54dccbc0806cf1073c4d7497f822b0e", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5e6643ec4ead801545417fcfd04953cb208445c2cd044da7fd0b150a36e457ed", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4651003fe1263dcfce13335e1e77e528ed88a9c9b1fa54216104395b8b8d9111", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6277f247a770d3b1f7a4bc38b9b28924bc0b58d422e8a94f76d0fc7db59ff733", -"T2B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f89093e9ec8dbdce95073e327a7edc9ef3220fb91585e08a22fc6bb383f09305", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fcbab715f3b873208282820a92d802b9e602d75022bf758df594b4ffb56aeb98", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "822d871cfc9a724780e4f1fb3dc71b5b540919e2661cd4ea20609f56e025d87e", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2feb0001ea7e4cf39ba8b3107a29b57cf1500d6a97a7d00e4283bce5e53d43a0", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a928ee1919f253147a75030ed0cb52557bfcce59f417d37782fc2f0d7bec46c7", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6f66d1013bf293e0b1d91fef4790622fc7f45c8fec228904d8bdef36adb2afce", -"T2B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d9bf103951d06a8c4be1ce6de417b42ef91850ff34ec6fe5e22dcdc3203fdd47", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3a29d01a969e8c7110ebb4ddb147435221d9d2821a1908d4d2a3fc079c90a029", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6593a8c0283de0d2c9947a35ee356d1770a48e19857cca06b70bf8bf1b0e220f", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "86fe0dfd373e5e7f0f0bdef6ca7a31bc365083847f8c0e0ee43cda55e4239d38", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "7f8ffc9101bf19997c9fb773ef95ab7ff40e710b0feb1ddda9ce177e5705ae64", -"T2B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "86f99abd1ed1abf04e04d12683bb143690255e235cb904ad33c5bd4e1b76fe6a", -"T2B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d5ef9c3dc71dd4b2f847c1615c32788fc8d3e948bf53fdbb785facec8b107eb0", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ed34bd9e171947035b322b9ead6bc1ca5abb1b2c4b3dd18bc7339c3e17734f10", -"T2B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "56d2ea322e3cc8dfcb33225b93424fdd576b073b82c5f84006ad180177c40065", -"T2B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2afaffb93d73a2c9559f3976ececb28818ffe7b4131d297134a5c353b93b2f22", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "7edd1ceceba03aa2b5c332644b01cb5c30e159b8135e821d1f577504c4318f32", -"T2B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8b2603842a35f783837068e7c9432980955ddfb6e4d4fff245fc491c67bae6b5", -"T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "851bee61c1b9d2d3417144b6d0504f0ae48409a1e01da5498d6cc1c4a5fb9e0a", -"T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "47bc3fb72c06124191ef7e9586df146a892f87046107218384d08b06baceb34e", -"T2B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3256148778d8e34a180b5ca01b0bb41ff5cf573055a8b4fea6a8f42aa084b5b3", -"T2B1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "b6de271273e27aca080cd584393261f0ac7db700cabcbf25b28e815e2458c4f9", -"T2B1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "6fa5e7dbe8adb9e5bb89870b9dfbcabb9d8e4646b10250643f1cf38bfee4fee3", -"T2B1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "dff804b3a83122ee113c995502f97618218421d979fbd4f48214ba7ab7ae6075", -"T2B1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "4870d932c72f9a9ea8d1319cff056cb0d2f7f066b682fbc0725263daa134594f", -"T2B1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "9210dbc1a4e62c883dd1f619a719ac7448efa44db9f615d39be7fabcadd61e13", -"T2B1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "45b1f01a1f1260a546014b06d8102fffe3dfe17d6934306b9eb07b7ad796b12d", -"T2B1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "30c8738fc927cdd01d45e1b16d48d85030de4dd06c5fd1332baa3b46b42ed582", -"T2B1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "3a7a82917e448cd7a999d7252d09fa8e7981dc2583e6c4a15b4c56621928617c", -"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "f108b11687ed6315c03799cfd93bd844a4f14e1d06eedb0fd143a51913c15508", -"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "e6dd7d6061671dc77b5040c3709c935f4d8c83d7d2760eea399cfea56569e192", -"T2B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "0b9198270cd62ce57ab58f6c82120084c6b6ddffa637c45c92536486ee2edc41", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "b246b23315405a12c6463ed64e74395dc3e7fb8c9e06256317b7631990b0c3cb", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4f107e44754b1535e0b64648acd704cfc71c29ad2015a465389ddd6d4848eb75", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "0e7975c4feab17d0bc079c34eade264b104df0f3b6d8a8e6ae01099fbe4d1b38", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "681e45dc1edf44e5ff95140898dc53c22e1d650bae635dbdefbbd73b1274a7d2", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "1bd421ff870153fc02b05c297e6b0215c28ff8f1007fb76060dbcaa1f393b656", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "eac00a8e4685388e1ee703960d59c4761c923eed7e8b5845dd87313aee967457", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "0aaad8f964518d24360983a6816d45f208af2adc3cd94c17456d23ead8d4bd7e", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "7fe040a8db4aefce94a2e8a4bc26af997a9be379082d47826b6b2e81f6956b63", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "209971cdc628d9da936df12dc2624a21a80d6a69596e2ec615fcae3a9303668f", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "646800aaac9e2523b6f70a9921ebf937531234df3fb59e510a95018cba88e33d", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "761871c4b0745c933241bd192f611753ecd1de373bf03a92bd8a2da65850ebaf", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "3708262e5cbe8f6bce768d93746c7da051273b91001766836f34d09fdb635801", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c342887bb7ed15a5cadb17be66caf0abed851719962295651b0a3543cb98fe8c", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "2aa1bfda82008d5948926199e9f55dcf5d08bf290c8eab74b2a824b4c9261784", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "e3d0f37646d265d28b078ac39f994d027cb48c5aebb4026254eb4697cd5a7b43", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b7d6568befe22bae8c232df8ca064e62021a90902fb11cfd9c9395330768000e", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "6772fa257599c61a1d0e6527d6db0a6da0f6f24f24c1d1b0f6c942548198cb59", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "504c9db6f8eb928e92c33b4261ca6cb4d07e33c7c5eb0b0acf153535f2518f59", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "808af8f0079678431825573b29255b0c1572ab1784e81ae5968606c1383c6efb", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "8d7da5bcddfbd53d04da13d5c34bf7e1837761a37596f41a8e28f79453dc5be7", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "ae8b4050cff6d2f503a966e7ae5097ba8c82831de62ed66f747873d20f20b72f", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8bf58a89c9f2af059a71cffaee24d77e1cbf59d5aaec5ec00b86adb64b62e8c3", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c0d933de22a941689439a0913aaad0c090a433ce2c824072d72c97841c49c2f1", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "7650f45d59308e18cc8bfa90c95a4d41a7fabaef7eb43935215233c23e4a02b8", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "c843fdaa220aee37503f5296e2ad7c3c4667f036d92fd130cf96cb4ea7cd1b33", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "64d64df94157b5ffdf9acedc95bc23c61864350cd3eaaf23c2c04cbd0aaad4a7", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "5fa1f15aeb0e2426b9a835b908bfbb9c0b8ff7b7e4fc6a9cbe56ae6ed9b3798b", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c7316c767254e9a7c7d4ca6a58ed29a7690dc2e42454f9b6d4866521847caa08", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "1ffacd4ba540b682b214bb54646f0c8b5a7be3f18cb69ac5c05b5ac6e2599279", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e590a0ddeeddbf2c18ee72feffcedd5984e19f715217d688a5165f00d8c9184f", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "58aa89bce02d5d3d474f8e1936b4bddeef23df697b39a00006c17b617eb103ef", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "aca9d935339878794d7abf0faca315f6a39be48f28e2b256d6ad0a717faeb129", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "82199ee4a33201396d798becdc8fcf35de3796613564ae2afd17c554b67d6582", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8fcab8568868a8332b5745b79031987b9b94f8bbc7459f4383acd05816a2a669", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "8fcab8568868a8332b5745b79031987b9b94f8bbc7459f4383acd05816a2a669", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "e5c1a5357f23476389c801b06bcdb24d819ecfa00adfba6e1617114e2bb3a54b", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "59cb76d45156a5331c3ef0d69ea1512fcba89c3b682454671a5a41c9a3fc97e8", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "46f733c50997d9c5f42b299d469d136800f14e65d9c2f82efcd2b48451398f9a", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "be2f112d28e8b8d99be5b1e307d22ab3b9a6e722cdd5e6ecce9b4f3cf2a36ebb", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "8aa97cb4c0d516b84f804ca62aec6f970117ef8d8e9b2706dc12b1a5ec27f2f5", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "09728cf18a89ea056c894e3ea163a1f049ce65cdd33f8b349e6f2a50abfaa664", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "764d0b7fda43c8db1161ca69b60ad057734409f4047c8eb3cc0d29c6a9d13b6e", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "09543c9057084d180471d006700cb13fe7cf6d47cefdea3fcb50e9d0f7ff283b", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ae2462a12ef545a85411330de5acd018095b7189aae8d6b7657a88e23e4b163a", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7fb79dd4ba8c923f0ab5f45e9d16a94393136b054af9a34106271731aef417db", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7b3d8ada93605f7f9e855ac44bf6fff261bdacbf5332be3e68cbc403eb9dea0f", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "742e31a89597ae911bd7a87043a2c3c5301648fbaa7c4e5cf138d92ab4f72766", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a3d6a9613d54931e25dff68ce0b72ffc6583be9b1d8b484df0f447eb8fb3c922", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a12b4a0866d5f7f8143664dc3654c706405e82968da08409008494934b9089ea", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "ab8ee73689c822a6d4da4e58e4b1e258bcd42320577dd9314ca77c94a588cda3", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "3023610ef6c37c6b4bf009c0a498cceb6311df046d3a7a80bf13cc10c3d84293", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "3a7f018406ac9f4388da611d11f443796fa46bff3f77af91d9a8232e13e71ed3", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "4b76dd4e16de0806f357e33245aa05c39cd4b4005e4633f0bb2a782e397bfe06", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "80a74ac678aca187b727b9dc7079600965258dd924b95fef63f504a4802b602b", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "5cf1ba216909632d89d39748bb5c8b1c1ec2268487e0901f116d4a82454441b4", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "82252d39ba5872ea309a1f3a564149f6e4e54a609a8fd7f020070c4309ef9d3f", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0cc21f781433b4c40da93e686d9b1ab1e261dd8f4577e066206d91fdecd189e9", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "0023ed2d823cf1c9b2c03961bc659716bc8c96c4687f5c2e832cbdb0bf6f1f9a", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4d2b6b5ef20105bc65b8ae50cc9fdc51323fd0a103717fb9822afe6a1ed07490", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "56facf2f1cdf7360595036566b816aa3d8bda7672894c835665a4780164fb36e", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "d39eb6f629be29287b8d6d35bbc4283642c5f4dcd49ad47f64b6063399c87ec7", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "e0ef53b54ea38d348fdd2e2dcaef389d211de0a778a55ba7115dae0df3ca127c", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "aca8a0a33893727a4bfd9e62975f50950372093a8d71aaa12d1b18074c7445cb", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f7c8b98b105f99edace2bb08f5391c45e428b5e31c2ff30a7db2637e26c0cf9e", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "ba88d0788debbf9f084360ef3b373bd22602c17deb1f6773f2bf29194aa57fcd", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "5a9e1aeadedd3d069d8695cff987b388f827c06764d0fd2126637cba54aa27c8", -"T2B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "c59c9d49a2e96b10eb7947b804bece89c9b624cd1290be8f1cc6c18d1793bc64", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "cb48c135e3bd586a804859995284e4438822d296035ae3eb93d9c6639e117dd9", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "5b86370cd99be7932b1dea8082d564aa82545e900c2937909aa0b5aafc910cc9", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "b192ffbde6d672c31e7edd37073e99c642a73b81e27d07294173d3f67e30a1ce", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "f0b794e933562c5e239c400435e872fc04ed0d971527bb3fa31006dab6e14c13", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ffb45a3c507570178b2b4ad87b33879aacb065ab810b3546ae510c8dc623c89e", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "c8b088de841fe1592fc5d3d75a55434f5ea9e7840bfa639abf112b940ec23856", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "2b069523e0fa9c803a754dd69b1569de9455fe2eb3c31e3ee1a700942945e86f", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "92d25844e2b90b23924d263353b5eb0640412d6eddc4b1ef87df7b65792a8b9e", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "33429fcc5ec0ce841e7464dcf1c528349db8fffa7bc0acf790e7139f639af9fa", -"T2B1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "ff1a2001d01b15d10763fbcec64d4875ccbf401a9e4cfe2ed689dedc8f370fba", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5070e65d6f7c6fadfa55f70bb770740d7973c5de1411efff6048e5aaae9ba813", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "43b10c3d656bea27ab55b8c27b9740bb8dbe28432a7955cc4c80b00e8f327fcc", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "e55c78d83fbc9286c3081be5083ca660b3500c73a1e347a86275c98a55c34f59", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "e1f494654bf18e0a445efe8c37a45f703f34db5dd14805e95b9ed0f52ab38bd7", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "2da2ca7df3b9abb1f75e03993dfe605001d388960d391abdb3dcca63f04c2741", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "cedb0a7927e2cf5904abe8c7066d2f0871abbf41b6709618e5d6fdddaa09b0a4", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "96ba2323aa49320d6d94fe2a19478f96510b413b5181ee7b13b626ad394d44fa", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "e6705676dde88924610553fb2b71cf978cadacfc388914459c4405e3303c4d02", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6f3b9432dcf164cdef0a42092be7099c769a79b102f7c479971859fa02d2dc00", -"T2B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "43a2df84cdb8fe6ee552dfb8685859fd1796fff96e89159c96ced1b4f7a1841a", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "81cb664437f9f48fd7a3c44178630beed86a8b55bc7c524fb6f9974b4f4d87a3", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8a33a2ab5a8ae77a1ff6ebd52ee4682842e8850a8acd34537df4d3bd489d00ab", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "113c22dd4bf53acaefc4c7f54027a98c3d471306ce51175782c9d7e782a54bd3", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "598babdc99028fbf1970b9329b95eed9758fe21d98908958f880ad3b25417a8f", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "84097e9eaf23aa6431f416a8f66c1860baa413e2a74c64c70ded9950de79be51", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3b1661a9bc8288bae527ef8b303b0f88c23f9aad2c6c8870e5c5fad2a42895f6", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "3b477db2d3b578b15841e41ce934e245876df1427114c5dbb125346e6b2345b9", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "83312f14fa749638a193aa54c2a473bb7815edca58c7e5889f3f84b6e09aca83", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "68844b4f02c25bce011ae056ba27f34e0c6099be2a230878c1cf2f0bb30c4b85", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "5ed46cbd98d8d67006bb495a8c238956d6400b0a54347bb53a6efc60e74eebca", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "476b193e50e3424546c728247a887413e3195f22da3ec2603f4fbc18cae92452", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "4f998bedbb71d3838a5f59adf12c098bbddd519981341189693f20c6640fdf22", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "66c1a6defab41f5516611f7fe9e16faa3486f4a93557ee87eb5025c485df64d4", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "95ad07c968088414f1e235e55e193ee286ef1f69611a2ee4eea8b8e6e06621d0", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "d1fbfa0a8c7c0869b4971852d9b25a954091fac7337c7fbbd5dabf1fe1bf44bc", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "922dc44bb164046057bd739adf900ce9c4969a256a5f1c4b13ee0cabb2fdbb4e", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "f69424f0d8c737481fb5d27776c9fb61ec26480d5bc1f85d5954f9222b1ab3e7", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "044c3796d679fe0ad75a11abf1d3fe6675202993483dea7f90fffdcaf850f1e0", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ae5f6623e3ae10f2bed6e34a2b94ec812c0b93ad98456d319b5c368a1185f663", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "e466fed20e27f4c97775901ae78fe590378d5eb13223aa7a292b08dbc9fc1b74", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "029de7294f2f1b0cda653e75191d9202c3b52f60bb843f8ef6e524678eece8b8", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "d05d89923d4857bbc72d078cd05facf7c66208095019f384624903342492646d", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "73edaf855d9440f0b23ef2c0e1ea7da3ea0d2006866fd49b3c24287dc0a7ce88", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "90774a638a019371bcd844d5e7020cfdb4084c82c0e875c4c5e5db0a34277d84", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "f205dc8603e1ac432855d63c80df535968c6a94f1b5b9b7992a82a5f20752635", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "2f9b4d8de23473e569dfae087f5d7c8bdf55107739c4110b8c88788d86d4d54e", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "19862ca6fcded3748b3297f458a0c6717032af79adf5d6207d74885fc94c161b", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "17b33460779f9af5714ef576949b068c1c9f56e8affdf0c2f42135b10cdc262f", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "38cd688968416eeee9a39c8549311ba004891dfd1643cce126d930f4a5619b9e", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "f69424f0d8c737481fb5d27776c9fb61ec26480d5bc1f85d5954f9222b1ab3e7", -"T2B1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "04608b3243cd4f13ba9d33e6d7b69f0c4f56a032d92a419a72eb6d70f81826d5", -"T2B1_fr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", -"T2B1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", -"T2B1_fr_test_authenticate_device.py::test_authenticate_device[]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", -"T2B1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay": "bb9a8dc3d776a626180104de0dfa3efa55ff05d04bc3b51eb9e844759d805b3a", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "7e54818d0b7a102ff18b4fac6aadf90294898eaa67935bed8f65c27458d1e653", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d18490c6a6518fd0772fe4b0b08a854874327a05d7d7a0b20acd1339b681de3a", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a444799a88960058f5191a5a217b718debb6b4d1f9046a7e0c5080b5750b3971", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "242829e1d71100eda3d108ab26f66329ed0e550f68cbc241d93b331547cc391a", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4d0ead355410f2b5763a88545e404477244674b85838db38ab6bcd9b8fa3fa36", -"T2B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "50e9bf77b0f9599fd104ac174a5ecfbea2b713fad2031174444bea64af119a08", -"T2B1_fr_test_autolock.py::test_autolock_cancels_ui": "d3ed0bf61fba9f568a8c781956e7a45f4bc36ca1894a7cea1f9caa352eceb848", -"T2B1_fr_test_autolock.py::test_autolock_default_value": "d9aafcbf4105319b250681abcb77518290618aff2408548c1f55ce8c2ce313de", -"T2B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "6cf1dedad72ec92de8146e9538018bd9d318616c0c71157bde55d12ba62eb06d", -"T2B1_fr_test_autolock.py::test_autolock_ignores_initialize": "6cf1dedad72ec92de8146e9538018bd9d318616c0c71157bde55d12ba62eb06d", -"T2B1_fr_test_basic.py::test_capabilities": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_basic.py::test_device_id_different": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", -"T2B1_fr_test_basic.py::test_device_id_same": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_basic.py::test_features": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_basic.py::test_ping": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_busy_state.py::test_busy_expiry": "3c4520b8aadefa089195d16d37ebc6f834963a65fa4df8eeef3fb981d7c78615", -"T2B1_fr_test_busy_state.py::test_busy_state": "660bef3e1aec5e826b8a7dda41430828149d48ab79e4010dba38fff39249df42", -"T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", -"T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", -"T2B1_fr_test_cancel.py::test_cancel_on_paginated": "60d68603b1bbdd9b041ceafde30fd6444d265b375dfeaf215212e0c9701d1a17", -"T2B1_fr_test_debuglink.py::test_softlock_instability": "815d955a6016fc8e175b419b4246f66a2d89aa98fafa104bc76b493106b8a543", -"T2B1_fr_test_firmware_hash.py::test_firmware_hash_emu": "29f74094a536aee7cafbc2e63fb29084607787ab9351a9b74ab74b20a34c60cf", -"T2B1_fr_test_firmware_hash.py::test_firmware_hash_hw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_language.py::test_error_invalid_data_hash": "c3c594c2d963c7562250b5cae43e6933a6c67c8b7aa7063e58de94e56fdad446", -"T2B1_fr_test_language.py::test_error_invalid_data_length": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", -"T2B1_fr_test_language.py::test_error_invalid_header_magic": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", -"T2B1_fr_test_language.py::test_error_invalid_signature": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", -"T2B1_fr_test_language.py::test_error_too_long": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", -"T2B1_fr_test_language.py::test_error_version_mismatch": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", -"T2B1_fr_test_language.py::test_full_language_change[cs]": "42b092ceaf24b5f24004c9abfcf3536a297b0ebefc94767a6537c874856ff7f5", -"T2B1_fr_test_language.py::test_full_language_change[de]": "d51e49abee6755b254d37555830b6bebfbca95f549a31206efe11e2d08b8ef2a", -"T2B1_fr_test_language.py::test_full_language_change[en]": "5c8ccc0eb1be8baebf3d2cd0a60b022728933ac4180f27a0caa73a5b9fb0f642", -"T2B1_fr_test_language.py::test_full_language_change[es]": "e27434b09eef1556fe6fa0b050fb2b43eed6b4f37d622b7831a5fcbcde3f72bd", -"T2B1_fr_test_language.py::test_full_language_change[fr]": "7fae72778d7111b0d7746ce3fdfdae724415f651b2c3e195da55dc3cf6e24f8e", -"T2B1_fr_test_language.py::test_full_language_change[it]": "63b04dbb814f36ba7255debf464a6038d6772575ac027d670b3389848cad20e8", -"T2B1_fr_test_language.py::test_full_language_change[pt]": "826d588d512a1a96846274c4d9139e9d2aed769d58117fd40ae8c05558f93dd3", -"T2B1_fr_test_language.py::test_full_language_change[tr]": "3a286516bad290973bf33c6caf35072342d98d33f6357e924befaece9410ee33", -"T2B1_fr_test_language.py::test_header_trailing_data": "30a19ba738d7bd2b5309351740a5102da462e73c6ec923a0ae92dc385c1c6f9e", -"T2B1_fr_test_language.py::test_language_is_removed_after_wipe": "2e4b88e512c805e6a90bbfc53ea207bfef270849ed05b43c4d4c4350634a3f5b", -"T2B1_fr_test_language.py::test_reject_update": "4c1d851a4f7ca6075e71d096a4b124b31f8ff280d609cc2495ded9750f057b51", -"T2B1_fr_test_language.py::test_silent_first_install[False-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", -"T2B1_fr_test_language.py::test_silent_first_install[None-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", -"T2B1_fr_test_language.py::test_silent_first_install[True-True]": "5c95cd9057626bd7c78132fecb0febf365d21430fd51fcfc5e788bd22f6398bb", -"T2B1_fr_test_language.py::test_switch_from_english[None]": "d626b26865aad63aef9745b0ba6bc06d4a84724fb5acc51d06446053fa4c2622", -"T2B1_fr_test_language.py::test_switch_from_english[True]": "d626b26865aad63aef9745b0ba6bc06d4a84724fb5acc51d06446053fa4c2622", -"T2B1_fr_test_language.py::test_switch_from_english_not_silent": "2d59eedb25da2468512d9576ef7d7f4528804d4fb8bb1921d4ee8d4d20d91196", -"T2B1_fr_test_language.py::test_switch_language": "d64c176bfb4ea6ddbb57c7b609ac0983b335ae0ce503c653480d379caf71976a", -"T2B1_fr_test_language.py::test_translations_renders_on_screen": "c96510d7b9812933713c70d22e2a549f12e888a28d8a2624a649d73bf3871d12", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "744a698ae5fc7d53600554d68eab2a3b3a6d3ed7f8a3dafd8a2382e5c741fad1", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "665f9d0cc8068b51109edcbb29410949ae35796b318da427e2226cd74dedddd9", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "7ea6d0c55fa400dd8b6181146e6c4ffe0605959487243e8ae3a2b71aedc92086", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings": "6b2adf6c46c866ace9dc4c30ad1fb68b45e24e72feb8ee2037ddb61d0593dbc5", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "5712955f435db11157fcb9396abcaf37949900cce9487089a6c64cd2d69fa1f8", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c2af499645a7ee44dcc4ddbd9e9df812493082162739ec035b406dbbc29dfc3e", -"T2B1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "d2bf23bd8a4910a28f90606740038748d8859865a90054241601a60eae74eee4", -"T2B1_fr_test_msg_applysettings.py::test_experimental_features": "f255b1a5c4f6e72b64a1b651cfcc47803668092e4c2a3da9f37f2796b515d675", -"T2B1_fr_test_msg_applysettings.py::test_label_too_long": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_msg_applysettings.py::test_safety_checks": "6cc280764a02e46da93f042f4b6b2fd1ee4464a460d75f7c0fae38759728e4f4", -"T2B1_fr_test_msg_backup_device.py::test_backup_bip39": "a9085f202d8b9a89da15ae653bb1fbe83f7a3ccebd474ddc7bda7ab88e275efe", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "5bcb07f9372ace99cdcb4708a3344244654015792b87c81685afd7c929ff6e8a", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a82e3853b5e8aae09551038d3c44bcf6dd432100197270e1c5e99fd2032df94f", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "25b45a916474aa4e6db170ea873b829260351c41126ae529da6096ba61652539", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "31fc1d149fa01408ab23339d3a984d2efcdfed072ed9994d9621ad71e1e4801a", -"T2B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "cc19a3138911543f7dbb65762dbd5217f48bc35ab9559505f4991461e8cef1c1", -"T2B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", -"T2B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a65fedb9eebf9b75fc75df51391b2fcea739a657a7a949aadae3b335600ebf90", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6e6361deaa470d441e69a61a294a203e9aea3cf114b8919b5aef9b1ee66fb90a", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5364e98bc3e6941907557b4d563bd51b1dea6c6c2b789acd75cf81ea3b1f2b44", -"T2B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4d1b837fd72eafa139ec55bbe00a2bb01e0fc3ac21de59cfef59fd85c0483c9f", -"T2B1_fr_test_msg_changepin_t2.py::test_change_failed": "25c462a2a5676739d2614778488cc07b97fe096bf1ee3fb51441af785e6645d5", -"T2B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "9ba9ad78002bbe7775abcfb2b08677c985abe05a42090abe184f0a0876f9a5bd", -"T2B1_fr_test_msg_changepin_t2.py::test_change_pin": "e1a4ab43a6e7dd80185affe2cd99cd6afd10f5fb07a3e099dd929f44ab886c22", -"T2B1_fr_test_msg_changepin_t2.py::test_remove_pin": "e3ab26bda9322d0846860b4af634c6f5a4a525e015bb559ae05ff1616226e883", -"T2B1_fr_test_msg_changepin_t2.py::test_set_failed": "c54eef85a1d0dc450a51346dd3d7427dc351f24c0b2350c878cc08b48472476b", -"T2B1_fr_test_msg_changepin_t2.py::test_set_pin": "647efd371506e23f9300b6ff58ac6565597ee2310fb03a2fc5c449966672986f", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_1": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_2": "db00a26e8b4b190e62931e002a4d244cf6a563a838f7de754a8ef33ec73a883f", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", -"T2B1_fr_test_msg_loaddevice.py::test_load_device_utf": "a5fefc356ff9d247dd7bd9f51e6155731eebe27786bac5caf7619cba01e02850", -"T2B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "070f03c81acb86de9d9e2aaa47c9346efe0ea630fdc651e25cbdfc78a9ea7368", -"T2B1_fr_test_msg_wipedevice.py::test_wipe_device": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "66c433745d2114e94429ea4b870520ad489ae80252796a9d8da8792ae0dfa2b3", -"T2B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "66c433745d2114e94429ea4b870520ad489ae80252796a9d8da8792ae0dfa2b3", -"T2B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", -"T2B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", -"T2B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", -"T2B1_fr_test_pin.py::test_correct_pin": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", -"T2B1_fr_test_pin.py::test_exponential_backoff_t2": "cb30648ae851f7bb39079317f3f357248ce77d93831d630d732c55aeb7e66437", -"T2B1_fr_test_pin.py::test_incorrect_pin_t2": "7607e494f4b01cf25938c262848d4cfcf66e16c3e5287d500ca966caa7dc7601", -"T2B1_fr_test_pin.py::test_no_protection": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_protection_levels.py::test_apply_settings": "484b44ce1af3db1706b7d745cb799d59018e53ae15ecc1f3b6d157b20ca8e860", -"T2B1_fr_test_protection_levels.py::test_change_pin_t2": "e26d2c5c0197bdae0045ff36117961fd602bb6e5be5bcdf30d5edb3f255f6a51", -"T2B1_fr_test_protection_levels.py::test_get_address": "0d1ff46a772bf1c941749e1dd2daef82ad098b6b4274866a0ab6962bf1f2991f", -"T2B1_fr_test_protection_levels.py::test_get_entropy": "f47aa25018b17569beffb5796a4aa64b7ef368d38f3658d44714931c1fe1a62c", -"T2B1_fr_test_protection_levels.py::test_get_public_key": "0d1ff46a772bf1c941749e1dd2daef82ad098b6b4274866a0ab6962bf1f2991f", -"T2B1_fr_test_protection_levels.py::test_initialize": "3a6fc53a154e468252200082f6b5e8db920d9f3d585a296a41bfd50586c1856b", -"T2B1_fr_test_protection_levels.py::test_passphrase_cached": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", -"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "1037db9932479129aea1b3b137983ad283448f41f82fd79be96347856b4bb4a9", -"T2B1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "eef6467a37bb7572dd3fa1cf70896878db35bbcf5cac378eb6375da0ca71edad", -"T2B1_fr_test_protection_levels.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", -"T2B1_fr_test_protection_levels.py::test_sign_message": "499aa1ab655334cf36c7d0ca4750e61a01be132bf02919d0a01ab82929727f87", -"T2B1_fr_test_protection_levels.py::test_signtx": "48236fce529361b51583e8e7125ba870da5c6846e93f2ef1e48b21ddaf242504", -"T2B1_fr_test_protection_levels.py::test_unlocked": "7f59e3db07b56dd4ad8f18954d9ff157ca544e1b94b00be1b55aedd5f9805d89", -"T2B1_fr_test_protection_levels.py::test_verify_message_t2": "651a5f37e406cbd5f4751d16a4d430d2a8fd3d3b222f3e27695342ed03dc9182", -"T2B1_fr_test_protection_levels.py::test_wipe_device": "012fe61fb16333d582486d7f30349df6c5f902f50830d9f5995f1dc88e23b124", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup": "2dd056735372c5f1351629daa6731151de9cfc67b38e96f561383fff147e9f7a", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "e813c44112061d58db3150a9333047a76a9948517236235999768b5e8a3683d4", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fc7d74fab127f02de7e3ab97dcae5d7b3670635bc0bf515c0e70a435d3814097", -"T2B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "31096ae6b628c0fe0f35c58c7c01abedf153ae1e6c0051ffb8f32597e0438a1b", -"T2B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_clear_session": "9aca31bd4e8408f98819944f81951eed96dec078fe5ce7d10269f922faf984f9", -"T2B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_derive_cardano_running_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_end_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_end_session_only_current": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session.py::test_session_recycling": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", -"T2B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "edbf8c40bf7ece48bf6727a0492ee6dcb3e91a82932522b99801c1bf4eda57d1", -"T2B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4dd2c8aaed3f9bd357f4b14f98edc1cd809e8a054fa5c1092f9a82b1df7f42f2", -"T2B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "e83fbbade16a5705f5cdaf29e36e2f4a459db58f710a4d31ca46e7e52fbd0c1a", -"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "bdab81235e34c0c7446e170e6c430b8daed201a168518df4c20715d54155a25e", -"T2B1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fffcc2eefbd6456c9784b1689b34b9982c2d8f283441b8355521855e386ad90a", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "9aaa4fb5933520726bfff7af28201859db8b4ecdca4b443528fadd203be19a88", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", -"T2B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "82fd0e2579b699015c83946e7538f6e4f23f98b3ae4608e71e729b5c41202f51", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "1d3f1485834901b1a53a30405f5c1e26667adb56f1cf06cac068807326e87f18", -"T2B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "a433d453d7dae3bb1d3cbf1637e55a0b0ae5bab99d3c6b431fe98b67cf3f1f08", -"T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ba9fe5b13953b72952449179d717b1dc52e6450b934c341fee319247281b663a", -"T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9ad5b6b401a2ce7676b4cba10b6d74abfb4d9887c42cd73cb3487649fbfa3a16", -"T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a530de477c0377f1f44dcbd0f42b3c124362c996a72baacad110224d94b531ed", -"T2B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "5631b4584d945aa3d27c9a6506562cb8e02fdd0650e8afc0b02b3a4e1fd1a212", -"T2B1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "46cc638c163497e2a442e25a62cc0a47bd6e22726beceaa440e392d843240b8b", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "938cee96ea1f98e4877d0b1d2ae5fc531a43fc6a28902a3bbf33c9951c16051b", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "f9f1d7f42c595c7f81376859f22296ff53bcdaac4c9f36176d679f6c3f60f479", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "0ccdfa8922983da156bfb2beb9676dc7677d8c663793128c31816c70184b7d4c", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "088d062356f1d93fd5fc24cbf73b60f582e3b4732ace52cfae4675603efc17fd", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ece5e562fc4f726044dfcd4ce6c4319da9af4839b32fffb1b67e6b34a54151fe", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "fbdb13de4d5903fabc77ae6a73d6564228e10927ac4db6d451801ade2f396f1e", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "160f147dc3baa9d9592093312cc9bb2e473d38201e2cfc514ce6910287381e9b", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5e9737de184d5087ef0e321a265a134a4de01820ea0076f2b9cd15c3819d15f8", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "bc8d1a01ee5fa2a82f617b7535865e68a82ed520dae809cdf9385af272d1e9e2", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "c00282de2bcc07531c9de0f2011ea95b289c3e94a31886dc0ccd4cd86f48783d", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "170ecb812d238b2cde92f4698bcd5c82c64fcd59175585df340f58af676acfff", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8231883f448cdec51e4fdf8761bcfc4961cd43d50c0fec91ac39d3a1086868b5", -"T2B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "6645c79e3f2307c00bc21d2c87712cebaf8f76e1abb4a027575fcd9518bce767", -"T2B1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "13c9c0370118f70696c2fabd90b3094c32b9bae7c0eae64b8cec5c91831b2136", -"T2B1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "961943feaef8e0e3a0179d0519c079f4c4a755ed84123fb33ea2421fc4df8bb9", -"T2B1_fr_zcash-test_sign_tx.py::test_external_presigned": "1107376b8d9221aa0f441b9ff5beb17f1245df1f8f35207bdead0f8e8eeab4d2", -"T2B1_fr_zcash-test_sign_tx.py::test_one_two": "62dcee2f05b98b7e94a27b3f0ebc0cc37d2121918f1b2a64551899b15fbd9122", -"T2B1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", -"T2B1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "dd5672081a3af413d3a0735c90057f10ac9882b7f6d4100188ed639c0d81abd2", -"T2B1_fr_zcash-test_sign_tx.py::test_spend_multisig": "2e05a4239d21315735199ffac8cea895d059b0485151749c06da30227c59b40c", -"T2B1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "58d1eb4736d91116baffe5154f7325385df8df4c28cb6de617156d2d6b595e5b", -"T2B1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "ddde2a66279aa6cf32676a4eb1602cbd93ab757cb3478b6141e6f7c76857cbe5", -"T2B1_fr_zcash-test_sign_tx.py::test_unified_address": "bb62c591f6b5bd553148ef2f9d7d0308a95425d6df2addbbd8af0703ad9eb251", -"T2B1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", -"T2B1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7159345355dca093a7f826d1ea8d35f2581fd7c8544be4f57ec03ea1862b5ab1", -"T2B1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "a1c29e18b0722dcbeccd97ca828a9ff488f98809349a78336c62664ccaf00399", -"T2B1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "80c02b22124cdace3062d1488c2719e7f0f7736991b08464ea122064be4633d5", -"T2B1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "54db22ae816d08421321b87024a3b84307e6199f6f3b81de54ae3c08b0bfe1de", -"T2B1_it_binance-test_get_public_key.py::test_binance_get_public_key": "2be3d16c20f6cc680c16d739d67f0735d301a29a5f8580525237a3267d1a2ebd", -"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "c729c65f14987712071f90c84ff2a09323a5a3990a76c2a8249d0dd44713a87d", -"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "2d1301f2cd8fc129003b737bc8486a2f94b9c327ea289706c86a3f9e07352481", -"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "5197a4b85ab20f890cbd6e87459dc5580365361dc4cd6998190a193412e353bf", -"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "c729c65f14987712071f90c84ff2a09323a5a3990a76c2a8249d0dd44713a87d", -"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "2d1301f2cd8fc129003b737bc8486a2f94b9c327ea289706c86a3f9e07352481", -"T2B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "5197a4b85ab20f890cbd6e87459dc5580365361dc4cd6998190a193412e353bf", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3db11fe58c6397eb1c4d71e480264a1902b90edebb6e4b16d826ea4d72aa095e", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_get_address": "da64411448dde2ab671cbd93035e8f9e2aa66237cdcbe4fe259ad6ada25ad4a9", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "9f090728854f87c843c159a1a14902f4f064e254da2958e5cb3027ff987c3ea1", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "65ad9ee63f388c099c2fe461e0d9ca241df39320ff0cec01507424e60a0ac942", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "eb46042e9507b7a2c089633e97d4d7b9e3534f718def4ba72f1930ba51ee39ea", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "eb46042e9507b7a2c089633e97d4d7b9e3534f718def4ba72f1930ba51ee39ea", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "332d914bf14f0b18ba3282995ab7d7e9588b9b576d659222f04ad51da904eb9f", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "c99b2bf40a38fa676e8362f5c3ae84c5ac30079f115420677a3408d01151e6a5", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "bc8e4ee4ac685c43949b2dcdc8464c848f28f1cb92921f1153ddd3a318de1d2e", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "b02384360d3e055353fcbaf1e7f70a67265d04264f49878f7fd3e2d8630ffdb7", -"T2B1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "b02384360d3e055353fcbaf1e7f70a67265d04264f49878f7fd3e2d8630ffdb7", -"T2B1_it_bitcoin-test_bcash.py::test_attack_change_input": "17a88a4f103d3e8ea9bb5b8c8578cb4b7838d0f62672185b27762603fa14f195", -"T2B1_it_bitcoin-test_bcash.py::test_send_bch_change": "a20b63377ffa1de5948abd867934bb4127f9c8ded37ce8a66effc89c5fa5e047", -"T2B1_it_bitcoin-test_bcash.py::test_send_bch_external_presigned": "5d9cb6226f67eea2eb632e784955082401faaf4b69c86f6402f2e1a59a9bdcd1", -"T2B1_it_bitcoin-test_bcash.py::test_send_bch_multisig_change": "43c13da6d55361b533caf715b2d0f1bc7fe5d8b87e00ca760546b9abeba7002d", -"T2B1_it_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "ce38ef812c58730f6cb7639c87952e6e212cf74d4b00ebb2695ed6b640debc0f", -"T2B1_it_bitcoin-test_bcash.py::test_send_bch_nochange": "b89b72f26f519b07309a3119edba7967fc79f46f6135bef0c07794d485494fa9", -"T2B1_it_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8871e04dd7dcf20686abdefd3045043ac2ee1842cf50c3da3403ae66a2386f71", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "d4d3e2578fedfb3cc0ebdd6d63cdac136987c3f3b0f71760d66b66ca35944546", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "34d8db03c4268998c4ae66ff778704ef6e125d3dbae40dd73f5b5fc99e453ff0", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "633f1b9273b757d3962c744f9b1e2b4bd43e8303e723cb5ea56e9489ad4a773f", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "9c576ba2e007b6fae7941e27804d2688d3dddff838ab286270f73d5e0a57e2b6", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0ab1596738d15b7caa84e457cdba1129cf84ac7ac0550f510df56dcaa106a491", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "dd5e15ee28209a2b7cd1621115de54e7e224347dc41270680565c1313b57a945", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "65a3d4663adc7195a48acd2a3469c6a537785f3c3ef412e3c19b4d3881b917ff", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "21ca467b0f1ccb6b40a577d89e60391d2db47838de1ec5c747fe31876c3cc3ab", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "09f9576b8301e7b96cd131a29db160c5c7ffa90f78c35897e7e22b731f17aac7", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "79fcabf9ddc8fd20970ef548b191f94293b9c030130ac4a9678c4328f74a82f2", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "a3ae7785964a9b13d805d0941578a52b28b71cfa6c5e3f67f7e60ebdeec87245", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "04517faa53fe790a51d353991ce87df1d0cb6dac2a8e5873425fac0abe99a0dc", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a36d72d7d5c7bc3e0babbba4dd22f911baa3ac80e3d89819e632a6917fe2f45f", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "0cb16e5ab29693e3bb3ca702a65500e290c666db5f1c159905cfe599c056dbfc", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "d355e231396857bba1d425cbdf5e93b659787ab97cda763cc6a05a728dc9cc98", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "4422e5fe1c0aabfc3be0a5adf5986b353c8f46ce63ec43af3c447d119cf89a9d", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "d4d3e2578fedfb3cc0ebdd6d63cdac136987c3f3b0f71760d66b66ca35944546", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "34d8db03c4268998c4ae66ff778704ef6e125d3dbae40dd73f5b5fc99e453ff0", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "633f1b9273b757d3962c744f9b1e2b4bd43e8303e723cb5ea56e9489ad4a773f", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "9c576ba2e007b6fae7941e27804d2688d3dddff838ab286270f73d5e0a57e2b6", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "0ab1596738d15b7caa84e457cdba1129cf84ac7ac0550f510df56dcaa106a491", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "dd5e15ee28209a2b7cd1621115de54e7e224347dc41270680565c1313b57a945", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "65a3d4663adc7195a48acd2a3469c6a537785f3c3ef412e3c19b4d3881b917ff", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "21ca467b0f1ccb6b40a577d89e60391d2db47838de1ec5c747fe31876c3cc3ab", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "09f9576b8301e7b96cd131a29db160c5c7ffa90f78c35897e7e22b731f17aac7", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "79fcabf9ddc8fd20970ef548b191f94293b9c030130ac4a9678c4328f74a82f2", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "a3ae7785964a9b13d805d0941578a52b28b71cfa6c5e3f67f7e60ebdeec87245", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "04517faa53fe790a51d353991ce87df1d0cb6dac2a8e5873425fac0abe99a0dc", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a36d72d7d5c7bc3e0babbba4dd22f911baa3ac80e3d89819e632a6917fe2f45f", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "0cb16e5ab29693e3bb3ca702a65500e290c666db5f1c159905cfe599c056dbfc", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d355e231396857bba1d425cbdf5e93b659787ab97cda763cc6a05a728dc9cc98", -"T2B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4422e5fe1c0aabfc3be0a5adf5986b353c8f46ce63ec43af3c447d119cf89a9d", -"T2B1_it_bitcoin-test_firo.py::test_spend_lelantus": "28e9fb58fba2ac5cee9dd8a54222d7ec59d088525cee7ab301f0c31686b63db8", -"T2B1_it_bitcoin-test_fujicoin.py::test_send_p2tr": "4fb14994b5e3ca3e2364fb44ff3dce45a8bc95febd19143d987e687272195092", -"T2B1_it_bitcoin-test_getaddress.py::test_address_mac": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_altcoin_address_mac": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_bch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_bch_multisig": "2c727dba1f822fd7b919aa89d1fde2c4d2cb64d722c8367f0cc08f038e9be33d", -"T2B1_it_bitcoin-test_getaddress.py::test_btc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_crw": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_elements": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_grs": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_invalid_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_ltc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_multisig": "de60ef0573a93776971604071f31e4a9b7003b32bf4d40c0f4ae0cef34772e39", -"T2B1_it_bitcoin-test_getaddress.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_multisig_missing[True]": "519afdd01177996ccd9571f5dcc5072a2b9fb0e79e9d8d1c9f15bbae21bec869", -"T2B1_it_bitcoin-test_getaddress.py::test_public_ckd": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_tbtc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_tgrs": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress.py::test_unknown_path": "415a8d8667d1f8baef97e5a5e0ca870fd1b407e2dee1c54d165c82d3cb35789f", -"T2B1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit": "2cb31a20aa4aac1a3567275057569a4ff8e01718c8152af08ca7b10b428dba6c", -"T2B1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "6723b3b9665bf15e2f67cf29f9a6cad5cd1d9bfadb184fa5284513bc0dafa71a", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "3afc5beb4eef92a339e3243bbfee315ddc04e1013f374e781ac419005329818b", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "9cd7cd37a181dcf2cdd86e9f673ee07fc44f7b6f022c489b3b74e5b21c71a6bc", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "bb6a5f7ab3b909037d0d74e99eeb4bfcc5d1bee3dd2f012752cefa1aea7c1a70", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6370e508cafe3ae4c5b00fd22f9d4b776667f1fcd9d971c0a2adf2cde8d4b631", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "0359b588f4bdcc9cdd98fafb30f8a3dd79606d8ab540ac2650148456c06f1892", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "d1eaa7701aa81d422e44657b98f8808f1499f2fe44365e370b6f4c4d4cb734cb", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "9716c3dd7d74a8b434f3339ff8eac36133d475058438410a49bfa8981b09cf2c", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "c030828cf418abc10da897ab1bea37eaf25ab0acefe32349a17b87a6f149b9fb", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "196a015c6d75a802133edf22b800e2765c14e7bf1a8301748a0b066b5e46e83e", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "204ad587f6d1f8f66dd92d9fc6f1334e5dea188b70baa50cb5f11412538663b9", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "00d641e17a9387c5b72de97f1fe3fa8ded329ad5302a915396e18bbaed8ba97b", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "1ebf546f7685347c8041c86d6216a638f988da1546db69bfbca9b1935b9d6111", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "3754da1f1b55a4e969bd6798ed7dd9bcc8f78444c80b42813d17184e539a331a", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "7ae043a0cf3d1dec08c75e9834cf18914ac888c026a5f38d3f5bf1221af2d33f", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f208d5ba7f51d23e107c2af9d183e0917d8b756c3e2f8736bde9f32e8ef7d1c3", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "a80535a2accd432cbdc3e68cc0f5414787e53efb9f9f68fbc23e9f2a51973b7d", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "accf1cebe815446f009a3120013ed2cb067734823985938ad762d7e2e5e0b1f6", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "573c0139cc16319c606a45dc931b156dc7dcafd52645e81a3d59043d63ece923", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "bafe9d80e9759383a0cc7351cf0666376ec4022481234addf35ed69c3e67eeb6", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_15": "59b8b5fbde701e0c544e2ee90e249f91b20c29033d53bfccae1b240fafbbeb83", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_3": "60903487f9e05d42a44e849b2c6ad0cc170191b9432c1925ad802c41c49a830d", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "aa3a84343bed7f3199ed77c70520a3e1a6dedaa6119cdb5a30e2bdf60aa8c4a6", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "aa3a84343bed7f3199ed77c70520a3e1a6dedaa6119cdb5a30e2bdf60aa8c4a6", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "33e4481617d3ed3b173b264e5f300415f25826d48acdc5d9bcc13652653cdf37", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "9588d1ebde0ffa11e9174c4cd9c398524a1e67a7e2bd7d3079f1bd7f28044e06", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "53f0d82d0292d2a43780f22e228478b21734f53ca4d2459a26ec4540df8ba20c", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "809b4b5fe87e597a8e0bd5d891656f52b52f175eb786f450da3fb3405dc06d74", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "e968d8f7ca4ad9367360891201bd5d74e178efb5fd11519ad802b34871e175b5", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "d2c11cde30186f11929a5ad06169e1efb56863b2c47ef322d1abc31d1a1d4f1d", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "9913027902ecb92cfd81e5e6eaba3433c4d33bf2d3c5bee95b01d67b1f40f429", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "c05f2346861e78de90767e42c1eea189ad1ac8f585a238f5c5bbbbf874ca786c", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d11caa3a8689244571294b57afc40a21ef0a8bd59817cd79e837c31dd90626bd", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "addc0c41a4ff232a8684337d9ef25995aa45afec8b4a1c867906027ed8c72508", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6bfdd1573cc883763f9f5fece4ad15a36875de6e3113014cd094d6ff22a1933e", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "473bb60f59956579d50ef0e79ac3527895d9e091274a1804a1e42d4ecd767d07", -"T2B1_it_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "69d7e0613dd7027c0382f659c67a7e0fb689b3ab4d9b8d5ca979a334756cb5ce", -"T2B1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3fb6bb4e7ea5a6331afa2fea204cff9ca5af7ccbdca528efff81a9fe50e8bd80", -"T2B1_it_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "6e2ea50212e839aff52153eeb5262a84e2df817c557f4b07738eb1d403bae0bc", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ca99eff8a90bd1a3daeec890dd8431ef5bafc1f2e5b67c8755f8e45c892263e4", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "fa2331a1411b8cd490da0835e341831389bee589715e2bb39271fbce7b629d9a", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "f38c3c62a1dc692d14fc835fbc54768efe44a03ce87ef1138be3b3cf0f59a04f", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "35eebcf06e63231fec0f7b50395719a7f9230183b90c178e68bf3ba336efd10d", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "97a872b1c37de136d374405b05db7b26c0474a461649f4fa7d416cba20e3dde3", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "d10e770a46af74686c00bd746eef4cde76b30ca4c5d120ec13ed3fb18a193083", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "cdd18c5e622e92341cb69909a6c7a373fd0f6d65c9caa7edb09b928b2d82b8c1", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", -"T2B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "0cb3306db325ea1d04d9caf1b81b62ddece4a8b88ed72b97868808ac7c43ed0f", -"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey.py::test_slip25_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_grs.py::test_legacy": "db9e2e1235e20d6e64ff3ed0d78c9a5137cc467f8ecca9fe0d629cec2211842d", -"T2B1_it_bitcoin-test_grs.py::test_legacy_change": "0ca672b182d0c0036db6b8072f984320a519817901ad4e2ada7dfa8aba0611f1", -"T2B1_it_bitcoin-test_grs.py::test_send_p2tr": "8191c18218f360df7585feb72556223136bd9e6e1135b4a855e1a246bb4e5793", -"T2B1_it_bitcoin-test_grs.py::test_send_segwit_native": "dbbf1c392e6d2687edb782a5d7090d141992636e58503637bdf0f560a082b727", -"T2B1_it_bitcoin-test_grs.py::test_send_segwit_native_change": "717f2f32c0d523bc38cfc11f23b56251ce7b5c3946804c4cead7b115c6a88732", -"T2B1_it_bitcoin-test_grs.py::test_send_segwit_p2sh": "22e0328d2f52c166850ccdd00e0d3f414e01cfb8f379918b35b9ee1a25ff1b72", -"T2B1_it_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1c31851510868cab9ec3f3722290c4ac66d7e52bfde0c7a830af36cdea92cfb8", -"T2B1_it_bitcoin-test_komodo.py::test_one_one_fee_sapling": "0c32a082b7467917ed464dc037807a8e40fb33456c2efbf456bd6db28d95492d", -"T2B1_it_bitcoin-test_komodo.py::test_one_one_rewards_claim": "df848f13ea93327deedb09e9b4025c3989ea55d38816ac4faebd0d9cd061a464", -"T2B1_it_bitcoin-test_multisig.py::test_15_of_15": "425436af2bd7f84dc3255204e196318c1b01f9988321b88b52581d068507c740", -"T2B1_it_bitcoin-test_multisig.py::test_2_of_3[False]": "8ae8b1ff829fdabe77ac0aec856b9fe48e74c930e900536b75f476f74d55157d", -"T2B1_it_bitcoin-test_multisig.py::test_2_of_3[True]": "b3c04212212f3cb861e41a30e73639b5433d3b76380a6a401c3e4e55ac95fd95", -"T2B1_it_bitcoin-test_multisig.py::test_attack_change_input": "124202ba14ec37225a6eef68eaf8f718d7ca26b861e48c7864b263e8541c8922", -"T2B1_it_bitcoin-test_multisig.py::test_missing_pubkey": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_multisig_change.py::test_external_external": "ff1350c99b21121b3263987e67ea71a0a827dc8fe5efc3ad706f99958bd8fbca", -"T2B1_it_bitcoin-test_multisig_change.py::test_external_internal": "e683993d37e0d79486568f6dab6f7e25492fb29f6ee127d001007ac2d1665d0a", -"T2B1_it_bitcoin-test_multisig_change.py::test_internal_external": "2662ac5a1aad81e9954b45a59adf4b3ee4398b853f37817b02e9a98d84109e46", -"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "c16192b85e15cc993b625e91440ddc28e1194cc8c08eaa183328cefff9646162", -"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "8f62acfd2bb1e72d5c6efa5af5b2bcdeb629ad3e484141756a234b99327e7eb4", -"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_external_external": "475577f09d12437ab5f489af6b2b08b3eb5e66d2acea61341447e4265e7f917d", -"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "fc6ddbbf0d81d7540079c39a2d1379caf4aff994fe37acb23ab047c19b3e940e", -"T2B1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a5a4d2f30a61ae4187bb093f338ea8248ef719314769427a614147133c4a51db", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "380bf30489d4d9adae11be33b0f77a243a5ccdad807e51be1e958fd393c20252", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "64ad0a066a0a200524d36e14476d3322b5926f105d436ed68d2993089161af64", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "43f3033c01fabe5741c259688a495c2faa11e0b8ee2677c8c7bdc755b7429793", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "dd2b29f112c47c7046ceeda0d54878803d9bb0da292cb2f95edc5d85055c17c1", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "48f7b297becd8ce010aa3d3d3e6e3e8504ae7ed3fa5db60a68bb33081ce94396", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "280e1a695d04b607aa97ba667c49f426174340e24f73bc72b3be731ae137acca", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "35b463d4febb6454e3e0bc60c43b416c983be65b44909cfcccbf20f338336b3a", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "e9ad5b40ad9d30dc1f932961a462ec0c604966bbbdc0daeb819367088fe9460c", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "a465eea61611391136ab3bb36c979d74e690ec0e89960b6b3aacff2c1de8a24d", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "fc86d79e4497d688a60aeb64b81991080353e0f07f006c306ce3e87e75b4aa0e", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "9d9512c59562c295189c8c70da59c22662d0564963d8ddddab640617b65499e9", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f62cfb8b1e3d3249041139428a8b8727e2ab0d2c8b05cd1a608a095d7162caff", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "36a1e6a1c44529a08c05e2c94f73675b6f026ea4909b3d16d649dda70e39ee00", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "084c8c1abf026f34e0e60b14bcd0ae5c4e005ed53496070310945c6d90271ed1", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "deb2361ce62ca292a25b7b1b67d062230094c9a57e74813f85d170904a5f018c", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "2bbe915a280cc69e4a03f5011f916cb7f3f713ec8ac050bdde81fb2ef39de370", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "7f6b8ad903a79b3014e321e6187a372254b727cf87e02dc739712a6c8ac6df57", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "810238dd43447242c8ffcf68c4d2e0599698b72b20309b956e1499f173297b69", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "62fd2d9c92abdb0a4d038f98c4de98d806f947cc784e5820ff93744b1fcb259e", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f62ffd7b3af4b3f109298ee73f1d9532a5999e02cc2be160835ac87379a755d6", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "6dcd52850084dd3f4d1b72a536e7601512bc11f5a3ec65818895fdb7f5ad4110", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "59290decb7cf31ed0e8bfd27bd75cf6747e60726816fa4f9b3ad5c672be2084c", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "c7e2318149f25d7e198504ed36a560486586602a1c87b165d0a6d42549e4e342", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "985b031171535dfa2e0275ca00abf32adbdea56e0a0b7cf2a02abd8ae7815f44", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9c16d2284eca33795f3b9de72a44937e1ccdfe83d95f1f24a2bae01cd489e61a", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "d4b9a0701ed821961f57e0bc808d77d90366323c1fe5870d728338e10c8a81ec", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "38e47eba07544d9b9300487380e6552998dd534538ce4cf41aa245e08b330352", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "9c6951d678d9d75ab026a9af2eee3cdfd4702afa39b9de5e144e149045624edb", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "133b59026ca3f5e397bd04351ff8c0c93d5f42afd3c32ba6780d2c02663cf7eb", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "b548ab25bc81c705cc811940ac67d30b0eacb1c2c48ca5ef51877ec5ff6891c3", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d36b3fe271649b7b80ac5b38f136c8309746da8b38bc9829350a5419884fc9a8", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "8f5bcd9bfcf52f5fd7c7d57ebc9e987f7a05b20014f2a3c45f7b6d5e01d0a3ed", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "37a967e5ab15116199ebf69fa69a31588be7175d4e1ab5da2ac6e036a8f88ed7", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "38de8b0ce1f89b360f5fb66383ea7a095ebb68defd3678620f5090bcd222b87b", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ec71ad65e0f4fa0f92c23f1bdda9f6873909c70157a613f43bd68a371bb99edf", -"T2B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "9df86742bba4951d6d02e4fbfa172080f659a1969e765fbdbe6602a3daedebed", -"T2B1_it_bitcoin-test_op_return.py::test_nonzero_opreturn": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_op_return.py::test_opreturn": "d56c96901d4c5164fbc92e7b69d2b854c2a08ca196d7fd7259ed3994f89484ba", -"T2B1_it_bitcoin-test_op_return.py::test_opreturn_address": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_peercoin.py::test_timestamp_included": "d2965a8b16f94f971b6e787889ae0846dbeb8722816d62e323f66fc0c4cf53cf", -"T2B1_it_bitcoin-test_peercoin.py::test_timestamp_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c59ad64f4a86eeabcb7d956165829e6c0c59377ded8cb7cfb6ab5df0a6642bc4", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "02f314d8829d4c876a4cd877d546f6074b19af4e2d9add23e17b1fb8d97fe440", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "02f314d8829d4c876a4cd877d546f6074b19af4e2d9add23e17b1fb8d97fe440", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[bcash]": "f5ccc25e694e2061433f48828ea37dc0fb012d043b6b25460140e0a25b451cc9", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "12832bbedf4be7778a64244d93ef2f7975827ff951a8f08a5a665b0f40171633", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "ee3fcb4cd94e40c156dfefe23eb6fa3c04246bd6ed14a76494766b787c5dae6b", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d74dec3b17e0c341edccc94109eb763654e41f6d3f2ac7a3b02391686c6e977a", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "77b42ef9e12c95e9b03284905287c3da2d62103bc53094a44fec04bb757178a1", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "9df993c6f8a6b409bd8ca4a136503d061ae6c38afa0123fbee44059d180aae57", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "9df993c6f8a6b409bd8ca4a136503d061ae6c38afa0123fbee44059d180aae57", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d04f6bf08fbb4c43695a4bb31ee03b5b5222de67a413c49f3692b5b0ddb264bd", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "bc8c70cef271c651a24deb2f5478b0410c9f8df7c60d6355648f1ed5b0ce178e", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "2442069515a51832b05cd5a7f2a092278ae3b0afb0fbf75f64a44cdfba4bed78", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "2442069515a51832b05cd5a7f2a092278ae3b0afb0fbf75f64a44cdfba4bed78", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "18b6507132e222e8601918a3b65cdef3774f46e77d4a577d5feffc945176b702", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "2c71f28d43971c927fd50758712abde8192de197cfa80dd8e91672cfa5bbc089", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "95666595c11a9e13177d4c2898749fc1f5bd767a4fd5c48dbda58ece631ad656", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "95666595c11a9e13177d4c2898749fc1f5bd767a4fd5c48dbda58ece631ad656", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "f89a3b3bf3fc1b8587181e1bd21fd9cc3bd30722c2cdb76ecb997d68bb2f82bf", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "132b68265558c0171169b5609c8295eed33f71c956b8b3e8ed61d74ff092589e", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "f24851ba952b8a5eb3ab2393e822329bc7e4b020eb10dfbf8f54caa90fa508d3", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "e34e5c1ce30befb4ac33adfe62e62e1d904fa5bb14bc3612a64da7600a60928f", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "081441aec2c10bc7f744811a0786b09ef9222fe21283883c458c97c76324af79", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "2093352e93963c396a52b84dc9f7b5f3147f0448f252f3306be80adaf1d90229", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6924c5558f43c2c3d52fd9b257292c27e1be2f742a3c6f7d9eb071174c2d69a4", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "25bf1e20d5aad26d1256a0f96d62cd905df85bf3edf98948c0a1e16ae95b40fd", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "30e4560f71856acf522d102d6f1b270463fd7d733e173722e462bbd63a1114e2", -"T2B1_it_bitcoin-test_signmessage.py::test_signmessage_path_warning": "3c3bb89fd797e8f8295010d80a14298a3489437d3acc8148e78d8b612e917910", -"T2B1_it_bitcoin-test_signtx.py::test_attack_change_input_address": "d0361c30be4fb398b093098b24c80ad4754cc2d30f90b47cf544297d540f855a", -"T2B1_it_bitcoin-test_signtx.py::test_attack_change_outputs": "a3f3398ded2a0b42421df121c1a005a472192c4d9007efacdc3266f8d1c0391b", -"T2B1_it_bitcoin-test_signtx.py::test_attack_modify_change_address": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", -"T2B1_it_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", -"T2B1_it_bitcoin-test_signtx.py::test_fee_high_hardfail": "f14a68a2d9e569e4397debf94a4807105584af3a48a08a5fed3a1ce1d7c53765", -"T2B1_it_bitcoin-test_signtx.py::test_fee_high_warning": "fa3795db29a50c979802bb1c826c7abca7fc98d1665d15e3ec45f20658a0e7ed", -"T2B1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx.py::test_information": "46a5765917fe824886a75e7dca1878f26726956010a2d7112671acfeaf1b3461", -"T2B1_it_bitcoin-test_signtx.py::test_information_cancel": "159de6a4f89b9527b9137876d87b97563570a6a56e7da3d2830ca472fda5b521", -"T2B1_it_bitcoin-test_signtx.py::test_information_mixed": "9c72b7745cf437b1e6a9f0176f2c4ee28eb6c54192a77039dffbaf450acbaa46", -"T2B1_it_bitcoin-test_signtx.py::test_information_replacement": "c9cc42af742e7f5914e65f15b2d9cdf804efa6f32509c554d92345b52966c591", -"T2B1_it_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0085a00e3971059e97468b142d577caa2061983d5264cdcd1c130814ada36436", -"T2B1_it_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "a6509b47163f5bb9eca197b0c79a285a87c9afaf27759f52c7d25543cb0fe20a", -"T2B1_it_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "29601c9f22f3a3b8d97922309ad41de3e2a07eae601b8231d6557a067af0ba1e", -"T2B1_it_bitcoin-test_signtx.py::test_lock_time_blockheight": "ec4417f90771d99fc129c079110f003dce9bb0a2c8742a19735cf36f98fa77b2", -"T2B1_it_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "eefd9af859f50eead88917ea36dd7cbb2a2efea919b76d734318855e19ec2434", -"T2B1_it_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "90a9b8f90c594ba2dbb96fe67f3e31319b104df6b621dded5c2ad66e86e34b72", -"T2B1_it_bitcoin-test_signtx.py::test_lots_of_change": "27c3abcdbdde675192c704f7fafae800e19a1c70a815f7b8bc6ec2ece94f7081", -"T2B1_it_bitcoin-test_signtx.py::test_lots_of_inputs": "4bc23ece6ca9677e62b4b8819f4c4ac8142b62309fe80ea4e3f15625927d00f2", -"T2B1_it_bitcoin-test_signtx.py::test_lots_of_outputs": "1fbc49d64eb08901380d9832670274da878ce1ca689456562e478957a43fb22a", -"T2B1_it_bitcoin-test_signtx.py::test_not_enough_funds": "823f1cbd64daa850c2c9f2b7021fd33305b01f8c5927fd581cc75b3903f52d04", -"T2B1_it_bitcoin-test_signtx.py::test_not_enough_vouts": "675d1bce63b3dbc1a0863107b5f42cb063ae330982c49abbce5206900639a007", -"T2B1_it_bitcoin-test_signtx.py::test_one_one_fee": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", -"T2B1_it_bitcoin-test_signtx.py::test_one_three_fee[False]": "22a96dda23bc9c8e9630ad90b5efe8fc8fc36a542415b9326d136139a91ecd4d", -"T2B1_it_bitcoin-test_signtx.py::test_one_three_fee[True]": "49c545405397618daec179e4f4ee024e57232421cd8518b0a946415a477e07a9", -"T2B1_it_bitcoin-test_signtx.py::test_one_two_fee": "5d0f35066f1fde740b35b111f220beeb1f37066421af4b521ac147730632e498", -"T2B1_it_bitcoin-test_signtx.py::test_p2sh": "d894665a8513d01605a089dbee9fba39bb272f24c275546302fcfeb31c96c471", -"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", -"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", -"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", -"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", -"T2B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", -"T2B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_signtx.py::test_spend_coinbase": "f7b9d6bfc11cc774a9bced59f400ae7ae82d5676ce9ca05eab928051cc4eb531", -"T2B1_it_bitcoin-test_signtx.py::test_testnet_big_amount": "2a82db8b383efb32ba4925d1b19df4af9aee4a1458f2763e7f1853c2e2e71747", -"T2B1_it_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "14ad621ea487c455e0d54dca853c69b1e102504d6bc77dd45983fc5470c0349e", -"T2B1_it_bitcoin-test_signtx.py::test_testnet_one_two_fee": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", -"T2B1_it_bitcoin-test_signtx.py::test_two_changes": "b34a2d33f43c7ed2ea265fd9b81436fe74f6ec092e37090079be4e17069f638b", -"T2B1_it_bitcoin-test_signtx.py::test_two_two": "3de3fcc3204da7e6e82ced3ffc5e92db0b46528d3bba83e0267290ee5d3338ff", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "6554348c4981d13fac0f8fe298e27f450ed6e6868f444dc1f88e3a36d71e5941", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "e8873bf4dab7f3268bb7dbe765bc7985d8e6f4e6397f62436f4405eb23892b98", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4a3a1d3330df7d4b9e7d6a33c0e4df8f4f41a902ea44ed0518d3a20882463951", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "9a3de66999f87a1450ca249eec6c2b17fc834d77756ffb452a7408543defb150", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "8f278a5e8731b8c764bb256411c0c9a8d2c8d0cc74728431666ced1251f7e6ed", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "7a4c8391569d0059eb2189708a8554b5e8abd191861e9e784343667990d310c8", -"T2B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c61446747d532306bc6620a99d8a01b26d13488d5f1eef3180bdae9d930b6391", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "2535561093924661658a34a4d4b49c3d74d4f0914bb01eeb10e242ae05fe5f2e", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "eb0efc6022edfbcb56cf1b9b66ae8316a340f056ee60b53a1989a8ef7ea822be", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "fbaa39c2d08d0bf47df15376d543274083112d48e06c7be0012e3ca77ac9b3ba", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "aed842b45d6829792ccee7541c7fae3021902b14cacb295808eccb220a383a8a", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "db08d22abe962bbf68c6928153bb5b6ed2290c04fa75599994624f50c383f106", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7403731b5832f620edbe70a2f9ded7846c7cd94102d6806d048f6d31cd19d421", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "4361a3fcee304dcbb8bc08373c9edfe4d8495abf81c804b16b228138e6e1b207", -"T2B1_it_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "d54b392aa7e33dc2e99b7efa6ce8545a80d413b630f90ce0e11d4af65a05dda4", -"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "a501c771ac00da2fe1465f21ddcc3b6a15f1a179570c41f598b2337d7a218ad5", -"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "17fad08735b958772756b089a974c3e6ac7767594c69069eed6b3959d127e556", -"T2B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "3c7e45b801d97216f669459f9985f8ac8366eb41b69b3bedc6c171cbca1c0c9a", -"T2B1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "33955b8a6ab5930e79c4cd2bae7447bc384655d4e7d49132c48332d2425c960e", -"T2B1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "0c8a2fdc23b4c9a5a74bd556a132deab61c0b1494c3a049b1b7ff9924304ea66", -"T2B1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "33955b8a6ab5930e79c4cd2bae7447bc384655d4e7d49132c48332d2425c960e", -"T2B1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "873f5f83efa48a62418aad34d1316916ffa96b02ee4557858a051cd58e0b051e", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "e1aefec2620f1495f57e768d0ec58f866df74ca2ad9a64b690d3ea8aeb0c25af", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "f6d73b1b02dfc53551f77fc243ba2a9f5379cebfc4c351c9c6dee7c77de3364f", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3a750dc75d6043f013f6a4bd0618f9b8aec0b09ff75793aff11876e143fa2a85", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "85dedd079b69963794df29ffb5b3ada28801cf51a14992a897548b82e2d64a15", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "1e53981d929cccdfe6f69b4f02fa82956166dcdd32778b1fb86c0da90546b0de", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "69c3803a1d796e02c2b69c6f82a997b88f4ea2368d2cdbb2e70cd03e168a2a19", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1f0abecefb90d7168fac5ad38708a5cc939874bf1aa8c6aec96d07bdbd98eb88", -"T2B1_it_bitcoin-test_signtx_payreq.py::test_payment_request_details": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", -"T2B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "369c295242ea2c234e9b442b231fa8b2e6562717dab9b23ed262ddf8ab1b254e", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "70bdae1f1a9d0de9a4634d0d2f96956852e980645d88cb80d6464b212b85eadd", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "af80b0ae66855dbe9753be96888a41650f91f9603289f35aa0239d85497e44b2", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "af80b0ae66855dbe9753be96888a41650f91f9603289f35aa0239d85497e44b2", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "18c8c6146a4886193f800996b7693955079ed5e5653e04ddac155ed466f3068f", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "100bce975f5b9032c3eaaf673635ff6cc0df3cb64c42cc77a5ea1ee0604cba4a", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "066af8b0d879cd48ac8fb9fd20270983268a1747efce971305092b489135a627", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "18c8c6146a4886193f800996b7693955079ed5e5653e04ddac155ed466f3068f", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "fa389db78b6bdbfb9a47adb3f3d0f553aced6ce95aaba574dc199ad72c38b88c", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "064147476d221a8ff7ba6b03b15703df0d1f01daad151b95ba8ef455ad2ba48a", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", -"T2B1_it_bitcoin-test_signtx_replacement.py::test_tx_meld": "ef47c0b0079993f7950cba435e113d3405a8b8e347e4eb843b463f269f5f1e54", -"T2B1_it_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "346d8ca5be04846a184075730cb006a98110edea76461cc08f4ea226b0de3fd2", -"T2B1_it_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "7502632272c4ee16fae2f68ea1d2f5f73e8da06a4353ab97ae2805bc34a20852", -"T2B1_it_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "8566652ec8b6718492aca2ff6dbdf59abf2feb3c6452e75d27c91679e4bb223a", -"T2B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "7a5f1ff01982ea528e7347f5cb129668a0ebc08c1cb84878d675be2073677d7b", -"T2B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "42aee2247e037ea394af8934464560e2a83f96e48fe1d60d0e40b7648bd9fdc9", -"T2B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "a5414086daf68ec150867d566821ca32c5865d45c5185a4055c7fb5cf9fd44e3", -"T2B1_it_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "070619932d34157a49cb5a77c561d2b784d4df3a1ce912a0d2539c5eaa69e1e3", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "afc56b880a2e8786b1b31c3edb3e62d94852a2d45f133606903fcf5df8f4a1a9", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_both": "624213f02fc57e8fc47fc9ef44ca71bf4d2523ac289525384c79d8a39999685f", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "3bf1caa05ec95a5abeac3061f2648e98f433fe01bd8ee7ad468236e3a7d44109", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "199db22fc2889422c4f7b9ae280eb9c7432c7d7e958d38e8ec648b7a39239f44", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c0fb73c71ed69ec2c24f16678d5a4cd439f62e868e4dbd7b2aa5593fd3cdfee8", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e02baae5c295dbd1baf3fb4f773b9d0ac1b83cc9181c23a2a6851b92ea5e4b53", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_native": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "6516c0df2a7c59bdbb5658ad3cdbc4bb9e3ea71f9311bd5361c24212cb5b96d6", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "78fd641b13c8f04cad0c88083e36fa3479b354d5d84e42c5c2c5c38278718f3d", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "97e85964dc0cf2ee8b747f01b536e3eba12ade8abafdf68fe654ffb51850ad6d", -"T2B1_it_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "eb30dbd7091b0fc869851e09ded09ee8c688d1ad39e10387753350de6c6e8e77", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_attack_script_type": "65017ef2dc92d4f7a98a8e0afb290c5a4157e835471f91fcedca4aa3ab2fc798", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_mixed": "3c4f5acf115cd3b48dbf2c221184b229c71e8ea2e558ab07fedd3ce2ff3ed730", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "4dd844c60b66479a2db753c4b9ac4a01a890cbcdcfb94a442a3d67675e5f7b5a", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "96e3d27601690295493129dba764f43b0183e3c435d6e9004e375d3110a8cc3b", -"T2B1_it_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "8f0814d6ce52b64bf9334023d76f83626fd2799bea798645e0f7ab7081a45e57", -"T2B1_it_bitcoin-test_verifymessage.py::test_message_grs": "a8f090bd76d3ac84169b3ffb9ee1b2a2a92cfa9e36a81bdf2a57d92b2e9c997b", -"T2B1_it_bitcoin-test_verifymessage.py::test_message_long": "d34c0dcb699e153649e91afa1edf96af90204b658d798463b07e1fcb0842f4e7", -"T2B1_it_bitcoin-test_verifymessage.py::test_message_testnet": "092e2b56f635257975e6de0b796702b96e4330d7907aa2b56a1b5937938a3e67", -"T2B1_it_bitcoin-test_verifymessage.py::test_message_verify": "af9543a9db7916a181ed573d04d54037ddd42dc5b6195bce43192490f03c34d8", -"T2B1_it_bitcoin-test_verifymessage.py::test_message_verify_bcash": "fcd8299036e5fb270545889c98192969aeeade6c8baa53ce53663409cdcfa2dd", -"T2B1_it_bitcoin-test_verifymessage.py::test_verify_bitcoind": "0d0f9fb76a54b18eff899df2c7a462bc844524ad9d1a1c841478f649bd191b0f", -"T2B1_it_bitcoin-test_verifymessage.py::test_verify_utf": "8ca50fcd731505c3a4831780e21ec6ce2c85ff737110cc3d88a02126cc37a104", -"T2B1_it_bitcoin-test_verifymessage_segwit.py::test_message_long": "7963a7fce69c334eb352ec650926c4ae4a6358ff490f40734ef094a4bd815431", -"T2B1_it_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "347581439c94f72243a885c906a5c174a7b0ef52f8d26582076043938a93c952", -"T2B1_it_bitcoin-test_verifymessage_segwit.py::test_message_verify": "073e4558fa8c9ac64daa760a67205be91b26516374538b6dbbaa84abc470624c", -"T2B1_it_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "0314b19fb67fd8ba1064433cde477812356d11374e43cef31c9b852391dc09da", -"T2B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "a0c399ffdf1a0522347d1701b0b87ab259136137ea370b3c224a7dd50b8bf78c", -"T2B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "b391b2ca9d433de2ad477923d6d603a2353a3e509f581923182ef231f8c5ae5a", -"T2B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ca94334881357b60cc0250fb2e5160f3d50f12ef8dca735af61326e40d9e8d28", -"T2B1_it_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "a92b5659964c113ff56593649720f42caca4700287e4bcff36c390a7d4554496", -"T2B1_it_bitcoin-test_zcash.py::test_external_presigned": "b42a33e6f91b6ff21325896a3174f10a96570224f207630f0a5554d2faab5395", -"T2B1_it_bitcoin-test_zcash.py::test_one_one_fee_sapling": "0a6dc5577d2f4bb3944ca28c35dfbfcc44b31ce8f818da14a5ed5c4fee9ee48e", -"T2B1_it_bitcoin-test_zcash.py::test_spend_old_versions": "8e6c67d422b13d46ff76f9bc17cfe5e48b23e7978c24c407561f53ef86ccefc6", -"T2B1_it_bitcoin-test_zcash.py::test_v3_not_supported": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_bitcoin-test_zcash.py::test_version_group_id_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "3d075137afa8947b28d9c977464a243bc60e1e525b9810822259c19bdcbae5a2", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "3df221bca0f29d7de86970c12326e5787d0f4b27a6f4c0b24ff396137f27c5db", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "eed2c4baa037ae390dbb8ca409ca289fddab0ee8c722ca03c7dfd8547270bd22", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "a5d0db04ce53a5fea31e8853956389009efccd6c35e9692279f86d489d73d0d4", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "b3f9a481437dd6645feda64cc94e3c02b9d0498304a8dc0fe70a118da8c5b8d6", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "9ee43f2610929b1569dd164b138e9d00087b536e7bebe17cfffc6498a1a3af7f", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "df3e35579cf82c2179a1f78833df0914c2105bb9d7d78056bf3a9c352a1047d8", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "5f70879e174c14ae9fac8094f4b1e621cb9d38d59c0cef26e4d4bb8f20c407f5", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "e4fb7620e3209caf8d98a9d7f2d6e4ed598fb213c70e731e7d3d356ca43bd31b", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ed9b0f3f061804c5a6c994b465ef459c64a77f05477656a39e4495932094c318", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "8a903eed7f04b773d1d9f3981697eeac5e7b840ec6aa0420f3a299839eed1e2b", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "cde330984c2565445604da01e965bf13832c685060b2de7d537879ccda4c9b88", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "860e0595da464abc80f0a16ba827eb0c6401ae93903b5283a6535f40676dd423", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "6870b948c94c4c0cc231a88ef2dffdbd79db15fee20e9dc97944dd40aeae81ae", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c9e0ed5f4c0927a1d27624f43b2dfac7ef03f69893edbbadf96e210364a62337", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "edd2766ef7e7d6babc112fa713960928b22551ef6ad1037d989ba125871865e3", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2b4eea2b9e375b372bff191d097c4efb52eb7267846efc8c84eeeee1874f7bd5", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "1f05dd488944c0b613ee28ab9dac7c7aa85b5a16375fcbe05130a3963f67803b", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "669caf3f06c3806dda85a292ca9288af19547aa261468fb23134a3e98691fa13", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9d035eb72de1baacfe5659946d4b5fe425bc395f985798c0fb4f748be598680a", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "13c3ec9681259a61544b8dc04c1603f5709196e29c8315958dff4637f8292953", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "ceb645504ec7193ca8219c66504019c82c86115ad4fb523af149abc64772dbfc", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "109bdf97b45542559547da753f4ebe6ae497661fd486d7108cd3bd8bf2d82ec4", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "6ab5130a6baac397e97290c5767e662dd3eed4d5a2833ab80b17dd228f2b0757", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d216373e6b2ca62ce2188e0e35fa29e05e6dfd04da5a261929551284dc5f716c", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "950eaed231950f4073fc2fdaf9e01b953c7c9a965a507f403be50432bfdf625d", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "14000bd49e8d6f8f9ff9d27f4ef58a778d6a83ed5e08a2c3635895f5afc8487e", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "f6bc7c64049bc4ecb808b55722590ea96f92915b7f21b4c0a7a0381475330f7c", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "af00754ff02931673adac2841b591c7011a0293754a4c54eb819df399ebc3d86", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "04bd2e2855afe83dba3fe9bb2d2fced34e695ca5a410a6e4c369066cf5b2dc54", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "15a1bbb732ddf9cad80d5a93147e205b126fab1c6e976c865f5a6f2acefb268a", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8e41da7b0411932b26a45ec2610874547913d7117e3ce6b48f64c960a68c1aff", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "9ebfb310b8644fd90cca7f281ba29738d31ab208f59e4b4527f61bea36f39c48", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "8b0bd1bcb9bfc80eec3b58461149ee25d30b30964d17ad882de830a523192ccb", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "f552fbd31ad4ca6863c8b99037bc1eb678e1b08c44670d5e888a36e8d53c733e", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "657a5b403ac02b2ff299fb32f03245ec59847fdeff039e00f5aa8471e941ad8d", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "834a39937c017ba0b31fa108f84c2d814c9bba1b29ae8219ed34bc4b7cef65bd", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "defcf407599eea7877b7442ded37fff87d8840ae45fd3fa67e9150d23df12a7e", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "be46088998d314a827810272b7594f84c26c0128902eefb22297dddf7838668c", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "d00608809bc8710101f5c9d953382a6783e5528852e06beaea59d6449bd607e3", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "983c74e220b10fb869769d2dfde5cb6198772f158402802920507ad86b770b85", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "799efb8578c822fa20674db0a91559fe49810837d40c8140633172dacc687e2c", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "eb0e949151d0e3aa672e46ac520f05931504c2fc824b3f36917eae85e7ab978f", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "62469a08939e828267868021b2863ed223f8dfb308915876e0989eab89940a26", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ce7269722d39e636e78ba6f82816405424b4e50b65c4019bce197e3ce9c998e1", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "b5366cd73ab103fc9614680df3f620e413cdbecc888e10f818c51e636e10ec37", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "cf8395a72c63ad8ce79c4ded4b9303c7958d9d3d98fcb26569f3299073c8f65d", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "642fbcdc469491e5bd7b8d5558c0429f6cce5c3f1056d253fceaf71206e01249", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "e32e0f4be6712b8dfe780f122217d62d8b4071b9531503554f460aa5bafd5161", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "31c9586dee292e7300c8d3790b5170153aba2c57168de9743b40ed0e3971a029", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "7b2b7b4d080c4bf79072f718766600a0130d5aba9b756f23e1f5d902178d8284", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "820f76dd5c5ab2213e3646d799145960c9d594be7c4e207de65297ec1a805c1a", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "e94c4220ce54e30338b03b467d39bdd583d864562e01300d8fa7c1dfa15bd649", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "68aae8cd9943ae824b4a47f203f253562b36fbc8e14ec34fec3c6547de775075", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "65bcdcb966b30274db010a35a2fd34638268b38e8f33a5297642695d6e48a552", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "65958e81763d19f60b5c5b17ea4d0d37deb286f0940ed120f18acec48dbc72a5", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "6ff7eecc144d79cead5c5d6f056b899fe38e86c2060bea94e128af8d6acc4e60", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "655ea48420ec89985b6084617806047114a7006ea4ac1fb3ff9d1d80dc65e764", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "4e84b8531c34c0b3117c0e8c93003438f82a73e2da8731f241f089640f416075", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "5956dd74a3fd0ad7d182249946b65831299cb2977c079a24f4cce28efa371bfc", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "9d092ca64369b9f550bbb86a7096172a6827b799faed6ab411d319fd2231caea", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "72b61edc84ab5270704f93cd41660636c4aac55c2559009ac5f71b4e1aff60d2", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "45a59a0232c0eb0ddcab3a7d043a4a64e9836d0f7b7dac1086bfbfcd5d4dc81b", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "dc40fc251848bc9651e77418237155fc03af7accaa72409bbdb460d965c17611", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "8dcd4f9ec7b4776e651c986f6b5abb04491add533bf3ac6e096b5fe8b5026fcd", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "8af461297d33d2c90cfbaf154edbfa2508146d13c96c97b0c487f9b2e4666552", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "942e68a2f33db5fa3442cbe1f291f419694af811b1c90e8f5c170edc286ec03a", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c36e60e2bb8a7d3714a891391239c46363b22407db2e4fe218b7d4dd0435a33e", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "2ef5c4e9bdae63114b24a50ec1c2c0a26c1642099e8bc7842c0b8b67855fc296", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "072be2e05d56a61f322803d6a9be87d8b8bc2c2a9b1d61ed3f1ea4f7e19f4d47", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "64ddf8aa816eb3be38670c9659a6e1fbf87a7d3326d2eca782465f9399741fc7", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "b4066308151972084e7e1ad7195384d49f08d54b28fcae4baea5c5409a83d0b6", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "7a9df795fed04cad8d0b441974b3fbd1b34e6e62ecfd4efe9516196656c8578d", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0637870a65aac95724b71ed4b50fbcab7f5e725cc1804981a3f4c4b1332500a3", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "8ff79b96a6af99bf5b4a1dade81d48272db82ab83bd352b0150d30ae345d020b", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a6229444c9998e6d0535bdded396801a5cbe9ee40b8228935f765ada7ff8b85c", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "8adc2a8635947a191f22c18aadca53b077147ea12fca64c5852fb974407bc9d9", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "982c6ccec807949bd6efc036534227f750a1ae8748a78543237c87c0790a503e", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "551e694b044ee6bc0b5c5a3d80056414906cb3f54508bded09efee70f3be8eff", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8faf039db77bd93964d7a6d1cf5b5e9afbbacbadaa9ff53ba85f3ab9c6b6ef2e", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "0d2530d340a9b3e77a2ef35896eb8ab337bf412a0ec021c72386143fc5f7d794", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "35cabffe4c4f46d0f3b6d365eee19919ba3ecb8eff78700fea00b3803dec69fb", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bd5806361aa4a164ddac8d58e1f5dbef652c66b2281803e24f3a02a257cab748", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "488a2614784e8f1ca427788e790853f19512758f12faba3bcdcf96685a742a23", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "b4b65aa1ffa4a2c697f6707bf2425151215ebd0c06fd1ff14db34ee294ec0520", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "939c4e271b5be19870db669a5bb015790e7d6da0b34891ab427b677c95aea436", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "d1910e7e5feaa47cc22ca734f58c20a89eca8a365d79d4adc22c29a05742a9b6", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "a8040d22b0e9e6ab306314893938416e458f35bf3c7a5b71213e30e996e9382e", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a0b82ed70c2a2f6b6087e4c9b08c3cb39e57ddcd0bac36c8d7d17f239c74f82d", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8422090c6319347be7a1545710fc314755a77c9ebb45e3338dde0066ec8145e1", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8eaf76cd6b5c841eb28e043309cce9874b99b651858edf2f71f35427f3fc73bf", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "5ab8c4cf99ed343eff0879aef1e24f8d57eed80ec94595d2a4ccc3707e17671a", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d9b3d3eb98aaee12b8a39c42349103991c66101c3399a8a1e73cfa3913b5af8e", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "be1679f7b8fdfbd1e9a0f98880b4b3c05c042fe73edf7c919dec1c36185c559c", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "831fa292d5c745210c294d1998e4dd144431728290a7db1fde7090939a59bf0d", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "0a3db36b260fedb18b1ec5ddd7ddc3477c0466f7d1b6f24b99a7c1edb8d1cce7", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "950613f2197366143bc726246494d5cdb2aeff2683f6e9f954fce4e1269a503d", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "88a5899024f35be35f97616507d6684d423efe7303ed73ac101d8802cbc73cf9", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "cfbf26f76cdb3ab76a38c9ca788c96c1059ca38790533f59a6f87729589a22c2", -"T2B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "31805200b5e1782870df3f30b4a26347929e98aae1b24a66615f31f82ee51c6a", -"T2B1_it_cardano-test_derivations.py::test_bad_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_cardano-test_derivations.py::test_ledger_available_always": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "b5368c42555c24e216aab6d5c1426929378587ebbdf9e38c7636b70f578c88cd", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b03fd0bd2aa422480a5ae63332c886b16267456e66e53731d10f60ffc1d74a29", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "b3bf23a2dd30d124f99104a173c4fcb2fb4a3c9fd6a49f51cb946fc98d6830b4", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "20195affcf0a36da88caf7309933ea2f49463057b3fd04a70267f78b3d0600ee", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7e2f936cf950ac0521e1b3fbaa03d8a6560440572e5410cf2dc366f727dd0ab8", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4520043bccfa61c35a63644e0c970cdc3e9da55e175953d6d91cf93e5f50e7cc", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "0eb21a5f7143ead7cca6150d763c80c619dd3fc95ce042f72cdfcfc132a79d2f", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "70453cb84f09b03c3a294b48b9e655fb0ad4b8a234d7347b9ad175c317580af4", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "668c670e9da5a956704d0aaf03dd4cfc6a7e9aab762962a149a37581bd6cebc1", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "12120fbc082fbc31e05f555e807b60fb053462a17088eea55b655b3da7866dbf", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "374e0bcc435857689325774b472de59d47053f6ae422ba817a4fbbdbc508ee58", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "93f506d943eed5baa8bb00b93515392e42954936f901ffe71b849ad1a8979e96", -"T2B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "a458dd72e380ff6bea72475dfc7b8b3117b134bb8a35f06fd10e49433cd29b22", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "1bf9b854bad36293abe17ee2792fa53da5c38a62ae5eb7c9f6eec7023bb747cf", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "217974feabda91fa5161f0d377a827acd81f724ddb4b1e08f1d7dbde01523df4", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "2db0528bfe1fcabd884e77c1f85a5128621735859141e82d4af53815e89de90a", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b2b3dc46b52aba4066efbd1d9ae0a6b02e46cf855f203fa10076bbb219f1ef22", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "23c2e30a3eb75a7bcd611102aa72e0cada846c9f923f6ecf212317f593838139", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e232804fedf1717ec0317490114cc92ef4ca762af55dabdbe1bca0902ee8f107", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "8c63a43d4c12d16b5990b5b4d60d28541a7c8d7246d34b0286aec50f7d8d0314", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "4a8b7646d477f5871ff112b9fe52bb66e24faf2eaea1be2750693d3015c8ae04", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "18ad65482e180415d09826b576217869432deaa24f0055aebcd2f88a56c74807", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "404c329f1b7cf3fdf8122ddd1b3b7e5ae5ce6d661e74d07fd1ac6d8393f219f7", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "c1516bd3b51bea62a7aaaf1dba3c32091917ea6762808ac48835a8571c9fa5c4", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9504af25ca33c557b0f9d55f03f9e76ad56d6d78fdbd4803833ba85253467c27", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9504af25ca33c557b0f9d55f03f9e76ad56d6d78fdbd4803833ba85253467c27", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "78959cc8aedbce6d693167f385cceaf4b63bd401f4d9eef6ce67028fe4bf1b11", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "ef7b8ec43d5495883b183dc710b2bd66395e37301d0e6f1eac7eaea548e5a8a8", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "acc4b39439077db5188b0f8944da0a73320a3f6416648b8ac6a00c888426f339", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "a8e872a8932301da750913a9106373900f567c3199f545abc69129d3f5816bea", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0113e83b65d590c97cd166a98ec5a5922cb67a2f1c34fa395611f119d2796165", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "93a7333fa05ad02acbe4a33e509df0cc26e0fcd4045dd213683ea68f9ba0c6fb", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1f7ebbb5b61e8a4b25b4abc85df9852543ad5b82ac10467943199b070a648ccd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "69d711ab49d424a7fa86c423d45127b82af835167254cea2aa72236008ef1bf5", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0113e83b65d590c97cd166a98ec5a5922cb67a2f1c34fa395611f119d2796165", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "a90c889316c9273beab4f8f03fece2fd5b78a08ba44d3610acfee494954fbe96", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "a69838e706131dcebab3dc5787a147db4c15b0df29729a859a0486a8c5501ea6", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "7731f3e068a5806d88db336e0c6b26a05a5acbe58da368d7cf092606229d6d26", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "9ac46f47093f336c43a7c8a18dde4a81ca1dcb48940ec486b20cc265a360c552", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "847d2c9231053940a9f75f6678c5e860115b573b3d46f13522c25524468ea3e2", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "072a8d11090ad108c7084eb3df4e69900f910b5375577941c3d210f3d86bba70", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "60252e87d908f002d70e6cf76f402eb475c2b8560ea8392242d72273fb1ac031", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f2ecb8d491d018736eaa98d05a7e92e5612a5b02f87ee7d435a6f4578e5579b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6c886517ec6ae61d1726cb26f517aee1be786cbf86f320df95a88d7e0134ef84", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "8e8723ebab24fb3fc51bc4a627dc30896e82e1471c2cbcd393c95d51fd1006d1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "b0951f87851b4743c36451b7f93798edac96670ab24a1be62aa6d1e885545f51", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "65ec29660b40c0fbd5368cdf7062f39c4af22c0bb1d6a0d4527427847c30eb75", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cf692e7136d1738aa4d98ddf0b731e1d10e0fd602569c8715b3a8f72284aabef", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "73747c5829ef87f1d876689ce118ca59ebadfdd8b2ccad9d848a5f47e294d16d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "48dad40ff5dccd294e0ca235eb21cfe5ee97d1b202f4f31f5cd4fa80d6a59b42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c9b9c0b1fd7322ee291209c14e977907a59996b13f18b7bc9a8e16807335f40e", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "09911f3eb7a9e599d20f7cc7ba49f93d4543e5fbd4d6d7583c75c85f47fb5b6a", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "c93e3698fd4fce62c328e2496439a39a3acd9a7c6499003cc62c520f05c2c2d8", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "31249a488386fddf78c6ad278e068bf1061a949083687a1cd1993b90366548a8", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "626430a9504e3f7f8884d6c1c8426870dc4d9c924c586f64114bcd8599ecd752", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "b14a94b5c1d3abc042792dcd514ecbd4ef922b2c5b3e4f411a8e000a3d50d41a", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "8692f63e1f63c0946b141e9f04b13695b4bd77c9664a866ae7504b14ecb861b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8265b4f824d446180b43bc9ea2619fc3199f13a94912c4b49a78e44dffdb8576", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "eb8eae59a531ff6c20a1d255d2dc19d62b4070e3c571452d1f408999ae3de457", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "0e16de51fdea32db68090b3983c5f436693bf922f8c439c1acaad6b375e131ee", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "dc31dfc28fd29e2211d41455a39745d77c3a6681e49e5e46be6b329e208606ec", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "44497721dc3434a6c498630648bce494d86175ad8f0d7a1264d86128dcfa3227", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f6018424e47c181e8b046d6c6e16c948fdd0bcb616acb08d2906f6f1eae875b3", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "dedb32b67882438f8abb3f169ed15482071ec3060465a74651547e147344828d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "9f836c53920417dbfc5ab01348acc363bc4d946e3a5ed335fde8aa597117d396", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "c57b0c37f11d933eafe7e631b4a00719eef0c4b6cdf42475f36dcc715f1f1ba8", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "291522d580a78e417c5f0610661b34c077523a8ca1687cfe0374e3ecf0157be4", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "593e5e7fbdcd09cb646525efa9e43c47fda39d6d40f91aec154e2c0558503c13", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "10a8fb8de209501c1019179e10185dd9a796e63baa119342a146ecaab9e43fcd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "60634638bede633efcb1619b644c264a91b3db2ed87f727ff22816f4b09bce0e", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fc9f1da7500793095c99be9918b9715a4be0c6cfa566ce8a3fd9c5555349e784", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "5fdce7b40388c33725b882b33afee6731a23d7b49fec48b06c0f4f75f5a58d67", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "0eae4e2d3bffd15875b9a389155e04bce64f5072e1c05f2939641575971dc2f0", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "3175dc7b372ef28e85f512c72a6fe9ddca233ffdcba5546746912afc3400bb0e", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "f2e3ce81db515681c8d0514fe35d850390111d04cfedcdb51376f96255d439b6", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e98a0cb464dc5b82786d7ad92e7853659ff8fd9950cf275fadaf4074ab239cf3", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "db839b55fa21c55c3c91cf456c30993489628211e4a909d3319b458f0fd0562f", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "93a70c24394668c65dae30749417c558b4874cf703d938aabc6c9c5fd2e113cf", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "edd0fc128a8b574bb32cd071e153861dc2e5b2841c7bd50be3193b3f833aa855", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "8d97c93506bba57c5beffd92690394a4c5abb399fa1aabcc6826b62a7ca35b0a", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fb2c3d4ab3d3f4993e06452daf6bc2daacbe874190ed77c328bbdb75aac39097", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "8d1f5f81bbc26f56f80878f951188afc24ea51cb29f4cdf9255d621d6a3442ef", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b433a3befed128e4ebdeadb15ad55e6ca3a5d3b620eb3fa3b7a01be7883b9622", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6b52774c1b82ca04fe143b358ab9b0f0ee1be10709e7f2ad78b2cb150830497e", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "73f2e5c7095f580b5dd51216825e67ddbe704ad4d04f66cff73a8c50f1f89cb1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "c0e5c649ece862ab15458fb8fd32d34a0d8dfa97708fdbb9113deb65cb681f2e", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8bc69203afc6c4a14bb1d757e89a38c6b3511bacaa8a4d36915714c1413d0941", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8bc69203afc6c4a14bb1d757e89a38c6b3511bacaa8a4d36915714c1413d0941", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "d72b219ad102e8b7c2d31b3152bd69f9166725b59e194dc5a5c88bf2089a1b94", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "41d895ea061754c20568eca8a6da0ec7e72772bbc54fe9dadf8613e61e41a1b6", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "41d895ea061754c20568eca8a6da0ec7e72772bbc54fe9dadf8613e61e41a1b6", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "ce82e5f70557e5f4d4036b1aef10f5e7e568b856191ac7368d6ae9a6978cb710", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d1ec6144be6b475cf3491a0544c5c40210d4986b19583c0a0b86c5445a2fe394", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "d1002ebbd30e2c6297004ff77b0dbdde08569b020b927f94cb23e04f8d65d74a", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "cd23478971f7cdd68d6d02c2cc864f3da8d402cadff222c25b0f8a0840ef99b2", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "57770632b1d0eaa7356641533c57b30f1c4d67fc07a5c85ac635b76774db5221", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "403dd3b067b7eedda5777c94f9d594ba1b49e512cbbd87d95b24aa748178576a", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "837becf0d17d8d978531c608c6f9d17b4780b56b10cf3ff1cea7ffcbf08f8af4", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9419b68f9d1e649a72c3661632f191827ade32c7c633ab5442d67d0a11c8107b", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "930322d89e7d2d14529af811ce2d71dc08aaf41239b0244df4384ebae444b4ac", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "1bf9b854bad36293abe17ee2792fa53da5c38a62ae5eb7c9f6eec7023bb747cf", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "8c63a43d4c12d16b5990b5b4d60d28541a7c8d7246d34b0286aec50f7d8d0314", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dd5a4e77e15a522e870b0413b4bb5afb2f4416efd908ee35d40addcb35afb9a3", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "9b98ba23bbb432c39bf023588321b12447446b4921fe0be62ff1607c385c7d1e", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2d1fad54dea4d8b161e2bd97615d223798514f6c57b44e429b5ca63b497db447", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "e2e6fa68909d10e29570dd8bcf61c0569c98a149c38b91f364ec17baa3bdd391", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "14884d9309f30f5f9f2e0a829d753a8d3205225550cc37b5737c4f74e5bdf351", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "847a802592047899163d672017ce192a2b046f14a5dfe829ddeea4e957fbb52e", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "b8f8bd56d899fb57bc65ad32285c1690c20051110b172c43a7ce2a019425f37f", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "14884d9309f30f5f9f2e0a829d753a8d3205225550cc37b5737c4f74e5bdf351", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "acdf5d4be7786aae5c624aad5b776ea1335ed86c8d8c62c840fc19ecdf4a3acf", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "b933bce96518d7f49108df2591d5b42b4bf2b33bc5f95c50776c1c05964867cc", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "87cc01da1ebdc85dafac07754fbf7948c5b9e181ebd6d85b4f31ce210e3e157b", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "11cfa09d8aa070e9addd2a8bd82613371b5b43d42d4b441440f5cca0e4acc008", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "d9d6fb17f4d451d88b64a28e677634374d848c942e7e53b2e0d78195e08282ca", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "a5d8b677be986683782e00aa72c60b4b152cc386a5a5a634a77edecbcc230047", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "967319241d3e6db125b150ee3664cbaad848aeb4338a9440c1250652faf13ab5", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "c60d179c63978c7212e3e52407fe20a12dd013fe5d2e506d44de3b6c0b06145e", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "914883456238dab872a9f996a5a18e56d7a22b08438c2b2dc7b71146cb2b1da6", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "22d9cfc103c7dd6643d17f6df030fe9b5aa1e62cc757302f6253e22e4f5732da", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "a15c7238185f22ff769d64a6f8e7ef58fa4715d8ac034705052f3eea39493a39", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8a51caa894081641b9672f38d1e4274575418a066f26e052fdc254ae2420f073", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "568e0b208781113b8a81754857bcea1b612702a307ccb1dfbc177a054baac37a", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fc953307b501e210d22dd677718f29ade27ab1c2f9d2995fddc6f621530ba188", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "9ba5b25cc7add2ff067c19a04879207048a4900e7db7db573ab946ffd1996cc7", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "aa272cbf2ecccf3fa5390b6b5993dac5944924bfb8f0b99309c195a8a4a3f8e5", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "78ce5c36e483892ab96c40891db91e6949c97b6c0bc3187beef234814634532d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "956b9aa4a956cf3fff964c44a8ca63c3fd5b3aa94809fb32c01c5019b88e031a", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "f31211bed6c10d0cb2136063d49f85758628c739327aa0ad770444fd724e6712", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "db66f1a60316b26d6c2d77b454c2eaa8df62bc919964f78dc801aa05debe4c45", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "8fcc67c5d02c0db6648dfdeb6a9c61c9f63660ae76918b9e13880c897790882d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "758d3a842b7d87bb6788e422e5096ab5680bd5dd3b6766ddbfdcb3439dd80deb", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1337da4000f92c34403be9ed725f3bd1c0abce88adc30fe83839caa8363fb11d", -"T2B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "3a0c9959343cb1ca044d97f661b28f2b5d01a382094b4cb94ea338f3799ba1b0", -"T2B1_it_ethereum-test_definitions.py::test_builtin": "8388133ad35a921a33432552241ed578248d29dfe86030a4fd140da52c787f18", -"T2B1_it_ethereum-test_definitions.py::test_builtin_token": "b49ce3a5e8b99adc9955659f08ff1cfb377c7bdc0e715aa958937c041a2c23bb", -"T2B1_it_ethereum-test_definitions.py::test_chain_id_allowed": "cd9d08c2cfc800bec278c03c598be65556ae95e2c608766a6079213282149abe", -"T2B1_it_ethereum-test_definitions.py::test_chain_id_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0d5df11623ad85684c5b6d81065021788a3139c39682f121026cfd6d1e3facce", -"T2B1_it_ethereum-test_definitions.py::test_external_chain_token_ok": "12931eba3dcf199f44f65f690a3e998e13d5fcc8f34a8f038176d9d4a4608212", -"T2B1_it_ethereum-test_definitions.py::test_external_chain_without_token": "0fc6896b7ed9c645e5171536ff37e6283342ebba591e3c5265a86a7b15e6ec0a", -"T2B1_it_ethereum-test_definitions.py::test_external_token": "d4099d53e528386377762eb328243d9044ac421e93facf1fbdbb5bec52665ba6", -"T2B1_it_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5c12b32dac104797c2bef399a972903a5ead961da4b20344cbb9db347bb93102", -"T2B1_it_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "ab3e1cc8b16085e3d47e2f744b95cd56e5628831536b6c9478633cad8b30449a", -"T2B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "2a14a7f60a399ac07f8adea003e4cb152f55abb67964da58acd8f96711d9cb86", -"T2B1_it_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "5088074461370abf9bd4db107638670a283f83cec6b8ddf405cb28c374fa99d7", -"T2B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_slip44_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions.py::test_slip44_external": "d826dc8f03479de89f085f48f63542675b0eac0e2435cfeafe42a986a492a201", -"T2B1_it_ethereum-test_definitions.py::test_slip44_external_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_bad_prefix": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_bad_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_bad_type": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_malformed_protobuf": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_mangled_payload": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_mangled_signature": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_missing_signature": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_not_enough_signatures": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_outdated": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_short_message": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_trailing_garbage": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_definitions_bad.py::test_trimmed_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress[ETC]": "f45b14283aa74ba93f4cfe1df82aaa5bbfee0a47a0fb634267597741a53a3e2a", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "e735b027cca54dedcc9cdf63fc787a59ebf57d0fb555e6387b1fa3ea38e71606", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "131489ae4971766ac15efab79c2d865d4e599736eb6a7c2a1d0dd4bdd16def1f", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "cc759834d0f1572f8ca289d661d6f2f2d102bdb9abaf88f237ee3908f10c8464", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3039ff0e815cd17191fd6178b5fd628fbbadd7b066cbab89063ded0377f3ac6f", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "64fab50e5eae4a32feecb8e70baaaf135013ab5100ef67aba3cf756740f74084", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "1776f5aee5703f33ca2fbec3975b1c93d3c3ef73e67aa4d471f023823b0c8bac", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0395c6bcef1bf6f47ce5155b25d7f9b4c770ed35c884c0f9aa87646a8cba3fe0", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "a5102322eea7c649039c3ade89d79ccc2f0ffcb904ad97d2385c70b26def4af2", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f5723b17aa67cb5eaa9ebac594fa5437349e0379d2997bfe50e080681032379c", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0edd6ba3dead4f21a5afa420779fb083567c54c8f685fe7c26ddfc54370160a5", -"T2B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "50b4efc0b8fb2a8e7a33e7680a27a432d5bf18aba1b0cbfc73d35d1972967d3d", -"T2B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_getpublickey.py::test_slip25_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "caeecf9453378c866cf7e37fc7c21c618654b0069451b1dc87473e3941fe7425", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "27baa347f77b38d8c002e5cf613793664fd345718d3be4053525404168295302", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "360a34985ca8cb7cd2dc273dd8ae1a2a6687e2a4cb4d7671528ea61b698ca1cc", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "90d61a0cee222fbbccd533fc08a8f7631e5b97d610237c27c6001f0566dbaed2", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "eb62ac609193de2b48ee54d457de1fdc87de82cce872ff97352d1e1ba3639160", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "482ae1f7210bfd3db5fe7fb5de438ef8de153fd8ffb25bf34e71e6ba10bc24dc", -"T2B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "e79b1b5f8bb34ba6319eb62f04ce87b1696ae1c4832b225baafc56042287726c", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "0ab7498102145709b4bdef03404f2adcf330641465439f8d1b2487c409b10d60", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "2e7c65dcec45427aedf9ea8751844a768c9f0d815ad47e50c8907f580210df1b", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "0f8c166735ada0b1f888bc6a4a2d52b1ebdd3694c0bd0d102723e5e7e2961826", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5b897a47955a94fde28c7d6639999e4c8d4f11133e5ed1baf5041e1ad7dc0abe", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "64798dc96ffb6407729e568fd51f0b2b5d432ce360d5c4df1cb949428acf6908", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "fc15db2d0e6911568a2c4061ff551e2059ce5a26dad67b23fac72a158181f23c", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "8d53dcec1600993e76e462d4c48d62218148df15f75d7bf2d297f983ffdddb26", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "92fa13130b2b9a2f06fdb75dedc1cff1babe26de0874154bcbf84c84dcda378a", -"T2B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "3cd5e47f18d83f1bf786aa914d587dd22c29245d10a4399c9b33a6082ee8feb1", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "2a36e6ab951c4bc4b79803efde458bdcb1cddf04d0d355f4908411c86be4f4cb", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "741cf59801aa9d44a52b90610fad5398122f1bc65af0f43176f760b8fe4971e4", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "6283ff6580c67b958c738a6708471134409fc2934600142ea2588750eccb62a1", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "b33c4809157e145d2a344154d556edafa56bfa8b26e412d044c943a1541b85f2", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "fa2e4f45c3486cb3582e062e0d840c4ca6f37d7aba29d2147fd281a6b5a85c24", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "77390290aa5019c6ecef19710bc2c8d975c81d659a778c9e0c8affc1dd39fe54", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "1f6de003d62ddff73bd4330f97dccfd0d712e959c43b72ab16b277805feeac2e", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "799f94dd60f42d56060805374d9a6d948e7e288bad16043990dde248c2613e10", -"T2B1_it_ethereum-test_sign_verify_message.py::test_verify_invalid": "2a36e6ab951c4bc4b79803efde458bdcb1cddf04d0d355f4908411c86be4f4cb", -"T2B1_it_ethereum-test_signtx.py::test_data_streaming": "84e38c0239f5da36b22204d4e751193eb9a784aa64095fca8262c9b7fa90bbb2", -"T2B1_it_ethereum-test_signtx.py::test_sanity_checks": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_signtx.py::test_sanity_checks_eip1559": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-ETC]": "9f20c6c824bd678cd0226bf9474174faf9a9ce05eef95249665386b716d507c7", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "f9a1a525f47267260d283602a6a3a1bf19d5b67ce4a7c038506991c4f5a3c0bc", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f9b8ab3c9fe840a791769dac0e88d152d27453f6218d8dd968ae807bc35c80d4", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "f9a1a525f47267260d283602a6a3a1bf19d5b67ce4a7c038506991c4f5a3c0bc", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Palm]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Pirl]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-data_1]": "8f510879040b2f2a483a059787797171498f01a47c98df493b26e9a51891f0ac", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "9a7aaf53ecc0952642c185abcd22782464fe87a9a836abd950a2c625735cbf32", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "176f3b1161a2bd6d1e68b81599524e4dcb4ab696c498d26411afb92c19c40876", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-newcontract]": "03a5e386d865774560d2144d51dbe59acd442f7ea3e8b1a305b1026147b8a388", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "82eed184a42ef797e7dd1a1e9661c787e22a130aa79d8c229252ecfbe15ab9d4", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "1c554c9f99d1e32ecd717e83368e5f44e226188e8f7872bbed27387ce1181444", -"T2B1_it_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9fd4a3baa973eb47b9b6899edc4635073a993c92d870e420ede75274c425ddc2", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-ETC]": "8ce6c35de214f6ba66f23f018b62b338a42fb9f7b888212817cd1ecbcd9dd5da", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6503c64f98def7a3899c351cf9388c87f9010b5c5adef3067e23970f4316c358", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7e1fe7857056163eb72e7933d010b46cdecfbf2be3e82546b4dcf596edb512ea", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6503c64f98def7a3899c351cf9388c87f9010b5c5adef3067e23970f4316c358", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Palm]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Pirl]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-data_1]": "2e6218c2703ab9469e5a2e13a13c766c77c99bdff5ebeaaa83606f7bbfc97e47", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "cba5c9e6269efde79a5a737baa1ec159378a9d2923eb982efc80aa2788fa1f4e", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "00aae668a5582416b5ff9ebca190138af00862808b23ef220ce55d0218008abd", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-newcontract]": "03a5e386d865774560d2144d51dbe59acd442f7ea3e8b1a305b1026147b8a388", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ad0e60da0e6ca7fb56b87862bc948dd6d9c9cf6bd0784a277a1544409ff8c7b4", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "858fc718b3672badc84016bb6dccbea602d3555a98fa636a90624953b9776d7f", -"T2B1_it_ethereum-test_signtx.py::test_signtx[True-wanchain]": "e1e30864ccc2f9390d4b1088454d817cdc2730fa4c00400e90136a002b4f25e7", -"T2B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "0ce850d7e437c29c01835cd0e99b663aab967c3065dae3673fa2c6f8286ce997", -"T2B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "997a0506b611b7e10dc1c4ce79a7650882876d69afe8d7f7c6162c44f7a29e19", -"T2B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "298cfe50ebcdc45d30efd1c7823af1ca1aad961be44b576b9081166a0b5a9a6f", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "afe5f627324bfa074f7e7456baec07d5c6f8c0d8da38391a6c64e9ccff3d69cc", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2d5e01f168591a78eb35a60b80b0b01548faa0543c0e61f2ff559f079d9a95eb", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "73f8cf28191d77d02504f2664214ec962419182aad5697ac02b91a8e08b06376", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "6e5768074e20ffc8a07eefafd217954a46f7bc56ef1a588bceaafba237ebddcf", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b111382e71122b2cd3474031e519333b7b3f36e8cc12c0082ad6b65825c8ae63", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "b4e72e035a147d1ce7311fa2551b6ab77e125995d5fca8d9b78bdedd749192e9", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "afe5f627324bfa074f7e7456baec07d5c6f8c0d8da38391a6c64e9ccff3d69cc", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "057407c8c7b8342ec3167e081e5b6cd2d2a46d508e35127bd9091ea7f38e6b7f", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "08d8cfc8adda2da71e145483127bff99944ff30efc329ff1052b2b10379f2b25", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "ea0599847230f63ee7ba010d93db2751b9dbc38e3764e119c60a21eef250a6dd", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "6ded152dc69622ec63ba01a3d64085c32f742d0a3a6232e37d67cccba0d26351", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "ae23ce969d72d4eb500dd31c52f0c99549c770d4be8088269235fa862d214d48", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "c19d87f36d336cf6957181df5b001ece52966e59df35e11cd4fc0f8a43980071", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "057407c8c7b8342ec3167e081e5b6cd2d2a46d508e35127bd9091ea7f38e6b7f", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "6fad02a140f701720ef30af0fd6e3c38080112ef2040b7f0132da66850ee9129", -"T2B1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "6fad02a140f701720ef30af0fd6e3c38080112ef2040b7f0132da66850ee9129", -"T2B1_it_ethereum-test_signtx.py::test_signtx_fee_info": "1d51e5c3bd3e7836f26b33b1d540e516210386ecf4660bc9fb59cedf29344eb6", -"T2B1_it_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "fed15f0df9cf97c864b0f3c3a76c7315035eb3720f6a741b4b24f98da368ad4b", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "1a6bc6fcff340babcb0dda99cddbf9df402314570086006044b5a00c702fbe25", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e0715e2ec9b3aa62040fb4c893e7445f3b539a461692d3404198476084253454", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "b0c8edda4b92d2e8c00c079da56608c0cfabc9019bcc9d7eb268aaeb649e00b1", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "18049e6f3555baa253aef65018eeee792e620d94df1c6be95eed962595aba695", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "4e663a338fde3275b5554918cae8cd360e4c397c89e088f246a9e0b946a177eb", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "6120ae31959f1c2f4f54a314a30924128791fc96edaffb22022ec676b3f8eaa8", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "bae0064e631e7d0a70018869f0fd20b0a6dc13ae1b15e3ec642b75181a7d11cc", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e3c67d812c837448735b80de38a1e55d813da99e5b71567d4b594bc960fc5f93", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "bab3ab00d2a9c84bf51a8dda46a423614d2adf9e4aacc5af011a617a97466531", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "77862e4f49d5ef8f82045291a0c8f37dfb6f32db8f074a341bebbb35d7dfd96c", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "957e5f3e974027de4818d03a0a8e0a15ffaff2da0842e3d2f333941b6d58e23e", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "8fb20dda4496b03f84c4b90c982e6e951f3e9de3df309049f29d01ca1339a6e5", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "74f002930633add52e2fa4929a022bde441af7feb3b03f7fa08346257824f2e0", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "74f002930633add52e2fa4929a022bde441af7feb3b03f7fa08346257824f2e0", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "7889ff8359f7e209ba2ad86d1e720483eec058e35df51e11bb977dbfcf26f065", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "7889ff8359f7e209ba2ad86d1e720483eec058e35df51e11bb977dbfcf26f065", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "104aa67b97fa35ec738852ced5dfb3ba3a34d8bf353d015126aa13237a43c4f9", -"T2B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "104aa67b97fa35ec738852ced5dfb3ba3a34d8bf353d015126aa13237a43c4f9", -"T2B1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt": "bbe7cc560cc04b00da4d7c3cd75c289c871fdcbe6934be5e067733bf1df23e21", -"T2B1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt": "774994ae44218123e8fcb71b867701676033288f2c7427d63508d60a24968896", -"T2B1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_misc-test_msg_getecdhsessionkey.py::test_ecdh": "38124b24ea8acd74a155f11492298b31f2859b8f646379d06bb1bdcb3566f9f8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[128]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[129]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[16]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[17]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[1]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[20]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[21]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[256]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[257]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[32]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[33]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[3]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[4]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[512]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[513]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[5]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[64]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[65]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[8]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_getentropy.py::test_entropy[9]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T2B1_it_misc-test_msg_signidentity.py::test_sign": "3c2be19346a767994a01fde6bf675e88961a9f5b172444b429f9d813f53069d2", -"T2B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "813dbb1bf97828110daa366152339774f8243554563c25fbc8d5ed7375415c2c", -"T2B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "1c25d110fc4564f8068df6ecb981908eac822c57d5e8b69ac08c6dcc76066b7f", -"T2B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "40d94fc44cf57f2e8b5c8d865430cec7475ca061e47c666e59f281ec9550e9a3", -"T2B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "23fcef31c60a9dd74ea07c221fe05ed4fb0d861e3533f9611be17239712ce9e5", -"T2B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "d3898b1b8c76003e61fca1f9945532844f40bbdaf230cec6120d11080bb996e6", -"T2B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "ce3df71a3196e4ea436bbcd3409019ccbf54e7c0a69ffc4f2eafec31af64ebfb", -"T2B1_it_monero-test_getwatchkey.py::test_monero_getwatchkey": "66a2ebee743bbc0e5f7ee3c3a903f446b7316ee6ccfe424643d3908fb5598076", -"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2d25d0e33d5db3039926b4f42564ed4017f506ec15d8dec7c9deb90e07f8a5ae", -"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d0181ce67631c53739ff7d0ba38af4883cef9de5885904750ee5d41323ab6b42", -"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee5af54db577078b52ab9ac6e1d63e12109865dc4ee3d56b22c538f294dc57d7", -"T2B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_it_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1809f7fddf022da5c48c4ce14fee7eff04a14ab82562f3e69c05fbcc85adf4e8", -"T2B1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a5a0eef5eb597977bb3daab748c985fe8f1f0343abb122f3991cfd160a3744e3", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "39c02b11f23111b3b0b9747db392ba0be0abb78279a53cc6a56bd278204f8cc5", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e6a311a6f7c3e53cfc4fdfa966bfb1ebc60cc8b57119c4e71bc8406fdbaa8b85", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "bfddc5f4af8e8b63cf4b9b52bf439e34d8ff73a87ad67a28c8001974f1fa2cab", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e673ccb9332a8a3b1b481782cd707c2fc00419eb3dd727013dbbdd4706d38c07", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "01a9d82276f3ef869b4825d574f94f7fe5a6dd8ccd72a4930d7501e129d0b6ea", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5c36ce549e5d44b549f34d7f7fd755bc4de2259a0973e0849889f5fd9db05703", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0f893ad7ec7d7cc9eb74fb01e05f49823ec1638dabfa4476d93adac43a659db1", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5c36ce549e5d44b549f34d7f7fd755bc4de2259a0973e0849889f5fd9db05703", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "0f893ad7ec7d7cc9eb74fb01e05f49823ec1638dabfa4476d93adac43a659db1", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8d722b2113a3088935710473164e404d6767c60e500db9f83b1d743615068b78", -"T2B1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "2b998548eb9022892044075d586ab73341250df9bbde8d4ec75de6f2a8097b41", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8faf0077291123e7593913add2c9fc845ea161ba8350b6d29d4279833ca93a18", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort": "39c02b11f23111b3b0b9747db392ba0be0abb78279a53cc6a56bd278204f8cc5", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "0efe3aed805697262e1d193c025210c39ebb4063846671382e77855046e543fb", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8b095a8a2776c0d7443de68b7a730775cd7201bcc0e953e3c2a2940d47add19c", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "54ef768cde564a4ecf773c187a3d5b4e92bcf6517f793dc7155e731e9dc20c71", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d73349331d3b43cb20205a86b24436b6312cf78e0b69a174cdf1502dc6196319", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a690bca8df6aeeab7438a5009f9a90bde7c7d601eaa2938cf4bfdfb9dec5d830", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "406e61893b10ad664269d0cf84e6c3e7847c26c55e4c6a187b95d980e5b131c1", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f16f5b3aa7cfd75b1c152907e411df627367d4a7546ce6c1d2f712feff2419dd", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "d8595e4461b5b05b5add0dfc7bbb0b1d115585adc9dad348fbf895f5882f38c2", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "65a9da9c24e9dbf2b3f24550dbe40434efa1710d96c210b6af13e9f6d74469b2", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "82b725004a181e172abbabb89fa000bc178e2e347c8f06b2c99de5d532a16799", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8b6c509d82d5d18b0306d772a41d139469df4da616ddf21bf0b0d73734058917", -"T2B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "42be69d08de15e1c32e84016fe1d9bb2eb1846cd3e39b0ad14c595e53f4ea5a5", -"T2B1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "aa2561ebc6ae1c440bb666b187f2043c05c76361bd89a162fbc25ccfef752ded", -"T2B1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "35348cc68c2ed72967ba99bb9586f41bf3b555a3009c7a4ab4d171bc863769d3", -"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "b55c6827353f419b1c57db1f6ae21721e6c6b078d024fe79eee7daa34dc334a8", -"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "35e37151923451a7e92d5a8c427de7b3ca66a2f9760670fc4646338bb56325f3", -"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2bc220e6400f990bd6bc4a52b218f078c60bb512de8ab2fd08d129eb21909c89", -"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "276272efd2a3e62ff1f1add20c4b3dc80abbe452c53a235c089a9661f04bd893", -"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9043ab91c5b8bde7851b0054db1ae5f7cf99cba1516a1f8890db4bdd55fe3a52", -"T2B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a690924628577ec441361ec70b0b2177b1200be6848575394e9aef017944e628", -"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "adbec66b5c4557b1e076fb6a29287e6cb19c91cc65da4fbede5d77c7d042a3ce", -"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c71f526645bababa8d4e8c043c8795cc3679821208f28526397b38159a4c556a", -"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "776068360c96fe8f29c27bbcaac2b2b47abb2245ee00925af7cd549051e8df36", -"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f947dfadaa07d2fc27732db2baa257356aa22246d9a8770b5dfd18cf57c2d3bd", -"T2B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f9f377d5f4edb60a0e28475769ca738d9870b8349d49cc225923087f633a6a3d", -"T2B1_it_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "29aecf4d5afc15bdf3924322542babd67677b0878b33c947957544bb9ed50701", -"T2B1_it_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "68538958214815677066afc4f877ec609bfbd808a62a754876387558ec742eb4", -"T2B1_it_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "821347cd3c3f49de4941704eb73b00bf5c2a6ec4a3bb97dd807e9507a924e44d", -"T2B1_it_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f6cd543e87cac04bb97c78ce4ce33800f1e8ae515e52f5397dd77885121938f3", -"T2B1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5e97e214e32a14cbeb064e3d0d14831e53a4b6745109c3eef982ac29222ddd39", -"T2B1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8ca5adf4a5e79077bf229c2b3c483c4ff0a76726b6bb8fe3198e6a1772f45762", -"T2B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "b64465968b57ca2acd7f53700c4caad0cad196a3493164ea036188e56e447620", -"T2B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ec8fa3f6821bdf49f2da76f4c845fccf0d539bc43a1f6ff3a302ac1889435e7b", -"T2B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "14b3c12d2b4b2fc36e72710480280627ebd729c50e991665130c8055639bd10e", -"T2B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e76f2410b7795ae76c45ab716e2c4c52b1ddca51d72b6c1fe9e2106a79d28fec", -"T2B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "881cd6e2326bcd6d4358b7fe9d36d182bd1de6ee720fd947078d37458bbcc834", -"T2B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "7463d6359a997adc5cdb65a527c6de7a5169e955c52012a45a8ccd550f43f4da", -"T2B1_it_ripple-test_get_address.py::test_ripple_get_address_other": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b960c7b6e05f64804e2704fdc903b76f35bcd368253c0490ba7281592fb3f660", -"T2B1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "0ace5d536027e71926bc86c0e3ebd6ddcaa95750ff066d172d88ff8f909894e7", -"T2B1_it_solana-test_address.py::test_solana_get_address[parameters0-result0]": "88265572ac4438fda26ff8c6431f16f99f85026d5c7f6eed41ad094b61d0fece", -"T2B1_it_solana-test_address.py::test_solana_get_address[parameters1-result1]": "97b741f769aa677fe25a96c5eb5eddf7b7aaa1286e41ea869062f5314be4861e", -"T2B1_it_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4611b11d70d39d1fa4320a2e8de1c84cdedb94bd7ff50a76b2062a700c8d8af9", -"T2B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "9e2afd26651708e73152235378106fb9e2d393cae29165d1805b5feb4f0b6da8", -"T2B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8898f8f797f2c38413b1c279e6a5e70e1eec526cd00cb1f0a991cd44d94be5c5", -"T2B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "c9e5f1caf89f0351174d53bca4ee1f3dde4fe849774c7377c49a0c2329ed9f5b", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e1ceda2fce49b8ddb1f2251be880f8408e52da71faeed9a76acf18917f04fda5", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "560f85d51103ad5ab2d1cf0ef606a35da8e4455d99453b481887ef073a6b52b1", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d5186584f23bcfad4d396155f79e9c5d31b79f9e7450d6dc01be8ba7336099f3", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "8ffc138187edf2cecab6a971598b9a2e426bd1bb343c3632b3d3ed087240d802", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8aa7d2e1d68a44c6eb3127b61c5cb9ad93d66cbb97950c0a4a7edbafb696d325", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "55f983c925e037fd6e0ad7111e945b01c5ba6c71aea521fe6a6472261fb2a72f", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d9c2ee50dd935afbf4b03f98e64012fe65c5f24e5bd598b416e6cc56a9251b7a", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "17359d443efeff5446507f7f4e512bf0e2aadcd9e706be1ea3da5e3bfa6896b5", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "427877bfb97b97c20e67703fe93ea5bf3983c0edc16f2b7adacb531e518d1226", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "567bdc33bd18f0bb640529bdb73e6951815dbc47b4140bb3c49fb50356bf20bb", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d169510b42851a2224d5145943e580db78278bb64b77573da3234e972453db87", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "5f9ee63011542448d469bcfc23b2a76f0ef1b16fdc12fc32aba0c53d0eb8bb03", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "fcdbf2654202bb82c04c5067babe72dc13932a8b0bf2071b8f2249acdd765576", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "e38a651605e29de9dffa8a77577575ea4aa7df05890fe6d6cf35ed1e7ccc5ad6", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "1b8985fa396fbf953c5de934d3f93bc772af96d1109c770e89e1a6e5ce7b113a", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "2bd8f064ad2fe303d6235e924572d147eff7dadd8ac1a7b5097b1736e43e7967", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5ecab906b8d64cf018f1582d46b53a41e7a39c33fe2f24d155abfae37004b596", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "84b35b22f081a7fdf8c5d4a739b360ac38cfae7d3043118e243cf2b72d593454", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "2b3a66717c1b1fcaa0d31a6c5a8c918a2022d55a7ef94d48cdd324000c8bd140", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09c1d2e1f66e9741bea9351f2178c675de66aad1c799ff0fbc41aee204847964", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "07c1233fe792cdaa12707eaf79b65b2cc173dfe7aa25a716111d612e0689276b", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "abefca8c2e25fbd67b9d025a4b5abb69bbf440e499657d922409861ae23ee5f2", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "9fdcf301d35505324a30cf59e547b022f903f5cbff889982147bd602a484c12b", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "90b2d7094a9afb2d791df358432743a1f85b6630b422384ab009584acea4589a", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "44ef6afd4b90029c5279e138a9cf5d60f3887387c1c073dcd5ced5532676eee2", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "bcfddd5e11591748f766fae0390d8318ccedfe63d5d85e4404371879f9505858", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "2bc300ca0a8e1aba1accdd5d5012837661444ee73bab3960b747a1ad94e8091f", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "63eed1ab64cba7cfa85d98c57073138cdea1d0c7225d6241b97d02bc218c1ee7", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "bd68df7e5c8606f38d9ba5b9730e228d2513a2d7c858b281b00d6152e56e72fd", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "3352be97b393e858331df70619dd86141644851ca507bb21264f10f7e58f2823", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "40a12af7dcef0923848dc1a915d7767331ebb124a6ec271a87d48634f2ec4788", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "f6bd370c9c37653e8f098e712c385f8eb43b0b76deb4887147067585766f984f", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "17712eb9253aa8fe02954c24035e39a675149e5af8f595937b9cdbe10342d160", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "b55e60c8942dea463053bd854083da63adda8ed06d35b71a0236de96d7e69e16", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "b55e60c8942dea463053bd854083da63adda8ed06d35b71a0236de96d7e69e16", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "6fca8ad408ca6faa32a0da5358e5fc938b95b53b623b5dc584f01130bc953935", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "5122e547d5753da2beabdc54d377bfc0c77a7839714872012d8116068f5996c4", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "c1e1c44fb27b1f505ce1a30c0eccd5a74f2fceab3dc1f1397fbb7e45b0b4a99f", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "3ec8d300e2f40e8a9ab637ea59175ec493f63c1c9ff3fc0ad88b114daf9cc57c", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "2430ace39bd6903555c67f6bceaa6249edff4b9522a92accf4f0db757e48191f", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "428ff7d2d4f5987f90a5973484c8803f73d2b6e3b98a99a237721980ccb7021c", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "268907e6a9b3b3c9ad0c0a2d222787e5935b26b0d2726e6bb231fd29415d1084", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "912a2a9d72c257a7e75e4b6169f571419f68afc98e124cda13751d1e4704d14f", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "b5c89be1cc39f9b6627a72c6e9a172bc0691ca1d1eed7211a44494a03da68b5c", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "3a9fae05eb1dcbc8d914986766b68d0a252d4da914ad00f15a2080ad85b4605a", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "bb68d15daf84bb59adb520e273e764c7377e1477c6688dabf8c146bf56e0d899", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f0a1423d3afd19e6f8164f4192d423e071af39118541f3f52ee84e8a426d21a9", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "8423a81930aeb502a9649240ad2b4e271dd2baf39ca91735d8c16bc155bb77ea", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "9f8495a3fcfc59c126c386146b736715253366ea0241e34e6dca4c77b705e5e4", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[split]": "95222b1302df43710aba8559bd306ccd2f333ecd6093b355d5ccba849a23d028", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "38e788673ba05bc275ae1128ce97b36c2d33f2accdcb43b6b846f3808a30e1ac", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "4e2d7de1381f1eb26a1d83fffae5a60771a56a1c80aa795a5bfcc2155017cd25", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "88dd42e3768ee84f09e5ae74681333d87c7c5ef14cf2b0ff9dcc7db959f4854a", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "1f8b29160ce60cc5ad750f45acd12bd4239360678cab54eb0f4cbc0c64f55f46", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "953b5e95c35a4d82e8ba7d283dd35e71bee7c0f16ce3bddcb9b038dc23d3e0a4", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "566a496cadaaf3fbeb3b0de23b61242549f72d8d2d7df00513d199b9c673958d", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "e9560dc511d83d4088cdac82a4d18528f1e3746fa0a675c517951ccabd437149", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "02a3ad799ceacda49b2247be7b814ebc5fd32ce213201ca88e3aa47cabe160c1", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "918f508836eade8986a2ba88f4bc9f7568c2fd8429961dd384a3f3b20264cf88", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "94ef08635b838f1f2e9497003727c7266b012a041deb54f3829ebb742a022d25", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "19f8f0d0886d58bea7d9b29d15e51d0f95c6451175dc5d419e943e7fdbdb3602", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "61422ffa23f722cb60f997b9353080365650909a4df4f82e500b6ba062c5d850", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "aa9e0542bd643aa0fc4ad2d8c63c0551fef22775e46efc22d9fff6ba022426b4", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "7441d848723f279dffd04376e202b5e5a96f511f322478b68903b616ceded649", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "71786aa370a8e67c7ea221e3c4a780b60eef93e97f92a60e4503b7cac8f2d236", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "635e22da8845ae1651065cb4efb08530279f0a2a64765eb40830e48b388b89b4", -"T2B1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "1784dccc7fa6d9fd61a525bba7139098fc8e0bd523060836228b4486e9af9e82", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7787c313992849cf6beee4953afd20213105aaaf636d8cb9b5ab5d941f1cab7b", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters1-result1]": "58fdbc1aa71fd5a0d97e01b00f0c59bbc1f7734dd7bf4e8afdff7f22c10fb951", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters2-result2]": "337f16416c3380e0fc8e931e75539475ffa63e52252d94083dd1ab426fe8d3f2", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters3-result3]": "84a230ea5f70db738da7c5b706ff5635d2421500b0274a21929f3aeb616f5780", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters4-result4]": "25165e77e433a685e86bf6d82b1667b0258c47a98fa989441d30c9f297b2a0d1", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters5-result5]": "6ca043d24c1b31326c05c3c68330c1e9730dcabe9ee1fa7ca4007aa8a2758cb2", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters6-result6]": "56cc2de06970d7f5d1908711ec9ad6cc0e964d6f5d126f77a0ccb5d519b74073", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters7-result7]": "cac08381e7be754d94b1ea1f60c306baff406b354b5d6a70325541e383434110", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters8-result8]": "a62c85fae2bc134a2687aeb3e019b1bd55c01d7337ad1826d3f6be888b89d21a", -"T2B1_it_stellar-test_stellar.py::test_get_address[parameters9-result9]": "7c2cf7b1d4359c58a3710b49a12242a2c494a29b6010ece24163672e60df511e", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "af04ea81ab5dfc5a6e96bac4ccefd587192e12afed1386a221af5e28460d080c", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0444f7fcd5d3b984fadd9f5f01d2b90bf4fb3517b872421a67ce9eb87969f91d", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5dfab4ef9703c2c5afe696f93a728a398a216cdaaf866843948d0732dac7a2aa", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "31dc86871136d08da2da6c45adee8143a4091a71215d2dbcf54c1aaaa43a4557", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ee5db2d0b7fa43605a1f3dd8b9257136cce5979a9aef03d93c6365394c53d1d2", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "3ff7887140dcb51b662e5a7734bebc8a4c25bc965937a94d89e01b1258f91251", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "fcc0d607d9cb847696355778d221000d7ef9b1f42c21b43dfca8d4725cf51cb5", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "6d70533651cd6859f0e02057d627d5d62345e5815f31ee596123278ed5db16bc", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "e330799c26574678688ab61d056fe3ad84a488f1db03b091f9553658ae898688", -"T2B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c2cc894334cbf026669e72cff2ae6611b828a3c8851e7857188223d2d9fe5ebd", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "cf8c648f1245f0e9ede65078374619681d54b508fbf9a7532541f852ba1c131e", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9293c00c18ccb125fc0d12060dc7467dd9b37440708a3d650ad4d6c43b916c3e", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "ca618e31a3fe57aa9bde74a07cf83192266923517a4deac722ee98a7044bd940", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "844b16cf6b433592f51fe5d73e00784c0e1e1848852bbe9d42304700efeb9c64", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "7d18f33d82cf891a933166d9f0630c52ed5d238dd55cf9ade2c2557a8b2b344c", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "481fc9f67538df0b9082f614f56cca34cf8755e0462361aa768b982d20855315", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fe78a36263716003fa214f7849273888e6b29617587cf907e6b60bbe88fa90e9", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "59206078a879a2a95316704a4c6af31b9c3788923b6c9549db1ea2521bea99fe", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "4b243281049ea32b50edb1aef63acff40ea3d0e9ef87df62e0598d11acb47ecd", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "48d5ad24fe65a3a8047f3e84ebee171e0b1c073f8c4ad712ca7b9a9a46c038f2", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "5bbc98c719fa9bbce05460982b6ea62078d6ef91ea5249c7e4adc55e72fa4215", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "51a9ca5d69bad27710d47a9f396ebb4c8c12408e2c9a997c94090dfa997ba899", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "ee41420b0d7e36b8a75f913dd64321b271f5a4838fd0e919b1985b04e648846e", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "01dd90de9d24132591721663c7c1ac3b309a3c83990aab67d99ac396107877cc", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "dc70f5313ceeb59c2e8abebc79db9b5b23d8e5755ed321fb51000f5a65288eee", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "3aefaeb53a6c3f8c0718170c98be179497d17fc9f1827005702b01eb03256f63", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "7fad4ad197a2d2f1cbe57c55fd0e097f13ca923e249175d2c23536f8d2dab366", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "5306ac73645eba102a440630e2802ac0aaa30cdab37e5b2361d642c5934c8265", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d84beed3bf387ab8818e1a594716227294c9be40453ae05e7ce08a1a11d68b42", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "4dd89a7e03f243206f8f24a31c1c05bd91f171d3d188851c868b899c32ecdb87", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[memo_hash]": "63d16f2d84352581561413071955e4a869b199764f676878612485065458f04d", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[memo_id]": "fa9ea66a169d7e8036ecdec74ce60a438a70627aced8579ad695d3390d06dae8", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[memo_return]": "3c909b073cdbc1a9d9a097fdc3c45be76a4150b9ffa858a0a886aebef98e1fa9", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[memo_text]": "792b4a296975dffa2c4ae73ea275887f4e31bb677509cceab66be4d8bbb0c06d", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "d3f394b2f2a9c25e6062c454658c618216e22fa2f92c1d85d227496864bab863", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "0d5bcf329ca913e62ef10b2614114ee38a3da7e5126282bb54634424b8c9eed5", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "0a46c93eb5cb5ffc54dd1d73c44217d5126bd30a78dbf48e5946d723e01f4ea5", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "3a79068c0c548486b25f10c365ebb90a60352aac94b764b1f7c3f17c09639eba", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "68f5ae3d14a12da0ed285bc596b99ed9660d56f28f2f7af7f1dbd2553f5645bd", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "7fad4ad197a2d2f1cbe57c55fd0e097f13ca923e249175d2c23536f8d2dab366", -"T2B1_it_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "bab6285983c663e3c580465e3de58d4f79097b92ffe309be71d4f2f8e7cc0f03", -"T2B1_it_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", -"T2B1_it_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", -"T2B1_it_test_authenticate_device.py::test_authenticate_device[]": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", -"T2B1_it_test_authenticate_device.py::test_authenticate_device[hello world]": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay": "1620a525ef11ada590262bcef44104dcd4ea544f84b0f9b2f8b07154a175a142", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "db8190f29206fc8f6d8b07d3c7022353aa659c442d20896b5e6ed4b4293737df", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6a602ca64a43c58dab6ca6d48d77e18af3ff2fc59fd645383ade25e8728c3af1", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "06f9b3668d479cc9dabcd0bda63c9aca2e164b1caf8267dad7cef020f457883a", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a027cf0a08a704f6f16bbec08179403a02a5236071ab11884a57a146364689ac", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "feeef6b114e9c68d5182049afbaccfd0d8506331105de5e390cbc564a92465c7", -"T2B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "95f3f70c3c4d0aefe286636a60ada3ac121fc4a8b17c311d12306cca513b79d8", -"T2B1_it_test_autolock.py::test_autolock_cancels_ui": "fb63db25ce407643f04e78c73f871efb32a84fc0a1483edde83a186168ff809f", -"T2B1_it_test_autolock.py::test_autolock_default_value": "40893c04a7da0734bbcec231edc1b4ae604fd190ae9faeda29874bf1e6bb60b4", -"T2B1_it_test_autolock.py::test_autolock_ignores_getaddress": "aa2017c703150e346b347f759b62bf3702b77a07e7b251dc61558cc4d6743d53", -"T2B1_it_test_autolock.py::test_autolock_ignores_initialize": "aa2017c703150e346b347f759b62bf3702b77a07e7b251dc61558cc4d6743d53", -"T2B1_it_test_basic.py::test_capabilities": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_basic.py::test_device_id_different": "28148dd7829fb9d1cddc8a9da01f97925bf8c5e6d06b6b6c671b1aa0c1b53c9a", -"T2B1_it_test_basic.py::test_device_id_same": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_basic.py::test_features": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_basic.py::test_ping": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_busy_state.py::test_busy_expiry": "a43baa6dbc63e89d9a216ce7a48304497a22efdbb9a4f6428f235714ba32b808", -"T2B1_it_test_busy_state.py::test_busy_state": "2951b93f6ef4d7d5974caec932308e364bac56d52827e8245ef11de6e6c33a49", -"T2B1_it_test_cancel.py::test_cancel_message_via_cancel[message0]": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", -"T2B1_it_test_cancel.py::test_cancel_message_via_cancel[message1]": "6dae86c3d25fdc77e95789757750e41b183ccfbe4e2fe00908232fb98d806a8a", -"T2B1_it_test_cancel.py::test_cancel_message_via_initialize[message0]": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", -"T2B1_it_test_cancel.py::test_cancel_message_via_initialize[message1]": "6dae86c3d25fdc77e95789757750e41b183ccfbe4e2fe00908232fb98d806a8a", -"T2B1_it_test_cancel.py::test_cancel_on_paginated": "f27aad54a38eb7716fece2c7b94971ba5788ad9449cffada356beabf4707394c", -"T2B1_it_test_debuglink.py::test_softlock_instability": "7ca44316b13797bc9d41ab67cfe41c899ddee63edaffa5d07fe0938a6e1e5619", -"T2B1_it_test_firmware_hash.py::test_firmware_hash_emu": "1af7ba0f0782c919cf0db301a5c4862d972e633afca7d849598c55c751e25950", -"T2B1_it_test_firmware_hash.py::test_firmware_hash_hw": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_language.py::test_error_invalid_data_hash": "bd807f7a50dbb3423cb4a6da1d51d4cb9cc9583d89f69b93e7fe0264e9be7f08", -"T2B1_it_test_language.py::test_error_invalid_data_length": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", -"T2B1_it_test_language.py::test_error_invalid_header_magic": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", -"T2B1_it_test_language.py::test_error_invalid_signature": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", -"T2B1_it_test_language.py::test_error_too_long": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", -"T2B1_it_test_language.py::test_error_version_mismatch": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", -"T2B1_it_test_language.py::test_full_language_change[cs]": "f3870ddfd0efd0caabd429071eba98cafccf732a589a07eeace9b6502734ae4c", -"T2B1_it_test_language.py::test_full_language_change[de]": "b7fcd89dbf59c84218e81bd692ab76807e90f792712ed533ba0e22023af9c84e", -"T2B1_it_test_language.py::test_full_language_change[en]": "0d9c6c92b769fa46ae13bcc27e7e16a0293dbeabc12592f83a9075fe42064608", -"T2B1_it_test_language.py::test_full_language_change[es]": "354c9147029bcdba3621505220099b3a3e241b0405a570e161a4feea4f2e34e6", -"T2B1_it_test_language.py::test_full_language_change[fr]": "0f3cbf48f86b94c8edef935208e41429bbc5ff61770055118c1ae22d757e5502", -"T2B1_it_test_language.py::test_full_language_change[it]": "2ddf360b587607cf6643b6f72f90673399b698bcaf6907991faab36d39d74aff", -"T2B1_it_test_language.py::test_full_language_change[pt]": "4d5b708d18a151d6315fd0a000e2a0c18fe27fa12755bacf4de492ece76703cc", -"T2B1_it_test_language.py::test_full_language_change[tr]": "e5c0a15460798b46901d481bd467c0c1e05849b329268d46bb81d1218fc3e96a", -"T2B1_it_test_language.py::test_header_trailing_data": "09fcfff480555398ed8aec63ad3141a7e6dda37d935addd1e0fb3ffb647df1a9", -"T2B1_it_test_language.py::test_language_is_removed_after_wipe": "faf54ae3f5f800baae23df593b9d81a22351b6ed249c4e34b81ff15b2158a9b0", -"T2B1_it_test_language.py::test_reject_update": "96b815d4cac271041385c7cd155c1e52b60c145081119e6d6d01ba9559434ea6", -"T2B1_it_test_language.py::test_silent_first_install[False-False]": "2bc164388b73b2e6d010d602e123e660fa77ab4d21057e66a0e6ec0b369e99b7", -"T2B1_it_test_language.py::test_silent_first_install[None-False]": "2bc164388b73b2e6d010d602e123e660fa77ab4d21057e66a0e6ec0b369e99b7", -"T2B1_it_test_language.py::test_silent_first_install[True-True]": "4ac422ac6c2ef729ebc07dccb6294906d28ae9d0a3b9b146549d30169b462e7e", -"T2B1_it_test_language.py::test_switch_from_english[None]": "5947cce7634a715b9ad2cbb3fff2ba68cb8d3c5dd32723ea5225e5312b0dda34", -"T2B1_it_test_language.py::test_switch_from_english[True]": "5947cce7634a715b9ad2cbb3fff2ba68cb8d3c5dd32723ea5225e5312b0dda34", -"T2B1_it_test_language.py::test_switch_from_english_not_silent": "3e6c18d955fcdd914b4dd6756f962778657e9a51ac7ece3026ac65c7ebf1340d", -"T2B1_it_test_language.py::test_switch_language": "994a8889d07eb83c306644683dac47572f015704c111a8651149053bb4958897", -"T2B1_it_test_language.py::test_translations_renders_on_screen": "26f48e282f474c09323352755aa9fb60c585fc1b2b9806acb17775764065f718", -"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "8ec01f844fb632a6fb7522979c686a640c07a5353bb6b3a645cbde525411d4d8", -"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "96f381b0ee8e95fdba09e1948af3e8bc6889e28c5315db9bbda2e820bd2ae093", -"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "0fdf47f34f04c39d5f7a676a61d35ea0a99e7753045a78933c790c9d161ae804", -"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_msg_applysettings.py::test_apply_settings": "cccbb502b46e5d7e68de74efe0f8049ee4766d04d49d92591a4dee433395632a", -"T2B1_it_test_msg_applysettings.py::test_apply_settings_passphrase": "f2cc69b44d51e653dd7c9c206dfd775b34833e78e3ee51b99498fd3871639fd5", -"T2B1_it_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "89c7c427c7b15de0a353c94c871beef3caa60baabb16b574b6e180d6e43c4113", -"T2B1_it_test_msg_applysettings.py::test_apply_settings_rotation": "26d6550901310635764f2eef7d007200fbaeb9227c8befb0cdca5e080ab8e510", -"T2B1_it_test_msg_applysettings.py::test_experimental_features": "e1c48dd8bb5f7f19d3be94d1fc15dd76e9a1c12af66c5f4b3a2169e4f14f9f88", -"T2B1_it_test_msg_applysettings.py::test_label_too_long": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_msg_applysettings.py::test_safety_checks": "c447f15875f222ff12893689339feec30c2d83ab152354c04fd99be51b40d450", -"T2B1_it_test_msg_backup_device.py::test_backup_bip39": "ede5f53eb1fde58f07c4098e0b96763af96e9b3302e7205f49db24d279cd5218", -"T2B1_it_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e9988de3ef593ac1963fe914f70c13906aabc19d6299c0016d49caf78314afc3", -"T2B1_it_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "332e112345178e4a903faf08ea07e8be3029f11abf5f7e982413c5451a580f32", -"T2B1_it_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e9988de3ef593ac1963fe914f70c13906aabc19d6299c0016d49caf78314afc3", -"T2B1_it_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2d283a8f0a92f2e44f2580b963f826ea79476e61aa15b6c1ab810b6d9f202529", -"T2B1_it_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8510af6777550c685a9341fc0f9f1f1ea3d066594fcaf85f267f1fec5d3effc5", -"T2B1_it_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "8a704628795af23512414f9ceac567c4cf466abba2c311696a0585dd5eff1083", -"T2B1_it_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "eaa6a63f5a72f4c701a7d6e80edab2d86026fdec13a9328cc9591bc90fffff7f", -"T2B1_it_test_msg_backup_device.py::test_interrupt_backup_fails": "255d93ba49c767ae8a2c8dd00f30d10f608363743b28372aad5f9d41d01a9991", -"T2B1_it_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", -"T2B1_it_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "14772eb203fa1b537e56d3c604307d2d6b4a085988e89df3ce43a6de05b4c292", -"T2B1_it_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e59c861496561220277aa8dfad12d041e52f0d57326e7440c470d27fccb98705", -"T2B1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "3bcb71795f8941a819bfdcf88960e6d48b8517a297930db3e0cca6abc94abff0", -"T2B1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "066d38b857662ad230ff48c6150d11a702e8b43583a88747dc8914d27b828ce4", -"T2B1_it_test_msg_changepin_t2.py::test_change_failed": "12b9b6e9788ad9a38a664e3ecd1d4c3798b029ffb8decc23bbaf5dac18cdbf21", -"T2B1_it_test_msg_changepin_t2.py::test_change_invalid_current": "4566ec9383ca58ae15cc243c94d9112339c969363d8893c054c90654c62aa5d0", -"T2B1_it_test_msg_changepin_t2.py::test_change_pin": "6b5d47d9f5f91381459c8acea02b4fbf017f8f1ae8599c714cb0fea1fd37ed4b", -"T2B1_it_test_msg_changepin_t2.py::test_remove_pin": "867c038818b0eb2b7715200342fb6c9b4696e1df1cf6b0ef1c38a7c6a9eb8cdf", -"T2B1_it_test_msg_changepin_t2.py::test_set_failed": "636ab41389b8c0ab77dcd841b5d772424b8563b8fd41bb03f46ae3b74ccaebe4", -"T2B1_it_test_msg_changepin_t2.py::test_set_pin": "8916fd50eec39190ba1136d8a88a14f67f53d96ccb5241cb1597e2965892a7f8", -"T2B1_it_test_msg_loaddevice.py::test_load_device_1": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", -"T2B1_it_test_msg_loaddevice.py::test_load_device_2": "7f3e10bccc07970416b3198b6ab0409f678c32070a8028e35ceff51f30267ed9", -"T2B1_it_test_msg_loaddevice.py::test_load_device_slip39_advanced": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", -"T2B1_it_test_msg_loaddevice.py::test_load_device_slip39_basic": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", -"T2B1_it_test_msg_loaddevice.py::test_load_device_utf": "38beabbb411d83676ea7fb415edacf5373115dc8611fab88fd297611a05c00e4", -"T2B1_it_test_msg_ping.py::test_ping": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", -"T2B1_it_test_msg_wipedevice.py::test_autolock_not_retained": "db662f1c2efc3aa108f79d03412c5f2f571254058d181cb1de1223b52485cd0f", -"T2B1_it_test_msg_wipedevice.py::test_wipe_device": "28148dd7829fb9d1cddc8a9da01f97925bf8c5e6d06b6b6c671b1aa0c1b53c9a", -"T2B1_it_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3d58a61e52062926fff5708cb4f106e10357b38e8d2d60f723ad765600f92272", -"T2B1_it_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3d58a61e52062926fff5708cb4f106e10357b38e8d2d60f723ad765600f92272", -"T2B1_it_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", -"T2B1_it_test_passphrase_slip39_basic.py::test_2of5_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", -"T2B1_it_test_passphrase_slip39_basic.py::test_3of6_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", -"T2B1_it_test_pin.py::test_correct_pin": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", -"T2B1_it_test_pin.py::test_exponential_backoff_t2": "9403b96a25a6bb91edabe9348e2ef008439a871cad918563e49b09c06818b2e1", -"T2B1_it_test_pin.py::test_incorrect_pin_t2": "238fcf8c10411bc03b1036538fca473df070daabf29f253af12fdd058753f2ae", -"T2B1_it_test_pin.py::test_no_protection": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_protection_levels.py::test_apply_settings": "987178acbe3ee23cc515ec3f4f400f4fb45f46736e9e30ed4caf3c8574f5efa2", -"T2B1_it_test_protection_levels.py::test_change_pin_t2": "86aa1e9017c224b0a9047f1f5e34317cb5f648a5f8fbbe73f371363553718435", -"T2B1_it_test_protection_levels.py::test_get_address": "50fd69b07068ce124a1e49b9247a1f447c67c4ae8fbd80f09aaa49d25139ad1d", -"T2B1_it_test_protection_levels.py::test_get_entropy": "8c4d6ec3bd1fe2eddc4cc57c9b99773998662811d6d51c007e89879a2b3045d4", -"T2B1_it_test_protection_levels.py::test_get_public_key": "50fd69b07068ce124a1e49b9247a1f447c67c4ae8fbd80f09aaa49d25139ad1d", -"T2B1_it_test_protection_levels.py::test_initialize": "bf2470fa918e8632ba457298eea347b3885b1fd2b42c99f4f41db1b8fafef32f", -"T2B1_it_test_protection_levels.py::test_passphrase_cached": "b17b00e462b6a02e4c42dd229c17a6a35925e806b9f7289ebdcd8fbf1d64961a", -"T2B1_it_test_protection_levels.py::test_passphrase_reporting[False]": "59a82cd7ec5edfd68ee5a3957014f8c006ecd7e0c303549a6b5abe92a25e1c2e", -"T2B1_it_test_protection_levels.py::test_passphrase_reporting[True]": "6774de46569a5a0ab6b7708d79927b41b017e1b42b17c069ec38be014ead184e", -"T2B1_it_test_protection_levels.py::test_ping": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", -"T2B1_it_test_protection_levels.py::test_sign_message": "279e75aaa3a4d7e054ce467001a07f7d23fefd29c7daba89de6473516ad668e1", -"T2B1_it_test_protection_levels.py::test_signtx": "edb7689d63cac4bf2be34f53c71bd857346d2bac7f190c80c901ffd3ec5ee938", -"T2B1_it_test_protection_levels.py::test_unlocked": "b8952b2cdd4094bce773530ce6de9becf3c65fe57f585bdcc552268417e92800", -"T2B1_it_test_protection_levels.py::test_verify_message_t2": "a420437b1676caf57f92c624c68a4834c76e8952d049bbad5d5f47057c9a7547", -"T2B1_it_test_protection_levels.py::test_wipe_device": "405ae74680f3a50811085ad0eaef962047e78ecb47c7391a4090285fcc0fd5ad", -"T2B1_it_test_repeated_backup.py::test_repeated_backup": "5afdaf9df261bbbcb36aed231180a6d88686ac327503b02f8e236e140157a064", -"T2B1_it_test_repeated_backup.py::test_repeated_backup_cancel": "acfce90d9e19f9c029b617592608422f762ce9fcc62f732b35484939a3a2fba2", -"T2B1_it_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "5ab1ddb85653bd72442bce97283d8a3af41de758de7bb107b2341dc3992036a1", -"T2B1_it_test_repeated_backup.py::test_repeated_backup_upgrade_single": "021fbfa7672632f7c84bb5a8e6ee1be8daeed842be2484ce55a052c35d4a1ea6", -"T2B1_it_test_session.py::test_cannot_resume_ended_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_session.py::test_clear_session": "072582faea8fd594ed2d2592c99a395a499b64dee8d2646a600c2053a4f48a0c", -"T2B1_it_test_session.py::test_derive_cardano_empty_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_session.py::test_derive_cardano_running_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_session.py::test_end_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_session.py::test_end_session_only_current": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_session.py::test_session_recycling": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", -"T2B1_it_test_session_id_and_passphrase.py::test_cardano_passphrase": "9bc407cf9c5c80cf5f252f10f42d8dd077a62880d43399bd05f10eac8a584a7a", -"T2B1_it_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "887a43198847d55adcd4400cec6a8699bb3fcee5b7df47a8ad56790841770e41", -"T2B1_it_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6784ff420bf411799d516072392ad915be93afbf090218bace8081cc4f717d57", -"T2B1_it_test_session_id_and_passphrase.py::test_multiple_passphrases": "9b3bded72a61c6bb7274c2af89383150b8071b196be1ab5b8e7e73eb25ee683f", -"T2B1_it_test_session_id_and_passphrase.py::test_multiple_sessions": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", -"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "8ea756961ca2b1f993b9b0f5b4a7cac13d918be6a0866a9345c18eb5cfd93bf0", -"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_length": "b33cb0cfd7c1080efaa0161ed871dacc13ebae87c3712d3fb50a1261b4e703f1", -"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_missing": "b17b00e462b6a02e4c42dd229c17a6a35925e806b9f7289ebdcd8fbf1d64961a", -"T2B1_it_test_session_id_and_passphrase.py::test_passphrase_on_device": "a1bcb7017dddcd16b6aab5ef7e07f1890f189fe04e1fd2f325c9b1b029b64930", -"T2B1_it_test_session_id_and_passphrase.py::test_session_enable_passphrase": "e9dcbe61b87c365d27423fa0432cc30ba2d2f997376ed3d17ea355f67aed2569", -"T2B1_it_test_session_id_and_passphrase.py::test_session_with_passphrase": "5cb9b9e0aa76dcc950ac70ad4f990e61a9f769c2a28d0474e1b615d02a87ae3b", -"T2B1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2837d2ef936932e393fa0e06102757ba5a61bd32967c60871412ef645557587c", -"T2B1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "55acf45370f9a2e9774ee133fe31af9ef4cb2ea37fe0d4cadd1900966b6dfe57", -"T2B1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "19772979cd4e114835a71e7b0c3402230a3170b0d56773ea63c145e8c921d62c", -"T2B1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "1b37766efe40499b17b1012c3e8ed9e19454b3ca765084f187e3f7a151a6759b", -"T2B1_it_tezos-test_getpublickey.py::test_tezos_get_public_key": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "a9d4f3780df68937d7fb3e3546a0132dd6d6fa9e8bfa4b667e4983fdae66c5b9", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "6fcd5ec7fa380d38aca8151c43531c39fcf7f61ecbbd9348ad917d154fdd05e7", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "774cd22e4efe79ba13f8ef1afb8dfa2341fe45a4112bb16f108615286ea13872", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "94bac677a2d3ff555f506d14b5980dc06662356bbde611809ca985635c9df5b5", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "0eb309cee6fe2699c8d0d7dd4e680be631f316e3c367aa535b1f3fe3f51e5315", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "41817b010224564ba477988fdebaddcc925aaa7580c23a7762f41445e115a093", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d04d3cea77dde3f232f5de0807aa8f2e411c4242954fecaf63ca0f4fc51fb703", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "f9a37072c655ca09052828575773b8883792a8f11465ca4ed124d250311b5a47", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "0e6896a3a24c00f2f79bbea670c813a95bdd89791da08bc9b567e863ef87f8bd", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "63e5f1f47e407a9f3b049e8a1860332bf59ccfb92f07c59c5607b1294123fa27", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "eca3d65297c9e11fb3d2855297807b13148dfc53573d8b34fa585ad0e76a603a", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "d18edaf84ad19444044113db0496d3b29dea29ecb2efaeade9a25625d5b44355", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "25e4dbe4a1c1479f488d5c949c46255af92dcf074b86814cdfa379c1c0371951", -"T2B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "c8d4dfa67b3acdf69cf0cf5ee0e7dde8679af85f63d92bc7cf524e5c2e25fc43", -"T2B1_it_webauthn-test_msg_webauthn.py::test_add_remove": "d23d22bc0caaf6bbf41de9e97bcd9a02a4c9e79b18f10e9489b8c0187faffe85", -"T2B1_it_webauthn-test_u2f_counter.py::test_u2f_counter": "824b7127d293a5159443b473b04f9c4a1ac569ebf1a28de1dbf6fc6582610943", -"T2B1_it_zcash-test_sign_tx.py::test_external_presigned": "b42a33e6f91b6ff21325896a3174f10a96570224f207630f0a5554d2faab5395", -"T2B1_it_zcash-test_sign_tx.py::test_one_two": "e0ea84894c4cb9432cbc430acec4efbe128ef2ac781796b190b02456d06e0cec", -"T2B1_it_zcash-test_sign_tx.py::test_refuse_replacement_tx": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", -"T2B1_it_zcash-test_sign_tx.py::test_send_to_multisig": "eee6da7ad8a81c8061e7b6250000977766f333e2ada8df0572e02c8688b77c1c", -"T2B1_it_zcash-test_sign_tx.py::test_spend_multisig": "5b18c8eb6fe7201715c0627cef79a218c776e553e42686a9b87d3d733a05ac56", -"T2B1_it_zcash-test_sign_tx.py::test_spend_v4_input": "c04724d95cd5b23703d1dc7e2030bb7f4bd1ea028b2961841f4736106377e68e", -"T2B1_it_zcash-test_sign_tx.py::test_spend_v5_input": "f644a93601da9e8c03c8dd25ce3f963005bc63286d0d52ee3a23a761b12b863a", -"T2B1_it_zcash-test_sign_tx.py::test_unified_address": "53e20400c8fb839ccb28e4d74ae77eb89292bbea3ac7534c1339db19b01939de", -"T2B1_it_zcash-test_sign_tx.py::test_version_group_id_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", -"T2B1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "3935473a30a4122bbfdb6abdacb1c742e57413ee36f192c77bfcf5679c7c4036", -"T2B1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "073e785a513b6b24c58f10224cdb844f405f028a2e6d68011283d979ced3a82d", -"T2B1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f1c0ea9306c0a008d785718181889c01d7ac9b48394614d3e3e4fb11c2bea008", -"T2B1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "20df3137e058c9a7407f568a8516c79965fef1ca8bc8adaabd8812a311c10b09", -"T2B1_pt_binance-test_get_public_key.py::test_binance_get_public_key": "7c5ec0b56007bb7703cef920754199378aed389a06b7843123e87c58826347ce", -"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "0330bff94e19af4b503a2abadcc6405adfafb4ae6e98a9faf42a7a3ffda8c9fa", -"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "898ffbd863b893ebc95f36435c088f5e4663ad15a316b7b77dbbc8dfbe638135", -"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fb4d1ddf33527075717b8b77141392da4258655068ea235640554df2f63b653a", -"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "0330bff94e19af4b503a2abadcc6405adfafb4ae6e98a9faf42a7a3ffda8c9fa", -"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "898ffbd863b893ebc95f36435c088f5e4663ad15a316b7b77dbbc8dfbe638135", -"T2B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fb4d1ddf33527075717b8b77141392da4258655068ea235640554df2f63b653a", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "0c97dc250a805277b45b40e9aa8202963043ee5d72622692cecfd701fb9629e6", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_get_address": "a8f2793a33fc00c7e9abfe5e49e97beb99045b55aee5e1bd937e97c5c409aa1a", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "bbdfcc775abba66f5a7362c06e34a04cf1821f99fb30ea9d36ccbeb5de049df8", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "0e9a453ce48e2c7ef93f60bac29a0ccaca94d2d4910fc184cbac6a8d6bb85290", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "52c25b83d93fb27c7c082ec383a7d6b73a8c05c5f113cfaaccc374ce3e13b3bd", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "52c25b83d93fb27c7c082ec383a7d6b73a8c05c5f113cfaaccc374ce3e13b3bd", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0a9cd1f9dba86ff0611689a747a994a7c37839aace0f7d981365648c65c16de9", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "4ed06c6f999111c6ce2b2123c9124e9fe61f71f65a4bfb7bd95e7249ee7d98bb", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0ae6544425abef3253ef406725a308f654f7c69b492b8e282e2e372bf77a5635", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "040427131b00f539b99674d35850e984a5fd524b03491be28a0bb97b77ebc17d", -"T2B1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "040427131b00f539b99674d35850e984a5fd524b03491be28a0bb97b77ebc17d", -"T2B1_pt_bitcoin-test_bcash.py::test_attack_change_input": "afdbacedb329d4856f7e03fb96dace8fcf32f028af8125e8a943c4c879775efe", -"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_change": "7bb3876df1177ea18a44854b26edafa5d1aaca7270bf844e5bfc56e3d58c81c6", -"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_external_presigned": "8d2a2b953145df525de202e46755beacd03c02ab0aaa857a87ca9c275409293e", -"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_change": "9c6b5da8085411ff3c1ad86dcea8c8281e6f76ed165d96edf8fa9b6a746ef0ae", -"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "59b88a16e7b13b363bfb6af442b6b48c16d768057e8c1d94dfd6f04ca15ff2ee", -"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_nochange": "93fadb1a8db77c06b9565b24a87ebb64e2705101d9671b5bb3528176e0da9a34", -"T2B1_pt_bitcoin-test_bcash.py::test_send_bch_oldaddr": "482cd6066283a89ffd22fea9c76879d064249b5fd95a1b63f1f3d608ccc423c5", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "df593ce85f905611f7d60835c283a5882b54d53055c24d71768404cab740b1fe", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "6f0e3344ed6184df14aeb69bd08fcfe5a72fe03225d62d8f65fa6619644ad709", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d02ec6bf02e51df060f2cb7aa020d00dbbb091262a74b9623e8c18c83f85d036", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "cb496ccd6b0f2b6ecb91eadb370c758d9783da01e7e5383cc2bf0d978a31dbd7", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "2abaf209e38b74c84b97c3ffa84018b981cae6c21676967eacaf94f2b1c34215", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "bb59f0f062072787d51cce53021b2c633080bdd06b0cd78a264f8e284385f363", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "2c1812588891af1a5df96a672a0f1f07c4586206e58885d8b03443a65c50a535", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "b95376f9ab66ee682a637f1249ad442062d01f22a10d75b5e87db1de1c036f0d", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "40fe7742a46216b43ddf5a0150334c8486eb4cb467173d121ca4096f923eaf09", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9146d2fbb17c022cb6229503ee7e0997438b32e2e5d7ca2014be50b00bb5760e", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c2fb89961efdfb11bf08698d8868929017f79ecce3a2a85b19f537217e20bd3f", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "803f8860368d17c7791731d1eff2554c6088c5da7381a9e0587cf5187baa0993", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b1307b159816fe71d98ecb5726a28783136b262d6225522c478d0fde4704dabb", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "56c817d8fb3bdf846247142d1437066f9d36b10ab1482d61a85a39dfcf43d9ab", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "ab1b0d058fa80584de481d7e5fd6619362ca49552ae87714fef98caecd060a3a", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "18aa38b86f9096300464e5b3aeb68fdc611a95871c30250f484adfb9c91a29da", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "df593ce85f905611f7d60835c283a5882b54d53055c24d71768404cab740b1fe", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "6f0e3344ed6184df14aeb69bd08fcfe5a72fe03225d62d8f65fa6619644ad709", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d02ec6bf02e51df060f2cb7aa020d00dbbb091262a74b9623e8c18c83f85d036", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "cb496ccd6b0f2b6ecb91eadb370c758d9783da01e7e5383cc2bf0d978a31dbd7", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "2abaf209e38b74c84b97c3ffa84018b981cae6c21676967eacaf94f2b1c34215", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "bb59f0f062072787d51cce53021b2c633080bdd06b0cd78a264f8e284385f363", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "2c1812588891af1a5df96a672a0f1f07c4586206e58885d8b03443a65c50a535", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "b95376f9ab66ee682a637f1249ad442062d01f22a10d75b5e87db1de1c036f0d", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "40fe7742a46216b43ddf5a0150334c8486eb4cb467173d121ca4096f923eaf09", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9146d2fbb17c022cb6229503ee7e0997438b32e2e5d7ca2014be50b00bb5760e", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "c2fb89961efdfb11bf08698d8868929017f79ecce3a2a85b19f537217e20bd3f", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "803f8860368d17c7791731d1eff2554c6088c5da7381a9e0587cf5187baa0993", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "b1307b159816fe71d98ecb5726a28783136b262d6225522c478d0fde4704dabb", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "56c817d8fb3bdf846247142d1437066f9d36b10ab1482d61a85a39dfcf43d9ab", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "ab1b0d058fa80584de481d7e5fd6619362ca49552ae87714fef98caecd060a3a", -"T2B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "18aa38b86f9096300464e5b3aeb68fdc611a95871c30250f484adfb9c91a29da", -"T2B1_pt_bitcoin-test_firo.py::test_spend_lelantus": "2d4dbfd0820ceb2abccb1792b92495206398ebff7eceb67a6a1c15c49397489d", -"T2B1_pt_bitcoin-test_fujicoin.py::test_send_p2tr": "6be9ea395962e47c42622e870f7e7d745287104c66c200a8a5309f968e809636", -"T2B1_pt_bitcoin-test_getaddress.py::test_address_mac": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_altcoin_address_mac": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_bch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_bch_multisig": "eb16ed286e1e53873568c0e99c4500c55c63479f50dd44519e441679eb2b4c59", -"T2B1_pt_bitcoin-test_getaddress.py::test_btc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_crw": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_elements": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_grs": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_invalid_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_ltc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_multisig": "e9a2ff79073e1af139bc8537a14ce1be00e911ed0963f02f29ddcdad5bac5065", -"T2B1_pt_bitcoin-test_getaddress.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_multisig_missing[True]": "d5a1a13aff417cdd643eb2d593b7c7065bfc89515f6f03b092a55a29984f6d8d", -"T2B1_pt_bitcoin-test_getaddress.py::test_public_ckd": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_tbtc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_tgrs": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress.py::test_unknown_path": "b31cd47c101d29514c7e585bb7a29a4c0fd6bb8f19f81d7d42ad8c882791e1bd", -"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6f799769ba10abf7d9a1aef5f957f54878665cd5253f9d69c95cfaa86f06af6a", -"T2B1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "d12f1fabae2ab62fa2bcee0aab909eb83e5e78da68950cc9a0035a59c6810c8b", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "0997a221d1a4395d5e6118ad7e3d33762ebd9d3da2552131102f4711d2f9cb47", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "480311aa0b450638ed4b87a84d49c5c7e532144dee3e0ccb2c16cd2937f0f199", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "f6d2e461111e7f8fa64273dd31d728afd4038f00b8f87efbd733043ae5d743ae", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "985004054f9e99cb7c15a0076a4de0e90186392c012a6aacb306a9d4961604d0", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "4aedb3cff16f5d4a9ae16e69e3c193f5746baf2c5999e08b198b87478035f06e", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "d94f9dd343d5f1a89cb8c2e48c4d1e8d1100f8968409cd287eea6fd5f5b6ced8", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "2d001712c09bdc058c372ec35aae9a793a1a53d079630f34857088b9c64bf66f", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "1baffc48db7dfb7d31b42e19f7fd0b13819f5ccad2a8ea5ad4d0ba8547a51060", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "ecad20a1a2418066bf722f02ef25c4cc3578f7fea8456eb38cddef555fbc7dbb", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "1a6fe5f4c87b7585b9b9887ddbf56d6e0737e3d2284bf0d24faba6a459384a53", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "6f4b7f477f2daa48d0c3a7d8c7771e912180bef918be81016736a8f6f88c9d8d", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "c64a24a114ef01d5da5b37656959225560c1cc8f48697389af4f5150c00cc24d", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "0808748b7480946e9d3d541ebdd2bc4e618223e8aebbe3fbf0b2a58dc12b4986", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a9e84788206da325a3bba2c7d27f6d3e75dbc93fa81fed05f31bc08538db0742", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "016e8cd42c9307b616d155d3ff063de22710c29bb2f5a908c99b83d774687051", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "32c3f48070c4c7997c28f6c914fc11487032235afa50aa8715ed514b1e8b19b0", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "1e68b8892bda9c64964b940d437a698e792c84fe5ea9a0e722390babc11b54d8", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "5988bed4204a0ca224699b93b2fb958b8287ee47143ee1bc0111665fc5b59d8f", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "efe4a77e0680dec578f0cdbc3e2bd199452391495ae7a9e098e0d32c880dcfa2", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_15": "53a937807d399037ae79de67b77817518423f8b76db5c36c0f2ba939798aeea7", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1b59dd844714691948f43018e7d439ae3b97c1b7d488329b0ca5f6f1b94d96c1", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d68824fc528ad954b5e70a979e8c973ebb5b726502ebf27117c4b5086f6e707f", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d68824fc528ad954b5e70a979e8c973ebb5b726502ebf27117c4b5086f6e707f", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "fcb2f84461600f607434fd39b66f06f49f89e718c8c3a53483b47279bc9a3bb6", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "4c74a456f0195f1cad1ebc1f681f2b7df5b2adc5a431893adffd20c979a115dc", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c18f9d08399ab23c9c062249f35702f9da3161e8e123e623cb5a4ecf3928a801", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "889088ec604c849931e1bf364733c82b6dce6a77bcac437f9991b64b7a8f0967", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "d53a2d2b6f6d201e79ec8540573b94886780459af9a5aced319504881a993fd6", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "7a01ecb8232085f8bd4edf913f33949b4c3054cf2b9291f9252dda13d0bb837b", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "e3c0af36821932e05db51014c0e2ad512f2f3489c2d231c96a3db5cb359663f1", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "87cfa0e4d4fc0777402f5644ea6b3a7abe117d2b4c18ed26ea08a97bd7a59846", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d7606c2273162fcf4151e15296858e618369038dcd4b141d074a26b52deea2af", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0baae1151165fdc92295c4ac0753661dc945f54c700cf9388a8a49540dc19d7a", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "583a7f54d36c97b1e8d80ba06d4a32c613ff98d786cbbbf7d2dd07b95c254035", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "7adf3603b3acf962ca93ec953777e5d68b76535cca06c8d157aeb95c37f0c07b", -"T2B1_pt_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b3af5e0326b2b8533812d0ae8d4460d10a8142402a4d3f9c1685f590234b53f6", -"T2B1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "561ee40dda42949d16b8a2241aca3a6b6450c6d59302704fb0d5f3959da746e0", -"T2B1_pt_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "18859108b5ba46db83e5bb314a2f3311503c2ed65f8636ed30035bbf3cb1f2b9", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ce4b33ccb0bba3205940e8d30cc07528db16ac69f95ace40e28c66b857fba57f", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "91fb421b48401ddcc654af0ffcf1dba9c9107533340d254cc4f724a402f3440a", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "64f36acdd35274a84dd215711f70b6bc5c139bc353f601bf86011aba3f072fc6", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "6bfbf55db9f97922227cb037cb601416f7638e8ddeef1d929cebfaa699c21ed8", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "46cb33493daca5de067e1f6896bd239fd5a9da65280be317f2a3aaf3c818cf0c", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "1b66998818ba77683b6e4c3a8cf0aaabe0111287e4a77c2406a10cfa25fd8df1", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "d4dff961c6e5a7f95688d0716b30ad83363e8d6004e22b88b836fabcb83b776d", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", -"T2B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fb25f768d365b68dac90d20b9d1266546733c2f03664dfb1af33d4bba8efd691", -"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey.py::test_slip25_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_grs.py::test_legacy": "3d40df4ef3469225fe59d80fbb0bfd13e6716ae461fe6e987d98f9fc1a1affcb", -"T2B1_pt_bitcoin-test_grs.py::test_legacy_change": "8cdc2b20f5612b958e9c5b20906d271eb38ebd24524d049e84e03a594d464e80", -"T2B1_pt_bitcoin-test_grs.py::test_send_p2tr": "1371cfd505dc215dded6ff55c3e202fd9f34536e0b000e2e55687995b1ab1a03", -"T2B1_pt_bitcoin-test_grs.py::test_send_segwit_native": "c0c1bdf00d682166ca190ea7765a6db72787627967da98bba49f82e9ef766607", -"T2B1_pt_bitcoin-test_grs.py::test_send_segwit_native_change": "f2377e8bb2aa8617f45ac45cee2880c4e7a4c9fb64ba1c9ad80ac4f243a1189c", -"T2B1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh": "c2a6ebba6ea99d3589740f93c830e81350373a215ab31628d78e4195f8bca6a8", -"T2B1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "c865fc3a0b53bd761107eacd8a22038f936a37a00c6ef9204a591899ffa4e1e0", -"T2B1_pt_bitcoin-test_komodo.py::test_one_one_fee_sapling": "32bc4dc82aa8e8eff19171f34d14d9b8af65d239265cabf51a09bbbd305e5ac6", -"T2B1_pt_bitcoin-test_komodo.py::test_one_one_rewards_claim": "70cafdfd9494e4bf827553a73561646ccdc711776b40aa3fda923317a6b60422", -"T2B1_pt_bitcoin-test_multisig.py::test_15_of_15": "2b2de9c6212402f4729769b5cca651133eedd51a6ad81604768869c366746562", -"T2B1_pt_bitcoin-test_multisig.py::test_2_of_3[False]": "e6f974bcd263fd75554a3874afc75502a30f37f24c29b8c179b342124b56ad2e", -"T2B1_pt_bitcoin-test_multisig.py::test_2_of_3[True]": "6ca6e12166f8c1ac6ac516af261860f5fa8205356caab4205450e8848ae7cdc8", -"T2B1_pt_bitcoin-test_multisig.py::test_attack_change_input": "bc5415246696142b850ee35e1ad81a313a848038c279f9b2aba1fe8edeb785d7", -"T2B1_pt_bitcoin-test_multisig.py::test_missing_pubkey": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_multisig_change.py::test_external_external": "409d7682d9762f3c4c349ac24531ad65c9585f04b485d5392e91e78494fa3b28", -"T2B1_pt_bitcoin-test_multisig_change.py::test_external_internal": "0895887087fba9925ebb8b41e71559d6b56d51bf1fe4aee02c4be6f4de539fd7", -"T2B1_pt_bitcoin-test_multisig_change.py::test_internal_external": "648c61c7ef45b2d0fbbeaca4a28724699a73e750f979b9730d6bf13ac7dc5b3f", -"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "5b43737722aba2ca2c9fe930c1cf3683bc8d48c89520f6d0677a782866e12b4d", -"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7a6f24334acff5fd02426b0ea31c316652e6750cff285b833f5aff53fa34a5d6", -"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_external_external": "27ec34ba67ebfe3e744af8d5466d34fc3a5eb42fafa0f97ff2bffeb1f90f5388", -"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "f0e5c708bb41d8a944af2f6983b4a1ffe13dea810f81d5a99d837e90f0303671", -"T2B1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "6d350222a57da2473062b6404888be141195b4fa96f7ad86215c2406e0f31f77", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8e0417d4a0e42e57ef8f35004358402cb157b1450f3d685587c4acffefbf8501", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "d0b762d34956662f825b0254611e39c60d488855e9f392f54b1d828c481b601a", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "dec8c89ea199a4a4df43566cce72128161c8c3834a670eeee5f216cc0ed927b8", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "428a0635ff0277a8aea13261d59ba9a093439b4d2a4754193dc70667ee8a234c", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "caed87d1dbda6d7344ee71f7f96df6032f58d813bb307378243dd4a87cfee50f", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "fcb137d590e1cbcf29236620aced3b05e17af9863b1e4280920416b0af6913b5", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "af915edfdde340cedab212e246f1f8fa63ff4f5e84d4bc296a6f848fa59920cb", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "b2e40c7a90e878d9b0d1550fac01b440a978971816e76f811759878ad6e35164", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "cbdd7adfec30773dcac196ef5c5e7e861c8b8982964c9c4e6ab938a316dd4b36", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "ad460cdaee0fa51a831b8ababb1161ddd136b63d7400427d9edd3cf3954b772c", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "7bb098afaffc07322457de22c66a11e036b958ed5201387e33d4c48818eb1fb2", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0882f19edc37dbb80b2547e982ac71dd16ee7c4ebe3addf0a0d4f15ce2b04350", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "8d7dc19261f6f76313dd0b3fc08c368b57bab212fe6a2deda5df09f4ece8af83", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "951138b42ddf27f68111c49c601c613f5a4d29befabc4e9270af744d9f517c92", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "fb5db51ec50318388626e8e2e9114102049fd91ffceb7ec0e2e504bb0b310577", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "df7a9c8ac6e26ecbabd5ecd39e4dde4da2c87462cc7aa1d841da40b62dac6f95", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "fb89021df12d4477f501714ed02e160bcfa651c71a4b22aae1c39c025ee498da", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "1ab744f25c1c83ef0913cf88b34be2079fa51c90e802ba36ea9d7c20908fcb06", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "a92381eb8066b149c2ffe05368b89afab498a21833ff3d0f1ed45dd939bac93d", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "84644e9c64b5171d0d4275c35edfbb61797c583334e38323b1c3616b44b73882", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "72224befe8befaf4bb9a77f471954dcde444e42040af7887bf1b056e3a8d2744", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "6dfd8719aea175ad7ba4b78f903a6a7d00b35704a81b4fadcf694b6168295ef1", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "5f076f4b5041d90b1cb9f420bd60fd9a7650b6da2b40b8117ddb49aee35f095b", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "7893eb29a5fe45b26b8d37ddcf4acf1442e2eecfa67d065e5b460af350de4be1", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6a405a1f5fc2fc9baa21fa2eb3ad6e6d799ed9d0c346057bddb2b014a66a27b4", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "27cb13d2853cd2fcf7d326ba29033e18c4ac16c2a213f280f4e91187da4ff26d", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "80d960cfbf87ec058a22878c8a932aaaa47ef99a24bf21d657f17cddf922aa73", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3f941a9e0b90004f4dbf32281c81e374172abfac050cd880f8390c5944c33ad2", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "12241ed55b7e5f0c92508382266801cd00f5a85056c2447c9a1820b799f4b3c3", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "6af61ce60676964349c44e5e19276e1f87900cb6a913152c2f97f938376baf3f", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "c8c3d9929d3a062a0eb12321e1a49cc288c8937919e054b39cd3c8930400a3bc", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "cadbb52ce1b499743e8307301f4ac298865cf0635f722cd3609521ebdac5449a", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c8892902350f2134d5de4b236f50afb55516c57b6c46c76a3c2d725f2a038742", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "578607c1ebfe30b954b072248fa9261f8283200a5c4b5f1d4b566c1775c054a6", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "98312a6f52b8bdb973c10b1ae61a2583be8ba19728d1e73eaafab26d6c797b1c", -"T2B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "06b525811ce35c74b88728673f2c9211c0d6d04d24891516d6dd6960a5c14d34", -"T2B1_pt_bitcoin-test_op_return.py::test_nonzero_opreturn": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_op_return.py::test_opreturn": "32148b4a1a424a4f615c9983523f7d1b615e74003766905903e7ff3327928107", -"T2B1_pt_bitcoin-test_op_return.py::test_opreturn_address": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_peercoin.py::test_timestamp_included": "9e85d56e6cd5eb57096242ba9779bc9eec4bf4fafff0a7d7720998edd58a93ab", -"T2B1_pt_bitcoin-test_peercoin.py::test_timestamp_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "5c6af00c1b383d5c45d6f5a4068ad4bc1cc0771e0e3b7a139ae225e7399394fc", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "1aca588fc005096ed8f8552368a166f5d4cf886d098778df9e49d7f136b1a9e7", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "1aca588fc005096ed8f8552368a166f5d4cf886d098778df9e49d7f136b1a9e7", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[bcash]": "22cf9ab09d4ce05c4f0694c6d3666ec45fc722bd7d14fc7920677ac3ffaa6b9a", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "2aaeaf857fab465a6bfd704f0d2d86f94e3bda0bd213e583c66f32bfb867b571", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "dccc5330764423f1a4a507b7ed27fd76e0a4821a14b7e9e0dbc562b4bc18e492", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "21c24deefadebfc7abcb0a396bf58b167d2b82898346b700e2d066fa2b7b080d", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "68fd86301d29147f4c38df2ec0375584d67a96e340281ec028151af7d2c7e113", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "05c6cae6c2f01acfa39126e978f3f6ed4eb090c433006753dcce31da7e40ae01", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "05c6cae6c2f01acfa39126e978f3f6ed4eb090c433006753dcce31da7e40ae01", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ea63f8a3a7d558c0af993e9fde718ba907627de6fac6e2af610380ca56b253e2", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "1ccf293e63f3730ffa713d7fab7fd81dba1c959d7a3d65e6d41b7f65070266a3", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "67b4d34596285e2d2d2b39c515ade60fd2e12944b6effee5a02c9082f9e07942", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "67b4d34596285e2d2d2b39c515ade60fd2e12944b6effee5a02c9082f9e07942", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "8aa7f4841eedddedaacedb3ac34592eae9ad4fe719ff24b2314fdeb08170a2ed", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a8aa6cee98d28f406682cef738dff8228acca14f50c09d2c4b2a570c49f97c6d", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "b5ffcc9cf60273af5332494aac8e9c87b134509499f8dd03677f5ce6311f8807", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "b5ffcc9cf60273af5332494aac8e9c87b134509499f8dd03677f5ce6311f8807", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "5c14feff11628ee59f29fa17c5efd91833c43d6477739fa425f907a7e2c0b69a", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "ee806dba06fdb6f80d18adc611cbaa98b5038f8dfb5d6da1de8309dc20bdf570", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "857a19ad1965abe4e6b3993dd698fd8a65708ef63df4a6e943ea8e599c996548", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8088b8cd4b11a33f125e587bca3fbeb1391e92129f49a93325b6a70e4d96103b", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "07fc10ecee988fb21daa2a6cb127dcd1da231d21d83e91c5318d0f2a5c55e85a", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "358c7bec8f55556cee3ebffb274171aa84cd33140d1bbd19085a991aefea6d5e", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "e646f8b2133c654731ed5c1f6c9b4022874b6997dc0deaf5925c14bf5004224d", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "440fe6e6dfa1bd58e6bcb05a2a6a11de78671bb5b3e9974265a209f98c7fe24c", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c7827f3df0a70afda0e1cd170c3512a83ba581c9e249cc5382a6aa6ccc16cfad", -"T2B1_pt_bitcoin-test_signmessage.py::test_signmessage_path_warning": "b361660ac8ffd50d33d178f095e26816e46449e3f69793a3cdeefc6af20a6c3b", -"T2B1_pt_bitcoin-test_signtx.py::test_attack_change_input_address": "cae13523bdcdab47fd35e3ad6fdbdff42609c741cf7ab989bee84e5ecfeed213", -"T2B1_pt_bitcoin-test_signtx.py::test_attack_change_outputs": "7133ddaa4e95252209dee822d8dfcdab149469ad47ff997ed741608ccaf47f1b", -"T2B1_pt_bitcoin-test_signtx.py::test_attack_modify_change_address": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", -"T2B1_pt_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", -"T2B1_pt_bitcoin-test_signtx.py::test_fee_high_hardfail": "741d377109a491e9d0164ff4dbba243715fee3716b267eb4d807ad92b8cdcf04", -"T2B1_pt_bitcoin-test_signtx.py::test_fee_high_warning": "69f3a77a5d83d3939a37837d1f26009ef82a727259cb15360bf2028801523270", -"T2B1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx.py::test_information": "1ef358a831c64a37f26b2ab801badf667c47abfe98d97618422244992318f874", -"T2B1_pt_bitcoin-test_signtx.py::test_information_cancel": "8bc3ab92904669dfb97083622592cc425f42f4d34ec2e6b0daa15719ec670d81", -"T2B1_pt_bitcoin-test_signtx.py::test_information_mixed": "642936c0c5dbabadd2570aba8d4d50b13f86d9a2cb15a21832bc34217a56a496", -"T2B1_pt_bitcoin-test_signtx.py::test_information_replacement": "6838cad9b2dd40192d35f635b7cd76b405b4398e013a2e47cb4db43606496159", -"T2B1_pt_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "25acda93263db0c84b6262f864914baf1af659709c7c66d775c3235c115177b3", -"T2B1_pt_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8bccc746c54f95cf56358d823056a01bc01c23e39ca488bf3c94cab4ffa6a07e", -"T2B1_pt_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "9712552f3b4db2b94170f47bc259dc723f66baf97f4dd47035bc4a54d2c622dd", -"T2B1_pt_bitcoin-test_signtx.py::test_lock_time_blockheight": "3742d4c87cc5534bd93aefb662997a7654658f3bc7c16a2c5e4547d60d6bdd1c", -"T2B1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "4a975268dd1713505706a8de0dc64c5141a09f47b325304c353f46e4169a18ea", -"T2B1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "89bdbb30ab72267cb9987097a27e1939c777fcfa0184f7c05a0de5ab5722281b", -"T2B1_pt_bitcoin-test_signtx.py::test_lots_of_change": "007750b3a0a6e92eff7fd522a8ab01ebb0c4a39f859b8de202ddf16a5e19148b", -"T2B1_pt_bitcoin-test_signtx.py::test_lots_of_inputs": "694332ed56821a7121f3f40e671ecaec181e3eae35dd686a1d3989e3cf17a85a", -"T2B1_pt_bitcoin-test_signtx.py::test_lots_of_outputs": "acf635b3ce818469a9b1243e72530d53e9d9c20ede74cd45a846356b716a0b32", -"T2B1_pt_bitcoin-test_signtx.py::test_not_enough_funds": "aad51c690dd3ff84ad8d710d08529b257651c43c2957ead610fe27bdef45bc55", -"T2B1_pt_bitcoin-test_signtx.py::test_not_enough_vouts": "dea93a8a6323b35c303ae6c77d7c75d67fa005ea667d71a9d37e7d5d08b3af06", -"T2B1_pt_bitcoin-test_signtx.py::test_one_one_fee": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", -"T2B1_pt_bitcoin-test_signtx.py::test_one_three_fee[False]": "4090d93136cbebf53736d4e69135ff1c73e4149688235d109b74e6c6962e9abe", -"T2B1_pt_bitcoin-test_signtx.py::test_one_three_fee[True]": "e8836bc076ebf6609c902c80ecb8468e0d83b3a1db59c2e26156018ae6972f80", -"T2B1_pt_bitcoin-test_signtx.py::test_one_two_fee": "b053e2eba2b7a3e8f51019446e16436f731689eefe63806140ce8f806800382d", -"T2B1_pt_bitcoin-test_signtx.py::test_p2sh": "bf0664a89b33d8bbb2f8982af8358e3a2e145b568ae9a025cbc454d22e2916e7", -"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", -"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", -"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", -"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", -"T2B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", -"T2B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_signtx.py::test_spend_coinbase": "448ce4b1b8ca8f3014e9482b09353a4926d6a0f7ca3bbd6c0a43e8c34948f53b", -"T2B1_pt_bitcoin-test_signtx.py::test_testnet_big_amount": "0cce1794d350ecad65feeb95fba4f9f3f7d8aafa1ca32bc8a112d5b506d72441", -"T2B1_pt_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1bdfe9417d6eee51c288f7bbf06a3d42378c7cf989a76a7d7d8e568465829ed8", -"T2B1_pt_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", -"T2B1_pt_bitcoin-test_signtx.py::test_two_changes": "3c8de4e132765fd1f3cbd56c4b078dbc4a6be8e98c63f1ce7098321d7aaf87f4", -"T2B1_pt_bitcoin-test_signtx.py::test_two_two": "f608e7ce6acb3b54905ba467b57371e410a75e59592f2ae31f0da1fa56a2ec81", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "57cbe912e9c1d20cb61432cae409851a5a03fe67698c530b8fcbefe4b2a5902f", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "56beb196e989ff48e4bb664bf42f20b6340d799df3cad457fc5e1995b1596253", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "ebb29b8efec06134cb28ed6c7653301c97744e9278808a4baf2a22542c4edf03", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "2bfc3592de14d68f7be49d107a57e494c9f21b7c1ad4badc87b8cea0631e7930", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "158bb4e6fdffd71074f87193459f5b36c936875258cbc97d41b41bf735178539", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "d4d0ddca70e1620f398a46dc8f616748161972586310c028c887de67a9decf31", -"T2B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "79606fff871c3ec7ddb01ee8b02aaf5ca3f1e399ee651fb9d694d9cf83dd88ef", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "b60a38e30ce6a162eb5948dc7bc479461677acb96a040b390ade4c8e54761dc3", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "faf3027b8acedecca493ab1ad9be701ce843c6155ac2b48824e8c45c24364c77", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "b0cbf6ce07ae924c0043fdeaf8a7e8811deb2c19fc9eb126df66de1f3b9550b7", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "8d544071dd0aff5cace3ee52a076dda3f4f3dc5bbfd5223476c2436940ee66b6", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "05b081aa69246c30966eb0d6fc6a2ced955936fdc3ca0214c8053e6bdf91c69b", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "a953cc5825d8c042d000fda59b0595b6dcd92d902400e5a0b7c618b058918e7c", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "bc08af6ca3da9873d684db863bf8046efdc5f40ec911f9e23914c691ee58a7df", -"T2B1_pt_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "13530a7f6d37fc91b50b3842d7784d26bffa7c1ab54e0b179234034810196c89", -"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "07fecdcc98cf5e4b76860186f4a85a9cbd8f6523546562d03e05f728895128bb", -"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "ec6b07c65e33935b71d596d74aa7177c1b2b5e66125695817987045b83ca8aa9", -"T2B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "82b14adb8637740fe4309583013bc1efce373e6234e9334653997b84c88e7f3a", -"T2B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "74f877874a89852d8d6922550f1298a7ec4d3a476aa9db00f13c9e61d7130fef", -"T2B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "ae072db7693515a25d1f00ef2595ed778ba7853c74686432d749fa2eab5728b0", -"T2B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "74f877874a89852d8d6922550f1298a7ec4d3a476aa9db00f13c9e61d7130fef", -"T2B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ff2c0f7092ea0ea438ee793cb6f3c25fb4a3711ec86b18e0f07a952b39c466ca", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "5947469ed37f0d64474e217092d9a54955311e911971caff6efd77bc1dc73f2f", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "59ffb3f97e5cc2c1d46af7b63a1c40ace7be43540d48e92a53e7c96e52bca50c", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ce8bbcdcec3bf39663b89dddb7cad99103c3afd7e8cc4f2a9796dce3c49161cf", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "016f4d5468c81b127ff63e20505711424943439dd997809aa419e3ab511b335b", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "684d406867025a47fef09e15d2f73a2e1bf603e2a9aca1bf2592462bf7a509ac", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "d04b3e8845c7adf9822a6d66fdf8e00321421663f457811d37800d1d76e5a962", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "3396480807b91457e47304c8b5450aed31771cc2da2c2519a0644a37ecbbde9d", -"T2B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request_details": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", -"T2B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "1af2f08ed7651ae2b580c4b912532bc974086897980b3634bb39de1c622a88ad", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "902e098caac2d73e6c8516549d2fb26ce2c471a4b98f72a7b1886474a0772656", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "5b17a1076f669ab5ac14403440753b2c7428d25b9d21c3d540da6cbff9c5427a", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "5b17a1076f669ab5ac14403440753b2c7428d25b9d21c3d540da6cbff9c5427a", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "7a102502ac4c81057c470175d72f656e8fff1d95a06a18fb40c4d82d22c18ab0", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5bd835f91be0b1a135cb253983a908a789fd5d1ca3bad1292ae8b9b9aae240fc", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "4ced177d00057bdeba9d847aff796f5c72d9aa789262c116a3a9ee7d16b05276", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7a102502ac4c81057c470175d72f656e8fff1d95a06a18fb40c4d82d22c18ab0", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "bb5a14afa32512cc6ec833eab5cb44d4fc13bd7caa6490d25469fb5ba47b1aaf", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "35fdfda7338dcca034406cbe9b7819ebacf223d1ebc9234603e566d44cbe5a7b", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", -"T2B1_pt_bitcoin-test_signtx_replacement.py::test_tx_meld": "478a385b044b693b9490db2744bcdbd68787982b31ef40eaf7f890103594ad4c", -"T2B1_pt_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7dd7ed545413565a43efac561723f0e9587706a84cefaccbc49da7ba8d5a3d6a", -"T2B1_pt_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "4c84bd1cf328f379344030e91ffc565df2e2814ac36f437a3a3f1247789d0d1a", -"T2B1_pt_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "e5762f2ed2619e3c0743a3faabc2c740cbf1d4534dcf22f5445056839c75d306", -"T2B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c6efbbbfd9b3d4e0ebcdccb50a8c6a099c034cc58ac4682fc77a6d7db334c78f", -"T2B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "7126c84e351a2ab5a783f0b5d4f1fed69ba476ea87d2e88c6b882492591001d5", -"T2B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "87a81bfefeeb82eaa9885f544a9e80b59f625c9630f1cb83416c2a011630a28a", -"T2B1_pt_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "54effe54b94288ab1b2005cd60434de3460d3f258e11f42da7755587cd9ee826", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4063e82e78563c83dd3ebeab2cac83635883dc23b1f85cffabb24c2017b2402a", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_both": "e272a728194528f842c216185632c2a728e0bc8cca7ed404ca854b748ba60285", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "d13c54438cc71ce844b0a366d376471bba39ed0904050583d2c3da87a272215f", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "e75baf7503ea75b8662cccb9b3d20aa01c4850ae5cbb50ab64f2b9f173a53019", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a152ffeadaa02a9ee86f85a98d56e80c65f0f67a3c8fcad94300befeb73b3627", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "941f0db7fcbf12561d50f9e3faa85639d6316f8dedc6f37856364ee8fbace079", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d9641db03f4e9527a1c68365adb1b6294b9f8e397df4fc0303cb2047fe281d55", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5e9acbf1b9033cfd08beefb5027359b95b12bd0583112f33a78166bfbab82bf4", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "2b3d96d08b34b6e42372e9e215cf3140d3946deb3e1f60611f9112f5525c9556", -"T2B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "42d3f9753ce2b3b06fafe89c864dc4d92f019d7d29f0d1af12f1ff0459a1debe", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_attack_script_type": "700b9e8c2c150fd8289482716f5beebe8357b06ffc53e29ce990caf11770a09e", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_mixed": "5d56eedf8d78fa57f9a802addcae2bef77db040423e7ee3784a0440113373855", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "8bf216f4661e22abbb69cb92117605bc7268643c29bfff2065808b1bb879825c", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "377d014483771250f25e361d75c2f29c7f1badaad46810c64db4c1c5222c360e", -"T2B1_pt_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b99743b95070418745af5563003cce38dc75f739c4d44ebddf8ab969bf327f06", -"T2B1_pt_bitcoin-test_verifymessage.py::test_message_grs": "f5618215034a9eea04c017511bf8267d6289ba7eae37b6cdd4193949d12f9632", -"T2B1_pt_bitcoin-test_verifymessage.py::test_message_long": "2697030b5f0c6d3cc7f4f9c0bccdd526e41c42b7ff1f689899b09350fc39e5fe", -"T2B1_pt_bitcoin-test_verifymessage.py::test_message_testnet": "7e04d4ccb09aeadf361c79d0be39b903abfbc894e6a7c3822eb94a022315551b", -"T2B1_pt_bitcoin-test_verifymessage.py::test_message_verify": "e5d8c367d3c5e85d4b5391fc4a78d84fb07bad7147c348f6ed1d82882ae55326", -"T2B1_pt_bitcoin-test_verifymessage.py::test_message_verify_bcash": "340d3d9542e6076fab14530ceee8070b580f73e5e3aca4109905ec2168eccbf0", -"T2B1_pt_bitcoin-test_verifymessage.py::test_verify_bitcoind": "1e44f945e8b166b8366dc6345e94e51a1812f37bc9e6311a648fbd94f9db3344", -"T2B1_pt_bitcoin-test_verifymessage.py::test_verify_utf": "cbe648aa79b848f2b0e65fc560b5e5b54257a5aeb39b04afa681eaf45b40a2e5", -"T2B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_long": "05f7610e6411b71d76acf04adba3ca4b58aa941297dd246c47860b4eebfba428", -"T2B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "791a9117903f261bc9de53f305d59ab871bf75f02acf8562eff69b856bd83900", -"T2B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_verify": "ccd272f62fc997f3746738c97e7b3d8e68c2f12efc726fe4363fb6d923954d43", -"T2B1_pt_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "8ff99ace0e07ccf5eb63a0a2e5b8f833ee15ccc59ae8985d8de673c4f227d6a3", -"T2B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "2656ebd7cd63635bcd7201716da6168cd4050e9cffad5de01dfd5e2c2a624f0f", -"T2B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "46b64e13b71aa327a98ac77b3f52e3f700198f91839fe221777c65537569ebb0", -"T2B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "9be31bc401ab094eb1b70f88b373a376f86fb9087b9f5c88f101d5c19837dc10", -"T2B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f4d73269ca451b045751794d34742a6c1e6ff7aa7c7990c8422e30d30621ae43", -"T2B1_pt_bitcoin-test_zcash.py::test_external_presigned": "99341a5d930925f7c16aec2c0f39eb32a3041f17c23cf5966928e1f28c534653", -"T2B1_pt_bitcoin-test_zcash.py::test_one_one_fee_sapling": "2ae3538ad723addab1b26e54911340e1908ae806a950ce844407391a9e0a80b9", -"T2B1_pt_bitcoin-test_zcash.py::test_spend_old_versions": "6ed47a22b8da9069904e65c010e196ad21f7f781d1ef75ed6edc9cc302ccf2be", -"T2B1_pt_bitcoin-test_zcash.py::test_v3_not_supported": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_bitcoin-test_zcash.py::test_version_group_id_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "47a0e3398bc442bda07c6f67e4f2c667a5fc65a998ca71260fc5a4455beadd92", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "c14c95c42c9055baf829f33dbb8c158e0b403626c0b817585df5c95552f0c04c", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "935aaa5304dacf9114e1ea358203721ad874a657bd9befaa76fbec922c616b49", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "26ad1a315a8b8e9c002280cf1310bf7c60d055b93ac77a1be77d512b5ed8976d", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8521779a0c507f3910ff93dfba52d1fac447c06305d9aaf131c4a1cc29593724", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "f51fa7950f917bd8e6fb8ac1b8671bda5e9e5b16c55e3a5e0ec0a5d0d6b4f1c9", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c34ee2a8fdb0ef66ce963b8049c0ec756541ca54b4d0ce258ae1283acd030e93", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "34b8fc6c139ebba92a60234a02cecf6d318bbbd47bde659ff8eb1d39384128f3", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "ca0b6d70c591ac46ecd118dbd423ced0d67d3a856b43d0807e556787fccba070", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "7a561124da4b8e963edcfb0080c56efab488540aa6bd41fbe74b4729faacb42d", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "01081ac4f3447b25bb5792fa7aca0e4983ecfb934c19df697a30325dcc39a8a1", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "d5eb5d591db1bf42df73990efaa75aa5e62779f1d13c939348759614c0502063", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "3698600b91fcf5e841303fa83342e4078648b9d6ca85bbc1c22d5e177bd19144", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "9f7456a1e9591e32ce96019b7304411292b104f2f07fd3a239abb8323c40f185", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ffd5ef061e917380e2eb4313948a3871b52717306447c75e3e8eb50598c9cb59", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "10ae8ae6f8b1bab9e3666aa82ea7c632a40da4636073301d0ad57e3b0b8386c5", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "c0dc75e43c9fc69ba50a4d65234872d11a73f08bace36defaa8f2e9800c29776", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "71f849a568a255fbcda4805521d6f05fa1f7af8a913371c78fdc54e0dbffb65d", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "afc249b91f2d7c98b961cac87435da86752c67d4e00df91145a46d77430d86a7", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "636d0889064aa87464a55318de5f0b792acf4a0b666a54aa3fbe6e0470bb7604", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "213fe5af9951d852e9cf470d2cc56860f7c687d813f1dcd440763b0f1748a312", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b4223effb44cd5575e3d1f8da6bf1af369ab069768be6fe3272e5f294fec6116", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1bbb1c519946e2d4c89b74ad118b303b85d496b04a8a711a4120fe3c3e0092be", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "4a045f2e966a7db7a66059ff3e4c1bb3b2ffad214afad75a40fd4068a6bca163", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "6658af3c4a9704e33467c3c19c085adf9670698edd7762d02618c498b63b82cc", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3dec6d8398b3662779ee7af167e9c2dc043fb7da64826300028faf929c99e209", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "078c0e37534983658dd8cbad6840cf295f15c1916b601c992f3b581baf990361", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "adb08ba1befb259661eedfc9550ac6b80a03042ee4fcae1262ce6e9265289b0e", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "5ec5391b2028560515d2e94fa411fe9a502d18b91dbd7d8a85526d0915bf5b00", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "e55d6217f2dee5fe25de85a569f986782713165a7e21059904870bb0ff3b3fee", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "1d1f14c94c10b490faf2324e9088d92dd9ff8fcc9086ea459745bf92a8f3b9d4", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "c6103b094f5d83709d431f0a1822e021656dfab32e9b79806915f5168491358b", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "abcae029e87fe7c11cc6b6e6a2c4db14979cd4b7b06bf420d3fcd9786f0f9ac1", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "6a6303e1041e0f4a6aa706156df69e7bc1313c73130e96b774c82569b1bb0dc1", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "413f03b2ee5c1f3068614b1c6af4cb89d01956118f784e22798cfd73c2448151", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "12830c9317f0e7f4c9f7f27602b3cd65efb119ab915b7144d5d9c41d30651f9d", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "854db3f5807707099c775e582865fa0b9e0e80b373ff1bafaaeb94446b227b74", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "83e6057b65c736d0fa6b1fc80a6f7d313f29742c0533ba348397a1f233758b6a", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4c960c3ca950a6763a87ccad3306f11db088303a889900370f0858fcd804e6db", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "b0f949cb282bcbf194e1db4ea50d0e710c732b583e8b57c9bbb6083a27b18810", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "dc1cb75c5089c9c05ecf1bfdeae1656c0cc22342321637d7e2d69eb4896fa305", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c7ef04887e64b390b75ff1ff74339f86571ff59b0c6b4fb17669fcf6535f73b9", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "2c965cf7958cc99d32c5eaac2f42b91a7e918b850c2dc2bbd44afc586140cc7f", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "3f063a5386948ddaa7579bf8c818f6ce0986836954d2a573fe5617f014c4c5c3", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "2d4e34e32e8531f30630850ff252f25f5640939f454746eeae7b314a6b14799f", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "55a9b96d24d2def72f2fea7b31848cb1af5bd232dd894546827bac7fc13aa5ee", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "4e324e27708c39f62009937d27ba83bd555421bdff5b0fc168b63d152228ae3c", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "09e33cea9554c0cc1e7ecd41654a4c078223b5e077e77673de977d84d3c2b544", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "31b2da2096eb2427cdd31b338cc49d4109bcd6e8c8a90de3adff917661d2cc15", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "1d613052c765e85a48d9e32038e5cf3d557c9eb76e166b077c22e912e47577df", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "68fa6879ce0ed9e93d60521d8e480ed6b23b1bbcfa049ae54513231240ad2a09", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ea5f735af4c040f8b685ce92788eb8a7f6941505ac433e230c8f525176066e9a", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "2ccec6d1e6e134a482f67cf95e78ac35b20e3d645ab1c2bae621138bb3f1c580", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "97e736471009b4724609c203cb19c03943c90aeeb8caec0a2e3843a0b9847ee8", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "eb66d4eaf1e8080333ac29f49e553f1dd13f04396f334d57e491a56ce18ae31a", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "4cd976cf6aff700ed943c52365e1134729b17f2e8de9301ad2beba5d6d7c3ae1", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "0fe302168baf51f2febb25f08e6ce01109ad7b8247df3c5e206c148a6993309c", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "a797dc62c188496d8b15dcaf6f4fe42f695774f49eaa576d4f617e9e124d911c", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "7ccb93504f6268a695cc3d226aad7de6c19d194a411ffbb26c61a7369bea4d48", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "bce29c10f629e9c775afdd8cb20fe20f1bf253eb5bf595aa805daea0b6a80cf4", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b6be32e337585ec8a7116e95dcf148f5ad434ea6b225d17a6a675766516aa9bc", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "fc75f2aeaed0d6d849f5f86ed035269ccbd680213c48cbadd01c912874102ee6", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "bc531e7021c84e7c94a8de07674df96ac8d3ed541e94579af999853e65b91ea8", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "4606d8cc2927e65a9401fd508f0f115d3f6c66bb9795ec610b8eb02512dcce30", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "c8849521fc07e9f7d8f4e9ea5fe4a5b6c077d7f1d5e0f2070bbe623e2e72ff7d", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "a04ad3a574798ed19e45dfbff416e78447e0a9a11c4ac86f3f1f895e00c953e1", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a13139e480abe217402ff197c5c32032f755ff271f952751e3e937a9c949c6fa", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "aa4523d1090a9191d183693b730e820db024a940ee54ed251c3905ae404a7c47", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "0f73a575cce8c4c60f3bbec8bf213e739a83fda0327de7c6379490fdd2629790", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "41954e328596c7b5b987e8246c1ac43612fd4da34682f3a1f64e6f90ff842231", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "142b5b830dcca4fe1716b1d25480b1c9fae20adf4aecc9060dead61ba45e179b", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "36be051508ab69370d9c30e3449f704d01627f6176a164a7ce23ae36a46fb45c", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "ccbc488a176010cadf53e818905f47e694ad6c416de5cdb407d506b3e11628f5", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "e98eb8d2a4f158d00cebdbd6dc71a82b27c8b098f6a195f5d6b90c9e6c0e2132", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "e7ddc1e34cfba9f9efbac4971b696254f7d5395b8edaa7ed84d75941d8894a2e", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "20c2eff8a92d3330c3a16e0c3b970cbc9d6a0b941e2b2fe98fdbcf30244bf475", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "d9dd3bc28f52552eceb1f38e70e9c1159badfa41da607332f9f31403c002d951", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "999d329bea6533003fb930f19b0370a727814b3c8a30175f96e23bc00b5e6012", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b21c2f39fa094ae2b24470b28cd03b89365a944c975cc12c2996d2e206e3dfe6", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "170a958cdf05531293b6ad368625ba8438dea17f7023df2bc4daceee7efccaba", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "af84ddb181962b4fdf19f105449ed085558504a349ac4884d4d700248c252620", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "b967542da82cebac1ed73715ab1be29dbe36274a1281f40a27a7fc35250c2f78", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "e8627cfd6adbd60a96ec9a625e5db9e16b317ec728949b84e77ac9967433e6fe", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "5c40b9d2642c80d67b73a3b768e16bd3ca94341793ae7b035106977f264d7f20", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7857f601bde4aafe36f27a31603179d8f31dbd709b80b67e9a2fff8f6941f64d", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "18ab4af623385575786fc557f7582c39324034a3a0ad6ad8ebd7c5ffb82a7e8c", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "2961cc09272c9ffb95a1d58d575b9a099f9f200a062bbe8fb8e654f7bdb72f69", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "867801f543944c6410cf99ebc5b9407d63f1614553cb2f582004b92956dc210e", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9e97697547d3fd39255d61e1d8297e91bedb0df211f692fc69035bde091d7412", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a4240f73247bd9f5b86f57a7c497ac079f296c884148d776033c7fa824ebec93", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f6754477b982f6b136f7395d92982bb6ef7c9d476cfa5e85589a72e8bf32e0b2", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1e318c7fa392a6a0afd093e0338ad79783b5e2fe7acf7f2af32668b2f0a5b2cf", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "da1d6829e7c390d1c5b084f071e92945dc0e3e605f70f25dc649947b90eeb9a6", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4faa00c94d98435c2f0dd90ea6368eca7600005e73a8cd9c05002b805db87acd", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8c52fa888fb24efe75498b88d95c3eb026773b17f7737462734b55ebe0cee33b", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "829df5219958e1a8ec5e000801ec301b97419fd0da771b37c987c4a602b9a789", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "83e43c3e672c45dba62f7b5e3ef72b761726667cf19ef32bcb40af74fba55a1b", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7afe1a1bcd9ebcc8a95407d29ada3a0d32344cd7c69fb8a8eddcdc07437d4c36", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "fa5f2629504c0fd9123ca74f1fc4250334c318e79f1d10f94e96d9e9c6144de4", -"T2B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e80537516f365ce4fd95f19d67e4f49b0af7fc48d984f15b9a7ae185d4384501", -"T2B1_pt_cardano-test_derivations.py::test_bad_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_cardano-test_derivations.py::test_ledger_available_always": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "e3a868a8af14ac275a63027422483ab0d13e831339ad451f19d824993f2693cb", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "c0597e6a64342f2fc752e14dfa12d70f0d37f35d74e3f62f38aa66f0caf1df46", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "adfa921358f3a364bb8f87f62e8a992fa1526cd9f3e9a70a1800ac0bb21392d1", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "1ebc594ebebaebff152b5cde41ec031a757424b1e3e2880b1e8f38798d56d0f2", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "872cf0625a9d6bc588f93665f8e32278522cc5744ca7a82bbb4a1c02f1aeaff2", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "38fec143d6008db6faff3b12d253e02431d04ec54e5216da02defe69570564b0", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "fabeec370bab8bcbc1d863cbf0641801be83477ef4e213eebc772c70fcee1577", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "d25914ba55a96438465b420188b98e6032f06d5c6dc79162237e8c5d4108b2ca", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "420742c16bb3036d1282470e9363b3ca08be41a9203dc1b05aa01ad2a8839a42", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "70ade6173f1f8fde21601d42ebe9f4b4b8ca735330de7e32dc388bbf1ec4d5f0", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "c51a609e1083f5a0f263535f68fe326bc34d32d96fa7dbf8fc0a26b129d0a143", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "823d4e898e86a276bba5a5643806dd975164b8e61f1e69c7ad2139fad856707b", -"T2B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ddca4e8f8fa95414ef92958f2ea86def925fbfc6502125a3e9cca6f72545cf3c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "b2a31e76bc86edd927322e54f2df7fb655bd083a12166dc3cbe2348e0748ce9f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "1ae2023a2e567a001d054937bf21a34d9475d09dcb873418414e50c69a87592e", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "10c24fb1a54198ea1151a56646b9bc805ac780ecaf3877eb6d06d796a64e0bf6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "d3db9f6287a12ae5d471945f93a11ccce5e7697dd202c914f3931ff726efd3e6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "8ac4be8bbccdcc7d7fba1bd62701435ca558c3a087d32702d11cd62e9018e9de", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "d627fa7a37e986d1ec5e875de04f0a133a4fa937d15ccd3acf7c324e132b2a81", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6c9996a7a5cbd49f879425915d8edd15b922847cf387b126bc2706744d4599cc", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "350b137564a4c6f1c1d4b8b2e648694302e023973b6900aefa20b9c1162ee599", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "315bee57776a36d3f47f202bbcfe28081e29dc6a13ba7c1ef869110c8eb60a9d", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "c92b3f66f8b8a30d1699f2e1276c58959054131259fd673d4d59b33628cdffbc", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "38560b5f0c38d50ce894d6bc3a2c9040dace7fce61bcddfd719bb33eb9db3bb4", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "d4f40a08f7f2c9ae234fb2525e267c7809024d3344e6c6f95644e97555cf8990", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "d4f40a08f7f2c9ae234fb2525e267c7809024d3344e6c6f95644e97555cf8990", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e32f6421784b0dca880a47c46c1d7be47c2d333a1b38779f074123b175103bf6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "70ddb02c428c2f7c90d2c37f73fe1431943b542c2ed3f4e08cd15ca51607527a", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6a8329f2afe11d0792c083b019afc800bdf6c95a8bab8a366b7eecebc61d779d", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "404db4b0de79da008b2bf25071cb2c6c196da985dd0b2506b8035162376db599", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "2c723e8fcd3247bf11f0e22163bde5c35132ccb9e1e60e59b77175d8991a9dcc", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "13f5c6a7308e1dd63752f89e49c8f4bbb6cea29a334c22dae42d5c5de8a4c563", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "839b0fe1e655714e797e56fb4c595c4443bf8b777c4486545b5ed548be391ae9", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "148666773e7bd470f560489b0e9aecf6800c07e66f9f15b4d2142ee097439d16", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "2c723e8fcd3247bf11f0e22163bde5c35132ccb9e1e60e59b77175d8991a9dcc", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "75b033cc37ade2fbf2c849ac7c46245e19ba82a0e8da1443a6286e94e7f828fb", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "1a68fd64e6df3688e089607767ff1b206ed67e1e2fca79414e6b54c95f26193b", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d5d6dfc3e810d887d3eb281affc83d5040681d65f72a9e4dcb55a672956beafb", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "d74bc00847c3ab2f81bef0d06a660d77cd7a0ff55e28e72273f33670c1393a73", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "7d7df722eaf654a1059f78e3c0ea81c9fc844ced34e7106c697f5bcedc4c0170", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "67610063551ce5455ff33f9add79d6c160c8eff64f7d3ba5598bcf31ad25b181", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "3a87f512504aabf82f99bdcccda069ef7249ad28b6a2efbb4e1c0244b1a77c36", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b9144ab39c41eb558320439df1acd6463dfecd7b0d1065bc6aeaeff56804c82c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "952280e104a79643857fe5f17b9dadd3a12e182303b7d2e67aad2b220b670585", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e264ed1b68873b6f6bd79655f3012ee5e5cbbda9b4e5553f5a27f3b55911a2e5", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "73227d7886e2af1b8d0a3db3e2636ee4a8c98cefc6b94ede189fcc614820267f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "bd5bdb947fd18a3e6f2144b816426d4bb5bd5e61cccd9beb2bc7a45c65e42b06", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cd0b242d1feba35ce905cd20584084a7cde3e28b26461b5d829abe6f3b7f5f53", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "c088d3d110f938e8ae07956ed8f5568a154b2eb0a5cbc951e568937be0a382b2", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "5be9d878f7e8c61a297c3d76e37487773b70d555460ee8ed36451bed5b469df8", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "9dc0c3f7c592382e090e31e74eec1ca429979cf5e1c4821af447856c7d336b75", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "8b88b66c588b521ae50c84ba06b4f3e087f8e0e309c9f72a991071b0266b8e48", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "f6334fa109d79b0621afbde1df182defb36731fddaf57c18fdb01751d9178c96", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4d5ce6cfa2b5bf32b35ffd255dceb4a94e13b5a536bc96cc21c5c2da578052b1", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "59d476fa4eade5e44d48bdf902811f06693d401cec50c45397d17076173fa82d", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "ec16ff0c7672000be69bd4db6eb44af016b4074dcd156dfad5b433bc644de2f4", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "76f6a7a9f00ac6bffc74604e3d5864f3bea6e71583f638ac1cfd2dc668ad278b", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "45cf11fbbecfa41cdc6e1027296da7f567533df3927898c4474c1318873f3013", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "94fa27f411879326e22cbbd09997a2a1887f3ffd34deb0728a4665792274c794", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "199a9cf2ffff6a3cef5baa09537286ee692fbdb472f67a7b00dbb6c809291133", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "3cfb028d33d1b6709e17eec837b1b89b4909891ec9a75c9f0dae8a35f60f3dad", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "8411deaf2d5135d86f62bf49544163f75029c9be28f2c1334ee8bc50e40da713", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "a90638885800e7c37c1c99b3f0c51dc6e05505cae7e4d8133aa953dda730c4a8", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2c905bb54607f417243993cbbe619929feeb989b4a6ea097e563f3b220b0bfd6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "bf84415f943b34cf41da91913506a03bdd6a557284de5cf6e38e685fb28522d1", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "285cddfcf9600e276b0747dc054a3e2eb904a577ebef137ed58a1cc4a22e56d6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "15f09560b4407b99aade373d0814d3b52400ee820016cc6e712ed8243b21aac7", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b186bfab5d895c29f9373c4bb3b22bf5579a0801a074fa344e2625821106115c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2138995788982190735d29519ce8512a0b93b8b1d0d22b0c93e2226e7b70e3bd", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "f3be64527acb5cbc408429838cfe77e66454ae0c11d7385fa50fd3d490f67264", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "798ce79279334fc521811b65b90d24df047fec557e71b1ecc93b60fe1c3b4ad3", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "364cba01e963917fe73b82b4b611d41bd2265c94caf55ad7bdcb37d4eaa7a7eb", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e1e1309861fd1f1fc8e5f4b5a16234abb58aefc590ba3f49ae1461993a9b72c9", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "0f2a377b8d8e47e74175904067ed719dde54ba38c9ea65dfe035173ec903e720", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "0bd8ba7b9bdd3c250ab77868e62154a36c4b757da4750e878e751fd603321668", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0d7d670b7f6b6d64ec826dfcdd61931d7605c96dfa0b404509355ae7f4692bcc", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "9561a0fb91a20e9202f671fc0f763078326423318aa4cda055f6c4c8ac0a17c5", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f3e1af69c7c6ce3184505e117ca327e3dd55bcf78fc5a0d808b10c977eecdb91", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "0189f175aff67c7dacd8503d5b725f9ad7b6bc77c43d6a99961ff0be9b0feabf", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "c9107c294912cda84487991c5d4c21c0f84a5d626f163a53f5f9f7f2db98066b", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fa9bfdcd61310f66575cf9333c52f0840c44c9822bc35c30200faf9ccea70a6c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "0cb7e1f73ac2d6e8dffcd6820059e15b79beb9f0b46be047f1e5e67f98ef8a57", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "16fc050f2f942847809f0769dde87591794b3c87dba81d6b38f21a1f200a793e", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "cb2623795c3a84d646c69f382215a9ff4477a60532253e947c2c75053c02b030", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "515f281cb21036b1bcb7c406624960c9982d8834320c1d8720571208becced89", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "f3b1b109c395904eeb1f7a6832f212262d6f00ed42b2138bd7c85eb49fd23e18", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b04632b7dfef0228ce3fa2fb03d06c305bb99ee91751c99346f22f687a2d1a59", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b04632b7dfef0228ce3fa2fb03d06c305bb99ee91751c99346f22f687a2d1a59", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "161c4e5898cac2afd48a5b83a36c757424f71571e195791072b8d1c7594cb660", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "c9d50b3e30f51f3c4fb2563f3511ae577fba676d99607a126d46102d76fae90a", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "c9d50b3e30f51f3c4fb2563f3511ae577fba676d99607a126d46102d76fae90a", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "20adbb71db74c46a3112039fcbea446a6db23719de09ad269dd5eba74bdaaf10", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b3301c1cc9a820d7fd1c10144dae9bf57b3a6502d270f6adb1097e9a0e6ce212", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "844c4783f852f6c08dc994b8457fc948a815139b13e3af620e0263b55de79355", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "410b474bbf2559cc81e03c08355d3715d5f6c1e2dedfb647ae5ecdb6e52b369a", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "4d750a75f6b8511cb75b9556ad3eb8b490e6d8f635a6af706e41df36fc8fa733", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "1b30bf17a6e989abec26225038eabd70ccaa4029339e7bbd0148ac1cc2bc6484", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "7b69749fd3cc23dc74a9e196a2105caffad3997daa668dc0043fb6a09d7e3b81", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9e5d87d5e911c98f4ffd5c65d180ea361a75d30125d2c9ea6a17be22b1d50174", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "282368766acfbe35c7116b299fc07ec912207c61d6b7c0cb905e423fcf3887c4", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "b2a31e76bc86edd927322e54f2df7fb655bd083a12166dc3cbe2348e0748ce9f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6c9996a7a5cbd49f879425915d8edd15b922847cf387b126bc2706744d4599cc", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "2233528c96f7a00b3bd480fd5f5ce8d3592b8c5ac8f792074f4b33db3ab15bf7", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "7d9df27cac6de4be256ec54479f744219dd2a15b85d8570a12ce2ed1bbf7e79c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cdaaaef4d2262a80dfb2f35fd21a8ab75e4253bc15583c6bca0f318dc86e6181", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "73d16dd96fcf795d151726e0b801a1f2ae2732367e9f993664b01bfd42024929", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b27df3456a053635a8da76b61b615839cc88a84706bfc63f24c5423f92bd4c40", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "089375570e455153244b06285e1f358ad91a4eadac351501970ff730f03aa17f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "57d11ee1b1834424b1c4a06d0645e55aedbe5e3b6ff05a13b4220c73dd8edd96", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b27df3456a053635a8da76b61b615839cc88a84706bfc63f24c5423f92bd4c40", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "f65fe70de441efacc9ac21622ff693673d67c76c7773c3cf363da2dd6c79c92f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "e638a21109e889b489858753db4ab7b41c64ca770b1a1a1073b6b78158cb011c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "2904927f1870aff8a01380c7a56119aba293eeb3ff0974c00d35aaa0894100c6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "af8c6cff756ebe299f112031c6534aaea46a824a1516ea5bbfaef7d7b5539ca6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "bdf99819d7704e5cf76e356970c60cf145a2ea0d2d37e86fda27a2e32abb1159", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "c97b22a4d2a2b9a6ee69378ec08a5738300a8369cf3e82df5dc4f4625e737341", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0c184f20fc48d22da4a9b31e4ac6797bf85e9104aa59b08281e26e46e3a69950", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "fa19717442086d19b5f38783962024698c0a082283d8b83bdb224858bddacaa6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "db1ace299e0c9ad8df1110506ead268e0738712879df593dd56421c915659798", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "2a41e6bf765959e3290bd8d78713a945df5c629776d0eb8191a01c6cdd14a62f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "105fa54ebd4e98e63dc0047f6a65a3a1e169ab6be4b8295a1d241fca96e8713f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4cb2710e05d4dd5c676ae4ec5206b825e2f877e7c96a7aaa6c0c036ee0ed2f0a", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "4471230e2feac22103ea186960bd8c6e907cc31ddae56bc19c3cbcf64e5bf87f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "bbc3f0bc40a7537be59f8f571b6e9bec4e28876bd541ee69ee876afbc6b1505f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "9750f06d3b7372d056aaf7e6b3744ccbd83f1234f65656c0a8d23b1674f44b09", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "2612f2015a2a1417b8269637582473a51c6a2eb7a684745837c3e2464a0aa528", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "11f7c3b4ca0a203ec61b5a2bd95e9c44a7d5295190d3a4f7b568f11c44b74f7d", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "f1c2a04abc92835e9d0252d64fe76ae9c7a71b4649a16202c449365e67f37bef", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "4d84a51e4546590ea60c38db4a2ea9df5019429cae809ba39e4364eb9f45c449", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "f2972f62a13c4f4509c4ccfe06e24775e5731aaa67fc309de05c65d94424c2c6", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "e4c6d143fdc798cae8a7a33e240794b22bd74cfe0fa1add0f27ff15ecbd1c015", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "a2459d6fa5961220c5252f71292fc1510cf839471628fc6a9b06c371b7e2ecc3", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "f9b643c3331966c8b43eba6ebb1e33f30fecd2bf39def5b52569f18ac1c725dd", -"T2B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "bb72e508055868e1d82e16e6a94c54ee56550606ad7f84018b7ccf697b8a18a7", -"T2B1_pt_ethereum-test_definitions.py::test_builtin": "9dc543d32e58c06e43945c19a9953f4ea8147dfeab590e3255f47c49f2c67233", -"T2B1_pt_ethereum-test_definitions.py::test_builtin_token": "d3840db585b959c5a7f219007bec307196908aa7538250ef260339f39ae1bbb7", -"T2B1_pt_ethereum-test_definitions.py::test_chain_id_allowed": "285173b297da8b755203407ef281bad94ed9202c80fcc08a99ade22a8f8a5c0f", -"T2B1_pt_ethereum-test_definitions.py::test_chain_id_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_external_chain_token_mismatch": "47fb1e067f4da97538df0124be2b1d25fcee4745ee6fca1adca025ca58418db8", -"T2B1_pt_ethereum-test_definitions.py::test_external_chain_token_ok": "7be7eb0f90d24649504fe875354b7b0608e35acb61395dfa492750f79e2d48b6", -"T2B1_pt_ethereum-test_definitions.py::test_external_chain_without_token": "8a7ec90e4976077c3912639092ccc9c58dff3e92cda8b2cf8f588a04ad6b40e8", -"T2B1_pt_ethereum-test_definitions.py::test_external_token": "417474d769d781db556d30535ec26991ddb365a79bf34cd9486fe407ef4aa1cd", -"T2B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "f48f226a19d83b66ead9b7b36950a4805200601cdba06538bd5fd7efb66467c9", -"T2B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "1c6ba0582b41c88c4b7e7a4bb668018487d96674b0e2cf2c1b5e6cbe3c0894b3", -"T2B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d84c8ae00de95617ab6213ee3c7b919d2ed7bbf8e717d89c5a43fd62f7077f3c", -"T2B1_pt_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "3573c57c84c20a769b996c9644232ad3c62f691469aacc5c7934d55bf802c2d3", -"T2B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_slip44_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions.py::test_slip44_external": "3358fe1d23ac6e1b31d4f705ba303e21157e27c24066b00fd1aae302189e0858", -"T2B1_pt_ethereum-test_definitions.py::test_slip44_external_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_bad_prefix": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_bad_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_bad_type": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_malformed_protobuf": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_mangled_payload": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_mangled_signature": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_missing_signature": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_not_enough_signatures": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_outdated": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_short_message": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_trailing_garbage": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_definitions_bad.py::test_trimmed_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[ETC]": "f0da609aadf98b500efdbd99132e73a17c3f30f9bd3b8b2614509c0b589970f9", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "619f476b3523daca3bebc2f971b104306a5a1d56d851675d307454f1099e027b", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "7c6d9f9168b0c742b3bbdc57a8dcde335107b12e81e4b132f38c0058ea4353c6", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "284c43d95cbae59037a78f3cd449a7eda6b76cba30e0c08651fcf02af2e30971", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "4bca422a74267d8e72f07cfaca00acf1529700acce4fa442fa83d9709432ff54", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "abe0547feb668f3a811d82cbf182972e2ceb86a7095346b3874f1ed6d86a1f3c", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "b1b636f2777ae188bcd00691a15d3b33f790c1416fd7d5e6e3bdccb2cb70cd60", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2bb17b0b361532b32bfe3167fc98a3bff4b3ff64467d15ad200cf535e72d0b2a", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "9ffd92555d3a79561e653f25fb70fdb90cb4dcec6c14953e55c7ef4bb7bcc39a", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a3ae284e5569abe8df87f74461c155dc3598db45e4746371e016b2c4bb0f1b5f", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "838a4790d8d2bb4b4291753b687551d5c2ed078cf17a1b21d621e3d4afe53e12", -"T2B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "98c405a62d1f3bc0899c10f18424b6a2bb08a32be939f6c9db488d44d8bc4db5", -"T2B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_getpublickey.py::test_slip25_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "c0a13788e45c70644427298b5229ff14c0a39f775e8221451e6e8a226a18d289", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "16912e24e584f7d36d61d69d405e7c9498ad5223e6e5fba477f1255a3a222c68", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "ce66e943fd479f06a2ff57a0124a87d3140cd7bacd7a826ee497865b4b81a5ff", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0d8079f3f6c5aefd3f7fdfcff6b3e585232d92326bdce12a173c80d548c98f48", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "1f16dd4baee48788c5f5e7a6771693987c5ef124049b5b5c470d035370f59c01", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "199803403725e3d42fea11c832c04e7c54022520ca718eed3909b827f22f6ca4", -"T2B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "2966c67a07916681d54f8e24fa922d3c14294c0896f3f9b175495f6948062b41", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "6345271ca56c53fbd28d2da0821a2971773a83a7d3ff263934aa43974c14f193", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "d3875378ddf8d0f98786dc107e3a8b51d1fa9887659a32c910ec434251754f6f", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "f5084cc403a9b828ce4ab3a8c75193277b3bbf4a595623075fa7bec3ae12be7d", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "6cda11b57da366fa1ce02ceb75d95897f97d4232b538a33b8e93e21f3fd9c21d", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "aede5d0c7e2e6856d8c84bc459ce011b3b6c5485ac8dfe309c6ba447ef8a51ed", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "2094ee30e71c79dfd9b1da35f8263376e910a7bea4002aafd53c94191df56564", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "842248bc8452d6a2aea90103926df89532f6833b3f3c6e66f78ccfe3a7bacbb5", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e5a1e976356fc59d8d917f7998e7fe242756cb2dc85e9a723fca62a7597e07cd", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "2e44ee0eeb345dfcee11ba6e1daf6310aae89c1260f0874d29c02ca7332379c9", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "73ee3b7b44549061ef9320f4f428f0062afbf9f9c304a05914f975c40af46010", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "0c8df60419b3284386228476f62d7891f85cd9447b6689ebfa6669add8bd134b", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "990cbd9aa0ca72d36c8d75e3a5c90a5a113c97a0af9c9f7afe76221140a23add", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "bbf1c49504737e7a44f7d4496573e9934e1d8a9cba1a053b0150947e4df5b452", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "6c227b2a5130e57e1aa4dfe9154c0957ec24b3fe5fe174f696502948dc983fbf", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "bed60149b24ee17ed846d7dda3a697f7be29274c8a7eff295c044029426c80b1", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6fc8035de44cf4b0d760e5464ee9309faf1eeed4c54ee58a16921d9f377cd8de", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "38e8dd2485b021b4f92bddc0290043dff37d837bab3f80600468cd06baefa9c0", -"T2B1_pt_ethereum-test_sign_verify_message.py::test_verify_invalid": "73ee3b7b44549061ef9320f4f428f0062afbf9f9c304a05914f975c40af46010", -"T2B1_pt_ethereum-test_signtx.py::test_data_streaming": "de410d2d139d8e8f368031070d8faf8955e9e7270b2029f33f6210e58f8c56d7", -"T2B1_pt_ethereum-test_signtx.py::test_sanity_checks": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_signtx.py::test_sanity_checks_eip1559": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-ETC]": "2f67e05f346a2bd2f58b37afdcf06e63cf3ed188ab0ab3b7e603c65233560eaf", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "47871c6773f2c30bbe87a4b5602d146792dbbd6f84ff1cac94f39b1249061dc4", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "94bad2c330cb3bf46cd14867b05798e96f941856e7f819c6a7b78eb2d13e9398", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "47871c6773f2c30bbe87a4b5602d146792dbbd6f84ff1cac94f39b1249061dc4", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Palm]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Pirl]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-data_1]": "79eb935c1707a3d8e5c6c4fd3d9efdf35b6f3d067d82799a719d137b65e824a9", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "68305dd83a6b5232b2bdba56bf713974d4f8e2004b2a42aa0582c8930d76f99e", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4af15e2a401b9101509ec92b72acbec76730d877e85188ff3beb0efde58ffbb3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c74c621f47fd8723e1c941efd2c6fe1edf576768399be5a970ae6be02b9df208", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "82dec518fccda016deee276683e0f36eab2f286e65ddef09202316ee74f9a6f8", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "08246f4ef8ed0b23646595d5c1d6add57fda9aa97b7a6a735ace725eec4fe245", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[False-wanchain]": "410a2184b0441ef2b5b28adc3eb4f95054a032cc0c2fedf365f3988ccd4fa974", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-ETC]": "8517860f5181ccbeccc1f287729a21891c6a19820755df0b142e9dda9843321e", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "a9ed256695283c59330a6b8ab43687a80a892ce3314385df5bd33ef57dec9743", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "51320a13a7b69b725dedb8a54f3732b087541329bad65b1484f4a0670c1394a2", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "a9ed256695283c59330a6b8ab43687a80a892ce3314385df5bd33ef57dec9743", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Palm]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-data_1]": "ceee115aa7f350b0891cd4f6fc1d5e6906661dc2970182287cf0c923983ecb7c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "0920fe185cd8ea3d08ceeb594beb2754dd4d86eee2eb428699db20e7c69ff724", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "42a01e779c20c8a41d1db846267bc8302c61a5fa6efd5fd3b545cdfa69d2bc82", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c74c621f47fd8723e1c941efd2c6fe1edf576768399be5a970ae6be02b9df208", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fe6e70aa96d82dbc817c4c53dd68613ebff29822b092327ec21a4a19b9b7f0ef", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4f51a9dfeba3c61e2113efbffda8434309034452fd6de4ce672bc6fb2340b0a9", -"T2B1_pt_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b682676c1041c63a8f1a83c1602866aed7e3473c4020145f6d34cd9fe2c621b6", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8e946aca9ff623651652b21ca660bf8a036410a14f601b8d8d60ad482bdabdd4", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "31e265481f5fbefe2dab4df70c7b2a05eee976a90394a6e0528b45cf7c400986", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "6161f1fdc8ad3291510c4036a4d4ab1d4f22cc6131fdc8b3825fe08b7e0001e0", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f3e3ca14db653abec3dbfbde1285a54872f7d14eee2644ed32448c9eb22b19c3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "a733a070d697518c17660d20bfd093c380477b1bb6d61f96c2fe80d794578bc4", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "a97c624c44a0601e2001cc636c61b58573c8109d0f2dd6d36f10bd5d2b32d68e", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "119597b262934b8d305462beb7f1187878681c89aef21a4e31a4f16ffdc6d306", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "08682c91caef72d57b5d3ab4f4d06e87e1e20a5110e3fed8fbf090629d45f8ea", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "afd8e80d92726330601d206a361f90946e26edf38705135a1ddec34086875064", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f3e3ca14db653abec3dbfbde1285a54872f7d14eee2644ed32448c9eb22b19c3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b1c1964eaf297c3afa292555faf33b6bc4c85317c5a4f76df9665d739ab806b7", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "162c8313aa828faeded0644e3bbc10692d8c75891847d0176c38bb5e90a25a25", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "9db949970935fe2e6092fed7a4cf86c5cfa1772a379e58db233b5f963895edbd", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "5b59ef674da0cd341d9fe8dda64641159df7de97b68733c629799f66addb1711", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "f8c50deb390b552cb23e5261d39514110cd2a50d6c1f681b9be6cdbff26e1a46", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8a40264a85338092ddba71c33fef3e620d1b545ad89dd2fd4fd8693d9c89b039", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b1c1964eaf297c3afa292555faf33b6bc4c85317c5a4f76df9665d739ab806b7", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "53f1e323e607bac017f53457bca25a8865dfaea820e7ebcd8a58f9342e2897be", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "53f1e323e607bac017f53457bca25a8865dfaea820e7ebcd8a58f9342e2897be", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_fee_info": "e38fc7ce0ff7010649e78a6270edcb3f981bed7ebdfe16991802a37dae8cfb81", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "a0ca42b6ed7c27a3463c69f9b8c6dc64bd3e6d7d7e6e80860328d9f76f43f0fc", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ec1f83988979335b32dc06a7ff386d1768f47258af16e6148021546cf7a913e1", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "41768158a73af894dff0917daa29c031f43a4222c3c7fc2bd5b50b4134e1260e", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "202a367c3dc0d96e981965c1eff2f18f639fb426c1caf52b2f084ef7edeb3e50", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "ec5e25a5a093e658bfa7b500aafe077498105387853dab9fddbcfdbc11f19323", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "dece8008a38df51ffaf6a54c489cece621333e0e7a44c759ee30d9cccbc44c3c", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "1e6f2d9b72a099718441e8e3200d11914772117b03ac08b426b32e1f329b30b5", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "78449d9ccf04b4533898e91a5dcd8e5240d1ed48d0311a424bdba4b4a326d006", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "a3d15b8fb6b33f02e549f49b597ff1b87abba698a4584553b79c2e774ad83c8f", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "1444aa138dab572f9e64401fed9c0e35dcb913db4d9b97f8da841262b542ce3e", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "d3f22485de684807d4ab1c868fa268266294848dda568a369abc7f344f14ec67", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8cda5b1e6a4690f7dc7254ce6b1b328e47435a1ad24a4ea9647add71fd25f4a2", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "2bc94aa280285bb2bf183f54e25b5b3f63cbcca1594f64f98bc2c0f761c3b471", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "dbbef2b6231d2c7c9b5ced8d9eccbcf877f584c8f40d30b4617848ab80384f02", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "dbbef2b6231d2c7c9b5ced8d9eccbcf877f584c8f40d30b4617848ab80384f02", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "42e34c9d45841e6a6eac428e02a3eda25da1df95b0f7e726ce9571230331e3c3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "42e34c9d45841e6a6eac428e02a3eda25da1df95b0f7e726ce9571230331e3c3", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "065f6b2a179493f49bb1fd096bea2a8bb152eaa56442437d63ddba1354c9ecf9", -"T2B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "065f6b2a179493f49bb1fd096bea2a8bb152eaa56442437d63ddba1354c9ecf9", -"T2B1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a7dcca56ff219e82eb110751f7207540c4436a98f0467940a380669f5b7c7d88", -"T2B1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f17be4bb3becb1a7021a7afca9fef195cf88de7c0f34b51a75f0827bcd4d6581", -"T2B1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_misc-test_msg_getecdhsessionkey.py::test_ecdh": "87d306756ed8f7c371c650998da6df46fa9d789ca90d09b82f4e4fe1962cc7d1", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[128]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[129]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[16]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[17]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[1]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[20]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[21]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[256]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[257]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[32]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[33]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[3]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[4]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[512]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[513]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[5]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[64]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[65]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[8]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_getentropy.py::test_entropy[9]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T2B1_pt_misc-test_msg_signidentity.py::test_sign": "9db9a7bb337c8bcbdd1346a840e382892fe9a6d23da1415d5ff3b6bdbc071b2e", -"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "0a76c58a43902c8acaf9a2462682377e86efbc889735a34f0b9aa0566dd8ceec", -"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c3414071b1aeddae163f8a8673c3ebc4dcbde0917505e0552c84f1d5255e2200", -"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "c08e885441ce7c057bd6ce51ac28eb4fc74cd061157fe3b9ff2d8087d06ca139", -"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "8d06b0ab953d8d0fbb314a3cfae3d21624799e1f7a2d55e5969892c3280275a2", -"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "24ef615f296c2d033020b3292e6ba179396ad30f7c6ccefa8d15d03bb7ec55bd", -"T2B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "303082868f3852e0f973092e109c07525b19e741f623bfb4ff3e454024383d4a", -"T2B1_pt_monero-test_getwatchkey.py::test_monero_getwatchkey": "3e55c6cb886f3608e4ef0412efd9c715bf4e3ff0781a1ab5854e3c92dab584bf", -"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "6cf47de788ff592cd1afcdb9c217189dc003d05f249988fa62cf1276fccf4c0e", -"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8186f3d6fb8709835e0275d7a584b0d98b12085565616fd6197c0eb0e3e762c1", -"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1f20cb33e8d769636ed00c8fb43c663151e468ece4b47fb4c6131a3c990d2712", -"T2B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "68a243b10efda6190dad64b16518edbafa348d8881f8948aba9a8409b56e3706", -"T2B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d629a61a2e2cce499e0c155114171aaacf18af130786ebabe9df960ad939ddb0", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "823951ec4944aa639f1cf9b8c78d6750824f7e63e43d5074bd8374e49f17473b", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0d79f779320d811b2cf59560b867013b76ec1b59d01e56b186e68255f0d39981", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ae27a75560e2965274e388bf96d48fff20db4182156cd745f2f7e04aa30c9672", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "80b47438a4e466f064523a2826d117b9abcf54d69c93b5e3f358a3acf9239b3e", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "8ef9779a36a944a84e5c93f1a87b87aeef32b2773d7bf3f779082705746b0770", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2729e35f4d9947fd8ec02a17a50532224ac2310f3a2d50cb72c6a96f4de95e16", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "a6ce76c218f919507b263591d6d60c20816df25e5d9e57c57c08ca545ccb8bd4", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "2729e35f4d9947fd8ec02a17a50532224ac2310f3a2d50cb72c6a96f4de95e16", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "a6ce76c218f919507b263591d6d60c20816df25e5d9e57c57c08ca545ccb8bd4", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "1873e1ca69c1d8b182ef0dc48445bcd60659e8bc1499f0526a61d1620a1853f8", -"T2B1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "557f4fd4719a9df44fc0da405af5e114e05c3ed437d31488890fa6f4f42aa472", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "7765c5243e35f3f48986203a0c68477ced2cde9966c7fc05b7ea395c3d70c438", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort": "823951ec4944aa639f1cf9b8c78d6750824f7e63e43d5074bd8374e49f17473b", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "1399b9480ca8a9520b649c4f0401e963a36f5242e78a3c4e7ff50b207f8fa703", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "277628a09878d4d29944ba0ce396f6b24bb5b83b0123db7d34daa7168467d23a", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "8e3bb8da31b928262faa4054b7047d6502b5711dd9486b2d0cc6c5c170d0d1f5", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "01da3fb0e00ee0ba50bdfa95cc3140ae69bd29a783685730265b651e752d3069", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5c7bad2174220a8d77d5004344a6ff2eb5bc01573a8e2522d7a7177c4c65dc59", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c164d3691cf5eebc123844751b89da1971cee0ed90089f2035258a002cd94f22", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "63c04532e004636df317f4980927981d76ac9bdaf0667e4d9fa56e8f969c7b60", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "09bf56bf4f2272c7770e724962b605b011675bbc229d521ed2f5f202b586143a", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9d7416669ba394ed9e5dc4fe52f03802f342c8b974f3406071926fd25575b2ab", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c281f7958e2f42c0284651ae86ae29213803e864c981f2346f844b13b45160da", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6160844d44608e2ac7837779cce8aa7dcdcdb00b98da0317f3783d93845ac228", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5265a332b6cd7245fcf742df93cbf5c0d9b3182f2ad24338dbedcf59d60d2e0d", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8e1038e455568b342b8e2a03219d2549831555490a271c0c804272d0034f4de2", -"T2B1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "20121d7ce7e78faf26f489b3a868fa3361bc27b731954c9ab96b98ba238d60c2", -"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2459be644d838faa7157d20aaa88bf376ddd4189a47d343227b0909ca53f7854", -"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "69927bf3ad6fa036b482f144f9738f1a746d9ccb8338f5bc09fb8199ad58f5c1", -"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "645430e36ff79c99c1889f176896a9a6abf9a72b6ce8efe0c95fd89aca8334cd", -"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "c793384c77c9716eedab26ed0b23d0a36b6a6288191bb9bd4a7b831a005d5a56", -"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d6a7f646263f1c2ce4a725861683a90e6db1d31933c13cdebf14b605be6bc44a", -"T2B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d6012c289626344e7ce2a4f46f1d8987ff63f43903de8df0170ba110757cc681", -"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3ad33cb257388ddf0d544696b2cac2489b892098739bc493e50e607f4595e00f", -"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "26ff9331165091206919f5c3fe37310489121f46ffa62d0b2683a546de3046a9", -"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b2bdf1ecce3d3f27bc62f14f20690ad47f3a3c41046284f5a1aad4be42430c90", -"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5345e7acf8d1358da77601e26fad42908b418c1179cbcdb5fdc9bdbfca66e41b", -"T2B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "60f775cd3f0af4f315bba2a036ad350e95d99d12a6f15a97505c3bcc03724d4c", -"T2B1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "ccdc2fc507e40a1dd10961bd588d3b3a25295ef65491cbad69c4b13955735f0b", -"T2B1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "80dbdd0a3a28a438560b6200fff5872268eda28c68352b4123cced0f0038ee0d", -"T2B1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8b135aae698ea6c8476bb72644ba255a9cb9382324be80ad6d496743fa1287ef", -"T2B1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "aaa78e37b29827f033a0ac2476e73e813d1f6eb33cf8d80d75bb6b1f8398cb8d", -"T2B1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d9afcce02aa1f27149cacd0998bf3d1a20bfca13289d74373467ac64207fe91c", -"T2B1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e6c95dffae5589522fc26ebecb5f89df2cf039a859e3adc4502cfb11fb75f42c", -"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "9a07209055d9b285e6e51ac417adac3a1befdc7bfb282b70cf9696afa605d6e3", -"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "f941e3776506da963228974b5e15ed8ded5ed0b2178c3ca5dccf7e27c89c0267", -"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3ad41f14cee69fc85f07949b9c9623657f33bf205c875bcce209028e2cb612f1", -"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "3094fe8c9f26e880a64f5bfd03ceb84860c24e947341bab2aef472f9f364a577", -"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "33c01fe67b0695867faaa580c9fb9bf7b3591c6d83bbdebf4d091c67ba2550bc", -"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ec50b2f93b451fe4b9f77ec849afb8af8e10969654b0c5d3585d62623a00e4dc", -"T2B1_pt_ripple-test_get_address.py::test_ripple_get_address_other": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "933f5da2ef320ba339700440dcbaf01c4d7b254278dc926dd8c889d60e26dc25", -"T2B1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "592397e7f3161cab5c7ccf85a2aeb4f70369dfce9534fa7d938915ed1dafd1cb", -"T2B1_pt_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8375e4b402b5fc431fc37d42b4ce605fa43e27388033eda9e1ebeb412ba4f925", -"T2B1_pt_solana-test_address.py::test_solana_get_address[parameters1-result1]": "f40d6d7d69dfc395e53aabee305032a87e7d11d013e43248552369ddff5cc6f8", -"T2B1_pt_solana-test_address.py::test_solana_get_address[parameters2-result2]": "afc204b8331c7207c2fd999af069596f6ce419135090c9caf43a63642bfe3662", -"T2B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "58c68855d5b0b65aac0c030e830ceab4ef5091d6fae953236da7efcfe55a92ea", -"T2B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "b1c1e5481c8111686128d23191d6e92c9288fe179499ee0ce597d652e93aa0ab", -"T2B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "abcf3e3884360b66fbf8efbbafa70041c1421e7658c238e602dc3e5fa952b43d", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "917ca824ec70a3f162ccd145f552adee1865da399d64786041183a369746a1f6", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "9a1d50b97dcf5982a91e38d79f19b494c75b28da92dfd1466ac84a273c9c665c", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "090e05f8b75410a62169cbc4e44cde2596b33144416f27b13060c4e2d7f94fe8", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "6f9a071b8d32fde07c061b4693a00c8d1f708c2cbfb56b72626c418439695b37", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "450f5caff18802a475d2b4268729d12b6c4f30773a71ec6b97eab442cca4103e", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b6eee5658d3c75c3ea1d6028827ca1da1748dc5821ddd763bb3f965235001a14", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "86861f9cef8596efa0ef7c52b53a1b187f478deb68b0a29ede72f30bd33e8926", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "88bd16ea1b8b3dfd17e5a41bac7e6c700d7fd839182da016c72208acbca16e51", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e2ecc7e199180ceacb4c47be256e45bc182b3d694865c82dfa6871ce726b384e", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "b5dd07a4dfd24859c859a86735e7deaf4c41a6ec617132d6af9eef7d65eacc78", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "1caea51a6f868f234435052c43acedf6fe248aa83642e8e67657985b4946ae5d", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "bf15077db854283fdc941adc329cffba2ddae6b8408c8cd365e66917ad306480", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "31aa430f793519c8e620029c6ea408c3f67f90b5b1ea71e96f8dcba179b04bbb", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "fbbb727ef1ec1d516a3217c3b88c936b9e6d8b080b25c8cd5391b57dbaaec2c8", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2251f88877568fb19b12a105007dc553d00f1c139a4bf8d0d4f9bf1326c98b06", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "3b282d92e6c94b66c6d36764741784bfa67699690f7db728587d2c29ed69946c", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "8a9fe94cf43c2fa1aa2fa8eb0e8c6b270bf8c66b16543a8fb02ffc4eb48a0485", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "024337b5c37d3e3fc0d5b92d6ba0b1cf78e05087bf37499c217b26531df8640b", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "cc35caa5417eec3be69a6de90b599604b3d815693ac7d13237ce9504be2bfa3f", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "66b2c32258ada6d46e069c789b0d66aaae015b033b543ad4ed50f167ab4c8a0e", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "8670794d2dc5f9327b9b3f3d4de2d9701ca10b4fe33b5b88e745fb7d6c308062", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "1de10f0228323220b9f673ad43a6149c20dc0e25ebdcf74ffa7d4d9f1bbc1ed5", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "9562fab909b7d9ea49ee5040e23421f673754f1db11b6a03d240ac90d8edb530", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "29bc18a6c61c4cfd30833609ab25e6686fbf09ec6a758abc34cca768f8bab237", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7cce1cb9fcb75b16551059568833ded2cf6afd19468bde03ca89003b568eb6f6", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "77319cc592f9e13ed71bd787242cec93c3c8207f498bc90d8a3f999722dcc5df", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "85875cc87930d402423cd6edf3bac971b27d1de83375f0fbd4c4a4b3e9f425eb", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "40e6064e2382888660887d320a8b11f1fe1bfed7de1f3f62ef3d2069df5dcf05", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "088b4ffe32ac605f6122fc04fbfda7a4cda7725dfa1a10b13ead6c6fadc7406d", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6a3a8037692ac1c2a5ec97b3b59751efca03d2036f1e96f4d69222b09dc48127", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "43e6d359608a20996c8cd228b8095e7fc89fbc6eb9baceddf998789043a9dc99", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "94711b22f8960cbb14fb3ade2ba90696e6735943d7a28e76fb21b49bd81a7b42", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "11b9424ba0726adee544146fcee3c040605169f4b221b3438f020fe3f62c3885", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "91954e46c15b179af446e12363ff9dded761d6e93e338f94a405ed6cc483a557", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "91954e46c15b179af446e12363ff9dded761d6e93e338f94a405ed6cc483a557", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "ea44f5d1397ecc2990c1ef48b4f8657aad2755c3dc33b544ab92167095aaaf9e", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "54871ffc5fa5899d9cb700182835a4a4d8c64766c584e3813063fd7314424e58", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "395269282cc1e08eabcfbe23995d0c5811b00bb08b6a2d42b5fb67f8e73ee708", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "34b72864881e1cee1099e5bf8671853d03747450022be72d46d1ffcc533ecf4e", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "b806e64ff5a23a7617028ea0559ce894084cba543985756c9e1ccead14a221cd", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "05206e05097567c9ae718ac1d5a7fabc4d03af37cd1af2988495651846225a73", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "08cf2420e3e5c8c2dee2762f99de097e8f28efb8f80c405e8e8a45a47855cd2c", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "30f977c994ef82ad78e6dd2f92725d3fed37ee0a6d24f89fcc52fcd947f4f86f", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "439e6ab0ef13292c3288e8a1cac9b08a8756e30d17ea1a330eaaed5b68e24faf", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "e384ca9ccfbbec07f685d41a481484f8842b896d637036bfcdf81fe87c748185", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b1d683fb7dc8a08fc560adeeb5175df77bcbc4add5dc8fd09de8fe2550e5d7f3", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d66b85a0258ddac63eb90c88b2e93b17b323aaf9df622cfa7c2a9cbc21f74ec0", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "581cc34f2a32bd731cd06f5af7df2a5239e01cd499ed5cc537ac1ef660e464d2", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ccfc79cbb555108fc21dbe1c1e57161f4b451731cc6d247f1b559df2afb4a108", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[split]": "70ec04970f01fb3e6e150ef195adbde9e71d2fb088f6399a44f6187db6b242cb", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "34e23510c3e876b8b779de9bef14a4c2d43e94a046cb815fdc0ee5d7a9b34983", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6f31d749dcbf40a0f795b4c9ba4bfc33d57101a1a25aa9eddc25ed7632082f89", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "b556f09028cf77115ea425bf74e96e8c8446e1977f1bdf57d4836e178b1a041c", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "80ad78176e6e5496dc46216a8a34895c8b2d172a7e15d01440aa7d2749d88757", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "deb1b77316f550bac7c4f11c991b92c2c42dc8fb3c1ff8fe95d150fece5ab4bd", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "c1b8e115c0acb57b4819e5639d2afef7229c7fa407b76a1983cfb3145ad77949", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "a46aa9f17af3041e775a8afc1fbd60b6fc08afa4408b054312e86bff00f443ab", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "f073a2c2f96a5950769a64cd22f98febca63a6149c6dafc9dea13be28b2c8b41", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "1c7ed565afbba843d338e06cbcce470d40f2034403859b22b931bf3ef0dc2fc9", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "86b096a832a8d083b9754c5c93ad91ebbc6fbe69ed14a640cca862f18adcd093", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8ed84d529380b58436efdfe06f64617173c3ec6f99c85839f109abcb44ef1945", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2f7b45277cca84351d70e6c11ee867523e6df437417b527af30ba729a3b3fed2", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "c111eba8baedfa1d46cc4693645141e9b01bc18c3e338fbf5e0d0911cddecd69", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "e696b40dc9e1de72e84ee137c679e235e26af537ea73bb963303460080d1b172", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "0c7f17bbfea0cce432cfb519c0def24c461de96340c910e46d903cf82be86018", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "e42db2d28710773ba7075730de64087425255babc504412b094ee59ca4eca2b1", -"T2B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "c55baca013cbbf87a114e88652ff75cefd6068c3de2a65083c4782d3b13646ad", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters0-result0]": "609864b38d00c2d93f605c8ca73c8d6a2e0bc2b2445083e9f00193a3234eff44", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters1-result1]": "6bb7ee992c23a23e1dbc5cc5568c08529132558d34e4cbc55e1ecd835c61d351", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters2-result2]": "bb429e9b63e9fb0c0a1a2e82f0eb7055a602334c32507c9aef15408ee6b4120e", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters3-result3]": "058cf4f1d1d3351c5e15b87f72f6b745420c6952116906a2dad46c421f9eb5fd", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters4-result4]": "21fc6cf8d06c727176ff654210b7fbacc3355c2959c5eb907904bda0789c71a3", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters5-result5]": "09dee197110590161bfba85025c330079e90673d9ff583cf75ba9de2325b3c6a", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters6-result6]": "c815d5518cfcf5da24c0ba47d5992aa72c03e787d04b73289682c5f6ad759abb", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4f52f9a614b1c5dc7a7294de58d01bf916d6ba3ec206847c5dfe5496ecebcd88", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters8-result8]": "5f8a30313b4f31bbfe69ae67b3fec349f6731ab61d42e5cf70a31f6c69f4a8ac", -"T2B1_pt_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d3404e93c59052c031cff287da48a268b9b1d814ce8f42b6594bbb9f3625be6e", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "469ea58e29eb9af0c74ae312117d9e3dd192872a2fdba1907c50da3f6b7ce91b", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "709d7e35b86408f5125545743795befe55ee2e4c4cb34aa69d988127b63eb04a", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "567cde6d1889fcdbacd25d609c2685cedb4e3785a0c8e2ab7462e962a2ab731c", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "4b267876c9aa32cd68e5f5841eea28a1e76622f2bef3ea628ad29da4e30d82f3", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "da3ffa919ff851542bd0e2fb9cc32c5d4098036220c7690f7292ede317b87997", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5813e6cffbecdb2474a55956139c1ac4b2df0e6d22240fe818eb7662530bd154", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "0751692c22a181b898fa283a2b9b014e5b6293a37bfa4a5b7c23beba54b82016", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "08bb76c59f57f4aa655d3e1799b42fb524b54c446f658b8fa616e15820ccb76a", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3fbb4db9a6ff1f9639e89dc2a682c540efe25a4b4a2ba73d580c1abc54eb6507", -"T2B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "1586a738146d35343bd6c8b682064ce65d16a210824b5aad365aa988d3509229", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "761ea9b7572952f2e850e3164508e6aa222d17f0fa08bb2ab893eb975d50fd96", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "fdcee3cad1de28336f03bc0a65536c1285425c9fa6a706b1e9fa5fcd47feea5e", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d614e0406e0e3b604fe503096007f2ad8a96d3e28bbc56e6caae7562ebcabd35", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "44c17d204f9d4cca69d368d9eabea2edf2aa8cc5d2a3a9b93e5c39424d3082f8", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "686098743a1f17d77b074ad89da99a590ba0d39aac3340f91ff6092ebcd387e8", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b9260b8f76c71af0efb456fddcff7ff9060e9053590f3d9535bde17607ccbc56", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "af0d9cd2249be88b54cf2e6fd7c84f468fc1d812f828287df572297ab5436c02", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "d86c27240f991d601bf85d44bd9a533f0ded69f49101649bbb5efc7b27c910a5", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6461a635272ae5a931894a20ede00da796674b23e584629870104a3f0f3395e9", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ed400b47c749676789c49d1d2759901a0ddbe3b673c385aea97c1539fe0a208", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6233158b9a0118671ebe205153c2462df79d932f0a284ad6bc9c33a52636f754", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "09bf18b6e230b8f71c998adde617060c55eeb4c0327c17e34fa25b73d4169a4a", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "835e90eea34e92220ca46bf124e3c38fe80978595ac93aa80bb670bb397bd42f", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "953e787c09adbfc382300025b84e3f4e7ca7a8abc7dfcbbc1208241f03c56ac7", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "06d9ca5c8238ea6a0b6b7292bf51d5a26060216830803e5d27a327640d7ce5bd", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "3b332667051bf0698fd1b0dbfa3a81295e891459e571ee1e4a3d1e33faf7cfa7", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "db7b3173e740fdaac4b705f151208fafdc738c722470aa70d442ff84793e69a1", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "00bec3f2ff77763fe9f993ff2e05c317a3dca91b0c21fc989915b948fdabaf1e", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "f74aaae5e16574016ec7a5c89e9e45745b6535a364f22101beb49952cc2dd895", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "3a2f658933cc6024981aaee957a4241a0172250618166e58386322944de677e8", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[memo_hash]": "5d90db496990f77059be0658845fe21b8af0425d5a5a6bcf9c67410ea6b63f7c", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[memo_id]": "f9aa7b5280688d20568a95fcd1e07442f68917632010da381b1a9e93c983af07", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[memo_return]": "5202912307e660af7def351b938204e010646ba42a55a6f113eea124ea56d48f", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[memo_text]": "97b687d16eb0efa1da48a741e95b179a5429087dedaeb4fa3334dec76262aa74", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "50f7ea61488eea43001249798cb5f2680abfd948c4202e73ae948422d7b45353", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "063054c8e5092fd459284eb0c92d2b40f7c5eb7f8811477da1785d51557cca1b", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "0e0e27a24c6136767cd20ceefd20073becc97b1dcca81292205405a895cb1148", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "d21f912a2019025e05039f53da75d08e8703384bafd3ba25b705f472a2bfd1a5", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "db758027428d2d53ff8393069fc40f2c70b0aa172bc990ffd344e0ea1d778922", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "db7b3173e740fdaac4b705f151208fafdc738c722470aa70d442ff84793e69a1", -"T2B1_pt_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ad079f6cf5ccabd0462cc684c2d2f2cac2d96c52ce5a296820b5e68fcc0ca67e", -"T2B1_pt_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", -"T2B1_pt_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", -"T2B1_pt_test_authenticate_device.py::test_authenticate_device[]": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", -"T2B1_pt_test_authenticate_device.py::test_authenticate_device[hello world]": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay": "e8730a5b6c60fc68486a3d8a963b98b2fc40e2216d4f5f7afdac985f6030df4a", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0a2f527d57f6ec2e36a0d106c4c3bc02eebc66f3c94370dd582ca4cff3a5cd1f", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "71942329a9781a8bfd70e891b46c0ec52ad9c4fab6b53523f789806ff5100509", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "374122206b9a8660972aee4f9a2f1b860ed7ab24c1222af2d74302f225838bee", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "90549dd3a613f2750cdc3bb6bd12c7c17e0b6c64b04a221ddea2259c2f4ecf8c", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d6db080c545d842aae12c5e480754135ba5d666aac04a8c72b4abf680e2a3728", -"T2B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8b55c117211b18a1b13e47537a48ca4e8b83cd53d1e272d68dfe596f4f2c993b", -"T2B1_pt_test_autolock.py::test_autolock_cancels_ui": "fc6909960588b469b4cf5960f2dfbc91e074e1d03672616837741103b53cc62c", -"T2B1_pt_test_autolock.py::test_autolock_default_value": "b13c3e9f738f65569f7bc7bf31abf82c19a6a27b4f2ea330df280cc66d22035b", -"T2B1_pt_test_autolock.py::test_autolock_ignores_getaddress": "b17c9a46a825916c6693de47bdb7c95202d38ff5eeef6d1e38fa0bc481ae69b5", -"T2B1_pt_test_autolock.py::test_autolock_ignores_initialize": "b17c9a46a825916c6693de47bdb7c95202d38ff5eeef6d1e38fa0bc481ae69b5", -"T2B1_pt_test_basic.py::test_capabilities": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_basic.py::test_device_id_different": "b38f74fa7c0d446aad690b7da5aa0b6a3631886ed7cfd27dc1a1fd25013f400f", -"T2B1_pt_test_basic.py::test_device_id_same": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_basic.py::test_features": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_basic.py::test_ping": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_busy_state.py::test_busy_expiry": "931eb833565b33ead52967976744fbec60103860fa28cd8e235e129dc89d5466", -"T2B1_pt_test_busy_state.py::test_busy_state": "9ea240c028c13691c29c0c7bfc12718af63e00085e909de85bd8ed22ec0bd833", -"T2B1_pt_test_cancel.py::test_cancel_message_via_cancel[message0]": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", -"T2B1_pt_test_cancel.py::test_cancel_message_via_cancel[message1]": "3dd2bdfaf2e6acb9e5e4dc4c8497664979b294e77b0541f51aeecc27c19b8e84", -"T2B1_pt_test_cancel.py::test_cancel_message_via_initialize[message0]": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", -"T2B1_pt_test_cancel.py::test_cancel_message_via_initialize[message1]": "3dd2bdfaf2e6acb9e5e4dc4c8497664979b294e77b0541f51aeecc27c19b8e84", -"T2B1_pt_test_cancel.py::test_cancel_on_paginated": "64ca157fd3477b42f2588fc17204c8793bee274a29404b4cef12d0a07bbcd780", -"T2B1_pt_test_debuglink.py::test_softlock_instability": "72686c47fb5843acee7347ab1c92337b69393bc2fc1ee5d63be16651ea6dda26", -"T2B1_pt_test_firmware_hash.py::test_firmware_hash_emu": "4c5b7a1b55fd9cc5e30c21aa5b5b603de6d8a63f05216cde4fa61c984f8c9be7", -"T2B1_pt_test_firmware_hash.py::test_firmware_hash_hw": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_language.py::test_error_invalid_data_hash": "210bf76eff7ec32d6cc2cd2fd651656d8f92e70c03a522f6fa83aa50680fb67a", -"T2B1_pt_test_language.py::test_error_invalid_data_length": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", -"T2B1_pt_test_language.py::test_error_invalid_header_magic": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", -"T2B1_pt_test_language.py::test_error_invalid_signature": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", -"T2B1_pt_test_language.py::test_error_too_long": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", -"T2B1_pt_test_language.py::test_error_version_mismatch": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", -"T2B1_pt_test_language.py::test_full_language_change[cs]": "cd06e85ffe4e3d3b99e8648d6e56f8f4bf818d19feadab712760891c07561ed2", -"T2B1_pt_test_language.py::test_full_language_change[de]": "4684e9ad4f7c390ca4c1281b7a35fb3754f5ea05bd4e61e44672169e09e6a40f", -"T2B1_pt_test_language.py::test_full_language_change[en]": "343e0263b182a8ad9a7c8afa02691ece986c3f10c57b7fbb2022b8b7333b7942", -"T2B1_pt_test_language.py::test_full_language_change[es]": "cb411bc6bd2a32e93b8f3f7b4bbeb64929affffb4e4321b5f32d240eda94b5e9", -"T2B1_pt_test_language.py::test_full_language_change[fr]": "866357fdfaf4212c94726b03a7edbaece64439ef0bcee6d76d721dd76f51b4a9", -"T2B1_pt_test_language.py::test_full_language_change[it]": "c5c4f50fcaed73c9a4844771364225d70f0f3a5a6df966969f5fea9279a0e293", -"T2B1_pt_test_language.py::test_full_language_change[pt]": "303967db180a4286a90d39c42516c38d1a28bd2c3480d4c22064e477197f8027", -"T2B1_pt_test_language.py::test_full_language_change[tr]": "d46db9bb2e7cbd60ac208f77937b918edccd295274559267c6db58cb953f3b4d", -"T2B1_pt_test_language.py::test_header_trailing_data": "93f41f7199b6934f54529eb008119be5e4abf40eb3007770c39057d36e6b9992", -"T2B1_pt_test_language.py::test_language_is_removed_after_wipe": "0ff0db7c6043b28e3891a7a3768cfe4ea437410af73ca5379ab013200a57845d", -"T2B1_pt_test_language.py::test_reject_update": "80c672bea6b6b3cd5284592cec013cb55344aec2c037a7fe5bd364895232ad87", -"T2B1_pt_test_language.py::test_silent_first_install[False-False]": "9f183b36d5cb3b7250392c41efdcc0880a179b1376a71c8c7a28b7d05691dedc", -"T2B1_pt_test_language.py::test_silent_first_install[None-False]": "9f183b36d5cb3b7250392c41efdcc0880a179b1376a71c8c7a28b7d05691dedc", -"T2B1_pt_test_language.py::test_silent_first_install[True-True]": "7b19f0b448f6673f36f74934932823f9d6e6e69297c732e141cba19f3fdaab41", -"T2B1_pt_test_language.py::test_switch_from_english[None]": "eb200c481edd0e997eace8b83d28ebe1dd3174a16d9f1e1e1d6caf2df7d08655", -"T2B1_pt_test_language.py::test_switch_from_english[True]": "eb200c481edd0e997eace8b83d28ebe1dd3174a16d9f1e1e1d6caf2df7d08655", -"T2B1_pt_test_language.py::test_switch_from_english_not_silent": "583e51cfbb948cf8199be2e14637331c8d1d2cd868fd7db6683be7d39a169c50", -"T2B1_pt_test_language.py::test_switch_language": "3170c5aa1c90e877eaef1b1f67ef609f76d7834bb3ebca8db17db442ac101434", -"T2B1_pt_test_language.py::test_translations_renders_on_screen": "b9a2277470a2d95c288ece88f2799f1f4357ce159a959c6cd865be1ab55219a2", -"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "387b7e9f5237840597f48363e41ff490e78f3a4d14b14bcafe8f9b7fdc3fce8d", -"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "3ce656a9f9451c655c4f1de8551674f9ca443872eaab83eaebe29384ec57d1e1", -"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "d776ef7ae2743574a1fa11fecf5a5caca6f3397bb6f7537c40cfc74187f59399", -"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_msg_applysettings.py::test_apply_settings": "f4a2117bb169937694b0afb83fa495cff59a9bb21ea447a2049b2c7bd8ba2edb", -"T2B1_pt_test_msg_applysettings.py::test_apply_settings_passphrase": "709fac3b928d46690068899259fce3ecce3abc493b9edf447a22edf951e6c615", -"T2B1_pt_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4165f9b2c561e70a98e6edc9f589ab323275658d47d973a90a5d89abb6b49492", -"T2B1_pt_test_msg_applysettings.py::test_apply_settings_rotation": "ca2939b669a03218006fe3b76686223ba1190d47bc46d976a443bc8e6831d521", -"T2B1_pt_test_msg_applysettings.py::test_experimental_features": "1bd50bbf587d78a1ad3d1b560058cdff9621bb0db857b218b9f7242883899848", -"T2B1_pt_test_msg_applysettings.py::test_label_too_long": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_msg_applysettings.py::test_safety_checks": "057d25c869b70eed773da1617221452122d2281a2485266be63d381f4afba07b", -"T2B1_pt_test_msg_backup_device.py::test_backup_bip39": "37e315f11c171cf2928fd7587e697201f9eb0045515ab1f4e03abb76e681202b", -"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2c6492c555f510c18367661a5424fb02de37aa88d8bcbb2adffb27044331a207", -"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "563f9ee6a5502d8ced7bd10da32543d8d2b6e6a9cab7fb465690fb0729d7752e", -"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2c6492c555f510c18367661a5424fb02de37aa88d8bcbb2adffb27044331a207", -"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "989b0f287872ca685a6c3009322f324e4f41997b8e7c91392137dd190805c1f0", -"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c87b112567f0d2c758105d566e3ed0ce4720aa4e8f312083af6dc1bffbb823af", -"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "bc2c044f694a7d532f21b3aa921f07a077728bd61c6daebf0c468fd434fef04b", -"T2B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f6b819e88f1b017ec13968ee3905dd49635c54fdc29199a0ca92e0dda4ed9f89", -"T2B1_pt_test_msg_backup_device.py::test_interrupt_backup_fails": "7b2a4aac97b65d73c14bb83e26f886f43c9271387534d3f516fa872e8adf376f", -"T2B1_pt_test_msg_backup_device.py::test_no_backup_fails": "72e7667cacd2f868801b489ee0a8cdc5302ee990acfefd7aa3a5898821bb37ae", -"T2B1_pt_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "4cb9df7adb666073f4623bb9f4c65cb490db46c0c856765cadaf1dc1bc65f915", -"T2B1_pt_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "d69c32df2697c5ecfe6b73d6a3b4444811458aca1d40ca20c57cffcb876444a8", -"T2B1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "90730a883e0b6ff6b53c82920ed8ea2103521f76ebbbfdfb4cb45feb77b80861", -"T2B1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b6484f93bc1a07f91e7fc393d959b82e36458764b4a8d2c66bc37dca58d07438", -"T2B1_pt_test_msg_changepin_t2.py::test_change_failed": "360b1b445c839659ace48dff994c2f92c2d23b5fd442ba66f9542f88a40c0133", -"T2B1_pt_test_msg_changepin_t2.py::test_change_invalid_current": "7cc24fc5831ec4720179db3ae43f598ed0cec1a49ee012e3efb38ca81b523eeb", -"T2B1_pt_test_msg_changepin_t2.py::test_change_pin": "0276e6e3156bdb56b547fd02168c7291f3ad20552c3d8a05a72f07676fcaeff1", -"T2B1_pt_test_msg_changepin_t2.py::test_remove_pin": "d43258a1fcc538f4e00a3881dda12bd74afde997dbbcad00d599fad61a4a79d6", -"T2B1_pt_test_msg_changepin_t2.py::test_set_failed": "2bebd183b5dd254f0e7506c9d6adfb1f0351767d40f9aee0b8e787f5d6c00584", -"T2B1_pt_test_msg_changepin_t2.py::test_set_pin": "9ad100dd8c3b7931a27b40285087df65c8965f0bfdb89ff4786fdf9db8454ba0", -"T2B1_pt_test_msg_loaddevice.py::test_load_device_1": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", -"T2B1_pt_test_msg_loaddevice.py::test_load_device_2": "d85c788c4a3302ff54916e3526809f48f484d594be04da46efccd003bc040b1d", -"T2B1_pt_test_msg_loaddevice.py::test_load_device_slip39_advanced": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", -"T2B1_pt_test_msg_loaddevice.py::test_load_device_slip39_basic": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", -"T2B1_pt_test_msg_loaddevice.py::test_load_device_utf": "b3a5a47dd2b2b349ade5da34fbc7fda2f449e9a2ce8762d21153ea2d39bc284b", -"T2B1_pt_test_msg_ping.py::test_ping": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", -"T2B1_pt_test_msg_wipedevice.py::test_autolock_not_retained": "10825caa38e2f320f2bd89a7a18784558125f2fc4df585cf7d7ffac87cd0a321", -"T2B1_pt_test_msg_wipedevice.py::test_wipe_device": "b38f74fa7c0d446aad690b7da5aa0b6a3631886ed7cfd27dc1a1fd25013f400f", -"T2B1_pt_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f41aa3b21d0a3726ef3412a8b41993d8de7b48bb8ab18f04f9ade50220188f5e", -"T2B1_pt_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f41aa3b21d0a3726ef3412a8b41993d8de7b48bb8ab18f04f9ade50220188f5e", -"T2B1_pt_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", -"T2B1_pt_test_passphrase_slip39_basic.py::test_2of5_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", -"T2B1_pt_test_passphrase_slip39_basic.py::test_3of6_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", -"T2B1_pt_test_pin.py::test_correct_pin": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", -"T2B1_pt_test_pin.py::test_exponential_backoff_t2": "b0c2b8e6aaa035bc86dbc6d8b6d2ffa1a09a8b313092cfec8c5b75a720c67e08", -"T2B1_pt_test_pin.py::test_incorrect_pin_t2": "1d783b22acda3c7e84a9ee6dc0011f2de8b4e277cb7cc61e1a8bd5c411bb6767", -"T2B1_pt_test_pin.py::test_no_protection": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_protection_levels.py::test_apply_settings": "5e287f538fc0ad2301ff5fa854b2f61c5502c00888ac318353b00336248180a2", -"T2B1_pt_test_protection_levels.py::test_change_pin_t2": "edb8128db5a8fcfd91f364c22fde748b8d4d80fa82d48f5ec8bdf1b41fa434b8", -"T2B1_pt_test_protection_levels.py::test_get_address": "e8fec8b7acaa4d95975bf7e40ea82aaa197a0130956dbafe81b9758a055bb2ff", -"T2B1_pt_test_protection_levels.py::test_get_entropy": "17bc0fe7be82f8dacfdae1cc2d1a90ce0873bcaef9da44b608a3f165813a40f7", -"T2B1_pt_test_protection_levels.py::test_get_public_key": "e8fec8b7acaa4d95975bf7e40ea82aaa197a0130956dbafe81b9758a055bb2ff", -"T2B1_pt_test_protection_levels.py::test_initialize": "5357802cf9a5776d29611d91911c552137fc1ddac9abda1760433a3853d4c43e", -"T2B1_pt_test_protection_levels.py::test_passphrase_cached": "9ecff1215ff6d032818de1b1fddb72cd5295415b9e353d004d0c57dce38a8456", -"T2B1_pt_test_protection_levels.py::test_passphrase_reporting[False]": "628fa33c0628038e9bf17cb9f9c74982f3e149e16b772026e9dc7f94d62ee103", -"T2B1_pt_test_protection_levels.py::test_passphrase_reporting[True]": "5b608af0d8b9ca61206203fb2e273b6143a2054326390cb1dcdd8ca076b27a5d", -"T2B1_pt_test_protection_levels.py::test_ping": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", -"T2B1_pt_test_protection_levels.py::test_sign_message": "c37698e12400928a9a5d13aec7503f310688226adf63a32f008308b2551e33c5", -"T2B1_pt_test_protection_levels.py::test_signtx": "5cbcaf1d401bfc00393f4eb3c25c671d5a3b2168ac9c3fe1ce6f0f956c1dfe4b", -"T2B1_pt_test_protection_levels.py::test_unlocked": "f545f1ae5c4ea4b10440263558af40c205b576eb08d45785c4b2a65afb0dd284", -"T2B1_pt_test_protection_levels.py::test_verify_message_t2": "e1994ac3e25a9705d51a8e00fe07801ee38de58a7cfd223133bd33137abd17d5", -"T2B1_pt_test_protection_levels.py::test_wipe_device": "791c4334a6b565ee3dd654e53043ac7968e4a01303a13e308b9f6302b8175ccf", -"T2B1_pt_test_repeated_backup.py::test_repeated_backup": "7546777c5454e4227346e5329d8b864af1010fb082db33cb6e6706ae66f0c19a", -"T2B1_pt_test_repeated_backup.py::test_repeated_backup_cancel": "c7b82ef771de5388d7efb6b5110a2c7fddc5d6ba2962cdf60b826799815ed95f", -"T2B1_pt_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f5e2e90f537414cef65bf68112d73e913fec7a9f35b7b43405a51dd700295ddc", -"T2B1_pt_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b8efcd573c8c805347daca77ee8e00acc9fe9b313f62acd68b422853422c9e33", -"T2B1_pt_test_session.py::test_cannot_resume_ended_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_session.py::test_clear_session": "ba97a0d9a13bd7e1ae589e483465fcfe9804a4ea4e2b6379b4b801e5d67dc6c9", -"T2B1_pt_test_session.py::test_derive_cardano_empty_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_session.py::test_derive_cardano_running_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_session.py::test_end_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_session.py::test_end_session_only_current": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_session.py::test_session_recycling": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", -"T2B1_pt_test_session_id_and_passphrase.py::test_cardano_passphrase": "373984ca846e93c4dc2410598b3bb096253374f8931b6642677bf828a2ad0d04", -"T2B1_pt_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b62cd95b53e210403be59ee760732f69abd158a1b5a91b909380ff534d3b8bce", -"T2B1_pt_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "a9cf2f9c0797ac708f07a12b8fee8a9a3ebfe5229417bd774514251b9e2eebbb", -"T2B1_pt_test_session_id_and_passphrase.py::test_multiple_passphrases": "13096c4c72f63e2cb4acc5bb588d635c637dc328779f9e99b39aadede2dc3cb4", -"T2B1_pt_test_session_id_and_passphrase.py::test_multiple_sessions": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", -"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "240442a32716af5ecc7c3088b63790c2e5616226f4ddd8be1572a49aff151f3a", -"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_length": "e800c3268be100f5542371e919a6ae23d01e6d960b5e865f4a3d1d3b0fc6feaf", -"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_missing": "9ecff1215ff6d032818de1b1fddb72cd5295415b9e353d004d0c57dce38a8456", -"T2B1_pt_test_session_id_and_passphrase.py::test_passphrase_on_device": "36d2aa7c224b3aefd61048024f02ae0b4caf12c46580ce61570b9445503964c7", -"T2B1_pt_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0b0524eba8530f5d4e490fbf8fa1fc632e5d68407489fbb6bdd8be7d49d51eb1", -"T2B1_pt_test_session_id_and_passphrase.py::test_session_with_passphrase": "729cfd6983877ba5e279ad048a515f3b5f56a74eee4514eeaade9461e8ea4dda", -"T2B1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2c6fd1ecbc7bc8483858ef82ab0b9114896c97d713247559612c018e9c0e0e42", -"T2B1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4935e8e3ba9b80bdf2b4ff8de736baa6de935fe3e05ae36b0521e72861459348", -"T2B1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "2e6b5eb4346f9580e93453787fb93a057d7a138c0fb35958bc32fded388aa496", -"T2B1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "d71fb9cf3e6f06a5d8960c79d5ebfd6e05f90877afe4b1d4717a587d74694b79", -"T2B1_pt_tezos-test_getpublickey.py::test_tezos_get_public_key": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3d27dccabef12219a0f3d1dd9acf5e04934d9cfa7b469889b1349fb27ff8ea2e", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "28200480bf658e35d466db7e83fb7aca72bc4655a476e92a70522c0cc5ec2674", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "557c1a9c34678a1c162c81bc6f8eca06417378bb665bbaa9c3bc2b957ad96402", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "db8d0b0ce60d01355ba06903402cb39fb6cf595397c71d3f91a8b578ada9e978", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "0671992818fddc551ec3b42d5b22fc20765695ddd7c13c6aa2d8b8109e7c66ab", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "d1efb10fd1b980bd36746e1f5ffe002809b96332e80007ddf148c167e9c2e2d2", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "229814bc6e047a2f781d0a7bb217da23a43f106c21e36c6452cf9a8e52a0f1a3", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fc0fb2024058497d7de828eb7c8f2bb103282563179729af5483ad4508cbf775", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "dc6dab8d59cf12956c94c7edd9f3f46f13b881ed7969a83fd7acd27c36962c52", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "d7a92deaff261b12352839565b6690d83a15be2a3d8ed752f824ab8144617cc6", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "f3fad9b2f37f0f6ba5b3af7fec18971d5478a7a4caacd04885567cbe8151eafe", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "e31273d9efeaa6adf4308a92516cd19b0bb2445db7624e652f79c8dd6f561640", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "20e16cee590bd84547f37551b91fe8473d195109f549e98f9ce251af18a1a147", -"T2B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "4460f2774c0913b6914eb9fe116b8b9d4bdf7dd1bf1d528d2575c27c0bf4b197", -"T2B1_pt_webauthn-test_msg_webauthn.py::test_add_remove": "c93f2c6760f6c895d5b3639fa45de182b81a01515e2ea6082e70246bdd84451f", -"T2B1_pt_webauthn-test_u2f_counter.py::test_u2f_counter": "53ee4d5cd62f72072884280c8e048ce5cae5f8371e70fbd4f83ddafd9fce602e", -"T2B1_pt_zcash-test_sign_tx.py::test_external_presigned": "99341a5d930925f7c16aec2c0f39eb32a3041f17c23cf5966928e1f28c534653", -"T2B1_pt_zcash-test_sign_tx.py::test_one_two": "ad470fd56cf213faf06f274fb7d34af70c09d2b60cce2407a0b4ad7ac6e28b45", -"T2B1_pt_zcash-test_sign_tx.py::test_refuse_replacement_tx": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", -"T2B1_pt_zcash-test_sign_tx.py::test_send_to_multisig": "01cb324f68640d2c3f96e6c3335f7e834c99b8e02eff49fb28c441e9f393444e", -"T2B1_pt_zcash-test_sign_tx.py::test_spend_multisig": "0b7bad29cb267c3a7de4e5c0b7dacaad6ca9ceb3b6de0591320834e32a8851ce", -"T2B1_pt_zcash-test_sign_tx.py::test_spend_v4_input": "dd200fb7cf077566f94a1e65ed3d756cf76fe024fae850594aad30b4a43b1edf", -"T2B1_pt_zcash-test_sign_tx.py::test_spend_v5_input": "ee38f2289bdd02d02daf746894ccbb3958093014a5893160dd1bdd956298c8ed", -"T2B1_pt_zcash-test_sign_tx.py::test_unified_address": "913748030caccdbf601489c18d5ec280d9b76940e6192659668bca9676ec4074", -"T2B1_pt_zcash-test_sign_tx.py::test_version_group_id_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", -"T2B1_tr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "d9124e6a0824a8c7719b770573b9afb252533e1f165b8df0de62a4840d449ec0", -"T2B1_tr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "e61038e81a5d328743b75d22bed7c9d5e519bc6a28beb025d7750dfdf798a46d", -"T2B1_tr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "703f91c0a24491ce16329e1e86dbb055d61056b36fabb96d7ef9c34940c8f26e", -"T2B1_tr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "9bf83783e58b1f3fade692cc389649b7b6bf2828359af61c0cbdfe39b03efdea", -"T2B1_tr_binance-test_get_public_key.py::test_binance_get_public_key": "8f64492c412f81d44f2a6b122a01c9fe577d7537043a3fdfb0aa5024b5a46c30", -"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "9e96cbe0a9bcc03db077e5eaa996b7ba7bbc90ea5b8011040dedfc1629fc1573", -"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "f2d13175927a046b849bc94b9426e257324656961aa1730d4e8f134708897f25", -"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "486fdfa757b9302447c08c3a4e22843e745dd2e1c84fddac7b65f0333536c113", -"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "9e96cbe0a9bcc03db077e5eaa996b7ba7bbc90ea5b8011040dedfc1629fc1573", -"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "f2d13175927a046b849bc94b9426e257324656961aa1730d4e8f134708897f25", -"T2B1_tr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "486fdfa757b9302447c08c3a4e22843e745dd2e1c84fddac7b65f0333536c113", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "5d625b26429d6d98670aaccdb3b9a708d3dcecaedd790cb27192e30b950513cd", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_get_address": "9b73deb663e2377bc6183ea86af26ff562d2a7afbeab64a12d62aaf3069e7b4f", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "6ac2f23a4206b33f5918ba8d497e4e1ae93185f4427ef0aaf4b83256111d0b66", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3f5e952df97ca48b1e7ccfcb5cdfb5dcace14d28df781b0769af69c9b862f7bd", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "cd37563ab69de57bd1f6762b2e43526791b1485c3af6d151db8408a96bd47ec9", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "cd37563ab69de57bd1f6762b2e43526791b1485c3af6d151db8408a96bd47ec9", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "dfcb44d317478f7412e1f2c41a9daef348ffa16bd240b2602d3c08d8d9860b81", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "f3d60d3c0c61005b67e4a921eb0867fe9b8715061c75555c9fdc5d0e361aae9e", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ff63d90d47eb85ec8cabe67f923b82c63d36705bb0a6a41caa461f55ea1d0c5d", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "4a0f614cb7d13654598f10f6d68f930d02193b35db6072895f81a3d1ca0b641e", -"T2B1_tr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "4a0f614cb7d13654598f10f6d68f930d02193b35db6072895f81a3d1ca0b641e", -"T2B1_tr_bitcoin-test_bcash.py::test_attack_change_input": "2ead8cbee3741fda44cac554ddc8aa849cfe9afe2bf2a7107c84d1c4bf201bec", -"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_change": "d742471aa4702d014396c0a69de2def3f96b513a0fb2e890a19153d9ebd65412", -"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bfbe70a9a4a0c617cd59e3bb59ae1e74dbbb83e513d4487aac5a92399d9ad938", -"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "54a8ce331afafc4f9d84f3f946f0e418e366cb5060c45d26af0e0d059e7a0c4e", -"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "f75c6defc0bf0a7be37ffc48c8f5b3686b63a90ac7f12b1eb0c7c464e391b710", -"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_nochange": "930af06990d641bf9e10fe242e802e851500e0a50cbfdead17fca87677dfc9c0", -"T2B1_tr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "ffe21a1d735a59db356fbf565086833fec9a76d4b9df6d1b6332db142344c07e", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "8e4905831cde727c4befde8ba0ecc92530fc0c871eeef09791a70f108f4dcfe6", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "c291be48e5109f5122846d0cf241afb1c867b867502919792bcfb520afa54bbf", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "76b01bbe381575b1b610a94bebfd8c5e8b2baf9cfb1db798a9f22a2d085b4507", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "28f03c014c8b17f38cb4ec08f0d87d0e8e49011acb2b57d5b87bdbda5e997305", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "7eb321b84722f58610dacc5bb3558e22047efdc6feb6d8a4fda7816e20e8ea11", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0f3ea0b30436d46c5b1b4e5a5b1357750cbd764cd5d029698038cf7cc3a96c5a", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "72fbc5c876712df1ceeb87593e7dc0f439d8daecb28ddf566aabd0a7e790db32", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "0a6f05f0854c6bddfaaa7e7e212b0e37414b375545eeca09bcc73bea4b22a898", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "edc799c6d64e63cf0168095bdbce804336b4148d761f3062c62106dff97959ab", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "fcc184720521d4a6ae88fe87080540237eecd764b65c5acd915b03454dee73a7", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b956f194343ff151d4e9cc762c4ce257957ebd6dbf1f8aed0912209ef30cc52e", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9b105654218d7f0d48bf0a1ed2c622023946109c54d41b158fee5c3a6ce43351", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "4662e05beab3dd6aeb5ee49e1b1dd8a45b7febe640aa609a74a9f7ba399d0ae4", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "6c83545d2f7cc2980a4311f2c71ac85d3becb741c0aa2e55a84580355c1666af", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "97d5d326d116f6632a76a0617fedeeb23f2de4f092a10a5608822f119be6cb8e", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6da095d9cbbd57180723410474c394ed4f57b26c75bcfc3eb3a81d6a7a31eb77", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "946ec62f20ef97d97a48f38212bfa7018e413d9cc2cf18bdcc71a59af626e891", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "5ed1b6d5d6476c3862cec3a06cf8439bd8731e754286aa1d03eff4f15e57f4e7", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "8e4905831cde727c4befde8ba0ecc92530fc0c871eeef09791a70f108f4dcfe6", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "c291be48e5109f5122846d0cf241afb1c867b867502919792bcfb520afa54bbf", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "76b01bbe381575b1b610a94bebfd8c5e8b2baf9cfb1db798a9f22a2d085b4507", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "28f03c014c8b17f38cb4ec08f0d87d0e8e49011acb2b57d5b87bdbda5e997305", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "7eb321b84722f58610dacc5bb3558e22047efdc6feb6d8a4fda7816e20e8ea11", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "0f3ea0b30436d46c5b1b4e5a5b1357750cbd764cd5d029698038cf7cc3a96c5a", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "72fbc5c876712df1ceeb87593e7dc0f439d8daecb28ddf566aabd0a7e790db32", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "0a6f05f0854c6bddfaaa7e7e212b0e37414b375545eeca09bcc73bea4b22a898", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "edc799c6d64e63cf0168095bdbce804336b4148d761f3062c62106dff97959ab", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "fcc184720521d4a6ae88fe87080540237eecd764b65c5acd915b03454dee73a7", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b956f194343ff151d4e9cc762c4ce257957ebd6dbf1f8aed0912209ef30cc52e", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9b105654218d7f0d48bf0a1ed2c622023946109c54d41b158fee5c3a6ce43351", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "4662e05beab3dd6aeb5ee49e1b1dd8a45b7febe640aa609a74a9f7ba399d0ae4", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "6c83545d2f7cc2980a4311f2c71ac85d3becb741c0aa2e55a84580355c1666af", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "97d5d326d116f6632a76a0617fedeeb23f2de4f092a10a5608822f119be6cb8e", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6da095d9cbbd57180723410474c394ed4f57b26c75bcfc3eb3a81d6a7a31eb77", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "946ec62f20ef97d97a48f38212bfa7018e413d9cc2cf18bdcc71a59af626e891", -"T2B1_tr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "5ed1b6d5d6476c3862cec3a06cf8439bd8731e754286aa1d03eff4f15e57f4e7", -"T2B1_tr_bitcoin-test_firo.py::test_spend_lelantus": "4b47ab8b0b4aaee75bcc78e30d9ae01bb1d4016ceec7da195802f867c27b0a21", -"T2B1_tr_bitcoin-test_fujicoin.py::test_send_p2tr": "e4050ef6b28efa37eaa3424496bbabf99f77435ef02ddaa60eabdbca7dc4f84e", -"T2B1_tr_bitcoin-test_getaddress.py::test_address_mac": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_bch": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_bch_multisig": "77f5128752deb7a505ed43af2afe610fd9b3e88177f1f9a251ceef89922adfee", -"T2B1_tr_bitcoin-test_getaddress.py::test_btc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_crw": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_elements": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_grs": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_invalid_path": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_ltc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_multisig": "16b85d823d3cff4b53eea9559ec66035a706037271722e016560588c69b66de3", -"T2B1_tr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "d562a23ba2e5efb967dd1c3329946ef6a431c1690b9ada594d3c2d8a33731a0b", -"T2B1_tr_bitcoin-test_getaddress.py::test_public_ckd": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_tbtc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_tgrs": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress.py::test_unknown_path": "0c83f7285f62d340a58ca83f1a1d659df4bd6141d8573faa9486a47fe700f8e9", -"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "27aadc956cd66fc053eeb3e9a6a8f4a828c6901b487f1b00fe38420a31fa5eeb", -"T2B1_tr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "5d8f87e358e8377bfb2e9b2205329b046c948b6a937497f9dd69f5eb229bef6b", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "2b11e7da96190c040aea71b69f15c798f67247f50bc06afe15766fad62a47b8e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "8b94277e472364fa21a2224e0ea2eed100935cd178877c4bfa57cbb10419e3d9", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "c001f456754535fa97c39816700221c483a377fbf13022db62f7acdc05bf5178", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "5ef55b17824c84e68368a40fcd7c0d488698ff8a6c7d61d9c1f52bb7fd2a8a8d", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "0dd4929771cd31a694e9282a1d4c3fb4e573aac193f07e15c46b4637d4fa8224", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "cc771816a9a55a185ef559cbf63ba2b6b34ca6788d0c107941211fbb9b7ffaab", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "0897ca57ce827280025ef54b6f00963c72e053f6142982f0a422427b9d816a2a", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "99bcaaba33cf55e3ea863ac43ff3f07a40f28eb7861e50e64a95729d480c45e0", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "3af138246b66518a05c274fcf156b0e5ae2eb5e83fb9e46eee5628900bc4eaea", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "4cd8e14898335ea51f6c2233e8c11477eb3df27f03a9a807fc2678022e1b5e24", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "70d05c23969fab1fea733b1acb91a763e35c6d1693aa19d72d4f845c0188f8a8", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "adccded2ec9a25d524d4949421c51b77ca39d48eca9fc7243a0ddd65c3f5f8a0", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "9e3175948618bd985f99e3222f88dccc25737c692b582fe254c62e9946759e02", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a47f0a93b32dd9baa89fb0dc29f977f9d4706817012c13c846661250eaba01c7", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "b30a7a1e632dd3569cd68419c02919219564abf536086e194b11fa39eec640b1", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "edfb527e78a98894264dcfd11afa46af88c74c8d5936722769d2f8122edb4455", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "979ec137f0b9a69273e6e48eade0a2f842fa21fd5db3319916cda1977ccae429", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "86ed6aea32182a5b018d1ea2c66a0afbcc2a147e2cdb5a88005e6ada618acf59", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "8b83b98e3305b29dcf4b3bbfd5b6c1f2cbb63ac5ba83312b3c8e60b3ea78a578", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "0b120a50db850a17ec7e25869dc52ad9af8f89189718f823c721a7535fa8fb39", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "499e8999d76c879f91facdde081519e3ca791abd3c872eda3d8655aa608c2758", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "0efbf29c6f55d6e12b4692658b2eb9df4174f1b80c50f8b9b85d545ef259c908", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "0efbf29c6f55d6e12b4692658b2eb9df4174f1b80c50f8b9b85d545ef259c908", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "bed0d0d0142bafdd74814123187977ffdea89a237d4c15ae2c0e077f959d9b47", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "bd6f9c3993746fab04b096f859174723f51f26ced4ea3e4ebcce28e73ce98ef8", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "1980fe4dbaa9cd4da23a4fad62d30805b79282777ef5e5977698575b7bb937b5", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "ab39300fe21c3b5c40218634841d24875dd9152bc8b46bde60460e78b6343cec", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "c1ed5d2b1e015b05c8080ab4133e38e17814472e07187664921a2ae5e3db5657", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "0c669198e07bc63387f7e555f2b4c58a9aa1d4ea57bfaf35ce99b63befb34329", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "d82261c914932109bd2bf8bb95ffc2f6791c3c467e8a5ee275958fe11daf369f", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "e60116edfef6acd410825752970fa6109e8a9ec4ce6a302addc227607eee0d14", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "5f2c7470b89f742e88afa08fbb5169318ef20d26e01ae7a569ca148fe392d91c", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "3aabafc4147456b17a874ee66d35edb4c342f9ce1a096cd5b0667e3d03450cc8", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "3c6495c255fa2fff2f884ae9aa5f3de4bd3c5592e21853f575a6fa98959abda9", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "410be2b31301da6c8ade4f0b48504071eb9029aaf02a9dc5f069660722aeafbf", -"T2B1_tr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "30fd41f5fa43c873876c6adea7f969d6a7c814698978b38e4d1a0a812419c8c8", -"T2B1_tr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "584d4e17608759ff6bdd29366c1a8de458eaa8bbc27492c6b0a0481e2f988567", -"T2B1_tr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "c291be48e5109f5122846d0cf241afb1c867b867502919792bcfb520afa54bbf", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "a29095ac35623c9425ca2f41d7b84506a6153d39ccf325ae3990cc875c1775e9", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "3fd347bb00dccab41068a4091b30b03e58a97fa0556011becf631561fbcc67e8", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "ad0baf92244bfad5807bdb358cb1af90a4b744e71f76774d6645f290b6c784d9", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0efb5bba2aa4bc5d7412df5432cefe723760db6d6c4dfa9ddb334a404e12a92f", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "771f76fd5bd68095969b48ef79bc33e64fec7ccff3786145058f0b448a71e9fb", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "18aeaa500e53564318f82aa7edf0d9ca278384dc2bd16bd57b51fe5c222aafb8", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "2435349aa45f005eedf936b2872bbd1dce13f189cd616ba541bf7d853ba599b4", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "518751cf6183e291b0566587b9ac136b5f9cf15f8ac109c587c3762414b55925", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b956f194343ff151d4e9cc762c4ce257957ebd6dbf1f8aed0912209ef30cc52e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "58a1822c8c429aec01f077597913f8a52002d2a9646bc36740d66fb3d20ec0b3", -"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey.py::test_slip25_path": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_grs.py::test_legacy": "816b3815a2dfe4c9009866f26a43b45f5ae2f7a4ce85976ebf1abed4171b72bc", -"T2B1_tr_bitcoin-test_grs.py::test_legacy_change": "23406855368d9d551774bffafe4b51bfedd83637da2a31abe6337814bff0bbea", -"T2B1_tr_bitcoin-test_grs.py::test_send_p2tr": "b05c4745e3fde4e7b33a0183dbfe102a213e3bf8d94cdd1f3031f58e7762b28c", -"T2B1_tr_bitcoin-test_grs.py::test_send_segwit_native": "0c66999cf707d75d713df361e1b6f847b1b00d49c5a719c4c7cfb090fbd5ee63", -"T2B1_tr_bitcoin-test_grs.py::test_send_segwit_native_change": "31138bf6dadb4cc2a999e897b00e4a78a2f967c309eb3a8c29f737989a12b967", -"T2B1_tr_bitcoin-test_grs.py::test_send_segwit_p2sh": "19dec6d31910f6ad3b54002d0b1464ad29ce0fcb75189563b25f4c10798c2e59", -"T2B1_tr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "d57abee2b29b4ca7c3f92de9bf287e5a4e2a0a3199f27c562785e7705aa47a75", -"T2B1_tr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "c1ffb83a29781997000646d521b61b7d617c439e6b40eaa8dfd34ad813c103b2", -"T2B1_tr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f5d156ed186cbb9386ce0e1d92753a796c8538199adefcf6c17a537ce8383773", -"T2B1_tr_bitcoin-test_multisig.py::test_15_of_15": "f3ef3d70bb185d4692f688a49e942edf704ccba9a1fff1f1be546d39a1fcb9cb", -"T2B1_tr_bitcoin-test_multisig.py::test_2_of_3[False]": "c3741890599a17ed8d391f8e78d17111373b9308fbefafa9f11da72ce871b34d", -"T2B1_tr_bitcoin-test_multisig.py::test_2_of_3[True]": "dcf4b007c09948fb44f7c88644724b3c8eac67cf75494696488588175551bb33", -"T2B1_tr_bitcoin-test_multisig.py::test_attack_change_input": "82bb97bd8c4fffaee50fcfb2592f5473a05e71bc86ddeec608f20bf0db8bc21f", -"T2B1_tr_bitcoin-test_multisig.py::test_missing_pubkey": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_multisig_change.py::test_external_external": "1e2b7a6e0db95511d0bae6b0a0fce70b20ef60dbe80cee40cbee8ede61fc8d8d", -"T2B1_tr_bitcoin-test_multisig_change.py::test_external_internal": "bb969fe7f52c6061d386cde203f77db1a299c0a5311992b404c614cc3914622c", -"T2B1_tr_bitcoin-test_multisig_change.py::test_internal_external": "4a83c6099c032ed91f00e9c058c8115287ec367f5fc44cd8a08200fad464604c", -"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "bbb7cc92ba2339d55fd123ab976b4eb29b8657fc35180a7b359bf604c0797323", -"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "36f6dc6662774b5cabc4a962ceb58e6fdd49b689639c6d9b0bc0d57c9ac1c857", -"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_external_external": "d08dfebebdefe694c03926beb6037c6b70cb4fb924cf24e59fea6f6f3fa2a003", -"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "20047a962b0acf222cc275e74af76a52441703f833ab23e9b1e4125b45e5c4a5", -"T2B1_tr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "231dfb84f53f674fbe787bd4217d6eac1546295262a0a9bf614931c45ff69743", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "32e39add282ed3099ff1c4500ab050bde5aa80d7b18309199a00bd45622f0320", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "bea29829591477a0fbf93f26f738a1945538dfbcad6232ca5fae8f79113a07a9", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "c9047c54f83f286d8197273442559e0e51c777d2082b870630dced94a92a82e3", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "819d4972f4f2a0fd9081f1008fa1ebbd2131e1d8dcae34d4815ad402b54dd514", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "e587c34dae3c4e65f412f6e80091f79786e6fd35521877ea8f36decfdc157fa6", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "4e9973ed1a31546e6cb931622a7cb7c1f383672ffa084d5707ba04e411687be7", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "7e5aebdfc84913972becec5088d0833d0074414739dfc18b408dbc7ca5b05529", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "624bc9ddb50bb380231f4cbf4b5f80a0ea5d74c720b7030fcf998614438870f4", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d4efb6512a63275611f7e119220cab8afdb5bae347ba3229a5fbf6230c7b5cc3", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "bef386157e53002bb119b40f2f7bdd85a19ed09539f0a24c9c43ac073ea7075c", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "0f7884be27b9f03c5020169138b2721e49a540910288bab0cb2ac82423119f46", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "da42fa1d6daf289f8a116c92234917c6fb1f33118cc2711660913e3eeeb5fb1b", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "c132dacede2e303c77fdc45aa029162996967adfd20d514c27cb734a771c8e73", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "c0f6794f762e96692cf0b8ee2f518c8cb0b47521f8fa71d41e6dd0fddd438db6", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "6ef292f93878f90e5d1ce0cd3009910d2a2b278d1888aa89bc72d171823bb0be", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "42bc8f59e07658119be2cbe702f0349643860341c3b669df75c871fce58436c1", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "00b2b5514b4b46189cfa2a38d122cbf4d1d8ab9905082132dbdd2f2926032ee4", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "74bcca2a6beab14269a2384eac75f4ba611ef416e5baefcb78cecc0400f84de6", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "82eede0b0b121400dde13fa979c507c30348afb616bf6ee8684e395b87139bb5", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "fc3e9e0df0acd0c27b607b6a6f7997bb516f4f3466966197ed82a2d1aaf69512", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "078c47b49a290042399f42c7d06a18f9bb107de6621ea422bc8aa3ab663690a4", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "3906c06d67d5dd05eab38e4b30b6bdef6d015aa0f35b0b782c17b198c7031203", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "7178678c6bd453ea093b800bdbb2c5726a7af19124453c722afc9715cc80c986", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "c760df72b98734ad85bb74f43e9ee9a0a9ba2903c569f58fac9db19fff1b97a7", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "985c9b4cfcbf65ea9ca88ac36b038b3aae57465488412402cd0132100ed32dfe", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "b050d8863f9cf0ebc4398a7d1d440f7d6f565ee2aab2d0b9db9e4a7446ddff01", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "fcf72a9899e231d8f14851c5fbc33872711c24ca0c2636baf71a0d502e1d3bfc", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "2fd192196768b961a49ea859008eac5fa492242ad74e36641f40b85acee51a3f", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "a86bd5cf018314517860305d98819e2ca67e94f65609f30f7cebbc103d64dad9", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "7b2805d8a3d3d281de23085eb7d2ecf33f940edb5d94e552df0043edb59680a4", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "f6079f076e616bd4974160ddea5abe0108b6bbc30eff396db9b31a124be94232", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "1a8892ee84164595f04e977c6b25c8c302c093fc01e42dd17f4957c01c1d74fe", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ed705812bd0fd018b050f01b8006c48d93e16141d98bf1f356ce3261c9ad890a", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "625ce80951f2c2478d53887388c2dce19c3aa0769a1383460de75dd1450fcb43", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "666e64244552ee22c8028b2fda197a2b309beaf5d2398834cd13aca41fc108f9", -"T2B1_tr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b3da624b6014215c8d81946ca6b6fe1cd24a0cff15544372368eb4a6e395558d", -"T2B1_tr_bitcoin-test_op_return.py::test_nonzero_opreturn": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_op_return.py::test_opreturn": "55f7a9719888a8ccc85188e0b02fa2df440de033088c4d5fa6f420241fc6eb53", -"T2B1_tr_bitcoin-test_op_return.py::test_opreturn_address": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_peercoin.py::test_timestamp_included": "5b2ab96a9bfdd2bb998f1acbd26e363de84b1f3f0ee4f2ea61cfd22eb46a3bd4", -"T2B1_tr_bitcoin-test_peercoin.py::test_timestamp_missing": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "982311b0775e2d4855ef19cbf808e0b6933945aa8797ff89734a6fab5c8a9754", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "2b0f753ec583ad68f4f2f1419574d1d6b1432cabef716700e4b42d3572702f6c", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "2b0f753ec583ad68f4f2f1419574d1d6b1432cabef716700e4b42d3572702f6c", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "b10f67c916d10da49c736ebffeb25e359bcad254a4a943e8df0c3773be50da36", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "3298d2403087f8fb2a89daa959495e519da9ddc9d3abbff3124baf69473a94a1", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "76517a45add7afe64dfe35165c86375d5495e0aff55931fd89a18bd4921ab6ee", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "4bd87003860ebfc78f10c4ac2d2b53a7c0cb03a2dd47c2c48d4ac704dabb23f0", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "0fe86b0ac7f79aee8aa964f8181b4e081caa14cfce44293fa11dc12f827239d5", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "615453230d07c5f22e8d91d840d907521817b90818a144560b9bf5c633ff4ca7", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "615453230d07c5f22e8d91d840d907521817b90818a144560b9bf5c633ff4ca7", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "35e6472d26d5680ef47a52985ae2d66fb5cb869edcdf6a47c43384fe973ff6ab", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "6edf1a05689da44752d3125fce8bdc9731349a5f4e5e2bebf9e758ff2621b32c", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "df1318c6ee82fa4ee8967d8eeeb1d2232b0a39de818620faf7199b6b24d8de2e", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "df1318c6ee82fa4ee8967d8eeeb1d2232b0a39de818620faf7199b6b24d8de2e", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "e454e553f812d7c5b5e292980347ee21541cfb3ee1943494e1afa7e0d6f6224c", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "80317d375a080b0d4945f8c12b1e120e966d22cb7a8535df20f4302e1d53e448", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "1856b7b5ee9d346cfb81fe0034fd0aaabfb4164c5f0acc5e4eea679243bc7975", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "1856b7b5ee9d346cfb81fe0034fd0aaabfb4164c5f0acc5e4eea679243bc7975", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "9b5d7eaf652d8c10189f7fcd4ed9222c7e08d3aaee65bbc95464a722bb259f1d", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "42dfa6d537e73b4db322f43b18ac1e0a9ff992fb02ba1b99f333a8c08c110965", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "a75814509619fd5cdc71fbe63d92f63e15407c9fc1299de12eb47d4ada63b9ac", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "11f3d97b2b94e2703d279700c41d9af8442ecf57b368897e45eaf2e556a5f23a", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "1996ae66e28c591a922151669013b92102fc9dac9ae4c43a93312514961fca79", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "4b8c55464074034c49b478ce97926b20dd179ca9aec51bd25de9e8cd7edfb52d", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "02a2a0c94c906c1e7bbd22f7f7596f7bdce8321a79ad199fdd5dab36dfe3a1e0", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "06ce37ee48765c5244118a6b4ba5ffee15eb42778edc399906596eca098390e7", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "b23c7ef2d1bf42c02219ef1f79254301fbc6bc9944ce1d0affa644fce7bbe3ec", -"T2B1_tr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "82a18abb27afb9b787e99b8aa0dd8211c8ac67db6137d733e7d86964d9e98cb2", -"T2B1_tr_bitcoin-test_signtx.py::test_attack_change_input_address": "e6cafeaa6b27483a9e802bc80b7a417ab40ecf0e77dafdb7ab43e4edf8d9fa2f", -"T2B1_tr_bitcoin-test_signtx.py::test_attack_change_outputs": "728c48f685813535a021cca1df63a57bd68e3a605a75b7157c8bafeb9bd4a798", -"T2B1_tr_bitcoin-test_signtx.py::test_attack_modify_change_address": "6b9d590f1224f85de7470cbdbcabb38b0262079ec71503f039823a810393d9e9", -"T2B1_tr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "6b9d590f1224f85de7470cbdbcabb38b0262079ec71503f039823a810393d9e9", -"T2B1_tr_bitcoin-test_signtx.py::test_fee_high_hardfail": "fb41473d8fffe785efca4130b0aefc37c0476f5147c09cb185d0b1fd034317f5", -"T2B1_tr_bitcoin-test_signtx.py::test_fee_high_warning": "c3ae1fc12140ad8d153a80494e635b2b1905e6f97849367bb2ee25af5843f8f3", -"T2B1_tr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx.py::test_information": "3689869f9eba4868da039d77220208a0ea52185ab5706a1361f4c108b2035c8a", -"T2B1_tr_bitcoin-test_signtx.py::test_information_cancel": "314f21b79bd3b2287bbdbbb08c56e8cd47f01ec9de4a2ff744e3593b9524ab20", -"T2B1_tr_bitcoin-test_signtx.py::test_information_mixed": "e88551d8db47fa64a359974fdab3514c2f600605d599051f4f052d9c4b2afc78", -"T2B1_tr_bitcoin-test_signtx.py::test_information_replacement": "2b4790f40abf8aa4b9651c6171f675b5d1301011250340df9afe38ae1eb47a7d", -"T2B1_tr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "09d887437e8e14c1a1da002df2b88e45e87c3eccd41963c42fb6189488d6e4c1", -"T2B1_tr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "6efaa2fc620211929dc44e6a76f35bb570356d4bd730de3b5697073afdfc1e02", -"T2B1_tr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "43a6a75078e1e69e5d43b4b7fd309821cc16fdc032f6813cbbe8d3214168d1af", -"T2B1_tr_bitcoin-test_signtx.py::test_lock_time_blockheight": "fcb03ec24bcf3d98a9bc931eed7251cafaf4479b8d651fde8421f807264ae2a0", -"T2B1_tr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5afc676d13e9f0c24e4be93511f6de26fec906d101660033e314d9785ac3a2e0", -"T2B1_tr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "220e087ca5a9224aee5641bea6c840ef9bb241648fb7331408a8642c03e9b14d", -"T2B1_tr_bitcoin-test_signtx.py::test_lots_of_change": "2f28be99239ba323955785c3c6ad1c03857a9dcf4605ae6a3aba61047bb899a1", -"T2B1_tr_bitcoin-test_signtx.py::test_lots_of_inputs": "4d5881dfc8240a268fd1611bd54f7d6c561b001eeb29d937527a90aaacd6fd50", -"T2B1_tr_bitcoin-test_signtx.py::test_lots_of_outputs": "cbc9bac26fba92d845ae5c8f3230826ce19e3e17b0995653c94db38ce1d65a1d", -"T2B1_tr_bitcoin-test_signtx.py::test_not_enough_funds": "66fc92d4b4685e1b6a3a980a46a78775f54bc02062b0f9ee92a54c280a43f5c2", -"T2B1_tr_bitcoin-test_signtx.py::test_not_enough_vouts": "aaede4a6407809971fd3df51ad6e6ec537b685e73077bf7500f9772f36145607", -"T2B1_tr_bitcoin-test_signtx.py::test_one_one_fee": "ad76f6d7b1a68146567d782651c1c5609d5bd92533397b7cd581cd24a06372e9", -"T2B1_tr_bitcoin-test_signtx.py::test_one_three_fee[False]": "13db7c095a4ca7ab8a7172d29a69a42d96b0710a1d68c82cc35a6efae58372b6", -"T2B1_tr_bitcoin-test_signtx.py::test_one_three_fee[True]": "332ee3233c0c074c7db3ca33f8ecedb8463f468a35253071ec68d00847917337", -"T2B1_tr_bitcoin-test_signtx.py::test_one_two_fee": "f1fbb12948d04844ce490b570dd9555b14070c018a94a434d1dcc549ce453476", -"T2B1_tr_bitcoin-test_signtx.py::test_p2sh": "5eb5499ed1a3024cf3f5d014bface1f341b259712fdd7915937cb3f4476c4ed0", -"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", -"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", -"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", -"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", -"T2B1_tr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "1f3077210e3ce38b2222d57edc474234ee69ac5b91d821e22891b2de709ea28a", -"T2B1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_signtx.py::test_spend_coinbase": "022d09fd013ae95fa80cb298930baf71c0992b03a094a3abc04cae047b2c1a39", -"T2B1_tr_bitcoin-test_signtx.py::test_testnet_big_amount": "c887b8852baba3cc6da1681503a723207afef8e683f2db14896e9406356b2f64", -"T2B1_tr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "47bca8b36ae4d7059328e725c0bbfbd6e2de1d76a921028692e2e19b295e9020", -"T2B1_tr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "6b9d590f1224f85de7470cbdbcabb38b0262079ec71503f039823a810393d9e9", -"T2B1_tr_bitcoin-test_signtx.py::test_two_changes": "df84c1a7f8cd4e51c4883bffdeaa3d3838da03da24c0835ec1b53ba553a9a36d", -"T2B1_tr_bitcoin-test_signtx.py::test_two_two": "a7139a55e83dc66dbd6542a2b2a24275163e52f42a895e47e6735913b19943e9", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "ad76f6d7b1a68146567d782651c1c5609d5bd92533397b7cd581cd24a06372e9", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "2406f5c6cdb574761e56abd4964004f76371711add77a0c404adf4d6ec0e37d5", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "f0b61bcf3f5d62fefa3ac9aaa238afb6906da6273c3ac2adb714cb2e357e4d0c", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "3b46c18f8e7b7d9815e711ba4e11d8ab683f59dbf04fd1cb38eb664bf0b96945", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "ad76f6d7b1a68146567d782651c1c5609d5bd92533397b7cd581cd24a06372e9", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "ed078a38ade61a8eb56e2b6b57fe47eac496d9021cf6e0a1aaa4b4ed612efb8c", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b76497848b53bb1c0da4b1be65e4d8d8a27f081b99c6f149f5abd53ede4b376a", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "9175b4b2ef7316706bc615a83989876420c4a2323a9ef0a4027298ffe6152c0e", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "72783ca2a6ce171c72d7f100968178c731cd033eed302a2e0dc2c0cdeeaef57a", -"T2B1_tr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "ed078a38ade61a8eb56e2b6b57fe47eac496d9021cf6e0a1aaa4b4ed612efb8c", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "2b67a7e7feeafa63b837d0f0e2def6cae66243629cc0b118ee10cdb62fedb256", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "34d7e034a0ce3b4ace9ae52d61868d5282bf4c9e2805e6a147a890cf33d9bee1", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "676636d490af14508c11968ac6ccaa21def0a29f0db7d7702abd7b041886f009", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "bafd963c7af51a7c593cc539292cd764eed2490bc2e783b72ad69e6e175ffcc9", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "bdc0480a7825a37c22921f5b1fcd11a90b68da84f989c6eb69861ae1d4c4bfcb", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "4f96e0ebfd23a298796bbd9a59a04adf54d7f383e4670099681ee18b27f2d0ae", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "af80a504a3b4b57f836857630e86104b3dc1bda550eca507267b0952cf3e0e4a", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "9af0e173bacfb3cb36c3b715ae7feb10d469e0dd694ba4b2caa7220aff57fb39", -"T2B1_tr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "6ec700f1411bbea2ee1601c892c4bf59b9e3b759d3122909ad489e950b1aeee7", -"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c7af6c76fab906d6f1924c0e7486029d11d125b31ab48fbf0f7396214464e074", -"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "c01d311b24bb14ad3e94c03b8113c05786a679e9af048b5cba6e05c9a166234c", -"T2B1_tr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "a4d8e9e204f0be2b27660538dcba75d2e240a886b7b51ecbf6e7a73fc0452ce0", -"T2B1_tr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "f2330adaf74ad4e3ea0880ec52068c752f5291b6481e3ac6038edec0cf36b672", -"T2B1_tr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "f75d805167b820b4fa59628df5e651d11ee2077a9935e1829d5f40ae249d7e05", -"T2B1_tr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "f2330adaf74ad4e3ea0880ec52068c752f5291b6481e3ac6038edec0cf36b672", -"T2B1_tr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "246dd9d18de78dec0634ab9b9764eee946ced437e8329764e47702bf5ae5536b", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "e5dc73cf67662170a5ade0645f1bcf204fb14d440515e4984ba373458ef09bbd", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "76869799fb9ed89426992f404b099d5d5b525372c8347ee804b9ec7ff650aa7f", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "d469350a0b3495415809c900f4d00c03c387e047de5eba6ff11087e05eb37ed5", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "924436a0b00752c55cacf5de7b0f9493ec29d10f3f04dd98b0bd5cebbf127aac", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "bfd121df83749be340744f65819e7e17c45f20e0aa2ec1f1604d1873b390b224", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "52dd7e17cb2f36508c48653389f424e5da45e1384afe0b64fda99c349873e8cc", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "20a6e67b4e0547b38b4bab81a858c18ec9bd589ffa1e16acbd18cfa4f450934b", -"T2B1_tr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "80b0d710675bc9005e42f1d2c42105526312ce0482cca2488641c51cb7c837ee", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "80b0d710675bc9005e42f1d2c42105526312ce0482cca2488641c51cb7c837ee", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "80b0d710675bc9005e42f1d2c42105526312ce0482cca2488641c51cb7c837ee", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "80b0d710675bc9005e42f1d2c42105526312ce0482cca2488641c51cb7c837ee", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "fbdeef2f4599d9e616062b1892786d72b19f94f2971169913d72f054555ca8b5", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "fbdeef2f4599d9e616062b1892786d72b19f94f2971169913d72f054555ca8b5", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "fbdeef2f4599d9e616062b1892786d72b19f94f2971169913d72f054555ca8b5", -"T2B1_tr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "fbdeef2f4599d9e616062b1892786d72b19f94f2971169913d72f054555ca8b5", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "a25a1ba549d340344344be7b0e8efe6e13d927a9ff750f6d6b98f38a6a0579bb", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "f60f3e6ef92d925628af6902e755c27e20f61a5a66e4553b1a1cb3d80aebfd17", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "902e48079af8bea9bc73fa5adc1c138f88ac7c68af5e1457febe55f7d6da336b", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "902e48079af8bea9bc73fa5adc1c138f88ac7c68af5e1457febe55f7d6da336b", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "1aaeecfed031b445e19d05c508016c8fcb781fb9390381fe0fe784b9ea76bbab", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "8ae6130094b3c1b40fddb8b4e7e29050498135efe341cef824d64e8642fca4da", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "f63417530790298ac40ab8e0b17f14c981d0f68182a4cce9912e775ce74bd995", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "1aaeecfed031b445e19d05c508016c8fcb781fb9390381fe0fe784b9ea76bbab", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "afabe7b2620561340be4878fb34da40019bcb40bf0ed720993247546f4001f19", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "7ef426ca71bf949c0ae2b98e8429c40aaadac101d604fca74c49945bb0d6a588", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "7ef426ca71bf949c0ae2b98e8429c40aaadac101d604fca74c49945bb0d6a588", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "7ef426ca71bf949c0ae2b98e8429c40aaadac101d604fca74c49945bb0d6a588", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "902d659420dac55c0cddc15be023fe60ff8bbb1a01aa144ad87f37724b0925db", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "7ef426ca71bf949c0ae2b98e8429c40aaadac101d604fca74c49945bb0d6a588", -"T2B1_tr_bitcoin-test_signtx_replacement.py::test_tx_meld": "b6d17cb513a4c7fc88bd70a5fdc99fb0dc8c272312494df8bb80f2c0cab5bf4a", -"T2B1_tr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "bc0d658f2674fd353ffb94e71bb368cc5f1041961444c09dd71c5cba609c9733", -"T2B1_tr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "28052aa697116715c5d46b19875021a7f1cccce4f3cefa12d79948a9f1833508", -"T2B1_tr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "2f84ae0a5dbc256b2355c25b2255bcc3b72b90b4cb0375f6c4edcf262bb6c8be", -"T2B1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ab764b4234086283d649db36fbfad9e2f0c33ba4169ef294889c4d1420bd6f68", -"T2B1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "d2b4517e6034417e765235462633727496196f611f24a5deb53bf932b46f917c", -"T2B1_tr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "2080918a9b3124e4bc0f74b98a11d4d892e1cde7eb475680260c8b78affccd16", -"T2B1_tr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "fe4deb9248029a839af85f1605ff2d963a01d06a501d155d2e2e2486ec7e1add", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "287f86029f62057829b6d54a76835c8269a2d678c00f113b8f77b6bcbd30d201", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_both": "371368c80d10eb01daa2f06b727f52504fa7e99ab989776ea70c729ffcf33b02", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "50a28fd725cb49a02a056758193b31f873122618c03af4e67fdfb897e8ef47c5", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "ba5550f1a3e9fb7a10a6fe7c4e7be5bddc57d85fa40fc099a8e2850b1186a700", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "692a00734c238690fc209fe858365b8cbea5df68bbf53d98e06e72cbe3c507de", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e206fe030ddb544d2ee7f9036cb2164190b215df8c4379b20d6b21b183ca26a0", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_native": "ed078a38ade61a8eb56e2b6b57fe47eac496d9021cf6e0a1aaa4b4ed612efb8c", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d6561a85392307da9da57b90cbab0c176f3266d00167e99fc490029c9b8ccd98", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "dceb3287cdfc83ff869e4c21aeb945e098241a573d7adb3ec24bedf28dc1da6a", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "7da08771cb8a9b1d2afa27834d1f55cf908dee4d5a804b85cfb96fa3493a5fe0", -"T2B1_tr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "676edbcee1443ca92f0213dd17fd170c2e7ff155831d566cf30bd8c3a3e78b53", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "38cc423f41979e072740333456866af7f8e863bdc5e88af184f75fe9444b1556", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_mixed": "1094b1b5681a9495d28d3910f8d747339c39265e70ea5657c1831703e96ba829", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "c554c745e9c4453ae2df45f1cea6b8d6d91210103ba688b9bef7509bbc7b6f66", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "8e422d509c1c6ed9799979a54500b80e705dbe03e24099ee796c6e3f42fbf53c", -"T2B1_tr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "f8c9ccc6a16ddb2cb2d6f4909b7ac04ee9ad9701297765bfa15a1dcb826e9d14", -"T2B1_tr_bitcoin-test_verifymessage.py::test_message_grs": "e26bdb28f20055834c6b64d03407714534927dbebca6b132432164c1065c37bb", -"T2B1_tr_bitcoin-test_verifymessage.py::test_message_long": "428179e0a0e5c14a4d5b5f29ef63d928747382985165033f4d0535506e54e7d5", -"T2B1_tr_bitcoin-test_verifymessage.py::test_message_testnet": "c977a03211a79b822f458137056020484f4c772cbc9782bf70c12d605b39ceea", -"T2B1_tr_bitcoin-test_verifymessage.py::test_message_verify": "7cc6273658c41152a3d0ce974e87243fb0a7eb452e3ad581b42fabafea3d2344", -"T2B1_tr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "5216f5a875bd627b1c9cb84bc63ea9f80fc3f98b275fb1b0d8a0f7cc6a69c147", -"T2B1_tr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "a2db0e2eac7e530550df465b385b995b33f7fbc4cc999c8c155b8bb5085c53fa", -"T2B1_tr_bitcoin-test_verifymessage.py::test_verify_utf": "b998ae6a63fa23294d7629e3eb87b253196cf8a1a9e9f0230592c91620cc6374", -"T2B1_tr_bitcoin-test_verifymessage_segwit.py::test_message_long": "71ede99aa8d230cd80081a21a57c355cdfbe9cc24a8a28abcf621ec2147ceee6", -"T2B1_tr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "0033f74d2ab0b926611a317c0f1da4dedaffaae1ce923005b419c7dfc8b132be", -"T2B1_tr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "9ffe1b29adf73cce57f078dd86bbb6a86675cb12ca029d2b48ced4f7e37adb44", -"T2B1_tr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "5f23ac00c3215995950587f780cd2141b7d99f5ffe87780622feda2678a06509", -"T2B1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "57c125c29b7599c282ec72f2f476668668a91b4f67df809cee50c2e6cd9e9558", -"T2B1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d46dd71dc13a52cd9f66fb5121d44a6d86b67896c5fee939b1e7a64bfe33e5d8", -"T2B1_tr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "484a7c6c1d30ff00f389eeb8fe2f6372f2b6018b54dbabd7a9d26bef475ba589", -"T2B1_tr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "bfdbfc2ebe6ea60751f0b173149d61eac497211a94fc419fc1c0140b04dfc5d2", -"T2B1_tr_bitcoin-test_zcash.py::test_external_presigned": "9dd3734d4a624f47e843b685a072ce8583db1da8aa38d71eb4c5e4fd545b2833", -"T2B1_tr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "c87e3aa4c4a4d403507017d2ea768bb5b80b39c731b727d7f77980d2eac6d900", -"T2B1_tr_bitcoin-test_zcash.py::test_spend_old_versions": "29e6c324918cab19fc6a32d6eddd150e6a1dbfb3a5384189619bf53419903b4c", -"T2B1_tr_bitcoin-test_zcash.py::test_v3_not_supported": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_bitcoin-test_zcash.py::test_version_group_id_missing": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "17f44a8bf09b4a21dc67cb4b7b350f842cc94b56e166bde636e567562980345f", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "2d025fb8f1df8bf17e949d966bb60ced34bd70371979e677cb1ea0e6deb69927", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "2caadc7981c1b688da7a6e6b775562b9c96e6cd174fbac37d57815e9e999e019", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "ae39d5965bac1d727d80b7d56780c06935bb67c6d14f5136b79818ce4ec63aa3", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "991a309ae9bfec75a0c76ec483ed0d64598a1cb0ec08abf404cc439e9df7acc0", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "09b813b8d2cc6896c22b795d1473b17fdca49bd77d6229abb86e2108507427a9", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "850fbb0a5049ad859664162b796becf4c6ee247915a793589c9836579f1e22fe", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "eaaf7b7250a8941f7d459a22f7fec72be920b00dfbcede100508eca33097206a", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "def75e8ed15f5e529926ced34cd7de6a57db7094c40cabdcfe6c7a5860babe34", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "6844730f56f2f6400593bee6b090bc9676444f002e2a531b65407b52e1d7fd4c", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "97420bd01edec5aa7d11d7d85bec770afc9c9fd168f3cd2c0ccd1df38fc386e6", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "97f0862adde365150755c55883ea80e873fb1acadf300ddda71d281c1bff0374", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "83cb0d3b60d26756f4619a2ca98e00931d9375d8d931b73db9682b0c7c543c1c", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "2f9e226a31f5d60920c0af0b3f1a1aea457391b2bf23f7278cf47229a5d4876c", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "96134c33109ab369b22ff433bcd7ea69166c1dcf23c10d2994e2b73b6e26a6a8", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "4106d46c56547a8992ba0af82850581fa600ea4ba9c4b8a5c61db2c1f2d150ee", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "39adea2b67733d3359bda308cb0fc7f36a248ff1c417bfa43978b858d50eec15", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "06793ce627df549c6b9078df27192690e0bfdd675f102f865c4622a7a58ae8b8", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "1c08a75ea57d02d523211a39be674330183f2fefbcc96cecb6c913deaf915cc3", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "aa754880cbe7e41216fca1b0263bba3167efda49c800514b65e52b5a034eb36b", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "b7fa949daa349db49be7492c25162fb6f7d1716d7584ff78980596f179a41049", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "689f59a4f36ec152cb55ccd83399f00894457463b9c76561de696c37f66bb167", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "52322aa560a6357533e6c117c1310bdf5e4cf5e2f9cf89e79d441f84f1b8a260", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "fcfd727a23d19f28afae4496ae24a00096bbe1e822225e328458d176e64d35bd", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "54a9af90b8bb69a9d2a3e8c36e3442aec43bdcd45eca93b6013f4f3592c024d7", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "09bbe5d2641464cf9d6b4562abe5aa1f1a5a47bd330d2e13911092921503b6ed", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "6d62129e2e1ae9ac727c60287cbec52f95abf8e87f1e1abb99d0c9d0527fc8d2", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "23f12aae7eaf86d38487fbbd3d3d3ebb614def95d869cb96946d68e8668aaaf4", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "ffc3b15ca008f490d4a5eb96cb2b815f89a5cc64b2d1e02bfce014b88ae8b447", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "4336763ac627abd637764d3cf1565e1f7561824848ca89c7ad28266a2e694733", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "cf6a1b560539bf53d30547d55badd56d905849f0859c2b6f9a1ddef18da3b4e2", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "62019cbd737b86b028d489ecf723696e4ef729b3721c7f6327fb59440c60099a", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "983d13604ed75333f522feeb76767281e807859ff72255d558147c7e361781da", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "522cc820c161c2f0a217256c6945fc4ba1af496da78f0a92175c06ccdb09687e", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "19120967a176cce52c5b852b653c834ea7a6686b471538d8d5ad1bc3bfb517aa", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "caf966a082cd7023bc31a4c1df7d092bc2d56ba5b975c2dfe707c41fa2150c92", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "d14de0c1c9d417880cfff82386e7c46afdde4fd843ba9108519b74961ab4889e", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "325fd876a972e479261f576688616c6f4228e85fead9e88bef31acfc44e61f4a", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "aef3057b9456e5c893757a8ba3368402e17e3208019688733b1c748da799d42a", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "fdbe8f8c01a18701181db16c19175357efa820d98847fd41d9ccefa1c2267deb", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "0cc81df477fccb4b8881694be85bdf84a66cbb5473746c2f4ca4889e60557519", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "b8c0cf04a81c14f8a335df4d098c61d5dd509633da329a1d79154f4058613f5c", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "dd09568f75dbc08d96ea18b30ce65a199bc3ddead3c6f2edc7dbea0a97127dea", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "bbc7707038bc2b8be1cd0dab3e61e5534252dbb273c1a1e26caef975a37e832c", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "a72c504422a4193afd892e56e8f1ddbfca9dc5783512b08639c84861d3b8a3b0", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "44476eddcd575aac7aa55117ba6411efaa460c13b7727aad1a7f2c22a83bb879", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "63b70de3d65c2a6528a828ceea9730ee6261a2772e84260665998f1c3cc72f82", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "2a5b6faf04a516b3c9575909825435566f72ed64ab5a70d92e8531304d356362", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "d993643f928b59025ca51af7f5cc3ef6eb72b66474be3122c89b6aa9e0306a34", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "8ccd6ac9cea27ccd767cc00086e174e3ae56f9d0bad12e1d668237543ed8274d", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "60b8711a03f594d436880d93f3a6256648992eca91d2c0587ffbc9217c4d9195", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "e187728cec200148df9cb1dc9afca615b9fe3ee50b235fb1a8db82fb8191060e", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "dab2dcf2a04a6a97624cb930373419b4509358f1565b7053fd937e9c70eac74d", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "8d549feaf4779ed274cd997ef52f73fe9fe8a0ebedec3ee812547feb40deef44", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "6676781603785610e426a18b198cba36126dd4e7cf0d94b986a0d29035b72b6c", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "871c9cc431f22eac68f2e2ab03e06377f996e55515c358ae5ac6300056d99965", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "b0c10ca8ef7d6482a2dec37996826df31bb88bc8eb094923e788d2c626a4b5ee", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "3aefaf6a9bcd6b9a983254a09fe5832731b741f8536bc9b3c1d36a6c92f350bf", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "039f39349ca197641c7d5b5599f499daff91449806315431dc8211ce45e4a2ce", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "79fb0de1b99bff6a75798b7b83376545ca2bdd0a5901771202095b137441e099", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "fcf1de37b53db7d1b106c097675189d4c4cf5c63f0702db63533699eedbd0f1b", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "86fec857ed0e30e99d50189afa277ed95e84d13d619896a5facbc69002e1fdfe", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "a624e4d36677e00e131be20a931010ce72fa1d9c7567f3530498cc905f46a97a", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "2a0e350c772d463dff9e7c5b8134e40bf6c47bddcc35997c4fb9e7b46804fe48", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "1017fab8c91ebd59e6db4666bfdf88d500d3c8e42eb9051d64a6dc51859d6958", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "e962a020ac2f693a316fa826cbb96a3608c05368e63fb422b6a6b5b11fc16e99", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a3021c3696728c91117d8b6acd6b20617ef1221fbbd6363d2f66748fb5940324", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c8faccb750ffac9ceae792b6dd97b1de7304138c3b0a815c730d0bfb568144f1", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "6819310eba9d9d8a09d0d1324e738f87d68e9d14b2931cf3ab01c5424bd989d5", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "33ab2ed579145b3de05ff43a196adadb11cae8506dee6118eba7224d9f31b2aa", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "bdb87b1f3c6f2fa08d2200546b8082f4128836fa4f1b1d348d4bb0835486be7d", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "42bab05e30a99f0a53be14d66105569d2b047fba37254185185a04cf7376cf06", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "4d99117edf4dc50a0869b181c395f7dabbd1c1931be97a8dfaaf14a1d7459f58", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "bb188d64114ccae520b832d333a4e393b7406f353db60c16c89f4468c801b958", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "9964557537a1fb85241014bc1fa8f135ffa5025e9a408285bd2bfeb6b7696b05", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "7a5bd94dbd1c93701761925411d419c29966545d6d38d8c58580a4c1822084da", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "2c5910bc96b418538a5308b12ac865b916e12277fc16fb0243edddd928824422", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d2c85bb8f81e21393c1c35e80809ab71237f6f4613ff581b5cff25e30ed57b09", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "c80fb83125e1e27b533f0966ff2578bb9fc981bf12097fa8911212675d6e3d64", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "457461c8c519f51fd37e187441c94cc142235f1b47fe281dac42b21ad176cc36", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "78a6f648057f9446b115b455e1c29957b2c22b6d50c6521c48ad05081d9b0077", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "35f62dca00f812f243d3c08472888006a19ab634f47b52eeb2129da7791a881a", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "279de8e1978c1fa45906d14d0a3b85bfd8fc89ab766ec0879f145c50be187b95", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "d78ca856456178c23ec06835ddbc81b4ca99360b5e284fcb85cb0af0136f39e4", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "66addee8acffda01efce60b7f520a28113fa6a59fa69e6ce6f6f80a9f379cb29", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "fb2103550697a1f12d88386af2235768ea77037d7752ff2f944be28866b4340f", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "b0cea5a479cb3b10c812f8f82a3ff31279207344ccb751312557cf87a2ef3862", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "6a3a20d29c221bb66fff8cd87df57900c44ac57494e410415212808e30f22420", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "105a34ee0913cd101ba3190734f07be0c2c5ddfbe0e99beee336ee80ffe03f6b", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "3268f322c3cd75c554eed776815ea7354ec01e757e03deb660db37700c35bfc5", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "ea941fd10e62243f798c99f37b4f0fc8ca3ab6d28665062dbf060ed57e7582a0", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "8d937852830fcd13990bd807a688e0073745def5adbb95c8561ed800f9e248a7", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "65a6d1edf3220384b69ef6f0f854113f888b4140750e026ae98211bea8a59064", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "83fbc228552c0c43bb4401873d6daed6c6f880ebcec487c4dabcfb7e5d44a451", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "d7bbf60c859feed696a6842ff9d4ac2e49765894051f24bd1925d4cec1e7cf29", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "64c0b571ec77e37ae8aec2bb290f3eb5545be5ab5509b68b418d6e58a013a7c5", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "f16594f53862573d733757e844b1b79dda8fa59b8d7ac6bdefeb46b01a3a4f27", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "ec97ece3fd30f5f46c7d840b9b4b20d4ec0b56844058fa2555ccdc4c2b6c1d12", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "4eeea1c97725f2521619c1296b4321a42a42a9d871b9fd6a2935f7af34dc986b", -"T2B1_tr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "da7f332c8ea1603ae83b2fddd1e07dd266e2f1401123eebd612ef0f596e8c9b7", -"T2B1_tr_cardano-test_derivations.py::test_bad_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_cardano-test_derivations.py::test_ledger_available_always": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "98e65f4167b7f452f9d9bd8ec7cd8c5a98abadde68b7f3ac4de3727952d0dcb5", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "f286718f832dd9941b1a27b2863279917bd4e39d5753c61200b340a251d66ccf", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "9038d0471b82620572d2d10a5789e09382ea40e47be04bd2da6c006fe203b89d", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "4ccda2d8b89d22c738998337214fb71f4f3ff5e86690a51b31c386d539d9ce26", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "33a3d84223f118a2492b0bd48a6a9228082105b5c39fa8fc0524afd542de3d9c", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "17e06af857ca2077f9c9fb463f754ec5a50ee7e270215e59727d2c2249cdec08", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "b69d4c2437971c18158d05b31439074e600b2ad8ff1d218632ed5e26aebad026", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "8cb6eff36c84e235a4940f88d45cea6e88c19d89c6042d3f174ea22735040711", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "629275465d908f880ed024caaba00c67d25a5ee609f53be90bdbf5ca1290512c", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "2ef1c64ab1ac8e33a79682f0a5549569b01e28417810771ee952dbcc06fb9fd0", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "a0f187d15d401d9996e3ed829267250164448adb41519c211ed3ade30a1043ab", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "ae9c010fff352459b580d008712293980ab8d4bb5628d1c10ca9e9a2dc0fe459", -"T2B1_tr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "55b8dc39586274b56605e770c44b55778b41588c9974f5ecf0a98e531c60f963", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "dbb0379953b20df4b9b3fc117ff0a58f703274d1ac7908037e1891477b22130e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "327557437b233a962eb7f3946b352567570918737f1ef61c0b1108490c6fbdbf", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "aadedee367b854c3c59c9352dbae81d67739e761dfb81c5b88dc15b78185ee6f", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "bb78dc7efd302c813fddd91feee43e4511d6ae950be1e2fb7a9bc2b1e15b3043", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9bbc07d57b609274143223522ed9a3ea6566a25ed3aa440dc7a2909cb33b5ebe", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "b91db1a60c136dc1c0bb63ed03847b60fa11e4e97f53f1f2ad0087df779412bf", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "8e9e56a732eb4025a3eff9710aefb37961d7a98d5916a4c1d54942b2f4aa1b14", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "d59a153b7fdbad220218d2d04089c162d0103099b8cea9ef3f505c1dea941b36", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "aa110e1483f6dbe57befde3eb55eb7b9019126d6117eb207be7e54ffd5f1d060", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "eca2d10530ca962568000f25dbbe682c9c33521f274a1657b0f7091f62a45087", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "10d98e323ae67defb2b48d57fc595d541410487936e20aa11efd9eca46465a8c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "587a731c04b7431129114b8f89a06650a968fabd28e4eb0a49ce2510a08461e1", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "587a731c04b7431129114b8f89a06650a968fabd28e4eb0a49ce2510a08461e1", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "681e1275849f82bfbd6c2a5c96962876ed9d771a54539eecdce65495bdb8ff1b", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "a3cf86549a36211edf75cb3ef10f11e70b01104653480e5005fce714fccc3d4d", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6f22eef276fbee26f0766bc59fe159073d0459301cd1437de37041b2dd93f8ca", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "4e916cb00a620594ed97e27f3c257a0bde59f479de400dfff0d28b26f57f1986", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "9ff3716a1905fe216e919a0d01e408b8fb6ff952eef83510d88f8fcbf514db0c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "dd11c66421e8bd58db5ac52afb0f38cc35b0adf91f877a714d004bf8b3635020", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "d7945f69bd643e6537f738219c85b71153f886ea3945e4cbb4b7f85efe60c157", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "adff652c677c676cfc018e9f61f08e43ea8b4c0edef5ad3148eed55b4f28d78e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "cc98e16a476eac8dcc3e164cc5313f0299daad29ea66988f79583cf0efdd6e97", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "9ff3716a1905fe216e919a0d01e408b8fb6ff952eef83510d88f8fcbf514db0c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "dd11c66421e8bd58db5ac52afb0f38cc35b0adf91f877a714d004bf8b3635020", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "65fa81ebe3d4b8657ca149e4758f2d73da5ec751ff7e77871e8acaedadeb7f7c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "b6562b88826969d36ef6bd3b52255b395b35e963c2c3c6faed1e87dc167f87b7", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "2d454d8879c1d73a741c223cbd98cf59193a29dd6edcd8917a10af22e2e5fc55", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "1bfc8aab509d76bfb16c53c84749f42a5adc1a318b986b973bb1a8a20d052f63", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "35fe0a17f554b2f25bbeda019ff412c33fd82600d171e04952cbc3e7f25b2172", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "87d16ad19b1a1012234bee3b9407cc1c690fbbac1314c58189e9e72c1364378c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "e65e1aae0193d53aaa9766b1985520c093889dea0967b4d265494a11b1e21c74", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "9022da9a02c8a34aef8a459214dbb961918f27985744a34c7db7ab992e8d2fd8", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "5480b8f56946959bd37000351992530db6734e6ed5022dcade741a530d43df50", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "b446be5772595e9ccab165efd4688bd0df9a21d88a94484fde9ed62470a09453", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "cb3985268e013692604b4f658a45bc6b99596fd5b29579b980f95122aabd8ec0", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "a7088e8127c531a935027c532af197ab0d2ea43c79f5fd284cb85b790043eadb", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "1e002c7f45ce65723a6a9fee11219d14cebb496cc6696998519c6da257bc26e0", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "99ce0f1e6b92966dc5c2c2b5af1572f37e66f02b4c7e4e575759ef5026946d49", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "3d3665e6bad49e956dd700a7d5e0951b5cb7255c43f03da5d4aa035b4ed7fd94", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "2620262a567bc2b9958f5bebd252fec38d1e0c666261c69c9d0f98b8cc3bb997", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "a2df0359e2dc8bcb46e9e239835546d79ff3b1edbc91b6fc968725ce45be062c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "82cde8f1dd7decceab6e1974e96f7a41603ce6be57e40cfe7c7809975c09c6a4", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7f6f5eda16b68879da0b3328c28c2012c8d36a36a23b42b0ffd26074a69ada4b", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "a32cee2d00e1649c4b5daff8fcde7ef96786e1ed5e51059e0ac9e0552fc6d668", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "bb3fcab35a8914ae8b5a0ab58c4aef3096bf5fc3518167dfbe5ece2e1cd49270", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "632ccb903534eac7f109d209c403553f79e4a5b566b363c371d96a153a5bdd99", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "16ef6de29f574de520f85642e0848c5751beae370c5fc042185895f210ec286a", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c2d3a9cb5e1695b6d67a390be4da1e47a3928d33514b4c1fc5385baadc5bcd8e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "5066a87425d1d22a1fcbbc226c4f08ff5594c0ec61600ab078a824960508a7be", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "2b2128f0d905fba5c5625603e31ae12340d5f53c407d411eefc6f31bbaf5cb7c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "285731615d9a63b19bdf569c2eb6660e82b454e4f75aacc2c1ec24a97b0a22ff", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "5cf19beae05beedc949fd504762f451ecf6aa8a72b2f2157a420fe96a23a3b65", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "4c0f02a229f763a1c984fce856da0445694b8ce9aba7374861951a22a22faea8", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e3b0eb65314c1ec041e63c9003b76460bad91f6dbab561d0aef022ea31dd1166", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "33a3255ae23326cc8434db838883db2350f483f0d7c062c1a9b0bed9c7dc318b", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "49c5115503e7fe48f2dd9c16a7eb56b9fa79cd22ec46114ab0f6b9a8a4ad715d", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "1773b014cc69763d115bc3e135bb59daca144ce20bcda5436df9039d2f259b08", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "3bc25ea94550553ca6bfb0eb46f3cfe3643bb9086717af18b47fc3ab1359d2db", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "49ddd19dd505dc6803a4b64d03b10030e4bf78240939b2832e18101ba2609e98", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "f4bde62b320edc22e134199e1a7aa82bc4d71ce37da36951da7bb48efb8c28d4", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "03cc684ee7aba60279ee9ec46c012fd24d515e2f43ef65bea62f50d9e44b9ebb", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b42614b4fe37f044886ff5abd99e0ca4d5481126fcda52f7f22af4f8299de507", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "05f1383560161e1965519783ae499a231c7c9fd780ceab51ad66ed3cf65c2ea7", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "759e44827c9ef479cbbd95d3e28e081e5fff65c7e0310b79e68d804ccf586d2b", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "eaf3937c7429e172c5f517d011c7c1fdacc2f08d46e5a714d47b7dc0e4750531", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "e3fa76e48e956a0d967a44224e179e24ad8674a92d5994b8030e01548a70a5c3", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "cb6b087c479f23f928e7d7ad5159395294e84eb822b2f57f9b878fb2d6157035", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "eb73ba9dfd84d2a219b245fd10f9acc899e91afd8115ee89bf9fbaa87ac67b82", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "6b4e0d62dd0775e427c724be414cae636c332d31294bc9e642f843f1cede541c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "d531e921582275e4265e5e7e5424abebbb3431adb68f0b2b6156fca3aabdac94", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "ed94ad57be995be256c39969af9d537c53d421b4252802306501e496ddbb14d2", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "25e98ce808225ee5a669d15b68032abe7445a6bbad6b859997a3484dc8a991db", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "3e1963a6ddc240f21b9d5ff2f2c421b41e5245242a9c6dad7696bd0f33cd987d", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "e8bde4c2a9538980d6ec558b59e8640b9f3db05cf8d9b7e734c3c5cdc3ffb13f", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "6f371a295079ffac3ee9c226082c1eebb7767b510e373b52d70b161aa8121082", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "1a4883d908325b5a83983269c1663fa72a24ee0dc45bc24ebd5512412bda1470", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "1a4883d908325b5a83983269c1663fa72a24ee0dc45bc24ebd5512412bda1470", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "497317c40a978a6de28d8aee57b0826070877098544cc893d682bfbd8d85b21b", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "16d622cd893239e49fdb24db9b92e600a4170b68f680074bea38c0080344d8c5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "16d622cd893239e49fdb24db9b92e600a4170b68f680074bea38c0080344d8c5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "2c0f44de34a8d364b952599ee1d07cfb511f8b6c4dd42d133513229351a4244e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "ce79a48ff1729768f8ecddc02e013c4ea930d8c4dd28b7ad0c1f86e5917972d9", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "03b4cb555ddc3638c9eeece7bce5d06598f5d29acb2c4269bf9463269105ffd9", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "c7bd33a8e8c002585ba93634a26fa6911813671509692d80edb2e2a9d9576a54", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "f338df01e914d33f820c6c6cc92c6d1b1009616053a77a04b4eba1b7836e606b", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3adb0f42c130dc1aad33ea81e69531c55c606cd9b1744c0501c6aeee75a618d1", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "0fa64c555d0b366c7b65ab74ab2a5d2a292dc5c288acc0c094a28a712cf558f8", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "7882d6ee814dc24ab8d3a1f4200d4c675fdba87122779c247dfecc86d18cd887", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ba605e90353910346b78582dc6ac594ed566cb2b2e7fcf414e8bd45f2de71fbd", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "fafe0a1f729b504dee467db16ef31c947d9b8f99a023f850abd308efb03982aa", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "dbb0379953b20df4b9b3fc117ff0a58f703274d1ac7908037e1891477b22130e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "8e9e56a732eb4025a3eff9710aefb37961d7a98d5916a4c1d54942b2f4aa1b14", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "3a6a248a2928d5bb29d4378c9943d6540d0bef77b45f5119c851005820be7b9e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "296fb204895ef892cc6c7665c60b5e39b7e919c9a19c2c6e063f5631ccef6d3e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "296fb204895ef892cc6c7665c60b5e39b7e919c9a19c2c6e063f5631ccef6d3e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "0a5d494df0183fbc7867663d3d9a1b6ae05c57e49bfa91c2eb040a4b4705d31c", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "a4d0909854845ae044b5426941e3b622e2552c7792e20ab721e95c4562c843c5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "6255ceb0c676f9a91eb5e89916515d3543768f0a1a9c09962ddbbb4447239aad", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "3f34e1dcde5b68ce030f5425d8e958c8a1f28644f14a2705cf9d9a0d6c068683", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "5e88c7cba8350db998a5f4c7b5f84810a58033c3cefa82fbf447efc086375b4d", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "f8f5fa91d39bf869ff9ddbb478b327a313623c988b41021652811577450d63e9", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "178ae12f37f61b713f4f21fa0e592e251fe25beb77d8619f715893264b75c741", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "6bcd043a073f5ff5db58ffbc86fd1cf49689754e5daf8e62cd5e2c38cfb13dc2", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "6bcd043a073f5ff5db58ffbc86fd1cf49689754e5daf8e62cd5e2c38cfb13dc2", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "6bcd043a073f5ff5db58ffbc86fd1cf49689754e5daf8e62cd5e2c38cfb13dc2", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "6bcd043a073f5ff5db58ffbc86fd1cf49689754e5daf8e62cd5e2c38cfb13dc2", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "5e88c7cba8350db998a5f4c7b5f84810a58033c3cefa82fbf447efc086375b4d", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "8d0d8cdd35af3295800256422009a462a12d9dedaadfa2b4c0effe8314c560a2", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "bfaced4877ff465da7d4a3e750306d4eb1a5d4adf90f9e26851ee07ce9597c09", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "088f7e7374c3392a3bf22e0eaa45ff5acbb7f851362bc72a8b7bc414ef5a58e8", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "9257c718d6c8c2e11b597c84e6b7ca16bde410daa32ff6a5cd3357b91be4f994", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "7d5650b02b02d40f6f8960cc31c1924e7bb7b5490811907ba9ef356c09baa508", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "0dad35bf0ae2df276d74d7df29ee3c5469e05e99fb7d2acc86f7beed2bbc2861", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "92abf492932858849d82e1aea303786d3a82109479450e3d93e4256cb6897680", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "0ed9fbf7b7544128c45f55c82c3d69ca17a77bd3c93d0e7571934a408db1858f", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "bfbdf0cd20191783196c0e7fa4be4d38d97831c968f8d3af38f6ba8b500dce17", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "7e9f23911d9c05359970e3f6811a98ccb323ac704a77ddf11daf936884c64d90", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "0c514fd41b5852280e39a5ef7622e22d52eae543821cca81ef6cbc67c3fd51cc", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "296fb204895ef892cc6c7665c60b5e39b7e919c9a19c2c6e063f5631ccef6d3e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "b4211a3b3a34e16fe7c5a74d13b79ba3dbf0da56fe43a8a44c7df69413accad5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "5e91f2b2e832cdc505aba849955ad32d443eac3ec8db51fd0b03961231806ba5", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "10d6db4f199d18a3660eecd3a5732ae283d8477b5972047983f2268986a8dd69", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "ea09b676de741578adfa644689fc7ed3019de0f96c31811ed3fe03f0c68f886a", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "d5064ec6b55220302226acf0cf21b7057409ec08a9eae592f15a99d65fb05257", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "68a0a3d8ce27191731ff4eb9598b66582e7a227a7b518ab72d34e13b2ae0aa22", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "200546684be997ca1ccf7c0e9a090885a8c39320deb6aa82ff9fc39654d954a0", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "881c6a8d4114722a3d0bf99f44076555ebf6a1c611ecdf59049ae2cdb7f1907e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "be6d7fcfc6e72c13407670c691e2c462c22f8301978f854c81b0b963da668a02", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "e9b4c369a35b1ca0c71f554f088b1c3c5d7a5f97448123f4a59e7c97c2ab3a2e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "01c5a4634bbfbdc5329053ab5bae6cdffe1477ec624357efee0a697aafe243d9", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "197f511df35fbc8ebe2f8a28640a8e2716a4fb2428789f0f87a126777cbf8f47", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "7b1465dbfc9718dd15517ea60167af1a7ff3afa33ce300fc04fefc7ef9c20a77", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "a7d0886cdd77f302ffb5f7e929b7e315ef45a8955ce72a79c9e4877e28a51a7e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c6caf460370ec001d02bea7dafacce11bf8f462adf3d84189523646a20a458e7", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "dd11c66421e8bd58db5ac52afb0f38cc35b0adf91f877a714d004bf8b3635020", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "69d4f5c42c761b986869f434b593155e19fdc9f97f81ada0baa2272f69b9d28e", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "29235df092866e02888dac3de3b97f6fcefa92d6501507b9154fb11ab3cca439", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "6f83388a8ca8273897b80824719eeb2e188a84535d75852c394b1aa2f2272723", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "de5145b917b2e37d88611a50f22b54aa0724557a4573272506fae49bf9282d88", -"T2B1_tr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "d33270d95bf227424a538e8ab555ae624c0f04801760dae2d4e647c1465c8d17", -"T2B1_tr_ethereum-test_definitions.py::test_builtin": "20a829ebb04d24d67186fe9a272580083edfe0c988d106d94050e46359136942", -"T2B1_tr_ethereum-test_definitions.py::test_builtin_token": "b8178b0411c92d94dbe9d01031958bb50a85ee7a6d585db2f325884836db1285", -"T2B1_tr_ethereum-test_definitions.py::test_chain_id_allowed": "c4cf05da10b089f50a100e470dfa33dcedc7cb65561182866594677554c4b676", -"T2B1_tr_ethereum-test_definitions.py::test_chain_id_mismatch": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "49192d762d8dfa61af91e60097296322cb6ad94937df35fc299fa9dce951a979", -"T2B1_tr_ethereum-test_definitions.py::test_external_chain_token_ok": "05db28b7ce99e9fdbc04658a3c1fe0e7f6a0b0d6c38c5d83e890f9f3d8cd447a", -"T2B1_tr_ethereum-test_definitions.py::test_external_chain_without_token": "1cf32b253b046e498f08282c5f2bd6206e542e0fe022894d0dbe15b02b2ce487", -"T2B1_tr_ethereum-test_definitions.py::test_external_token": "1f33b0a5a23e1d93592f2b781416348f574b09ae3ad3fa5f3e554d36fd5e50b3", -"T2B1_tr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "4177ac366e8e176353b0b7734775b86e7ba2cf96dd336763005540075c927ff1", -"T2B1_tr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "8e8a1ed4e0287e985e9e7310897696f6fe49911ace506e11eef4da314c310c63", -"T2B1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "0ba57273264165c2ad85987e2ccbbbb24bd912311f7ff3086c3a25b9328ccb6b", -"T2B1_tr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "0e900c254865f55dd335455c24fb3b800f31bebe2db4cfe660729cf894ec270b", -"T2B1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_slip44_disallowed": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions.py::test_slip44_external": "fb4470bd081a123f50719115e85392943b4486e1cef8f01f74184844aa1637b7", -"T2B1_tr_ethereum-test_definitions.py::test_slip44_external_disallowed": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_bad_prefix": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_bad_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_bad_type": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_mangled_payload": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_mangled_signature": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_missing_signature": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_outdated": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_short_message": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_trailing_garbage": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_definitions_bad.py::test_trimmed_proof": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[ETC]": "55060b8044c8c031724f16d0cf7ca21e9c7527e9b83e7ebc6821baaddedfe680", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "0da34489456d35b6b708ce6f84f35a4c41ad8a58fa914770499545bd8b2d2809", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "d5c624ceb5e5a2e1ce8c906ac2070d2c331182a5473c45c3bd153c6597b9a799", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "6b8dbf4787fbce076d531f06078e87b616a20a4ee6005dcb4175c1d83977fda9", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "98e6ebf25fbcb96c1f2c9fb94f7be90b40e5d4d06e6073660cc9749e3475203b", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "9d6fa6b803dd7cabc58dc674ca04bca458426fde48d1255fc2a19381b878c31d", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "7a70284a90a6a00505684dd53e82f27c5f399a6a63b809a6a91d7e394ac75132", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "438cc432e0d387f991089acc49c001b7a4ccf2e3f076b4611d117d129daa0071", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "f810fa5191550b548141fe7446d1fafccad8df1ee751195ce54c64ff631b6643", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "55de47d838fcfcc2b9ce6172bc16346ab1ebc7ae9b3aaa073442093bfc5ab202", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "d494dd8da3189c094df59e04d4f003db4593f177fbe0d5584e6615cad047a847", -"T2B1_tr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "3fedd778afdfe4ad3589f9c43b6d7a1aefb97b7ec30cbafd2dc24d6b4bc42479", -"T2B1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_getpublickey.py::test_slip25_disallowed": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "6ff21b17cc3f67ada2e4e9bf4b5d9445de2f0546057ee09de91eb9dd19d9d5ac", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "17c833d68030d1f593f4046c8bc4c0bba3636a8446e640feb2c40f141751528a", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "da3509e75325408e0d4510371a12910fc836193c474016b13ee660918f9fa3ad", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "ecde9b154768fc9cda74922d62b3ac3b595f8d2ecd48c7be7c0edf5331de4ce5", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "94f80d3be8117b7e449cb9150b8a1925afb688801fad19734a1f2527ddc680ae", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "7d94029e9281eef1e6a76a7eb615feefc82567febc61e7118599431cc3aa67b5", -"T2B1_tr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "9afe6c37854545d21cc5992d18b91bc2f424831c06aec928a950e99fc1fd2e81", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "623c1afb940b324fde4b7351115af18754c2fac551c7dbd3017ce8e710c052c3", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "3d7923b186095df54a074c6b36db878dccd6a76d0adfff2a39df66a758d938bb", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "ebc7ca3d397e109e90c1947aa8e502bea1d1b2e6d7840be71646368738ce83fb", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "1207ad0052e69cb782293221b1680d8d4531a0e172ac656a449364d66f17bdea", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "cb10db9c29771cd177227b42ebcb31c6b6761d6c87397a8ab9b106c561ee2234", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "6a460a4a23b19d57a53c2f8c04cbff774f0507858693571be470b3a3462c041c", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "26c98a10fb7cca1bda193b7723c5ed66e320c6624b7e42ac799d4b94b29f8a88", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "64c34e77a09192e0aa8000779c1e76f245abe3bf524303baefaef15c976180d1", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "9a66bf511f28e197382616f989d209581af163993ce0d071343c4570a0170002", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "666cf57e7b2ff7cd280a544e208ebbb05b82b5628a7cb1954718fe297afd7e86", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "a60dee48070328a34d07bb51204c2ad5d69f93d43845a0f73a4d1756aeb082ee", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "4b2d0ed92e67a20c624ba2f34c521bbc8933eec648194c922dcc95f42c3210bf", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "d035c65fde35170acdb8aa977d5a02fa86cc57d23009bf7bdae548e7e928dc9d", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "1dc9fef07f7ad946e2b6eb109e34f0b8a9dc57c6c7727f7e3efc160f2ee39c74", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "55ba90ba95e248c5181a9b4e9b7222c80bab7bb078ea3f4de65d95c5ba2f8f80", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "7a9fe11da46df36a7c851c66f8a11b071095386bdefeb6ec9fffb4c14beb342e", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "c158f1ed4cfdd867e59bbbac7de0fa4f1cd6769d27a8a0d5b3a7ae30ec78b025", -"T2B1_tr_ethereum-test_sign_verify_message.py::test_verify_invalid": "666cf57e7b2ff7cd280a544e208ebbb05b82b5628a7cb1954718fe297afd7e86", -"T2B1_tr_ethereum-test_signtx.py::test_data_streaming": "b448f356eb7f6a592ac3e8c27b492373a36dab90bd1ab7eb51ea312f41200503", -"T2B1_tr_ethereum-test_signtx.py::test_sanity_checks": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-ETC]": "5225eb211d705fc846f54974e64bd0dae303a27a59da24e8a010e9d60c940540", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7ace8f646256f54e0a57061f84427026189f851386b58406735120e8ecc1caa2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "0bb239ee3d02af5d62e00172c771c17830acaee7e4e62ea96c312d7ca9fa7bf0", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7ace8f646256f54e0a57061f84427026189f851386b58406735120e8ecc1caa2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Palm]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-data_1]": "d638e3dc089f342d79fa21e7ca657597f02a1d2eae77f56b4e816ded17e1c818", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "1f7d9c67dfd603031a41666d1a71c15522979e5131ad4e3eb6bc80a67c7b8fae", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "64c2f88e05eca13520cf974eeaaa8ccdd54d76fefc7bdc1c3f7469fd5330947f", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ff24a66c854d2e4285391b16f6dfa16854680c582906e1ea2076e0ddcd9aa5f2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "19b435cb9726e06dc2a7b6ce1bb6196406d4a9fee79d2b256e9e0ecb4f991fac", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "468021700d33719e25a81819a8779bdbe7c8486b29e27d6968e9d6e17fe27031", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "7b18685fa5c9afe16fc97a4837e6a0f752f04d57412547d321152dc3ad4efc25", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "b27249ccb5ee4835816773949a4da1fb9d8e5e4ccd19450361f11ba841a54457", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-ETC]": "9eb6486ed082c8a39ec8720513fd61ad010d8cb63481943b38e2e48f629a8963", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6ad36de1ca52bdfca0602b62f054c95a30f5357fc34921eca58198298780153d", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "212a280f4a4b5d70f5e0af325d3d12492f40ef843ee63e3bd7ce03b5b7847cfc", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6ad36de1ca52bdfca0602b62f054c95a30f5357fc34921eca58198298780153d", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Palm]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-data_1]": "813051794c9b455377f3ec91ccd9db2e01841e004cd512ea4be3894965d00f24", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "04cb5dcce85664dd745152561bbfd5083849cd57796f6e2da6106f026650c397", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "5632395aade6ef811feb73bb4d4a93403a6fd24f7a72431d158666b72820326b", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "aa97e3583eec526b9164db5c1cc33cd4c2e77a80dcc7f7ff4602bd900577406c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "19b435cb9726e06dc2a7b6ce1bb6196406d4a9fee79d2b256e9e0ecb4f991fac", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ce46ba8668e1897ae8290ff4a4bd448e2e7fa1dd0ffde5e1254027fde02867e8", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "46cb539c2f1b563d68d45ef9e0e4b6313673eba8a6dcd19586fda0997224d43c", -"T2B1_tr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "22b065b312e7f31b844089443ed6f4f93e8cf65538d00132225ee8a4778e3edf", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "35c678cee9a831d34aa78f54999ee96fcddefd29b9ad294e03b2760b244337a5", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "cc1635c0fe4133b3936b263ae906602f2060a14876decc0723b16fcfbadcea4f", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "0e0112089fa909fc7d646c52d9340bc017ae0d94560b32302bc731b87f55501b", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "e42f81a08144ad82b42d1c7f4840a7765536882b1accdf2d904715d84abf0535", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "dacf20f37457ca5f367fb5af31225b0a01f210fd7ba6a76782168e8822c88a97", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "ce7ce008529b2ea99ce7804dddc6701cafab52e47967e0022949e02b637ca0a0", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "4ee6ae6e852682d984bbedb7eb024556ea5c1865ae9f2bbfb572f8390fcce062", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "afb4c84822b9a401e8206be7c2921390b1251ed185eb090541b3ebfc6707b7ea", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "0d775352e11e4212e36c2768a2b63402f5eb6ab35d718076913fd1e43f42ebaa", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "e42f81a08144ad82b42d1c7f4840a7765536882b1accdf2d904715d84abf0535", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f85edaeeba476588169ee6457f05dd33b7f7a531932cb9f5c0a2734a058e3d4e", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "0130ef121a2ab9d60b52ee08a840d77628d77e11d4be6cc0830987444af7f589", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "a64dd14fb645ea763223ee789f63106d37bd980d94e5c202f161c9feeb64ac93", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "0b9178f6628461524bc7afa24c3e446480575641d7e1e4a9608dedea3c264e5d", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "06fd4297bb8ac26162e93bebc6dab7d18801bb1a3f5423b8379dd2bebdd813e5", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "3ecd49d12964db5dcfe96338f9e76a0871959d5a2393f5c3f037891cefbaae19", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f85edaeeba476588169ee6457f05dd33b7f7a531932cb9f5c0a2734a058e3d4e", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "590aa7d206f21603fa4cbfd261dfcb11c91ef1f14d5d88adc879c6ed9b271c3e", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "590aa7d206f21603fa4cbfd261dfcb11c91ef1f14d5d88adc879c6ed9b271c3e", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_fee_info": "10c69d203bf248b461c5fcb138f115c31c848b2f9c6537d9fe297ccb342ff7ba", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "24b2977d9c0b79b9c7e0339a67ad9357bd2bee904bf7fdd34c8789de5a1c94f8", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "b0c50a11a9b323670993046b8173d478cb7e3fb2ff775307d2e9336d55bba12a", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "ce78adca62eef72cb44ca66e7af5f28974d3853625232da1e36fc16f2323342e", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "4fcce2fb47ef08dd9404f6202cef8b54c035722dec818a9e66be78a794ee6fd8", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "253a90aba5eead369f6ac250919c0d4bd996cf044343009753d1fe2eddafa841", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "52d093b88c1cca9b59afb756d517bc4f421004915cbdb20d138e16cb1ba109fe", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "c3b1aa7dc48740c690938ff18f6d91ba7fb1bd05002d006ab409216efa55b858", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "21cc18af85e15b270007603d3edb318e7ea854fa7969715f594ab0d3bc985838", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "3f130775195dc850f6bb17cbb95fe34476f0a2bf9167f3655717cf7eb89e5655", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "09a133d6a8b716991a44ea2ce7418102bd53955cb8f6c66f32f6fd7e8a45aeeb", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "65f41601b09f47d79f66659f7b3a75dffec301e79afedb46a715dfef865dc5db", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "2425598ab6e7a05254f4eb09e092951d6c1d9a79b5d21435aab4f5f66b47e4be", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "23da937161fde75dfb2cf2975660816a5131374ef521604acdfabc4592dc02a8", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "b767d9bfe52313ec503c92ee3925cc2d94ec6d59e1479f5f8cd7185abb503c54", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "b767d9bfe52313ec503c92ee3925cc2d94ec6d59e1479f5f8cd7185abb503c54", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "226efded3e80f59f12360ad601632197a1ae824cf3ba988659e42aef749d09a0", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "226efded3e80f59f12360ad601632197a1ae824cf3ba988659e42aef749d09a0", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "87a544f280a4bb4865061d9645059e916871821e8822f30e015c34037a38c0db", -"T2B1_tr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "87a544f280a4bb4865061d9645059e916871821e8822f30e015c34037a38c0db", -"T2B1_tr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "e65c5e8388ba3bf5c3abe018ac4a965bf22a9594a0248b265b5641768155ac10", -"T2B1_tr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "6a5ff821b9c7ecb737148c5397ad08d6107b2731f3f7e6bbd5a54c8a0122539c", -"T2B1_tr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "e93503652886ac9a4155d4b79031dea10ff14f9a076e135c13d567d330d79f03", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[128]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[129]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[16]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[17]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[1]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[20]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[21]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[256]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[257]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[32]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[33]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[3]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[4]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[512]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[513]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[5]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[64]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[65]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[8]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_getentropy.py::test_entropy[9]": "7083405a7b655928f0ffac9fea23b10931a1efdd8a43c2c811b8b30197f7d758", -"T2B1_tr_misc-test_msg_signidentity.py::test_sign": "ca885455ae060a6e61473fee6b796019a22ef5f7ef5434742232cdd7789745f3", -"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "790476521ef49e0633b8cb3a63936496080b6b038106cb48c64f15984c3bc455", -"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "3fa96865ef4488aae87fc18102edb17172ddffe27766e58e4aba9eed8278a52e", -"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "dc9b8d441fd24742f4a65eff0333e531b20318ad44d8ae9a89a7d35280e2c7b8", -"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "404d2f7cc018e7baaac62263e2f7b8f170aac441eecdf796eaa11b8891cc66c1", -"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "6e437dd63dbbd9dccce7fd061073fb9ca79d8a8d03198446d2a91d13ddc155d9", -"T2B1_tr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "73ff88e453c8796599093a17ee693377a2a0a00f46bbba32788a603e34a4be14", -"T2B1_tr_monero-test_getwatchkey.py::test_monero_getwatchkey": "f567f9be12ee42d595f395dc43a0857df2e172929edf00f22c9f918b5ca3bd5a", -"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "5b49cfeaf80a8bb823f215760844666a39f9c690c7025d94f3cf55b3e74211e8", -"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "6c8a7469cb50018a9a3bb507b415ca3c5a5520d7a8c098c1c5cc5609be2808e9", -"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1b52b880e6bfe28c3a617348d7a5d5b4b58c45f6030dc1769e01bf0b22f15559", -"T2B1_tr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", -"T2B1_tr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "93be94b8427ca38fd838fc36b82a507ea5f638c1963774d923ab6cadaa7402c6", -"T2B1_tr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "7e2f5a377b01011c829fd043eaf04e30896f56dd4f0f9edc190d8ca3b003599b", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b0ad22dab14120db9e91057f640bac9d69f6886c439c34d21b68a58ff622b76f", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "ea8c92010bfec7e8602b7750020f82e2b372f8ca86f32889d7e001b37c093943", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d6b37abce90c98390ce5e79a27531dbb99d8f9c2b896a47c35a82de5fc92269d", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "9f061d9ce324daeeedb2f6f07c46571e7368935ce279dc0c7749c9dbb44c854e", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "b105b922ea2ff0dc309be1388205bd8158a5e18c2edbb96d49ffe75e6d35e2b7", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "447fda3026fa3431883e2a28ef144611bb9adfbc183f84d4b30cd09533f1c4f1", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "42cecf825da0fac2dd60dd936b5c8c8c9d540237dcae1cf6766940f69e5d5362", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "447fda3026fa3431883e2a28ef144611bb9adfbc183f84d4b30cd09533f1c4f1", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "42cecf825da0fac2dd60dd936b5c8c8c9d540237dcae1cf6766940f69e5d5362", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "cdc9735005ed9e5230b8a1398164552e239737a2d58452f7686717f47da5566d", -"T2B1_tr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "405973bd59af206763f3d8b72a3e20e1bb5dc9c29d7dea52c81b28ac55065f0a", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "e7d3a49b63fabf975a09f9df8fc0e51280fb66cca9e4478b12c99c7f3b8dc287", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b0ad22dab14120db9e91057f640bac9d69f6886c439c34d21b68a58ff622b76f", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "53f80315031702b9fa4a19b6796e04f0ff4ef7105280f0dd38ad8be62b411b23", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "0a6a82d8be3674120f3e897aba44b0fa8814de2fbc34f9c76e69e1c4cfe5cf91", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "42c88f4deedfcd3466f4ad617d5bbb3f8d9e0f7d3e531b3a028b00794cc1e453", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "e5563100d4bde66ba472fe4e6a21837d20a4f08baa1459074bf89b713b0868c2", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "112ac19de51229a3e950ab3bedb8a6a7d813774d87b9a488528f8c382c4e540a", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "ef7c2ddf26822e918afd34998819c4a304f2ebdf129ab149afe4fafbef753b81", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8ef10c74f06322927478a50bf8244a878f555b52b9762569f5d81ffdccca772e", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "7a51a0b8417aa7703bb02c21ad728b1ea44d140b8ac02857099c0e03f34aae66", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "ee7146c570b5935605dc31534ffb844321865178b76156fea2ffcb4eb182d8b1", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "3cc60373ebbf6e7334d524f813f51cfda397f2ce820fe1ce1e3e4f8841607eb5", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6badd02845c7a6e657844b473b2f9f831ee805c2033cdaf4927f9bda88fa6183", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5a2d48bea091a9ccafb05f0c945e38be6d9d9edc0e7c15dce550643a39bbbf83", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "40ce3abeecbd99e7997fa1f75b81fe332d6a259783cfbc228b9833c2a336616f", -"T2B1_tr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "25810be1872b2f8cc8489b2beddda9817e9a91aa2db7917139fd66a599c01132", -"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "74e3f8f05670824616e9173445daa0a1f075e6bf0928c8ce74d898085165d957", -"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "2af27a0fdf02a89e272afa0e944161c1f25ab4fc36040428e41be12e1129d6ba", -"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "280a535afad402f5178a1a03125dbba54ad5252a66a51862cd1a22a57101b33c", -"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "435288c5e1e6ce65e3f1b78a47cd5a9fd8c6136c2ac582ff7fe7d7f9f24eb415", -"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "7dd37f11b819d878136b868c87678c54cab7a2818f1bc62aa92d21bdd9e84742", -"T2B1_tr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "2adbe4f9e03ab72cc549a60324f20c8372c1cbd22d105b76ecbf81de40c496e9", -"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "c89cfc60550861b523267c374b81451f3632c25d5cb5e7247b8dfb3e964eacc5", -"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "52fbec35e6e73f73556f80a0a8676efaa27399af3bdedebaafbf1ea3813803d0", -"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "fc7220b8057771892a8e973f1f3ae74bd4e20d69002cbb38866de481834412f5", -"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "8d09f3adaeecc9c9b9dda4862528c1053630e70089e3cf7b26c4bb2fecd4202d", -"T2B1_tr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "ec83dfde012fe9c656238856d1311e3bb0ca4680baaaa47595fc660d568b9d56", -"T2B1_tr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "09c293ccb3116e466848bb7a7c795f3a3bcffa3ca340105e9e5d626d798847d4", -"T2B1_tr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "5f114232bd20de96bf0511e20e9696c4c42a2a90547416a7e7e1bdf68c5d8bba", -"T2B1_tr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "43d2872b0c3f08f8a1ab04f65ffc0bead91f8cd80849073b792aaea8f45c1f54", -"T2B1_tr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2549d9ce6031945629a6ffc9e5b8c70100741cfa5c206894356c81221519571d", -"T2B1_tr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6f13d9f38938c9b7cf57bc4e75a0630486738ed292ca41a2179037eeb9fbdab7", -"T2B1_tr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "1fd5e2d72c8116387882aa91bca14526afd3551027e28580722a233fb743eef4", -"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "64163df2af106056c3be0a70a64e5bc0d948e7d71fadab34fbd08159edde6a30", -"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "9aab6a6a3e831f828e07297b8de65957f03262f071c3eee78c0ec17dc41a78af", -"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "9b4d8cfde49d4f82865241a604c71f3171cd9ef173e38e149958a15b9e7d010d", -"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "b6f892fb376f5314f0433415e26251407ac49b355cd918e19e75499daea3b4a6", -"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "88841eaaf4ec22b0e891d98822c88d275274ffc32efcf80f831f5087febc2187", -"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "4f7a49a872cd80a2adc571346db5b5e3dff95798ada302fd9fb754eea5f60748", -"T2B1_tr_ripple-test_get_address.py::test_ripple_get_address_other": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "7f1f50a580d63ab5bc65c39154d23eb3c7c45f515dfa58596d60ed417fc6e6b1", -"T2B1_tr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "01c89247d55a41e230de0ceb38fa5679e20e9fee244d4d53573d60a949816f41", -"T2B1_tr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "bf9284761c6eebf9bff5c965d8851110be8e8def9b2c9fdf87be11faf9a2e36a", -"T2B1_tr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "6304acae9bf729deec1614e0fd4b74c3a307aba36c36a87192ac84b2abbcba63", -"T2B1_tr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "22add2db0ff80c533e6256c20486a6cde3d41b6802d732d5def16c999969b309", -"T2B1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "97c5928960442900c8beb26934eddcf5e9994e7b4a35d38deb0ad42a5653e423", -"T2B1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "1813586df87d5d7b0494525ab7e02ee12c7819cb2a124d052378d6140365f98b", -"T2B1_tr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "493a352b8f9bb90a7b4d330fdbda0ad58686889f28e93bb27358604d44670d99", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "6508a7bb5e9eebbd8989bfe0cce4b415235a1263b79f5f26e2d026b1b9689a3c", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "f9b5f739094fe5b0a5d1228507619fd042bb4c709463ddfabf147b511f6f819c", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "a6dd8b7990aa630fdd62950121494fb077bdd01212fbc27605c7cdfd472770b2", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "82881e4252e6bc94f153d0481630b0a60cecc0efbdfd8fca0bd333f948eec74f", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "b0cf6b7e1bb90f85f97cfea3e4b11f72c5d7a22cc3584cd1e96052bb78afbc3f", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "cd3a5ba742edd7ab36469b6f7e88e98e4ec53a95b2d90c3e8f6354b323198922", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "5c43ffdcc53c701da6d25051d63b613be0a156350eaae1124c2729426e28ded0", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "72b3a889e317e614ed23614b54f070146d7627a2ae28447f437570d74df70d53", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "f6e5ad3a68d7c4f8ed6c292ebb881679ae44724c4b7eef150f59a8d80e445669", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "8a3f65137ebbd970e153572e3da26e8a3a3f93c44a673cfebff3bc687cce2d84", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "5382122b2959fa36dd4afd2461e51fbdba0ae7096080413d80351c94179f8812", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "aeca778f3d95b60b15b22f0827f20c53e3ca0fb8c26abe1d579ae0ce36b01b96", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "d15de0020688c6910736db84ee21282418f76f96da3b89c367d99c96d130c2b1", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "91982f455c7ae4028e509287040161ca537fc362abac98c1d836aa04ba24f469", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "bd760733c69268faca1d7c4e77c5ef131410895f3b5f7f12fccd9e3a91d84a39", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "98032bab57e1add79c9b57fd6b4c0be5ddf4a8690c55e450ed927e7ee23278b2", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "7bbb5f4cc70b8e2ead8c1e88978e7e567c69960b4744ce7254d25b622273c385", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "625a7d9ecce0406b88187727d2741c461273c8c30fd950c1acacf96155a10ca2", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "de48549662bb6c3258a6604b71e38c5c7aab485d7ea67827908ed8ef0717fc90", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "68b36198ea177caa7bcdb8a54f863017cea4e853fc98d8ed6bb8c74eaa6a4b25", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "78605b5427c0cd16ee0dd7ad40f7569b448ae142c1154b40d5024d67b49a1c53", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "78605b5427c0cd16ee0dd7ad40f7569b448ae142c1154b40d5024d67b49a1c53", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "78605b5427c0cd16ee0dd7ad40f7569b448ae142c1154b40d5024d67b49a1c53", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "f7192ffc02565867bd2e5e9b5eb5d9e17270e27ad9539e24941dc900bfa671c7", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "d564cab44e29c2ab3e0603aeea182aa2aaa389aa72132a62b99cad6add3a8155", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "05981e070f9c774f766132c779f12f2f56f600249f4ad05c01dff3b626fb94b3", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "5dfb65ad23088c35c11e7cb1bc370169c9259565aa29a76f2d035ae77fbd0891", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "4d19c80d3ef930f61dc0b7585e32df27e649dda922e0d8a5f037b44d3fd9b258", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "8df59f2f821528a6dbe8f8f817d367371231f16248a5ad248aa5c20bad3c8a52", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "b2be43a17c3b2d866c7377dc3e4f4150c661f3ee4307ecbdd919c42fc030678c", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "68be99a998639d2aa6d26b27f1b45eef3b6269bf1156d59665cbbb076f02ac92", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "70ff5b2773ba111a362267da29d4b850b620682e8f09c3909bec05672d1f389c", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6c716e1834b5cc96abc24b063baa0775bf85a15446b3191bb1d9ba036be2ff3c", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "4d533baa05234506614c9bf49b35638bc6e34938dfeb759513a59f2ba67d902c", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "3fb349205c2073127f3ef95a22a1b4c5397698ce0bae26c9590f0c9fe873f2ce", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "12ef76677f1eacd00291ea9d54dfa0b7fc45465dde54fda11bb49e5a4948ed36", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "36555dd4be7afded752e68d3bf9735b1c901b40d242e5f5ddfb24716c9049fa0", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "36555dd4be7afded752e68d3bf9735b1c901b40d242e5f5ddfb24716c9049fa0", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "a6275dd41b185dc1e0842896b4a1ce38fcd717df0c5a745f6aaf6e77a3650dc3", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "7f16eff03c9fbdcce6b6275e968ceffbcaad21623e2c578adc2a6f32bc61d312", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "2b83619b8e885676513ced2a30cb925365cf3ca497361853075fed901410c885", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "e08b98e387b8ed337c89df857e5e148095f686abf7a714ae48d3f09a54ae8706", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "c480bd919fd5f2e71d1b9bcc98592571fd28b478d547c34f786d2e69a0bc17b1", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "0c477b865d1f70dfa3ea7354cda9dd5939071ba6279055b82eb3e728c884d3a7", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "55ce141730daf916b1327b7626a40d5e3aa0b95a8ead9f0f4e9317fa2fc5dcec", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "dbbcb21cbfff744edc225a7005512af00740ea7ce3d41f457acb0ecf4285e501", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "f6998af785b30f8a6f52396d16f1f1ee7171b23988b9037d7d14a77010395e11", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "ff2cf3bcc0dbbba567f029e4759c128b0a8c2a60d677fef35a15c521673564df", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "804818f8a22f7a65c661fe3fcec3e0032f6e0989a3441c80245d000de79120cc", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "768bc8c20c6116a29e9a8d0b36a6137fde17a1b18661395befe4d5c738512463", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "f403cd8914c4c06eb7b6d87906d8b56d061bdf14074339cb30a20af18d93a471", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "3dedf72a565fa72c57a5bbbbad7b4e8330ec3b34479259532ebb8b8120b177e6", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "91059bde202bec807f1bbecdfa6b44b200e553686d1f7f5365d79fc188e2f5fc", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "dbcacfce00f4f15e475ae21626c1d01251cce57c6ddf5cef572dbc1d0bba4e35", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "bebcb990c17555669f0049826fe93a4ff889d9a4781424f3446a1e84eae3e487", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "6ca69db7cd3e8749e809b5fba5bf9474d051b131d5e5b57bec37d75afec2b440", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "bed4af0863955f31bce9fbab987eef93d9c03332138b3b392feafbe3062c2acb", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "08292427d3758da69f3891d4afa0976f5e07722192b0ee7e1f6166fb6dce0d18", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "07b69e8299d7c0e1490b62037d130d4c41338b08676fbf8d405fba8301d8abe6", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0dce244e39987d20a121797e74f4f737a474b88d308a5eaafd08e218a2178e64", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "162d5db12129a99ad07dd09da8137a1710077a69a3ac328de9dbb38df6eac893", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "464bbd3cc7501f324d874f62239a82d43308090bfcff956b3e910b7554177b34", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "f8232b1f8d6f43a84e523af1bd62bb60eaa338bf45a7eada284275a5c4971af1", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "7b1d1737c67dd8ed0333af6b0cda0e0c16e13a04c0edd452b5cba716a26f93c9", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "9b40cad014196aedba81b4008da2f7afa0fc18f22aac8c26d8a9e86d36ebaafc", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "4fafb4792d72c43e9a73a4e2d684bc882946c3040533f3840f8368a051060b0b", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "136295b98f75714b6bea949d71a5b0a4ee5ee6bba8bcb06edaef68614373a50a", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "4c36ab4e25d8651badf6080a8a8313711d3b184f3537f4724638032eb094c23f", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "7b380a233e994fcf8020a7d6294edd1e939c7e3795af0a70a87f29328dc76ce4", -"T2B1_tr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "6d947601d7a55dd4c0ba63574029ec0219dc7e233a365ed63d92f05614564094", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "f35e09beb7fc6a6567a13d7a45f9d1425e5d242433a65ebf0bf5de2b3d912e1b", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "6a5586dd7dd94ecb5df4fb800dd3c0d19ff16dba3e8b3d5b2742cbe5b1212079", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "158b86bb2bac3b5552bef7d013593038fa4083ccef55c691cbac5288a63237db", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "63af7b6b9e558e102061f2acf5be2b400a792fda446b4adf65334a2ca2f4c0f5", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "75b30aa320158a2980499741a19ac5c34c23b8edbde4b0e11e66998819c8c6af", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "d4819c4f1a6149f93bf225256dd68f70dab2506a4c1c5830970d60a23a8efeba", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "be1afc1b299a142bae98a48dbc905873597a11ff6a985027ad2fcf98c615df38", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "fa003dae2988dac6cc28307655cb0b2afd16f422106a6254ce261c26968ae088", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "4dc1cea58abf5a580b30ad19d064c1ed7f23f0b1b938417b824a1b217a9e91c3", -"T2B1_tr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "1ff8fe0be1c5b46a168bb2cca14dc6849c0cab887986957c9350e3308e6338d7", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3ce756b1b4a515628558cdc3b416d5c44fbfc44305692893b624c8fb3c3f79a0", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "46127cd3c6897d75bc292ba106ed65f1d1f3b1e31415eb1ab63275bc7c28bb05", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "1ea94bedaf8df70fbdd03e4e011a5de3f969945bf2e0f146e56b5880e7558197", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "583530ae7155b5fe8717e38e3d170b839622899f99e79198644dcb3df960e6b1", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "7c92a543c751ecd0de6210c12d22f28d7942c973cdbc344eff72fd9a9aed7d23", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "8deb7cdc4af3b8d6155ddf2f592dc7685f7b74a5be1230a2d76ab1e0c5360ddc", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "b25db779d3d6466250f5832d4174f72ec4018a4b924d1e113a21edbf1b92172c", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "fc7efaac9b4acd134f8c3a320448bee2429a44b6a96df3c162a802604a04da24", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "1922ad49808cc081601120b72cc3fc8b9d35dee756c566c170a654e612f677b8", -"T2B1_tr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "12fce21c37e88b350688b237803e02689969c05c20f6792b53dceab61d8f4acc", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "217c7d48b2ba88cafd39622d326f455ff8362e070a85981ca4e828f4a79a8f84", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "a5467deb9dddd84a836804915ef369762452494945595be40a9330140cc54e01", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "9a7ce0b25c2b1cbb414e25b50a31f6e0f1be88ec5275ea70f2c9e1ddd4162b15", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a8e79045398659a14b99700d8922a31633b858164f358aaa64063b78ca3ae44b", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "704cdec1ee729f84a3126641cf4442f822262e977bbfed187a632afb131343e6", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "e8278e14060f8284dafd32a1bc04cb9fc17cc5c7a5b5829a9654121d47fedd7c", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "b526e3b1d1d649cfd60e8504371fd722000f40d9251697e266aef47261e610ea", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "6e9e9e01e27d3a8f78f7bf5d5a2f93af0e5cf4d28773f7725566ff78b0eb8dfb", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6db3c67aea27014ac2d9d9701ab95c28e774caa25fb5b7263b51f61f1dbb40db", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "4dac2332e61f7f9cc45ad05450a77ecf9c6f38213220f4be143c5fc686568adc", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "f4e77aae74309cb3bf35bd887ec5243b0e2204ade35aa4da4dbe8aee2da9552d", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "a6e9a6e0e6a204f4ef5358e639ed823d3e4060ee4601cd0f47cedb4aac429f72", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "864d693d5e72abf2f1d1104c7c83289150e415fc2af5501690674442daac3de9", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "23ecb628d127fcd13716042c02d0be447fdd58b42112703c8e9573f1c47fcfaa", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "70d8c885b1011e9e1b69834c849e1223a2cc7559454557df6b498c919458ff92", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "b6807b0674b2ebd61f18b843004b90ad70668d723206bdc033cb348192c3397a", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "4070dd7719a01990a00d5f33f62b5977213a6fe485238116843f866bed450dbb", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0a43219f42c2eae66c06d18c18e42ea56204078f179b875e8de69fadc0616532", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "c59e66b8e1ce29afce57084dc55804ea9803859807aaf89e1cf8b607643a08c2", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "cd98a76adfbeed130dcd70cb071ed0b214b6da8461ab59239b74532b1bd86986", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "857c1321455858c773b432034f87ce13c35ecee9f0bac8af60b58aab37d45d75", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[memo_id]": "0540a9803b64e082d642f2e8c1c47ea9d04d1f257e6686be12770ea3cb0b0228", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[memo_return]": "7364ccfba319609379ee6f67dffb03e97408f65bf9d8fc3d111807e521012f80", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[memo_text]": "c15b8db3728431f9ed6d688be6b910727a418899b82611934a1285068df34a9b", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "e16848cf317031f83b3c733b2734b2e66ef8541dee79230bc777c5b90cb83301", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "e9db01d5f9d1fc15daac58c503fb6dff91f6ac5730b86c1f45bf2c2db2543056", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "7143d130078cfcc352eb34b27a7cc0bbe364b98467870a44d7c00a5f75f9ff06", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "8aab0d2fcd0c7f0fd178fb2dadc07f23a64ba3e586309d42358fa848664a765d", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "2964a0300a51be7382be8d7e768246e949dd258c3143377491d5fba08da57894", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "4070dd7719a01990a00d5f33f62b5977213a6fe485238116843f866bed450dbb", -"T2B1_tr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "0ab971b69c18f468a372bd37ca7b8999eabdb52c4925bf2edd94b24c09853429", -"T2B1_tr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "e7c34919ad20d6fa934bb9034715fa17ead43af8b8595518ee55e2263c2121e6", -"T2B1_tr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "e7c34919ad20d6fa934bb9034715fa17ead43af8b8595518ee55e2263c2121e6", -"T2B1_tr_test_authenticate_device.py::test_authenticate_device[]": "e7c34919ad20d6fa934bb9034715fa17ead43af8b8595518ee55e2263c2121e6", -"T2B1_tr_test_authenticate_device.py::test_authenticate_device[hello world]": "e7c34919ad20d6fa934bb9034715fa17ead43af8b8595518ee55e2263c2121e6", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay": "a85772327044d99e09857f64ccd8a05c654ef2386873146db1c84b0f25ae3351", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "c8caa4c91209cc7410066bd23aa39cc597a28dd5416f5ddf59d00b50929cc459", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "f894af8033f4639e4102e80ccedd13a3bb9ad5de80483eca765d82040bd48d99", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5ae465914fe3b94e5204ca07744cdff5ea1af4d707f747c6ee2a9b073975a996", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "0256d89560833c3463d477704910f5ba880223b388dea26f5ee59abbd9790e95", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "f646e11747a4d700560689831ecf33cb2fb35c61ddb7334937c7395fc80eceb1", -"T2B1_tr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "507c64c05cfbc7a448010d8e61070e4d5892f1257b7a488dd9daf8bf3ababbac", -"T2B1_tr_test_autolock.py::test_autolock_cancels_ui": "e90db2d46b7143c08d22204cc26cf41fab9b1f30d6b195cea1582d336212b7eb", -"T2B1_tr_test_autolock.py::test_autolock_default_value": "1c30ad8dde57d328472bb37cf44bad403d1eaa773029d9fefff0086d1391b953", -"T2B1_tr_test_autolock.py::test_autolock_ignores_getaddress": "0d299c0edee1434e61d19430f9feb429c956cba483c340b210918e7d8fcd2f47", -"T2B1_tr_test_autolock.py::test_autolock_ignores_initialize": "0d299c0edee1434e61d19430f9feb429c956cba483c340b210918e7d8fcd2f47", -"T2B1_tr_test_basic.py::test_capabilities": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_basic.py::test_device_id_different": "84775d1063b9a9970dc386e621975486dfd7685b7df5bff185ad66fee2783945", -"T2B1_tr_test_basic.py::test_device_id_same": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_basic.py::test_features": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_basic.py::test_ping": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_busy_state.py::test_busy_expiry": "521a2f93e33c49afecdf10c609326c3bca29038b189a4f07448c52ef28bf800d", -"T2B1_tr_test_busy_state.py::test_busy_state": "7cf57a90a3429c4d2631444e23d1ca17247cfe4142b5271fca8d57762d58d411", -"T2B1_tr_test_cancel.py::test_cancel_message_via_cancel[message0]": "b449b4b3cc1d8a197dfca1d8ea81c83e7f15890e0474c4a65b497a60a5e93cf3", -"T2B1_tr_test_cancel.py::test_cancel_message_via_cancel[message1]": "3eafebe69db849319f6bd5c520e1b1ad49af184e04204a9e4972ad085f4aa9bc", -"T2B1_tr_test_cancel.py::test_cancel_message_via_initialize[message0]": "b449b4b3cc1d8a197dfca1d8ea81c83e7f15890e0474c4a65b497a60a5e93cf3", -"T2B1_tr_test_cancel.py::test_cancel_message_via_initialize[message1]": "3eafebe69db849319f6bd5c520e1b1ad49af184e04204a9e4972ad085f4aa9bc", -"T2B1_tr_test_cancel.py::test_cancel_on_paginated": "d1406b148563e6af45efb0357c80b81691db9277f6af9055edf24dab08f499bc", -"T2B1_tr_test_debuglink.py::test_softlock_instability": "3e89d94bbfab10772516fa98bb827368d340babaa6646f32d9de14b13f84cc58", -"T2B1_tr_test_firmware_hash.py::test_firmware_hash_emu": "7332dfacc222fbd9b96135a6e633211dbd5691a3515b754208354e20ddb4dfaf", -"T2B1_tr_test_firmware_hash.py::test_firmware_hash_hw": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_language.py::test_error_invalid_data_hash": "cce984dc7260ee0f7fde4d0591200e127d0f23d5e79346e86a44a38e1d224049", -"T2B1_tr_test_language.py::test_error_invalid_data_length": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", -"T2B1_tr_test_language.py::test_error_invalid_header_magic": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", -"T2B1_tr_test_language.py::test_error_invalid_signature": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", -"T2B1_tr_test_language.py::test_error_too_long": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", -"T2B1_tr_test_language.py::test_error_version_mismatch": "e7de5c8f21950182179531e6a5d2e6afa21d11ea4de6de37dee6e1086570fc70", -"T2B1_tr_test_language.py::test_full_language_change[cs]": "428cfcf173fe77a1e5910bf537d5f36893231eb7d6e974518fc502a0945bc2dc", -"T2B1_tr_test_language.py::test_full_language_change[de]": "51970efa0e799423dc65fa6cedcd7e9fa27621308d99ff5543e22c8aa6f98813", -"T2B1_tr_test_language.py::test_full_language_change[en]": "44b7da1f2d6ec233b1ec1d08fa21125a424786c878e40d1d5d71c9213af3333f", -"T2B1_tr_test_language.py::test_full_language_change[es]": "dc39c4b94579430cc2a772df1a2326f5395bc223676c68e7e33e8da5beb4e604", -"T2B1_tr_test_language.py::test_full_language_change[fr]": "1dbe50d0d3406ccd12b2d4f6588c7c28dedbf2da16bcf91d8d5df03806cbf883", -"T2B1_tr_test_language.py::test_full_language_change[it]": "48e7308643116efaf123f24c840e390c07a7f629542d0513f53cb867cfa423ea", -"T2B1_tr_test_language.py::test_full_language_change[pt]": "42dddaadcad85a94668dda4f9e3fe88d92b861979cd5f526864c72d9c7b71827", -"T2B1_tr_test_language.py::test_full_language_change[tr]": "be233ed7c9cfe40aba1da63b1790c4e08697ea5f8fa29a2f99df1b1f7e6dbb31", -"T2B1_tr_test_language.py::test_header_trailing_data": "542cd62ebcd84099416bae5a2df2e47fdeb480f5bd096e9162db9cf2dfc1eaf8", -"T2B1_tr_test_language.py::test_language_is_removed_after_wipe": "cc46b3f9c4e590bed069f56b124b7db6250a166d5b2dc4ec5fa73e83a31b2dfb", -"T2B1_tr_test_language.py::test_reject_update": "b3f58dd2c5c0ba3ce35310e389cc72d3857a92b6159f78915e2522c54dac13de", -"T2B1_tr_test_language.py::test_silent_first_install[False-False]": "1d5b83a25e1a851f65aba8ee880d10c4c470dcb15f779afb91405e2230017481", -"T2B1_tr_test_language.py::test_silent_first_install[None-False]": "1d5b83a25e1a851f65aba8ee880d10c4c470dcb15f779afb91405e2230017481", -"T2B1_tr_test_language.py::test_silent_first_install[True-True]": "19d8108a8a34db97a1581b2f1f23573d14cbf06729b45afdc7c55f0faa9d5392", -"T2B1_tr_test_language.py::test_switch_from_english[None]": "204a5ba4b209a1de896ad95f418ea91286d55a595d6bc80ef3a22ede7ade88d0", -"T2B1_tr_test_language.py::test_switch_from_english[True]": "204a5ba4b209a1de896ad95f418ea91286d55a595d6bc80ef3a22ede7ade88d0", -"T2B1_tr_test_language.py::test_switch_from_english_not_silent": "2e8fa52cf38696bf0f25c640cdc4013ba8f17c783a561f916b2e6aaed62ff4b1", -"T2B1_tr_test_language.py::test_switch_language": "55961e116911d2be277d6543558711a9d0a6a1f63601772b2ae566f136be0c5c", -"T2B1_tr_test_language.py::test_translations_renders_on_screen": "2fb69bca08c166e108dffda99e76a97824b02a0e98d477f8e9a6f117cc811d95", -"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "d342cf317f834fbbf462d6a62ca2af1f760a907c2cf61a19f3782ff4365c145b", -"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "0029246aa97b6872b7c9efa45b389d6b0d5b4dba0d1ff67638af404af2d236d8", -"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "4cb7419f2a3644961f665ec9744da5fb6d88d7dbc64341991aa78bd0d49d89d2", -"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_msg_applysettings.py::test_apply_settings": "afa6a39c67b4afb3a9e669338efd542cd954abe4ea70f77ff06dc887f4a3fa6b", -"T2B1_tr_test_msg_applysettings.py::test_apply_settings_passphrase": "0cbf80290d4fd259264e45cefeb91a80a41b2506738d0dd17071e4a5999d9980", -"T2B1_tr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "2a62659f2b29f87ccdb02de0cce43814b7e66735ced346b9635e0260764c2e3b", -"T2B1_tr_test_msg_applysettings.py::test_apply_settings_rotation": "c5b2043090c188f70ef61b01d99974cb36a0a5feb55eceae8a82c8e976c4ea84", -"T2B1_tr_test_msg_applysettings.py::test_experimental_features": "609549cc598b0bc262bb9d7e34b5cec1fb689e44066f62db3647e2c5dc3eae83", -"T2B1_tr_test_msg_applysettings.py::test_label_too_long": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_msg_applysettings.py::test_safety_checks": "10689f6cfebb4c816db4b88de0b30c8c1481346020486df8ea07c0082168ebe4", -"T2B1_tr_test_msg_backup_device.py::test_backup_bip39": "7ef9df73a41bab52d8735e245d047b7bebef53eced4e85763855b4d9147639cd", -"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "a791fad9a38c1b9f336fcba4e751a545bd59a63e223d0e33ea502341a4fdc07d", -"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "06a2ab6b60f3233606c85135271cbe5c03a441c73069854d3d55f3899acba66c", -"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "a791fad9a38c1b9f336fcba4e751a545bd59a63e223d0e33ea502341a4fdc07d", -"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "bde089e48ef6799d07dae084c2645e1eb2ba8e84492b77b9e56299c730fd186e", -"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "752c221c8e076ea0bb165dc065db2d533a7901f300254941aa30004c786f3563", -"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "3fe52976de31ff0234a086c3a9db7d9dc8f9a31caca63bce0a042f398935f4b1", -"T2B1_tr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "d4e60ba35f0ab09bf06d773aa3f5da4723505631df19ea711f3b77cf74e02cbe", -"T2B1_tr_test_msg_backup_device.py::test_interrupt_backup_fails": "eb5d7aa269e6b288677d293c74d6695bab4bdee5d37e33efa9d8464d99fe6031", -"T2B1_tr_test_msg_backup_device.py::test_no_backup_fails": "bed97526bb5a33dc624d2780526a9cdb891b962b3ff1f03dc85c3016a8fdbf16", -"T2B1_tr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "af14272becc0ff4c1de0c70f182bfb895ef587bba352e393a848c96f7ca87687", -"T2B1_tr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "1255125f9898b271f162e2e138b6e8c3c7dedc282c8332505a43c538a71a7173", -"T2B1_tr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1de7fb9b2407045d5731fef2c9486d255e2ebbe136bbfbc764741e10aaae2868", -"T2B1_tr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "920134cc16e0349008299861f20819a4ade616fa9e0b23a5f77ea3481bd9570b", -"T2B1_tr_test_msg_changepin_t2.py::test_change_failed": "f23d0b9ce7411ad01ac8cd2bcc9989ad089921d2f6a75a2de325aaeb44e94a11", -"T2B1_tr_test_msg_changepin_t2.py::test_change_invalid_current": "9f79104e141ae995994774d517f7e714709575333bc099bb42f813c393ae3d0b", -"T2B1_tr_test_msg_changepin_t2.py::test_change_pin": "6e078592e899f99a6aae574269a8feb106e2a68af3fb4dc60425cefe00f7654a", -"T2B1_tr_test_msg_changepin_t2.py::test_remove_pin": "a93c833cfeed2683bae9923d3d2b7c9a7b6c96045bf6c846e7d4fef1f6c62546", -"T2B1_tr_test_msg_changepin_t2.py::test_set_failed": "1082d1ef9ba61c70ed33ab803f304ed6ab611a2c13f32a726467efa36b7c8e8e", -"T2B1_tr_test_msg_changepin_t2.py::test_set_pin": "8634361849955261842b8a14f6af0dc132f293db4e9805d5f3b3397f8a317c3a", -"T2B1_tr_test_msg_loaddevice.py::test_load_device_1": "76a7d3ffeebd0d1db1908918db66e7f1c9f8ea1c0ab7144c8f07d8aaa760c77f", -"T2B1_tr_test_msg_loaddevice.py::test_load_device_2": "ed757fddcdbd2f7ec9bb0c31fcfff0d11e3dc95bbab738b1f6dcdaacf59403a2", -"T2B1_tr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "76a7d3ffeebd0d1db1908918db66e7f1c9f8ea1c0ab7144c8f07d8aaa760c77f", -"T2B1_tr_test_msg_loaddevice.py::test_load_device_slip39_basic": "76a7d3ffeebd0d1db1908918db66e7f1c9f8ea1c0ab7144c8f07d8aaa760c77f", -"T2B1_tr_test_msg_loaddevice.py::test_load_device_utf": "fdfbff172fedb62b1e87754c4aa13a59b062b49fa776c1a45f9b3dc3bc041fb8", -"T2B1_tr_test_msg_ping.py::test_ping": "b449b4b3cc1d8a197dfca1d8ea81c83e7f15890e0474c4a65b497a60a5e93cf3", -"T2B1_tr_test_msg_wipedevice.py::test_autolock_not_retained": "2fa08cc3cbaea6d7c22e08407867c13ff9f7f448aa3ba4503f11fd7c36c813fc", -"T2B1_tr_test_msg_wipedevice.py::test_wipe_device": "84775d1063b9a9970dc386e621975486dfd7685b7df5bff185ad66fee2783945", -"T2B1_tr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "96a902559de61977f0c3f3479afd5e2feb9a26e1ecc51c3a8d5dd78b1aea2e2b", -"T2B1_tr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "96a902559de61977f0c3f3479afd5e2feb9a26e1ecc51c3a8d5dd78b1aea2e2b", -"T2B1_tr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "0b59d06556166b4cc4f21e432f99aa96407b6a2fcea49a8e2e8d816dec5e76a1", -"T2B1_tr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "0b59d06556166b4cc4f21e432f99aa96407b6a2fcea49a8e2e8d816dec5e76a1", -"T2B1_tr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "0b59d06556166b4cc4f21e432f99aa96407b6a2fcea49a8e2e8d816dec5e76a1", -"T2B1_tr_test_pin.py::test_correct_pin": "216b01ab9b625b6a26eb9205db18b99abcba3c919cea6b2315f4f6a22146b3bf", -"T2B1_tr_test_pin.py::test_exponential_backoff_t2": "051d1158123de369cb4ae24235377ca9469210778dafbfb88ddc198f3f62cf1d", -"T2B1_tr_test_pin.py::test_incorrect_pin_t2": "eb9cfa1528c5eea8cb1619c921df77c006d9265dca23a35467da968d72fd55b9", -"T2B1_tr_test_pin.py::test_no_protection": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_protection_levels.py::test_apply_settings": "23514479bab732c6b99418f004c74eb6716fc281ec13e2814a6ae82d1377b5e8", -"T2B1_tr_test_protection_levels.py::test_change_pin_t2": "51e2fd40059d1af6cda28c366d2ab45c7cd401a7d01ce21776f7541d7e34df95", -"T2B1_tr_test_protection_levels.py::test_get_address": "13f29acf7d6334c6ee24b7e4ff2e33cb2a393893de9242b7c6bef616e9a581bb", -"T2B1_tr_test_protection_levels.py::test_get_entropy": "22f5d9d12b6f4d15dfd817c6099b9e451f5c157db5746665239cca322a200f0d", -"T2B1_tr_test_protection_levels.py::test_get_public_key": "13f29acf7d6334c6ee24b7e4ff2e33cb2a393893de9242b7c6bef616e9a581bb", -"T2B1_tr_test_protection_levels.py::test_initialize": "d4d7e159fab5a57abd84f3bc02a7683d3683265015472cf749600e36df758cac", -"T2B1_tr_test_protection_levels.py::test_passphrase_cached": "7bddc2a4e8b47043a1b4329ac91ca84678abbace18e1d11594ee31795c7e6d84", -"T2B1_tr_test_protection_levels.py::test_passphrase_reporting[False]": "064145ef0f78f69e8963dc01e7e5a70492d58e7b265cb4cffe01d7451e982551", -"T2B1_tr_test_protection_levels.py::test_passphrase_reporting[True]": "86c383874f4ac87a01fbd569fe7d670c6be52d80ef2520ec3df0dc48a7e9a97d", -"T2B1_tr_test_protection_levels.py::test_ping": "b449b4b3cc1d8a197dfca1d8ea81c83e7f15890e0474c4a65b497a60a5e93cf3", -"T2B1_tr_test_protection_levels.py::test_sign_message": "0e2167f12321c303db92ae56b061c11d4d49e17e1fecef363409821e0500e37a", -"T2B1_tr_test_protection_levels.py::test_signtx": "fda61c15e98e30670ed4165123ffdea248aeadc91625cb5ee813b83219e0cfd5", -"T2B1_tr_test_protection_levels.py::test_unlocked": "dda51d0e32bbcfde3a18820eb4db64b39c2d14d191ee71a666d0c2afb043a28b", -"T2B1_tr_test_protection_levels.py::test_verify_message_t2": "7dfcff899a60209e20789aa794e9c378fb700f1a7447bdd86aa79b963908f741", -"T2B1_tr_test_protection_levels.py::test_wipe_device": "c602b567152cd18c703cc4393e6a6e98293e8bd613280a3bb5b363706185e70f", -"T2B1_tr_test_repeated_backup.py::test_repeated_backup": "1a95675b4501d9fea9be3d6a4b80c138c9b3a7fd19f1343b5a1355d0f83a3f99", -"T2B1_tr_test_repeated_backup.py::test_repeated_backup_cancel": "383510fca53348945021d73c4e5092ba9d2e2971f33c9743b5bc1b056149b15b", -"T2B1_tr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "a6ac7af48a76cfacd20d2c120f87a045b4dcca22dfe00e1840022aa923d739c5", -"T2B1_tr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "22669c05ce5f3e9eb96bb4552fcdcc461cad0816c531b7f846e13f5c3da739dd", -"T2B1_tr_test_session.py::test_cannot_resume_ended_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_session.py::test_clear_session": "d3fb01e5c8d463d75704a18b54d22c4a0350e587d16db383b7fb1e0425c7c9f4", -"T2B1_tr_test_session.py::test_derive_cardano_empty_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_session.py::test_derive_cardano_running_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_session.py::test_end_session": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_session.py::test_end_session_only_current": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_session.py::test_session_recycling": "0b59d06556166b4cc4f21e432f99aa96407b6a2fcea49a8e2e8d816dec5e76a1", -"T2B1_tr_test_session_id_and_passphrase.py::test_cardano_passphrase": "038a9222a0d39951ff5c56edc7f23ddd3857fbdd6f7eafe47bf53fb981b62189", -"T2B1_tr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "17b417a1888955609a2f4239a93c681776c73aef6aaf65f0f4e6b13a226b834d", -"T2B1_tr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "2f07f19bb7c5e1dd2ea358d33faa6a055aed7f420542b1b141248702c34d9fea", -"T2B1_tr_test_session_id_and_passphrase.py::test_multiple_passphrases": "933ba8de213cdf3d8f3f0b39b0ba49e739c76526becfdd09537e1832b62be7d8", -"T2B1_tr_test_session_id_and_passphrase.py::test_multiple_sessions": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "215cfad2cd29c4ec7e961d111007cb8de5aa80495c6261ad076f896a7d123fe2", -"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "ce6762cada10cb0ea348355a0cdad69899b9940fb4d4f510a02e4feeca25bb66", -"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_length": "dc37787adca66cc65c88a64ae8d821b516139b9bd4a9fb40e1be02046453620c", -"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_missing": "7bddc2a4e8b47043a1b4329ac91ca84678abbace18e1d11594ee31795c7e6d84", -"T2B1_tr_test_session_id_and_passphrase.py::test_passphrase_on_device": "f8bac873b4c4ace39b4b9cdc43dc48914420586fb4155d51da799f7951984a27", -"T2B1_tr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "82c2c4d1d7e69b241cb2e7c49b1db5662522b89d126a0c1445d9935042f426ac", -"T2B1_tr_test_session_id_and_passphrase.py::test_session_with_passphrase": "cfd831c1eea8efd933eb56312c03857a3086d5064417db72ee2e6bd0ba03aed4", -"T2B1_tr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a89a494c43ffec8829f9a341d201b2391326241a16ad363b52c03a2d0fb68ac9", -"T2B1_tr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "a474c3a9e86aa3343129ee7a7bbc57e4158cadd9c942215bb8112452c159e771", -"T2B1_tr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "26f7f172b7c42707a56c3c51d32cc4981c5427c034474b83457b767a9d94a124", -"T2B1_tr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "036952da3295ab063f41c1ff1fe9532f114d4be63c3344839087f55ac15778e5", -"T2B1_tr_tezos-test_getpublickey.py::test_tezos_get_public_key": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "c6003015b7cba3a9e45f23049a365404367eb65e15017d3f56c6699b947b4ff8", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "4ccdbf32d333eb276132ea46d64da764df1c91bbcde1cf82221eb2791235f51d", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "031cf8f7f250f1c5bc40fed2789cb312697ac6461766aca0bab9aa2cb943e803", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "ca2548087dd2abb99768826d0340bf6d0072d222d6161c0b5eff80ef5bf4dd83", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "c1871e2c9e9c69fae385d83f34e8bb7f74500420f6ef1af437c75873ee309618", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "48bd483cad10693ea1f8acc8c1dbef0de377c425fde8f020d76e8ad8b8af6aac", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d2394c8b6f7bdc047aed1f31fb08fb907be91c1e6c2322023d182c9b6f8b7925", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "5437a4fc4520e737804961a796ecbb2da880c33a418ac6bd405a9c34ba9842d1", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "d0d11d6667bd0983850eae4ff0192cc2c19634c73f739647cf3170f5bfac8b34", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "d4703b2361b2df333d313773c89695183952e8738656c303d36059ee3d120cf8", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "abd847907fc65444580f42455085f2b36e9ffc01a0d24bccaae06797968b2b42", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5d1333c3503f2c272cb466f85824bc526e5a9f14bff28c7eb2afd38026ce661c", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "e914e785516b3ae16993548b0c60d5d4c07757a882459006880bf5ab85126d28", -"T2B1_tr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "5a98f4746b443b4b1b60d6fe35140b7c4c1e1cf147cb04c2f52426dce5707452", -"T2B1_tr_webauthn-test_msg_webauthn.py::test_add_remove": "a800eae89845c29af393d96b0abaad4480e6a2a56f0d5f6c4e8aaee0af92c564", -"T2B1_tr_webauthn-test_u2f_counter.py::test_u2f_counter": "a8eb305eac38c367f6be1afa6f85c0c0f37320450b8b028d0f33bc5bacd325f4", -"T2B1_tr_zcash-test_sign_tx.py::test_external_presigned": "9dd3734d4a624f47e843b685a072ce8583db1da8aa38d71eb4c5e4fd545b2833", -"T2B1_tr_zcash-test_sign_tx.py::test_one_two": "e2c0f29c8e13e91abe4842f931c6620771bf6e0f87294e45fe8e13bddb4798ef", -"T2B1_tr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "8423e569535ae90366d24fb837ce2ad766e977767bf11951e7e3be8c8458d1f1", -"T2B1_tr_zcash-test_sign_tx.py::test_send_to_multisig": "1126ccf6dcea6fa0adc6c6ae189459a2f4e61bcd858f40c0b7b8b5502f4b0a2f", -"T2B1_tr_zcash-test_sign_tx.py::test_spend_multisig": "daedfda4ffba79bbec250801ec5d9ec896dad4713506278948f3a4ca4be1de00", -"T2B1_tr_zcash-test_sign_tx.py::test_spend_v4_input": "8737726a4e3a77f9455844ae133be1d5c007f86bce239fc0065e7de8b54b70de", -"T2B1_tr_zcash-test_sign_tx.py::test_spend_v5_input": "e4ffd70ea2e1dc97a2692ba39e215165c30e7d53b54e190048715c1883551814", -"T2B1_tr_zcash-test_sign_tx.py::test_unified_address": "386961b5d7192e85802ebd944086f6006a2bb921ee9a25a70d458c50b99a7359", -"T2B1_tr_zcash-test_sign_tx.py::test_version_group_id_missing": "3379448d2932c11d3d6f01d3634501a8f8a8faf2e42d9d0e61d548ad4f35bf4e" -} -}, "T2T1": { "click_tests": { "T2T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "e3ffc85608b2cc709df27d13c0e3ad55005e3e16d513125a46e643e46589cb53", @@ -24031,6 +12720,7067 @@ "T2T1_en_test_wipe_code.py::test_wipe_code_activate_core": "f8484690336163fe54fdf9f6d35766ab8f190a1af5646f922b804816721beea8" } }, +"T3B1": { +"click_tests": { +"T3B1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3cc51c2ae3675ac1de3b3c51dac604a2d5ec70bbe20fd38a3eff97a799dfa4f2", +"T3B1_cs_test_autolock.py::test_autolock_does_not_interrupt_signing": "ecf3758995aae8caeb60ff9c1f105d580dfda1a37c6f9a3e853cdb2b7a7e5db7", +"T3B1_cs_test_autolock.py::test_autolock_interrupts_passphrase": "55d1f4cf9ef7fea24367c78078f21ddc18b6a19936f8f373bb7108ea3178d16d", +"T3B1_cs_test_autolock.py::test_autolock_interrupts_signing": "a8bdfb3d51a11ab664a07750e2fb3113e47a2999bea33b2e78520e6101d1b7e7", +"T3B1_cs_test_autolock.py::test_autolock_passphrase_keyboard": "1308e046673fdb00f5e17bb9ad1196a6308164beaf9dee990b2f8e23fc396d47", +"T3B1_cs_test_autolock.py::test_dryrun_enter_word_slowly": "63034c365c6e31eb26dffb36718ee15d16dfba85e1f01db72ca5e31ba80a534f", +"T3B1_cs_test_autolock.py::test_dryrun_locks_at_number_of_words": "ac99b9bf44f1c61aa954870fb6fb00c7ec04977371bcd88c4fdc01067f1c999a", +"T3B1_cs_test_autolock.py::test_dryrun_locks_at_word_entry": "698276d28e195186d2cf784092fbff166bf45d9f8948836aaa83206d09f0d031", +"T3B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "76aa0315f4c793bb0d93c16f5f18f786fab93b3cbca008549dc3eb9e98416c3d", +"T3B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "3ea1cb7dc64126eea599d5c7a66335abd561421edbc1f53e59294e01c8052026", +"T3B1_cs_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "2e12708cddad2034e56595399c58e92ce4ffc1daf884e23962d97a9879953370", +"T3B1_cs_test_lock.py::test_hold_to_lock": "4ba92841c09e4f36382bd96a4e5dbf2e16154fab75603a1d5b1b3eb94776d375", +"T3B1_cs_test_passphrase_tr.py::test_cancel": "3f02823f2de1e46c30dadc9aef8d1c1fe2cdd2ecff0d1ec9aeb770793ff482f2", +"T3B1_cs_test_passphrase_tr.py::test_passphrase_delete": "1e464363ef619f450d2c0c9f82d5336e666ee3ded7107ce1079267dd75a3cdb3", +"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "476649816e1e9dfb2c34133c89cc4ee9832ed69adcb47899b2fced844071e6be", +"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "6b304a7c00d1cb4103d6246e8b8590187ed1b451a588472fa2ab61bfef8c46c7", +"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "209b74dd3e70b53a5229915d01d32a56ed64d04087aa9910c113e10e40e011f0", +"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "a7be0f512587b40bb0969eef93ae5a8c021772476b70618e9b4c33fe996db87f", +"T3B1_cs_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "26ccf5e617ca7014c7801c10c3b4be2e011457a6969109f709824494123ab98a", +"T3B1_cs_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ba468e87e835f86f67e382ad4175d3f95de2b45207b141f7226ec983d4fbc36e", +"T3B1_cs_test_passphrase_tr.py::test_passphrase_loop_all_characters": "42717296ddc466af7f2ff36d3ff80345f0e7dcaa8950d2daccd2402ada07a33b", +"T3B1_cs_test_pin.py::test_pin_change": "b17cf4b44383e2bda31c2b379a4e38209a404809ed9f6feee3676fcc80832189", +"T3B1_cs_test_pin.py::test_pin_delete_hold": "752db47bdc86f89d572f9a86a178cc3fc00dfda860efa13e89bb56643d443782", +"T3B1_cs_test_pin.py::test_pin_empty_cannot_send": "42249d50ce6f58235dfbcf6e5af3c111a97e95b3c6c4b6c250a93624f65b22a5", +"T3B1_cs_test_pin.py::test_pin_incorrect": "a9887ff8263c98d026468d72cc6ab648eee66792e57b2f41643e5439dc044885", +"T3B1_cs_test_pin.py::test_pin_long": "2df6df5c992f859647e4fbf271232094c4f159eeab9cfcfada6f7733eb70161e", +"T3B1_cs_test_pin.py::test_pin_long_delete": "9a1d32b0e29f1e0006d840869231e6fd482ee9980882d14129a8885cd022e689", +"T3B1_cs_test_pin.py::test_pin_longer_than_max": "6a3bba51ee757d5ed3746a45d0db38768a203869add89273d416b3eba243f9b7", +"T3B1_cs_test_pin.py::test_pin_same_as_wipe_code": "a068497c9207f28f11bfe972b60c5369d95ee9f02c0ff491b7ad79c9718c17e3", +"T3B1_cs_test_pin.py::test_pin_setup": "6e5eff703b54167cd2b9b99736132e7f4bdce1c6524d3d8309ef7e10a174e9e2", +"T3B1_cs_test_pin.py::test_pin_setup_mismatch": "41da639b7b8d8446b7b4e18df7f4d9a065e4ca418fa82cdb907db4326bc1e10e", +"T3B1_cs_test_pin.py::test_pin_short": "f6b05b67f20b78a075b7d27026b09f2ef78fcd8ac966703e39ee14e9beb555e2", +"T3B1_cs_test_pin.py::test_wipe_code_same_as_pin": "92af8352447fd6b8458e5975cdb63335f62e1912fce4c25d7dccfbd98953a48a", +"T3B1_cs_test_pin.py::test_wipe_code_setup": "8c09fdd26b153186f86baee7946e3f8d22ebcc15db271f3b4e2b3413c6834c82", +"T3B1_cs_test_recovery.py::test_recovery_bip39": "986b3645dbaaebc733e0aaf2c129b986a4cc573248e6a7ba7096d03d364b92cc", +"T3B1_cs_test_recovery.py::test_recovery_bip39_previous_word": "76c051617b6212b5f53f676c29d55fd0852218edaff74017cda4ff3e791082cd", +"T3B1_cs_test_recovery.py::test_recovery_slip39_basic": "f4b42fd8aa1d0c1d06f52a903a26c244039c4f2c3aa3d577266d0a9acfbfbaf8", +"T3B1_cs_test_repeated_backup.py::test_repeated_backup": "e2624137c4885a5a5dbda6ea4cca36c5025e03313854029c183dd41229e6dc5e", +"T3B1_cs_test_reset_bip39.py::test_reset_bip39": "fa1f66ecb995b4152fd0cc4e4670cfc0f2b5a6c632a2645d1f3d01c05f7a037e", +"T3B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "0ca14e255f36cb736fcb3d90024fb2c00e346313dcac2d9e20c379368e60d4a9", +"T3B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2157c3b2777af219ee4cf1358a15b6aa0a9a1bf629d4bff0586d2848344a2baa", +"T3B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c480270210f7216a338c7934f1244b22d4e6e1ae305aece94141903fe428cac6", +"T3B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "ff66d1724b4d0bb82237738eb9067659d37dcbed67014964c7343c02dd2656f4", +"T3B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", +"T3B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", +"T3B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", +"T3B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "483339fcd69cd704c80b53cd42f88cca6478e43f385d5a4cb5250be0edc0b8fd", +"T3B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "3a0639ab2042edfcb8103aff433239126503131baa8d72c944da7cef1b652b5d", +"T3B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "f7cc39dea78abe89a2885757c9b4d4ebc1205e966c5529ea0a64ec3f0f60c7f6", +"T3B1_de_test_autolock.py::test_autolock_interrupts_signing": "cf74abddc80e79e9c767e4a174bb779a5bcbdc4b62ceca15faec195d0ccbbd1f", +"T3B1_de_test_autolock.py::test_autolock_passphrase_keyboard": "cfa2d0d9dc0174bbba428cb050f41c0d6f4a7b233afb8341c6d1faecdbfec595", +"T3B1_de_test_autolock.py::test_dryrun_enter_word_slowly": "b47ae2c4b958c59efa38c95d522f35336d3a92b4367ef573e48e383a74c79ed0", +"T3B1_de_test_autolock.py::test_dryrun_locks_at_number_of_words": "394081ce1c4d5c0dbd0be7156ad4a4355569a415b758df07975dde0efb4c58d2", +"T3B1_de_test_autolock.py::test_dryrun_locks_at_word_entry": "bf725054e49d7ccc9dca652da708919db52e6bdca067f8df926088b3b96a5eb8", +"T3B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "65dcd24d383e7e5294ba7fc342ba701abc64a24553380705611f91e3c221826b", +"T3B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "9e4b62eaa45084c4d025fd3691e100128715fec2ed1d46c22462e6d25249154f", +"T3B1_de_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "9e7aa87ff8c67cf36e65e1e69e0e60cdf8cb0a9e70b5bd1952f843564efcfccc", +"T3B1_de_test_lock.py::test_hold_to_lock": "268661e352d6ab4c9cfd83b48985b8ad2e108841af94d5479c079befc8892310", +"T3B1_de_test_passphrase_tr.py::test_cancel": "260dfca06b933d88120da15c6a981c9e2bf136a1bb148cbaf0244a85c80c6767", +"T3B1_de_test_passphrase_tr.py::test_passphrase_delete": "18f04b5c66ea5d1ede7e616f03e1a937dc57a0a2bc55bdf8c9d1aa917194e6ed", +"T3B1_de_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "3309fe04be297d037c64a21c595ec13401222bbd788981310181fd673bc1462d", +"T3B1_de_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "ff802bd56b6b2e2aecbb1412cd579b0c2cca02941ad53bc1d0c21b5f9b4cd410", +"T3B1_de_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "3de7ba9d64392a217c95623f3513ac6b337afa317d4e12926cc14d9186160c7e", +"T3B1_de_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "8deb7b6272483c747af0aed2da92337ea0fc00d51a54db21fb7a65cf8ba8de2c", +"T3B1_de_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "821733b59c68a2705621d6283e9acc4039ac95052e4512416010ea4346598528", +"T3B1_de_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "7bdcd7779e686289b7acb1d5bc7f9f46c3a08c141542ea284e748ecf896b4241", +"T3B1_de_test_passphrase_tr.py::test_passphrase_loop_all_characters": "8574b98ef9d743e6aec18c0cc2444b3270fc6312d1c4d29b0838bda6781efd7b", +"T3B1_de_test_pin.py::test_pin_change": "ea169c14dfd249f9144bdf6c875f733500913a8b26cda91464bc86b545ba5b82", +"T3B1_de_test_pin.py::test_pin_delete_hold": "19a240eb3b4d75888c9b0ebcb16f8d6d515c8bf2a76671c37788416d70f00af8", +"T3B1_de_test_pin.py::test_pin_empty_cannot_send": "1055b82dfd991b47a48564ad6bdba1056eca8d645d54e0f93aca1c0d307cb336", +"T3B1_de_test_pin.py::test_pin_incorrect": "d4ce25f32ee8d9899ddf43fc7ba8bdd9f7c06c5a5ae4b588993d10dae93df078", +"T3B1_de_test_pin.py::test_pin_long": "97be8093bfedf27bfe7eb2c1abd3661bea06ce956446c7eab66c7e8be3df4ffa", +"T3B1_de_test_pin.py::test_pin_long_delete": "c1b0b819897287f23033b66fff41786ae294535f3e3fe438784f2ecfc9b82551", +"T3B1_de_test_pin.py::test_pin_longer_than_max": "855f6feccbe75dcc71326fdeb7db6f09bcdff234953a79606b7ffe4bb9b24ff8", +"T3B1_de_test_pin.py::test_pin_same_as_wipe_code": "aca419f2542c2c510b554b3284fc8d9f0d52588a9f0575f122c60449834ce0d5", +"T3B1_de_test_pin.py::test_pin_setup": "72e3837ce5ced75a5e9927d3589bf8e6a8b96ed4a4ab8975e9359a02d27d2dc3", +"T3B1_de_test_pin.py::test_pin_setup_mismatch": "d8186819e4483ebf85bf929420432d72f41b44c7900ef7b7319763e0f1b72ca5", +"T3B1_de_test_pin.py::test_pin_short": "cceda151768e650f49062a49813a7e0e254ec931354fb3e8b3e36be9fe62a424", +"T3B1_de_test_pin.py::test_wipe_code_same_as_pin": "b52818b4acf041851d2af4ab81c9a7fa26395509222ff0042d8e75df0facb76b", +"T3B1_de_test_pin.py::test_wipe_code_setup": "c4402fc6080e363308e83b2b36cf767894015c5f1cc5a91f00e02c87025d4549", +"T3B1_de_test_recovery.py::test_recovery_bip39": "658711dfc1780e026b9ce4057dbdf04fb969ee84bf5f35bf172c93a59133e7d7", +"T3B1_de_test_recovery.py::test_recovery_bip39_previous_word": "ceae77d5d1da1916c1072cd2c2e18dccfe5e97c9b05225dd1f09dcb0617b1bde", +"T3B1_de_test_recovery.py::test_recovery_slip39_basic": "e3dbc1a321425e9051712967d00f7b685d571b066f0b4d88c6face859b8044d6", +"T3B1_de_test_repeated_backup.py::test_repeated_backup": "350148ddc405a699fc8e0a89f1554838796177cb77436e9e808422175e350cf2", +"T3B1_de_test_reset_bip39.py::test_reset_bip39": "75c87592c3a77f3bd9df77e415cb8e7652ea686789968d4090254f7f53a90e61", +"T3B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "699f62c2f6477b0fe504ace63132269cf07c1a0687a005e22b2719830fa57d72", +"T3B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f48eebda84373ac7ae9a9f047cd12aeb8daae65c239f6434b72df378f44c501b", +"T3B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "88e8149efb5be48322c5ad7bce7eb4c82c254956138e4b21a4871274382b685a", +"T3B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "73b2168de18913e4870276c48ad498439209038b1a8b4735cc5e3a8f8f557e9b", +"T3B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", +"T3B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", +"T3B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", +"T3B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", +"T3B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", +"T3B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "4663e6da2cd2cc2d452ac934daaf772ba2474b266e45d7d883438cb024320c9f", +"T3B1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "9f971d47fa9eaf661fa8b305c8c4caa4a1fb3d53963c937fd43805b700f26b36", +"T3B1_en_test_autolock.py::test_autolock_interrupts_passphrase": "1f2a49eae6f33a9657f690b900a0b38ad18462a08f4802ded57883933b9e4c0c", +"T3B1_en_test_autolock.py::test_autolock_interrupts_signing": "739085b5c8ec1a73efd402a25d0428898c915f5d4f308817d3416f2885373e8a", +"T3B1_en_test_autolock.py::test_autolock_passphrase_keyboard": "d1fe11cc14cc86f5c595b75c573064dfcd86529afcd285e072a30a1fe70ed5ec", +"T3B1_en_test_autolock.py::test_dryrun_enter_word_slowly": "41b4181985ec5f6f6ffcbbe5fc87dc9379195c930f1dcfc36c90417849da2ce9", +"T3B1_en_test_autolock.py::test_dryrun_locks_at_number_of_words": "1040f9629da34d736f5024f89984121fb9f5bf4078f8bdda00250bc8799593f3", +"T3B1_en_test_autolock.py::test_dryrun_locks_at_word_entry": "4e5a76517080d02e958b5cc96692821b562aaa1602916398883dca5a28587c26", +"T3B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2c51a1ddd6a8ff0f4dac3728197a4197f03e1e8dddb6da5064cbcf5829783ce3", +"T3B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "2539ad8381af75241c31377c01b468fe356189e25129904f3ec292d259e2bf19", +"T3B1_en_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "423fec1d0e41ecf5960862a7dff40ce4a14e1ccf335467618d625e265c2bd9f4", +"T3B1_en_test_lock.py::test_hold_to_lock": "50a53db86e43df6339ea6d168170c763917f0af933aa661798e7da3ed45f279c", +"T3B1_en_test_passphrase_tr.py::test_cancel": "4a79e82b3ddf23c087e70767f2c4d4720f980370e22be209189d4ed42a453ee8", +"T3B1_en_test_passphrase_tr.py::test_passphrase_delete": "28468562292a54f2d8cc954129c6b1859c267bc5a9b94f9b406352e71a4c8036", +"T3B1_en_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "8d6c2c13039c420ba1430f990053a30bb0358a4a9d17b46a6a250d577f7643f8", +"T3B1_en_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "e0aa81693c8b40ee12a8ff41f66cad491fe8e5a220bb0a915c18ed7b2e8d323c", +"T3B1_en_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "9d1762d0db3b5699507b068ec81cb1ed3e265c6ce7a7a2e6d7a878f0471f32b8", +"T3B1_en_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "7ac52d0d0de8d7cd35200ec9a2b2738e8e4e9ba87435caefbdbff3776749b83a", +"T3B1_en_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "8bd1754cf1967a6570339e29224d61f45e919cb23d7296e3beb6876dde84b289", +"T3B1_en_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "502828e28edd8147781b1714cae83eea6f71a9820c30446d7e38eeb3a43617c9", +"T3B1_en_test_passphrase_tr.py::test_passphrase_loop_all_characters": "e06ec53edbd9c3d8927e141e8a8e2af521641d0064a20b7953ad15f1a1d48f52", +"T3B1_en_test_pin.py::test_pin_change": "0c143673c0bed9f1f4883f358e0de939a3317efa38619db165d3b7a5e72eacdd", +"T3B1_en_test_pin.py::test_pin_delete_hold": "99c71fe476cf51eff058d2da13f8ba4c192b3396e16440bb766a4a223d4efa93", +"T3B1_en_test_pin.py::test_pin_empty_cannot_send": "7e4ca6b3b7a0606368fd962b93292810f1541696c74fe4dd65f6be42ecaf6f97", +"T3B1_en_test_pin.py::test_pin_incorrect": "9be56566afd2526e29c586935a60937340a03889b4fe1b7b16f1f043a582b444", +"T3B1_en_test_pin.py::test_pin_long": "6c03dc8960d7ad5774ff05b673b3e035a523fa6b44d25c485efffa48f51b0721", +"T3B1_en_test_pin.py::test_pin_long_delete": "9e027284472ab8b160dc3b402b782a4e9c144eb38b5f2574fcf90f3d3aa3e304", +"T3B1_en_test_pin.py::test_pin_longer_than_max": "0d91f6242abba4f553b3acec610e1709cfb9963ec04ef020d8ae6478bfe8374c", +"T3B1_en_test_pin.py::test_pin_same_as_wipe_code": "5bf07232bcf50268524a6f53b03f79c53c98c26828064d3928f7b3c803f05d89", +"T3B1_en_test_pin.py::test_pin_setup": "8c74ca25ab0f2c2dff4113f0959cbf3da931f6aae28b695a81795acfa4105d8f", +"T3B1_en_test_pin.py::test_pin_setup_mismatch": "a7d0d19e7ba5e7a7cbfcb92c38f0f3eb75c0e19eb12fc953185a3564b20aacb1", +"T3B1_en_test_pin.py::test_pin_short": "22cc63b7cd88f752d2d7c9c7d9d047c7bcc316c2e5ca26e509fdc672399a3b03", +"T3B1_en_test_pin.py::test_wipe_code_same_as_pin": "b93b5cf115fb93ddbffae67b7612f0b377210f73b026fbd785d148cc6aee0c99", +"T3B1_en_test_pin.py::test_wipe_code_setup": "93c7dd574acc8ea37519dfaad999adecb6fa8dca5c1b92a1194772e4feb48907", +"T3B1_en_test_recovery.py::test_recovery_bip39": "96b513e7c2044b4ee00a922e5e3d746c9008f116881ba328fbfecfb479835b10", +"T3B1_en_test_recovery.py::test_recovery_bip39_previous_word": "e4e8a7fbcb779d36491d08ae03cc7105b5f956ff2679f2621db427a7a3056cbf", +"T3B1_en_test_recovery.py::test_recovery_slip39_basic": "0156d5bb87a8a38deac15a51d100ddfb3ed0bec3c5d683fa54862f391e43a7a1", +"T3B1_en_test_repeated_backup.py::test_repeated_backup": "d507d5785935faf4b2798b5540cc57c668554bb7543463240e289fcd0b7b77e3", +"T3B1_en_test_reset_bip39.py::test_reset_bip39": "2ed2a2957c618130654925f9b6c3ef0ef4c9281dd5fd96b0c3859da8a0b759e5", +"T3B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "ff7a9903ed4c88f8b784de9eee6aca82a6604e7750f035de91f6c8e0f9e64cfd", +"T3B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9a9d78e8f7730dad9dae7dce628239a1e983a7770afb313b2d0edf78c4255c1c", +"T3B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0328573b94357d23c515418983bb27538533fbdaf051971950148542c315ffca", +"T3B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "07953f5961b6af1759eb9afb41e11c8f95ea1a873cf531c4741199973543c3b2", +"T3B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", +"T3B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", +"T3B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", +"T3B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e0cd08f8c6b1e8164e13a1d5ae58af9f0b560e7f49aba175058bc5ecd9ed0e0", +"T3B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "5167423df1a611f5608228d783445fcb6ef7e71e51e893ae11d352c35cd72a6e", +"T3B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "65aa98bb42b5db52b6e074eae8e15862377029429e72f2c5da960df5bb03fb99", +"T3B1_es_test_autolock.py::test_autolock_interrupts_signing": "b1c6590cf608778d41b1e9f424c8c0c9011731b7e70a07c09efd1c91818b7a4b", +"T3B1_es_test_autolock.py::test_autolock_passphrase_keyboard": "2e56a7d24d0c0cc341cf9b1c817443ecd61c84e86a8ae867d788f6b80c186d9b", +"T3B1_es_test_autolock.py::test_dryrun_enter_word_slowly": "52a1db73b3489e5d4980785a15ba920f03498ec551e151f8436b6aa94c605c7c", +"T3B1_es_test_autolock.py::test_dryrun_locks_at_number_of_words": "9d001647fd3ae02ee9aef7f4730a09663e591c1b6663b5a8d0982e486be9188e", +"T3B1_es_test_autolock.py::test_dryrun_locks_at_word_entry": "8a5cf50832754ef0709ca607d4adb4f31bd6f52eb592c09956cfa5ebf8fadd42", +"T3B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "70d87ff0242c1ed9bbd5889e4996c1b3b1882dee9a286eac12c338f54f71b4e6", +"T3B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "f2b099dd9ce6327caecb52bf69024816d6fd498a006405668985050f1199a06e", +"T3B1_es_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "3386b23c0b2fb42be7651867ecde812fac70b84d691ac33079075435e2d5aa54", +"T3B1_es_test_lock.py::test_hold_to_lock": "e96bc5c43a4187163b152470c8296d101503d0b3c34eebfe5c0729fb3bdc005b", +"T3B1_es_test_passphrase_tr.py::test_cancel": "5a95247d7118e8eacea4d1b28b88e5412d2807ff4c5afd9f926195965a3df9d9", +"T3B1_es_test_passphrase_tr.py::test_passphrase_delete": "124fc265d8bf8dadadf1ee54af83aa254f41ec852a3d655e60c1719e68aecc37", +"T3B1_es_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "5c05aaeb8a37df6fbd119fc87b9cdd92638111279c93ffa8ab402e921208c1c1", +"T3B1_es_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "6cdccbd2ae59c5aaa3041ad57aa52d4d88000eda0bbc7cd42515a16c0145c056", +"T3B1_es_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "57588b83b5696466ad738d143e1ec4fac3132fc328c24f1255b2e5f0c91f9a44", +"T3B1_es_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "62cdc318a722913422a7aa190746521ed2c18b3ed79aa5854457178a51e293cd", +"T3B1_es_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "dbb4db4ceda8eb660bdc5bacc611649753f2b273ea76f72f1694282cc853415d", +"T3B1_es_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "07e07da20ee6fe6cb2c96e47db180a821356ef62af8bee79493421eaf2c076d0", +"T3B1_es_test_passphrase_tr.py::test_passphrase_loop_all_characters": "a7f2464aae4002550a0a9a9ffad46e483ff860572091d4478f157e6be3cf078a", +"T3B1_es_test_pin.py::test_pin_change": "98dfc27c23d8b137dd3b748228b735d0d56c72bbb0f736abdd239e5be67ad248", +"T3B1_es_test_pin.py::test_pin_delete_hold": "6997e7f48d2e8e4830301f41f8802a1b56cddfc34e5d11fffda2e6e3a477a3e2", +"T3B1_es_test_pin.py::test_pin_empty_cannot_send": "26241a6f16528f1dcf9b780f9901caea311ce447faa0ab99b5747e0935345393", +"T3B1_es_test_pin.py::test_pin_incorrect": "9227d4ed996e88045c106bb3702812834af64fca5c046dbcaf4070dcb8856877", +"T3B1_es_test_pin.py::test_pin_long": "2afeb465bbf349e4e7904738aaecdf2d5291a34c2971cc81c84d823615763e51", +"T3B1_es_test_pin.py::test_pin_long_delete": "1ccc6e604453b7e236981282f640d91a18ee91e63b381add3993381da9ad283e", +"T3B1_es_test_pin.py::test_pin_longer_than_max": "624317909758289d8ae75165cf537435a71ed78eea5a258dd550b0a87085ae2f", +"T3B1_es_test_pin.py::test_pin_same_as_wipe_code": "66360cdb1dfa2ed08a6692a15917aae1f823ff0935bc1308b2abca2085dcd117", +"T3B1_es_test_pin.py::test_pin_setup": "98212cdf26228839d65b5ee58ffbcaa2ea675e1f5b906d85b7e4fcd78ae901ce", +"T3B1_es_test_pin.py::test_pin_setup_mismatch": "5c2706aa9ac8a9a0f6175353d67b1750ba6a329ccb3acf6b2cbfc86c96db5d47", +"T3B1_es_test_pin.py::test_pin_short": "034dd5e5a98738e68b4a9aaf15afe6782af162a3db3bd83e5e8e1f5ce31a4838", +"T3B1_es_test_pin.py::test_wipe_code_same_as_pin": "6ab2a83fd754bfed8f7cc32add065da96923d1fbb630e1a5e8c7dfbf1c9e00d2", +"T3B1_es_test_pin.py::test_wipe_code_setup": "74b9c5d1188444c7b27716765532b98a10e350afd42b20eea00b559b1968ac4f", +"T3B1_es_test_recovery.py::test_recovery_bip39": "d6428d52286874bd35e8b5581bae4dee184d4b2563f7065064c637d2f3e18426", +"T3B1_es_test_recovery.py::test_recovery_bip39_previous_word": "b6f0df37e7f59b65a78641ed2d464238fe408709c7d6d8e29c268f61b443dbca", +"T3B1_es_test_recovery.py::test_recovery_slip39_basic": "1878e6255b3eb3797fcf568e62ae415b021fc046ca59071906aae50c214039d3", +"T3B1_es_test_repeated_backup.py::test_repeated_backup": "44445f4dc5b91dd3f073a1f7b17c1d8bd2c7ddc7d949849ba83b53413e0d80b6", +"T3B1_es_test_reset_bip39.py::test_reset_bip39": "8731fd3a8c11ae495533954daed17869c20ebbd8894fca2ab60df65d5d527451", +"T3B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "faa00c96fe873ca23bced4e1eda899d18d3e1a7838351bdd0f913a961f03c8dd", +"T3B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8d4d9fab34aae28efbb9064c7f6e238d9dda67281f4d605e559142bda39b21d6", +"T3B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4240927d1677d77d86ce0eb9ca8234d69daddcb8e80771cebb4038889929595a", +"T3B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f17542ebeaf778c6f9033fcf2dc41f54b20c76b33e786b1d46e5cd17fe5141fe", +"T3B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", +"T3B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", +"T3B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", +"T3B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "dc8334ed53feb63bcecacf6c24c1bd49260dda7ad96e378d0152ad17941291b8", +"T3B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "11dfbf27699cef2965dc33c1b2658a2eff7490297e627284850da90b012a512e", +"T3B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "94dca4ffa2d6a0a8facbfad3c5806df597b3987a9fb8d4946c47a530b641445e", +"T3B1_fr_test_autolock.py::test_autolock_interrupts_signing": "482cc15955ca4f2500808c8ffd583e679296775fecee69fe2286684bebb6d555", +"T3B1_fr_test_autolock.py::test_autolock_passphrase_keyboard": "32c706544b2aa930335f4edbc80a9bc9620c9e8b04f7f18076d04c8ba5a281c3", +"T3B1_fr_test_autolock.py::test_dryrun_enter_word_slowly": "1d5b521490effaf74d08a5fd29868e65d9377fdf9c5a13c323092d90609df18c", +"T3B1_fr_test_autolock.py::test_dryrun_locks_at_number_of_words": "04d245ae8fc92872a0bc710dd8231b479617e7cf9cd1c3c9543c6a149ca84278", +"T3B1_fr_test_autolock.py::test_dryrun_locks_at_word_entry": "44a3372ae24a53ac14d3371f684d092aa0d6600874d3fc3c7c8f2a78dec6ecec", +"T3B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "2a1ca30ccbc3df5b568cf118152a8ef4c3af49fb23392ab624aeaafa0f0ce932", +"T3B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "4db4fd3c72e4233585a6c3fad5ab98d19fbdfd4ecf3fb00484fcf0a4ad690c91", +"T3B1_fr_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "f0853ef27588def2ea3b4143f2cab8d095e3cbc6bb3034e67948f90fa304480d", +"T3B1_fr_test_lock.py::test_hold_to_lock": "777f7b227d219ead82a76f086fc589b9d0d37ab0fadefdc59d42c750e3dabaf0", +"T3B1_fr_test_passphrase_tr.py::test_cancel": "64059f7f1adbda56449271770cbfbcd66953ce2626b8ad63b226fb10758fe730", +"T3B1_fr_test_passphrase_tr.py::test_passphrase_delete": "cca911d4f4a20d44cadb0365a4ebe222f572a77a638ce1744cbbce0eeab26199", +"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "9c4f6394ed4c0933978b7179586103b2de51607242410c2a369bdfca8deb7094", +"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "235d1650cfd6d152e708b84b988a977faee62378e32124857ebd92926a878b73", +"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "d632f61e49e562e4f7ffcedaeead384501e756c8e45fd53389fb9df752014924", +"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "aa178f45a2e51e372c979e6e0b46f40aa4ba3131b25889247cd61dd5afd9885a", +"T3B1_fr_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "61c6497db6c69de9338547c8184bdbcd1cb452ad1f36ab37f4516a90473441fd", +"T3B1_fr_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "8da058fa6f29f5327cffe6239655cddf530719f0dcecb3cded5554f0f317a9c7", +"T3B1_fr_test_passphrase_tr.py::test_passphrase_loop_all_characters": "9f70b92d9ccdbdf713e473f25e12f0a81684b1070483f6e4efa14dc2f30612de", +"T3B1_fr_test_pin.py::test_pin_change": "8fae22f4e962b43d8aaa780083c83fccdae3075d859f8a6d7bee8730d03d0e22", +"T3B1_fr_test_pin.py::test_pin_delete_hold": "6c414c97465845619bbd44a1b1e8e0ff9ab880af2f59c5076422cb57ad1b620b", +"T3B1_fr_test_pin.py::test_pin_empty_cannot_send": "9221e38beb9670a2545a13aa0c9967efe959f0866c1e5663795bb9f86c08c162", +"T3B1_fr_test_pin.py::test_pin_incorrect": "c0df4cd148d9f932cb99352e3cb881a788ce3303f1b97eb2bd6af085e1274dc4", +"T3B1_fr_test_pin.py::test_pin_long": "7c4dccb4bc2dbf259b05e3e17127389fcee171f5397d14c496cb251ddda77bf1", +"T3B1_fr_test_pin.py::test_pin_long_delete": "f1a1e3b110186d57e69f6d4cadad2cf3b1c41876203321833aee8ab280ec18d5", +"T3B1_fr_test_pin.py::test_pin_longer_than_max": "c2e4426269eb067bf712f3bf1d50195b5337c5ab443487b3526953d5990c5e84", +"T3B1_fr_test_pin.py::test_pin_same_as_wipe_code": "ab26611dcc6266d74a28a09c124f506c99e669d5daf4fc1b0ead8b1658cbaf12", +"T3B1_fr_test_pin.py::test_pin_setup": "03d7383eb6bfdbfd2fae666f2dba55a0e06b801460dab855a2939b7896434b10", +"T3B1_fr_test_pin.py::test_pin_setup_mismatch": "2355be5932873459592cbfed1950b07cf03a88aee418b8d8645476953450de8b", +"T3B1_fr_test_pin.py::test_pin_short": "86ab5946d9410f3733a8f906bd2b6d59893450a23c2bdbbc8a94fb459469d005", +"T3B1_fr_test_pin.py::test_wipe_code_same_as_pin": "669dfa6cedab691eba86d223aedbfe0c522b5d27fc60f073f79c3e08df7f4ff9", +"T3B1_fr_test_pin.py::test_wipe_code_setup": "03d8e92fde43596248e69df7a0eb8880e3e9397125cf3d54940260a966121213", +"T3B1_fr_test_recovery.py::test_recovery_bip39": "a5170bb705000dda24f7e9106298c829c3cb389b4b5f5307e4d3bd4789417f3f", +"T3B1_fr_test_recovery.py::test_recovery_bip39_previous_word": "d996fac24e730456a2c860f22b60f5d469476066d39741171f0b1fdb91e3b168", +"T3B1_fr_test_recovery.py::test_recovery_slip39_basic": "82af3fea0b8bb00eb27e8c7f001fb1acdf211a2a4908ee681a4245fb80f333b1", +"T3B1_fr_test_repeated_backup.py::test_repeated_backup": "e6b8b0c99b90b4f436d58c3fc29ec772c51e7bfc9bd43bb3e328d7d1f0c44c65", +"T3B1_fr_test_reset_bip39.py::test_reset_bip39": "d52b12d3857e40aa36df40447bcc65c07e9aa11eb33a172d265df8149b0868dc", +"T3B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "3eda1d5af4e53c8982e06dcb9c84b5e3f3bc6aea4b4e3f90db189fc3d464155d", +"T3B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f96d564a0550ec845f78de7d90b48728b142daa2071d6dc9fdb06edef0c8b219", +"T3B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eb88caad1d08915a450dfd81ac7b798aa140547bd5ced825541abb121ab851a4", +"T3B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a7b5c10b578002d764a7a97bbe1559d2c1284f0e043800aed7836fdba8c5dbf4", +"T3B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", +"T3B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", +"T3B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" +}, +"device_tests": { +"T3B1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "19c5eb360c23b1a362db3813421f0772b28ef90f65fe0ddc9ae8c7831bd2cb0a", +"T3B1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "396a3731cf3218fd70052769be16e36be424e3accc0c6352d962eb56e67ca1b2", +"T3B1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "977be292c8a15e593ee283a90b3af438e3a45bdea7566e43fb81bbf7a03cede0", +"T3B1_cs_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "0e0f5c16c05a0628df9783ede1ec04e7bf06c6aa10575f00c19822bb7f1fa4ca", +"T3B1_cs_binance-test_get_public_key.py::test_binance_get_public_key": "a1f27ad27988e4347a04268b8ce673b8f2c13ba0060970df789a0285b806b745", +"T3B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "2d0818c80d9e082527782ffd5c5a0e16f01cc52be4dd3c1f21a75d0d7451cf7c", +"T3B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "81bdc339580bfae6802d35bb370710aa2b114c80125352b19fb2f881ec969c95", +"T3B1_cs_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "525e7779c1d0462c166aa74513678c707d6c37c3235047a97625c3f03bfc0f8c", +"T3B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "2d0818c80d9e082527782ffd5c5a0e16f01cc52be4dd3c1f21a75d0d7451cf7c", +"T3B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "81bdc339580bfae6802d35bb370710aa2b114c80125352b19fb2f881ec969c95", +"T3B1_cs_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "525e7779c1d0462c166aa74513678c707d6c37c3235047a97625c3f03bfc0f8c", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "ed5c1960389f48032dd6f27d6683ca78c5e79a4a295500e4b83a5a368d0e406d", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_address": "6ccfdf12ec748ecf1717eeadf42e392e3636bd5c567b45fe7f6ca48db41bda43", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "32b25b6de46f3ebc29be9841dc162b61c561d314a97e683b26a0bd84d391625a", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "6731877dffb2f660016695b8880961d9f8f72cb783fd111bcaf53c573cfc2201", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "a7b53fccaec53782baf8074efa5230139c3802f16d1d4a9bbdffe918ce634df6", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "a7b53fccaec53782baf8074efa5230139c3802f16d1d4a9bbdffe918ce634df6", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "c8ff767346e56aadabcdce445535211dc94ecec88149cf1048d8439393161288", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "5ac9b722e18622fb08e3c872641938705df8c04db2d0f4a455ab0195028ece1a", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "d4128698d292c124c0c222fc1919e662f0ec9a07f3cb6eb6920002a927193090", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "2adcb6f0ebc02c938e71c079e66b7445cad1843d5c58f755fc7bf97c2cb88451", +"T3B1_cs_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "2adcb6f0ebc02c938e71c079e66b7445cad1843d5c58f755fc7bf97c2cb88451", +"T3B1_cs_bitcoin-test_bcash.py::test_attack_change_input": "2911ebb4ca66c500fae919354476ac74b96ab5aa3066232f51ec8c7c24b4724f", +"T3B1_cs_bitcoin-test_bcash.py::test_send_bch_change": "f2aeb15c67b76383f25444842da6bd4d2b42e6e74fba481c8493b3778fa0a553", +"T3B1_cs_bitcoin-test_bcash.py::test_send_bch_external_presigned": "8d04d1807c64f3f37ba84a83b12a7da52d1ee25d5528eccec104171417236a4e", +"T3B1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_change": "af1f6cf3c0f18ec6b057e1ac516972a29dca77865d2cec86151e5137461357b8", +"T3B1_cs_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "5e76c0b4db4cf7d79082ae13fff69338ede0cda3baed736a9e1a5fe36342eaf4", +"T3B1_cs_bitcoin-test_bcash.py::test_send_bch_nochange": "3b4415f68f0f42cafd5b84bb30250b53f49b1ed2f4a70fa8f77f5e5f01663b4a", +"T3B1_cs_bitcoin-test_bcash.py::test_send_bch_oldaddr": "9c30168009a527244092954d76950b3dbeb67298c4cabd6e22d522d2aa8d3de9", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "1934842b0ca1f4924871ac18a07592c33fb4fae3648ced2d6c3412260b7fbfd5", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "d8ed600417c4cf1a116dff76ad7eb6d2b897495f89670ed392719ebf3272e102", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "dcf61e5c49b8a8d5b1128a18ed61434830f608661b975e0be2e01592dc606775", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "1961c3f6734749c71a2e01e473575e82bb6351981323e934cfcb08cfba736522", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "65b6ea7163986bda25616f7ac9ff9aeb830bfd40c9736617c095294f1c8b9be8", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d8a75be360d4fe829ecebaaaeffcbf5cd288a721d86819c2e9322aca8b9a524c", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "98f05a2acd03ae6272634c14dca86dbba7c2db3fe52970e3cd223d3436a31d3f", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "f7df97a934b41f9b70d88849e9e3675bfc52a74572c6220bcec8a4573a75df92", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "e73659a9600d6e3e03af070e4b27c8e781d0a29cd5f37783e2a62eaf028e18fb", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "3acffc691b1001ec077fc76a44628943f2eaf9bba58513ae105cdb0995ff0b03", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "172d8773719cfed27d63f4497980e2da5a60c897cc3747f525324a57805e7e10", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "d2bd7a902a7eb920a58b86bbd47a88235a02d987e31155f6745323c8306f1ea1", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "2f2e89f2522a6094588cffc3dd9a9cf49bf9ecbe1a117b04aba8ef62c31f6749", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "70ae34bdf709c2c9e96a6172a8f7258cbb7a7d421ce2861e2defcdfb936a95d4", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ca9420b59c5d2cf39b23eed02fbc366123ca025ce5f2e45f18150590a92dbfee", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5e799795408a06b51386c46337dc058c6b70f9854dae55f4ce9205b5b3a0e87c", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "8870e5239dfeb2db088e915cc7eaf3f3c6f27ef9a837935c74cc9559055d87d2", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "55f01f92ee4148f5bbc3af43ce39b90cd36708610f8843886decaad31c7c00f4", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "1934842b0ca1f4924871ac18a07592c33fb4fae3648ced2d6c3412260b7fbfd5", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "d8ed600417c4cf1a116dff76ad7eb6d2b897495f89670ed392719ebf3272e102", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "dcf61e5c49b8a8d5b1128a18ed61434830f608661b975e0be2e01592dc606775", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "1961c3f6734749c71a2e01e473575e82bb6351981323e934cfcb08cfba736522", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "65b6ea7163986bda25616f7ac9ff9aeb830bfd40c9736617c095294f1c8b9be8", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d8a75be360d4fe829ecebaaaeffcbf5cd288a721d86819c2e9322aca8b9a524c", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "98f05a2acd03ae6272634c14dca86dbba7c2db3fe52970e3cd223d3436a31d3f", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "f7df97a934b41f9b70d88849e9e3675bfc52a74572c6220bcec8a4573a75df92", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "e73659a9600d6e3e03af070e4b27c8e781d0a29cd5f37783e2a62eaf028e18fb", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "3acffc691b1001ec077fc76a44628943f2eaf9bba58513ae105cdb0995ff0b03", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "172d8773719cfed27d63f4497980e2da5a60c897cc3747f525324a57805e7e10", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "d2bd7a902a7eb920a58b86bbd47a88235a02d987e31155f6745323c8306f1ea1", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "2f2e89f2522a6094588cffc3dd9a9cf49bf9ecbe1a117b04aba8ef62c31f6749", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "70ae34bdf709c2c9e96a6172a8f7258cbb7a7d421ce2861e2defcdfb936a95d4", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ca9420b59c5d2cf39b23eed02fbc366123ca025ce5f2e45f18150590a92dbfee", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5e799795408a06b51386c46337dc058c6b70f9854dae55f4ce9205b5b3a0e87c", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "8870e5239dfeb2db088e915cc7eaf3f3c6f27ef9a837935c74cc9559055d87d2", +"T3B1_cs_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "55f01f92ee4148f5bbc3af43ce39b90cd36708610f8843886decaad31c7c00f4", +"T3B1_cs_bitcoin-test_firo.py::test_spend_lelantus": "1c623955f453c9eb1f33c8da37a2fb33d157a909df32cf2711f331a087aed0a9", +"T3B1_cs_bitcoin-test_fujicoin.py::test_send_p2tr": "b32128c52d3ba8c1445746cbfc2575582fede5e63aa3f4b11bbe07d53742e218", +"T3B1_cs_bitcoin-test_getaddress.py::test_address_mac": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_altcoin_address_mac": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_bch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_bch_multisig": "b8d2703e4365eadbe2a906450fb2d7a21f73777bdc92f5fcd2c357816e10aac4", +"T3B1_cs_bitcoin-test_getaddress.py::test_btc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_crw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_elements": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_grs": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_invalid_path": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_ltc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_multisig": "67a5a7017687f58c8b72b87812fd185bbe68c7b62435d6d90ed812c0cb9e6851", +"T3B1_cs_bitcoin-test_getaddress.py::test_multisig_missing[False]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_multisig_missing[True]": "240dca1253fb9ee33ce68c4a08a6bf62338159f46f5fd0612a918ab012c81db8", +"T3B1_cs_bitcoin-test_getaddress.py::test_public_ckd": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_tbtc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_tgrs": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress.py::test_unknown_path": "89e70de91ae7a1bfe7e66e40b32c2bb0ee73417f6a9c31df77676f1719523103", +"T3B1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit": "5d31c4c302fd49fd7acb13fafc9dbbd09f8b41312b1a735430ecccc4e7d46c10", +"T3B1_cs_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "671a70ade41e3aa06b32abdbfd3f2ab8a1e88ee2ae18fc34b8babdad82a60ab3", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "ab4cb73f6a8b2bb0c7335f16efbade7d6fcf919e76ff653050fb0459673be3a3", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "03ba3970944ae27ae2fabb44b697a5164283c9b7bdcda4ee8c0f0de60df8cc39", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "e965d919ac10d6e3bd48993cf72eb353b369113d33baf86cdde6db0f8c1374e8", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "b121d934d4e7a94970908e850121a9c67409edd97942920a7c3cd48c206f77e7", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "111f4169937745a9cf01fa5469f002b807d5fb07b52f6fa85304a1d9411f54a5", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "811752bdd298ad757da61af4096dcaa7f01d6c5287725ec1334df13a0bc4812b", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "2efe3c696527b57d66621ef2ef92bf49406a5fa5958782a95ca56a45414e6d3c", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "ae6f1d550004101590ca5c5e5d0352cc4a291adce85400431f3681e02a4544ca", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4cc470dc4e233108d6d239d561bd89c36280b3434a8d8bfc478e21db317d3aae", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "f660f1e4003b2f798394100d0998860bb5b16aeb56f7fa9132da313651449e27", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a77af125676569096e11f43374d92c9d09e9dd4905d3cb9b2368ec3175341b11", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "212fa1b1129484d985e399b7a9c695283070279541ffb6fdd8b9d2f9eb6e9876", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "e4cf73fa1de057b3c6f26ce221d2df2feda26461631579949995d7f3ee5341ac", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "34daddb0980d2e6e077130c3cb4f8df64b1f053a43084c98407779f671ec3807", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "8c40c7ad47e8d8651be2aae2c5e5d034303a59ee02a2e67de9f93a576fa2be6d", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "863e77ebc0dc215f5759d4baab788d954bea188da9c48df658136326b8da78ba", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "a80a313bd904775904ebf7efa0bc4053687f1a9d42d04323f4a198fe04ea1ad8", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "75dc1898bb22418ce382706e454dfe135ec071197b9ace91032f8a6d27abf1a8", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "5511db50e30177b37fa1529f993f54062f087672c4bffb17f7620e1045dc23f9", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_15": "d8146b33e412805dbc7babf9bd8dda1afa060e6e64f700b998dd81f0117e02bf", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_3": "cd47343515173247414271395e688db7f59d6d16bf9384bf25f0c1bc2bb72438", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "6e31f2a710b25ae677b84454dfb0c12816c4e514b4a39ee3d45e17439ab83f9f", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "6e31f2a710b25ae677b84454dfb0c12816c4e514b4a39ee3d45e17439ab83f9f", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "8671612925256d7b43c0cac88f53fb1c9ae3867d0dcb046e90f5ca79f5067d72", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "78154477cd531d9780a72c813de228931e9d6d2ad6a4fdc791c45c1d692c36c6", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "7e7c13df153005d214f19299ae997fc29388158d5f85d4f97a21c66d79654880", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fa2c16444adc33bf48ac17dffa9f225e3ff92e7b5caa812a304ca7a2345ee910", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "104a2573a3fbba0126af537fee4da98523d0929e859bae6dbf1bad464e303113", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "00ac5e9b64d0f31d5b50c8f37ef41671ff7d76fe814318602ecbc3b429be1772", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "796617d377689bce979b1bf083034fb731ab8ad0390232f34c523856fd1eaca0", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "2d0bf7d228d2b29e678c354641c15237755790ebb4b1eb9228311844a106bbd1", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "597343e6c7468beffdceb1482853f3de1b8f9263c06779834bec2c940bdab8c5", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "5ece774512e51b9b8b6e2509c94444938daf28684d8e69b9ad749935cd1a5565", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "23e27708fdb477ad250484e5b73bfaa795a99e540bfaa9fd036549aa0d5a22af", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "154d09ac8a86b45af90cc0e82d37e4dbe90e2eee6a227bb0f398ea51c9a9cdbe", +"T3B1_cs_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "762389514333447c3f25a187bd9a3a7c0d257886950a76f0d23277a35c3258af", +"T3B1_cs_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "fe43c78862cb7af9f56c1856567f3f91cec8f01c9ad7b2c05cac66874eed55e3", +"T3B1_cs_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "d8ed600417c4cf1a116dff76ad7eb6d2b897495f89670ed392719ebf3272e102", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "c07009d0992e84d787d9daeb207a2cb907d855e39aba88d61efbfb5bdd031a50", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "734bb2ec8061f557ab62202552d8252d03504f1c4c47340d602151c4958b18e1", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "85ef93ea8819f7b4ef38d1168b0580ceb992807ccc8ffc20d3ff7fe41f0187de", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "32584b91207a7c1a40c3f514f3fcef0b5c1db5b7ddea132d8b9d15a03e5bb981", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "7b3e5072bf75e2e92198bc8699ec12bf439e45538c229f6ef8ac25be90439437", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "481fedbaa83a76effdbd7753abb388a4f8426f031886109600bfad6b418375d5", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "566c79dbf610d8011e819909c9011fbc3306de0c7da6cf0d5029091159abb130", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "17442c6db5498748756c7e42710b58b2198d6d67bfd460211a78632149aa9af5", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "172d8773719cfed27d63f4497980e2da5a60c897cc3747f525324a57805e7e10", +"T3B1_cs_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fe3a9aed880dee348cd5aafa9791deff986153a95d3f58cb7062f81050e98df3", +"T3B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey.py::test_slip25_path": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_grs.py::test_legacy": "4fa5b3f97b08a0e56b917ed92b30be67ba6b6fd9970fe1697309230a3a2f736a", +"T3B1_cs_bitcoin-test_grs.py::test_legacy_change": "5a381b8c951ba7fd2dc6074a62ffb445a389d3caeb0de8e389e3a2943da8e4de", +"T3B1_cs_bitcoin-test_grs.py::test_send_p2tr": "f3e04de3a8bd801d4e4001cbd079fa92437f3e8718a9302bd68eb10f6f86ddd0", +"T3B1_cs_bitcoin-test_grs.py::test_send_segwit_native": "f75b6cd7c0f0a7c17caf852dd4cede262dcaa333fe73aed44c7da87a04fe6776", +"T3B1_cs_bitcoin-test_grs.py::test_send_segwit_native_change": "e403a1853ad951dd8da5936a5b515e284779d277c8e3bb640bced4cd5f845b78", +"T3B1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh": "1e7230d208662bc24107d924655164dafc8b93ec53400f3df5c3855207db1f7e", +"T3B1_cs_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "c50feb36eed00bb26ddadce6408ea0dbd3cb2cf4696b9efc3af314edec45e8c9", +"T3B1_cs_bitcoin-test_komodo.py::test_one_one_fee_sapling": "9c982836ff4e50f275b8440f07bb85febb867b21d83b2440a8c12e080d1c9866", +"T3B1_cs_bitcoin-test_komodo.py::test_one_one_rewards_claim": "f76f0b3b9f59368a7f66b07ce2ece25ca833f57d408b446c006ef352ee73c9c1", +"T3B1_cs_bitcoin-test_multisig.py::test_15_of_15": "d7a33dca58ff78b2d5b949bb8aed4493766b3960587b41560b5e54aba22041a0", +"T3B1_cs_bitcoin-test_multisig.py::test_2_of_3[False]": "9ba8b7e8b757cecae8d45b29252470cb1b93a5f6b89063a2d8f4e476b81461f1", +"T3B1_cs_bitcoin-test_multisig.py::test_2_of_3[True]": "e50acc704d7f8bacfddb9f8b086f2ea3fa990df7dbefe9b59454957789b875a4", +"T3B1_cs_bitcoin-test_multisig.py::test_attack_change_input": "df93202c28aafb26510333d14811a506ed80020273236920d0b20ea336cfcbc9", +"T3B1_cs_bitcoin-test_multisig.py::test_missing_pubkey": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_multisig_change.py::test_external_external": "5a10a94e93233e2d10abafd429896364602a4c7e78f8fcd33c506cbd11800fcf", +"T3B1_cs_bitcoin-test_multisig_change.py::test_external_internal": "8501ad0a8b5edac4b408532f36e743e88349bccd12199132b157aa2c16ac5520", +"T3B1_cs_bitcoin-test_multisig_change.py::test_internal_external": "fd703d741f3d0bd1388c6d6e2e7afd721ce0b00ab98384f7da384e8fbabd1bb3", +"T3B1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "3094107820be5a7e562b860a7b6507105aa8ce2556837816e3e452655f56a4dd", +"T3B1_cs_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "0aeab0506f7ac68e793c183902ba288e1df1da6883c11531ab8b3dad4ddd779f", +"T3B1_cs_bitcoin-test_multisig_change.py::test_multisig_external_external": "9620dece0b0b1a18d9c89fe42e3f4f1709d061fde52e1190082ba65b8e08b034", +"T3B1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "3093ee11beffc996e8d6f58ea3e11629e45ce9f7f2f00a1fb14bc93057e89c7a", +"T3B1_cs_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "9882c519c46233bc22e939009d9f6f78a7fc9c7362c7c38ce385d49f213314a5", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3554e6f58551f63e271e3ce0bee56f09b5a52f96fbb9d35d2d116382ea245ea6", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "e3db8f9a3df030c72c8eff363fdcfe4d6313f6392533474933d36c0486723ecc", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "f69ca9b77243e5d274c5cf0e3c5cb54f12e89e194d6d1b2e0f4ad1c9d9889689", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "b4c134c61c2b6b09e5244ddb93886f1dfd83b4ed6afad78c5e1595672e7e62d0", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "0d77fff3a02a1cb4231944db2b5412b130ebb972886e8016bad789b60a871e2e", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "5987ca160864845e5de561daab111e6ff4f9a1d27dfdabbd94346bd3052e8e61", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "55195c8dd47c16b9d70a8ef402d9177d9ee5354481f8a96977eba35abca94884", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "ae474705569a73d0b0856d992215b3a943c1803e03c12d7416601c57a03b6917", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d4c4983d1093cf49f5887e20ccbd10b1b1df48360c3b8dd4aed0f2cdfe178739", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "9ffe37e49f7744beab0de642a8cc38792725bb5848c6cb3ae0cd59188d83f3c1", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "ac88de11f34c2e57fe571d98086295d68d8b3b860312904e0aedc7bf89782de8", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "b8d9dfc711649d8a51714281bee4e1e74b48e8815d417af6ec50402dc36e4b74", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "84bbff9478fa89c11b52f1fddb7bb8bd8e639628b5f8bcc3790c76de752f8d4e", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "d64e6bc57c4f394ce45ee675e0f60a08a9bf6066eae0675416cf50e2af565abc", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "a17ad8ae8269c577c61ab4e95b122859dc8bac707a826e57aebd45c31aa10ea9", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "f97a60ed772ea00b6b4cf915e11ed53d6bf50d85f49356de35fbdfcc4cefc471", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "176a231a405706ce4293a095aa295237a2a100ba4e6f135334cd3c26ec3326e2", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "693d4686ea9e815fe4759516670825f7a668dcb927f2b5900f054d1c76bf861e", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "16fd66ed3231870e69aef37381374df52233d873c344b2d22f95a6a380e766f7", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "519b50e707d8e1cc967fc87fde3d9bd826fbed7d48f9c096a5cfcb463d3d9b82", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "94a60c6656d560a6aa07ff006fcfe9b7fdab060e99872d1ca2c716aaf74101b1", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "459523a308cea50e3e70f53497c82f4a02b438cfcac0902af69df3989f5ce567", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "40e60aefa567ed07354f6f3ac3bce533aa7c0f1339b2ffbc9b15ab66cfe56d71", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "292202e39884aecf19b4c25699049089e621eb3b04a2c6b1ab4dcfb58c3f9485", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "51640f42fa76af559ab972ffbef9febed38984b620c6584c23addd0a547867cb", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4a4a1eef7ce4b7280f91a9fea1342af95d9a5c805de4cd65b56473efc9da54d5", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "7c6443bc08f37745273cb4e379ec2b918a15e9e9855d2ac2c75609414abc0e97", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "6c93f24ee58e5c3e1746a118c413337c856d1951d6743b7eaf2449e6a41a6744", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "d08dc7c5d005d7b53777e448650c698d84514e25b0e891be2d4395d19c8ce5e5", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "f825724bc288694b0ad33e93c357d44c7a423965151252e6fc41acc8869e45e0", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "fce49b5f4d1b6f334f25bbdea70a279d8e010be0c70f50288107aa3c77793fa6", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "3b42bcc8dbef738afd3b8be9ae0b405e6c59d0181307978ca645cfdf4ed32ef7", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c64a164e33cbe7630615f55e69aa04893eff47e5b06c8152a31b25d096fce966", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "5caf9c08a20ba5677c42dfb3c7c049d4eec61a0f86318e9423bc9f98ddb5b0b5", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "c77784ba12beb3fba0b2e7a6f8f39701c1cc191c00863ebc3a65bd2314cfa995", +"T3B1_cs_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "dd9adbe2bd5d391f06753c8918046679cbe604e2c9c7cb3f26d063e8fc995964", +"T3B1_cs_bitcoin-test_op_return.py::test_nonzero_opreturn": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_op_return.py::test_opreturn": "072dcdb01000c37da7d7c3b6956d8c1d3ab89b56ff14eca118c5e7fe9fef88f3", +"T3B1_cs_bitcoin-test_op_return.py::test_opreturn_address": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_peercoin.py::test_timestamp_included": "9ffbdfa73a564a8592b4d0d27c1b9efeabae35904f416ca1878007a5fde97b4d", +"T3B1_cs_bitcoin-test_peercoin.py::test_timestamp_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "4c1e9617ef54f43665e4e692db2d98dce8bc59eb3da6c02ea4134a29d622e817", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "9e8577a427871308945674e929874583a784d790906e2822775ab750e59cecd2", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "9e8577a427871308945674e929874583a784d790906e2822775ab750e59cecd2", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[bcash]": "224480d32b1f17749e2cc44626a3fc0adcd895de35974e903664cbbfd5bdd70f", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "129e52e75c2a414ec550466fdf3d8c875ec9d2ecab5bb7e03336debc22fa2ec6", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "6284e614518b1f90155c6bc07b901782d24ca3c74ecb02ec3b870aab21878602", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "95533fcc54fa7463030f97eaa98dac1bbb38dbfc39415feaaf133c25ba6e2e7f", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "759c725b77139684f42a6ca4376e75edabfdbbb108c584deb0126485a73045f3", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "790ef14a903b948b14da05a1191787308b218f63929e21fcebdc702a74d7b9b1", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "790ef14a903b948b14da05a1191787308b218f63929e21fcebdc702a74d7b9b1", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "b972cbbbd05e4db5ff2cb49879d39168920b11b05d18f09d6b535341ec87411a", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "f3a978105b3a0e2d643b4d7b2f0b71c4f703d8a89b5f911de9b16fe91c2aa531", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "b5bef126226f69a2d93746983f92d1c93b3d72c5adf0a03b2c16e3c16f9bd0c4", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "b5bef126226f69a2d93746983f92d1c93b3d72c5adf0a03b2c16e3c16f9bd0c4", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "cf70dd1767736b3665c18c1854bf4d62cf26fc7a6ff3876b276606dd3daa56b2", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "7f7f20cc3dad44966fed1faf850ecedefda8ea27144e42c75dabb650deff0125", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "a5fd990c19849911f3b6ed598677b73d65be385d343a24a02f3641dcc349d30d", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "a5fd990c19849911f3b6ed598677b73d65be385d343a24a02f3641dcc349d30d", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "eb02d5dd706a0b0f8049d203ce79ef08a46937a798304fc031a7a82f18c9f2bd", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "66641567b5523842444cb105bdfb223ed16436357f41c9f1cb997cbc6c5b6fc9", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "6a1ec357aaa93cd93ca660b000e0829db6cfc848127a0891250f8853726c09f6", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "d266a7c7fcecbf2d51a997e4462b0a5426ceaac0a286b0491a6c1c3395d4d057", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "6d437a046f12202ae80b9fc8ba7d6777efc6d9655e50d173d422f052e343f787", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "cf746367aec2048479850b89ca31683c994285dcc91016d272326c19fd840c59", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "2cea5fb373b2b75df2c41df5e6e361fc95df30dd5bbe72be2475515ca004c3d8", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "e63a41dcd660b716f78daddc1cb99d83ddcdc43485f62dbc1dbfd3aeb83b5c2f", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "3e65aebc940b15f5702fab0011c53445b0798415155973521b61d26f83561c1c", +"T3B1_cs_bitcoin-test_signmessage.py::test_signmessage_path_warning": "1e18a81de3f8c992e1c8d997eb46bfba98b3a9204e53be092e70ca55117116ac", +"T3B1_cs_bitcoin-test_signtx.py::test_attack_change_input_address": "7ffff5af7b550c504964d8e2a1b53c4a5491a3125024a15fe1bc123c52067790", +"T3B1_cs_bitcoin-test_signtx.py::test_attack_change_outputs": "e91af534fe70e98e63b24052fdc0fc9c01b085d8ceb87f5de810633cacbb445d", +"T3B1_cs_bitcoin-test_signtx.py::test_attack_modify_change_address": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", +"T3B1_cs_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", +"T3B1_cs_bitcoin-test_signtx.py::test_fee_high_hardfail": "7964e96cb80fc928af9f41f3e6557bdb15e1b53db01865f1b64dea9d019cbb22", +"T3B1_cs_bitcoin-test_signtx.py::test_fee_high_warning": "4b1d8e34efeea733bdde45e3b8bfff3feee4b81dbadfc41d9406a505005d518e", +"T3B1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx.py::test_information": "bf125ffc822d9490bd34c08c380889f4c5c908fe61cc8615146ed1cf7bd4e2d0", +"T3B1_cs_bitcoin-test_signtx.py::test_information_cancel": "89b9146058f74931740d3f552f0a917f42e853bcb691cadab840fd8258bb0d18", +"T3B1_cs_bitcoin-test_signtx.py::test_information_mixed": "da6236cfa0afd4a1840ad02c16a7ccf4513cadbb9b1e4c38757870cc80fca007", +"T3B1_cs_bitcoin-test_signtx.py::test_information_replacement": "42479908865e1c5b2614897504cedce7d304f376ffd282dc467da523c0867149", +"T3B1_cs_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d6a75e04c760c4c152efdd51ce3966ad165d965ab19884e2e15424b11b69001b", +"T3B1_cs_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "124db25618a700f7ee18430800eb42a7a4b8f9e7483beff5fade0792d96b8726", +"T3B1_cs_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "616d02ea98d09b13cc5e22bc2747e48e485a64d22476a3f26da46cf98430dcee", +"T3B1_cs_bitcoin-test_signtx.py::test_lock_time_blockheight": "3913314e52d52a65d30df7d758027034735c6a825cec367461ad68dbb28364ef", +"T3B1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "a7c37bc271580219f7c191aab0674e0762a550641d9f0eaa7e078b71871a569d", +"T3B1_cs_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d5c0e61c4bcce1765d79087e84c11e781ec295dd586d9d37746711c1412b99a6", +"T3B1_cs_bitcoin-test_signtx.py::test_lots_of_change": "9146e8ea1e9acbd16608849bfeff1cb5a755124de5cdbfbe4a5f160d8a0a31ec", +"T3B1_cs_bitcoin-test_signtx.py::test_lots_of_inputs": "02948bee099010001320727585870eaf5c4d98b2d55204383cc610374a8934fb", +"T3B1_cs_bitcoin-test_signtx.py::test_lots_of_outputs": "a42a6c28b9fb1412b571e21c2c9dbf5d0bc013f11a5af856d32812bd4042e039", +"T3B1_cs_bitcoin-test_signtx.py::test_not_enough_funds": "5b6acf8b07712f67c9ce239828285141b54b93efebd79769d20253e0e41ec7ca", +"T3B1_cs_bitcoin-test_signtx.py::test_not_enough_vouts": "909ed888bbe621a32827f5bab577762624d216ccfa7fe1d74e4b3303c4c64271", +"T3B1_cs_bitcoin-test_signtx.py::test_one_one_fee": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", +"T3B1_cs_bitcoin-test_signtx.py::test_one_three_fee[False]": "0b99f7ed5fee70209ed187c291b11089d8a9b7168e7bddc5f8bcce0bb1e29aa2", +"T3B1_cs_bitcoin-test_signtx.py::test_one_three_fee[True]": "83d944a442258be2a0687e21c47a7a57d17958ef05a3a790fde013bd8d1e51d4", +"T3B1_cs_bitcoin-test_signtx.py::test_one_two_fee": "6eb5492d827cbf9fd1fdf588cf2727bde8be0ee9abee5c6307604c954d93e476", +"T3B1_cs_bitcoin-test_signtx.py::test_p2sh": "abdc7d973ae84b57f671cff62629106b8ea08bab7b1e47eb7b9b7fcee9d43bce", +"T3B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T3B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T3B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T3B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T3B1_cs_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "5990d8b9e0ef0a9113faf53a62978d302db4bd4ac31ae8a522e5aa5b7882caf3", +"T3B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_signtx.py::test_spend_coinbase": "4fbca0a9dddf0a2d8a8c66ad67024c5dc5c1d9ac25776f9b917360382526f0f9", +"T3B1_cs_bitcoin-test_signtx.py::test_testnet_big_amount": "ed8945ddafd022679b632551c04620f5d138160dd74ebefaed98c54a82424e3e", +"T3B1_cs_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "db58e0f14752bec728ca009b97af39c73410178fb0fce42fb5a79a06c1efdabd", +"T3B1_cs_bitcoin-test_signtx.py::test_testnet_one_two_fee": "23303584d45404736ef9ea5877e4fa0a8889fd93e4dd74e00cbc0d86e3213fe1", +"T3B1_cs_bitcoin-test_signtx.py::test_two_changes": "2a0bfe211e57be92528ed46ecfc6bfd57a9d5875547aca3c285f073dc4cfc77b", +"T3B1_cs_bitcoin-test_signtx.py::test_two_two": "d2bdc5f7bc37b0e50bf47680d8ceb0db456bb5a2c2df0861d5c993b1d6ba8776", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4873023f73f1137e702613b43e7a202f05069bcd0fa1408e2468908753f74163", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "542f74046f41ed7ad49d4e6b2171180368b0c7883052428c6ad45082a7ebbf9f", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "90f9ea9b51ffb016394657c02cd4c45c59687df2caf8746971329d76233be584", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "f1431c70a6d92a86fb675e2eb9b9c201fe52969bf89d2e34df6285fdd40e7690", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "a4de79a37c82e58c510358234fa9f27d158123fed6bdbe796fc3c120d8453853", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "9c2a9e3b134bcea40f97703e95f294dac1c7a4ffaa33592ba393fa21892a9a37", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "98da775e8accf6cbac5952c52a2076ead05d99df9d5c30434ab7a1c309edf002", +"T3B1_cs_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "589116665f82b0f65203280268126b7193a705a410ed32a32e4d32a618bd81da", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "066b01722ee7fd6dcf344fbc820271499b8ad47ac84755cafa2b56772c55a6d3", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "387421037010f31900988ee90efcdca0959757f4dec2c9b28bc951e3e5b8d624", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "a984482f63e7c217d36a2268f7796dd2c6a9a421ea3455e44f4d57c2c4515761", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "9fe1ae4d1cf43ebf50413a7d4813f9f99f71282fa3becc9f058d537df4fc2c42", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "3194eeb7a2fdf595220d4af6b38b29090624a96f0dbc78fa46ca9fd3216d8160", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "e636fcadda827ba6943dbfb0f8b4e81bfa532d413a54016d93d70f5207abd3bc", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "48c5cdb3a252c530e1d7baae689a2b194eab531a4b3c82e713c05f139e427c55", +"T3B1_cs_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "3de28a4db4fdf084e26c29dd618203d3a02629a5b9f97d8f52d48f824fd9d1eb", +"T3B1_cs_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "253a1df445bb171c634c82311f876ba37a27fe4c82f73dd740f7a14416a26803", +"T3B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "18a1ef8e5075e77c2ad9f91f585603fb94fbd0bb6cbdc81718e22ada773d6351", +"T3B1_cs_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "6850851bd9253d19f24c728570cb062dd3c326a175f79f0af3571bd7b5672b11", +"T3B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "9e480a7e0ce03e5ccab45dd83e8061ae81605c203384c2a89fb9e765fbed6415", +"T3B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4060d61e348e74b2e0c2a6832610461bada446af2157aa32cd7bdc9d5475ab72", +"T3B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "9e480a7e0ce03e5ccab45dd83e8061ae81605c203384c2a89fb9e765fbed6415", +"T3B1_cs_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "f9cbcca83a0470cf98ef846b12ffc51b8920907b532014482c2a193a642cea6c", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "7e9240a8b35c8e7fadc6cef28e5ffe88df141830071a9b72bda606a1660f751f", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "816a58a63e88a2e4fb981c75af1a03274cbd02dbeff50f72ec91f877ba48570c", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "5e8baf802b302c6e7f698b5579a44e0ce81704cabe0f3ee150ba1c63508e5368", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "df3dcb8a602b5d9bfb76973249601f570e170fa5870dba4ef09a05d1f7ca3797", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "96a00c0c1cc69e5e87c5dc581e8a551334def513ae8288bb34bb8fc7bd3e8082", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "284469aa6f2a9a3e97a0deb58e9f6a2c5d13f6030d2599f54f2bd70eca860e6a", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "ef486f62fc674b1a867191260f7da26a0b00c99f8ec9e4d2924ae48202b7f277", +"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "38e9cd996fca63d05648fd03ba22e2176e60333d4276afee62a741f7c0e50205", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", +"T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0b54e29a4ec8958ab3f56cfda849dac0e1e7d2b968e5040f525e469fcc7fbe0f", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "ff269397d9769d04956bc12d3bdbb7af80f13be6a55e3a5e08dd014a803b5f8f", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "fae7650e242aa33fdbe37a2b34d836e87502a31e4d3becc2c43f189a9125d546", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "8388984d66070c6c330fa084cdba4d7e9c027340b85e7ff4c6cca966747dd92c", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "8388984d66070c6c330fa084cdba4d7e9c027340b85e7ff4c6cca966747dd92c", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "5535eb199f83326b0c7026e509baf832cb25f6d3c8481fdb613299f43a013103", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "9a364e83ba512909925ba9438f10c2cbb9fda1c4e2a35f3917cf6e6e6918ea31", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "27e70830932c2eca153eeb35efe7517994174b82d6358327ca387e49902a6e1d", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "5535eb199f83326b0c7026e509baf832cb25f6d3c8481fdb613299f43a013103", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "cbc51be9627b3012a3358b3cd2c88f214a1512b204da2ebcd6937697d3a8df0c", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "37739bc1c44ef50cc573d2cf9a034d719d0522ca272bea2c86fe86a965d6973f", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "46f9ade8b1cbe7f5980265c1f16e1b02d6dbf3835ce17b1a6bc81579259dc054", +"T3B1_cs_bitcoin-test_signtx_replacement.py::test_tx_meld": "7b2284f3d8b60e09a14b5eda32f86d2f9d8ce4c12b83d787830d4ea91aebe361", +"T3B1_cs_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "ca88cfdaacf0c82b4f4df943fc482273819dd6b078d443cde4a18120916c4214", +"T3B1_cs_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "b2e4b99df51a413e4bac3b433254ff9b045d3e2225d13abdff42c54d0c573ac6", +"T3B1_cs_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "bc2cc24541cd225a4f9bbee039395947874c6c5d31430d6c71066cf5b4b20614", +"T3B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f0607a71b16b6cb2e3dda61be0d5ff5d771359962c70192f909ebecb24b37280", +"T3B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "e062ca3ad7b78a76973dd705e1469823b6ffffde6ce8b7bf8e7e5e4b45a49c84", +"T3B1_cs_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "994694c07d0c8a0a80fb26fbd0298c495afd2cf265b5a0b503b225513ffc38e6", +"T3B1_cs_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "722446a2b816812aa2631bad02c927144a432d9e0906bb1c8aeeb7f72f8fe6fd", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "82e7a6632f79020fef15d3fb18cad60c1f0207957a8e026fb2624781fcdd9295", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_both": "e59c5b0be35bc2f15303f21761c650bac2c5d287be5215d243f474ad935dcd82", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "2df26fe1aabcef123b11a4324f4c51514cf5024788c6b0ea01db5091ac5748fd", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "455b58f65370afde13ffa41775cd7ff9e606686831c4e4965f6a91132fd1c091", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "6084e9fab28225a35390bd05173fad2cdfe433185e25a6b1e1db85f2207be5fc", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "8a6578ba83c33933707e4d8e1a8345e181dc71848d301730265d0fa92cd527bf", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native": "a2f82d8d8919c8d89595f7ac7deaf1674930a2c464272017cf4e7cc8ed5a2133", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "29d416748008c45c8f254f7d7e2774cdb690bea4b5a2ebcd177ab17db3c2cf3b", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "3f34b75108c90ef73d4d8b67f3216aef8bbff04cc30b7653e2bf33bd8ffa08cc", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "1bae892aad7de07d4ef982a5a7b8aaa30582d98c137950e4b23b945e7a807895", +"T3B1_cs_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "cccdf162022b35ad09f75a612dbac40034f412be0874b9e152aea513ec805b8b", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_attack_script_type": "e76c5b225cd667ab556c619e5f4d9ce08c1b31bfcc6918be0f6293118e0e01d7", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_send_mixed": "dff4bd40649d61cf46dbfaba002c17d648c4460eed44147a37ef7025375c991d", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "b31b3684486ac38a036a9e5ebc73187be1b36955507e3276a6021303370259a6", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "734b4329d810877751641525b1223601af96e8442ad78dbe1327563f33a57054", +"T3B1_cs_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "2c7f6a6fc4a11b15716dfb96e47bb199cef0261ad50da817c3c5cf2196c2480b", +"T3B1_cs_bitcoin-test_verifymessage.py::test_message_grs": "4a497c9778ff4810a774fff938e970079d47e754f34058611450f2a1027e8281", +"T3B1_cs_bitcoin-test_verifymessage.py::test_message_long": "b6ddc32b3bd6e8caaa25db0d3277cdc34a6dd83e21168d2bfd735d686b7113b9", +"T3B1_cs_bitcoin-test_verifymessage.py::test_message_testnet": "97bf56e0223d53d8de6a5bc245bf2ead661267173d3b03680184c3c4d7540d5e", +"T3B1_cs_bitcoin-test_verifymessage.py::test_message_verify": "f5f1a0e6506282cad4c6ef9918708ef7dc2b4632b757e373f779d7fbc3e78e82", +"T3B1_cs_bitcoin-test_verifymessage.py::test_message_verify_bcash": "abd119ac86413fe7d1ee18a1df8011ee6bc31607ede9bac58150347c39366724", +"T3B1_cs_bitcoin-test_verifymessage.py::test_verify_bitcoind": "97f8bf5607245bb8bdee5215f772aa6a8f7d71cf23bb3329803083bcf7c71b21", +"T3B1_cs_bitcoin-test_verifymessage.py::test_verify_utf": "cc6e862f46632732b9e4daf4100c34859645ef58b4d86cbdba07e62b7f70a032", +"T3B1_cs_bitcoin-test_verifymessage_segwit.py::test_message_long": "fc57a4254ab0f54ba27a3e829aaa2e72481bd4cfd23204f3e2628be8af67fab6", +"T3B1_cs_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "0b260bff738165f2443050501b21bb151fcff647b9a8242548b2e84e608e9459", +"T3B1_cs_bitcoin-test_verifymessage_segwit.py::test_message_verify": "713d83a2f1218fd189519c5190264bd418ca9c3b26263f5f849521e6126063dc", +"T3B1_cs_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "70a3165226e138626115aa5cdf0e79422f7b89e8fd44629d3cf88e48a276d94d", +"T3B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "99a2b9d858b1aafe93147163c0f29433385fc061a1b3d49088be39a7b0fbad47", +"T3B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "d70bca3f6147c0b036d97686d72754320613e1c0e95a41ab36612ebc9327310d", +"T3B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "4e58fdfc8c3f8da09b2ca0cb3e6112862c3089ba34a642bf151f7553f06c67d5", +"T3B1_cs_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "ab4e52e3c3ad508fd817ba92ce22a6bbe9494778d4d1e27b5f7aae02379f660b", +"T3B1_cs_bitcoin-test_zcash.py::test_external_presigned": "7768da68844736c7b938b0da0f64386ce9b0b42f865e353c6ab9378ccce2e7e2", +"T3B1_cs_bitcoin-test_zcash.py::test_one_one_fee_sapling": "4cbe4458f0706cd1df438b0d1be712e1aca5e9036cedebbc4ff5e8f0e818f034", +"T3B1_cs_bitcoin-test_zcash.py::test_spend_old_versions": "37ec7de2bc995aa94b0673b3d2f0b1b36395190f5d6f31030b2099d2d5eb1bca", +"T3B1_cs_bitcoin-test_zcash.py::test_v3_not_supported": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_bitcoin-test_zcash.py::test_version_group_id_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "4d1acd5378f816bcf49eb369ced78e6495166c941a01dd6672d7d68b622211bc", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "a00de161680e7eda77d86fc07a297e9d0dd0809bd1ac6cc96fb7965de0477be4", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "dc6face6162f1201aba766971f30c281bd0622a8d697d5546511563214445c74", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "d3f7962173885725ccb18b26782408cddb325fb3b5606ee85281320d5fdbb539", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "3af24f6278a06b0a5191c16ae4b805925dcea49218504ba29eb579367e107493", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "ace740f801c317ed8b8b637fcea8f4778e4e25bd3c9ec663d8d57af5987f7a24", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "0fabc6c5a486b02123c639607d3a5a9e6782569e5a4d9f90821695c5b13598d3", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6388aedc70d6dc9916681c57f1a714cd96f8d9fa6a7cee9d1c93d86f1e49af9", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "571374f06f51bad35e07ace2580f3c4a50f94a55594e5abacba83ba17457f393", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "a5512d704e151b6a79b7b20cca2edaf744779180d7e9aea38bdeecdcff8dca47", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "ae934a26cadb13f31f3c8a3b1ddc16454a2fd6d469f67bb11d87e7da6f8aefe0", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "c3e4f3d773049621a6ea14819d83d842c4810d68ad22227148e12ce2c6bbd3f7", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "c6c704c9262392cde65f7f1329a709a6cb5548097a599c17c8c3da4d5ff8b972", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "7d75e5cb34cfb1d4758433882b051019ba0d50debde3d03047cbee8cb5254370", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "43a694b731f7e6687b970ee8df61f35ffde9d3080c54a3f8e9b713f16e4806eb", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "229aa02deac632b2c9c77b19c4f944dba48f410b49e4a5f863a9aa297286207d", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "1c3bdc90996b6c2371223eae8a832223177c4c1ba5738012469e8de58d47e86a", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "30514b8d1519533d5cb4572b0475ed835f93a460c0008da6d16b6b335b392d42", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "4c03de0cc756a784017a99ccd86f13ad56a1c0426b44f3094531550bfc708ed6", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "5b887064b8732c6923e2b4ceb45ab2720cd7eb6ddbf36434309e971963272b45", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "0b83e09710d637a41d6c3ea3ea68cf8cacc13ff8362c88f447f0dc7caee3c501", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "5acf62b8d783aedbfa0c94264bc7fe95c6e12f8b9d55000420187510ad90204d", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "0a8453c2401a9d8f1082088c69c9859eb94744860c232cc80e0374bb2ea9b774", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "a99b9afad6bdb208f0a89f82ddee18bb5ae37c049731d974daa9e5714a897395", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d6ecee4500516fe91b97f8ee9ada50cb532aa665ecd80027c6c964e0c40fb0f8", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "c65c40047fc71cf044ca80a127058d1aace561f49c705343ac4152d77195a211", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "e4ec0de8395b3e398259ad47151b8c2cd2aa1acf01a345fde8c4abf78eb0e262", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "9c1fe3a9a2d44d1ce9a0b156be51ef66846be4fd7390c8a4540c2341f02c0130", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "a1d2f9b2427946e98350821736d3cd49afa9d8cfc6bbaf632d8b77821451c1b4", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "e6b9aff0e41da0f91b8b23dce4e511c1a74fe6bef21bd39d880d51ebf85c5fd0", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "39e82214845b8f628efb6e7ec4c634233d853d97cfe68e9384014b3b9dad5d6e", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "3621933e7f29f00a493a55d991c58b95d26b2628647b7e7ea71efa3005b3199b", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "a333baf4f494eb22488b7eb84ae39919dff4089c5ff1169533d2f6b7769608a0", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "47495c240370b515daedeb7a3cfbe361c062f31d2d6f361007c141644e16d821", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "52a69c45e65e55c5c5e9819777be230e472b08bb0dca4e2bc54eee26093edfec", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "fea28a98cc7e1359bfd04812b30c7091cff9c5fa050e285a8af82792e016437b", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "e8ac719998ee269aab4da221f65ee7bfe6f25b9cf9c38bbe0fb72c83cc2d4207", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "52aa58da3d58fd3513cf1ededaa2d871f5de0ac5d5ecd5d1c0ea2883008f62b8", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "1f5aa626c3958cce8b7c1427297c0482280746f61a8fb33f1bc1067b430052be", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "a3e451c835ba41a01d12ad1c1ef1973917dbdeeec5c491686f147bedf3cdcee1", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "856a0317ac158d6b8a888a62f3d1c53a7e80ab08b5cafa698426fdf7a66433eb", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c9f5decc9ff9f70fd92ec2e9d9e6f289a41e5942659e6563e084cc3301b363ff", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "94c334ed4c2c11eb8ae67ff7170df31dcda9e88a08147762d196bb4bd12c0def", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "74463c930615bd733b2dfad9d166ea0438399b5cb5d1c1b9969f0835de844883", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "e1bc982f39f6b432a803ba15211a082e264c85b3be5ffad483750726581c8b43", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "3b457e5820065398bcf1987e4e5a93e87a3dc701100b8d1e02ce17f3745bb960", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "61b3b82ae6f8b169064ffa94bd258f6d08fcc4415dd2500bc44ec3b1316af6d4", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "84933b8742603f5e31430c442de2ecde79d36c5a6cf214518f4977e80de45aec", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "33b9d92b2d96a640b969076776da40d546c5feb7ba364b795d582d028be185f5", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "6a3c95b4b73d8ecf0b7f55f901947d6643f550abf7d2332db4d6e6fe2ea060d3", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "5e0eb1d8f5fa5bbc22dd2ba3256988e539a6e1354a2a13372ffcdbf7ad097752", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "2042b06230b2d0bd4bae80fd18516474cfdb6cbfce602da14f3ce693bd73c59a", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "b814fb6c6258d7598e88ebd0b997e4f52644a04f1f7d386364bc48200947052a", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "500a53997f82772ca58803c50122776046bf1162d1b816e1af357dff714f1363", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "195c988e06673a8be848797d63014a3ad4170aa65c2a95fe76b216776454231a", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "42db6637b48afb0651add301df1d71b03b3c41c1f83fc615b6eabf128d321a7d", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "c39f1f93575f96ce7078f2c7ce0f282c60c035a5214e9b544dee6bdf41d6ac62", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "028739fad461e0dcc104da8e74b1cce944195d4b6e1f281234171cf0fcb02b30", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "44aabfa3c0da70570b3af6868a65d518e00979b86f8f109b4e5dfa1ecbd30388", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "50d60ceaec2308584177f1ce2865a6297ef0029b66497150ae3b3ea8431ff703", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "3a180b562fb01ff3039ce6849e4f3250b1ccdc00296bff7f3bfc44c1e61ebcee", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "6da568572d6d34922cf9b2301f6e12057ec7f709ae135a1bdf39842e95680aae", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "1ebac0346de54a3873e92e5afab50cb1d52b6a797a47f471b970184028ae1bae", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "006ab8fe24d36f772c1cf1070c3218dcd4e6084a36b24543d9c93f2d9345d842", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "45a169074332d0f514da1f0ce7a69c2680c9460f33684e1d7c656493828dfb1d", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "ee397982b3d6a2f356139229f623a4c4fcc40600ebebfba918ab6ad683d2cbc4", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a5e6def7afc1f95c7449a1a82ad8c67a89f59d766a36402a7b48e7ad70df6a1c", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "395f04e3d269dc633251591e52ea6e2cb137610139c765aeb608bb7184874c2d", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "40f47b46c4db9359e9d45d7ecaca1f65f300b3ccea994abd90da149fbe159dc4", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "a731b9ef293b165f7104ea4e8f542bd782919bbb56740b64dd6ebe0e9d3bcf4d", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "378a94b26950da6fffa24a9fb3393438399aa299d354c0a84ba8c7495e59a098", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6d31ac702ea33397b9f81f2e6ffeedc12741cdcbfeda731602efb969027a7b40", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "c619216fc67e492e28dfcc5e65c8fd1ef3d5ef3a042a144f3aa92b96618a45b4", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d152853ef5883210aaa1124342871881b3955d18e4b835f00246cec1360abaa9", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "badb5e83bf523f4cc32fd3b82e573bfd8284cb43c84e1cc293fe5a2b8373ffc2", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a6253fd49486e6a48c12553894c75d07b4c7b95b7483bd76e84f06db22eaae71", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "73377c51e8c40c19f34d31697118fcc36d2c0dc208cc6dee11ff3cc16abce4fa", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "8d49694238b3af808f2be19c570e2bd3abbf994279c30c21bc8bbd9dd568dbf4", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "10f76ea34aee3fe045425c58817a2f5617beba0bd3da1e68821bbe04cb1cd877", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "1a5300890369bf9e7522c16fa4f8c21f66bcc12e048e5b1689bf1dbcc75c6491", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "a69f79abfe622808220953a58d8ca9821da814f8e0c23b81705e6a4cfaa45701", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "e8137bb502883a0360be574b6410ccd53a4c1e6cb2de9aed18f2fb5734b72f4a", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "03143f8443aafd51db8cc765fd1d3d2fd02e3b51634ec8009f316fbd3e9e499a", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "86a0b73c3dbcc251c76fda5f98dad33c9f0e05828e7adfb34d1e5a6c49861485", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "6edb938b465c739daa2421118f976aecfbf11b380f2f52b39b10a929700c6c6d", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "bd6f505457936e139ea796f162d39933873dc3423b20a352c8ce9f5688e50156", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "8da4944c2e0f03c11cb802d9c2cf05176a7786a9d6d6ae840b56d4ba305355a6", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "556a89efc9c79968f881bd6908fc5e0b0c2d0215797456c6da0b98a36cf50c09", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "4e2ed5900672180e7130b16e9d14ef873ae5380152170b41495d92aeb700064a", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "61bb24a28056a5c6a1c8507e30e759eb4b97963a666ba9775d32b715883f9d32", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "9525d327a0f944fef8842884010ec1fd963c11cb5a2ca63e830734e4c2f8fcc7", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "70be71c3a4627ffca00ffc80a7b144cda15ca58a755156c8b38fda92a1ea2f6f", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "2dcd5dfe1e3010bd8fe6bd25f3eaed4d2d1d919b06ff26acf97e8fe72d9e752d", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "01de3548ad5680d34bbd1d5de3d0c9ceca28b50d06003b95f2ca53875a49bc5e", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "dc35cb62e501f18f3f4fe8cbbe9c9f7a093bfd86466791d5af5b39c2eb68d66b", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "698d1e855c9033808d6cdb529669b8d271ade54c13b705872989b53fbc5e0f5b", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "c587feb46550d8870c0de9611638b05b1cf4bf5b1522065b7a9e2450f3baee89", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "4f1e5bb2d146f2797232c5a91b95964224c0a360bb67d8cf2a2a8680a9f17dc2", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "15f0277406dfec45910e6d463bd86a9fa0dd1a15d6a30146a3889e034068e838", +"T3B1_cs_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "3b44c20c4f83774b61589d2d019358ebb5ff90edc968401dc348f9efa54fa5ce", +"T3B1_cs_cardano-test_derivations.py::test_bad_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_cardano-test_derivations.py::test_ledger_available_always": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "48614ade29d43a321832c72828a4b7f5ad8135b3dbdd9e1cbed948475f77a960", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "cc07efb4947b149a63b3abbcf6cefd9a99a2a6de445f9bb7a2077b6a7b61f635", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "d71492bcba8caede3af5f6432f5a55f2ab0d9c317045027618cc58bd545db29c", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "0845ff6da4f59c54e2196b10d5051e363eb23c439e98a0286f92efb7d883bb08", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "9fdc11df1fdc279640f408b8a7724567c15da2225f968d0c5f2e570f68fe5d03", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "d08556f10ea0f5ef599dcf760e47ac14ea68af8bdacfc2bae4aeaaf40ccf2e5c", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "d556a82641b3ebda820980af18530031ebbb6ff1f93babfd40ae072af256f2f4", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "e673370efe3f9dc64631201e59c665f787009a64550867c1543f6046251d42ce", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "afee8f386ca679e3152d9de6998d9464a06a7a3756e2f475d296338bf4b5a906", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "c0bcded5cb1ee4a3c7ad7c063cec0bdf95bcc931ffe16c7d552494045d7780e8", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "5cee21708d542f88906697d7b36177a58b48b0e7e0234344328fd04b5807c2ed", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "23d5b2c9f0a4dc34502cdedc296c005085a27eba74f46570954045af96cddd6c", +"T3B1_cs_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "32bbec0f7656d26734363df7b037abfd0986e3b726085c30d09fc7bacfb468bf", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "814be6fc1275882215049275f65d41b5205add189c3abbb7eef70a7a5bcae108", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "be2037dad31a09bb6267ab970edd0a745336297995905f48e3505ed8be1669e1", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "8c8df348c2fa583dfbc7a199508f1b86ac47de4097206c78f8534b9aa12ab878", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "124e2b4001aab448e0dda087c2b65291d2ef75c1974f0ed5ebe7f2ed21dbfebd", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "dd655eeb058e1d0cb19292a534183c66c8f0a9768d3b7b8c82a31372cba1abdf", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "99fdcad64292363d221724a8ad9044f3ad50186b7de68009fd275236ee30ba5a", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "58993ecd340f0060b36148d168c1c8ae68e817019f2cf8ef955221bac5bfaa37", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "c870f29b382033121705b20d6dbd2d9aa74615ff125acf1c7bef95c7d88d0115", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "bc3440736f31df066ce217626a9c11af00f0ee8b3a2e9aed8571d598ea5baced", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "00c48370a66d94a854808c15d73c66b026acf10794538ea73284261c179a01ac", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "1713fc3f35208c51224e37c4a8fe2f31b42500abed2ff4a767a7608c0fcbdc42", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "84ed8cb06e7db1702deca60fdb9050f48daccb8f77ba1a113008e72282b70125", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "84ed8cb06e7db1702deca60fdb9050f48daccb8f77ba1a113008e72282b70125", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "f9cbe2f06dcf161d2bf2d864dbc6ca046b9c78e1a2a3a9c30a6006bc73edef09", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "11b62a9de0b162373d67b498bb881625a47633fd2af6e9f22a4ac06042a0a0d2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f677be583facd1e34379532dfe39e9809634c811d01cfe306dd3082852a8497f", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "c6750b0b28a5191b32ad6f682b43026c4fca49b22f15ce7a7e1c332e08e7d921", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "b788252e632e286f1e0eb9f25f440bdad7bff822b5fe7eb2c2a0acf257cdd0d4", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "d78b94ed08744ce63e4a9f117b7847713ec174b0acfa7866f935e4ac432817db", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "145cb271549259a3fdcff01f7ec4318a1d02290d6762c00668629a8b0a4ecf51", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "82080c3f901043e88429c129576f503e612e0aea0b191c43dea42aafa65ef43b", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "b788252e632e286f1e0eb9f25f440bdad7bff822b5fe7eb2c2a0acf257cdd0d4", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "b958b6c5a233fcfa2a04693351aba5b5a643a2e5a9f8be15fd7cdfec73f89c33", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "15ec44a6b327f6d36e39417526017e5d64b93946f161c125be57cce6d3dcdead", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "cbba55975ad9a7e7b3b0d2e3d582bb28d5df3aee92d8c5fec1ffcd0ef9941339", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "76d5790496f4b2dc7d5283445447a056587532345d6fb658148512a08aeabbc2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "3c3cf960e2aca8536d31c3cd45fa42783bea09d4946793124fc1fcf780e40301", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "a0390a272ab11bf8241b43c19074769a7cfc6c41bd10b0cbd3f593a99556646c", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "224fc8414f4760eb59da49a5647e75d2d5e174a6cecac1f075d02c8ad42122b8", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "bc98ba363b53d130e648b8060d5d2bc173e0cd49e559e3b3ce515898d5af69e9", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "27fb99a0ad9f4a379875d2b334a284d041283989604dc214d9a1782e0a4b10bc", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "211ecac73ac2ce69a50534e17630620a39871a8cd99016232b955d3792f79462", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "f37b8265a2e7a75bfb09a03ae41ad2a8c4b2c296e6098d3e09a8109151b208d8", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "fc206f1788340d163aebd7938cbad28d59c7db641dfebe055e45f4645e2fd007", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "2d73a42a1d51f1e37a47c9d00b068b6b1391f0d984ccd74243c2cf2493f424da", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "eab1eb75c7c3cc748301e3bbd7969f324f770ed711246eb974a3d23d15de8726", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "30bf85a73810868f5c97ed5ed277c67e94cf720de03cb6e596fedfce4cf24195", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "12e8ad78ae39bd192e43403aa835988c248cb37ef2d80ccc0b132cb2a8b04395", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "22ced1e261e563427d6f447bf4d0e58783fe6133d6d0a5ef7626f3c5944027c5", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "df8c258eb7dae8851a588d99c67ec72739560b2f89a254ef02ef50c59c7827d9", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "a1b370b3e33592fecd93bc7d997dc428f343bfa256d9474bbd6546a55f5e2593", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "27d8b898bedf722f46bc802e45e3632347969588862d91976223b5ee7ac5d34f", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "955dc242e93db3e95246016279fff706abb4675a37f1a0213f1765028f52ced2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "686eb7fbf0a4f28006c92b3057b62b8eb9de68b410ced91c6e7628bf4a125750", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8f6fe813d33f511f95833f2f9c6c3fd8b54e5564324db59ed2e459131b61d5ba", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "6fb7d90bd064291bf03a8bc3321f1d9af7d3cf6cdea2f4c7995c3e187772fa46", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "ce285291c4fe4bc85b21e0ec897ce906ef334c59d4ecf10a39027696bf145ffe", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "0dd1a5ab171ec590f2c9b8212ae25c14b7c874f86bbe229d3429e4ac57c4775a", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "fd1fd070eeb933a691e4fdb734fc5524ca78dc53c730a78d9c3fc29d99600f32", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "322431a19d7ae10b608051f4353100e6a98ca3dce11c063e99e0331e8bc8e824", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "0bf62d60cfba212bf3d4169a828c862a07d34c2ceb0e0da5d8ee8d84ba6dd8b6", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "e25d7d71648d638c1c311e92c3da446d125492248dce5f45da83c8e88bbc4652", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "cf4819c0bf37509b64c587e6e69d938ceaf717c01f7b1384461bfd7c8a81be5c", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "1c6f0967dae46487234a54a139e8be1685d12eab471afa16f6134c61a8dd4fbf", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "00e920a0adf7507576ccf1cf946da0e45f1ccc06e329bd0fc98c5fade1938ec1", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1f128db52b7463d7d2b0db5eeb98c703ce70b297256d9fe5d403ad883f8c7912", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "d026fd1e2c8ca9c80492a55764d9296e7689e47c6ad6ffb474669b54ab40bb3d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "7351417f44da89666c19b7ef8e6781c78b131a69c72292fd7ce289045f8e2ee9", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "f06053998dabb6b56d371b0dcfc72bd0ff2860bb5b4b9188ace88b66f6a386e4", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "f5cf02092762cace7339182b4e1c8348b30afa2a3f598fb03004e0e1e1c7cf4b", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "ceb1e2bcc35650084e46dee05b9777442e23cdbadcc0dbb2b59ce4cb24195727", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c0bb7886007e30fbf2285f550a6db60276e8c2d8daa6ff64b5476c1db24e92c4", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "ed02281e38cf7946af72fec2acf95358bdb48335823268e6b150fb79d1707239", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "cdb5fc9d1fdad77cc7cddb939cd456f68ea9a852d1aa0644fec414fb93004893", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "477caf4eb070fffc0740a578b55ae756909c0ca947abdca6934366661474517a", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "edcd19b971a6dd738fa844318dfbd7e522da0c17f687eb8f85307a688f09cd45", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "19d6e0961446efe014b0842cff44cdcd65c289eef425254b73fa152c467c6eed", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "3f92e2805da77ff85093fdeb037f0beb8edfbc5f57b280f849aa61070bfba874", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "32a1cf701c8c7f17deaf52e575fca1509b07e3579c81c714a173f7bffe3f4ee4", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "3fc9ff7a259b18fba6e6314b03ac4c291a2c010979b87c83a46bec0fdd33ad15", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "da54d529e08559a3c21b5ed2292994daefd64cfb36b30bc332a43cb453a91452", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "fb8bdacbfe3dd97bc7cedadd985f6b50148543d99d75acc6b979f4b6819c4170", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "3fd92bf5f7db193a3d5257baf09c36106534c20d54d50480f89dcf6f4ca880b2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5a19145c8f7f7d1dbdc34bcbaf6951b38f1949fced93af853e7370cd2487089f", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5a19145c8f7f7d1dbdc34bcbaf6951b38f1949fced93af853e7370cd2487089f", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "968c85fc0bd3628bf4f28a07c7ba57f94efdb6d578df28ab6f9249c5974d525e", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "31c7bfd26263ecebb7d1f32bb5e14d1b8b0ae303d756f60588aa2ad2feeb1c57", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "530f2962f1b30c96b1748a78b35d07239b3c99c701efbc11bd3fea94621c2c5f", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "578c5ea24271de38b734fb5e68e6233f9ccc9c658b87bf6701fe3ed86209cc0d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "78509dd5a1194be1c3ffd3ba12c103025fb794e951baf80c08737354f3a5e48b", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "fe918bcf02427364a43ff3e0d4be11419ac433509abdd5e31810a32b70d7e408", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "950153b041776bb32a7e49afe35985e501fd7952fd701d43d90adf7bec855656", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3a0373b3d0a3de2973dc8eef0feacf23bcc17752174a27cb14325f785845b95a", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "15c84c4601f8b1d4a548e5d9257db30c35fcc80cefda189ac081b350370b50d2", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "dcdab1f7ebd3985ffbc13132f9e791bf20ec2fa88a5d12441a85240d15c40962", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "f84db7101212a927cc700e24c2d2b0a71db5f80679f465c0293af8a18b00f130", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "3e43bd4e5b39c7fb8bd592ac06dc6057c0457ea6ed244a2e1009ba7e85e1a27d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "814be6fc1275882215049275f65d41b5205add189c3abbb7eef70a7a5bcae108", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "58993ecd340f0060b36148d168c1c8ae68e817019f2cf8ef955221bac5bfaa37", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "ac098ce52f717f2a7b8a8c2073a7443851a01f0289784f274394ed6ce98d66a0", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "acce4e5d7eaac353bdfd30cacdd5a32759ca0fc48638bd9e6fe88d1d740a648b", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cfd1bb6ed828b68ae6842b623935cc290cf95e6bdb0ee09838597a5f3b23146f", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "bad27ca55bde2bec6123efa6106f0c7267b7b32d012095055d9b08e241a54c2d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "4c730bed2201c1844e0f5134041230cab6743011df59118512b2d5fcb44e6f90", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "bc46ecdc57b4a8e547d111ba18a5eba600fa53e04fa4cdec54f328ad9a35cfb7", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "6b48b7fcb481f4d6a025197fb8e112b2f2491621dd7f9c47568d7033e5f11d49", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "516f6bf357fb515391abc4aaaa652db2850e3d9bf12acbf593589ed9a8cec316", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "21d0f07b012832fcb672b39dc9868b03752911167e0b8ccb608b7a05ff20888c", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "bc46ecdc57b4a8e547d111ba18a5eba600fa53e04fa4cdec54f328ad9a35cfb7", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "02b6c671768f92c511f9d924e87fc2cb80caf8f32d672db44aff8735d31deab0", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "bbc5d386f0ec9eb9a18a8612f20c73639b51329ad0eef0023f142597e895e01f", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "dc9043956a32cf1b141f3c85be985b9518c3f82591f2fa63e3d55c9a7ce32815", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "a1d2e6e582b2041a9e886652e1d435f97e5476b0a53a28ef27517ebb320896c3", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "9b0a8ec675dd67bf545ef12abf1fbde55dfdc577ad2f3764cc8f042f0025a878", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "bcbeb1a5f0b009c5b336906931216ee44e32135b7a29cf893855608fa5784280", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "625c917c328cf70fc8669adc8f8654db7d1da36e3a89a82a0a7441e540f3e0e8", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "d1c9784695c859a03871ba45161ba95ccbbc22a8a4e51d0accdc45ed3e370d98", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "1497779a282d9c3c4ca8bebd6cf6c0212889d7f6abe2b5b0b628f146541693bd", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "04bc7ad64d6eb0acebb787ea8dd04894a90e0b87221feb1bb7c60692e3941667", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1c6634811d177e8f37fa766828dc401364c490763a6727c63c223fefbf7b0503", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "7800a8dde98837f88e91b45dd5197344f04e565133e2f3016dfb21d69c7fa567", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "0ff2ea19940f5066258c781814ead30c1fb6257b7eeda92e9b66034789b5bae5", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9c11dd2e1bb4bea56887cb7fff43a77fc2e2cff0b8a852f0be59c23fdd4f7afb", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "0f8406863df6571767d8185ef203fa4fa6ef005a7395545467f05dc1f2da3f36", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "01be3556d21ee46ceacda3ccb394f2fd3fc8b8700ceba35716e690f67d13a94d", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fa93004fe8ffd7a2a0d5a4df8a8ff0f07dabb732e9bf8faa4fa3cc6b3486f475", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "5e1c64d2ad7cbe0c598390e966a62b10fdafe94c7b86e601441a5a186b7c0600", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "6d495e433dadb35968f3d6ea95dd5ef7bb2ff4e1fb5b775c0803aaff650c17ea", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "36b9c61faf400bc9af12f5d67be7e36ef7e70c563367b697fdf806016ec349de", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "2dada77602f713126dbeb7dc0ae7046f5cd17419b61286bed21dd2b785cde831", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "8509d32ec955b7acb56efc999d836b89aec6445f22e0f8667dd367e9b12a4b24", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "4b2ae61575d0f153779d490a0416b9d0f77e5cc056b67377c679b6e8d1e4c135", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "4ab8fc35812f7b80e19fe2da71c5da479272e5d8b4fb656ab38b920a54cab578", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "1d4ac3bb9797f47c118c3106f6e1b219bc727930cb3b305b27b57941ef5e2bf1", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "1c1f01b2f945580c4a3de9569e34b8411d812f8a17e0a659182863d5ef9965fc", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "088dfa4015188a9915e5d688bb344edfde98fc7306c84bc62491cedbc459b0f6", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "3696f05ef3954b90166c3bf14ef1e730e038813127bcbf4c8509239b8304a214", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "d7d74ca27e3013d0ade665f1f899022b69d1c6710d888de6942256a27725b3f9", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "c9f15064fb08c809b318ebfa3bd56918942694f8f0eaf77344da7010fd3a74a9", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "35c883e4291d70ff5641f96e280ec503e1d18f7fc629a4f5af56731d324d6a3c", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "102e900340fea35a43c9352ed784cb279b54eeb7a6de3e5e1e0afbe315ab6756", +"T3B1_cs_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "e6169ba9c54e9a05443a9ae953795c5bd4d35915c55aef311ede9d7b405093a8", +"T3B1_cs_ethereum-test_definitions.py::test_builtin": "3a7ec3506208a4ccc5a84a336a3b3e5b06f7ce3f9a7e36de6c05cf3599e83739", +"T3B1_cs_ethereum-test_definitions.py::test_builtin_token": "f7ca2782e9f99a86ca6fcbae0751adc5a99ddda27554a4661521711c864fff1a", +"T3B1_cs_ethereum-test_definitions.py::test_chain_id_allowed": "96c71169792ab82d98a5dbcfa46a4654acebcd640ceaf5d6c9df056d4b362232", +"T3B1_cs_ethereum-test_definitions.py::test_chain_id_mismatch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_external_chain_token_mismatch": "aaea18a317bac5eff0c8a3610830ed833ce14ffdf39d71a66a8cfb7fdab73f18", +"T3B1_cs_ethereum-test_definitions.py::test_external_chain_token_ok": "b78ffc60df92b39efa76a98c7cf431f46f8e4ff72b0e5f5edaf02237d789a08a", +"T3B1_cs_ethereum-test_definitions.py::test_external_chain_without_token": "e6cd59d888de715267dfc9f8185c49f5785a362fa21129540ba4f8b4b5dc277f", +"T3B1_cs_ethereum-test_definitions.py::test_external_token": "28f91fee40d9ecbd9e5b746ac9f17ad74cabf8f28d62649edba1cd584d3173c9", +"T3B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "8198df7be54a494d3e101ef512a9b9732958a7475c5775826e7af68e03d4939c", +"T3B1_cs_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "53e08d57c0ecbf652932c78d0e838f08ca1285cadeff34043dda2bd4f69444c4", +"T3B1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "2a8cc2de174b96ddbd3c92672db96ed9ecd889adfb51321cc42a72491082e28d", +"T3B1_cs_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "18db98eae718f1fd15c3a7b6a1376ae2b5f02c7062ec2cb8215eb6aa7108ac6f", +"T3B1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_slip44_disallowed": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions.py::test_slip44_external": "2cfe6a12843602f13141ad99fc37460bc3e02e9517ad02ef9c835308a737d6b3", +"T3B1_cs_ethereum-test_definitions.py::test_slip44_external_disallowed": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_bad_prefix": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_bad_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_bad_type": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_malformed_protobuf": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_mangled_payload": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_mangled_signature": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_missing_signature": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_not_enough_signatures": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_outdated": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_short_message": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_trailing_garbage": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_definitions_bad.py::test_trimmed_proof": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress[ETC]": "642c50a256eec34e76516ee1e933c98948056c65e67ad506f2614d624a560aaa", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "71a72752cdb60e37b689c877a05e24205893d30283523e940df0e623411c19d3", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "3f7dcbfb63fb617805ca30af487289010b970797c05a1e3af2d047e34d16ea8b", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "b25fe387a891623fb5a44d46c03a3f559ecda7339e40650bb7e8ffcbf426178e", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "d2b660ac5957012c64415ae7c756f53bee533dc1b52f3e1f1bb147a8b1e1c680", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "1a8f477b7432ddbce91d1520522ac5d7c931c584a8708aa12225cfe579608a21", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "52efb8eea890ac4c3a1be9cb9f1f69fd0faf05da342f710a3ed38766c5614f6a", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "7172058b818be5b672de93875c340ce02a4c8b62af35eaf4fa1b8cc6aa3f6ac4", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "a60e9838f95c17f92f6a39e17741a8de8b7c3df4b256b4590ffbacc9787bd4da", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "e250a6403b941e53f8114cb74eba0158960605ab5b436f37b470d817fdf1d26d", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "27403410978a6a39607d4303be8c56bc41407a344adfaf03e694e4c2e634e87c", +"T3B1_cs_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "dc8d9c2f125341ea8b770fbe9d4fe1a214b6c666f8845e92015d073b026afe54", +"T3B1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_getpublickey.py::test_slip25_disallowed": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "529f49f205e1b3f0022a8db86ee0c1d1ab58114b9d0bdc8db5e0db69c77f7f55", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "02da0b692aef0e03dbf456fc2358275213485400c30617e71860efd59213b8cd", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "27b67d4c4769a67b64fbb89a350c83e6dabe214d1181228cf5c722ac55f63098", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "82cfed3e6d027621042263caada8e79e451565ef0b2f196a1136300a3bed957d", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "03c3daed16bb73c2c7f23ce589bd660d474a79cd61b84835d0f0f4b657a2c7cd", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "a262d2a97ae7e0aa03c3a25851cde50253e2403a567312d7664e5b4d6f93cfce", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "27b67d4c4769a67b64fbb89a350c83e6dabe214d1181228cf5c722ac55f63098", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "27b67d4c4769a67b64fbb89a350c83e6dabe214d1181228cf5c722ac55f63098", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "27b67d4c4769a67b64fbb89a350c83e6dabe214d1181228cf5c722ac55f63098", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "f16ff02a52a73e4037294361b285d1f1f21c562ecb2f0423ffd766e150bac4d0", +"T3B1_cs_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "c5ff15d4724d00429d5e5f2829253c7844bb74579d581005b6cc6d2cedc9cb32", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "f185cf0c047e67808ff5ec052c58b52415c98fd77bfda30568100b8093b27792", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "4241277dfa4c34aefd14261cce9a4c7f5e37cc69aecaec369c136ebda1a552ee", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "2ce072677c3ed85ae152ee1f3b9439bc4cb93df5962ee29e6da94df586bafa41", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5ed1a11e1f3208ff27b3465757643807d6f8dc5b318c559fca336427196d31d7", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "dda41659eac5295b817faaa354a14760d588dd55845a754c1a143fec084c3131", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "08b62ceec69d4984fb8c15949cdb4de4d0623225a994f9233c1841d60b92eb25", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "ac97a39b1476be39e59fd644b0851819d7dc75ca21041db0a75bba88d3cff3d3", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "115accc5151e46d066c2fdc82de40864b5e27bb873efeef247f69d3b150f8f95", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "ca64630fe7d90e16fc224c9d0b5902c62afe9be58ae563fbe477cfff174638a3", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "c4bfcd1908331d857a89e1206fd74ae093e349830cf592a287e406bae2a71f4d", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "3515d516c69b0ce6ce5c85af73e4f2dd60a5e6347b41dd6d119cc5cef42658f1", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "5bf43adc334e1bb0438c47ef96db7f82520093ab13f429f040599a6199f97835", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "cf89e800bb8dccd82547e3673645664fbc2116cc3709dddef10d10096b969fb7", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "7fb0dfa942957a6e6f3dbf7485c3b055cbf6d5ebfb7a43b32fb8b33c6c77ae56", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "5c16f228b4438995e15be12d3795a9da6928941be2ec95205ed919aa0bad3ce6", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "05b925efa210073cf41f6ad1e0d857235db5cc903d93d62870e8634699c2e949", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "65bddf4190edbfecbefccbc884faa1c21da472c46bb950ad5c4291464d568cb5", +"T3B1_cs_ethereum-test_sign_verify_message.py::test_verify_invalid": "c4bfcd1908331d857a89e1206fd74ae093e349830cf592a287e406bae2a71f4d", +"T3B1_cs_ethereum-test_signtx.py::test_data_streaming": "bffb80b4a37ac8970377f8bf33ae4512990cf89ff4182dc856daa2e54f6161d0", +"T3B1_cs_ethereum-test_signtx.py::test_sanity_checks": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_signtx.py::test_sanity_checks_eip1559": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-ETC]": "f68f65f24744cdad2fe61fe07db261d120d09e3c08c080fa1d8dfc35e33f9a55", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7a19dec8ca3e0d7b63b4d89e25f87cb7c0759ba57929a53523829ac5f7908fe3", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c29bc9316322d5955f5399d136667ed0c6073ae05492e8875692c75e2fa9fa92", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7a19dec8ca3e0d7b63b4d89e25f87cb7c0759ba57929a53523829ac5f7908fe3", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-Palm]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-Pirl]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-data_1]": "7d735b66b9b733594b277339bbe09be1bac72a45ef57e15f1e57b123a8401fd8", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "bcb0def3b00826be42839eae9353752b074460e4ea7ccd1f5edb04d1131b0542", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "d1f325ca2e584c05e8661536be838dc84939d32e65c0c08f155ab187a0e327eb", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "b0842c36c7c2c7ce6404a06bdfa88aa8829e9939e57797927e97c0a36759fa1a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-newcontract]": "da8d8cd60509a3a2c4227a020721e5ffb962e8a869055fa7b24830e4339ffecc", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "d38dc3e25408285b797a8365f14fccb7f79f28f742bb18e6d373c78e40116e82", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "f8c1356273c4f3b4bd5be87bbf74935aacc2c4de5cc62ce35c79834b7de8c301", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[False-wanchain]": "a884c9e86ae496f2ff89262c3fabf24113f8ed759bc2d5f4db538cef1388e390", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-ETC]": "71f542d52a7e8273e7f5db77ad5ec09db594823519a155f1aa14231031066533", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "1f35d44082179825cbc9d020563ee3ab4f162950a4e282e57dbad976655f7fbe", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "41f7c0d1aa1315b2f76e4bd21cfdbefdba5ca638151e56d14c2fb011fc743b0e", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "1f35d44082179825cbc9d020563ee3ab4f162950a4e282e57dbad976655f7fbe", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-Palm]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-Pirl]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-data_1]": "60f3db675f134312d0185ee768f8019ccbc34c894368d109d7f5bbed200aafae", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "323e048b93a07a91277b5b6fa9d642c8eb5efbb4d3427d9bce0f0d7e4fa3a05e", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "9d37e9878d384d77aaa0bc345cc60cb0045ab0161fde22f20ed2355e9c1d69f8", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "8cf00bb82aa7f6559b040d9caec82b37cfa73aec55710f905640e07015353dde", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-newcontract]": "da8d8cd60509a3a2c4227a020721e5ffb962e8a869055fa7b24830e4339ffecc", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "53e64f6a4d3a2e0b15899d6bfaa857e448c24ca71c33a62a04dad8006af89c5a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "131c2baa663dc4089aee8c85b71ab85153ce9172aa70fea78dfb5ee4f14d1dea", +"T3B1_cs_ethereum-test_signtx.py::test_signtx[True-wanchain]": "75d90fc0cfc18b2cd25162d00b946a48be611664b87501e104daf72a9619e7a3", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "10bc01af49681731143dec47687cc8426e4d684b83151de5072a1bdc34eafd25", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "c0a7353f39afb0bc45e040bfe85ffadd1f59179c1fa183beef657b105ad6fcd4", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "b5b7cf0fb6853a835e716b7a5e7c9a8b64fa9c926c4897836c663cc34dbce64c", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "cf1bc9cb6679479908769b5a73460fb208c3c38fb1bc834318d08d6e62b5ed35", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7203207d398285a05e5fb86cbfe8cc369c6171b24ff9c78faf7328c7fa2e7b62", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2ae1cb6297e0a25352f230ec237654e8599b764aceb2be61324030c685c5bb97", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "aa7313cc60983bc75e518d6a00e893f48e1131f795620568e02e405fffeb96ca", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "e1bd2aec3996ab65fa4d11e4439d1e7eb5702b5baa5ae50708cc65879a686bc3", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "6ea757e19ebc1103655170dacfc13854873eaa7fd4065cde587da3abd5a0546a", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "cf1bc9cb6679479908769b5a73460fb208c3c38fb1bc834318d08d6e62b5ed35", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "89844b3c22dd00b61928f0fe4f07d71e2977830a95fe576a35866ae09127b05e", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "d07e3720584745adb2f784c15725b29393e7238c95660318f00a946abdab8fbb", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "eb21e6b9728934efe2c2f9de96e29788d9cebb4d559067c22e4072fa1cef54a8", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "9a59afbaf4c7fdb908edb362089043295b1f58d26a571599ed4ed2db0b2a99e3", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "1ad6a996cd8d7069b28cb61771efbbe26634ab38439300e110f2c1d744735d61", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "daa1202981db31c00a091736bf7de6a5a4e3947bffe3127c242f401819fb296c", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "89844b3c22dd00b61928f0fe4f07d71e2977830a95fe576a35866ae09127b05e", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "7095cfc2848969821dac2934bf52231039f46caebcbf5b9a69c3044ad7390dcd", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "7095cfc2848969821dac2934bf52231039f46caebcbf5b9a69c3044ad7390dcd", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_fee_info": "b5dd318de60f5945f3fbc4e900530dd4899a72361323b1cbf57209e42fe66f63", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "181aaa3b397527f11866489ce05c9d084fac600ad7e53fe02a3552e57436505b", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4ba4c7fe165c4d02e910e7529bc4ca61de71a04370a9b545ff3b8a6f1a61a622", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "266b17669864cdbd75e89d6500bd316553660561512ef46fd95ced55fcb30eb4", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "d4a077f2622c7b209d9fb6ed0d06ac02ca7275c3906a0a8ffc5f5d72cf8eb380", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "d71b58334be06578438d0de2edd39543d15e9f4260b1bb0008f74f9b44694ffc", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "ad261c896f1156bb8539b331369feb371177940772b7e15ac4b521f49577be34", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "40ea5e051259d69d3e5f99711b91db3d6b5b16d9c5e5426f72012293214363c3", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "e0e13de243fa9647a3ab9702adb01c1e4b96fa39246da00d6c22e3348b00c6f5", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e13889b6af7d12b08bc40cb7bdc101066a8c32bd0cfbd94d9ad69d7381991fe9", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "5174923e32973121e0229c44cd2aaa1a5ae3c1a3daafa68cae325297bb55e220", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "4b2489245e628d5e6aa5c185b5dfc97541413c7f7c2bc9e2ecbd4c5d9d0cb979", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8392d302a6d412125b6c5c68367c9e312ee1ddaea2508a039848584c8c9515c4", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "4a1a76cd8782166bbf421152f55bac6c141ba8b6a991e244a0c70c03791189a1", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "e14dc398b92277a93a19e2541f994c72022bc1e634346c7bd27d921f8271dec7", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "e14dc398b92277a93a19e2541f994c72022bc1e634346c7bd27d921f8271dec7", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "69d92b51b7dcfb3f983d31daf33fa98630a3882bbf3229b5eb9a940dcfc16e40", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "69d92b51b7dcfb3f983d31daf33fa98630a3882bbf3229b5eb9a940dcfc16e40", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", +"T3B1_cs_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "10326a607b8fdfb1d8414c2e5136f32c3606cfbc9b70cd2a1b36beda11275e8c", +"T3B1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt": "07025404857730711a32d685fe43f7917d462dcfbad445ff8e6835d81f4eb7db", +"T3B1_cs_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt": "9efdfe86a04909c34a78c6a4596fe91af78b1ca98b2d35ff529df31aa31cbfe5", +"T3B1_cs_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_misc-test_msg_getecdhsessionkey.py::test_ecdh": "4f06c7256e004b48042f29bdabb45a09ec6a814c96a5006f3a0e80fe6e20a2cf", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[128]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[129]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[33]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[3]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[4]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[512]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[513]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[5]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[64]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[65]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[8]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[9]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_signidentity.py::test_sign": "dea51e62bd3d2da816a025922bf2a0d54d54e65edca7f96ab302267a4194d210", +"T3B1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "40279469a04944d3c97d96e90928be6d8016767bc9c91c7fb235d090649772ba", +"T3B1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "646b6279147210c9d472bef315adbb42474a38be0b3f86960222f599c7d4b63a", +"T3B1_cs_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "a7b6ee29899bad671527846f1b1befcc2437e53236bbc6a73ed7a11264fa24b7", +"T3B1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1f77ccfdec43bdf6b0d6af46976c52ef3aab8784f956480261d267dea0e3a03e", +"T3B1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "9a2fde70987b1c7bf331c6271f050639c8b8c281c1c2cecb4ebb94b4c9f23add", +"T3B1_cs_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "752241144d1bd89169d8f16a71ff107a20d1443dfaa2d8eef08004066b040d60", +"T3B1_cs_monero-test_getwatchkey.py::test_monero_getwatchkey": "6e378e70b28cfe034b8575d44b05184b2e00d88f46556304d895cc31a127a711", +"T3B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2381a75219196da5c6c71da8aef12fd68a7f110ba044aae1ae35ceef3caec33f", +"T3B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "b8897b0c63b9ae25f40b58957dca7a83b838812d7c885afa51a8792c94e4777e", +"T3B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "8672922b3e7ba801a5e583f353804c990d4cdacfa2ba01ae0df5f6ba62805c84", +"T3B1_cs_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T3B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "e2c49875a7118e15979f0f7eac813c22c14b44553abd9c1f01f3de94ce750752", +"T3B1_cs_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "74611857a640921cbb05741a852f573dd4e0353754328e8e376e93d660fbac90", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "b52e7a0a8af4788f135c177f73ff767c8abc517862372696f110fac26c0edac6", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0a89c9861dc4c11dfd0e79cb92126333ea98c97af53ab36d5f8e6538c05d3246", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "9c15e612b5cb9ead49d532e46b071d336081695936bafae9a3f641abe0d6c4f9", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dbe0157eabd191b9cb6dbc0d641f1125f98438fe2b172e7c6927b0d0cb355988", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "1605dd01345ef3e62bb20827383f3274e98cae0e50b8b1594027f6250f6af588", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "fb4c99d04ec350261c7fed1d940f24dcecc5e2ab7cd641810cc35406880a5fe1", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "6915b7b67c0eb13858ad731dc14ffca41e7af843b71253300589b82ad7997293", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "fb4c99d04ec350261c7fed1d940f24dcecc5e2ab7cd641810cc35406880a5fe1", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "6915b7b67c0eb13858ad731dc14ffca41e7af843b71253300589b82ad7997293", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "62fdd5f078f34b963cae3acda6b724d977a0de5aa3983449b8380431fd7f879c", +"T3B1_cs_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c3ab79ad41399637b6a82872952f840d656752b82fa1863080e5ef6df90c47b7", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "dc0dfe0e394b5afe43b7fea94856e7dc324e687d0901a4cd229b652f45521d4b", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort": "b52e7a0a8af4788f135c177f73ff767c8abc517862372696f110fac26c0edac6", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "7bcf2d382e165d0a9aa2683db1b6106851d572c590fcd7b022e5db99db937433", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "f9619044cb62669198a6f2843be1b94fb0be88f025dc0443590bb86fc4121d38", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "99245bbe920df25798b36262b33292c70d35f912c8186417611babe8940d87d5", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "fa9c4b9d32656420392dedf6701881aee8745af80478dc412767d220ca563e12", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "c5bec2198c420dd3d77c6e7278f190c0931edf50ed64ddb55c3bd6ffcc8a89ba", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "b71bbf49a6a58ca45cd798384a7bca4ea12591d2d0d116568304d037f514065d", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "8cbe146bf43da75c2fe737f0dcf838aabda71def5cb497ab63f0a7bd7c8f619e", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "fcaf55e99c14572b38ff55431d0d15c509e326bdb5589413ba85c0fde0c701b0", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9a27aa5ed1d0e48c2e959ba2e2457a7f39a7568614d19b760d4c320f93bbcf89", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "47238908e206e817e3afafab78808fb66f30c4f445a6fdedbab5b15132ea9cbe", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "3255c16dc281362a0278eb3a3e1d019ff165e728d22deceac9b7ef32a07d6586", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "104f0582f119012d8a6bd4c0e94cb6e33a384961cf1ba420c524b59706111dde", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "d39334278212eb34bffa27e813eebccab8908a207f263e6022028b30aa87e8fb", +"T3B1_cs_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f5c22f27ac4763b9b297f4bb38d6696f31a4afec5be882b161df0a31a81a328f", +"T3B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "8e3d881fee9ac46718dc23704e752d7c4b8e54b407bf5ed5b59e0d6cb34175cc", +"T3B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "e6c2d0308e60f9f6e513acf588f1115422d2c16148a3211092e6cf4f725324ae", +"T3B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "77a671dea4a9cf946ad46bd4e7a01ce4103e77e6e02ffd7328255e95981d0cde", +"T3B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "35766a17e9be0c8ed841ae35427224cd26bb922784933fdeecfb42bb85393acf", +"T3B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d52930a2db4d38ea38cfdad683abf5376881261e08b3824ea9bfb0c714a972f6", +"T3B1_cs_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "f0c0740e17a4fd05df84a7eec1678225c21e1bb0c3cabca7a2ceeb98792eb8be", +"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "dad50802915de6f0c59b24ec5d9b111c1094674fdb80f26847683d333e13a20f", +"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "01007597009a130457cdc28bde5af309c0caf57867524cd48f6a41954c292c57", +"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "c5af512bca98a5b29240db3bed0150fb4335174a0308c64c951c083a76b81897", +"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "6537e500a30132b156ca44ba634551075801fb7d16ea4c76a861dc979300a0e7", +"T3B1_cs_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "e8b1dd1ab01b58f5706f704311f12692b4093961032aa3d1bd4e9ddaa14b406c", +"T3B1_cs_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "25f56d53555c7055b1dbf580ac5ea4179fc40efc08ccda4d773bf99023d3e4bb", +"T3B1_cs_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "fb4150a9ef686dd18767d2a12a4140a7bec10510519789fd010d1b6c5ac8e244", +"T3B1_cs_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5a1c92174a8ce88f2a73c5ede6209873673ab4bcfdcadd7398d6d8e92a844d55", +"T3B1_cs_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "76b0638ea2096dbf61c965024164b9951e8f1d2de6890846998b1c87b39f3c0d", +"T3B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "3da40d4f2b11ba1fef85a1995197b8c3f342340b859b06c5c1c0b0676282df8f", +"T3B1_cs_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "86ed2ada8962ebe2d11ed69786dc17b1eb281e3796c41283f028f3d5340cdfa2", +"T3B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "8ccf16649aeac16d0845fd44fee2a1dbd2b223d367966ed15878478da43e5b92", +"T3B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "d737f4992a9b77b6f1e942ec780ac06eebc1d222622ab93071c90e7c0092d6ed", +"T3B1_cs_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "c0cbbe91fed1a92fd632ddc86618f0e30ef58d16e931990cc0735b47362ddc08", +"T3B1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "97baf57180b6b9af37581031ba8644d934a409afb43ccf264284cd39b16ed643", +"T3B1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "3ab50c86b937a4ebfef586353f08b860d4fadbd91561633212729a6f780faf0b", +"T3B1_cs_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "9539f7ed5f9c59a1fb0a4432d18ab8a4c7f638c4c98a8d4b7202a658d5a67268", +"T3B1_cs_ripple-test_get_address.py::test_ripple_get_address_other": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "64f8b1dd06f3625578407bb0762ec1d884d239fa41add8e2c8c4e729e1427461", +"T3B1_cs_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "efce1b2bc97194ecfb360e626e1b67c31973452f157fc6c9108ab4e1de64a401", +"T3B1_cs_solana-test_address.py::test_solana_get_address[parameters0-result0]": "2da058ddac1a68c2b3dd0d83f7985ec8677e2069cdd0993ee5e6717f91838499", +"T3B1_cs_solana-test_address.py::test_solana_get_address[parameters1-result1]": "c9581f1b317852be23082db74737c615bc9826a552ccd15fdb58d2e3253a894c", +"T3B1_cs_solana-test_address.py::test_solana_get_address[parameters2-result2]": "df62ff08c08567c7da909b819a816601e3bb813786d695a6413c38c906c85050", +"T3B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "e34121c97f8202b5be9705bfe3225d5a2bc8a8d49949d06f6565b1e4ba2ce0c5", +"T3B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "a4e117b3af0905b34431c15284430942a657e7e25abf203a4a430ff2286eec74", +"T3B1_cs_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "ad8bd78721f3f8ac8fb07651749b2b6488551d94a5a8f578207d447e5884b065", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "715f8f9479d74e2bf0b930a989a40304178fef818123d68ddbae197a1a710a2a", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "dcbba03df6cc2f5579d2f9b2709194a9d590135d7ecaa370d882b1aa0091f074", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "a8f075efce3dd9c0d5a69446a6b8b5e952dbd52e4ac554d47da31fe8c91745cc", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "7fe1a74aecbac68a30893f3b8335fedf2f86feefb86bd4dd49669ba7dcde56aa", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "a0cd5a8ca5896b925e054fa2d5b5bcb8bfcdce67606c36cd5c54ec7a6b03f6b3", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "c477236977bc543ed26c62190c9dbe5c2e897059aac7d1c349cde02f867387b4", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "8320d46c869c56c2db39a1f65ee9164212c4e66092bf93a74ab4a173060d67ca", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "b3d8d0bdbd4e3f5d9f9f21aab2334ec9460ab6ec55b22d8a745c3cea45999a0e", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "039b3b2426f42eae1effbe2181378c9aeef2ba11602f561a3f093d1e51b3ac19", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "88003847de789157fce6c28e01748948393196abd17da622b67639594d97f27f", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "22b75e8b4f96f98a3480f7de46161a5bc127b6b5b0d3480ca7664e792ac18522", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "2ad64911c2069660647a2c3541599849607c022c17cbed32661f0d0d399de572", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c3fccd0819b630b6aa8c194213100a22670709f5c83837bcad5d747bf31abb20", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "745692b0b395852f2cb42f71123bd69583b7df2c6467118226377986d51860e5", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "a738a89c2e2682bf238a9eb9747302029f69dd22718d71ab6348b0fd7aeaa016", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "394618f2dd97eef04851dccb226593a84e6bdcf51ccc84ea2dd6d53d3262bef8", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5e615ea8bfc188769724e3ca5c7d2b323984f7fb05b86349da777d2e9f42644b", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "9059399d5dd57efd8d41c429d4fa866b5f995c2ec96eb18ad955457139a9f9fc", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "666cfb2eb916466c1d0d872ac2f33d357335770d778ddae845d43393acc5498f", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "2621af1195f873ff604b461dabc06dbb7f48c1f7212011e981b85dd119ec4ec6", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "0d845255976d648e91f564bdacdd922c08af784a954826dac21685d02348277b", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "11ecc14553f25f9b1e80e579c8d9c0972295c0f99036e6e310d4ca60a5f4cdd3", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3d458f3cc78dc934666a9680fb0f27a45595a1ce5981e1ed3ad47d0abf05aeeb", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "b85d69dad89314c84b9f5719c9e6a5bdecf07b7bd81ac530c9969f3b007fa9d4", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "a03c46c355915b7da5778543f13a712257278664a5e9ff3f6ee9255a97da5db4", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "9d0fa88c83a048a8952cabac17e4e22051c6a023a4a223fee1b3f48e1be05766", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "20e1cccfd3833238dd5b9556b3690a9e076fd995a577462b3b07df0db886bac9", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "069ddf002a36141c34b1548d73114ba546deb3c1c5a77c0e22b2478578579b98", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "871a82c5d2cbc6b3f2ca5d349993d456ad2acedd4fbb436544adc5fa4a0450ae", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "9d10c7936588ab9da686b92626f4d4dbee6194d4ad35eecb430884ff9b03ef6b", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "5c216805e286ee7aee41e4aa616e9d4a2dd174ffd04bc4069a99578e0a027071", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "a39d9d81c1a31b737fc822ae3691c38c85a52d3f076e66beacbc004ae332acc7", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "f58c3ae5cb619aea102f3dc3c394ea2408e1580d4e60f6a0f8fffb5f88c04dae", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "922fb1e30f86c91605cd621f301bd21f7cc290a2ed9f775ec656bfd6cdaf096e", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "0f44bc536de01dcce51a61d8ad4e61123c3418cc7b170695f6c184fe694844d1", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "0f44bc536de01dcce51a61d8ad4e61123c3418cc7b170695f6c184fe694844d1", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "b1cce932c47c8e7d83cbe473d5db6332934dff6bc3ff513fd3ea695ac6787be3", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "2ce183b44781a95e47283b90fe5d44db4b78c2e18efd77298ca7c51d3f817a13", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f8ffa9b9d46eec2c867759b4cc91757f92657be07425135463c64865d2e9811b", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "d5741b2d59bf8ee395d33ca802b474976a00a3bf71a7f97085d3c171dcb77f2b", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "19eb9e18a6db621d873cd814375a612f1f6e65e5a2228195a41c5c5404dde098", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "cf89c97b9916bdbd4dcc7dcae65fc4f8f1bb6325a20ca585b7a7cd2ca23386ac", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "9a3f3d0b0dcff8f3162afd6502f4c538e1f593acb9a078ca4858e22d90d944a1", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "fadf078b110eb4b26ab766fd77662588243cc13e0b05bdc787f257dc3db4e9e3", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "8ad4ba42fd6870b890a0bed845773cb135019156bf4d8ec455cc0c12250a882b", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "cc0b421c70aac37dea8227d51e9993e4a99b5ff27ad5d333af579f7d732d96a2", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "f089c068485ceaa4b4be0b1e6ec80d04bad3f365b450b63f2543e831cd696966", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "b7c00de6a515cef26397b9bac2e2e82c3d39c1c1f9ae1ce7f47134b11f663fec", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "89c601bf1ec67fa6fa50198bb78ffd534cd26a4b3b39958deecdb307466e438c", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ab59d340da7b1916e04f12585d433cee1083c9d1d744b5a99530899e86c411e7", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[split]": "60078d2d07b5db51f5766f3b183af061771de5319af712259ac14edf93ed47d7", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "729049db358482875dd713439d6e3580fa3e6c7ef36ba5a6554df2af705a722a", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "d98dd224ee7814aaa29ef8dac203ee9a0958c98fe51a5c5137b09e9cff01a505", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "dca4bc8f3076b33315c0d22d1d22a059ed9cc5a1c8575c6f21172c1087f40130", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "b86f7491829284e459d53b08b2a8c817f92bcdb94c77ab56b679a3c43818cdc6", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "022c26e7b6f6bd02091dc50c2f507e5d87853b9165448dc4737f73c9545032c2", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "8cf352183715cc4ad8b7e49320af313f089f550bb5a9ffda45e421d162fac86c", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0d8fc275be4ba5dde7612efa97880681fe2d232ef255b2487da561f7dc5cd21e", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "ac1e2ba7820e36c0d94e69cbec4d92a564a7d188b291c5c7bfc3daea63189a16", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "2a36b6aa97d2e3b71264c1a86aaa59e72c70234a1e5bdee15990007129ad5ab7", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "6a28dc4d917d366ed5a2e2e1d47ddd410635555df23a036aa56d75cf6ad371a3", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "efcb77ca69a70d06326166e6aa6482e30e8c5c0895bc392bb96ec977af31e969", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "0779e28284ff65300a696998ef3dae0861aa330b18d93a980e11fb2f02866c3e", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0b7ba58da02d670754b1905a0857a41f876e26055453c11392fb518c72c020ed", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "9a856f11122c7521c3f54bd133356e845c137cb6cbc40e9e0032713a0ae4ad0c", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "289d6fdf0cc59942bce7472ae4363c66524bd24c6a6ce986a47a1842a9e1d355", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "f1116d57bd86f5a940a7f676347b3e4393a6e49de110fc088d79841a05ffba24", +"T3B1_cs_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "accb9527c4d42d2fde7e2e10753b4bcfd06a5bc3c1b633c0d62aa37659463b69", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters0-result0]": "0678aaccceb3a173d3c6be93343330415837599f41641cf7f290b9e36acd9a32", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters1-result1]": "4efa2a045f7ce12d485feee9e1cda38205c6733ff8aa3ae574e26ec689141901", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters2-result2]": "5525810f1a0155e0f6ea5fa36130d80c60c0b3f2a18bfed022f7cf5f93951da6", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters3-result3]": "c566a82b11a35c0da18c2f1cde69a595c268cf8bafd9937cbaa277450d915b97", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters4-result4]": "3a1a4ffb942047365f256ebbace86e850a81d261ce1448879fb0f2bc67ed4c29", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters5-result5]": "9ece8448dd110b72e0adca465359075498f5cd3e79531e86fe31eb1e8b46d9bb", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters6-result6]": "a864ed32fb724f2fb2cfccac9107d11e214b933db138bb22a606d598dddeb591", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters7-result7]": "bff1cffa0d4b57a43398a964e84c31486aa86f8ec66bbd3224cb24c78d379c5f", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters8-result8]": "6ac5e0e17dc11c4c97bf320040a2bbde8a0b309f47dc6c9e905461017ceb8ff7", +"T3B1_cs_stellar-test_stellar.py::test_get_address[parameters9-result9]": "35caeec34a315c23f230dcb8d47bce6f8a6ea541f2185466b4690ccc170057aa", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "fd82c2f9f04d48abc030e6b988626ab0a8905ee04d00aea40e71172ef1777fb9", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "112b84564cc7556dc9d4bf028dc68dc5d800e3e6e2f2caf60b839f694ccdf86a", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "3b68e363bbeb285d0c6d225744497d518a21f147ccd0095d46d56d75abb5cd53", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "41ec36d10c7656d9e60da4fb5acd39db31f130b47972453e389755a75296f8a4", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3358ab4b36fd549603adf9063d3c5cee8b4487214bbef60d35c9e95a4033e97c", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "aad8038fb7f43df51b969e423911959ac9ef4867dba5b2007b6fbbdd96f8a6a3", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "b71a6a21dc31f4c35b7946b8f2774801a84bd767b71a3645e78b738e6a3f3b79", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "532fcacecdded3f68c3003fe68181a164be5a36dda8f6eeef81e7c76bd33d37f", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "18331c9865465ccf660f8d0d593fa137487012cfb353c03a9abae9cf2247d272", +"T3B1_cs_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "550bccb039f05130debf9e63cd9d22d265fb8a7668b73a49fcbfa7678ecd9be9", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "de899b25701b7cdb70c7054a8fbf3fe9068dded677ad4b9e04be570cfcd74386", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "45ce48b3da95e081158171fb4258cfca7d395e92af96f181645e3f8ed35546c7", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "282c58a6cabb5e08553e59990272914a5740e0c3f0a245181eff60a0356bf46f", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "a3b877cd6bed7ba4f017b4bc80cedc3c740dae716da157a145b68e2db75e6be2", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "644c1afe167f2a81a6db31ea35b5d332e10bdc914def29b07e1f6908924b2cf9", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "ed067da09daee7bdf717943790e998cc0a4ac24a5defd2d4a8f35c14ebc9af94", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c1922ffdef4aad899f5c949f3ee96ab998861074a7b01f4f829413156f6a3334", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "74ec91d4894c49788894459c1110fcd894f11f5a53b84920666ab44f75ec2cae", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "70f09df2f3b21af3d76f987f6d5926a51397747e76a11d474c34f5f6133d1367", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ed56e5a0f44bc00cb0d21dbbc5a3be0c5421e90c4197d7c3a7e607a75c74059", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "123ef411fc9497c1add2114f9f5f8e12f7924c210791568d9872d8e9ee83233e", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "ae8a2592c376adf75dc45277773dd3c484c958d7b1d918f898365e7b1f701e9c", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "05ae1cb198171497c917753b558ebb968cf893a1b2877d567d90b498f94b870a", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "706e19edb517e7d72ab885072999e5bef137d94751207c26de0ce600153a3cd2", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "f84a32ce57fc7fbc92073fcaed043942230ab46c33d5854a4e826d4b4a2ea66f", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "4fe3f72abf5915da195f440c09a7a39c18d26c8e7c2f2de39c45f328b7ffbd27", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "c4a2484679d44908d2a62359633543b8043d001ef2eda40aa468d40293c7315d", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "0544d60b4e5041f3c7478d288218287a69b01fb9c036a4daf06f8253c59f16d1", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "77fbf7bbfb9ff9df249a2fd5454992e749646f9c149f63cb86c85737b4337cb0", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "60005435aed1e081cd1991ad697ed1d8462f3509163b35159d59e748031ff6b4", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[memo_hash]": "8c0f8c85286bffa9623752eefbdef4a925bc620d0db75dbe3a13e5d691d323bb", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[memo_id]": "f872905d7e7c07c6184c612107ab5d1401c264a0ed64db470dfcd1d2a29f5b2a", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[memo_return]": "ba9104699f5c586a63e1c550251e72d605d2e519ff093e832e466fa02d7149fa", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[memo_text]": "f97157fe42f0f0b36d622444085a07911bd1553f02f58dfd2658069df6c361b2", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "aac91c7521bdcaa38520da811768b59c0b559ef7d4ecd82aae311d2ed513760f", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "a1f95ffb31c57b10965b3a19e5c28b1942718a218dc820fbdc7356821c92c0d7", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "71b013533f03bf41ef8cd29a0a3cf186ae2b5657720f34bbc0c16afb15acf4fe", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6c17b1480f7a3a3b01baa76a389f9ab6ae16a28d6a78371f740ecabd5002327b", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "9d27c50bd99283fd50d2b4ae8a08f04c0adfb54859c67ce3de3dee5380fa9ca2", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "c4a2484679d44908d2a62359633543b8043d001ef2eda40aa468d40293c7315d", +"T3B1_cs_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "b85b55a292c31978bec9de1e0f129f5b0965b1cba16fbd5988ed5783c764a393", +"T3B1_cs_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", +"T3B1_cs_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", +"T3B1_cs_test_authenticate_device.py::test_authenticate_device[]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", +"T3B1_cs_test_authenticate_device.py::test_authenticate_device[hello world]": "90c1eeb137b1b2ce0850a99823abcd91fbf2221e031745fc2ff3f6da49612e26", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay": "53c8968222b2b86276c27469683da262e3a60aa62be93d97722e743da459b401", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "f2e301c9917e609ee3eed584ceab8cfd58ae3bfb5eeb008f0400ba8f09ae094d", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "215d3904f266386e4066ce790960f6d8f1ce16e7c652c2a9e3b1e98161e3d17f", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "65c707ea4a5d6d66ecaa214aefbde8af56cf475a7fc37169e5e55e1aac332d7c", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "c3d099095e5cf79a90bef36f4f9de8f9da03f6780f04bdf8693444f639c6685f", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d8baf46c5bdf6fb0f910e52bbd8786c0cfab9ad55e50f56e558308e34a66e31d", +"T3B1_cs_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "0864179bd15a723f6341e8d1add7573d3ab6b230a96f5b7a4da314df4a0bdc94", +"T3B1_cs_test_autolock.py::test_autolock_cancels_ui": "2841868a1a3cae2a8751fff55a0f93bd715c9e4d8b54213eca5b7edb8a4bc0ff", +"T3B1_cs_test_autolock.py::test_autolock_default_value": "70b3d4196b010c58155a44ab1ced24a8a8bcb0b9b60f9b859f8166a8b2d341d7", +"T3B1_cs_test_autolock.py::test_autolock_ignores_getaddress": "c0372af2a803b51dd1a0d9c325528a72834afeadd53a3a213c3612d61e5357de", +"T3B1_cs_test_autolock.py::test_autolock_ignores_initialize": "c0372af2a803b51dd1a0d9c325528a72834afeadd53a3a213c3612d61e5357de", +"T3B1_cs_test_basic.py::test_capabilities": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_basic.py::test_device_id_different": "f85b71f80fd1ba51eb9071035afe352e4ee38c8917f0a46ca0fc2f617befead4", +"T3B1_cs_test_basic.py::test_device_id_same": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_basic.py::test_features": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_basic.py::test_ping": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_busy_state.py::test_busy_expiry": "3ada1eb6b81ca1cba6132b590848152d4f95741a58e0175443a634043b6b95b4", +"T3B1_cs_test_busy_state.py::test_busy_state": "f15b79aff8e3ad4cb2ed1068928100d66c0ab8017251aeb30a7a980d50976cf3", +"T3B1_cs_test_cancel.py::test_cancel_message_via_cancel[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", +"T3B1_cs_test_cancel.py::test_cancel_message_via_cancel[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", +"T3B1_cs_test_cancel.py::test_cancel_message_via_initialize[message0]": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", +"T3B1_cs_test_cancel.py::test_cancel_message_via_initialize[message1]": "f7d03979547d086681cd006d6fa2015afd0819f3dea983587b734d79a8942757", +"T3B1_cs_test_cancel.py::test_cancel_on_paginated": "0561a2e23122e7ca49c00bd4f28c193f03126f8ee99292cb163ce48da8c1ce74", +"T3B1_cs_test_debuglink.py::test_softlock_instability": "cb2824dc80776b7461e16f3e482cb8f032780ed948c8659c23fe3ae0316e5aab", +"T3B1_cs_test_firmware_hash.py::test_firmware_hash_emu": "f7e29f0aa9167d32f7ae0f5475c29c0f0fd39ba665c8e4cf4638ff07447b3c25", +"T3B1_cs_test_firmware_hash.py::test_firmware_hash_hw": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_language.py::test_error_invalid_data_hash": "19a433acf4351dbce77ae09e1e7ca459fff8644639e6c8f8e809e87cab219ec2", +"T3B1_cs_test_language.py::test_error_invalid_data_length": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", +"T3B1_cs_test_language.py::test_error_invalid_header_magic": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", +"T3B1_cs_test_language.py::test_error_invalid_signature": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", +"T3B1_cs_test_language.py::test_error_too_long": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", +"T3B1_cs_test_language.py::test_error_version_mismatch": "06daf90440819fa7036ef7b7835ae4a470c2143580e48e153b6235b5261a0c3d", +"T3B1_cs_test_language.py::test_full_language_change[cs]": "2ec09180130d164d4738135e72f0950c761f3e02cc8fcbd952b5c999e4152c63", +"T3B1_cs_test_language.py::test_full_language_change[de]": "d53713d193ea657160d320befdf25431c4a9e6358fd43d9b814c8b7367009e01", +"T3B1_cs_test_language.py::test_full_language_change[en]": "1a14371860d2d9e3cda9c4b8a3ca3a1b9f45e2beb0eb1c26bfcc20c22c7cd25b", +"T3B1_cs_test_language.py::test_full_language_change[es]": "1db03f150dd5b88c7912d6afe88d7869ca6ab407e58c59535de56440aa9c05c6", +"T3B1_cs_test_language.py::test_full_language_change[fr]": "0263ccab0d6aefd19896c2d96a7f6f9a8871257392fcacc0c8fee6212ec340bf", +"T3B1_cs_test_language.py::test_header_trailing_data": "abbf6b257e8db657a83cc80f0fea86a46fadec4aafb7fbc3bf8a50123cd73635", +"T3B1_cs_test_language.py::test_language_is_removed_after_wipe": "940a6c3ce9d5d7a2193c0218ec44597e5e098d4a15693ade14a7fffb080f5aec", +"T3B1_cs_test_language.py::test_reject_update": "a5bc2e6015b97e3cfe40b400b8139f2e9890d391bca3f934497b05b3308618ed", +"T3B1_cs_test_language.py::test_silent_first_install[False-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", +"T3B1_cs_test_language.py::test_silent_first_install[None-False]": "b3cab98071e93668584ffa6c49b03fc9360d036878f347fa367a06599db9a3e2", +"T3B1_cs_test_language.py::test_silent_first_install[True-True]": "71c0650f147776644f127eab23e37b893f805d80941661c8dc5b3ed91a683d35", +"T3B1_cs_test_language.py::test_switch_from_english[None]": "16cc547992592bd2d0e4a43c9b36e1ba66abf0881a1a1cfa760bb8df06ba2716", +"T3B1_cs_test_language.py::test_switch_from_english[True]": "16cc547992592bd2d0e4a43c9b36e1ba66abf0881a1a1cfa760bb8df06ba2716", +"T3B1_cs_test_language.py::test_switch_from_english_not_silent": "fb2e18e513a44a58cd1e31fa563c3c9783d5ec0a692ffb0b6635b833e13d76d5", +"T3B1_cs_test_language.py::test_switch_language": "0c2bc505e2a70aa7f544d15a20c2cbec91ae70da6cc48fe6947ffa4de9bcebda", +"T3B1_cs_test_language.py::test_translations_renders_on_screen": "fd543359e3be7f3e65c8e1129df243572305b0a458997343524d7f79a553fe74", +"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "5de6420852be690f72776fee0efe5fffa2ae0580b08dfb858c7db6a13df741d1", +"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "5d53a9c7c519d48e92721bb2424a939e7f245ccca17e42518e7f02fb5032ece8", +"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "4cb5fb5f00faec18c34436b4d97ac7199bc10d619c772cc97bbdaa9aa84e69b7", +"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_msg_applysettings.py::test_apply_settings": "cba3e09f927e938060b69c4b85cd27cd2521c70c57a48abac8bd4ca99b79bf80", +"T3B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase": "6793e70a977dc5dcd8bd3064b2bb6045a236a87245940a9c9e2ae4e87324b2c1", +"T3B1_cs_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "0f1467141822cf93346a757aa1d3e0f71ea2ac68ff318c5b6b91bbb80e74464a", +"T3B1_cs_test_msg_applysettings.py::test_apply_settings_rotation": "fbe18469cd2dcc63a18ac3737d48360dc789996c427f0a67eab4e68e6e7cd983", +"T3B1_cs_test_msg_applysettings.py::test_experimental_features": "b2caba93756d3b5ae12f75174a7657c38bc6ec9435bfe74934d05b91ffcf16da", +"T3B1_cs_test_msg_applysettings.py::test_label_too_long": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_msg_applysettings.py::test_safety_checks": "c663fd32d9d6e18a0685cd69382e433f480c82933d5a84a3a53d8dee0d1d8f80", +"T3B1_cs_test_msg_backup_device.py::test_backup_bip39": "51ca4acfa41ee2b628f44379bf763d0cb349b97a268c39de1b3422d366dba05d", +"T3B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", +"T3B1_cs_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "3043098b4a0502e8970f0672f3bac8285cb5ff501f1462a0212c924739e77554", +"T3B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "731e984e8003468c56cef9ba8c5465587ad5cd8b870107e80ee65b785071cbfb", +"T3B1_cs_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "51a14b22367d3971f8528aef44fd0561e71ea2e31e2706eb48dabe15279863c2", +"T3B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "95115ba157f4bc100649ad6f32cd23a1c202685b57050df21f9880fe3f17ffec", +"T3B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "45958fd14a15ead3e7bc065f619b9c7e6bf7ccce6b8877dc1fe78ef76c0645ba", +"T3B1_cs_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "9bdf9f49f613a7cc622ff29045f1506622b11bb958bfc7d662e138054b95cd18", +"T3B1_cs_test_msg_backup_device.py::test_interrupt_backup_fails": "c21b710669bc26f0795e7d425c3365b6146e95da720075a32e941a92fc1e2ae5", +"T3B1_cs_test_msg_backup_device.py::test_no_backup_fails": "d35575bf9cb36b3628a5795f1e8c4407e8a5cd15a6a3e832aad6d9612e8a08ce", +"T3B1_cs_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "2d1ae52522952895deb80c526f031419d6f7b68b2ddbfe40c892bcb71660677d", +"T3B1_cs_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "904dd45fd64f9ff4d9e67a9669e0922f5a4cb5b60fed32f43ee5db8cfc7bcf0d", +"T3B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "1d56ba8d29b61fc3d41c197093da2fb465d1f0ff87622df2ceb599420f8cb78f", +"T3B1_cs_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "2c4c77fee16511b342ac372a3a04b182bcc7562ce79d41121475d082e464197d", +"T3B1_cs_test_msg_changepin_t2.py::test_change_failed": "b5e30116159560cbfc483bb0ea1f510b389220c9b7bd58cce1d00122e9123fb2", +"T3B1_cs_test_msg_changepin_t2.py::test_change_invalid_current": "74a4810f4378e57c0f5f84d1e794d89615351d2b55fb82c4f52e5f3ba1531bb8", +"T3B1_cs_test_msg_changepin_t2.py::test_change_pin": "9914d86b4674af0859beb58c0746e753301677f0c6bca9fee9f01cba12b8634f", +"T3B1_cs_test_msg_changepin_t2.py::test_remove_pin": "86c309b34815e37cdb9733d53d985d3615891c13b4b8da18ebc34c1a696953b3", +"T3B1_cs_test_msg_changepin_t2.py::test_set_failed": "77677a25860127358ec60b8ddb191b1a6adb3f88461434c34b36db34eb33139b", +"T3B1_cs_test_msg_changepin_t2.py::test_set_pin": "6c176b215c367b36f8f3c6b8f8fa9f0b8ef602e7f1b6b1cf5aa3313f8f45c38c", +"T3B1_cs_test_msg_loaddevice.py::test_load_device_1": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", +"T3B1_cs_test_msg_loaddevice.py::test_load_device_2": "ef0a0942c208e7f752da466dd5aa8015efd50aec4e230c0fcedea7997ade1992", +"T3B1_cs_test_msg_loaddevice.py::test_load_device_slip39_advanced": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", +"T3B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", +"T3B1_cs_test_msg_loaddevice.py::test_load_device_utf": "042e9f78a793631eb68047230ea8cf82a047623585291cb2107c46e754ec9bc3", +"T3B1_cs_test_msg_ping.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", +"T3B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "e103300a4329bada7713e61b73afa224f89e1cc936a76e27cf973928e2e742d6", +"T3B1_cs_test_msg_wipedevice.py::test_wipe_device": "f85b71f80fd1ba51eb9071035afe352e4ee38c8917f0a46ca0fc2f617befead4", +"T3B1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", +"T3B1_cs_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", +"T3B1_cs_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", +"T3B1_cs_test_passphrase_slip39_basic.py::test_2of5_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", +"T3B1_cs_test_passphrase_slip39_basic.py::test_3of6_passphrase": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", +"T3B1_cs_test_pin.py::test_correct_pin": "262caf6e2cf8a578ebc11b1f51cf9ebbd229e350c125b2afde1d50a8a4100aef", +"T3B1_cs_test_pin.py::test_exponential_backoff_t2": "680de5ae0221d6a30e6a185aacef57263c4bada89af2ab3bb651f460cbf3ee4f", +"T3B1_cs_test_pin.py::test_incorrect_pin_t2": "5967cdb6f83cac5ffe16d194375f540a5dbf3c5e1695ced906a61821a48e2619", +"T3B1_cs_test_pin.py::test_no_protection": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_protection_levels.py::test_apply_settings": "a5ebd3ca45cb18e0179a75880c842cc3b5957bc344cf630c33166f0d68bc50dc", +"T3B1_cs_test_protection_levels.py::test_change_pin_t2": "3d77956471e8d14c8ee0b0a74dc856e2085fa73f5140279ca62c49d1ef9e8481", +"T3B1_cs_test_protection_levels.py::test_get_address": "0247c433b44c61a9b1eacb1ce644d757d3e7c7b0248a130d17976824f0e951b1", +"T3B1_cs_test_protection_levels.py::test_get_entropy": "06690d3ffb20b0469dc077204a750c2928be9ce998401a536ada41f007049b01", +"T3B1_cs_test_protection_levels.py::test_get_public_key": "0247c433b44c61a9b1eacb1ce644d757d3e7c7b0248a130d17976824f0e951b1", +"T3B1_cs_test_protection_levels.py::test_initialize": "f8a8df62d5f2d38ae5942c2bc6a01e77d86459f08d353b0db8bde1d9e676445c", +"T3B1_cs_test_protection_levels.py::test_passphrase_cached": "0ca4df8cfc49be43d21350e06d1bbb218736cb534c6f18a4c93a157686197339", +"T3B1_cs_test_protection_levels.py::test_passphrase_reporting[False]": "0b27f57f2e1ccf62fde379a908d5cf1f96f19a59b609de1eaea883d330a180d9", +"T3B1_cs_test_protection_levels.py::test_passphrase_reporting[True]": "f1bd9c4b41adbb1c4706d6231e536a79aeaad65d250ff41d85dbbf3fda0b8269", +"T3B1_cs_test_protection_levels.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", +"T3B1_cs_test_protection_levels.py::test_sign_message": "395f8a98914cdafe94779f872dd849dcc1a89f7f49201a8505f4f149b41fa7be", +"T3B1_cs_test_protection_levels.py::test_signtx": "3ea5c68838b2c1968e883082e821b30cb48cb3492335ead107648afcdc8d4328", +"T3B1_cs_test_protection_levels.py::test_unlocked": "5d5cc20901d361b4957aea0e4c44a630db7ab8d7de0dfac4bc9058ecf26b6fee", +"T3B1_cs_test_protection_levels.py::test_verify_message_t2": "5139e2170feab7f553d3128ac0e03582c4d1417c6752408d1637595ae3bcc81f", +"T3B1_cs_test_protection_levels.py::test_wipe_device": "a22ffe67f254e33437a3465b85546622ac1c01430eb598065f0fca6e8d4fa530", +"T3B1_cs_test_repeated_backup.py::test_repeated_backup": "a0b6efe247c1aa3540b496c44a781f766b962bd0c6ff5da1d6dab212be510458", +"T3B1_cs_test_repeated_backup.py::test_repeated_backup_cancel": "7660e1cff4bbb8e82c9f622b7e97fec8d4cfca69fbcc3991588071add5f43d7b", +"T3B1_cs_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "be5676d3668901a2b9db08845bbc3e3c81b7c5cd3f04818444c78bd6d70b315a", +"T3B1_cs_test_repeated_backup.py::test_repeated_backup_upgrade_single": "1c091fef79888c1c4b7f03c7497c9a12d1267b0725a06eb5274466b0fe64877f", +"T3B1_cs_test_session.py::test_cannot_resume_ended_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_session.py::test_clear_session": "dd3da407a5324351fa6cf3a7e52b234671d47202c07867cc8fd00fefa9ed33be", +"T3B1_cs_test_session.py::test_derive_cardano_empty_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_session.py::test_derive_cardano_running_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_session.py::test_end_session": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_session.py::test_end_session_only_current": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_session.py::test_session_recycling": "89610ae224647ea7ff497c08f9afbb558569443f28324267bd68491d16832dfe", +"T3B1_cs_test_session_id_and_passphrase.py::test_cardano_passphrase": "974602473b247873b94d3f8f34471206405e049570191aeb07d33286cac477bf", +"T3B1_cs_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "74cc7c6cb730a7b633234583d8de84f4f353aef73d3e0d36b1a869567a461d6e", +"T3B1_cs_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "69eccc914475d642529a2788512e758a458f20870e4c0fd3d969126b1219cc0f", +"T3B1_cs_test_session_id_and_passphrase.py::test_multiple_passphrases": "a3257a98227e4262eab4c805d162ceeb4f1f5799fc0f9820381c4c5e6f144303", +"T3B1_cs_test_session_id_and_passphrase.py::test_multiple_sessions": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "68315d93ce2038f0a134f3f22a2f282023d89c0345fb07f0e21428e2512147cb", +"T3B1_cs_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "c58f460ce8f2e5d1e454a466052163e368ed12876f1f4a3b98e354923a2a3c72", +"T3B1_cs_test_session_id_and_passphrase.py::test_passphrase_length": "8242f513a4794628ae7b16e9705ec62150aee4c0aa16f879058b220242d88f70", +"T3B1_cs_test_session_id_and_passphrase.py::test_passphrase_missing": "0ca4df8cfc49be43d21350e06d1bbb218736cb534c6f18a4c93a157686197339", +"T3B1_cs_test_session_id_and_passphrase.py::test_passphrase_on_device": "dea5ef0a066a90ef7984c6c052563439ddf71aaf68043bb9420dd645d6fd38d5", +"T3B1_cs_test_session_id_and_passphrase.py::test_session_enable_passphrase": "adc0bf5aecc438d0ae6dc2cbda39f909619cde13ffa4a03df3e2fa067f78d740", +"T3B1_cs_test_session_id_and_passphrase.py::test_session_with_passphrase": "950fc623e5dfd8b1bd05ae782bf98736f8c492424b202e5e20ba2dd10f7252c7", +"T3B1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "5ac9b24f6a63a7ce8e93f05d23a9f1d57ab622ecc077b7810ad9ac1527045068", +"T3B1_cs_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "d14067c76d8475a1f91f5915bb941158933c5fd8321e166eaef67a94a13d05e9", +"T3B1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "005755afb62ef3a7f81b807ac3fc6bbe705cfa647e353abdc117193397a2b7ca", +"T3B1_cs_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "f5b8cbaffb2633e934732ae4f395e8e00785bc01895b051fdfa428c20ac69e11", +"T3B1_cs_tezos-test_getpublickey.py::test_tezos_get_public_key": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "a130896e2d615269ab3b3ffb620f665778ba06e379b032bbebaf9d1608940bc1", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "412383e152dce7c1610e7001163df398018fc6a60f1defaf8dcee447fa64403b", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "89af2d60b20e9f202ca313b3c127e5d9724ab8b0321c0e856e7b878fcf3111c4", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "800ff92736cb75042e8e01377bb28dd8db2284ddde8b8dd511835017394b262e", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "386908bfdddaa1a915db58a2f0cbcb0bc36d5082a133323f41fbcb3d67a8a2c0", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "7b99de05b05709e34d9c77d05fe9874dbe154d215a67352240e926c14d3777f4", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "6a0975462798c214097edf86885ba65763da9aae835c73caaaa02e72f99e1fa6", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "20d8ac005999cc3ab4e83fb1d76f22ed2f11fa1425de042e0d585856177a76f3", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "33f1b1c154c5d05e401ee54f9a177982508cd11a1c2d80227eee9382ebbd08ec", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "30b658f3ce4933d33f6a9509f8b8014a3fba931a43c66228258e0fdc74abd28e", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "3c30f6c96771c10cc4e41f3470c8ec1474520b476a385e208f3091c5cb3bbcd4", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5bd119121f055bd21ae44e92f0566fc1f21246c93c91476bca4ce1420e6858a8", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "974b8b99a9c8d5fa118010df29a27e262a855372a580e026c685f7ed983e936d", +"T3B1_cs_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "54c292192a21ef302d036abb8fa69bf2974e7ebc17b90cb11c5d4f22c7d33a8b", +"T3B1_cs_webauthn-test_msg_webauthn.py::test_add_remove": "b540eded02d2b6c94ded415dc1e40323d6420007eddcc4102d161ec0ad7d0cf7", +"T3B1_cs_webauthn-test_u2f_counter.py::test_u2f_counter": "6436e811b1391d0fd55f4b50a0f6bd8be3e3bbecfeee71df073ba8f2f22653e5", +"T3B1_cs_zcash-test_sign_tx.py::test_external_presigned": "7768da68844736c7b938b0da0f64386ce9b0b42f865e353c6ab9378ccce2e7e2", +"T3B1_cs_zcash-test_sign_tx.py::test_one_two": "f3e7769be4155a1e540dbfe99ac3e41dd1bdc65cb1f722238a8139643084d73d", +"T3B1_cs_zcash-test_sign_tx.py::test_refuse_replacement_tx": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", +"T3B1_cs_zcash-test_sign_tx.py::test_send_to_multisig": "e04fb9970e8468bbbdd0d7a4288a7379ff0d4763184d60841a97c27f5c08cb81", +"T3B1_cs_zcash-test_sign_tx.py::test_spend_multisig": "6d901b38a328228e56025e386c9157cec224f9b4c48bf5e87331e2ba91e181fd", +"T3B1_cs_zcash-test_sign_tx.py::test_spend_v4_input": "6c0ca5b901e81f13e88f5f85f6373d71f9d2c5dae49310300a27dd3ce8893802", +"T3B1_cs_zcash-test_sign_tx.py::test_spend_v5_input": "749e4ee822002e5b05aa61e9c8caeeaa7832c6bea7759be2dc40d6e16b46f93d", +"T3B1_cs_zcash-test_sign_tx.py::test_unified_address": "73b0495558bd8d51ebdf421531115169d03854fdf61aebecae6ee5a8d675873d", +"T3B1_cs_zcash-test_sign_tx.py::test_version_group_id_missing": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", +"T3B1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "6b678ee29ced030601f9edeb5153b3ac60ec115f9642ab90b9a9cda0814fd7c2", +"T3B1_de_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "b279b002d9d052800e17b572a5351a6f537399610b33a1332ecfa013573b4812", +"T3B1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "22f0722491d6b72a186d7364543eeaa82e37ee1112a8a3f0ea2e0348d944723c", +"T3B1_de_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "7a921731c83f4452bb3fea00a0d2a1c073317d95656de9cb6dfd6bd5529cbb6d", +"T3B1_de_binance-test_get_public_key.py::test_binance_get_public_key": "affdddb1440fae9bc4682200b0441705da9c745c3d7e555dbbaf34c203243609", +"T3B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "f0b4a97e43c0bb74655aa1cf6eb710d827a7f8d39f2ab86218ba32ea09d48fcd", +"T3B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8b1efe5b7f0a5eb1770b839f4500a6a4b4485f24a1905c0c12125b406f1bcd9d", +"T3B1_de_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "b6a188c3d0a601311980dc76fadaaf495b8f4e777393f7f159fc901601fd6d4e", +"T3B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "f0b4a97e43c0bb74655aa1cf6eb710d827a7f8d39f2ab86218ba32ea09d48fcd", +"T3B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "8b1efe5b7f0a5eb1770b839f4500a6a4b4485f24a1905c0c12125b406f1bcd9d", +"T3B1_de_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "b6a188c3d0a601311980dc76fadaaf495b8f4e777393f7f159fc901601fd6d4e", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "6515097ade04a1dfa0a913e105866d9e2d4750b32d48be71953c8842c25a6260", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_get_address": "f05be5e263e97d8ec91dc113e8289fda07acabb87acc7d5159a6ea53d74e7671", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "7d7657a854dcf7e21c0ecbb08087edca6f2eac142d526ff0c86ac3343c5072b7", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "3cc3122f8ebe8d3d19b709ff4524425d9cde56e79478a52419ba7a7b6ba06de7", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "42e6a3904ed7e3e9ff98e923ac3e6513f7f2de16f642145c8b137eea239a64ce", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "42e6a3904ed7e3e9ff98e923ac3e6513f7f2de16f642145c8b137eea239a64ce", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "a944e4159fa05caf2445f7745bf02e9135ac786a5638760104e47460b6a09f85", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "e7d320723a1aff20c75df42104a5dcba078c81c6476c86d456be847f95f5038e", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "e37748e9115109a9f39caa335f0dd201dd21cdf43b174625399dc55355bb28ec", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "a9d7c9cda1427257fd737ecf3761941fe8a8149e0495c4ea0885149305ef8adc", +"T3B1_de_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "a9d7c9cda1427257fd737ecf3761941fe8a8149e0495c4ea0885149305ef8adc", +"T3B1_de_bitcoin-test_bcash.py::test_attack_change_input": "95f6030355f72ec5f7d42a5bc82abf8f5b0f4f97d734239751589603a13da066", +"T3B1_de_bitcoin-test_bcash.py::test_send_bch_change": "b8c546f2049f905f23f7c4f23bb90187f15093a52951e10b292714404b7f46a5", +"T3B1_de_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bd5373a49deac614f556972783155e1b51cbdffd8d8ed96914321877eda5e438", +"T3B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_change": "e3d736b3cb94f866f6f5b42c1018e4819057304eb584938a0feda266c9d79c9c", +"T3B1_de_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "504d16f0a0deec470a75d5ad1f26825a1836dc37c645718541c5193879e92ada", +"T3B1_de_bitcoin-test_bcash.py::test_send_bch_nochange": "26cc326bfbfa51ec9877f4d891629f3eb828c2cc5005de4dfcee55ca69ce4ca2", +"T3B1_de_bitcoin-test_bcash.py::test_send_bch_oldaddr": "2821a13709078b73309c8b2d0d3759d28a891dd37931bff29c0ddeac72f5e147", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "0cdddd68b21be7de1a64cb4af29634369914009a3fd637c2d35c7db0cf3c1772", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "db34366d09df207e692f84de1fa4ab208d4838fac2d7b23f128836e261301ee4", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "ab141a1bcd2d44c7e59b468e6f35191e89c9666c6f3f49e120dbdb5f5692ea5b", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "2979708de50ae386cadee38ad1bdcb178c2ca2bf1efa65c866d2447a9f564296", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "6ca7dd1851e3bab224fa5a04f55825a95a812cc53578bcf6fb4d6a710ec51fab", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "8c20317fdf5091a6e3ab25ab828b8e7bd8f15223829dd1fe24f14837f7784c84", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "0fd3f4d8cf5499fc67c37188f039853a8842b568d858ee1436eaeed9bee5c863", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "8b25345b3a646001135e7e42e404bfcce650bc56f72ec3feee0e6a3fb7932e63", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "0f3e4711cb81f4d9047484299ae14529b554ca0ec05ee24f69b09425595651b1", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "be7b742c03a0e331634ddd321e358d1f01ddff356273989852d113655d640419", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "9279bff4c956cdf2797cf9cede9466628cf0bdd4c1131f4e927584ccdd325196", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "a26d0d4b87340544e888b892f9315c4921414cad35575850fbe1468c58ff7c0f", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "a2434dca3486fe2f0fd712e7bdf539847881f9fa5e8af7dcca44b7843a0f4e63", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "510fd3eb410035179a91ec4032ed9b08b4cfbf5665acbfa4e753aa3234af048c", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "ba9b8dae7c2318b4e10bf9c4a052d3a570715ac1d719add80da030dc9f8b9faa", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "98f9eca93f0defb2060d34bdb2a0443396df7777634112c022361e18e622762d", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "65359b1a632a01a6b1f4a10f2b1da8f6fdfc6b47ef53b1d73fc323265a7f830c", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "6618068129cf6814f7d3f1550128f24a42b05e0a097a89694f905222015f3e8b", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "0cdddd68b21be7de1a64cb4af29634369914009a3fd637c2d35c7db0cf3c1772", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "db34366d09df207e692f84de1fa4ab208d4838fac2d7b23f128836e261301ee4", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "ab141a1bcd2d44c7e59b468e6f35191e89c9666c6f3f49e120dbdb5f5692ea5b", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "2979708de50ae386cadee38ad1bdcb178c2ca2bf1efa65c866d2447a9f564296", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "6ca7dd1851e3bab224fa5a04f55825a95a812cc53578bcf6fb4d6a710ec51fab", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "8c20317fdf5091a6e3ab25ab828b8e7bd8f15223829dd1fe24f14837f7784c84", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "0fd3f4d8cf5499fc67c37188f039853a8842b568d858ee1436eaeed9bee5c863", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "8b25345b3a646001135e7e42e404bfcce650bc56f72ec3feee0e6a3fb7932e63", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "0f3e4711cb81f4d9047484299ae14529b554ca0ec05ee24f69b09425595651b1", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "be7b742c03a0e331634ddd321e358d1f01ddff356273989852d113655d640419", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "9279bff4c956cdf2797cf9cede9466628cf0bdd4c1131f4e927584ccdd325196", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "a26d0d4b87340544e888b892f9315c4921414cad35575850fbe1468c58ff7c0f", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "a2434dca3486fe2f0fd712e7bdf539847881f9fa5e8af7dcca44b7843a0f4e63", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "510fd3eb410035179a91ec4032ed9b08b4cfbf5665acbfa4e753aa3234af048c", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "ba9b8dae7c2318b4e10bf9c4a052d3a570715ac1d719add80da030dc9f8b9faa", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "98f9eca93f0defb2060d34bdb2a0443396df7777634112c022361e18e622762d", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "65359b1a632a01a6b1f4a10f2b1da8f6fdfc6b47ef53b1d73fc323265a7f830c", +"T3B1_de_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "6618068129cf6814f7d3f1550128f24a42b05e0a097a89694f905222015f3e8b", +"T3B1_de_bitcoin-test_firo.py::test_spend_lelantus": "adeea9b82cecc0daa980973df2501629a4331435ebbd279d40cd2b4a5be88ce2", +"T3B1_de_bitcoin-test_fujicoin.py::test_send_p2tr": "c44b103ff040bd6949ca3d71d5200850d167b25cb8b3640304d7dfdc71933940", +"T3B1_de_bitcoin-test_getaddress.py::test_address_mac": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_altcoin_address_mac": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_bch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_bch_multisig": "1ada18c18024204192c913c536ffe251a4cc34079c588984cea88e49dffd1485", +"T3B1_de_bitcoin-test_getaddress.py::test_btc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_crw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_elements": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_grs": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_invalid_path": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_ltc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_multisig": "eebc1771298cde4590f108743bfb2f354c8b41cc0b068131b450492cd172b6cd", +"T3B1_de_bitcoin-test_getaddress.py::test_multisig_missing[False]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_multisig_missing[True]": "9bb0c6f30f2bf7b7d927309520b7badab7ee067c586e78afa6fd47e2b3a9c57d", +"T3B1_de_bitcoin-test_getaddress.py::test_public_ckd": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_tbtc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_tgrs": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress.py::test_unknown_path": "54e6d1fe68239f408ab30834d4a4117b008fe9d1dac923e6b9b1520fa0555aa6", +"T3B1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit": "bcd9d0aacca0d4c3313d11ece750663716d1262b534ddd337c1140e8c6d6f953", +"T3B1_de_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "03e9e7fc8267db5a49b6d905acc6818ec3e032cc25d42712a7287ccc72f6d185", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "14555dc2ca10d1c5bfc922f5429645be9600e5b03c303555406655944f8441a5", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "28c6d4f6d5c66df3201b05a303ec5ab80cd1d45fed009ec2b6fec98078b7d382", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "db24b2ceac67bfb2d5b9d85a2de2e69194a9115ace590f3d4edc5bfa156edd93", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "49eab4ea767a39c6197d6447590c43615e6d01cf052ce02edfc9456b3bab11e6", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "ad775108cf09d0910054850217690985275e39564d06e07fcc5a3eddbabba0b7", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "bca5f5cb9e8878379508decd7184c7e5a7de9afaf6b5b8e24237501e05127839", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "3ad9827d5723fe798481aa9c30bfb7c0cde09f996969f469ff2835b4865241d2", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "4893aa26257ac281bb00f7afc51dfea50b4de124f549aacc8a4bd6fc2beb9889", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "a24f3ea4ad95e01baee50da3e9c85e38c59b383e2d672f57103266573969709e", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "39bec8c10cdba1555483ce43bbe209f5b512b9640d8540eff4983148b59ff8f8", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "60127f4937adda3714d9ca2c1933e581563ea0089207f001f867e69347c1c3fe", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "33b36cc3a38685f1cfa9ca66c39713b80f410519e369603b219f6c6782eef487", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "5ce60228df5ca9340ed2fd1a222ce4b9cb344f0852e264a231b907528d7e4754", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "235d0aaf3556ce63e9eb85d7a34b81fc9b44c3bb1aeb73571b5d1c0d56dbc2e7", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "ca8f4dda3d359214b585cb975346e6f284a83a22422be74ce114df9ce770dd38", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "867e80f9c6297258abc0259f2122e6c4b27e2ab9b6a8e7d279c3a681aefd18ae", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "deae1c57da04fff64c8415c3e22e631673197d3a30cff82666583c69b7c904ef", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "37a86b9562c1995a6330aa993f3777e00bb6dda36c238ca36d50912fb38baccc", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "4671f5d7621177c75b80d313c00753290a384b442ad149cf7bf1f2c784d05fcd", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_15": "afc3a30d968a00d38e64438a4a70fc33d8a713ad1765a22b4027513a2247ac0e", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_3": "3d89334415b693d478c2c7cbaa6c659781b73868e39ac9c8b1e9034c23566628", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "6fc6d2c8f8b291c5b1a09db39ab50774624d22eda07a572dea2225cc8cd57d55", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "6fc6d2c8f8b291c5b1a09db39ab50774624d22eda07a572dea2225cc8cd57d55", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "3272a58aae4ef76145de4f7292567fe597ca252fee28d5ff35b28a1dae1ebb63", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "f1682ba15faa9517403f9ade646a42a9564c751c592a5a1145dedff24cb650c8", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "011f392fa0744bf1c66407d3e67d22d7b9f53e05980efc5eab3780d96395c7d2", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e15bf6090210bbd6f156190b9f6587ed5ea328c230e9b05236dc7573c8ed5a92", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "cba0bc656061de3738de56b15b7c74b8fdac969ec42b6d42b1dc07cd7370815d", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "eebc00c67b5e41387de0a116b192ba6a6fa2c3d2579598875d3ff846dfdbbd52", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "1efc42a77a023b08a2157bee463d125bf23f4dc451f144aa88139ea075948eaf", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "572ae44446cdaee9595b22354cccce6b37380efce7d787dd8f2caabe8801ceed", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "11687c19d60f489642fd8f5ca460c42bb8327f3e4f592ef6909be5413f44dc68", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "44008d4893426ff7d3d48edd782db6dbd6ebafbb259723576fcf8b8d84e79feb", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "654ad54adcdd12f33072f882da9a7528ca2f7fc98554814480cdd3b8c9550567", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "1ba2f8eb5e9e197337d969a10b5f63cfd7129304234e369e15eacfcdfa5ac506", +"T3B1_de_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "fae19edb72c94ca9752cfbd5be123dc806b419d094b33e5a1ed62ac9cdffa6ac", +"T3B1_de_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "bc4847d0b25e1b36c274bb838416d0b9db7506e3854f0327020dffe89d770964", +"T3B1_de_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "db34366d09df207e692f84de1fa4ab208d4838fac2d7b23f128836e261301ee4", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "9c2a9ac21fc0e2f37d9491b0d50ee53eece8d53350ae44b70dc530b25c963613", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "23049f3da67137882534089e1b911258b6a2abd73c283f6d4ed0cd8163edb660", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "9c7624d562c9aa16363ef6a0e1c81b370e240ee087417e79a4c0dd98c12a2b80", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "bd98dccc3df20eafb959ccddb99541e942b13673d51c3e5dc9cfdf9c53245261", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "3f3a5af634477d2fbb9d3e38fc675a04e7217820fc2dec28ac4b7ede2e3c967e", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "8a2976c132b634bf9c0318430aba900d12609cdb7c29b52c3d2a5b540bf729c0", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "707f4b07d4766e3d7b7ddd1cbc3dfb4101c2a4101e7d50ea6245b3f6ad1a09d5", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "49f0a6ccc943317585c3fc3064a53327622186614b90c7e1517c8352ba53548c", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "9279bff4c956cdf2797cf9cede9466628cf0bdd4c1131f4e927584ccdd325196", +"T3B1_de_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "1101fe4fa22ab769ba99561e3bea912c055a6a45cc945a75d54cfcbee3a21ae5", +"T3B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey.py::test_slip25_path": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_grs.py::test_legacy": "7f2f6ae3f7e9529fe4d6805bbf765f45633865c8d2136b871706adf3e9324612", +"T3B1_de_bitcoin-test_grs.py::test_legacy_change": "cb86c1cfa78f87df5064c8239bf87592d19152e5a360a77faf6f59193c0b1529", +"T3B1_de_bitcoin-test_grs.py::test_send_p2tr": "f403d453ff07f74bfe79f15336f14432e32d049580db4e083ee0115e49357d15", +"T3B1_de_bitcoin-test_grs.py::test_send_segwit_native": "ab412c282ae9849a693f82caa350edbded1c36f9402daecb268587ba84fd4b2d", +"T3B1_de_bitcoin-test_grs.py::test_send_segwit_native_change": "96d1477878e0af9f57f8161b311bad375f2af7017dafa32cf992721c72cff4ae", +"T3B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh": "a029b042887628476f816a534a264377c24ad0747c299d18aab69d2f648e73fd", +"T3B1_de_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "39e33a270f3d714d1d221df52e8d5a12b47fd2984a433d0abf8d7595311f5983", +"T3B1_de_bitcoin-test_komodo.py::test_one_one_fee_sapling": "8b425123058d3ceb1dfef9ca527351a89723dce66e4cfc4ff53cd5514a01a0fb", +"T3B1_de_bitcoin-test_komodo.py::test_one_one_rewards_claim": "7fb36fe675907a09ba9225f83a4dcfd4acdccb2702559955633ee0a9de955c22", +"T3B1_de_bitcoin-test_multisig.py::test_15_of_15": "5f594ac78c050f062fbe1217f92b8fd56fcdb4971bec37d14e9a5c3253c9eb3d", +"T3B1_de_bitcoin-test_multisig.py::test_2_of_3[False]": "c0f757dc1153b6a5bbd1a40c46de4c6f4471e791072e199f0c13e4afb663bc45", +"T3B1_de_bitcoin-test_multisig.py::test_2_of_3[True]": "c9c782f2f1fe57e8a2d19c7711725896edc9b0582764ffe1ee018e40f0b5309d", +"T3B1_de_bitcoin-test_multisig.py::test_attack_change_input": "a554bed414c9aca89b9556e1c021219700c3231ef52160297dc783bdedfffdd8", +"T3B1_de_bitcoin-test_multisig.py::test_missing_pubkey": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_multisig_change.py::test_external_external": "2c718c589032558a63bc199880f0cefed441acc4513f320e3a4524b6cbb36a93", +"T3B1_de_bitcoin-test_multisig_change.py::test_external_internal": "c2e599b35a239ffda4f2e63eb467034201fa759507892bbc991f2a5d7a0b40e9", +"T3B1_de_bitcoin-test_multisig_change.py::test_internal_external": "e65fb18b3bc4b6f9ce5986997c8d5bd65878cc388a13c4973621e1e10693c4f4", +"T3B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "322968121157865cda09b5af09d1556eb631b7e08eacfc16f9e2350f97144f1e", +"T3B1_de_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "68e5a45e979a0b68be4c595d9bcf04a54ee23e8d3f563cfcc64972f54a0651b5", +"T3B1_de_bitcoin-test_multisig_change.py::test_multisig_external_external": "b749e4a68293b3dae44bf1105e0ff74701a02bb8d2d2fb5aacc78b1103ad3eac", +"T3B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "ab9fe282fd835ce42bfed7b374207ee5f2f3ca9cfc79610d11e4bf559032a907", +"T3B1_de_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "599cc9ef6d2e3ded313a770709c3da3779c9d598aca2efad6e7848549ca9c60a", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9ba1f92c611098ad9f5ebf6d372bdb6ef279342d0466251d89ca73c99c3e407b", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "8d3273ff8db1dd138019a2b2597bc49aca9e2165ba0f56fb20062281cd5c8d14", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "a43329c45f85590778e2b0ba952cf3100c142ca988f230a2fffa9f277b242995", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "8bded7af390a71bfb91e7b9cd193e0111b5f5dbb83b094e9818b9ed4c6c4e9cd", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "cfa938fd344d6b3fd3ed189eea3941380229bea2fde543f1737624a34321f501", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "c41181b188b1906d9af7f23d2ffdfda01ff2519158417c51ce9520e07a9163f9", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "d267ce0b6cda1e3c72d34a1d3c200d80fb147798d1aca5e16732b3271a463f53", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "554f89c7e1c700245a339e976373f61f4937f4b1358b58c3514b9e86c5058e32", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "13e805364911e210a38df401087b4d5c41b8fc1fc0a6eab48502168d4ab43c27", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "e562edf0f431aab4adc28d4a48d9627b4a301ac3d6fce4e31015e9fe351c5232", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "e75e31835a15565baa156b172ed5b55c05b365a969b63f43f95fa0beb0904922", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "5046643d8d3c827200216126974b6dfc8f48a9f95640208f51cba57b7d0934c0", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "0ac1dceb2dbcbfa72ed75f4462ff07d8aade41f0d902a5820d9291e845445b31", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "6b275ea970bba95742ab971c8e2647cdaccf85914ba5b4dcbd88fb4d3b91654f", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "d094fcbf06cd0a6a8d6cb647a197a02596cc184f77a3c81b97f09a0068e79d83", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "d0bb9f8003ffbc6091cbf91c14fe2c60cf274e02976804117409d69f1a0de3c7", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "137dfc0bc8046a63cf844f7f44339673e3d3d98ed0aeb16a6e6ca0341619b64a", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "4f2424a9d0beb78ea9507610a936a5750fc18a79363f1ed76944b41aa79ca0b9", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "436eeb1edfffd22b3042f8075ee13d78a9bf333cdeb96f2abd2c594967f55a5e", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "de780403620c3d3ada367d78a0c943a6668d2e16d77466dff5fdf8e2e946c04a", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "d84d849b75fe52347f3800f3c105c22a3823a8841eeed51f3cac18c6739120b4", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "970cc4e093dd2bc909dcfb69543fdb4ee64d847ecd5855b70a7acc8431f856b9", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "6ebb1de72fad46818f37a30624179ac0689d50b3727a3579e9ef833b11209485", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "ef598d4253703b7e7eb9fd9b244f0f88b0c05b6693c806f5a94be38bbd875f7d", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "81d01218752afb42910775d903e260a6f9abc19378b8afd4c90d6fae1204c41d", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "173267f69fb36674c972fde0318e2c4312aab182bad2c5d4030654ab52841663", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "d15f1a07b7edf100bee97da12d4ee765633864427796ffa2cb570ab81f220991", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "9a746bdb575f59e49e3aae0c576095d21bbca55bb5f98366834c6dbe2a9bee05", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "46d05dc98c3d2a9853ad47fd96565119578cc93ec47ba0bb24f3500eab636d47", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "d09f9a22d21d01fb9493ce81f45849147ebbe111aa0260a8dd96e70dc5d8f4e9", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "2678cb264c4a57de351680f7d33d38437058db87f2a06d188c8391ca17ee27a5", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "eecbb3b996abbaaf0296c31505080c9a8db1ee4a0da7031f324e564f0d5ef9d1", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "d8e42558c27ee7bc44d1a27228daa1d90cb17b964aec6f4d9096cc4356133700", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "d4b711e5fee2182f15367619eecc06c3e38450eea3a84e65a6308333452163bb", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ccb7b2cb8ffbc6fb0f15ca461351b4d41611e53c6d2c6a24ee0675cfc5df5f9d", +"T3B1_de_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "b27cfafdb16886c2178ddfa5537bf0a80bdca7cf9956401861adf7a329fc8757", +"T3B1_de_bitcoin-test_op_return.py::test_nonzero_opreturn": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_op_return.py::test_opreturn": "edcf163019b3b1ede3b9f0fc6a5da47729e3eedb2b58de2deb6815b7e6942672", +"T3B1_de_bitcoin-test_op_return.py::test_opreturn_address": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_peercoin.py::test_timestamp_included": "230fd79318963f765b6af20289b93a58506e5fef36682da2040c3656745a2f0c", +"T3B1_de_bitcoin-test_peercoin.py::test_timestamp_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "dbe811a1adf3490b666455e170e1af41b8c926f460f6f1e5ddaa5e69e48aaa94", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "5a8f5b9d0f5aca531730e95c00c08b3593960ad4216583cc7ca7515d59adf2d7", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "5a8f5b9d0f5aca531730e95c00c08b3593960ad4216583cc7ca7515d59adf2d7", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[bcash]": "81bc5d94472fb241a82e2fd5a60b02502bc93cf177e33e9a78bc3c8bb529137f", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "25d71c0be4c5b0999ef3de54076001efd4b5138ec87e47f6b3ea73fddd323c4a", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "a1de270b9ee1750dd19b7b901e171b513baf39b698b3e7bd514b68734e4b52ba", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "29f531c428e05991417341d4a9305c81fb0b027e7cbdf33be23dac04782f8cc2", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "30fa1c09c4c69cd0d2f9671c91829c8ff62cb0e948ee8110069391be2e47cd91", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "953bd7c23e3826482489121a1a6ff161cf5acf89a2a2f791da235d1b93b14690", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "953bd7c23e3826482489121a1a6ff161cf5acf89a2a2f791da235d1b93b14690", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "5402ac0cf54849d4744aa08e62f38d550b68aba5442dc29cf9d00c603ed11aef", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "59ff24742e7b837a37dbb8e0b9f0df342e5715a9578986e6aff88f6782dc23b4", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "86662ade02ed182153f62205b8c7638477ac1b7358f5c5857a4bb8c14767696f", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "86662ade02ed182153f62205b8c7638477ac1b7358f5c5857a4bb8c14767696f", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "f05d8ec5ab9ff884329e23440e9fddc7fa0ce1464745cfd9938a25f22bf6ff27", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "5aa77f71f210239365ed0f2e5a587230b746877e88d679982e6d898c68c3f0bd", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "c2041ca55cf1bcf9e49e28cd0250b9722a4c043035a247c7a32ab7d6e7ef9081", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "c2041ca55cf1bcf9e49e28cd0250b9722a4c043035a247c7a32ab7d6e7ef9081", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "49b34418c4ea579e50700f22a5e79dd511a6d2592e54cf9a254b20a55ee7f62f", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "800f218b1d10f9cebcfc667bef8439be6d31450f4c2726b53c8f2a87b012f326", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "92d0d871af78b74b13563dc630a8b41c4c73655e0482b2bdff56f334188a9f8b", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8334e0fdf9916c6b7944ed151b0b6759f8d72b134e17022e75aa9766c7e06fc8", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "8d9250962030d1ce18997d4665c4d2ece5b9ee414ca704711501b28e1d34b765", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "c75979c5981df9245d1878fa312013dcd5612b53c930228c0a5c5acf891ea486", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "0318cae4067cd4a3faedd36972ecb9efa3b9c4784c29347b920828d27081e026", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "16063995c0ecf37f1004070936fdb7532ad51543510e9be0d1c8f3e7bf8ef346", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "50ee60f31032745dc76c50fd67bb531ae152016e16832316888f1c5760a068d1", +"T3B1_de_bitcoin-test_signmessage.py::test_signmessage_path_warning": "9bb95d579f8288c66eda148050a2cf54bb0fe43642d25387a4d72ca6d15ef95c", +"T3B1_de_bitcoin-test_signtx.py::test_attack_change_input_address": "000deaaf598808ca85fe879e3be192727bf6e62e58e052e6bac04bc496c774a0", +"T3B1_de_bitcoin-test_signtx.py::test_attack_change_outputs": "3615115817fdbd018f787f65718c3ab98f3edf9d46b7ed30b122ea109bc090df", +"T3B1_de_bitcoin-test_signtx.py::test_attack_modify_change_address": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", +"T3B1_de_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", +"T3B1_de_bitcoin-test_signtx.py::test_fee_high_hardfail": "6e729dc9be3b81b213d6dad563187d132021dc7a040a58b092eeb63084110d7c", +"T3B1_de_bitcoin-test_signtx.py::test_fee_high_warning": "85359b14d9ec5d8696550bc797dc9d0f259a04e6026724f3f58e004a916b50d3", +"T3B1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx.py::test_information": "72c468f4dd06e26000fe24c2186fe709d2c4a86b7257bdfb0d54a312ee8f5f5e", +"T3B1_de_bitcoin-test_signtx.py::test_information_cancel": "24e30bcd2788a364189f128e57b90c4c0d66be774ae743dbcde1bb7c55199ffc", +"T3B1_de_bitcoin-test_signtx.py::test_information_mixed": "188aace321422140aa500558fcbade1a6a3e9781e5d81044951aa9eceb3d0de1", +"T3B1_de_bitcoin-test_signtx.py::test_information_replacement": "dc8ef4c5e4cf2b7aa990c798b276b489cef0efc4d120256bcc90bc463d76e2d7", +"T3B1_de_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "7c53ae00277f68ab68fbea3d0a1a4cacb14f03c48c0c3dd00a8f5ad1005c5de2", +"T3B1_de_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "46795e50e184d1c76ac4279d04fd3ae8f2f169bfec05c7364bc1f3f8f9f72a64", +"T3B1_de_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "9d9bfbef5c7ad5f159ade9416edb2d7e866047f94590f63f7e8922257def4d62", +"T3B1_de_bitcoin-test_signtx.py::test_lock_time_blockheight": "a00bb6a5a13338eee12f54b57d14dc6d3f496d78aae37e104d97bb599c897fc3", +"T3B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "5816a0fa4d0a1b4f0d2a3471f2e87787cb2b847eabf313996754cd3efbedc168", +"T3B1_de_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "d983e4958186ff437d4c7c33cabd3410d3632d53a5faedbe17f08382013e731c", +"T3B1_de_bitcoin-test_signtx.py::test_lots_of_change": "11b80a45a507801dc64826bba471d831def4b2c29e468442eda5c644a6918104", +"T3B1_de_bitcoin-test_signtx.py::test_lots_of_inputs": "a16aaca68d7d3af423192df6f52c9521f32c677fc624a886014a589e3e7b2516", +"T3B1_de_bitcoin-test_signtx.py::test_lots_of_outputs": "11f306ed994b3058553f0acec9cf3aaf384ba6496ef36252f759f133dedcb44f", +"T3B1_de_bitcoin-test_signtx.py::test_not_enough_funds": "2727f1b20af9256eb9b6ce1d10ea62728a5a9d6b8c292f544d61bc91a41f87d8", +"T3B1_de_bitcoin-test_signtx.py::test_not_enough_vouts": "685bac936703f7df1bd55c4b32763eedd2f77f4b930e920c6ac99922ae73011a", +"T3B1_de_bitcoin-test_signtx.py::test_one_one_fee": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", +"T3B1_de_bitcoin-test_signtx.py::test_one_three_fee[False]": "c20248f6f986623cfef7340564e62157c47afa6b3e3d5c8a867ebf54be8cf0a4", +"T3B1_de_bitcoin-test_signtx.py::test_one_three_fee[True]": "0dcae4991efbff6fb9953ca87ce00ae587e003689f499f84fd4dd9d1f131d3fb", +"T3B1_de_bitcoin-test_signtx.py::test_one_two_fee": "81cb7b220c2ea7291e15a4ed711ee0536b1f5df6a4c35fe72b560eb9bc7c0ba3", +"T3B1_de_bitcoin-test_signtx.py::test_p2sh": "b607e39d58456671d3ebc5fe830e17c901aa77fe4c2aa9e3761c19c469c7aaae", +"T3B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T3B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T3B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T3B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T3B1_de_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2d41de35b109676b0b56a89cb6dca36475224615f486816af86e1b4b7c6cb9aa", +"T3B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_signtx.py::test_spend_coinbase": "9bc8f5bc8ef947f02f98127a87244e1499fb92ed6df5418f00c15d0e2fe28560", +"T3B1_de_bitcoin-test_signtx.py::test_testnet_big_amount": "040164683c69c721b5e98053be41f8a24e2d26e3195f936896f8dac8a40a2cc9", +"T3B1_de_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "bd72aa1004c5ce431dc96bd667fdf211694187e3a4e65f985dc53613432a5d12", +"T3B1_de_bitcoin-test_signtx.py::test_testnet_one_two_fee": "bef391aace7bc350652c4f17e4ae8f0795c262b42ac0918c3afca2a25ef7ebbd", +"T3B1_de_bitcoin-test_signtx.py::test_two_changes": "c3c89bbe716ddce1a52e1e442f6da66b7ea7655e0e18e4bf2a27bbbcfe43a3ef", +"T3B1_de_bitcoin-test_signtx.py::test_two_two": "9cb8e8e4a2ac358e76146b9d309a94c494bea9e3ccc0b1a51aeffe66ed1013a4", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "17f53d9b30494f599b5e3a64c0e6e67724360093b719f76ee69ecc9c25f901f8", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "9d94ca4052e1d34617e941b3731619570bd21e8773a2624929a9e785292a2c9c", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "8e28be5b97f6c05047d5b44f2701439da1542e2d9a93c33385404ca025b0cce8", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "23c3adaf209f9246c0107961038c37f4906aaf99417279991cad939c92d89e40", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "b9593da6b2d9fb2b0a87b4f9a70f99e09aca68ee4e254b6918fff37f5123a7bd", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "26c6e1b2cee63ce391fe822137059b2b09ac9e25b18ddc23ff315f7d6100365d", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "a072a264ea132ae1c801c5b70edd8958e58362949572c049ba0dc2cf917dd8e5", +"T3B1_de_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "d96a42e2a703adf8df4d16a0bee8736a18bd9caafb0812807a1342bc0e9b7f6e", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "9d3d6f74efe1d8e9ee80e5c0121dee99f59cc17d76ba19f6e47a050d8f8aef06", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "f70e993f45372a6cdfce34a8ba47565b7bad0379119978201f548a36d4446a34", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "63c725bdba12fc6cb6a75bd04edd830bf0f044a5ebdcb8fb2dfd6b1afa6b04c1", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "cbb249c8d930b390160dfab9a4f59622a100ac5bf5df44b48b9e81f825dd872d", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "62234a950e76e794a766e1088c25116a0c8d808f8d33f43f26607c17cd998d1a", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7a14ea7b566e186f626e80776b499fe14e4089ae26fd7fd6025b243a7057dd12", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "c7e225b7e25f2d028019d385bc36f190399d86d3635006e4e5e6b5e243a53b7f", +"T3B1_de_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "c8a3ee310e9afef86c4887c768e6e92273307a3f8fa6d45a459977a4e0b08044", +"T3B1_de_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "62ace675378d9c932bca90764e601d06139a657ebf2bbf0ba4e167640db1e0ee", +"T3B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "449e4bc9f703d13502e7fd91d753b7366af162ed7ae5626b0f8f366caf166de0", +"T3B1_de_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "7ef18f4fe1f5c5f4a16bbc9b1781840a9da5c4881d6b7d3da1e7ccc9c9d23a31", +"T3B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "24344bda508587abbdd96dcc10322433d5af1b3a3585647456ca4d614fe0718b", +"T3B1_de_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "4c14c059ea15ce8243bf0a4a27d7d758173966830529f60bd1eeb8a4b0cf39ca", +"T3B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "24344bda508587abbdd96dcc10322433d5af1b3a3585647456ca4d614fe0718b", +"T3B1_de_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "1455a9f8b8d2b27b4dc2d2297c9bb0b7746b6e92207dec1e8553f0c5889de9c8", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "fbedfb818206d67d1b621ac924d1bf72994b48192cbe52bee4f6b8bf0b596fe8", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "9e92ed8da57f14b16b322f5a0683036daaeef0f4c0eeb54b1201fe784eb2b3c1", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "61c78e731e69d72cf3c03f378a311981d606734a0021d8bf5ae4c6ad5ff0f0d6", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "f9923fc110cc72ff72905a51c06da6cfafe7ca486b2d44852570e39435727cea", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "987ac842d791532d69a40c05b7c8bf40b0ecdb92e7aec699ceea3bd7ac70624e", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "1cb22a4125d3a5c228c15ce1ccf5b4bfaf592b9c853e0ee266f9faa9a0a261ce", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "86ba6041ffd4b447c7642446e4a77039eebd9b8868e5a88eeab43f56d69f2767", +"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "d9d8b213b2c05162632a75ba5b72edee6e2890385070e28f086e703349d573de", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", +"T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1fdcc57e7bb3aeaa22ff93a3ad2287b179ab39c17e5e294b17c8e2d6358391bd", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "7d3656dce2f18eeb700ebd96852258b214971e2809283a35c30a06e1195463a1", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "4e0097f71f457b700158d57a04075a4534d657cc8584988e01a7ed0dbd64ef47", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "a930f2aadfd537ccea7b1c167cc36a64a2b7890d90e5f2dd7e64907213c74741", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "a930f2aadfd537ccea7b1c167cc36a64a2b7890d90e5f2dd7e64907213c74741", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "c945b406cc260a46333fd5d30264de83b52c3cd3adf5b36c9730529878e8542d", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "9f33332f39c3bde22e7190cd7a7f79a962566c3e8c9ec0ba27de79bffc7aa959", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "9f70bef2767cbf1de3102ea212ee4e6c09ba6cf86b397a7a8948a2e3485dde26", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "c945b406cc260a46333fd5d30264de83b52c3cd3adf5b36c9730529878e8542d", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "3fb283b3dbeef1ec7832e2e16998b5d0b78e40ac9dec808450caf0ad2612a05a", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "14b4e1cc7f8c5abf3e87049dc5188d62f226574912e100c82546a31853185b55", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "c571a6cf1c9e55e95d6b46f5c0088438ff3353ce0361aa8c64a13b3ec90e3860", +"T3B1_de_bitcoin-test_signtx_replacement.py::test_tx_meld": "56154aa7779489200f8486d2dec258db0a6fe10fc75e18404d341e1c98d06824", +"T3B1_de_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "a31b005a9abfe1c758d6846a2cf8fa9d3c7e4283da62d548d743eb7816ae3952", +"T3B1_de_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "55525cb4f608163140e5d0935ee526a3e37ce99713178d84ece9610e351d490e", +"T3B1_de_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5bb943081f18aad2a3af9f51da63df8434fbf86d072deffd94524a8a54b72e8d", +"T3B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "240f5e7a87054de7908ea874b296fab76614d53143a07528485ec8bd21844a1a", +"T3B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "c3564849e861cc11d1e7a7ce5426d490707051e1b9c215b5caca7caad1035441", +"T3B1_de_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "f29bade035606dece3c0493fbbe3240d25c820862efe239a785c248a53d38ab8", +"T3B1_de_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "150c8940b351409df45af26ad1e7c0fec4e3a0c38f04262e6582640c95681f0b", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "a5c8b15005c49a5d392dfaae3feac602029b78922c22ae92d894e3968657c419", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_both": "72ee5a50a69c1ade795502fe0d0da343a56967ee2b4eeb5c8add4e880c792045", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "630353a90073337570089caf8d0a3a332f98aafcd109abe674416f0d3b1dc288", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "c32d3baaab3605e4ffc5162f7dc3a049ea0ad9352718fcd116f6b5da0aba0251", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "f26d57a4642e71114bb6ccf712314e5b6abbd20c13f91dd5195c0fecf798e710", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "14c3284982aa4a17dfe634931e5c7f12bd79ab45b817b12c9f125b5133120e4c", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native": "a08c219b97cb40f10746fa1e22c9490ae468b104665fdf113f3be10b95317e46", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "df9805100286597f7e6f0ac63b9aa3d0b7d03803d54f0d7e53c4260be767f836", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "65f459017bf523e2e072f04d4f885f77a77e03b7710e228d80ad3b89662703ca", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "58501c6ba4af9663cb7c0a2fa34fa983893c3f82c3634af029c1a0986e68378a", +"T3B1_de_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "ebb6dd9b0ce1a22234c61e9e15c5a1876cafc4e948f7637aca644ad5a8932bbe", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_attack_script_type": "3714a20c30a414b7dfd5f1bfd1134821267c5011919db27ebfa3dd2f3b5e6ea9", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_send_mixed": "7fc274044e02d655ddc14c3584ec5bc991af2317bb7257b2d01a9a3890ecbad7", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "7f09d857dbb13690f2195d6d1526284b3e12219f3628c44625ddfeb189a9d493", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "1a929023ba5ef4593cbc4db8329d707203f8c29f7b5f6bcd97d37d5e8221e5e7", +"T3B1_de_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "7e9399fe119cfa0246244552e5751af64e4e0bb5624a40c5ba3206f6808c7731", +"T3B1_de_bitcoin-test_verifymessage.py::test_message_grs": "079405991d4a41c64e747d241c53cd877b9a713bac0f830639b628b47a2bac45", +"T3B1_de_bitcoin-test_verifymessage.py::test_message_long": "3f23a4abbfeac518c46d3bf984c639e483ea6cfb22184bef1617abbc3c29a7a5", +"T3B1_de_bitcoin-test_verifymessage.py::test_message_testnet": "9d8904b8bf95cd9d66d8beafece1fd54d8dc6e6d7d91178c99bc35e6202bb39e", +"T3B1_de_bitcoin-test_verifymessage.py::test_message_verify": "c7e0e90ecfb58cdc9e98f0781cc7303bc04f78765dfece92aa4fcdd83c97f7b6", +"T3B1_de_bitcoin-test_verifymessage.py::test_message_verify_bcash": "ae8ee76c20cc12cf477eb73f1b1a089be09373763474a99f7e2ee93024de6cee", +"T3B1_de_bitcoin-test_verifymessage.py::test_verify_bitcoind": "f685b8ed49d6fce061696ec5ecdfe07c3fd7a30e9d169a628075e30ddefbffec", +"T3B1_de_bitcoin-test_verifymessage.py::test_verify_utf": "496ae1e55b640b1846256f5373cb2b1e4265cbb5cc4588078fe17d2318bf05c0", +"T3B1_de_bitcoin-test_verifymessage_segwit.py::test_message_long": "e490b6d0a7859d07f18a1a5239d57bef6d5c2dedf01dea80098a4dd09f5174c5", +"T3B1_de_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "257fc4b478d087ed2728e41f095683751c7e56ba0072a546ec1418ba3d495085", +"T3B1_de_bitcoin-test_verifymessage_segwit.py::test_message_verify": "91bd30d54fc8fa9194e20dbcce58267560ca0cf0bbeedb3d7b6f29e5ce75c927", +"T3B1_de_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "8ea784f11b001a6ae02c0ffa6fac85f025a293992f58de0aa9de17ed00f7174f", +"T3B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "418215f919a4287d1318fef4d3264e0c8685cf4ef8122106ce6553c505a70232", +"T3B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "5175846c7d4468e575faf30992e9b5fa5f5aa18dcb3d23fe3f949ad4a135c743", +"T3B1_de_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ce8762d01111784f27a0d1b4caa5e19fbd663a56cc34fc5494b4a2b6c2a5cbdf", +"T3B1_de_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "db3c784afdf12012fd50d3a39e765dce8345a71e4b03d470e4923c8b1ce9eab6", +"T3B1_de_bitcoin-test_zcash.py::test_external_presigned": "b10849bd341489f6b484ed89b82139b2e753df1538854c466e7f67e4b46aaee0", +"T3B1_de_bitcoin-test_zcash.py::test_one_one_fee_sapling": "730297d022acaed2b7cd9df0e7e3521a997333738e4696e76329d24a5dd08480", +"T3B1_de_bitcoin-test_zcash.py::test_spend_old_versions": "7d5d76c0fed4407bf01af1590c8db1a9b89e602b531ab70930f9e4bc5e7d271e", +"T3B1_de_bitcoin-test_zcash.py::test_v3_not_supported": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_bitcoin-test_zcash.py::test_version_group_id_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "a55b6e7850f78227ebfc4ade739cd3c501e63d12216486e577222cc79214eb01", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "db9185058a8e73e67b6f7a6bfac4f4368db5ab4a60dca08d866ca7c8a8e575a8", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "f7716b74381d8ec784bc19277c00a98ab8476b90714696696f1c032cc51c7861", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "d37d474da3480be24f20ec9bcfda46b1626846503ad7c266c7eceb7ff1b339a6", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "9055dd7b306ae80775a340422d5e680f1ff02e7735d43cf61cde108c8bbf0bbd", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "88d93c582d8232afd07c5436faf33f31c1d8f9d112d96a98734e1f250a7a1223", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "49b33a3d3777cb8221fa8de4bf1e0ddaa2eec943a4caf050a9d23aa9a49f9a47", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "da56777cb68977ed9ea25e6e6ab1725b5d8cbc38d199222df1f76cca982e42b2", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "75b6a3c7218af0adebc874259a465aad62cca10499e1b3dec9a72c970fd31d7d", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "5848457f8481adebb6ae1a93c57fb5ca14ddbd3dbf8198ff9e860c4ba11e5190", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "5e185c70afec0bf0c53bf26a8801340b2ed29cbf64ccb29f59f9d33464e74569", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "bf44583bbbcccfb436a4ad42e09d069456c499391a5b8eed8b11322f7949584b", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "e75f5720615e33697125ff5956e8248a2ab7b97fde6818c039843095fc4bdd42", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "decacb1b5c7ef61dc9d445689fe74ce970177cbf5ff05e33ffae3d3fa2959508", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "556b3f23e4fe2dae0e77bf452ae8b7e80666caca2316f6dc1d5387fbd84735b9", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "a2efaba5c00f860f5bbba8c545c3fa1ed01feb31057d913d1fbab5b60a711438", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "e5ef1e9f7cf5cf392fae0cca4c479d7e458ef031295a290c523836504a76b946", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "2bf539ceeb5ed1c721dccf6d74537942b517ce21db6ccfd05fd151013634f1af", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "f3ef8ff5b8e6ea05b0a9ef956d0ea26f6144fe4d0d5768a7b993a1a84e8d5287", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9dc9f1ee44d67f52b750bc88c647c6eb6ac095a7344c8cc7aaf78f0d8aedd362", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "f32144eddd2b6eecaca057080b3eadd800be083deb02c871210fa963be94d9eb", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "3851dde657ebe31a27828e531718b04a6cd44d6c6dbd38ccbad4a73a78098b9c", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "8003df79cc5f8daefceba64c410db5fcf7c05c716461940dad4ced5d67f7f0d4", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "d35f1c670e08bd4c9585ad1dabe7733eba334bff6082b59701f266a1da36cbad", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "507c82f516ef15368479a0fb673b74be59f1bd896b3ab2090784a7cd31e0cae0", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "024c67af65eb7b788896414b21dc76692d008c10815b7dc62e021ff479e56d78", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "7c8807b244693f51cce06a350ddf1d903e0585656de542f4bdbac630bb8970c0", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "97e15f089060550a3602a21757f4aed728ef08cc4770abbf4f0ef8171e47ef6d", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "260a7a717f3fe3a7a83ef9f40ea950029c65c88143781978a3aafdd5064be424", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "5d2be5077edb89a5fea22133e9378d093a93277c9d6324f6106902487cbc3676", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "ac04a8ec6e61d130d5536c1137c3760d96b681b6aefbb7e324412c58dd189629", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "77427e1e241fdbfd27cefb04ea0cbd95d12fc4533780b388d885263d9098762a", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "dd6950bd93eb46f64d726e482b302187ee19fce77a7bdd2eed340f747f892e0d", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "cb118e86c33cce55370695713420331232ce8d6ee7fb07f3331872909440e9ef", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "8cab5b28da3dd109f5658ee8a9cad62bbb6c4fe0e2498e09c0457f33fa2761d7", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "e0fc33477358ecd4562343c15608a6ae4ce586018d10b6efe1d71e8003896a9b", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "a0621c9655289043412538c04cafad9659f3d3877da64d064826dde49cdfdc05", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "3140c515f1fdd091b93154ad75c9aae0ec3bf7ffae02be6988a8505a02cf97d8", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "198ff808cea21766233fa9bb0011f0813d8653b6b5a9a1d3ffb535babad5bab6", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "df752dd573e0d3cf4d7a507c41e6806bfa14e479b637360cfbe7c3b8c8374511", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "21f978512f65465183eef22d984e21becc6612e35df61048590be2b2a7e30f02", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "b4903a6252627146cdc74ae0e09e0f8be618cdf6d96cfc8018b3f4e339880b8c", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "9c5dfaab73c812fce85232cef9c369885e68374bb21b03f1fa0cbb262b87c3c5", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "94c9e48cf7c1bb45dc4d0b0cde486b10abcd51648861eea0274b66c1a443ce9c", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "e8f3d8b9d900f13bcfc99e7513381a793c2b15dc77d00f45abcb9c860de87493", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "2631ee630cc14b7df240a715d8087a66694e3e3dd0850a6a2584d89e70a89676", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "da36b10f7e23b075dfd714a0422834ab14190393891cda85f3e88271b2c7fe63", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "834878afb0df1c4e7442e5f675407dcb5b98c8a23eea1cf9a28512dddf4b3b1a", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "981fb5f68dee0109a032fd56af329bc937041f350f4b46c4ff3855ca17431150", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "4fbebd4f60f43729b46cc2a0416ae8381c5c53e3b0d0e2829a724db585fce95b", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "6bd6c1684e25e371cccd5255f37d6ecf5fadbbb66113f1f17661ae2cb890ca2e", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ffe2b1d9e809c212f76c5f78f12357133c7784f0fc8f3b95149d73e3fb155eb2", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "53d3f458a81657d7ccec81eac7a02759259f0396fa61268f962b224e19dad7c2", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "ad80974eb2753f6b2d0b2ec43d3d142ae8c18a3f8a3f1d7c465dfc0bb29c1194", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "cc1658265a1700de40bc47ee2d2d08fcf97c13565b5e2f28e81decaa44bd94e7", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "ebc04944a90023a242defd400a338ee602673631d140ba6b81201c9cf3dea0bd", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "9ede64518ab5fa026a7607d273867bc22af43d89014526a3acd4387e440a9d97", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "62f0718ec04f80526fa3199c4c18e779a77dcc8896abc3264cd896e44f9859f4", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "8378ac03173778226fe576bbd5e30fdabfe0b91a17b42fad881aee21d538fed3", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "2a8e61c451ef0575a7dcadfb5912557dcc1c079371eb0ab6c5cb4ff87f9f9aec", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "223ac056f114581005252340d7b3995f4abcfe673b10f931a6208d7e1a13fe0e", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "dc63eeea0e8629363085989c571abe63a033d414e42cc6b84099b3775a355b8c", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "1c5dd6086e3dc97863eae7698ea297c541c03b14eb06f5dd28b1b9dd9f779225", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "05ce713dea63631a5d16b3e090693784ef014c84a8b66117baf5b038a585594a", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "fdbba2de841f24cf10d276e2e39f8a75ae057021a2a4592b6c1599cd5497e3df", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "c0b645d8df800a89406ae1ea89ab170cb739678b06c9130edaf5b1376cf53374", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "2dd94098fd8aa0d49019b98749aa71286a4800a5a35008cfdc8838da7f9d9d92", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "30da0cf81507d20244062d06bbd66831fefef3537456206c49916967eb184910", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "567956197357d1007235cca895fdf44d809d4040e84e31c86d148ab3abe18816", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "8ca9d3f6477663ef6fff087265c4ac22bfc685d8a2d912a8f1643cc10575e0f4", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "7bb8ced6b002b0fd9a990b027eb9c1f5183380cc36359a8a584577d8cfcb6708", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6e8b3bd738f3c0efad30970442442ec38599660c141baabfcea149e029a6ec13", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "956d8d3a3197eff4b506ed685f712c00a176fd6fc7cdb4970b9c8e044de1ae8b", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d7927839a8c6543837e2c573feb0760a139af0e30031eee2958e1fecb45e039f", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "cd06b142382abc1f27645976192e81c13ec4cfaf74885309161320af0f335a8d", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "ac83f473fd6f61e3a10f73bf7536bf3fcd71b76c031d7c5b4ebb180ebdafc976", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "3845a640f1008f796cb06a4327046fc826e63eecef2a836d31b607f6f77afb07", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d3253cc61bba8c6d077f848004ef47068486fc28bd66c97a57c18f56859bb6a3", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "ecbd3a9eae199cf7cb4eeb4cefe97f2d637be91329aadd20557cc937d96924c5", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "43c77594f91a793d60e524a0a6d69f2872b2a42f267cfbd274e965db35203684", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "e870d0c0cf5d56e3cce973c0319fb7f48b6b95d7fc4402d80e64e58dc3017636", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "aa6b933b44210daf1277b34bf3b545c8dbb3f010b1dfe38d3a41402b192ab284", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "0ff26a5b8e3d2792641387617c76275e6b54f232eaa45193b2fe99077c442dae", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "8abe04cc70c705a7e53c154e70efc431e28d2d193009f01d20b1b549f3e78d27", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7b37ab10b94d9d3c5944b549919646bdd70c1584244f99f52fe7622e220aede8", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "a0d1c639a0af9d5a5f4d97c3af2378c1cedf0ba950456a941a9dcef785e95dee", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "9c77f6ef939581a6e0ecf521b920127da495ba1be6ff0fa345cfd8f2a5c3f089", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "143147c69b90a3bb11122e32487542c4640d850b8e5f73bddaa56b7bada625a9", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "18d9ee4efd73d95e03ba3111fa7d86ce2cd73ef1a76764c43603d7c13700dd7b", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "f3ffc4a632f3b5ebce7708cc3bbdbaebfd5291086ff61d9bfc7bff406373b046", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "63adea0570f2aceeb33b8167a3ce50399084698ce9b003241fe3755d9dd3ec26", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "12b22dc47c4f1d41b877154073aa5810e085ed7cc412a5f06c4b66c794ed13cb", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "fefa0a79d2263680c44c39627ee51abbed6a5a948bfc52efe86ea6545381e105", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "650aa7880bb3e646a4af70f48b98051f802e9186654ac16cf4e74d2f211362af", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "6f6ea6325e11668f3d66066ebd6a9eb281988daccdc58e39aafa899ac3d69a52", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4183deef534c63d86586c1cd1d385b23486b74b05c05252949b1c5720125a93e", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "cc3f5e08f3614f45ba58f626b7c3d14cae50ca816224191ff732209c6289416e", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "81a6f194bc4bd26793ba8377069b9ed5566edeb2b2f1157629caf381e85dba72", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "27fd355aba4c87c1a57c0c9f2b48049c1a5bc1d126f8c38a658f06c604081fa4", +"T3B1_de_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "61f88bd6967903d3147a72e9fc824b0c396f3b187c8bcb61d878efe565a25481", +"T3B1_de_cardano-test_derivations.py::test_bad_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_cardano-test_derivations.py::test_ledger_available_always": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "47cac621e1449ebf14fffd03cf1e3e02545594df112ebc6e8674f90c98c6d4b0", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0412105001bbd6e643ade3567afdd62dc8dd4c7c2ea13bf409dc4b9a5e4482b0", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "4912a92e27f66923117250bde4e1a0ffec4621a33af07cd5a3117cffff9e29ae", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "b1cf09f2c945a94ab46e5140a1711f68fde94ccc38b5a90f0d0c37c5a0aa34d4", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "15673e49bb339a6b0103c19c3cbb562fad8d80cc97992a37b2288f6578ca2574", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "3ca60b73770ae4deb947aea74c4566f11adfc2f650fb94267fe80431eca41409", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "dca6b2b09dd19095130f9873d60ff4773f015fae81b4ec5e025e2522503e7e37", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "526d044be5409d67cae44faa499df69cc36b53e366deda4666b66a118efc5255", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "ab8586d47f1fcfa07e50edf2be939f5da85971add78fdbd4514db09bc25d040f", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "a8df688458a24c366f3253b1f02effb134956a216698b489adf1825e068e5112", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "d44e4421a89e225c8be930f26e495c12844ea06c88063aae4265d3382061fd13", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "cde6c3f473d9ee85ba4e0e73ba39c4a0d6b27d441c7fea56ce22df2c61067a84", +"T3B1_de_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "7357c78e8516fd29bcd999cec5b307ae78734b239f07ba31531f67aeac99a20c", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "f94292c44e520436a40b295633746a9b3936a98e5a25629c9d71f84c7ab556ac", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "876dc5c6a1b2c434bb180f87be8de89a251f23618da482ebceee98de31be9605", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "271c851ca533c6ada40cdcc2c34e2189cfca78dd1d19e824fd06c8cec0b6e793", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "945f3226a9fd56ce04740f710e9dd69185f100db63e0adbea22440e518b72364", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "c6436a7c6956c21bcdc5f981e2a5f0904b692e87be314880ad599f9e796e66ef", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "2fd0168a9c616997bf454ff78f34ba19e977696073ea9832a0fc1571f10a8e31", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "43d6ee6ed24961dfa604f0102738d873a2d59eaa39c6fea511010f03d4d2ace1", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "5dbfd14efcafc190f06ddd5461db1f89b5e1cdce040d879b4c899ca9aa7a68c2", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "6d32d611be5e7f1a13172ff98db391680bbe19f5e588c14ffed2d2b8bcf14e56", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "946bc1851692115ab940647d2e1f92599440836cf20cdd4bf6f6beafe9b6c87a", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "cbe2b85ab717e87af4b8f37d1b141b85ba6cde34790a5c3af7443d9f337d8cf4", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "023488fa9cd2495dab22f5482f0aa406cee9ca7310a11ac49c873545a922395a", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "023488fa9cd2495dab22f5482f0aa406cee9ca7310a11ac49c873545a922395a", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "dc7d1e514967bae748c5521dc1e07b9d556919862fb9987b1b426c203502cf32", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e6098fb33cd40969d7a69669924bfad2304124a834cf4dd6b0df30f7e36d727c", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "a717d4d92b7fcf481b6b0a6b73b1e6b814e4e5a37861b21e646b25b6f3964145", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "4caf0f2cd36edb32d3ef29562c17798005d717a3d83c9882a322e16337d96003", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0036f9a9273d0d17fbdb9fe56ecdbd4a74ec3b7e4950fd1e1a455ec8e8378fa6", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "2117531d61e165e1fcf4353ceac9e61c501e68618eaf741f2baab5b0837bf13d", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "4605a7048ae25daa9902e6361871182a26e38dee5de560809828809edbb7ac26", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "696a72d6fcc6a888c1061527f235d837ce82f76460a385ac18e08a86598c47ef", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0036f9a9273d0d17fbdb9fe56ecdbd4a74ec3b7e4950fd1e1a455ec8e8378fa6", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "cfbdd9f87bfd5d9e7847ad98415e026d1061f2db984692926b19dc5741595056", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "9928d08cf4aa91f5490dcbdc431d6b2d2f3b88dee5df01997a6dd188f1091ff8", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "42b86d4b1fba41037a6a7e15ba4a41e4ee1ef240ae3661bc9d763304987f392a", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "25032ca0dd01421253c35804f93e2eaf87e939e491f1cb31c2e617b44f965a2a", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "1eaafe60662617f609c25272b0e17a05593aa4024340c9dc49da7e5f2effa840", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "104314fbb659433cc6c8a4e2e0f2019a008df566a0030665df9759a7473a82c9", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "b1903e24c4e44c48b86dea0fd4dbe2b79e25e497c1e6be7df4df3ddd2320f8de", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "e01a12a30181e7df890595504e8aa8b417976da7fb479e24a16f6c64343d11dc", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "c9b781b91eba62d0eea25d1eb7b62d1340c82c0e55775b444d8a9357f845eccb", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "691d5868897691d2572ccc20a3956d3ca5d990c2b806f8f14c62baf16b41355e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "4538ed84977b90319321d1478baaa240d1bdf60300ebea65e1a112bf352b3af1", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "5eef8431a96a65eed409e5e31dc31717a3faca68bd2a46622a6387235bf1073e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "95ea8204bdbbb193f1807b8770f45b447c377d1dc5e2fcb0b46f5c643534fdce", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "b18ebca699ffc0c7139bb1bba2f3c0bd725b19e28717cda2e5fafa028e78ec6b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "a803318a9fa4dd95fa536abd53e8cf164b8267e4d7613c43feb5743a84c3aa26", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "085c8281b8e6a7a05ce9680f68e045bb03c1610ba5fdfcdb2d2c63828af8bb43", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "2a40352a5c1d826b4b6ed5371d2fa87f53e6fd86d9415ada7770b47c687af216", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "ef43eac6c2477746c2a659d14e8115245a8e07ba267b9e5ba37f729585145be2", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "76d3675877aca68a92885fddac9863100792069adaa4030842f9837d552190da", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "46f47b660deef9361c8550326f00abd3f30a12fe4558b09587016eebe0440e54", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "7ea9d238318c095ac9ffa198d8e2d5554d91f85b12a84a9d3191f2e40ce36969", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "2014596dcadcfb27199028183dded55a4c71bdbec0d81af00bfdb6f7e05846cf", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "4b86e893f6e05de25855621ad768b9ab6d1255387c836dfc2de79cbfb87ac7f1", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "4285dc29975205fbbd786f0f577c3fa06b2dc498dc096ca61db8932c21b79915", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "37c44fe9cc5daafc3c19e69dad687ad77924ff5c2337a314259acb2b81d7afef", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "a4f029287528b9bf24ecca5aeb3d709581792883681839ccf883f9f191150c17", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "83e7943c837980e236949e1c3823c1d0b63971cb6a1f521fddd0405aee4a18f2", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "fde224416a6992de7a6147e45d85158317611bb29a0b970b193ac22fddc8cca4", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2c49ad7c947b84d93152704308af013a63ef19efdd094d1eb31f908df5eb32e0", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "c3b75948f1fb881fa299cfe86018a71f0743168001736625eaf5005305460dfb", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "8941cca5e7afc6651623390c94eaaa86bfb90e802ce706c4f59eb67de37e61ad", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "485b75baee329b0a1e752af25a3ce02a88e11cbb251749f8eba10ca2978ed334", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b3b428b5a8ae7934f37d9a3972f3c0c0b55ca182ec5410be0f33751ef854da82", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "9f43f19d83e1f9ed3a7072305dc3eeba8c4f8146d8b5ca859d7f08390807a2c2", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "c97e226163159fe09019d9eaf88687b0ee94dab1eb325024d0fde64bd5351c4c", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "60a9d9ac4ebb9f6e0057e2ad2e34f61c0f09e8e38ee178c34458e0f28d6a1720", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0f7fbbfb16cb77cae760072b23ddab0b1799c2b6fbf3df1e85a3a5a710de18db", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a677a31ef5db9daaa73ca755a4b69f374565529101266afd199f2cc1f8784c78", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "ed0c82a62d6dcebeba185d8dbe78ced56d43e389b1f94be56b36253a845d10ee", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "1ae03d74e2b34e2a4a9d162162bd7e943303a596b749445f904a9bf20e034cf0", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "d0b20a72e6fa2034f4f17e9c7027e71c4009d9a883bae8cdb239c282e242ebb5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "1aae66d84744d99f4e28b50dd33401ef18537aeebed098fc08d0b12ac7289630", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "7dd23e53757333064984ac2354624e41e9d07f17eb90e18f07f8b91718679d50", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "ac8f6736cf2dedf2cd6125525a4bc7a72a4b3a07528d52ac82021819da900ce6", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "847626414548beb2c73bf702e0238b40ebd9577cbe6f161bfce15ab6a5e393d8", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "52645db2138b15ec5eb6bdd813b81fbee4c9ce2ffa4a023bf4162ffae5239d13", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "4da2689d5ac33ab6ee4a60a70b75f07b5c0be98cd6362d4a8fcc2830e5e5a4da", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "4f83cc5158e035cb1b611bd19eb09d7296832846eb0cdde6a6b57c2c6d208d19", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "503072788c5bd3a575809acb3cc26e7488d20a3f9d2e6a445bd440cde433ffe1", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "789c20eee409a0634eac71baae437f474e8c7cd1b1454fd5707b90750e121ff1", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "a7f414281706a3593b1fedc3947d0a3af3b0065776bc9e94db2397ffa828bc5c", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "ac2c59f04e97a0a3cb01a4560503d5d45594a1d55facb5506a891f44fec4d529", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "ac2c59f04e97a0a3cb01a4560503d5d45594a1d55facb5506a891f44fec4d529", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c92b7ad08baa6c60c94ae28fb5e709e43b10300dc7d31c2ee629d80f9150b08f", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "26e5e48bf826ab7dbd8df95478c970e33ae6066bf9100607045ed7b2f6b7b65d", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "0c9be01ee21b6588c03bc1fb8a74053d653faebbb3c4a1fddc14603d80cf7ad4", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b779c995dfe4e0a140e1f5bdc8cbb66bbab3e31affe680016208728f48216515", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "96f92a6e46ae74f69fad69e83cadf0f115007aeb76825d6da37bf78b7f3e0c9a", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "cc08e4c2f1ddc5dd5598b755f7d06b5ef10e9fd61bb5b66870f821a8db2fb9eb", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "98a7c56184392352ff6a286cd75be24ce5f4222cdf40620074c5ba6170b50247", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3f207042c59125255aeab0834a7d41d0c605f17be1b39a0ba4a4e6f2cabec47d", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "f88a5bce0e1676631a045aa365f65169883223d179bbc38544beabc81fdbeb24", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "bc641080a0e509784bbbbf81fdeec9be67295f71a5c24f4d96c6e93bee003b4c", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9dac354127d04ed43ef19209a9b3f8ffe5179e5d949b673449457766009c2966", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "ffe21eb8f726c7baf3e65cfc7266aa0941d07d6630cdbb01f52266d2aa5d9319", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "f94292c44e520436a40b295633746a9b3936a98e5a25629c9d71f84c7ab556ac", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "43d6ee6ed24961dfa604f0102738d873a2d59eaa39c6fea511010f03d4d2ace1", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "c4b5bba8f0cad7ea0a4fe5909f655ac2c3481958ff5052fad124d83c46eccee2", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "ebeea67e7ff22aecbba5622ab5bf640fe7474afd7bd8aedc72aa8f4fb732e255", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "e830882567c10161997548cac777e02511316a2986f213b7ad7d2d9512e2fbc6", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "3b04318c7f5332aa9a8293b6090d12c014cb724cf29ff5a4ff39a17fb3b9cd3b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "647d956421908a457e29a641fd2e718b3a587c80f891913ebb5cdd17c7a35f0f", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "3e05c1a3f1b9b6b56205a6e7283b66291045642961a1917b2f3d423690273436", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "77bb38a45b3d1819821d00215a745fcb163fbabdd027a731605e21e413978d49", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "6e99cb4e939b684724e63077ede331fd0c17be04839581e7de628c757ec9a775", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "a738713630c6e4adf61f65d5a2a2bfa926bba1aa267a93e5b4be31e4cd6cf497", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "3e05c1a3f1b9b6b56205a6e7283b66291045642961a1917b2f3d423690273436", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "d97348a9f6d2c920fde06cc2e688dd65a799aa4d680026467525e4bd8f238d13", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "07f2a02d438df8d5c2adace78928dd5f60e6a9b5d049046d33f7c0af688e4307", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "836a7d09c2b128ca18f96e7daef85bada5c903aed8b5f7549cc0bcebe1e6a83c", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "7f7df52d14ef9fd1081a9491305068ed0a6a81448f43d37740ce54fb77a48b6c", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "d72c6a43ded19bd59bc85761c8ae21fe50972f4887253aba3c14321992ae7889", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "a1fab66c62ed2d9ff6fe9cd627a7ebd5cdc8bf398a663d9c9de6ac1478c29124", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "86af58942e1b2d6b4364ea35cae23030a9f6631cb6a1d135e285d6eb188202f0", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "cd745fe91aa49ea7ce07d76f1a257195bbdef660c7086b5eeeb0fb3c3739b4c7", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "2af2747edc216b022244d5d5997c742a4f449e0373423b331d39f4e65238e617", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "a71d4f62106e87104a5e66542d492c9c2c928be67171c80f264a3878792d32f8", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1902ed43f92423434538868511a021f50c7ec4809b4afca56db501eea9c222ba", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "e4391f90e01a16be94b18d290cf171541ea92287e4bc1070f43ea0f41fe9ad7f", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "66fdccb6664b5909d98767802b35e6edf0032f3672019584fbe49da8e8d73609", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "8636ccbf1e80fd4118b9776d5a659674a4ddffa8e5b18262b48e5862f283f294", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "8a4a68327e2532efd5327cb8b96baefc1f87722eaccbf1c20b780667c2acef5b", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "a5891b34be4ebde96d4e8a61693e24c01e66c25a9bc65898c486ffe4ab03a319", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "d6613815f4a0f89ba4322094e86e1b4a2a0ef64fe24c63ed3e103f942553254d", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "a8f98c79e6963d4edbe0d05063926eaa6a06f0476b5018a4d21c604d3cc3a88e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "c1602964914416a7ae5a12792e48562fc4b02f813c38bd698766305d5c18084d", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "c1376b4b11137b27befa7f849f2206f77ed3f59ddf29d1b6594fb2b334d52c2e", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "5d4f8f84ff1d7f21ff475e54efc1e3a7198f58b34470f268ea1d816e8d0dd4dc", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "3b27e8567ed86cacff49a02d778c7d8eee1f0f88e3b9b61c94c2d760d6dcd3f5", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "fe3734d93dabd44c27334085b551eeb496efbd168e82a3fa7e8fb0dad43e0322", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "7b1db97e0d189a2639b9db0054019b08c170da13097edf8901ddfa355cc4da66", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "c3653af3915094c6b6fcca2370df7e0ebaf7df820c8a65b9c1c9e6d450c718d7", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "5353220c99147dd4574599bd41b27af93f9aed04ec80b57c5fdf16966d4d45a2", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "62a01d84691efa84719b008b55f2d13995c296d952fe0560efb5a8931a43baf3", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "fb434b2dfd57851574f7722891aa79467af585fef954f87d96fd6ecde7f04e8f", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "63054643058196dea6265a610639e72f7bc22d239de62774f66f597cf3979197", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "1dfe41b09e0dc74dd8e9d31e7c635b1ec4420fb039de5bf340c022f79ab94601", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "c4008d450c5c2cac1844db5f092d0bae80a0b90f1d9304353197535589e2b692", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "b9d69a4cb33d0d8d458404b4ff869d530b6a9d9860d74faa18ba4ff523cba77d", +"T3B1_de_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "c64a1eabf34d79466c52bb5e7792995716dfc426402029cf54ee34bcd6526732", +"T3B1_de_ethereum-test_definitions.py::test_builtin": "63c1e6e59ccce62fc1fe86236c096c01d57af2a179b0c765a4efca5a94096c65", +"T3B1_de_ethereum-test_definitions.py::test_builtin_token": "055e1068571b64e57e7da15225504b41fa11638e74fe5d2f135a497dd36e378d", +"T3B1_de_ethereum-test_definitions.py::test_chain_id_allowed": "c32570499e812a1b47aaac857779fc5fa90279643847236c3db947d7bcd44cf3", +"T3B1_de_ethereum-test_definitions.py::test_chain_id_mismatch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_external_chain_token_mismatch": "63c77625f7eb7e50c78bb5572c5bf7fe7c1dc960deb34e108820e81036497f41", +"T3B1_de_ethereum-test_definitions.py::test_external_chain_token_ok": "b1ad70e4a32a8e93ab51cdd7ca695c9b6269cf31b524c12db51f092744b37196", +"T3B1_de_ethereum-test_definitions.py::test_external_chain_without_token": "68d7337ef7531ed0f3479e811407f1f69371f8bac5845bb68146272d44318a91", +"T3B1_de_ethereum-test_definitions.py::test_external_token": "f1e7bcd4e3c4cf8176cfc04300356e208bec22d922edb86b1d6a64272546da81", +"T3B1_de_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ec1cb04940385206c4005cdb541bb79519341da1066ea83686053a199795b06a", +"T3B1_de_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "bdc811f599caf12b51e515e0cec9165d5b9fdbf35a8408f53a5eb1e75379ee00", +"T3B1_de_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "a4b139055ac45e8f642a947e09623f34bfd144d4ff996782a688a69b91044016", +"T3B1_de_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "34ab817426b1a7815de6071eda224ba16c1b459cf40c4ddd1c29d07f4a0b95c9", +"T3B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_slip44_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions.py::test_slip44_external": "703f27d12069d385c506bc9ce069c1620b99759926bb63103ed36eabdeabaae5", +"T3B1_de_ethereum-test_definitions.py::test_slip44_external_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_bad_prefix": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_bad_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_bad_type": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_malformed_protobuf": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_mangled_payload": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_mangled_signature": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_missing_signature": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_not_enough_signatures": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_outdated": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_short_message": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_trailing_garbage": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_definitions_bad.py::test_trimmed_proof": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress[ETC]": "887c3597b0a2cd49937181f2521a0b8bf3f7bff9fe12b0f58174abc6848f7ebc", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "d5ca680177b0623b46e2e639c9cd53c24ca28b51e3fe0b7a94494d3b7062f2e1", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "5fb38353017fe6bb8b65b8e58ea959ad645e3c8106a52993dd725c07a35344ab", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "7df72fda613a98b6e2fc52e65dedd2d58b5545da3b5e51b262fc0a9a911f07c1", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3c3253ebf50d40eeea49c48c96e2452ccd8af230f59cebb23859f431515b2f5f", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "4554d9ffc3bbd834be2343ff02d6d4bc67ee9bbd04ac283a2f8863f53a61b585", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "cf132fa0c1e122cb7f25a8a6e7fcbe108427711232a27cdeae72c0f4292609b3", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "03eef65a9fbf11540f53e2520f3ff1f4fafe29ac5dba6f6ba41d8b0cdf1003ba", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "eb81bb4554b863bc656e23cb629ae22df0046b9457e1058c5f0d053c510cdec0", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f25f49d498407d5b3e71c3e14b40dc0e06c4f3a77ba0a1ffd9ac2ff717120189", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "5155c70110e819082e8e4d48afc50e70b1c15e690d433576a84dfe8c6a08a802", +"T3B1_de_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9df410d64a8ed999547d9c0f2d5b22dcd586aafda1ea3b8539600b7ace0bafee", +"T3B1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_getpublickey.py::test_slip25_disallowed": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "af0ded0d903678e379b68870b50869711a256d3da36389b0b68e505c6ed70ce6", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "b975a183823dcb4f78aa6a43d7da87baf7e66b8a013fe08e0210a813af251fb7", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "d625c8d5d401692723bef469c1c7e41fc6d39169a0d867906a8ae0136da51e90", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "f7d5e6aebbf2909b5635ea71d8f6ff33f6aa4134521aeec3aa9fc7fc52df0105", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8e166dfd79d501cd8025bf37c078e944948c00277016e640be6599f5663925f8", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "e62d0ad874983386a951b659221f82aef873cc3f576fb4b11a69841585d7865a", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "d625c8d5d401692723bef469c1c7e41fc6d39169a0d867906a8ae0136da51e90", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "d625c8d5d401692723bef469c1c7e41fc6d39169a0d867906a8ae0136da51e90", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "d625c8d5d401692723bef469c1c7e41fc6d39169a0d867906a8ae0136da51e90", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "5c5b5c219b69f7e97d7349f5007b0ba71a3a303befe2d1ed7042fd8c791fff3b", +"T3B1_de_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "ff222baac1ac666b8b77a5d774e4a5262731465f0fa31afad0324ac10202f689", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "5dc79641896b71cbd11290b423c4e38190e46966cd4362b5ffba886fd3c30697", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "8d7d4717df3a6a76c4e5fa11122f8a3ca2b78722a46317e074bde9529468db64", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "57a141ed21347c420b1cdedda7b765ab62def6a668f040773a2dfe9c7a437994", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "89c9a9f6a319606ec3ed3da4fed034db22c150146883642c02c96d15ec8ec393", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "ebd08a3794c1befd01328a9060ce703676ba4fcd6db3142aaf226edf75217c66", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "127bcb28245e7e1bb92c33f922dceda042a5340840eff01c76d1135476bc3fe5", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "47a2c606e5ce987f951220bf4de3472222c1f5d0202a25d13abb65f439387f4c", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "6c40c7e609e814f6b6dc42f9e1fc51afca8abe82e016c83d0f00cb3250d5cfad", +"T3B1_de_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "697d7c2f21edd48c8bceb23a5307d1a43708a467c8dd7fea054c7ea0db8ad6b0", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "6dc8fb1223b369913eaeb92d34fd2fb45baff029cde06e71e5823d5819ea9b75", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "355f047c929422bac38d9954d904b38dbbbdf0b6d673b88ec795e9f8f2231459", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "9763874d9f6244ccb9060575d2668f2d05e16bbd1502bba49fc44ae0ece758b7", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "5850bd194567d9a0242ee8cdabc91cfb602ef503e9fdc8d8a0e5de1b5c27713e", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "9641e0219225df426f8641d7c15d07f1c8bf07efe426bf38df20fcea81319cd4", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "71ddb159d5e81c81cf10038aad83b0c1add739bce65697914fc4e339768420a7", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6b58c573450e9c2b451910185871901dd1d6c6a4463e1ef68459e398a2ded184", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "f2ed1a6bd10ad8559bc9db96fb841584447c31e8f1579bc447ac28021a828dc0", +"T3B1_de_ethereum-test_sign_verify_message.py::test_verify_invalid": "6dc8fb1223b369913eaeb92d34fd2fb45baff029cde06e71e5823d5819ea9b75", +"T3B1_de_ethereum-test_signtx.py::test_data_streaming": "1e3539ac7f626bc8bad3099cdb1ec443e6fe76ff34ed903f96e3ca07eefc12a3", +"T3B1_de_ethereum-test_signtx.py::test_sanity_checks": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_signtx.py::test_sanity_checks_eip1559": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-ETC]": "20a1eaaf8f27fc5e4bf854a0c2f136b12d97f1c6abe3b686ee39cbe60a61e8c9", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "53a3aca737c843cdbef9e3eda6f6b09d468162cbe3b1846af23c7b4be7a60046", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "92a9a0a8bd6d214ebb3d5b44e4b05e9fa6f6e0fe97817d5023e20e67b475dfc2", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "53a3aca737c843cdbef9e3eda6f6b09d468162cbe3b1846af23c7b4be7a60046", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-Palm]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-Pirl]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-data_1]": "f4fb7992803186f5a687afb0ddaea574abe8ad8abfb37554769d21a46d3d759d", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "e91e152edf4f794129f216c0c4115e23a6d078fc67f877bda44787a9d45ff9a7", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4d7717de3d88fc07f484289f1cbaa5698613ca93aeef10f594d0c533c11aee6d", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "ed04ace237722a0ef59356d9ca5256ddb55cb0163cf91991317d4c052bb035e3", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-newcontract]": "28bf07a0b1fc4b098dcdfe51cfc0f0073696b02d191ef170b975a2ae708ac2ce", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "b42296983510e53fbf1deb2898303ac39044aeb3d9b64ba8e6ec5c3880329bdb", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "dfb669d3dcb2c6cebd8c7af4cdd5279a8ff5ebf9e85f5adce794a787292917d6", +"T3B1_de_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9c56b8427e056b9e16f52c730c3eb78dfc1c0b2de3d55142fcbd0cc3602a619a", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-ETC]": "5303e46d0902d376b26d225f98aca8f0ebfbd17cab2a706a089de54a627b916b", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "7d516ed2cfa85e25cf239f7304e521a20acac7d7a897a1f440ff8f0680179d5d", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "43cd9e8631ab0fba28974e4bf021b2e43ff86786df239c6fcfbd5b26a4ffc574", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "7d516ed2cfa85e25cf239f7304e521a20acac7d7a897a1f440ff8f0680179d5d", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-Palm]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-Pirl]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-data_1]": "c655d608604a2ae2f7d3583688830bab10a99335d1e2c0b87c6b9a1568c4d7a6", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "712c2c4081e6da86fd499c80ded1eef57cd7298bd15faa15d86ef1d9bd11fc9d", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "626a69d87ad0759ccecd71acda96f264a2af114334a28d56167867b0062a4a3c", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "3195482699f67f12d44d74b3f2c8dde5f83e3535063663485b9643578b251af0", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-newcontract]": "28bf07a0b1fc4b098dcdfe51cfc0f0073696b02d191ef170b975a2ae708ac2ce", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "cb8fae3788f7822476c1a7c735f07e6d89e7a2024ee91cffcf71a8db9301a325", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "6da2e9e996eb520d61bab528bfde56942050f157ee02bc70cf4eb91e81823324", +"T3B1_de_ethereum-test_signtx.py::test_signtx[True-wanchain]": "df787a2cb0eca960a87783f24c2c8e66d32f2eb2b3c56f1eb2c33c38166e00da", +"T3B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "2163d99d3e0446d1cc951a0ac433eac709197f4cbdc9f1aaf0b3071582b99bdb", +"T3B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "781664db14e071968be75bdbbaf75d5b5ac891a714ea463e8203f2ee6de864f0", +"T3B1_de_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "2e7e6be5450280282aeaf3aa092a65f78f8b199962ae564bdabb2e53c2a1d3f2", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "bc65d96ff63e82f5e49c4130996fe969a920f7f7eccf2780c787b22f2c1e0055", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "8368fce4ea62f70fe0b8c0bb83ac428f0e06da00580201fb472efef369adaede", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "2a45fab53b4ac367f71afc7cfe5d9690d84e092edac79bec871cf3f2a1d93868", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "0891ea128901e2f10d91e077d393daae5989f2bdc3dc97dda7eb8c5a50ba2062", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "8791cddafa4adb12d5eb67231a9bd356cc33af116d864d76db15b07a51801b94", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "c454e49bc2da978322685e845f887eac7739035172fa9f5947423fc93835247c", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "bc65d96ff63e82f5e49c4130996fe969a920f7f7eccf2780c787b22f2c1e0055", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "68168b8ca03503e32ad94d4c2b6af185bbb1148692e57212eac0f387f2c47a30", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "5e0d2ff8e7d3fceac2aec5dc0fa58189f6837ccdc4b38f24370911e521d997e7", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "fa0adad426b459335d810ec1889f3949d925baa049c61e51190f064e85e01c5e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "27399e0a0ae6b1bce7c902867204728f1434d08e27dc0121f791c049307231b4", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "7dfc1b9f0dc51020785572e76b745302f85f2fb495f4ba39981d0b0af786ed00", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "472024ebc644c172c801824cd3d1da3bf884e219d44cf90a8f95e19e3263f3e0", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "68168b8ca03503e32ad94d4c2b6af185bbb1148692e57212eac0f387f2c47a30", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "4c153a9c26fb4cb91c59ad3c45025e544c9ae1c48a631e5fd09a54793ae5cabb", +"T3B1_de_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "4c153a9c26fb4cb91c59ad3c45025e544c9ae1c48a631e5fd09a54793ae5cabb", +"T3B1_de_ethereum-test_signtx.py::test_signtx_fee_info": "7555d75e0afea2fd72369f481964d3ee8ac6b02f9055bcef66447a667afba156", +"T3B1_de_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "de0303f303b80539a70056d5bdb5edcdc041d3f15d306a24ab15e1790e2aa25e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "dad64798f100baceff24557aff8ba5e76cfb83ed292e047aadc1457212a7d543", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e9ca75bbe4c552e336f673531d51ed8691dc0003a628a8bcb5eaca3ab053eb4a", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "ee25956cd5947f1ac34b72439078665cb89aff9e9750565679888fbf489d3e81", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "3538cab3f6fc88a3a5f2c09e0a3406365ca839fc2013b323bcd5474c7034e4a0", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "04030db3465df74f33d5580fd7e008cafb8adb96984aeb2f5b13f06dad15e483", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "646f1eb2aa176c31e0a7a4890449da51a9ab4b048c00458d0ea169ceb72b8e02", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "eef1c32d69be4771c42e13a8c8ac150879841883482ab477a33a27578ed6b95e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "50762a5365428da2987e595d1425693700f5195599d28a18c920f747a6db602e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "098945029bad82144a7fbc57cadc98b1985b7349f5d7cbc065cf67e6423e1be8", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "1ec2c761bff4c9c0aba9c0274d2f3b871ed6f0a0eb213298746ce82c24cbc73f", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "9c1831944bbe0b0fcc6e5c52354123c323d573985138654faac39345286f8882", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "a0ba3e8a346198e341ab9c75415211e57bca2093b71986ec65947054981f10f8", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "7d9e1dc760774637a803816e1485edc1ace1801df6d88174b506808fbbc94cb6", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "7d9e1dc760774637a803816e1485edc1ace1801df6d88174b506808fbbc94cb6", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "8e7aecf04dc7c5df0ccf1851b67a10540505a0c7e211d36cab4516c003b258c0", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "8e7aecf04dc7c5df0ccf1851b67a10540505a0c7e211d36cab4516c003b258c0", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", +"T3B1_de_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "5592f9d2ac6922b22011a7c31f606a491e5021657295decb6b0861d6c5bc9241", +"T3B1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt": "80f26d847f817759a03dab25b427fc18d71f077e63bab70888f82e7ee287d801", +"T3B1_de_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt": "20041259f3b47fa3e429be139b92a0d2b11c8e075289715341744dd919d011ce", +"T3B1_de_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_misc-test_msg_getecdhsessionkey.py::test_ecdh": "f31e0fc2be5d30c21276d4770c11141dbe3eac0b3db225d0df74a62755ee670e", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[128]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[129]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[16]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[17]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[1]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[20]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[21]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[256]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[257]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[32]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[33]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[3]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[4]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[512]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[513]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[5]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[64]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[65]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[8]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[9]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_signidentity.py::test_sign": "af82790f30fc9ba49c299cffb55ed8d4bb44fb518c7ef43e809737fd93b34eda", +"T3B1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "882321821420e4fc091157b8d7b5421d7c82bdec473175a66b139bf201bfc383", +"T3B1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "4d46e3b6c2b79f606149c91160deb12e78cfe5672fdceaec72105efec83e2943", +"T3B1_de_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "24ede7634b5341f8aa33737206e9bc9ce934e05992c7806dcdc9ecb9077dfee3", +"T3B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "b758fc4fc71eccf2ddebc5271960ca3ec202db8f967ca4202fce497050973763", +"T3B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "d6dec70132774f1c4c974115cbeaefe89c4396fc7f9851b3412fe67295acbe24", +"T3B1_de_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "a89c0eefac55211b6ab03d0c1f12bb628a9a14061c328d1134a7187dcea570bd", +"T3B1_de_monero-test_getwatchkey.py::test_monero_getwatchkey": "6100e4b473d1bd1b86ab6bd39387d4ff86c446844b8c554f3a12ebc8f5ae43a4", +"T3B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "92043343dcf28c950425653f20c71b8c9cb9d762a75562be468deb187b01f3ea", +"T3B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "5f83323305b74986e281b12554992b56db91e32bf902a59eedc344b6ef6169cd", +"T3B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ac046074538509280086267cca0b7b4ee1555e6eb299e0ea1baf24990d75985b", +"T3B1_de_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T3B1_de_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "778458adb43a21a3c48f57134d6ed47d6ea52704d73baab0c8fb8f35235d7f2f", +"T3B1_de_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "bf08e17df613e761aa7d4e5f0ed3957167a22746392a830f8ba740fab1e17a0a", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "c40d392b79520a91b10a8cc50ecd7f44d89f855436b7c55a17227f4289420b8e", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "257bc02e5a923528fea2dd3b95897bbfaedcc27a1b535a3409914b813aa80d31", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "d84f008377ae383afe86b4858b9ebd19796a85ce039da960b54d7370eb52d004", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "d126b61e55f3c4fc8c900dc4503c0206c5513e9940ce9cb083542e8c76fe2387", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7d531b9197df19026728eb0064b3395f1e4c24ad993e97438aed31bac859ea6f", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3d0dcff356f3408434527fc3b51993c80070a6d735cdf8cb53a6ba85b0b22c97", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e300bd53cef49d094f1af99ce8a81fc59cebbf5d6f85731a5ff500b17f0ba8ee", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3d0dcff356f3408434527fc3b51993c80070a6d735cdf8cb53a6ba85b0b22c97", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e300bd53cef49d094f1af99ce8a81fc59cebbf5d6f85731a5ff500b17f0ba8ee", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "bf96b94f26c0fc399941e7523dd5cb533b813e1795bea695c090ba66c4e1ba10", +"T3B1_de_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "e577a4feacfa10f0b994ea7e215bf0bf292f52951837350060d829864da2127d", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "9f9b88d887a1ac36b239f2cf902449c381d3cbcafaba6565a5d9c813caf96fe6", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort": "c40d392b79520a91b10a8cc50ecd7f44d89f855436b7c55a17227f4289420b8e", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "7ed46540113c3c3dc183cce4a2b8564a1f7ec4807aeb428402957a423ff09476", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "24d8e26d2f91b56f6c8629513c417cdc018371aa5a8b6e467d68fb37c5eb91df", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "0bf5ccc67667bf33e0b2e3d224fd9ed692274b707b866e7945e7029cdc6d5a6a", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "b75e26bd68b3bd22ff66d52fe0bbf463d8c32a6caf5b61a3b83d34f45d234b6f", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "54ac93693560f02b6c3bfdec10fdc4d7c5d95cb288f4dbff6112331d156f6268", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "2620f83ca64916920e4ef8c5fff42c9fcee4c75437c1dcc6ea61ac04b40c8441", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "0a4dd371e17c9229d6810f1135943f5f7b180aeef1e27a807d79970254d6d7ac", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "a15bdefaa80abe1a6bcbd4def8a8d226e7b1d7b55760d63ce4c118c1b575ac54", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "63d2b777871b20b93b769eb351aef7f90603de03b9755763379a6b3c3675df72", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "f75ebc8573f12189a4cf31e3ed48b68557be4e015292ed6ba982786d571b029b", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "748a574fdd48f7c82332dfcd4fd02fa426cf9c51a79ee4349c484bec571b1b64", +"T3B1_de_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "088b0d447c785d0ff38f87e4ea51dc0d78e9eee9b06abe45b0fc3bfe3d988c45", +"T3B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "a9007522ef016ac22e32aa6f1ffca588909e6d9be5e388cf63837dd83afbca37", +"T3B1_de_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "fcc9ebcaf8fe994276f9f3775fa21edd9931f296db50ccc023aa8bf5f3a64144", +"T3B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "3129105763168b401b28feda3831a4b0272b653929c2cb9d044568a131df5e24", +"T3B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "c8b34b277a423da55b46dadbb0f8e8a62135223f198bb4e739c9e62f1b56dde0", +"T3B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "44fb0dcdcadf28eb3bb71243f46e22fa25892208949b3e6305a8426c76631fde", +"T3B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "28f835261969f4466aad2121c94ae5cbd8ef328ee32505b8a1c200765a08d89b", +"T3B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "f05968cf2b602a3d230acb7340c65016fd37a4420ed46b4c03743405794416a0", +"T3B1_de_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "78977bfddab2b271e60161993f071f31a317bb59a62ecd4b7a9b295923eaa107", +"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "9ecd4c00fc84e6fe6617cef2aa0d258ae1c332133b1df33df7a1f6feea30e465", +"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "06d6a6cace3c49d8a621b949cbb3369911a9b600957f5daab68330f6cce50332", +"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b017a195135d9863a2a7eab808bc3101aee726653e936a55ff39d94b583b8fe3", +"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "75e232300b41d02788bfe7942637a66519b7e67f00129eaa35af5585d4021247", +"T3B1_de_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "3e2513cd2012fab7ae8e420f128d761f0db892126a5868f83ebf2fbe0c968710", +"T3B1_de_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "37cbee54132b02bb1db42c5606b6df9c7f76983abcc4ac19ca00d3ebc9ffa958", +"T3B1_de_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "9342e12335ace2245c604b120efa7c877266fc772321396f4c8323ce3a630464", +"T3B1_de_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "fffafa78a91b68662033414ba65af44cd0c89331de499a6aae573f66563a4a01", +"T3B1_de_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "b7fd13b541939181bd5b17e778757d48731655da4b24ca45f0f58d32367059b9", +"T3B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "6b21f788e2a2ea8d47cd8d53fc3bbce62ed6c91a2caebe1e97f7dde30d8868c6", +"T3B1_de_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8f0149a7ffbbf64b5a93f3878599bfca30082cdc2991bf73bcf89f5e12f08d8e", +"T3B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "ae44a9e4ed76fe84dcf93d1d2cd7773ab322e0516f6019180fe96a44196244e0", +"T3B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "2df63bd0ddb47544520de33b69f3000d0a1396fb419e874482953507cf10bc97", +"T3B1_de_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "6f125524d4131b42c889eb584f891a3d1e2ea94f5b609eaeb58846a39d92c12d", +"T3B1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "33d34d47f764937882e570ee830f063c5b112d99aeee5217e78413d2d5af6af2", +"T3B1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "f0cd93fda6a834ef862be937bfdd675c53606d52ec84bcd856ec984e2825ba75", +"T3B1_de_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "17cf8f3a471a4799edc55b52bb6fbef1fc5c4060c2086bbbe154c118a73a5b26", +"T3B1_de_ripple-test_get_address.py::test_ripple_get_address_other": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "e836e23537b3ec2d785a3e0192171e5d3af954f33aa1fbff538207d8caa9b4d7", +"T3B1_de_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "f4e06e3717a3e24e39f3f8903f74268281e26f5f7fb3ef197a5735707f8f7847", +"T3B1_de_solana-test_address.py::test_solana_get_address[parameters0-result0]": "2486947fafac44b8d5304c99adf94e179c39a74e9c4f308e640e35a2648acb9a", +"T3B1_de_solana-test_address.py::test_solana_get_address[parameters1-result1]": "87bdfc1e42ff1b2717f5b46d1d0df46fd1808da6c54e2db11f3fab88932ad131", +"T3B1_de_solana-test_address.py::test_solana_get_address[parameters2-result2]": "72449b70ec9e084a54e98fd5420570f428dee4d77fb191e808e197eef93ca1f3", +"T3B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "cae875b3eedcfc4ebc3ab2d664e59679ca64f39cd1873ba13a002fa71bf9fafc", +"T3B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "150af04e4a7102f855113c6f90bbf5b34cd2f5cf570db82294da2ce56a8b93a2", +"T3B1_de_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "5419b62b8dbe08e2811b8382caf58ce7f60f6c1552e5b0c7f6ec416be48c324e", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "48cfbed8dd10586329eb1293b75aff087e78872e33d498564a54a1fc076f2b08", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "87a3d9af90ccc8fa9ba6453e31502dbd731e697b043739f5357f296de3532f74", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "e6c9c75256abc207deda85b7b8526b17f2cf9d4aa5464aa02aeb4f8254da759d", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "331d62890752110406f60c48a6b88646ad8ae7f9585db5e9365c70e13c5bcede", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "dcd25d34cd38d7911f5962caa7fea4ce0bc2f1e57b97587fe60aaf85333ec831", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "6b754b660e1852c125e895543b52eeb2cdbe9334b3e8e54a0d7cf974e226ab3c", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "4406094fb63d1ea4538aff1293e7bc05540ccc540dd63fba3ad8bdc4ce8126c2", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "8b489b56884c6014102686b993006b76f225856772a2de94c63d758e1336935f", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "82d526cf1d7f07129aea29a1fe238089ee82b0450daa9abdf1c671adea872dfa", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "d5586328a54beee1528dae3a93e257c31b21d891d8ab3a6d70692c88b9444f80", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4f90676876ae144b3ce706c1e65b3587cbb5afcb97d6c08f83e537b657d99c79", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "2eaf64e0cc9e2b4547a1aeffcd6cb4e267923ca1e84250401df1e6790e83788c", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "876034b2454f74177c2739a3e611654f96066b54a85673194ed3ef51ae9871dc", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "b4de8f33ba20c973f80c6d8097efa5ad5159478d81c527e1177feec26692339d", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "3dfe8738bf5d6eedd99bb8f1142ef54bba4e2c6d5745ef3ce0fb80be760e095e", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "0aba5ee11a6c8e33ba1ed9b648dff515aad9702a7594c38c18a3c5aa9667aef3", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "1344f05900de326c3ce74b9e4787b560da7b608fea31e4e7ff25d2e123e4d09f", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "91f5026f5949f7e1fba68ab276e8eeea21a1f112a13b58327418f846ff3cdfe0", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "b7821c845595d25e6bc71aae0e0233f9adc77076028c856f1565bd7962c653f8", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "0634846aae8bb2c503344f80d2710f6ee32be69327b95e93d997fc78d4c950a4", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "bada1fef1a8bae4e7978836e32b9f22713d84907caad653449eab0377c3a8a70", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "30f5c0df47fed9608f5c3784efcf7b68fe19359eac3044509c469bcaa58da0ff", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3904a6cacba69f761b456660a9cd2a1f15edffaef8578b7cf6e17bc3ea2868d8", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "e9b4ffca708583d29780a8bd82d5e37b6bd0d19492f21e4c9a0cd605526bf637", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "f33ce0d30c82fa4479f093dd4e7c7f4dd27efd5acbdbe81a341625b9c261e735", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "34a37ecbbe0df684eb3f373fffc461eb2f6b3955034ec51deb527959663ed4d5", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "4d058d4aad99ea76c8e475b3a74283523f35aa574d936002d2fecfb952ae7e6e", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "104afabad759ad416c6b15b51a0307403ce4d3796aed3af03de4a6bced226f99", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "e75940b8cb0d8ca6b1b2a36b4377a3b386edcab2fc871d351ef3f55b11e72568", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "021cf83fff7c2a70d42b410b6eea28a495ae602a4a2c5a94b28c41096e416b4b", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e1699d093c7055d4ed8dc564bfa600058e377f77871732bbbf34b48cb14343bd", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "6a4c83df7ec5c8c09bde8499a80b97a5b7e6c0ca5855240cfca3362180eed57d", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "e5c8aba521ee8f3ab8fd3238de5c575397bae11753a5b3c3b01e6b61ef1fe1b0", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "36dfe28828163ab7a80ddfa74f229b4c6eb228c33e5c1fb129007a1d5a849461", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "541fde8923f34b69bc11a07c3eae62280fd36adc4dc0af8665b2f00d066ce8c8", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "541fde8923f34b69bc11a07c3eae62280fd36adc4dc0af8665b2f00d066ce8c8", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "a69fa6dd1909fb463aa9fb9ff7b27d1c932b77cca683e7f4c52daaa6d6afc77d", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "65ae34921600c14345adae61a8557c61f7971a11374fbd94f9df7766296ad222", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "893662b8686fa062f7aaf7ea9d35dc15a131028a8175bb16e9dd9424c8db3504", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "bf48604005a62544958b72eb43853574fe59997ce986a6908761039be664bd0d", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e98fc8e321eb59977537fd8a47f5b8ee7b9d6b04632d5c5def0e4383f8d09c77", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "8567984d7aeb5e3c2813ebc9a56ce678db79de03e01da913db405b5a9f208116", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "92be9469b5c7cd30d4523db41643c571e6afae6e5955803d3cf0c57009fc007f", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "1548b0f6373a6f1f9fbeedff281f6e177ed978b85425ddc2cf4490880a893d2f", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "6e7a95dd25ec3e9737457a71fd79eefbcc5c778e3df5ab834344d39f92ccc61f", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7c23a8d3b5a89257f2a152134bb14def24e01b3b25975953732c9b2eed4c2965", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "893149b212533197a56e158347d72a0d2284c2f9fd982690e9e435dd28a10783", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "548ce30ea791ed7de0b1364171f4deec489abddfe1532c82ef92ea4f4b7ebd32", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "6751c8e93e0c28d283059534c5c4f787dc541549976c415b321da259edeebe3d", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "0b2a9b80b07c920b2ba9cf09a9fa762fbfff7b6a9b39fe89dd5d825c72d2e6ad", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[split]": "5ed5852ed5eabeaceea50d91010aecbd11fa8a0dcbdda899e6465bc75c749581", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "8adbf515470b56a21c1ab3e05b7957db7313ada30793051519e747924588281e", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "aa295d8e8f1081ee8cf870cfe8e5b9c1d3ac9deddf51d85a4712ebd46dfc8aac", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "e08211c988f83c25ea71770effb12bb4595b0e42c4813e375618515a61633844", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "e39b0ccaa1c791b8ee9879d436e6f34227b895d2af8795e25641f0190f399560", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "9ff4ded2dc444ad088b29597d197ce6eceb2ad9e5ed1fff025b3a072318258b4", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "a2904f146acf163a7546cca71abce5f3b7127f6c408fcb2ad6ed3d5b075fd129", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "aa9e3242c18378a5b9499157027a7577cbfb732df049cd8666e36be51dd6a859", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "02aa09334478c0e32a66ced39d306d3ba70b6a40ba6f4bbbf2f9f397c7ca50e2", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "689692a6c37f029267f6c37cd1ddfc51a5c9f16d00e2101898ff6057349e0910", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "c0d5fa5f9771c9dace04bac4e5ebd64a48a38bdeb57092837fb1a90445362d80", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "9bee6bfbc42ffed546d7386efb68c3e6a4f75efcf0cf44d898a4f345abaead3c", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "23a1a1c334d20ab2aea311dc8b6cf0eeca6486f30ff7ed0ac8faeadd61d67f57", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "0ee25ba525378c6101e5b1822a181e66c37455dd23e553b0cc7d238d64246736", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "64a15c761ef280fb4b7934ea4cd2ed38a2f93fb7f90d95069033692f87df133d", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c1a00acf6f1ff4503e47818f6367e65b785f9e2bfa55d6bfd40464699787c9e6", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "4e4372d9b85029026a9a639748091dac58ff4a95765a725fc4a6b3dd72149a87", +"T3B1_de_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "7eba82dc4ccc704791d52210f9a5e0cd70890072076450ac6a6d1a1654886ea6", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters0-result0]": "10f4f69103e9eaa539f5bda4edcc6d5452ea8a3fd8681fca2e3f8ea32d7f02ed", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters1-result1]": "004e6ea19fd6a15af90c6e3c621ac3c07c2b1353288f0f1e8abdef20fdde0a2d", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters2-result2]": "5f0cb78ea428260930c5899fb144bc8fc2a848413f3a69be2e4921412f604247", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters3-result3]": "51ea93fde655edd4041514bf89d6e073ce356ffa2a0425e8c2f141926e2b15d0", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters4-result4]": "1d8fe04ab3a268ded48f48b358c8c7cc1732d325e166a2c39d26d75daaea578f", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters5-result5]": "42a522655253d0bb699e6268919be26cf584988c29d99c71de54bfd7f1956a2c", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters6-result6]": "7c8c2bdf23c864e16b831daa9468f74e33b969e35f0335c5f9e3530cdc3fc67b", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters7-result7]": "a5e5bafcccebbc2caf010459c59fdc55182678afa3702fbaf53269d776a661d7", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters8-result8]": "468cced3abd3247d06e6557bd654ed6447412f084ba30c5a3331ea43deee5572", +"T3B1_de_stellar-test_stellar.py::test_get_address[parameters9-result9]": "0697c8535141814c6c99e822b80dc8d6ba5e42a7d402d9e207652f1d08f3419f", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "f171f27c305fcc9406320bf0c2cc9949ef5457349c7f1675fe0ef1b3294e0bb1", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "d6e0fc24dbfe5057bef09711a454e7f624c32f6c5b370ca727d9098447493ff4", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "d422aac0a49b41f11cb26509d8eb9552105d9e4cccc5aa09945d6468f7fda2ff", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "38b18e337f4d86c0aadee99ddff47b617d205d3777d2552769f07eedd8283c0e", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "57ecd845eeef7bb54e79d62228107a42af79b22d5e6c723edbca4d9c006dc494", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "e0cb13abab8fae9f275a1d5caa3f3976eb45652205ab04bf7b5abd92616ea5cf", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "6ffc2ace4501a6df6fbb08dcc3d24ea5f93657d373795c88dd5c0daafb7d2f04", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "836c9c5508424e54a96a2435be71742151555d83ed0a0712bd72d6604460a586", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "e1ff3474c55826fa526852c3d2930d9664e544dc4c303064a5a265f837dab21f", +"T3B1_de_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "d6bdf14b7bf4249bf8ec5295ba456de010376fefabdd3ff2ef2af09ddabaf915", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "3bf35c40d97d043ac346ec4f1af6b5d5e86333a9dfc7fdcd8fd5594a6127eefc", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "308d54884f637fb163c6d495db88c9e094ce95b3ca9b85d98960afb499098601", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d584f77d7b19d4210f032493e1063286608eff050b31677e7535c5894c9a1913", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "bfbc8c1ba4259d5564aa4eab7fc719d94da8a6f6bff49faa9cfe6f0716d9e9a3", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "4d9958f05ac7f7e5c591c6d7ed54f46760c4f67d957ad7aad33e1206fe7cf900", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "090b53af94e8c7e9f6ff650e9c765b76fc04a11abc11b843853ecc992401ebbe", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "08a338962a97e969369ed4260cdddb644950ba215f23ee5e6ef41620363c15c0", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "7c1fa8c604386e5caf2cdb31e9ca433b3b9ac94ccb4631dc9387e1ffffe88091", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "c4eeee93e80f323241c92ad5c078d1f2542fb8358627a243686e81dc41680bac", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "124d2db2f307428f5ea8cd3893ad639a41071d8acbfb1df3af0e3de0657158b1", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "fb1653df81a0591a7b5d0bb45f9c0f7694f7f4b5e2ff4a66b03600d371ac6b69", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "cf4417d89a0a5036b36e6fb711403b80a05e4116d2e0f3c90eefbcd7038457af", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "f9019cdba4e5a0dc816b2b0965b048ff9c71e2d39ef52683fa9b566f4afce48a", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "058a44a0cbfd0a5162cf95c9b08d2271f633b867709f43bbe948ee9f448e9002", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "80617ee4730290c18e1f41e926638c5f9bd417e7ddcdf46765f291912bdef033", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "1a3335d10fe7cf2f3e8b08f539d2b1f07a72775bfc3b015ac8f391cbf07e2006", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "1345806e51e1a28079169477c041a12e58b24ca1a870cdb84fce58a02354c3da", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "1cf718b75c8decf83d4dbe2c92ad8ad80053932862d128f42ddb59110cde00e6", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "89849dab2d97e8862fb0727e5193dd01249227a2e484812a44fe6c44c381712f", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "d6b2253ed95dfc593f383450f12581e60e55fe98c12fd873e9400f2ce17fa178", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[memo_hash]": "edf40f1f27c4d1ff429da8d980b05e44fa5d0690a9d81dd3270fc139e1165c0d", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[memo_id]": "a6059f00148e44c78494a5ca94a903edcd479d648d697cc73a9f640623ae12c1", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[memo_return]": "c843c0fb0979c127648310552faba9819884274e5ee3d830572bd14897b1d49e", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[memo_text]": "f6b8b37f3b616e8ad6a8c869cd70f645e6f362992ea171eb305696dfa8767336", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "01333e6640104da2df813a6682c1ca4d12d0c9106bf4fc1d0bc613b7c589a50f", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "e6a15129af2beae1bf0f1428ab5da0417fc7ba0710725d1589b25cf6880d2d0a", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "dc4bcce9ac14c70700b5998834342e887d194959eef294828bd9faa6a4f904fe", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "6a54d587b8b9c8780857819d6e0fc82af74b9b45273cc03dc16c349b871d235b", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "c446139cc7ebf56da02f258f6a27663c111bd5e56f54b7d3d7d2c85470a9b5b2", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "1345806e51e1a28079169477c041a12e58b24ca1a870cdb84fce58a02354c3da", +"T3B1_de_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "c9a8cb0c921699bd90637950c710193a1a4b4abd0a415a9c91980b641f91abab", +"T3B1_de_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", +"T3B1_de_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", +"T3B1_de_test_authenticate_device.py::test_authenticate_device[]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", +"T3B1_de_test_authenticate_device.py::test_authenticate_device[hello world]": "bae6acd2d9402f123ad340563fdb6e5080a12dc08080ffe04737ae57fd209396", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay": "e0903b72b35c9fbaa0994d58b86d9fbe4c13e4dc6628db58494331a46a1d72a5", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "1102df6f016319b9c9ecbf9d8856ee0269423a8f54a56c0ede512bcb815fd8f6", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "13fdefac289c62c385085703f4473b40b8ec5e50db5205adba45e84983766887", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "e34b70fe4c16e1affc1f268c711485a82924549d0e4f2add4b2dcf6ad7c9f510", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "e8fdc105047f9172f00358716043f9c8ee84f76c38225fc03a0ef30f97669019", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "5935009344accade82607da278e4b56b3eb90700daafdb246651c352299de900", +"T3B1_de_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "3c247d31e68273c89eb75b66d5cb1f36ed709351d0fdac78510e37b22a499f4a", +"T3B1_de_test_autolock.py::test_autolock_cancels_ui": "9988d59b0537a7d3e82ed5d21f6d7eb275269302b25fd77d91b76487e6c295bc", +"T3B1_de_test_autolock.py::test_autolock_default_value": "6f5662431a503ae159798404a8eb1dd6b43c7f2b474230ddced92adf1dd43c66", +"T3B1_de_test_autolock.py::test_autolock_ignores_getaddress": "4450caf3dce3cdf32e6e0972b3c3489139c08861f0f22ce90c5dab57bc386dab", +"T3B1_de_test_autolock.py::test_autolock_ignores_initialize": "4450caf3dce3cdf32e6e0972b3c3489139c08861f0f22ce90c5dab57bc386dab", +"T3B1_de_test_basic.py::test_capabilities": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_basic.py::test_device_id_different": "83b61032ca87fecd27e115b4938301f42bd347eaac440be5490beecd6242ba8c", +"T3B1_de_test_basic.py::test_device_id_same": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_basic.py::test_features": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_basic.py::test_ping": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_busy_state.py::test_busy_expiry": "f060bd0cb42bced5d02923279994ebadb2d6bfdac236f2bf62fb204b1f6f67c7", +"T3B1_de_test_busy_state.py::test_busy_state": "9d79673fa4eb9be4fc865a0e81fa0601811f2b38f6e110fbb99aae1c6ab4c3e0", +"T3B1_de_test_cancel.py::test_cancel_message_via_cancel[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", +"T3B1_de_test_cancel.py::test_cancel_message_via_cancel[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", +"T3B1_de_test_cancel.py::test_cancel_message_via_initialize[message0]": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", +"T3B1_de_test_cancel.py::test_cancel_message_via_initialize[message1]": "9863194d3b2a0984312ab1e943fa53e1c5904f1abd7589f80efa6cb534a592d2", +"T3B1_de_test_cancel.py::test_cancel_on_paginated": "22e5ca5da1248baddd00fad0a3c14072719cf8db8046dedb6f67239ea019bd6b", +"T3B1_de_test_debuglink.py::test_softlock_instability": "f29d70f6632cf45b43f3cad58de6c42d381f90fe47303bfc9b9d39cd8c7ac603", +"T3B1_de_test_firmware_hash.py::test_firmware_hash_emu": "b64812ac9c7f3d3f34118ae559f44c9727e02409211003966ea5475b026225d8", +"T3B1_de_test_firmware_hash.py::test_firmware_hash_hw": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_language.py::test_error_invalid_data_hash": "001546a6d7d6fd797f5d358a85afbb653ab3dba0ee15650b38981149460e33ad", +"T3B1_de_test_language.py::test_error_invalid_data_length": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", +"T3B1_de_test_language.py::test_error_invalid_header_magic": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", +"T3B1_de_test_language.py::test_error_invalid_signature": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", +"T3B1_de_test_language.py::test_error_too_long": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", +"T3B1_de_test_language.py::test_error_version_mismatch": "84138ca1475cc52d9eb63b38826db3e857741f4da5194bd58a9fb3632ef9d9d5", +"T3B1_de_test_language.py::test_full_language_change[cs]": "589c12e07e0d2053ff943f143b7f49e813933d6da88cbd728bed6f8bd4cb245b", +"T3B1_de_test_language.py::test_full_language_change[de]": "a916293d096cff0f5476d3f3a5c8041332e190cd18f93aec196bc90cb8c519c9", +"T3B1_de_test_language.py::test_full_language_change[en]": "a35bc4501de8bae861d757421e17440a21f7d4f3ce1a56bfadabe9e5b467e4a2", +"T3B1_de_test_language.py::test_full_language_change[es]": "2fd72d78dd1d1176ac6aecdfd3ea790aa2aafac0d705b406d44c0e9c9545002c", +"T3B1_de_test_language.py::test_full_language_change[fr]": "fda57886e4c371f3219a29dd54b01de43e96bbb94a6fcc7d6c9e1bd1e7e30ace", +"T3B1_de_test_language.py::test_header_trailing_data": "8d546f37251d84f6493b199cb84219d818def9318c908e3fb7feaba788862028", +"T3B1_de_test_language.py::test_language_is_removed_after_wipe": "146552979024b0aebe9b11475131d71c0e6ac909d2b8e322af848401e0cfa316", +"T3B1_de_test_language.py::test_reject_update": "c030eaa1b84ee548a68f0e20ad74201cbbeea1f09095dfafe0465020f3215a7a", +"T3B1_de_test_language.py::test_silent_first_install[False-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", +"T3B1_de_test_language.py::test_silent_first_install[None-False]": "a5a3f274b430821210490f69202bd50f38a365995176f932dee213d5debf178a", +"T3B1_de_test_language.py::test_silent_first_install[True-True]": "664ea85c6f6a7e7a43f2c5e717686608ad7e9cd0804cc89b34d58efa8fd7820d", +"T3B1_de_test_language.py::test_switch_from_english[None]": "442ba53d3e897508f37a63a5347c3bbe535e3f7dbb75fcab480c58e743f580c9", +"T3B1_de_test_language.py::test_switch_from_english[True]": "442ba53d3e897508f37a63a5347c3bbe535e3f7dbb75fcab480c58e743f580c9", +"T3B1_de_test_language.py::test_switch_from_english_not_silent": "734df403a42da192b49b0bfc990db9f4b84e118c0b678da7e159e6a0c2a86896", +"T3B1_de_test_language.py::test_switch_language": "e922d8763c8d4c700a92727e4bdf3b7ad962d1980512c38e66e1aad8979b116d", +"T3B1_de_test_language.py::test_translations_renders_on_screen": "76682d785587a89e97813092dd09f407f8cbc8c11845f84d7b891fc25d21ad0e", +"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "231c46ba707961f3b9efccfec83f073542e342b3c15ab5014b826a1659bec0f7", +"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "6a6b3f99a0e1871cb01e38fa2bdaa81c93344abb3a7d1878a5ab40c50777fc1e", +"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "5d88ca231c16a760f9db2005d7cdb24ed282ff7377026a947e023523654b2971", +"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_msg_applysettings.py::test_apply_settings": "65bd24b50922a21b7f00b92b7909fc52597d3ee17fbbe7971e2c8e0a2969dc9a", +"T3B1_de_test_msg_applysettings.py::test_apply_settings_passphrase": "4274bdb4acbbbcac76b90270fb1652d4a60e617ba165b98bb301b8f75e19c919", +"T3B1_de_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e55071aed329923cf60c90370319a7024f24b3ebc209a1270bc9e6ba19195505", +"T3B1_de_test_msg_applysettings.py::test_apply_settings_rotation": "4d17a2d5c4b7585ba5e8ab4acf617d74faeb715d5faade775c23894f211bd17a", +"T3B1_de_test_msg_applysettings.py::test_experimental_features": "a3e2bb32fd4344219f3917a058f240489b0fa21a3795112c208dd01a549a3e76", +"T3B1_de_test_msg_applysettings.py::test_label_too_long": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_msg_applysettings.py::test_safety_checks": "91668616d03dbdbb3400a647bb89ecd1195b3fb5d8999c6229ee91b934ab53d5", +"T3B1_de_test_msg_backup_device.py::test_backup_bip39": "e1bbf95c340e6262b00c14a485006470a14f282a7fb487cd8d40489296c37884", +"T3B1_de_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", +"T3B1_de_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "10873bbdce772d13646d99fb3967a9f5e09beea972649e1ae03a807b349a55f8", +"T3B1_de_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "14b692942081dfee100243d18121acc75ceb011808ed50e0b10d7123b2cadb39", +"T3B1_de_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "df347660c07be4db80d435494de3e8ad14c1c27803f989e69e9b855411ffa96a", +"T3B1_de_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "feb1fdd06e5ec80a6841d869807490f6e4985e744f29d215c6e9b071c0bafcb4", +"T3B1_de_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "5283145460004dc83b60cebc7faf355e72a602de0538eee70d502441c1beacd3", +"T3B1_de_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "331e67d7e99409f48516a400926c853cc47369951d0f489af36a4566d1651e45", +"T3B1_de_test_msg_backup_device.py::test_interrupt_backup_fails": "c925fcea96ab652c5cba68ecf4c6cfeb069da7eed29037211d72301b0e34fbb0", +"T3B1_de_test_msg_backup_device.py::test_no_backup_fails": "710285b402ecd439aa2dd8838a707f3df9e0353bdd78ccdceffa7edd808930fb", +"T3B1_de_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "29c78026d1760c76b4015d8b125780f78818756b70acb7ef43419908dd188570", +"T3B1_de_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "10d97ce1dd72142822b63218a3aa4eacd3b16bba3809f0eda4234fb95bcbcc2b", +"T3B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5ed7a9edbef7af20347d0d89bfd78e877c19e28c59a0460d61c9a30b4efe2eca", +"T3B1_de_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "369c41027c08a31faa0fcca716520be2c20998140d31800998f49e523438c76a", +"T3B1_de_test_msg_changepin_t2.py::test_change_failed": "4388b4b2b2fb0a621d268f62a23965f85e285b0d85567a3fb893c6f2ec73b681", +"T3B1_de_test_msg_changepin_t2.py::test_change_invalid_current": "b5f316a2623619368cd0005ddfc8b19da7c1dbeb70b7bedae0d76d5a08baa0c3", +"T3B1_de_test_msg_changepin_t2.py::test_change_pin": "635bdb26120f8d3407e4dbd4cea4fa051852a74e87dea45508359fab310d5195", +"T3B1_de_test_msg_changepin_t2.py::test_remove_pin": "81bf69c4cd4b91c82fa6c77de83f93fe9cfcf60abfb094c08f52c2afb2f4f8ec", +"T3B1_de_test_msg_changepin_t2.py::test_set_failed": "7a66af5eaf3ad7fa6a77a65a7962c81da50ac048320681727b9a9ae397b7d9bd", +"T3B1_de_test_msg_changepin_t2.py::test_set_pin": "88015bc1ec48ca150fc3a04858e1c14f4c8665e8035641b18fec9aa0370e5eef", +"T3B1_de_test_msg_loaddevice.py::test_load_device_1": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", +"T3B1_de_test_msg_loaddevice.py::test_load_device_2": "f0d18157b9bd2f128e7b07cee70a199a40c178fc0b2f2bb943de4fd31d1890f2", +"T3B1_de_test_msg_loaddevice.py::test_load_device_slip39_advanced": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", +"T3B1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", +"T3B1_de_test_msg_loaddevice.py::test_load_device_utf": "a3fd3415145fdce244950f162ce09d89aea8b64754ff9b7881f794f2772e4239", +"T3B1_de_test_msg_ping.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", +"T3B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "b892f54b08ed97cbe0e572d4a9adfb979a61ada492278987a93c3917c5282609", +"T3B1_de_test_msg_wipedevice.py::test_wipe_device": "83b61032ca87fecd27e115b4938301f42bd347eaac440be5490beecd6242ba8c", +"T3B1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", +"T3B1_de_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", +"T3B1_de_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", +"T3B1_de_test_passphrase_slip39_basic.py::test_2of5_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", +"T3B1_de_test_passphrase_slip39_basic.py::test_3of6_passphrase": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", +"T3B1_de_test_pin.py::test_correct_pin": "a43193a11337162353c3426aa7b59be36134fd4c20369526df0c6dbbd3162a5c", +"T3B1_de_test_pin.py::test_exponential_backoff_t2": "f4ccf6b551635808fad033136f25118d322d87628c47e33456fb63cdfd397ac4", +"T3B1_de_test_pin.py::test_incorrect_pin_t2": "08b8b915db87fb4c0d7b2e2687d67c90257ab5e8aada6165af2bbda52023c065", +"T3B1_de_test_pin.py::test_no_protection": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_protection_levels.py::test_apply_settings": "9ae0261981e6dd35140eaea5a10b603e3852f52f997b3d539046adf5629aceaf", +"T3B1_de_test_protection_levels.py::test_change_pin_t2": "968d69e5d4d3b7e2de44c61d1bf436a1a6261de4b4a3058ce90803baec3fe702", +"T3B1_de_test_protection_levels.py::test_get_address": "117b63c5b3406c99f1a50ca45ee58367ed39f663ecba5e742cd84ba1bd12d574", +"T3B1_de_test_protection_levels.py::test_get_entropy": "65c3baa1d91e695ebb67eebe5931c36b751ae14799d3ed343ecda57ff1373b92", +"T3B1_de_test_protection_levels.py::test_get_public_key": "117b63c5b3406c99f1a50ca45ee58367ed39f663ecba5e742cd84ba1bd12d574", +"T3B1_de_test_protection_levels.py::test_initialize": "72fc50e73e66647d38d60f1d44990f7ab2748faf5ccada4704ca84ff8b928c2e", +"T3B1_de_test_protection_levels.py::test_passphrase_cached": "d2467c07fd34ffad1ff6c5887af6ed74bde2ac95953e290c1ca1a7bcf22abfc8", +"T3B1_de_test_protection_levels.py::test_passphrase_reporting[False]": "e83fc2d7c868e1e2b6a01b1bffe12e78014b9b6557b95322fc389a3d05bd9d04", +"T3B1_de_test_protection_levels.py::test_passphrase_reporting[True]": "13edb97ece24ad1df6a4cf3cc0ba20af8cd88b2c85345149598621390f0014b6", +"T3B1_de_test_protection_levels.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", +"T3B1_de_test_protection_levels.py::test_sign_message": "ad9a5932f14553099eefb81efb2174607aa800a1f0a7da5c25ccd9d7cc3bf6db", +"T3B1_de_test_protection_levels.py::test_signtx": "4109e4b91b6a09d58029f1c4d6baed24d25fa7d1a35f9195f39af1fe172e7cf8", +"T3B1_de_test_protection_levels.py::test_unlocked": "c37426e06d6301c72c1f2110ea040b92ca1eb5190055696d14be2730fea13013", +"T3B1_de_test_protection_levels.py::test_verify_message_t2": "ed21d6e6e9faf5746a845dd7e506b0f8cb1a854bf279adf0c8e1f0101cbf3554", +"T3B1_de_test_protection_levels.py::test_wipe_device": "a9a44ce394801cbd06c6f4394fc0fb2e32bbcee9e165168f475c7317987d926f", +"T3B1_de_test_repeated_backup.py::test_repeated_backup": "71c4da86452ebb39b78d71c91bf370d940952685274e11f1fd7eacc1f03dc2ef", +"T3B1_de_test_repeated_backup.py::test_repeated_backup_cancel": "0dbed525a45f2acea9dfafaa309846e6dc71ac4a0513a670b0ac8ca08b21604c", +"T3B1_de_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "87ec74e08e032076e43531238118e7eed8a24102dd8193825afd5e47c16a1949", +"T3B1_de_test_repeated_backup.py::test_repeated_backup_upgrade_single": "38f9dfddd8852ca784f0327efae83b1d0bbfbe19d933838ef020c3880116fb68", +"T3B1_de_test_session.py::test_cannot_resume_ended_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_session.py::test_clear_session": "3063aa83a1e4c5de6b8e69367809eb1f05863068856dcceeec4ad9410b5c798f", +"T3B1_de_test_session.py::test_derive_cardano_empty_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_session.py::test_derive_cardano_running_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_session.py::test_end_session": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_session.py::test_end_session_only_current": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_session.py::test_session_recycling": "a1c6ee4b4d2fd7da7ee8f613b8fff0d5ee6f80e621bf7c41cb0739866b86bfe1", +"T3B1_de_test_session_id_and_passphrase.py::test_cardano_passphrase": "3da12ad56524a450bce0eedcd4c5387b6e518c521ea78d1e2a3b4c51ebbdac46", +"T3B1_de_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "308ff38eb0982d7fb99e74e353f7ec9ab82a1f4b44dc84cc426a1fbed45512b2", +"T3B1_de_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "c6afe93e023bbb9f10823b2150ed8f1d96fcc4b455472ec7f90a7e7ca42d9ae5", +"T3B1_de_test_session_id_and_passphrase.py::test_multiple_passphrases": "8a86f8d317c391c0e4fddda4e532e8f80119c771f0364a4d02f4b48c2c76d25e", +"T3B1_de_test_session_id_and_passphrase.py::test_multiple_sessions": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "36cfa58aee354e881c1719b1646684c9ea704dfcbadb286dfcca4cf87048300e", +"T3B1_de_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "2ee243f95e209d59849bd1022ea5f30beafe27428e7f6651db59dbb7e494033b", +"T3B1_de_test_session_id_and_passphrase.py::test_passphrase_length": "49ae473de78ff7ce67c124c94837d487d0a9b9f2116e91bce995bc11ddb94cb3", +"T3B1_de_test_session_id_and_passphrase.py::test_passphrase_missing": "d2467c07fd34ffad1ff6c5887af6ed74bde2ac95953e290c1ca1a7bcf22abfc8", +"T3B1_de_test_session_id_and_passphrase.py::test_passphrase_on_device": "2a99e458b0ca7da4c247c6236927b6a97132e444ac60004b3393ec7eaf46fffa", +"T3B1_de_test_session_id_and_passphrase.py::test_session_enable_passphrase": "67f7ced2940aa158b7d9c8e3034a49f48de3de75234350063157610a61073fbe", +"T3B1_de_test_session_id_and_passphrase.py::test_session_with_passphrase": "ac99232a08c165355831817fec3cabb650bd1c75b19eb78126d79aad472e753d", +"T3B1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "a771ad2ebdf7697d001e910440d136847a627fc654ae5871207a18aace65138e", +"T3B1_de_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "db0f4842937574e363039fe84ec33be248cdab6ef72680f19584f552c60b2086", +"T3B1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "c3a91ff3222329e3f84283692ba0453969b24243fee5ed4c2bf93170fb6d66cd", +"T3B1_de_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "9bf1088d861d3ad90ee92f771bc41912341c099c36b35428ef6fa3f7c77dfd98", +"T3B1_de_tezos-test_getpublickey.py::test_tezos_get_public_key": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "0be3c3194bbc0365f9294d8a29717ea2b07d663dfd78e148700686421ecda3fd", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "679fc9103a446e14f5966f22961e22e3ee8ae23a2fcdec87e7a85b2a0f15cbde", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "37b8b2b01fd8b11e2058206d3630c90f01fb634ad3bf3da3d334a7d716ec442a", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "994df55fe266bb73337ad51c333bc29907549691646cb5f7be571580384cc1c7", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "b7c9f9608fa6719d9c28c80da4ece8c747a25300a174e5ecbb2e1c0ff69d003b", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "5b520cf82fd6d54bf4462e0a5ddb2c1b6561ccd394669dcbe26ce2ee5933d10e", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "a8367b53742425165f0b2c25f0ad411d6fb0a5a17621881206bc9e2ba1434ced", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "51c47cca49a4b3d403d500ce6bc2085fcf001e649e7b72831780417b83d3aa62", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "e8bbc64f602f34d73a65dcc8db33a801340276e087f694cad794f6f2c400a459", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "4ad474b86c8e3c9cc590948661fc939779a26dca594262ec6b172537e7de6d91", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "e473fe43f87d09e01f2409e698d64af82ddc6a35f422baa2ac6711d6be524e29", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "5d1a50d706b6845196fc81f59bec2c950d618cbe722458239c97d1ef0ad87b0c", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "12c52ed63a6c1533c5d9e7a1e49f9da9c9a6d970aa93eb8f35f09eb05f746194", +"T3B1_de_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "152c3682a46c5262d24eb7369a7b5c8f930628bb74641778b6c5311f8e6ca51c", +"T3B1_de_webauthn-test_msg_webauthn.py::test_add_remove": "ed9db521f9bb579c35ed8df8421ed84df45121649d99ea04b071da0fd76ea57d", +"T3B1_de_webauthn-test_u2f_counter.py::test_u2f_counter": "8f269d9d7ae6eb993d01a74df141d055e67682d2bd8683ab3aaf3310f0302985", +"T3B1_de_zcash-test_sign_tx.py::test_external_presigned": "b10849bd341489f6b484ed89b82139b2e753df1538854c466e7f67e4b46aaee0", +"T3B1_de_zcash-test_sign_tx.py::test_one_two": "0736bf7b7d2798c27ce04cf26c1d625dffe6a9e757c0daa2b8d50e289d69cb30", +"T3B1_de_zcash-test_sign_tx.py::test_refuse_replacement_tx": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", +"T3B1_de_zcash-test_sign_tx.py::test_send_to_multisig": "57384f2fbbcadb48cea35775b4002fc3bdfa5084937d53a5e7c55e4a4340345d", +"T3B1_de_zcash-test_sign_tx.py::test_spend_multisig": "83496737c3d1295ba4dc60c7d24c62830c6a772725d0b18bd51ed5748f69cb0a", +"T3B1_de_zcash-test_sign_tx.py::test_spend_v4_input": "3a8f455f7d766013e0d9152dce744c82c414ed8b18a1add1db7a438b74e628c5", +"T3B1_de_zcash-test_sign_tx.py::test_spend_v5_input": "cec6e9a45ebf4f5e9443cbe3cfac68fc2375dc37cd0cd7d4c4184c3cd21bf4e5", +"T3B1_de_zcash-test_sign_tx.py::test_unified_address": "7d61cb431c163433fafbfa88e8432a1396fd9e2390ebe2b7bcd2be71db62cff1", +"T3B1_de_zcash-test_sign_tx.py::test_version_group_id_missing": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", +"T3B1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "e76ef483e6b929ff74ab0425708a86264ba8d6b58f3e6f669e3c8d794d02b580", +"T3B1_en_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "56868c4176799e51ced92154e6d1525565b68b062d91ef52503def0c6c8fba06", +"T3B1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "3aab3fa9eb585ad46b386a84a64c090bc9b2f50009a6f183bdda44372991581a", +"T3B1_en_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "4cdc17355b3ff7669f89aaab116083a82bb6842ddaeb78f857992d13ec62bc0d", +"T3B1_en_binance-test_get_public_key.py::test_binance_get_public_key": "9bf1d886be14c98ee77e174a7398e7fe635ccf17e4e9a37256084c681e704682", +"T3B1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "4988d60439f13d93f622ab590b12abb7b306e9dff297e34d5ecce08f62af3599", +"T3B1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "b1a1d84ae743a0d0a9db95042097cff8878f2fbd2ef66ba7196dd70ad3c43856", +"T3B1_en_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "df56a6c7396a9f9f41c58f9c4d8abe49d7c8c85abaf0ae546c4086669a9f77c4", +"T3B1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "4988d60439f13d93f622ab590b12abb7b306e9dff297e34d5ecce08f62af3599", +"T3B1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "b1a1d84ae743a0d0a9db95042097cff8878f2fbd2ef66ba7196dd70ad3c43856", +"T3B1_en_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "df56a6c7396a9f9f41c58f9c4d8abe49d7c8c85abaf0ae546c4086669a9f77c4", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "96f583f815e053d2ed5763d7841b2572c112476fb9d1131a1516e2e8d3f8ec20", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_get_address": "a96bebc82d5aff9c6a8583ddb354e6427689a3be4fddf082c3cd0e8722e54d46", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "4c2bba305bab30de2fcff0cec5ab1192f2e4d826d86f91f7172dfa624f5f3139", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "5f70b535406a6254113ed2a5f780ba98b8205abf6425eb7038d22395953aa560", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "5ba615e3331c3ed67e41a569862c4adb02f324d0e8d406fa89eaa12625ad0d13", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "5ba615e3331c3ed67e41a569862c4adb02f324d0e8d406fa89eaa12625ad0d13", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "4f275de439c812363140d3839ebddd9243e2bb34d80d02a487361148b2bbab71", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "64fb8501fd5c522084222d12a008938b44051131452af9efa5d354246a43a3b0", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "a005bb59161fccac967b138bb4113b8e46163b45869b51d526d5ac004aa86d5b", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", +"T3B1_en_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "9321620fe3fa3eaf6c83d313cc3c40b4b59b454ad24d6954440d3bb9285b9b5c", +"T3B1_en_bitcoin-test_bcash.py::test_attack_change_input": "60d7c6b95cf7fd47bd19e9a34a4b9ac1c3c9e06ecbbc82a1f4c162cfe62e707c", +"T3B1_en_bitcoin-test_bcash.py::test_send_bch_change": "25b9c86a8da8e4ce984b4e51e8595d9dff82441f63e148cb6263b5e81a605b49", +"T3B1_en_bitcoin-test_bcash.py::test_send_bch_external_presigned": "d71ca13edae80607527a670d8ea4f34b0d119a1a96de74e01e8ddaa0973603c9", +"T3B1_en_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ccc768820a5ee76880567675af759c16eeb4790f59f64b680d895728bc7280a9", +"T3B1_en_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "ca779e53833a7eea19bba69009b8bc1fe82cdf392834e98569abb3ed9c74fdba", +"T3B1_en_bitcoin-test_bcash.py::test_send_bch_nochange": "1237a09178ae3d403d995cc6b83d2da7db49da97cb9735d5bee7f305adf390ca", +"T3B1_en_bitcoin-test_bcash.py::test_send_bch_oldaddr": "b3f95c6fd8c659a9235f66c11644718ad0dbeedd78a880a20a3c197b81797b94", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "558aa84a9129920eabf7101b013d0d1fb56c89c66873f3dcfe19ec22472b22ba", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "0ffab62bd4c51d042e77c23f5569b9b9a46d9aae102f55edf20d7894dc75b17d", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "243487cd2ecbd125566ed60959c3a50f04290ee225838e5373d2a42d03d5fb5e", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "bad6123462cf0f8c9d938ca92ac9841b53221e5152f27bc92959e870d4108f1e", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "c66f3f30c1a6c809fb8c99a9773c9a9ebea29207c4383f8507db751ba59eb11f", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "ab012153490f26746ff9a1b5388f2418bf7c9d98b127217babbeab339245d8f7", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "2c460c0e3885c6d9e68db3175117ce4db5c8331034894caab942d19a3061805e", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "40c7a7071d082bdab14e7e3a018dc07754b1e24fd9e8857daf445d343a581403", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "442a787c067f35af606eb27a2a585a15272bb920af01070f408a402603572b39", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "d53ebc2f1c866b3d5920b13d9ac909fc81d4ca943a0625801b5dc533f2fe6ef5", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "de19ce37833a9244920ec8d932ac88f12e4bbc7c2d41e882fb5d39639b28c7c2", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b42ab862d2d45bb9e0509fc4ba4d68405acde83fda935c5dafd44d9e48cb29d3", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "0f5cea13c694bcfc74dec9d857984d989b31a8bf0f215199f1db7a5a0e452f4f", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "558aa84a9129920eabf7101b013d0d1fb56c89c66873f3dcfe19ec22472b22ba", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "cb4cea77c61cafeece033128c8c050060cba7c64e4ef255dc59b235324bcf213", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "0ffab62bd4c51d042e77c23f5569b9b9a46d9aae102f55edf20d7894dc75b17d", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "243487cd2ecbd125566ed60959c3a50f04290ee225838e5373d2a42d03d5fb5e", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "bad6123462cf0f8c9d938ca92ac9841b53221e5152f27bc92959e870d4108f1e", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "c66f3f30c1a6c809fb8c99a9773c9a9ebea29207c4383f8507db751ba59eb11f", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "ab012153490f26746ff9a1b5388f2418bf7c9d98b127217babbeab339245d8f7", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "2c460c0e3885c6d9e68db3175117ce4db5c8331034894caab942d19a3061805e", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "40c7a7071d082bdab14e7e3a018dc07754b1e24fd9e8857daf445d343a581403", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "442a787c067f35af606eb27a2a585a15272bb920af01070f408a402603572b39", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "d53ebc2f1c866b3d5920b13d9ac909fc81d4ca943a0625801b5dc533f2fe6ef5", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "de19ce37833a9244920ec8d932ac88f12e4bbc7c2d41e882fb5d39639b28c7c2", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "b42ab862d2d45bb9e0509fc4ba4d68405acde83fda935c5dafd44d9e48cb29d3", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "6b7c12363fc566de9d35013be5156c970e9fba33c2ed73b4a7e9b06e0974e867", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "7714578913a2a1e573193ac78cddc20c2df6c2856ad8c50d447906bfee41e4f6", +"T3B1_en_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "0f5cea13c694bcfc74dec9d857984d989b31a8bf0f215199f1db7a5a0e452f4f", +"T3B1_en_bitcoin-test_firo.py::test_spend_lelantus": "711c7ccd1ed628ea0b6a4cadf39eb1f6f15cd1081c93aadc391d5eabe5a36f6b", +"T3B1_en_bitcoin-test_fujicoin.py::test_send_p2tr": "bc34cb343be7d62885f00c4c8f1fbe1696ebe8e53dab53c2fcbd97f5d623738a", +"T3B1_en_bitcoin-test_getaddress.py::test_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_altcoin_address_mac": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_bch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_bch_multisig": "63dcebacc9acde58a8e518ca08d4d0508da685a468bc6f7ecaaea33317862477", +"T3B1_en_bitcoin-test_getaddress.py::test_btc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_crw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_elements": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_grs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_invalid_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_ltc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_multisig": "b1a235a0cd5e9991b64714a6850412c475c46ddefbcae0391662f7d4fb934814", +"T3B1_en_bitcoin-test_getaddress.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_multisig_missing[True]": "f4a9b7935b7d870f13eceb6efa481095adfb4b5e9dd43d7cf2670415210c9319", +"T3B1_en_bitcoin-test_getaddress.py::test_public_ckd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_tbtc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_tgrs": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress.py::test_unknown_path": "098834a3b9efbf31fee211314340eb4a8f351e8ba757ec0a3f313c49543612bb", +"T3B1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6a437ce45f2ce4d13dd98328cfc66d3b6b119bd637f01148a723408b4f17b523", +"T3B1_en_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "fba5a970d47d0936174e79904c3e72ddcbbd18c6d650230643a138ee495f47a2", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "3c4a8b78580d73d17407543fbec8e292ef2afb39b155bfe4f46eefdff69c54b9", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "809388e68dd951e39d7ceacfbbfa9370b97a5a73232a79f992462830f053c9d7", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "23d1e5bd1b244e9c3a32c09b81f5cf3f71f2577fef9df2d8388c4b1ab50f5ee7", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "4a48d7445484becd3cfabb6ecb131398a447774693c828250fc2e4fa04cea84c", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "f7f3a5a31d942c688be33b2690986345a4de39997f500bc32b37b79bc2c73d8e", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "0fae5bbb6de5c70226671451794a34519ed85c9d95c147e55f1cef837f955c40", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "bb3b0ac405d04ee024109e20ab1d6434d2374024d7c2623af0acf01bc3a5c1c7", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "208159f7a0160f31ae17d76d6b78b1a4a1ab71bb0fd5f6c2b7e72e52262d90eb", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "4d7e17c51200b3008af7c3f6973216c675f265ad0911608eb3feb9028c0e75e2", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "a24ac9679cf76594293d642f012ff8e335264ff4b15ad4540f410e23ffb91923", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "9c1d356d0e9a3b58deb0d88d6427404cb16d01ed7821cec8824cc92d3fb357b3", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "d2732d2163b87bbc2e9b729357ef7b4fa51848150d199c710dbee2a9bcac1314", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "4603a37b79fb2c4c099d7af5f954f8b7f2583629a3606c0d952510c0a00a5fc9", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "194532560487437bd1d2557c802fcdc333511d4c5a7c628e9b9e95b3c84b6d8e", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "4be98705f6930b2a3c25e9bc5ea57d938a7b9f0ce8b7cf63379818e0bb38de89", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "4835648bc84d3ac179a28d5e32d7ede1c7979172f24da352fcdaec2b7baf1a35", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "31a69b3216cbc1e2ac24cd4e184f25302da9e8a1ad80801eb2a4f7db0419fc76", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "abb9fa03da8b03ef8a42e78e1b0324c8ee18227851c6bd3e5a68bd8d31943c30", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "ce472f42e18622512756287ab9d178394a8c0372c606e6e76f676b11091fd219", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_15": "55bf33145015400aea10a2ebcc0286daf6f73a55e92d62564efc15dc0eff7708", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_3": "029c68db26f669576fc9c564abe61cff868a3889842bf7bb7a9c73dd67bc9d53", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "1b303ed139f35c2b28a23e9d040be0cc699b5bd4392d07cba3955451ad613b62", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "1b303ed139f35c2b28a23e9d040be0cc699b5bd4392d07cba3955451ad613b62", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "4dd343a31ee80d8689de676164290060a5f9ba2b9ab43f7058e7422e30e91f5d", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "19116316cc26dfdb2d47fd614a410680dcbe84c5af205a3a828aabcecebb4d98", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "33b0980d12a96568052d5589eb6eb9c1eb0c9229ffcfea2e95a9ef1b64dff927", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "e9448a165c19b4136eb6b0b1b0d2194b0f2320d1b88d22a8e91946e8bb1c8348", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "aaed75a3003868548ea0b0355521b5001e272091308fbb0144142898bb97dde0", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "ac3fbdd417423379e1d724194883d1f20c248e60414f0ab0bdb47989356be499", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "362f3638e6904bb9cb28eb65a5c465ac305f1be563b2f075b44a45fa9fa8f210", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "2c3b3644c443b1d033166eff431a33fe515eee902fc2adc1901a51f6c6b7ac90", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "2f80534a10ac31b2b06414400f61d3af4ebf13e61376b24af38f2ebb60ae2385", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "a6f59c6faacdce78ce447ec89cbdea2bbca4e7246f59060cd9ad6c8daa1340c8", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "db6aa742fbd45f96f1d563995a1d89be7ea5326479091161d115d203bd87c335", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "2a14899628c9a8b37be13c36d0f3a82bc4d6e7746a80b641708ce028dc14d195", +"T3B1_en_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "0f0c521b22014f32e8c4cd78a80d00272db4e363e67e64ca5fd6c277292449da", +"T3B1_en_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "0ac142dc76b4931d0eb1db2afcf7162898a3ea35f09efc03e43563a087cb061c", +"T3B1_en_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "ad9329ebacf27f00e736d1d3d8a33a539512a23fd134806ddfe6da4e4b517d1a", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "495e3c575f858c7ffc761cecdc2b20dc9de2bbce32c17a69ce1c6f035e0999dd", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "14f83efdd6dd301e7b48a62d7edb938f7bef1c5f36288fd54a22a9977c58696d", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "d25e23bb006abfdbc898f28991e070472432a7b50404f7f1245b48c173582a97", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "fb38a10813c7585396485c9dc1501e1d6905106eea6e437a8211b5bf6cec3299", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "70b491ae0a54462413384ea727aaf1bbd7ae72a9bb02d3712d38b4f50c91662d", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "39bfa8a2587445be5d0728d713d3a74bc473e75c93e61e2b19ce5012fab86eff", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "a0e3114e5b2cc30be76d4cb07ba670a5371f769804e42bb240070476252c590b", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "d7616dce87db26760c484911c1b82eece67835a504e3eefc98dcad4ba8500aff", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "482a7d3ce0d25e9b940cb3571201b35a856187ed2215f12ce05b06b32e5ebcc1", +"T3B1_en_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "b339fb7515ce902e6f9b0371363b751207db9b93c3eb7fbb4696c1451b211975", +"T3B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey.py::test_slip25_path": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_grs.py::test_legacy": "9e628d7d05f8343667985b281e77157602bf0793de690a7c71dbe2841c95a631", +"T3B1_en_bitcoin-test_grs.py::test_legacy_change": "fe6bfbfb610cbcedf779de69717eb6f1236055f9f3e8565222a9d5c09b1d52fa", +"T3B1_en_bitcoin-test_grs.py::test_send_p2tr": "bc2aaf6e10fc2faf4782c091249115633f9f2fcb4f741ab2aa4f61304c98724b", +"T3B1_en_bitcoin-test_grs.py::test_send_segwit_native": "4be744cb0bcc261764704d445a59c2c0ac579af8d019a951cf75df4b2aa13e37", +"T3B1_en_bitcoin-test_grs.py::test_send_segwit_native_change": "abf631040549f6ef8695584b4071849af5fc7c931a77df785f7314df0d4525d5", +"T3B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh": "28dbc699c6c140e952e908b8708c1863fd6887c4d9ce37a706a576430c4bb463", +"T3B1_en_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1bf98959c43fde71a4a56f75eaac10772e22c563ae39a8ee31884cf6e0212936", +"T3B1_en_bitcoin-test_komodo.py::test_one_one_fee_sapling": "1ee81415775f86e0d86d2013a27747f9c8ecf458f3440c958616fa4f30d2cb2f", +"T3B1_en_bitcoin-test_komodo.py::test_one_one_rewards_claim": "2782a2a609b3221bbd257fa1b2a1c63250c859d977c773998167c133731b72f8", +"T3B1_en_bitcoin-test_multisig.py::test_15_of_15": "b13b38413381a038573978d7cded9f6797bbec83a96350af72b1ee547b6ba2f7", +"T3B1_en_bitcoin-test_multisig.py::test_2_of_3[False]": "0d4fceca067d4d3f7e8e257826c216f0eca59ea012a688be9e00cede8c81c4d9", +"T3B1_en_bitcoin-test_multisig.py::test_2_of_3[True]": "9b25feff7a8b56444567497c260242aa453196fd16574cd6908425864c864ff0", +"T3B1_en_bitcoin-test_multisig.py::test_attack_change_input": "407a65466c63e8f8d33baa69f9ed12da7798bc1b9569691cd1cc153594e2a183", +"T3B1_en_bitcoin-test_multisig.py::test_missing_pubkey": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_multisig_change.py::test_external_external": "dfb5b1754351506d965fa6155b5c3979d9d3892bee05f4ab6b74141c9421310b", +"T3B1_en_bitcoin-test_multisig_change.py::test_external_internal": "f7120966d2ad4bc7d2770734f7e03949ac4cc217872c4d4b5ce174e1e774630b", +"T3B1_en_bitcoin-test_multisig_change.py::test_internal_external": "09eee59d2128333e5c5513900c2fc5f951c6ac0fd01e7eca1ef85ca737622abb", +"T3B1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "42ff1c411d728ce67bfc99114a0470990ecfab1b15b96a70ba6c0912e3ecbaea", +"T3B1_en_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "ee0ec7ece2ce0e6309d601412d744d73aea972e64d1abd42eb776c082fe1c654", +"T3B1_en_bitcoin-test_multisig_change.py::test_multisig_external_external": "9952b428ad515e312f7aa1e139fa30dfd446332f558b68dc28c62584bb86f14a", +"T3B1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "d9ff4a38b53436d655a8ddb65e4f7635ce88659424d9613947bfce96e5cd3d41", +"T3B1_en_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "788d640afdbc15a5b72fa7a49229c4a51d8e5bf1add2119880a83450267a5eb7", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "3f96244768b52da1808a6d47e4b4f5759ec59ec07041b9a7c37ee3d277382539", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "7bb78992b4d49c39e4f7379cc417a647096d5bd46ac1273ceeaae0c1de14d805", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "1cc94552fe8aca4039e349e720667c09e336ec03ee8d2c38c9ad0a4dd4aece55", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "bddccff18f8769d0e002971053e29d195a263b51f13dd865088e3fc7a932b522", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "d3dafe1f2ef8007378c3dd3a63f6d818083f2d1d2fc4b44657a8ad3bc55c8c98", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "84fd5ea3f166df9cf42466f09c7a3824e3eb0edca3191f4ac43f834262c0a1d7", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "240eb325f7a0b984d31f41389ad7ebc103693b0b104189a0945fef9acf7400ae", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "32d689482d115154b9eafbc19666d57ea82af580b45565bb6c54eae149827016", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "c25fd4cb97026303068c39dd3191618aba44ea4d65ceafbb99fdf730c6c91d07", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "2a6cc82571f79eded2cc9371ba4ff4afbb0b8980e363ebe30000dba672c6837e", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "0c8912320a3005107d7c9d59587eaf1c17effecab07d8f3aeb66f2cc2231fba3", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "80a10fdcdf16656c352740c4344bad2bd62c85f0b5c616ad7748713159b289c9", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "dfc6fdca2940af52f1ed90599d9bf7849aa4381d9cc95f18bbb8103446ff3893", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "e066234500fab50fc44d873d97bb06349e43a54fd3702236a5f0b5fe39984ecd", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "546723a6256cfce3d08fd532db94df2a58e00d0bfa3252194432e198fa657264", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "4b6e004f60ab63bfe4cea91a9a5e7a35d1ba36769c4f2472f8121d57018bbcbc", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "b506da5f1c161f68f67aea59f54b998de72f7b53ee4abb7a521e85406cc8be5a", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "cd2250986be372aded714e34dbe3374afe521c036ea165654e5c43b6aed37fac", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "bb4cec99112ae7ffed8cd776f127c97a945602536c94044504e9d18c1d9604f0", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "1d7c1670b324dac7f0c8c81f80aff72eef7c15c84d51a93c5e4d5d64ccb0912b", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "c95bb7567e849d6f7f3a2727aa96e66f881a042f15e1a012816735186042a2ff", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "7d18bc469cc81017aa6ce0609afe49344158ec01734c5cc58638d8300589763f", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "264b37c100c13dad663f56192c196189283cd55109eec26e60255b06d15bbab3", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "3e0281d5671b48403f008df28bf23ac88032f81ba3ecff707a2de60fc46a2b56", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "4a87faf1b36cd0393652d1b7558afffc31241c79d4f2bb95ebd6e03d40c407e2", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "74eb29fad2b533226d734a9a9cb63d6da2d0ead3053c0dfecc3ae6dc48232046", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "f0e7784986c3360c5f96684e26ac41d6098bbe5379ad8849bb8a767e48bcf54c", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3715419c40f1e58f6f0209daa8773d3bcbcde5a6183aaacc4f88f9b1c6d521fe", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "d21c892d82711bc565026bc5de2efd0764eb1f595b47e29554e7f970b5170f6d", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "c7b296acfd5dad1d4d48e724d0ae5bf06d5d656e6f9943234e6803745d1d9f91", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "84666e2e64f0a5f8e64989404114d992b7db958c647b514a848e1235f110bf18", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "3ccd6f8f8b56bd524365bdf73fea1978ddfa20b1e38ec79b598546e2643ebd7a", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "1204e9c58645bb6999163f409cf151bf1b3051e96460157c525de2a0966e32e2", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "a5429736fcc6ca68bb56759b79e5a873259ccd7a714e12a467a33d55165df352", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "3c2306e1a0ff9055de93e1906161473142d2d0fb2a11c05c6aa50000b45f09d0", +"T3B1_en_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "bfee7588a1d97517f06a4e81d4732bdd04c34402f6135d5899c33104c2636cff", +"T3B1_en_bitcoin-test_op_return.py::test_nonzero_opreturn": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_op_return.py::test_opreturn": "ebfbc38aeeda098320ee62863bd17ff540d8d7bbc7bb1feac9f61b923a97a9b9", +"T3B1_en_bitcoin-test_op_return.py::test_opreturn_address": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_peercoin.py::test_timestamp_included": "3321b69598953f1fd11e4bd340fed18c6e11e7541a5f4143640d7965f7213ac8", +"T3B1_en_bitcoin-test_peercoin.py::test_timestamp_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c62db31d936c385120737329a84ff9fe59267beefa9f6e00feb1e0606454feaf", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "ab6dacbf0439a55b40f5082da0036ab5b4cfeea7e4a214b99d6e449a287d0455", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4d6cd4001e91a85c9df6ab9d93068155e10085ca731f3f4eefbc282d0ff99ca2", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "5d1caafd5dda452e382882d1853b11d1f6695e04396ca59dae988a50f2963e4e", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "96c241b53e3cf6f8b3764e7914e6587d85e4870fc9c85436feb232b4586c5b1e", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "22705cef573f51e33f95c928db7cf6333086bf03d5559de524a26d732e9af281", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "d2fda0e4f7b5485450e3036193f2a3f997819de8e0905077794138983f57c45e", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "00ccc63d037a62edb3ca567c16d8a6b27737af171803c4cc8d6c4d97479b8358", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "00ccc63d037a62edb3ca567c16d8a6b27737af171803c4cc8d6c4d97479b8358", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ae5da170ce1af9e87783c7ac8e55395d2a7eb7d442dae7ac3798a118f94e7680", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "067be29db90cf6f30d9b7642cb10aee02d5d200ef1a97517594f92e1a2dc4583", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "fadda387e14553f065171c8457fe86f642d35704669256ea30d245edb2c59283", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "fadda387e14553f065171c8457fe86f642d35704669256ea30d245edb2c59283", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "9a004646f50ab4afa80ece3b2a1f2c3a5d0c3b3d1a8ec70ed9b4497055b99a7e", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "c527245de51677f631ed1204d61c4add3cd28a1c78bb5a27825fb2656d65ea55", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "e38a633a1b0fc2d8db808f02a64e521f531e88399a697e0184cbbb642680a862", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "98dac05a444553eb733f4ebb76a83d5310f35f1d57f7613909671d02cb62bbd4", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "e1c8b0b2a0feff6256cd985cdf7abbcb68c0d76ebc1141758c5821c4bc5bde69", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "26c8a33c010252699c4ff999f7b5b1bd8f80657e865699875d3e082563d6bd11", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "0bdc267ba9c39cf60775db8c92d2834dd71e24fa964f85358a94a73de0c1f853", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "205b54e1971cc5ad481a3ea9a3f89c8d408aef858dff573d5e17b2745428b283", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "327e7017eaceb28e91d80a82c11ba854bac79401572f96dee6fb91c68e4b57b5", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "bc05b41e02877f5ec3117222c50b330a21560ff49791824029964bb51a56b2b2", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "fba47cd35892ac7c9a460fc12afb785f59613eb388d13cb660f335d2150bbeb2", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "ef86018f0b266f2968275f843dfbaccc4aba05facf0c92ff432ef2f1d6fb18c2", +"T3B1_en_bitcoin-test_signmessage.py::test_signmessage_path_warning": "73d55c948994957a7af2aeb2927657fe39b1f1f5db35075b246512a4cc695242", +"T3B1_en_bitcoin-test_signtx.py::test_attack_change_input_address": "4a6cc434f3b34b1873ae65e584d28a32719b968b08a0fa118b5c44d56013e232", +"T3B1_en_bitcoin-test_signtx.py::test_attack_change_outputs": "1ad627b76ff80e5c239efc7e9573998c84d9e0bc078eca5d599ab470afb5ed77", +"T3B1_en_bitcoin-test_signtx.py::test_attack_modify_change_address": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", +"T3B1_en_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", +"T3B1_en_bitcoin-test_signtx.py::test_fee_high_hardfail": "c90bcc09994ac08f91313f586b1f6abc9c85e4095473e29fe38884a94d756a87", +"T3B1_en_bitcoin-test_signtx.py::test_fee_high_warning": "9e034c289bf43d29cb02f7c00657fc1ecffdce89e95ee21b6df4feae79ee8ff3", +"T3B1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx.py::test_information": "9a422a813f7c67ab09feb2e57d6ad3f2f593c90542f180f102ca35a20854d34f", +"T3B1_en_bitcoin-test_signtx.py::test_information_cancel": "717dcdb751baa4d40424b26b3e415a486ca0d515a4066b84e0f34c3cb139cae8", +"T3B1_en_bitcoin-test_signtx.py::test_information_mixed": "023808399de27f5ea3484c6fce6557f45aed44219453e7c503e28369acf8ecb1", +"T3B1_en_bitcoin-test_signtx.py::test_information_replacement": "9521c2e4bf4c09cb010cc811014d21f92359e4d4d14d4f510a30f34e40973cb1", +"T3B1_en_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "fe0a2a515fc4e1397cd3539f4113975348a5c0236d7a7ca3a455af7019bf7f93", +"T3B1_en_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "9f514e06a9c0b68ba1237b1b2c79680aaac37bcc7ed81259a8367e2a488812bd", +"T3B1_en_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "de5a8a22439e8b63f12088fb766126c5822adba276ec5741c273115d8f230c5f", +"T3B1_en_bitcoin-test_signtx.py::test_lock_time_blockheight": "a184091a70fedb8f1ef063df2155ca63f1694f85e135513e21d07f1a43c3e178", +"T3B1_en_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "d35c4bd90f36e2a4a9018a8d11a3f146dc566e48ced294ce37bd68ed6f70e1ff", +"T3B1_en_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "fc870a46c971dd752958d3fe4fd127325af21b58f6c6a67a4cc45ab4e0e79e23", +"T3B1_en_bitcoin-test_signtx.py::test_lots_of_change": "614aa861733ab58b5c3b2486d1b06122876600bef1750baf4e17728210b11945", +"T3B1_en_bitcoin-test_signtx.py::test_lots_of_inputs": "dba35a756b4072d89cdd7f709cb2fb907d39524abc1a740edacc94aea6730112", +"T3B1_en_bitcoin-test_signtx.py::test_lots_of_outputs": "2324937e046144b7aec7048abf344f60530e73fafef8904c058ebacc1815c95d", +"T3B1_en_bitcoin-test_signtx.py::test_not_enough_funds": "26d52056f4225156037623a75c24342da3a4449e000e3d3a6374ddbce67d248e", +"T3B1_en_bitcoin-test_signtx.py::test_not_enough_vouts": "710471660bb0197968c7c0f4e9c0c440cfb7180418ab59285b1fd8e868f14a48", +"T3B1_en_bitcoin-test_signtx.py::test_one_one_fee": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", +"T3B1_en_bitcoin-test_signtx.py::test_one_three_fee[False]": "2931ec5af9ae76fca217ae0a3ca3876ce005a7ca97c293e2c123b6a20e85ffb8", +"T3B1_en_bitcoin-test_signtx.py::test_one_three_fee[True]": "a7c36e7d9f78d6d3013088a5d3a7b45606f3c6a8559184a4e21e33a3ca6fc7bf", +"T3B1_en_bitcoin-test_signtx.py::test_one_two_fee": "9ae2d30345a0fd77ded67ce9e0eaad31df430d7004f328e367f292c936e0194b", +"T3B1_en_bitcoin-test_signtx.py::test_p2sh": "fdfbc617bb8ce99e4a3915261cbe37dab4885f992d625129f6d4b4e43630eabc", +"T3B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T3B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T3B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T3B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T3B1_en_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "7b7bc05f86b161593e3f0dfab887a37613ff6ce419c017bf206e82c3675d06b6", +"T3B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_signtx.py::test_spend_coinbase": "7104203f2314660be25e38d3afc1397903ba5f75f2821a643d0d37b63dd42cf2", +"T3B1_en_bitcoin-test_signtx.py::test_testnet_big_amount": "17c0938f0ec1c083c1de19f22c17dcd2e66a17e0f15a91443e9ac7590aa93356", +"T3B1_en_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "fd287a9f28cb6f7805dc142397e97db43f01ef6c0e89d5d2b74e8eb262329cf7", +"T3B1_en_bitcoin-test_signtx.py::test_testnet_one_two_fee": "45d46587d0d51d3f354fffad5c48c2cb63cc637d962821a67f0dd2d6fe2d4f8e", +"T3B1_en_bitcoin-test_signtx.py::test_two_changes": "30a6eea8a7c8a0a12fb8e641fdf42933ea0d7d2a53c0e47e4432285173da9678", +"T3B1_en_bitcoin-test_signtx.py::test_two_two": "d1f5507be95e50211863e394a2562f226f27c81186456f29652d3ab47e2bc070", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "b1bccbf8c9406da9268f8c32f9a58dedb4100c5ef77c8317a672d8e0cfd1c5db", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "45b82390c212a1703f538d14d8d3a2632e2c672080f1443fc4eab06b3f129f18", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4e5c9b0358d92655979ba18170bdd673e15407dcb3c075b55ba0ec665889e512", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "53a74c6927f13a4e8532c6f4b2bd9101fe6d00b1ca9866631003330b3ddc6f59", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "70abfc46abba14f0e06c1b197970ac0d8a03e12ca27a5294803b0ed773e163b1", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "8faebb59e93420021615b71bef6f25cfd1a58adc54440a40e3a5a5227d5e5a1a", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "e0f9ecea7df742fbcc63b94b2f2981e00b0e649c1a01f26ea2672512fa36aaa8", +"T3B1_en_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "fa651a3d73795053b95513f8e1384d79f696e46db71f20ec9af75e91f4f3a9f7", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "10517bdbe7e530082ada2e0246fe11bce0dfdc741ff71b5ce0b1bb33d4d4bcae", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "1688871690cdf4df4f98d88cde523672923369f86f3bbc92faaae0bd5132c0ad", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "0f6b1ab9e3a80d96d4645a902edad4a83f384c774b78f4aa7fdb9c8598b15540", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "a891039e5dd65829aa8554277ca4e31f5a042e8dff282124864754b8895efacf", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "c028e8e71c6ef7da9857f3696f383d339b6ec72d2cb71df49fffb0f56df71b66", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "f95c5fe6cbad5ec7838ebb416cff4b77ca7f458d5dea033223e7dc6623802839", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "3e83b98315dfbfbd6c9d8fdefb86b9aa7e0537f1c869f76b64e7b70df09c258d", +"T3B1_en_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "647905b99af69da785bae3b1edea3a59413ebfcf13a7e04b8f87b4d90bdce074", +"T3B1_en_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "6eff2150f2f0fbcf3ce544396c81f5c8bdade9e4747203f712f6f67aece95c2b", +"T3B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "87fe458201367fc41d3c0338f8c4e77187abaadd211490b59445b89d275f94e9", +"T3B1_en_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "3a186db5b25aabdaaed720a458ccfaba3b5d9ca718264f4bffab8116b8d1ed20", +"T3B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "b74e61f40268e74a969aac293fe5e88f59b08c9800f64f792707aa45a346c661", +"T3B1_en_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9cbba7dd4785d5db8beaeca7737566518b2a300292bffa94e46c3408f726aff1", +"T3B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "b74e61f40268e74a969aac293fe5e88f59b08c9800f64f792707aa45a346c661", +"T3B1_en_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ad98e655cc06794f61469ab68e2a984141cd7c2bf69cf29623d178ed94e6b58f", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "c072f90fecb07a693c09038a26d44eadae88854df02e0537aa99f946d641af83", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "249e65809ac735eec03907514834fa347df6fa2f44d63dfc09cc89defd85885e", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "44832d3bb1cc0a85743c73da1de20d97e35758bdeb346eca0d62ecefbd811ff2", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "c1102ded23cd53b8c983962c052dca8cdaaff88982a2c2dc1c2d7c2841eaf9f0", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "cb85c264e20703fa89c6e592a8d1c884995d306a1be60c12173cfc41c9264faf", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "9ac715eb3c3027f9a5455812e2c2798830c618e1604f9e90c5c0c8f0f96c3dee", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "b5f892e61f507ef6b2947876d9b77af6c161359297c92744d5f208416696670b", +"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "942df70b7dec25e65d5274682b30a7ade355a6b78c2ed72a6e2cc165fe239173", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", +"T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "0385e3550e329fa5606b5cc832a0824629f1211a506318c973c0021c951e3fdd", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "2143dc83a562569771091087d89d164a2f6218ba7e0fa8e2adbb5f802a305ead", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "bd1c6ebb4d702ad4172f710e0760acebcd8b657b176ab09d694fc793eaaff849", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "10a40e65979497c3133baaadcef00665c7c224b03babe623a2b56dacf936d8d3", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "10a40e65979497c3133baaadcef00665c7c224b03babe623a2b56dacf936d8d3", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "ad5b171dc879b4c19c6fd16cefd75e677bebd5ad4f2a95670d7a71c6a83f2614", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "73a423e458b85de0702f28ae7809bdd03b7507bdf5726e539df0d5e9c0eb0cfa", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "60947b5820e78cec105c9f2d7f2cb18d080e6f9ab4e786655eda6adeafbf5b92", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "ad5b171dc879b4c19c6fd16cefd75e677bebd5ad4f2a95670d7a71c6a83f2614", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "3d655937ab909053a65198be3b9728822c8a732efb1fcb8da3e1db897cb894ab", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "8bfba86abe6ddf1ebdb50310bb124f3b3906dacf7c5ea57f06f75c1570a9665d", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "977e9399088b1939b139701bf27d2162ef208b6311a2d229f288cc7582f91a26", +"T3B1_en_bitcoin-test_signtx_replacement.py::test_tx_meld": "c175ec0da3d56c9be3a81a818ecc37c1422037d99083779b28608f12ff035529", +"T3B1_en_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "2c5fde3de954e7da0d19a669256c38482a1325cfd8f9cc933565c63ece53a383", +"T3B1_en_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "65f5cb6472d3a984ce48351fd64e8755976d0b565682c802f7aa6c48d4815939", +"T3B1_en_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "5acf5a8140256c5ac032c7d979c12f209f6348db06ff21f94b41851043a229e9", +"T3B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "f1efd6f85cdbe1137729bba1da137d8cf55ece9ca2bcfedadd3048b49fac9f7d", +"T3B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "25803b02caf67d1a2a73c67c2d4c6520f1573b40ad5162270a6f89d021c8b2b0", +"T3B1_en_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "be55d96d08c2c5d8096dca4a51821505490a82511dbf8a4a51c0cdc9449663e5", +"T3B1_en_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "05e2fe9203a2d65a99b8cee6df4b14dd9b9983e2e7941d3be6483148cbd8064c", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "0f086715760b3972fb8debe9faa16f61742fc82363847792359012f15c981a76", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_both": "7e0d9076ab86bc04c6c31525d3635596f633e23e5f20a2e441c54477b6512045", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "b52b7151d0664b58646407b0ab693c4df0c8b80ce02000410b835550915451c2", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "6d7a607066384eebc8c3c7855f6ef8116447b85f1b87035ea0d827dfabaaa320", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "cf2bd2cfb9689fe351500236685ccff4195cbbf2036c8506c4efb6bc2223dddb", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "5ff74643c61544d5076abeaa2c4fb391e430bcb99f0e8975151c5228d7c39fb0", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_native": "34fef841bd49160e2f9b2b16036b9bf18f57920beaad2b0834f20bc5ed72ed9c", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "374bc22a6e14f72dff321a99218987e027c37cb001fcfac39011c56aae1876d4", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "280a1634f531c441e2ba9c67ce762f37d0e0dea4ae47149a944182791b81af35", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "f41b63dfc0b63e17bc3975fae538eec37bdf079c629e8be468a2a4167a39cf57", +"T3B1_en_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "2a96c6b64f465394d5c8952915a5e484e089822dbbb8c467b449341a134d99c8", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_attack_script_type": "0da93bd80a79b76261daceb0beb21a98753825b514a76004b926f6c89b6dd624", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_send_mixed": "5d586d436be4b7ae8590b0c010845629e902e0225d411caa01fdd1875ef33c7a", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "b74e50e73f2b83584e49371d10dfee5943bb25cdf98d4c3735034fd082f825b4", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "6dad20992d92c4609cfd97bfad6d47a755b531cce0e7cba50f014a95cffdb597", +"T3B1_en_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "4ccf5f85cd263c97c797103acd207abcfc34fad9c3b9c91b9c7e9ba706005d81", +"T3B1_en_bitcoin-test_verifymessage.py::test_message_grs": "d300a6a3902b82cd6cb64d8ac6936bcaa187d429439b1fcd986512b71b5eef56", +"T3B1_en_bitcoin-test_verifymessage.py::test_message_long": "a4cf297dcd18edd16ac83a09e688ef0e0b6e049e7b40d17276a373b67e45ec9e", +"T3B1_en_bitcoin-test_verifymessage.py::test_message_testnet": "ad8d02f9ee21ca37bccad9954c696226b9b0912640d41a48e14ef7ea8c12df5f", +"T3B1_en_bitcoin-test_verifymessage.py::test_message_verify": "54c0daf2885f2f3d5693503cb88ab07332ca1cd80b46930f942366d6e0fe63bc", +"T3B1_en_bitcoin-test_verifymessage.py::test_message_verify_bcash": "4dc5452a0e7ddb626a18fc43a3d8a8596bb919fccb1e955d5bfd0cd7344b8f8d", +"T3B1_en_bitcoin-test_verifymessage.py::test_verify_bitcoind": "140bc4a2c8be416a038b0f16d9f7cce10839c6efa33a5cd436fa76246c4da5b8", +"T3B1_en_bitcoin-test_verifymessage.py::test_verify_utf": "7dfbaac3a12e196d28b4e828fe15be33da618d546ecb45439ad2f9a7191feca8", +"T3B1_en_bitcoin-test_verifymessage_segwit.py::test_message_long": "4debe719007c3bf6b024d5cf6bf59577862e1e34d7725257bcfb48dbbd1a4c91", +"T3B1_en_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "aa396aeae8eba6cf46db5f302798b552b084bf42536ff0528151a63fe887ecd8", +"T3B1_en_bitcoin-test_verifymessage_segwit.py::test_message_verify": "fff54589926dc1eb840f1a3b9de82d2a2a178add2c95b532cb8b6cada3498cb5", +"T3B1_en_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "1ad37a04a4c25aaf7f54037f1c6bf92fa9e97e17a095c7d71ba4eadcfb103a21", +"T3B1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "19c06cfbfcc58622c9fbbe14b56bee7a8a5d7ed094dc0aa4d85dd58309eac6c5", +"T3B1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "cf9f0fee72a2c1822250f938ba980a358abf67894a193cfaf9e7ab39e746405f", +"T3B1_en_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "314a767de1949e7ec83868654cdf8f3940624ab95db558e932bddea52518dafc", +"T3B1_en_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "d2b1c66934dab005f46883e0b4b60bb0d107f5ead5968c4b58ee9b5db41b6a85", +"T3B1_en_bitcoin-test_zcash.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", +"T3B1_en_bitcoin-test_zcash.py::test_one_one_fee_sapling": "3c584107e8bf3eded84319552b046ed43ee1cf65bb1f9b16084b834a95396e65", +"T3B1_en_bitcoin-test_zcash.py::test_spend_old_versions": "4e39f54bcdbfe1bf8d33b590d5132bc05cb64f4c4078543800243d1dfb15674b", +"T3B1_en_bitcoin-test_zcash.py::test_v3_not_supported": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_bitcoin-test_zcash.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "545061dc27940209d764ef8e128ab4ebf0c2d6bb87f5dadbd37931b895c1f1c7", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "4da4fc73f5a07547a3a272e6dd798e06f62127a5a9eed653178e2d5a6205f8c8", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "810e5d7133ec687da04d9363725fc4a6050c268be4d08d6cfa46fcdfb454c001", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "726bcf34af11d0a58da2a25294dd67673f684c39bf76cc9f0608b78930398ea4", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "c2dcbcfc84d26bc814f31d1006e7d40791570b082c4489d7a8838179ce5592bc", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "c12eaf454ac811420dec797d1a507cfc7ff627fbc0eb12078020bea2e27725ee", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "99a84f3ba0a8f99f0c551ab5783a7c342841af89ba78d1510213ccabc71c052a", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "bdbfc17421790c0092fa44f0526c10806fb2851614f0d6b5e6402249ccc02b04", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "9448e09cb83042fcff9906e3ba478d243bc87a38b06df5138ce21b0e5291cd7a", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "5674bf02496995d198ee16b62bd5cbf425acf325f3dfdc8b3f9b0a7161089974", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "f202b5c6459ceaf39a562fb764d6fb8fc14faa99b80277a6f21c8c8f7b396e87", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "bc6a7a850c37fa9fd459af73e6b2eb9e5269ee2929e768a92008eb1c2ece2692", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "a3d7d66dd984fcfe90be786bbec02d49346095f4fca7bc00b0c6b4ba9dac08fe", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "1e646757df11621dde64d521e36ede8f46e783811bf448e3379105019306f8fc", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "e4ab556c30d6ef3e0143476dc6a7b56750cee248a8d4d498cb529691677ae938", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "650c563e13e1fe80a2dc7caf1ed96ff28a143859ce5e6552d93251d312439772", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "99225fcdd71c7fb724b6ac9353c73460bf043d3605bd333b5b7a57179eb04e43", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "f5d93fd937cef667ea10ad652103606777aba71472e0cbb0f0c36604bd267a5b", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "987a869193c84b691a537636ea4d9e2f7797920344ed1d7889a1d534995caf7f", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "8b77d03a8ebb38313df52fb791d02fa174497988cca8a38aee12a276b9e2f40a", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7bb21789875b919daef14e909f9dd67feca9fde052b8d2103a27d5cf84f65864", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "622eab71b22f78a7ecfead248c142f3fc16d670f53ad1cac129f099e40320e19", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "61b1b3cd8414f575908f060a0b503c7f6382bdc5283832a06c8402c450fa5cee", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "573aee9f27cbf862c4cc27697621d66b3ae24885a05f4b0cf5d290fce4fc9619", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "720326fc357758dcb45aadb5d47a8a76b2d79247aec4481b9967632108dc04c2", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "36cdd72ee5475fd78226efdfbee0298ecb535319255c39e0a96032a16d63ffa6", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "d81a53e3565b5790d9d7c95941934a81b68ca5875efc9db9aa2b307da6fe3fcc", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "8ec89bdd02b8bd005df85f2600cd5fdfb6116714543a4cdc0537f8d649d2c28f", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "751052fed23351e20a26dcaf4d5b7d01e8c7fef1b00cde233944f2576c83f428", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "59ad2289ef1f669edec8b7a8a8f2db696be9769f94a81dd9f669926319337447", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "3d36f787b6565bac89ac5592dd2dc1b2a0c7dc59ffd57cf06a73ab2206743b08", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8c8474ef42dcc5807d18598f2671ca394241841cd0f0ebd1cbe996dc8f8ae2a5", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "2c90dc19c83cb160d17d2cd38821e6d5f75b2a9fe02a755a368823bd39782f4d", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4ab5d7c86398a5a61a8bd378f234999f147fa12c3f555d2cf090da869eb2777b", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "7c0cec097064eca5ff9373b88bff58fa67775069fdc16fb4a8eba71f4f6444a5", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "0f3e255262332d8cc7c46bace39bb1dec26ce6b8704f422e8b7c554ddba3869e", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "6b3af4d685fec5823b8743e92c75d338beaa0446eb0d3b3b721c5b6ce6fcc1a0", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "b708156fc244629863fd57b46bb00d357f37296ad5995c069d6cab4de77fd031", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "b62aef52cd009e5ba3324ceeb3913972315ac86d0fd4510c814308e6ecbefc42", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "aa5615f52ae1a8f4c613e73e87dd4aec5539e21232f6752b5fcf17525931e8be", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "a1e7128e23a8e8613a83c5ab86671a3b97f025a03609cc9bb35987f425151fc8", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "6693459df79b809151670e3de8b5f656e25248fbf2bbbdb2bd25449883517c28", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "46e5b9f8609dcc957ab5f2874374907a8c95746d36672ab3ac967a5956a64c21", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "33de2fd9072fd80691ad68e7f40e9e19d3b3e6e0d065750d985ed39d1e355324", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "20d33357921dc63afe299f4dd430f1f410a1750ee421496e511d87efa9db9bea", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "8334ea02738d240ffdb8fe3fd00181c97c3c00c9d1d22613cfef1daa66632529", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d768bc3fa7e19fc2c7ed3d4d0811484d23cb13a651c135b0a6fcdf03ba90a818", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "284dcb51422dada54ca2b0d5e68a80cb61ce66f4f782f9b71d53e97dbae428de", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "203de3e09bfd8e02815fbec2d2c9a32098bbeb22eb09ebffa22cedc3f1434e34", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "dcbb352ebfcf7364c5444d701d3e352a563d6bf84ce533b497280ba3a5793d94", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "63154a5aea226f4c70aeb4b28abdc71d6bb1a10d7eaafb3652e4a9579defe9c7", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "472e1cf5b66c21766eb1527b99b57f054da82a261f14e534f7f9bfb1df6f4eb6", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "c24c903146c41e2f193d28c2250880946c0f052aa659d82d3d9ac2969fe8992b", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "024bbb54cda195e931f9f7a40d90c2cf4461a25f5b5d90ba13d4954210120e9d", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "43d673ce17770d64fa1612e3bd0d69a55262a84b15659a9b676cc1f293254f24", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "70b83cbd0b0703709b9199b61311bca59231e4cb90c046448937bd8150690d42", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "5795fa3b7d80088919d0bc0ed5658643bb1890b9485bbafcbf7ea9d3333cf896", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "fb75b1696625fc39e8948ed7848dbd24b11d6877c3613836f315848d3ac38ffe", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "9d5fb653fa20706d481bae70e1031933bed19f3ea7bd44625f2f508cbe1a81e9", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "30f0f80146d1a81e6ebbb2861e01464a2e87859aae1bcb4643063cd35fe7e827", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "24d56e209abb5470fdf8c0469b4e2b38a58b60fb701570bba697213955f81450", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "589a7ccce1847077201219a61c007106e8fea26d08fcb53c453ae75500f81f1f", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "187a50c8cb1ae5a0d807429d4c0d6826a2881950054d6424144bf270ab357cca", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "fddd38f2a5c0effe216f0600a318b1ef52730dea57636659fcbfdba3251c144e", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "9cd98033c1421c03f95c13685c068cb283379d8fddbe471c08cb7fcb91d0b1e1", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "373525f97b036959fccec948b425dee2839b50f3a0be67b6ced9cdecb67cbf19", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "60d982d450fa6545ff619b70aa4b380ca01760b1d5616264262d58a235f7661c", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "bc61b006827d71069f6996b56e549c92e7d6893424bf870a3ca06593500f20ac", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ee19e643f5413b5ecc1c342b1f36e61ce42818ad466df9b380ff0f8b51803132", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "65c4b2d4ef234173b7ff5ed5f00f65c89f9753ac46be3dfd870344124e94e37e", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "4f9d5909a0fe423e69ba11eccf91416e4bf4aabf01ab4fec471a69766505d4e2", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "21ef4a3bc7ca7b0ba88c422a3afbdb64f3f8d629491a3f5f06c7d752e44f9eea", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "9b77590d58e509ab74e2ba86524f73329572c5eb0195be9e93f6e29e0667f529", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "d5abbf0109420642c7203a29c083b045af55e333f4f922b8fb099a840151bb42", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "38425ccf3b5dbdb2fbca4b6d7f416cda91668f6afc4aabd8b32172d51b47e85d", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "58e5de56b1ebdc0b3b46ea44ea7442b3b5d778895c6f6916b942ee85c4071e87", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "75557e2a695e294e1afd4c3c9e5117f4d38749bf459cf8be85434cb6647f4991", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d23e589f172ebf44062f303da14cca030e70003b58f6456e399c407bb5ae84a1", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "da94713fc26459581a376bbe988eef7b1f1cd99244768460bdde50ee451c21fd", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "9ce997bf95b89d0a9715f204420980b125e426136dfad6e04faf5d0f994faede", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "41364122ea9e9e2d173707d82d02348a85abb382647f2b9f7a1e273c6dd13c50", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "c75a822330f569d8afdfe02ad1e421171303c8d9fb3e9856bb93494a999030f6", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "81aef06c2f3331d7758db1601592c3ada3018132ed6792c1126d62a78166cfb1", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "1cafa09e0c7a7c73997a37f3a221eccc61f157a68a941e10d9b9ea273edce6c2", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "a1f6d5c8d8604e811c4b8ddcc43d7d19d039c24aa2494489064d0ea3dd46c47c", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "5c868a0786c0d7f73e6bc3264eb465ffaff1f327643ba3754214b2e8f0fe459d", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "49766385de678f60d32c2d2917a9a56932a32def07f96f5a198ece0eb2c603e1", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "c768c5a9d0ea4e0d7158048e59468edd7b23d621479294b586fbd966af9c6c2f", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "2037381a71effd407e166945821543ae05d7e45dd5b422676a1d05b4475aaa3a", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "837fb2bcee435c8d5d053ee6833bd013d8f71e892fa12c8ea855b92629a0fde8", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "5cd974a14046ff919bf49dd62a036876f6a699c5ab6d332ef43ab353747c8486", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "cfa5ce72e18e3efb4d46dd07d477df0f34f200ba44b23034370b491c69856b75", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "633aed5ee504ab81f2cc9567dd76b70e9ce0a9affe903306e7347e33766144a3", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4e9fb93472cb3f70a9e5a64b146810aab506d93bc87b2dee6ef5c7713df21f86", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "599851b3275abcd3ee0632c8be9ea22b29e37e5b7f9ae8a8d06aa9ee02dc035d", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "ee04ba3be9446590227e4870b18f0284411eb147b4d06cb6b5a3ec8401d5b8b2", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "6140a548f045edc09e51e9136c15e846cc4765d8d399d5b202678f7d2c69c221", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "299ca1f0f9cb043f849ebcb7f3ffaf2f829a021ab0f84138f6150686d993ea24", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "d324826024120eafda88dc4a1e1d0eb9005687e16508f9331f0f13423d221dc2", +"T3B1_en_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "589495fa423d26cf300a175b88c898fe5fdc6cd7074c22a0b56da72df6782b2a", +"T3B1_en_cardano-test_derivations.py::test_bad_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_cardano-test_derivations.py::test_ledger_available_always": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1a654d1ff506132e8b20d139c3ec6ea56ff39d7300f863ea8bca98a787ddeb0f", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "2a6a42f18730a656decf4d852f9b100d844c1a6b231eca08197436056143e1ec", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "8495fc9361d9df48abc927cb42185098078b8671a36990394be414b1ebfcfd49", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "44ca58f09b7d8ffdd18b18d58989493fcad5faf26d9d0ba556e4389ee4754fcc", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "78846f84fe3afb44e735751ad3a406c90c9462479d1deb6cec92db0a1b1be9df", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "e20ffbb9b4666bd5349b036b357136c54362fb649b2a943165ec5471041a3ab5", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "713a7c1e1d98c594c4a991200a41607f20a02404c659a3e5533fb0bf7a44c734", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "7be273443954d5db80203d7f954fa7699625f43924a4ce51b5a749c03555281a", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "b7cdc3bb0c906a5999fb61f11fb4a2efbb77efa23912e9087f99a927bd75b9b3", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "4bd138a6a7964f50b592138512f7cc4673a7b8582ec51882e4aaecd742c7d807", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "abcb8f2afc65255be5f3569075c5cec635020344cd98b08fe653bb4fc1ffef49", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "a4133c6716f2b34049a3303c0058dba3dc09c518746ef5b4a7ed88ecdb628693", +"T3B1_en_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "9facb40a3379b37d6611a35cc8412339a0f8a5f6c2343c9fd7feb353a6de8877", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "70609e795063e20a23b96e4d5ce2f982f4a2697c0fb4d3917b6cd0b8fac3a0cf", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "54742ab60446cc643bf358bb7d86a100c7176a69694f384f3f0a7f8cd995b5b8", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "a08ee7770d89b92b0f50f39e84e88201c0f3cb80a8fc87f4044b2eceab143e63", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0cb94d9efcadd912d882950bae55f27cef090d5392001299acf5c32a8bf0bc32", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "19f6de0c915cd19c968fe831abce1dbf827b1b5505618f1d0e79820cbcae2099", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "8673fd2ae6fb4a1e910d252c31ea12694b9cc7a6a6b7db108d2c36a3e91aca91", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "e2327cdfd247746d7529e9eefb43c35e9f9553131bf40fd0cbff344facd0d5f1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "0ebb4685b4085b2096328bc2296dac4397c9cdd79dfb924a9cabd40e9b2d1807", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "b73d0e5eb5b8d5648b5d943418f8b438114ba9466363510f37106d5b32180534", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "6e7adbddb0bb40713a5298e7585c694a4e3a7af0cdb0b859bd2c1ef4b5044b1f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "6e7adbddb0bb40713a5298e7585c694a4e3a7af0cdb0b859bd2c1ef4b5044b1f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "efbe2a8f406da6d6bbb0b2c3c96702a9ec4bdd093ea9bba4d7ed140d044b86df", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "d10cb96de4731be84eda48505a683164ef85c4c40a8eaccdf46b55cdd871a81f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "36df44933e068aea2c5c8dc3c9527ab0fd95473aeb1bbe8050457a8cf1c90940", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "f32cf8b415da538144aa52ab21b5a2bffdb31c4d5156e598e32bc81e1f58224d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "3b284571c891b0de12bcd391120b54fa521ac747896551f6ddb0a187a11c9e54", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "158a82a2b0151263f31b223e8f2f1c30925c407d9fdd1b81c196f75115209063", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "3abeb63a980d0cee07df2cf01eace14359e3774fb1db16bc414f1fb50ad1d81c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "581ce2a17557cffe22ea84a304afc8636623c82f28ff53a27349b93cdb5029f0", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "3b284571c891b0de12bcd391120b54fa521ac747896551f6ddb0a187a11c9e54", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "ba3ffd638b5a6e3e50df2f8ee355af062a983e33f853dc13b04bed2c510531f5", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "41c18f927371a044ae76aae10b401e613f013b5e85b998a6490a8e3e59df32a5", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d7b99c72e1a96412d24271e6634248e069ee04b1f6cbf248a06b6ea20a043548", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "aee6ef9d97377e327f2adf6bede652c95c747444e8645189a1fcc0fb7e42d926", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "36d9f530f00f637401518df39cf59bcf54d31f7cc85c1f5e0627e99345c46e43", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "6300e6db5cd6beea15ec87125c6baa0587af93c1bfef2424b0d58d5b67f50c84", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "152a9779fbcb5ccca0ce231f6c2584c7f9e55232944184f5341a4a0121e6fffa", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b9340f62162a6e610142974c650d0073d7fdadce514a76f4104663c37742476f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "003060a5f25b31b42ea1aafc3f8c8eb511a564ee1e645dd01048fe7586d226ef", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0ac6dabb1fcb6888db49464d4fdaa15d6231341ac4957352bdacb941f70f8512", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "1b192388b76c8da26faa1318376b08f11c47029792adaa7cf3601fc15a6a8d6e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "f8589db625d88f5270c08d842b18ca9ab924da92dc634f95f733b66059f7d3ee", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "488cf1a6b968b5b77a7c2cee0ac407b5f05e05af6858c678c0d56c0def0780ea", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "475f1731c788eb6a55a2383ec8c4fbb23b44d182c7672ff06814bcb3c8403078", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "0877fef8cc21b0e3201857118f2c21abcfea34c918531dcdbd91c1e4ba1708f7", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "7eba45854fc36bdeb8045c2c527fe9d1123506b8afef85bbe8fe2fd1c2cb1bbd", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "3bfffad2815e4e5c22854d23739314a56510fa155bef476ad808d3832f6ce196", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "b42ca62736e83f6c3b38765124673c720fe6e8906022d5846b375878ade5c230", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "b327f5e1aa4db47111979c49a7dd991b8227cca836954f7555f46508de16fcd6", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "d61f6a0c349c7532475f9b2f13cb18aa39b560543a35074637dae4d15026566c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "646f1150e79be8fa7285c1e520813a4880de0618ad379e0c3dcd0ea9a73afbc9", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "93be7fb1b1bb7cec0336a470bad734afaa6a14e2ca1e15026e764a4129693105", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8951c970e90eac93fcff5b4cf950c178d4156a4c1c7a756516e18c31f651759e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "f8a5f1201d07ed98cb03febffb0a30a2e61eb6ea1540cd25fd7135101927d4e9", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "f1ed37aa52e934088876f70ae7a0fc2470540ef43e6dfc79778a2c7d64c84bdb", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5c081587a0c42ed299c6d47a4956ee6c3171bfd76dc10472f2dcb8dd3ddaf2f0", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "4a48c7508a2998f2fe3591fd9d03e91e41fb104be4908428df8ececa41fc2906", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "2634395c2ca09e13f13b5f1887409d44fd905bb0efd7b2617851b3f98318fda3", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "7bb2e7a23b9348fd9e9c5e63664978010fe960b8f7aeba606c4c59e0239e5e19", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "1eb96cb67a4beadb37ff189587c76a79d7554e6b6f5c6efc0f4822f0b1ae958f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "f11108652b0c097c9c48631ccb99a73e87f0d8d43df5a7774769e1609aedc59d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "327f7f3cf53e41b81e64121e7be441b36e4bed7bc8261f967a4644b8da0e228e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "87f57313dd6ee584520df7be84d7dfff8479bba0281562e6d455ace92585379d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "59076df42e6a73608e096301379e92bf0f330ffca0ee47ae38b836e75f624f53", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "b2515ad0d97aead646e466792d2f24b528f8a12ac65312b934bec642e1ae5622", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "bc34bd53f2f1dae3c391e5a5a12866c0cae82129c78bf084bce68418aafacae6", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0b84064d8397c8331112024747ac07c1ee98ce4f6611427e66c890be0cd4762c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "a85e958372dbedd375a60ebe5c20a80bcf7b97a1c9a30ba30ee95d7f6552fe1c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "b1fa0c12a653e42a5bf09bd86f13605704cd1bfe25eb86b9849e316f96ccea5f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "fa52a33cd2201fc5f9f21973cd54f3a4591ff6bb280c4c5e6a886a6025fa73db", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0bd7b51b49f660893e8778f47a987c9810771c5a945d5e924a5e240749f41e9b", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "6b4e60be5469a834cb90e7c9cdbf7734728c4f693a4912c30052ccea631569a4", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "02c9e2f58df10d287f445451bc604d7e7f9e3aee4d4a71600bc1c9c8f71565f6", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "4d1765a5884c859931f9f9563ef18c96dea375ec9e9f35b57ef90e310a4854f9", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "44f0f50aa3d3e1598fcae4bc0025d82766e1192849606880f6b6162099513eef", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "2ba78cccaccc3324f3a481031a6964887274e7fac83659dd0aaaf2eca5b49e20", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "f8fb1f2783f1d7641e36c1b34a34e37358131756708fd70682e050b6165eec3a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "bffb18ac0999fbb15efbcd92c092f64a8e511789749ade41625e1f65edc37061", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "9faa1cfdec3253eabf3657e2038920e5e0af05087edd6fdb67dc380f6310275c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "eb9cfcd19b673900eb5324eae0a8ca49de353466f47ba5b78c46002c0a2f2fee", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "4a43a109ecfd7d300a07b271a01f09d7b7da5a3efa75c8d5a4c8b704a41493cc", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "d611c4247d38c0e9a1fac28c0eeee9cff1ae3ce2addee508e021b6fe9627288c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "d611c4247d38c0e9a1fac28c0eeee9cff1ae3ce2addee508e021b6fe9627288c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "e49a1b40da9c56628024752c7e5fea310c1de65e60e6bbd6c9c0d8a8e571f983", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "ad29f1f6a1c16d7ad0570c19e835136b123edd2b3852903f6abccb1c8ef947d5", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "d6cd63b6cbe9b5d7c584e9b8416ba7ecb7ae42e885a939887dd653c60eb89378", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "90c69ce801d1261d2173d02b208c28a1f92baa337e0c0ed1358beb86c24ef217", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "39e5ac438b6881de1f311ba060077b509a47b73153af2b6c15409a1c74ad811f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9a770db81a1f5489d29d0d1f9aa417dc58bb1b1fa18bbadd3e03c243cba2f9ab", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "9756af9492954b810a627f03321aa132aab70f4313e04884657430f4e3757101", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "9cdbdf8b1fe632a413b176916577dcfbe937a6193e3c1262e320417a8aecb69d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "6d6eea472a1acc04c01527c5d45c02a8df76628073104da842f13d36887ce32a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "9318e6bdbdf1b9c24ebdae7f004b158639154bcbc42d977b87492230f7a13a1f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "ccb7505c95712524eb2ddc1d1d54226fbb63fc174f46c6dbc7737583f1119d52", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "730cf9afc451516b1bdd0bd84bed67b18ea920f6af85abda2f5e67520fed6322", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "283161b717285711364ee06a08f65a0d75683dbe5cf2b74417c733e7c605cf83", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "318f089413ca76f85cf957dcb8803b121e6f3016146897edd6040a1043472c2a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "86e32da3dd8da1139997d01d9d039378174c9cc4d1b9b5ea9cb50f1d156d3e1d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f2b65af0bc53f38ee2d629de8ab03929fdfe5ab7d1b6af612a6e7a4f164266bc", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "aac64804f6ee9bc2a7daecc48e2c7981cdd14a2534ca4c4de02dce3bdc17344a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "1eadd77b4fcc4746a3d6b3fa5a98043cffb88da24e410cc751cd3f33f989283f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "d6ce2b7a6887d7e5a6a51e37094ba9d02dfdb8c5a55ed3af80943445a1b73a43", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "8684f9d1478084d37050ad5212102e99691fbc9f439c6f40d69bbdd90d6d729d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "4c015c747ac2fb01b4f72aac826f395d1f3635346186922c990702b2e72fdee4", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "3df066c28afc13f43328bae6d51e52747041e676f32f424044c525a179a7dffd", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "8f6257b1472bffb5aa1278a2066f24e54d4c522159b8d9a903b6e45390c2c061", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "8684f9d1478084d37050ad5212102e99691fbc9f439c6f40d69bbdd90d6d729d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "0bd171a05bd92033531b77b65f01cb82a43613f5418c695c8b47bf046fcbdf31", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "41822be60f1ef3a19c8e146cb96f5da8960186ac1ae43e520a86dc7bf8da4d7d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "98e41212e5e2595f2b0350ee24e160f24d340adaea13e685d1b2f1998caeac02", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "f640afd3c8f96de52e7abf43f9c107ecddc8ec73728d2b33d00a7f4da82f41da", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "073f7f1edb67a2b86a6a6412dca9c0baa4e9ae6351d1ebb490dd04f3a826319d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "cc8549afa850b8037fe442e3410bb75cca7d619890bc5c7192cc32fd324c412e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "2e2d19c70f2ab9f6a441a267150c382a3fab1787cffdc68c963a2fdc7a6796cc", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "4c23766c45202ed6f22af0e24fb711fb6fa177fbcbc98ac5e7262316ab433964", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "69a9704afbf44b5cb52c0eb074d6baab7365d8de38b2b06fc8a0ad4d8c6a5bb7", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "af530c1edb6a2cb39d0a826e949d013dc0a39046597c23678aec893fb84146ff", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "8010eb573c5f7586f35800a931650692c34c54efe1b42a76ce21c2e636aed227", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "4af48e2cdc2a54f22e705d3bd8f40c775f441a0f764f9ece7e4a1b52681b6257", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8be8996586177cad6a828fa119561de9dc920e615f6cd23dcdc75f4c51b01a2a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a8c9afc96a22eeff334ec65a642712d5ed82c228cc54d590157dcd6160269e34", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "e0ac03eb77946f93018ab65162ce43b0b630a62af13f356d71e35af8845a8deb", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "87b6df5678284908853b2b64028dc23cc1a752c72c7289673b870ebd717270e7", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "c258b0638761364d68110fbee1c64585fe98ac50241c334e576b02a0cfdb2ffa", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "e3561a951166b1fb03617de07134f0b2c85dbc612478797bfec7e54a89d92e9a", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "0d34932f31042d019dbc55e56e29c861d516b7467da4aabf74a130f917031b10", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "1916be21a0781817644bf2d39da26454b7af232cf8594a938bf10dabac0a007c", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "e062169aaa055ad9b9ae47724d4106ad69c8ea06342e5b1d31781e8d0a439b1d", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "984a10adeeb140c945c45158f34120d45921287cfb954f0118688cfdcd6702a1", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "f9034319e5bfab7de839c0d31db566383e92f03400c473b66ef3063ce8a7fff9", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "09cc4555d0c2ef43ec74cd5604d7e6c1b8cb0f51770ed81fa7270aac2ecfd97e", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "f05b522706867ccc4d4581925106e0fec1f9c1cc6abe406e761faf6c1957845f", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "ba30d62eed7c326002762e8af70c1faf50603e21192b7cdddda665b5250446da", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "c49115b603b977683c21d3b24f04f8394a172a53ee524fe2521b78ea1f510e61", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "44dc4fa7d0c09b7dfc16cee4eb62c45bf048dc37ed255764418451759c96d3c5", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "58cd99d32df5de73d45a1a5ef32cede77619c03335d8063005896335938916b8", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "a49d073355d70bc9cac0decc447e727dde03ea51ac432dcd6c152f887a016ab3", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "ac7c656cfb484aaf9596dae64402e15d4f76d92ca6377ffa534307829b1835ce", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "3d4190a337eacb84f9d1af9b738dc151dcb5e98a42cfce16a3fc3f7b96e022b7", +"T3B1_en_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "af91468fe2519576e6352729dbc49d495746e12305f898f993159871420f0db0", +"T3B1_en_ethereum-test_definitions.py::test_builtin": "d4d1e4bb44a8e2ea4ae4c553ba358ce7ed05384a23c51044d98241e8ef453fff", +"T3B1_en_ethereum-test_definitions.py::test_builtin_token": "0b21ba1d76f7f3c2be2e6dc7f8dbd3fa2f2a4d3cea7a40184c50ceee4d4fb4f8", +"T3B1_en_ethereum-test_definitions.py::test_chain_id_allowed": "aa817b5395d9b976efe83f8bce5e475ef841c9521e5884c0f53b20d1257bb405", +"T3B1_en_ethereum-test_definitions.py::test_chain_id_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_external_chain_token_mismatch": "a13c4c52d514bf838726f7ebbcef6c9632ae820190eacda3c4672376c7efacab", +"T3B1_en_ethereum-test_definitions.py::test_external_chain_token_ok": "b358529b5e7021c590368427fe7a16a5b9fe7f46eca0eb0e8c24551d0bdadab2", +"T3B1_en_ethereum-test_definitions.py::test_external_chain_without_token": "4e7e7725d7d93fb615d487154b58c3209266afd530343d9484ccc14ec1253531", +"T3B1_en_ethereum-test_definitions.py::test_external_token": "e3c871ab09e1fee3a54426177e0d20163edafaf34d667b113590af1c4155eea9", +"T3B1_en_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "33ea9e56a5a7d40e4fa8229225781d521984ef2a4d77460d98c99b81acb2dd08", +"T3B1_en_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "a1bb2de5c72df145f463f02344854a2e9164db148d1b836fa8e6b3d751556fcc", +"T3B1_en_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "6b2b697032c704f82893405792572106cb20fe664d876904870973dd1d324992", +"T3B1_en_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "b5854b35ff2192047be0eb7ad867a1e07a2b4d7da4cfbc1e4966d81714571698", +"T3B1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_slip44_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions.py::test_slip44_external": "5bd9bfde35e6a8fd664c5c9eff0414be7ef01642a571659fee1966750ca4deaf", +"T3B1_en_ethereum-test_definitions.py::test_slip44_external_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_bad_prefix": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_bad_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_bad_type": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_malformed_protobuf": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_mangled_payload": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_mangled_signature": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_missing_signature": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_not_enough_signatures": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_outdated": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_short_message": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_trailing_garbage": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_definitions_bad.py::test_trimmed_proof": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress[ETC]": "811dc2b45a93c4ee24b821b302fe56d9091c00bd7ed2e8aa3d897a3b7e8e37cd", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "31a141e0c77e58a3b4f03eb638ad1610e909652fd80a8b828672101861427578", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "cabd4b0ab3147ba837b9ffd985c1818adb682ae23f5539384b3deb28ee12a0a5", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "0c5676ea02482c8efec70f854a4f3df588981d8856074595c1600dfe00c2cde9", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "a748cc5bc5c15f9e11a1bd827089c25bec0f2326011c7425af5ebcf237d6ee7c", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "09f7b0723f16b99c91fab314631b98b12d67a75ef58de91db61c2b4d3a4289b8", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "e6b1a15d440d1bd73f634260ce93bcafbbdec1813ebc90cd5d7f7c79c2350ad8", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "201e023adfd09262087f362b4fb42af85483b96b683e2c7d713dcf6fe52af69e", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "2acd0e023697de3285526b28a52e970838e49fad9ebf56aea5937c662600d0d4", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "7ded58de8863dfaa44d472cec969abb9bad0905174dda171c32125ed9a2cca8e", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "f95d9e56c7aed4cf4e54702f488753cf41f7899b4b4493202ab29363e36fe5ff", +"T3B1_en_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "9335cb0261c56f6312bb3f64185f6ca9f91316be6477305820c04ad3c0cc6a8e", +"T3B1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_getpublickey.py::test_slip25_disallowed": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "faced4a7d5372b3039bceb0ee5a76bcae0741fd9f1fb70e3ab9240c1e79fe0ca", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "db06170b97d4f2c112122b15d93096078b252ffba8f4a2df093b172fd0c9048f", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "9ed1a553e7b7c76ceb7d65200e24415873986806557e7056cdd2a460b9a7a59c", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "8a548b807e4e6358fd9494e033f7627aeb32caa7174e14d277ca97819f2a988c", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "eb5a9b110ad0d8522381cebe05961703e1f4d338f1692b4fd9a43568a6dd14f6", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "a697128a17222bdac811f9663ceea140af9b0f9e7739700b1f5240ed98532d0a", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "6a1754a26c5625829c1d225d29f72ba3857cfcdc03d6aae435e4f48de1a77267", +"T3B1_en_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "5c84fb8b2828b3f0740a8dea83b3f3ef80f08c4c79701e588d69a2e3667e26a0", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "df5e11d8d0a46cf915ce206363ac114f4f7e02017868bb48249ee5806ff05928", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "bb90a9f7475069832ab6ab2863e0df56996351a92b8caaa4aef17c96cd07f56f", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "4caeb1c742141b0b20b53b073ba96c8e18ed5551d8baeb8a9fb219db02d39b75", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "92cf6d7654afa3fceef5eff0957431c5eab35018f9c08b923aa432363de62654", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "25555dbc9c683e6a37a12615b2b92b6b25568b2ea37279428c97ab191d91891e", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "b641b21c5902c40820e648ee53391bb55b5b8ed97bbf415528d3957ec633d09f", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "a0e09cc749b96597dcf5a8a692ca4c5e08f5431d383ff47f45523dae302af3fb", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "5042e9de4251048ffafa45052f3c511c4c8791701e230707b1428a676e0e8ffc", +"T3B1_en_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "138b0c81648eb191a3044b692ae6bc46ea9c49dcf1424b61ddcbc50b5e5abc95", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "6907d0e5e2121774bc38b233c9d8f8849b429d420ce16960f86faf7af0e7dd3b", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "879567c25dbf359e8325711b4c81cfd3017ebe275c6f5f10799b13f53513c661", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "aa9d1cefdc50956833cd55ed2962e83b5d406e6819233a05c703cf297e518731", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "c615ad915d517dbcfdeb00fa5aeb0a49bb4e46293ad2469b4c658bc1f297a15b", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "9360e0a6ae9fa17843a61af2b384aa49f2f463ea98b87eb3cb49dd71829b9508", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "13d1772f9773e33e579bfdb015861b918ef873e69cd5d13ea86901501e1b17d0", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "a853f7bb2e397c727d57023ea1a1606b59473b6e10cfe0a8c45447bc20a3eddd", +"T3B1_en_ethereum-test_sign_verify_message.py::test_verify_invalid": "daa48077ae60cbd84493f839430987550e57c7205c857f81c9da68b9679ec5cc", +"T3B1_en_ethereum-test_signtx.py::test_data_streaming": "6d38b0e1201b640a925cf60ca1c7c6b98503ba36ec6038ed409eda81c86392c3", +"T3B1_en_ethereum-test_signtx.py::test_sanity_checks": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_signtx.py::test_sanity_checks_eip1559": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-ETC]": "c77f2f1488c37f2c97ff0db9e25b6f7bd44b9c6b4fba2ae224352d87987b1142", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "23184ecbdfc938c3dc53e135b9fba21b8425e23a7e45bb260b5df19b48d24524", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "5183de5ad256d830f94f0278da3c8c1a47058f9ea3dde9714bbf15c5bd65c68d", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "23184ecbdfc938c3dc53e135b9fba21b8425e23a7e45bb260b5df19b48d24524", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-Palm]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-Pirl]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-data_1]": "5c7a9a61fdeefc03fa200516624cc793c4cdcb5b9741a8b6db91d74e8de78ff4", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "61b0f44fcf2b5a0fa3fa99a3f1387d0c1e37902b38fdf9deb35339c2254526ea", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "1a5d15cfdf17f4aa204b85a431e035a64e8693bf6b1eb7671c3845f53e50c2ec", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "e80203ca62892f2f9534fcacc3ececc9e18e4bf82a43ec5ce2336b72d22b6a85", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-newcontract]": "966c4de17b9cd3a16f72801ac80edc49cb5ee7111a0e305c0fac4b329dab1cbb", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "f47c5ba45c7d41aff766df1d3e2f3a67a01c661007102e3686ce49daaf6e6c8b", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "a6344aa0ee5fa54de993de7b770796531a26d7928917231bbef1b9bd846de2f6", +"T3B1_en_ethereum-test_signtx.py::test_signtx[False-wanchain]": "becd1cf72cbbf78b1b73e7075b9f2e775587a1b48df32ff9413d92de1d57dc10", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-ETC]": "376c518549cdc2d429e5e1cb727d3dfb98c34453dc9c37779f5f3514ed54de87", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "ff053d1856c67af52a039982a112f25c50f5a8900fff73a79a74e115080ede01", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "eaa26093b309d0f9d58327de6df76107e0fe96ff3aefe6fd1e761f74ce02b027", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "ff053d1856c67af52a039982a112f25c50f5a8900fff73a79a74e115080ede01", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-Palm]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-Pirl]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-data_1]": "6c1aac437606774c1b3ccb4d39f65f64029552a9bf60ddad9e9127e4a9f69c21", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "017d8dfc879072b952d478ca2ad07b517ae87931d4d9ba6a794af3501f19a907", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "02ff2867751453fce44248926b66f0b86120127b0d8bd7bfbdaa5138c348271b", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "247067fbf0742cfcaa9849a6a15b583ab8a5c14552e5cd2b2c1f817bff6dee7c", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-newcontract]": "966c4de17b9cd3a16f72801ac80edc49cb5ee7111a0e305c0fac4b329dab1cbb", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "542b5da607b0b9de781c2d2b44ebf531024ea9a6d69ab88bb600915952251aaa", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "7205121561dc02edc919030228c9ee2351efcf2e272575cc1d032f23b9747d5f", +"T3B1_en_ethereum-test_signtx.py::test_signtx[True-wanchain]": "d0cc4a6be5dab8a57e932b669e4bafa3f9911500f222bbec81b84066183eef6d", +"T3B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "1825d4be360362111e38db28a788b2250b1a420037e87ad0c1a25d193a462f4e", +"T3B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "bb93c331ddef290deec4079509bf93a6826162a01a46c2ef1dc07227239a3977", +"T3B1_en_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "eb6e718ab30bf5327ca9105e5621adc003660f3d97fefc269464addb683a381c", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "fc801083241509eb6e3bfef1bfd1adc5cd69fd56a24cec7e2ddc2b21aad01be5", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "15485f333a892f2faff89fc37a9335cf81dac4f68ae24253078551de090e2522", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d8ac36251ba70ccf678854e71b6466f3c31d557d9ea0a3484344278a4aad898e", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "75636257b46e9fdbf53d5e7000b5acd8d0d49d0cdaf1d7af84c4cf60305dcef3", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b7a696ad0d6503b4ef3a77a5275651535a80b3fb926cba10bf3e97fef6ef9881", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "78fcb413b5cb7b8a7dea17e14c7adeb497abfb8ee30be1b3ee93056f3107aaec", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "fc801083241509eb6e3bfef1bfd1adc5cd69fd56a24cec7e2ddc2b21aad01be5", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f74a78c4567593bc4fb9c41f0b44580f5e5dc1861b6ee88550edf69f277a99f5", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "3f0d9d42b37363c1ac64dca606f537ced82bf2796c49abf4b64d0ca523296587", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "87c8076cf658f90ab06706ddd3e0250140aca9a773e8f6c7599fc1c981f26a20", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "299f367180088797a7391fee745f525d6ec009de18124644f029b96be4ff5189", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a1d406be62f545b408ab70f10c5893660a223e642db085c3d933132c868b416f", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "ee4043f63c7373c9dffe9a2020e06d8ebf96e5c0cec71638c1f7b29fe0a3449e", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f74a78c4567593bc4fb9c41f0b44580f5e5dc1861b6ee88550edf69f277a99f5", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "0244cfbf5e697e1891c114f25d233abf1c23e9bc6152f37cf156acfab4775b44", +"T3B1_en_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "0244cfbf5e697e1891c114f25d233abf1c23e9bc6152f37cf156acfab4775b44", +"T3B1_en_ethereum-test_signtx.py::test_signtx_fee_info": "d339f7b8bfce09138bb235fa130eeaf3c25b6c7fc288c979dcf25c419f48608d", +"T3B1_en_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "263993daffe2a77a46a17d5b598aca84de52ba0e051e4cb5de5c524a48192ed3", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "4836f64a30541ed506819660048de7b3d6f056744627326b638dfde4fc22ec7e", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "77074e90e59da95d4785668cae3681082a904b03a24d7a003673bc5964c93065", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "a365a8a494506752f32ac8d40951e8eef7d469b6181052d9435b43d44c7d6247", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "2db75af86e1e409f70e34e9b382faef2b626157d60017b9c0b65e4e68c2c7f40", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "71d76409dd01b76a80dda5043c9c62d04c22d0787ffea2c7a50f3dfeb49dacb7", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "256035e499a39dfe573985622d26603d1b49af3f2f22a9083aa11a94f2d37d8f", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "3875d39d3cfdb57a8e3e064569494c6cc5c7a518216f1d62eb2a660cf6aa4f5b", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "eed7427d857da9265ac64fcdc100710132d042c757992affa5c0ed2f70448832", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "2b1a90d7c0d17ec065949a69283968747e41fdce2da7e0e4206f05c9b78db117", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "fa9720d4590bc1f8225e65b3684cd7e7dbabb0dec8fbdc0bf6b1b7838e673301", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "2e080079afd4018103aaa3cfb41b1895fc735241f7d7404fe10efb270a4cae71", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "5d88497e2ed730dcb70fecad095bcee9c63bca5964c6f213b18a621edb7c0429", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "c6abb73e85fdb2317f22f612b5e8fe30bb93ff6b751071e91b0cf22de24f6de2", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "c6abb73e85fdb2317f22f612b5e8fe30bb93ff6b751071e91b0cf22de24f6de2", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "af1dc7cc49b1e75d7c1b06767503e31a9f5fee4f4d0b426edf98818b4caf449a", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "af1dc7cc49b1e75d7c1b06767503e31a9f5fee4f4d0b426edf98818b4caf449a", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", +"T3B1_en_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "3751e089e8d39d53263995b11465a60e1e16c2672af419df2f89f7b7015ee4cc", +"T3B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt": "cffd4985f48bb8c64baede4ce18ae1a69dbd02bca4664ab23a146d5031ffad87", +"T3B1_en_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt": "468ff13a1c14b5a9fed5b58f0f1473448828acb96638045a29c6fed73e140d91", +"T3B1_en_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_misc-test_msg_getecdhsessionkey.py::test_ecdh": "442f7f4ac90325dc91d1c8283513307737ba6698be78e8fdb05d025fdafd7be0", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[128]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[129]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[16]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[17]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[1]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[20]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[21]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[256]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[257]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[32]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[33]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[3]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[4]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[512]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[513]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[5]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[64]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[65]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[8]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[9]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_signidentity.py::test_sign": "4ea3ff06287458ae5c08e118e489c0b432316521fbfa47ff587d748761f9c6c2", +"T3B1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "b4cb31f200b840788ed20a2dd3716262a4f90871c3ef82bc4c376efe14deaa5f", +"T3B1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "57c6ba50b97463b0345f91ebb7150df2e2bad4c3cf4d2665ba113520adc59abc", +"T3B1_en_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "d1238437828c2a306e66d1a6996cf86576426c77c7678e1c93746cdaa8b30149", +"T3B1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "1f17ac968a8ecec85e30820316567c20ef84cced1368a03990c8cff953304318", +"T3B1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3fdbe671be03512f7d0df9f2f71c3f6a317579d8905437a9b1cfca877686e9ff", +"T3B1_en_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "63f2b59a565a402738e0a240a0d3405d3581aa2dfac0b51a4e90fb329cc1751c", +"T3B1_en_monero-test_getwatchkey.py::test_monero_getwatchkey": "e0a4795c4167750f9b3a79ca5c8c5af31857a0aab102d1eb8f7722f6643656b9", +"T3B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "4b80c4d49c18129ba59b3e8927d56440f624571f501ff478e4a4ada6fa27b3e6", +"T3B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "11fe0e3365499994c3fd51d8478f0a2feee90daf5a449b5b0e664e99cff3174c", +"T3B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "440a3ee20ecbcf54751182bb7094793bbab3d96df594b32908ddb312cb42c8bf", +"T3B1_en_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T3B1_en_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "ebf4e6c074fb6662b822059dcb6c12c6cd9ef63ef75f4ae8b7aa70329e92f9bf", +"T3B1_en_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "e39ad28c9f2ef69d14aaab827d06766a9ff4b71d6705a6e698e682ae6e515b3e", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "e0844d255947779308662723f63f5e43d3670058c4bc4b923b63becf1eeda3db", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "b19eafae4aa68855bff9ea279f12b36773478e540af4b1718c4cee4b80880c53", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "e1629f73fca6bf4faeb0f175e5c072f272b20159c3c00453c98ef7f978e57843", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "dba6d6ff9b3be8173c92abfbf113ca1d5d34f4ba79431113042152e4b1d737a7", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "7df18bda73519748157740b9cd0a614f27137573eefe9c4ff13f691bccfee4c9", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3bbf584dd24c429baa84103759d2f4e3fd1ebab4a991610c98bddd4f78849238", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b7290130812d89e3315c954d30e7b44713d28a7b11eb9ff4b8ee37f5bad06e01", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3bbf584dd24c429baa84103759d2f4e3fd1ebab4a991610c98bddd4f78849238", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b7290130812d89e3315c954d30e7b44713d28a7b11eb9ff4b8ee37f5bad06e01", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "a1cba042d63d7cecba3c001d15ad8d22dd0cae0d859c396fb3eed465925f914b", +"T3B1_en_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "5bab31d37f412874570b376d49ed23869f9ebc16dc46840be63a4efb8de960fc", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "77f8fcb1d2eac768969de855dbf2c49097c353224be8ddf531b412f641922730", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort": "e0844d255947779308662723f63f5e43d3670058c4bc4b923b63becf1eeda3db", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "c273f53065fc57fb06a3276d824e72490f67c3d272a5df1b8eb9c063abf4ffa3", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "43dc93150091f8158a0f09444bc7cbdab6ebb5a42975544f3de5ca60213dc065", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "45b5eb820d6ea5682a0627335840d6c7be41f45787ad3f1ed5fb13868b5f7c6d", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "3267f5d7334570b22a5113b911a0bd118a44281dd1a30b1fad6ba87060a82431", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "30b012a6849df2c407121e5e8d8582c3ddb85e2a9b4e592821d7cb2c3103e4c0", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "7181e6aa3191da7eae35232dcac6f6d20c5814311f70eee496aacc73b37c9681", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "2086f55ad3a0819542dd1f9bbeae57bca92d9e6729e4d62fc52b4c7cf65d5a4c", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "9b91282d3bfe74458762264acc9dc3e1e76fdb1d9a815932cac2c550eb5a7785", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "bdc9467bf7c51c17b035e0c885caf0a8fa14de0f1adab169c325391ce62ad398", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "92e96e9ac08681f19324fb53438670c92a3a22530c45c680848d9e07b284fb9d", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "399d17dd98d78d3f09a0ca202664d0b671870f3c96c39623ec15da1be7db171d", +"T3B1_en_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "0b67fb6cefbf9588d21cb03e131c19897b9895903f6e1426f83ed1f8b445f8a4", +"T3B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "3f7888a399358b24c7db8b30f090b9139f82a4f3a570c6f4f936d9d04c829721", +"T3B1_en_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "d489ecf703b8ca54ab957eb845413d72d4ccb023d73dc6b453b462c97ccc8b32", +"T3B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "a0784036e9daba27985ec8c6e03b94c64470398676f07d9451ea0a62a39fa448", +"T3B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "29ec1912b45e476cb21763ac9373dae2210c1164f59431a2ad648495fbeefeb5", +"T3B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "32eb349771a9f5c8fd63674391c8d46bde5079e5dc3638db4a2620302e3f7b18", +"T3B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "2bc645f778f0ebcfcb72abee52a53b2d83b9c0c16d7dd7b0fef63e195562b3f1", +"T3B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "78cdb520f48d6beb61e88e0d8cb4d0920250cc85bda2eb3cef0c3e4c37eaef9f", +"T3B1_en_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "b9f625fb5e5271ab60d6086fa3f1b994fb01ebe76f7be7555328d490b719c280", +"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "061927456f5d16fcaa71d68793f7440d16f9f208d430a62f83e8388b69ab7dd7", +"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "8efd6bdb4186a209c8ee6b3989d19b8cbab00de69faabd82785fafdb519cb178", +"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "1b882977322631d60dda1d7500a3cc070d0e0b1c407db1533d676a93dc20d9cc", +"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "89d8d57c57933248ba2a8d4ce0c83fb80043d05d83cf5ad58ba4adafe536ca15", +"T3B1_en_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "10c8a8c9e19f6171ec14cddd9f93731a79a75cd8649a87fdb700cf7e57f7a285", +"T3B1_en_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "787c9dd005bc2a80e79f777e5c0397d57f0eca685c1cf5bed44d4800c82a7fe7", +"T3B1_en_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "7307234c817ddc4815b705f3128a9c7d5793b437546a2718af8b6ff30bb5a33a", +"T3B1_en_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "ce17027142be256ec78f921242e67cba054b10e452e01192d6556c92cf628d44", +"T3B1_en_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "9cac3f9a21c6ebf519eb12358bd0b4f051c5a85fc65371e755b55e4d0d9a6474", +"T3B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "44104e27f278734e9e276ee4b8fa27adc63016da91af6be11dab14a84f0042f9", +"T3B1_en_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "74a3c42e2ce8f25ad1c7e81f37a3477cf1d376802f19273260e09f4b64cbe99f", +"T3B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "5ce82905f4a02d3ff8a2c731b8e6ad770d3e3ad29b089e3a490d2868a41ba8c5", +"T3B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "8633600c89710653f7a0534abc2f3b276116d754d99c0b6f4fcd32be08e343f5", +"T3B1_en_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "46f3c94167c31e26ae0dacf3e1f2a408061cc0bc24b030229e495194077f5097", +"T3B1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "df45787237e9e838e30287160c03af6b529360c7fcc097c433bba7e0edd569a5", +"T3B1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "9b52a92bdf30cea5dfc1bf0e9414bb1eca41a8a63d4b5f37cddac76089456235", +"T3B1_en_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "328a7774a1d35b851403b19a9bc592a59a1c61567b9b0624dcf65f9f02f744bd", +"T3B1_en_ripple-test_get_address.py::test_ripple_get_address_other": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "cc89bef106ef0794d608ae0f6d7a3c33fd205c9d07e3b37e25a7a83b42624be1", +"T3B1_en_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "7b01010692207e7f1b9db3ab371e79904ed97f7be7e6e000ff1ca7a705b4e7f8", +"T3B1_en_solana-test_address.py::test_solana_get_address[parameters0-result0]": "c9ecb1dd7770a1d68e92bbbcf7e146fd787494b36cb06ba1647e43bc24b23ed2", +"T3B1_en_solana-test_address.py::test_solana_get_address[parameters1-result1]": "fcf8d157b2e1deee981b6ddf538b3924ca8753ca8c410c4812815c267853af75", +"T3B1_en_solana-test_address.py::test_solana_get_address[parameters2-result2]": "22c066ca6b9035225ff9154b434f69d8a78d0e7e03e910d9f65965b9a36283bc", +"T3B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "a2f72fbad37e8c90b3f3d337ed43d63aaa3ad273c8dad43f8f35672c3e3588ad", +"T3B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "0c426916a0a9066339fcd4aecfdac95d68080ed4625026a31d32630d8480a5d3", +"T3B1_en_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "0c990ee79c73a98cd670c3d5a3601221d320b749b70b138ffe23e9a44589d97e", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "fa3e17b0b68fd72f901e87b6744dec75174feefb421a47a75bdbcea1c763dd76", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "932a2101e27f7df7eb0de2cfa69a540e6036c34dc74d8515a6e0cbc7ee526fe0", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "333a85aeb8f4c10db10e2184b01bce9bffc76262974e2385a3213fb9db4a1e5d", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "de05e35f5a1ba2a5e0f49504221c0764d628a64d3af6a7539bbcb0f8f7f68b91", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "0c249933815a2a135fc257c49eb27312dfb21b67856600374e3f259fc69b3a29", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b448e9673c0f6a044c4ba91aff726b59659c2fc3c51285c96d33e66450e5d7e0", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "780c3245e93f2b857d9f07b667a65461bca1eeb2b896344543da1ac86dac428b", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "3e8fc5fb075ae126d5f790a9d03f99bf7a3a0b333c086c4a4c23323a6f61f6de", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "a18e26dacd17cd77cc0de16d66e3d5fc4e5cec73bff1bd1bc5f0ad3cb299a1c5", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "86c3b4226bd2de6c0d69ef1e35281de7e25a9957690251f9338f46735035b22f", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "8ac4578eaefd0e44ab559ccb439f5985f10e719a80d017cf0b7f87bed5c7ddc2", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "fafec7950b00549c02d9ce694269b639174bd0f5807c34901930797878cdfd25", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "45c5731ad31a7be98a82e7c34f8fd1a3e8a76337e0ba9ef94d0f537e39fb7cbb", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "193d0d5b2c04a1d840324df6a042d6e362dcc27dafc6765bec60358df104511c", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "7157319ba61c5a4d442220cffd36e68ae72936729ab58b725cee930c97dc4a47", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "eaa87e564e95a97ef90b642ab1d9e838983dc92d27cf81897b5ecf278c64da17", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "402279d3adabf342209a3e91893abe6e5fe2685383a3289c32eb9fa70d2e02c1", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "2f3c5b1f39b4bb89dfdeabcb79a4a344eb4ca070a6865c2f7c28432b2a59d4c9", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d18553ed17c6955868380b11fe986f4afae56c7718b0c3d12fbab4def3a25738", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "bf9b7337e54782a31bdcf8c2af02644d112a9d9d714afa23acd311ee6f499c5c", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "3241bd30df64f89cd244a458e6cfb12a879c316ff5e442b50f6c37f4e1b99481", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4e3cde6fa0e98176d0f0c1164f0046351d250c29e3d8991caf6e3c262990d8ac", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "3674cdad06900e8531247101f80aa78c18eace46235b775d0b05c6d98c79b5a8", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "68eb9f66aef4c78cfbe8bb39b8152971ef39c8ffd0d3182580cfde63a1a60387", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "b7e52d46ec240c5d819ac8a9fe5bbfee7f5c2394bf6da97cf7072f03e732f540", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "63bc5863ca23c3f9a945be771a9f40bfd3e8ae87bd85a4abbb048c15f439e7eb", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "b74a2a44f96da8fdc4ff00f06abbc15d765aa829f3e998bf518edd5f08d72a96", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "4ee78c7dc15cf3581e93004b8eaca23417d9ed1ef5765456c061ce813421a441", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "626008749bba5d33e97d48a37d7ec70d89d90cf4618dde97f372e34a74984c62", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "5d3fff98fb036a3547b6c284dce35b029c8b343401374834b1a6f6fb81baeb37", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "59e93c9a1a0ee42ee6ca263a0a8e14d3a15602d50c3c0720b0bc498021dbb6d6", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "e013477a84b6b80a54870e6368785a7e08c23949d42ecfa5ec4c37d6b79278c0", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "3d7a9c91c98615d6a94d61727103a01d63c598639cd53dcda8521e8f6d0706ba", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "bbe5d292542064df519dc757e4ff43b760876500cd0d82cc5342f03422492b76", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "65c4fad22c7411742260a4baa3e1886afa310343e3c1c4aa09dd140dc8dc8931", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "65c4fad22c7411742260a4baa3e1886afa310343e3c1c4aa09dd140dc8dc8931", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "bfe7e58e072bf984975a73019af6344a8064a10b8b1f95f338231653dc212025", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "90fb93975f2d4289d0d13dd5412f87cebae62f97ab11ce48f9436995e7be5d31", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "f683a18eda7d4489f48e64b4e54fc4ebd2cd26ab363b256bf1e8e2b5b7c0e664", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "7ced536f85c604810ea4ebefce41e2ed247cc99ae919d838d97897b2f30f44e9", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "905a91d39f919805c1fc3d7d31dadea861900f5fa9ff262a34ae67f743779a60", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "3974167d03e0884b1d4510319dd84ff0de0386554426c0f6070da62d79c591b2", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "6e1a9c2a05df5b7d63467f2a887470ec2d0967f2b52c3ffb5fccc1237bb97cc3", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7333f9f51ba7c84367a8af8be5c7725fd2ca914704d59bdd2486648653fa00cc", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "272024f567f6802604cb79a8ea35c9762a40fa9d250d5ca467611ca408cb06cf", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "1c00f3411c4748304409c03ca8a13e8816742f013f8a29be765fbb4d5bbd6bcb", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b377d0a3eac1ca7e4d0f530418cd8a43e222095ab7d0ed99413e34368884e4c4", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "8bfb106171deee9925deb098ca0d771ae2f8e34ed3bc50e857f9524820f6a00c", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "c8aa13529eb28f864ffec81bbabcd5cf21e31dd79d99fa0e193ddadf14527133", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a7edb50fb2638950704d2cd1fa4fff9e56bc0f3774eb40989d700299861ff2df", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "7c33e2ae4b7672f620ef0d6845c25ee9761fb41c2d20776ac0c7a0eb4bace55b", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "96900f5f1871a25cdb8aa0dc2bad509eef780a98a61e48074a89967218da6f22", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "523d6efbcd9982369622c22689be6a372eab0fe24a9a31f8eea63ba171e580e0", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "6b9135c25781ad82340a3e85a16094944151c9dd619a04fd9fc127fa92e6623a", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "163287fb813dbad9c4638af9af7dc1835c9ffacd44cff4c30c1bf3e41dfb2a9c", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "2ed3a07f31c8fa5028400ba91e722c4bef7969099c3f77d725738545b9f5a2af", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "09e501884f2a977a778f9241bbee3d3b1527c7bfad7659454841d0e3787a6cdd", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "98cf6b34098cb30a6462c122450a4c15e1bb80fd6e7c2a53df426f1ac72a1004", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "aa34789bdc46246c5fc6753b3ae81faf86d7349ad4226147f026f6bca75dfa5c", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "8a12f4204a9ef0e6f725c46ce79adc9041edc6e2c45bcf779a253df5ec8279f8", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "db3539588ffa90933d2703d819afdff8e4b0270304d7181dd461af99d93f3431", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "331218a4b4cf09a4b6dad28bdbcea0b326dd1c8f3064fad99ae3834491b05f04", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "0da365c718bb57cd72ca9e5d1dda459edc5e48c456808ce75ecc82b85ff608e1", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "087c041d718e48e52919740b1c8dda391ac720c005cd66b43a2c28e8a75a07df", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "d9d588a058f8a867702679caec302b3b0d28c74f39dedd1520e734b9f14460d2", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c32b2b91b052edb7e1fac746319ea5ef661f0e6ba69a59650f03bd27d8511316", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "3003a43b3deb679b61dc84960ef585f392591913a01054bb43f883c29a97d202", +"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "d343818c5ad8b91f3a4c6dccedff98de9b3a5c90a0ff40e9ddbad50522848d3f", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters0-result0]": "525c3dc0530220043088724517981cc71932753a6eb3a84e420e007a8a2a12fa", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters1-result1]": "39f52231954401d77a679d00cc9e087fc773ffdcc09a2e346077eb8658fc2f00", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters2-result2]": "41756d94190e4022ce3d7bd9fe3975f7cc63cf809d2e73c7a210121041fede9c", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters3-result3]": "ef5a02abcb966e4a1f1f4b54b9540053ba9ec3a9d4ead01fcfa800e8c62f3931", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters4-result4]": "94242a939cf5a6d0a3b2f9eb9c8e5253314f061d488d777bb334727416ec5da9", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters5-result5]": "0c43d440d5bedb093138fc8883c0883d65c955ebb17f14f06895b14afcc7415a", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters6-result6]": "cce2953e654ed94aeac603ca1bbc2dae40012f537d50298178b704fbec292795", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters7-result7]": "6c60d3f003f9a7203b8d219b618dc3ec4a2b94d9bf3662028734e30376244799", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters8-result8]": "12726f0c084791d92f195bbcec3761dfe19fac3dfb1cdff9ffd1f2b89df5feaf", +"T3B1_en_stellar-test_stellar.py::test_get_address[parameters9-result9]": "914fb776985eb4ba398b27087ca33b894c5971d98323cc3460b3987d3e0cc40b", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "3c93204d2d46d8b056a975e314522f790b16aaf60293becdeb80221fa344c85e", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "34b0a87b00da5d82441d741102952dd032e30a528248cb9aae34e172dbf8b633", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "a21c025e4f654d74842ea9a683ebff8dc559160a635a9d035a0ade6a4f7a4d33", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "f294ce3bd568077c319571d1c46b6aa568bfbace5b034efb5a69ba89e25a47c8", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "3d8732b3370eac774a32025e94230c7a15ae269bc329c7530c61350691165887", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "f3f1a365442b60ae6d7b77779884ce9ed638617dc2322d69e2ae02bd5a691704", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "a2cd2ea0c9f73e6569c01f390bb2f2b836fe7bbd4da00372f89587d9ba6e5a81", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "4f7df86bff1b036ecf0d8f087b855d37f17b143353740f041ec660495a4bad45", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "aa6fcb823d51bc75fdb175a7529f861b499c7f455e72657fa7c1283037ce6406", +"T3B1_en_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "3922d9cb650ce64e2ead7720d1217e98755b1a742d505fb6da9afe531f38ea46", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "00419212c5cb1b9c31dcacec46fb472be08019fa82baa6a978942a478c8b5cd0", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "72c6d04563f1d7a6f840c2cdded67f94e50405b1603144e364a66e56812f1f6b", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "09fe7367d16b35311fcfcb070c3b76bdef3c8a7fb85713af9f64ee908498ea0c", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "ce42cc79760f9d8f07ba2a70841a86272f51d99811b40187182b31a23c4b07d7", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "5e3c7fa84f906cd97ceccd40166f24017352488c3d71d3a784fc025423b002c5", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "a1aac4f91cacca5ec354eaf40f0fa524683135c7412b586e6c4ed4e22f53bd93", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "c69daca444b493b23dd9b9682a03e5b9f993a7d2276c2285f61629231b43bf15", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "89d398b2bc331f1bfeb85386dfbe020cc61a1c906ae196e73d73de2838839fe3", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "d6877955f02711d8da08d8f3de6f85079c0740b88fdd525d93cba00e50912a11", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "bc268b30439540da1f037ea83f438c18b7db766729f9fbb5c590257da8efbb46", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "83ebc1a4e3922f720cf422ca6e7c3749bf203e151d463b803f26d3554f0b29bf", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "9776a07190c35e202da74c5a661068550b58325dc7779b51a9e9434f03417310", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "17a890bcf0742d462b8634673833a6658b1b873bd4d242eab6a2cb08f6116f41", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "00aa221b9a976c7f4859c61ed5fa58ecd4afd770e56deefc9a8a5ae1dbc98770", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "6089998b3e02e6461a14163b6aa61adee5e6551c6e7e2ecd3989fd1587a63d50", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "70462417b0e6f5de235b78a4f50f9283f5824160f7db397832019ae8aaa4731d", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "95b61e5185139d5ee5a0f652f390e0c2a605921f1e14e33fad21c0b1915aee69", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "abaf8235cab797a27eb25ffa0abb21ef8bc7dccc7770561cfd12e7b5441489de", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "0f0af9968dc57c90d8cfed3c6278b89b5dbddf67724d3756696fc702ae8dbff7", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "633dd1e8b2b694e6a237c3ba2f17f5e48b43d46b9daf5cb421a4434fc5fad468", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[memo_hash]": "93c0f0fb8f009d53ca3291158581e4afd8438e4fe5bbe130a18819ff88c181e1", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[memo_id]": "2f05323dd62a5afafefcf444bc78b80cf62f999babdd12c12582b8d2f60e4fba", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[memo_return]": "f7b3554efdbbf476956608cdb2b149757f3f87d05a8076857feba132c54de662", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[memo_text]": "903ef9c3ff8fb09a9f10be1eefd55ae74a250d2101344b01040ebb32c392512c", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "5284ca685a720a8d5cf7fea05924057571a657a97696541f984016cf75139ccc", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "a4b0d9a35cf8abdd278b47cc26ad90ee5ffaad067f1845f6911411c5888acd61", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "f871bd95a6cae6ba83acc351e2bc23c0d32bddb1a46702456500e956371a10b3", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "09d4e09b215153b3da47dd8c4c54a42cc8beae6e2f469717005ed2d63a59ab76", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "48a6baba52ec2e50051c7c9c9d7d153f5c747d3c41c4b5b2eec5257238ab84bc", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "95b61e5185139d5ee5a0f652f390e0c2a605921f1e14e33fad21c0b1915aee69", +"T3B1_en_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "faeca4dee012ac4e6c4ca07b1661a210972bbcc6d2759e1ad11aca5b5b2b3d2e", +"T3B1_en_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", +"T3B1_en_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", +"T3B1_en_test_authenticate_device.py::test_authenticate_device[]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", +"T3B1_en_test_authenticate_device.py::test_authenticate_device[hello world]": "44cce3f1238dcb3e305191a08f3ecc2093ca0a449ab78774223b2a15f54731f3", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay": "c01e9f80e38f4ea59a1728998228c16db2a6a0cbafb5611faceac79c11096e2d", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "173088c6b06b1d100a25cdbf367e8428eb2bff09d6bc31d322b4f88a851f0980", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "c38edd6c9d73d7df1bccc7912d992cf487013d632ee36cdc77dfff528cdd87c3", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "f62192e0b67b20e7a40113b9825dd2505e9657cca3b7b17a1b629f5d5280dd56", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "e3917dddaf58f990417501fea03a5fa4e84923477468f917a0e94f536fd4683b", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "55a92aaebe26687b202170e278f9fcc3370621a71285ec6934a2a8d73778b0c5", +"T3B1_en_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "a753542b62e6de6f2f1771376f76c8687fbe1ddfcadb46af961eb94e560a6b4d", +"T3B1_en_test_autolock.py::test_autolock_cancels_ui": "0b49d16c09192bf232a92fc8017b0b490f29868a376d3e9336dd1d87e4e57f20", +"T3B1_en_test_autolock.py::test_autolock_default_value": "d820e3109ff5593c4c3bf1cdc04644ec5748da2e05d073298cc344d4ae10095b", +"T3B1_en_test_autolock.py::test_autolock_ignores_getaddress": "3a3f89eb30da49f947ed43ff716e1dbdd209ea0dfd324883b048c4432b09fdf1", +"T3B1_en_test_autolock.py::test_autolock_ignores_initialize": "3a3f89eb30da49f947ed43ff716e1dbdd209ea0dfd324883b048c4432b09fdf1", +"T3B1_en_test_basic.py::test_capabilities": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_basic.py::test_device_id_different": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", +"T3B1_en_test_basic.py::test_device_id_same": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_basic.py::test_features": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_basic.py::test_ping": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_busy_state.py::test_busy_expiry": "0cff54da20c3c70d5b5de75a45fc265b29683fe322ad498f947656118691eeca", +"T3B1_en_test_busy_state.py::test_busy_state": "2fbbd138da64bd6e0e3788b22e7cedff8c6f10b76dcdf6aa089d1f8f0caa19a9", +"T3B1_en_test_cancel.py::test_cancel_message_via_cancel[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_cancel.py::test_cancel_message_via_cancel[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", +"T3B1_en_test_cancel.py::test_cancel_message_via_initialize[message0]": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_cancel.py::test_cancel_message_via_initialize[message1]": "67bcd312e8f0fc9739b12700419844370f78c643450942768a355bb97e5fe4ec", +"T3B1_en_test_cancel.py::test_cancel_on_paginated": "3091ac71ff4b66b9f0182122cf29539eb424609570cf4c8ee720f8eab5ca3b83", +"T3B1_en_test_debuglink.py::test_softlock_instability": "9d918b55629ee90e760f62b1b8b0a972ec7a76858f2221531325193719a9a235", +"T3B1_en_test_firmware_hash.py::test_firmware_hash_emu": "07a18c9e52c1a1d865fbe57960ebdafaf1f32a3d426af991469680000cbbe0f4", +"T3B1_en_test_firmware_hash.py::test_firmware_hash_hw": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_language.py::test_error_invalid_data_hash": "0cb01b8002472dff316d6eb3ba901dffb762d88fdf61e5ef8642ca7772d3e71c", +"T3B1_en_test_language.py::test_error_invalid_data_length": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_language.py::test_error_invalid_header_magic": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_language.py::test_error_invalid_signature": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_language.py::test_error_too_long": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_language.py::test_error_version_mismatch": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_language.py::test_full_language_change[cs]": "5d3e1222ac4ed3afc376923c5d1e78f0faaddbb00de766ff14b85bf5068d5d20", +"T3B1_en_test_language.py::test_full_language_change[de]": "a4b4a4eb3ac5332f7628eb5b82f93c28c30af4297fbf462167637e4d72300073", +"T3B1_en_test_language.py::test_full_language_change[en]": "a9c383b584d24c5aa9623b7955fe3e45dcf6016dbc0327a7ce9176ecb0e4d5d3", +"T3B1_en_test_language.py::test_full_language_change[es]": "94ead6f9d0f308f60ffd135c9bbd5012a30f05b4f44fdb22286ae259bef9e205", +"T3B1_en_test_language.py::test_full_language_change[fr]": "2f3a0e8541cc7b96dc983d4de2149e4e2b230b43e1971153ec6bc82e7dadafb8", +"T3B1_en_test_language.py::test_full_language_change[it]": "70c9aed14d8c1fe7edce6845896eaa011d64b559aaff4e3cee23d4851c15ac7f", +"T3B1_en_test_language.py::test_full_language_change[pt]": "9b0ea7f11a9bd06518b0ebf855190ce5af3246f948925a9cce5491f05c749f5d", +"T3B1_en_test_language.py::test_full_language_change[tr]": "a030f3ca4fc62db73260e896eb0d6ad536fb74d015b39f310f9b6f11dd300445", +"T3B1_en_test_language.py::test_header_trailing_data": "b0f85bab7d392d0dc605b67a47ddab802d355f71c6038b44b243990e1f73430d", +"T3B1_en_test_language.py::test_language_is_removed_after_wipe": "e0c233271abb84b2ff487e3e2d8f4f111453cc7315af6e8c4d376dab8a9f0310", +"T3B1_en_test_language.py::test_reject_update": "949fb112e684d3fb8a204a8ce15a202ebe9613bd3a453408138b3e54bb42e99a", +"T3B1_en_test_language.py::test_silent_first_install[False-False]": "8b4ff15060372f2e8f4a59a8c97bd4afd77b3d57d5268000654d57e676dd7523", +"T3B1_en_test_language.py::test_silent_first_install[None-False]": "8b4ff15060372f2e8f4a59a8c97bd4afd77b3d57d5268000654d57e676dd7523", +"T3B1_en_test_language.py::test_silent_first_install[True-True]": "5654350dea70a8214c28f6046b2bc729fb1dd46b6fa1fb2f8841737deabe6a21", +"T3B1_en_test_language.py::test_switch_from_english[None]": "b678ce93d4acfbae9791447880082e747710595dfcd3b5bf748151f145c03377", +"T3B1_en_test_language.py::test_switch_from_english[True]": "b678ce93d4acfbae9791447880082e747710595dfcd3b5bf748151f145c03377", +"T3B1_en_test_language.py::test_switch_from_english_not_silent": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_language.py::test_switch_language": "b74085538e1bb7f0217ba5880c41542938ce41ded7e2499b1807c0aaf51d6fc7", +"T3B1_en_test_language.py::test_translations_renders_on_screen": "47922d94fd02016582810dea2286605d73f71ae325532daa72d55dc94ba7bb31", +"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "6e8c260e0032be944a2a02caaf3cced43bd2105d501db3a311fdbfbb5e3d6952", +"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "ab604d0dc62719f65a329e0cd834b076d84b8e6911445d51d4cd77d1cd4f0740", +"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "6629641be9c219175d87a006358d20c8a68e05324c5b8b047ea8fbe884a0c7a4", +"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_msg_applysettings.py::test_apply_settings": "e3b7aa4669dd38084a1b4942741e1cee4feb574f9638e56e9c6e2a0a0bbd5174", +"T3B1_en_test_msg_applysettings.py::test_apply_settings_passphrase": "a82a4ab4ca8d905ae55f12474230a72d3a2c6b495af64e659ec6093342b93e29", +"T3B1_en_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "e595040cd60ac0e5a31a768dcbdb517c5a8ca28e02707ccc35be95a0e516ac95", +"T3B1_en_test_msg_applysettings.py::test_apply_settings_rotation": "360ab2993d6610006f922c54c79ddbc0a5a4d8cadc5333c634db5bce4df6a4ba", +"T3B1_en_test_msg_applysettings.py::test_experimental_features": "cb18c97c7dcf8d6f839d207efe7c13a2448b1463e3b325d7be3c865630f93c58", +"T3B1_en_test_msg_applysettings.py::test_label_too_long": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_msg_applysettings.py::test_safety_checks": "a34a867f1d58b2a29c5d1724378f269ce699b380fd2206cc8cc4c06bcb76565d", +"T3B1_en_test_msg_backup_device.py::test_backup_bip39": "2c19ff45c8c02dadc065f360af23af8d357dedc066711cdc30c846cfc07a7d4d", +"T3B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", +"T3B1_en_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "e60ca26d789e9f749bbacf913bdae3b2941fa735abdb4450560d58945d62aa1e", +"T3B1_en_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "b6e34f1ccd560f41f3b33b4755e900089797898a66c8fdfd28d9f61274e873f4", +"T3B1_en_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "5584e1ccd6e80a8796d856374b10ce94f1a113cafc002e125fec4edf32a3a533", +"T3B1_en_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "d04c60fed9e5d42df72ff9a25a42353b2eb02490f7f03d8bb3822c453c2b6cf8", +"T3B1_en_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "ac501c19e3901a16577946fd165ed6cad15f46e0172ae3d95866b558e151288d", +"T3B1_en_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "81d5804eb846dd513b42b684ca6477841a673e81dd8a30dabf8c55affea216ca", +"T3B1_en_test_msg_backup_device.py::test_interrupt_backup_fails": "1139f673473fbf725b2ee52d4965917c6a72676e69b073707f40b556a48f4b79", +"T3B1_en_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", +"T3B1_en_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "ad9871bad4a93df7cbf27bffd1709e539a3408c1b5e3c5bf458e9946a6b43ad0", +"T3B1_en_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e7dbd89723a50e0b5ac4810ab681044f6ae3cf6c203beb346281bd5d8677dff7", +"T3B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "d9304c9e8f08c28b5d34e4e3575850febe0b6540e526a4a6056a6af16f5c9ec8", +"T3B1_en_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "c5643d2e2f77e32df0d695fa892514bf4f49efe4092314bf3236bfe3f0fcd701", +"T3B1_en_test_msg_changepin_t2.py::test_change_failed": "fa4dfa139d8647362ed0d604a459c338a8a21423660b0f42a086c784cbe98a15", +"T3B1_en_test_msg_changepin_t2.py::test_change_invalid_current": "ac9d4575a3d8b3f04b01c7bc25f7215472e127ed9c0a87cfdab322b69333678c", +"T3B1_en_test_msg_changepin_t2.py::test_change_pin": "25a65cd0be2af30dcbd0b227b939d9a559e7e779b60adcb16a50aff1490ec87e", +"T3B1_en_test_msg_changepin_t2.py::test_remove_pin": "f5dfd810553a41108ec3379e1a7dd74b5e8ef23e0302f8b95cc99fd5152d8009", +"T3B1_en_test_msg_changepin_t2.py::test_set_failed": "200c1497e33124deadccd5b84e68616d6d27d03a3613a00055ef733604a12d9d", +"T3B1_en_test_msg_changepin_t2.py::test_set_pin": "27391983afcf9aa42602b4bf955b4121130ec16ccf4503a078378f4cde4425fd", +"T3B1_en_test_msg_loaddevice.py::test_load_device_1": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", +"T3B1_en_test_msg_loaddevice.py::test_load_device_2": "cea57802e624373fefb1084a361ef997bae138e7e062159ef9bae0e8cfb536ff", +"T3B1_en_test_msg_loaddevice.py::test_load_device_slip39_advanced": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", +"T3B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", +"T3B1_en_test_msg_loaddevice.py::test_load_device_utf": "0623bc723e20f4690524a8dad3b7f2c0cf04e45b2e0202788e75758ef4a2156c", +"T3B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b90e8e9393e604b4f83d718aada5e0f93bb460af49652b20ce7733b3a2a00ccc", +"T3B1_en_test_msg_wipedevice.py::test_wipe_device": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", +"T3B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc", +"T3B1_en_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc", +"T3B1_en_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", +"T3B1_en_test_passphrase_slip39_basic.py::test_2of5_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", +"T3B1_en_test_passphrase_slip39_basic.py::test_3of6_passphrase": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", +"T3B1_en_test_pin.py::test_correct_pin": "b3ff06685a91891d4cd3056c4d3f24d98ca03c3c27aea398ed9df4d850e53da5", +"T3B1_en_test_pin.py::test_exponential_backoff_t2": "8272d37539ec7f2cb0f5f830ed8587bf22795e776422b657231017909547d8d9", +"T3B1_en_test_pin.py::test_incorrect_pin_t2": "118048abb1aa461c0bdc2224ba21c9bd6ea400926181baf3cf40928d2d4af29a", +"T3B1_en_test_pin.py::test_no_protection": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_protection_levels.py::test_apply_settings": "3dbee4c40d0015291e517929fed12a171419fca4abb4171be2d26d7971dbcec0", +"T3B1_en_test_protection_levels.py::test_change_pin_t2": "ad655f57c18315e9435937e2ff7032e4126485ccc86ba9b04c9a97ab0bf67505", +"T3B1_en_test_protection_levels.py::test_get_address": "f2e6d0a99075e8bce6214a65666ba8fa075bd70b3cdf35339fc5aedeaa433512", +"T3B1_en_test_protection_levels.py::test_get_entropy": "3703bf4507267a8853962b0aecb9f850e7dfec0e3c63e2766108c31a3b2612d8", +"T3B1_en_test_protection_levels.py::test_get_public_key": "f2e6d0a99075e8bce6214a65666ba8fa075bd70b3cdf35339fc5aedeaa433512", +"T3B1_en_test_protection_levels.py::test_initialize": "6fd28fae1513ab90c8d51ca862a6efb462238bed30725db4feb4b439d021470d", +"T3B1_en_test_protection_levels.py::test_passphrase_cached": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", +"T3B1_en_test_protection_levels.py::test_passphrase_reporting[False]": "55c41ef798d2ed288edafb144e84ddaf57186064cc4bd4b7e49b9b0a5c7b5f0a", +"T3B1_en_test_protection_levels.py::test_passphrase_reporting[True]": "1d09713ec651cd6ef919e50f12c7014b7089277e32830ae22ce237fd94e47b61", +"T3B1_en_test_protection_levels.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_protection_levels.py::test_sign_message": "130f246044184e687c73c3257c865edc89e93fd333cb278926305af63c51ac94", +"T3B1_en_test_protection_levels.py::test_signtx": "68ba6f88f32111c0e5517f325041f8763ae8ca6a92953e96eb2a68a578c82737", +"T3B1_en_test_protection_levels.py::test_unlocked": "95cba1775050d4d6bf7dc3417eb05f814147d930667feda07f65c22e0c528499", +"T3B1_en_test_protection_levels.py::test_verify_message_t2": "4f225a4839c5d31e527c34a4af320e6ac1cb611ede3018bc0effe14eb43a72b5", +"T3B1_en_test_protection_levels.py::test_wipe_device": "ea9872538ce4f61462eeac4880f9635eebc2bf9220c54ec3e210b773cda55440", +"T3B1_en_test_repeated_backup.py::test_repeated_backup": "feee62e02f5679f28fa928382122fdc2814d7941f101d7841243dce0cdf178ae", +"T3B1_en_test_repeated_backup.py::test_repeated_backup_cancel": "da5218f7195e6e1cab7b95a2a2465e60978bd4d1140e7f8d3d7b814b44c04043", +"T3B1_en_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "1bbda0ea8a6bc5bf77f77682d35ec8f0d125eb5e7217d7eb527b5f04db5f6b5a", +"T3B1_en_test_repeated_backup.py::test_repeated_backup_upgrade_single": "f3ecf16e519cd36d585486f388166361fcf5040802ce64da5895cd55c4bb7a35", +"T3B1_en_test_session.py::test_cannot_resume_ended_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_session.py::test_clear_session": "779c42d2d2c288f8486356395b9bc204fa0ff773f723c6caf4066126e38e531f", +"T3B1_en_test_session.py::test_derive_cardano_empty_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_session.py::test_derive_cardano_running_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_session.py::test_end_session": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_session.py::test_end_session_only_current": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_session.py::test_session_recycling": "9899d60e2777d249c29160e876ec8a9e8d182fe9e0cca7ed1e833403934dad39", +"T3B1_en_test_session_id_and_passphrase.py::test_cardano_passphrase": "042fef8250681b1ac2a1f14a7389a85644638c3df0e5a126ea91f1a24f73f44c", +"T3B1_en_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "803ccce1d6845345b00396db28711cf2555833203700a58bf5c7ad872ff27705", +"T3B1_en_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "3e2c53f842dbe4a85e9cb4d0ce0d59a17ccb22be53a87acf17bb030eb0ffe511", +"T3B1_en_test_session_id_and_passphrase.py::test_multiple_passphrases": "27f3bf94dec5abcfb2ec423a5871158610bae51a08d801f180fefe0c8972fd2e", +"T3B1_en_test_session_id_and_passphrase.py::test_multiple_sessions": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "b70d9d2aa7a8ace3251763c1d2fcb53dd8c741b7520d717398df8f7ff8ac9128", +"T3B1_en_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "299e864a48f7bc8a498d726c5f39ceab44df54dd79eb927acc9fc49937fc53c1", +"T3B1_en_test_session_id_and_passphrase.py::test_passphrase_length": "7cb565e1cca10e69500e48079a37bd88dcf6e3931d7511a049b38feee95ceb3f", +"T3B1_en_test_session_id_and_passphrase.py::test_passphrase_missing": "5f2c9d15b92ca01e8c682408ddb8ec025aaeb54346a8c13d3bb9fafb682ec5df", +"T3B1_en_test_session_id_and_passphrase.py::test_passphrase_on_device": "b06cbb14d16de83f6cdd311f75119bc3efd6cf312b6889318e261bfc3d4f1d2c", +"T3B1_en_test_session_id_and_passphrase.py::test_session_enable_passphrase": "a944ccd981528c3e95018e2915d4fd5c44a990b2ceb64ff2c8d630fc7e918ea2", +"T3B1_en_test_session_id_and_passphrase.py::test_session_with_passphrase": "79704e684ec43e8eaee6604f7986684e69c95935fc44064e566993da3e1edff5", +"T3B1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "718364f43811e6e8366675fb29661438a924f5bd59a51a7c253a2297f902ce29", +"T3B1_en_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9208f4ca66bc8a7be9ce0f7661cab2d6f102500a0fe5214f6c2042a452b45299", +"T3B1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "53928e3a3f32d480e096b063c6700636fa6612421dc3b9708db25e4b4c7f136c", +"T3B1_en_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "30a75b8ca64781e76af502045a34c2b08a8bbb96509b6de2991ea6b88faa1dad", +"T3B1_en_tezos-test_getpublickey.py::test_tezos_get_public_key": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "bb6277c10508c66434b78c00900f69241924a8af5363416003edc338b3588ed7", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "6d6707c052afa001dd326f7c2a75f8fdf1a792e79dc3dde0ecd22feff60b6794", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "9118737aaebe86980f3f318413b2b4f8c9321b1ac157579dd2ac8b7622fefb07", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "a7e4e8c2224855e3da7a46260e7881e67745215d44a0b5d26e791156c53871b7", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "801b375b822b625a9da05c6ea900895503f580009258583ac3ca7246ac10825c", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3cde303c584e2c57e8c2d2d3aa12f2e1b2600ec633e600e5ab7be88c16e8146c", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "956a22f55c45b1fc571f316152c7fb5c54c3bc2fe12ed5b95d94b19861a3c867", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "2e9b25761ae67de02e6ecfbd335cc914137e1592e55c00dc07d66e0433187392", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "2d4ca4d5951086bffa7d6ee400529da8a463483d01067f42731a3c6b0d838377", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "7fe4eae75a497f6f58f6f6fd9c157d2446ef0b2e75414aa3d50dfe70092bd7fc", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "3dccc92989c6a6bbc5a408d07cecba4093613b800a2d2e0c08ddcef549ec6f1f", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "457f062e77fff8d87bd37c77ddbc719b2847cb1bef46799428966b64eb074ed9", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "bd2eff5baa329dc24bf87365ebc4c6d21b685e353bfa41391d2be5712e86dc36", +"T3B1_en_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "0af1c9667adef5ae37caa6476445931b89d9beba83b5758230908482c49cf5b2", +"T3B1_en_webauthn-test_msg_webauthn.py::test_add_remove": "d8385fdba14ee5d71f75145ccd6574a736d2e3c3915acd15597cc40618b14c94", +"T3B1_en_webauthn-test_u2f_counter.py::test_u2f_counter": "097bbc8fb0ed96383c110ee6430e1d168d837ec110ba04d29179bb0789cdc3d6", +"T3B1_en_zcash-test_sign_tx.py::test_external_presigned": "234d3d65084105e95d632c69bd0e8624988cb98479f02da591104911877f01f7", +"T3B1_en_zcash-test_sign_tx.py::test_one_two": "67e8bb08d9007687d92dc308aba649e89a63b91ed0cf4427da44c22a6e9df265", +"T3B1_en_zcash-test_sign_tx.py::test_refuse_replacement_tx": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", +"T3B1_en_zcash-test_sign_tx.py::test_send_to_multisig": "38f719702e87035ad522f2c4c4d943c525e0c494a2765486d97735b87a081ea9", +"T3B1_en_zcash-test_sign_tx.py::test_spend_multisig": "68b7d0ec9e8a9c6b06ac535f5470661d104e01d59e474106e5c6548fc63e112b", +"T3B1_en_zcash-test_sign_tx.py::test_spend_v4_input": "ae5ecd07621463289b5c3e7a4cf2c8333ce3f2715317a001489a20b8d2f113b2", +"T3B1_en_zcash-test_sign_tx.py::test_spend_v5_input": "57c047310f07daa52f1ba348720db1617ece5081a79f857f97620d4826e66f39", +"T3B1_en_zcash-test_sign_tx.py::test_unified_address": "19374b4d584e40c11b64cec8e481f014e647aa4fd8cd51495261a79d2560cf12", +"T3B1_en_zcash-test_sign_tx.py::test_version_group_id_missing": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", +"T3B1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "cb5054566695d06a78fa853889160e1c3ec9791a8a196df629f741796766ccb0", +"T3B1_es_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "5c48d7bc39446e8e95aaba3a12bef3bd6adcf3ef68bc03213e411290b6216db3", +"T3B1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "77c92cb466ced8659d1033da0fb876c0dd8f4dfa826160f9077a7ca728ed4fef", +"T3B1_es_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "0877a1818fbe901149223fcc9f6477e221a4e75670ec0ae88587dc08ccf098e9", +"T3B1_es_binance-test_get_public_key.py::test_binance_get_public_key": "5e0fffd73cdd2553018bd0f80eeda990f9845ac0ebcf17a530255beceab45a8a", +"T3B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "5c9d4a277a91bac643c6141cba71d51f26f4262bcea654fa5b20d2dd1f38805c", +"T3B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "687c2d33e1eada9442d129d31121d8e6c7525a2bcdbe2fbc4ee96a5d627e95e7", +"T3B1_es_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "908da5010ff89991c3fe45954749e23010437bdd6b5a48b42264226185d8d292", +"T3B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "5c9d4a277a91bac643c6141cba71d51f26f4262bcea654fa5b20d2dd1f38805c", +"T3B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "687c2d33e1eada9442d129d31121d8e6c7525a2bcdbe2fbc4ee96a5d627e95e7", +"T3B1_es_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "908da5010ff89991c3fe45954749e23010437bdd6b5a48b42264226185d8d292", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "a1bb58cd3f498dd61978c53b3d0009f89291d6db236f4491e706953921ecb04a", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_get_address": "610b680fc768e0ea25d782a3158d904ab55880e347a159460bc520bfdf71770b", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "fce796742f8bdb5d18d9189395a558dcd41a89e8e4e0cf9b425894afc085a7a2", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "ab9079b221552a78d899b2ccd2e4a951597781ed31621c8e813d0b7bb2138e09", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "83d5fd843fce37eb4b06f996d4bf0a3f241b32fe013e070b70918e6f429161d7", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "83d5fd843fce37eb4b06f996d4bf0a3f241b32fe013e070b70918e6f429161d7", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "e5d55ce428d5bf75d421252597ded559b6038a3dd325e64814fe56839fd5087c", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "21dbc28353e0e5cc571d5bac605cec888a6e99b78482a1c7a95056db2f3be6a2", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "c46f223715b7919e84b8c20ac59a0b670e7507bbbf30f1c4123dfec3b805f9f3", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "838ec403f6c8fcb727602c60ffa2837fd215e172c23e89afd27c480bde849f30", +"T3B1_es_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "838ec403f6c8fcb727602c60ffa2837fd215e172c23e89afd27c480bde849f30", +"T3B1_es_bitcoin-test_bcash.py::test_attack_change_input": "e78145e315012c867be09ff8c763dc61242786dd14ed4561663e9ab6f00582bd", +"T3B1_es_bitcoin-test_bcash.py::test_send_bch_change": "c6fd41e2d25aa0dac8df8d59dd011694d4b059fff381989a7739601a54d2b8e1", +"T3B1_es_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bdf35e6aa6d320fa70f7c7d249e3ee707c4619c32eed946e13b4c9f4a605f9b7", +"T3B1_es_bitcoin-test_bcash.py::test_send_bch_multisig_change": "c92473a8f0d5c46c87f1e3f52cc23a8fb8726bce427fbf09915be774737ca721", +"T3B1_es_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "27737ab4940559d6cf129c9f9736c584e78b0dc6a85b36a371370ddc292a55d5", +"T3B1_es_bitcoin-test_bcash.py::test_send_bch_nochange": "69fad2e4fd135e3396628edf3542e96b4fd53c823bb4e4ef6034c752ca895879", +"T3B1_es_bitcoin-test_bcash.py::test_send_bch_oldaddr": "6df157bd4cdb6fd7b9c082bfdbad18a89ffd90336b741396eaabd8877fe1f92e", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "6094bbd7e893dd2a34efa8509dc9a22339f420ae3bfbde0965f046984542d509", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "0929323712285fd3011523c441d25e420bc3946c76759f806464b03b90fa56d6", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "f7e1cc4f49f3b1ec35e2deabeeb8fcbbc12cfff31e677a4bb1d5597f1cb89f43", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "553edbfa09b12acd0c872b749aa7a652d9deffdf2625d6dc7df7aaca7f32e9a8", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "f821d740dd9885f436d951b49c543ec38cb44989cfeaed60aedd51875fd07126", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "d7a9d3650107c3fe96806981973e4a73daea0614803b240be148b8195ae51d0e", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "5664641b97ccd7c9d69488bb5a646808e89b9988afdf0b46db1f1ff9a5047ab3", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "e1001a828d9c7091844db020394a0856d0da54eec5cdb17963b230c6086568a7", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "b0508c252cbb32e0abdc798151e9a0c24ed7820314b7366e1f71f53a38e313dc", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "d477bd0321936267cfb49035031e18676512b00ec52ce8a54340c96d02d724cd", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "c301515b8e7eed5b5097aa2289e0e2184db71b6515f36694fcf6ca3d3fc506e2", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "84131498dd456bec5026ec98d34a03ff73fb7b4c91882c2e662d31b1b6ccaf7c", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "297d15f58d5f97a0a2830478401721297cf0de16edde1ef9898030af96bc78a0", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "35d0591bfafead4b84cf6591b4d49be134b6b5e9d8b6f9dced9028e22191e292", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "e7493622bb27b9f7dfe66428a00e499e1c3b2c706e4560add255cb1fbeffc247", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "e8217210fa95119ff9ec02d8fb78a829f40d1bd166a5db73744834ccc216b5c2", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "d0e00e013c38325ed9970b4431fbdd48cac8ccbdae57acc376dd3cfe78d52368", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "a472e956ba95b4efefd27f2bafd6a5d5bffa56ca010706c3281003634c925405", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "6094bbd7e893dd2a34efa8509dc9a22339f420ae3bfbde0965f046984542d509", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "0929323712285fd3011523c441d25e420bc3946c76759f806464b03b90fa56d6", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "f7e1cc4f49f3b1ec35e2deabeeb8fcbbc12cfff31e677a4bb1d5597f1cb89f43", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "553edbfa09b12acd0c872b749aa7a652d9deffdf2625d6dc7df7aaca7f32e9a8", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "f821d740dd9885f436d951b49c543ec38cb44989cfeaed60aedd51875fd07126", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "d7a9d3650107c3fe96806981973e4a73daea0614803b240be148b8195ae51d0e", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "5664641b97ccd7c9d69488bb5a646808e89b9988afdf0b46db1f1ff9a5047ab3", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "e1001a828d9c7091844db020394a0856d0da54eec5cdb17963b230c6086568a7", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "b0508c252cbb32e0abdc798151e9a0c24ed7820314b7366e1f71f53a38e313dc", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "d477bd0321936267cfb49035031e18676512b00ec52ce8a54340c96d02d724cd", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "c301515b8e7eed5b5097aa2289e0e2184db71b6515f36694fcf6ca3d3fc506e2", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "84131498dd456bec5026ec98d34a03ff73fb7b4c91882c2e662d31b1b6ccaf7c", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "297d15f58d5f97a0a2830478401721297cf0de16edde1ef9898030af96bc78a0", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "35d0591bfafead4b84cf6591b4d49be134b6b5e9d8b6f9dced9028e22191e292", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "e7493622bb27b9f7dfe66428a00e499e1c3b2c706e4560add255cb1fbeffc247", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "e8217210fa95119ff9ec02d8fb78a829f40d1bd166a5db73744834ccc216b5c2", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d0e00e013c38325ed9970b4431fbdd48cac8ccbdae57acc376dd3cfe78d52368", +"T3B1_es_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "a472e956ba95b4efefd27f2bafd6a5d5bffa56ca010706c3281003634c925405", +"T3B1_es_bitcoin-test_firo.py::test_spend_lelantus": "dcfc847a62ef5111f2f91069ffbd6a53b26e39019bf3c15d1254eea94dfa3a30", +"T3B1_es_bitcoin-test_fujicoin.py::test_send_p2tr": "34015cf0db5a4e0f434efe5fd4f26675933fe25a21bf755ee1867f9638aee37f", +"T3B1_es_bitcoin-test_getaddress.py::test_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_altcoin_address_mac": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_bch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_bch_multisig": "a9c2a2999f7ea99eb06961fa6b1d84ed65dc43cc8a48a2cc5baabdfb7efc5f97", +"T3B1_es_bitcoin-test_getaddress.py::test_btc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_crw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_elements": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_grs": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_invalid_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_ltc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_multisig": "e4ccc3954dd47a047b534099b85a0d96a90f8e412f5b14dfdb5e3eaedf9da68f", +"T3B1_es_bitcoin-test_getaddress.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_multisig_missing[True]": "e8754753c40568313b9f8d41ab993ba8c2dfc734f221fe9e84d09995ec1884fd", +"T3B1_es_bitcoin-test_getaddress.py::test_public_ckd": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_tbtc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_tgrs": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress.py::test_unknown_path": "3d7112434826c915705233e9e2ec10b3ee3d9fba166a46fca2f6176d7b76383b", +"T3B1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit": "839b9a755a2f37827f7fbd9691e99b4fbd2945f8837c0c1b7c756cc19832306d", +"T3B1_es_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "bcc2a3ca7e2fce257f7592f1dbb45555c4832a1ecc221e3ee77ff74264bfd7bb", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "d6a4f470d0077528bc2c77f4e82e53682857272f3d470fac55d77e3481dd2647", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "a49abbf100b1c711c9a95431f05d1da8e897b0ef63c23a7e731ad248426fba2c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "0989c21ae10960e1ef732e5df768cd47f9c7788f9e6de28df2fe11a74a10a7c5", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "7fb15431f18f7f8975718aa59c73d2379e0da3cbe5877b81c16e0a34d7498013", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "fe3f9af758268652f4ebf76e538c7bbd6276101f5f2ba02a9371dab9f0098400", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "b647573ff276bfb8cd4dfa75317ce944452cd10fc04e7ee11002fbc83146e6a0", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "83a995dd5c9c9188c1a0da8a64a323d3d1b475847ab708ee94e23c9413cf0f6d", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "c5ddce05c45f220471881608252a1dba778b00579c7f41aea6cb0e223d7fcd13", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "d64621f1df7f7b1738c25bd8ee96aae3aed287d90da4e9f8e596c0eae3db1af5", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "a75bb498d44a2a981f4954f26c60f0d19adf3451eadd516347027bc26207d64b", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "a2bd7333b9072e911a257f49fbe942964af1537aa809e2d79306d9e6029a3953", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "ee23e08f3a534c1696cb28592caedc93b4f3a4f02786880c9348c223e87f90ab", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "6580bbee7220ffc7031534c652695e4cc577b8a540f6c31449c9c6e89ce93c93", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "5545b4edac0b7c660dd470778012bd52bb99eecd8e9eeae24ab93d4f1deda734", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "59413c1c15b496606be775aa65434d6ce427b596061c4865b5c7f536153f193e", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "8793c6941d6f7309fbfee56634184926bc26845d472b36bd655a70d81185e390", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "18ec20882980d77781793c4bbb31697f8a336e1eaf119864d5c636eab07f2784", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "021b0d4199d247bbd1a1f33c3e74051eacbddeb8ec33104a5c72de93a4149c7e", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "d8c4bdd457480e9f517883c135a6f8e7324e6c4d1ba756762aa22c9223acee29", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_15": "c9ee3f63ee0006eb7ae2c051e2bd9606a900506b91cf5508b362181dc7bdd425", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_3": "4039d34db4be3b629b1552add822f6eabf379aa8974c68725412a4626cd6019d", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "17411e319a72be0fe4b2154353f6343c57c2d0ce7a4d38bf14ff19d42f0af6eb", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "17411e319a72be0fe4b2154353f6343c57c2d0ce7a4d38bf14ff19d42f0af6eb", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "982fba8854f3561e472ee4fc4c2ce114b2cb9310e5e29ceec60b193bfbc79c19", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "8e782706608fb062b635c4daaea308182e79275d900261a73cb5f8d7e823822b", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "dd17633206a2ae4ef9b68bd14830180c2dececc23887d711e10afba8ef665957", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "20da309c91662c63ffa21b6ec22178e7bd9d58eaa7fc9953c8a72c65809abf6f", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "ebbd51b92c8623d8a987fa5845ffdd21dfb6061709b5e3dfb2f6b8a7b8bd93aa", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "c211e1f589bbf44917f780207e1dca8d4a25d4586c3e0a85e3c06d6d5008528b", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "acfc35968929bd8ed898bb93da05da4a830442ca76b5c4baf69eeb5034f3af54", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "7bcc7409274412e9b91c12bde9aba25c551de0f54b0e3290a2b649f485848354", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "b795ab0bfafd75d085bb6d2623f1e23e410c33a17ee6f0ccd5ff073757d21857", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "f0a2afe8303e6c3bf27fa2500ce79aed3a73e786a165e19613bf5519c29384a4", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "3594065903d61025ced837a373f037a10eb7dbb61440a794f7fddcb3886f2b62", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "996d0ad839003fae7d6a0655b6d30e829fb7545d7b0690516c7edb71cd1b82a9", +"T3B1_es_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "3b214cd6f08488f1d01c91c41f4ca9786f0f4b00819f9022e589a93dbfc9482f", +"T3B1_es_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "8e7e8bf2dd4d7e3bea290c2f5a09527c867b45d4179b256b2ba3dc83b21ce8af", +"T3B1_es_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "0929323712285fd3011523c441d25e420bc3946c76759f806464b03b90fa56d6", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "b05f596c947eec1002b109fadd996ca50043c41fd1ec263164b32fff341752bd", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "f8b1534375e9ca30b54324067010ab869f9fe31931fffaa16873b18ca4567da9", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "4100a1fa21e50cee0d022837d6dafd7de6b3264043236635f742b82e005c23a8", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "0d0c5a89dc907bc0bea8becad5ca32a0e0434c6fce806726da35f83f3c69abde", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "341ded61ee4354fb9ad845c55d856081be1e16a28c37d480b2c12e4e78cc7d06", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "4b51355ea2ef7880bacf9239a176934f7dcf03e1bda4a22f9e71150a6278a8c3", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "c6f8d53217cd4ad0043b3c4f0e56b80ffa8ce7d41d46b701777663bfb1686f98", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "20054db346bd8963c883a85352c5431bf1abc955d2d64304b0bfdca526611dd8", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "c301515b8e7eed5b5097aa2289e0e2184db71b6515f36694fcf6ca3d3fc506e2", +"T3B1_es_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "3db877c667f1c279fce3fd3c59674911b9a6990352e1b11c5bc1f5a4c1e519c3", +"T3B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey.py::test_slip25_path": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_grs.py::test_legacy": "2a751c8bdd1a1c19f85f76ea379c71429fcac3dd0a02337b0406f98a9b64ea81", +"T3B1_es_bitcoin-test_grs.py::test_legacy_change": "60de25f5357604cd1bf0b237f29bb9b36b65ff08377e03f678a0a6fc6e9d7e8d", +"T3B1_es_bitcoin-test_grs.py::test_send_p2tr": "1c3c3c50538db94fb2a051877a72718efeae94a188ffec87e69647a8e2ed9da8", +"T3B1_es_bitcoin-test_grs.py::test_send_segwit_native": "bf3d8fac2d092df7b618591bdadca28950a7014269ffd7aaf324493edbfb9533", +"T3B1_es_bitcoin-test_grs.py::test_send_segwit_native_change": "e4b52b23313691a032319329e01d35e14ec4f64db971c4a3892cedb68cfc99df", +"T3B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh": "7dd1e6d1fcbf0e5d1e76f3b482d89018f1bb9237f77e078b68e88907298824c3", +"T3B1_es_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "3e6e3fc55388c3ddcb2a2a4ae57bbb8bb310535c6c4fc64b58b2004206652b33", +"T3B1_es_bitcoin-test_komodo.py::test_one_one_fee_sapling": "43c2c6e81731ab619a63002cf7a9acae5a002a8f55f3b150a9526c00a327e773", +"T3B1_es_bitcoin-test_komodo.py::test_one_one_rewards_claim": "8fd9ac89fd824f04759bf07a90e6c2b97535aab66891ee4d138efa40546640de", +"T3B1_es_bitcoin-test_multisig.py::test_15_of_15": "ceccbd33506f1fe517cc5209b0c30eda494e0588f46dca334a8c2654eba3d24c", +"T3B1_es_bitcoin-test_multisig.py::test_2_of_3[False]": "49dfe4061e888f93e9958ad94db64923b436b9c263347c5ba50757aaab5d7cb7", +"T3B1_es_bitcoin-test_multisig.py::test_2_of_3[True]": "cb00d537a5cf5ef59896c0c0d5e08fc76ced4d11da11bc2206acc03f92fede5b", +"T3B1_es_bitcoin-test_multisig.py::test_attack_change_input": "858b0c31fe6e78c4d7048ce427e4c49fc7b3d08a8dc559c84e35f27de2a3477a", +"T3B1_es_bitcoin-test_multisig.py::test_missing_pubkey": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_multisig_change.py::test_external_external": "3ad40f4a958880d5cc9c4df065c3ed662ebeb3f7a0a72aefc59bfbdd66e58e0e", +"T3B1_es_bitcoin-test_multisig_change.py::test_external_internal": "abad31bf895e1723696dbf4bfb4f9508e46aa00bb83f37058bea162b80dc1165", +"T3B1_es_bitcoin-test_multisig_change.py::test_internal_external": "bfdc3c4f84e690e031edb745c09dd3b51e78b88e350eb7dc1e356a35d7aac65e", +"T3B1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "a918ec5eae4850a34279d26c0ec798ee2f70ce15e391beae25b3e1014d6ae3ec", +"T3B1_es_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "c8511a3b162c6d720a25efff303071fda9aefb027a1a4bc14eb44dc42e844f43", +"T3B1_es_bitcoin-test_multisig_change.py::test_multisig_external_external": "293dcb46db1b66886e278066128ebd0549d605972adacfa6446a2c499e05d354", +"T3B1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "832353ee58b994e21124428e0ab5f9c8b45ecec352a48505976325cf2d7c7c90", +"T3B1_es_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "05b8e464dcca41c0fe9ee69519236509532d56e90cc8e5cf4380784f4f7f8a98", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "fcb54adfc10ece04a9238b1cbafd5e94578af7359a1772bdabf4099cfd9f6da6", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "34f9bf81eb96a865997524c685f55d5f4c540c967d1da999f4a5dc7620cb9f4a", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "163d3c418710f15924ae83162bb16a159d1691b431c9c5ae33cf2a0431a2a835", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "d6d3baf0f1c8051a91004c6823969b9e1b184f4feb2fa5a2c25b7eb543524076", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "031fe8e8e83406e07f18bc801aa6e2ee710fbfea5f3293cef590b66aea7b3cbb", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "1b990105426c14bf4365e724d9993ba6cf79c6bd75426a3c575f7bb3398f6101", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "c0e34611726d4dd4f9cf25ba6bc5e2e7ab2c50d9874adfe18881b777c9126923", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "ecf12fd33c711493a7320a7c4a76da42279d406bec20b45b6753263b6ae517e4", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "42c224196cb707a62effe0fd55de67fdfededa396ad6573772f75987c65f75f7", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "5c064bf14ca98a09413765ff2466d279445d282f93e3bb57917fcf263d1dad86", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "cf6d63a2f6ae29515951dffd509a1d5d40ad765620a31865743f9fd648da6a0d", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "b8cc9f0081a7ebf1255dee2e12e62747e94772dc45d4fec877d87d78ff661000", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "09fd6703925ed5fe1b987591b4c3518ae7430a7d434537146f515965caa4f196", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "d0c39d54a2214cadd43df01154b242932db1548d67f49b6ffce3b0aa1fb6065c", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "f033b8ccc38811cfb1c0199387d47db55a8647404bcbd9a9df44c082f0f63648", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "a94f69aeadd2b75935d396a3ce267c89f73b1d975847585825d435942925907c", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "46dbe8a4546c26085dde1495d2392b9929ed521f5313aafd5e6cd35a7dc57838", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "4619a0eec7484acd5f0055c6abba7faabf59e8e7296ad003015c0b03337c9d83", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "8bd1187f2f77414f625b3a1c9c5cee2f44f53406674d040f06fc0455fd2d120d", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "ff43ad5cc0819bcd365f069599a3c2c7208210ca5109c14bad1feb6a72dcab78", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "31db18543a0b5f8d70ed0511c7a3ff28d337590a0d83210c5c033e2cbf16599f", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "b3ce35a320948ac240fb1c6a1265dc3ff8aeded37952ea19e01f2e9dc6e5d40b", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "e8fabc62ac646951d5039333fe5ed9fb58f4da9f9395fce5f26612db84ee0333", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "6870f16622ea0f622672b3ae0cc59aeee1bc8b292de5d3fd021979868b02b258", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "596a3935e27943d9c4773699a759c5f49353541f63034aef291dc135c2c107a4", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "4e5874476aab31535cadb1d49c48e4c7cefb07d08ccec9dcf9b93d7bbfe21e12", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "23a3198bebe3f2dd7d25d9e0558c1831d4030475216b637666e02de7e2eaae5c", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "896ff4ff77a47616ca09a847e2b206919255f08403eb65a313cd8069d8c63df4", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "7baabbda4c7451f5d6ee372dddd3042645bcc995d0eab8284a98ef792c95ec6d", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "cb13c08f23f4e17a29b4b3df3195236275fbdd722e4e1281a98d8e44a3da8164", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "6fe828c6b03cc612a2a602ec747132deb48df7b47301351d3dea799375746b03", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "7b6c2cad904a36cc883099f4131328387d81500db5a7ffa125022dfdba5d6485", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "3e98aa3e7c1e07b10345e80ac275f2d55081bd4ef10aa19cc303dc73991a0ff7", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "11558b143163ee03a7af859666a41e468c84533274976c2d360986805f584ce4", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "3054c3b605affbf09382e220e1767c0c248f085863d0aeec6894a85708e2be37", +"T3B1_es_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "ca386a9267fef4789eb989dbcbd02179a07fc9b8edeee2159c566e27c4ffeeac", +"T3B1_es_bitcoin-test_op_return.py::test_nonzero_opreturn": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_op_return.py::test_opreturn": "192c74ccc1ea311f84b6b02405e15030251a18423509dc90ca2ac635caae2545", +"T3B1_es_bitcoin-test_op_return.py::test_opreturn_address": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_peercoin.py::test_timestamp_included": "a5db7330af1adb9d16a2cc7707b3bfda181149eec3a6a9b5b23ac92be74d5b28", +"T3B1_es_bitcoin-test_peercoin.py::test_timestamp_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "040e65801890966d0bc89d67d78509e9e3ffff713fe2424ea28131fd3c3915c4", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "53bffb4f448daff3a268ada50a05b5f9f6ba967f0e77f6bc32489695edf311ea", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "53bffb4f448daff3a268ada50a05b5f9f6ba967f0e77f6bc32489695edf311ea", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[bcash]": "4fb0c12387c5da4afbf4f384b5c5e3b3dad738fb4cccea8eb6b1ce7dfc695b28", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "fd6e88d5e16132dc62b85f570be7204b3143518fdd9e69372b249c942c5f70e0", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "ecae7e270fe6feb72e593486774e6eb09c2fdad0a9baa400222a940dfaee26ab", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d21462248f9b812d7405ae071280b8ea47231d7f6e5230913adaf029a828f04a", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "a19f078816996f97c19c27a06b978ca843faa88d4d70d542c117176fbfd4146c", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "2730b4eb3cd28361c0b14b6645644dc269c446de0d63305b3de9452bacde6b2f", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "2730b4eb3cd28361c0b14b6645644dc269c446de0d63305b3de9452bacde6b2f", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "b589242186908e4bdf35424fca66697ed19abd1e6724c360990636a9be340e5b", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "dcba485df8db15430602e9a453a6da309be983be2226e07c087e624eb903462a", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "9e171af07643e64efc67a4204315befce902c7c3ade3c662257b7402eb9abbab", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "9e171af07643e64efc67a4204315befce902c7c3ade3c662257b7402eb9abbab", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "11a023f240b5ff6338d9c65b2984b891496c0738de4e2b30c129eb05705622f0", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "55d4987a86ed27ccfc37376b739aa55e27d7731041b070914f3ed36fdd3c5282", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "2ac632b05a0b249a112c97f3908e58a3902f1627aa678ed22ee444f0de577844", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "2ac632b05a0b249a112c97f3908e58a3902f1627aa678ed22ee444f0de577844", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "7308a5db6eed0a4c7c4aa312ffe655f7106bdb151bd546cca4bcdd6c1ffa938d", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "6a463cb0b3c869f54806451501ed4b51d2a6fc0b2056af3f756e44043005fee6", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "d7705bb82c0d801b8a245de6a10c82042a47868fd42e416c83454f2230fe6f63", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "dd2a4e6215f9ada53fc938b062e5d185a14c4e49fd59a854db53f22f193f0a83", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "62998885190a38c2182c30e464d78390214fef0c55ccc763acbc513a73d7793d", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "43d794498da5b9b81bca3d11653680d4f1d1920f21120fdcad5b041c022f1d89", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "2e5a833b3854def17bae9fa748a00803e812bf805b2ad8b46c1c505364055981", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "a1b84f31d4c2b157abf6772c27e80513630ccc865f0c781517de3ec8e4ec508c", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "74fe66ea2a2f56c9747456101373b3eba91351c38e5c61f2679e581375e50cd5", +"T3B1_es_bitcoin-test_signmessage.py::test_signmessage_path_warning": "a753898a470cc483a1428e20268ff5e0835c0f44cf799838a6e788eaf79118cf", +"T3B1_es_bitcoin-test_signtx.py::test_attack_change_input_address": "9f24e6b556ac97df532d98b1c70142d3bf24ba89f5240eb6f47157d7a183d31d", +"T3B1_es_bitcoin-test_signtx.py::test_attack_change_outputs": "0985d0b9ff1e6bc80b17df2d28bfd8931653ebb1d94761a4e80818bcbe5a1a2a", +"T3B1_es_bitcoin-test_signtx.py::test_attack_modify_change_address": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", +"T3B1_es_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", +"T3B1_es_bitcoin-test_signtx.py::test_fee_high_hardfail": "213a380d6c7d24f9dc9b6b06ecc06ada13fc6a78b2edf5529d300f1e9ce916a4", +"T3B1_es_bitcoin-test_signtx.py::test_fee_high_warning": "bc2965f5b007eb07afa06c91a161967aa8da59363efee8c1e14f796f9254f7bb", +"T3B1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx.py::test_information": "3dba5798f7d727fd2ea253408ffb945eee0c66a58e450fe39d33be2c240fc5b0", +"T3B1_es_bitcoin-test_signtx.py::test_information_cancel": "75db9890954294a9be0f48c5d87aa370c9cc09349efcd306a1b5ffe02e90f904", +"T3B1_es_bitcoin-test_signtx.py::test_information_mixed": "b1171388b3b0d41239bb64659c67142ace0fda0c35738d963843340a12b55fcb", +"T3B1_es_bitcoin-test_signtx.py::test_information_replacement": "ff56a2236ca5d8ec886d0099f230bc8307e9b8f18695c28dd8570d4e18bbdb24", +"T3B1_es_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "d82773ce960c2f6a343ca3a0908ac34d5db5374aa4fda7dd00551f654ed99cfc", +"T3B1_es_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "767e4cd5a7d263c12a32ff3f943655a74d5bd4d4cf7f9a7a59a6b2a10e062170", +"T3B1_es_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "f52a229f39c10ac74673c77a5b3c3d1429dd2ca5e8dc0c3c8dd315bb090e1a8e", +"T3B1_es_bitcoin-test_signtx.py::test_lock_time_blockheight": "7f916278695301f6a2a8f24ccc13f76c082497ccfe6d39131f10b5d01080ccc9", +"T3B1_es_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "34e49294153891f3b2173f6376ec25ed126be4370ceef5c25a2ad0af71caf38e", +"T3B1_es_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "bfba9736c226ad919ea981587c4464cd2f9b90f98619f717c99e0fbd6473f9bf", +"T3B1_es_bitcoin-test_signtx.py::test_lots_of_change": "197e9046f31a4afb742885bc5d5c9b8d440b328612f90d5f4470ab39e0ad8942", +"T3B1_es_bitcoin-test_signtx.py::test_lots_of_inputs": "098205640055457ab00f3693d59d9d23535ac26ebf050cefb4027b21b53af8ef", +"T3B1_es_bitcoin-test_signtx.py::test_lots_of_outputs": "046c9bf43e036a70acb8b36a68f2f9aae4a2ecd1af1357732bbdeb7480c2c7bf", +"T3B1_es_bitcoin-test_signtx.py::test_not_enough_funds": "840d6312c3cd3b88481e62f99d0908ae0cb235de5f59838c6dfa18831ce894ef", +"T3B1_es_bitcoin-test_signtx.py::test_not_enough_vouts": "8a881fe6198f5dec72d2a828b6239841096f00d8163744729e33f0247b441598", +"T3B1_es_bitcoin-test_signtx.py::test_one_one_fee": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", +"T3B1_es_bitcoin-test_signtx.py::test_one_three_fee[False]": "62d01d966021462a475a77e8d9054ee79505a23bc11df983abc562d2ca5a1ea0", +"T3B1_es_bitcoin-test_signtx.py::test_one_three_fee[True]": "6e0f5400483d16d11b342d5b17d70a510c8d269818e26ff4e8ed9b12ca3f8047", +"T3B1_es_bitcoin-test_signtx.py::test_one_two_fee": "09ffa51d05b995931f05557536e7db57852e44e76a38f57c4403518609c654be", +"T3B1_es_bitcoin-test_signtx.py::test_p2sh": "4ec87eaa5f541c901f53950de27c9a125bed82cab927ebf180545d6cb0b4247e", +"T3B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T3B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T3B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T3B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T3B1_es_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2a21829a9cca21a707391e7181529cba4f3bd7e8799b7963e9aa7fdf0df5c373", +"T3B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_signtx.py::test_spend_coinbase": "5716ccbd9e59a09c8ef0e6b29f2b587670f1cfd82653b37a9e3ece245f95b8f8", +"T3B1_es_bitcoin-test_signtx.py::test_testnet_big_amount": "8b3b72d10891dbb5abb341a58cddaea5a04cc2869dbc03dcbbb5820ea84e20e1", +"T3B1_es_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "c329263235b7e15109ff72643756389953a1a2cceee4a3cf902cacf63c92b0c0", +"T3B1_es_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8dbbdafd0086dd8c57e0213fd4eec1b08326939e5628e433c7bb99700e5010bc", +"T3B1_es_bitcoin-test_signtx.py::test_two_changes": "c251bb4994c321e1d9155afe03a1b364fdb583b4ca5491d548558a187dec9b6e", +"T3B1_es_bitcoin-test_signtx.py::test_two_two": "c64ad880019b87b878cd65f9f99fb3a25c4e4c54a062a4671c3c58a805816f5e", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "4f8f6960764bf8b91f1769f29d52f4a7a65a1ac374b873777ed2bdfff104dd22", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "fda8de57703587de89d8cd6aa1cf97c9b7d20db251cb1997cf51435134d66f95", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "0ae3a986a875b0cf90a69b7a0108b6d8822df7bef23b0d26287aeee571110c7e", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "378eb9f1d2a931b96dea8e9a3ab6b6495ac0389ed74baa20fc4180c21f47af47", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "eef448b8ede9de6a58c9531abcabce5bf481f31b93ced57b93a770d1839a31b4", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "2890ba0616deb26c994aa316e25897422f93600f53345d3a34bb6aadc128881f", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "1cffec601f29f83b5b11fed7984eeb16369b07e01f06aea334f3efdb27d4e24d", +"T3B1_es_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "3a7488bf1e81ec6a72d7cf693c2d56849ba48f888948806d63019412dcdddb81", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "adc653de9b25713b357d07b599aba9acf542bb5ad7132e4695cee3b7c05f273a", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "60883f7b36090abea7cc13220ece54c319a9235f0ba7a8d5cd424491e144fe6a", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "8344c6e3ad81970ee8c8772163ac407b798c331c43b8fb374099028191a9ecbd", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "33fd9edf194e5c5649711b7b26bdf4bb9c67b2669bdad172f0b2718ba38e7472", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "b83ef8b909473d1c5bf4d4c6cee8b1895b7d8441fa0401f6046951abea47bdf1", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "ed1e67c17013c3ea366c5586b4eeaef26acdf9760b9515eace42b439490a69d3", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "627a26a1a0b34fb846c2c71c46d219df1141e811f9c73a13dd8b6750e8ff67bf", +"T3B1_es_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "1ff5ce3bfada2d4db22234c11482832fa84ace9a7549e0124ce66a407ec96b18", +"T3B1_es_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "523c107ee5a0fedbb575b07aacbea72f55e258732339e56fb2bfa2f454d27eea", +"T3B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "7a09f35c67d71bd4b61e0476c2b4d665cce0c60adfddeb6debf533190ee88d33", +"T3B1_es_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "241f7ca7ea049800f133d29744dfebe2f148c8c5a03998463cc54722169fe24b", +"T3B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "266f480a6c6d984e8819285aaf39a07792b140da0a3349af2741eded594e89f8", +"T3B1_es_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "0ef77e77eb7b76f6c6c0ad20980dcdfe3bc1e661f624a4380cc338d32c8cbd68", +"T3B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "266f480a6c6d984e8819285aaf39a07792b140da0a3349af2741eded594e89f8", +"T3B1_es_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "c383cf1816fd02001c1c70062c04b21529990ed628e3e477a36316b983467014", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "649943388f4e78369d850f96a7a87ebacacb9b62ef78d6bb85b700593413d49e", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "90954ee12f793e78b5950e176d8c46927c408dc37259d669f1b3114c6f98837f", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "60e8c525440bec73ab51c4185d7c58fe51ded659de3e512b6810e80dcbb65d44", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "91f22c7bf05f235576777e7d02cf5dcfe64798882d178eacba1975df8d129cd6", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "67c45fd34e8151d2e85962a703efa6f88b378e9071b2fac767b1f64c425869e3", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "256896d58b0dc8efa4f0301d4294db5a57a4a4095091ce644ee300b8b3a03cc9", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "75632bd70891842cc69b86d459a55e24c950dca67370bd1f0cbed10ac7bfee68", +"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "e697c25ecd11752daff3e45d1ba5566f9391222c8d9ef6d293aafda4b7b704f3", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", +"T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "5fc719d60cdd969be925b14a77a9e4cd05128ffa520032a056e83cc8df977477", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "7e25be6c882438b63a5353d7ff781aec10f75b906e3f53e66f1810ece8a6e1f3", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "8e78859c13eaf18a28f10d15da6e8f2efe84747796d605f614ab646cf1a2140d", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "bb9bde24225cf6370d6a4b3be6d29bb256dc96b332d338bf61f7e0aae7a03e66", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "bb9bde24225cf6370d6a4b3be6d29bb256dc96b332d338bf61f7e0aae7a03e66", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "6391281d9ad1331c52080045442b33768cac7267e4db478dc455df022a088165", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5718c6ffdf8da52efd6fa890361cbc9039ce778a95b1b97a31412c117ca5279c", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "06322f40081386aeddc8ef94900065c8282684161b125d356f1465ce80c4ca66", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "6391281d9ad1331c52080045442b33768cac7267e4db478dc455df022a088165", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "97972a79a3e7f6eda2940b588622a04d01dbc306a5adf1e9e334054da2411f2b", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "a998245e3ecc9f6c20e93e3cb6202b470a6e10f30a588ccea6a3ff9255c6aa42", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "b5eb1c4f5adfff9a69b4559f0f9c8c897963bbf25fab0fb9a563e43f60d81aed", +"T3B1_es_bitcoin-test_signtx_replacement.py::test_tx_meld": "a369b25651895e8ef28ede6aef94b14b06f9545b91bc815d8caece7bb203d108", +"T3B1_es_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "9df9b841bea74dfd936242f7675b6b6cd19b0e0ae6297edbed61273e3b9639e8", +"T3B1_es_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "2c48130e1967fd20a19604b87e5d0c733218dea48d0854ee55537aba278dcaa6", +"T3B1_es_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "8c6bcaa8a4686c685229e6d73a4b1de0377ff20243eb296073818b20cda22f8a", +"T3B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "20f09cebad0d3ef8baf1494bdf5d75296646df3100ef616b2533761223f466e6", +"T3B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "8788709e3edae4898ce2885eb48e881e567f824dcb6063e85d8862015b4bce38", +"T3B1_es_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "c38d34fbed333a74b9656cf95f9830920317b19fdba15be15c3f2c817304d4ca", +"T3B1_es_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5f60f15e2c1aebfbe2153a75e44d7b7997a0e7b6ffb4cb8e0c96381fb56ba3d1", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "cc9701b2fb38c31dc099e2d475de8d8c3017efd63b237c35ccd77710386a9663", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_both": "f667f7baf3b3a090233a3930972d1ffd8714508aa18d0b9a3443b94031ff9fb6", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "bb05a43f4d7924087ec2c821a1a421a35ba68436285a8bd3641d48c56ff375f3", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "6ae139f16ad3ba23310688e31768cd5b81b11f2b8c0c5e7c74ca4da300299617", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "de388efed2b3ec9d446916fc864011c3435581556013c7ad65d565b93d3ee5cd", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "f372af7c77b1f33b0bd34b98e381ec11c15ad97a50f5989c67898b7e0aa70ed9", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_native": "b593b6194674d6c64d7c612e400b21378a7fd53d82f421b99123312be80ea92e", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "43804572e0cf67df501ec31757bd7eb54f0ffd214936fb19bed8dcd6a7a5a0c3", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "2e8194848ea604e0aab37c42c3c9d7e677319305b55062cc43fe1ce0744714a4", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "44d98cad0a0b96df5285bdb6eaf0eb99743214d49a56680b7a4171423eae1a75", +"T3B1_es_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "e19566c81a3804f312729b6f104987ecc082ac51f6fbdee620cdb8668755c1b0", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_attack_script_type": "dc278d7676e911fab37b6323214e040de6fb269c9e3069b2bddff1f6bac59147", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_send_mixed": "200e785d7ac587d80c62b2a64c0ee28f043358e0ef5126e8b49dc1651a8385ad", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "a0dc5b8aa213f6da2f5a3ba9cea3a6cab68a241971123e8683e1e881609eda3b", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "f54672507b5cdeda78dd95eade8755d39da3b3be2de4828479aeb433582dcd10", +"T3B1_es_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "38f06807680af3b37ec07a107b0a8bccec97cdc7319c54acb57c4cf6d5a3466f", +"T3B1_es_bitcoin-test_verifymessage.py::test_message_grs": "55b478f3d03bd535263fa8417f288747f3a6424c640ae0254c89ffba97580445", +"T3B1_es_bitcoin-test_verifymessage.py::test_message_long": "c58eddce3049d31a002c4ec05e51dcb346301ceebcacb47c26fd09fac494f76f", +"T3B1_es_bitcoin-test_verifymessage.py::test_message_testnet": "42f5ce98047e30224101d564c1c3a91c26576732241853b8ab887d3eca1a5f64", +"T3B1_es_bitcoin-test_verifymessage.py::test_message_verify": "03421b0b087d56584f53cc8ef4e650015f608b0c2ef96cebfbd66389354df03e", +"T3B1_es_bitcoin-test_verifymessage.py::test_message_verify_bcash": "ac6dccea51ae537ce607066e90509549b1ba1f5951fc28f9f65698779f8b19a2", +"T3B1_es_bitcoin-test_verifymessage.py::test_verify_bitcoind": "bc9c3ed9e36f17f206dcd16fae13f8f25f62fd5de2ee118cd02a962f25b06f72", +"T3B1_es_bitcoin-test_verifymessage.py::test_verify_utf": "0098c99b78ee9910f94ffe10405302f57278664936b7ff598429a2de8d2365bd", +"T3B1_es_bitcoin-test_verifymessage_segwit.py::test_message_long": "379dd3235371f31f83d053fd2ba353028d48d3605c8454f22c1844b830c850bd", +"T3B1_es_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "cfff24cdcf76db9552962d951fa2dafb24c8ef3da579b7a2681b4dd2d6108536", +"T3B1_es_bitcoin-test_verifymessage_segwit.py::test_message_verify": "8a62460d65b2ea445252f4f637d80f8ee7ee4d975406467d000c492eabc2a1b8", +"T3B1_es_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "0bce55ef0a0e9044b6d9cb776321e002392f21999c9db57cc314488a31fd9d87", +"T3B1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "6dd6286f6ce0fc8a5b3ef47709b3d056ae11ea5962364f236b6c73f3a702e9cc", +"T3B1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "515e908322f8a7661881fa0c4651515a5ccc173fc83afdc2445a8e3e9e358545", +"T3B1_es_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "b110749cc1619819925d2c6405c2ea53a09d376531c3223adbaccb924f698335", +"T3B1_es_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "2e4c1e46676493cd6dbd364547270f459f826bff783d58b833ef85a94f069a26", +"T3B1_es_bitcoin-test_zcash.py::test_external_presigned": "4fe18488dbdaca245cfe30868f7c163595fbeb2321268fd404afc42fb3a819bd", +"T3B1_es_bitcoin-test_zcash.py::test_one_one_fee_sapling": "018739d0a19e0546047842f3edf25535cd344310115e4206bc7611da63c57045", +"T3B1_es_bitcoin-test_zcash.py::test_spend_old_versions": "e00969d2cb1ea6a3ab6b52f81a91d1ae15fe36b817fa1409d39262e4f3c48bf0", +"T3B1_es_bitcoin-test_zcash.py::test_v3_not_supported": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_bitcoin-test_zcash.py::test_version_group_id_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "2f84886a57abc74f2547c192fce1a26df8ce04e39cca79e285cc9567204afcff", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "16c065d16565fde055a184890a6d909e5de45c5ca94db73bd4b1457687e09500", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "aaa7d1a31458fe9d85f8bc049743bc922027a4680436c3a38ea7881dc9f34b41", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "5346a1c0d340ed9d7eaabb74416e88ae8af605ed2ab80468781698199636907f", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fd46152a21d698be2f7cac447433c462a6e55b5063a2543c0cacccf5ca4b47ce", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "bbddc0eaa465108d4cbca7d4d0d4609933c685d6af056ae9365b3aca64cb680a", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "a8b4ef99324dfb37ef61c512469e508f66d1cff97b7bd0c6ba96c43ba688e65a", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "c6c4bd02c5ae7f1901e07206a3d921e03476890e68253748e7a919e882985793", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "38de876a57f3ba9d3e9facab308ff4b28a52f231fcb47bd2f07994bce812d454", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "487bc1c567d4ecc260979e8abe46c22a27588147437901c85e24d98f2c3fbd8b", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "c1c361caf5ee320eedc9dbc8649f7ce7f51d558dac39fdbf0077918aa2bfa454", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "1153ac6af7b2bba5ba8b2e0d5a2748a4f5f4dc5015bb4b1e352b2c703706e016", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "1164ea0d1ef4b99dbd7571d0c4891e1145f8590b0dfe08cf4f33262884061e19", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "20d327e80ad55f70f0109deb5e3d4154a9e4dd09f54ec6666aa8432b623d9303", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "70b97c300a73075d651f46e5415c2e8076df417d02058ff078b41123ce653641", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "d5fd5486efea795cbdbf0d8d9e97ff8ba17951c62c7172a2830b2c68a22deeb0", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "558c116f658f8b9afea10d2c5f56068b3859d0947988813a9e756dd4276ff24c", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "cb2a54d7ce20b3962f3a783c85e6053623b08ee1e507266fef0c98ddbc9cb5a4", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "2aaf8aad691a1c2c2ffb77771057edbe4dc4b2d7bf8037ef68f2c1654e8a5b01", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "bd1594ab91c33791df0f2f4a42c7d5a8b4b85dede9b91de6bc608c2fd1421ecb", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "7b788e2f6449e60e6289fe550560f5b176ae48d4d161f37c11819679855883d5", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "d8b4f47ea8eebff20c19bb6f905929ac099df6665b23df00eed5fbb6074351f0", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "d75545d8736519d6c2c10050dd638ad8f6b19c09164542bcaa7a639b8c7ca7ed", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "d10d60abd2c73ba5ca7d9d6aac89605bf4aa1f478e684afde0c1b70b4677456d", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "56105e3899f71ebaf772590e26048845a84e35446980390ac072efc6a431ad4a", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3ed4240459623efe07795cf76017650acbd6d53c990877e8e7a3c67f3e503e78", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "66a2f05663cbda9f6fb23ac8804fcaa391d7d853d960e0cbc7d4739ce7e1d1fb", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "62fbd38ae271f5a76af52ac6c5b5a2cc4051798bcbde0677506b9e9dcdd8a032", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "6683795dc2e24631be49a83a21523f52bfdecb81eb947e7beced6a8a4290d45e", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "287d9371e6eb8aea05a8cad6669e7d2c3224bb42585b89d9d631e81334f82ffc", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "f01a3222310cf4b1204da198ac06dfc84ebdf70d16f9f186715b3b34966b4320", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "64d78229af97f9f41896d47ade2cf6d1f44d74d0c9b5bcdd2157a8a87507366c", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "95abcfd5705ae0ee55dd59cddc3e8e9ed0ffb36e94bc1af759600f8622ef1934", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "743db1209a8100a03c68b9efaacb104b9b6a1650b4c49cb0c74b00cf6c3a05a8", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "968bb7cbd0d1bf085944b816b79956dcc38a12a5330c543336bafb3574508e90", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "b3db521ea0173e39f3b93c8e49ff2223ea5ba3535e927ec7ce8b2999897e67f0", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "c1eabea776d65dc0f258acd00fa08db76a04c07f6ae0e7f32498a0b7680a1665", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "a96fdebe84cb13743dacf052975664905de871c68f8cc3d06136e56e09ea7fb6", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "425e05d70ab7181beb21af5c08617e9724808baf17e294b3319a39e012e760b9", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "3be8d9a67474a8cef48fdc35318f5843ee909831bea914f244c094ae1fe6cc32", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "cf959b359e3d546419e2693cad049fa151a9a007ce181bf18de36d7444f99aba", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "df2767c1c3c054ecee8e4c4efefee8c975bc9a8e2b3104b530d3d5a8b89d3192", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "5823edbe8eebbeefe3a01c108aa54c634422f8d9338bf0a6f8fa295d3aa3cea7", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "a2171feee8e00f1fa781561c32eb6c560fca457fb49571f67ed3adb38b90997b", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "49eac4f1e01f8c4d3ffc70e3929793a9a4bedfddcd1f96c1e5bca2048df3a2ce", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "a69b3d8df2de193b1b8dc57446f5e2871e708cc8fb3e1971deffd20a18499e6b", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "128996429c958aee8169602ea44c84dca9eaa1f73d07603c8615449e5a1794ed", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "63228f42518d18790cf9976f712ce3c22b50d86d9b7539132b6d5ce8e2ec949c", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "ad01d89ceaf01a75f93b206ff0ff30671c032c3fc1310ee84c56d9d4d0e79571", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "bc6db05b88c37cc1e86447f181fc0503dcf782bfe52d258a039716c35cd6d7d8", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "8d4ca0d986871a9ef2ec62b05b7d1c8eec4310d254ad131e4ec2eb704b61e73a", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "c4a23dcde7091a5a523f8403933ea0e2eaa030f1997987aeb80a0e706342a38c", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "01c766e398945165669a3c0a678ce54c6c72c064ce9b28237d40d6e8aab5ecb5", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "a047b5e0d055fd27bb1aa48dbbbb74522466720c603f944aed848a1bdbc4c81f", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "13a572dd62932d2ab16b3735b15db6d8d7c198a77d8120526084e5bd8ae7ba97", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "77282abe499d8fc3da49c2d590fe5c1495df8bd2936fe78803ca588f08ab964c", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "cd555eb7f0e24bec4d8d61d3044683ca87c0df5f810de8b60c5916aa9cf9eefa", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "f8f775e180ea9b573da38f29e0b0643f708b804660ac8c51c9aa43ee1510b62a", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "c20bd76a95f608f062d5bccaff7a8e8f5b3acfa260b31ca01cb77081d008804a", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "8df1f63072fe2aa0488b27fa93bf7ed1e006813f92e8a144cbe999ca70c7714b", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "ff42a49aeba489b0dc7e164a987f4d230dc335e327adf7112d4e0e1a8d624fa6", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "bdf358c19d193ef9e167970efa920f88b2f7029dc6e924e6621dd604618549ce", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "c4d3806334e0f2526dd2c373d8034165124ef228b0c784bdc3536c9d09e63963", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "afe3f15f7bf13d0ec3ce70d8a2de4432b0c8581ae612ba23951794beb5bab91e", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "24049397a9488fd8bcb09e37206cb0683d466cd986c6ca9cda0c1c555bd3972f", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "a7f5aa1601355ebb4d3ffad0920d0316fd57a8a719de1e83ee3be809386b10e7", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "18891be9a0620ce6b3c543bc3f44d4086a2e6567acca8f3c32eb6731a845f2b9", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "fdfdad16a52a67e0ee6df6289d1feef6595e4fcb86ba76917a23dc36a0f9deae", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "5d626c01d18dc3aed35ead0bac3c752efa92f6a4d66f55adcbeb8d610290ef8f", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "58750eb3b091800a8a0e749d5f33ce657d9efad3b130022f0503895ae63366fa", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "8614c5b5c579d712eab13c0fda03919796698f73706ba07a06df16a3d90b5635", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "cdc063cc825b5f3922543ec02d37324599d6ca9ec362ca72e02bc2b5424422ce", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "f9ab8f18d1f217e588e0d68f18df359aea9afe82dd3f77c79d3746661b85b3e5", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "ef715afac35227b1d860be377efad158ce68ec175ac3873ec5573c82a01d2a65", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "6364dcb96857bb8ca4da148aa19b7a41848e3927769b14ed44cfa1eb3aeb26ed", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "6d3e3a1e4cada403f3f40e00f0b922002a47552dc9340d4731429e336594d734", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "f2256fa6dfa61cc47ea711c6ef24d46fabb9e13732daa79aac892f2bfaf30ba4", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d70ad565f392c6cebfa057f53a0513996262c5edce00ee5bc99dcb5ccd6d309f", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "3d54890a6f22a6b4149a3d925220040b1d93496b77e61d15b8a4d4acd035b4c6", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "395df4e7657c8ef24de4ebc3c3df537b7f01cd3778bfdd00890a24ec4bd27a07", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "f913b9d236337ec8f17dbc4f0f2bd07a3c8158d08048d70a55f0cc120524970c", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "2e40f2a04609287c8683867df59dff285e24f0c126c970d46929e238a72a66ea", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "53bccf1655146bacfb6ac2032c9ee763b0ec04ba5ac8997e3b1ecaa0bbf8851e", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "7bb3f15f2ec4746c7af281d843079fbcf07fa1cbf2e85a1271df359efc17e88e", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "be052c213d9055ebd81d2bbdc370e6d7cede98eccda0d3a54c93d7df74ef1b90", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "c87e498fa8a3a3dffdef28b5524aab55f2c85cf9f9e1abcbaa77cab8668c6474", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "1d2847c685a686c010e046dc7ae2fff108260deb9ee7443d139a79a372ce98d7", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "3df98e23ce08153962829a451a64b16e546c1426d046e6da7137caeecb78cacb", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "569dd0b842a403b3f19305b5ea89ef246905981ea1894a4a5b6bcc1196c9b5f2", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "97642a4047ab93703ec14bd402f833f9a3c8cd10ecd5089098c5a91b4b36a71a", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "eee4fa1ab0a0e0bae1f3fa3d97c25562f8507bc6a7b358d36618134de0bb358d", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "7d6323949bf6bb8cdc3706622ad9b7c340a0a8109f5cbaaf66d0d6f78788f00b", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "fedacaeb8cbcd847208bbccd159f90fb1c298bd57f931ab2e4c9ebc3c6dc6eee", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "5b5f2181c8cd524dbeb2856f0f1f2db023dea92899529e21baecbd2978521018", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "10ec8bce4299e22215e651b2f14a07a204142f54552bfc9af9b620b4c4337e1c", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "4d7943e77902f6b06aee9e20f5d08f8d447ec7088b9adace9b7b1c907021da57", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "868bdce2855b04f2ae220cca6fe77dbffa0e3d964a9ec4485ce8406a7aee4c19", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "fce2b3a1b8e89930a8b444346a6ac5efdb64607fb09efd5f0f334dbbbae0e6c5", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "f2bbdedf9ead3062ca3edc299e5299ca7d9d78f399740949e623ba29c67c2898", +"T3B1_es_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "0932da70ad79733a7d7435bb9e201dae08aadaea7b265e39499e887fdb5c8be2", +"T3B1_es_cardano-test_derivations.py::test_bad_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_cardano-test_derivations.py::test_ledger_available_always": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "aa47440bafdc1501d85443b321db2070dbaee088f8192145b0eff318f96653f5", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "0fe8f666b0c5a499c04322299fc9e223a1aff9b9818df8749a4f8c48ac84e884", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "c0c63616ab3bb6e0ef44cef2eec337b46ebc9f3a2cbb1e0f4ea736a58f2edacf", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "507f10341d98dc0d1f37e7dfd6424d5c08dd36f10858ca378a10ff9f4550d141", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "8232665a384894c8aa6bdda4b3a2995489374e958e96f023b8b3db0c7140e757", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "b8e134278d91377c6a0b4485e152d2eeb5487c4cec560968302af35139285a1c", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "e0f0151e214cb372ae865ec048adc8a975cf3763191d56a1ffb51cf791dd7e02", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "07a28e4d6a492ba8e85441fe6f7bde27893d8cc2c30a1241c492988794df34c7", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "373418858d89fc52006072eae9d589ec93f18bfa1147d2a7a84411c9db5e8f43", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "8cb9f8e8f31a25efe41d438559e06c7e0c7961485bb3f8046819df1debe9564f", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "756f830c19e46e426c9dc0ea1f9b08ea6f928646af6f3c56d04a9e94fbb93be4", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "486f1c9416328651700ba1dd3096dc7424e8a05300a681194086044e13b1b5f5", +"T3B1_es_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "b3920827bef507ac8ad13b4ec58e4e8e927791e222c4f42579602798e0d09644", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "a2b5902937268fc3aa0b0244ecdb97b125cd2d3e59bba955ff0c5a7f016e76f8", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "6f3b6169e3fc48f40b46bf83cf21287b5f839e21fb9e874c4ab32c9c84aa723d", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "e41b2012bcc3742c88416de993aa2e1132734016daf498f54d5b88c21aca8662", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "2c54600663f0b05562cf38a96a63627ea437441290bf84cfc73829b31c6eb518", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "9fc31eefe29fa7f64e846119691ae0db8c2894e1e14c551ed7098dfb6c9499e2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "22c34c1e55257a07214d8877992945d142a696f8d712c090e0bf6751cf9a78ab", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "49fd2aaef8dbe41d3bf1ceb351b8e0984fbfa0d5a710f0ba0ab49a66fa9deefd", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "6c668ff6eb84d7d1e45cdab0bad6d2db349cac5f548676add1f61b9342bf3292", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "e58adc2fa6484f4c26b793c71f5ab63379dadd3699ac3098cd4149d6223913f7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "7afde85f8480e2b05d32cb66f01b0e46051b9182cfa3402edaa3c7cae95cb400", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "592c1c9efb423aae9c7cbd24a85974bf70f95bd47faecee606a072f0d226e001", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "454af005ff5da7e3f72c84c15a5888b167a96efeff2782e6ac65e71561cc74bb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "454af005ff5da7e3f72c84c15a5888b167a96efeff2782e6ac65e71561cc74bb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "c3932107b36ca87c7e9eeb93e3688345d2298248905ec8feee8702a7f2535433", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "8834621260788fb86af96d525779a878c5a8b7a3a21a4737b2f5ba1e0143bd4d", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "e813ddaf5e47c6ace2eaebe707ad95027590ad519fd2e2cf9edebe419a751cdd", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "616e38be65ee8cbfd1a6f2ed012dcadcca04eb32039e95cb40fd351cf5f5967e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "c36a6a1fa9b9f50b2f544f44e04b9edf80acd0ef92c8d684fc8e8994e8c19acd", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "2ed6e8f03fc72aaaf636a55676425111f0b940490f1f7c1ba1bd0269b1238020", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "235dc53f2e1f4db3b0446b7d32174ae6de1e4e0adc9542606716b48d198b67d1", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "0154d12fcadd7a57317bd3c0f307e993232f56e571a6318b895768098ec3d448", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "247445b8f7d98a3177ca7eee824b13c67c6eb4b9d98749656c1fd97fc7bc5a13", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "c36a6a1fa9b9f50b2f544f44e04b9edf80acd0ef92c8d684fc8e8994e8c19acd", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "2ed6e8f03fc72aaaf636a55676425111f0b940490f1f7c1ba1bd0269b1238020", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "54f9771ad8f05e29ec4fbb55ec6ba9d6bfbd21c861c866f6b71e4579350a79ae", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "3f084045c00d5bac93ed3246fd3642d20046158562ebd3926cf402f611593218", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "b672e35054e05a0231831a8bef870483b561e7a24e094c074ac0cc8905f6b1a7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "4e03269c876471994b1276c39d5e317ebe89f8a46228b37c94749305be8721fc", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "978157919f44e997b0f07bad3e9acb6dabc3ef224cdcb5e0e8442b60deb88349", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "346764f6698e4019f77927d598ba2bffebef7d084663bcd42984719e91761391", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "486aea496ffd13f11a08a2ab87b94b0bfc5f48930435b921c8e418b31b744594", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "3953e067f41feb6b1826621b0f0c0c3b457723b1e9ebf0934807be8c82161c82", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6600a1fda4e5dd224ab7bb7eaa6cd977c7ef2a9042aa45d2abc6c8c56a1274b1", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e880a5884a20a4d38b057f211fdcef9345dafe5c67cf972046f5bd1b3579ddc6", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "8f0ca78de95cd1e2901102450ef6ff0bd9b2b832591a84a6e925d1b9c9ea6ddd", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "e4a19e68970bbc97f18604f2334aedfbd61bc844da3f43f5a0d234e7fca6b129", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "5cdf0d039cdece483d13618e075580b5016e712bbfdc6a834aef67cdb550d21f", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "46624c0f71176cbd346ddae51d1b747d44e25bf753f04ace9139660bfa0c9024", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "dbe4341aa6aa90ed924405436438860815c25d9f99c7404e375db595164b6932", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "13fdf548bd6bf37717a3dfffe64216f7f6b17eb02e4850658411edff525fc2e2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "66735fd89b7769e8fc94629f441c0786bc821ae7773ea9f0aaaa6f3b3328d303", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "3a1ee9faab273f914c7a6176cd9dbe05154632550ff6062f0331a286d5ab284b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "1b03411e7a18c7fa6066ad7cfe446a8d524a6799a365cd24396d975f2e4d53fb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "1b23ef54c18dd42497d4565a274db83ab25b361703582c981ae2cad462ab6da5", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "fc4b7e57179540205b2aa2243f2736dafa5c6a144f24588d0db0374d512c9d04", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "780dc151ae3124fac75d56e593b12c6d0e39c857b68c19a6065cdf3ce93eb216", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "f2af062bec638cc21fb45f2949f8c65d8315061a9a5eb48ce4508caee199fa97", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "308b822c16737af30accce9876b3cbcea8f4d851d9f6c07836eb2c4fb5dcedd6", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e39f722fd6f6a23e2d0b95e50e07cc3cf9ab591769733d5f14d32bfe77f91bf2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "883ea7bd5d54f4f50ed5c0dd65ab1f93d94be7369ba1a8d943af03e8b8def16e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "0d5dc5696576466219fac3acc4e3d406aa1c6c62b2155db9d7f80461d95ffd34", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "a3b3771229e0eff18058932016aa971b8a85b4a4910ca3f2e9c13b37cff20b02", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "886491fa3862ee345f7e5998778c0c037b91d1a11db470919e6a4ad714f2b85f", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "9d05c3a3434ff3698f8485d28601bfc65e4a541b5be50e4428abcd2d47659b8f", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "ac2e4b774a5542b1ba7a219154e3cf1c677417fedf95ff93e0cf4add584dccb1", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "53f37d349369558344a94be3a20c7ea82b5394d52008eba28c55c070dbe97061", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "dee15424375ecb6e5a86cb34e92604c1b9e394340dd2b05a408e0d80e5912501", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "a74b6abf42627aabfebb4847d1210def39cddda933a2b9516d7221f047e5e65e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "85d4fd114e7ec656d60bfadd75a244acbca0386a3d49587b2ce85b98b5130e54", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "c71ca04cf884c0958b5b26659df368298befafee5faa92754b66d878a53a97d5", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "af03f4e6ba4a68e994fec97691ea567958e61d501726147dfb9804a0e1b5de22", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6feea77d35a0d3dfc122ccdb2dc7e5d480dac0c69f9da529862ffcf64b368d6b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5ca2ca9569a03f92f8454625fa2a515facdd54d1ca6b9e09430021eb9518467a", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "c5c2c0df91051bff949d55ba87780bb7b122e70ca87d9646dbeb523a2fba0083", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "84ce774f4972446fac86ba4b62fd16892496919e7fb6dd502d3cb98801153e11", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "1172aa79eef2f959c5aeaf3bbbea1182ca4b515763c9f8dc89f4dc36acb8dfe3", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "a41ac286ffef907e5fc2f444fd4a9d032674f8c462d2c863d710e8e932946963", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "a4b06ea9fce28a99c2a231ed5c43f902a07094098a6f625fa79cd11b772dc366", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "5014374ab60b266a3d95bc15503a28673b3497d4d4d0ad157e5712ba0a689c04", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "acbc680ff844947de32b91a5cdbdbf3f71c67dc747b72e2ff6bffb642e77135c", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "a172a00d0a45b5049e06281fe44ce4cfdff5acfbbf8c69b21e530a1ded36c35e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "1e4adf36468a3279c471737311baaf5e415aa6584784140a2ee05d261e4fd68a", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "5b58023ca8c689fa8291dccebb52a93b8bf255e2215ac0f1ac1505f3dc3827f5", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "5f5d461d57ecf98710a8da853c4cbff081c0b29c170f04d654e1c2fb8ff31a47", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "2e97aacc124814a57494ac76660961132007e9075a7a0b1d6bcab191bd6a2945", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "5d9573e068247df02487b7626ed1c84ea27b811c5b700dc327357b3ea422c322", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "5d9573e068247df02487b7626ed1c84ea27b811c5b700dc327357b3ea422c322", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "c11dd00da5f0cf32e89b24721e750a9be89476bca3f792eb695e31fa51a6e4c6", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "4096983774bb8da4a05898dcc8da172e012f86122cce2e71ccb4441cb916f32d", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "a45a1560080a482659ec963b03b67a71f677130ab67058c8e1fde22dddc0e50a", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "f94625526898bf90e035a10f4032f45e37ac6df32cfc860b531c63216ada33fd", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "4a1ba64f86f0228d096e920a1e42ac64f73604ec2d85badf0bd5387a5111a3aa", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "9bc55eaa1c4c90807e4d970b0d215e34bff9d7a624905d114610d7265a685f91", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "00b1464af16c385ef6003be9ebe267c92ee3458f3e3379834d4e8b6c54c951ec", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "66f44746fc5c7424708e9954c32c7ccb055b0aa3807b4361f9cd1577e02b8cb7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "57204eef28dbf3d8d57a4fcff9262155b77bda4f946189a6c29c3ecbc17272bf", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "ef33c70d26a64bc6331a37b25297c9dcf5b3b477627b0dfbb22055cd83d831d9", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "d67624eb1e311cf17f6a24cce7cf05792ddfd1aa9d31a9e214dbba2cb20cbb8b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "a50cb0c2a4ab935d13fce7a266e91ae5dedaa4cb89a9879a0327016b5931d2c9", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "a2b5902937268fc3aa0b0244ecdb97b125cd2d3e59bba955ff0c5a7f016e76f8", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "49fd2aaef8dbe41d3bf1ceb351b8e0984fbfa0d5a710f0ba0ab49a66fa9deefd", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "32862bc18381086743795acc950856fd9d6933aa4786598ae576f8560800b5ea", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "66a35899e82f9fdf8bdb8cf4b28261e2ccd2a1b9bba435211dba7f2bd1de045c", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "8e84c2f3e246eb043df4ea45bb2fabbfe7f2c5d5c596fef3525d6189d3c1756e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "77b78073bc12abea7f83a4539da522046d5c34d374800166fffc4f72e80ccabb", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "63f6fd5a88afdc494a15ed3c76bbb1a84f2c15c4227259a4ba4588f95e765ea8", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b0bf36453745c323c83594c003e981b86edebd619d3c515812d6769304cd351e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "e9424334d97b2c5e270fc3508fd9f2ae2c42514dd795b29abcf940ab7ed8bc2b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "832852fb58be0ffd6da266da2efa37378cdeb12a7a1f12116678b90abc930ae3", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "46d7cefd27d23d86765d8c7f3fdbb0f2df091c9f7e1ee24a7ac37da42d0f990e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "46d7cefd27d23d86765d8c7f3fdbb0f2df091c9f7e1ee24a7ac37da42d0f990e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "46d7cefd27d23d86765d8c7f3fdbb0f2df091c9f7e1ee24a7ac37da42d0f990e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "46d7cefd27d23d86765d8c7f3fdbb0f2df091c9f7e1ee24a7ac37da42d0f990e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b0bf36453745c323c83594c003e981b86edebd619d3c515812d6769304cd351e", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "9fff7614306857709d1828fe47b3c32bdb8956527ab7011d1110a35af64cd5f2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "a3e5f2df5f9ea1ce94be441a542cf04ab8f81e933e0daf47b404dd6c3f7c3a77", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "f483e4fa1d3046e547f7bdde9f1c716d341fa2020d329d533cecdcc6ffb190c1", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "28c2d48dc5280b3a186255210475b4c52e1d10497de253d59a03a8a2823e2935", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "138684585f821a5cb75ac66c633e6cead076929b4df0b2a77eb077d8b75c7f2f", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "1fa92920259bad51b7d0366481207fe87910340fad0b902e2bd92143699ddba9", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "a8cc09c1f5b998e1e05a6ab206c5c9fe5ec6f9f3ef91a2f7751af91fe91dd748", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "0575395ed6e48637e80a6f8d6a1490eedf803d98b7a2dc7e44c104e6d90b5180", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "1bf81e05b3529ae7b5d5a193612b01c0fb9cf5b233a519c3ab59e3b5f3346a85", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c2a3308626c03ac402af80dda8c639c853922314e02bc4fb63a02715bbd62ad7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "62bec4a45d5dc7b73edf169ec96ece712b06d17227719097a7c67846daf41a53", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "7fedcac32cbc039d241f0ce7d0c582ca386467b1911fdd8682346072ff9828c4", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "71c0572327222374a73457e3053faa2f9f552250b6e2a999ab422df825e0e38d", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "a5f5338b7488ffc35e3a2f713997132c5bbd7da69db9381ed72a7d81a3e7f057", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "dfc75f5139bf65ed2c2aa882c0f5400612b3e48ad70748d2ba339ccf32081ab7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "5e26e5806c82d607c0b7b7c3a873ba4613c8c1440b5a34f75730c2898c957ebf", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "86a4c29a89a2306675a2c0165b12dff0d16f61af9aeb92dd2c0e3db3f0f7879b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "c5f01132de221d6f249b0ba1d906ef8afd8105fdd562402ddd7f3eea6c8ea537", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "eefd34a144bc465e69d93743eae213dbe02124e2e0ff44ccd1cc46c4e9b8de49", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "53a44cd54ff47e881dc625d481a780a0a20796abb81487b46c4c72e3438ed720", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "7b4614127c6ac66ccbfce77f01a776f2a94174893d4f2357f34531d4d2b90394", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "4cf2479afcb8ee1882f1961390c790aa333c9813309818cb810efa01aa3dd2c2", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "9f0c0d825a5ea71051f2937aebb3db1307fd7ecdcf3412bb5b17505531b6e402", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "983cb497811c43b817ef81c26b49f37ba95dba113e973656cc384d0ddd22ac9b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "392814e4af02d27d149c907b90698517fc9df94d455f459c3a8ee69e69e001b9", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "d8a6beaf9417ba99e6124001f5949cdf1b939a725b1d31fcedf7f6d3284c87d6", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "5f51a559bdf08408d2c8fc21d83a259c5eb03649c799a4da322fca385d74f9f5", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "2ed6e8f03fc72aaaf636a55676425111f0b940490f1f7c1ba1bd0269b1238020", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "841dfb9b8e9b12710457ceeefb84a263bd4ae7fe0c0706cf4e5b56f4b0b43321", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "e7c1998e4dc2ac8821fbed2db7201ee320499665332a2790a121f554acb94b3b", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "031116b0fe8d45eec69c00a50a87b8e9e3ec09d3f0585c15bba0c9b78f13903c", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "8703a3c6ce02fb8d95108cadb68da422a4a52591ad31d287056c7d50ca9854f7", +"T3B1_es_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "ff3b9de391ae6630efbe7ac55ba0883c18b5612cd30787dab80a3de74fd41064", +"T3B1_es_ethereum-test_definitions.py::test_builtin": "4153da8853ef861b4fc5c15df23e59832f00705a39cb7007e2b398d80914fb74", +"T3B1_es_ethereum-test_definitions.py::test_builtin_token": "f71fc5655fbac48182aa90f4c0deffd60354b565982fb6308b0f9d0519937865", +"T3B1_es_ethereum-test_definitions.py::test_chain_id_allowed": "4ff1e6dab8242ba1af8492eff308d734969cdc009d56b5a2b2938a3b7ecba4bb", +"T3B1_es_ethereum-test_definitions.py::test_chain_id_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_external_chain_token_mismatch": "a9c87453ada9ccec585ac37508304be5b53d7b14bf8c7055f32080623d6a1d97", +"T3B1_es_ethereum-test_definitions.py::test_external_chain_token_ok": "2b4b19d6d391afd06c7917966fa383a22d8e2b49d0791fb5d842047a8b92c0aa", +"T3B1_es_ethereum-test_definitions.py::test_external_chain_without_token": "38425cff464db8c5c6d464b404b39b6e93720922e5aeca36a004bb026914ee05", +"T3B1_es_ethereum-test_definitions.py::test_external_token": "fc04857cc345dfe74d8c19707d230e9a9a68cf4ed3eee9ad0a76d00b498ea8b9", +"T3B1_es_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "1042286073953cdd1dd2e4dab190192242ad2d27bfd5df98cf5b3dd159e77e72", +"T3B1_es_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "ffd335a925ce8e31a43fdcaf8c9e34c493cbc8bfc7b4d25a6067a62054e5fd28", +"T3B1_es_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "530c7345a55510271fe795bd671f186eb00a2665ba366ead6bc38dccdcde94b4", +"T3B1_es_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "34972eb5727030e4af6015a889ffefe5a5211922b584fccd267c5fe20ce560f3", +"T3B1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_slip44_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions.py::test_slip44_external": "4138d34d94db5263a79d34522bafdbe38b8270e987b077b90f218c38db85b0ad", +"T3B1_es_ethereum-test_definitions.py::test_slip44_external_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_bad_prefix": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_bad_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_bad_type": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_malformed_protobuf": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_mangled_payload": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_mangled_signature": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_missing_signature": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_not_enough_signatures": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_outdated": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_short_message": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_trailing_garbage": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_definitions_bad.py::test_trimmed_proof": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress[ETC]": "975890dc89ec08a96a2e19593a3f514bfee0896c3c1693e6b5e870d7e0b8566f", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "dc3e5c89c6c760196ee528d56cb0cdfc7e2c794d39f3c5056006664c3caf7953", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "b1f62e2dc843e9179b8d23e8283d91e8d0a9acf983c0db7c04250f4cac82a89f", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "c460ff31e7767f5778e8483063196dd742496d56e5dcd8c1da3a98498e68fa78", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "87d0d7d1d1f3971e02d5351029a80aaa2cb91a0ea129635d8f52f15ddd97d5a1", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "17842a8c0c3cb6b1a5ea2f9e09f048febcaa519ace1886c132d425e54aba08a4", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "748b23d21d548badfc6f5898a4bddcb071ec197c22f49db60495b61aae2b63fb", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "60ec8a7099a590b1aea5701ec6905e51f1f552a3dd0c6193387c7379b6a5b2c0", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "e48afe87108f77f89ea69bdd200969fe3b04f862f94fc090c1905bd8611f6790", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "71463a38edf1cb818e86f23dace5927ca273693c15f5b83889e2fbcdbf7fe929", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a62a463681a7964cee709230399cc19bff81215f69c5e4eaee4a6aa4722ae1d1", +"T3B1_es_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "6377392d294ceab0e81d8d9624c12391a08d1392fe7213b74e97a9e006f7ab15", +"T3B1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_getpublickey.py::test_slip25_disallowed": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "86b9f0aa789dedb457260b17992d8362628356584f803b379932d77ef3d26b5d", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "fbb5e82c097b90b7ff1aa26a39fd60343218f93e3812bc6b2b24ce9c944263b2", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "6ba59a6020b5b668d8dfe1ded4339a6858668453c2b44aa44efcacf8542d7284", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "9a5b52af551398fd46eeae762bbf47e301ad49224c194dacea7f01562d4a7fc8", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "187b8ac9c88e07df2ae5f4baadcb0df2a78bfa459c4a544bd577c26af696e99d", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "5befaf8c68fc5b8e98704526f900f15f20ae5d45155aa42c200448a6329b9ff5", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "6ba59a6020b5b668d8dfe1ded4339a6858668453c2b44aa44efcacf8542d7284", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "6ba59a6020b5b668d8dfe1ded4339a6858668453c2b44aa44efcacf8542d7284", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "6ba59a6020b5b668d8dfe1ded4339a6858668453c2b44aa44efcacf8542d7284", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "1d12572de2bf65d0ce274dba3d8e2d4bc8101aea15f25ec3dc31756de1c25a62", +"T3B1_es_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "1f3727a7e9b5a6d72671145e09a8b65b4f1c6c5fb37bff122f70a7cfcd7f2057", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "95ca270079b4aee175a3dc0e8168aba40a840914da8642bb02897c6479ec008b", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "0abcdb85fc9d4072b33e4ba9be02e36475b3be89ae2c0583022dc9b4273eb22d", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "4bdb30edf77b9f3856d44b992821799bb18c3bcb0e5ddcc36686a4cd8cd92803", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "23ca869cf1f7c91262ce007abf0605befc913eb5d2fa50f81608dc2a0b8d00c7", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "91c79d4f5164a1b33b9e5d5a36faf6b0960f1ce3e9d6f3e4d7caa8221191612f", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "b96ec6bc8e195f03870afc219ea671738488426c6194e9f0e284633753060532", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "aadda87931f6fd26196c7d0106c55a1aa5ad5d4b1a79f47bba840d8888fd647b", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "2d4b09f93c99e61c3a29af39bc94d87077f9da0805da5e8878c421ccdcf542fc", +"T3B1_es_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "e265a413901166b15e0fd32af78efd7a48aeb1930c151ffe61fc6020ed9d3bcc", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "ad7b8354a0345669f28bc14fd0e1801002a6d13076a815b7a7c835766e071f93", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "8c2165d65b451cb3e8055b27be71d9a60e3d2601dd47fda2cf4b8047c1537053", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "d183335faf2231cc5308143a706930bb87f8469c86ad7696e4cd854fb4dc6204", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "e8292aa274dd63158882a38e52b0a4fd2fd10124fae137f350441179226c148a", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "32e8696875102c60b3fe18d316d770541b59b543d812cd61886512cc2c9c7035", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "d80b45ea849e616f37c7255a6d5c0a61df3817852ed040ce662f007532d80d33", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "28c1a0c3351a003c370fa284b26df457d7c971b0bc66c7c15f169b34e86e6fdf", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "d2b3d8dc8887f746023726eaa913f106caa769be57975588209725f85b256d79", +"T3B1_es_ethereum-test_sign_verify_message.py::test_verify_invalid": "ad7b8354a0345669f28bc14fd0e1801002a6d13076a815b7a7c835766e071f93", +"T3B1_es_ethereum-test_signtx.py::test_data_streaming": "7235b778cf1080fe29c155b6e467093ab483dbd02842a6472bb323bf27aa997a", +"T3B1_es_ethereum-test_signtx.py::test_sanity_checks": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_signtx.py::test_sanity_checks_eip1559": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-ETC]": "b6d06f12d037f6f2535234c26b51ca34498f708662ea3cb80a12ea489eb8a680", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "90d125097b25f6c485f610a71575d17f93de39480360b0b0cb3b0b2cf3f868c5", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f7c76f0b48465f02518bc9b303857494b3a6a11393fb8d50d6d2857be73ac935", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "90d125097b25f6c485f610a71575d17f93de39480360b0b0cb3b0b2cf3f868c5", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-Palm]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-Pirl]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-data_1]": "5bf76005b87bc0f508fe21453d1c05f4176bb1a0bbdbd1dfe84189c897c58ded", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "44e0850776e3fb812ee7b5a803ce47919dd5dd5047a1d35444ed03c3e0aa2bf4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "dcaf4bf83094d704c40530062bef5b3dbfb6bbe6e6f6e4c84e86875484be4457", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "95cd5ae3f6eb03c556f573804a4c82eae70954525d1517f39389ddd1f0fffbd4", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-newcontract]": "e2deabbe2bddda3dd8eef13b87e1856f5ea42abb92690d19812efc52cb4b47af", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "cdc481e14cac678e2fc022e36a2c08e1c76343eefd882fe002126ddc9470edeb", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "96fafed28e93e54b0c63e25e257753aa638c94e468479a20638dee9e91bc9eb2", +"T3B1_es_ethereum-test_signtx.py::test_signtx[False-wanchain]": "3a19ae20f06543378aee8422579ea23e3a5c095b898ea43fd4d5971c77af7bea", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-ETC]": "766faf3dcedabc56a3efe3f6c069f3541b610a5b41a5bcccebefe632d464a829", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "35f2cc536ee7b000ce3d7ca074185dfada3fd47d44d7d5e22fa48156fb67913f", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "571a8558d7913022f32de79dd1e210a1475f8071c16f7903374e7c1b983b169f", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "35f2cc536ee7b000ce3d7ca074185dfada3fd47d44d7d5e22fa48156fb67913f", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-Palm]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-Pirl]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-data_1]": "404935ea33061384c838ce800777e1b8d7043577098fe9e8e620858ba9f5f16d", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "613d509c1c022bed422bf3b098c4bcfbcea22121eb5e5f189a598af15c4300a0", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "275cf3bb5a3fee99238dd9cada576a2c58c0eed183e378312158b6aaf7ffe050", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "4524bcc323445db07277447b9f8ec34256bec791abbf70915509201ba2608919", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-newcontract]": "e2deabbe2bddda3dd8eef13b87e1856f5ea42abb92690d19812efc52cb4b47af", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "0af85f5066b7787ba7ca0dda59eea89db8498e6881751082a45090239e5d11f7", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4017bff7433b4a754937a72ad1e6da5377646488fb0856102958c8cead4c5cc5", +"T3B1_es_ethereum-test_signtx.py::test_signtx[True-wanchain]": "91bdcf37c543c5b28d39bd7e738753d95a009d10e4c139edffd4a0754fa8910c", +"T3B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "c28e5d8a8e09fc03df8b18b69f2bf14d18a6c149d7623152ee9f42f4b13930f9", +"T3B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "b7b8f41a1ab0f510d831e915d65baa335e79283dc6e6b5b20bda2bcc10a20a77", +"T3B1_es_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "105b8517372cc279c279f895aededb6ea8819db59c65b1539c657821df5dd162", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f6c963383e8c672f07dd2002a109fca95b7530d17fff6ff83aa6476b7bb9940a", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "7e93a620dc6f06ccfdbdf219822a2680621490b332f1e2ee2d6736f4b87fe4ac", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d43544b7ce0bd6869c83eefc7f6c42f987744f6777f5e87d44fbc0af801fc992", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "004138d422e6ab32338bf5c2449c3c45ebc42d3156efd79250191b6b65bacc48", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "ab587791ba4439e72b4f2dd2a07f9063d86d66e9826711f586569c5ff0d29ad8", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "75275f75d74a1ce3ec34136afb008b87c5f323659677380167fa154816617a78", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f6c963383e8c672f07dd2002a109fca95b7530d17fff6ff83aa6476b7bb9940a", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b6e8bc56ce4932e5e9aba7cf3a037ad0ef91cd376b1de5f021c01b4488db88fc", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "80a4a21b8d570ebb56b85c219e480f62b4631cc020e2809c4c3ebe3d44502725", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "6a63ece1a6db406ccb65f7a682a816e947603165f3e239711bc05eeed61e392f", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "1c64dca032fd0c9b4cd0866dac4a030af2aff3df48e29328ffa43c222f49b358", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "a68185f99d9673cf11c531a6befa370e59bab84422398cbd135fd00218e976dd", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "7d23f33fc8520a4a0badfa00e8d71c0544d57269e03901de96aefe9635d46593", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b6e8bc56ce4932e5e9aba7cf3a037ad0ef91cd376b1de5f021c01b4488db88fc", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "13a62087b6e56fe52200f43d01141063140643672ec98bd6c6a004b66a6d2f4c", +"T3B1_es_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "13a62087b6e56fe52200f43d01141063140643672ec98bd6c6a004b66a6d2f4c", +"T3B1_es_ethereum-test_signtx.py::test_signtx_fee_info": "a6df3fc5c5fecf9e52c8686fb09d4971eb98938bebe090af18a0697d532a22f6", +"T3B1_es_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "0f01cf0a6dae94d6a11639b1017f1f473efb79cf520eb52c987e40ba096eb787", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "22651039a4b38ae9b724e4d54c51971a8241dc276c1bb1ad24b8118775db94bc", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "6395e9531a9e727729bbb88f099d87da15f1968bb87499de9ba48f2bc9dcc7dc", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "23293d8079350673838d2fab22e49128c8f8b6a22271b6ae9baf039a321e6650", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "274c0ad39b4a6bc7f7f3fabfe20902f768dc55e4e61985d4865cd61a3688f14a", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "04fcb249c1d130d45a4d0d577ed18cedf89da6a647b56464603125e9b430c533", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "6d3f701eec75e32624118ce302cd42baab6db63cadd185a4155b3951823065ab", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "89a1db77f9df8cb9f89d015a045f0f3737b56a0895e200d886d60f46d426097a", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e1c090d419927869082fd328e9ecc7c0c26292c2fbbfa446a6a5c1a45a142dab", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "c46c3f64c12af3ba6005530e8a32f5a476d70101b54990d34364ae47cf22cb94", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "051123d519c1c3d7c40263970b7a78fc7c2d26d0d0644062945ebdad856805f1", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "099eeabc81337f36e1959dd1d1f6f3a8905dd154fb4d20373f2645aabb9bbe9f", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "0c9ce57fb6c80289ed439f205554eb21cfc21ba9b16e353254125137ca4727f3", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "857c6fd3fb40814f936d4cb0afba9dee3700dc059186e92e1d6c26effbc3becd", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "857c6fd3fb40814f936d4cb0afba9dee3700dc059186e92e1d6c26effbc3becd", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "d0b024c3cbda0c8ee003278de069360b1cfc3da3b2f572c30d68ce162fdfee6f", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "d0b024c3cbda0c8ee003278de069360b1cfc3da3b2f572c30d68ce162fdfee6f", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", +"T3B1_es_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "dc05c97de56c28a323a10642d62c22cadfbde9290ac31431978c350d425a2d8b", +"T3B1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt": "990a89cefba1c6dbced84be89a5b46e682caaa3ad823c0e90e9fb965121763bf", +"T3B1_es_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt": "ed5d2107fee8450d75172f551c66c005fe885a1aa8b52b70257167c568488d14", +"T3B1_es_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_misc-test_msg_getecdhsessionkey.py::test_ecdh": "48318b523bb3774f1c3e57a01ee22f78e4a1afd97e69f93747cabfbd0a8b62b2", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[128]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[129]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[16]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[17]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[1]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[20]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[21]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[256]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[257]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[32]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[33]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[3]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[4]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[512]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[513]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[5]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[64]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[65]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[8]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[9]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_signidentity.py::test_sign": "4e3116bcb279e3f5a6484a2ba5f2981ae649dc12f587f1d6b6d481287735550c", +"T3B1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "9960c0f86dedee1ee5fe867f5bfdd4ccf50d9600d9104a442a5689480c600271", +"T3B1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "368e3cc71f3f909ec53b77e3b32d90432c40647b4868f085de8751fe61c15300", +"T3B1_es_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "df5a474ef7ea1508ef9bdb44a11e333251bc0c3b3b465cbba66c0220ec982bfa", +"T3B1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "4f047df6d760d7b432c22690a02db69a5c1b2f0a459e14634d12ce9db0ec246e", +"T3B1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "3abcc19b3c824aa2c72c629e79c213651dbfd2cd0318279396ad9013f0730c62", +"T3B1_es_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "61ef093fb824829ee0f4ed05f85762a123a690000b30bedd1899b7ba758990d3", +"T3B1_es_monero-test_getwatchkey.py::test_monero_getwatchkey": "1955ad618316c8ce791ac131e8bec69e6c694fd2092e0016f8599e96c3bda735", +"T3B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "9fe4bdf8116b4c5614cc01adffac6ea9306bc39835424f8aacc076e2cf55abc0", +"T3B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "41514bec9d83b7ad2f6f483fda9bcc7774625fd4c63fc102b34c406e5e563947", +"T3B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee51472087a7505cbd467e05ab54abbaf0d3dc30c0636542b5ffc9e005737f63", +"T3B1_es_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T3B1_es_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "edc6df65fbc5ef8abf7a400394c15d811aef497e0d5c0f8ce36011609d437374", +"T3B1_es_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "955260e3de339891efa314f917d1d054155fc7f45a997d0323cfd241ebe2c437", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "3e903c575b88b4b2f5b43e9869ddd45f21b12473d9838f6543c50ae641f67c6b", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "70082b4f66aaa3e781dfc54730f3acec4a5ce5d4741985263238b978772c50a9", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "646915efee9a3953c839a24e5e75c18559cdee0cc8eeab9cec394fb63960eccd", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "5377f0c9ee9c7847991dd6f116074d900ea5955a6a034989fce241af070b244a", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "9c4f68d86731a5e8f4d6172f5e8cfa50a47f7ada2ab5be8d700b865bf88e2288", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "f0e6163f54058a9dbb5162feef74a9aae570b72afad38437350a97951c639ba9", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "e0c0aee58b01981062d12394f3fdec5ed8634c9fef6b73097b7f3838b8e1ffff", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "f0e6163f54058a9dbb5162feef74a9aae570b72afad38437350a97951c639ba9", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "e0c0aee58b01981062d12394f3fdec5ed8634c9fef6b73097b7f3838b8e1ffff", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "ba46e51fe577f6d0fbc1dbc049114a67f7bd392a5608b79491fc516d1b8b00d5", +"T3B1_es_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "c30299b2541560e7eb65d5806b4ce8debd811bdf899c734ead0b88072d36693d", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "f98e90623e44fbb8d8e5c211c5ecde355045392735a6b724648f2a5c879feace", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort": "3e903c575b88b4b2f5b43e9869ddd45f21b12473d9838f6543c50ae641f67c6b", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "15327a6cc7f93a39fe1f2bb2ef366e63abbfb84ef1e784f84ba8fe12638dec4f", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "d7a09aea890dd9b88c9198708b65e60405f4ea04edaf67a7a0c335a0b8be7a69", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "2ee23ce7f9a759675389df3aaa67e3a631a6c779c4e385cb6f10e393ff4d1791", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "bbcb5fe78657625c1c1c5e5301ad62e4ef69a7a5d9d4dd9c061fbd8a5cfafdce", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "89e2c56ef721da18893cebee175de162f50c2a9090847c72390bc374620e2c13", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "bc473ff53de0c39878a95e2110eb1cb0fc0f57789b03c943263d45f166647c1e", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "9671522b9d875910817d77d54a3017a200b08805bfa0de6f0e187ed2527caaf8", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "e99ef732b7156f0921c57f05806071421a7b3fac27970983909d00c28b3dfa6e", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "82539dc7241bc09cbb0813c6539d9f9f2dc9e539ff3a88660bcb47b9d06dd3eb", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "623ad6739f1f1e77dec4da28855a00bf2673087f23a54ff67a228882bdaaebe5", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "4b3c61844568d95e5a4644fbf53a6add27f93fcc4fe87e7e68acf5006dbb0b52", +"T3B1_es_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "80ce3e926a7548682286da0751b78d86ca11e994430bd5f0b7eb5edb0ee45ef6", +"T3B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "77a1cc209bfabc294b7d6e4adfd9f9608434fe02c1ecbe8c5f42038b9b8773e2", +"T3B1_es_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "711f5d79c5bc54df8c0e5b7ccd2ce6dc074e5b32fbf0f8dd373ff1bc2cc7d047", +"T3B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "334222975daec47316ba1cac9c03b0411aeeedc6c392b158762ae13147e2524e", +"T3B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "19025ebceae96c5a4c24539ce804b2786787fadf33544196721b2f4290563af9", +"T3B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "218fe18f3d3b23c72666e9b88fc0465adcbd374451a1393840e4002f806cd26f", +"T3B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "b16ebf479d085e2b6f4f1e8399c73b8bad5cf1643b3c4f61b410076daf530ac1", +"T3B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "59f6186989d118d5cd272fc3c4832c9c857a59606efeaeac4f98a735d511cea0", +"T3B1_es_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "80221956c507ddc31f2df586ce8895bd6a2613fc703ec18ec790001024a52215", +"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "766d59d9a5f4a38a71dc0306c423b71d53d33379f35cc5480ccfd7ccf0a7f8bd", +"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "3e0a31545ebe0804d48d8a86b15666c427e467ed1083dd22a775f93f13d8556d", +"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "eb3d1c0d8ba5376e897389a03029338594d5b338576550ae2e9b61121ff4fdea", +"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "22e066960263cf8df7c639ced82b53cf24a67c0d78c9f27b299975c8df7ce30f", +"T3B1_es_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "82791fd125ef07d442d303fcb762dd48d9287520574e3f478eba44ae9c55dca5", +"T3B1_es_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d80529a3e79b0c0e340c84653d34d2f6b403b313be9b6015c0bcd3f2313b73b4", +"T3B1_es_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "2f27db5c24e695bd72e2870cfc9c59906473abd99839233c31e8634487db1b1c", +"T3B1_es_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "5a1da728d01c0261a70c08f11289e4f3c3a4b2444b1d2d2ad4457ed02713ec6c", +"T3B1_es_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "831de13d1086e017fad2280a900794c5e23e07c75af80fc9ba5729c60b3dd0e2", +"T3B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "164ea79eb9015725ce1480684f87a9fa3491107d6bf9378b23c8e11557ca414e", +"T3B1_es_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "2622c3820bcb1be306f1f19d99e181770ee8f95071e9b31f30a045e60402e6c2", +"T3B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "78f919438ef71fa5fc80c7ef7f9d3eda33473aec868c69691995bb7532105360", +"T3B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "6582438e0b80f97108f7f2cd7caf92721afe2fba6bc31513280d840d3c0bb522", +"T3B1_es_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "2eb70fa9f5f3acc615ee2594ca083e48e273c0406f18500690982f2b1b5d7dc1", +"T3B1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "661212e221771c660cd067038fc425f66bdc52a207cb2558bbfa46fdb572e1b1", +"T3B1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "0478ba58e224b1f6f2c5bb5299eb9b0285bb3ccc613d1398f5b1f42aad760162", +"T3B1_es_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "178e0fd7ffb8905d1c1a5a4e3bf43ebfb24791ecfd3e3e27c8d71b875bf7de8e", +"T3B1_es_ripple-test_get_address.py::test_ripple_get_address_other": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "fd43d977ce8ef003998a5ac2abe8085702d93f5b0645098b5ba51d71e2ea2af8", +"T3B1_es_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "05e71f0d6a92993bdf28703543a0a9f7bab0cfc06b8078819f219593dc625a99", +"T3B1_es_solana-test_address.py::test_solana_get_address[parameters0-result0]": "858c1e506f686832aeda399d9fc36dc360d838b25cee0dd052d2199ef950ef6a", +"T3B1_es_solana-test_address.py::test_solana_get_address[parameters1-result1]": "b7f9d90f85323943b633fe5a0bc6fa4f5647a6732d46210a4b5cc463db7d817d", +"T3B1_es_solana-test_address.py::test_solana_get_address[parameters2-result2]": "41c3221fadf0edc0325eee8437285060408f3ef3e20ac9ef97f11ba01e61b83a", +"T3B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "4681930724497efe7061901ded595422f81144c4c5147a76ade8c9a12ccf860d", +"T3B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "c3f4a1c3bac678b548fbde5e03ca47bc8d7439602147590133214e3ef2cf30f0", +"T3B1_es_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "b5b85a396735bf8d7075634e7ffe6efa2d8fc33e4bbd496c102f9b54e9b72eab", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "2bdd92aaaa11de39429dfe93138bd34f5996ffdbc6cc985f3cb824b68b53cd89", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "2e99ca78fd951621a959cf213ef42787cbcb4af114de5ac24c39a87c5ef9a434", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "42dada7b4074994fb7b9e76e4cd3e26fa57c3fbeae828a27c03e770443eee174", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "d3d4674adfb2acaec990b26b2b92e2f7e54f254934ce97c3d04ac92c22aa0144", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "c6b775c91858d73919a95a33bd66bb31bc181c79b18dbd2fea0782dfa09607fc", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "8e2e4b013be3d585cdc250dcc51ba002c8916ef70ed0c0dc024f0344042fa9cd", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "604c2572557b690cb3f45f1062abb06525294f9a38b91592c23923fc7e556140", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "a3c2d172d8925157fa012347dede6f61635ec6d09db2487f0518235173a35f16", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "bf21c02f38f434ce1e836a1bf0c0c78b02ccb115e216897672f9dbe8a7714876", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "39a016f35f54595a996bfb99798c11417061810af18054ff3e47b6edabfb57ef", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "4980dc0ad3714f003ed48d3d010f878d5807b4965411e6db49fd0c055a1f0484", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "e656ba8bd076c68ca82c3bb5297c3afbc30028115bcdaa9bcf00e3363da978a3", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "b144fd9548fdcdfd18480c96532391e11c2c4c94d9905125f0ca2489dec0c915", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "1cf0e1c91f0fbd71e79d83404f7dc854c7775fbf2f185bc611442588066540cd", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "b183ef908b323c6ba23d9e97e7df798207c1c9c19c6a57ed3bcf9b3b9c8dc4df", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "79fe12f846b5c1d212733efcb64f2237f065dd4bdecfea3438f957090cccaf83", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "753b2a696eea3de06515d5f553f77fc2682becb244da028d0c9e1a83fc18cd35", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "3e2c0d7aace88a4eca63dca58967e05f7c82b91cb94adecf3f26a8b0691f4aa5", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "d92e9c2de08fee6eb9ba6269cab49ef063fbb0e4b19f4ffdc34b69aa01cdaa60", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "fe19c47b07a691f82f58391724cb6fb527bf6264e4de2b71280cb74e85b127df", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "72b52dc963a5a8cb541a0235164d7ce51cd5ae9779d4b41db1bcf6398ab3301e", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "d421af164e4badd4945073b402f52c179644514e8ce50c76d66d2e7929655acf", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "f0cd96c3a2cbc2faf4848715ca52ce8b02f4c5b98391829797eb31ed169d6189", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "2fd13d5b04d6dc3b956b8b8877cc70e7b4780a55c6c3c3a6d6cec60059f3412c", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "24e72eecb73fae4a6bb7f2c36fce44ff0421ac38b5578cd959365110fc003cc7", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "1b888a9c491ecd7fc84e84fef290862c7d8ed47a6a6986ab84bf4a4544be19e5", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "d94a153c0f1bc995ef92c81ad873f656e0862608442f510d0b30058e9dfd65d0", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "1199dfe91eb0b28a36a4b3d2945485a658f4f343afed3de4eafe3e4bbaef34bc", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "a27e10e06f6b07209120350a86ec6173c734c6143cf4d83c17eb7c2b4fbb2410", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "fd96b5b65841a316f204771478ba0884a023a1c5e46e87dbac1a6e77a002c21e", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6e4fe45f6f1ac44318380ec49cf35284d546082be2ad5c95da1e60b75793fb8e", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "5be688a627b35771723a93029aebf27c0ba5bf772a1bb7f16464e32fb3204f98", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "ee8370017827c93e5bfb9cb0d453672c152b5066c83b2882c8dff44c4c33d225", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "e6bc49707529b561a875465d5a14e29c089377065011328cbd409caa2e138d49", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "58c4f7601060e353dccea1bf3c29f450613a58ea89ea860d591b13cdbaafc19e", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "58c4f7601060e353dccea1bf3c29f450613a58ea89ea860d591b13cdbaafc19e", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "d2ebbf10dc2b6568526d4e2cf6088986c6acc1ca7aac1dca83ce2cc93e2ba400", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "ecc4526f2158fb5df2e0cce7982bb5dc090330ae118b5be6997ea7e6f7bd08ee", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "6b3be4f71aedf03ec25627ade281b918d0fd1fc41c52d0a7eb0d02b845538132", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "ea6cb96ee026b225e883630234a6b9215270900a8a41a88d0111d1c5e97616c1", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "e9aceed798845646987c2041f826ec4f8bda9c4b6e100559751e13d907554bc1", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "5f792e2008baafbe193c3c1f9bbf718f3d5fe0a6fb8d5f3aa0303367d80dae17", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "7a93f016c14482d7c2d2a21cab4f78fb76ac824fb8bf49503e59859d315688cf", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "7b76fafc54704348af3a61e4bdfe8759408f211f1d7e2ad40c53ac77e4086a8c", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "98b421bb9c14371b7ba590d911ba2c6417c66b14df60617c6107d78ff7257262", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "9dd38e27b3f183b012cdc3754da2dc6086e63ac3cc95d6146d0f7a65c331b35e", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "f3af311f1e104b6a35b32cfa28e6ed99d46ffd02ae91e076575519a9159e3886", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "7e371d410a569a4de72f198d14c328b7ab3163ac3c87a0d5ecbe8e71e9fe0f89", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a3945abb775dc9699c4383a527ef33a936ecfa137b4e5de29a29907da8eeb466", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "79655355d6ff799816c99995449a45ffc5bf2d1e246928467b09cd7b43e39b86", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[split]": "5d7dfa1e313c31e8a4a37b8bfb1787ea104e088b1a4a4ede8fad7144d09ff5f9", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "e02c8838eec265a2c2d7bbf0bb91302c637753f118b9bad6e933d717f8fcf5e0", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "be725a7211eb840e11aff231c75bc01e48d531e6092c53e407e4a5b57eecb58a", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "be69d69b025f5977105f449f50b2d953b1be376510495151c203aaa084f4dd3f", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "172666b6da84f6aa8dba6d43659104103184fac581101d452ecb2194f5ab2352", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "7c32345e2a8f6eea26f6fd76df8fa4466a7a44f65b089dcb8f18cf6241344533", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "1adb6d6f0969d7a848f72f52251340cd52e17d7761dc1a080e66f0940a5b792b", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "a5f84ad6681ec3b2c5d0bbe35385a710143f7ea4bf662438f7f69c5b1aa7b957", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "423634df0f046398c224f5c001416a1e3f4fe3d28a85d5f7a997424b206cfbb6", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "485b503f5b47173d2757b543d5714b9b7ac7add515ee2db5ac13c47c395ae4f2", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "6167e32e0b81a06cceee177bfaefea8725b46a0251d7038eb27f8dad5fc0eb63", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "0acd6b77d91bbf38dc4046c8466ee8a711df4703b65f65704030c432166334c7", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "d648876a69346f9f84c838438b3cd42a2c24d61d6ba9219cf9043131b707343a", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f3369332c876d91804f904b5af2cecbec3cc4a54bc95acbbf46a7ff8885188ad", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "07843ccb2942ce121ec07a2865e13506bd8c80da985dbf10f1aa0440bb8a1f31", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "896e7aecee73e6fc3c20a8c34e0d58ef311836f5d422afd8b19883f4f79dab3c", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "87e03293ee89bc460fc3b3d4677497ce2259e9337f2b505763aff5f5f0a8373f", +"T3B1_es_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "f995b36f7681c03ed3a57bcefe3116c808e33467a38efe3d4c3191c259ec836c", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters0-result0]": "6229e1ce79d2ccfff5920e6e52719717f9d44919884346d1a3e45baf8607ff59", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters1-result1]": "5b87afc8d277f0c8a1d211661fd67d2a3b7921c819d1d31bbd20f01ac4b2eacb", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters2-result2]": "3afe9705f70b5ae474e033b6bf629664b72fae23620640b8ddcbd7fc66f0654a", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters3-result3]": "4e01db4d7114150a9e533ce2332481e9f9de73e2820323182605867498ea1566", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters4-result4]": "3807f527266bbb111c7ba04a4f9837183be6096e1b64e97cb46c9e3df9f40a99", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters5-result5]": "85c23ff3ad33ee8b8a938e6e2ce1b558c7d979e8bdd3ff7bbbe955c6b813bf26", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters6-result6]": "55539e4c7dac6041739066365bbf96cf96608a3e1a2ad37d35bde0a07311e963", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters7-result7]": "fd85b4d902cd2413dfaf1728f2170b93c4f04b29e53f3d226efadd1bc6afd5d2", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters8-result8]": "0563c25989bd70abdcc4d1e679ad41d305e5c0f14e2b0cd660671a7275b98553", +"T3B1_es_stellar-test_stellar.py::test_get_address[parameters9-result9]": "f5ca96b78662855291864cb77ed9d48f0d3a02aed777a103c4b2dadcd0f45878", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "e947faf50cb6a306b25ebd76804e1bfa9d4b6c3054b1837955f3b5080d2f38ff", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "c01dec9868e2e4736fe1384cf4a7de83e33d345fe7cf2fd9bbdae93d2994f1f7", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "b6affb7be876ad1691b8ffefc27b1590aea04566cac5ea69dbb5609b3cde3215", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "b9fd3b9854d4a78cf7c15886cef318203698cd787d4b16bbf11f33891b2466dd", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "0bb7e0f7e39d9d1fedc0a57793203b9f98e115b7796f568d728dd2b5fbc3a7b7", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "92b13d1ebd533750ab17823374ac40ff06896c391514c03f97fd7714fbb6a33a", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "60d20df929a5ef978e8e11ffaa69f5b4cfecc9666e443f89585c6c8853702f13", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "97ef393a2d6393cb02b58e33ad2313d98d549f6c4c94e5f22cbe3fc40699f653", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "9639f8af5aa3e82ab9eab79f664faffbcb488c983ec1ef9622963af314bb0fba", +"T3B1_es_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "1e2afe38adb80b7eaeea3b52c42ee17a9c1b4f3bfe6d92e7a55e450933055643", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "63dd3e74c4186051a9fcd89981728665918e8e1adae8c5d66de03e21aeeab0ef", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "47c972b9dae51b600051b3f764882a7ce117653ba99a0698809da5cb34e50cd0", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "76233c85dc50ff7b50ea818600c8915096787e16b606a6aaeaf89892a814e45b", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "3f388c50a0165fab37012dc01708dbe4389a1508ab79d1332e54e7b82c1457a8", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "781006ced7850e2c21972e0aadf019faf601dc48da616cb71b64fe6e5d960bf1", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "73841dfe4f3875ef310dda362eaaaf638ca21cfaecd3e3a089c6cb97c8c757cb", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "9c19b25005dfa620481b69914bce2a41aaa3de812cd77b50b795eb203487f6ab", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "04d1a10047e219340f167d36db8dc0cfc52cda185e8e912e78bac9b4faae695c", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "ed7d515430defec0b2fdd71b17b29d4aa1ab4979d2b408401fcbe0a0bd2faf68", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "78ecda7d39df7cf7de648752da86ec5feb363c4275812090db75b29b80284b59", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "22cb9850f5850801823daca79a16237c275a335499b6d3baf8e8fb0b081fe341", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "08c055914ca983cdd8a3a953f6c7b2365bbf3db721e93db10b0fa93133f404c1", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "63f360e5b629cfdc579cf1a33bdaf4fd77269b78763a388d543850462714356e", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "0367933a418fdf27ce2fc85c49f909e01f6395475b6059e3c7c703339015ea83", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "0b0e9be03e4cd0143b82d74a1744b8242949772727ffe2b5f7c01f8476677950", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "f84e493f2c317f713f00b1965d9da76094bfa91b8c8344b4d23496af4dd1b2f8", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "2c6589a8d2b9b5eb1de1dc97c00e4da3eca114eb8579c869a436a887712cf421", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "d4e1e1a7e5c88189024c8d6d8759220de5bbe655a82b83c65993ecb38a63e278", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "7331a115aa45a912c8f0ef5d7df1dec77a1d26d0b7b441a29eda3d3fd7064892", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "c5b06a88c6a3cf5d74faf8ed937242a8306d111e3b1890b3fec67c2852fa1a88", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[memo_hash]": "867e771d921575c44de61bc55f86c1fcc9b405538fa1e5ad32c434d82936d676", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[memo_id]": "77e41ab537f6769fa4d54cf3e0b18e897a17773bcd7e41eace6de0e20243b246", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[memo_return]": "d447e53351e211f2e6800657d40e9b94f7d84e528e051f6f79eb3d0f60c04349", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[memo_text]": "aaa552180489b0453837579a4b6d4370c465118246fd100504c162901330fec5", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "5bf63e3811f069485165c81b2808916f4dd620719988c95d7a77514cab745d9d", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "7cfbb1e7163a84168d919e9e18da9e5621ba250fd64aab40755be0e81e44c25b", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "200b4e8b79d79f886ff19fbc5053c4262443dbe87a44716ada3a31a22de41b16", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "5fcf6387cc5d7f318d90ae0603846502e8baeb8d0681d5633e42a87218f0caed", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "ff8f847ec207300f9a7a7da134e1f06fbf25e3d044ae58e55e2f2b4ddc81705e", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "2c6589a8d2b9b5eb1de1dc97c00e4da3eca114eb8579c869a436a887712cf421", +"T3B1_es_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "c0435fa03ab36f300fd7e7b2dbe417f3b76cd475337e94ef0c36809222c5a39e", +"T3B1_es_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", +"T3B1_es_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", +"T3B1_es_test_authenticate_device.py::test_authenticate_device[]": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", +"T3B1_es_test_authenticate_device.py::test_authenticate_device[hello world]": "b3ec00ae2611614f154411b119b12b58d3749bdbc9ee374c26dd33715b507268", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay": "3da524733e52572694837621a0f19c11d0f1eb8507ad5c66ddd2442e592c0a6e", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "3e2055de31f53e9aa1ce43bdfb8d2b6f2d1d4b6fa83d940b27b59cc1aa405878", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "e3c160bf62f0bf5c0fdef3b465dce667040bd87b1b7b09d9d850f22496e60ddb", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "5ade50e1e84c609db8ec4e908094628b2ff917130a64a43388d0f5fe4a686ea9", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "28dfe89e9410bff59c6601f0953c641f22c456d778a96ff6cda217068ba21280", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "8cea3faa7881bbf309976a6cd66a2429ae701fcadb4cf0ba1993c5fe0b38c628", +"T3B1_es_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "806791395276a2e0c94de8d0e677723e167d8cb13d7c105cce7c0e3a98d544a8", +"T3B1_es_test_autolock.py::test_autolock_cancels_ui": "fd8d2bcdd54b02879f3f1898b614491e7a21febc56741e0389d2fb43ad1e4ab1", +"T3B1_es_test_autolock.py::test_autolock_default_value": "6692f118159692173a8cc0edbb0e858a02b354d87642b63ba8d861d52626c8dc", +"T3B1_es_test_autolock.py::test_autolock_ignores_getaddress": "c06c2c58cb2a50cc38f749b1747654b6ae6581bc3a7bd74e32446c145562ebd1", +"T3B1_es_test_autolock.py::test_autolock_ignores_initialize": "c06c2c58cb2a50cc38f749b1747654b6ae6581bc3a7bd74e32446c145562ebd1", +"T3B1_es_test_basic.py::test_capabilities": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_basic.py::test_device_id_different": "946157d3de0e8da4e891538057f266fb3da9caf5fee193b268f4c1c629663e3f", +"T3B1_es_test_basic.py::test_device_id_same": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_basic.py::test_features": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_basic.py::test_ping": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_busy_state.py::test_busy_expiry": "58cb29e1bf047aa272323fecaa59a913a20d158c7e0f15df8fad1dd29365bc13", +"T3B1_es_test_busy_state.py::test_busy_state": "ec773b9a1f3b1b37c36a8ebab541467389864751116020c83d93fcdaae6ad883", +"T3B1_es_test_cancel.py::test_cancel_message_via_cancel[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", +"T3B1_es_test_cancel.py::test_cancel_message_via_cancel[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", +"T3B1_es_test_cancel.py::test_cancel_message_via_initialize[message0]": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", +"T3B1_es_test_cancel.py::test_cancel_message_via_initialize[message1]": "c2eca4793ad12e18f623de2d33c006ba58fa0018733b0a86b877493b6d569432", +"T3B1_es_test_cancel.py::test_cancel_on_paginated": "805b975be8d70b88749f35aeabb809759dfbb81b031c2a0f67d6645b825d09cc", +"T3B1_es_test_debuglink.py::test_softlock_instability": "3bf79e2984e21a59b663008802f7896b65fb4ad45ec452776af7600b5202408e", +"T3B1_es_test_firmware_hash.py::test_firmware_hash_emu": "9d58ce887cde18e51f4df0c52ac8697481866bf4ee27260207925ce6c8e148bf", +"T3B1_es_test_firmware_hash.py::test_firmware_hash_hw": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_language.py::test_error_invalid_data_hash": "1e4a266ea51d55976cf4a1f8655e58629092b617c9d36e0603a5081961130564", +"T3B1_es_test_language.py::test_error_invalid_data_length": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", +"T3B1_es_test_language.py::test_error_invalid_header_magic": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", +"T3B1_es_test_language.py::test_error_invalid_signature": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", +"T3B1_es_test_language.py::test_error_too_long": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", +"T3B1_es_test_language.py::test_error_version_mismatch": "7fe6f34be4850fe62d0125548db36aa49493f7ef08781916025877445700ccae", +"T3B1_es_test_language.py::test_full_language_change[cs]": "4d49f8000c083a5c0fb8e3c174508555c7cb25620b4c1a587cd6b1cfffc6ed92", +"T3B1_es_test_language.py::test_full_language_change[de]": "60784a1347f5f1662826f2c6363e5b78c5266b56b37f9a6cb74c7a7a938d38ef", +"T3B1_es_test_language.py::test_full_language_change[en]": "5684c4f7e6ca01d85d83549d892ecc4fc0277b46dd7294d0d7ef436a2f4bbf6d", +"T3B1_es_test_language.py::test_full_language_change[es]": "51aee9f7f7e76839471274c909bcdd2c117e3fe6d9ca634ef71f1209dcb2271a", +"T3B1_es_test_language.py::test_full_language_change[fr]": "0f7df785e611deec165dcce914efbabb497cba640795c8b90f396c223af7f3f0", +"T3B1_es_test_language.py::test_header_trailing_data": "112c52b046074513671e25a0c27fb8e1e52c94d403be29e68890afbaeb7b5fda", +"T3B1_es_test_language.py::test_language_is_removed_after_wipe": "02719a4556b8fd9f6f59e0f9bb0fad899c5faa42700e76c464d51282f6e441ae", +"T3B1_es_test_language.py::test_reject_update": "72b5cc4bb1d3a1024ef5348356565e711392fc379afee08a9d4275b7d627c213", +"T3B1_es_test_language.py::test_silent_first_install[False-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", +"T3B1_es_test_language.py::test_silent_first_install[None-False]": "8af3a15ecf25893315d56a90073b32d8900b5d7c9ce7b8505b3628b08ce1d5c5", +"T3B1_es_test_language.py::test_silent_first_install[True-True]": "b1c220aba9dbaad8d8090eee4c8a212e0826aaf702db3cb38d02936a5e3451fb", +"T3B1_es_test_language.py::test_switch_from_english[None]": "46b0adf33e230920b8111c3e5ad21236da534b6bd44a83cef77a0819684a1d94", +"T3B1_es_test_language.py::test_switch_from_english[True]": "46b0adf33e230920b8111c3e5ad21236da534b6bd44a83cef77a0819684a1d94", +"T3B1_es_test_language.py::test_switch_from_english_not_silent": "a9b0e47be4dac0a6e99582439a6225527e8e365b7e74cca03892675853b1a152", +"T3B1_es_test_language.py::test_switch_language": "26c80e43afd26df2a04f55e21c44c36cf8bbb9c4f5ee3012ee7a4a5f8e2313c7", +"T3B1_es_test_language.py::test_translations_renders_on_screen": "7f3f39ddad3967195db73c2609822dced686f8fc8efe77c72c5606b840b17231", +"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "8c5dde884bfa43f6864395efb2bda262bcbbbaa45954ef161606c8291cad1c02", +"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "6f7b308b737e74cd621d9b61c603e951d53137747594963ec8ff1f5cf9c51dd3", +"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "9a453e964eeeb279c1f11855a380a1b44399e2726f8f29aedb7ab44fc4878950", +"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_msg_applysettings.py::test_apply_settings": "c3d2c02c606622db744fcac1d3b4406fc7bc3e76fba9d2a865c569ba3adb8a8b", +"T3B1_es_test_msg_applysettings.py::test_apply_settings_passphrase": "c6e94451b965156345f769253593f902192e8cb4cda4d0ac4cff086fb147fd26", +"T3B1_es_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "130cdc99035708d25d7bfde37f8cfef972acf0e1ad4628db33b5f7f981d8090c", +"T3B1_es_test_msg_applysettings.py::test_apply_settings_rotation": "aea3c583db2a5e68a4316c32eb56e2b0512e774a080e395674053927ca8da70f", +"T3B1_es_test_msg_applysettings.py::test_experimental_features": "aa31d90198a43eab4ddf58bff349d11920a8e840335dc9389e5cd98aac76a279", +"T3B1_es_test_msg_applysettings.py::test_label_too_long": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_msg_applysettings.py::test_safety_checks": "4ef5ad04d866dd8c00c09551e1eb84f0742fd5d4d2ae4605d3612d764d6c4a12", +"T3B1_es_test_msg_backup_device.py::test_backup_bip39": "a003931f1bfd3b614a8d1a6a6ad44cf02651b27531a0a16ce30569181941708e", +"T3B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", +"T3B1_es_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "de884ea4964ab98564ac23f17890bbf2015cbc303fc65b2e97a587a7d84c15da", +"T3B1_es_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2620603d2955390d745e6bb486bb83c52a3ce11f906d501112deac68f1241e80", +"T3B1_es_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "3bc32d4fc08149dd81134cba2ee698ddb9819cf971beb8fd84b6e7fc75b5cb94", +"T3B1_es_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "ce176b9e57372e3b338004a6123e2ed8bea4126f92ad7cd5b04f31d2558b22a3", +"T3B1_es_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "7b6e80e9e5c05fc78176016a2f661673d0467de14c2f1f05017a9d35ace4e48d", +"T3B1_es_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "6c500423247daf99b0be5964a3b9a8508429eadf315a049228ba7822a448a162", +"T3B1_es_test_msg_backup_device.py::test_interrupt_backup_fails": "b1408c4e113ffec85f27ad94b860e73e486f904bc560c25ba50587c87e4a32d7", +"T3B1_es_test_msg_backup_device.py::test_no_backup_fails": "5f447ca95e4075dd0dc442db6e24711f9f625ef87613c82c0ab10a07ac9b7610", +"T3B1_es_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "685a78596477a49013be94ac8dcd0f8e9b3c500fe201a5eacef08581fc614866", +"T3B1_es_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "237438f415979801f1dcac7ce52a27a52d90cd7355bc1e58447882f8673a873a", +"T3B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "22ae79c8dc2b0d32a5d9bacddd9be52b6bf8ce8216aa69360270e746e5d7a2a3", +"T3B1_es_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4c59545a23e2b5bb60c023959ce5502ab5a836d74a5c6ad7cad0e5a4ec7a8de4", +"T3B1_es_test_msg_changepin_t2.py::test_change_failed": "e3479bc6b4bfcad447fcf8496b136f5c77febf0f418bf033464d466297d69c99", +"T3B1_es_test_msg_changepin_t2.py::test_change_invalid_current": "c09a4bd14b1738b7ae6604008b9ea40e8e0624e4b29e6370bf08078aa6a26b28", +"T3B1_es_test_msg_changepin_t2.py::test_change_pin": "d826dbdc7417874ddcb576180c92999ee03d252486bb4b3932971c5c5667bcf1", +"T3B1_es_test_msg_changepin_t2.py::test_remove_pin": "504fce072be30ef005d70e50d12bdefb0a82b3004124719e4392418ceab71bce", +"T3B1_es_test_msg_changepin_t2.py::test_set_failed": "e4019ce947c756c2ffb3753b86b1e2603e8d2a1e2b9ac9c08bb87758f4ac9ca9", +"T3B1_es_test_msg_changepin_t2.py::test_set_pin": "cc2c759736892de34bdec1289feb6d7c7f84633cf6d37d8514f3ea5d587eca8e", +"T3B1_es_test_msg_loaddevice.py::test_load_device_1": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", +"T3B1_es_test_msg_loaddevice.py::test_load_device_2": "ee1f058c4a786b56554acddcd0a6206bcde2eb5fe879867a71cb3dff2a8fbdfa", +"T3B1_es_test_msg_loaddevice.py::test_load_device_slip39_advanced": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", +"T3B1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", +"T3B1_es_test_msg_loaddevice.py::test_load_device_utf": "511d36d501993568f70ecadb51afe81b6745135833c9b8e3c48ed3f6adeea3ea", +"T3B1_es_test_msg_ping.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", +"T3B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a956a09d0bc2b0133b6f1264bee739cfad1801793c7675e3d187fdb655dc842b", +"T3B1_es_test_msg_wipedevice.py::test_wipe_device": "946157d3de0e8da4e891538057f266fb3da9caf5fee193b268f4c1c629663e3f", +"T3B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "1e9227b2113b70db1b65daeb5f9cb869fad9625698ed59d54bc8f0f806368dd0", +"T3B1_es_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "1e9227b2113b70db1b65daeb5f9cb869fad9625698ed59d54bc8f0f806368dd0", +"T3B1_es_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", +"T3B1_es_test_passphrase_slip39_basic.py::test_2of5_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", +"T3B1_es_test_passphrase_slip39_basic.py::test_3of6_passphrase": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", +"T3B1_es_test_pin.py::test_correct_pin": "86529ede623f111fcd422dd859a564b978146fe34e8c687b70a9b86128f8c06a", +"T3B1_es_test_pin.py::test_exponential_backoff_t2": "146a49a4c7ddfdd99e9a7972d9806cb03aa4cd15a9d708f006f191514842883c", +"T3B1_es_test_pin.py::test_incorrect_pin_t2": "d4249533e46ad5a24dd3d008b14351b6e15e63ae34fc7473ab943218d905a004", +"T3B1_es_test_pin.py::test_no_protection": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_protection_levels.py::test_apply_settings": "7bc04dc9f10694204f2303ce01caf6cc06bb3f9666824bc7e7d32e347c0ab1cf", +"T3B1_es_test_protection_levels.py::test_change_pin_t2": "da0d9740b75864b2e5f328616cda6280deceb676d1fa3b8b5e15c94981506015", +"T3B1_es_test_protection_levels.py::test_get_address": "9b595e7ea3d6d4e3d3ea56d83403bdf15a60af72ef968885633a3ba2a0401c10", +"T3B1_es_test_protection_levels.py::test_get_entropy": "dabc6589cfa52e3d9a74aff2b08bf1875e1d93b2254a55e1a7de0f767e52ed9f", +"T3B1_es_test_protection_levels.py::test_get_public_key": "9b595e7ea3d6d4e3d3ea56d83403bdf15a60af72ef968885633a3ba2a0401c10", +"T3B1_es_test_protection_levels.py::test_initialize": "f1ea7380541fdba5ec180c96b12656b1e9f9c3fadfdfcecd0084ea6fc3634c9d", +"T3B1_es_test_protection_levels.py::test_passphrase_cached": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", +"T3B1_es_test_protection_levels.py::test_passphrase_reporting[False]": "1e8c190fef6cbadf3af6fb8a9ef5470b92627c804ecd20f9e548179d83d4cc6f", +"T3B1_es_test_protection_levels.py::test_passphrase_reporting[True]": "02f3f8e151c1ce340686bffa881d95797be857b3ffe5e45c9e731af97e2a3b25", +"T3B1_es_test_protection_levels.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", +"T3B1_es_test_protection_levels.py::test_sign_message": "893bf219f36a32bb3867253fe267bce28c2112ac0da84ec17f2ffc3cedaacf07", +"T3B1_es_test_protection_levels.py::test_signtx": "d1edc5e96fbd91ac872be680ac7fb13db7d548e48c7b34d8969d0c01187e94ab", +"T3B1_es_test_protection_levels.py::test_unlocked": "85cbf192ba305b14f491ebad97b6fe0b63990d473d520a8035efa5089ced1921", +"T3B1_es_test_protection_levels.py::test_verify_message_t2": "5a4bdaee180485d9e08ee5fdb0f5d5317e3d0df6601e1b5f30561f957b9a50eb", +"T3B1_es_test_protection_levels.py::test_wipe_device": "a11c4318f3eca399c953ef595ac7fc81b5e4aee4845765a9f103796d8bb74926", +"T3B1_es_test_repeated_backup.py::test_repeated_backup": "9b0ebafe8e17c11dbb24bdf95dc230f6ef9c5be29e178f93e8d5061b460db046", +"T3B1_es_test_repeated_backup.py::test_repeated_backup_cancel": "ec41b85ade2fba738b810b1b3a35e812fdd645f9266c3fcb7191ef803ca02ea8", +"T3B1_es_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "8a8ed93312503227b580368870d575b47af570cba5b1e3a71d63c9f6e7e91bee", +"T3B1_es_test_repeated_backup.py::test_repeated_backup_upgrade_single": "8b3b91c5f21c4814398ea5b0f16be2fd35a57036730c17a441b18241dbfd114c", +"T3B1_es_test_session.py::test_cannot_resume_ended_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_session.py::test_clear_session": "6fbffc0958c6514ea65c5ce81ecf2cdc5f2ac8965aa68d8584d5ab30a93d7b82", +"T3B1_es_test_session.py::test_derive_cardano_empty_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_session.py::test_derive_cardano_running_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_session.py::test_end_session": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_session.py::test_end_session_only_current": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_session.py::test_session_recycling": "1f1e85e64bbece7bc5c54d79f500e8969218d53bdc1af5355a8c4f895aa5c0dc", +"T3B1_es_test_session_id_and_passphrase.py::test_cardano_passphrase": "711bbec8cf8ff31af51d7831b7bf85f22ad72ce50555abd75c6e172bf97248db", +"T3B1_es_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b8d5bb849a4096ded014148ccc83c60baa15eeb9176f9cb50e83e1da41a21823", +"T3B1_es_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "ae3df3f4c5ed0ef47ce0faa573bf8a506c69489861c0f8ebff76229a591d9158", +"T3B1_es_test_session_id_and_passphrase.py::test_multiple_passphrases": "71b23840c2679f7a4eb549ae74ebc6c4c0c7d4f21e01f05fcacadf8e88671782", +"T3B1_es_test_session_id_and_passphrase.py::test_multiple_sessions": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "bb928f1bc8c8afda769bd5c4b245182c4dc68ab82a50ead1ca615e53bd92736b", +"T3B1_es_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "0efd88f75c5537a52205aeb1ff7b4a6ab299f4e3e83036acd79f1b627d5355e0", +"T3B1_es_test_session_id_and_passphrase.py::test_passphrase_length": "c79b68682fe3ad6fe7a0074dc4ad41c9f872b1ed675525cce53bc311b7d7e813", +"T3B1_es_test_session_id_and_passphrase.py::test_passphrase_missing": "14790cd7ff44900f996fbfc347f1de31da1b60bc8f76aa63fd7bf74a6d049861", +"T3B1_es_test_session_id_and_passphrase.py::test_passphrase_on_device": "2d5316868d556bce7e2bf9d8740e63b929fef99d00090488bbef05096ef86a63", +"T3B1_es_test_session_id_and_passphrase.py::test_session_enable_passphrase": "7da3455fc1898ad7313faf986afa41e8683459137a02ed65459c4e2859477a90", +"T3B1_es_test_session_id_and_passphrase.py::test_session_with_passphrase": "e5732810f2ccd293e1b79d915687f5e894f5d955e6db00a1411b95bddbc7bd02", +"T3B1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "fb794c49205b78c579f8529e1cb2824316a8cae5ece46987acf8d4d56644e5b8", +"T3B1_es_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "505524149ea8a55b806fe691e8a74e41619ae0afd1d02cd1058d5d47bf20bed6", +"T3B1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "6b71c7831c8b9750ec569694d677a7004625b7d899de8c85ff41822c459cc5be", +"T3B1_es_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "c4a205e93ff396c0adca645477f7e904279b31ff7365db977cdc5d9900496d1e", +"T3B1_es_tezos-test_getpublickey.py::test_tezos_get_public_key": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "5428b78230e3728909ef5627fcd2ee20a4c803f4cc48ffd83a39023e54851c26", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "381e2edd7c0b21abd60220745c5d58dab922c94bbf6f8663829615b718057512", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "82b05ac35266825444f9917c2b78705fa57e22b2906872a86961de0beeeeee0d", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "880c1d5bc3db42d7974e2b526ee38453fc9b1a1fb23922cd81b89a66c5cf9858", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "4a31a8438c19f6cfb2164381b3c77246bd8ba3e2d0f0904557cdd34da48ae128", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "3c90f513ac2487b18afb24e766e790445520e911f1d518f1b1e6948da10922a3", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "931922598fb0fadfd89fd7c70bf41208a100de3c923270290ec9c0f9b941a8c4", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "62ac15287681ab838a6a2505d158b6f07714b421607ac5197e8e1f30b8c701c8", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "105c6f134d8ec38c5b68de67968548378650ffbfde2c1bca3715b59b8d8e3216", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "40d5c426fdc29f472e497c19dfb4d04a5e73a04c48976f0db03699d34f58aaab", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "375f2cead31d30cb051220208dcc2f21d234719d46e247293eed98db149cc791", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "f028ab852a5db62cb3a9a062e536c2e0568313b8f8961fcb4f3811baad819884", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "6a8ea0b317e4f2631c6369239faf2b82d4c30103b8c5ebfd57f6cde0c9297552", +"T3B1_es_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "e4921beb410076667282830cc79cf71cec4ec561b4195f28d92e867e3e430635", +"T3B1_es_webauthn-test_msg_webauthn.py::test_add_remove": "f052c533daf866855b3db4a08d9ef69205ab0350434d494fe01038bdd891cb0a", +"T3B1_es_webauthn-test_u2f_counter.py::test_u2f_counter": "ca1e329050d4db1a09cbc672a98a66fff98f5ff16857e0c747d8eb2073635c39", +"T3B1_es_zcash-test_sign_tx.py::test_external_presigned": "4fe18488dbdaca245cfe30868f7c163595fbeb2321268fd404afc42fb3a819bd", +"T3B1_es_zcash-test_sign_tx.py::test_one_two": "709f33a0e074d3923aa1c7942ffd49606f246dc044a3269deed9b7ca54051680", +"T3B1_es_zcash-test_sign_tx.py::test_refuse_replacement_tx": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", +"T3B1_es_zcash-test_sign_tx.py::test_send_to_multisig": "687f587e84dea7c578cdfd7fa3767d25bf2326214742285bb514e7a4ff74bbc8", +"T3B1_es_zcash-test_sign_tx.py::test_spend_multisig": "32b08ab1d99fae1a6e65796476ff231da26a2d050f48be0f26f19c899b450fe4", +"T3B1_es_zcash-test_sign_tx.py::test_spend_v4_input": "bec708b8c0b57c1cf5b3b0d0750831011fcd4320f7050ce12bf858b9f96d065a", +"T3B1_es_zcash-test_sign_tx.py::test_spend_v5_input": "b1918230ee7f9652ca622534ffa872cf63139783d963599143235937eb33a350", +"T3B1_es_zcash-test_sign_tx.py::test_unified_address": "cf31c207d517e393c0bdb5b1f7686af2ec350ced608b6393f96c414c54b86e87", +"T3B1_es_zcash-test_sign_tx.py::test_version_group_id_missing": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", +"T3B1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "a9c82870e7ef5ae38184c83c526aef7954c9956313203e7d09657f1f7ee3720c", +"T3B1_fr_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "89292a81a0a4380eb2b7af21c0bee0a53fdd3b86d20c58f73382ec58dd495fbb", +"T3B1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "21dce3ae58a0b4383d4b295e452ed2282167d39155dd5a828db5bfa432d42047", +"T3B1_fr_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "71c351ca201522a74e1f7199ac7cbf99542f646774dcd031099db50b8fd50743", +"T3B1_fr_binance-test_get_public_key.py::test_binance_get_public_key": "6e22d97a5b4bd8e789a204aaa16f494596e0d8511ec824adc7c4f9b9fe5e87e7", +"T3B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "0c49bc55d035c05b21e470cb4b3ab0182e10166e21b8a2e8d21f774792b5f395", +"T3B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "8f730c973185c77623019a5fa8254658d262e56d200a2192ea73eba08e5f23a3", +"T3B1_fr_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "57c47b1573b0c2558047784e8988c2ff7f2c643b14989a24b1f6963eff77ad40", +"T3B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "0c49bc55d035c05b21e470cb4b3ab0182e10166e21b8a2e8d21f774792b5f395", +"T3B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "8f730c973185c77623019a5fa8254658d262e56d200a2192ea73eba08e5f23a3", +"T3B1_fr_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "57c47b1573b0c2558047784e8988c2ff7f2c643b14989a24b1f6963eff77ad40", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "d465726f6007b636e5a48c3b0b14c3612eb97b5c51e13f5f1e08bf1c693e22f9", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_address": "ef13f3c0105c9888fdf2d973dc28f71658d5ddbf0b3c1f05f26b8870e74786fd", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "8facfdf6bc9b56f2723a820d1130cb2e15399787f8a2081eb1b7a80ba0180d40", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "a2f6531846847c9e3f81a936cc6c391b30b794f0397adc9055defda4a0c93662", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "ea754b5c25d79068110289a3a88d020d71f1485ca0cb346e07602ebd040e84aa", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "ea754b5c25d79068110289a3a88d020d71f1485ca0cb346e07602ebd040e84aa", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "bc3f138901692e6e14ac1857f526b8e3c738653f7f2c7d19639132ea1984023f", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "6c68537a122fa4de1ca6b6a6ddfc307fedb668d3f961b4604878e6dc87d89c4c", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "ab1e06c5e72e7ebf9296e3c161c3655f2037c33ad89f33f9702f6577125a295f", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "e33a0c559414aa9b679279e34590f95c34aed86f54988876bd2f61d0fe4235ef", +"T3B1_fr_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "e33a0c559414aa9b679279e34590f95c34aed86f54988876bd2f61d0fe4235ef", +"T3B1_fr_bitcoin-test_bcash.py::test_attack_change_input": "c16f02d4a2ae162e45e7f23b39267e24a0d94f96e2e6ba767c8a9381fc030418", +"T3B1_fr_bitcoin-test_bcash.py::test_send_bch_change": "081e9b411b50e447072df21c0eb05376f88b139e98d69e39edf12ff4a66d073e", +"T3B1_fr_bitcoin-test_bcash.py::test_send_bch_external_presigned": "bc051497504136f0291c1ed7357856e63c111a7f17fad5333f53613c1dbe1061", +"T3B1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_change": "ca4412cdf98b89ceb6bee99b8630c5c1d41eec7440e74cf667ff8ac116e2226e", +"T3B1_fr_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "46f361c439c4e1a0ac52e4f23f4b0ee8fb3ab4d090491dcb9b6500541f4d9ea0", +"T3B1_fr_bitcoin-test_bcash.py::test_send_bch_nochange": "1707572d5a6234c69b5f9e1dfb57afee100f6bed8313c564b97625a09a1dd57b", +"T3B1_fr_bitcoin-test_bcash.py::test_send_bch_oldaddr": "c39d497d498688c78b1cd2346a6e4995ba8073e5bcb3e5f388ebf2845890ae50", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "119255f7f60642b4f7c76b16a77ab9859bd2826ebd32d28814bfdf6b3bd1acf0", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "19f5fbf6b88f3170e9609e41ada5ccca1e0bf046b5617a2503faf4b47fcbe024", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "649a6ed8ae4ec3ac6bc725af02962ae625d513943039e13628e1db66a4c3598e", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "401be189c0ae379442064db1c42d01c110174a8c90961f1031870529ec05b539", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "d43ba26c9b7f925dcfb0dee40aab055cd5a68fd2d971a1fa63cf66aa21753630", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "5fd14ef6f459fd25855e7e726f6ffac053d14576f2e70bd22b3f2691138c7024", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "54cbd29f28c12dbd93e540dc07412ebb5df788d97cc36efee917f1dcde0c01ce", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "329505dd45030077a8212b73beaab09202d512612425d3000dd7bf90f66c32a2", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "c618fe0ef5ce66c4dc78d50bf17243e89d8a0eab73ab8436f031c2af56f443a9", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "bf97bdf06d5beeefd9b255b1a1e1e71906f1f3663063cb60056be75d0df7e8b2", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "3e3c0fd8907729698959d5b5286442f934a5a3ea07f0c564a91913f6cbae9b15", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "fddf4382f66b861a2b7cd3c0d6f2a46b26f6c7f92f144f2974f8dda6c5ac315d", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "0146cc443e48d3b76f132a1af5dcfdce4c185ecb34d93eaf4c1423189a0db5ce", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "ce304e73fb684c5a79400eb18217d01fdad6ba23f147e462ddb4181c4286f61a", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "27e6fcb6ed7ac293e3fb87645caf19bd9bc2207e8ff49b1fb60f106e461852dd", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "5894160fcb65fd174d3181b231591110040dac6240b4934381dbf44b56352f4a", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "27987ccac177fc89a7e7d73a0f7ad4f6f1eb539fc210998c35230737e9bbaa5b", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "6d604164bd065c46cd2fc3a1260ecf5c7efa32071efdb06ddb5adf994c56f49f", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "119255f7f60642b4f7c76b16a77ab9859bd2826ebd32d28814bfdf6b3bd1acf0", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "19f5fbf6b88f3170e9609e41ada5ccca1e0bf046b5617a2503faf4b47fcbe024", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "649a6ed8ae4ec3ac6bc725af02962ae625d513943039e13628e1db66a4c3598e", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "401be189c0ae379442064db1c42d01c110174a8c90961f1031870529ec05b539", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "d43ba26c9b7f925dcfb0dee40aab055cd5a68fd2d971a1fa63cf66aa21753630", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "5fd14ef6f459fd25855e7e726f6ffac053d14576f2e70bd22b3f2691138c7024", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "54cbd29f28c12dbd93e540dc07412ebb5df788d97cc36efee917f1dcde0c01ce", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "329505dd45030077a8212b73beaab09202d512612425d3000dd7bf90f66c32a2", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "c618fe0ef5ce66c4dc78d50bf17243e89d8a0eab73ab8436f031c2af56f443a9", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "bf97bdf06d5beeefd9b255b1a1e1e71906f1f3663063cb60056be75d0df7e8b2", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "3e3c0fd8907729698959d5b5286442f934a5a3ea07f0c564a91913f6cbae9b15", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "fddf4382f66b861a2b7cd3c0d6f2a46b26f6c7f92f144f2974f8dda6c5ac315d", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "0146cc443e48d3b76f132a1af5dcfdce4c185ecb34d93eaf4c1423189a0db5ce", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "ce304e73fb684c5a79400eb18217d01fdad6ba23f147e462ddb4181c4286f61a", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "27e6fcb6ed7ac293e3fb87645caf19bd9bc2207e8ff49b1fb60f106e461852dd", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "5894160fcb65fd174d3181b231591110040dac6240b4934381dbf44b56352f4a", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "27987ccac177fc89a7e7d73a0f7ad4f6f1eb539fc210998c35230737e9bbaa5b", +"T3B1_fr_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "6d604164bd065c46cd2fc3a1260ecf5c7efa32071efdb06ddb5adf994c56f49f", +"T3B1_fr_bitcoin-test_firo.py::test_spend_lelantus": "5bff336d78c095ee111a7fa28dba425b60d4a016cef167ce3822325cbdb728bb", +"T3B1_fr_bitcoin-test_fujicoin.py::test_send_p2tr": "bbb2f6fd660cd52fbbd5211226f84167758210d0724cd6c5ac8c35197ee5c429", +"T3B1_fr_bitcoin-test_getaddress.py::test_address_mac": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_altcoin_address_mac": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_bch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_bch_multisig": "5eb28208a34b28532e9b5cf10177af727bfd18c30d02eb2d916c76a98519c5d5", +"T3B1_fr_bitcoin-test_getaddress.py::test_btc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_crw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_elements": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_grs": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_invalid_path": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_ltc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_multisig": "533a067f937f69a4bc82c2a9c250e6e219ac02e7944a8dbd604e7d96d229374b", +"T3B1_fr_bitcoin-test_getaddress.py::test_multisig_missing[False]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_multisig_missing[True]": "32adaf10f115bf28f6abe7a0c9520e93cf79fc09dface4c19afecd7c0b0f2f4e", +"T3B1_fr_bitcoin-test_getaddress.py::test_public_ckd": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_tbtc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_tgrs": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress.py::test_unknown_path": "6585d46183cf61d63a52ddb7df8a1697aea7c507268415b257cd9fb00c58ddbe", +"T3B1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit": "1c927715cb2c642912c673ca7d74c3f878125a736bcb8dbb30fd59d491e2800e", +"T3B1_fr_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "5a4cc80f4bcad7b2312d85d71c5bb62c8896d39bd1d6ea2324e44bb35e33d61a", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "c1d7bd2a6313dc4d8158bfadf261861a8e246ec15a0ad700c387afe43880be40", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "933f061e977a3da38294baf3026fa3055cfd27470e525f535ea541cef8ef6388", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "09f3e8f9fdb65947e8d31b35b74dc1e35d0b4d31c7a1ec51f38f19dfb34f0e78", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "225ab6e841d39809ad210222b45223c1fbd8a4d137b3da20384bd0f86d1ac6c9", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "41c861ce046c92cbf5b1d6712fe9ecbc9394bfe7d55cd44bb030af4b2229ecd2", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "f8b8325a8c4dea0603a0b14dec40a32e83992f753aac3f28fb8907619eadfaae", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "1ca0b0f432573a501e297e2dd28908e7eda373551036c6a5cfdc7373c9dadc55", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "b7575e86a3a87592e9c162d2170e8a3db164e113c67cb0b1e7e3422af8ad7897", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "f922234633a01443046bdcc7fd45a18a705794e8423e5a6aaf3d03e51787efa0", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "59549a3890e4fab0688369434413c4498aafe4620ef3c9a7403abb766539de01", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "7565c03cea6608f11f532bf13e461c58e2a7a45031c5bda1551b23bfdec824e4", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "7646fe0bee79c926b82939736389ba4fe17b4c33ae313cc319054cb94e9dcf0f", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "69fa275598d4f1a60cabeee51acf24aa84b72357efd17e3334f60ccc26462816", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "d46398f011962ef58a13d2ebe175a7b31868c9e2b6ecad7c33318eddf4effcc2", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f7e3edbab630e98a73fbbcc266cd271c9cd935d18a7ca70a17987cc0ec9eb359", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "ffde4cab099380af1f4668d485ca0917fcc0d805b3f2d17cb99e784a23b0c82a", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "70fd1b9fbddbbea31659ea5f6d7f8353c5cbcfd624d7dd5872858df08a88d2a2", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "09c45b7e27b2b1be279d96f20ca49de3b413e57c8ff45f23bd07f126120a4c7a", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "0aebc668a6373314d183905b60f265d95c455b03996c47a109045315196902bf", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_15": "c19839a6fc59409b5eea68833528bd8b534fbd5f5555a934f5a0eb920dcd2fe8", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_3": "90b2115d532404d5e112390e45d5f1bbc83591faea3a38df874ed197f929475b", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "e1b228f76cda714318d1cc094689a82c7536c68f3df7a9304ac11659679aea81", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "e1b228f76cda714318d1cc094689a82c7536c68f3df7a9304ac11659679aea81", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "173965f9dc366768bbb1b872941d0718ef428564fb2a19ffad9bf80806fc7cc2", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "fbab9a8675c6fa476ed7503d5acf469e46a8d64387fbffe1ab0950ee1d7c098d", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "cb81eabbd761257c4b11eba444eec26687fe321987f826346c9e8d53ecdcf185", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "fa5b7137eeffb743bed1ce7cab4f54c6cfe967b5aa07610b49dbfec63adeaec4", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "3146c0ea2360ad96dd37632481e99f96dc6013dd68ec7142dd63e38f96948a8d", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "925b7abc2d7292439e90227a3fd39eec3438bd062a3a9fd5281c866ba77a8c5d", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "c58ca4732915138ec37ba16010015d5492484145fcbc8a17bced91faa293dff5", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "3d8251ff82d14b69158762079a74f7cab9f938f26326d3fe4d795460bf4c864c", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "fc6f5e308699c9028eec9a02d7ea008be435a186ad600bdcd066a7ca14144a94", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "3b993f7d6179fedc227944b774dbff998e24beda05a27bd3b4b74f37627d703a", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "9e8226205a782516cfad62d9b03b0c7aa78f99f1d63556c30be70fccc2c8f716", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "3b57f90426a40087be7186e632f443e4215f13c24f7f8dfa7ff2c26a5ea0c735", +"T3B1_fr_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "f1ff7466aa337a03c52066fb83fb0445bc0325eea23a957e9ccb20f942314d8b", +"T3B1_fr_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "809b0cf9e3b88f6fef2f8a05b20a3ccf7e47e1298f463d7e4003c0038723a4e4", +"T3B1_fr_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "19f5fbf6b88f3170e9609e41ada5ccca1e0bf046b5617a2503faf4b47fcbe024", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "2ab2011650e01c0828a18cc5da2123dc6d7c271ab8028f2162de84499f310f52", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "6273a694621d13a36ff3e1cf77ce2709df27c0f3a4c5379f75c9e282da4d1ebe", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "279ff2abb327a07dd5274d1a87f9558a6aff257a315dc5c4e1d42be93f7c522b", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "c39854bf909e36ac3112bd50ffc8ea04e672814f6cd0973258a797d630b3021d", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "2034a09f3cf49ea6387d7ff213d918b5795ddff1d41ecc1cf6b7af7301f76a76", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "0082bb2937f36b6f04fe0b024904868ade1ffdd53d9883ea6c2ca2b7a2561f1e", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "ab9d83e534a2d614af8429bf31d2506179e39cf95546153af3e3eceb753ec51b", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "68a7054a154df138eac1000906fb6a2993c285dd52162485a10cfc7153aaedb8", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "3e3c0fd8907729698959d5b5286442f934a5a3ea07f0c564a91913f6cbae9b15", +"T3B1_fr_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "a1c862369ba4a7ce8f9182062986bd007455da3a273289addc5d32eb2dcc193a", +"T3B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey.py::test_slip25_path": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_grs.py::test_legacy": "25c5831771dd52d8d58d9e0a48df5da626bf5dc27f2c2a57f08466c6d2957880", +"T3B1_fr_bitcoin-test_grs.py::test_legacy_change": "a84b409f32e2fa73b1bc2ec218cbc162341e8ab084aee40fd374d01ddc8cce9e", +"T3B1_fr_bitcoin-test_grs.py::test_send_p2tr": "64c5a61fbfe4e5641417abc2eb39664fac15e671513cf55d364c3619972451fa", +"T3B1_fr_bitcoin-test_grs.py::test_send_segwit_native": "398a6995ad1fd98485e803491672e72341cc3d332b77722fd9a40590dd74f578", +"T3B1_fr_bitcoin-test_grs.py::test_send_segwit_native_change": "ce236bc31133c4c2e3aba4507d1926ce695faf8d0fd2fd1c1ed3b67992e8988a", +"T3B1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh": "688cd85849ec2b4a53bd25b29a62f8037a8af640d3db55cd91c5e0b0543b93a1", +"T3B1_fr_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1d445d723977544e89fab37a74193afdf9c3a98f132045f8e2bf4e6117af3bd4", +"T3B1_fr_bitcoin-test_komodo.py::test_one_one_fee_sapling": "b538109ac41b552bcf137eb1af33578c5d481a212763b0ff1e55053300e63257", +"T3B1_fr_bitcoin-test_komodo.py::test_one_one_rewards_claim": "1b3290c393d296833a336a0956eb3f8daa0865ef842f66b383ef04c91c669cd9", +"T3B1_fr_bitcoin-test_multisig.py::test_15_of_15": "50f18aff2066872291af9b60025022c743aa718aa24888dc551773fea808e9b0", +"T3B1_fr_bitcoin-test_multisig.py::test_2_of_3[False]": "d5de110b06dff47bc52b30ab865ba9124999cc2440919b3e09aa829ad4ec7ca8", +"T3B1_fr_bitcoin-test_multisig.py::test_2_of_3[True]": "db843f7fc2ba1e1fa3a00bd87525d9956dd299b85199ec08cd3551ce86f0c0e0", +"T3B1_fr_bitcoin-test_multisig.py::test_attack_change_input": "0cd344ecd18c2aa5ae1b2739102440a621949d926ada7d0ee75ae430b30d29b7", +"T3B1_fr_bitcoin-test_multisig.py::test_missing_pubkey": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_multisig_change.py::test_external_external": "3567bc9c8c8e77d10b8417a49ef8b16814509e66a887c748fe284833b753527f", +"T3B1_fr_bitcoin-test_multisig_change.py::test_external_internal": "513f69583dcf1436a8f7ad5a1fc1fe134e7b988ceb51016b9ff885971bef68b9", +"T3B1_fr_bitcoin-test_multisig_change.py::test_internal_external": "fbfc03c57662dab181fea854bd76ae6ddfce3d17667c439ac4e70c4b32f5c208", +"T3B1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "3b6945b6cef7a17eb93db3ab0a06123c66f6f3f7f1efce06dfc25996b41b4fb5", +"T3B1_fr_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "51c5d0b42d4386869fb9980f6dc55a2a6c4f19b205f8979342e6a082325f64c8", +"T3B1_fr_bitcoin-test_multisig_change.py::test_multisig_external_external": "ab539024de45f870e92452bd7d28ee107169e6a841c5b636ff87aeea47cbb731", +"T3B1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "33893ad8e5493f7c4b51bc78f5429dc6ec1d32bfce49e5fb6e10db32a72b2373", +"T3B1_fr_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "334f4cb154e8a0c3635c2cc8df971e84a97ccea6cd262ee082030ff8e77e3562", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "9d1be7abd05badec5b27483b3dd61587eca7028cf18b787b993f139f762b1a33", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "a160863d1772c45283094b1b9330a9c8a55956970fd59bf624d6bd4373ef1003", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "56dd4e417fa6a88ee16379aab932b9fe056af8a47ad8857dea10f8a01cc1ab2f", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "687f85ab1ce3c2c5a1685cf44454d0844c67300517ef88168898956d15a95a86", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "82c6cfd5c72cbd74660e1d4b31350c7f93e98afebe13917191b6d7b6c4e9beb5", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "6616dfad23dac1adc0a47b92c79c244e5668108f429fe45a8aa53f90f51606a3", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "8e53e80b4f944da588b280cd3b71074ca46dfdf2f8c2c46b5613748519efef11", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "79c6a48d05e25ee1c0fd6ee73a4f1c53408fac96289db536276128a2e8ea609e", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "d45838675caada0c043c9cfef14e77138d09134f8a6637b28238ed2aa1468621", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "a0766df652809682491473892ff2db8623631e553d2b1eaf10a0fadea06b660d", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "252d3de776067f60284b05e5d400d986c254e5d65018f7987612dbdf60332e3f", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "df60c29d18bf74f3a7ea7e9091130e42567c74671eb90d77cb5ad50a02bb3657", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "be98bbe03d490c97fe5a85af1a0788f49fc3ca34057a9740b5ee43fa251679e1", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "5b031e7ad8fe91e1d3763f208597b07d6bb88a4a791ab4002f99ed57b0698035", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "5ac0598862a02d6b912c27e0bd65b147be8900eeb8e1e11e0cb0f106e0384439", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "c04d50b71fab71994e107109b3a2c7337d230dc0a538a939b31cdfc1c317931c", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "190b406accff3a66ee5330290dd170891aec1cc23f802263a49cfd7735bfbd64", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "9e3ef6e7e2eefbbaa77cc0f808e02820df9be86ebac2c365cf6267400616e8a4", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "b4bbe23da5d2d84596d57d73723d23cca589a7c02ab604fa44b2049328c219f5", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "4ad8015049a4c878283b3502e867480d0ee6b08359dd5053549cd7d1086bf641", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "05a42ac5c8d1cc3d8d4b0db38ac36acfba502fb2ba273b4538a7888a69fe2130", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "94654486c5cb97c24981be10960578bcedd4da216dcf71d652631b1184d050de", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "18751193860f6cfbbd1956477ab8cfa388c36d37eeccd23b7feebd975457278d", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "1813aa86ba247c792b95b669369784262576d5407c77348f553c8804fda573f0", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "fb3c7db16fe3cb661d12961ed63d81446a2a498c5405805afc94450a55c1090f", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "fd7caf4e7f17f029126d95103894f514322541e843d4db5dd4677afc909ab1b8", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "c36e8682d9f31c92b61f38d7afbef7b8bad55e05744a87230966e9b50338a90e", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "daa62d476dc095e77f0d566762b51954d4fbc06fb2b94e5d859bd791f9848bc2", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "baa398f045650e4d6dd7b6515bc7f16f3dd3b9fe8c5eba54f5154cc293a1dc77", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "4544cb7b64d05ffe3b3c32b47e5caefe79694e5d97a345d77cdc2f1efdce7073", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "2e813ad3d6d9ac9a93db95735ed891d898e15beb6f09495079d14c4ca708f0d6", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "afcd36de08e142cb6f8ad8d508fcc3c68da038a436392f5481df903cd5ef65c7", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "ccc83fe601401d1f09714fd80908bfad53ab0f8b50f62d8fd83ba5c26873f162", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "4d50c8e5cf3cab9f523b3b09d8211c0e12c2c0596efe45a3a6d543240aa42d88", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "56f9d74b436926b7f057fd138f80feff7e373c18c6141cc9ecdc19a0046579f4", +"T3B1_fr_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "0013acddf9345518a5a2a223417d79323c0e0f71ad18d4099a237dbd329f7f4c", +"T3B1_fr_bitcoin-test_op_return.py::test_nonzero_opreturn": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_op_return.py::test_opreturn": "c3d60677d7aa4b967e012f74820025d9f63e03ef46de7abca1fc186cd9babe11", +"T3B1_fr_bitcoin-test_op_return.py::test_opreturn_address": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_peercoin.py::test_timestamp_included": "641d1f7cec132483b96d945fe7eec72a8b048c2f54c1d9364f26d11c1d8e45c7", +"T3B1_fr_bitcoin-test_peercoin.py::test_timestamp_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "55cf183477b3cbfd6f046999b11ea4dfd297af35d52fa1e3ac8479c07f0f4697", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "42fe1db0bd18aa3fa10c06c160593131ea2915f8df7ee5a851dcb08202c4a6e8", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "42fe1db0bd18aa3fa10c06c160593131ea2915f8df7ee5a851dcb08202c4a6e8", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[bcash]": "1dc35d5bce920222832eb18621e5612cc5d0cb4c3e76ac10cc04325e23603163", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "f9b03dc650ef3ed84700d487887d63d4a933c1f8e9d8bf3da5865473eeb9adbe", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "9ec78ee19b9a9be27bb42a34ab2c30f91dd58537884327a957ef1f2411f93da0", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "498188f371565c37296b1f5a3ff3cac6ffe88713c9d6ce1a43bfe038e5367d5d", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "c0f800ee6692d2460065a40cf48d5e06a669e9a56cce136743b9a519d6d03dac", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "fa268c0e978de23f68e1619b2453a2091bf4c069009585cac9c2cdc16198aac9", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "fa268c0e978de23f68e1619b2453a2091bf4c069009585cac9c2cdc16198aac9", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ccfe193624c2f922b2a7816499f2d0729d9188db11ef23db0b2b7cc886765cfe", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "a220cde24f78b87dc108a1995ed40b2a51d99e418a98fb352ae312314d075a6e", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "bd9dd56c2ae2a5ad8d387c25fc56ae53e9f8165d4bf2e2ed7f1a60b3b9f37b28", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "bd9dd56c2ae2a5ad8d387c25fc56ae53e9f8165d4bf2e2ed7f1a60b3b9f37b28", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "e286db43e13991d33074456061d792627e74d8e24188a0e49dcfe1abee29cc94", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "5b4b0455c76293f48634d7d101652334f4f80a81f23b71bbfa0df2a97b5e7069", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "6f8f8946fc6c38261177480c00a1369f1343dbc2745a0ed6ddbabc37f6794b02", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "6f8f8946fc6c38261177480c00a1369f1343dbc2745a0ed6ddbabc37f6794b02", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "05405ce086110a14193cb92cb054214394ebd5025c88acc3e76e9ebab12f9803", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "de43a61d0f6a444056e8d766041f331fc5e2d67faca999d3abec06385cb2d932", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "c83ed354cc1d1ead6c43ea0c1af078545a8e3fe3a872696bef10e719154e5862", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "4e3cd9af85cfc6a633d54d482e6ad66b072ce7bb2a70f5958063307c94b21ff9", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "ab1f2a705e9a7eb9774555ec52d71117203dc9f34ba9fd2202b244a1bf696623", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "1272191fc819cb5024bee158c552d323eaf8871355c1f7319fbafc0f2405d1ce", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "5b1e6158abf213c56d0966fce3cf93a34dd999e1b19356d5b0785f8c889bc196", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "6e1fee75b60f7ef87db5d1eb825de35933ff8cf95a08b016ad5d8396d8ab6770", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "879a80464aa1b54a9fedf9d9b88645e0edb4d6472007753cf360ac6efea8e81c", +"T3B1_fr_bitcoin-test_signmessage.py::test_signmessage_path_warning": "9684e506d9f459b153794637d46d31b46f5fdc5131d8fab8120160ae647c357b", +"T3B1_fr_bitcoin-test_signtx.py::test_attack_change_input_address": "a63183867d2c0bc7ce8d88cb8a70f91b0e6f4b644ed256d08d4445a28f645560", +"T3B1_fr_bitcoin-test_signtx.py::test_attack_change_outputs": "d1f84f8048ebfe3e0f6e718dccf4483a7d30e6133be7bbc97b16019853e36256", +"T3B1_fr_bitcoin-test_signtx.py::test_attack_modify_change_address": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", +"T3B1_fr_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", +"T3B1_fr_bitcoin-test_signtx.py::test_fee_high_hardfail": "a2e258a68df1090954a4bfefcbe3842b9ba68a335312862dd04bb9ef5e128c89", +"T3B1_fr_bitcoin-test_signtx.py::test_fee_high_warning": "129cb9e232a567735e733b457306901e7335f8a4e2f37c46f766bc3cf2f4df4b", +"T3B1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx.py::test_information": "4425c963cf13d2b4171dc5abe8e481421cc7dd4e4361413ab8fa1c928988dd6e", +"T3B1_fr_bitcoin-test_signtx.py::test_information_cancel": "7789b5fd3f4ebfc8f4a558ffe5cec9d8c1db0e5766175db2c811fc1c951d1c5c", +"T3B1_fr_bitcoin-test_signtx.py::test_information_mixed": "a6d4af1386d42948d559e31e8543b2a4843a3d346aca2cc7eaa43b0a6feaacae", +"T3B1_fr_bitcoin-test_signtx.py::test_information_replacement": "f1ab90318e20f64bacf21e903f5d845e6fe2806d9b643201b96a0905edc2722e", +"T3B1_fr_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "1f1f5859147667c31fd4588aac55f67499c4b919fdb00198ee4b8bb11dd35e59", +"T3B1_fr_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "1af2d7966d2a611b5a33bb35cbef0fc474009e4f5080171f008a0e3c5b06e9d0", +"T3B1_fr_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "3f52fcc5d043b548da4ff6e933462042c8276d5fc312aafadc379284fce36c77", +"T3B1_fr_bitcoin-test_signtx.py::test_lock_time_blockheight": "666ef328c6fa58f1f3749b206ff638aeb0f68599e46bf14fc9182f9fed4fa36b", +"T3B1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "1d17fd06b444902301ec2b45bbc2d6ec03e63e6ba0f2ebc398bd1405b4f73cf2", +"T3B1_fr_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "c9026b0b2504f42b9f1dba444aa3c8cdc0d1499ae731c5a3f8c9573a911212d8", +"T3B1_fr_bitcoin-test_signtx.py::test_lots_of_change": "02feb00512573e35aa6c0515f7a97083a832c36b09e297eae5503242ea84dece", +"T3B1_fr_bitcoin-test_signtx.py::test_lots_of_inputs": "37335f9684caa9346ca34f7c45704dbbbaa1f8af0c818f63dda62bb9ce322547", +"T3B1_fr_bitcoin-test_signtx.py::test_lots_of_outputs": "692bcb7f41a2c41a80d62af8c02ed44e3f7b99de9e1d00ae435f46cbf91f6700", +"T3B1_fr_bitcoin-test_signtx.py::test_not_enough_funds": "602895f0d3328dea7337d01a728aab462104c5672b2f1a7215d85f9dd21d00c3", +"T3B1_fr_bitcoin-test_signtx.py::test_not_enough_vouts": "d6c83a38659f5fb26cbdac10ecbc80255dc6c2edb52b6107ba1f9e73d0f1cd43", +"T3B1_fr_bitcoin-test_signtx.py::test_one_one_fee": "49c28681340981781dae630a4916cc30553804f2b595ee3b1fe9f35c18a00454", +"T3B1_fr_bitcoin-test_signtx.py::test_one_three_fee[False]": "acbe9d8647df06f78248c85b30763255f2ffd21d7467e8f880dc0c5127bd6ff7", +"T3B1_fr_bitcoin-test_signtx.py::test_one_three_fee[True]": "52659588016614b30cfc4975500403efa782a1ac85fb0294aedfd35cf535d41d", +"T3B1_fr_bitcoin-test_signtx.py::test_one_two_fee": "b54ac3f5bacb02a669abe3b23a4b8989492999c2c8724bb0d309b50bcbd2e267", +"T3B1_fr_bitcoin-test_signtx.py::test_p2sh": "f5665847b3d5e61b18ca2b8d2e0b3ddf7e0ec983833e0794070bbbc3786c00da", +"T3B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", +"T3B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", +"T3B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", +"T3B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", +"T3B1_fr_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "a06717f6c3a9cb8f2d055ab2bc5f8b2d1c2a9c3f50823fc1627195bc5c44a6cb", +"T3B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_signtx.py::test_spend_coinbase": "0d130ba66ccb009be7600c875938f74ccd9efec046b15a9b0e6298890394fc74", +"T3B1_fr_bitcoin-test_signtx.py::test_testnet_big_amount": "ea34e6dc0e5d2fb82a1ebc5b91948f7fe0494874b1eccb900ebfb6db581eace3", +"T3B1_fr_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "5e7e97c61bee5f04a0f8ee65f9f789aab73dfe518a49ce6cac7769d0592083bc", +"T3B1_fr_bitcoin-test_signtx.py::test_testnet_one_two_fee": "335b76e68c1b67dfb59af7a09ecb529355711b9e9630e57e69b819fc1dea193f", +"T3B1_fr_bitcoin-test_signtx.py::test_two_changes": "0a7b93ae4c6f3833a205474231d430fb7d7f00a7c2ea946d657fbe99167fe115", +"T3B1_fr_bitcoin-test_signtx.py::test_two_two": "a4b980219ad39f792aa596ca00feb363294e8d178077c6d7fbf6e0f4841ae9be", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "49c28681340981781dae630a4916cc30553804f2b595ee3b1fe9f35c18a00454", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "fc99198a675245578d79f22a3450e4ef5a9dcee607b75c4334736ebd9bb02fb1", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "32291b829b4a48c49de3707f1f4b24d2f60a5abee0b6f9da4fa74fc4992b50c3", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "735b5668bb4a19c0ef5a4ac6f56156aaf70ecc8a17f93db91a9b1c0621ae9ee5", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "49c28681340981781dae630a4916cc30553804f2b595ee3b1fe9f35c18a00454", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8b40da413e981cf2f38c21cd93c53d24f049d7abe8a7c67610d903636fa15bc0", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "206627d9a9e1154be87ed2e5050b881a51027da52f93d47c5f6bdc2b0161b99b", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "f4704fba0adbb980b311833ab63bf9b00f9200b660d73dec275ae5e97886f9a8", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "b96e1730ab3510aa20ae27458b563e5f0fa32bba1b39ac40a7bc08c4f685d0eb", +"T3B1_fr_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8b40da413e981cf2f38c21cd93c53d24f049d7abe8a7c67610d903636fa15bc0", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "308f67efe059017095eb8bb0d76101297e7c76761027a4fad5b3b8af2f6f1717", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "b9204eb93310d5fd0696813a6020adc66ecc1c682452bf624a3a44bce1d90795", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "ec6cd6d81f98ea8ffd79ce9ef5dfcd2187bb1beabd54a0d9a1b0325f05bb3aa0", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "f5d8053c8747c77aee89aada9fae957a7f1a1af80c78106b4a010db2d3903c63", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "2afeec8aba0da63e1ed0c69d6c79a3bbd47804f59b972233212c71c925602d6d", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "13631edc64fa125a0ace65e71a08e8fbf6a2b6eaf1293ab510943d957b63431e", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "48c99481a00d460e98294f8fb418d9956b8e40bc2247bc85cf1fb6183e3d2ba9", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "e5221650e40dc88dfc52d30eaf4b44520afc29608b83e986bcfa246531f0430e", +"T3B1_fr_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "ec55c7a21f2fe8e04726dc699a11c34f29ce203a0e0b580749a005ee3394cf2a", +"T3B1_fr_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "c8be255333c49fc92ad6f9543635a09435c9be8d57152b9c28bec6f1a72635df", +"T3B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "d9a3acfb6cec3ba5068b75cbdec65853cbacf82bf45d2c4eff0d7d2191fa3dce", +"T3B1_fr_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "a68d31f7fb79b7b751c053e2f09b50d80b8086b1b705fe7203f38762dd3c02f6", +"T3B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "2e83c5391f2c3e2852b4653a1976a67ba105d2b25ebf285270381332cd1a5bf3", +"T3B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "9000e945ef344eb29edf1c1238bfb263f7467d637474a2955e08e4e3a9c671eb", +"T3B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "2e83c5391f2c3e2852b4653a1976a67ba105d2b25ebf285270381332cd1a5bf3", +"T3B1_fr_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "98f58bb2676c8d245fab40a70e1b01529c36fafd6ad8d764780e47498f7b0e3f", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "a6a32245adfc684ee2a95cf22a35406100b4920e81793322d95711dfef9bbcfd", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "ebdfe951fbcca236eceda840f2ede42faab476170d56d135b824eb6c38833f4f", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "11d71730656946e534ab006c5748e1604f588a4bfa045723a24f9357d8bd6c02", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "1fa29da0597c1a0ae4ca63f667edd67465697ddbcb005db946e9e790d7fe72fa", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "6c3855c6695490323b5790e2b6716f84b9aca3a8564adee3e26c6ae0fda37ecb", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "e731b582a4ef69f838a25efa56997f38114e68debda464f2d9ad20546d3e5eb0", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "76715c0296e7a479d616ca3a0da0f84aa7b85635218ad36e5cca284325b93376", +"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "14ec0b3f3f2b4f2012dbc4a33bc3d8cb03a3a6e9961a697e971377f71a234c60", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", +"T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "c1049dbb9f64d4deda0d010990d235ca227f004f121458d25e33cf80e24f4a7e", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "68042cd78a01ece9f3e91a0988e954d9a5a0f9e080ce5a0688f60c31ef6777fc", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "47471a017db9c29dcf3739f620c7447fc6a2f4c2e29d6e2017fa5d98d96959ff", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "8923e8da21474dd751747674a1f5728c1295ab90e9c61c0a4ed83271b8478f0d", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "8923e8da21474dd751747674a1f5728c1295ab90e9c61c0a4ed83271b8478f0d", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "63bb3a24729684da7e9cfcc28b96e880928d24a6a7a3cda9e431c35f778b1d79", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "958e655304c1954c66c8f0f89a0aa282e81edb933b650c11e865ef6c9987aff1", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "4b450b2fcaf83cf16afb0a910c4a179ec42e4dee84f3965b038a0d2c52139f2e", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "63bb3a24729684da7e9cfcc28b96e880928d24a6a7a3cda9e431c35f778b1d79", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "25ff3293edef3ecc71586dfc0442d4967a580c63d5b2283ec0513aa08adb90b3", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "84c448e547e61ed4cc095d22186773a2051bdb54a51d233a4ba002f6d86465af", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "73ffe0b08deb8fa2444a75b8dad1c23656c27a12c9e7f9dfe3e199c548f6ebd7", +"T3B1_fr_bitcoin-test_signtx_replacement.py::test_tx_meld": "740c7734a0ea42378e98400e202cb4fefd56d2340b624df539c1394134d8f0d7", +"T3B1_fr_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "201da7b3a1e244f817da173ab2774f4a65199c5134e34f8ce5582b8346bca6a0", +"T3B1_fr_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "d8980c1edc3c6de2bb0b7f25402364a9ea0c89e0c7a1c30f09a809ed601f2e7a", +"T3B1_fr_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "601c5f80e66cf2b627052c94f03d97e5a82e9a3da6f6948c3387835fe8feef76", +"T3B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "ac38703e1b0f7585fdffd86a993031c540117f1695f4d5d445ceb1b8e86c74aa", +"T3B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "d27fa6ff71c983955f6b34e9fcd2196f471938fd62c41caf99d8d06fc5badb2e", +"T3B1_fr_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "642c5ce0552779659c781140e1f16c48b87a674224660ecff7bb4ab836f9b4f7", +"T3B1_fr_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "5f85a8450ce4554546d252609fd9acef8854650f446daa214ddc509c94d4c877", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "7a5e099a5a45a69cc7f5db73895b802239e86da3eba642e4358674ba3ce66414", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_both": "cdf2047ac1962e93faab1e3e5f40173a7b816d6a57095eca20f3a44cfb5b939e", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "f1a609b6370c1e048c842cba3c119d698261e6a6e139ad778ec50c8b91761f75", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "1f5219431526b12cede1c2e40ee541f69a47b85302e117be0da2cf6a109beb47", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "986e59dfbb4e136199bf152d11e9206cfd589dbec6e57abdaf0f49a154cc0cce", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e84aa55e6903eb94f47e86221a5088e532d3f8ba6db861879b5e754f950cc59f", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native": "8b40da413e981cf2f38c21cd93c53d24f049d7abe8a7c67610d903636fa15bc0", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "75da8a98ed15b08b387400be0e6fb6de6c543219e69920889eec9625b96a4549", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "0a13802d1e75dc0d5e214b538aecc5afe86225822e0965a09ca59adb7fe6f033", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "07fe597d023287b21b46c0851312ae3792e31bd4297053744e7da3719146d394", +"T3B1_fr_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "a27a9cb01fd49837bed5e63b60b1d78140468e5f3d403b624dea8f09aaef7aee", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_attack_script_type": "17b4923be8a3f7c67738ae88bdb5111b67f1fafc55d034b38f73e1da43f18a02", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_send_mixed": "8ac0b902bf5a4402c2d8d85507171ba2c68b1c91f683d55675eebf4d1beb8922", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "6648ea1328f71a4183d9edcb3a1bc43eb7a617d0d8cdc5c02148c20a71921bf6", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "64689abd15ecbb721181e87a4f68cfbfd603d115afaa7d7308c60de3d9227443", +"T3B1_fr_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "c6a7658cbacd03ac07df7ac54c9884b4abfbd08beb6cec1dc34c185e289cceb7", +"T3B1_fr_bitcoin-test_verifymessage.py::test_message_grs": "b2bc1d7c2bec6930266e7220bd243cd70d4f69131908c4ce64c974d2c9976176", +"T3B1_fr_bitcoin-test_verifymessage.py::test_message_long": "d143f4e524bbd0a8e554f16852327db914804ac4c1d31aa7fbd14d2975a65e5a", +"T3B1_fr_bitcoin-test_verifymessage.py::test_message_testnet": "5fa2a1d5f1ad7fdad0027d0bda2cc0c9f809c007366c8f63e38c96016cb3efa8", +"T3B1_fr_bitcoin-test_verifymessage.py::test_message_verify": "28fc388eed8ba22f39e1873863d192b786d233983aca6e4dda5a6bb8a97ceaf0", +"T3B1_fr_bitcoin-test_verifymessage.py::test_message_verify_bcash": "9e886b4ccbcda617dd6f13c14fbdbb56f7253e175f7007e9a4a20e200623ac79", +"T3B1_fr_bitcoin-test_verifymessage.py::test_verify_bitcoind": "7767ac9271f984fa81e8caf133c67391bcc62f10bd5b4ac317758778a7f25ec0", +"T3B1_fr_bitcoin-test_verifymessage.py::test_verify_utf": "8532a163e0ef088e287ce7e09ec1512ec2b465d09657c02fccdff067261852cb", +"T3B1_fr_bitcoin-test_verifymessage_segwit.py::test_message_long": "2b2eb98f97b24cd7038dfa11f7ed96b7b23dab6ae9b31964aed5a38042c84a9b", +"T3B1_fr_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "c0c23d080b2fb89a57a2d83e99e9c2c03eb9636a7fc9fa6f30df2eae197d9df7", +"T3B1_fr_bitcoin-test_verifymessage_segwit.py::test_message_verify": "8bdd812c26e30b2e9225b5f9b15ede4a08885cb226e53bffd84ab7c29dc1b77a", +"T3B1_fr_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "2252f9d9780c338bbdfdc17c33b7b80f382108c72828a6a2f80b25af271572ae", +"T3B1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "0be6d9fcfca5ce6c6583c2a99cd56eaaff842931c0e4555f119936e00f7a5fda", +"T3B1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "a14adc8ec645ab3173e0c60f6b3e522621c9e4e9ce707f24bd9795879ffc46a5", +"T3B1_fr_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "add1c6e33feb84b92eae25b27a804c69927e785c99899accf68a3c35085d98e2", +"T3B1_fr_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "31dd6c76e2473cfe88199d3d8f000c053035e33b90635c6d4158645d72687185", +"T3B1_fr_bitcoin-test_zcash.py::test_external_presigned": "1107376b8d9221aa0f441b9ff5beb17f1245df1f8f35207bdead0f8e8eeab4d2", +"T3B1_fr_bitcoin-test_zcash.py::test_one_one_fee_sapling": "95076c73def1559443cff3ccb598bbee03cb2af8b024a59ae4aaa1c517cc9588", +"T3B1_fr_bitcoin-test_zcash.py::test_spend_old_versions": "70181f66ee0af03afd62cbbdd16a5f3edb2b39186f7713aec42fb2037f372999", +"T3B1_fr_bitcoin-test_zcash.py::test_v3_not_supported": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_bitcoin-test_zcash.py::test_version_group_id_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "da60bd3d00b5b0c3ea41834ee55e5707639ac375e3ff48c3a0c458ab0ee14ba0", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "4d960c8fb25ca7faea888ac18aaccded7ef9cca5bac31f55ec80433827af3228", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "9afd57dda298198f84af1f927c2001ac654a9b510b1f3e6394bc9632a6e73358", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "91e57cbcbe0090b502a9a4c6b92bf3d78e7c679a62417cbba4175cb4d18850e4", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "fabd30e3c20680bb8afd2fea71db37c87cf08ae7d5b55e5813f89e2767aee7e1", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "befa69419b5f2c6a1fb0d81838fa0a783c216cd5bfabfa71d6849ec887e5e201", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "5517cc37ac1da6f0ffcdeaafc2cf88f9590f8e5de370be8b219535e01c08135b", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "04d50f562f60113c3803ba3c0d99ecb79c3fcea1ec8a1067b9b3ecb54ebb9652", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "f89db0a766f253ab425751742af0ecfa814a3a264f254ed2db86f32b3ff4c37b", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ff0b70b6e69e6b5422e8afee397566cdc92ae583171532fc25b5ff359b2bb4a8", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "414b10b27ef60e4a36f628c325887d86907194283d8251e8458eb438cfa5b729", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "831d74fcce3d0ea82823568b088b81ca90659029decc7e231411e1aa54404f1b", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "11247373b0b43d3a972b04a3981ef3be2a31f775b98ef1af082fe6b6b37ddea6", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "d8b38404e8446360bae3c74bdf35bdc6e3af5fdbe4b2a0bcefd5640b0d07c2a2", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ed5566fc3941012bf1e0377008646de4ce41055172587365931c71c6933848ee", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "8ef9fcc796a11c9d569af552cf013e00b31c623e4d0f9371bbbe1e0944bd736f", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "f302210253d20e8f61d6825c3e0eedebfffb5e968284f31a3ab4a679ec70498b", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "22548aebb8a83b1584aa80bd3b107caf3a3b1facc5a7f97eb937aeddaaaedee3", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "86e849139da4f4848bb48e6ca2ef7c3bf6aad9b57f5d5e28ba50ae07a1a56e8e", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "e83f13963727c04eafc9ff6738f72611511862488d94179f7e00ad4e2d3f8d99", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "5aeef4aafd2814106b846ad9a8be3d438b9831fddae6f4d0fae5dfb89ee06d50", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "5399da3145594675c9b700b95dcf25db217ff1da868b4901f7425c91415b571d", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "0361137998c82328b15ac5328e19da1c3dfb1baf648fbe64dbeb6a9814628c24", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "3108aea589454bbe9ad655d770838081e521151b68ee94e2c6b57179a22768b0", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "b57a3823df63daa6f16e48e6921c07400038b6f58bee5f03c76dbbf06628535c", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "bc41d3e857b9d49dcf6937015f37af59e45f94d58071de57e6c83398706b2bf9", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "b908c24f4806e326b30308531b70a867559ae5c95dec7472d9bcaadae37a7d4f", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "5b308c10f59bafd4e1aebde0a837aabd49efb790a6df51fe87fbb563c2a9c6ac", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "450cbcc103d725fe9f2a7b126ce1b52c1c8ca82497be8d189dafd85b1f7388c2", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "9061014c02729725262bdf15512764d0b821d828e00ac0d4068a4324237bac09", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "fd5798bb727baf025c3d2fae5ba4f8cda13b24b8c94b717713e5681bc1f5d7c4", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "7c93b8c052a8ae17f0dd0222745b8f9658575568d45967db960f69b5d476976a", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "ef724f9f59bb56a619928ea07d1dd2a64c2b0080553f1934b1a7afdcaf728a28", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "4f9b061285820e0ccfad3c00636576fee92fa7ac88f3ebe12ceb4ee51c3162ef", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "3c60baa9caea69387e92169e4b5d51b75c418719383aa82c0d4bf14464b51b35", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "5fd802f7689488b34577429cb6d8c1d099e034dc675d2a10e2f1a450088766e1", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "efbe5e3e4ef1cb2de392295d649f3da88801b98621b70a7d0ab224020ea80779", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "d49551188556bd49a853596faaf11ecae2cb253c2610a40225ebaee3329bba1f", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "31437cabfe69d7e998e103b993975ba4c980ad1536859c23c1c6254d2d065a8e", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "365f4c7ba0ce27fbe3b42e336b5f7af1edfe1de16b0f2e964d59a406e4140ad5", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "ee9fdd2effefcb92df1ac90a07706282b8f1fdbef3bb006c8c49af730e0db204", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "ac09fb4484c38b164a54664137a278a2f978cfddd5df977ee0d147d385dcb66f", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "00e92c80230b40fce9277554206a2685036248a1f15462ad016acd77df805fbe", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "9d14745f5b58f3438c24ec3b3cc6ced879f4bd7eed9cecd32c768faba58a48d1", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "37598626b1ce9caa0318626a252678bb2683fad0e965cdcd30646cff4d288276", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "5b8b526f693f2e16fe900675772980f9e915fd77fe32c4eb92e8304f54215e22", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "d17b4176399dd83dedff60ef2bba3a083b7633f7e3863074bcbbf8b47d14b0df", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "e0e37e8e61e5c4dc2a9099fc8dbcd0a63f3128fbe103da76b4b788be0599bce6", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "20d68143d4d30f3bfcbcc1814cc3a7cf63e96088df630cfe3d6d1ebcaad17826", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "ffc722eb1b2b24f083be3878af89ee6146d7ed993d6acc4095dc49adf7db77ab", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "43a27a72933fcf9efb9da5fea6755e7198acad1fa6792aadeaae0e87379ae5c3", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "814df293396068bc5453131de5caad606cd3ebf44b138b761ad35a69f2b13b9f", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "feadc55fbb695d34ebce91cc13f8824cc8920f08bcb77d4e147b8e55d68c11ac", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "3ed15cd47a83c41793204c557e8240015cba1b0d7df4c23559c0f59c97b1f4ec", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "522a40b6564cbf9bbf6049180793ec64d4b65b428a9fbf281bb219c450fd3f83", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "1dbc87a072eb794151c7465cdbec3d9fcd899023ee35c91c33e05435c1486121", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "5dde7071b299cedc37425b9c39e795dd07fc135f0d6efabf1a49f2d3ef2a9766", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "77c1f2df2ff8ef8b4388884816e5e01ccd7be51faa7799e82e18f4cfd1855b58", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "728e801d838291fc2514bd0427645b7b91e321892cb7cda3b857d1160d00bf37", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "1355c59afc0962a6bc1550e230e66239bbebe7cfb5e5563f1b4495c50484827c", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "5ce1ed6a69c65c7276491736a974cd03023dc908667a8f6d3ac310b241ad1633", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "b75828a131f43788a3f5ab9c5ef2cbbe2586a226a0bfa02480c1fe71a6a9049c", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "4d3d12674172ccdfdb2419535909184ef53f4b7f77a11d3e349d263a33d2a561", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "b0207d4db8460a8ea695f1d9dd75d175e4fe885336e79cbaf6ad048c0a219da0", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "67f3bc469dd8f02772a406ec610e4b2c6d29cb921a4e2f9f38e2c19e83814872", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "6c28a96e663a9fd3d602e4ec3f3bd97955c4478b2e2cc3acb9338abf948e11b9", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "83fff233cb907b10a98dc727ed1ceb20f9c10d0e7e00bbd79df859c07c920a4f", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "38391394385823279acd41a2f66190d401c93a85fce34330c5d79d75ced94944", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "ebe247b36644b4a7c0bd6fa66a531d2cc96ac0ad719ada0a2030846ad45dc3e0", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "3659c94775d6dc949878f3883b5776806e00560d7d57f45b89e9747f848ae7e3", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "e7b3061da9e24a7ec753c54e5c9601d41c4929cd67cd6aff68b811cf43ad28cc", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "6e5b759ad9061127768f9f7c842193dced1917604b8e785a7dc78deda52fa658", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "9d72d5b2e595306ca8fe645fad63f38ee1ed4811228460ae772caeebf5a0c76a", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "b8a3906c386e2d370abcd72be87f14ed5546bec5426dffa2de0dbc3799184d7e", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "2ed4dfeac9e12e918f34ff162aa80fac5500b586ee0039be26c116fcf8b0cc01", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "b5a49a5dc4c0c803f37ae1f67cab2ba8fa7a34eac87681a94fd0e7253a51da85", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "908c68dc386bdf7c461a62814a49b979b084fa70c03f56168cb7928bca564e13", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "d7b97e01dae0f67213d38112995fe9bceec0dcd59149c230dd4ef474e4378ad0", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "7359d240dbf2c948bf6aad7c8da47faac37da96e4b5f1c732779ec4cf4e3a2e7", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "355bb0d93181fc3f652fc9e22c6b22045e66e2088f278134b50dd6528407dee3", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "45029eeb0767519845e6c496ba8163e941e7b4b2cdf93e7d8a592b1839263fd6", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "1cc8bf559fb76b417915aa19b9f865eb00bffbceadfc083bdfc1cbcf951a8c1f", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "894c43b0641ad5bd0b544a4a128b3906779a3acc05684008e71b6c313eb2617d", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "fa90193914c5c4e91fed16d959eb6ddff98b921016d287cea06d6de9f6969218", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "e52cd1465934ba6aab8d9b445a3544b2926974685c062e15c7e92e7e8f3f806a", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "d4fb370502d7a578a93fed4bd9fd0539d28a8392db9cc63bd6a6e4704302f004", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "40716d9d67d36916809e39e1ab2db6ae30bd7f6bc45db0855300378f20efac92", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "85bc2d30eb7e8be15ede2d307eff2c73fcfd8b604efb1f3bf3b2dce63cc6f867", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "14d516f1222aafde692f24beefeeaf63cfaee3849e9e9ea3269aec9ef7cdf389", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "b8de4f3503e1d4d9ad10b5f202df9c4f3d52503332a28525676e3c6b96c382a1", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "272959dad8840175f3371a91aee3d259d46a90467ff5c957f430a19b5c0ba652", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1b1279595b4bb098858164855066a05fc4c6421bef3a5851613a4baaec6094a2", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "696ee5d8f72c02b4d3df8634957a823d2e1565d8b0bf4537baafd5d2e1811a09", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "bd5065d7c60bcbb3ed571988d4dc1175a0b05e1a2cd8639900910b8bd045af07", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "217a273734abd13c44a2ea5a12597c19672eb40a0db4fb7d08ecdf25d76a24ae", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "e7f61e1b120e5cd847e9e09d26b8b73fd766d5c46727befa765db6fc359ca506", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "1a4175279f92ca62a8cda374d89056be2bf48be7c6c01ab576ce1743bec653ec", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7f6e7fea771a184d84b5f758bf14e415a171cd0483d6d6da494b810f2b3c00ad", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "87073f9ec4fd9eac1154cadf596174d19cf8719e9d6c33ee01c56d7d78956be1", +"T3B1_fr_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "d57fe7fe2091046891dfcc553ccf5fbc6036bf28954ad78c5b314b3e0e588859", +"T3B1_fr_cardano-test_derivations.py::test_bad_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_cardano-test_derivations.py::test_ledger_available_always": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "1c209832b465087beca17525151f11877628f6ad951a2b1018c75fe03221981b", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "495dc5bbd7729433ebb34c94f02e9e9b58dc47da44eaaab512ba85b147253f06", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "bf758f1ca316d3320b0e946756aa097a18f08fe3851bfac87a490490b5741b8a", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "fb8d23b42d3cd4993f4d560edbbbc611f90a2e7b0846fada438182bccbad3c36", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "9a2afdba4f6fcd55e95b62326a3c20456fabb27a7b766a04c108e0bfe5c4fd07", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "78582b8d980e022736eee1ddf3f4dcf5ed6118cd8dfd924905a47c353dfa3da6", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "b38068d2ecf9407c3b8e8ae8ee2cad11474a68909641f2ff20d920bbd2ce9310", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "4c7d9079afaa79fff40970ede6b900924a4495ba022066db166b45648cd43173", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "073274174b477581f26c3ce4a520979ad3730b7f8e98c3e142cd97b534a00ab7", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "bd8ee71e8acd10d06e4fd60243b35decf6d461fa4a3f6838b28872242ef29d33", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "986acdf3317186bb6c381309c5fe95f90ea077bf31195e16d9fe8df64d2f28bb", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "aab0920405e83e3b78ad0b3a27ce2708a885c76122234b6c2c6d8dce5c46da92", +"T3B1_fr_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "2298c4289751e1933928cf603a54e0db8ef10d090f75c4a97511aa7d10e8d488", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "708c33c2414a72a00aaf049f9d1691aebcfc13bd5ea5e9ed414cf341d5e7767f", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "9f645c724245630a63a9f40505bb4a1f634aa47ad3a2c5cbef6021ff3e8440c5", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "de63b72b74963cd35ef63c5cf971e82c893ed65cd5caf50d886f572a2de5f396", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "cd6fade271d76080a3ca7b0cc3af812d5408a36893cab08df289a5bd24f405a5", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "0d9f55a90637f95eb89ca4ba07d0c2cd0f8bc8d0c25bf5549c4d37e25d509fb6", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "3098e0a9503604bcb09e83a476bf01ca98eaaddf2e5afc23438611e98466c9cf", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "23e83f83e51db2a6b95c02e30fd3cb2b04f0861c2b089a8047ddaa361fcbaf3c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "3fb5b9378be7692930193fe64b810efffedd267f8203b3f0b13d0d267c97a75f", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "4a59ca765b059ad70c54b3ee3bbdc5993723d1abc2be97c45d20281419dada8c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "de38aaa1ea07db5a708fb2f33eb3194301e31b578500727028b36fff06cd21d1", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "9af7b6d2dcae37ed053f724c0f44e426b8a17104fb10210a87cbaee923d3d396", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9097d1619f5db2f523cff608f84369c30fa70689c260678ddcb8c8a972f5ea58", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9097d1619f5db2f523cff608f84369c30fa70689c260678ddcb8c8a972f5ea58", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "70cb0df0a8044964f9663607dabd06c094dc3345310808dbbe8d43744a78bd34", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "e3a489cfdb3c2d47683e387391211e066c801203930d90b11e0189b441fa65e6", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "f7cf2a82e0a6d11700a8bdea4e28d59a59ca5b1345d82c69e01e7d48b968bb78", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "2b792310bf63728ed9d02f57d3de260c133163d281a0bfe12a3c3412d96122d4", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "d63c10952532cbfac9be8b7de90ce7ef4654fd87b3453b26ffbf5c262e4a91cb", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "f8abdf71502693ba90ae905e1123f16425b92c3c583ecf92b557c0f5fb3e9585", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "cf0e5160a878d9ad9caee23d70ed9c06bebf04be95b43592acdea8e0bc527b2e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "bc59fde26aaa7464239f003b00f22eb7f028f8ec896c1dd2a6b86f05cae6d413", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "e188a0134df3a327c1306630c84877dffd654836c1416739df42d1fe6e3271d5", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "d63c10952532cbfac9be8b7de90ce7ef4654fd87b3453b26ffbf5c262e4a91cb", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "f8abdf71502693ba90ae905e1123f16425b92c3c583ecf92b557c0f5fb3e9585", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "c9d112df0b28f322654732e03ff32c0c34d6eed0e4a4157eb91d79224230cb35", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "692adffb7a41827180251b3199e540c11d4504b3fe75cee9ae9e8820a56a912e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "8865ffe50e594810655f6b52e77456c6631c5c5dd138740eafc3f7b009d4f98e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "ed008f28a1603e2fa52d19dd89c6fc491eeeca6ddddf6100059db311c43492d5", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "19568487e21985f72282e5f824367ec0f3ac3da9acd8b6723c8d5b57dd002cc0", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "fd7ef7451fd8df04f34b1e59d6cd04b4ebeec48b4e2c75cfeec835c39f43f211", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "9336dd1264c6c75dc726925b1e0633c7050ba699a37afa1c3396c07c6cd93cb6", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f11869a54e5f22b58575533879d7a22f4e5bd62440268a4c724df08d6094660f", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "888f3aa3c58713a55e1835e723e6ba69a9f7c1c55a18947ff178d2f5098d6d86", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "0504fb74f0dd3df126cac3815cda4b810562821d828a1d537c279bd4cf9b907d", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "e6a8d8065f4b22dd984b376653d50766e634d04c1162d448be3cb14c275b5787", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "96ca4d20358c0507bb50b23c1e0b641b57053b9d9a3dd4b50795ae9aa4ad0735", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "986171cae541717edf6697c74847b8a043e91ab44bbe513f981eca087765b597", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "0bcb295d4b3de072a40dc2525231fb0fbe2ec95029d620981b25d75ed88b9f35", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "03c9251821db82ce98a8d008d5b55133b07b8f8859a8ccbb6e1822391214658a", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "4c3c0039040214ab600ca56c3e4e52cca9d4e9f16b8f28d3cd90fe2f157a2b74", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "710d29a244d6828e22427eb74cf084bfc3c1ac01eb92d22c2fbd7b5078b67c85", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "6a49129478832969ce1d7edfd2d2a45662a86da3c86d5ae8b80a9a711da41491", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "7150f86c7a7743ef80aa77e506badf0c38848a77ed62963db98136a0a8279978", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "58358a17d933f3e11d64b212feb7df1e4f9396f6ea0c980f6212e682b7b2bf5f", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "9b122dc0dd1f98ff8cc4d5c3ffb318870d587bb6e700694aabae8edabd4665cf", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "74796d3f289c087ede5749937c3d52ffb68b37906d8eddbde1b82be69d3d55e6", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "97864616a257c0e021cf4091b0b7835a50fb9f4a97608b0196bc30a4e2a82f45", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "41b8e44e39a01d1ef5a507cb8a3e58236a23e6501da28641e7add90f0ddd9680", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "e9626116f5cd45f54f3d7fd2149893a8374579693b955a5b6d5962ddc76c3faf", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "5801b49a0848ecfbaeb0cbcfec1f72cef497223319fe69a4b33ce9aa4f19442b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "56ccfa40a9d207c386920ccdc6fdd5d9bb688035fd3e62b9c2b0c79d64f7eb46", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "72fa20e879fb05bb7b6830d72dba2ac57f9473fb7588167c7a1afa071d3537fb", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "9bf99bd1f843e132b2ac6cf92c379c5ac62b079a513e54413f01dcd251ffa5e6", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "f2df0a2896975471bc902ee93cee5dad817ab345da586f0430d21f4ef6a28d70", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "55483afb5ea9382407226905f0820f1621fd5e6f93a33159335aee05fd993cad", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "0eef7b292bb56c2cdbc3110a83b19d1d305b14b65f8218d68479ebf1eabeb01b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "fdebffd5d6707805c0f53484460b0c5c320f45cd697ca1ad802491287e94c820", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "5778c3d27b71d780eac684f0766710c77f6d2ef033ac5edfcd6d9fd10f656849", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "07906e020c17c07fe80b81257acfde89838b831ac449b3875dcaf4808d82cee2", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "49df6bbfe2a333aa99fc836fdc42520a10bbcf527ab618ddf30b6ef22f40c968", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "86eb89febd533cdedcd1fb9ae8df7774ad941482196c94247636fbc750187055", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "b3e99807f7bc5e407518b67156f33409d6a0b97323cbc68de6b061039a008c16", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "5006caae3772336e8113e4e80ab29151ce6e2f1d2338e9b2f1dfc9700538caf6", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "2a7b896c6c7a1fefc59a5d5fde8cc691605c537e0dcbb11712f3f6a20e0f23bf", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "4f558f035715587b1fb72a9485632b33fbcf429b5869c5b72d8996e99a1472c9", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "8f6e740cfd6049ade118a36c531064f3ea7eb48a4445c47ef4ffdfcac385502d", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "0b6d36f11550f0f8b59ccee39600c937fe4b8d47c43684ccabed75580bd543ff", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "60dbdd92aa9d03d231214be4c4445f4fbb18e8d00031d14ebe36905f29432924", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "a6799e0f1d29f5e25036c388c1578f86e178e484753a79ed7c783a963bccd5bf", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "182968481fb25c934a0ceeb39f5725ca42cf2eb7d0e529fc4924aa4bbdb73f4b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "29237f9e1a6f19a9648c58833e1a8b117496e7b766e9b821daf385c39dcc4ea9", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b8365a7c21df14fbcc42fa79aadf8d2c6981bb2ae679c87816ce97c718354293", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "59fae57ca493a6d4c8f365058710ac475d4a02faed1817895d6942b2480075b7", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "6fa7f8c42e5507af7d6c9a4a5b985c95da4b281e9c4313ec5f8c9da8f7a5d053", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "8801ce4beb518ad84cc0944ec3cc10497d478c14b2f279c0ad35d9e792cef19a", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "2525f87f414ff825719dad3beed9cbbd20ebff9b8f9284df12ab86294c88c39b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "2525f87f414ff825719dad3beed9cbbd20ebff9b8f9284df12ab86294c88c39b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "deb80a2e72daf3f9383243267c0bfbbe011950fcc5514206802900a146a87fb0", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "a7413762ca39531f6a674d1fce6f758585b98ce12b32683986da3e4f6c774395", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "efcfdc814c8e642767a7e1282788bd8a6212a6f95f69d1d934fcb2b852f698cb", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d405a91e1a8c47f27d9f8563ed7c96d9f63c0d929990a5f1118c0fc38efc6349", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "2696ba3c2a25e26747f8a3e217d29f402d9dfc94766c7d5dd66f2f44b97145bf", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "63e9794c01d74bc8b37e48cac733b2092d54e5466c756d5c85d9730d12251286", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "9d1c9dc9a84bdf8899ae8cf5578ba880f82bfd4946cd83f338c8338e4aeddc12", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "6da6552bb0c3b9bb303bc7a1a0629a62b3ab1d3b66c98ccd9d1215c9e1ac77e3", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "2505a112a6842d9877aa16c7365d82c0ff264ec871b5100d472670b704e2e01b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "8ac877376d04479a0331bcf3f595c8b404cf00e164fcc42b6d1e645954062b6f", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "6725b3f2bfe809cb28321657d18e8f5e19b094469d2558cc182f9ea778b4abde", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "4e772bbaeedfaf3bb73c4e273d86b7b1cd8348a63982c8e407c7a51abca38157", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "708c33c2414a72a00aaf049f9d1691aebcfc13bd5ea5e9ed414cf341d5e7767f", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "23e83f83e51db2a6b95c02e30fd3cb2b04f0861c2b089a8047ddaa361fcbaf3c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "8933053e3342b3dfb6da3f377b74dddd506a27c45ce30371b2539fcc5cf634ff", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "0a81390b73dd165496000feaab177dac9e2e68c0a195529f01fb5c18889c0c9d", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cf83e69ace9513e972ced479183b829cbe4dd3f77f8c8362cb2908aa54cfe1b4", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "3093a9aa8efb3fa08aa47b1a6f69a74e4d60b390febd3621b75ecec1b7a27d0c", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "1c2000976aa6f1c062810064827a28975cb660c408ea63fff3e6653589b3f19f", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "85414eafe74f8cff5b2939db8524ab30b32471e4dfc53c0275fafd9a0df733d7", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "32ed75d0d1917f805f7e66fa1f35d2c4ac8bcfae254d46f257658a7c77c6155d", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "c2a035ff7fc73176e927379415f9c9245a6d23dcf887db7471406e9c919a45aa", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "65e12e2781392e5bf162bea51010643f3b9dc166cbd6946297d9fcc0d6877f73", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "65e12e2781392e5bf162bea51010643f3b9dc166cbd6946297d9fcc0d6877f73", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "65e12e2781392e5bf162bea51010643f3b9dc166cbd6946297d9fcc0d6877f73", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "65e12e2781392e5bf162bea51010643f3b9dc166cbd6946297d9fcc0d6877f73", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "85414eafe74f8cff5b2939db8524ab30b32471e4dfc53c0275fafd9a0df733d7", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "ea3ad9b4d5f7c88a63abc54496d6621d0abf4a0eb297f2440b06e5a491982aac", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "82e7c05bef7c1a0a9e1443ae2117727c4aa6c5dd1aff36d51f8ae613b67e6a1d", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "d3249e457e2081845ee8e5c6886e4e9d8bc5f36b0fa87da2be4ed022773178f1", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "7d0aa60a3a6d77480ad0891e35a29a866588d5e26c7559e34464a3cf534c4aee", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "8f994375d2d39b845e7e65b6beb4c5ec612744d7af88d2ef834a64242f4b9e66", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "1001244c10b53646132ab241fcec0fc40eae0c119f71b646701d4ef8a24fa7c9", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "9c50e5b04d134fd7032e18761b89de5059fe55e1963fb14700c25bc750ed9831", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "46e5de7e510489ae28c97fb74dda6bf2d8a98e109544ad8f7fb041ddf68f9743", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "59593e20808363c5dc5bde4def7396d6c945deb7a744009c3ca491d81e334fe1", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "c81afcd4d9aa13b148dd5d9932eda20afe8864d2a1f4f5c82de27ce95fb3cda8", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "1528960f135e5dce6b387588fc5594a1e34da6911b93d80b5ddd062784b585f9", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "8dc8eee61afc368ef624e5c3391b703943e5051c92b2a3e7eeb9ca3e6b94f70e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "506d9b08751b32bc462e15be4d8aa37119a08e6ecb1797107e888e0ab8b603f3", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "9eabb074c41ce51b31c4b28ac7f05a0e4f5d74308d5c58c11d431c261c16d825", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "5bcc7255b4f7da1089a1be73d82e18fd5823e95dfaa7c8f7deb5a3088f978885", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "990a6d9944e818695bcf00beabc8f40601b80957ff5649f23176681bb732c2b2", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "5ef3a75f6fe9eb26ed70fca66bdb679c7344bcc097914e10e48d41733f17d54f", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "e1e5a166ed1eb15d93fa981c4f76b3bc44e4902766df042d86dba2d1807ee097", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "fedc6fbd3c02597d42ef0e0d147230402c34198b382c895ad1b8f770272c47dd", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0e86a9d0e76aa2d9171fdf48cf0dda30e7de540eec9bcea5d6f4351e7708ee0e", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "c32f50d85088116892acfc5b76c9ac2d21bd2a404059a077e76d8d728333e052", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "e22a06b6ef5b34443d912a12946048467070b7452b8fd597b836d60f6625244b", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "a8346cc5a6bb518886160f5bb6055cb168490c7a4582e42f64490cccb8a0cdf0", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "ffa0edfc4c2ae47f19dee9d3f48f95810943eb411e7cab47819652a14e511438", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "8f8cd77291a42e1e1c5337b4e953d7d44b417f377c97c5e8a23b8af496069435", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "934b26a612529356532b3b2bc682400c99b60adca45600e19fb2512ed5f655e9", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "956936514f745a5aea047e2f351df4329dd9e4e56b76e5d5aac517f916ee06b3", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "f8abdf71502693ba90ae905e1123f16425b92c3c583ecf92b557c0f5fb3e9585", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "c82fcbd3d4d6b02a6e238e4daaf5470bc6dd267e2686ede63c7ca7fd4a3e6ebb", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "8fef06fb8601e986a08c041ebdf7eac2ec613dd69dd40775ba3fb7664843aa5d", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "199e50efdae788798b4a54d94cb12b42f3024371c11568aa6193979acf4acb49", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "615783b5758e8353b75a4745a8c41407ac063748007f602e74a5128f273d1fee", +"T3B1_fr_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "f92dbaa1f71e28eb096eccb84a0b7c7699c01d2607e5f94377b42fefda70f0e0", +"T3B1_fr_ethereum-test_definitions.py::test_builtin": "76f2ffda8a77516765e1336a71c05dd263e9f7becdd63b76228526aeb34ed3b2", +"T3B1_fr_ethereum-test_definitions.py::test_builtin_token": "dcdab7e0d0206ba6e678e6d6e0951ca0470ab7f5050f192d040590f149a8db64", +"T3B1_fr_ethereum-test_definitions.py::test_chain_id_allowed": "1cdf0e7363eae672598985302bde15c54e82f1df3a4c26c58424d6c1722bee37", +"T3B1_fr_ethereum-test_definitions.py::test_chain_id_mismatch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_external_chain_token_mismatch": "2965027e18aa1304694947e5aad539d16b96d1f2c62acf23bd1e228ba84684f7", +"T3B1_fr_ethereum-test_definitions.py::test_external_chain_token_ok": "b89d8e2bcd9af9dd34af12c66d59acf57381f1b9588921c436c928ca9077dd03", +"T3B1_fr_ethereum-test_definitions.py::test_external_chain_without_token": "b25c7b49ef0c2f5273a77d949def2fdf4a12cdea5e68d256b1db291265a65af6", +"T3B1_fr_ethereum-test_definitions.py::test_external_token": "69099e34e590c49e193ac3eecb1acf68118887cc09eb2f23a1a8e4175e6313a5", +"T3B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "ee57b2b7fc3dc5b45b26f78ae2f7b0cb02eefc5427d2bf2989ff06af2b56ba92", +"T3B1_fr_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "24bcba655d8dfa0d06fa7bdf925eaffa02afa23d340307d6ae4d701bdfe8ea0e", +"T3B1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "08f1800e62763e24d77c8044a06c06f785d261ceb74e44aaf5c6830715242e09", +"T3B1_fr_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "eec955a7a9ea5026cc4bda4bb572aec09aed12f0740b1e15b6ad03de7a84b327", +"T3B1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_slip44_disallowed": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions.py::test_slip44_external": "a231ec44d8f7fdd009bf89c07a24971b552ceb36daa696c0b8f19f0d03e2c322", +"T3B1_fr_ethereum-test_definitions.py::test_slip44_external_disallowed": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_bad_prefix": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_bad_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_bad_type": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_malformed_protobuf": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_mangled_payload": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_mangled_signature": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_missing_signature": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_not_enough_signatures": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_outdated": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_short_message": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_trailing_garbage": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_definitions_bad.py::test_trimmed_proof": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress[ETC]": "d5ade8688dd9e665b1d4734a72334c2cb0581ffb814f8f5b71d0fb0bf9b0cbf4", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "a14080c5c5db691eda49c0e0cb8415d5c4903e336c19f6d69298008f6457c452", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "7043e2188619f1fe28df261f92e48a715439c051d155fcdd6247d7cb799e648d", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "14b9c282be3a23a09af504e79346ed1be5febe5be8d72fc562041f8dc9eb8c38", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "44d5a8250e2ca666beebb3a444ca933bac6199332b2e673666f310d0f3906a4a", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "c540aef735807d1fa83b17bddc3f662b8e9ade2082c9ad6b9fb374bcc778c295", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "f94b5318e50d14a4359df5dd8c752a456a0c390e280d04b5676e75438da7f717", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "d2c880bf8d0acc6f457c7faefb60ca0b5dcb1a988f67cce0d9ece40a5adfdf7f", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "2324be07b65b3a6f11fd0eb179e243b15cf32325d19363b32d97af1529d3e5d8", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a8585f6820628e571ba654c560214c4c84b1e8459cb205df8d021d43a414f67b", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "a8506be687a9d81483af4f9fabc67488a4972688682475798f760c134639d511", +"T3B1_fr_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "41a186a146ddd6010cf2b02f071067aee18935718f9972aae75f15c4e74e6941", +"T3B1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_getpublickey.py::test_slip25_disallowed": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "c129bc3628c0726474adb9e54bd43dd0963e478e0541ca20538b3f31739c1176", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "1ead546e87e589c59f7b956072a3f96f80b1050417ecf855fc9b74df9a7e68e1", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "c184d2a4841a08220d6b7e9cee25b32e1df476123947a88724ce25347d7a3d2a", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "6c5ade01a15105c6f10451b05fb5baaf9313f08d9e703dc09b9b4ff3ef166e09", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "7509b7f3bd666792311d6c9305bfbf14614c5d06e43bfc05d0e701f6a353b0a8", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "cf4903806c43429dd6ed29e19d9e321094a27ec4b192a9d99db789424ee4c01e", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "c184d2a4841a08220d6b7e9cee25b32e1df476123947a88724ce25347d7a3d2a", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "c184d2a4841a08220d6b7e9cee25b32e1df476123947a88724ce25347d7a3d2a", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "c184d2a4841a08220d6b7e9cee25b32e1df476123947a88724ce25347d7a3d2a", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "7189afcafeace38e746430150fc7594b1f320441720ac6aa5f15961e078cc2f0", +"T3B1_fr_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "4ec9405bfb1ecc260b385eb6fa2a610042c0e584e47f58368b9ff172bbf07f17", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "b8f6be3715ec7d74b14e2b067c1e9657ab02ce9417610357ac384807203d5e74", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "e4d00c26a9277315464fd8392a43e919c992933bcf08e80e1bd9220e10262150", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "58c357cf078f3448155a85b5b6e9db21e907f11481f6c12f9342274781b1d0a5", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "328ad362afdf727874c79c71dbc7c4dbfff341a221c157328d668293f503afff", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "04edd1585c853771096d7f3d0990e64f2f0e76d34bc7744d733d2410ea5e277d", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "4113e7429346aad974204fb916efe622cf02fa4c7fe827c2fc94c6cfb32c0f72", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "1deda3029a0dd475823aaa444cde0e51651524a0460b94da12a6ce69e0275911", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "d8cf757c1684a083ae65d3fdb20783ea284941607ce0a0e4257b47f5f2734a96", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "0df4cc8840d76ae3493a8119333b3cf6864256d79f91008d2e613375c44550f2", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "57a5ddd2466b4f13d542a4db8cafe8e39c2ccc37e160cb17a056a9742b0327b0", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "38f994368f16fef24e785533a6eae5595104750bda25e02693924b54467408dd", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "60ea1a4d752c8599ce7b6b188fb37b765f07f6e86bdc849a5bf63fa1cbccf76d", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "26e62625550c80bf73c53991908f4485070ef3a5a377c010e8f3fab356fe1e22", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "8bb29f89ae36802b5f1a3f72dc8715cd00d696ef59e24cfb15b82b2e068cf31c", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "3990739294385e6cbb7788c9a9bc26f9cab1b73b6a7a68a6e74366070d3a05f7", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "9840890d191598b71847d8322e21460fec86ba1971f7e9ce3fc8777eaab53d07", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "609b97dcecc8dd28d29c7a8cea8c6bb5dd3a59c5eec22fd07cb1e3105baa8590", +"T3B1_fr_ethereum-test_sign_verify_message.py::test_verify_invalid": "57a5ddd2466b4f13d542a4db8cafe8e39c2ccc37e160cb17a056a9742b0327b0", +"T3B1_fr_ethereum-test_signtx.py::test_data_streaming": "12095bebba8f418474053cba6828ece5dd5c67999993a58e0e5ba6e90cf8f34f", +"T3B1_fr_ethereum-test_signtx.py::test_sanity_checks": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_signtx.py::test_sanity_checks_eip1559": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-ETC]": "dfc10f76c07cefcda9e9529954bb3dcdd688d083127a5d74e0bfb8693ce1c4ae", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "7fd3bde10c03d5b814ab211154230c58f18260cd92708a5a1100ae43b519b303", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "c8011ee8db5d1ef3676ce1488328697aadbadac05e03c99e3caa3a87ce7567f5", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "7fd3bde10c03d5b814ab211154230c58f18260cd92708a5a1100ae43b519b303", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-Palm]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-Pirl]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-data_1]": "2af7a0c0cf008db7926240ede75225f4d6ae3cdcd013a7ba0d7c0d4ae0c70c00", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "0889e150f08b6f8ac5305c3b29443cddcdac348ecac10a9f0bba116845936591", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "e91849840818e3beb3b48d75325c7b8b05a24cfe8f36936fba04a36af2743e96", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "3cf2dccd7a354d40bde36085af78f9baafbaa32c6ee03b5e06238471ffdb3e6f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-newcontract]": "9faccb9f59f6b3487b1e93a31ef8dbf512ef1ba7ac158f5adad5fb8702387f94", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "69cf014a6e16497ac12e2865270aa353d82588b365b17728cc7d5ab038a4612f", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "11509e5ffc96dcb765a087303b5ed1a9bc2b11d77d32cb8a5fc318f6205ae16c", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[False-wanchain]": "71cd1de3efd6c9d6aa0ce1d04674a192c04b393d3d2f19b53fd314c04927176c", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-ETC]": "6e22b5d8007d56b47a7bdb72ebb38f4d343791d7da4ee399cc25213e113de7ab", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "9b2c88fad6a10221c22a7053ddb4db8fc600aabe13abbb67a3744cfb337205cb", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "8b7f5f448207a7d33e6256702ee3be20554d4a49628e14432308fe40c29bad20", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "9b2c88fad6a10221c22a7053ddb4db8fc600aabe13abbb67a3744cfb337205cb", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-Palm]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-Pirl]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-data_1]": "0b36eaa4ffa4e98e2e05128376357b868ed6581230cd2d00a65f0939ac6013c7", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "b694ba3fd36df8450866d17a933b396aeae890e8c598a5798ed9bdcc5c218779", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "6fdc6c49ec1fbc5b2900ad3906f21052949520c3f6f0cff4952f93a465954a01", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "c7d24221f370d4eb714ec70bf5a6cb5fb6ba09c880b3aa16aa7c8d3e6b1db5da", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-newcontract]": "9faccb9f59f6b3487b1e93a31ef8dbf512ef1ba7ac158f5adad5fb8702387f94", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "e710d78ef753aa06ad82fb35149498faa376c16503259d8c896f8245f0b4709c", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "675404d11f81f39fc7fb80e0c3139146f1ad61b865c8c82bbecbb079edd97b4a", +"T3B1_fr_ethereum-test_signtx.py::test_signtx[True-wanchain]": "cded0125dc65cac3aae4e14e1be2a79049d13b41a4b896665a383ba961138124", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "d4a464f652fb63d5173862ad76b744aa8cb569a13290e9d7b72739e9a2314c81", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "61154a1e35fa83cc1f708bcb12dc379a211c285a95fa295cc3bb414d8c5d36fc", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "e26b91ebe863f2700d8e30b2b8d09ad8f7126345df934dc249ac671cb4e9f0eb", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "8274c010621e0516f5f3d36d3cc2962b2bbdb8a8edffd008708364b8e999a71a", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "385ee3fc0f17f3d1402c6668c7d149172880c4bc95b886bdd2a20c687944bf8b", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "d3ff987835a0244afbc0f10c8d2ba942edb6377260bfbd71bf8feafdf429f8b3", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "76fbd9dcda6617b8497b6f1457f2dac099a0165022d912d24470d5390fc499dc", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "52f046aabcf01ab1b7be293db6ebe615bdd47e7771160ea25d3ed4726fd027d8", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "89391ebe8294be5e2f793c9edb7caf75b3d67124c44a21a12a25f5b3e496f93c", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "8274c010621e0516f5f3d36d3cc2962b2bbdb8a8edffd008708364b8e999a71a", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "f155e1dfd39ad9a9d4493823b9de051d00193800d45c767f2ec7f99e92d08896", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "d04fbc673d8d56bce18ae3bc2dda9a12139fbcc8f6a182a770fc2ee4f29b7219", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "3a9aaf70920719eba57e64394fd666c81e7d9e2e36d0e9179c2469b5d033f370", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "f2a6218ceaebec8f49e44ac351b3e64b96ad6fa18b18d2d385cbc8e5c36e83ca", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "e8034ea5dcb3e1aad116ad6914d4438dc163ed633d7f0336613c5d513d2ded62", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "88ac3123ccd3b66a5f7a18f8941081d256306c468630920e88ed74750c529340", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "f155e1dfd39ad9a9d4493823b9de051d00193800d45c767f2ec7f99e92d08896", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "c7bfafcb594e4e09de7054e57aec8ca7e04ba2fa22059deaeaa3ac32e70e2463", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "c7bfafcb594e4e09de7054e57aec8ca7e04ba2fa22059deaeaa3ac32e70e2463", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_fee_info": "3a50e2ddc45443e77064ce2ad2116d24ad36a8b28507043b5b2c9c727149f843", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "5ca603753b660d215e0236fd3ff23fba342d55c8c01f4c67993a40d6089f3d23", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "db11071e6237f85e956461e990d75ed7e4ef902c19855be97a973139a20eb753", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e5ae6eec57f4c3466d13d0a891ad6b53a6ce57cece8fe9cc239f8cbd2f0797a4", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "5a041c003bd3565ad5050f6c612614c96f37bbe3671cd632eaa64b5fdf232b00", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "c643140e0cb70747e977dea4b072e9ef2898d427b2f6919d693912a0f8205fc9", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "f6f368291f9c1f93439b935c1a37c32df8b3fb2b4c2e76138fedb53d753b4050", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "08c1911590dbc8285500fa013cc1132adb09bbd1efa2e123298f6df93ad5a653", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "a7a75f4b69a39d0b8586c8abb9a86bba71d0b14b6f6e100f60be689a864c6b7b", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "a5c7ea0a018955f04d444ce487871760cc7d41cd5e56986acfb4db77df8b271e", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "389b0a4f7b86a2d2c357e108f46e9b1557349a2341c0d21b7ea034db1923d21b", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "e456afcf2ba3f69128033e53a4cd16e670c28595f99db81b050fefc7a235c1c6", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "75103786a5e2d57be567f33207333f6b4e66892919fcc09dcdf4db147a2b42c8", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "ad356a0bc82c8f13f55c005beb976c2c98c1ce9c58c914fa7420b2580a4b18f4", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "2858a8028bdbc9fe79dd3a31f58da6b9551a252aee6b1c1c4afc0f0d45bb6db1", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "2858a8028bdbc9fe79dd3a31f58da6b9551a252aee6b1c1c4afc0f0d45bb6db1", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "9ba051868e441353bf67235851578a885eb1f2db8ad68fe5f3fe9cb19e34359c", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "9ba051868e441353bf67235851578a885eb1f2db8ad68fe5f3fe9cb19e34359c", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "bc78ce96b59859194ad342ab9f9efc14471725b93c81457a083bf8aa8ce42951", +"T3B1_fr_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "bc78ce96b59859194ad342ab9f9efc14471725b93c81457a083bf8aa8ce42951", +"T3B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt": "b88a77fd08f3bb3bff5dc70f960878ed65bdd46dc34f11865bce617e7aaaed28", +"T3B1_fr_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt": "d7b2b7f911d0b1ebcd95275ccd1ecf1e7b8e53080d5fa70c01a8840dc23b1237", +"T3B1_fr_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_misc-test_msg_getecdhsessionkey.py::test_ecdh": "34bd71ca5ca2076fbf971a5a4586046b6cd84f508a21a55cf219a5a36f009d9c", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[128]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[129]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[33]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[3]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[4]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[512]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[513]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[5]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[64]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[65]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[8]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[9]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_signidentity.py::test_sign": "fe2b41028c67bc122057c2f65b3ce28df7b21bf7ac3b6b10b10ca7343a7d4b54", +"T3B1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "855c4fdf540542228ef83b5efedd917757a9e7efbfe1f09ff9c7be1bb4c9d0c2", +"T3B1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "6b467ad2fc747496e47786c5cdccb172613d414bd095c312fddfd7bbfba4d9aa", +"T3B1_fr_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "c53ef10c9e43ef312f17fd9914cd8b7e47461f39bb34b5b744025f8c8813b9b4", +"T3B1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "60d8dcd86b3d6933b11cefcd57b61cb454a9eeccd73b968e5c76ac90eb098104", +"T3B1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "f3d05bf21c668bef2e2a13cc0953fd4bf7d4bc0439149097e44be0074341865d", +"T3B1_fr_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "54f755908561147b4d85a4c1d823c132fd1a30bdfa7403f581fe27eb4930dc04", +"T3B1_fr_monero-test_getwatchkey.py::test_monero_getwatchkey": "6f16605547fc2d4b61a5475c7627bee09523539f2fa6a9d7f3a93ee79885f59e", +"T3B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "d235221e6f98862c7374b04f1a15e56fe82095fe1bd47fde46bb152e24400ab8", +"T3B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "fd1448134f4aa2ffe282d0bfe36aadbd68c5b6e62cbdd471912417272b64ccb3", +"T3B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "785795fc4510a099a4cb3e5b4e77e2ce12556b562662184d1a17351edb789c54", +"T3B1_fr_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T3B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "5abe0e4f89ec1f51a00c9f79968b14faf5fd8547e8e00947a51c3a91df3dfec9", +"T3B1_fr_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "fba5a250a20d28d65bc87806922e4cf05e4233bd3f197508c861b2b2aa3526f1", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "2fb44ed4e343855cc22c1b442cf76537b50403fb589bcc6295d4beec4f8e1114", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "aa9dc4c9cfe54afaed6cbc26bd7ab5a581bf4ab7eab106623e1d99057b164936", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "4488460ff030d1526a95abcf0edbfc1b438f51ec54d737140760a03f25ba960e", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "e3161276dde6c72e9d94ef376ff494a27eeb26b310f62afb088f820b3f677f1d", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "3cb35542ab6c61844abc3d45adb8e445147f907eb436f28d91b2c18e7aafb7da", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "b87be9ca092bbf6b30836b35fdccfb1defbf339078a3e45f16565416b2e4659c", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "3cb35542ab6c61844abc3d45adb8e445147f907eb436f28d91b2c18e7aafb7da", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "b87be9ca092bbf6b30836b35fdccfb1defbf339078a3e45f16565416b2e4659c", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "25e220570c703d66e40dd48e73393ae1012cb4c10aecbc1e85e1b786dc10d163", +"T3B1_fr_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "1dfc877b17e4d6c38f695aad714056a468af0014f63c1a1a85a959be92873fc6", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "43cc7aebc4571980a454880235f448f4c4d6a03ee57b4fb23bea006541bf2b50", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort": "bcf3959b729610184725c3e9b0ca295bfa2e2299bc84770abe7e97b560d54d51", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "ad2d869ece8d5df4da38321fd90105b571e4a9b04f2985c2b5722cc78c768b95", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "95d6ebdd3cf99ee2a4826b9eaaae1cad6496c628123278146ce6de839ceb6391", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "e8065e252cf2b9b2927068fc2838bedfb6c41d765b6c544cdc56b6832dbd38b0", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "cba3c45c899c9022b7d70bf1756cf643d50f86407107b535c0f055342495b1c6", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "f5d4a08383e9bfb909a4449d368d047608a24839ff24afc4117210aa125d51ab", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "a75a56586931aff16c23f0fd3434ace334dce68bc96233337209c6ae0acc0d67", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "34db00ab469704c8edd3167bb826548c2c4c2456bef2c90f202c31fe743196fd", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "51fe3d66fbeae88cb9f6b88f6b90667d8fbd18bda4af1009f09eb17c0b7a0ab4", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "24fb0084ed4c9c1885ee1d9e2cd45c37494778e369f2b6a8880c5568b6016a5b", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "8edd602f1b61f90416828d95bd50cb09e54dccbc0806cf1073c4d7497f822b0e", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "5e6643ec4ead801545417fcfd04953cb208445c2cd044da7fd0b150a36e457ed", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "4651003fe1263dcfce13335e1e77e528ed88a9c9b1fa54216104395b8b8d9111", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "6277f247a770d3b1f7a4bc38b9b28924bc0b58d422e8a94f76d0fc7db59ff733", +"T3B1_fr_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "f89093e9ec8dbdce95073e327a7edc9ef3220fb91585e08a22fc6bb383f09305", +"T3B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "fcbab715f3b873208282820a92d802b9e602d75022bf758df594b4ffb56aeb98", +"T3B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "822d871cfc9a724780e4f1fb3dc71b5b540919e2661cd4ea20609f56e025d87e", +"T3B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2feb0001ea7e4cf39ba8b3107a29b57cf1500d6a97a7d00e4283bce5e53d43a0", +"T3B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "a928ee1919f253147a75030ed0cb52557bfcce59f417d37782fc2f0d7bec46c7", +"T3B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "6f66d1013bf293e0b1d91fef4790622fc7f45c8fec228904d8bdef36adb2afce", +"T3B1_fr_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d9bf103951d06a8c4be1ce6de417b42ef91850ff34ec6fe5e22dcdc3203fdd47", +"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3a29d01a969e8c7110ebb4ddb147435221d9d2821a1908d4d2a3fc079c90a029", +"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "6593a8c0283de0d2c9947a35ee356d1770a48e19857cca06b70bf8bf1b0e220f", +"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "86fe0dfd373e5e7f0f0bdef6ca7a31bc365083847f8c0e0ee43cda55e4239d38", +"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "7f8ffc9101bf19997c9fb773ef95ab7ff40e710b0feb1ddda9ce177e5705ae64", +"T3B1_fr_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "86f99abd1ed1abf04e04d12683bb143690255e235cb904ad33c5bd4e1b76fe6a", +"T3B1_fr_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "d5ef9c3dc71dd4b2f847c1615c32788fc8d3e948bf53fdbb785facec8b107eb0", +"T3B1_fr_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "ed34bd9e171947035b322b9ead6bc1ca5abb1b2c4b3dd18bc7339c3e17734f10", +"T3B1_fr_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "56d2ea322e3cc8dfcb33225b93424fdd576b073b82c5f84006ad180177c40065", +"T3B1_fr_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "2afaffb93d73a2c9559f3976ececb28818ffe7b4131d297134a5c353b93b2f22", +"T3B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "7edd1ceceba03aa2b5c332644b01cb5c30e159b8135e821d1f577504c4318f32", +"T3B1_fr_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8b2603842a35f783837068e7c9432980955ddfb6e4d4fff245fc491c67bae6b5", +"T3B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "851bee61c1b9d2d3417144b6d0504f0ae48409a1e01da5498d6cc1c4a5fb9e0a", +"T3B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "47bc3fb72c06124191ef7e9586df146a892f87046107218384d08b06baceb34e", +"T3B1_fr_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3256148778d8e34a180b5ca01b0bb41ff5cf573055a8b4fea6a8f42aa084b5b3", +"T3B1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "b6de271273e27aca080cd584393261f0ac7db700cabcbf25b28e815e2458c4f9", +"T3B1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "6fa5e7dbe8adb9e5bb89870b9dfbcabb9d8e4646b10250643f1cf38bfee4fee3", +"T3B1_fr_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "dff804b3a83122ee113c995502f97618218421d979fbd4f48214ba7ab7ae6075", +"T3B1_fr_ripple-test_get_address.py::test_ripple_get_address_other": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "4870d932c72f9a9ea8d1319cff056cb0d2f7f066b682fbc0725263daa134594f", +"T3B1_fr_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "9210dbc1a4e62c883dd1f619a719ac7448efa44db9f615d39be7fabcadd61e13", +"T3B1_fr_solana-test_address.py::test_solana_get_address[parameters0-result0]": "45b1f01a1f1260a546014b06d8102fffe3dfe17d6934306b9eb07b7ad796b12d", +"T3B1_fr_solana-test_address.py::test_solana_get_address[parameters1-result1]": "30c8738fc927cdd01d45e1b16d48d85030de4dd06c5fd1332baa3b46b42ed582", +"T3B1_fr_solana-test_address.py::test_solana_get_address[parameters2-result2]": "3a7a82917e448cd7a999d7252d09fa8e7981dc2583e6c4a15b4c56621928617c", +"T3B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "f108b11687ed6315c03799cfd93bd844a4f14e1d06eedb0fd143a51913c15508", +"T3B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "e6dd7d6061671dc77b5040c3709c935f4d8c83d7d2760eea399cfea56569e192", +"T3B1_fr_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "0b9198270cd62ce57ab58f6c82120084c6b6ddffa637c45c92536486ee2edc41", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "b246b23315405a12c6463ed64e74395dc3e7fb8c9e06256317b7631990b0c3cb", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "4f107e44754b1535e0b64648acd704cfc71c29ad2015a465389ddd6d4848eb75", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "0e7975c4feab17d0bc079c34eade264b104df0f3b6d8a8e6ae01099fbe4d1b38", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "681e45dc1edf44e5ff95140898dc53c22e1d650bae635dbdefbbd73b1274a7d2", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "1bd421ff870153fc02b05c297e6b0215c28ff8f1007fb76060dbcaa1f393b656", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "eac00a8e4685388e1ee703960d59c4761c923eed7e8b5845dd87313aee967457", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "0aaad8f964518d24360983a6816d45f208af2adc3cd94c17456d23ead8d4bd7e", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "7fe040a8db4aefce94a2e8a4bc26af997a9be379082d47826b6b2e81f6956b63", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "209971cdc628d9da936df12dc2624a21a80d6a69596e2ec615fcae3a9303668f", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "646800aaac9e2523b6f70a9921ebf937531234df3fb59e510a95018cba88e33d", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "761871c4b0745c933241bd192f611753ecd1de373bf03a92bd8a2da65850ebaf", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "3708262e5cbe8f6bce768d93746c7da051273b91001766836f34d09fdb635801", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "c342887bb7ed15a5cadb17be66caf0abed851719962295651b0a3543cb98fe8c", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "2aa1bfda82008d5948926199e9f55dcf5d08bf290c8eab74b2a824b4c9261784", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "e3d0f37646d265d28b078ac39f994d027cb48c5aebb4026254eb4697cd5a7b43", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "b7d6568befe22bae8c232df8ca064e62021a90902fb11cfd9c9395330768000e", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "6772fa257599c61a1d0e6527d6db0a6da0f6f24f24c1d1b0f6c942548198cb59", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "504c9db6f8eb928e92c33b4261ca6cb4d07e33c7c5eb0b0acf153535f2518f59", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "808af8f0079678431825573b29255b0c1572ab1784e81ae5968606c1383c6efb", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "8d7da5bcddfbd53d04da13d5c34bf7e1837761a37596f41a8e28f79453dc5be7", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "a23ef3fb5ea8d4850bed52fafc436aafd16acebf67ebaef598e7597b3c589ef1", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "ae8b4050cff6d2f503a966e7ae5097ba8c82831de62ed66f747873d20f20b72f", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "8bf58a89c9f2af059a71cffaee24d77e1cbf59d5aaec5ec00b86adb64b62e8c3", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "c0d933de22a941689439a0913aaad0c090a433ce2c824072d72c97841c49c2f1", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "7650f45d59308e18cc8bfa90c95a4d41a7fabaef7eb43935215233c23e4a02b8", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "c843fdaa220aee37503f5296e2ad7c3c4667f036d92fd130cf96cb4ea7cd1b33", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "64d64df94157b5ffdf9acedc95bc23c61864350cd3eaaf23c2c04cbd0aaad4a7", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "5fa1f15aeb0e2426b9a835b908bfbb9c0b8ff7b7e4fc6a9cbe56ae6ed9b3798b", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "c7316c767254e9a7c7d4ca6a58ed29a7690dc2e42454f9b6d4866521847caa08", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "1ffacd4ba540b682b214bb54646f0c8b5a7be3f18cb69ac5c05b5ac6e2599279", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "e590a0ddeeddbf2c18ee72feffcedd5984e19f715217d688a5165f00d8c9184f", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "58aa89bce02d5d3d474f8e1936b4bddeef23df697b39a00006c17b617eb103ef", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "aca9d935339878794d7abf0faca315f6a39be48f28e2b256d6ad0a717faeb129", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "82199ee4a33201396d798becdc8fcf35de3796613564ae2afd17c554b67d6582", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "8fcab8568868a8332b5745b79031987b9b94f8bbc7459f4383acd05816a2a669", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "8fcab8568868a8332b5745b79031987b9b94f8bbc7459f4383acd05816a2a669", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "e5c1a5357f23476389c801b06bcdb24d819ecfa00adfba6e1617114e2bb3a54b", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "59cb76d45156a5331c3ef0d69ea1512fcba89c3b682454671a5a41c9a3fc97e8", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "46f733c50997d9c5f42b299d469d136800f14e65d9c2f82efcd2b48451398f9a", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "be2f112d28e8b8d99be5b1e307d22ab3b9a6e722cdd5e6ecce9b4f3cf2a36ebb", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "8aa97cb4c0d516b84f804ca62aec6f970117ef8d8e9b2706dc12b1a5ec27f2f5", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "09728cf18a89ea056c894e3ea163a1f049ce65cdd33f8b349e6f2a50abfaa664", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "764d0b7fda43c8db1161ca69b60ad057734409f4047c8eb3cc0d29c6a9d13b6e", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "09543c9057084d180471d006700cb13fe7cf6d47cefdea3fcb50e9d0f7ff283b", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "ae2462a12ef545a85411330de5acd018095b7189aae8d6b7657a88e23e4b163a", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "7fb79dd4ba8c923f0ab5f45e9d16a94393136b054af9a34106271731aef417db", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "7b3d8ada93605f7f9e855ac44bf6fff261bdacbf5332be3e68cbc403eb9dea0f", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "742e31a89597ae911bd7a87043a2c3c5301648fbaa7c4e5cf138d92ab4f72766", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a3d6a9613d54931e25dff68ce0b72ffc6583be9b1d8b484df0f447eb8fb3c922", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "a12b4a0866d5f7f8143664dc3654c706405e82968da08409008494934b9089ea", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[split]": "ab8ee73689c822a6d4da4e58e4b1e258bcd42320577dd9314ca77c94a588cda3", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "3023610ef6c37c6b4bf009c0a498cceb6311df046d3a7a80bf13cc10c3d84293", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "3a7f018406ac9f4388da611d11f443796fa46bff3f77af91d9a8232e13e71ed3", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "4b76dd4e16de0806f357e33245aa05c39cd4b4005e4633f0bb2a782e397bfe06", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "80a74ac678aca187b727b9dc7079600965258dd924b95fef63f504a4802b602b", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "5cf1ba216909632d89d39748bb5c8b1c1ec2268487e0901f116d4a82454441b4", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "82252d39ba5872ea309a1f3a564149f6e4e54a609a8fd7f020070c4309ef9d3f", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "0cc21f781433b4c40da93e686d9b1ab1e261dd8f4577e066206d91fdecd189e9", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "0023ed2d823cf1c9b2c03961bc659716bc8c96c4687f5c2e832cbdb0bf6f1f9a", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "4d2b6b5ef20105bc65b8ae50cc9fdc51323fd0a103717fb9822afe6a1ed07490", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "56facf2f1cdf7360595036566b816aa3d8bda7672894c835665a4780164fb36e", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "d39eb6f629be29287b8d6d35bbc4283642c5f4dcd49ad47f64b6063399c87ec7", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "e0ef53b54ea38d348fdd2e2dcaef389d211de0a778a55ba7115dae0df3ca127c", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "aca8a0a33893727a4bfd9e62975f50950372093a8d71aaa12d1b18074c7445cb", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f7c8b98b105f99edace2bb08f5391c45e428b5e31c2ff30a7db2637e26c0cf9e", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "ba88d0788debbf9f084360ef3b373bd22602c17deb1f6773f2bf29194aa57fcd", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "5a9e1aeadedd3d069d8695cff987b388f827c06764d0fd2126637cba54aa27c8", +"T3B1_fr_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "c59c9d49a2e96b10eb7947b804bece89c9b624cd1290be8f1cc6c18d1793bc64", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters0-result0]": "cb48c135e3bd586a804859995284e4438822d296035ae3eb93d9c6639e117dd9", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters1-result1]": "5b86370cd99be7932b1dea8082d564aa82545e900c2937909aa0b5aafc910cc9", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters2-result2]": "b192ffbde6d672c31e7edd37073e99c642a73b81e27d07294173d3f67e30a1ce", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters3-result3]": "f0b794e933562c5e239c400435e872fc04ed0d971527bb3fa31006dab6e14c13", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters4-result4]": "ffb45a3c507570178b2b4ad87b33879aacb065ab810b3546ae510c8dc623c89e", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters5-result5]": "c8b088de841fe1592fc5d3d75a55434f5ea9e7840bfa639abf112b940ec23856", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters6-result6]": "2b069523e0fa9c803a754dd69b1569de9455fe2eb3c31e3ee1a700942945e86f", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters7-result7]": "92d25844e2b90b23924d263353b5eb0640412d6eddc4b1ef87df7b65792a8b9e", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters8-result8]": "33429fcc5ec0ce841e7464dcf1c528349db8fffa7bc0acf790e7139f639af9fa", +"T3B1_fr_stellar-test_stellar.py::test_get_address[parameters9-result9]": "ff1a2001d01b15d10763fbcec64d4875ccbf401a9e4cfe2ed689dedc8f370fba", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "5070e65d6f7c6fadfa55f70bb770740d7973c5de1411efff6048e5aaae9ba813", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "43b10c3d656bea27ab55b8c27b9740bb8dbe28432a7955cc4c80b00e8f327fcc", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "e55c78d83fbc9286c3081be5083ca660b3500c73a1e347a86275c98a55c34f59", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "e1f494654bf18e0a445efe8c37a45f703f34db5dd14805e95b9ed0f52ab38bd7", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "2da2ca7df3b9abb1f75e03993dfe605001d388960d391abdb3dcca63f04c2741", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "cedb0a7927e2cf5904abe8c7066d2f0871abbf41b6709618e5d6fdddaa09b0a4", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "96ba2323aa49320d6d94fe2a19478f96510b413b5181ee7b13b626ad394d44fa", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "e6705676dde88924610553fb2b71cf978cadacfc388914459c4405e3303c4d02", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "6f3b9432dcf164cdef0a42092be7099c769a79b102f7c479971859fa02d2dc00", +"T3B1_fr_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "43a2df84cdb8fe6ee552dfb8685859fd1796fff96e89159c96ced1b4f7a1841a", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "81cb664437f9f48fd7a3c44178630beed86a8b55bc7c524fb6f9974b4f4d87a3", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "8a33a2ab5a8ae77a1ff6ebd52ee4682842e8850a8acd34537df4d3bd489d00ab", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "113c22dd4bf53acaefc4c7f54027a98c3d471306ce51175782c9d7e782a54bd3", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "598babdc99028fbf1970b9329b95eed9758fe21d98908958f880ad3b25417a8f", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "84097e9eaf23aa6431f416a8f66c1860baa413e2a74c64c70ded9950de79be51", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "3b1661a9bc8288bae527ef8b303b0f88c23f9aad2c6c8870e5c5fad2a42895f6", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "3b477db2d3b578b15841e41ce934e245876df1427114c5dbb125346e6b2345b9", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "83312f14fa749638a193aa54c2a473bb7815edca58c7e5889f3f84b6e09aca83", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "68844b4f02c25bce011ae056ba27f34e0c6099be2a230878c1cf2f0bb30c4b85", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "5ed46cbd98d8d67006bb495a8c238956d6400b0a54347bb53a6efc60e74eebca", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "476b193e50e3424546c728247a887413e3195f22da3ec2603f4fbc18cae92452", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "4f998bedbb71d3838a5f59adf12c098bbddd519981341189693f20c6640fdf22", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "66c1a6defab41f5516611f7fe9e16faa3486f4a93557ee87eb5025c485df64d4", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "95ad07c968088414f1e235e55e193ee286ef1f69611a2ee4eea8b8e6e06621d0", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "d1fbfa0a8c7c0869b4971852d9b25a954091fac7337c7fbbd5dabf1fe1bf44bc", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "922dc44bb164046057bd739adf900ce9c4969a256a5f1c4b13ee0cabb2fdbb4e", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "f69424f0d8c737481fb5d27776c9fb61ec26480d5bc1f85d5954f9222b1ab3e7", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "044c3796d679fe0ad75a11abf1d3fe6675202993483dea7f90fffdcaf850f1e0", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "ae5f6623e3ae10f2bed6e34a2b94ec812c0b93ad98456d319b5c368a1185f663", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "e466fed20e27f4c97775901ae78fe590378d5eb13223aa7a292b08dbc9fc1b74", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[memo_hash]": "029de7294f2f1b0cda653e75191d9202c3b52f60bb843f8ef6e524678eece8b8", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[memo_id]": "d05d89923d4857bbc72d078cd05facf7c66208095019f384624903342492646d", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[memo_return]": "73edaf855d9440f0b23ef2c0e1ea7da3ea0d2006866fd49b3c24287dc0a7ce88", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[memo_text]": "90774a638a019371bcd844d5e7020cfdb4084c82c0e875c4c5e5db0a34277d84", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "f205dc8603e1ac432855d63c80df535968c6a94f1b5b9b7992a82a5f20752635", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "2f9b4d8de23473e569dfae087f5d7c8bdf55107739c4110b8c88788d86d4d54e", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "19862ca6fcded3748b3297f458a0c6717032af79adf5d6207d74885fc94c161b", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "17b33460779f9af5714ef576949b068c1c9f56e8affdf0c2f42135b10cdc262f", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "38cd688968416eeee9a39c8549311ba004891dfd1643cce126d930f4a5619b9e", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "f69424f0d8c737481fb5d27776c9fb61ec26480d5bc1f85d5954f9222b1ab3e7", +"T3B1_fr_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "04608b3243cd4f13ba9d33e6d7b69f0c4f56a032d92a419a72eb6d70f81826d5", +"T3B1_fr_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", +"T3B1_fr_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", +"T3B1_fr_test_authenticate_device.py::test_authenticate_device[]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", +"T3B1_fr_test_authenticate_device.py::test_authenticate_device[hello world]": "3c191c3675debbbc01b4cfbf3a5d11d830625529fe96f4799c723869e5ad6b4c", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay": "bb9a8dc3d776a626180104de0dfa3efa55ff05d04bc3b51eb9e844759d805b3a", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "7e54818d0b7a102ff18b4fac6aadf90294898eaa67935bed8f65c27458d1e653", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "d18490c6a6518fd0772fe4b0b08a854874327a05d7d7a0b20acd1339b681de3a", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "a444799a88960058f5191a5a217b718debb6b4d1f9046a7e0c5080b5750b3971", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "242829e1d71100eda3d108ab26f66329ed0e550f68cbc241d93b331547cc391a", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "4d0ead355410f2b5763a88545e404477244674b85838db38ab6bcd9b8fa3fa36", +"T3B1_fr_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "50e9bf77b0f9599fd104ac174a5ecfbea2b713fad2031174444bea64af119a08", +"T3B1_fr_test_autolock.py::test_autolock_cancels_ui": "d3ed0bf61fba9f568a8c781956e7a45f4bc36ca1894a7cea1f9caa352eceb848", +"T3B1_fr_test_autolock.py::test_autolock_default_value": "d9aafcbf4105319b250681abcb77518290618aff2408548c1f55ce8c2ce313de", +"T3B1_fr_test_autolock.py::test_autolock_ignores_getaddress": "6cf1dedad72ec92de8146e9538018bd9d318616c0c71157bde55d12ba62eb06d", +"T3B1_fr_test_autolock.py::test_autolock_ignores_initialize": "6cf1dedad72ec92de8146e9538018bd9d318616c0c71157bde55d12ba62eb06d", +"T3B1_fr_test_basic.py::test_capabilities": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_basic.py::test_device_id_different": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", +"T3B1_fr_test_basic.py::test_device_id_same": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_basic.py::test_features": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_basic.py::test_ping": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_busy_state.py::test_busy_expiry": "3c4520b8aadefa089195d16d37ebc6f834963a65fa4df8eeef3fb981d7c78615", +"T3B1_fr_test_busy_state.py::test_busy_state": "660bef3e1aec5e826b8a7dda41430828149d48ab79e4010dba38fff39249df42", +"T3B1_fr_test_cancel.py::test_cancel_message_via_cancel[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", +"T3B1_fr_test_cancel.py::test_cancel_message_via_cancel[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", +"T3B1_fr_test_cancel.py::test_cancel_message_via_initialize[message0]": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", +"T3B1_fr_test_cancel.py::test_cancel_message_via_initialize[message1]": "6cf87ca1cac84a641e4498d88b98b2d7f9af4050a4cbc7d4daf9da824cac6caa", +"T3B1_fr_test_cancel.py::test_cancel_on_paginated": "60d68603b1bbdd9b041ceafde30fd6444d265b375dfeaf215212e0c9701d1a17", +"T3B1_fr_test_debuglink.py::test_softlock_instability": "815d955a6016fc8e175b419b4246f66a2d89aa98fafa104bc76b493106b8a543", +"T3B1_fr_test_firmware_hash.py::test_firmware_hash_emu": "29f74094a536aee7cafbc2e63fb29084607787ab9351a9b74ab74b20a34c60cf", +"T3B1_fr_test_firmware_hash.py::test_firmware_hash_hw": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_language.py::test_error_invalid_data_hash": "c3c594c2d963c7562250b5cae43e6933a6c67c8b7aa7063e58de94e56fdad446", +"T3B1_fr_test_language.py::test_error_invalid_data_length": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", +"T3B1_fr_test_language.py::test_error_invalid_header_magic": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", +"T3B1_fr_test_language.py::test_error_invalid_signature": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", +"T3B1_fr_test_language.py::test_error_too_long": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", +"T3B1_fr_test_language.py::test_error_version_mismatch": "cb1cd75e37f30dacba9ccd6d4a9d0ada0179a8ac056340ce16edb802d16fac8c", +"T3B1_fr_test_language.py::test_full_language_change[cs]": "42b092ceaf24b5f24004c9abfcf3536a297b0ebefc94767a6537c874856ff7f5", +"T3B1_fr_test_language.py::test_full_language_change[de]": "d51e49abee6755b254d37555830b6bebfbca95f549a31206efe11e2d08b8ef2a", +"T3B1_fr_test_language.py::test_full_language_change[en]": "5c8ccc0eb1be8baebf3d2cd0a60b022728933ac4180f27a0caa73a5b9fb0f642", +"T3B1_fr_test_language.py::test_full_language_change[es]": "e27434b09eef1556fe6fa0b050fb2b43eed6b4f37d622b7831a5fcbcde3f72bd", +"T3B1_fr_test_language.py::test_full_language_change[fr]": "7fae72778d7111b0d7746ce3fdfdae724415f651b2c3e195da55dc3cf6e24f8e", +"T3B1_fr_test_language.py::test_header_trailing_data": "30a19ba738d7bd2b5309351740a5102da462e73c6ec923a0ae92dc385c1c6f9e", +"T3B1_fr_test_language.py::test_language_is_removed_after_wipe": "2e4b88e512c805e6a90bbfc53ea207bfef270849ed05b43c4d4c4350634a3f5b", +"T3B1_fr_test_language.py::test_reject_update": "4c1d851a4f7ca6075e71d096a4b124b31f8ff280d609cc2495ded9750f057b51", +"T3B1_fr_test_language.py::test_silent_first_install[False-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", +"T3B1_fr_test_language.py::test_silent_first_install[None-False]": "6a9aab2dde637aa11bf3b6af49a738ebd88b5f9d63e3409cd4e276930b690270", +"T3B1_fr_test_language.py::test_silent_first_install[True-True]": "5c95cd9057626bd7c78132fecb0febf365d21430fd51fcfc5e788bd22f6398bb", +"T3B1_fr_test_language.py::test_switch_from_english[None]": "d626b26865aad63aef9745b0ba6bc06d4a84724fb5acc51d06446053fa4c2622", +"T3B1_fr_test_language.py::test_switch_from_english[True]": "d626b26865aad63aef9745b0ba6bc06d4a84724fb5acc51d06446053fa4c2622", +"T3B1_fr_test_language.py::test_switch_from_english_not_silent": "2d59eedb25da2468512d9576ef7d7f4528804d4fb8bb1921d4ee8d4d20d91196", +"T3B1_fr_test_language.py::test_switch_language": "d64c176bfb4ea6ddbb57c7b609ac0983b335ae0ce503c653480d379caf71976a", +"T3B1_fr_test_language.py::test_translations_renders_on_screen": "c96510d7b9812933713c70d22e2a549f12e888a28d8a2624a649d73bf3871d12", +"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "744a698ae5fc7d53600554d68eab2a3b3a6d3ed7f8a3dafd8a2382e5c741fad1", +"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "665f9d0cc8068b51109edcbb29410949ae35796b318da427e2226cd74dedddd9", +"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "7ea6d0c55fa400dd8b6181146e6c4ffe0605959487243e8ae3a2b71aedc92086", +"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_msg_applysettings.py::test_apply_settings": "6b2adf6c46c866ace9dc4c30ad1fb68b45e24e72feb8ee2037ddb61d0593dbc5", +"T3B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase": "5712955f435db11157fcb9396abcaf37949900cce9487089a6c64cd2d69fa1f8", +"T3B1_fr_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "c2af499645a7ee44dcc4ddbd9e9df812493082162739ec035b406dbbc29dfc3e", +"T3B1_fr_test_msg_applysettings.py::test_apply_settings_rotation": "d2bf23bd8a4910a28f90606740038748d8859865a90054241601a60eae74eee4", +"T3B1_fr_test_msg_applysettings.py::test_experimental_features": "f255b1a5c4f6e72b64a1b651cfcc47803668092e4c2a3da9f37f2796b515d675", +"T3B1_fr_test_msg_applysettings.py::test_label_too_long": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_msg_applysettings.py::test_safety_checks": "6cc280764a02e46da93f042f4b6b2fd1ee4464a460d75f7c0fae38759728e4f4", +"T3B1_fr_test_msg_backup_device.py::test_backup_bip39": "a9085f202d8b9a89da15ae653bb1fbe83f7a3ccebd474ddc7bda7ab88e275efe", +"T3B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", +"T3B1_fr_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "5bcb07f9372ace99cdcb4708a3344244654015792b87c81685afd7c929ff6e8a", +"T3B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "ba013cfbdd6736b0ac17aa85c65766d6d3027d9268a6af0e0278e504e27d07e6", +"T3B1_fr_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "a82e3853b5e8aae09551038d3c44bcf6dd432100197270e1c5e99fd2032df94f", +"T3B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "25b45a916474aa4e6db170ea873b829260351c41126ae529da6096ba61652539", +"T3B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "31fc1d149fa01408ab23339d3a984d2efcdfed072ed9994d9621ad71e1e4801a", +"T3B1_fr_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "cc19a3138911543f7dbb65762dbd5217f48bc35ab9559505f4991461e8cef1c1", +"T3B1_fr_test_msg_backup_device.py::test_interrupt_backup_fails": "05271bea33cb7e7760fe2ef99cc855a3b24412442e31e43f78f3c365e929dac5", +"T3B1_fr_test_msg_backup_device.py::test_no_backup_fails": "0d04829c9f4cd50c12c590fb59edb2d35e64f332359b5fe127b2fff9bc86b90a", +"T3B1_fr_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "a65fedb9eebf9b75fc75df51391b2fcea739a657a7a949aadae3b335600ebf90", +"T3B1_fr_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "6e6361deaa470d441e69a61a294a203e9aea3cf114b8919b5aef9b1ee66fb90a", +"T3B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "5364e98bc3e6941907557b4d563bd51b1dea6c6c2b789acd75cf81ea3b1f2b44", +"T3B1_fr_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "4d1b837fd72eafa139ec55bbe00a2bb01e0fc3ac21de59cfef59fd85c0483c9f", +"T3B1_fr_test_msg_changepin_t2.py::test_change_failed": "25c462a2a5676739d2614778488cc07b97fe096bf1ee3fb51441af785e6645d5", +"T3B1_fr_test_msg_changepin_t2.py::test_change_invalid_current": "9ba9ad78002bbe7775abcfb2b08677c985abe05a42090abe184f0a0876f9a5bd", +"T3B1_fr_test_msg_changepin_t2.py::test_change_pin": "e1a4ab43a6e7dd80185affe2cd99cd6afd10f5fb07a3e099dd929f44ab886c22", +"T3B1_fr_test_msg_changepin_t2.py::test_remove_pin": "e3ab26bda9322d0846860b4af634c6f5a4a525e015bb559ae05ff1616226e883", +"T3B1_fr_test_msg_changepin_t2.py::test_set_failed": "c54eef85a1d0dc450a51346dd3d7427dc351f24c0b2350c878cc08b48472476b", +"T3B1_fr_test_msg_changepin_t2.py::test_set_pin": "647efd371506e23f9300b6ff58ac6565597ee2310fb03a2fc5c449966672986f", +"T3B1_fr_test_msg_loaddevice.py::test_load_device_1": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", +"T3B1_fr_test_msg_loaddevice.py::test_load_device_2": "db00a26e8b4b190e62931e002a4d244cf6a563a838f7de754a8ef33ec73a883f", +"T3B1_fr_test_msg_loaddevice.py::test_load_device_slip39_advanced": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", +"T3B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", +"T3B1_fr_test_msg_loaddevice.py::test_load_device_utf": "a5fefc356ff9d247dd7bd9f51e6155731eebe27786bac5caf7619cba01e02850", +"T3B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", +"T3B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "070f03c81acb86de9d9e2aaa47c9346efe0ea630fdc651e25cbdfc78a9ea7368", +"T3B1_fr_test_msg_wipedevice.py::test_wipe_device": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", +"T3B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "66c433745d2114e94429ea4b870520ad489ae80252796a9d8da8792ae0dfa2b3", +"T3B1_fr_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "66c433745d2114e94429ea4b870520ad489ae80252796a9d8da8792ae0dfa2b3", +"T3B1_fr_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", +"T3B1_fr_test_passphrase_slip39_basic.py::test_2of5_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", +"T3B1_fr_test_passphrase_slip39_basic.py::test_3of6_passphrase": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", +"T3B1_fr_test_pin.py::test_correct_pin": "eaa73821d33bd8e0d872ed8c1a3a502cbb6838cb472a6ce3bc9a32a585297f22", +"T3B1_fr_test_pin.py::test_exponential_backoff_t2": "cb30648ae851f7bb39079317f3f357248ce77d93831d630d732c55aeb7e66437", +"T3B1_fr_test_pin.py::test_incorrect_pin_t2": "7607e494f4b01cf25938c262848d4cfcf66e16c3e5287d500ca966caa7dc7601", +"T3B1_fr_test_pin.py::test_no_protection": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_protection_levels.py::test_apply_settings": "484b44ce1af3db1706b7d745cb799d59018e53ae15ecc1f3b6d157b20ca8e860", +"T3B1_fr_test_protection_levels.py::test_change_pin_t2": "e26d2c5c0197bdae0045ff36117961fd602bb6e5be5bcdf30d5edb3f255f6a51", +"T3B1_fr_test_protection_levels.py::test_get_address": "0d1ff46a772bf1c941749e1dd2daef82ad098b6b4274866a0ab6962bf1f2991f", +"T3B1_fr_test_protection_levels.py::test_get_entropy": "f47aa25018b17569beffb5796a4aa64b7ef368d38f3658d44714931c1fe1a62c", +"T3B1_fr_test_protection_levels.py::test_get_public_key": "0d1ff46a772bf1c941749e1dd2daef82ad098b6b4274866a0ab6962bf1f2991f", +"T3B1_fr_test_protection_levels.py::test_initialize": "3a6fc53a154e468252200082f6b5e8db920d9f3d585a296a41bfd50586c1856b", +"T3B1_fr_test_protection_levels.py::test_passphrase_cached": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", +"T3B1_fr_test_protection_levels.py::test_passphrase_reporting[False]": "1037db9932479129aea1b3b137983ad283448f41f82fd79be96347856b4bb4a9", +"T3B1_fr_test_protection_levels.py::test_passphrase_reporting[True]": "eef6467a37bb7572dd3fa1cf70896878db35bbcf5cac378eb6375da0ca71edad", +"T3B1_fr_test_protection_levels.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", +"T3B1_fr_test_protection_levels.py::test_sign_message": "499aa1ab655334cf36c7d0ca4750e61a01be132bf02919d0a01ab82929727f87", +"T3B1_fr_test_protection_levels.py::test_signtx": "48236fce529361b51583e8e7125ba870da5c6846e93f2ef1e48b21ddaf242504", +"T3B1_fr_test_protection_levels.py::test_unlocked": "7f59e3db07b56dd4ad8f18954d9ff157ca544e1b94b00be1b55aedd5f9805d89", +"T3B1_fr_test_protection_levels.py::test_verify_message_t2": "651a5f37e406cbd5f4751d16a4d430d2a8fd3d3b222f3e27695342ed03dc9182", +"T3B1_fr_test_protection_levels.py::test_wipe_device": "012fe61fb16333d582486d7f30349df6c5f902f50830d9f5995f1dc88e23b124", +"T3B1_fr_test_repeated_backup.py::test_repeated_backup": "2dd056735372c5f1351629daa6731151de9cfc67b38e96f561383fff147e9f7a", +"T3B1_fr_test_repeated_backup.py::test_repeated_backup_cancel": "e813c44112061d58db3150a9333047a76a9948517236235999768b5e8a3683d4", +"T3B1_fr_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "fc7d74fab127f02de7e3ab97dcae5d7b3670635bc0bf515c0e70a435d3814097", +"T3B1_fr_test_repeated_backup.py::test_repeated_backup_upgrade_single": "31096ae6b628c0fe0f35c58c7c01abedf153ae1e6c0051ffb8f32597e0438a1b", +"T3B1_fr_test_session.py::test_cannot_resume_ended_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_session.py::test_clear_session": "9aca31bd4e8408f98819944f81951eed96dec078fe5ce7d10269f922faf984f9", +"T3B1_fr_test_session.py::test_derive_cardano_empty_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_session.py::test_derive_cardano_running_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_session.py::test_end_session": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_session.py::test_end_session_only_current": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_session.py::test_session_recycling": "dbc3e231763690cf1d9fe7140e573912aca5d4483661078cf3be5bccde00e34a", +"T3B1_fr_test_session_id_and_passphrase.py::test_cardano_passphrase": "edbf8c40bf7ece48bf6727a0492ee6dcb3e91a82932522b99801c1bf4eda57d1", +"T3B1_fr_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "4dd2c8aaed3f9bd357f4b14f98edc1cd809e8a054fa5c1092f9a82b1df7f42f2", +"T3B1_fr_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "e83fbbade16a5705f5cdaf29e36e2f4a459db58f710a4d31ca46e7e52fbd0c1a", +"T3B1_fr_test_session_id_and_passphrase.py::test_multiple_passphrases": "bdab81235e34c0c7446e170e6c430b8daed201a168518df4c20715d54155a25e", +"T3B1_fr_test_session_id_and_passphrase.py::test_multiple_sessions": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "eae80be6033f0455ff8892ef288561a4c0af84a27627d7f72998ed907aa28af3", +"T3B1_fr_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "fffcc2eefbd6456c9784b1689b34b9982c2d8f283441b8355521855e386ad90a", +"T3B1_fr_test_session_id_and_passphrase.py::test_passphrase_length": "9aaa4fb5933520726bfff7af28201859db8b4ecdca4b443528fadd203be19a88", +"T3B1_fr_test_session_id_and_passphrase.py::test_passphrase_missing": "8b1512b84fb4ecbaceb545cdff983ff7a8f11af14bd2f6967308aeba6bf4ab57", +"T3B1_fr_test_session_id_and_passphrase.py::test_passphrase_on_device": "82fd0e2579b699015c83946e7538f6e4f23f98b3ae4608e71e729b5c41202f51", +"T3B1_fr_test_session_id_and_passphrase.py::test_session_enable_passphrase": "1d3f1485834901b1a53a30405f5c1e26667adb56f1cf06cac068807326e87f18", +"T3B1_fr_test_session_id_and_passphrase.py::test_session_with_passphrase": "a433d453d7dae3bb1d3cbf1637e55a0b0ae5bab99d3c6b431fe98b67cf3f1f08", +"T3B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "ba9fe5b13953b72952449179d717b1dc52e6450b934c341fee319247281b663a", +"T3B1_fr_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "9ad5b6b401a2ce7676b4cba10b6d74abfb4d9887c42cd73cb3487649fbfa3a16", +"T3B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "a530de477c0377f1f44dcbd0f42b3c124362c996a72baacad110224d94b531ed", +"T3B1_fr_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "5631b4584d945aa3d27c9a6506562cb8e02fdd0650e8afc0b02b3a4e1fd1a212", +"T3B1_fr_tezos-test_getpublickey.py::test_tezos_get_public_key": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "46cc638c163497e2a442e25a62cc0a47bd6e22726beceaa440e392d843240b8b", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "938cee96ea1f98e4877d0b1d2ae5fc531a43fc6a28902a3bbf33c9951c16051b", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "f9f1d7f42c595c7f81376859f22296ff53bcdaac4c9f36176d679f6c3f60f479", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "0ccdfa8922983da156bfb2beb9676dc7677d8c663793128c31816c70184b7d4c", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "088d062356f1d93fd5fc24cbf73b60f582e3b4732ace52cfae4675603efc17fd", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "ece5e562fc4f726044dfcd4ce6c4319da9af4839b32fffb1b67e6b34a54151fe", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "fbdb13de4d5903fabc77ae6a73d6564228e10927ac4db6d451801ade2f396f1e", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "160f147dc3baa9d9592093312cc9bb2e473d38201e2cfc514ce6910287381e9b", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "5e9737de184d5087ef0e321a265a134a4de01820ea0076f2b9cd15c3819d15f8", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "bc8d1a01ee5fa2a82f617b7535865e68a82ed520dae809cdf9385af272d1e9e2", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "c00282de2bcc07531c9de0f2011ea95b289c3e94a31886dc0ccd4cd86f48783d", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "170ecb812d238b2cde92f4698bcd5c82c64fcd59175585df340f58af676acfff", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "8231883f448cdec51e4fdf8761bcfc4961cd43d50c0fec91ac39d3a1086868b5", +"T3B1_fr_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "6645c79e3f2307c00bc21d2c87712cebaf8f76e1abb4a027575fcd9518bce767", +"T3B1_fr_webauthn-test_msg_webauthn.py::test_add_remove": "13c9c0370118f70696c2fabd90b3094c32b9bae7c0eae64b8cec5c91831b2136", +"T3B1_fr_webauthn-test_u2f_counter.py::test_u2f_counter": "961943feaef8e0e3a0179d0519c079f4c4a755ed84123fb33ea2421fc4df8bb9", +"T3B1_fr_zcash-test_sign_tx.py::test_external_presigned": "1107376b8d9221aa0f441b9ff5beb17f1245df1f8f35207bdead0f8e8eeab4d2", +"T3B1_fr_zcash-test_sign_tx.py::test_one_two": "62dcee2f05b98b7e94a27b3f0ebc0cc37d2121918f1b2a64551899b15fbd9122", +"T3B1_fr_zcash-test_sign_tx.py::test_refuse_replacement_tx": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", +"T3B1_fr_zcash-test_sign_tx.py::test_send_to_multisig": "dd5672081a3af413d3a0735c90057f10ac9882b7f6d4100188ed639c0d81abd2", +"T3B1_fr_zcash-test_sign_tx.py::test_spend_multisig": "2e05a4239d21315735199ffac8cea895d059b0485151749c06da30227c59b40c", +"T3B1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "58d1eb4736d91116baffe5154f7325385df8df4c28cb6de617156d2d6b595e5b", +"T3B1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "ddde2a66279aa6cf32676a4eb1602cbd93ab757cb3478b6141e6f7c76857cbe5", +"T3B1_fr_zcash-test_sign_tx.py::test_unified_address": "bb62c591f6b5bd553148ef2f9d7d0308a95425d6df2addbbd8af0703ad9eb251", +"T3B1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20" +} +}, "T3T1": { "click_tests": { "T3T1_cs_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "099531de60d33afa60963920e8a24f681000a9d2fc894a143cc85eeae5005903", From 6506b02e2ec891a0a7fcca1d594d6adcc9618944 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 12:59:56 +0200 Subject: [PATCH 605/626] feat(python/debuglink): introduce layout type awareness [no changelog] --- python/src/trezorlib/debuglink.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/python/src/trezorlib/debuglink.py b/python/src/trezorlib/debuglink.py index e5326a2dfa..843bfca6dc 100644 --- a/python/src/trezorlib/debuglink.py +++ b/python/src/trezorlib/debuglink.py @@ -21,7 +21,7 @@ import time from copy import deepcopy from datetime import datetime -from enum import IntEnum +from enum import Enum, IntEnum, auto from itertools import zip_longest from pathlib import Path from typing import ( @@ -65,6 +65,25 @@ LOG = logging.getLogger(__name__) +class LayoutType(Enum): + T1 = auto() + TT = auto() + TR = auto() + Mercury = auto() + + @classmethod + def from_model(cls, model: models.TrezorModel) -> "LayoutType": + if model in (models.T2T1,): + return cls.TT + if model in (models.T2B1, models.T3B1): + return cls.TR + if model in (models.T3T1,): + return cls.Mercury + if model in (models.T1B1,): + return cls.T1 + raise ValueError(f"Unknown model: {model}") + + class UnstructuredJSONReader: """Contains data-parsing helpers for JSON data that have unknown structure.""" @@ -404,6 +423,11 @@ def legacy_debug(self) -> bool: """Differences in handling debug events and LayoutContent.""" return self.version < (2, 6, 1) + @property + def layout_type(self) -> LayoutType: + assert self.model is not None + return LayoutType.from_model(self.model) + def set_screen_text_file(self, file_path: Optional[Path]) -> None: if file_path is not None: file_path.write_bytes(b"") @@ -995,6 +1019,10 @@ def __init__(self, transport: "Transport", auto_interact: bool = True) -> None: self.debug.model = self.model self.debug.version = self.version + @property + def layout_type(self) -> LayoutType: + return self.debug.layout_type + def reset_debug_features(self) -> None: """Prepare the debugging client for a new testcase. From b3bd85b1fbe7e089d066a9d99803a84987bc96ff Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 13:01:16 +0200 Subject: [PATCH 606/626] refactor(tests): introduce a better model selection mechanism --- docs/developers/hello_world_feature_TT.md | 4 +- docs/tests/device-tests.md | 28 +++- tests/click_tests/common.py | 32 ++--- tests/click_tests/recovery.py | 41 +++--- tests/click_tests/reset.py | 48 +++---- tests/click_tests/test_autolock.py | 55 ++++---- .../click_tests/test_backup_slip39_custom.py | 9 +- tests/click_tests/test_lock.py | 7 +- tests/click_tests/test_passphrase_mercury.py | 2 +- tests/click_tests/test_passphrase_tr.py | 2 +- tests/click_tests/test_passphrase_tt.py | 2 +- tests/click_tests/test_pin.py | 43 +++--- tests/click_tests/test_recovery.py | 11 +- tests/click_tests/test_repeated_backup.py | 2 +- tests/click_tests/test_reset_bip39.py | 2 +- .../click_tests/test_reset_slip39_advanced.py | 2 +- tests/click_tests/test_reset_slip39_basic.py | 2 +- tests/click_tests/test_tutorial.py | 5 +- tests/common.py | 31 +++-- tests/conftest.py | 128 ++++++++++++------ .../device_tests/binance/test_get_address.py | 2 +- .../binance/test_get_public_key.py | 2 +- tests/device_tests/binance/test_sign_tx.py | 2 +- tests/device_tests/bitcoin/test_bcash.py | 2 +- tests/device_tests/bitcoin/test_bgold.py | 4 +- tests/device_tests/bitcoin/test_dash.py | 2 +- tests/device_tests/bitcoin/test_decred.py | 7 +- .../device_tests/bitcoin/test_descriptors.py | 2 +- tests/device_tests/bitcoin/test_getaddress.py | 4 +- .../bitcoin/test_getaddress_show.py | 10 +- .../device_tests/bitcoin/test_getpublickey.py | 2 +- .../device_tests/bitcoin/test_signmessage.py | 37 ++--- tests/device_tests/bitcoin/test_signtx.py | 19 +-- .../bitcoin/test_signtx_external.py | 14 +- .../bitcoin/test_signtx_payreq.py | 27 ++-- .../bitcoin/test_signtx_replacement.py | 8 +- tests/device_tests/bitcoin/test_zcash.py | 2 +- .../cardano/test_address_public_key.py | 2 +- .../device_tests/cardano/test_derivations.py | 2 +- .../cardano/test_get_native_script_hash.py | 2 +- tests/device_tests/cardano/test_sign_tx.py | 11 +- tests/device_tests/eos/test_get_public_key.py | 4 +- tests/device_tests/eos/test_signtx.py | 4 +- .../device_tests/ethereum/test_definitions.py | 7 +- .../device_tests/ethereum/test_getaddress.py | 2 +- .../ethereum/test_getpublickey.py | 4 +- .../ethereum/test_sign_typed_data.py | 11 +- tests/device_tests/ethereum/test_signtx.py | 18 +-- tests/device_tests/monero/test_getaddress.py | 2 +- tests/device_tests/monero/test_getwatchkey.py | 2 +- tests/device_tests/nem/test_getaddress.py | 3 +- tests/device_tests/nem/test_signtx_mosaics.py | 3 +- .../device_tests/nem/test_signtx_multisig.py | 3 +- tests/device_tests/nem/test_signtx_others.py | 3 +- .../device_tests/nem/test_signtx_transfers.py | 3 +- .../test_recovery_bip39_dryrun.py | 6 +- .../reset_recovery/test_recovery_bip39_t1.py | 2 +- .../reset_recovery/test_recovery_bip39_t2.py | 2 +- .../test_recovery_slip39_advanced.py | 2 +- .../test_recovery_slip39_advanced_dryrun.py | 2 +- .../test_recovery_slip39_basic.py | 2 +- .../test_recovery_slip39_basic_dryrun.py | 2 +- .../reset_recovery/test_reset_backup.py | 4 +- .../test_reset_bip39_skipbackup.py | 2 +- .../reset_recovery/test_reset_bip39_t1.py | 2 +- .../reset_recovery/test_reset_bip39_t2.py | 7 +- .../test_reset_recovery_bip39.py | 2 +- .../test_reset_recovery_slip39_advanced.py | 2 +- .../test_reset_recovery_slip39_basic.py | 2 +- .../test_reset_slip39_advanced.py | 2 +- .../reset_recovery/test_reset_slip39_basic.py | 2 +- tests/device_tests/ripple/test_get_address.py | 2 +- tests/device_tests/ripple/test_sign_tx.py | 2 +- tests/device_tests/solana/test_address.py | 2 +- tests/device_tests/solana/test_public_key.py | 2 +- tests/device_tests/solana/test_sign_tx.py | 2 +- tests/device_tests/stellar/test_stellar.py | 2 +- .../device_tests/test_authenticate_device.py | 12 +- tests/device_tests/test_autolock.py | 2 +- tests/device_tests/test_bip32_speed.py | 4 +- tests/device_tests/test_busy_state.py | 5 +- tests/device_tests/test_cancel.py | 6 +- tests/device_tests/test_debuglink.py | 14 +- tests/device_tests/test_firmware_hash.py | 1 + tests/device_tests/test_language.py | 3 +- tests/device_tests/test_msg_applysettings.py | 46 ++----- tests/device_tests/test_msg_backup_device.py | 15 +- .../test_msg_change_wipe_code_t1.py | 2 +- .../test_msg_change_wipe_code_t2.py | 50 ++++--- tests/device_tests/test_msg_changepin_t1.py | 2 +- tests/device_tests/test_msg_changepin_t2.py | 26 ++-- tests/device_tests/test_msg_loaddevice.py | 4 +- tests/device_tests/test_msg_sd_protect.py | 2 +- .../test_msg_show_device_tutorial.py | 23 +++- .../test_passphrase_slip39_advanced.py | 4 +- .../test_passphrase_slip39_basic.py | 5 +- tests/device_tests/test_pin.py | 12 +- tests/device_tests/test_protection_levels.py | 25 ++-- tests/device_tests/test_repeated_backup.py | 6 +- tests/device_tests/test_sdcard.py | 2 +- tests/device_tests/test_session.py | 4 +- .../test_session_id_and_passphrase.py | 19 ++- tests/device_tests/tezos/test_getaddress.py | 2 +- tests/device_tests/tezos/test_getpublickey.py | 2 +- tests/device_tests/tezos/test_sign_tx.py | 2 +- .../webauthn/test_msg_webauthn.py | 2 +- tests/device_tests/zcash/test_sign_tx.py | 4 +- tests/input_flows.py | 39 +++--- tests/input_flows_helpers.py | 75 +++++----- tests/ui_tests/fixtures.json | 3 +- 110 files changed, 589 insertions(+), 577 deletions(-) diff --git a/docs/developers/hello_world_feature_TT.md b/docs/developers/hello_world_feature_TT.md index e4908b6086..fffa7e0f60 100644 --- a/docs/developers/hello_world_feature_TT.md +++ b/docs/developers/hello_world_feature_TT.md @@ -308,7 +308,7 @@ VECTORS = ( # name, amount, show_display ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize("name, amount, show_display", VECTORS) def test_hello_world( client: Client, name: str, amount: Optional[int], show_display: bool @@ -325,7 +325,7 @@ def test_hello_world( Unlike in unit tests, [pytest](https://docs.pytest.org) is used as the test framework, which is more suitable for bigger and more complex test suites. -As the functionality is developed only for `TT`, to not break the `CI`, we want to skip this test's execution for model `T1`, by adding `@pytest.mark.skip_t1b1` decorator. +As the functionality is developed only for `core`, we want to limit the test via `@pytest.mark.models("core")`, otherwise the CI would run it (and fail) for Trezor One too. We are also using the `@pytest.mark.parametrize` decorator, which is an efficient way of testing multiple inputs into the same test case. diff --git a/docs/tests/device-tests.md b/docs/tests/device-tests.md index 50d6081088..3165423dc6 100644 --- a/docs/tests/device-tests.md +++ b/docs/tests/device-tests.md @@ -105,12 +105,28 @@ the following marker: This marker must be registered in `REGISTERED_MARKERS` file in `tests` folder. -Tests can be run only for specific models - it is done by disallowing the tests for the other models. -`@pytest.mark.skip_t1b1` -`@pytest.mark.skip_t2t1` -`@pytest.mark.skip_t2b1` -`@pytest.mark.skip_t3t1` -are valid markers to skip current test for Model 1, Model T, Safe 3, and T3T1 respectively. +Tests can be run only for specific models. The marker `@pytest.mark.models()` can be +used to narrow the selection: + +* `@pytest.mark.models("t3b1", "t2t1)` - only for Safe 3 rev2 and Trezor T +* `@pytest.mark.models("core")` - only for trezor-core models (skip Trezor One) +* `@pytest.mark.models(skip="t3t1")` - for all models except Safe 5 +* `@pytest.mark.models("core", skip="t3t1")` - for all trezor-core models except Safe 5 + +Arguments can be a list of internal model names, or one of the following shortcuts: + +* `core` - all trezor-core models +* `legacy` - just Trezor One +* `safe` - Trezor Safe family +* `safe3` - Trezor Safe 3 (covers T2B1 and T2T1) +* `mercury` - covers the `mercury` layout (currently T3T1 only) + +You can specify a list as positional arguments, and exclude from it via `skip` keyword argument. + +You can provide a list of strings, a list of `TrezorModel` instances, or a +comma-separated string of model names or shortcuts. + +You can specify a skip reason as `reason="TODO implement for Mercury too"`. [pytest-random-order]: https://pypi.org/project/pytest-random-order/ diff --git a/tests/click_tests/common.py b/tests/click_tests/common.py index e85fc2b956..76f198fac2 100644 --- a/tests/click_tests/common.py +++ b/tests/click_tests/common.py @@ -3,7 +3,7 @@ from enum import Enum from typing import TYPE_CHECKING -from trezorlib import models +from trezorlib.debuglink import LayoutType from .. import buttons from .. import translations as TR @@ -45,23 +45,23 @@ def get_char_category(char: str) -> PassphraseCategory: return PassphraseCategory.SPECIAL -def go_next(debug: "DebugLink", wait: bool = False) -> "LayoutContent" | None: - if debug.model in (models.T2T1,): +def go_next(debug: "DebugLink", wait: bool = False) -> LayoutContent | None: + if debug.layout_type is LayoutType.TT: return debug.click(buttons.OK, wait=wait) # type: ignore - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: return debug.press_right(wait=wait) # type: ignore - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: return debug.swipe_up(wait=wait) else: raise RuntimeError("Unknown model") -def tap_to_confirm(debug: "DebugLink", wait: bool = False) -> "LayoutContent" | None: - if debug.model in (models.T2T1,): +def tap_to_confirm(debug: "DebugLink", wait: bool = False) -> LayoutContent | None: + if debug.layout_type is LayoutType.TT: return debug.read_layout() # type: ignore - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: return debug.read_layout() # type: ignore - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: return debug.click(buttons.TAP_TO_CONFIRM, wait=wait) else: raise RuntimeError("Unknown model") @@ -69,10 +69,10 @@ def tap_to_confirm(debug: "DebugLink", wait: bool = False) -> "LayoutContent" | def go_back( debug: "DebugLink", wait: bool = False, r_middle: bool = False -) -> "LayoutContent" | None: - if debug.model in (models.T2T1, models.T3T1): +) -> LayoutContent | None: + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): return debug.click(buttons.CANCEL, wait=wait) # type: ignore - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: if r_middle: return debug.press_middle(wait=wait) # type: ignore @@ -124,12 +124,12 @@ def current_is_wanted(wanted_action: str) -> bool: debug.press_middle(wait=True) -def unlock_gesture(debug: "DebugLink", wait: bool = False) -> "LayoutContent" | None: - if debug.model in (models.T2T1,): +def unlock_gesture(debug: "DebugLink", wait: bool = False) -> LayoutContent | None: + if debug.layout_type is LayoutType.TT: return debug.click(buttons.OK, wait=wait) # type: ignore - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: return debug.press_right(wait=wait) # type: ignore - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: return debug.click(buttons.TAP_TO_CONFIRM, wait=wait) # type: ignore else: raise RuntimeError("Unknown model") diff --git a/tests/click_tests/recovery.py b/tests/click_tests/recovery.py index 1177effeb1..11e619ee97 100644 --- a/tests/click_tests/recovery.py +++ b/tests/click_tests/recovery.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING -from trezorlib import models +from trezorlib.debuglink import LayoutType from .. import buttons from .. import translations as TR @@ -18,15 +18,15 @@ def enter_word( debug: "DebugLink", word: str, is_slip39: bool = False ) -> "LayoutContent": - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): typed_word = word[:4] for coords in buttons.type_word(typed_word, is_slip39=is_slip39): debug.click(coords) - if debug.model is models.T3T1 and not is_slip39 and len(word) > 4: + if debug.layout_type is LayoutType.Mercury and not is_slip39 and len(word) > 4: # T3T1 (mercury) BIP39 keyboard allows to "confirm" only if the word is fully written, you need to click the word to auto-complete debug.click(buttons.CONFIRM_WORD, wait=True) return debug.click(buttons.CONFIRM_WORD, wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: letter_index = 0 layout = debug.read_layout() @@ -51,11 +51,11 @@ def enter_word( def confirm_recovery(debug: "DebugLink", title: str = "recovery__title") -> None: layout = debug.wait_layout() TR.assert_equals(layout.title(), title) - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK, wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_right(wait=True) @@ -110,23 +110,20 @@ def select_mercury() -> "LayoutContent": if wait: debug.wait_layout() - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: TR.assert_equals(debug.read_layout().text_content(), "recovery__num_of_words") layout = select_tt() - elif debug.model in ( - models.T2B1, - models.T3B1, - ): + elif debug.layout_type is LayoutType.TR: layout = debug.press_right(wait=True) TR.assert_equals(layout.title(), "word_count__title") layout = select_tr() - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: layout = select_mercury() else: raise ValueError("Unknown model") if unlock_repeated_backup: - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: TR.assert_in(layout.text_content(), "recovery__enter_backup") else: TR.assert_in_multiple( @@ -160,12 +157,12 @@ def enter_share( is_first: bool = True, before_title: str = "recovery__title_recover", ) -> "LayoutContent": - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: TR.assert_in(debug.read_layout().title(), before_title) layout = debug.wait_layout() for _ in range(layout.page_count()): layout = debug.press_right(wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: layout = debug.swipe_up(wait=True) else: TR.assert_in(debug.read_layout().title(), before_title) @@ -243,11 +240,11 @@ def enter_seed_previous_correct( if go_back: go_back = False - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.swipe_right(wait=True) for _ in range(len(bad_word)): debug.click(buttons.RECOVERY_DELETE, wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: layout = debug.read_layout() while layout.get_middle_choice() not in DELETE_BTN_TEXTS: @@ -258,7 +255,7 @@ def enter_seed_previous_correct( while layout.get_middle_choice() not in DELETE_BTN_TEXTS: layout = debug.press_left(wait=True) layout = debug.press_middle(wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.click(buttons.RECOVERY_DELETE, wait=True) # Top-left for _ in range(len(bad_word)): debug.click(buttons.RECOVERY_DELETE, wait=True) @@ -288,12 +285,12 @@ def prepare_enter_seed( layout_text, ], ) - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK, wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) debug.swipe_up(wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_right(wait=True) debug.press_right() layout = debug.press_right(wait=True) diff --git a/tests/click_tests/reset.py b/tests/click_tests/reset.py index 47a7e48f23..d85de9bf12 100644 --- a/tests/click_tests/reset.py +++ b/tests/click_tests/reset.py @@ -3,7 +3,7 @@ from shamir_mnemonic import shamir # type: ignore -from trezorlib import models +from trezorlib.debuglink import LayoutType from .. import buttons from .. import translations as TR @@ -14,23 +14,23 @@ def confirm_new_wallet(debug: "DebugLink") -> None: TR.assert_equals(debug.read_layout().title(), "reset__title_create_wallet") - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK, wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) debug.click(buttons.TAP_TO_CONFIRM, wait=True) debug.swipe_up(wait=True) # Wallet created - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_right(wait=True) debug.press_right(wait=True) def confirm_read(debug: "DebugLink", middle_r: bool = False) -> None: - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK, wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: page_count = debug.read_layout().page_count() if page_count > 1: for _ in range(page_count - 1): @@ -44,30 +44,30 @@ def confirm_read(debug: "DebugLink", middle_r: bool = False) -> None: def cancel_backup( debug: "DebugLink", middle_r: bool = False, confirm: bool = False ) -> None: - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.CANCEL, wait=True) debug.click(buttons.CANCEL, wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.click(buttons.CORNER_BUTTON, wait=True) debug.click(buttons.VERTICAL_MENU[0], wait=True) if confirm: debug.swipe_up(wait=True) debug.click(buttons.TAP_TO_CONFIRM) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_left(wait=True) debug.press_left(wait=True) def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> None: - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): assert "NumberInputDialog" in debug.read_layout().all_components() for _ in range(diff): debug.click(button, wait=True) - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK, wait=True) else: debug.swipe_up(wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: layout = debug.read_layout() if layout.title() in TR.translate( "reset__title_number_of_shares" @@ -87,9 +87,9 @@ def set_selection(debug: "DebugLink", button: tuple[int, int], diff: int) -> Non def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: words: list[str] = [] - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: debug.press_right(wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) # Swiping through all the pages and loading the words @@ -98,19 +98,19 @@ def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: words.extend(layout.seed_words()) layout = debug.swipe_up(wait=True) assert layout is not None - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): words.extend(layout.seed_words()) - if debug.model in (models.T3T1,): + if debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) # There is hold-to-confirm button if do_htc: - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click_hold(buttons.OK, hold_ms=1500) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1500) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_right_htc(1200) else: # It would take a very long time to test 16-of-16 with doing 1500 ms HTC after @@ -121,11 +121,11 @@ def read_words(debug: "DebugLink", do_htc: bool = True) -> list[str]: def confirm_words(debug: "DebugLink", words: list[str]) -> None: - if debug.model in (models.T3T1,): + if debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) layout = debug.wait_layout() - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: TR.assert_template(layout.text_content(), "reset__select_word_x_of_y_template") for _ in range(3): # "Select word 3 of 20" @@ -140,7 +140,7 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: wanted_word = words[word_pos - 1].lower() button_pos = btn_texts.index(wanted_word) layout = debug.click(buttons.RESET_WORD_CHECK[button_pos], wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: TR.assert_template(layout.subtitle(), "reset__select_word_x_of_y_template") for _ in range(3): # "Select word 3 of 20" @@ -155,7 +155,7 @@ def confirm_words(debug: "DebugLink", words: list[str]) -> None: wanted_word = words[word_pos - 1].lower() button_pos = btn_texts.index(wanted_word) layout = debug.click(buttons.VERTICAL_MENU[button_pos], wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: TR.assert_in(layout.text_content(), "reset__select_correct_word") layout = debug.press_right(wait=True) for _ in range(3): diff --git a/tests/click_tests/test_autolock.py b/tests/click_tests/test_autolock.py index e2ec5729d9..46c62b1313 100644 --- a/tests/click_tests/test_autolock.py +++ b/tests/click_tests/test_autolock.py @@ -20,7 +20,8 @@ import pytest -from trezorlib import btc, device, exceptions, messages, models +from trezorlib import btc, device, exceptions, messages +from trezorlib.debuglink import LayoutType from trezorlib.protobuf import MessageType from trezorlib.tools import parse_path @@ -70,7 +71,7 @@ def set_autolock_delay(device_handler: "BackgroundDeviceHandler", delay_ms: int) ) layout = go_next(debug, wait=True) - if debug.model in (models.T3T1,): + if debug.layout_type is LayoutType.Mercury: layout = tap_to_confirm(debug, wait=True) assert layout.main_component() == "Homescreen" assert device_handler.result() == "Settings applied" @@ -104,17 +105,17 @@ def test_autolock_interrupts_signing(device_handler: "BackgroundDeviceHandler"): in debug.wait_layout().text_content().replace(" ", "") ) - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK, wait=True) layout = debug.click(buttons.OK, wait=True) TR.assert_in(layout.text_content(), "send__total_amount") assert "0.0039 BTC" in layout.text_content() - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) layout = debug.swipe_up(wait=True) TR.assert_in(layout.text_content(), "send__total_amount") assert "0.0039 BTC" in layout.text_content() - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_right(wait=True) layout = debug.press_right(wait=True) TR.assert_in(layout.text_content(), "send__total_amount") @@ -156,18 +157,18 @@ def test_autolock_does_not_interrupt_signing(device_handler: "BackgroundDeviceHa in debug.wait_layout().text_content().replace(" ", "") ) - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK, wait=True) layout = debug.click(buttons.OK, wait=True) TR.assert_in(layout.text_content(), "send__total_amount") assert "0.0039 BTC" in layout.text_content() - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.swipe_up(wait=True) layout = debug.swipe_up(wait=True) TR.assert_in(layout.text_content(), "send__total_amount") assert "0.0039 BTC" in layout.text_content() debug.swipe_up(wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_right(wait=True) layout = debug.press_right(wait=True) TR.assert_in(layout.text_content(), "send__total_amount") @@ -181,11 +182,11 @@ def sleepy_filter(msg: MessageType) -> MessageType: with device_handler.client: device_handler.client.set_filter(messages.TxAck, sleepy_filter) # confirm transaction - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.click(buttons.TAP_TO_CONFIRM) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_middle() signatures, tx = device_handler.result() @@ -205,20 +206,20 @@ def test_autolock_passphrase_keyboard(device_handler: "BackgroundDeviceHandler") assert "PassphraseKeyboard" in debug.wait_layout().all_components() - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: # Going into the selected character category debug.press_middle() # enter passphrase - slowly # keep clicking for long enough to trigger the autolock if it incorrectly ignored key presses for _ in range(math.ceil(11 / 1.5)): - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: # click at "j" debug.click(CENTER_BUTTON) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: # click at "j" debug.click((20, 120)) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: # just go right # NOTE: because of passphrase randomization it would be a pain to input # a specific passphrase, which is not in scope for this test. @@ -226,11 +227,11 @@ def test_autolock_passphrase_keyboard(device_handler: "BackgroundDeviceHandler") time.sleep(1.5) # Send the passphrase to the client (TT has it clicked already, TR needs to input it) - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: debug.click(buttons.OK, wait=True) - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: debug.click(buttons.CORNER_BUTTON, wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.input("j" * 8, wait=True) # address corresponding to "jjjjjjjj" passphrase @@ -247,16 +248,16 @@ def test_autolock_interrupts_passphrase(device_handler: "BackgroundDeviceHandler assert "PassphraseKeyboard" in debug.wait_layout().all_components() - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: # Going into the selected character category debug.press_middle() # enter passphrase - slowly # autolock must activate even if we pressed some buttons for _ in range(math.ceil(6 / 1.5)): - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): debug.click(CENTER_BUTTON) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_middle() time.sleep(1.5) @@ -287,7 +288,7 @@ def test_dryrun_locks_at_number_of_words(device_handler: "BackgroundDeviceHandle layout = unlock_dry_run(debug) TR.assert_in(debug.wait_layout().text_content(), "recovery__num_of_words") - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: debug.press_right(wait=True) # wait for autolock to trigger @@ -321,10 +322,10 @@ def test_dryrun_locks_at_word_entry(device_handler: "BackgroundDeviceHandler"): # select 20 words recovery.select_number_of_words(debug, 20) - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): layout = go_next(debug, wait=True) assert layout.main_component() == "MnemonicKeyboard" - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: layout = debug.press_right(wait=True) assert "MnemonicKeyboard" in layout.all_components() @@ -347,7 +348,7 @@ def test_dryrun_enter_word_slowly(device_handler: "BackgroundDeviceHandler"): # select 20 words recovery.select_number_of_words(debug, 20) - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: layout = debug.click(buttons.OK, wait=True) assert layout.main_component() == "MnemonicKeyboard" @@ -358,7 +359,7 @@ def test_dryrun_enter_word_slowly(device_handler: "BackgroundDeviceHandler"): layout = debug.click(buttons.CONFIRM_WORD, wait=True) # should not have locked, even though we took 9 seconds to type each letter assert layout.main_component() == "MnemonicKeyboard" - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: layout = debug.swipe_up(wait=True) assert layout.main_component() == "MnemonicKeyboard" @@ -369,7 +370,7 @@ def test_dryrun_enter_word_slowly(device_handler: "BackgroundDeviceHandler"): layout = debug.click(buttons.CONFIRM_WORD, wait=True) # should not have locked, even though we took 9 seconds to type each letter assert layout.main_component() == "MnemonicKeyboard" - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: layout = debug.press_right(wait=True) assert "MnemonicKeyboard" in layout.all_components() diff --git a/tests/click_tests/test_backup_slip39_custom.py b/tests/click_tests/test_backup_slip39_custom.py index bb7557b03a..2a99f97446 100644 --- a/tests/click_tests/test_backup_slip39_custom.py +++ b/tests/click_tests/test_backup_slip39_custom.py @@ -18,7 +18,8 @@ import pytest -from trezorlib import device, messages, models +from trezorlib import device, messages +from trezorlib.debuglink import LayoutType from ..common import EXTERNAL_ENTROPY, WITH_MOCK_URANDOM, generate_entropy from . import reset @@ -27,7 +28,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") @pytest.mark.parametrize( @@ -96,9 +97,9 @@ def test_backup_slip39_custom( all_words.append(" ".join(words)) # confirm backup done - if debug.model is models.T3T1 and share_count > 1: + if debug.layout_type is LayoutType.Mercury and share_count > 1: reset.confirm_read(debug) - elif debug.model != models.T3T1: + elif debug.layout_type is not LayoutType.Mercury: reset.confirm_read(debug) # generate secret locally diff --git a/tests/click_tests/test_lock.py b/tests/click_tests/test_lock.py index e9d3da66c6..c13d22fd6c 100644 --- a/tests/click_tests/test_lock.py +++ b/tests/click_tests/test_lock.py @@ -20,6 +20,7 @@ import pytest from trezorlib import models +from trezorlib.debuglink import LayoutType from .. import buttons, common @@ -37,18 +38,20 @@ def test_hold_to_lock(device_handler: "BackgroundDeviceHandler"): short_duration = { models.T1B1: 500, models.T2B1: 500, + models.T3B1: 500, models.T2T1: 1000, models.T3T1: 1000, }[debug.model] lock_duration = { models.T1B1: 1200, models.T2B1: 1200, + models.T3B1: 1200, models.T2T1: 3500, models.T3T1: 3500, }[debug.model] def hold(duration: int, wait: bool = True) -> None: - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: debug.press_right_htc(hold_ms=duration) else: debug.input(x=13, y=37, hold_ms=duration, wait=wait) @@ -75,7 +78,7 @@ def hold(duration: int, wait: bool = True) -> None: assert device_handler.features().unlocked is False # unlock by touching - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: # Doing a short HTC to simulate a click debug.press_right_htc(hold_ms=100) layout = debug.wait_layout() diff --git a/tests/click_tests/test_passphrase_mercury.py b/tests/click_tests/test_passphrase_mercury.py index 7f37d334d4..02e6d67344 100644 --- a/tests/click_tests/test_passphrase_mercury.py +++ b/tests/click_tests/test_passphrase_mercury.py @@ -32,7 +32,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1, pytest.mark.skip_t2t1] +pytestmark = pytest.mark.models("mercury") PASSPHRASE_CANCELLED = pytest.raises(exceptions.Cancelled, match="") diff --git a/tests/click_tests/test_passphrase_tr.py b/tests/click_tests/test_passphrase_tr.py index 5b850f879b..dc1ba0bf6d 100644 --- a/tests/click_tests/test_passphrase_tr.py +++ b/tests/click_tests/test_passphrase_tr.py @@ -36,7 +36,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2t1, pytest.mark.skip_t3t1] +pytestmark = pytest.mark.models("safe3") # Testing the maximum length is really 50 # TODO: show some UI message when length reaches 50? diff --git a/tests/click_tests/test_passphrase_tt.py b/tests/click_tests/test_passphrase_tt.py index 8a3dbc9cd2..9ca26d02a9 100644 --- a/tests/click_tests/test_passphrase_tt.py +++ b/tests/click_tests/test_passphrase_tt.py @@ -30,7 +30,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] +pytestmark = pytest.mark.models("t2t1") # TODO: it is not possible to cancel the passphrase entry on TT # NOTE: the prompt (underscoring) is not there when a space is entered diff --git a/tests/click_tests/test_pin.py b/tests/click_tests/test_pin.py index 410cf43e5d..d045063f64 100644 --- a/tests/click_tests/test_pin.py +++ b/tests/click_tests/test_pin.py @@ -20,7 +20,8 @@ import pytest -from trezorlib import device, exceptions, models +from trezorlib import device, exceptions +from trezorlib.debuglink import LayoutType from .. import buttons from .. import translations as TR @@ -37,7 +38,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") PIN_CANCELLED = pytest.raises(exceptions.TrezorFailure, match="PIN entry cancelled") PIN_INVALID = pytest.raises(exceptions.TrezorFailure, match="PIN invalid") @@ -105,9 +106,9 @@ def prepare( TR.assert_in_multiple( debug.wait_layout().text_content(), ["pin__turn_on", "pin__info"] ) - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): go_next(debug) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: go_next(debug, wait=True) go_next(debug, wait=True) go_next(debug, wait=True) @@ -126,7 +127,7 @@ def prepare( _input_see_confirm(debug, old_pin) TR.assert_in(debug.wait_layout().text_content(), "wipe_code__turn_on") go_next(debug, wait=True) - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: go_next(debug, wait=True) go_next(debug, wait=True) go_next(debug, wait=True) @@ -138,7 +139,7 @@ def prepare( _assert_pin_entry(debug) yield debug - if debug.model in (models.T3T1,) and tap: + if debug.layout_type is LayoutType.Mercury and tap: go_next(debug, wait=True) debug.click(buttons.TAP_TO_CONFIRM) else: @@ -156,13 +157,13 @@ def _input_pin(debug: "DebugLink", pin: str, check: bool = False) -> None: if check: before = debug.read_layout().pin() - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): digits_order = debug.read_layout().tt_pin_digits_order() for digit in pin: digit_index = digits_order.index(digit) coords = buttons.pin_passphrase_index(digit_index) debug.click(coords, wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: for digit in pin: navigate_to_action_and_press(debug, digit, TR_PIN_ACTIONS) @@ -173,9 +174,9 @@ def _input_pin(debug: "DebugLink", pin: str, check: bool = False) -> None: def _see_pin(debug: "DebugLink") -> None: """Navigate to "SHOW" and press it""" - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): debug.click(buttons.TOP_ROW, wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: navigate_to_action_and_press(debug, SHOW, TR_PIN_ACTIONS) @@ -185,9 +186,9 @@ def _delete_pin(debug: "DebugLink", digits_to_delete: int, check: bool = True) - before = debug.read_layout().pin() for _ in range(digits_to_delete): - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): debug.click(buttons.pin_passphrase_grid(9), wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: navigate_to_action_and_press(debug, DELETE, TR_PIN_ACTIONS) if check: @@ -197,9 +198,9 @@ def _delete_pin(debug: "DebugLink", digits_to_delete: int, check: bool = True) - def _delete_all(debug: "DebugLink", check: bool = True) -> None: """Navigate to "DELETE" and hold it until all digits are deleted""" - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): debug.click_hold(buttons.pin_passphrase_grid(9), hold_ms=1500) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: navigate_to_action_and_press(debug, DELETE, TR_PIN_ACTIONS, hold_ms=1000) if check: @@ -216,9 +217,9 @@ def _cancel_pin(debug: "DebugLink") -> None: def _confirm_pin(debug: "DebugLink") -> None: """Navigate to "ENTER" and press it""" - if debug.model in (models.T2T1, models.T3T1): + if debug.layout_type in (LayoutType.TT, LayoutType.Mercury): debug.click(buttons.pin_passphrase_grid(11), wait=True) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: navigate_to_action_and_press(debug, ENTER, TR_PIN_ACTIONS) @@ -231,7 +232,7 @@ def _input_see_confirm(debug: "DebugLink", pin: str) -> None: def _enter_two_times(debug: "DebugLink", pin1: str, pin2: str) -> None: _input_see_confirm(debug, pin1) - if debug.model in (models.T2B1,): + if debug.layout_type is LayoutType.TR: # Please re-enter go_next(debug, wait=True) @@ -300,7 +301,7 @@ def test_pin_incorrect(device_handler: "BackgroundDeviceHandler"): _input_see_confirm(debug, PIN4) -@pytest.mark.skip_t2b1("TODO: will we support cancelling on T2B1?") +@pytest.mark.models(skip="safe3", reason="TODO: will we support cancelling on T2B1?") @pytest.mark.setup_client(pin=PIN4) def test_pin_cancel(device_handler: "BackgroundDeviceHandler"): with PIN_CANCELLED, prepare(device_handler, Situation.PIN_INPUT_CANCEL) as debug: @@ -321,13 +322,13 @@ def test_pin_setup(device_handler: "BackgroundDeviceHandler"): def test_pin_setup_mismatch(device_handler: "BackgroundDeviceHandler"): with PIN_CANCELLED, prepare(device_handler, Situation.PIN_SETUP) as debug: _enter_two_times(debug, "1", "2") - if debug.model in (models.T2T1,): + if debug.layout_type is LayoutType.TT: go_next(debug) _cancel_pin(debug) - elif debug.model in (models.T2B1,): + elif debug.layout_type is LayoutType.TR: debug.press_middle() debug.press_no() - elif debug.model in (models.T3T1,): + elif debug.layout_type is LayoutType.Mercury: go_next(debug, wait=True) _cancel_pin(debug) diff --git a/tests/click_tests/test_recovery.py b/tests/click_tests/test_recovery.py index eab50c2d5f..30cf136815 100644 --- a/tests/click_tests/test_recovery.py +++ b/tests/click_tests/test_recovery.py @@ -19,7 +19,8 @@ import pytest -from trezorlib import device, messages, models +from trezorlib import device, messages +from trezorlib.debuglink import LayoutType from ..common import MNEMONIC12, MNEMONIC_SLIP39_BASIC_20_3of6 from . import recovery @@ -30,7 +31,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") @contextmanager @@ -54,7 +55,7 @@ def prepare_recovery_and_evaluate( def test_recovery_slip39_basic(device_handler: "BackgroundDeviceHandler"): with prepare_recovery_and_evaluate(device_handler) as debug: recovery.confirm_recovery(debug) - if debug.model is models.T2B1: + if debug.layout_type is LayoutType.TR: recovery.confirm_recovery(debug) recovery.select_number_of_words(debug) @@ -66,7 +67,7 @@ def test_recovery_slip39_basic(device_handler: "BackgroundDeviceHandler"): def test_recovery_bip39(device_handler: "BackgroundDeviceHandler"): with prepare_recovery_and_evaluate(device_handler) as debug: recovery.confirm_recovery(debug) - if debug.model is models.T2B1: + if debug.layout_type is LayoutType.TR: recovery.confirm_recovery(debug) recovery.select_number_of_words(debug, num_of_words=12) @@ -78,7 +79,7 @@ def test_recovery_bip39(device_handler: "BackgroundDeviceHandler"): def test_recovery_bip39_previous_word(device_handler: "BackgroundDeviceHandler"): with prepare_recovery_and_evaluate(device_handler) as debug: recovery.confirm_recovery(debug) - if debug.model is models.T2B1: + if debug.layout_type is LayoutType.TR: recovery.confirm_recovery(debug) recovery.select_number_of_words(debug, num_of_words=12) diff --git a/tests/click_tests/test_repeated_backup.py b/tests/click_tests/test_repeated_backup.py index d62f0cc6ef..ff2eff3a21 100644 --- a/tests/click_tests/test_repeated_backup.py +++ b/tests/click_tests/test_repeated_backup.py @@ -29,7 +29,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/click_tests/test_reset_bip39.py b/tests/click_tests/test_reset_bip39.py index 5d15790d63..9af853f849 100644 --- a/tests/click_tests/test_reset_bip39.py +++ b/tests/click_tests/test_reset_bip39.py @@ -28,7 +28,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/click_tests/test_reset_slip39_advanced.py b/tests/click_tests/test_reset_slip39_advanced.py index b7d35c4fae..0d8a2d95b3 100644 --- a/tests/click_tests/test_reset_slip39_advanced.py +++ b/tests/click_tests/test_reset_slip39_advanced.py @@ -28,7 +28,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/click_tests/test_reset_slip39_basic.py b/tests/click_tests/test_reset_slip39_basic.py index a58e9eb147..b34827e867 100644 --- a/tests/click_tests/test_reset_slip39_basic.py +++ b/tests/click_tests/test_reset_slip39_basic.py @@ -28,7 +28,7 @@ from ..device_handler import BackgroundDeviceHandler -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") @pytest.mark.parametrize( diff --git a/tests/click_tests/test_tutorial.py b/tests/click_tests/test_tutorial.py index e7c04e6ab4..d084df5250 100644 --- a/tests/click_tests/test_tutorial.py +++ b/tests/click_tests/test_tutorial.py @@ -30,8 +30,9 @@ from ..device_handler import BackgroundDeviceHandler -# T2B1-only -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2t1, pytest.mark.skip_t3t1] +# Safe3 only +# TODO extend to T3T1 +pytestmark = pytest.mark.models("safe3") @contextmanager diff --git a/tests/common.py b/tests/common.py index b270f46e33..c9eb7efc37 100644 --- a/tests/common.py +++ b/tests/common.py @@ -24,6 +24,7 @@ import pytest from trezorlib import btc, messages, models, tools +from trezorlib.debuglink import LayoutType from . import buttons @@ -99,16 +100,22 @@ def parametrize_using_common_fixtures(*paths: str) -> "MarkDecorator": test_id = test_id.lower().replace(" ", "_") skip_models = test.get("skip_models", []) - skip_marks = [] + skiplist = [] + # TODO: genericify this for skip_model in skip_models: if skip_model in ("t1", "t1b1"): - skip_marks.append(pytest.mark.skip_t1b1) + skiplist.append(models.T1B1) if skip_model in ("t2", "t2t1"): - skip_marks.append(pytest.mark.skip_t2t1) + skiplist.append(models.T2T1) if skip_model in ("tr", "t2b1"): - skip_marks.append(pytest.mark.skip_t2b1) + skiplist.append(models.T2B1) + skiplist.append(models.T3B1) if skip_model == "t3t1": - skip_marks.append(pytest.mark.skip_t3t1) + skiplist.append(models.T3T1) + if skiplist: + skip_marks = [pytest.mark.models(skip=skiplist)] + else: + skip_marks = [] tests.append( pytest.param( @@ -198,14 +205,14 @@ def input_flow(): mnemonic = yield from read_and_confirm_mnemonic(client.debug) """ - if debug.model is models.T2T1: + if debug.layout_type is LayoutType.TT: mnemonic = yield from read_mnemonic_from_screen_tt(debug) - elif debug.model is models.T2B1: + elif debug.layout_type is LayoutType.TR: mnemonic = yield from read_mnemonic_from_screen_tr(debug) - elif debug.model is models.T3T1: + elif debug.layout_type is LayoutType.Mercury: mnemonic = yield from read_mnemonic_from_screen_mercury(debug) else: - raise ValueError(f"Unknown model: {debug.model}") + raise ValueError(f"Unknown model: {debug.layout_type}") if not check_share(debug, mnemonic, choose_wrong): return None @@ -282,15 +289,15 @@ def check_share( """ re_num_of_word = r"\d+" for _ in range(3): - if debug.model is models.T2T1: + if debug.layout_type is LayoutType.TT: # T2T1 has position as the first number in the text word_pos_match = re.search( re_num_of_word, debug.wait_layout().text_content() ) - elif debug.model is models.T2B1: + elif debug.layout_type is LayoutType.TR: # other models have the instruction in the title/subtitle word_pos_match = re.search(re_num_of_word, debug.wait_layout().title()) - elif debug.model is models.T3T1: + elif debug.layout_type is LayoutType.Mercury: word_pos_match = re.search(re_num_of_word, debug.wait_layout().subtitle()) else: word_pos_match = None diff --git a/tests/conftest.py b/tests/conftest.py index 97a092ad33..0c9f364b05 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -17,8 +17,8 @@ from __future__ import annotations import os +import typing as t from pathlib import Path -from typing import TYPE_CHECKING, Generator, Iterator import pytest import xdist @@ -38,9 +38,11 @@ from .device_handler import BackgroundDeviceHandler from .emulators import EmulatorWrapper -if TYPE_CHECKING: +if t.TYPE_CHECKING: from _pytest.config import Config from _pytest.config.argparsing import Parser + from _pytest.mark import Mark + from _pytest.nodes import Node from _pytest.terminal import TerminalReporter from trezorlib._internal.emulator import Emulator @@ -64,7 +66,7 @@ def _emulator_wrapper_main_args() -> list[str]: @pytest.fixture -def core_emulator(request: pytest.FixtureRequest) -> Iterator[Emulator]: +def core_emulator(request: pytest.FixtureRequest) -> t.Iterator[Emulator]: """Fixture returning default core emulator with possibility of screen recording.""" with EmulatorWrapper("core", main_args=_emulator_wrapper_main_args()) as emu: # Modifying emu.client to add screen recording (when --ui=test is used) @@ -73,7 +75,7 @@ def core_emulator(request: pytest.FixtureRequest) -> Iterator[Emulator]: @pytest.fixture(scope="session") -def emulator(request: pytest.FixtureRequest) -> Generator["Emulator", None, None]: +def emulator(request: pytest.FixtureRequest) -> t.Generator["Emulator", None, None]: """Fixture for getting emulator connection in case tests should operate it on their own. Is responsible for starting it at the start of the session and stopping @@ -139,13 +141,6 @@ def _raw_client(request: pytest.FixtureRequest) -> Client: else: client = _find_client(request, interact) - # Setting the appropriate language - # Not doing it for T1 - if client.model is not models.T1B1: - lang = request.session.config.getoption("lang") or "en" - assert isinstance(lang, str) - translations.set_language(client, lang) - return client @@ -172,10 +167,78 @@ def _find_client(request: pytest.FixtureRequest, interact: bool) -> Client: raise RuntimeError("No debuggable device found") +class ModelsFilter: + MODEL_SHORTCUTS = { + "core": models.TREZORS - {models.T1B1}, + "legacy": {models.T1B1}, + "t1": {models.T1B1}, + "t2": {models.T2T1}, + "tt": {models.T2T1}, + "safe": {models.T2B1, models.T3T1, models.T3B1}, + "safe3": {models.T2B1, models.T3B1}, + "safe5": {models.T3T1}, + "mercury": {models.T3T1}, + } + + def __init__(self, node: Node) -> None: + markers = node.iter_markers("models") + self.models = set(models.TREZORS) + for marker in markers: + self._refine_by_marker(marker) + + def __contains__(self, model: models.TrezorModel) -> bool: + return model in self.models + + def __bool__(self) -> bool: + return bool(self.models) + + def _refine_by_marker(self, marker: Mark) -> None: + """Apply the marker selector to the current models selection.""" + if marker.args: + self.models &= self._set_from_marker_list(marker.args) + if "skip" in marker.kwargs: + self.models -= self._set_from_marker_list(marker.kwargs["skip"]) + + @classmethod + def _set_from_marker_list( + cls, marker_list: str | t.Sequence[str] | t.Sequence[models.TrezorModel] + ) -> set[models.TrezorModel]: + """Given either a possible value of pytest.mark.models positional args, + or a value of the `skip` kwarg, return a set of models specified by that value. + """ + if not marker_list: + raise ValueError("No models specified") + + if isinstance(marker_list[0], models.TrezorModel): + # raw list of TrezorModels + return set(marker_list) # type: ignore [incompatible with return type] + + if len(marker_list) == 1: + # @pytest.mark.models("t2t1,t2b1") -> ("t2t1,t2b1",) -> "t2t1,t2b1" + marker_list = marker_list[0] + + if isinstance(marker_list, str): + # either a single model / shortcut, or a comma-separated text list + # @pytest.mark.models("t2t1,t2b1") -> "t2t1,t2b1" -> ["t2t1", "t2b1"] + marker_list = [s.strip() for s in marker_list.split(",")] + + selected_models = set() + for marker in marker_list: + assert isinstance(marker, str) + if marker in cls.MODEL_SHORTCUTS: + selected_models |= cls.MODEL_SHORTCUTS[marker] + elif (model := models.by_internal_name(marker.upper())) is not None: + selected_models.add(model) + else: + raise ValueError(f"Unknown model: {marker}") + + return selected_models + + @pytest.fixture(scope="function") def client( request: pytest.FixtureRequest, _raw_client: Client -) -> Generator[Client, None, None]: +) -> t.Generator[Client, None, None]: """Client fixture. Every test function that requires a client instance will get it from here. @@ -199,26 +262,9 @@ def client( @pytest.mark.experimental """ - if ( - request.node.get_closest_marker("skip_t2t1") - and _raw_client.model is models.T2T1 - ): - pytest.skip("Test excluded on Trezor T") - if ( - request.node.get_closest_marker("skip_t1b1") - and _raw_client.model is models.T1B1 - ): - pytest.skip("Test excluded on Trezor 1") - if ( - request.node.get_closest_marker("skip_t2b1") - and _raw_client.model is models.T2B1 - ): - pytest.skip("Test excluded on Trezor T2B1") - if ( - request.node.get_closest_marker("skip_t3t1") - and _raw_client.model is models.T3T1 - ): - pytest.skip("Test excluded on Trezor T3T1") + models_filter = ModelsFilter(request.node) + if _raw_client.model not in models_filter: + pytest.skip(f"Skipping test for model {_raw_client.model.internal_name}") sd_marker = request.node.get_closest_marker("sd_card") if sd_marker and not _raw_client.features.sd_card_present: @@ -399,10 +445,10 @@ def pytest_configure(config: "Config") -> None: Registers known markers, enables verbose output if requested. """ # register known markers - config.addinivalue_line("markers", "skip_t1b1: skip the test on Trezor One") - config.addinivalue_line("markers", "skip_t2t1: skip the test on Trezor T") - config.addinivalue_line("markers", "skip_t2b1: skip the test on Trezor T2B1") - config.addinivalue_line("markers", "skip_t3t1: skip the test on Trezor T3T1") + config.addinivalue_line( + "markers", + 'models("core", "t1b1", ..., skip=[...], reason="..."): select which models or families to run the test on', + ) config.addinivalue_line( "markers", "experimental: enable experimental features on Trezor" ) @@ -424,10 +470,8 @@ def pytest_runtest_setup(item: pytest.Item) -> None: Ensures that altcoin tests are skipped, and that no test is skipped for all models. """ - if all( - item.get_closest_marker(marker) - for marker in ("skip_t1b1", "skip_t2t1", "skip_t2b1", "skip_t3t1") - ): + models_filter = ModelsFilter(item) + if not models_filter: raise RuntimeError("Don't skip tests for all trezor models!") skip_altcoins = int(os.environ.get("TREZOR_PYTEST_SKIP_ALTCOINS", 0)) @@ -436,7 +480,7 @@ def pytest_runtest_setup(item: pytest.Item) -> None: @pytest.hookimpl(tryfirst=True, hookwrapper=True) -def pytest_runtest_makereport(item: pytest.Item, call) -> Generator: +def pytest_runtest_makereport(item: pytest.Item, call) -> t.Generator: # Make test results available in fixtures. # See https://docs.pytest.org/en/latest/example/simple.html#making-test-result-information-available-in-fixtures # The device_handler fixture uses this as 'request.node.rep_call.passed' attribute, @@ -461,7 +505,7 @@ def pytest_report_teststatus( @pytest.fixture -def device_handler(client: Client, request: pytest.FixtureRequest) -> Generator: +def device_handler(client: Client, request: pytest.FixtureRequest) -> t.Generator: device_handler = BackgroundDeviceHandler(client) yield device_handler diff --git a/tests/device_tests/binance/test_get_address.py b/tests/device_tests/binance/test_get_address.py index 5c4ecc20a8..cdb6e72271 100644 --- a/tests/device_tests/binance/test_get_address.py +++ b/tests/device_tests/binance/test_get_address.py @@ -25,7 +25,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.binance, - pytest.mark.skip_t1b1, # T1 support is not planned + pytest.mark.models("core"), pytest.mark.setup_client( mnemonic="offer caution gift cross surge pretty orange during eye soldier popular holiday mention east eight office fashion ill parrot vault rent devote earth cousin" ), diff --git a/tests/device_tests/binance/test_get_public_key.py b/tests/device_tests/binance/test_get_public_key.py index 59cadd283a..ea04fdbd88 100644 --- a/tests/device_tests/binance/test_get_public_key.py +++ b/tests/device_tests/binance/test_get_public_key.py @@ -27,7 +27,7 @@ @pytest.mark.altcoin @pytest.mark.binance -@pytest.mark.skip_t1b1 # T1 support is not planned +@pytest.mark.models("core") @pytest.mark.setup_client( mnemonic="offer caution gift cross surge pretty orange during eye soldier popular holiday mention east eight office fashion ill parrot vault rent devote earth cousin" ) diff --git a/tests/device_tests/binance/test_sign_tx.py b/tests/device_tests/binance/test_sign_tx.py index bbdaf36f38..ceb0692465 100644 --- a/tests/device_tests/binance/test_sign_tx.py +++ b/tests/device_tests/binance/test_sign_tx.py @@ -103,7 +103,7 @@ @pytest.mark.altcoin @pytest.mark.binance -@pytest.mark.skip_t1b1 # T1 support is not planned +@pytest.mark.models("core") @pytest.mark.setup_client( mnemonic="offer caution gift cross surge pretty orange during eye soldier popular holiday mention east eight office fashion ill parrot vault rent devote earth cousin" ) diff --git a/tests/device_tests/bitcoin/test_bcash.py b/tests/device_tests/bitcoin/test_bcash.py index 1a6c3b2acf..7653882863 100644 --- a/tests/device_tests/bitcoin/test_bcash.py +++ b/tests/device_tests/bitcoin/test_bcash.py @@ -467,7 +467,7 @@ def getmultisig(chain, nr, signatures): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_send_bch_external_presigned(client: Client): inp1 = messages.TxInputType( # address_n=parse_path("44'/145'/0'/1/0"), diff --git a/tests/device_tests/bitcoin/test_bgold.py b/tests/device_tests/bitcoin/test_bgold.py index eae573dbe5..71c1a6c3ad 100644 --- a/tests/device_tests/bitcoin/test_bgold.py +++ b/tests/device_tests/bitcoin/test_bgold.py @@ -47,7 +47,7 @@ "a63dbedd8cd284bf0d3c468e84b9b0eeb14c3a08824eab8f80e7723a299f30db" ) -pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] +pytestmark = [pytest.mark.altcoin, pytest.mark.models("t1b1", "t2t1")] # All data taken from T1 @@ -548,7 +548,7 @@ def test_send_mixed_inputs(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_send_btg_external_presigned(client: Client): # NOTE: fake input tx used diff --git a/tests/device_tests/bitcoin/test_dash.py b/tests/device_tests/bitcoin/test_dash.py index 1c48f09b7a..4dde98bfbf 100644 --- a/tests/device_tests/bitcoin/test_dash.py +++ b/tests/device_tests/bitcoin/test_dash.py @@ -40,7 +40,7 @@ "15575a1c874bd60a819884e116c42e6791c8283ce1fc3b79f0d18531a61bbb8a" ) -pytestmark = [pytest.mark.altcoin, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] +pytestmark = [pytest.mark.altcoin, pytest.mark.models("t1b1", "t2t1")] def test_send_dash(client: Client): diff --git a/tests/device_tests/bitcoin/test_decred.py b/tests/device_tests/bitcoin/test_decred.py index 82a0f29b28..78bb1b0c3a 100644 --- a/tests/device_tests/bitcoin/test_decred.py +++ b/tests/device_tests/bitcoin/test_decred.py @@ -53,8 +53,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.decred, - pytest.mark.skip_t2b1, - pytest.mark.skip_t3t1, + pytest.mark.models("t1b1", "t2t1"), ] @@ -105,7 +104,7 @@ def test_send_decred(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_purchase_ticket_decred(client: Client): # NOTE: fake input tx used @@ -168,7 +167,7 @@ def test_purchase_ticket_decred(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_spend_from_stake_generation_and_revocation_decred(client: Client): # NOTE: fake input tx used diff --git a/tests/device_tests/bitcoin/test_descriptors.py b/tests/device_tests/bitcoin/test_descriptors.py index 23695a420f..6efdd99ed8 100644 --- a/tests/device_tests/bitcoin/test_descriptors.py +++ b/tests/device_tests/bitcoin/test_descriptors.py @@ -161,7 +161,7 @@ def _address_n(purpose, coin, account, script_type): return res -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize( "coin, account, purpose, script_type, descriptors", VECTORS_DESCRIPTORS ) diff --git a/tests/device_tests/bitcoin/test_getaddress.py b/tests/device_tests/bitcoin/test_getaddress.py index 5a53e15d29..f668a22bf5 100644 --- a/tests/device_tests/bitcoin/test_getaddress.py +++ b/tests/device_tests/bitcoin/test_getaddress.py @@ -138,7 +138,7 @@ def test_elements(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_address_mac(client: Client): resp = btc.get_authenticated_address( client, "Bitcoin", parse_path("m/44h/0h/0h/1/0") @@ -165,7 +165,7 @@ def test_address_mac(client: Client): assert resp.mac is None -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.altcoin def test_altcoin_address_mac(client: Client): resp = btc.get_authenticated_address( diff --git a/tests/device_tests/bitcoin/test_getaddress_show.py b/tests/device_tests/bitcoin/test_getaddress_show.py index 4760d485b4..ef143ff362 100644 --- a/tests/device_tests/bitcoin/test_getaddress_show.py +++ b/tests/device_tests/bitcoin/test_getaddress_show.py @@ -52,9 +52,7 @@ ) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") @pytest.mark.parametrize("path, script_type, address", VECTORS) def test_show_t1( client: Client, path: str, script_type: messages.InputScriptType, address: str @@ -80,7 +78,7 @@ def input_flow_t1(): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize("chunkify", (True, False)) @pytest.mark.parametrize("path, script_type, address", VECTORS) def test_show_tt( @@ -106,7 +104,7 @@ def test_show_tt( ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize("path, script_type, address", VECTORS) def test_show_cancel( client: Client, path: str, script_type: messages.InputScriptType, address: str @@ -237,7 +235,7 @@ def test_show_multisig_3(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.multisig @pytest.mark.parametrize( "script_type, bip48_type, address, xpubs, ignore_xpub_magic", VECTORS_MULTISIG diff --git a/tests/device_tests/bitcoin/test_getpublickey.py b/tests/device_tests/bitcoin/test_getpublickey.py index c6d7eb0a9e..e8b90cbb48 100644 --- a/tests/device_tests/bitcoin/test_getpublickey.py +++ b/tests/device_tests/bitcoin/test_getpublickey.py @@ -116,7 +116,7 @@ def test_get_public_node(client: Client, coin_name, xpub_magic, path, xpub): assert bip32.serialize(res.node, xpub_magic) == xpub -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize("coin_name, xpub_magic, path, xpub", VECTORS_BITCOIN) def test_get_public_node_show(client: Client, coin_name, xpub_magic, path, xpub): with client: diff --git a/tests/device_tests/bitcoin/test_signmessage.py b/tests/device_tests/bitcoin/test_signmessage.py index 0a5e8a7967..5a2adcbe44 100644 --- a/tests/device_tests/bitcoin/test_signmessage.py +++ b/tests/device_tests/bitcoin/test_signmessage.py @@ -18,7 +18,8 @@ import pytest -from trezorlib import btc, messages, models +from trezorlib import btc, messages +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.debuglink import message_filters from trezorlib.exceptions import Cancelled @@ -37,20 +38,14 @@ def case( id: str, *args: Any, + models: str | None = None, altcoin: bool = False, - skip_t1b1: bool = False, - skip_t2b1: bool = False, - skip_t3t1: bool = False ): marks = [] if altcoin: marks.append(pytest.mark.altcoin) - if skip_t1b1: - marks.append(pytest.mark.skip_t1b1) - if skip_t2b1: - marks.append(pytest.mark.skip_t2b1) - if skip_t3t1: - marks.append(pytest.mark.skip_t3t1) + if models: + marks.append(pytest.mark.models(models)) return pytest.param(*args, id=id, marks=marks) @@ -182,7 +177,7 @@ def case( "1FoHjQT6bAEu2FQGzTgqj4PBneoiCAk4ZN", b"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "1f40ae58dd68480a2f39eecf4decfe79ceacde3f865502db67c083b8465b33535c0750d5377b7ac62e534f71c922cd029f659761f8ac99e859df36322c5b320eff", - skip_t1b1=True, + models="core", ), # ==== Testnet script types ==== case( @@ -270,8 +265,7 @@ def case( "This is an example of a signed message.", "206b1f8ba47ef9eaf87aa900e41ab1e97f67e8c09292faa4acf825228d074c4b774484046dcb1d9bbf0603045dbfb328c3e1b0c09c5ae133e89e604a67a1fc6cca", altcoin=True, - skip_t2b1=True, - skip_t3t1=True, + models="t1b1,t2t1", ), case( "decred-empty", @@ -283,8 +277,7 @@ def case( "", "1fd2d57490b44a0361c7809768cad032d41ba1d4b7a297f935fc65ae05f71de7ea0c6c6fd265cc5154f1fa4acd7006b6a00ddd67fb7333c1594aff9120b3ba8024", altcoin=True, - skip_t2b1=True, - skip_t3t1=True, + models="t1b1,t2t1", ), ) @@ -314,9 +307,9 @@ def test_signmessage( assert sig.signature.hex() == signature -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") +@pytest.mark.models( + "core", skip=["safe3", "mercury"], reason="Not yet implemented in new UI" +) @pytest.mark.parametrize( "coin_name, path, script_type, no_script_type, address, message, signature", VECTORS ) @@ -359,7 +352,7 @@ def test_signmessage_info( ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize("message", MESSAGE_LENGTHS) def test_signmessage_pagination(client: Client, message: str): with client: @@ -374,15 +367,13 @@ def test_signmessage_pagination(client: Client, message: str): # We cannot differentiate between a newline and space in the message read from Trezor. # TODO: do the check also for T2B1 - if client.model in (models.T2T1, models.T3T1): + if client.layout_type in (LayoutType.TT, LayoutType.Mercury): message_read = IF.message_read.replace(" ", "").replace("...", "") signed_message = message.replace("\n", "").replace(" ", "") assert signed_message in message_read -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2b1(reason="Different screen size") -@pytest.mark.skip_t3t1(reason="Different fonts") +@pytest.mark.models("t2t1", reason="Tailored to TT fonts and screen size") def test_signmessage_pagination_trailing_newline(client: Client): message = "THIS\nMUST\nNOT\nBE\nPAGINATED\n" # The trailing newline must not cause a new paginated screen to appear. diff --git a/tests/device_tests/bitcoin/test_signtx.py b/tests/device_tests/bitcoin/test_signtx.py index c68608ad75..96fc4edc69 100644 --- a/tests/device_tests/bitcoin/test_signtx.py +++ b/tests/device_tests/bitcoin/test_signtx.py @@ -641,7 +641,7 @@ def test_fee_high_warning(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_fee_high_hardfail(client: Client): # input tx: 25fee583181847cbe9d9fd9a483a8b8626c99854a72d01de848ef40508d0f3bc # (The "25fee" tx hash is very suitable for testing high fees) @@ -1445,7 +1445,7 @@ def test_lock_time(client: Client, lock_time: int, sequence: int): ) -@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1") +@pytest.mark.models("core", reason="Cannot test layouts on T1") def test_lock_time_blockheight(client: Client): # input tx: 0dac366fd8a67b2a89fbb0d31086e7acded7a5bbf9ef9daa935bc873229ef5b5 @@ -1477,7 +1477,7 @@ def test_lock_time_blockheight(client: Client): ) -@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1") +@pytest.mark.models("core", reason="Cannot test layouts on T1") @pytest.mark.parametrize( "lock_time_str", ("1985-11-05 00:53:20", "2048-08-16 22:14:00") ) @@ -1516,7 +1516,7 @@ def test_lock_time_datetime(client: Client, lock_time_str: str): ) -@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1") +@pytest.mark.models("core", reason="Cannot test layouts on T1") def test_information(client: Client): # input tx: 0dac366fd8a67b2a89fbb0d31086e7acded7a5bbf9ef9daa935bc873229ef5b5 @@ -1547,7 +1547,7 @@ def test_information(client: Client): ) -@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1") +@pytest.mark.models("core", reason="Cannot test layouts on T1") def test_information_mixed(client: Client): inp1 = messages.TxInputType( address_n=parse_path("m/44h/1h/0h/0/0"), # mvbu1Gdy8SUjTenqerxUaZyYjmveZvt33q @@ -1582,7 +1582,7 @@ def test_information_mixed(client: Client): ) -@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1") +@pytest.mark.models("core", reason="Cannot test layouts on T1") def test_information_cancel(client: Client): # input tx: 0dac366fd8a67b2a89fbb0d31086e7acded7a5bbf9ef9daa935bc873229ef5b5 @@ -1613,8 +1613,11 @@ def test_information_cancel(client: Client): ) -@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") -@pytest.mark.skip_t1b1(reason="Cannot test layouts on T1") +@pytest.mark.models( + "core", + skip="mercury", + reason="Cannot test layouts on T1, not implemented in mercury UI", +) def test_information_replacement(client: Client): # Use the change output and an external output to bump the fee. # Originally fee was 3780, now 108060 (94280 from change and 10000 from external). diff --git a/tests/device_tests/bitcoin/test_signtx_external.py b/tests/device_tests/bitcoin/test_signtx_external.py index 9474fd1bb1..fd8e0cff3e 100644 --- a/tests/device_tests/bitcoin/test_signtx_external.py +++ b/tests/device_tests/bitcoin/test_signtx_external.py @@ -81,7 +81,7 @@ ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_p2pkh_presigned(client: Client): inp1 = messages.TxInputType( # mvbu1Gdy8SUjTenqerxUaZyYjmveZvt33q @@ -178,7 +178,7 @@ def test_p2pkh_presigned(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_p2wpkh_in_p2sh_presigned(client: Client): inp1 = messages.TxInputType( # 2N1LGaGg836mqSQqiuUBLfcyGBhyZbremDX @@ -301,7 +301,7 @@ def test_p2wpkh_in_p2sh_presigned(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_p2wpkh_presigned(client: Client): inp1 = messages.TxInputType( # tb1qkvwu9g3k2pdxewfqr7syz89r3gj557l3uuf9r9 @@ -366,7 +366,7 @@ def test_p2wpkh_presigned(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_p2wsh_external_presigned(client: Client): inp1 = messages.TxInputType( address_n=parse_path("m/84h/1h/0h/0/0"), @@ -474,7 +474,7 @@ def test_p2wsh_external_presigned(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_p2tr_external_presigned(client: Client): inp1 = messages.TxInputType( # tb1p8tvmvsvhsee73rhym86wt435qrqm92psfsyhy6a3n5gw455znnpqm8wald @@ -566,13 +566,13 @@ def test_p2tr_external_presigned(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_p2pkh_with_proof(client: Client): # TODO pass -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_p2wpkh_in_p2sh_with_proof(client: Client): # TODO pass diff --git a/tests/device_tests/bitcoin/test_signtx_payreq.py b/tests/device_tests/bitcoin/test_signtx_payreq.py index 72e3c9637f..e02cb2b6c6 100644 --- a/tests/device_tests/bitcoin/test_signtx_payreq.py +++ b/tests/device_tests/bitcoin/test_signtx_payreq.py @@ -18,7 +18,7 @@ import pytest -from trezorlib import btc, messages, misc, models +from trezorlib import btc, messages, misc from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure from trezorlib.tools import parse_path @@ -33,19 +33,15 @@ PREV_TXES = {PREV_HASH: PREV_TX} -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.experimental] +pytestmark = [pytest.mark.models("core"), pytest.mark.experimental] -def case( - id, *args, altcoin: bool = False, skip_t2b1: bool = False, skip_t3t1: bool = False -): +def case(id, *args, altcoin: bool = False, models: str | None = None): marks = [] if altcoin: marks.append(pytest.mark.altcoin) - if skip_t2b1: - marks.append(pytest.mark.skip_t2b1) - if skip_t3t1: - marks.append(pytest.mark.skip_t3t1) + if models: + marks.append(pytest.mark.models(models)) return pytest.param(*args, id=id, marks=marks) @@ -118,15 +114,13 @@ def case( "out0", (PaymentRequestParams([0], memos1, get_nonce=True),), altcoin=True, - skip_t2b1=True, - skip_t3t1=True, + models="t2t1", ), case( "out1", (PaymentRequestParams([1], memos2, get_nonce=True),), altcoin=True, - skip_t2b1=True, - skip_t3t1=True, + models="t2t1", ), case("out2", (PaymentRequestParams([2], [], get_nonce=True),)), case( @@ -189,10 +183,8 @@ def test_payment_request(client: Client, payment_request_params): ) +@pytest.mark.models(skip="safe3") def test_payment_request_details(client: Client): - if client.model is models.T2B1: - pytest.skip("Details not implemented on T2B1") - # Test that payment request details are shown when requested. outputs[0].payment_req_index = 0 outputs[1].payment_req_index = 0 @@ -281,8 +273,7 @@ def test_payment_req_wrong_mac_refund(client: Client): @pytest.mark.altcoin -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("t2t1", reason="Dash not supported on Safe family") def test_payment_req_wrong_mac_purchase(client: Client): # Test wrong MAC in payment request memo. memo = CoinPurchaseMemo( diff --git a/tests/device_tests/bitcoin/test_signtx_replacement.py b/tests/device_tests/bitcoin/test_signtx_replacement.py index d154097992..97fe7e2d87 100644 --- a/tests/device_tests/bitcoin/test_signtx_replacement.py +++ b/tests/device_tests/bitcoin/test_signtx_replacement.py @@ -354,7 +354,7 @@ def test_p2wpkh_finalize(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize( "out1_amount, out2_amount, copayer_witness, fee_confirm, expected_tx", ( @@ -648,7 +648,7 @@ def test_p2wpkh_in_p2sh_fee_bump_from_external(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_tx_meld(client: Client): # Meld two original transactions into one, joining the change-outputs into a different one. @@ -869,7 +869,7 @@ def test_attack_steal_change(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_attack_false_internal(client: Client): # Falsely claim that an external input is internal in the original transaction. # If this were possible, it would allow an attacker to make it look like the @@ -976,7 +976,7 @@ def test_attack_fake_int_input_amount(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_attack_fake_ext_input_amount(client: Client): # Give a fake input amount for an original external input while giving the correct # amount for the replacement input. If an attacker could decrease the amount of an diff --git a/tests/device_tests/bitcoin/test_zcash.py b/tests/device_tests/bitcoin/test_zcash.py index 65c376be1a..dc959199a3 100644 --- a/tests/device_tests/bitcoin/test_zcash.py +++ b/tests/device_tests/bitcoin/test_zcash.py @@ -228,7 +228,7 @@ def test_spend_old_versions(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_external_presigned(client: Client): inp1 = messages.TxInputType( # tmQoJ3PTXgQLaRRZZYT6xk8XtjRbr2kCqwu diff --git a/tests/device_tests/cardano/test_address_public_key.py b/tests/device_tests/cardano/test_address_public_key.py index 725e208779..d7c02e6b6d 100644 --- a/tests/device_tests/cardano/test_address_public_key.py +++ b/tests/device_tests/cardano/test_address_public_key.py @@ -32,7 +32,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.cardano, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] diff --git a/tests/device_tests/cardano/test_derivations.py b/tests/device_tests/cardano/test_derivations.py index 6c7bfe2b8b..656c31a8bd 100644 --- a/tests/device_tests/cardano/test_derivations.py +++ b/tests/device_tests/cardano/test_derivations.py @@ -27,7 +27,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.cardano, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] ADDRESS_N = parse_path("m/1852h/1815h/0h") diff --git a/tests/device_tests/cardano/test_get_native_script_hash.py b/tests/device_tests/cardano/test_get_native_script_hash.py index 27ffee2ac5..63ee56d16f 100644 --- a/tests/device_tests/cardano/test_get_native_script_hash.py +++ b/tests/device_tests/cardano/test_get_native_script_hash.py @@ -25,7 +25,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.cardano, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] diff --git a/tests/device_tests/cardano/test_sign_tx.py b/tests/device_tests/cardano/test_sign_tx.py index 27fd13d883..5523d93d72 100644 --- a/tests/device_tests/cardano/test_sign_tx.py +++ b/tests/device_tests/cardano/test_sign_tx.py @@ -16,7 +16,8 @@ import pytest -from trezorlib import cardano, device, messages, models +from trezorlib import cardano, device, messages +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure @@ -26,7 +27,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.cardano, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] @@ -34,10 +35,10 @@ def show_details_input_flow(client: Client): yield client.debug.wait_layout() # Touch screen click vs pressing right for T2B1 - if client.model in (models.T2T1, models.T3T1): + if client.layout_type in (LayoutType.TT, LayoutType.Mercury): SHOW_ALL_BUTTON_POSITION = (143, 167) client.debug.click(SHOW_ALL_BUTTON_POSITION) - elif client.model is models.T2B1: + elif client.layout_type is LayoutType.TR: client.debug.press_yes() else: raise NotImplementedError @@ -62,7 +63,7 @@ def test_cardano_sign_tx(client: Client, parameters, result): assert response == _transform_expected_result(result) -@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") +@pytest.mark.models(skip="mercury", reason="Not yet implemented in new UI") @parametrize_using_common_fixtures("cardano/sign_tx.show_details.json") def test_cardano_sign_tx_show_details(client: Client, parameters, result): response = call_sign_tx(client, parameters, show_details_input_flow, chunkify=True) diff --git a/tests/device_tests/eos/test_get_public_key.py b/tests/device_tests/eos/test_get_public_key.py index c5a304af1c..1b518e95f2 100644 --- a/tests/device_tests/eos/test_get_public_key.py +++ b/tests/device_tests/eos/test_get_public_key.py @@ -26,9 +26,7 @@ @pytest.mark.altcoin @pytest.mark.eos -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2b1 # coin not supported -@pytest.mark.skip_t3t1 +@pytest.mark.models("t2t1") @pytest.mark.setup_client(mnemonic=MNEMONIC12) def test_eos_get_public_key(client: Client): with client: diff --git a/tests/device_tests/eos/test_signtx.py b/tests/device_tests/eos/test_signtx.py index d43f6f51f0..57fd051bb4 100644 --- a/tests/device_tests/eos/test_signtx.py +++ b/tests/device_tests/eos/test_signtx.py @@ -29,9 +29,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.eos, - pytest.mark.skip_t1b1, - pytest.mark.skip_t2b1, # coin not supported - pytest.mark.skip_t3t1, + pytest.mark.models("t2t1"), pytest.mark.setup_client(mnemonic=MNEMONIC12), ] diff --git a/tests/device_tests/ethereum/test_definitions.py b/tests/device_tests/ethereum/test_definitions.py index f2546a5d04..74d30bb3a9 100644 --- a/tests/device_tests/ethereum/test_definitions.py +++ b/tests/device_tests/ethereum/test_definitions.py @@ -197,11 +197,8 @@ def _call_sign_typed_data_hash( METHODS = ( _call_getaddress, _call_signmessage, - pytest.param(_call_sign_typed_data, marks=pytest.mark.skip_t1b1), - pytest.param( - _call_sign_typed_data_hash, - marks=[pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1], - ), + pytest.param(_call_sign_typed_data, marks=pytest.mark.models("core")), + pytest.param(_call_sign_typed_data_hash, marks=pytest.mark.models("legacy")), ) diff --git a/tests/device_tests/ethereum/test_getaddress.py b/tests/device_tests/ethereum/test_getaddress.py index 0001681e8d..3add0ad92f 100644 --- a/tests/device_tests/ethereum/test_getaddress.py +++ b/tests/device_tests/ethereum/test_getaddress.py @@ -34,7 +34,7 @@ def test_getaddress(client: Client, parameters, result): ) -@pytest.mark.skip_t1b1("No input flow for T1") +@pytest.mark.models("core", reason="No input flow for T1") @parametrize_using_common_fixtures("ethereum/getaddress.json") def test_getaddress_chunkify_details(client: Client, parameters, result): with client: diff --git a/tests/device_tests/ethereum/test_getpublickey.py b/tests/device_tests/ethereum/test_getpublickey.py index 3a6fe36151..103b261f57 100644 --- a/tests/device_tests/ethereum/test_getpublickey.py +++ b/tests/device_tests/ethereum/test_getpublickey.py @@ -44,9 +44,7 @@ def test_slip25_disallowed(client: Client): ethereum.get_public_node(client, path) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_legacy_restrictions(client: Client): path = parse_path("m/46'") with pytest.raises(TrezorFailure, match="Invalid path for EthereumGetPublicKey"): diff --git a/tests/device_tests/ethereum/test_sign_typed_data.py b/tests/device_tests/ethereum/test_sign_typed_data.py index 60297b9191..14dda4bdbe 100644 --- a/tests/device_tests/ethereum/test_sign_typed_data.py +++ b/tests/device_tests/ethereum/test_sign_typed_data.py @@ -26,7 +26,7 @@ pytestmark = [pytest.mark.altcoin, pytest.mark.ethereum] -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @parametrize_using_common_fixtures("ethereum/sign_typed_data.json") def test_ethereum_sign_typed_data(client: Client, parameters, result): with client: @@ -41,9 +41,7 @@ def test_ethereum_sign_typed_data(client: Client, parameters, result): assert f"0x{ret.signature.hex()}" == result["sig"] -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") @parametrize_using_common_fixtures("ethereum/sign_typed_data.json") def test_ethereum_sign_typed_data_blind(client: Client, parameters, result): with client: @@ -97,8 +95,7 @@ def test_ethereum_sign_typed_data_blind(client: Client, parameters, result): } -@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") -@pytest.mark.skip_t1b1 +@pytest.mark.models("core", skip="mercury", reason="Not yet implemented in new UI") def test_ethereum_sign_typed_data_show_more_button(client: Client): with client: client.watch_layout() @@ -112,7 +109,7 @@ def test_ethereum_sign_typed_data_show_more_button(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_ethereum_sign_typed_data_cancel(client: Client): with client, pytest.raises(exceptions.Cancelled): client.watch_layout() diff --git a/tests/device_tests/ethereum/test_signtx.py b/tests/device_tests/ethereum/test_signtx.py index 6ae85d5dd1..b12e7146cf 100644 --- a/tests/device_tests/ethereum/test_signtx.py +++ b/tests/device_tests/ethereum/test_signtx.py @@ -113,7 +113,7 @@ def _do_test_signtx( } -@pytest.mark.skip_t1b1("T1 does not support input flows") +@pytest.mark.models("core", reason="T1 does not support input flows") def test_signtx_fee_info(client: Client): input_flow = InputFlowEthereumSignTxShowFeeInfo(client).get() _do_test_signtx( @@ -124,8 +124,11 @@ def test_signtx_fee_info(client: Client): ) -@pytest.mark.skip_t1b1("T1 does not support input flows") -@pytest.mark.skip_t3t1("Cancel on Summary means Cancel Sign. No going back here!") +@pytest.mark.models( + "core", + skip="mercury", + reason="T1 does not support input flows; Mercury can't send Cancel on Summary", +) def test_signtx_go_back_from_summary(client: Client): input_flow = InputFlowEthereumSignTxGoBackFromSummary(client).get() _do_test_signtx( @@ -431,8 +434,7 @@ def input_flow_data_go_back(client: Client, cancel: bool = False): @pytest.mark.parametrize( "flow", (input_flow_data_skip, input_flow_data_scroll_down, input_flow_data_go_back) ) -@pytest.mark.skip_t3t1(reason="Not yet implemented in new UI") -@pytest.mark.skip_t1b1 +@pytest.mark.models("core", skip="mercury", reason="Not yet implemented in new UI") def test_signtx_data_pagination(client: Client, flow): def _sign_tx_call(): ethereum.sign_tx( @@ -459,7 +461,7 @@ def _sign_tx_call(): _sign_tx_call() -@pytest.mark.skip_t1b1("T1 does not support Everstake") +@pytest.mark.models("core") @parametrize_using_common_fixtures("ethereum/sign_tx_staking.json") @pytest.mark.parametrize("chunkify", (True, False)) def test_signtx_staking(client: Client, chunkify: bool, parameters: dict, result: dict): @@ -469,7 +471,7 @@ def test_signtx_staking(client: Client, chunkify: bool, parameters: dict, result ) -@pytest.mark.skip_t1b1("T1 does not support Everstake") +@pytest.mark.models("core") @parametrize_using_common_fixtures("ethereum/sign_tx_staking_data_error.json") def test_signtx_staking_bad_inputs(client: Client, parameters: dict, result: dict): # result not needed @@ -490,7 +492,7 @@ def test_signtx_staking_bad_inputs(client: Client, parameters: dict, result: dic ) -@pytest.mark.skip_t1b1("T1 does not support Everstake") +@pytest.mark.models("core") @parametrize_using_common_fixtures("ethereum/sign_tx_staking_eip1559.json") def test_signtx_staking_eip1559(client: Client, parameters: dict, result: dict): with client: diff --git a/tests/device_tests/monero/test_getaddress.py b/tests/device_tests/monero/test_getaddress.py index f48f9e8128..dfd0ce5ab0 100644 --- a/tests/device_tests/monero/test_getaddress.py +++ b/tests/device_tests/monero/test_getaddress.py @@ -41,7 +41,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.monero, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), pytest.mark.setup_client(mnemonic=MNEMONIC12), ] diff --git a/tests/device_tests/monero/test_getwatchkey.py b/tests/device_tests/monero/test_getwatchkey.py index 743e615baa..eee83d0445 100644 --- a/tests/device_tests/monero/test_getwatchkey.py +++ b/tests/device_tests/monero/test_getwatchkey.py @@ -25,7 +25,7 @@ @pytest.mark.altcoin @pytest.mark.monero -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(mnemonic=MNEMONIC12) def test_monero_getwatchkey(client: Client): res = monero.get_watch_key(client, parse_path("m/44h/128h/0h")) diff --git a/tests/device_tests/nem/test_getaddress.py b/tests/device_tests/nem/test_getaddress.py index c565ccd85b..b2b20c529e 100644 --- a/tests/device_tests/nem/test_getaddress.py +++ b/tests/device_tests/nem/test_getaddress.py @@ -25,8 +25,7 @@ @pytest.mark.altcoin @pytest.mark.nem -@pytest.mark.skip_t2b1 # coin not supported, -@pytest.mark.skip_t3t1 +@pytest.mark.models("t1b1", "t2t1") @pytest.mark.setup_client(mnemonic=MNEMONIC12) @pytest.mark.parametrize("chunkify", (True, False)) def test_nem_getaddress(client: Client, chunkify: bool): diff --git a/tests/device_tests/nem/test_signtx_mosaics.py b/tests/device_tests/nem/test_signtx_mosaics.py index 1c1459bc70..51cfd556a7 100644 --- a/tests/device_tests/nem/test_signtx_mosaics.py +++ b/tests/device_tests/nem/test_signtx_mosaics.py @@ -27,8 +27,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.nem, - pytest.mark.skip_t2b1, # coin not supported, - pytest.mark.skip_t3t1, + pytest.mark.models("t1b1", "t2t1"), pytest.mark.setup_client(mnemonic=MNEMONIC12), ] diff --git a/tests/device_tests/nem/test_signtx_multisig.py b/tests/device_tests/nem/test_signtx_multisig.py index c9d0caa56c..d153547c42 100644 --- a/tests/device_tests/nem/test_signtx_multisig.py +++ b/tests/device_tests/nem/test_signtx_multisig.py @@ -25,8 +25,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.nem, - pytest.mark.skip_t2b1, # coin not supported, - pytest.mark.skip_t3t1, + pytest.mark.models("t1b1", "t2t1"), pytest.mark.setup_client(mnemonic=MNEMONIC12), ] diff --git a/tests/device_tests/nem/test_signtx_others.py b/tests/device_tests/nem/test_signtx_others.py index 02a17eaf5c..f775c60cdf 100644 --- a/tests/device_tests/nem/test_signtx_others.py +++ b/tests/device_tests/nem/test_signtx_others.py @@ -25,8 +25,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.nem, - pytest.mark.skip_t2b1, # coin not supported, - pytest.mark.skip_t3t1, + pytest.mark.models("t1b1", "t2t1"), pytest.mark.setup_client(mnemonic=MNEMONIC12), ] diff --git a/tests/device_tests/nem/test_signtx_transfers.py b/tests/device_tests/nem/test_signtx_transfers.py index 87a77ec6a4..0388b30ffb 100644 --- a/tests/device_tests/nem/test_signtx_transfers.py +++ b/tests/device_tests/nem/test_signtx_transfers.py @@ -25,8 +25,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.nem, - pytest.mark.skip_t2b1, # coin not supported, - pytest.mark.skip_t3t1, + pytest.mark.models("t1b1", "t2t1"), pytest.mark.setup_client(mnemonic=MNEMONIC12), ] diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py index 7fc6c54eb4..b46d9dd9ae 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_dryrun.py @@ -79,15 +79,13 @@ def test_seed_mismatch(client: Client): do_recover(client, ["all"] * 12, mismatch=True) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_invalid_seed_t1(client: Client): with pytest.raises(exceptions.TrezorFailure, match="Invalid seed"): do_recover(client, ["stick"] * 12) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_invalid_seed_core(client: Client): with client: client.watch_layout() diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py b/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py index fc50b26df0..4f2eab6147 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_t1.py @@ -25,7 +25,7 @@ PIN4 = "1234" PIN6 = "789456" -pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] +pytestmark = pytest.mark.models("legacy") @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/device_tests/reset_recovery/test_recovery_bip39_t2.py b/tests/device_tests/reset_recovery/test_recovery_bip39_t2.py index 16ee1fb971..6046e85ca7 100644 --- a/tests/device_tests/reset_recovery/test_recovery_bip39_t2.py +++ b/tests/device_tests/reset_recovery/test_recovery_bip39_t2.py @@ -22,7 +22,7 @@ from ...common import MNEMONIC12 from ...input_flows import InputFlowBip39Recovery -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") @pytest.mark.setup_client(uninitialized=True) diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py index 8aaa4eb746..c49d8dc011 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced.py @@ -28,7 +28,7 @@ InputFlowSlip39AdvancedRecoveryThresholdReached, ) -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") EXTRA_GROUP_SHARE = [ "eraser senior decision smug corner ruin rescue cubic angel tackle skin skunk program roster trash rumor slush angel flea amazing" diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced_dryrun.py index b8261effc6..3579dc0155 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_advanced_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_advanced_dryrun.py @@ -23,7 +23,7 @@ from ...common import MNEMONIC_SLIP39_ADVANCED_20 from ...input_flows import InputFlowSlip39AdvancedRecoveryDryRun -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") INVALID_SHARES_SLIP39_ADVANCED_20 = [ "chest garlic acrobat leaf diploma thank soul predator grant laundry camera license language likely slim twice amount rich total carve", diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py b/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py index a12cdcba75..9e8f2b280b 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_basic.py @@ -36,7 +36,7 @@ InputFlowSlip39BasicRecoveryWrongNthWord, ) -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") MNEMONIC_SLIP39_BASIC_20_1of1 = [ "academic academic academic academic academic academic academic academic academic academic academic academic academic academic academic academic academic rebuild aquatic spew" diff --git a/tests/device_tests/reset_recovery/test_recovery_slip39_basic_dryrun.py b/tests/device_tests/reset_recovery/test_recovery_slip39_basic_dryrun.py index 0575828fe3..82992c5317 100644 --- a/tests/device_tests/reset_recovery/test_recovery_slip39_basic_dryrun.py +++ b/tests/device_tests/reset_recovery/test_recovery_slip39_basic_dryrun.py @@ -22,7 +22,7 @@ from ...input_flows import InputFlowSlip39BasicRecoveryDryRun -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") SHARES_20_2of3 = [ "crush merchant academic acid dream decision orbit smug trend trust painting slice glad crunch veteran lunch friar satoshi engage aquatic", diff --git a/tests/device_tests/reset_recovery/test_reset_backup.py b/tests/device_tests/reset_recovery/test_reset_backup.py index 9c50c0b599..148087d4f4 100644 --- a/tests/device_tests/reset_recovery/test_reset_backup.py +++ b/tests/device_tests/reset_recovery/test_reset_backup.py @@ -71,7 +71,7 @@ def backup_flow_slip39_advanced(client: Client): ] -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize("backup_type, backup_flow", VECTORS) @pytest.mark.setup_client(uninitialized=True) def test_skip_backup_msg(client: Client, backup_type, backup_flow): @@ -104,7 +104,7 @@ def test_skip_backup_msg(client: Client, backup_type, backup_flow): assert state.mnemonic_secret == secret -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.parametrize("backup_type, backup_flow", VECTORS) @pytest.mark.setup_client(uninitialized=True) def test_skip_backup_manual(client: Client, backup_type: BackupType, backup_flow): diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py b/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py index 611fdc2999..803818b375 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_skipbackup.py @@ -22,7 +22,7 @@ from ...common import EXTERNAL_ENTROPY, generate_entropy -pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] +pytestmark = pytest.mark.models("legacy") STRENGTH = 128 diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t1.py b/tests/device_tests/reset_recovery/test_reset_bip39_t1.py index 7ccb50c2c5..689b81b0d6 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t1.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t1.py @@ -23,7 +23,7 @@ from ...common import EXTERNAL_ENTROPY, generate_entropy -pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] +pytestmark = pytest.mark.models("legacy") def reset_device(client: Client, strength: int): diff --git a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py index d1ffb1416f..9715d118b3 100644 --- a/tests/device_tests/reset_recovery/test_reset_bip39_t2.py +++ b/tests/device_tests/reset_recovery/test_reset_bip39_t2.py @@ -17,7 +17,8 @@ import pytest from mnemonic import Mnemonic -from trezorlib import device, messages, models +from trezorlib import device, messages +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure @@ -28,7 +29,7 @@ InputFlowBip39ResetPIN, ) -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") def reset_device(client: Client, strength: int): @@ -161,7 +162,7 @@ def test_failed_pin(client: Client): ret = client.call_raw(messages.ButtonAck()) # Re-enter PIN for TR - if client.model is models.T2B1: + if client.layout_type is LayoutType.TR: assert isinstance(ret, messages.ButtonRequest) client.debug.press_yes() ret = client.call_raw(messages.ButtonAck()) diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py index 785525a2fe..ea69e07970 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_bip39.py @@ -25,7 +25,7 @@ from ...input_flows import InputFlowBip39Recovery, InputFlowBip39ResetBackup -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(uninitialized=True) def test_reset_recovery(client: Client): mnemonic = reset(client) diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py index b7585df914..e37b4f5099 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_advanced.py @@ -28,7 +28,7 @@ ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(uninitialized=True) def test_reset_recovery(client: Client): mnemonics = reset(client) diff --git a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py index b3f8004f2d..3980b1a149 100644 --- a/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_recovery_slip39_basic.py @@ -30,7 +30,7 @@ ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(uninitialized=True) @WITH_MOCK_URANDOM def test_reset_recovery(client: Client): diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py index 141b4cb612..6aa9d2bf3d 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_advanced.py @@ -25,7 +25,7 @@ from ...common import EXTERNAL_ENTROPY, WITH_MOCK_URANDOM, generate_entropy from ...input_flows import InputFlowSlip39AdvancedResetRecovery -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") # TODO: test with different options diff --git a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py index 6e6378e846..8eb5d7830f 100644 --- a/tests/device_tests/reset_recovery/test_reset_slip39_basic.py +++ b/tests/device_tests/reset_recovery/test_reset_slip39_basic.py @@ -27,7 +27,7 @@ from ...common import EXTERNAL_ENTROPY, WITH_MOCK_URANDOM, generate_entropy from ...input_flows import InputFlowSlip39BasicResetRecovery -pytestmark = [pytest.mark.skip_t1b1] +pytestmark = pytest.mark.models("core") def reset_device(client: Client, strength: int): diff --git a/tests/device_tests/ripple/test_get_address.py b/tests/device_tests/ripple/test_get_address.py index c2380c4a75..0d35b6c5b9 100644 --- a/tests/device_tests/ripple/test_get_address.py +++ b/tests/device_tests/ripple/test_get_address.py @@ -31,7 +31,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.ripple, - pytest.mark.skip_t1b1, # T1 support is not planned + pytest.mark.models("core"), ] # data from https://iancoleman.io/bip39/ diff --git a/tests/device_tests/ripple/test_sign_tx.py b/tests/device_tests/ripple/test_sign_tx.py index ddf0201427..a03a29d4be 100644 --- a/tests/device_tests/ripple/test_sign_tx.py +++ b/tests/device_tests/ripple/test_sign_tx.py @@ -24,7 +24,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.ripple, - pytest.mark.skip_t1b1, # T1 support is not planned + pytest.mark.models("core"), ] diff --git a/tests/device_tests/solana/test_address.py b/tests/device_tests/solana/test_address.py index e33d5ff609..dca1126c05 100644 --- a/tests/device_tests/solana/test_address.py +++ b/tests/device_tests/solana/test_address.py @@ -25,7 +25,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.solana, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] diff --git a/tests/device_tests/solana/test_public_key.py b/tests/device_tests/solana/test_public_key.py index 9c36ef3b84..864852b116 100644 --- a/tests/device_tests/solana/test_public_key.py +++ b/tests/device_tests/solana/test_public_key.py @@ -25,7 +25,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.solana, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] diff --git a/tests/device_tests/solana/test_sign_tx.py b/tests/device_tests/solana/test_sign_tx.py index 5577d99147..241a3d3b34 100644 --- a/tests/device_tests/solana/test_sign_tx.py +++ b/tests/device_tests/solana/test_sign_tx.py @@ -28,7 +28,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.solana, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] diff --git a/tests/device_tests/stellar/test_stellar.py b/tests/device_tests/stellar/test_stellar.py index 3fdaa329f5..8e214ab113 100644 --- a/tests/device_tests/stellar/test_stellar.py +++ b/tests/device_tests/stellar/test_stellar.py @@ -119,7 +119,7 @@ def test_get_address(client: Client, parameters, result): assert address == result["address"] -@pytest.mark.skip_t1b1("No input flow for T1") +@pytest.mark.models("core") @parametrize_using_common_fixtures("stellar/get_address.json") def test_get_address_chunkify_details(client: Client, parameters, result): with client: diff --git a/tests/device_tests/test_authenticate_device.py b/tests/device_tests/test_authenticate_device.py index 519c45a1d9..f2ffb5d715 100644 --- a/tests/device_tests/test_authenticate_device.py +++ b/tests/device_tests/test_authenticate_device.py @@ -9,7 +9,7 @@ from ..common import compact_size -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2t1] +pytestmark = pytest.mark.models("safe") ROOT_PUBLIC_KEY = { models.T2B1: bytes.fromhex( @@ -18,6 +18,9 @@ models.T3T1: bytes.fromhex( "04e48b69cd7962068d3cca3bcc6b1747ef496c1e28b5529e34ad7295215ea161dbe8fb08ae0479568f9d2cb07630cb3e52f4af0692102da5873559e45e9fa72959" ), + models.T3B1: bytes.fromhex( + "047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a" + ), } @@ -75,7 +78,12 @@ def test_authenticate_device(client: Client, challenge: bytes) -> None: # Verify that the common name matches the Trezor model. common_name = cert.subject.get_attributes_for_oid(x509.oid.NameOID.COMMON_NAME)[0] - assert common_name.value.startswith(client.features.internal_model) + if client.model == models.T3B1: + # XXX TODO replace as soon as we have T3B1 staging + internal_model = "T2B1" + else: + internal_model = client.model.internal_name + assert common_name.value.startswith(internal_model) # Verify the signature of the challenge. data = b"\x13AuthenticateDevice:" + compact_size(len(challenge)) + challenge diff --git a/tests/device_tests/test_autolock.py b/tests/device_tests/test_autolock.py index 92c14e0722..dc0f69a1df 100644 --- a/tests/device_tests/test_autolock.py +++ b/tests/device_tests/test_autolock.py @@ -111,7 +111,7 @@ def test_apply_auto_lock_delay_out_of_range(client: Client, seconds): device.apply_settings(client, auto_lock_delay_ms=delay) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_autolock_cancels_ui(client: Client): set_autolock_delay(client, 10 * 1000) diff --git a/tests/device_tests/test_bip32_speed.py b/tests/device_tests/test_bip32_speed.py index cca0198056..1d184c7e4a 100644 --- a/tests/device_tests/test_bip32_speed.py +++ b/tests/device_tests/test_bip32_speed.py @@ -24,9 +24,7 @@ from trezorlib.tools import H_ pytestmark = [ - pytest.mark.skip_t2t1, - pytest.mark.skip_t2b1, - pytest.mark.skip_t3t1, + pytest.mark.models("legacy"), pytest.mark.flaky(max_runs=5), ] diff --git a/tests/device_tests/test_busy_state.py b/tests/device_tests/test_busy_state.py index 6f834835f6..920c1dab90 100644 --- a/tests/device_tests/test_busy_state.py +++ b/tests/device_tests/test_busy_state.py @@ -18,7 +18,8 @@ import pytest -from trezorlib import btc, device, models +from trezorlib import btc, device +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.tools import parse_path @@ -27,7 +28,7 @@ def _assert_busy(client: Client, should_be_busy: bool, screen: str = "Homescreen"): assert client.features.busy is should_be_busy - if client.model in (models.T2T1, models.T2B1, models.T3T1): + if client.layout_type is not LayoutType.T1: if should_be_busy: assert "CoinJoinProgress" in client.debug.read_layout().all_components() else: diff --git a/tests/device_tests/test_cancel.py b/tests/device_tests/test_cancel.py index f99fbb2f49..108a7c1034 100644 --- a/tests/device_tests/test_cancel.py +++ b/tests/device_tests/test_cancel.py @@ -17,7 +17,7 @@ import pytest import trezorlib.messages as m -from trezorlib import models +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import Cancelled @@ -71,7 +71,7 @@ def test_cancel_message_via_initialize(client: Client, message): assert isinstance(resp, m.Features) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_cancel_on_paginated(client: Client): """Check that device is responsive on paginated screen. See #1708.""" # In #1708, the device would ignore USB (or UDP) events while waiting for the user @@ -94,7 +94,7 @@ def test_cancel_on_paginated(client: Client): # In T2B1, confirm message is no longer paginated by default, # user needs to click info button - if client.model is models.T2B1: + if client.layout_type is LayoutType.TR: client._raw_write(m.ButtonAck()) client.debug.press_right() resp = client._raw_read() diff --git a/tests/device_tests/test_debuglink.py b/tests/device_tests/test_debuglink.py index 4e6a94d583..747613db12 100644 --- a/tests/device_tests/test_debuglink.py +++ b/tests/device_tests/test_debuglink.py @@ -24,17 +24,13 @@ from ..common import MNEMONIC12 -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_layout(client: Client): layout = client.debug.state().layout assert len(layout) == 1024 -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") @pytest.mark.setup_client(mnemonic=MNEMONIC12) def test_mnemonic(client: Client): client.ensure_unlocked() @@ -42,9 +38,7 @@ def test_mnemonic(client: Client): assert mnemonic == MNEMONIC12.encode() -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") @pytest.mark.setup_client(mnemonic=MNEMONIC12, pin="1234", passphrase="") def test_pin(client: Client): resp = client.call_raw(messages.GetAddress(address_n=parse_path("m/44'/0'/0'/0/0"))) @@ -62,7 +56,7 @@ def test_pin(client: Client): assert isinstance(resp, messages.Address) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_softlock_instability(client: Client): def load_device(): debuglink.load_device( diff --git a/tests/device_tests/test_firmware_hash.py b/tests/device_tests/test_firmware_hash.py index 3c16b08145..50eb063c2b 100644 --- a/tests/device_tests/test_firmware_hash.py +++ b/tests/device_tests/test_firmware_hash.py @@ -11,6 +11,7 @@ models.T2T1: 13 * 128 * 1024, models.T2B1: 13 * 128 * 1024, models.T3T1: 208 * 8 * 1024, + models.T3B1: 208 * 8 * 1024, } diff --git a/tests/device_tests/test_language.py b/tests/device_tests/test_language.py index 205055008f..ab5db1ab58 100644 --- a/tests/device_tests/test_language.py +++ b/tests/device_tests/test_language.py @@ -35,13 +35,14 @@ sign_blob, ) -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") MAX_DATA_LENGTH = { models.T2T1: 48 * 1024, models.T2B1: 32 * 1024, models.T3T1: 256 * 1024, + models.T3B1: 256 * 1024, } diff --git a/tests/device_tests/test_msg_applysettings.py b/tests/device_tests/test_msg_applysettings.py index 1e55737bde..5ff88b017f 100644 --- a/tests/device_tests/test_msg_applysettings.py +++ b/tests/device_tests/test_msg_applysettings.py @@ -68,7 +68,7 @@ def test_apply_settings(client: Client): assert client.features.label == "new label" -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_apply_settings_rotation(client: Client): assert client.features.display_rotation is None @@ -101,7 +101,7 @@ def test_apply_settings_passphrase(client: Client): @pytest.mark.setup_client(passphrase=False) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_apply_settings_passphrase_on_device(client: Client): # enable passphrase with client: @@ -135,9 +135,7 @@ def test_apply_settings_passphrase_on_device(client: Client): assert client.features.passphrase_always_on_device is False -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("safe3") def test_apply_homescreen_tr_toif_good(client: Client): with client: _set_expected_responses(client) @@ -148,9 +146,7 @@ def test_apply_homescreen_tr_toif_good(client: Client): device.apply_settings(client, homescreen=b"") -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("safe3") @pytest.mark.setup_client(pin=None) # so that "PIN NOT SET" is shown in the header def test_apply_homescreen_tr_toif_with_notification(client: Client): with client: @@ -158,9 +154,7 @@ def test_apply_homescreen_tr_toif_with_notification(client: Client): device.apply_settings(client, homescreen=TR_HOMESCREEN) -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("safe3") def test_apply_homescreen_tr_toif_with_long_label(client: Client): with client: _set_expected_responses(client) @@ -175,9 +169,7 @@ def test_apply_homescreen_tr_toif_with_long_label(client: Client): device.apply_settings(client, label="My even longer label") -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("safe3") def test_apply_homescreen_tr_toif_wrong_size(client: Client): # 64x64 img img = b"TOIG@\x00@\x009\x02\x00\x00}R\xdb\x81$A\x08\"\x03\xf3\xcf\xd2\x0c<\x01-{\xefc\xe6\xd5\xbbU\xa2\x08T\xd6\xcfw\xf4\xe7\xc7\xb7X\xf1\xe3\x1bl\xf0\xf7\x1b\xf8\x1f\xcf\xe7}\xe1\x83\xcf|>\x8d%\x14\xa5\xb3\xe9p5\xa1;~4:\xcd\xe0&\x11\x1d\xe9\xf6\xa1\x1fw\xf54\x95eWx\xda\xd0u\x91\x86\xb8\xbc\xdf\xdc\x008f\x15\xc6\xf6\x7f\xf0T\xb8\xc1\xa3\xc5_A\xc0G\x930\xe7\xdc=\xd5\xa7\xc1\xbcI\x16\xb8s\x9c&\xaa\x06\xc1}\x8b\x19\x9d'c\xc3\xe3^\xc3m\xb6n\xb0(\x16\xf6\xdeg\xb3\x96:i\xe5\x9c\x02\x93\x9fF\x9f-\xa7\"w\xf3X\x9f\x87\x08\x84\"v,\xab!9:<j+\xcb\xf3_\xc7\xd6^<\xce\xc1\xb8!\xec\x8f/\xb1\xc1\x8f\xbd\xcc\x06\x90\x0e\x98)[\xdb\x15\x99\xaf\xf2~\x8e\xd0\xdb\xcd\xfd\x90\x12\xb6\xdd\xc3\xdd|\x96$\x01P\x86H\xbc\xc0}\xa2\x08\xe5\x82\x06\xd2\xeb\x07[\r\xe4\xdeP\xf4\x86;\xa5\x14c\x12\xe3\xb16x\xad\xc7\x1d\x02\xef\x86<\xc6\x95\xd3/\xc4 \xa1\xf5V\xe2\t\xb2\x8a\xd6`\xf2\xcf\xb7\xd6\x07\xdf8X\xa7\x18\x03\x96\x82\xa4 \xeb.*kP\xceu\x9d~}H\xe9\xb8\x04<4\xff\xf8\xcf\xf6\xa0\xf2\xfcM\xe3/?k\xff\x18\x1d\xb1\xee\xc5\xf5\x1f\x01\x14\x03;\x1bU\x1f~\xcf\xb3\xf7w\xe5\nMfd/\xb93\x9fq\x9bQ\xb7'\xbfvq\x1d\xce\r\xbaDo\x90\xbc\xc5:?;\x84y\x8a\x1e\xad\xe9\xb7\x14\x10~\x9b@\xf8\x82\xdc\x89\xe7\xf0\xe0k4o\x9a\xa0\xc4\xb9\xba\xc56\x01i\x85EO'e6\xb7\x15\xb4G\x05\xe1\xe7%\xd3&\x93\x91\xc9CTQ\xeb\xcc\xd0\xd7E9\xa9JK\xcc\x00\x95(\xdc.\xd2#7:Yo}y_*\x1a\xae6)\x97\x9d\xc0\x80vl\x02\\M\xfe\xc9sW\xa8\xfbD\x99\xb8\xb0:\xbc\x80\xfd\xef\xd3\x94\xbe\x18j9z\x12S\xa1\xec$\x1c\xe3\xd1\xd0\xf4\xdd\xbfI\xf1rBj\x0f\x1cz\x1d\xf7\xa5tR\xb3\xfc\xa4\xd0\xfah\xc3Mj\xbe\x14r\x9d\x84z\xd2\x7f\x13\xb4w\xce\xa0\xaeW\xa4\x18\x0b\xe4\x8f\xe6\xc3\xbeQ\x93\xb0L<J\xe3g9\xb5W#f\xd1\x0b\x96|\xd6z1;\x85\x7f\xe3\xe6[\x02A\xdc\xa4\x02\x1b\x91\x88\x7f" @@ -186,9 +178,7 @@ def test_apply_homescreen_tr_toif_wrong_size(client: Client): device.apply_settings(client, homescreen=img) -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("safe3") def test_apply_homescreen_tr_upload_jpeg_fail(client: Client): with open(HERE / "test_bg.jpg", "rb") as f: img = f.read() @@ -197,17 +187,14 @@ def test_apply_homescreen_tr_upload_jpeg_fail(client: Client): device.apply_settings(client, homescreen=img) -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("safe3") def test_apply_homescreen_tr_upload_t1_fail(client: Client): with pytest.raises(exceptions.TrezorFailure), client: _set_expected_responses(client) device.apply_settings(client, homescreen=T1_HOMESCREEN) -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2b1 +@pytest.mark.models(skip=["legacy", "safe3"]) def test_apply_homescreen_toif(client: Client): img = b"TOIf\x90\x00\x90\x00~\x00\x00\x00\xed\xd2\xcb\r\x83@\x10D\xc1^.\xde#!\xac31\x99\x10\x8aC%\x14~\x16\x92Y9\x02WI3\x01<\xf5cI2d\x1es(\xe1[\xdbn\xba\xca\xe8s7\xa4\xd5\xd4\xb3\x13\xbdw\xf6:\xf3\xd1\xe7%\xc7]\xdd_\xb3\x9e\x9f\x9e\x9fN\xed\xaaE\xef\xdc\xcf$D\xa7\xa4X\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0OV" @@ -216,8 +203,7 @@ def test_apply_homescreen_toif(client: Client): device.apply_settings(client, homescreen=img) -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2b1 +@pytest.mark.models(skip=["legacy", "safe3"]) def test_apply_homescreen_jpeg(client: Client): with open(HERE / "test_bg.jpg", "rb") as f: img = f.read() @@ -229,8 +215,7 @@ def test_apply_homescreen_jpeg(client: Client): device.apply_settings(client, homescreen=b"") -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2b1 +@pytest.mark.models(skip=["legacy", "safe3"]) def test_apply_homescreen_jpeg_progressive(client: Client): img = ( b"\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x01,\x01," @@ -286,8 +271,7 @@ def test_apply_homescreen_jpeg_progressive(client: Client): device.apply_settings(client, homescreen=img) -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2b1 +@pytest.mark.models(skip=["legacy", "safe3"]) def test_apply_homescreen_jpeg_wrong_size(client: Client): img = ( b"\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x01,\x01," @@ -333,9 +317,7 @@ def test_apply_homescreen_jpeg_wrong_size(client: Client): device.apply_settings(client, homescreen=img) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_apply_homescreen(client: Client): with client: _set_expected_responses(client) @@ -398,7 +380,7 @@ def get_bad_address(): get_bad_address() -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_experimental_features(client: Client): def experimental_call(): misc.get_nonce(client) diff --git a/tests/device_tests/test_msg_backup_device.py b/tests/device_tests/test_msg_backup_device.py index 2a79338772..960efd84ff 100644 --- a/tests/device_tests/test_msg_backup_device.py +++ b/tests/device_tests/test_msg_backup_device.py @@ -18,7 +18,8 @@ import pytest import shamir_mnemonic as shamir -from trezorlib import device, messages, models +from trezorlib import device, messages +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure @@ -37,7 +38,7 @@ ) -@pytest.mark.skip_t1b1 # TODO we want this for t1 too +@pytest.mark.models("core") # TODO we want this for t1 too @pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC12) def test_backup_bip39(client: Client): assert client.features.backup_availability == messages.BackupAvailability.Required @@ -58,13 +59,13 @@ def test_backup_bip39(client: Client): assert client.features.backup_type is messages.BackupType.Bip39 -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6) @pytest.mark.parametrize( "click_info", [True, False], ids=["click_info", "no_click_info"] ) def test_backup_slip39_basic(client: Client, click_info: bool): - if click_info and client.model is models.T2B1: + if click_info and client.layout_type is LayoutType.TR: pytest.skip("click_info not implemented on T2B1") assert client.features.backup_availability == messages.BackupAvailability.Required @@ -88,13 +89,13 @@ def test_backup_slip39_basic(client: Client, click_info: bool): assert expected_ms == actual_ms -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_ADVANCED_20) @pytest.mark.parametrize( "click_info", [True, False], ids=["click_info", "no_click_info"] ) def test_backup_slip39_advanced(client: Client, click_info: bool): - if click_info and client.model is models.T2B1: + if click_info and client.layout_type is LayoutType.TR: pytest.skip("click_info not implemented on T2B1") assert client.features.backup_availability == messages.BackupAvailability.Required @@ -120,7 +121,7 @@ def test_backup_slip39_advanced(client: Client, click_info: bool): assert expected_ms == actual_ms -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_CUSTOM_1of1[0]) @pytest.mark.parametrize( "share_threshold,share_count", diff --git a/tests/device_tests/test_msg_change_wipe_code_t1.py b/tests/device_tests/test_msg_change_wipe_code_t1.py index a4cbc8d16f..18b1749bb0 100644 --- a/tests/device_tests/test_msg_change_wipe_code_t1.py +++ b/tests/device_tests/test_msg_change_wipe_code_t1.py @@ -29,7 +29,7 @@ WIPE_CODE_MAX = "".join(chr((i % 9) + ord("1")) for i in range(MAX_PIN_LENGTH)) WIPE_CODE_TOO_LONG = WIPE_CODE_MAX + "1" -pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] +pytestmark = pytest.mark.models("legacy") def _set_wipe_code(client: Client, pin, wipe_code): diff --git a/tests/device_tests/test_msg_change_wipe_code_t2.py b/tests/device_tests/test_msg_change_wipe_code_t2.py index f3b559174d..e25374050e 100644 --- a/tests/device_tests/test_msg_change_wipe_code_t2.py +++ b/tests/device_tests/test_msg_change_wipe_code_t2.py @@ -16,8 +16,9 @@ import pytest -from trezorlib import btc, device, messages, models +from trezorlib import btc, device, messages from trezorlib.client import MAX_PIN_LENGTH, PASSPHRASE_TEST_PATH +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure @@ -28,7 +29,7 @@ WIPE_CODE6 = "456789" WIPE_CODE_MAX = "".join(chr((i % 10) + ord("0")) for i in range(MAX_PIN_LENGTH)) -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") def _check_wipe_code(client: Client, pin: str, wipe_code: str): @@ -38,11 +39,10 @@ def _check_wipe_code(client: Client, pin: str, wipe_code: str): # Try to change the PIN to the current wipe code value. The operation should fail. with client, pytest.raises(TrezorFailure): client.use_pin_sequence([pin, wipe_code, wipe_code]) - br_count = { - models.T2T1: 5, - models.T2B1: 6, - models.T3T1: 5, - }[client.model] + if client.layout_type is LayoutType.TR: + br_count = 6 + else: + br_count = 5 client.set_expected_responses( [messages.ButtonRequest()] * br_count + [messages.Failure(code=messages.FailureType.PinInvalid)] @@ -66,11 +66,10 @@ def test_set_remove_wipe_code(client: Client): _ensure_unlocked(client, PIN4) assert client.features.wipe_code_protection is False - br_count = { - models.T2T1: 5, - models.T2B1: 6, - models.T3T1: 5, - }[client.model] + if client.layout_type is LayoutType.TR: + br_count = 6 + else: + br_count = 5 with client: client.set_expected_responses( @@ -126,11 +125,10 @@ def test_set_wipe_code_to_pin(client: Client): _ensure_unlocked(client, PIN4) with client: - br_count = { - models.T2T1: 7, - models.T2B1: 8, - models.T3T1: 7, - }[client.model] + if client.layout_type is LayoutType.TR: + br_count = 8 + else: + br_count = 7 client.set_expected_responses( [messages.ButtonRequest()] * br_count + [messages.Success, messages.Features], @@ -146,11 +144,10 @@ def test_set_wipe_code_to_pin(client: Client): def test_set_pin_to_wipe_code(client: Client): # Set wipe code. with client: - br_count = { - models.T2T1: 4, - models.T2B1: 5, - models.T3T1: 4, - }[client.model] + if client.layout_type is LayoutType.TR: + br_count = 5 + else: + br_count = 4 client.set_expected_responses( [messages.ButtonRequest()] * br_count + [messages.Success, messages.Features] @@ -160,11 +157,10 @@ def test_set_pin_to_wipe_code(client: Client): # Try to set the PIN to the current wipe code value. with client, pytest.raises(TrezorFailure): - br_count = { - models.T2T1: 4, - models.T2B1: 6, - models.T3T1: 4, - }[client.model] + if client.layout_type is LayoutType.TR: + br_count = 6 + else: + br_count = 4 client.set_expected_responses( [messages.ButtonRequest()] * br_count + [messages.Failure(code=messages.FailureType.PinInvalid)] diff --git a/tests/device_tests/test_msg_changepin_t1.py b/tests/device_tests/test_msg_changepin_t1.py index b12ca38b1d..ce18eafabe 100644 --- a/tests/device_tests/test_msg_changepin_t1.py +++ b/tests/device_tests/test_msg_changepin_t1.py @@ -28,7 +28,7 @@ PIN_MAX = "".join(chr((i % 9) + ord("1")) for i in range(MAX_PIN_LENGTH)) PIN_TOO_LONG = PIN_MAX + "1" -pytestmark = [pytest.mark.skip_t2t1, pytest.mark.skip_t2b1, pytest.mark.skip_t3t1] +pytestmark = pytest.mark.models("legacy") def _check_pin(client: Client, pin): diff --git a/tests/device_tests/test_msg_changepin_t2.py b/tests/device_tests/test_msg_changepin_t2.py index 0ce9fdc2f6..599f502ab6 100644 --- a/tests/device_tests/test_msg_changepin_t2.py +++ b/tests/device_tests/test_msg_changepin_t2.py @@ -16,8 +16,9 @@ import pytest -from trezorlib import btc, device, messages, models +from trezorlib import btc, device, messages from trezorlib.client import MAX_PIN_LENGTH, PASSPHRASE_TEST_PATH +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import Cancelled, TrezorFailure @@ -32,7 +33,7 @@ PIN60 = "789456" * 10 PIN_MAX = "".join(chr((i % 10) + ord("0")) for i in range(MAX_PIN_LENGTH)) -pytestmark = pytest.mark.skip_t1b1 +pytestmark = pytest.mark.models("core") def _check_pin(client: Client, pin: str): @@ -63,11 +64,10 @@ def test_set_pin(client: Client): # Let's set new PIN with client: - br_count = { - models.T2T1: 4, - models.T2B1: 6, - models.T3T1: 4, - }[client.model] + if client.layout_type is LayoutType.TR: + br_count = 6 + else: + br_count = 4 client.use_pin_sequence([PIN_MAX, PIN_MAX]) client.set_expected_responses( [messages.ButtonRequest] * br_count + [messages.Success, messages.Features] @@ -89,11 +89,10 @@ def test_change_pin(client: Client): # Let's change PIN with client: client.use_pin_sequence([PIN4, PIN_MAX, PIN_MAX]) - br_count = { - models.T2T1: 5, - models.T2B1: 6, - models.T3T1: 5, - }[client.model] + if client.layout_type is LayoutType.TR: + br_count = 6 + else: + br_count = 5 client.set_expected_responses( [messages.ButtonRequest] * br_count + [messages.Success, messages.Features] ) @@ -183,8 +182,7 @@ def test_change_invalid_current(client: Client): _check_pin(client, PIN4) -@pytest.mark.skip_t2b1() -@pytest.mark.skip_t2t1() +@pytest.mark.models("mercury") @pytest.mark.setup_client(pin=None) def test_pin_menu_cancel_setup(client: Client): def cancel_pin_setup_input_flow(): diff --git a/tests/device_tests/test_msg_loaddevice.py b/tests/device_tests/test_msg_loaddevice.py index 0bfd2c78c6..b42d11b050 100644 --- a/tests/device_tests/test_msg_loaddevice.py +++ b/tests/device_tests/test_msg_loaddevice.py @@ -68,7 +68,7 @@ def test_load_device_2(client: Client): assert address == "mx77VZjTVixVsU7nCtAKHnGFdsyNCnsWWw" -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_load_device_slip39_basic(client: Client): debuglink.load_device( client, @@ -80,7 +80,7 @@ def test_load_device_slip39_basic(client: Client): assert client.features.backup_type == BackupType.Slip39_Basic -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_load_device_slip39_advanced(client: Client): debuglink.load_device( client, diff --git a/tests/device_tests/test_msg_sd_protect.py b/tests/device_tests/test_msg_sd_protect.py index 24447e0cbc..fb30561382 100644 --- a/tests/device_tests/test_msg_sd_protect.py +++ b/tests/device_tests/test_msg_sd_protect.py @@ -23,7 +23,7 @@ from ..common import MNEMONIC12 -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1, pytest.mark.sd_card] +pytestmark = [pytest.mark.models("core", skip="safe3"), pytest.mark.sd_card] def test_enable_disable(client: Client): diff --git a/tests/device_tests/test_msg_show_device_tutorial.py b/tests/device_tests/test_msg_show_device_tutorial.py index 47bb62f192..a935d3821f 100644 --- a/tests/device_tests/test_msg_show_device_tutorial.py +++ b/tests/device_tests/test_msg_show_device_tutorial.py @@ -16,7 +16,7 @@ import pytest -from trezorlib import device +from trezorlib import device, exceptions from trezorlib.debuglink import TrezorClientDebugLink as Client from ..input_flows import InputFlowTutorial @@ -24,14 +24,23 @@ # TODO not initialized? @pytest.mark.setup_client(uninitialized=True) -@pytest.mark.skip_t1b1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t2t1 -@pytest.mark.parametrize("cancel", (True, False)) -def test_tutorial_t3t1(client: Client, cancel: bool): +@pytest.mark.models("safe") +def test_tutorial(client: Client): with client: - IF = InputFlowTutorial(client, cancel=cancel) + IF = InputFlowTutorial(client, cancel=False) client.set_input_flow(IF.get()) device.show_device_tutorial(client) assert client.features.initialized is False + + +@pytest.mark.setup_client(uninitialized=True) +@pytest.mark.models("safe") +def test_tutorial_cancel(client: Client): + with client: + IF = InputFlowTutorial(client, cancel=True) + client.set_input_flow(IF.get()) + with pytest.raises(exceptions.Cancelled): + device.show_device_tutorial(client) + + assert client.features.initialized is False diff --git a/tests/device_tests/test_passphrase_slip39_advanced.py b/tests/device_tests/test_passphrase_slip39_advanced.py index 549fc7bc61..64ef1f5e57 100644 --- a/tests/device_tests/test_passphrase_slip39_advanced.py +++ b/tests/device_tests/test_passphrase_slip39_advanced.py @@ -26,7 +26,7 @@ @pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_ADVANCED_20, passphrase=True) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_128bit_passphrase(client: Client): """ BIP32 Root Key for passphrase TREZOR: @@ -45,7 +45,7 @@ def test_128bit_passphrase(client: Client): @pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_ADVANCED_33, passphrase=True) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_256bit_passphrase(client: Client): """ BIP32 Root Key for passphrase TREZOR: diff --git a/tests/device_tests/test_passphrase_slip39_basic.py b/tests/device_tests/test_passphrase_slip39_basic.py index 8883150c8e..de0e7a734b 100644 --- a/tests/device_tests/test_passphrase_slip39_basic.py +++ b/tests/device_tests/test_passphrase_slip39_basic.py @@ -24,9 +24,10 @@ get_test_address, ) +pytestmark = pytest.mark.models("core") + @pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6, passphrase="TREZOR") -@pytest.mark.skip_t1b1 def test_3of6_passphrase(client: Client): """ BIP32 Root Key for passphrase TREZOR: @@ -45,7 +46,6 @@ def test_3of6_passphrase(client: Client): ), passphrase="TREZOR", ) -@pytest.mark.skip_t1b1 def test_2of5_passphrase(client: Client): """ BIP32 Root Key for passphrase TREZOR: @@ -60,7 +60,6 @@ def test_2of5_passphrase(client: Client): @pytest.mark.setup_client( mnemonic=MNEMONIC_SLIP39_BASIC_EXT_20_2of3, passphrase="TREZOR" ) -@pytest.mark.skip_t1b1 def test_2of3_ext_passphrase(client: Client): """ BIP32 Root Key for passphrase TREZOR: diff --git a/tests/device_tests/test_pin.py b/tests/device_tests/test_pin.py index 1dcadc28fe..ee58790c04 100644 --- a/tests/device_tests/test_pin.py +++ b/tests/device_tests/test_pin.py @@ -57,16 +57,14 @@ def test_correct_pin(client: Client): get_test_address(client) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_incorrect_pin_t1(client: Client): with pytest.raises(PinException): client.use_pin_sequence([BAD_PIN]) get_test_address(client) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_incorrect_pin_t2(client: Client): with client: # After first incorrect attempt, TT will not raise an error, but instead ask for another attempt @@ -81,9 +79,7 @@ def test_incorrect_pin_t2(client: Client): get_test_address(client) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_exponential_backoff_t1(client: Client): for attempt in range(3): start = time.time() @@ -93,7 +89,7 @@ def test_exponential_backoff_t1(client: Client): check_pin_backoff_time(attempt, start) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_exponential_backoff_t2(client: Client): with client: IF = InputFlowPINBackoff(client, BAD_PIN, PIN4) diff --git a/tests/device_tests/test_protection_levels.py b/tests/device_tests/test_protection_levels.py index 75b5b811b6..22ffb13b7f 100644 --- a/tests/device_tests/test_protection_levels.py +++ b/tests/device_tests/test_protection_levels.py @@ -17,6 +17,7 @@ import pytest from trezorlib import btc, device, messages, misc, models +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure from trezorlib.tools import parse_path @@ -69,7 +70,7 @@ def test_initialize(client: Client): client.init_device() -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(pin=PIN4) @pytest.mark.parametrize("passphrase", (True, False)) def test_passphrase_reporting(client: Client, passphrase): @@ -110,9 +111,7 @@ def test_apply_settings(client: Client): device.apply_settings(client, label="nazdar") -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_change_pin_t1(client: Client): _assert_protection(client) with client: @@ -130,7 +129,7 @@ def test_change_pin_t1(client: Client): device.change_pin(client) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_change_pin_t2(client: Client): _assert_protection(client) with client: @@ -141,7 +140,7 @@ def test_change_pin_t2(client: Client): messages.ButtonRequest, _pin_request(client), _pin_request(client), - (client.model is models.T2B1, messages.ButtonRequest), + (client.layout_type is LayoutType.TR, messages.ButtonRequest), _pin_request(client), messages.ButtonRequest, messages.Success, @@ -211,9 +210,7 @@ def test_wipe_device(client: Client): @pytest.mark.setup_client(uninitialized=True) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_reset_device(client: Client): assert client.features.pin_protection is False assert client.features.passphrase_protection is False @@ -246,9 +243,7 @@ def test_reset_device(client: Client): @pytest.mark.setup_client(uninitialized=True) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_recovery_device(client: Client): assert client.features.pin_protection is False assert client.features.passphrase_protection is False @@ -300,9 +295,7 @@ def test_sign_message(client: Client): ) -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") def test_verify_message_t1(client: Client): _assert_protection(client) with client: @@ -325,7 +318,7 @@ def test_verify_message_t1(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_verify_message_t2(client: Client): _assert_protection(client) with client: diff --git a/tests/device_tests/test_repeated_backup.py b/tests/device_tests/test_repeated_backup.py index acec8cf9ad..516bffb9b8 100644 --- a/tests/device_tests/test_repeated_backup.py +++ b/tests/device_tests/test_repeated_backup.py @@ -30,9 +30,10 @@ ) from ..input_flows import InputFlowSlip39BasicBackup, InputFlowSlip39BasicRecoveryDryRun +pytestmark = pytest.mark.models("core") + @pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6) -@pytest.mark.skip_t1b1 @WITH_MOCK_URANDOM def test_repeated_backup(client: Client): assert client.features.backup_availability == messages.BackupAvailability.Required @@ -85,7 +86,6 @@ def test_repeated_backup(client: Client): @pytest.mark.setup_client(mnemonic=MNEMONIC_SLIP39_SINGLE_EXT_20) -@pytest.mark.skip_t1b1 @WITH_MOCK_URANDOM def test_repeated_backup_upgrade_single(client: Client): assert ( @@ -125,7 +125,6 @@ def test_repeated_backup_upgrade_single(client: Client): @pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6) -@pytest.mark.skip_t1b1 @WITH_MOCK_URANDOM def test_repeated_backup_cancel(client: Client): assert client.features.backup_availability == messages.BackupAvailability.Required @@ -181,7 +180,6 @@ def test_repeated_backup_cancel(client: Client): @pytest.mark.setup_client(needs_backup=True, mnemonic=MNEMONIC_SLIP39_BASIC_20_3of6) -@pytest.mark.skip_t1b1 @WITH_MOCK_URANDOM def test_repeated_backup_send_disallowed_message(client: Client): assert client.features.backup_availability == messages.BackupAvailability.Required diff --git a/tests/device_tests/test_sdcard.py b/tests/device_tests/test_sdcard.py index 6e00a07be6..258601e1fe 100644 --- a/tests/device_tests/test_sdcard.py +++ b/tests/device_tests/test_sdcard.py @@ -23,7 +23,7 @@ from .. import translations as TR -pytestmark = [pytest.mark.skip_t1b1, pytest.mark.skip_t2b1] +pytestmark = pytest.mark.models("core", skip="safe3") @pytest.mark.sd_card(formatted=False) diff --git a/tests/device_tests/test_session.py b/tests/device_tests/test_session.py index 0879bac9b9..a8020d0354 100644 --- a/tests/device_tests/test_session.py +++ b/tests/device_tests/test_session.py @@ -159,7 +159,7 @@ def test_session_recycling(client: Client): @pytest.mark.altcoin @pytest.mark.cardano -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_derive_cardano_empty_session(client: Client): # start new session client.init_device(new_session=True) @@ -178,7 +178,7 @@ def test_derive_cardano_empty_session(client: Client): @pytest.mark.altcoin @pytest.mark.cardano -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_derive_cardano_running_session(client: Client): # start new session client.init_device(new_session=True) diff --git a/tests/device_tests/test_session_id_and_passphrase.py b/tests/device_tests/test_session_id_and_passphrase.py index 5cc9f37026..2068009cb7 100644 --- a/tests/device_tests/test_session_id_and_passphrase.py +++ b/tests/device_tests/test_session_id_and_passphrase.py @@ -18,7 +18,8 @@ import pytest -from trezorlib import device, exceptions, messages, models +from trezorlib import device, exceptions, messages +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.exceptions import TrezorFailure from trezorlib.messages import FailureType, SafetyCheckLevel @@ -241,7 +242,7 @@ def test_session_enable_passphrase(client: Client): assert _get_xpub(client, passphrase="A") == XPUB_PASSPHRASES["A"] -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(passphrase=True) def test_passphrase_on_device(client: Client): _init_session(client) @@ -280,7 +281,7 @@ def test_passphrase_on_device(client: Client): assert response.xpub == XPUB_PASSPHRASES["A"] -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(passphrase=True) def test_passphrase_always_on_device(client: Client): # Let's start the communication by calling Initialize. @@ -314,9 +315,7 @@ def test_passphrase_always_on_device(client: Client): assert response.xpub == XPUB_PASSPHRASES["A"] -@pytest.mark.skip_t2t1 -@pytest.mark.skip_t2b1 -@pytest.mark.skip_t3t1 +@pytest.mark.models("legacy") @pytest.mark.setup_client(passphrase="") def test_passphrase_on_device_not_possible_on_t1(client: Client): # This setting makes no sense on T1. @@ -380,7 +379,7 @@ def call(passphrase: str, expected_result: bool): call(passphrase="A" * 49 + "š", expected_result=False) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.setup_client(passphrase=True) def test_hide_passphrase_from_host(client: Client): # Without safety checks, turning it on fails @@ -403,9 +402,9 @@ def input_flow(): (s[:50].lower() in content) for s in TR.translate("passphrase__from_host_not_shown") ) - if client.model in (models.T2T1, models.T3T1): + if client.layout_type in (LayoutType.TT, LayoutType.Mercury): client.debug.press_yes() - elif client.model is models.T2B1: + elif client.layout_type is LayoutType.TR: client.debug.press_right() client.debug.press_right() client.debug.press_yes() @@ -481,7 +480,7 @@ def _get_xpub_cardano(client: Client, passphrase): return response.xpub -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.altcoin @pytest.mark.setup_client(passphrase=True) def test_cardano_passphrase(client: Client): diff --git a/tests/device_tests/tezos/test_getaddress.py b/tests/device_tests/tezos/test_getaddress.py index 857d21b8ef..3e6b542393 100644 --- a/tests/device_tests/tezos/test_getaddress.py +++ b/tests/device_tests/tezos/test_getaddress.py @@ -25,7 +25,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.tezos, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] TEST_VECTORS = [ diff --git a/tests/device_tests/tezos/test_getpublickey.py b/tests/device_tests/tezos/test_getpublickey.py index 279580fd0d..9f5bfcd0f7 100644 --- a/tests/device_tests/tezos/test_getpublickey.py +++ b/tests/device_tests/tezos/test_getpublickey.py @@ -23,7 +23,7 @@ @pytest.mark.altcoin @pytest.mark.tezos -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_tezos_get_public_key(client: Client): path = parse_path("m/44h/1729h/0h") pk = get_public_key(client, path) diff --git a/tests/device_tests/tezos/test_sign_tx.py b/tests/device_tests/tezos/test_sign_tx.py index 7b54db93d8..06e17304db 100644 --- a/tests/device_tests/tezos/test_sign_tx.py +++ b/tests/device_tests/tezos/test_sign_tx.py @@ -28,7 +28,7 @@ pytestmark = [ pytest.mark.altcoin, pytest.mark.tezos, - pytest.mark.skip_t1b1, + pytest.mark.models("core"), ] diff --git a/tests/device_tests/webauthn/test_msg_webauthn.py b/tests/device_tests/webauthn/test_msg_webauthn.py index f98d01c5bd..3fd7ca7fd9 100644 --- a/tests/device_tests/webauthn/test_msg_webauthn.py +++ b/tests/device_tests/webauthn/test_msg_webauthn.py @@ -27,7 +27,7 @@ RK_CAPACITY = 100 -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") @pytest.mark.altcoin @pytest.mark.setup_client(mnemonic=MNEMONIC12) def test_add_remove(client: Client): diff --git a/tests/device_tests/zcash/test_sign_tx.py b/tests/device_tests/zcash/test_sign_tx.py index b680237722..d689c8af96 100644 --- a/tests/device_tests/zcash/test_sign_tx.py +++ b/tests/device_tests/zcash/test_sign_tx.py @@ -276,7 +276,7 @@ def test_one_two(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_unified_address(client: Client): # identical to the test_one_two # but receiver address is unified with an orchard address @@ -334,7 +334,7 @@ def test_unified_address(client: Client): ) -@pytest.mark.skip_t1b1 +@pytest.mark.models("core") def test_external_presigned(client: Client): inp1 = messages.TxInputType( # tmQoJ3PTXgQLaRRZZYT6xk8XtjRbr2kCqwu diff --git a/tests/input_flows.py b/tests/input_flows.py index 488d3997be..993d3c409e 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -14,8 +14,8 @@ import time from typing import Callable, Generator -from trezorlib import messages, models -from trezorlib.debuglink import DebugLink, LayoutContent +from trezorlib import messages +from trezorlib.debuglink import DebugLink, LayoutContent, LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from trezorlib.debuglink import multipage_content @@ -45,20 +45,17 @@ def __init__(self, client: Client): self.BAK = BackupFlow(self.client) self.ETH = EthereumFlow(self.client) - def model(self) -> str | models.TrezorModel: - return self.client.model - def get(self) -> Callable[[], BRGeneratorType]: self.client.watch_layout(True) # There could be one common input flow for all models if hasattr(self, "input_flow_common"): return getattr(self, "input_flow_common") - elif self.model() is models.T2T1: + elif self.client.layout_type is LayoutType.TT: return self.input_flow_tt - elif self.model() is models.T2B1: + elif self.client.layout_type is LayoutType.TR: return self.input_flow_tr - elif self.model() is models.T3T1: + elif self.client.layout_type is LayoutType.Mercury: return self.input_flow_t3t1 else: raise ValueError("Unknown model") @@ -98,7 +95,7 @@ def input_flow_common(self) -> BRGeneratorType: yield # do you want to set/change the wipe code? self.debug.press_yes() - if self.model() is models.T2B1: + if self.client.layout_type is LayoutType.TR: yield from swipe_if_necessary(self.debug) # wipe code info self.debug.press_yes() @@ -127,7 +124,7 @@ def input_flow_common(self) -> BRGeneratorType: yield # do you want to set/change the pin/wipe code? self.debug.press_yes() - if self.model() is models.T2B1: + if self.client.layout_type is LayoutType.TR: yield from swipe_if_necessary(self.debug) # code info self.debug.press_yes() @@ -1124,10 +1121,12 @@ def __init__(self, client: Client): def _confirm_show_more(self) -> None: """Model-specific, either clicks a screen or presses a button.""" - if self.model() in (models.T2T1, models.T3T1): + if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): self.debug.click(self.SHOW_MORE) - elif self.model() is models.T2B1: + elif self.client.layout_type is LayoutType.TR: self.debug.press_right() + else: + raise NotImplementedError def input_flow_common(self) -> BRGeneratorType: """Triggers show more wherever possible""" @@ -1256,7 +1255,7 @@ def get_mnemonic_and_confirm_success( mnemonic = yield from read_and_confirm_mnemonic(debug) is_slip39 = len(mnemonic.split()) in (20, 33) - if debug.model in (models.T2T1, models.T2B1) or is_slip39: + if debug.layout_type in (LayoutType.TT, LayoutType.TR) or is_slip39: br = yield # confirm recovery share check assert br.code == B.Success debug.press_yes() @@ -1333,7 +1332,7 @@ def input_flow_common(self) -> BRGeneratorType: yield from self.PIN.setup_new_pin("654") - if self.debug.model is models.T3T1: + if self.debug.layout_type is LayoutType.Mercury: br = yield # Wallet created assert br.code == B.ResetDevice self.debug.press_yes() @@ -1368,7 +1367,7 @@ def __init__(self, client: Client): self.mnemonic = None def input_flow_common(self) -> BRGeneratorType: - screens = 5 if self.debug.model is models.T3T1 else 4 + screens = 5 if self.debug.layout_type is LayoutType.Mercury else 4 # 1. Confirm Reset # 1a. (T3T1) Walet Creation done # 2. Confirm backup prompt @@ -1975,7 +1974,7 @@ def __init__(self, client: Client): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.model() in (models.T2T1, models.T3T1): + if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): yield from self.REC.input_number_of_words(20) yield from self.REC.abort_recovery(True) @@ -1988,7 +1987,7 @@ def __init__(self, client: Client, shares: list[str]): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.model() in (models.T2T1, models.T3T1): + if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): yield from self.REC.input_number_of_words(self.word_count) yield from self.REC.abort_recovery(False) else: @@ -2097,7 +2096,7 @@ def __init__(self, client: Client): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.model() in (models.T2T1, models.T3T1): + if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): yield from self.REC.input_number_of_words(20) yield from self.REC.abort_recovery(True) @@ -2110,7 +2109,7 @@ def __init__(self, client: Client, shares: list[str]): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.model() in (models.T2T1, models.T3T1): + if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): yield from self.REC.input_number_of_words(20) else: yield from self.REC.tr_recovery_homescreen() @@ -2130,7 +2129,7 @@ def __init__(self, client: Client, shares: list[str]): def input_flow_common(self) -> BRGeneratorType: yield from self.REC.confirm_recovery() - if self.model() in (models.T2T1, models.T3T1): + if self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): yield from self.REC.input_number_of_words(self.word_count) yield from self.REC.abort_recovery(False) else: diff --git a/tests/input_flows_helpers.py b/tests/input_flows_helpers.py index 7838ff0cb0..b03af50581 100644 --- a/tests/input_flows_helpers.py +++ b/tests/input_flows_helpers.py @@ -1,4 +1,5 @@ -from trezorlib import messages, models +from trezorlib import messages +from trezorlib.debuglink import LayoutType from trezorlib.debuglink import TrezorClientDebugLink as Client from . import buttons @@ -19,7 +20,7 @@ def setup_new_pin( yield # Enter PIN assert "PinKeyboard" in self.debug.wait_layout().all_components() self.debug.input(pin) - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: yield # Reenter PIN TR.assert_in( self.debug.wait_layout().text_content(), "pin__reenter_to_confirm" @@ -41,7 +42,7 @@ def __init__(self, client: Client): def confirm_new_wallet(self) -> BRGeneratorType: yield TR.assert_in(self.debug.wait_layout().text_content(), "reset__by_continuing") - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: self.debug.press_right() self.debug.press_yes() @@ -58,7 +59,7 @@ def _text_content(self) -> str: def confirm_recovery(self) -> BRGeneratorType: yield TR.assert_in(self._text_content(), "reset__by_continuing") - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: self.debug.press_right() self.debug.press_yes() @@ -68,19 +69,19 @@ def confirm_dry_run(self) -> BRGeneratorType: self.debug.press_yes() def setup_slip39_recovery(self, num_words: int) -> BRGeneratorType: - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: yield from self.tr_recovery_homescreen() yield from self.input_number_of_words(num_words) yield from self.enter_any_share() def setup_repeated_backup_recovery(self, num_words: int) -> BRGeneratorType: - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: yield from self.tr_recovery_homescreen() yield from self.input_number_of_words(num_words) yield from self.enter_your_backup() def setup_bip39_recovery(self, num_words: int) -> BRGeneratorType: - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: yield from self.tr_recovery_homescreen() yield from self.input_number_of_words(num_words) yield from self.enter_your_backup() @@ -92,7 +93,7 @@ def tr_recovery_homescreen(self) -> BRGeneratorType: def enter_your_backup(self) -> BRGeneratorType: yield - if self.debug.model is models.T3T1: + if self.debug.layout_type is LayoutType.Mercury: TR.assert_in(self._text_content(), "recovery__enter_each_word") else: TR.assert_in(self._text_content(), "recovery__enter_backup") @@ -100,7 +101,7 @@ def enter_your_backup(self) -> BRGeneratorType: title in self.debug.wait_layout().title().lower() for title in TR.translate("recovery__title_dry_run", lower=True) ) - if self.client.model is models.T2B1 and not is_dry_run: + if self.client.layout_type is LayoutType.TR and not is_dry_run: # Normal recovery has extra info (not dry run) self.debug.press_right(wait=True) self.debug.press_right(wait=True) @@ -116,7 +117,7 @@ def enter_any_share(self) -> BRGeneratorType: title in self.debug.wait_layout().title().lower() for title in TR.translate("recovery__title_dry_run", lower=True) ) - if self.client.model is models.T2B1 and not is_dry_run: + if self.client.layout_type is LayoutType.TR and not is_dry_run: # Normal recovery has extra info (not dry run) self.debug.press_right(wait=True) self.debug.press_right(wait=True) @@ -124,7 +125,7 @@ def enter_any_share(self) -> BRGeneratorType: def abort_recovery(self, confirm: bool) -> BRGeneratorType: yield - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: TR.assert_in(self._text_content(), "recovery__num_of_words") self.debug.press_no() yield @@ -134,7 +135,7 @@ def abort_recovery(self, confirm: bool) -> BRGeneratorType: self.debug.press_yes() else: self.debug.press_no() - elif self.client.model is models.T3T1: + elif self.client.layout_type is LayoutType.Mercury: TR.assert_in(self._text_content(), "recovery__enter_each_word") self.debug.click(buttons.CORNER_BUTTON, wait=True) self.debug.synchronize_at("VerticalMenu") @@ -154,7 +155,7 @@ def abort_recovery(self, confirm: bool) -> BRGeneratorType: def abort_recovery_between_shares(self) -> BRGeneratorType: yield - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: TR.assert_template( self._text_content(), "recovery__x_of_y_entered_template" ) @@ -163,7 +164,7 @@ def abort_recovery_between_shares(self) -> BRGeneratorType: TR.assert_in(self._text_content(), "recovery__wanna_cancel_recovery") self.debug.press_right() self.debug.press_yes() - elif self.client.model is models.T3T1: + elif self.client.layout_type is LayoutType.Mercury: TR.assert_template( self._text_content(), "recovery__x_of_y_entered_template" ) @@ -186,7 +187,7 @@ def abort_recovery_between_shares(self) -> BRGeneratorType: def input_number_of_words(self, num_words: int) -> BRGeneratorType: br = yield assert br.code == B.MnemonicWordCount - if self.client.model is models.T2B1: + if self.client.layout_type is LayoutType.TR: TR.assert_in(self.debug.wait_layout().title(), "word_count__title") else: TR.assert_in(self._text_content(), "recovery__num_of_words") @@ -240,7 +241,7 @@ def success_bip39_dry_run_valid(self) -> BRGeneratorType: assert br.code == B.Success text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page - if self.client.model not in (models.T2T1, models.T3T1): + if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): TR.assert_in(text, "recovery__dry_run_bip39_valid_match") self.debug.press_yes() @@ -249,7 +250,7 @@ def success_slip39_dryrun_valid(self) -> BRGeneratorType: assert br.code == B.Success text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page - if self.client.model not in (models.T2T1, models.T3T1): + if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): TR.assert_in(text, "recovery__dry_run_slip39_valid_match") self.debug.press_yes() @@ -258,7 +259,7 @@ def warning_slip39_dryrun_mismatch(self) -> BRGeneratorType: assert br.code == B.Warning text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page on TT - if self.client.model not in (models.T2T1, models.T3T1): + if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): TR.assert_in(text, "recovery__dry_run_slip39_valid_mismatch") self.debug.press_yes() @@ -267,7 +268,7 @@ def warning_bip39_dryrun_mismatch(self) -> BRGeneratorType: assert br.code == B.Warning text = get_text_possible_pagination(self.debug, br) # TODO: make sure the translations fit on one page - if self.client.model not in (models.T2T1, models.T3T1): + if self.client.layout_type not in (LayoutType.TT, LayoutType.Mercury): TR.assert_in(text, "recovery__dry_run_bip39_valid_mismatch") self.debug.press_yes() @@ -301,9 +302,9 @@ def input_all_slip39_shares( if has_groups: yield from self.success_share_group_entered() if click_info: - if self.client.model is models.T2T1: + if self.client.layout_type is LayoutType.TT: yield from self.tt_click_info() - elif self.client.model is models.T3T1: + elif self.client.layout_type is LayoutType.Mercury: yield from self.mercury_click_info() yield from self.success_more_shares_needed() @@ -371,16 +372,18 @@ def paginate_data_go_back(self) -> BRGeneratorType: ) assert br.pages is not None assert br.pages > 2 - if self.client.model in (models.T2T1, models.T3T1): - self.debug.swipe_up(wait=True) - self.debug.swipe_up(wait=True) - self.debug.click(self.GO_BACK) - else: + if self.client.layout_type is LayoutType.TR: self.debug.press_right() self.debug.press_right() self.debug.press_left() self.debug.press_left() self.debug.press_left() + elif self.client.layout_type in (LayoutType.TT, LayoutType.Mercury): + self.debug.swipe_up(wait=True) + self.debug.swipe_up(wait=True) + self.debug.click(self.GO_BACK) + else: + raise ValueError(f"Unknown layout: {self.client.layout_type}") def confirm_tx( self, @@ -391,7 +394,7 @@ def confirm_tx( yield - if self.client.model in (models.T2T1,): + if self.client.layout_type is LayoutType.TT: TR.assert_equals(self.debug.wait_layout().title(), "words__recipient") if cancel: self.debug.press_no() @@ -421,10 +424,7 @@ def confirm_tx( self.debug.press_yes() yield - elif self.client.model in ( - models.T2B1, - models.T3B1, - ): + elif self.client.layout_type is LayoutType.TR: TR.assert_equals(self.debug.wait_layout().title(), "words__recipient") if cancel: self.debug.press_left() @@ -453,7 +453,7 @@ def confirm_tx( self.debug.press_middle() yield - elif self.client.model in (models.T3T1,): + elif self.client.layout_type is LayoutType.Mercury: TR.assert_equals( self.debug.wait_layout().title().split("\n")[0], "words__address" ) @@ -518,7 +518,7 @@ def confirm_tx_staking( "ethereum__staking_claim_intro", ], ) - if self.client.model in (models.T2T1,): + if self.client.layout_type is LayoutType.TT: # confirm intro if info: self.debug.click(buttons.CORNER_BUTTON, wait=True) @@ -547,7 +547,8 @@ def confirm_tx_staking( yield self.debug.press_yes() - elif self.client.model in (models.T3T1,): + + elif self.client.layout_type is LayoutType.Mercury: # confirm intro if info: self.debug.click(buttons.CORNER_BUTTON, wait=True) @@ -586,10 +587,7 @@ def confirm_tx_staking( self.debug.press_yes() - elif self.client.model in ( - models.T2B1, - models.T3B1, - ): + elif self.client.layout_type is LayoutType.TR: # confirm intro if info: self.debug.press_right(wait=True) @@ -620,5 +618,6 @@ def confirm_tx_staking( yield self.debug.press_yes() + else: raise ValueError("Unknown model!") diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 137c393f3f..9df57337d3 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -16058,7 +16058,6 @@ "T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "cb85c264e20703fa89c6e592a8d1c884995d306a1be60c12173cfc41c9264faf", "T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "9ac715eb3c3027f9a5455812e2c2798830c618e1604f9e90c5c0c8f0f96c3dee", "T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "b5f892e61f507ef6b2947876d9b77af6c161359297c92744d5f208416696670b", -"T3B1_en_bitcoin-test_signtx_payreq.py::test_payment_request_details": "8c801bd0142e5c1ad4aad50b34c7debb1b8f17a2e0a87eb7f95531b9fd15e095", "T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", "T3B1_en_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "19d738c0babfd39c17793e98e5d621e147d02367f4e4a7c712bb08c0f914a04e", @@ -16972,6 +16971,8 @@ "T3B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", "T3B1_en_test_msg_loaddevice.py::test_load_device_utf": "0623bc723e20f4690524a8dad3b7f2c0cf04e45b2e0202788e75758ef4a2156c", "T3B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", +"T3B1_en_test_msg_show_device_tutorial.py::test_tutorial": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", +"T3B1_en_test_msg_show_device_tutorial.py::test_tutorial_cancel": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", "T3B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b90e8e9393e604b4f83d718aada5e0f93bb460af49652b20ce7733b3a2a00ccc", "T3B1_en_test_msg_wipedevice.py::test_wipe_device": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", "T3B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc", From 17706540b5b359f75f5c3fa916cd67bb662982f9 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 13:01:37 +0200 Subject: [PATCH 607/626] chore(tests/ui_tests): screenshots for T3B1 should also be pixelated --- tests/ui_tests/reporting/testreport.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/ui_tests/reporting/testreport.css b/tests/ui_tests/reporting/testreport.css index eb656a0cfc..3faa72ce18 100644 --- a/tests/ui_tests/reporting/testreport.css +++ b/tests/ui_tests/reporting/testreport.css @@ -64,12 +64,14 @@ tr.bad a:visited { } .model-T1B1 img, -.model-T2B1 img { +.model-T2B1 img, +.model-T3B1 img { image-rendering: pixelated; width: 256px; } -.model-T2B1 canvas { +.model-T2B1 canvas +.model-T3B1 canvas { image-rendering: pixelated; width: 256px; } From abe51b93a860786609ad602012ffdb29b6f04075 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 13:59:45 +0200 Subject: [PATCH 608/626] fix(python): prevent accidental modification of models.TREZORS --- python/.changelog.d/+4afd8b1d.fixed | 1 + python/src/trezorlib/models.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 python/.changelog.d/+4afd8b1d.fixed diff --git a/python/.changelog.d/+4afd8b1d.fixed b/python/.changelog.d/+4afd8b1d.fixed new file mode 100644 index 0000000000..d10815d33a --- /dev/null +++ b/python/.changelog.d/+4afd8b1d.fixed @@ -0,0 +1 @@ +Use `frozenset` for `models.TREZORS` to prevent accidental modification. diff --git a/python/src/trezorlib/models.py b/python/src/trezorlib/models.py index 2fde03eb2d..b1d638a6fd 100644 --- a/python/src/trezorlib/models.py +++ b/python/src/trezorlib/models.py @@ -109,7 +109,7 @@ class TrezorModel: TREZOR_DISC1 = DISC1 TREZOR_DISC2 = DISC2 -TREZORS = {T1B1, T2T1, T2B1, T3T1, T3B1, DISC1, DISC2} +TREZORS = frozenset({T1B1, T2T1, T2B1, T3T1, T3B1, DISC1, DISC2}) def by_name(name: Optional[str]) -> Optional[TrezorModel]: From d21af2a47f0ab55ce8f7f01eff1a239ef49b6eea Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 13:59:59 +0200 Subject: [PATCH 609/626] tests: rework tutorial tests complicated flows that _do not accomplish results_ do not belong into device_tests, so I moved them to click_tests and added stronger assert system --- tests/click_tests/test_tutorial_mercury.py | 172 ++++++++++++++++++ .../{test_tutorial.py => test_tutorial_tr.py} | 14 +- .../test_msg_show_device_tutorial.py | 23 +-- tests/input_flows.py | 27 --- tests/ui_tests/fixtures.json | 25 +-- 5 files changed, 189 insertions(+), 72 deletions(-) create mode 100644 tests/click_tests/test_tutorial_mercury.py rename tests/click_tests/{test_tutorial.py => test_tutorial_tr.py} (88%) diff --git a/tests/click_tests/test_tutorial_mercury.py b/tests/click_tests/test_tutorial_mercury.py new file mode 100644 index 0000000000..f97d910b9d --- /dev/null +++ b/tests/click_tests/test_tutorial_mercury.py @@ -0,0 +1,172 @@ +# This file is part of the Trezor project. +# +# Copyright (C) 2012-2023 SatoshiLabs and contributors +# +# This library is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the License along with this library. +# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>. + +from typing import TYPE_CHECKING + +import pytest + +from trezorlib import device + +from .. import buttons +from .. import translations as TR + +if TYPE_CHECKING: + from ..device_handler import BackgroundDeviceHandler + + +# Trezor Safe 5 only +pytestmark = [ + pytest.mark.models("mercury"), + pytest.mark.setup_client(uninitialized=True), +] + + +def test_tutorial_ignore_menu(device_handler: "BackgroundDeviceHandler"): + debug = device_handler.debuglink() + device_handler.run(device.show_device_tutorial) + + layout = debug.wait_layout() + TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True) + TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_hold") + layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000) + TR.assert_equals(layout.title(), "tutorial__title_well_done") + debug.swipe_up(wait=True) + + device_handler.result() + + +def test_tutorial_menu_open_close(device_handler: "BackgroundDeviceHandler"): + debug = device_handler.debuglink() + device_handler.run(device.show_device_tutorial) + + layout = debug.wait_layout() + TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True) + TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + + layout = debug.click(buttons.CORNER_BUTTON, wait=True) + TR.assert_in(layout.text_content(), "tutorial__did_you_know") + layout = debug.click(buttons.CORNER_BUTTON, wait=True) + TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_hold") + layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000) + TR.assert_equals(layout.title(), "tutorial__title_well_done") + debug.swipe_up(wait=True) + + device_handler.result() + + +def test_tutorial_menu_exit(device_handler: "BackgroundDeviceHandler"): + debug = device_handler.debuglink() + device_handler.run(device.show_device_tutorial) + + layout = debug.wait_layout() + TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True) + TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + + layout = debug.click(buttons.CORNER_BUTTON, wait=True) + TR.assert_in(layout.text_content(), "tutorial__did_you_know") + layout = debug.click(buttons.VERTICAL_MENU[2], wait=True) + TR.assert_in(layout.footer(), "instructions__hold_to_exit_tutorial") + layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000) + TR.assert_equals(layout.title(), "tutorial__title_well_done") + debug.swipe_up(wait=True) + + device_handler.result() + + +def test_tutorial_menu_repeat(device_handler: "BackgroundDeviceHandler"): + debug = device_handler.debuglink() + device_handler.run(device.show_device_tutorial) + + layout = debug.wait_layout() + TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True) + TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + + layout = debug.click(buttons.CORNER_BUTTON, wait=True) + TR.assert_in(layout.text_content(), "tutorial__did_you_know") + layout = debug.click(buttons.VERTICAL_MENU[1], wait=True) + + TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_hold") + layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000) + TR.assert_equals(layout.title(), "tutorial__title_well_done") + debug.swipe_up(wait=True) + + device_handler.result() + + +def test_tutorial_menu_funfact(device_handler: "BackgroundDeviceHandler"): + debug = device_handler.debuglink() + device_handler.run(device.show_device_tutorial) + + layout = debug.wait_layout() + TR.assert_equals(layout.title(), "tutorial__welcome_safe5") + layout = debug.click(buttons.TAP_TO_CONFIRM, wait=True) + TR.assert_equals(layout.title(), "tutorial__title_lets_begin") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_easy_navigation") + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + + layout = debug.click(buttons.CORNER_BUTTON, wait=True) + TR.assert_in(layout.text_content(), "tutorial__did_you_know") + layout = debug.click(buttons.VERTICAL_MENU[0], wait=True) + text_content = [ + s.replace("\n", " ") for s in TR.translate("tutorial__first_wallet") + ] + assert layout.text_content() in text_content + + layout = debug.click(buttons.CORNER_BUTTON, wait=True) + TR.assert_in(layout.text_content(), "tutorial__did_you_know") + layout = debug.click(buttons.CORNER_BUTTON, wait=True) + TR.assert_equals(layout.title(), "tutorial__title_handy_menu") + + layout = debug.swipe_up(wait=True) + TR.assert_equals(layout.title(), "tutorial__title_hold") + layout = debug.click_hold(buttons.TAP_TO_CONFIRM, hold_ms=1000) + TR.assert_equals(layout.title(), "tutorial__title_well_done") + debug.swipe_up(wait=True) + + device_handler.result() diff --git a/tests/click_tests/test_tutorial.py b/tests/click_tests/test_tutorial_tr.py similarity index 88% rename from tests/click_tests/test_tutorial.py rename to tests/click_tests/test_tutorial_tr.py index d084df5250..9816c4aa36 100644 --- a/tests/click_tests/test_tutorial.py +++ b/tests/click_tests/test_tutorial_tr.py @@ -30,9 +30,8 @@ from ..device_handler import BackgroundDeviceHandler -# Safe3 only -# TODO extend to T3T1 -pytestmark = pytest.mark.models("safe3") +# Safe family only +pytestmark = [pytest.mark.models("safe3"), pytest.mark.setup_client(uninitialized=True)] @contextmanager @@ -51,7 +50,7 @@ def prepare_tutorial_and_cancel_after_it( raise -def go_through_tutorial(debug: "DebugLink") -> None: +def go_through_tutorial_tr(debug: "DebugLink") -> None: debug.press_right(wait=True) debug.press_right(wait=True) debug.press_right_htc(hold_ms=1000) @@ -61,17 +60,15 @@ def go_through_tutorial(debug: "DebugLink") -> None: TR.assert_equals(layout.title(), "tutorial__title_tutorial_complete") -@pytest.mark.setup_client(uninitialized=True) def test_tutorial_finish(device_handler: "BackgroundDeviceHandler"): with prepare_tutorial_and_cancel_after_it(device_handler) as debug: # CLICK THROUGH - go_through_tutorial(debug) + go_through_tutorial_tr(debug) # FINISH debug.press_right(wait=True) -@pytest.mark.setup_client(uninitialized=True) def test_tutorial_skip(device_handler: "BackgroundDeviceHandler"): with prepare_tutorial_and_cancel_after_it(device_handler, cancelled=True) as debug: # SKIP @@ -79,11 +76,10 @@ def test_tutorial_skip(device_handler: "BackgroundDeviceHandler"): debug.press_right(wait=True) -@pytest.mark.setup_client(uninitialized=True) def test_tutorial_again_and_skip(device_handler: "BackgroundDeviceHandler"): with prepare_tutorial_and_cancel_after_it(device_handler, cancelled=True) as debug: # CLICK THROUGH - go_through_tutorial(debug) + go_through_tutorial_tr(debug) # AGAIN debug.press_left(wait=True) diff --git a/tests/device_tests/test_msg_show_device_tutorial.py b/tests/device_tests/test_msg_show_device_tutorial.py index a935d3821f..52904c50c5 100644 --- a/tests/device_tests/test_msg_show_device_tutorial.py +++ b/tests/device_tests/test_msg_show_device_tutorial.py @@ -16,31 +16,12 @@ import pytest -from trezorlib import device, exceptions +from trezorlib import device from trezorlib.debuglink import TrezorClientDebugLink as Client -from ..input_flows import InputFlowTutorial - -# TODO not initialized? @pytest.mark.setup_client(uninitialized=True) @pytest.mark.models("safe") def test_tutorial(client: Client): - with client: - IF = InputFlowTutorial(client, cancel=False) - client.set_input_flow(IF.get()) - device.show_device_tutorial(client) - - assert client.features.initialized is False - - -@pytest.mark.setup_client(uninitialized=True) -@pytest.mark.models("safe") -def test_tutorial_cancel(client: Client): - with client: - IF = InputFlowTutorial(client, cancel=True) - client.set_input_flow(IF.get()) - with pytest.raises(exceptions.Cancelled): - device.show_device_tutorial(client) - + device.show_device_tutorial(client) assert client.features.initialized is False diff --git a/tests/input_flows.py b/tests/input_flows.py index 993d3c409e..8670459f74 100644 --- a/tests/input_flows.py +++ b/tests/input_flows.py @@ -2309,33 +2309,6 @@ def input_flow_t3t1(self) -> BRGeneratorType: br = yield -class InputFlowTutorial(InputFlowBase): - def __init__(self, client: Client, cancel: bool = False): - super().__init__(client) - self.cancel = cancel - - def input_flow_t3t1(self) -> BRGeneratorType: - yield - self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) - self.debug.swipe_up(wait=True) - self.debug.swipe_up(wait=True) - if self.cancel: - self.debug.click(buttons.CORNER_BUTTON, wait=True) - self.debug.click(buttons.VERTICAL_MENU[0], wait=True) - self.debug.click(buttons.CORNER_BUTTON, wait=True) - self.debug.click(buttons.VERTICAL_MENU[1], wait=True) - self.debug.swipe_up(wait=True) - self.debug.swipe_up(wait=True) - self.debug.click(buttons.CORNER_BUTTON, wait=True) - self.debug.click(buttons.VERTICAL_MENU[2], wait=True) - self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) - self.debug.swipe_up(wait=True) - else: - self.debug.swipe_up(wait=True) - self.debug.click(buttons.TAP_TO_CONFIRM, wait=True) - self.debug.swipe_up(wait=True) - - class InputFlowFidoConfirm(InputFlowBase): def __init__(self, client: Client, cancel: bool = False): super().__init__(client) diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 9df57337d3..78177c1870 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -12859,9 +12859,9 @@ "T3B1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "9a9d78e8f7730dad9dae7dce628239a1e983a7770afb313b2d0edf78c4255c1c", "T3B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0328573b94357d23c515418983bb27538533fbdaf051971950148542c315ffca", "T3B1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "07953f5961b6af1759eb9afb41e11c8f95ea1a873cf531c4741199973543c3b2", -"T3B1_en_test_tutorial.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", -"T3B1_en_test_tutorial.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", -"T3B1_en_test_tutorial.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", +"T3B1_en_test_tutorial_tr.py::test_tutorial_again_and_skip": "74eccb209aa5c644da6e8de9689972841b566ef51a8073acf5d7770661c8f833", +"T3B1_en_test_tutorial_tr.py::test_tutorial_finish": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", +"T3B1_en_test_tutorial_tr.py::test_tutorial_skip": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", "T3B1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "7e0cd08f8c6b1e8164e13a1d5ae58af9f0b560e7f49aba175058bc5ecd9ed0e0", "T3B1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "5167423df1a611f5608228d783445fcb6ef7e71e51e893ae11d352c35cd72a6e", "T3B1_es_test_autolock.py::test_autolock_interrupts_passphrase": "65aa98bb42b5db52b6e074eae8e15862377029429e72f2c5da960df5bb03fb99", @@ -16971,8 +16971,7 @@ "T3B1_en_test_msg_loaddevice.py::test_load_device_slip39_basic": "5aeba25726809261dd32451cf6038a3a7aaa197e5f098745f1dff222867c6051", "T3B1_en_test_msg_loaddevice.py::test_load_device_utf": "0623bc723e20f4690524a8dad3b7f2c0cf04e45b2e0202788e75758ef4a2156c", "T3B1_en_test_msg_ping.py::test_ping": "4ffbed72e7ed7fbab85f830952200adf7758af81b658b56de4672344120456a6", -"T3B1_en_test_msg_show_device_tutorial.py::test_tutorial": "945c3e89653817fe59016b4698a488c7905a745f49eafb974b6d130936a11289", -"T3B1_en_test_msg_show_device_tutorial.py::test_tutorial_cancel": "d95088af526a3b18cc6eba7d84014f2eaf5757411f7b36e3305c41980640ecc3", +"T3B1_en_test_msg_show_device_tutorial.py::test_tutorial": "677de1bccd5b8fa043fa4f905900fe42e015b61593eae3d2b1e0aa2d8e23c7c6", "T3B1_en_test_msg_wipedevice.py::test_autolock_not_retained": "b90e8e9393e604b4f83d718aada5e0f93bb460af49652b20ce7733b3a2a00ccc", "T3B1_en_test_msg_wipedevice.py::test_wipe_device": "a2e1a6675a43e79affb7dae54822da1f32f94e3691e795b8d32aabc1fd85e09c", "T3B1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "32b33e712b310beeaeb494e72a0cca1dcdb5c6e3d147483ebac9adfe368f0ebc", @@ -19931,6 +19930,11 @@ "T3T1_en_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "d5f933a53b426e452b8007edb64c3e05526e68e8f7246377f708349a1fc09d62", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "2b7bc8347f531c3966134370287e614bab2fa84228d287c96245ef1c47df8dc7", "T3T1_en_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "731f4030689124cd68f4d541e725c1653af3922b7a0f0118d49fe50f090fd893", +"T3T1_en_test_tutorial_mercury.py::test_tutorial_ignore_menu": "7432bbffc51fbb646302c342feb84a8099b901cfc61b969cb13b6921f0a5ea45", +"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_exit": "875b675d25368e293a082d1b7e1574f27ea3d94878d4e7f75d1642b5f9c89ee9", +"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_funfact": "28dcb4ecbe4cc748a659f9015585f9818a3fdecc95d8ece650d86aa1ab512e11", +"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_open_close": "30ab72e2ca93bf5feee97afb56104070a8d402751998652ca0cdb3c52437d9b5", +"T3T1_en_test_tutorial_mercury.py::test_tutorial_menu_repeat": "4f43dd2d30f03b65f56219ecac6d4ad079f6c6ca64be0c8e0be3cf6c96822d66", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "83dab8b004b7ad2dd1a0d6f56e1661ff0a25bdc18dafb2f09d339b9eea0dfdcc", "T3T1_es_test_autolock.py::test_autolock_does_not_interrupt_signing": "9d5cf039ee4bd1489039c8e31f8f90d0b075edeaddb2ec22f55543a8e1d8b8a4", "T3T1_es_test_autolock.py::test_autolock_interrupts_passphrase": "dcd00ffe9769bd57777fd0480b86020b2c1d837f901853516a3fe50fbbc6410d", @@ -21453,8 +21457,6 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "f16d0f3c7e6fbf209dcdf3b9d164b256921193a59497181ce12880dbd68f344f", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c0629afadd2f660e7dde53a1f046e4451eb8ce7ee195cf0bb1c97624cf15fb4", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "f2034ed5b2e2698f84e2e7558e7912246e7b7fdd969381c427aad4b0b47353db", -"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "a14c3b143c24b398bd41379d0dd963dd12084a81e6e81e7697d1468ae99124a9", -"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "19443b6af09e24cd4c8635d7107b172d77abe29b3805ea5ab50d67540604a7fc", "T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "3fe3ebecd6517fd08b52fb7a85fb6e6de5fda24b2fc000865ce83de6dafd5781", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", @@ -22812,8 +22814,6 @@ "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "440ffae3947d0d08480b818a30ba631dcfe454a92f304a3d82735034ae0d6570", "T3T1_de_test_msg_sd_protect.py::test_refresh": "324fffc360acc54078865fec82f2f0b83dd4985cb45d03feb0a050e57190bab5", "T3T1_de_test_msg_sd_protect.py::test_wipe": "479cf95d2085e797b3fc4e048444e25b2ed4f0a3d3b29008b8417232646953f4", -"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "1da46bd298cc19ceb1e344054808984a044264af254e5c6104e99912ac4edb8d", -"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "ca9a5dd65e8c9ab0c8458725a713b6155883ea735aecdb70aa9123f0c5dd324e", "T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "7c8b3639f4897e8a96b29b889ab6e3746e852b3a48cb2b0618629cfa47487f6a", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", @@ -24171,8 +24171,7 @@ "T3T1_en_test_msg_sd_protect.py::test_enable_disable": "18e2495ee4cac06d66dcb351fba8ffdb9352f7752f305ae2c357e90cdcdb5401", "T3T1_en_test_msg_sd_protect.py::test_refresh": "82cb15201bdf6dcc16cc68190b304c74edb4933cca10ac5a2016a460012dd02a", "T3T1_en_test_msg_sd_protect.py::test_wipe": "1fac3944683e636c54bba28ce8a7fa8d075251ee359858db8f386ca53f63ac08", -"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "7432bbffc51fbb646302c342feb84a8099b901cfc61b969cb13b6921f0a5ea45", -"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "e9fc618a8361d7ee4f46b3cb469406923c097c90a07c9b59ccb3cd2e4a997f39", +"T3T1_en_test_msg_show_device_tutorial.py::test_tutorial": "6287282489e9ae768aea5d655c7ed93ffef943ba2a8fedb322ecfbcdbdb7dae0", "T3T1_en_test_msg_wipedevice.py::test_autolock_not_retained": "593429d09da223f7d5a98c1f5a04a523c2ca58fbde4348179da8f2cfcae247ab", "T3T1_en_test_msg_wipedevice.py::test_wipe_device": "2f83c328124f022f5a8b8e27a56cd9b8e520d23db8a91ec0bf72f463ed198d31", "T3T1_en_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "b52bdc7d83d4ec583340a0c9d92c84bfe8dc9d7c7b677bdd8b2796c59b03706c", @@ -25530,8 +25529,6 @@ "T3T1_es_test_msg_sd_protect.py::test_enable_disable": "cb61248c0d0b46b8a4433e2bf12ccfc0b32ad5b9842d5d80eb44d76f0f1f17e4", "T3T1_es_test_msg_sd_protect.py::test_refresh": "a7235bf977a5f7aab3b0133f0781feab28319170ad80785a29f343aecf72d996", "T3T1_es_test_msg_sd_protect.py::test_wipe": "7a7cf781e34a9131c2f4dfe9907cb733ddb93c805c92f0fb14b79634974bdd79", -"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "5e4328cea5b060c25fe06ef1228313c4f4f3b0a9afb7021aa8b90b5f1e54e134", -"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "75650acb32f25ae46e9d7b78fa9d2c30c85b2c3998cfe3dfda3357c20e4302d0", "T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "f7ba337dc25fe91c0cf19877534ca2fca75d2ba02d0f5f3d639e1ee5924a0bfa", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "7664f198126a0c78d7ea2ad1e6e1e2a2d07e9322151f439ab82a41c9695a6c81", @@ -26889,8 +26886,6 @@ "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "248d3bd2c671109278f0c75e7986a20f58bc04f72ae39b855f000b11ece6d781", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "af9bd20cea2fd6e75d55a1b3ac918f7418dac77c4bf6a768611579becc71cd17", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "41ea5e6c2b26c9937792cb2cdfbad74286d740fd523bb7d07305566bcd167935", -"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "204db8befa27a853788bcd7ae567b83b7d277506057a1bad5abb925849f7df29", -"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "eec46a6bd76f0b408d9d59291f01316d32041cd6c1c37dc89914b641e7cbf3c7", "T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "06456c05df3aee6226fbbe776d4db63eabdd553241185869396024ec4fae7c52", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2807886270191466d7c47e855760dbb4d96a09009e42031fdf60c9b6fcb16df1", From c31819b53fbdc0688688c246b3846a80a3a647bd Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 2 Sep 2024 14:58:00 +0200 Subject: [PATCH 610/626] chore(tests): upgrade T2B1 to T3B1 for UI master-comparison --- tests/ui_tests/reporting/common.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/ui_tests/reporting/common.py b/tests/ui_tests/reporting/common.py index 809c49160c..a7f652abae 100644 --- a/tests/ui_tests/reporting/common.py +++ b/tests/ui_tests/reporting/common.py @@ -31,7 +31,8 @@ LEGACY_MODEL_NAMES = { "T1": "T1B1", "TT": "T2T1", - "TR": "T2B1", + "TR": "T3B1", + "T2B1": "T3B1", } From 475673e894bce8eb56d9633393553d78a09e7510 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 10 Sep 2024 15:36:26 +0200 Subject: [PATCH 611/626] feat(tests): use trezorlib's builtin model list to fetch the pipelines this includes D001 / D002, that probably doesn't matter --- tests/github.py | 4 +- tests/ui_tests/fixtures.json | 2912 +++++++++++++++++++++++++++++++++- 2 files changed, 2894 insertions(+), 22 deletions(-) diff --git a/tests/github.py b/tests/github.py index e8ea517a22..d24a31c840 100644 --- a/tests/github.py +++ b/tests/github.py @@ -11,6 +11,8 @@ import requests +from trezorlib import models + AnyDict = dict[Any, Any] HERE = Path(__file__).parent @@ -18,7 +20,7 @@ LIST_RUNS_TEMPLATE = "https://api.github.com/repos/trezor/trezor-firmware/actions/workflows/{workflow}/runs?branch={branch}" FIXTURES_TEMPLATE = "https://data.trezor.io/dev/firmware/ui_report/{run}/{model}-{lang}-{job}/fixtures.results.json" -MODELS = ["T2T1", "T2B1", "T3T1"] +MODELS = [model.internal_name for model in models.TREZORS] LANGUAGES = ["en", "cs", "de", "es", "fr", "it", "pt", "tr"] JOBS = ["core_device_test", "core_click_test", "core_persistence_test"] diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index 78177c1870..dd1efbda1f 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -12765,9 +12765,9 @@ "T3B1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "2157c3b2777af219ee4cf1358a15b6aa0a9a1bf629d4bff0586d2848344a2baa", "T3B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "c480270210f7216a338c7934f1244b22d4e6e1ae305aece94141903fe428cac6", "T3B1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "ff66d1724b4d0bb82237738eb9067659d37dcbed67014964c7343c02dd2656f4", -"T3B1_cs_test_tutorial.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", -"T3B1_cs_test_tutorial.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", -"T3B1_cs_test_tutorial.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", +"T3B1_cs_test_tutorial_tr.py::test_tutorial_again_and_skip": "5438c0856b4360ff694b92ed72317324866178750bde3958ea077d4021cbb358", +"T3B1_cs_test_tutorial_tr.py::test_tutorial_finish": "3237dd25cef552f9986cd38047e88f8c8bbe0e43994f3ab49557549ba1255e2e", +"T3B1_cs_test_tutorial_tr.py::test_tutorial_skip": "e052c7e71fef6a2f4ba365cc7ae0a9697599bfa9b59aca04f3b67fa334856f9a", "T3B1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "483339fcd69cd704c80b53cd42f88cca6478e43f385d5a4cb5250be0edc0b8fd", "T3B1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "3a0639ab2042edfcb8103aff433239126503131baa8d72c944da7cef1b652b5d", "T3B1_de_test_autolock.py::test_autolock_interrupts_passphrase": "f7cc39dea78abe89a2885757c9b4d4ebc1205e966c5529ea0a64ec3f0f60c7f6", @@ -12811,9 +12811,9 @@ "T3B1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f48eebda84373ac7ae9a9f047cd12aeb8daae65c239f6434b72df378f44c501b", "T3B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "88e8149efb5be48322c5ad7bce7eb4c82c254956138e4b21a4871274382b685a", "T3B1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "73b2168de18913e4870276c48ad498439209038b1a8b4735cc5e3a8f8f557e9b", -"T3B1_de_test_tutorial.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", -"T3B1_de_test_tutorial.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", -"T3B1_de_test_tutorial.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", +"T3B1_de_test_tutorial_tr.py::test_tutorial_again_and_skip": "20748e3399998bb0b6566a5e7b66d7e7118dc9ea2894cb56f698bd4a46dca088", +"T3B1_de_test_tutorial_tr.py::test_tutorial_finish": "3585950c2b55023936d351114b0ae05ca2729fea7f5b1ae239d85e4aba586915", +"T3B1_de_test_tutorial_tr.py::test_tutorial_skip": "b3a83ecf8437bdde5bbfcf4daf8e8f53a7a2681db65879e138c6b25a3f1012a2", "T3B1_en-test_repeated_backup.py::test_repeated_backup_cancel": "902b8f47380e0591bf3d5e410a9db86fe1a3b8221c968b89c97960fdd91e5100", "T3B1_en-test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "660c0dd0c290f8320d0194c6df2c44c9741a7f05414c0afddad0b23b95c0906d", "T3B1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "4663e6da2cd2cc2d452ac934daaf772ba2474b266e45d7d883438cb024320c9f", @@ -12905,9 +12905,9 @@ "T3B1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8d4d9fab34aae28efbb9064c7f6e238d9dda67281f4d605e559142bda39b21d6", "T3B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4240927d1677d77d86ce0eb9ca8234d69daddcb8e80771cebb4038889929595a", "T3B1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "f17542ebeaf778c6f9033fcf2dc41f54b20c76b33e786b1d46e5cd17fe5141fe", -"T3B1_es_test_tutorial.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", -"T3B1_es_test_tutorial.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", -"T3B1_es_test_tutorial.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", +"T3B1_es_test_tutorial_tr.py::test_tutorial_again_and_skip": "8f7a50e469b74e1d3d23909135e00c7bfcf8662c6cf6f15082bdab67d38d9301", +"T3B1_es_test_tutorial_tr.py::test_tutorial_finish": "cbcec098aada1b99dacd34d3c61329bd7ffb1346526af993f84bfe428c7c9cc8", +"T3B1_es_test_tutorial_tr.py::test_tutorial_skip": "37b548be94807b66c8d6eca6eca9cc3e64c6dfff1999156185ee6edc7cb68152", "T3B1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "dc8334ed53feb63bcecacf6c24c1bd49260dda7ad96e378d0152ad17941291b8", "T3B1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "11dfbf27699cef2965dc33c1b2658a2eff7490297e627284850da90b012a512e", "T3B1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "94dca4ffa2d6a0a8facbfad3c5806df597b3987a9fb8d4946c47a530b641445e", @@ -12951,9 +12951,101 @@ "T3B1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f96d564a0550ec845f78de7d90b48728b142daa2071d6dc9fdb06edef0c8b219", "T3B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "eb88caad1d08915a450dfd81ac7b798aa140547bd5ced825541abb121ab851a4", "T3B1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "a7b5c10b578002d764a7a97bbe1559d2c1284f0e043800aed7836fdba8c5dbf4", -"T3B1_fr_test_tutorial.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", -"T3B1_fr_test_tutorial.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", -"T3B1_fr_test_tutorial.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1" +"T3B1_fr_test_tutorial_tr.py::test_tutorial_again_and_skip": "eea6f87e03cc5a50da8ffc820065842b6ba5920e5f1c872d8b8482b0f562a22f", +"T3B1_fr_test_tutorial_tr.py::test_tutorial_finish": "ec282ea37d2687ebc4805417dfe4ca7bd87ae192bae6f17d0a3e84578be08f19", +"T3B1_fr_test_tutorial_tr.py::test_tutorial_skip": "2cf9e549dd4fbf359069cc328869b9ea0a2262e634e0c3b3a8cc397012aac9e1", +"T3B1_it_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "1258bbf50d05fcdcf2a3ffe52be4f419a158fb16de722cd56b8ab010b4d516c9", +"T3B1_it_test_autolock.py::test_autolock_does_not_interrupt_signing": "81717a8487255057ae82ae1273945b237067a3e6bd21d1da625156227cd61566", +"T3B1_it_test_autolock.py::test_autolock_interrupts_passphrase": "8ee9249ce808d93fbceb1ff3d08ec5d6fbc070b1ad6dbda27e1bf6552549ae58", +"T3B1_it_test_autolock.py::test_autolock_interrupts_signing": "77d6ed1561e26678ff7d20eda28005e287f545c99f943d39ebbef6647b08cf9a", +"T3B1_it_test_autolock.py::test_autolock_passphrase_keyboard": "8761d38bd493b7c2ca5af5498751c19c3f6b89572aa221fe07cf4649886235ed", +"T3B1_it_test_autolock.py::test_dryrun_enter_word_slowly": "dbfcc66909bebeefa2f1237237ae7a807ce92dc20aa28c9dba78882c3736412b", +"T3B1_it_test_autolock.py::test_dryrun_locks_at_number_of_words": "6de5485974ef9a0a1908fbd4aae6368f7dc0e5aafd09550167e88d3b73df527b", +"T3B1_it_test_autolock.py::test_dryrun_locks_at_word_entry": "d3b24d776496669313282999e0cb0b8c8f2bcf146aa71b5ea36f9c60fdf5d6e0", +"T3B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "564d800396942ae9d2824118673e7a0cb66575847d0cf7534634eb355b5d2cb7", +"T3B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "d648d4b3f03ce923143e6b730a15117f62425a9497783811aadf2c7f7abeb1d3", +"T3B1_it_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "10122b7427165836d0a22107c77e4a8219372553253c8b06dfe0b85308be2fbd", +"T3B1_it_test_lock.py::test_hold_to_lock": "5ec2d63064685a037f2e1c8440c256d9d45673723b06e69a929e4bb5774905e5", +"T3B1_it_test_passphrase_tr.py::test_cancel": "4fee267d1cd79670786aa51f921a4dcab10c8565fbe7d430eb6bdcdfc3ef3f46", +"T3B1_it_test_passphrase_tr.py::test_passphrase_delete": "69f00bcb21d6225ed80c7777ae2119c36d9e220ccf8cf3fab1fafea2a021a44b", +"T3B1_it_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "a3e56441c08aaa274c52d2f09503747dd16ede22566a4430096707dbc7d977da", +"T3B1_it_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "93e5b3ab30a01a73116b564a90c9716aca25a5d72a0e74be522f5e2e6513ba5c", +"T3B1_it_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "5df074fd6421879f9e0547032caa269abdaef2fc76e2438c0626643791d703dc", +"T3B1_it_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "6c708f37642bec0361372ba644af624567bf24d480d0d664c63b44392b6450e3", +"T3B1_it_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "58ed2def937a33c8b9e6d54c80522d03bb098a1d9eee6224d448abff3b162f43", +"T3B1_it_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "ae65c8fd4d7adc5eea3592fc5b84d24377d589b22891f6bbd95f35fabdf3ccee", +"T3B1_it_test_passphrase_tr.py::test_passphrase_loop_all_characters": "952e6677bc508abb1fa839ed9f4fc583c19a254ef75f1f9838369e120494e7a8", +"T3B1_it_test_pin.py::test_pin_change": "fa6890fb169b20f4143e72a0f38a33af581e05f7a02748ae2b03aba349f3dd22", +"T3B1_it_test_pin.py::test_pin_delete_hold": "73bbfecc3a4153811107b70841c966ce51c2fffa68269f349de4cd5e5266c39f", +"T3B1_it_test_pin.py::test_pin_empty_cannot_send": "270954e306ae9f97271acf2942e788e2e54f7f108a57228224ce4afecc890346", +"T3B1_it_test_pin.py::test_pin_incorrect": "8c574d6ec3afd6ae7fb858bad86aae6f3d3c0ee18c6b0a52042433c551d200b9", +"T3B1_it_test_pin.py::test_pin_long": "45fd25b94d8d0e5d7191f59e1760a8a520a91915728fc04ad22bda0e0ed6de50", +"T3B1_it_test_pin.py::test_pin_long_delete": "9e92871e7a8b1b204f1823ba3d8d09df7a6ed041e0b24ed0459ce0074f294f15", +"T3B1_it_test_pin.py::test_pin_longer_than_max": "d7b309e3333a71489c1a015632e335829b6b05be82bba5755e8b9bc8ec85783e", +"T3B1_it_test_pin.py::test_pin_same_as_wipe_code": "5eb8328727b98d5ba84c0f995a40b3321069625185e5ed1754ce0ed852b96023", +"T3B1_it_test_pin.py::test_pin_setup": "5de37f8e72b5150922fc442ecb2c370a9584b05ea49a302e8033a0c77a051eec", +"T3B1_it_test_pin.py::test_pin_setup_mismatch": "32f0b79df89f2e18e81968d2c515f753e8ee32b3f802b97838fc3ecd82136659", +"T3B1_it_test_pin.py::test_pin_short": "d47f6f36db62163b5f45d29e428c5c2de3964fda4aff13040d5f8a929dcf6c9d", +"T3B1_it_test_pin.py::test_wipe_code_same_as_pin": "0a6063e1107a8d9a0cc65f29e644c2a8d00a471aaa44113d65184646c4192729", +"T3B1_it_test_pin.py::test_wipe_code_setup": "cc9ddd35942a02e98e5764ad98afcac5d4befa232faa2ccbdb858d1008ab3588", +"T3B1_it_test_recovery.py::test_recovery_bip39": "1ac40a664a8ba0e47c6ff006cdfd63c8c8aa79542810f77a47365f4ba35cfdd9", +"T3B1_it_test_recovery.py::test_recovery_bip39_previous_word": "6c6855a6af3eff07a7bb24141565adefabccdaa4e27801a75e6365023d3ece74", +"T3B1_it_test_recovery.py::test_recovery_slip39_basic": "278712410995f99fff315a46f008cbea514538301479097055f16d826592b77d", +"T3B1_it_test_repeated_backup.py::test_repeated_backup": "b526088dab629f2e56699490e8a02302c2426b9da6d81a2658bdc6511bd64aae", +"T3B1_it_test_reset_bip39.py::test_reset_bip39": "c5ea650d15d4ad804f10e9faae627988e8f950d2443ae94bae8b867df9d06b67", +"T3B1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "354a02883fb7d351bd5acd36b74dd9f89b500d3749ae19fc2aedc0ddc5c2b0dc", +"T3B1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "f63f5d9e85ad3b46a4f30a1e3458a0d83dd024fe4107cf3017c7292b53b70754", +"T3B1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "8546496120d8e57d12d23dbcc183ade8243a0449be172024b2fe341cdcb9a574", +"T3B1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "62fbaac68776f2877c4e3c14104f989ad39ef3563759b23ed318c96de2544fb1", +"T3B1_it_test_tutorial_tr.py::test_tutorial_again_and_skip": "67014b0978c8075882de0d059fab97c67ade01399d94c1eb85a9356035e5243b", +"T3B1_it_test_tutorial_tr.py::test_tutorial_finish": "4ea6ee6cb8186c35903d4c6865eab979d6dd4aad06389ee2c005b44fb368c16b", +"T3B1_it_test_tutorial_tr.py::test_tutorial_skip": "667b028896d3530a109118f5ac329e80f1a7480ea8068804f09f746077464c60", +"T3B1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "173fba1548afa2be06cab71b75721d888277144f47cccffcf9ae5178d137920a", +"T3B1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "d7d565a030c97caa2dfa281d25afa90bc5b663fa6e57c279e8662bbe9782d7d4", +"T3B1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "95267e5fc4bcb60e97f3038fe621f390d6237e8e83586f26ce9d922359c664c3", +"T3B1_pt_test_autolock.py::test_autolock_interrupts_signing": "5809e31e16b3f1b789abd2347757d0e0cee30cbf1587e4902d15e58303b423be", +"T3B1_pt_test_autolock.py::test_autolock_passphrase_keyboard": "7062b187bb7cc9bc4c5fc8cb93a829249a5c184247123859a3149e2eb80f957c", +"T3B1_pt_test_autolock.py::test_dryrun_enter_word_slowly": "badf9736a4fe00398e927186333cc310e3f50e539ecbb2ffb7d333076769ff12", +"T3B1_pt_test_autolock.py::test_dryrun_locks_at_number_of_words": "6faaada7541dc44561566b0b9be89b565495f7a73afa1fa3c328da957234f5f1", +"T3B1_pt_test_autolock.py::test_dryrun_locks_at_word_entry": "64b81ae5b3b789452376301d829c1e0c18a2864eff91311c344df7cd0757f639", +"T3B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[1of1]": "1a76268541a5ab52311ad043515d80e6992f2b8c701f692a3c0dc67792784db0", +"T3B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[2of3]": "929ec884cce60bb71c1b1a8ec00f6e0b8544447dd4f59f71b3fd66aa6384d647", +"T3B1_pt_test_backup_slip39_custom.py::test_backup_slip39_custom[5of5]": "20c69206a561c9bd6a2bc5e6bd1670e5f13b577d0a2a805f7a44f1a8928cee7d", +"T3B1_pt_test_lock.py::test_hold_to_lock": "bf782aaa653f86b7dfb0ede05201059f0c5b94534dc28881d8deb01493f442d2", +"T3B1_pt_test_passphrase_tr.py::test_cancel": "91ae9bb439541bd5ed68cc56c66d96e9c6adb0a9d32c4d633ad7a93de46a2a39", +"T3B1_pt_test_passphrase_tr.py::test_passphrase_delete": "35656cd7f65c7d25f07525ce728060ada4e6059e323ba8971980dde1bf4b9904", +"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[Y@14lw%p)JN@f54MYvys@zj'g-mnkoxeaMzLgfCxUdDSZW-381132c0": "c3b1959dbfc19f449bd468961d8545ed0b0b78a6d2fbc97e2d4836fdd6c60940", +"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-166c898a": "1e7cb0a9e383fa03a10ca5f8008c77c0130a2cbc95a669ba228d51643e1bd593", +"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-334262e9": "285ed5ed1076c6208752ea156de50a17503635febb17777043b8d150619c7038", +"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[abc 123-mvqzZUb9NaUc62Buk9WCP4L7hunsXFyamT]": "53afefb9adb376bb3802a94dd91d65ec9679281b854cf7e4ed4383201ef95f65", +"T3B1_pt_test_passphrase_tr.py::test_passphrase_input[abc123ABC_<>-mtHHfh6uHtJiACwp7kzJZ97yueT6sEdQiG]": "7347726963e15336a209486b1f333743b6235141c58d72ce9fcdc99d012d16d3", +"T3B1_pt_test_passphrase_tr.py::test_passphrase_input_over_50_chars": "7151b220f29025a359d9a7e05e79ddddf54b2c0061336a51e5cfd4b55fbcc047", +"T3B1_pt_test_passphrase_tr.py::test_passphrase_loop_all_characters": "c3672b63a8c09a8330164f5d90e37093f2cd58c19753568411832ef3ccd72f05", +"T3B1_pt_test_pin.py::test_pin_change": "7071fc2bfa3f5558854c2c03fc76e407e24432e0ef9e34c128841ff1b36ccb12", +"T3B1_pt_test_pin.py::test_pin_delete_hold": "e80cc3609110f6c54fe92592cd3646f62a115d9c706e39c3dffb6f87fbf61588", +"T3B1_pt_test_pin.py::test_pin_empty_cannot_send": "cdd720f84e25d3571eb860ea06cdedeb9aad2f7420452fd45e6621047a8b7f74", +"T3B1_pt_test_pin.py::test_pin_incorrect": "8522e8fe0f4c298a8e0e7fac04ef23c92d1989200577f7d0d64ae324e7882b0e", +"T3B1_pt_test_pin.py::test_pin_long": "ca9b85a5af8399241543e2cbefe8f58680dd857748db3316a61c250aece37265", +"T3B1_pt_test_pin.py::test_pin_long_delete": "d215b87697475431e1a5a33c10fc962a627ad9e26deb0c33b4300387b3986d0c", +"T3B1_pt_test_pin.py::test_pin_longer_than_max": "cc2185e768c08136ee3a49a6c33e2f25beb3752942d3b79b5c81587434c19e0a", +"T3B1_pt_test_pin.py::test_pin_same_as_wipe_code": "ec65ec7e34b95bf6c2cd592049b2aa9f2d8eb381c07d4df6e86e018e83d49a5b", +"T3B1_pt_test_pin.py::test_pin_setup": "7f515b883a4b0a12257bd20294c376de9b21ca87d2fbec6721c24734e24f885f", +"T3B1_pt_test_pin.py::test_pin_setup_mismatch": "ae15a62c6612ed4d81706057ff1c333360b98d40859f611fa73cf4a669829e5e", +"T3B1_pt_test_pin.py::test_pin_short": "f0ae4aa601c20e847319607aaec16cea9b65c4262727bcf524f362d0e93a92e1", +"T3B1_pt_test_pin.py::test_wipe_code_same_as_pin": "8ded8b2bea9af6f02061c5e5d408d01255763c636cfb3b02c8fb351bfc0dd6cb", +"T3B1_pt_test_pin.py::test_wipe_code_setup": "191fd1d4df6cd7a15fac984a2f94ed93f0e943edef72ee5a01f9cbd3af5f9c99", +"T3B1_pt_test_recovery.py::test_recovery_bip39": "1953e84e9949b89e9e04e607384c93c8901f4603204a506c8634d4cc630eafef", +"T3B1_pt_test_recovery.py::test_recovery_bip39_previous_word": "04b78b5d699e1e0b1cae89768a53bfd423c58195ec816ef327ed91c623095cb9", +"T3B1_pt_test_recovery.py::test_recovery_slip39_basic": "d89954a1e77f372b9bd649c37b1161ceeb5683fb49f51ec325d53b5e81b4a097", +"T3B1_pt_test_repeated_backup.py::test_repeated_backup": "263378bf81ab7efa10c174b5891b3b64fa5e2077041ff93e67a65f9280b3a24d", +"T3B1_pt_test_reset_bip39.py::test_reset_bip39": "d42be18eed7dba8728fd74b16ac41f935d6cefeaeef8b16e572b58cd8c9d2b45", +"T3B1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[16of16]": "d66e97ee4ae232603421d64049184a869a69efcd154a47d5b909217955bc6554", +"T3B1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "4eb70ad57b648594ae9361950c32b30b1d3396cb3c8843d8adc3fa8a3363efd4", +"T3B1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "4d73a5ef284d9dccf3099ce86be219536dd1331fa53870ecf70ca1916e3c3140", +"T3B1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c405ff248c3000259977ce67a06dd9f33f178eb66575ec8bd1915c33b093f9e1", +"T3B1_pt_test_tutorial_tr.py::test_tutorial_again_and_skip": "dcdc6ee2dcc2c6e2029468903fb756d75c6aaa40753a8737061affa1ac8d6368", +"T3B1_pt_test_tutorial_tr.py::test_tutorial_finish": "a82c6370e0d7c8319acfe74a2e37aaf1f133f964dcb082740e31fcc6f4696363", +"T3B1_pt_test_tutorial_tr.py::test_tutorial_skip": "5ee678f5cbc020ca47cb90ea913257c2b11bf996c3fc55eac5416703d93f5d8c" }, "device_tests": { "T3B1_cs_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "19c5eb360c23b1a362db3813421f0772b28ef90f65fe0ddc9ae8c7831bd2cb0a", @@ -13330,7 +13422,6 @@ "T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "96a00c0c1cc69e5e87c5dc581e8a551334def513ae8288bb34bb8fc7bd3e8082", "T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "284469aa6f2a9a3e97a0deb58e9f6a2c5d13f6030d2599f54f2bd70eca860e6a", "T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "ef486f62fc674b1a867191260f7da26a0b00c99f8ec9e4d2924ae48202b7f277", -"T3B1_cs_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9693b9b07c3ff5108d3d30096ff1ce9988f22465fb85eac2ab68f6ef62ddc995", "T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", "T3B1_cs_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "f21a890f6579fba318578c8a47d0e96fda83af12fc46e5bb2200b1f178ab1c0a", @@ -14191,6 +14282,9 @@ "T3B1_cs_test_language.py::test_full_language_change[en]": "1a14371860d2d9e3cda9c4b8a3ca3a1b9f45e2beb0eb1c26bfcc20c22c7cd25b", "T3B1_cs_test_language.py::test_full_language_change[es]": "1db03f150dd5b88c7912d6afe88d7869ca6ab407e58c59535de56440aa9c05c6", "T3B1_cs_test_language.py::test_full_language_change[fr]": "0263ccab0d6aefd19896c2d96a7f6f9a8871257392fcacc0c8fee6212ec340bf", +"T3B1_cs_test_language.py::test_full_language_change[it]": "2e10f851ff06de5a8f2a137b37b395f37704ec3355a1ac2cd475f3a5a7221b14", +"T3B1_cs_test_language.py::test_full_language_change[pt]": "e2d2543dea292d46e68b212434d5cc3d4d0f72a82354256c005c5ed98c2b7cab", +"T3B1_cs_test_language.py::test_full_language_change[tr]": "e94e9220c5bbc93e4478f452355468f126b626e6ca3be686fbab0ae550a18495", "T3B1_cs_test_language.py::test_header_trailing_data": "abbf6b257e8db657a83cc80f0fea86a46fadec4aafb7fbc3bf8a50123cd73635", "T3B1_cs_test_language.py::test_language_is_removed_after_wipe": "940a6c3ce9d5d7a2193c0218ec44597e5e098d4a15693ade14a7fffb080f5aec", "T3B1_cs_test_language.py::test_reject_update": "a5bc2e6015b97e3cfe40b400b8139f2e9890d391bca3f934497b05b3308618ed", @@ -14241,6 +14335,7 @@ "T3B1_cs_test_msg_loaddevice.py::test_load_device_slip39_basic": "7797f75c690c43ee171799dcfbfaa266fe5c413bd679df1d6c68e2d68684a7bf", "T3B1_cs_test_msg_loaddevice.py::test_load_device_utf": "042e9f78a793631eb68047230ea8cf82a047623585291cb2107c46e754ec9bc3", "T3B1_cs_test_msg_ping.py::test_ping": "b2d105102f6fb8e5fa8c3604b14801acba3d1c7ada22864953555f7ed2892f0c", +"T3B1_cs_test_msg_show_device_tutorial.py::test_tutorial": "d74a0daace9acf51ef3cfc91486218dd374065cf5e192143dffa872f15308225", "T3B1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "e103300a4329bada7713e61b73afa224f89e1cc936a76e27cf973928e2e742d6", "T3B1_cs_test_msg_wipedevice.py::test_wipe_device": "f85b71f80fd1ba51eb9071035afe352e4ee38c8917f0a46ca0fc2f617befead4", "T3B1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "a19dc5c3e7ed408f724d2536bfe82f87096cba909583de605767d5808bff5d81", @@ -14694,7 +14789,6 @@ "T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "987ac842d791532d69a40c05b7c8bf40b0ecdb92e7aec699ceea3bd7ac70624e", "T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "1cb22a4125d3a5c228c15ce1ccf5b4bfaf592b9c853e0ee266f9faa9a0a261ce", "T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "86ba6041ffd4b447c7642446e4a77039eebd9b8868e5a88eeab43f56d69f2767", -"T3B1_de_bitcoin-test_signtx_payreq.py::test_payment_request_details": "9bdb526d0b64a91e862ec4ba7ced36adf20382a193c8f0c5788a70564aeac23a", "T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", "T3B1_de_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "c4de30c532ef03af8f87e59b7da58ea72f3172ba799202060ef77c3d9ec6990c", @@ -15555,6 +15649,9 @@ "T3B1_de_test_language.py::test_full_language_change[en]": "a35bc4501de8bae861d757421e17440a21f7d4f3ce1a56bfadabe9e5b467e4a2", "T3B1_de_test_language.py::test_full_language_change[es]": "2fd72d78dd1d1176ac6aecdfd3ea790aa2aafac0d705b406d44c0e9c9545002c", "T3B1_de_test_language.py::test_full_language_change[fr]": "fda57886e4c371f3219a29dd54b01de43e96bbb94a6fcc7d6c9e1bd1e7e30ace", +"T3B1_de_test_language.py::test_full_language_change[it]": "56f7b7084574bd9788d73ff3cba6089eee7234aa93c3140d25239f1f324ffad8", +"T3B1_de_test_language.py::test_full_language_change[pt]": "f379680255757223d437f23ffffed7ecf13296aef4eacb5fc22b03544352ccb1", +"T3B1_de_test_language.py::test_full_language_change[tr]": "0ec841906d2d597428e38d71d2dc4d9cd91fb504bb1f705e9673683cf2d24043", "T3B1_de_test_language.py::test_header_trailing_data": "8d546f37251d84f6493b199cb84219d818def9318c908e3fb7feaba788862028", "T3B1_de_test_language.py::test_language_is_removed_after_wipe": "146552979024b0aebe9b11475131d71c0e6ac909d2b8e322af848401e0cfa316", "T3B1_de_test_language.py::test_reject_update": "c030eaa1b84ee548a68f0e20ad74201cbbeea1f09095dfafe0465020f3215a7a", @@ -15605,6 +15702,7 @@ "T3B1_de_test_msg_loaddevice.py::test_load_device_slip39_basic": "54c626b5b7592b0777094c7dd8dea0f1ab9bb595eb0b338db8ee366b465f72b4", "T3B1_de_test_msg_loaddevice.py::test_load_device_utf": "a3fd3415145fdce244950f162ce09d89aea8b64754ff9b7881f794f2772e4239", "T3B1_de_test_msg_ping.py::test_ping": "dfd9d8c61bfe97edfe5596d3cef759f6fe768e8e11ed68f71117d908b23e68df", +"T3B1_de_test_msg_show_device_tutorial.py::test_tutorial": "fe4a242b48a1d54caafde1ba3ad93179042a7c44e1f00b139074d4a57bec835b", "T3B1_de_test_msg_wipedevice.py::test_autolock_not_retained": "b892f54b08ed97cbe0e572d4a9adfb979a61ada492278987a93c3917c5282609", "T3B1_de_test_msg_wipedevice.py::test_wipe_device": "83b61032ca87fecd27e115b4938301f42bd347eaac440be5490beecd6242ba8c", "T3B1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "417156ec38e5b572d8fa2ab61a033215d11f24a04ec4d9a21bc8be9176fb8f8e", @@ -17425,7 +17523,6 @@ "T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "67c45fd34e8151d2e85962a703efa6f88b378e9071b2fac767b1f64c425869e3", "T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "256896d58b0dc8efa4f0301d4294db5a57a4a4095091ce644ee300b8b3a03cc9", "T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "75632bd70891842cc69b86d459a55e24c950dca67370bd1f0cbed10ac7bfee68", -"T3B1_es_bitcoin-test_signtx_payreq.py::test_payment_request_details": "5e88affdb4b3898af738bfabb224b94e674c0d5b8bd6ea4f73a601c972f5858c", "T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", "T3B1_es_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "1c3570034570570945271dedee20ffc5415f8a881be2d2afeda14d8eed8fecef", @@ -18286,6 +18383,9 @@ "T3B1_es_test_language.py::test_full_language_change[en]": "5684c4f7e6ca01d85d83549d892ecc4fc0277b46dd7294d0d7ef436a2f4bbf6d", "T3B1_es_test_language.py::test_full_language_change[es]": "51aee9f7f7e76839471274c909bcdd2c117e3fe6d9ca634ef71f1209dcb2271a", "T3B1_es_test_language.py::test_full_language_change[fr]": "0f7df785e611deec165dcce914efbabb497cba640795c8b90f396c223af7f3f0", +"T3B1_es_test_language.py::test_full_language_change[it]": "61f9a29f08ed708a8dd712eb8990c6a09e30bed0b2dd55f364bee8ed15f96a1c", +"T3B1_es_test_language.py::test_full_language_change[pt]": "f670d7810fed8c300c505299514aff7d45181d4ec2665d50801edbc4623b824e", +"T3B1_es_test_language.py::test_full_language_change[tr]": "cfbca47badabff06cadc4c4352d48a71d669e2b6182d3f2825067dedf230b4ae", "T3B1_es_test_language.py::test_header_trailing_data": "112c52b046074513671e25a0c27fb8e1e52c94d403be29e68890afbaeb7b5fda", "T3B1_es_test_language.py::test_language_is_removed_after_wipe": "02719a4556b8fd9f6f59e0f9bb0fad899c5faa42700e76c464d51282f6e441ae", "T3B1_es_test_language.py::test_reject_update": "72b5cc4bb1d3a1024ef5348356565e711392fc379afee08a9d4275b7d627c213", @@ -18336,6 +18436,7 @@ "T3B1_es_test_msg_loaddevice.py::test_load_device_slip39_basic": "ea1998b9ead1a09ab7f07329075bdb714fa937866ac88f0796e92cbd71e89891", "T3B1_es_test_msg_loaddevice.py::test_load_device_utf": "511d36d501993568f70ecadb51afe81b6745135833c9b8e3c48ed3f6adeea3ea", "T3B1_es_test_msg_ping.py::test_ping": "816ff08f20890dff7e1475ef0c34f23705c8020a8432b7751e46001015ef2bf2", +"T3B1_es_test_msg_show_device_tutorial.py::test_tutorial": "87add6822bcf7a00283bb398b8fb51b1e2c9282b4443cd1489767752a65fe84a", "T3B1_es_test_msg_wipedevice.py::test_autolock_not_retained": "a956a09d0bc2b0133b6f1264bee739cfad1801793c7675e3d187fdb655dc842b", "T3B1_es_test_msg_wipedevice.py::test_wipe_device": "946157d3de0e8da4e891538057f266fb3da9caf5fee193b268f4c1c629663e3f", "T3B1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "1e9227b2113b70db1b65daeb5f9cb869fad9625698ed59d54bc8f0f806368dd0", @@ -18789,7 +18890,6 @@ "T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "6c3855c6695490323b5790e2b6716f84b9aca3a8564adee3e26c6ae0fda37ecb", "T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "e731b582a4ef69f838a25efa56997f38114e68debda464f2d9ad20546d3e5eb0", "T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "76715c0296e7a479d616ca3a0da0f84aa7b85635218ad36e5cca284325b93376", -"T3B1_fr_bitcoin-test_signtx_payreq.py::test_payment_request_details": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", "T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", "T3B1_fr_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "4daba0b532c00e91b034a905547312135d32748e1264746c5685e1a9fa5b7d3f", @@ -19650,6 +19750,9 @@ "T3B1_fr_test_language.py::test_full_language_change[en]": "5c8ccc0eb1be8baebf3d2cd0a60b022728933ac4180f27a0caa73a5b9fb0f642", "T3B1_fr_test_language.py::test_full_language_change[es]": "e27434b09eef1556fe6fa0b050fb2b43eed6b4f37d622b7831a5fcbcde3f72bd", "T3B1_fr_test_language.py::test_full_language_change[fr]": "7fae72778d7111b0d7746ce3fdfdae724415f651b2c3e195da55dc3cf6e24f8e", +"T3B1_fr_test_language.py::test_full_language_change[it]": "63b04dbb814f36ba7255debf464a6038d6772575ac027d670b3389848cad20e8", +"T3B1_fr_test_language.py::test_full_language_change[pt]": "826d588d512a1a96846274c4d9139e9d2aed769d58117fd40ae8c05558f93dd3", +"T3B1_fr_test_language.py::test_full_language_change[tr]": "3a286516bad290973bf33c6caf35072342d98d33f6357e924befaece9410ee33", "T3B1_fr_test_language.py::test_header_trailing_data": "30a19ba738d7bd2b5309351740a5102da462e73c6ec923a0ae92dc385c1c6f9e", "T3B1_fr_test_language.py::test_language_is_removed_after_wipe": "2e4b88e512c805e6a90bbfc53ea207bfef270849ed05b43c4d4c4350634a3f5b", "T3B1_fr_test_language.py::test_reject_update": "4c1d851a4f7ca6075e71d096a4b124b31f8ff280d609cc2495ded9750f057b51", @@ -19700,6 +19803,7 @@ "T3B1_fr_test_msg_loaddevice.py::test_load_device_slip39_basic": "3cddb3d283fd2875847f547b8165a62f2c6494239fc22fd80f32a0ea2dcde763", "T3B1_fr_test_msg_loaddevice.py::test_load_device_utf": "a5fefc356ff9d247dd7bd9f51e6155731eebe27786bac5caf7619cba01e02850", "T3B1_fr_test_msg_ping.py::test_ping": "8b57a6aeec4cd6699e8e58d1789366801c279aaeb35fb852098266773b8392d7", +"T3B1_fr_test_msg_show_device_tutorial.py::test_tutorial": "0153c82d94661c462e0d23401c651ff3e62de10b85ab23d10aca540b78fc0fe4", "T3B1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "070f03c81acb86de9d9e2aaa47c9346efe0ea630fdc651e25cbdfc78a9ea7368", "T3B1_fr_test_msg_wipedevice.py::test_wipe_device": "34aa26cd45d74faf51dbe2fc0b16f0e79ec4e4c7c1f792a5ed01e6ac39322cdf", "T3B1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "66c433745d2114e94429ea4b870520ad489ae80252796a9d8da8792ae0dfa2b3", @@ -19778,7 +19882,2741 @@ "T3B1_fr_zcash-test_sign_tx.py::test_spend_v4_input": "58d1eb4736d91116baffe5154f7325385df8df4c28cb6de617156d2d6b595e5b", "T3B1_fr_zcash-test_sign_tx.py::test_spend_v5_input": "ddde2a66279aa6cf32676a4eb1602cbd93ab757cb3478b6141e6f7c76857cbe5", "T3B1_fr_zcash-test_sign_tx.py::test_unified_address": "bb62c591f6b5bd553148ef2f9d7d0308a95425d6df2addbbd8af0703ad9eb251", -"T3B1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20" +"T3B1_fr_zcash-test_sign_tx.py::test_version_group_id_missing": "3bbca7f9b0cc44dd18b1fb71d34dec0542b8ac69e022cf4cd1f2792a41b4fb20", +"T3B1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "7159345355dca093a7f826d1ea8d35f2581fd7c8544be4f57ec03ea1862b5ab1", +"T3B1_it_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "a1c29e18b0722dcbeccd97ca828a9ff488f98809349a78336c62664ccaf00399", +"T3B1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "80c02b22124cdace3062d1488c2719e7f0f7736991b08464ea122064be4633d5", +"T3B1_it_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "54db22ae816d08421321b87024a3b84307e6199f6f3b81de54ae3c08b0bfe1de", +"T3B1_it_binance-test_get_public_key.py::test_binance_get_public_key": "2be3d16c20f6cc680c16d739d67f0735d301a29a5f8580525237a3267d1a2ebd", +"T3B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "c729c65f14987712071f90c84ff2a09323a5a3990a76c2a8249d0dd44713a87d", +"T3B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "2d1301f2cd8fc129003b737bc8486a2f94b9c327ea289706c86a3f9e07352481", +"T3B1_it_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "5197a4b85ab20f890cbd6e87459dc5580365361dc4cd6998190a193412e353bf", +"T3B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "c729c65f14987712071f90c84ff2a09323a5a3990a76c2a8249d0dd44713a87d", +"T3B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "2d1301f2cd8fc129003b737bc8486a2f94b9c327ea289706c86a3f9e07352481", +"T3B1_it_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "5197a4b85ab20f890cbd6e87459dc5580365361dc4cd6998190a193412e353bf", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "3db11fe58c6397eb1c4d71e480264a1902b90edebb6e4b16d826ea4d72aa095e", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_get_address": "da64411448dde2ab671cbd93035e8f9e2aa66237cdcbe4fe259ad6ada25ad4a9", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "9f090728854f87c843c159a1a14902f4f064e254da2958e5cb3027ff987c3ea1", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "65ad9ee63f388c099c2fe461e0d9ca241df39320ff0cec01507424e60a0ac942", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "eb46042e9507b7a2c089633e97d4d7b9e3534f718def4ba72f1930ba51ee39ea", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "eb46042e9507b7a2c089633e97d4d7b9e3534f718def4ba72f1930ba51ee39ea", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "332d914bf14f0b18ba3282995ab7d7e9588b9b576d659222f04ad51da904eb9f", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "c99b2bf40a38fa676e8362f5c3ae84c5ac30079f115420677a3408d01151e6a5", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "bc8e4ee4ac685c43949b2dcdc8464c848f28f1cb92921f1153ddd3a318de1d2e", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "b02384360d3e055353fcbaf1e7f70a67265d04264f49878f7fd3e2d8630ffdb7", +"T3B1_it_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "b02384360d3e055353fcbaf1e7f70a67265d04264f49878f7fd3e2d8630ffdb7", +"T3B1_it_bitcoin-test_bcash.py::test_attack_change_input": "17a88a4f103d3e8ea9bb5b8c8578cb4b7838d0f62672185b27762603fa14f195", +"T3B1_it_bitcoin-test_bcash.py::test_send_bch_change": "a20b63377ffa1de5948abd867934bb4127f9c8ded37ce8a66effc89c5fa5e047", +"T3B1_it_bitcoin-test_bcash.py::test_send_bch_external_presigned": "5d9cb6226f67eea2eb632e784955082401faaf4b69c86f6402f2e1a59a9bdcd1", +"T3B1_it_bitcoin-test_bcash.py::test_send_bch_multisig_change": "43c13da6d55361b533caf715b2d0f1bc7fe5d8b87e00ca760546b9abeba7002d", +"T3B1_it_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "ce38ef812c58730f6cb7639c87952e6e212cf74d4b00ebb2695ed6b640debc0f", +"T3B1_it_bitcoin-test_bcash.py::test_send_bch_nochange": "b89b72f26f519b07309a3119edba7967fc79f46f6135bef0c07794d485494fa9", +"T3B1_it_bitcoin-test_bcash.py::test_send_bch_oldaddr": "8871e04dd7dcf20686abdefd3045043ac2ee1842cf50c3da3403ae66a2386f71", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "d4d3e2578fedfb3cc0ebdd6d63cdac136987c3f3b0f71760d66b66ca35944546", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "34d8db03c4268998c4ae66ff778704ef6e125d3dbae40dd73f5b5fc99e453ff0", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "633f1b9273b757d3962c744f9b1e2b4bd43e8303e723cb5ea56e9489ad4a773f", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "9c576ba2e007b6fae7941e27804d2688d3dddff838ab286270f73d5e0a57e2b6", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "0ab1596738d15b7caa84e457cdba1129cf84ac7ac0550f510df56dcaa106a491", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "dd5e15ee28209a2b7cd1621115de54e7e224347dc41270680565c1313b57a945", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "65a3d4663adc7195a48acd2a3469c6a537785f3c3ef412e3c19b4d3881b917ff", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "21ca467b0f1ccb6b40a577d89e60391d2db47838de1ec5c747fe31876c3cc3ab", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "09f9576b8301e7b96cd131a29db160c5c7ffa90f78c35897e7e22b731f17aac7", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "79fcabf9ddc8fd20970ef548b191f94293b9c030130ac4a9678c4328f74a82f2", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "a3ae7785964a9b13d805d0941578a52b28b71cfa6c5e3f67f7e60ebdeec87245", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "04517faa53fe790a51d353991ce87df1d0cb6dac2a8e5873425fac0abe99a0dc", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "a36d72d7d5c7bc3e0babbba4dd22f911baa3ac80e3d89819e632a6917fe2f45f", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "0cb16e5ab29693e3bb3ca702a65500e290c666db5f1c159905cfe599c056dbfc", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "d355e231396857bba1d425cbdf5e93b659787ab97cda763cc6a05a728dc9cc98", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "4422e5fe1c0aabfc3be0a5adf5986b353c8f46ce63ec43af3c447d119cf89a9d", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "d4d3e2578fedfb3cc0ebdd6d63cdac136987c3f3b0f71760d66b66ca35944546", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "34d8db03c4268998c4ae66ff778704ef6e125d3dbae40dd73f5b5fc99e453ff0", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "633f1b9273b757d3962c744f9b1e2b4bd43e8303e723cb5ea56e9489ad4a773f", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "9c576ba2e007b6fae7941e27804d2688d3dddff838ab286270f73d5e0a57e2b6", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "0ab1596738d15b7caa84e457cdba1129cf84ac7ac0550f510df56dcaa106a491", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "dd5e15ee28209a2b7cd1621115de54e7e224347dc41270680565c1313b57a945", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "65a3d4663adc7195a48acd2a3469c6a537785f3c3ef412e3c19b4d3881b917ff", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "21ca467b0f1ccb6b40a577d89e60391d2db47838de1ec5c747fe31876c3cc3ab", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "09f9576b8301e7b96cd131a29db160c5c7ffa90f78c35897e7e22b731f17aac7", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "79fcabf9ddc8fd20970ef548b191f94293b9c030130ac4a9678c4328f74a82f2", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "a3ae7785964a9b13d805d0941578a52b28b71cfa6c5e3f67f7e60ebdeec87245", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "04517faa53fe790a51d353991ce87df1d0cb6dac2a8e5873425fac0abe99a0dc", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "a36d72d7d5c7bc3e0babbba4dd22f911baa3ac80e3d89819e632a6917fe2f45f", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "0cb16e5ab29693e3bb3ca702a65500e290c666db5f1c159905cfe599c056dbfc", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "d355e231396857bba1d425cbdf5e93b659787ab97cda763cc6a05a728dc9cc98", +"T3B1_it_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "4422e5fe1c0aabfc3be0a5adf5986b353c8f46ce63ec43af3c447d119cf89a9d", +"T3B1_it_bitcoin-test_firo.py::test_spend_lelantus": "28e9fb58fba2ac5cee9dd8a54222d7ec59d088525cee7ab301f0c31686b63db8", +"T3B1_it_bitcoin-test_fujicoin.py::test_send_p2tr": "4fb14994b5e3ca3e2364fb44ff3dce45a8bc95febd19143d987e687272195092", +"T3B1_it_bitcoin-test_getaddress.py::test_address_mac": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_altcoin_address_mac": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_bch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_bch_multisig": "2c727dba1f822fd7b919aa89d1fde2c4d2cb64d722c8367f0cc08f038e9be33d", +"T3B1_it_bitcoin-test_getaddress.py::test_btc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_crw": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_elements": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_grs": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_invalid_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_ltc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_multisig": "de60ef0573a93776971604071f31e4a9b7003b32bf4d40c0f4ae0cef34772e39", +"T3B1_it_bitcoin-test_getaddress.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_multisig_missing[True]": "519afdd01177996ccd9571f5dcc5072a2b9fb0e79e9d8d1c9f15bbae21bec869", +"T3B1_it_bitcoin-test_getaddress.py::test_public_ckd": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_tbtc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_tgrs": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress.py::test_unknown_path": "415a8d8667d1f8baef97e5a5e0ca870fd1b407e2dee1c54d165c82d3cb35789f", +"T3B1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit": "2cb31a20aa4aac1a3567275057569a4ff8e01718c8152af08ca7b10b428dba6c", +"T3B1_it_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "6723b3b9665bf15e2f67cf29f9a6cad5cd1d9bfadb184fa5284513bc0dafa71a", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "3afc5beb4eef92a339e3243bbfee315ddc04e1013f374e781ac419005329818b", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "9cd7cd37a181dcf2cdd86e9f673ee07fc44f7b6f022c489b3b74e5b21c71a6bc", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "bb6a5f7ab3b909037d0d74e99eeb4bfcc5d1bee3dd2f012752cefa1aea7c1a70", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "6370e508cafe3ae4c5b00fd22f9d4b776667f1fcd9d971c0a2adf2cde8d4b631", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "0359b588f4bdcc9cdd98fafb30f8a3dd79606d8ab540ac2650148456c06f1892", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "d1eaa7701aa81d422e44657b98f8808f1499f2fe44365e370b6f4c4d4cb734cb", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "9716c3dd7d74a8b434f3339ff8eac36133d475058438410a49bfa8981b09cf2c", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "c030828cf418abc10da897ab1bea37eaf25ab0acefe32349a17b87a6f149b9fb", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "196a015c6d75a802133edf22b800e2765c14e7bf1a8301748a0b066b5e46e83e", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "204ad587f6d1f8f66dd92d9fc6f1334e5dea188b70baa50cb5f11412538663b9", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "00d641e17a9387c5b72de97f1fe3fa8ded329ad5302a915396e18bbaed8ba97b", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "1ebf546f7685347c8041c86d6216a638f988da1546db69bfbca9b1935b9d6111", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "3754da1f1b55a4e969bd6798ed7dd9bcc8f78444c80b42813d17184e539a331a", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "7ae043a0cf3d1dec08c75e9834cf18914ac888c026a5f38d3f5bf1221af2d33f", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "f208d5ba7f51d23e107c2af9d183e0917d8b756c3e2f8736bde9f32e8ef7d1c3", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "a80535a2accd432cbdc3e68cc0f5414787e53efb9f9f68fbc23e9f2a51973b7d", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "accf1cebe815446f009a3120013ed2cb067734823985938ad762d7e2e5e0b1f6", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "573c0139cc16319c606a45dc931b156dc7dcafd52645e81a3d59043d63ece923", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "bafe9d80e9759383a0cc7351cf0666376ec4022481234addf35ed69c3e67eeb6", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_15": "59b8b5fbde701e0c544e2ee90e249f91b20c29033d53bfccae1b240fafbbeb83", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_3": "60903487f9e05d42a44e849b2c6ad0cc170191b9432c1925ad802c41c49a830d", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "aa3a84343bed7f3199ed77c70520a3e1a6dedaa6119cdb5a30e2bdf60aa8c4a6", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "aa3a84343bed7f3199ed77c70520a3e1a6dedaa6119cdb5a30e2bdf60aa8c4a6", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "33e4481617d3ed3b173b264e5f300415f25826d48acdc5d9bcc13652653cdf37", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "9588d1ebde0ffa11e9174c4cd9c398524a1e67a7e2bd7d3079f1bd7f28044e06", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "53f0d82d0292d2a43780f22e228478b21734f53ca4d2459a26ec4540df8ba20c", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "809b4b5fe87e597a8e0bd5d891656f52b52f175eb786f450da3fb3405dc06d74", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "e968d8f7ca4ad9367360891201bd5d74e178efb5fd11519ad802b34871e175b5", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "d2c11cde30186f11929a5ad06169e1efb56863b2c47ef322d1abc31d1a1d4f1d", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "9913027902ecb92cfd81e5e6eaba3433c4d33bf2d3c5bee95b01d67b1f40f429", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "c05f2346861e78de90767e42c1eea189ad1ac8f585a238f5c5bbbbf874ca786c", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d11caa3a8689244571294b57afc40a21ef0a8bd59817cd79e837c31dd90626bd", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "addc0c41a4ff232a8684337d9ef25995aa45afec8b4a1c867906027ed8c72508", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "6bfdd1573cc883763f9f5fece4ad15a36875de6e3113014cd094d6ff22a1933e", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "473bb60f59956579d50ef0e79ac3527895d9e091274a1804a1e42d4ecd767d07", +"T3B1_it_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "69d7e0613dd7027c0382f659c67a7e0fb689b3ab4d9b8d5ca979a334756cb5ce", +"T3B1_it_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "3fb6bb4e7ea5a6331afa2fea204cff9ca5af7ccbdca528efff81a9fe50e8bd80", +"T3B1_it_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "498945d34c564e9891d90c1d1c49d19418203e79f3eed9d3c5d5af4fea959a7a", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "6e2ea50212e839aff52153eeb5262a84e2df817c557f4b07738eb1d403bae0bc", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ca99eff8a90bd1a3daeec890dd8431ef5bafc1f2e5b67c8755f8e45c892263e4", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "fa2331a1411b8cd490da0835e341831389bee589715e2bb39271fbce7b629d9a", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "f38c3c62a1dc692d14fc835fbc54768efe44a03ce87ef1138be3b3cf0f59a04f", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "35eebcf06e63231fec0f7b50395719a7f9230183b90c178e68bf3ba336efd10d", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "97a872b1c37de136d374405b05db7b26c0474a461649f4fa7d416cba20e3dde3", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "d10e770a46af74686c00bd746eef4cde76b30ca4c5d120ec13ed3fb18a193083", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "cdd18c5e622e92341cb69909a6c7a373fd0f6d65c9caa7edb09b928b2d82b8c1", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "b1c78b17146ea5265ac364b123879479e0a58c27e2b24eb1ecd8108fd6e0ab01", +"T3B1_it_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "0cb3306db325ea1d04d9caf1b81b62ddece4a8b88ed72b97868808ac7c43ed0f", +"T3B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey.py::test_slip25_path": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_grs.py::test_legacy": "db9e2e1235e20d6e64ff3ed0d78c9a5137cc467f8ecca9fe0d629cec2211842d", +"T3B1_it_bitcoin-test_grs.py::test_legacy_change": "0ca672b182d0c0036db6b8072f984320a519817901ad4e2ada7dfa8aba0611f1", +"T3B1_it_bitcoin-test_grs.py::test_send_p2tr": "8191c18218f360df7585feb72556223136bd9e6e1135b4a855e1a246bb4e5793", +"T3B1_it_bitcoin-test_grs.py::test_send_segwit_native": "dbbf1c392e6d2687edb782a5d7090d141992636e58503637bdf0f560a082b727", +"T3B1_it_bitcoin-test_grs.py::test_send_segwit_native_change": "717f2f32c0d523bc38cfc11f23b56251ce7b5c3946804c4cead7b115c6a88732", +"T3B1_it_bitcoin-test_grs.py::test_send_segwit_p2sh": "22e0328d2f52c166850ccdd00e0d3f414e01cfb8f379918b35b9ee1a25ff1b72", +"T3B1_it_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "1c31851510868cab9ec3f3722290c4ac66d7e52bfde0c7a830af36cdea92cfb8", +"T3B1_it_bitcoin-test_komodo.py::test_one_one_fee_sapling": "0c32a082b7467917ed464dc037807a8e40fb33456c2efbf456bd6db28d95492d", +"T3B1_it_bitcoin-test_komodo.py::test_one_one_rewards_claim": "df848f13ea93327deedb09e9b4025c3989ea55d38816ac4faebd0d9cd061a464", +"T3B1_it_bitcoin-test_multisig.py::test_15_of_15": "425436af2bd7f84dc3255204e196318c1b01f9988321b88b52581d068507c740", +"T3B1_it_bitcoin-test_multisig.py::test_2_of_3[False]": "8ae8b1ff829fdabe77ac0aec856b9fe48e74c930e900536b75f476f74d55157d", +"T3B1_it_bitcoin-test_multisig.py::test_2_of_3[True]": "b3c04212212f3cb861e41a30e73639b5433d3b76380a6a401c3e4e55ac95fd95", +"T3B1_it_bitcoin-test_multisig.py::test_attack_change_input": "124202ba14ec37225a6eef68eaf8f718d7ca26b861e48c7864b263e8541c8922", +"T3B1_it_bitcoin-test_multisig.py::test_missing_pubkey": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_multisig_change.py::test_external_external": "ff1350c99b21121b3263987e67ea71a0a827dc8fe5efc3ad706f99958bd8fbca", +"T3B1_it_bitcoin-test_multisig_change.py::test_external_internal": "e683993d37e0d79486568f6dab6f7e25492fb29f6ee127d001007ac2d1665d0a", +"T3B1_it_bitcoin-test_multisig_change.py::test_internal_external": "2662ac5a1aad81e9954b45a59adf4b3ee4398b853f37817b02e9a98d84109e46", +"T3B1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "c16192b85e15cc993b625e91440ddc28e1194cc8c08eaa183328cefff9646162", +"T3B1_it_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "8f62acfd2bb1e72d5c6efa5af5b2bcdeb629ad3e484141756a234b99327e7eb4", +"T3B1_it_bitcoin-test_multisig_change.py::test_multisig_external_external": "475577f09d12437ab5f489af6b2b08b3eb5e66d2acea61341447e4265e7f917d", +"T3B1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "fc6ddbbf0d81d7540079c39a2d1379caf4aff994fe37acb23ab047c19b3e940e", +"T3B1_it_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "a5a4d2f30a61ae4187bb093f338ea8248ef719314769427a614147133c4a51db", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "380bf30489d4d9adae11be33b0f77a243a5ccdad807e51be1e958fd393c20252", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "64ad0a066a0a200524d36e14476d3322b5926f105d436ed68d2993089161af64", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "43f3033c01fabe5741c259688a495c2faa11e0b8ee2677c8c7bdc755b7429793", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "dd2b29f112c47c7046ceeda0d54878803d9bb0da292cb2f95edc5d85055c17c1", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "48f7b297becd8ce010aa3d3d3e6e3e8504ae7ed3fa5db60a68bb33081ce94396", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "280e1a695d04b607aa97ba667c49f426174340e24f73bc72b3be731ae137acca", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "35b463d4febb6454e3e0bc60c43b416c983be65b44909cfcccbf20f338336b3a", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "e9ad5b40ad9d30dc1f932961a462ec0c604966bbbdc0daeb819367088fe9460c", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "a465eea61611391136ab3bb36c979d74e690ec0e89960b6b3aacff2c1de8a24d", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "fc86d79e4497d688a60aeb64b81991080353e0f07f006c306ce3e87e75b4aa0e", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "9d9512c59562c295189c8c70da59c22662d0564963d8ddddab640617b65499e9", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "f62cfb8b1e3d3249041139428a8b8727e2ab0d2c8b05cd1a608a095d7162caff", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "36a1e6a1c44529a08c05e2c94f73675b6f026ea4909b3d16d649dda70e39ee00", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "084c8c1abf026f34e0e60b14bcd0ae5c4e005ed53496070310945c6d90271ed1", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "deb2361ce62ca292a25b7b1b67d062230094c9a57e74813f85d170904a5f018c", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "2bbe915a280cc69e4a03f5011f916cb7f3f713ec8ac050bdde81fb2ef39de370", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "7f6b8ad903a79b3014e321e6187a372254b727cf87e02dc739712a6c8ac6df57", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "810238dd43447242c8ffcf68c4d2e0599698b72b20309b956e1499f173297b69", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "62fd2d9c92abdb0a4d038f98c4de98d806f947cc784e5820ff93744b1fcb259e", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "f62ffd7b3af4b3f109298ee73f1d9532a5999e02cc2be160835ac87379a755d6", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "6dcd52850084dd3f4d1b72a536e7601512bc11f5a3ec65818895fdb7f5ad4110", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "59290decb7cf31ed0e8bfd27bd75cf6747e60726816fa4f9b3ad5c672be2084c", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "c7e2318149f25d7e198504ed36a560486586602a1c87b165d0a6d42549e4e342", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "985b031171535dfa2e0275ca00abf32adbdea56e0a0b7cf2a02abd8ae7815f44", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "9c16d2284eca33795f3b9de72a44937e1ccdfe83d95f1f24a2bae01cd489e61a", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "d4b9a0701ed821961f57e0bc808d77d90366323c1fe5870d728338e10c8a81ec", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "38e47eba07544d9b9300487380e6552998dd534538ce4cf41aa245e08b330352", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "9c6951d678d9d75ab026a9af2eee3cdfd4702afa39b9de5e144e149045624edb", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "133b59026ca3f5e397bd04351ff8c0c93d5f42afd3c32ba6780d2c02663cf7eb", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "b548ab25bc81c705cc811940ac67d30b0eacb1c2c48ca5ef51877ec5ff6891c3", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "d36b3fe271649b7b80ac5b38f136c8309746da8b38bc9829350a5419884fc9a8", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "8f5bcd9bfcf52f5fd7c7d57ebc9e987f7a05b20014f2a3c45f7b6d5e01d0a3ed", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "37a967e5ab15116199ebf69fa69a31588be7175d4e1ab5da2ac6e036a8f88ed7", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "38de8b0ce1f89b360f5fb66383ea7a095ebb68defd3678620f5090bcd222b87b", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "ec71ad65e0f4fa0f92c23f1bdda9f6873909c70157a613f43bd68a371bb99edf", +"T3B1_it_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "9df86742bba4951d6d02e4fbfa172080f659a1969e765fbdbe6602a3daedebed", +"T3B1_it_bitcoin-test_op_return.py::test_nonzero_opreturn": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_op_return.py::test_opreturn": "d56c96901d4c5164fbc92e7b69d2b854c2a08ca196d7fd7259ed3994f89484ba", +"T3B1_it_bitcoin-test_op_return.py::test_opreturn_address": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_peercoin.py::test_timestamp_included": "d2965a8b16f94f971b6e787889ae0846dbeb8722816d62e323f66fc0c4cf53cf", +"T3B1_it_bitcoin-test_peercoin.py::test_timestamp_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "c59ad64f4a86eeabcb7d956165829e6c0c59377ded8cb7cfb6ab5df0a6642bc4", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "02f314d8829d4c876a4cd877d546f6074b19af4e2d9add23e17b1fb8d97fe440", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "02f314d8829d4c876a4cd877d546f6074b19af4e2d9add23e17b1fb8d97fe440", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[bcash]": "f5ccc25e694e2061433f48828ea37dc0fb012d043b6b25460140e0a25b451cc9", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "12832bbedf4be7778a64244d93ef2f7975827ff951a8f08a5a665b0f40171633", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "ee3fcb4cd94e40c156dfefe23eb6fa3c04246bd6ed14a76494766b787c5dae6b", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "d74dec3b17e0c341edccc94109eb763654e41f6d3f2ac7a3b02391686c6e977a", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "77b42ef9e12c95e9b03284905287c3da2d62103bc53094a44fec04bb757178a1", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "9df993c6f8a6b409bd8ca4a136503d061ae6c38afa0123fbee44059d180aae57", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "9df993c6f8a6b409bd8ca4a136503d061ae6c38afa0123fbee44059d180aae57", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "d04f6bf08fbb4c43695a4bb31ee03b5b5222de67a413c49f3692b5b0ddb264bd", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "bc8c70cef271c651a24deb2f5478b0410c9f8df7c60d6355648f1ed5b0ce178e", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "2442069515a51832b05cd5a7f2a092278ae3b0afb0fbf75f64a44cdfba4bed78", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "2442069515a51832b05cd5a7f2a092278ae3b0afb0fbf75f64a44cdfba4bed78", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "18b6507132e222e8601918a3b65cdef3774f46e77d4a577d5feffc945176b702", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "2c71f28d43971c927fd50758712abde8192de197cfa80dd8e91672cfa5bbc089", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "95666595c11a9e13177d4c2898749fc1f5bd767a4fd5c48dbda58ece631ad656", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "95666595c11a9e13177d4c2898749fc1f5bd767a4fd5c48dbda58ece631ad656", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "f89a3b3bf3fc1b8587181e1bd21fd9cc3bd30722c2cdb76ecb997d68bb2f82bf", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "132b68265558c0171169b5609c8295eed33f71c956b8b3e8ed61d74ff092589e", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "f24851ba952b8a5eb3ab2393e822329bc7e4b020eb10dfbf8f54caa90fa508d3", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "e34e5c1ce30befb4ac33adfe62e62e1d904fa5bb14bc3612a64da7600a60928f", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "081441aec2c10bc7f744811a0786b09ef9222fe21283883c458c97c76324af79", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "2093352e93963c396a52b84dc9f7b5f3147f0448f252f3306be80adaf1d90229", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "6924c5558f43c2c3d52fd9b257292c27e1be2f742a3c6f7d9eb071174c2d69a4", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "25bf1e20d5aad26d1256a0f96d62cd905df85bf3edf98948c0a1e16ae95b40fd", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "30e4560f71856acf522d102d6f1b270463fd7d733e173722e462bbd63a1114e2", +"T3B1_it_bitcoin-test_signmessage.py::test_signmessage_path_warning": "3c3bb89fd797e8f8295010d80a14298a3489437d3acc8148e78d8b612e917910", +"T3B1_it_bitcoin-test_signtx.py::test_attack_change_input_address": "d0361c30be4fb398b093098b24c80ad4754cc2d30f90b47cf544297d540f855a", +"T3B1_it_bitcoin-test_signtx.py::test_attack_change_outputs": "a3f3398ded2a0b42421df121c1a005a472192c4d9007efacdc3266f8d1c0391b", +"T3B1_it_bitcoin-test_signtx.py::test_attack_modify_change_address": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", +"T3B1_it_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", +"T3B1_it_bitcoin-test_signtx.py::test_fee_high_hardfail": "f14a68a2d9e569e4397debf94a4807105584af3a48a08a5fed3a1ce1d7c53765", +"T3B1_it_bitcoin-test_signtx.py::test_fee_high_warning": "fa3795db29a50c979802bb1c826c7abca7fc98d1665d15e3ec45f20658a0e7ed", +"T3B1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx.py::test_information": "46a5765917fe824886a75e7dca1878f26726956010a2d7112671acfeaf1b3461", +"T3B1_it_bitcoin-test_signtx.py::test_information_cancel": "159de6a4f89b9527b9137876d87b97563570a6a56e7da3d2830ca472fda5b521", +"T3B1_it_bitcoin-test_signtx.py::test_information_mixed": "9c72b7745cf437b1e6a9f0176f2c4ee28eb6c54192a77039dffbaf450acbaa46", +"T3B1_it_bitcoin-test_signtx.py::test_information_replacement": "c9cc42af742e7f5914e65f15b2d9cdf804efa6f32509c554d92345b52966c591", +"T3B1_it_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "0085a00e3971059e97468b142d577caa2061983d5264cdcd1c130814ada36436", +"T3B1_it_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "a6509b47163f5bb9eca197b0c79a285a87c9afaf27759f52c7d25543cb0fe20a", +"T3B1_it_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "29601c9f22f3a3b8d97922309ad41de3e2a07eae601b8231d6557a067af0ba1e", +"T3B1_it_bitcoin-test_signtx.py::test_lock_time_blockheight": "ec4417f90771d99fc129c079110f003dce9bb0a2c8742a19735cf36f98fa77b2", +"T3B1_it_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "eefd9af859f50eead88917ea36dd7cbb2a2efea919b76d734318855e19ec2434", +"T3B1_it_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "90a9b8f90c594ba2dbb96fe67f3e31319b104df6b621dded5c2ad66e86e34b72", +"T3B1_it_bitcoin-test_signtx.py::test_lots_of_change": "27c3abcdbdde675192c704f7fafae800e19a1c70a815f7b8bc6ec2ece94f7081", +"T3B1_it_bitcoin-test_signtx.py::test_lots_of_inputs": "4bc23ece6ca9677e62b4b8819f4c4ac8142b62309fe80ea4e3f15625927d00f2", +"T3B1_it_bitcoin-test_signtx.py::test_lots_of_outputs": "1fbc49d64eb08901380d9832670274da878ce1ca689456562e478957a43fb22a", +"T3B1_it_bitcoin-test_signtx.py::test_not_enough_funds": "823f1cbd64daa850c2c9f2b7021fd33305b01f8c5927fd581cc75b3903f52d04", +"T3B1_it_bitcoin-test_signtx.py::test_not_enough_vouts": "675d1bce63b3dbc1a0863107b5f42cb063ae330982c49abbce5206900639a007", +"T3B1_it_bitcoin-test_signtx.py::test_one_one_fee": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", +"T3B1_it_bitcoin-test_signtx.py::test_one_three_fee[False]": "22a96dda23bc9c8e9630ad90b5efe8fc8fc36a542415b9326d136139a91ecd4d", +"T3B1_it_bitcoin-test_signtx.py::test_one_three_fee[True]": "49c545405397618daec179e4f4ee024e57232421cd8518b0a946415a477e07a9", +"T3B1_it_bitcoin-test_signtx.py::test_one_two_fee": "5d0f35066f1fde740b35b111f220beeb1f37066421af4b521ac147730632e498", +"T3B1_it_bitcoin-test_signtx.py::test_p2sh": "d894665a8513d01605a089dbee9fba39bb272f24c275546302fcfeb31c96c471", +"T3B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T3B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T3B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T3B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T3B1_it_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "2912c3a721bc663079a0eaefdab4ebd2febf35701ecdd03f38a36589b4d4e4fd", +"T3B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_signtx.py::test_spend_coinbase": "f7b9d6bfc11cc774a9bced59f400ae7ae82d5676ce9ca05eab928051cc4eb531", +"T3B1_it_bitcoin-test_signtx.py::test_testnet_big_amount": "2a82db8b383efb32ba4925d1b19df4af9aee4a1458f2763e7f1853c2e2e71747", +"T3B1_it_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "14ad621ea487c455e0d54dca853c69b1e102504d6bc77dd45983fc5470c0349e", +"T3B1_it_bitcoin-test_signtx.py::test_testnet_one_two_fee": "124646948d2b32a7091d38b72d8400835c03adc43188cf2ca7d008899dba106b", +"T3B1_it_bitcoin-test_signtx.py::test_two_changes": "b34a2d33f43c7ed2ea265fd9b81436fe74f6ec092e37090079be4e17069f638b", +"T3B1_it_bitcoin-test_signtx.py::test_two_two": "3de3fcc3204da7e6e82ced3ffc5e92db0b46528d3bba83e0267290ee5d3338ff", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "6554348c4981d13fac0f8fe298e27f450ed6e6868f444dc1f88e3a36d71e5941", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "e8873bf4dab7f3268bb7dbe765bc7985d8e6f4e6397f62436f4405eb23892b98", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "4a3a1d3330df7d4b9e7d6a33c0e4df8f4f41a902ea44ed0518d3a20882463951", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "d4e2acefbb7f4f08691f276c0b235c80519d71b3be7a6438db416293c2d1186f", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "9a3de66999f87a1450ca249eec6c2b17fc834d77756ffb452a7408543defb150", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "8f278a5e8731b8c764bb256411c0c9a8d2c8d0cc74728431666ced1251f7e6ed", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "7a4c8391569d0059eb2189708a8554b5e8abd191861e9e784343667990d310c8", +"T3B1_it_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "c61446747d532306bc6620a99d8a01b26d13488d5f1eef3180bdae9d930b6391", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "2535561093924661658a34a4d4b49c3d74d4f0914bb01eeb10e242ae05fe5f2e", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "eb0efc6022edfbcb56cf1b9b66ae8316a340f056ee60b53a1989a8ef7ea822be", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "fbaa39c2d08d0bf47df15376d543274083112d48e06c7be0012e3ca77ac9b3ba", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "aed842b45d6829792ccee7541c7fae3021902b14cacb295808eccb220a383a8a", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "db08d22abe962bbf68c6928153bb5b6ed2290c04fa75599994624f50c383f106", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "7403731b5832f620edbe70a2f9ded7846c7cd94102d6806d048f6d31cd19d421", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "4361a3fcee304dcbb8bc08373c9edfe4d8495abf81c804b16b228138e6e1b207", +"T3B1_it_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "d54b392aa7e33dc2e99b7efa6ce8545a80d413b630f90ce0e11d4af65a05dda4", +"T3B1_it_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "a501c771ac00da2fe1465f21ddcc3b6a15f1a179570c41f598b2337d7a218ad5", +"T3B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "17fad08735b958772756b089a974c3e6ac7767594c69069eed6b3959d127e556", +"T3B1_it_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "3c7e45b801d97216f669459f9985f8ac8366eb41b69b3bedc6c171cbca1c0c9a", +"T3B1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "33955b8a6ab5930e79c4cd2bae7447bc384655d4e7d49132c48332d2425c960e", +"T3B1_it_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "0c8a2fdc23b4c9a5a74bd556a132deab61c0b1494c3a049b1b7ff9924304ea66", +"T3B1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "33955b8a6ab5930e79c4cd2bae7447bc384655d4e7d49132c48332d2425c960e", +"T3B1_it_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "873f5f83efa48a62418aad34d1316916ffa96b02ee4557858a051cd58e0b051e", +"T3B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "e1aefec2620f1495f57e768d0ec58f866df74ca2ad9a64b690d3ea8aeb0c25af", +"T3B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "f6d73b1b02dfc53551f77fc243ba2a9f5379cebfc4c351c9c6dee7c77de3364f", +"T3B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "3a750dc75d6043f013f6a4bd0618f9b8aec0b09ff75793aff11876e143fa2a85", +"T3B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "85dedd079b69963794df29ffb5b3ada28801cf51a14992a897548b82e2d64a15", +"T3B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "1e53981d929cccdfe6f69b4f02fa82956166dcdd32778b1fb86c0da90546b0de", +"T3B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "69c3803a1d796e02c2b69c6f82a997b88f4ea2368d2cdbb2e70cd03e168a2a19", +"T3B1_it_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "1f0abecefb90d7168fac5ad38708a5cc939874bf1aa8c6aec96d07bdbd98eb88", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "06052279b7b4c903526b5cc316365310acd1b594740351a7752d7398cb060e99", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", +"T3B1_it_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "a1507dd8f64d05406c3d5b9d0c30e3ef683a6934b8409eaced713e4057371257", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "369c295242ea2c234e9b442b231fa8b2e6562717dab9b23ed262ddf8ab1b254e", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "70bdae1f1a9d0de9a4634d0d2f96956852e980645d88cb80d6464b212b85eadd", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "af80b0ae66855dbe9753be96888a41650f91f9603289f35aa0239d85497e44b2", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "af80b0ae66855dbe9753be96888a41650f91f9603289f35aa0239d85497e44b2", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "18c8c6146a4886193f800996b7693955079ed5e5653e04ddac155ed466f3068f", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "100bce975f5b9032c3eaaf673635ff6cc0df3cb64c42cc77a5ea1ee0604cba4a", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "066af8b0d879cd48ac8fb9fd20270983268a1747efce971305092b489135a627", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "18c8c6146a4886193f800996b7693955079ed5e5653e04ddac155ed466f3068f", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "fa389db78b6bdbfb9a47adb3f3d0f553aced6ce95aaba574dc199ad72c38b88c", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "064147476d221a8ff7ba6b03b15703df0d1f01daad151b95ba8ef455ad2ba48a", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "47101371854c3ba3e88e80a1a0fecf2d72949a7b99b99b2c5ea7279f515aa4f1", +"T3B1_it_bitcoin-test_signtx_replacement.py::test_tx_meld": "ef47c0b0079993f7950cba435e113d3405a8b8e347e4eb843b463f269f5f1e54", +"T3B1_it_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "346d8ca5be04846a184075730cb006a98110edea76461cc08f4ea226b0de3fd2", +"T3B1_it_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "7502632272c4ee16fae2f68ea1d2f5f73e8da06a4353ab97ae2805bc34a20852", +"T3B1_it_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "8566652ec8b6718492aca2ff6dbdf59abf2feb3c6452e75d27c91679e4bb223a", +"T3B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "7a5f1ff01982ea528e7347f5cb129668a0ebc08c1cb84878d675be2073677d7b", +"T3B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "42aee2247e037ea394af8934464560e2a83f96e48fe1d60d0e40b7648bd9fdc9", +"T3B1_it_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "a5414086daf68ec150867d566821ca32c5865d45c5185a4055c7fb5cf9fd44e3", +"T3B1_it_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "070619932d34157a49cb5a77c561d2b784d4df3a1ce912a0d2539c5eaa69e1e3", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "afc56b880a2e8786b1b31c3edb3e62d94852a2d45f133606903fcf5df8f4a1a9", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_both": "624213f02fc57e8fc47fc9ef44ca71bf4d2523ac289525384c79d8a39999685f", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "3bf1caa05ec95a5abeac3061f2648e98f433fe01bd8ee7ad468236e3a7d44109", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "199db22fc2889422c4f7b9ae280eb9c7432c7d7e958d38e8ec648b7a39239f44", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "c0fb73c71ed69ec2c24f16678d5a4cd439f62e868e4dbd7b2aa5593fd3cdfee8", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "e02baae5c295dbd1baf3fb4f773b9d0ac1b83cc9181c23a2a6851b92ea5e4b53", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_native": "78d8e51c1db9c44eb66493819d20eb69fb661f0d6fffcf13ebfae6d5a36127bf", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "6516c0df2a7c59bdbb5658ad3cdbc4bb9e3ea71f9311bd5361c24212cb5b96d6", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "78fd641b13c8f04cad0c88083e36fa3479b354d5d84e42c5c2c5c38278718f3d", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "97e85964dc0cf2ee8b747f01b536e3eba12ade8abafdf68fe654ffb51850ad6d", +"T3B1_it_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "eb30dbd7091b0fc869851e09ded09ee8c688d1ad39e10387753350de6c6e8e77", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_attack_script_type": "65017ef2dc92d4f7a98a8e0afb290c5a4157e835471f91fcedca4aa3ab2fc798", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_send_mixed": "3c4f5acf115cd3b48dbf2c221184b229c71e8ea2e558ab07fedd3ce2ff3ed730", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "4dd844c60b66479a2db753c4b9ac4a01a890cbcdcfb94a442a3d67675e5f7b5a", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "96e3d27601690295493129dba764f43b0183e3c435d6e9004e375d3110a8cc3b", +"T3B1_it_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "8f0814d6ce52b64bf9334023d76f83626fd2799bea798645e0f7ab7081a45e57", +"T3B1_it_bitcoin-test_verifymessage.py::test_message_grs": "a8f090bd76d3ac84169b3ffb9ee1b2a2a92cfa9e36a81bdf2a57d92b2e9c997b", +"T3B1_it_bitcoin-test_verifymessage.py::test_message_long": "d34c0dcb699e153649e91afa1edf96af90204b658d798463b07e1fcb0842f4e7", +"T3B1_it_bitcoin-test_verifymessage.py::test_message_testnet": "092e2b56f635257975e6de0b796702b96e4330d7907aa2b56a1b5937938a3e67", +"T3B1_it_bitcoin-test_verifymessage.py::test_message_verify": "af9543a9db7916a181ed573d04d54037ddd42dc5b6195bce43192490f03c34d8", +"T3B1_it_bitcoin-test_verifymessage.py::test_message_verify_bcash": "fcd8299036e5fb270545889c98192969aeeade6c8baa53ce53663409cdcfa2dd", +"T3B1_it_bitcoin-test_verifymessage.py::test_verify_bitcoind": "0d0f9fb76a54b18eff899df2c7a462bc844524ad9d1a1c841478f649bd191b0f", +"T3B1_it_bitcoin-test_verifymessage.py::test_verify_utf": "8ca50fcd731505c3a4831780e21ec6ce2c85ff737110cc3d88a02126cc37a104", +"T3B1_it_bitcoin-test_verifymessage_segwit.py::test_message_long": "7963a7fce69c334eb352ec650926c4ae4a6358ff490f40734ef094a4bd815431", +"T3B1_it_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "347581439c94f72243a885c906a5c174a7b0ef52f8d26582076043938a93c952", +"T3B1_it_bitcoin-test_verifymessage_segwit.py::test_message_verify": "073e4558fa8c9ac64daa760a67205be91b26516374538b6dbbaa84abc470624c", +"T3B1_it_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "0314b19fb67fd8ba1064433cde477812356d11374e43cef31c9b852391dc09da", +"T3B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "a0c399ffdf1a0522347d1701b0b87ab259136137ea370b3c224a7dd50b8bf78c", +"T3B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "b391b2ca9d433de2ad477923d6d603a2353a3e509f581923182ef231f8c5ae5a", +"T3B1_it_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "ca94334881357b60cc0250fb2e5160f3d50f12ef8dca735af61326e40d9e8d28", +"T3B1_it_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "a92b5659964c113ff56593649720f42caca4700287e4bcff36c390a7d4554496", +"T3B1_it_bitcoin-test_zcash.py::test_external_presigned": "b42a33e6f91b6ff21325896a3174f10a96570224f207630f0a5554d2faab5395", +"T3B1_it_bitcoin-test_zcash.py::test_one_one_fee_sapling": "0a6dc5577d2f4bb3944ca28c35dfbfcc44b31ce8f818da14a5ed5c4fee9ee48e", +"T3B1_it_bitcoin-test_zcash.py::test_spend_old_versions": "8e6c67d422b13d46ff76f9bc17cfe5e48b23e7978c24c407561f53ef86ccefc6", +"T3B1_it_bitcoin-test_zcash.py::test_v3_not_supported": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_bitcoin-test_zcash.py::test_version_group_id_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "3d075137afa8947b28d9c977464a243bc60e1e525b9810822259c19bdcbae5a2", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "3df221bca0f29d7de86970c12326e5787d0f4b27a6f4c0b24ff396137f27c5db", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "eed2c4baa037ae390dbb8ca409ca289fddab0ee8c722ca03c7dfd8547270bd22", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "a5d0db04ce53a5fea31e8853956389009efccd6c35e9692279f86d489d73d0d4", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "b3f9a481437dd6645feda64cc94e3c02b9d0498304a8dc0fe70a118da8c5b8d6", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "9ee43f2610929b1569dd164b138e9d00087b536e7bebe17cfffc6498a1a3af7f", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "df3e35579cf82c2179a1f78833df0914c2105bb9d7d78056bf3a9c352a1047d8", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "5f70879e174c14ae9fac8094f4b1e621cb9d38d59c0cef26e4d4bb8f20c407f5", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "e4fb7620e3209caf8d98a9d7f2d6e4ed598fb213c70e731e7d3d356ca43bd31b", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "ed9b0f3f061804c5a6c994b465ef459c64a77f05477656a39e4495932094c318", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "8a903eed7f04b773d1d9f3981697eeac5e7b840ec6aa0420f3a299839eed1e2b", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "cde330984c2565445604da01e965bf13832c685060b2de7d537879ccda4c9b88", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "860e0595da464abc80f0a16ba827eb0c6401ae93903b5283a6535f40676dd423", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "6870b948c94c4c0cc231a88ef2dffdbd79db15fee20e9dc97944dd40aeae81ae", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "c9e0ed5f4c0927a1d27624f43b2dfac7ef03f69893edbbadf96e210364a62337", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "edd2766ef7e7d6babc112fa713960928b22551ef6ad1037d989ba125871865e3", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "2b4eea2b9e375b372bff191d097c4efb52eb7267846efc8c84eeeee1874f7bd5", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "1f05dd488944c0b613ee28ab9dac7c7aa85b5a16375fcbe05130a3963f67803b", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "669caf3f06c3806dda85a292ca9288af19547aa261468fb23134a3e98691fa13", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "9d035eb72de1baacfe5659946d4b5fe425bc395f985798c0fb4f748be598680a", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "13c3ec9681259a61544b8dc04c1603f5709196e29c8315958dff4637f8292953", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "ceb645504ec7193ca8219c66504019c82c86115ad4fb523af149abc64772dbfc", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "109bdf97b45542559547da753f4ebe6ae497661fd486d7108cd3bd8bf2d82ec4", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "6ab5130a6baac397e97290c5767e662dd3eed4d5a2833ab80b17dd228f2b0757", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "d216373e6b2ca62ce2188e0e35fa29e05e6dfd04da5a261929551284dc5f716c", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "950eaed231950f4073fc2fdaf9e01b953c7c9a965a507f403be50432bfdf625d", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "14000bd49e8d6f8f9ff9d27f4ef58a778d6a83ed5e08a2c3635895f5afc8487e", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "f6bc7c64049bc4ecb808b55722590ea96f92915b7f21b4c0a7a0381475330f7c", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "af00754ff02931673adac2841b591c7011a0293754a4c54eb819df399ebc3d86", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "04bd2e2855afe83dba3fe9bb2d2fced34e695ca5a410a6e4c369066cf5b2dc54", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "15a1bbb732ddf9cad80d5a93147e205b126fab1c6e976c865f5a6f2acefb268a", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "8e41da7b0411932b26a45ec2610874547913d7117e3ce6b48f64c960a68c1aff", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "9ebfb310b8644fd90cca7f281ba29738d31ab208f59e4b4527f61bea36f39c48", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "8b0bd1bcb9bfc80eec3b58461149ee25d30b30964d17ad882de830a523192ccb", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "f552fbd31ad4ca6863c8b99037bc1eb678e1b08c44670d5e888a36e8d53c733e", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "657a5b403ac02b2ff299fb32f03245ec59847fdeff039e00f5aa8471e941ad8d", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "834a39937c017ba0b31fa108f84c2d814c9bba1b29ae8219ed34bc4b7cef65bd", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "defcf407599eea7877b7442ded37fff87d8840ae45fd3fa67e9150d23df12a7e", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "be46088998d314a827810272b7594f84c26c0128902eefb22297dddf7838668c", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "d00608809bc8710101f5c9d953382a6783e5528852e06beaea59d6449bd607e3", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "983c74e220b10fb869769d2dfde5cb6198772f158402802920507ad86b770b85", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "799efb8578c822fa20674db0a91559fe49810837d40c8140633172dacc687e2c", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "eb0e949151d0e3aa672e46ac520f05931504c2fc824b3f36917eae85e7ab978f", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "62469a08939e828267868021b2863ed223f8dfb308915876e0989eab89940a26", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "ce7269722d39e636e78ba6f82816405424b4e50b65c4019bce197e3ce9c998e1", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "b5366cd73ab103fc9614680df3f620e413cdbecc888e10f818c51e636e10ec37", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "cf8395a72c63ad8ce79c4ded4b9303c7958d9d3d98fcb26569f3299073c8f65d", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "642fbcdc469491e5bd7b8d5558c0429f6cce5c3f1056d253fceaf71206e01249", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "e32e0f4be6712b8dfe780f122217d62d8b4071b9531503554f460aa5bafd5161", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "31c9586dee292e7300c8d3790b5170153aba2c57168de9743b40ed0e3971a029", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "7b2b7b4d080c4bf79072f718766600a0130d5aba9b756f23e1f5d902178d8284", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "820f76dd5c5ab2213e3646d799145960c9d594be7c4e207de65297ec1a805c1a", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "e94c4220ce54e30338b03b467d39bdd583d864562e01300d8fa7c1dfa15bd649", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "68aae8cd9943ae824b4a47f203f253562b36fbc8e14ec34fec3c6547de775075", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "65bcdcb966b30274db010a35a2fd34638268b38e8f33a5297642695d6e48a552", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "65958e81763d19f60b5c5b17ea4d0d37deb286f0940ed120f18acec48dbc72a5", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "6ff7eecc144d79cead5c5d6f056b899fe38e86c2060bea94e128af8d6acc4e60", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "655ea48420ec89985b6084617806047114a7006ea4ac1fb3ff9d1d80dc65e764", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "4e84b8531c34c0b3117c0e8c93003438f82a73e2da8731f241f089640f416075", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "5956dd74a3fd0ad7d182249946b65831299cb2977c079a24f4cce28efa371bfc", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "9d092ca64369b9f550bbb86a7096172a6827b799faed6ab411d319fd2231caea", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "72b61edc84ab5270704f93cd41660636c4aac55c2559009ac5f71b4e1aff60d2", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "45a59a0232c0eb0ddcab3a7d043a4a64e9836d0f7b7dac1086bfbfcd5d4dc81b", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "dc40fc251848bc9651e77418237155fc03af7accaa72409bbdb460d965c17611", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "8dcd4f9ec7b4776e651c986f6b5abb04491add533bf3ac6e096b5fe8b5026fcd", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "8af461297d33d2c90cfbaf154edbfa2508146d13c96c97b0c487f9b2e4666552", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "942e68a2f33db5fa3442cbe1f291f419694af811b1c90e8f5c170edc286ec03a", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "c36e60e2bb8a7d3714a891391239c46363b22407db2e4fe218b7d4dd0435a33e", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "2ef5c4e9bdae63114b24a50ec1c2c0a26c1642099e8bc7842c0b8b67855fc296", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "072be2e05d56a61f322803d6a9be87d8b8bc2c2a9b1d61ed3f1ea4f7e19f4d47", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "64ddf8aa816eb3be38670c9659a6e1fbf87a7d3326d2eca782465f9399741fc7", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "b4066308151972084e7e1ad7195384d49f08d54b28fcae4baea5c5409a83d0b6", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "7a9df795fed04cad8d0b441974b3fbd1b34e6e62ecfd4efe9516196656c8578d", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "0637870a65aac95724b71ed4b50fbcab7f5e725cc1804981a3f4c4b1332500a3", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "8ff79b96a6af99bf5b4a1dade81d48272db82ab83bd352b0150d30ae345d020b", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "a6229444c9998e6d0535bdded396801a5cbe9ee40b8228935f765ada7ff8b85c", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "8adc2a8635947a191f22c18aadca53b077147ea12fca64c5852fb974407bc9d9", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "982c6ccec807949bd6efc036534227f750a1ae8748a78543237c87c0790a503e", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "551e694b044ee6bc0b5c5a3d80056414906cb3f54508bded09efee70f3be8eff", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "8faf039db77bd93964d7a6d1cf5b5e9afbbacbadaa9ff53ba85f3ab9c6b6ef2e", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "0d2530d340a9b3e77a2ef35896eb8ab337bf412a0ec021c72386143fc5f7d794", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "35cabffe4c4f46d0f3b6d365eee19919ba3ecb8eff78700fea00b3803dec69fb", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "bd5806361aa4a164ddac8d58e1f5dbef652c66b2281803e24f3a02a257cab748", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "488a2614784e8f1ca427788e790853f19512758f12faba3bcdcf96685a742a23", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "b4b65aa1ffa4a2c697f6707bf2425151215ebd0c06fd1ff14db34ee294ec0520", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "939c4e271b5be19870db669a5bb015790e7d6da0b34891ab427b677c95aea436", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "d1910e7e5feaa47cc22ca734f58c20a89eca8a365d79d4adc22c29a05742a9b6", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "a8040d22b0e9e6ab306314893938416e458f35bf3c7a5b71213e30e996e9382e", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "a0b82ed70c2a2f6b6087e4c9b08c3cb39e57ddcd0bac36c8d7d17f239c74f82d", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "8422090c6319347be7a1545710fc314755a77c9ebb45e3338dde0066ec8145e1", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "8eaf76cd6b5c841eb28e043309cce9874b99b651858edf2f71f35427f3fc73bf", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "5ab8c4cf99ed343eff0879aef1e24f8d57eed80ec94595d2a4ccc3707e17671a", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "d9b3d3eb98aaee12b8a39c42349103991c66101c3399a8a1e73cfa3913b5af8e", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "be1679f7b8fdfbd1e9a0f98880b4b3c05c042fe73edf7c919dec1c36185c559c", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "831fa292d5c745210c294d1998e4dd144431728290a7db1fde7090939a59bf0d", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "0a3db36b260fedb18b1ec5ddd7ddc3477c0466f7d1b6f24b99a7c1edb8d1cce7", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "950613f2197366143bc726246494d5cdb2aeff2683f6e9f954fce4e1269a503d", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "88a5899024f35be35f97616507d6684d423efe7303ed73ac101d8802cbc73cf9", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "cfbf26f76cdb3ab76a38c9ca788c96c1059ca38790533f59a6f87729589a22c2", +"T3B1_it_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "31805200b5e1782870df3f30b4a26347929e98aae1b24a66615f31f82ee51c6a", +"T3B1_it_cardano-test_derivations.py::test_bad_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_cardano-test_derivations.py::test_ledger_available_always": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "b5368c42555c24e216aab6d5c1426929378587ebbdf9e38c7636b70f578c88cd", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "b03fd0bd2aa422480a5ae63332c886b16267456e66e53731d10f60ffc1d74a29", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "b3bf23a2dd30d124f99104a173c4fcb2fb4a3c9fd6a49f51cb946fc98d6830b4", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "20195affcf0a36da88caf7309933ea2f49463057b3fd04a70267f78b3d0600ee", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "7e2f936cf950ac0521e1b3fbaa03d8a6560440572e5410cf2dc366f727dd0ab8", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "4520043bccfa61c35a63644e0c970cdc3e9da55e175953d6d91cf93e5f50e7cc", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "0eb21a5f7143ead7cca6150d763c80c619dd3fc95ce042f72cdfcfc132a79d2f", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "70453cb84f09b03c3a294b48b9e655fb0ad4b8a234d7347b9ad175c317580af4", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "668c670e9da5a956704d0aaf03dd4cfc6a7e9aab762962a149a37581bd6cebc1", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "12120fbc082fbc31e05f555e807b60fb053462a17088eea55b655b3da7866dbf", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "374e0bcc435857689325774b472de59d47053f6ae422ba817a4fbbdbc508ee58", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "93f506d943eed5baa8bb00b93515392e42954936f901ffe71b849ad1a8979e96", +"T3B1_it_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "a458dd72e380ff6bea72475dfc7b8b3117b134bb8a35f06fd10e49433cd29b22", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "1bf9b854bad36293abe17ee2792fa53da5c38a62ae5eb7c9f6eec7023bb747cf", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "217974feabda91fa5161f0d377a827acd81f724ddb4b1e08f1d7dbde01523df4", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "2db0528bfe1fcabd884e77c1f85a5128621735859141e82d4af53815e89de90a", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "b2b3dc46b52aba4066efbd1d9ae0a6b02e46cf855f203fa10076bbb219f1ef22", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "23c2e30a3eb75a7bcd611102aa72e0cada846c9f923f6ecf212317f593838139", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "e232804fedf1717ec0317490114cc92ef4ca762af55dabdbe1bca0902ee8f107", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "8c63a43d4c12d16b5990b5b4d60d28541a7c8d7246d34b0286aec50f7d8d0314", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "4a8b7646d477f5871ff112b9fe52bb66e24faf2eaea1be2750693d3015c8ae04", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "18ad65482e180415d09826b576217869432deaa24f0055aebcd2f88a56c74807", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "404c329f1b7cf3fdf8122ddd1b3b7e5ae5ce6d661e74d07fd1ac6d8393f219f7", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "c1516bd3b51bea62a7aaaf1dba3c32091917ea6762808ac48835a8571c9fa5c4", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "9504af25ca33c557b0f9d55f03f9e76ad56d6d78fdbd4803833ba85253467c27", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "9504af25ca33c557b0f9d55f03f9e76ad56d6d78fdbd4803833ba85253467c27", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "78959cc8aedbce6d693167f385cceaf4b63bd401f4d9eef6ce67028fe4bf1b11", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "ef7b8ec43d5495883b183dc710b2bd66395e37301d0e6f1eac7eaea548e5a8a8", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "acc4b39439077db5188b0f8944da0a73320a3f6416648b8ac6a00c888426f339", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "a8e872a8932301da750913a9106373900f567c3199f545abc69129d3f5816bea", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "0113e83b65d590c97cd166a98ec5a5922cb67a2f1c34fa395611f119d2796165", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "93a7333fa05ad02acbe4a33e509df0cc26e0fcd4045dd213683ea68f9ba0c6fb", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "1f7ebbb5b61e8a4b25b4abc85df9852543ad5b82ac10467943199b070a648ccd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "69d711ab49d424a7fa86c423d45127b82af835167254cea2aa72236008ef1bf5", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "0113e83b65d590c97cd166a98ec5a5922cb67a2f1c34fa395611f119d2796165", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "a90c889316c9273beab4f8f03fece2fd5b78a08ba44d3610acfee494954fbe96", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "a69838e706131dcebab3dc5787a147db4c15b0df29729a859a0486a8c5501ea6", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "7731f3e068a5806d88db336e0c6b26a05a5acbe58da368d7cf092606229d6d26", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "9ac46f47093f336c43a7c8a18dde4a81ca1dcb48940ec486b20cc265a360c552", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "847d2c9231053940a9f75f6678c5e860115b573b3d46f13522c25524468ea3e2", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "072a8d11090ad108c7084eb3df4e69900f910b5375577941c3d210f3d86bba70", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "60252e87d908f002d70e6cf76f402eb475c2b8560ea8392242d72273fb1ac031", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "f2ecb8d491d018736eaa98d05a7e92e5612a5b02f87ee7d435a6f4578e5579b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "6c886517ec6ae61d1726cb26f517aee1be786cbf86f320df95a88d7e0134ef84", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "8e8723ebab24fb3fc51bc4a627dc30896e82e1471c2cbcd393c95d51fd1006d1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "b0951f87851b4743c36451b7f93798edac96670ab24a1be62aa6d1e885545f51", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "65ec29660b40c0fbd5368cdf7062f39c4af22c0bb1d6a0d4527427847c30eb75", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cf692e7136d1738aa4d98ddf0b731e1d10e0fd602569c8715b3a8f72284aabef", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "73747c5829ef87f1d876689ce118ca59ebadfdd8b2ccad9d848a5f47e294d16d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "48dad40ff5dccd294e0ca235eb21cfe5ee97d1b202f4f31f5cd4fa80d6a59b42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "c9b9c0b1fd7322ee291209c14e977907a59996b13f18b7bc9a8e16807335f40e", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "09911f3eb7a9e599d20f7cc7ba49f93d4543e5fbd4d6d7583c75c85f47fb5b6a", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "c93e3698fd4fce62c328e2496439a39a3acd9a7c6499003cc62c520f05c2c2d8", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "31249a488386fddf78c6ad278e068bf1061a949083687a1cd1993b90366548a8", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "626430a9504e3f7f8884d6c1c8426870dc4d9c924c586f64114bcd8599ecd752", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "b14a94b5c1d3abc042792dcd514ecbd4ef922b2c5b3e4f411a8e000a3d50d41a", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "8692f63e1f63c0946b141e9f04b13695b4bd77c9664a866ae7504b14ecb861b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "8265b4f824d446180b43bc9ea2619fc3199f13a94912c4b49a78e44dffdb8576", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "eb8eae59a531ff6c20a1d255d2dc19d62b4070e3c571452d1f408999ae3de457", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "0e16de51fdea32db68090b3983c5f436693bf922f8c439c1acaad6b375e131ee", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "dc31dfc28fd29e2211d41455a39745d77c3a6681e49e5e46be6b329e208606ec", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "44497721dc3434a6c498630648bce494d86175ad8f0d7a1264d86128dcfa3227", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "f6018424e47c181e8b046d6c6e16c948fdd0bcb616acb08d2906f6f1eae875b3", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "dedb32b67882438f8abb3f169ed15482071ec3060465a74651547e147344828d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "9f836c53920417dbfc5ab01348acc363bc4d946e3a5ed335fde8aa597117d396", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "c57b0c37f11d933eafe7e631b4a00719eef0c4b6cdf42475f36dcc715f1f1ba8", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "291522d580a78e417c5f0610661b34c077523a8ca1687cfe0374e3ecf0157be4", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "593e5e7fbdcd09cb646525efa9e43c47fda39d6d40f91aec154e2c0558503c13", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "10a8fb8de209501c1019179e10185dd9a796e63baa119342a146ecaab9e43fcd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "60634638bede633efcb1619b644c264a91b3db2ed87f727ff22816f4b09bce0e", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "fc9f1da7500793095c99be9918b9715a4be0c6cfa566ce8a3fd9c5555349e784", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "5fdce7b40388c33725b882b33afee6731a23d7b49fec48b06c0f4f75f5a58d67", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "0eae4e2d3bffd15875b9a389155e04bce64f5072e1c05f2939641575971dc2f0", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "3175dc7b372ef28e85f512c72a6fe9ddca233ffdcba5546746912afc3400bb0e", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "f2e3ce81db515681c8d0514fe35d850390111d04cfedcdb51376f96255d439b6", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "e98a0cb464dc5b82786d7ad92e7853659ff8fd9950cf275fadaf4074ab239cf3", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "db839b55fa21c55c3c91cf456c30993489628211e4a909d3319b458f0fd0562f", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "93a70c24394668c65dae30749417c558b4874cf703d938aabc6c9c5fd2e113cf", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "edd0fc128a8b574bb32cd071e153861dc2e5b2841c7bd50be3193b3f833aa855", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "8d97c93506bba57c5beffd92690394a4c5abb399fa1aabcc6826b62a7ca35b0a", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fb2c3d4ab3d3f4993e06452daf6bc2daacbe874190ed77c328bbdb75aac39097", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "8d1f5f81bbc26f56f80878f951188afc24ea51cb29f4cdf9255d621d6a3442ef", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "b433a3befed128e4ebdeadb15ad55e6ca3a5d3b620eb3fa3b7a01be7883b9622", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "6b52774c1b82ca04fe143b358ab9b0f0ee1be10709e7f2ad78b2cb150830497e", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "73f2e5c7095f580b5dd51216825e67ddbe704ad4d04f66cff73a8c50f1f89cb1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "c0e5c649ece862ab15458fb8fd32d34a0d8dfa97708fdbb9113deb65cb681f2e", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "8bc69203afc6c4a14bb1d757e89a38c6b3511bacaa8a4d36915714c1413d0941", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "8bc69203afc6c4a14bb1d757e89a38c6b3511bacaa8a4d36915714c1413d0941", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "d72b219ad102e8b7c2d31b3152bd69f9166725b59e194dc5a5c88bf2089a1b94", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "41d895ea061754c20568eca8a6da0ec7e72772bbc54fe9dadf8613e61e41a1b6", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "41d895ea061754c20568eca8a6da0ec7e72772bbc54fe9dadf8613e61e41a1b6", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "ce82e5f70557e5f4d4036b1aef10f5e7e568b856191ac7368d6ae9a6978cb710", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "d1ec6144be6b475cf3491a0544c5c40210d4986b19583c0a0b86c5445a2fe394", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "d1002ebbd30e2c6297004ff77b0dbdde08569b020b927f94cb23e04f8d65d74a", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "cd23478971f7cdd68d6d02c2cc864f3da8d402cadff222c25b0f8a0840ef99b2", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "57770632b1d0eaa7356641533c57b30f1c4d67fc07a5c85ac635b76774db5221", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "403dd3b067b7eedda5777c94f9d594ba1b49e512cbbd87d95b24aa748178576a", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "5d2da365d02c1ab248dee0dde1bb62b744f085ece0e82bbefd61536f53be7c75", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "837becf0d17d8d978531c608c6f9d17b4780b56b10cf3ff1cea7ffcbf08f8af4", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9419b68f9d1e649a72c3661632f191827ade32c7c633ab5442d67d0a11c8107b", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "930322d89e7d2d14529af811ce2d71dc08aaf41239b0244df4384ebae444b4ac", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "1bf9b854bad36293abe17ee2792fa53da5c38a62ae5eb7c9f6eec7023bb747cf", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "8c63a43d4c12d16b5990b5b4d60d28541a7c8d7246d34b0286aec50f7d8d0314", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "dd5a4e77e15a522e870b0413b4bb5afb2f4416efd908ee35d40addcb35afb9a3", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "9b98ba23bbb432c39bf023588321b12447446b4921fe0be62ff1607c385c7d1e", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "2d1fad54dea4d8b161e2bd97615d223798514f6c57b44e429b5ca63b497db447", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "10597f3eb32a2d88b92ed5ae696b7ee9fde60855b2c1095d97d31ce6236acf8b", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "e2e6fa68909d10e29570dd8bcf61c0569c98a149c38b91f364ec17baa3bdd391", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "14884d9309f30f5f9f2e0a829d753a8d3205225550cc37b5737c4f74e5bdf351", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "847a802592047899163d672017ce192a2b046f14a5dfe829ddeea4e957fbb52e", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "b8f8bd56d899fb57bc65ad32285c1690c20051110b172c43a7ce2a019425f37f", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "452602c9873767df61732425116dbdf9d54710b1f7e5385cdafafc94b156d229", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "14884d9309f30f5f9f2e0a829d753a8d3205225550cc37b5737c4f74e5bdf351", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "acdf5d4be7786aae5c624aad5b776ea1335ed86c8d8c62c840fc19ecdf4a3acf", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "b933bce96518d7f49108df2591d5b42b4bf2b33bc5f95c50776c1c05964867cc", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "87cc01da1ebdc85dafac07754fbf7948c5b9e181ebd6d85b4f31ce210e3e157b", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "11cfa09d8aa070e9addd2a8bd82613371b5b43d42d4b441440f5cca0e4acc008", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "d9d6fb17f4d451d88b64a28e677634374d848c942e7e53b2e0d78195e08282ca", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "a5d8b677be986683782e00aa72c60b4b152cc386a5a5a634a77edecbcc230047", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "967319241d3e6db125b150ee3664cbaad848aeb4338a9440c1250652faf13ab5", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "c60d179c63978c7212e3e52407fe20a12dd013fe5d2e506d44de3b6c0b06145e", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "914883456238dab872a9f996a5a18e56d7a22b08438c2b2dc7b71146cb2b1da6", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "22d9cfc103c7dd6643d17f6df030fe9b5aa1e62cc757302f6253e22e4f5732da", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "a15c7238185f22ff769d64a6f8e7ef58fa4715d8ac034705052f3eea39493a39", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "824d21f5c8c9131548397891b6506e97f508ef7aca74e04f570be429a9017742", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "8a51caa894081641b9672f38d1e4274575418a066f26e052fdc254ae2420f073", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "fd273fda659c35bb85cfb1bea4fb90c549fdbb0e5027133866b0434f3793ad88", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "583b74b68381452bf345ca75cee73966100ceff0bf908f546c215abf9930d9e1", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "568e0b208781113b8a81754857bcea1b612702a307ccb1dfbc177a054baac37a", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "fc953307b501e210d22dd677718f29ade27ab1c2f9d2995fddc6f621530ba188", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "1e796fa843bf2002edc63fa156b4d2e5350d263af4827187526cb4054e30f7a9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "9ba5b25cc7add2ff067c19a04879207048a4900e7db7db573ab946ffd1996cc7", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "117f0211f11735f9a3036bcc80ebea0385678b30ce9c8e0f506bf8cbfa406a42", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "b5427287ff3fc2552318c28e755550b2c49ff63e212da7f6afa39b0c70c945bd", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "6b0d5c730a99032a76096acc683791a2228a7cb5272df1e969866da53adc08b9", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "aa272cbf2ecccf3fa5390b6b5993dac5944924bfb8f0b99309c195a8a4a3f8e5", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "c714407a28a65f18656eb2cab8f750cc992bad0333955db981d3c59d8cad0a9d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "78ce5c36e483892ab96c40891db91e6949c97b6c0bc3187beef234814634532d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "956b9aa4a956cf3fff964c44a8ca63c3fd5b3aa94809fb32c01c5019b88e031a", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "f31211bed6c10d0cb2136063d49f85758628c739327aa0ad770444fd724e6712", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "9332bf0a9ddcec04e28637bc209c4ed70b6db78184f06173d3753bd70bb45e76", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "db66f1a60316b26d6c2d77b454c2eaa8df62bc919964f78dc801aa05debe4c45", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "8fcc67c5d02c0db6648dfdeb6a9c61c9f63660ae76918b9e13880c897790882d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "758d3a842b7d87bb6788e422e5096ab5680bd5dd3b6766ddbfdcb3439dd80deb", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "1337da4000f92c34403be9ed725f3bd1c0abce88adc30fe83839caa8363fb11d", +"T3B1_it_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "3a0c9959343cb1ca044d97f661b28f2b5d01a382094b4cb94ea338f3799ba1b0", +"T3B1_it_ethereum-test_definitions.py::test_builtin": "8388133ad35a921a33432552241ed578248d29dfe86030a4fd140da52c787f18", +"T3B1_it_ethereum-test_definitions.py::test_builtin_token": "b49ce3a5e8b99adc9955659f08ff1cfb377c7bdc0e715aa958937c041a2c23bb", +"T3B1_it_ethereum-test_definitions.py::test_chain_id_allowed": "cd9d08c2cfc800bec278c03c598be65556ae95e2c608766a6079213282149abe", +"T3B1_it_ethereum-test_definitions.py::test_chain_id_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_external_chain_token_mismatch": "0d5df11623ad85684c5b6d81065021788a3139c39682f121026cfd6d1e3facce", +"T3B1_it_ethereum-test_definitions.py::test_external_chain_token_ok": "12931eba3dcf199f44f65f690a3e998e13d5fcc8f34a8f038176d9d4a4608212", +"T3B1_it_ethereum-test_definitions.py::test_external_chain_without_token": "0fc6896b7ed9c645e5171536ff37e6283342ebba591e3c5265a86a7b15e6ec0a", +"T3B1_it_ethereum-test_definitions.py::test_external_token": "d4099d53e528386377762eb328243d9044ac421e93facf1fbdbb5bec52665ba6", +"T3B1_it_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "5c12b32dac104797c2bef399a972903a5ead961da4b20344cbb9db347bb93102", +"T3B1_it_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "ab3e1cc8b16085e3d47e2f744b95cd56e5628831536b6c9478633cad8b30449a", +"T3B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "2a14a7f60a399ac07f8adea003e4cb152f55abb67964da58acd8f96711d9cb86", +"T3B1_it_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "5088074461370abf9bd4db107638670a283f83cec6b8ddf405cb28c374fa99d7", +"T3B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_slip44_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions.py::test_slip44_external": "d826dc8f03479de89f085f48f63542675b0eac0e2435cfeafe42a986a492a201", +"T3B1_it_ethereum-test_definitions.py::test_slip44_external_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_bad_prefix": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_bad_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_bad_type": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_malformed_protobuf": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_mangled_payload": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_mangled_signature": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_missing_signature": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_not_enough_signatures": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_outdated": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_short_message": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_trailing_garbage": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_definitions_bad.py::test_trimmed_proof": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress[ETC]": "f45b14283aa74ba93f4cfe1df82aaa5bbfee0a47a0fb634267597741a53a3e2a", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "e735b027cca54dedcc9cdf63fc787a59ebf57d0fb555e6387b1fa3ea38e71606", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "131489ae4971766ac15efab79c2d865d4e599736eb6a7c2a1d0dd4bdd16def1f", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "cc759834d0f1572f8ca289d661d6f2f2d102bdb9abaf88f237ee3908f10c8464", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "3039ff0e815cd17191fd6178b5fd628fbbadd7b066cbab89063ded0377f3ac6f", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "64fab50e5eae4a32feecb8e70baaaf135013ab5100ef67aba3cf756740f74084", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "1776f5aee5703f33ca2fbec3975b1c93d3c3ef73e67aa4d471f023823b0c8bac", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "0395c6bcef1bf6f47ce5155b25d7f9b4c770ed35c884c0f9aa87646a8cba3fe0", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "a5102322eea7c649039c3ade89d79ccc2f0ffcb904ad97d2385c70b26def4af2", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "f5723b17aa67cb5eaa9ebac594fa5437349e0379d2997bfe50e080681032379c", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "0edd6ba3dead4f21a5afa420779fb083567c54c8f685fe7c26ddfc54370160a5", +"T3B1_it_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "50b4efc0b8fb2a8e7a33e7680a27a432d5bf18aba1b0cbfc73d35d1972967d3d", +"T3B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_getpublickey.py::test_slip25_disallowed": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "caeecf9453378c866cf7e37fc7c21c618654b0069451b1dc87473e3941fe7425", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "27baa347f77b38d8c002e5cf613793664fd345718d3be4053525404168295302", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "360a34985ca8cb7cd2dc273dd8ae1a2a6687e2a4cb4d7671528ea61b698ca1cc", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "90d61a0cee222fbbccd533fc08a8f7631e5b97d610237c27c6001f0566dbaed2", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "eb62ac609193de2b48ee54d457de1fdc87de82cce872ff97352d1e1ba3639160", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "6c97fed685fa51c91cc1a8a4648e6cdb66839941741cf979254f3f66f9bc99d8", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "482ae1f7210bfd3db5fe7fb5de438ef8de153fd8ffb25bf34e71e6ba10bc24dc", +"T3B1_it_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "e79b1b5f8bb34ba6319eb62f04ce87b1696ae1c4832b225baafc56042287726c", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "0ab7498102145709b4bdef03404f2adcf330641465439f8d1b2487c409b10d60", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "2e7c65dcec45427aedf9ea8751844a768c9f0d815ad47e50c8907f580210df1b", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "0f8c166735ada0b1f888bc6a4a2d52b1ebdd3694c0bd0d102723e5e7e2961826", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "5b897a47955a94fde28c7d6639999e4c8d4f11133e5ed1baf5041e1ad7dc0abe", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "64798dc96ffb6407729e568fd51f0b2b5d432ce360d5c4df1cb949428acf6908", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "fc15db2d0e6911568a2c4061ff551e2059ce5a26dad67b23fac72a158181f23c", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "8d53dcec1600993e76e462d4c48d62218148df15f75d7bf2d297f983ffdddb26", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "92fa13130b2b9a2f06fdb75dedc1cff1babe26de0874154bcbf84c84dcda378a", +"T3B1_it_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "3cd5e47f18d83f1bf786aa914d587dd22c29245d10a4399c9b33a6082ee8feb1", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "2a36e6ab951c4bc4b79803efde458bdcb1cddf04d0d355f4908411c86be4f4cb", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "741cf59801aa9d44a52b90610fad5398122f1bc65af0f43176f760b8fe4971e4", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "6283ff6580c67b958c738a6708471134409fc2934600142ea2588750eccb62a1", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "b33c4809157e145d2a344154d556edafa56bfa8b26e412d044c943a1541b85f2", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "fa2e4f45c3486cb3582e062e0d840c4ca6f37d7aba29d2147fd281a6b5a85c24", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "77390290aa5019c6ecef19710bc2c8d975c81d659a778c9e0c8affc1dd39fe54", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "1f6de003d62ddff73bd4330f97dccfd0d712e959c43b72ab16b277805feeac2e", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "799f94dd60f42d56060805374d9a6d948e7e288bad16043990dde248c2613e10", +"T3B1_it_ethereum-test_sign_verify_message.py::test_verify_invalid": "2a36e6ab951c4bc4b79803efde458bdcb1cddf04d0d355f4908411c86be4f4cb", +"T3B1_it_ethereum-test_signtx.py::test_data_streaming": "84e38c0239f5da36b22204d4e751193eb9a784aa64095fca8262c9b7fa90bbb2", +"T3B1_it_ethereum-test_signtx.py::test_sanity_checks": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_signtx.py::test_sanity_checks_eip1559": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-ETC]": "9f20c6c824bd678cd0226bf9474174faf9a9ce05eef95249665386b716d507c7", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "f9a1a525f47267260d283602a6a3a1bf19d5b67ce4a7c038506991c4f5a3c0bc", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "f9b8ab3c9fe840a791769dac0e88d152d27453f6218d8dd968ae807bc35c80d4", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "f9a1a525f47267260d283602a6a3a1bf19d5b67ce4a7c038506991c4f5a3c0bc", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-Palm]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-Pirl]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-data_1]": "8f510879040b2f2a483a059787797171498f01a47c98df493b26e9a51891f0ac", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "9a7aaf53ecc0952642c185abcd22782464fe87a9a836abd950a2c625735cbf32", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "176f3b1161a2bd6d1e68b81599524e4dcb4ab696c498d26411afb92c19c40876", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "42b5d456d2afeecbb2b117e09a6fb9ae8aeb0451417dbe34a6c070c875a6a6b6", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-newcontract]": "03a5e386d865774560d2144d51dbe59acd442f7ea3e8b1a305b1026147b8a388", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "82eed184a42ef797e7dd1a1e9661c787e22a130aa79d8c229252ecfbe15ab9d4", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "1c554c9f99d1e32ecd717e83368e5f44e226188e8f7872bbed27387ce1181444", +"T3B1_it_ethereum-test_signtx.py::test_signtx[False-wanchain]": "9fd4a3baa973eb47b9b6899edc4635073a993c92d870e420ede75274c425ddc2", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-ETC]": "8ce6c35de214f6ba66f23f018b62b338a42fb9f7b888212817cd1ecbcd9dd5da", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "6503c64f98def7a3899c351cf9388c87f9010b5c5adef3067e23970f4316c358", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "7e1fe7857056163eb72e7933d010b46cdecfbf2be3e82546b4dcf596edb512ea", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "6503c64f98def7a3899c351cf9388c87f9010b5c5adef3067e23970f4316c358", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-Palm]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-Pirl]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-data_1]": "2e6218c2703ab9469e5a2e13a13c766c77c99bdff5ebeaaa83606f7bbfc97e47", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "cba5c9e6269efde79a5a737baa1ec159378a9d2923eb982efc80aa2788fa1f4e", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "00aae668a5582416b5ff9ebca190138af00862808b23ef220ce55d0218008abd", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "6af5fc07d42caea5161e41041604ffb853f1806391e14ba61aad5d307b7d4490", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-newcontract]": "03a5e386d865774560d2144d51dbe59acd442f7ea3e8b1a305b1026147b8a388", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "ad0e60da0e6ca7fb56b87862bc948dd6d9c9cf6bd0784a277a1544409ff8c7b4", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "858fc718b3672badc84016bb6dccbea602d3555a98fa636a90624953b9776d7f", +"T3B1_it_ethereum-test_signtx.py::test_signtx[True-wanchain]": "e1e30864ccc2f9390d4b1088454d817cdc2730fa4c00400e90136a002b4f25e7", +"T3B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "0ce850d7e437c29c01835cd0e99b663aab967c3065dae3673fa2c6f8286ce997", +"T3B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "997a0506b611b7e10dc1c4ce79a7650882876d69afe8d7f7c6162c44f7a29e19", +"T3B1_it_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "298cfe50ebcdc45d30efd1c7823af1ca1aad961be44b576b9081166a0b5a9a6f", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "afe5f627324bfa074f7e7456baec07d5c6f8c0d8da38391a6c64e9ccff3d69cc", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "2d5e01f168591a78eb35a60b80b0b01548faa0543c0e61f2ff559f079d9a95eb", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "73f8cf28191d77d02504f2664214ec962419182aad5697ac02b91a8e08b06376", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "6e5768074e20ffc8a07eefafd217954a46f7bc56ef1a588bceaafba237ebddcf", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "b111382e71122b2cd3474031e519333b7b3f36e8cc12c0082ad6b65825c8ae63", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "b4e72e035a147d1ce7311fa2551b6ab77e125995d5fca8d9b78bdedd749192e9", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "afe5f627324bfa074f7e7456baec07d5c6f8c0d8da38391a6c64e9ccff3d69cc", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "057407c8c7b8342ec3167e081e5b6cd2d2a46d508e35127bd9091ea7f38e6b7f", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "08d8cfc8adda2da71e145483127bff99944ff30efc329ff1052b2b10379f2b25", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "ea0599847230f63ee7ba010d93db2751b9dbc38e3764e119c60a21eef250a6dd", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "6ded152dc69622ec63ba01a3d64085c32f742d0a3a6232e37d67cccba0d26351", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "ae23ce969d72d4eb500dd31c52f0c99549c770d4be8088269235fa862d214d48", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "c19d87f36d336cf6957181df5b001ece52966e59df35e11cd4fc0f8a43980071", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "057407c8c7b8342ec3167e081e5b6cd2d2a46d508e35127bd9091ea7f38e6b7f", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "6fad02a140f701720ef30af0fd6e3c38080112ef2040b7f0132da66850ee9129", +"T3B1_it_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "6fad02a140f701720ef30af0fd6e3c38080112ef2040b7f0132da66850ee9129", +"T3B1_it_ethereum-test_signtx.py::test_signtx_fee_info": "1d51e5c3bd3e7836f26b33b1d540e516210386ecf4660bc9fb59cedf29344eb6", +"T3B1_it_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "fed15f0df9cf97c864b0f3c3a76c7315035eb3720f6a741b4b24f98da368ad4b", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "1a6bc6fcff340babcb0dda99cddbf9df402314570086006044b5a00c702fbe25", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "e0715e2ec9b3aa62040fb4c893e7445f3b539a461692d3404198476084253454", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "b0c8edda4b92d2e8c00c079da56608c0cfabc9019bcc9d7eb268aaeb649e00b1", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "18049e6f3555baa253aef65018eeee792e620d94df1c6be95eed962595aba695", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "4e663a338fde3275b5554918cae8cd360e4c397c89e088f246a9e0b946a177eb", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "6120ae31959f1c2f4f54a314a30924128791fc96edaffb22022ec676b3f8eaa8", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "bae0064e631e7d0a70018869f0fd20b0a6dc13ae1b15e3ec642b75181a7d11cc", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "e3c67d812c837448735b80de38a1e55d813da99e5b71567d4b594bc960fc5f93", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "bab3ab00d2a9c84bf51a8dda46a423614d2adf9e4aacc5af011a617a97466531", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "77862e4f49d5ef8f82045291a0c8f37dfb6f32db8f074a341bebbb35d7dfd96c", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "957e5f3e974027de4818d03a0a8e0a15ffaff2da0842e3d2f333941b6d58e23e", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "8fb20dda4496b03f84c4b90c982e6e951f3e9de3df309049f29d01ca1339a6e5", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "74f002930633add52e2fa4929a022bde441af7feb3b03f7fa08346257824f2e0", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "74f002930633add52e2fa4929a022bde441af7feb3b03f7fa08346257824f2e0", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "7889ff8359f7e209ba2ad86d1e720483eec058e35df51e11bb977dbfcf26f065", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "7889ff8359f7e209ba2ad86d1e720483eec058e35df51e11bb977dbfcf26f065", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "104aa67b97fa35ec738852ced5dfb3ba3a34d8bf353d015126aa13237a43c4f9", +"T3B1_it_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "104aa67b97fa35ec738852ced5dfb3ba3a34d8bf353d015126aa13237a43c4f9", +"T3B1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt": "bbe7cc560cc04b00da4d7c3cd75c289c871fdcbe6934be5e067733bf1df23e21", +"T3B1_it_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt": "774994ae44218123e8fcb71b867701676033288f2c7427d63508d60a24968896", +"T3B1_it_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_misc-test_msg_getecdhsessionkey.py::test_ecdh": "38124b24ea8acd74a155f11492298b31f2859b8f646379d06bb1bdcb3566f9f8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[128]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[129]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[16]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[17]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[1]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[20]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[21]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[256]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[257]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[32]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[33]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[3]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[4]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[512]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[513]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[5]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[64]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[65]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[8]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[9]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_signidentity.py::test_sign": "3c2be19346a767994a01fde6bf675e88961a9f5b172444b429f9d813f53069d2", +"T3B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "813dbb1bf97828110daa366152339774f8243554563c25fbc8d5ed7375415c2c", +"T3B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "1c25d110fc4564f8068df6ecb981908eac822c57d5e8b69ac08c6dcc76066b7f", +"T3B1_it_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "40d94fc44cf57f2e8b5c8d865430cec7475ca061e47c666e59f281ec9550e9a3", +"T3B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "23fcef31c60a9dd74ea07c221fe05ed4fb0d861e3533f9611be17239712ce9e5", +"T3B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "d3898b1b8c76003e61fca1f9945532844f40bbdaf230cec6120d11080bb996e6", +"T3B1_it_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "ce3df71a3196e4ea436bbcd3409019ccbf54e7c0a69ffc4f2eafec31af64ebfb", +"T3B1_it_monero-test_getwatchkey.py::test_monero_getwatchkey": "66a2ebee743bbc0e5f7ee3c3a903f446b7316ee6ccfe424643d3908fb5598076", +"T3B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "2d25d0e33d5db3039926b4f42564ed4017f506ec15d8dec7c9deb90e07f8a5ae", +"T3B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "d0181ce67631c53739ff7d0ba38af4883cef9de5885904750ee5d41323ab6b42", +"T3B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "ee5af54db577078b52ab9ac6e1d63e12109865dc4ee3d56b22c538f294dc57d7", +"T3B1_it_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T3B1_it_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "1809f7fddf022da5c48c4ce14fee7eff04a14ab82562f3e69c05fbcc85adf4e8", +"T3B1_it_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "a5a0eef5eb597977bb3daab748c985fe8f1f0343abb122f3991cfd160a3744e3", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "39c02b11f23111b3b0b9747db392ba0be0abb78279a53cc6a56bd278204f8cc5", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "e6a311a6f7c3e53cfc4fdfa966bfb1ebc60cc8b57119c4e71bc8406fdbaa8b85", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "bfddc5f4af8e8b63cf4b9b52bf439e34d8ff73a87ad67a28c8001974f1fa2cab", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "e673ccb9332a8a3b1b481782cd707c2fc00419eb3dd727013dbbdd4706d38c07", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "01a9d82276f3ef869b4825d574f94f7fe5a6dd8ccd72a4930d7501e129d0b6ea", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "5c36ce549e5d44b549f34d7f7fd755bc4de2259a0973e0849889f5fd9db05703", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "0f893ad7ec7d7cc9eb74fb01e05f49823ec1638dabfa4476d93adac43a659db1", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "5c36ce549e5d44b549f34d7f7fd755bc4de2259a0973e0849889f5fd9db05703", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "0f893ad7ec7d7cc9eb74fb01e05f49823ec1638dabfa4476d93adac43a659db1", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "8d722b2113a3088935710473164e404d6767c60e500db9f83b1d743615068b78", +"T3B1_it_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "2b998548eb9022892044075d586ab73341250df9bbde8d4ec75de6f2a8097b41", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "8faf0077291123e7593913add2c9fc845ea161ba8350b6d29d4279833ca93a18", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort": "39c02b11f23111b3b0b9747db392ba0be0abb78279a53cc6a56bd278204f8cc5", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "0efe3aed805697262e1d193c025210c39ebb4063846671382e77855046e543fb", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "8b095a8a2776c0d7443de68b7a730775cd7201bcc0e953e3c2a2940d47add19c", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "54ef768cde564a4ecf773c187a3d5b4e92bcf6517f793dc7155e731e9dc20c71", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "d73349331d3b43cb20205a86b24436b6312cf78e0b69a174cdf1502dc6196319", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "a690bca8df6aeeab7438a5009f9a90bde7c7d601eaa2938cf4bfdfb9dec5d830", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "406e61893b10ad664269d0cf84e6c3e7847c26c55e4c6a187b95d980e5b131c1", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "f16f5b3aa7cfd75b1c152907e411df627367d4a7546ce6c1d2f712feff2419dd", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "d8595e4461b5b05b5add0dfc7bbb0b1d115585adc9dad348fbf895f5882f38c2", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "65a9da9c24e9dbf2b3f24550dbe40434efa1710d96c210b6af13e9f6d74469b2", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "82b725004a181e172abbabb89fa000bc178e2e347c8f06b2c99de5d532a16799", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "8b6c509d82d5d18b0306d772a41d139469df4da616ddf21bf0b0d73734058917", +"T3B1_it_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "42be69d08de15e1c32e84016fe1d9bb2eb1846cd3e39b0ad14c595e53f4ea5a5", +"T3B1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "aa2561ebc6ae1c440bb666b187f2043c05c76361bd89a162fbc25ccfef752ded", +"T3B1_it_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "35348cc68c2ed72967ba99bb9586f41bf3b555a3009c7a4ab4d171bc863769d3", +"T3B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "b55c6827353f419b1c57db1f6ae21721e6c6b078d024fe79eee7daa34dc334a8", +"T3B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "35e37151923451a7e92d5a8c427de7b3ca66a2f9760670fc4646338bb56325f3", +"T3B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "2bc220e6400f990bd6bc4a52b218f078c60bb512de8ab2fd08d129eb21909c89", +"T3B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "276272efd2a3e62ff1f1add20c4b3dc80abbe452c53a235c089a9661f04bd893", +"T3B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "9043ab91c5b8bde7851b0054db1ae5f7cf99cba1516a1f8890db4bdd55fe3a52", +"T3B1_it_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "a690924628577ec441361ec70b0b2177b1200be6848575394e9aef017944e628", +"T3B1_it_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "adbec66b5c4557b1e076fb6a29287e6cb19c91cc65da4fbede5d77c7d042a3ce", +"T3B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "c71f526645bababa8d4e8c043c8795cc3679821208f28526397b38159a4c556a", +"T3B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "776068360c96fe8f29c27bbcaac2b2b47abb2245ee00925af7cd549051e8df36", +"T3B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "f947dfadaa07d2fc27732db2baa257356aa22246d9a8770b5dfd18cf57c2d3bd", +"T3B1_it_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "f9f377d5f4edb60a0e28475769ca738d9870b8349d49cc225923087f633a6a3d", +"T3B1_it_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "29aecf4d5afc15bdf3924322542babd67677b0878b33c947957544bb9ed50701", +"T3B1_it_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "68538958214815677066afc4f877ec609bfbd808a62a754876387558ec742eb4", +"T3B1_it_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "821347cd3c3f49de4941704eb73b00bf5c2a6ec4a3bb97dd807e9507a924e44d", +"T3B1_it_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "f6cd543e87cac04bb97c78ce4ce33800f1e8ae515e52f5397dd77885121938f3", +"T3B1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "5e97e214e32a14cbeb064e3d0d14831e53a4b6745109c3eef982ac29222ddd39", +"T3B1_it_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "8ca5adf4a5e79077bf229c2b3c483c4ff0a76726b6bb8fe3198e6a1772f45762", +"T3B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "b64465968b57ca2acd7f53700c4caad0cad196a3493164ea036188e56e447620", +"T3B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "ec8fa3f6821bdf49f2da76f4c845fccf0d539bc43a1f6ff3a302ac1889435e7b", +"T3B1_it_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "14b3c12d2b4b2fc36e72710480280627ebd729c50e991665130c8055639bd10e", +"T3B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "e76f2410b7795ae76c45ab716e2c4c52b1ddca51d72b6c1fe9e2106a79d28fec", +"T3B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "881cd6e2326bcd6d4358b7fe9d36d182bd1de6ee720fd947078d37458bbcc834", +"T3B1_it_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "7463d6359a997adc5cdb65a527c6de7a5169e955c52012a45a8ccd550f43f4da", +"T3B1_it_ripple-test_get_address.py::test_ripple_get_address_other": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "b960c7b6e05f64804e2704fdc903b76f35bcd368253c0490ba7281592fb3f660", +"T3B1_it_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "0ace5d536027e71926bc86c0e3ebd6ddcaa95750ff066d172d88ff8f909894e7", +"T3B1_it_solana-test_address.py::test_solana_get_address[parameters0-result0]": "88265572ac4438fda26ff8c6431f16f99f85026d5c7f6eed41ad094b61d0fece", +"T3B1_it_solana-test_address.py::test_solana_get_address[parameters1-result1]": "97b741f769aa677fe25a96c5eb5eddf7b7aaa1286e41ea869062f5314be4861e", +"T3B1_it_solana-test_address.py::test_solana_get_address[parameters2-result2]": "4611b11d70d39d1fa4320a2e8de1c84cdedb94bd7ff50a76b2062a700c8d8af9", +"T3B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "9e2afd26651708e73152235378106fb9e2d393cae29165d1805b5feb4f0b6da8", +"T3B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "8898f8f797f2c38413b1c279e6a5e70e1eec526cd00cb1f0a991cd44d94be5c5", +"T3B1_it_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "c9e5f1caf89f0351174d53bca4ee1f3dde4fe849774c7377c49a0c2329ed9f5b", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "e1ceda2fce49b8ddb1f2251be880f8408e52da71faeed9a76acf18917f04fda5", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "560f85d51103ad5ab2d1cf0ef606a35da8e4455d99453b481887ef073a6b52b1", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "d5186584f23bcfad4d396155f79e9c5d31b79f9e7450d6dc01be8ba7336099f3", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "8ffc138187edf2cecab6a971598b9a2e426bd1bb343c3632b3d3ed087240d802", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "8aa7d2e1d68a44c6eb3127b61c5cb9ad93d66cbb97950c0a4a7edbafb696d325", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "55f983c925e037fd6e0ad7111e945b01c5ba6c71aea521fe6a6472261fb2a72f", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "d9c2ee50dd935afbf4b03f98e64012fe65c5f24e5bd598b416e6cc56a9251b7a", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "17359d443efeff5446507f7f4e512bf0e2aadcd9e706be1ea3da5e3bfa6896b5", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "427877bfb97b97c20e67703fe93ea5bf3983c0edc16f2b7adacb531e518d1226", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "567bdc33bd18f0bb640529bdb73e6951815dbc47b4140bb3c49fb50356bf20bb", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "d169510b42851a2224d5145943e580db78278bb64b77573da3234e972453db87", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "5f9ee63011542448d469bcfc23b2a76f0ef1b16fdc12fc32aba0c53d0eb8bb03", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "fcdbf2654202bb82c04c5067babe72dc13932a8b0bf2071b8f2249acdd765576", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "e38a651605e29de9dffa8a77577575ea4aa7df05890fe6d6cf35ed1e7ccc5ad6", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "1b8985fa396fbf953c5de934d3f93bc772af96d1109c770e89e1a6e5ce7b113a", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "2bd8f064ad2fe303d6235e924572d147eff7dadd8ac1a7b5097b1736e43e7967", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "5ecab906b8d64cf018f1582d46b53a41e7a39c33fe2f24d155abfae37004b596", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "84b35b22f081a7fdf8c5d4a739b360ac38cfae7d3043118e243cf2b72d593454", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "2b3a66717c1b1fcaa0d31a6c5a8c918a2022d55a7ef94d48cdd324000c8bd140", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "09c1d2e1f66e9741bea9351f2178c675de66aad1c799ff0fbc41aee204847964", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "3946da684cc052ddc1ba42bc0ac77c6fa9f01b643a3dfd5bc4a5d7f9b3ec1dda", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "07c1233fe792cdaa12707eaf79b65b2cc173dfe7aa25a716111d612e0689276b", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "abefca8c2e25fbd67b9d025a4b5abb69bbf440e499657d922409861ae23ee5f2", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "9fdcf301d35505324a30cf59e547b022f903f5cbff889982147bd602a484c12b", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "90b2d7094a9afb2d791df358432743a1f85b6630b422384ab009584acea4589a", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "44ef6afd4b90029c5279e138a9cf5d60f3887387c1c073dcd5ced5532676eee2", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "bcfddd5e11591748f766fae0390d8318ccedfe63d5d85e4404371879f9505858", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "2bc300ca0a8e1aba1accdd5d5012837661444ee73bab3960b747a1ad94e8091f", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "63eed1ab64cba7cfa85d98c57073138cdea1d0c7225d6241b97d02bc218c1ee7", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "bd68df7e5c8606f38d9ba5b9730e228d2513a2d7c858b281b00d6152e56e72fd", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "3352be97b393e858331df70619dd86141644851ca507bb21264f10f7e58f2823", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "40a12af7dcef0923848dc1a915d7767331ebb124a6ec271a87d48634f2ec4788", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "f6bd370c9c37653e8f098e712c385f8eb43b0b76deb4887147067585766f984f", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "17712eb9253aa8fe02954c24035e39a675149e5af8f595937b9cdbe10342d160", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "b55e60c8942dea463053bd854083da63adda8ed06d35b71a0236de96d7e69e16", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "b55e60c8942dea463053bd854083da63adda8ed06d35b71a0236de96d7e69e16", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "6fca8ad408ca6faa32a0da5358e5fc938b95b53b623b5dc584f01130bc953935", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "5122e547d5753da2beabdc54d377bfc0c77a7839714872012d8116068f5996c4", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "c1e1c44fb27b1f505ce1a30c0eccd5a74f2fceab3dc1f1397fbb7e45b0b4a99f", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "3ec8d300e2f40e8a9ab637ea59175ec493f63c1c9ff3fc0ad88b114daf9cc57c", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "2430ace39bd6903555c67f6bceaa6249edff4b9522a92accf4f0db757e48191f", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "428ff7d2d4f5987f90a5973484c8803f73d2b6e3b98a99a237721980ccb7021c", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "268907e6a9b3b3c9ad0c0a2d222787e5935b26b0d2726e6bb231fd29415d1084", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "912a2a9d72c257a7e75e4b6169f571419f68afc98e124cda13751d1e4704d14f", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "b5c89be1cc39f9b6627a72c6e9a172bc0691ca1d1eed7211a44494a03da68b5c", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "3a9fae05eb1dcbc8d914986766b68d0a252d4da914ad00f15a2080ad85b4605a", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "bb68d15daf84bb59adb520e273e764c7377e1477c6688dabf8c146bf56e0d899", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "f0a1423d3afd19e6f8164f4192d423e071af39118541f3f52ee84e8a426d21a9", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "8423a81930aeb502a9649240ad2b4e271dd2baf39ca91735d8c16bc155bb77ea", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "9f8495a3fcfc59c126c386146b736715253366ea0241e34e6dca4c77b705e5e4", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[split]": "95222b1302df43710aba8559bd306ccd2f333ecd6093b355d5ccba849a23d028", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "38e788673ba05bc275ae1128ce97b36c2d33f2accdcb43b6b846f3808a30e1ac", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "4e2d7de1381f1eb26a1d83fffae5a60771a56a1c80aa795a5bfcc2155017cd25", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "88dd42e3768ee84f09e5ae74681333d87c7c5ef14cf2b0ff9dcc7db959f4854a", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "1f8b29160ce60cc5ad750f45acd12bd4239360678cab54eb0f4cbc0c64f55f46", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "953b5e95c35a4d82e8ba7d283dd35e71bee7c0f16ce3bddcb9b038dc23d3e0a4", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "566a496cadaaf3fbeb3b0de23b61242549f72d8d2d7df00513d199b9c673958d", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "e9560dc511d83d4088cdac82a4d18528f1e3746fa0a675c517951ccabd437149", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "02a3ad799ceacda49b2247be7b814ebc5fd32ce213201ca88e3aa47cabe160c1", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "918f508836eade8986a2ba88f4bc9f7568c2fd8429961dd384a3f3b20264cf88", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "94ef08635b838f1f2e9497003727c7266b012a041deb54f3829ebb742a022d25", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "19f8f0d0886d58bea7d9b29d15e51d0f95c6451175dc5d419e943e7fdbdb3602", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "61422ffa23f722cb60f997b9353080365650909a4df4f82e500b6ba062c5d850", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "aa9e0542bd643aa0fc4ad2d8c63c0551fef22775e46efc22d9fff6ba022426b4", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "7441d848723f279dffd04376e202b5e5a96f511f322478b68903b616ceded649", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "71786aa370a8e67c7ea221e3c4a780b60eef93e97f92a60e4503b7cac8f2d236", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "635e22da8845ae1651065cb4efb08530279f0a2a64765eb40830e48b388b89b4", +"T3B1_it_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "1784dccc7fa6d9fd61a525bba7139098fc8e0bd523060836228b4486e9af9e82", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters0-result0]": "7787c313992849cf6beee4953afd20213105aaaf636d8cb9b5ab5d941f1cab7b", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters1-result1]": "58fdbc1aa71fd5a0d97e01b00f0c59bbc1f7734dd7bf4e8afdff7f22c10fb951", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters2-result2]": "337f16416c3380e0fc8e931e75539475ffa63e52252d94083dd1ab426fe8d3f2", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters3-result3]": "84a230ea5f70db738da7c5b706ff5635d2421500b0274a21929f3aeb616f5780", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters4-result4]": "25165e77e433a685e86bf6d82b1667b0258c47a98fa989441d30c9f297b2a0d1", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters5-result5]": "6ca043d24c1b31326c05c3c68330c1e9730dcabe9ee1fa7ca4007aa8a2758cb2", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters6-result6]": "56cc2de06970d7f5d1908711ec9ad6cc0e964d6f5d126f77a0ccb5d519b74073", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters7-result7]": "cac08381e7be754d94b1ea1f60c306baff406b354b5d6a70325541e383434110", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters8-result8]": "a62c85fae2bc134a2687aeb3e019b1bd55c01d7337ad1826d3f6be888b89d21a", +"T3B1_it_stellar-test_stellar.py::test_get_address[parameters9-result9]": "7c2cf7b1d4359c58a3710b49a12242a2c494a29b6010ece24163672e60df511e", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "af04ea81ab5dfc5a6e96bac4ccefd587192e12afed1386a221af5e28460d080c", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "0444f7fcd5d3b984fadd9f5f01d2b90bf4fb3517b872421a67ce9eb87969f91d", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "5dfab4ef9703c2c5afe696f93a728a398a216cdaaf866843948d0732dac7a2aa", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "31dc86871136d08da2da6c45adee8143a4091a71215d2dbcf54c1aaaa43a4557", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "ee5db2d0b7fa43605a1f3dd8b9257136cce5979a9aef03d93c6365394c53d1d2", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "3ff7887140dcb51b662e5a7734bebc8a4c25bc965937a94d89e01b1258f91251", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "fcc0d607d9cb847696355778d221000d7ef9b1f42c21b43dfca8d4725cf51cb5", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "6d70533651cd6859f0e02057d627d5d62345e5815f31ee596123278ed5db16bc", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "e330799c26574678688ab61d056fe3ad84a488f1db03b091f9553658ae898688", +"T3B1_it_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "c2cc894334cbf026669e72cff2ae6611b828a3c8851e7857188223d2d9fe5ebd", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "cf8c648f1245f0e9ede65078374619681d54b508fbf9a7532541f852ba1c131e", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "9293c00c18ccb125fc0d12060dc7467dd9b37440708a3d650ad4d6c43b916c3e", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "ca618e31a3fe57aa9bde74a07cf83192266923517a4deac722ee98a7044bd940", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "844b16cf6b433592f51fe5d73e00784c0e1e1848852bbe9d42304700efeb9c64", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "7d18f33d82cf891a933166d9f0630c52ed5d238dd55cf9ade2c2557a8b2b344c", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "481fc9f67538df0b9082f614f56cca34cf8755e0462361aa768b982d20855315", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "fe78a36263716003fa214f7849273888e6b29617587cf907e6b60bbe88fa90e9", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "59206078a879a2a95316704a4c6af31b9c3788923b6c9549db1ea2521bea99fe", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "4b243281049ea32b50edb1aef63acff40ea3d0e9ef87df62e0598d11acb47ecd", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "48d5ad24fe65a3a8047f3e84ebee171e0b1c073f8c4ad712ca7b9a9a46c038f2", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "5bbc98c719fa9bbce05460982b6ea62078d6ef91ea5249c7e4adc55e72fa4215", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "51a9ca5d69bad27710d47a9f396ebb4c8c12408e2c9a997c94090dfa997ba899", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "ee41420b0d7e36b8a75f913dd64321b271f5a4838fd0e919b1985b04e648846e", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "01dd90de9d24132591721663c7c1ac3b309a3c83990aab67d99ac396107877cc", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "dc70f5313ceeb59c2e8abebc79db9b5b23d8e5755ed321fb51000f5a65288eee", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "3aefaeb53a6c3f8c0718170c98be179497d17fc9f1827005702b01eb03256f63", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "7fad4ad197a2d2f1cbe57c55fd0e097f13ca923e249175d2c23536f8d2dab366", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "5306ac73645eba102a440630e2802ac0aaa30cdab37e5b2361d642c5934c8265", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "d84beed3bf387ab8818e1a594716227294c9be40453ae05e7ce08a1a11d68b42", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "4dd89a7e03f243206f8f24a31c1c05bd91f171d3d188851c868b899c32ecdb87", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[memo_hash]": "63d16f2d84352581561413071955e4a869b199764f676878612485065458f04d", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[memo_id]": "fa9ea66a169d7e8036ecdec74ce60a438a70627aced8579ad695d3390d06dae8", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[memo_return]": "3c909b073cdbc1a9d9a097fdc3c45be76a4150b9ffa858a0a886aebef98e1fa9", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[memo_text]": "792b4a296975dffa2c4ae73ea275887f4e31bb677509cceab66be4d8bbb0c06d", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "d3f394b2f2a9c25e6062c454658c618216e22fa2f92c1d85d227496864bab863", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "0d5bcf329ca913e62ef10b2614114ee38a3da7e5126282bb54634424b8c9eed5", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "0a46c93eb5cb5ffc54dd1d73c44217d5126bd30a78dbf48e5946d723e01f4ea5", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "3a79068c0c548486b25f10c365ebb90a60352aac94b764b1f7c3f17c09639eba", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "68f5ae3d14a12da0ed285bc596b99ed9660d56f28f2f7af7f1dbd2553f5645bd", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "7fad4ad197a2d2f1cbe57c55fd0e097f13ca923e249175d2c23536f8d2dab366", +"T3B1_it_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "bab6285983c663e3c580465e3de58d4f79097b92ffe309be71d4f2f8e7cc0f03", +"T3B1_it_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", +"T3B1_it_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", +"T3B1_it_test_authenticate_device.py::test_authenticate_device[]": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", +"T3B1_it_test_authenticate_device.py::test_authenticate_device[hello world]": "fee0f64e3102d9a960a86a6bc4185633a60099275e6a4d2ef1b6da1f2e59e109", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay": "1620a525ef11ada590262bcef44104dcd4ea544f84b0f9b2f8b07154a175a142", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "db8190f29206fc8f6d8b07d3c7022353aa659c442d20896b5e6ed4b4293737df", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "6a602ca64a43c58dab6ca6d48d77e18af3ff2fc59fd645383ade25e8728c3af1", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "06f9b3668d479cc9dabcd0bda63c9aca2e164b1caf8267dad7cef020f457883a", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "a027cf0a08a704f6f16bbec08179403a02a5236071ab11884a57a146364689ac", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "feeef6b114e9c68d5182049afbaccfd0d8506331105de5e390cbc564a92465c7", +"T3B1_it_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "95f3f70c3c4d0aefe286636a60ada3ac121fc4a8b17c311d12306cca513b79d8", +"T3B1_it_test_autolock.py::test_autolock_cancels_ui": "fb63db25ce407643f04e78c73f871efb32a84fc0a1483edde83a186168ff809f", +"T3B1_it_test_autolock.py::test_autolock_default_value": "40893c04a7da0734bbcec231edc1b4ae604fd190ae9faeda29874bf1e6bb60b4", +"T3B1_it_test_autolock.py::test_autolock_ignores_getaddress": "aa2017c703150e346b347f759b62bf3702b77a07e7b251dc61558cc4d6743d53", +"T3B1_it_test_autolock.py::test_autolock_ignores_initialize": "aa2017c703150e346b347f759b62bf3702b77a07e7b251dc61558cc4d6743d53", +"T3B1_it_test_basic.py::test_capabilities": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_basic.py::test_device_id_different": "28148dd7829fb9d1cddc8a9da01f97925bf8c5e6d06b6b6c671b1aa0c1b53c9a", +"T3B1_it_test_basic.py::test_device_id_same": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_basic.py::test_features": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_basic.py::test_ping": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_busy_state.py::test_busy_expiry": "a43baa6dbc63e89d9a216ce7a48304497a22efdbb9a4f6428f235714ba32b808", +"T3B1_it_test_busy_state.py::test_busy_state": "2951b93f6ef4d7d5974caec932308e364bac56d52827e8245ef11de6e6c33a49", +"T3B1_it_test_cancel.py::test_cancel_message_via_cancel[message0]": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", +"T3B1_it_test_cancel.py::test_cancel_message_via_cancel[message1]": "6dae86c3d25fdc77e95789757750e41b183ccfbe4e2fe00908232fb98d806a8a", +"T3B1_it_test_cancel.py::test_cancel_message_via_initialize[message0]": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", +"T3B1_it_test_cancel.py::test_cancel_message_via_initialize[message1]": "6dae86c3d25fdc77e95789757750e41b183ccfbe4e2fe00908232fb98d806a8a", +"T3B1_it_test_cancel.py::test_cancel_on_paginated": "f27aad54a38eb7716fece2c7b94971ba5788ad9449cffada356beabf4707394c", +"T3B1_it_test_debuglink.py::test_softlock_instability": "7ca44316b13797bc9d41ab67cfe41c899ddee63edaffa5d07fe0938a6e1e5619", +"T3B1_it_test_firmware_hash.py::test_firmware_hash_emu": "1af7ba0f0782c919cf0db301a5c4862d972e633afca7d849598c55c751e25950", +"T3B1_it_test_firmware_hash.py::test_firmware_hash_hw": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_language.py::test_error_invalid_data_hash": "bd807f7a50dbb3423cb4a6da1d51d4cb9cc9583d89f69b93e7fe0264e9be7f08", +"T3B1_it_test_language.py::test_error_invalid_data_length": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T3B1_it_test_language.py::test_error_invalid_header_magic": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T3B1_it_test_language.py::test_error_invalid_signature": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T3B1_it_test_language.py::test_error_too_long": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T3B1_it_test_language.py::test_error_version_mismatch": "4933d67836d0fc2c5135b9f854eeb211be377f34ac9e1ae5e21dd328c25dc1bd", +"T3B1_it_test_language.py::test_full_language_change[cs]": "f3870ddfd0efd0caabd429071eba98cafccf732a589a07eeace9b6502734ae4c", +"T3B1_it_test_language.py::test_full_language_change[de]": "b7fcd89dbf59c84218e81bd692ab76807e90f792712ed533ba0e22023af9c84e", +"T3B1_it_test_language.py::test_full_language_change[en]": "0d9c6c92b769fa46ae13bcc27e7e16a0293dbeabc12592f83a9075fe42064608", +"T3B1_it_test_language.py::test_full_language_change[es]": "354c9147029bcdba3621505220099b3a3e241b0405a570e161a4feea4f2e34e6", +"T3B1_it_test_language.py::test_full_language_change[fr]": "0f3cbf48f86b94c8edef935208e41429bbc5ff61770055118c1ae22d757e5502", +"T3B1_it_test_language.py::test_full_language_change[it]": "2ddf360b587607cf6643b6f72f90673399b698bcaf6907991faab36d39d74aff", +"T3B1_it_test_language.py::test_full_language_change[pt]": "4d5b708d18a151d6315fd0a000e2a0c18fe27fa12755bacf4de492ece76703cc", +"T3B1_it_test_language.py::test_full_language_change[tr]": "e5c0a15460798b46901d481bd467c0c1e05849b329268d46bb81d1218fc3e96a", +"T3B1_it_test_language.py::test_header_trailing_data": "09fcfff480555398ed8aec63ad3141a7e6dda37d935addd1e0fb3ffb647df1a9", +"T3B1_it_test_language.py::test_language_is_removed_after_wipe": "faf54ae3f5f800baae23df593b9d81a22351b6ed249c4e34b81ff15b2158a9b0", +"T3B1_it_test_language.py::test_reject_update": "96b815d4cac271041385c7cd155c1e52b60c145081119e6d6d01ba9559434ea6", +"T3B1_it_test_language.py::test_silent_first_install[False-False]": "2bc164388b73b2e6d010d602e123e660fa77ab4d21057e66a0e6ec0b369e99b7", +"T3B1_it_test_language.py::test_silent_first_install[None-False]": "2bc164388b73b2e6d010d602e123e660fa77ab4d21057e66a0e6ec0b369e99b7", +"T3B1_it_test_language.py::test_silent_first_install[True-True]": "4ac422ac6c2ef729ebc07dccb6294906d28ae9d0a3b9b146549d30169b462e7e", +"T3B1_it_test_language.py::test_switch_from_english[None]": "5947cce7634a715b9ad2cbb3fff2ba68cb8d3c5dd32723ea5225e5312b0dda34", +"T3B1_it_test_language.py::test_switch_from_english[True]": "5947cce7634a715b9ad2cbb3fff2ba68cb8d3c5dd32723ea5225e5312b0dda34", +"T3B1_it_test_language.py::test_switch_from_english_not_silent": "3e6c18d955fcdd914b4dd6756f962778657e9a51ac7ece3026ac65c7ebf1340d", +"T3B1_it_test_language.py::test_switch_language": "994a8889d07eb83c306644683dac47572f015704c111a8651149053bb4958897", +"T3B1_it_test_language.py::test_translations_renders_on_screen": "26f48e282f474c09323352755aa9fb60c585fc1b2b9806acb17775764065f718", +"T3B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "8ec01f844fb632a6fb7522979c686a640c07a5353bb6b3a645cbde525411d4d8", +"T3B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "96f381b0ee8e95fdba09e1948af3e8bc6889e28c5315db9bbda2e820bd2ae093", +"T3B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "0fdf47f34f04c39d5f7a676a61d35ea0a99e7753045a78933c790c9d161ae804", +"T3B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_msg_applysettings.py::test_apply_settings": "cccbb502b46e5d7e68de74efe0f8049ee4766d04d49d92591a4dee433395632a", +"T3B1_it_test_msg_applysettings.py::test_apply_settings_passphrase": "f2cc69b44d51e653dd7c9c206dfd775b34833e78e3ee51b99498fd3871639fd5", +"T3B1_it_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "89c7c427c7b15de0a353c94c871beef3caa60baabb16b574b6e180d6e43c4113", +"T3B1_it_test_msg_applysettings.py::test_apply_settings_rotation": "26d6550901310635764f2eef7d007200fbaeb9227c8befb0cdca5e080ab8e510", +"T3B1_it_test_msg_applysettings.py::test_experimental_features": "e1c48dd8bb5f7f19d3be94d1fc15dd76e9a1c12af66c5f4b3a2169e4f14f9f88", +"T3B1_it_test_msg_applysettings.py::test_label_too_long": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_msg_applysettings.py::test_safety_checks": "c447f15875f222ff12893689339feec30c2d83ab152354c04fd99be51b40d450", +"T3B1_it_test_msg_backup_device.py::test_backup_bip39": "ede5f53eb1fde58f07c4098e0b96763af96e9b3302e7205f49db24d279cd5218", +"T3B1_it_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "e9988de3ef593ac1963fe914f70c13906aabc19d6299c0016d49caf78314afc3", +"T3B1_it_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "332e112345178e4a903faf08ea07e8be3029f11abf5f7e982413c5451a580f32", +"T3B1_it_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "e9988de3ef593ac1963fe914f70c13906aabc19d6299c0016d49caf78314afc3", +"T3B1_it_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "2d283a8f0a92f2e44f2580b963f826ea79476e61aa15b6c1ab810b6d9f202529", +"T3B1_it_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "8510af6777550c685a9341fc0f9f1f1ea3d066594fcaf85f267f1fec5d3effc5", +"T3B1_it_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "8a704628795af23512414f9ceac567c4cf466abba2c311696a0585dd5eff1083", +"T3B1_it_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "eaa6a63f5a72f4c701a7d6e80edab2d86026fdec13a9328cc9591bc90fffff7f", +"T3B1_it_test_msg_backup_device.py::test_interrupt_backup_fails": "255d93ba49c767ae8a2c8dd00f30d10f608363743b28372aad5f9d41d01a9991", +"T3B1_it_test_msg_backup_device.py::test_no_backup_fails": "60c13acb4f8e40ee32f9d01415cbcbd75ffcd6a4015003d93562e84c3901a62f", +"T3B1_it_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "14772eb203fa1b537e56d3c604307d2d6b4a085988e89df3ce43a6de05b4c292", +"T3B1_it_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "e59c861496561220277aa8dfad12d041e52f0d57326e7440c470d27fccb98705", +"T3B1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "3bcb71795f8941a819bfdcf88960e6d48b8517a297930db3e0cca6abc94abff0", +"T3B1_it_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "066d38b857662ad230ff48c6150d11a702e8b43583a88747dc8914d27b828ce4", +"T3B1_it_test_msg_changepin_t2.py::test_change_failed": "12b9b6e9788ad9a38a664e3ecd1d4c3798b029ffb8decc23bbaf5dac18cdbf21", +"T3B1_it_test_msg_changepin_t2.py::test_change_invalid_current": "4566ec9383ca58ae15cc243c94d9112339c969363d8893c054c90654c62aa5d0", +"T3B1_it_test_msg_changepin_t2.py::test_change_pin": "6b5d47d9f5f91381459c8acea02b4fbf017f8f1ae8599c714cb0fea1fd37ed4b", +"T3B1_it_test_msg_changepin_t2.py::test_remove_pin": "867c038818b0eb2b7715200342fb6c9b4696e1df1cf6b0ef1c38a7c6a9eb8cdf", +"T3B1_it_test_msg_changepin_t2.py::test_set_failed": "636ab41389b8c0ab77dcd841b5d772424b8563b8fd41bb03f46ae3b74ccaebe4", +"T3B1_it_test_msg_changepin_t2.py::test_set_pin": "8916fd50eec39190ba1136d8a88a14f67f53d96ccb5241cb1597e2965892a7f8", +"T3B1_it_test_msg_loaddevice.py::test_load_device_1": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", +"T3B1_it_test_msg_loaddevice.py::test_load_device_2": "7f3e10bccc07970416b3198b6ab0409f678c32070a8028e35ceff51f30267ed9", +"T3B1_it_test_msg_loaddevice.py::test_load_device_slip39_advanced": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", +"T3B1_it_test_msg_loaddevice.py::test_load_device_slip39_basic": "be506ac3c6bd20e8a3823c096870d0833b0637ad347b6f4906d7a1d9e094496e", +"T3B1_it_test_msg_loaddevice.py::test_load_device_utf": "38beabbb411d83676ea7fb415edacf5373115dc8611fab88fd297611a05c00e4", +"T3B1_it_test_msg_ping.py::test_ping": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", +"T3B1_it_test_msg_show_device_tutorial.py::test_tutorial": "5f37ff792b289d6dfad0eb3f378302df46ea6810169288df869ab5622a87e94a", +"T3B1_it_test_msg_wipedevice.py::test_autolock_not_retained": "db662f1c2efc3aa108f79d03412c5f2f571254058d181cb1de1223b52485cd0f", +"T3B1_it_test_msg_wipedevice.py::test_wipe_device": "28148dd7829fb9d1cddc8a9da01f97925bf8c5e6d06b6b6c671b1aa0c1b53c9a", +"T3B1_it_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "3d58a61e52062926fff5708cb4f106e10357b38e8d2d60f723ad765600f92272", +"T3B1_it_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "3d58a61e52062926fff5708cb4f106e10357b38e8d2d60f723ad765600f92272", +"T3B1_it_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", +"T3B1_it_test_passphrase_slip39_basic.py::test_2of5_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", +"T3B1_it_test_passphrase_slip39_basic.py::test_3of6_passphrase": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", +"T3B1_it_test_pin.py::test_correct_pin": "5b9cd78859061ba22cc46372b5b71a24fead0d3b3d88573ba70ddf7685659175", +"T3B1_it_test_pin.py::test_exponential_backoff_t2": "9403b96a25a6bb91edabe9348e2ef008439a871cad918563e49b09c06818b2e1", +"T3B1_it_test_pin.py::test_incorrect_pin_t2": "238fcf8c10411bc03b1036538fca473df070daabf29f253af12fdd058753f2ae", +"T3B1_it_test_pin.py::test_no_protection": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_protection_levels.py::test_apply_settings": "987178acbe3ee23cc515ec3f4f400f4fb45f46736e9e30ed4caf3c8574f5efa2", +"T3B1_it_test_protection_levels.py::test_change_pin_t2": "86aa1e9017c224b0a9047f1f5e34317cb5f648a5f8fbbe73f371363553718435", +"T3B1_it_test_protection_levels.py::test_get_address": "50fd69b07068ce124a1e49b9247a1f447c67c4ae8fbd80f09aaa49d25139ad1d", +"T3B1_it_test_protection_levels.py::test_get_entropy": "8c4d6ec3bd1fe2eddc4cc57c9b99773998662811d6d51c007e89879a2b3045d4", +"T3B1_it_test_protection_levels.py::test_get_public_key": "50fd69b07068ce124a1e49b9247a1f447c67c4ae8fbd80f09aaa49d25139ad1d", +"T3B1_it_test_protection_levels.py::test_initialize": "bf2470fa918e8632ba457298eea347b3885b1fd2b42c99f4f41db1b8fafef32f", +"T3B1_it_test_protection_levels.py::test_passphrase_cached": "b17b00e462b6a02e4c42dd229c17a6a35925e806b9f7289ebdcd8fbf1d64961a", +"T3B1_it_test_protection_levels.py::test_passphrase_reporting[False]": "59a82cd7ec5edfd68ee5a3957014f8c006ecd7e0c303549a6b5abe92a25e1c2e", +"T3B1_it_test_protection_levels.py::test_passphrase_reporting[True]": "6774de46569a5a0ab6b7708d79927b41b017e1b42b17c069ec38be014ead184e", +"T3B1_it_test_protection_levels.py::test_ping": "d1205f27bf33f167ddb9d58ff0a246eb5b9486007257c9591bbfcdd4ee3fceaa", +"T3B1_it_test_protection_levels.py::test_sign_message": "279e75aaa3a4d7e054ce467001a07f7d23fefd29c7daba89de6473516ad668e1", +"T3B1_it_test_protection_levels.py::test_signtx": "edb7689d63cac4bf2be34f53c71bd857346d2bac7f190c80c901ffd3ec5ee938", +"T3B1_it_test_protection_levels.py::test_unlocked": "b8952b2cdd4094bce773530ce6de9becf3c65fe57f585bdcc552268417e92800", +"T3B1_it_test_protection_levels.py::test_verify_message_t2": "a420437b1676caf57f92c624c68a4834c76e8952d049bbad5d5f47057c9a7547", +"T3B1_it_test_protection_levels.py::test_wipe_device": "405ae74680f3a50811085ad0eaef962047e78ecb47c7391a4090285fcc0fd5ad", +"T3B1_it_test_repeated_backup.py::test_repeated_backup": "5afdaf9df261bbbcb36aed231180a6d88686ac327503b02f8e236e140157a064", +"T3B1_it_test_repeated_backup.py::test_repeated_backup_cancel": "acfce90d9e19f9c029b617592608422f762ce9fcc62f732b35484939a3a2fba2", +"T3B1_it_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "5ab1ddb85653bd72442bce97283d8a3af41de758de7bb107b2341dc3992036a1", +"T3B1_it_test_repeated_backup.py::test_repeated_backup_upgrade_single": "021fbfa7672632f7c84bb5a8e6ee1be8daeed842be2484ce55a052c35d4a1ea6", +"T3B1_it_test_session.py::test_cannot_resume_ended_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_session.py::test_clear_session": "072582faea8fd594ed2d2592c99a395a499b64dee8d2646a600c2053a4f48a0c", +"T3B1_it_test_session.py::test_derive_cardano_empty_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_session.py::test_derive_cardano_running_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_session.py::test_end_session": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_session.py::test_end_session_only_current": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_session.py::test_session_recycling": "31fa7c73f864008c982d5d3399a65569a599efe283a0b40e888169e8bcddba9e", +"T3B1_it_test_session_id_and_passphrase.py::test_cardano_passphrase": "9bc407cf9c5c80cf5f252f10f42d8dd077a62880d43399bd05f10eac8a584a7a", +"T3B1_it_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "887a43198847d55adcd4400cec6a8699bb3fcee5b7df47a8ad56790841770e41", +"T3B1_it_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "6784ff420bf411799d516072392ad915be93afbf090218bace8081cc4f717d57", +"T3B1_it_test_session_id_and_passphrase.py::test_multiple_passphrases": "9b3bded72a61c6bb7274c2af89383150b8071b196be1ab5b8e7e73eb25ee683f", +"T3B1_it_test_session_id_and_passphrase.py::test_multiple_sessions": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "28f1d4d18e178c0d029d58004a96fc48291dbae12608494146a09eacc87d0bcc", +"T3B1_it_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "8ea756961ca2b1f993b9b0f5b4a7cac13d918be6a0866a9345c18eb5cfd93bf0", +"T3B1_it_test_session_id_and_passphrase.py::test_passphrase_length": "b33cb0cfd7c1080efaa0161ed871dacc13ebae87c3712d3fb50a1261b4e703f1", +"T3B1_it_test_session_id_and_passphrase.py::test_passphrase_missing": "b17b00e462b6a02e4c42dd229c17a6a35925e806b9f7289ebdcd8fbf1d64961a", +"T3B1_it_test_session_id_and_passphrase.py::test_passphrase_on_device": "a1bcb7017dddcd16b6aab5ef7e07f1890f189fe04e1fd2f325c9b1b029b64930", +"T3B1_it_test_session_id_and_passphrase.py::test_session_enable_passphrase": "e9dcbe61b87c365d27423fa0432cc30ba2d2f997376ed3d17ea355f67aed2569", +"T3B1_it_test_session_id_and_passphrase.py::test_session_with_passphrase": "5cb9b9e0aa76dcc950ac70ad4f990e61a9f769c2a28d0474e1b615d02a87ae3b", +"T3B1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2837d2ef936932e393fa0e06102757ba5a61bd32967c60871412ef645557587c", +"T3B1_it_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "55acf45370f9a2e9774ee133fe31af9ef4cb2ea37fe0d4cadd1900966b6dfe57", +"T3B1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "19772979cd4e114835a71e7b0c3402230a3170b0d56773ea63c145e8c921d62c", +"T3B1_it_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "1b37766efe40499b17b1012c3e8ed9e19454b3ca765084f187e3f7a151a6759b", +"T3B1_it_tezos-test_getpublickey.py::test_tezos_get_public_key": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "a9d4f3780df68937d7fb3e3546a0132dd6d6fa9e8bfa4b667e4983fdae66c5b9", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "6fcd5ec7fa380d38aca8151c43531c39fcf7f61ecbbd9348ad917d154fdd05e7", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "774cd22e4efe79ba13f8ef1afb8dfa2341fe45a4112bb16f108615286ea13872", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "94bac677a2d3ff555f506d14b5980dc06662356bbde611809ca985635c9df5b5", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "0eb309cee6fe2699c8d0d7dd4e680be631f316e3c367aa535b1f3fe3f51e5315", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "41817b010224564ba477988fdebaddcc925aaa7580c23a7762f41445e115a093", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "d04d3cea77dde3f232f5de0807aa8f2e411c4242954fecaf63ca0f4fc51fb703", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "f9a37072c655ca09052828575773b8883792a8f11465ca4ed124d250311b5a47", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "0e6896a3a24c00f2f79bbea670c813a95bdd89791da08bc9b567e863ef87f8bd", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "63e5f1f47e407a9f3b049e8a1860332bf59ccfb92f07c59c5607b1294123fa27", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "eca3d65297c9e11fb3d2855297807b13148dfc53573d8b34fa585ad0e76a603a", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "d18edaf84ad19444044113db0496d3b29dea29ecb2efaeade9a25625d5b44355", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "25e4dbe4a1c1479f488d5c949c46255af92dcf074b86814cdfa379c1c0371951", +"T3B1_it_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "c8d4dfa67b3acdf69cf0cf5ee0e7dde8679af85f63d92bc7cf524e5c2e25fc43", +"T3B1_it_webauthn-test_msg_webauthn.py::test_add_remove": "d23d22bc0caaf6bbf41de9e97bcd9a02a4c9e79b18f10e9489b8c0187faffe85", +"T3B1_it_webauthn-test_u2f_counter.py::test_u2f_counter": "824b7127d293a5159443b473b04f9c4a1ac569ebf1a28de1dbf6fc6582610943", +"T3B1_it_zcash-test_sign_tx.py::test_external_presigned": "b42a33e6f91b6ff21325896a3174f10a96570224f207630f0a5554d2faab5395", +"T3B1_it_zcash-test_sign_tx.py::test_one_two": "e0ea84894c4cb9432cbc430acec4efbe128ef2ac781796b190b02456d06e0cec", +"T3B1_it_zcash-test_sign_tx.py::test_refuse_replacement_tx": "42c01e1e40702d011d2cb8f3ec468b64c10532786bdcbc01421bccdd1c74872e", +"T3B1_it_zcash-test_sign_tx.py::test_send_to_multisig": "eee6da7ad8a81c8061e7b6250000977766f333e2ada8df0572e02c8688b77c1c", +"T3B1_it_zcash-test_sign_tx.py::test_spend_multisig": "5b18c8eb6fe7201715c0627cef79a218c776e553e42686a9b87d3d733a05ac56", +"T3B1_it_zcash-test_sign_tx.py::test_spend_v4_input": "c04724d95cd5b23703d1dc7e2030bb7f4bd1ea028b2961841f4736106377e68e", +"T3B1_it_zcash-test_sign_tx.py::test_spend_v5_input": "f644a93601da9e8c03c8dd25ce3f963005bc63286d0d52ee3a23a761b12b863a", +"T3B1_it_zcash-test_sign_tx.py::test_unified_address": "53e20400c8fb839ccb28e4d74ae77eb89292bbea3ac7534c1339db19b01939de", +"T3B1_it_zcash-test_sign_tx.py::test_version_group_id_missing": "85c6d314d7a528d83f90b932a6c7bf23b4ac594da2e77691ca73d7d125b95e12", +"T3B1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-0-bnb1hgm0p7khfk85zpz-68e2cb5a": "3935473a30a4122bbfdb6abdacb1c742e57413ee36f192c77bfcf5679c7c4036", +"T3B1_pt_binance-test_get_address.py::test_binance_get_address[m-44h-714h-0h-0-1-bnb1egswqkszzfc2uq7-1adfb691": "073e785a513b6b24c58f10224cdb844f405f028a2e6d68011283d979ced3a82d", +"T3B1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-0-bn-59d4996f": "f1c0ea9306c0a008d785718181889c01d7ac9b48394614d3e3e4fb11c2bea008", +"T3B1_pt_binance-test_get_address.py::test_binance_get_address_chunkify_details[m-44h-714h-0h-0-1-bn-c9025900": "20df3137e058c9a7407f568a8516c79965fef1ca8bc8adaabd8812a311c10b09", +"T3B1_pt_binance-test_get_public_key.py::test_binance_get_public_key": "7c5ec0b56007bb7703cef920754199378aed389a06b7843123e87c58826347ce", +"T3B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message0-expected_response0]": "0330bff94e19af4b503a2abadcc6405adfafb4ae6e98a9faf42a7a3ffda8c9fa", +"T3B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message1-expected_response1]": "898ffbd863b893ebc95f36435c088f5e4663ad15a316b7b77dbbc8dfbe638135", +"T3B1_pt_binance-test_sign_tx.py::test_binance_sign_message[False-message2-expected_response2]": "fb4d1ddf33527075717b8b77141392da4258655068ea235640554df2f63b653a", +"T3B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message0-expected_response0]": "0330bff94e19af4b503a2abadcc6405adfafb4ae6e98a9faf42a7a3ffda8c9fa", +"T3B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message1-expected_response1]": "898ffbd863b893ebc95f36435c088f5e4663ad15a316b7b77dbbc8dfbe638135", +"T3B1_pt_binance-test_sign_tx.py::test_binance_sign_message[True-message2-expected_response2]": "fb4d1ddf33527075717b8b77141392da4258655068ea235640554df2f63b653a", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_cancel_authorization": "0c97dc250a805277b45b40e9aa8202963043ee5d72622692cecfd701fb9629e6", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_get_address": "a8f2793a33fc00c7e9abfe5e49e97beb99045b55aee5e1bd937e97c5c409aa1a", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_get_public_key": "bbdfcc775abba66f5a7362c06e34a04cf1821f99fb30ea9d36ccbeb5de049df8", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_multisession_authorization": "0e9a453ce48e2c7ef93f60bac29a0ccaca94d2d4910fc184cbac6a8d6bb85290", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[False]": "52c25b83d93fb27c7c082ec383a7d6b73a8c05c5f113cfaaccc374ce3e13b3bd", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx[True]": "52c25b83d93fb27c7c082ec383a7d6b73a8c05c5f113cfaaccc374ce3e13b3bd", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_large": "0a9cd1f9dba86ff0611689a747a994a7c37839aace0f7d981365648c65c16de9", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_migration": "4ed06c6f999111c6ce2b2123c9124e9fe61f71f65a4bfb7bd95e7249ee7d98bb", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_sign_tx_spend": "0ae6544425abef3253ef406725a308f654f7c69b492b8e282e2e372bf77a5635", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_account_type": "040427131b00f539b99674d35850e984a5fd524b03491be28a0bb97b77ebc17d", +"T3B1_pt_bitcoin-test_authorize_coinjoin.py::test_wrong_coordinator": "040427131b00f539b99674d35850e984a5fd524b03491be28a0bb97b77ebc17d", +"T3B1_pt_bitcoin-test_bcash.py::test_attack_change_input": "afdbacedb329d4856f7e03fb96dace8fcf32f028af8125e8a943c4c879775efe", +"T3B1_pt_bitcoin-test_bcash.py::test_send_bch_change": "7bb3876df1177ea18a44854b26edafa5d1aaca7270bf844e5bfc56e3d58c81c6", +"T3B1_pt_bitcoin-test_bcash.py::test_send_bch_external_presigned": "8d2a2b953145df525de202e46755beacd03c02ab0aaa857a87ca9c275409293e", +"T3B1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_change": "9c6b5da8085411ff3c1ad86dcea8c8281e6f76ed165d96edf8fa9b6a746ef0ae", +"T3B1_pt_bitcoin-test_bcash.py::test_send_bch_multisig_wrongchange": "59b88a16e7b13b363bfb6af442b6b48c16d768057e8c1d94dfd6f04ca15ff2ee", +"T3B1_pt_bitcoin-test_bcash.py::test_send_bch_nochange": "93fadb1a8db77c06b9565b24a87ebb64e2705101d9671b5bb3528176e0da9a34", +"T3B1_pt_bitcoin-test_bcash.py::test_send_bch_oldaddr": "482cd6066283a89ffd22fea9c76879d064249b5fd95a1b63f1f3d608ccc423c5", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-10025-InputScriptType.SPENDTAPROOT--301d7568": "df593ce85f905611f7d60835c283a5882b54d53055c24d71768404cab740b1fe", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-44-InputScriptType.SPENDADDRESS-pkh-a1b0211f": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-49-InputScriptType.SPENDP2SHWITNESS-75f8d49f": "6f0e3344ed6184df14aeb69bd08fcfe5a72fe03225d62d8f65fa6619644ad709", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-84-InputScriptType.SPENDWITNESS-wpk-cee65569": "d02ec6bf02e51df060f2cb7aa020d00dbbb091262a74b9623e8c18c83f85d036", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-0-86-InputScriptType.SPENDTAPROOT-tr(-6b548a1a": "cb496ccd6b0f2b6ecb91eadb370c758d9783da01e7e5383cc2bf0d978a31dbd7", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-44-InputScriptType.SPENDADDRESS-pkh-37215d1b": "2abaf209e38b74c84b97c3ffa84018b981cae6c21676967eacaf94f2b1c34215", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-49-InputScriptType.SPENDP2SHWITNESS-3ccd985b": "bb59f0f062072787d51cce53021b2c633080bdd06b0cd78a264f8e284385f363", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-84-InputScriptType.SPENDWITNESS-wpk-21c3fa4c": "2c1812588891af1a5df96a672a0f1f07c4586206e58885d8b03443a65c50a535", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Bitcoin-1-86-InputScriptType.SPENDTAPROOT-tr(-3a85f3dd": "b95376f9ab66ee682a637f1249ad442062d01f22a10d75b5e87db1de1c036f0d", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-10025-InputScriptType.SPENDTAPROOT--591134d6": "40fe7742a46216b43ddf5a0150334c8486eb4cb467173d121ca4096f923eaf09", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-44-InputScriptType.SPENDADDRESS-pkh-b7612f41": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-49-InputScriptType.SPENDP2SHWITNESS-4408e6b6": "9146d2fbb17c022cb6229503ee7e0997438b32e2e5d7ca2014be50b00bb5760e", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-84-InputScriptType.SPENDWITNESS-wpk-49d5549d": "c2fb89961efdfb11bf08698d8868929017f79ecce3a2a85b19f537217e20bd3f", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-0-86-InputScriptType.SPENDTAPROOT-tr(-51c6f7dc": "803f8860368d17c7791731d1eff2554c6088c5da7381a9e0587cf5187baa0993", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-44-InputScriptType.SPENDADDRESS-pkh-671fabde": "b1307b159816fe71d98ecb5726a28783136b262d6225522c478d0fde4704dabb", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-49-InputScriptType.SPENDP2SHWITNESS-6a0c7b09": "56c817d8fb3bdf846247142d1437066f9d36b10ab1482d61a85a39dfcf43d9ab", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-84-InputScriptType.SPENDWITNESS-wpk-7c651f2d": "ab1b0d058fa80584de481d7e5fd6619362ca49552ae87714fef98caecd060a3a", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors[Testnet-1-86-InputScriptType.SPENDTAPROOT-tr(-b37d77de": "18aa38b86f9096300464e5b3aeb68fdc611a95871c30250f484adfb9c91a29da", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-10025-InputScriptType.SPE-6c24ae6f": "df593ce85f905611f7d60835c283a5882b54d53055c24d71768404cab740b1fe", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-44-InputScriptType.SPENDA-fc66840d": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-49-InputScriptType.SPENDP-3f679311": "6f0e3344ed6184df14aeb69bd08fcfe5a72fe03225d62d8f65fa6619644ad709", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-84-InputScriptType.SPENDW-dedbd46d": "d02ec6bf02e51df060f2cb7aa020d00dbbb091262a74b9623e8c18c83f85d036", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-0-86-InputScriptType.SPENDT-9b717395": "cb496ccd6b0f2b6ecb91eadb370c758d9783da01e7e5383cc2bf0d978a31dbd7", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-44-InputScriptType.SPENDA-908dd45b": "2abaf209e38b74c84b97c3ffa84018b981cae6c21676967eacaf94f2b1c34215", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-49-InputScriptType.SPENDP-07c408b2": "bb59f0f062072787d51cce53021b2c633080bdd06b0cd78a264f8e284385f363", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-84-InputScriptType.SPENDW-ae5dad46": "2c1812588891af1a5df96a672a0f1f07c4586206e58885d8b03443a65c50a535", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Bitcoin-1-86-InputScriptType.SPENDT-f5c0cb2f": "b95376f9ab66ee682a637f1249ad442062d01f22a10d75b5e87db1de1c036f0d", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-10025-InputScriptType.SPE-ad017c81": "40fe7742a46216b43ddf5a0150334c8486eb4cb467173d121ca4096f923eaf09", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-44-InputScriptType.SPENDA-87568704": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-49-InputScriptType.SPENDP-08c818f5": "9146d2fbb17c022cb6229503ee7e0997438b32e2e5d7ca2014be50b00bb5760e", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-84-InputScriptType.SPENDW-3a2da005": "c2fb89961efdfb11bf08698d8868929017f79ecce3a2a85b19f537217e20bd3f", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-0-86-InputScriptType.SPENDT-0d2d3911": "803f8860368d17c7791731d1eff2554c6088c5da7381a9e0587cf5187baa0993", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-44-InputScriptType.SPENDA-06441aab": "b1307b159816fe71d98ecb5726a28783136b262d6225522c478d0fde4704dabb", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-49-InputScriptType.SPENDP-2341fa5a": "56c817d8fb3bdf846247142d1437066f9d36b10ab1482d61a85a39dfcf43d9ab", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-84-InputScriptType.SPENDW-59aa0a79": "ab1b0d058fa80584de481d7e5fd6619362ca49552ae87714fef98caecd060a3a", +"T3B1_pt_bitcoin-test_descriptors.py::test_descriptors_trezorlib[Testnet-1-86-InputScriptType.SPENDT-af95048b": "18aa38b86f9096300464e5b3aeb68fdc611a95871c30250f484adfb9c91a29da", +"T3B1_pt_bitcoin-test_firo.py::test_spend_lelantus": "2d4dbfd0820ceb2abccb1792b92495206398ebff7eceb67a6a1c15c49397489d", +"T3B1_pt_bitcoin-test_fujicoin.py::test_send_p2tr": "6be9ea395962e47c42622e870f7e7d745287104c66c200a8a5309f968e809636", +"T3B1_pt_bitcoin-test_getaddress.py::test_address_mac": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_altcoin_address_mac": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_bch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_bch_multisig": "eb16ed286e1e53873568c0e99c4500c55c63479f50dd44519e441679eb2b4c59", +"T3B1_pt_bitcoin-test_getaddress.py::test_btc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_crw": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_elements": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_grs": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_invalid_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_ltc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_multisig": "e9a2ff79073e1af139bc8537a14ce1be00e911ed0963f02f29ddcdad5bac5065", +"T3B1_pt_bitcoin-test_getaddress.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_multisig_missing[True]": "d5a1a13aff417cdd643eb2d593b7c7065bfc89515f6f03b092a55a29984f6d8d", +"T3B1_pt_bitcoin-test_getaddress.py::test_public_ckd": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_tbtc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_tgrs": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress.py::test_unknown_path": "b31cd47c101d29514c7e585bb7a29a4c0fd6bb8f19f81d7d42ad8c882791e1bd", +"T3B1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit.py::test_multisig_missing[True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit.py::test_show_multisig_3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit": "6f799769ba10abf7d9a1aef5f957f54878665cd5253f9d69c95cfaa86f06af6a", +"T3B1_pt_bitcoin-test_getaddress_segwit.py::test_show_segwit_altcoin": "d12f1fabae2ab62fa2bcee0aab909eb83e5e78da68950cc9a0035a59c6810c8b", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-0-bc1p5cyxnuxmeuwuvkwfem-dc12f29f": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-0-1-bc1p4qhjn9zdvkux4e44uh-1f521bf2": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_bip86[m-86h-0h-0h-1-0-bc1p3qkhfews2uk44qtvau-d8b57624": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[False]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_multisig_missing[True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_multisig_3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-6bc4ffc3": "0997a221d1a4395d5e6118ad7e3d33762ebd9d3da2552131102f4711d2f9cb47", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-0-0-InputScr-8943c1dc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-016718c1": "480311aa0b450638ed4b87a84d49c5c7e532144dee3e0ccb2c16cd2937f0f199", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-84h-0h-0h-1-0-InputScr-7656a4db": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-3d3cc8eb": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-0-0-InputScr-8571d5e0": "f6d2e461111e7f8fa64273dd31d728afd4038f00b8f87efbd733043ae5d743ae", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-ab700de2": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Bitcoin-m-86h-0h-0h-1-0-InputScr-da3803e0": "985004054f9e99cb7c15a0076a4de0e90186392c012a6aacb306a9d4961604d0", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-490228be": "4aedb3cff16f5d4a9ae16e69e3c193f5746baf2c5999e08b198b87478035f06e", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Elements-m-84h-1h-0h-0-0-InputSc-ed587e90": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--40b95144": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--45b4ff5d": "d94f9dd343d5f1a89cb8c2e48c4d1e8d1100f8968409cd287eea6fd5f5b6ced8", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--8f7c658b": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-84h-1h-0h--93c9c3ff": "2d001712c09bdc058c372ec35aae9a793a1a53d079630f34857088b9c64bf66f", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--5feb8c64": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin Testnet-m-86h-1h-0h--8d4476a1": "1baffc48db7dfb7d31b42e19f7fd0b13819f5ccad2a8ea5ad4d0ba8547a51060", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-0200a67b": "ecad20a1a2418066bf722f02ef25c4cc3578f7fea8456eb38cddef555fbc7dbb", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-0-0-Inp-e6c1098a": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-9688a507": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-84h-17h-0h-1-0-Inp-f825f217": "1a6fe5f4c87b7585b9b9887ddbf56d6e0737e3d2284bf0d24faba6a459384a53", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-38cd93cf": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Groestlcoin-m-86h-17h-0h-0-0-Inp-ebecce6e": "6f4b7f477f2daa48d0c3a7d8c7771e912180bef918be81016736a8f6f88c9d8d", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-313b9443": "c64a24a114ef01d5da5b37656959225560c1cc8f48697389af4f5150c00cc24d", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-0-0-InputScr-ce15ec92": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-040186c0": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-84h-1h-0h-1-0-InputScr-b10918be": "0808748b7480946e9d3d541ebdd2bc4e618223e8aebbe3fbf0b2a58dc12b4986", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-55ae0ae6": "a9e84788206da325a3bba2c7d27f6d3e75dbc93fa81fed05f31bc08538db0742", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-0-0-InputScr-821a199d": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-9d2fa8bc": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getaddress_segwit_native.py::test_show_segwit[Testnet-m-86h-1h-0h-1-0-InputScr-d5b7f8fc": "016e8cd42c9307b616d155d3ff063de22710c29bb2f5a908c99b83d774687051", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-44h-0h-12h-0-0-InputScriptType.SPENDADD-4eca71e0": "32c3f48070c4c7997c28f6c914fc11487032235afa50aa8715ed514b1e8b19b0", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-49h-0h-12h-0-0-InputScriptType.SPENDP2S-4ec777e0": "1e68b8892bda9c64964b940d437a698e792c84fe5ea9a0e722390babc11b54d8", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-84h-0h-12h-0-0-InputScriptType.SPENDWIT-d6991e22": "5988bed4204a0ca224699b93b2fb958b8287ee47143ee1bc0111665fc5b59d8f", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_cancel[m-86h-0h-12h-0-0-InputScriptType.SPENDTAP-4c5b2b38": "efe4a77e0680dec578f0cdbc3e2bd199452391495ae7a9e098e0d32c880dcfa2", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_15": "53a937807d399037ae79de67b77817518423f8b76db5c36c0f2ba939798aeea7", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_3": "1b59dd844714691948f43018e7d439ae3b97c1b7d488329b0ca5f6f1b94d96c1", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-4efd9cf3": "d68824fc528ad954b5e70a979e8c973ebb5b726502ebf27117c4b5086f6e707f", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDMULTISIG-0-3-98a7e339": "d68824fc528ad954b5e70a979e8c973ebb5b726502ebf27117c4b5086f6e707f", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--2cf5f03c": "fcb2f84461600f607434fd39b66f06f49f89e718c8c3a53483b47279bc9a3bb6", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDP2SHWITNESS--5ea18367": "4c74a456f0195f1cad1ebc1f681f2b7df5b2adc5a431893adffd20c979a115dc", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-e70b56ea": "c18f9d08399ab23c9c062249f35702f9da3161e8e123e623cb5a4ecf3928a801", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_multisig_xpubs[InputScriptType.SPENDWITNESS-2-bc-f3c4650f": "889088ec604c849931e1bf364733c82b6dce6a77bcac437f9991b64b7a8f0967", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-5c88d0fd": "d53a2d2b6f6d201e79ec8540573b94886780459af9a5aced319504881a993fd6", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-44h-0h-12h-0-0-InputScriptType.SPENDADDRESS-87490d4e": "7a01ecb8232085f8bd4edf913f33949b4c3054cf2b9291f9252dda13d0bb837b", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-9bc227c1": "e3c0af36821932e05db51014c0e2ad512f2f3489c2d231c96a3db5cb359663f1", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-49h-0h-12h-0-0-InputScriptType.SPENDP2SHWIT-aca0623f": "87cfa0e4d4fc0777402f5644ea6b3a7abe117d2b4c18ed26ea08a97bd7a59846", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-747c079d": "d7606c2273162fcf4151e15296858e618369038dcd4b141d074a26b52deea2af", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-84h-0h-12h-0-0-InputScriptType.SPENDWITNESS-e4302080": "0baae1151165fdc92295c4ac0753661dc945f54c700cf9388a8a49540dc19d7a", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-071a4a07": "583a7f54d36c97b1e8d80ba06d4a32c613ff98d786cbbbf7d2dd07b95c254035", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_tt[m-86h-0h-12h-0-0-InputScriptType.SPENDTAPROOT-25ee9808": "7adf3603b3acf962ca93ec953777e5d68b76535cca06c8d157aeb95c37f0c07b", +"T3B1_pt_bitcoin-test_getaddress_show.py::test_show_unrecognized_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getownershipproof.py::test_attack_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof": "b3af5e0326b2b8533812d0ae8d4460d10a8142402a4d3f9c1685f590234b53f6", +"T3B1_pt_bitcoin-test_getownershipproof.py::test_confirm_ownership_proof_with_data": "561ee40dda42949d16b8a2241aca3a6b6450c6d59302704fb0d5f3959da746e0", +"T3B1_pt_bitcoin-test_getownershipproof.py::test_fake_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getownershipproof.py::test_p2tr_ownership_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_id": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getownershipproof.py::test_p2wpkh_ownership_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path0-xpub6BiVtCpG9fQPx-40a56ca3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path1-xpub6BiVtCpG9fQQR-1abafc98": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path2-xpub6FVDRC1jiWNTu-47a67414": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path3-xpub6GhTNegKCjTqj-990e0830": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Bitcoin-76067358-path6-xpub68Zyu13qjcQvJ-8285bd20": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path10-Ltub2dcb6Nghj3k-53e5db37": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path7-Ltub2Y8PyEMWQVgi-d0bb059c": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path8-Ltub2Y8PyEMWQVgi-98ae2c41": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Litecoin-27108450-path9-Ltub2dTvwC4v7GNe-8d6d95fb": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path4-tpubDDKn3FtHc74Ca-f3b70aff": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node[Testnet-70617039-path5-tpubDGwNSs8z8jZU2-8b5efa13": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path0-xpub6BiVtCpG-d791cce2": "7b0d6304c65ece5e7801d5d6fa77b9960800e8603fbc340de7dc88b7c793e007", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path1-xpub6BiVtCpG-74c78643": "18859108b5ba46db83e5bb314a2f3311503c2ed65f8636ed30035bbf3cb1f2b9", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path2-xpub6FVDRC1j-3074f5a6": "ce4b33ccb0bba3205940e8d30cc07528db16ac69f95ace40e28c66b857fba57f", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path3-xpub6GhTNegK-1b073ed9": "91fb421b48401ddcc654af0ffcf1dba9c9107533340d254cc4f724a402f3440a", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Bitcoin-76067358-path6-xpub68Zyu13q-eb190bf2": "64f36acdd35274a84dd215711f70b6bc5c139bc353f601bf86011aba3f072fc6", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path10-Ltub2dcb6N-d2ef4e5a": "6bfbf55db9f97922227cb037cb601416f7638e8ddeef1d929cebfaa699c21ed8", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path7-Ltub2Y8PyEM-b9a6bf56": "46cb33493daca5de067e1f6896bd239fd5a9da65280be317f2a3aaf3c818cf0c", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path8-Ltub2Y8PyEM-d598ed84": "1b66998818ba77683b6e4c3a8cf0aaabe0111287e4a77c2406a10cfa25fd8df1", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Litecoin-27108450-path9-Ltub2dTvwC4-bfef8b2e": "d4dff961c6e5a7f95688d0716b30ad83363e8d6004e22b88b836fabcb83b776d", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path4-tpubDDKn3FtH-5ca1cba5": "39d506ca3f18d700fa8e197cadeefca3cb91ed3e4ece3670ee54947c7fcb312b", +"T3B1_pt_bitcoin-test_getpublickey.py::test_get_public_node_show[Testnet-70617039-path5-tpubDGwNSs8z-60ca5612": "fb25f768d365b68dac90d20b9d1266546733c2f03664dfb1af33d4bba8efd691", +"T3B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bcash-path5]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path0]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path2]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Bitcoin-path3]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Litecoin-path4]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_invalid_path[Testnet-path1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDADDRESS-xpub6BiVtCp7ozs-9813cc48": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDP2SHWITNESS-ypub6WYmBsV-0710fbb3": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_script_type[InputScriptType.SPENDWITNESS-zpub6qP2VY9x7Mx-84eaa56c": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_script_type[None-xpub6BiVtCp7ozsRo7kaoYNrCNAVJwPYTQHjoXF-c37a47fd": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey.py::test_slip25_path": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey_curve.py::test_coin_and_curve": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey_curve.py::test_ed25519_public": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[ed25519-path4-002e28dc0346d6d30d4e-e6c7a440": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path2-0324c6860c25cdf7a8-d75f4900": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[nist256p1-path3-03b93f7e6c777143ad-2d6b178b": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path0-02f65ce170451f66f4-9c982c22": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_getpublickey_curve.py::test_publickey_curve[secp256k1-path1-0212f4629f4f224db0-0209bb73": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_grs.py::test_legacy": "3d40df4ef3469225fe59d80fbb0bfd13e6716ae461fe6e987d98f9fc1a1affcb", +"T3B1_pt_bitcoin-test_grs.py::test_legacy_change": "8cdc2b20f5612b958e9c5b20906d271eb38ebd24524d049e84e03a594d464e80", +"T3B1_pt_bitcoin-test_grs.py::test_send_p2tr": "1371cfd505dc215dded6ff55c3e202fd9f34536e0b000e2e55687995b1ab1a03", +"T3B1_pt_bitcoin-test_grs.py::test_send_segwit_native": "c0c1bdf00d682166ca190ea7765a6db72787627967da98bba49f82e9ef766607", +"T3B1_pt_bitcoin-test_grs.py::test_send_segwit_native_change": "f2377e8bb2aa8617f45ac45cee2880c4e7a4c9fb64ba1c9ad80ac4f243a1189c", +"T3B1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh": "c2a6ebba6ea99d3589740f93c830e81350373a215ab31628d78e4195f8bca6a8", +"T3B1_pt_bitcoin-test_grs.py::test_send_segwit_p2sh_change": "c865fc3a0b53bd761107eacd8a22038f936a37a00c6ef9204a591899ffa4e1e0", +"T3B1_pt_bitcoin-test_komodo.py::test_one_one_fee_sapling": "32bc4dc82aa8e8eff19171f34d14d9b8af65d239265cabf51a09bbbd305e5ac6", +"T3B1_pt_bitcoin-test_komodo.py::test_one_one_rewards_claim": "70cafdfd9494e4bf827553a73561646ccdc711776b40aa3fda923317a6b60422", +"T3B1_pt_bitcoin-test_multisig.py::test_15_of_15": "2b2de9c6212402f4729769b5cca651133eedd51a6ad81604768869c366746562", +"T3B1_pt_bitcoin-test_multisig.py::test_2_of_3[False]": "e6f974bcd263fd75554a3874afc75502a30f37f24c29b8c179b342124b56ad2e", +"T3B1_pt_bitcoin-test_multisig.py::test_2_of_3[True]": "6ca6e12166f8c1ac6ac516af261860f5fa8205356caab4205450e8848ae7cdc8", +"T3B1_pt_bitcoin-test_multisig.py::test_attack_change_input": "bc5415246696142b850ee35e1ad81a313a848038c279f9b2aba1fe8edeb785d7", +"T3B1_pt_bitcoin-test_multisig.py::test_missing_pubkey": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_multisig_change.py::test_external_external": "409d7682d9762f3c4c349ac24531ad65c9585f04b485d5392e91e78494fa3b28", +"T3B1_pt_bitcoin-test_multisig_change.py::test_external_internal": "0895887087fba9925ebb8b41e71559d6b56d51bf1fe4aee02c4be6f4de539fd7", +"T3B1_pt_bitcoin-test_multisig_change.py::test_internal_external": "648c61c7ef45b2d0fbbeaca4a28724699a73e750f979b9730d6bf13ac7dc5b3f", +"T3B1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_first": "5b43737722aba2ca2c9fe930c1cf3683bc8d48c89520f6d0677a782866e12b4d", +"T3B1_pt_bitcoin-test_multisig_change.py::test_multisig_change_match_second": "7a6f24334acff5fd02426b0ea31c316652e6750cff285b833f5aff53fa34a5d6", +"T3B1_pt_bitcoin-test_multisig_change.py::test_multisig_external_external": "27ec34ba67ebfe3e744af8d5466d34fc3a5eb42fafa0f97ff2bffeb1f90f5388", +"T3B1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_change": "f0e5c708bb41d8a944af2f6983b4a1ffe13dea810f81d5a99d837e90f0303671", +"T3B1_pt_bitcoin-test_multisig_change.py::test_multisig_mismatch_inputs": "6d350222a57da2473062b6404888be141195b4fa96f7ad86215c2406e0f31f77", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-False]": "8e0417d4a0e42e57ef8f35004358402cb157b1450f3d685587c4acffefbf8501", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-6-255-script_types3-True]": "d0b762d34956662f825b0254611e39c60d488855e9f392f54b1d828c481b601a", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-False]": "dec8c89ea199a4a4df43566cce72128161c8c3834a670eeee5f216cc0ed927b8", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-1195487518-script_types2-True]": "428a0635ff0277a8aea13261d59ba9a093439b4d2a4754193dc70667ee8a234c", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-False]": "caed87d1dbda6d7344ee71f7f96df6032f58d813bb307378243dd4a87cfee50f", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-3h-100h-4-255-script_types1-True]": "fcb137d590e1cbcf29236620aced3b05e17af9863b1e4280920416b0af6913b5", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-False]": "af915edfdde340cedab212e246f1f8fa63ff4f5e84d4bc296a6f848fa59920cb", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-4-255-script_types0-True]": "b2e40c7a90e878d9b0d1550fac01b440a978971816e76f811759878ad6e35164", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-False]": "cbdd7adfec30773dcac196ef5c5e7e861c8b8982964c9c4e6ab938a316dd4b36", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress[m-49-0-63-0-255-script_types4-True]": "ad460cdaee0fa51a831b8ababb1161ddd136b63d7400427d9edd3cf3954b772c", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths0-address_index0]": "7bb098afaffc07322457de22c66a11e036b958ed5201387e33d4c48818eb1fb2", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths1-address_index1]": "0882f19edc37dbb80b2547e982ac71dd16ee7c4ebe3addf0a0d4f15ce2b04350", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths2-address_index2]": "8d7dc19261f6f76313dd0b3fc08c368b57bab212fe6a2deda5df09f4ece8af83", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths3-address_index3]": "951138b42ddf27f68111c49c601c613f5a4d29befabc4e9270af744d9f517c92", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths4-address_index4]": "fb5db51ec50318388626e8e2e9114102049fd91ffceb7ec0e2e504bb0b310577", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths5-address_index5]": "df7a9c8ac6e26ecbabd5ecd39e4dde4da2c87462cc7aa1d841da40b62dac6f95", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths6-address_index6]": "fb89021df12d4477f501714ed02e160bcfa651c71a4b22aae1c39c025ee498da", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getaddress_multisig[paths7-address_index7]": "1ab744f25c1c83ef0913cf88b34be2079fa51c90e802ba36ea9d7c20908fcb06", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-6-255-script_types3]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-1195487518-script_types2]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-3h-100h-4-255-script_types1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-4-255-script_types0]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_getpublicnode[m-49-0-63-0-255-script_types4]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-6-255-script_types3]": "a92381eb8066b149c2ffe05368b89afab498a21833ff3d0f1ed45dd939bac93d", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-1195487518-script_types2]": "84644e9c64b5171d0d4275c35edfbb61797c583334e38323b1c3616b44b73882", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-3h-100h-4-255-script_types1]": "72224befe8befaf4bb9a77f471954dcde444e42040af7887bf1b056e3a8d2744", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-4-255-script_types0]": "6dfd8719aea175ad7ba4b78f903a6a7d00b35704a81b4fadcf694b6168295ef1", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signmessage[m-49-0-63-0-255-script_types4]": "5f076f4b5041d90b1cb9f420bd60fd9a7650b6da2b40b8117ddb49aee35f095b", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-6-255-script_types3]": "7893eb29a5fe45b26b8d37ddcf4acf1442e2eecfa67d065e5b460af350de4be1", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-1195487518-script_types2]": "6a405a1f5fc2fc9baa21fa2eb3ad6e6d799ed9d0c346057bddb2b014a66a27b4", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-3h-100h-4-255-script_types1]": "27cb13d2853cd2fcf7d326ba29033e18c4ac16c2a213f280f4e91187da4ff26d", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-4-255-script_types0]": "80d960cfbf87ec058a22878c8a932aaaa47ef99a24bf21d657f17cddf922aa73", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx[m-49-0-63-0-255-script_types4]": "3f941a9e0b90004f4dbf32281c81e374172abfac050cd880f8390c5944c33ad2", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths0-address_index0]": "12241ed55b7e5f0c92508382266801cd00f5a85056c2447c9a1820b799f4b3c3", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths1-address_index1]": "6af61ce60676964349c44e5e19276e1f87900cb6a913152c2f97f938376baf3f", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths2-address_index2]": "c8c3d9929d3a062a0eb12321e1a49cc288c8937919e054b39cd3c8930400a3bc", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths3-address_index3]": "cadbb52ce1b499743e8307301f4ac298865cf0635f722cd3609521ebdac5449a", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths4-address_index4]": "c8892902350f2134d5de4b236f50afb55516c57b6c46c76a3c2d725f2a038742", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths5-address_index5]": "578607c1ebfe30b954b072248fa9261f8283200a5c4b5f1d4b566c1775c054a6", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths6-address_index6]": "98312a6f52b8bdb973c10b1ae61a2583be8ba19728d1e73eaafab26d6c797b1c", +"T3B1_pt_bitcoin-test_nonstandard_paths.py::test_signtx_multisig[paths7-address_index7]": "06b525811ce35c74b88728673f2c9211c0d6d04d24891516d6dd6960a5c14d34", +"T3B1_pt_bitcoin-test_op_return.py::test_nonzero_opreturn": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_op_return.py::test_opreturn": "32148b4a1a424a4f615c9983523f7d1b615e74003766905903e7ff3327928107", +"T3B1_pt_bitcoin-test_op_return.py::test_opreturn_address": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_peercoin.py::test_timestamp_included": "9e85d56e6cd5eb57096242ba9779bc9eec4bf4fafff0a7d7720998edd58a93ab", +"T3B1_pt_bitcoin-test_peercoin.py::test_timestamp_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_peercoin.py::test_timestamp_missing_prevtx": "5c6af00c1b383d5c45d6f5a4068ad4bc1cc0771e0e3b7a139ae225e7399394fc", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[NFC message]": "1aca588fc005096ed8f8552368a166f5d4cf886d098778df9e49d7f136b1a9e7", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[NFKD message]": "1aca588fc005096ed8f8552368a166f5d4cf886d098778df9e49d7f136b1a9e7", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[bcash]": "22cf9ab09d4ce05c4f0694c6d3666ec45fc722bd7d14fc7920677ac3ffaa6b9a", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-p2pkh]": "2aaeaf857fab465a6bfd704f0d2d86f94e3bda0bd213e583c66f32bfb867b571", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-native]": "dccc5330764423f1a4a507b7ed27fd76e0a4821a14b7e9e0dbc562b4bc18e492", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[grs-segwit-p2sh]": "21c24deefadebfc7abcb0a396bf58b167d2b82898346b700e2d066fa2b7b080d", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh long message]": "68fd86301d29147f4c38df2ec0375584d67a96e340281ec028151af7d2c7e113", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh0]": "05c6cae6c2f01acfa39126e978f3f6ed4eb090c433006753dcce31da7e40ae01", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh1]": "05c6cae6c2f01acfa39126e978f3f6ed4eb090c433006753dcce31da7e40ae01", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[p2pkh2]": "ea63f8a3a7d558c0af993e9fde718ba907627de6fac6e2af610380ca56b253e2", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native long message]": "1ccf293e63f3730ffa713d7fab7fd81dba1c959d7a3d65e6d41b7f65070266a3", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native0]": "67b4d34596285e2d2d2b39c515ade60fd2e12944b6effee5a02c9082f9e07942", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native1]": "67b4d34596285e2d2d2b39c515ade60fd2e12944b6effee5a02c9082f9e07942", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-native2]": "8aa7f4841eedddedaacedb3ac34592eae9ad4fe719ff24b2314fdeb08170a2ed", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh long message]": "a8aa6cee98d28f406682cef738dff8228acca14f50c09d2c4b2a570c49f97c6d", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh0]": "b5ffcc9cf60273af5332494aac8e9c87b134509499f8dd03677f5ce6311f8807", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh1]": "b5ffcc9cf60273af5332494aac8e9c87b134509499f8dd03677f5ce6311f8807", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[segwit-p2sh2]": "5c14feff11628ee59f29fa17c5efd91833c43d6477739fa425f907a7e2c0b69a", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage[t1 firmware path]": "ee806dba06fdb6f80d18adc611cbaa98b5038f8dfb5d6da1de8309dc20bdf570", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[long_words]": "857a19ad1965abe4e6b3993dd698fd8a65708ef63df4a6e943ea8e599c996548", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[newlines]": "8088b8cd4b11a33f125e587bca3fbeb1391e92129f49a93325b6a70e4d96103b", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[no_spaces]": "07fc10ecee988fb21daa2a6cb127dcd1da231d21d83e91c5318d0f2a5c55e85a", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[normal_text]": "358c7bec8f55556cee3ebffb274171aa84cd33140d1bbd19085a991aefea6d5e", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[single_line_over]": "e646f8b2133c654731ed5c1f6c9b4022874b6997dc0deaf5925c14bf5004224d", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_nospace]": "440fe6e6dfa1bd58e6bcb05a2a6a11de78671bb5b3e9974265a209f98c7fe24c", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage_pagination[utf_text]": "c7827f3df0a70afda0e1cd170c3512a83ba581c9e249cc5382a6aa6ccc16cfad", +"T3B1_pt_bitcoin-test_signmessage.py::test_signmessage_path_warning": "b361660ac8ffd50d33d178f095e26816e46449e3f69793a3cdeefc6af20a6c3b", +"T3B1_pt_bitcoin-test_signtx.py::test_attack_change_input_address": "cae13523bdcdab47fd35e3ad6fdbdff42609c741cf7ab989bee84e5ecfeed213", +"T3B1_pt_bitcoin-test_signtx.py::test_attack_change_outputs": "7133ddaa4e95252209dee822d8dfcdab149469ad47ff997ed741608ccaf47f1b", +"T3B1_pt_bitcoin-test_signtx.py::test_attack_modify_change_address": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", +"T3B1_pt_bitcoin-test_signtx.py::test_change_on_main_chain_allowed": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", +"T3B1_pt_bitcoin-test_signtx.py::test_fee_high_hardfail": "741d377109a491e9d0164ff4dbba243715fee3716b267eb4d807ad92b8cdcf04", +"T3B1_pt_bitcoin-test_signtx.py::test_fee_high_warning": "69f3a77a5d83d3939a37837d1f26009ef82a727259cb15360bf2028801523270", +"T3B1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.EXTERNAL]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx.py::test_incorrect_input_script_type[InputScriptType.SPENDADDRESS]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOADDRESS]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx.py::test_incorrect_output_script_type[OutputScriptType.PAYTOSCRIPTHASH]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx.py::test_information": "1ef358a831c64a37f26b2ab801badf667c47abfe98d97618422244992318f874", +"T3B1_pt_bitcoin-test_signtx.py::test_information_cancel": "8bc3ab92904669dfb97083622592cc425f42f4d34ec2e6b0daa15719ec670d81", +"T3B1_pt_bitcoin-test_signtx.py::test_information_mixed": "642936c0c5dbabadd2570aba8d4d50b13f86d9a2cb15a21832bc34217a56a496", +"T3B1_pt_bitcoin-test_signtx.py::test_information_replacement": "6838cad9b2dd40192d35f635b7cd76b405b4398e013a2e47cb4db43606496159", +"T3B1_pt_bitcoin-test_signtx.py::test_lock_time[1-4294967295]": "25acda93263db0c84b6262f864914baf1af659709c7c66d775c3235c115177b3", +"T3B1_pt_bitcoin-test_signtx.py::test_lock_time[499999999-4294967294]": "8bccc746c54f95cf56358d823056a01bc01c23e39ca488bf3c94cab4ffa6a07e", +"T3B1_pt_bitcoin-test_signtx.py::test_lock_time[500000000-4294967294]": "9712552f3b4db2b94170f47bc259dc723f66baf97f4dd47035bc4a54d2c622dd", +"T3B1_pt_bitcoin-test_signtx.py::test_lock_time_blockheight": "3742d4c87cc5534bd93aefb662997a7654658f3bc7c16a2c5e4547d60d6bdd1c", +"T3B1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[1985-11-05 00:53:20]": "4a975268dd1713505706a8de0dc64c5141a09f47b325304c353f46e4169a18ea", +"T3B1_pt_bitcoin-test_signtx.py::test_lock_time_datetime[2048-08-16 22:14:00]": "89bdbb30ab72267cb9987097a27e1939c777fcfa0184f7c05a0de5ab5722281b", +"T3B1_pt_bitcoin-test_signtx.py::test_lots_of_change": "007750b3a0a6e92eff7fd522a8ab01ebb0c4a39f859b8de202ddf16a5e19148b", +"T3B1_pt_bitcoin-test_signtx.py::test_lots_of_inputs": "694332ed56821a7121f3f40e671ecaec181e3eae35dd686a1d3989e3cf17a85a", +"T3B1_pt_bitcoin-test_signtx.py::test_lots_of_outputs": "acf635b3ce818469a9b1243e72530d53e9d9c20ede74cd45a846356b716a0b32", +"T3B1_pt_bitcoin-test_signtx.py::test_not_enough_funds": "aad51c690dd3ff84ad8d710d08529b257651c43c2957ead610fe27bdef45bc55", +"T3B1_pt_bitcoin-test_signtx.py::test_not_enough_vouts": "dea93a8a6323b35c303ae6c77d7c75d67fa005ea667d71a9d37e7d5d08b3af06", +"T3B1_pt_bitcoin-test_signtx.py::test_one_one_fee": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", +"T3B1_pt_bitcoin-test_signtx.py::test_one_three_fee[False]": "4090d93136cbebf53736d4e69135ff1c73e4149688235d109b74e6c6962e9abe", +"T3B1_pt_bitcoin-test_signtx.py::test_one_three_fee[True]": "e8836bc076ebf6609c902c80ecb8468e0d83b3a1db59c2e26156018ae6972f80", +"T3B1_pt_bitcoin-test_signtx.py::test_one_two_fee": "b053e2eba2b7a3e8f51019446e16436f731689eefe63806140ce8f806800382d", +"T3B1_pt_bitcoin-test_signtx.py::test_p2sh": "bf0664a89b33d8bbb2f8982af8358e3a2e145b568ae9a025cbc454d22e2916e7", +"T3B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[branch_id-13]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T3B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[expiry-9]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T3B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[extra_data-hello world]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T3B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[timestamp-42]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T3B1_pt_bitcoin-test_signtx.py::test_prevtx_forbidden_fields[version_group_id-69]": "b3704af8f64a56f0bbea65208e5a1565941c976e29cfa0abd4a3d06cd504b2dc", +"T3B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[branch_id-13]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[expiry-9]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[timestamp-42]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_signtx.py::test_signtx_forbidden_fields[version_group_id-69]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_signtx.py::test_spend_coinbase": "448ce4b1b8ca8f3014e9482b09353a4926d6a0f7ca3bbd6c0a43e8c34948f53b", +"T3B1_pt_bitcoin-test_signtx.py::test_testnet_big_amount": "0cce1794d350ecad65feeb95fba4f9f3f7d8aafa1ca32bc8a112d5b506d72441", +"T3B1_pt_bitcoin-test_signtx.py::test_testnet_fee_high_warning": "1bdfe9417d6eee51c288f7bbf06a3d42378c7cf989a76a7d7d8e568465829ed8", +"T3B1_pt_bitcoin-test_signtx.py::test_testnet_one_two_fee": "8c9da48a20313b762a730ec3c1336b96c485bf66fb44ab521e55bd8a38355f0f", +"T3B1_pt_bitcoin-test_signtx.py::test_two_changes": "3c8de4e132765fd1f3cbd56c4b078dbc4a6be8e98c63f1ce7098321d7aaf87f4", +"T3B1_pt_bitcoin-test_signtx.py::test_two_two": "f608e7ce6acb3b54905ba467b57371e410a75e59592f2ae31f0da1fa56a2ec81", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.BITCOIN]": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MICROBITCOIN]": "57cbe912e9c1d20cb61432cae409851a5a03fe67698c530b8fcbefe4b2a5902f", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.MILLIBITCOIN]": "56beb196e989ff48e4bb664bf42f20b6340d799df3cad457fc5e1995b1596253", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[AmountUnit.SATOSHI]": "ebb29b8efec06134cb28ed6c7653301c97744e9278808a4baf2a22542c4edf03", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_btc[None]": "49a2d6f757cede5714b8e5bbbda6bee5866d26cc9fbbc68467cccf669768d64d", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.BITCOIN]": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MICROBITCOIN]": "2bfc3592de14d68f7be49d107a57e494c9f21b7c1ad4badc87b8cea0631e7930", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.MILLIBITCOIN]": "158bb4e6fdffd71074f87193459f5b36c936875258cbc97d41b41bf735178539", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[AmountUnit.SATOSHI]": "d4d0ddca70e1620f398a46dc8f616748161972586310c028c887de67a9decf31", +"T3B1_pt_bitcoin-test_signtx_amount_unit.py::test_signtx_testnet[None]": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2pkh_presigned": "79606fff871c3ec7ddb01ee8b02aaf5ca3f1e399ee651fb9d694d9cf83dd88ef", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2pkh_with_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_presigned": "b60a38e30ce6a162eb5948dc7bc479461677acb96a040b390ade4c8e54761dc3", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2tr_external_unverified": "faf3027b8acedecca493ab1ad9be701ce843c6155ac2b48824e8c45c24364c77", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2tr_with_proof": "b0cbf6ce07ae924c0043fdeaf8a7e8811deb2c19fc9eb126df66de1f3b9550b7", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_external_unverified": "8d544071dd0aff5cace3ee52a076dda3f4f3dc5bbfd5223476c2436940ee66b6", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_presigned": "05b081aa69246c30966eb0d6fc6a2ced955936fdc3ca0214c8053e6bdf91c69b", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_in_p2sh_with_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_presigned": "a953cc5825d8c042d000fda59b0595b6dcd92d902400e5a0b7c618b058918e7c", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_false_proof": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2wpkh_with_proof": "bc08af6ca3da9873d684db863bf8046efdc5f40ec911f9e23914c691ee58a7df", +"T3B1_pt_bitcoin-test_signtx_external.py::test_p2wsh_external_presigned": "13530a7f6d37fc91b50b3842d7784d26bffa7c1ab54e0b179234034810196c89", +"T3B1_pt_bitcoin-test_signtx_invalid_path.py::test_attack_path_segwit": "07fecdcc98cf5e4b76860186f4a85a9cbd8f6523546562d03e05f728895128bb", +"T3B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_fail_asap": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_pass_forkid": "ec6b07c65e33935b71d596d74aa7177c1b2b5e66125695817987045b83ca8aa9", +"T3B1_pt_bitcoin-test_signtx_invalid_path.py::test_invalid_path_prompt": "82b14adb8637740fe4309583013bc1efce373e6234e9334653997b84c88e7f3a", +"T3B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_inputs": "74f877874a89852d8d6922550f1298a7ec4d3a476aa9db00f13c9e61d7130fef", +"T3B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_non_segwit_segwit_non_segwit_inputs": "ae072db7693515a25d1f00ef2595ed778ba7853c74686432d749fa2eab5728b0", +"T3B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_inputs": "74f877874a89852d8d6922550f1298a7ec4d3a476aa9db00f13c9e61d7130fef", +"T3B1_pt_bitcoin-test_signtx_mixed_inputs.py::test_segwit_non_segwit_segwit_inputs": "ff2c0f7092ea0ea438ee793cb6f3c25fb4a3711ec86b18e0f07a952b39c466ca", +"T3B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_amount": "5947469ed37f0d64474e217092d9a54955311e911971caff6efd77bc1dc73f2f", +"T3B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_mac_refund": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_payreq.py::test_payment_req_wrong_output": "59ffb3f97e5cc2c1d46af7b63a1c40ace7be43540d48e92a53e7c96e52bca50c", +"T3B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out0+out1]": "ce8bbcdcec3bf39663b89dddb7cad99103c3afd7e8cc4f2a9796dce3c49161cf", +"T3B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out012]": "016f4d5468c81b127ff63e20505711424943439dd997809aa419e3ab511b335b", +"T3B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out01]": "684d406867025a47fef09e15d2f73a2e1bf603e2a9aca1bf2592462bf7a509ac", +"T3B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out12]": "d04b3e8845c7adf9822a6d66fdf8e00321421663f457811d37800d1d76e5a962", +"T3B1_pt_bitcoin-test_signtx_payreq.py::test_payment_request[out2]": "3396480807b91457e47304c8b5450aed31771cc2da2c2519a0644a37ecbbde9d", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[hello world]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[x]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[hello world]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[x]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_attack[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "75d18f4821d8a92744acfd2c0e37ce2fea84b59c557b614554a05df164608aa7", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[hello world]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[x]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", +"T3B1_pt_bitcoin-test_signtx_prevhash.py::test_invalid_prev_hash_in_prevtx[xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]": "3aad46e893c79ddd5e2c7cff269e224657a0866d5a49482fb1f717891bbe686f", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_ext_input_amount": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_attack_fake_int_input_amount": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_attack_false_internal": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_attack_steal_change": "1af2f08ed7651ae2b580c4b912532bc974086897980b3634bb39de1c622a88ad", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2pkh_fee_bump": "902e098caac2d73e6c8516549d2fb26ce2c471a4b98f72a7b1886474a0772656", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_fee_bump": "5b17a1076f669ab5ac14403440753b2c7428d25b9d21c3d540da6cbff9c5427a", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2tr_invalid_signature": "5b17a1076f669ab5ac14403440753b2c7428d25b9d21c3d540da6cbff9c5427a", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_finalize": "7a102502ac4c81057c470175d72f656e8fff1d95a06a18fb40c4d82d22c18ab0", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_fee_bump_from_external": "5bd835f91be0b1a135cb253983a908a789fd5d1ca3bad1292ae8b9b9aae240fc", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_in_p2sh_remove_change": "4ced177d00057bdeba9d847aff796f5c72d9aa789262c116a3a9ee7d16b05276", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_invalid_signature": "7a102502ac4c81057c470175d72f656e8fff1d95a06a18fb40c4d82d22c18ab0", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_op_return_fee_bump": "bb5a14afa32512cc6ec833eab5cb44d4fc13bd7caa6490d25469fb5ba47b1aaf", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909659-90000-02483045022100aa1b91-c9b963ae": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909718-90000-024730440220753f5304-ecb983d1": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909800-89859-0248304502210097a42b-7a89e474": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89800-02483045022100af3a87-80428fad": "35fdfda7338dcca034406cbe9b7819ebacf223d1ebc9234603e566d44cbe5a7b", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_p2wpkh_payjoin[19909859-89859-02483045022100eb74ab-881c7bef": "8fc5a62bc0b9562e4e8f0729bc7b7dbb7eede514417860184616697b1652fcb1", +"T3B1_pt_bitcoin-test_signtx_replacement.py::test_tx_meld": "478a385b044b693b9490db2744bcdbd68787982b31ef40eaf7f890103594ad4c", +"T3B1_pt_bitcoin-test_signtx_segwit.py::test_attack_change_input_address": "7dd7ed545413565a43efac561723f0e9587706a84cefaccbc49da7ba8d5a3d6a", +"T3B1_pt_bitcoin-test_signtx_segwit.py::test_attack_mixed_inputs": "4c84bd1cf328f379344030e91ffc565df2e2814ac36f437a3a3f1247789d0d1a", +"T3B1_pt_bitcoin-test_signtx_segwit.py::test_send_multisig_1": "e5762f2ed2619e3c0743a3faabc2c740cbf1d4534dcf22f5445056839c75d306", +"T3B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[False]": "c6efbbbfd9b3d4e0ebcdccb50a8c6a099c034cc58ac4682fc77a6d7db334c78f", +"T3B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh[True]": "7126c84e351a2ab5a783f0b5d4f1fed69ba476ea87d2e88c6b882492591001d5", +"T3B1_pt_bitcoin-test_signtx_segwit.py::test_send_p2sh_change": "87a81bfefeeb82eaa9885f544a9e80b59f625c9630f1cb83416c2a011630a28a", +"T3B1_pt_bitcoin-test_signtx_segwit.py::test_testnet_segwit_big_amount": "54effe54b94288ab1b2005cd60434de3460d3f258e11f42da7755587cd9ee826", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_multisig_mismatch_inputs_single": "4063e82e78563c83dd3ebeab2cac83635883dc23b1f85cffabb24c2017b2402a", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_both": "e272a728194528f842c216185632c2a728e0bc8cca7ed404ca854b748ba60285", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_1": "d13c54438cc71ce844b0a366d376471bba39ed0904050583d2c3da87a272215f", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_2": "e75baf7503ea75b8662cccb9b3d20aa01c4850ae5cbb50ab64f2b9f173a53019", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_3_change": "a152ffeadaa02a9ee86f85a98d56e80c65f0f67a3c8fcad94300befeb73b3627", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_multisig_4_change": "941f0db7fcbf12561d50f9e3faa85639d6316f8dedc6f37856364ee8fbace079", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native": "8bd57ae26518d65901c7cfd64030caeb4708d81453339afebf58569763345a13", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_native_change": "d9641db03f4e9527a1c68365adb1b6294b9f8e397df4fc0303cb2047fe281d55", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh": "5e9acbf1b9033cfd08beefb5027359b95b12bd0583112f33a78166bfbab82bf4", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_p2sh_change": "2b3d96d08b34b6e42372e9e215cf3140d3946deb3e1f60611f9112f5525c9556", +"T3B1_pt_bitcoin-test_signtx_segwit_native.py::test_send_to_taproot": "42d3f9753ce2b3b06fafe89c864dc4d92f019d7d29f0d1af12f1ff0459a1debe", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_attack_script_type": "700b9e8c2c150fd8289482716f5beebe8357b06ffc53e29ce990caf11770a09e", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1pam775nxmvam4pfpqlm5q06k0y84e3-a257be51": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plllllllllllllllllllllllllllll-aaa668e3": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1plycg5qvjtrp3qjf5f7zl382j9x6nr-5447628e": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_send_invalid_address[tb1zlycg5qvjtrp3qjf5f7zl382j9x6nr-880d4a6b": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_send_mixed": "5d56eedf8d78fa57f9a802addcae2bef77db040423e7ee3784a0440113373855", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[False]": "8bf216f4661e22abbb69cb92117605bc7268643c29bfff2065808b1bb879825c", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_send_p2tr[True]": "377d014483771250f25e361d75c2f29c7f1badaad46810c64db4c1c5222c360e", +"T3B1_pt_bitcoin-test_signtx_taproot.py::test_send_two_with_change": "b99743b95070418745af5563003cce38dc75f739c4d44ebddf8ab969bf327f06", +"T3B1_pt_bitcoin-test_verifymessage.py::test_message_grs": "f5618215034a9eea04c017511bf8267d6289ba7eae37b6cdd4193949d12f9632", +"T3B1_pt_bitcoin-test_verifymessage.py::test_message_long": "2697030b5f0c6d3cc7f4f9c0bccdd526e41c42b7ff1f689899b09350fc39e5fe", +"T3B1_pt_bitcoin-test_verifymessage.py::test_message_testnet": "7e04d4ccb09aeadf361c79d0be39b903abfbc894e6a7c3822eb94a022315551b", +"T3B1_pt_bitcoin-test_verifymessage.py::test_message_verify": "e5d8c367d3c5e85d4b5391fc4a78d84fb07bad7147c348f6ed1d82882ae55326", +"T3B1_pt_bitcoin-test_verifymessage.py::test_message_verify_bcash": "340d3d9542e6076fab14530ceee8070b580f73e5e3aca4109905ec2168eccbf0", +"T3B1_pt_bitcoin-test_verifymessage.py::test_verify_bitcoind": "1e44f945e8b166b8366dc6345e94e51a1812f37bc9e6311a648fbd94f9db3344", +"T3B1_pt_bitcoin-test_verifymessage.py::test_verify_utf": "cbe648aa79b848f2b0e65fc560b5e5b54257a5aeb39b04afa681eaf45b40a2e5", +"T3B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_long": "05f7610e6411b71d76acf04adba3ca4b58aa941297dd246c47860b4eebfba428", +"T3B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_testnet": "791a9117903f261bc9de53f305d59ab871bf75f02acf8562eff69b856bd83900", +"T3B1_pt_bitcoin-test_verifymessage_segwit.py::test_message_verify": "ccd272f62fc997f3746738c97e7b3d8e68c2f12efc726fe4363fb6d923954d43", +"T3B1_pt_bitcoin-test_verifymessage_segwit.py::test_verify_utf": "8ff99ace0e07ccf5eb63a0a2e5b8f833ee15ccc59ae8985d8de673c4f227d6a3", +"T3B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_long": "2656ebd7cd63635bcd7201716da6168cd4050e9cffad5de01dfd5e2c2a624f0f", +"T3B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_testnet": "46b64e13b71aa327a98ac77b3f52e3f700198f91839fe221777c65537569ebb0", +"T3B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_message_verify": "9be31bc401ab094eb1b70f88b373a376f86fb9087b9f5c88f101d5c19837dc10", +"T3B1_pt_bitcoin-test_verifymessage_segwit_native.py::test_verify_utf": "f4d73269ca451b045751794d34742a6c1e6ff7aa7c7990c8422e30d30621ae43", +"T3B1_pt_bitcoin-test_zcash.py::test_external_presigned": "99341a5d930925f7c16aec2c0f39eb32a3041f17c23cf5966928e1f28c534653", +"T3B1_pt_bitcoin-test_zcash.py::test_one_one_fee_sapling": "2ae3538ad723addab1b26e54911340e1908ae806a950ce844407391a9e0a80b9", +"T3B1_pt_bitcoin-test_zcash.py::test_spend_old_versions": "6ed47a22b8da9069904e65c010e196ad21f7f781d1ef75ed6edc9cc302ccf2be", +"T3B1_pt_bitcoin-test_zcash.py::test_v3_not_supported": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_bitcoin-test_zcash.py::test_version_group_id_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-derivation]": "47a0e3398bc442bda07c6f67e4f2c667a5fc65a998ca71260fc5a4455beadd92", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-icarus-trezor-derivation]": "c14c95c42c9055baf829f33dbb8c158e0b403626c0b817585df5c95552f0c04c", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-ledger-derivation]": "935aaa5304dacf9114e1ea358203721ad874a657bd9befaa76fbec922c616b49", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters0-result0]": "26ad1a315a8b8e9c002280cf1310bf7c60d055b93ac77a1be77d512b5ed8976d", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters1-result1]": "8521779a0c507f3910ff93dfba52d1fac447c06305d9aaf131c4a1cc29593724", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters10-result10]": "f51fa7950f917bd8e6fb8ac1b8671bda5e9e5b16c55e3a5e0ec0a5d0d6b4f1c9", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters11-result11]": "c34ee2a8fdb0ef66ce963b8049c0ec756541ca54b4d0ce258ae1283acd030e93", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters12-result12]": "34b8fc6c139ebba92a60234a02cecf6d318bbbd47bde659ff8eb1d39384128f3", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters13-result13]": "ca0b6d70c591ac46ecd118dbd423ced0d67d3a856b43d0807e556787fccba070", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters14-result14]": "7a561124da4b8e963edcfb0080c56efab488540aa6bd41fbe74b4729faacb42d", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters15-result15]": "01081ac4f3447b25bb5792fa7aca0e4983ecfb934c19df697a30325dcc39a8a1", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters16-result16]": "d5eb5d591db1bf42df73990efaa75aa5e62779f1d13c939348759614c0502063", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters17-result17]": "3698600b91fcf5e841303fa83342e4078648b9d6ca85bbc1c22d5e177bd19144", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters18-result18]": "9f7456a1e9591e32ce96019b7304411292b104f2f07fd3a239abb8323c40f185", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters19-result19]": "ffd5ef061e917380e2eb4313948a3871b52717306447c75e3e8eb50598c9cb59", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters2-result2]": "10ae8ae6f8b1bab9e3666aa82ea7c632a40da4636073301d0ad57e3b0b8386c5", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters20-result20]": "c0dc75e43c9fc69ba50a4d65234872d11a73f08bace36defaa8f2e9800c29776", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters21-result21]": "71f849a568a255fbcda4805521d6f05fa1f7af8a913371c78fdc54e0dbffb65d", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters22-result22]": "afc249b91f2d7c98b961cac87435da86752c67d4e00df91145a46d77430d86a7", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters23-result23]": "636d0889064aa87464a55318de5f0b792acf4a0b666a54aa3fbe6e0470bb7604", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters24-result24]": "213fe5af9951d852e9cf470d2cc56860f7c687d813f1dcd440763b0f1748a312", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters25-result25]": "b4223effb44cd5575e3d1f8da6bf1af369ab069768be6fe3272e5f294fec6116", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters26-result26]": "1bbb1c519946e2d4c89b74ad118b303b85d496b04a8a711a4120fe3c3e0092be", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters27-result27]": "4a045f2e966a7db7a66059ff3e4c1bb3b2ffad214afad75a40fd4068a6bca163", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters28-result28]": "6658af3c4a9704e33467c3c19c085adf9670698edd7762d02618c498b63b82cc", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters29-result29]": "3dec6d8398b3662779ee7af167e9c2dc043fb7da64826300028faf929c99e209", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters3-result3]": "078c0e37534983658dd8cbad6840cf295f15c1916b601c992f3b581baf990361", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters30-result30]": "adb08ba1befb259661eedfc9550ac6b80a03042ee4fcae1262ce6e9265289b0e", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters31-result31]": "5ec5391b2028560515d2e94fa411fe9a502d18b91dbd7d8a85526d0915bf5b00", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters32-result32]": "e55d6217f2dee5fe25de85a569f986782713165a7e21059904870bb0ff3b3fee", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters33-result33]": "1d1f14c94c10b490faf2324e9088d92dd9ff8fcc9086ea459745bf92a8f3b9d4", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters34-result34]": "c6103b094f5d83709d431f0a1822e021656dfab32e9b79806915f5168491358b", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters35-result35]": "abcae029e87fe7c11cc6b6e6a2c4db14979cd4b7b06bf420d3fcd9786f0f9ac1", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters36-result36]": "6a6303e1041e0f4a6aa706156df69e7bc1313c73130e96b774c82569b1bb0dc1", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters4-result4]": "413f03b2ee5c1f3068614b1c6af4cb89d01956118f784e22798cfd73c2448151", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters5-result5]": "12830c9317f0e7f4c9f7f27602b3cd65efb119ab915b7144d5d9c41d30651f9d", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters6-result6]": "854db3f5807707099c775e582865fa0b9e0e80b373ff1bafaaeb94446b227b74", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters7-result7]": "83e6057b65c736d0fa6b1fc80a6f7d313f29742c0533ba348397a1f233758b6a", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters8-result8]": "4c960c3ca950a6763a87ccad3306f11db088303a889900370f0858fcd804e6db", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[False-parameters9-result9]": "b0f949cb282bcbf194e1db4ea50d0e710c732b583e8b57c9bbb6083a27b18810", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-derivation]": "dc1cb75c5089c9c05ecf1bfdeae1656c0cc22342321637d7e2d69eb4896fa305", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-icarus-trezor-derivation]": "c7ef04887e64b390b75ff1ff74339f86571ff59b0c6b4fb17669fcf6535f73b9", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-ledger-derivation]": "2c965cf7958cc99d32c5eaac2f42b91a7e918b850c2dc2bbd44afc586140cc7f", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters0-result0]": "3f063a5386948ddaa7579bf8c818f6ce0986836954d2a573fe5617f014c4c5c3", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters1-result1]": "2d4e34e32e8531f30630850ff252f25f5640939f454746eeae7b314a6b14799f", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters10-result10]": "55a9b96d24d2def72f2fea7b31848cb1af5bd232dd894546827bac7fc13aa5ee", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters11-result11]": "4e324e27708c39f62009937d27ba83bd555421bdff5b0fc168b63d152228ae3c", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters12-result12]": "09e33cea9554c0cc1e7ecd41654a4c078223b5e077e77673de977d84d3c2b544", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters13-result13]": "31b2da2096eb2427cdd31b338cc49d4109bcd6e8c8a90de3adff917661d2cc15", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters14-result14]": "1d613052c765e85a48d9e32038e5cf3d557c9eb76e166b077c22e912e47577df", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters15-result15]": "68fa6879ce0ed9e93d60521d8e480ed6b23b1bbcfa049ae54513231240ad2a09", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters16-result16]": "ea5f735af4c040f8b685ce92788eb8a7f6941505ac433e230c8f525176066e9a", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters17-result17]": "2ccec6d1e6e134a482f67cf95e78ac35b20e3d645ab1c2bae621138bb3f1c580", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters18-result18]": "97e736471009b4724609c203cb19c03943c90aeeb8caec0a2e3843a0b9847ee8", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters19-result19]": "eb66d4eaf1e8080333ac29f49e553f1dd13f04396f334d57e491a56ce18ae31a", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters2-result2]": "4cd976cf6aff700ed943c52365e1134729b17f2e8de9301ad2beba5d6d7c3ae1", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters20-result20]": "0fe302168baf51f2febb25f08e6ce01109ad7b8247df3c5e206c148a6993309c", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters21-result21]": "a797dc62c188496d8b15dcaf6f4fe42f695774f49eaa576d4f617e9e124d911c", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters22-result22]": "7ccb93504f6268a695cc3d226aad7de6c19d194a411ffbb26c61a7369bea4d48", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters23-result23]": "bce29c10f629e9c775afdd8cb20fe20f1bf253eb5bf595aa805daea0b6a80cf4", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters24-result24]": "b6be32e337585ec8a7116e95dcf148f5ad434ea6b225d17a6a675766516aa9bc", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters25-result25]": "fc75f2aeaed0d6d849f5f86ed035269ccbd680213c48cbadd01c912874102ee6", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters26-result26]": "bc531e7021c84e7c94a8de07674df96ac8d3ed541e94579af999853e65b91ea8", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters27-result27]": "4606d8cc2927e65a9401fd508f0f115d3f6c66bb9795ec610b8eb02512dcce30", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters28-result28]": "c8849521fc07e9f7d8f4e9ea5fe4a5b6c077d7f1d5e0f2070bbe623e2e72ff7d", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters29-result29]": "a04ad3a574798ed19e45dfbff416e78447e0a9a11c4ac86f3f1f895e00c953e1", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters3-result3]": "a13139e480abe217402ff197c5c32032f755ff271f952751e3e937a9c949c6fa", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters30-result30]": "aa4523d1090a9191d183693b730e820db024a940ee54ed251c3905ae404a7c47", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters31-result31]": "0f73a575cce8c4c60f3bbec8bf213e739a83fda0327de7c6379490fdd2629790", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters32-result32]": "41954e328596c7b5b987e8246c1ac43612fd4da34682f3a1f64e6f90ff842231", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters33-result33]": "142b5b830dcca4fe1716b1d25480b1c9fae20adf4aecc9060dead61ba45e179b", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters34-result34]": "36be051508ab69370d9c30e3449f704d01627f6176a164a7ce23ae36a46fb45c", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters35-result35]": "ccbc488a176010cadf53e818905f47e694ad6c416de5cdb407d506b3e11628f5", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters36-result36]": "e98eb8d2a4f158d00cebdbd6dc71a82b27c8b098f6a195f5d6b90c9e6c0e2132", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters4-result4]": "e7ddc1e34cfba9f9efbac4971b696254f7d5395b8edaa7ed84d75941d8894a2e", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters5-result5]": "20c2eff8a92d3330c3a16e0c3b970cbc9d6a0b941e2b2fe98fdbcf30244bf475", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters6-result6]": "d9dd3bc28f52552eceb1f38e70e9c1159badfa41da607332f9f31403c002d951", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters7-result7]": "999d329bea6533003fb930f19b0370a727814b3c8a30175f96e23bc00b5e6012", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters8-result8]": "b21c2f39fa094ae2b24470b28cd03b89365a944c975cc12c2996d2e206e3dfe6", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_address[True-parameters9-result9]": "170a958cdf05531293b6ad368625ba8438dea17f7023df2bc4daceee7efccaba", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-derivation]": "af84ddb181962b4fdf19f105449ed085558504a349ac4884d4d700248c252620", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[icarus-trezor-derivation]": "b967542da82cebac1ed73715ab1be29dbe36274a1281f40a27a7fc35250c2f78", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[ledger-derivation]": "e8627cfd6adbd60a96ec9a625e5db9e16b317ec728949b84e77ac9967433e6fe", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "5c40b9d2642c80d67b73a3b768e16bd3ca94341793ae7b035106977f264d7f20", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "7857f601bde4aafe36f27a31603179d8f31dbd709b80b67e9a2fff8f6941f64d", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "18ab4af623385575786fc557f7582c39324034a3a0ad6ad8ebd7c5ffb82a7e8c", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "2961cc09272c9ffb95a1d58d575b9a099f9f200a062bbe8fb8e654f7bdb72f69", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "867801f543944c6410cf99ebc5b9407d63f1614553cb2f582004b92956dc210e", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "9e97697547d3fd39255d61e1d8297e91bedb0df211f692fc69035bde091d7412", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "a4240f73247bd9f5b86f57a7c497ac079f296c884148d776033c7fa824ebec93", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "f6754477b982f6b136f7395d92982bb6ef7c9d476cfa5e85589a72e8bf32e0b2", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "1e318c7fa392a6a0afd093e0338ad79783b5e2fe7acf7f2af32668b2f0a5b2cf", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "da1d6829e7c390d1c5b084f071e92945dc0e3e605f70f25dc649947b90eeb9a6", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "4faa00c94d98435c2f0dd90ea6368eca7600005e73a8cd9c05002b805db87acd", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "8c52fa888fb24efe75498b88d95c3eb026773b17f7737462734b55ebe0cee33b", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "829df5219958e1a8ec5e000801ec301b97419fd0da771b37c987c4a602b9a789", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "83e43c3e672c45dba62f7b5e3ef72b761726667cf19ef32bcb40af74fba55a1b", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "7afe1a1bcd9ebcc8a95407d29ada3a0d32344cd7c69fb8a8eddcdc07437d4c36", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "fa5f2629504c0fd9123ca74f1fc4250334c318e79f1d10f94e96d9e9c6144de4", +"T3B1_pt_cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "e80537516f365ce4fd95f19d67e4f49b0af7fc48d984f15b9a7ae185d4384501", +"T3B1_pt_cardano-test_derivations.py::test_bad_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICA-3b0af713": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.ICARUS]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_cardano-test_derivations.py::test_derivation_irrelevant_on_slip39[CardanoDerivationType.LEDGER]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_cardano-test_derivations.py::test_ledger_available_always": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script]": "e3a868a8af14ac275a63027422483ab0d13e831339ad451f19d824993f2693cb", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-aae1e6c3": "c0597e6a64342f2fc752e14dfa12d70f0d37f35d74e3f62f38aa66f0caf1df46", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[all_script_cont-e4ca0ea5": "adfa921358f3a364bb8f87f62e8a992fa1526cd9f3e9a70a1800ac0bb21392d1", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script]": "1ebc594ebebaebff152b5cde41ec031a757424b1e3e2880b1e8f38798d56d0f2", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[any_script_with-f2466a2e": "872cf0625a9d6bc588f93665f8e32278522cc5744ca7a82bbb4a1c02f1aeaff2", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_before_script]": "38fec143d6008db6faff3b12d253e02431d04ec54e5216da02defe69570564b0", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[invalid_hereaft-d01d7292": "fabeec370bab8bcbc1d863cbf0641801be83477ef4e213eebc772c70fcee1577", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script]": "d25914ba55a96438465b420188b98e6032f06d5c6dc79162237e8c5d4108b2ca", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[n_of_k_script_c-d93f5fb0": "420742c16bb3036d1282470e9363b3ca08be41a9203dc1b05aa01ad2a8839a42", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script]": "70ade6173f1f8fde21601d42ebe9f4b4b8ca735330de7e32dc388bbf1ec4d5f0", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[nested_script_w-789238e6": "c51a609e1083f5a0f263535f68fe326bc34d32d96fa7dbf8fc0a26b129d0a143", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script]": "823d4e898e86a276bba5a5643806dd975164b8e61f1e69c7ad2139fad856707b", +"T3B1_pt_cardano-test_get_native_script_hash.py::test_cardano_get_native_script_hash[pub_key_script_-1579fe2a": "ddca4e8f8fa95414ef92958f2ea86def925fbfc6502125a3e9cca6f72545cf3c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "b2a31e76bc86edd927322e54f2df7fb655bd083a12166dc3cbe2348e0748ce9f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "1ae2023a2e567a001d054937bf21a34d9475d09dcb873418414e50c69a87592e", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "10c24fb1a54198ea1151a56646b9bc805ac780ecaf3877eb6d06d796a64e0bf6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "d3db9f6287a12ae5d471945f93a11ccce5e7697dd202c914f3931ff726efd3e6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "8ac4be8bbccdcc7d7fba1bd62701435ca558c3a087d32702d11cd62e9018e9de", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "d627fa7a37e986d1ec5e875de04f0a133a4fa937d15ccd3acf7c324e132b2a81", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "6c9996a7a5cbd49f879425915d8edd15b922847cf387b126bc2706744d4599cc", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_a_required_signer]": "350b137564a4c6f1c1d4b8b2e648694302e023973b6900aefa20b9c1162ee599", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "315bee57776a36d3f47f202bbcfe28081e29dc6a13ba7c1ef869110c8eb60a9d", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_output_datum_hash]": "c92b3f66f8b8a30d1699f2e1276c58959054131259fd673d4d59b33628cdffbc", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_script_data_hash]": "38560b5f0c38d50ce894d6bc3a2c9040dace7fce61bcddfd719bb33eb9db3bb4", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "d4f40a08f7f2c9ae234fb2525e267c7809024d3344e6c6f95644e97555cf8990", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "d4f40a08f7f2c9ae234fb2525e267c7809024d3344e6c6f95644e97555cf8990", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "e32f6421784b0dca880a47c46c1d7be47c2d333a1b38779f074123b175103bf6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "70ddb02c428c2f7c90d2c37f73fe1431943b542c2ed3f4e08cd15ca51607527a", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "6a8329f2afe11d0792c083b019afc800bdf6c95a8bab8a366b7eecebc61d779d", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_a_required_signer]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_both_output_formats]": "404db4b0de79da008b2bf25071cb2c6c196da985dd0b2506b8035162376db599", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_inline_datum,_refer-d1082570": "2c723e8fcd3247bf11f0e22163bde5c35132ccb9e1e60e59b77175d8991a9dcc", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_long_inline_datum,_-1f681aaa": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_multiple_correctly_-6545455a": "13f5c6a7308e1dd63752f89e49c8f4bbb6cea29a334c22dae42d5c5de8a4c563", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_network_id_included-d9df16f9": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-57a740e6": "839b0fe1e655714e797e56fb4c595c4443bf8b777c4486545b5ed548be391ae9", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-f709f55f": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_non-zero_address_in-fab7e996": "148666773e7bd470f560489b0e9aecf6800c07e66f9f15b4d2142ee097439d16", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash]": "2c723e8fcd3247bf11f0e22163bde5c35132ccb9e1e60e59b77175d8991a9dcc", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_output_datum_hash_a-84ad587a": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_address_but_-b0da7209": "75b033cc37ade2fbf2c849ac7c46245e19ba82a0e8da1443a6286e94e7f828fb", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_script_data_hash]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "1a68fd64e6df3688e089607767ff1b206ed67e1e2fca79414e6b54c95f26193b", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_an_ordinary_input]": "d5d6dfc3e810d887d3eb281affc83d5040681d65f72a9e4dcb55a672956beafb", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a33e6741": "d74bc00847c3ab2f81bef0d06a660d77cd7a0ff55e28e72273f33670c1393a73", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-a6481374": "7d7df722eaf654a1059f78e3c0ea81c9fc844ced34e7106c697f5bcedc4c0170", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_address_device-o-ae657c7a": "67610063551ce5455ff33f9add79d6c160c8eff64f7d3ba5598bcf31ad25b181", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_base_key_script_addre-d3366a63": "3a87f512504aabf82f99bdcccda069ef7249ad28b6a2efbb4e1c0244b1a77c36", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_device-owned_collater-8f38b4d7": "b9144ab39c41eb558320439df1acd6463dfecd7b0d1065bc6aeaeff56804c82c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_external_collateral_return]": "952280e104a79643857fe5f17b9dadd3a12e182303b7d2e67aad2b220b670585", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_output_datum_hash]": "e264ed1b68873b6f6bd79655f3012ee5e5cbbda9b4e5553f5a27f3b55911a2e5", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_reference_input]": "73227d7886e2af1b8d0a3db3e2636ee4a8c98cefc6b94ede189fcc614820267f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_required_signers,_ref-b419b9e1": "bd5bdb947fd18a3e6f2144b816426d4bb5bd5e61cccd9beb2bc7a45c65e42b06", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-6a67c1eb": "cd0b242d1feba35ce905cd20584084a7cde3e28b26461b5d829abe6f3b7f5f53", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_credentials_giv-72ef969e": "c088d3d110f938e8ae07956ed8f5568a154b2eb0a5cbc951e568937be0a382b2", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration]": "5be9d878f7e8c61a297c3d76e37487773b70d555460ee8ed36451bed5b469df8", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_deregistration_-78f5c748": "9dc0c3f7c592382e090e31e74eec1ca429979cf5e1c4821af447856c7d336b75", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_an-4da9385a": "8b88b66c588b521ae50c84ba06b4f3e087f8e0e309c9f72a991071b0266b8e48", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_stake_registration_ce-46b0a250": "f6334fa109d79b0621afbde1df182defb36731fddaf57c18fdb01751d9178c96", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_token_minting]": "4d5ce6cfa2b5bf32b35ffd255dceb4a94e13b5a536bc96cc21c5c2da578052b1", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral]": "59d476fa4eade5e44d48bdf902811f06693d401cec50c45397d17076173fa82d", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-3f0b305a": "ec16ff0c7672000be69bd4db6eb44af016b4074dcd156dfad5b433bc644de2f4", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_with_total_collateral_and_-c92d773b": "76f6a7a9f00ac6bffc74604e3d5864f3bea6e71583f638ac1cfd2dc668ad278b", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[plutus_transaction_without_script_data_hash_a-9590827f": "45cf11fbbecfa41cdc6e1027296da7f567533df3927898c4474c1318873f3013", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "94fa27f411879326e22cbbd09997a2a1887f3ffd34deb0728a4665792274c794", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-e1e17a76": "199a9cf2ffff6a3cef5baa09537286ee692fbdb472f67a7b00dbb6c809291133", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "3cfb028d33d1b6709e17eec837b1b89b4909891ec9a75c9f0dae8a35f60f3dad", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction]": "8411deaf2d5135d86f62bf49544163f75029c9be28f2c1334ee8bc50e40da713", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_additional_wit-36ba8ce8": "a90638885800e7c37c1c99b3f0c51dc6e05505cae7e4d8133aa953dda730c4a8", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_plutus_transaction_with_required_signers]": "2c905bb54607f417243993cbbe619929feeb989b4a6ea097e563f3b220b0bfd6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "bf84415f943b34cf41da91913506a03bdd6a557284de5cf6e38e685fb28522d1", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-7f1d12f6": "285cddfcf9600e276b0747dc054a3e2eb904a577ebef137ed58a1cc4a22e56d6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_a-56fc16f7": "15f09560b4407b99aade373d0814d3b52400ee820016cc6e712ed8243b21aac7", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "b186bfab5d895c29f9373c4bb3b22bf5579a0801a074fa344e2625821106115c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "2138995788982190735d29519ce8512a0b93b8b1d0d22b0c93e2226e7b70e3bd", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "f3be64527acb5cbc408429838cfe77e66454ae0c11d7385fa50fd3d490f67264", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "798ce79279334fc521811b65b90d24df047fec557e71b1ecc93b60fe1c3b4ad3", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "364cba01e963917fe73b82b4b611d41bd2265c94caf55ad7bdcb37d4eaa7a7eb", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "e1e1309861fd1f1fc8e5f4b5a16234abb58aefc590ba3f49ae1461993a9b72c9", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_key_hash]": "0f2a377b8d8e47e74175904067ed719dde54ba38c9ea65dfe035173ec903e720", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_drep_by_script_hash]": "0bd8ba7b9bdd3c250ab77868e62154a36c4b757da4750e878e751fd603321668", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-5d8f87d7": "0d7d670b7f6b6d64ec826dfcdd61931d7605c96dfa0b404509355ae7f4692bcc", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_delegating_vote_to_predefined_dre-d7163ee4": "9561a0fb91a20e9202f671fc0f763078326423318aa4cda055f6c4c8ac0a17c5", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "f3e1af69c7c6ce3184505e117ca327e3dd55bcf78fc5a0d808b10c977eecdb91", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "0189f175aff67c7dacd8503d5b725f9ad7b6bc77c43d6a99961ff0be9b0feabf", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip15_registration]": "c9107c294912cda84487991c5d4c21c0f84a5d626f163a53f5f9f7f2db98066b", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-a66e1a50": "fa9bfdcd61310f66575cf9333c52f0840c44c9822bc35c30200faf9ccea70a6c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_exter-b18e613a": "0cb7e1f73ac2d6e8dffcd6820059e15b79beb9f0b46be047f1e5e67f98ef8a57", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_non-p-26df89e6": "16fc050f2f942847809f0769dde87591794b3c87dba81d6b38f21a1f200a793e", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_other-6a6c5c8d": "cb2623795c3a84d646c69f382215a9ff4477a60532253e947c2c75053c02b030", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_cip36_registration_and_votin-1b01d6f0": "515f281cb21036b1bcb7c406624960c9982d8834320c1d8720571208becced89", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_deregistration_-15956782": "f3b1b109c395904eeb1f7a6832f212262d6f00ed42b2138bd7c85eb49fd23e18", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-19717d22": "b04632b7dfef0228ce3fa2fb03d06c305bb99ee91751c99346f22f687a2d1a59", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_conway_stake_registration_ce-8a443506": "b04632b7dfef0228ce3fa2fb03d06c305bb99ee91751c99346f22f687a2d1a59", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "161c4e5898cac2afd48a5b83a36c757424f71571e195791072b8d1c7594cb660", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "c9d50b3e30f51f3c4fb2563f3511ae577fba676d99607a126d46102d76fae90a", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "c9d50b3e30f51f3c4fb2563f3511ae577fba676d99607a126d46102d76fae90a", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "20adbb71db74c46a3112039fcbea446a6db23719de09ad269dd5eba74bdaaf10", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_and_stake-3fdfc583": "b3301c1cc9a820d7fd1c10144dae9bf57b3a6502d270f6adb1097e9a0e6ce212", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certifica-e7bd462a": "844c4783f852f6c08dc994b8457fc948a815139b13e3af620e0263b55de79355", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "410b474bbf2559cc81e03c08355d3715d5f6c1e2dedfb647ae5ecdb6e52b369a", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "4d750a75f6b8511cb75b9556ad3eb8b490e6d8f635a6af706e41df36fc8fa733", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "1b30bf17a6e989abec26225038eabd70ccaa4029339e7bbd0148ac1cc2bc6484", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "8ec6f2bd361baa62c05b5d7fc4449c0f3f550ac903dc66fd1aa798947a4ca3f3", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "7b69749fd3cc23dc74a9e196a2105caffad3997daa668dc0043fb6a09d7e3b81", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_mint_token_group_in_wrong_order]": "9e5d87d5e911c98f4ffd5c65d180ea361a75d30125d2c9ea6a17be22b1d50174", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[asset_names_in_multiasset_token_group_-7c1351bc": "282368766acfbe35c7116b299fc07ec912207c61d6b7c0cb905e423fcf3887c4", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[both_datum_hash_and_inline_datum_present]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "b2a31e76bc86edd927322e54f2df7fb655bd083a12166dc3cbe2348e0748ce9f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "6c9996a7a5cbd49f879425915d8edd15b922847cf387b126bc2706744d4599cc", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_input_prev_hash_has_incorre-99d2dc0e": "2233528c96f7a00b3bd480fd5f5ce8d3592b8c5ac8f792074f4b33db3ab15bf7", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_datum_hash]": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[collateral_return_with_script_address]": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[inline_datum_present_in_output_with_le-43c025ef": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "7d9df27cac6de4be256ec54479f744219dd2a15b85d8570a12ce2ed1bbf7e79c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "cdaaaef4d2262a80dfb2f35fd21a8ab75e4253bc15583c6bca0f318dc86e6181", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "0e8e4e3f7908036afd7c69377785452b9e2e98a7af1e824d274c771d4aa0f593", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_prev_hash_has_incorrect_length]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "73d16dd96fcf795d151726e0b801a1f2ae2732367e9f993664b01bfd42024929", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "b27df3456a053635a8da76b61b615839cc88a84706bfc63f24c5423f92bd4c40", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_a_collateral_input]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_collateral_return]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "089375570e455153244b06285e1f358ad91a4eadac351501970ff730f03aa17f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "57d11ee1b1834424b1c4a06d0645e55aedbe5e3b6ff05a13b4220c73dd8edd96", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_reference_input]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_repeated_withdrawal]": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-19d1722c": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-351ce869": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-456f1292": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_total_collateral]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-9f7e1700": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_withdrawal_c-e98b1f5c": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_wthdrawal_ad-3291ee9e": "b6981752591fb8d6a5fbbb7dce766b987fa5ecc4c1fe95d6eb7e66596c634601", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "b27df3456a053635a8da76b61b615839cc88a84706bfc63f24c5423f92bd4c40", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "f65fe70de441efacc9ac21622ff693673d67c76c7773c3cf363da2dd6c79c92f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "e638a21109e889b489858753db4ab7b41c64ca770b1a1a1073b6b78158cb011c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "2904927f1870aff8a01380c7a56119aba293eeb3ff0974c00d35aaa0894100c6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_datum_hash_has_incorrect_length]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "af8c6cff756ebe299f112031c6534aaea46a824a1516ea5bbfaef7d7b5539ca6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[plutus_transaction_with_output_contain-74465253": "bdf99819d7704e5cf76e356970c60cf145a2ea0d2d37e86fda27a2e32abb1159", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_mint_in_wrong_order]": "c97b22a4d2a2b9a6ee69378ec08a5738300a8369cf3e82df5dc4f4625e737341", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[policyids_in_multiasset_output_in_wrong_order]": "0c184f20fc48d22da4a9b31e4ac6797bf85e9104aa59b08281e26e46e3a69950", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[reference_input_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_mint_token_group]": "fa19717442086d19b5f38783962024698c0a082283d8b83bdb224858bddacaa6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "db1ace299e0c9ad8df1110506ead268e0738712879df593dd56421c915659798", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_mint]": "2a41e6bf765959e3290bd8d78713a945df5c629776d0eb8191a01c6cdd14a62f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "105fa54ebd4e98e63dc0047f6a65a3a1e169ab6be4b8295a1d241fca96e8713f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[required_signer_with_both_key_path_and-7d9a3c59": "d9738d1e7ac0a8333b2a902cbb1ed670f0ed8c64543367025d60835b4d96488f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-2d1899d5": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-60961d51": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-790fc948": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "4cb2710e05d4dd5c676ae4ec5206b825e2f877e7c96a7aaa6c0c036ee0ed2f0a", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-9ae6620c": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-c3588066": "f6acd0a6324cb2864a009192f9289aa7440ef7b6278a3a7bab2fa6b88e2a5af6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-d0eba163": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e7a533e7": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-e908b1a8": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "2223568870dd0b48cf6b8167e8705d55f2808e526993a66881ec9c14094f6113", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[script_data_hash_has_incorrect_length]": "4471230e2feac22103ea186960bd8c6e907cc31ddae56bc19c3cbcf64e5bf87f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_address_index_lar-014f81ef": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "bbc3f0bc40a7537be59f8f571b6e9bec4e28876bd541ee69ee876afbc6b1505f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[total_collateral_is_present]": "98a22fb149df5407c8accf8b97acf9322bcfaefc7dc6aac297d2c1547ba44483", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-6f1ead27": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_vote_public_key_-3e8cccb4": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_cvote_registration_co-2dcb1cea": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "9750f06d3b7372d056aaf7e6b3744ccbd83f1234f65656c0a8d23b1674f44b09", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "0b36e7b63ba9c0dc9bd5b504a274f0f82b1d655126bc00cd71cf7ba8794bf389", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_multisig_transaction_signing_mode]": "ee552183406f4019278218055b4a82be7d071af5133d7494840ba46a505ef1aa", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "eb5020d94328c61a0988438284095417f8e93c0569217713224dfc58c4c85463", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_plutus_transaction_signing_mode]": "2612f2015a2a1417b8269637582473a51c6a2eb7a684745837c3e2464a0aa528", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_key_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "b50555d3f200de1f984a975922da0907c436f77a2cc08c1757bf687801bf660f", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[mainnet_transaction_without_change]": "11f7c3b4ca0a203ec61b5a2bd95e9c44a7d5295190d3a4f7b568f11c44b74f7d", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[multisig_transaction_with_a_requ-c2fba589": "f1c2a04abc92835e9d0252d64fe76ae9c7a71b4649a16202c449365e67f37bef", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_a_requ-9728607e": "4d84a51e4546590ea60c38db4a2ea9df5019429cae809ba39e4364eb9f45c449", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_long_i-708443f3": "6c3974f9bdcc2cd6454171245d3cc4257977915bf5e4f26659d27f09ded9060c", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[ordinary_transaction_with_output-9ba7352d": "f2972f62a13c4f4509c4ccfe06e24775e5731aaa67fc309de05c65d94424c2c6", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_reference_input]": "e4c6d143fdc798cae8a7a33e240794b22bd74cfe0fa1add0f27ff15ecbd1c015", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[plutus_transaction_with_total_co-e846c221": "a2459d6fa5961220c5252f71292fc1510cf839471628fc6a9b06c371b7e2ecc3", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_cip36_registrat-b9111c27": "f9b643c3331966c8b43eba6ebb1e33f30fecd2bf39def5b52569f18ac1c725dd", +"T3B1_pt_cardano-test_sign_tx.py::test_cardano_sign_tx_show_details[transaction_with_stake_deregistr-6e84da2f": "bb72e508055868e1d82e16e6a94c54ee56550606ad7f84018b7ccf697b8a18a7", +"T3B1_pt_ethereum-test_definitions.py::test_builtin": "9dc543d32e58c06e43945c19a9953f4ea8147dfeab590e3255f47c49f2c67233", +"T3B1_pt_ethereum-test_definitions.py::test_builtin_token": "d3840db585b959c5a7f219007bec307196908aa7538250ef260339f39ae1bbb7", +"T3B1_pt_ethereum-test_definitions.py::test_chain_id_allowed": "285173b297da8b755203407ef281bad94ed9202c80fcc08a99ade22a8f8a5c0f", +"T3B1_pt_ethereum-test_definitions.py::test_chain_id_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_definition_does_not_override_builtin": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_external_chain_token_mismatch": "47fb1e067f4da97538df0124be2b1d25fcee4745ee6fca1adca025ca58418db8", +"T3B1_pt_ethereum-test_definitions.py::test_external_chain_token_ok": "7be7eb0f90d24649504fe875354b7b0608e35acb61395dfa492750f79e2d48b6", +"T3B1_pt_ethereum-test_definitions.py::test_external_chain_without_token": "8a7ec90e4976077c3912639092ccc9c58dff3e92cda8b2cf8f588a04ad6b40e8", +"T3B1_pt_ethereum-test_definitions.py::test_external_token": "417474d769d781db556d30535ec26991ddb365a79bf34cd9486fe407ef4aa1cd", +"T3B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_sign_typed_data]": "f48f226a19d83b66ead9b7b36950a4805200601cdba06538bd5fd7efb66467c9", +"T3B1_pt_ethereum-test_definitions.py::test_method_builtin[_call_signmessage]": "1c6ba0582b41c88c4b7e7a4bb668018487d96674b0e2cf2c1b5e6cbe3c0894b3", +"T3B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_sign_typed_data]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_method_def_missing[_call_signmessage]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_method_external[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_method_external[_call_sign_typed_data]": "d84c8ae00de95617ab6213ee3c7b919d2ed7bbf8e717d89c5a43fd62f7077f3c", +"T3B1_pt_ethereum-test_definitions.py::test_method_external[_call_signmessage]": "3573c57c84c20a769b996c9644232ad3c62f691469aacc5c7934d55bf802c2d3", +"T3B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_getaddress]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_sign_typed_data]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_method_external_mismatch[_call_signmessage]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_slip44_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions.py::test_slip44_external": "3358fe1d23ac6e1b31d4f705ba303e21157e27c24066b00fd1aae302189e0858", +"T3B1_pt_ethereum-test_definitions.py::test_slip44_external_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_bad_prefix": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_bad_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_bad_type": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_malformed_protobuf": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_mangled_payload": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_mangled_signature": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_missing_signature": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_not_enough_signatures": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_outdated": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_proof_length_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_protobuf_mismatch": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_short_message": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_trailing_garbage": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_definitions_bad.py::test_trimmed_proof": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress[ETC]": "f0da609aadf98b500efdbd99132e73a17c3f30f9bd3b8b2614509c0b589970f9", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress[Ledger Live legacy path]": "619f476b3523daca3bebc2f971b104306a5a1d56d851675d307454f1099e027b", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters0-result0]": "7c6d9f9168b0c742b3bbdc57a8dcde335107b12e81e4b132f38c0058ea4353c6", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters1-result1]": "284c43d95cbae59037a78f3cd449a7eda6b76cba30e0c08651fcf02af2e30971", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters2-result2]": "4bca422a74267d8e72f07cfaca00acf1529700acce4fa442fa83d9709432ff54", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress[parameters3-result3]": "abe0547feb668f3a811d82cbf182972e2ceb86a7095346b3874f1ed6d86a1f3c", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[ETC]": "b1b636f2777ae188bcd00691a15d3b33f790c1416fd7d5e6e3bdccb2cb70cd60", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[Ledger Live legacy path]": "2bb17b0b361532b32bfe3167fc98a3bff4b3ff64467d15ad200cf535e72d0b2a", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters0-result0]": "9ffd92555d3a79561e653f25fb70fdb90cb4dcec6c14953e55c7ef4bb7bcc39a", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters1-result1]": "a3ae284e5569abe8df87f74461c155dc3598db45e4746371e016b2c4bb0f1b5f", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters2-result2]": "838a4790d8d2bb4b4291753b687551d5c2ed078cf17a1b21d621e3d4afe53e12", +"T3B1_pt_ethereum-test_getaddress.py::test_getaddress_chunkify_details[parameters3-result3]": "98c405a62d1f3bc0899c10f18424b6a2bb08a32be939f6c9db488d44d8bc4db5", +"T3B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[Ledger Live legacy path]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters0-result0]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters1-result1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_getpublickey.py::test_ethereum_getpublickey[parameters2-result2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_getpublickey.py::test_slip25_disallowed": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[array_of_structs]": "c0a13788e45c70644427298b5229ff14c0a39f775e8221451e6e8a226a18d289", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[bare_minimum]": "16912e24e584f7d36d61d69d405e7c9498ad5223e6e5fba477f1255a3a222c68", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[basic_data]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[complex_data]": "ce66e943fd479f06a2ff57a0124a87d3140cd7bacd7a826ee497865b4b81a5ff", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[full_domain_empty_message]": "0d8079f3f6c5aefd3f7fdfcff6b3e585232d92326bdce12a173c80d548c98f48", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[injective_testcase]": "1f16dd4baee48788c5f5e7a6771693987c5ef124049b5b5c470d035370f59c01", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_non_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[struct_list_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data[structs_arrays_v4]": "71012329c5f03983c8c82f2232bfaab12251a54b166e400bb614f74167e05969", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_cancel": "199803403725e3d42fea11c832c04e7c54022520ca718eed3909b827f22f6ca4", +"T3B1_pt_ethereum-test_sign_typed_data.py::test_ethereum_sign_typed_data_show_more_button": "2966c67a07916681d54f8e24fa922d3c14294c0896f3f9b175495f6948062b41", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters0-result0]": "6345271ca56c53fbd28d2da0821a2971773a83a7d3ff263934aa43974c14f193", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters1-result1]": "d3875378ddf8d0f98786dc107e3a8b51d1fa9887659a32c910ec434251754f6f", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters2-result2]": "f5084cc403a9b828ce4ab3a8c75193277b3bbf4a595623075fa7bec3ae12be7d", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters3-result3]": "6cda11b57da366fa1ce02ceb75d95897f97d4232b538a33b8e93e21f3fd9c21d", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters4-result4]": "aede5d0c7e2e6856d8c84bc459ce011b3b6c5485ac8dfe309c6ba447ef8a51ed", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters5-result5]": "2094ee30e71c79dfd9b1da35f8263376e910a7bea4002aafd53c94191df56564", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters6-result6]": "842248bc8452d6a2aea90103926df89532f6833b3f3c6e66f78ccfe3a7bacbb5", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters7-result7]": "e5a1e976356fc59d8d917f7998e7fe242756cb2dc85e9a723fca62a7597e07cd", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_signmessage[parameters8-result8]": "2e44ee0eeb345dfcee11ba6e1daf6310aae89c1260f0874d29c02ca7332379c9", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters0-result0]": "73ee3b7b44549061ef9320f4f428f0062afbf9f9c304a05914f975c40af46010", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters1-result1]": "0c8df60419b3284386228476f62d7891f85cd9447b6689ebfa6669add8bd134b", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters2-result2]": "990cbd9aa0ca72d36c8d75e3a5c90a5a113c97a0af9c9f7afe76221140a23add", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters3-result3]": "bbf1c49504737e7a44f7d4496573e9934e1d8a9cba1a053b0150947e4df5b452", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters4-result4]": "6c227b2a5130e57e1aa4dfe9154c0957ec24b3fe5fe174f696502948dc983fbf", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters5-result5]": "bed60149b24ee17ed846d7dda3a697f7be29274c8a7eff295c044029426c80b1", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters6-result6]": "6fc8035de44cf4b0d760e5464ee9309faf1eeed4c54ee58a16921d9f377cd8de", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify[parameters7-result7]": "38e8dd2485b021b4f92bddc0290043dff37d837bab3f80600468cd06baefa9c0", +"T3B1_pt_ethereum-test_sign_verify_message.py::test_verify_invalid": "73ee3b7b44549061ef9320f4f428f0062afbf9f9c304a05914f975c40af46010", +"T3B1_pt_ethereum-test_signtx.py::test_data_streaming": "de410d2d139d8e8f368031070d8faf8955e9e7270b2029f33f6210e58f8c56d7", +"T3B1_pt_ethereum-test_signtx.py::test_sanity_checks": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_signtx.py::test_sanity_checks_eip1559": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-Auxilium]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-ETC]": "2f67e05f346a2bd2f58b37afdcf06e63cf3ed188ab0ab3b7e603c65233560eaf", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-Ethereum]": "47871c6773f2c30bbe87a4b5602d146792dbbd6f84ff1cac94f39b1249061dc4", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path0]": "94bad2c330cb3bf46cd14867b05798e96f941856e7f819c6a7b78eb2d13e9398", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-Ledger Live legacy path1]": "47871c6773f2c30bbe87a4b5602d146792dbbd6f84ff1cac94f39b1249061dc4", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-Palm]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-Pirl]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_eth_path]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-Unknown_chain_id_testnet_path]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-data_1]": "79eb935c1707a3d8e5c6c4fd3d9efdf35b6f3d067d82799a719d137b65e824a9", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-data_2_bigdata]": "68305dd83a6b5232b2bdba56bf713974d4f8e2004b2a42aa0582c8930d76f99e", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-erc20_token]": "4af15e2a401b9101509ec92b72acbec76730d877e85188ff3beb0efde58ffbb3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_id]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-max_chain_plus_one]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-max_uint64]": "d76963bae0d1447583df38be78c1720df059f240362b63e28d3ef0220fdc420c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-newcontract]": "c74c621f47fd8723e1c941efd2c6fe1edf576768399be5a970ae6be02b9df208", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_1]": "82dec518fccda016deee276683e0f36eab2f286e65ddef09202316ee74f9a6f8", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-nodata_2_bigvalue]": "08246f4ef8ed0b23646595d5c1d6add57fda9aa97b7a6a735ace725eec4fe245", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[False-wanchain]": "410a2184b0441ef2b5b28adc3eb4f95054a032cc0c2fedf365f3988ccd4fa974", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-Auxilium]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-ETC]": "8517860f5181ccbeccc1f287729a21891c6a19820755df0b142e9dda9843321e", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-Ethereum]": "a9ed256695283c59330a6b8ab43687a80a892ce3314385df5bd33ef57dec9743", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path0]": "51320a13a7b69b725dedb8a54f3732b087541329bad65b1484f4a0670c1394a2", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-Ledger Live legacy path1]": "a9ed256695283c59330a6b8ab43687a80a892ce3314385df5bd33ef57dec9743", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-Palm]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-Pirl]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_eth_path]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-Unknown_chain_id_testnet_path]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-data_1]": "ceee115aa7f350b0891cd4f6fc1d5e6906661dc2970182287cf0c923983ecb7c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-data_2_bigdata]": "0920fe185cd8ea3d08ceeb594beb2754dd4d86eee2eb428699db20e7c69ff724", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-erc20_token]": "42a01e779c20c8a41d1db846267bc8302c61a5fa6efd5fd3b545cdfa69d2bc82", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_id]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-max_chain_plus_one]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-max_uint64]": "9ed2ff887305eb080d0c2f1590f4326ebf8b469d7d3f12179832129f724ab7a3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-newcontract]": "c74c621f47fd8723e1c941efd2c6fe1edf576768399be5a970ae6be02b9df208", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_1]": "fe6e70aa96d82dbc817c4c53dd68613ebff29822b092327ec21a4a19b9b7f0ef", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-nodata_2_bigvalue]": "4f51a9dfeba3c61e2113efbffda8434309034452fd6de4ce672bc6fb2340b0a9", +"T3B1_pt_ethereum-test_signtx.py::test_signtx[True-wanchain]": "b682676c1041c63a8f1a83c1602866aed7e3473c4020145f6d34cd9fe2c621b6", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_go_back]": "8e946aca9ff623651652b21ca660bf8a036410a14f601b8d8d60ad482bdabdd4", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_scroll_down]": "31e265481f5fbefe2dab4df70c7b2a05eee976a90394a6e0528b45cf7c400986", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_data_pagination[input_flow_data_skip]": "6161f1fdc8ad3291510c4036a4d4ab1d4f22cc6131fdc8b3825fe08b7e0001e0", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-Ledger Live legacy path]": "f3e3ca14db653abec3dbfbde1285a54872f7d14eee2644ed32448c9eb22b19c3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_1]": "a733a070d697518c17660d20bfd093c380477b1bb6d61f96c2fe80d794578bc4", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-data_2_bigdata]": "a97c624c44a0601e2001cc636c61b58573c8109d0f2dd6d36f10bd5d2b32d68e", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-erc20]": "119597b262934b8d305462beb7f1187878681c89aef21a4e31a4f16ffdc6d306", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-large_chainid]": "08682c91caef72d57b5d3ab4f4d06e87e1e20a5110e3fed8fbf090629d45f8ea", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-long_fees]": "afd8e80d92726330601d206a361f90946e26edf38705135a1ddec34086875064", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[False-nodata]": "f3e3ca14db653abec3dbfbde1285a54872f7d14eee2644ed32448c9eb22b19c3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-Ledger Live legacy path]": "b1c1964eaf297c3afa292555faf33b6bc4c85317c5a4f76df9665d739ab806b7", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_1]": "162c8313aa828faeded0644e3bbc10692d8c75891847d0176c38bb5e90a25a25", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-data_2_bigdata]": "9db949970935fe2e6092fed7a4cf86c5cfa1772a379e58db233b5f963895edbd", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-erc20]": "5b59ef674da0cd341d9fe8dda64641159df7de97b68733c629799f66addb1711", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-large_chainid]": "f8c50deb390b552cb23e5261d39514110cd2a50d6c1f681b9be6cdbff26e1a46", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-long_fees]": "8a40264a85338092ddba71c33fef3e620d1b545ad89dd2fd4fd8693d9c89b039", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559[True-nodata]": "b1c1964eaf297c3afa292555faf33b6bc4c85317c5a4f76df9665d739ab806b7", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list": "53f1e323e607bac017f53457bca25a8865dfaea820e7ebcd8a58f9342e2897be", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_eip1559_access_list_larger": "53f1e323e607bac017f53457bca25a8865dfaea820e7ebcd8a58f9342e2897be", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_fee_info": "e38fc7ce0ff7010649e78a6270edcb3f981bed7ebdfe16991802a37dae8cfb81", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_go_back_from_summary": "a0ca42b6ed7c27a3463c69f9b8c6dc64bd3e6d7d7e6e80860328d9f76f43f0fc", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_holesky]": "ec1f83988979335b32dc06a7ff386d1768f47258af16e6148021546cf7a913e1", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-claim_mainnet]": "41768158a73af894dff0917daa29c031f43a4222c3c7fc2bd5b50b4134e1260e", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_holesky]": "202a367c3dc0d96e981965c1eff2f18f639fb426c1caf52b2f084ef7edeb3e50", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-stake_main]": "ec5e25a5a093e658bfa7b500aafe077498105387853dab9fddbcfdbc11f19323", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_holesky]": "dece8008a38df51ffaf6a54c489cece621333e0e7a44c759ee30d9cccbc44c3c", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[False-unstake_main]": "1e6f2d9b72a099718441e8e3200d11914772117b03ac08b426b32e1f329b30b5", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_holesky]": "78449d9ccf04b4533898e91a5dcd8e5240d1ed48d0311a424bdba4b4a326d006", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-claim_mainnet]": "a3d15b8fb6b33f02e549f49b597ff1b87abba698a4584553b79c2e774ad83c8f", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_holesky]": "1444aa138dab572f9e64401fed9c0e35dcb913db4d9b97f8da841262b542ce3e", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-stake_main]": "d3f22485de684807d4ab1c868fa268266294848dda568a369abc7f344f14ec67", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_holesky]": "8cda5b1e6a4690f7dc7254ce6b1b328e47435a1ad24a4ea9647add71fd25f4a2", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking[True-unstake_main]": "2bc94aa280285bb2bf183f54e25b5b3f63cbcca1594f64f98bc2c0f761c3b471", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[claim_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[stake_bad_inputs_2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_1]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_bad_inputs[unstake_bad_inputs_2]": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_holesky]": "dbbef2b6231d2c7c9b5ced8d9eccbcf877f584c8f40d30b4617848ab80384f02", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[claim_mainnet]": "dbbef2b6231d2c7c9b5ced8d9eccbcf877f584c8f40d30b4617848ab80384f02", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_holesky]": "42e34c9d45841e6a6eac428e02a3eda25da1df95b0f7e726ce9571230331e3c3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[stake_main]": "42e34c9d45841e6a6eac428e02a3eda25da1df95b0f7e726ce9571230331e3c3", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_holesky]": "065f6b2a179493f49bb1fd096bea2a8bb152eaa56442437d63ddba1354c9ecf9", +"T3B1_pt_ethereum-test_signtx.py::test_signtx_staking_eip1559[unstake_main]": "065f6b2a179493f49bb1fd096bea2a8bb152eaa56442437d63ddba1354c9ecf9", +"T3B1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt": "a7dcca56ff219e82eb110751f7207540c4436a98f0467940a380669f5b7c7d88", +"T3B1_pt_misc-test_msg_cipherkeyvalue.py::test_decrypt_badlen": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt": "f17be4bb3becb1a7021a7afca9fef195cf88de7c0f34b51a75f0827bcd4d6581", +"T3B1_pt_misc-test_msg_cipherkeyvalue.py::test_encrypt_badlen": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_misc-test_msg_getecdhsessionkey.py::test_ecdh": "87d306756ed8f7c371c650998da6df46fa9d789ca90d09b82f4e4fe1962cc7d1", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[128]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[129]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[16]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[17]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[1]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[20]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[21]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[256]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[257]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[32]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[33]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[3]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[4]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[512]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[513]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[5]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[64]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[65]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[8]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[9]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_signidentity.py::test_sign": "9db9a7bb337c8bcbdd1346a840e382892fe9a6d23da1415d5ff3b6bdbc071b2e", +"T3B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-0h-4Ahp23WfMrMFK3wYL2hLWQFGt87-f8cc3746": "0a76c58a43902c8acaf9a2462682377e86efbc889735a34f0b9aa0566dd8ceec", +"T3B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-1h-44iAazhoAkv5a5RqLNVyh82a1n3-1cc72b15": "c3414071b1aeddae163f8a8673c3ebc4dcbde0917505e0552c84f1d5255e2200", +"T3B1_pt_monero-test_getaddress.py::test_monero_getaddress[m-44h-128h-2h-47ejhmbZ4wHUhXaqA4b7PN667oP-d571924b": "c08e885441ce7c057bd6ce51ac28eb4fc74cd061157fe3b9ff2d8087d06ca139", +"T3B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-0h-4Ahp23WfMr-1e763aba": "8d06b0ab953d8d0fbb314a3cfae3d21624799e1f7a2d55e5969892c3280275a2", +"T3B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-1h-44iAazhoAk-005b0fdf": "24ef615f296c2d033020b3292e6ba179396ad30f7c6ccefa8d15d03bb7ec55bd", +"T3B1_pt_monero-test_getaddress.py::test_monero_getaddress_chunkify_details[m-44h-128h-2h-47ejhmbZ4w-df40ccfd": "303082868f3852e0f973092e109c07525b19e741f623bfb4ff3e454024383d4a", +"T3B1_pt_monero-test_getwatchkey.py::test_monero_getwatchkey": "3e55c6cb886f3608e4ef0412efd9c715bf4e3ff0781a1ab5854e3c92dab584bf", +"T3B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[label-test]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[passphrase_protection-True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[pin_protection-True]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_bad_parameters[u2f_counter-1]": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_dry_run": "6cf47de788ff592cd1afcdb9c217189dc003d05f249988fa62cf1276fccf4c0e", +"T3B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_invalid_seed_core": "8186f3d6fb8709835e0275d7a584b0d98b12085565616fd6197c0eb0e3e762c1", +"T3B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_seed_mismatch": "1f20cb33e8d769636ed00c8fb43c663151e468ece4b47fb4c6131a3c990d2712", +"T3B1_pt_reset_recovery-test_recovery_bip39_dryrun.py::test_uninitialized": "345ab360936150d9853d9d2d871d3730786f9b78220f9b9a8205f2071c465339", +"T3B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_already_initialized": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_nopin_nopassphrase": "68a243b10efda6190dad64b16518edbafa348d8881f8948aba9a8409b56e3706", +"T3B1_pt_reset_recovery-test_recovery_bip39_t2.py::test_tt_pin_passphrase": "d629a61a2e2cce499e0c155114171aaacf18af130786ebabe9df960ad939ddb0", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_abort": "823951ec4944aa639f1cf9b8c78d6750824f7e63e43d5074bd8374e49f17473b", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_extra_share_entered": "0d79f779320d811b2cf59560b867013b76ec1b59d01e56b186e68255f0d39981", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_group_threshold_reached": "ae27a75560e2965274e388bf96d48fff20db4182156cd745f2f7e04aa30c9672", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_noabort": "80b47438a4e466f064523a2826d117b9abcf54d69c93b5e3f358a3acf9239b3e", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_same_share": "8ef9779a36a944a84e5c93f1a87b87aeef32b2773d7bf3f779082705746b0770", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares0-c2d2e26ad06023c60145f1-afc2dad5": "2729e35f4d9947fd8ec02a17a50532224ac2310f3a2d50cb72c6a96f4de95e16", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret[shares1-c41d5cf80fed71a008a3a0-eb47093e": "a6ce76c218f919507b263591d6d60c20816df25e5d9e57c57c08ca545ccb8bd4", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares0-c2d2-850ffa77": "2729e35f4d9947fd8ec02a17a50532224ac2310f3a2d50cb72c6a96f4de95e16", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced.py::test_secret_click_info_button[shares1-c41d-ca9ddec8": "a6ce76c218f919507b263591d6d60c20816df25e5d9e57c57c08ca545ccb8bd4", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_dryrun": "1873e1ca69c1d8b182ef0dc48445bcd60659e8bc1499f0526a61d1620a1853f8", +"T3B1_pt_reset_recovery-test_recovery_slip39_advanced_dryrun.py::test_2of3_invalid_seed_dryrun": "557f4fd4719a9df44fc0da405af5e114e05c3ed437d31488890fa6f4f42aa472", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_1of1": "7765c5243e35f3f48986203a0c68477ced2cde9966c7fc05b7ea395c3d70c438", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort": "823951ec4944aa639f1cf9b8c78d6750824f7e63e43d5074bd8374e49f17473b", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_abort_between_shares": "1399b9480ca8a9520b649c4f0401e963a36f5242e78a3c4e7ff50b207f8fa703", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_first_share": "277628a09878d4d29944ba0ce396f6b24bb5b83b0123db7d34daa7168467d23a", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_invalid_mnemonic_second_share": "8e3bb8da31b928262faa4054b7047d6502b5711dd9486b2d0cc6c5c170d0d1f5", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_noabort": "01da3fb0e00ee0ba50bdfa95cc3140ae69bd29a783685730265b651e752d3069", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_recover_with_pin_passphrase": "5c7bad2174220a8d77d5004344a6ff2eb5bc01573a8e2522d7a7177c4c65dc59", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_same_share": "c164d3691cf5eebc123844751b89da1971cee0ed90089f2035258a002cd94f22", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares0-491b795b80fc21ccdf466c0fb-ad8c45c0": "63c04532e004636df317f4980927981d76ac9bdaf0667e4d9fa56e8f969c7b60", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares1-644c905b0c4da21692f06fff3-30d0f8ca": "09bf56bf4f2272c7770e724962b605b011675bbc229d521ed2f5f202b586143a", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_secret[shares2-b770e0da1363247652de97a39-6af744e3": "9d7416669ba394ed9e5dc4fe52f03802f342c8b974f3406071926fd25575b2ab", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[0]": "c281f7958e2f42c0284651ae86ae29213803e864c981f2346f844b13b45160da", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[1]": "6160844d44608e2ac7837779cce8aa7dcdcdb00b98da0317f3783d93845ac228", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic.py::test_wrong_nth_word[2]": "5265a332b6cd7245fcf742df93cbf5c0d9b3182f2ad24338dbedcf59d60d2e0d", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_dryrun": "8e1038e455568b342b8e2a03219d2549831555490a271c0c804272d0034f4de2", +"T3B1_pt_reset_recovery-test_recovery_slip39_basic_dryrun.py::test_2of3_invalid_seed_dryrun": "20121d7ce7e78faf26f489b3a868fa3361bc27b731954c9ab96b98ba238d60c2", +"T3B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Bip39-backup_flow_bip39]": "2459be644d838faa7157d20aaa88bf376ddd4189a47d343227b0909ca53f7854", +"T3B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Advanced_Ext-10ea47d6": "69927bf3ad6fa036b482f144f9738f1a746d9ccb8338f5bc09fb8199ad58f5c1", +"T3B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_manual[BackupType.Slip39_Basic_Extend-5dbe8b0f": "645430e36ff79c99c1889f176896a9a6abf9a72b6ce8efe0c95fd89aca8334cd", +"T3B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Bip39-backup_flow_bip39]": "c793384c77c9716eedab26ed0b23d0a36b6a6288191bb9bd4a7b831a005d5a56", +"T3B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Advanced_Extend-8b11c1dc": "d6a7f646263f1c2ce4a725861683a90e6db1d31933c13cdebf14b605be6bc44a", +"T3B1_pt_reset_recovery-test_reset_backup.py::test_skip_backup_msg[BackupType.Slip39_Basic_Extendabl-cc19e908": "d6012c289626344e7ce2a4f46f1d8987ff63f43903de8df0170ba110757cc681", +"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_already_initialized": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_failed_pin": "3ad33cb257388ddf0d544696b2cac2489b892098739bc493e50e607f4595e00f", +"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device": "26ff9331165091206919f5c3fe37310489121f46ffa62d0b2683a546de3046a9", +"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_192": "b2bdf1ecce3d3f27bc62f14f20690ad47f3a3c41046284f5a1aad4be42430c90", +"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_device_pin": "5345e7acf8d1358da77601e26fad42908b418c1179cbcdb5fdc9bdbfca66e41b", +"T3B1_pt_reset_recovery-test_reset_bip39_t2.py::test_reset_failed_check": "60f775cd3f0af4f315bba2a036ad350e95d99d12a6f15a97505c3bcc03724d4c", +"T3B1_pt_reset_recovery-test_reset_recovery_bip39.py::test_reset_recovery": "ccdc2fc507e40a1dd10961bd588d3b3a25295ef65491cbad69c4b13955735f0b", +"T3B1_pt_reset_recovery-test_reset_recovery_slip39_advanced.py::test_reset_recovery": "80dbdd0a3a28a438560b6200fff5872268eda28c68352b4123cced0f0038ee0d", +"T3B1_pt_reset_recovery-test_reset_recovery_slip39_basic.py::test_reset_recovery": "8b135aae698ea6c8476bb72644ba255a9cb9382324be80ad6d496743fa1287ef", +"T3B1_pt_reset_recovery-test_reset_slip39_advanced.py::test_reset_device_slip39_advanced": "aaa78e37b29827f033a0ac2476e73e813d1f6eb33cf8d80d75bb6b1f8398cb8d", +"T3B1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic": "d9afcce02aa1f27149cacd0998bf3d1a20bfca13289d74373467ac64207fe91c", +"T3B1_pt_reset_recovery-test_reset_slip39_basic.py::test_reset_device_slip39_basic_256": "e6c95dffae5589522fc26ebecb5f89df2cf039a859e3adc4502cfb11fb75f42c", +"T3B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-0-rNaqKtKrMSwpwZSzRckPf-3321e5d1": "9a07209055d9b285e6e51ac417adac3a1befdc7bfb282b70cf9696afa605d6e3", +"T3B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-0h-0-1-rBKz5MC2iXdoS3XgnNSYm-fd75b415": "f941e3776506da963228974b5e15ed8ded5ed0b2178c3ca5dccf7e27c89c0267", +"T3B1_pt_ripple-test_get_address.py::test_ripple_get_address[m-44h-144h-1h-0-0-rJX2KwzaLJDyFhhtXKi3h-af5daf0f": "3ad41f14cee69fc85f07949b9c9623657f33bf205c875bcce209028e2cb612f1", +"T3B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-0-rNaq-38238cf8": "3094fe8c9f26e880a64f5bfd03ceb84860c24e947341bab2aef472f9f364a577", +"T3B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-0h-0-1-rBKz-dd520dc8": "33c01fe67b0695867faaa580c9fb9bf7b3591c6d83bbdebf4d091c67ba2550bc", +"T3B1_pt_ripple-test_get_address.py::test_ripple_get_address_chunkify_details[m-44h-144h-1h-0-0-rJX2-1534f649": "ec50b2f93b451fe4b9f77ec849afb8af8e10969654b0c5d3585d62623a00e4dc", +"T3B1_pt_ripple-test_get_address.py::test_ripple_get_address_other": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ripple-test_sign_tx.py::test_ripple_sign_invalid_fee": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[False]": "933f5da2ef320ba339700440dcbaf01c4d7b254278dc926dd8c889d60e26dc25", +"T3B1_pt_ripple-test_sign_tx.py::test_ripple_sign_simple_tx[True]": "592397e7f3161cab5c7ccf85a2aeb4f70369dfce9534fa7d938915ed1dafd1cb", +"T3B1_pt_solana-test_address.py::test_solana_get_address[parameters0-result0]": "8375e4b402b5fc431fc37d42b4ce605fa43e27388033eda9e1ebeb412ba4f925", +"T3B1_pt_solana-test_address.py::test_solana_get_address[parameters1-result1]": "f40d6d7d69dfc395e53aabee305032a87e7d11d013e43248552369ddff5cc6f8", +"T3B1_pt_solana-test_address.py::test_solana_get_address[parameters2-result2]": "afc204b8331c7207c2fd999af069596f6ce419135090c9caf43a63642bfe3662", +"T3B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters0-result0]": "58c68855d5b0b65aac0c030e830ceab4ef5091d6fae953236da7efcfe55a92ea", +"T3B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters1-result1]": "b1c1e5481c8111686128d23191d6e92c9288fe179499ee0ce597d652e93aa0ab", +"T3B1_pt_solana-test_public_key.py::test_solana_get_public_key[parameters2-result2]": "abcf3e3884360b66fbf8efbbafa70041c1421e7658c238e602dc3e5fa952b43d", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[advance_nonce_account]": "917ca824ec70a3f162ccd145f552adee1865da399d64786041183a369746a1f6", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate]": "9a1d50b97dcf5982a91e38d79f19b494c75b28da92dfd1466ac84a273c9c665c", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[allocate_with_seed]": "090e05f8b75410a62169cbc4e44cde2596b33144416f27b13060c4e2d7f94fe8", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve]": "6f9a071b8d32fde07c061b4693a00c8d1f708c2cbfb56b72626c418439695b37", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked]": "450f5caff18802a475d2b4268729d12b6c4f30773a71ec6b97eab442cca4103e", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[approve_checked_-_multisig]": "b6eee5658d3c75c3ea1d6028827ca1da1748dc5821ddd763bb3f965235001a14", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign]": "86861f9cef8596efa0ef7c52b53a1b187f478deb68b0a29ede72f30bd33e8926", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[assign_with_seed]": "88bd16ea1b8b3dfd17e5a41bac7e6c700d7fd839182da016c72208acbca16e51", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize]": "e2ecc7e199180ceacb4c47be256e45bc182b3d694865c82dfa6871ce726b384e", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked]": "b5dd07a4dfd24859c859a86735e7deaf4c41a6ec617132d6af9eef7d65eacc78", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_checked_with_seed]": "1caea51a6f868f234435052c43acedf6fe248aa83642e8e67657985b4946ae5d", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_nonce_account]": "bf15077db854283fdc941adc329cffba2ddae6b8408c8cd365e66917ad306480", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[authorize_with_seed]": "31aa430f793519c8e620029c6ea408c3f67f90b5b1ea71e96f8dcba179b04bbb", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "fbbb727ef1ec1d516a3217c3b88c936b9e6d8b080b25c8cd5391b57dbaaec2c8", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "2251f88877568fb19b12a105007dc553d00f1c139a4bf8d0d4f9bf1326c98b06", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "3b282d92e6c94b66c6d36764741784bfa67699690f7db728587d2c29ed69946c", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "8a9fe94cf43c2fa1aa2fa8eb0e8c6b270bf8c66b16543a8fb02ffc4eb48a0485", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "024337b5c37d3e3fc0d5b92d6ba0b1cf78e05087bf37499c217b26531df8640b", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "cc35caa5417eec3be69a6de90b599604b3d815693ac7d13237ce9504be2bfa3f", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_account_with_seed]": "66b2c32258ada6d46e069c789b0d66aaae015b033b543ad4ed50f167ab4c8a0e", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_with_sysvar_ren-cb526e6e": "366b5d78a549d90c1cdfd5b06e5d716632345bfe09c5453c3a4b3428ef1e3be2", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "8670794d2dc5f9327b9b3f3d4de2d9701ca10b4fe33b5b88e745fb7d6c308062", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "1de10f0228323220b9f673ad43a6149c20dc0e25ebdcf74ffa7d4d9f1bbc1ed5", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "9562fab909b7d9ea49ee5040e23421f673754f1db11b6a03d240ac90d8edb530", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "29bc18a6c61c4cfd30833609ab25e6686fbf09ec6a758abc34cca768f8bab237", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "7cce1cb9fcb75b16551059568833ded2cf6afd19468bde03ca89003b568eb6f6", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account]": "77319cc592f9e13ed71bd787242cec93c3c8207f498bc90d8a3f999722dcc5df", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[freeze_account_-_multisig]": "85875cc87930d402423cd6edf3bac971b27d1de83375f0fbd4c4a4b3e9f425eb", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_account]": "40e6064e2382888660887d320a8b11f1fe1bfed7de1f3f62ef3d2069df5dcf05", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_checked]": "088b4ffe32ac605f6122fc04fbfda7a4cda7725dfa1a10b13ead6c6fadc7406d", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_immutable_owner]": "6a3a8037692ac1c2a5ec97b3b59751efca03d2036f1e96f4d69222b09dc48127", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_multisig]": "43e6d359608a20996c8cd228b8095e7fc89fbc6eb9baceddf998789043a9dc99", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_nonce_account]": "94711b22f8960cbb14fb3ade2ba90696e6735943d7a28e76fb21b49bd81a7b42", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_stake_account]": "11b9424ba0726adee544146fcee3c040605169f4b221b3438f020fe3f62c3885", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_2]": "91954e46c15b179af446e12363ff9dded761d6e93e338f94a405ed6cc483a557", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[initialize_token_account_3]": "91954e46c15b179af446e12363ff9dded761d6e93e338f94a405ed6cc483a557", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[lookup_tables]": "ea44f5d1397ecc2990c1ef48b4f8657aad2755c3dc33b544ab92167095aaaf9e", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo]": "54871ffc5fa5899d9cb700182835a4a4d8c64766c584e3813063fd7314424e58", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[memo_legacy]": "395269282cc1e08eabcfbe23995d0c5811b00bb08b6a2d42b5fb67f8e73ee708", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[merge]": "34b72864881e1cee1099e5bf8671853d03747450022be72d46d1ffcc533ecf4e", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to]": "b806e64ff5a23a7617028ea0559ce894084cba543985756c9e1ccead14a221cd", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked]": "05206e05097567c9ae718ac1d5a7fabc4d03af37cd1af2988495651846225a73", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[mint_to_checked_-_multisig]": "08cf2420e3e5c8c2dee2762f99de097e8f28efb8f80c405e8e8a45a47855cd2c", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke]": "30f977c994ef82ad78e6dd2f92725d3fed37ee0a6d24f89fcc52fcd947f4f86f", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[revoke_-_multisig]": "439e6ab0ef13292c3288e8a1cac9b08a8756e30d17ea1a330eaaed5b68e24faf", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority]": "e384ca9ccfbbec07f685d41a481484f8842b896d637036bfcdf81fe87c748185", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_authority_-_multisig]": "b1d683fb7dc8a08fc560adeeb5175df77bcbc4add5dc8fd09de8fe2550e5d7f3", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_all_params_set]": "d66b85a0258ddac63eb90c88b2e93b17b323aaf9df622cfa7c2a9cbc21f74ec0", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "581cc34f2a32bd731cd06f5af7df2a5239e01cd499ed5cc537ac1ef660e464d2", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "ccfc79cbb555108fc21dbe1c1e57161f4b451731cc6d247f1b559df2afb4a108", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[split]": "70ec04970f01fb3e6e150ef195adbde9e71d2fb088f6399a44f6187db6b242cb", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "34e23510c3e876b8b779de9bef14a4c2d43e94a046cb815fdc0ee5d7a9b34983", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "6f31d749dcbf40a0f795b4c9ba4bfc33d57101a1a25aa9eddc25ed7632082f89", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "b556f09028cf77115ea425bf74e96e8c8446e1977f1bdf57d4836e178b1a041c", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer0]": "80ad78176e6e5496dc46216a8a34895c8b2d172a7e15d01440aa7d2749d88757", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer1]": "deb1b77316f550bac7c4f11c991b92c2c42dc8fb3c1ff8fe95d150fece5ab4bd", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "c1b8e115c0acb57b4819e5639d2afef7229c7fa407b76a1983cfb3145ad77949", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "a46aa9f17af3041e775a8afc1fbd60b6fc08afa4408b054312e86bff00f443ab", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "f073a2c2f96a5950769a64cd22f98febca63a6149c6dafc9dea13be28b2c8b41", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "1c7ed565afbba843d338e06cbcce470d40f2034403859b22b931bf3ef0dc2fc9", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "86b096a832a8d083b9754c5c93ad91ebbc6fbe69ed14a640cca862f18adcd093", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "8ed84d529380b58436efdfe06f64617173c3ec6f99c85839f109abcb44ef1945", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "2f7b45277cca84351d70e6c11ee867523e6df437417b527af30ba729a3b3fed2", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "c111eba8baedfa1d46cc4693645141e9b01bc18c3e338fbf5e0d0911cddecd69", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "e696b40dc9e1de72e84ee137c679e235e26af537ea73bb963303460080d1b172", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "0c7f17bbfea0cce432cfb519c0def24c461de96340c910e46d903cf82be86018", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "e42db2d28710773ba7075730de64087425255babc504412b094ee59ca4eca2b1", +"T3B1_pt_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "c55baca013cbbf87a114e88652ff75cefd6068c3de2a65083c4782d3b13646ad", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters0-result0]": "609864b38d00c2d93f605c8ca73c8d6a2e0bc2b2445083e9f00193a3234eff44", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters1-result1]": "6bb7ee992c23a23e1dbc5cc5568c08529132558d34e4cbc55e1ecd835c61d351", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters2-result2]": "bb429e9b63e9fb0c0a1a2e82f0eb7055a602334c32507c9aef15408ee6b4120e", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters3-result3]": "058cf4f1d1d3351c5e15b87f72f6b745420c6952116906a2dad46c421f9eb5fd", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters4-result4]": "21fc6cf8d06c727176ff654210b7fbacc3355c2959c5eb907904bda0789c71a3", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters5-result5]": "09dee197110590161bfba85025c330079e90673d9ff583cf75ba9de2325b3c6a", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters6-result6]": "c815d5518cfcf5da24c0ba47d5992aa72c03e787d04b73289682c5f6ad759abb", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters7-result7]": "4f52f9a614b1c5dc7a7294de58d01bf916d6ba3ec206847c5dfe5496ecebcd88", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters8-result8]": "5f8a30313b4f31bbfe69ae67b3fec349f6731ab61d42e5cf70a31f6c69f4a8ac", +"T3B1_pt_stellar-test_stellar.py::test_get_address[parameters9-result9]": "d3404e93c59052c031cff287da48a268b9b1d814ce8f42b6594bbb9f3625be6e", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters0-result0]": "469ea58e29eb9af0c74ae312117d9e3dd192872a2fdba1907c50da3f6b7ce91b", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters1-result1]": "709d7e35b86408f5125545743795befe55ee2e4c4cb34aa69d988127b63eb04a", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters2-result2]": "567cde6d1889fcdbacd25d609c2685cedb4e3785a0c8e2ab7462e962a2ab731c", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters3-result3]": "4b267876c9aa32cd68e5f5841eea28a1e76622f2bef3ea628ad29da4e30d82f3", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters4-result4]": "da3ffa919ff851542bd0e2fb9cc32c5d4098036220c7690f7292ede317b87997", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters5-result5]": "5813e6cffbecdb2474a55956139c1ac4b2df0e6d22240fe818eb7662530bd154", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters6-result6]": "0751692c22a181b898fa283a2b9b014e5b6293a37bfa4a5b7c23beba54b82016", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters7-result7]": "08bb76c59f57f4aa655d3e1799b42fb524b54c446f658b8fa616e15820ccb76a", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters8-result8]": "3fbb4db9a6ff1f9639e89dc2a682c540efe25a4b4a2ba73d580c1abc54eb6507", +"T3B1_pt_stellar-test_stellar.py::test_get_address_chunkify_details[parameters9-result9]": "1586a738146d35343bd6c8b682064ce65d16a210824b5aad365aa988d3509229", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAccountMergeOp]": "761ea9b7572952f2e850e3164508e6aa222d17f0fa08bb2ab893eb975d50fd96", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-allow]": "fdcee3cad1de28336f03bc0a65536c1285425c9fa6a706b1e9fa5fcd47feea5e", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarAllowTrustOp-revoke]": "d614e0406e0e3b604fe503096007f2ad8a96d3e28bbc56e6caae7562ebcabd35", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarBumpSequenceOp]": "44c17d204f9d4cca69d368d9eabea2edf2aa8cc5d2a3a9b93e5c39424d3082f8", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-add]": "686098743a1f17d77b074ad89da99a590ba0d39aac3340f91ff6092ebcd387e8", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarChangeTrustOp-delete]": "b9260b8f76c71af0efb456fddcff7ff9060e9053590f3d9535bde17607ccbc56", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarClaimClaimableBalanceOp]": "af0d9cd2249be88b54cf2e6fd7c84f468fc1d812f828287df572297ab5436c02", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreateAccountOp]": "d86c27240f991d601bf85d44bd9a533f0ded69f49101649bbb5efc7b27c910a5", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarCreatePassiveSellOfferOp]": "6461a635272ae5a931894a20ede00da796674b23e584629870104a3f0f3395e9", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageBuyOfferOp]": "2ed400b47c749676789c49d1d2759901a0ddbe3b673c385aea97c1539fe0a208", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageDataOp]": "6233158b9a0118671ebe205153c2462df79d932f0a284ad6bc9c33a52636f754", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarManageSellOfferOp]": "09bf18b6e230b8f71c998adde617060c55eeb4c0327c17e34fa25b73d4169a4a", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictReceiveOp]": "835e90eea34e92220ca46bf124e3c38fe80978595ac93aa80bb670bb397bd42f", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPathPaymentStrictSendOp]": "953e787c09adbfc382300025b84e3f4e7ca7a8abc7dfcbbc1208241f03c56ac7", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset12]": "06d9ca5c8238ea6a0b6b7292bf51d5a26060216830803e5d27a327640d7ce5bd", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-asset4]": "3b332667051bf0698fd1b0dbfa3a81295e891459e571ee1e4a3d1e33faf7cfa7", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarPaymentOp-native_asset]": "db7b3173e740fdaac4b705f151208fafdc738c722470aa70d442ff84793e69a1", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-all]": "00bec3f2ff77763fe9f993ff2e05c317a3dca91b0c21fc989915b948fdabaf1e", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-one]": "f74aaae5e16574016ec7a5c89e9e45745b6535a364f22101beb49952cc2dd895", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[StellarSetOptionsOp-some]": "3a2f658933cc6024981aaee957a4241a0172250618166e58386322944de677e8", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[memo_hash]": "5d90db496990f77059be0658845fe21b8af0425d5a5a6bcf9c67410ea6b63f7c", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[memo_id]": "f9aa7b5280688d20568a95fcd1e07442f68917632010da381b1a9e93c983af07", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[memo_return]": "5202912307e660af7def351b938204e010646ba42a55a6f113eea124ea56d48f", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[memo_text]": "97b687d16eb0efa1da48a741e95b179a5429087dedaeb4fa3334dec76262aa74", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[multiple_operations]": "50f7ea61488eea43001249798cb5f2680abfd948c4202e73ae948422d7b45353", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[op_source_account_not_equal_signing_key]": "063054c8e5092fd459284eb0c92d2b40f7c5eb7f8811477da1785d51557cca1b", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-0]": "0e0e27a24c6136767cd20ceefd20073becc97b1dcca81292205405a895cb1148", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-0-1575234180]": "d21f912a2019025e05039f53da75d08e8703384bafd3ba25b705f472a2bfd1a5", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-0]": "db758027428d2d53ff8393069fc40f2c70b0aa172bc990ffd344e0ea1d778922", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[timebounds-461535181-1575234180]": "db7b3173e740fdaac4b705f151208fafdc738c722470aa70d442ff84793e69a1", +"T3B1_pt_stellar-test_stellar.py::test_sign_tx[tx_source_account_not_equal_signing_key]": "ad079f6cf5ccabd0462cc684c2d2f2cac2d96c52ce5a296820b5e68fcc0ca67e", +"T3B1_pt_test_authenticate_device.py::test_authenticate_device[!\\xf3\\xd4\\x0ec\\xc3\\x04\\xd01-b\\xeb\\x82-e4b4eb3a": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", +"T3B1_pt_test_authenticate_device.py::test_authenticate_device[\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\-d824e03c": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", +"T3B1_pt_test_authenticate_device.py::test_authenticate_device[]": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", +"T3B1_pt_test_authenticate_device.py::test_authenticate_device[hello world]": "1e40e1ee323b7b4eaf4343e79387f32a62f820ce48df30adfec92ed0644938f2", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay": "e8730a5b6c60fc68486a3d8a963b98b2fc40e2216d4f5f7afdac985f6030df4a", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[0]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[1]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[4194304]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[536871]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_out_of_range[9]": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[10]": "0a2f527d57f6ec2e36a0d106c4c3bc02eebc66f3c94370dd582ca4cff3a5cd1f", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[123]": "71942329a9781a8bfd70e891b46c0ec52ad9c4fab6b53523f789806ff5100509", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[3601]": "374122206b9a8660972aee4f9a2f1b860ed7ab24c1222af2d74302f225838bee", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[536870]": "90549dd3a613f2750cdc3bb6bd12c7c17e0b6c64b04a221ddea2259c2f4ecf8c", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[60]": "d6db080c545d842aae12c5e480754135ba5d666aac04a8c72b4abf680e2a3728", +"T3B1_pt_test_autolock.py::test_apply_auto_lock_delay_valid[7227]": "8b55c117211b18a1b13e47537a48ca4e8b83cd53d1e272d68dfe596f4f2c993b", +"T3B1_pt_test_autolock.py::test_autolock_cancels_ui": "fc6909960588b469b4cf5960f2dfbc91e074e1d03672616837741103b53cc62c", +"T3B1_pt_test_autolock.py::test_autolock_default_value": "b13c3e9f738f65569f7bc7bf31abf82c19a6a27b4f2ea330df280cc66d22035b", +"T3B1_pt_test_autolock.py::test_autolock_ignores_getaddress": "b17c9a46a825916c6693de47bdb7c95202d38ff5eeef6d1e38fa0bc481ae69b5", +"T3B1_pt_test_autolock.py::test_autolock_ignores_initialize": "b17c9a46a825916c6693de47bdb7c95202d38ff5eeef6d1e38fa0bc481ae69b5", +"T3B1_pt_test_basic.py::test_capabilities": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_basic.py::test_device_id_different": "b38f74fa7c0d446aad690b7da5aa0b6a3631886ed7cfd27dc1a1fd25013f400f", +"T3B1_pt_test_basic.py::test_device_id_same": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_basic.py::test_features": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_basic.py::test_ping": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_busy_state.py::test_busy_expiry": "931eb833565b33ead52967976744fbec60103860fa28cd8e235e129dc89d5466", +"T3B1_pt_test_busy_state.py::test_busy_state": "9ea240c028c13691c29c0c7bfc12718af63e00085e909de85bd8ed22ec0bd833", +"T3B1_pt_test_cancel.py::test_cancel_message_via_cancel[message0]": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", +"T3B1_pt_test_cancel.py::test_cancel_message_via_cancel[message1]": "3dd2bdfaf2e6acb9e5e4dc4c8497664979b294e77b0541f51aeecc27c19b8e84", +"T3B1_pt_test_cancel.py::test_cancel_message_via_initialize[message0]": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", +"T3B1_pt_test_cancel.py::test_cancel_message_via_initialize[message1]": "3dd2bdfaf2e6acb9e5e4dc4c8497664979b294e77b0541f51aeecc27c19b8e84", +"T3B1_pt_test_cancel.py::test_cancel_on_paginated": "64ca157fd3477b42f2588fc17204c8793bee274a29404b4cef12d0a07bbcd780", +"T3B1_pt_test_debuglink.py::test_softlock_instability": "72686c47fb5843acee7347ab1c92337b69393bc2fc1ee5d63be16651ea6dda26", +"T3B1_pt_test_firmware_hash.py::test_firmware_hash_emu": "4c5b7a1b55fd9cc5e30c21aa5b5b603de6d8a63f05216cde4fa61c984f8c9be7", +"T3B1_pt_test_firmware_hash.py::test_firmware_hash_hw": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_language.py::test_error_invalid_data_hash": "210bf76eff7ec32d6cc2cd2fd651656d8f92e70c03a522f6fa83aa50680fb67a", +"T3B1_pt_test_language.py::test_error_invalid_data_length": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T3B1_pt_test_language.py::test_error_invalid_header_magic": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T3B1_pt_test_language.py::test_error_invalid_signature": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T3B1_pt_test_language.py::test_error_too_long": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T3B1_pt_test_language.py::test_error_version_mismatch": "2a092da01979fa60a36410306ac3e3c91670e9a1bf689744c1eefad3b9ffa3c4", +"T3B1_pt_test_language.py::test_full_language_change[cs]": "cd06e85ffe4e3d3b99e8648d6e56f8f4bf818d19feadab712760891c07561ed2", +"T3B1_pt_test_language.py::test_full_language_change[de]": "4684e9ad4f7c390ca4c1281b7a35fb3754f5ea05bd4e61e44672169e09e6a40f", +"T3B1_pt_test_language.py::test_full_language_change[en]": "343e0263b182a8ad9a7c8afa02691ece986c3f10c57b7fbb2022b8b7333b7942", +"T3B1_pt_test_language.py::test_full_language_change[es]": "cb411bc6bd2a32e93b8f3f7b4bbeb64929affffb4e4321b5f32d240eda94b5e9", +"T3B1_pt_test_language.py::test_full_language_change[fr]": "866357fdfaf4212c94726b03a7edbaece64439ef0bcee6d76d721dd76f51b4a9", +"T3B1_pt_test_language.py::test_full_language_change[it]": "c5c4f50fcaed73c9a4844771364225d70f0f3a5a6df966969f5fea9279a0e293", +"T3B1_pt_test_language.py::test_full_language_change[pt]": "303967db180a4286a90d39c42516c38d1a28bd2c3480d4c22064e477197f8027", +"T3B1_pt_test_language.py::test_full_language_change[tr]": "d46db9bb2e7cbd60ac208f77937b918edccd295274559267c6db58cb953f3b4d", +"T3B1_pt_test_language.py::test_header_trailing_data": "93f41f7199b6934f54529eb008119be5e4abf40eb3007770c39057d36e6b9992", +"T3B1_pt_test_language.py::test_language_is_removed_after_wipe": "0ff0db7c6043b28e3891a7a3768cfe4ea437410af73ca5379ab013200a57845d", +"T3B1_pt_test_language.py::test_reject_update": "80c672bea6b6b3cd5284592cec013cb55344aec2c037a7fe5bd364895232ad87", +"T3B1_pt_test_language.py::test_silent_first_install[False-False]": "9f183b36d5cb3b7250392c41efdcc0880a179b1376a71c8c7a28b7d05691dedc", +"T3B1_pt_test_language.py::test_silent_first_install[None-False]": "9f183b36d5cb3b7250392c41efdcc0880a179b1376a71c8c7a28b7d05691dedc", +"T3B1_pt_test_language.py::test_silent_first_install[True-True]": "7b19f0b448f6673f36f74934932823f9d6e6e69297c732e141cba19f3fdaab41", +"T3B1_pt_test_language.py::test_switch_from_english[None]": "eb200c481edd0e997eace8b83d28ebe1dd3174a16d9f1e1e1d6caf2df7d08655", +"T3B1_pt_test_language.py::test_switch_from_english[True]": "eb200c481edd0e997eace8b83d28ebe1dd3174a16d9f1e1e1d6caf2df7d08655", +"T3B1_pt_test_language.py::test_switch_from_english_not_silent": "583e51cfbb948cf8199be2e14637331c8d1d2cd868fd7db6683be7d39a169c50", +"T3B1_pt_test_language.py::test_switch_language": "3170c5aa1c90e877eaef1b1f67ef609f76d7834bb3ebca8db17db442ac101434", +"T3B1_pt_test_language.py::test_translations_renders_on_screen": "b9a2277470a2d95c288ece88f2799f1f4357ce159a959c6cd865be1ab55219a2", +"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_good": "387b7e9f5237840597f48363e41ff490e78f3a4d14b14bcafe8f9b7fdc3fce8d", +"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_long_label": "3ce656a9f9451c655c4f1de8551674f9ca443872eaab83eaebe29384ec57d1e1", +"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_with_notification": "d776ef7ae2743574a1fa11fecf5a5caca6f3397bb6f7537c40cfc74187f59399", +"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_toif_wrong_size": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_upload_jpeg_fail": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_msg_applysettings.py::test_apply_homescreen_tr_upload_t1_fail": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_msg_applysettings.py::test_apply_settings": "f4a2117bb169937694b0afb83fa495cff59a9bb21ea447a2049b2c7bd8ba2edb", +"T3B1_pt_test_msg_applysettings.py::test_apply_settings_passphrase": "709fac3b928d46690068899259fce3ecce3abc493b9edf447a22edf951e6c615", +"T3B1_pt_test_msg_applysettings.py::test_apply_settings_passphrase_on_device": "4165f9b2c561e70a98e6edc9f589ab323275658d47d973a90a5d89abb6b49492", +"T3B1_pt_test_msg_applysettings.py::test_apply_settings_rotation": "ca2939b669a03218006fe3b76686223ba1190d47bc46d976a443bc8e6831d521", +"T3B1_pt_test_msg_applysettings.py::test_experimental_features": "1bd50bbf587d78a1ad3d1b560058cdff9621bb0db857b218b9f7242883899848", +"T3B1_pt_test_msg_applysettings.py::test_label_too_long": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_msg_applysettings.py::test_safety_checks": "057d25c869b70eed773da1617221452122d2281a2485266be63d381f4afba07b", +"T3B1_pt_test_msg_backup_device.py::test_backup_bip39": "37e315f11c171cf2928fd7587e697201f9eb0045515ab1f4e03abb76e681202b", +"T3B1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[click_info]": "2c6492c555f510c18367661a5424fb02de37aa88d8bcbb2adffb27044331a207", +"T3B1_pt_test_msg_backup_device.py::test_backup_slip39_advanced[no_click_info]": "563f9ee6a5502d8ced7bd10da32543d8d2b6e6a9cab7fb465690fb0729d7752e", +"T3B1_pt_test_msg_backup_device.py::test_backup_slip39_basic[click_info]": "2c6492c555f510c18367661a5424fb02de37aa88d8bcbb2adffb27044331a207", +"T3B1_pt_test_msg_backup_device.py::test_backup_slip39_basic[no_click_info]": "989b0f287872ca685a6c3009322f324e4f41997b8e7c91392137dd190805c1f0", +"T3B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[1_of_1]": "c87b112567f0d2c758105d566e3ed0ce4720aa4e8f312083af6dc1bffbb823af", +"T3B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[2_of_2]": "bc2c044f694a7d532f21b3aa921f07a077728bd61c6daebf0c468fd434fef04b", +"T3B1_pt_test_msg_backup_device.py::test_backup_slip39_custom[3_of_5]": "f6b819e88f1b017ec13968ee3905dd49635c54fdc29199a0ca92e0dda4ed9f89", +"T3B1_pt_test_msg_backup_device.py::test_interrupt_backup_fails": "7b2a4aac97b65d73c14bb83e26f886f43c9271387534d3f516fa872e8adf376f", +"T3B1_pt_test_msg_backup_device.py::test_no_backup_fails": "72e7667cacd2f868801b489ee0a8cdc5302ee990acfefd7aa3a5898821bb37ae", +"T3B1_pt_test_msg_change_wipe_code_t2.py::test_set_pin_to_wipe_code": "4cb9df7adb666073f4623bb9f4c65cb490db46c0c856765cadaf1dc1bc65f915", +"T3B1_pt_test_msg_change_wipe_code_t2.py::test_set_remove_wipe_code": "d69c32df2697c5ecfe6b73d6a3b4444811458aca1d40ca20c57cffcb876444a8", +"T3B1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_mismatch": "90730a883e0b6ff6b53c82920ed8ea2103521f76ebbbfdfb4cb45feb77b80861", +"T3B1_pt_test_msg_change_wipe_code_t2.py::test_set_wipe_code_to_pin": "b6484f93bc1a07f91e7fc393d959b82e36458764b4a8d2c66bc37dca58d07438", +"T3B1_pt_test_msg_changepin_t2.py::test_change_failed": "360b1b445c839659ace48dff994c2f92c2d23b5fd442ba66f9542f88a40c0133", +"T3B1_pt_test_msg_changepin_t2.py::test_change_invalid_current": "7cc24fc5831ec4720179db3ae43f598ed0cec1a49ee012e3efb38ca81b523eeb", +"T3B1_pt_test_msg_changepin_t2.py::test_change_pin": "0276e6e3156bdb56b547fd02168c7291f3ad20552c3d8a05a72f07676fcaeff1", +"T3B1_pt_test_msg_changepin_t2.py::test_remove_pin": "d43258a1fcc538f4e00a3881dda12bd74afde997dbbcad00d599fad61a4a79d6", +"T3B1_pt_test_msg_changepin_t2.py::test_set_failed": "2bebd183b5dd254f0e7506c9d6adfb1f0351767d40f9aee0b8e787f5d6c00584", +"T3B1_pt_test_msg_changepin_t2.py::test_set_pin": "9ad100dd8c3b7931a27b40285087df65c8965f0bfdb89ff4786fdf9db8454ba0", +"T3B1_pt_test_msg_loaddevice.py::test_load_device_1": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", +"T3B1_pt_test_msg_loaddevice.py::test_load_device_2": "d85c788c4a3302ff54916e3526809f48f484d594be04da46efccd003bc040b1d", +"T3B1_pt_test_msg_loaddevice.py::test_load_device_slip39_advanced": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", +"T3B1_pt_test_msg_loaddevice.py::test_load_device_slip39_basic": "64b850c1967b47ebd76d8428cac59e6ffe87d2361ca6732a6ca390b4bbf0fece", +"T3B1_pt_test_msg_loaddevice.py::test_load_device_utf": "b3a5a47dd2b2b349ade5da34fbc7fda2f449e9a2ce8762d21153ea2d39bc284b", +"T3B1_pt_test_msg_ping.py::test_ping": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", +"T3B1_pt_test_msg_show_device_tutorial.py::test_tutorial": "42f70104784d8e64992510898f19eb6f2d64427c3b2e309bde8e68dd2453617c", +"T3B1_pt_test_msg_wipedevice.py::test_autolock_not_retained": "10825caa38e2f320f2bd89a7a18784558125f2fc4df585cf7d7ffac87cd0a321", +"T3B1_pt_test_msg_wipedevice.py::test_wipe_device": "b38f74fa7c0d446aad690b7da5aa0b6a3631886ed7cfd27dc1a1fd25013f400f", +"T3B1_pt_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f41aa3b21d0a3726ef3412a8b41993d8de7b48bb8ab18f04f9ade50220188f5e", +"T3B1_pt_test_passphrase_slip39_advanced.py::test_256bit_passphrase": "f41aa3b21d0a3726ef3412a8b41993d8de7b48bb8ab18f04f9ade50220188f5e", +"T3B1_pt_test_passphrase_slip39_basic.py::test_2of3_ext_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", +"T3B1_pt_test_passphrase_slip39_basic.py::test_2of5_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", +"T3B1_pt_test_passphrase_slip39_basic.py::test_3of6_passphrase": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", +"T3B1_pt_test_pin.py::test_correct_pin": "2b93159bf23ff55f90bfa9a9a21d101c25a3bbf6b7e9015bb238175c7beb74b2", +"T3B1_pt_test_pin.py::test_exponential_backoff_t2": "b0c2b8e6aaa035bc86dbc6d8b6d2ffa1a09a8b313092cfec8c5b75a720c67e08", +"T3B1_pt_test_pin.py::test_incorrect_pin_t2": "1d783b22acda3c7e84a9ee6dc0011f2de8b4e277cb7cc61e1a8bd5c411bb6767", +"T3B1_pt_test_pin.py::test_no_protection": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_protection_levels.py::test_apply_settings": "5e287f538fc0ad2301ff5fa854b2f61c5502c00888ac318353b00336248180a2", +"T3B1_pt_test_protection_levels.py::test_change_pin_t2": "edb8128db5a8fcfd91f364c22fde748b8d4d80fa82d48f5ec8bdf1b41fa434b8", +"T3B1_pt_test_protection_levels.py::test_get_address": "e8fec8b7acaa4d95975bf7e40ea82aaa197a0130956dbafe81b9758a055bb2ff", +"T3B1_pt_test_protection_levels.py::test_get_entropy": "17bc0fe7be82f8dacfdae1cc2d1a90ce0873bcaef9da44b608a3f165813a40f7", +"T3B1_pt_test_protection_levels.py::test_get_public_key": "e8fec8b7acaa4d95975bf7e40ea82aaa197a0130956dbafe81b9758a055bb2ff", +"T3B1_pt_test_protection_levels.py::test_initialize": "5357802cf9a5776d29611d91911c552137fc1ddac9abda1760433a3853d4c43e", +"T3B1_pt_test_protection_levels.py::test_passphrase_cached": "9ecff1215ff6d032818de1b1fddb72cd5295415b9e353d004d0c57dce38a8456", +"T3B1_pt_test_protection_levels.py::test_passphrase_reporting[False]": "628fa33c0628038e9bf17cb9f9c74982f3e149e16b772026e9dc7f94d62ee103", +"T3B1_pt_test_protection_levels.py::test_passphrase_reporting[True]": "5b608af0d8b9ca61206203fb2e273b6143a2054326390cb1dcdd8ca076b27a5d", +"T3B1_pt_test_protection_levels.py::test_ping": "8308bf5c00cc7ff254e5a2d0798e6df106265ca614b11cd6b84ff70c2729212c", +"T3B1_pt_test_protection_levels.py::test_sign_message": "c37698e12400928a9a5d13aec7503f310688226adf63a32f008308b2551e33c5", +"T3B1_pt_test_protection_levels.py::test_signtx": "5cbcaf1d401bfc00393f4eb3c25c671d5a3b2168ac9c3fe1ce6f0f956c1dfe4b", +"T3B1_pt_test_protection_levels.py::test_unlocked": "f545f1ae5c4ea4b10440263558af40c205b576eb08d45785c4b2a65afb0dd284", +"T3B1_pt_test_protection_levels.py::test_verify_message_t2": "e1994ac3e25a9705d51a8e00fe07801ee38de58a7cfd223133bd33137abd17d5", +"T3B1_pt_test_protection_levels.py::test_wipe_device": "791c4334a6b565ee3dd654e53043ac7968e4a01303a13e308b9f6302b8175ccf", +"T3B1_pt_test_repeated_backup.py::test_repeated_backup": "7546777c5454e4227346e5329d8b864af1010fb082db33cb6e6706ae66f0c19a", +"T3B1_pt_test_repeated_backup.py::test_repeated_backup_cancel": "c7b82ef771de5388d7efb6b5110a2c7fddc5d6ba2962cdf60b826799815ed95f", +"T3B1_pt_test_repeated_backup.py::test_repeated_backup_send_disallowed_message": "f5e2e90f537414cef65bf68112d73e913fec7a9f35b7b43405a51dd700295ddc", +"T3B1_pt_test_repeated_backup.py::test_repeated_backup_upgrade_single": "b8efcd573c8c805347daca77ee8e00acc9fe9b313f62acd68b422853422c9e33", +"T3B1_pt_test_session.py::test_cannot_resume_ended_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_session.py::test_clear_session": "ba97a0d9a13bd7e1ae589e483465fcfe9804a4ea4e2b6379b4b801e5d67dc6c9", +"T3B1_pt_test_session.py::test_derive_cardano_empty_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_session.py::test_derive_cardano_running_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_session.py::test_end_session": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_session.py::test_end_session_only_current": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_session.py::test_session_recycling": "39640eb7f4c5b9d049af7a991a4e5cc2a1bfa592d0e262e34be54ee070283fd5", +"T3B1_pt_test_session_id_and_passphrase.py::test_cardano_passphrase": "373984ca846e93c4dc2410598b3bb096253374f8931b6642677bf828a2ad0d04", +"T3B1_pt_test_session_id_and_passphrase.py::test_hide_passphrase_from_host": "b62cd95b53e210403be59ee760732f69abd158a1b5a91b909380ff534d3b8bce", +"T3B1_pt_test_session_id_and_passphrase.py::test_max_sessions_with_passphrases": "a9cf2f9c0797ac708f07a12b8fee8a9a3ebfe5229417bd774514251b9e2eebbb", +"T3B1_pt_test_session_id_and_passphrase.py::test_multiple_passphrases": "13096c4c72f63e2cb4acc5bb588d635c637dc328779f9e99b39aadede2dc3cb4", +"T3B1_pt_test_session_id_and_passphrase.py::test_multiple_sessions": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_test_session_id_and_passphrase.py::test_passphrase_ack_mismatch": "82255073b75dcfac335aca22e4068e076079d3a31618e34d3d22e5a022c8aa79", +"T3B1_pt_test_session_id_and_passphrase.py::test_passphrase_always_on_device": "240442a32716af5ecc7c3088b63790c2e5616226f4ddd8be1572a49aff151f3a", +"T3B1_pt_test_session_id_and_passphrase.py::test_passphrase_length": "e800c3268be100f5542371e919a6ae23d01e6d960b5e865f4a3d1d3b0fc6feaf", +"T3B1_pt_test_session_id_and_passphrase.py::test_passphrase_missing": "9ecff1215ff6d032818de1b1fddb72cd5295415b9e353d004d0c57dce38a8456", +"T3B1_pt_test_session_id_and_passphrase.py::test_passphrase_on_device": "36d2aa7c224b3aefd61048024f02ae0b4caf12c46580ce61570b9445503964c7", +"T3B1_pt_test_session_id_and_passphrase.py::test_session_enable_passphrase": "0b0524eba8530f5d4e490fbf8fa1fc632e5d68407489fbb6bdd8be7d49d51eb1", +"T3B1_pt_test_session_id_and_passphrase.py::test_session_with_passphrase": "729cfd6983877ba5e279ad048a515f3b5f56a74eee4514eeaade9461e8ea4dda", +"T3B1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-0h-tz1Kef7BSg6fo75jk37WkKRYSnJ-80986d6e": "2c6fd1ecbc7bc8483858ef82ab0b9114896c97d713247559612c018e9c0e0e42", +"T3B1_pt_tezos-test_getaddress.py::test_tezos_get_address[m-44h-1729h-1h-tz1ekQapZCX4AXxTJhJZhroDKDY-1a82407d": "4935e8e3ba9b80bdf2b4ff8de736baa6de935fe3e05ae36b0521e72861459348", +"T3B1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-0h-tz1Kef7BSg-3b56caf9": "2e6b5eb4346f9580e93453787fb93a057d7a138c0fb35958bc32fded388aa496", +"T3B1_pt_tezos-test_getaddress.py::test_tezos_get_address_chunkify_details[m-44h-1729h-1h-tz1ekQapZC-aca49b5f": "d71fb9cf3e6f06a5d8960c79d5ebfd6e05f90877afe4b1d4717a587d74694b79", +"T3B1_pt_tezos-test_getpublickey.py::test_tezos_get_public_key": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_kt_remove_delegation": "3d27dccabef12219a0f3d1dd9acf5e04934d9cfa7b469889b1349fb27ff8ea2e", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_delegation": "28200480bf658e35d466db7e83fb7aca72bc4655a476e92a70522c0cc5ec2674", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_multiple_proposals": "557c1a9c34678a1c162c81bc6f8eca06417378bb665bbaa9c3bc2b957ad96402", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_origination": "db8d0b0ce60d01355ba06903402cb39fb6cf595397c71d3f91a8b578ada9e978", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_proposal": "0671992818fddc551ec3b42d5b22fc20765695ddd7c13c6aa2d8b8109e7c66ab", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_reveal": "d1efb10fd1b980bd36746e1f5ffe002809b96332e80007ddf148c167e9c2e2d2", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[False]": "229814bc6e047a2f781d0a7bb217da23a43f106c21e36c6452cf9a8e52a0f1a3", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sign_tx_tranasaction[True]": "fc0fb2024058497d7de828eb7c8f2bb103282563179729af5483ad4508cbf775", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_nay": "dc6dab8d59cf12956c94c7edd9f3f46f13b881ed7969a83fd7acd27c36962c52", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_pass": "d7a92deaff261b12352839565b6690d83a15be2a3d8ed752f824ab8144617cc6", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_sing_tx_ballot_yay": "f3fad9b2f37f0f6ba5b3af7fec18971d5478a7a4caacd04885567cbe8151eafe", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_delegation": "e31273d9efeaa6adf4308a92516cd19b0bb2445db7624e652f79c8dd6f561640", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer": "20e16cee590bd84547f37551b91fe8473d195109f549e98f9ce251af18a1a147", +"T3B1_pt_tezos-test_sign_tx.py::test_tezos_smart_contract_transfer_to_contract": "4460f2774c0913b6914eb9fe116b8b9d4bdf7dd1bf1d528d2575c27c0bf4b197", +"T3B1_pt_webauthn-test_msg_webauthn.py::test_add_remove": "c93f2c6760f6c895d5b3639fa45de182b81a01515e2ea6082e70246bdd84451f", +"T3B1_pt_webauthn-test_u2f_counter.py::test_u2f_counter": "53ee4d5cd62f72072884280c8e048ce5cae5f8371e70fbd4f83ddafd9fce602e", +"T3B1_pt_zcash-test_sign_tx.py::test_external_presigned": "99341a5d930925f7c16aec2c0f39eb32a3041f17c23cf5966928e1f28c534653", +"T3B1_pt_zcash-test_sign_tx.py::test_one_two": "ad470fd56cf213faf06f274fb7d34af70c09d2b60cce2407a0b4ad7ac6e28b45", +"T3B1_pt_zcash-test_sign_tx.py::test_refuse_replacement_tx": "4bb1e470fbd0c49df17eb86954f1de08823d65c6dfdeef277188f9f120b804f7", +"T3B1_pt_zcash-test_sign_tx.py::test_send_to_multisig": "01cb324f68640d2c3f96e6c3335f7e834c99b8e02eff49fb28c441e9f393444e", +"T3B1_pt_zcash-test_sign_tx.py::test_spend_multisig": "0b7bad29cb267c3a7de4e5c0b7dacaad6ca9ceb3b6de0591320834e32a8851ce", +"T3B1_pt_zcash-test_sign_tx.py::test_spend_v4_input": "dd200fb7cf077566f94a1e65ed3d756cf76fe024fae850594aad30b4a43b1edf", +"T3B1_pt_zcash-test_sign_tx.py::test_spend_v5_input": "ee38f2289bdd02d02daf746894ccbb3958093014a5893160dd1bdd956298c8ed", +"T3B1_pt_zcash-test_sign_tx.py::test_unified_address": "913748030caccdbf601489c18d5ec280d9b76940e6192659668bca9676ec4074", +"T3B1_pt_zcash-test_sign_tx.py::test_version_group_id_missing": "666a44b8f08b659b477eeef76082e0777fa42defa7b7ef584b4ca8bce4337424" } }, "T3T1": { @@ -19832,6 +22670,11 @@ "T3T1_cs_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "b99576c0410bbcc38c27c681ad365df30f69829369bca07bc9c137289ccd1b13", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "005acfecee63449fc5aeaf80ce87b444508dc02e091050232e100c5fdf518b8a", "T3T1_cs_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "576d26a4cb02a5924a6dea6b46c6f3082e871339ed400e22e8135f3a8a583b65", +"T3T1_cs_test_tutorial_mercury.py::test_tutorial_ignore_menu": "a14c3b143c24b398bd41379d0dd963dd12084a81e6e81e7697d1468ae99124a9", +"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_exit": "b58037cf8a9d9f0df9bb59d706d76511cd2a195700ce50617c88185fa53b687f", +"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_funfact": "f572c5eb1f9522c137e4efe1820d9a3800c8b43cb1c949416f569a6a1a287640", +"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_open_close": "57b5982a004053465ba2c9457e901b428d3dd3eaef3fe3e7da31032b8a0a9c93", +"T3T1_cs_test_tutorial_mercury.py::test_tutorial_menu_repeat": "2f4565aa5dc8b4d6372591267c434cbe48947977775b6d72a0744869b938655a", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3f2cb64c585744ec1d3b2115e53663869aaf8005e3371a681de72d32a37f3c09", "T3T1_de_test_autolock.py::test_autolock_does_not_interrupt_signing": "945e5b4d0f325e3da850dc37c75b175458c4f8d44a50adfac540f171277e04f1", "T3T1_de_test_autolock.py::test_autolock_interrupts_passphrase": "a3e97d19a9b9e966091b25801ad44bfc09d2ca02cf6ed540825a287fc77a353d", @@ -19881,6 +22724,11 @@ "T3T1_de_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "c5a72423a04b26d01fa930faf4c300e18fcba8303580e479b52bbbbf0d654c7c", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "34fa7b2ce06e8aee7a4fa59febacbda3a2c93aa75fc5b914b18bb4a595766b5d", "T3T1_de_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "79cc9a6a7ba8d63ada3d3ca69e40606ec4db280b1795bd6db20b01c337d935f2", +"T3T1_de_test_tutorial_mercury.py::test_tutorial_ignore_menu": "1da46bd298cc19ceb1e344054808984a044264af254e5c6104e99912ac4edb8d", +"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_exit": "02aa86a92acad43c0f9d7aca015967da7854e0b571e5bbe61caa8d8f80db4045", +"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_funfact": "350b8f9a2dad034cab50d334f606cd50e7a574ae5f6396581a2c74aafd5f6f1d", +"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_open_close": "ffcec7619c54a89522d56b320df1750964c625bb86195066e310b5c2266ce506", +"T3T1_de_test_tutorial_mercury.py::test_tutorial_menu_repeat": "b946daffc5c8e62738ec27afdc614d6d00c722e24112c018bfad571e4ada47a3", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "3c731b042fc2e0b2f86391320f30937310cb6dc147057691bc14f52b73e597d7", "T3T1_en_test_autolock.py::test_autolock_does_not_interrupt_signing": "a28905faec2a54e67df6f9c67a94dd84ed76fc976ca4e8b60bf2cc7f6ce3415c", "T3T1_en_test_autolock.py::test_autolock_interrupts_passphrase": "b77e0edc22959c2d16a403b1742e911e27c7eb2da10736a5969d66583fd04d4c", @@ -19984,6 +22832,11 @@ "T3T1_es_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "a876586c9321ebbeec3cedfa926573b5f4fa42b0fb3969d781a3d0830e4dce10", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "0daf9211dda6cf4db8fffd16aa39f9f772554fcf952921816782e4fcc4cacf61", "T3T1_es_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "c4f842ca9bdd585eea4e55c2c6f22e3d9d0915c8368b7ec93e561df25a86a470", +"T3T1_es_test_tutorial_mercury.py::test_tutorial_ignore_menu": "5e4328cea5b060c25fe06ef1228313c4f4f3b0a9afb7021aa8b90b5f1e54e134", +"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_exit": "80b43356db5583a226b626e045c025ad513f868121cd511642f331a4f69f5681", +"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_funfact": "2a7e413bb4d672bf79fa8278adad6d8f6220773c96356d53fbb1350d943092b4", +"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_open_close": "8839dbe69b0931974b2cf65fc3cab3489b333965375319c4cd75d451816ff40d", +"T3T1_es_test_tutorial_mercury.py::test_tutorial_menu_repeat": "5b7f72995992e5217069f3f36395c1e2871a4390ed4caf058c467932f65ab6f2", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "2695412f733ed741ea4de2fd627be6e9ca5c48bc8079ed52b54adda1a828e2ff", "T3T1_fr_test_autolock.py::test_autolock_does_not_interrupt_signing": "f750821c92d3aa15d2f0c370d341e4905d4400f11ae368f02efdd253fa3f84cf", "T3T1_fr_test_autolock.py::test_autolock_interrupts_passphrase": "f2c4df9d57c5581f92bfa0a41b296d4765abcaac1be016e161242cf88b04a7a5", @@ -20033,6 +22886,11 @@ "T3T1_fr_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "6e81831b32542ba19822375c2c7c780de6130136f77f39f4022ee43be6bbbc59", "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "fc6cda5bdac795155c67cafbf523b4dbb4fc553fd10f7d90403e19c6dd9005ce", "T3T1_fr_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "13826b2a715342d5df2c4665442ffeab1b08808a56bd3a40bd786a60d9223fe5", +"T3T1_fr_test_tutorial_mercury.py::test_tutorial_ignore_menu": "204db8befa27a853788bcd7ae567b83b7d277506057a1bad5abb925849f7df29", +"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_exit": "46e27a34d414fe6e2c5665642bbbc789efcb091361bd129f05ec58deeacad624", +"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_funfact": "7ab45074491cb3f03676267628544443084f7e7fc32efb6346fd00a7f8fccc3b", +"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_open_close": "0100f3195efe6e4180a2ea23f61609924cb575858e92b080b888bf0bfc9e6d9d", +"T3T1_fr_test_tutorial_mercury.py::test_tutorial_menu_repeat": "0e6c3f381ced7ae9401067b4046fe06c7fde3e8f9328e6bced3d2e5df075f678", "T3T1_it_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "d18c25f32430e56bc7a6fccb936447d85a4725d7c97a705d85bf73d04b31f2e5", "T3T1_it_test_autolock.py::test_autolock_does_not_interrupt_signing": "bfa0741608e148a31555dd1257138c3d5abf38fc5f5a68d705df257acef49b79", "T3T1_it_test_autolock.py::test_autolock_interrupts_passphrase": "77c07d0aab830ca4305fe8b98bd6db5207506322e9f2cf195a0a14677edc5de7", @@ -20082,6 +22940,11 @@ "T3T1_it_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "8646353cb9764450b2b25bf0068c4a47072f8d712dcaf9e6baa7754528bb76c5", "T3T1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "3acd2d89f1a54ac3bb0afcf3fc17ed89bd0c6fe95194d2da473c30aaeab683a1", "T3T1_it_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "e4704647437a3dffa8b9bc64a0076e806f782cc9e46b8dfc9a446aba827e3f32", +"T3T1_it_test_tutorial_mercury.py::test_tutorial_ignore_menu": "286c0b85099b6aa3fbc0b33e72a60f76c568cf03827f446394547effe541a9bc", +"T3T1_it_test_tutorial_mercury.py::test_tutorial_menu_exit": "8f9e1904e5221def6c8607ea8a55a47c6d56900e08db4312583d63c5704599de", +"T3T1_it_test_tutorial_mercury.py::test_tutorial_menu_funfact": "f67b2e0701859dd2bd0278c07d5b78a8c0fb05eb4e212c42ce5fc762f7862446", +"T3T1_it_test_tutorial_mercury.py::test_tutorial_menu_open_close": "b19b5a2bf0696a4486b2c6f8749f6de4397fd93e2cf3cb7a0274d56e50a3683f", +"T3T1_it_test_tutorial_mercury.py::test_tutorial_menu_repeat": "82fa260f374730d0f245085d4b31936d25f7a67a1099b4d03fa7f937f5fdeeb6", "T3T1_pt_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "ff9d586c801d4f0f0794eefb98b40825eac9d4bd32af28810b2e765ad17965c8", "T3T1_pt_test_autolock.py::test_autolock_does_not_interrupt_signing": "aa529249c6c7d21d827169d0df3c51c5b01fb7a60d838098769a94a2c5eb1e1d", "T3T1_pt_test_autolock.py::test_autolock_interrupts_passphrase": "0824e53377fcf503fadd9dbb2c7ced09a90fd6b59609223702a38e5498e170c4", @@ -20131,6 +22994,11 @@ "T3T1_pt_test_reset_slip39_advanced.py::test_reset_slip39_advanced[2of2]": "42839a274d0e2e7421ccf45e0fb9ad4eb05c8e63dc031620b84cfe280f40d897", "T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[16of16]": "b2f68b8139abaf9eaf6cdf74c979a60dac00a4e44694e3a373bf6a3cfa4dc093", "T3T1_pt_test_reset_slip39_basic.py::test_reset_slip39_basic[1of1]": "49055a822df2fe965d57256d37a3022d9ba87459b23f04465bf5812e78ff4b54", +"T3T1_pt_test_tutorial_mercury.py::test_tutorial_ignore_menu": "4196d33a0b968e7d2b518e8a1fe2af5c400b27cc6b73ea7419c9f4e6b97b8534", +"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_exit": "0f6be2055aed59135bfcd8abdef308fb15b85fe7d4600c1028bfa115ab4cdb99", +"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_funfact": "021ad638d27ecfe4a720814c8ea6fadb19664bccb829b0c00fd17947bc20bf95", +"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_open_close": "da5a01833b252835ff83dee59a42fd48861f0b2f7b1f14d1eb2850e8187a984c", +"T3T1_pt_test_tutorial_mercury.py::test_tutorial_menu_repeat": "87cae75ff24585709a46532a6572e424c6087fe3fdc30f3ea308e08c4464baa4", "T3T1_tr_test_autolock.py::test_autolock_does_not_interrupt_preauthorized": "87462ee818e29ef09f0adefedb30fc91df5e6e43da42b1ce2d256a1891657675", "T3T1_tr_test_autolock.py::test_autolock_does_not_interrupt_signing": "d7bd5440ee1681a0fdbf92a09d762d7e0f02549f9f399ab5602eed73092d8edd", "T3T1_tr_test_autolock.py::test_autolock_interrupts_passphrase": "83df014bbbd8bbd7c1563384ea7b1a9d4009282ee658bedf98b9338107442de0", @@ -21457,6 +24325,7 @@ "T3T1_cs_test_msg_sd_protect.py::test_enable_disable": "f16d0f3c7e6fbf209dcdf3b9d164b256921193a59497181ce12880dbd68f344f", "T3T1_cs_test_msg_sd_protect.py::test_refresh": "9c0629afadd2f660e7dde53a1f046e4451eb8ce7ee195cf0bb1c97624cf15fb4", "T3T1_cs_test_msg_sd_protect.py::test_wipe": "f2034ed5b2e2698f84e2e7558e7912246e7b7fdd969381c427aad4b0b47353db", +"T3T1_cs_test_msg_show_device_tutorial.py::test_tutorial": "af5d51a2f4e52b87dfa5077027b18d3b52bbd1f2b8ba890a4926bc99f402f59a", "T3T1_cs_test_msg_wipedevice.py::test_autolock_not_retained": "3fe3ebecd6517fd08b52fb7a85fb6e6de5fda24b2fc000865ce83de6dafd5781", "T3T1_cs_test_msg_wipedevice.py::test_wipe_device": "40a7391636fb753cb23571e00f1bf2259b159c5917b1f2f62fd15470b1156516", "T3T1_cs_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "f0f5d5aa30d7d5cd8da49fef8ad632f6055b22826418728a5502b3e0f909fc0f", @@ -22814,6 +25683,7 @@ "T3T1_de_test_msg_sd_protect.py::test_enable_disable": "440ffae3947d0d08480b818a30ba631dcfe454a92f304a3d82735034ae0d6570", "T3T1_de_test_msg_sd_protect.py::test_refresh": "324fffc360acc54078865fec82f2f0b83dd4985cb45d03feb0a050e57190bab5", "T3T1_de_test_msg_sd_protect.py::test_wipe": "479cf95d2085e797b3fc4e048444e25b2ed4f0a3d3b29008b8417232646953f4", +"T3T1_de_test_msg_show_device_tutorial.py::test_tutorial": "56ea22d69015abdcedc96ae8d957d0dfe239d193e87410bba71023d89ca7d2a9", "T3T1_de_test_msg_wipedevice.py::test_autolock_not_retained": "7c8b3639f4897e8a96b29b889ab6e3746e852b3a48cb2b0618629cfa47487f6a", "T3T1_de_test_msg_wipedevice.py::test_wipe_device": "ee901f817ed7a3c6038b9c32eee7c8e7843fdcdadbd2d5633de9978dcb9ba469", "T3T1_de_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "179ffe4191ed9e8e281f68dcf259269312aed11903fea363c6fd326e2784b64d", @@ -25529,6 +28399,7 @@ "T3T1_es_test_msg_sd_protect.py::test_enable_disable": "cb61248c0d0b46b8a4433e2bf12ccfc0b32ad5b9842d5d80eb44d76f0f1f17e4", "T3T1_es_test_msg_sd_protect.py::test_refresh": "a7235bf977a5f7aab3b0133f0781feab28319170ad80785a29f343aecf72d996", "T3T1_es_test_msg_sd_protect.py::test_wipe": "7a7cf781e34a9131c2f4dfe9907cb733ddb93c805c92f0fb14b79634974bdd79", +"T3T1_es_test_msg_show_device_tutorial.py::test_tutorial": "55ec721eb836140725966358d70b88f4bbac578952b019d530e78c4e864416e3", "T3T1_es_test_msg_wipedevice.py::test_autolock_not_retained": "f7ba337dc25fe91c0cf19877534ca2fca75d2ba02d0f5f3d639e1ee5924a0bfa", "T3T1_es_test_msg_wipedevice.py::test_wipe_device": "2c28b43c64a91f6ced3f7db4f06ddb1b347d932f95b0cb1aa0518cae5ca5c0cf", "T3T1_es_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "7664f198126a0c78d7ea2ad1e6e1e2a2d07e9322151f439ab82a41c9695a6c81", @@ -26886,6 +29757,7 @@ "T3T1_fr_test_msg_sd_protect.py::test_enable_disable": "248d3bd2c671109278f0c75e7986a20f58bc04f72ae39b855f000b11ece6d781", "T3T1_fr_test_msg_sd_protect.py::test_refresh": "af9bd20cea2fd6e75d55a1b3ac918f7418dac77c4bf6a768611579becc71cd17", "T3T1_fr_test_msg_sd_protect.py::test_wipe": "41ea5e6c2b26c9937792cb2cdfbad74286d740fd523bb7d07305566bcd167935", +"T3T1_fr_test_msg_show_device_tutorial.py::test_tutorial": "68a2944cdec2f0d18e096663cfc13d2f86585892cf18cd2b3c12a8842263da86", "T3T1_fr_test_msg_wipedevice.py::test_autolock_not_retained": "06456c05df3aee6226fbbe776d4db63eabdd553241185869396024ec4fae7c52", "T3T1_fr_test_msg_wipedevice.py::test_wipe_device": "9fb4e1ccdc0df2f0c2e597e35e44391c3582f2ffb3c364c15de37ca29fbed4b8", "T3T1_fr_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "2807886270191466d7c47e855760dbb4d96a09009e42031fdf60c9b6fcb16df1", @@ -28243,8 +31115,7 @@ "T3T1_it_test_msg_sd_protect.py::test_enable_disable": "b16e6cc27a187011857b6c8ca1ce93cf186e898a24dffb8988958da3da757c1e", "T3T1_it_test_msg_sd_protect.py::test_refresh": "f1b401da8438ba784783292e43bb234687bd2cfce6afb2dfd8bb5ec74cc744c2", "T3T1_it_test_msg_sd_protect.py::test_wipe": "b44819c1dc4aeb76825edaf70e62ab80f1b262d2130d289ee2fcbf91f87c8614", -"T3T1_it_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "286c0b85099b6aa3fbc0b33e72a60f76c568cf03827f446394547effe541a9bc", -"T3T1_it_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "0bbcf7e0e4add08db8df78794a1c0d878c39f3d7102e7373dae25298d2ea41f1", +"T3T1_it_test_msg_show_device_tutorial.py::test_tutorial": "6287282489e9ae768aea5d655c7ed93ffef943ba2a8fedb322ecfbcdbdb7dae0", "T3T1_it_test_msg_wipedevice.py::test_autolock_not_retained": "a1be4fd200b66348c74f2b103aa7e949d42578ace922b9faef31aeaf6e7b0583", "T3T1_it_test_msg_wipedevice.py::test_wipe_device": "e9994afd6420928fa1944b60eb53795605df052597a3cf95939759cb8aebdf16", "T3T1_it_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "6cd366d66d7a8782c614a252eeedfce7e9b5db22237543e6ea45126225887202", @@ -29602,8 +32473,7 @@ "T3T1_pt_test_msg_sd_protect.py::test_enable_disable": "5461dc61f4dd03219667eba7a45d471299646e83d502e6ed67f5f24cd9d94500", "T3T1_pt_test_msg_sd_protect.py::test_refresh": "da1357a4d08d6b9350d74f47e474c52768bd7ed550bc0f6e3768321ecef62998", "T3T1_pt_test_msg_sd_protect.py::test_wipe": "1782156274562e3abd9cef658dc484019b254a6d136d974c45c3421f78ad8f56", -"T3T1_pt_test_msg_show_device_tutorial.py::test_tutorial_t3t1[False]": "4196d33a0b968e7d2b518e8a1fe2af5c400b27cc6b73ea7419c9f4e6b97b8534", -"T3T1_pt_test_msg_show_device_tutorial.py::test_tutorial_t3t1[True]": "1b6b13e2bbbb1f2dcc45e0aaa86973e811393eb1d30c55f6d8cad4786ab6f35e", +"T3T1_pt_test_msg_show_device_tutorial.py::test_tutorial": "6287282489e9ae768aea5d655c7ed93ffef943ba2a8fedb322ecfbcdbdb7dae0", "T3T1_pt_test_msg_wipedevice.py::test_autolock_not_retained": "10f7f1ef3ecafe6fa16fc7f8ad0053a4b310c3c28fa089682e8b3e3222e63e7d", "T3T1_pt_test_msg_wipedevice.py::test_wipe_device": "9ad2278757f1695899d1c1232b84092fe07990e341e2fadfdbc0c64d19f8b607", "T3T1_pt_test_passphrase_slip39_advanced.py::test_128bit_passphrase": "7919fa0b77004350aab32aae37e23d9eae661ba009cc2da2ecfe9251bfb5cb92", From eda8c72b3a3a809ee95e2c3ac853d367038cf3ea Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 10 Sep 2024 15:37:22 +0200 Subject: [PATCH 612/626] feat(tests): flip the default service for `update_fixtures.py ci` to github now that we don't really use gitlab anymore --- tests/update_fixtures.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/update_fixtures.py b/tests/update_fixtures.py index 61bff3eb56..1371af5004 100755 --- a/tests/update_fixtures.py +++ b/tests/update_fixtures.py @@ -39,7 +39,15 @@ def _get_current_git_branch() -> str: "-g", "--github", is_flag=True, - help="Fetch from GitHub Actions instead of GitLab CI", + help="Fetch from GitHub Actions (default)", + hidden=True, + expose_value=False, +) +@click.option( + "-l", + "--gitlab", + is_flag=True, + help="Fetch from Gitlab CI instead of GitHub Actions", ) @click.option("-b", "--branch", help="Branch name") @click.option("-r", "--run-id", help="GitHub Actions run id", type=int) @@ -57,7 +65,7 @@ def _get_current_git_branch() -> str: ) @click.option("-r", "--remove-missing", is_flag=True, help="Remove missing tests") def ci( - github: bool, + gitlab: bool, branch: str | None, run_id: int | None, only_jobs: Iterable[str] | None, @@ -79,7 +87,7 @@ def ci( if exclude_jobs: print(f"Exclude jobs: {exclude_jobs}") - if github: + if not gitlab: from github import get_branch_ui_fixtures_results ui_results = get_branch_ui_fixtures_results( From 8129086aa74632cec4b41b1d64e832853634a8a6 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Mon, 29 Jul 2024 14:54:23 +0200 Subject: [PATCH 613/626] chore: upgrade pytest to get rid of python 3.14 deprecation warnings --- poetry.lock | 63 +++++++++++------------ pyproject.toml | 4 +- tests/ui_tests/fixtures.json | 96 ++++++++++++++++++------------------ 3 files changed, 82 insertions(+), 81 deletions(-) diff --git a/poetry.lock b/poetry.lock index 948d65670c..74500faa4f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,17 +19,6 @@ wrapt = [ {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, ] -[[package]] -name = "atomicwrites" -version = "1.4.0" -description = "Atomic file writes." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, - {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, -] - [[package]] name = "attrs" version = "21.4.0" @@ -422,6 +411,20 @@ six = ">=1.9.0" gmpy = ["gmpy"] gmpy2 = ["gmpy2"] +[[package]] +name = "exceptiongroup" +version = "1.2.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + +[package.extras] +test = ["pytest (>=6)"] + [[package]] name = "execnet" version = "1.9.0" @@ -505,13 +508,13 @@ pyproject = ["Flake8-pyproject"] [[package]] name = "flaky" -version = "3.7.0" -description = "Plugin for nose or pytest that automatically reruns flaky tests." +version = "3.8.1" +description = "Plugin for pytest that automatically reruns flaky tests." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.5" files = [ - {file = "flaky-3.7.0-py2.py3-none-any.whl", hash = "sha256:d6eda73cab5ae7364504b7c44670f70abed9e75f77dd116352f662817592ec9c"}, - {file = "flaky-3.7.0.tar.gz", hash = "sha256:3ad100780721a1911f57a165809b7ea265a7863305acb66708220820caf8aa0d"}, + {file = "flaky-3.8.1-py2.py3-none-any.whl", hash = "sha256:194ccf4f0d3a22b2de7130f4b62e45e977ac1b5ccad74d4d48f3005dcc38815e"}, + {file = "flaky-3.8.1.tar.gz", hash = "sha256:47204a81ec905f3d5acfbd61daeabcada8f9d4031616d9bcb0618461729699f5"}, ] [[package]] @@ -1023,13 +1026,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest- [[package]] name = "pluggy" -version = "1.0.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -1171,27 +1174,25 @@ cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "6.2.5" +version = "8.3.2" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"}, - {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"}, + {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, + {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, ] [package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -toml = "*" +pluggy = ">=1.5,<2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-forked" @@ -1797,4 +1798,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "6e63e1ae52fbff76a8e45b5c4bc58938a5537bce7b0eee7993bb55342e47b74a" +content-hash = "971d0f6f2926d839954b35b2029978046e282df3d8d595b1e176dc0cf37889fb" diff --git a/pyproject.toml b/pyproject.toml index 828ba7e534..be12042a7f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,9 +13,9 @@ protobuf = "*" nanopb = "^0.4.3" ## test tools -pytest = "^6.1.0" +pytest = "^8" coverage = "<5" # coverage 5+ uses binary sqlite format -flaky = "^3.6.1" # https://github.com/box/flaky/issues/156 +flaky = ">3.6.1" # https://github.com/box/flaky/issues/156 pytest-ordering = "*" pytest-random-order = "*" pytest-timeout = "*" diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json index dd1efbda1f..0a7e3e69fc 100644 --- a/tests/ui_tests/fixtures.json +++ b/tests/ui_tests/fixtures.json @@ -514,8 +514,8 @@ "T1B1_en_misc-test_msg_getentropy.py::test_entropy[16]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", "T1B1_en_misc-test_msg_getentropy.py::test_entropy[17]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", "T1B1_en_misc-test_msg_getentropy.py::test_entropy[1]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1B1_en_misc-test_msg_getentropy.py::test_entropy[20]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", -"T1B1_en_misc-test_msg_getentropy.py::test_entropy[21]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1B1_en_misc-test_msg_getentropy.py::test_entropy[2_0]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", +"T1B1_en_misc-test_msg_getentropy.py::test_entropy[2_1]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", "T1B1_en_misc-test_msg_getentropy.py::test_entropy[256]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", "T1B1_en_misc-test_msg_getentropy.py::test_entropy[257]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", "T1B1_en_misc-test_msg_getentropy.py::test_entropy[32]": "10ee154b5db5599420a26df724cf2301afafb9bdb55429e4e091046881d589cb", @@ -2148,8 +2148,8 @@ "T2T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", "T2T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", "T2T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T2T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", -"T2T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T2T1_cs_misc-test_msg_getentropy.py::test_entropy[2_0]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", +"T2T1_cs_misc-test_msg_getentropy.py::test_entropy[2_1]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", "T2T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", "T2T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", "T2T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "939e425fcbde12fc4f9b48ae05c6de722f1611bacdb31454c3dad6b6f0690b56", @@ -3595,8 +3595,8 @@ "T2T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", "T2T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", "T2T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T2T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", -"T2T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T2T1_de_misc-test_msg_getentropy.py::test_entropy[2_0]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", +"T2T1_de_misc-test_msg_getentropy.py::test_entropy[2_1]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", "T2T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", "T2T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", "T2T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "6e8c41267a81614dcec53defd6a744340a7d78be469b6bdceade8eee77c6c596", @@ -5042,8 +5042,8 @@ "T2T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", "T2T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", "T2T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T2T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", -"T2T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T2T1_en_misc-test_msg_getentropy.py::test_entropy[2_0]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", +"T2T1_en_misc-test_msg_getentropy.py::test_entropy[2_1]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", "T2T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", "T2T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", "T2T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "4dd8a541e8181aac2011a397360f8450c048536a0af77d0360c5b048657fff2b", @@ -6507,8 +6507,8 @@ "T2T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", "T2T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", "T2T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T2T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", -"T2T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T2T1_es_misc-test_msg_getentropy.py::test_entropy[2_0]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", +"T2T1_es_misc-test_msg_getentropy.py::test_entropy[2_1]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", "T2T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", "T2T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", "T2T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "0ac92fc8cd4f3696c356d4a09f882390567ebd23095ccacf254d8af9d342011a", @@ -7954,8 +7954,8 @@ "T2T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", "T2T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", "T2T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T2T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", -"T2T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T2T1_fr_misc-test_msg_getentropy.py::test_entropy[2_0]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", +"T2T1_fr_misc-test_msg_getentropy.py::test_entropy[2_1]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", "T2T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", "T2T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", "T2T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "68bf167020f6e25f3aecd5e0224b3487c963968a6b9788c0a771987a1a88011d", @@ -9401,8 +9401,8 @@ "T2T1_it_misc-test_msg_getentropy.py::test_entropy[16]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", "T2T1_it_misc-test_msg_getentropy.py::test_entropy[17]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", "T2T1_it_misc-test_msg_getentropy.py::test_entropy[1]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", -"T2T1_it_misc-test_msg_getentropy.py::test_entropy[20]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", -"T2T1_it_misc-test_msg_getentropy.py::test_entropy[21]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[2_0]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", +"T2T1_it_misc-test_msg_getentropy.py::test_entropy[2_1]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", "T2T1_it_misc-test_msg_getentropy.py::test_entropy[256]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", "T2T1_it_misc-test_msg_getentropy.py::test_entropy[257]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", "T2T1_it_misc-test_msg_getentropy.py::test_entropy[32]": "b56abab8f8bc9fa3fa900b437ce26c9bec6bd4c5563b87fff4050698686b5ec2", @@ -10848,8 +10848,8 @@ "T2T1_pt_misc-test_msg_getentropy.py::test_entropy[16]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", "T2T1_pt_misc-test_msg_getentropy.py::test_entropy[17]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", "T2T1_pt_misc-test_msg_getentropy.py::test_entropy[1]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", -"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[20]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", -"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[21]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[2_0]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", +"T2T1_pt_misc-test_msg_getentropy.py::test_entropy[2_1]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", "T2T1_pt_misc-test_msg_getentropy.py::test_entropy[256]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", "T2T1_pt_misc-test_msg_getentropy.py::test_entropy[257]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", "T2T1_pt_misc-test_msg_getentropy.py::test_entropy[32]": "2aae8275949cc3e5b4a8e570873eb528cea98528d19fbb94fb7178536fc77f0b", @@ -12295,8 +12295,8 @@ "T2T1_tr_misc-test_msg_getentropy.py::test_entropy[16]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", "T2T1_tr_misc-test_msg_getentropy.py::test_entropy[17]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", "T2T1_tr_misc-test_msg_getentropy.py::test_entropy[1]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", -"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[20]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", -"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[21]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[2_0]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", +"T2T1_tr_misc-test_msg_getentropy.py::test_entropy[2_1]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", "T2T1_tr_misc-test_msg_getentropy.py::test_entropy[256]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", "T2T1_tr_misc-test_msg_getentropy.py::test_entropy[257]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", "T2T1_tr_misc-test_msg_getentropy.py::test_entropy[32]": "7c0b0add39af99fefdbccc1f770accbb7eebfce9d3e1df794f5a4e46a05caa81", @@ -14020,8 +14020,8 @@ "T3B1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", "T3B1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", "T3B1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", -"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[2_0]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", +"T3B1_cs_misc-test_msg_getentropy.py::test_entropy[2_1]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", "T3B1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", "T3B1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", "T3B1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "90ad3706f2f17a135b5d783eaf5bc98bc5e500de96054ac132dafc72a0ac6c9c", @@ -15387,8 +15387,8 @@ "T3B1_de_misc-test_msg_getentropy.py::test_entropy[16]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", "T3B1_de_misc-test_msg_getentropy.py::test_entropy[17]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", "T3B1_de_misc-test_msg_getentropy.py::test_entropy[1]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T3B1_de_misc-test_msg_getentropy.py::test_entropy[20]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", -"T3B1_de_misc-test_msg_getentropy.py::test_entropy[21]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[2_0]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", +"T3B1_de_misc-test_msg_getentropy.py::test_entropy[2_1]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", "T3B1_de_misc-test_msg_getentropy.py::test_entropy[256]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", "T3B1_de_misc-test_msg_getentropy.py::test_entropy[257]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", "T3B1_de_misc-test_msg_getentropy.py::test_entropy[32]": "0d6a6c0d344138d5eed4283ac8bfc8665a9115ca123b29fc897728e206c518b6", @@ -16754,8 +16754,8 @@ "T3B1_en_misc-test_msg_getentropy.py::test_entropy[16]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", "T3B1_en_misc-test_msg_getentropy.py::test_entropy[17]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", "T3B1_en_misc-test_msg_getentropy.py::test_entropy[1]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T3B1_en_misc-test_msg_getentropy.py::test_entropy[20]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", -"T3B1_en_misc-test_msg_getentropy.py::test_entropy[21]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[2_0]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", +"T3B1_en_misc-test_msg_getentropy.py::test_entropy[2_1]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", "T3B1_en_misc-test_msg_getentropy.py::test_entropy[256]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", "T3B1_en_misc-test_msg_getentropy.py::test_entropy[257]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", "T3B1_en_misc-test_msg_getentropy.py::test_entropy[32]": "d50e2ba952e19254c8157bd29d3c6f29e40b6c92c02f1459fa4b9bf6b6c3f346", @@ -18121,8 +18121,8 @@ "T3B1_es_misc-test_msg_getentropy.py::test_entropy[16]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", "T3B1_es_misc-test_msg_getentropy.py::test_entropy[17]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", "T3B1_es_misc-test_msg_getentropy.py::test_entropy[1]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T3B1_es_misc-test_msg_getentropy.py::test_entropy[20]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", -"T3B1_es_misc-test_msg_getentropy.py::test_entropy[21]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[2_0]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", +"T3B1_es_misc-test_msg_getentropy.py::test_entropy[2_1]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", "T3B1_es_misc-test_msg_getentropy.py::test_entropy[256]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", "T3B1_es_misc-test_msg_getentropy.py::test_entropy[257]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", "T3B1_es_misc-test_msg_getentropy.py::test_entropy[32]": "1338c90768f03ee237fab46948670510f9c11426cac29615ac5a16b9eed29661", @@ -19488,8 +19488,8 @@ "T3B1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", "T3B1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", "T3B1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", -"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[2_0]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", +"T3B1_fr_misc-test_msg_getentropy.py::test_entropy[2_1]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", "T3B1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", "T3B1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", "T3B1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "2cf5399e4fed31225f612bbbb1dbebff6d024d7a29db2672b1d57f79580eef6a", @@ -20855,8 +20855,8 @@ "T3B1_it_misc-test_msg_getentropy.py::test_entropy[16]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", "T3B1_it_misc-test_msg_getentropy.py::test_entropy[17]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", "T3B1_it_misc-test_msg_getentropy.py::test_entropy[1]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T3B1_it_misc-test_msg_getentropy.py::test_entropy[20]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", -"T3B1_it_misc-test_msg_getentropy.py::test_entropy[21]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[2_0]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", +"T3B1_it_misc-test_msg_getentropy.py::test_entropy[2_1]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", "T3B1_it_misc-test_msg_getentropy.py::test_entropy[256]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", "T3B1_it_misc-test_msg_getentropy.py::test_entropy[257]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", "T3B1_it_misc-test_msg_getentropy.py::test_entropy[32]": "f31cfba6f4995637c382193d16f535729ee2c95053d5539c6e9340b5d0a3dbe8", @@ -22222,8 +22222,8 @@ "T3B1_pt_misc-test_msg_getentropy.py::test_entropy[16]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", "T3B1_pt_misc-test_msg_getentropy.py::test_entropy[17]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", "T3B1_pt_misc-test_msg_getentropy.py::test_entropy[1]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[20]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", -"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[21]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[2_0]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", +"T3B1_pt_misc-test_msg_getentropy.py::test_entropy[2_1]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", "T3B1_pt_misc-test_msg_getentropy.py::test_entropy[256]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", "T3B1_pt_misc-test_msg_getentropy.py::test_entropy[257]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", "T3B1_pt_misc-test_msg_getentropy.py::test_entropy[32]": "d47e0c774864a97c340ad3d8596e2f22cfc5644593bea30c9c836715b1aefb11", @@ -24008,8 +24008,8 @@ "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[16]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[17]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[1]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[20]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", -"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[21]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[2_0]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", +"T3T1_cs_misc-test_msg_getentropy.py::test_entropy[2_1]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[256]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[257]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", "T3T1_cs_misc-test_msg_getentropy.py::test_entropy[32]": "6898656ce9e6b4f4ab818e0b250dae248ee6ba4e5286f4f9003e823b99310679", @@ -25366,8 +25366,8 @@ "T3T1_de_misc-test_msg_getentropy.py::test_entropy[16]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[17]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[1]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[20]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", -"T3T1_de_misc-test_msg_getentropy.py::test_entropy[21]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[2_0]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", +"T3T1_de_misc-test_msg_getentropy.py::test_entropy[2_1]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[256]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[257]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", "T3T1_de_misc-test_msg_getentropy.py::test_entropy[32]": "07f309f6cb445f186d2bf8e802154f348a9cb602afd1748fa5c0b0581a5fda8f", @@ -26724,8 +26724,8 @@ "T3T1_en_misc-test_msg_getentropy.py::test_entropy[16]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[17]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[1]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[20]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", -"T3T1_en_misc-test_msg_getentropy.py::test_entropy[21]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[2_0]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", +"T3T1_en_misc-test_msg_getentropy.py::test_entropy[2_1]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[256]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[257]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", "T3T1_en_misc-test_msg_getentropy.py::test_entropy[32]": "a2d1889f065df248882f8c096beb1709146289f2dce17607f43582aedf7da01d", @@ -28082,8 +28082,8 @@ "T3T1_es_misc-test_msg_getentropy.py::test_entropy[16]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[17]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[1]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[20]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", -"T3T1_es_misc-test_msg_getentropy.py::test_entropy[21]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[2_0]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", +"T3T1_es_misc-test_msg_getentropy.py::test_entropy[2_1]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[256]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[257]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", "T3T1_es_misc-test_msg_getentropy.py::test_entropy[32]": "290e1f039c264ba5fb8b54a7759834d152a6fb0ce319814d2cd40ef7dac88a9d", @@ -29440,8 +29440,8 @@ "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[16]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[17]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[1]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[20]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", -"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[21]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[2_0]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", +"T3T1_fr_misc-test_msg_getentropy.py::test_entropy[2_1]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[256]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[257]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", "T3T1_fr_misc-test_msg_getentropy.py::test_entropy[32]": "aa24b196a5ec983fc1844c6d55fa15efd44a373803df10ad16f7b798a3e79af1", @@ -30798,8 +30798,8 @@ "T3T1_it_misc-test_msg_getentropy.py::test_entropy[16]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", "T3T1_it_misc-test_msg_getentropy.py::test_entropy[17]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", "T3T1_it_misc-test_msg_getentropy.py::test_entropy[1]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", -"T3T1_it_misc-test_msg_getentropy.py::test_entropy[20]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", -"T3T1_it_misc-test_msg_getentropy.py::test_entropy[21]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[2_0]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", +"T3T1_it_misc-test_msg_getentropy.py::test_entropy[2_1]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", "T3T1_it_misc-test_msg_getentropy.py::test_entropy[256]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", "T3T1_it_misc-test_msg_getentropy.py::test_entropy[257]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", "T3T1_it_misc-test_msg_getentropy.py::test_entropy[32]": "e8bab729f15ae5aae2733ff84b17d8424f087ddb90559a71a112b361788486d5", @@ -32156,8 +32156,8 @@ "T3T1_pt_misc-test_msg_getentropy.py::test_entropy[16]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", "T3T1_pt_misc-test_msg_getentropy.py::test_entropy[17]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", "T3T1_pt_misc-test_msg_getentropy.py::test_entropy[1]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", -"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[20]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", -"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[21]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[2_0]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", +"T3T1_pt_misc-test_msg_getentropy.py::test_entropy[2_1]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", "T3T1_pt_misc-test_msg_getentropy.py::test_entropy[256]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", "T3T1_pt_misc-test_msg_getentropy.py::test_entropy[257]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", "T3T1_pt_misc-test_msg_getentropy.py::test_entropy[32]": "86135aa85524f35db52abdfc64299b474761a5ba1a23cd79fdf7cf92793dd242", @@ -33502,8 +33502,8 @@ "T3T1_tr_misc-test_msg_getentropy.py::test_entropy[16]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", "T3T1_tr_misc-test_msg_getentropy.py::test_entropy[17]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", "T3T1_tr_misc-test_msg_getentropy.py::test_entropy[1]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", -"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[20]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", -"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[21]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[2_0]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", +"T3T1_tr_misc-test_msg_getentropy.py::test_entropy[2_1]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", "T3T1_tr_misc-test_msg_getentropy.py::test_entropy[256]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", "T3T1_tr_misc-test_msg_getentropy.py::test_entropy[257]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", "T3T1_tr_misc-test_msg_getentropy.py::test_entropy[32]": "74985c3bb5397bd0ac50d4b18120c37a89506f05306c08ae5966bf100924840e", From b9a104d2ac9bda6b2a14303c2074489a2dde2c80 Mon Sep 17 00:00:00 2001 From: matejcik <ja@matejcik.cz> Date: Tue, 30 Jul 2024 11:28:34 +0200 Subject: [PATCH 614/626] fix(tests): python >=3.11 compatibility for identifiers Python 3.11 changed IntEnum.__str__ to return the number instead of the enum value name. This breaks fixtures.json because pytest uses str(value) to generate the test identifier names, and in a lot of places our identifiers use the enum values. This override of `_idval_from_value` explicitly generates a name from the IntEnum instead of using the __str__ implementation. --- tests/conftest.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 0c9f364b05..499fdeb47c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -18,10 +18,12 @@ import os import typing as t +from enum import IntEnum from pathlib import Path import pytest import xdist +from _pytest.python import IdMaker from _pytest.reports import TestReport from trezorlib import debuglink, log, models @@ -464,6 +466,15 @@ def pytest_configure(config: "Config") -> None: if config.getoption("verbose"): log.enable_debug_output() + idval_orig = IdMaker._idval_from_value + + def idval_from_value(self: IdMaker, val: object) -> str | None: + if isinstance(val, IntEnum): + return f"{type(val).__name__}.{val.name}" + return idval_orig(self, val) + + IdMaker._idval_from_value = idval_from_value + def pytest_runtest_setup(item: pytest.Item) -> None: """Called for each test item (class, individual tests). From aa47f951ec9947c784f27c358a6a0c9faceeeafc Mon Sep 17 00:00:00 2001 From: vdovhanych <dovhanych@me.com> Date: Fri, 6 Sep 2024 09:24:04 +0200 Subject: [PATCH 615/626] ci: fix trezor-common sync gh worfklow --- .github/workflows/bot-common-sync.yml | 25 +++++++++++++------------ ci/common_sync/common_repo_sync.sh | 6 +++--- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/bot-common-sync.yml b/.github/workflows/bot-common-sync.yml index 3197c7113f..f6686a0e38 100644 --- a/.github/workflows/bot-common-sync.yml +++ b/.github/workflows/bot-common-sync.yml @@ -12,9 +12,9 @@ jobs: sync-common: runs-on: ubuntu-latest env: - GITHUB_BOT_USERNAME: ${{ secrets.TREZOR_BOT_USERNAME }} - GITHUB_BOT_TOKEN: ${{ secrets.GH_BOT_TOKEN }} - GITHUB_BOT_EMAIL: ${{ secrets.TREZOR_BOT_EMAIL }} + BOT_TOKEN: ${{ secrets.BOT_TOKEN_COMMON_FINE }} + BOT_USERNAME: ${{ secrets.TREZOR_BOT_USERNAME }} + BOT_EMAIL: ${{ secrets.TREZOR_BOT_EMAIL }} steps: - name: Checkout repository uses: actions/checkout@v4 @@ -23,20 +23,21 @@ jobs: - name: Copy git-filter and script to temporary directory run: | - cp ./ci/common_sync/git-filter-repo/git-filter-repo ${{runner.temp}}/common_repo_sync.sh - cp ./ci/common_sync/git-filter-repo/git-filter-repo ${{runner.temp}}/git-filter-repo + cp ./ci/common_sync/common_repo_sync.sh ${{runner.temp}}/common_repo_sync.sh + cp ./ci/common_sync/git-filter-repo ${{runner.temp}}/git-filter-repo - - name: Add git-filter-repo to PATH + - name: Confiugre git user run: | - echo "Adding git-filter-repo to PATH" - echo '${{ runner.temp }}/ci/common_sync/git-filter-repo' >> $GITHUB_PATH + git config --global user.name "${BOT_USERNAME}" + git config --global user.email "${BOT_EMAIL}" - - name: Configure git user + - name: Add git-filter-repo to PATH run: | - git config --global user.name $GITHUB_BOT_USERNAME - git config --global user.email $GITHUB_BOT_EMAIL + echo "Adding git-filter-repo to PATH" + echo '${{runner.temp}}' >> $GITHUB_PATH - name: Sync trezor-common repository run: | echo "Synchronizing common with the trezor-common repository" - .${{ runner.temp }}/common_repo_sync.sh + git config --unset-all http.https://github.com/.extraheader + ${{ runner.temp }}/common_repo_sync.sh diff --git a/ci/common_sync/common_repo_sync.sh b/ci/common_sync/common_repo_sync.sh index 6caae4f2e0..e383283092 100755 --- a/ci/common_sync/common_repo_sync.sh +++ b/ci/common_sync/common_repo_sync.sh @@ -1,13 +1,13 @@ #!/usr/bin/env bash -GH_USER="$GITHUB_BOT_USERNAME" -GH_TOKEN="$GITHUB_BOT_TOKEN" +COMMON_REPO_TOKEN="$BOT_TOKEN" +COMMON_REPO_USER="$BOT_USERNAME" # checkout to temporary branch git checkout -B tmp # setup trezor-common remote -git remote add sync-common https://$GH_USER:$GH_TOKEN@github.com/trezor/trezor-common.git 2>/dev/null +git remote add sync-common https://$COMMON_REPO_USER:$COMMON_REPO_TOKEN@github.com/trezor/trezor-common.git 2>/dev/null # top commit in HEAD before monorepo was introduced TOP_COMMIT_IN_COMMON=893fd219d4a01bcffa0cd9cfa631856371ec5aa9 From f6aa7cbb085e275c6c9e937f32d090ef2af58343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ioan=20Biz=C4=83u?= <i@ibz.me> Date: Wed, 11 Sep 2024 11:13:23 +0200 Subject: [PATCH 616/626] fix(core): tweak swipes in ETH staking flow --- core/.changelog.d/4167.fixed | 1 + .../ui/model_mercury/flow/confirm_output.rs | 6 +++++ .../rust/src/ui/model_mercury/flow/util.rs | 23 ++++++++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 core/.changelog.d/4167.fixed diff --git a/core/.changelog.d/4167.fixed b/core/.changelog.d/4167.fixed new file mode 100644 index 0000000000..cfa8a80b6d --- /dev/null +++ b/core/.changelog.d/4167.fixed @@ -0,0 +1 @@ +[T3T1] Fix swipe in ETH stake flow menu and address confirmation. diff --git a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs index 645562428d..6c215eafdf 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/confirm_output.rs @@ -142,14 +142,17 @@ impl FlowState for ConfirmOutputWithSummary { match (self, direction) { (Self::Main, SwipeDirection::Left) => Self::MainMenu.swipe(direction), (Self::Main, SwipeDirection::Up) => Self::Summary.swipe(direction), + (Self::MainMenu, SwipeDirection::Right) => Self::Main.swipe(direction), (Self::AddressInfo, SwipeDirection::Right) => Self::MainMenu.swipe(direction), (Self::AccountInfo, SwipeDirection::Right) => Self::MainMenu.swipe(direction), (Self::Summary, SwipeDirection::Left) => Self::SummaryMenu.swipe(direction), (Self::Summary, SwipeDirection::Up) => Self::Hold.swipe(direction), (Self::Summary, SwipeDirection::Down) => Self::Main.swipe(direction), + (Self::SummaryMenu, SwipeDirection::Right) => Self::Summary.swipe(direction), (Self::FeeInfo, SwipeDirection::Right) => Self::SummaryMenu.swipe(direction), (Self::Hold, SwipeDirection::Left) => Self::HoldMenu.swipe(direction), (Self::Hold, SwipeDirection::Down) => Self::Summary.swipe(direction), + (Self::HoldMenu, SwipeDirection::Right) => Self::Hold.swipe(direction), _ => self.do_nothing(), } } @@ -260,6 +263,7 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err .with_footer(TR::instructions__swipe_up.into(), None) .with_chunkify(chunkify) .with_text_mono(text_mono) + .with_swipe_up() .into_layout()? .one_button_request(ButtonRequest::from_num(br_code, br_name)); @@ -307,6 +311,7 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err .with_menu_button() .with_footer(TR::instructions__swipe_up.into(), None) .with_text_mono(text_mono) + .with_swipe_up() .with_swipe_down() .into_layout()? .one_button_request(ButtonRequest::from_num(br_code, br_name)); @@ -418,6 +423,7 @@ fn new_confirm_output_obj(_args: &[Obj], kwargs: &Map) -> Result<Obj, error::Err .with_cancel_button() .with_chunkify(true) .with_text_mono(true) + .with_swipe_right() .into_layout()?; flow = flow.with_page(&ConfirmOutputWithSummary::AddressInfo, address_content)?; } else { diff --git a/core/embed/rust/src/ui/model_mercury/flow/util.rs b/core/embed/rust/src/ui/model_mercury/flow/util.rs index c8a6518087..39e42b5d08 100644 --- a/core/embed/rust/src/ui/model_mercury/flow/util.rs +++ b/core/embed/rust/src/ui/model_mercury/flow/util.rs @@ -33,7 +33,9 @@ pub struct ConfirmBlobParams { cancel_button: bool, chunkify: bool, text_mono: bool, + swipe_up: bool, swipe_down: bool, + swipe_right: bool, } impl ConfirmBlobParams { @@ -54,7 +56,9 @@ impl ConfirmBlobParams { cancel_button: false, chunkify: false, text_mono: true, + swipe_up: false, swipe_down: false, + swipe_right: false, } } @@ -78,11 +82,21 @@ impl ConfirmBlobParams { self } + pub const fn with_swipe_up(mut self) -> Self { + self.swipe_up = true; + self + } + pub const fn with_swipe_down(mut self) -> Self { self.swipe_down = true; self } + pub const fn with_swipe_right(mut self) -> Self { + self.swipe_right = true; + self + } + pub const fn with_footer( mut self, instruction: TString<'static>, @@ -143,11 +157,18 @@ impl ConfirmBlobParams { frame = frame.with_swipe(SwipeDirection::Left, SwipeSettings::default()); } + if self.swipe_up { + frame = frame.with_swipe(SwipeDirection::Up, SwipeSettings::default()); + } + if self.swipe_down { frame = frame.with_swipe(SwipeDirection::Down, SwipeSettings::default()); } - frame = frame.with_swipe(SwipeDirection::Up, SwipeSettings::default()); + if self.swipe_right { + frame = frame.with_swipe(SwipeDirection::Right, SwipeSettings::default()); + } + frame = frame.with_vertical_pages(); Ok(frame.map(|msg| matches!(msg, FrameMsg::Button(_)).then_some(FlowMsg::Info))) From 0bdbd924c1b414fdad897eb2833ae0daab4d67c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 9 Aug 2024 16:51:03 +0200 Subject: [PATCH 617/626] refactor(crypto): optimize size of AES --- crypto/aes/aesopt.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/crypto/aes/aesopt.h b/crypto/aes/aesopt.h index 3df184c6c7..6cd80cde35 100644 --- a/crypto/aes/aesopt.h +++ b/crypto/aes/aesopt.h @@ -294,7 +294,7 @@ Issue Date: 20/12/2007 unrolling. The following options allow partial or full loop unrolling to be set independently for encryption and decryption */ -#if 1 +#if 0 # define ENC_UNROLL FULL #elif 0 # define ENC_UNROLL PARTIAL @@ -310,11 +310,11 @@ Issue Date: 20/12/2007 # define DEC_UNROLL NONE #endif -#if 1 +#if 0 # define ENC_KS_UNROLL #endif -#if 1 +#if 0 # define DEC_KS_UNROLL #endif @@ -323,7 +323,7 @@ Issue Date: 20/12/2007 If this section is included, tables are used to provide faster finite field arithmetic (this has no effect if STATIC_TABLES is defined). */ -#if 1 +#if 0 # define FF_TABLES #endif @@ -402,7 +402,7 @@ Issue Date: 20/12/2007 of tables used by this implementation. */ -#if 1 /* set tables for the normal encryption round */ +#if 0 /* set tables for the normal encryption round */ # define ENC_ROUND FOUR_TABLES #elif 0 # define ENC_ROUND ONE_TABLE @@ -410,7 +410,7 @@ Issue Date: 20/12/2007 # define ENC_ROUND NO_TABLES #endif -#if 1 /* set tables for the last encryption round */ +#if 0 /* set tables for the last encryption round */ # define LAST_ENC_ROUND FOUR_TABLES #elif 0 # define LAST_ENC_ROUND ONE_TABLE @@ -418,7 +418,7 @@ Issue Date: 20/12/2007 # define LAST_ENC_ROUND NO_TABLES #endif -#if 1 /* set tables for the normal decryption round */ +#if 0 /* set tables for the normal decryption round */ # define DEC_ROUND FOUR_TABLES #elif 0 # define DEC_ROUND ONE_TABLE @@ -426,7 +426,7 @@ Issue Date: 20/12/2007 # define DEC_ROUND NO_TABLES #endif -#if 1 /* set tables for the last decryption round */ +#if 0 /* set tables for the last decryption round */ # define LAST_DEC_ROUND FOUR_TABLES #elif 0 # define LAST_DEC_ROUND ONE_TABLE @@ -438,7 +438,7 @@ Issue Date: 20/12/2007 way that the round functions can. Include or exclude the following defines to set this requirement. */ -#if 1 +#if 0 # define KEY_SCHED FOUR_TABLES #elif 0 # define KEY_SCHED ONE_TABLE From b0e703f9881e03d98b0675d6f464cbee0a4a380d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Sun, 1 Sep 2024 18:01:54 +0200 Subject: [PATCH 618/626] refactor(crypto): introduce symbolic constants for size optimization --- crypto/options.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crypto/options.h b/crypto/options.h index 4bf9a99046..03f50ea664 100644 --- a/crypto/options.h +++ b/crypto/options.h @@ -23,6 +23,18 @@ #ifndef __OPTIONS_H__ #define __OPTIONS_H__ +#ifndef OPTIMIZE_SIZE +#define OPTIMIZE_SIZE 1 +#endif + +#ifndef OPTIMIZE_SIZE_BLAKE2S +#define OPTIMIZE_SIZE_BLAKE2S 0 +#endif + +#ifndef OPTIMIZE_SIZE_BLAKE2B +#define OPTIMIZE_SIZE_BLAKE2B OPTIMIZE_SIZE +#endif + // use precomputed Curve Points (some scalar multiples of curve base point G) #ifndef USE_PRECOMPUTED_CP #define USE_PRECOMPUTED_CP 0 From 729da01b8865f8d49a08ed05307eaebe93485282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 16 Aug 2024 13:44:53 +0200 Subject: [PATCH 619/626] tests(crypto): test groestl512 --- crypto/tests/test_check.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index a1e155a12d..613c100b51 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -62,6 +62,7 @@ #include "ed25519-donna/ed25519-keccak.h" #include "ed25519-donna/ed25519.h" #include "elligator2.h" +#include "groestl.h" #include "hash_to_curve.h" #include "hmac_drbg.h" #include "memzero.h" @@ -6501,6 +6502,37 @@ START_TEST(test_mnemonic) { } END_TEST +START_TEST(test_groestl512) { + static struct { + const char *msg; + const char *hash; + } tests[] = { + {"", + "6d3ad29d279110eef3adbd66de2a0345a77baede1557f5d099fce0c03d6dc2ba8e6d4a6" + "633dfbd66053c20faa87d1a11f39a7fbe4a6c2f009801370308fc4ad8"}, + // abc + {"616263", + "70e1c68c60df3b655339d67dc291cc3f1dde4ef343f11b23fdd44957693815a75a8339c" + "682fc28322513fd1f283c18e53cff2b264e06bf83a2f0ac8c1f6fbff6"}, + // 64 bytes + {"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f" + "202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f", + "6e8c9b90e36cea68c029a7d8b95b718c84205d81be227ba61510f567d46b83edd11f301" + "bf1e7041be991b22fdbee82dbdce7ab0e0ee42a795ca965a439532a39"}, + }; + + uint8_t hash[64]; + GROESTL512_CTX ctx; + + for (size_t i = 0; i < sizeof(tests) / sizeof(*tests); i++) { + groestl512_Init(&ctx); + groestl512_Update(&ctx, fromhex(tests[i].msg), strlen(tests[i].msg) / 2); + groestl512_Final(&ctx, hash); + ck_assert_mem_eq(hash, fromhex(tests[i].hash), 64); + } +} +END_TEST + START_TEST(test_mnemonic_check) { static const char *vectors_ok[] = { "abandon abandon abandon abandon abandon abandon abandon abandon abandon " @@ -11558,6 +11590,10 @@ Suite *test_suite(void) { tcase_add_test(tc, test_blake2s); suite_add_tcase(s, tc); + tc = tcase_create("groestl"); + tcase_add_test(tc, test_groestl512); + suite_add_tcase(s, tc); + tc = tcase_create("chacha_drbg"); tcase_add_test(tc, test_chacha_drbg); suite_add_tcase(s, tc); From cb9c56e83f1d7bc1440546760d5c400dd81bf8aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 9 Aug 2024 15:45:17 +0200 Subject: [PATCH 620/626] refactor(crypto): remove unused macros in groestl512 --- crypto/groestl.c | 148 ----------------------------------------------- 1 file changed, 148 deletions(-) diff --git a/crypto/groestl.c b/crypto/groestl.c index d913c76e05..5f8ef01513 100644 --- a/crypto/groestl.c +++ b/crypto/groestl.c @@ -58,28 +58,6 @@ #define QC32up(j, r) SPH_C32(0xFFFFFFFF) #define QC32dn(j, r) (((sph_u32)(r) << 24) ^ SPH_T32(~((sph_u32)(j) << 24))) -#define C64e(x) ((SPH_C64(x) >> 56) \ - | ((SPH_C64(x) >> 40) & SPH_C64(0x000000000000FF00)) \ - | ((SPH_C64(x) >> 24) & SPH_C64(0x0000000000FF0000)) \ - | ((SPH_C64(x) >> 8) & SPH_C64(0x00000000FF000000)) \ - | ((SPH_C64(x) << 8) & SPH_C64(0x000000FF00000000)) \ - | ((SPH_C64(x) << 24) & SPH_C64(0x0000FF0000000000)) \ - | ((SPH_C64(x) << 40) & SPH_C64(0x00FF000000000000)) \ - | ((SPH_C64(x) << 56) & SPH_C64(0xFF00000000000000))) -#define dec64e_aligned sph_dec64le_aligned -#define enc64e sph_enc64le -#define B64_0(x) ((x) & 0xFF) -#define B64_1(x) (((x) >> 8) & 0xFF) -#define B64_2(x) (((x) >> 16) & 0xFF) -#define B64_3(x) (((x) >> 24) & 0xFF) -#define B64_4(x) (((x) >> 32) & 0xFF) -#define B64_5(x) (((x) >> 40) & 0xFF) -#define B64_6(x) (((x) >> 48) & 0xFF) -#define B64_7(x) ((x) >> 56) -#define R64 SPH_ROTL64 -#define PC64(j, r) ((sph_u64)((j) + (r))) -#define QC64(j, r) (((sph_u64)(r) << 56) ^ SPH_T64(~((sph_u64)(j) << 56))) - static const sph_u32 T0up[] = { C32e(0xc632f4a5), C32e(0xf86f9784), C32e(0xee5eb099), C32e(0xf67a8c8d), @@ -349,132 +327,6 @@ static const sph_u32 T1dn[] = { C32e(0xcb46f6cb), C32e(0xfc1f4bfc), C32e(0xd661dad6), C32e(0x3a4e583a) }; -#define DECL_STATE_SMALL \ - sph_u32 H[16] = {0}; - -#define READ_STATE_SMALL(sc) do { \ - memcpy(H, (sc)->state.narrow, sizeof H); \ - } while (0) - -#define WRITE_STATE_SMALL(sc) do { \ - memcpy((sc)->state.narrow, H, sizeof H); \ - } while (0) - -#define XCAT(x, y) XCAT_(x, y) -#define XCAT_(x, y) x ## y - -#define RSTT(d0, d1, a, b0, b1, b2, b3, b4, b5, b6, b7) do { \ - t[d0] = T0up[B32_0(a[b0])] \ - ^ T1up[B32_1(a[b1])] \ - ^ T2up[B32_2(a[b2])] \ - ^ T3up[B32_3(a[b3])] \ - ^ T0dn[B32_0(a[b4])] \ - ^ T1dn[B32_1(a[b5])] \ - ^ T2dn[B32_2(a[b6])] \ - ^ T3dn[B32_3(a[b7])]; \ - t[d1] = T0dn[B32_0(a[b0])] \ - ^ T1dn[B32_1(a[b1])] \ - ^ T2dn[B32_2(a[b2])] \ - ^ T3dn[B32_3(a[b3])] \ - ^ T0up[B32_0(a[b4])] \ - ^ T1up[B32_1(a[b5])] \ - ^ T2up[B32_2(a[b6])] \ - ^ T3up[B32_3(a[b7])]; \ - } while (0) - -#define ROUND_SMALL_P(a, r) do { \ - sph_u32 t[16]; \ - a[0x0] ^= PC32up(0x00, r); \ - a[0x1] ^= PC32dn(0x00, r); \ - a[0x2] ^= PC32up(0x10, r); \ - a[0x3] ^= PC32dn(0x10, r); \ - a[0x4] ^= PC32up(0x20, r); \ - a[0x5] ^= PC32dn(0x20, r); \ - a[0x6] ^= PC32up(0x30, r); \ - a[0x7] ^= PC32dn(0x30, r); \ - a[0x8] ^= PC32up(0x40, r); \ - a[0x9] ^= PC32dn(0x40, r); \ - a[0xA] ^= PC32up(0x50, r); \ - a[0xB] ^= PC32dn(0x50, r); \ - a[0xC] ^= PC32up(0x60, r); \ - a[0xD] ^= PC32dn(0x60, r); \ - a[0xE] ^= PC32up(0x70, r); \ - a[0xF] ^= PC32dn(0x70, r); \ - RSTT(0x0, 0x1, a, 0x0, 0x2, 0x4, 0x6, 0x9, 0xB, 0xD, 0xF); \ - RSTT(0x2, 0x3, a, 0x2, 0x4, 0x6, 0x8, 0xB, 0xD, 0xF, 0x1); \ - RSTT(0x4, 0x5, a, 0x4, 0x6, 0x8, 0xA, 0xD, 0xF, 0x1, 0x3); \ - RSTT(0x6, 0x7, a, 0x6, 0x8, 0xA, 0xC, 0xF, 0x1, 0x3, 0x5); \ - RSTT(0x8, 0x9, a, 0x8, 0xA, 0xC, 0xE, 0x1, 0x3, 0x5, 0x7); \ - RSTT(0xA, 0xB, a, 0xA, 0xC, 0xE, 0x0, 0x3, 0x5, 0x7, 0x9); \ - RSTT(0xC, 0xD, a, 0xC, 0xE, 0x0, 0x2, 0x5, 0x7, 0x9, 0xB); \ - RSTT(0xE, 0xF, a, 0xE, 0x0, 0x2, 0x4, 0x7, 0x9, 0xB, 0xD); \ - memcpy(a, t, sizeof t); \ - } while (0) - -#define ROUND_SMALL_Q(a, r) do { \ - sph_u32 t[16]; \ - a[0x0] ^= QC32up(0x00, r); \ - a[0x1] ^= QC32dn(0x00, r); \ - a[0x2] ^= QC32up(0x10, r); \ - a[0x3] ^= QC32dn(0x10, r); \ - a[0x4] ^= QC32up(0x20, r); \ - a[0x5] ^= QC32dn(0x20, r); \ - a[0x6] ^= QC32up(0x30, r); \ - a[0x7] ^= QC32dn(0x30, r); \ - a[0x8] ^= QC32up(0x40, r); \ - a[0x9] ^= QC32dn(0x40, r); \ - a[0xA] ^= QC32up(0x50, r); \ - a[0xB] ^= QC32dn(0x50, r); \ - a[0xC] ^= QC32up(0x60, r); \ - a[0xD] ^= QC32dn(0x60, r); \ - a[0xE] ^= QC32up(0x70, r); \ - a[0xF] ^= QC32dn(0x70, r); \ - RSTT(0x0, 0x1, a, 0x2, 0x6, 0xA, 0xE, 0x1, 0x5, 0x9, 0xD); \ - RSTT(0x2, 0x3, a, 0x4, 0x8, 0xC, 0x0, 0x3, 0x7, 0xB, 0xF); \ - RSTT(0x4, 0x5, a, 0x6, 0xA, 0xE, 0x2, 0x5, 0x9, 0xD, 0x1); \ - RSTT(0x6, 0x7, a, 0x8, 0xC, 0x0, 0x4, 0x7, 0xB, 0xF, 0x3); \ - RSTT(0x8, 0x9, a, 0xA, 0xE, 0x2, 0x6, 0x9, 0xD, 0x1, 0x5); \ - RSTT(0xA, 0xB, a, 0xC, 0x0, 0x4, 0x8, 0xB, 0xF, 0x3, 0x7); \ - RSTT(0xC, 0xD, a, 0xE, 0x2, 0x6, 0xA, 0xD, 0x1, 0x5, 0x9); \ - RSTT(0xE, 0xF, a, 0x0, 0x4, 0x8, 0xC, 0xF, 0x3, 0x7, 0xB); \ - memcpy(a, t, sizeof t); \ - } while (0) - -#define PERM_SMALL_P(a) do { \ - int r; \ - for (r = 0; r < 10; r ++) \ - ROUND_SMALL_P(a, r); \ - } while (0) - -#define PERM_SMALL_Q(a) do { \ - int r; \ - for (r = 0; r < 10; r ++) \ - ROUND_SMALL_Q(a, r); \ - } while (0) - - -#define COMPRESS_SMALL do { \ - sph_u32 g[16], m[16]; \ - size_t u; \ - for (u = 0; u < 16; u ++) { \ - m[u] = dec32e_aligned(buf + (u << 2)); \ - g[u] = m[u] ^ H[u]; \ - } \ - PERM_SMALL_P(g); \ - PERM_SMALL_Q(m); \ - for (u = 0; u < 16; u ++) \ - H[u] ^= g[u] ^ m[u]; \ - } while (0) - -#define FINAL_SMALL do { \ - sph_u32 x[16]; \ - size_t u; \ - memcpy(x, H, sizeof x); \ - PERM_SMALL_P(x); \ - for (u = 0; u < 16; u ++) \ - H[u] ^= x[u]; \ - } while (0) - #define DECL_STATE_BIG \ sph_u32 H[32] = {0}; From 32356b812398c6a0116c70423359c7e57d889217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 9 Aug 2024 16:44:29 +0200 Subject: [PATCH 621/626] refactor(crypto): use functions instead of macros in groestl512 --- crypto/groestl.c | 208 +++++++++++++++-------------------------------- crypto/groestl.h | 6 +- 2 files changed, 67 insertions(+), 147 deletions(-) diff --git a/crypto/groestl.c b/crypto/groestl.c index 5f8ef01513..b9e179efbe 100644 --- a/crypto/groestl.c +++ b/crypto/groestl.c @@ -339,153 +339,73 @@ static const sph_u32 T1dn[] = { } while (0) -#define RBTT(d0, d1, a, b0, b1, b2, b3, b4, b5, b6, b7) do { \ - sph_u32 fu2 = T0up[B32_2(a[b2])]; \ - sph_u32 fd2 = T0dn[B32_2(a[b2])]; \ - sph_u32 fu3 = T1up[B32_3(a[b3])]; \ - sph_u32 fd3 = T1dn[B32_3(a[b3])]; \ - sph_u32 fu6 = T0up[B32_2(a[b6])]; \ - sph_u32 fd6 = T0dn[B32_2(a[b6])]; \ - sph_u32 fu7 = T1up[B32_3(a[b7])]; \ - sph_u32 fd7 = T1dn[B32_3(a[b7])]; \ - t[d0] = T0up[B32_0(a[b0])] \ - ^ T1up[B32_1(a[b1])] \ - ^ R32u(fu2, fd2) \ - ^ R32u(fu3, fd3) \ - ^ T0dn[B32_0(a[b4])] \ - ^ T1dn[B32_1(a[b5])] \ - ^ R32d(fu6, fd6) \ - ^ R32d(fu7, fd7); \ - t[d1] = T0dn[B32_0(a[b0])] \ - ^ T1dn[B32_1(a[b1])] \ - ^ R32d(fu2, fd2) \ - ^ R32d(fu3, fd3) \ - ^ T0up[B32_0(a[b4])] \ - ^ T1up[B32_1(a[b5])] \ - ^ R32u(fu6, fd6) \ - ^ R32u(fu7, fd7); \ - } while (0) +static void RBTT(size_t d0, size_t d1, sph_u32 *a, size_t b0, size_t b1, + size_t b2, size_t b3, size_t b4, size_t b5, size_t b6, + size_t b7, sph_u32 *t) { + sph_u32 fu2 = T0up[B32_2(a[b2])]; + sph_u32 fd2 = T0dn[B32_2(a[b2])]; + sph_u32 fu3 = T1up[B32_3(a[b3])]; + sph_u32 fd3 = T1dn[B32_3(a[b3])]; + sph_u32 fu6 = T0up[B32_2(a[b6])]; + sph_u32 fd6 = T0dn[B32_2(a[b6])]; + sph_u32 fu7 = T1up[B32_3(a[b7])]; + sph_u32 fd7 = T1dn[B32_3(a[b7])]; + t[d0] = T0up[B32_0(a[b0])] ^ T1up[B32_1(a[b1])] ^ R32u(fu2, fd2) ^ + R32u(fu3, fd3) ^ T0dn[B32_0(a[b4])] ^ T1dn[B32_1(a[b5])] ^ + R32d(fu6, fd6) ^ R32d(fu7, fd7); + t[d1] = T0dn[B32_0(a[b0])] ^ T1dn[B32_1(a[b1])] ^ R32d(fu2, fd2) ^ + R32d(fu3, fd3) ^ T0up[B32_0(a[b4])] ^ T1up[B32_1(a[b5])] ^ + R32u(fu6, fd6) ^ R32u(fu7, fd7); +} -#define ROUND_BIG_P(a, r) do { \ - sph_u32 t[32]; \ - size_t u; \ - a[0x00] ^= PC32up(0x00, r); \ - a[0x01] ^= PC32dn(0x00, r); \ - a[0x02] ^= PC32up(0x10, r); \ - a[0x03] ^= PC32dn(0x10, r); \ - a[0x04] ^= PC32up(0x20, r); \ - a[0x05] ^= PC32dn(0x20, r); \ - a[0x06] ^= PC32up(0x30, r); \ - a[0x07] ^= PC32dn(0x30, r); \ - a[0x08] ^= PC32up(0x40, r); \ - a[0x09] ^= PC32dn(0x40, r); \ - a[0x0A] ^= PC32up(0x50, r); \ - a[0x0B] ^= PC32dn(0x50, r); \ - a[0x0C] ^= PC32up(0x60, r); \ - a[0x0D] ^= PC32dn(0x60, r); \ - a[0x0E] ^= PC32up(0x70, r); \ - a[0x0F] ^= PC32dn(0x70, r); \ - a[0x10] ^= PC32up(0x80, r); \ - a[0x11] ^= PC32dn(0x80, r); \ - a[0x12] ^= PC32up(0x90, r); \ - a[0x13] ^= PC32dn(0x90, r); \ - a[0x14] ^= PC32up(0xA0, r); \ - a[0x15] ^= PC32dn(0xA0, r); \ - a[0x16] ^= PC32up(0xB0, r); \ - a[0x17] ^= PC32dn(0xB0, r); \ - a[0x18] ^= PC32up(0xC0, r); \ - a[0x19] ^= PC32dn(0xC0, r); \ - a[0x1A] ^= PC32up(0xD0, r); \ - a[0x1B] ^= PC32dn(0xD0, r); \ - a[0x1C] ^= PC32up(0xE0, r); \ - a[0x1D] ^= PC32dn(0xE0, r); \ - a[0x1E] ^= PC32up(0xF0, r); \ - a[0x1F] ^= PC32dn(0xF0, r); \ - for (u = 0; u < 32; u += 8) { \ - RBTT(u + 0x00, (u + 0x01) & 0x1F, a, \ - u + 0x00, (u + 0x02) & 0x1F, \ - (u + 0x04) & 0x1F, (u + 0x06) & 0x1F, \ - (u + 0x09) & 0x1F, (u + 0x0B) & 0x1F, \ - (u + 0x0D) & 0x1F, (u + 0x17) & 0x1F); \ - RBTT(u + 0x02, (u + 0x03) & 0x1F, a, \ - u + 0x02, (u + 0x04) & 0x1F, \ - (u + 0x06) & 0x1F, (u + 0x08) & 0x1F, \ - (u + 0x0B) & 0x1F, (u + 0x0D) & 0x1F, \ - (u + 0x0F) & 0x1F, (u + 0x19) & 0x1F); \ - RBTT(u + 0x04, (u + 0x05) & 0x1F, a, \ - u + 0x04, (u + 0x06) & 0x1F, \ - (u + 0x08) & 0x1F, (u + 0x0A) & 0x1F, \ - (u + 0x0D) & 0x1F, (u + 0x0F) & 0x1F, \ - (u + 0x11) & 0x1F, (u + 0x1B) & 0x1F); \ - RBTT(u + 0x06, (u + 0x07) & 0x1F, a, \ - u + 0x06, (u + 0x08) & 0x1F, \ - (u + 0x0A) & 0x1F, (u + 0x0C) & 0x1F, \ - (u + 0x0F) & 0x1F, (u + 0x11) & 0x1F, \ - (u + 0x13) & 0x1F, (u + 0x1D) & 0x1F); \ - } \ - memcpy(a, t, sizeof t); \ - } while (0) +static void ROUND_BIG_P(sph_u32 *a, int r) { + sph_u32 t[32] = {0}; + for (size_t i = 0; i < 16; i++) { + int j = i << 4; + a[2 * i] ^= PC32up(j, r); + a[2 * i + 1] ^= PC32dn(j, r); + } + for (size_t u = 0; u < 32; u += 8) { + RBTT(u + 0x00, (u + 0x01) & 0x1F, a, u + 0x00, (u + 0x02) & 0x1F, + (u + 0x04) & 0x1F, (u + 0x06) & 0x1F, (u + 0x09) & 0x1F, + (u + 0x0B) & 0x1F, (u + 0x0D) & 0x1F, (u + 0x17) & 0x1F, t); + RBTT(u + 0x02, (u + 0x03) & 0x1F, a, u + 0x02, (u + 0x04) & 0x1F, + (u + 0x06) & 0x1F, (u + 0x08) & 0x1F, (u + 0x0B) & 0x1F, + (u + 0x0D) & 0x1F, (u + 0x0F) & 0x1F, (u + 0x19) & 0x1F, t); + RBTT(u + 0x04, (u + 0x05) & 0x1F, a, u + 0x04, (u + 0x06) & 0x1F, + (u + 0x08) & 0x1F, (u + 0x0A) & 0x1F, (u + 0x0D) & 0x1F, + (u + 0x0F) & 0x1F, (u + 0x11) & 0x1F, (u + 0x1B) & 0x1F, t); + RBTT(u + 0x06, (u + 0x07) & 0x1F, a, u + 0x06, (u + 0x08) & 0x1F, + (u + 0x0A) & 0x1F, (u + 0x0C) & 0x1F, (u + 0x0F) & 0x1F, + (u + 0x11) & 0x1F, (u + 0x13) & 0x1F, (u + 0x1D) & 0x1F, t); + } + memcpy(a, t, sizeof(t)); +} -#define ROUND_BIG_Q(a, r) do { \ - sph_u32 t[32]; \ - size_t u; \ - a[0x00] ^= QC32up(0x00, r); \ - a[0x01] ^= QC32dn(0x00, r); \ - a[0x02] ^= QC32up(0x10, r); \ - a[0x03] ^= QC32dn(0x10, r); \ - a[0x04] ^= QC32up(0x20, r); \ - a[0x05] ^= QC32dn(0x20, r); \ - a[0x06] ^= QC32up(0x30, r); \ - a[0x07] ^= QC32dn(0x30, r); \ - a[0x08] ^= QC32up(0x40, r); \ - a[0x09] ^= QC32dn(0x40, r); \ - a[0x0A] ^= QC32up(0x50, r); \ - a[0x0B] ^= QC32dn(0x50, r); \ - a[0x0C] ^= QC32up(0x60, r); \ - a[0x0D] ^= QC32dn(0x60, r); \ - a[0x0E] ^= QC32up(0x70, r); \ - a[0x0F] ^= QC32dn(0x70, r); \ - a[0x10] ^= QC32up(0x80, r); \ - a[0x11] ^= QC32dn(0x80, r); \ - a[0x12] ^= QC32up(0x90, r); \ - a[0x13] ^= QC32dn(0x90, r); \ - a[0x14] ^= QC32up(0xA0, r); \ - a[0x15] ^= QC32dn(0xA0, r); \ - a[0x16] ^= QC32up(0xB0, r); \ - a[0x17] ^= QC32dn(0xB0, r); \ - a[0x18] ^= QC32up(0xC0, r); \ - a[0x19] ^= QC32dn(0xC0, r); \ - a[0x1A] ^= QC32up(0xD0, r); \ - a[0x1B] ^= QC32dn(0xD0, r); \ - a[0x1C] ^= QC32up(0xE0, r); \ - a[0x1D] ^= QC32dn(0xE0, r); \ - a[0x1E] ^= QC32up(0xF0, r); \ - a[0x1F] ^= QC32dn(0xF0, r); \ - for (u = 0; u < 32; u += 8) { \ - RBTT(u + 0x00, (u + 0x01) & 0x1F, a, \ - (u + 0x02) & 0x1F, (u + 0x06) & 0x1F, \ - (u + 0x0A) & 0x1F, (u + 0x16) & 0x1F, \ - (u + 0x01) & 0x1F, (u + 0x05) & 0x1F, \ - (u + 0x09) & 0x1F, (u + 0x0D) & 0x1F); \ - RBTT(u + 0x02, (u + 0x03) & 0x1F, a, \ - (u + 0x04) & 0x1F, (u + 0x08) & 0x1F, \ - (u + 0x0C) & 0x1F, (u + 0x18) & 0x1F, \ - (u + 0x03) & 0x1F, (u + 0x07) & 0x1F, \ - (u + 0x0B) & 0x1F, (u + 0x0F) & 0x1F); \ - RBTT(u + 0x04, (u + 0x05) & 0x1F, a, \ - (u + 0x06) & 0x1F, (u + 0x0A) & 0x1F, \ - (u + 0x0E) & 0x1F, (u + 0x1A) & 0x1F, \ - (u + 0x05) & 0x1F, (u + 0x09) & 0x1F, \ - (u + 0x0D) & 0x1F, (u + 0x11) & 0x1F); \ - RBTT(u + 0x06, (u + 0x07) & 0x1F, a, \ - (u + 0x08) & 0x1F, (u + 0x0C) & 0x1F, \ - (u + 0x10) & 0x1F, (u + 0x1C) & 0x1F, \ - (u + 0x07) & 0x1F, (u + 0x0B) & 0x1F, \ - (u + 0x0F) & 0x1F, (u + 0x13) & 0x1F); \ - } \ - memcpy(a, t, sizeof t); \ - } while (0) +static void ROUND_BIG_Q(sph_u32 *a, int r) { + sph_u32 t[32] = {0}; + for (size_t i = 0; i < 16; i++) { + int j = i << 4; + a[2 * i] ^= QC32up(j, r); + a[2 * i + 1] ^= QC32dn(j, r); + } + for (size_t u = 0; u < 32; u += 8) { + RBTT(u + 0x00, (u + 0x01) & 0x1F, a, (u + 0x02) & 0x1F, (u + 0x06) & 0x1F, + (u + 0x0A) & 0x1F, (u + 0x16) & 0x1F, (u + 0x01) & 0x1F, + (u + 0x05) & 0x1F, (u + 0x09) & 0x1F, (u + 0x0D) & 0x1F, t); + RBTT(u + 0x02, (u + 0x03) & 0x1F, a, (u + 0x04) & 0x1F, (u + 0x08) & 0x1F, + (u + 0x0C) & 0x1F, (u + 0x18) & 0x1F, (u + 0x03) & 0x1F, + (u + 0x07) & 0x1F, (u + 0x0B) & 0x1F, (u + 0x0F) & 0x1F, t); + RBTT(u + 0x04, (u + 0x05) & 0x1F, a, (u + 0x06) & 0x1F, (u + 0x0A) & 0x1F, + (u + 0x0E) & 0x1F, (u + 0x1A) & 0x1F, (u + 0x05) & 0x1F, + (u + 0x09) & 0x1F, (u + 0x0D) & 0x1F, (u + 0x11) & 0x1F, t); + RBTT(u + 0x06, (u + 0x07) & 0x1F, a, (u + 0x08) & 0x1F, (u + 0x0C) & 0x1F, + (u + 0x10) & 0x1F, (u + 0x1C) & 0x1F, (u + 0x07) & 0x1F, + (u + 0x0B) & 0x1F, (u + 0x0F) & 0x1F, (u + 0x13) & 0x1F, t); + } + memcpy(a, t, sizeof(t)); +} #define PERM_BIG_P(a) do { \ diff --git a/crypto/groestl.h b/crypto/groestl.h index 7dd89d28a8..06de5724e8 100644 --- a/crypto/groestl.h +++ b/crypto/groestl.h @@ -2,7 +2,7 @@ * Trezor adaptation by Yura Pakhuchiy <pakhuchiy@gmail.com>. */ /** * Groestl interface. This code implements Groestl with the recommended - * parameters for SHA-3, with outputs of 224, 256, 384 and 512 bits. + * parameters for SHA-3, with output of 512 bits. * * ==========================(LICENSE BEGIN)============================ * @@ -29,7 +29,7 @@ * * ===========================(LICENSE END)============================= * - * @file sph_groestl.h + * @file groestl.h * @author Thomas Pornin <thomas.pornin@cryptolog.com> */ @@ -39,7 +39,7 @@ #include <stddef.h> /** - * This structure is a context for Groestl-384 and Groestl-512 computations: + * This structure is a context for Groestl-512 computation: * it contains the intermediate values and some data from the last * entered block. Once a Groestl computation has been performed, the * context can be reused for another computation. From c5984af1b5de7a93852a6657b42649e64c38e635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 16 Aug 2024 14:33:17 +0200 Subject: [PATCH 622/626] refactor(crypto): use functions instead of macros in blake2b and blake2s --- crypto/blake2b.c | 81 +++++++++++++++++++++++++++++------------------- crypto/blake2s.c | 76 +++++++++++++++++++++++++++------------------ 2 files changed, 95 insertions(+), 62 deletions(-) diff --git a/crypto/blake2b.c b/crypto/blake2b.c index f0832c359d..62e9bcb011 100644 --- a/crypto/blake2b.c +++ b/crypto/blake2b.c @@ -18,6 +18,7 @@ #include "blake2b.h" #include "blake2_common.h" #include "memzero.h" +#include "options.h" typedef struct blake2b_param__ { @@ -186,28 +187,37 @@ int blake2b_InitKey( blake2b_state *S, size_t outlen, const void *key, size_t ke return 0; } -#define G(r,i,a,b,c,d) \ - do { \ - a = a + b + m[blake2b_sigma[r][2*i+0]]; \ - d = rotr64(d ^ a, 32); \ - c = c + d; \ - b = rotr64(b ^ c, 24); \ - a = a + b + m[blake2b_sigma[r][2*i+1]]; \ - d = rotr64(d ^ a, 16); \ - c = c + d; \ - b = rotr64(b ^ c, 63); \ +#define G(m,r,i,a,b,c,d) \ + do { \ + *(a) = *(a) + *(b) + m[blake2b_sigma[r][2 * i + 0]]; \ + *(d) = rotr64(*(d) ^ *(a), 32); \ + *(c) = *(c) + *(d); \ + *(b) = rotr64(*(b) ^ *(c), 24); \ + *(a) = *(a) + *(b) + m[blake2b_sigma[r][2 * i + 1]]; \ + *(d) = rotr64(*(d) ^ *(a), 16); \ + *(c) = *(c) + *(d); \ + *(b) = rotr64(*(b) ^ *(c), 63); \ } while(0) -#define ROUND(r) \ - do { \ - G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \ - G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \ - G(r,2,v[ 2],v[ 6],v[10],v[14]); \ - G(r,3,v[ 3],v[ 7],v[11],v[15]); \ - G(r,4,v[ 0],v[ 5],v[10],v[15]); \ - G(r,5,v[ 1],v[ 6],v[11],v[12]); \ - G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \ - G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \ +#if OPTIMIZE_SIZE_BLAKE2B +static void g(uint64_t *m, int r, int i, uint64_t *a, uint64_t *b, uint64_t *c, + uint64_t *d) { + G(m,r,i,a,b,c,d); +} +#else +#define g(m,r,i,a,b,c,d) G(m,r,i,a,b,c,d) +#endif + +#define ROUND(m,v,r) \ + do { \ + g(m,r,0,v + 0,v + 4,v + 8,v + 12); \ + g(m,r,1,v + 1,v + 5,v + 9,v + 13); \ + g(m,r,2,v + 2,v + 6,v + 10,v + 14); \ + g(m,r,3,v + 3,v + 7,v + 11,v + 15); \ + g(m,r,4,v + 0,v + 5,v + 10,v + 15); \ + g(m,r,5,v + 1,v + 6,v + 11,v + 12); \ + g(m,r,6,v + 2,v + 7,v + 8,v + 13); \ + g(m,r,7,v + 3,v + 4,v + 9,v + 14); \ } while(0) static void blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOCKBYTES] ) @@ -233,18 +243,25 @@ static void blake2b_compress( blake2b_state *S, const uint8_t block[BLAKE2B_BLOC v[14] = blake2b_IV[6] ^ S->f[0]; v[15] = blake2b_IV[7] ^ S->f[1]; - ROUND( 0 ); - ROUND( 1 ); - ROUND( 2 ); - ROUND( 3 ); - ROUND( 4 ); - ROUND( 5 ); - ROUND( 6 ); - ROUND( 7 ); - ROUND( 8 ); - ROUND( 9 ); - ROUND( 10 ); - ROUND( 11 ); + +#if OPTIMIZE_SIZE_BLAKE2B + for (int r = 0; r < 12; r++) { + ROUND(m, v, r); + } +#else + ROUND( m, v, 0 ); + ROUND( m, v, 1 ); + ROUND( m, v, 2 ); + ROUND( m, v, 3 ); + ROUND( m, v, 4 ); + ROUND( m, v, 5 ); + ROUND( m, v, 6 ); + ROUND( m, v, 7 ); + ROUND( m, v, 8 ); + ROUND( m, v, 9 ); + ROUND( m, v, 10 ); + ROUND( m, v, 11 ); +#endif for( i = 0; i < 8; ++i ) { S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; diff --git a/crypto/blake2s.c b/crypto/blake2s.c index 2c060a6372..a8e7cd2f67 100644 --- a/crypto/blake2s.c +++ b/crypto/blake2s.c @@ -18,6 +18,7 @@ #include "blake2s.h" #include "blake2_common.h" #include "memzero.h" +#include "options.h" typedef struct blake2s_param__ { @@ -182,28 +183,37 @@ int blake2s_InitKey( blake2s_state *S, size_t outlen, const void *key, size_t ke return 0; } -#define G(r,i,a,b,c,d) \ - do { \ - a = a + b + m[blake2s_sigma[r][2*i+0]]; \ - d = rotr32(d ^ a, 16); \ - c = c + d; \ - b = rotr32(b ^ c, 12); \ - a = a + b + m[blake2s_sigma[r][2*i+1]]; \ - d = rotr32(d ^ a, 8); \ - c = c + d; \ - b = rotr32(b ^ c, 7); \ +#define G(m,r,i,a,b,c,d) \ + do { \ + *(a) = *(a) + *(b) + m[blake2s_sigma[r][2*i+0]]; \ + *(d) = rotr32(*(d) ^ *(a), 16); \ + *(c) = *(c) + *(d); \ + *(b) = rotr32(*(b) ^ *(c), 12); \ + *(a) = *(a) + *(b) + m[blake2s_sigma[r][2*i+1]]; \ + *(d) = rotr32(*(d) ^ *(a), 8); \ + *(c) = *(c) + *(d); \ + *(b) = rotr32(*(b) ^ *(c), 7); \ } while(0) -#define ROUND(r) \ - do { \ - G(r,0,v[ 0],v[ 4],v[ 8],v[12]); \ - G(r,1,v[ 1],v[ 5],v[ 9],v[13]); \ - G(r,2,v[ 2],v[ 6],v[10],v[14]); \ - G(r,3,v[ 3],v[ 7],v[11],v[15]); \ - G(r,4,v[ 0],v[ 5],v[10],v[15]); \ - G(r,5,v[ 1],v[ 6],v[11],v[12]); \ - G(r,6,v[ 2],v[ 7],v[ 8],v[13]); \ - G(r,7,v[ 3],v[ 4],v[ 9],v[14]); \ +#if OPTIMIZE_SIZE_BLAKE2S +static void g(uint32_t *m, int r, int i, uint32_t *a, uint32_t *b, uint32_t *c, + uint32_t *d) { + G(m,r,i,a,b,c,d); +} +#else +#define g(m,r,i,a,b,c,d) G(m,r,i,a,b,c,d) +#endif + +#define ROUND(m,v,r) \ + do { \ + g(m,r,0,v + 0,v + 4,v + 8,v + 12); \ + g(m,r,1,v + 1,v + 5,v + 9,v + 13); \ + g(m,r,2,v + 2,v + 6,v + 10,v + 14); \ + g(m,r,3,v + 3,v + 7,v + 11,v + 15); \ + g(m,r,4,v + 0,v + 5,v + 10,v + 15); \ + g(m,r,5,v + 1,v + 6,v + 11,v + 12); \ + g(m,r,6,v + 2,v + 7,v + 8,v + 13); \ + g(m,r,7,v + 3,v + 4,v + 9,v + 14); \ } while(0) static void blake2s_compress( blake2s_state *S, const uint8_t in[BLAKE2S_BLOCKBYTES] ) @@ -229,16 +239,22 @@ static void blake2s_compress( blake2s_state *S, const uint8_t in[BLAKE2S_BLOCKBY v[14] = S->f[0] ^ blake2s_IV[6]; v[15] = S->f[1] ^ blake2s_IV[7]; - ROUND( 0 ); - ROUND( 1 ); - ROUND( 2 ); - ROUND( 3 ); - ROUND( 4 ); - ROUND( 5 ); - ROUND( 6 ); - ROUND( 7 ); - ROUND( 8 ); - ROUND( 9 ); +#if OPTIMIZE_SIZE_BLAKE2S + for (int r = 0; r < 10; r++) { + ROUND(m, v, r); + } +#else + ROUND( m, v, 0 ); + ROUND( m, v, 1 ); + ROUND( m, v, 2 ); + ROUND( m, v, 3 ); + ROUND( m, v, 4 ); + ROUND( m, v, 5 ); + ROUND( m, v, 6 ); + ROUND( m, v, 7 ); + ROUND( m, v, 8 ); + ROUND( m, v, 9 ); +#endif for( i = 0; i < 8; ++i ) { S->h[i] = S->h[i] ^ v[i] ^ v[i + 8]; From 732e21443d55700fa44fd336f08c53c06fc874a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Fri, 16 Aug 2024 13:30:15 +0200 Subject: [PATCH 623/626] refactor(crypto): remove redundant include --- crypto/tests/test_check.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/crypto/tests/test_check.c b/crypto/tests/test_check.c index 613c100b51..3dee168e6b 100644 --- a/crypto/tests/test_check.c +++ b/crypto/tests/test_check.c @@ -6124,8 +6124,6 @@ START_TEST(test_blake2s) { } END_TEST -#include <stdio.h> - START_TEST(test_chacha_drbg) { char entropy[] = "06032cd5eed33f39265f49ecb142c511da9aff2af71203bffaf34a9ca5bd9c0d"; From 3167684d08d16cf296ddad7cbffe5c6766b145d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Sun, 1 Sep 2024 18:47:45 +0200 Subject: [PATCH 624/626] refactor(crypto): download ripemd160 implementation --- crypto/ripemd160.c | 596 +++++++++++++++++++++++---------------------- crypto/ripemd160.h | 33 +-- 2 files changed, 316 insertions(+), 313 deletions(-) diff --git a/crypto/ripemd160.c b/crypto/ripemd160.c index 5aef8b8d34..6edc87c42c 100644 --- a/crypto/ripemd160.c +++ b/crypto/ripemd160.c @@ -1,343 +1,345 @@ +#define _RIPEMD160_C_ 1 + +#include "ripemd160.h" +#include <assert.h> + +#define NDEBUG + +// adapted by Pieter Wuille in 2012; all changes are in the public domain + /* - * RIPE MD-160 implementation * - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 + * RIPEMD160.c : RIPEMD-160 implementation + * + * Written in 2008 by Dwayne C. Litzenberger <dlitz@dlitz.net> + * + * =================================================================== + * The contents of this file are dedicated to the public domain. To + * the extent that dedication to the public domain is not available, + * everyone is granted a worldwide, perpetual, royalty-free, + * non-exclusive license to exercise all rights associated with the + * contents of this file for any purpose whatsoever. + * No rights are reserved. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * =================================================================== + * + * Country of origin: Canada * - * 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 + * This implementation (written in C) is based on an implementation the author + * wrote in Python. * - * http://www.apache.org/licenses/LICENSE-2.0 + * This implementation was written with reference to the RIPEMD-160 + * specification, which is available at: + * http://homes.esat.kuleuven.be/~cosicart/pdf/AB-9601/ * - * 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. + * It is also documented in the _Handbook of Applied Cryptography_, as + * Algorithm 9.55. It's on page 30 of the following PDF file: + * http://www.cacr.math.uwaterloo.ca/hac/about/chap9.pdf * - * This file is part of mbed TLS (https://tls.mbed.org) + * The RIPEMD-160 specification doesn't really tell us how to do padding, but + * since RIPEMD-160 is inspired by MD4, you can use the padding algorithm from + * RFC 1320. + * + * According to http://www.users.zetnet.co.uk/hopwood/crypto/scan/md.html: + * "RIPEMD-160 is big-bit-endian, little-byte-endian, and left-justified." */ -/* - * The RIPEMD-160 algorithm was designed by RIPE in 1996 - * http://homes.esat.kuleuven.be/~bosselae/ripemd160.html - * http://ehash.iaik.tugraz.at/wiki/RIPEMD-160 - */ +#include <stdint.h> #include <string.h> -#include "ripemd160.h" -#include "memzero.h" +#define RIPEMD160_DIGEST_SIZE 20 +#define BLOCK_SIZE 64 -/* - * 32-bit integer manipulation macros (little endian) +/* cyclic left-shift the 32-bit word n left by s bits */ +#define ROL(s, n) (((n) << (s)) | ((n) >> (32-(s)))) + +/* Initial values for the chaining variables. + * This is just 0123456789ABCDEFFEDCBA9876543210F0E1D2C3 in little-endian. */ +static const uint32_t initial_h[5] = { 0x67452301u, 0xEFCDAB89u, 0x98BADCFEu, 0x10325476u, 0xC3D2E1F0u }; + +/* Ordering of message words. Based on the permutations rho(i) and pi(i), defined as follows: + * + * rho(i) := { 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8 }[i] 0 <= i <= 15 + * + * pi(i) := 9*i + 5 (mod 16) + * + * Line | Round 1 | Round 2 | Round 3 | Round 4 | Round 5 + * -------+-----------+-----------+-----------+-----------+----------- + * left | id | rho | rho^2 | rho^3 | rho^4 + * right | pi | rho pi | rho^2 pi | rho^3 pi | rho^4 pi */ -#ifndef GET_UINT32_LE -#define GET_UINT32_LE(n,b,i) \ -{ \ - (n) = ( (uint32_t) (b)[(i) ] ) \ - | ( (uint32_t) (b)[(i) + 1] << 8 ) \ - | ( (uint32_t) (b)[(i) + 2] << 16 ) \ - | ( (uint32_t) (b)[(i) + 3] << 24 ); \ -} -#endif -#ifndef PUT_UINT32_LE -#define PUT_UINT32_LE(n,b,i) \ -{ \ - (b)[(i) ] = (uint8_t) ( ( (n) ) & 0xFF ); \ - (b)[(i) + 1] = (uint8_t) ( ( (n) >> 8 ) & 0xFF ); \ - (b)[(i) + 2] = (uint8_t) ( ( (n) >> 16 ) & 0xFF ); \ - (b)[(i) + 3] = (uint8_t) ( ( (n) >> 24 ) & 0xFF ); \ -} -#endif +/* Left line */ +static const uint8_t RL[5][16] = { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, /* Round 1: id */ + { 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8 }, /* Round 2: rho */ + { 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12 }, /* Round 3: rho^2 */ + { 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2 }, /* Round 4: rho^3 */ + { 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 } /* Round 5: rho^4 */ +}; + +/* Right line */ +static const uint8_t RR[5][16] = { + { 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12 }, /* Round 1: pi */ + { 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2 }, /* Round 2: rho pi */ + { 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13 }, /* Round 3: rho^2 pi */ + { 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14 }, /* Round 4: rho^3 pi */ + { 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 } /* Round 5: rho^4 pi */ +}; /* - * RIPEMD-160 context setup + * Shifts - Since we don't actually re-order the message words according to + * the permutations above (we could, but it would be slower), these tables + * come with the permutations pre-applied. */ -void ripemd160_Init(RIPEMD160_CTX *ctx) + +/* Shifts, left line */ +static const uint8_t SL[5][16] = { + { 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8 }, /* Round 1 */ + { 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12 }, /* Round 2 */ + { 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5 }, /* Round 3 */ + { 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12 }, /* Round 4 */ + { 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 } /* Round 5 */ +}; + +/* Shifts, right line */ +static const uint8_t SR[5][16] = { + { 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6 }, /* Round 1 */ + { 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11 }, /* Round 2 */ + { 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5 }, /* Round 3 */ + { 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8 }, /* Round 4 */ + { 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 } /* Round 5 */ +}; + +/* Boolean functions */ + +#define F1(x, y, z) ((x) ^ (y) ^ (z)) +#define F2(x, y, z) (((x) & (y)) | (~(x) & (z))) +#define F3(x, y, z) (((x) | ~(y)) ^ (z)) +#define F4(x, y, z) (((x) & (z)) | ((y) & ~(z))) +#define F5(x, y, z) ((x) ^ ((y) | ~(z))) + +/* Round constants, left line */ +static const uint32_t KL[5] = { + 0x00000000u, /* Round 1: 0 */ + 0x5A827999u, /* Round 2: floor(2**30 * sqrt(2)) */ + 0x6ED9EBA1u, /* Round 3: floor(2**30 * sqrt(3)) */ + 0x8F1BBCDCu, /* Round 4: floor(2**30 * sqrt(5)) */ + 0xA953FD4Eu /* Round 5: floor(2**30 * sqrt(7)) */ +}; + +/* Round constants, right line */ +static const uint32_t KR[5] = { + 0x50A28BE6u, /* Round 1: floor(2**30 * cubert(2)) */ + 0x5C4DD124u, /* Round 2: floor(2**30 * cubert(3)) */ + 0x6D703EF3u, /* Round 3: floor(2**30 * cubert(5)) */ + 0x7A6D76E9u, /* Round 4: floor(2**30 * cubert(7)) */ + 0x00000000u /* Round 5: 0 */ +}; + +void ripemd160_init(ripemd160_state *self) { - memzero(ctx, sizeof(RIPEMD160_CTX)); - ctx->total[0] = 0; - ctx->total[1] = 0; - ctx->state[0] = 0x67452301; - ctx->state[1] = 0xEFCDAB89; - ctx->state[2] = 0x98BADCFE; - ctx->state[3] = 0x10325476; - ctx->state[4] = 0xC3D2E1F0; + + memcpy(self->h, initial_h, RIPEMD160_DIGEST_SIZE); + memset(&self->buf, 0, sizeof(self->buf)); + self->length = 0; + self->bufpos = 0; } -#if !defined(MBEDTLS_RIPEMD160_PROCESS_ALT) -/* - * Process one block - */ -void ripemd160_process( RIPEMD160_CTX *ctx, const uint8_t data[RIPEMD160_BLOCK_LENGTH] ) +static inline void byteswap32(uint32_t *v) { - uint32_t A = 0, B = 0, C = 0, D = 0, E = 0, Ap = 0, Bp = 0, Cp = 0, Dp = 0, Ep = 0, X[16] = {0}; - - GET_UINT32_LE( X[ 0], data, 0 ); - GET_UINT32_LE( X[ 1], data, 4 ); - GET_UINT32_LE( X[ 2], data, 8 ); - GET_UINT32_LE( X[ 3], data, 12 ); - GET_UINT32_LE( X[ 4], data, 16 ); - GET_UINT32_LE( X[ 5], data, 20 ); - GET_UINT32_LE( X[ 6], data, 24 ); - GET_UINT32_LE( X[ 7], data, 28 ); - GET_UINT32_LE( X[ 8], data, 32 ); - GET_UINT32_LE( X[ 9], data, 36 ); - GET_UINT32_LE( X[10], data, 40 ); - GET_UINT32_LE( X[11], data, 44 ); - GET_UINT32_LE( X[12], data, 48 ); - GET_UINT32_LE( X[13], data, 52 ); - GET_UINT32_LE( X[14], data, 56 ); - GET_UINT32_LE( X[15], data, 60 ); - - A = Ap = ctx->state[0]; - B = Bp = ctx->state[1]; - C = Cp = ctx->state[2]; - D = Dp = ctx->state[3]; - E = Ep = ctx->state[4]; - -#define F1( x, y, z ) ( x ^ y ^ z ) -#define F2( x, y, z ) ( ( x & y ) | ( ~x & z ) ) -#define F3( x, y, z ) ( ( x | ~y ) ^ z ) -#define F4( x, y, z ) ( ( x & z ) | ( y & ~z ) ) -#define F5( x, y, z ) ( x ^ ( y | ~z ) ) - -#define S( x, n ) ( ( x << n ) | ( x >> (32 - n) ) ) - -#define P( a, b, c, d, e, r, s, f, k ) \ - a += f( b, c, d ) + X[r] + k; \ - a = S( a, s ) + e; \ - c = S( c, 10 ); - -#define P2( a, b, c, d, e, r, s, rp, sp ) \ - P( a, b, c, d, e, r, s, F, K ); \ - P( a ## p, b ## p, c ## p, d ## p, e ## p, rp, sp, Fp, Kp ); - -#define F F1 -#define K 0x00000000 -#define Fp F5 -#define Kp 0x50A28BE6 - P2( A, B, C, D, E, 0, 11, 5, 8 ); - P2( E, A, B, C, D, 1, 14, 14, 9 ); - P2( D, E, A, B, C, 2, 15, 7, 9 ); - P2( C, D, E, A, B, 3, 12, 0, 11 ); - P2( B, C, D, E, A, 4, 5, 9, 13 ); - P2( A, B, C, D, E, 5, 8, 2, 15 ); - P2( E, A, B, C, D, 6, 7, 11, 15 ); - P2( D, E, A, B, C, 7, 9, 4, 5 ); - P2( C, D, E, A, B, 8, 11, 13, 7 ); - P2( B, C, D, E, A, 9, 13, 6, 7 ); - P2( A, B, C, D, E, 10, 14, 15, 8 ); - P2( E, A, B, C, D, 11, 15, 8, 11 ); - P2( D, E, A, B, C, 12, 6, 1, 14 ); - P2( C, D, E, A, B, 13, 7, 10, 14 ); - P2( B, C, D, E, A, 14, 9, 3, 12 ); - P2( A, B, C, D, E, 15, 8, 12, 6 ); -#undef F -#undef K -#undef Fp -#undef Kp - -#define F F2 -#define K 0x5A827999 -#define Fp F4 -#define Kp 0x5C4DD124 - P2( E, A, B, C, D, 7, 7, 6, 9 ); - P2( D, E, A, B, C, 4, 6, 11, 13 ); - P2( C, D, E, A, B, 13, 8, 3, 15 ); - P2( B, C, D, E, A, 1, 13, 7, 7 ); - P2( A, B, C, D, E, 10, 11, 0, 12 ); - P2( E, A, B, C, D, 6, 9, 13, 8 ); - P2( D, E, A, B, C, 15, 7, 5, 9 ); - P2( C, D, E, A, B, 3, 15, 10, 11 ); - P2( B, C, D, E, A, 12, 7, 14, 7 ); - P2( A, B, C, D, E, 0, 12, 15, 7 ); - P2( E, A, B, C, D, 9, 15, 8, 12 ); - P2( D, E, A, B, C, 5, 9, 12, 7 ); - P2( C, D, E, A, B, 2, 11, 4, 6 ); - P2( B, C, D, E, A, 14, 7, 9, 15 ); - P2( A, B, C, D, E, 11, 13, 1, 13 ); - P2( E, A, B, C, D, 8, 12, 2, 11 ); -#undef F -#undef K -#undef Fp -#undef Kp - -#define F F3 -#define K 0x6ED9EBA1 -#define Fp F3 -#define Kp 0x6D703EF3 - P2( D, E, A, B, C, 3, 11, 15, 9 ); - P2( C, D, E, A, B, 10, 13, 5, 7 ); - P2( B, C, D, E, A, 14, 6, 1, 15 ); - P2( A, B, C, D, E, 4, 7, 3, 11 ); - P2( E, A, B, C, D, 9, 14, 7, 8 ); - P2( D, E, A, B, C, 15, 9, 14, 6 ); - P2( C, D, E, A, B, 8, 13, 6, 6 ); - P2( B, C, D, E, A, 1, 15, 9, 14 ); - P2( A, B, C, D, E, 2, 14, 11, 12 ); - P2( E, A, B, C, D, 7, 8, 8, 13 ); - P2( D, E, A, B, C, 0, 13, 12, 5 ); - P2( C, D, E, A, B, 6, 6, 2, 14 ); - P2( B, C, D, E, A, 13, 5, 10, 13 ); - P2( A, B, C, D, E, 11, 12, 0, 13 ); - P2( E, A, B, C, D, 5, 7, 4, 7 ); - P2( D, E, A, B, C, 12, 5, 13, 5 ); -#undef F -#undef K -#undef Fp -#undef Kp - -#define F F4 -#define K 0x8F1BBCDC -#define Fp F2 -#define Kp 0x7A6D76E9 - P2( C, D, E, A, B, 1, 11, 8, 15 ); - P2( B, C, D, E, A, 9, 12, 6, 5 ); - P2( A, B, C, D, E, 11, 14, 4, 8 ); - P2( E, A, B, C, D, 10, 15, 1, 11 ); - P2( D, E, A, B, C, 0, 14, 3, 14 ); - P2( C, D, E, A, B, 8, 15, 11, 14 ); - P2( B, C, D, E, A, 12, 9, 15, 6 ); - P2( A, B, C, D, E, 4, 8, 0, 14 ); - P2( E, A, B, C, D, 13, 9, 5, 6 ); - P2( D, E, A, B, C, 3, 14, 12, 9 ); - P2( C, D, E, A, B, 7, 5, 2, 12 ); - P2( B, C, D, E, A, 15, 6, 13, 9 ); - P2( A, B, C, D, E, 14, 8, 9, 12 ); - P2( E, A, B, C, D, 5, 6, 7, 5 ); - P2( D, E, A, B, C, 6, 5, 10, 15 ); - P2( C, D, E, A, B, 2, 12, 14, 8 ); -#undef F -#undef K -#undef Fp -#undef Kp - -#define F F5 -#define K 0xA953FD4E -#define Fp F1 -#define Kp 0x00000000 - P2( B, C, D, E, A, 4, 9, 12, 8 ); - P2( A, B, C, D, E, 0, 15, 15, 5 ); - P2( E, A, B, C, D, 5, 5, 10, 12 ); - P2( D, E, A, B, C, 9, 11, 4, 9 ); - P2( C, D, E, A, B, 7, 6, 1, 12 ); - P2( B, C, D, E, A, 12, 8, 5, 5 ); - P2( A, B, C, D, E, 2, 13, 8, 14 ); - P2( E, A, B, C, D, 10, 12, 7, 6 ); - P2( D, E, A, B, C, 14, 5, 6, 8 ); - P2( C, D, E, A, B, 1, 12, 2, 13 ); - P2( B, C, D, E, A, 3, 13, 13, 6 ); - P2( A, B, C, D, E, 8, 14, 14, 5 ); - P2( E, A, B, C, D, 11, 11, 0, 15 ); - P2( D, E, A, B, C, 6, 8, 3, 13 ); - P2( C, D, E, A, B, 15, 5, 9, 11 ); - P2( B, C, D, E, A, 13, 6, 11, 11 ); -#undef F -#undef K -#undef Fp -#undef Kp - - C = ctx->state[1] + C + Dp; - ctx->state[1] = ctx->state[2] + D + Ep; - ctx->state[2] = ctx->state[3] + E + Ap; - ctx->state[3] = ctx->state[4] + A + Bp; - ctx->state[4] = ctx->state[0] + B + Cp; - ctx->state[0] = C; + union { uint32_t w; uint8_t b[4]; } x, y; + + x.w = *v; + y.b[0] = x.b[3]; + y.b[1] = x.b[2]; + y.b[2] = x.b[1]; + y.b[3] = x.b[0]; + *v = y.w; + + /* Wipe temporary variables */ + x.w = y.w = 0; } -#endif /* !MBEDTLS_RIPEMD160_PROCESS_ALT */ -/* - * RIPEMD-160 process buffer - */ -void ripemd160_Update( RIPEMD160_CTX *ctx, const uint8_t *input, uint32_t ilen ) +static inline void byteswap_digest(uint32_t *p) { - uint32_t fill = 0; - uint32_t left = 0; + unsigned int i; - if( ilen == 0 ) - return; + for (i = 0; i < 4; i++) { + byteswap32(p++); + byteswap32(p++); + byteswap32(p++); + byteswap32(p++); + } +} - left = ctx->total[0] & 0x3F; - fill = RIPEMD160_BLOCK_LENGTH - left; +/* The RIPEMD160 compression function. Operates on self->buf */ +static void ripemd160_compress(ripemd160_state *self) +{ + uint8_t w, round; + uint32_t T; + uint32_t AL, BL, CL, DL, EL; /* left line */ + uint32_t AR, BR, CR, DR, ER; /* right line */ - ctx->total[0] += (uint32_t) ilen; - ctx->total[0] &= 0xFFFFFFFF; + /* Sanity check */ + assert(self->bufpos == 64); - if( ctx->total[0] < (uint32_t) ilen ) - ctx->total[1]++; + /* Byte-swap the buffer if we're on a big-endian machine */ +#ifdef PCT_BIG_ENDIAN + byteswap_digest(self->buf.w); +#endif - if( left && ilen >= fill ) - { - memcpy( (void *) (ctx->buffer + left), input, fill ); - ripemd160_process( ctx, ctx->buffer ); - input += fill; - ilen -= fill; - left = 0; + /* Load the left and right lines with the initial state */ + AL = AR = self->h[0]; + BL = BR = self->h[1]; + CL = CR = self->h[2]; + DL = DR = self->h[3]; + EL = ER = self->h[4]; + + /* Round 1 */ + round = 0; + for (w = 0; w < 16; w++) { /* left line */ + T = ROL(SL[round][w], AL + F1(BL, CL, DL) + self->buf.w[RL[round][w]] + KL[round]) + EL; + AL = EL; EL = DL; DL = ROL(10, CL); CL = BL; BL = T; + } + for (w = 0; w < 16; w++) { /* right line */ + T = ROL(SR[round][w], AR + F5(BR, CR, DR) + self->buf.w[RR[round][w]] + KR[round]) + ER; + AR = ER; ER = DR; DR = ROL(10, CR); CR = BR; BR = T; } - while( ilen >= RIPEMD160_BLOCK_LENGTH ) - { - ripemd160_process( ctx, input ); - input += RIPEMD160_BLOCK_LENGTH; - ilen -= RIPEMD160_BLOCK_LENGTH; + /* Round 2 */ + round++; + for (w = 0; w < 16; w++) { /* left line */ + T = ROL(SL[round][w], AL + F2(BL, CL, DL) + self->buf.w[RL[round][w]] + KL[round]) + EL; + AL = EL; EL = DL; DL = ROL(10, CL); CL = BL; BL = T; + } + for (w = 0; w < 16; w++) { /* right line */ + T = ROL(SR[round][w], AR + F4(BR, CR, DR) + self->buf.w[RR[round][w]] + KR[round]) + ER; + AR = ER; ER = DR; DR = ROL(10, CR); CR = BR; BR = T; } - if( ilen > 0 ) - { - memcpy( (void *) (ctx->buffer + left), input, ilen ); + /* Round 3 */ + round++; + for (w = 0; w < 16; w++) { /* left line */ + T = ROL(SL[round][w], AL + F3(BL, CL, DL) + self->buf.w[RL[round][w]] + KL[round]) + EL; + AL = EL; EL = DL; DL = ROL(10, CL); CL = BL; BL = T; + } + for (w = 0; w < 16; w++) { /* right line */ + T = ROL(SR[round][w], AR + F3(BR, CR, DR) + self->buf.w[RR[round][w]] + KR[round]) + ER; + AR = ER; ER = DR; DR = ROL(10, CR); CR = BR; BR = T; } -} -static const uint8_t ripemd160_padding[RIPEMD160_BLOCK_LENGTH] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; + /* Round 4 */ + round++; + for (w = 0; w < 16; w++) { /* left line */ + T = ROL(SL[round][w], AL + F4(BL, CL, DL) + self->buf.w[RL[round][w]] + KL[round]) + EL; + AL = EL; EL = DL; DL = ROL(10, CL); CL = BL; BL = T; + } + for (w = 0; w < 16; w++) { /* right line */ + T = ROL(SR[round][w], AR + F2(BR, CR, DR) + self->buf.w[RR[round][w]] + KR[round]) + ER; + AR = ER; ER = DR; DR = ROL(10, CR); CR = BR; BR = T; + } -/* - * RIPEMD-160 final digest - */ -void ripemd160_Final( RIPEMD160_CTX *ctx, uint8_t output[RIPEMD160_DIGEST_LENGTH] ) -{ - uint32_t last = 0; uint32_t padn = 0; - uint32_t high = 0; uint32_t low = 0; - uint8_t msglen[8] = {0}; + /* Round 5 */ + round++; + for (w = 0; w < 16; w++) { /* left line */ + T = ROL(SL[round][w], AL + F5(BL, CL, DL) + self->buf.w[RL[round][w]] + KL[round]) + EL; + AL = EL; EL = DL; DL = ROL(10, CL); CL = BL; BL = T; + } + for (w = 0; w < 16; w++) { /* right line */ + T = ROL(SR[round][w], AR + F1(BR, CR, DR) + self->buf.w[RR[round][w]] + KR[round]) + ER; + AR = ER; ER = DR; DR = ROL(10, CR); CR = BR; BR = T; + } - high = ( ctx->total[0] >> 29 ) - | ( ctx->total[1] << 3 ); - low = ( ctx->total[0] << 3 ); + /* Final mixing stage */ + T = self->h[1] + CL + DR; + self->h[1] = self->h[2] + DL + ER; + self->h[2] = self->h[3] + EL + AR; + self->h[3] = self->h[4] + AL + BR; + self->h[4] = self->h[0] + BL + CR; + self->h[0] = T; + + /* Clear the buffer and wipe the temporary variables */ + T = AL = BL = CL = DL = EL = AR = BR = CR = DR = ER = 0; + memset(&self->buf, 0, sizeof(self->buf)); + self->bufpos = 0; +} - PUT_UINT32_LE( low, msglen, 0 ); - PUT_UINT32_LE( high, msglen, 4 ); +void ripemd160_process(ripemd160_state *self, const unsigned char *p, unsigned long length) +{ + unsigned long bytes_needed; + + /* Some assertions */ + assert(p != NULL && length >= 0); + + /* We never leave a full buffer */ + assert(self->bufpos < 64); + + while (length > 0) { + /* Figure out how many bytes we need to fill the internal buffer. */ + bytes_needed = 64 - self->bufpos; + + if ((unsigned long) length >= bytes_needed) { + /* We have enough bytes, so copy them into the internal buffer and run + * the compression function. */ + memcpy(&self->buf.b[self->bufpos], p, bytes_needed); + self->bufpos += bytes_needed; + self->length += bytes_needed << 3; /* length is in bits */ + p += bytes_needed; + ripemd160_compress(self); + length -= bytes_needed; + continue; + } + + /* We do not have enough bytes to fill the internal buffer. + * Copy what's there and return. */ + memcpy(&self->buf.b[self->bufpos], p, length); + self->bufpos += length; + self->length += length << 3; /* length is in bits */ + return; + } +} - last = ctx->total[0] & 0x3F; - padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); +void ripemd160_done(ripemd160_state *self, unsigned char *out) +{ + /* Append the padding */ + self->buf.b[self->bufpos++] = 0x80; - ripemd160_Update( ctx, ripemd160_padding, padn ); - ripemd160_Update( ctx, msglen, 8 ); + if (self->bufpos > 56) { + self->bufpos = 64; + ripemd160_compress(self); + } - PUT_UINT32_LE( ctx->state[0], output, 0 ); - PUT_UINT32_LE( ctx->state[1], output, 4 ); - PUT_UINT32_LE( ctx->state[2], output, 8 ); - PUT_UINT32_LE( ctx->state[3], output, 12 ); - PUT_UINT32_LE( ctx->state[4], output, 16 ); + /* Append the length */ + self->buf.w[14] = (uint32_t) (self->length & 0xFFFFffffu); + self->buf.w[15] = (uint32_t) ((self->length >> 32) & 0xFFFFffffu); +#ifdef PCT_BIG_ENDIAN + byteswap32(&self->buf.w[14]); + byteswap32(&self->buf.w[15]); +#endif + self->bufpos = 64; + ripemd160_compress(self); - memzero(ctx, sizeof(RIPEMD160_CTX)); + /* Copy the final state into the output buffer */ +#ifdef PCT_BIG_ENDIAN + byteswap_digest(self->h); +#endif + memcpy(out, &self->h, RIPEMD160_DIGEST_SIZE); } -/* - * output = RIPEMD-160( input buffer ) - */ -void ripemd160(const uint8_t *msg, uint32_t msg_len, uint8_t hash[RIPEMD160_DIGEST_LENGTH]) +void ripemd160(const void* in, unsigned long length, void* out) { - RIPEMD160_CTX ctx = {0}; - ripemd160_Init( &ctx ); - ripemd160_Update( &ctx, msg, msg_len ); - ripemd160_Final( &ctx, hash ); + ripemd160_state md; + ripemd160_init(&md); + ripemd160_process(&md, in, length); + ripemd160_done(&md, out); } diff --git a/crypto/ripemd160.h b/crypto/ripemd160.h index 8256b08a1a..1fd4ffc993 100644 --- a/crypto/ripemd160.h +++ b/crypto/ripemd160.h @@ -1,22 +1,23 @@ -#ifndef __RIPEMD160_H__ -#define __RIPEMD160_H__ +#ifndef _RIPEMD160_H_ +#define _RIPEMD160_H_ #include <stdint.h> -#define RIPEMD160_BLOCK_LENGTH 64 -#define RIPEMD160_DIGEST_LENGTH 20 +typedef struct { + uint64_t length; + union { + uint32_t w[16]; + uint8_t b[64]; + } buf; + uint32_t h[5]; + uint8_t bufpos; +} ripemd160_state; -typedef struct _RIPEMD160_CTX { - uint32_t total[2]; /*!< number of bytes processed */ - uint32_t state[5]; /*!< intermediate digest state */ - uint8_t buffer[RIPEMD160_BLOCK_LENGTH]; /*!< data block being processed */ -} RIPEMD160_CTX; - -void ripemd160_Init(RIPEMD160_CTX *ctx); -void ripemd160_Update(RIPEMD160_CTX *ctx, const uint8_t *input, uint32_t ilen); -void ripemd160_Final(RIPEMD160_CTX *ctx, - uint8_t output[RIPEMD160_DIGEST_LENGTH]); -void ripemd160(const uint8_t *msg, uint32_t msg_len, - uint8_t hash[RIPEMD160_DIGEST_LENGTH]); +#ifndef _RIPEMD160_C_ +void ripemd160_init(ripemd160_state * md); +void ripemd160_process(ripemd160_state * md, const void *in, unsigned long inlen); +void ripemd160_done(ripemd160_state * md, void *out); +void ripemd160(const void *in, unsigned long inlen, void *out); +#endif #endif From fb471a96f226737ec1c22bbf88078f5b36a572bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Sun, 1 Sep 2024 19:04:36 +0200 Subject: [PATCH 625/626] refactor(crypto): adapt ripemd160 implementation --- .../modtrezorcrypto-ripemd160.h | 16 +++--- crypto/ripemd160.c | 49 ++++++++++++------- crypto/ripemd160.h | 19 +++---- 3 files changed, 48 insertions(+), 36 deletions(-) diff --git a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ripemd160.h b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ripemd160.h index 7a9f258222..6a05382deb 100644 --- a/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ripemd160.h +++ b/core/embed/extmod/modtrezorcrypto/modtrezorcrypto-ripemd160.h @@ -32,7 +32,7 @@ /// digest_size: int typedef struct _mp_obj_Ripemd160_t { mp_obj_base_t base; - RIPEMD160_CTX ctx; + ripemd160_state ctx; } mp_obj_Ripemd160_t; STATIC mp_obj_t mod_trezorcrypto_Ripemd160_update(mp_obj_t self, mp_obj_t data); @@ -47,7 +47,7 @@ STATIC mp_obj_t mod_trezorcrypto_Ripemd160_make_new(const mp_obj_type_t *type, mp_arg_check_num(n_args, n_kw, 0, 1, false); mp_obj_Ripemd160_t *o = m_new_obj_with_finaliser(mp_obj_Ripemd160_t); o->base.type = type; - ripemd160_Init(&(o->ctx)); + ripemd160_init(&(o->ctx)); // constructor called with bytes/str as first parameter if (n_args == 1) { mod_trezorcrypto_Ripemd160_update(MP_OBJ_FROM_PTR(o), args[0]); @@ -65,7 +65,7 @@ STATIC mp_obj_t mod_trezorcrypto_Ripemd160_update(mp_obj_t self, mp_buffer_info_t msg = {0}; mp_get_buffer_raise(data, &msg, MP_BUFFER_READ); if (msg.len > 0) { - ripemd160_Update(&(o->ctx), msg.buf, msg.len); + ripemd160_process(&(o->ctx), msg.buf, msg.len); } return mp_const_none; } @@ -80,10 +80,10 @@ STATIC mp_obj_t mod_trezorcrypto_Ripemd160_digest(mp_obj_t self) { mp_obj_Ripemd160_t *o = MP_OBJ_TO_PTR(self); vstr_t hash = {0}; vstr_init_len(&hash, RIPEMD160_DIGEST_LENGTH); - RIPEMD160_CTX ctx = {0}; - memcpy(&ctx, &(o->ctx), sizeof(RIPEMD160_CTX)); - ripemd160_Final(&ctx, (uint8_t *)hash.buf); - memzero(&ctx, sizeof(RIPEMD160_CTX)); + ripemd160_state ctx = {0}; + memcpy(&ctx, &(o->ctx), sizeof(ripemd160_state)); + ripemd160_done(&ctx, (uint8_t *)hash.buf); + memzero(&ctx, sizeof(ripemd160_state)); return mp_obj_new_str_from_vstr(&mp_type_bytes, &hash); } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Ripemd160_digest_obj, @@ -91,7 +91,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Ripemd160_digest_obj, STATIC mp_obj_t mod_trezorcrypto_Ripemd160___del__(mp_obj_t self) { mp_obj_Ripemd160_t *o = MP_OBJ_TO_PTR(self); - memzero(&(o->ctx), sizeof(RIPEMD160_CTX)); + memzero(&(o->ctx), sizeof(ripemd160_state)); return mp_const_none; } STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Ripemd160___del___obj, diff --git a/crypto/ripemd160.c b/crypto/ripemd160.c index 6edc87c42c..f6581bfa03 100644 --- a/crypto/ripemd160.c +++ b/crypto/ripemd160.c @@ -1,9 +1,8 @@ -#define _RIPEMD160_C_ 1 - #include "ripemd160.h" #include <assert.h> +#include "memzero.h" -#define NDEBUG +// Downlaoded from https://github.com/sipa/Coin25519/blob/master/src/crypto/ripemd160.c // adapted by Pieter Wuille in 2012; all changes are in the public domain @@ -56,8 +55,7 @@ #include <string.h> -#define RIPEMD160_DIGEST_SIZE 20 -#define BLOCK_SIZE 64 +#define RIPEMD160_DIGEST_SIZE RIPEMD160_DIGEST_LENGTH /* cyclic left-shift the 32-bit word n left by s bits */ #define ROL(s, n) (((n) << (s)) | ((n) >> (32-(s)))) @@ -155,9 +153,10 @@ void ripemd160_init(ripemd160_state *self) self->bufpos = 0; } +#ifdef PCT_BIG_ENDIAN static inline void byteswap32(uint32_t *v) { - union { uint32_t w; uint8_t b[4]; } x, y; + union { uint32_t w; uint8_t b[4]; } x = {0}, y = {0}; x.w = *v; y.b[0] = x.b[3]; @@ -172,7 +171,7 @@ static inline void byteswap32(uint32_t *v) static inline void byteswap_digest(uint32_t *p) { - unsigned int i; + unsigned int i = 0; for (i = 0; i < 4; i++) { byteswap32(p++); @@ -181,14 +180,15 @@ static inline void byteswap_digest(uint32_t *p) byteswap32(p++); } } +#endif /* The RIPEMD160 compression function. Operates on self->buf */ static void ripemd160_compress(ripemd160_state *self) { - uint8_t w, round; - uint32_t T; - uint32_t AL, BL, CL, DL, EL; /* left line */ - uint32_t AR, BR, CR, DR, ER; /* right line */ + uint8_t w = 0, round = 0; + uint32_t T = 0; + uint32_t AL = 0, BL = 0, CL = 0, DL = 0, EL = 0; /* left line */ + uint32_t AR = 0, BR = 0, CR = 0, DR = 0, ER = 0; /* right line */ /* Sanity check */ assert(self->bufpos == 64); @@ -269,17 +269,27 @@ static void ripemd160_compress(ripemd160_state *self) self->h[0] = T; /* Clear the buffer and wipe the temporary variables */ - T = AL = BL = CL = DL = EL = AR = BR = CR = DR = ER = 0; - memset(&self->buf, 0, sizeof(self->buf)); + memzero(&self->buf, sizeof(self->buf)); + memzero(&T, sizeof(T)); + memzero(&AL, sizeof(AL)); + memzero(&BL, sizeof(BL)); + memzero(&CL, sizeof(CL)); + memzero(&DL, sizeof(DL)); + memzero(&EL, sizeof(EL)); + memzero(&AR, sizeof(AR)); + memzero(&BR, sizeof(BR)); + memzero(&CR, sizeof(CR)); + memzero(&DR, sizeof(DR)); + memzero(&ER, sizeof(ER)); self->bufpos = 0; } -void ripemd160_process(ripemd160_state *self, const unsigned char *p, unsigned long length) +void ripemd160_process(ripemd160_state * self, const uint8_t *p, size_t length) { - unsigned long bytes_needed; + unsigned long bytes_needed = 0; /* Some assertions */ - assert(p != NULL && length >= 0); + assert(p != NULL); /* We never leave a full buffer */ assert(self->bufpos < 64); @@ -309,7 +319,7 @@ void ripemd160_process(ripemd160_state *self, const unsigned char *p, unsigned l } } -void ripemd160_done(ripemd160_state *self, unsigned char *out) +void ripemd160_done(ripemd160_state * self, uint8_t out[RIPEMD160_DIGEST_LENGTH]) { /* Append the padding */ self->buf.b[self->bufpos++] = 0x80; @@ -334,11 +344,12 @@ void ripemd160_done(ripemd160_state *self, unsigned char *out) byteswap_digest(self->h); #endif memcpy(out, &self->h, RIPEMD160_DIGEST_SIZE); + memzero(self, sizeof(ripemd160_state)); } -void ripemd160(const void* in, unsigned long length, void* out) +void ripemd160(const uint8_t *in, size_t length, uint8_t out[RIPEMD160_DIGEST_LENGTH]) { - ripemd160_state md; + ripemd160_state md = {0}; ripemd160_init(&md); ripemd160_process(&md, in, length); ripemd160_done(&md, out); diff --git a/crypto/ripemd160.h b/crypto/ripemd160.h index 1fd4ffc993..c3dbb48ef5 100644 --- a/crypto/ripemd160.h +++ b/crypto/ripemd160.h @@ -1,7 +1,11 @@ -#ifndef _RIPEMD160_H_ -#define _RIPEMD160_H_ +#ifndef __RIPEMD160_H__ +#define __RIPEMD160_H__ #include <stdint.h> +#include <stddef.h> + +#define RIPEMD160_BLOCK_LENGTH 64 +#define RIPEMD160_DIGEST_LENGTH 20 typedef struct { uint64_t length; @@ -13,11 +17,8 @@ typedef struct { uint8_t bufpos; } ripemd160_state; -#ifndef _RIPEMD160_C_ -void ripemd160_init(ripemd160_state * md); -void ripemd160_process(ripemd160_state * md, const void *in, unsigned long inlen); -void ripemd160_done(ripemd160_state * md, void *out); -void ripemd160(const void *in, unsigned long inlen, void *out); -#endif - +void ripemd160_init(ripemd160_state * self); +void ripemd160_process(ripemd160_state * self, const uint8_t *in, size_t length); +void ripemd160_done(ripemd160_state * self, uint8_t out[RIPEMD160_DIGEST_LENGTH]); +void ripemd160(const uint8_t *in, size_t length, uint8_t out[RIPEMD160_DIGEST_LENGTH]); #endif From 7a992a593d4024ff48eadd79b4e4610f403307e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Vejpustek?= <ondrej.vejpustek@satoshilabs.com> Date: Sun, 1 Sep 2024 21:01:15 +0200 Subject: [PATCH 626/626] fix(crypto): fix sign-compare warning --- crypto/aes/aescrypt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crypto/aes/aescrypt.c b/crypto/aes/aescrypt.c index 4d0fcdefe6..cc0807bb46 100644 --- a/crypto/aes/aescrypt.c +++ b/crypto/aes/aescrypt.c @@ -149,7 +149,7 @@ AES_RETURN aes_xi(encrypt)(const unsigned char *in, unsigned char *out, const ae kp += N_COLS; round(fwd_rnd, b1, b0, kp); #else - { uint32_t rnd = 0; + { int rnd = 0; for(rnd = 0; rnd < (cx->inf.b[0] >> 4) - 1; ++rnd) { kp += N_COLS; @@ -283,7 +283,7 @@ AES_RETURN aes_xi(decrypt)(const unsigned char *in, unsigned char *out, const ae kp = rnd_key(1); round(inv_rnd, b1, b0, kp); #else - { uint32_t rnd = 0; + { int rnd = 0; for(rnd = 0; rnd < (cx->inf.b[0] >> 4) - 1; ++rnd) { kp = rnd_key(1);